diff --git a/projectors/hazel.js b/projectors/hazel.js index 02254b29..7c6ea704 100644 --- a/projectors/hazel.js +++ b/projectors/hazel.js @@ -435720,152 +435720,150 @@ b=/*<>*/e(g[8],a);/*<>*/function +k="Self",L="src/haz3lcore/zipper/projectors/InfoCore.re.M.action",M="src/haz3lcore/zipper/projectors/InfoCore.re.M.model",K="\xe2\x87\x90",J="%a",I="self",j="ToggleDisplay",H="toggleDisplay",i="Expected",G="expected",F=143,o=-976970511,h=848054398,g=a.jsoo_runtime,E=g.caml_equal;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function -c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):g.caml_call_gen(a,[b,c])}/*<>*/function -u(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):g.caml_call_gen(a,[b,c,d])}var -b=g.caml_get_global_data(),m=M,n=M,p=L,q=L,F=b.Virtual_dom__Node,D=b.Haz3lcore__Piece,l=b.Stdlib__Format,e=b.Ppx_yojson_conv_lib__Yojson_conv_error,d=b.Sexplib0__Sexp_conv_error,y=b.Haz3lcore__Typ,z=b.Stdlib,x=b.Haz3lcore__Self,aa=[0,2],Y=j,Z=[0,[15,0],K],$=[0,h,[0,[0,o,j],0]],_=[0,j],R=k,S=i,T=[0,[15,0],K],W=[0,h,[0,[0,o,k],0]],X=[0,h,[0,[0,o,i],0]],U=[0,k],V=[0,i],Q="\xe2\x8b\xb1 \xe2\x87\x90 ",P="\xe2\x8b\xb1 \xe2\x87\x92 ",O=[0,2],ab=b.Virtual_dom__Vdom,N=b.Haz3lcore__Mode;function -r(a){/*<>*/a:if(a){var +e(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):g.caml_call_gen(a,[b,c])}/*<>*/function +t(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):g.caml_call_gen(a,[b,c,d])}var +b=g.caml_get_global_data(),m=M,n=M,q=L,r=L,s=b.Virtual_dom__Node,v=b.Virtual_dom__Vdom,D=b.Stdlib,B=b.Haz3lcore__Piece,l=b.Stdlib__Format,d=b.Ppx_yojson_conv_lib__Yojson_conv_error,c=b.Sexplib0__Sexp_conv_error,x=b.Haz3lcore__Self,ag="type",ah=" ",ai="\xe2\x8b\xb1 ",aj="info",ab=[0,2],ac=K,ad=K,ae="\xe2\x87\x92",$=[0,2],W=j,X=[0,[15,0],J],Z=[0,h,[0,[0,o,j],0]],Y=[0,j],P=k,Q=i,R=[0,[15,0],J],U=[0,h,[0,[0,o,k],0]],V=[0,h,[0,[0,o,i],0]],S=[0,k],T=[0,i],O=[0,2],af=b.Haz3lcore__Typ,N=b.Haz3lcore__Mode;function +p(a){/*<>*/a:if(a){var b=a[1];switch(b[0]){case 0:var c=b[1][4];break;case 1:var c=b[1][5];break;default:break a}/*<>*/return[0,c]}/*<>*/return 0/*<>*/}function -v(a){/*<>*/ /*<>*/var -b=r(a);return b?[0,/*<>*/f(N[8],b[1])]:0/*<>*/}function -w(a){/*<>*/if(a){var +w(a){/*<>*/ /*<>*/var +b=p(a);return b?[0,/*<>*/f(N[8],b[1])]:0/*<>*/}function +u(a){/*<>*/if(a){var b=a[1];switch(b[0]){case 0:var -d=b[1];/*<>*/return/*<>*/c(x[33],d[3],d[5]);case +c=b[1];/*<>*/return/*<>*/e(x[33],c[3],c[5]);case 1:var -e=b[1];/*<>*/return/*<>*/c(x[34],e[3],e[6])}}/*<>*/return 0/*<>*/}function -s(a){/*<>*/return a?a[1]:O/*<>*/}function -t(a){/*<>*/var/*<>*/b=s(w(a)),/*<>*/d=/*<>*/f(y[53],b);/*<>*/return/*<>*/c(z[28],P,d)/*<>*/}function -A(a){/*<>*/var/*<>*/b=s(v(a)),/*<>*/d=/*<>*/f(y[53],b);/*<>*/return/*<>*/c(z[28],Q,d)/*<>*/}/*<>*/function -B(a,b){/*<>*/return b?/*<>*/c(l[13],a,R):/*<>*/c(l[13],a,S)/*<>*/}/*<>*/function -C(a,b){/*<>*/return/*<>*/c(l[13],a,Y)/*<>*/}function -E(a,b){/*<>*/return/*<>*/g.caml_equal(r(b),aa)?t(b):a?t(b):A(b)/*<>*/}g.caml_register_global(44,[0,r,v,w,s,t,A,[0,B,function(a){/*<>*/return/*<>*/u(l[G],T,B,a)/*<>*/},function(a){/*<>*/return a?U:V/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var -b=a[1];b:if(b!==i){if(b!==k){if(b===H)break b;if(b!==J)break a}/*<>*/return 1}/*<>*/return 0}var -f=a[1];if(!f)/*<>*/return/*<>*/c(d[7],m,a);var -g=f[1];if(0!==g[0])/*<>*/return/*<>*/c(d[6],m,a);var -e=g[1];b:if(e!==i){if(e!==k){if(e===H)break b;if(e!==J)break a}/*<>*/return/*<>*/c(d[3],m,a)}/*<>*/return/*<>*/c(d[3],m,a)}/*<>*/return/*<>*/c(d[8],m,a)/*<>*/},function(a){/*<>*/return a?W:X/*<>*/},function(a){/*<>*/if(typeof +d=b[1];/*<>*/return/*<>*/e(x[34],d[3],d[6])}}/*<>*/return 0/*<>*/}function +y(a){/*<>*/return a?a[1]:O/*<>*/}/*<>*/function +z(a,b){/*<>*/return b?/*<>*/e(l[13],a,P):/*<>*/e(l[13],a,Q)/*<>*/}/*<>*/function +A(a,b){/*<>*/return/*<>*/e(l[13],a,W)/*<>*/}function +_(a,b){/*<>*/return/*<>*/E(p(b),$)?u(b):a?u(b):w(b)/*<>*/}function +aa(a,b){/*<>*/return/*<>*/E(p(b),ab)?ac:a?ad:ae/*<>*/}function +C(a,b){/*<>*/ /*<>*/var +c=y(_(a,b));/*<>*/return/*<>*/f(af[53],c)/*<>*/}g.caml_register_global(50,[0,p,w,u,y,[0,z,function(a){/*<>*/return/*<>*/t(l[F],R,z,a)/*<>*/},function(a){/*<>*/return a?S:T/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var +b=a[1];b:if(b!==i){if(b!==k){if(b===G)break b;if(b!==I)break a}/*<>*/return 1}/*<>*/return 0}var +f=a[1];if(!f)/*<>*/return/*<>*/e(c[7],m,a);var +g=f[1];if(0!==g[0])/*<>*/return/*<>*/e(c[6],m,a);var +d=g[1];b:if(d!==i){if(d!==k){if(d===G)break b;if(d!==I)break a}/*<>*/return/*<>*/e(c[3],m,a)}/*<>*/return/*<>*/e(c[3],m,a)}/*<>*/return/*<>*/e(c[8],m,a)/*<>*/},function(a){/*<>*/return a?U:V/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&h===a[1]){var -b=a[2];if(!b)/*<>*/return/*<>*/c(e[7],n,a);var -d=b[1];if(typeof -d!=="number"){var -f=d[1];if(o===f){var -g=d[2];if(g===i)return b[2]?/*<>*/c(e[3],n,a):0;if(g===k)return b[2]?/*<>*/c(e[3],n,a):1}else if(h===f)/*<>*/return/*<>*/c(e[6],n,a)}}/*<>*/return/*<>*/c(e[8],n,a)/*<>*/},C,function(a){/*<>*/return/*<>*/u(l[G],Z,C,a)/*<>*/},function(a){/*<>*/return _/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var -b=a[1];if(b!==j&&b!==I)break a;/*<>*/return 0}var -e=a[1];if(!e)/*<>*/return/*<>*/c(d[7],p,a);var -f=e[1];if(0!==f[0])/*<>*/return/*<>*/c(d[6],p,a);var -g=f[1];if(g!==j&&g!==I)break a;/*<>*/return/*<>*/c(d[3],p,a)}/*<>*/return/*<>*/c(d[8],p,a)/*<>*/},function(a){/*<>*/return $/*<>*/},function(a){/*<>*/if(typeof +b=a[2];if(!b)/*<>*/return/*<>*/e(d[7],n,a);var +c=b[1];if(typeof +c!=="number"){var +f=c[1];if(o===f){var +g=c[2];if(g===i)return b[2]?/*<>*/e(d[3],n,a):0;if(g===k)return b[2]?/*<>*/e(d[3],n,a):1}else if(h===f)/*<>*/return/*<>*/e(d[6],n,a)}}/*<>*/return/*<>*/e(d[8],n,a)/*<>*/},A,function(a){/*<>*/return/*<>*/t(l[F],X,A,a)/*<>*/},function(a){/*<>*/return Y/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var +b=a[1];if(b!==j&&b!==H)break a;/*<>*/return 0}var +d=a[1];if(!d)/*<>*/return/*<>*/e(c[7],q,a);var +f=d[1];if(0!==f[0])/*<>*/return/*<>*/e(c[6],q,a);var +g=f[1];if(g!==j&&g!==H)break a;/*<>*/return/*<>*/e(c[3],q,a)}/*<>*/return/*<>*/e(c[8],q,a)/*<>*/},function(a){/*<>*/return Z/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&h===a[1]){var -b=a[2];if(!b)/*<>*/return/*<>*/c(e[7],q,a);var -d=b[1];if(typeof -d!=="number"){var -f=d[1];if(o===f){if(d[2]===j)return b[2]?/*<>*/c(e[3],q,a):0}else if(h===f)/*<>*/return/*<>*/c(e[6],q,a)}}/*<>*/return/*<>*/c(e[8],q,a)/*<>*/},0,function(a){/*<>*/var -b=/*<>*/f(D[31],a)[1];if(2!==b&&6>b)/*<>*/return/*<>*/f(D[41],a)?1:0;/*<>*/return 1/*<>*/},0,function(a,b,c,d){/*<>*/var/*<>*/e=E(a,b[4]),/*<>*/g=[0,/*<>*/f(F[5],e),0],/*<>*/h=[0,[0,/*<>*/f(ab[1][67],function(a){/*<>*/return/*<>*/f(c,0)/*<>*/}),0]];/*<>*/return/*<>*/u(F[14],0,h,g)/*<>*/},function(a,b){/*<>*/return[0,/*<>*/g.caml_ml_string_length(E(a,b[4]))-2|0]/*<>*/},function(a,b){/*<>*/return a?0:1/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__InfoCore");return/*<>*/}(globalThis)); +b=a[2];if(!b)/*<>*/return/*<>*/e(d[7],r,a);var +c=b[1];if(typeof +c!=="number"){var +f=c[1];if(o===f){if(c[2]===j)return b[2]?/*<>*/e(d[3],r,a):0}else if(h===f)/*<>*/return/*<>*/e(d[6],r,a)}}/*<>*/return/*<>*/e(d[8],r,a)/*<>*/},0,function(a){/*<>*/var +b=/*<>*/f(B[31],a)[1];if(2!==b&&6>b)/*<>*/return/*<>*/f(B[41],a)?1:0;/*<>*/return 1/*<>*/},0,function(a,b,c,d){/*<>*/var/*<>*/g=C(a,b[4]),/*<>*/h=[0,/*<>*/f(s[5],g),0],/*<>*/i=[0,[0,/*<>*/f(v[1][15],ag),0]],j=[0,/*<>*/t(s[14],0,i,h),0],/*<>*/k=aa(a,b[4]),/*<>*/l=/*<>*/e(D[28],k,ah),/*<>*/m=/*<>*/e(D[28],ai,l),/*<>*/n=[0,/*<>*/f(s[5],m),j],o=[0,/*<>*/f(v[1][67],function(a){/*<>*/return/*<>*/f(c,0)/*<>*/}),0],/*<>*/p=[0,[0,/*<>*/f(v[1][15],aj),o]];/*<>*/return/*<>*/t(s[14],0,p,n)/*<>*/},function(a,b){/*<>*/return[0,/*<>*/g.caml_ml_string_length(C(a,b[4]))+5|0]/*<>*/},function(a,b){/*<>*/return a?0:1/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__InfoCore");return/*<>*/}(globalThis)); -//# 6068 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6069 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -E="Last",aw="%d",ay=-445061397,r="@ ",v="rows",Q="<2>",C="Middle",aE=125,aF="src/haz3lcore/JsUtil.re.TextArea.rel",M=" =",aD="middle",af=76111832,ag="%a",av="{ ",u="col",aK="last",w="row",ad=448401680,aJ=834174833,au="src/haz3lcore/JsUtil.re.TextArea.rel_pos",at="src/haz3lcore/JsUtil.re.TextArea.pos",F="src/haz3lcore/JsUtil.re",as=259676278,p="",R=963043957,aI="selectAll",ax="@[<2>{ ",aC=";@ ",aH="first",P="@]",O="@[%s =@ ",aA=-471638958,aB=718768073,aG="@ }@]",ac=143,N=-976970511,H=848054398,ae=556247482,j=139,D="First",az=5793429,t="cols",k=a.jsoo_runtime,e=k.caml_get_public_method,o=k.caml_jsstring_of_string,s=k.caml_maybe_attach_backtrace,ab=k.caml_ml_string_length,G=k.caml_string_of_jsstring,b1=k.caml_wrap_exception;/*<>*/function -d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function -c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):k.caml_call_gen(a,[b,c])}/*<>*/function -l(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):k.caml_call_gen(a,[b,c,d])}/*<>*/function -b0(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):k.caml_call_gen(a,[b,c,d,e,f])}/*<>*/function -ar(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):k.caml_call_gen(a,[b,c,d,e,f,g])}var -b2=undefined,g=k.caml_get_global_data(),U="clipboard-shim",I=at,z=aF,B=aF,K=au,aa=g.Stdlib__List,n=g.Stdlib,h=g.Js_of_ocaml__Js,i=g.Js_of_ocaml__Dom_html,f=g.Stdlib__Format,b=g.Ppx_yojson_conv_lib,ao=g.Ppx_yojson_conv_lib__Yojson_conv,m=g.Ppx_yojson_conv_lib__Yojson_conv_error,an=g.Sexplib0__Sexp_conv_record,A=g.Sexplib0__Sexp_conv_error,q=g.Util,T=g.Stdlib__Option,y=g.Assert_failure,S=g.Js_of_ocaml__File,al=g.Virtual_dom__Vdom,bZ=[0,p,0],bX="TextArea.get",bE=[0,[18,[1,[0,[11,Q,0],Q]],[11,av,0]],ax],bF=v,bG=[0,[18,[1,[0,0,p]],[2,0,[11,M,[17,[0,r,1,0],0]]]],O],bH=[0,[17,0,0],P],bI=[0,[12,59,[17,[0,r,1,0],0]],aC],bJ=t,bK=[0,[18,[1,[0,0,p]],[2,0,[11,M,[17,[0,r,1,0],0]]]],O],bL=[0,[17,0,0],P],bM=[0,[17,[0,r,1,0],[12,aE,[17,0,0]]],aG],bN=[0,[15,0],ag],bV=t,bW=v,bT=t,bU=v,bR=[0,t],bS=[0,v],bP=t,bQ=v,bu=D,bv=C,bw=E,bx=[0,[15,0],ag],bB=[0,H,[0,[0,N,D],0]],bC=[0,H,[0,[0,N,C],0]],bD=[0,H,[0,[0,N,E],0]],by=[0,D],bz=[0,C],bA=[0,E],a$=[0,[18,[1,[0,[11,Q,0],Q]],[11,av,0]],ax],ba=w,bb=[0,[18,[1,[0,0,p]],[2,0,[11,M,[17,[0,r,1,0],0]]]],O],bc=[0,[4,0,0,0,0],aw],bd=[0,[17,0,0],P],be=[0,[12,59,[17,[0,r,1,0],0]],aC],bf=u,bg=[0,[18,[1,[0,0,p]],[2,0,[11,M,[17,[0,r,1,0],0]]]],O],bh=[0,[4,0,0,0,0],aw],bi=[0,[17,0,0],P],bj=[0,[17,[0,r,1,0],[12,aE,[17,0,0]]],aG],bk=[0,[15,0],ag],bs=u,bt=w,bq=u,br=w,bo=[0,u],bp=[0,w],bm=u,bn=w,a7=p,a6="#",a4="caret",a5="main",a3="WARNING: caret not found",aZ=p,aX=" site: ",aY="WARNING: Failed to focus in update: ",aV=[0,F,99,56],aU=[0,F,91,31],aT=[0,F,88,58],aS=[0,F,81,56],aP="application/json",aQ=".json",aN="JsUtil.get_key",aM=[0,F,22,6],aL=[0,F,11,6],bl=at,bO=au,bY=g.Util__StringUtil,a9=g.Virtual_dom__Effect,a8=g.Js_of_ocaml__Url,aW=g.Js_of_ocaml__Firebug,aR=g.Js_of_ocaml__Dom,aO=g.Yojson__Safe,a1=g.Virtual_dom__Node;function +E="Last",av="%d",ax=-445061397,r="@ ",v="rows",Q="<2>",C="Middle",aD=125,aE="src/haz3lcore/JsUtil.re.TextArea.rel",M=" =",aC="middle",af=76111832,ag="%a",au="{ ",u="col",aJ="last",w="row",ad=448401680,aI=834174833,at="src/haz3lcore/JsUtil.re.TextArea.rel_pos",as="src/haz3lcore/JsUtil.re.TextArea.pos",F="src/haz3lcore/JsUtil.re",ar=259676278,o="",R=963043957,aH="selectAll",aw="@[<2>{ ",aB=";@ ",aG="first",P="@]",O="@[%s =@ ",az=-471638958,aA=718768073,aF="@ }@]",ac=143,N=-976970511,H=848054398,ae=556247482,i=139,D="First",ay=5793429,t="cols",m=a.jsoo_runtime,e=m.caml_get_public_method,p=m.caml_jsstring_of_string,s=m.caml_maybe_attach_backtrace,ab=m.caml_ml_string_length,G=m.caml_string_of_jsstring,bY=m.caml_wrap_exception;/*<>*/function +d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):m.caml_call_gen(a,[b])}/*<>*/function +c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):m.caml_call_gen(a,[b,c])}/*<>*/function +k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):m.caml_call_gen(a,[b,c,d])}/*<>*/function +bX(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):m.caml_call_gen(a,[b,c,d,e,f])}/*<>*/function +aq(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):m.caml_call_gen(a,[b,c,d,e,f,g])}var +bZ=undefined,g=m.caml_get_global_data(),U="clipboard-shim",I=as,z=aE,B=aE,K=at,aa=g.Stdlib__List,n=g.Stdlib,h=g.Js_of_ocaml__Js,j=g.Js_of_ocaml__Dom_html,f=g.Stdlib__Format,b=g.Ppx_yojson_conv_lib,an=g.Ppx_yojson_conv_lib__Yojson_conv,l=g.Ppx_yojson_conv_lib__Yojson_conv_error,am=g.Sexplib0__Sexp_conv_record,A=g.Sexplib0__Sexp_conv_error,q=g.Util,T=g.Stdlib__Option,y=g.Assert_failure,S=g.Js_of_ocaml__File,bV="TextArea.get",bC=[0,[18,[1,[0,[11,Q,0],Q]],[11,au,0]],aw],bD=v,bE=[0,[18,[1,[0,0,o]],[2,0,[11,M,[17,[0,r,1,0],0]]]],O],bF=[0,[17,0,0],P],bG=[0,[12,59,[17,[0,r,1,0],0]],aB],bH=t,bI=[0,[18,[1,[0,0,o]],[2,0,[11,M,[17,[0,r,1,0],0]]]],O],bJ=[0,[17,0,0],P],bK=[0,[17,[0,r,1,0],[12,aD,[17,0,0]]],aF],bL=[0,[15,0],ag],bT=t,bU=v,bR=t,bS=v,bP=[0,t],bQ=[0,v],bN=t,bO=v,bs=D,bt=C,bu=E,bv=[0,[15,0],ag],bz=[0,H,[0,[0,N,D],0]],bA=[0,H,[0,[0,N,C],0]],bB=[0,H,[0,[0,N,E],0]],bw=[0,D],bx=[0,C],by=[0,E],a9=[0,[18,[1,[0,[11,Q,0],Q]],[11,au,0]],aw],a_=w,a$=[0,[18,[1,[0,0,o]],[2,0,[11,M,[17,[0,r,1,0],0]]]],O],ba=[0,[4,0,0,0,0],av],bb=[0,[17,0,0],P],bc=[0,[12,59,[17,[0,r,1,0],0]],aB],bd=u,be=[0,[18,[1,[0,0,o]],[2,0,[11,M,[17,[0,r,1,0],0]]]],O],bf=[0,[4,0,0,0,0],av],bg=[0,[17,0,0],P],bh=[0,[17,[0,r,1,0],[12,aD,[17,0,0]]],aF],bi=[0,[15,0],ag],bq=u,br=w,bo=u,bp=w,bm=[0,u],bn=[0,w],bk=u,bl=w,a7=o,a6="#",a4="caret",a5="main",a3="WARNING: caret not found",aY=o,aW=" site: ",aX="WARNING: Failed to focus in update: ",aU=[0,F,99,56],aT=[0,F,91,31],aS=[0,F,88,58],aR=[0,F,81,56],aO="application/json",aP=".json",aM="JsUtil.get_key",aL=[0,F,22,6],aK=[0,F,11,6],bj=as,bM=at,bW=g.Util__StringUtil,a8=g.Js_of_ocaml__Url,aV=g.Js_of_ocaml__Firebug,aQ=g.Js_of_ocaml__Dom,aN=g.Yojson__Safe,aZ=g.Virtual_dom__Vdom,a1=g.Virtual_dom__Node;function x(b){/*<>*/ /*<>*/var -a=function(a,b,c){/*<>*/return a.getElementById(b)}(i[2],/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,-332188296,6),a)/*<>*/});/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/s([0,y,aL],1)/*<>*/})/*<>*/}function +a=function(a,b,c){/*<>*/return a.getElementById(b)}(j[2],/*<>*/p(b),function(a){/*<>*/return/*<>*/d(e(a,-332188296,6),a)/*<>*/});/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/s([0,y,aK],1)/*<>*/})/*<>*/}function ah(a){/*<>*/return function(a,b){/*<>*/return new a}(h[26],0)/*<>*/}function ai(a){/*<>*/return function(a,b){/*<>*/return a.detail}(a,function(a){/*<>*/return/*<>*/d(e(a,-266378607,14),a)/*<>*/})/*<>*/}function -aj(a,b,c){/*<>*/var/*<>*/g=/*<>*/l(S[1],[0,b],0,c),/*<>*/j=function(a,b,c){/*<>*/return a.createObjectURL(b)}(function(a,b){/*<>*/return a.URL}(i[8],function(a){/*<>*/return/*<>*/d(e(a,1057754192,16),a)/*<>*/}),g,function(a){/*<>*/return/*<>*/d(e(a,-461864108,15),a)/*<>*/}),/*<>*/f=/*<>*/d(i[67],i[2]);/*<>*/(function(a,b,c){/*<>*/a.href=b;return}(f,j,function(a){/*<>*/return/*<>*/d(e(a,-988476949,17),a)/*<>*/}));/*<>*/(function(a,b,c,d){/*<>*/a.setAttribute(b,c);return}(f,"download",/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,524300314,18),a)/*<>*/}));/*<>*/(function(a,b,c){/*<>*/a.onclick=b;return}(f,/*<>*/d(i[10],function(a){/*<>*/return h[7]/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-881939767,19),a)/*<>*/}));return function(a,b){/*<>*/return a.click()}(f,function(a){/*<>*/return/*<>*/d(e(a,-933331896,20),a)/*<>*/})/*<>*/}function -ak(a){/*<>*/return function(a,b){/*<>*/return a.focus()}(x(U),function(a){/*<>*/return/*<>*/d(e(a,af,33),a)/*<>*/})/*<>*/}/*<>*/var/*<>*/a0=[0,[0,/*<>*/d(al[1][23],U),0]],/*<>*/a2=/*<>*/l(a1[29],0,a0,0);/*<>*/function -am(a,b){/*<>*/ /*<>*/c(f[j],a,a$);/*<>*/ /*<>*/l(f[j],a,bb,ba);var -e=b[1];/*<>*/ /*<>*/d(/*<>*/c(f[j],a,bc),e);/*<>*/ /*<>*/c(f[j],a,bd);/*<>*/ /*<>*/c(f[j],a,be);/*<>*/ /*<>*/l(f[j],a,bg,bf);var -g=b[2];/*<>*/ /*<>*/d(/*<>*/c(f[j],a,bh),g);/*<>*/ /*<>*/c(f[j],a,bi);/*<>*/return/*<>*/c(f[j],a,bj)/*<>*/}/*<>*/function -J(a,b){/*<>*/switch(b){case -0:/*<>*/return/*<>*/c(f[13],a,bu);case -1:/*<>*/return/*<>*/c(f[13],a,bv);default:/*<>*/return/*<>*/c(f[13],a,bw)}/*<>*/}/*<>*/function -V(a){/*<>*/a:{if(0===a[0]){var -b=a[1];b:if(b!==D){c:if(b!==E){if(b!==C){if(b===aH)break b;if(b===aK)break c;if(b!==aD)break a}/*<>*/return 1}/*<>*/return 2}/*<>*/return 0}var -e=a[1];if(!e)/*<>*/return/*<>*/c(A[7],z,a);var -f=e[1];if(0!==f[0])/*<>*/return/*<>*/c(A[6],z,a);var -d=f[1];b:if(d!==D){c:if(d!==E){if(d!==C){if(d===aH)break b;if(d===aK)break c;if(d!==aD)break a}/*<>*/return/*<>*/c(A[3],z,a)}/*<>*/return/*<>*/c(A[3],z,a)}/*<>*/return/*<>*/c(A[3],z,a)}/*<>*/return/*<>*/c(A[8],z,a)/*<>*/}function -W(a){/*<>*/switch(a){case -0:/*<>*/return by;case -1:/*<>*/return bz;default:/*<>*/return bA}/*<>*/}/*<>*/function -X(a){/*<>*/if(typeof +aj(a,b,c){/*<>*/var/*<>*/g=/*<>*/k(S[1],[0,b],0,c),/*<>*/i=function(a,b,c){/*<>*/return a.createObjectURL(b)}(function(a,b){/*<>*/return a.URL}(j[8],function(a){/*<>*/return/*<>*/d(e(a,1057754192,16),a)/*<>*/}),g,function(a){/*<>*/return/*<>*/d(e(a,-461864108,15),a)/*<>*/}),/*<>*/f=/*<>*/d(j[67],j[2]);/*<>*/(function(a,b,c){/*<>*/a.href=b;return}(f,i,function(a){/*<>*/return/*<>*/d(e(a,-988476949,17),a)/*<>*/}));/*<>*/(function(a,b,c,d){/*<>*/a.setAttribute(b,c);return}(f,"download",/*<>*/p(a),function(a){/*<>*/return/*<>*/d(e(a,524300314,18),a)/*<>*/}));/*<>*/(function(a,b,c){/*<>*/a.onclick=b;return}(f,/*<>*/d(j[10],function(a){/*<>*/return h[7]/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-881939767,19),a)/*<>*/}));return function(a,b){/*<>*/return a.click()}(f,function(a){/*<>*/return/*<>*/d(e(a,-933331896,20),a)/*<>*/})/*<>*/}function +ak(a){/*<>*/return function(a,b){/*<>*/return a.focus()}(x(U),function(a){/*<>*/return/*<>*/d(e(a,af,33),a)/*<>*/})/*<>*/}/*<>*/ /*<>*/var +a0=[0,[0,/*<>*/d(aZ[1][23],U),0]];/*<>*/function +al(a,b){/*<>*/ /*<>*/c(f[i],a,a9);/*<>*/ /*<>*/k(f[i],a,a$,a_);var +e=b[1];/*<>*/ /*<>*/d(/*<>*/c(f[i],a,ba),e);/*<>*/ /*<>*/c(f[i],a,bb);/*<>*/ /*<>*/c(f[i],a,bc);/*<>*/ /*<>*/k(f[i],a,be,bd);var +g=b[2];/*<>*/ /*<>*/d(/*<>*/c(f[i],a,bf),g);/*<>*/ /*<>*/c(f[i],a,bg);/*<>*/return/*<>*/c(f[i],a,bh)/*<>*/}/*<>*/function +J(a,b){/*<>*/switch(b){case +0:/*<>*/return/*<>*/c(f[13],a,bs);case +1:/*<>*/return/*<>*/c(f[13],a,bt);default:/*<>*/return/*<>*/c(f[13],a,bu)}/*<>*/}/*<>*/function +V(a){/*<>*/a:{if(0===a[0]){var +b=a[1];b:if(b!==D){c:if(b!==E){if(b!==C){if(b===aG)break b;if(b===aJ)break c;if(b!==aC)break a}/*<>*/return 1}/*<>*/return 2}/*<>*/return 0}var +e=a[1];if(!e)/*<>*/return/*<>*/c(A[7],z,a);var +f=e[1];if(0!==f[0])/*<>*/return/*<>*/c(A[6],z,a);var +d=f[1];b:if(d!==D){c:if(d!==E){if(d!==C){if(d===aG)break b;if(d===aJ)break c;if(d!==aC)break a}/*<>*/return/*<>*/c(A[3],z,a)}/*<>*/return/*<>*/c(A[3],z,a)}/*<>*/return/*<>*/c(A[3],z,a)}/*<>*/return/*<>*/c(A[8],z,a)/*<>*/}function +W(a){/*<>*/switch(a){case +0:/*<>*/return bw;case +1:/*<>*/return bx;default:/*<>*/return by}/*<>*/}/*<>*/function +X(a){/*<>*/if(typeof a!=="number"&&H===a[1]){var -b=a[2];if(!b)/*<>*/return/*<>*/c(m[7],B,a);var +b=a[2];if(!b)/*<>*/return/*<>*/c(l[7],B,a);var d=b[1];if(typeof d!=="number"){var f=d[1];if(N===f){var -e=d[2];if(e===D)return b[2]?/*<>*/c(m[3],B,a):0;if(e===E)return b[2]?/*<>*/c(m[3],B,a):2;if(e===C)return b[2]?/*<>*/c(m[3],B,a):1}else if(H===f)/*<>*/return/*<>*/c(m[6],B,a)}}/*<>*/return/*<>*/c(m[8],B,a)/*<>*/}function -Y(a){/*<>*/switch(a){case -0:/*<>*/return bB;case -1:/*<>*/return bC;default:/*<>*/return bD}/*<>*/}var +e=d[2];if(e===D)return b[2]?/*<>*/c(l[3],B,a):0;if(e===E)return b[2]?/*<>*/c(l[3],B,a):2;if(e===C)return b[2]?/*<>*/c(l[3],B,a):1}else if(H===f)/*<>*/return/*<>*/c(l[6],B,a)}}/*<>*/return/*<>*/c(l[8],B,a)/*<>*/}function +Y(a){/*<>*/switch(a){case +0:/*<>*/return bz;case +1:/*<>*/return bA;default:/*<>*/return bB}/*<>*/}var Z=[];function -ap(a,b){/*<>*/ /*<>*/c(f[j],a,bE);/*<>*/ /*<>*/l(f[j],a,bG,bF);var -e=b[1];/*<>*/ /*<>*/d(d(Z[2],a),e);/*<>*/ /*<>*/c(f[j],a,bH);/*<>*/ /*<>*/c(f[j],a,bI);/*<>*/ /*<>*/l(f[j],a,bK,bJ);var -g=b[2];/*<>*/ /*<>*/d(d(Z[1],a),g);/*<>*/ /*<>*/c(f[j],a,bL);/*<>*/return/*<>*/c(f[j],a,bM)/*<>*/}/*<>*/ /*<>*/var -a_=/*<>*/d(al[1][67],function(a){/*<>*/ /*<>*/d(i[117],a);/*<>*/return a9[1]/*<>*/});k.caml_update_dummy(Z,[0,J,J]);function -L(a){/*<>*/ /*<>*/var -b=/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aJ,47),a)/*<>*/}));/*<>*/return/*<>*/d(bY[15],b)/*<>*/}function -aq(a){/*<>*/ /*<>*/var -b=L(a);/*<>*/return function(a,b,c,d){/*<>*/var -g=a,f=b,e=c,h=d;/*<>*/for(;;){if(!g)/*<>*/return[0,e,h];/*<>*/var/*<>*/i=/*<>*/ab(g[1]),j=g[2];if(f<=i)/*<>*/return[0,e,f];g=j;f=(f-i|0)-1|0;e=e+1|0;h=0}/*<>*/}(b,function(a,b){/*<>*/return a.selectionStart}(a,function(a){/*<>*/return/*<>*/d(e(a,as,48),a)/*<>*/}),0,0)/*<>*/}function -_(a,b){/*<>*/return 0===a?0:a===b?2:1/*<>*/}function -$(a){/*<>*/var/*<>*/b=L(a),/*<>*/e=aq(a),f=e[1],g=e[2],/*<>*/h=_(g,/*<>*/ab(/*<>*/c(aa[8],b,f)));/*<>*/return[0,_(f,/*<>*/d(aa[1],b)-1|0),h]/*<>*/}k.caml_register_global(172,[0,x,function(b){/*<>*/ /*<>*/var -a=function(a,b,c){/*<>*/return a.querySelector(b)}(i[2],/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,244826695,7),a)/*<>*/});/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/s([0,y,aM],1)/*<>*/})/*<>*/},ah,function(a){/*<>*/return function(a,b){/*<>*/return a.valueOf()}(ah(0),function(a){/*<>*/return/*<>*/d(e(a,-261340440,8),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var -b=function(a,b){/*<>*/return a.key}(a,function(a){/*<>*/return/*<>*/d(e(a,5343647,9),a)/*<>*/});/*<>*/return/*<>*/G(/*<>*/c(h[6][8],b,function(a){/*<>*/return/*<>*/d(n[2],aN)/*<>*/}))/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.ctrlKey}(a,function(a){/*<>*/return/*<>*/d(e(a,-511887948,10),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.shiftKey}(a,function(a){/*<>*/return/*<>*/d(e(a,429888061,11),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.altKey}(a,function(a){/*<>*/return/*<>*/d(e(a,-993351690,12),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.metaKey}(a,function(a){/*<>*/return/*<>*/d(e(a,562118618,13),a)/*<>*/})|0/*<>*/},ai,function(a){/*<>*/return 2===ai(a)?1:0/*<>*/},aj,function(a,b){/*<>*/ /*<>*/var -d=/*<>*/b0(aO[5],0,0,0,0,b);/*<>*/return aj(/*<>*/c(n[28],a,aQ),aP,d)/*<>*/},function(a,b){/*<>*/ /*<>*/var +ao(a,b){/*<>*/ /*<>*/c(f[i],a,bC);/*<>*/ /*<>*/k(f[i],a,bE,bD);var +e=b[1];/*<>*/ /*<>*/d(d(Z[2],a),e);/*<>*/ /*<>*/c(f[i],a,bF);/*<>*/ /*<>*/c(f[i],a,bG);/*<>*/ /*<>*/k(f[i],a,bI,bH);var +g=b[2];/*<>*/ /*<>*/d(d(Z[1],a),g);/*<>*/ /*<>*/c(f[i],a,bJ);/*<>*/return/*<>*/c(f[i],a,bK)/*<>*/}/*<>*/ /*<>*/var +a2=/*<>*/k(a1[29],0,a0,0);m.caml_update_dummy(Z,[0,J,J]);function +L(a){/*<>*/ /*<>*/var +b=/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aI,47),a)/*<>*/}));/*<>*/return/*<>*/d(bW[15],b)/*<>*/}function +ap(a){/*<>*/ /*<>*/var +b=L(a);/*<>*/return function(a,b,c,d){/*<>*/var +g=a,f=b,e=c,h=d;/*<>*/for(;;){if(!g)/*<>*/return[0,e,h];/*<>*/var/*<>*/i=/*<>*/ab(g[1]),j=g[2];if(f<=i)/*<>*/return[0,e,f];g=j;f=(f-i|0)-1|0;e=e+1|0;h=0}/*<>*/}(b,function(a,b){/*<>*/return a.selectionStart}(a,function(a){/*<>*/return/*<>*/d(e(a,ar,48),a)/*<>*/}),0,0)/*<>*/}function +_(a,b){/*<>*/return 0===a?0:a===b?2:1/*<>*/}function +$(a){/*<>*/var/*<>*/b=L(a),/*<>*/e=ap(a),f=e[1],g=e[2],/*<>*/h=_(g,/*<>*/ab(/*<>*/c(aa[8],b,f)));/*<>*/return[0,_(f,/*<>*/d(aa[1],b)-1|0),h]/*<>*/}m.caml_register_global(172,[0,x,function(b){/*<>*/ /*<>*/var +a=function(a,b,c){/*<>*/return a.querySelector(b)}(j[2],/*<>*/p(b),function(a){/*<>*/return/*<>*/d(e(a,244826695,7),a)/*<>*/});/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/s([0,y,aL],1)/*<>*/})/*<>*/},ah,function(a){/*<>*/return function(a,b){/*<>*/return a.valueOf()}(ah(0),function(a){/*<>*/return/*<>*/d(e(a,-261340440,8),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var +b=function(a,b){/*<>*/return a.key}(a,function(a){/*<>*/return/*<>*/d(e(a,5343647,9),a)/*<>*/});/*<>*/return/*<>*/G(/*<>*/c(h[6][8],b,function(a){/*<>*/return/*<>*/d(n[2],aM)/*<>*/}))/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.ctrlKey}(a,function(a){/*<>*/return/*<>*/d(e(a,-511887948,10),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.shiftKey}(a,function(a){/*<>*/return/*<>*/d(e(a,429888061,11),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.altKey}(a,function(a){/*<>*/return/*<>*/d(e(a,-993351690,12),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.metaKey}(a,function(a){/*<>*/return/*<>*/d(e(a,562118618,13),a)/*<>*/})|0/*<>*/},ai,function(a){/*<>*/return 2===ai(a)?1:0/*<>*/},aj,function(a,b){/*<>*/ /*<>*/var +d=/*<>*/bX(aN[5],0,0,0,0,b);/*<>*/return aj(/*<>*/c(n[28],a,aP),aO,d)/*<>*/},function(a,b){/*<>*/ /*<>*/var f=function(a,b){/*<>*/return new -a}(S[6],0);/*<>*/(function(a,b,c){/*<>*/a.readAsText(b);return}(f,a,function(a){/*<>*/return/*<>*/d(e(a,822186677,21),a)/*<>*/}));return function(a,b,c){/*<>*/return a.onload=b}(f,/*<>*/d(aR[10],function(a){/*<>*/var/*<>*/g=function(a,b){/*<>*/return a.result}(f,function(a){/*<>*/return/*<>*/d(e(a,142895325,23),a)/*<>*/}),/*<>*/i=/*<>*/d(S[3][4],g),/*<>*/j=/*<>*/d(h[5][10],i);/*<>*/ /*<>*/d(b,/*<>*/c(T[7],function(a){/*<>*/return G(a)},j));/*<>*/return h[7]/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-9931067,22),a)/*<>*/})/*<>*/},function(a,b){/*<>*/ /*<>*/var -f=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ad,24),a)/*<>*/});return function(a,b,c,d){/*<>*/return a.setItem(b,c)}(/*<>*/c(h[6][8],f,function(a){/*<>*/throw/*<>*/s([0,y,aS],1)/*<>*/}),/*<>*/o(a),/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,189007317,25),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ad,26),a)/*<>*/}),/*<>*/f=function(a){/*<>*/ /*<>*/var -b=/*<>*/G(/*<>*/c(h[5][8],a,function(a){/*<>*/throw/*<>*/s([0,y,aU],1)/*<>*/}));/*<>*/return/*<>*/d(T[2],b)/*<>*/}(function(a,b,c){/*<>*/return a.getItem(b)}(/*<>*/c(h[6][8],b,function(a){/*<>*/throw/*<>*/s([0,y,aT],1)/*<>*/}),/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,407008457,27),a)/*<>*/}));/*<>*/return f}catch(f){/*<>*/return 0}/*<>*/},function(a){/*<>*/ /*<>*/var -b=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ad,28),a)/*<>*/});return function(a,b){/*<>*/return a.clear()}(/*<>*/c(h[6][8],b,function(a){/*<>*/throw/*<>*/s([0,y,aV],1)/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-933531251,29),a)/*<>*/})/*<>*/},function(a){/*<>*/return function(a,b,c){/*<>*/return a.confirm(b)}(i[8],/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,272211200,30),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b,c){/*<>*/return a.log(b)}(aW[1],a,function(a){/*<>*/return/*<>*/d(e(a,5395588,31),a)/*<>*/})/*<>*/},function(a,b){/*<>*/var -g=a?a[1]:aZ;/*<>*/try{/*<>*/ /*<>*/var -f=function(a,b){/*<>*/return a.focus()}(x(b),function(a){/*<>*/return/*<>*/d(e(a,af,32),a)/*<>*/});/*<>*/return f}catch(f){/*<>*/var/*<>*/h=/*<>*/c(n[28],aX,g),/*<>*/i=/*<>*/c(n[28],b,h),/*<>*/j=/*<>*/c(n[28],aY,i);/*<>*/return/*<>*/d(n[46],j)}/*<>*/},U,ak,a2,function(a){/*<>*/ak(0);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(i[2],aI,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ae,34),a)/*<>*/}));/*<>*/ /*<>*/var -b=/*<>*/d(h[5][9],[0,/*<>*/o(a)]);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(i[2],"insertText",!!0,b,function(a){/*<>*/return/*<>*/d(e(a,ae,35),a)/*<>*/}));return function(a,b,c,d,e){/*<>*/return a.execCommand(b,c,d)}(i[2],aI,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ae,36),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=x(a4),/*<>*/f=function(a,b){/*<>*/return a.getBoundingClientRect()}(x(a5),function(a){/*<>*/return/*<>*/d(e(a,aB,37),a)/*<>*/}),/*<>*/g=function(a,b){/*<>*/return a.getBoundingClientRect()}(b,function(a){/*<>*/return/*<>*/d(e(a,aB,38),a)/*<>*/}),/*<>*/k=function(a,b){/*<>*/return a.top}(f,function(a){/*<>*/return/*<>*/d(e(a,az,39),a)/*<>*/});if(function(a,b){/*<>*/return a.top}(g,function(a){/*<>*/return/*<>*/d(e(a,az,40),a)/*<>*/})>*/return a.scrollIntoView(b)}(b,h[7],function(a){/*<>*/return/*<>*/d(e(a,aA,41),a)/*<>*/});else/*<>*/var/*<>*/l=function(a,b){/*<>*/return a.bottom}(f,function(a){/*<>*/return/*<>*/d(e(a,ay,42),a)/*<>*/}),/*<>*/j=l>*/return a.bottom}(g,function(a){/*<>*/return/*<>*/d(e(a,ay,43),a)/*<>*/})?1:0,i=j?function(a,b,c){/*<>*/return a.scrollIntoView(b)}(b,h[8],function(a){/*<>*/return/*<>*/d(e(a,aA,44),a)/*<>*/}):j;/*<>*/return i}catch(f){var -c=b1(f);if(c[1]!==n[5])throw s(c,0);/*<>*/ /*<>*/d(n[46],a3);/*<>*/return 0}/*<>*/},[0,function(a){/*<>*/var -b=a!==p?/*<>*/c(n[28],a6,a):a7,/*<>*/f=function(a,b){/*<>*/return a.history}(i[8],function(a){/*<>*/return/*<>*/d(e(a,-465095340,45),a)/*<>*/}),/*<>*/g=/*<>*/d(h[2],/*<>*/o(b));return function(a,b,c,d,e){/*<>*/return a.pushState(b,c,d)}(f,h[1],p,g,function(a){/*<>*/return/*<>*/d(e(a,-936976937,46),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var +a}(S[6],0);/*<>*/(function(a,b,c){/*<>*/a.readAsText(b);return}(f,a,function(a){/*<>*/return/*<>*/d(e(a,822186677,21),a)/*<>*/}));return function(a,b,c){/*<>*/return a.onload=b}(f,/*<>*/d(aQ[10],function(a){/*<>*/var/*<>*/g=function(a,b){/*<>*/return a.result}(f,function(a){/*<>*/return/*<>*/d(e(a,142895325,23),a)/*<>*/}),/*<>*/i=/*<>*/d(S[3][4],g),/*<>*/j=/*<>*/d(h[5][10],i);/*<>*/ /*<>*/d(b,/*<>*/c(T[7],function(a){/*<>*/return G(a)},j));/*<>*/return h[7]/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-9931067,22),a)/*<>*/})/*<>*/},function(a,b){/*<>*/ /*<>*/var +f=function(a,b){/*<>*/return a.localStorage}(j[8],function(a){/*<>*/return/*<>*/d(e(a,ad,24),a)/*<>*/});return function(a,b,c,d){/*<>*/return a.setItem(b,c)}(/*<>*/c(h[6][8],f,function(a){/*<>*/throw/*<>*/s([0,y,aR],1)/*<>*/}),/*<>*/p(a),/*<>*/p(b),function(a){/*<>*/return/*<>*/d(e(a,189007317,25),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=function(a,b){/*<>*/return a.localStorage}(j[8],function(a){/*<>*/return/*<>*/d(e(a,ad,26),a)/*<>*/}),/*<>*/f=function(a){/*<>*/ /*<>*/var +b=/*<>*/G(/*<>*/c(h[5][8],a,function(a){/*<>*/throw/*<>*/s([0,y,aT],1)/*<>*/}));/*<>*/return/*<>*/d(T[2],b)/*<>*/}(function(a,b,c){/*<>*/return a.getItem(b)}(/*<>*/c(h[6][8],b,function(a){/*<>*/throw/*<>*/s([0,y,aS],1)/*<>*/}),/*<>*/p(a),function(a){/*<>*/return/*<>*/d(e(a,407008457,27),a)/*<>*/}));/*<>*/return f}catch(f){/*<>*/return 0}/*<>*/},function(a){/*<>*/ /*<>*/var +b=function(a,b){/*<>*/return a.localStorage}(j[8],function(a){/*<>*/return/*<>*/d(e(a,ad,28),a)/*<>*/});return function(a,b){/*<>*/return a.clear()}(/*<>*/c(h[6][8],b,function(a){/*<>*/throw/*<>*/s([0,y,aU],1)/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-933531251,29),a)/*<>*/})/*<>*/},function(a){/*<>*/return function(a,b,c){/*<>*/return a.confirm(b)}(j[8],/*<>*/p(a),function(a){/*<>*/return/*<>*/d(e(a,272211200,30),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b,c){/*<>*/return a.log(b)}(aV[1],a,function(a){/*<>*/return/*<>*/d(e(a,5395588,31),a)/*<>*/})/*<>*/},function(a,b){/*<>*/var +g=a?a[1]:aY;/*<>*/try{/*<>*/ /*<>*/var +f=function(a,b){/*<>*/return a.focus()}(x(b),function(a){/*<>*/return/*<>*/d(e(a,af,32),a)/*<>*/});/*<>*/return f}catch(f){/*<>*/var/*<>*/h=/*<>*/c(n[28],aW,g),/*<>*/i=/*<>*/c(n[28],b,h),/*<>*/j=/*<>*/c(n[28],aX,i);/*<>*/return/*<>*/d(n[46],j)}/*<>*/},U,ak,a2,function(a){/*<>*/ak(0);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(j[2],aH,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ae,34),a)/*<>*/}));/*<>*/ /*<>*/var +b=/*<>*/d(h[5][9],[0,/*<>*/p(a)]);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(j[2],"insertText",!!0,b,function(a){/*<>*/return/*<>*/d(e(a,ae,35),a)/*<>*/}));return function(a,b,c,d,e){/*<>*/return a.execCommand(b,c,d)}(j[2],aH,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ae,36),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=x(a4),/*<>*/f=function(a,b){/*<>*/return a.getBoundingClientRect()}(x(a5),function(a){/*<>*/return/*<>*/d(e(a,aA,37),a)/*<>*/}),/*<>*/g=function(a,b){/*<>*/return a.getBoundingClientRect()}(b,function(a){/*<>*/return/*<>*/d(e(a,aA,38),a)/*<>*/}),/*<>*/k=function(a,b){/*<>*/return a.top}(f,function(a){/*<>*/return/*<>*/d(e(a,ay,39),a)/*<>*/});if(function(a,b){/*<>*/return a.top}(g,function(a){/*<>*/return/*<>*/d(e(a,ay,40),a)/*<>*/})>*/return a.scrollIntoView(b)}(b,h[7],function(a){/*<>*/return/*<>*/d(e(a,az,41),a)/*<>*/});else/*<>*/var/*<>*/l=function(a,b){/*<>*/return a.bottom}(f,function(a){/*<>*/return/*<>*/d(e(a,ax,42),a)/*<>*/}),/*<>*/j=l>*/return a.bottom}(g,function(a){/*<>*/return/*<>*/d(e(a,ax,43),a)/*<>*/})?1:0,i=j?function(a,b,c){/*<>*/return a.scrollIntoView(b)}(b,h[8],function(a){/*<>*/return/*<>*/d(e(a,az,44),a)/*<>*/}):j;/*<>*/return i}catch(f){var +c=bY(f);if(c[1]!==n[5])throw s(c,0);/*<>*/ /*<>*/d(n[46],a3);/*<>*/return 0}/*<>*/},[0,function(a){/*<>*/var +b=a!==o?/*<>*/c(n[28],a6,a):a7,/*<>*/f=function(a,b){/*<>*/return a.history}(j[8],function(a){/*<>*/return/*<>*/d(e(a,-465095340,45),a)/*<>*/}),/*<>*/g=/*<>*/d(h[2],/*<>*/p(b));return function(a,b,c,d,e){/*<>*/return a.pushState(b,c,d)}(f,h[1],o,g,function(a){/*<>*/return/*<>*/d(e(a,-936976937,46),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var b=/*<>*/d(a8[10][9],0);/*<>*/return/*<>*/d(/*<>*/d(T[7],function(a){/*<>*/var -b=2===a[0]?a[1][4]:a[1][6];/*<>*/return b/*<>*/}),b)/*<>*/}],a_,[0,am,function(a){/*<>*/return/*<>*/l(f[ac],bk,am,a)/*<>*/},function(a){/*<>*/return/*<>*/ar(an[3],bl,[0,bn,1,q[16],[0,bm,1,q[16],0]],function(a){/*<>*/return a!==u?a!==w?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[1],/*<>*/c=[0,[1,[0,bo,[0,/*<>*/d(q[15],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bp,[0,/*<>*/d(q[15],b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof -a!=="number"&&R===a[1]){/*<>*/var/*<>*/f=[0,0],/*<>*/g=[0,0],/*<>*/e=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var -i=a;/*<>*/for(;;){if(!i)/*<>*/return;var -j=i[1],k=j[2],c=j[1],l=i[2];if(c!==u)if(c!==w){/*<>*/if(/*<>*/d(b[2],ao[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else -f[1]=[0,/*<>*/d(q[68],k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else -g[1]=[0,/*<>*/d(q[68],k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var -k=/*<>*/d(b[2],e);/*<>*/return/*<>*/l(m[10],I,k,a)}if(/*<>*/d(b[2],h)){/*<>*/ /*<>*/var -n=/*<>*/d(b[2],h);/*<>*/return/*<>*/l(m[11],I,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,bq],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,br],o];/*<>*/return/*<>*/l(m[13],I,a,p)}/*<>*/return/*<>*/c(m[14],I,a)/*<>*/},function(a){/*<>*/var -b=a[1],c=[0,[0,bs,d(q[52],a[2])],0];/*<>*/return[0,R,[0,[0,bt,d(q[52],b)],c]]/*<>*/},J,function(a){/*<>*/return/*<>*/l(f[ac],bx,J,a)/*<>*/},V,W,X,Y,ap,function(a){/*<>*/return/*<>*/l(f[ac],bN,ap,a)/*<>*/},function(a){/*<>*/return/*<>*/ar(an[3],bO,[0,bQ,1,V,[0,bP,1,V,0]],function(a){/*<>*/return a!==t?a!==v?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[1],/*<>*/c=[0,[1,[0,bR,[0,W(a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bS,[0,W(b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof -a!=="number"&&R===a[1]){/*<>*/var/*<>*/f=[0,0],/*<>*/g=[0,0],/*<>*/e=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var -i=a;/*<>*/for(;;){if(!i)/*<>*/return;var -j=i[1],k=j[2],c=j[1],l=i[2];if(c!==t)if(c!==v){/*<>*/if(/*<>*/d(b[2],ao[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else -f[1]=[0,X(k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else -g[1]=[0,X(k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var -k=/*<>*/d(b[2],e);/*<>*/return/*<>*/l(m[10],K,k,a)}if(/*<>*/d(b[2],h)){/*<>*/ /*<>*/var -n=/*<>*/d(b[2],h);/*<>*/return/*<>*/l(m[11],K,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,bT],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,bU],o];/*<>*/return/*<>*/l(m[13],K,a,p)}/*<>*/return/*<>*/c(m[14],K,a)/*<>*/},function(a){/*<>*/var -b=a[1],c=[0,[0,bV,Y(a[2])],0];/*<>*/return[0,R,[0,[0,bW,Y(b)],c]]/*<>*/},function(a){/*<>*/ /*<>*/var -b=x(a);/*<>*/return function(a){/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/return/*<>*/d(n[2],bX)/*<>*/})/*<>*/}(/*<>*/d(i[118][55],b))/*<>*/},L,aq,_,$,function(a){/*<>*/var/*<>*/b=$(a),c=0===b[1]?1:0,d=b[2],e=c?0===d?1:0:c;return e/*<>*/},function(a){/*<>*/var/*<>*/g=L(a),/*<>*/h=$(a),c=h[2],e=h[1],i=2===e?1:0,j=i?2===c?1:0:i;if(j)var -b=j;else{var -l=0===e?1:0;if(l)var -m=2===c?1:0,f=m?1===/*<>*/d(aa[1],g)?1:0:m;else -var -f=l;if(f)var -b=f;else{var -n=0===e?1:0;if(n)var -o=0===c?1:0,b=o?/*<>*/k.caml_equal(g,bZ):o;else -var -b=n}}/*<>*/return b/*<>*/},function(a){/*<>*/(function(a,b){/*<>*/a.focus();return}(a,function(a){/*<>*/return/*<>*/d(e(a,af,49),a)/*<>*/}));/*<>*/ /*<>*/var -b=/*<>*/ab(/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aJ,50),a)/*<>*/})));/*<>*/(function(a,b,c){/*<>*/a.selectionStart=b;return}(a,b,function(a){/*<>*/return/*<>*/d(e(a,as,51),a)/*<>*/}));return function(a,b,c){/*<>*/return a.selectionEnd=b}(a,b,function(a){/*<>*/return/*<>*/d(e(a,-578749713,52),a)/*<>*/})/*<>*/}]],"Haz3lcore__JsUtil");return/*<>*/}(globalThis)); - -//# 6168 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +b=2===a[0]?a[1][4]:a[1][6];/*<>*/return b/*<>*/}),b)/*<>*/}],[0,al,function(a){/*<>*/return/*<>*/k(f[ac],bi,al,a)/*<>*/},function(a){/*<>*/return/*<>*/aq(am[3],bj,[0,bl,1,q[16],[0,bk,1,q[16],0]],function(a){/*<>*/return a!==u?a!==w?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,bm,[0,/*<>*/d(q[15],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bn,[0,/*<>*/d(q[15],b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof +a!=="number"&&R===a[1]){/*<>*/var/*<>*/f=[0,0],/*<>*/g=[0,0],/*<>*/e=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var +i=a;/*<>*/for(;;){if(!i)/*<>*/return;var +j=i[1],k=j[2],c=j[1],l=i[2];if(c!==u)if(c!==w){/*<>*/if(/*<>*/d(b[2],an[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else +f[1]=[0,/*<>*/d(q[68],k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else +g[1]=[0,/*<>*/d(q[68],k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var +m=/*<>*/d(b[2],e);/*<>*/return/*<>*/k(l[10],I,m,a)}if(/*<>*/d(b[2],h)){/*<>*/ /*<>*/var +n=/*<>*/d(b[2],h);/*<>*/return/*<>*/k(l[11],I,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,bo],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,bp],o];/*<>*/return/*<>*/k(l[13],I,a,p)}/*<>*/return/*<>*/c(l[14],I,a)/*<>*/},function(a){/*<>*/var +b=a[1],c=[0,[0,bq,d(q[52],a[2])],0];/*<>*/return[0,R,[0,[0,br,d(q[52],b)],c]]/*<>*/},J,function(a){/*<>*/return/*<>*/k(f[ac],bv,J,a)/*<>*/},V,W,X,Y,ao,function(a){/*<>*/return/*<>*/k(f[ac],bL,ao,a)/*<>*/},function(a){/*<>*/return/*<>*/aq(am[3],bM,[0,bO,1,V,[0,bN,1,V,0]],function(a){/*<>*/return a!==t?a!==v?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,bP,[0,W(a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bQ,[0,W(b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof +a!=="number"&&R===a[1]){/*<>*/var/*<>*/f=[0,0],/*<>*/g=[0,0],/*<>*/e=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var +i=a;/*<>*/for(;;){if(!i)/*<>*/return;var +j=i[1],k=j[2],c=j[1],l=i[2];if(c!==t)if(c!==v){/*<>*/if(/*<>*/d(b[2],an[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else +f[1]=[0,X(k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else +g[1]=[0,X(k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var +m=/*<>*/d(b[2],e);/*<>*/return/*<>*/k(l[10],K,m,a)}if(/*<>*/d(b[2],h)){/*<>*/ /*<>*/var +n=/*<>*/d(b[2],h);/*<>*/return/*<>*/k(l[11],K,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,bR],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,bS],o];/*<>*/return/*<>*/k(l[13],K,a,p)}/*<>*/return/*<>*/c(l[14],K,a)/*<>*/},function(a){/*<>*/var +b=a[1],c=[0,[0,bT,Y(a[2])],0];/*<>*/return[0,R,[0,[0,bU,Y(b)],c]]/*<>*/},function(a){/*<>*/ /*<>*/var +b=x(a);/*<>*/return function(a){/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/return/*<>*/d(n[2],bV)/*<>*/})/*<>*/}(/*<>*/d(j[118][55],b))/*<>*/},L,ap,_,$,function(a){/*<>*/var/*<>*/b=$(a),c=0===b[1]?1:0,d=b[2],e=c?0===d?1:0:c;return e/*<>*/},function(a){/*<>*/var/*<>*/f=L(a),/*<>*/c=$(a),e=c[2],g=c[1],/*<>*/b=/*<>*/d(aa[10],f);switch(g){case +0:switch(e){case +0:if(b&&b[1]===o&&!b[2])/*<>*/return 1;break;case +2:if(b&&!b[2])/*<>*/return 1;break}break;case +2:switch(e){case +0:if(b&&b[1]===o)/*<>*/return 1;break;case +2:/*<>*/return 1}break}/*<>*/return 0/*<>*/},function(a){/*<>*/(function(a,b){/*<>*/a.focus();return}(a,function(a){/*<>*/return/*<>*/d(e(a,af,49),a)/*<>*/}));/*<>*/ /*<>*/var +b=/*<>*/ab(/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aI,50),a)/*<>*/})));/*<>*/(function(a,b,c){/*<>*/a.selectionStart=b;return}(a,b,function(a){/*<>*/return/*<>*/d(e(a,ar,51),a)/*<>*/}));return function(a,b,c){/*<>*/return a.selectionEnd=b}(a,b,function(a){/*<>*/return/*<>*/d(e(a,-578749713,52),a)/*<>*/})/*<>*/}]],"Haz3lcore__JsUtil");return/*<>*/}(globalThis)); + +//# 6166 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var r="%a",q=143,p="()",f=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -435880,7 +435878,7 @@ b=g(a);return b?/*<>*/e(h[3 l(a,b){/*<>*/return/*<>*/n(d[13],a,u)/*<>*/}/*<>*/function m(a,b){/*<>*/return/*<>*/n(d[13],a,w)/*<>*/}f.caml_register_global(13,[0,j,g,k,[0,l,function(a){/*<>*/return/*<>*/o(d[q],v,l,a)/*<>*/},b[3],b[4],b[47],b[63],m,function(a){/*<>*/return/*<>*/o(d[q],x,m,a)/*<>*/},b[3],b[4],b[47],b[63],0,function(a){/*<>*/return 0!==g(a)?1:0/*<>*/},0,function(a,b,c,d){/*<>*/var/*<>*/f=k(b[2]),/*<>*/g=[0,[0,/*<>*/e(z[1][52],function(a,b){/*<>*/return/*<>*/e(d,[2,/*<>*/e(j,b)])/*<>*/}),0]];/*<>*/return/*<>*/B(A[8],g,0,0,f)/*<>*/},function(a,b){/*<>*/return y/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__SliderCore");return/*<>*/}(globalThis)); -//# 6184 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6182 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var u="%a",t="%.2f",s=143,r="()",f=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -435899,7 +435897,7 @@ b=g(a);return b?b[1]:/*<>* n(a,b){/*<>*/return/*<>*/p(d[13],a,y)/*<>*/}/*<>*/function o(a,b){/*<>*/return/*<>*/p(d[13],a,A)/*<>*/}f.caml_register_global(16,[0,h,j,g,m,[0,n,function(a){/*<>*/return/*<>*/q(d[s],z,n,a)/*<>*/},b[3],b[4],b[47],b[63],o,function(a){/*<>*/return/*<>*/q(d[s],B,o,a)/*<>*/},b[3],b[4],b[47],b[63],0,function(a){/*<>*/return 0!==g(a)?1:0/*<>*/},0,function(a,b,c,d){/*<>*/var/*<>*/f=m(b[2]),/*<>*/g=/*<>*/e(/*<>*/e(i[4],D),f),/*<>*/h=[0,[0,/*<>*/e(E[1][52],function(a,b){/*<>*/return/*<>*/e(d,[2,j(b)])/*<>*/}),0]];/*<>*/return/*<>*/G(F[8],h,0,0,g)/*<>*/},function(a,b){/*<>*/return C/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__SliderFCore");return/*<>*/}(globalThis)); -//# 6204 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6202 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var cp=203,ax=191,aw=188,Y=187,d="$Meta",o=a.jsoo_runtime,cn=o.caml_equal;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -435909,11 +435907,11 @@ E(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):o.caml_call_gen(a,[b, aW(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):o.caml_call_gen(a,[b,c,d,e,f])}/*<>*/function eX(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):o.caml_call_gen(a,[b,c,d,e,f,g])}/*<>*/function co(a,b,c,d,e,f,g,h){return(a.l>=0?a.l:a.l=a.length)==7?a(b,c,d,e,f,g,h):o.caml_call_gen(a,[b,c,d,e,f,g,h])}var -b=o.caml_get_global_data(),l=b.Haz3lcore__CoCtx,s=b.Stdlib,k=b.Stdlib__List,n=b.Haz3lcore__Info,Q=b.Haz3lcore__Incon,t=b.Haz3lcore__Typ,m=b.Haz3lcore__Term,r=b.Haz3lcore__Mode,B=b.Haz3lcore__Self,z=b.Haz3lcore__Ctx,v=b.Haz3lcore__Id,R=b.Haz3lcore__Constraint,y=b.Stdlib__Option,db=[0,0],cu=[0,[0,2]],cv=[0,[5,0]],cx=[0,2],cy=[0,0],cz=[0,1],cA=[0,3],cI=[0,2],cU="?",c8=[0,2],dT=[0,[0,2]],d1=[0,2],d7=[0,[0,2]],d8=[0,[5,0]],d$=[0,1],ea=[0,2],es=[8,"$v"],et=[8,"$e"],eq=[1,d],er=[0,2],eF=[0,2],eV=[0,2],dC=[5,0],aB=[8,0],aj=[0,[5,0]],ak=[0,0],al=[0,1],am=[8,0],ap=[9,0],ao=[0,2],aq=[0,3],aE=[1,[0,[0,2]]],M=[0,0],N=[0,2],S=[0,0],W=[0,0],T=[0,0],$=[0,0],X=[0,0],_="RETICULATING SPLINES",H=[0,[1,d],[0,[0,d]]],I=[0,0,0],L=[0,2,2],F=[0,2,2,2],C=[0,[15,0],"%a"],U=[0,1000],D=b.Stdlib__Format,V=b.Core__Memo,c=[];function +b=o.caml_get_global_data(),l=b.Haz3lcore__CoCtx,t=b.Stdlib,k=b.Stdlib__List,n=b.Haz3lcore__Info,Q=b.Haz3lcore__Incon,s=b.Haz3lcore__Typ,m=b.Haz3lcore__Term,r=b.Haz3lcore__Mode,B=b.Haz3lcore__Self,z=b.Haz3lcore__Ctx,v=b.Haz3lcore__Id,R=b.Haz3lcore__Constraint,y=b.Stdlib__Option,db=[0,0],cu=[0,[0,2]],cv=[0,[5,0]],cx=[0,2],cy=[0,0],cz=[0,1],cA=[0,3],cI=[0,2],cU="?",c8=[0,2],dT=[0,[0,2]],d1=[0,2],d7=[0,[0,2]],d8=[0,[5,0]],d$=[0,1],ea=[0,2],es=[8,"$v"],et=[8,"$e"],eq=[1,d],er=[0,2],eF=[0,2],eV=[0,2],dC=[5,0],aB=[8,0],aj=[0,[5,0]],ak=[0,0],al=[0,1],am=[8,0],ap=[9,0],ao=[0,2],aq=[0,3],aE=[1,[0,[0,2]]],M=[0,0],N=[0,2],S=[0,0],W=[0,0],T=[0,0],$=[0,0],X=[0,0],H=[0,[1,d],[0,[0,d]]],I=[0,0,0],L=[0,2,2],F=[0,2,2,2],C=[0,[15,0],"%a"],U=[0,1000],D=b.Stdlib__Format,V=b.Core__Memo,c=[];function e(a){/*<>*/return h(c[1],function(a){/*<>*/return i(c[2],a)},a)}o.caml_update_dummy(c,[0,v[15][48],n[169]]);function J(d,b,c){/*<>*/return/*<>*/j(k[26],function(a,b){/*<>*/var c=a[1];/*<>*/return function(a){/*<>*/var -b=a[2];/*<>*/return[0,/*<>*/h(s[37],c,[0,a[1],0]),b]/*<>*/}(/*<>*/h(d,b,a[2]))/*<>*/},[0,0,c],b)/*<>*/}function +b=a[2];/*<>*/return[0,/*<>*/h(t[37],c,[0,a[1],0]),b]/*<>*/}(/*<>*/h(d,b,a[2]))/*<>*/},[0,0,c],b)/*<>*/}function G(a,d,c){/*<>*/return/*<>*/i(/*<>*/h(k[26],function(a,b){/*<>*/return/*<>*/j(v[15][2],b,d,a)/*<>*/},c),a)/*<>*/}function g(a){/*<>*/var b=a;/*<>*/for(;;){if(typeof @@ -435923,7 +435921,7 @@ b!=="number")switch(b[0]){case 7:b=b[2];continue}/*<>*/return 0}/*<>*/}function ay(a,b,c,d){/*<>*/var/*<>*/j=/*<>*/i(m[12][28],b),/*<>*/l=/*<>*/i(m[13][92],c);if(j&&l){var e=j[1],o=l[1];if(0!==e&&e===o){/*<>*/ /*<>*/var -f=/*<>*/h(t[48],a,d);if(typeof +f=/*<>*/h(s[48],a,d);if(typeof f!=="number"&&5===f[0]){var n=f[1];if(/*<>*/i(k[1],n)===e)/*<>*/return/*<>*/i(/*<>*/i(k[33],g),n)}/*<>*/return g(f)?1===e?1:0:0}}/*<>*/return 0/*<>*/}function f(a){/*<>*/return 5<=a?2:0/*<>*/}function @@ -435946,7 +435944,7 @@ g=u(a,0,b,c[1],d)[2];/*<>*/return[0,l[1 3:/*<>*/ /*<>*/var h=A(a,b,c[1],d)[2];/*<>*/return[0,l[13],h];default:/*<>*/return[0,l[13],d]}/*<>*/}function K(f,e,c,d){/*<>*/return/*<>*/j(k[26],function(a,b){/*<>*/var -d=a[1],/*<>*/c=w(f,e,b,a[2]),g=c[2];/*<>*/return[0,/*<>*/h(s[37],d,[0,c[1],0]),g]/*<>*/},[0,0,c],d)/*<>*/}function +d=a[1],/*<>*/c=w(f,e,b,a[2]),g=c[2];/*<>*/return[0,/*<>*/h(t[37],d,[0,c[1],0]),g]/*<>*/},[0,0,c],d)/*<>*/}function O(g,b,c,d,e,f){var Z=b?b[1]:2,aB=c?c[1]:0,a=e[2];a:{b:{var cq=e[1];/*<>*/if(typeof @@ -435958,7 +435956,7 @@ cm!=="number")break b;if(cm)break b;/*< p=Z}function F(a,b,c){/*<>*/ /*<>*/var f=/*<>*/eX(n[202],e,g,p,d,a,b);/*<>*/return[0,f,G(cq,[0,f],c)]/*<>*/}/*<>*/function -q(a,b,c){/*<>*/return F([4,a],b,c)/*<>*/}/*<>*/var/*<>*/cr=[0,/*<>*/i(m[13][76],e),0],/*<>*/x=/*<>*/h(s[37],cr,d);function +q(a,b,c){/*<>*/return F([4,a],b,c)/*<>*/}/*<>*/var/*<>*/cr=[0,/*<>*/i(m[13][76],e),0],/*<>*/x=/*<>*/h(t[37],cr,d);function cs(a,b,c,d,e,f){/*<>*/var g=b?b[1]:2,h=c?c[1]:aB,i=d?d[1]:x;/*<>*/return O(a,[0,g],[0,h],i,e,f)/*<>*/}/*<>*/var ct=[0,x];function @@ -435967,7 +435965,7 @@ c(a,b,c,d,e){/*<>*/return cs(f,a,b,c,d,e)}/*<>*/function _(a){/*<>*/return/*<>*/h(k[31],function(a,b,c){/*<>*/var d=a[2],e=a[1];/*<>*/return function(a){/*<>*/var -b=a[2];/*<>*/return[0,/*<>*/h(s[37],e,[0,a[1],0]),b]/*<>*/}(/*<>*/h(o([0,b],0),c,d))/*<>*/},[0,0,a])/*<>*/}function +b=a[2];/*<>*/return[0,/*<>*/h(t[37],e,[0,a[1],0]),b]/*<>*/}(/*<>*/h(o([0,b],0),c,d))/*<>*/},[0,0,a])/*<>*/}function w(f){function d(a,b,c,d,e){/*<>*/return P(f,g,a,b,c,d,e)}/*<>*/return function(e){/*<>*/return function(a,b,c){/*<>*/return d(e,x,a,b,c)}}}function C(a){/*<>*/return q(a,l[13],f)/*<>*/}if(typeof @@ -435995,7 +435993,7 @@ aP=a[1],/*<>*/cZ=/*<>*/c4=/*<>*/i(r[8],p),/*<>*/c5=/*<>*/i(m[13][76],e),/*<>*/c6=/*<>*/j(l[16],aS,c5,c4);/*<>*/return F(/*<>*/h(B[35],g,aS),c6,f);case 13:var L=a[2],M=a[1],c7=a[3],c9=l[13],H=/*<>*/j(w(1)(c9),c8,M,f)[1];/*<>*/if(ay(g,M,L,H[9])){/*<>*/var/*<>*/c_=[0,[0,H[9]]],aT=/*<>*/h(y(H[3])(c_,0),L,f)[1],/*<>*/aU=aT[9],/*<>*/c$=l[13],/*<>*/ad=/*<>*/j(w(0)(c$),[0,[0,aU]],M,f)[1][3],/*<>*/da=[0,[0,H[9]]],/*<>*/aV=function(a,b){/*<>*/var -c=a[1],/*<>*/d=/*<>*/cn(b,db),e=a[2],/*<>*/f=d?1-/*<>*/h(t[41],c,e):d;return f?c:b/*<>*/},/*<>*/T=/*<>*/h(y(ad)(da,0),L,f)[1][9],U=aT[9],V=H[9];a:{b:if(typeof +c=a[1],/*<>*/d=/*<>*/cn(b,db),e=a[2],/*<>*/f=d?1-/*<>*/h(s[41],c,e):d;return f?c:b/*<>*/},/*<>*/T=/*<>*/h(y(ad)(da,0),L,f)[1][9],U=aT[9],V=H[9];a:{b:if(typeof U!=="number"&&5===U[0]&&typeof T!=="number"&&5===T[0]){if(typeof V!=="number"&&5===V[0]){/*<>*/var @@ -436006,18 +436004,18 @@ a_=a[3],I=a[2],W=a[1],/*<>*/a$=A(g,x,W, af!=="number"&&2===af[0]){var D=af[1];/*<>*/if(!/*<>*/h(z[40],g,D)){/*<>*/var/*<>*/dp=/*<>*/h(z[28],g,D),/*<>*/bc=/*<>*/h(m[11][30],dp,I),/*<>*/bd=I[2];a:{if(typeof bd!=="number"&&9===bd[0]){/*<>*/ /*<>*/var -dw=/*<>*/h(t[42],0,bc);/*<>*/if(/*<>*/h(k[37],D,dw)){/*<>*/var/*<>*/bk=[6,D,bc],/*<>*/dx=/*<>*/i(m[10][18],W),/*<>*/bl=/*<>*/E(z[27],g,D,dx,bk),ah=bl,bf=bl,ag=bk;break a}}/*<>*/var/*<>*/be=/*<>*/h(m[11][30],g,I),/*<>*/dq=/*<>*/i(m[10][18],W),ah=/*<>*/E(z[27],g,D,dq,be),bf=g,ag=be}/*<>*/ /*<>*/var -bg=/*<>*/h(t[50],g,ag);if(bg)/*<>*/var +dw=/*<>*/h(s[42],0,bc);/*<>*/if(/*<>*/h(k[37],D,dw)){/*<>*/var/*<>*/bk=[6,D,bc],/*<>*/dx=/*<>*/i(m[10][18],W),/*<>*/bl=/*<>*/E(z[27],g,D,dx,bk),ah=bl,bf=bl,ag=bk;break a}}/*<>*/var/*<>*/be=/*<>*/h(m[11][30],g,I),/*<>*/dq=/*<>*/i(m[10][18],W),ah=/*<>*/E(z[27],g,D,dq,be),bf=g,ag=be}/*<>*/ /*<>*/var +bg=/*<>*/h(s[50],g,ag);if(bg)/*<>*/var dr=bg[1],/*<>*/ds=/*<>*/i(m[11][24],I),bh=/*<>*/E(z[36],ah,D,ds,dr);else var -bh=ah;/*<>*/var/*<>*/bi=/*<>*/h(y(bh)([0,p],0),a_,a$),bj=bi[1],dt=bi[2],du=bj[6],/*<>*/dv=/*<>*/j(t[39],ag,D,bj[9]);/*<>*/return q([0,dv],du,u(bf,0,x,I,dt)[2])}}/*<>*/var/*<>*/ba=/*<>*/h(y(g)([0,p],0),a_,a$),bb=ba[1],dm=bb[9],dn=bb[6];/*<>*/return q([0,dm],dn,u(g,0,x,I,ba[2])[2]);case +bh=ah;/*<>*/var/*<>*/bi=/*<>*/h(y(bh)([0,p],0),a_,a$),bj=bi[1],dt=bi[2],du=bj[6],/*<>*/dv=/*<>*/j(s[39],ag,D,bj[9]);/*<>*/return q([0,dv],du,u(bf,0,x,I,dt)[2])}}/*<>*/var/*<>*/ba=/*<>*/h(y(g)([0,p],0),a_,a$),bb=ba[1],dm=bb[9],dn=bb[6];/*<>*/return q([0,dm],dn,u(g,0,x,I,ba[2])[2]);case 15:var bm=a[2],ai=a[1];break;case 16:/*<>*/var -bt=a[2],dF=a[1],/*<>*/bu=/*<>*/h(o([0,r[20]],0),dF,f),ak=bu[1],bv=u(g,0,x,bt,bu[2])[2],/*<>*/bw=/*<>*/h(t[34],g,ak[9]),bx=bw[2],by=bw[1],/*<>*/dG=/*<>*/h(m[11][30],g,bt);/*<>*/if(!by)/*<>*/return q([0,bx],ak[6],bv);var -dH=ak[6];/*<>*/return q([0,/*<>*/j(t[39],dG,by[1],bx)],dH,bv);case +bt=a[2],dF=a[1],/*<>*/bu=/*<>*/h(o([0,r[20]],0),dF,f),ak=bu[1],bv=u(g,0,x,bt,bu[2])[2],/*<>*/bw=/*<>*/h(s[34],g,ak[9]),bx=bw[2],by=bw[1],/*<>*/dG=/*<>*/h(m[11][30],g,bt);/*<>*/if(!by)/*<>*/return q([0,bx],ak[6],bv);var +dH=ak[6];/*<>*/return q([0,/*<>*/j(s[39],dG,by[1],bx)],dH,bv);case 17:/*<>*/var -al=a[2],bz=a[1],/*<>*/dI=/*<>*/i(m[13][90],bz),/*<>*/bA=/*<>*/h(o([0,/*<>*/j(r[19],g,p,dI)],0),bz,f),bB=bA[1],dJ=bA[2],/*<>*/bC=/*<>*/h(t[33],g,bB[9]),dK=bC[2],dL=bC[1],/*<>*/bD=/*<>*/i(k[1],al),/*<>*/bE=/*<>*/j(t[37],g,bD,dL),/*<>*/dM=/*<>*/j(B[37],al,bE,dK),/*<>*/dN=/*<>*/h(r[21],bD,bE),/*<>*/bF=/*<>*/h(_(dJ),dN,al),dO=bF[2],/*<>*/dP=/*<>*/h(k[20],n[Y],bF[1]),dQ=[0,/*<>*/i(l[15],dP),0];/*<>*/return F(dM,/*<>*/i(l[15],[0,bB[6],dQ]),dO);case +al=a[2],bz=a[1],/*<>*/dI=/*<>*/i(m[13][90],bz),/*<>*/bA=/*<>*/h(o([0,/*<>*/j(r[19],g,p,dI)],0),bz,f),bB=bA[1],dJ=bA[2],/*<>*/bC=/*<>*/h(s[33],g,bB[9]),dK=bC[2],dL=bC[1],/*<>*/bD=/*<>*/i(k[1],al),/*<>*/bE=/*<>*/j(s[37],g,bD,dL),/*<>*/dM=/*<>*/j(B[37],al,bE,dK),/*<>*/dN=/*<>*/h(r[21],bD,bE),/*<>*/bF=/*<>*/h(_(dJ),dN,al),dO=bF[2],/*<>*/dP=/*<>*/h(k[20],n[Y],bF[1]),dQ=[0,/*<>*/i(l[15],dP),0];/*<>*/return F(dM,/*<>*/i(l[15],[0,bB[6],dQ]),dO);case 18:var bm=a[1],ai=a[2];break;case 19:/*<>*/var @@ -436050,11 +436048,11 @@ eu=a[2],/*<>*/b_=aA(b5),ev=b_[2],/*<>*/ap=az(a[1]),ey=ap[3],ez=ap[2],/*<>*/ca=/*<>*/h(o([0,[0,ap[1]]],0),ex,f),eA=ca[2],eB=ca[1],/*<>*/cb=/*<>*/h(o([0,[0,ez]],0),ew,eA),eC=cb[2];/*<>*/return q([0,ey],/*<>*/i(l[15],[0,eB[6],[0,cb[1][6],0]]),eC);default:/*<>*/var eD=a[2],eE=a[1],/*<>*/cc=/*<>*/h(o(eF,0),eE,f),cd=cc[2],N=cc[1],/*<>*/ce=/*<>*/i(k[57],eD),cf=ce[2],X=ce[1],/*<>*/eG=/*<>*/h(k[20],m[13][76],cf),/*<>*/eH=[0,[0,N[9]]],/*<>*/eI=l[13],eJ=J(/*<>*/i(w(0)(eI),eH),X,cd)[1],/*<>*/cg=/*<>*/h(k[20],n[189],eJ),/*<>*/ch=/*<>*/E(k[31],function(a,b,c){/*<>*/var d=a[2],e=a[1];/*<>*/return function(a){/*<>*/var -b=a[2];/*<>*/return[0,/*<>*/h(s[37],e,[0,a[1],0]),b]/*<>*/}(/*<>*/h(y(c)([0,p],0),b,d))/*<>*/},[0,0,cd],cf,cg),aq=ch[2],ci=ch[1],/*<>*/eK=/*<>*/h(k[20],n[aw],ci),/*<>*/eL=/*<>*/h(k[20],n[Y],ci),/*<>*/eM=/*<>*/i(l[14],g),/*<>*/ar=/*<>*/j(k[29],eM,cg,eL),/*<>*/as=[4,/*<>*/j(B[39],g,eK,eG)],/*<>*/at=N[9];a:{if(typeof +b=a[2];/*<>*/return[0,/*<>*/h(t[37],e,[0,a[1],0]),b]/*<>*/}(/*<>*/h(y(c)([0,p],0),b,d))/*<>*/},[0,0,cd],cf,cg),aq=ch[2],ci=ch[1],/*<>*/eK=/*<>*/h(k[20],n[aw],ci),/*<>*/eL=/*<>*/h(k[20],n[Y],ci),/*<>*/eM=/*<>*/i(l[14],g),/*<>*/ar=/*<>*/j(k[29],eM,cg,eL),/*<>*/as=[4,/*<>*/j(B[39],g,eK,eG)],/*<>*/at=N[9];a:{if(typeof at!=="number"&&0===at[0]){/*<>*/var eR=l[13],/*<>*/eS=w(0)(eR),/*<>*/eT=J(function(b){var c=0;return function(a){var -d=a;return eS(c,b,d)}},X,aq)[1],/*<>*/eU=/*<>*/i(/*<>*/i(k[20],n[190]),eT),au=/*<>*/i(/*<>*/h(t[45],eV,g),eU);break a}var +d=a;return eS(c,b,d)}},X,aq)[1],/*<>*/eU=/*<>*/i(/*<>*/i(k[20],n[190]),eT),au=/*<>*/i(/*<>*/h(s[45],eV,g),eU);break a}var au=[0,at]}if(au)/*<>*/var eN=au[1],/*<>*/cj=function(a,b){/*<>*/ /*<>*/var c=/*<>*/h(k[58],a,ar);/*<>*/return/*<>*/j(k[26],function(a,b){/*<>*/var @@ -436062,17 +436060,17 @@ f=b[2],g=b[1],d=a[2],k=a[1],/*<>*/o=/*< var cl=J(function(a){/*<>*/var b=a[2],c=a[1],/*<>*/d=[0,[0,N[9]]];/*<>*/return/*<>*/h(w(0)(b),d,c)/*<>*/},/*<>*/h(k[58],X,ar),aq)[2],ck=as;/*<>*/ /*<>*/var -eQ=/*<>*/h(s[37],[0,N[6],0],ar);/*<>*/return F(ck,/*<>*/i(l[15],eQ),cl)}/*<>*/var/*<>*/dy=/*<>*/i(m[13][90],ai),/*<>*/bn=/*<>*/h(o([0,/*<>*/j(r[19],g,p,dy)],0),ai,f),bo=bn[1],dz=bn[2],/*<>*/bp=/*<>*/h(t[33],g,bo[9]),aj=bp[1],dA=bp[2],/*<>*/bq=/*<>*/h(o([0,[0,aj]],0),bm,dz),br=bq[1],dB=bq[2],/*<>*/bs=/*<>*/i(v[18],br[1][1]),/*<>*/dD=bs?1-/*<>*/j(t[46],g,aj,dC):bs,dE=dD?[3,aj]:[0,dA];/*<>*/return q(dE,/*<>*/i(l[15],[0,bo[6],[0,br[6],0]]),dB)}function +eQ=/*<>*/h(t[37],[0,N[6],0],ar);/*<>*/return F(ck,/*<>*/i(l[15],eQ),cl)}/*<>*/var/*<>*/dy=/*<>*/i(m[13][90],ai),/*<>*/bn=/*<>*/h(o([0,/*<>*/j(r[19],g,p,dy)],0),ai,f),bo=bn[1],dz=bn[2],/*<>*/bp=/*<>*/h(s[33],g,bo[9]),aj=bp[1],dA=bp[2],/*<>*/bq=/*<>*/h(o([0,[0,aj]],0),bm,dz),br=bq[1],dB=bq[2],/*<>*/bs=/*<>*/i(v[18],br[1][1]),/*<>*/dD=bs?1-/*<>*/j(s[46],g,aj,dC):bs,dE=dD?[3,aj]:[0,dA];/*<>*/return q(dE,/*<>*/i(l[15],[0,bo[6],[0,br[6],0]]),dB)}function P(F,c,D,C,e,f,g){var l=e?e[1]:2,a=f[2],af=f[1];function d(a,b,c,d){/*<>*/ /*<>*/var e=/*<>*/co(n[cp],f,b,D,l,C,[1,a],c);/*<>*/return[0,e,G(af,[1,e],d)]/*<>*/}function -b(a,b){/*<>*/return d(a,c,b,g)/*<>*/}/*<>*/var/*<>*/ag=[0,/*<>*/i(m[12][18],f),0],/*<>*/x=/*<>*/h(s[37],ag,C);function +b(a,b){/*<>*/return d(a,c,b,g)/*<>*/}/*<>*/var/*<>*/ag=[0,/*<>*/i(m[12][18],f),0],/*<>*/x=/*<>*/h(t[37],ag,C);function ah(a,b,c,d,e,f){/*<>*/return P(F,a,b,c,d,e,f)}function o(d){/*<>*/return function(a,b,c){/*<>*/return ah(d,D,x,a,b,c)}}/*<>*/var/*<>*/ai=F?0:2,/*<>*/p=[0,ai];/*<>*/function H(a,b){/*<>*/return/*<>*/h(k[31],function(a,b,c){/*<>*/var d=a[4],e=a[3],f=a[2];/*<>*/return function(a){/*<>*/var -b=a[1],c=a[2],/*<>*/d=/*<>*/h(s[37],e,[0,b[10],0]),/*<>*/g=/*<>*/h(s[37],f,[0,b[9],0]);/*<>*/return[0,b[3],g,d,c]/*<>*/}(o(a[1])([0,c],b,d))/*<>*/},[0,a,0,0,b])/*<>*/}/*<>*/function +b=a[1],c=a[2],/*<>*/d=/*<>*/h(t[37],e,[0,b[10],0]),/*<>*/g=/*<>*/h(t[37],f,[0,b[9],0]);/*<>*/return[0,b[3],g,d,c]/*<>*/}(o(a[1])([0,c],b,d))/*<>*/},[0,a,0,0,b])/*<>*/}/*<>*/function I(a){/*<>*/return b(a,2)/*<>*/}/*<>*/if(typeof a==="number")/*<>*/switch(a){case 0:/*<>*/return I([0,p]);case @@ -436099,15 +436097,15 @@ b=a[1];return a[2]?[10,b,U(a[2])]:b/*<>* 11:/*<>*/var aM=a[1],/*<>*/V=o(c)([0,l],aM,g),A=V[1];/*<>*/return d([0,A[9]],A[3],A[10],V[2]);case 12:/*<>*/var -W=a[1],aN=a[2],/*<>*/X=/*<>*/i(m[12][30],W),/*<>*/aO=[0,/*<>*/j(r[19],c,l,X)],/*<>*/Y=o(c)(aO,W,g),aP=Y[2],/*<>*/Z=/*<>*/h(t[33],c,Y[1][9]),_=Z[2],/*<>*/aQ=[0,[0,Z[1]]],/*<>*/$=o(c)(aQ,aN,aP),aa=$[1],aR=$[2],/*<>*/aS=/*<>*/aW(R[17],c,l,X,aa[10],[0,_]);/*<>*/return d([0,_],aa[3],aS,aR);default:/*<>*/var +W=a[1],aN=a[2],/*<>*/X=/*<>*/i(m[12][30],W),/*<>*/aO=[0,/*<>*/j(r[19],c,l,X)],/*<>*/Y=o(c)(aO,W,g),aP=Y[2],/*<>*/Z=/*<>*/h(s[33],c,Y[1][9]),_=Z[2],/*<>*/aQ=[0,[0,Z[1]]],/*<>*/$=o(c)(aQ,aN,aP),aa=$[1],aR=$[2],/*<>*/aS=/*<>*/aW(R[17],c,l,X,aa[10],[0,_]);/*<>*/return d([0,_],aa[3],aS,aR);default:/*<>*/var aT=a[1],/*<>*/ab=u(c,0,x,a[2],g),ac=ab[1],aU=ab[2],/*<>*/aV=[0,[0,ac[7]]],/*<>*/ad=o(c)(aV,aT,aU),ae=ad[1];/*<>*/return d([0,ac[7]],ae[3],ae[10],ad[2])}}function u(f,b,c,d,e){/*<>*/var o=b?b[1]:0,a=d[2],D=d[1];function g(a){/*<>*/ /*<>*/var -b=/*<>*/E(n[204],d,f,c,o);/*<>*/return[0,b,G(D,[2,b],a)]/*<>*/}/*<>*/var/*<>*/F=[0,/*<>*/i(m[11][24],d),0],/*<>*/l=/*<>*/h(s[37],F,c);function +b=/*<>*/E(n[204],d,f,c,o);/*<>*/return[0,b,G(D,[2,b],a)]/*<>*/}/*<>*/var/*<>*/F=[0,/*<>*/i(m[11][24],d),0],/*<>*/l=/*<>*/h(t[37],F,c);function H(a,b,c,d){/*<>*/return u(f,a,b,c,d)}function -t(c){/*<>*/return function(a,b){/*<>*/return H(c,l,a,b)}}/*<>*/ /*<>*/var -p=t(M);/*<>*/if(typeof +s(c){/*<>*/return function(a,b){/*<>*/return H(c,l,a,b)}}/*<>*/ /*<>*/var +p=s(M);/*<>*/if(typeof a!=="number")/*<>*/switch(a[0]){case 1:/*<>*/return g(K(f,l,e,a[1])[2]);case 5:var @@ -436118,7 +436116,7 @@ y=a[2],L=a[1],/*<>*/B=/*<>*/ /*<>*/var -O=t([0,C])(L,e)[2];/*<>*/return g(t(S)(y,O)[2]);case +O=s([0,C])(L,e)[2];/*<>*/return g(s(S)(y,O)[2]);case 9:var P=a[1],/*<>*/Q=/*<>*/h(m[11][30],f,d);/*<>*/return g(/*<>*/j(k[26],function(a,b){/*<>*/return x(f,l,Q,a,b)},[0,e,0],P)[1]);case 10:var @@ -436135,7 +436133,7 @@ Y=a[2],Z=w[1],/*<>*/_=[0,Z,/*<>*/var a=c[2],g=c[1];function f(a){/*<>*/ /*<>*/var -d=/*<>*/j(n[205],c,e,b);/*<>*/return[0,d,G(g,[3,d],a)]/*<>*/}/*<>*/var/*<>*/k=[0,/*<>*/i(m[10][18],c),0],/*<>*/l=/*<>*/h(s[37],k,b);/*<>*/if(typeof +d=/*<>*/j(n[205],c,e,b);/*<>*/return[0,d,G(g,[3,d],a)]/*<>*/}/*<>*/var/*<>*/k=[0,/*<>*/i(m[10][18],c),0],/*<>*/l=/*<>*/h(t[37],k,b);/*<>*/if(typeof a!=="number"&&1===a[0])/*<>*/return f(K(e,l,d,a[1])[2]);/*<>*/return f(d)/*<>*/}function x(n,m,c,d,e){/*<>*/var a=d[2],g=d[1];function @@ -436146,42 +436144,40 @@ i=e[3],f=e[1],/*<>*/o=[0,e[2],[4,f]],p=/ q=i[1],l=b(0)(q,j)[2];else var l=j;/*<>*/return[0,l,[0,f,a]]/*<>*/}/*<>*/var -Z=/*<>*/j(V[1],0,U,function(a,b){/*<>*/return O(a,0,0,0,b,v[15][1])[2]/*<>*/});o.caml_register_global(64,[0,[0,e,function(a){/*<>*/return/*<>*/j(D[143],C,e,a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][45],n[171],a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][44],n[172],a)/*<>*/},function(a){/*<>*/return h(v[15][47],n[173],a)},function(a){/*<>*/return h(v[15][46],n[174],a)},function(a){/*<>*/return/*<>*/j(v[15][24],function(a,b,c){/*<>*/var/*<>*/d=/*<>*/i(n[197],b),/*<>*/e=d?/*<>*/cn(a,/*<>*/i(n[185],b)):d;return e?[0,a,c]:c/*<>*/},a,0)/*<>*/}],J,G,g,ay,f,p,q,az,aA,w,K,O,P,u,A,x,function(a,b,c){/*<>*/ /*<>*/i(s[46],_);return a[1]?/*<>*/h(Z,b,c):v[15][1]/*<>*/},function(a){/*<>*/return/*<>*/j(v[15][24],function(d,b,c){/*<>*/var/*<>*/a=/*<>*/i(n[186],b),/*<>*/e=/*<>*/i(/*<>*/i(y[7],function(a){/*<>*/return[0,d,a]/*<>*/}),a),/*<>*/f=/*<>*/i(y[15],e);/*<>*/return/*<>*/h(s[37],f,c)/*<>*/},a,0)/*<>*/}],"Haz3lcore__Statics");return/*<>*/}(globalThis)); +Z=/*<>*/j(V[1],0,U,function(a,b){/*<>*/return O(a,0,0,0,b,v[15][1])[2]/*<>*/});o.caml_register_global(63,[0,[0,e,function(a){/*<>*/return/*<>*/j(D[143],C,e,a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][45],n[171],a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][44],n[172],a)/*<>*/},function(a){/*<>*/return h(v[15][47],n[173],a)},function(a){/*<>*/return h(v[15][46],n[174],a)},function(a){/*<>*/return/*<>*/j(v[15][24],function(a,b,c){/*<>*/var/*<>*/d=/*<>*/i(n[197],b),/*<>*/e=d?/*<>*/cn(a,/*<>*/i(n[185],b)):d;return e?[0,a,c]:c/*<>*/},a,0)/*<>*/}],J,G,g,ay,f,p,q,az,aA,w,K,O,P,u,A,x,function(a,b,c){/*<>*/return a[1]?/*<>*/h(Z,b,c):v[15][1]/*<>*/},function(a){/*<>*/return/*<>*/j(v[15][24],function(d,b,c){/*<>*/var/*<>*/a=/*<>*/i(n[186],b),/*<>*/e=/*<>*/i(/*<>*/i(y[7],function(a){/*<>*/return[0,d,a]/*<>*/}),a),/*<>*/f=/*<>*/i(y[15],e);/*<>*/return/*<>*/h(t[37],f,c)/*<>*/},a,0)/*<>*/}],"Haz3lcore__Statics");return/*<>*/}(globalThis)); -//# 6454 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6452 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -G="\xc2\xb7",F="%a",E=-1055309145,D=143,C="()",l=a.jsoo_runtime,r=l.caml_get_public_method;/*<>*/function -e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function -f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):l.caml_call_gen(a,[b,c])}/*<>*/function -i(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):l.caml_call_gen(a,[b,c,d])}var -_=undefined,b=l.caml_get_global_data(),d=b.Haz3lcore__JsUtil,o=b.Haz3lcore__Form,m=b.Util__StringUtil,p=b.Stdlib__Format,j=b.Stdlib,n=b.Virtual_dom__Vdom,h=b.Virtual_dom__Node,y=b.Stdlib__List,k=b.Virtual_dom__Effect,c=b.Util,Y=C,Z=[0,[15,0],F],W=C,X=[0,[15,0],F],U=[0,"cols",0],V=[0,"projector-wrapper",0],S=G,T=G,R="textarea: on_input",N="textarea: keydown",Q=[1,1],P=[1,0],L="TextArea: not string literal",J="id",O=b.Haz3lcore__Key,K=b.Haz3lcore__Piece,I=b.Stdlib__String,H=b.Haz3lcore__Id;function -g(a){/*<>*/ /*<>*/var -b=function(a){/*<>*/return/*<>*/i(I[16],a,0,8)/*<>*/}(/*<>*/f(H[7],0,a));/*<>*/return/*<>*/f(j[28],J,b)/*<>*/}function +D="%a",C=-1055309145,B=143,A="()",i=a.jsoo_runtime,r=i.caml_get_public_method;/*<>*/function +e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function +g(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):i.caml_call_gen(a,[b,c])}/*<>*/function +j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):i.caml_call_gen(a,[b,c,d])}var +U=undefined,b=i.caml_get_global_data(),d=b.Haz3lcore__JsUtil,n=b.Haz3lcore__Form,m=b.Util__StringUtil,o=b.Stdlib__Format,k=b.Virtual_dom__Node,p=b.Stdlib,l=b.Virtual_dom__Vdom,h=b.Virtual_dom__Effect,c=b.Util,S=A,T=[0,[15,0],D],Q=A,R=[0,[15,0],D],N="\xc2\xb7",O=[0,"cols",0],P=[0,"wrapper",0],M=[1,1],L=[1,0],I="TextArea: not string literal",G="id",K=b.Haz3lcore__Key,H=b.Haz3lcore__Piece,F=b.Stdlib__String,E=b.Haz3lcore__Id;function +f(a){/*<>*/ /*<>*/var +b=function(a){/*<>*/return/*<>*/j(F[16],a,0,8)/*<>*/}(/*<>*/g(E[7],0,a));/*<>*/return/*<>*/g(p[28],G,b)/*<>*/}function s(a){/*<>*/if(0===a[0]){var b=a[1][2];if(b&&!b[2])/*<>*/return[0,/*<>*/e(m[21],b[1])]}/*<>*/return 0/*<>*/}function t(a,b){/*<>*/ /*<>*/var -c=/*<>*/e(m[20],b);/*<>*/return function(a){/*<>*/return/*<>*/f(K[51],a,0)/*<>*/}(/*<>*/e(/*<>*/e(o[107],a),c))/*<>*/}function +c=/*<>*/e(m[20],b);/*<>*/return function(a){/*<>*/return/*<>*/g(H[51],a,0)/*<>*/}(/*<>*/e(/*<>*/e(n[107],a),c))/*<>*/}function q(a){/*<>*/ /*<>*/var -b=s(a);return b?b[1]:/*<>*/e(j[2],L)/*<>*/}function -M(a){/*<>*/var +b=s(a);return b?b[1]:/*<>*/e(p[2],I)/*<>*/}function +J(a){/*<>*/var b=6;/*<>*/return function(a){/*<>*/return t(b,a)}(a)/*<>*/}function -u(a){/*<>*/return[2,M(/*<>*/e(o[52],a))]/*<>*/}function -v(a,b,c){/*<>*/ /*<>*/e(j[46],N);/*<>*/var/*<>*/l=/*<>*/f(O[28],1,c),/*<>*/m=g(a),/*<>*/n=/*<>*/e(d[28][19],m),/*<>*/o=/*<>*/e(d[28][25],n),/*<>*/p=g(a),/*<>*/q=/*<>*/e(d[28][19],p),/*<>*/s=/*<>*/e(d[28][24],q),/*<>*/i=l[1];a:if(0===i[0]){var -h=i[1];b:if(h!=="ArrowDown"){if(h!=="ArrowLeft"){if(h==="ArrowRight")break b;if(h!=="ArrowUp")break a}if(!s)break a;/*<>*/ /*<>*/var -t=g(a);/*<>*/(function(a,b){/*<>*/a.blur();return}(/*<>*/e(d[1],t),function(a){/*<>*/return/*<>*/e(r(a,E,53),a)/*<>*/}));/*<>*/var -u=[0,k[17],0],/*<>*/v=[0,/*<>*/e(b,P),u];/*<>*/return[0,k[2],v]}if(o){/*<>*/ /*<>*/var -w=g(a);/*<>*/(function(a,b){/*<>*/a.blur();return}(/*<>*/e(d[1],w),function(a){/*<>*/return/*<>*/e(r(a,E,54),a)/*<>*/}));/*<>*/var -x=[0,k[17],0],/*<>*/y=[0,/*<>*/e(b,Q),x];/*<>*/return[0,k[2],y]}}/*<>*/return k[17]/*<>*/}function -w(b,d,c){/*<>*/var/*<>*/a=[0,/*<>*/e(h[5],c),0],f=[0,/*<>*/e(n[1][52],function(a,b){/*<>*/ /*<>*/e(j[46],R);/*<>*/ /*<>*/var -c=[0,/*<>*/e(d,u(b)),0];/*<>*/return[0,k[2],c]/*<>*/}),0],l=[0,/*<>*/e(n[1][74],function(a){/*<>*/return v(b,d,a)}),f],/*<>*/m=g(b),/*<>*/o=[0,[0,/*<>*/e(n[1][23],m),l]];/*<>*/return/*<>*/i(h[29],0,o,a)/*<>*/}function -x(a){/*<>*/var/*<>*/b=/*<>*/f(y[11],a,function(a){/*<>*/var -b=[0,/*<>*/e(h[5],S),0];/*<>*/return[0,/*<>*/i(h[52],0,0,0),b]/*<>*/}),/*<>*/c=/*<>*/e(y[15],b),/*<>*/d=[0,/*<>*/e(h[5],T),0];/*<>*/return/*<>*/f(j[37],d,c)/*<>*/}function -z(a,b,c,d){/*<>*/var/*<>*/k=q(b[2]),/*<>*/g=/*<>*/e(o[51],k),/*<>*/l=[0,w(b[1],d,g),0],/*<>*/p=x(/*<>*/e(m[19],g)),/*<>*/r=/*<>*/f(j[37],p,l),/*<>*/s=[0,[0,/*<>*/e(n[1][16],U),0]],/*<>*/t=[0,/*<>*/i(h[14],0,s,r),0],/*<>*/u=[0,[0,/*<>*/e(n[1][16],V),0]];/*<>*/return/*<>*/i(h[14],0,u,t)/*<>*/}/*<>*/function -A(a,b){/*<>*/return/*<>*/f(p[13],a,W)/*<>*/}/*<>*/function -B(a,b){/*<>*/return/*<>*/f(p[13],a,Y)/*<>*/}l.caml_register_global(35,[0,g,s,t,q,u,v,w,x,z,[0,A,function(a){/*<>*/return/*<>*/i(p[D],X,A,a)/*<>*/},c[3],c[4],c[47],c[63],B,function(a){/*<>*/return/*<>*/i(p[D],Z,B,a)/*<>*/},c[3],c[4],c[47],c[63],0,function(a){/*<>*/return 1/*<>*/},1,z,function(a,b){/*<>*/var/*<>*/d=q(b[2]),/*<>*/c=/*<>*/e(o[51],d),f=2+/*<>*/e(m[17],c)|0;/*<>*/return[1,[0,/*<>*/e(m[18],c),f]]/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/var -b=a[1],c=a[2],/*<>*/f=g(b);/*<>*/(function(a,b){/*<>*/a.focus();return}(/*<>*/e(d[1],f),function(a){/*<>*/return/*<>*/e(r(a,76111832,55),a)/*<>*/}));if(!c)/*<>*/return 0;/*<>*/var/*<>*/h=g(b),/*<>*/i=/*<>*/e(d[28][19],h);/*<>*/return/*<>*/e(d[28][26],i)/*<>*/}]],"Haz3lcore__TextAreaCore");return/*<>*/}(globalThis)); - -//# 6488 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +u(a){/*<>*/return[2,J(/*<>*/e(n[52],a))]/*<>*/}function +v(a,b,c){/*<>*/var/*<>*/k=/*<>*/g(K[28],1,c),/*<>*/l=f(a),/*<>*/m=/*<>*/e(d[27][19],l),/*<>*/n=/*<>*/e(d[27][25],m),/*<>*/o=f(a),/*<>*/p=/*<>*/e(d[27][19],o),/*<>*/q=/*<>*/e(d[27][24],p),/*<>*/j=k[1];a:if(0===j[0]){var +i=j[1];b:if(i!=="ArrowDown"){if(i!=="ArrowLeft"){if(i==="ArrowRight")break b;if(i!=="ArrowUp")break a}if(!q)break a;/*<>*/ /*<>*/var +s=f(a);/*<>*/(function(a,b){/*<>*/a.blur();return}(/*<>*/e(d[1],s),function(a){/*<>*/return/*<>*/e(r(a,C,53),a)/*<>*/}));/*<>*/var +t=[0,h[17],0],/*<>*/u=[0,/*<>*/e(b,L),t];/*<>*/return[0,h[2],u]}if(n){/*<>*/ /*<>*/var +v=f(a);/*<>*/(function(a,b){/*<>*/a.blur();return}(/*<>*/e(d[1],v),function(a){/*<>*/return/*<>*/e(r(a,C,54),a)/*<>*/}));/*<>*/var +w=[0,h[17],0],/*<>*/x=[0,/*<>*/e(b,M),w];/*<>*/return[0,h[2],x]}}/*<>*/return h[17]/*<>*/}function +w(b,d,c){/*<>*/var/*<>*/a=[0,/*<>*/e(k[5],c),0],g=[0,/*<>*/e(l[1][52],function(a,b){/*<>*/ /*<>*/var +c=[0,/*<>*/e(d,u(b)),0];/*<>*/return[0,h[2],c]/*<>*/}),0],i=[0,/*<>*/e(l[1][74],function(a){/*<>*/return v(b,d,a)}),g],/*<>*/m=f(b),/*<>*/n=[0,[0,/*<>*/e(l[1][23],m),i]];/*<>*/return/*<>*/j(k[29],0,n,a)/*<>*/}function +x(a,b,c,d){/*<>*/var/*<>*/f=q(b[2]),/*<>*/h=/*<>*/e(n[51],f),/*<>*/i=[0,w(b[1],d,h),0],/*<>*/m=[0,/*<>*/e(k[5],N),0],/*<>*/o=/*<>*/g(p[37],m,i),/*<>*/r=[0,[0,/*<>*/e(l[1][16],O),0]],/*<>*/s=[0,/*<>*/j(k[14],0,r,o),0],/*<>*/t=[0,[0,/*<>*/e(l[1][16],P),0]];/*<>*/return/*<>*/j(k[14],0,t,s)/*<>*/}/*<>*/function +y(a,b){/*<>*/return/*<>*/g(o[13],a,Q)/*<>*/}/*<>*/function +z(a,b){/*<>*/return/*<>*/g(o[13],a,S)/*<>*/}i.caml_register_global(31,[0,f,s,t,q,u,v,w,x,[0,y,function(a){/*<>*/return/*<>*/j(o[B],R,y,a)/*<>*/},c[3],c[4],c[47],c[63],z,function(a){/*<>*/return/*<>*/j(o[B],T,z,a)/*<>*/},c[3],c[4],c[47],c[63],0,function(a){/*<>*/return 1/*<>*/},1,x,function(a,b){/*<>*/var/*<>*/d=q(b[2]),/*<>*/c=/*<>*/e(n[51],d),f=2+/*<>*/e(m[17],c)|0;/*<>*/return[1,[0,/*<>*/e(m[18],c),f]]/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/var +b=a[1],c=a[2],/*<>*/g=f(b);/*<>*/(function(a,b){/*<>*/a.focus();return}(/*<>*/e(d[1],g),function(a){/*<>*/return/*<>*/e(r(a,76111832,55),a)/*<>*/}));if(!c)/*<>*/return 0;/*<>*/var/*<>*/h=f(b),/*<>*/i=/*<>*/e(d[27][19],h);/*<>*/return/*<>*/e(d[27][26],i)/*<>*/}]],"Haz3lcore__TextAreaCore");return/*<>*/}(globalThis)); + +//# 6484 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var z="z",ah="<2>",y="@ ",ag=" =",af="",ae="@]",ai="@[%s =@ ",n=139,x="syntax_map",h=a.jsoo_runtime,ad=h.caml_equal;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -436191,10 +436187,10 @@ bg(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):h.caml_call_ c=h.caml_get_global_data(),g=c.Haz3lcore__Piece,f=c.Haz3lcore__ZipperBase,i=c.Stdlib__List,k=c.Haz3lcore__Id,j=c.Stdlib__Format,o=c.Haz3lcore__Segment,R=c.Util__ListUtil,u=c.Stdlib__Option,t=c.Haz3lcore__Siblings,s=c.Stdlib__String,b=c.Haz3lcore__ProjectorBase,a0=[0,[18,[1,[0,[11,ah,0],ah]],[11,"{ ",0]],"@[<2>{ "],a1=z,a2=[0,[18,[1,[0,0,af]],[2,0,[11,ag,[17,[0,y,1,0],0]]]],ai],a3=[0,[17,0,0],ae],a4=[0,[12,59,[17,[0,y,1,0],0]],";@ "],a5=x,a6=[0,[18,[1,[0,0,af]],[2,0,[11,ag,[17,[0,y,1,0],0]]]],ai],a7=[0,[17,0,0],ae],a8=[0,[17,[0,y,1,0],[12,125,[17,0,0]]],"@ }@]"],a9=[0,[15,0],"%a"],bc=[0,x],bd=[0,z],a$=x,ba=z,aY=[0,0,0],a_="src/haz3lcore/zipper/Projector.re.proj_ret",bb=c.Sexplib0__Sexp_conv_record,aZ=c.Haz3lcore__Mold,aX=c.Stdlib,aR=c.Haz3lcore__FoldCore,aS=c.Haz3lcore__InfoCore,aT=c.Haz3lcore__CheckboxCore,aU=c.Haz3lcore__SliderCore,aV=c.Haz3lcore__SliderFCore,aW=c.Haz3lcore__TextAreaCore,r=b[13],F=b[26],G=b[28],H=b[29],l=b[39];function A(a){/*<>*/switch(a){case 0:return d(l,aR[1]);case -1:return d(l,aS[7]);case +1:return d(l,aS[5]);case 2:return d(l,aT[9]);case 3:return d(l,aU[4]);case -4:return d(l,aV[5]);default:return d(l,aW[10])}/*<>*/}function +4:return d(l,aV[5]);default:return d(l,aW[9])}/*<>*/}function I(a,b){/*<>*/ /*<>*/var c=A(a[1]);/*<>*/return/*<>*/e(c[5],a[2],b)/*<>*/}function J(a,b){/*<>*/ /*<>*/var @@ -436263,7 +436259,7 @@ b=a[1],/*<>*/c=[0,[1,[0,bc,[0,/*<>*/f=/*<>*/e(D[9],function(a){/*<>*/return Z(c,b,a)},a);/*<>*/return[0,f,p[1]]/*<>*/}],[0,_,E,$,aa,ab,ac,function(f,b,c){function a(a){/*<>*/return _(function(a){/*<>*/var/*<>*/b=/*<>*/d(f,a),/*<>*/c=/*<>*/d(g[30],a);/*<>*/return/*<>*/d(/*<>*/d(g[50],c),b)/*<>*/},b,a)/*<>*/}/*<>*/return $(c,b)?ab(a,c):aa(c,b)?ac(a,c):/*<>*/e(D[9],a,c)/*<>*/}]],"Haz3lcore__Projector");return/*<>*/}(globalThis)); -//# 6571 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6567 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var F="ByChar",aR="up",aQ="src/haz3lcore/zipper/Zipper.re.chunkiness",E="Down",V="<2>",aW="@ ",aV="left",aP="byChar",aO="@])",aU="%a",C="ByToken",B="MonoByChar",aT="src/haz3lcore/zipper/Zipper.re.planar",aN="monoByChar",ai="src/haz3lcore/zipper/Zipper.re",D="Up",aM=143,U=139,aL="byToken",aS="down",n=-976970511,m=848054398,u="Left",aJ="right",t="Right",aK="base_point",q=a.jsoo_runtime,ah=q.caml_maybe_attach_backtrace;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}/*<>*/function @@ -436411,7 +436407,7 @@ b=ad(0,a);/*<>*/return/*<>*/e(al,a);/*<>*/return/*<>*/e(aG[53],b)/*<>*/},function(a){/*<>*/return/*<>*/e(ak,/*<>*/e(aG[43],a))/*<>*/},S,function(a,b,c){/*<>*/var d=a[5],e=a[4],h=a[3],i=a[2];/*<>*/return[0,/*<>*/f(g[20],b,c),i,h,e,d]/*<>*/},aH,aI,T,function(a){/*<>*/return T(bC,bB,a)},function(a){/*<>*/return T(bE,bD,a)},function(a){/*<>*/return T(bG,bF,a)}],"Haz3lcore__Zipper");return/*<>*/}(globalThis)); -//# 6720 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6716 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -436419,7 +436415,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__MetaVar");return/*<>*/}(globalThis)); -//# 6729 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6725 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="InVarHole",G="<2>",F="notInVarHole",E="%a",D="@,",B="free",C="src/haz3lcore/dynamics/VarErrStatus.re.HoleReason.t",n="NotInVarHole",A="src/haz3lcore/dynamics/VarErrStatus.re.t",m="Free",y="inVarHole",z=143,v=139,g=848054398,l=-976970511,k=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -436458,13 +436454,13 @@ m=k[2];if(m&&!m[2]){/*<>*/var s=m[1],/*<>*/u=/*<>*/d(h[5],k[1]);/*<>*/return[0,u,/*<>*/d(p[5],s)]}}/*<>*/return/*<>*/t(e[4],j,i,a)}if(i===n)return b[2]?/*<>*/c(e[3],j,a):0}else if(g===r)/*<>*/return/*<>*/c(e[6],j,a)}}}/*<>*/return/*<>*/c(e[8],j,a)/*<>*/},function(a){/*<>*/if(!a)/*<>*/return T;/*<>*/var b=a[2],/*<>*/c=/*<>*/d(h[6],a[1]);/*<>*/return[0,g,[0,S,[0,c,[0,/*<>*/d(p[6],b),0]]]]/*<>*/}],"Haz3lcore__VarErrStatus");return/*<>*/}(globalThis)); -//# 6769 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6765 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;/*<>*/function f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):d.caml_call_gen(a,[b,c])}var e=d.caml_get_global_data(),c=e.Haz3lcore__Typ,b=e.Haz3lcore__VarMap;d.caml_register_global(2,[0,function(a){/*<>*/return/*<>*/f(b[3],c[13],a)/*<>*/},function(a){/*<>*/return/*<>*/f(b[4],c[11],a)/*<>*/},b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18]],"Haz3lcore__VarCtx");return/*<>*/}(globalThis)); -//# 6776 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6772 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ad="src/haz3lcore/dynamics/VarBstMap.re.Inner.binding",v="<2>",r="@ ",o="rev_order",_=" =",ac="%a",ab="src/haz3lcore/dynamics/VarBstMap.re.Ordered.t_",D="",aa=963043957,n="map",Z=";@ ",Y="@]",$="@[%s =@ ",X=143,j=139,w=848054398,l=a.jsoo_runtime,W=l.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -436552,7 +436548,7 @@ e=a[1],/*<>*/b=/*<>*/c=s(e,b);return c?[0,b,c[1]]:u(0)/*<>*/}),b)/*<>*/},function(a){/*<>*/var/*<>*/b=S(a),/*<>*/c=/*<>*/d(/*<>*/d(f[20],function(a){/*<>*/return[0,a[1],0]/*<>*/}),a);/*<>*/return[0,b,/*<>*/d(f[10],c)]/*<>*/},function(c,b){/*<>*/return V(function(a){/*<>*/var b=a[1];/*<>*/return 1-/*<>*/e(f[34],function(a){/*<>*/return a==b?1:0/*<>*/},c)/*<>*/},b)/*<>*/}]],"Haz3lcore__VarBstMap");return/*<>*/}(globalThis)); -//# 6865 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6861 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="NotInHole",I="<2>",H="%a",n="TypeInconsistent",o="InHole",G="inHole",F="@,",m="WrongLength",E="src/haz3lcore/dynamics/ErrStatus.re.HoleReason.t",C="notInHole",D=143,w=139,g=848054398,i=-976970511,B="src/haz3lcore/dynamics/ErrStatus.re.t",A="typeInconsistent",z="wrongLength",h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -436592,7 +436588,7 @@ m=k[2];if(m&&!m[2]){/*<>*/var r=m[1],/*<>*/t=/*<>*/d(j[5],k[1]);/*<>*/return[0,t,/*<>*/d(s[5],r)]}}/*<>*/return/*<>*/u(e[4],l,h,a)}if(h===p)return b[2]?/*<>*/c(e[3],l,a):0}else if(g===q)/*<>*/return/*<>*/c(e[6],l,a)}}}/*<>*/return/*<>*/c(e[8],l,a)/*<>*/},function(a){/*<>*/if(!a)/*<>*/return Y;/*<>*/var b=a[2],/*<>*/c=/*<>*/d(j[6],a[1]);/*<>*/return[0,g,[0,X,[0,c,[0,/*<>*/d(s[6],b),0]]]]/*<>*/}],"Haz3lcore__ErrStatus");return/*<>*/}(globalThis)); -//# 6906 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6902 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -436600,7 +436596,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),d=f.Stdlib__Format,b=f.Util,g=[0,[4,0,0,0,0],"%d"],h=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/i(d[139],a,g)/*<>*/}e.caml_register_global(4,[0,c,function(a){/*<>*/return/*<>*/j(d[143],h,c,a)/*<>*/},b[16],b[15],b[68],b[52]],"Haz3lcore__MetaVarInst");return/*<>*/}(globalThis)); -//# 6915 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6911 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aq="listLit",_="%S",M="BoolLit",ay="boolLit",ap="ap",L="Var",ao="badConstructor",K="StringLit",ad="@[<2>[",b="<2>",o="@ ",ax="stringLit",F="@])",J="Constructor",V="Cons",R="NonEmptyHole",u=",@ ",aw="intLit",s="@,",av="tuple",ac="@,]@]",U="Ap",E="))",au="var",as="constructor",at="nonEmptyHole",T="InvalidText",an="emptyHole",ab=";@ ",S="EmptyHole",Q="BadConstructor",am="wild",I="FloatLit",al="cons",ae="src/haz3lcore/dynamics/DHPat.re.t",H="@,))@]",g=139,P="ListLit",q=-976970511,r=848054398,G="Tuple",O="Wild",ak="floatLit",D="IntLit",ar="invalidText",C=a.jsoo_runtime,B=C.caml_string_compare,$=C.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):C.caml_call_gen(a,[b])}/*<>*/function @@ -436788,11 +436784,11 @@ f=b[1],/*<>*/g=Y(b[2]),/*<>*/d(w[20],Y,b[1]);/*<>*/return/*<>*/c(w[15],i);case 13:b=b[2];continue}/*<>*/return 0}/*<>*/}C.caml_register_global(187,[0,v,function(a){/*<>*/return/*<>*/j(f[143],bj,v,a)/*<>*/},x,y,z,A,function(a){/*<>*/if(a&&a[2])/*<>*/return[11,a];/*<>*/return/*<>*/c(aa[2],bQ)/*<>*/},Z,Y],"Haz3lcore__DHPat");return/*<>*/}(globalThis)); -//# 7104 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7100 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id;c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19]],"Haz3lcore__EnvironmentId");return/*<>*/}(globalThis)); -//# 7109 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7105 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -436800,7 +436796,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),d=f.Stdlib__Format,b=f.Util,g=[0,[4,0,0,0,0],"%d"],h=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/i(d[139],a,g)/*<>*/}e.caml_register_global(4,[0,c,function(a){/*<>*/return/*<>*/j(d[143],h,c,a)/*<>*/},b[16],b[15],b[68],b[52]],"Haz3lcore__HoleInstanceId");return/*<>*/}(globalThis)); -//# 7118 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7114 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="invalidOfString",w="negativeExponent",v="indexOutOfBounds",n="NegativeExponent",m="OutOfFuel",l="DivideByZero",u="src/haz3lcore/dynamics/InvalidOperationError.re.t",t="outOfFuel",k="InvalidOfString",s="divideByZero",j=-976970511,g=848054398,i="IndexOutOfBounds",o=a.jsoo_runtime,r=o.caml_string_compare;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):o.caml_call_gen(a,[b,c])}/*<>*/function @@ -436834,7 +436830,7 @@ f=h[2];if(f===l)return e[2]?/*<>*/return Q;case 3:/*<>*/return R;default:/*<>*/return S}/*<>*/}],"Haz3lcore__InvalidOperationError");return/*<>*/}(globalThis)); -//# 7153 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7149 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -436842,7 +436838,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__KeywordID");return/*<>*/}(globalThis)); -//# 7162 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7158 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -436861,7 +436857,7 @@ b=e[1];if(!b)/*<>*/return/*<>*/j=/*<>*/d(f[2],a),/*<>*/g=/*<>*/h(f[15][18],j,i),k=g?g[1]:/*<>*/d(o[2],n);/*<>*/return/*<>*/d(c,k)/*<>*/}]/*<>*/},function(c,b){/*<>*/return[0,function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(c,a);e[1]=[0,f[15][1]];/*<>*/var/*<>*/b=/*<>*/d(c,a),/*<>*/g=[0,b,/*<>*/d(p[4],e[1])];e[1]=0;/*<>*/return m(g)/*<>*/},function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(b,a);/*<>*/var/*<>*/c=k(a),f=c[1];e[1]=[0,c[2]];/*<>*/ /*<>*/var g=/*<>*/d(b,f);e[1]=0;/*<>*/return g/*<>*/}]/*<>*/}],"Haz3lcore__StructureShareSexp");return/*<>*/}(globalThis)); -//# 7182 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7178 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ce="sequence",ad="BoolLit",cJ="src/haz3lcore/dynamics/DH.re.if_consistency",b2="boolLit",b3="src/haz3lcore/dynamics/DH.re.DHFilter.t",ax="Prj",cq="rule",cd="binBoolOp",af="StringLit",cI="listConcat",l="@ ",aY="Rule",cH="invalidOperation",bU="case",b1="stringLit",b0="boundVar",cc="typAp",cG="builtinFun",ac="BuiltinFun",aL="InvalidOperation",ag="Constructor",Y="%a",bZ="test",aK="Cons",cF="apBuiltin",cp="fixF",cb="intLit",aB="FreeVar",n="@,",cE="inconsistentBranches",aI="IfThenElse",aJ="FixF",ab="ConsistentCase",bY="tuple",co="typFun",bX="fun",al="Sequence",R="Filter",aw="Ap",aA="BinFloatOp",cD=963043957,bW="nonEmptyHole",az="TypFun",cC="constructor",aH="InvalidText",av="EmptyHole",au="Closure",aW="Residue",$="FloatLit",ak="Fun",cn="ifThenElse",bT="@[%s =@ ",cB="failedCast",aG="BinBoolOp",z="@,))@]",o=848054398,ae="Tuple",q=-976970511,bf="filter",cz="closure",cA="consistentIf",be="src/haz3lcore/dynamics/DH.re",at="FailedCast",cm="invalidText",b_="cast",b$="listLit",ca="src/haz3lcore/dynamics/DH.re.ClosureEnvironment.Inner.t",a7="%S",aj="pat",cl="consistentCase",bc="%d",bV="ap",as="BinStringOp",ck=")",bb="@[<2>[",cy="binStringOp",b="<2>",ci="freeVar",cj="src/haz3lcore/dynamics/DH.re.DHExp.case",cx="(Some ",b9="binIntOp",aq="BinIntOp",ar="ApBuiltin",ch=" =",T="@])",cw="prj",aF="InconsistentBranches",b8="let",ap="Cast",aa="BoundVar",aE="NonEmptyHole",aX="ConsistentIf",p=",@ ",aU="Case",ao="ListConcat",aD="Test",bd="@,]@]",cv="src/haz3lcore/dynamics/DH.re.Filter.t",b7="src/haz3lcore/dynamics/DH.re.DHExp.t",A="))",ay="act",bt="",cg="inconsistentIf",b6="emptyHole",an="Let",a8=";@ ",cu="None",ct="@]",b5="binFloatOp",cf="cons",cs="src/haz3lcore/dynamics/DH.re.DHExp.rule",am="TypAp",X=143,g=139,aC="ListLit",_="IntLit",b4="residue",aV="InconsistentIf",cr="floatLit",W=a.jsoo_runtime,H=W.caml_equal,L=W.caml_string_compare,Q=W.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):W.caml_call_gen(a,[b])}/*<>*/function @@ -437784,15 +437780,15 @@ c=g===b[1]?1:0,h=b[2],i=c?/*<>*/H(f,h):c;/* bR=[];function bS(c,b){/*<>*/ /*<>*/e(f[g],c,it);/*<>*/ /*<>*/h(I[26],function(a,b){/*<>*/if(a)/*<>*/ /*<>*/e(f[g],c,iu);/*<>*/ /*<>*/d(d(bR[1],c),b);/*<>*/return 1/*<>*/},0,b);/*<>*/return/*<>*/e(f[g],c,iv)/*<>*/}Q(bR,[0,M[1]]);h(Z[2],ix,bw,[0,bS,function(a){/*<>*/return/*<>*/h(f[X],iw,bS,a)/*<>*/},function(a){/*<>*/return/*<>*/e(m[40],M[3],a)/*<>*/},function(a){/*<>*/return/*<>*/e(m[39],M[4],a)/*<>*/},function(a){/*<>*/return e(m[76],M[5],a)},function(a){/*<>*/return e(m[60],M[6],a)},function(a,b){/*<>*/return[0,a,b]/*<>*/}]);W.caml_register_global(634,[0,bg,function(a){/*<>*/return/*<>*/h(f[X],cM,bg,a)/*<>*/},bF,bu,bH,bv,O,G,ah,M,U,bw],"Haz3lcore__DH");return/*<>*/}(globalThis)); -//# 8106 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8102 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[7];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26]],"Haz3lcore__DHExp");return/*<>*/}(globalThis)); -//# 8111 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8107 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[8];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__Environment");return/*<>*/}(globalThis)); -//# 8116 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8112 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ae="invalidBoxedBoolLit",ad="invalidBuiltin",O="%S",al="invalidBoxedFloatLit",ak="freeInvalidVar",P="src/haz3lcore/dynamics/EvaluatorError.re.t",aj="invalidBoxedTuple",C="InvalidBoxedFun",e="<2>",p="@ ",G="CastBVHoleGround",ac="stepDoesNotMatch",B="InvalidBoxedStringLit",F="InvalidBoxedBoolLit",r="@])",ai="invalidBoxedListLit",H="BadPatternMatch",ah="invalidBoxedTypFun",M="@,",E="InvalidBoxedListLit",K="OutOfFuel",aa="invalidProjection",ab="badPatternMatch",A="InvalidBoxedTuple",D="InvalidBoxedIntLit",_="outOfFuel",$="badBuiltinAp",z="InvalidProjection",ag="invalidBoxedStringLit",y="FreeInvalidVar",J="BadBuiltinAp",Z="invalidBoxedIntLit",x="InvalidBuiltin",af="invalidBoxedFun",Y="castBVHoleGround",g=139,m=-976970511,n=848054398,v="InvalidBoxedFloatLit",w="InvalidBoxedTypFun",I="StepDoesNotMatch",s=a.jsoo_runtime,t=s.caml_string_compare;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -437907,7 +437903,7 @@ a==="number")switch(a){case 11:/*<>*/var e=a[2],/*<>*/f=/*<>*/c(o[49],a[1]);/*<>*/return[0,n,[0,bi,[0,f,[0,d(o[60],b[13],e),0]]]];default:/*<>*/return[0,n,[0,bj,[0,/*<>*/c(o[52],a[1]),0]]]}/*<>*/},[248,bk,s.caml_fresh_oo_id(0)]],"Haz3lcore__EvaluatorError");return/*<>*/}(globalThis)); -//# 8237 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8233 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var A="<2>",ag="int_of_string",M="@ ",J="Const",$="string_sub",L="%a",I=",@ ",af="mod",B="@,",K="Fn",_="))",ae="",ad="$Meta",Z="bool_of_string",H=143,ac="@,))@]",s=139,Y="float_of_string",ab="fn",aa="const",j=a.jsoo_runtime,X=j.caml_maybe_attach_backtrace,G=j.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -437994,11 +437990,11 @@ b=a[2],c=a[1];return 0===b[0]?[0,[0,c,z[16],b[1]]]:[0,[0,c,z[16],[3,b[1],b[2]]]] b=a[2],c=a[1];return 0===b[0]?0:[0,[0,c,b[3]]]/*<>*/},y[2]);j.caml_register_global(90,[0,C,function(a){/*<>*/return/*<>*/r(i[H],ap,C,a)/*<>*/},N,O,P,function(a){/*<>*/return/*<>*/r(i[H],as,P,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],N,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],O,a)/*<>*/},R,function(a){/*<>*/return/*<>*/r(i[H],au,R,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],v[48],a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],function(a){/*<>*/return d(v[24],function(a){/*<>*/return 0})},a)/*<>*/},m,c,y,d_,d$,/*<>*/r(u[26],function(a,b){/*<>*/var d=b[2],c=b[1];return 0===d[0]?/*<>*/f(F[10],a,[0,c,d[2]]):/*<>*/f(F[10],a,[0,c,[16,c]])/*<>*/},F[7],y[2])],"Haz3lcore__Builtins");return/*<>*/}(globalThis)); -//# 8325 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8321 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[9];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__ClosureEnvironment");return/*<>*/}(globalThis)); -//# 8330 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8326 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a5="sequence2",a6="consistentCaseRule",a4="let1",ad="Prj",am="BinFloatOp1",aX="mark",ak="Ap1",al="Let1",m="@ ",bd="let2",bt="invalidOperation",bu="ap2",bK="case",U="IfThenElse3",bc="binIntOp1",bJ="boundVar",a3="typAp",bb="ifThenElse2",bN="src/haz3lcore/dynamics/EvalCtx.re.cls",au="InvalidOperation",bs="%a",aW="test",aI="FailedCastCast",br="apBuiltin",T="BinStringOp1",ba="fixF",ac="BinStringOp2",p="@,",bq="inconsistentBranches",at="FixF",L="ConsistentCase",aU="tuple",aV="sequence1",aT="fun",S="Filter",ab="Ap2",aa="Cons1",bo="ifThenElse3",bp="binFloatOp2",aS="nonEmptyHole",bn="binStringOp2",R="IfThenElse1",as="Let2",$="Closure",bm="(@[",Q="Fun",a2="binBoolOp1",aj="ListConcat2",bl="failedCast",P="ListConcat1",D="@,))@]",bO="failedCastCast",bk="listConcat2",ar="IfThenElse2",n=-976970511,l=848054398,M="Tuple",bj="filter",bi="closure",_="FailedCast",bM="src/haz3lcore/dynamics/EvalCtx.re.case",a0="listLit",a1="cast",a$="consistentCase",aD="%d",O="BinIntOp1",a_="binIntOp2",ay="@[<2>[",ai="BinBoolOp1",j="<2>",aR="cons1",bI="src/haz3lcore/dynamics/EvalCtx.re.t",K="InconsistentBranchesRule",Z="ApBuiltin",aq="BinIntOp2",ax="@])",bh="prj",aJ="FilterPattern",ap="InconsistentBranches",aH="BoundVar",Y="Cast",ao="NonEmptyHole",q=",@ ",aG="Case",bg="listConcat1",an="Test",X="BinFloatOp2",az="@,]@]",a9="binBoolOp2",aZ="ap1",ah="BinBoolOp2",W="Mark",a8="binFloatOp1",ag="Sequence1",bf="ifThenElse1",E="))",be="",bL="filterPattern",aA=";@ ",a7="binStringOp1",af="Sequence2",aY="cons2",V="TypAp",aQ=143,J="ConsistentCaseRule",g=139,N="ListLit",aP="inconsistentBranchesRule",ae="Cons2",aB=a.jsoo_runtime,iE=aB.caml_maybe_attach_backtrace,s=aB.caml_string_compare,aC=aB.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):aB.caml_call_gen(a,[b])}/*<>*/function @@ -439014,7 +439010,7 @@ e!=="number"&&0===e[0]){e=e[2];continue}if(typeof b==="number"&&32===b)/*<>*/return[0,e];if(typeof e==="number")/*<>*/return 0;if(32===e[0]){e=e[1];continue}}/*<>*/return 0}/*<>*/}],"Haz3lcore__EvalCtx");return/*<>*/}(globalThis)); -//# 9347 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9343 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="called matches_cast_Cons with non-list pattern",d="src/haz3lcore/dynamics/PatternMatch.re",j=a.jsoo_runtime,U=j.caml_maybe_attach_backtrace,r=j.caml_trampoline,T=j.caml_trampoline_return;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -439384,7 +439380,7 @@ w!=="number")switch(w[0]){case 4:case 32:/*<>*/return 1;default:/*<>*/return 0}/*<>*/}j.caml_register_global(19,[0,e],"Haz3lcore__PatternMatch");return/*<>*/}(globalThis)); -//# 9718 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9714 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e="Pass",t="pass",s="src/haz3lcore/dynamics/TestStatus.re.t",d="Indet",b="Fail",r="fail",q="indet",n=-976970511,j=848054398,m=a.jsoo_runtime;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):m.caml_call_gen(a,[b,c])}/*<>*/function @@ -439413,7 +439409,7 @@ k=h[2];if(k===b)return f[2]?/*<>*/c(i[ 0:/*<>*/return E;case 1:/*<>*/return F;default:/*<>*/return G}/*<>*/},p,/*<>*/c(H[26],p,0)],"Haz3lcore__TestStatus");return/*<>*/}(globalThis)); -//# 9748 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9744 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var V="@[<2>[",o="<2>",p="@ ",T="src/haz3lcore/dynamics/TestMap.re.instance_report",U="@])",y="%a",S=",@ ",R="@,",Q="@,]@]",O="src/haz3lcore/dynamics/TestMap.re.report",P="",N=";@ ",M="(@[",x=143,n=848054398,f=139,k=a.jsoo_runtime,w=k.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -439460,7 +439456,7 @@ d=/*<>*/c(L,a,b);return d?s(d[1]):2/*<>*/f=/*<>*/c(g[50],d,b);if(!f)/*<>*/return/*<>*/c(v[37],b,[0,[0,d,[0,e,0]],0]);/*<>*/var/*<>*/h=[0,[0,d,/*<>*/c(v[37],f[1],[0,e,0])],0],/*<>*/i=/*<>*/c(g[55],d,b);/*<>*/return/*<>*/c(v[37],i,h)/*<>*/},g[1],function(e,b){/*<>*/ /*<>*/var a=/*<>*/c(g[44],function(a){/*<>*/return e===s(a[2])?1:0/*<>*/},b);/*<>*/return/*<>*/d(g[1],a)/*<>*/}],"Haz3lcore__TestMap");return/*<>*/}(globalThis)); -//# 9796 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9792 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aL="fixUnwrap",a0="sequence",a1="completeFilter",R="FunClosure",aZ="binBoolOp",aY="listConcat",Q="@ ",ah="NotGroundOrHole",aK="completeClosure",aJ="builtinWrap",aa="FixClosure",aX="caseNext",aI="letBind",aW="ground",aH="notGroundOrHole",$="Skip",A="BuiltinAp",_="UpdateTest",aG="listCons",O="ListCons",P="Sequence",N="VarLookup",z="BinFloatOp",aF="updateTest",M="CastTypAp",aE="castAp",aD="castTypAp",L="TypFunAp",E="BinBoolOp",aC="invalidStep",aV="builtinAp",k=-976970511,l=848054398,Z="CompleteFilter",aj="Ground",aU="hole",aT="cast",aS="varLookup",K="CaseNext",aR="src/haz3lcore/dynamics/Transition.re.step_kind",aB="skip",D="BinStringOp",aQ="binStringOp",r="<2>",aA="conditional",az="fixClosure",J="FunAp",aP="binIntOp",C="BinIntOp",I="@])",ay="typFunAp",Y="CompleteClosure",X="Cast",W="ListConcat",ax="funClosure",aO="caseApply",V="CaseApply",aw=">",T="BuiltinWrap",U="InvalidStep",S="LetBind",av="projection",G="Projection",H="FixUnwrap",aN="binFloatOp",ai="Hole",au="funAp",B="Conditional",q=139,F="CastAp",aM="@<",s=a.jsoo_runtime,p=s.caml_maybe_attach_backtrace,n=s.caml_string_compare;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -439811,7 +439807,7 @@ b==="number")switch(b){case 18:case 19:/*<>*/return 1}/*<>*/return 0/*<>*/}],"Haz3lcore__Transition");return/*<>*/}(globalThis)); -//# 10148 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10144 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,G=f.caml_maybe_attach_backtrace;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -439860,7 +439856,7 @@ h=/*<>*/g(B[16],b,f);e=/*<>*/g(n[28],C,c);/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/G([0,D[7],[0,c]],1)/*<>*/}),h)}/*<>*/}var F=0;f.caml_register_global(16,[0,c,i,function(a,b){/*<>*/return l(A,a,b)},function(a,b){/*<>*/return m(F,a,b)}],"Haz3lcore__ValueChecker");return/*<>*/}(globalThis)); -//# 10198 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10194 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var k="$",e=a.jsoo_runtime,h=e.caml_ml_string_length;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -439871,7 +439867,7 @@ c(a){/*<>*/return i(f[16],a, g(a){/*<>*/if(a&&!a[2])/*<>*/return b(a[1]);/*<>*/return 0/*<>*/}e.caml_register_global(5,[0,l,b,c,g,function(a){/*<>*/return g(a)?/*<>*/j(o[20],function(a){/*<>*/ /*<>*/var b=c(a);/*<>*/return/*<>*/j(n[28],b,m)/*<>*/},a):a/*<>*/},function(a){/*<>*/return b(a)?c(a):a/*<>*/}],"Haz3lcore__AssistantExpander");return/*<>*/}(globalThis)); -//# 10210 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10206 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aO="pat",q="NewForm",F="Pat",k="<2>",o="@ ",aN="typ",Y="fromCtx",aY="src/haz3lcore/assistant/Suggestion.re.t",aM=" =",s="@])",E="Any",I="%a",aX="src/haz3lcore/assistant/Suggestion.re.strategy",H="FromCtxAp",D="content",aL="fromCtxAp",aV="src/haz3lcore/assistant/Suggestion.re.strategy_pat",aW="src/haz3lcore/assistant/Suggestion.re.strategy_exp",n="Common",C="FromCoCtx",p="FromCtx",aU="fromBackpack",G="Typ",aK="fromCoCtx",aI="",aJ="src/haz3lcore/assistant/Suggestion.re.strategy_all",aT=963043957,aH="exp",K="FromBackpack",X="newForm",B="Exp",aG="@]",A="strategy",aS="src/haz3lcore/assistant/Suggestion.re.strategy_common",aR="@[%s =@ ",aF="src/haz3lcore/assistant/Suggestion.re.strategy_typ",z=143,h=139,i=848054398,j=-976970511,aP="any",Z="common",aQ="(@[<2>Common@ ",y=a.jsoo_runtime,Q=y.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):y.caml_call_gen(a,[b])}/*<>*/function @@ -440038,7 +440034,7 @@ l=/*<>*/d(m[2],b);/*<>*/d(m[2],i);/*<>*/return/*<>*/g(e[11],W,n,a)}/*<>*/var/*<>*/j=/*<>*/d(m[2],f),/*<>*/k=/*<>*/d(m[2],h);if(j&&k)/*<>*/return[0,j[1],k[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(m[2],h)?1:0,b8],0],/*<>*/p=[0,[0,0===/*<>*/d(m[2],f)?1:0,b9],o];/*<>*/return/*<>*/g(e[13],W,a,p)}/*<>*/return/*<>*/c(e[14],W,a)/*<>*/},function(a){/*<>*/var b=a[1],c=[0,[0,b_,aC(a[2])],0];/*<>*/return[0,aT,[0,[0,b$,d(V[49],b)],c]]/*<>*/},function(a,b){/*<>*/return c(ca[10],a[1],b[1])/*<>*/}],"Haz3lcore__Suggestion");return/*<>*/}(globalThis)); -//# 10378 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10374 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var y=" ",v="(",x="::",E=183,u=" )",s=" )::",r=",",l=a.jsoo_runtime;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -440091,7 +440087,7 @@ s=n[1];if(s){/*<>*/var C=s[1],/*<>*/al=/*<>*/f(g[1],s[2]),/*<>*/am=/*<>*/d(g[11],al,function(a){/*<>*/return ak/*<>*/}),/*<>*/D=/*<>*/f(/*<>*/f(w[7],an),am),/*<>*/ao=z(C),/*<>*/ap=/*<>*/d(g[20],function(a){/*<>*/return c(D,a)},ao),/*<>*/aq=A(C),/*<>*/as=/*<>*/d(e[28],ar,D),/*<>*/at=/*<>*/d(g[20],function(a){/*<>*/return c(as,a)},aq);/*<>*/return/*<>*/d(e[37],at,ap)}break}/*<>*/return 0;case 2:/*<>*/return 0;default:/*<>*/return 0}/*<>*/}],"Haz3lcore__AssistantCtx");return/*<>*/}(globalThis)); -//# 10432 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10428 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var C=102,i=a.jsoo_runtime,ao=i.caml_list_of_js_array,r=i.caml_string_compare;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -440127,7 +440123,7 @@ c=a[1]===g?1:0,d=c?/*<>*/f(e[3 n(a,b,c){/*<>*/var/*<>*/g=/*<>*/d(B[181],c),/*<>*/h=/*<>*/d(b,g),/*<>*/k=/*<>*/d(j[5],c),/*<>*/l=/*<>*/d(B[183],c),/*<>*/i=/*<>*/aq(j[6],l,k,a,h);/*<>*/return 2===g?/*<>*/f(e[20],function(a){/*<>*/return[0,a[1],[2,[0,[0,a[2]]]]]/*<>*/},i):6<=g?/*<>*/f(e[20],function(a){/*<>*/return[0,a[1],[1,[0,[0,a[2]]]]]/*<>*/},i):/*<>*/d(/*<>*/d(e[20],function(a){/*<>*/return[0,a,ah]/*<>*/}),h)/*<>*/}var ai=m[8],aj=j[4],ak=m[12],al=j[2],am=m[4],an=j[3];i.caml_register_global(33,[0,h,j,m,n,function(a){/*<>*/return n(aj,ai,a)},function(a){/*<>*/return n(al,ak,a)},function(a){/*<>*/return n(an,am,a)}],"Haz3lcore__AssistantForms");return/*<>*/}(globalThis)); -//# 10469 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10465 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -440177,7 +440173,7 @@ v=u[1];break b}}var m=0;break a}var m=[0,/*<>*/d(e[19],v)]}/*<>*/return/*<>*/f(k[10][1],m,C)/*<>*/}],"Haz3lcore__Indicated");return/*<>*/}(globalThis)); -//# 10520 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10516 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime,k=e.caml_ml_string_length;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -440208,7 +440204,7 @@ i=/*<>*/c(s[15][18],a,g);/*<>*/return/*<>*/c(h[10][1],f,function(a){/*<>*/var c=b[3][1],/*<>*/e=r(/*<>*/d(z[181],g),c,a);/*<>*/return[0,/*<>*/j(m[68],b,0,e)]/*<>*/})/*<>*/})/*<>*/})/*<>*/})/*<>*/})/*<>*/}],"Haz3lcore__TyDi");return/*<>*/}(globalThis)); -//# 10552 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10548 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -440219,7 +440215,7 @@ h(a,b){/*<>*/var c=a?a[1]:f,/*<>*/e=/*<>*/d(l[16],b);/*<>*/return/*<>*/d(/*<>*/j(i[26],function(a,b){/*<>*/var c=b[5],/*<>*/e=/*<>*/m(g,b[1],b,a);/*<>*/return/*<>*/d(/*<>*/j(i[26],function(a,b){/*<>*/return h([0,a],b)/*<>*/},e),c)/*<>*/},c),e)/*<>*/}e.caml_register_global(3,[0,f,g,b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48],h],"Haz3lcore__TileMap");return/*<>*/}(globalThis)); -//# 10564 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10560 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="passing",z="total",h=" ",E="%d",U=" are ",v="test_map",P="@[<2>[",A="<2>",g="@ ",u=" =",T="src/haz3lcore/dynamics/TestResults.re.t",t="unfinished",O="%d are %s ",S="@,",F="and ",N="@,]@]",y="statuses",R="one is ",s="",Q=963043957,n=";@ ",r="@]",K="All ",x="@[%s =@ ",w="descriptions",f=139,J="One ",p="failing",q=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}/*<>*/function @@ -440252,7 +440248,7 @@ I=/*<>*/c(b[2],u);/*<>*/return[0,Q,[0,[0,ba,c(m[19],j)],q]]/*<>*/},function(a,b){/*<>*/var d=a?a[1]:0,/*<>*/e=/*<>*/i(m[25],2,b),/*<>*/f=/*<>*/i(m[25],1,b),/*<>*/g=/*<>*/i(m[25],0,b),/*<>*/h=/*<>*/c(m[24],b);/*<>*/return[0,b,/*<>*/c(/*<>*/c(H[20],function(a){/*<>*/return c(m[7],a[2])/*<>*/}),b),d,h,g,f,e]/*<>*/},M,function(a){/*<>*/return M(a[4],a[6],a[7],bL,bK,bJ,bI,bH)/*<>*/}],"Haz3lcore__TestResults");return/*<>*/}(globalThis)); -//# 10598 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10594 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -440270,7 +440266,7 @@ o(a){/*<>*/try{/*<>*/d(k[1][6],l,a);/*<>*/return c}catch(e){/*<>*/ /*<>*/var b=n(a);/*<>*/ /*<>*/t(k[1][5],l,a,b);/*<>*/return b}/*<>*/}i.caml_register_global(7,[0,j,q,r,s,u,v,w,x,y,z,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,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,g,l,n,o],"Haz3lcore__TermRanges");return/*<>*/}(globalThis)); -//# 10617 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10613 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -440278,7 +440274,7 @@ i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<< h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var c=e.caml_get_global_data(),g=c.Stdlib__List,f=c.Haz3lcore__Id,b=f[15],d=b[2];e.caml_register_global(2,[0,b[1],d,b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48],function(a,e,c){/*<>*/return/*<>*/j(/*<>*/i(g[26],function(a,b){/*<>*/return/*<>*/h(d,b,e,a)/*<>*/},c),a)/*<>*/}],"Haz3lcore__TermMap");return/*<>*/}(globalThis)); -//# 10626 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10622 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -440349,7 +440345,7 @@ t(i,h,c){/*<>*/var/*<>*/k=10===c[0]?/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},c),b):c,/*<>*/l=[0,j,d(i,h,k)];/*<>*/return/*<>*/f(g[10],b,l)/*<>*/},g[7]),b);/*<>*/return/*<>*/f(k[7],a,j)/*<>*/}function u(f,b,c){/*<>*/return/*<>*/e(/*<>*/e(n[11][9],function(a){/*<>*/return d(f,b,a)}),c)/*<>*/}h.caml_register_global(6,[0,d,function(a,b){/*<>*/return/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},b),a)/*<>*/}],"Haz3lcore__Substitution");return/*<>*/}(globalThis)); -//# 10698 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10694 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var q="@ ",r="<2>",d="step",p=963043957,j=139,o="src/haz3lcore/dynamics/EvaluatorStats.re.t",h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -440368,7 +440364,7 @@ o=/*<>*/c(b[2],h);/*<>*/c(b[2],e);if(j)/*<>*/return[0,j[1]];/*<>*/ /*<>*/var q=[0,[0,0===/*<>*/c(b[2],e)?1:0,E],0];/*<>*/return/*<>*/i(m[13],l,a,q)}/*<>*/return/*<>*/g(m[14],l,a)/*<>*/},function(a){/*<>*/return[0,p,[0,[0,F,c(k[52],a[1])],0]]/*<>*/},G,function(a){/*<>*/return[0,a[1]+1|0]/*<>*/},function(a){/*<>*/return a[1]/*<>*/},function(a){/*<>*/return[0,a]/*<>*/}],"Haz3lcore__EvaluatorStats");return/*<>*/}(globalThis)); -//# 10718 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10714 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="@ ",y="<2>",k="tests",x=" =",j="stats",v=963043957,w="",u="@]",s="@[%s =@ ",t="src/haz3lcore/dynamics/EvaluatorState.re.t",i=139,h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -440392,15 +440388,15 @@ b=a[2];/*<>*/return[0,/*<>*/return[0,/*<>*/d(c[10],a),e]/*<>*/},function(a,b,c){/*<>*/var e=a[2],/*<>*/g=/*<>*/d(/*<>*/d(f[23],[0,b,c]),e);/*<>*/return[0,a[1],g]/*<>*/},function(a){/*<>*/return a[2]/*<>*/},function(a,b){/*<>*/return[0,b[1],a]/*<>*/}],"Haz3lcore__EvaluatorState");return/*<>*/}(globalThis)); -//# 10743 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10739 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[10];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10]],"Haz3lcore__Filter");return/*<>*/}(globalThis)); -//# 10748 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10744 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[12];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7]],"Haz3lcore__FilterEnvironment");return/*<>*/}(globalThis)); -//# 10753 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10749 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a$="$e",d="__mutual__",a_="$v",f=a.jsoo_runtime,b=f.caml_equal,M=f.caml_maybe_attach_backtrace,g=f.caml_trampoline,v=f.caml_trampoline_return,N=f.caml_wrap_exception;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -440647,7 +440643,7 @@ p(a,b,c){/*<>*/return w(a,b,a,c[1 g=d,f=e;/*<>*/for(;;){if(!g)/*<>*/return[0,c,f];/*<>*/var i=g[2],/*<>*/h=p(a,b,g[1]);if(h)/*<>*/return[0,h[1],f];g=i;f=f+1|0}/*<>*/}(a,b,c,d,0);/*<>*/return[0,e[1],f-e[2]|0]/*<>*/}],"Haz3lcore__FilterMatcher");return/*<>*/}(globalThis)); -//# 11001 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10997 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var K="<2>",i="@ ",al=125,o="knd",p="d_loc",C="d",u=" =",ao="%a",ak="{ ",t="",B="env",aj="src/haz3lcore/dynamics/EvaluatorStep.re.EvalObj.t",L=963043957,A=";@ ",an="@[<2>{ ",s="@]",am="@ }@]",v="@[%s =@ ",ai=143,z="state",d=139,m="ctx",ah="src/haz3lcore/dynamics/EvaluatorStep.re.step",y=a.jsoo_runtime,af=y.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):y.caml_call_gen(a,[b])}/*<>*/function @@ -440913,7 +440909,7 @@ d=ae(h,a);if(!d)/*<>*/return 0;/ b=d[1][2],/*<>*/e=/*<>*/f(ac,i,b[1],b[2]);if(!e)/*<>*/return 0;/*<>*/ /*<>*/var g=n(b[3],e[1]);/*<>*/return[0,g,c(g)]/*<>*/}/*<>*/return c(b)/*<>*/}],"Haz3lcore__EvaluatorStep");return/*<>*/}(globalThis)); -//# 11268 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11264 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aD="src/haz3lcore/dynamics/Stepper.re.persistent",ax="stepPending",K="StepTimeout",aw="stepTimeout",ab="@[<2>[",o="<2>",e="@ ",av=125,C=" =",au="src/haz3lcore/dynamics/Stepper.re.t",ac="%a",at="{ ",S=",@ ",F="@,",r="elab",aa="@,]@]",I="StepperOK",n="current",B="next",ar="))",as="list manipulation",y="",T=963043957,q="previous",x=";@ ",aC="@[<2>{ ",A="@]",aB="@ }@]",E="@[%s =@ ",$=143,aA="@,))@]",d=139,N=-976970511,D=848054398,az="src/haz3lcore/dynamics/Stepper.re.current",ay="stepperOK",J="StepPending",t=a.jsoo_runtime,cE=t.caml_maybe_attach_backtrace,_=t.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):t.caml_call_gen(a,[b])}/*<>*/function @@ -441161,7 +441157,7 @@ d=a[2];if(typeof b!=="number"&&0!==b[0]){if(b[3])/*<>*/return[0,c,d,[1,b[1],b[2],0]];break a}}/*<>*/return[0,c,a[2],a[3]]/*<>*/},function(a,b){/*<>*/var c=b[3],d=b[2],e=b[1],/*<>*/f=ak([0,e,d,c,0]);/*<>*/return[0,e,d,c,/*<>*/h(p[18],a,f)]/*<>*/}],"Haz3lcore__Stepper");return/*<>*/}(globalThis)); -//# 11521 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11517 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ag="TileId",cL="point",aC="Cut",cJ="insert",cK="src/haz3lcore/zipper/action/Action.re.select",ci="cant_put_down",cj="src/haz3lcore/zipper/action/Action.re.goal",ch="src/haz3lcore/zipper/action/Action.re.piece_goal",p="@ ",aQ="Grout",aR="CantPaste",aS="Cant_destruct",cI="accept",cg="src/haz3lcore/zipper/action/Action.re.buffer",cf="src/haz3lcore/zipper/action/Action.re.Failure.t",E="%a",af="Unselect",aP="Current",y="@,",aA="Pick_up",aB="Cant_move",ae="Point",ad="ToggleIndicated",aN="Piece",aO="SetSyntax",cd="move",ce="grout",aL="All",aM="Reparse",T="Move",cE="cant_select",cF="cantReparse",cG="focusInternal",cH="smart",cC="set",cD="tyDi",ac="Extreme",az="Accept",cB="cant_project",cz="copy",cA="src/haz3lcore/zipper/action/Action.re.jump_target",ay="@,))@]",cc="id",h=-976970511,g=848054398,cw="cant_move",cx="unselect",cy="toggleIndicated",cb="cantAccept",b$="local",ca="goal",aw="Smart",ax="FocusInternal",b_="resize",bi="%S",b9="moveToBackpackTarget",b8="term",b7="setIndicated",cv="extreme",k="<2>",b3="pick_up",b4="buffer",b5="remove",b6="src/haz3lcore/zipper/action/Action.re.rel",b2="cut",S="Term",ab="MoveToBackpackTarget",av="Copy",R="SetIndicated",q="@])",ct="cantPaste",cu="paste",cs="escape",aa="Insert",b1="cant_destruct",au="CantAccept",aJ=",@ ",aK="Cant_insert",bZ="setSyntax",b0="all",cq="tileId",aI="BindingSiteOfIndicatedVar",cr="src/haz3lcore/zipper/action/Action.re.move",bY="cant_insert",cp="project",bX="piece",at="Cant_select",_="Jump",$="Paste",aH="Cant_put_down",bW="put_down",co="tile",Z="Select",bU="current",as="Escape",bV="src/haz3lcore/zipper/action/Action.re.agent",bS="destruct",bT="bindingSiteOfIndicatedVar",ar="Cant_project",aG="))",Y="Goal",bR="reparse",Q="Project",aE="Id",aF="CantReparse",P="Destruct",cn="rotateBackpack",W="Local",X="Remove",cm="updateModel",bQ="jump",aq="RotateBackpack",D=143,O="Tile",ap="UpdateModel",cl="select",V="Set",N="Buffer",bP="src/haz3lcore/zipper/action/Action.re.project",j=139,U="Resize",aD="Put_down",ao="TyDi",ck="src/haz3lcore/zipper/action/Action.re.t",M=a.jsoo_runtime,v=M.caml_string_compare,J=M.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):M.caml_call_gen(a,[b])}/*<>*/function @@ -441592,7 +441588,7 @@ switch(a[0]){case 7:case 8:break;default:break a}/*<>*/return 1}/*<>*/return 0/*<>*/}],"Haz3lcore__Action");return/*<>*/}(globalThis)); -//# 11953 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11949 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ag="+",R=" ",ar=1000,bf="-",O="Post",J=")",a0="op",M="@ ",z="<2>",aW="bin",bg="::",N="(",aZ="post",Q="Pre",aV="@])",ac="->",aq="%a",ab=",@ ",aU="src/haz3lcore/statics/MakeTerm.re.tile",L="@,",bi="=",be=">",ap="))",P="in",E="Op",ay="]",az="[",am=143,an=",",ao="@,))@]",y=848054398,K=-976970511,bh="end",o=139,aX="src/haz3lcore/statics/MakeTerm.re.unsorted",I="Bin",aY="pre",s=a.jsoo_runtime,aT=s.caml_equal,bd=s.caml_float_of_string,bc=s.caml_int_of_string,af=s.caml_string_compare,D=s.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -442024,7 +442020,7 @@ b=/*<>*/d(h[14],a);function e(a,b){/*<>*/return aT(a,b)}/*<>*/ /*<>*/var c=/*<>*/d(/*<>*/d(n[20],function(a){/*<>*/return a[2]}),b);/*<>*/return/*<>*/d(/*<>*/d(n[33],function(a){/*<>*/return e(bH,a)}),c)/*<>*/},aD,aE,v,aF,_,H,$,aa,aj,B,C,aH,aI,aJ,aK,aL,aM,aN,aO,r,aS,al,cq,/*<>*/f(ak[1],0,ct,function(a){/*<>*/return al(cs,cr,a)})],"Haz3lcore__MakeTerm");return/*<>*/}(globalThis)); -//# 12386 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12382 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aw="src/haz3lcore/zipper/Editor.re.t",w="read_only",y="<2>",j="@ ",av=125,v="meta",B=" =",au="@])",M="%a",at="{ ",as=",@ ",aC="src/haz3lcore/zipper/Editor.re.History.t",u="history",t="",L=963043957,aB="src/haz3lcore/zipper/Editor.re.History.affix",J=";@ ",aA="@[<2>{ ",az="(@[",s="zipper",A="@]",ax="@ }@]",C="@[%s =@ ",ay="src/haz3lcore/zipper/Editor.re.State.t",I=143,r="state",d=139,K=848054398,n=a.jsoo_runtime,H=n.caml_update_dummy;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):n.caml_call_gen(a,[b])}/*<>*/function @@ -442123,7 +442119,7 @@ b=/*<>*/g(P[13][10],c,a[5]);/*<>*/g(D[15][18],b,a[1][2][5][7]);if(c)/*<>*/return[0,[0,c[1]]];/*<>*/ /*<>*/var d=/*<>*/g(aj[40],function(a){/*<>*/return/*<>*/n.caml_equal(a[1],b)/*<>*/},a[1][2][5][8]);/*<>*/return/*<>*/f(/*<>*/f(X[7],function(a){/*<>*/return[1,a]/*<>*/}),d)/*<>*/}],"Haz3lcore__Editor");return/*<>*/}(globalThis)); -//# 12486 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12482 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var K="%d",J="<2>",I="canPass",H="cantEven",t="CantEven",s="CanEnter",G="@,",E="src/haz3lcore/zipper/action/Move.re.movability",D="canEnter",r="CanPass",u=139,v=-976970511,w=848054398,p=a.jsoo_runtime,ag=p.caml_maybe_attach_backtrace;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):p.caml_call_gen(a,[b])}/*<>*/function @@ -442262,7 +442258,7 @@ i=a[1];if(0===i[0]){var t=i[1],u=0;/*<>*/return m(0,function(a,b){/*<>*/return d(u,a,b)},t,/*<>*/f(g[42],0,b))}var v=i[2];/*<>*/return H(/*<>*/e(af[7],i[1]),v,b)}/*<>*/}]}],"Haz3lcore__Move");return/*<>*/}(globalThis)); -//# 12626 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12622 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -442288,7 +442284,7 @@ d==="number"?0===d?j(0,b):j(1,b):0===d[0]?g(0,b):g(1,b);default:var h=a[1];if(0!==h[0])/*<>*/return/*<>*/c(s[2],r);/*<>*/var l=h[1],/*<>*/m=/*<>*/c(e[48],b),/*<>*/n=[0,/*<>*/c(/*<>*/c(e[64],i[2]),m)];/*<>*/return/*<>*/k(f[12],n,g,l,b)}/*<>*/}]}],"Haz3lcore__Select");return/*<>*/}(globalThis)); -//# 12653 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12649 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -442319,7 +442315,7 @@ v=m;else/*<>*/var/*<>*/var/*<>*/y=/*<>*/g(a,d,x),z=y?y[1]:d,/*<>*/A=/*<>*/f(b,2,1,z),R=A?A[1]:z;/*<>*/return[0,R]}/*<>*/var/*<>*/B=/*<>*/g(a,d,x),S=B?B[1]:d;/*<>*/return[0,S];default:var C=c[1];return/*<>*/g(h[13][9],C,d[5])?[0,i(C,0,d)]:T}/*<>*/}],"Haz3lcore__ProjectorPerform");return/*<>*/}(globalThis)); -//# 12685 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12681 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var y="@ ",r="<2>",x="src/haz3lcore/dynamics/EvaluatorResult.re.t",w="@])",v="boxedValue",h="Indet",g="BoxedValue",u="indet",o=848054398,p=139,q=-976970511,k=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -442350,7 +442346,7 @@ f=b[1],d=g;break a}}else{var h=a[1];if(0!==b[0]){var f=b[1],d=h;break a}}/*<>*/return 0}/*<>*/return/*<>*/c(e[24],d,f)/*<>*/}],"Haz3lcore__EvaluatorResult");return/*<>*/}(globalThis)); -//# 12717 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12713 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="EvaulatorError",ai="off",w="Off",am="resultPending",af="resultOk",ag="unknownException",v="result",j="<2>",ah="src/haz3lcore/prog/ProgramResult.re.inner",o="@ ",ae=" =",G="@])",P="%a",al="evaulatorError",u="ResultOk",ad="resultFail",z="ResultFail",B="ResultPending",ab="",ac="src/haz3lcore/prog/ProgramResult.re.error",ak=963043957,aa="src/haz3lcore/prog/ProgramResult.re.t",C="Timeout",$="@]",_="timeout",y="UnknownException",aj="@[%s =@ ",O=143,t="state",h=139,l=-976970511,m=848054398,s=a.jsoo_runtime,N=s.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -442434,7 +442430,7 @@ a==="number")/*<>*/return a7;switch(a[ 0:/*<>*/return[0,m,[0,a8,[0,/*<>*/c(F[13],a[1]),0]]];case 1:/*<>*/return[0,m,[0,a9,[0,T(a[1]),0]]];default:/*<>*/return[0,m,[0,a_,[0,Y(a[1]),0]]]}/*<>*/},function(a){/*<>*/return c(A[7],a[1])/*<>*/},function(a){/*<>*/return a[2]/*<>*/}],"Haz3lcore__ProgramResult");return/*<>*/}(globalThis)); -//# 12802 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12798 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var _="appendLeft",Z="@ ",A="<2>",r="AppendLeft",Y="@])",X="makeNew",W="src/haz3lcore/zipper/action/Insert.re.appendability",V="appendRight",z=139,v=-976970511,w=848054398,t="MakeNew",q="AppendRight",o=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -442530,7 +442526,7 @@ t!=="number"&&1===t[0]){var v=an;break a}var v=0}/*<>*/var/*<>*/C=function(a){/*<>*/return K(c,a)}(a),/*<>*/D=/*<>*/e(g[30],v),/*<>*/E=/*<>*/e(/*<>*/e(d[7],D),C),/*<>*/F=/*<>*/e(u(0),E);/*<>*/return/*<>*/e(/*<>*/e(d[7],function(a){/*<>*/return L(c,a)}),F)/*<>*/}],"Haz3lcore__Insert");return/*<>*/}(globalThis)); -//# 12899 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12895 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var K="%S",E=" ",A="code",D="selection",z="@[<2>[",j="<2>",k="@ ",s="\n",J=" =",C="@,",y="@,]@]",B="backpack",l="",U=963043957,q=";@ ",I="@]",L="@[%s =@ ",e=139,o=a.jsoo_runtime,aZ=o.caml_wrap_exception;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -442576,7 +442572,7 @@ c=a?a[1]:aR;/*<>*/return H([0,c],b[1][1]) b=a[1][1][1][2],/*<>*/c=x(0,/*<>*/g(r[62],a[1][1]),0,aS,b);/*<>*/return/*<>*/g(/*<>*/g(p[7],aT),c)/*<>*/},T,function(a){/*<>*/ /*<>*/var b=H(0,a);/*<>*/return T([0,/*<>*/g(r[14],0)],b)/*<>*/}],"Haz3lcore__Printer");return/*<>*/}(globalThis)); -//# 12946 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12942 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var F="%S",o="@ ",E="<2>",D="src/haz3lcore/zipper/PersistentZipper.re.t",C=" =",A=963043957,B="",j="backup_text",z="@]",k="zipper",y="@[%s =@ ",f=139,i=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -442605,7 +442601,7 @@ b=/*<>*/g(u[18],0,a[2]);return b b=a[1],/*<>*/d=[0,[1,[0,W,[0,/*<>*/c(h[9],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,X,[0,/*<>*/c(h[9],b),0]]],d]]/*<>*/},r,s,t,w,function(a){/*<>*/ /*<>*/var b=s(t(a));/*<>*/return/*<>*/ae(x[5],0,0,0,0,b)/*<>*/},function(a){/*<>*/return w(r(/*<>*/af(x[39],0,0,0,a)))/*<>*/}],"Haz3lcore__PersistentZipper");return/*<>*/}(globalThis)); -//# 12976 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12972 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -442651,7 +442647,7 @@ h=b[1];if(h){var j=b[2];if(j){var n=j[1],o=h[1];/*<>*/if(/*<>*/f(r[14],o,n))/*<>*/return k([0,o,n],a)}}}}/*<>*/return[0,a]/*<>*/})/*<>*/}],"Haz3lcore__Destruct");return/*<>*/}(globalThis)); -//# 13023 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13019 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var g=a.jsoo_runtime,ab=g.caml_equal;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -442741,11 +442737,11 @@ j=m([0,g],d,b,h);/*<>*/return/*<>*/ab(b,s)?c:/*<>*/e(n[12],l,c),/*<>*/h=d(a,b,g);/*<>*/return/*<>*/e(i[42][1],h,function(a){/*<>*/if(!/*<>*/f(v[64],b))/*<>*/return[0,a];var c=a[1][2][4][2];/*<>*/return[0,/*<>*/e(n[12],function(a){/*<>*/return q(c,a)},a)]/*<>*/})}/*<>*/return d(a,b,c)/*<>*/}],"Haz3lcore__Perform");return/*<>*/}(globalThis)); -//# 13118 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13114 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id[15];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48]],"Haz3lcore__MetaVarMap");return/*<>*/}(globalThis)); -//# 13123 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13119 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="expressionHole",o="patternHole",i="ExpressionHole",j="PatternHole",e=a.jsoo_runtime;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -442764,7 +442760,7 @@ e=d[2];if(e&&!e[2]){/*<>*/var f=e[1],h=d[1],/*<>*/i=k(b[1]),/*<>*/j=/*<>*/g(m[13],h);/*<>*/return[0,i,j,/*<>*/g(n[1],f)]}}}}/*<>*/return/*<>*/t(c[2],s,3,a)/*<>*/},a)/*<>*/},function(a){/*<>*/return/*<>*/b(h[44],function(a){var b=a[3],c=a[2],d=l(a[1]),e=g(m[11],c);return[1,[0,d,[0,e,[0,g(n[2],b),0]]]]},a)/*<>*/},h[1]],"Haz3lcore__Delta");return/*<>*/}(globalThis)); -//# 13143 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13139 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var B="+",t="DoesNotElaborate",A="elaborates",r="Elaborates",x="doesNotElaborate",ad=194,u="_",h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -443015,7 +443011,7 @@ b=a[3],c=a[2],/*<>*/d=/*<>*/return 0;/*<>*/var e=c[1],/*<>*/d=v(a,b),f=d?d[1]:O;/*<>*/return[0,e,f,q[5]]/*<>*/}],"Haz3lcore__Elaborator");return/*<>*/}(globalThis)); -//# 13395 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13391 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="Unexpected Uneval",f=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -443060,7 +443056,7 @@ e=[0,c[1]];break;case e=[1,c[1]];break;default:var e=[1,c[1]]}/*<>*/return[0,f[1],e]/*<>*/},b,[0,m[2]]],"Haz3lcore__Evaluator");return/*<>*/}(globalThis)); -//# 13441 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13437 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,w=f.caml_wrap_exception;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -443075,7 +443071,7 @@ e=/*<>*/h(t[1],l,c)}catch(e){var f=w(e);if(f[1]===i[7]){/*<>*/var j=f[2],/*<>*/m=/*<>*/d(i[2],j),/*<>*/n=/*<>*/h(g[28],r,m);/*<>*/ /*<>*/d(g[46],n);/*<>*/return[2,[0,j]]}/*<>*/var/*<>*/o=/*<>*/d(k[1],f),/*<>*/p=/*<>*/h(g[28],s,o);/*<>*/ /*<>*/d(g[46],p);/*<>*/return[2,[1,/*<>*/d(k[1],f)]]}/*<>*/return[1,[0,e[2],e[1]]]/*<>*/}],"Haz3lcore__Interface");return/*<>*/}(globalThis)); -//# 13457 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13453 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ab="src/haz3lcore/prog/ModelResult.re.t",t="<2>",r="@ ",N=" =",aa="src/haz3lcore/prog/ModelResult.re.eval_result",M="@])",$="noElab",P="%a",Y="src/haz3lcore/prog/ModelResult.re.persistent",x="elab",E="stepper",m="Evaluation",B="NoElab",L="",_=963043957,k="Stepper",w="previous",X=";@ ",o="evaluation",K="@]",O="@[%s =@ ",Z="(@[<2>Stepper@ ",J=143,i=139,p=848054398,q=-976970511,v=a.jsoo_runtime,I=v.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):v.caml_call_gen(a,[b])}/*<>*/function @@ -443162,7 +443158,7 @@ i=e[2];if(i===m)return b[2]?/*<>*/d(g[3] j=b[2];if(j&&!j[2])/*<>*/return[0,/*<>*/c(f[31],j[1])];/*<>*/return/*<>*/h(g[4],A,i,a)}}else if(p===n)/*<>*/return/*<>*/d(g[6],A,a)}}}/*<>*/return/*<>*/d(g[8],A,a)/*<>*/},function(a){/*<>*/return a?[0,p,[0,a2,[0,/*<>*/c(f[32],a[1]),0]]]:a3/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&1===a[0])/*<>*/return[0,/*<>*/c(f[35],a[1])];/*<>*/return 0/*<>*/},function(a,b){/*<>*/return b?[1,/*<>*/d(f[36],a,b[1])]:0/*<>*/}],"Haz3lcore__ModelResult");return/*<>*/}(globalThis)); -//# 13545 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13541 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var z="%a",y=143,j=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -443186,7 +443182,7 @@ b=ao[3],/*<>*/h=function(a){/*<>*/r b=/*<>*/d(e[18],a);/*<>*/return/*<>*/d(c[28],b)/*<>*/},/*<>*/d(n,e[19]),w,x,function(c,b){/*<>*/ /*<>*/var a=/*<>*/d(/*<>*/d(i[23],function(a){/*<>*/return w(c,a)}),b);/*<>*/return/*<>*/d(l,/*<>*/d(i[64],a))/*<>*/},function(a){/*<>*/var/*<>*/b=/*<>*/d(s,a),/*<>*/c=/*<>*/d(/*<>*/d(i[23],x),b);/*<>*/return/*<>*/d(l,/*<>*/d(i[64],c))/*<>*/}],"Haz3lcore__ModelResults");return/*<>*/}(globalThis)); -//# 13570 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13566 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var n="src/haz3lcore/dynamics/HoleInstance.re.t",m=848054398,k=139,e=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -443205,7 +443201,7 @@ e=b[2];if(e&&!e[2]){var g=e[1],h=c(f[5],b[1]);return[0,h,c(d[5],g)]}}}return j(v[2],u,2,a)/*<>*/},function(a){/*<>*/var b=a[2],e=c(f[6],a[1]);return[0,m,[0,e,[0,c(d[6],b),0]]]/*<>*/},function(a){/*<>*/return a[1]/*<>*/},function(a){/*<>*/return a[2]/*<>*/},[0,w[16],0]],"Haz3lcore__HoleInstance");return/*<>*/}(globalThis)); -//# 13999 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13995 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;/*<>*/function q(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var @@ -443222,7 +443218,7 @@ l=c[1],/*<>*/m=[20,l,d(c[2],b)];/*<>*/var n=c[2],o=c[1],/*<>*/p=[22,o,n,d(c[3],b)];/*<>*/return[0,a[1],p]}/*<>*/return[0,[0,/*<>*/q(e[5],0),0],[20,a,b]]/*<>*/}c.caml_register_global(1,[0,d],"Haz3lcore__EditorUtil");return/*<>*/}(globalThis)); -//# 14017 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 14013 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -474986,62 +474982,63 @@ a=D(f,b,d),i=E(f,b,e,d),j=g(m[37],i,a),k=g(h[24],function(a){return C(f,c,a)},d) //# 4286 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var -T="slidef",S="type",u="selected",R="check",Q="slide",P="fold",N="indicated",O="text",h=a.jsoo_runtime;function -j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}function -i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):h.caml_call_gen(a,[b,c])}function +U="slidef",T="type",u="selected",S="check",R="slide",Q="fold",O="indicated",P="text",h=a.jsoo_runtime;function +i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}function +j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):h.caml_call_gen(a,[b,c])}function l(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):h.caml_call_gen(a,[b,c,d])}function -M(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):h.caml_call_gen(a,[b,c,d,e])}var -b=h.caml_get_global_data(),p=b.Stdlib__List,n=b.Virtual_dom__Vdom,k=b.Virtual_dom__Node,K=b.Util__Web,m=b.Stdlib,g=b.Haz3lcore__Projector,c=b.Haz3lcore__Indicated,f=b.Util__OptUtil,o=b.Haz3lcore__Id,x=b.Haz3lweb__PieceDec,A=b.Haz3lweb__DecUtil,U=P,V=S,W=R,X=Q,Y=T,Z=O,_="Unknown projector kind",$=[0,N,[0,"right",0]],aa=[0,u,0],ab=[0,N,[0,"left",0]],ac=b.Haz3lcore__JsUtil,ad="projector",ae=b.Haz3lcore__Measured,af=b.Haz3lcore__Piece,ag=[0,0],ah=u,ai=u,aj=[0,1,0],ak=[0,0,0],al=b.Haz3lcore__Info,am=[0,2,0],an=[0,3,0],ao=[0,4,0],ap=[0,5,0],aq="img/noun-fold-1593402.svg",ar="img",as=[0,"toggle-knob",0],at=[0,"active",0],au=[0,"toggle-switch",0],av="Fold",aw="projectors";function +N(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):h.caml_call_gen(a,[b,c,d,e])}var +b=h.caml_get_global_data(),p=b.Stdlib__List,m=b.Virtual_dom__Vdom,k=b.Virtual_dom__Node,L=b.Util__Web,n=b.Stdlib,g=b.Haz3lcore__Projector,c=b.Haz3lcore__Indicated,f=b.Util__OptUtil,o=b.Haz3lcore__Id,B=b.Virtual_dom__Effect,x=b.Haz3lweb__PieceDec,A=b.Haz3lweb__DecUtil,V=Q,W=T,X=S,Y=R,Z=U,_=P,$="Unknown projector kind",aa=[0,O,[0,"right",0]],ab=[0,u,0],ac=[0,O,[0,"left",0]],ad="projector",ae=b.Haz3lcore__Measured,af=b.Haz3lcore__Piece,ag=[0,0],ah=u,ai=u,aj=[0,1,0],ak=[0,0,0],al=b.Haz3lcore__Info,am=[0,2,0],an=[0,3,0],ao=[0,4,0],ap=[0,5,0],aq="img/noun-fold-1593402.svg",ar="img",as=[0,"toggle-knob",0],at=[0,"active",0],au=[0,"toggle-switch",0],av="Fold",aw="projectors";function q(a){switch(a){case -0:return U;case -1:return V;case -2:return W;case -3:return X;case -4:return Y;default:return Z}}function -v(a){return a!==R?a!==P?a!==Q?a!==T?a!==O?a!==S?j(m[2],_):1:5:4:3:0:2}function -w(a,b,c,d){return 0===i(g[41],d,c)[0]?i(x[8],a,b):l(k[14],0,0,0)}function +0:return V;case +1:return W;case +2:return X;case +3:return Y;case +4:return Z;default:return _}}function +v(a){return a!==S?a!==Q?a!==R?a!==U?a!==P?a!==T?i(n[2],$):1:5:4:3:0:2}function +w(a,b,c,d){return 0===j(g[41],d,c)[0]?j(x[8],a,b):l(k[14],0,0,0)}function y(a,b){if(a)var -d=a[1][1]?$:ab,c=d;else +d=a[1][1]?aa:ac,c=d;else var c=0;var -e=b?aa:0;return i(m[37],e,c)}function -z(a,b,c,d,e,f,g,h){var -o=f?x[9]:A[18],p=[0,h,[0,w(b,c,e,g),0]],r=[0,ac[27],0],s=[0,l(A[21],b,[0,o],c),r],t=y(d,f),u=[0,ad,[0,q(g[1]),0]],v=i(m[37],u,t),z=[0,[0,j(n[1][16],v),s]];return l(k[14],0,z,p)}function -B(a,b){if(typeof +e=b?ab:0;return j(n[37],e,c)}function +z(o,b,c,d,e,f,g,h){var +a=f?x[9]:A[18],p=[0,h,[0,w(b,c,e,g),0]],r=[0,l(A[21],b,[0,a],c),0],s=[0,i(m[1][67],function(a){var +b=[0,i(o,[11,[4,[0,e[1]]]]),0];return[0,B[2],[0,B[17],b]]}),r],t=y(d,f),u=[0,ad,[0,q(g[1]),0]],v=j(n[37],u,t),z=[0,[0,i(m[1][16],v),s]];return l(k[14],0,z,p)}function +C(a,b){if(typeof b==="number")return[6,a];switch(b[0]){case 0:return[4,a,b[1]];case 1:return[5,a,b[1]];case 2:return[0,a,b[1]];default:return[1,a,b[1]]}}function -C(h,b,c,d,e){var -a=i(g[13][8],h,b[5][1][5]);return i(f[10][1],a,function(k){var -a=i(o[15][18],h,b[5][9]);return i(f[10][1],a,function(a){var -l=[0,h,a,e,i(o[15][18],h,b[4][2])],m=i(ae[41],h,b[5][3]);return i(f[10][2],m,function(a){var -f=j(g[40],k[1]);function -m(a){return j(c,[11,[2,B(h,a)]])}var -n=M(f[4],k[2],l,function(a){return m([3,i(f[6],k[2],a)])},m);return z(c,d,a,e,l,i(p[37],h,b[3]),k,n)})})})}function +D(h,b,c,d,e){var +a=j(g[13][8],h,b[5][1][5]);return j(f[10][1],a,function(k){var +a=j(o[15][18],h,b[5][9]);return j(f[10][1],a,function(a){var +l=[0,h,a,e,j(o[15][18],h,b[4][2])],m=j(ae[41],h,b[5][3]);return j(f[10][2],m,function(a){var +f=i(g[40],k[1]);function +m(a){return i(c,[11,[2,C(h,a)]])}var +n=N(f[4],k[2],l,function(a){return m([3,j(f[6],k[2],a)])},m);return z(c,d,a,e,l,j(p[37],h,b[3]),k,n)})})})}function r(a){var -b=j(c[2],a);if(!b)return 0;var -d=b[1],e=[0,d[2]];return[0,[0,j(af[30],d[1]),e]]}function -D(a){var +b=i(c[2],a);if(!b)return 0;var +d=b[1],e=[0,d[2]];return[0,[0,i(af[30],d[1]),e]]}function +E(a){var b=r(a);return b?[0,b[1][2]]:0}function s(a){var -b=j(c[5],a);return i(f[10][1],b,function(b){var -c=i(g[13][8],b,a[5]);return i(f[10][2],c,function(a){return[0,b,a]})})}function +b=i(c[5],a);return j(f[10][1],b,function(b){var +c=j(g[13][8],b,a[5]);return j(f[10][2],c,function(a){return[0,b,a]})})}function d(a){return s(a[1][1])}function t(a){var -b=d(a);return i(f[10][2],b,function(a){return a[2][1]})}function -E(a,b){var -c=s(a);return i(f[10][2],c,function(a){return i(g[41],a[2],b)})}function -F(a){var +b=d(a);return j(f[10][2],b,function(a){return a[2][1]})}function +F(a,b){var +c=s(a);return j(f[10][2],c,function(a){return j(g[41],a[2],b)})}function +G(a){var b=d(a);return b?b[1][1]:o[16]}function -G(d,b){var -a=j(c[5],d);return i(f[10][1],a,function(c){var -a=i(o[15][18],c,b[5][9]);return i(f[10][1],a,function(a){var -e=i(o[15][18],c,b[4][2]);return E(d,[0,c,a,D(d),e])})})}function -H(a,b){var -c=[0,j(k[5],b),0],d=b==a?[0,i(n[1][1],ai,ah),0]:0;return l(k[32],0,[0,d],c)}function +H(d,b){var +a=i(c[5],d);return j(f[10][1],a,function(c){var +a=j(o[15][18],c,b[5][9]);return j(f[10][1],a,function(a){var +e=j(o[15][18],c,b[4][2]);return F(d,[0,c,a,E(d),e])})})}function +I(a,b){var +c=[0,i(k[5],b),0],d=b==a?[0,j(m[1][1],ai,ah),0]:0;return l(k[32],0,[0,d],c)}function e(a){var -e=1=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}function e(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):j.caml_call_gen(a,[b,c])}function h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):j.caml_call_gen(a,[b,c,d])}function -an(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):j.caml_call_gen(a,[b,c,d,e])}function -ao(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):j.caml_call_gen(a,[b,c,d,e,f])}function -ap(a,b,c,d,e,f,g,h){return(a.l>=0?a.l:a.l=a.length)==7?a(b,c,d,e,f,g,h):j.caml_call_gen(a,[b,c,d,e,f,g,h])}var -b=j.caml_get_global_data(),i=b.Haz3lcore__Measured,n=b.Haz3lcore__Piece,x=b.Haz3lcore__Mold,g=b.Stdlib__List,l=b.Util__ListUtil,C=b.Haz3lweb__PieceDec,B=b.Haz3lcore__Siblings,G=b.Haz3lcore__Segment,H=b.Haz3lcore__Backpack,k=b.Stdlib,r=b.Haz3lweb__ProjectorView,m=b.Haz3lweb__SvgUtil,F=b.Haz3lcore__TermRanges,c=b.Haz3lcore__Zipper,q=b.Haz3lcore__Indicated,p=b.Haz3lcore__Id,E=b.Haz3lcore__Term,O=b.Haz3lweb__CaretDec,P=[0,s],Q=b.Haz3lcore__Secondary,R=[0,0,0],S=[0,s],T=[0,"sel_of_tile"],U=b.Util__StringUtil,V=b.Haz3lcore__Selection,W=b.Haz3lcore__Nib,X=[0,f],Y=[0,f],Z=[0,f],_=[0,o],$=b.Haz3lweb__CaretPosDec,aa=[0,o],ab="impossible",ac=b.Haz3lcore__Tile,ad="Deco.backpack.caret_point",ae=b.Haz3lweb__BackpackView,af=[0,t],ag=[0,t],ah=[0,0,0],ai="WARNING: Deco.term_highlight: Not found",aj=b.Virtual_dom__Node,ak=b.Haz3lweb__DecUtil,al="highlight-code-",am=[0,"err-hole",0];j.caml_register_global(44,[0,function(f){var +am(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):j.caml_call_gen(a,[b,c,d,e])}function +an(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):j.caml_call_gen(a,[b,c,d,e,f])}function +ao(a,b,c,d,e,f,g,h){return(a.l>=0?a.l:a.l=a.length)==7?a(b,c,d,e,f,g,h):j.caml_call_gen(a,[b,c,d,e,f,g,h])}var +b=j.caml_get_global_data(),i=b.Haz3lcore__Measured,n=b.Haz3lcore__Piece,x=b.Haz3lcore__Mold,g=b.Stdlib__List,k=b.Util__ListUtil,C=b.Haz3lweb__PieceDec,B=b.Haz3lcore__Siblings,G=b.Haz3lcore__Segment,H=b.Haz3lcore__Backpack,l=b.Stdlib,r=b.Haz3lweb__ProjectorView,m=b.Haz3lweb__SvgUtil,F=b.Haz3lcore__TermRanges,c=b.Haz3lcore__Zipper,q=b.Haz3lcore__Indicated,p=b.Haz3lcore__Id,E=b.Haz3lcore__Term,O=b.Haz3lweb__CaretDec,P=[0,s],Q=b.Haz3lcore__Secondary,R=[0,0,0],S=[0,s],T=[0,"sel_of_tile"],U=b.Util__StringUtil,V=b.Haz3lcore__Selection,W=b.Haz3lcore__Nib,X=[0,f],Y=[0,f],Z=[0,f],_=[0,o],$=b.Haz3lweb__CaretPosDec,aa=[0,o],ab="impossible",ac=b.Haz3lcore__Tile,ad=b.Haz3lweb__BackpackView,ae=[0,t],af=[0,t],ag=[0,0,0],ah="WARNING: Deco.term_highlight: Not found",ai=b.Virtual_dom__Node,aj=b.Haz3lweb__DecUtil,ak="highlight-code-",al=[0,"err-hole",0];j.caml_register_global(43,[0,function(f){var j=f[1][1];function u(a){return e(p[15][17],a,f[2][5][7])}function v(a){var @@ -475106,15 +475103,15 @@ c=[0,[0,o(0,a,h(i[38],P,b[1],f[2][5][3]),b)],0];break;default:var g=b[1],k=d(Q[23],g)?R:[0,[0,o(0,a,h(i[37],S,g,f[2][5][3]),b)],0],c=k}var e=d(n[32],b),j=e?e[1][2][1]:a;return[0,j,c]}function z(j,b){var -a=h(i[34],T,b,f[2][5][3]),c=d(d(g[44],function(a){return e(g[37],a[1],b[4])}),a),k=d(d(g[20],function(a){var +a=h(i[34],T,b,f[2][5][3]),c=d(d(g[44],function(a){return e(g[37],a[1],b[4])}),a),l=d(d(g[20],function(a){var c=a[1],h=a[2],i=e(g[8],b[2],c),f=d(U[19],i);return 0===f?[0,[0,o([0,c],j,h,[0,b])],0]:e(g[11],f,function(a){return 0})}),c),m=b[5],n=d(d(g[21],function(a){var -c=e(x[15],[0,a],b[3])[2][1];return function(a){return s(c,a)}}),m),p=e(l[39],k,n);return d(g[15],p)}function +c=e(x[15],[0,a],b[3])[2][1];return function(a){return s(c,a)}}),m),p=e(k[39],l,n);return d(g[15],p)}function s(a,b){var -c=d(e(l[32],y,a),b)[2];return d(g[15],c)}function +c=d(e(k[32],y,a),b)[2];return d(g[15],c)}function A(b){var -a=b[1][2],c=s(d(B[14],b[3][1])[1],a),e=d(l[57],c),f=d(l[58],e),h=d(d(g[20],function(a){var +a=b[1][2],c=s(d(B[14],b[3][1])[1],a),e=d(k[57],c),f=d(k[58],e),h=d(d(g[20],function(a){var b=a[2],c=a[1];return[0,[0,c[1][1],b[1][2]],[0,c[2][1],b[2][2]]]}),f);return d(d(g[20],function(a){var -c=a[2],e=a[1],f=d(V[21],b[1]);return an(C[10],j,c,e,f)}),h)}function +c=a[2],e=a[1],f=d(V[21],b[1]);return am(C[10],j,c,e,f)}),h)}function D(a){var l=d(q[2],a);if(0!==a[1][2])return 0;if(!l)return 0;var m=l[1],b=m[1];if(1===b[0])return 0;var @@ -475125,16 +475122,16 @@ var k=0;var t=d(q[3],a),D=t?t[1]:-1;if(!k)return 0;var G=k[1],H=f[2][5][6],I=d(n[30],b),J=e(p[15][17],I,H),K=d(E[16],J),L=d(d(g[20],function(a){var -b=u(a),c=h(i[34],Z,b,f[2][5][3]);return[0,a,b[3],c]}),K),M=[0,d(n[30],b),D];return ao(C[17],j,f[2][5][3][4],M,L,G)}function +b=u(a),c=h(i[34],Z,b,f[2][5][3]);return[0,a,b[3],c]}),K),M=[0,d(n[30],b),D];return an(C[17],j,f[2][5][3][4],M,L,G)}function t(m,b,c){var -n=d(l[41],c),a=d(d(g[24],function(a){var +n=d(k[41],c),a=d(d(g[24],function(a){var n=a[2],o=a[1],A=d(G[15],n),c=[0,d(G[15],o),A],x=c[2],y=c[1];if(m)var -l=m[1],z=l[1],p=[0,[0,z,y],e(k[37],x,[0,l[2],0])];else +k=m[1],z=k[1],p=[0,[0,z,y],e(l[37],x,[0,k[2],0])];else var p=c;var q=e(H[12],p,b);if(q&&!q[1][1]){var g=d(B[25],[0,o,n]),r=g[1];a:{if(!r&&!g[2]){var -v=d(k[2],ab);break a}var +v=d(l[2],ab);break a}var s=g[2];if(s)var t=h(i[40],_,s[1],f[2][5][3]),u=[0,t[1],t[1]];else var @@ -475142,28 +475139,28 @@ w=h(i[40],aa,r[1],f[2][5][3]),u=[0,w[2],w[2]];var v=u}return[0,e($[3],j,[0,736515298,v,6]),0]}return 0}),n);if(a)return a;var o=d(d(g[23],function(a){return 0===a[0]?[0,a[1]]:0}),c);return d(d(g[24],function(a){var c=d(ac[39],a);return d(d(g[24],function(a){return t([0,[0,a[1],a[3]]],b,a[2])}),c)}),o)}function -I(a){d(k[46],ad);var -b=e(c[64],f[2][5][3],a);return[0,h(ae[2],j,b,a),0]}function +I(a){var +b=e(c[64],f[2][5][3],a);return[0,h(ad[2],j,b,a),0]}function J(a,b){var c=f[1][2],e=c?d(H[13],a):c;return e?t(0,a,b):0}function a(a,b){var -n=e(F[16],a,f[2][5][5]),o=n[2],c=h(i[40],af,n[1],f[2][5][3])[1],j=h(i[40],ag,o,f[2][5][3])[2],p=e(l[5],[0,c[1]],j[1]+1|0),q=d(d(g[24],function(a){var -b=e(i[20][27],a,f[2][5][3][4]),c=[0,d(m[4][7],1),0],g=a===j[1]?j[2]:b[2];return[0,d(m[4][4],g),c]}),p),r=e(l[5],[0,c[1]],j[1]+1|0),s=d(d(g[22],function(a){var -b=e(i[20][27],a,f[2][5][3][4]),g=[0,d(m[4][7],-1),0],h=a===c[1]?c[2]:b[1];return[0,d(m[4][4],h),g]}),r),t=d(g[14],s),u=e(k[37],t,ah),v=[0,e(m[4][2],c[2],c[1]),q],w=e(k[37],v,u);return d(b,[0,c,j,d(d(m[4][14],[254,-c[2]|0,-c[1]|0]),w)])}function +n=e(F[16],a,f[2][5][5]),o=n[2],c=h(i[40],ae,n[1],f[2][5][3])[1],j=h(i[40],af,o,f[2][5][3])[2],p=e(k[5],[0,c[1]],j[1]+1|0),q=d(d(g[24],function(a){var +b=e(i[20][27],a,f[2][5][3][4]),c=[0,d(m[4][7],1),0],g=a===j[1]?j[2]:b[2];return[0,d(m[4][4],g),c]}),p),r=e(k[5],[0,c[1]],j[1]+1|0),s=d(d(g[22],function(a){var +b=e(i[20][27],a,f[2][5][3][4]),g=[0,d(m[4][7],-1),0],h=a===c[1]?c[2]:b[1];return[0,d(m[4][4],h),g]}),r),t=d(g[14],s),u=e(l[37],t,ag),v=[0,e(m[4][2],c[2],c[1]),q],w=e(l[37],v,u);return d(b,[0,c,j,d(d(m[4][14],[254,-c[2]|0,-c[1]|0]),w)])}function b(c,b){try{var -e=a(b,function(a){return ap(ak[22],j,0,[0,a[1],a[2]],[0,c],0,0,a[3])});return e}catch(f){d(k[46],ai);return h(aj[14],0,0,0)}}function -K(a){return e(g[20],function(a){return b(am,a)},f[2][4][3])}function +e=a(b,function(a){return ao(aj[22],j,0,[0,a[1],a[2]],[0,c],0,0,a[3])});return e}catch(f){d(l[46],ah);return h(ai[14],0,0,0)}}function +K(a){return e(g[20],function(a){return b(al,a)},f[2][4][3])}function L(a){return d(r[12],a)?0:D(a)}function M(a,b){var c=[0,J(a[2],b),0],e=[0,I(a),c],f=[0,A(a),e],h=[0,L(a),f],i=[0,w(a),h];return d(g[14],i)}function N(a){var -b=[0,h(r[11],f[2],a,j),0],c=[0,K(0),b];return d(g[14],c)}return[0,j,u,v,w,o,y,z,s,A,D,t,I,J,a,b,function(a){return e(g[23],function(a){var +b=h(r[11],f[2],a,j),c=[0,d(g[10],b),0],e=[0,K(0),c];return d(g[14],e)}return[0,j,u,v,w,o,y,z,s,A,D,t,I,J,a,b,function(a){return e(g[23],function(a){var d=a[2],f=a[1];try{var -g=[0,b([0,e(k[28],al,d),0],f)];return g}catch(f){var -c=ar(f);if(c===k[8])return 0;throw aq(c,0)}},a)},K,L,M,N,function(a){var +g=[0,b([0,e(l[28],ak,d),0],f)];return g}catch(f){var +c=aq(f);if(c===l[8])return 0;throw ap(c,0)}},a)},K,L,M,N,function(a){var b=[0,N(a),0],c=[0,M(f[2][5][1],f[2][5][2]),b];return d(g[14],c)}]}],"Haz3lweb__Deco");return}(globalThis)); -//# 4467 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4468 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c="cell-item",e="cell",o=a.jsoo_runtime;function p(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}function @@ -475235,7 +475232,7 @@ b=[0,p(q[5],a),0],c=[0,[0,p(s[1][15],aB),0]],e=[0,r(q[14],0,c,b),0],f=[0,[0,p(s[ j=p(A[33],c);return[0,i(a,b,e,h,0,aH,aG,0,0,aF,d,[0,[0,g]],[0,f],0,r(B[11],aE,j,aD[8])),0]},function(a,b,c,d,e){var k=p(A[33],e),f=r(B[11],aI,k,b[3]),g=f[1][2][4],l=b[3][2],m=l||b[3][4],h=m?r(F[3],b[3],g[2],g[1]):aM,j=b[3][4]?[0,[0,h,r(F[4],b[3],0,h),0]]:0,n=b[3][2],o=n||b[3][4],q=o?x(1,c,a,b,j,d):0;return i(c,a,b,d,0,aL,aK,0,p(aJ[21],j),[0,q],0,0,0,0,f)}],"Haz3lweb__Cell");return}(globalThis)); -//# 4540 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4541 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var q=a.jsoo_runtime;function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}function @@ -475248,14 +475245,14 @@ b=q.caml_get_global_data(),f=b.Haz3lcore__JsUtil,c=b.Virtual_dom__Effect,d=b.Haz a=i(l[54],e,f),o=i(n[9],m[21],a),q=c[3][2],r=q||c[3][4],t=r?h(h(s[7],function(a){return x(k[14],0,j,b,c,a,f)}),a):0;return[0,y(k[15],j,b,c,p,0,0,0,0,o,t,d,0,0,0,g),0]},function(b){return g(e[2],r,d[5],function(a){var d=h(j[19],b);i(f[13],o,d);return c[1]})},function(b){return z(e[8],u,t,d[5],function(a){return a?h(b,[8,a[1]]):c[1]})},function(b){return g(e[2],w,d[16],function(a){return h(f[18],v)?h(b,2):c[1]})}],"Haz3lweb__ScratchMode");return}(globalThis)); -//# 4554 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4555 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}var j=g.caml_get_global_data(),f=j.Haz3lcore__Piece,b=j.Haz3lweb__Example,d=c(b[22],"t_var"),e=c(b[21],"ty_arg"),h=[0,0,c(b[86],"type Peano = \n rec P -> Z + S(P) \n in S(S(S(Z)))"),"The type of the Peano numbers and the representation of the number 3."],k=[0,[0,c(f[30],d),[0,e,0]]],l=[0,d,[0,c(b[85],0),0]],m=[0,[0,c(b[85],0),l],0],i=[0,54,[0,c(b[31],m),[0,e,0]],k,"This recursive type classifies the least fixed point of the polymorphic type over the [*type variable*](%s) of body [*instantiated type*](%s).",[0,h,0]];g.caml_register_global(7,[0,d,e,function(a,b){var g=[0,[0,c(f[30],e),b],0];return[0,[0,c(f[30],d),a],g]},h,i,[0,55,[0,i,0]]],"Haz3lweb__RecTyp");return}(globalThis)); -//# 4562 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4563 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -475265,7 +475262,7 @@ b=e.caml_get_global_data(),c=b.Haz3lweb__Example,f=b.Haz3lcore__Id,i="\n e=[0,[0,25,d(c[86],j),i],0],k=g(f[7],0,b),l=g(f[7],0,a),o=h(n[4],m,l,k);return[0,26,67,h(r[73][9],[0,q,a],[0,p,b],function(a,b){var e=[0,d(c[85],0),[0,b,0]],f=[0,d(c[64],0),e];return[0,a,[0,d(c[85],0),f]]}),o,e]}],"Haz3lweb__PipelineExp");return}(globalThis)); -//# 4573 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4574 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var v="e_arg",u="...",t="e_fun",i=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}var @@ -475274,14 +475271,14 @@ e=[0,[0,c(d[30],n),b],0];return[0,[0,c(d[30],m),a],e]},o,e,f,function(a,b){var g=[0,[0,c(d[30],f),b],0];return[0,[0,c(d[30],e),a],g]},p,g,h,function(a,b){var e=[0,[0,c(d[30],h),b],0];return[0,[0,c(d[30],g),a],e]},r,[0,18,[0,o,0]],[0,19,[0,p,0]],[0,20,[0,r,0]]],"Haz3lweb__AppExp");return}(globalThis)); -//# 4583 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4584 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}var i=f.caml_get_global_data(),g=i.Haz3lcore__Piece,b=i.Haz3lweb__Example,d=c(b[20],"p_con"),e=c(b[20],"p_arg"),h=[0,43,[0,d,[0,c(b[72],[0,[0,e,0],0]),0]],0,"Only expressions that match the [*constructor*](%s) with an *argument* matching the [*argument pattern*](%s) match this *constructor application pattern*.",0];f.caml_register_global(5,[0,d,e,function(a,b){var f=[0,[0,c(g[30],e),b],0];return[0,[0,c(g[30],d),a],f]},h,[0,44,[0,h,0]]],"Haz3lweb__AppPat");return}(globalThis)); -//# 4591 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4592 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var p="ty_arg2",c="ty_out",l=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}var @@ -475289,13 +475286,13 @@ o=l.caml_get_global_data(),e=o.Haz3lcore__Piece,b=o.Haz3lweb__Example,f=d(b[21], c=[0,[0,d(e[30],g),b],0];return[0,[0,d(e[30],f),a],c]},h,i,j,k,function(a,b,c){var f=[0,[0,d(e[30],k),c],0],g=[0,[0,d(e[30],j),b],f];return[0,[0,d(e[30],i),a],g]},n,[0,56,[0,h,0]],[0,57,[0,n,[0,h,0]]]],"Haz3lweb__ArrowTyp");return}(globalThis)); -//# 4600 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4601 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var l="...",e=a.jsoo_runtime;function b(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}var k=e.caml_get_global_data(),c=k.Haz3lweb__Example,m=k.Haz3lcore__Piece,f=[0,21,b(c[86],"case 1 \n| 2 => 3 \n| _ => 4 \nend"),"The scrutinee of the case expression is 1. Since the scrutinee does not match the the first pattern 2. Since the scrutinee does match the second pattern which is a wildcard, the second branch is taken. The whole expression evaluates to the second clause 4."],g=[0,22,b(c[86],"case (1, 2) \n| (_, 2) => 3 \n| _ => 4 \nend"),"The scrutinee of the case expression is (1, 2). Since the scrutinee matches the first pattern (_, 2), the first branch is taken. This pattern is matched because the first element 1 matches the first element pattern, which is a wildcard, and the second element 2 matches the second element pattern 2. The whole expression evaluates to the first clause 3."],h=[0,23,b(c[86],"case 1 \n| 1 => 1.1 \n| 2 => 2.2 \n| _ => 3.3 \nend"),"The scrutinee of the case expression is 1. Since the scrutinee matches the first pattern, the first branch is taken, and the case evaluates to the first clause."],i=[0,24,b(c[86],"case false \n| true => 1 \n| false => 2 \nend"),"The scrutinee of the case expression is false. The scrutinee does not match the first pattern but does match the second pattern, so the second branch is taken."],d=b(c[19],"e_scrut"),n=[0,b(c[84],0),0],o=[0,b(c[19],l),n],p=[0,b(c[85],0),o],q=[0,b(c[85],0),0],r=[0,b(c[20],l),q],s=[0,[0,b(c[85],0),r],0],t=[0,b(c[78],s),p],u=[0,b(c[84],0),t],v=[0,b(c[19],"e1"),u],w=[0,b(c[85],0),v],x=[0,b(c[85],0),0],y=[0,b(c[20],"p1"),x],z=[0,[0,b(c[85],0),y],0],A=[0,b(c[78],z),w],B=[0,d,[0,b(c[84],0),A]],C=[0,[0,b(c[85],0),B],0],j=[0,24,[0,b(c[77],C),0],0,"Consider each branch in order. For the first branch with a *pattern* that matches the [*scrutinee*](%s), evaluates to the corresponding *clause*.",[0,h,[0,i,[0,f,[0,g,0]]]]];e.caml_register_global(16,[0,f,g,h,i,d,function(a){return[0,[0,b(m[30],d),a],0]},j,[0,24,[0,j,0]]],"Haz3lweb__CaseExp");return}(globalThis)); -//# 4607 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4608 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g="kind-view",e=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -475304,7 +475301,7 @@ b=e.caml_get_global_data(),c=b.Util__Web,h=b.Haz3lweb__Type,i=g,j="Type",k=b.Vir b=[0,d(h[7],a[1]),0];return f(c[2],i,0,b)}var e=[0,d(k[5],j),0];return f(c[2],l,0,e)}],"Haz3lweb__Kind");return}(globalThis)); -//# 4617 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4618 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var p="seperator",o="context-entry",h=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}function @@ -475321,7 +475318,7 @@ a=d(v[183],b),f=d(j[39],a),g=d(c[10],f);return d(d(c[20],function(a){return k(e, a=d(j[39],b),l=d(c[10],a),m=i(c[20],function(a){return k(h,a)},l),n=[0,[0,d(f[1],t),0]];return g(e[14],0,n,m)},n,function(a,b,c){var h=b[5]?w:0,j=i(y[37],x,h),k=d(f[1],j),l=n(a,c);return g(e[14],0,[0,[0,k,0]],l)}],"Haz3lweb__CtxInspector");return}(globalThis)); -//# 4635 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4636 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var U=197,o=":",T="cursor-inspector",z="not found",S=" is inexhaustive",R="Expected a constructor",Q=",",P=" have inconsistent types:",n=a.jsoo_runtime,O=n.caml_equal;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):n.caml_call_gen(a,[b])}function @@ -475464,7 +475461,7 @@ a=[0,[0,e(E[1][23],bm),0]],i=f[14];if(!b[3][1])return j[4];if(d){var l=d[1],s=[0,k(bq[25],function(a){return e(h,[11,[2,a]])},c,l),0],t=[0,N(h,b,l),s];return e(g(i,0,a),t)}var m=[0,e(f[5],br),0],n=[0,bn[18],0],o=[0,[0,e(j[1],bo),0]],p=[0,k(f[14],0,o,n),m],q=[0,[0,e(j[1],bp),0]],r=[0,k(f[14],0,q,p),0];return e(g(i,0,a),r)}],"Haz3lweb__CursorInspector");return}(globalThis)); -//# 4779 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4780 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var x="selected",w="none",i=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}function @@ -475504,7 +475501,7 @@ f=s(a,b[1],b[2]);break;default:var f=v(a,b[1],b[2],h)}var i=[0,[0,e(j[1][23],O),0]];return d(g[14],0,i,f)}],"Haz3lweb__EditorModeView");return}(globalThis)); -//# 4820 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4821 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var aa="cell-item",$="Pass",_="some-fail",ac="test-percent",y="test-hint",B="test-report",u="test-summary",A="test-instance",x="Test",Z="No test results",z="test-panel",w="test-id",t="test-text",ab="all-pass",p=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):p.caml_call_gen(a,[b])}function @@ -475557,7 +475554,7 @@ d=[0,O(a,b,c)],f=[0,Q(a,b[1]),0],j=[0,i(e[6],aG,aF),f];return h(e[18],aH,j,d)}], b=[0,f(g[5],aP),0],c=[0,F(a[2]),b],d=[0,[0,f(j[1][15],aQ),0]],k=[0,h(g[14],0,d,c),0],l=[0,[0,f(j[1][16],aR),0]],m=[0,h(g[14],0,l,k),0],n=[0,f(e[16],m)],o=[0,S(a[1]),0],p=[0,i(e[6],aT,aS),o];return h(e[18],aU,p,n)}],[0,l[1],l[2],l[3],T,U,V,W,X,function(l,b,c,d){var a=b[2],o=f(f(s[7],function(a){return h(n[6],l,a,5)}),a),p=f(s[15],o),r=V(b),t=[0,m(i(q,i(T,b,c),d)),0],u=i(k[37],t,r),v=[0,[0,f(j[1][15],a1),0]],w=[0,h(g[14],0,v,u),0],x=i(k[37],w,p),y=[0,[0,f(j[1][16],a2),0]],z=[0,h(g[14],0,y,x),0],A=[0,f(e[16],z)],B=[0,X(l,b),0],C=[0,i(e[6],a4,a3),B];return h(e[18],a5,C,A)}],[0,C[1],Y,function(a){return m(f(Y,a))}]],"Haz3lweb__Grading");return}(globalThis)); -//# 4874 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4875 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var u=".ml",s="Correct Implementation",o="text/plain",q=a.jsoo_runtime;function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}function @@ -475591,7 +475588,7 @@ e=b[2][3],h=g(f[28],b[2][3],x),i=g(n[131],e,b);c(k[12],h,A,i);return d[1]})},fun e=b[2][3],h=g(f[28],b[2][3],C),i=g(n[133],e,b);c(k[12],h,D,i);return d[1]})},function(b){return c(j[2],I,e[5],function(a){var e=b[2][3],h=g(f[28],b[2][3],G),i=g(n[134],e,b);c(k[12],h,H,i);return d[1]})},r,function(b){return c(j[2],O,e[5],function(a){r(b[6]);return d[1]})},function(b){return E(j[8],Q,P,e[5],function(a){return a?h(b,[4,a[1]]):d[1]})}],"Haz3lweb__ExerciseMode");return}(globalThis)); -//# 4909 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4910 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var o="pause $e in\nhide let = in in\nlet x = 1 in\nlet y = 2 in\nx + y",n="pause $e in instruct the evaluator to act like a single-stepper, e.g. stop at every step. The hide filter expression instructs the evaluator to skip over all evaluator steps that destructs perform substitution on a let-expression. Here, the substitution of variable x and y is skipped over and we directly got 1 + 2 in the result area.",m="e_body",l="p",k=") that match the [*pattern*](",j=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}function @@ -475608,14 +475605,14 @@ j=[0,[0,29,d(c[86],F),E],0],k=e(f[7],0,a),l=e(f[7],0,b),m=g(h[4],G,l,k);return[0 e=[0,d(c[84],0),[0,b,0]],f=[0,a,[0,d(c[85],0),0]],g=[0,[0,d(c[85],0),f],0];return[0,d(c[82],g),e]}),m,j]},function(a){var b=e(f[7],0,a),j=e(f[7],0,a),k=g(h[4],J,j,b);return[0,72,72,e(i[73][8],[0,K,a],function(a){return[0,d(c[83],0),[0,a,0]]}),k,0]}],"Haz3lweb__FilterExp");return}(globalThis)); -//# 4927 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4928 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}var i=g.caml_get_global_data(),f=i.Haz3lcore__Piece,b=i.Haz3lweb__Example,d=c(b[22],"t_var"),e=c(b[21],"ty_arg"),j=[0,[0,c(f[30],d),[0,e,0]]],k=[0,d,[0,c(b[85],0),0]],l=[0,[0,c(b[85],0),k],0],h=[0,53,[0,c(b[30],l),[0,e,0]],j,"This forall type classifies polymorphic values varying over [*type variable*](%s) with [*instantiated type*](%s).",0];g.caml_register_global(5,[0,d,e,function(a,b){var g=[0,[0,c(f[30],e),b],0];return[0,[0,c(f[30],d),a],g]},h,[0,54,[0,h,0]]],"Haz3lweb__ForallTyp");return}(globalThis)); -//# 4935 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4936 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var h="p1",a2="BoolLit",n="p2",a1="p3",a0="StringLit",aZ="p_tl",d="e",m="...",aY="p_arg",aX="The only value that matches the [*argument pattern*](%s) is `%s`. When applied to an argument which matches the [*argument pattern*](%s), evaluates to the function [*body*](%s).",aQ="p_hd",aU="C",aV="x",aW="p",aP="INVALID",aT="FloatLit",aS="p_con",aO="_",aR="[]",aM="()",aN="IntLit",L=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):L.caml_call_gen(a,[b])}var @@ -475627,7 +475624,7 @@ d=[0,[0,e(f[30],aC),c],0],g=[0,[0,e(f[30],aB),b],d];return[0,[0,e(f[30],aA),a],g g=[0,[0,e(f[30],aF),d],0],h=[0,[0,e(f[30],G),c],g],i=[0,[0,e(f[30],F),b],h];return[0,[0,e(f[30],E),a],i]},aH,l,function(a,b){return g(c4,c3,a,b)},aJ,H,I,J,function(a,b,c){var d=[0,[0,e(f[30],J),c],0],g=[0,[0,e(f[30],I),b],d];return[0,[0,e(f[30],H),a],g]},aL,[0,[0,0],[0,c,0]],[0,[0,1],[0,aa,[0,c,0]]],[0,[0,2],[0,ac,[0,c,0]]],[0,[0,3],[0,af,[0,c,0]]],[0,[0,4],[0,ah,[0,c,0]]],[0,[0,5],[0,aj,[0,c,0]]],[0,[0,6],[0,al,[0,c,0]]],[0,[0,7],[0,an,[0,c,0]]],[0,[0,8],[0,ap,[0,c,0]]],[0,[0,9],[0,ar,[0,c,0]]],[0,[0,10],[0,at,[0,c,0]]],[0,[0,11],[0,aw,[0,c,0]]],[0,[0,12],[0,ay,[0,c,0]]],[0,[0,13],[0,k,[0,c,0]]],[0,[0,14],[0,aE,[0,k,[0,c,0]]]],[0,[0,15],[0,aH,[0,k,[0,c,0]]]],[0,[0,16],[0,aJ,[0,c,0]]],[0,[0,17],[0,aL,[0,c,0]]]],"Haz3lweb__FunctionExp");return}(globalThis)); -//# 4948 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4949 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):d.caml_call_gen(a,[b])}function @@ -475635,40 +475632,40 @@ j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):d.caml_call_gen(a,[b,c])}var b=d.caml_get_global_data(),f=[0,[11,"This should be filled with ",[2,0,[11," to complete the program.",0]]],"This should be filled with %s to complete the program."],g=b.Stdlib__Printf,h=b.Haz3lcore__Id,c="This is an invalid term.",i="INVALID";d.caml_register_global(5,[0,function(a,b,c){var d=j(g[4],f,b);return[0,c,[0,[1,[0,e(h[5],0),0]],0],0,d,0]},function(a,b){return[0,b,[0,e(a,i),0],0,c,0]}],"Haz3lweb__HoleTemplate");return}(globalThis)); -//# 4957 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4958 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}function h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var g=e.caml_get_global_data(),b=g.Haz3lweb__Example,c=g.Haz3lweb__HoleTemplate,d=h(c[1],b[19],"an expression",0),f=i(c[2],b[19],1);e.caml_register_global(3,[0,d,[0,0,[0,d,0]],f,[0,1,[0,f,0]]],"Haz3lweb__HoleExp");return}(globalThis)); -//# 4965 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4966 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var e=c.caml_get_global_data(),g=e.Haz3lweb__Example,b=[0,26,[0,[1,[0,f(e.Haz3lcore__Id[5],0),0]],0],0,"Expressions are not matched against the *empty hole pattern* until it is filled.",0],d=[0,27,[0,f(g[20],"Invalid"),0],0,"Expressions are not matched against the invalid pattern until it is corrected.",0];c.caml_register_global(5,[0,b,d,[0,27,[0,b,0]],[0,28,[0,d,0]]],"Haz3lweb__HolePat");return}(globalThis)); -//# 4972 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4973 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}function h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var g=e.caml_get_global_data(),b=g.Haz3lweb__Example,c=g.Haz3lweb__HoleTemplate,d=h(c[1],b[22],"a type pattern",64),f=i(c[2],b[22],65);e.caml_register_global(3,[0,d,[0,65,[0,d,0]],f,[0,66,[0,f,0]]],"Haz3lweb__HoleTPat");return}(globalThis)); -//# 4980 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4981 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var e=c.caml_get_global_data(),g=e.Haz3lweb__Example,b=[0,45,[0,[1,[0,f(e.Haz3lcore__Id[5],0),0]],0],0,"This marks a type that needs to be filled in.",0],d=[0,46,[0,f(g[21],"Invalid"),0],0,"This is an invalid type.",0];c.caml_register_global(5,[0,b,d,[0,46,[0,b,0]],[0,47,[0,d,0]]],"Haz3lweb__HoleTyp");return}(globalThis)); -//# 4987 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4988 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var l=c.caml_get_global_data(),h=l.Haz3lcore__Piece,b=l.Haz3lweb__Example,i=[0,8,d(b[86],"if (true) then 1 else 2"),"Since the condition is true, the if expression evaluates to the then branch, 1."],j=[0,9,d(b[86],"if (2 < 1) then 3 else 4"),"Since the condition is 2 < 1 is false, the if expression evaluates to the else branch, 4."],e=d(b[19],"e_cond"),f=d(b[19],"e_then"),g=d(b[19],"e_else"),m=[0,d(b[85],0),[0,g,0]],n=[0,f,[0,d(b[84],0),0]],o=[0,[0,d(b[85],0),n],0],p=[0,e,[0,d(b[84],0),0]],q=[0,[0,d(b[85],0),p],o],k=[0,21,[0,d(b[75],q),m],0,"If the [*condition*](%s) evaluates to `true`, evaluate the [*then branch*](%s). Otherwise, evaluate the [*else branch*](%s).",[0,i,[0,j,0]]];c.caml_register_global(10,[0,i,j,e,f,g,function(a,b,c){var i=[0,[0,d(h[30],g),c],0],j=[0,[0,d(h[30],f),b],i];return[0,[0,d(h[30],e),a],j]},k,[0,21,[0,k,0]]],"Haz3lweb__IfExp");return}(globalThis)); -//# 4995 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 4996 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var i="p1",bc="BoolLit",p="p2",bb="p3",ba="StringLit",g="e_def",a1="The 1 is thrown away, so the expression evaluates to 2.",a_="p_tl",a$="The true is thrown away, so the expression evaluates to 2.",a9="The only value for the [*definition*](%s) that matches the [*pattern*](%s) is `%s`. The [*definition*](%s) can't be referenced in the [*body*](%s).",o="...",d="e_body",a8="p_arg",a0="p_hd",a5="C",a6="x",a7="p",aZ="INVALID",a4="FloatLit",a3="p_con",aY="_",a2="[]",aW="()",aX="IntLit",N=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):N.caml_call_gen(a,[b])}var @@ -475682,7 +475679,7 @@ d=[0,[0,e(f[30],aM),c],0],g=[0,[0,e(f[30],aL),b],d];return[0,[0,e(f[30],aK),a],g g=[0,[0,e(f[30],aP),d],0],h=[0,[0,e(f[30],H),c],g],i=[0,[0,e(f[30],G),b],h];return[0,[0,e(f[30],F),a],i]},aR,n,I,function(a,b,c){return h(d0,dZ,dY,a,b,c)},aT,J,K,L,function(a,b,c){var d=[0,[0,e(f[30],L),c],0],g=[0,[0,e(f[30],K),b],d];return[0,[0,e(f[30],J),a],g]},aV,[0,[1,1],[0,ac,[0,c,0]]],[0,[1,2],[0,ae,[0,c,0]]],[0,[1,3],[0,ai,[0,c,0]]],[0,[1,4],[0,al,[0,c,0]]],[0,[1,5],[0,ao,[0,c,0]]],[0,[1,6],[0,ar,[0,c,0]]],[0,[1,7],[0,au,[0,c,0]]],[0,[1,8],[0,ax,[0,c,0]]],[0,[1,10],[0,az,[0,c,0]]],[0,[1,9],[0,aC,[0,c,0]]],[0,[1,11],[0,aF,[0,c,0]]],[0,[1,12],[0,aI,[0,c,0]]],[0,[1,13],[0,m,[0,c,0]]],[0,[1,14],[0,aO,[0,m,[0,c,0]]]],[0,[1,15],[0,aR,[0,m,[0,c,0]]]],[0,[1,16],[0,aT,[0,c,0]]],[0,[1,17],[0,aV,[0,c,0]]]],"Haz3lweb__LetExp");return}(globalThis)); -//# 5010 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5011 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var i=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}var @@ -475690,7 +475687,7 @@ o=i.caml_get_global_data(),d=o.Haz3lcore__Piece,b=o.Haz3lweb__Example,p=[0,[0,0] g=[0,[0,c(d[30],f),b],0];return[0,[0,c(d[30],e),a],g]},m,g,h,function(a,b){var e=[0,[0,c(d[30],h),b],0];return[0,[0,c(d[30],g),a],e]},n,[0,10,[0,j,0]],[0,11,[0,m,0]],[0,12,[0,n,0]]],"Haz3lweb__ListExp");return}(globalThis)); -//# 5019 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5020 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c="p_tl",r="p_snd",l=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}var @@ -475698,13 +475695,13 @@ q=l.caml_get_global_data(),e=q.Haz3lcore__Piece,b=q.Haz3lweb__Example,s=[0,d(b[2 c=[0,[0,d(e[30],g),b],0];return[0,[0,d(e[30],f),a],c]},h,i,j,k,function(a,b,c){var f=[0,[0,d(e[30],k),c],0],g=[0,[0,d(e[30],j),b],f];return[0,[0,d(e[30],i),a],g]},p,[0,37,[0,m,0]],[0,38,[0,n,0]],[0,39,[0,h,0]],[0,40,[0,p,[0,h,0]]]],"Haz3lweb__ListPat");return}(globalThis)); -//# 5028 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5029 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var g=c.caml_get_global_data(),e=g.Haz3lweb__Example,h=g.Haz3lcore__Piece,b=d(e[21],"ty_elem"),f=[0,52,[0,d(e[29],[0,[0,b,0],0]),0],0,"The list type classifies lists with elements with the corresponding [*element type*](%s).",0];c.caml_register_global(4,[0,b,function(a){return[0,[0,d(h[30],b),a],0]},f,[0,53,[0,f,0]]],"Haz3lweb__ListTyp");return}(globalThis)); -//# 5035 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5036 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var bt="If the [*left operand*](%s) is not equal to the [*right operand*](%s), evaluates to `true`. Otherwise, evaluates to `false`.",by="5 is equal to 5, so the expression evaluates to true.",bB="Gives the quotient of the [*left*](%s) and [*right*](%s) operands.",bs="e",bx="4. is greater than 3.1, so the expression evaluates to true.",f="e2",bn="1 is less than 2, so the expression evalutes to true.",br="Gives the sum of the [*left*](%s) and [*right*](%s) operands.",bw="Gives the product of the [*left*](%s) and [*right*](%s) operands.",bv="If the [*left operand*](%s) is greater than or equal to the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",bA="4 is greater than 3, so the expression evaluates to true.",bq="5.5 is equal to 5.5, so the expression evaluates to true.",q="If the [*left operand*](%s) is equal to the [*right operand*](%s), evaluates to `true`. Otherwise, evaluates to `false`.",bu="If the [*left operand*](%s) is less than or equal to the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",bz="1. is less than 2.1, so the expression evalutes to true.",bp="Gives the difference of the [*left*](%s) and [*right*](%s) operands.",bo="If the [*left operand*](%s) is greater than the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",g="e1",bm="If the [*left operand*](%s) is less than the [*right operand*](%s), evaluates to `true`. Otherwise evaluates to `false`.",p=a.jsoo_runtime;function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):p.caml_call_gen(a,[b])}var @@ -475740,7 +475737,7 @@ f=c(d[30],bf);return e(c(d[30],be),f,a,b)},bg,function(a,b){var f=c(d[30],bi);return e(c(d[30],bh),f,a,b)},bj,n,o,function(a,b){var f=c(d[30],o);return e(c(d[30],n),f,a,b)},bk,[0,[2,[2,0]],[0,af,0]],[0,[2,[1,0]],[0,ag,0]],[0,[3,[0,0]],[0,aj,0]],[0,[3,[0,1]],[0,am,0]],[0,[3,[0,2]],[0,an,0]],[0,[3,[0,3]],[0,ao,0]],[0,[3,[0,4]],[0,ar,0]],[0,[3,[0,5]],[0,au,0]],[0,[3,[0,6]],[0,ax,0]],[0,[3,[0,7]],[0,aA,0]],[0,[3,[0,8]],[0,aD,0]],[0,[3,[0,9]],[0,aG,0]],[0,[3,[0,10]],[0,aJ,0]],[0,[3,[1,0]],[0,aM,0]],[0,[3,[1,1]],[0,aP,0]],[0,[3,[1,2]],[0,aQ,0]],[0,[3,[1,3]],[0,aR,0]],[0,[3,[1,4]],[0,aU,0]],[0,[3,[1,5]],[0,aX,0]],[0,[3,[1,6]],[0,a0,0]],[0,[3,[1,7]],[0,a3,0]],[0,[3,[1,8]],[0,a6,0]],[0,[3,[1,9]],[0,a9,0]],[0,[3,[1,10]],[0,ba,0]],[0,[3,[2,0]],[0,bd,0]],[0,[3,[2,1]],[0,bg,0]],[0,[3,[3,1]],[0,bj,0]],[0,[3,[3,0]],[0,bk,0]]],"Haz3lweb__OpExp");return}(globalThis)); -//# 5072 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5073 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var aA="messageContent",az="@ ",y="%s%s%s%s",aG="<2>",aF="option",ae="%s%s%s%s%s",aD=",@ ",aw="colorings",ax="@,",ay="example",aC="expandable",s="%s",aM="examples",N="Colorings",aK="src/haz3lweb/view/ExplainThis.re.message_mode",o="%s%s%s",aI="style",aB="active",M="MessageContent",p="%s%s",Y=848054398,Z=-976970511,_=139,w=a.jsoo_runtime,n=w.caml_equal;function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):w.caml_call_gen(a,[b])}function @@ -476261,7 +476258,7 @@ var i=c6;var x=[0,ad(cR,i,u),s],y=h(t[37],x,p),z=[0,j(m[5],cT),0],A=[0,j(v[1][55],function(a){return j(f,cU)}),0],B=[0,[0,j(q[1],cV),A]],D=[0,l(m[14],0,B,z),0],E=[0,r(c1[5],cZ,cY,1===c[8][3]?1:0,function(a){return j(f,cX)}),D],F=[0,[0,j(q[1],c2),0]],G=[0,l(m[14],0,F,E),0],H=h(t[37],G,y),I=[0,[0,j(q[1],c3),0]],J=[0,l(m[14],0,I,H),o],K=[0,[0,j(v[1][23],c5),0]];return l(m[14],0,K,J)}],"Haz3lweb__ExplainThis");return}(globalThis)); -//# 5594 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5595 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}function @@ -476269,7 +476266,7 @@ h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] c=e.caml_get_global_data(),b=c.Virtual_dom__Node,f="X",g=c.Virtual_dom__Vdom;e.caml_register_global(3,[0,function(a){var c=[0,d(b[5],f),0],e=[0,[0,d(g[1][23],a),0]];return h(b[38],0,e,c)}],"Haz3lweb__FontSpecimen");return}(globalThis)); -//# 5603 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5604 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var h="ArrowDown",A="Tab",k="z",z="d",y="Alt",g="ArrowUp",x="k",n="a",j="Home",w="p",v="Z",f="ArrowLeft",i="End",u="/",e="ArrowRight",d=a.jsoo_runtime,t=d.caml_int_of_string,s=d.caml_string_compare;function m(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):d.caml_call_gen(a,[b])}function @@ -476287,7 +476284,7 @@ r=s(b,"\xc3\x9f");if(0<=r){if(0>=r)return Z;if(b==="\xc3\xa7")return Y;if(b==="\ if(a[3]){if(a[4]){if(a[6])return b!==n?b!=="e"?0:c(au):c(av)}else if(a[5]&&a[6])return b!==u?b!==n?b!==z?b!==x?b!==w?b!==k?l(b)?[0,[10,t(b)]]:b!==h?b!==f?b!==e?b!==g?0:c(aw):c(ax):c(ay):c(az):aA:aB:aC:c(aD):c(aE):aF}else if(!a[4]&&a[5]&&a[6]){if(b===h)return c(aK);if(b===f)return c(aJ);if(b===e)return c(aI);if(b===g)return c(aH);if(b!==v&&b!==k)return 0;return aG}}return 0}if(p){var q=s(b,"Delete");if(0<=q){if(0>=q)return c(I);if(b===i)return c(H);if(b==="Escape")return c(G);if(b==="F12")return c(F);if(b===j)return c(E);if(b===A)return D}else{if(b===h)return c(N);if(b===f)return c(M);if(b===e)return c(L);if(b===g)return c(K);if(b==="Backspace")return c(J)}}else{if(b===h)return c(U);if(b===f)return c(T);if(b===e)return c(S);if(b===g)return c(R);if(b===i)return c(Q);if(b===j)return c(P);if(b===A)return c(O)}return b!=="Enter"?1===d.caml_ml_string_length(b)?c([8,b]):0:c([8,C[41]])}],"Haz3lweb__Keyboard");return}(globalThis)); -//# 5622 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5623 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var k=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}function @@ -476316,7 +476313,7 @@ m(a,b,c){var f=[0,[0,e(i[1],am),0]],g=[0,d(j[14],0,f,c),0],h=[0,[0,e(i[1],an),0]],k=[0,d(j[14],0,h,[0,b,0]),0],l=[0,e(ao[1][43],a),0],m=[0,[0,e(i[1],ap),l]],n=[0,d(j[14],0,m,k),g],o=[0,[0,e(i[1],aq),0]];return d(j[14],0,o,n)}k.caml_register_global(70,[0,n,o,p,q,r,t,m,function(a,b,c){var g=[0,d(h[4],as,f[4],ar),0],k=[0,o,[0,d(h[4],au,f[12],at),g]],l=[0,p(a),k],n=t(a,c),s=[0,m(av,f[8],n),l],u=r(a,b,c),v=[0,m(aw,f[7],u),s],w=q(a,b),x=[0,m(ax,f[3],w),v],y=[0,[0,e(i[1],ay),0]],z=[0,d(j[14],0,y,x),0],A=[0,f[17],0],B=[0,[0,e(i[1],az),0]];return[0,d(j[7],0,B,A),z]}],"Haz3lweb__NutMenu");return}(globalThis)); -//# 5652 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5653 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var i=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}function @@ -476349,7 +476346,7 @@ H=[0,f(G[8],a,h,d),0],J=[0,e(j[5],I),0],L=[0,[0,e(c[1][23],K),0]],M=[0,f(j[14],0 b=e(p[25],a[1]);return e(n[17],b)},function(a,b){var h=o(a,b),i=[0,E[28],[0,k[23],0]],m=[0,e(H[1],F),i],n=g(l[37],m,h),q=d(a,e(p[25],b[1])),r=[0,[0,e(c[1][23],J),q]];return f(j[14],0,r,n)}],"Haz3lweb__Page");return}(globalThis)); -//# 5783 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" +//# 5784 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" (function(a){"use strict";var A="clearStore",f="TurnOffDynamics",c="ClearStore",z="src/haz3lweb/view/DebugMode.re.action",y="turnOffDynamics",q=-976970511,l=848054398,h=a.jsoo_runtime;function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}function @@ -476437,4 +476434,4 @@ I=[0,[0,c[14]],[0,f[34]],[0],n,D],J=d(c[19],c[16]);Q(M[1],L,0,0,K,J,I)}h.caml_re (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiVmRvbVRodW5rIiwiYXJncyIsIkdlbmVyaWNIb29rIiwiaW5pdCIsInVwZGF0ZSIsImRlc3Ryb3kiLCJleHRyYSIsImhvb2tfc3RhdGVfa2V5IiwiU3ltYm9sIiwic3RhdGUiLCJmcm9tIiwidG8iLCJCYXNlX2FtX3Rlc3RpbmciLCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF9pc19jb250aW51YXRpb25fdGFnIiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsImNhbWxfaGFzaF9taXhfanNieXRlcyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9pbnQ2NF9sbzMyIiwidiIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2hfbWl4X2J5dGVzX2FyciIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJqc29vX2lzX2FzY2lpIiwiY2FtbF91dGYxNl9vZl91dGY4IiwiYzEiLCJjMiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImNvbnRlbnQiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfYmFfc2VyaWFsaXplIiwid3JpdGVyIiwiYmEiLCJzeiIsImNvbXBsZXgiLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmFpc2Vfd2l0aF9hcmciLCJhcmciLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQiLCJraW5kIiwiY2FtbF9iYV9jcmVhdGVfYnVmZmVyIiwic2l6ZSIsInZpZXciLCJGbG9hdDY0QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsInJlcyIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9iYV9jdXN0b21fbmFtZSIsIk1sX0JpZ2FycmF5IiwibGF5b3V0IiwiYnVmZmVyIiwib2ZzIiwiaW0iLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX2JhX2Rlc2VyaWFsaXplIiwicmVhZGVyIiwibnVtX2RpbXMiLCJzaXplX2RpbSIsInNpemVfZGltX2hpIiwic2l6ZV9kaW1fbG8iLCJzaXh0eSIsImludDY0IiwiY2FtbF9iYV9jb21wYXJlIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJjYW1sX2ludDMyX3VubWFyc2hhbCIsImNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCIsImNhbWxfaW50NjRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF9tYXJzaGFsIiwic2l6ZXMiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9pc19tbF9zdHJpbmciLCJjYW1sX2lzX21sX2J5dGVzIiwiY2FtbF9oYXNoIiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsIm51bSIsImhoIiwiQmFzZV9oYXNoX2RvdWJsZSIsIkJhc2VfaGFzaF9zdHJpbmciLCJCYXNlX2ludF9tYXRoX2ludDMyX2NseiIsIkJhc2VfaW50X21hdGhfaW50MzJfY3R6IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfaW50NjRfdG9faW50MzIiLCJCYXNlX2ludF9tYXRoX2ludDY0X2NseiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsIkJhc2VfaW50X21hdGhfaW50NjRfY3R6IiwiaXNfemVybyIsImxhbmQiLCJzbWFsbF9pbnQ2NCIsImNhbWxfaW50NjRfbXVsIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiIsImJhc2UiLCJleHBvbmVudCIsIm9uZSIsIm11bCIsIkJhc2VfaW50X21hdGhfaW50X2NseiIsIkJhc2VfaW50X21hdGhfaW50X2N0eiIsIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IiwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHoiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHoiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmciLCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZSIsImNhbWxfY3JlYXRlX2J5dGVzIiwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzIiwidl9sZW4iLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfYmFfZ2V0XzEiLCJpMCIsIkJpZ1N0cmluZ1JlYWRlciIsImJzIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJwYXRoIiwiZXJybm8iLCJ2YXJpYW50IiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiTWxGYWtlRmQiLCJmaWxlIiwiTWxGYWtlRGV2aWNlIiwiY29tcCIsIm5hbWVfc2xhc2giLCJtb2RlIiwicmFpc2VfdW5peCIsInBhcmVudCIsInNlZW4iLCJtIiwiZW50cnkiLCJvayIsImJ5dGVzIiwiTWxGYWtlRmRfb3V0IiwiZmQiLCJzcmMiLCJNbE11dGV4IiwiTWxOYXQiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmciLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9ieXRlc19zZXQiLCJNbE5vZGVGZCIsImJ1Zl9vZmZzZXQiLCJyZWFkIiwiTWxOb2RlRGV2aWNlIiwiY29uc3RzIiwiaXNDaGFyYWN0ZXJEZXZpY2UiLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiTWxTdHJpbmdSZWFkZXIiLCJVSW50OEFycmF5UmVhZGVyIiwiaW5jcl9uYXQiLCJuYXQiLCJjYXJyeV9pbiIsImNhcnJ5IiwiYWRkX25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibGVuMiIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfY3JlYXRlIiwiZGltc19tbCIsImJpZ3N0cmluZ19hbGxvYyIsIl8iLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwicG9zMSIsImJ5dGVzMiIsInBvczIiLCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYSIsInN0cjEiLCJiYTIiLCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImJpZ3N0cmluZ19ibGl0X3N0dWIiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX2ZpbmQiLCJjaHIiLCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJ2X3MxIiwidl9zMV9wb3MiLCJ2X3MyIiwidl9zMl9wb3MiLCJiaWdzdHJpbmdfbWVtY21wX3N0dWIiLCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlIiwiaGF5c3RhY2siLCJoYXlzdGFja19wb3MiLCJoYXlzdGFja19sZW4iLCJuZWVkbGVfcG9zIiwibmVlZGxlX2xlbiIsImxpbSIsIm1hdGNoZXMiLCJjYW1sX2JhX3NldF8xIiwiYmlnc3RyaW5nX21lbXNldF9zdHViIiwiYmlnc3RyaW5nIiwidl9wb3MiLCJ2X2NoYXIiLCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIiwiYWIiLCJ0YSIsImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSIsImJpZ3N0cmluZ19yZWFsbG9jIiwibmV3X2RhdGEiLCJuZXdfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJpZ3N0cmluZ190b190eXBlZF9hcnJheSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzIiwiYmlnc3RyaW5nYWZfbWVtY2hyIiwiYmFfb2ZmIiwiY2FtbF9pbnRfY29tcGFyZSIsImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmciLCJiYTFfb2ZmIiwiYmEyX29mZiIsImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmciLCJzdHJfb2ZmIiwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJhcnJheSIsImNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nIiwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YiIsImJpbl9wcm90X2JsaXRfYnVmX3N0dWIiLCJiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJibGFrZTJiIiwiQURENjRBQSIsIm8wIiwibzEiLCJBREQ2NEFDIiwiYjAiLCJiMSIsIkIyQl9HRVQzMiIsIkIyQl9HIiwiaXgiLCJpeSIsIngwIiwieDEiLCJ5MCIsInkxIiwieG9yMCIsInhvcjEiLCJCTEFLRTJCX0lWMzIiLCJVaW50MzJBcnJheSIsIlNJR01BOCIsIlNJR01BODIiLCJibGFrZTJiQ29tcHJlc3MiLCJjdHgiLCJsYXN0IiwicGFyYW1ldGVyQmxvY2siLCJibGFrZTJiSW5pdCIsIm91dGxlbiIsImJsYWtlMmJVcGRhdGUiLCJpbnB1dCIsImJsYWtlMmJGaW5hbCIsIm91dCIsImJsaXRfbmF0IiwiY2FtbF9NRDVUcmFuc2Zvcm0iLCJhZGQiLCJ4eCIsImZmIiwiZ2ciLCJjYW1sX01ENUZpbmFsIiwiaW5fYnVmIiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJiOCIsImNhbWxfTUQ1VXBkYXRlIiwiaW5wdXRfbGVuIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfYWNvc2hfZmxvYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsIm5hcmdzIiwiZXh0cmFfYXJncyIsImNhbWxfYWxsb2NfZHVtbXlfaW5maXgiLCJjYW1sX2FsbG9jX3N0YWNrIiwiaHYiLCJoeCIsImhmIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJwIiwiYXJnczIiLCJjYW1sX2FycmF5X2FwcGVuZCIsImExIiwiYTIiLCJsMSIsImwyIiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2FycmF5X2ZpbGwiLCJjYW1sX2FycmF5X2dldCIsImNhbWxfYXJyYXlfb2ZfYnl0ZXMiLCJjYW1sX2FycmF5X29mX3N0cmluZyIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2FzaW5oX2Zsb2F0IiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfYXRvbWljX2NhcyIsInJlZiIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9iYV9ibGl0IiwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0IiwibmV3X2RpbXMiLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2JhX2ZpbGwiLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfYmFfaW5pdCIsImNhbWxfYmFfa2luZCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9iYV9zZXRfMiIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJiMiIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJiMyIsImI0IiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImI1IiwiYjYiLCJiNyIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2JhX3VpbnQ4X3NldDMyIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfYmFja3RyYWNlX3N0YXR1cyIsIl91bml0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9ibGFrZTJfY3JlYXRlIiwiaGFzaGxlbiIsImNhbWxfYmxha2UyX2ZpbmFsIiwiY2FtbF9ibGFrZTJfdXBkYXRlIiwiY2FtbF9ibGFrZTJfc3RyaW5nIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnN3YXAxNiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiY2FtbF9idWlsZF9zeW1ib2xzIiwic3ltYiIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2J5dGVzX25vdGVxdWFsIiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0MTYiLCJpMTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiaTMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfY2FsbGJhY2siLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9jaGFubmVsX2dldCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2hhbmlkIiwiY2hhbiIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfY29tcGFyZSIsImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4YyIsImNvbnQiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfY29zaF9mbG9hdCIsImZzX25vZGVfc3VwcG9ydGVkIiwibWFrZV9wYXRoX2lzX2Fic29sdXRlIiwicG9zaXgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwibmNvbXAiLCJjYW1sX2dldF9yb290IiwiY2FtbF9yb290IiwianNvb19tb3VudF9wb2ludCIsInJlc29sdmVfZnNfZGV2aWNlIiwiY2FtbF9jcmVhdGVfZmlsZSIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfY3NlbF92YWx1ZSIsInZfY29uZCIsInZfdHJ1ZSIsInZfZmFsc2UiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsInpzdGRfZGVjb21wcmVzcyIsInU4IiwidTE2IiwidTMyIiwic2xjIiwiZmlsbCIsImNwdyIsImVjIiwiaW5kIiwibnQiLCJyYiIsInJ6ZmgiLCJkYXQiLCJuMyIsImZsZyIsInNzIiwiY2MiLCJkZiIsImZjZiIsImJ0IiwiZGIiLCJkaSIsImZzYiIsImZzcyIsIndzIiwid2IiLCJtc2IiLCJ2YWwiLCJiaXRzIiwicmZzZSIsIm1hbCIsInRwb3MiLCJhbCIsInByb2JzIiwic3ltIiwiaHQiLCJmcmVxIiwiZHN0YXRlIiwibnN0YXRlIiwiYmIxIiwic3ltcyIsIm5iaXRzIiwiY2J0IiwibXNrIiwibXNrMWZiIiwibXN2Iiwic3ZhbCIsInJidCIsInN5bXBvcyIsInNzdGVwIiwic21hc2siLCJzZiIsIm5iIiwicmh1Iiwid2MiLCJoYiIsImh3IiwicmMiLCJyaSIsIl9hIiwiZWJ0IiwiZmR0IiwiZXBvcyIsImxiIiwic3QxIiwic3QyIiwiYnRyMSIsImJ0cjIiLCJmcG9zIiwiYnl0ZSIsIndlcyIsInd0IiwibWIiLCJ0cyIsInJlbSIsImhidWYiLCJwdiIsImRsbHQiLCJkbWx0IiwiZG9jdCIsImIyYmwiLCJibCIsImxsYiIsImxsYmwiLCJtbGIiLCJtbGJsIiwiZGh1IiwiaHUiLCJlYiIsInN0IiwiYnRyIiwiZGh1NCIsInN6MSIsInN6MiIsInN6MyIsInJ6YiIsImJ0eXBlIiwibGJ0IiwibHNzIiwibGNzIiwiczQiLCJzcGwiLCJodWQiLCJzY20iLCJkdHMiLCJtZCIsInJidWYiLCJfYiIsIm1sdCIsIm9jdCIsImxsdCIsInNwb3MiLCJvdWJ0IiwibHN0Iiwib3N0IiwibXN0IiwibGxjIiwibGJ0ciIsIm1sYyIsIm1idHIiLCJvZmMiLCJvYnRyIiwib2ZwIiwibWwiLCJsbCIsImlkeCIsInN0aW4iLCJjY3QiLCJidWZzIiwib2wiLCJjaGsiLCJibGsiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2RpdiIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwidW5pdCIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX2RvbWFpbl9pZCIsImNhbWxfbWxfbXV0ZXhfdW5sb2NrIiwiY2FtbF9kb21haW5fbGF0ZXN0X2lkeCIsImNhbWxfZG9tYWluX3NwYXduIiwidGVybV9zeW5jIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF9lcGhlX2tleV9vZmZzZXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfZXBoZV9nZXRfa2V5IiwiY2FtbF9lcGhlX2dldF9rZXlfY29weSIsInoiLCJjYW1sX2VwaGVfc2V0X2tleSIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjYW1sX2VxdWFsIiwiY2FtbF9lcmZfZmxvYXQiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZXhwbTFfZmxvYXQiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0Iiwic3RhcnQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsImZzIiwiY2FtbF9wYXJzZV9mb3JtYXQiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJ0bXAiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9nY19nZXQiLCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQiLCJjYW1sX2djX21ham9yIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJjYW1sX2djX21pbm9yIiwiY2FtbF9nY19taW5vcl93b3JkcyIsImNhbWxfZ2NfcXVpY2tfc3RhdCIsImNhbWxfZ2Nfc2V0IiwiX2NvbnRyb2wiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImNhbWxfZ2V0X21pbm9yX2ZyZWUiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfZ3JfYXJjX2F1eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZ3JfY3JlYXRlX2ltYWdlIiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X2NoYXIiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJjYW52YXMiLCJpbWFnZSIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfZ3JfbWFrZV9pbWFnZSIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbG9yIiwiY29udmVydCIsImNfc3RyIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9zdGF0ZV9zZXQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNvbnRleHQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwiZ2V0Iiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX2dyX29wZW5fc3Vid2luZG93IiwiY2FtbF9ncl9wbG90IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX2dyX3RleHRfc2l6ZSIsInR4dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaGFzaF9taXhfYmlnc3RyaW5nIiwibnVtX2RpZ2l0c19uYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQiLCJzdHlsZSIsImV4cF9zaWduIiwic2lnbl9zdHIiLCJjc3QiLCJ4X3N0ciIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUiLCJjYW1sX3JlZmlsbCIsInN0cl9hIiwibnJlYWQiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsImludGVybl9vYmpfdGFibGUiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJvcHMiLCJleHBlY3RlZF9zaXplIiwib2xkX3BvcyIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSIsImNhbWxfaW50NjRfbmVnIiwiY2FtbF9pbnQ2NF9mb3JtYXQiLCJ3YmFzZSIsImN2dGJsIiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfeG9yIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9pc19qcyIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9qc19jYWxsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImNhbWxfanNfZXhwciIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX2dldF9jb25zb2xlIiwiY2FtbF9qc19odG1sX2VudGl0aWVzIiwiZW50aXR5IiwidGVtcCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfbmV3IiwiRiIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX2pzX3RvX3N0cmluZyIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9qc192YXIiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJGdW5jdGlvbiIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3RhZyIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsImJhY2t0cmsiLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfbHhtX25leHQiLCJzaGlmdF9sIiwic2hpZnRfciIsIm9yIiwieG9yIiwicm90bCIsInNldCIsIk0iLCJkYWJhIiwicTAiLCJxMSIsImNhbWxfbWFrZV9mbG9hdF92ZWN0IiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21ha2VfbG9jYWxfdmVjdCIsInZfZWx0IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfbWF5YmVfcHJpbnRfc3RhdHMiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWQ1X2NoYW4iLCJ0b3JlYWQiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX21lbXByb2ZfZGlzY2FyZCIsImNhbWxfbWVtcHJvZl9zZXQiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCIsImNhcHR1cmVkIiwiaW50byIsInRvX3Jlc3RvcmUiLCJuZXdfIiwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9zeXNfZmRzIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2JpZ2FycmF5IiwiY2FtbF9tbF9pbnB1dF9jaGFyIiwiY2FtbF9tbF9pbnB1dF9pbnQiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsInByZXZfbWF4IiwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZSIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX21sX211dGV4X2xvY2siLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2siLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZmQyIiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzIiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IiwiYnVmZmVyZWQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXRfNjQiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0IiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJjYW1sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfbWxfc2V0X2J1ZmZlcmVkIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfbW9kIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9tb3VudF9hdXRvbG9hZCIsImNhbWxfbGV4X3J1bl9tZW0iLCJtZW0iLCJjdXJyX3BvcyIsImNhbWxfbGV4X3J1bl90YWciLCJjYW1sX25ld19sZXhfZW5naW5lIiwibGV4X21lbSIsImxleF9iYXNlX2NvZGUiLCJsZXhfYmFja3Rya19jb2RlIiwibGV4X2RlZmF1bHRfY29kZSIsImxleF90cmFuc19jb2RlIiwibGV4X2NoZWNrX2NvZGUiLCJsZXhfY29kZSIsInBjX29mZiIsInBzdGF0ZSIsImJhc2VfY29kZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9ub3RlcXVhbCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfb2pzX25ld19hcnIiLCJjYW1sX291dF9jaGFubmVsX3Bvc19mZCIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsIm1lbW8iLCJleGlzdGluZ19vZmZzZXQiLCJleHRlcm5fcmVjIiwic3pfMzJfNjQiLCJoZWFkZXJfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJjbWQiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF9yb3VuZF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjdXJzb3IiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImNhbGxiYWNrcyIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfcnVudGltZV92YXJpYW50IiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJvbGRmbGFnIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfc3BhY2V0aW1lX2VuYWJsZWQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfc3RyX2luaXRpYWxpemUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2NvbmNhdCIsImNhbWxfc3RyaW5nX2VxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9zdHJpbmdfbGVzc2VxdWFsIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9zdHJpbmdfc2V0MzIiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIm9zX3R5cGUiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWUiLCJjYW1sX3N5c19leGl0IiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19nZXRlbnYiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImNhbWxfc3lzX21rZGlyIiwicGVybSIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9zeXNfcmFuZG9tX3NlZWQiLCJub3ciLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjaGlsZF9wcm9jZXNzIiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9zeXNfdW5zYWZlX2dldGVudiIsImNhbWxfdGFuaF9mbG9hdCIsImNhbWxfdG9fanNfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfdW5peF9jbG9zZWRpciIsImRpcl9oYW5kbGUiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwiY2FtbF91bml4X2ZpbmRuZXh0IiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF9nZXR1aWQiLCJjYW1sX3VuaXhfZ210aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfdW5peF9pc2F0dHkiLCJmaWxlRGVzY3JpcHRvciIsInR0eSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9sc3RhdCIsImNhbWxfdW5peF9sc3RhdF82NCIsImNhbWxfdW5peF9ta2RpciIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdW5peF9yZWFkbGluayIsImNhbWxfdW5peF9yZXdpbmRkaXIiLCJuZXdfZGlyX2hhbmRsZSIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF91bml4X3N0YXQiLCJjYW1sX3VuaXhfc3RhdF82NCIsImNhbWxfdW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfdW5peF90aW1lIiwiY2FtbF91bml4X3VubGluayIsImNhbWxfdW5tb3VudCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX3hkZ19kZWZhdWx0cyIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF96c3RkX2luaXRpYWxpemUiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjb21wYXJlX25hdCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjb21wbGVtZW50X25hdCIsImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXQiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvcmVfZ2NfY29tcGFjdGlvbnMiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY29yZV9nY19oZWFwX3dvcmRzIiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNvcmVfZ2NfbWFqb3Jfd29yZHMiLCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zIiwiY29yZV9nY19taW5vcl93b3JkcyIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyIsImNvcmVfZ2NfdG9wX2hlYXBfd29yZHMiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY29yZV9tZDVfZmQiLCJpYyIsImNvcmVfdGltZV9uc19mb3JtYXQiLCJ0aW1lIiwiZm9ybWF0anMiLCJqc3RyaW5nIiwiY3JlYXRlX25hdCIsImRlY3JfbmF0IiwiYm9ycm93IiwiZGVzZXJpYWxpemVfbmF0IiwiZGl2X2hlbHBlciIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJ3cmFwIiwic2hpZnRfcmlnaHRfbmF0Iiwic2V0X3RvX3plcm9fbmF0IiwibmF0X29mX2FycmF5IiwibXVsdF9kaWdpdF9uYXQiLCJuYXQzIiwib2ZzMyIsIngyIiwieDMiLCJzdWJfbmF0IiwiZGl2X25hdCIsInF1byIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QiLCJ2c3Rkb3V0IiwidnN0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCIsInZvdXRwdXQiLCJzZXJpYWxpemVfbmF0IiwiaW5pdGlhbGl6ZV9uYXQiLCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmciLCJpc19kaWdpdF9pbnQiLCJpc19kaWdpdF9vZGQiLCJpc19kaWdpdF96ZXJvIiwianNfcGVyZm9ybWFuY2UiLCJwZXJmX2hvb2tzIiwiX2UiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImpzX3Byb2ZfbWFyayIsImpzX3Byb2ZfbWVhc3VyZSIsImVuZCIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImxhbmRfZGlnaXRfbmF0IiwibGVuZ3RoX25hdCIsImxvcl9kaWdpdF9uYXQiLCJseG9yX2RpZ2l0X25hdCIsIm11bHRfbmF0IiwibGVuMyIsIm50aF9kaWdpdF9uYXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJwdXNoIiwiYWNjZXB0IiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfcGFydGlhbF9tYXRjaCIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsInJlX3NlYXJjaF9mb3J3YXJkIiwicmVfc3RyaW5nX21hdGNoIiwic2V0X2RpZ2l0X25hdCIsImRpZ2l0Iiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJzcXVhcmVfbmF0IiwibXNfdG9fbmFubyIsInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyIsIm1zIiwibXNfaTYzIiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0Iiwic3ltYm9sX2NvbmNhdCIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwiaSQwIiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN5bWJvbCIsImwxIiwibDIiLCJoMSIsImgyIiwidGwiLCJoMyIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwib3Blbl9vdXRfZ2VuIiwibW9kZSIsInBlcm0iLCJuYW1lIiwiYyIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwiZmx1c2hfYWxsIiwiYSIsIm91dHB1dF9ieXRlcyIsIm9jIiwib3V0cHV0X3N0cmluZyIsIm91dHB1dCIsIm9mcyIsImxlbiIsIm91dHB1dF9zdWJzdHJpbmciLCJvdXRwdXRfdmFsdWUiLCJjaGFuIiwidiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwiciIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiaGQiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQwIiwic3RyMiIsInN0cjEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4kMCIsIm9sZF9leGl0JDAiLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjEiLCJ2MiIsInYxJDAiLCJ2MiQwIiwiY29tcGFyZSIsIm9jYW1sX3ZlcnNpb24iLCJvY2FtbF9yZWxlYXNlIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsImJhY2tlbmRfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImdldGVudl9vcHQiLCJpbnRlcmFjdGl2ZSIsInNldF9zaWduYWwiLCJzaWdfbnVtIiwic2lnX2JlaCIsImNhdGNoX2JyZWFrIiwib24iLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsIm1ha2UiLCJ1aWQiLCJBIiwicHJvdmFibHlfZXF1YWwiLCJCIiwic2V0IiwiaW5jciIsImRlY3IiLCJmb3JjZV9nZW5fbGF6eV9ibG9jayIsIm9ubHlfdmFsIiwiYmxrIiwiY2xvc3VyZSQwIiwicmVzdWx0JDAiLCJjbG9zdXJlIiwicmVzdWx0IiwiZSQwIiwiZm9yY2VfbGF6eV9ibG9jayIsImZvcmNlX2dlbiIsImx6diIsInQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwieHMkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQiLCJiaW5kIiwiam9pbiIsIm5vbmUiLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJoYXNoIiwiZXNjYXBlZCIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImMxIiwiYzIiLCJlcnJfbm9fcHJlZCIsImVycl9ub19zdWNjIiwibG9fYm91bmQiLCJoaV9ib3VuZCIsInN1Y2MiLCJwcmVkIiwiaXNfdmFsaWQiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsInRvX2NoYXIiLCJ1bnNhZmVfdG9fY2hhciIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwibGFzdCIsImkkMSIsInIyIiwiZmxhdHRlbiIsImExIiwicjEkMCIsImEyIiwicmV2X21hcCIsImZvbGRfcmlnaHQiLCJiMiIsImIxIiwiYjEkMCIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwidDEiLCJzdGFibGVfc29ydCIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwic29ydF91bmlxIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiY29tcGFyZV9sZW5ndGhzIiwiY29tcGFyZV9sZW5ndGhfd2l0aCIsImF1eCIsInRhaWwiLCJvZl9zZXEiLCJzZXEkMSIsImxvZ25vdCIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwidXRmXzhfdWNoYXJfNCIsImIzIiwiZ2V0X3V0Zl84X3VjaGFyIiwiYjEkNCIsImIyJDMiLCJpJDQiLCJiMSQyIiwiaSQ1IiwiYjIkMSIsImkkNiIsImIzJDEiLCJpJDEwIiwiaSQxMSIsImkkMTIiLCJpJDciLCJiMSQxIiwiaSQ4IiwiYjIkMCIsImkkOSIsImIzJDAiLCJpJDEzIiwiYjEkNSIsImkkMTQiLCJiMiQ0IiwiaSQyIiwiYjEkMyIsImkkMyIsImIyJDIiLCJpJDE1Iiwic2V0X3V0Zl84X3VjaGFyIiwibGFzdCQxIiwibGFzdCQwIiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiZGF0YV9zaXplIiwidG90YWxfc2l6ZSIsImZyb21fYnl0ZXMiLCJmcm9tX3N0cmluZyIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImluaXRfbWF0cml4Iiwicm93IiwibWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJsYSIsImxiIiwicmVzJDAiLCJsaXN0X2xlbmd0aCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJhMCIsImJpIiwiYWkiLCJuYSIsIm5iIiwibWF4c29uIiwiaTMxIiwiZSQxIiwiaiQwIiwiZmF0aGVyIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIkMSIsInMxJDEiLCJpMSIsImkyIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsInNpZ25hbGluZ19uYW4iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsIm1pbl9pbnQiLCJtYXhfaW50IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsInVuc2lnbmVkX2RpdiIsInEiLCJ1bnNpZ25lZF9yZW0iLCJzaXplIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJlbmdpbmUiLCJ0YmwiLCJzdGF0ZSIsIm5ld19lbmdpbmUiLCJmcm9tX2Z1bmN0aW9uIiwicmVhZF9mdW4iLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJleG4kMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJwcmVzIiwicHJlcyQwIiwicmVtb3ZlIiwidW5pb24iLCJyMiQwIiwiaW50ZXIiLCJzcGxpdF9iaXMiLCJkaXNqb2ludCIsImNvbnNfZW51bSIsImUyJDIiLCJlMSQyIiwiZTIkMCIsImUxJDAiLCJlMiQxIiwiZTEkMSIsInN1YnNldCIsInB2IiwibGYiLCJsdCIsInJmIiwicnQiLCJjYXJkaW5hbCIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiZmluZF9maXJzdCIsInYwJDEiLCJ2MCQwIiwiZmluZF9maXJzdF9vcHQiLCJmaW5kX2xhc3QiLCJmaW5kX2xhc3Rfb3B0IiwidHJ5X2pvaW4iLCJ2JDEiLCJ4MCIsImwkMyIsImwkNCIsIngwJDAiLCJsJDUiLCJ4MCQxIiwibmwiLCJtaWQiLCJsJDIiLCJ4NCIsImFkZF9zZXEiLCJzZXFfb2ZfZW51bSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsImxkIiwibHJkIiwicmQiLCJybGQiLCJkYXRhIiwiZDAkMSIsImQwIiwiZDAkMCIsIm1pbl9iaW5kaW5nIiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ1cGRhdGUiLCJkYXRhJDAiLCJhZGRfdG9fbGlzdCIsIm0kMCIsImFkZF9taW5fYmluZGluZyIsImsiLCJhZGRfbWF4X2JpbmRpbmciLCJjb25jYXRfb3Jfam9pbiIsImQxIiwiZDIiLCJkMiQwIiwiZDEkMCIsImQyJDEiLCJkMSQxIiwicHZkIiwiZnZkIiwibTEiLCJtMiIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiYnMiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJwcm90ZWN0IiwicmVsZWFzZSIsImFjcXVpcmUiLCJ0cnlfYWNxdWlyZSIsInJldCIsImdldF92YWx1ZSIsIm1ha2UkMCIsInJlbGVhc2UkMCIsImFjcXVpcmUkMCIsInRyeV9hY3F1aXJlJDAiLCJjcHVfcmVsYXgiLCJjcmVhdGVfZGxzIiwia2V5X2NvdW50ZXIiLCJwYXJlbnRfa2V5cyIsIm5ld19rZXkiLCJzcGxpdF9mcm9tX3BhcmVudCIsImluaXRfb3JwaGFuIiwiaWR4Iiwia2kiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJvbGR2YWwiLCJuZXdfb2JqIiwic3QkMCIsImN1cnZhbCIsInVwZGF0ZWRfb2JqIiwiZ2V0X2lkIiwiZG9tYWluIiwic2VsZiIsImlzX21haW5fZG9tYWluIiwiZmlyc3RfZG9tYWluX3NwYXduZWQiLCJmaXJzdF9zcGF3bl9mdW5jdGlvbiIsImJlZm9yZV9maXJzdF9zcGF3biIsIm9sZF9mIiwibmV3X2YiLCJhdF9leGl0X2tleSIsInNwYXduIiwicGsiLCJ0ZXJtX3N5bmMiLCJib2R5IiwibG9vcCIsImV4IiwicmVjb21tZW5kZWRfZG9tYWluX2NvdW50Iiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJ4JDkiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDEzIiwieCQxNCIsIngkMTUiLCJ4JDE2Iiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJ4JDE3IiwicmVzdCQyNiIsIngkMTgiLCJyZXN0JDI3IiwieCQxOSIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiZW5kX2luZCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImYkMCIsImludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24iLCJuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIiwibmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIiwibWlzc2luZ19lbGVtZW50IiwidW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IiwiY2hlY2tfc2FtZV9sZW5ndGgiLCJsZW5ndGhfYSIsImNoZWNrX3ZhbGlkX2xlbmd0aCIsImFyciIsImNhcGFjaXR5IiwidW5zYWZlX2dldCIsImdldF9sYXN0IiwicG9wX2xhc3QiLCJwb3BfbGFzdF9vcHQiLCJyZW1vdmVfbGFzdCIsImVuc3VyZV9jYXBhY2l0eSIsImNhcGFjaXR5X3JlcXVlc3QiLCJjdXJfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfYXJyIiwiZW5zdXJlX2V4dHJhX2NhcGFjaXR5IiwiZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCIsImZpdF9jYXBhY2l0eSIsInNldF9jYXBhY2l0eSIsImFkZF9sYXN0X2lmX3Jvb20iLCJlbGVtIiwiYWRkX2xhc3QiLCJhcHBlbmRfbGlzdCIsImxpIiwibGkkMCIsImFwcGVuZF9pdGVyIiwiYXBwZW5kX3NlcSIsImFwcGVuZF9hcnJheV9pZl9yb29tIiwibGVuZ3RoX2IiLCJhcHBlbmRfYXJyYXkiLCJhcHBlbmRfaWZfcm9vbSIsImFycl9hIiwiYXJyX2IiLCJpdGVyJDAiLCJvZl9hcnJheSIsInRvX2FycmF5IiwidG9fc2VxX3JlZW50cmFudCIsInRvX3NlcV9yZXYiLCJ0b19zZXFfcmV2X3JlZW50cmFudCIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwib3B0IiwiZm9sbG93JDAiLCJrZXl3b3JkIiwiZm9sbG93JDIiLCJub19hcmciLCJnZXRfYXJnIiwiY29uc3VtZV9hcmciLCJ0cmVhdF9hY3Rpb24iLCJub19hcmckMCIsImdldF9hcmckMCIsImNvbnN1bWVfYXJnJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJyJDMiLCJhcmckNCIsInNwZWNzIiwidHJlYXRfYWN0aW9uJDAiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsIm1heF9hcmdfbGVuIiwiY3VyIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsInNlZW4iLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwic3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvIiwiY29uc3RydWN0b3IiLCJmaWVsZHNfb3B0IiwiY29uc3RydWN0b3IkMCIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsInByaW50IiwiZmN0IiwiY2F0Y2gkMCIsInJhd19iYWNrdHJhY2VfZW50cmllcyIsImJ0IiwiY29udmVydF9yYXdfYmFja3RyYWNlIiwiZm9ybWF0X2JhY2t0cmFjZV9zbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJwcmludF9yYXdfYmFja3RyYWNlIiwib3V0Y2hhbiIsInJhd19iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImJhY2t0cmFjZV9zbG90X2lzX3JhaXNlIiwicGFyYW0iLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQxIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImNvbXBvc2UiLCJmbGlwIiwibmVnYXRlIiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4kMCIsIndvcmtfZXhuIiwid29ya19idCIsImV2ZW50bG9nX3BhdXNlIiwiZXZlbnRsb2dfcmVzdW1lIiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJkZWxldGVfYWxhcm0iLCJjcmVhdGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpZ2FycmF5IiwicmVhbGx5X2lucHV0X2JpZ2FycmF5IiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQyIiwiYnVmJDAiLCJidWYkMSIsInJlbSIsImlucHV0X2xpbmVzIiwiZm9sZF9saW5lcyIsInNldF9iaW5hcnlfbW9kZSIsImZsdXNoIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfYnl0ZSIsIm91dHB1dF9iaWdhcnJheSIsImhleF9vZl9zdHJpbmciLCJjaGFyX2hleCIsInN0cmluZ19vZl9oZXgiLCJkaWdpdCIsImhhc2hfbGVuZ3RoIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImNoYW5uZWwiLCJ0b3JlYWQiLCJidWZfc2l6ZSIsImN0eCIsInRvcmVhZCQwIiwidG9yZWFkJDEiLCJmaWxlbmFtZSIsImRpZ2VzdCIsInRvX2hleCIsIm9mX2hleCIsImtpbmRfc2l6ZV9pbl9ieXRlcyIsImNsb29wIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJiYSIsImNyZWF0ZSQxIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDEiLCJvZl9hcnJheSQwIiwiY3JlYXRlJDIiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDIiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwic2VyaWFsaXphdGlvbl9wcmVmaXgiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiIsInRvX2JpbmFyeV9zdHJpbmciLCJvZl9iaW5hcnlfc3RyaW5nIiwicmVpbml0IiwibWFrZV9zZWxmX2luaXQiLCJtYXhfaW50MzEiLCJtYXhfaW50MzIiLCJiaXRzIiwiaW50X2F1eCIsImludCQwIiwiYm91bmQiLCJmdWxsX2ludCIsImludF9pbl9yYW5nZV9hdXgiLCJuYml0cyIsInNwYW4iLCJpbnRfaW5fcmFuZ2UiLCJiaXRzMzIiLCJpbnQzMmF1eCIsImludDMyIiwiaW50MzJfaW5fcmFuZ2UiLCJiaXRzNjQiLCJpbnQ2NGF1eCIsImludDY0IiwiaW50NjRfaW5fcmFuZ2UiLCJuYXRpdmViaXRzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X2luX3JhbmdlIiwiZmxvYXQkMCIsImJvb2wiLCJta19kZWZhdWx0IiwicmFuZG9tX2tleSIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludF9pbl9yYW5nZSQwIiwiaW50MzIkMCIsImludDMyX2luX3JhbmdlJDAiLCJuYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9pbl9yYW5nZSQwIiwiaW50NjQkMCIsImludDY0X2luX3JhbmdlJDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0Iiwic2VsZl9pbml0Iiwic3BsaXQkMCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZ19rZXkiLCJwb3dlcl8yX2Fib3ZlIiwicmFuZG9tIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwibmlkeCIsIm1hdGNoJDAiLCJvc2l6ZSIsIm9sZF90cmF2IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0YmxfZGF0YSIsImJ1Y2siLCJidWNrJDAiLCJidWNrJDEiLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJrZXlfaW5kZXgiLCJidWNrZXQiLCJrMSIsIm5leHQxIiwiazIiLCJuZXh0MiIsImszIiwiZDMiLCJuZXh0MyIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImhhc2hfcGFyYW0iLCJyZWJ1aWxkIiwiZ2V0X2NvcHkiLCJhciIsImVtcHR5YnVja2V0IiwiZ2V0X2luZGV4Iiwic3okMCIsInN6JDEiLCJjb3VudF9idWNrZXQiLCJjb3VudCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJidWNrZXQkMCIsImhhc2hlcyIsIm5ld3N6IiwibmV3YnVja2V0JDAiLCJuZXdoYXNoZXMiLCJoYnVja2V0IiwicHJldl9sZW4iLCJsaXZlIiwiaiQyIiwibmV3YnVja2V0Iiwib2xkbGVuIiwibmV3dCIsIm9iIiwib2kiLCJvaCIsIm9pJDAiLCJuaSIsImZpbmRfYXV4IiwiZm91bmQiLCJub3Rmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfc2V0X3ByaW50X3RhZ3MiLCJwcF9zZXRfbWFya190YWdzIiwicHBfZ2V0X3ByaW50X3RhZ3MiLCJwcF9nZXRfbWFya190YWdzIiwicHBfc2V0X3RhZ3MiLCJwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwY3QiLCJwb3QiLCJtY3QiLCJtb3QiLCJwcF9yaW5pdCIsInBwX2ZsdXNoX3F1ZXVlIiwiZW5kX3dpdGhfbmV3bGluZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfcHJpbnRfbm90aGluZyIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJzdGRidWZfa2V5Iiwic3RyX2Zvcm1hdHRlcl9rZXkiLCJidWZmZXJlZF9vdXRfc3RyaW5nIiwiYnVmZmVyZWRfb3V0X2ZsdXNoIiwic3RkX2J1Zl9rZXkiLCJlcnJfYnVmX2tleSIsInN0ZF9mb3JtYXR0ZXJfa2V5IiwiZXJyX2Zvcm1hdHRlcl9rZXkiLCJnZXRfc3RkX2Zvcm1hdHRlciIsImdldF9lcnJfZm9ybWF0dGVyIiwiZ2V0X3N0cl9mb3JtYXR0ZXIiLCJnZXRfc3RkYnVmIiwiZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciIsImZsdXNoX3N0cl9mb3JtYXR0ZXIiLCJtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIiLCJvdXRwdXQkMCIsImZsdXNoJDAiLCJzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF8iLCJtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwic29iIiwiZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiaXRlbXMiLCJhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0iLCJpdGVtIiwiZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9iIiwib3Blbl9oYm94Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2l0ZXIiLCJwcF92IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJwcF92JDAiLCJwcF9wcmludF9saXN0IiwicHBfcHJpbnRfYXJyYXkiLCJwcF9wcmludF9zZXEiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiYnR5IiwicCQ2IiwicCQ3Iiwic2l6ZSQxIiwicCQ4Iiwia2RwcmludGYiLCJkcHJpbnRmIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwiZnMiLCJmcyQwIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiaW5hbWUiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJvcGVuX2luX2ZpbGUiLCJjbG9zZV9pbiIsImljJDAiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja19jaGFyIiwiY2hlY2tfdGhpc19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwiY29udiIsInRva2VuX2Zsb2F0Iiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIiLCJzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyIsInNjYW5fZGlnaXRfcGx1cyIsImJhc2lzIiwiZGlnaXRwIiwid2lkdGgkMyIsImlzX2JpbmFyeV9kaWdpdCIsImlzX29jdGFsX2RpZ2l0IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwibG93ZXJjYXNlIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsInNjYW5fYmFja3NsYXNoX2NoYXIiLCJjMCIsImdldF9kaWdpdCQwIiwiYzEkMCIsImMyJDAiLCJnZXRfZGlnaXQiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsImZpbmRfc3RvcCIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsIndpZHRoX29mX3BhZF9vcHQiLCJzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nIiwidGFrZV9mb3JtYXRfcmVhZGVycyQwIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyQwIiwicmVhZGVyIiwibmV3X2siLCJyZWFkZXJzX3Jlc3QiLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyIsIm1ha2Vfc2NhbmYiLCJyZWFkZXJzIiwic2NhbiQwIiwic3RyX3Jlc3QiLCJwYWRfcHJlY19zY2FuZiIsInNjYW4kMSIsInNjYW4kMiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mX2dlbiIsImVmIiwiYXJncyQxIiwiZXhjJDAiLCJleGMiLCJhcmdzJDAiLCJrc2NhbmYiLCJrc2NhbmZfb3B0IiwiYnNjYW5mIiwiYnNjYW5mX29wdCIsImtzc2NhbmYiLCJzc2NhbmYiLCJzc2NhbmZfb3B0Iiwic2NhbmYiLCJzY2FuZl9vcHQiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZml0X3NpemUiLCJuZXdfdGFibGUiLCJwdWJfbGFiZWxzIiwibWV0aG9kcyIsImFycmF5IiwibmV3X3NpemUiLCJvbGRfc2l6ZSIsIm5ld19idWNrIiwibWV0aG9kX2NvdW50IiwiaW5zdF92YXJfY291bnQiLCJuZXdfbWV0aG9kIiwidGFibGUiLCJnZXRfbWV0aG9kX2xhYmVsIiwibGFiZWwiLCJnZXRfbWV0aG9kX2xhYmVscyIsIm5hbWVzIiwic2V0X21ldGhvZCIsImVsZW1lbnQiLCJnZXRfbWV0aG9kIiwibmFycm93IiwidmFycyIsInZpcnRfbWV0aHMiLCJjb25jcl9tZXRocyIsInZhcnMkMCIsInZpcnRfbWV0aHMkMCIsImNvbmNyX21ldGhzJDAiLCJ2aXJ0X21ldGhfbGFicyIsImNvbmNyX21ldGhfbGFicyIsImxhYiIsInR2YXJzIiwiYnlfbmFtZSIsImJ5X2xhYmVsIiwibWV0IiwiaG0iLCJ3aWRlbiIsInNhdmVkX3ZhcnMiLCJzYXZlZF9oaWRkZW5fbWV0aHMiLCJuZXdfdmFyaWFibGUiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJvYmoiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJnZXRfZGF0YSIsImJ1aWxkX3BhdGgiLCJrZXlzIiwibG9va3VwX3RhYmxlcyIsInJvb3QiLCJyb290X2RhdGEiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwidGFibGVzX2RhdGEiLCJuZXdfY2FjaGUiLCJzZXRfbWV0aG9kcyIsImNsbyIsIngkMjAiLCJjbG8kMCIsIm4kMzgiLCJlJDEwIiwibiQzNyIsIm4kMzYiLCJuJDIiLCJuJDM1IiwiZiQyMCIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ5JDAiLCJuJDYiLCJmJDE1IiwibiQzMSIsIm4kNyIsImYkMTQiLCJlJDgiLCJuJDMwIiwibiQ4IiwiZiQxMyIsIm4kMjkiLCJuJDkiLCJmJDEyIiwibiQyOCIsImYkOCIsImUkMiIsIm4kMTAiLCJmJDExIiwiZSQ3IiwibiQyNyIsImYkOSIsIm4kMTEiLCJmJDEwIiwibiQyNiIsIm4kMTIiLCJuJDI1IiwibiQxMyIsIm4kMjQiLCJtJDEyIiwibiQxNCIsImUkMyIsIm4kMjMiLCJlJDYiLCJtJDExIiwibiQxNSIsIm0kMSIsIm4kMjIiLCJtJDEwIiwibSQyIiwibSQ5IiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwicHJuZyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJmaW5kX2luX2J1Y2tldCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsInNldF9kYXRhIiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJ0ZXN0X2tleSIsInQkMCIsImdldF9rZXkxIiwic2V0X2tleTEiLCJnZXRfa2V5MiIsInNldF9rZXkyIiwiZ2V0X2RhdGEkMCIsInNldF9kYXRhJDAiLCJtYWtlJDEiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJzZWVkZWRfaGFzaCQwIiwibWFrZSQyIiwiYWRkJDAiLCJ0ZXN0X2tleXMiLCJyZW1vdmUkMCIsImZpbmQkMCIsImxlbmd0aCQwIiwiY2xlYXIkMCIsImxlbmd0aCQxIiwiZ2V0X2tleSQwIiwic2V0X2tleSQwIiwiZ2V0X2RhdGEkMSIsInNldF9kYXRhJDEiLCJtYWtlJDMiLCJxdWVyeSQxIiwibWFrZSQ0IiwiYWRkJDEiLCJ0ZXN0X2tleXMkMCIsInJlbW92ZSQxIiwiZmluZCQxIiwibGVuZ3RoJDIiLCJjbGVhciQxIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicmFuZG9tX3N0YXRlIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwicGVybXMiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93IiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwiY29lcmNlIiwidGFnIiwicGFyYW0iLCJrZXkiLCJ2YWx1ZSIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF90X3NleHBfZ3JhbW1hciIsImVtcHR5X3NleHBfZ3JhbW1hciIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ3MiLCJncmFtbWFyIiwidGFncyIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IiwicmVmX3NleHBfZ3JhbW1hciIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJoYW5kbGVyIiwiYXJnIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJhYnNlbnQiLCJjb21iaW5lIiwicGFyc2VfdmFsdWVfbWFsZm9ybWVkIiwibWFsZm9ybWVkIiwic3RhdGUiLCJwb3MiLCJwYXJzZV92YWx1ZXMiLCJtYWxmb3JtZWQkMCIsIm90aGVyIiwiY29udiIsImtpbmQiLCJzZXhwJDUiLCJkZWZhdWx0JDAiLCJzZXhwJDQiLCJzZXhwJDAiLCJzZXhwJDEiLCJzZXhwJDIiLCJzZXhwJDMiLCJwYXJzZV9zcGluZV9tYWxmb3JtZWQiLCJleHRyYSIsInNlZW4iLCJzZXhwcyIsInBhcnNlX3NwaW5lX3Nsb3ciLCJzZXhwcyQwIiwic2V4cHMkMiIsInNleHBzJDEiLCJwYXJzZV9yZWNvcmRfc2xvdyIsInVuc2VlbiIsInBhcnNlX3NwaW5lX2Zhc3QiLCJvdGhlcnMiLCJhcmdzIiwiYXRvbSIsInJlY29yZF9vZl9zZXhwcyIsImNhbGxlciIsImNvbnRleHQkMCIsImluZGV4X29mX2ZpZWxkIiwiYWxsb3dfZXh0cmFfZmllbGRzIiwiY3JlYXRlIiwiYWxsb3dfZXh0cmFfZmllbGRzJDAiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwibWF5YmVfY29udGV4dCIsImNvbnRleHQiLCJyZWNvcmRfb2Zfc2V4cCIsImdsb2JhbGl6ZV9ib29sIiwiYiIsImdsb2JhbGl6ZV9jaGFyIiwiYyIsImdsb2JhbGl6ZV91bml0IiwidSIsImdsb2JhbGl6ZV9hcnJheSIsImEiLCJnbG9iYWxpemVfbGlzdCIsImYiLCJ4cyIsIngiLCJnbG9iYWxpemVfb3B0aW9uIiwiZ2xvYmFsaXplX3Jlc3VsdCIsImdsb2JhbGl6ZV9hIiwiZ2xvYmFsaXplX2IiLCJ0IiwiZ2xvYmFsaXplX3JlZiIsInIiLCJkZXNjZW5kaW5nIiwieSIsIm1heCIsIm1pbiIsIm1heF9pbnQiLCJtaW5faW50IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImJvb2xfb2Zfc3RyaW5nX29wdCIsImJvb2xfb2Zfc3RyaW5nIiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2ludCIsInJlYWRfZmxvYXRfb3B0IiwicmVhZF9mbG9hdCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwib3Blbl9vdXRfZ2VuIiwiZmx1c2giLCJmbHVzaF9hbGwiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXQiLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X2J5dGUiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF92YWx1ZSIsInNlZWtfb3V0IiwicG9zX291dCIsIm91dF9jaGFubmVsX2xlbmd0aCIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsInNldF9iaW5hcnlfbW9kZV9vdXQiLCJvcGVuX2luIiwib3Blbl9pbl9iaW4iLCJvcGVuX2luX2dlbiIsImlucHV0X2NoYXIiLCJpbnB1dF9saW5lIiwiaW5wdXQiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpbmFyeV9pbnQiLCJpbnB1dF92YWx1ZSIsInNlZWtfaW4iLCJwb3NfaW4iLCJpbl9jaGFubmVsX2xlbmd0aCIsImNsb3NlX2luIiwiY2xvc2VfaW5fbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfaW4iLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sIiwiZXhpdCIsImF0X2V4aXQiLCJ2YWxpZF9mbG9hdF9sZXhlbSIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJkb19hdF9leGl0IiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJib29sX3RvX2ludCIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJhc2NlbmRpbmciLCJtYXgkMCIsIm1pbiQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJtYXgkMSIsIm1pbiQxIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3IiwiYXNjZW5kaW5nJDEiLCJkZXNjZW5kaW5nJDEiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgkMiIsIm1pbiQyIiwiYXNjZW5kaW5nJDIiLCJkZXNjZW5kaW5nJDIiLCJtYXgkMyIsIm1pbiQzIiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwiYXNjZW5kaW5nJDMiLCJkZXNjZW5kaW5nJDMiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwibWF4JDQiLCJtaW4kNCIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsInN5bWJvbCQyOSIsImFzY2VuZGluZyQ0IiwiZGVzY2VuZGluZyQ0IiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsIm1heCQ1IiwibWluJDUiLCJzeW1ib2wkMzAiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJhc2NlbmRpbmckNSIsImRlc2NlbmRpbmckNSIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkNiIsIm1pbiQ2IiwiaSIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsImFzY2VuZGluZyQ2IiwiZGVzY2VuZGluZyQ2IiwiY29tcGFyZSQzIiwiZXF1YWwkMyIsIm1heCQ3IiwibWluJDciLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJzeW1ib2wkNDciLCJhc2NlbmRpbmckNyIsImRlc2NlbmRpbmckNyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJtYXgkOCIsIm1pbiQ4Iiwic3ltYm9sJDQ4Iiwic3ltYm9sJDQ5Iiwic3ltYm9sJDUwIiwic3ltYm9sJDUxIiwic3ltYm9sJDUyIiwic3ltYm9sJDUzIiwiYXNjZW5kaW5nJDgiLCJkZXNjZW5kaW5nJDgiLCJjb21wYXJlJDUiLCJlcXVhbCQ1IiwibWF4JDkiLCJtaW4kOSIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsImFzY2VuZGluZyQ5IiwiZGVzY2VuZGluZyQ5IiwiY29tcGFyZSQ2IiwiZXF1YWwkNiIsIm1heCQxMCIsIm1pbiQxMCIsInN5bWJvbCQ2MCIsInN5bWJvbF9jb25jYXQkMCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImFzciIsImxhbmQiLCJsbm90JDAiLCJsb3IiLCJsc2wiLCJsc3IiLCJseG9yIiwibW9kIiwiYWJzJDAiLCJmYWlsd2l0aCQwIiwiZnN0IiwiaW52YWxpZF9hcmckMCIsInNuZCIsInBoeXNfZXF1YWwiLCJmbG9hdF9vZl9zdHJpbmciLCJhbV90ZXN0aW5nIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwib2Zfc3RyaW5nX29wdCIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJzdWNjIiwicHJlZCIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsInJlcyIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwiZm9sZF9yaWdodCIsIml0ZXIiLCJpdGVyaSIsIm1hcCIsIm1hcGkiLCJzdGFibGVfc29ydCIsInN3YXAiLCJqIiwiZWx0X2kiLCJlbHRfaiIsImVzY2FwZWQiLCJsb3dlcmNhc2UiLCJ0b19pbnQiLCJ1bnNhZmVfb2ZfaW50IiwidXBwZXJjYXNlIiwiaW50X2lzX29rIiwib2ZfaW50Iiwib2ZfaW50X2V4biIsInQxIiwidDIiLCJoZF9leG4iLCJsZW5ndGgiLCJyZXZfYXBwZW5kIiwidGxfZXhuIiwidW56aXAiLCJleGlzdHMiLCJ0JDAiLCJleGlzdHMyX29rIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwibDIkMSIsImEyIiwibDEkMSIsImExIiwiaW5pdCQwIiwibCIsImluaXQkMSIsImZvbGQyX29rIiwiZm9yX2FsbCIsImZvcl9hbGwyX29rIiwiaXRlcjJfb2siLCJub250YWlsX21hcCIsIm5vbnRhaWxfbWFwaSIsInBhcnRpdGlvbiIsInJldl9tYXAiLCJsJDAiLCJhY2N1IiwicmV2X21hcDJfb2siLCJhY2N1JDAiLCJzb3J0IiwicmV2IiwicmVzdCIsImZvbGRfcmlnaHQyX29rIiwiaGFzaF9mb2xkX3VuaXQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mb2xkX3N0cmluZyIsImFzX2ludCIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9mb2xkX2Jvb2wiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiaGFzaF9mb2xkX29wdGlvbiIsImhhc2hfZm9sZF9lbGVtIiwiaGFzaF9mb2xkX2xpc3QiLCJzJDEiLCJsaXN0JDEiLCJzJDIiLCJsaXN0IiwibGlzdCQwIiwicyQwIiwiaGFzaF9mb2xkX2xhenlfdCIsImhhc2hfZm9sZF9yZWZfZnJvemVuIiwiaGFzaF9mb2xkX2FycmF5X2Zyb3plbiIsImFycmF5IiwiZSIsImkkMCIsImhhc2hfbmF0aXZlaW50IiwiaGFzaF9pbnQ2NCIsImhhc2hfaW50MzIiLCJoYXNoX2NoYXIiLCJoYXNoX2ludCIsImhhc2hfYm9vbCIsImhhc2hfc3RyaW5nIiwiaGFzaF9mbG9hdCIsImhhc2hfdW5pdCIsInNlZWQiLCJvZl9mb2xkIiwiaGFzaF9mb2xkX3QiLCJydW4iLCJmb2xkZXIiLCJjb21wYXJlX3N0YXRlIiwic3RhdGVfdG9fc3RyaW5nIiwic3RhdGUiLCJ0JDEiLCJ0JDIiLCJ0JDMiLCJ0JDQiLCJ0JDUiLCJjb21wYXJlX2Fic3RyYWN0IiwidHlwZV9uYW1lIiwiZXF1YWxfYWJzdHJhY3QiLCJjb21wYXJlX2Jvb2wiLCJjb21wYXJlX2NoYXIiLCJjb21wYXJlX2Zsb2F0IiwiY29tcGFyZV9pbnQiLCJjb21wYXJlX2ludDMyIiwiY29tcGFyZV9pbnQ2NCIsImNvbXBhcmVfbmF0aXZlaW50IiwiY29tcGFyZV9zdHJpbmciLCJjb21wYXJlX3VuaXQiLCJjb21wYXJlX2FycmF5IiwiY29tcGFyZV9lbHQiLCJsZW5fYSIsImxlbl9iIiwicmV0IiwiY29tcGFyZV9saXN0IiwiYSQwIiwiYiQwIiwieXMiLCJjb21wYXJlX29wdGlvbiIsImNvbXBhcmVfcmVmIiwiZXF1YWxfYm9vbCIsImVxdWFsX2NoYXIiLCJlcXVhbF9pbnQiLCJlcXVhbF9pbnQzMiIsImVxdWFsX2ludDY0IiwiZXF1YWxfbmF0aXZlaW50IiwiZXF1YWxfc3RyaW5nIiwiZXF1YWxfdW5pdCIsImVxdWFsX2Zsb2F0IiwiZXF1YWxfYXJyYXkiLCJlcXVhbF9lbHQiLCJlcXVhbF9saXN0IiwiZXF1YWxfb3B0aW9uIiwiZXF1YWxfcmVmIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2IiwiaHN2IiwiYXJnIiwiYTAiLCJoc3YkMCIsImEwJDAiLCJoc3YkMSIsImhhc2giLCJmdW5jIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJyYWlzZV93aXRob3V0X2JhY2t0cmFjZSIsImluaXRpYWxpemVfbW9kdWxlIiwiY2xlYXJfYmFja3RyYWNlIiwid2l0aF9yZXR1cm4iLCJpc19hbGl2ZSIsInJldHVybiQwIiwid2l0aF9yZXR1cm5fb3B0aW9uIiwicHJlcGVuZCIsInBhcmFtIiwiY29uc3QkMCIsIm5vbiIsImZvcmV2ZXIiLCJlJDAiLCJjb21wb3NlIiwiZyIsImZsaXAiLCJhcHBseV9uX3RpbWVzIiwibiIsIm4kMCIsIngkMCIsIngkMSIsIm4kMSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwidG9fbW9uYWQiLCJvZl9tb25hZCIsImRlcml2ZWRfbWFwIiwibWFwMiIsInRhIiwidGIiLCJtYXAzIiwidGMiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwidGYiLCJmYWIiLCJtYXAkMCIsImFwcGx5IiwibWYiLCJteCIsInR4IiwiY3VzdG9tX21hcCIsInJldHVybiQxIiwiYXBwbHkkMCIsIm1ha2UiLCJjb21wYXJhdG9yIiwiZXJyb3Jfc291cmNlXzAxMSIsImNtcF9mIiwiY21wX3MiLCJoYXNoX2ZvbGRfZiIsImhhc2hfZm9sZF9zIiwidF9vZl9zZXhwIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsInNleHBfMDEzIiwidGFnXzAxNCIsInNleHBfYXJnc18wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJvZl9mXzAyNSIsIm9mX3NfMDI2IiwiYXJnMF8wMjciLCJyZXMwXzAyOCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJmX3NleHBfZ3JhbW1hciIsInNfc2V4cF9ncmFtbWFyIiwib3BhcXVlX2lkZW50aXR5IiwibmFtZSIsImdldCIsImZzZXQiLCJzZXR0ZXIiLCJ1cGRhdGVyIiwiZmllbGQiLCJzeW1ib2xfY29uY2F0IiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInVuc2FmZV9ibGl0Iiwic3BsaXRfb25fY2hhciIsInNlcCIsImhzdiQyIiwicG9zX2NudW1fMDEwIiwicG9zX2JvbF8wMDgiLCJwb3NfbG51bV8wMDYiLCJwb3NfZm5hbWVfMDA0IiwiYXJnXzAxMSIsImJuZHNfMDAzIiwiYXJnXzAwOSIsImJuZHNfMDAzJDAiLCJhcmdfMDA3IiwiYm5kc18wMDMkMSIsImFyZ18wMDUiLCJibmRzXzAwMyQyIiwiaGFzaF9mb2xkX3QkMCIsImhhc2gkMCIsIm1ha2VfbG9jYXRpb25fc3RyaW5nIiwicG9zX2ZuYW1lIiwicG9zX2xudW0iLCJwb3NfY251bSIsInBvc19ib2wiLCJpc19lbXB0eSIsInBhcnRpdGlvbl9tYXAiLCJmc3QkMCIsInkkMCIsInNuZCQwIiwiZXJyb3Jfc291cmNlXzAwNSIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwNyIsInRhZ18wMDgiLCJzZXhwX2FyZ3NfMDA5IiwiYXJnMF8wMTAiLCJyZXMwXzAxMSIsInNleHBfYXJnc18wMTQiLCJhcmcwXzAxNSIsInJlczBfMDE2Iiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJhX3NleHBfZ3JhbW1hciIsImJfc2V4cF9ncmFtbWFyIiwiY21wX2EiLCJjbXBfYiIsImFfMDI3IiwiYl8wMjgiLCJhXzAyOSIsImJfMDMwIiwiYV8wMzEiLCJiXzAzMiIsImFfMDMzIiwiYl8wMzQiLCJhXzAzNSIsImJfMDM2IiwiYV8wMzciLCJiXzAzOCIsImhhc2hfZm9sZF9hIiwiaGFzaF9mb2xkX2IiLCJnbG9iYWxpemUiLCJjaGVja19vayIsImNoZWNrX2Vycm9yIiwib2siLCJlcnJvciIsImZhaWwiLCJmYWlsZiIsIm1hcF9lcnJvciIsImJpbmQkMSIsIm1hcCQxIiwicmV0dXJuJDIiLCJpc19vayIsImlzX2Vycm9yIiwib2Zfb3B0aW9uIiwib3B0IiwiaXRlcl9lcnJvciIsInRvX2VpdGhlciIsIm9mX2VpdGhlciIsIm9rX2lmX3RydWUiLCJib29sIiwidHJ5X3dpdGgiLCJva19leG4iLCJva19vcl9mYWlsd2l0aCIsImNvbWJpbmUiLCJlcnIiLCJvazEiLCJvazIiLCJlcnIxIiwiZXJyMiIsImNvbWJpbmVfZXJyb3JzIiwiZXJycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJjb3VudCIsInN1bSIsIk0iLCJmb2xkX3Jlc3VsdCIsImFjYyIsIml0ZW0iLCJmb2xkX3VudGlsIiwiZmluaXNoIiwibWluX2VsdCIsImVsdCIsIm1heF9lbHQiLCJtZW0iLCJmaW5kX21hcCIsImZpbmQiLCJ0b19hcnJheSIsIml0ZXIkMCIsIml0ZXIkMSIsImxlbmd0aCQwIiwibGVuZ3RoJDEiLCJpc19lbXB0eSQwIiwibWVtJDAiLCJzdW0kMCIsIm0iLCJjb3VudCQwIiwiZXhpc3RzJDAiLCJmb3JfYWxsJDAiLCJmaW5kX21hcCQwIiwiZmluZCQwIiwidG9fbGlzdCQwIiwidG9fYXJyYXkkMCIsIm1pbl9lbHQkMCIsIm1heF9lbHQkMCIsImZvbGRfcmVzdWx0JDAiLCJmb2xkX3VudGlsJDAiLCJvZl9hcnJheSIsImNvbmNhdF9vZl9hcnJheSIsImNvbmNhdF9tYXAiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiZWl0aGVyIiwicGFydGl0aW9uX3RmIiwiZm9sZCQwIiwib2ZfbGlzdCQwIiwib2ZfYXJyYXkkMCIsImNvbmNhdCQwIiwiZm9sZGkiLCJhY2MkMCIsImNvdW50aSIsImV4aXN0c2kiLCJmb3JfYWxsaSIsImZpbmRfbWFwaSIsImZpbmRpIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImRlcml2ZWRfaW5pdCIsImRlcml2ZWRfaW5pdCQwIiwiZGVyaXZlZF9jb25jYXRfbWFwaSIsImNvbmNhdF9tYXBpIiwiY29uY2F0X21hcGkkMCIsImZpbHRlcl9tYXBpIiwiZmlsdGVyaSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJwZWVrIiwic2V4cF9vZl9hIiwic2xvd19jaGVja19wb3NfbGVuX2V4biIsInBvcyIsInRvdGFsX2xlbmd0aCIsImNoZWNrX3Bvc19sZW5fZXhuIiwic3RvcCIsImdldF9wb3NfbGVuX2V4biIsImxlbiQwIiwib2Zfc3RhdGUiLCJhc3NpZ24iLCJkc3QiLCJzcmMiLCJkc3QkMCIsInNyYyQwIiwibWFrZV9kZWZhdWx0IiwiZGVmYXVsdCQwIiwic3BsaXRfZnJvbV9wYXJlbnQiLCJnZXRfc3RhdGUiLCJyYW5kb21fa2V5IiwiZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIiwiYWxsb3dfaW5fdGVzdHMiLCJiaXRzIiwiaW50JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiY2hhciQwIiwiYXNjaWkiLCJtYWtlX3NlbGZfaW5pdCIsImludF9vbl82NGJpdHMiLCJib3VuZCIsImludF9vbl8zMmJpdHMiLCJpbnQkMSIsImJpdHMkMCIsImZ1bGxfcmFuZ2VfaW50NjQiLCJmdWxsX3JhbmdlX2ludDMyIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzJDAiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludCIsInJhaXNlX2Nyb3NzZWRfYm91bmRzIiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsInN0cmluZ19vZl9ib3VuZCIsImludF9pbmNsIiwibG8iLCJoaSIsImRpZmYiLCJpbnQzMl9pbmNsIiwibmF0aXZlaW50X2luY2wiLCJpbnQ2NF9pbmNsIiwiZmxvYXQkMCIsInNjYWxlIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQxIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwibnVtX3N3YXBzIiwidGhpc19pIiwicmFuZG9tX2kiLCJzZXhwXzAwNiIsImVycm9yX3NvdXJjZV8wMzIiLCJmb2xkX2xlZnQiLCJhXzAxMCIsImJfMDExIiwiYV8wMTIiLCJiXzAxMyIsIm9mX2FfMDE0IiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwiaGQiLCJ0bCIsIm50aCIsIm50aF9leG4iLCJ1bm9yZGVyZWRfYXBwZW5kIiwib2ZfbGlzdHMiLCJzaGFyZWRfbGVuZ3RoIiwic2hhcmVkX2xlbmd0aCQwIiwiY2hlY2tfbGVuZ3RoMl9leG4iLCJ0YWlsX29mX2IiLCJ0YWlsX29mX2EiLCJjaGVja19sZW5ndGgyIiwib2ZfbGlzdHMkMCIsImwzIiwiYyQwIiwiY2hlY2tfbGVuZ3RoM19leG4iLCJ0YWlsX29mX2MiLCJuMSIsIm4yIiwibjMiLCJjaGVja19sZW5ndGgzIiwiaXRlcjIiLCJpdGVyMl9leG4iLCJyZXZfbWFwMiIsInJldl9tYXAyX2V4biIsImZvbGQyIiwiZm9sZDJfZXhuIiwiZm9sZF9yaWdodDIiLCJmb2xkX3JpZ2h0Ml9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsIm5vdF9mb3VuZCIsImZpbmRfbWFwX2V4biIsIm5vdF9mb3VuZCQwIiwiZmluZF9leG4iLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDMkMCIsImFjIiwibDMkMSIsImFjJDAiLCJyZXZfbWFwMyIsInJldl9tYXAzX2V4biIsIm1hcDNfb2siLCJtYXAzX2V4biIsInJldl9tYXBfYXBwZW5kIiwiaCIsImxpc3QkMiIsInVuemlwMyIsInoiLCJ6aXBfZXhuIiwiemlwIiwicmV2X21hcGkiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcGkiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicmVkdWNlX2JhbGFuY2VkIiwic3RlcF9hY2N1bSIsIm51bSIsIm51bSQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwibGFzdF9leG4iLCJsYXN0IiwiaXNfcHJlZml4IiwicHJlZml4IiwicHJlZml4JDAiLCJwcmVmaXgkMSIsImhkJDAiLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsImExJDAiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwicmV2X2ZpbHRlcl9tYXBpIiwiaSQxIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzMiLCJzZXhwXzAzMSIsImFyZzFfMDI4IiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsInNleHBfb2ZfdCQxIiwib2ZfYV8wMzQiLCJvZl9iXzAzNSIsInhfMDQwIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsInJlbW92ZSIsImFkZCIsImludmVyc2UiLCJtYXAkMiIsImVsIiwic3BsaXRfbiIsInRfb3JpZyIsInRha2UiLCJkcm9wIiwiY2h1bmtzX29mIiwibCQxIiwic3VibGlzdCIsInNwbGl0X3doaWxlIiwidGFrZV93aGlsZSIsImRyb3Bfd2hpbGUiLCJkcm9wX2xhc3QiLCJkcm9wX2xhc3RfZXhuIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJsaXN0MSIsImxpc3QyIiwiY29uY2F0X25vX29yZGVyIiwiY29ucyIsImlzX3NvcnRlZCIsImlzX3NvcnRlZF9zdHJpY3RseSIsImFyciIsInJhbmRvbV9lbGVtZW50X2V4biIsInJhbmRvbV9lbGVtZW50IiwiY21wIiwiZXF1YWxfbG9jYWwiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsInJlczJfMDE0IiwiYXJnMV8wMTYiLCJyZXMxXzAxOCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczFfMDIzIiwicmVzMl8wMjQiLCJhcmcxXzAyNiIsImFyZzBfMDI1IiwicmVzMF8wMjciLCJyZXMxXzAyOCIsImFyZzFfMDMwIiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInRvX3N0cmluZ3NfaHVtIiwic3RyaW5nIiwic2V4cCQwIiwic2V4cCQxIiwidGFnIiwidGFnJDAiLCJzZXhwJDIiLCJ0YWckMSIsImJvZHkiLCJ0cnVuY19hZnRlciIsInRzJDAiLCJ0cyQxIiwiYWMkMSIsInRvX3NleHBzX2h1bSIsInN0cmluZyQwIiwiaGVyZSIsImhlcmUkMCIsInRvX3NleHBfaHVtIiwic2V4cHMiLCJ0b19tZXNzYWdlIiwiaW5mbyIsIm9mX21lc3NhZ2UiLCJ0b19zdHJpbmdfaHVtIiwibWVzc2FnZSIsInRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCIsIm9mX2xhenkiLCJvZl9sYXp5X3NleHAiLCJvZl9sYXp5X3QiLCJsYXp5X3QiLCJjcmVhdGVmIiwib2ZfdGh1bmsiLCJzdHJpY3QiLCJzZXhwX29mX3giLCJ0YWdfc19sYXp5IiwidGFnX3MiLCJ0YWdfYXJnIiwidG9fZXhuIiwib2ZfZXhuIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImJhY2t0cmFjZSQyIiwicmFpc2UiLCJyYWlzZV9zIiwidG9faW5mbyIsIm9mX2luZm8iLCJjaGVja19maWVsZCIsImFfMDA3IiwiYl8wMDgiLCJvZl9hXzAxMyIsInhfMDE1Iiwib2ZfYV8wMTYiLCJ4XzAxNyIsImludmFyaWFudF9hIiwiZTEiLCJlMiIsInRyeV93aXRoX2pvaW4iLCJvZl9leG5fcmVzdWx0IiwiZXJyb3JfcyIsImVycm9yX3N0cmluZyIsImVycm9yZiIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2ludGVybmFsIiwib25fb2siLCJvbl9lcnJvciIsImlnbm9yZV91bml0X2xpc3QiLCJlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImNvbXBhcmVfcmV2ZXJzZWQiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImhhc2hfcGFyYW0iLCJwb2x5Iiwib2Zfa2V5IiwiS2V5IiwidG9fa2V5IiwiaGFzaF9wYXJhbSQwIiwicG9seSQwIiwib2Zfa2V5JDAiLCJ0b19rZXkkMCIsImhhc2hhYmxlIiwiZ2V0X3Bvc19sZW4iLCJmaW5kX2ZpcnN0X3NhdGlzZnlpbmciLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsImJsaXRfc3RyaW5nIiwic3JjX3BvcyIsImRzdF9wb3MiLCJibGl0byIsInNyY19sZW4iLCJzdWJvIiwiY3JlYXRlX2xpa2UiLCJ1bnNhZmVfYmxpdCQwIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJ2YWx1ZV9tYXAiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZm9jdXMiLCJjb21iaW5lX2FsbCIsIm1hdGNoJDAiLCJtYXRjaCIsImNvbWJpbmVfYWxsX3VuaXQiLCJ0b19vcHRpb24iLCJmb2N1cyQwIiwiY29tYmluZSQwIiwiYmluZCQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJvIiwiY2FsbCIsInZhbHVlX2V4biIsImVycm9yJDAiLCJtJDAiLCJtJDEiLCJ2YWx1ZV9vcl90aHVuayIsInNvbWUiLCJmaXJzdF9zb21lIiwic29tZV9pZiIsImNvbmQiLCJlcnJvcl9zb3VyY2VfMDI3Iiwib2Zfc18wMDIiLCJzdGF0ZV8wMDQiLCJzdGF0ZV8wMDkiLCJ2YWx1ZV8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMyIsImJfMDE0IiwiYV8wMTUiLCJiXzAxNiIsImFfMDE3IiwiYl8wMTgiLCJhXzAyMSIsImFfMDE5IiwiYl8wMjIiLCJiXzAyMCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIzIiwib2ZfYl8wMjQiLCJzZXhwXzAyOSIsInRhZ18wMzAiLCJzZXhwX2FyZ3NfMDM2IiwiYXJnMF8wMzciLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wNDEiLCJhcmcxXzA0MyIsImFyZzBfMDQyIiwicmVzMF8wNDQiLCJyZXMxXzA0NSIsIm9mX2FfMDQ4Iiwib2ZfYl8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsImFfb2Zfc2V4cCIsImJfb2Zfc2V4cCIsInNleHBfb2ZfYiIsImNfb2Zfc2V4cCIsInNleHBfb2ZfYyIsInNldCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25fbWFwaSIsImZpcnN0cyIsInNlY29uZHMiLCJwYXJ0aXRpb25pX3RmIiwidG9fc2VxdWVuY2VfbXV0YWJsZSIsInRvX3NlcXVlbmNlIiwiaTEiLCJpMiIsInR0Iiwid2lkdGgiLCJkZXB0aCIsImQiLCJ3IiwidHQkMCIsImdldCQwIiwiemVyb19vYmoiLCJjcmVhdGVfemVybyIsInVuc2FmZV9nZXQiLCJ1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkiLCJvYmoiLCJzZXRfd2l0aF9jYW1sX21vZGlmeSIsInVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbiIsIm9sZF9vYmoiLCJ1bnNhZmVfc2V0IiwidW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlIiwidW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfIiwidW5zYWZlX3NldF9pbnQiLCJ1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciIsImkkMiIsInVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCIsImNyZWF0ZV9vYmpfYXJyYXkiLCJncmFtbWFyIiwiY2VpbCIsImZsb29yIiwibW9kX2Zsb2F0IiwibW9kZiIsIm1heF9maW5pdGVfdmFsdWUiLCJjbGFzc2lmeV9mbG9hdCIsImFic19mbG9hdCIsImlzX2ludGVnZXIiLCJmcmV4cCIsImxkZXhwIiwiaXNfbmFuIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXIiLCJ0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4iLCJvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciIsIm9uZV91bHAiLCJkaXIiLCJ1cHBlcl9ib3VuZF9mb3JfaW50IiwiZXhwIiwiaXNfeF9taW51c19vbmVfZXhhY3QiLCJsb3dlcl9ib3VuZF9mb3JfaW50IiwibWluX2ludF9hc19mbG9hdCIsImJveCIsImlzX2xvd2VyY2FzZSIsImlzX3VwcGVyY2FzZSIsImlzX3ByaW50IiwiaXNfd2hpdGVzcGFjZSIsImlzX2RpZ2l0IiwiaXNfYWxwaGEiLCJpc19hbHBoYW51bSIsImdldF9kaWdpdF91bnNhZmUiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0X2xvd2VyIiwiaXNfaGV4X2RpZ2l0X3VwcGVyIiwiZ2V0X2hleF9kaWdpdF9leG4iLCJnZXRfaGV4X2RpZ2l0IiwidF9vZl9zZXhwJDEiLCJjMSIsImMyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRyX2NyZWF0ZV9tYXAiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsInRyX21hcCIsImkkMyIsImluZGV4JDAiLCJsYXN0X3JlcGxhY2VtZW50IiwiaW5kZXgiLCJmaXJzdF90YXJnZXQiLCJzdGFnZSIsInVuc3RhZ2UiLCJ1bnNhZmVfc3ViIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwia21wX2FycmF5XzAxMiIsImNhc2Vfc2Vuc2l0aXZlXzAxMCIsInBhdHRlcm5fMDA4IiwiYXJnXzAxMyIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsImJuZHNfMDA3JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJkcm9wX3ByZWZpeCIsImRyb3Bfc3VmZml4IiwibGZpbmRpIiwicmZpbmRpIiwibGFzdF9ub25fZHJvcCIsInJzdHJpcCIsImZpcnN0X25vbl9kcm9wIiwibHN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY29uY2F0X2FycmF5IiwiYXIiLCJjb25jYXRfbGluZXMiLCJsaW5lcyQzIiwiY3JsZiIsIm5ld2xpbmVfbGVuIiwibGluZXMiLCJsaW5lcyQwIiwiYnVmIiwibGluZXMkMSIsIndyaXR0ZW4iLCJsaW5lcyQyIiwibGluZSQwIiwib3V0Iiwib3V0X3BvcyIsIm91dCQwIiwiY2hvcF9wcmVmaXgiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9leG4iLCJjaG9wX3N1ZmZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3Bfc3VmZml4X2V4biIsInNob3J0ZXIiLCJzaG9ydGVzdCIsInBvc19mcm9tX2xlZnQiLCJwb3NfZnJvbV9yaWdodCIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCIsImdldF9wb3MiLCJtYXhfbGVuIiwibGVuX3NvX2ZhciIsImxlbl9zb19mYXIkMCIsImxlbl9zb19mYXIkMSIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGgiLCJjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCIsImZpcnN0JDAiLCJtYXhfbGVuJDAiLCJtYXhfbGVuJDEiLCJjb21tb25fZ2VuZXJpY19sZW5ndGgiLCJjb21tb25fZ2VuZXJpYzIiLCJjb21tb25fZ2VuZXJpYyIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeDIiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeF9sZW5ndGgiLCJjb21tb25fcHJlZml4Ml9sZW5ndGgiLCJjb21tb25fc3VmZml4Ml9sZW5ndGgiLCJvZl9jaGFyIiwib2ZfY2hhcl9saXN0IiwicGFkX3JpZ2h0IiwicGFkX2xlZnQiLCJsb2NhbF9jb3B5X3ByZWZpeCIsImJ1ZmZlcl9sZW4iLCJsb2NhbF9jb3B5X3RvX3N0cmluZyIsInNyY19wb3MkMCIsImRzdF9wb3MkMCIsInBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSIsImZzdF9wb3MkMCIsInNuZF9wb3MkMCIsImZzdHMiLCJzbmRzIiwiYyQxIiwic25kX3BvcyQxIiwiZnN0X3BvcyQxIiwiYyQyIiwic25kX3BvcyQyIiwic3JjX3BvcyQxIiwiZnN0X3BvcyIsInNuZF9wb3MiLCJjMSQxIiwiZWl0aGVyJDEiLCJjMiQxIiwiYzIkMiIsImMxJDAiLCJlaXRoZXIkMCIsImMyJDAiLCJwb3MkMiIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsIm1hcGkkMCIsIm9jYW1sX2xleF90YWJsZXMiLCJwYXJzZV9oZXgiLCJsZXhidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsImNvbnZlcnRfZmFpbHVyZSIsIm51bV9iaXRzX2ludCIsIm51bV9iaXRzX25hdGl2ZWludCIsIm51bV9iaXRzX2ludDMyIiwibnVtX2JpdHNfaW50NjQiLCJtaW5faW50MzIiLCJtYXhfaW50MzIiLCJtaW5faW50NjQiLCJtYXhfaW50NjQiLCJtaW5fbmF0aXZlaW50IiwibWF4X25hdGl2ZWludCIsImludDY0X3RvX3N0cmluZyIsIm5hdGl2ZWludF90b19zdHJpbmciLCJpbnQzMl90b19pbnRfdHJ1bmMiLCJpbnRfdG9faW50MzJfdHJ1bmMiLCJpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiIsImludF90b19pbnQzMiIsImludDMyX3RvX2ludCIsImludF90b19pbnQzMl9leG4iLCJpbnQzMl90b19pbnRfZXhuIiwiaW50X3RvX2ludDY0IiwiaW50NjRfdG9faW50X3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQiLCJpbnQ2NF90b19pbnQiLCJpbnQ2NF90b19pbnRfZXhuIiwiaW50X3RvX25hdGl2ZWludCIsIm5hdGl2ZWludF90b19pbnRfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50IiwibmF0aXZlaW50X3RvX2ludF9leG4iLCJpbnQzMl90b19pbnQ2NCIsImludDY0X3RvX2ludDMyX3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzIiwiaW50NjRfdG9faW50MzIiLCJpbnQ2NF90b19pbnQzMl9leG4iLCJpbnQzMl90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50MzIiLCJuYXRpdmVpbnRfdG9faW50MzJfZXhuIiwiaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludDY0IiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpIiwiaW50NjRfdG9fbmF0aXZlaW50IiwiaW50NjRfdG9fbmF0aXZlaW50X2V4biIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NiIsImludDY0X2ZpdF9vbl9pbnQ2M19leG4iLCJpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IiwiZGVsaW1pdGVyIiwiY2hhcnNfcGVyX2RlbGltaXRlciIsImlucHV0X2xlbmd0aCIsImhhc19zaWduIiwibnVtX2RpZ2l0cyIsIm51bV9kZWxpbWl0ZXJzIiwib3V0cHV0X2xlbmd0aCIsImlucHV0X3BvcyIsIm91dHB1dF9wb3MiLCJudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIiwiZmlyc3RfZGlnaXRfcG9zIiwiaW5zZXJ0X2RlbGltaXRlciIsImluc2VydF91bmRlcnNjb3JlcyIsInNleHBfb2ZfaW50X3N0eWxlIiwiZGVsaW1pdGVyJDAiLCJtYWtlX3N1ZmZpeCIsInRvX3N0cmluZyQwIiwiaW52YWxpZCIsIm9mX3N0cmluZ193aXRoX2RlbGltaXRlciIsImxleCIsImJvZHkkMCIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbiIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSIsImludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsIm92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUiLCJpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsIiwiaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwibmVnYXRpdmVfZXhwb25lbnQiLCJvdmVyZmxvdyIsImludF9wb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpbnQ2NF9wb3ciLCJpbnQ2M19wb3dfb25faW50NjQiLCJydmFsIiwib25lIiwicm91bmRfZG93biIsIm1vZHVsdXMiLCJyb3VuZF91cCIsInJlbWFpbmRlciIsInJvdW5kX3Rvd2FyZHNfemVybyIsInRvX211bHRpcGxlX29mIiwicm91bmRfbmVhcmVzdCIsIm1vZHVsdXNfbWludXNfcmVtYWluZGVyIiwicm91bmQiLCJoMDEiLCJtYXNrIiwiaW50NjRfcG9wY291bnQiLCJ4JDIiLCJpbnQzMl9wb3Bjb3VudCIsIm5hdGl2ZWludF9wb3Bjb3VudCIsIm1vZHVsZV9uYW1lJDAiLCJvZl9zdHJpbmckMCIsImZsb2F0X2xvd2VyX2JvdW5kIiwiZmxvYXRfdXBwZXJfYm91bmQiLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJ6ZXJvIiwiZnVuYyQwIiwibmVnIiwib2Zfc3RyaW5nJDEiLCJvZl9pbnQzMiIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjQiLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnQiLCJhYnMiLCJyZW0iLCJpbmNyIiwiZGVjciIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJzaGlmdF9sZWZ0IiwiYml0X25vdCIsImJpdF9vciIsImJpdF9hbmQiLCJiaXRfeG9yIiwicG93Iiwibm9uX3Bvc2l0aXZlX2FyZ3VtZW50IiwiY2VpbF9wb3cyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwiZmxvb3JfcG93MiIsImlzX3BvdzIiLCJmbG9vcl9sb2cyIiwiY2VpbF9sb2cyIiwicG9wY291bnQiLCJsbm90Iiwic3VjY19leG4iLCJtc2ciLCJwcmVkX2V4biIsIm9mX3NjYWxhciIsIm9mX3NjYWxhcl9leG4iLCJ0b19zY2FsYXIiLCJ0b19jaGFyIiwidG9fY2hhcl9leG4iLCJ1dGY4X2J5dGVfbGVuZ3RoIiwidWNoYXIiLCJjb2RlcG9pbnQiLCJzb21lX3QiLCJzeW0iLCJ0cmFucyIsImNvbnYiLCJkZXR1cGxlMiIsInR1cGxlMiIsIndpdG5lc3MiLCJ2XzAwNSIsInRvX3NleHAiLCJ1aWQiLCJzYW1lX3dpdG5lc3MiLCJzYW1lIiwic2FtZV93aXRuZXNzX2V4biIsIm5vbmVfc3Vic3RpdHV0ZSIsIm5vbmUiLCJ2YWx1ZV91bnNhZmUiLCJvZl9zZXhwYWJsZSIsInRvX3NleHBhYmxlIiwieF8wMDMiLCJvZl9hXzAwNCIsInhfMDA1IiwiaW5pdF9zb21lIiwiZ2V0X3NvbWVfZXhuIiwiaXNfbm9uZSQwIiwiaXNfc29tZSQwIiwic2V0X3NvbWUiLCJzZXRfbm9uZSIsInVuc2FmZV9nZXRfc29tZV9leG4iLCJ1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSIsInVuc2FmZV9pc19zb21lIiwidW5zYWZlX3NldF9zb21lIiwidW5zYWZlX3NldF9ub25lIiwiY2xlYXIiLCJlbGVtIiwibWFwX3NvbWUiLCJvZl9hcnJheV9zb21lIiwiY2FwYWNpdHkiLCJlbHRzIiwibGVuZ3RoXzAwMyIsImVsdHNfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJyZXNpemUiLCJzaXplIiwic2V0X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5JDAiLCJwdXNoIiwicG9wX25vbmVtcHR5IiwicG9wX2Vycm9yIiwicG9wIiwicG9wX2V4biIsInRvcF9ub25lbXB0eSIsInRvcF9lcnJvciIsInRvcCIsInRvcF9leG4iLCJ1bnRpbF9lbXB0eSIsInRfcmVzdWx0IiwiZmlsdGVyX2lucGxhY2UiLCJ3cml0ZV9pbmRleCIsInJlYWRfaW5kZXgiLCJoYXNoX292ZXJyaWRlIiwib2ZfcG9zIiwib2Zfc2lnbiIsInRvX3NpZ25fZXhuIiwidG9faW50X2V4biIsImVycm9yX3NvdXJjZV8wMDYiLCJpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW0iLCJhbGxfb2ZfYSIsImVudW1lcmF0ZV8wMDIiLCJlbnVtZXJhdGVfMDAxIiwiYWNjJDIiLCJvZl9hXzAwMyIsInNleHBfMDA4IiwidGFnXzAwOSIsInNleHBfYXJnc18wMTAiLCJhcmcwXzAxMSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwiYV8wMTEiLCJiXzAxMiIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDE4IiwibGVmdF8wMTciLCJyaWdodF8wMjIiLCJsZWZ0XzAyMSIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwicmlnaHRfMDIwIiwibGVmdF8wMTkiLCJ0XzAzMCIsInRfMDI5IiwidF8wMzIiLCJ0XzAzMSIsInJpZ2h0XzAzNCIsImxlZnRfMDMzIiwicmlnaHRfMDM4IiwibGVmdF8wMzciLCJ0XzA0MCIsInRfMDM5IiwidF8wNDIiLCJ0XzA0MSIsInJpZ2h0XzAzNiIsImxlZnRfMDM1Iiwib2Zfa18wNDMiLCJvZl92XzA0NCIsInNleHBfMDcxIiwiYXJnMV8wNjgiLCJhcmcwXzA2NyIsInJlczBfMDY5IiwiYXRvbV8wNDciLCJzZXhwX2FyZ3NfMDUwIiwiYXRvbV8wNDckMCIsImFyZzBfMDU4IiwiYXJnMV8wNTMiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwicmVzMF8wNTkiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsInJlczFfMDcwIiwib2Zfa18wNzIiLCJvZl92XzA3MyIsImFyZzFfMDgyIiwiYXJnMF8wODEiLCJyZXMwXzA4MyIsInZfMDc0IiwicmVzMV8wODQiLCJ2XzA3NiIsImFyZzFfMDc4IiwiYXJnMF8wNzciLCJyZXMwXzA3OSIsInJlczFfMDgwIiwidl8wNzUiLCJrX3NleHBfZ3JhbW1hciIsInZfc2V4cF9ncmFtbWFyIiwiY21wX2xlZnQiLCJjbXBfcmlnaHQiLCJhXzA4NSIsImJfMDg2IiwicmlnaHRfMDkyIiwibGVmdF8wOTEiLCJ0XzA5NCIsInRfMDkzIiwidF8wOTYiLCJ0XzA5NSIsInJpZ2h0XzA4OCIsImxlZnRfMDg3IiwicmlnaHRfMDkwIiwibGVmdF8wODkiLCJhXzA5NyIsImJfMDk4IiwicmlnaHRfMTA0IiwibGVmdF8xMDMiLCJ0XzEwNiIsInRfMTA1IiwidF8xMDgiLCJ0XzEwNyIsInJpZ2h0XzEwMCIsImxlZnRfMDk5IiwicmlnaHRfMTAyIiwibGVmdF8xMDEiLCJvZl9sZWZ0XzEwOSIsIm9mX3JpZ2h0XzExMCIsInZfMTEzIiwiYXJnMV8xMTUiLCJhcmcwXzExNCIsInJlczBfMTE2IiwicmVzMV8xMTciLCJ2XzExMSIsInZfMTEyIiwic2V4cF9vZl90JDMiLCJoZWlnaHQiLCJpbl9yYW5nZSIsImhsIiwiaHIiLCJsb3dlciQxIiwiaW52YXJpYW50cyIsImgkMSIsImgkMCIsInNsIiwic3IiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2siLCJrbCIsImskMSIsImtsJDAiLCJrJDIiLCJrciIsImxlZnRfbGVuZ3RoIiwicmlnaHRfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCIsImFycmF5X2xlbmd0aCIsIm9mX3NvcnRlZF9hcnJheSIsImluY3JlYXNpbmciLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYkMCIsImxybCIsImxydiIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiQwIiwicmxsIiwicmx2IiwiYXV4IiwiYWRkX21pbiIsImFkZF9tYXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsInNwbGl0X2xlX2d0Iiwic3BsaXRfbHRfZ2UiLCJlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW8iLCJyZW1vdmVfaW5kZXgiLCJsX3NpemUiLCJ1bmlvbiIsInYxJDAiLCJ2MiQwIiwicjIkMCIsInIxJDAiLCJ1bmlvbl9saXN0IiwidG9fdHJlZSIsImludGVyIiwib3RoZXJfc2V0IiwiZSQxIiwiY29uc19yaWdodCIsIm9mX3NldCIsImVudW0kMCIsInRyZWUiLCJzeW1tZXRyaWNfZGlmZiIsImVsdCQwIiwiZW51bTEiLCJ0cmVlMSIsImVudW0yIiwidHJlZTIiLCJjb21wYXJlX3Jlc3VsdCIsIm5leHRfc3RhdGUiLCJncmVhdGVyX29yX2VxdWFsX3RvIiwibGVzc19vcl9lcXVhbF90byIsImluY2x1c2l2ZV9ib3VuZCIsInNpZGUiLCJtYXliZSIsInYkMSIsInYkMiIsInYkMyIsInYkNCIsImUkMiIsIm1lcmdlX3RvX3NlcXVlbmNlIiwiZTIkMiIsImUxJDIiLCJlMiQwIiwiZTEkMCIsImUyJDEiLCJlMSQxIiwidDIkMiIsInQxJDIiLCJpc19zdWJzZXQiLCJhcmVfZGlzam9pbnQiLCJhY2N1JDEiLCJmaWx0Iiwia2VlcF92IiwibF9mIiwibF90Iiwia2VlcF92X3QiLCJyX2YiLCJyX3QiLCJtayIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiY2hvb3NlIiwiY2hvb3NlX2V4biIsInBvc19yZWYiLCJncm91cF9ieSIsImVxdWl2Iiwic2V0JDAiLCJlcXVpdl9jbGFzc2VzIiwibm90X2VxdWl2X3giLCJlcXVpdl94IiwiZXF1aXZfY2xhc3NlcyQwIiwic3RhYmxlX2RlZHVwX2xpc3QiLCJsZWZ0b3ZlcnMiLCJhbHJlYWR5X3NlZW4iLCJhbHJlYWR5X3NlZW4kMCIsImxlZnRvdmVycyQwIiwidF9vZl9zZXhwX2RpcmVjdCIsImVsdF9sc3QiLCJlbF9zZXhwIiwiaXNfc3Vic2V0JDAiLCJzdWJzZXQiLCJzdXBlcnNldCIsInNleHBfb2ZfZWx0IiwiaW52YWxpZF9lbGVtZW50cyIsImludmFsaWRfZWxlbWVudHNfc2V4cCIsImxpa2UiLCJsaWtlX21heWJlX25vX29wIiwib2xkX3QiLCJvbGRfdHJlZSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsIm5hbWVkIiwiaXNfc3Vic2V0JDIiLCJwYXJ0aXRpb25fdGYkMCIsInRyZWVfZiIsInRyZWVfdCIsInNwbGl0X2xlX2d0JDAiLCJzcGxpdF9sdF9nZSQwIiwiZ3JvdXBfYnkkMCIsIm50aCQwIiwicmVtb3ZlX2luZGV4JDAiLCJ0b19zZXF1ZW5jZSQwIiwiYmluYXJ5X3NlYXJjaCQwIiwiYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQkMCIsIm1lcmdlX3RvX3NlcXVlbmNlJDAiLCJoYXNoX2ZvbGRfZGlyZWN0IiwidF9vZl9zZXhwX2RpcmVjdCQwIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImVsZW1lbnRzJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImNob29zZSQxIiwiY2hvb3NlX2V4biQxIiwidG9fYXJyYXkkMSIsIml0ZXIkMiIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiY291bnQkMSIsInN1bSQxIiwiZmluZCQxIiwiZmluZF9leG4kMSIsImZpbmRfbWFwJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmaWx0ZXIkMSIsImZpbHRlcl9tYXAkMCIsInBhcnRpdGlvbl90ZiQxIiwiaXRlcjIkMSIsIm1lbSQxIiwiYWRkJDEiLCJyZW1vdmUkMSIsInVuaW9uJDEiLCJpbnRlciQxIiwiZGlmZiQxIiwic3ltbWV0cmljX2RpZmYkMSIsImNvbXBhcmVfZGlyZWN0JDAiLCJpc19zdWJzZXQkMyIsImFyZV9kaXNqb2ludCQxIiwib2Zfc2VxdWVuY2UkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJzcGxpdF9sZV9ndCQxIiwic3BsaXRfbHRfZ2UkMSIsIm50aCQxIiwicmVtb3ZlX2luZGV4JDEiLCJvZl90cmVlIiwidG9fc2VxdWVuY2UkMSIsImJpbmFyeV9zZWFyY2gkMSIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDEiLCJtZXJnZV90b19zZXF1ZW5jZSQxIiwiaXNfc3Vic2V0JDQiLCJ0b190cmVlJDAiLCJvZl90cmVlJDAiLCJ0X29mX3NleHBfZGlyZWN0JDEiLCJlbXB0eSQwIiwic2luZ2xldG9uJDAiLCJ1bmlvbl9saXN0JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX3NvcnRlZF9hcnJheSQxIiwib2ZfbGlzdCQxIiwib2Zfc2VxdWVuY2UkMSIsIm9mX2FycmF5JDEiLCJzdGFibGVfZGVkdXBfbGlzdCQxIiwiZmlsdGVyX21hcCQxIiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwidW5pb25fbGlzdCQyIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9zb3J0ZWRfYXJyYXkkMiIsIm9mX2xpc3QkMiIsIm9mX3NlcXVlbmNlJDIiLCJvZl9hcnJheSQyIiwic3RhYmxlX2RlZHVwX2xpc3QkMiIsImZpbHRlcl9tYXAkMiIsIm9mX3RyZWUkMSIsInNleHBfb2ZfbV90IiwiRWx0IiwibV90X29mX3NleHAiLCJtX3Rfc2V4cF9ncmFtbWFyIiwiY29tcGFyZV9tX3QiLCJlcXVhbF9tX3QiLCJoYXNoX2ZvbGRfbV90IiwiaGFzaF9tX3QiLCJjb21wYXJhdG9yJDAiLCJlbXB0eSQyIiwic2luZ2xldG9uJDIiLCJ1bmlvbl9saXN0JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2FycmF5JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl90cmVlJDIiLCJ0b190cmVlJDEiLCJyZXBsYWNlIiwic2V0X3RlbXBvcmFyaWx5IiwicmVzdG9yZV90byIsInNldHMiLCJzbmFwc2hvdCIsInNldHNfdGVtcG9yYXJpbHkiLCJhbmRfdmFsdWVzIiwiaW5jX251bV9tdXRhdGlvbnMiLCJlbHRzX2luZGV4IiwiY2hlY2tfaW5kZXhfZXhuIiwiZW5zdXJlX25vX211dGF0aW9uIiwibnVtX211dGF0aW9ucyIsIm51bV9tdXRhdGlvbnNfMDAzIiwiZnJvbnRfMDA1IiwibWFza18wMDciLCJsZW5ndGhfMDA5IiwiZWx0c18wMTEiLCJhcmdfMDEyIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwic2V0X2NhcGFjaXR5X2ludGVybmFsIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9hbmRfaWdub3JlX2V4biIsImZyb250X25vbmVtcHR5IiwibGFzdF9ub25lbXB0eSIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwiZmlsdGVyaV9pbnBsYWNlIiwidW5yZWFjaGFibGVfY29kZSIsInplcm8kMCIsIm1pbnVzX29uZSIsInplcm8kMSIsInRvX2ludF90cnVuYyIsInRvX2ludDMyX3RydW5jIiwib2ZfaW50NjRfdHJ1bmMiLCJuYW1lJDAiLCJvZl9jb250aW51ZV9vcl9zdG9wIiwidG9fY29udGludWVfb3Jfc3RvcCIsImxlZnRfdmFsdWUiLCJyaWdodF92YWx1ZSIsInZhbHVlcyIsImxlZnRfZGVmYXVsdCIsInJpZ2h0X2RlZmF1bHQiLCJyaWdodCQwIiwiY29tcGFyZV9rZXkiLCJ2bCIsInZsJDAiLCJ2ciIsImswIiwiazEiLCJsZCIsImxyZCIsImxyZCQwIiwicmQiLCJybGQiLCJybGQkMCIsInJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQiLCJzZXhwX29mX2tleSIsImZpbmRfYW5kX2FkZF9vcl9zZXQiLCJkYXRhIiwiYWRkX29yX3NldCIsInRyZWUkMCIsInRyZWUkMSIsImxlbmd0aCQyIiwidHJlZSQyIiwiZCQwIiwidHJlZSQzIiwibGVuZ3RoJDMiLCJ0cmVlJDQiLCJsZW5ndGgkNCIsInRyZWUkNSIsInNldF9taW4iLCJzZXRfbWF4IiwiYWRkX2V4biIsImFkZF9leG5faW50ZXJuYWwiLCJzaW5nbGV0b25fdG9fdHJlZV9leG4iLCJjb2xsYXBzZSIsImdvIiwiYWRkX3VuY2hlY2tlZCIsImdvJDAiLCJ0b190cmVlX3VuY2hlY2tlZCIsIm1heF9rZXkiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIiwiYnVpbGRlciIsInByZXZfa2V5Iiwiam9pbiQwIiwibGQkMCIsImxrJDAiLCJyayIsInJkJDAiLCJyayQwIiwibGsiLCJjbXAkMCIsIm1heWJlJDAiLCJzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkiLCJpbnRvIiwiYm91bmRhcnlfb3B0Iiwic3BsaXRfcmFuZ2UiLCJtaWRfYW5kX3JpZ2h0IiwibGIkMSIsImxiJDIiLCJtaWRfYW5kX3JpZ2h0JDAiLCJsYiIsImxiJDAiLCJtaWQkMCIsImFkZF9tdWx0aSIsImRhdGEkMCIsImZpbmRfbXVsdGkiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm1pbl91cHBlciIsIm1heF9sb3dlciIsInVwcGVyX3BhcnRfd2l0aG91dF9taW4iLCJnbyQxIiwiY19taW4iLCJjX21heCIsImluaXQkMiIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwicmFuZ2VfdG9fYWxpc3QiLCJjb25jYXRfdW5jaGVja2VkIiwiY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkNSIsImxlbmd0aCQ2IiwidHJlZSQ2IiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwibmV3X2RhdGEiLCJuZXdfZGF0YSQwIiwibmV3X2RhdGEkMSIsImtlZXBfZGF0YSIsImZpbHRlcl9rZXlzIiwia2VlcF9kYXRhX3QiLCJzdGVwX2RlZXBlcl9leG4iLCJkcm9wX3BoeXNfZXF1YWxfcHJlZml4IiwiYWNjMSIsImFjYzIiLCJ0cmVlMSQwIiwiYWNjMSQwIiwidHJlZTIkMCIsImFjYzIkMCIsImFjYzEkMSIsInRyZWUxJDEiLCJhY2MyJDEiLCJ0cmVlMiQxIiwiYWNjMiQyIiwidHJlZTIkMiIsImFjYzEkMiIsInRyZWUxJDIiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMSIsImVudW0yJDAiLCJlbnVtMSQwIiwia2V5cyIsIm9mX2ZvbGRhYmxlIiwiZm9sZGFibGUiLCJwcmV2X2RhdGEiLCJvZl9mb2xkYWJsZV9mb2xkIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwib2ZfZm9sZGFibGUkMCIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfZm9sZGFibGVfbXVsdGkiLCJvZl9hbGlzdF9mb2xkIiwib2ZfYWxpc3RfcmVkdWNlIiwib2ZfYWxpc3QiLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9saXN0X3dpdGhfa2V5IiwiZ2V0X2tleSIsIm5ld19sZW5ndGgiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwidG9fYWxpc3QiLCJrZXlfb3JkZXIiLCJtZXJnZV9sYXJnZV9maXJzdCIsImxlbmd0aF9sYXJnZSIsInRfbGFyZ2UiLCJ0X3NtYWxsIiwibWVyZ2Vfc2tld2VkIiwibGVuZ3RoMSIsImxlbmd0aDIiLCJyZXBhY2thZ2UiLCJtYXJrZXIiLCJjbG9zZXN0X2tleSIsImZvdW5kX21hcmtlciIsImZvdW5kX2tleSIsImZvdW5kX3ZhbHVlIiwiZm91bmRfdmFsdWUkMCIsImZvdW5kX2tleSQwIiwicmFuayIsIm51bV90b19zZWFyY2giLCJwYWlyIiwicGFpciQwIiwiYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQiLCJtYXliZV9ib3VuZCIsImlmX2V4Y2x1c2l2ZSIsImlmX2luY2x1c2l2ZSIsImZpbmRfYm91bmQiLCJib3VuZCQwIiwiYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIiwibG93ZXJfYm91bmQkMCIsInVwcGVyX2JvdW5kJDAiLCJvZl9pdGVyaSIsIm9mX2l0ZXJpX2V4biIsImtleV9vZl9zZXhwIiwidmFsdWVfb2Zfc2V4cCIsImFsaXN0X3NleHBzIiwiZm91bmRfZmlyc3RfayIsImsyX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwiZXJyb3JzIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJ0cmFuc3Bvc2Vfa2V5cyIsIm91dGVyX2NvbXBhcmF0b3IiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfdCIsIm91dGVyX2tleSIsImlubmVyX3QiLCJpbm5lcl9rZXkiLCJhY2NfbGVuIiwiZWx0X2xlbiIsInRyZWVfZmlsdGVyX21hcGkiLCJyX2xlbiIsImxfbGVuIiwid2l0aF9zYW1lX2xlbmd0aCIsIm9mX2xpa2VfdHJlZSIsIm9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCIsImFkZF9leG4kMCIsImFkZF9tdWx0aSQwIiwicmVtb3ZlX211bHRpJDAiLCJmaW5kX211bHRpJDAiLCJjaGFuZ2UkMCIsInVwZGF0ZSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaV91bnRpbCQwIiwiZm9sZCQzIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDAiLCJmaWx0ZXJpJDAiLCJmaWx0ZXJfbWFwaSQwIiwib2ZfbGlrZV90cmVlMiIsIm9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSQwIiwic3VicmFuZ2UiLCJoX2wiLCJoX3IiLCJvdXRlcl9qb2luZWRfaGVpZ2h0IiwibWlkX2xlbmd0aCIsImFwcGVuZCQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMCIsInJhbmdlX3RvX2FsaXN0JDAiLCJjbG9zZXN0X2tleSQwIiwicmFuayQwIiwic2V4cF9vZl9rIiwic2V4cF9vZl92IiwiaGFzaF9mb2xkX2tleSIsImhhc2hfZm9sZF9kYXRhIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsIm5ld190cmVlIiwibmV3X3RyZWVfd2l0aF9sZW5ndGgiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsIm9mX2xpc3Rfd2l0aF9rZXkkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDAiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDAiLCJzZXQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiaXRlcl9rZXlzJDEiLCJpdGVyaV91bnRpbCQxIiwibWFwaSQxIiwiZm9sZCQ0IiwiZm9sZDIkMiIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXJpJDEiLCJmaWx0ZXJfbWFwaSQxIiwicGFydGl0aW9uX21hcGkkMSIsInBhcnRpdGlvbl9tYXAkMSIsInBhcnRpdGlvbmlfdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJrZXlzJDEiLCJkYXRhJDEiLCJ0b19hbGlzdCQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwiZm9yX2FsbGkkMSIsImV4aXN0c2kkMSIsImNvdW50aSQxIiwiYXBwZW5kJDEiLCJzdWJyYW5nZSQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMSIsInJhbmdlX3RvX2FsaXN0JDEiLCJjbG9zZXN0X2tleSQxIiwibnRoJDIiLCJudGhfZXhuJDAiLCJyYW5rJDEiLCJrX29mX3NleHAiLCJ2X29mX3NleHAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJtYXBfa2V5cyQwIiwiZHVwIiwibWFwX2tleXNfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiYWRkX2V4biQyIiwib2ZfdHJlZTAiLCJvZl9hbGlzdCQxIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMSIsIm9mX2FsaXN0X2V4biQxIiwib2ZfYWxpc3RfbXVsdGkkMSIsIm9mX2FsaXN0X2ZvbGQkMSIsIm9mX2FsaXN0X3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsInRyZWVfbGVuZ3RoIiwib2ZfaXRlcmlfZXhuJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwidHJhbnNwb3NlX2tleXMkMSIsIm9mX3RyZWUkMyIsIm9mX2FsaXN0JDIiLCJvZl9hbGlzdF9vcl9lcnJvciQyIiwib2ZfYWxpc3RfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQyIiwib2Zfc2VxdWVuY2VfZXhuJDIiLCJvZl9zZXF1ZW5jZV9tdWx0aSQyIiwib2Zfc2VxdWVuY2VfZm9sZCQyIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm9mX2xpc3Rfd2l0aF9rZXkkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDMiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDMiLCJtYXBfa2V5cyQzIiwibWFwX2tleXNfZXhuJDMiLCJ0cmFuc3Bvc2Vfa2V5cyQzIiwidHJhbnNmZXIiLCJjYW1sX2l0ZXIiLCJjYW1sX2ZvbGQiLCJxIiwicSQwIiwiZmxvYXRfb2ZfYml0cyIsImJpdHNfb2ZfZmxvYXQiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJ0b19uYXRpdmVpbnRfZXhuIiwid3JhcF9leG4iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsIm9mX3N0cmluZ19yYXciLCJzaWduZWRuZXNzIiwicG9zX3N0ciIsImludDYzIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsIm9mX2ludF90cnVuYyIsInJlcHIiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwib2Zfc3RyaW5nX29wdCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkiLCJzdGFydF9pZHgiLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfcmFuZG9tbHlfZXhuIiwiaW52YXJpYW50X2tleSIsImludmFyaWFudF9kYXRhIiwicmVhbF9sZW4iLCJuZXdfdCIsInQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2RhdGEiLCJkdXBlcyIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsInNleHBfb2ZfZGF0YSIsImRfb2Zfc2V4cCIsImtfZ3JhbW1hciIsInJvdyIsIm9sZCIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJtYXliZV9zZXQiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibWVyZ2VfaW50byIsImRzdF9kYXRhJDAiLCJhY3Rpb24iLCJkc3RfZGF0YSIsInRvX3JlbW92ZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwibWFwX3Jlc3VsdHMiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzaW1pbGFyIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDEiLCJjcmVhdGVfbWFwcGVkJDEiLCJjcmVhdGVfd2l0aF9rZXkkMSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQxIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQxIiwiZ3JvdXAkMSIsImhhc2hhYmxlX3MiLCJwb2x5X2hhc2hhYmxlIiwic3RyaWN0X2FkZCIsInN0cmljdF9hZGRfZXhuIiwic3RyaWN0X3JlbW92ZSIsInN0cmljdF9yZW1vdmVfZXhuIiwic2V4cF9vZl9lIiwibGFyZ2VyIiwic21hbGxlciIsIm9mX2hhc2h0Ymxfa2V5cyIsImhhc2h0YmwiLCJ0b19oYXNodGJsIiwiZV9vZl9zZXhwIiwiZXJyb3Jfc291cmNlXzAwNyIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwib2ZfaW50NjMiLCJpcm91bmRfbGJvdW5kIiwiaXJvdW5kX3Vib3VuZCIsImlyb3VuZF91cCIsImlyb3VuZF91cF9leG4iLCJpcm91bmRfZG93biIsImlyb3VuZF9kb3duX2V4biIsImlyb3VuZF90b3dhcmRzX3plcm8iLCJpcm91bmRfdG93YXJkc196ZXJvX2V4biIsInJvdW5kX25lYXJlc3RfbGIiLCJyb3VuZF9uZWFyZXN0X3ViIiwib25lX3VscF9sZXNzX3RoYW5faGFsZiIsImFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IiwiaXJvdW5kX25lYXJlc3RfMzIiLCJpcm91bmRfbmVhcmVzdF82NCIsInBpIiwic3FydF9waSIsInNxcnRfMnBpIiwiZXVsZXIiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzcXVhcmUiLCJmcmFjdGlvbmFsIiwiaW50ZWdyYWwiLCJyb3VuZF9uZWFyZXN0X2lubGluZSIsInJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIiwiY2VpbF9vcl9zdWNjIiwiZGlmZl9mbG9vciIsImRpZmZfY2VpbCIsImludDYzX3JvdW5kX2xib3VuZCIsImludDYzX3JvdW5kX3Vib3VuZCIsImludDYzX3JvdW5kX3VwX2V4biIsImludDYzX3JvdW5kX2Rvd25fZXhuIiwiaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9leG4iLCJjbGFzc2lmeSIsInN0cmlwX3plcm8iLCJkZWNpbWFscyIsImV4cGxpY2l0X3BsdXMiLCJ0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG8iLCJraWxvIiwibWVnYSIsImdpZ2EiLCJ0ZXJhIiwicGV0YSIsIm1hZyIsIm51bWVyYXRvciIsImRlbm9taW5hdG9yIiwiaGlnaGVyIiwiZGlmZl9yaWdodCIsImRpZmZfbGVmdCIsInBldGEkMCIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyIsInJvdW5kX2dlbiIsInNkIiwiZGQiLCJkZCQwIiwic2QkMCIsImRkJDEiLCJzZCQxIiwiYWJzX2RkIiwicm91bmRfc2lnbmlmaWNhbnQiLCJzaWduaWZpY2FudF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsIiwiZGVjaW1hbF9kaWdpdHMiLCJzaWduX2V4biIsInNpZ25fb3JfbmFuIiwiaWVlZV9uZWdhdGl2ZSIsIm1hbnRpc3NhX2JpdHMiLCJleHBvbmVudF9tYXNrNjQiLCJleHBvbmVudF9tYXNrIiwibWFudGlzc2FfbWFzayIsIm1hbnRpc3NhX21hc2s2NCIsImllZWVfZXhwb25lbnQiLCJpZWVlX21hbnRpc3NhIiwiY3JlYXRlX2llZWVfZXhuIiwibmVnYXRpdmUiLCJtYW50aXNzYSIsInNpZ25fYml0cyIsImV4cHRfYml0cyIsIm1hbnRfYml0cyIsImNyZWF0ZV9pZWVlIiwic3BlY2lhbGl6ZWRfaGFzaCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJjYW1sX2J1ZmZlcl9sZW5ndGgiLCJjYW1sX2J1ZmZlcl9ibGl0IiwiZWxpZGVkX21lc3NhZ2UiLCJlbGlkZSIsImF0X21vc3RfbnVtX2ZyYW1lcyIsInRvX3N0cmluZ19saXN0Iiwic2V0X3JlY29yZGluZyIsImFtX3JlY29yZGluZyIsIm1vc3RfcmVjZW50IiwibW9zdF9yZWNlbnRfZm9yX2V4biIsIndpdGhfcmVjb3JkaW5nIiwic2F2ZWQiLCJvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmEiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImdsb2JhbGl6ZV9mbG9hdCIsImZ1bmMkMSIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludCIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludDMyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJnbG9iYWxpemVfaW50NjQiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX25hdGl2ZWludCIsImZ1bmMkNSIsIm5hdGl2ZWludF9vZl9zZXhwIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwib3B0aW9uX29mX3NleHAiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsImdsb2JhbGl6ZV9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwiZnVuYyQ2IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJmYWlsd2l0aCIsImludmFsaWRfYXJnIiwiY29tcGFyZV9hcnJheSQwIiwiZXF1YWxfYXJyYXkkMCIsImdsb2JhbGl6ZV9hcnJheSQwIiwiYXJyYXlfb2Zfc2V4cCQwIiwic2V4cF9vZl9hcnJheSQwIiwiYXJyYXlfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2Jvb2wkMCIsImVxdWFsX2Jvb2wkMCIsImdsb2JhbGl6ZV9ib29sJDAiLCJoYXNoX2ZvbGRfYm9vbCQwIiwiaGFzaF9ib29sJDAiLCJib29sX29mX3NleHAkMCIsInNleHBfb2ZfYm9vbCQwIiwiYm9vbF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfY2hhciQwIiwiZXF1YWxfY2hhciQwIiwiZ2xvYmFsaXplX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJnbG9iYWxpemVfZmxvYXQkMCIsImhhc2hfZm9sZF9mbG9hdCQwIiwiaGFzaF9mbG9hdCQwIiwiZmxvYXRfb2Zfc2V4cCQwIiwic2V4cF9vZl9mbG9hdCQwIiwiZmxvYXRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludCQwIiwiZXF1YWxfaW50JDAiLCJnbG9iYWxpemVfaW50JDAiLCJoYXNoX2ZvbGRfaW50JDAiLCJoYXNoX2ludCQwIiwiaW50X29mX3NleHAkMCIsInNleHBfb2ZfaW50JDAiLCJpbnRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDMyJDAiLCJlcXVhbF9pbnQzMiQwIiwiZ2xvYmFsaXplX2ludDMyJDAiLCJoYXNoX2ZvbGRfaW50MzIkMCIsImhhc2hfaW50MzIkMCIsImludDMyX29mX3NleHAkMCIsInNleHBfb2ZfaW50MzIkMCIsImludDMyX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQ2NCQwIiwiZXF1YWxfaW50NjQkMCIsImdsb2JhbGl6ZV9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiZ2xvYmFsaXplX2xpc3QkMCIsImhhc2hfZm9sZF9saXN0JDAiLCJsaXN0X29mX3NleHAkMCIsInNleHBfb2ZfbGlzdCQwIiwibGlzdF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbmF0aXZlaW50JDAiLCJlcXVhbF9uYXRpdmVpbnQkMCIsImdsb2JhbGl6ZV9uYXRpdmVpbnQkMCIsImhhc2hfZm9sZF9uYXRpdmVpbnQkMCIsImhhc2hfbmF0aXZlaW50JDAiLCJuYXRpdmVpbnRfb2Zfc2V4cCQwIiwic2V4cF9vZl9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfb3B0aW9uJDAiLCJlcXVhbF9vcHRpb24kMCIsImdsb2JhbGl6ZV9vcHRpb24kMCIsImhhc2hfZm9sZF9vcHRpb24kMCIsIm9wdGlvbl9vZl9zZXhwJDAiLCJzZXhwX29mX29wdGlvbiQwIiwib3B0aW9uX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9yZWYkMCIsImVxdWFsX3JlZiQwIiwiZ2xvYmFsaXplX3JlZiQwIiwicmVmX29mX3NleHAkMCIsInNleHBfb2ZfcmVmJDAiLCJyZWZfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3N0cmluZyQwIiwiZXF1YWxfc3RyaW5nJDAiLCJnbG9iYWxpemVfc3RyaW5nJDAiLCJoYXNoX2ZvbGRfc3RyaW5nJDAiLCJoYXNoX3N0cmluZyQwIiwic3RyaW5nX29mX3NleHAkMCIsInNleHBfb2Zfc3RyaW5nJDAiLCJzdHJpbmdfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2J5dGVzJDAiLCJlcXVhbF9ieXRlcyQwIiwiZ2xvYmFsaXplX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiZ2xvYmFsaXplX3VuaXQkMCIsImhhc2hfZm9sZF91bml0JDAiLCJoYXNoX3VuaXQkMCIsInVuaXRfb2Zfc2V4cCQwIiwic2V4cF9vZl91bml0JDAiLCJ1bml0X3NleHBfZ3JhbW1hciQwIiwicmFpc2VfcyQwIiwidG9fc3RyaW5nIiwibWFwIiwiZiIsIm8iLCJ2Iiwic2V0X2lucHV0X25hbWUiLCJuYW1lIiwic2V0X2lucHV0X2xleGJ1ZiIsImxleGJ1Zl9vcHQiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInByaW50X2xvbmdpZGVudCIsImxvbmdwcmVmaXgiLCJzJDAiLCJ5IiwibG9uZ2lkZW50X2xvYyIsImNvbnN0YW50IiwiaSIsIm0iLCJpJDAiLCJpJDEiLCJkZWxpbSIsImkkMiIsIm0kMCIsIm11dGFibGVfZmxhZyIsInZpcnR1YWxfZmxhZyIsInJlY19mbGFnIiwicmYiLCJub25yZWNfZmxhZyIsImRpcmVjdGlvbl9mbGFnIiwicHJpdmF0ZV9mbGFnIiwiY29uc3RhbnRfc3RyaW5nIiwidHl2YXIiLCJ0eXZhcl9sb2MiLCJzdHJpbmdfcXVvdCIsImNsYXNzX3BhcmFtc19kZWYiLCJsIiwidHlwZV9wYXJhbSIsInR5cGVfd2l0aF9sYWJlbCIsImxhYmVsIiwiY29yZV90eXBlMSIsImNvcmVfdHlwZSIsImF0dHJpYnV0ZXMiLCJjdDIiLCJjdDEiLCJjdCIsInNsIiwiY3QkMCIsImN0JDEiLCJsJDAiLCJsaSIsImwkMSIsImNvcmVfZmllbGRfdHlwZSIsImZpZWxkX3ZhciIsImwkMiIsImxpJDAiLCJsb3ciLCJjbG9zZWQiLCJsJDMiLCJmaXJzdF9pc19pbmhlcml0IiwidHlwZV92YXJpYW50X2hlbHBlciIsImN0bCIsImNzdHJzIiwibGlkIiwiYXV4IiwiZXh0ZW5zaW9uIiwicGF0dGVybiQxIiwicGF0dGVybiIsInAiLCJwMiIsInAxIiwib3JwYXRzIiwicGF0dGVybjEiLCJwYXR0ZXJuMSQwIiwicGF0dGVybl9saXN0X2hlbHBlciIsInBhdDIiLCJwYXQxIiwic2ltcGxlX3BhdHRlcm4iLCJzaW1wbGVfcGF0dGVybiQwIiwicG8iLCJ2bCIsImMyIiwiYzEiLCJsb25naWRlbnRfeF9wYXR0ZXJuIiwicCQwIiwicCQxIiwicCQyIiwid2l0aF9wYXJlbiIsImxhYmVsX2V4cCIsIm9wdCIsInJlc3QiLCJ0eHQkMCIsIm8kMCIsInN1Z2FyX2V4cHIiLCJhcmdzIiwiaWQiLCJsYWIiLCJwcmludF9pbmRleG9wIiwicGF0aF9wcmVmaXgiLCJhc3NpZ24iLCJsZWZ0IiwicHJpbnRfaW5kZXgiLCJpbmRpY2VzIiwicmVtX2FyZ3MiLCJwcmludF9wYXRoIiwic2ltcGxlX2V4cHIiLCJlJDAiLCJwYXRoIiwiZnVuYyIsIm90aGVyX2FyZ3MiLCJhJDAiLCJhc3NpZ24kMCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsImluZGV4ZXMiLCJyZXN0JDMiLCJpMyIsImkyIiwiaTEiLCJyZXN0JDQiLCJpMiQwIiwiaTEkMCIsInJlc3QkNSIsImkxJDEiLCJtdWx0aV9pbmRpY2VzIiwibiIsImtpbmQiLCJyaWdodCQwIiwibGVmdCQwIiwibCQ1IiwiZSQ3IiwiYXJnMSIsImFyZzIiLCJsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0iLCJzJDEiLCJzJDIiLCJleHByZXNzaW9uMiIsImVvJDAiLCJlbyQxIiwibCQ2IiwiZTIkMSIsImUxJDEiLCJsaSQxIiwiZSQ4IiwicyQzIiwibCQ3Iiwic3RyaW5nX3hfZXhwcmVzc2lvbiIsImUkOSIsImUkMTAiLCJlJDExIiwiZSQxMiIsImNhc2VfbGlzdCIsImUwIiwiZSQxIiwibCQ0IiwiZSQyIiwiZSQzIiwibWUiLCJtb2R1bGVfZXhwciIsImUkNCIsImNkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZSQ1IiwiZSQ2IiwiYm9keSIsImFuZHMiLCJsZXQkMCIsImJpbmRpbmdfb3AiLCJlbyIsImUyIiwiZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIiwiZTIkMCIsImUxJDAiLCJsc3QiLCJiaW5kaW5ncyIsImNzIiwiY2xhc3Nfc3RydWN0dXJlIiwiZXhwcmVzc2lvbjIkMCIsInNpbXBsZV9leHByJDAiLCJsb25naWRlbnRfeF9leHByZXNzaW9uIiwiZTMiLCJkZiIsImV4cHJlc3Npb24iLCJjdG8xIiwicGF5bG9hZCIsIml0ZW1fYXR0cmlidXRlcyIsImZsb2F0aW5nX2F0dHJpYnV0ZSIsInZhbHVlX2Rlc2NyaXB0aW9uIiwiaXRlbV9leHRlbnNpb24iLCJleGNlcHRpb25fZGVjbGFyYXRpb24iLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfdHlwZSIsInZmIiwibWYiLCJ2ZiQwIiwicGYiLCJjbGFzc19zaWduYXR1cmUiLCJjbCIsImNvIiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImt3ZCIsImNsYXNzX2ZpZWxkIiwic28iLCJjZSIsIm92ZiIsImNsYXNzX2V4cHIiLCJvdmYkMCIsIm92ZiQxIiwiYmluZCIsImJpbmRpbmciLCJjZSQwIiwiY2UkMSIsIm1vZHVsZV90eXBlJDEiLCJtb2R1bGVfdHlwZSIsIm10MiQwIiwibXQyIiwibXQxIiwibW9kdWxlX3R5cGUxIiwibXQiLCJ0ZCIsImxzJDAiLCJ0eXBlX2RlY2xhcmF0aW9uIiwibGkyIiwibXR5IiwibXR5JDAiLCJsaSQyIiwidGQkMCIsImxzJDEiLCJsaSQzIiwibHMkMiIsImxpMiQwIiwibGkkNCIsIm1vZHVsZV90eXBlMSQwIiwic2lnbmF0dXJlX2l0ZW0iLCJzaWduYXR1cmUiLCJ2ZCIsImludHJvIiwidHlwZV9kZWZfbGlzdCIsInRlIiwidHlwZV9leHRlbnNpb24iLCJlZCIsInBtZCIsImFsaWFzIiwicG1zIiwiZGVjbHMiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsIm1pZ3JhdGlvbl9lcnJvciIsIm1pc3NpbmdfZmVhdHVyZSIsIm1rX2dob3N0X2F0dHIiLCJjb25jYXRfbGlzdF9saXQiLCJhcmdfZXhwciIsImhkIiwibWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGgiLCJoaWRkZW4iLCJ2aXNpYmxlIiwibWlncmF0aW9uX2F0dHIiLCJleHByJDAiLCJtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyIsImZpZWxkcyIsImxpZGVudF9sb2MiLCJtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQiLCJzdHJpIiwibmV3X2ZpZWxkcyIsIm5ld19leHByIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJ4MCIsImNvcHlfc3RydWN0dXJlIiwieDAkMCIsImNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIiwicGRpcl9sb2MiLCJjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCIsImNvcHlfbG9jIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MiLCJ4MSIsIngwJDEiLCJjb3B5X0xvbmdpZGVudF90IiwieDAkMiIsImNvcHlfZXhwcmVzc2lvbiIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZXMiLCJjb3B5X2xvY2F0aW9uX3N0YWNrIiwiY29weV9leHByZXNzaW9uX2Rlc2MiLCJjb3B5X2NvbnN0YW50IiwieDIiLCJjb3B5X3ZhbHVlX2JpbmRpbmciLCJjb3B5X3JlY19mbGFnIiwidGNvbnN0cmFpbnQiLCJwYXJhbXMiLCJhdHRyIiwiZXhwciQzIiwiY2FzZXMiLCJjb3B5X2Nhc2UiLCJjb3B5X2NvcmVfdHlwZSIsImMxJDAiLCJleHByJDEiLCJleHByJDIiLCJwYXJhbSIsInBwYXJhbV9sb2MiLCJleHAwIiwiY29weV9wYXR0ZXJuIiwiY29weV9hcmdfbGFiZWwiLCJwZXhwX2Rlc2MkMCIsIngxJDAiLCJ4MSQxIiwieDAkMyIsIngxJDIiLCJ4MCQ0IiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDEkNCIsIngwJDciLCJ4MSQ1IiwieDAkOCIsIngxJDYiLCJ4MCQ5IiwieDIkMCIsIngxJDciLCJ4MCQxMCIsIngwJDExIiwieDIkMSIsIngxJDgiLCJ4MCQxMiIsIngxJDkiLCJ4MCQxMyIsIngxJDEwIiwieDAkMTQiLCJ4NCIsIngzIiwieDIkMiIsIngxJDExIiwieDAkMTUiLCJjb3B5X2RpcmVjdGlvbl9mbGFnIiwieDEkMTIiLCJ4MCQxNiIsIngyJDMiLCJ4MSQxMyIsIngwJDE3IiwieDEkMTQiLCJ4MCQxOCIsImNvcHlfbGFiZWwiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJ4MCQyMSIsIngyJDQiLCJ4MSQxNiIsIngwJDIyIiwiY29weV9tb2R1bGVfZXhwciIsIngxJDE3IiwieDAkMjMiLCJjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciIsIngwJDI0IiwieDAkMjUiLCJ4MSQxOCIsIngwJDI2IiwieDAkMjciLCJjb3B5X2NsYXNzX3N0cnVjdHVyZSIsIngxJDE5IiwieDAkMjgiLCJ4MCQyOSIsIngxJDIwIiwieDAkMzAiLCJjb3B5X29wZW5faW5mb3MiLCJ4MCQzMSIsImNvcHlfbGV0b3AiLCJ4MCQzMiIsImNvcHlfZXh0ZW5zaW9uIiwiY29weV9iaW5kaW5nX29wIiwicGJvcF9sb2MiLCJwYm9wX2V4cCIsInBib3BfcGF0IiwicGJvcF9vcCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9jb25zdHJhaW50IiwicHZiX2V4cHIiLCJwdmJfcGF0IiwiY29weV92YWx1ZV9jb25zdHJhaW50IiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsImNvcHlfcGF0dGVybl9kZXNjIiwiY29weV9jbG9zZWRfZmxhZyIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsImNvZXJjaW9uIiwiZ3JvdW5kIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X2xvY2F0aW9uIiwiY29weV9vYmplY3RfZmllbGQiLCJjb3B5X3Jvd19maWVsZCIsImNvcHlfcGFja2FnZV90eXBlIiwicHJmX2F0dHJpYnV0ZXMiLCJwcmZfbG9jIiwiY29weV9yb3dfZmllbGRfZGVzYyIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsImNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZSIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiY29weV9wYXlsb2FkIiwiY29weV9zaWduYXR1cmUiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MiLCJjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9leGNlcHRpb24iLCJjb3B5X21vZHVsZV9iaW5kaW5nIiwiY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X2luY2x1ZGVfaW5mb3MiLCJjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX2luZm9zIiwiY29weV9jbGFzc19leHByIiwicGNsX2F0dHJpYnV0ZXMiLCJwY2xfbG9jIiwicGNsX2Rlc2MiLCJjb3B5X2NsYXNzX2V4cHJfZGVzYyIsImNvcHlfY2xhc3NfdHlwZSIsImNvcHlfb3Blbl9kZXNjcmlwdGlvbiIsInBjc3RyX2ZpZWxkcyIsInBjc3RyX3NlbGYiLCJjb3B5X2NsYXNzX2ZpZWxkIiwicGNmX2F0dHJpYnV0ZXMiLCJwY2ZfbG9jIiwicGNmX2Rlc2MiLCJjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MiLCJjb3B5X292ZXJyaWRlX2ZsYWciLCJjb3B5X2NsYXNzX2ZpZWxkX2tpbmQiLCJjb3B5X211dGFibGVfZmxhZyIsImNvcHlfcHJpdmF0ZV9mbGFnIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwiY29weV9tb2R1bGVfZXhwcl9kZXNjIiwiY29weV9mdW5jdG9yX3BhcmFtZXRlciIsImNvcHlfbW9kdWxlX3R5cGUiLCJwbXR5X2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfZGVzYyIsImNvcHlfbW9kdWxlX3R5cGVfZGVzYyIsImNvcHlfd2l0aF9jb25zdHJhaW50IiwiY29weV9zaWduYXR1cmVfaXRlbSIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwiY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIiwiY29weV9tb2R1bGVfZGVjbGFyYXRpb24iLCJjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24iLCJjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJjb3B5X2NsYXNzX3R5cGVfZGVzYyIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwiY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MiLCJjb3B5X3ZpcnR1YWxfZmxhZyIsIngzJDAiLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsImNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwiZXh0cmFjdF9hdHRyIiwicSIsIm90aGVyX2F0dHJzIiwib3B0X2RlZmF1bHQiLCJhcmdfbGFiZWwiLCJ0YWtlX2JvZHkiLCJhcmdfbGFiZWwkMSIsIm9wdF9kZWZhdWx0JDEiLCJwYXQkMSIsInBwYXJhbV9kZXNjIiwiYWNjJDEiLCJhcmdfbGlzdCIsImMyJDAiLCJ0eXBlX2NvbnN0cmFpbnQiLCJvcHRfZGVmYXVsdCQwIiwiYXJnX2xhYmVsJDAiLCJ4MCQzMyIsIngyJDUiLCJ4MSQyMSIsIngwJDM0IiwibWVyZ2VfbG9jIiwiZ2hvc3RfbG9jIiwiZ2hvc3RfY29uc3RyYWludCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiQwIiwicHR5cF9sb2MkMCIsInR5cCQzIiwicHZiX3BhdCQzIiwiZ3JvdW5kJDAiLCJwZXhwX2xvYyQwIiwicHZiX2V4cHIkMyIsInB2Yl9leHByJDEiLCJwdmJfcGF0JDEiLCJ0eXAkMiIsInR5cCQxIiwidHlwX3BvbHkiLCJwdmJfcGF0JDIiLCJwdmJfZXhwciQyIiwidmFyJDAiLCJsb2MkMCIsImVtcHR5X3N0cnVjdCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJjb3B5X3Bvc2l0aW9uIiwicG9zX2NudW0iLCJwb3NfYm9sIiwicG9zX2xudW0iLCJwb3NfZm5hbWUiLCJyZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIiwidHlfZXh0IiwicnQkMCIsInZhbHVlX3BhdHRlcm4iLCJ2YWx1ZV9leHAiLCJpbm5lcl9lIiwiZXh0ZXJuX2N0IiwiZXh0ZXJuX2N0JDAiLCJwdF90eXZhcnMkMCIsIndpdGhfY29uc3RyYWludCIsInR5X3ZhcnMiLCJwdmJfY29uc3RyYWludCQwIiwiY29lcmNlIiwiZ3IiLCJwdmJfY29uc3RyYWludCQxIiwiaXNfdW5pdCIsImNvcHlfZXhwciIsImNvcHlfY2FzZXMiLCJjb3B5X3BhdCIsImNvcHlfdHlwIiwibWFwX29wdGlvbiIsImNvcHlfb3B0aW9uIiwiY29weV9ib29sIiwiY29weV9sb25naWRlbnQiLCJ4MF9sb2MiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwid3JhcCIsImN0eSIsImxvYyQxIiwibm9sb2MiLCJmcm9tX2xvYyIsInBvcyIsImluamVjdF9wcmVkZWZfb3B0aW9uIiwiZCIsImlkZW50IiwidHlwZV9kZWNsYXJhdGlvbnMiLCJyZWNmbGFnIiwidHlwZXMiLCJleHRyYWN0X3ByZWRlZl9vcHRpb24iLCJpc19ub25yZWMiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImkkMCIsImludDMyIiwic3VmZml4JDAiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJjaGFyJDAiLCJjIiwic3RyaW5nIiwicXVvdGF0aW9uX2RlbGltaXRlciIsInMiLCJsb2MiLCJtayIsIm5hbWUiLCJwYXlsb2FkIiwibWskMCIsImQiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwidHJ5JDAiLCJ0dXBsZSQxIiwiY29uc3RydWN0JDAiLCJ2YXJpYW50JDEiLCJyZWNvcmQkMCIsInNldGZpZWxkIiwiYXJyYXkkMCIsImlmdGhlbmVsc2UiLCJzZXF1ZW5jZSIsIndoaWxlJDAiLCJmb3IkMCIsImNvbnN0cmFpbnQkMCIsImNvZXJjZSIsInNlbmQiLCJuZXckMCIsInNldGluc3R2YXIiLCJvdmVycmlkZSIsImxldG1vZHVsZSIsImxldGV4Y2VwdGlvbiIsImFzc2VydCIsImxhenkkMCIsInBvbHkkMCIsIm9iamVjdCQwIiwibmV3dHlwZSIsInBhY2siLCJvcGVuJDAiLCJsZXRvcCIsImFuZHMiLCJib2R5IiwiZXh0ZW5zaW9uJDEiLCJ1bnJlYWNoYWJsZSIsImNhc2UkMCIsImxocyIsImd1YXJkIiwicmhzIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwibWskMyIsImF0dHIkMiIsImlkZW50JDAiLCJhbGlhcyQxIiwic2lnbmF0dXJlIiwiZnVuY3RvciIsIndpdGgkMCIsInR5cGVvZiQwIiwiZXh0ZW5zaW9uJDIiLCJtayQ0IiwiYXR0ciQzIiwiaWRlbnQkMSIsInN0cnVjdHVyZSIsImZ1bmN0b3IkMCIsImFwcGx5JDAiLCJtMSIsIm0yIiwiY29uc3RyYWludCQxIiwibSIsIm10eSIsInVucGFjayQwIiwiZXh0ZW5zaW9uJDMiLCJtayQ1IiwidmFsdWUiLCJ0eXBlJDAiLCJyZWNfZmxhZyIsInR5cGVfc3Vic3QiLCJ0eXBlX2V4dGVuc2lvbiIsImV4Y2VwdGlvbiQwIiwibW9kdWxlIiwibW9kX3N1YnN0IiwicmVjX21vZHVsZSIsIm1vZHR5cGUiLCJvcGVuJDEiLCJpbmNsdWRlIiwiY2xhc3MkMSIsImNsYXNzX3R5cGUiLCJleHRlbnNpb24kNCIsImF0dHJpYnV0ZSIsIm1rJDYiLCJldmFsJDAiLCJ2YWx1ZSQwIiwicHJpbWl0aXZlIiwidHlwZSQxIiwidHlwZV9leHRlbnNpb24kMCIsImV4Y2VwdGlvbiQxIiwibW9kdWxlJDAiLCJyZWNfbW9kdWxlJDAiLCJtb2R0eXBlJDAiLCJvcGVuJDIiLCJjbGFzcyQyIiwiY2xhc3NfdHlwZSQwIiwiaW5jbHVkZSQwIiwiZXh0ZW5zaW9uJDUiLCJhdHRyaWJ1dGUkMCIsIm1rJDciLCJhdHRyJDQiLCJjb25zdHIkMCIsInN0cnVjdHVyZSQwIiwiZnVuJDAiLCJhcHBseSQxIiwibGV0JDEiLCJjb25zdHJhaW50JDIiLCJleHRlbnNpb24kNiIsIm9wZW4kMyIsIm1rJDgiLCJhdHRyJDUiLCJjb25zdHIkMSIsInNpZ25hdHVyZSQwIiwiYXJyb3ckMCIsImV4dGVuc2lvbiQ3Iiwib3BlbiQ0IiwibWskOSIsImluaGVyaXQiLCJ2YWwiLCJtZXRob2QiLCJjb25zdHJhaW50JDMiLCJleHRlbnNpb24kOCIsImF0dHJpYnV0ZSQxIiwiYXR0ciQ2IiwibWskMTAiLCJpbmhlcml0JDAiLCJ2YWwkMCIsIm1ldGhvZCQwIiwiY29uc3RyYWludCQ0IiwiaW5pdGlhbGl6ZXIiLCJleHRlbnNpb24kOSIsImF0dHJpYnV0ZSQyIiwidmlydHVhbCIsImN0IiwiY29uY3JldGUiLCJhdHRyJDciLCJtayQxMSIsInByaW0iLCJtayQxMiIsIm1rJDEzIiwic3luIiwibWskMTQiLCJtayQxNSIsImV4cHIiLCJtayQxNiIsIm1rJDE3IiwibWV4cHIiLCJtayQxOCIsIm1rJDE5IiwidmlydCIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsImtpbmQiLCJwcml2IiwiY29uc3RydWN0b3IiLCJyZXMiLCJ2YXJzIiwiYXJncyIsImZpZWxkJDAiLCJtdXQiLCJtayQyMSIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJta19leGNlcHRpb24iLCJjb25zdHJ1Y3RvciQwIiwiZGVjbCIsInJlYmluZCIsImxpZCIsIm1rJDIyIiwic2VsZiIsImZpZWxkcyIsIm1rJDIzIiwibWskMjQiLCJ0YWciLCJjb25zdCQwIiwidHlzIiwiaW5oZXJpdCQxIiwidHkiLCJtayQyNSIsInRhZyQwIiwiaW5oZXJpdCQyIiwic3RyaW5nX3ZlcnNpb24iLCJzdHJpbmdfdmVyc2lvbiQwIiwic3RyaW5nX3ZlcnNpb24kMSIsInN0cmluZ192ZXJzaW9uJDIiLCJzdHJpbmdfdmVyc2lvbiQzIiwic3RyaW5nX3ZlcnNpb24kNCIsInN0cmluZ192ZXJzaW9uJDUiLCJzdHJpbmdfdmVyc2lvbiQ2Iiwic3RyaW5nX3ZlcnNpb24kNyIsInN0cmluZ192ZXJzaW9uJDgiLCJzdHJpbmdfdmVyc2lvbiQ5Iiwic3RyaW5nX3ZlcnNpb24kMTAiLCJzdHJpbmdfdmVyc2lvbiQxMSIsInN0cmluZ192ZXJzaW9uJDEyIiwic3RyaW5nX3ZlcnNpb24kMTMiLCJzdHJpbmdfdmVyc2lvbiQxNCIsIm1pZ3JhdGlvbl9pbmZvIiwiaWQiLCJtaWdyYXRpb25faWRlbnRpdHkiLCJjb21wb3NlIiwiZyIsIm1pZ3JhdGlvbl9mdW5jdGlvbnMiLCJpc191bmRlZmluZWQiLCJpbW1lZGlhdGVfbWlncmF0aW9uIiwiQSIsImRpcmVjdGlvbiIsInZlcnNpb24iLCJ0byIsImZ1bnMiLCJCIiwibSQxIiwiVG8iLCJhYiIsInRvMiIsImJjIiwibSQwIiwiY29weV9zdHJ1Y3R1cmVfaXRlbSIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJjb3B5X21vZHVsZV90eXBlIiwiY29weV9tb2R1bGVfZXhwciIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwiY29weV9jbGFzc190eXBlIiwiY29weV9jbGFzc19maWVsZCIsImNvcHlfY2xhc3NfZXhwciIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2FzZSIsImNvcHlfcGF0dGVybiIsImNvcHlfZXhwcmVzc2lvbiIsImNvcHlfY29yZV90eXBlIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlIiwibWlncmF0aW9uX2luZm8kMCIsInZlcnNpb24kMCIsIm1pZ3JhdGlvbl9pbmZvJDEiLCJ2ZXJzaW9uJDEiLCJtaWdyYXRpb25faW5mbyQyIiwidmVyc2lvbiQyIiwibWlncmF0aW9uX2luZm8kMyIsInZlcnNpb24kMyIsIm1pZ3JhdGlvbl9pbmZvJDQiLCJ2ZXJzaW9uJDQiLCJtaWdyYXRpb25faW5mbyQ1IiwidmVyc2lvbiQ1IiwibWlncmF0aW9uX2luZm8kNiIsInZlcnNpb24kNiIsIm1pZ3JhdGlvbl9pbmZvJDciLCJ2ZXJzaW9uJDciLCJtaWdyYXRpb25faW5mbyQ4IiwidmVyc2lvbiQ4IiwibWlncmF0aW9uX2luZm8kOSIsInZlcnNpb24kOSIsIm1pZ3JhdGlvbl9pbmZvJDEwIiwidmVyc2lvbiQxMCIsIm1pZ3JhdGlvbl9pbmZvJDExIiwidmVyc2lvbiQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwidmVyc2lvbiQxMiIsIm1pZ3JhdGlvbl9pbmZvJDEzIiwidmVyc2lvbiQxMyIsIm1pZ3JhdGlvbl9pbmZvJDE0IiwidmVyc2lvbiQxNCIsImFsbF92ZXJzaW9ucyIsImZyb21fbWFnaWMiLCJtYWdpYyIsImFsbF92ZXJzaW9uc190b3BfZG93biIsInRhaWwiLCJWZXJzaW9uIiwib2Zfb2NhbWwiLCJub2RlIiwieSIsInRvX29jYW1sIiwib2Zfb2NhbWxfbWFwcGVyIiwiaXRlbSIsImN0eHQiLCJ0b19vY2FtbF9tYXBwZXIiLCJpbXBsZW1lbnRhdGlvbiIsImxleGJ1ZiIsImludGVyZmFjZSQwIiwidG9wbGV2ZWxfcGhyYXNlIiwidXNlX2ZpbGUiLCJleHByZXNzaW9uIiwicGF0dGVybiIsImRlZmF1bHRfcHJpbnRfd2FybmluZyIsImFib3V0X2l0ZV9icmFuY2hfcmVmIiwiY2FyZV9hYm91dF9pdGVfYnJhbmNoIiwiYWJvdXRfaXRlX2JyYW5jaCIsInNlbGZfMSIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2ZuYW1lJDAiLCJwb3NfbG51bSQwIiwicG9zX2JvbCQwIiwicG9zX2NudW0kMCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJsb2Nfc3RhcnQkMCIsImxvY19lbmQkMCIsImxvY19naG9zdCQwIiwidHh0IiwidHh0JDAiLCJsb2MkMCIsImEkMCIsImEkMSIsImEkMiIsImIkMCIsImIkMSIsImEkMyIsImEkNCIsImIkMiIsImMkMCIsImIkMyIsImEkNSIsImEkNiIsImIkNCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfbG9jIiwicHR5cF9kZXNjIiwicHR5cF9kZXNjJDAiLCJwdHlwX2xvYyQwIiwicHR5cF9sb2Nfc3RhY2skMCIsInB0eXBfYXR0cmlidXRlcyQwIiwiYSQ3IiwiYSQ4IiwiYiQ1IiwiYSQ5IiwiYSQxMCIsImIkNiIsImIkNyIsImEkMTEiLCJhJDEyIiwiYiQ4IiwiYyQxIiwiYiQ5IiwiYSQxMyIsImEkMTQiLCJiJDEwIiwiYyQyIiwiYiQxMSIsImEkMTUiLCJhJDE2IiwiYiQxMiIsImEkMTciLCJhJDE4IiwiYSQxOSIsImEkMjAiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJwcmZfZGVzYyQwIiwicHJmX2xvYyQwIiwicHJmX2F0dHJpYnV0ZXMkMCIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsInBvZl9kZXNjJDAiLCJwb2ZfbG9jJDAiLCJwb2ZfYXR0cmlidXRlcyQwIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsInBwYXRfZGVzYyQwIiwicHBhdF9sb2MkMCIsInBwYXRfbG9jX3N0YWNrJDAiLCJwcGF0X2F0dHJpYnV0ZXMkMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImEkMjciLCJhJDI4IiwiYSQyOSIsImEkMzAiLCJiJDEzIiwiYSQzMSIsImEkMzIiLCJiJDE0IiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsImQkMCIsImIkMTUiLCJiJDE2IiwiYyQzIiwiYiQxNyIsImIkMTgiLCJjJDQiLCJjJDUiLCJiJDE5IiwiYiQyMCIsImMkNiIsImIkMjEiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImQkMSIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJkJDIiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImFuZHMkMCIsImJvZHkkMCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwYm9wX29wJDAiLCJwYm9wX3BhdCQwIiwicGJvcF9leHAkMCIsInBib3BfbG9jJDAiLCJwdmFsX2xvYyIsInB2YWxfYXR0cmlidXRlcyIsInB2YWxfcHJpbSIsInB2YWxfdHlwZSIsInB2YWxfbmFtZSIsInB2YWxfbmFtZSQwIiwicHZhbF90eXBlJDAiLCJwdmFsX3ByaW0kMCIsInB2YWxfYXR0cmlidXRlcyQwIiwicHZhbF9sb2MkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMiLCJwdHlleHRfbG9jIiwicHR5ZXh0X3ByaXZhdGUiLCJwdHlleHRfY29uc3RydWN0b3JzIiwicHR5ZXh0X3BhcmFtcyIsInB0eWV4dF9wYXRoIiwicHR5ZXh0X3BhdGgkMCIsInB0eWV4dF9wYXJhbXMkMCIsInB0eWV4dF9jb25zdHJ1Y3RvcnMkMCIsInB0eWV4dF9wcml2YXRlJDAiLCJwdHlleHRfbG9jJDAiLCJwdHlleHRfYXR0cmlidXRlcyQwIiwicGV4dF9hdHRyaWJ1dGVzIiwicGV4dF9sb2MiLCJwZXh0X2tpbmQiLCJwZXh0X25hbWUiLCJwZXh0X25hbWUkMCIsInBleHRfa2luZCQwIiwicGV4dF9sb2MkMCIsInBleHRfYXR0cmlidXRlcyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMiLCJwdHlleG5fbG9jIiwicHR5ZXhuX2NvbnN0cnVjdG9yIiwicHR5ZXhuX2NvbnN0cnVjdG9yJDAiLCJwdHlleG5fbG9jJDAiLCJwdHlleG5fYXR0cmlidXRlcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJwY3NpZ19zZWxmJDAiLCJwY3NpZ19maWVsZHMkMCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwicGN0Zl9kZXNjJDAiLCJwY3RmX2xvYyQwIiwicGN0Zl9hdHRyaWJ1dGVzJDAiLCJwY2lfYXR0cmlidXRlcyIsInBjaV9sb2MiLCJwY2lfZXhwciIsInBjaV9uYW1lIiwicGNpX3BhcmFtcyIsInBjaV92aXJ0IiwicGNpX3ZpcnQkMCIsInBjaV9wYXJhbXMkMCIsInBjaV9uYW1lJDAiLCJwY2lfZXhwciQwIiwicGNpX2xvYyQwIiwicGNpX2F0dHJpYnV0ZXMkMCIsInBjbF9hdHRyaWJ1dGVzIiwicGNsX2xvYyIsInBjbF9kZXNjIiwicGNsX2Rlc2MkMCIsInBjbF9sb2MkMCIsInBjbF9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsInBjZl9kZXNjJDAiLCJwY2ZfbG9jJDAiLCJwY2ZfYXR0cmlidXRlcyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG1kX2xvYyIsInBtZF9hdHRyaWJ1dGVzIiwicG1kX3R5cGUiLCJwbWRfbmFtZSIsInBtZF9uYW1lJDAiLCJwbWRfdHlwZSQwIiwicG1kX2F0dHJpYnV0ZXMkMCIsInBtZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMiLCJwb3Blbl9sb2MiLCJwb3Blbl9vdmVycmlkZSIsInBvcGVuX2V4cHIiLCJwb3Blbl9leHByJDAiLCJwb3Blbl9vdmVycmlkZSQwIiwicG9wZW5fbG9jJDAiLCJwb3Blbl9hdHRyaWJ1dGVzJDAiLCJwaW5jbF9hdHRyaWJ1dGVzIiwicGluY2xfbG9jIiwicGluY2xfbW9kIiwicGluY2xfbW9kJDAiLCJwaW5jbF9sb2MkMCIsInBpbmNsX2F0dHJpYnV0ZXMkMCIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwicG1vZF9kZXNjJDAiLCJwbW9kX2xvYyQwIiwicG1vZF9hdHRyaWJ1dGVzJDAiLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsInBzdHJfZGVzYyQwIiwicHN0cl9sb2MkMCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtYl9uYW1lJDAiLCJwbWJfZXhwciQwIiwicG1iX2F0dHJpYnV0ZXMkMCIsInBtYl9sb2MkMCIsInBkaXJfbG9jIiwicGRpcl9hcmciLCJwZGlyX25hbWUiLCJwZGlyX25hbWUkMCIsInBkaXJfYXJnJDAiLCJwZGlyX2xvYyQwIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwic2VsZl8yIiwic2VsZl8zIiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImFjYyQ1IiwiYWNjJDYiLCJhY2MkNyIsImFjYyQ4IiwiYWNjJDkiLCJhY2MkMTAiLCJhY2MkMTEiLCJhY2MkMTIiLCJhY2MkMTMiLCJhY2MkMTQiLCJhY2MkMTUiLCJhY2MkMTYiLCJhY2MkMTciLCJhY2MkMTgiLCJhY2MkMTkiLCJhY2MkMjAiLCJhY2MkMjEiLCJhY2MkMjIiLCJhY2MkMjMiLCJhY2MkMjQiLCJhY2MkMjUiLCJhY2MkMjYiLCJhY2MkMjciLCJhY2MkMjgiLCJhY2MkMjkiLCJhY2MkMzAiLCJhY2MkMzEiLCJhY2MkMzIiLCJhY2MkMzMiLCJhY2MkMzQiLCJhY2MkMzUiLCJhY2MkMzYiLCJhY2MkMzciLCJhY2MkMzgiLCJhY2MkMzkiLCJhY2MkNDAiLCJhY2MkNDEiLCJhY2MkNDIiLCJhY2MkNDMiLCJhY2MkNDQiLCJhY2MkNDUiLCJhY2MkNDYiLCJhY2MkNDciLCJhY2MkNDgiLCJhY2MkNDkiLCJhY2MkNTAiLCJhY2MkNTEiLCJhY2MkNTIiLCJhY2MkNTMiLCJhY2MkNTQiLCJhY2MkNTUiLCJzZWxmXzQiLCJhY2MkNTYiLCJhY2MkNTciLCJhY2MkNTgiLCJhY2MkNTkiLCJhY2MkNjAiLCJhY2MkNjEiLCJhY2MkNjIiLCJhY2MkNjMiLCJhY2MkNjQiLCJhY2MkNjUiLCJhY2MkNjYiLCJhY2MkNjciLCJhY2MkNjgiLCJzZWxmXzUiLCJjdHgiLCJzZWxmXzYiLCJzZWxmXzciLCJ0b19leHRlbnNpb24iLCJlcnJvciIsInN1Yl9tc2dzIiwibWFpbl9tc2ciLCJta19zdHJpbmdfY29uc3RhbnQiLCJleHRlbnNpb25fb2Zfc3ViX21zZyIsInN1Yl9tc2ciLCJyZWdpc3Rlcl9lcnJvcl9vZl9leG4iLCJtZXNzYWdlIiwic2V0X21lc3NhZ2UiLCJtYWtlIiwic3ViIiwic3ViJDAiLCJ1cGRhdGVfbG9jIiwiZ2V0X2xvY2F0aW9uIiwib2ZfZXhuIiwicmFpc2UiLCJwcmludCIsImRpZmZfY29tbWFuZCIsImZpbGUxIiwiZmlsZTIiLCJleHRyYV9wYXRkaWZmX2FyZ3MiLCJ1c2VfY29sb3IiLCJleGVjIiwiY21kIiwiY21kJDAiLCJuIiwicyIsImFyZ3MiLCJlcnJfY29kZSIsImFsbCIsInJlZ2lzdGVyIiwibmFtZSIsImRlcml2ZXIiLCJsb29rdXAiLCJkcnYiLCJkZXJpdmVycyIsImFjYyIsIngiLCJzZWxmXzEiLCJmIiwieCQwIiwic2VsZl8yIiwiYWNjIiwic2VsZl8zIiwibG9vcCIsImwiLCJsJDAiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwiYSIsInIiLCJpIiwic2VsZl80IiwieCQxIiwibGVuIiwiYSQwIiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwicmVzIiwicmVzX2hlYWQiLCJyZXNfdGFpbCIsImZsYWdzJDAiLCJmbGFncyIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJtaW4iLCJtYXgiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsIm1pbiQwIiwibWF4JDAiLCJ0b19zdHJpbmciLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwibWluJDEiLCJtYXgkMSIsInN1Yl9zdHJpbmciLCJ0IiwicG9zIiwibGVuIiwiYmxpdF9zdHJpbmciLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNvbXBhcmUkMyIsImVxdWFsJDMiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJtaW4kMiIsIm1heCQyIiwicHJvdGVjdHgiLCJ4IiwiZiIsImZpbmFsbHkkMCIsInkiLCJleG4kMCIsImV4biIsInRvX3N0cmluZyQxIiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsInN5bWJvbCQyMyIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsIm1pbiQzIiwibWF4JDMiLCJpZCIsInNldCIsImtleSIsImRhdGEiLCJhZGQiLCJhZGRfZXhuIiwiZmluZF9vcHQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsImRhdGEkMCIsImFkZF9hbGlzdCIsImFsaXN0IiwiYWxpc3QkMCIsImFsaXN0JDEiLCJvZl9hbGlzdCIsInNpemUiLCJzaXplJDAiLCJzaXplJDEiLCJlcnJvciIsIm9mX2FsaXN0X2V4biIsImNyZWF0ZSQwIiwiZmlsZSIsImJpbmFyeSIsIndpdGhfZmlsZSIsImZpbGVuYW1lIiwiaW5wdXRfYWxsIiwiYnVmIiwiY2hhciQwIiwicmVhZF9hbGwiLCJtYXhfaW50IiwidG9fc3RyaW5nJDIiLCJjb21wYXJlJDUiLCJlcXVhbCQ1Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwic3ltYm9sJDMxIiwic3ltYm9sJDMyIiwic3ltYm9sJDMzIiwic3ltYm9sJDM0IiwibWluJDQiLCJtYXgkNCIsInJldl9tYXBpIiwibGlzdCIsImxpc3QkMCIsImkiLCJhY2MiLCJ0YWlsIiwiaGVhZCIsImFjYyQwIiwiaSQwIiwiZm9sZF9yaWdodDIiLCJsaXN0MSIsImxpc3QyIiwiaW5pdCIsIm1hcCQwIiwibWFwaSQwIiwiZm9sZF9yaWdodCQwIiwiYXBwZW5kIiwiY29uY2F0JDAiLCJyZXZfY29tYmluZSIsImNvbWJpbmUiLCJzcGxpdCIsInlzIiwieHMiLCJtYXAyIiwicGFydGl0aW9uX21hcCIsInAiLCJsIiwibGVmdCIsInJpZ2h0IiwibCQwIiwidiIsInYkMCIsImluaXQkMCIsInBvcyQwIiwiaXNfZW1wdHkiLCJyZXZfZmlsdGVyX29wdCIsIm9wdGlvbiIsImZpbHRlcl9vcHQiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwic29tZSIsImZpbmRfbWFwX2V4biIsImxhc3QiLCJyZXN0Iiwic3BsaXRfd2hpbGUiLCJmaW5kX2FfZHVwIiwic2V0JDEiLCJzZXQkMCIsImFzc29jX29wdCIsIml0ZXIkMiIsImlzX3NvbWUiLCJpdGVyJDMiLCJtYXAkMSIsInZhbHVlIiwidG9fbGlzdCIsImJpbmQiLCJhIiwiZSIsIm1hcCQyIiwibWFwX2Vycm9yIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiaGFuZGxlX2Vycm9yIiwic3ltYm9sJDM1IiwicTIiLCJ0MiIsInExIiwidDEiLCJoZCQwIiwidG9fbGlzdCQwIiwicSIsIm1hcCQzIiwiY3JlYXRlJDEiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsIndpdGhfZmlsZSQwIiwid3JpdGVfYWxsIiwiaXNfZW1wdHkkMCIsInByZWZpeCIsInN1ZmZpeCIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJpc19wcmVmaXgiLCJpc19zdWZmaXgiLCJzdWZmaXhfb2Zmc2V0IiwicG9zJDEiLCJleGlzdHMkMSIsImZvcl9hbGwkMSIsImluZGV4X29wdCQwIiwicmluZGV4X29wdCQwIiwiaW5kZXhfZnJvbV9vcHQkMCIsInJpbmRleF9mcm9tX29wdCQwIiwibHNwbGl0MiIsIm9uIiwiY2FwaXRhbGl6ZV9hc2NpaSQwIiwibG93ZXJjYXNlX2FzY2lpJDEiLCJ1bmNhcGl0YWxpemVfYXNjaWkkMCIsInNwbGl0X29uX2NoYXIkMCIsInNlcCIsImNvbXBhcmUkNyIsImVxdWFsJDciLCJzeW1ib2wkMzYiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJtaW4kNSIsIm1heCQ1IiwiZmluZF9vcHQkMSIsInN5bWJvbCQ0MiIsIm91dHB1dCIsIm9jIiwiYnl0ZXMiLCJvdXRwdXRfc3Vic3RyaW5nIiwic3RyaW5nIiwiaW5fZmlsZSIsIm5hbWUiLCJsb2MiLCJzZXRfZmlsZW5hbWUiLCJmbiIsImxvY19zdGFydCIsImxvY19lbmQiLCJub25lIiwiaW5pdCIsImxleGJ1ZiIsImZuYW1lIiwicmFpc2VfZXJyb3JmIiwiZm10IiwicmVwb3J0X2V4Y2VwdGlvbiIsIm9mX2xleGJ1ZiIsInByaW50IiwicHBmIiwidCIsImNvbXBhcmVfcG9zIiwicDEiLCJwMiIsImNvbHVtbiIsInAiLCJuIiwibWluX3BvcyIsIm1heF9wb3MiLCJjb21wYXJlIiwibG9jMSIsImxvYzIiLCJjcmVhdGVmIiwic3RyIiwiZXJyb3JfZXh0ZW5zaW9uZiIsImUiLCJmYWlsIiwiZXhwZWN0ZWQiLCJhdHRyaWJ1dGUiLCJwYXlsb2FkIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJwY2xfY29uc3RyIiwieDAiLCJ4MSIsInBjbF9zdHJ1Y3R1cmUiLCJwY2xfZnVuIiwieDIiLCJ4MyIsInBjbF9hcHBseSIsInBjbF9sZXQiLCJwY2xfY29uc3RyYWludCIsInBjbF9leHRlbnNpb24iLCJwY2xfb3BlbiIsInBjZl9pbmhlcml0IiwicGNmX3ZhbCIsInBjZl9tZXRob2QiLCJwY2ZfY29uc3RyYWludCIsInBjZl9pbml0aWFsaXplciIsInBjZl9hdHRyaWJ1dGUiLCJwY2ZfZXh0ZW5zaW9uIiwiY2xhc3NfaW5mb3MiLCJ2aXJ0IiwicGFyYW1zIiwiZXhwciIsImNsYXNzX3NpZ25hdHVyZSIsInNlbGYiLCJmaWVsZHMiLCJjbGFzc19zdHJ1Y3R1cmUiLCJwY3R5X2NvbnN0ciIsInBjdHlfc2lnbmF0dXJlIiwicGN0eV9hcnJvdyIsInBjdHlfZXh0ZW5zaW9uIiwicGN0eV9vcGVuIiwicGN0Zl9pbmhlcml0IiwicGN0Zl92YWwiLCJwY3RmX21ldGhvZCIsInBjdGZfY29uc3RyYWludCIsInBjdGZfYXR0cmlidXRlIiwicGN0Zl9leHRlbnNpb24iLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInZhcnMiLCJhcmdzIiwicmVzIiwicHR5cF9hbnkiLCJwdHlwX3ZhciIsInB0eXBfYXJyb3ciLCJwdHlwX3R1cGxlIiwicHR5cF9jb25zdHIiLCJwdHlwX29iamVjdCIsInB0eXBfY2xhc3MiLCJwdHlwX2FsaWFzIiwicHR5cF92YXJpYW50IiwicHR5cF9wb2x5IiwicHR5cF9wYWNrYWdlIiwicHR5cF9leHRlbnNpb24iLCJwZGlyX3N0cmluZyIsInBkaXJfaW50IiwicGRpcl9pZGVudCIsInBkaXJfYm9vbCIsInBleHBfaWRlbnQiLCJwZXhwX2NvbnN0YW50IiwicGV4cF9sZXQiLCJwZXhwX2Z1bmN0aW9uIiwicGV4cF9mdW4iLCJwZXhwX2FwcGx5IiwicGV4cF9tYXRjaCIsInBleHBfdHJ5IiwicGV4cF90dXBsZSIsInBleHBfY29uc3RydWN0IiwicGV4cF92YXJpYW50IiwicGV4cF9yZWNvcmQiLCJwZXhwX2ZpZWxkIiwicGV4cF9zZXRmaWVsZCIsInBleHBfYXJyYXkiLCJwZXhwX2lmdGhlbmVsc2UiLCJwZXhwX3NlcXVlbmNlIiwicGV4cF93aGlsZSIsInBleHBfZm9yIiwieDQiLCJwZXhwX2NvbnN0cmFpbnQiLCJwZXhwX2NvZXJjZSIsInBleHBfc2VuZCIsInBleHBfbmV3IiwicGV4cF9zZXRpbnN0dmFyIiwicGV4cF9vdmVycmlkZSIsInBleHBfbGV0bW9kdWxlIiwicGV4cF9sZXRleGNlcHRpb24iLCJwZXhwX2Fzc2VydCIsInBleHBfbGF6eSIsInBleHBfcG9seSIsInBleHBfb2JqZWN0IiwicGV4cF9uZXd0eXBlIiwicGV4cF9wYWNrIiwicGV4cF9vcGVuIiwicGV4cF9sZXRvcCIsInBleHBfZXh0ZW5zaW9uIiwicGV4cF91bnJlYWNoYWJsZSIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImtpbmQiLCJpbmNsdWRlX2luZm9zIiwibW9kIiwibGFiZWxfZGVjbGFyYXRpb24iLCJtdXRhYmxlIiwidHlwZSIsImxldG9wIiwibGV0JDAiLCJhbmRzIiwiYm9keSIsImxvY2F0aW9uIiwic3RhcnQiLCJlbmQiLCJnaG9zdCIsIm1vZHVsZV9iaW5kaW5nIiwibW9kdWxlX2RlY2xhcmF0aW9uIiwicG1vZF9pZGVudCIsInBtb2Rfc3RydWN0dXJlIiwicG1vZF9mdW5jdG9yIiwicG1vZF9hcHBseSIsInBtb2RfY29uc3RyYWludCIsInBtb2RfdW5wYWNrIiwicG1vZF9leHRlbnNpb24iLCJtb2R1bGVfc3Vic3RpdHV0aW9uIiwibWFuaWZlc3QiLCJwbXR5X2lkZW50IiwicG10eV9zaWduYXR1cmUiLCJwbXR5X2Z1bmN0b3IiLCJwbXR5X3dpdGgiLCJwbXR5X3R5cGVvZiIsInBtdHlfZXh0ZW5zaW9uIiwicG10eV9hbGlhcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwib3RhZyIsIm9pbmhlcml0Iiwib3Blbl9pbmZvcyIsIm92ZXJyaWRlIiwicHBhdF9hbnkiLCJwcGF0X3ZhciIsInBwYXRfYWxpYXMiLCJwcGF0X2NvbnN0YW50IiwicHBhdF9pbnRlcnZhbCIsInBwYXRfdHVwbGUiLCJwcGF0X2NvbnN0cnVjdCIsInBwYXRfdmFyaWFudCIsInBwYXRfcmVjb3JkIiwicHBhdF9hcnJheSIsInBwYXRfb3IiLCJwcGF0X2NvbnN0cmFpbnQiLCJwcGF0X3R5cGUiLCJwcGF0X2xhenkiLCJwcGF0X3VucGFjayIsInBwYXRfZXhjZXB0aW9uIiwicHBhdF9leHRlbnNpb24iLCJwcGF0X29wZW4iLCJwb3NpdGlvbiIsImxudW0iLCJib2wiLCJjbnVtIiwicnRhZyIsInJpbmhlcml0IiwicHNpZ192YWx1ZSIsInBzaWdfdHlwZSIsInBzaWdfdHlwZXN1YnN0IiwicHNpZ190eXBleHQiLCJwc2lnX2V4Y2VwdGlvbiIsInBzaWdfbW9kdWxlIiwicHNpZ19tb2RzdWJzdCIsInBzaWdfcmVjbW9kdWxlIiwicHNpZ19tb2R0eXBlIiwicHNpZ19tb2R0eXBlc3Vic3QiLCJwc2lnX29wZW4iLCJwc2lnX2luY2x1ZGUiLCJwc2lnX2NsYXNzIiwicHNpZ19jbGFzc190eXBlIiwicHNpZ19hdHRyaWJ1dGUiLCJwc2lnX2V4dGVuc2lvbiIsInBzdHJfZXZhbCIsInBzdHJfdmFsdWUiLCJwc3RyX3ByaW1pdGl2ZSIsInBzdHJfdHlwZSIsInBzdHJfdHlwZXh0IiwicHN0cl9leGNlcHRpb24iLCJwc3RyX21vZHVsZSIsInBzdHJfcmVjbW9kdWxlIiwicHN0cl9tb2R0eXBlIiwicHN0cl9vcGVuIiwicHN0cl9jbGFzcyIsInBzdHJfY2xhc3NfdHlwZSIsInBzdHJfaW5jbHVkZSIsInBzdHJfYXR0cmlidXRlIiwicHN0cl9leHRlbnNpb24iLCJ0b3BsZXZlbF9kaXJlY3RpdmUiLCJhcmciLCJ0eXBlX2RlY2xhcmF0aW9uIiwiY3N0cnMiLCJwcml2YXRlJDAiLCJ0eXBlX2V4Y2VwdGlvbiIsImNvbnN0cnVjdG9yIiwidHlwZV9leHRlbnNpb24iLCJwYXRoIiwiY29uc3RydWN0b3JzIiwidmFsdWVfYmluZGluZyIsInZhbHVlX2Rlc2NyaXB0aW9uIiwicHJpbSIsInR4dCIsIm1ha2UiLCJtYXAiLCJmIiwiaXNfbm9ybWFsX2lkZW50X2NoYXIiLCJzaG9ydF9uYW1lIiwic3RyaW5nIiwicyIsImIiLCJhIiwiYiQwIiwiYSQwIiwic2V4cF9vZl90IiwiZmxhdHRlbl9leG4iLCJsaWQkMCIsImFjY3UiLCJzJDAiLCJsaWQiLCJsYXN0X2V4biIsInVuZmxhdHRlbiIsImwiLCJhY2MiLCJwYXJzZSIsImludmFsaWQiLCJvcGVuX3BhciIsImNsb3NlX3BhciIsInIiLCJsJDAiLCJncm91cCIsImJlZm9yZSIsImwkMSIsInMkMSIsIngiLCJtayIsIm1hcF9saWRlbnQiLCJsaWRlbnQiLCJ4JDAiLCJwcGF0X2NvbnN0cnVjdCQwIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24kMCIsInBzdHJfdmFsdWVfbGlzdCIsInJlY19mbGFnIiwidmJzIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24iLCJlaW50IiwiZWNoYXIiLCJlc3RyaW5nIiwiZWZsb2F0IiwiZWludDMyIiwiZWludDY0IiwiZW5hdGl2ZWludCIsInBpbnQiLCJwY2hhciIsInBzdHJpbmciLCJwZmxvYXQiLCJwaW50MzIiLCJwaW50NjQiLCJwbmF0aXZlaW50IiwiZWJvb2wiLCJwYm9vbCIsImV2YXIiLCJ2IiwicHZhciIsImV1bml0IiwicHVuaXQiLCJwZXhwX3R1cGxlJDAiLCJwcGF0X3R1cGxlJDAiLCJwdHlwX3R1cGxlJDAiLCJwZXhwX3R1cGxlX29wdCIsInBwYXRfdHVwbGVfb3B0IiwicHR5cF9wb2x5JDAiLCJ0eSIsInBleHBfYXBwbHkkMCIsImVsIiwiZSQwIiwiZWFwcGx5IiwiZWFic3RyYWN0IiwicHMiLCJlc2VxdWVuY2UiLCJ0bCIsImhkIiwicGNvbnN0cnVjdCIsImNkIiwiZWNvbnN0cnVjdCIsImVsaXN0IiwicGxpc3QiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXQiLCJpZGVudCIsIm4kMCIsInR5cGVfY29uc3RyX2NvbnYiLCJhcHBseV9sb2MiLCJsb25naWRlbnQiLCJsb2MkMCIsIm1vZHVsZV9wYXRoIiwic3VmZml4X24iLCJmdW5jdG9yIiwiZnVuY3Rvcl9hcmdzIiwicmVzdCIsImZ1bmN0b3IkMCIsImZ1bmN0b3JfcGF0aCIsImlkZW50JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiIsImdhdGhlcl9hcmdzIiwiYXJncyQwIiwiYm9keSQwIiwiZXRhX3JlZHVjZSIsImV4cHIkMCIsInN1YnBhdCIsImxhYmVsIiwiYWNjJDAiLCJuYW1lJDAiLCJhY2MkMSIsImZfaWRlbnQiLCJwYXJhbV9sYWJlbCIsImFyZ19sYWJlbCIsInBhcmFtJDAiLCJ0eSQwIiwidHlfb3B0IiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSIsImV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbiIsIm5vbnJlY190eXBlX2RlY2xhcmF0aW9uJDAiLCJwZXhwX3R1cGxlX29wdCQwIiwicHBhdF90dXBsZV9vcHQkMCIsImVpbnQkMCIsImVjaGFyJDAiLCJlc3RyaW5nJDAiLCJlZmxvYXQkMCIsImVpbnQzMiQwIiwiZWludDY0JDAiLCJlbmF0aXZlaW50JDAiLCJlYm9vbCQwIiwiZXZhciQwIiwicGludCQwIiwicGNoYXIkMCIsInBzdHJpbmckMCIsInBmbG9hdCQwIiwicGludDMyJDAiLCJwaW50NjQkMCIsInBuYXRpdmVpbnQkMCIsInBib29sJDAiLCJwdmFyJDAiLCJldW5pdCQwIiwicHVuaXQkMCIsImVhcHBseSQwIiwiZWFic3RyYWN0JDAiLCJlc2VxdWVuY2UkMCIsImVsaXN0JDAiLCJwbGlzdCQwIiwidHlwZV9jb25zdHJfY29udiQwIiwidW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYkMCIsImdldCIsInNraXAiLCJza2lwJDAiLCJzdGFjayIsImxlbiIsInBvcyIsInBvcyQwIiwibGV2ZW5zaHRlaW5fZGlzdGFuY2UiLCJjdXRvZmYiLCJtIiwiZCIsImkkMCIsImokMCIsImxpbmVfbWluIiwiaiIsImkiLCJ2YWx1ZSIsImRpc3RhbmNlIiwic3BlbGxjaGVjayIsIm5hbWVzIiwic3VnZ2VzdGlvbnMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJyZXZfcmVzdCIsImxhc3QiLCJmb2xkX2RvdF9zdWZmaXhlcyIsImNvbGxhcHNlX2FmdGVyX2F0IiwicGFydHMiLCJwYXJ0IiwicGFydHMkMSIsInBhcnRzJDAiLCJkb3Rfc3VmZml4ZXMiLCJzcGxpdF9wYXRoIiwiaSQyIiwiaSQ0IiwiaSQzIiwiaSQxIiwibWF0Y2hlcyIsIm1hdGNoZWQiLCJzcGxpdF9vdXRlcl9uYW1lc3BhY2UiLCJiZWZvcmVfZG90IiwiYWZ0ZXJfZG90IiwiY3JlYXRlX3NldCIsImZ1bGx5X3F1YWxpZmllZF9uYW1lcyIsImF0dHJpYnV0ZXMiLCJleHRlbnNpb25zIiwiaXNfYWxsb3dsaXN0ZWQiLCJnZXRfYXR0cmlidXRlX2xpc3QiLCJnZXRfZXh0ZW5zaW9uX2xpc3QiLCJjcmVhdGVfcmVzZXJ2ZWQiLCJ0YmwiLCJyZXNlcnZlIiwibnMkMCIsIm5zIiwidGJsJDAiLCJyZXN0X25zIiwib3V0ZXJfbnMiLCJyZXN0X3RibCIsImlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMiLCJpZ25vcmVfY2hlY2tzIiwiY3JlYXRlIiwiY3VycmVudF9maWxlIiwic3RyaW5nX29mX2NvbnRleHQiLCJnZXRfYWxsX2Zvcl9jb250ZXh0IiwiY29udGV4dCIsImNoZWNrX2NvbGxpc2lvbnNfbG9jYWwiLCJjYWxsZXIiLCJhbGxfZm9yX2NvbnRleHQiLCJkZWNsYXJlZF9hdCIsImNvbnRleHQkMCIsImNoZWNrX2NvbGxpc2lvbnMiLCJyZWdpc3RlciIsImtpbmQkMSIsImxpc3QiLCJraW5kJDAiLCJhbGwiLCJ0JDAiLCJhbGxvd2xpc3QiLCJrZXkiLCJvdGhlcl9jb250ZXh0cyIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJwcF90ZXh0IiwiY3VycmVudF9jb250ZXh0IiwiYV9vcl9hbiIsInkiLCJjIiwicmV2X290aGVycyIsIm90aGVycyIsIm1zZyIsInJhaXNlX2Vycm9yZiQwIiwiY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24iLCJ0ZCIsImNob3AiLCJvcl9tb3JlIiwidGFyZ2V0IiwiY250IiwiZ2VuX3N5bWJvbCIsInByZWZpeCIsInByZWZpeCQwIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMiLCJuYW1lX3BhcmFtIiwidmFyaWFuY2UiLCJ0cCIsInB0eXBfZGVzYyIsIm8iLCJlcnJvcnMiLCJwdHlwZV9wYXJhbXMiLCJxIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZCIsImVyciIsImNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhciIsInRkJDAiLCJyZXN1bHRfdHlwZSIsInN0cmluZ19vZl9jb3JlX3R5cGUiLCJjdCIsImJ1ZiIsImdldF90eXBlX3BhcmFtX25hbWVfcmVzIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZSIsInNlbGZfMSIsImN0eXBlIiwiaWQiLCJ0ZHMiLCJyZWFsbHlfcmVjdXJzaXZlIiwieCQxIiwibG9jX29mX25hbWVfYW5kX3BheWxvYWQiLCJsb2Nfb2ZfcGF5bG9hZCIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImxvY19vZl9hdHRyaWJ1dGUiLCJsb2Nfb2ZfZXh0ZW5zaW9uIiwiY3VycnlfYXBwbGljYXRpb25zIiwib3JpZ19mb3J3YXJkX2FyZ3MiLCJsb29wIiwicmV2X2Zyb250X2FyZ3MiLCJsYXN0X2FyZyIsImF0dHIiLCJhdHRyaWJ1dGVzX2Vycm9ycyIsInNlbGZfMiIsImNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMiLCJhc3NlcnRfbm9fYXR0cmlidXRlcyIsInNlbGZfMyIsImFzc2VydF9ub19hdHRyaWJ1dGVzX2luIiwiYXR0cmlidXRlX29mX3dhcm5pbmciLCJpc19wb2x5bW9ycGhpY192YXJpYW50Iiwic2lnIiwidHlwJDAiLCJ0eXAiLCJta19uYW1lZF9zaWciLCJzZ19uYW1lIiwiaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJhcml0eSIsIm10eSIsImZvcl9zdWJzdCIsImV4bl90b19sb2NfZXJyb3IiLCJleG4iLCJlcnJvciIsInJldHVybiQwIiwic3ltYm9sX2JpbmQiLCJlcnJvcnMxIiwiZXJyb3JzMiIsInN5bWJvbF9tYXAiLCJvZl9yZXN1bHQiLCJyZXN1bHQiLCJkZWZhdWx0JDAiLCJjb21iaW5lX2Vycm9ycyIsIm5vbGFiZWwiLCJrIiwibGFiZWxsZWQiLCJmMCIsImskMCIsIm9wdGlvbmFsIiwiayQxIiwiayQyIiwicGNsX2xvYyIsImYyIiwiZjEiLCJwY2xfYXR0cmlidXRlcyIsImYzIiwiayQzIiwicGNmX2xvYyIsInBjZl9hdHRyaWJ1dGVzIiwiY2ZrX3ZpcnR1YWwiLCJjZmtfY29uY3JldGUiLCJjbGFzc19pbmZvc19hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfYXR0cmlidXRlcyIsImNsb3NlZCIsIm9wZW4iLCJwY29uc3RfaW50ZWdlciIsInBjb25zdF9jaGFyIiwicGNvbnN0X3N0cmluZyIsInBjb25zdF9mbG9hdCIsInBjc3RyX3R1cGxlIiwicGNzdHJfcmVjb3JkIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmliIiwicHR5cF9sb2MiLCJwdHlwX2F0dHJpYnV0ZXMiLCJ1cHRvIiwiZG93bnRvIiwicGRpcmFfbG9jIiwicGV4cF9sb2MiLCJwZXhwX2F0dHJpYnV0ZXMiLCJmNCIsImskNCIsImV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dCIsInBleHRfZGVjbCIsInBleHRfcmViaW5kIiwidW5pdCIsIm5hbWVkIiwiaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIiwiaW5qZWN0aXZlIiwibm9pbmplY3Rpdml0eSIsImxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJsZG90IiwibGFwcGx5IiwibW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyIsIm1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2F0dHJpYnV0ZXMiLCJtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfYXR0cmlidXRlcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYiIsImltbXV0YWJsZSIsInBvZl9sb2MiLCJwb2ZfYXR0cmlidXRlcyIsIm9wZW5faW5mb3NfYXR0cmlidXRlcyIsImZyZXNoIiwicHBhdF9sb2MiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwc3RyIiwicHNpZyIsInB0eXAiLCJwcGF0IiwicHVibGljJDAiLCJub25yZWN1cnNpdmUiLCJyZWN1cnNpdmUiLCJwcmZfbG9jIiwicHJmX2F0dHJpYnV0ZXMiLCJwc2lnX2xvYyIsInBzdHJfbG9jIiwicHRvcF9kZWYiLCJwdG9wX2RpciIsInR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImskNSIsInR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMiLCJ0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIiwicHR5cGVfYWJzdHJhY3QiLCJwdHlwZV92YXJpYW50IiwicHR5cGVfcmVjb3JkIiwicHR5cGVfb3BlbiIsInZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyIsInZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMiLCJjb3ZhcmlhbnQiLCJjb250cmF2YXJpYW50Iiwibm92YXJpYW5jZSIsInZpcnR1YWwiLCJjb25jcmV0ZSIsInB3aXRoX3R5cGUiLCJwd2l0aF9tb2R1bGUiLCJwd2l0aF9tb2R0eXBlIiwicHdpdGhfbW9kdHlwZXN1YnN0IiwicHdpdGhfdHlwZXN1YnN0IiwicHdpdGhfbW9kc3Vic3QiLCJyZXN0b3JlX2NvbnRleHQiLCJiYWNrdXAiLCJpbmNyX21hdGNoZWQiLCJwYXJzZV9yZXMiLCJvbl9lcnJvciIsImYkMCIsInIkMCIsInBhcnNlX3JlcyQwIiwicGFyc2UkMCIsInN5bWJvbCIsInN5bWJvbCQwIiwiZHJvcCIsImFzIiwiY3N0IiwidG9fc3RyaW5nIiwiZXF1YWwiLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiYm9vbCIsImJvb2wkMCIsImZ1bmMiLCJmYWxzZSQwIiwidHJ1ZSQwIiwibmlsIiwic3ltYm9sJDEiLCJzb21lIiwicGFpciIsInRyaXBsZSIsImFsdCIsImUxJDAiLCJlMSIsIm0xIiwiZTIkMCIsImUyIiwibTIiLCJtYXAkMCIsIm1hcF9yZXN1bHQiLCJtYXAwIiwibWFwMSIsIm1hcDIiLCJtYXAwJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJtYXBfdmFsdWUiLCJtYXBfdmFsdWUkMCIsImFsdF9vcHRpb24iLCJtYW55IiwiYXV4IiwieHMiLCJwYWNrMCIsInBhY2syIiwicGFjazMiLCJ6IiwiY29uc3RfaW50IiwiY29uc3RfaW50MzIiLCJjb25zdF9pbnQ2NCIsImNvbnN0X25hdGl2ZWludCIsInNpbmdsZV9leHByX3BheWxvYWQiLCJub19sYWJlbCIsImV4dGVuc2lvbiIsIm5leHQiLCJleHByJDEiLCJvZl9mdW5jIiwidG9fZnVuYyIsInBvbHlfZXF1YWwiLCJnZXRfcHN0cl9ldmFsIiwic3QiLCJnZXRfcHN0cl9leHRlbnNpb24iLCJnZXRfcHNpZ19leHRlbnNpb24iLCJnZXRfYXR0cmlidXRlcyIsInNldF9hdHRyaWJ1dGVzIiwiYXR0cnMiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJwYXR0ZXJuIiwiZGVjbGFyZSIsImRlY2xhcmVfd2l0aF9uYW1lX2xvYyIsIm5hbWVfbG9jIiwiZGVjbGFyZV93aXRoX2F0dHJfbG9jIiwiYXR0cl9sb2MiLCJkZWNsYXJlX2ZsYWciLCJwYXlsb2FkX3BhdHRlcm4iLCJjb250aW51YXRpb24iLCJub3JtYWxpemUiLCJoYXNoIiwibm90X3NlZW4iLCJtYXJrX2FzX3NlZW4iLCJleHBsaWNpdGx5X2Ryb3AiLCJnZXRfaW50ZXJuYWwiLCJhdHRyaWJ1dGVzJDEiLCJsb25nZXN0X21hdGNoIiwiYXR0cmlidXRlcyQwIiwibGVuJDAiLCJsb25nZXN0X21hdGNoJDAiLCJsb25nZXN0X21hdGNoJDEiLCJjb252ZXJ0IiwiZG9fbWFya19hc19zZWVuIiwicGF0dGVybiQwIiwiZ2V0X3JlcyIsImhhc19mbGFnX3JlcyIsImhhc19mbGFnIiwiY29uc3VtZV9yZXMiLCJhdHRycyQwIiwiYXR0ciQwIiwiY29uc3VtZSIsInJlbW92ZV9zZWVuX3JlcyIsInBhY2tlZHMiLCJyZW1vdmVfc2VlbiIsInBhdHRlcm5fcmVzIiwiZGVjbGFyZSQwIiwiY29udmVydF9yZXMiLCJ0cyIsImNvbnZlcnQkMCIsImNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY2xvc2VkX2ZsYWciLCJlcnJvcnMkMCIsImZpZWxkcyQwIiwiaXRlbSIsIml0ZW0kMCIsIml0ZW0kMSIsImVycm9yczIkMCIsIml0ZW0kMiIsImNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJybyIsInJhaXNlX2lmX25vbl9lbXB0eSIsImNoZWNrX3VudXNlZCIsInJlc2V0X2NoZWNrcyIsInNlbGZfNCIsImNvbGxlY3QiLCJjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMiLCJjaGVja19hbGxfc2VlbiIsInJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4iLCJ0YWJsZSIsInNlbGZfNSIsImNvcHlfb2Zfbm90X3NlZW4iLCJjb3B5IiwiZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIiwiZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIiwic2ciLCJ0b3BfbGV2ZWwiLCJmaWxlX3BhdGgiLCJtYWluX21vZHVsZV9uYW1lIiwiZW5jbG9zaW5nX21vZHVsZSIsImVuY2xvc2luZ192YWx1ZSIsInN1Ym1vZHVsZV9wYXRoIiwibG9jYXRlZCIsImZ1bGx5X3F1YWxpZmllZF9wYXRoIiwidmFsdWUkMCIsImVudGVyX2V4cHIiLCJlbnRlcl9tb2R1bGUiLCJtb2R1bGVfbmFtZSIsImVudGVyX3ZhbHVlIiwidmFsdWVfbmFtZSIsInRvX3N0cmluZ19wYXRoIiwid2l0aF9zdHJpbmdfcGF0aCIsInRvb2xfbmFtZSIsImlucHV0X25hbWUiLCJjb2RlX3BhdGgiLCJleHRlbnNpb25fcG9pbnRfbG9jIiwiYmFzZSIsImNvZGVfcGF0aCQwIiwiaW5wdXRfbmFtZSQwIiwidG9vbF9uYW1lJDAiLCJ3aXRoX2xvY19hbmRfcGF0aCIsImN0eHQiLCJtYWtlJDAiLCJkZXJpdmVkX2l0ZW1fbG9jIiwiaW5saW5lIiwiY29kZV9wYXRoJDEiLCJpbnB1dF9uYW1lJDEiLCJ0b29sX25hbWUkMSIsIndpdGhfbG9jX2FuZF9wYXRoJDAiLCJlbnRlciIsImVudGVyX29wdCIsIm5hbWVfb3B0IiwibWIiLCJtZCIsIm10ZCIsInZhcl9uYW1lc19vZiIsImVjX2VudGVyX21vZHVsZV9vcHQiLCJkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyIsImRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiIsImRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyIsImRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpbyIsImRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYSIsImRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIiwidGFnIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2Rlc2MiLCJ3aXRoX3ZhbHVlIiwiY3R4dCQwIiwibW9kdWxlX2V4cHIiLCJuYW1lX2Vycm9ycyIsIndpdGhfbGV0X21vZHVsZSIsIm1vZHVsZV9leHByX2Vycm9ycyIsIm1vZHVsZV9leHByJDAiLCJib2R5X2Vycm9ycyIsImRlc2NfZXJyb3JzJDAiLCJwZXhwX2Rlc2MkMSIsImRlc2NfZXJyb3JzIiwicGV4cF9kZXNjJDAiLCJsb2NfZXJyb3JzIiwicGV4cF9sb2MkMCIsImxvY19zdGFja19lcnJvcnMiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJtZSIsIndpdGhfbW9kdWxlX2V4cHIiLCJ3aXRoX21vZHVsZV9iaW5kaW5nIiwid2l0aF9tb2R1bGVfZGVjbGFyYXRpb24iLCJ3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwidmIiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJ2YXJfbmFtZSIsImluX2JpbmRpbmdfY3R4dCIsInBhdF9lcnJvcnMiLCJwdmJfcGF0JDAiLCJleHByX2Vycm9ycyIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJzZXRfaW5wdXRfbGV4YnVmIiwiaWMiLCJzb3VyY2UiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFsbF9zb3VyY2UiLCJhc3QiLCJleG4kMCIsIklucHV0X3ZlcnNpb24iLCJhc3QkMCIsIklucHV0X3ZlcnNpb24kMCIsImFzdCQxIiwiYXN0JDIiLCJyZWFkIiwiaW5wdXRfc291cmNlIiwid3JpdGUiLCJvYyIsImFkZF9wcHhfY29udGV4dCIsInNnJDAiLCJzdCQwIiwicmVhZF9iaW5hcnkiLCJzaWduYXR1cmUiLCJzdHJ1Y3R1cmUiLCJnZXRfYXN0IiwiZ2V0X2lucHV0X25hbWUiLCJydW5fcHJlcHJvY2Vzc29yIiwicHAiLCJpbnB1dCIsIm91dHB1dCIsImNvbW1hbmQiLCJlbmRfbWFya2VyX3NpZyIsImVuZF9tYXJrZXJfc3RyIiwiZXh0cmFjdF9wcmVmaXgiLCJyZW1vdmVfbG9jIiwicmVtb3ZlX2xvYyQwIiwicHJldiQwIiwicHJldiQxIiwiZGlmZl9hc3RzIiwiZ2VuZXJhdGVkIiwicm91bmRfdHJpcCIsIndpdGhfdGVtcF9maWxlIiwiZm4xIiwiZm4yIiwib3V0IiwiZHVtcCIsImNtZCIsIm9rIiwiY21kJDAiLCJwYXJzZV9zdHJpbmciLCJtYXRjaF9sb29wIiwiZW5kX3BvcyIsIm1pc21hdGNoX2hhbmRsZXIiLCJleHBlY3RlZCQwIiwic291cmNlJDAiLCJsb2MkMSIsInNvdXJjZSQxIiwiZXhwZWN0ZWQkMSIsInkkMCIsImRvX21hdGNoIiwiZ2V0X2xvYyIsImFwcGx5IiwidG9fc2V4cCIsImdldF9sb2MkMCIsInBwJDAiLCJ0b19zZXhwJDAiLCJtYXRjaF9zdHJ1Y3R1cmVfcmVzIiwibWF0Y2hfc3RydWN0dXJlIiwibWF0Y2hfc2lnbmF0dXJlX3JlcyIsIm1hdGNoX3NpZ25hdHVyZSIsImRlc2MiLCJlcSIsImdldF9leHRlbnNpb24iLCJ0eXBlX2RlY2wiLCJlJDEiLCJlJDIiLCJhJDMiLCJlJDMiLCJhJDQiLCJlJDQiLCJhJDUiLCJlJDUiLCJhJDYiLCJlJDYiLCJhJDciLCJlJDciLCJhJDgiLCJlJDgiLCJhJDkiLCJlJDkiLCJ2aXJ0dWFsX3BheWxvYWQiLCJtZXJnZV9hdHRyaWJ1dGVzX3JlcyIsInEkMCIsInQkMSIsInEkMSIsInQkMiIsIm1lcmdlX2F0dHJpYnV0ZXMiLCJ3aXRoX2FyZyIsImZpbmQiLCJleHQiLCJhcmckMCIsInNoaWZ0IiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnIiwicGF0dCIsImNvbnZlcnRfcmVzJDAiLCJmb3VuZCIsImNvbnZlcnRfaW5saW5lX3JlcyIsImNvbnZlcnRfaW5saW5lIiwiY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIiwiZmlsdGVyX2J5X2NvbnRleHQiLCJleHBhbmRlcnMiLCJleHBhbmRlcnMkMCIsImV4cGFuZGVycyQxIiwidW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciIsImNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lciIsImVycm9yX2xpc3RfdG9fZXhjZXB0aW9uIiwiZGVjbGFyZV9pbmxpbmUiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmciLCJkZWNsYXJlJDEiLCJkZWNsYXJlX2lubGluZSQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnJDEiLCJkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnJDAiLCJkZWNsYXJlX3BweF9pbXBvcnQiLCJleHBhbmQiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCIsImF0dHJfbmFtZSQwIiwic3BsaXRfbm9ybWFsX2FuZF9leHBlY3QkMCIsImZpbHRlciIsImZpZWxkIiwiZmllbGQkMCIsInNwZWNpYWxfZnVuY3Rpb24iLCJjb25zdGFudCIsInN1ZmZpeCIsImF0dHJfc3RyX3R5cGVfZGVjbCIsImF0dHJfc2lnX3R5cGVfZGVjbCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIiwiYXR0cl9zdHJfdHlwZV9leHQiLCJhdHRyX3NpZ190eXBlX2V4dCIsImF0dHJfc3RyX2V4Y2VwdGlvbiIsImF0dHJfc2lnX2V4Y2VwdGlvbiIsImF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCIsImF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QiLCJub3AiLCJyZXBsYWNlIiwiaW5zZXJ0X2FmdGVyIiwiZXhuX3RvX2V4dGVuc2lvbiIsImV4bl90b19lcnJvcl9leHRlbnNpb24iLCJvcmlnaW5hbF9ub2RlIiwicHR5cGVfbWFuaWZlc3QiLCJleG5fdG9fc3RyaSIsImV4bl90b19zaWdpIiwibWFwX25vZGVfcmVjIiwic3VwZXJfY2FsbCIsImJhc2VfY3R4dCIsImVtYmVkX2Vycm9ycyIsImNvbnZlcnRlZCIsIm1hcF9ub2RlcyIsImhvb2siLCJpbl9nZW5lcmF0ZWRfY29kZSIsImdlbmVyYXRlZF9jb2RlIiwiY29kZSIsImdldF9ncm91cCIsImF0dHIyIiwidmFscyIsInZhbHMkMCIsInJldl9jb25jYXQiLCJzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIiwic29ydF9hdHRyX2lubGluZSIsImNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpYyIsIm5vcCQwIiwid2l0aF9jb250ZXh0Iiwib3B0aW9uIiwiZXhwYW5kZWQiLCJleHBhbmRfY29uc3RhbnQiLCJ0ZXh0IiwiYyQwIiwiZXhuJDEiLCJpZCQwIiwiZ2VuZXJhdGVkX2NvZGUkMCIsImV4biQyIiwiZnVuYyQwIiwibGFiIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInJ1bGVzIiwic3BlY2lhbF9mdW5jdGlvbnMiLCJzcGVjaWFsX2Z1bmN0aW9ucyQwIiwiY29uc3RhbnRzIiwiY2xhc3NfZXhwciIsImNsYXNzX2ZpZWxkIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwibW9kdWxlX3R5cGUiLCJzaWduYXR1cmVfaXRlbSIsInN0cnVjdHVyZV9pdGVtIiwicHB4X2ltcG9ydCIsImF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9kZWNscyIsImF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9kZWNscyIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9leHRzIiwiYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZXh0cyIsImF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9ucyIsImF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9ucyIsIm1hcF9ub2RlIiwibWFwX25vZGVzJDAiLCJoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUiLCJleHBhbmRlZF9pdGVtcyIsImNvbnZlcnRfZXhuIiwiZzEiLCJnMiIsInZhbHVlcyIsImVycm9yX2l0ZW0iLCJnZW5lcmF0ZWRfY29kZV9iZWdpbiIsImdlbmVyYXRlZF9jb2RlX2VuZCIsInBhcmVuIiwic3RvcCIsIm1ha2VfdGV4dCIsImJsb2NrIiwicHJpbnRlciIsImlkeCIsImNvdW50X25ld2xpbmVzIiwic2tpcF9ibGFua19lb2wiLCJjb250ZW50cyIsImNudW0kMSIsImNudW0kMCIsInJlY29uY2lsZSIsInN0eWxlciIsInJlcGxzJDMiLCJpbnB1dF9maWxlbmFtZSIsInJlcGxzIiwicmVwbHMkMiIsInJlcGwkMCIsInByZXYiLCJyZXBscyQwIiwicmVwbHMkMSIsInJlcGxzJDQiLCJvdXRwdXRfbmFtZSIsImNvcHlfaW5wdXQiLCJ1cF90byIsImxpbmUiLCJsYXN0X2lzX3RleHQiLCJpc190ZXh0IiwibGluZSQwIiwibGluZSQxIiwibG9vcCQwIiwibGluZSQyIiwibG9vcF9jb25zZWN1dGl2ZV9yZXBscyQwIiwibGFzdF9pc190ZXh0JDAiLCJlbmRfY29uc2VjdXRpdmVfcmVwbHMiLCJwb3MkMSIsImxhc3RfaXNfdGV4dCQxIiwicG9zJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzIiwidG1wX2ZuIiwic2FuaXRpemUiLCJiaW5kaW5ncyIsIkFzdCIsInF1b3RlIiwicXVvdGVkX2V4cHIkMCIsImJpbmRpbmdfZXhwciQwIiwiYmluZGluZ19leHByIiwicXVvdGVkX2V4cHIiLCJiaW5kaW5nIiwibWtfYXR0cl9ub2xvYyIsImhpZGVfYXR0cmlidXRlIiwiZm9jdXNfYXR0cmlidXRlIiwiaGlkZV9wYXR0ZXJuIiwiZm9jdXNfcGF0dGVybiIsImhpZGVfZXhwcmVzc2lvbiIsImZvY3VzX2V4cHJlc3Npb24iLCJlbXB0eSIsInJhbmdlcyIsIm5vZGVfbG9jIiwibm9kZV9uYW1lIiwieF9sb2MiLCJ4X25hbWUiLCJwMiQwIiwicDEkMCIsImluc2VydCIsImFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IiwiZmlsZSIsInNhbWVfZmlsZV9zb19mYXIiLCJzaG91bGRfaWdub3JlIiwib3JpZ19mbmFtZSIsImV4dHJhY3RfY29uc3RyYWludCIsImRvX2NoZWNrIiwiY2hpbGRyZW5zX2xvY3MiLCJzaWJsaW5nc19sb2NzIiwibWF4X3BvcyQwIiwibWluX3BvcyQwIiwiY2hpbGRfbG9jIiwiY2hpbGRfbmFtZSIsImwyIiwibDEiLCJ5cyIsInlzJDAiLCJ4cyQwIiwiZW5mb3JjZV9pbnZhcmlhbnRzIiwic2libGluZ3MiLCJjdGUiLCJjdHAiLCJvdXRtb3N0X2xvYyIsImluaXRpYWxfcmVzJDAiLCJyZXMkMSIsImluaXRpYWxfcmVzIiwicmVzJDAiLCJjaGlsZHNfbG9jcyIsImF0dHJzX2xvY3MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImV4cHJfbyIsImxhYmVscyIsImFjYyQyIiwib3BuIiwiZV9sb2MiLCJjZSIsIm9kIiwiYWNjJDMiLCJhY2MkNCIsImV4ZV9uYW1lIiwiYWRkX2FyZyIsInNwZWMiLCJkb2MiLCJsb2NfZm5hbWUiLCJwZXJmb3JtX2NoZWNrcyIsInBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMiLCJwZXJmb3JtX2xvY2F0aW9uc19jaGVjayIsImRlYnVnX2F0dHJpYnV0ZV9kcm9wIiwiYXBwbHlfbGlzdCIsInByZXByb2Nlc3NvciIsIm5vX21lcmdlIiwicmVxdWVzdF9wcmludF9wYXNzZXMiLCJyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyIsInVzZV9jb2xvciIsImRpZmZfY29tbWFuZCIsInByZXR0eSIsIm91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSIsImNvcnJlY3RlZF9zdWZmaXgiLCJnZXRfZGVmYXVsdF9wYXRoIiwiZm5hbWUkMCIsImdldF9kZWZhdWx0X3BhdGhfc3RyIiwiZ2V0X2RlZmF1bHRfcGF0aF9zaWciLCJvZl9zdHJpbmciLCJnaXZlbl90aHJvdWdoX2NsaSIsInNldCIsImhhbmRsZXJzIiwiYWRkX2hhbmRsZXIiLCJhZGRfc2ltcGxlX2hhbmRsZXIiLCJhY2tub3dsZWRnZV9jb29raWVzIiwicG9zdF9oYW5kbGVycyIsImFkZF9wb3N0X2hhbmRsZXIiLCJjYWxsX3Bvc3RfaGFuZGxlcnMiLCJ0cmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWF0aW9uJDAiLCJoYXNfbmFtZSIsInByaW50X2NhbGxlcl9pZCIsImNhbGxlcl9pZCIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIiwiZW5jbG9zZV9pbXBsIiwiZW5jbG9zZV9pbnRmIiwiaW1wbCIsImludGYiLCJsaW50X2ltcGwiLCJsaW50X2ludGYiLCJwcmVwcm9jZXNzX2ltcGwiLCJwcmVwcm9jZXNzX2ludGYiLCJpbnN0cnVtZW50IiwiYWxpYXNlcyIsInJ1bGVzJDAiLCJpbXBsJDAiLCJpbnRmJDAiLCJwcmVwcm9jZXNzX2ltcGwkMCIsInByZXByb2Nlc3NfaW50ZiQwIiwiY3QkMCIsImxvY19vZl9saXN0IiwibCQyIiwiZmlyc3QiLCJtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIiwiZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIiwid2hvbGVfbG9jIiwiZm9vdGVyIiwiaGVhZGVyIiwibG9jX2hlYWRlciIsImxvY19mb290ZXIiLCJtYXBfaW1wbCIsInN0X3dpdGhfYXR0cnMiLCJtYXBfaW50ZiIsInNnX3dpdGhfYXR0cnMiLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ18iLCJhZGRfY3R4dF9hcmciLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiQwIiwibGludF9pbXBsJDAiLCJsaW50X2ludGYkMCIsImVuY2xvc2VfaW1wbCQwIiwiZW5jbG9zZV9pbnRmJDAiLCJyZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfJDAiLCJnZXRfd2hvbGVfYXN0X3Bhc3NlcyIsImN0cyIsImFmdF9pIiwiYmVmX2kiLCJyZWR1Y2VkX3QiLCJpbnN0ciIsInRyYW5zZiIsInRyYW5zZiQwIiwidHJhbnNmb3JtcyIsImFmdGVyX2luc3RycyIsImJlZm9yZV9pbnN0cnMiLCJwcmVwcm9jZXNzIiwibGludGVycyIsImdldF9lbmNsb3NlcnMiLCJpbXBsX2VuY2xvc2VycyIsImludGZfZW5jbG9zZXJzIiwibWVyZ2VfZW5jbG9zZXIiLCJlbmNsb3NlcnMiLCJmb290ZXJzIiwiaGVhZGVycyIsImhlYWRlcnMkMCIsImZvb3RlcnMkMCIsImFwcGx5X3RyYW5zZm9ybXMiLCJsaW50X2ZpZWxkIiwiZHJvcHBlZF9zb19mYXIiLCJsaW50X2Vycm9ycyIsIm9sZF9kcm9wcGVkIiwibGludF9lcnJvcnMkMCIsImVycm9ycyQxIiwibW9yZV9lcnJvcnMiLCJuZXdfZHJvcHBlZCIsInByaW50X2RpZmYiLCJ3aGF0IiwiZGlmZiIsImRyb3BwZWQiLCJlcnJvcl90b19leHRlbnNpb24iLCJleHQkMCIsInNvcnRfZXJyb3JzX2J5X2xvYyIsImVycm9yJDAiLCJtYXBfc3RydWN0dXJlX2dlbiIsIndpdGhfZXJyb3JzIiwic29ydGVkIiwic3QkMSIsInVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyIsInVudXNlZF9leHRlbnNpb25fZXJyb3JzIiwibm90X3NlZW5fZXJyb3JzIiwibWFwX3NpZ25hdHVyZV9nZW4iLCJzZyQxIiwibWFwX3NpZ25hdHVyZSIsInZlcnNpb25lZF9lcnJvcmYiLCJpbnB1dF9maWxlX25hbWUiLCJyZW1vdmVfbm9fZXJyb3IiLCJuZXdfZm4iLCJvbGRfZm4iLCJyZWxvY2F0ZV9tYXBwZXIiLCJzZXRfaW5wdXRfbmFtZSIsImV4dHJhY3RfY29va2llcyIsInByZWZpeCQxIiwicHJlZml4JDIiLCJjb3JyZWN0aW9ucyIsImFkZF90b19saXN0IiwicmVnaXN0ZXJfY29ycmVjdGlvbiIsInByb2Nlc3NfZmlsZV9ob29rcyIsInJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIiwiYWxsJDAiLCJwcm9jZXNzX2FzdCIsIm91dHB1dF9tb2RlIiwic2V0X2lucHV0Iiwic2V0X2tpbmQiLCJzZXRfb3V0cHV0X21vZGUiLCJtb2RlIiwibWF0Y2giLCJhcmdfb2Zfb3V0cHV0X21vZGUiLCJwYXJzZV9hcHBseV9saXN0IiwibWFzayIsImhhbmRsZV9hcHBseSIsImhhbmRsZV9kb250X2FwcGx5IiwiaW50ZXJwcmV0X21hc2siLCJzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSIsImlzX2NhbmRpZGF0ZSIsIm5hbWVzJDAiLCJpc19zZWxlY3RlZCIsInNldF9jb29raWUiLCJzaGFyZWRfYXJncyIsImFzX3BwIiwic3RhbmRhbG9uZV9hcmdzIiwiZ2V0X2FyZ3MiLCJzdGFuZGFsb25lX2FyZ3MkMCIsInN0YW5kYWxvbmVfbWFpbiIsInVzYWdlIiwicmVsb2NhdGUiLCJvdXRwdXQkMCIsImVtYmVkX2Vycm9ycyQwIiwib3V0cHV0X21vZGUkMCIsInJlcGxhY2VtZW50cyIsImhvb2skMCIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyJDAiLCJhc3RfaW5wdXRfbmFtZSIsImFzdF9raW5kIiwiZmFsbF9iYWNrX3ZlcnNpb24iLCJ1bmtub3duX21hZ2ljIiwiZmFsbF9iYWNrX3ZlcnNpb24kMCIsInRtcGZpbGUiLCJmYWlsZWRfY29tbWFuZCIsInByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIiwiaW5wdXRfZm5hbWUiLCJpbnB1dF92ZXJzaW9uJDAiLCJpbnB1dF92ZXJzaW9uJDEiLCJpbnB1dF92ZXJzaW9uJDIiLCJtZXRhZGF0YSIsImlucHV0X2NvbnRlbnRzIiwidGVzdCIsIm1hZ2ljX251bWJlciIsImNvcnJlY3RlZCIsImNvcnJlY3Rpb25zJDAiLCJtaXNtYXRjaGVzX2ZvdW5kIiwibnVsbF9hc3QiLCJwYXJzZV9pbnB1dCIsInBhc3NlZF9pbl9hcmdzIiwidmFsaWRfYXJncyIsImluY29ycmVjdF9pbnB1dF9tc2ciLCJtc2ckMCIsInJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiIsImZsYWdzX2FuZF9wcm9nX25hbWUiLCJpbnB1dF9mbiIsIm91dHB1dF9mbiIsInByb2dfbmFtZV9hbmRfZmxhZ3MiLCJhc3QkNCIsImFzdCQzIiwic3RhbmRhbG9uZSIsImFyZ3YiLCJydW5fYXNfcHB4X3Jld3JpdGVyIiwicHJldHR5JDAiLCJlbmFibGVfY2hlY2tzIiwiZW5hYmxlX2xvY2F0aW9uX2NoZWNrIiwiZGlzYWJsZV9sb2NhdGlvbl9jaGVjayIsIm1hcF9zdHJ1Y3R1cmUiLCJ2YXIkMCIsInZhcnNfb2YiLCJpZ24iLCJhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzIiwibXMiLCJmcCIsImJpbmRzX21vZHVsZV9uYW1lcyIsIndhcm5pbmdzIiwiZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpIiwia2VlcF93MzJfaW1wbCIsImtlZXBfdzMyX2ludGYiLCJrZWVwX3czMl9zcGVjIiwiY29udl93MzJfc3BlYyIsImtlZXBfdzMyX2ltcGwkMCIsImtlZXBfdzYwX2ltcGwiLCJrZWVwX3c2MF9pbnRmIiwia2VlcF93NjBfc3BlYyIsImFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwiYXBwbHlfYWxsIiwiZW50cnkiLCJnZW5lcmF0b3JzIiwiZXh0X3RvX2l0ZW0iLCJlbXB0eV9sYWJlbF9lcnJvciIsImR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciIsImFjY2VwdGVkX2FyZ3MiLCJwYXJhbSIsInVuYWNjZXB0ZWRfYXJndW1lbnQiLCJzcGVsbGNoZWNrX21zZyIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImxfZXJyIiwiYWN0dWFsX2Rlcml2ZXJfbmFtZSIsImR1cF9lcnJvciIsImRlcCIsImRlcF9uYW1lIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJkZWZhdWx0JDAiLCJ4IiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJ2YXJzIiwiaSIsImJpbmRpbmdzIiwidmFyJDAiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ2YXJzJDAiLCJ0eHQiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsImJvZHkkMCIsInRwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJpbnRlcm5hbCIsIm4iLCJhcmdzJDAiLCJhcmciLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJmaWVsZF9yZWZzIiwiaW5pdCIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9rZXlzIiwiYXJyYXlfY29uc3RydWN0b3IiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwiZGF0ZV9jb25zdHIiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwiZXhuX3dpdGhfanNfYmFja3RyYWNlIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInJhaXNlX2pzX2Vycm9yIiwiZSIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJ0MSIsImFjYyQwIiwiaSQwIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwibm9kZVR5cGUiLCJ0MTMiLCJjYXN0IiwidDE0IiwiZWxlbWVudCIsInRleHQiLCJhdHRyIiwibm9faGFuZGxlciIsImhhbmRsZXIiLCJyZXMiLCJmdWxsX2hhbmRsZXIiLCJ0aGlzJDAiLCJpbnZva2VfaGFuZGxlciIsImV2ZW50IiwiZXZlbnRUYXJnZXQiLCJtYWtlIiwiYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwidDQ0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInR5cCIsImgiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwieCQxIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJhIiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwidWludDgiLCJvZl9hcnJheUJ1ZmZlciQwIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJsJDAiLCJhJDAiLCJiIiwiZmlsZW5hbWUiLCJuYW1lJDAiLCJkb2NfY29uc3RyIiwiZG9jdW1lbnQiLCJibG9iIiwic3RyaW5nIiwibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImxvYWRlbmQiLCJmaWxlUmVhZGVyIiwibmFtZSQ1NiIsIm5hbWUkNTUiLCJuYW1lJDU0IiwibmFtZSQ1MyIsIm5hbWUkNTIiLCJuYW1lJDUxIiwibmFtZSQ1MCIsIm5hbWUkNDkiLCJuYW1lJDQ4IiwibmFtZSQ0NyIsIm5hbWUkNDYiLCJuYW1lJDQ1IiwibmFtZSQ0NCIsIm5hbWUkNDMiLCJuYW1lJDQyIiwibmFtZSQ0MSIsIm5hbWUkNDAiLCJuYW1lJDM5IiwibmFtZSQzOCIsIm5hbWUkMzciLCJuYW1lJDM2IiwibmFtZSQzNSIsIm5hbWUkMzQiLCJuYW1lJDMzIiwibmFtZSQzMiIsIm5hbWUkMzEiLCJuYW1lJDMwIiwibmFtZSQyOSIsIm5hbWUkMjgiLCJuYW1lJDI3IiwibmFtZSQyNiIsIm5hbWUkMjUiLCJuYW1lJDI0IiwibmFtZSQyMyIsIm5hbWUkMjIiLCJuYW1lJDIxIiwibmFtZSQyMCIsIm5hbWUkMTkiLCJuYW1lJDE4IiwibmFtZSQxNyIsIm5hbWUkMTYiLCJuYW1lJDE1IiwibmFtZSQxNCIsIm5hbWUkMTMiLCJuYW1lJDEyIiwibmFtZSQxMSIsIm5hbWUkMTAiLCJuYW1lJDkiLCJuYW1lJDgiLCJuYW1lJDciLCJuYW1lJDYiLCJuYW1lJDUiLCJuYW1lJDQiLCJuYW1lJDMiLCJuYW1lJDIiLCJuYW1lJDEiLCJvbklFIiwiY2FuY2VsIiwiY2xpY2siLCJjbG9zZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm8iLCJ3aW5kb3ciLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZG9jIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaWFsb2ciLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwiY29uc3RyIiwiZXYiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJvZl9ldmVudCIsInZhbHVlIiwidmFsdWUkMyIsInZhbHVlJDIiLCJ2YWx1ZSQxIiwidmFsdWUkMCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicmVxIiwiYyIsImNhbGxiYWNrIiwibm93IiwibGFzdCIsImR0IiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZ2V0X2VsZW1lbnRfY29udGVudCIsImZpbGUiLCJmb3JtX2VsZW1lbnRzIiwiaSQxIiwidDMxIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwibGlzdCIsImVtcHR5X2Zvcm1fY29udGVudHMiLCJwb3N0X2Zvcm1fY29udGVudHMiLCJjb250ZW50cyIsImdldF9mb3JtX2NvbnRlbnRzIiwicmVhZHlzdGF0ZWNoYW5nZSIsInRpbWVvdXQiLCJjcmVhdGUiLCJpbXBvcnRfc2NyaXB0cyIsInNjcmlwdHMiLCJzZXRfb25tZXNzYWdlIiwianNfaGFuZGxlciIsInBvc3RfbWVzc2FnZSIsIndlYlNvY2tldCIsImlzX3N1cHBvcnRlZCIsImRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCJnZXRDb250ZXh0IiwiY3R4IiwiZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiaW50ZXJydXB0IiwicGx1c19yZSIsInVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIiwidDE2IiwidXJsZGVjb2RlIiwidXJsZW5jb2RlIiwid2l0aF9wbHVzIiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsIm4iLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsInQzIiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwYXRoX3N0ciIsInNzbCIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJvYnNlcnZlIiwiYm94IiwiZW50cnlfdHlwZXMiLCJlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0IiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsInJlbW92ZSIsImZpbmQiLCJrZXlzIiwicmV2aXZlciIsInVuc2FmZV9pbnB1dCIsIm1sSW50NjRfY29uc3RyIiwib3V0cHV0X3Jldml2ZXIiLCJvdXRwdXQiLCJzdHJpbmdfb2ZfbmFtZSIsIm5hbWVfb2Zfc3RyaW5nIiwicmdiX29mX25hbWUiLCJyZ2IiLCJoc2wiLCJzdHJpbmdfb2ZfdCIsImIkMCIsImckMCIsInIkMCIsImIkMSIsImckMSIsInIkMSIsImIkMiIsImckMiIsInIkMiIsImEkMSIsImgkMCIsImhleF9vZl9yZ2IiLCJibHVlIiwiZ3JlZW4iLCJyZWQiLCJpbl9yYW5nZSIsImpzX3Rfb2ZfanNfc3RyaW5nIiwidDEyIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInN5bWJvbCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDAiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsInRvX2FycmF5ZiIsImYiLCJhIiwib2ZfYXJyYXlmIiwidG9fbGlzdCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdGYiLCJvZl9saXN0ZiIsIm9wdGRlZiIsIngiLCJ0b19vcHRkZWYiLCJ4JDAiLCJ1bm9wdGRlZl9mIiwiZGVmIiwidW5vcHRkZWYiLCJjb252ZGVmIiwidG9fb3B0Iiwib3B0IiwiY29udm9wdCIsImpzX2xvZyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwiYXNzaWduIiwiYXNzaWduX2xpc3QiLCJyZW1vdmVfdW5kZWZpbmVkIiwibyIsImsiLCJjcmVhdGUiLCJhZGQiLCJ2IiwiYWRkX2xpc3QiLCJhZGRfbGlzdGYiLCJtYWtlIiwibWFrZWYiLCJyZW1vdmUiLCJmaW5kIiwia2V5cyIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwianRoZW4wIiwiZXJyb3IiLCJleG4kMCIsImVmIiwiZXJyb3IkMCIsImp0aGVuIiwianRoZW4wX29wdCIsInByb20iLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibG9nX3N0cjIiLCJzMSIsInMyIiwibG9nX3N0cjMiLCJzMyIsImRlYnVnIiwiZGVidWcyIiwiZGVidWczIiwiZGVidWdfc3RyIiwiZGVidWdfc3RyMiIsImRlYnVnX3N0cjMiLCJ3YXJuIiwid2FybjIiLCJ3YXJuMyIsIndhcm5fc3RyIiwid2Fybl9zdHIyIiwid2Fybl9zdHIzIiwiZXJyb3IyIiwiZXJyb3IzIiwiZXJyb3Jfc3RyIiwiZXJyb3Jfc3RyMiIsImVycm9yX3N0cjMiLCJiaWdJbnQiLCJvZl9zdHJpbmciLCJvZl9pbnQiLCJpIiwib2ZfaW50NjQiLCJvZl9uYXRpdmUiLCJvZl9mbG9hdCIsInRvX2xvY2FsZV9zdHJpbmciLCJvcHRpb25zIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsImxpc3RlbiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwiY3JlYXRlIiwic3RvcmUiLCJhZGQiLCJrZXkiLCJ4IiwicHV0IiwicmFuZ2UiLCJvbG93ZXIiLCJvdXBwZXIiLCJsb3dlciIsInVwcGVyIiwidXBwZXIkMSIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY291bnQiLCJrIiwiZ2V0Iiwib2ZfanMiLCJqcyIsImpzJDAiLCJnZXRfYWxsIiwiZ2V0X2tleSIsImdldF9hbGxfa2V5cyIsImRlbGV0ZSQwIiwiaXRlciIsImRpcmVjdGlvbiIsImMiLCJmb2xkIiwic3RhcnQiLCJhY2MiLCJjYWxsYmFjayQwIiwiaXRlcl9rZXlzIiwiZm9sZF9rZXlzIiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4IiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJmaWxlIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImJ1ZmZlciIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJhcHBlbmQiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMTk0IiwiZXJyb3Jfc291cmNlXzI2MyIsImVycm9yX3NvdXJjZV8yNzUiLCJlcnJvcl9zb3VyY2VfMzE3IiwiZXJyb3Jfc291cmNlXzQxNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImVxdWFsIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXF1YWwkMCIsImV2YWxfZmFpbCIsImxvYyIsImZtdCIsInMiLCJjdXN0b21fcHJpbnRmXzAwMSIsImVxdWFsX29wdGlvbiIsImEiLCJiIiwieSIsIngiLCJjb21wYXJlJDAiLCJjbXBfYSIsImFfMDAyIiwiYl8wMDMiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJuIiwic2V4cF9vZl90JDEiLCJvZl9hXzAxOSIsInNvcnRlZF8wMjEiLCJhcmdfMDIyIiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJibmRzXzAyMCIsImNyZWF0ZSIsImVxIiwieHMkMSIsInNvcnRlZCIsInMyIiwiczEiLCJ4cyQwIiwibGFzdF92YWx1ZSQxIiwibGFzdF9rZXkkMSIsImFjYyIsImxhc3Rfa2V5IiwibGFzdF92YWx1ZSIsInhzIiwibGFzdF92YWx1ZSQwIiwibGFzdF9rZXkkMCIsInNvcnRlZCQwIiwiZXhwb3NlIiwidCIsIm1hcCIsImYiLCJ2IiwiayIsInRvX21kNSIsIm9mX21kNSIsInNleHBfb2ZfdCQyIiwidF9vZl9zZXhwJDEiLCJ1dWlkIiwidSIsImludCQwIiwicGFpciIsImxpc3QiLCJsIiwiY29uc3RydWN0b3IiLCJzZXhwX29mX3QkMyIsIm9mX2FfMDk2IiwiYXJnMV8wOTgiLCJhcmcwXzA5NyIsInJlczBfMDk5IiwicmVzMV8xMDAiLCJhcmcxXzEwMiIsImFyZzBfMTAxIiwicmVzMF8xMDMiLCJyZXMxXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJhcmcwXzExMSIsInJlczBfMTEyIiwiYXJnMV8xMDgiLCJhcmcwXzEwNyIsInJlczBfMTA5IiwicmVzMV8xMTAiLCJhcmcwXzExNyIsInJlczBfMTE4IiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczBfMTE1IiwicmVzMV8xMTYiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiYXJnMV8xMjIiLCJhcmcwXzEyMSIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJhcmcxXzEyNiIsImFyZzBfMTI1IiwicmVzMF8xMjciLCJyZXMxXzEyOCIsImFyZzBfMTI5IiwicmVzMF8xMzAiLCJjb21wYXJlJDIiLCJhXzEzMiIsImJfMTMzIiwiYV8xMzQiLCJiXzEzNyIsImJfMTM1IiwiYV8xMzYiLCJhXzE0MCIsImFfMTM4IiwiYl8xNDEiLCJiXzEzOSIsIm4kMCIsImFfMTQyIiwiYl8xNDMiLCJhXzE0NCIsImJfMTQ1IiwiYV8xNDYiLCJiXzE0NyIsImFfMTQ4IiwiYl8xNDkiLCJhXzE1MCIsImJfMTUxIiwidF8xNTMiLCJ0XzE1MiIsInRfMTU1IiwidF8xNTQiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsInRfMTYxIiwidF8xNjAiLCJ0XzE2MyIsInRfMTYyIiwiYV8xNjQiLCJiXzE2NSIsImFfMTY2IiwiYl8xNjciLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsImFfMTc0IiwiYV8xNzIiLCJiXzE3NSIsImJfMTczIiwibiQxIiwiYV8xNzYiLCJiXzE3NyIsImFfMTgwIiwiYV8xNzgiLCJiXzE4MSIsImJfMTc5IiwibiQyIiwiYV8xODIiLCJiXzE4MyIsImFfMTg0IiwiYl8xODUiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJ0b19kaWdlc3QiLCJ0b19kaWdlc3QkMCIsIngkMiIsImVxdWFsJDEiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTg2IiwiYl8xODciLCJiXzE4OSIsImFfMTg4IiwiYV8xOTAiLCJiXzE5MSIsInNleHBfb2ZfdDAiLCJhcmcwXzIwMSIsInJlczBfMjAyIiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkNCIsIm9mX3N0cmluZyQxIiwidG9fc3RyaW5nJDIiLCJzeW1ib2wiLCJjb21wYXJlJDMiLCJlcXVhbCQyIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkNSIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDMiLCJjb21wYXJhdG9yIiwiZXF1YWwkMyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ2IiwiY3JlYXRlJDMiLCJ0cmlwcyIsImdpZCIsIm1lbWJlcnMiLCJ2cyIsImxvb2t1cCIsImciLCJjdXN0b21fcHJpbnRmXzM0NSIsInNjaGVtZSIsImVxdWFsJDUiLCJhXzM0NiIsImJfMzQ3IiwiYV8zNDYkMCIsImJfMzQ3JDAiLCJhXzM0OCIsImJfMzUxIiwiYl8zNDkiLCJhXzM1MCIsImFfMzU0IiwiYV8zNTIiLCJiXzM1NSIsImJfMzUzIiwiYV8zNTYiLCJiXzM1NyIsImFfMzU4IiwiYl8zNTkiLCJhXzM2MCIsImJfMzYxIiwidF8zNjMiLCJ0XzM2MiIsInRfMzY1IiwidF8zNjQiLCJhXzM2NiIsImJfMzY3IiwiYV8zNjgiLCJiXzM2OSIsInRfMzcxIiwidF8zNzAiLCJ0XzM3MyIsInRfMzcyIiwiYV8zNzQiLCJiXzM3NSIsImFfMzc2IiwiYl8zNzciLCJhXzM3OCIsImJfMzc5IiwiYV8zODAiLCJiXzM4MSIsInRfMzgzIiwidF8zODIiLCJ0XzM4NSIsInRfMzg0IiwiYV8zODYiLCJiXzM4NyIsInJpZ2h0XzIzOCIsImxlZnRfMjM3IiwidF8yNDAiLCJ0XzIzOSIsInRfMjQyIiwidF8yNDEiLCJhXzI0MyIsImJfMjQ0IiwicmlnaHRfMjQ2IiwibGVmdF8yNDUiLCJ0XzI0OCIsInRfMjQ3IiwidF8yNTAiLCJ0XzI0OSIsImFfMzkwIiwiYl8zOTEiLCJ0XzM5MyIsInRfMzkyIiwidF8zOTUiLCJ0XzM5NCIsImFfMzk4IiwiYV8zOTYiLCJiXzM5OSIsImJfMzk3IiwiYV80MDAiLCJiXzQwMSIsImFfNDA2IiwiYV80MDQiLCJhXzMwMSIsImJfNDA3IiwiYl80MDUiLCJiXzQwMyIsImFfMzAzIiwiYl8zMDQiLCJ0XzMwNiIsInRfMzA1IiwidF8zMDgiLCJ0XzMwNyIsInRfMzEwIiwidF8zMDkiLCJ0XzMxMiIsInRfMzExIiwiYV8zMTMiLCJiXzMxNCIsImFfNDEwIiwiYl80MTEiLCJ0X29mX3NleHAkNSIsInNleHBfNDE2IiwidGFnXzQxNyIsInNleHBfYXJnc180MTgiLCJhcmcxXzQyMCIsImFyZzBfNDE5IiwicmVzMF80MjEiLCJyZXMxXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcxXzQyNyIsImFyZzBfNDI2IiwicmVzMF80MjgiLCJyZXMxXzQyOSIsInNleHBfYXJnc180NTciLCJhcmcwXzQ2MyIsImFyZzFfNDU5IiwiYXJnMF80NTgiLCJyZXMwXzQ2MCIsInJlczFfNDYxIiwic2V4cF8yNTUiLCJhdG9tXzI1MyIsInNleHBfYXJnc18yNTYiLCJhdG9tXzI1MyQwIiwiYXJnMF8yNjQiLCJhcmcxXzI1OSIsImFyZzBfMjU4IiwicmVzMF8yNjAiLCJyZXMxXzI2MSIsInJlczBfMjY1IiwiYXJnMF8yNzIiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNjkiLCJyZXMxXzI3MCIsInJlczBfMjczIiwicmVzMF80NjQiLCJzZXhwX2FyZ3NfNDc3IiwiYXJnMV80NzkiLCJhcmcwXzQ3OCIsInJlczBfNDgwIiwicmVzMV80ODEiLCJzZXhwX2FyZ3NfNDMyIiwiYXJnMF80MzgiLCJyZXMwXzQzOSIsInNleHBfNDM3IiwiYXJnMV80MzQiLCJhcmcwXzQzMyIsInJlczBfNDM1IiwicmVzMV80MzYiLCJzZXhwX2FyZ3NfNDg0IiwiYXJnMl80ODciLCJhcmcxXzQ4NiIsImFyZzBfNDg1Iiwic2V4cF8zMjciLCJhcmcxXzMyNCIsImFyZzBfMzIzIiwicmVzMF8zMjUiLCJhcmcxXzMxOSIsImFyZzBfMzE4IiwicmVzMF8zMjAiLCJyZXMxXzMyMSIsInJlczFfMzI2IiwicmVzMF80ODgiLCJyZXMxXzQ4OSIsInJlczJfNDkwIiwic2V4cF9hcmdzXzQ1MiIsImFyZzBfNDUzIiwicmVzMF80NTQiLCJzZXhwX2FyZ3NfNDY3IiwiYXJnMF80NzMiLCJhcmcxXzQ2OSIsImFyZzBfNDY4IiwicmVzMF80NzAiLCJyZXMxXzQ3MSIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0MiIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwXzQ0NyIsImFyZzFfNDQ0IiwiYXJnMF80NDMiLCJyZXMwXzQ0NSIsInJlczFfNDQ2Iiwic2V4cF9vZl90JDciLCJhcmcxXzQ5MiIsImFyZzBfNDkxIiwicmVzMF80OTMiLCJyZXMxXzQ5NCIsImFyZzFfNDk2IiwiYXJnMF80OTUiLCJyZXMwXzQ5NyIsInJlczFfNDk4IiwiYXJnMF81MDMiLCJyZXMwXzUwNCIsImFyZzFfNTAwIiwiYXJnMF80OTkiLCJyZXMwXzUwMSIsInJlczFfNTAyIiwiYXJnMF81MDkiLCJyZXMwXzUxMCIsImFyZzFfNTA2IiwiYXJnMF81MDUiLCJyZXMwXzUwNyIsInJlczFfNTA4IiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsImFyZzBfNTE3IiwiYXJnMV81MTQiLCJhcmcwXzUxMyIsInJlczBfNTE1IiwicmVzMV81MTYiLCJ2XzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwidl8yODIiLCJhcmcxXzI4NCIsImFyZzBfMjgzIiwicmVzMF8yODUiLCJyZXMxXzI4NiIsInJlczBfNTE4IiwiYXJnMF81MjMiLCJhcmcxXzUyMCIsImFyZzBfNTE5IiwicmVzMF81MjEiLCJyZXMxXzUyMiIsInJlczBfNTI0IiwiYXJnMV81MjYiLCJhcmcwXzUyNSIsInJlczBfNTI3IiwicmVzMV81MjgiLCJhcmcyXzUzMSIsImFyZzFfNTMwIiwiYXJnMF81MjkiLCJtZW1iZXJzXzMzNSIsImxvY18zMzMiLCJnaWRfMzMxIiwiYXJnXzMzNiIsImFyZzFfMzQyIiwiYXJnMF8zNDEiLCJyZXMwXzM0MyIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzMzOSIsInJlczFfMzQwIiwicmVzMV8zNDQiLCJibmRzXzMzMCIsImFyZ18zMzQiLCJibmRzXzMzMCQwIiwiYXJnXzMzMiIsImJuZHNfMzMwJDEiLCJyZXMwXzUzMiIsInJlczFfNTMzIiwicmVzMl81MzQiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImlzX2N5Y2xpYyIsImlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nXyIsImxvb2t1cCQwIiwiYV81MzUiLCJiXzUzNiIsInRfNTM4IiwidF81MzciLCJ0XzU0MCIsInRfNTM5IiwiYXJnMV81NDIiLCJhcmcwXzU0MSIsInJlczBfNTQzIiwicmVzMV81NDQiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl81NDUiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJzdGFibGVfd2l0bmVzc19hcnJheSIsInN0YWJsZV93aXRuZXNzX2xhenlfdCIsInN0YWJsZV93aXRuZXNzX2xpc3QiLCJzdGFibGVfd2l0bmVzc19vcHRpb24iLCJzdGFibGVfd2l0bmVzc19yZWYiLCJvZl9zZXJpYWxpemFibGUiLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfYXJyYXkiLCJhciIsImVsc19wb3NfcmVmIiwiaSIsImJpbl93cml0ZV9oYXNodGJsIiwiYmluX3dyaXRlX2tleSIsImJpbl93cml0ZV92YWwiLCJwbGVuIiwiY250X3JlZiIsImNvbGxfaHRibCIsInJlc19wb3MiLCJiaW5fd3JpdGVfZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVfZmxvYXQ2NF92ZWMiLCJiaW5fd3JpdGVfZmxvYXQzMl9tYXQiLCJtIiwibGVuMSIsImxlbjIiLCJwb3MkMSIsImJpbl93cml0ZV9mbG9hdDY0X21hdCIsImJpbl93cml0ZV9iaWdzdHJpbmciLCJzIiwiYmluX3dyaXRlX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlX2ludF84Yml0IiwiYmluX3dyaXRlX2ludF8xNmJpdCIsImJpbl93cml0ZV9pbnRfMzJiaXQiLCJiaW5fd3JpdGVfaW50XzY0Yml0IiwiYmluX3dyaXRlX2ludDY0X2JpdHMiLCJiaW5fd3JpdGVfbmV0d29yazE2X2ludCIsImJpbl93cml0ZV9uZXR3b3JrMzJfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZV9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfYXJyYXkiLCJlbCQxIiwibWF5YmVfZmxvYXQiLCJlbCQwIiwiZmlyc3QiLCJyZXMiLCJiaW5fcmVhZF9oYXNodGJsIiwiYmluX3JlYWRfa2V5IiwiYmluX3JlYWRfdmFsIiwicmVhZF9rdl9wYWlyIiwiZWxzIiwiYmluX3JlYWRfZmxvYXQzMl92ZWMiLCJ2ZWMiLCJiaW5fcmVhZF9mbG9hdDY0X3ZlYyIsImJpbl9yZWFkX2Zsb2F0MzJfbWF0IiwibWF0IiwiYmluX3JlYWRfZmxvYXQ2NF9tYXQiLCJiaW5fcmVhZF9iaWdzdHJpbmciLCJiaW5fcmVhZF92YXJpYW50X2ludCIsImJpbl9yZWFkX2ludF84Yml0IiwiYmluX3JlYWRfaW50XzE2Yml0IiwiYmluX3JlYWRfaW50XzMyYml0IiwiYmluX3JlYWRfaW50XzY0Yml0IiwiYmluX3JlYWRfaW50NjRfYml0cyIsImJpbl9yZWFkX25ldHdvcmsxNl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRfbmV0d29yazY0X2ludCIsImJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkX21kNSIsImJpbl9zaGFwZV91bml0IiwiYmluX3NoYXBlX2Jvb2wiLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2hhcGVfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NoYXBlX2ludDYzIiwiYmluX3NoYXBlX2ludDY0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaGFwZV9uYXQwIiwiYmluX3NoYXBlX2RpZ2VzdCIsImJpbl9zaGFwZV9mbG9hdDMyX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDY0X3ZlYyIsImJpbl9zaGFwZV92ZWMiLCJiaW5fc2hhcGVfZmxvYXQzMl9tYXQiLCJiaW5fc2hhcGVfZmxvYXQ2NF9tYXQiLCJiaW5fc2hhcGVfbWF0IiwiYmluX3NoYXBlX2JpZ3N0cmluZyIsImJpbl9zaGFwZV9mbG9hdGFycmF5IiwiYmluX3NoYXBlX3ZhcmlhbnRfaW50IiwiYmluX3NoYXBlX2ludF84Yml0IiwiYmluX3NoYXBlX2ludF8xNmJpdCIsImJpbl9zaGFwZV9pbnRfMzJiaXQiLCJiaW5fc2hhcGVfaW50XzY0Yml0IiwiYmluX3NoYXBlX2ludDY0X2JpdHMiLCJiaW5fc2hhcGVfbmV0d29yazE2X2ludCIsImJpbl9zaGFwZV9uZXR3b3JrMzJfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaGFwZV9uZXR3b3JrNjRfaW50IiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2hhcGVfb3B0aW9uIiwiYmluX3NoYXBlX2xpc3QiLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2hhcGVfaGFzaHRibCIsInkiLCJiaW5fc2hhcGVfbGF6eSIsImJpbl9zaGFwZV9wYWlyIiwiYmluX3NoYXBlX3RyaXBsZSIsInoiLCJiaW5fc2l6ZV91bml0IiwiYmluX3NpemVfYm9vbCIsImJpbl9zaXplX2NoYXIiLCJiaW5fc2l6ZV9tZDUiLCJiaW5fc2l6ZV9pbnRfbmF0MCIsImJpbl9zaXplX2ludF9uZWdhdGl2ZSIsImJpbl9zaXplX2ludCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9pbnQkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfdW5pdCQwIiwiYmluX3NpemVfYm9vbCQwIiwiYmluX3NpemVfY2hhciQwIiwiYmluX3NpemVfaW50JDEiLCJiaW5fc2l6ZV9uYXQwJDAiLCJiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMiLCJzaXplX2xlbiIsImJpbl9zaXplX3N0cmluZyIsImJpbl9zaXplX2J5dGVzIiwiYmluX3NpemVfbWQ1JDEiLCJiaW5fc2l6ZV9mbG9hdCQwIiwiZiIsImJpbl9zaXplX2ludDMyIiwiYmluX3NpemVfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX3JlZiIsImJpbl9zaXplX2xhenlfdCIsImJpbl9zaXplX29wdGlvbiIsImJpbl9zaXplX2ludDMyJDAiLCJiaW5fc2l6ZV9pbnQ2NCQwIiwiYmluX3NpemVfbmF0aXZlaW50IiwiYmluX3NpemVfcmVmJDAiLCJiaW5fc2l6ZV9lbCIsImJpbl9zaXplX2xhenlfdCQwIiwiYmluX3NpemVfb3B0aW9uJDAiLCJiaW5fc2l6ZV9wYWlyJDAiLCJiaW5fc2l6ZV9hIiwiYmluX3NpemVfYiIsImJpbl9zaXplX3RyaXBsZSQwIiwiYmluX3NpemVfYyIsImJpbl9zaXplX2xpc3QiLCJzaXplX2FjYyIsImxlbl9hY2MiLCJsZW5fYWNjJDAiLCJzaXplX2FjYyQwIiwiYmluX3NpemVfZmxvYXRhcnJheSIsImJpbl9zaXplX2FycmF5IiwibGVuJDAiLCJ0b3RhbF9sZW4iLCJ0b3RhbF9sZW5fcmVmIiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfdmFyaWFudF9pbnQiLCJiaW5fcmVhZGVyX3ZhcmlhbnRfaW50IiwiYmluX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlcl9pbnRfOGJpdCIsImJpbl9yZWFkZXJfaW50XzhiaXQiLCJiaW5faW50XzhiaXQiLCJiaW5fd3JpdGVyX2ludF8xNmJpdCIsImJpbl9yZWFkZXJfaW50XzE2Yml0IiwiYmluX2ludF8xNmJpdCIsImJpbl93cml0ZXJfaW50XzMyYml0IiwiYmluX3JlYWRlcl9pbnRfMzJiaXQiLCJiaW5faW50XzMyYml0IiwiYmluX3dyaXRlcl9pbnRfNjRiaXQiLCJiaW5fcmVhZGVyX2ludF82NGJpdCIsImJpbl9pbnRfNjRiaXQiLCJiaW5fd3JpdGVyX2ludDY0X2JpdHMiLCJiaW5fcmVhZGVyX2ludDY0X2JpdHMiLCJiaW5faW50NjRfYml0cyIsImJpbl93cml0ZXJfbmV0d29yazE2X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazE2X2ludCIsImJpbl9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50IiwiYmluX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiIsImJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyIiwiYmluX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZXJfbmV0d29yazY0X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludCIsImJpbl9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQiLCJiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9uZXR3b3JrNjRfaW50NjQiLCJjbnZfd3JpdGVyIiwiY252IiwidHBfY2xhc3MiLCJjbnZfcmVhZGVyIiwidnRhZyIsImZvcl9zaGFwZSIsImZvcl93cml0ZXIiLCJmb3JfcmVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX3dyaXRlX3NpemVfaGVhZGVyIiwiYmluX3JlYWRfc2l6ZV9oZWFkZXIiLCJiaW5fZHVtcCIsIndyaXRlciIsImhlYWRlciIsInBvc19sZW4iLCJ0b3RfbGVuIiwicG9zX2xlbiQwIiwiYnVmJDAiLCJidWYkMSIsImJpbl9yZWFkX3N0cmVhbSIsIm1heF9zaXplIiwicmVhZCIsInJlYWRlciIsIm1heF9zaXplJDAiLCJtc2ciLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsIm1heWJlX2Fubm90YXRlX3NoYXBlIiwibWF5YmVfdXVpZCIsInNoYXBlIiwidXVpZCIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInQiLCJiaW5fd3JpdGVfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fc2l6ZV90JDAiLCJiaW5fd3JpdGVfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaGFwZV9lbCIsImJpbl93cml0ZXIiLCJiaW5fcmVhZGVyIiwidHlwZV9jbGFzcyIsImJpbl9zaGFwZV9lbDEiLCJiaW5fc2hhcGVfZWwyIiwiYmluX3NpemVfZWwxIiwiYmluX3NpemVfZWwyIiwiYmluX3dyaXRlX2VsMSIsImJpbl93cml0ZV9lbDIiLCJiaW5fcmVhZF9lbDEiLCJiaW5fcmVhZF9lbDIiLCJiaW5fd3JpdGVyMSIsImJpbl93cml0ZXIyIiwiYmluX3JlYWRlcjEiLCJiaW5fcmVhZGVyMiIsInR5cGVfY2xhc3MxIiwidHlwZV9jbGFzczIiLCJiaW5fc2hhcGVfZWwzIiwiYmluX3NpemVfZWwzIiwiYmluX3dyaXRlX2VsMyIsImJpbl9yZWFkX2VsMyIsImJpbl93cml0ZXIzIiwiYmluX3JlYWRlcjMiLCJ0eXBlX2NsYXNzMyIsIm1heWJlX2NhbGxlcl9pZGVudGl0eSIsIndpdGhfbW9kdWxlX25hbWUiLCJtb2R1bGVfbmFtZSIsImZ1bmN0aW9uX25hbWUiLCJtb2R1bGVfbmFtZSQwIiwic2l6ZV9yZWYiLCJpZHgiLCJyZXN1bHQiLCJ0MSIsInQyIiwidDMiLCJiaW5fcmVhZF91bml0JDAiLCJ2aW50IiwiYmluX3JlYWRfYm9vbCQwIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRfaW50JDAiLCJiaW5fcmVhZF9mbG9hdCQwIiwiYmluX3JlYWRfZmxvYXRhcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJzdGFibGVfd2l0bmVzcyIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJzZXhwX29mX3QiLCJvZl9hXzAwMyIsInN0YXJ0X2EiLCJlbmRfYSIsIndyaXR0ZW4iLCJleHBlY3RlZF9zaXplIiwib2ZfYmluYWJsZSIsInRvX2JpbmFibGUiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsInRvX29wYXF1ZSIsImJsb2IiLCJvZl9vcGFxdWVfZXhuIiwiY29tcGFyZSQwIiwic2V4cF9vZl90JDAiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwic3RyaW5nX29mX2JpZ3N0cmluZyIsImJpbl9yZWFkX3QkNyIsImJpbl9yZWFkX3QkOCIsInRvX29wYXF1ZSQwIiwiYmluX3dyaXRlcl92Iiwib2Zfb3BhcXVlX2V4biQwIiwiYmluX3JlYWRlcl92IiwiZXJyb3IiLCJjb21wYXJlJDEiLCJzZXhwX29mX3QkMSIsImJpbl9zaXplX3QkNSIsImJpbl9yZWFkX3QkMTEiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRlcl90JDIiLCJwcmVfdGVzdF9ob29rIiwibmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCIsInQiLCJpbml0aWFsIiwiYW1fcnVubmluZ19lbnZfdmFyIiwidG9fc3RyaW5nIiwiY29tYmluZSIsInQxIiwidDIiLCJjb21iaW5lX2FsbCIsInRzIiwidGVzdF9tb2R1bGVzX3JhbiIsInRlc3RfbW9kdWxlc19mYWlsZWQiLCJ0ZXN0c19yYW4iLCJ0ZXN0c19mYWlsZWQiLCJkeW5hbWljX2xpYiIsImFjdGlvbiIsImZvcmNlX2Ryb3AiLCJnZXQiLCJjdXJyZW50IiwiZm91bmRfdGVzdCIsImlzX2N1cnJlbnQiLCJwIiwiY3VycmVudCQwIiwiY3VycmVudF90YWdzIiwidCIsIm0iLCJ2ZXJib3NlIiwic3RyaWN0Iiwic2hvd19jb3VudHMiLCJsaXN0X3Rlc3RfbmFtZXMiLCJkZWxheWVkX2Vycm9ycyIsInN0b3Bfb25fZXJyb3IiLCJsb2ciLCJ0aW1lX3NlYyIsInVzZV9jb2xvciIsImluX3BsYWNlIiwiZGlmZl9jb21tYW5kIiwic291cmNlX3RyZWVfcm9vdCIsImRpZmZfcGF0aF9wcmVmaXgiLCJkaXNwbGF5ZWRfZGVzY3IiLCJkZXNjciIsImZpbGVuYW1lIiwibGluZSIsInN0YXJ0X3BvcyIsImVuZF9wb3MiLCJkZXNjciQwIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJsIiwiaSIsInRhZyIsInMiLCJzdHIiLCJmaWxlIiwiaW5kZXgiLCJpbmRleCQwIiwiZmlsZW5hbWUkMCIsImluZGV4X3N0cmluZyIsImluZGV4JDEiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nIiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiY29tcGxldGVfdGFncyIsInVzZWQiLCJsaW5lX251bWJlcl9vcHQiLCJwb3NpdGlvbl9zdGFydCIsImVuZF9vZl9kZWZfZmlsZW5hbWUiLCJsaW5lX251bWJlciIsImZvdW5kIiwicmVxIiwiZHJvcHBlZCIsImRlc2NyJDEiLCJzdWJzdHJpbmciLCJzaG91bGRfcnVuIiwiZGVzY3IkMiIsImNoIiwicmVzdWx0JDAiLCJjYW1sX3JhbmRvbV9zdGF0ZSIsImJhc2VfcmFuZG9tX3N0YXRlIiwicmVzdWx0IiwiYmFja3RyYWNlJDAiLCJleG5fc3RyIiwic2VwIiwic2V0X2xpYl9hbmRfcGFydGl0aW9uIiwic3RhdGljX2xpYiIsIndoaWNoX3Rlc3RzIiwicmVxdWlyZXNfcGFydGl0aW9uIiwidW5zZXRfbGliIiwidGVzdCIsImIiLCJ0ZXN0X3VuaXQiLCJ0ZXN0X21vZHVsZSIsInBhcnRpYWxfdGFncyIsInByZXYiLCJ4IiwiZSQwIiwiZSIsInN1bW1hcml6ZSIsImsiLCJhY2MiLCJjb3VudCIsImNvdW50X3Rlc3RfbW9kdWxlcyIsInVudXNlZF90ZXN0cyIsImVycm9ycyIsInVzZV9jb2xvciQwIiwiaW5fcGxhY2UkMCIsImRpZmZfY29tbWFuZCQwIiwiZGlmZl9wYXRoX3ByZWZpeCQwIiwic291cmNlX3RyZWVfcm9vdCQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJsaXN0JDAiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxlZnRfY29sdW1uX3dpZHRoIiwid2lkdGgiLCJsZWZ0IiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwiY29udiIsIngiLCJsaWZ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJ1aWQiLCJuZXh0IiwibmFtZSIsImNvZGUiLCJoYXNoIiwic3RhdGljJDAiLCJjb21wYXJlJDAiLCJrMSIsImsyIiwiY21wIiwiYiQwIiwiYSQwIiwieXMiLCJ5IiwieHMiLCJuIiwiZXF1YWwkMCIsImhhc2gkMCIsInN0YXRpYyQxIiwia2V5IiwidCIsInVpZCQwIiwibmFtZSQwIiwiY3JlYXRlIiwic2FtZSIsIm5tMSIsIm5tMiIsInNhbWVfd2l0bmVzcyIsInNhbWVfd2l0bmVzc19leG4iLCJpbnQkMCIsIm1lbSIsInRhYmxlIiwic2V0IiwiZGF0YSIsImZpbmQiLCJkYXRhJDAiLCJmYWlsIiwidWlkX2EiLCJ1aWRfYiIsIm1zZyIsInQkMCIsIndpdG5lc3MiLCJ0eXBlbmFtZV9vZl90IiwiYyIsImQiLCJlIiwibGFiZWwiLCJhcml0eSIsImFyZ3NfbGFiZWxzIiwiaW5kZXgiLCJvY2FtbF9yZXByIiwidHlpZCIsInRyYXZlcnNlIiwiaW50ZXJuYWxfdXNlX29ubHkiLCJsZW5ndGgiLCJ0YWciLCJpc19wb2x5bW9ycGhpYyIsInZhbHVlIiwiZm9sZCIsImluaXQiLCJmIiwiaW50ZXJuYWxfdXNlX29ubHkkMCIsImxhYmVsJDAiLCJpbmRleCQwIiwiZ2V0IiwiaXNfbXV0YWJsZSIsInR5aWQkMCIsInRyYXZlcnNlJDAiLCJpbnRlcm5hbF91c2Vfb25seSQxIiwidHlwZW5hbWVfb2ZfdCQwIiwibGVuZ3RoJDAiLCJmaWVsZCIsImhhc19kb3VibGVfYXJyYXlfdGFnIiwiY3JlYXRlJDAiLCJmb2xkJDAiLCJpbnRlcm5hbF91c2Vfb25seSQyIiwibmFtZSQxIiwibmFtZSQyIiwibmFtZSQzIiwibmFtZSQ0IiwibmFtZSQ1IiwibmFtZSQ2IiwibmFtZSQ3IiwibmFtZSQ4IiwibmFtZSQ5IiwibmFtZSQxMCIsIm5hbWUkMTEiLCJuYW1lJDEyIiwibmFtZSQxMyIsIm5hbWUkMTQiLCJuYW1lJDE1IiwibmFtZSQxNiIsIm5hbWUkMTciLCJuYW1lJDE4IiwibmFtZSQxOSIsInR5cGVuYW1lX29mX2ludCIsInR5cGVuYW1lX29mX2ludDMyIiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9uYXRpdmVpbnQiLCJ0eXBlbmFtZV9vZl9jaGFyIiwidHlwZW5hbWVfb2ZfZmxvYXQiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl91bml0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfZnVuY3Rpb24iLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJyZXAiLCJyZXAkMCIsInJlcCQxIiwicmVwJDIiLCJyZXAkMyIsInJlcCQ0IiwibmFtZSQyMCIsImFyaXR5JDAiLCJjJDAiLCJiJDEiLCJhJDEiLCJkJDAiLCJjJDEiLCJiJDIiLCJhJDIiLCJ0eXBlbmFtZV9vZl90JDEiLCJybmciLCJkb20iLCJyZXAkNSIsInJlcCQ2IiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwicjEiLCJyMiQwIiwicjEkMCIsInIyJDEiLCJ4JDAiLCJyMSQxIiwicjIkMiIsIngkMSIsInIxJDIiLCJyMiQzIiwieCQyIiwicjEkMyIsInIyJDQiLCJ4JDMiLCJybmcxIiwiZG9tMSIsInJuZzIiLCJkb20yIiwidDEkMSIsInQyJDIiLCJiMiIsImEyIiwiYjEiLCJhMSIsImMyIiwiYjIkMCIsImEyJDAiLCJjMSIsImIxJDAiLCJhMSQwIiwiZDIiLCJjMiQwIiwiYjIkMSIsImEyJDEiLCJkMSIsImMxJDAiLCJiMSQxIiwiYTEkMSIsImUyIiwiZDIkMCIsImMyJDEiLCJiMiQyIiwiYTIkMiIsImUxIiwiZDEkMCIsImMxJDEiLCJiMSQyIiwiYTEkMiIsInIxJDQiLCJyMiQ1IiwicjEkNSIsInIyJDYiLCJuYW1lMSIsInIyJDciLCJuYW1lMiIsInIxJDciLCJ4JDQiLCJ0MSQzIiwidDIkMyIsInQyJDQiLCJyMSQ2IiwidDEkMiIsInIyIiwidDIkMSIsInByb29mIiwiaGVhZCIsInQkMSIsInR5cGVyZXBfb2ZfaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2Zfb3B0aW9uIiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9hcnJheSIsInR5cGVyZXBfb2ZfbGF6eV90IiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl90dXBsZTIiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTUiLCJ0eXBlcmVwX29mX2ludDMyIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl90dXBsZTAiLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfaW50NjMiLCJyZXByX29mX3BvbHlfdmFyaWFudCIsInZhcmlhbnQiLCJzaXplIiwicmVwciIsImhhc2hfdmFyaWFudCIsInMiLCJhY2N1IiwiaSIsImRvdWJsZV9hcnJheV92YWx1ZSIsImRvdWJsZSQwIiwic2ltcGxlIiwibWFwX3ZhcmlhbnQiLCJtYXAiLCJ0eXBlbmFtZSIsInBvbHltb3JwaGljIiwidGFncyIsInRhZyQwIiwiZmN0IiwiayIsImF0YWciLCJidGFnIiwibWFwX3JlY29yZCIsInJlY29yZCIsImZpZWxkcyIsImZpZWxkJDAiLCJnZXQkMCIsImFmaWVsZCIsImJmaWVsZCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwic2hhcmVkIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXB1dGF0aW9uIiwiY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UiLCJzaGFyZSIsInJlcXVpcmVkIiwidGFibGUkMCIsImNoZWNrX2RlcGVuZGVuY2llcyIsImltcGxlbWVudHMkMCIsIm1lc3NhZ2UiLCJyZXBsYWNlJDAiLCJtZW0kMCIsInRhYmxlMCIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInRhYmxlNSIsImlzX3JlZ2lzdGVyZWQiLCJpZGVudCIsInVuaXQiLCJyZWdpc3RlcjAiLCJjb21wdXRlIiwicmVnaXN0ZXIxIiwicmVnaXN0ZXIyIiwicmVnaXN0ZXIzIiwicmVnaXN0ZXI0IiwicmVnaXN0ZXI1IiwicmVnaXN0ZXIiLCJ0eXBlcmVwX29mX2EiLCJvZl90eXBlcmVwIiwiY29udGV4dCIsIm1lbW9fdGFibGUiLCJyZXAkMTEiLCJyZXAkMTIiLCJyZXAkMTMiLCJyZXAkMTQiLCJyZXAkMTUiLCJ0dXBsZSIsInJhIiwicmIiLCJyYSQwIiwicmIkMCIsInJjIiwicmEkMSIsInJiJDEiLCJyYyQwIiwicmQiLCJyYSQyIiwicmIkMiIsInJjJDEiLCJyZCQwIiwicmUiLCJjb250ZW50IiwibmFtZWQiLCJjdXN0b20iLCJjdXN0b20kMCIsImN1c3RvbSQxIiwicmVwJDciLCJjdXN0b20kMiIsImN1c3RvbSQzIiwicmVwJDgiLCJjdXN0b20kNCIsImN1c3RvbSQ1IiwicmVwJDkiLCJ0eXBlbmFtZV9vZl90JDIiLCJjdXN0b20kNiIsImN1c3RvbSQ3IiwicmVwJDEwIiwidHlwZW5hbWVfb2ZfdCQzIiwiY3VzdG9tJDgiLCJjdXN0b20kOSIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInR5cGVuYW1lX29mX25hbWVkIiwib2ZfcDEiLCJvZl9wMiIsIm9mX3AzIiwib2ZfcDQiLCJvZl9wNSIsInR5cGVyZXBfb2ZfdCIsImVycm9yX3NvdXJjZV8wMDIiLCJoYXNoX2ZvbGRfdCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiZXF1YWwiLCJyZWxhdGl2ZV90byIsImRpciIsInQiLCJ2IiwiZXhuJDAiLCJleG4iLCJkaXJfb3JfZXJyb3IiLCJpbml0aWFsX2RpciIsInRfb2Zfc2V4cCQwIiwieF8wMDMiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwibGluZV9zdGFydCIsImxpbmVfbnVtYmVyIiwiZmlsZW5hbWUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDEzIiwic3RhcnRfcG9zXzAxMSIsImxpbmVfc3RhcnRfMDA5IiwibGluZV9udW1iZXJfMDA3IiwiZmlsZW5hbWVfMDA1IiwiYXJnXzAxNCIsImJuZHNfMDA0IiwiYXJnXzAxMiIsImJuZHNfMDA0JDAiLCJhcmdfMDEwIiwiYm5kc18wMDQkMSIsImFyZ18wMDgiLCJibmRzXzAwNCQyIiwiYXJnXzAwNiIsImJuZHNfMDA0JDMiLCJjb21wYXJlJDAiLCJhXzAxNSIsImJfMDE2IiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwib2Zfc291cmNlX2NvZGVfcG9zaXRpb24iLCJwb3MiLCJzZXhwX29mX3QkMSIsImNvbXBhcmUkMiIsInRvX3N0cmluZyQwIiwib2Zfc3RyaW5nJDAiLCJzIiwiaSIsIm9mX2FfMDAxIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJjbXBfYSIsImFfMDA3IiwiYl8wMDgiLCJhXzAwOSIsImJfMDEwIiwiYV8wMTEiLCJiXzAxMiIsImFfMDEzIiwiYl8wMTQiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiYW1fcnVubmluZ19leHBlY3RfdGVzdCIsImdldF9jdXJyZW50Iiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0IiwibG9jYXRpb24iLCJwb3MiLCJwcmV2X3BvcyIsInByZXZfcG9zJDAiLCJsZW4iLCJmbHVzaCIsInNhdmVfYW5kX3JldHVybl9vdXRwdXQiLCJpbnN0YW5jZSIsInRlc3RzX3J1biQwIiwiZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIiwicyIsImdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIiwibGFzdF9vZnMiLCJuZXh0X29mcyIsImxvYyIsImFjYyIsIm9mcyIsIm91dHB1dHMiLCJ0cmFpbGluZ19vdXRwdXQiLCJzYXZlX291dHB1dCIsInRyYWlsaW5nIiwiYmxvY2tzIiwicnVuIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4Iiwic2FuaXRpemUiLCJzIiwicnVuIiwiZiIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzIiwidG9jcyQwIiwidG9jIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJnZXRfbWFueSIsInN0YWNrJDAiLCJzdGFjayIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImMkMSIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJjJDIiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5YWN0IiwiY2FtbF9wYXJzZXJfZW52IiwiXzIiLCJfMSIsInl5dGFibGVzIiwic2V4cCIsImxleGZ1biIsImxleGJ1ZiIsInNleHBfb3B0Iiwic2V4cHMiLCJyZXZfc2V4cHMiLCJzZXhwc19hYnMiLCJvY2FtbF9sZXhfdGFibGVzIiwiYnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJzY2FuX3N0cmluZyIsImxvY3MiLCJsb2NzJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsIm9jYW1sX2xleF9zdGF0ZSQyIiwibG9jcyQxIiwibG9jcyQyIiwic3RhcnQiLCJnZW5fbG9hZF9zZXhwX2xvYyIsInVuaXQiLCJvZl9pbnRfc3R5bGUiLCJvZl9mbG9hdF9zdHlsZSIsInRvX3N0cmluZyIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsInBwIiwicHBfbWFjaCIsInBwX2h1bV9pbmRlbnQiLCJwcF9odW0iLCJkZWZhdWx0X2luZGVudCIsIm1lc3NhZ2UiLCJjb21wYXJlIiwiZXF1YWwiLCJ0X3NleHBfZ3JhbW1hciIsIndpdGhfbmV3X2J1ZmZlciIsIm9jIiwib3V0cHV0X2h1bSIsIm91dHB1dF9odW1faW5kZW50IiwiaW5kZW50Iiwib3V0cHV0X21hY2giLCJwcm5nIiwidGVtcF9maWxlX25hbWUiLCJwcmVmaXgiLCJzdWZmaXgiLCJ2IiwicmFuZF9zdGF0ZSIsInJldCIsInJuZCIsIm9wZW5fdGVtcF9maWxlIiwicGVybSIsImNvdW50ZXIiLCJuYW1lIiwiZSQwIiwiZSIsImNvdW50ZXIkMCIsInNhdmVfb2Zfb3V0cHV0Iiwib3V0cHV0X2Z1bmN0aW9uIiwiZmlsZSIsInRtcF9uYW1lIiwib3V0cHV0X3NleHBfbmwiLCJkb19vdXRwdXQiLCJzYXZlX2h1bSIsInNhdmVfbWFjaCIsIm91dHB1dF9zZXhwc19ubCIsInNhdmVfc2V4cHNfaHVtIiwic2F2ZV9zZXhwc19tYWNoIiwic2Nhbl9zZXhwIiwic2Nhbl9zZXhwX29wdCIsInNjYW5fc2V4cHMiLCJzY2FuX3Jldl9zZXhwcyIsImdldF9tYWluX2J1ZiIsImJ1ZiQwIiwiYnVmJDEiLCJzY2FuX2ZvbGRfc2V4cHMiLCJpbml0IiwibWFpbiIsImFjYyIsImFjYyQwIiwic2Nhbl9pdGVyX3NleHBzIiwic2Nhbl9zZXhwc19jb252IiwiY29sbCIsInNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlIiwiY29udGFpbmluZ19zZXhwIiwibG9jYXRpb24iLCJpbnZhbGlkX3NleHAiLCJleG4iLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJnZXRfc2V4cCIsImdldF9yYW5nZSIsInJhbmdlIiwic2V4cF9vZl9jb252Iiwic2V4cF9vZl9hIiwiYSIsImZpbmRfc2V4cCIsImFubm90X3NleHAiLCJsb29wIiwic3ViX3NleHAiLCJhbm5vdHMiLCJyZXMiLCJleG4kMCIsImludmFsaWRfc2V4cCQwIiwiY3JlYXRlIiwidGV4dF9saW5lIiwidGV4dF9jaGFyIiwiYnVmX3BvcyIsImdsb2JhbF9vZmZzZXQiLCJmYWlsIiwibXNnIiwid2l0aF9idWZfcG9zIiwicGUiLCJwcG9zIiwiYW5ub3RhdGVfc2V4cCIsIml0ZXIiLCJzdGFydF9wb3MkMCIsImFubm90IiwiZW5kX3BvcyQwIiwicmFpc2VfZm91bmQiLCJzdGF0ZSIsInJhaXNlX2ZvdW5kJDAiLCJwb3NpdGlvbnMiLCJwYXJzZV9wb3Nfb2Zfc3RhdGUiLCJydW5fZmVlZF9sb29wIiwic3RhY2siLCJsZW4iLCJzdHIiLCJzdHJfbGVuIiwicG9zX2xlbiIsIm1heF9wb3MiLCJwcmV2aW91c19vZmZzZXQiLCJzdGFjayQwIiwicmVzdWx0Iiwib2Zmc2V0IiwibmV4dF9wb3MiLCJlcnIiLCJwYXJzZV9zdGF0ZSIsInBhcnNlX2Vycm9yIiwidXNlZF9yZWYiLCJwYXJzZV9mdW4iLCJjb250X3N0YXRlIiwicGFyc2UiLCJwYXJzZV9wb3MiLCJsZW4kMCIsInJhaXNlX2ZvdW5kJDEiLCJsZW5ndGgiLCJ1bnNhZmVfZmVlZF9sb29wIiwic3RhY2skMSIsInBvcyQxIiwicGFyc2Vfc3RyIiwicmFpc2VfZm91bmQkMiIsImxlbmd0aCQwIiwidW5zYWZlX2ZlZWRfbG9vcCQwIiwicGFyc2Vfc3RyX2Fubm90IiwicmFpc2VfZm91bmQkMyIsImxlbmd0aCQxIiwidW5zYWZlX2ZlZWRfbG9vcCQxIiwicGFyc2VfYmlnc3RyaW5nIiwicmFpc2VfZm91bmQkNCIsImxlbmd0aCQyIiwidW5zYWZlX2ZlZWRfbG9vcCQyIiwicGFyc2VfYmlnc3RyaW5nX2Fubm90IiwibWtfdGhpc19wYXJzZSIsIm15X3BhcnNlIiwicGFyc2VfcG9zJDAiLCJwYXJzZV9wb3MkMSIsImZlZWRfZW5kX29mX2lucHV0IiwidGhpc19wYXJzZSIsIndzX2J1ZiIsImdlbl9pbnB1dF9zZXhwIiwiaWMiLCJ0aGlzX3BhcnNlJDEiLCJzZXhwJDAiLCJ0aGlzX3BhcnNlJDAiLCJpbnB1dF9zZXhwIiwiZ2VuX2lucHV0X3Jldl9zZXhwcyIsInJldl9zZXhwc19yZWYiLCJidWZfbGVuIiwibGVuJDIiLCJ0aGlzX3BhcnNlJDIiLCJuX3BhcnNlZCIsIm5ld19sZW4iLCJsZW4kMSIsImlucHV0X3Jldl9zZXhwcyIsImlucHV0X3NleHBzIiwib2Zfc3RyaW5nX2JpZ3N0cmluZyIsImxvYyIsImdldF9sZW4iLCJnZXRfc3ViIiwiY29udF9zdGF0ZV9zdHIiLCJvZl9zdHJpbmciLCJvZl9zdHJpbmdfbWFueSIsImdldF9ic3RyX3N1Yl9zdHIiLCJic3RyIiwiaSIsImJzdHJfd3NfYnVmIiwib2ZfYmlnc3RyaW5nIiwiZ2VuX2xvYWRfcmV2X3NleHBzIiwiZXhjJDAiLCJleGMiLCJsb2FkX3Jldl9zZXhwcyIsImxvYWRfc2V4cHMiLCJnZW5fbG9hZF9zZXhwIiwic3RyaWN0IiwidGhpc19wYXJzZSQ0Iiwic2V4cCQxIiwidGhpc19wYXJzZSQzIiwiY29udF9zdGF0ZSQwIiwibG9hZF9zZXhwIiwiZ2V0X3NleHAkMCIsImdldF9yYW5nZSQwIiwic2V4cF9vZl9jb252JDAiLCJmaW5kX3NleHAkMCIsImlucHV0X3Jldl9zZXhwcyQwIiwiaW5wdXRfc2V4cCQwIiwiaW5wdXRfc2V4cHMkMCIsIm9mX3N0cmluZyQwIiwib2ZfYmlnc3RyaW5nJDAiLCJsb2FkX3Jldl9zZXhwcyQwIiwibG9hZF9zZXhwcyQwIiwibG9hZF9zZXhwJDAiLCJjb252IiwiYmFkX3NleHAiLCJiYWRfYW5ub3Rfc2V4cCIsImdldF9jb252X2V4biIsImxpbmUiLCJsb2FkX3NleHBfY29udiIsInN0cmljdCQwIiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzJDAiLCJmb3JnZXRfdG9jcyIsImZvcmdldF90b2MkMCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfb2Zfc2V4cCIsImZsb2F0X3ZlY19vZl9zZXhwIiwiZW1wdHlfZmxvYXRfdmVjIiwiY3JlYXRlX2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdDMyX3ZlYyIsImNyZWF0ZV9mbG9hdDY0X3ZlYyIsImVtcHR5X2Zsb2F0MzJfdmVjIiwiZW1wdHlfZmxvYXQ2NF92ZWMiLCJmbG9hdDMyX3ZlY19vZl9zZXhwIiwiZmxvYXQ2NF92ZWNfb2Zfc2V4cCIsInZlY19vZl9zZXhwIiwiY2hlY2tfdG9vX211Y2hfZGF0YSIsImRhdGEiLCJmbG9hdF9tYXRfb2Zfc2V4cCIsImNyZWF0ZV9mbG9hdF9tYXQiLCJzbiIsInNtIiwiZGF0YSQwIiwiZGF0YSQxIiwiY29sJDAiLCJjcmVhdGVfZmxvYXQzMl9tYXQiLCJjcmVhdGVfZmxvYXQ2NF9tYXQiLCJmbG9hdDMyX21hdF9vZl9zZXhwIiwiZmxvYXQ2NF9tYXRfb2Zfc2V4cCIsIm1hdF9vZl9zZXhwIiwic3RyaW5nX29mX29mX3NleHBfb2YiLCJ0b19zZXhwIiwib2Zfc3RyaW5nX29mX29mX3NleHAiLCJvZl9zZXhwIiwidF9vZl9zZXhwIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdW5pdCIsInVuaXRfb2Zfc2V4cCIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9ib29sIiwiYm9vbF9vZl9zZXhwIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfY2hhciIsImNoYXJfb2Zfc2V4cCIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQiLCJpbnRfb2Zfc2V4cCIsImludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsImZsb2F0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X29mX3NleHAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9vZl9zZXhwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfcmVmIiwicmVmX29mX3NleHAiLCJyZWZfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfb2Zfc2V4cCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9hcnJheSIsImFycmF5X29mX3NleHAiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImV4bl9zZXhwX2dyYW1tYXIiLCJjb2VyY2UiLCJ0YWciLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwicmVwciIsInNleHAxIiwicmVnaXN0ZXIyIiwic2V4cF9vZl9hcmcyIiwic2V4cDIiLCJyZWdpc3RlcjMiLCJzZXhwX29mX2FyZzMiLCJzZXhwMyIsInJlZ2lzdGVyNCIsInNleHBfb2ZfYXJnNCIsInNleHA0IiwicmVnaXN0ZXI1Iiwic2V4cF9vZl9hcmc1Iiwic2V4cDUiLCJyZWdpc3RlcjYiLCJzZXhwX29mX2FyZzYiLCJzZXhwNiIsInJlZ2lzdGVyNyIsInNleHBfb2ZfYXJnNyIsInNleHA3IiwicmVnaXN0ZXI4Iiwic2V4cF9vZl9hcmc4Iiwic2V4cDgiLCJyZWdpc3RlcjkiLCJzZXhwX29mX2FyZzkiLCJzZXhwOSIsInJlZ2lzdGVyMTAiLCJzZXhwX29mX2FyZzEwIiwic2V4cDEwIiwiaW50NjQkMCIsImdvbGRlbl9nYW1tYSIsInBvcGNvdW50Iiwib2ZfaW50Iiwic2VlZCIsImNvcHkiLCJvZGRfZ2FtbWEiLCJtaXhfYml0cyIsInoiLCJuIiwibWl4NjQiLCJ6JDAiLCJ6JDEiLCJuZXh0X3NlZWQiLCJ0IiwibmV4dCIsIm9mX3NlZWRfYW5kX2dhbW1hIiwiZ2FtbWEiLCJzZWVkJDAiLCJyYW5kb21faW50NjQiLCJyYW5kb21fc3RhdGUiLCJjcmVhdGUiLCJzcGxpdCIsIm5leHRfaW50NjQiLCJwZXJ0dXJiIiwic2FsdCIsImJvb2wiLCJzdGF0ZSIsIngiLCJpbnQ2NCIsImxvIiwiaGkiLCJyZW1haW5kZXJfbWF4aW11bSIsImRyYXckMCIsInJlbWFpbmRlciIsImRyYXdfbWF4aW11bSIsImRyYXciLCJpbnQkMCIsImxvJDAiLCJoaSQwIiwiaW50MzIiLCJuYXRpdmVpbnQiLCJpbnQ2MyIsImRvdWJsZV91bHAiLCJ1bml0X2Zsb2F0X2Zyb21faW50NjQiLCJ1bml0X2Zsb2F0IiwiZmxvYXQkMCIsInJhbmdlIiwibWlkIiwiZiIsImJpdHNfdG9fcmVwcmVzZW50IiwidCQwIiwibG9nX3VuaWZvcm0iLCJtaW5fYml0cyIsIm1heF9iaXRzIiwiYml0cyIsInRfc2V4cF9ncmFtbWFyIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsIm9mX2ludF9leG4iLCJ0b19pbnRfZXhuIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwidF9vZl9zZXhwIiwic2V4cF9vZl90Iiwib2Zfc3RyaW5nIiwidG9fc3RyaW5nIiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsInNpZ24iLCJpbnZhcmlhbnQiLCJvZl9zdHJpbmdfb3B0IiwidG9fc3RyaW5nX2h1bSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsImRlY3IiLCJpbmNyIiwib2ZfaW50MzJfZXhuIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50X2V4biIsIm9mX2Zsb2F0X3VuY2hlY2tlZCIsIm51bV9iaXRzIiwibWF4X3ZhbHVlIiwibWluX3ZhbHVlIiwic2hpZnRfcmlnaHRfbG9naWNhbCIsImNlaWxfcG93MiIsImZsb29yX3BvdzIiLCJjZWlsX2xvZzIiLCJmbG9vcl9sb2cyIiwiaXNfcG93MiIsImNseiIsImN0eiIsInN5bWJvbCIsImxub3QiLCJhYnMiLCJ6ZXJvIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDMiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzMyIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM0Iiwic3ltYm9sJDM1Iiwic3ltYm9sJDM2IiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5Iiwic3VtIiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwicmVjX2xpc3QiLCJ3IiwibiIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm1pbl9sZW5ndGgiLCJtYXhfbGVuZ3RoIiwidXBwZXJfYm91bmQiLCJtYXhfbGVuZ3RoJDAiLCJsZW4iLCJyZW1haW5pbmciLCJtYXhfaW5kZXgiLCJ1bml0IiwiYm9vbCIsIm9wdGlvbiIsInZhbHVlX3QiLCJlaXRoZXIiLCJmc3RfdCIsInNuZF90IiwicmVzdWx0Iiwib2tfdCIsImVycl90Iiwib2siLCJlcnIiLCJsaXN0X2dlbmVyaWMiLCJlbHRfZ2VuIiwibGlzdF9ub25fZW1wdHkiLCJsaXN0X3dpdGhfbGVuZ3RoIiwibGVuZ3RoIiwibGlzdF9maWx0ZXJlZCIsImVsdHMiLCJlbHRzJDAiLCJsZW5ndGhfb2ZfaW5wdXQiLCJsZW5ndGhfb2Zfb3V0cHV0IiwiaW5kaWNlcyIsImxpc3RfcGVybXV0YXRpb25zIiwicmVmIiwiY2hhcl91bmlmb3JtX2luY2x1c2l2ZSIsImNoYXJfdXBwZXJjYXNlIiwiY2hhcl9sb3dlcmNhc2UiLCJjaGFyX2RpZ2l0IiwiY2hhcl9wcmludF91bmlmb3JtIiwiY2hhcl91bmlmb3JtIiwiY2hhcl9hbHBoYSIsImNoYXJfYWxwaGFudW0iLCJjaGFyX3doaXRlc3BhY2UiLCJjaGFyX3ByaW50IiwiY2hhciQwIiwic21hbGxfaW50IiwiYWxsb3dfemVybyIsImxvd2VyX2JvdW5kIiwid2VpZ2h0ZWRfbG93Iiwid2VpZ2h0ZWRfaGlnaCIsInNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50Iiwic21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IiwiZ2VvbWV0cmljIiwicCIsImRlbm9taW5hdG9yIiwidW5pZm9ybSIsImV4cG9uZW50aWFsIiwiZmxvYXQkMCIsImludCQwIiwiaW50JDEiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsImxvZ191bmlmb3JtIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2dlb21ldHJpYyIsInVuaWZvcm0kMCIsImxvZ191bmlmb3JtJDAiLCJpbnQzMiIsImludDMyX3VuaWZvcm0iLCJpbnQzMl9pbmNsdXNpdmUiLCJpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSIsImludDMyX2xvZ19pbmNsdXNpdmUiLCJpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQzMl9nZW9tZXRyaWMiLCJ1bmlmb3JtJDEiLCJsb2dfdW5pZm9ybSQxIiwiaW50NjMiLCJpbnQ2M191bmlmb3JtIiwiaW50NjNfaW5jbHVzaXZlIiwiaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQ2M19sb2dfaW5jbHVzaXZlIiwiaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjNfZ2VvbWV0cmljIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDIiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzNiIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5IiwidW5pZm9ybSQyIiwibG9nX3VuaWZvcm0kMiIsImludDY0IiwiaW50NjRfdW5pZm9ybSIsImludDY0X2luY2x1c2l2ZSIsImludDY0X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjRfbG9nX2luY2x1c2l2ZSIsImludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2dlb21ldHJpYyIsInVuaWZvcm0kMyIsImxvZ191bmlmb3JtJDMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfdW5pZm9ybSIsIm5hdGl2ZWludF9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSIsIm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdiIsIm5hdGl2ZWludF9nZW9tZXRyaWMiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X25vcm1hbF9tYW50aXNzYSIsIm51bV9iaXRzIiwiYml0cyIsImZsb2F0X2V4cG9uZW50IiwiZmxvYXRfemVybyIsImxldF9zeW50YXhfMDEyIiwibGV0X3N5bnRheF8wMTMiLCJmbG9hdF9zdWJub3JtYWwiLCJtYW50aXNzYSIsImV4cG9uZW50IiwiZmxvYXRfbm9ybWFsIiwiZmxvYXRfaW5maW5pdGUiLCJsZXRfc3ludGF4XzAyMSIsImxldF9zeW50YXhfMDIyIiwiZmxvYXRfbmFuIiwiZmxvYXRfb2ZfY2xhc3MiLCJjIiwiZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyIsImZsb2F0X2Zpbml0ZSIsImZsb2F0X3dpdGhvdXRfbmFuIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiZWRpdF9pbnNlcnQiLCJwb3MiLCJzdHIiLCJlZGl0Iiwibl90aW1lcyIsInN0cmluZ19saWtlIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJiaWdhcnJheTJfZGltIiwibWF4X3RvdGFsX3NpemUiLCJhIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImIiLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsImRpbTIkMCIsInYiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImRyb3Bfa2V5cyIsImsiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsImhhbmRsZXJzIiwia2V5IiwiaW5wIiwiY2FsbGJhY2siLCJ2YWx1ZSIsImluamVjdCIsInYiLCJjYWxsZWQiLCJjYWxsYmFjayQwIiwiYSIsImhhbmRsZSIsInMiLCJwcmludF9zIiwiTmV2ZXIiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm9mX2Z1biIsImxhenkiLCJtYXAiLCJldmFsJDAiLCJ0JDAiLCJ0JDEiLCJsIiwiZiQwIiwidCQyIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDIiLCJoYW5kbGUkMCIsImhhbmRsZSQxIiwib25fcmVzcG9uc2UiLCJvZl9zeW5jX2Z1biIsIm1ha2UiLCJyZXF1ZXN0IiwicmVzcG9uZF90byIsInJlc3BvbnNlIiwibWFrZSQwIiwiZXZhbHVhdG9yIiwiY3JlYXRlIiwidXBvbiIsImhhbmRsZXIiLCJtYXRjaCIsIngiLCJmaWxsX2lmX2VtcHR5IiwicGVlayIsImhhbmRsZSQyIiwib2Zfc3Zhcl9mdW4iLCJjcmVhdGUkMCIsInF1ZXJpZXNfcGVuZGluZ19yZXNwb25zZSIsInF1ZXJ5IiwibWF5YmVfcmVzcG9uZCIsInJlc3AiLCJvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIiwicXJ0IiwibW9kX25hbWUiLCJtb2RfbmFtZSQwIiwibW9kX25hbWUkMSIsIm1vZF9uYW1lJDIiLCJtb2RfbmFtZSQzIiwibW9kX25hbWUkNCIsIm1vZF9uYW1lJDUiLCJtb2RfbmFtZSQ2IiwibW9kX25hbWUkNyIsIm1vZF9uYW1lJDgiLCJtb2RfbmFtZSQ5IiwibWF4X3ZhbHVlJDEyIiwibW9kX25hbWUkMTAiLCJyYWlzZV9jYW5ub3RfcmVwciIsInRvX3N0cmluZyIsIngiLCJ0cnVuY191bnNpZ25lZCIsImNvbnYiLCJsb2dhbmQiLCJtYXNrIiwiZXhuX3Vuc2lnbmVkIiwiZXF1YWwiLCJ5IiwidHJ1bmNfc2lnbmVkIiwic2hpZnRfbGVmdCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnQiLCJleG5fc2lnbmVkIiwiaWRlbnRpdHlfaWZfcG9zaXRpdmUiLCJncmVhdGVyX2VxdWFsIiwiemVybyIsIm9mX3NleHBfZXJyb3IiLCJ3aGF0Iiwic2V4cCIsInRvX2ludDMyIiwidG9faW50NjQiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJmdW5jIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsInR5cGVuYW1lX29mX3QiLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJ0cnVuYyIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwieCQwIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwibG9nYW5kNjQiLCJtYXNrNjQiLCJlcXVhbCQwIiwiZXF1YWw2NCIsInRvX3N0cmluZyQwIiwidG9fc3RyaW5nNjQiLCJ0cnVuYyQwIiwiZXhuIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50X2V4biQwIiwidG9fYmFzZV9pbnQkMCIsIm9mX3VpbnQxNl90cnVuYyIsIm9mX3VpbnQxNl9leG4iLCJvZl91aW50MzJfdHJ1bmMiLCJvZl91aW50MzJfZXhuIiwib2ZfdWludDYzX3RydW5jIiwib2ZfdWludDYzX2V4biIsIm9mX3VpbnQ2NF90cnVuYyIsIm9mX3VpbnQ2NF9leG4iLCJvZl9pbnQ4X3dyYXAiLCJvZl9pbnQ4X2V4biIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJxdWlja2NoZWNrX29ic2VydmVyJDAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJzeW1ib2wkMjkiLCJzeW1ib2wkMzAiLCJjb21wYXJlJDMiLCJoYXNoX2ZvbGRfdCQxIiwiZnVuYyQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwidHlwZW5hbWVfb2ZfdCQxIiwiemVybyQxIiwibWluX3ZhbHVlJDEiLCJtYXhfdmFsdWUkMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJ0cnVuYyQxIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50X2V4biQxIiwidG9fYmFzZV9pbnQkMSIsIm9mX2ludDgiLCJvZl9pbnQzMl90cnVuYyQwIiwib2ZfaW50MzJfZXhuJDAiLCJvZl9pbnQ2M190cnVuYyQwIiwib2ZfaW50NjNfZXhuJDAiLCJvZl9pbnQ2NF90cnVuYyQwIiwib2ZfaW50NjRfZXhuJDAiLCJvZl91aW50MTZfd3JhcCIsIm9mX3VpbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJjb21wYXJlJDUiLCJoYXNoX2ZvbGRfdCQyIiwiZnVuYyQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwidHlwZW5hbWVfb2ZfdCQyIiwiemVybyQyIiwibWluX3ZhbHVlJDIiLCJtYXhfdmFsdWUkMiIsImNvbnYkMCIsImxvZ2FuZCQwIiwibG9nYW5kNjQkMCIsIm1hc2skMCIsIm1hc2s2NCQwIiwiZXF1YWwkMiIsImVxdWFsNjQkMCIsInRvX3N0cmluZyQyIiwidG9fc3RyaW5nNjQkMCIsInRydW5jJDIiLCJleG4kMCIsIm9mX2Jhc2VfaW50X3RydW5jJDIiLCJvZl9iYXNlX2ludF9leG4kMiIsInRvX2Jhc2VfaW50JDIiLCJvZl91aW50OCIsIm9mX3VpbnQzMl90cnVuYyQwIiwib2ZfdWludDMyX2V4biQwIiwib2ZfdWludDYzX3RydW5jJDAiLCJvZl91aW50NjNfZXhuJDAiLCJvZl91aW50NjRfdHJ1bmMkMCIsIm9mX3VpbnQ2NF9leG4kMCIsIm9mX2ludDE2X3dyYXAiLCJvZl9pbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDIiLCJxdWlja2NoZWNrX3Nocmlua2VyJDIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJzeW1ib2wkNTUiLCJzeW1ib2wkNTYiLCJzeW1ib2wkNTciLCJzeW1ib2wkNTgiLCJzeW1ib2wkNTkiLCJzeW1ib2wkNjAiLCJzeW1ib2wkNjEiLCJzeW1ib2wkNjIiLCJjb21wYXJlJDciLCJoYXNoX2ZvbGRfdCQzIiwiZnVuYyQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsInR5cGVyZXBfb2ZfdCQzIiwidHlwZW5hbWVfb2ZfdCQzIiwiemVybyQzIiwibWluX3ZhbHVlJDMiLCJtYXhfdmFsdWUkMyIsInNoaWZ0X2xlZnQkMSIsInNoaWZ0X3JpZ2h0JDEiLCJzaGlmdCQxIiwidG9fc3RyaW5nJDMiLCJ0cnVuYyQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwibG9nYW5kJDEiLCJsb2dhbmQ2NCQxIiwibWFzayQxIiwibWFzazY0JDEiLCJlcXVhbCQ0IiwiZXF1YWw2NCQxIiwidG9fc3RyaW5nJDQiLCJ0b19zdHJpbmc2NCQxIiwidHJ1bmMkNCIsImV4biQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsIm9mX2Jhc2VfaW50X2V4biQzIiwidG9fYmFzZV9pbnRfZXhuIiwib2ZfdWludDgkMCIsIm9mX3VpbnQxNiIsIm9mX3VpbnQ2M190cnVuYyQxIiwib2ZfdWludDYzX2V4biQxIiwib2ZfdWludDY0X3RydW5jJDEiLCJvZl91aW50NjRfZXhuJDEiLCJvZl9pbnQzMl93cmFwIiwib2ZfaW50MzJfZXhuJDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ0IiwicXVpY2tjaGVja19vYnNlcnZlciQ0IiwicXVpY2tjaGVja19zaHJpbmtlciQ0Iiwic3ltYm9sJDg1Iiwic3ltYm9sJDg2Iiwic3ltYm9sJDg3Iiwic3ltYm9sJDg4Iiwic3ltYm9sJDg5Iiwic3ltYm9sJDkwIiwic3ltYm9sJDkxIiwic3ltYm9sJDkyIiwic3ltYm9sJDkzIiwic3ltYm9sJDk0IiwiY29tcGFyZSQxMSIsImhhc2hfZm9sZF90JDUiLCJmdW5jJDUiLCJoYXNoJDUiLCJ0X29mX3NleHAkNSIsInNleHBfb2ZfdCQ1IiwicXVpY2tjaGVja19nZW5lcmF0b3IkNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNSIsInR5cGVyZXBfb2ZfdCQ1IiwidHlwZW5hbWVfb2ZfdCQ1IiwiemVybyQ1IiwibWluX3ZhbHVlJDUiLCJtYXhfdmFsdWUkNSIsInRvX3N0cmluZyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2Iiwib2ZfYmFzZV9pbnQzMl90cnVuYyQwIiwib2ZfYmFzZV9pbnQzMl9leG4kMCIsInRvX2Jhc2VfaW50MzJfdHJ1bmMkMCIsInRvX2Jhc2VfaW50MzJfZXhuJDAiLCJvZl9iYXNlX2ludDY0X3RydW5jJDAiLCJvZl9iYXNlX2ludDY0X2V4biQwIiwidG9fYmFzZV9pbnQ2NCQwIiwib2ZfYmFzZV9pbnRfZXhuJDQiLCJ0b19iYXNlX2ludF9leG4kMCIsIm9mX3VpbnQ4JDEiLCJvZl91aW50MTYkMCIsIm9mX3VpbnQ2M190cnVuYyQyIiwib2ZfdWludDYzX2V4biQyIiwib2ZfdWludDY0X3RydW5jJDIiLCJvZl91aW50NjRfZXhuJDIiLCJvZl9pbnQzMl93cmFwJDAiLCJvZl9pbnQzMl9leG4kMiIsInNleHBfb2ZfdCQ2IiwidF9vZl9zZXhwJDYiLCJzIiwic3ltYm9sJDExMSIsInN5bWJvbCQxMTIiLCJzeW1ib2wkMTEzIiwic3ltYm9sJDExNCIsInN5bWJvbCQxMTUiLCJzeW1ib2wkMTE2Iiwic3ltYm9sJDExNyIsInN5bWJvbCQxMTgiLCJzeW1ib2wkMTE5Iiwic3ltYm9sJDEyMCIsInNpZ25lZCIsIm51bV9iaXRzIiwibnVtX2J5dGVzIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJzaWduZWQkMSIsIm51bV9iaXRzJDEiLCJudW1fYnl0ZXMkMSIsInNpZ25lZCQyIiwibnVtX2JpdHMkMiIsIm51bV9ieXRlcyQyIiwic2lnbmVkJDMiLCJudW1fYml0cyQzIiwibnVtX2J5dGVzJDMiLCJzaWduZWQkNCIsIm51bV9iaXRzJDQiLCJudW1fYnl0ZXMkNCIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsImltcGwiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ3IiwicXVpY2tjaGVja19vYnNlcnZlciQ3IiwicXVpY2tjaGVja19zaHJpbmtlciQ3IiwidF9vZl9zZXhwJDciLCJzZXhwX29mX3QkNyIsInR5cGVyZXBfb2ZfdCQ3IiwidHlwZW5hbWVfb2ZfdCQ3Iiwic2lnbmVkJDciLCJudW1fYml0cyQ3IiwibnVtX2J5dGVzJDciLCJ6ZXJvJDciLCJtaW5fdmFsdWUkNyIsIm1heF92YWx1ZSQ3IiwiaGFzaF9mb2xkX3QkNyIsImhhc2gkNyIsInN5bWJvbCQxMjciLCJzeW1ib2wkMTI4Iiwic3ltYm9sJDEyOSIsInN5bWJvbCQxMzAiLCJzeW1ib2wkMTMxIiwic3ltYm9sJDEzMiIsImVxdWFsJDciLCJjb21wYXJlJDE1IiwibWluJDciLCJtYXgkNyIsIm9mX2Jhc2VfaW50MzIkMSIsInRvX2Jhc2VfaW50MzIkMSIsIm9mX2ludDgkMiIsIm9mX2ludDE2JDEiLCJvZl9pbnQ2M190cnVuYyQzIiwib2ZfaW50NjNfZXhuJDMiLCJvZl9pbnQ2NF90cnVuYyQzIiwib2ZfaW50NjRfZXhuJDMiLCJvZl91aW50MzJfd3JhcCQxIiwib2ZfdWludDMyX2V4biQzIiwicXVpY2tjaGVja19nZW5lcmF0b3IkOCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF9vZl90JDgiLCJ0eXBlcmVwX29mX3QkOCIsInR5cGVuYW1lX29mX3QkOCIsInNpZ25lZCQ4IiwibnVtX2JpdHMkOCIsIm51bV9ieXRlcyQ4IiwiemVybyQ4IiwibWluX3ZhbHVlJDgiLCJtYXhfdmFsdWUkOCIsImhhc2hfZm9sZF90JDgiLCJoYXNoJDgiLCJzeW1ib2wkMTMzIiwic3ltYm9sJDEzNCIsInN5bWJvbCQxMzUiLCJzeW1ib2wkMTM2Iiwic3ltYm9sJDEzNyIsInN5bWJvbCQxMzgiLCJlcXVhbCQ4IiwiY29tcGFyZSQxNiIsIm1pbiQ4IiwibWF4JDgiLCJvZl9iYXNlX2ludDMyX3RydW5jJDEiLCJvZl9iYXNlX2ludDMyX2V4biQxIiwidG9fYmFzZV9pbnQzMl90cnVuYyQxIiwidG9fYmFzZV9pbnQzMl9leG4kMSIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50NjRfZXhuJDEiLCJ0b19iYXNlX2ludDY0JDEiLCJvZl9iYXNlX2ludF9leG4kNSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwib2ZfaW50OCQzIiwib2ZfaW50MTYkMiIsIm9mX2ludDMyIiwib2ZfaW50NjRfdHJ1bmMkNCIsIm9mX2ludDY0X2V4biQ0Iiwib2ZfdWludDYzX3dyYXAiLCJvZl91aW50NjNfZXhuJDQiLCJzeW1ib2wkMTQ1Iiwic3ltYm9sJDE0NiIsInN5bWJvbCQxNDciLCJzeW1ib2wkMTQ4Iiwic3ltYm9sJDE0OSIsInN5bWJvbCQxNTAiLCJzeW1ib2wkMTUxIiwic3ltYm9sJDE1MiIsInN5bWJvbCQxNTMiLCJzeW1ib2wkMTU0IiwiaGFzaF9mb2xkX3QkMTAiLCJmdW5jJDgiLCJoYXNoJDEwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTAiLCJxdWlja2NoZWNrX29ic2VydmVyJDEwIiwicXVpY2tjaGVja19zaHJpbmtlciQxMCIsImNvbXBhcmUkMTkiLCJ0eXBlcmVwX29mX3QkMTAiLCJ0eXBlbmFtZV9vZl90JDEwIiwiemVybyQxMCIsIm1pbl92YWx1ZSQxMCIsIm1heF92YWx1ZSQxMCIsImdyZWF0ZXJfZXF1YWwkMiIsInRvX3N0cmluZyQ4Iiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQyIiwib2ZfYmFzZV9pbnQ2NF9leG4kMiIsInRvX2Jhc2VfaW50NjQkMiIsIm9mX3VpbnQ4JDMiLCJvZl91aW50MTYkMiIsIm9mX3VpbnQzMiIsIm9mX3VpbnQ2NF90cnVuYyQ0Iiwib2ZfdWludDY0X2V4biQ0Iiwib2ZfaW50NjNfd3JhcCIsIm9mX2ludDYzX2V4biQ0Iiwic2V4cF9vZl90JDEwIiwidF9vZl9zZXhwJDEwIiwic3ltYm9sJDE1NSIsInN5bWJvbCQxNTYiLCJzeW1ib2wkMTU3Iiwic3ltYm9sJDE1OCIsInN5bWJvbCQxNTkiLCJzeW1ib2wkMTYwIiwic3ltYm9sJDE2MSIsInN5bWJvbCQxNjIiLCJzeW1ib2wkMTYzIiwic3ltYm9sJDE2NCIsImNvbXBhcmUkMjEiLCJoYXNoX2ZvbGRfdCQxMSIsImZ1bmMkOSIsImhhc2gkMTEiLCJ0X29mX3NleHAkMTEiLCJzZXhwX29mX3QkMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDExIiwidHlwZXJlcF9vZl90JDExIiwidHlwZW5hbWVfb2ZfdCQxMSIsInplcm8kMTEiLCJtaW5fdmFsdWUkMTEiLCJtYXhfdmFsdWUkMTEiLCJncmVhdGVyX2VxdWFsJDMiLCJ0b19zdHJpbmckOSIsIm9mX2ludDgkNCIsIm9mX2ludDE2JDMiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMyIsIm9mX2Jhc2VfaW50NjRfZXhuJDMiLCJ0b19iYXNlX2ludDY0X3RydW5jIiwidG9fYmFzZV9pbnQ2NF9leG4iLCJvZl91aW50OCQ0Iiwib2ZfdWludDE2JDMiLCJvZl91aW50MzIkMCIsIm9mX3VpbnQ2MyIsIm9mX2ludDY0X3dyYXAiLCJvZl9pbnQ2NF9leG4kNSIsInNleHBfb2ZfdCQxMiIsInRfb2Zfc2V4cCQxMiIsInN5bWJvbCQxODciLCJzeW1ib2wkMTg4Iiwic3ltYm9sJDE4OSIsInN5bWJvbCQxOTAiLCJzeW1ib2wkMTkxIiwic3ltYm9sJDE5MiIsInN5bWJvbCQxOTMiLCJzeW1ib2wkMTk0Iiwic3ltYm9sJDE5NSIsInN5bWJvbCQxOTYiLCJnZXRfaW50OCIsInQiLCJwb3MiLCJnZXRfdWludDgiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQxNl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQzMl9iZSIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwiZ2V0X3VpbnQ2NF9sZSIsImdldF91aW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfaW50OCIsInNldF91aW50MTZfbGUiLCJzZXRfdWludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDE2X2JlIiwic2V0X2ludDMyX2xlIiwieCQxIiwic2V0X2ludDMyX2JlIiwic2V0X3VpbnQzMl9sZSIsInNldF91aW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDY0X2xlIiwic2V0X3VpbnQ2NF9iZSIsImdldF9pbnQ4JDAiLCJnZXRfdWludDgkMCIsImdldF9pbnQxNl9sZSQwIiwiZ2V0X2ludDE2X2JlJDAiLCJnZXRfdWludDE2X2xlJDAiLCJnZXRfdWludDE2X2JlJDAiLCJnZXRfaW50MzJfbGUkMCIsImdldF9pbnQzMl9iZSQwIiwiZ2V0X3VpbnQzMl9sZSQwIiwiZ2V0X3VpbnQzMl9iZSQwIiwiZ2V0X2ludDY0X2xlJDAiLCJnZXRfaW50NjRfYmUkMCIsImdldF91aW50NjRfbGUkMCIsImdldF91aW50NjRfYmUkMCIsInNldF9pbnQ4JDAiLCJzZXRfdWludDgkMCIsInNldF9pbnQxNl9sZSQwIiwic2V0X2ludDE2X2JlJDAiLCJzZXRfdWludDE2X2xlJDAiLCJzZXRfdWludDE2X2JlJDAiLCJzZXRfaW50MzJfbGUkMCIsInNldF9pbnQzMl9iZSQwIiwic2V0X3VpbnQzMl9sZSQwIiwic2V0X3VpbnQzMl9iZSQwIiwic2V0X2ludDY0X2xlJDAiLCJzZXRfaW50NjRfYmUkMCIsInNldF91aW50NjRfbGUkMCIsInNldF91aW50NjRfYmUkMCIsImdldF9pbnQ4JDEiLCJnZXRfdWludDgkMSIsImdldF9pbnQxNl9sZSQxIiwiZ2V0X2ludDE2X2JlJDEiLCJnZXRfdWludDE2X2xlJDEiLCJnZXRfdWludDE2X2JlJDEiLCJnZXRfaW50MzJfbGUkMSIsImdldF9pbnQzMl9iZSQxIiwiZ2V0X3VpbnQzMl9sZSQxIiwiZ2V0X3VpbnQzMl9iZSQxIiwiZ2V0X2ludDY0X2xlJDEiLCJnZXRfaW50NjRfYmUkMSIsImdldF91aW50NjRfbGUkMSIsImdldF91aW50NjRfYmUkMSIsImdldF9pbnQ4JDIiLCJnZXRfdWludDgkMiIsImdldF9pbnQxNl9sZSQyIiwiZ2V0X2ludDE2X2JlJDIiLCJnZXRfdWludDE2X2xlJDIiLCJnZXRfdWludDE2X2JlJDIiLCJnZXRfaW50MzJfbGUkMiIsImdldF9pbnQzMl9iZSQyIiwiZ2V0X3VpbnQzMl9sZSQyIiwiZ2V0X3VpbnQzMl9iZSQyIiwiZ2V0X2ludDY0X2xlJDIiLCJnZXRfaW50NjRfYmUkMiIsImdldF91aW50NjRfbGUkMiIsImdldF91aW50NjRfYmUkMiIsImxvYyQwIiwibG9jIiwic3ByaW50ZiIsImFyY2hfc2l4dHlmb3VyIiwiYXJjaF9iaWdfZW5kaWFuIiwibm90X29uXzMyYml0IiwiY3JlYXRlIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic2l6ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyQwIiwibGVuZ3RoIiwiaW5pdCIsIm4iLCJmIiwidCIsImkiLCJjaGVja19hcmdzIiwicG9zIiwibGVuIiwiYnN0ciIsImJzdHJfbGVuJDAiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwiY2hyIiwibGVuJDAiLCJyZXMiLCJtZW1tZW0iLCJoYXlzdGFjayIsIm5lZWRsZSIsImhheXN0YWNrX2xlbiIsIm5lZWRsZV9sZW4iLCJoYXlzdGFja19wb3MiLCJuZWVkbGVfcG9zIiwiaGF5c3RhY2tfbGVuJDAiLCJuZWVkbGVfbGVuJDAiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsInVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCIsInJlYWRfaW50NjRfbG9jYWwiLCJyZWFkX2ludDY0X3N3YXBfbG9jYWwiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCQwIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCQwIiwicmVhZF9pbnQ2NF9sb2NhbCQwIiwiZ2V0X2ludDY0X3RfbGUiLCJnZXRfaW50NjRfdF9iZSIsInJlYWRfaW50NjRfc3dhcCQwIiwic2V0X2ludDY0X3RfYmUiLCJzZXRfaW50NjRfdF9sZSIsImludDY0X2NvbnZfZXJyb3IiLCJ1aW50NjRfY29udl9lcnJvciIsImludDY0X3RvX2ludF9leG4iLCJ1aW50NjRfdG9faW50X2V4biIsInVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9sZV9leG4iLCJnZXRfaW50NjRfYmVfZXhuIiwiZ2V0X2ludDY0X2xlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2JlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2xlX2V4biIsImdldF91aW50NjRfYmVfZXhuIiwiZ2V0X3VpbnQ2NF9sZV9leG4iLCJzZXRfdWludDY0X2JlX2V4biIsInNldF91aW50NjRfbGVfZXhuIiwidW5zYWZlX3NldF91aW50OCIsInVuc2FmZV9zZXRfaW50OCIsIm4kMCIsInVuc2FmZV9nZXRfdWludDgiLCJ1bnNhZmVfZ2V0X2ludDgiLCJzZXRfdWludDhfZXhuIiwic2V0X2ludDhfZXhuIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDgiLCJ1aW50MzJfb2ZfaW50MzJfdCIsInVuc2FmZV9zZXRfdWludDMyX2xlIiwidW5zYWZlX3NldF91aW50MzJfYmUiLCJ1bnNhZmVfZ2V0X3VpbnQzMl9sZSIsInVuc2FmZV9nZXRfdWludDMyX2JlIiwic2V0X3VpbnQzMl9sZV9leG4iLCJzZXRfdWludDMyX2JlX2V4biIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X3VpbnQ4JDAiLCJzZXRfdWludDgiLCJnZXRfdWludDE2X25lIiwic2V0X3VpbnQxNl9uZSIsImdldF9pbnQzMl9uZSIsInNldF9pbnQzMl9uZSIsImdldF9pbnQ2NF9uZSIsInNldF9pbnQ2NF9uZSIsImdldF91aW50OCQyIiwic2V0X3VpbnQ4JDEiLCJnZXRfdWludDE2X25lJDAiLCJzZXRfdWludDE2X25lJDAiLCJnZXRfaW50MzJfbmUkMCIsInNldF9pbnQzMl9uZSQwIiwiZ2V0X2ludDY0X25lJDAiLCJzZXRfaW50NjRfbmUkMCIsImVsdDEiLCJlbHQyIiwiZXF1YWwiLCJvZl9ib29sIiwibGVuZ3RoIiwiY3JlYXRlX2Jvb2wiLCJnZXQiLCJzZXQiLCJvdmVybGFwcGluZ19zcmNfZHN0IiwibGVuZ3RoJDAiLCJnZXQkMCIsInNldCQwIiwiY3JlYXRlX2Jvb2wkMCIsInJvb3QiLCJjb21wYXJhdG9yIiwiY2xhbXAiLCJjbGFtcF9leG4iLCJiZXR3ZWVuIiwiZGVzY2VuZGluZyIsImFzY2VuZGluZyIsIm1heCIsIm1pbiIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJ0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfdCIsInRfb2Zfc2V4cCIsImhhc2giLCJoYXNoX2ZvbGRfdCIsImNoZWNrX3N1ZmZpeCIsImNob3BfZXh0ZW5zaW9uIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAiLCJjb25jYXQiLCJwMSIsInAyIiwicyQxIiwicyQyIiwicyIsInMkMCIsInRvX2Fic29sdXRlX2V4biIsInJlbGF0aXZlX3RvIiwic3BsaXQiLCJpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQiLCJzcGxpdF9leHRlbnNpb24iLCJmbiIsImZuJDAiLCJwYXRoIiwiZm4kMSIsImRpciIsImV4dCIsImJhc2VfZm4iLCJleHQkMCIsImZuJDIiLCJkaXIkMCIsImZuJDMiLCJwYXJ0cyIsImZpbGVuYW1lIiwiYWNjIiwiZmlsZW5hbWUkMCIsImZpbGVuYW1lJDEiLCJhY2MkMCIsIm9mX3BhcnRzIiwicmVzdCIsIm9mX2Fic29sdXRlX2V4biIsImEiLCJiIiwiYV9wYXJ0cyIsImJfcGFydHMiLCJhX3N1ZmZpeCIsImJfc3VmZml4IiwidDIiLCJoMiIsInQxIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJzZXhwX29mX3QiLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwieF8wMDMiLCJ0eXBlX2lkMSIsInR5cGVfaWQyIiwibmFtZV9vZl9rZXkiLCJrZXkiLCJ1aWRfb2Zfa2V5Iiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJkYXRhIiwidHlwZV9pZF9uYW1lIiwidHlwZV9pZF91aWQiLCJjb21wYXJlIiwidDEiLCJ0MiIsImMiLCJ0b19hbGlzdCIsInQiLCJzZXhwX29mX3QkMSIsInhfMDA4IiwicGFja2VkIiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsInNldCIsIm1lbV9ieV9pZCIsImlkIiwibWVtIiwicmVtb3ZlX2J5X2lkIiwicmVtb3ZlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJpc19lbXB0eSIsImZpbmQiLCJ2YWx1ZSIsImtleSQwIiwiZmluZF9leG4iLCJhZGQiLCJhZGRfZXhuIiwidCQwIiwiY2hhbmdlX2V4biIsInVwZGF0ZSIsImNoYW5nZSIsIm9yaWciLCJuZXh0IiwiZiIsIm9mX2FsaXN0X2V4biIsInAiLCJvZl9hXzAxMSIsIm9mX2FfMDEyIiwieF8wMTMiLCJ4XzAxNCIsIm9mX2FfMDE3IiwidHlwZV9lcXVhbCIsImNyZWF0ZSIsImRlZmF1bHQkMCIsIm5hbWUiLCJzZXhwX29mIiwiZmluZCQwIiwic2V0JDAiLCJjaGFuZ2UkMCIsImNyZWF0ZSQwIiwiaW5pdCIsImlkJDAiLCJmaW5kJDEiLCJzZXQkMSIsImNoYW5nZSQxIiwiYWRkJDAiLCJhY2MiLCJjcmVhdGUkMSIsInhzIiwieCIsImlkJDEiLCJtZXJnZSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsImRhdGEkMCIsImVwcmludGYiLCJwcmludGYiLCJwcmludF9zIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfZW5kbGluZSIsInByZXJyX2VuZGxpbmUiLCJzcHJpbnRmIiwiZmFpbHdpdGhmIiwia3NwcmludGYiLCJhbGwiLCJjb21wYXJlIiwic2V4cF9vZl90IiwidG9fc3RyaW5nIiwidCIsImZsYWdfbmFtZSIsImVycm9yX3NvdXJjZV8wMjIiLCJlcnJvcl9zb3VyY2VfMDY3IiwiZXJyb3Jfc291cmNlXzA4OCIsImVycm9yX3NvdXJjZV8xMDQiLCJlcnJvcl9zb3VyY2VfMTE4IiwiZXJyb3Jfc291cmNlXzE0NSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMjA2IiwiZXJyb3Jfc291cmNlXzIyMiIsImVycm9yX3NvdXJjZV8yMzYiLCJlcnJvcl9zb3VyY2VfMjYxIiwiZXJyb3Jfc291cmNlXzI5MCIsImVycm9yX3NvdXJjZV8zMjIiLCJlcnJvcl9zb3VyY2VfMzQ3IiwiZXJyb3Jfc291cmNlXzM3MiIsImVycm9yX3NvdXJjZV80MTEiLCJlcnJvcl9zb3VyY2VfNDU2IiwiZW51bWVyYXRlXzQ3NCIsImVudW1lcmF0ZV80NzUiLCJuYW1lcyIsIm1heWJlX21pc3NpbmdfcHJlZml4IiwibWF5YmVfbWlzc2luZ19zdWZmaXgiLCJtYXliZV9tb3JlX3N1ZmZpeCIsIm5hbWVzJDAiLCJlcnJvcl9zb3VyY2VfNDk5IiwiaW5kZW50YXRpb24iLCJzcGFjaW5nX2RvdCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfNTE3IiwibmFtZXMkMiIsImVycm9yX3NvdXJjZV81NDYiLCJuYW1lcyQzIiwiZXJyb3Jfc291cmNlXzU3NCIsImVycm9yX3NvdXJjZV82MDMiLCJ0X29mX3NleHAiLCJjb21wYXJlJDAiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDYkMCIsImJfMDA3JDAiLCJhXzAwOCIsImJfMDA5IiwiYV8wMTAiLCJiXzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsImFfMDE4IiwiYl8wMTkiLCJ0X29mX3NleHAkMCIsInNleHBfMDI0IiwidGFnXzAyNSIsInNleHBfYXJnc18wNDYiLCJhcmcwXzA0NyIsInJlczBfMDQ4Iiwic2V4cF9hcmdzXzA0MSIsImFyZzBfMDQyIiwicmVzMF8wNDMiLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4Iiwic2V4cF9hcmdzXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQ5IiwicmVzMF8wNTAiLCJhcmcwXzA1MSIsInJlczBfMDUyIiwiYXJnMF8wNTMiLCJyZXMwXzA1NCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4Iiwic3RhYmxlX3dpdG5lc3MiLCJpbnZhcmlhbnQiLCJ0JDAiLCJ0JDEiLCJ0cyIsInRfb2Zfc2V4cCQxIiwic2V4cCIsInVzYWdlIiwidXNhZ2UkMCIsInVzYWdlJDEiLCJjb21wYXJlJDEiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImFfMDYzIiwiYl8wNjQiLCJ0X29mX3NleHAkMiIsInNleHBfMDY5IiwidGFnXzA3MCIsInNleHBfYXJnc18wNzEiLCJhcmcwXzA3MiIsInJlczBfMDczIiwic2V4cF9hcmdzXzA3NiIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJzZXhwX29mX3QkMSIsImFyZzBfMDc5IiwicmVzMF8wODAiLCJhcmcwXzA4MSIsInJlczBfMDgyIiwic3RhYmxlX3dpdG5lc3MkMCIsImNvbXBhcmUkMiIsImFfMDgzIiwiYl8wODQiLCJuIiwibiQwIiwiYV8wODUiLCJiXzA4NiIsInRfb2Zfc2V4cCQzIiwieF8wODkiLCJhbGlhc2VzIiwiZG9jIiwibmFtZSIsInNleHBfb2ZfdCQyIiwiYWxpYXNlc18wOTUiLCJkb2NfMDkzIiwibmFtZV8wOTEiLCJhcmdfMDk2IiwiYm5kc18wOTAiLCJhcmdfMDk0IiwiYm5kc18wOTAkMCIsImFyZ18wOTIiLCJibmRzXzA5MCQxIiwic3RhYmxlX3dpdG5lc3MkMSIsImNvbXBhcmUkMyIsImFfMDk3IiwiYl8wOTgiLCJhXzA5OSIsImJfMTAwIiwibiQxIiwiYV8xMDEiLCJiXzEwMiIsInRfb2Zfc2V4cCQ0IiwieF8xMDUiLCJmbGFncyIsImFub25zIiwicmVhZG1lIiwic3VtbWFyeSIsInNleHBfb2ZfdCQzIiwiZmxhZ3NfMTE1IiwiYW5vbnNfMTEzIiwicmVhZG1lXzEwOSIsInN1bW1hcnlfMTA3IiwiYXJnXzExNiIsImJuZHNfMTA2IiwiYXJnXzExNCIsImJuZHNfMTA2JDAiLCJ2XzExMCIsImFyZ18xMTIiLCJibmRfMTExIiwiYm5kc18xMDYkMSIsImFyZ18xMDgiLCJibmRzXzEwNiQyIiwic3RhYmxlX3dpdG5lc3MkMiIsInRfb2Zfc2V4cCQ1IiwieF8xMTkiLCJzZXhwX29mX3QkNCIsImZsYWdzXzEyOSIsInVzYWdlXzEyNyIsInJlYWRtZV8xMjMiLCJzdW1tYXJ5XzEyMSIsImFyZ18xMzAiLCJibmRzXzEyMCIsImFyZ18xMjgiLCJibmRzXzEyMCQwIiwidl8xMjQiLCJhcmdfMTI2IiwiYm5kXzEyNSIsImJuZHNfMTIwJDEiLCJhcmdfMTIyIiwiYm5kc18xMjAkMiIsInN0YWJsZV93aXRuZXNzJDMiLCJ0b19sYXRlc3QiLCJvZl9sYXRlc3QiLCJncmFtbWFyIiwiZ3JvdXAiLCJjb21wYXJlJDQiLCJjbXBfYSIsImFfMTMxIiwiYl8xMzIiLCJhXzEzMyIsImJfMTM0IiwiYV8xMzUiLCJiXzEzNiIsImFfMTM3IiwiYl8xMzgiLCJ0XzE0MCIsInRfMTM5IiwidF8xNDIiLCJ0XzE0MSIsInRfb2Zfc2V4cCQ2Iiwib2ZfYV8xNDMiLCJ4XzE1MSIsInNleHBfMTUwIiwiYXJnMV8xNDciLCJhcmcwXzE0NiIsInJlczBfMTQ4IiwicmVzMV8xNDkiLCJzdWJjb21tYW5kcyIsInNleHBfb2ZfdCQ1Iiwib2ZfYV8xNTIiLCJzdWJjb21tYW5kc18xNjAiLCJyZWFkbWVfMTU2Iiwic3VtbWFyeV8xNTQiLCJhcmdfMTYxIiwiYXJnMV8xNjMiLCJhcmcwXzE2MiIsInJlczBfMTY0IiwicmVzMV8xNjUiLCJibmRzXzE1MyIsInZfMTU3IiwiYXJnXzE1OSIsImJuZF8xNTgiLCJibmRzXzE1MyQwIiwiYXJnXzE1NSIsImJuZHNfMTUzJDEiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYV9zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYiLCJ0X29mX3NleHAkNyIsIm9mX2FfMTc2IiwieF8xODQiLCJzZXhwXzE4MyIsImFyZzFfMTgwIiwiYXJnMF8xNzkiLCJyZXMwXzE4MSIsInJlczFfMTgyIiwic2V4cF9vZl90JDYiLCJvZl9hXzE4NSIsInN1YmNvbW1hbmRzXzE5MyIsInJlYWRtZV8xODkiLCJzdW1tYXJ5XzE4NyIsImFyZ18xOTQiLCJhcmcxXzE5NiIsImFyZzBfMTk1IiwicmVzMF8xOTciLCJyZXMxXzE5OCIsImJuZHNfMTg2Iiwidl8xOTAiLCJhcmdfMTkyIiwiYm5kXzE5MSIsImJuZHNfMTg2JDAiLCJhcmdfMTg4IiwiYm5kc18xODYkMSIsIm1hcCQwIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImFic19wYXRoIiwiZGlyIiwicGF0aCIsImNvbXBhcmUkNSIsImFfMTk5IiwiYl8yMDAiLCJhXzIwMSIsImJfMjAyIiwibiQyIiwiYV8yMDMiLCJiXzIwNCIsInRfb2Zfc2V4cCQ4IiwieF8yMDciLCJjaGlsZF9zdWJjb21tYW5kIiwicGF0aF90b19leGUiLCJ3b3JraW5nX2RpciIsInNleHBfb2ZfdCQ3IiwiY2hpbGRfc3ViY29tbWFuZF8yMTkiLCJwYXRoX3RvX2V4ZV8yMTciLCJ3b3JraW5nX2Rpcl8yMTUiLCJyZWFkbWVfMjExIiwic3VtbWFyeV8yMDkiLCJhcmdfMjIwIiwiYm5kc18yMDgiLCJhcmdfMjE4IiwiYm5kc18yMDgkMCIsImFyZ18yMTYiLCJibmRzXzIwOCQxIiwidl8yMTIiLCJhcmdfMjE0IiwiYm5kXzIxMyIsImJuZHNfMjA4JDIiLCJhcmdfMjEwIiwiYm5kc18yMDgkMyIsInN0YWJsZV93aXRuZXNzJDUiLCJ0b19sYXRlc3QkMSIsIm9mX2xhdGVzdCQxIiwidF9vZl9zZXhwJDkiLCJ4XzIyMyIsInNleHBfb2ZfdCQ4IiwicGF0aF90b19leGVfMjMzIiwid29ya2luZ19kaXJfMjMxIiwicmVhZG1lXzIyNyIsInN1bW1hcnlfMjI1IiwiYXJnXzIzNCIsImJuZHNfMjI0IiwiYXJnXzIzMiIsImJuZHNfMjI0JDAiLCJ2XzIyOCIsImFyZ18yMzAiLCJibmRfMjI5IiwiYm5kc18yMjQkMSIsImFyZ18yMjYiLCJibmRzXzIyNCQyIiwic3RhYmxlX3dpdG5lc3MkNiIsInRvX3YzIiwib2ZfdjMiLCJ0b19sYXRlc3QkMiIsIm9mX2xhdGVzdCQyIiwidF9vZl9zZXhwJDEwIiwieF8yMzciLCJzZXhwX29mX3QkOSIsInBhdGhfdG9fZXhlXzI0NSIsInJlYWRtZV8yNDEiLCJzdW1tYXJ5XzIzOSIsImFyZ18yNDYiLCJibmRzXzIzOCIsInZfMjQyIiwiYXJnXzI0NCIsImJuZF8yNDMiLCJibmRzXzIzOCQwIiwiYXJnXzI0MCIsImJuZHNfMjM4JDEiLCJzdGFibGVfd2l0bmVzcyQ3IiwidG9fdjIiLCJvZl92MiIsInRvX2xhdGVzdCQzIiwib2ZfbGF0ZXN0JDMiLCJjb21wYXJlJDYiLCJhXzI0NyIsImJfMjQ4IiwiYV8yNDckMCIsImJfMjQ4JDAiLCJhXzI0OSIsImJfMjUwIiwiYV8yNTEiLCJiXzI1MiIsImFfMjUzIiwiYl8yNTQiLCJhXzI1NyIsImFfMjU1IiwiYl8yNTgiLCJiXzI1NiIsInRfb2Zfc2V4cCQxMSIsInNleHBfMjYzIiwidGFnXzI2NCIsInNleHBfYXJnc18yNzAiLCJhcmcwXzI3MSIsInJlczBfMjcyIiwic2V4cF9hcmdzXzI3NSIsImFyZzFfMjc3IiwiYXJnMF8yNzYiLCJyZXMwXzI3OCIsInJlczFfMjc5Iiwic2V4cF9hcmdzXzI2NSIsImFyZzBfMjY2IiwicmVzMF8yNjciLCJzZXhwX29mX3QkMTAiLCJhcmcwXzI4MCIsInJlczBfMjgxIiwiYXJnMF8yODIiLCJyZXMwXzI4MyIsImFyZzFfMjg1IiwiYXJnMF8yODQiLCJyZXMwXzI4NiIsInJlczFfMjg3Iiwic3RhYmxlX3dpdG5lc3MkOCIsInRfb2Zfc2V4cCQxMiIsInNleHBfMjkyIiwidGFnXzI5MyIsInNleHBfYXJnc18zMDkiLCJhcmcwXzMxMCIsInJlczBfMzExIiwic2V4cF9hcmdzXzI5OSIsImFyZzBfMzAwIiwicmVzMF8zMDEiLCJzZXhwX2FyZ3NfMzA0IiwiYXJnMF8zMDUiLCJyZXMwXzMwNiIsInNleHBfYXJnc18yOTQiLCJhcmcwXzI5NSIsInJlczBfMjk2Iiwic2V4cF9vZl90JDExIiwiYXJnMF8zMTIiLCJyZXMwXzMxMyIsImFyZzBfMzE0IiwicmVzMF8zMTUiLCJhcmcwXzMxNiIsInJlczBfMzE3IiwiYXJnMF8zMTgiLCJyZXMwXzMxOSIsInRfb2Zfc2V4cCQxMyIsInNleHBfMzI0IiwidGFnXzMyNSIsInNleHBfYXJnc18zMzEiLCJhcmcwXzMzMiIsInJlczBfMzMzIiwic2V4cF9hcmdzXzMzNiIsImFyZzBfMzM3IiwicmVzMF8zMzgiLCJzZXhwX2FyZ3NfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsInNleHBfb2ZfdCQxMiIsImFyZzBfMzM5IiwicmVzMF8zNDAiLCJhcmcwXzM0MSIsInJlczBfMzQyIiwiYXJnMF8zNDMiLCJyZXMwXzM0NCIsInRvX2xhdGVzdCQ0IiwiYiIsImciLCJlIiwib2ZfbGF0ZXN0JDQiLCJ0aHVuayIsInRfb2Zfc2V4cCQxNCIsInNleHBfMzQ5IiwidGFnXzM1MCIsInNleHBfYXJnc18zNTYiLCJhcmcwXzM1NyIsInJlczBfMzU4Iiwic2V4cF9hcmdzXzM2MSIsImFyZzBfMzYyIiwicmVzMF8zNjMiLCJzZXhwX2FyZ3NfMzUxIiwiYXJnMF8zNTIiLCJyZXMwXzM1MyIsInNleHBfb2ZfdCQxMyIsImFyZzBfMzY0IiwicmVzMF8zNjUiLCJhcmcwXzM2NiIsInJlczBfMzY3IiwiYXJnMF8zNjgiLCJyZXMwXzM2OSIsInRvX2xhdGVzdCQ1Iiwib2ZfbGF0ZXN0JDUiLCJ0X29mX3NleHAkMTUiLCJzZXhwXzM3NCIsInRhZ18zNzUiLCJzZXhwX2FyZ3NfMzg2IiwiYXJnMF8zODciLCJyZXMwXzM4OCIsInNleHBfYXJnc18zODEiLCJhcmcwXzM4MiIsInJlczBfMzgzIiwic2V4cF9hcmdzXzM3NiIsImFyZzBfMzc3IiwicmVzMF8zNzgiLCJzZXhwX29mX3QkMTQiLCJhcmcwXzM4OSIsInJlczBfMzkwIiwiYXJnMF8zOTEiLCJyZXMwXzM5MiIsImFyZzBfMzkzIiwicmVzMF8zOTQiLCJ2MSIsInYwIiwidjIiLCJ2MyIsInYxJDAiLCJ2MiQwIiwidjMkMCIsIm9mX3ZlcnNpb25lZCIsImNvbXBhcmUkNyIsImFfMzk1IiwiYl8zOTYiLCJhXzM5NSQwIiwiYl8zOTYkMCIsImFfMzk3IiwiYl8zOTgiLCJhXzM5OSIsImJfNDAwIiwiYV80MDEiLCJiXzQwMiIsImFfNDAzIiwiYl80MDQiLCJhXzQwNSIsImJfNDA2IiwiYV80MDciLCJiXzQwOCIsInRfb2Zfc2V4cCQxNiIsInNleHBfNDEzIiwidGFnXzQxNCIsInNleHBfYXJnc180MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3Iiwic2V4cF9hcmdzXzQzMCIsImFyZzBfNDMxIiwicmVzMF80MzIiLCJzZXhwX2FyZ3NfNDIwIiwiYXJnMF80MjEiLCJyZXMwXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcwXzQyNiIsInJlczBfNDI3Iiwic2V4cF9hcmdzXzQxNSIsImFyZzBfNDE2IiwicmVzMF80MTciLCJzZXhwX29mX3QkMTUiLCJhcmcwXzQzOCIsInJlczBfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsImFyZzBfNDQyIiwicmVzMF80NDMiLCJhcmcwXzQ0NCIsInJlczBfNDQ1IiwiYXJnMF80NDYiLCJyZXMwXzQ0NyIsImNvbXBhcmUkOCIsImFfNDQ4IiwiYl80NDkiLCJhXzQ1MCIsImJfNDUxIiwiYV80NTIiLCJiXzQ1MyIsInRfb2Zfc2V4cCQxNyIsInNleHBfNDU4IiwidGFnXzQ1OSIsInNleHBfYXJnc180NjAiLCJhcmcwXzQ2MSIsInJlczBfNDYyIiwic2V4cF9hcmdzXzQ2NSIsImFyZzBfNDY2IiwicmVzMF80NjciLCJzZXhwX29mX3QkMTYiLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImNvbXBhcmUkOSIsImFfNDcyIiwiYl80NzMiLCJhY2MiLCJlbnVtZXJhdGVfNDc4IiwiZW51bWVyYXRlXzQ3OSIsImVudW1lcmF0ZV80NzciLCJlbnVtZXJhdGVfNDgwIiwiZW51bWVyYXRlXzQ3NiIsImFjYyQwIiwiZW51bWVyYXRlXzQ4MCQwIiwiYXRfbW9zdF9vbmNlIiwiciIsImF0X2xlYXN0X29uY2UiLCJhdF9tb3N0X29uY2UkMCIsInYiLCJhdF9sZWFzdF9vbmNlJDAiLCJtYWtlX2NyZWF0b3IiLCJhdF9sZWFzdF9vbmNlX2Z1biIsImF0X21vc3Rfb25jZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJhdF9sZWFzdF9vbmNlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJhdF9tb3N0X29uY2VfZ2VuIiwiY3JlYXRlIiwibWFwJDEiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJzZXhwX29mX3QkMTciLCJhdF9tb3N0X29uY2VfNDg0IiwiYXRfbGVhc3Rfb25jZV80ODIiLCJhcmdfNDg1IiwiYm5kc180ODEiLCJhcmdfNDgzIiwiYm5kc180ODEkMCIsInRvX2hlbHBfc3RyaW5nIiwiZGVzY3JpcHRpb24iLCJvZl9oZWxwX3N0cmluZyIsIm5hbWUkMCIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsInhfNDg2IiwicyIsImZsYWdfbmFtZSQwIiwieF80ODciLCJjb21wYXJlJDEwIiwiYV80OTQiLCJiXzQ5NSIsImFfNDk2IiwiYl80OTciLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJjb21waWxlX2FjYyQyIiwiYWxpYXNlc19nZW4iLCJjcmVhdGUkMCIsIm1hcCQzIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxOCIsInhfNTAwIiwic2V4cF9vZl90JDE4IiwiYWxpYXNlc181MDYiLCJkb2NfNTA0IiwibmFtZV81MDIiLCJhcmdfNTA3IiwiYm5kc181MDEiLCJhcmdfNTA1IiwiYm5kc181MDEkMCIsImFyZ181MDMiLCJibmRzXzUwMSQxIiwicGFyc2VfbmFtZSIsIm51bV9vY2N1cnJlbmNlcyIsInJlcXVpcmVzX2FyZyIsImhlbHBfc2NyZWVuX2NvbXBhcmUiLCJhIiwic29ydCIsIndvcmRfd3JhcF9hbmRfc3RyaXAiLCJ0ZXh0Iiwid2lkdGgiLCJjaHVua3MiLCJ3b3JkcyIsIndvcmQiLCJsaW5lIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4IiwieCIsInNsYWNrIiwiaW5kZW50X2FuZF9uZXdsaW5lIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImxoc19wYWQiLCJmbGFnIiwiZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyIsImRvY3VtZW50YXRpb24iLCJmbGFnX3dpZHRoIiwiZmxhZ19vbl9pdHNfb3duX2xpbmUiLCJ3cmFwcGVkX2RvY3VtZW50YXRpb24iLCJkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIiwiZG9jX3dyYXBwZWRfZmlyc3RfbGluZSIsIndyYXBwZWRfZG9jX2xpbmVzIiwicHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfIiwidG9fc3RyaW5nJDAiLCJsb29rdXBfZXhwYW5kIiwiYWxpc3QiLCJwcmVmaXgiLCJrZXlfdHlwZSIsImlzX2Rhc2giLCJhbGlzdCQwIiwiZGF0YSIsImtleSIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzUwOCIsImRhdGEkMCIsImtleSQwIiwibWF0Y2hpbmdfa2V5cyIsImN1c3RvbV9wcmludGZfNTA5IiwiY29tcGFyZSQxMSIsImFfNTEwIiwiYl81MTEiLCJhXzUxMiIsImJfNTEzIiwiYV81MTQiLCJiXzUxNSIsImZsYWdzJDAiLCJhbm9ucyQwIiwicmVhZG1lJDAiLCJzdW1tYXJ5JDAiLCJtYWtlX2NyZWF0b3IkMSIsInN1bW1hcnlfZnVuIiwicmVhZG1lX2Z1biIsImFub25zX2Z1biIsImZsYWdzX2Z1biIsInN1bW1hcnlfZ2VuIiwicmVhZG1lX2dlbiIsImFub25zX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJmbGFnc19nZW4iLCJjcmVhdGUkMSIsIm1hcCQ1IiwiaXRlciQzIiwiZm9sZCQzIiwibWFwX3BvbHkkMSIsImZvcl9hbGwkMyIsImV4aXN0cyQzIiwidG9fbGlzdCQzIiwiaXRlciQ0IiwiZm9sZCQ0IiwiZm9yX2FsbCQ0IiwiZXhpc3RzJDQiLCJ0b19saXN0JDQiLCJtYXAkNiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMSIsInRfb2Zfc2V4cCQxOSIsInhfNTE4Iiwic2V4cF9vZl90JDE5IiwiZmxhZ3NfNTI4IiwiYW5vbnNfNTI2IiwicmVhZG1lXzUyMiIsInN1bW1hcnlfNTIwIiwiYXJnXzUyOSIsImJuZHNfNTE5IiwiYXJnXzUyNyIsImJuZHNfNTE5JDAiLCJ2XzUyMyIsImFyZ181MjUiLCJibmRfNTI0IiwiYm5kc181MTkkMSIsImFyZ181MjEiLCJibmRzXzUxOSQyIiwiZmluZF9mbGFnIiwiZmxhZ19pbmZvIiwiY2hvaWNlcyIsImdldF91c2FnZSIsImNvbXBhcmUkMTIiLCJhXzUzMiIsImJfNTMzIiwiYV81MzQiLCJiXzUzNSIsImFfNTM2IiwiYl81MzciLCJhXzUzOCIsImJfNTM5IiwidF81NDEiLCJ0XzU0MCIsInRfNTQzIiwidF81NDIiLCJyZWFkbWUkMSIsInN1bW1hcnkkMSIsInN1YmNvbW1hbmRzJDAiLCJyZWFkbWUkMiIsInN1bW1hcnkkMiIsIm1ha2VfY3JlYXRvciQyIiwic3ViY29tbWFuZHNfZnVuIiwic3ViY29tbWFuZHNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkNyIsIml0ZXIkNSIsImZvbGQkNSIsIm1hcF9wb2x5JDIiLCJmb3JfYWxsJDUiLCJleGlzdHMkNSIsInRvX2xpc3QkNSIsIml0ZXIkNiIsImZvbGQkNiIsImZvcl9hbGwkNiIsImV4aXN0cyQ2IiwidG9fbGlzdCQ2IiwibWFwJDgiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDIiLCJ0X29mX3NleHAkMjAiLCJvZl9hXzU0NCIsInhfNTUyIiwic2V4cF81NTEiLCJhcmcxXzU0OCIsImFyZzBfNTQ3IiwicmVzMF81NDkiLCJyZXMxXzU1MCIsInNleHBfb2ZfdCQyMCIsIm9mX2FfNTUzIiwic3ViY29tbWFuZHNfNTYxIiwicmVhZG1lXzU1NyIsInN1bW1hcnlfNTU1IiwiYXJnMV81NjQiLCJhcmcwXzU2MyIsInJlczBfNTY1IiwicmVzMV81NjYiLCJhcmdfNTYyIiwiYm5kc181NTQiLCJ2XzU1OCIsImFyZ181NjAiLCJibmRfNTU5IiwiYm5kc181NTQkMCIsImFyZ181NTYiLCJibmRzXzU1NCQxIiwiZmluZF9zdWJjb21tYW5kIiwiY29tcGFyZSQxMyIsImFfNTY3IiwiYl81NjgiLCJhXzU2OSIsImJfNTcwIiwiYV81NzEiLCJiXzU3MiIsInJlYWRtZSQzIiwic3VtbWFyeSQzIiwiY2hpbGRfc3ViY29tbWFuZCQwIiwicGF0aF90b19leGUkMCIsIndvcmtpbmdfZGlyJDAiLCJyZWFkbWUkNCIsInN1bW1hcnkkNCIsIm1ha2VfY3JlYXRvciQzIiwid29ya2luZ19kaXJfZnVuIiwicGF0aF90b19leGVfZnVuIiwiY2hpbGRfc3ViY29tbWFuZF9mdW4iLCJ3b3JraW5nX2Rpcl9nZW4iLCJwYXRoX3RvX2V4ZV9nZW4iLCJjb21waWxlX2FjYyQ0IiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMjEiLCJ4XzU3NSIsInNleHBfb2ZfdCQyMSIsImNoaWxkX3N1YmNvbW1hbmRfNTg3IiwicGF0aF90b19leGVfNTg1Iiwid29ya2luZ19kaXJfNTgzIiwicmVhZG1lXzU3OSIsInN1bW1hcnlfNTc3IiwiYXJnXzU4OCIsImJuZHNfNTc2IiwiYXJnXzU4NiIsImJuZHNfNTc2JDAiLCJhcmdfNTg0IiwiYm5kc181NzYkMSIsInZfNTgwIiwiYXJnXzU4MiIsImJuZF81ODEiLCJibmRzXzU3NiQyIiwiYXJnXzU3OCIsImJuZHNfNTc2JDMiLCJjb21wYXJlJDE0IiwiYV81ODkiLCJiXzU5MCIsImFfNTg5JDAiLCJiXzU5MCQwIiwiYV81OTEiLCJiXzU5MiIsImFfNTkzIiwiYl81OTQiLCJhXzU5NSIsImJfNTk2IiwiYV81OTkiLCJhXzU5NyIsImJfNjAwIiwiYl81OTgiLCJ0X29mX3NleHAkMjIiLCJzZXhwXzYwNSIsInRhZ182MDYiLCJzZXhwX2FyZ3NfNjEyIiwiYXJnMF82MTMiLCJyZXMwXzYxNCIsInNleHBfYXJnc182MTciLCJhcmcxXzYxOSIsImFyZzBfNjE4IiwicmVzMF82MjAiLCJyZXMxXzYyMSIsInNleHBfYXJnc182MDciLCJhcmcwXzYwOCIsInJlczBfNjA5Iiwic2V4cF9vZl90JDIyIiwiYXJnMF82MjIiLCJyZXMwXzYyMyIsImFyZzBfNjI0IiwicmVzMF82MjUiLCJhcmcxXzYyNyIsImFyZzBfNjI2IiwicmVzMF82MjgiLCJyZXMxXzYyOSIsImV4cGFuZGVkX3N1YmNvbW1hbmRzIiwiZXhwYW5kIiwic2V4cF9vZl90JDIzIiwiYXJnMF82MzAiLCJyZXMwXzYzMSIsImFyZzBfNjMyIiwicmVzMF82MzMiLCJhcmcwXzYzNCIsInJlczBfNjM1IiwiYXJnMF82MzYiLCJyZXMwXzYzNyIsImV4dHJhY3Rpb25fdmFyIiwiaSIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsInhzIiwiZGllIiwiZm10IiwibXNnIiwia2V5X2NyZWF0ZSIsIm11bHRpX2FkZCIsInNldF93aXRoX2RlZmF1bHQiLCJhcHBseSIsImVycl8xIiwiaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhIiwicmV0dXJuX25vX2FyZyIsInJldHVybl93aXRoX2FyZyIsImVycm9yIiwiaGFzX2FyZyIsImVyciIsInJlc3VsdCIsInJ1bl9hbmRfZXhpdCIsImVudiIsInBhcnQiLCJjb21wbGV0aW9ucyIsImV4dHJhX2RvYyIsInBhcnNlIiwiY29tcGxldGUiLCJvZl9zdHJpbmciLCJvZl9sYXp5Iiwic3RyIiwiZXh0cmFfZG9jJDAiLCJzdHJpbmciLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJzZXhwX2NvbnYiLCJvZl9zZXhwIiwib2ZfYWxpc3RfZXhuIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJtYWtlIiwiY21wIiwiayIsImR1cGxpY2F0ZV9rZXlzIiwiUyIsInVuaXZfbWFwIiwic3VmZml4IiwidmFsdWVzIiwiYXJnIiwidiQwIiwidmFsaWRfYXJndW1lbnRzX2V4dHJhIiwiY29tcGxldGUkMCIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImJvb2wiLCJjb21tYV9zZXBhcmF0ZWQiLCJhbGxvd19lbXB0eSIsInN0cmlwX3doaXRlc3BhY2UiLCJ1bmlxdWVfdmFsdWVzIiwic3RyaXAiLCJjb21wbGV0ZV9lbHQiLCJ0bCIsImhkIiwicHJlZml4ZXMiLCJzZWVuX2FscmVhZHkiLCJpc19hbGxvd2VkIiwiY2hvaWNlIiwiY2hvaWNlcyQwIiwic3RyaW5nJDAiLCJlbnVtZXJhdGVfMDEyIiwiZW51bWVyYXRlXzAxMyIsImVudW1lcmF0ZV8wMTEiLCJlbnVtZXJhdGVfMDE0IiwiZW51bWVyYXRlXzAxMCIsImVudW1lcmF0ZV8wMTQkMCIsInBhcnNlJDAiLCJhY3Rpb24iLCJhcmdfZG9jIiwiZG9jJDEiLCJhcmdfZG9jJDAiLCJjb25jYXQiLCJ3cmFwX2lmX29wdGlvbmFsIiwiaGVscCIsImFsaWduIiwiYV8wMjAiLCJiXzAyMSIsImFyZ19mbGFnIiwiYXJnX3R5cGUiLCJyZWFkIiwid3JpdGUiLCJ1cGRhdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJpbnB1dCIsIndyaXRlX29wdGlvbiIsInJlcXVpcmVkX3ZhbHVlIiwiZGVmYXVsdCQwIiwicmVxdWlyZWQiLCJvcHRpb25hbF93aXRoX2RlZmF1bHQiLCJvcHRpb25hbCIsInZhbHVlIiwibm9fYXJnX2dlbmVyYWwiLCJpc19yZXF1aXJlZCIsImtleV92YWx1ZSIsImRlcHJlY2F0ZWRfaG9vayIsImFjdGlvbiQwIiwibm9fYXJnIiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3JlZ2lzdGVyIiwibm9fYXJnX3NvbWUiLCJsaXN0ZWQiLCJ4XzAyMiIsInZhbHVlX2xpc3QiLCJsaXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsInhfMDIzIiwicmVzdCIsImZpcnN0IiwicSIsIm9uZV9vcl9tb3JlX2FzX2xpc3QiLCJlc2NhcGVfZ2VuZXJhbCIsInhfMDI0IiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsImVtcHR5JDAiLCJhcHBlbmQiLCJzdWJjb21tYW5kIiwicGFydHMiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJsZW5ndGgiLCJyZXBsYWNlX2ZpcnN0IiwiZnJvbSIsInRvIiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJsYXN0IiwiaXNfZW1wdHkiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsInMkMCIsInplcm8iLCJjb25jYXQkMCIsImNkciIsImNhciIsInQyIiwidDEiLCJjZHIkMCIsImNhciQwIiwicGFyc2VfbW9yZSIsImZvcl9jb21wbGV0aW9uIiwidXBkYXRlX2VudiIsInBhcnNlciIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInN5bWJvbCQwIiwidF9sZWZ0IiwidF9yaWdodCIsImZfb3V0Y29tZSIsInhfb3V0Y29tZSIsIm1vcmUiLCJ0ciIsInRlc3QiLCJtb3JlJDAiLCJ0ZXN0JDAiLCJyZXR1cm4kMSIsInN5bWJvbF9tYXAiLCJmcm9tX2VudiIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQxIiwicmV0dXJuJDIiLCJyZXR1cm5fd2l0aF9hcmckMCIsIm9uZSIsImFub24iLCJzZXF1ZW5jZSIsImxvb3AiLCJjb25zdW1lIiwicGFja2VkIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsImExIiwiYTIiLCJ0MyIsImEzIiwidDQiLCJhNCIsIm5vcm1hbGl6ZSIsInN0cmxlbiIsInNwZWNpYWxfY2hhcnMiLCJoYXNfc3BlY2lhbF9jaGFycyIsInN5bWJvbCQyIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI5IiwiYV8wMjciLCJiXzAzMCIsImJfMDI4IiwiYV8wMzEiLCJiXzAzMiIsIm9mX2xpc3QiLCJhcmdzIiwieCQwIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiYyIsImN1c3RvbV9wcmludGZfMDMzIiwiY3VzdG9tX3ByaW50Zl8wMzQiLCJzdWJjb21tYW5kX2NtcF9mc3QiLCJzaGFwZSIsInBhdGhfa2V5IiwiYXJnc19rZXkiLCJoZWxwX2tleSIsInJ1bl9leG4iLCJleG4iLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwiZXhuX3N0ciIsInZlcmJvc2UiLCJlcnJvcl9tc2ciLCJydW4iLCJ3aGVuX3BhcnNpbmdfc3VjY2VlZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0Iiwib25fZmFpbHVyZSIsInBhcnNlciQxIiwiZW52JDEiLCJjbWRsaW5lJDAiLCJhcmdzJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwibmFtZV9tYXRjaGluZyIsImFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIiwiYWxpYXMiLCJzMiIsInMxIiwiZmxhZyQwIiwiZmxhZyQxIiwiZiQxIiwiaW5mbyIsImNvbXBsZXRpbmciLCJjb21wIiwiZiQyIiwiZSQwIiwiY29tcCQwIiwiZiQzIiwiYXJnX2xpc3QiLCJjbWRsaW5lJDIiLCJlbnYkMiIsInBhcnNlX2ZsYWdzMiIsImVudiQzIiwicGFyc2VfZmxhZ3MkMCIsInBhcnQkMCIsIm1haW4iLCJmJDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJ0JDciLCJ3cmFwX3ZhbHVlIiwiYXBwbHkkMSIsImVtcHR5X3NwZWMiLCJtYXBfb3V0Y29tZSIsImxvb2t1cCIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiZmxvYXQkMSIsImJvb2wkMCIsInNleHAkMCIsInNleHBfY29udiQwIiwic3BlYyIsIm91dGNvbWUiLCJlc2NhcGVfYW5vbiIsImZpbmFsX2Fub24iLCJmdWxsX2ZsYWdfcmVxdWlyZWQiLCJtb2RlIiwiY2hlY2tfYXZhaWxhYmxlIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJyZXR1cm4kMyIsIm9wdGlvbmFsX3RvX3JlcXVpcmVkIiwiYm90aCIsImFyZ19uYW1lcyIsImZsYWdfbmFtZXMiLCJhbm9uX25hbWVzIiwiYV8wMzYiLCJiXzAzNyIsImFfMDM4IiwiYl8wMzkiLCJhXzA0MCIsImJfMDQxIiwieF8wNDIiLCJjcmVhdGVfZXhuIiwicmVxdWlyZWRfYXJncyIsIm5hbWVzX3dpdGhfY29tbWFzIiwieF8wNDMiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsIiwiaWZfbm90aGluZ19jaG9zZW4iLCJuZXdfYmVoYXZpb3IiLCJuYW1lX29mX3RoZV9ncm91cCIsImZsYWdfaW50ZXJuYWwiLCJleGNlcHQiLCJsIiwidHMkMCIsImFyZ19jb3VudGVyIiwibW9yZV90aGFuX29uZV9lcnJvciIsInBhc3NlZCIsImN1c3RvbV9wcmludGZfMDQ0IiwiZXJyb3JfbGlzdCIsInN1Y2Nlc3NfbGlzdCIsInZhbHVlJDAiLCJjdXN0b21fcHJpbnRmXzA0NSIsImNob29zZV9vbmUiLCJjaG9vc2Vfb25lX25vbl9vcHRpb25hbCQwIiwibHN0IiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInBhcnNlJDEiLCJwYXJhbXMiLCJzeW1ib2wkNiIsImYxIiwiZjIiLCJzeW1ib2wkNyIsInAyIiwic3ltYm9sJDgiLCJzdGVwIiwiY29uc3QkMCIsIndyYXAiLCJvZl9wYXJhbSIsInAiLCJ0b19wYXJhbSIsIm0iLCJzdHJpbmckMSIsImludCQyIiwiY2hhciQyIiwiZmxvYXQkMiIsImJvb2wkMSIsInNleHAkMSIsInNleHBfY29udiQxIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJnZW4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0Iiwic2V0X2Jvb2wiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1Iiwic2hhcGUkMCIsInN1YmNvbW1hbmRfdG9fc2hhcGUiLCJjb21wX2N3b3JkIiwic2hhcGUkMSIsInNleHBhYmxlX3NoYXBlIiwiYmFzZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwibWVtIiwiYWRkIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljIiwiZmxhZ3MkMSIsImJhc2UkMCIsImJhc2ljX3NwZWMiLCJzdWJzX2tleSIsImxhenlfZ3JvdXAiLCJwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIiwiYm9keSIsInAkMCIsInAkMSIsInAkMiIsIm9mX2xhenkkMCIsInByb3h5X29mX3NleHBhYmxlIiwic2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQiLCJraW5kIiwia2luZF9vZl9zZXhwYWJsZSIsInBhdGhfdG9fc3ViY29tbWFuZCQwIiwicHJveHkiLCJwcmludF92ZXJzaW9uIiwidmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsImFkZCQwIiwidW52ZXJzaW9uZWQiLCJiYXNlJDEiLCJub3JtYWxpemVfdmVyc2lvbl9saW5lcyIsImRlZmF1bHRfdmVyc2lvbiIsImRlZmF1bHRfYnVpbGRfaW5mbyIsInJlcHJpbnRfYnVpbGRfaW5mbyIsInRvX3NleHAiLCJ4JDEiLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsImgiLCJwYXRoJDEiLCJiYXNpYyQwIiwicGFyYW0iLCJiYXNpY19vcl9lcnJvciIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsImdldHBpZCIsImNsb3NlIiwiaW5fY2hhbm5lbF9vZl9kZXNjciIsIndhaXQiLCJnZXRlbnZfYW5kX2NsZWFyIiwidmFyJDAiLCJvZl9leHRlcm5hbCIsImhlbHBfc2V4cCIsInByb2ciLCJjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHIiLCJlbnZfdmFyIiwiYXJndjAiLCJwcm9nX3NlYXJjaF9wYXRoIiwibGlzdCQwIiwibGlzdCQxIiwicHJvY2Vzc19pbmZvIiwic3RhcnRfcmVhZGluZyIsImRlc2NyIiwib3V0cHV0IiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsImV4biQwIiwic2hhcGVfb2ZfcHJveHkiLCJzaGFwZV9vZl9wcm94eV9raW5kIiwic2hhcGVfb2ZfZXhlIiwic2hhcGUkMiIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImxvb3AkMCIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsIm1heWJlX25ld19jb21wX2N3b3JkIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJhcmdzJDEiLCJkaWVfc2hvd2luZ19oZWxwIiwiYXJncyQyIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQkMCIsIm1heWJlX25ld19jb21wX2N3b3JkJDEiLCJyZXNvbHZlIiwic3ViIiwic3VicyQwIiwiYm9keSQwIiwidG9fb3V0cHV0IiwicmVzdF9vZl9yZXN0IiwiZmlyc3Rfb2ZfcmVzdCIsImFyZ3MkMyIsIm5ld192YWx1ZSQwIiwibmV3X3ZhbHVlIiwicnVuJDAiLCJhcmd2IiwiYnVpbGRfaW5mbyQwIiwidmVyc2lvbiQwIiwic3VwcG9ydGVkX3ZlcnNpb25zJDAiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMSIsInBhdGhfdG9fc3ViY29tbWFuZCQyIiwiZm5hbWUiLCJhcmd2XzAiLCJjb21wX2N3b3JkJDAiLCJkZXByZWNhdGVkX3J1biIsImlzX2hlbHAiLCJpc19oZWxwX3JlYyIsImlzX2hlbHBfcmVjX2ZsYWdzIiwiaXNfZXhwYW5kX2RvdHMiLCJwYXRoX3N0cmluZ3MiLCJhcmdzJDQiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsImNyZWF0ZSIsInYiLCJjcmVhdGVfZXhuIiwidmFsdWUiLCJ0IiwiYnl0ZXNfcGVyX3dvcmQiLCJieXRlcyIsInBhc3MiLCJmYWlscyIsIm1lc3NhZ2UiLCJhIiwic2V4cF9vZl9hIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwiZmFpbF9zIiwic2V4cCIsImNvbWJpbmUiLCJ0MSIsInQyIiwib2ZfbGlzdCIsIm5hbWUiLCJ0IiwiZXJyb3IiLCJwYXRoIiwibmFtZV9saXN0IiwibiIsImwiLCJmYWlsX2ZuIiwicGFzc19ib29sIiwicGFzc191bml0IiwicHJvdGVjdCIsImYiLCJ2IiwiZXhuJDAiLCJleG4iLCJ0cnlfd2l0aCIsInBhdGhfc3RyaW5nIiwiZXJyb3JzIiwicmVzdWx0IiwieF8wMDUiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsIm1heWJlX3JhaXNlIiwidmFsaWRfb3JfZXJyb3IiLCJjaGVjayIsIngiLCJmaWVsZF9kaXJlY3QiLCJmbGQiLCJyZWNvcmQiLCJmaWVsZCIsImZpZWxkX2ZvbGRlciIsImFjYyIsImZpZWxkX2RpcmVjdF9mb2xkZXIiLCJhbGwiLCJjaGVja3MiLCJjaGVja3MkMCIsImVycnMiLCJjaGVja3MkMSIsImVyciIsImVycnMkMCIsIm9mX3Jlc3VsdCIsIm9mX2Vycm9yIiwiYm9vbHRlc3QiLCJpZl9mYWxzZSIsInBhaXIiLCJmc3QiLCJzbmQiLCJzbmRfdmFsdWUiLCJmc3RfdmFsdWUiLCJsaXN0X2luZGV4ZWQiLCJsaXN0IiwiaSIsImVsIiwiZXh0cmFjdF9uYW1lIiwiYWxpc3QiLCJsaXN0JDAiLCJrZXkiLCJmaXJzdF9mYWlsdXJlIiwib2ZfZXJyb3Jfb3B0IiwiYm91bmRlZCIsImxvd2VyIiwidXBwZXIiLCJjb21wYXJlIiwiaW5jbCIsImV4Y2wiLCJpbmNsJDAiLCJleGNsJDAiLCJzeW1ib2wiLCJuYW1lIiwic2V4cF9vZl9iaWdzdHJpbmciLCJiaWdzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2ZfbWF0IiwibWF0X29mX3NleHAiLCJzZXhwX29mX3ZlYyIsInZlY19vZl9zZXhwIiwic2V4cF9vZl9vcGFxdWUiLCJvcGFxdWVfb2Zfc2V4cCIsInNleHBfb2ZfcGFpciIsInBhaXJfb2Zfc2V4cCIsIm9mX3NleHBfZXJyb3IiLCJvZl9zZXhwX2Vycm9yX2V4biIsImdyb3VwIiwiYmluX3NoYXBlX3NleHBfb3BhcXVlIiwiYSIsImJpbl9zaXplX3NleHBfb3BhcXVlIiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3NleHBfb3BhcXVlIiwid3JpdGVfYSIsImJpbl93cml0ZXJfc2V4cF9vcGFxdWUiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfc2V4cF9vcGFxdWUiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSQwIiwiYmluX3JlYWRlcl9zZXhwX29wYXF1ZSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fc2V4cF9vcGFxdWUiLCJiaW5fYSIsImNvbXBhcmVfc2V4cF9vcGFxdWUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJoYXNoX2ZvbGRfc2V4cF9vcGFxdWUiLCJoYXNoX2ZvbGRfYSIsImhzdiIsImFyZyIsInR5cGVuYW1lX29mX3NleHBfb3BhcXVlIiwidHlwZXJlcF9vZl9zZXhwX29wYXF1ZSIsIm5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl9mdW5jdGlvbiIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX3VuaXQiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9mbG9hdCIsInR5cGVuYW1lX29mX2NoYXIiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVuYW1lX29mX25hdGl2ZWludCIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfaW50MzIiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlcmVwX29mX3R1cGxlNSIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlMiIsInR5cGVyZXBfb2ZfdHVwbGUwIiwidHlwZXJlcF9vZl9mdW5jdGlvbiIsInR5cGVyZXBfb2ZfcmVmIiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlcmVwX29mX3VuaXQiLCJ0eXBlcmVwX29mX2Jvb2wiLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9jaGFyIiwidHlwZXJlcF9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfbmF0aXZlaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludCIsIndpdGhfcmV0dXJuIiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJ0X3NleHBfZ3JhbW1hciIsIm9mX3N0cmluZyIsIngiLCJ0b19zdHJpbmciLCJ0b19iaW5hYmxlIiwib2ZfYmluYWJsZSIsImNhbGxlcl9pZGVudGl0eSIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInYxIiwidjEkMCIsImJpbl93cml0ZV90IiwicG9zIiwicG9zJDAiLCJwb3MkMSIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJhcmdfMSIsImFyZ18xJDAiLCJ4JDAiLCJvZl9iaWdzdHJpbmciLCJtIiwiYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2xlbmd0aCIsInRvX2JpZ3N0cmluZyIsInByZWZpeF93aXRoX2xlbmd0aCIsInRfbGVuZ3RoIiwiZXByaW50ZiIsImZwcmludGYiLCJrZnByaW50ZiIsInByaW50ZiIsImV4aXRmIiwiZm10IiwiY29sbGVjdF90b19zdHJpbmciLCJmIiwiZG9uZSIsIm91dHB1dCIsImVyciQzIiwiZXJyJDIiLCJlcnIkMSIsImVyciQwIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNCIsImVycm9yX3NvdXJjZV8wMDkiLCJuYW1lJDAiLCJlcnJvcl9zb3VyY2VfMDE4IiwiZXJyb3Jfc291cmNlXzAyMCIsIm5hbWUkMSIsImVycm9yX3NvdXJjZV8wMzMiLCJlcnJvcl9zb3VyY2VfMDM1IiwibmFtZSQyIiwiZXJyb3Jfc291cmNlXzA1MSIsImVycm9yX3NvdXJjZV8wNTMiLCJuYW1lJDMiLCJlcnJvcl9zb3VyY2VfMDY0IiwibmFtZSQ0IiwiZXJyb3Jfc291cmNlXzA4MiIsImVycm9yX3NvdXJjZV8wODQiLCJuYW1lJDUiLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsImNvbXBhcmUiLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ4XzAwNSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInhfMDEwIiwic2V4cF9vZl90JDAiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsImJpbl9yZWFkZXJfdCQxIiwiYmluX3QkMSIsImNvbXBhcmUkMSIsImFfMDExIiwiYl8wMTIiLCJoYXNoX2ZvbGRfdCQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAxNiIsImF0b21fMDE0IiwiYXRvbV8wMTQkMCIsInRfb2Zfc2V4cCQyIiwic2V4cF8wMTkiLCJzZXhwX29mX3QkMSIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImJpbl93cml0ZV90JDIiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDIxIiwiYl8wMjIiLCJyaWdodF8wMjQiLCJsZWZ0XzAyMyIsImhhc2hfZm9sZF90JDIiLCJoc3YkMCIsImhhc2gkMiIsInRfb2Zfc2V4cCQzIiwic2V4cF8wMjgiLCJhdG9tXzAyNiIsInNleHBfYXJnc18wMjkiLCJhdG9tXzAyNiQwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInRfb2Zfc2V4cCQ0Iiwic2V4cF8wMzQiLCJzZXhwX29mX3QkMiIsInZfMDM2IiwiZ3JvdXAkMyIsImJpbl9zaGFwZV90JDMiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwiYmluX3dyaXRlcl90JDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImJpbl90JDMiLCJjb21wYXJlJDMiLCJhXzAzNyIsImJfMDM4IiwicmlnaHRfMDQyIiwibGVmdF8wNDEiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDUiLCJzZXhwXzA1MiIsImF0b21fMDQ0Iiwic2V4cF9hcmdzXzA0NyIsImF0b21fMDQ0JDAiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwic2V4cF9vZl90JDMiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsInN0YWJsZV93aXRuZXNzIiwiZ2xvYmFsaXplIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9ub2JvZHkiLCJiaW5fc2l6ZV9ub2JvZHkiLCJiaW5fd3JpdGVfbm9ib2R5IiwiYmluX3dyaXRlcl9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkkMCIsImJpbl9yZWFkZXJfbm9ib2R5IiwiYmluX25vYm9keSIsImNvbXBhcmVfbm9ib2R5IiwiaGFzaF9mb2xkX25vYm9keSIsImZ1bmMiLCJoYXNoX25vYm9keSIsIm5vYm9keV9vZl9zZXhwIiwic2V4cF9vZl9ub2JvZHkiLCJzdGFibGVfd2l0bmVzc19ub2JvZHkiLCJncm91cCQ3IiwiYmluX3NoYXBlX21lIiwiYmluX3NpemVfbWUiLCJiaW5fd3JpdGVfbWUiLCJiaW5fd3JpdGVyX21lIiwiYmluX3JlYWRfbWUiLCJiaW5fcmVhZF9tZSQwIiwiYmluX3JlYWRlcl9tZSIsImJpbl9tZSIsImNvbXBhcmVfbWUiLCJoYXNoX2ZvbGRfbWUiLCJmdW5jJDAiLCJoYXNoX21lIiwibWVfb2Zfc2V4cCIsInNleHBfb2ZfbWUiLCJzdGFibGVfd2l0bmVzc19tZSIsImdyb3VwJDgiLCJiaW5fc2hhcGVfdCQ1IiwiYmluX3NpemVfdCQ1IiwiYmluX3dyaXRlX3QkNSIsImJpbl93cml0ZXJfdCQ1IiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkX3QkMTMiLCJiaW5fcmVhZGVyX3QkNSIsImJpbl90JDUiLCJjb21wYXJlJDUiLCJhXzEwMSIsImJfMTAyIiwiYV8xMDMiLCJiXzEwNCIsInJpZ2h0XzA3MiIsImxlZnRfMDcxIiwiaGFzaF9mb2xkX3Blcm1zIiwicGVybXNfb2Zfc2V4cCIsIm9mX2FfMTA3IiwieF8xMDkiLCJzZXhwXzA3NCIsImF0b21fMDc1Iiwic2V4cF9hcmdzXzA3OCIsImF0b21fMDc1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwic2V4cF9vZl9wZXJtcyIsIm9mX2FfMTEwIiwieF8xMTEiLCJ2XzA4NyIsImdsb2JhbGl6ZV9wZXJtcyIsImdyb3VwJDkiLCJiaW5fc2hhcGVfcmVhZCIsImJpbl9zaXplX3JlYWQiLCJiaW5fd3JpdGVfcmVhZCIsImJpbl93cml0ZXJfcmVhZCIsImJpbl9yZWFkX3JlYWQiLCJiaW5fcmVhZF9yZWFkJDAiLCJiaW5fcmVhZGVyX3JlYWQiLCJiaW5fcmVhZCIsImNvbXBhcmVfcmVhZCIsImdsb2JhbGl6ZV9yZWFkIiwiaGFzaF9mb2xkX3JlYWQiLCJmdW5jJDEiLCJoYXNoX3JlYWQiLCJyZWFkX29mX3NleHAiLCJzZXhwX29mX3JlYWQiLCJzdGFibGVfd2l0bmVzc19yZWFkIiwiY29tcGFyZV93cml0ZSIsImhhc2hfZm9sZF93cml0ZSIsImZ1bmMkMiIsImhhc2hfd3JpdGUiLCJnbG9iYWxpemVfd3JpdGUiLCJ3cml0ZV9vZl9zZXhwIiwic2V4cF9vZl93cml0ZSIsInN0YWJsZV93aXRuZXNzX3dyaXRlIiwiZ3JvdXAkMTAiLCJiaW5fc2hhcGVfaW1tdXRhYmxlIiwiYmluX3NpemVfaW1tdXRhYmxlIiwiYmluX3dyaXRlX2ltbXV0YWJsZSIsImJpbl93cml0ZXJfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlJDAiLCJiaW5fcmVhZGVyX2ltbXV0YWJsZSIsImJpbl9pbW11dGFibGUiLCJjb21wYXJlX2ltbXV0YWJsZSIsImdsb2JhbGl6ZV9pbW11dGFibGUiLCJoYXNoX2ZvbGRfaW1tdXRhYmxlIiwiZnVuYyQzIiwiaGFzaF9pbW11dGFibGUiLCJpbW11dGFibGVfb2Zfc2V4cCIsInNleHBfb2ZfaW1tdXRhYmxlIiwic3RhYmxlX3dpdG5lc3NfaW1tdXRhYmxlIiwiZ3JvdXAkMTEiLCJiaW5fc2hhcGVfcmVhZF93cml0ZSIsImJpbl9zaXplX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVfcmVhZF93cml0ZSIsImJpbl93cml0ZXJfcmVhZF93cml0ZSIsImJpbl9yZWFkX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlJDAiLCJiaW5fcmVhZGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF93cml0ZSIsImNvbXBhcmVfcmVhZF93cml0ZSIsImdsb2JhbGl6ZV9yZWFkX3dyaXRlIiwiaGFzaF9mb2xkX3JlYWRfd3JpdGUiLCJmdW5jJDQiLCJoYXNoX3JlYWRfd3JpdGUiLCJyZWFkX3dyaXRlX29mX3NleHAiLCJzZXhwX29mX3JlYWRfd3JpdGUiLCJzdGFibGVfd2l0bmVzc19yZWFkX3dyaXRlIiwiZ3JvdXAkMTIiLCJiaW5fc2hhcGVfcGVybXMiLCJiaW5fc2l6ZV9wZXJtcyIsImJpbl93cml0ZV9wZXJtcyIsImJpbl93cml0ZXJfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyIsImJpbl9yZWFkX3Blcm1zJDAiLCJiaW5fcmVhZGVyX3Blcm1zIiwiYmluX3Blcm1zIiwiY29tcGFyZV9wZXJtcyIsImFfMTI4IiwiYl8xMjkiLCJhXzEzMCIsImJfMTMxIiwic3RhYmxlX3dpdG5lc3NfcGVybXMiLCJhX3N0YWJsZV93aXRuZXNzIiwibWFrZSIsImVycm9yX3NvdXJjZV8wMTEiLCJzaXplX29mX2YiLCJzaXplX29mX3MiLCJ3cml0ZV9mIiwid3JpdGVfcyIsImJpbl93cml0ZXJfZiIsImJpbl93cml0ZXJfcyIsIm9mX2YiLCJvZl9zIiwiYmluX3JlYWRlcl9mIiwiYmluX3JlYWRlcl9zIiwiYmluX2YiLCJiaW5fcyIsImNtcF9mIiwiY21wX3MiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsInYwIiwidGFnMCIsInRhZzEiLCJ0eXBlbmFtZSIsInRhZ3MiLCJ2YWx1ZSIsInYwJDAiLCJmX3N0YWJsZV93aXRuZXNzIiwic19zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYxIiwiZjIiLCJ4MSIsIngyIiwiY21wX2IiLCJhXzAzNiIsImJfMDM3IiwiYV8wMzgiLCJiXzAzOSIsImFfMDQwIiwiYl8wNDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwibmFtZXMiLCJ2NCIsInYzIiwidjIiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwicG9zJDIiLCJ2X3Bvc19mbmFtZSIsInZfcG9zX2xudW0iLCJ2X3Bvc19ib2wiLCJ2X3Bvc19jbnVtIiwibiIsIm4kMCIsIm4kMSIsInBvc19jbnVtIiwiciIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19jbnVtJDAiLCJwb3NfYm9sJDAiLCJwb3NfbG51bSQwIiwicG9zX2ZuYW1lJDAiLCJtYWtlX2NyZWF0b3IiLCJwb3NfZm5hbWVfZnVuIiwicG9zX2xudW1fZnVuIiwicG9zX2JvbF9mdW4iLCJwb3NfY251bV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJwb3NfZm5hbWVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsInBvc19sbnVtX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJwb3NfYm9sX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJwb3NfY251bV9nZW4iLCJhY2MiLCJjcmVhdGUiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwicG9zX2NudW1fMDEzIiwicG9zX2JvbF8wMTEiLCJwb3NfbG51bV8wMDkiLCJwb3NfZm5hbWVfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiYTAiLCJhMCQwIiwic3RhYmxlX3dpdG5lc3MkMCIsInN0YWJsZV93aXRuZXNzX2NoZWNrc19mb3JfdCIsInYxJDEiLCJ2MSQyIiwidjEkMyIsInYyJDAiLCJ2MSQ0IiwidjMkMCIsInYyJDEiLCJ2MSQ1Iiwic2l6ZSQyIiwic2l6ZSQzIiwidjIkMiIsInYxJDYiLCJzaXplJDQiLCJ2MiQzIiwidjEkNyIsInNpemUkNSIsInBvcyQzIiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMSIsImFyZ18xJDIiLCJhcmdfMSQzIiwiYXJnXzIiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInN0YWJsZV93aXRuZXNzJDEiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMCIsInN0YWJsZV93aXRuZXNzJDIiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMSIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJ0X3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl90JDYiLCJ0X3NleHBfZ3JhbW1hciQxIiwic3RhYmxlX3dpdG5lc3MkMyIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYmluX3NoYXBlX3QkNiIsImJpbl9zaXplX3QkNiIsImJpbl93cml0ZV90JDYiLCJmYWlsd2l0aHMiLCJzdHJpY3QiLCJoZXJlIiwibWVzc2FnZSIsImZhaWx3aXRocCIsInRlc3RzIiwiYiIsInNpemVfb2ZfYiIsIndyaXRlX2IiLCJiaW5fd3JpdGVyX2IiLCJvZl9iIiwiYmluX3JlYWRlcl9iIiwiYmluX2IiLCJvZl9hXzAxNCIsIm9mX2JfMDE1Iiwic2V4cF8wMjAiLCJ0YWdfMDIxIiwic2V4cF9hcmdzXzAyMiIsInJlczBfMDI0Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvZl9hXzAzMiIsIm9mX2JfMDMzIiwiYXJnMF8wMzQiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYl9zdGFibGVfd2l0bmVzcyIsInhfMDQ3IiwieF8wNDgiLCJlcXVhbCIsInhfMDQ5IiwieF8wNTAiLCJhXzA0MiIsImJfMDQzIiwiYV8wNDQiLCJiXzA0NSIsInJ1biIsInNhbml0aXplIiwidXBvbl91bnJlbGVhc2FibGVfaXNzdWUiLCJvZl9hXzAwNyIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsIm9mX2FfMDE4IiwieF8wMjAiLCJvZl9hXzAyMSIsInhfMDIyIiwibWFwJDEiLCJ2X3N0YXRlIiwidl92YWx1ZSIsInZfc3RhdGUkMCIsIm1lcmdlX2FsbCIsIkhlYXAiLCJub3RfeWV0X2luX2hlYXAiLCJoZWFwIiwiaGVhcCQwIiwic2VxJDIiLCJlbHQkMCIsIm5vdF95ZXRfaW5faGVhcCQwIiwic2VxIiwic2VxJDAiLCJzZXEkMSIsImVsdCIsImRlZmF1bHRfc2VlZCIsImRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDIiLCJnZW5lcmF0b3JfMDEyIiwiZ2VuZXJhdG9yXzAxMyIsInNpemVfMDE2IiwicmFuZG9tXzAxNyIsInNpemVfMDE0IiwicmFuZG9tXzAxNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDIiLCJvYnNlcnZlcl8wMDUiLCJvYnNlcnZlcl8wMDYiLCJ4XzAwNyIsInNpemVfMDA4IiwiaGFzaF8wMDkiLCJoYXNoXzAwOSQwIiwiaGFzaF8wMDkkMSIsImhhc2hfMDA5JDIiLCJoYXNoXzAwOSQzIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MiIsInNocmlua2VyXzAwMSIsInNocmlua2VyXzAwMiIsInhfMDA0IiwieF8wMDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MyIsImdlbmVyYXRvcl8wMzMiLCJnZW5lcmF0b3JfMDM0IiwiZ2VuZXJhdG9yXzAzNSIsInNpemVfMDQwIiwicmFuZG9tXzA0MSIsInNpemVfMDM4IiwicmFuZG9tXzAzOSIsInNpemVfMDM2IiwicmFuZG9tXzAzNyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDMiLCJvYnNlcnZlcl8wMjQiLCJvYnNlcnZlcl8wMjUiLCJvYnNlcnZlcl8wMjYiLCJ4XzAyNyIsInNpemVfMDI4IiwiaGFzaF8wMjkiLCJ4XzAzMCIsImhhc2hfMDI5JDAiLCJoYXNoXzAyOSQxIiwieF8wMzEiLCJoYXNoXzAyOSQyIiwiaGFzaF8wMjkkMyIsInhfMDMyIiwiaGFzaF8wMjkkNCIsImhhc2hfMDI5JDUiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzIiwic2hyaW5rZXJfMDE4Iiwic2hyaW5rZXJfMDE5Iiwic2hyaW5rZXJfMDIwIiwieF8wMjEiLCJ4XzAyMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0IiwiZ2VuZXJhdG9yXzA2MSIsImdlbmVyYXRvcl8wNjIiLCJnZW5lcmF0b3JfMDYzIiwiZ2VuZXJhdG9yXzA2NCIsInNpemVfMDcxIiwicmFuZG9tXzA3MiIsInNpemVfMDY5IiwicmFuZG9tXzA3MCIsInNpemVfMDY3IiwicmFuZG9tXzA2OCIsInNpemVfMDY1IiwicmFuZG9tXzA2NiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDQiLCJvYnNlcnZlcl8wNTAiLCJvYnNlcnZlcl8wNTEiLCJvYnNlcnZlcl8wNTIiLCJvYnNlcnZlcl8wNTMiLCJ4XzA1NCIsInNpemVfMDU1IiwiaGFzaF8wNTYiLCJ4XzA1NyIsImhhc2hfMDU2JDAiLCJoYXNoXzA1NiQxIiwieF8wNTgiLCJoYXNoXzA1NiQyIiwiaGFzaF8wNTYkMyIsInhfMDU5IiwiaGFzaF8wNTYkNCIsImhhc2hfMDU2JDUiLCJ4XzA2MCIsImhhc2hfMDU2JDYiLCJoYXNoXzA1NiQ3IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NCIsInNocmlua2VyXzA0MiIsInNocmlua2VyXzA0MyIsInNocmlua2VyXzA0NCIsInNocmlua2VyXzA0NSIsInhfMDQ2IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDUiLCJnZW5lcmF0b3JfMDk2IiwiZ2VuZXJhdG9yXzA5NyIsImdlbmVyYXRvcl8wOTgiLCJnZW5lcmF0b3JfMDk5IiwiZ2VuZXJhdG9yXzEwMCIsInNpemVfMTA5IiwicmFuZG9tXzExMCIsInNpemVfMTA3IiwicmFuZG9tXzEwOCIsInNpemVfMTA1IiwicmFuZG9tXzEwNiIsInNpemVfMTAzIiwicmFuZG9tXzEwNCIsInNpemVfMTAxIiwicmFuZG9tXzEwMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDUiLCJvYnNlcnZlcl8wODMiLCJvYnNlcnZlcl8wODQiLCJvYnNlcnZlcl8wODUiLCJvYnNlcnZlcl8wODYiLCJvYnNlcnZlcl8wODciLCJ4XzA4OCIsInNpemVfMDg5IiwiaGFzaF8wOTAiLCJ4XzA5MSIsImhhc2hfMDkwJDAiLCJoYXNoXzA5MCQxIiwieF8wOTIiLCJoYXNoXzA5MCQyIiwiaGFzaF8wOTAkMyIsImhhc2hfMDkwJDQiLCJoYXNoXzA5MCQ1IiwiaGFzaF8wOTAkNiIsImhhc2hfMDkwJDciLCJ4XzA5NSIsImhhc2hfMDkwJDgiLCJoYXNoXzA5MCQ5IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NSIsInNocmlua2VyXzA3MyIsInNocmlua2VyXzA3NCIsInNocmlua2VyXzA3NSIsInNocmlua2VyXzA3NiIsInNocmlua2VyXzA3NyIsInhfMDc4IiwieF8wNzkiLCJ4XzA4MCIsInhfMDgxIiwieF8wODIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NiIsImdlbmVyYXRvcl8xMzgiLCJnZW5lcmF0b3JfMTM5IiwiZ2VuZXJhdG9yXzE0MCIsImdlbmVyYXRvcl8xNDEiLCJnZW5lcmF0b3JfMTQyIiwiZ2VuZXJhdG9yXzE0MyIsInNpemVfMTU0IiwicmFuZG9tXzE1NSIsInNpemVfMTUyIiwicmFuZG9tXzE1MyIsInNpemVfMTUwIiwicmFuZG9tXzE1MSIsInNpemVfMTQ4IiwicmFuZG9tXzE0OSIsInNpemVfMTQ2IiwicmFuZG9tXzE0NyIsInNpemVfMTQ0IiwicmFuZG9tXzE0NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDYiLCJvYnNlcnZlcl8xMjMiLCJvYnNlcnZlcl8xMjQiLCJvYnNlcnZlcl8xMjUiLCJvYnNlcnZlcl8xMjYiLCJvYnNlcnZlcl8xMjciLCJvYnNlcnZlcl8xMjgiLCJ4XzEyOSIsInNpemVfMTMwIiwiaGFzaF8xMzEiLCJ4XzEzMiIsImhhc2hfMTMxJDAiLCJoYXNoXzEzMSQxIiwieF8xMzMiLCJoYXNoXzEzMSQyIiwiaGFzaF8xMzEkMyIsInhfMTM0IiwiaGFzaF8xMzEkNCIsImhhc2hfMTMxJDUiLCJ4XzEzNSIsImhhc2hfMTMxJDYiLCJoYXNoXzEzMSQ3IiwieF8xMzYiLCJoYXNoXzEzMSQ4IiwiaGFzaF8xMzEkOSIsInhfMTM3IiwiaGFzaF8xMzEkMTAiLCJoYXNoXzEzMSQxMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDYiLCJzaHJpbmtlcl8xMTEiLCJzaHJpbmtlcl8xMTIiLCJzaHJpbmtlcl8xMTMiLCJzaHJpbmtlcl8xMTQiLCJzaHJpbmtlcl8xMTUiLCJzaHJpbmtlcl8xMTYiLCJ4XzExNyIsInhfMTE4IiwieF8xMTkiLCJ4XzEyMCIsInhfMTIxIiwieF8xMjIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTIiLCJnZW5lcmF0b3JfMTY2IiwiZ2VuZXJhdG9yXzE2NyIsInNpemVfMTY4IiwicmFuZG9tXzE2OSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyIiwib2JzZXJ2ZXJfMTYwIiwib2JzZXJ2ZXJfMTYxIiwic2l6ZV8xNjQiLCJoYXNoXzE2NSIsInhfMTYzIiwieF8xNjIiLCJoYXNoXzE2NSQwIiwiaGFzaF8xNjUkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyIiwic2hyaW5rZXJfMTU2Iiwic2hyaW5rZXJfMTU3IiwieF8xNTkiLCJ4XzE1OCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMyIsImdlbmVyYXRvcl8xODQiLCJnZW5lcmF0b3JfMTg1IiwiZ2VuZXJhdG9yXzE4NiIsInNpemVfMTg3IiwicmFuZG9tXzE4OCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzIiwib2JzZXJ2ZXJfMTc2Iiwib2JzZXJ2ZXJfMTc3Iiwib2JzZXJ2ZXJfMTc4Iiwic2l6ZV8xODIiLCJoYXNoXzE4MyIsInhfMTgxIiwieF8xODAiLCJ4XzE3OSIsImhhc2hfMTgzJDAiLCJoYXNoXzE4MyQxIiwiaGFzaF8xODMkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzIiwic2hyaW5rZXJfMTcwIiwic2hyaW5rZXJfMTcxIiwic2hyaW5rZXJfMTcyIiwieF8xNzUiLCJ4XzE3NCIsInhfMTczIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0IiwiZ2VuZXJhdG9yXzIwNyIsImdlbmVyYXRvcl8yMDgiLCJnZW5lcmF0b3JfMjA5IiwiZ2VuZXJhdG9yXzIxMCIsInNpemVfMjExIiwicmFuZG9tXzIxMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0Iiwib2JzZXJ2ZXJfMTk3Iiwib2JzZXJ2ZXJfMTk4Iiwib2JzZXJ2ZXJfMTk5Iiwib2JzZXJ2ZXJfMjAwIiwic2l6ZV8yMDUiLCJoYXNoXzIwNiIsInhfMjA0IiwieF8yMDMiLCJ4XzIwMiIsInhfMjAxIiwiaGFzaF8yMDYkMCIsImhhc2hfMjA2JDEiLCJoYXNoXzIwNiQyIiwiaGFzaF8yMDYkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0Iiwic2hyaW5rZXJfMTg5Iiwic2hyaW5rZXJfMTkwIiwic2hyaW5rZXJfMTkxIiwic2hyaW5rZXJfMTkyIiwieF8xOTYiLCJ4XzE5NSIsInhfMTk0IiwieF8xOTMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTUiLCJnZW5lcmF0b3JfMjM1IiwiZ2VuZXJhdG9yXzIzNiIsImdlbmVyYXRvcl8yMzciLCJnZW5lcmF0b3JfMjM4IiwiZ2VuZXJhdG9yXzIzOSIsInNpemVfMjQwIiwicmFuZG9tXzI0MSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1Iiwib2JzZXJ2ZXJfMjIzIiwib2JzZXJ2ZXJfMjI0Iiwib2JzZXJ2ZXJfMjI1Iiwib2JzZXJ2ZXJfMjI2Iiwib2JzZXJ2ZXJfMjI3Iiwic2l6ZV8yMzMiLCJoYXNoXzIzNCIsInhfMjMyIiwieF8yMzEiLCJ4XzIzMCIsInhfMjI5IiwieF8yMjgiLCJoYXNoXzIzNCQwIiwiaGFzaF8yMzQkMSIsImhhc2hfMjM0JDIiLCJoYXNoXzIzNCQzIiwiaGFzaF8yMzQkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1Iiwic2hyaW5rZXJfMjEzIiwic2hyaW5rZXJfMjE0Iiwic2hyaW5rZXJfMjE1Iiwic2hyaW5rZXJfMjE2Iiwic2hyaW5rZXJfMjE3IiwieF8yMjIiLCJ4XzIyMSIsInhfMjIwIiwieF8yMTkiLCJ4XzIxOCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNiIsImdlbmVyYXRvcl8yNjgiLCJnZW5lcmF0b3JfMjY5IiwiZ2VuZXJhdG9yXzI3MCIsImdlbmVyYXRvcl8yNzEiLCJnZW5lcmF0b3JfMjcyIiwiZ2VuZXJhdG9yXzI3MyIsInNpemVfMjc0IiwicmFuZG9tXzI3NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2Iiwib2JzZXJ2ZXJfMjU0Iiwib2JzZXJ2ZXJfMjU1Iiwib2JzZXJ2ZXJfMjU2Iiwib2JzZXJ2ZXJfMjU3Iiwib2JzZXJ2ZXJfMjU4Iiwib2JzZXJ2ZXJfMjU5Iiwic2l6ZV8yNjYiLCJoYXNoXzI2NyIsInhfMjY1IiwieF8yNjQiLCJ4XzI2MyIsInhfMjYyIiwieF8yNjEiLCJ4XzI2MCIsImhhc2hfMjY3JDAiLCJoYXNoXzI2NyQxIiwiaGFzaF8yNjckMiIsImhhc2hfMjY3JDMiLCJoYXNoXzI2NyQ0IiwiaGFzaF8yNjckNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2Iiwic2hyaW5rZXJfMjQyIiwic2hyaW5rZXJfMjQzIiwic2hyaW5rZXJfMjQ0Iiwic2hyaW5rZXJfMjQ1Iiwic2hyaW5rZXJfMjQ2Iiwic2hyaW5rZXJfMjQ3IiwieF8yNTMiLCJ4XzI1MiIsInhfMjUxIiwieF8yNTAiLCJ4XzI0OSIsInhfMjQ4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4yIiwib2JzZXJ2ZXJfMjgyIiwib2JzZXJ2ZXJfMjgzIiwiZ2VuZXJhdG9yXzI4NCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMyIsIm9ic2VydmVyXzI5MyIsIm9ic2VydmVyXzI5NCIsIm9ic2VydmVyXzI5NSIsImdlbmVyYXRvcl8yOTYiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjQiLCJvYnNlcnZlcl8zMDciLCJvYnNlcnZlcl8zMDgiLCJvYnNlcnZlcl8zMDkiLCJvYnNlcnZlcl8zMTAiLCJnZW5lcmF0b3JfMzExIiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm41Iiwib2JzZXJ2ZXJfMzI0Iiwib2JzZXJ2ZXJfMzI1Iiwib2JzZXJ2ZXJfMzI2Iiwib2JzZXJ2ZXJfMzI3Iiwib2JzZXJ2ZXJfMzI4IiwiZ2VuZXJhdG9yXzMyOSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNiIsIm9ic2VydmVyXzM0NCIsIm9ic2VydmVyXzM0NSIsIm9ic2VydmVyXzM0NiIsIm9ic2VydmVyXzM0NyIsIm9ic2VydmVyXzM0OCIsIm9ic2VydmVyXzM0OSIsImdlbmVyYXRvcl8zNTAiLCJvZl9oYXNoIiwiTSIsIm9mX3ByZWRpY2F0ZSIsInNpbmdsZXRvbiIsImRvdWJsZXRvbiIsImVudW0kMCIsIm9mX2xpc3QiLCJsaXN0IiwieSIsImkiLCJvZl9mdW4iLCJjb21wYXJpc29uIiwiZXEiLCJsdCIsImd0IiwiYyIsInJldHVybiQwIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJzaW5nbGV0b24kMCIsImRvdWJsZXRvbiQwIiwicmFuZG9tIiwib2ZfZnVuJDAiLCJvZl9zZXF1ZW5jZSIsInAiLCJrIiwiZ2VvbWV0cmljIiwibGlzdF93aXRoX2xlbmd0aCIsImxlbmd0aCIsImNvbXBhcmVfZm4iLCJkb20iLCJnZXRfaW5kZXgiLCJiXzM1MiIsImFfMzUxIiwiZXF1YWxfZm4iLCJjbXAiLCJlbXB0eSIsIm5vbmRldGVybWluaXN0aWNfc3RhdGUiLCJyYW5kb21fc3RhdGVfb2Zfc2VlZCIsInNlZWQiLCJzdHIiLCJtYWtlX3NlZWQiLCJzdHJpbmciLCJtYWtlX3Nocmlua19jb3VudCIsIm1ha2VfY29uZmlnIiwic2l6ZXMiLCJ0cmlhbHMiLCJzaHJpbmtfYXR0ZW1wdHMiLCJtYWtlX3Rlc3RfbSIsImdlbiIsInNocmlua2VyIiwic2V4cF9vZiIsInJhbmRvbV92YWx1ZSIsInJhbmRvbV9zZXF1ZW5jZSIsImNvbmZpZyIsInNlcXVlbmNlIiwidGVzdCIsImV4YW1wbGVzIiwidGVzdF9tIiwidGVzdF9vcl9lcnJvciIsInRlc3RfZGlzdGluY3RfdmFsdWVzIiwiZGlzdGluY3RfdmFsdWVzIiwic2V4cF9vZiQwIiwic2V0Iiwic2V0JDAiLCJhY3R1YWxfY291bnQiLCJzZXhwX29mX2VsdCIsInhfMzUzIiwidmFsdWVzIiwibWF0Y2giLCJyZXMiLCJoIiwidGVzdF9jYW5fZ2VuZXJhdGUiLCJzZXhwX29mX3ZhbHVlIiwieF8zNTQiLCJkZWZhdWx0X3RyaWFsX2NvdW50IiwiZGVmYXVsdF9zaXplcyIsImdlbmVyYXRlX2EiLCJvYnNlcnZlX2EiLCJzaHJpbmtfYSIsIm5vcm1hbGl6ZSIsImxlbmd0aF9mdW4iLCJzbGljZSIsInN1Yl9mdW4iLCJzdGFydCIsInN0b3AiLCJzdG9wJDAiLCJsZW4iLCJnZW5lcmF0b3JfMDAzIiwib2JzZXJ2ZXJfMDAyIiwiYmluYXJ5X3NlYXJjaCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIiwib2ZfYXJyYXkiLCJhcHBlbmQiLCJmaWx0ZXIiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsInBhcnRpdGlvbl90ZiIsInBhcnRpdGlvbl9tYXAiLCJtZW0iLCJpc19lbXB0eSIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRpIiwiaXRlcmkiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJjb3VudGkiLCJmaW5kaSIsImZpbmRfbWFwaSIsIm1hcGkiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwibWFrZV9tYXRyaXgiLCJjb3B5X21hdHJpeCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiYmxpdCIsImJsaXRvIiwidW5zYWZlX2JsaXQiLCJzdWIiLCJzdWJvIiwiZm9sZGluZ19tYXAiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcCIsImZvbGRfbWFwaSIsImZvbGRfcmlnaHQiLCJzb3J0Iiwic3RhYmxlX3NvcnQiLCJpc19zb3J0ZWQiLCJpc19zb3J0ZWRfc3RyaWN0bHkiLCJtZXJnZSIsInBhcnRpdGlvbmlfdGYiLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsInRyYW5zcG9zZSIsInRyYW5zcG9zZV9leG4iLCJmaWx0ZXJfb3B0IiwiaXRlcjJfZXhuIiwibWFwMl9leG4iLCJmb2xkMl9leG4iLCJmb3JfYWxsMl9leG4iLCJleGlzdHMyX2V4biIsInN3YXAiLCJyZXZfaW5wbGFjZSIsInJldiIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kX2V4biIsImZpbmRfbWFwX2V4biIsImZpbmRpX2V4biIsImZpbmRfbWFwaV9leG4iLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsInJlZHVjZSIsInJlZHVjZV9leG4iLCJwZXJtdXRlIiwicmFuZG9tX2VsZW1lbnQiLCJyYW5kb21fZWxlbWVudF9leG4iLCJ6aXAiLCJ6aXBfZXhuIiwidW56aXAiLCJzb3J0ZWRfY29weSIsImxhc3QiLCJ0b19zZXF1ZW5jZSIsInRvX3NlcXVlbmNlX211dGFibGUiLCJuZ2V0IiwibnNldCIsImdldCIsImNvbXBhcmVfdCIsImFfMDA0IiwiYl8wMDUiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiY29tcGFyZV9hIiwiY29tcGFyZV9iIiwidF8wMDYiLCJ0XzAwNSIsInRfMDA4IiwidF8wMDciLCJnZW5fbm9uX2VtcHR5IiwiZ2VuX3dpdGhfbGVuZ3RoIiwiZ2VuX2ZpbHRlcmVkIiwiZ2VuX3Blcm11dGF0aW9ucyIsIm1vZHVsZV9uYW1lJDAiLCJtb2R1bGVfbmFtZSIsImhhc2hhYmxlX3MiLCJmaW5kX211bHRpIiwicmVtb3ZlX211bHRpIiwiYWRkX211bHRpIiwiZGVjciIsImluY3IiLCJ0b19hbGlzdCIsInNpbWlsYXIiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwibWFwaV9pbnBsYWNlIiwiZmlsdGVyaV9pbnBsYWNlIiwiZmlsdGVyX2lucGxhY2UiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZGF0YSIsImtleXMiLCJtZXJnZV9pbnRvIiwiZmluZF9hbmRfcmVtb3ZlIiwiZmluZGlfYW5kX2NhbGwyIiwiZmluZGlfYW5kX2NhbGwxIiwiZmluZGlfYW5kX2NhbGwiLCJmaW5kX2FuZF9jYWxsMiIsImZpbmRfYW5kX2NhbGwxIiwiZmluZF9hbmRfY2FsbCIsImZpbmRpX29yX2FkZCIsImZpbmRfb3JfYWRkIiwicGFydGl0aW9uX21hcGkiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9yYW5kb21seV9leG4iLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfZXhuIiwiY2hvb3NlIiwicmVtb3ZlIiwiaXRlcl9rZXlzIiwiY2xlYXIiLCJzZXhwX29mX2tleSIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfbWFwcGVkIiwib2ZfYWxpc3RfbXVsdGkiLCJvZl9hbGlzdF9leG4iLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsIm9mX2FsaXN0IiwiaGFzaF9wYXJhbSIsInZhbGlkYXRlIiwiZ3Jvd3RoX2FsbG93ZWQiLCJoYXNoYWJsZSIsIm9mX2FsaXN0JDAiLCJsIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJvZl9hbGlzdF9vcl9lcnJvciQwIiwib2ZfYWxpc3RfZXhuJDAiLCJvZl9hbGlzdF9tdWx0aSQwIiwiY3JlYXRlX21hcHBlZCQwIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsImNvbWJpbmUiLCJiaW5fc2hhcGVfZWwiLCJiaW5fc2l6ZV9lbCIsImJpbl93cml0ZV9lbCIsImJpbl9yZWFkX2VsIiwiaXRlciQxIiwia2V5IiwibmV4dCIsImludmFyaWFudF9rZXkiLCJzZXhwX29mX3YiLCJ2X29mX3NleHAiLCJkYXRhX3N0YWJsZV93aXRuZXNzIiwiZXF1YWxfbV90IiwibV90X3NleHBfZ3JhbW1hciIsIm1fdF9vZl9zZXhwIiwic2V4cF9vZl9tX3QiLCJvZl9hbGlzdF9vcHRpb24iLCJhbGlzdCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fdCIsIktleSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGEiLCJzaXplXzAwNCIsInJhbmRvbV8wMDUiLCJxdWlja2NoZWNrX29ic2VydmVyX21fdCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YSIsInhfMDA2IiwicXVpY2tjaGVja19zaHJpbmtlcl9tX3QiLCJxdWlja2NoZWNrX3Nocmlua2VyX2RhdGEiLCJoYXNoYWJsZSQwIiwib2ZfbGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzMSIsInNpemVfb2ZfayIsInNpemVfb2ZfdiIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJ3cml0ZV9rIiwid3JpdGVfdiIsImJpbl93cml0ZXJfayIsImJpbl93cml0ZXJfdiIsIm9mX2siLCJvZl92IiwiYmluX3JlYWRlcl9rIiwiYmluX3JlYWRlcl92IiwiYmluX2siLCJiaW5fdiIsImNtcF9rIiwiY21wX3YiLCJ0XzAwNCIsInRfMDAzIiwicmlnaHRfMDA4IiwibGVmdF8wMDciLCJyaWdodF8wMTIiLCJsZWZ0XzAxMSIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDEwIiwibGVmdF8wMDkiLCJvZl9rXzAxNyIsIm9mX3ZfMDE4Iiwic2V4cF8wNDUiLCJhcmcxXzA0MiIsImFyZzBfMDQxIiwicmVzMF8wNDMiLCJhdG9tXzAyMSIsInNleHBfYXJnc18wMjQiLCJhdG9tXzAyMSQwIiwiYXJnMF8wMzIiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJyZXMwXzAzMyIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzOCIsInJlczFfMDQ0Iiwib2Zfa18wNDYiLCJvZl92XzA0NyIsImFyZzFfMDU2IiwiYXJnMF8wNTUiLCJyZXMwXzA1NyIsInZfMDQ4IiwicmVzMV8wNTgiLCJ2XzA1MCIsImFyZzFfMDUyIiwiYXJnMF8wNTEiLCJyZXMwXzA1MyIsInJlczFfMDU0Iiwidl8wNDkiLCJrX3N0YWJsZV93aXRuZXNzIiwidl9zdGFibGVfd2l0bmVzcyIsImRpZmYiLCJrJDAiLCJkaWZmJDAiLCJ2JDAiLCJtYXBfZGF0YSIsImxlZnQiLCJyaWdodCIsImdlbl90cmVlIiwiY29tcGFyYXRvciIsImtfZ2VuIiwidl9nZW4iLCJvYnNfdHJlZSIsImtfb2JzIiwidl9vYnMiLCJzaHJfdHJlZSIsImtfc2hyIiwidl9zaHIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwiaGFzaF9mb2xkX2RpcmVjdCIsIm9mX2hhc2h0YmxfZXhuIiwiaGFzaHRibCIsInRyZWVfb2ZfaGFzaHRibF9leG4iLCJrZXlfc2V0Iiwia2V5X3NldF9vZl90cmVlIiwib2Zfa2V5X3NldCIsInRyZWVfb2Zfa2V5X3NldCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJ0b190cmVlJDAiLCJyYW5rIiwibnRoX2V4biIsIm50aCIsImNsb3Nlc3Rfa2V5IiwicmFuZ2VfdG9fYWxpc3QiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInN1YnJhbmdlIiwic3BsaXRfbHRfZ2UiLCJzcGxpdF9sZV9ndCIsInNwbGl0IiwibWF4X2VsdF9leG4iLCJtaW5fZWx0X2V4biIsImZvbGRfc3ltbWV0cmljX2RpZmYiLCJzeW1tZXRyaWNfZGlmZiIsIm1lcmdlX3NrZXdlZCIsImtleXMkMCIsImNvbXBhcmVfZGlyZWN0IiwiY29tYmluZV9lcnJvcnMiLCJmb2xkMiIsIml0ZXIyIiwiaXRlcmlfdW50aWwiLCJpbnZhcmlhbnRzIiwidmFsaWRhdGVpIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwia2V5X3NldCQwIiwia2V5X3NldCQxIiwiY29tcGFyYXRvcl9zIiwiaW52YXJpYW50cyQwIiwiZW1wdHkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDAiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMCIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQwIiwib2Zfc2VxdWVuY2VfZXhuJDAiLCJvZl9zZXF1ZW5jZV9tdWx0aSQwIiwib2Zfc2VxdWVuY2VfZm9sZCQwIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDAiLCJvZl9saXN0X3dpdGhfa2V5JDAiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDAiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQwIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiZm9yX2FsbGkkMCIsImV4aXN0c2kkMCIsImNvdW50JDAiLCJjb3VudGkkMCIsInNwbGl0JDAiLCJzcGxpdF9sZV9ndCQwIiwic3BsaXRfbHRfZ2UkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2xpc3Rfd2l0aF9rZXkiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwib2ZfaXRlcmkiLCJvZl9pdGVyaV9leG4iLCJ0b190cmVlIiwiZGF0YV9lcXVhbCIsImxvd2VyX3BhcnQiLCJ1cHBlcl9wYXJ0IiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsIm1pbiIsIm1heCIsIm9yZGVyIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiaG93Iiwic2VnbWVudF9vZiIsIm1hcF9rZXlzIiwibWFwX2tleXNfZXhuIiwidHJhbnNwb3NlX2tleXMiLCJpbml0X2Zvcl9iaW5fcHJvdCIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsIm1hcF9rZXlzJDEiLCJtYXBfa2V5c19leG4kMSIsInRyYW5zcG9zZV9rZXlzJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMSIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQxIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwib2ZfaXRlcmkkMiIsIm9mX2l0ZXJpX2V4biQyIiwib2Zfa2V5X3NldCQxIiwidG9fdHJlZSQyIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImxlbmd0aCQxIiwic2V0JDEiLCJhZGQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiZmluZF9leG4kMSIsImZpbmQkMSIsInJlbW92ZSQxIiwibWVtJDEiLCJpdGVyX2tleXMkMSIsIml0ZXIkMiIsIml0ZXJpJDEiLCJpdGVyaV91bnRpbCQxIiwiaXRlcjIkMSIsIm1hcCQyIiwibWFwaSQxIiwiZm9sZCQxIiwiZm9sZF91bnRpbCQxIiwiZm9sZF9yaWdodCQxIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXIkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXAkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwicGFydGl0aW9uX3RmJDEiLCJjb21iaW5lX2Vycm9ycyQxIiwiY29tcGFyZV9kaXJlY3QkMSIsImtleXMkMiIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGVpJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwibWluX2VsdCQxIiwibWluX2VsdF9leG4kMSIsIm1heF9lbHQkMSIsIm1heF9lbHRfZXhuJDEiLCJmb3JfYWxsJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzJDEiLCJleGlzdHNpJDEiLCJjb3VudCQxIiwiY291bnRpJDEiLCJzcGxpdCQxIiwic3BsaXRfbGVfZ3QkMSIsInNwbGl0X2x0X2dlJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJzdGFibGVfd2l0bmVzc19tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxNiIsImVycm9yX3NvdXJjZV8wNjYiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsIm9mX2FfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5Iiwic2V4cF9hcmdzXzAyNSIsInJlczBfMDI3Iiwib2ZfYV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwieCQxIiwiYV8wNDEiLCJiXzA0MiIsImFfMDQzIiwiYl8wNDQiLCJhXzA0NSIsImJfMDQ2IiwiZ2VuZXJhdG9yXzA1NiIsInNpemVfMDYxIiwicmFuZG9tXzA2MiIsInNpemVfMDU5IiwicmFuZG9tXzA2MCIsInNpemVfMDU3IiwicmFuZG9tXzA1OCIsInhfMDUxIiwic2l6ZV8wNTIiLCJoYXNoXzA1MyIsImhhc2hfMDUzJDAiLCJoYXNoXzA1MyQxIiwiaGFzaF8wNTMkMiIsInhfMDU1IiwiaGFzaF8wNTMkMyIsImhhc2hfMDUzJDQiLCJzaHJpbmtlcl8wNDciLCJvZl9hXzA2MyIsInNleHBfMDY4IiwidGFnXzA2OSIsInNleHBfYXJnc18wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwic2V4cF9hcmdzXzA3NSIsImFyZzBfMDc2IiwicmVzMF8wNzciLCJvZl9hXzA3OSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImFfMDg1IiwiYl8wODYiLCJhXzA4NyIsImJfMDg4IiwiZXF1YWwkMiIsImFfMDg5IiwiYl8wOTAiLCJhXzA5MSIsImJfMDkyIiwiZWx0X2dlbiIsImVsdF9vYnMiLCJlbHRfc2hyIiwiZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvIiwidG9fbWFwIiwib2ZfbWFwX2tleXMiLCJvZl9oYXNoX3NldCIsImhzZXQiLCJvZl9oYXNodGJsX2tleXMiLCJ1bmlvbiQwIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMCIsInN1bSQwIiwiZmluZF9tYXAkMCIsInJlbW92ZV9pbmRleCQwIiwiaXNfc3Vic2V0JDAiLCJhcmVfZGlzam9pbnQkMCIsIm9mX2FycmF5JDAiLCJ0b19hcnJheSQwIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDAiLCJlbGVtZW50cyQwIiwiY2hvb3NlJDAiLCJjaG9vc2VfZXhuJDAiLCJncm91cF9ieSQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQwIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwic3RhYmxlX2RlZHVwX2xpc3QiLCJ4cyIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl9saXN0JDMiLCJvZl9zZXF1ZW5jZSQzIiwib2ZfaGFzaF9zZXQkMyIsIm9mX2hhc2h0Ymxfa2V5cyQzIiwib2ZfYXJyYXkkMyIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMyIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQzIiwib2Zfc29ydGVkX2FycmF5JDMiLCJ1bmlvbl9saXN0JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwib2ZfdHJlZSQzIiwib2ZfbWFwX2tleXMkMyIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwidCQwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhX3NleHBfZ3JhbW1hciIsImFfMDEwIiwiYl8wMTEiLCJub25lIiwic29tZSIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInVuaW9uIiwicjEiLCJ0MSQwIiwicjIiLCJ0MiQwIiwibjEiLCJuMiIsImlzX2NvbXByZXNzZWQiLCJwaHlzX2VxdWFsIiwidW5pb25fZmluZF9nZXRfY2hlY2tfbm9fcGVuZGluIiwiY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIiwiaW5jcl9sZW5ndGgiLCJpbmNyX3BlbmRpbmdfaXRlcnMiLCJkZWNyX3BlbmRpbmdfaXRlcnMiLCJ3aXRoX2l0ZXJhdGlvbl8ybCIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiZmlyc3RfZXhuIiwibGFzdF9leG4iLCJpc19maXJzdCIsImlzX2xhc3QiLCJtZW1fZWx0IiwicHJldiQwIiwiaW5zZXJ0X2FmdGVyJDAiLCJpbnNlcnRfYmVmb3JlJDAiLCJuZXdfZWx0IiwiaW5zZXJ0X2VtcHR5IiwiaW5zZXJ0X2xhc3QiLCJpbnNlcnRfZmlyc3QiLCJyZW1vdmVfbGFzdCIsInJlbW92ZV9maXJzdCIsInNlY29uZCIsIm5ld190IiwidmFsdWUkMCIsIm1vdmVfYmVmb3JlIiwiYW5jaG9yIiwiYWZ0ZXJfZWx0IiwibW92ZV90b19mcm9udCIsIm1vdmVfYWZ0ZXIiLCJtb3ZlX3RvX2JhY2siLCJhXzAxNSIsImJfMDE2Iiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJhXzAxNyIsImJfMDE4IiwiYV8wMTkiLCJiXzAyMCIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdGV4dCIsIm9mX3RleHQiLCJ2YWx1ZV9vZl9zZXhwIiwidGV4dCIsImZpbGVuYW1lIiwiYW5ub3RhdGVkIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX3ZhbHVlIiwiYmluX3NoYXBlX25vX3JhaXNlIiwiYmluX3NpemVfbm9fcmFpc2UiLCJiaW5fd3JpdGVfbm9fcmFpc2UiLCJiaW5fd3JpdGVyX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UiLCJiaW5fcmVhZF9ub19yYWlzZSQwIiwiYmluX3JlYWRlcl9ub19yYWlzZSIsImJpbl9ub19yYWlzZSIsIm5vX3JhaXNlX29mX3NleHAiLCJvZl9hXzAyNyIsInNleHBfb2Zfbm9fcmFpc2UiLCJvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWMiLCJvZl9zZXhwIiwic2V4cF9vZl9kYXRhIiwiYXJnMV8wMDIiLCJyZXMwXzAwMyIsInJlczFfMDA0Iiwia3YiLCJyZWFkIiwiZW5zdXJlX2Nhbl9tb2RpZnkiLCJsb29rdXAiLCJsb29rdXBfZXhuIiwiZW5xdWV1ZV91bmNoZWNrZWQiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlIiwiZW5xdWV1ZV9iYWNrIiwiZW5xdWV1ZV9mcm9udCIsImVucXVldWVfZXhuIiwiZW5xdWV1ZV9iYWNrX2V4biIsImVucXVldWVfZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2siLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IiwiZGVxdWV1ZV93aXRoX2tleSIsIm1heWJlX2t2IiwiZGVxdWV1ZV93aXRoX2tleV9leG4iLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXkiLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleSIsImRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZSIsImRlcXVldWVfYmFjayIsImRlcXVldWVfZnJvbnQiLCJsYXN0X3dpdGhfa2V5IiwiZmlyc3Rfd2l0aF9rZXkiLCJkZXF1ZXVlX2V4biIsImRlcXVldWVfYmFja19leG4iLCJkZXF1ZXVlX2Zyb250X2V4biIsImFjIiwiZmluaXNoIiwiZGVxdWV1ZV9hbGwiLCJyZW1vdmVfZXhuIiwibG9va3VwX2FuZF9yZW1vdmUiLCJyZXBsYWNlIiwicmVwbGFjZV9vcl9lbnF1ZXVlIiwicmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IiwicmVwbGFjZV9vcl9lbnF1ZXVlX2JhY2siLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwidW5zYWZlX3N1YiIsInN5bWJvbF9jb25jYXQiLCJlc2NhcGVkIiwiY29udGFpbnMiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwidW5jYXBpdGFsaXplIiwiaW5kZXgiLCJpbmRleF9leG4iLCJpbmRleF9mcm9tIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXgiLCJyaW5kZXhfZXhuIiwicmluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbV9leG4iLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0IiwidG9fbGlzdF9yZXYiLCJpc19zdWZmaXgiLCJpc19wcmVmaXgiLCJsc3BsaXQyX2V4biIsInJzcGxpdDJfZXhuIiwibHNwbGl0MiIsInJzcGxpdDIiLCJzcGxpdF9vbl9jaGFycyIsInNwbGl0X2xpbmVzIiwibGZpbmRpIiwicmZpbmRpIiwibHN0cmlwIiwicnN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY2hvcF9zdWZmaXhfZXhuIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3ByZWZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3BfcHJlZml4X2lmX2V4aXN0cyIsInN1ZmZpeCIsInByZWZpeCIsImRyb3Bfc3VmZml4IiwiZHJvcF9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeF9sZW5ndGgiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29uY2F0X2FycmF5IiwiY29uY2F0X2xpbmVzIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsInBhZF9sZWZ0IiwicGFkX3JpZ2h0IiwiaXNfc3VmZml4JDAiLCJpc19wcmVmaXgkMCIsImlzX3N1YnN0cmluZyQwIiwiaXNfc3Vic3RyaW5nX2F0JDAiLCJzdWJzdHJfaW5kZXgkMCIsInN1YnN0cl9pbmRleF9leG4kMCIsInN1YnN0cl9pbmRleF9hbGwkMCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0JDAiLCJzdWJzdHJfcmVwbGFjZV9hbGwkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInNleHBfMDA0IiwidGFnMiIsInZhbGlkYXRlX29yZGluYXJ5Iiwicm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIiwicm9idXN0bHlfY29tcGFyZSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsInN5bWJvbCQxNyIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsInJvYnVzdGx5X2NvbXBhcmUkMCIsInJvYnVzdF9zaWduIiwidG9fc3RyaW5nXzEyIiwiZ2VuX3VuaWZvcm1fZXhjbCIsImdlbl9pbmNsIiwiZ2VuX3dpdGhvdXRfbmFuIiwiZ2VuX2Zpbml0ZSIsImdlbl9wb3NpdGl2ZSIsImdlbl9uZWdhdGl2ZSIsImdlbl96ZXJvIiwiZ2VuX25hbiIsImdlbl9zdWJub3JtYWwiLCJnZW5fbm9ybWFsIiwiZ2VuX2luZmluaXRlIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsInRvX2ludF9leG4iLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwib2Zfc3RyaW5nX29wdCIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwiYmluX25hbWUiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJiaW5kIiwiam9pbiIsImlnbm9yZV9tIiwiYWxsX3VuaXQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwicGVlayIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsImJwcmludGYiLCJjb25zdCQwIiwiZXJyb3IiLCJlcnJvcl9zIiwiZm9yY2UiLCJpbnZhbGlkX2FyZ2YiLCJpZnByaW50ZiIsImlzX25vbmUiLCJpc19zb21lIiwia3NwcmludGYiLCJva19leG4iLCJwcmludF9zIiwiZXByaW50X3MiLCJwcm90ZWN0IiwicHJvdGVjdHgiLCJyYWlzZV9zIiwic3ltYm9sJDExIiwic3ByaW50ZiIsInN0YWdlIiwidW5zdGFnZSIsIndpdGhfcmV0dXJuX29wdGlvbiIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaXplX2FycmF5IiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlcl9hcnJheSIsImJpbl9yZWFkX2FycmF5IiwiYmluX3JlYWRfYXJyYXkkMCIsImJpbl9yZWFkZXJfYXJyYXkiLCJiaW5fYXJyYXkiLCJjb21wYXJlX2FycmF5IiwiZXF1YWxfYXJyYXkiLCJnbG9iYWxpemVfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImdsb2JhbGl6ZV9ib29sIiwiYm9vbF9vZl9zZXhwIiwic2V4cF9vZl9ib29sIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Jvb2wiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaXplX2NoYXIiLCJiaW5fd3JpdGVfY2hhciIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkX2NoYXIiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZGVyX2NoYXIiLCJiaW5fY2hhciIsImNvbXBhcmVfY2hhciIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9jaGFyIiwiZXF1YWxfY2hhciIsImdsb2JhbGl6ZV9jaGFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2l6ZV9mbG9hdCIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZXJfZmxvYXQiLCJiaW5fcmVhZF9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZGVyX2Zsb2F0IiwiYmluX2Zsb2F0IiwiY29tcGFyZV9mbG9hdCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZmxvYXQiLCJlcXVhbF9mbG9hdCIsImdsb2JhbGl6ZV9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2l6ZV9pbnQiLCJiaW5fd3JpdGVfaW50IiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZF9pbnQiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkZXJfaW50IiwiYmluX2ludCIsImNvbXBhcmVfaW50IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfaW50IiwiZXF1YWxfaW50IiwiZ2xvYmFsaXplX2ludCIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDMyJDAiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiY29tcGFyZV9pbnQzMiIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfaW50MzIiLCJlcXVhbF9pbnQzMiIsImdsb2JhbGl6ZV9pbnQzMiIsImludDMyX29mX3NleHAiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQzMiIsImJpbl9zaGFwZV9pbnQ2NCIsImJpbl9zaXplX2ludDY0IiwiYmluX3dyaXRlX2ludDY0IiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfaW50NjQkMCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJjb21wYXJlX2ludDY0IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9pbnQ2NCIsImVxdWFsX2ludDY0IiwiZ2xvYmFsaXplX2ludDY0IiwiaW50NjRfb2Zfc2V4cCIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2ludDY0IiwiYmluX3NoYXBlX2xhenlfdCIsImJpbl9zaXplX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRlcl9sYXp5X3QiLCJiaW5fbGF6eV90IiwiY29tcGFyZV9sYXp5X3QiLCJhXzA1NCIsImJfMDU1IiwiaGFzaF9mb2xkX2xhenlfdCIsImxhenlfdF9vZl9zZXhwIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9sYXp5X3QiLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaXplX2xpc3QiLCJiaW5fd3JpdGVfbGlzdCIsImJpbl93cml0ZXJfbGlzdCIsImJpbl9yZWFkX2xpc3QiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZGVyX2xpc3QiLCJiaW5fbGlzdCIsImNvbXBhcmVfbGlzdCIsImFfMDYzIiwiYl8wNjQiLCJhXzA2NSIsImJfMDY2IiwiaGFzaF9mb2xkX2xpc3QiLCJlcXVhbF9saXN0IiwiYV8wNjciLCJiXzA2OCIsImFfMDY5IiwiYl8wNzAiLCJnbG9iYWxpemVfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJnbG9iYWxpemVfbmF0aXZlaW50IiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImZ1bmMkNSIsImhhc2hfbmF0aXZlaW50IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX25hdGl2ZWludCIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlcl9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24kMCIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImNvbXBhcmVfb3B0aW9uIiwiYV8wODYiLCJiXzA4NyIsImVxdWFsX29wdGlvbiIsImFfMDkyIiwiYl8wOTMiLCJnbG9iYWxpemVfb3B0aW9uIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImdsb2JhbGl6ZV9zdHJpbmciLCJoYXNoX2ZvbGRfc3RyaW5nIiwiZnVuYyQ2IiwiaGFzaF9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsIm5hbWVfb2Zfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fd3JpdGVfYnl0ZXMiLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ieXRlcyIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fcmVhZF9yZWYiLCJiaW5fcmVhZF9yZWYkMCIsImJpbl9yZWFkZXJfcmVmIiwiYmluX3JlZiIsImNvbXBhcmVfcmVmIiwiYV8xMTUiLCJiXzExNiIsImFfMTE3IiwiYl8xMTgiLCJlcXVhbF9yZWYiLCJhXzExOSIsImJfMTIwIiwiYV8xMjEiLCJiXzEyMiIsImdsb2JhbGl6ZV9yZWYiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfcmVmIiwiZ3JvdXAkMTMiLCJiaW5fc2hhcGVfdW5pdCIsImJpbl9zaXplX3VuaXQiLCJiaW5fd3JpdGVfdW5pdCIsImJpbl93cml0ZXJfdW5pdCIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF91bml0JDAiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImNvbXBhcmVfdW5pdCIsImVxdWFsX3VuaXQiLCJnbG9iYWxpemVfdW5pdCIsImhhc2hfZm9sZF91bml0IiwiZnVuYyQ3IiwiaGFzaF91bml0IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3VuaXQiLCJncm91cCQxNCIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwic3RhYmxlX3dpdG5lc3NfdF9mcm96ZW4iLCJtYXhfbWVtX3dhaXRpbmdfZ2MiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMiLCJzdWJfc2hhcmVkIiwiYnN0ciIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIiwid3JpdGUiLCJkYXRhX2xlbiIsInRvdGFsX2xlbiIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInZfMDA1IiwicmVzMF8wMTEiLCJ2XzAwNiIsInJlczFfMDEyIiwidl8wMDciLCJyZXMyXzAxMyIsInBvc19hZnRlcl9zaXplX2hlYWRlciIsInBvc19hZnRlcl9kYXRhIiwiYXJnNF8wMjMiLCJhcmczXzAyMiIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInZfMDE0Iiwidl8wMTUiLCJyZXMxXzAyNSIsInZfMDE2IiwicmVzMl8wMjYiLCJ2XzAxNyIsInJlczNfMDI3Iiwidl8wMTgiLCJyZXM0XzAyOCIsIndyaXRlX2Jpbl9wcm90Iiwid3JpdGVyIiwibGFzdF9ub25tYXRjaF9wbHVzX29uZSIsIm1pbl9wb3MiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsImRhdGFfZW5kIiwiZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sIiwic2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIiwiaGVhZF9vcl90YWlsIiwic2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyIsInNsZW4iLCJmaXJzdF9ub25tYXRjaCIsIm1heF9wb3MiLCJzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwiZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImRhdGFfYmVnaW4iLCJnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nX2wiLCJ0b19ieXRlcyIsIm9mX2J5dGVzIiwiYnl0ZXMiLCJ0b19oZXgiLCJvZl9oZXhfZXhuIiwib2ZfYmluYXJ5X2V4biIsImFjY3VtIiwidG9fYmluYWJsZSQwIiwiZGlnZXN0X3N0cmluZyIsImRpZ2VzdF9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAyMiIsImVycm9yX3NvdXJjZV8wMzAiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsImFiYnJ2IiwiaXNfZHN0IiwidXRjX29mZnNldF9pbl9zZWNvbmRzIiwiYWJicnZfMDExIiwiaXNfZHN0XzAwOSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDciLCJ2X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInZfc2Vjb25kcyIsInhfMDE1Iiwic2Vjb25kcyIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHNfMDE5IiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzAxIiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJuZXdfcmVnaW1lIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwIiwibmV3X3JlZ2ltZV8wMjciLCJhcmdfMDI4IiwiYm5kc18wMjQiLCJhcmdfMDI2IiwiYm5kc18wMjQkMCIsInY1IiwidjciLCJ2NiIsInZfbmFtZSIsInZfb3JpZ2luYWxfZmlsZW5hbWUiLCJ2X2RpZ2VzdCIsInZfdHJhbnNpdGlvbnMiLCJ2X2xhc3RfcmVnaW1lX2luZGV4Iiwidl9kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSIsInZfbGVhcF9zZWNvbmRzIiwibGVhcF9zZWNvbmRzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJsYXN0X3JlZ2ltZV9pbmRleCIsInRyYW5zaXRpb25zIiwiZGlnZXN0Iiwib3JpZ2luYWxfZmlsZW5hbWUiLCJ0cmFuc2l0aW9uc18wMzkiLCJkaWdlc3RfMDM3Iiwib3JpZ2luYWxfZmlsZW5hbWVfMDM1IiwibmFtZV8wMzMiLCJsYXN0X3JlZ2ltZV9pbmRleF8wNDEiLCJsZWFwX3NlY29uZHNfMDQ1IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDQzIiwiYXJnXzA0NiIsImJuZHNfMDMyIiwiYXJnXzA0NCIsImJuZHNfMDMyJDAiLCJhcmdfMDQyIiwiYm5kc18wMzIkMSIsImFyZ18wNDAiLCJibmRzXzAzMiQyIiwiYXJnXzAzOCIsImJuZHNfMDMyJDMiLCJhcmdfMDM2IiwiYm5kc18wMzIkNCIsImFyZ18wMzQiLCJibmRzXzAzMiQ1Iiwiem9uZSIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsImFiYnJ2X2luZGV4IiwiaW5wdXRfdHpfZmlsZV9nZW4iLCJpbnB1dF90cmFuc2l0aW9uIiwiaW5wdXRfbGVhcF9zZWNvbmQiLCJ1dGNfbG9jYWxfY291bnQiLCJzdGRfd2FsbF9jb3VudCIsImxlYXBfY291bnQiLCJ0cmFuc2l0aW9uX2NvdW50IiwidHlwZV9jb3VudCIsImFiYnJ2X2NoYXJfY291bnQiLCJ0cmFuc2l0aW9uX3RpbWVzIiwidHJhbnNpdGlvbl9pbmRpY2VzIiwicmVnaW1lcyIsInJhd19hYmJydnMiLCJpbmRleGVkX2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsInJlZ2ltZXMkMCIsInJhd190cmFuc2l0aW9ucyIsInRpbWUiLCJyZWdpbWUiLCJyZXN0IiwibHR0IiwiaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIiwicmVhZF9oZWFkZXIiLCJtYWdpYyIsImJhZF92ZXJzaW9uIiwidmVyc2lvbiIsImlucHV0X3R6X2ZpbGVfdjEiLCJpbnB1dF90el9maWxlIiwiem9uZW5hbWUiLCJtYWtlX3pvbmUiLCJyZWFzb24iLCJvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUiLCJvZl91dGNfb2Zmc2V0IiwibGlrZWx5X21hY2hpbmVfem9uZXMiLCJ1dGMiLCJyZXNldF90cmFuc2l0aW9uX2NhY2hlIiwiZ2V0X3JlZ2ltZV9leG4iLCJlZmZlY3RpdmVfc3RhcnRfdGltZSIsIm1vZGUiLCJpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWMiLCJpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWMiLCJiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHMiLCJ0cmFuc2l0aW9uIiwiaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCIsImluZGV4JDAiLCJpbmRleCQxIiwiaW5kZXgkMiIsImluZGV4JDMiLCJpbmRleCQ0Iiwib2ZfaW50NjNfc2Vjb25kcyIsInRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leCIsIm9mX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zcGFuX3NpbmNlX2Vwb2NoIiwib2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCIsImluZGV4X29mX2RhdGVfYW5kX29mZGF5IiwiaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQiLCJpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50XyIsImFmdGVyIiwiYmVmb3JlIiwiaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfIiwiaW5kZXhfYWJicmV2aWF0aW9uX2V4biIsImluZGV4X29mZnNldF9mcm9tX3V0Y19leG4iLCJyYXciLCJ2YWxpZGF0aW9uX2ZhaWxlZCIsImFyZzJfMDAzIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDA2IiwiY3JlYXRlX2V4biIsImNyZWF0ZV9zdGFibGVfd2l0bmVzcyIsInJhd19zdGFibGVfd2l0bmVzcyIsInR5cGVfZXF1YWwiLCJyYWNlX2ZyZWVfY3JlYXRlX2xvb3AiLCJjZWxsIiwibmV3X3giLCJjdXJyZW50IiwidHlwZW5hbWUkMSIsImFsbG93ZWRfaW50cyIsImFsbG93ZWRfaW50cyQwIiwidHlwZW5hbWUkMCIsImltbWVkaWFjeSIsIm5ldmVyX3dpdGhfbmFtZSIsIm5ldmVyIiwidW5rbm93biIsIm9wdGlvbiIsImxpc3QkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwicmVmIiwidHVwbGUyIiwidHVwbGUzIiwidHVwbGU0IiwidHVwbGU1IiwiZnVuY3Rpb24kMCIsImludCQwIiwicmVmJDAiLCJhcnJheSQwIiwidHVwbGUyJDAiLCJ0dXBsZTMkMCIsInR1cGxlNCQwIiwidHVwbGU1JDAiLCJmdW5jdGlvbiQxIiwib3B0aW9uJDAiLCJsYXp5X3QiLCJwb3NzaWJseV91bmJveGVkIiwiY2hpbGRfdHlwZSIsInRoZV9vbmx5X2ZpZWxkIiwidmFyaWFudCIsInRhZyIsIm1vcmUiLCJubyIsIm1vcmVfYXJnX2xpc3QiLCJvbmVfYXJnX2xpc3QiLCJub19hcmdfbGlzdCIsIm5vX2FyZ19jb3VudCIsImhhc2hfc2V0IiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9iXzAxMSIsImFyZzFfMDEzIiwiYXJnMF8wMTIiLCJyZXMxXzAxNSIsImN1cnJ5IiwidW5jdXJyeSIsIm1hcF9mc3QiLCJtYXBfc25kIiwibWFwX2JvdGgiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsIm9mX2NfMDIxIiwic2V4cF8wMjkiLCJhcmcyXzAyNSIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMyXzAyOCIsIm9mX2FfMDMxIiwib2ZfYl8wMzIiLCJvZl9jXzAzMyIsImFyZzJfMDM2IiwiYXJnMV8wMzUiLCJyZXMxXzAzOCIsInJlczJfMDM5Iiwib2ZfYyIsImN1cnJ5JDAiLCJ1bmN1cnJ5JDAiLCJtYXBfZnN0JDAiLCJtYXBfc25kJDAiLCJtYXBfdHJkIiwibWFwX2FsbCIsImYzIiwibWFwMiQwIiwiejIiLCJ6MSIsImdldDMiLCJjbXAzIiwieiQwIiwiYzEiLCJjMiIsImVxMyIsImFyZzFfMDQ4IiwiYXJnMF8wNDciLCJyZXMwXzA0OSIsInJlczFfMDUwIiwiYV8wNTEiLCJiXzA1MiIsInRfMDU0IiwidF8wNTMiLCJ0XzA1NiIsInRfMDU1Iiwic2V4cF8wNjIiLCJhcmcxXzA1OSIsImFyZzBfMDU4IiwicmVzMF8wNjAiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwiYXJnMF8wNjQiLCJyZXMwXzA2NiIsInJlczFfMDY3IiwiczIiLCJzMSIsInMyJDAiLCJzMSQwIiwid2Vla2RheXMiLCJ3ZWVrZW5kcyIsInNpemVfMDE4IiwicmFuZG9tXzAxOSIsInNpemVfMDEyIiwicmFuZG9tXzAxMyIsInNpemVfMDEwIiwicmFuZG9tXzAxMSIsInJhbmRvbV8wMDkiLCJzaXplXzAwNiIsInJhbmRvbV8wMDciLCJoYXNoXzAwNSIsImhhc2hfMDA1JDAiLCJoYXNoXzAwNSQxIiwiaGFzaF8wMDUkMiIsImhhc2hfMDA1JDMiLCJoYXNoXzAwNSQ0IiwiaGFzaF8wMDUkNSIsImhhc2hfMDA1JDYiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidG9fc3RyaW5nX2xvbmciLCJhdG9tIiwidW5zdWdnZXN0ZWQiLCJpbnRfY2xhdXNlIiwic2hvcnRfY2xhdXNlIiwibG9uZ19jbGF1c2UiLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwNCIsImN1c3RvbV9wcmludGZfMDAzIiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDA3IiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsIm9mX2ludF91bmNoZWNrZWQiLCJkYXlzX2luX21vbnRoIiwiaW52YWxpZCIsIm1zZyIsImN1c3RvbV9wcmludGZfMDA1IiwiZGF5c19pbl9tb250aCQwIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJ4XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsIm9wdCIsInZhbHVlX2V4biIsImRlZmF1bHQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludCQwIiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsInJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkiLCJyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwic2hpZnRfZGVjaW1hbF9wb2ludCIsImJ5IiwicyQwIiwicyQxIiwibm90X3plcm8iLCJ1bmRlcnNjb3JlIiwidW5kZXJzY29yZSQwIiwiZSQxIiwiZXhwIiwiZXhwJDAiLCJuZWciLCJzaWduZWQiLCJzJDMiLCJkJDIiLCJzdWYiLCJwcmVmIiwicyQ0IiwiYnkkMCIsImJ5JDEiLCJzJDUiLCJzJDYiLCJieSQyIiwicyQ3IiwicyQyIiwiZmxvYXRfdG9fc3RyaW5nIiwieF9hYnMiLCJ0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlIiwicmVhbGx5X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsInN0ciQwIiwic3RyJDEiLCJzdHIkMiIsIm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiIsIm9mX211bHQiLCJ0b19tdWx0Iiwib2ZfcGVyY2VudGFnZSIsInRvX3BlcmNlbnRhZ2UiLCJvZl9icCIsInRvX2JwIiwib2ZfYnBfaW50IiwidG9fYnBfaW50Iiwic2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCIsIm9mX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsInRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsIm9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInJvdW5kX3NpZ25pZmljYW50Iiwic2lnbmlmaWNhbnRfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9tdWx0IiwiZGVjaW1hbF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsX3BlcmNlbnRhZ2UiLCJyb3VuZF9kZWNpbWFsX2JwIiwiYXJnMF8wMTAiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxOCIsInJlczBfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJleHBvbmVudCIsInByZWNpc2lvbiIsImV4cG9uZW50X0UiLCJkZWNpbWFsIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwidG9fc3RyaW5nJDEiLCJiaW5fc2hhcGVfdCQ3IiwidW5jaGVja2VkX3ZhbHVlIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImJpbl9zaGFwZV90JDgiLCJiaW5fc2hhcGVfdCQ5IiwiYmluX3NoYXBlX3QkMTAiLCJiaW5fd3JpdGVyX3QkNiIsImJpbl9yZWFkZXJfdCQ2IiwiYmluX3QkNiIsInR5cGVuYW1lX29mX3QkMSIsIm5hbWVfb2ZfdCQxIiwidHlwZXJlcF9vZl90JDEiLCJiaW5fc2hhcGVfdCQxMSIsImJpbl9zaGFwZV90JDEyIiwiaXNfemVybyIsImFwcGx5IiwiaXNfbmFuIiwiaXNfaW5mIiwic2lnbl9leG4iLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYkMCIsInRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiIsImZvcm1hdCQwIiwidG9fc3RyaW5nJDIiLCJiaW5fc2hhcGVfdCQxMyIsInRvX3N0cmluZyQzIiwiYmluX3NoYXBlX3QkMTQiLCJiaW5fd3JpdGVyX3QkNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsInRvX3N0cmluZyQ0Iiwic2V4cF9vZl90JDciLCJyYW5kb21pemUiLCJzcGFuIiwicmFuZG9tX3N0YXRlIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJuJDIiLCJuJDMiLCJuJDQiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwiYXJnXzAxNiIsImJuZHNfMDA2JDMiLCJibmRzXzAwNiQ0IiwiYm5kc18wMDYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50MzJfc2Vjb25kcyIsIm9mX21pbiIsIm9mX2hyIiwib2ZfZGF5Iiwib2ZfaW50X25zIiwib2ZfaW50X3VzIiwib2ZfaW50X21zIiwib2ZfaW50X3NlYyIsIm9mX2ludF9taW4iLCJvZl9pbnRfaHIiLCJvZl9pbnRfZGF5IiwiZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSIsInVuaXRfb2ZfdGltZSIsInNjYWxlX2J5X3VuaXRfb2ZfdGltZSIsImRheSQwIiwieCQyIiwidG9fc2hvcnRfc3RyaW5nIiwidF9vZl9zZXhwX3YxX3YyIiwiaXNfdjIiLCJzZXhwX29mX3RfdjFfdjIiLCJhYnNfdCIsInRvX3VuaXRfb2ZfdGltZSIsIm9mX3VuaXRfb2ZfdGltZSIsInN1ZmZpeF9vZl91bml0X29mX3RpbWUiLCJwYXJzZV9zdWZmaXgiLCJ1bml0X29mX3RpbWVfbGlzdCQxIiwidW5pdF9vZl90aW1lX2xpc3QiLCJ1bml0X29mX3RpbWVfbGlzdCQwIiwic3RhdGVfaXNfZmluYWwiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfZGF5Iiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm9mX2ludDYzX2V4biQwIiwidG9faW50NjMkMCIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNleHBfb2Zfc3BhbiIsInNwYW5fb2Zfc2V4cCIsImZsb2F0JDIiLCJzaW5jZV91bml4X2Vwb2NoIiwiaGFsZl9taWNyb3NlY29uZCIsInRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIiwibWF4X3ZhbHVlX3JlcHJlc2VudGFibGUiLCJvZl9pbnQ2M19leG4kMSIsInRvX2ludDYzJDEiLCJmYWlsIiwib2ZfaW50NjNfZXhuJDIiLCJ0b19pbnQ2MyQyIiwiY29tcGFyZSQ2IiwiYXJnX3R5cGUiLCJpc19pbnZhbGlkIiwib2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0Iiwic3ViX2V4biIsInRvX3N0cmluZ193aXRoX3VuaXQiLCJzaXh0eSIsInRob3VzYW5kIiwidW5pdCQwIiwibnVtX2RpZ2l0cyIsInRvX21pY3Jvc2Vjb25kX3N0cmluZyIsImV2ZXJ5Iiwic3RhcnQkMSIsInRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50NjNfbnNfc2luY2VfZXBvY2giLCJvdmVyZmxvdyIsImFkZF9vdmVyZmxvd2VkIiwic3ViX292ZXJmbG93ZWQiLCJhZGRfc2F0dXJhdGluZyIsInN1Yl9zYXR1cmF0aW5nIiwidG9faW50X25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50X25zX3NpbmNlX2Vwb2NoIiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwibWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0Iiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwidG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwibnNfc2luY2VfZXBvY2giLCJuc19wZXJfZGF5IiwiYXBwcm94X2RheXNfZnJvbV9lcG9jaCIsIm5zX3NpbmNlX3N0YXJ0X29mX2RheSIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5Iiwib2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwic3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIiwic3Bhbl9zaW5jZV9lcG9jaCIsInR3b19kaWdpdF9vZl9zdHJpbmciLCJuc19vZl8xMDBfbXMiLCJuc19vZl8xMF9tcyIsIm5zX29mXzFfbXMiLCJuc19vZl8xMDBfdXMiLCJuc19vZl8xMF91cyIsIm5zX29mXzFfdXMiLCJuc19vZl8xMDBfbnMiLCJuc19vZl8xMF9ucyIsIm5zX29mXzFfbnMiLCJzZWNvbmRzX3NwYW4iLCJzdWJfc2Vjb25kX3NwYW4iLCJvZmRheV9zdHJpbmdfd2l0aF96b25lIiwiZGF0ZV9zdHJpbmciLCJvZmRheV9zdHJpbmciLCJwcmVmaXhfbGVuIiwic3VmZml4X2xlbiIsInNlY29uZHNfc3RyaW5nIiwic3ViX3NlY29uZF9zdHJpbmciLCJzX3N0cmluZyIsIm1fc3RyaW5nIiwiaF9zdHJpbmciLCJtdWx0aXBsaWVyIiwiZGF5c19mcm9tX2Vwb2NoJDAiLCJkYXlzX2Zyb21fZXBvY2hfaW5fbnMiLCJhdHRlbXB0Iiwic3Bhbl9vZl9kdXJhdGlvbiIsInRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCIsImR1cmF0aW9ucyIsInNwYW5zIiwic3RyaW5nX2J5dGVzIiwic3JjX3BvcyIsInNyY19sZW4iLCJkc3RfcG9zIiwic3JjX3BvcyQwIiwiYnl0ZXNfYnl0ZXMiLCJzdHJpbmdfYmlnc3RyaW5nIiwiYnl0ZXNfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19zdHJpbmciLCJiaWdzdHJpbmdfYnl0ZXMiLCJzaXplXzAwOSIsInJhbmRvbV8wMTAiLCJzaXplXzAwNyIsImhhc2hfMDA4IiwiaGFzaF8wMDgkMCIsImhhc2hfMDA4JDEiLCJoYXNoXzAwOCQyIiwiYmFzZV9sZW4iLCJnZXRfbm9fYm91bmRzX2NoZWNrIiwiZm9sZGkkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImJsaXRfdG8iLCJibGl0X3RvX3N0cmluZyIsImJsaXRfdG9fYnl0ZXMiLCJibGl0X3RvX2JpZ3N0cmluZyIsImJsaXRfYmFzZSIsImJsaXRfZnJvbSIsImJsaXRfZnJvbV9zdHJpbmciLCJibGl0X2Zyb21fYmlnc3RyaW5nIiwib2ZfYmFzZSIsImNvbmNhdF9nZW4iLCJjcmVhdGVfZHN0IiwiYmxpdF9kc3QiLCJ0cyIsImNvbmNhdF9zdHJpbmciLCJjb25jYXRfYmlnc3RyaW5nIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsInV1aWQiLCJnbG9iYWxpemUkMCIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsImdsb2JhbGl6ZSQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJnbG9iYWxpemUkMiIsInR5cGVuYW1lX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwiY2hlY2skMiIsInBwJDIiLCJvZl9zdHJpbmckMiIsImluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIiwiYXJnX3R5cGUkMCIsInNleHBfYXNfc3RyaW5nIiwiYXJnMV8wMDMiLCJhcmcwXzAwMiIsInZfMDAxIiwicmVzMV8wMTEiLCJzZXJpYWxpemVkX3NleHAiLCJhcmcxXzAxNSIsInZfMDEyIiwidl8wMTMiLCJyZXMxXzAxNyIsImV4cGVjdGVkX2Jpbl9pbyIsImJpbmFibGVfbSIsInNlcmlhbGl6ZWRfYmluX2lvIiwiYXJnMl8wMjIiLCJhcmcxXzAyMSIsInJlczFfMDI0Iiwidl8wMTkiLCJyZXMyXzAyNSIsImFyZzFfMDI5Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJsb29wIiwicmV2X3NraXBwZWQiLCJzdHJpbmdzJDAiLCJjb250aW51ZSQwIiwic3RyaW5nJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJ2XzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4IiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInBlcm11dGF0YXRpb25zIiwiZWxlbWVudHMiLCJhcmcxXzA1NyIsImFyZzBfMDU2Iiwidl8wNTQiLCJyZXMwXzA1OCIsInJlczFfMDU5IiwiYmxhbmciLCJjbXBfYSQwIiwiYV8wMDEkMCIsImJfMDAyJDAiLCJjbXBfYSQ1IiwiY21wX2EkMSIsImNtcF9hJDIiLCJjbXBfYSQzIiwiYV8wMjciLCJhXzAyNSIsImFfMDIzIiwiYl8wMjgiLCJiXzAyNiIsImJfMDI0IiwiYV8wMzEiLCJiXzAzMiIsImNtcF9hJDQiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3JDAiLCJiXzAzOCQwIiwiYV8wMzkiLCJiXzA0MCIsImFfMDQ5IiwiYV8wNDciLCJiXzA1MCIsImJfMDQ4IiwiYV8wNTMiLCJiXzA1NCIsImFfMDU1IiwiYl8wNTYiLCJhXzA1NyIsImJfMDU4IiwiYV8wNjEiLCJhXzA1OSIsImJfMDYyIiwiYl8wNjAiLCJhXzA3MSIsImJfMDcyIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ2MCQxIiwidjAkMiIsInYwJDMiLCJzdWJ0ZXJtcyIsInQzIiwidDEkMSIsImNvbnRhaW5zX25vX2NvbnN0YW50cyIsInRydWUkMCIsImZhbHNlJDAiLCJub3QiLCJhbmRhbHNvIiwib3RoZXIiLCJ0MWIiLCJ0MWEiLCJvcmVsc2UiLCJpZiQwIiwib2ZfYV8wNzMiLCJhcmcxXzA3NSIsImFyZzBfMDc0IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMl8wODYiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODciLCJyZXMxXzA4OCIsInJlczJfMDg5IiwiYXJnMF8wOTAiLCJyZXMwXzA5MSIsImdhdGhlcl9jb25qdW5jdHMiLCJ0cyQxIiwidHMkMCIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJ3b3JkIiwia2lsb2J5dGVzIiwibWVnYWJ5dGVzIiwiZ2lnYWJ5dGVzIiwidGVyYWJ5dGVzIiwicGV0YWJ5dGVzIiwiZXhhYnl0ZXMiLCJ3b3Jkc19pbnRfZXhuIiwid29yZHNfZmxvYXQiLCJvZl9raWxvYnl0ZXMiLCJvZl9tZWdhYnl0ZXMiLCJvZl9naWdhYnl0ZXMiLCJvZl90ZXJhYnl0ZXMiLCJvZl9wZXRhYnl0ZXMiLCJvZl9leGFieXRlcyIsIm9mX3dvcmRzX2ludCIsIm9mX3dvcmRzX2Zsb2F0X2V4biIsImJhc2Vfc3RyIiwiZXh0X2NoYXIiLCJsYXJnZXN0X21lYXN1cmUiLCJ0X2FicyIsIm5vX21hdGNoIiwidmFsX3NleHAiLCJ1bml0X25hbWUiLCJ0JDUiLCJ0JDQiLCJ0JDMiLCJ0JDIiLCJjdXN0b21fcHJpbnRmXzAwNiIsImN1c3RvbV9wcmludGZfMDA3IiwiY3VzdG9tX3ByaW50Zl8wMDgiLCJjdXN0b21fcHJpbnRmXzAwOSIsImN1c3RvbV9wcmludGZfMDEwIiwiY3VzdG9tX3ByaW50Zl8wMTEiLCJ0b19zdHJpbmdfc2hvcnQiLCJ0b191bml0c19zdHIiLCJ0b191bml0IiwiZXh0IiwiZl9hYnMiLCJjdXN0b21fcHJpbnRmXzAxNCIsImN1c3RvbV9wcmludGZfMDE1IiwiY3VzdG9tX3ByaW50Zl8wMTYiLCJjdXN0b21fcHJpbnRmXzAxNyIsImN1c3RvbV9wcmludGZfMDE4IiwiY3VzdG9tX3ByaW50Zl8wMTkiLCJjdXN0b21fcHJpbnRmXzAyMCIsImN1c3RvbV9wcmludGZfMDIxIiwiY3VzdG9tX3ByaW50Zl8wMjIiLCJjdXN0b21fcHJpbnRmXzAyMyIsImN1c3RvbV9wcmludGZfMDI0IiwiY3VzdG9tX3ByaW50Zl8wMjUiLCJjdXN0b21fcHJpbnRmXzAyNiIsIm5fZnJvbnQiLCJuX2JhY2siLCJmcm9udCIsImJhY2siLCJyZXZfYmFjayIsImZyb250JDAiLCJyZXZfZnJvbnQiLCJiYWNrJDAiLCJyYWlzZV9mcm9udF9pbnZhcmlhbnQiLCJyYWlzZV9iYWNrX2ludmFyaWFudCIsInBlZWtfZnJvbnRfZXhuIiwicGVla19iYWNrX2V4biIsImRyb3BfZnJvbnRfZXhuIiwiZHJvcF9iYWNrX2V4biIsIm9wdGlvbmFsIiwicGVla19mcm9udCIsInBlZWtfYmFjayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJ0b19saXN0JDEiLCJ0b19saXN0JDIiLCJ0b19saXN0JDMiLCJzdW0kMSIsImZpbmRfbWFwJDEiLCJ0b19hcnJheSQxIiwiZm9sZF9yZXN1bHQkMSIsImJ1aWxkIiwiZXJyb3Jfc291cmNlXzA1NCIsImVycm9yX3NvdXJjZV8wOTYiLCJuYW1lcyQwIiwidjE2IiwidjE1IiwidjE0IiwidjEzIiwidjEyIiwidjExIiwidjEwIiwidjkiLCJ2OCIsInNpemUkNiIsInNpemUkNyIsInNpemUkOCIsInNpemUkOSIsInNpemUkMTAiLCJzaXplJDExIiwic2l6ZSQxMiIsInNpemUkMTMiLCJ2X21pbm9yX3dvcmRzIiwidl9wcm9tb3RlZF93b3JkcyIsInZfbWFqb3Jfd29yZHMiLCJ2X21pbm9yX2NvbGxlY3Rpb25zIiwidl9tYWpvcl9jb2xsZWN0aW9ucyIsInZfaGVhcF93b3JkcyIsInZfaGVhcF9jaHVua3MiLCJ2X2xpdmVfd29yZHMiLCJ2X2xpdmVfYmxvY2tzIiwidl9mcmVlX3dvcmRzIiwidl9mcmVlX2Jsb2NrcyIsInZfbGFyZ2VzdF9mcmVlIiwidl9mcmFnbWVudHMiLCJ2X2NvbXBhY3Rpb25zIiwidl90b3BfaGVhcF93b3JkcyIsInZfc3RhY2tfc2l6ZSIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJoc3YkMTAiLCJoc3YkMTEiLCJoc3YkMTIiLCJoc3YkMTMiLCJoc3YkMTQiLCJzdGFja19zaXplIiwidG9wX2hlYXBfd29yZHMiLCJjb21wYWN0aW9ucyIsImZyYWdtZW50cyIsImxhcmdlc3RfZnJlZSIsImZyZWVfYmxvY2tzIiwiZnJlZV93b3JkcyIsImxpdmVfYmxvY2tzIiwibGl2ZV93b3JkcyIsImhlYXBfY2h1bmtzIiwiaGVhcF93b3JkcyIsIm1ham9yX2NvbGxlY3Rpb25zIiwibWlub3JfY29sbGVjdGlvbnMiLCJtYWpvcl93b3JkcyIsInByb21vdGVkX3dvcmRzIiwibWlub3Jfd29yZHMiLCJzdGFja19zaXplXzA0NyIsInRvcF9oZWFwX3dvcmRzXzA0NSIsImNvbXBhY3Rpb25zXzA0MyIsImZyYWdtZW50c18wNDEiLCJsYXJnZXN0X2ZyZWVfMDM5IiwiZnJlZV9ibG9ja3NfMDM3IiwiZnJlZV93b3Jkc18wMzUiLCJsaXZlX2Jsb2Nrc18wMzMiLCJsaXZlX3dvcmRzXzAzMSIsImhlYXBfY2h1bmtzXzAyOSIsImhlYXBfd29yZHNfMDI3IiwibWFqb3JfY29sbGVjdGlvbnNfMDI1IiwibWlub3JfY29sbGVjdGlvbnNfMDIzIiwibWFqb3Jfd29yZHNfMDIxIiwicHJvbW90ZWRfd29yZHNfMDE5IiwibWlub3Jfd29yZHNfMDE3IiwiYXJnXzA0OCIsImJuZHNfMDE2JDEiLCJibmRzXzAxNiQyIiwiYm5kc18wMTYkMyIsImJuZHNfMDE2JDQiLCJibmRzXzAxNiQ1IiwiYm5kc18wMTYkNiIsImFyZ18wMzIiLCJibmRzXzAxNiQ3IiwiYXJnXzAzMCIsImJuZHNfMDE2JDgiLCJibmRzXzAxNiQ5IiwiYm5kc18wMTYkMTAiLCJhcmdfMDI0IiwiYm5kc18wMTYkMTEiLCJhcmdfMDIyIiwiYm5kc18wMTYkMTIiLCJibmRzXzAxNiQxMyIsImJuZHNfMDE2JDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwibiQxNCIsImhzdiQxNSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18wODkiLCJzdGFja19zaXplXzA4NyIsInRvcF9oZWFwX3dvcmRzXzA4NSIsImNvbXBhY3Rpb25zXzA4MyIsImZyYWdtZW50c18wODEiLCJsYXJnZXN0X2ZyZWVfMDc5IiwiZnJlZV9ibG9ja3NfMDc3IiwiZnJlZV93b3Jkc18wNzUiLCJsaXZlX2Jsb2Nrc18wNzMiLCJsaXZlX3dvcmRzXzA3MSIsImhlYXBfY2h1bmtzXzA2OSIsImhlYXBfd29yZHNfMDY3IiwibWFqb3JfY29sbGVjdGlvbnNfMDY1IiwibWlub3JfY29sbGVjdGlvbnNfMDYzIiwibWFqb3Jfd29yZHNfMDYxIiwicHJvbW90ZWRfd29yZHNfMDU5IiwibWlub3Jfd29yZHNfMDU3IiwiYXJnXzA5MCIsImJuZHNfMDU2IiwiYXJnXzA4OCIsImJuZHNfMDU2JDAiLCJhcmdfMDg2IiwiYm5kc18wNTYkMSIsImFyZ18wODQiLCJibmRzXzA1NiQyIiwiYXJnXzA4MiIsImJuZHNfMDU2JDMiLCJhcmdfMDgwIiwiYm5kc18wNTYkNCIsImFyZ18wNzgiLCJibmRzXzA1NiQ1IiwiYXJnXzA3NiIsImJuZHNfMDU2JDYiLCJhcmdfMDc0IiwiYm5kc18wNTYkNyIsImFyZ18wNzIiLCJibmRzXzA1NiQ4IiwiYXJnXzA3MCIsImJuZHNfMDU2JDkiLCJhcmdfMDY4IiwiYm5kc18wNTYkMTAiLCJhcmdfMDY2IiwiYm5kc18wNTYkMTEiLCJhcmdfMDY0IiwiYm5kc18wNTYkMTIiLCJhcmdfMDYyIiwiYm5kc18wNTYkMTMiLCJhcmdfMDYwIiwiYm5kc18wNTYkMTQiLCJhcmdfMDU4IiwiYm5kc18wNTYkMTUiLCJ2X21pbm9yX2hlYXBfc2l6ZSIsInZfbWFqb3JfaGVhcF9pbmNyZW1lbnQiLCJ2X3NwYWNlX292ZXJoZWFkIiwidl92ZXJib3NlIiwidl9tYXhfb3ZlcmhlYWQiLCJ2X3N0YWNrX2xpbWl0Iiwidl9hbGxvY2F0aW9uX3BvbGljeSIsInZfd2luZG93X3NpemUiLCJ2X2N1c3RvbV9tYWpvcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX3JhdGlvIiwidl9jdXN0b21fbWlub3JfbWF4X3NpemUiLCJhXzA5MyIsImJfMDk0IiwieF8wOTciLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJ2ZXJib3NlIiwic3BhY2Vfb3ZlcmhlYWQiLCJtYWpvcl9oZWFwX2luY3JlbWVudCIsIm1pbm9yX2hlYXBfc2l6ZSIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8xMTkiLCJjdXN0b21fbWlub3JfcmF0aW9fMTE3IiwiY3VzdG9tX21ham9yX3JhdGlvXzExNSIsIndpbmRvd19zaXplXzExMyIsImFsbG9jYXRpb25fcG9saWN5XzExMSIsInN0YWNrX2xpbWl0XzEwOSIsIm1heF9vdmVyaGVhZF8xMDciLCJ2ZXJib3NlXzEwNSIsInNwYWNlX292ZXJoZWFkXzEwMyIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzEwMSIsIm1pbm9yX2hlYXBfc2l6ZV8wOTkiLCJhcmdfMTIwIiwiYm5kc18wOTgiLCJhcmdfMTE4IiwiYm5kc18wOTgkMCIsImFyZ18xMTYiLCJibmRzXzA5OCQxIiwiYXJnXzExNCIsImJuZHNfMDk4JDIiLCJhcmdfMTEyIiwiYm5kc18wOTgkMyIsImFyZ18xMTAiLCJibmRzXzA5OCQ0IiwiYXJnXzEwOCIsImJuZHNfMDk4JDUiLCJhcmdfMTA2IiwiYm5kc18wOTgkNiIsImFyZ18xMDQiLCJibmRzXzA5OCQ3IiwiYXJnXzEwMiIsImJuZHNfMDk4JDgiLCJhcmdfMTAwIiwiYm5kc18wOTgkOSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNTYiLCJzdGFja19zaXplXzE1NCIsInRvcF9oZWFwX3dvcmRzXzE1MiIsImNvbXBhY3Rpb25zXzE1MCIsImZyYWdtZW50c18xNDgiLCJsYXJnZXN0X2ZyZWVfMTQ2IiwiZnJlZV9ibG9ja3NfMTQ0IiwiZnJlZV93b3Jkc18xNDIiLCJsaXZlX2Jsb2Nrc18xNDAiLCJsaXZlX3dvcmRzXzEzOCIsImhlYXBfY2h1bmtzXzEzNiIsImhlYXBfd29yZHNfMTM0IiwibWFqb3JfY29sbGVjdGlvbnNfMTMyIiwibWlub3JfY29sbGVjdGlvbnNfMTMwIiwibWFqb3Jfd29yZHNfMTI4IiwicHJvbW90ZWRfd29yZHNfMTI2IiwibWlub3Jfd29yZHNfMTI0IiwiYXJnXzE1NyIsImJuZHNfMTIzIiwiYXJnXzE1NSIsImJuZHNfMTIzJDAiLCJhcmdfMTUzIiwiYm5kc18xMjMkMSIsImFyZ18xNTEiLCJibmRzXzEyMyQyIiwiYXJnXzE0OSIsImJuZHNfMTIzJDMiLCJhcmdfMTQ3IiwiYm5kc18xMjMkNCIsImFyZ18xNDUiLCJibmRzXzEyMyQ1IiwiYXJnXzE0MyIsImJuZHNfMTIzJDYiLCJhcmdfMTQxIiwiYm5kc18xMjMkNyIsImFyZ18xMzkiLCJibmRzXzEyMyQ4IiwiYXJnXzEzNyIsImJuZHNfMTIzJDkiLCJhcmdfMTM1IiwiYm5kc18xMjMkMTAiLCJhcmdfMTMzIiwiYm5kc18xMjMkMTEiLCJhcmdfMTMxIiwiYm5kc18xMjMkMTIiLCJhcmdfMTI5IiwiYm5kc18xMjMkMTMiLCJhcmdfMTI3IiwiYm5kc18xMjMkMTQiLCJhcmdfMTI1IiwiYm5kc18xMjMkMTUiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMkMCIsInN0YWNrX3NpemUkMCIsInRvcF9oZWFwX3dvcmRzJDAiLCJjb21wYWN0aW9ucyQwIiwiZnJhZ21lbnRzJDAiLCJsYXJnZXN0X2ZyZWUkMCIsImZyZWVfYmxvY2tzJDAiLCJmcmVlX3dvcmRzJDAiLCJsaXZlX2Jsb2NrcyQwIiwibGl2ZV93b3JkcyQwIiwiaGVhcF9jaHVua3MkMCIsImhlYXBfd29yZHMkMCIsIm1ham9yX2NvbGxlY3Rpb25zJDAiLCJtaW5vcl9jb2xsZWN0aW9ucyQwIiwibWFqb3Jfd29yZHMkMCIsInByb21vdGVkX3dvcmRzJDAiLCJtaW5vcl93b3JkcyQwIiwibWlub3Jfd29yZHNfZnVuIiwicHJvbW90ZWRfd29yZHNfZnVuIiwibWFqb3Jfd29yZHNfZnVuIiwibWlub3JfY29sbGVjdGlvbnNfZnVuIiwibWFqb3JfY29sbGVjdGlvbnNfZnVuIiwiaGVhcF93b3Jkc19mdW4iLCJoZWFwX2NodW5rc19mdW4iLCJsaXZlX3dvcmRzX2Z1biIsImxpdmVfYmxvY2tzX2Z1biIsImZyZWVfd29yZHNfZnVuIiwiZnJlZV9ibG9ja3NfZnVuIiwibGFyZ2VzdF9mcmVlX2Z1biIsImZyYWdtZW50c19mdW4iLCJjb21wYWN0aW9uc19mdW4iLCJ0b3BfaGVhcF93b3Jkc19mdW4iLCJzdGFja19zaXplX2Z1biIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19mdW4iLCJtaW5vcl93b3Jkc19nZW4iLCJwcm9tb3RlZF93b3Jkc19nZW4iLCJtYWpvcl93b3Jkc19nZW4iLCJtaW5vcl9jb2xsZWN0aW9uc19nZW4iLCJtYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJoZWFwX3dvcmRzX2dlbiIsImhlYXBfY2h1bmtzX2dlbiIsImxpdmVfd29yZHNfZ2VuIiwibGl2ZV9ibG9ja3NfZ2VuIiwiZnJlZV93b3Jkc19nZW4iLCJmcmVlX2Jsb2Nrc19nZW4iLCJsYXJnZXN0X2ZyZWVfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJmcmFnbWVudHNfZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJjb21wYWN0aW9uc19nZW4iLCJjb21waWxlX2FjYyQxNCIsInRvcF9oZWFwX3dvcmRzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwic3RhY2tfc2l6ZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJmbG9hdF9mIiwiaW50X2YiLCJhXzE1OCIsImJfMTU5IiwiY3VzdG9tX21pbm9yX21heF9zaXplXzE4MSIsImN1c3RvbV9taW5vcl9yYXRpb18xNzkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMTc3Iiwid2luZG93X3NpemVfMTc1IiwiYWxsb2NhdGlvbl9wb2xpY3lfMTczIiwic3RhY2tfbGltaXRfMTcxIiwibWF4X292ZXJoZWFkXzE2OSIsInZlcmJvc2VfMTY3Iiwic3BhY2Vfb3ZlcmhlYWRfMTY1IiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfMTYzIiwibWlub3JfaGVhcF9zaXplXzE2MSIsImFyZ18xODIiLCJibmRzXzE2MCIsImFyZ18xODAiLCJibmRzXzE2MCQwIiwiYXJnXzE3OCIsImJuZHNfMTYwJDEiLCJhcmdfMTc2IiwiYm5kc18xNjAkMiIsImFyZ18xNzQiLCJibmRzXzE2MCQzIiwiYXJnXzE3MiIsImJuZHNfMTYwJDQiLCJhcmdfMTcwIiwiYm5kc18xNjAkNSIsImFyZ18xNjgiLCJibmRzXzE2MCQ2IiwiYXJnXzE2NiIsImJuZHNfMTYwJDciLCJhcmdfMTY0IiwiYm5kc18xNjAkOCIsImFyZ18xNjIiLCJibmRzXzE2MCQ5IiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWFrZV9jcmVhdG9yJDAiLCJtaW5vcl9oZWFwX3NpemVfZnVuIiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfZnVuIiwic3BhY2Vfb3ZlcmhlYWRfZnVuIiwidmVyYm9zZV9mdW4iLCJtYXhfb3ZlcmhlYWRfZnVuIiwic3RhY2tfbGltaXRfZnVuIiwiYWxsb2NhdGlvbl9wb2xpY3lfZnVuIiwid2luZG93X3NpemVfZnVuIiwiY3VzdG9tX21ham9yX3JhdGlvX2Z1biIsImN1c3RvbV9taW5vcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfbWF4X3NpemVfZnVuIiwibWlub3JfaGVhcF9zaXplX2dlbiIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2dlbiIsInNwYWNlX292ZXJoZWFkX2dlbiIsInZlcmJvc2VfZ2VuIiwibWF4X292ZXJoZWFkX2dlbiIsInN0YWNrX2xpbWl0X2dlbiIsImFsbG9jYXRpb25fcG9saWN5X2dlbiIsIndpbmRvd19zaXplX2dlbiIsImN1c3RvbV9tYWpvcl9yYXRpb19nZW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2dlbiIsIm1hcF9wb2x5JDAiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsImNvbXBhcmUkNyIsImVxdWFsJDUiLCJ0dW5lIiwibG9nZ2VyIiwib2xkX2NvbnRyb2xfcGFyYW1zIiwiZmllbGQiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJuZXdfY29udHJvbF9wYXJhbXMiLCJkaXNhYmxlX2NvbXBhY3Rpb24iLCJwb2xpY3kiLCJzdGF0X3NpemVfbGF6eSIsInN0YXRfc2l6ZSIsImtlZXBfYWxpdmUiLCJvIiwiaXNfemVyb19hbGxvYyIsIm1pbm9yX3dvcmRzX2JlZm9yZSIsIm1ham9yX3dvcmRzX2JlZm9yZSIsIm1pbm9yX3dvcmRzX2FmdGVyIiwibWFqb3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMTkwIiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzE4OCIsImFyZ18xOTEiLCJibmRzXzE4NyIsImFyZ18xODkiLCJibmRzXzE4NyQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzE5NyIsImlzX21ham9yXzE5NSIsInNpemVfaW5fd29yZHNfMTkzIiwiYXJnXzE5OCIsImJuZHNfMTkyIiwiYXJnXzE5NiIsImJuZHNfMTkyJDAiLCJhcmdfMTk0IiwiYm5kc18xOTIkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImluZm8iLCJiYWNrdHJhY2UiLCJiYWNrdHJhY2UkMCIsImluZm8kMCIsInRyYWNrZXIiLCJhZGRfZmluYWxpemVyIiwiYWRkX2ZpbmFsaXplcl9leG4iLCJhZGRfZmluYWxpemVyX2xhc3QiLCJhZGRfZmluYWxpemVyX2xhc3RfZXhuIiwiZmluYWxpemVfcmVsZWFzZSIsInNleHBfb2ZfdCQ4IiwiZXhwZWN0IiwiZXhwZWN0JDAiLCJzZXhwXzAwNiIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwidHlwZV9pZCIsInRvX3N0YWJsZV9mb3JtYXQiLCJvZl9zdGFibGVfZm9ybWF0Iiwib2ZfcXVpY2tjaGVja2FibGUiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwic2lnbmFsIiwiZiQwIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJvZl9hXzAwOSIsIm9mX2FfMDEyIiwieF8wMTMiLCJvZl9mb3JtYXQiLCJ0b19mb3JtYXQiLCJzZXRfYXQiLCJzZXRfaW50ZXJuYWwiLCJzZXRfaWZfbm9uZSIsInNldF9leG4iLCJnZXRfZXhuIiwicHJpbnQiLCJjYXRjaCQwIiwicHJpbnRfYmFja3RyYWNlIiwiZ2V0X2JhY2t0cmFjZSIsInJlY29yZF9iYWNrdHJhY2UiLCJiYWNrdHJhY2Vfc3RhdHVzIiwiY2FwdHVyZSIsImdlbmVyYWwiLCJoYXNoYWJsZSQxIiwiY2FjaGVfc2l6ZV9ib3VuZCIsImNhY2hlIiwicmVhbGx5X2NhbGxfZiIsIm1heF9jYWNoZV9zaXplIiwiY2FjaGUkMCIsInJlY3Vyc2l2ZSIsImZfb25lc3RlcCIsIm1lbW9pemVkIiwib2ZfY29tcGFyYWJsZSIsInYkMSIsImluaXRpYWxfbGVuZ3RoIiwibmV2ZXJfc2hyaW5rIiwibmV2ZXJfc2hyaW5rJDAiLCJpbml0aWFsX2xlbmd0aCQwIiwiYXJyX2xlbmd0aCIsImFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90XyIsImFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZSIsImFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbSIsImFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcCIsImNoZWNrZWQiLCJhcHBhcmVudF9mcm9udF9pbmRleCIsImFwcGFyZW50X2JhY2tfaW5kZXgiLCJkaXIiLCJhcHBhcmVudF9mcm9udCIsImFwcGFyZW50X2JhY2siLCJhY3R1YWxfZnJvbnQiLCJhY3R1YWxfYmFjayIsImFwcGFyZW50X2kiLCJyZWFsX2kiLCJzdG9wX3BvcyIsImFwcGFyZW50X2kkMCIsInJlYWxfaSQwIiwicmVhbF9pJDEiLCJhcHBhcmVudF9pJDEiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsIml0ZXJpX2ludGVybmFsIiwibmV3X2FyciIsIm9sZF9hcnIiLCJicmVha19wb3MiLCJtYXliZV9zaHJpbmtfdW5kZXJseWluZyIsImdyb3dfdW5kZXJseWluZyIsInBlZWtfZnJvbnRfbm9uZW1wdHkiLCJwZWVrX2JhY2tfbm9uZW1wdHkiLCJkZXF1ZXVlX2Zyb250X25vbmVtcHR5IiwiZGVxdWV1ZV9iYWNrX25vbmVtcHR5IiwiZHJvcF9nZW4iLCJhc3NlcnRfbm90X2VtcHR5IiwidHJ1ZV9pbmRleF9leG4iLCJpX2Zyb21femVybyIsInRydWVfaSIsImdldF9vcHQiLCJiYWNrX2luZGV4X2V4biIsImZyb250X2luZGV4X2V4biIsImdldCQwIiwidW50cmFuc2xhdGVkX2kiLCJlcHJpbnQiLCJlcHJpbnRzIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwic2V4cF9vZl9hcmciLCJzZXhwX29mX3Jlc3VsdCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwibWVzc2FnZSQwIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsInF1b3RlIiwiY29uY2F0X3F1b3RlZCIsInNwbGl0X2NvbW1hbmQiLCJzb3J0X2FuZF9hbGlnbiIsImFkZF91bml0IiwidW50aWxfZW1wdHkiLCJic3RyXzAwMiIsInBvc18wMDQiLCJsZW5fMDA2IiwiaW5pdF8wMDgiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJyZXNpemUiLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19idWYiLCJpbnRlcm5hbCIsImNvbnRlbnRzX2J5dGVzIiwiYmlnX2NvbnRlbnRzIiwidm9sYXRpbGVfY29udGVudHMiLCJhZGRfY2hhciIsInJlc2V0IiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3MiLCJhZGRfc3ViYnl0ZXMiLCJhZGRfYmlnc3RyaW5nIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJidWZfZHN0IiwiYnVmX3NyYyIsImFkZF9iaW5fcHJvdCIsImFkZF9zdWJzdGl0dXRlIiwibGltIiwic3Vic3QiLCJwcmV2aW91cyIsImkkNCIsInByZXZpb3VzJDAiLCJpJDUiLCJwcmV2aW91cyQxIiwiaSQ2Iiwib3BlbmluZyIsImxpbSQxIiwiaSQyIiwiaSQzIiwibmV3X3N0YXJ0IiwiayQyIiwiY2xvc2luZyIsImxpbSQwIiwiaSQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJpJDkiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwiZXJyb3Jfc291cmNlXzAxNyIsInZfaW5kZXgiLCJ2X21pbl9pbmRleCIsInZfbWF4X2luZGV4IiwiYXJnNV8wMDkiLCJhcmc0XzAwOCIsImFyZzNfMDA3IiwiYXJnMl8wMDYiLCJyZXMyXzAxMiIsInJlczNfMDEzIiwicmVzNF8wMTQiLCJyZXM1XzAxNSIsImFyZzVfMDIzIiwiYXJnNF8wMjIiLCJhcmczXzAyMSIsImFyZzJfMDIwIiwiYXJnMV8wMTkiLCJyZXM1XzAyOSIsIm9mIiwibGFiZWwiLCJjcmVhdGVfYWxsIiwibWF4X2luZGV4IiwibWluX2luZGV4IiwiemVyb19iYXNlZF9pbmRleCIsIm51bV9pbmRleGVzIiwiaG9zdF9hbmRfcG9ydCIsInBhcnNlJDAiLCJtYXBfYW5vbnMiLCJ0NCIsIm1heWJlX3dpdGhfZGVmYXVsdCIsIm1heWJlIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciIsIm1hcF9mbGFnIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIiwiZXNjYXBlIiwibm9fYXJnX2Fib3J0Iiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3NvbWUiLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmciLCJvbmVfb3JfbW9yZV9hc19saXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsImxpc3RlZCIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsInJlcXVpcmVkIiwib3B0aW9uYWxfdG9fcmVxdWlyZWQiLCJhcmdfbmFtZXMiLCJhbmRfYXJnX25hbWUiLCJhbmRfYXJnX25hbWVzIiwiY2hvb3NlX29uZV9ub25fb3B0aW9uYWwiLCJjaG9vc2Vfb25lIiwiZXNjYXBlX2Fub24iLCJhbm9uIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwiZmxhZyIsImhlbHAiLCJtYXAzIiwiYm90aCIsInBlcmNlbnQkMCIsImhvc3RfYW5kX3BvcnQkMCIsIm9mX3BhcmFtIiwidG9fcGFyYW0iLCJtYXBfYW5vbnMkMCIsInQ0JDAiLCJ0MyQwIiwibWF5YmVfd2l0aF9kZWZhdWx0JDAiLCJtYXliZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QkMCIsIm5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyJDAiLCJzZXF1ZW5jZSQwIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJtYXBfZmxhZyQwIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlJDAiLCJlc2NhcGUkMCIsIm5vX2FyZ19hYm9ydCQwIiwibm9fYXJnX3JlcXVpcmVkJDAiLCJub19hcmdfc29tZSQwIiwibm9fYXJnX3JlZ2lzdGVyJDAiLCJub19hcmckMCIsIm9uZV9vcl9tb3JlX2FzX2xpc3QkMCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIkMCIsImxpc3RlZCQwIiwib3B0aW9uYWxfd2l0aF9kZWZhdWx0JDAiLCJvcHRpb25hbCQwIiwicmVxdWlyZWQkMCIsIndyYXAiLCJwYWlyIiwiYXJnX25hbWVzJDAiLCJhbmRfYXJnX25hbWUkMCIsImFuZF9hcmdfbmFtZXMkMCIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsJDAiLCJjaG9vc2Vfb25lJDAiLCJlc2NhcGVfYW5vbiQwIiwiYW5vbiQwIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jJDAiLCJmbGFnJDAiLCJwYXRoJDAiLCJoZWxwJDAiLCJhbGxfdW5pdCQwIiwiYWxsJDAiLCJtYXAzJDAiLCJhcHBseSQwIiwic3ltYm9sX21hcCQwIiwiYm90aCQwIiwicmV0dXJuJDEiLCJwZXJjZW50JDEiLCJob3N0X2FuZF9wb3J0JDEiLCJkb2VzX3JhaXNlIiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJ2X3N1bW1hcnkiLCJ2X3JlYWRtZSIsInZfYW5vbnMiLCJ2X2ZsYWdzIiwiYmluX3NoYXBlX2EiLCJ2X3N1YmNvbW1hbmRzIiwidl93b3JraW5nX2RpciIsInZfcGF0aF90b19leGUiLCJ2X2NoaWxkX3N1YmNvbW1hbmQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwidiQzIiwidiQ0IiwidiQ1IiwidiQwIiwidiQxIiwidiQyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzAzMyIsImVycm9yX3NvdXJjZV8wNDkiLCJlcnJvcl9zb3VyY2VfMDcyIiwiZXJyb3Jfc291cmNlXzA4NiIsImVycm9yX3NvdXJjZV8xMTkiLCJlcnJvcl9zb3VyY2VfMTUxIiwiZXJyb3Jfc291cmNlXzE5OSIsImVycm9yX3NvdXJjZV8yMDEiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwieF8wMzQiLCJhIiwiZyIsInNleHBfb2ZfdCQwIiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJhcmdfMDQzIiwiYm5kc18wMzUiLCJhcmdfMDQxIiwiYm5kc18wMzUkMCIsImFyZ18wMzkiLCJibmRzXzAzNSQxIiwiYXJnXzAzNyIsImJuZHNfMDM1JDIiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsInY0IiwidjMiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwidl9yIiwidl9nIiwidl9iIiwidl9hIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wNDQiLCJiXzA0NSIsIm4kMCIsIm4kMSIsImFfMDQ2IiwiYl8wNDciLCJ0X29mX3NleHAkMSIsInhfMDUwIiwibCIsImgiLCJzZXhwX29mX3QkMSIsImFfMDU4IiwibF8wNTYiLCJzXzA1NCIsImhfMDUyIiwiYXJnXzA1OSIsImJuZHNfMDUxIiwiYXJnXzA1NyIsImJuZHNfMDUxJDAiLCJhcmdfMDU1IiwiYm5kc18wNTEkMSIsImFyZ18wNTMiLCJibmRzXzA1MSQyIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ2X2giLCJ2X3MiLCJ2X2wiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzA2MCIsImJfMDYxIiwiYV8wNjIiLCJiXzA2MyIsImNyZWF0ZSQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzA2NyIsImF0b21fMDY1Iiwic2V4cF9hcmdzXzA2OCIsImF0b21fMDY1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwiYXJnMF8wNzQiLCJyZXMwXzA3NSIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwiYXJnMF8wODMiLCJyZXMwXzA4NCIsInRfb2Zfc2V4cCQzIiwic2V4cF8wODUiLCJzZXhwX29mX3QkMiIsInZfMDkyIiwidl8wOTEiLCJ2XzA4NyIsInZfMDg5Iiwidl8wODgiLCJ2XzA5MCIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDkzIiwiYl8wOTQiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInJpZ2h0XzA5NiIsImxlZnRfMDk1IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8wOTgiLCJsZWZ0XzA5NyIsInJpZ2h0XzEwMiIsImxlZnRfMTAxIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTE0IiwiYXRvbV8xMTIiLCJzZXhwX2FyZ3NfMTE1IiwiYXRvbV8xMTIkMCIsImFyZzBfMTI3IiwicmVzMF8xMjgiLCJhcmcwXzEyNCIsInJlczBfMTI1IiwiYXJnMF8xNDgiLCJyZXMwXzE0OSIsImFyZzBfMTQyIiwicmVzMF8xNDMiLCJhcmcwXzEyMSIsInJlczBfMTIyIiwiYXJnMF8xMTciLCJyZXMwXzExOCIsImFyZzBfMTQ1IiwicmVzMF8xNDYiLCJhcmcwXzEzOSIsInJlczBfMTQwIiwiYXJnMF8xMzYiLCJyZXMwXzEzNyIsImFyZzBfMTMzIiwicmVzMF8xMzQiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE1MCIsInNleHBfb2ZfdCQzIiwidl8xNjMiLCJ2XzE2MSIsInZfMTU5Iiwidl8xNTYiLCJ2XzE1NCIsInZfMTUyIiwidl8xNjIiLCJ2XzE2MCIsInZfMTU4Iiwidl8xNTUiLCJ2XzE1MyIsInZfMTU3IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzE2NCIsImJfMTY1IiwicmlnaHRfMTc1IiwibGVmdF8xNzQiLCJyaWdodF8xNzEiLCJsZWZ0XzE3MCIsInJpZ2h0XzE2NyIsImxlZnRfMTY2IiwicmlnaHRfMTg3IiwibGVmdF8xODYiLCJyaWdodF8xODUiLCJsZWZ0XzE4NCIsInJpZ2h0XzE4MSIsImxlZnRfMTgwIiwicmlnaHRfMTgzIiwibGVmdF8xODIiLCJyaWdodF8xNzkiLCJsZWZ0XzE3OCIsInJpZ2h0XzE3MyIsImxlZnRfMTcyIiwicmlnaHRfMTY5IiwibGVmdF8xNjgiLCJyaWdodF8xNzciLCJsZWZ0XzE3NiIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMTkwIiwiYl8xOTEiLCJ0X29mX3NleHAkNiIsInNleHBfMTk3IiwiYXRvbV8xOTUiLCJhdG9tXzE5NSQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzIwMCIsInNleHBfb2ZfdCQ0Iiwidl8yMDIiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiZW1wdHkiLCJpc19lbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsImxpbmVfaGVpZ2h0Iiwid2lkdGgiLCJtaW5fd2lkdGgiLCJtYXhfd2lkdGgiLCJoZWlnaHQiLCJtaW5faGVpZ2h0IiwibWF4X2hlaWdodCIsInBhZGRpbmdfdG9wIiwicGFkZGluZ19ib3R0b20iLCJwYWRkaW5nX2xlZnQiLCJwYWRkaW5nX3JpZ2h0IiwicGFkZGluZyIsInVuaWZvcm1fcGFkZGluZyIsIm1hcmdpbl90b3AiLCJtYXJnaW5fYm90dG9tIiwibWFyZ2luX2xlZnQiLCJtYXJnaW5fcmlnaHQiLCJtYXJnaW4iLCJ1bmlmb3JtX21hcmdpbiIsInJvd19nYXAiLCJjb2x1bW5fZ2FwIiwiY29uY2F0MnYiLCJjb25jYXQzdiIsImJvcmRlcl92YWx1ZSIsInN0eWxlJDAiLCJ3aWR0aCQwIiwiY29sb3IkMCIsImNyZWF0ZV9ib3JkZXIiLCJzaWRlIiwiYm9yZGVyX3RvcCIsImJvcmRlcl9ib3R0b20iLCJib3JkZXJfbGVmdCIsImJvcmRlcl9yaWdodCIsImJvcmRlciIsIm91dGxpbmUiLCJib3JkZXJfY29sbGFwc2UiLCJib3JkZXJfc3BhY2luZyIsImJvcmRlcl9yYWRpdXMiLCJ0ZXh0X2RlY29yYXRpb24iLCJsaW5lIiwibGluZSQwIiwiaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyIsImZsZXhfY29udGFpbmVyIiwiYWxpZ25faXRlbXMiLCJhbGlnbl9jb250ZW50IiwianVzdGlmeV9jb250ZW50IiwicmciLCJjZyIsImlubGluZSIsIndyYXAiLCJkaXJlY3Rpb24kMCIsIndyYXAkMCIsImFsaWduX2l0ZW1zJDAiLCJhbGlnbl9jb250ZW50JDAiLCJhJDEiLCJqdXN0aWZ5X2NvbnRlbnQkMCIsInJvd19nYXAkMCIsImNvbHVtbl9nYXAkMCIsImZsZXhfaXRlbSIsIm9yZGVyIiwiZ3JvdyIsImJhc2lzIiwic2hyaW5rIiwib3JkZXIkMCIsImJhc2lzJDAiLCJmbGV4IiwiYWxpZ25fc2VsZiIsInJlc2l6ZSIsInZhbHVlJDAiLCJhbmltYXRpb24iLCJkdXJhdGlvbiIsImRlbGF5IiwiZmlsbF9tb2RlIiwiaXRlcl9jb3VudCIsInRpbWluZ19mdW5jdGlvbiIsInNwYW5fdG9fc3RyaW5nIiwiZCIsImZpbGxfbW9kZSQwIiwidXNlcl9zZWxlY3QiLCJjc3MiLCJzMiIsIngiLCJ0b19qc19zdHJpbmciLCJ0b19qc19zdHJpbmdfZml4ZWQiLCJ0b19qc19zdHJpbmdfcHJlY2lzaW9uIiwidG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX2ZpeGVkIiwidG9fc3RyaW5nX3ByZWNpc2lvbiIsInRvX3N0cmluZ19leHBvbmVudGlhbCIsInByaW50IiwiZiIsInZpc2liaWxpdHlfaGFuZGxlcnMiLCJzZXF1ZW5jZV9hc19zaWJsaW5nIiwibGVmdCIsInVubGVzc19zdG9wcGVkIiwiY29udGFpbnNfc3RvcCIsImVzIiwiY3VycmVudF9kb21fZXZlbnQiLCJoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4iLCJoYW5kbGUiLCJkb21fZXZlbnQiLCJldmVudCIsIm9sZCIsInNleHBfb2ZfdCIsInZhbHVlIiwidHlwZV9pZCIsImdlbmVyaWNfaG9vayIsInBhY2siLCJpZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJpbml0IiwiaW5wdXRfaWQiLCJpbnB1dCIsImEiLCJpbml0JDAiLCJhJDAiLCJ1cGRhdGUkMCIsImRlc3Ryb3kkMCIsImdlbmVyaWNfaG9vayQwIiwiZXh0cmEiLCJjb21iaW5lIiwicmlnaHQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImVsZW1lbnQiLCJzdGF0ZSIsImFuaW1hdGlvbl9pZCIsIm9sZF9pbnB1dCIsImNyZWF0ZSIsImNvbWJpbmVfaW5wdXRzIiwic2V0IiwiZ2V0IiwiZGVsZXRlJDAiLCJzZXRfcHJvcF9hc2NpaSIsInQiLCJuYW1lIiwiZ2V0X3Byb3BfYXNjaWkiLCJoYXNfcHJvcGVydHkiLCJzZXRfcHJvcGVydHkiLCJoYXNfYXR0cmlidXRlIiwic2V0X2F0dHJpYnV0ZSIsInRvX2RvbSIsIm5vZGUiLCJ0YWciLCJhdHRycyIsImNoaWxkcmVuIiwia2V5Iiwia2V5JDAiLCJzdmciLCJ0ZXh0IiwicyIsInBhdGNoIiwiY3JlYXRlJDAiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJpc19lbXB0eSIsImZfaWQiLCJpZF9zZXhwIiwiY3JlYXRlJDEiLCJ2ZG9tX2Zvcl90ZXN0aW5nIiwiZWx0IiwiZG9tX25vZGUiLCJzMCIsInByZXZfc3RhdGUiLCJkb21fbm9kZSQwIiwibmFtZSQyIiwibmFtZSQxIiwibmFtZSQwIiwiZW1wdHkiLCJyaGFuZGxlciIsInhfMDAyIiwibGhhbmRsZXIiLCJ4XzAwMSIsImNyZWF0ZV9mbG9hdCIsInByb3BlcnR5Iiwic3RyaW5nX3Byb3BlcnR5IiwiYm9vbF9wcm9wZXJ0eSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzIiwiY3JlYXRlX2hvb2siLCJob29rIiwibWFueSIsIm1hbnlfd2l0aG91dF9tZXJnZSIsImNvbWJpbmUkMCIsIndhcm5pbmdfY291bnQiLCJ3YXJuX3MiLCJxdW90YSIsIndhcm5pbmdfY291bnQkMCIsInJlc2V0X3dhcm5pbmdfY291bnQiLCJjb21iaW5pbmdfbWFwX2FkZCIsIm1hcCIsImV4aXN0aW5nX3ZhbHVlIiwiZW1wdHlfbWVyZ2UiLCJzdHlsZSIsImNzcyIsImNsYXNzJDAiLCJjbGFzc25hbWUiLCJjbGFzc2VzIiwiY2xhc3NlcyQwIiwiY2xhc3NuYW1lcyIsImhyZWYiLCJyIiwibGFiZWwiLCJ0YXJnZXQiLCJjaGVja2VkIiwic2VsZWN0ZWQiLCJoaWRkZW4iLCJyZWFkb25seSIsImRpc2FibGVkIiwicGxhY2Vob2xkZXIiLCJ4IiwiYXV0b2ZvY3VzIiwiZm9yJDAiLCJ0eXBlIiwidmFsdWVfcHJvcCIsInRhYmluZGV4IiwidGl0bGUiLCJhbHQiLCJzcmMiLCJvcGVuIiwic3RhcnQiLCJtaW4iLCJtYXgiLCJtaW5fZGF0ZSIsIm1heF9kYXRlIiwibWluX2RhdGVfdGltZSIsIm1heF9kYXRlX3RpbWUiLCJjb2xzcGFuIiwicm93c3BhbiIsImRyYWdnYWJsZSIsImIiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJjbGlwYm9hcmQiLCJkcmFnIiwicG9pbnRlciIsImFuaW1hdGlvbiIsIm9uIiwiaGFuZGxlciIsIm9uX2ZvY3VzIiwib25fYmx1ciIsIm9uX2NsaWNrIiwib25fY29udGV4dG1lbnUiLCJvbl9kb3VibGVfY2xpY2siLCJvbl9kcmFnIiwib25fZHJhZ3N0YXJ0Iiwib25fZHJhZ2VuZCIsIm9uX2RyYWdlbnRlciIsIm9uX2RyYWdsZWF2ZSIsIm9uX2RyYWdvdmVyIiwib25fZHJvcCIsIm9uX21vdXNlbW92ZSIsIm9uX21vdXNldXAiLCJvbl9tb3VzZWRvd24iLCJvbl9tb3VzZWVudGVyIiwib25fbW91c2VsZWF2ZSIsIm9uX21vdXNlb3ZlciIsIm9uX21vdXNlb3V0Iiwib25fa2V5dXAiLCJvbl9rZXlwcmVzcyIsIm9uX2tleWRvd24iLCJvbl9zY3JvbGwiLCJvbl9sb2FkIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fd2hlZWwiLCJvbl9jb3B5Iiwib25fY3V0Iiwib25fcGFzdGUiLCJvbl9yZXNldCIsIm9uX2FuaW1hdGlvbmVuZCIsImNvbnN0X2lnbm9yZSIsInJ1bl9jb2VyY2lvbiIsImNvZXJjaW9uIiwicHJldiIsIm9uX2lucHV0X2V2ZW50Iiwib25fY2hhbmdlIiwib25faW5wdXQiLCJ0b19yYXciLCJhdHRyIiwiYXR0cnNfb2JqIiwidGFrZV9zZWNvbmRfc3R5bGVzIiwiZmlyc3QiLCJzZWNvbmQiLCJ0YWtlX3NlY29uZF9jbGFzc2VzIiwiZmlyc3QkMCIsImFfMDAzIiwiYl8wMDQiLCJzZWNvbmQkMCIsImFfMDA1IiwiYl8wMDYiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwic2V4cF9vZl90JDAiLCJ4XzAxMyIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMwXzAxMSIsInJlczFfMDEyIiwiY29tYmluZSQyIiwib25fbW91bnQkMCIsIm5ld19pbnB1dCIsImFfMDE2IiwiYl8wMTciLCJ0XzAxOSIsInRfMDE4IiwidF8wMjEiLCJ0XzAyMCIsImNzc192YXJzX25vX2tlYmFicyIsImFsaXN0IiwiY3NzX3ZhciIsImZpbHRlcl9ieV9raW5kIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsImV2ZW50X2tpbmQkMSIsImV2ZW50X2tpbmQkMiIsImV2ZW50X2tpbmQkMyIsImV2ZW50X2tpbmQkNCIsImV2ZW50X2tpbmQkNSIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJjbGljayIsImNvbnRleHRtZW51Iiwia2V5ZG93biIsImJlZm9yZXVubG9hZCIsImYkMCIsInZpc2liaWxpdHljaGFuZ2UiLCJtb3VzZXVwX3R5cGVfaWQiLCJtb3VzZW1vdmVfdHlwZV9pZCIsImtleWRvd25fdHlwZV9pZCIsImNsaWNrX3R5cGVfaWQiLCJjb250ZXh0bWVudV90eXBlX2lkIiwidmlzaWJpbGl0eWNoYW5nZV90eXBlX2lkIiwiYmVmb3JldW5sb2FkX3R5cGVfaWQiLCJ2ZG9tX3RodW5rIiwiYXJnIiwia2V5JDEiLCJyZXMxXzAwOSIsIndpdGhfa2V5IiwibWFwX2F0dHJzIiwicmF3X2F0dHJzIiwiYWRkX2NsYXNzZXMiLCJ0X3RvX2pzIiwidyIsInRfdG9fanNfbGF6eSIsImtpbmQiLCJvdGhlciIsImxhenkiLCJlbGVtZW50X2V4cGVydCIsIndpZGdldCIsInZkb21fZm9yX3Rlc3RpbmckMCIsImNyZWF0ZV9jaGlsZGxlc3MiLCJjcmVhdGVfc3ZnIiwidGV4dGYiLCJmb3JtYXQiLCJ3aWRnZXRfb2ZfbW9kdWxlIiwibSIsImFyZzBfMDA2Iiwic3RhdGVfMDA0IiwiaW5wdXRfMDAyIiwiYXJnXzAwNSIsImJuZHNfMDAxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDAiLCJyZXMwXzAwOCIsInByZXZfaW5wdXQiLCJlbGVtZW50JDAiLCJzdGF0ZSQwIiwiaSIsIndpZGdldCQwIiwiY29udGVudCIsIm92ZXJyaWRlX3Zkb21fZm9yX3Rlc3RpbmciLCJwcmV2X2F0dHIiLCJwcmV2X3RhZyIsInByZXZfY29udGVudCIsImlubmVyX2h0bWxfc3ZnIiwiaW5uZXJfaHRtbCIsImFiYnIiLCJib2R5IiwiYnV0dG9uIiwiY29kZSIsImRhdGFsaXN0IiwiZGV0YWlscyIsImRpdiIsIm1haW4iLCJmaWVsZHNldCIsImxlZ2VuZCIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImh0bWwiLCJpbWciLCJpbnB1dF9kZXByZWNhdGVkIiwidGV4dGFyZWEiLCJzZWxlY3QiLCJvcHRncm91cCIsIm9wdGlvbiIsImxpIiwicCIsInByZSIsInNlY3Rpb24iLCJzcGFuIiwic3Ryb25nIiwiZW0iLCJibG9ja3F1b3RlIiwic3VtbWFyeSIsImlmcmFtZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwiZGwiLCJkdCIsImRkIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsImFwcGx5IiwiY3JlYXRlJDIiLCJjcmVhdGVfc3ZnJDAiLCJoZXJlIiwiZXJyb3Jfc291cmNlXzAwNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInZhbGlkYXRlIiwidCIsImVxdWFsIiwidDEiLCJ0MiIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJzZXhwX29mX3QkMSIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJ0MSIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJzZXhwX29mX3QiLCJ2XzAwNiIsInNsb3RzX3Blcl90dXBsZV8wMDIiLCJhcmdfMDAzIiwiYm5kc18wMDEiLCJzZXhwX29mX3QkMCIsIm9mX3R1cGxlXzAwNyIsIm9mX3ZhcmlhbnRfMDA4Iiwic2xvdHNfcGVyX3R1cGxlIiwibiIsInNleHBfb2ZfdDEiLCJvZl9hMF8wMDkiLCJzZXhwX29mX3QyIiwib2ZfYTBfMDEwIiwib2ZfYTFfMDExIiwic2V4cF9vZl90MyIsIm9mX2EwXzAxMiIsIm9mX2ExXzAxMyIsIm9mX2EyXzAxNCIsInNleHBfb2ZfdDQiLCJvZl9hMF8wMTUiLCJvZl9hMV8wMTYiLCJvZl9hMl8wMTciLCJvZl9hM18wMTgiLCJzZXhwX29mX3Q1Iiwib2ZfYTBfMDE5Iiwib2ZfYTFfMDIwIiwib2ZfYTJfMDIxIiwib2ZfYTNfMDIyIiwib2ZfYTRfMDIzIiwic2V4cF9vZl90NiIsIm9mX2EwXzAyNCIsIm9mX2ExXzAyNSIsIm9mX2EyXzAyNiIsIm9mX2EzXzAyNyIsIm9mX2E0XzAyOCIsIm9mX2E1XzAyOSIsInNleHBfb2ZfdDciLCJvZl9hMF8wMzAiLCJvZl9hMV8wMzEiLCJvZl9hMl8wMzIiLCJvZl9hM18wMzMiLCJvZl9hNF8wMzQiLCJvZl9hNV8wMzUiLCJvZl9hNl8wMzYiLCJzZXhwX29mX3Q4Iiwib2ZfYTBfMDM3Iiwib2ZfYTFfMDM4Iiwib2ZfYTJfMDM5Iiwib2ZfYTNfMDQwIiwib2ZfYTRfMDQxIiwib2ZfYTVfMDQyIiwib2ZfYTZfMDQzIiwib2ZfYTdfMDQ0Iiwic2V4cF9vZl90OSIsIm9mX2EwXzA0NSIsIm9mX2ExXzA0NiIsIm9mX2EyXzA0NyIsIm9mX2EzXzA0OCIsIm9mX2E0XzA0OSIsIm9mX2E1XzA1MCIsIm9mX2E2XzA1MSIsIm9mX2E3XzA1MiIsIm9mX2E4XzA1MyIsInNleHBfb2ZfdDEwIiwib2ZfYTBfMDU0Iiwib2ZfYTFfMDU1Iiwib2ZfYTJfMDU2Iiwib2ZfYTNfMDU3Iiwib2ZfYTRfMDU4Iiwib2ZfYTVfMDU5Iiwib2ZfYTZfMDYwIiwib2ZfYTdfMDYxIiwib2ZfYThfMDYyIiwib2ZfYTlfMDYzIiwic2V4cF9vZl90MTEiLCJvZl9hMF8wNjQiLCJvZl9hMV8wNjUiLCJvZl9hMl8wNjYiLCJvZl9hM18wNjciLCJvZl9hNF8wNjgiLCJvZl9hNV8wNjkiLCJvZl9hNl8wNzAiLCJvZl9hN18wNzEiLCJvZl9hOF8wNzIiLCJvZl9hOV8wNzMiLCJvZl9hMTBfMDc0Iiwic2V4cF9vZl90MTIiLCJvZl9hMF8wNzUiLCJvZl9hMV8wNzYiLCJvZl9hMl8wNzciLCJvZl9hM18wNzgiLCJvZl9hNF8wNzkiLCJvZl9hNV8wODAiLCJvZl9hNl8wODEiLCJvZl9hN18wODIiLCJvZl9hOF8wODMiLCJvZl9hOV8wODQiLCJvZl9hMTBfMDg1Iiwib2ZfYTExXzA4NiIsInNleHBfb2ZfdDEzIiwib2ZfYTBfMDg3Iiwib2ZfYTFfMDg4Iiwib2ZfYTJfMDg5Iiwib2ZfYTNfMDkwIiwib2ZfYTRfMDkxIiwib2ZfYTVfMDkyIiwib2ZfYTZfMDkzIiwib2ZfYTdfMDk0Iiwib2ZfYThfMDk1Iiwib2ZfYTlfMDk2Iiwib2ZfYTEwXzA5NyIsIm9mX2ExMV8wOTgiLCJvZl9hMTJfMDk5Iiwic2V4cF9vZl90MTQiLCJvZl9hMF8xMDAiLCJvZl9hMV8xMDEiLCJvZl9hMl8xMDIiLCJvZl9hM18xMDMiLCJvZl9hNF8xMDQiLCJvZl9hNV8xMDUiLCJvZl9hNl8xMDYiLCJvZl9hN18xMDciLCJvZl9hOF8xMDgiLCJvZl9hOV8xMDkiLCJvZl9hMTBfMTEwIiwib2ZfYTExXzExMSIsIm9mX2ExMl8xMTIiLCJvZl9hMTNfMTEzIiwibmFtZSQxIiwicHJlZml4IiwibmFtZSQwIiwibmFtZSIsImZhaWx3aXRocyIsImFyY2hfc2l4dHlmb3VyIiwibnVtX2JpdHMiLCJtYXhfdmFsdWUiLCJ0b19zdHJpbmciLCJzcHJpbnRmIiwiY29uY2F0IiwibCIsIm9mX3Nsb3RzXzAwNyIsIm9mX2FfMDA4IiwiZXF1YWwiLCJtYXhfc2xvdCIsImFycmF5X2luZGV4X251bV9iaXRzIiwibWFza2VkX3R1cGxlX2lkX251bV9iaXRzIiwibWF4X2FycmF5X2xlbmd0aCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInQiLCJwaHlzX2VxdWFsIiwicGh5c19jb21wYXJlIiwibnVsbCQwIiwiaXNfbnVsbCIsImNyZWF0ZSIsImhlYWRlcl9pbmRleCIsInR1cGxlX2lkIiwiaGVhZGVyX2luZGV4X21hc2siLCJpbnZhcmlhbnQiLCJzbG90X2luZGV4Iiwic2xvdCIsImZpcnN0X3Nsb3RfaW5kZXgiLCJ0b19pbnQ2MyIsIm9mX2ludDYzIiwibnVsbCQxIiwiaXNfbnVsbCQwIiwiaXNfZnJlZSIsImlzX3VzZWQiLCJ0dXBsZV9pZCQwIiwibWV0YWRhdGFfaW5kZXgiLCJzdGFydF9vZl90dXBsZXNfaW5kZXgiLCJtYXhfY2FwYWNpdHkiLCJkdW1teSIsInIiLCJmaXJzdF9mcmVlIiwic2V0X2ZpcnN0X2ZyZWUiLCJ2IiwibmV4dF9pZCIsInNldF9uZXh0X2lkIiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImNhcGFjaXR5IiwiZHVtbXkkMCIsImZpcnN0X2ZyZWUkMCIsIm5leHRfaWQkMCIsImxlbmd0aCQwIiwiY2FwYWNpdHkkMCIsInNsb3RzX3Blcl90dXBsZSQwIiwiaW5pdCIsImFycmF5X2luZGljZXNfcGVyX3R1cGxlIiwiYXJyYXlfbGVuZ3RoIiwidHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCIsInR1cGxlX251bSIsInR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IiwibWV0YWRhdGEiLCJsZW5ndGgkMSIsInNleHBfb2ZfdCQzIiwic2V4cF9vZl90eSIsImNhcGFjaXR5XzAxOCIsInNsb3RzX3Blcl90dXBsZV8wMTYiLCJsZW5ndGhfMDIwIiwibmV4dF9pZF8wMjIiLCJmaXJzdF9mcmVlXzAyNCIsImR1bW15XzAyNiIsImFyZ18wMjciLCJibmRzXzAxNSIsImFyZ18wMjUiLCJibmRzXzAxNSQwIiwiYXJnXzAyMyIsImJuZHNfMDE1JDEiLCJhcmdfMDIxIiwiYm5kc18wMTUkMiIsImFyZ18wMTkiLCJibmRzXzAxNSQzIiwiYXJnXzAxNyIsImJuZHNfMDE1JDQiLCJ1bnNhZmVfaGVhZGVyIiwidW5zYWZlX3NldF9oZWFkZXIiLCJoZWFkZXIiLCJoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIiwidW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSIsInBvaW50ZXIiLCJ0JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMSIsImlkIiwic2hvdWxkX2VxdWFsIiwieF8wMDkiLCJleG4kMCIsImV4biIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsImFyZzBfMDI4IiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInJlczJfMDMzIiwiaW52YXJpYW50JDAiLCJpbnZhcmlhbnRfYSIsImZyZWUiLCJoZWFkZXJfaW5kZXgkMCIsInR1cGxlX251bSQwIiwiZmlyc3Rfc2xvdCIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiY2FwYWNpdHkkMSIsImlzX2Z1bGwiLCJ1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCIsIm5leHRfZnJlZV9oZWFkZXJfaW5kZXgiLCJzZXRfbWV0YWRhdGEiLCJjcmVhdGVfYXJyYXkiLCJ1bnNhZmVfaW5pdF9yYW5nZSIsImxvIiwiaGkiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJ0cyIsImFyZyIsInNleHBfb2ZfYXJnIiwic2V4cF9vZl9yZXN1bHQiLCJmIiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ2XzA2OCIsInhfMDY5IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2Iiwib2Zfc2xvdHNfMDc3IiwiaXNfdmFsaWRfMDc5IiwicG9pbnRlcl8wODEiLCJhcmdfMDgyIiwiYm5kc18wNzgiLCJhcmdfMDgwIiwiYm5kc18wNzgkMCIsImZpZWxkMCIsImZpZWxkMSIsInR5cGVuYW1lIiwiaGFzX2RvdWJsZV9hcnJheV90YWciLCJmaWVsZHMiLCJpc192YWxpZCIsImZvbGxvdyIsInhfMDgzIiwiaW52YWxpZGF0ZSIsInBvcyQ5IiwicG9zJDgiLCJwb3MkNyIsInBvcyQ2IiwiYXJnXzA4NyIsInBvcyQ1IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsImVycm9yX3NvdXJjZV8wMTkiLCJtYXhfdGltZSIsIm1pbl90aW1lIiwibWF4X251bV9iaXRzIiwibWluX3ZhbHVlIiwiaW52YXJpYW50IiwidCIsIm9mX2ludCIsImkiLCJzeW1ib2wkMiIsInQxIiwidDIiLCJzeW1ib2wkMyIsInBvdzIiLCJzZXhwX29mX3QkMCIsInhfMDA3IiwibnVtX2JpdHNfaW50ZXJuYWwiLCJudW1fYml0cyIsImludmFyaWFudCQwIiwibnVtX2tleV9iaXRzIiwidF9vZl9zZXhwJDAiLCJ4XzAwNiIsImNyZWF0ZV9leG4iLCJ4XzAwOCIsImV4dGVuZF90b19tYXhfbnVtX2JpdHMiLCJiaXRzIiwiaW50cyIsImxldmVsX2JpdHNfZGVmYXVsdCIsImNvbXBhcmUiLCJlcXVhbCQwIiwieF8wMTIiLCJ4XzAxMyIsInRvX3NleHBhYmxlIiwic2V4cF9vZl90JDEiLCJhYm91dF9vbmVfbWljcm9zZWNvbmQiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJsZXZlbF9iaXRzJDAiLCJ2IiwidF9vZl9zZXhwJDIiLCJ4XzAyMSIsImNhcGFjaXR5IiwiYWxhcm1fcHJlY2lzaW9uIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wMjciLCJsZXZlbF9iaXRzXzAyNSIsImFsYXJtX3ByZWNpc2lvbl8wMjMiLCJibmRzXzAyMiIsInZfMDI4IiwiYXJnXzAzMCIsImJuZF8wMjkiLCJibmRzXzAyMiQwIiwiYXJnXzAyNiIsImJuZHNfMDIyJDEiLCJhcmdfMDI0IiwiYm5kc18wMjIkMiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJsb29wIiwicmVtYWluaW5nIiwidCQwIiwiYiIsIm1pY3Jvc2Vjb25kX3ByZWNpc2lvbiIsImR1cmF0aW9ucyIsIm51bV9iaXRzX2FjY3VtIiwibGV2ZWxfbnVtX2JpdHMiLCJudW1fYml0c19hY2N1bSQwIiwiZHVyYXRpb24iLCJjb21wYXJlJDAiLCJzZXhwX29mX3QkNCIsImNyZWF0ZSQwIiwiY3JlYXRlJDEiLCJiaXRzX3Blcl9zbG90IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsInNjYWxlX2ludCIsInNleHBfb2ZfdCQ3Iiwib2ZfaW50NjMkMCIsInRvX2ludDYzJDAiLCJhZGQiLCJhZGRfY2xhbXBfdG9fbWF4Iiwic3ViIiwiZGlmZiIsInNleHBfb2ZfcG9vbF9zbG90cyIsIm9mX2FfMDMzIiwieF8wMzQiLCJzZXhwX29mX3QkOCIsIm9mX2FfMDM1IiwieF8wMzYiLCJudWxsJDAiLCJudWxsJDEiLCJpc19udWxsIiwiZnJlZSIsImtleSIsInAiLCJhdCIsInZhbHVlIiwibGV2ZWxfaW5kZXgiLCJwcmV2Iiwic2V0X3ByZXYiLCJ4IiwibmV4dCIsInNldF9uZXh0IiwiaXNfdmFsaWQiLCJncm93IiwiaXNfZnVsbCIsIm9mX2V4dGVybmFsX2V4biIsInBvb2wiLCJsaW5rIiwiaXRlciIsImZpcnN0IiwiZiIsImN1cnJlbnQiLCJjb250aW51ZSQwIiwibmV4dCQwIiwic2xvdHMiLCJtYXhfYWxsb3dlZF9rZXkiLCJzZXRfbWF4X2FsbG93ZWRfa2V5IiwibWluX2FsbG93ZWRfa2V5Iiwic2V0X21pbl9hbGxvd2VkX2tleSIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDQ0IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA1OCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDU2Iiwia2V5c19wZXJfc2xvdF8wNTQiLCJiaXRzX3Blcl9zbG90XzA1MiIsInNsb3RzX21hc2tfMDUwIiwiYml0c18wNDgiLCJpbmRleF8wNDYiLCJsZW5ndGhfMDYwIiwibWluX2FsbG93ZWRfa2V5XzA2MiIsIm1heF9hbGxvd2VkX2tleV8wNjQiLCJzbG90c18wNjYiLCJhcmdfMDY3IiwiYm5kc18wNDUiLCJhcmdfMDY1IiwiYm5kc18wNDUkMCIsImFyZ18wNjMiLCJibmRzXzA0NSQxIiwiYXJnXzA2MSIsImJuZHNfMDQ1JDIiLCJhcmdfMDU5IiwiYm5kc18wNDUkMyIsImFyZ18wNTciLCJibmRzXzA0NSQ0IiwiYXJnXzA1NSIsImJuZHNfMDQ1JDUiLCJhcmdfMDUzIiwiYm5kc18wNDUkNiIsImFyZ18wNTEiLCJibmRzXzA0NSQ3IiwiYXJnXzA0OSIsImJuZHNfMDQ1JDgiLCJhcmdfMDQ3IiwiYm5kc18wNDUkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsImNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkiLCJsZXZlbHMiLCJlbHRfa2V5X2xvd2VyX2JvdW5kIiwic2V0X2VsdF9rZXlfbG93ZXJfYm91bmQiLCJtaW5fZWx0Iiwic2V0X21pbl9lbHQiLCJzZXRfcG9vbCIsImxlbmd0aCQxIiwic2V0X2xlbmd0aCQwIiwibGV2ZWxzJDAiLCJlbHRfa2V5X2xvd2VyX2JvdW5kJDAiLCJtaW5fZWx0JDAiLCJwb29sJDAiLCJsZW5ndGgkMiIsImlzX2VtcHR5IiwibnVtX2xldmVscyIsIm1pbl9hbGxvd2VkX2tleSQxIiwibWF4X2FsbG93ZWRfa2V5JDEiLCJpbnRlcm5hbF9pdGVyIiwibGV2ZWwiLCJzbG90X2luZGV4IiwiZWx0IiwiY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rIiwibWluX2VsdCQxIiwibWluX2VsdF9hbHJlYWR5X2ZvdW5kIiwibWluX2tleV9hbHJlYWR5X2ZvdW5kIiwibnVtX2xldmVscyQwIiwic2xvdF9taW5fa2V5Iiwic2xvdCQwIiwiY3VycmVudF9rZXkiLCJhZGRfZWx0IiwieF8xMTQiLCJ0b19hZGQiLCJrZXkkMCIsImVsdHNfMDk0IiwibWF4X2FsbG93ZWRfa2V5XzA5MiIsIm1pbl9hbGxvd2VkX2tleV8wOTAiLCJhcmdfMDk1Iiwia2V5XzA4NCIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJyJDAiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTQ2Iiwic3RhcnRfMTQ0IiwiY29uZmlnXzE0MiIsIm5vd18xNDgiLCJhbGFybSIsImFsYXJtc18xNTAiLCJhcmdfMTUxIiwidmFsdWVfMTM4IiwiYXRfMTM2IiwiYXJnXzEzOSIsImJuZHNfMTM1IiwiYXJnXzEzNyIsImJuZHNfMTM1JDAiLCJibmRzXzE0MSIsImFyZ18xNDkiLCJibmRzXzE0MSQwIiwiYXJnXzE0NyIsImJuZHNfMTQxJDEiLCJhcmdfMTQ1IiwiYm5kc18xNDEkMiIsImFyZ18xNDMiLCJibmRzXzE0MSQzIiwibGVuZ3RoJDMiLCJpc19lbXB0eSQwIiwicG9vbCQxIiwiaW50ZXJ2YWxfbnVtX2ludGVybmFsIiwidGltZSIsImludGVydmFsX251bV91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW0kMCIsImludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW1fc3RhcnQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIiwibmV4dF9hbGFybV9maXJlc19hdCIsIm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIiwieF8xNTMiLCJjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtIiwibWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIiwiaW50ZXJ2YWxfc3RhcnQiLCJpbnZhcmlhbnQkMiIsImludmFyaWFudF9hIiwieF8xNTUiLCJjaGVjayIsInByaW9yaXR5X3F1ZXVlX2Z1biIsInhfMTA5Iiwib2ZfYV8wNjgiLCJsZW5ndGhfMDcwIiwicG9vbF8wNzIiLCJtaW5fZWx0XzA3NCIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDc2IiwibGV2ZWxzXzA3OCIsImFyZ18wNzkiLCJibmRzXzA2OSIsImFyZ18wNzciLCJibmRzXzA2OSQwIiwiYXJnXzA3NSIsImJuZHNfMDY5JDEiLCJhcmdfMDczIiwiYm5kc18wNjkkMiIsImFyZ18wNzEiLCJibmRzXzA2OSQzIiwibGV2ZWxzX2Z1biIsInhfMDk4Iiwic2xvdHNfZnVuIiwieF8wNDEiLCJuIiwibWF4X2FsbG93ZWRfa2V5X2Z1biIsImV4cGVjdCIsImNvbXBhcmF0b3IiLCJhXzEwNyIsImJfMTA4IiwibWluX2FsbG93ZWRfa2V5X2Z1biIsImdvdCIsInNleHBpZmllciIsImFfMTA1IiwiYl8xMDYiLCJsZW5ndGhfZnVuIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5X2Z1biIsImV0YSIsImFfMTAzIiwiYl8xMDQiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrX2Z1biIsImtleXNfcGVyX3Nsb3RfZnVuIiwiYV8xMDEiLCJiXzEwMiIsImJpdHNfcGVyX3Nsb3RfZnVuIiwiZXhwZWN0JDAiLCJzbG90c19tYXNrX2Z1biIsImFfMDk5IiwiYl8xMDAiLCJiaXRzX2Z1biIsImluZGV4X2Z1biIsInByZXZfbGV2ZWwiLCJnb3QkMCIsImFfMTEwIiwiYl8xMTEiLCJjb21wYXJhdG9yJDAiLCJhXzExMiIsImJfMTEzIiwiZWx0X2tleV9sb3dlcl9ib3VuZF9mdW4iLCJtaW5fZWx0X2Z1biIsInBvb2xfZnVuIiwibWF4X2FsbG93ZWRfYWxhcm1fdGltZV9mdW4iLCJhXzE2MiIsImJfMTYzIiwibm93X2ludGVydmFsX251bV9zdGFydF9mdW4iLCJhXzE2MCIsImJfMTYxIiwibm93X2Z1biIsIm1heF9pbnRlcnZhbF9udW1fZnVuIiwiYV8xNTYiLCJiXzE1NyIsInNleHBpZmllciQwIiwiYV8xNTgiLCJiXzE1OSIsInN0YXJ0X2Z1biIsImNvbmZpZ19mdW4iLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJ0JDEiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTY0IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTY1IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE2NiIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMDYiLCJlcnJvcl9zb3VyY2VfMDE1IiwiZXJyb3Jfc291cmNlXzAyOCIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDM2IiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzOSIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInhfMDA3IiwiaG93X3RvX2R1bXAiLCJkdW1wX2lmX2RlbGF5ZWRfYnkiLCJzZXhwX29mX3dhdGNoIiwiaG93X3RvX2R1bXBfMDExIiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOSIsImFyZ18wMTIiLCJibmRzXzAwOCIsImFyZ18wMTAiLCJibmRzXzAwOCQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzAxNyIsInRhZ18wMTgiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfb2ZfdCQ3IiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsInRfb2Zfc2V4cCQ4Iiwic2V4cF8wMjkiLCJzZXhwX29mX3QkOCIsImVxdWFsJDAiLCJ4XzAzMCIsInhfMDMxIiwidF9vZl9zZXhwJDkiLCJzZXhwXzAzNyIsInNleHBfb2ZfdCQ5IiwidF9vZl9zZXhwJDEwIiwic2V4cF9vZl90JDEwIiwidGltaW5nX3doZWVsX2NvbmZpZyIsInIiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyIsIm1heF9udW1fdGhyZWFkcyIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0IiwiZmlsZV9kZXNjcl93YXRjaGVyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIiLCJjaGVja19pbnZhcmlhbnRzIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfIiwidGltaW5nX3doZWVsX2NvbmZpZyQwIiwidiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eSQwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQwIiwicmVjb3JkX2JhY2t0cmFjZXMkMCIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQwIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQkMCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQwIiwibWF4X251bV90aHJlYWRzJDAiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMCIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMCIsImVwb2xsX21heF9yZWFkeV9ldmVudHMkMCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMCIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQwIiwiY2hlY2tfaW52YXJpYW50cyQwIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfJDAiLCJzZXhwX29mX3QkMTEiLCJ0aW1pbmdfd2hlZWxfY29uZmlnXzEwMiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eV8wOTgiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXzAiLCJyZWNvcmRfYmFja3RyYWNlc18wOTAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDg2IiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXRfMDgyIiwibWF4X251bV90aHJlYWRzXzA3NCIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc18wNzAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dF8wNjYiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNTgiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5XzA1NCIsImNoZWNrX2ludmFyaWFudHNfMDQ2IiwiYm5kc18wNDEiLCJ2XzEwMyIsImFyZ18xMDUiLCJibmRfMTA0IiwiYm5kc18wNDEkMCIsInZfMDk5IiwiYXJnXzEwMSIsImJuZF8xMDAiLCJibmRzXzA0MSQxIiwidl8wOTUiLCJhcmdfMDk3IiwiYm5kXzA5NiIsImJuZHNfMDQxJDIiLCJ2XzA5MSIsImFyZ18wOTMiLCJibmRfMDkyIiwiYm5kc18wNDEkMyIsInZfMDg3IiwiYXJnXzA4OSIsImJuZF8wODgiLCJibmRzXzA0MSQ0Iiwidl8wODMiLCJhcmdfMDg1IiwiYm5kXzA4NCIsImJuZHNfMDQxJDUiLCJ2XzA3OSIsImFyZ18wODEiLCJibmRfMDgwIiwiYm5kc18wNDEkNiIsInZfMDc1IiwiYXJnXzA3NyIsImJuZF8wNzYiLCJibmRzXzA0MSQ3Iiwidl8wNzEiLCJhcmdfMDczIiwiYm5kXzA3MiIsImJuZHNfMDQxJDgiLCJ2XzA2NyIsImFyZ18wNjkiLCJibmRfMDY4IiwiYm5kc18wNDEkOSIsInZfMDYzIiwiYXJnXzA2NSIsImJuZF8wNjQiLCJibmRzXzA0MSQxMCIsInZfMDU5IiwiYXJnXzA2MSIsImJuZF8wNjAiLCJibmRzXzA0MSQxMSIsInZfMDU1IiwiYXJnXzA1NyIsImJuZF8wNTYiLCJibmRzXzA0MSQxMiIsInZfMDUxIiwiYXJnXzA1MyIsImJuZF8wNTIiLCJibmRzXzA0MSQxMyIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MSQxNCIsInZfMDQzIiwiYXJnXzA0NSIsImJuZF8wNDQiLCJibmRzXzA0MSQxNSIsImNyZWF0ZSQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2ZvIiwid29yZF9zaXplIiwibGV2ZWxfYml0cyQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJkZWZhdWx0JDEiLCJleGFtcGxlIiwidXNhZ2UiLCJmaWVsZCIsInRvX3NleHAiLCJkZXNjcmlwdGlvbiIsImFjIiwiZCIsImZpZWxkcyIsInhfMTA2IiwibmFtZTIiLCJuYW1lMSIsIm5hbWUiLCJzdHJpbmciLCJ4XzA0MCIsInQiLCJ0JDAiLCJleG4iLCJ0JDEiLCJ0JDIiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMSIsInRhZyIsImwiLCJhbGwiLCJkZWJ1ZyIsImNsb2NrIiwiZmQiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMSIsImZpbmFsaXplcnMiLCJpbnRlcnJ1cHRvciIsIm1vbml0b3IiLCJtb25pdG9yX3NlbmRfZXhuIiwicGFyYWxsZWwiLCJyZWFkZXIiLCJzY2hlZHVsZXIiLCJzaHV0ZG93biIsInRocmVhZF9wb29sIiwidGhyZWFkX3NhZmUiLCJ3cml0ZXIiLCJzeW1ib2wiLCJhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja18kMSIsImNoZWNrX2ludmFyaWFudHMkMSIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQxIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyQxIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5JDEiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMiIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMSIsIm1heF9udW1fdGhyZWFkcyQxIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCQxIiwicmVjb3JkX2JhY2t0cmFjZXMkMSIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMSIsInRpbWluZ193aGVlbF9jb25maWckMSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMSIsInQkMyIsInRhc2tfaWQiLCJub25lIiwiY3JlYXRlIiwiaXNfbm9uZSIsIngiLCJpc19zb21lIiwiZ2V0X3NvbWVfZXhuIiwiZ2V0IiwidCIsInVuc2FmZV9nZXQiLCJzZXRfc29tZSIsInYiLCJzZXRfbm9uZSIsInNldCIsInYkMCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ4XzAwMiIsImVtcHR5IiwiaXNfZW1wdHkiLCJlcXVhbCIsImR1bW15X2lkIiwiY2hpbGQiLCJ0IiwicG9vbCIsInNpYmxpbmciLCJwcmV2IiwiaWQiLCJzZXRfY2hpbGQiLCJ2Iiwic2V0X3NpYmxpbmciLCJzZXRfcHJldiIsInZhbHVlX2V4biIsImFsbG9jYXRlIiwidmFsdWUiLCJmcmVlIiwiZGlzY29ubmVjdF9zaWJsaW5nIiwic2libGluZyQwIiwiZGlzY29ubmVjdF9jaGlsZCIsImNoaWxkJDAiLCJkZXRhY2giLCJwcmV2JDAiLCJyZWxhdGlvbl90b19wcmV2IiwiY3JlYXRlIiwiY2FwYWNpdHkiLCJpbnZhcmlhbnQiLCJ0b192aXNpdCQyIiwidG9fdmlzaXQiLCJ0b192aXNpdCQwIiwibWF5YmVfcGFyZW50X3ZhbHVlIiwiZXhwZWN0ZWRfcHJldiIsIm5vZGUiLCJ0aGlzX3ZhbHVlIiwidGhpc192YWx1ZSQwIiwicGFyZW50X3ZhbHVlIiwidG9fdmlzaXQkMSIsImNyZWF0ZSQwIiwiY21wIiwibWluX3NpemUiLCJjb3B5IiwicG9vbCQwIiwic3RhcnQiLCJudW1fb2ZfYWxsb2NhdGVkX25vZGVzIiwiY29weV9ub2RlIiwibmV3X25vZGUiLCJuZXdfc3RhcnQiLCJyZXN0Iiwibm9kZV90b19jb3B5Iiwic2xvdCIsIm5vZGVfdG9fdXBkYXRlIiwibWVyZ2UiLCJyb290MSIsInJvb3QyIiwiYWRkX2NoaWxkIiwibmV3X2NoaWxkIiwiY3VycmVudF9jaGlsZCIsInYxIiwidjIiLCJ0b3BfZXhuIiwidG9wIiwiYWRkX25vZGUiLCJ0JDEiLCJ0JDAiLCJhZGQiLCJtYXhfc3RhY2tfZGVwdGgiLCJsb29wIiwiZGVwdGgiLCJoZWFkJDAiLCJuZXh0MSQwIiwibmV4dDIkMCIsImFjYyIsImhlYWQiLCJuZXh0MSIsIm5leHQyIiwiYWNjJDAiLCJoIiwieHMiLCJoZWFwIiwicmVtb3ZlX25vbl9lbXB0eSIsIm1lcmdlZF9jaGlsZHJlbiIsIm5ld19yb290IiwicmVtb3ZlX3RvcCIsImNsZWFyIiwibm9kZSQwIiwicG9wX2V4biIsInIiLCJwb3AiLCJwb3BfaWYiLCJmIiwiZm9sZCIsImluaXQiLCJpdGVyIiwibGVuZ3RoIiwiaXRlciQwIiwibGVuZ3RoJDAiLCJpc19lbXB0eSQwIiwibWVtIiwiZXhpc3RzIiwiZm9yX2FsbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fbGlzdCIsInRvX2FycmF5IiwibWluX2VsdCIsIm1heF9lbHQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJvZl9hcnJheSIsImFyciIsIm9mX2xpc3QiLCJsIiwic2V4cF9vZl90IiwiaXNfbm9kZV92YWxpZCIsInZhbHVlX2V4biQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJ4XzAwMSIsInJlbW92ZSIsInRva2VuIiwiYWRkX3JlbW92YWJsZSIsInVwZGF0ZSIsImZpbmRfZWx0Iiwibm9kZXMkMiIsIm5vZGVzIiwibm9kZXMkMCIsIm5vZGVzJDEiLCJ1cGRhdGUkMCIsImVsdCIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsImJ1ZiIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl90IiwiYmluX2EiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiZXF1YWwiLCJhXzAwMyIsImJfMDA0IiwidF9vZl9zZXhwIiwib2ZfYV8wMDUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJwb3MiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA4IiwiYl8wMDkiLCJlcXVhbCQwIiwiYV8wMTIiLCJiXzAxMyIsImFtX3J1bm5pbmdfdGVzdCIsIm5vbmUiLCJzb21lIiwieCIsInVuc2FmZV92YWx1ZSIsImlzX25vbmUiLCJ0IiwiaXNfc29tZSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwidmFsdWVfZXhuIiwidG9fb3B0aW9uIiwib2Zfb3B0aW9uIiwiYSIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwibmV4dF8wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImNyZWF0ZSIsInVudXNlZF9lbHRzIiwiciIsInNldF91bnVzZWRfZWx0cyIsInYiLCJiYWNrIiwic2V0X2JhY2siLCJmcm9udCIsInNldF9mcm9udCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJ1bnVzZWRfZWx0cyQwIiwiYmFjayQwIiwiZnJvbnQkMCIsImxlbmd0aCQwIiwic2V4cF9vZl90JDAiLCJvZl9hXzAwNyIsImxlbmd0aF8wMDkiLCJmcm9udF8wMTEiLCJiYWNrXzAxMyIsInVudXNlZF9lbHRzXzAxNSIsImFyZ18wMTYiLCJibmRzXzAwOCIsImFyZ18wMTQiLCJibmRzXzAwOCQwIiwiYXJnXzAxMiIsImJuZHNfMDA4JDEiLCJhcmdfMDEwIiwiYm5kc18wMDgkMiIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidCIsInhfMDE3IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsImNyZWF0ZSQwIiwiZW5xdWV1ZSIsImEiLCJuZXdfYmFjayIsImRlcXVldWVfZXhuIiwieF8wMTgiLCJjbGVhcl9pbnRlcm5hbF9wb29sIiwiYWZ0ZXIiLCJ0Iiwic3BhbiIsInJlc3VsdCIsImxvZyIsImFyZzJfMDAzIiwiYXJnM18wMDQiLCJzZXhwX29mX2EiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInJlczJfMDA3IiwicmVzM18wMDgiLCJsb2dfc3RyaW5nIiwibWVzc2FnZSIsImNvbmNhdCIsImVwcmludCIsImVwcmludF9zIiwiZXByaW50cyIsInByaW50X3MiLCJzZXhwIiwic2VjIiwiYWxsIiwic2V4cF9vZl90IiwidG9fcmVwciIsIm9mX3JlcHIiLCJuYW1lcyIsImRlYnVnIiwiZm9yd2FyZGluZyIsInIiLCJzZXRfZm9yd2FyZGluZyIsInYiLCJoYXNfc2Vlbl9lcnJvciIsInNldF9oYXNfc2Vlbl9lcnJvciIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzIiwic2V0X3RhaWxzX2Zvcl9hbGxfZXJyb3JzIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJuZXh0X2Vycm9yIiwic2V0X25leHRfZXJyb3IiLCJpZCIsImhlcmUiLCJuYW1lIiwiZm9yd2FyZGluZyQwIiwiaGFzX3NlZW5fZXJyb3IkMCIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzJDAiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyQwIiwibmV4dF9lcnJvciQwIiwiaWQkMCIsImhlcmUkMCIsIm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsIm5hbWVfZnVuIiwiaGVyZV9mdW4iLCJpZF9mdW4iLCJuZXh0X2Vycm9yX2Z1biIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsImhhc19zZWVuX2Vycm9yX2Z1biIsImZvcndhcmRpbmdfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwibmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwiaGVyZV9nZW4iLCJjb21waWxlX2FjYyQyIiwiaWRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsIm5leHRfZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJ0YWlsc19mb3JfYWxsX2Vycm9yc19nZW4iLCJjb21waWxlX2FjYyQ2IiwiaGFzX3NlZW5fZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNyIsImZvcndhcmRpbmdfZ2VuIiwiYWNjIiwiY3JlYXRlIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9ucyIsInQkMSIsImFjIiwiYWMkMCIsInQkMCIsInhfMDAxIiwibmV4dF9pZCIsImNyZWF0ZV93aXRoX3BhcmVudCIsImluZm8iLCJwYXJlbnQiLCJpIiwicyIsInMkMCIsInhfMDAyIiwicGFyZW50JDAiLCJtYWluIiwiYmFja3RyYWNlX2hpc3RvcnkiLCJsb2NhbF9zdG9yYWdlIiwicHJpb3JpdHkiLCJtb25pdG9yIiwiYmFja3RyYWNlX2hpc3RvcnkkMCIsImxvY2FsX3N0b3JhZ2UkMCIsInByaW9yaXR5JDAiLCJtb25pdG9yJDAiLCJtb25pdG9yX2Z1biIsInByaW9yaXR5X2Z1biIsImxvY2FsX3N0b3JhZ2VfZnVuIiwiYmFja3RyYWNlX2hpc3RvcnlfZnVuIiwibW9uaXRvcl9nZW4iLCJwcmlvcml0eV9nZW4iLCJsb2NhbF9zdG9yYWdlX2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5X2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5XzAwOCIsImxvY2FsX3N0b3JhZ2VfMDA2IiwicHJpb3JpdHlfMDA0IiwibW9uaXRvcl8wMDIiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJpbnZhcmlhbnQiLCJjcmVhdGVfbGlrZSIsImZpbmRfbG9jYWwiLCJrZXkiLCJ3aXRoX2xvY2FsIiwiZGF0YSIsInJlY29yZF9iYWNrdHJhY2UiLCJkdW1teV9lIiwiZHVtbXlfZiIsImR1bW15X2EiLCJzZXhwX29mX3Nsb3RzIiwib2ZfZXZlbnQiLCJldmVudCIsIm9mX2pvYiIsImpvYiIsImlzX2V2ZW50IiwiaXNfam9iIiwia2luZCIsInByb2plY3QiLCJqb2Jfb3JfZXZlbnQiLCJldmVudHMiLCJzZXRfZXhlY3V0aW9uX2NvbnRleHQiLCJleGVjdXRpb25fY29udGV4dCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJmcm9udCIsInNldF9mcm9udCIsIm1hc2siLCJzZXRfbWFzayIsImpvYnMiLCJzZXRfam9icyIsImpvYnNfbGVmdF90aGlzX2N5Y2xlIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIiwibnVtX2pvYnNfcnVuIiwic2V0X251bV9qb2JzX3J1biIsImxlbmd0aCQwIiwiZnJvbnQkMCIsIm1hc2skMCIsImpvYnMkMCIsImpvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJudW1fam9ic19ydW4kMCIsIm51bV9qb2JzX3J1bl8wMDIiLCJqb2JzX2xlZnRfdGhpc19jeWNsZV8wMDQiLCJqb2JzXzAwNiIsIm1hc2tfMDA4IiwiZnJvbnRfMDEwIiwibGVuZ3RoXzAxMiIsImJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXzAxNCIsImFyZ18wMTUiLCJhcmdfMDEzIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJibmRzXzAwMSQ0IiwiYm5kc18wMDEkNSIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUiLCJjbGVhciIsInNldCIsImEiLCJvZmZzZXQkMCIsImVucXVldWUiLCJvbGRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJvbGRfam9icyIsIm9sZF9mcm9udCIsImxlbjEiLCJsZW4yIiwibmV3X2pvYnMiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm4iLCJjYW5fcnVuX2Ffam9iIiwicnVuX2pvYiIsInNjaGVkdWxlciIsInJ1bl9leHRlcm5hbF9qb2JzIiwiZXh0ZXJuYWxfam9icyIsInJ1bl9qb2JzIiwidGhpc19qb2IiLCJleG4kMCIsImV4biIsImJhY2t0cmFjZSIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwibmFtZXMkMCIsImlzX251bGwiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic2V4cF9vZl90JDEiLCJ0cmFuc2l0aW9uX2lzX2FsbG93ZWQiLCJmcm9tIiwidG8iLCJzZXhwX29mX2V2ZW50IiwiYXQiLCJpbnRlcnZhbCIsInN0YXR1cyIsIm1hdGNoIiwibm9uZSIsInNvbWUiLCJpc19ub25lIiwiaXNfc29tZSIsImZpcnN0X3NvbWUiLCJ0MSIsInQyIiwidW5zYWZlX3ZhbHVlIiwic2V4cF9vZl90JDIiLCJwcHhfb3B0aW9uYWxfZV8wIiwidmFsdWUkMCIsImRlZmF1bHQkMCIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInNldF9zdGF0dXMiLCJwcmV2X2ZpcmVkIiwic2V0X3ByZXZfZmlyZWQiLCJuZXh0X2ZpcmVkIiwic2V0X25leHRfZmlyZWQiLCJzZXRfaW50ZXJ2YWwiLCJjYWxsYmFjayIsImF0JDAiLCJzZXRfYXQiLCJhbGFybSIsInNldF9hbGFybSIsInN0YXR1cyQwIiwicHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQwIiwiaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsYmFjayQwIiwiYXQkMSIsImFsYXJtJDAiLCJhbGFybV9mdW4iLCJhdF9mdW4iLCJjYWxsYmFja19mdW4iLCJleGVjdXRpb25fY29udGV4dF9mdW4iLCJpbnRlcnZhbF9mdW4iLCJuZXh0X2ZpcmVkX2Z1biIsInByZXZfZmlyZWRfZnVuIiwic3RhdHVzX2Z1biIsImFsYXJtX2dlbiIsImF0X2dlbiIsImNhbGxiYWNrX2dlbiIsImV4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImludGVydmFsX2dlbiIsIm5leHRfZmlyZWRfZ2VuIiwicHJldl9maXJlZF9nZW4iLCJzdGF0dXNfZ2VuIiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiZXhwZWN0IiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJ4XzAxNiIsInBweF9vcHRpb25hbF9lXzAkMCIsImFfMDE3IiwiYl8wMTgiLCJnb3QkMCIsInNleHBpZmllciQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsImludmFyaWFudCQwIiwic2V4cF9vZl90JDUiLCJ4XzAyMSIsImludmFyaWFudCQxIiwiaW52YXJpYW50X3dpdGhfam9icyQwIiwic2V4cF9vZl90JDYiLCJ4XzAyMiIsImlkJDEiLCJpc193YWxsX2Nsb2NrJDEiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwicmVhZF9vbmx5IiwiZmlyZSIsImNvbnRpbnVlJDAiLCJuZXh0JDAiLCJjb250aW51ZSQxIiwicHB4X29wdGlvbmFsX2VfMCQxIiwibmV4dCIsInBweF9vcHRpb25hbF9lXzAkMiIsInByZXYiLCJhbGFybV9wcmVjaXNpb24iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0IiwibmV4dF9hbGFybV9ydW5zX2F0Iiwibm93JDAiLCJ0aW1pbmdfd2hlZWxfbm93JDAiLCJzY2hlZHVsZSIsInJlbW92ZV9mcm9tX2ZpcmVkIiwibmV3X3N0YXR1cyIsInNleHBfb2ZfZXZlbnQkMCIsInN0YXR1cyQxIiwicHJldl9maXJlZCQxIiwic2V0X3ByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMSIsInNldF9uZXh0X2ZpcmVkJDAiLCJpbnRlcnZhbCQxIiwic2V0X2ludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQxIiwiY2FsbGJhY2skMSIsInNldF9hdCQwIiwiYWxhcm0kMSIsInNldF9hbGFybSQwIiwic2V4cF9vZl90JDciLCJpbnZhcmlhbnQkMiIsInNldF9zdGF0dXMkMSIsInNldF9zdGF0dXNfaWYkMCIsInNjaGVkdWxlZF9hdCIsImNyZWF0ZV9pbnRlcm5hbCIsImFkZCQwIiwiY3JlYXRlX2FuZF9hZGQiLCJhdCQyIiwiYWZ0ZXIkMCIsInJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wciIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXRfaW50ZXJ2YWxzIiwic2V4cF9vZl90JDgiLCJhYm9ydCIsImFib3J0X2lmX3Bvc3NpYmxlIiwiYWJvcnRfZXhuIiwicmVhc29uIiwiY3JlYXRlJDEiLCJpc19zY2hlZHVsZWQiLCJzY2hlZHVsZV9hdF9pbnRlcm5hbCIsInNjaGVkdWxlX2F0Iiwic2NoZWR1bGVfYWZ0ZXIiLCJzY2hlZHVsZV9hdF9pbnRlcnZhbHMiLCJyZXNjaGVkdWxlX2F0IiwicmVzY2hlZHVsZV9hZnRlciIsInJ1bl9hZnRlciIsInJ1bl9hdCIsInJ1bl9hdF9pbnRlcnZhbHMiLCJydW5fZmlyZWRfZXZlbnRzIiwic2VuZF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0Iiwic2VuZF9leG4kMCIsImFueV9maXJlZF9ldmVudHNfdG9fcnVuIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X2FsYXJtc19ieSIsImJ5IiwiYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfIiwiYWR2YW5jZV9kaXJlY3RseSIsImFkdmFuY2VfZGlyZWN0bHlfYnkiLCJkdXJhdGlvbl9vZiIsInN0YXJ0IiwiZHVyYXRpb24iLCJtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3ciLCJoYXNfZXZlbnRzX3RvX3J1biIsImNyZWF0ZV93aXRoX2NlbGwiLCJjZWxsIiwiY3JlYXRlX2Z1bGwiLCJleGVjIiwiZXhlYyQwIiwiZXhlY19mdW4iLCJleGVjX2dlbiIsInNleHBfb2ZfdCQwIiwiZXhlY3V0aW9uX2NvbnRleHRfMDAyIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJzZXRfcmVjb3JkX2JhY2t0cmFjZXMiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV8iLCJjaGVja19pbnZhcmlhbnRzIiwic2V0X2NoZWNrX2ludmFyaWFudHMiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInNldF95aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInlpZWxkJDAiLCJzZXRfeWllbGQiLCJldmVudF9hZGRlZF9ob29rIiwic2V0X2V2ZW50X2FkZGVkX2hvb2siLCJqb2JfcXVldWVkX2hvb2siLCJzZXRfam9iX3F1ZXVlZF9ob29rIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2siLCJzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2giLCJ0aW1lX3NvdXJjZSIsInNldF90aW1lX3NvdXJjZSIsInRvdGFsX2N5Y2xlX3RpbWUiLCJzZXRfdG90YWxfY3ljbGVfdGltZSIsImxhc3RfY3ljbGVfbnVtX2pvYnMiLCJzZXRfbGFzdF9jeWNsZV9udW1fam9icyIsImxhc3RfY3ljbGVfdGltZSIsInNldF9sYXN0X2N5Y2xlX3RpbWUiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInNldF9ydW5fZXZlcnlfY3ljbGVfZW5kIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Iiwic2V0X3J1bl9ldmVyeV9jeWNsZV9zdGFydCIsImluX2N5Y2xlIiwic2V0X2luX2N5Y2xlIiwiY3ljbGVfc3RhcnQiLCJzZXRfY3ljbGVfc3RhcnQiLCJjeWNsZV9jb3VudCIsInNldF9jeWNsZV9jb3VudCIsInVuY2F1Z2h0X2V4bl91bndyYXBwZWQiLCJzZXRfdW5jYXVnaHRfZXhuIiwic2V0X2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0Iiwic2V0X21haW5fZXhlY3V0aW9uX2NvbnRleHQiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIiwibG93X3ByaW9yaXR5X2pvYnMiLCJub3JtYWxfcHJpb3JpdHlfam9icyIsImpvYl9wb29sIiwic2V0X2pvYl9wb29sIiwiY2hlY2tfYWNjZXNzIiwic2V0X2NoZWNrX2FjY2VzcyIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsImNoZWNrX2ludmFyaWFudHMkMCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluJDAiLCJ5aWVsZCQxIiwiZXZlbnRfYWRkZWRfaG9vayQwIiwiam9iX3F1ZXVlZF9ob29rJDAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayQwIiwiZXh0ZXJuYWxfam9icyQwIiwidGltZV9zb3VyY2UkMCIsInRvdGFsX2N5Y2xlX3RpbWUkMCIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMCIsImxhc3RfY3ljbGVfdGltZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlJDAiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnQkMCIsImluX2N5Y2xlJDAiLCJjeWNsZV9zdGFydCQwIiwiY3ljbGVfY291bnQkMCIsInVuY2F1Z2h0X2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMCIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHQkMCIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMkMCIsImxvd19wcmlvcml0eV9qb2JzJDAiLCJub3JtYWxfcHJpb3JpdHlfam9icyQwIiwiam9iX3Bvb2wkMCIsImNoZWNrX2FjY2VzcyQwIiwiY2hlY2tfYWNjZXNzX2Z1biIsImpvYl9wb29sX2Z1biIsIm5vcm1hbF9wcmlvcml0eV9qb2JzX2Z1biIsImxvd19wcmlvcml0eV9qb2JzX2Z1biIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfZnVuIiwibWFpbl9leGVjdXRpb25fY29udGV4dF9mdW4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0X2Z1biIsInVuY2F1Z2h0X2V4bl9mdW4iLCJjeWNsZV9jb3VudF9mdW4iLCJjeWNsZV9zdGFydF9mdW4iLCJpbl9jeWNsZV9mdW4iLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2Z1IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9mdW4iLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2Z1biIsImxhc3RfY3ljbGVfdGltZV9mdW4iLCJsYXN0X2N5Y2xlX251bV9qb2JzX2Z1biIsInRvdGFsX2N5Y2xlX3RpbWVfZnVuIiwidGltZV9zb3VyY2VfZnVuIiwiZXh0ZXJuYWxfam9ic19mdW4iLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18iLCJqb2JfcXVldWVkX2hvb2tfZnVuIiwiZXZlbnRfYWRkZWRfaG9va19mdW4iLCJ5aWVsZF9mdW4iLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl9mdW4iLCJjaGVja19pbnZhcmlhbnRzX2Z1biIsInJlY29yZF9iYWNrdHJhY2VzX2Z1biIsImNoZWNrX2FjY2Vzc19nZW4iLCJqb2JfcG9vbF9nZW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19nZW4iLCJsb3dfcHJpb3JpdHlfam9ic19nZW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2dlbiIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9nZW4iLCJ1bmNhdWdodF9leG5fZ2VuIiwiY3ljbGVfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImN5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEwIiwiaW5fY3ljbGVfZ2VuIiwiY29tcGlsZV9hY2MkMTEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGVfZ2UiLCJjb21waWxlX2FjYyQxMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2dlbiIsImNvbXBpbGVfYWNjJDE1IiwibGFzdF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE2IiwibGFzdF9jeWNsZV9udW1fam9ic19nZW4iLCJjb21waWxlX2FjYyQxNyIsInRvdGFsX2N5Y2xlX3RpbWVfZ2VuIiwiY29tcGlsZV9hY2MkMTgiLCJ0aW1lX3NvdXJjZV9nZW4iLCJjb21waWxlX2FjYyQxOSIsImV4dGVybmFsX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMjAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18kMCIsImNvbXBpbGVfYWNjJDIxIiwiam9iX3F1ZXVlZF9ob29rX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwiZXZlbnRfYWRkZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMyIsInlpZWxkX2dlbiIsImNvbXBpbGVfYWNjJDI0IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZ2VuIiwiY29tcGlsZV9hY2MkMjUiLCJjaGVja19pbnZhcmlhbnRzX2dlbiIsImNvbXBpbGVfYWNjJDI2IiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJjb21waWxlX2FjYyQyNyIsInJlY29yZF9iYWNrdHJhY2VzX2dlbiIsImNyZWF0ZSQyIiwiY2hlY2tfYWNjZXNzXzAwNyIsImpvYl9wb29sXzAwOSIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfMDE1IiwibG93X3ByaW9yaXR5X2pvYnNfMDEzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfMDExIiwibWFpbl9leGVjdXRpb25fY29udGV4dF8wMTciLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XzAxOSIsInVuY2F1Z2h0X2V4bl8wMjEiLCJjeWNsZV9jb3VudF8wMjciLCJjeWNsZV9zdGFydF8wMjkiLCJpbl9jeWNsZV8wMzEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfMDMzIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXzAzIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF8wMzciLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlXzAzOSIsImxhc3RfY3ljbGVfdGltZV8wNDEiLCJsYXN0X2N5Y2xlX251bV9qb2JzXzA0MyIsInRvdGFsX2N5Y2xlX3RpbWVfMDQ1IiwidGltZV9zb3VyY2VfMDQ3IiwiZXh0ZXJuYWxfam9ic18wNDkiLCJqb2JfcXVldWVkX2hvb2tfMDUzIiwiZXZlbnRfYWRkZWRfaG9va18wNTUiLCJ5aWVsZF8wNTciLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl8wNTkiLCJjaGVja19pbnZhcmlhbnRzXzA2MSIsInJlY29yZF9iYWNrdHJhY2VzXzA2NSIsImFyZ18wNjYiLCJibmRzXzAwNiIsImFyZ18wNjQiLCJibmRzXzAwNiQwIiwiYXJnXzA2MiIsImJuZHNfMDA2JDEiLCJhcmdfMDYwIiwiYm5kc18wMDYkMiIsImFyZ18wNTgiLCJibmRzXzAwNiQzIiwiYXJnXzA1NiIsImJuZHNfMDA2JDQiLCJhcmdfMDU0IiwiYm5kc18wMDYkNSIsImFyZ18wNTIiLCJibmRzXzAwNiQ2IiwiYXJnXzA1MCIsImJuZHNfMDA2JDciLCJhcmdfMDQ4IiwiYm5kc18wMDYkOCIsImFyZ18wNDYiLCJibmRzXzAwNiQ5IiwiYXJnXzA0NCIsImJuZHNfMDA2JDEwIiwiYXJnXzA0MiIsImJuZHNfMDA2JDExIiwiYXJnXzA0MCIsImJuZHNfMDA2JDEyIiwiYXJnXzAzOCIsImJuZHNfMDA2JDEzIiwiYXJnXzAzNiIsImJuZHNfMDA2JDE0IiwiYXJnXzAzNCIsImJuZHNfMDA2JDE1IiwiYXJnXzAzMiIsImJuZHNfMDA2JDE2IiwiYXJnXzAzMCIsImJuZHNfMDA2JDE3IiwiYXJnXzAyOCIsImJuZHNfMDA2JDE4IiwiYXJnXzAyMiIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYm5kc18wMDYkMTkiLCJhcmdfMDIwIiwiYm5kc18wMDYkMjAiLCJhcmdfMDE4IiwiYm5kc18wMDYkMjEiLCJhcmdfMDE2IiwiYm5kc18wMDYkMjIiLCJhcmdfMDE0IiwiYm5kc18wMDYkMjMiLCJhcmdfMDEyIiwiYm5kc18wMDYkMjQiLCJhcmdfMDEwIiwiYm5kc18wMDYkMjUiLCJhcmdfMDA4IiwiYm5kc18wMDYkMjYiLCJ1bmNhdWdodF9leG4kMCIsImFyZzFfMDY4IiwiYXJnMF8wNjciLCJyZXMwXzA2OSIsInJlczFfMDcwIiwibnVtX3BlbmRpbmdfam9icyIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMSIsInVub3JkZXJlZF9pc19zdWJsaXN0IiwiZXF1YWwiLCJzbWFsbCIsImxhcmdlIiwibGFyZ2UkMCIsIngiLCJsJDAiLCJ5IiwibCIsImNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IiwidGFibGUiLCJhcnJheSIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJiYWNrdHJhY2Vfb2ZfZmlyc3Rfam9iIiwidF9yZWYiLCJjaGVja19hY2Nlc3MkMSIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMSIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQxIiwidG1wX2NvbnRleHQiLCJvbGRfY29udGV4dCIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQiLCJjcmVhdGVfam9iIiwiZ290X3VuY2F1Z2h0X2V4biIsImFyZzFfMDcyIiwiYXJnMF8wNzEiLCJyZXMwXzA3MyIsInJlczFfMDc0Iiwic3RhcnRfY3ljbGUiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IiwiZSIsImUkMCIsInN0YWJpbGl6ZSIsImNyZWF0ZV90aW1lX3NvdXJjZSIsInRpbWluZ193aGVlbF9jb25maWciLCJ3YWxsX2Nsb2NrIiwic2V0X3ByZXYiLCJwYXJhbSIsInNldF9uZXh0IiwicnVuIiwiY3JlYXRlMiIsInJ1bjEiLCJleGVjdXRpb25fY29udGV4dDEiLCJydW4yIiwiZXhlY3V0aW9uX2NvbnRleHQyIiwic2NoZWR1bGVfam9icyIsImFkZCIsIm9mX2xpc3QiLCJmaXJzdCIsImwkMSIsImwkMiIsInJ1biQwIiwicHJldiQwIiwiYWNjJDAiLCJjZWxsX29mX2hhbmRsZXIiLCJpbmRpciIsInNxdWFzaCIsInQkMyIsInQkNCIsImluZGlyJDEiLCJ0JDUiLCJpbmRpciQwIiwidCQyIiwiYV9pbnZhcmlhbnQiLCJoYW5kbGVyIiwicGVlayIsInZhbHVlIiwiaWZfZW1wdHlfdGhlbl9mYWlsd2l0aCIsImlzX2VtcHR5IiwiaXNfZnVsbCIsImZpbGwiLCJyZW1vdmVfaGFuZGxlciIsIngkMCIsImFkZF9oYW5kbGVyIiwiaGFuZGxlciQxIiwiaGFuZGxlciQyIiwicnVuJDEiLCJoYW5kbGVyJDAiLCJoYXNfaGFuZGxlcnMiLCJ1cG9uIiwidXBvbiQwIiwiY29ubmVjdCIsImJpbmRfcmVzdWx0IiwiYmluZF9yaHMiLCJiaW5kX3Jlc3VsdCQwIiwiaXZhciIsImJpbmRfcmhzX2NvbnRlbnRzIiwiaXZhciQwIiwibGFzdDEiLCJsYXN0MiIsImhhbmRsZXIxIiwiZXhlY3V0aW9uX2NvbnRleHQyJDAiLCJydW4yJDAiLCJoYW5kbGVyMSQwIiwidiQwIiwib2ZfaXZhciIsImludmFyaWFudF9hIiwicmV0dXJuJDAiLCJpc19kZXRlcm1pbmVkIiwiYmluZCIsImgiLCJyZWFkIiwiZmlsbF9pZl9lbXB0eSIsInRvX2JpbmFibGUiLCJvZl9iaW5hYmxlIiwic2V4cF9vZl9ob3ciLCJ2XzAwMSIsIm5ldmVyIiwicmV0dXJuJDEiLCJyZXR1cm4kMiIsInJldHVybiQzIiwidW5pdCIsImJvdGgkMCIsImExIiwiYTIiLCJkb25fdF93YWl0X2ZvciIsImYyIiwiZjEiLCJwcm9jZXNzIiwicmVzdCIsImNob2ljZSIsImVuYWJsZWQiLCJjaG9pY2VzIiwidW5yZWdpc3RlcnMiLCJyZWFkeSIsImNob29zZV9yZXN1bHQiLCJjaG9pY2VzJDAiLCJjaG9pY2VzJDEiLCJnZW5lcmljX2Nob29zZSIsInVucmVnaXN0ZXJzJDAiLCJjaG9vc2UyIiwiZmEiLCJiIiwiZmIiLCJhX2hhbmRsZXIiLCJiX2hhbmRsZXIiLCJhdiIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsInhzIiwic2VxbWFwIiwiYnMiLCJkcyIsImFsbF91bml0IiwiZCIsIm9rIiwib2ZfYV8wMDUiLCJ4XzAwNiIsImFyZzBfMDAyIiwicmVzMF8wMDMiLCJ4XzAwNyIsImNvbGxlY3QiLCJpc19jbG9zZWQiLCJmaWxsX2V4biIsImNsb3NlX2V4biIsImNsb3NlX2lmX29wZW4iLCJleHRlbmQiLCJkZWZlcnJlZDAiLCJkZWZlcnJlZDEiLCJpbXBvcnQwIiwiZXJyb3IiLCJkZXRhY2giLCJkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIiwiaGFuZGxlcl9zdGF0ZV9yZWYiLCJydW5fZiIsImJhZ19lbHQiLCJpbm5lcl9leG4kMCIsImlubmVyX2V4biIsImRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSIsInRhaWwiLCJnZXRfbmV4dF9lcnJvciIsImRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IiLCJleHRyYWN0X2V4biIsImNvbHVtbiIsIm1vbml0b3IkMSIsIm5hbWUkMSIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlJDEiLCJyZXN0JDAiLCJyZXN0JDEiLCJ0MyIsInJlc3QkMiIsInJlc3QkMyIsInRyYWNlcyIsInJlc3QkNCIsInQxJDAiLCJyZXN0JDUiLCJ0MiQwIiwicmVzdCQ2IiwidDIkMSIsImJhY2t0cmFjZSQyIiwibGlzdF9pZl9ub3RfZW1wdHkiLCJtYXRjaCQyIiwibWF0Y2gkMyIsImV4dHJhY3RfZXhuJDAiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJ3aXRoaW5fY29udGV4dCIsImNvbnRleHQiLCJ3aXRoaW5fZ2VuIiwid2l0aGluIiwid2l0aGluX3YiLCJ3aXRoaW4kMCIsInNjaGVkdWxlX3dpdGhfZGF0YSIsIndvcmsiLCJ1cG9uX3dvcmtfZmlsbF9pIiwic2NoZWR1bGUkMCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IiwicHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQkMCIsImNhbGxfYW5kX2ZpbGwiLCJzdHJlYW1faXRlciIsInN0cmVhbSIsImV4bnMiLCJmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm8iLCJyZXN1bHRfZmlsbGVyIiwiaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IiwidHJ5X3dpdGhfbG9nX2V4biIsInRyeV93aXRoIiwiZG9fZXh0cmFjdF9leG4iLCJoYW5kbGVfZXhuIiwicmVzIiwidHJ5X3dpdGhfb3JfZXJyb3IiLCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsImZyIiwiciQwIiwiZmluYWxseV9leG4iLCJoYW5kbGVfZXJyb3JzIiwiY2F0Y2hfc3RyZWFtIiwiY2F0Y2gkMCIsImNhdGNoX2Vycm9yIiwiZGVwdGgiLCJuJDAiLCJmaXJzdF9leG4iLCJsb29wJDAiLCJsb29wX25leHQiLCJsb29wX25leHQkMCIsImNsb3NlZCIsInVuZm9sZCIsImNvcHlfdG9fdGFpbCIsImFwcGVuZCIsImZpbHRlcl9kZXByZWNhdGVkIiwiZmlsdGVyX21hcF9kZXByZWNhdGVkIiwiZmlyc3RfbiIsImF2YWlsYWJsZV9ub3ciLCJzcGxpdCIsInN0b3AiLCJyZWFzb25fZm9yX3N0b3BwaW5nIiwicHJlZml4IiwiZmluaXNoIiwibyIsImZpbmQiLCJmb3VuZCIsInVuZ3JvdXAiLCJpbnRlcmxlYXZlIiwibnVtX29wZW4iLCJjbG9zZSIsIm91dGVyX2Nsb3NlZCIsInRha2VfdW50aWwiLCJ6IiwiaXRlcl9kdXJhYmx5IiwiaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQiLCJpdGVyX2R1cmFibHkkMCIsIm9mX2Z1biIsInNldF9pdmFyIiwiaGFzX2FueV93YWl0ZXJzIiwic2V0X2hhc19hbnlfd2FpdGVycyIsImhhc19hbnlfd2FpdGVycyQwIiwicmVwciIsIm9mX2FfMDAxIiwiaGFzX2FueV93YWl0ZXJzXzAwMyIsIml2YXJfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJicm9hZGNhc3QiLCJ3YWl0IiwiaGFzX2FueV93YWl0ZXJzJDEiLCJ4XzAwMyIsImJpbmRfdW5pdCIsIndhaXRfZm9yIiwicnVuX3F1ZXVlZF9hbGFybXMiLCJ3YWxrX2FsYXJtcyIsIm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCIsImFkdmFuY2VfdG8iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0JDAiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsInNwYW5fdG9fdGltZSIsInJ1bl9hdF9pbnRlcm5hbCIsInRpbWUiLCJyZW1vdmVfYWxhcm0iLCJvZl9hXzAwNyIsIm9mX2hfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJzZXRfc2NoZWR1bGVkX2F0IiwibnVtX2ZpcmVzX3RvX3NraXAiLCJzZXRfbnVtX2ZpcmVzX3RvX3NraXAiLCJmaXJlZCIsInNjaGVkdWxlZF9hdCQwIiwibnVtX2ZpcmVzX3RvX3NraXAkMCIsImZpcmVkJDAiLCJvZl9hXzAxNSIsIm9mX2hfMDE2IiwiYWxhcm1fMDE4IiwiZmlyZWRfMDIyIiwibnVtX2ZpcmVzX3RvX3NraXBfMDI0Iiwic2NoZWR1bGVkX2F0XzAyNiIsInRpbWVfc291cmNlXzAyOCIsImFyZ18wMjkiLCJibmRzXzAxNyIsImFyZ18wMjciLCJibmRzXzAxNyQwIiwiYXJnXzAyNSIsImJuZHNfMDE3JDEiLCJhcmdfMDIzIiwiYm5kc18wMTckMiIsImFyZ18wMjEiLCJibmRzXzAxNyQzIiwiYXJnXzAxOSIsImJuZHNfMDE3JDQiLCJzZXhwX29mX3RfdW5pdCIsInhfMDMwIiwiZmlyZWQkMSIsImludmFyaWFudF9oIiwieF8wMzEiLCJzY2hlZHVsZWRfYXRfZnVuIiwiYV8wMzIiLCJiXzAzMyIsIm51bV9maXJlc190b19za2lwX2Z1biIsImZpcmVkX2Z1biIsIm9mX2FfMDM0Iiwib2ZfaF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJvZl9hXzA0NCIsIm9mX2hfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJ4XzA1MiIsImEkMCIsIm9mX2FfMDUzIiwib2ZfaF8wNTQiLCJhcmcwXzA1NSIsInJlczBfMDU2IiwiYXJnMF8wNTciLCJyZXMwXzA1OCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0IiwiaXNfaW5fdGltaW5nX3doZWVsIiwiYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlIiwicnVuX2F0JDAiLCJydW5fYWZ0ZXIkMCIsImF0X3RpbWVzIiwibmV4dF90aW1lIiwiYXRfdmFyeWluZ19pbnRlcnZhbHMiLCJjb21wdXRlX3NwYW4iLCJzdGFydCQwIiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsImFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IiwiaXNfcXVlc2NlbnQiLCJ3aGVlbCIsIm5leHRfYWxhcm0iLCJoYXNfdXBjb21pbmdfZXZlbnQiLCJuZXh0X3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudF9leG4iLCJldmVudF9wcmVjaXNpb24iLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayIsImhhbmRsZSIsImFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayIsInJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayIsImFyciIsImciLCJpZHgiLCJhcnIkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJlbnF1ZXVlJDAiLCJxdWV1ZSIsInJ1bm5pbmciLCJleGVjX2N0eCIsInNlbWFwaG9yZSIsImFwcGx5IiwidF9mIiwiZGYiLCJkdiIsIm1heF9jb25jdXJyZW50X2pvYnMiLCJ3YWl0ZXIiLCJhYm9ydGVkIiwicGFyZW50X21vbml0b3IiLCJlcnIiLCJvZl90aHVuayIsInRodW5rIiwic3ltYm9sJDEiLCJkMSIsImQyIiwib2ZfYV8wMDIiLCJyZXMwXzAwNCIsImxlbmd0aF8wMDYiLCJibmRzXzAwNSIsImxpc3QiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwiY2xlYW5lZCQwIiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCQwIiwiY2FwYWNpdHlfYXZhaWxhYmxlJDAiLCJudW1fam9ic19ydW5uaW5nJDAiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnQkMCIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSQwIiwibWF4X2NvbmN1cnJlbnRfam9icyQwIiwib2ZfYV8wMTEiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnRfMDE5Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXzAxNyIsIm1heF9jb25jdXJyZW50X2pvYnNfMDE1IiwiY29udGludWVfb25fZXJyb3JfMDEzIiwibnVtX2pvYnNfcnVubmluZ18wMjEiLCJjYXBhY2l0eV9hdmFpbGFibGVfMDIzIiwiaXNfZGVhZF8wMjUiLCJjbGVhbnNfMDI3IiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF8wMjkiLCJjbGVhbmVkXzAzMSIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJhcmdfMDI2IiwiYm5kc18wMTIkMiIsImFyZ18wMjQiLCJibmRzXzAxMiQzIiwiYm5kc18wMTIkNCIsIm91dGNvbWVfMDA5Iiwic3RhcnRfMDA2Iiwidl8wMDgiLCJibmRzXzAwNSQwIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2Zfa2luZF8wMzUiLCJ4XzAzNiIsIm51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQiLCJjbGVhbl9yZXNvdXJjZSIsImtpbGwiLCJhdF9raWxsIiwiY2xlYW5lZCQxIiwic3RhcnRfam9iIiwiam9iX3Jlc291cmNlIiwiam9iX3Jlc291cmNlcyIsImNyZWF0ZV93aXRoIiwib3V0Y29tZSIsImludGVybmFsX2pvYiIsImhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCIsImVucXVldWVfZXhjbHVzaXZlIiwiZG9uZSIsImZfcGxhY2Vob2xkZXIiLCJzbG90IiwibW9uYWRfc2VxdWVuY2VfaG93IiwiaG93IiwibW9uYWRfc2VxdWVuY2VfaG93MiIsInByaW9yX2pvYnNfZG9uZSIsImFsbF9kdW1teV9qb2JzX3J1bm5pbmciLCJkdW1teV9qb2JzX3J1bm5pbmciLCJjYXBhY2l0eV9hdmFpbGFibGUkMSIsInRocmVhZF9zYWZlX2VucXVldWVfam9iIiwiY3ljbGVfc3RhcnRfbnMiLCJjeWNsZV90aW1lc19ucyIsImN5Y2xlX3RpbWVzIiwiZXZlbnRfcHJlY2lzaW9uX25zIiwiYm9vbCIsImFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rJDAiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2skMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyQwIiwicmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSQwIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsInJpZ2h0XzAwNCIsImxlZnRfMDAzIiwidl8wMDYiLCJmb2xkaSIsInNlcW1hcGkiLCJpdGVyaSIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJmaWx0ZXJfbWFwaSIsImNvbmNhdF9tYXBpIiwiZmluZF9tYXBpIiwiYXV4IiwiZmluZGkiLCJlbHQiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwiam9iX2NvdW50IiwiZ2VuX2NvbXB1dGF0aW9uIiwieXMiLCJ0bCIsImhkIiwiY2hhbmdlIiwib3B0IiwidXBkYXRlIiwiaXRlcl9rZXlzIiwiYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIiLCJhbGlzdCIsImZvbGRfcmlnaHQiLCJhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciIsImNvbXB1dGF0aW9uIiwiam9iX21hcCIsInNlcXVlbmNlIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInJlcmFpc2UiLCJnZW5lcmFsIiwiaGFzaGFibGUiLCJnZW5lcmFsJDAiLCJyZWN1cnNpdmUiLCJmX29uZXN0ZXAiLCJtZW1vaXplZCIsImNvbWJpbmUiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImUxIiwiZTIiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwib2tfZXhuIiwib2ZfZXhuIiwib2ZfZXhuX3Jlc3VsdCIsIm1zZyIsInNleHBfb2YiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2Vycm9ycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIiwiZmluZF9tYXBfb2siLCJjdXJyZW50X2Vycm9yIiwiZXJyb3JzJDAiLCJva191bml0IiwidHJ5X3dpdGgkMCIsInRyeV93aXRoX2pvaW4iLCJzdGF0ZSQwIiwiZm9sZF9tYXBpIiwibWFwaV9mIiwiZm9sZF9mIiwidGhyb3R0bGUiLCJjIiwiYyQxIiwiYyQwIiwiaSQwIiwiYWNjdW0iLCJtYXliZV92Iiwic2hvd19kZWJ1Z19tZXNzYWdlcyIsImNoZWNrX2ludmFyaWFudCIsInhfMDA0IiwidmFsdWVzX3JlYWQiLCJzZXRfdmFsdWVzX3JlYWQiLCJ2YWx1ZXNfcmVhZCQwIiwicGlwZV9pZF8wMDkiLCJ2YWx1ZXNfcmVhZF8wMTEiLCJibmRzXzAwOCIsInZfMDEzIiwiYm5kc18wMDgkMCIsImJuZHNfMDA4JDEiLCJ2YWx1ZXNfc2VudF9kb3duc3RyZWFtIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1Iiwid2hlbl9zZW50X2Rvd25zdHJlYW0iLCJjb25zdW1lciIsIndhbnRzIiwiY29uc3VtZXIkMCIsIndhbnRzJDAiLCJvZl9hXzAyOSIsImNvbnN1bWVyXzAzMyIsIndhbnRzXzAzMSIsImJuZHNfMDMwIiwiYXJnMF8wMTgiLCJyZXMwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJ2XzAyMCIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwidl8wMjMiLCJibmRzXzAzMCQwIiwiZmlsbF93aXRoX2VvZiIsImkkMSIsImZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQiLCJyZWFkeV8wMzkiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXzAzNyIsImJuZHNfMDM2IiwiYm5kc18wMzYkMCIsImNvbnN1bWVycyIsInNldF9jb25zdW1lcnMiLCJibG9ja2VkX3JlYWRzIiwiYmxvY2tlZF9mbHVzaGVzIiwicHVzaGJhY2siLCJzZXRfcHVzaGJhY2siLCJyZXNlcnZlZF9zcGFjZSIsInNldF9yZXNlcnZlZF9zcGFjZSIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJyZXNlcnZlZF9zcGFjZSQwIiwic2l6ZV9idWRnZXQkMCIsInNleHBfb2ZfcGlwZSIsIm9mX2FfMDQxIiwib2ZfcGhhbnRvbV8wNDIiLCJpZF8wNDQiLCJpbmZvXzA0NiIsImJ1ZmZlcl8wNTAiLCJzaXplX2J1ZGdldF8wNTIiLCJyZXNlcnZlZF9zcGFjZV8wNTQiLCJwdXNoYmFja18wNTYiLCJudW1fdmFsdWVzX3JlYWRfMDU4IiwicmVhZF9jbG9zZWRfMDY2IiwiY2xvc2VkXzA2NCIsImJsb2NrZWRfcmVhZHNfMDYyIiwiYmxvY2tlZF9mbHVzaGVzXzA2MCIsImNvbnN1bWVyc18wNjgiLCJ1cHN0cmVhbV9mbHVzaGVkc18wNzAiLCJhcmdfMDcxIiwiYm5kc18wNDMiLCJhcmdfMDY5IiwiYm5kc18wNDMkMCIsImFyZ18wNjciLCJibmRzXzA0MyQxIiwiYXJnXzA2NSIsImJuZHNfMDQzJDIiLCJhcmdfMDYzIiwiYm5kc18wNDMkMyIsImFyZ18wNjEiLCJibmRzXzA0MyQ0IiwiYXJnXzA1OSIsImJuZHNfMDQzJDUiLCJhcmdfMDU3IiwiYm5kc18wNDMkNiIsImFyZ18wNTUiLCJibmRzXzA0MyQ3IiwiYXJnXzA1MyIsImJuZHNfMDQzJDgiLCJhcmdfMDUxIiwiYm5kc18wNDMkOSIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MyQxMCIsImFyZ18wNDUiLCJibmRzXzA0MyQxMSIsImVmZmVjdGl2ZV9zaXplX2J1ZGdldCIsImhhc2giLCJpc19yZWFkX2Nsb3NlZCIsInB1c2hiYWNrJDEiLCJ1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIiwiZGVsdGEiLCJ4XzA3NSIsInhfMDM1IiwiaSQyIiwic2V4cF9vZl9waGFudG9tIiwib2ZfYV8wNzYiLCJ4XzA3NyIsInNleHBfb2ZfcGhhbnRvbSQwIiwib2ZfYV8wNzgiLCJ4XzA3OSIsImlkX3JlZiIsImluaXRpYWxfYnVmZmVyIiwidmFsaWRhdGVfc2l6ZV9idWRnZXQiLCJ1cGRhdGVfcHVzaGJhY2siLCJ4XzA4MCIsImNsb3NlX3JlYWQiLCJ4XzA4MSIsImZsdXNoIiwiY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjIiwidyIsImNyZWF0ZV9yZWFkZXIiLCJjbG9zZV9vbl9leGNlcHRpb24iLCJjcmVhdGVfd3JpdGVyIiwidmFsdWVzX3dlcmVfcmVhZCIsImZsdXNoJDAiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInJlc2VydmVfc3BhY2UiLCJkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSIsInN0YXJ0X3dyaXRlIiwieF8wODMiLCJzaXplIiwieF8wODIiLCJmaW5pc2hfd3JpdGUiLCJibG9ja2VkX3JlYWQiLCJpdmFyJDEiLCJ0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIiwidHJhbnNmZXJfaW4iLCJ3cml0ZSIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2siLCJ3cml0ZSQwIiwid3JpdGVfd2hlbl9yZWFkeSIsIndyaXRlX2lmX29wZW4iLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4iLCJlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyIsInhfMDg1Iiwic3RhcnRfcmVhZCIsImxhYmVsIiwieF8wODYiLCJnZW5fcmVhZF9ub3ciLCJnZXRfbWF4X3F1ZXVlX2xlbmd0aCIsIm1heF9xdWV1ZV9sZW5ndGgkMCIsInJlYWRfbm93IiwicmVhZF9ub3ckMCIsInJlYWQkMCIsInJlYWRfZXhuIiwidmFsdWVzX2F2YWlsYWJsZSIsInJlYWRfY2hvaWNlIiwicmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4IiwicmVhZF9leGFjdGx5IiwibnVtX3ZhbHVlcyIsImFscmVhZHlfcmVhZCIsImRvd25zdHJlYW1fZmx1c2hlZCIsInVwc3RyZWFtX2ZsdXNoZWQiLCJhZGRfY29uc3VtZXIiLCJwaXBlX2lkIiwiY29uc3VtZXIkMSIsInVwc3RyZWFtIiwiZG93bnN0cmVhbSIsInVwc3RyZWFtX2ZsdXNoZWQkMCIsImFyZzBfMDg3IiwicmVzMF8wODgiLCJmb2xkX2dlbiIsImZsdXNoZWQiLCJmb2xkX3dpdGhvdXRfcHVzaGJhY2siLCJ3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciIsIml0ZXJfd2l0aG91dF9wdXNoYmFjayIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDAiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDEiLCJyZW1haW5pbmciLCJyZW1haW5pbmckMCIsImRyYWluIiwiZHJhaW5fYW5kX2NvdW50Iiwic3VtIiwicmVhZF9hbGwiLCJpbnB1dCIsInRvX3N0cmVhbV9kZXByZWNhdGVkIiwib2Zfc3RyZWFtX2RlcHJlY2F0ZWQiLCJ0cmFuc2ZlciIsIm5leHRfZGVmZXJyZWQiLCJjaGVja19jbG9zZWRfbG9vcF9uZXh0IiwidHJhbnNmZXJfZ2VuIiwib3V0cHV0IiwibGluayIsInVubGluayIsImlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvcyIsIm91dHB1dF9jbG9zZWQiLCJ0cmFuc2ZlciQwIiwidHJhbnNmZXJfaWQiLCJtYXBfZ2VuIiwiY29uY2F0X21hcF9saXN0IiwiZmlsdGVyX21hcCQwIiwiZm9sZGluZ19maWx0ZXJfbWFwIiwiZm9sZGluZ19maWx0ZXJfbWFwJDAiLCJmb2xkaW5nX21hcCIsImFjY3VtJDAiLCJvZl9xdWV1ZV9pbnRlcm5hbCIsIm9mX3F1ZXVlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJ3cml0ZXIiLCJyZWFkZXIiLCJvZl9zZXF1ZW5jZSIsInNlcXVlbmNlJDEiLCJzZXF1ZW5jZSQwIiwidG9fc2VxdWVuY2UiLCJpbnRlcmxlYXZlX3BpcGUiLCJpbnB1dHMiLCJvdXRwdXRfd3JpdGVyIiwibnVtX3BpcGVzX3JlbWFpbmluZyIsImRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyIsImhlYXAiLCJoYW5kbGVfcmVhZCIsImVvZl9vcl9vayIsInBvcF9oZWFwX2FuZF9sb29wIiwiaW5pdGlhbF9wdXNoIiwiY29uY2F0X3BpcGUiLCJmb3JrIiwicHVzaGJhY2tfdXNlcyIsIndyaXRlcjAiLCJyZWFkZXIwIiwid3JpdGVyMSIsInJlYWRlcjEiLCJzb21lX3JlYWRlcl93YXNfY2xvc2VkIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCQwIiwic3RpbGxfb3BlbiIsImZpbHRlcl9vcGVuIiwic3RpbGxfb3BlbiQwIiwic2V0X2luZm8iLCJ2YWx1ZV9hdmFpbGFibGUiLCJzZXRfdmFsdWVfYXZhaWxhYmxlIiwidGFrZW4iLCJjdXJyZW50X3ZhbHVlIiwidmFsdWVfYXZhaWxhYmxlJDAiLCJ0YWtlbiQwIiwiY3VycmVudF92YWx1ZSQwIiwidmFsdWVfYXZhaWxhYmxlJDEiLCJ4XzAxMCIsInRha2VuXzAwNiIsImN1cnJlbnRfdmFsdWVfMDA0IiwidmFsdWVfYXZhaWxhYmxlXzAwOCIsImJuZHNfMDAzIiwiYm5kc18wMDMkMCIsImJuZHNfMDAzJDEiLCJ2YWx1ZV9hdmFpbGFibGVfZnVuIiwiYV8wMTEiLCJiXzAxMiIsInRha2VuX2Z1biIsImN1cnJlbnRfdmFsdWVfZnVuIiwicGVla19leG4iLCJ4XzAxMyIsIm9mX2FfMDE0IiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3Iiwid3JpdGVfb25seSIsInRha2Vfbm9uZW1wdHkiLCJ0YWtlX25vd19leG4iLCJ0YWtlX25vdyIsInRha2UiLCJ1cGRhdGVfZXhuIiwidGFrZW4kMSIsInB1dCIsInBpcGVfd2hlbl9yZWFkeSIsInJlc3RfZXhuIiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sIiwic3ltYm9sJDAiLCJzZXhwX29mX3QiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm1hcCIsInNleHBfb2ZfdCQwIiwiY3JlYXRlIiwiZG9uX3Rfd2FpdF9mb3IiLCJpbnZhcmlhbnQiLCJpc19kZXRlcm1pbmVkIiwibmV2ZXIiLCJwZWVrIiwidW5pdCIsInZhbHVlX2V4biIsInVwb24iLCJib3RoIiwidDEiLCJ0MiIsInJlc3VsdCIsImExIiwiYTIiLCJvayIsImlnbm9yZV9tIiwiYW55IiwidHMiLCJ4IiwiYW55X3VuaXQiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwibG9vcCIsImZvbGRpIiwiaW5pdCIsImkiLCJiIiwieHMiLCJmb2xkIiwiYSIsInNlcW1hcGkiLCJicyIsImFsbCQwIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJpdGVyaSIsImhvdyIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJhYyIsImZpbHRlcl9tYXBpIiwiY29uY2F0X21hcGkiLCJmaW5kX21hcGkiLCJ0bCIsImhkIiwic29tZSIsImZpbmRpIiwiZWx0IiwiZmluZCIsImV4aXN0c2kiLCJmb3JfYWxsaSIsIml0ZXIiLCJtYXAkMSIsImZpbHRlciIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJleGlzdHMiLCJmb3JfYWxsIiwibiIsImFsbF91bml0JDAiLCJjb21iaW5lIiwiZXJyIiwiZXJyb3IiLCJyIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwibWFwX2Vycm9yIiwiam9pbiIsInN5bWJvbF9iaW5kIiwiYXBwbHkiLCJlMSIsImUyIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsIm9rX2V4biIsIm9mX2V4biIsImJhY2t0cmFjZSIsImV4biIsIm9mX2V4bl9yZXN1bHQiLCJtc2ciLCJ2Iiwic2V4cF9vZiIsImVycm9yX3MiLCJzZXhwIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsIm1lc3NhZ2UiLCJzZXhwX29mX2EiLCJ1bmltcGxlbWVudGVkIiwiY29tYmluZV9lcnJvcnMiLCJsIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImVycm9ycyIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCIsImV4dHJhY3RfZXhuIiwicnVuJDAiLCJyZXN0IiwiaGVyZSIsIm5hbWUiLCJydW4iLCJ0cnlfd2l0aF9qb2luIiwibGlzdCIsImFjYyIsInN0YXRlJDAiLCJ1cG9uJDEiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwicG9zJDAiLCJwb3MiLCJhbGwiLCJzZXhwX29mX3QiLCJzZXhwX29mX3QkMCIsImNhbGxiYWNrIiwiciIsImNhbGxiYWNrJDAiLCJ2Iiwic2V4cF9vZl90JDEiLCJleHRyYWN0X2V4biIsInN1YnNjcmliZXJzX2luZGV4Iiwic3Vic2NyaWJlZF9mcm9tIiwib25fY2FsbGJhY2tfcmFpc2UiLCJtYXRjaCQxIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJyZXMiLCJoIiwiY2FsbGJhY2tzIiwic2V0X2NhbGxiYWNrcyIsInN1YnNjcmliZXJzIiwic2V0X3N1YnNjcmliZXJzIiwibnVtX3N1YnNjcmliZXJzIiwic2V0X251bV9zdWJzY3JpYmVycyIsImNhbGxiYWNrX2FyaXR5IiwiY2FsbGJhY2tzJDAiLCJzdWJzY3JpYmVycyQwIiwibnVtX3N1YnNjcmliZXJzJDAiLCJzZXhwX29mX2J1cyIsIm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93ciIsImNyZWF0ZWRfZnJvbSIsIm5hbWUiLCJzdGF0ZSIsIndyaXRlX2V2ZXJfY2FsbGVkIiwiaSIsIm1hdGNoIiwicmVhZF9vbmx5IiwidCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwieF8wMTEiLCJjaGVjayIsImYiLCJjYWxsYmFja3NfZnVuIiwic3Vic2NyaWJlcnNfZnVuIiwic3Vic2NyaWJlciIsInN1YnNjcmliZXIkMCIsInhfMDA1IiwiY2FsbGJhY2tfZnVuIiwibnVtX3N1YnNjcmliZXJzX2Z1biIsImlzX2Nsb3NlZCIsInNleHBfb2ZfdCQyIiwib2ZfY2FsbGJhY2tfMDEyIiwieF8wMTMiLCJpbnZhcmlhbnQkMCIsInNleHBfb2ZfdCQzIiwib2ZfY2FsbGJhY2tfMDE0IiwieF8wMTUiLCJpbnZhcmlhbnQkMSIsInN0YXJ0X3dyaXRlX2ZhaWxpbmciLCJ4XzAxNiIsInhfMDE3IiwiY2FwYWNpdHkiLCJtYXliZV9zaHJpbmtfY2FwYWNpdHkiLCJkZXNpcmVkX2NhcGFjaXR5IiwiY29weV9hbmRfc2hyaW5rIiwiYXJyYXkiLCJuZXdfYXJyYXkiLCJhZGRfc3Vic2NyaWJlciIsImF0X3N1YnNjcmliZXJzX2luZGV4IiwicmVtb3ZlX3N1YnNjcmliZXIiLCJ1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWIiLCJzdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyIiwidW5zdWJzY3JpYmUiLCJ0byIsInVuc3Vic2NyaWJlX2FsbCIsIm9uX2Nsb3NlIiwiZmluaXNoX3dyaXRlIiwiY2xvc2UiLCJjYWxsX29uX2NhbGxiYWNrX3JhaXNlIiwiZXJyb3IiLCJleG4kMCIsImV4biIsImNhbGxiYWNrX3JhaXNlZCIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlIiwidW5zYWZlX2dldF9jYWxsYmFjayIsImEiLCJ3cml0ZSIsImExIiwibGVuIiwibGFzdF92YWx1ZSIsIndyaXRlX2xvY2FsIiwid3JpdGUyIiwiYTIiLCJ3cml0ZTMiLCJhMyIsIndyaXRlNCIsImE0Iiwid3JpdGU1IiwiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCJjcmVhdGVfZXhuIiwiY2FuX3N1YnNjcmliZSIsInN1YnNjcmliZV9leG4iLCJ4XzAxOSIsImJ1c19pZCQwIiwiYnVzX2lkIiwiY2FwYWNpdHkkMCIsIm5ld19jYXBhY2l0eSIsImNvcHlfYW5kX2RvdWJsZSIsImFyZzEkMCIsImFyZzEkMSIsImFyZzIkMCIsImFyZzEkMiIsImFyZzIkMSIsImFyZzMkMCIsImFyZzEkMyIsImFyZzIkMiIsImFyZzMkMSIsImFyZzQkMCIsIml0ZXJfZXhuIiwieF8wMjAiLCJzZXhwX29mX3QkNCIsImZvbGRfZXhuIiwiZm9sZF9hcml0eSIsImluaXQiLCJ4XzAzMCIsImE1IiwiYXNzZXJ0X25vX2FsbG9jYXRpb24iLCJidXNfciIsInN0YXJ0aW5nX21pbm9yX3dvcmRzIiwic3RhcnRpbmdfbWFqb3Jfd29yZHMiLCJlbmRpbmdfbWlub3Jfd29yZHMiLCJlbmRpbmdfbWFqb3Jfd29yZHMiLCJnb3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMzEiLCJiXzAzMiIsImdvdCQwIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJhXzAzMyIsImJfMDM0IiwiY3JlYXRlIiwiYXJpdHkiLCJidXMxIiwiYnVzMiIsImJ1czMiLCJidXM0IiwiYnVzNSIsImR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbiIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJlIiwiY29ubiIsIm9uX2V2ZW50IiwiYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0IiwiY3VycmVudF9jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsImlzX2Nsb3NlZCQwIiwiY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0Iiwic2V4cF9vZl90JDEiLCJwYXJhbSIsImNvbm5fMDIzIiwibmV4dF9jb25uZWN0X3Jlc3VsdF8wMjYiLCJkb25fdF9yZWNvbm5lY3RfMDM2IiwiY2xvc2VfZmluaXNoZWRfMDM0IiwiY2xvc2Vfc3RhcnRlZF8wMzIiLCJldmVudF9idXNfMDMwIiwiZXZlbnRfaGFuZGxlcl8wMjgiLCJhcmdfMDQxIiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYXJnXzAxNCIsImJuZHNfMDEwIiwiYXJnXzAxMiIsImJuZHNfMDEwJDAiLCJhcmdfMDI5IiwiYm5kc18wMTYkNSIsImFyZ18wMjciLCJibmRzXzAxNiQ2IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiZXZlbnRfYnVzIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwicmFuZG9tX3N0YXRlIiwidGltZV9zb3VyY2UiLCJldmVudF9oYW5kbGVyIiwiZGVmYXVsdF9yZXRyeV9kZWxheSIsIm5vbl9yYW5kb21pemVkX2RlbGF5IiwicmV0cnlfZGVsYXlfc3BhbiIsInJhbmRvbV9zdGF0ZSQwIiwic3BhbiIsInNwYW4kMCIsImRpc3RhbmNlIiwid2FpdCIsInJldHJ5X2RlbGF5IiwicHJldmlvdXNfYWRkcmVzcyIsInByZXZpb3VzX2Vycm9yIiwiYWRkciIsInByZXZpb3VzX2FkZHJlc3MkMCIsInNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJzYW1lX2FzX3ByZXZpb3VzX2Vycm9yIiwiYWxsIiwiZXJyb3Jfc291cmNlXzAwNSIsInJldGlyZWRfa3JiX3dvcmQiLCJjb21wYXJlIiwidF9vZl9zZXhwIiwic2V4cF8wMDYiLCJzZXhwX29mX3QiLCJncm91cCIsIm1hZ2ljX3dvcmQiLCJnZW5fbWFnaWNfbnVtYmVyIiwid29yZCIsImFjYyIsImMiLCJtYWdpY19udW1iZXIiLCJ0IiwicCIsImJ5X21hZ2ljX251bWJlciIsImFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZSIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJtYXhfc3VwcG9ydGVkX3ZlcnNpb24iLCJvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl8iLCJudW0iLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIiwiY3JlYXRlX2V4biIsInByb3RvY29sIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwiYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIiwicHJvdG9jb2xfbWFnaWNfbnVtYmVyIiwicmF3X3ZlcnNpb25fbGlzdCIsImdldF9wcm90b2NvbCIsInZlcnNpb25zIiwicHJvdG9jb2xzIiwibmVnb3RpYXRlIiwiYWxsb3dfbGVnYWN5X3BlZXIiLCJ1cyIsInBlZXIiLCJ1c192ZXJzaW9ucyIsInVzX3Byb3RvY29sIiwicGVlcl92ZXJzaW9ucyIsInBlZXJfcHJvdG9jb2wiLCJ2ZXJzaW9uIiwieCIsIm1hdGNoZXNfbWFnaWNfcHJlZml4IiwiY29udGFpbnNfbWFnaWNfcHJlZml4IiwiZiIsImFueV9tYWdpY19wcmVmaXgiLCJncm91cCQwIiwiYmluX3NpemVfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRlcl90JDAiLCJhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGUkMCIsImJvdW5kZWRfbGlzdF9iaW5fc2l6ZSIsImJpbl9zaGFwZV90IiwiYmluX3QiLCJiaW5fc2l6ZV90IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYnVmIiwicG9zX3JlZiIsInZuYXQwIiwib2ZfaW50X2V4biIsIm9mX3dyaXRlciIsIndyaXRlIiwic2l6ZSIsIndyaXRlJDAiLCJwb3MiLCJhIiwibGVuIiwicG9zJDAiLCJzaXplJDAiLCJvZl90eXBlX2NsYXNzIiwiYmluX2EiLCJ0ZXN0IiwicyIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ192ZXJzaW9uIiwid3JpdGVyX3dpdGhfbGVuZ3RoIiwid2l0aF9sZW5ndGhfdmVyc2lvbiIsInBvdyIsIngiLCJkZXNjcmlwdGlvbnMiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZ3JvdXAiLCJ2MiIsInYxIiwidmludCIsInZfbmFtZSIsInZfdmVyc2lvbiIsImVxdWFsIiwiYV8wMDEiLCJiXzAwMiIsImNvbXBhcmUiLCJhXzAwMyIsImJfMDA0IiwibiIsImhhc2hfZm9sZF90IiwiaHN2IiwiYXJnIiwiaHN2JDAiLCJoYXNoIiwidF9vZl9zZXhwIiwieF8wMDciLCJ2ZXJzaW9uIiwibmFtZSIsInNleHBfb2ZfdCIsInZlcnNpb25fMDExIiwibmFtZV8wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsInN1bW1hcml6ZSIsInRzIiwic3VtbWFyeSIsImJpbmQiLCJ0IiwiZiIsImJpbmRfZGVmZXJyZWQiLCJtYXBfZGVmZXJyZWQiLCJsaWZ0X2RlZmVycmVkIiwiZXJyJDAiLCJlcnIiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsInY1Iiwic2l6ZSQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQwIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQxIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDIiLCJ2X21ldGFkYXRhIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDkyIiwibWV0YWRhdGFfMDkwIiwiaWRfMDg4IiwidmVyc2lvbl8wODYiLCJ0YWdfMDg0IiwiYXJnXzA5MyIsImJuZHNfMDgzIiwiYXJnXzA5MSIsImJuZHNfMDgzJDAiLCJhcmdfMDg5IiwiYm5kc18wODMkMSIsImFyZ18wODciLCJibmRzXzA4MyQyIiwiYXJnXzA4NSIsImJuZHNfMDgzJDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsInRvX3YxIiwiZGF0YSIsImlkIiwidGFnIiwib2ZfdjEiLCJtZXRhZGF0YSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDEiLCJvZl9hXzA5NCIsImRhdGFfMDk4IiwiaWRfMDk2IiwiYXJnXzA5OSIsImJuZHNfMDk1IiwiYXJnXzA5NyIsImJuZHNfMDk1JDAiLCJiaW5fcmVhZF90JDkiLCJiaW5fcmVhZF90JDEwIiwiYmluX3JlYWRlcl90JDQiLCJncm91cCQ1IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQyIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDUiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkNiIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fbmVlZHNfbGVuZ3RoJDIiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3JlYWRfbmF0MF90IiwiYmluX3JlYWRfbmF0MF90JDAiLCJiaW5fcmVhZGVyX25hdDBfdCIsImJpbl9zaXplX25hdDBfdCIsImJpbl93cml0ZV9uYXQwX3QiLCJiaW5fd3JpdGVyX25hdDBfdCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfdCQyIiwicmVzcG9uc2UiLCJlcnJvciIsImJpbl9zaXplX3QkMiIsInNpemVfb2ZfcmVzcG9uc2UiLCJzaXplX29mX2Vycm9yIiwiYmluX3dyaXRlX3QkMiIsIndyaXRlX3Jlc3BvbnNlIiwid3JpdGVfZXJyb3IiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl93cml0ZXJfcmVzcG9uc2UiLCJiaW5fd3JpdGVyX2Vycm9yIiwiYmluX3JlYWRfdCQxMyIsIm9mX3Jlc3BvbnNlIiwib2ZfZXJyb3IiLCJiaW5fcmVhZF90JDE0Iiwidl91bnVzZWRfcXVlcnlfaWQiLCJ2X2luaXRpYWwiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkZXJfcmVzcG9uc2UiLCJiaW5fcmVhZGVyX2Vycm9yIiwiYmluX3QkMiIsImJpbl9yZXNwb25zZSIsImJpbl9lcnJvciIsInNleHBfb2ZfdCQyIiwib2ZfcmVzcG9uc2VfMTAwIiwib2ZfZXJyb3JfMTAxIiwiaW5pdGlhbF8xMDUiLCJ1bnVzZWRfcXVlcnlfaWRfMTAzIiwiYXJnXzEwNiIsImJuZHNfMTAyIiwiYXJnXzEwNCIsImJuZHNfMTAyJDAiLCJncm91cCQ3IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQzIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDciLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkOCIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fbmVlZHNfbGVuZ3RoJDMiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDEiLCJiaW5fcmVhZF9uYXQwX3QkMiIsImJpbl9yZWFkZXJfbmF0MF90JDAiLCJiaW5fc2l6ZV9uYXQwX3QkMCIsImJpbl93cml0ZV9uYXQwX3QkMCIsImJpbl93cml0ZXJfbmF0MF90JDAiLCJncm91cCQ4IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQ0IiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDkiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMTAiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX25lZWRzX2xlbmd0aCQ0Iiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMiIsIm9mX2FfMTA3IiwiYXJnMF8xMDgiLCJyZXMwXzEwOSIsImFyZzBfMTEwIiwicmVzMF8xMTEiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZGVyX3QkOCIsImJpbl9yZWFkX25hdDBfdCQzIiwiYmluX3JlYWRfbmF0MF90JDQiLCJiaW5fcmVhZGVyX25hdDBfdCQxIiwiYmluX3NpemVfbmF0MF90JDEiLCJiaW5fd3JpdGVfbmF0MF90JDEiLCJiaW5fd3JpdGVyX25hdDBfdCQxIiwicXVlcnlfaWQiLCJ2MV9xdWVyeSIsInYxX3N0ciIsInYyX3N0ciIsImNhbGxlcl9pZGVudGl0eSIsInYyJDAiLCJ2X3F1ZXJ5Iiwidl9yZXNwb25zZSIsInZfbXNnIiwidl9xdWVyeSQwIiwidl9pbml0aWFsX3Jlc3BvbnNlIiwidl91cGRhdGVfcmVzcG9uc2UiLCJ2X2Vycm9yIiwidF9vZl9zZXhwJDAiLCJzZXhwc18wMTAiLCJ1cGRhdGVfcmVzcG9uc2UiLCJpbml0aWFsX3Jlc3BvbnNlIiwicXVlcnkiLCJzZXhwc18wMDYiLCJzZXhwc18wMDgiLCJtc2ciLCJyZXNwb25zZV8wMTQiLCJxdWVyeV8wMTIiLCJhcmdfMDE1IiwiYm5kc18wMTEiLCJhcmdfMDEzIiwiYm5kc18wMTEkMCIsIm1zZ18wMTciLCJhcmdfMDE4IiwiYm5kc18wMTYiLCJlcnJvcl8wMjYiLCJ1cGRhdGVfcmVzcG9uc2VfMDI0IiwiaW5pdGlhbF9yZXNwb25zZV8wMjIiLCJxdWVyeV8wMjAiLCJhcmdfMDI3IiwiYm5kc18wMTkiLCJhcmdfMDI1IiwiYm5kc18wMTkkMCIsImFyZ18wMjMiLCJibmRzXzAxOSQxIiwiYXJnXzAyMSIsImJuZHNfMDE5JDIiLCJyZXNwb25zZV8wMzEiLCJxdWVyeV8wMjkiLCJhcmdfMDMyIiwiYm5kc18wMjgiLCJhcmdfMDMwIiwiYm5kc18wMjgkMCIsIm1zZ18wMzQiLCJhcmdfMDM1IiwiYm5kc18wMzMiLCJlcnJvcl8wNDMiLCJ1cGRhdGVfcmVzcG9uc2VfMDQxIiwiaW5pdGlhbF9yZXNwb25zZV8wMzkiLCJxdWVyeV8wMzciLCJhcmdfMDQ0IiwiYm5kc18wMzYiLCJhcmdfMDQyIiwiYm5kc18wMzYkMCIsImFyZ18wNDAiLCJibmRzXzAzNiQxIiwiYXJnXzAzOCIsImJuZHNfMDM2JDIiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJieXRlc19yZWFkIiwicmVhZF9mb3JldmVyIiwib25fbWVzc2FnZSIsIm9uX2VuZF9vZl9iYXRjaCIsInJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QiLCJiaW5fcmVhZGVyIiwicGFjayQwIiwiY2xvc2UkMCIsImlzX2Nsb3NlZCQwIiwibW9uaXRvciIsImJ5dGVzX3RvX3dyaXRlIiwiYnl0ZXNfd3JpdHRlbiIsImZsdXNoZWQiLCJyZWFkeV90b193cml0ZSIsInNlbmRfYmluX3Byb3QiLCJiaW5fd3JpdGVyIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vIiwic3RvcHBlZCIsImNhbl9zZW5kIiwidHJhbnNmZXIiLCJwaXBlIiwibWF4X251bV92YWx1ZXNfcGVyX3JlYWQiLCJjb25zdW1lciIsImVuZF9vZl9waXBlIiwiaXZhciIsIml0ZXIiLCJxIiwid3JpdGVyXzAwNiIsInJlYWRlcl8wMDQiLCJhcmdfMDA3IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiY2xvc2UkMSIsImNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuXyIsImNhbGxiYWNrXzAwMiIsImNsb3NlX2Nvbm5lY3Rpb24iLCJjb250aW51ZSQwIiwiaGFuZGxlX2V4biIsImNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciIsImV4biIsImNhbGxiYWNrIiwid3JpdGVyXzAwNCIsInF1ZXJ5X2lkXzAwMiIsInJlc3BvbmRlZF8wMDYiLCJibmRzXzAwMSQxIiwiY3JlYXRlIiwid3JpdGVyIiwibGlmdCIsImltcGwiLCJiaW5fbXNnIiwiaW1wbCQwIiwic3RhdGUiLCJzdHIiLCJhdXRob3JpemVkX3N0YXRlIiwiaW1wbCQxIiwiaW1wbCQyIiwiYmluX3F1ZXJ5IiwiaW1wbCQzIiwiaW1wbCQ0IiwiaW1wbCQ1IiwiaW1wbCQ2IiwicmVzcCIsImltcGwkNyIsImltcGwkOCIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciIsImltcGwkOSIsImltcGwkMTAiLCJpbXBsJDExIiwidyIsIm9mX2Nvbm5lY3Rpb25fc3RhdGVfMDE0Iiwib25fZXhjZXB0aW9uXzAyNCIsInNoYXBlc18wMjIiLCJmXzAyMCIsInZlcnNpb25fMDE4IiwidGFnXzAxNiIsImJuZHNfMDE1IiwiYm5kc18wMTUkMCIsImJuZHNfMDE1JDEiLCJhcmdfMDE5IiwiYm5kc18wMTUkMiIsImFyZ18wMTciLCJibmRzXzAxNSQzIiwiZGVzY3JpcHRpb24iLCJzaGFwZXMiLCJsaWZ0JDAiLCJiIiwid2l0aF9hdXRob3JpemF0aW9uIiwibGlmdF9kZWZlcnJlZCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsImxvY2FsX3N0b3JhZ2Vfa2V5IiwiZ2V0Iiwid2l0aF9tZXRhZGF0YSIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiYWRkX2xlbiQwIiwiYWRkX2xlbiQxIiwiZSQwIiwiZSIsInN5bWJvbCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAyNCIsImFyZzFfMDI2IiwiYXJnMF8wMjUiLCJyZXMwXzAyNyIsInJlczFfMDI4IiwiYXJnXzAyMiIsImJuZHNfMDA4JDEiLCJhcmdfMDIwIiwiYm5kc18wMDgkMiIsImJuZHNfMDA4JDMiLCJhcmdfMDE2IiwiYm5kc18wMDgkNCIsImFyZ18wMTQiLCJibmRzXzAwOCQ1IiwiYm5kc18wMDgkNiIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJyZXN1bHQiLCJzZXhwIiwieF8wMzQiLCJ3cml0ZV9tZXNzYWdlIiwiYmluX3dyaXRlcl9kYXRhIiwiYmluX3dyaXRlX3ZvaWQiLCJidWZmZXIiLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXMiLCJiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCIsInN0cl9sZW4iLCJuZXh0IiwiYmluX3NpemVfbmF0MF9oZWFkZXIiLCJoZWFkZXJfcHJlZml4IiwiZGF0YV9sZW4iLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiIsImJpbl93cml0ZV9uYXQwX2hlYWRlciIsImJpbl93cml0ZXJfbmF0MF9oZWFkZXIiLCJiaW5fc2l6ZV9tZXNzYWdlIiwiYmluX3dyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX21lc3NhZ2UiLCJiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmciLCJwcmVwX3dyaXRlIiwiY2xvc2VkIiwiaW5zdGFuY2UiLCJ3cml0ZV9lb2YiLCJ3cml0ZV9tZXNzYWdlJDAiLCJjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW4iLCJncm91cHMiLCJlbGVtZW50X2luX2dyb3VwIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2skMCIsInQkMCIsIm1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiIsIm9uX2V4Y2VwdGlvbiIsImF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQiLCJycGNfa2luZCIsImFwcGx5X2ltcGxlbWVudGF0aW9uIiwiaW1wbGVtZW50YXRpb24iLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJmJDMiLCJiaW5fcXVlcnlfcmVhZGVyJDAiLCJxdWVyeV9jb250ZW50cyIsImV4biQwIiwiZiQ0IiwibGVuJDAiLCJyZXN1bHRfbW9kZSIsImYkNSIsImJpbl9yZXNwb25zZV93cml0ZXIiLCJiaW5fcXVlcnlfcmVhZGVyJDEiLCJxdWVyeV9jb250ZW50cyQwIiwib3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsIiwiZGF0YSQwIiwiZGF0YSQxIiwiZXhuJDEiLCJiYWNrdHJhY2UiLCJyZXN1bHRfbW9kZSQwIiwiZiQ2IiwicmVzcG9uZGVyIiwiZCIsImNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IiwicmVzdWx0JDAiLCJjaGVja19yZXNwb25kZWQiLCJkJDAiLCJyIiwic3RyZWFtaW5nX3JwYyIsInN0cmVhbV9xdWVyeSIsImxlbiQxIiwic3RyZWFtX3dyaXRlciIsImltcGxfd2l0aF9zdGF0ZSIsImYkMiIsIndyaXRlciQwIiwicnVuX2ltcGwiLCJzcGxpdF9vayIsImhhbmRsZV9vayIsImVycm9yJDAiLCJvayIsImluaXRpYWwiLCJmJDAiLCJwaXBlX3IiLCJmJDEiLCJmbHVzaCIsInByb2R1Y2Vyc19mbHVzaGVkIiwiYWNjIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsImltcGxlbWVudGF0aW9uJDEiLCJvbl9leGNlcHRpb24kMCIsImltcGxlbWVudGF0aW9uJDIiLCJpX3MiLCJkdXBzIiwiaSIsImluc3RhbnRpYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsInVucGFja2VkIiwiY3JlYXRlX2V4biIsIm51bGwkMCIsImFkZF9leG4iLCJkZXNjIiwiYWRkIiwiaW1wbGVtZW50YXRpb25zJDAiLCJvbl91bmtub3duX3JwYyQwIiwiY2FsbCIsImV4cGVydCIsImNhbm5vdF9zZW5kIiwieF8wMzkiLCJtYXJrX3Jlc3BvbmRlZCIsInNjaGVkdWxlIiwiaGVhZGVyIiwiaGFuZGxlX3NlbmRfcmVzdWx0JDAiLCJ3cml0ZV9iaWdzdHJpbmciLCJ3cml0ZV9iaW5fcHJvdCIsImVycm9yX3NvdXJjZV8wMzgiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInN1cHBvcnRlZF92ZXJzaW9ucyIsImRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlciIsInF1ZXJ5X21lc3NhZ2UiLCJzZW5kX2V2ZXJ5IiwidGltZW91dCIsInNlbmRfZXZlcnlfMDQzIiwidGltZW91dF8wNDEiLCJibmRzXzA0MCIsImJuZHNfMDQwJDAiLCJ2X3RpbWVvdXQiLCJ2X3NlbmRfZXZlcnkiLCJjcmVhdGUkMCIsInNleHBfb2ZfdCQzIiwiaGVhcnRiZWF0X2NvbmZpZ18wNTMiLCJkZXNjcmlwdGlvbl8wNTEiLCJoZWFydGJlYXRfY2FsbGJhY2tzXzA1NSIsImxhc3Rfc2Vlbl9hbGl2ZV8wNTciLCJuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25fMDciLCJoZWFydGJlYXRfZXZlbnRfMDc1IiwidGltZV9zb3VyY2VfMDczIiwiaW1wbGVtZW50YXRpb25zX2luc3RhbmNlXzA3MSIsImNsb3NlX2ZpbmlzaGVkXzA2OSIsImNsb3NlX3N0YXJ0ZWRfMDY3Iiwib3Blbl9xdWVyaWVzXzA2NSIsIndyaXRlcl8wNjMiLCJyZWFkZXJfMDYxIiwibWF4X21ldGFkYXRhX3NpemVfMDU5IiwiYXJnXzA3OCIsImJuZHNfMDUwIiwiYXJnXzA3NiIsImJuZHNfMDUwJDAiLCJhcmdfMDc0IiwiYm5kc18wNTAkMSIsImFyZ18wNzIiLCJibmRzXzA1MCQyIiwiYXJnXzA3MCIsImJuZHNfMDUwJDMiLCJhcmdfMDY4IiwiYm5kc18wNTAkNCIsImFyZ18wNjYiLCJibmRzXzA1MCQ1Iiwid3JpdGVyXzAzNSIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbl8wMyIsImFyZ18wMzYiLCJibmRzXzAzMiIsImFyZ18wMzQiLCJibmRzXzAzMiQwIiwiYXJnXzA2NCIsImJuZHNfMDUwJDYiLCJhcmdfMDYyIiwiYm5kc18wNTAkNyIsImFyZ18wNjAiLCJibmRzXzA1MCQ4IiwiYXJnXzA1OCIsImJuZHNfMDUwJDkiLCJhcmdfMDU2IiwiYm5kc18wNTAkMTAiLCJ0aW1lb3V0XzA0NiIsInNlbmRfZXZlcnlfMDQ4IiwiYXJnXzA0OSIsImJuZHNfMDQ1IiwiYXJnXzA0NyIsImJuZHNfMDQ1JDAiLCJhcmdfMDU0IiwiYm5kc18wNTAkMTEiLCJhcmdfMDUyIiwiYm5kc18wNTAkMTIiLCJzZXhwX29mX3RfaHVtX3dyaXRlciIsInhfMDc5IiwiZGlzcGF0Y2giLCJyZXNwb25zZV9oYW5kbGVyIiwiYmluX3dyaXRlcl9xdWVyeSIsInF1ZXJ5JDAiLCJtZXNzYWdlIiwibWFrZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImR1bW15X2J1ZmZlciIsImR1bW15X3JlZiIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IiwiY3JlYXRlJDEiLCJoYW5kc2hha2VfdGltZW91dCIsImhlYXJ0YmVhdF9jb25maWciLCJtYXhfbWV0YWRhdGFfc2l6ZSIsInRpbWVfc291cmNlIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiIsImhlYXJ0YmVhdF9mcm9tX25vd19vbiIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODIiLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJxdWVyeSQxIiwiaW5zdGFuY2UkMCIsInBlZXIiLCJ3aXRoX2Nsb3NlIiwidHJhbnNwb3J0IiwiZGlzcGF0Y2hfcXVlcmllcyIsIm9uX2hhbmRzaGFrZV9lcnJvciIsImhhbmRsZV9oYW5kc2hha2VfZXJyb3IiLCJzZXJ2ZXJfd2l0aF9jbG9zZSIsIm9uX2hhbmRzaGFrZV9lcnJvciQwIiwid2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCIsImNvbnRleHQiLCJlcnJvcl9zb3VyY2VfMDA5IiwiZXJyb3Jfc291cmNlXzAyNCIsInN5bWJvbCQwIiwiZGlzcGF0Y2hfcmF3IiwiY29ubiIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInF1ZXJ5X3R5cGVfaWQiLCJyZXNwb25zZV90eXBlX2lkIiwiaW1wbGVtZW50IiwiaW1wbGVtZW50JDAiLCJyZXNwb25zZSQwIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciIsImRpc3BhdGNoJDAiLCJkaXNwYXRjaF9leG4iLCJtYWtlX2Rpc3BhdGNoIiwiZG9fZGlzcGF0Y2giLCJycGNfdGFnIiwiaGFuZGxlX3Jlc3BvbnNlIiwiaGFuZGxlX2Vycm9yIiwieF8wMDIiLCJkaXNwYXRjaCQxIiwic2NoZWR1bGVfZGlzcGF0Y2giLCJkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIiwiYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiIsImltcGxlbWVudCQxIiwiaW1wbGVtZW50JDIiLCJpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJDAiLCJ2ZXJzaW9uJDAiLCJuYW1lJDAiLCJtc2dfdHlwZV9pZCIsInNoYXBlcyQwIiwiZGVzY3JpcHRpb24kMCIsImltcGxlbWVudCQzIiwiZGlzcGF0Y2gkMiIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IkMCIsImRpc3BhdGNoJDMiLCJkaXNwYXRjaF9leG4kMCIsImltcGxlbWVudCQ0IiwiZGlzcGF0Y2gkNCIsInNjaGVkdWxlX2Rpc3BhdGNoJDAiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNsaWVudF9wdXNoZXNfYmFjayIsImJpbl9pbml0aWFsX3Jlc3BvbnNlIiwiYmluX3VwZGF0ZV9yZXNwb25zZSIsImFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZSIsImNsaWVudF9wdXNoZXNfYmFjayQwIiwiaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIiwidXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQiLCJlcnJvcl9yZXNwb25zZV90eXBlX2lkIiwibWFrZV9pbml0aWFsX21lc3NhZ2UiLCJpbXBsZW1lbnRfZ2VuIiwiaW1wbGVtZW50JDUiLCJjIiwiaW1wbGVtZW50X2RpcmVjdCIsImFib3J0IiwicmVhZF9lcnJvciIsImhhbmRsZXIiLCJjb3JlX2VyciIsImRpc3BhdGNoX2dlbiIsIm1ha2VfdXBkYXRlX2hhbmRsZXIiLCJpbml0aWFsX3N0YXRlIiwiaW5pdGlhbF9oYW5kbGVyIiwiZXJyJDEiLCJpbml0aWFsX21zZyIsImluaXRpYWwkMCIsImV4dHJhIiwiaGFuZGxlciQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJlcnIkNCIsImVyciQzIiwiZXJyJDIiLCJkaXNwYXRjaCQ1IiwicGlwZV93IiwiaW5pdCIsInBpcGVfbWV0YWRhdGEiLCJjcmVhdGUkMiIsImJpbl9xdWVyeSQwIiwiYmluX3Jlc3BvbnNlJDAiLCJpbXBsZW1lbnQkNiIsImNyZWF0ZSQzIiwiaW5pdGlhbF9zaXplIiwiY3JlYXRlJDQiLCJidWZmZXIkMCIsImxlbmd0aCIsIm9uZSIsIm9uZSQwIiwid3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAiLCJncm91cF9lbGVtZW50X2luX3dyaXRlciIsInJlbW92ZSIsInRvX2xpc3QiLCJmbHVzaGVkX29yX2Nsb3NlZCIsImRpcmVjdF9zdHJlYW1fd3JpdGVyIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQxIiwid3JpdGUkMSIsImltcGxlbWVudF9kaXJlY3QkMCIsImRpc3BhdGNoJDYiLCJkaXNwYXRjaF9leG4kMSIsInBpcGVfYW5kX2lkIiwiZGlzcGF0Y2hfaXRlciIsIm5hbWUkMSIsInZlcnNpb24kMSIsImRlc2NyaXB0aW9uJDEiLCJxdWVyeV90eXBlX2lkJDAiLCJlcnJvcl90eXBlX2lkIiwicmVzcG9uc2VfdHlwZV9pZCQwIiwiY3JlYXRlJDUiLCJiaW5fc3RhdGUiLCJiaW5fdXBkYXRlIiwiYmluX3F1ZXJ5JDEiLCJiaW5fZXJyb3IkMCIsImRpc3BhdGNoJDciLCJ1cGRhdGVfciIsIm5hbWUkMiIsInZlcnNpb24kMiIsImRlc2NyaXB0aW9uJDIiLCJxdWVyeV90eXBlX2lkJDEiLCJzdGF0ZV90eXBlX2lkIiwidXBkYXRlX3R5cGVfaWQiLCJlcnJvcl90eXBlX2lkJDAiLCJkZXNjcmlwdGlvbiQzIiwicnBjIiwicnBjJDAiLCJycGMkMSIsInJwYyQyIiwidGhlX3JwYyIsIm5vdF90aGVfcnBjIiwicnBjX25hbWUkMCIsImlucHV0IiwiY29udmVydCIsImZhaWxlZF9jb252ZXJzaW9uIiwiYXJnM18wMDYiLCJhcmcyXzAwNSIsImFyZzFfMDA0IiwiYXJnMF8wMDMiLCJyZXMwXzAwNyIsInZfMDAxIiwicmVzMV8wMDgiLCJ2XzAwMiIsInJlczJfMDA5IiwicmVzM18wMTAiLCJtdWx0aXBsZV9yZWdpc3RyYXRpb25zIiwiYXJnMV8wMTQiLCJ2XzAxMSIsInZfMDEyIiwicmVzMV8wMTYiLCJhZGFwdGVyIiwiYWRhcHRlcnMiLCJhcmcxXzAyMiIsImFyZzBfMDIxIiwicmVzMV8wMjQiLCJhZGFwdGVycyQwIiwiYWRkX3JwY192ZXJzaW9uIiwib2xkX3JwYyIsInVwZ3JhZGUiLCJkb3duZ3JhZGUiLCJhZGFwdCIsImZuIiwiYWRhcHRlZCIsIm9sZF9xdWVyeSIsImFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJ1cGdyYWRlX29yX2Vycm9yIiwiZG93bmdyYWRlX29yX2Vycm9yIiwidmFsdWUiLCJhZGRfdmVyc2lvbiIsImFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSIsInJlZ2lzdHJ5IiwiaW1wbGVtZW50X211bHRpIiwibG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvIiwibG9nX3ZlcnNpb24iLCJycGNzIiwidmVyc2lvbnMiLCJxJDAiLCJyJDAiLCJpbXBsZW1lbnRfbXVsdGlfZ2VuIiwiaW1wbGVtZW50X2RpcmVjdF9tdWx0aSIsIndyYXBwZWRfbW9kZWxfb2ZfcXVlcnkiLCJ3cmFwcGVkX2Vycm9yX29mX21vZGVsIiwiY29udmVydF9lbHQiLCJjb252ZXJ0X3BpcGUiLCJtb2RlbF9zdGF0ZSIsInN0YXRlJDAiLCJiaW5fc2hhcGVfcXVlcnkiLCJiaW5fc2l6ZV9xdWVyeSIsImJpbl93cml0ZV9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5IiwiYmluX3JlYWRfcXVlcnkkMCIsImJpbl9yZWFkZXJfcXVlcnkiLCJiaW5fc2hhcGVfc3RhdGUiLCJiaW5fc2l6ZV9zdGF0ZSIsImJpbl93cml0ZV9zdGF0ZSIsImJpbl93cml0ZXJfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSIsImJpbl9yZWFkX3N0YXRlJDAiLCJiaW5fcmVhZGVyX3N0YXRlIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3NoYXBlX2Vycm9yIiwiYmluX3NpemVfZXJyb3IiLCJiaW5fd3JpdGVfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciIsImJpbl9yZWFkX2Vycm9yJDAiLCJtb2RlbF9vZl9xdWVyeSIsInN0YXRlX29mX21vZGVsIiwiZXJyb3Jfb2ZfbW9kZWwiLCJ1cGRhdGVfb2ZfbW9kZWwiLCJiaW5fc2hhcGVfcmVzcG9uc2UiLCJiaW5fc2l6ZV9yZXNwb25zZSIsImJpbl93cml0ZV9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlIiwiYmluX3JlYWRfcmVzcG9uc2UkMCIsInJlc3BvbnNlX29mX21vZGVsIiwiYWRkJDAiLCJpbXBscyIsIm1lbnUiLCJtZW51X2ltcGxzIiwic3VwcG9ydGVkX3JwY3MiLCJvZl9lbnRyaWVzIiwiZW50cmllcyIsImF1eF9yZXF1ZXN0IiwicmVxdWVzdCIsInJlcXVlc3QkMCIsImltcGxlbWVudF9tdWx0aSQwIiwiYmluX3NoYXBlX3F1ZXJ5JDAiLCJiaW5fc2l6ZV9xdWVyeSQwIiwiYmluX3dyaXRlX3F1ZXJ5JDAiLCJiaW5fd3JpdGVyX3F1ZXJ5JDAiLCJiaW5fcmVhZF9xdWVyeSQxIiwiYmluX3JlYWRfcXVlcnkkMiIsImJpbl9yZWFkZXJfcXVlcnkkMCIsImJpbl9zaGFwZV9yZXNwb25zZSQwIiwiYmluX3NpemVfcmVzcG9uc2UkMCIsImJpbl93cml0ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlcl9yZXNwb25zZSQwIiwiYmluX3JlYWRfcmVzcG9uc2UkMSIsImJpbl9yZWFkX3Jlc3BvbnNlJDIiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlJDAiLCJtb2RlbF9vZl9xdWVyeSQwIiwicmVzcG9uc2Vfb2ZfbW9kZWwkMCIsImFkZCQxIiwic2hhcGVfbWVudSIsInNoYXBlX21lbnVfaW1wbHMiLCJyZXF1ZXN0JDEiLCJjb25uZWN0aW9uIiwiY3JlYXRlX2RpcmVjdGx5IiwibW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24iLCJjYWxsZXJfdmVyc2lvbnMiLCJjYWxsZWVfdmVyc2lvbnMiLCJjYWxsZWVfbWVudSIsIndpdGhfc3BlY2lmaWNfdmVyc2lvbiIsImRpc3BhdGNoZXIiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMV8wMjAiLCJ3aXRoX3ZlcnNpb25fbWVudSIsImRpc3BhdGNoX211bHRpIiwiY29ubl93aXRoX21lbnUiLCJtcSIsInF1ZXJ5X29mX21vZGVsIiwibW9kZWxfb2ZfcmVzcG9uc2UiLCJkaXNwYXRjaF9pdGVyX211bHRpIiwiYWJvcnRfbXVsdGkiLCJ3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIiwiY29udmVydF9yZXN1bHQiLCJjb252ZXJ0X29rIiwidSIsInJzIiwibW9kZWxfb2Zfc3RhdGUiLCJtb2RlbF9vZl9lcnJvciIsIm1vZGVsX29mX3VwZGF0ZSIsImNhbGxlZV9tb2RlbF9vZl9xdWVyeSIsInJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCIsInF1ZXJ5X29mX2NhbGxlcl9tb2RlbCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsImVycm9yX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJzdGF0ZV9vZl9jYWxsZWVfbW9kZWwiLCJ1cGRhdGVfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3N0YXRlJDAiLCJiaW5fc2l6ZV9zdGF0ZSQwIiwiYmluX3dyaXRlX3N0YXRlJDAiLCJiaW5fd3JpdGVyX3N0YXRlJDAiLCJiaW5fcmVhZF9zdGF0ZSQxIiwiYmluX3JlYWRfc3RhdGUkMiIsImJpbl9yZWFkZXJfc3RhdGUkMCIsImJpbl9zdGF0ZSQwIiwiYmluX3NoYXBlX3VwZGF0ZSQwIiwiYmluX3NpemVfdXBkYXRlJDAiLCJiaW5fd3JpdGVfdXBkYXRlJDAiLCJiaW5fd3JpdGVyX3VwZGF0ZSQwIiwiYmluX3JlYWRfdXBkYXRlJDEiLCJiaW5fcmVhZF91cGRhdGUkMiIsImJpbl9yZWFkZXJfdXBkYXRlJDAiLCJiaW5fdXBkYXRlJDAiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwicGlwZV9yZWFkIiwieF8wMDkiLCJvZl9hXzAwMSIsImJ1ZmZlcl8wMDUiLCJwaXBlXzAwMyIsImJ5dGVzX3JlYWRfMDA3IiwiYXJnXzAwOCIsImJuZHNfMDAyIiwiYXJnXzAwNiIsImJuZHNfMDAyJDAiLCJhcmdfMDA0IiwiYm5kc18wMDIkMSIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJwcm9jZXNzX3F1ZXVlIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSQwIiwidG90YWxfbGVuIiwiY29udGludWVfb3Jfd2FpdCIsImxlbmd0aCQwIiwic2V0X2J1ZmZlciIsInByb2Nlc3NfZGF0YSIsInNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE5Iiwib2ZfYV8wMTEiLCJtb25pdG9yXzAxNSIsInBpcGVfMDEzIiwiYnl0ZXNfd3JpdHRlbl8wMTciLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiaW5jcl9ieXRlc193cml0dGVuIiwibnVtX2J5dGVzIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJvbl9tZXNzYWdlX2NvdW50IiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJhXzAyMiIsImJfMDIzIiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImNvbXBhcmF0b3IkMCIsImFfMDI0IiwiYl8wMjUiLCJ3cml0ZV8xX21zZ18xX2NodW5rIiwid3JpdGVfMV9tc2dfM19jaHVuayIsIm1zZ19sZW4iLCJzcGxpdF9hdCIsInBhcnQxIiwicGFydDIiLCJ3cml0ZV8yX21zZ18xX2NodW5rIiwib25lX21zZyIsInR3b19tc2ciLCJ3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWUiLCJudW0iLCJzdG9wX2FmdGVyX29uX21lc3NhZ2UiLCJhXzAyNiIsImJfMDI3IiwiYV8wMzAiLCJiXzAzMSIsIm9uZV9tZXNzYWdlIiwidHdvX21lc3NhZ2VzIiwib25lX21lc3NhZ2VfcDEiLCJvbmVfbWVzc2FnZV9wMiIsInJwY19jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsInN0cmluZ19hZnRlciIsInMiLCJuIiwicXVvdGUiLCJsZW4iLCJidWYiLCJpIiwiYyIsIm9mX2NoYXIiLCJmdWxsX3NwbGl0Iiwic3RyIiwib24iLCJzZXAiLCJsb29wIiwiYWNjIiwib2Zmc2V0IiwiaW5kZXgiLCJ0b2tlbiIsInNwbGl0IiwibWF4IiwibWF4JDAiLCJ0b2tlbnMiLCJsb29wJDAiLCJ0cmltX2xlZnRfc3ViIiwibGFzdF9jaGFyIiwiY2hhcnMiLCJmaW5hbCQwIiwibGFzdF9jaGFyJDAiLCJpJDAiLCJsYXN0X2NoYXIkMSIsIm5ld19sZW4iLCJzcGxpdF90cmltX2xlZnQiLCJ0cmltIiwidHJpbV9sZWZ0Iiwibm9uX3NwYWNlIiwiZmluZF9mcm9tIiwicGF0dGVybiIsInN0YXJ0Iiwic3RhcnQkMCIsInJlcGxhY2VfYWxsIiwid2l0aCQwIiwicGxlbiIsInNsZW4iLCJqIiwicmVwbGFjZV9hbGxfYXNzb2MiLCJ0YmwiLCJmb3VuZCIsImZvdW5kJDAiLCJmIiwieHMkMCIsIngkMSIsIngiLCJmeCIsInhzIiwieCQwIiwiZngkMCIsImUiLCJqJDEiLCJ3aXRoJDIiLCJwYXR0ZXJuJDEiLCJyIiwid2l0aCQxIiwicGF0dGVybiQwIiwiaiQwIiwib2ZfbGlzdCIsImwiLCJ0b19saXN0IiwiaSQxIiwiYWNjJDAiLCJvZl9hcnJheSIsImEiLCJieXRlcyIsInRvX2FycmF5IiwiY3V0Iiwic2VwX21heCIsInNfbWF4IiwiayIsImxlZnRfZW5kIiwicmlnaHRfc3RhcnQiLCJyY3V0Iiwic2VwX3N0YXJ0IiwiY2hvcF9wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXhfbCIsInN0cmluZ19sIiwiZHJvcCIsInRha2UiLCJjcmVhdGUiLCJzaXplIiwiZW1wdHkiLCJsZW5ndGgiLCJzdWIiLCJpbnZhbGlkX2JvdW5kcyIsIm9wIiwiYnVmZmVyX2xlbiIsIm9mZiIsImxlbiIsIm1lc3NhZ2UiLCJpbnZhbGlkX2JvdW5kc19ibGl0Iiwic3JjX2xlbiIsInNyY19vZmYiLCJkc3RfbGVuIiwiZHN0X29mZiIsImludmFsaWRfYm91bmRzX21lbWNtcCIsImJ1ZjFfbGVuIiwiYnVmMV9vZmYiLCJidWYyX2xlbiIsImJ1ZjJfb2ZmIiwiY29weSIsInQiLCJkc3QiLCJzdWJzdHJpbmciLCJiIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwicyIsImJsaXQiLCJzcmMiLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2J5dGVzIiwiYmxpdF90b19ieXRlcyIsIm1lbWNtcCIsImJ1ZjEiLCJidWYyIiwibWVtY21wX3N0cmluZyIsIm1lbWNociIsImJ1ZiIsImJ1Zl9vZmYiLCJjaHIiLCJidWZfbGVuIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzE2IiwiYnMiLCJpIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzY0IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQiLCJ4Iiwic2V0X2ludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDMyX2xlIiwic2V0X2ludDY0X2JlIiwic2V0X2ludDY0X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwJDAiLCJnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQ2NF9iZSIsImdldF9pbnQ2NF9sZSIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCIsInVuc2FmZV9zZXRfaW50MTZfYmUiLCJ1bnNhZmVfc2V0X2ludDE2X2xlIiwidW5zYWZlX3NldF9pbnQzMl9iZSIsInVuc2FmZV9zZXRfaW50MzJfbGUiLCJ1bnNhZmVfc2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDE2X2xlIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQzMl9sZSIsInVuc2FmZV9nZXRfaW50NjRfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwic3RhdGVfdG9fb3B0aW9uIiwieCIsInYiLCJmYWlsX3RvX3N0cmluZyIsIm1hcmtzIiwiZXJyIiwic3RhdGVfdG9fcmVzdWx0IiwiY3JlYXRlIiwiYnVmZmVyIiwib2ZmIiwibGVuIiwiY29tbWl0dGVkX2J5dGVzIiwibGVuZ3RoIiwidCIsImNsaWVudF9jb21taXR0ZWRfYnl0ZXMiLCJwYXJzZXJfY29tbWl0dGVkX2J5dGVzIiwiYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQiLCJwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMiLCJpbnZhcmlhbnQiLCJvZmZzZXRfaW5fYnVmZmVyIiwicG9zIiwiYXBwbHkiLCJmIiwidW5zYWZlX2dldF9jaGFyIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwidW5zYWZlX2dldF9pbnQxNl9iZSIsInVuc2FmZV9nZXRfaW50MzJfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwiY291bnRfd2hpbGUiLCJpIiwibGltaXQiLCJjb21taXQiLCJmYWlsX2siLCJpbnB1dCIsIm1zZyIsInN1Y2NlZWRfayIsInRvX2V4cG9ydGVkX3N0YXRlIiwiY29udGludWUkMCIsImNvbW1pdHRlZCIsImJzIiwibW9yZSIsIngkMCIsInMiLCJzbCIsImkkMCIsInBhcnNlIiwicCIsInBhcnNlX2JpZ3N0cmluZyIsImlucHV0JDAiLCJyZXR1cm4kMCIsImZhaWwiLCJzdWNjIiwic3ltYm9sX2JpbmQiLCJzdWNjJDAiLCJzeW1ib2xfbWFwIiwic3ltYm9sIiwibSIsInN5bWJvbCQwIiwic3VjYzAiLCJpbnB1dDAiLCJwb3MwIiwibW9yZTAiLCJzdWNjMSIsImlucHV0MSIsInBvczEiLCJtb3JlMSIsImxpZnQiLCJsaWZ0MiIsIm0xIiwibTIiLCJzdWNjMiIsImlucHV0MiIsInBvczIiLCJtb3JlMiIsImxpZnQzIiwibTMiLCJzdWNjMyIsImlucHV0MyIsInBvczMiLCJtb3JlMyIsImxpZnQ0IiwibTQiLCJzdWNjNCIsImlucHV0NCIsInBvczQiLCJtb3JlNCIsInN5bWJvbCQxIiwiYSIsImIiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwibWFyayIsImZhaWwkMCIsInN5bWJvbCQ0IiwicSIsInBvcyQwIiwibW9yZSQwIiwicmV0dXJuJDEiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsImxpZnQyJDAiLCJsaWZ0MyQwIiwibGlmdDQkMCIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJvZl9iaWdzdHJpbmciLCJidWYiLCJ3cml0YWJsZV9zcGFjZSIsImVuc3VyZSIsInRvX2NvcHkiLCJvbGRfbGVuIiwibmV3X2xlbiIsInNwYWNlIiwibmV3X2J1ZiIsIndyaXRlX3BvcyIsImZlZWRfc3RyaW5nIiwic3RyIiwiZmVlZF9iaWdzdHJpbmciLCJmZWVkX2lucHV0Iiwic2hpZnQiLCJuIiwiZm9yX3JlYWRpbmciLCJ1bmNvbnN1bWVkIiwib2ZfdW5jb25zdW1lZCIsImZyb21fdW5idWZmZXJlZF9zdGF0ZSIsImJ1ZmZlcmluZyIsImNvbnN1bWVkIiwiY29uc3VtZWQkMCIsInVuY29uc3VtZWQkMCIsInBhcnNlJDAiLCJpbml0aWFsX2J1ZmZlcl9zaXplIiwiZmVlZCIsInN0YXRlIiwiayIsImJ1ZmZlcmluZyQwIiwic3RhdGVfdG9fb3B0aW9uJDAiLCJzdGF0ZV90b19yZXN1bHQkMCIsInN0YXRlX3RvX3VuY29uc3VtZWQiLCJwcm9tcHQiLCJkZW1hbmRfaW5wdXQiLCJlbnN1cmVfc3VzcGVuZGVkIiwiZ28iLCJ1bnNhZmVfYXBwbHkiLCJhdF9lbmRfb2ZfaW5wdXQiLCJlbmRfb2ZfaW5wdXQiLCJhZHZhbmNlIiwiYXZhaWxhYmxlIiwidW5zYWZlX2xvb2thaGVhZCIsInBlZWtfY2hhciIsInBlZWtfY2hhcl9mYWlsIiwic2F0aXNmeSIsImMiLCJjaGFyJDAiLCJub3RfY2hhciIsImMkMCIsImFueV9jaGFyIiwiaW50OCIsInAkMCIsImFueV91aW50OCIsInAkMSIsImFueV9pbnQ4Iiwic2tpcCIsImluaXQiLCJ3aXRoX2J1ZmZlciIsImlucHV0X2xlbiIsImluaXQkMCIsImNvdW50X3doaWxlMSIsInN1Y2MkMSIsImZhaWwkMSIsInN0cmluZyIsImYkMCIsImUiLCJzdHJpbmckMCIsInN0cmluZ19jaSIsInNraXBfd2hpbGUiLCJ0YWtlIiwibiQwIiwidGFrZV9iaWdzdHJpbmciLCJ0YWtlX2JpZ3N0cmluZ193aGlsZSIsInRha2VfYmlnc3RyaW5nX3doaWxlMSIsInRha2VfYmlnc3RyaW5nX3RpbGwiLCJwZWVrX3N0cmluZyIsInRha2Vfd2hpbGUiLCJ0YWtlX3doaWxlMSIsInRha2VfdGlsbCIsImNob2ljZSIsInBzIiwiZmFpbHVyZV9tc2ciLCJmaXhfZGlyZWN0IiwiciIsImZpeF9sYXp5IiwibWF4X3N0ZXBzIiwic3RlcHMiLCJmaXgiLCJvcHRpb24iLCJjb25zIiwieHMiLCJsaXN0IiwicHMkMCIsImNvdW50IiwibG9vcCIsIm1hbnkiLCJtYW55MSIsIm1hbnlfdGlsbCIsInNlcF9ieTEiLCJzZXBfYnkiLCJza2lwX21hbnkiLCJza2lwX21hbnkxIiwiZW5kX29mX2xpbmUiLCJzY2FuIiwic3RhdGUkMCIsInBhcnNlciIsInNjYW4kMCIsInNjYW5fc3RhdGUiLCJzY2FuX3N0cmluZyIsImNvbnN1bWVfd2l0aCIsImNvbnN1bWVkX2JpZ3N0cmluZyIsImJvdGgiLCJtYXAiLCJiaW5kIiwibWFwMiIsIm1hcDMiLCJtYXA0IiwiZCIsImludDE2IiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJ4IiwieCQwIiwiY3N0JDE1IiwiY3N0JDEzIiwiY3N0JDEyIiwiY3N0JDAiLCJpdGVyX2NvbmNhdCIsImZuIiwic2VwIiwiYnVmIiwibGFzdCIsInJlc3QiLCJjb21wYXJlX29wdCIsImMiLCJ0JDAiLCJ0IiwiYSIsImIiLCJjb21wYXJlX2xpc3QiLCJmIiwidCQyIiwidCQxIiwieHMiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwidXNlcmluZm8iLCJob3N0IiwicXVlcnlfa2V5IiwicXVlcnlfdmFsdWUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJ4JDEiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfaG9zdCIsImgxIiwiaDIiLCJpcDIiLCJpcDEiLCJpcDIkMCIsImlwMSQwIiwiaDIkMCIsImgxJDAiLCJjb21wYXJlJDAiLCJjJDIiLCJjJDMiLCJjJDQiLCJrdmwkMCIsImt2bCIsInJhdyIsInJhdyQwIiwiYyQxIiwidmwiLCJ2bCQwIiwiayQwIiwiZXF1YWwiLCJ1bmNhc3Rfb3B0Iiwibm9ybWFsaXplIiwic2NoZW0iLCJpbml0IiwiaG9zdCQwIiwiaG9zdCQxIiwidG9fc3RyaW5nIiwidXJpIiwiYWRkX3BjdF9zdHJpbmciLCJmaXJzdF9zZWdtZW50IiwieCQyIiwicSIsImdldF9kZWNvZGVkX29wdCIsIndpdGhfc2NoZW1lIiwiaCQwIiwiaG9zdF93aXRoX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJ3aXRoX3VzZXJpbmZvIiwidXNlcmluZm8kMCIsInVzZXIiLCJwYXNzd29yZCIsInBhc3MiLCJ3aXRoX3Bhc3N3b3JkIiwicmVzdWx0Iiwid2l0aF9wb3J0Iiwid2l0aF9wYXRoIiwicGF0aCQwIiwid2l0aF9mcmFnbWVudCIsImZyYWciLCJxdWVyeSIsInZlcmJhdGltX3F1ZXJ5IiwiZ2V0X3F1ZXJ5X3BhcmFtIiwiZ2V0X3F1ZXJ5X3BhcmFtJDAiLCJ3aXRoX3F1ZXJ5IiwicV9zIiwid2l0aF9xdWVyeSQwIiwiYWRkX3F1ZXJ5X3BhcmFtIiwiYWRkX3F1ZXJ5X3BhcmFtJDAiLCJhZGRfcXVlcnlfcGFyYW1zIiwiYWRkX3F1ZXJ5X3BhcmFtcyQwIiwicmVtb3ZlX3F1ZXJ5X3BhcmFtIiwicGF0aF9hbmRfcXVlcnkiLCJtYXRjaCIsInNjaGVtZSQwIiwicmVzb2x2ZSIsImJhc2UiLCJzY2hlbWUkMSIsInNjaGVtJDAiLCJwYXRoX3N0ciIsInJlbHBhdGgiLCJicGF0aCIsImJob3N0IiwicmJwYXRoIiwiY2Fub25pY2FsaXplIiwidXJpJDAiLCJwcCIsInBwZiIsInBwX2h1bSIsInN0cmluZ19vZl9jaGFyIiwic3RyaW5nX29mX2NoYXJfbGlzdCIsImNoYXJzIiwiaXNfZGlnaXQiLCJoZXhfZGlnaXQiLCJoZXhhZGVjaW1hbCIsImNfZG90IiwiY19hdCIsImNfY29sb24iLCJkZWNfb2N0ZXQiLCJudW0iLCJpcHY0X2FkZHJlc3MiLCJ0aHJlZSIsIm9uZSIsImFmdGVyX2RvdWJsZV9jb2xvbiIsImRvdWJsZV9jb2xvbiIsImNvdW50IiwiZmlsbGVyX2xlbmd0aCIsInBhcnQiLCJoZXhfcGFydCIsInNwbGl0X3dpdGgiLCJ0cyIsInpzIiwiZm9ybWF0X2FkZHIiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJiZWZvcmVfZG91YmxlX2NvbG9uIiwiYmVmb3JlIiwicmVzIiwiaXB2NiIsImlwdjZfYWRkcmVzcyIsInBjdF9lbmNvZGVkIiwicGN0IiwiZGlnaXRzIiwic3ViX2RlbGltcyQwIiwidW5yZXNlcnZlZCIsInJlZ19uYW1lIiwicG9ydCQwIiwiZGVjb2RlZCIsImF1dGhvcml0eSIsInF1ZXJ5JDAiLCJmcmFnbWVudCQwIiwidXJpX3JlZmVyZW5jZSIsInVyaV9yZWZlcmVuY2UkMCIsImRlY29kZV9ob3N0IiwicGFyc2VkIiwicGFyc2VkJDAiLCJtYWtlIiwicGF0aCQxIiwid2l0aF9ob3N0Iiwid2l0aF91cmkiLCJ3aXRoJDAiLCJvIiwib2Zfc3RyaW5nIiwibGV0JDAiLCJ0b191cmkiLCJvZl91cmkiLCJ1bnN1cHBvcnRlZF9zY2hlbWUiLCJvZl9zdHJpbmckMCIsImVycm9yIiwidG9fc3RyaW5nJDAiLCJtYWtlJDAiLCJob3N0JDIiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxOCIsImRlZmF1bHRfMDM0IiwiZXJyb3Jfc291cmNlXzAyNyIsImRlZmF1bHRfMDYyIiwiY29tcG9uZW50X29mX3NleHAiLCJzZXhwXzAxNyIsImF0b21fMDAyIiwic2V4cF9hcmdzXzAwNSIsImF0b21fMDAyJDAiLCJhcmcwXzAxNSIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJyZXMyXzAxMyIsInJlczBfMDE2Iiwic2V4cF9vZl9jb21wb25lbnQiLCJ2XzAxOSIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJhcmcwXzAyMCIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJyZXMyXzAyNSIsImRlZmF1bHRfMDI4IiwiZGVmYXVsdF8wMzUiLCJkZWZhdWx0XzAzNiIsImRlZmF1bHRfMDM3IiwiZGVmYXVsdF8wMzgiLCJkZWZhdWx0XzA0MiIsImRlZmF1bHRfMDQ3IiwiZGVmYXVsdF8wNTIiLCJkZWZhdWx0XzA1NyIsImRlZmF1bHRfMDc1IiwidF9vZl9zZXhwIiwieF8wMzkiLCJzZXhwXzAzMyIsImFyZzFfMDMwIiwiYXJnMF8wMjkiLCJyZXMwXzAzMSIsInJlczFfMDMyIiwidCIsImZyYWdtZW50IiwicXVlcnkiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJ1c2VyaW5mbyIsInNjaGVtZSIsInNleHBfb2ZfdCIsImZyYWdtZW50XzA3NiIsInF1ZXJ5XzA2NyIsInBhdGhfMDYzIiwicG9ydF8wNTgiLCJob3N0XzA1MyIsInVzZXJpbmZvXzA0OCIsInNjaGVtZV8wNDMiLCJibmRzXzA0MCIsImFyZ18wNzgiLCJibmRzXzA0MCQwIiwiYm5kXzA3NyIsImJuZHNfMDQwJDEiLCJhcmdfMDczIiwiYXJnMV8wNjkiLCJhcmcwXzA2OCIsInJlczBfMDcwIiwicmVzMV8wNzEiLCJibmRfMDcyIiwiYXJnXzA2NSIsImJuZHNfMDQwJDIiLCJibmRfMDY0IiwiYXJnXzA2MCIsImJuZHNfMDQwJDMiLCJibmRfMDU5IiwiYXJnXzA1NSIsImJuZHNfMDQwJDQiLCJibmRfMDU0IiwiYXJnXzA1MCIsImJuZHNfMDQwJDUiLCJibmRfMDQ5IiwiYXJnXzA0NSIsImJuZHNfMDQwJDYiLCJibmRfMDQ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJpc192YWxpZF9maWVsZF9uYW1lIiwic2VlbiIsIm5hbWUiLCJhbnlfb2Zfc2V4cCIsInMiLCJsaXN0JDAiLCJ2JDAiLCJuYW1lJDEiLCJzZWVuJDIiLCJyZXZfYWNjIiwibGlzdCIsInJlc3QiLCJyZXZfYWNjJDAiLCJzZWVuJDAiLCJyZXN0JDAiLCJ2IiwibmFtZSQwIiwicmV2X2FjYyQxIiwic2VlbiQxIiwibCIsImxvZ19zIiwic2V4cCIsImxvZ19zX2FzX3N0cmluZyIsInNleHBfb2ZfdCIsImZpZWxkMl8wMTYiLCJmaWVsZDFfMDE0IiwiYXJnXzAxNyIsImJuZHNfMDEzIiwic29tZV9uYW1lXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwNCIsImFyZ18wMTUiLCJibmRzXzAxMyQwIiwidG9fc3RyaW5nIiwic2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzIiwieF8wMjIiLCJpIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsInJlczBfMDIwIiwicmVzMV8wMjEiLCJjb21wYXJlX2Nsb3NlX2V2ZW50X2NvZGUiLCJzZXhwX29mX2Nsb3NlX2V2ZW50X2NvZGUiLCJhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImNvbXBhcmUiLCJhXzAwNCIsImJfMDA1IiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhY2MiLCJsJDAiLCJlbnVtZXJhdGVfMDExIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsImwkMiIsImVudW1lcmF0ZV8wMTAiLCJhY2MkMiIsImFsbCIsIm9mX2ludCIsImNvZGUiLCJ0b19pbnQiLCJjb2RlJDAiLCJ4XzAzMSIsInhfMDMwIiwibm9ybWFsX2Nsb3N1cmUiLCJjbGllbnQiLCJoZWFydGJlYXRfY29uZmlnIiwiZGVzY3JpcHRpb24iLCJpbXBsZW1lbnRhdGlvbnMiLCJ1cmkiLCJzY2hlbWUiLCJwb3J0IiwicG9ydCQwIiwiaG9zdCIsIm1hdGNoJDEiLCJyZXMiLCJoIiwiZGVzY3JpcHRpb24kMCIsImZyb21fc2VydmVyX3ciLCJmcm9tX3NlcnZlcl9yIiwidG9fc2VydmVyX3ciLCJ0b19zZXJ2ZXJfciIsImVycm9yIiwidHJhbnNwb3J0IiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImNvbm5lY3Rpb24iLCJleG4iLCJpbXBsZW1lbnRhdGlvbnMkMCIsImV4biQxIiwiZXhuJDAiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQiLCJjbGllbnRfZXhuIiwiY3JlYXRlX2Zyb21fdXJpIiwiZXF1YWwkMCIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0Iiwic2V4cF9vZl90JDEiLCJ4XzAwNyIsImNyZWF0ZV9mcm9tX3VyaV9vcHRpb24iLCJtZXRob2Rfc3RyaW5nJDAiLCJyZXF1ZXN0Iiwib25fcHJvZ3Jlc3MiLCJvbl91cGxvYWRfcHJvZ3Jlc3MiLCJ1cmwiLCJyZXNwb25zZV90eXBlIiwibWV0aG9kX3dpdGhfYXJncyIsImhlYWRlcnMiLCJhcmdzIiwibWV0aG9kX3N0cmluZyQxIiwidXJsJDAiLCJ2YWx1ZSIsInJlc3BvbnNlIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJjb250ZW50IiwiZ2V0X2hlYWRlciIsImJvZHkiLCJib2R5JDAiLCJnZXQiLCJhcmd1bWVudHMkMCIsInJlc3AiLCJwb3N0IiwicmVhZHlfc3RhdGVfY2hhbmdlIiwiY29tcGxldGUiLCJzbGVlcCIsImQiLCJ5aWVsZCQwIiwiZXh0cmFjdF9qc19lcnJvciIsIm1zZyIsImpzX2Vycm9yIiwibWVzc2FnZXMiLCJqc19lcnJvciQwIiwicHJldHR5X3ByaW50X2V4Y2VwdGlvbiIsImVyciIsImNsYXNzaWZpY2F0aW9uIiwiZXJyJDIiLCJlcnIkMCIsImV4biQyIiwiaGQiLCJtZXNzYWdlIiwic3RhdGUiLCJ0aW1lb3V0cyIsInJ1bl9hZnRlciIsImYiLCJtcyIsImxvb3AiLCJ0IiwibmV4dF93YWtldXAiLCJuZXh0Iiwibm93IiwiZF9tcyQwIiwiZF9tcyIsImF0IiwicnVuX3RpbWVvdXQiLCJydW4iLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0X2NoaWxkX2luZGV4JDAiLCJyaWdodCIsImxlZnRfaXNfbm9uZSIsInJpZ2h0X2lzX25vbmUiLCJjcmVhdGVfZXhuIiwibnVtX2xlYXZlcyIsInJlZHVjZSIsIm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCIsInZhbGlkYXRlX2luZGV4IiwibGVuZ3RoIiwic2V0X2V4biIsImNoaWxkX2luZGV4IiwicGFyZW50IiwiZ2V0X2V4biIsInhfMDAyIiwiY29tcHV0ZV9leG4iLCJzZXhwX29mX3QiLCJzdGVwcyIsInIiLCJpbml0Iiwic2V4cF9vZl90JDAiLCJvZl9hXzAwMSIsInN0ZXBzXzAwNSIsImluaXRfMDAzIiwiYXJnXzAwNiIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidmFsdWUiLCJ0JDAiLCJhdCIsInN0ZXBzJDEiLCJpbml0JDEiLCJzdGVwcyQwIiwiaW5pdCQwIiwidCIsImNvbnN0YW50IiwiY3JlYXRlX2V4biIsInRpbWUyIiwidGltZTEiLCJ4XzAxMSIsImNyZWF0ZV9mcm9tX3NlcXVlbmNlIiwiY3JlYXRlIiwibGVuIiwibGVuZ3RoIiwidCIsInNldCIsInNldF9leG4iLCJpIiwieCIsImdldCIsImlzX3NvbWUiLCJpc19ub25lIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpdGVyIiwiZiIsInYiLCJpdGVyaSIsImJsaXQiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNyZWF0ZSIsImluZGV4IiwiZ2V0IiwidCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJzZXQiLCJibG9jayIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJrZXlzX3dpdGhfdW51c2VkX2RhdGFfMDA2IiwiZW50cnlfYnlfa2V5XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYXJnXzAwNSIsImJuZHNfMDAzJDEiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJjbGVhbnVwIiwicmVwbGFjZSIsImFkZF9leG4iLCJ4XzAxMCIsImZpbmQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsInYiLCJzZXhwX29mX3QiLCJjb25jYXQiLCJ0YWciLCJhcmcwXzAwMSIsImFyZzFfMDAyIiwic2V4cF9vZl9hIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsInJlYWxsb2MiLCJ0IiwibGVuIiwiYSIsIm5ld190IiwicmVhbGxvYyQwIiwicmVzMF8wMDUiLCJyZXMwXzAwNyIsImludmFyaWFudCIsInhfMDA5IiwiY3JlYXRlIiwiZiIsIm9mX2NvbXBhcmUiLCJvZl9lcXVhbCIsInBvbHlfZXF1YWwiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwicmVyYWlzZV93aXRoX21lc3NhZ2UiLCJtc2ciLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsInhfMDExIiwiY2hlY2siLCJ3YXRjaF9mdW4iLCJ0JDAiLCJzZXRfYXRfZnVuIiwidmFsdWVfZnVuIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsInhfMDI4IiwiZm9sZF92YWx1ZV9mdW4iLCJnb3QiLCJleHBlY3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInVwZGF0ZSQwIiwiZl9pbnZlcnNlIiwidXBkYXRlIiwiY29tcHV0ZSIsInJlc3VsdCIsImZvcmNlX2Z1bGxfY29tcHV0ZSIsImNoaWxkX2NoYW5nZWQiLCJ4XzAzMSIsImNoaWxkX2luZGV4Iiwib2xkX3ZhbHVlX29wdCIsImNoaWxkX2F0X2luZGV4IiwieF8wMDEiLCJudWxsJDAiLCJhbGFybV92YWx1ZSIsInNldF9hbGFybV92YWx1ZSIsImFsYXJtIiwic2V0X2FsYXJtIiwiYWxhcm1fdmFsdWUkMCIsImFsYXJtJDAiLCJtYWluXzAwMyIsImNoaWxkXzAwNSIsImV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fYyIsInZhbHVlXzAwOSIsInVwY29taW5nX3N0ZXBzXzAxMSIsImFsYXJtXzAxNyIsImFsYXJtX3ZhbHVlXzAxOSIsImNsb2NrXzAyMSIsImFyZ18wMTgiLCJhcmdfMDEyIiwiYXJnMV8wMTQiLCJyZXMxXzAxNiIsImJuZHNfMDAyJDMiLCJibmRzXzAwMiQ0IiwiYm5kc18wMDIkNSIsImJuZHNfMDAyJDYiLCJ4XzAyMyIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsImFkdmFuY2UiLCJ0byIsInN0ZXBzJDAiLCJhMSQwIiwiYTEiLCJzdGVwcyIsInN0ZXBzMiIsImEyIiwic3RlcF9hdCIsIm9mX2FjY18wMDIiLCJjaGlsZHJlbl8wMDgiLCJpbml0XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInhfMDEwIiwiYXRfMDA0IiwibWFpbl8wMDIiLCJhbGFybV8wMDYiLCJjbG9ja18wMDgiLCJibmRzXzAwMSQxIiwiYm5kc18wMDEkMiIsImludGVydmFsIiwiaW50ZXJ2YWwkMCIsImludGVydmFsXzAwNiIsImJhc2VfMDA0IiwiYWxhcm1fMDA4IiwiY2xvY2tfMDEwIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJpbnRlcnZhbF9mdW4iLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJzZXRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwicmhzX3Njb3BlIiwic2V0X3Joc19zY29wZSIsImxoc19jaGFuZ2UiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMkMCIsInJoc19zY29wZSQwIiwibGhzX2NoYW5nZSQwIiwib2ZfYl8wMDIiLCJtYWluXzAwNCIsImxoc19jaGFuZ2VfMDEwIiwibGhzXzAwOCIsInJoc18wMTIiLCJyaHNfc2NvcGVfMDE0IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXzAxNiIsImJuZHNfMDAzJDIiLCJibmRzXzAwMyQzIiwiYm5kc18wMDMkNCIsImJuZHNfMDAzJDUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsInhfMDE4IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzX2Z1biIsIm5vZGUiLCJyaHNfc2NvcGVfZnVuIiwibGhzX2NoYW5nZV9mdW4iLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsInhfMDE1IiwiY3VycmVudF9icmFuY2hfZnVuIiwidGVzdF9jaGFuZ2VfZnVuIiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsInhfMDEzIiwiYmVmb3JlX2Z1biIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiaXRlcmlfY2hpbGRyZW4iLCJyaHMiLCJpJDAiLCJ0ZXN0IiwibGhzIiwicmhzJDAiLCJub2RlMCIsImNoaWxkJDAiLCJjaGlsZHJlbiQxIiwiaSQxIiwibm9kZTEiLCJub2RlMCQwIiwibm9kZTIiLCJub2RlMSQwIiwibm9kZTAkMSIsIm5vZGUzIiwibm9kZTIkMCIsIm5vZGUxJDEiLCJub2RlMCQyIiwibm9kZTQiLCJub2RlMyQwIiwibm9kZTIkMSIsIm5vZGUxJDIiLCJub2RlMCQzIiwibm9kZTUiLCJub2RlNCQwIiwibm9kZTMkMSIsIm5vZGUyJDIiLCJub2RlMSQzIiwibm9kZTAkNCIsIm5vZGU2Iiwibm9kZTUkMCIsIm5vZGU0JDEiLCJub2RlMyQyIiwibm9kZTIkMyIsIm5vZGUxJDQiLCJub2RlMCQ1Iiwibm9kZTciLCJub2RlNiQwIiwibm9kZTUkMSIsIm5vZGU0JDIiLCJub2RlMyQzIiwibm9kZTIkNCIsIm5vZGUxJDUiLCJub2RlMCQ2Iiwibm9kZTgiLCJub2RlNyQwIiwibm9kZTYkMSIsIm5vZGU1JDIiLCJub2RlNCQzIiwibm9kZTMkNCIsIm5vZGUyJDUiLCJub2RlMSQ2Iiwibm9kZTAkNyIsIm5vZGU5Iiwibm9kZTgkMCIsIm5vZGU3JDEiLCJub2RlNiQyIiwibm9kZTUkMyIsIm5vZGU0JDQiLCJub2RlMyQ1Iiwibm9kZTIkNiIsIm5vZGUxJDciLCJub2RlMCQ4Iiwibm9kZTEwIiwibm9kZTkkMCIsIm5vZGU4JDEiLCJub2RlNyQyIiwibm9kZTYkMyIsIm5vZGU1JDQiLCJub2RlNCQ1Iiwibm9kZTMkNiIsIm5vZGUyJDciLCJub2RlMSQ4Iiwibm9kZTAkOSIsIm5vZGUxMSIsIm5vZGUxMCQwIiwibm9kZTkkMSIsIm5vZGU4JDIiLCJub2RlNyQzIiwibm9kZTYkNCIsIm5vZGU1JDUiLCJub2RlNCQ2Iiwibm9kZTMkNyIsIm5vZGUyJDgiLCJub2RlMSQ5Iiwibm9kZTAkMTAiLCJub2RlMTIiLCJub2RlMTEkMCIsIm5vZGUxMCQxIiwibm9kZTkkMiIsIm5vZGU4JDMiLCJub2RlNyQ0Iiwibm9kZTYkNSIsIm5vZGU1JDYiLCJub2RlNCQ3Iiwibm9kZTMkOCIsIm5vZGUyJDkiLCJub2RlMSQxMCIsIm5vZGUwJDExIiwibm9kZTEzIiwibm9kZTEyJDAiLCJub2RlMTEkMSIsIm5vZGUxMCQyIiwibm9kZTkkMyIsIm5vZGU4JDQiLCJub2RlNyQ1Iiwibm9kZTYkNiIsIm5vZGU1JDciLCJub2RlNCQ4Iiwibm9kZTMkOSIsIm5vZGUyJDEwIiwibm9kZTEkMTEiLCJub2RlMCQxMiIsIm5vZGUxNCIsIm5vZGUxMyQwIiwibm9kZTEyJDEiLCJub2RlMTEkMiIsIm5vZGUxMCQzIiwibm9kZTkkNCIsIm5vZGU4JDUiLCJub2RlNyQ2Iiwibm9kZTYkNyIsIm5vZGU1JDgiLCJub2RlNCQ5Iiwibm9kZTMkMTAiLCJub2RlMiQxMSIsIm5vZGUxJDEyIiwibm9kZTAkMTMiLCJzbG93X2dldF9jaGlsZCIsImluZGV4IiwiYXJnMV8zMDYiLCJhcmcwXzMwNSIsInJlczBfMzA3IiwicmVzMV8zMDgiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW4iLCJzZXRfbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2EiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4iLCJzZXRfbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2EiLCJvYnNlcnZlcnMiLCJzZXRfb2JzZXJ2ZXJzIiwic2V0X29sZF92YWx1ZV9vcHQiLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWEiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsInNldF9oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfcHJldl9pbl9yZWNvbXB1dGVfaGVhcCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCIsInNldF9oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0IiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJzZXRfbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJjcmVhdGVkX2luIiwic2V0X2NyZWF0ZWRfaW4iLCJwYXJlbnQwIiwic2V0X3BhcmVudDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQiLCJzZXRfcGFyZW50MV9hbmRfYmV5b25kIiwibnVtX3BhcmVudHMiLCJzZXRfbnVtX3BhcmVudHMiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzIiwic2V0X251bV9vbl91cGRhdGVfaGFuZGxlcnMiLCJjaGFuZ2VkX2F0Iiwic2V0X2NoYW5nZWRfYXQiLCJjdXRvZmYiLCJzZXRfY3V0b2ZmIiwia2luZCIsInNldF9raW5kIiwidmFsdWVfb3B0Iiwic2V0X3ZhbHVlX29wdCIsInJlY29tcHV0ZWRfYXQiLCJzZXRfcmVjb21wdXRlZF9hdCIsImlkIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luJDAiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4kMCIsIm9ic2VydmVycyQwIiwib2xkX3ZhbHVlX29wdCQwIiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwJDAiLCJoZWlnaHQkMCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlJDAiLCJjcmVhdGVkX2luJDAiLCJwYXJlbnQwJDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQkMCIsIm51bV9wYXJlbnRzJDAiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJjaGFuZ2VkX2F0JDAiLCJjdXRvZmYkMCIsImtpbmQkMCIsInZhbHVlX29wdCQwIiwicmVjb21wdXRlZF9hdCQwIiwiaWQkMCIsInN0YXRlXzAwNSIsImlkXzAwMyIsInJlY29tcHV0ZWRfYXRfMDA3IiwidmFsdWVfb3B0XzAwOSIsImtpbmRfMDExIiwiY3V0b2ZmXzAxMyIsImNoYW5nZWRfYXRfMDE1IiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc18wMTciLCJudW1fcGFyZW50c18wMTkiLCJwYXJlbnQxX2FuZF9iZXlvbmRfMDIxIiwicGFyZW50MF8wMjMiLCJjcmVhdGVkX2luXzAyNSIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXzAyNyIsImhlaWdodF8wMjkiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBfMDMxIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF8wMzMiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwXzAzNSIsImhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXyIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8wMyIsIm9sZF92YWx1ZV9vcHRfMDQxIiwib2JzZXJ2ZXJzXzA0MyIsImlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aSIsIm9uX3VwZGF0ZV9oYW5kbGVyc18wNDciLCJmb3JjZV9uZWNlc3NhcnlfMDUzIiwidXNlcl9pbmZvXzA1NSIsImNyZWF0aW9uX2JhY2t0cmFjZV8wNTciLCJhcmdfMDU4IiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImFyZ18wNDgiLCJhcmdfMDQ2IiwiYXJnXzA0NCIsImFyZ18wNDIiLCJibmRzXzAwMiQ3IiwiYXJnXzA0MCIsImJuZHNfMDAyJDgiLCJhcmdfMDM4IiwiYm5kc18wMDIkOSIsImFyZ18wMzYiLCJibmRzXzAwMiQxMCIsImFyZ18wMzQiLCJibmRzXzAwMiQxMSIsImFyZ18wMzIiLCJibmRzXzAwMiQxMiIsImFyZ18wMzAiLCJibmRzXzAwMiQxMyIsImFyZ18wMjgiLCJibmRzXzAwMiQxNCIsImJuZHNfMDAyJDE1IiwiYm5kc18wMDIkMTYiLCJibmRzXzAwMiQxNyIsImJuZHNfMDAyJDE4IiwiYm5kc18wMDIkMTkiLCJibmRzXzAwMiQyMCIsImJuZHNfMDAyJDIxIiwiYm5kc18wMDIkMjIiLCJibmRzXzAwMiQyMyIsImJuZHNfMDAyJDI0IiwiYm5kc18wMDIkMjUiLCJibmRzXzAwMiQyNiIsInNhbWUiLCJ1c2VyX2luZm8iLCJvdGhlciIsInNldF91c2VyX2luZm8iLCJhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IiwiYXR0cnMiLCJlZGdlX2lzX3N0YWxlIiwicGFyZW50IiwiaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpIiwiaXNfc3RhbGUiLCJmb3JjZV9zdGFsZSIsImZvcmNlX3N0YWxlJDAiLCJuZWVkc190b19iZV9jb21wdXRlZCIsImlzX2luX3JlY29tcHV0ZV9oZWFwIiwiaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsImdldF9wYXJlbnQiLCJpdGVyaV9wYXJlbnRzIiwiaGFzX2NoaWxkIiwiaGFzIiwiaGFzX3BhcmVudCIsInBhcmVudCQwIiwic2hvdWxkX2JlX2ludmFsaWRhdGVkIiwibGhzJDAiLCJmb2xkX29ic2VydmVycyIsImFjIiwib2JzZXJ2ZXIiLCJ4XzA1OSIsInQxJDAiLCJhXzA2MCIsImJfMDYxIiwiYV8wNzAiLCJiXzA3MSIsInBhcmVudF9pbmRleCIsIngiLCJhXzA2OCIsImJfMDY5Iiwib2JzZXJ2ZXJzX2Z1biIsInN0YXRlIiwib2JzZXJ2aW5nIiwib2xkX3ZhbHVlX29wdF9mdW4iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfZnUiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldiIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJoZWlnaHRfZnVuIiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGVfZnVuIiwiY3JlYXRlZF9pbl9mdW4iLCJwYXJlbnQwX2Z1biIsImFfMDY2IiwiYl8wNjciLCJwYXJlbnQxX2FuZF9iZXlvbmRfZnVuIiwiYV8wNjQiLCJiXzA2NSIsIm51bV9wYXJlbnRzX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVycyIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwiZXRhIiwiYV8wNjIiLCJiXzA2MyIsImNoYW5nZWRfYXRfZnVuIiwiY3V0b2ZmX2Z1biIsImtpbmRfZnVuIiwidmFsdWVfb3B0X2Z1biIsInJlY29tcHV0ZWRfYXRfZnVuIiwiaWRfZnVuIiwidW5zYWZlX3ZhbHVlIiwidmFsdWVfZXhuIiwieF8wNzIiLCJnZXRfY3V0b2ZmIiwic2V0X2N1dG9mZiQwIiwiaXNfY29uc3QiLCJvbl91cGRhdGUiLCJvbl91cGRhdGVfaGFuZGxlciIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMiLCJyZXN0JDAiLCJvbl91cGRhdGVfaGFuZGxlciQwIiwiciQwIiwiciQxIiwicmVzdCIsInNldF9raW5kJDAiLCJtYXhfbnVtX3BhcmVudHMiLCJzZXRfcGFyZW50IiwibGluayIsImFkZF9wYXJlbnQiLCJuZXdfbWF4X251bV9wYXJlbnRzIiwibWF4X251bV9jaGlsZHJlbiIsIm5ld19tYXhfbnVtX2NoaWxkcmVuIiwicmVtb3ZlX3BhcmVudCIsImxhc3RfcGFyZW50X2luZGV4Iiwic3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCIsImNoaWxkMSIsImNoaWxkMiIsInQyJDAiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJ4XzAyMCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjIiLCJ4XzAyMSIsIm9uX3VwZGF0ZV9leG4iLCJ4XzAyNCIsInByZXYkMCIsIm5leHQkMCIsInhfMDI1IiwieF8wMDIiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwiZXJyb3Jfc291cmNlXzA3OSIsInNleHBfb2Zfc3RhdHVzIiwiYXJnMV8wMDQiLCJyZXMxXzAwNiIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiIsInNldF9leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdSIsImN1cnJlbnRseV9ydW5uaW5nX25vZGUiLCJzZXRfY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSQwIiwibWFrZV9jcmVhdG9yIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW4kMSIsImFjYyIsIm1hcCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsInJlY29yZCQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV8wMDgiLCJibmRzXzAwNyIsImJuZHNfMDA3JDAiLCJzZXhwX29mX3QkMSIsIm51bV92YXJfc2V0cyIsInNldF9udW1fdmFyX3NldHMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8iLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWQiLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWQiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJzZXRfbnVtX25vZGVzX2ludmFsaWRhdGVkIiwibnVtX25vZGVzX2NyZWF0ZWQiLCJzZXRfbnVtX25vZGVzX2NyZWF0ZWQiLCJudW1fbm9kZXNfY2hhbmdlZCIsInNldF9udW1fbm9kZXNfY2hhbmdlZCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkiLCJzZXRfbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2EiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UiLCJzZXRfa2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmEiLCJ3ZWFrX2hhc2h0YmxzIiwib25seV9pbl9kZWJ1ZyIsInNldF9vbmx5X2luX2RlYnVnIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24iLCJkaXNhbGxvd2VkX29ic2VydmVycyIsIm5ld19vYnNlcnZlcnMiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzIiwiYWxsX29ic2VydmVycyIsInNldF9hbGxfb2JzZXJ2ZXJzIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJzZXRfbnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSIsImFkanVzdF9oZWlnaHRzX2hlYXAiLCJjdXJyZW50X3Njb3BlIiwic2V0X2N1cnJlbnRfc2NvcGUiLCJzdGFiaWxpemF0aW9uX251bSIsInNldF9zdGFiaWxpemF0aW9uX251bSIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCIsInN0YXR1cyIsInNldF9zdGF0dXMiLCJudW1fdmFyX3NldHMkMCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQxIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDIiLCJudW1fbm9kZXNfcmVjb21wdXRlZCQwIiwibnVtX25vZGVzX2ludmFsaWRhdGVkJDAiLCJudW1fbm9kZXNfY3JlYXRlZCQwIiwibnVtX25vZGVzX2NoYW5nZWQkMCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkkMCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5JDAiLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlJDAiLCJ3ZWFrX2hhc2h0YmxzJDAiLCJvbmx5X2luX2RlYnVnJDAiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQwIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uJDAiLCJkaXNhbGxvd2VkX29ic2VydmVycyQwIiwibmV3X29ic2VydmVycyQwIiwiZmluYWxpemVkX29ic2VydmVycyQwIiwiYWxsX29ic2VydmVycyQwIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMkMCIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDAiLCJhZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJyZWNvbXB1dGVfaGVhcCQwIiwiY3VycmVudF9zY29wZSQwIiwic3RhYmlsaXphdGlvbl9udW0kMCIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQwIiwic3RhdHVzJDAiLCJtYWtlX2NyZWF0b3IkMCIsInN0YXR1c19mdW4iLCJzdGFiaWxpemF0aW9uX251bV9mdW4iLCJjdXJyZW50X3Njb3BlX2Z1biIsInJlY29tcHV0ZV9oZWFwX2Z1biIsImFkanVzdF9oZWlnaHRzX2hlYXBfZnVuIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZnVuIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZnVuIiwiYWxsX29ic2VydmVyc19mdW4iLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2Z1biIsIm5ld19vYnNlcnZlcnNfZnVuIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZnVuIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2Z1biIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uX2Z1biIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwib25seV9pbl9kZWJ1Z19mdW4iLCJ3ZWFrX2hhc2h0YmxzX2Z1biIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZiIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2Z1biIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnlfZiIsIm51bV9ub2Rlc19jaGFuZ2VkX2Z1biIsIm51bV9ub2Rlc19jcmVhdGVkX2Z1biIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZF9mdW4iLCJudW1fbm9kZXNfcmVjb21wdXRlZF9mdW4iLCJudW1fdmFyX3NldHNfZnVuIiwic3RhdHVzX2dlbiIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQxIiwiY29tcGlsZV9hY2MkMiIsInN0YWJpbGl6YXRpb25fbnVtX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJjdXJyZW50X3Njb3BlX2dlbiIsImNvbXBpbGVfYWNjJDQiLCJyZWNvbXB1dGVfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ1IiwiYWRqdXN0X2hlaWdodHNfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ2IiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZ2VuIiwiY29tcGlsZV9hY2MkNyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJhbGxfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDkiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEwIiwibmV3X29ic2VydmVyc19nZW4iLCJjb21waWxlX2FjYyQxMSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwib25seV9pbl9kZWJ1Z19nZW4iLCJjb21waWxlX2FjYyQxNiIsIndlYWtfaGFzaHRibHNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlX2ciLCJjb21waWxlX2FjYyQxOCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2dlbiIsImNvbXBpbGVfYWNjJDE5IiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9nIiwiY29tcGlsZV9hY2MkMjAiLCJudW1fbm9kZXNfY2hhbmdlZF9nZW4iLCJjb21waWxlX2FjYyQyMSIsIm51bV9ub2Rlc19jcmVhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIzIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjQiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMyIsImNvbXBpbGVfYWNjJDI1IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDQiLCJjb21waWxlX2FjYyQyNiIsIm51bV92YXJfc2V0c19nZW4iLCJjcmVhdGUkMSIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQyIiwic3RhdHVzXzAxNSIsInN0YWJpbGl6YXRpb25fbnVtXzAxOSIsImN1cnJlbnRfc2NvcGVfMDIxIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfMDI3IiwiYWRqdXN0X2hlaWdodHNfaGVhcF8wMjUiLCJyZWNvbXB1dGVfaGVhcF8wMjMiLCJudW1fYWN0aXZlX29ic2VydmVyc18wMjkiLCJhbGxfb2JzZXJ2ZXJzXzAzMSIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfMDQzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fMDQxIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXzAzOSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzXzAzNyIsIm5ld19vYnNlcnZlcnNfMDM1IiwiZmluYWxpemVkX29ic2VydmVyc18wMzMiLCJvbmx5X2luX2RlYnVnXzA0NSIsIndlYWtfaGFzaHRibHNfMDQ3Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV8wIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfMDUxIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV8wIiwibnVtX25vZGVzX2NoYW5nZWRfMDU1IiwibnVtX25vZGVzX2NyZWF0ZWRfMDU3IiwibnVtX25vZGVzX2ludmFsaWRhdGVkXzA1OSIsIm51bV9ub2Rlc19yZWNvbXB1dGVkXzA2MSIsIm51bV92YXJfc2V0c18wNjciLCJhcmdfMDY4IiwiYm5kc18wMTQiLCJhcmdfMDY2IiwiYm5kc18wMTQkMCIsImFyZ18wNjQiLCJibmRzXzAxNCQxIiwiYXJnXzA2MiIsImJuZHNfMDE0JDIiLCJhcmdfMDYwIiwiYm5kc18wMTQkMyIsImJuZHNfMDE0JDQiLCJibmRzXzAxNCQ1IiwiYm5kc18wMTQkNiIsImJuZHNfMDE0JDciLCJibmRzXzAxNCQ4IiwiYm5kc18wMTQkOSIsImJuZHNfMDE0JDEwIiwiYm5kc18wMTQkMTEiLCJibmRzXzAxNCQxMiIsImJuZHNfMDE0JDEzIiwiYm5kc18wMTQkMTQiLCJibmRzXzAxNCQxNSIsImJuZHNfMDE0JDE2IiwiYm5kc18wMTQkMTciLCJibmRzXzAxNCQxOCIsImJuZHNfMDE0JDE5IiwiYm5kc18wMTQkMjAiLCJibmRzXzAxNCQyMSIsImJuZHNfMDE0JDIyIiwiYm5kc18wMTQkMjMiLCJibmRzXzAxNCQyNCIsImJuZHNfMDE0JDI1IiwiZmlyZWRfYWxhcm1fdmFsdWVzIiwic2V0X2ZpcmVkX2FsYXJtX3ZhbHVlcyIsImhhbmRsZV9maXJlZCIsInRpbWluZ193aGVlbCIsImZpcmVkX2FsYXJtX3ZhbHVlcyQwIiwiaGFuZGxlX2ZpcmVkJDAiLCJub3ckMCIsInRpbWluZ193aGVlbCQwIiwibWFrZV9jcmVhdG9yJDEiLCJ0aW1pbmdfd2hlZWxfZnVuIiwibm93X2Z1biIsImhhbmRsZV9maXJlZF9mdW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZnVuIiwidGltaW5nX3doZWVsX2dlbiIsIm5vd19nZW4iLCJoYW5kbGVfZmlyZWRfZ2VuIiwiZmlyZWRfYWxhcm1fdmFsdWVzX2dlbiIsImNyZWF0ZSQyIiwibWFwJDMiLCJpdGVyJDMiLCJmb2xkJDMiLCJtYXBfcG9seSQxIiwiZm9yX2FsbCQzIiwiZXhpc3RzJDMiLCJ0b19saXN0JDMiLCJpdGVyJDQiLCJmb2xkJDQiLCJmb3JfYWxsJDQiLCJleGlzdHMkNCIsInRvX2xpc3QkNCIsIm1hcCQ0Iiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQxIiwic2V4cF9vZl90JDMiLCJub3dfMDcyIiwidGltaW5nX3doZWVsXzA3MCIsImZpcmVkX2FsYXJtX3ZhbHVlc18wNzYiLCJhcmdfMDc3IiwiYm5kc18wNjkiLCJhcmdfMDc1IiwiYm5kc18wNjkkMCIsImFyZ18wNzMiLCJibmRzXzA2OSQxIiwiYXJnXzA3MSIsImJuZHNfMDY5JDIiLCJpbnZhcmlhbnQkMSIsIm5vdyQxIiwiY2xvY2siLCJ0aW1pbmdfd2hlZWxfbGVuZ3RoIiwibnVtX3N0YWJpbGl6ZXMiLCJpdGVyX29ic2VydmVycyIsImRpcmVjdGx5X29ic2VydmVkIiwiaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyIsInRfb2Zfc2V4cCIsInhfMDg1Iiwic2V4cF8wODQiLCJhcmcxXzA4MSIsImFyZzBfMDgwIiwicmVzMF8wODIiLCJyZXMxXzA4MyIsInBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhciIsInNleHBfb2ZfdCQ0IiwibWF4X251bV9wYXJlbnRzXzA4NyIsImFyZ18wOTAiLCJhcmcxXzA5MiIsImFyZzBfMDkxIiwicmVzMF8wOTMiLCJyZXMxXzA5NCIsImJuZHNfMDg2IiwiYXJnXzA4OCIsImJuZHNfMDg2JDAiLCJzdGF0cyIsIm51bV9uZWNlc3Nhcnlfbm9kZXMiLCJtYXhfbnVtX3BhcmVudHMkMCIsIm51bV9ub2Rlc19ieV9udW1fcGFyZW50cyIsIm51bV9ub2RlcyIsImFtX3N0YWJpbGl6aW5nIiwicmFpc2VkX2V4biIsImludmFyaWFudCQyIiwiaW50ZXJuYWxfb2JzZXJ2ZXIiLCJ4XzA5NSIsInBhY2tlZCIsImVuc3VyZV9ub3Rfc3RhYmlsaXppbmciLCJhbGxvd19pbl91cGRhdGVfaGFuZGxlciIsImJhY2t0cmFjZSQwIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24kMSIsInJlbW92ZV9jaGlsZHJlbiIsInJlbW92ZV9jaGlsZCIsImNoZWNrX2lmX3VubmVjZXNzYXJ5IiwiYmVjYW1lX3VubmVjZXNzYXJ5IiwicCIsInUiLCJyZW1vdmVfYWxhcm0iLCJpbnZhbGlkYXRlX25vZGUiLCJpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmgiLCJyZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiZmlyc3Rfbm9kZV9vbl9yaHMiLCJuZXdfc2NvcGUiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSQxIiwiZXhwZXJ0IiwiYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oIiwid2FzX25lY2Vzc2FyeSIsInhfMDk2IiwiYmVjYW1lX25lY2Vzc2FyeSIsInJ1bl93aXRoX3Njb3BlIiwic2NvcGUiLCJzYXZlZCIsImV4biQwIiwid2l0aGluX3Njb3BlIiwiY2hhbmdlX2NoaWxkIiwib2xkX2NoaWxkIiwibmV3X2NoaWxkIiwib2xkX2NoaWxkJDAiLCJhZGRfYWxhcm0iLCJyZWNvbXB1dGUiLCJtYXliZV9jaGFuZ2VfdmFsdWUiLCJvbGRfcmhzIiwib2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsImNvcHlfY2hpbGQiLCJvbmx5X2ZyZWV6ZV93aGVuIiwiZWxzZSQwIiwidGhlbiIsImRlc2lyZWRfYnJhbmNoIiwibWFpbiQxIiwib2xkX3JocyQwIiwicmhzJDEiLCJyaHMkMiIsIm4xIiwiY2xvY2skMCIsImF0JDAiLCJjbG9jayQxIiwiY2hpbGQkMSIsInN0ZXBfZnVuY3Rpb24iLCJzdGVwX2Z1bmN0aW9uX3ZhbHVlIiwiYXQkMSIsIm4yIiwibjEkMCIsIm4zIiwibjIkMCIsIm4xJDEiLCJmJDIiLCJuNCIsIm4zJDAiLCJuMiQxIiwibjEkMiIsImYkMyIsIm41IiwibjQkMCIsIm4zJDEiLCJuMiQyIiwibjEkMyIsImYkNCIsIm42IiwibjUkMCIsIm40JDEiLCJuMyQyIiwibjIkMyIsIm4xJDQiLCJmJDUiLCJuNyIsIm42JDAiLCJuNSQxIiwibjQkMiIsIm4zJDMiLCJuMiQ0IiwibjEkNSIsImYkNiIsIm44IiwibjckMCIsIm42JDEiLCJuNSQyIiwibjQkMyIsIm4zJDQiLCJuMiQ1IiwibjEkNiIsImYkNyIsIm45IiwibjgkMCIsIm43JDEiLCJuNiQyIiwibjUkMyIsIm40JDQiLCJuMyQ1IiwibjIkNiIsIm4xJDciLCJmJDgiLCJuMTAiLCJuOSQwIiwibjgkMSIsIm43JDIiLCJuNiQzIiwibjUkNCIsIm40JDUiLCJuMyQ2IiwibjIkNyIsIm4xJDgiLCJmJDkiLCJuMTEiLCJuMTAkMCIsIm45JDEiLCJuOCQyIiwibjckMyIsIm42JDQiLCJuNSQ1IiwibjQkNiIsIm4zJDciLCJuMiQ4IiwibjEkOSIsImYkMTAiLCJuMTIiLCJuMTEkMCIsIm4xMCQxIiwibjkkMiIsIm44JDMiLCJuNyQ0IiwibjYkNSIsIm41JDYiLCJuNCQ3IiwibjMkOCIsIm4yJDkiLCJuMSQxMCIsImYkMTEiLCJuMTMiLCJuMTIkMCIsIm4xMSQxIiwibjEwJDIiLCJuOSQzIiwibjgkNCIsIm43JDUiLCJuNiQ2IiwibjUkNyIsIm40JDgiLCJuMyQ5IiwibjIkMTAiLCJuMSQxMSIsImYkMTIiLCJuMTQiLCJuMTMkMCIsIm4xMiQxIiwibjExJDIiLCJuMTAkMyIsIm45JDQiLCJuOCQ1IiwibjckNiIsIm42JDciLCJuNSQ4IiwibjQkOSIsIm4zJDEwIiwibjIkMTEiLCJuMSQxMiIsImYkMTMiLCJuMTUiLCJuMTQkMCIsIm4xMyQxIiwibjEyJDIiLCJuMTEkMyIsIm4xMCQ0IiwibjkkNSIsIm44JDYiLCJuNyQ3IiwibjYkOCIsIm41JDkiLCJuNCQxMCIsIm4zJDExIiwibjIkMTIiLCJuMSQxMyIsImYkMTQiLCJjaGlsZF9pbmRleCQwIiwidSQwIiwiY2FuX3JlY29tcHV0ZV9ub3ciLCJiIiwiaiIsInJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbiIsInhfMDk3IiwidW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSIsImRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMiLCJvYnNlcnZlcl9maW5hbGl6ZXIiLCJjcmVhdGVfb2JzZXJ2ZXIiLCJzaG91bGRfZmluYWxpemUiLCJhZGRfbmV3X29ic2VydmVycyIsIm9sZF9hbGxfb2JzZXJ2ZXJzIiwib2xkX29ic2VydmVycyIsIm9ic2VydmVyX3ZhbHVlX2V4biIsInhfMDk4Iiwib2JzZXJ2ZXJfdmFsdWUiLCJub2RlX29uX3VwZGF0ZSIsIm9ic2VydmVyX29uX3VwZGF0ZV9leG4iLCJzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyIsInNldF92YXIiLCJyZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMiLCJ3ZWFrX2hhc2h0YmwiLCJzdGFiaWxpemVfc3RhcnQiLCJzdGFiaWxpemVfZW5kIiwibWF0Y2gkMCIsIm5vZGVfdXBkYXRlJDAiLCJyYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiIsInJhaXNlZCIsInN0YWJpbGl6ZSIsInNleHBfb2ZfdCQ1IiwiZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIiwiY3JlYXRlX25vZGVfaW4iLCJjcmVhdGVfbm9kZSIsImNyZWF0ZV9ub2RlX3RvcCIsImNyZWF0ZV92YXIiLCJ1c2VfY3VycmVudF9zY29wZSIsImNvbnN0JDAiLCJtYXAkNSIsIm1hcDIiLCJib3RoIiwibWFwMyIsIm1hcDQiLCJtYXA1IiwibWFwNiIsIm1hcDciLCJtYXA4IiwibWFwOSIsIm1hcDEwIiwibWFwMTEiLCJtYXAxMiIsIm1hcDEzIiwibWFwMTQiLCJtYXAxNSIsInByZXNlcnZlX2N1dG9mZiIsImlucHV0Iiwib3V0cHV0IiwiZGVwZW5kX29uIiwibmVjZXNzYXJ5X2lmX2FsaXZlIiwiYmluZDIiLCJ2MSIsInYyIiwiYmluZDMiLCJ2MyIsImJpbmQ0IiwidjQiLCJpZiQwIiwibGF6eV9mcm9tX2Z1biIsImRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpeiIsIm1lbW9pemVfZnVuX2J5X2tleSIsImhhc2hhYmxlIiwicHJvamVjdF9rZXkiLCJpbml0aWFsX3NpemUiLCJ0YWJsZSIsImtleSIsImIkMCIsImFsbCIsIm9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCIsIm51bV9pbnZhbGlkIiwiYWNjdW0iLCJ4JDAiLCJmX2ludmVyc2UkMCIsImF0X2xlYXN0X2tfb2YiLCJib29sX3RvX2ludCIsIm51bV90cnVlIiwiZXhpc3RzJDUiLCJmb3JfYWxsJDUiLCJzdW0iLCJ6ZXJvIiwic3ViIiwib3B0X3N1bSIsInN1bV9pbnQiLCJzdW1fZmxvYXQiLCJzZXRfZnJlZXplIiwidGltZSIsImFmdGVyIiwic3BhbiIsIm5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IiwiYmFzZSIsInZhbHVlX2F0IiwiaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiIsImFkdmFuY2VfY2xvY2siLCJtYWluJDIiLCJjcmVhdGVfY2xvY2siLCJ0aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQiLCJjcmVhdGUkMyIsIkNvbmZpZyIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5IiwiZXhwZXJ0X2tpbmRfb2Zfbm9kZSIsInhfMDk5IiwiY3JlYXRlJDQiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biIsImN1cnJlbnQiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8iLCJ4XzEwMSIsInhfMTAwIiwiYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfJDAiLCJ4XzEwMyIsInhfMTAyIiwibWFrZV9zdGFsZSQwIiwiZV9vcHQiLCJpbnZhbGlkYXRlIiwiYWRkX2RlcGVuZGVuY3kiLCJkZXAiLCJyZW1vdmVfZGVwZW5kZW5jeSIsImVkZ2UiLCJlZGdlX2luZGV4IiwibGFzdF9lZGdlIiwibGFzdF9lZGdlX2luZGV4Iiwib25fY2hhbmdlIiwicmVkdWNlIiwicmVkdWNlciIsImxldmVsX2JpdHMiLCJjcmVhdGVfaW50ZXJuYWwiLCJkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCIsInNleHBfb2Zfc3RhdGVfd2l0bmVzcyIsIndpdGhpbiIsInBhY2siLCJyZXR1cm4kMCIsIm1hcDIkMCIsIm1hcDMkMCIsIm1hcDQkMCIsIm1hcDUkMCIsIm1hcDYkMCIsIm1hcDckMCIsIm1hcDgkMCIsIm1hcDkkMCIsIm1hcDEwJDAiLCJtYXAxMSQwIiwibWFwMTIkMCIsIm1hcDEzJDAiLCJtYXAxNCQwIiwibWFwMTUkMCIsImJpbmQyJDAiLCJiaW5kMyQwIiwiYmluZDQkMCIsInN5bWJvbF9tYXAiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDAiLCJsYXp5X2Zyb21fZnVuJDAiLCJtZW1vaXplX2Z1biIsImFycmF5X2ZvbGQkMCIsInJlZHVjZV9iYWxhbmNlZCIsInJlcGxhY2UiLCJ4XzAxNyIsImRpc2FsbG93X2Z1dHVyZV91c2UkMCIsImluY3Jfc3RhdGUkMSIsImFsYXJtX3ByZWNpc2lvbiIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyIsInN0YXJ0JDAiLCJhbGFybV9wcmVjaXNpb24kMCIsIndhdGNoX25vdyIsImFkdmFuY2VfY2xvY2tfYnkiLCJmcmVlemUkMCIsIndoZW4iLCJkZXBlbmRfb24kMCIsInN0YWJpbGl6ZSQwIiwiYW1fc3RhYmlsaXppbmckMCIsIm9mX2FfMDE4IiwiYXJnMF8wMTkiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwibm9kZV92YWx1ZSIsInNleHBfb2ZfdCQ2IiwiYm90aCQwIiwieDEiLCJ4MiIsIm1hcDIkMSIsIm1hcDMkMSIsIm1hcDQkMSIsIm1hcDUkMSIsIm1hcDYkMSIsIm1hcDckMSIsIm1hcDgkMSIsIm1hcDkkMSIsIm1hcDEwJDEiLCJtYXAxMSQxIiwibWFwMTIkMSIsIm1hcDEzJDEiLCJtYXAxNCQxIiwibWFwMTUkMSIsImJpbmQyJDEiLCJiaW5kMyQxIiwiYmluZDQkMSIsIndlYWtfbWVtb2l6ZV9mdW4iLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUkMCIsImNvbnN0JDEiLCJyZXR1cm4kMSIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1IiwiZGVidWciLCJub19pbnN0cnVtZW50YXRpb24iLCJmIiwid2l0aF9vbGQiLCJpbnN0cnVtZW50YXRpb24iLCJpIiwib2xkIiwiYSIsImIiLCJjdXRvZmYiLCJtYXAiLCJkYXRhX2VxdWFsIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiY3VyIiwib2xkJDAiLCJhY2MiLCJjaGFuZ2UiLCJrZXkiLCJuZXckMCIsInVub3JkZXJlZF9mb2xkIiwidXBkYXRlIiwic3BlY2lhbGl6ZWRfaW5pdGlhbCIsImluaXQiLCJhZGQiLCJyZW1vdmUiLCJmaW5hbGl6ZSIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJvbGRfb3V0Iiwib2xkX2luIiwiaW5pdCQwIiwibmV3JDEiLCJpbml0aWFsIiwidW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHMiLCJpbmNyX21hcCIsInVwZGF0ZSQxIiwib3V0ZXJfa2V5IiwiaW5uZXJfa2V5Iiwib2xkX2lubmVyX21hcCIsIm5ld19pbm5lcl9tYXAiLCJkaWZmIiwiZGF0YV9yZW1vdmVkIiwiZGF0YV9hZGRlZCIsImlubmVyX21hcCIsImRhdGEiLCJ3aXRoX2NvbXBhcmF0b3IiLCJnZXRfY29tcGFyYXRvciIsIngiLCJ3aXRoX2NvbXBhcmF0b3IkMCIsIm9mX3NldCIsInNldCIsImNvbXBhcmF0b3IiLCJvbGRfaW5wdXQiLCJvbGRfb3V0cHV0IiwibmV3X2lucHV0IiwibmV3X291dHB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJnZW5lcmljX21hcGkiLCJ3aXRuZXNzIiwiaW5wdXQiLCJyZXMiLCJvdXRwdXRfZGF0YSIsIm1hcGkiLCJmaWx0ZXJfbWFwaSIsImZpbHRlcl9tYXAiLCJ3aXRoX29sZDIiLCJpMSIsImkyIiwiYTEiLCJhMiIsInVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmEiLCJleHRyYSIsImV4dHJhX2NoYW5nZWQiLCJleHRyYV9lcXVhbCIsIm5ld19leHRyYSIsIm9sZF9leHRyYSIsImFjYyQwIiwibWFwaV9jb3VudCIsIm5ld19rZXkiLCJuIiwicHJldl9rZXkiLCJtYXBfY291bnQiLCJtaW5faGVscGVyIiwibWluIiwibWF4X2hlbHBlciIsIm1heCIsImJvdW5kc19oZWxwZXIiLCJtYXBpX21pbiIsIm1hcGlfbWF4IiwibWFwaV9ib3VuZHMiLCJtYXBfbWluIiwibWFwX21heCIsIm1pbl92YWx1ZSIsIm1heF92YWx1ZSIsIm1hcF9ib3VuZHMiLCJ2YWx1ZV9ib3VuZHMiLCJtZXJnZV9zaGFyZWRfaW1wbCIsIm5ld19sZWZ0X21hcCIsIm5ld19yaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0Iiwib2xkX3JpZ2h0X21hcCIsIm9sZF9sZWZ0X21hcCIsIm9sZF9sZWZ0X21hcCQwIiwibGVmdF9kaWZmIiwicmlnaHRfZGlmZiIsInJpZ2h0X2tleSIsImxlZnRfa2V5IiwiZGlmZl9lbGVtZW50Iiwia2V5JDAiLCJuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJyaWdodF9kYXRhX29wdCQwIiwibGVmdF9kYXRhX29wdCIsInJpZ2h0X2RpZmYkMCIsImxlZnRfZGlmZiQwIiwicmlnaHRfZGF0YV9vcHQkMiIsImxlZnRfZGF0YV9vcHQkMCIsInkiLCJvdXRwdXRfZGF0YV9vcHQiLCJ5JDAiLCJtZXJnZV9ib3RoX3NvbWUiLCJvdXRfZXF1YWwiLCJlbXB0eSIsImxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IiwibGVmdF9kYXRhIiwicmlnaHRfZGF0YSIsInByZXZfb3V0IiwicHJldl9vdXQkMCIsImdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3IiLCJsaHMiLCJpbmNyZW1lbnRhbF9zdGF0ZSIsImVtcHR5X21hcCIsInByZXZfbWFwIiwicHJldl9ub2RlcyIsInJlc3VsdCIsIm9uX2lubmVyX2NoYW5nZSIsIm9wdCIsImxoc19jaGFuZ2UiLCJuZXdfbm9kZXMiLCJub2RlcyIsImNoYW5nZWQiLCJkZXAiLCJub2RlIiwibm9kZXMkMCIsIm5vZGUkMCIsIm5vZGUkMSIsImMiLCJ1c2VyX2Z1bmN0aW9uX2RlcCIsImZpbHRlcl9tYXBpJDAiLCJtYXBpJDAiLCJtYXAkMCIsImZpbHRlcl9tYXAkMCIsIm1lcmdlJDAiLCJtYXAxIiwibWFwMiIsInVuemlwX21hcGkiLCJsZWZ0X3Jlc3VsdF9lcXVhbCIsInJpZ2h0X3Jlc3VsdF9lcXVhbCIsInBhaXIiLCJkYXRhX2VxdWFsJDAiLCJsZWZ0X3Jlc3VsdF9lcXVhbCQwIiwicmlnaHRfcmVzdWx0X2VxdWFsJDAiLCJsZWZ0X2FjYyIsImxlZnRfcmVzdWx0IiwicmlnaHRfYWNjIiwicmlnaHRfcmVzdWx0IiwiaW5wdXRfY2hhbmdlIiwibGVmdCQwIiwibCIsInJpZ2h0JDAiLCJyIiwicmlnaHQiLCJsZWZ0IiwicHJldiIsInByZXZfYiIsInByZXZfYSIsIm5ld19iIiwibmV3X2EiLCJlbGVtZW50IiwidW56aXAiLCJ1bnppcF9tYXBpJDAiLCJyaWdodF9kZXAiLCJsZWZ0X2RlcCIsInJpZ2h0X2luY3IiLCJsZWZ0X2luY3IiLCJsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwIiwicmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAiLCJrZXlzIiwicGFydGl0aW9uX21hcGkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsInBhcnRpdGlvbl9tYXBpJDAiLCJmbGF0dGVuIiwic3RhdGUiLCJpbmNyIiwiam9pbiIsIm1hcF9pbmNyIiwicmVzdWx0X21hcCIsIm9sZF9tYXBfb2ZfaW5jcnMiLCJjdXJyZW50X2RlcGVuZGVuY2llcyIsImFkZF9zdWJub2RlIiwiZGF0YV9ub2RlIiwibmV3X2RlcCIsInJlbW92ZV9zdWJub2RlIiwibWFwX29mX2luY3JzIiwibmV3X2RlcGVuZGVuY3lfbWFwIiwiZGF0YV9ub2RlJDAiLCJzZXBhcmF0ZSIsImlucHV0X21hcCIsIm91dHB1dF9tYXBfbm9kZSIsIm1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwXyIsImlucHV0X21hcF9jaGFuZ2VkIiwiZGVwZW5kZW5jeSIsInByZXZfaW5wdXRfbWFwIiwib3V0cHV0X21hcCIsImV4cGVydF9ub2RlcyIsIm9sZF9ub2RlIiwic3VicmFuZ2UiLCJyYW5nZSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heWJlX2JvdW5kX2VxdWFsIiwiYV8wMDgiLCJiXzAwOSIsImFfMDEwIiwiYl8wMTEiLCJhXzAxMiIsImJfMDEzIiwicmFuZ2VfaXNfZW1wdHkiLCJtaW4kMCIsIm1heCQwIiwibWF4JDEiLCJtaW4kMSIsInJhbmdlX2luY2x1ZGVzIiwicmFuZ2UkMCIsImZyb21fc2NyYXRjaCIsIm9sZF9yYW5nZSIsIm9sZF9taW4iLCJvbGRfbWFwIiwib2xkX21heCIsIm9sZF9yZXMiLCJvbGRfbWF4JDAiLCJwYXJhbSIsImFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uIiwib3V0c2lkZSIsIm91dHNpZGUkMCIsIm91dHNpZGVfY3V0b2ZmIiwid2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlIiwid2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSIsIm1hcF9hcHBlbmRfZXhuIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJvbGRfbWluJDAiLCJvbGRfbWluJDEiLCJvbGRfbWF4JDEiLCJ3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSIsInJla2V5Iiwib3V0ZXJfY29tcGFyYXRvciIsImFkZHMiLCJvdXRwdXQkMCIsIm5ld19lbnRyeSIsImluZGV4X2J5aSIsImluZGV4IiwiaW5uZXJfY29tcGFyYXRvciIsIm91dGVyX21hcCIsImlubmVyX21hcCQwIiwiaW5kZXhfYnkiLCJpc19rbm93biIsInRvX29wdGlvbiIsImZpbmRfa2V5X3JhbmdlX2xpbmVhciIsImZyb20iLCJ0byIsImxlbiIsImJlZ2luX2tleSIsImVuZF9rZXkiLCJmaW5kX2tleXMiLCJmb2xkIiwic3RhcnRfcG9zIiwiYWR2YW5jZV9wb3MiLCJwb3MiLCJiZWdpbl9rZXkkMCIsImVuZF9rZXkkMCIsImZpbmRfb2Zmc2V0IiwiY2hhbmdlZF9rZXkiLCJyYW5rIiwiY29tcGFyZV9rZXkiLCJzYW1lX2tleSIsInByb2Nlc3MiLCJuZXdfbWFwIiwib2xkX3JhbmsiLCJvbGRfa2V5Iiwib2xkX3JhbmskMCIsImRpZmZfa2V5Iiwib2xkX3JhbmskMSIsIm9sZCQxIiwidXBwZXJfYm91bmQiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kJDAiLCJsb3dlcl9ib3VuZCQwIiwic3VicmFuZ2UkMCIsInN1YnJhbmdlX2J5X3JhbmsiLCJmaW5kX2tleV9yYW5nZSIsImVuZF9rZXlfb3B0JDAiLCJvbGRfdG8iLCJvbGRfZnJvbSIsInJhbmdlX29mZnNldF9iZWdpbiIsInJhbmdlX29mZnNldF9lbmQiLCJhZGp1c3RfYW5kX29mZnNldCIsImJ5JDEiLCJrZXkkMSIsImJ5JDIiLCJieSIsImNsb3Nlc3RfZGlyIiwiYnkkMCIsIm9mZnNldF9lbmQiLCJvZmZzZXRfYmVnaW4iLCJtYXBfb2Zmc2V0X2VuZCIsIm1hcF9vZmZzZXRfYmVnaW4iLCJlbmRfa2V5X29wdCQyIiwiYmVnaW5fa2V5X29wdCIsIm1hcF9vZmZzZXRfYmVnaW4kMCIsImVuZF9rZXlfb3B0IiwiYmVnaW5fa2V5X29wdCQwIiwic3ltYm9sIiwiYm91bmQiLCJyZXR1cm4kMCIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxNCIsImxiIiwicGF0dGVybl9zeW50YXhfMDE1IiwidSIsInBhdHRlcm5fc3ludGF4XzAxNiIsInViIiwicGF0dGVybl9zeW50YXhfMDE3IiwibGV0X3N5bnRheF8wMjIiLCJsJDAiLCJwYXR0ZXJuX3N5bnRheF8wMTgiLCJsYiQwIiwicGF0dGVybl9zeW50YXhfMDE5IiwibGV0X3N5bnRheF8wMjYiLCJ1JDAiLCJwYXR0ZXJuX3N5bnRheF8wMjAiLCJ1YiQwIiwicGF0dGVybl9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjkiLCJ0cmFuc3Bvc2UiLCJrMl9jb21wYXJhdG9yIiwibSIsImsxX2NvbXBhcmF0b3IiLCJrMSIsImsyIiwidmFsdWUiLCJhY2NfaW5uZXIiLCJhY2NfaW5uZXIkMCIsImNvbGxhcHNlX2J5IiwibWVyZ2Vfa2V5cyIsImNvbGxhcHNlIiwiaW5uZXJfY29tcGFyYXRvciQwIiwiZXhwYW5kIiwiY291bnRpIiwiY291bnQiLCJleGlzdHNpIiwiZXhpc3RzIiwic3VtIiwiR3JvdXAiLCJ2IiwiZm9yX2FsbGkiLCJmb3JfYWxsIiwidW5vcmRlcmVkX2ZvbGQkMCIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzJDAiLCJjcmVhdGUiLCJzZWxmIiwidXBkYXRlcl9ub2RlIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJpbmZvX3Blcl9rZXkiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsIm1hdGNoJDAiLCJzYXZlZF92YWx1ZSIsIm1hdGNoJDIiLCJtYXRjaCQzIiwidiQwIiwibWF0Y2gkNCIsInYkMSIsIm1hdGNoJDUiLCJ2JDIiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJjb250ZW50c19iaWdzdHIiLCJjcmVhdGUkMCIsImdldF9kb3dubG9hZCIsImJ1dHRvbl90ZXh0IiwiZW5hYmxlZCIsIm9uX2NsaWNrIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMDMiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wMTkiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInhfMDA0IiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwic2V4cF9vZl90Iiwib2ZfYV8wMDUiLCJyaWdodF8wMTMiLCJib3R0b21fMDExIiwibGVmdF8wMDkiLCJ0b3BfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwidjQiLCJ2MyIsInYyIiwidjEiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwicG9zJDAiLCJwb3MkMSIsInBvcyQyIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X3RvcCIsInZfbGVmdCIsInZfYm90dG9tIiwidl9yaWdodCIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMTUiLCJiXzAxNiIsIm4iLCJuJDAiLCJuJDEiLCJyaWdodCQwIiwiYm90dG9tJDAiLCJsZWZ0JDAiLCJ0b3AkMCIsIm1ha2VfY3JlYXRvciIsInRvcF9mdW4iLCJsZWZ0X2Z1biIsImJvdHRvbV9mdW4iLCJyaWdodF9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJ0b3BfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImxlZnRfZ2VuIiwiY29tcGlsZV9hY2MkMiIsImJvdHRvbV9nZW4iLCJjb21waWxlX2FjYyQzIiwicmlnaHRfZ2VuIiwiYWNjIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwibWFwJDEiLCJ0IiwiZiIsImludF9oZWlnaHQiLCJpbnRfd2lkdGgiLCJmbG9hdF9oZWlnaHQiLCJmbG9hdF93aWR0aCIsInJvdW5kX2Zsb2F0X3JlY3QiLCJyb3VuZCIsInJvd3Nfb3JfY29sdW1uc19vZl9zZXhwIiwic2V4cF8wMjAiLCJzZXhwX29mX3Jvd3Nfb3JfY29sdW1ucyIsImdyb3VwJDAiLCJiaW5fc2hhcGVfcm93c19vcl9jb2x1bW5zIiwiYmluX3NpemVfcm93c19vcl9jb2x1bW5zIiwiYmluX3dyaXRlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZXJfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zJDAiLCJiaW5fcmVhZGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yb3dzX29yX2NvbHVtbnMiLCJyb3dzIiwiY29sdW1ucyIsImlzX3Jvd3MiLCJpc19jb2x1bW5zIiwicm93c192YWwiLCJjb2x1bW5zX3ZhbCIsInJvd3MkMCIsImNvbHVtbnMkMCIsImZvbGQkMSIsInJvd3NfZnVuIiwiY29sdW1uc19mdW4iLCJpdGVyJDEiLCJtYXAkMiIsIm1ha2VfbWF0Y2hlciIsInJvd3NfZ2VuIiwiY29sdW1uc19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsImNvbXBhcmVfcm93c19vcl9jb2x1bW5zIiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZWxlbWVudF9pc19pbl92aWV3cG9ydCIsInNjcm9sbCIsImlkIiwidmlld3BvcnRfcmVjdF9vZl9lbGVtZW50Iiwidmlld3BvcnRfcmVjdCIsImNsaWVudF9yZWN0X29mX2VsZW1lbnQiLCJib3VuZGluZ19yZWN0IiwiY2xpZW50X3JlY3QiLCJmaW5kX3Zpc2libGVfcmFuZ2UiLCJsZW5ndGgiLCJudGhfZWxlbWVudF9pZCIsImxheW91dCIsImVsZW1lbnRfc2VhcmNoIiwic2VhcmNoX2J5IiwibW9kZSIsIngiLCJudGhfZWxlbWVudCIsImVsdCIsImZpcnN0IiwibGFzdCIsImdldCIsImlzX2FzY2VuZGluZyIsImxlbmd0aCQwIiwidmlld3BvcnRfcmVjdCQwIiwidGFyZ2V0IiwidGFyZ2V0JDAiLCJzZWFyY2hfYnkkMCIsImdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lciIsImVsIiwiZmlsZW5hbWUiLCJwcmludF9lcnJvcmYiLCJmbXQiLCJzIiwicmVxdWVzdF9hbmltYXRpb25fZnJhbWUiLCJjYWxsYmFjayIsImN1cnJlbnRfY29udGV4dCIsInJlcXVlc3RfaWRzIiwiY2FsbGJhY2skMCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsInNldF90aW1lb3V0X2lkIiwiYXNfZm9jdXNhYmxlIiwibWFya19kaXJ0eSIsImlzX2RpcnR5IiwieF8wMDIiLCJ4XzAwMyIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3Iiwic2V0X2xvZ2dpbmdfZmlsdGVyIiwibG9nZ2luZ19maWx0ZXIiLCJnbG9iYWxfaXNfaW5pdGlhbGl6ZWQiLCJhcHBfc3RhdGVzIiwic2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QiLCJzdHJpbmdzIiwic3RyIiwibXVsdGlfbGluZV9zdHJpbmdfbGlzdCIsImdldF90YWdfbmFtZSIsIm5vZGUiLCJub2RlJDAiLCJlIiwibm9kZSQxIiwic3RhcnRfYm9uc2FpIiwiYmluZF90b19lbGVtZW50X3dpdGhfaWQiLCJpbml0aWFsX21vZGVsIiwiQXBwIiwiZGVidWciLCJzdG9wIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsImN1dG9mZiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJuYW1lZF9sb2dnaW5nX2ZpbHRlcnMkMCIsImZpbHRlcl9uYW1lcyIsImFwcF9pbml0X21lc3NhZ2UiLCJ3aXRoX2FwcF9pZF9vcHQiLCJ1cGRhdGVfc3RhdGUiLCJhcHBfaWRfb3B0IiwiYXBwX2lkX29wdCQwIiwiYXBwX2lkIiwic3RhdGUiLCJ1cGRhdGVfbG9nZ2luZ19maWx0ZXIiLCJ1cGRhdGVfc2hvdWxkX3Byb2ZpbGUiLCJzaG91bGRfcHJvZmlsZSIsInVwZGF0ZV9zaG91bGRfZGVidWciLCJzaG91bGRfZGVidWciLCJibGFuZ19zdHIiLCJibGFuZ19zdHIkMCIsImFwcF9zdGF0ZSIsImJsYW5nIiwiaW52YWxpZF9uYW1lcyIsIm5hbWUiLCJmaWx0ZXIiLCJmaWx0ZXIkMCIsImFjdGlvbl9zZXhwIiwiY29udGVudHMiLCJsb2ciLCJodG1sIiwiaHRtbF9kb20iLCJwYXJlbnQiLCJjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQiLCJldmVudF9uYW1lIiwid2hlcmUiLCJwcmV2X2h0bWwiLCJwcmV2X2VsdCIsInJlZm9jdXNfcm9vdF9lbGVtZW50IiwiZWxlbWVudCIsInRpbWVyX3N0YXJ0IiwicHJvZmlsZSIsInRpbWVyX3N0b3AiLCJiZWZvcmUiLCJhZnRlciIsInJlbGF0ZWRfdGFyZ2V0Iiwic2FmZV9maWx0ZXIiLCJzaG91bGRfbG9nIiwiZXJyIiwiY3VzdG9tX3ByaW50Zl8wMTAiLCJuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUiLCJjdXN0b21fcHJpbnRmXzAxMiIsInBlcmZvcm1fdXBkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsInJvb3QiLCJhZGRfbmV3X2F0dHJzIiwiYXR0cnMiLCJwYXRjaCIsIm9sZF90YWdfbmFtZSIsIm5ld190YWdfbmFtZSIsInRhZ3NfdGhlX3NhbWUiLCJzdGFydCIsImFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIiwib2xkX21vZGVsIiwiaW5qZWN0IiwiY29tcG9uZW50Iiwic2NoZWR1bGVfZXZlbnQiLCJzY2hlZHVsZV9hY3Rpb24iLCJlcnJvcl9zb3VyY2VfMDE0IiwiaW52YXJpYW50IiwidCIsIm9mX3N0cmluZyIsInMiLCJ0b19zdHJpbmciLCJlcXVhbCIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImFfMDA1IiwiYl8wMDYiLCJhXzAwOSIsImJfMDEwIiwidXBkYXRlX29mX3NleHAiLCJvZl9hXzAxMSIsInNleHBfMDE2Iiwic2V4cHNfMDE3IiwidmFsdWUiLCJpbnB1dCIsInNleHBzXzAxOSIsImVycm9yIiwibGFzdF92YWxpZCIsInNleHBfb2ZfdXBkYXRlIiwib2ZfYV8wMjEiLCJ2YWx1ZV8wMjUiLCJpbnB1dF8wMjMiLCJhcmdfMDI2IiwiYm5kc18wMjIiLCJhcmdfMDI0IiwiYm5kc18wMjIkMCIsImVycm9yXzAzMiIsImxhc3RfdmFsaWRfMDMwIiwiaW5wdXRfMDI4IiwiYXJnXzAzMyIsImJuZHNfMDI3IiwiYXJnXzAzMSIsImJuZHNfMDI3JDAiLCJhcmdfMDI5IiwiYm5kc18wMjckMSIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInYyIiwidjEiLCJzaXplIiwidjMiLCJ2MiQwIiwidjEkMCIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfdCIsIm9mX2EiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3QkMCIsInZfaW5wdXQiLCJ2X3ZhbHVlIiwidl9pbnB1dCQwIiwidl9sYXN0X3ZhbGlkIiwidl9lcnJvciIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImFfMDM1IiwiYl8wMzYiLCJuIiwiYV8wMzkiLCJiXzA0MCIsIm4kMCIsIm4kMSIsImFfMDQzIiwiYl8wNDQiLCJlcXVhbF91cGRhdGUiLCJhXzA0NSIsImJfMDQ2IiwiYV8wNDciLCJiXzA0OCIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdXBkYXRlIiwiYmluX3NpemVfdXBkYXRlIiwiYmluX3dyaXRlX3VwZGF0ZSIsImJpbl93cml0ZXJfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlJDAiLCJiaW5fcmVhZGVyX3VwZGF0ZSIsImJpbl91cGRhdGUiLCJjb21wYXJlX3VwZGF0ZSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1NiIsImJfMDU3IiwibGlmdCIsIk0iLCJpbnB1dCQxIiwiaW5wdXQkMCIsImV4biQwIiwiZXhuIiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwiZ2V0X2Vycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJtZXJnZSIsInN0cnVjdHVyYWxfbGlzdCIsImNoaWxkcmVuIiwib3JpZW50YXRpb24iLCJtZXJnZV9iZWhhdmlvciIsImxheW91dF9zdHlsZSIsImNoaWxkIiwic2V4cF9vZl90IiwiY29tYmluZSIsImxlZnQiLCJyaWdodCIsImluaXQiLCJlbGVtZW50IiwiZiIsImRvY3VtZW50X2FjdGl2ZV9lbGVtZW50IiwidmFsdWUkMCIsImNoYW5nZV9oYW5kbGVyIiwibm9ybWFsaXplZCIsImNoYW5nZV9oYW5kbGVyJDAiLCJldmVudF9pZCIsIm9uX21vdW50Iiwic3RhdGUiLCJkZXN0cm95IiwidXBkYXRlJDAiLCJvbGRfaW5wdXQiLCJuZXdfaW5wdXQiLCJjcmVhdGUiLCJpbXBsIiwidmFsdWVzIiwic2VsZWN0ZWQiLCJvbl9jaGFuZ2UiLCJleHRyYV9hdHRycyIsImV4dHJhX29wdGlvbl9hdHRycyIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInBsYWNlaG9sZGVyIiwidmFsdWVzJDAiLCJleHRyYV9vcHRpb25fYXR0cnMkMCIsImFfMDU4IiwiYl8wNTkiLCJhXzA2MCIsImJfMDYxIiwib2ZfZW51bSIsIm9mX2VudW1fb3B0IiwiYV8wNjIiLCJiXzA2MyIsImFfMDY0IiwiYl8wNjUiLCJiYXJlYm9uZXNfYnV0dG9uX2xpa2UiLCJjaGVja2VkIiwiaGlkZV9uYXRpdmVfaW5wdXRzIiwic2ltcGxlIiwiZXh0cmFfYXR0cnMkMCIsImRpc2FibGVkJDAiLCJpc19jaGVja2VkIiwibGFiZWwiLCJvbl90b2dnbGUiLCJldiIsImltcGwkMCIsImxheW91dCIsInN0eWxlIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJpdGVtIiwib2ZfdmFsdWVzJDAiLCJvZl9lbnVtJDAiLCJpbXBsJDEiLCJyZXBlYXRlZF9jbGlja19iZWhhdmlvciIsInRhcmdldCIsIm9wdGlvbnMiLCJzZWxlY3RlZF92YWx1ZXMiLCJpc19zZWxlY3RlZCIsIndhc19yZXBlYXRlZF9jbGljayIsIm9mX3ZhbHVlcyQxIiwib2ZfZW51bSQxIiwibGlzdGVuZXIiLCJub3JtYWxpemUiLCJtYXliZV9vbl9yZXR1cm4iLCJvbl9yZXR1cm4iLCJvbl9yZXR1cm4kMCIsImlucHV0X25vZGUiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwidHlwZV9hdHRycyIsImNhbGxfb25faW5wdXRfd2hlbiIsInNob3VsZF9ub3JtYWxpemUiLCJ2YWx1ZSQxIiwib2Zfc3RyaW5nYWJsZSIsInZhbGlkYXRlZCIsIlYiLCJ2YWx1ZV9hdHRyIiwidGV4dCIsInBhc3N3b3JkIiwibnVtYmVyIiwic3RlcCIsInJhbmdlIiwidGltZSIsImRhdGUiLCJkYXRldGltZV9sb2NhbCIsInV0Y19vZmZzZXQiLCJob3VycyIsInpvbmUiLCJwYXJ0cyIsImhyIiwibWluIiwib2ZkYXkiLCJab25lZF90aW1lIiwidGV4dF9hcmVhIiwiY29sb3JfcGlja2VyIiwiZXh0cmFfYXR0ciIsIndpdGhfdmFsaWRhdGlvbiIsInZhbGlkYXRpb24iLCJvbl9jbGljayIsInJlc3VsdCIsInJlYXNvbiIsInNpbXBsZSQwIiwiaW1wbCQyIiwibmFtZSIsIm9mX3ZhbHVlcyQyIiwiRSIsIm9mX3ZhbHVlc19ob3Jpem9udGFsIiwiYWNjZXB0X2F0dHJzIiwiYWNjZXB0cyIsInMkMCIsImxpc3QiLCJhY2NlcHQiLCJmaWxlcyIsInNpbmdsZSIsImZpbGUiLCJlcXVhbCIsIngiLCJ5IiwiY29tcGFyZSIsInRvX2ludCIsInBwIiwiaW50ZXJzZWN0Iiwic3ltYm9sIiwibGV0dGVyIiwibm90X2xldHRlciIsImZyb21fY2hhciIsInNleHAiLCJmbXQiLCJzIiwicGFpciIsInBwMSIsInBwMiIsInYyIiwidjEiLCJ0cmlwbGUiLCJwcDMiLCJ2MyIsIm9wdGludCIsImkiLCJxdW90ZSIsInBwX29saXN0IiwicHBfZWxlbSIsInBwX3N0cl9saXN0IiwidG9fdG9fc3RyaW5nIiwiYiIsImNhbnkiLCJ1bmlvbiIsImwkMCIsImwiLCJsJDIiLCJsJDEiLCJyIiwiYzIiLCJjMSIsInIkMCIsImMyJDAiLCJjMSQwIiwibCQzIiwibCQ0IiwiaW50ZXIiLCJkaWZmIiwiciQxIiwic2luZ2xlIiwiYyIsImFkZCIsInNlcSIsImMkMCIsIm9mZnNldCIsIm8iLCJtZW0iLCJzJDAiLCJyZW0iLCJoYXNoX3JlYyIsImoiLCJoYXNoIiwicHJpbnRfb25lIiwiY2giLCJpdGVyIiwidCIsImYiLCJ0JDAiLCJ4cyIsIm9uZV9jaGFyIiwidiIsInUiLCJmb2xkX3JpZ2h0IiwiaW5pdCIsImNzaW5nbGUiLCJpc19lbXB0eSIsInByZXBlbmQiLCJ4JDAiLCJkIiwiZCQwIiwicGljayIsImdlbiIsImVwc19leHByIiwiaGFzaF9jb21iaW5lIiwiaCIsImFjY3UiLCJlbXB0eSIsIm1lcmdlX21hcmtzX29mZnNldCIsIm9sZCIsIm53IiwibWVyZ2UiLCJtIiwiYWNjdSQxIiwiYWNjdSQyIiwiYSIsImFjY3UkMCIsImlkeCIsIm1hcmtzIiwibWFya3Nfc2V0X2lkeCIsInBwX21hcmtzIiwicHBfc2VtIiwiayIsInBwX3JlcF9raW5kIiwiZSIsImUkMCIsImUkMSIsImUkMiIsImskMCIsImUkMyIsImkkMCIsImZpcnN0IiwicmVzIiwiY3JlYXRlX2lkcyIsIm1rX2V4cHIiLCJpZHMiLCJkZWYiLCJlbXB0eSQwIiwiY3N0IiwiYWx0Iiwia2luZCIsImlzX2VwcyIsImV4cHIiLCJlcHMiLCJyZXAiLCJzZW0iLCJtYXJrIiwicG1hcmsiLCJlcmFzZSIsIm0kMCIsImJlZm9yZSIsImFmdGVyIiwicmVuYW1lIiwieiIsInkkMCIsImciLCJsMSIsImwyIiwibDEkMCIsImwyJDAiLCJyMSIsImUxIiwibDEkMSIsInIyIiwiZTIiLCJsMiQxIiwicjEkMCIsImUxJDAiLCJtYXJrczEiLCJyMiQwIiwiZTIkMCIsIm1hcmtzMiIsInIxJDEiLCJtYXJrczEkMCIsInIyJDEiLCJtYXJrczIkMCIsImhhc2gkMCIsIm1hcmtzJDAiLCJhY2N1JDMiLCJ0c2VxIiwicHJpbnRfc3RhdGVfcmVjIiwicHJpbnRfc3RhdGVfbHN0IiwicHAkMCIsImR1bW15IiwibWsiLCJjYXQiLCJkZXNjIiwiY3JlYXRlIiwiZXF1YWwkMCIsImhhc2gkMSIsImNyZWF0ZV93b3JraW5nX2FyZWEiLCJpbmRleF9jb3VudCIsInciLCJtYXJrX3VzZWRfaW5kaWNlcyIsInRibCIsImZyZWVfaW5kZXgiLCJ0YmxfcmVmIiwibGVuIiwiaWR4JDAiLCJyZW1vdmVfbWF0Y2hlcyIsInNwbGl0X2F0X21hdGNoIiwicmVtb3ZlX2R1cGxpY2F0ZXMiLCJwcmV2IiwicHJldiQwIiwicHJldiQxIiwicHJldiQyIiwiciQyIiwiciQzIiwieCQxIiwicHJldiQzIiwiciQ0Iiwic2V0X2lkeCIsImZpbHRlcl9tYXJrcyIsImRlbHRhXzEkMCIsIm5leHRfY2F0IiwicHJldl9jYXQiLCJkZWx0YV8yJDAiLCJkZWx0YV8xIiwiZGVsdGFfc2VxJDAiLCJ5JDEiLCJraW5kJDAiLCJyZXBfa2luZCIsInkkMiIsIm1hcmtzJDEiLCJ5JDMiLCJtYXJrcyQyIiwiY2F0JDAiLCJtYXJrcyQzIiwiZGVsdGFfMiIsImRlbHRhX3NlcSIsImRlbHRhXzQiLCJyZW0kMCIsImRlbHRhIiwiY2hhciQwIiwic3QiLCJleHByJDAiLCJyZWRfdHIiLCJ0cjIiLCJzdDIiLCJzMiIsInRyMSIsInN0MSIsInMxIiwicHJlcGVuZF9kZXJpdiIsInJlc3RyaWN0IiwicyQxIiwicHJlcGVuZF9tYXJrc19leHByX2xzdCIsIm0kMSIsImRlcml2XzEkMCIsImFsbF9jaGFycyIsImNhdGVnb3JpZXMiLCJyZW0kMSIsImRlcml2XzIkMCIsImRlcml2XzEiLCJkZXJpdl9zZXEiLCJ6JDAiLCJyZW0kMiIsImNhdCQxIiwiZGVyaXZfMiIsInhsIiwieiQxIiwiZGVyaXZfNCIsImRlcml2IiwiZGVyIiwiZXhwciQxIiwic3RhdHVzIiwibWEiLCJzdCQwIiwibWFrZSIsImZsYXR0ZW4iLCJjbSIsImNvbG9yX3JlcHIiLCJzcGxpdCIsImR1bW15X29mZnNldCIsIm0xIiwicDEiLCJwMiIsImdldCIsInN0YXJ0Iiwic3VicyIsInN0b3AiLCJ0ZXN0IiwiZ2V0X29wdCIsImFsbF9vZmZzZXQiLCJhbGwiLCJvZmZzZXRzIiwic3RycyIsIm1hdGNoZXMiLCJwcF9tYXRjaCIsInN0ciIsIm5iX2dyb3VwcyIsIm4iLCJuJDAiLCJ2JDAiLCJ2JDEiLCJuJDEiLCJwcF9yZSIsInJlIiwiZ3JvdXBfY291bnQiLCJncm91cF9uYW1lcyIsImNhdGVnb3J5IiwiY29sb3IiLCJkdW1teV9uZXh0IiwidW5rbm93bl9zdGF0ZSIsImJyZWFrJDAiLCJmaW5kX3N0YXRlIiwibmNvbCIsImJyZWFrX3N0YXRlIiwiaW5mbyIsInBvcyIsInZhbGlkYXRlIiwiZ2V0X2NvbG9yIiwic2xlbiIsInNjYW5fc3RyIiwiaW5pdGlhbF9zdGF0ZSIsImdyb3VwcyIsInBvcyQzIiwibGFzdCIsImluZm8kMCIsInN0JDUiLCJwb3MkNCIsInN0JDMiLCJyZWFsX2MiLCJzdCQ0IiwicG9zJDAiLCJwb3MkMSIsInN0JDEiLCJzdCQyIiwicG9zJDIiLCJmaW5hbF9ib3VuZGFyeV9jaGVjayIsImZpbmFsX2NhdCIsInJlcyQwIiwibWF0Y2hfc3RyIiwicGFydGlhbCIsImluaXRpYWxfY2F0Iiwic3RhdHVzJDAiLCJwbWFya3MiLCJub19tYXRjaF9zdGFydHNfYmVmb3JlIiwiY3NlcSIsImNhZGQiLCJ2aWV3IiwidmFyJDAiLCJyZWwiLCJzcSIsInJlJDAiLCJyZSQxIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiaXNfY2hhcnNldCIsImN1cHBlciIsImNsb3dlciIsImNhbHBoYSIsImNkaWdpdCIsImNhbG51bSIsImN3b3JkIiwieDEiLCJ4MiIsIngxJDAiLCJ4MiQwIiwiZXFfbGlzdCIsImoyIiwiaTIiLCJ4MiQxIiwiajEiLCJpMSIsIngxJDEiLCJ4MiQyIiwic2VtMiIsIngxJDIiLCJzZW0xIiwieDIkMyIsImsyIiwieDEkMyIsImsxIiwieDIkNCIsIngxJDQiLCJ4MiQ1IiwieDEkNSIsIngyJDYiLCJ4MSQ2IiwieDIkNyIsIngxJDciLCJsMiQyIiwibDEkMiIsIngyJDgiLCJ4MiQ5IiwieDEkOCIsIngxJDkiLCJtMiIsInNlcXVlbmNlIiwibWVyZ2Vfc2VxdWVuY2VzIiwiZW5mb3JjZV9raW5kIiwiY3IiLCJ0cmFuc2xhdGUiLCJpZ25fY2FzZSIsIm5hbWVzIiwiY2FjaGUiLCJpZ25fZ3JvdXAkMCIsImdyZWVkeSQwIiwidHJhbnNfc2VxIiwibWVyZ2VkX3NlcXVlbmNlcyIsImtpbmQkMSIsImNyJDAiLCJqJDAiLCJraW5kJDIiLCJraW5kJDMiLCJjciQxIiwiZ3JlZWR5JDEiLCJwIiwibmFtZSIsImtpbmQkNCIsImNyJDIiLCJyJDUiLCJraW5kJDUiLCJjciQzIiwiciQ2IiwiaSQxIiwia2luZCQ2IiwiY3IkNCIsImlnbl9ncm91cCIsImdyZWVkeSIsImFzX3NldCIsImhhbmRsZV9jYXNlIiwiaWduX2Nhc2UkMCIsInIkNyIsInIkOCIsInIkOSIsInIkMTAiLCJyJDExIiwiciQxMiIsImwkNSIsInIkMTMiLCJyJDE0IiwiciQxNSIsImFuY2hvcmVkIiwiZXBzaWxvbiIsInJlcG4iLCJyZXAxIiwib3B0IiwiYm93IiwiZW93Iiwid29yZCIsImJvcyIsImVvcyIsIndob2xlX3N0cmluZyIsImxvbmdlc3QiLCJzaG9ydGVzdCIsIm5vbl9ncmVlZHkiLCJncm91cCIsIm5vX2dyb3VwIiwibmVzdCIsInNldCIsInJnIiwiY29tcGwiLCJhbnkiLCJub3RubCIsImxvd2VyIiwidXBwZXIiLCJhbHBoYSIsImRpZ2l0IiwiYWxudW0iLCJ3b3JkYyIsImFzY2lpIiwiYmxhbmsiLCJjbnRybCIsImdyYXBoIiwicHJpbnQiLCJwdW5jdCIsInNwYWNlIiwieGRpZ2l0IiwiY2FzZSQwIiwibm9fY2FzZSIsImNvbXBpbGUiLCJyZWdleHAkMCIsInJlZ2V4cCIsImxubCIsImNvbG9yaXplIiwicmVnZXhwJDEiLCJyZWdleHAkMiIsIm5lZWRfbG5sIiwibmNvbG9yIiwiY29sb3JzIiwibG5sJDAiLCJuY29sb3IkMCIsImluaXRpYWwiLCJleGVjX2ludGVybmFsIiwiZXhlYyIsInN1YnN0ciIsImV4ZWNfb3B0IiwiZXhlY3AiLCJleGVjX3BhcnRpYWwiLCJleGVjX3BhcnRpYWxfZGV0YWlsZWQiLCJtYXJrZWQiLCJtYXJrX3NldCIsImFsbF9zZXEiLCJsaW1pdCIsImF1eCIsIm1hdGNoZXNfc2VxIiwic3ViIiwic3BsaXRfZnVsbF9zZXEiLCJzdGF0ZSIsIm9sZF9pIiwidGV4dCIsInRleHQkMCIsInN0YXRlJDAiLCJzcGxpdF9zZXEiLCJmaWx0ZXIiLCJzZXEkMCIsInRsIiwic2VxJDEiLCJsaXN0X29mX3NlcSIsInNwbGl0X2Z1bGwiLCJnZW5fb2Zfc2VxIiwic3BsaXRfZ2VuIiwic3BsaXRfZnVsbF9nZW4iLCJhbGxfZ2VuIiwibWF0Y2hlc19nZW4iLCJyZXBsYWNlIiwiYnVmIiwicmVwbGFjaW5nIiwicmVwbGFjZV9zdHJpbmciLCJieSIsIndpdG5lc3MiLCJmcm9tIiwiZ2V0X29mcyIsImdldF9hbGwiLCJnZXRfYWxsX29mcyIsInRlc3QyIiwiYWNjZXB0IiwiYWNjZXB0MiIsImxlZnQiLCJicmFuY2giLCJsZWZ0JDAiLCJsZWZ0JDEiLCJicmFja2V0IiwicyQyIiwiY29tcGlsZV9wYXQiLCJjb21waWxlX3JlZ2V4cCIsInN0cmluZ19tYXRjaCIsInN0cmluZ19wYXJ0aWFsX21hdGNoIiwic2VhcmNoX2ZvcndhcmQiLCJzZWFyY2hfYmFja3dhcmQiLCJwJDAiLCJwJDEiLCJ2YWxpZF9ncm91cCIsIm9mZnNldF9ncm91cCIsInJlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsInEiLCJxJDAiLCJxJDEiLCJwJDIiLCJsZW4kMCIsInAkMyIsInEkMiIsInEkMyIsInAkNCIsImIkMCIsInEkNSIsInAkNiIsInEkNCIsInAkNSIsInEkNiIsInAkNyIsInN0cmluZ19iZWZvcmUiLCJzdHJpbmdfYWZ0ZXIiLCJmaXJzdF9jaGFycyIsImxhc3RfY2hhcnMiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiZ3JvdXBfYmVnaW5uaW5nIiwiZ3JvdXBfZW5kIiwibWF0Y2hlZF9ncm91cCIsInR4dCIsInJlcGxhY2VfbWF0Y2hlZCIsIm1hdGNoZWQiLCJtYXRjaF9iZWdpbm5pbmciLCJtYXRjaF9lbmQiLCJtYXRjaGVkX3N0cmluZyIsInN1YnN0aXR1dGVfZmlyc3QiLCJyZXBsX2Z1biIsImdsb2JhbF9zdWJzdGl0dXRlIiwibGFzdF93YXNfZW1wdHkiLCJzdGFydHBvcyIsImVuZF9wb3MiLCJyZXBsX3RleHQiLCJsYXN0X3dhc19lbXB0eSQwIiwiZ2xvYmFsX3JlcGxhY2UiLCJyZXBsYWNlX2ZpcnN0Iiwic2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MiLCJib3VuZGVkX3NwbGl0IiwibnVtIiwiYm91bmRlZF9zcGxpdF9kZWxpbSIsInNwbGl0X2RlbGltIiwiYm91bmRlZF9mdWxsX3NwbGl0IiwiZnVsbF9zcGxpdCIsImJlZyIsIm11bCIsImV4cGxpY2l0X3BlcmlvZCIsInNsYXNoZXMiLCJhcHBlbmQiLCJwaWVjZSIsImFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCIsIm5leHQiLCJyZW1haW5pbmciLCJvbmUiLCJleHBsaWNpdF9zbGFzaCIsImVuY2xvc2VkIiwiaGlnaCIsImxvdyIsImVuY2xvc2VkX3NldCIsInNldCQwIiwiZW5jbG9zdXJlIiwiZXhhY3RseSIsInNsYXNoZXMkMCIsImNoYXJzIiwibWFueV9tYW55IiwiZXhwbGljaXRfcGVyaW9kJDAiLCJmaXJzdF9leHBsaWNpdF9wZXJpb2QiLCJtYXRjaF9jb21wb25lbnQiLCJnbG9iIiwicGF0aG5hbWUiLCJtYXRjaF9iYWNrc2xhc2hlcyIsInBlcmlvZCIsImV4cGFuZF9icmFjZXMiLCJkb3VibGVfYXN0ZXJpc2siLCJ0b19yZSIsInJlYWQiLCJwaWVjZXMiLCJmb3VuZCIsInBpZWNlcyQwIiwic3RhdGUkOCIsInN0YXRlJDkiLCJleHBsaWNpdF9wZXJpb2QkMSIsInNsYXNoZXMkMSIsInN0YXRlJDEwIiwiZXhwbGljaXRfc2xhc2gkMCIsIm5vdF9lbXB0eSIsIm1heWJlX2VtcHR5Iiwibm90X2VtcHR5JDEiLCJlbmNsb3NlZF9zZXQkMCIsInN0YXRlJDIiLCJzdGF0ZSQ0Iiwibm90X2VtcHR5JDAiLCJzdGF0ZSQ1Iiwic3RhdGUkNiIsImVuY2xvc2VkJDAiLCJzdGF0ZSQ3IiwiZW5jbG9zZWQkMSIsInN0YXRlJDMiLCJzdGF0ZSQxIiwiZW5jbG9zZWQkMiIsImVuY2xvc2VkJDMiLCJleHBsIiwiaW5uZXIiLCJhY2MiLCJiZWckMCIsImFjYyQwIiwiYmVnJDEiLCJhY2MkMSIsImkkMyIsImJlZyQyIiwiaSQ0IiwiaSQyIiwiZ2xvYiQwIiwiZ2xvYngiLCJnbG9ieCQwIiwicG9zaXhfY2xhc3Nfc3RyaW5ncyIsIm9wdHMiLCJ1bmdyZWVkeSIsImRvdGFsbCIsImRvbGxhcl9lbmRvbmx5IiwibXVsdGlsaW5lIiwiYWNjZXB0X3MiLCJ1bmdldCIsImdyZWVkeV9tb2QiLCJnciIsImdyJDAiLCJhdG9tIiwiaW50ZWdlciIsImhleGRpZ2l0IiwiY29kZSIsInMkMyIsInMkNCIsImNsYXNzJDAiLCJwb3NpeF9jbGFzcyIsInBhdCIsImZsYWdzIiwiZXh0cmFjdCIsInJleCIsImdldF9zdWJzdHJpbmciLCJnZXRfbmFtZWRfc3Vic3RyaW5nIiwiZ2V0X3N1YnN0cmluZ19vZnMiLCJwbWF0Y2giLCJzdWJzdGl0dXRlIiwic3Vic3QiLCJzcyIsImZpbiIsIm1heCIsInJlc3VsdHMiLCJkZWxpbSIsIm5ld2xpbmUiLCJlbXB0eSIsImlzX2VtcHR5IiwidCIsInplcm9fYml0IiwiayIsIm0iLCJtZW0iLCJqIiwiciIsImwiLCJsJDAiLCJmaW5kIiwieCIsImZpbmRfb3B0IiwiZmluZF9maXJzdF9vcHQiLCJmIiwicnYiLCJyayIsImx2IiwibGsiLCJ2JDAiLCJmaW5kX2ZpcnN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfbGFzdCIsIm1hc2siLCJwIiwiam9pbiIsInQxIiwicDEiLCJ0MCIsInAwIiwibWF0Y2hfcHJlZml4IiwiYWRkIiwiaW5zIiwic2luZ2xldG9uIiwidiIsImJyYW5jaCIsInQkMCIsInJlbW92ZSIsInJtdiIsImNhcmRpbmFsIiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwicyIsImFjY3UiLCJzJDAiLCJhY2N1JDAiLCJhY2N1JDEiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZmlsdGVyIiwicHIiLCJmaWx0ZXJfbWFwIiwicGFydGl0aW9uIiwicGFydCIsImFjYyQwIiwiY2hvb3NlIiwiY2hvb3NlX29wdCIsInNwbGl0IiwiY29sbCIsImIiLCJtaW5fYmluZGluZyIsImJzIiwia3MiLCJidCIsImt0IiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJiaW5kaW5ncyIsImFjYyIsImNvbXBhcmUiLCJjbXAiLCJ0MiIsImNvbXBhcmVfYXV4IiwidDEkMCIsInQyJDAiLCJ4MSIsImsxIiwieDIiLCJrMiIsImMiLCJyMSIsImwxIiwibTEiLCJyMiIsImwyIiwibTIiLCJwMiIsImMkMCIsImMkMSIsImMkMiIsImVxdWFsIiwiZXEiLCJlcXVhbF9hdXgiLCJtZXJnZSIsImFkZCQwIiwidjEiLCJ2MiIsInVwZGF0ZSIsInoiLCJ1bnNpZ25lZF9sdCIsIm4iLCJ0JDIiLCJzMSIsInMwIiwiayQwIiwicSIsInQkMSIsInVuaW9uIiwidG9fc2VxIiwicHJlcGVuZF9zZXEiLCJtJDAiLCJzJDEiLCJ0b19zZXFfZnJvbSIsImtleSIsImFkZF9zZXEiLCJvZl9zZXEiLCJ1dGY4X29mX2NvZGUiLCJidWYiLCJ4IiwiYWRkIiwibWF4Yml0cyIsIm4iLCJ1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIiwiaSIsImoiLCJoaWdoMTAiLCJsb3cxMCIsInZlcnNpb24iLCJqc29uX2Vycm9yIiwicyIsImluaXRfbGV4ZXIiLCJmbmFtZSIsImxudW0iLCJidWYkMCIsImJ1ZiQxIiwib2NhbWxfbGV4X3RhYmxlcyIsInJlYWRfanVuayQwIiwibGV4YnVmIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMkMCIsInJlYWRfanVuayIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJzcHJpbnRmIiwid3JpdGVfZmxvYXRfcHJlYyIsIndyaXRlX3N0ZF9mbG9hdCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjIiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV9qc29uIiwid3JpdGVfYXNzb2MiLCJ3cml0ZV9saXN0IiwiYiIsImYiLCJ3cml0ZV9zdGRfanNvbiIsInRvX2J1ZmZlciIsInN1ZiIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJsJDEiLCJhIiwicHBfbGlzdCIsInNlcCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwieCQyIiwicyQwIiwieCQwIiwieCQxIiwibmFtZSIsInBwIiwidG9fc3RyaW5nJDAiLCJwcCQwIiwiZm10IiwieHMiLCJ2YWx1ZSIsImtleSIsInhzJDAiLCJzaG93IiwiZXF1YWwiLCJiJDAiLCJhJDAiLCJ5cyIsInJlc3VsdCIsInlzJDAiLCJjb21wYXJlX2tleXMiLCJrZXkkMCIsInhzJDEiLCJ5cyQxIiwicmVzdWx0JDAiLCJ2YWx1ZSQwIiwiYiQxIiwiYSQxIiwiYiQyIiwiYSQyIiwiYiQzIiwiYSQzIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwid3JpdGVfaW50bGl0Iiwid3JpdGVfZmxvYXRsaXQiLCJ3cml0ZV9zdHJpbmdsaXQiLCJ3cml0ZV90dXBsZSIsIm8iLCJ3cml0ZV92YXJpYW50IiwicyQxIiwicyQyIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ2JDAiLCJsJDIiLCJ4JDMiLCJvcCIsInJlcHJlc2VudGF0aW9uIiwieCQ0IiwicmVwcmVzZW50YXRpb24kMCIsInR1cCIsImIkNCIsImEkNCIsIm5hbWUkMCIsInRvX2Jhc2ljIiwieCQ2IiwieCQ1IiwiYiQ1IiwiYSQ1IiwicyQzIiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicyQ0IiwieW9qc29uX29mX3VuaXQiLCJ5b2pzb25fb2ZfYm9vbCIsImIiLCJ5b2pzb25fb2Zfc3RyaW5nIiwic3RyIiwieW9qc29uX29mX2J5dGVzIiwiYnl0ZXMiLCJ5b2pzb25fb2ZfY2hhciIsImMiLCJ5b2pzb25fb2ZfaW50IiwibiIsInlvanNvbl9vZl9mbG9hdCIsInlvanNvbl9vZl9pbnQzMiIsInlvanNvbl9vZl9pbnQ2NCIsInlvanNvbl9vZl9uYXRpdmVpbnQiLCJ5b2pzb25fb2ZfcmVmIiwieW9qc29uX29mX2EiLCJyZiIsInlvanNvbl9vZl9sYXp5X3QiLCJsdiIsInlvanNvbl9vZl9vcHRpb24iLCJ4IiwieW9qc29uX29mX3BhaXIiLCJ5b2pzb25fb2ZfYiIsImEiLCJ5b2pzb25fb2ZfdHJpcGxlIiwieW9qc29uX29mX2MiLCJ5b2pzb25fb2ZfbGlzdCIsImxzdCIsInlvanNvbl9vZl9hcnJheSIsImFyIiwibHN0X3JlZiIsImkiLCJ5b2pzb25fb2ZfaGFzaHRibCIsInlvanNvbl9vZl9rZXkiLCJ5b2pzb25fb2ZfdmFsIiwiaHRibCIsImNvbGwiLCJrIiwidiIsImFjYyIsInlvanNvbl9vZl9vcGFxdWUiLCJ5b2pzb25fb2ZfZnVuIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3lvanNvbl9lcnJvcl9leG4iLCJleGMiLCJ5b2pzb24iLCJvZl95b2pzb25fZXJyb3IiLCJ3aGF0IiwidW5pdF9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInN0cmluZ19vZl95b2pzb24iLCJieXRlc19vZl95b2pzb24iLCJjaGFyX29mX3lvanNvbiIsImludF9vZl95b2pzb24iLCJmbG9hdF9vZl95b2pzb24iLCJpbnQzMl9vZl95b2pzb24iLCJpbnQ2NF9vZl95b2pzb24iLCJuYXRpdmVpbnRfb2ZfeW9qc29uIiwicmVmX29mX3lvanNvbiIsImFfb2ZfeW9qc29uIiwibGF6eV90X29mX3lvanNvbiIsIm9wdGlvbl9vZl95b2pzb24iLCJwYWlyX29mX3lvanNvbiIsImJfb2ZfeW9qc29uIiwiYl95b2pzb24iLCJhX3lvanNvbiIsInRyaXBsZV9vZl95b2pzb24iLCJjX29mX3lvanNvbiIsImNfeW9qc29uIiwibGlzdF9vZl95b2pzb24iLCJyZXZfbHN0IiwiYXJyYXlfb2ZfeW9qc29uIiwidCIsImgiLCJsZW4iLCJyZXMiLCJ0JDAiLCJoJDAiLCJoYXNodGJsX29mX3lvanNvbiIsImtleV9vZl95b2pzb24iLCJ2YWxfb2ZfeW9qc29uIiwiYWN0Iiwidl95b2pzb24iLCJrX3lvanNvbiIsIm9wYXF1ZV9vZl95b2pzb24iLCJmdW5fb2ZfeW9qc29uIiwic3ByaW50ZiIsInR1cGxlX29mX3NpemVfbl9leHBlY3RlZCIsImxvYyIsInN0YWdfbm9fYXJncyIsInN0YWdfaW5jb3JyZWN0X25fYXJncyIsInRhZyIsIm1zZyIsInN0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSIsInVuZXhwZWN0ZWRfc3RhZyIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsInJlc3QiLCJmaWVsZCIsInJlc3QkMCIsInJlY29yZF91bmRlZmluZWRfZWxlbWVudHMiLCJ1bmRlZmluZWQkMCIsInJlY29yZF9saXN0X2luc3RlYWRfYXRvbSIsInJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIiwibm9fdmFyaWFudF9tYXRjaCIsIm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQiLCJwdGFnX25vX2FyZ3MiLCJwdGFnX2luY29ycmVjdF9uX2FyZ3MiLCJjbnN0ciIsInB0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV90eXBlIiwic3ltYm9sIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsInNpbmdsZXRvbiIsInBvcyIsIngiLCJ1bmlvbiIsImYiLCJ0MSIsInQyIiwieHMyIiwieDIiLCJwMiIsInhzMSIsIngxIiwicDEiLCJtYXAiLCJyZXN0IiwibWFwaSIsIm1hcGsiLCJmb2xkX2xlZnQiLCJ6JDAiLCJlcnJvcl9zb3VyY2VfMDAyIiwiemVybyIsInRfb2Zfc2V4cCIsInhfMDAzIiwiY29sIiwicm93Iiwic2V4cF9vZl90IiwiY29sXzAwNyIsInJvd18wMDUiLCJhcmdfMDA4IiwiYm5kc18wMDQiLCJhcmdfMDA2IiwiYm5kc18wMDQkMCIsImNvbXBhcmUiLCJwb3MxIiwicG9zMiIsImVycm9yX3NvdXJjZV8wMDQiLCJvZl9hbm5vdF8wMDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInNleHBfYXJnc18wMTMiLCJhcmcxXzAxNSIsImFyZzBfMDE0IiwicmVzMF8wMTYiLCJyZXMxXzAxNyIsInNleHBfYXJnc18wMDgiLCJhcmcwXzAwOSIsInJlczBfMDEwIiwib2ZfYW5ub3RfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJyZXMwXzA0MiIsInJlczFfMDQzIiwiYWxpZ24iLCJsIiwiYW5ub3QiLCJyZW1vdmVfYW5ub3RzIiwibGF5b3V0IiwibGF5b3V0JDAiLCJzdHJpbmciLCJsMiIsImwxIiwibGF5b3V0JDEiLCJta19vZl9sYXlvdXQiLCJ0ZXh0IiwiY29sdW1uIiwiZ28iLCJpbmRlbnQiLCJpbmRlbnQkMCIsImltcDEiLCJpbXAyIiwiaW5kZW50JDEiLCJzdHJpbmdfb2ZfbGF5b3V0IiwicmVjb3JkIiwiczEiLCJzMiIsImltcCIsInN0cmluZ3Nfb2ZfbGF5b3V0IiwicmVzdDIiLCJmaXJzdF9zdHJpbmdfMiIsImZpcnN0X2luZGVudF8yIiwicmVzdDEiLCJsYXN0X3N0cmluZ18xIiwibGFzdF9pbmRlbnRfMSIsInNwbGl0X2ZpcnN0IiwieHMiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfbGFzdF9vcHQiLCJ5cyIsInkiLCJzcGxpdF9sYXN0IiwiciIsImJveCIsImVycm9yX3NvdXJjZV8wMTEiLCJlcnJvcl9zb3VyY2VfMDE2IiwiYm94X29mX3NleHAiLCJ3aWR0aCIsImhlaWdodCIsInNleHBfb2ZfYm94Iiwid2lkdGhfMDA3IiwiaGVpZ2h0XzAwNSIsIm9mX2Fubm90XzAwOSIsInhfMDEyIiwidF9vZl9zZXhwJDAiLCJtZXRyaWNzIiwib2ZfYW5ub3RfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5IiwicmVzMF8wMjciLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMV8wMzkiLCJyZXMwXzA0MCIsInJlczFfMDQxIiwic2V4cF9hcmdzXzAzMCIsImFyZzFfMDMyIiwiYXJnMF8wMzEiLCJyZXMxXzAzNCIsIm9mX2Fubm90XzA0MyIsIm1ldHJpY3NfMDQ3IiwibGF5b3V0XzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImFyZ18wNDYiLCJzZXhwX29mX3QkMCIsImJuZHNfMDQ0JDAiLCJvZl9hbm5vdF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwiYXJnMV8wNTkiLCJhcmcwXzA1OCIsInJlczBfMDYwIiwicmVzMV8wNjEiLCJtIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsIm1pZCIsInRhYmxlIiwibWsiLCJtaWRfYm94IiwibCQwIiwiYm91bmRpbmdfYm94IiwiYnciLCJiaCIsImwkMSIsIm0kMiIsIm92ZXJmbG93X2Nvc3QiLCJoZWlnaHRfY29zdCIsIm1rX2hlaWdodCIsIm1rX292ZXJmbG93IiwiaW5mIiwiYWRkIiwiYzEiLCJjMiIsImVxIiwibHQiLCJsZXEiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAwOCIsImVycm9yX3NvdXJjZV8wNjgiLCJlcnJvcl9zb3VyY2VfMDczIiwiaGFzaCIsImVxdWFsIiwidzIiLCJ3MSIsIm9mX2Fubm90XzA2NiIsInhfMDY5IiwiZG9jIiwibWVtIiwib2ZfYW5ub3RfMDcwIiwic2V4cF8wNzUiLCJ0YWdfMDc2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJzZXhwX2FyZ3NfMDgyIiwiYXJnMV8wODQiLCJhcmcwXzA4MyIsInJlczBfMDg1IiwicmVzMV8wODYiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMV8xMDMiLCJhcmcwXzEwMiIsInJlczBfMTA0IiwicmVzMV8xMDUiLCJzZXhwX2FyZ3NfMDc3IiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsIm9mX2Fubm90XzEwNyIsImRvY18xMTEiLCJtZW1fMTA5IiwiYXJnXzExMiIsImJuZHNfMTA4IiwiYXJnXzExMCIsImJuZHNfMTA4JDAiLCJvZl9hbm5vdF8xMTMiLCJhcmcwXzExNCIsInJlczBfMTE1IiwiYXJnMV8xMTciLCJhcmcwXzExNiIsInJlczBfMTE4IiwicmVzMV8xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwiYXJnMV8xMjMiLCJhcmcwXzEyMiIsInJlczBfMTI0IiwicmVzMV8xMjUiLCJhcmcxXzEyNyIsImFyZzBfMTI2IiwicmVzMF8xMjgiLCJyZXMxXzEyOSIsInRfb2ZfdCIsInQiLCJmYWlsIiwiZW1wdHkiLCJzcGFjZSIsImluZGVudF9hbmRfYWxpZ24iLCJoY2F0IiwiaGNhdHMiLCJkb2NzIiwiaHNlcCIsImhzZXBzIiwidnNlcCIsInZzZXBzIiwiY2hvaWNlIiwiY2hvaWNlcyIsIm1hcF90IiwiZCIsIm1hcF9hbm5vdCIsImQyIiwiZDEiLCJkJDAiLCJkJDEiLCJkMiQwIiwiZDEkMCIsImFsbCIsImxzMSIsImxzMiIsIm1fdW5pb24iLCJjb3N0X3VuaW9uIiwiY29zdDIiLCJjb3N0MSIsImxheW91dF9vZl9kb2MiLCJoIiwicG9zJDAiLCJrZXkiLCJ2YWx1ZSIsInZhbHVlJDAiLCJjb3N0Iiwib3ZlcmZsb3ciLCJ6IiwibGF5b3V0MSIsImxheW91dHMiLCJsYXlvdXQyIiwicCIsImMiLCJsMSQwIiwibGF5b3V0X29mX2RvYyQwIiwieF9jb3N0IiwieF9wb3MiLCJzZXhwX2FyZ3NfMDE4IiwiYXJnMF8wMTkiLCJyZXMwXzAyMCIsInJlczBfMDE1Iiwic2V4cF9hcmdzXzAyMyIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwib2ZfYW5ub3RfMDI5IiwiYXJnMF8wMzAiLCJyZXMwXzAzMSIsInJlczBfMDM1IiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJib3gxJDAiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhcHBlbmRfbGFzdCQwIiwiYm94MSQxIiwiYW5ub3QkMCIsImJveGVzIiwiYm94ZXMxIiwibGVhZGluZyQwIiwiYm94ZXMyIiwiZXJyb3Jfc291cmNlXzAwMiIsInRwX2xvYyIsImVycm9yX3NvdXJjZV8wMTEiLCJ0cF9sb2MkMCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJ4XzAwMyIsInBlcmNlbnRhZ2UiLCJyZXN1bHRzIiwic2V4cF9vZl9zeW50YXhfcmVzdWx0IiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsImFyZ18wMDgiLCJibmRzXzAwNCIsImFyZ18wMDYiLCJibmRzXzAwNCQwIiwic3ludGF4X3Jlc3VsdF9vZl95b2pzb24iLCJ5b2pzb24iLCJmaWVsZF95b2pzb25zIiwicmVzdWx0c19maWVsZCIsInBlcmNlbnRhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwicGVyY2VudGFnZV92YWx1ZSIsInJlc3VsdHNfdmFsdWUiLCJ5b2pzb25fb2Zfc3ludGF4X3Jlc3VsdCIsInZfcGVyY2VudGFnZSIsInZfcmVzdWx0cyIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsImZpbmRfdmFyX3VwYXQiLCJuYW1lIiwidXBhdCIsInVwYXQkMCIsInVwYXQkMSIsInVwMSIsInVwYXQkMiIsInVwYXQkMyIsInVwMSQwIiwidXBhdCQ0IiwibCIsImFjYyIsInVwIiwiZmluZF9pbl9sZXQiLCJkZWYiLCJkZWYkMCIsInBsIiwidWwiLCJ1ZSIsImRlZiQyIiwiZGVmJDEiLCJmaW5kX2ZuIiwidWV4cCIsInVleHAkMCIsImwkMCIsImJvZHkkMCIsImwkMSIsImFyZ3MiLCJmbiIsInUiLCJ1ZXhwJDMiLCJ1MiIsInUxJDAiLCJsJDIiLCJ1ZXhwJDEiLCJ1ZXhwJDIiLCJ1MSIsInVsJDAiLCJ1MSQxIiwiYm9keSIsImwkMyIsInZhcl9tZW50aW9uX3VwYXQiLCJ2YXJfbWVudGlvbiIsInAiLCJ1cyIsImciLCJwZSIsImUiLCJ2YXJfYXBwbGllZCIsIngkMSIsInVleHAkNCIsInVleHAkNSIsIngkMiIsInVleHAkNiIsInVleHAkNyIsInUxJDIiLCJpc19yZWN1cnNpdmUiLCJmbl9ib2RpZXMiLCJ0YWlsX2NoZWNrIiwiYXJncyQwIiwidTIkMCIsInUyJDEiLCJpc190YWlsX3JlY3Vyc2l2ZSIsImNoZWNrIiwicHJlZGljYXRlcyIsInByZWQiLCJsZW5ndGgiLCJwYXNzaW5nIiwicmVzIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDE1IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsInNleHBfYXJnc18wMzAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wMzMiLCJyZXMwXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4IiwiYXJnMF8wMzkiLCJyZXMwXzA0MCIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAxMyIsImVycm9yX3NvdXJjZV8wMjgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wMzgiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8wNDkiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8wNjAiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8wOTQiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8xMDEiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8xMjAiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8xMzMiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8xNDgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwid3JvbmdfaW1wbF9vZl9zZXhwIiwib2ZfY29kZV8wMDEiLCJ4XzAwNCIsImhpbnQiLCJpbXBsIiwic2V4cF9vZl93cm9uZ19pbXBsIiwib2ZfY29kZV8wMDUiLCJoaW50XzAwOSIsImltcGxfMDA3IiwiYXJnXzAxMCIsImJuZHNfMDA2IiwiYm5kc18wMDYkMCIsIndyb25nX2ltcGxfb2ZfeW9qc29uIiwib2ZfY29kZSIsImltcGxfZmllbGQiLCJoaW50X2ZpZWxkIiwiaGludF92YWx1ZSIsImltcGxfdmFsdWUiLCJ5b2pzb25fb2Zfd3JvbmdfaW1wbCIsInZfaGludCIsInZfaW1wbCIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMTEiLCJ4XzAxNCIsImhpbnRzIiwidGVzdHMiLCJzZXhwX29mX2hpZGRlbl90ZXN0cyIsIm9mX2NvZGVfMDE1IiwiaGludHNfMDE5IiwidGVzdHNfMDE3IiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJoaWRkZW5fdGVzdHNfb2ZfeW9qc29uIiwidGVzdHNfZmllbGQiLCJoaW50c19maWVsZCIsImhpbnRzX3ZhbHVlIiwidGVzdHNfdmFsdWUiLCJ5b2pzb25fb2ZfaGlkZGVuX3Rlc3RzIiwidl9oaW50cyIsInZfdGVzdHMiLCJoaW50X29mX3NleHAiLCJzZXhwX29mX2hpbnQiLCJoaW50X29mX3lvanNvbiIsInlvanNvbl9vZl9oaW50Iiwic3ludGF4X3Rlc3Rfb2Zfc2V4cCIsInNleHBfMDI3IiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJzZXhwX29mX3N5bnRheF90ZXN0IiwiYXJnMV8wMzAiLCJhcmcwXzAyOSIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzeW50YXhfdGVzdF9vZl95b2pzb24iLCJ2MSIsInYxJDAiLCJ5b2pzb25fb2Zfc3ludGF4X3Rlc3QiLCJzeW50YXhfdGVzdHNfb2Zfc2V4cCIsInhfMDM0Iiwic2V4cF9vZl9zeW50YXhfdGVzdHMiLCJ4XzAzNSIsInN5bnRheF90ZXN0c19vZl95b2pzb24iLCJ0IiwieW9qc29uX29mX3N5bnRheF90ZXN0cyIsInYiLCJ5b3VyX3Rlc3RzX29mX3NleHAiLCJvZl9jb2RlXzAzNiIsInhfMDM5IiwicHJvdmlkZWQiLCJyZXF1aXJlZCIsInNleHBfb2ZfeW91cl90ZXN0cyIsIm9mX2NvZGVfMDQwIiwicHJvdmlkZWRfMDQ2IiwicmVxdWlyZWRfMDQ0IiwidGVzdHNfMDQyIiwiYXJnXzA0NyIsImJuZHNfMDQxIiwiYXJnXzA0NSIsImJuZHNfMDQxJDAiLCJhcmdfMDQzIiwiYm5kc18wNDEkMSIsInlvdXJfdGVzdHNfb2ZfeW9qc29uIiwicmVxdWlyZWRfZmllbGQiLCJwcm92aWRlZF9maWVsZCIsImZ2YWx1ZSQxIiwicHJvdmlkZWRfdmFsdWUiLCJyZXF1aXJlZF92YWx1ZSIsInlvanNvbl9vZl95b3VyX3Rlc3RzIiwidl9wcm92aWRlZCIsInZfcmVxdWlyZWQiLCJhcmckMSIsImJuZHMkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwieF8wNTAiLCJpbXBsX2dyYWRpbmciLCJtdXRhdGlvbl90ZXN0aW5nIiwidGVzdF92YWxpZGF0aW9uIiwic2V4cF9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJpbXBsX2dyYWRpbmdfMDU2IiwibXV0YXRpb25fdGVzdGluZ18wNTQiLCJ0ZXN0X3ZhbGlkYXRpb25fMDUyIiwiYXJnXzA1NyIsImJuZHNfMDUxIiwiYXJnXzA1NSIsImJuZHNfMDUxJDAiLCJhcmdfMDUzIiwiYm5kc18wNTEkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl95b2pzb24iLCJ0ZXN0X3ZhbGlkYXRpb25fZmllbGQiLCJtdXRhdGlvbl90ZXN0aW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX3ZhbHVlIiwibXV0YXRpb25fdGVzdGluZ192YWx1ZSIsInRlc3RfdmFsaWRhdGlvbl92YWx1ZSIsInlvanNvbl9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X2ltcGxfZ3JhZGluZyIsInZfbXV0YXRpb25fdGVzdGluZyIsInZfdGVzdF92YWxpZGF0aW9uIiwidmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uIiwicF9vZl9zZXhwIiwib2ZfY29kZV8wNTgiLCJ4XzA2MSIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJzZXhwX29mX3AiLCJvZl9jb2RlXzA2MiIsInN5bnRheF90ZXN0c18wODYiLCJoaWRkZW5fdGVzdHNfMDg0IiwiaGlkZGVuX2J1Z3NfMDgyIiwieW91cl9pbXBsXzA4MCIsInlvdXJfdGVzdHNfMDc4IiwiY29ycmVjdF9pbXBsXzA3NiIsInByZWx1ZGVfMDc0IiwicG9pbnRfZGlzdHJpYnV0aW9uXzA3MiIsInByb21wdF8wNzAiLCJtb2R1bGVfbmFtZV8wNjgiLCJ2ZXJzaW9uXzA2NiIsInRpdGxlXzA2NCIsImFyZ18wODciLCJibmRzXzA2MyIsImFyZ18wODUiLCJibmRzXzA2MyQwIiwiYXJnXzA4MyIsImJuZHNfMDYzJDEiLCJhcmdfMDgxIiwiYm5kc18wNjMkMiIsImFyZ18wNzkiLCJibmRzXzA2MyQzIiwiYXJnXzA3NyIsImJuZHNfMDYzJDQiLCJhcmdfMDc1IiwiYm5kc18wNjMkNSIsImFyZ18wNzMiLCJibmRzXzA2MyQ2IiwiYXJnXzA3MSIsImJuZHNfMDYzJDciLCJhcmdfMDY5IiwiYm5kc18wNjMkOCIsImFyZ18wNjciLCJibmRzXzA2MyQ5IiwiYXJnXzA2NSIsImJuZHNfMDYzJDEwIiwicF9vZl95b2pzb24iLCJ0aXRsZV9maWVsZCIsInZlcnNpb25fZmllbGQiLCJtb2R1bGVfbmFtZV9maWVsZCIsInByb21wdF9maWVsZCIsInBvaW50X2Rpc3RyaWJ1dGlvbl9maWVsZCIsInByZWx1ZGVfZmllbGQiLCJjb3JyZWN0X2ltcGxfZmllbGQiLCJ5b3VyX3Rlc3RzX2ZpZWxkIiwieW91cl9pbXBsX2ZpZWxkIiwiaGlkZGVuX2J1Z3NfZmllbGQiLCJoaWRkZW5fdGVzdHNfZmllbGQiLCJzeW50YXhfdGVzdHNfZmllbGQiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJmdmFsdWUkOCIsImZ2YWx1ZSQ5IiwiZnZhbHVlJDEwIiwic3ludGF4X3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX2J1Z3NfdmFsdWUiLCJ5b3VyX2ltcGxfdmFsdWUiLCJ5b3VyX3Rlc3RzX3ZhbHVlIiwiY29ycmVjdF9pbXBsX3ZhbHVlIiwicHJlbHVkZV92YWx1ZSIsInBvaW50X2Rpc3RyaWJ1dGlvbl92YWx1ZSIsInByb21wdF92YWx1ZSIsIm1vZHVsZV9uYW1lX3ZhbHVlIiwidmVyc2lvbl92YWx1ZSIsInRpdGxlX3ZhbHVlIiwieW9qc29uX29mX3AiLCJ2X3N5bnRheF90ZXN0cyIsInZfaGlkZGVuX3Rlc3RzIiwidl9oaWRkZW5fYnVncyIsInZfeW91cl9pbXBsIiwidl95b3VyX3Rlc3RzIiwidl9jb3JyZWN0X2ltcGwiLCJ2X3ByZWx1ZGUiLCJ2X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInZfcHJvbXB0Iiwidl9tb2R1bGVfbmFtZSIsInZfdmVyc2lvbiIsInZfdGl0bGUiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwiYXJnJDQiLCJibmRzJDQiLCJhcmckNSIsImJuZHMkNSIsImFyZyQ2IiwiYm5kcyQ2IiwiYXJnJDciLCJibmRzJDciLCJhcmckOCIsImJuZHMkOCIsImFyZyQ5IiwiYm5kcyQ5IiwiYXJnJDEwIiwiYm5kcyQxMCIsImtleV9vZl9zZXhwIiwic2V4cF8wOTMiLCJhcmcxXzA5MCIsImFyZzBfMDg5IiwicmVzMF8wOTEiLCJyZXMxXzA5MiIsInNleHBfb2Zfa2V5IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBvc19vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX29mX3BvcyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJwb3Nfb2ZfeW9qc29uIiwieW9qc29uX29mX3BvcyIsInNwZWNfb2Zfc2V4cCIsInhfMTExIiwic2V4cF9vZl9zcGVjIiwieF8xMTIiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwidHJhbnNpdGlvbmFyeV9zcGVjX29mX3NleHAiLCJ4XzExNCIsInNleHBfb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwieF8xMTUiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2ZfeW9qc29uIiwieW9qc29uX29mX3RyYW5zaXRpb25hcnlfc3BlYyIsIm1hcCIsImYiLCJ3cm9uZ19pbXBsIiwiZWRzX29mX3NleHAiLCJ4XzExNyIsInNleHBfb2ZfZWRzIiwieF8xMTgiLCJlZHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2VkcyIsInN0YXRlX29mX3NleHAiLCJ4XzEyMSIsImVkcyIsInBvcyIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMTI1IiwicG9zXzEyMyIsImFyZ18xMjYiLCJibmRzXzEyMiIsImFyZ18xMjQiLCJibmRzXzEyMiQwIiwic3RhdGVfb2ZfeW9qc29uIiwicG9zX2ZpZWxkIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwicG9zX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJ2X3BvcyIsImtleV9vZl9zdGF0ZSIsImExIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwic2V4cF8xMzgiLCJhcmcxXzEzNSIsImFyZzBfMTM0IiwicmVzMF8xMzYiLCJyZXMxXzEzNyIsInNleHBfMTMyIiwiYXJnMV8xMjkiLCJhcmcwXzEyOCIsInJlczBfMTMwIiwicmVzMV8xMzEiLCJzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJhcmcxXzE0NCIsImFyZzBfMTQzIiwicmVzMF8xNDUiLCJyZXMxXzE0NiIsImFyZzFfMTQwIiwiYXJnMF8xMzkiLCJyZXMwXzE0MSIsInJlczFfMTQyIiwicGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZSIsImVkaXRvcl9vZl9zdGF0ZSIsImkiLCJwdXRfZWRpdG9yIiwic3RhdGUiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJpZHhfb2ZfcG9zIiwicG9zX29mX2lkeCIsImlkeCIsInN3aXRjaF9lZGl0b3IiLCJpbnN0cnVjdG9yX21vZGUiLCJleGVyY2lzZSIsInppcHBlcl9vZl9jb2RlIiwiY29kZSIsInppcHBlciIsInRyYW5zaXRpb24iLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInlvdXJfdGVzdHMkMCIsInlvdXJfaW1wbCQwIiwiaGlkZGVuX2J1Z3MkMCIsImltcGwkMCIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZHNfb2Zfc3BlYyIsInNldHRpbmdzIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwidGVybV9vZiIsInN0aXRjaDMiLCJlZDEiLCJlZDIiLCJlZDMiLCJzdGl0Y2hfdGVybSIsImluc3RydWN0b3IiLCJ5b3VyX2ltcGxfdGVybSIsInByZWx1ZGVfdGVybSIsInVzZXJfaW1wbF90ZXJtIiwidGVzdF92YWxpZGF0aW9uX3Rlcm0iLCJ1c2VyX3Rlc3RzX3Rlcm0iLCJoaWRkZW5fdGVzdHNfdGVybSIsInN0aXRjaF90ZXJtJDAiLCJzdGl0Y2hfc3RhdGljIiwibWsiLCJpbmZvX21hcCIsInN0aXRjaF9zdGF0aWMkMCIsImhpZGRlbl9idWdzX2tleSIsImtleV9mb3Jfc3RhdGljcyIsInNwbGljZWRfZWxhYnMiLCJ1c2VyX3Rlc3RzIiwidXNlcl9pbXBsIiwiZWxhYiIsInMiLCJoaWRkZW5fYnVnIiwiZW1wdHkiLCJzdGF0aWNzX29ubHkiLCJzdGF0aWNzIiwic3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzIiwic3RpdGNoX2R5bmFtaWMiLCJyZXN1bHRfb2YiLCJyZXN1bHRzJDAiLCJ0ZXN0X3ZhbGlkYXRpb24kMCIsInVzZXJfaW1wbCQwIiwidXNlcl90ZXN0cyQwIiwiaW5zdHJ1Y3RvciQwIiwic3RpdGNoX2R5bmFtaWMkMCIsImVkaXRvcl9wcCIsInNlcmlhbGl6YXRpb24iLCJleHBvcnRfbW9kdWxlIiwicmVjb3JkIiwiZGF0YSIsInRyYW5zaXRpb25hcnlfZWRpdG9yX3BwIiwiZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlIiwiZXhwb3J0X2dyYWRpbmdfbW9kdWxlIiwiaGVhZGVyIiwiYmxhbmtfc3BlYyIsInJlcXVpcmVkX3Rlc3RzIiwicHJvdmlkZWRfdGVzdHMiLCJudW1fd3JvbmdfaW1wbHMiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInhfMTU0Iiwic2V4cF8xNTMiLCJhcmcxXzE1MCIsImFyZzBfMTQ5IiwicmVzMF8xNTEiLCJyZXMxXzE1MiIsImV4ZXJjaXNlX2RhdGEiLCJjdXJfZXhlcmNpc2UiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMTU4IiwiY3VyX2V4ZXJjaXNlXzE1NiIsImFyZ18xNTkiLCJhcmcxXzE2MSIsImFyZzBfMTYwIiwicmVzMF8xNjIiLCJyZXMxXzE2MyIsImJuZHNfMTU1IiwiYXJnXzE1NyIsImJuZHNfMTU1JDAiLCJleGVyY2lzZV9leHBvcnRfb2ZfeW9qc29uIiwiY3VyX2V4ZXJjaXNlX2ZpZWxkIiwiZXhlcmNpc2VfZGF0YV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfdmFsdWUiLCJjdXJfZXhlcmNpc2VfdmFsdWUiLCJ5b2pzb25fb2ZfZXhlcmNpc2VfZXhwb3J0Iiwidl9leGVyY2lzZV9kYXRhIiwidl9jdXJfZXhlcmNpc2UiLCJzZXJpYWxpemVfZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwZXJjZW50YWdlX29mX3NleHAiLCJzZXhwX29mX3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJjZW50YWdlIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJyZXBvcnQiLCJudW1fdGVzdHMiLCJudW1fcGFzc2luZyIsInRlc3Rfc3VtbWFyeV9zdHIiLCJoaWRkZW5fYnVnX3N0YXR1cyIsInRlc3RfdmFsaWRhdGlvbl9kYXRhIiwiaGlkZGVuX2J1Z19kYXRhIiwiaGlkZGVuX2J1Z19kYXRhJDAiLCJ0ZXN0X3ZhbGlkYXRpb25fZGF0YSQwIiwidmFsaWRhdGlvbl90ZXN0X21hcCIsImhpZGRlbl9idWdfdGVzdF9tYXAiLCJmb3VuZCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwibWskMCIsImhpZGRlbl9idWdzX3N0YXRlIiwicGVyY2VudGFnZSQwIiwibnVtX3Bhc3NlZCIsInN1bW1hcnlfc3RyIiwidG90YWwiLCJtayQxIiwiaCIsInN5bnRheF9yZXN1bHRzIiwiciIsIm1rJDIiLCJ0ZXN0X3Jlc3VsdHMkMCIsInN0YXR1c2VzIiwiaGludGVkX3Jlc3VsdHMiLCJwZXJjZW50YWdlJDEiLCJzeW50YXhfcmVwb3J0IiwidGVzdF9zdW1tYXJ5X3N0ciQwIiwibWskMyIsInN0aXRjaGVkX2R5bmFtaWNzIiwib3ZlcmFsbF9zY29yZSIsImltcGxfZ3JhZGluZ19yZXBvcnQiLCJtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCIsInRlc3RfdmFsaWRhdGlvbl9yZXBvcnQiLCJ0dl9tYXgiLCJ0dl9wb2ludHMiLCJtdF9tYXgiLCJtdF9wb2ludHMiLCJpZ19tYXgiLCJpZ19wb2ludHMiLCJ0b3RhbF9wb2ludHMiLCJvdXRwdXRfaGVhZGVyIiwiREVCVUciLCJPTURfREVCVUciLCJkZWJ1ZyIsIndhcm4iLCJtc2ciLCJ3ZSIsInRyYWNrZml4IiwicmFpc2UiLCJlIiwib2ZfbGlzdCIsImwiLCJyIiwiZnNwbGl0X3JldiIsImYiLCJleGNsIiwiYWNjdSIsImwkMCIsInRsIiwicmlnaHQiLCJsZWZ0JDAiLCJ0bCQwIiwibGVmdCIsInJpZ2h0JDAiLCJsZWZ0JDIiLCJ0bCQxIiwibGVmdCQxIiwiZnNwbGl0IiwicmV2IiwiaWRfb2Zfc3RyaW5nIiwiaWRzIiwicyIsIm4iLCJvdXQiLCJzdGFydGVkIiwiaSIsImMiLCJpJDIiLCJpJDAiLCJpJDEiLCJzJDAiLCJpJDQiLCJsYXN0X3RyYWlsaW5nIiwiaSQzIiwiaHRtbGVudGl0aWVzIiwibWQiLCJiIiwiaiQxIiwiaiIsImokMCIsImokNCIsImokMiIsImokMyIsIm1pbmltYWxpemVfYmxhbmtzIiwiZiQwIiwiZWF0IiwiZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMiLCJodG1sIiwiaHRtbCQwIiwiY3V0X29uX2NoYXJfZnJvbSIsInJlbW92ZV9wcmVmaXhfc3BhY2VzIiwiaHRtbCQyIiwicmVzIiwiYWZ0ZXJfZXEiLCJuYW1lIiwibmFtZSQwIiwiYWZ0ZXJfZXEkMCIsInJlc3QiLCJ2YWx1ZSIsIm5ld19zIiwiYSIsInJlcyQwIiwiaHRtbCQxIiwiZXh0cmFjdF9pbm5lcl9odG1sIiwicCIsImh0bWxfdm9pZF9lbGVtZW50cyIsInN5bWJvbCIsImwxIiwibDIiLCJzZWxmXzEiLCJ0aXRsZSIsInVybCIsImxuIiwibG9vc2VfY29tcGFyZSIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsImUxIiwidGwyJDAiLCJlMiQwIiwidGwxJDAiLCJlMSQwIiwidGwyIiwiZTIiLCJ0bDEiLCJ0bDIkMSIsImUyJDEiLCJ0bDEkMSIsImUxJDEiLCJ0bDEkMiIsImMxIiwidGwyJDIiLCJjMiIsImkkNSIsInRsMSQzIiwidGl0bGUxIiwidDEkMSIsImhyZWYxIiwidGwyJDMiLCJ0aXRsZTIiLCJ0MiQxIiwiaHJlZjIiLCJpJDYiLCJpJDciLCJpJDgiLCJ0bDIkNCIsImZhbGxiYWNrMiIsIngyIiwibmFtZTIiLCJyZWZfY29udGFpbmVyMiIsInRsMSQ0IiwiZmFsbGJhY2sxIiwieDEiLCJuYW1lMSIsInJlZl9jb250YWluZXIxIiwiZTEkMiIsInRsMiQ1IiwiZTIkMiIsInRsMSQ1IiwiaSQxMSIsImkkMTIiLCJpJDkiLCJjZmYiLCJpJDEwIiwibDEkMCIsImwyJDAiLCJ0bDIkNiIsImUyJDMiLCJ0bDEkNiIsImUxJDMiLCJpJDEzIiwic2VsZl8yIiwiZW1wdHlfZXh0ZW5zaW9uIiwibm9ybWFsaXNlX21kIiwibG9vcCIsInYiLCJ0bCQyIiwidiQwIiwibG9vcCQwIiwidGwkMyIsInYkMSIsInRsJDQiLCJ2JDIiLCJ0bCQ1IiwidiQzIiwidGwkNiIsInYkNCIsInRsJDciLCJ2JDUiLCJ0bCQxMCIsInRsJDkiLCJ0bCQ4IiwidGwkMTEiLCJ0bCQxMiIsInYkNiIsInRsJDEzIiwidiQ3IiwidGwkMTQiLCJ2JDgiLCJ0bCQxNSIsInYkOSIsInRsJDE2IiwidiQxMCIsInRsJDE3IiwidiQxMSIsInRsJDE4IiwidiQxMiIsImhyZWYiLCJ0bCQxOSIsInYkMTMiLCJzZWxmXzMiLCJ2aXNpdCIsImwkMSIsImwkMiIsImwkMyIsImwkNCIsImwkNSIsImwkNiIsImwkNyIsImwkOCIsImwkOSIsImwkMTAiLCJsJDExIiwibCQxMiIsImwkMTMiLCJsJDE0IiwibCQxNSIsImwkMTYiLCJsJDE3IiwibCQxOCIsImwkMTkiLCJ0bCQyMCIsImwkMjAiLCJ0bCQyMSIsImwkMjEiLCJ0bCQyMiIsImwkMjIiLCJ0bCQyMyIsImwkMjMiLCJ0bCQyNCIsImwkMjQiLCJ0bCQyNSIsImwkMjUiLCJ0bCQyNiIsImwkMjYiLCJ0bCQyNyIsImwkMjciLCJ0bCQyOCIsImwkMjgiLCJkZWZhdWx0X2xhbmd1YWdlIiwidGV4dF9vZl9tZCIsIm1kJDAiLCJ0IiwibWQkMSIsIm1kJDIiLCJjJDAiLCJib2R5IiwiYm9keSQwIiwidCQwIiwidCQxIiwicSIsImFsdCIsIml0ZW0iLCJkZWZhdWx0X2NvZGVfc3R5bGlzdCIsImxhbmciLCJjb2RlIiwiZmlsdGVyX3RleHRfb21kX3JldiIsInJlbW92ZV9saW5rcyIsImh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQiLCJyZW1vdmVfaGVhZGVyX2xpbmtzIiwib3ZlcnJpZGUiLCJwaW5kZW50IiwibmwyYnIiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJodG1sX29mX21kIiwibWQkMyIsIm1kJDQiLCJlJDIiLCJtZCQ1IiwiZSQzIiwicyQzIiwiaWgkMCIsImlkJDAiLCJtZCQ2IiwibWQkNyIsImUkNCIsIm1kJDgiLCJlJDUiLCJzJDQiLCJpaCQxIiwiaWQkMSIsIm1kJDkiLCJtZCQxMCIsImUkNiIsIm1kJDExIiwiZSQ3IiwicyQ1IiwiaWgkMiIsImlkJDIiLCJtZCQxMiIsIm1kJDEzIiwiZSQ4IiwibWQkMTQiLCJlJDkiLCJzJDYiLCJpaCQzIiwiaWQkMyIsIm1kJDE1IiwibWQkMTYiLCJlJDEwIiwibWQkMTciLCJlJDExIiwicyQ3IiwiaWgkNCIsImlkJDQiLCJtZCQxOCIsInMkOCIsInMkOSIsInMkMTAiLCJtZCQxOSIsInMkMTEiLCJtZCQyMCIsInMkMTIiLCJzJDE0IiwibmV3X2MiLCJsYW5nJDAiLCJzJDE1IiwibmV3X2MkMCIsInMkMTYiLCJzJDE3IiwicyQxOCIsImZhbGxiYWNrIiwidGV4dCIsInJjIiwicyQxOSIsInRpdGxlJDAiLCJocmVmJDAiLCJmYWxsYmFjayQwIiwicmMkMCIsInMkMjAiLCJ0aXRsZSQxIiwic3JjIiwidGFnbmFtZSIsImF0dHJzJDEiLCJhdHRycyQyIiwicyQyMiIsInN0cmluZ19vZl9hdHRycyIsImF0dHJzIiwiYXR0cnMkMCIsInMkMjEiLCJhdHRycyQzIiwidGFnbmFtZSQwIiwiYXR0cnMkNCIsInMkMjMiLCJzJDI0IiwicyQyNSIsInMkMjYiLCJzJDI3IiwicyQyOCIsInMkMjkiLCJzJDMwIiwidGl0bGUkMiIsInNyYyQwIiwiYWx0JDAiLCJzJDMxIiwieCIsInMkMzIiLCJzJDMzIiwicyQxMyIsImxpIiwiY3MiLCJoZWFkZXJzX29mX21kIiwic2V4cHJfb2ZfbWQiLCJ0bCQyOSIsInRsJDMwIiwiZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMiLCJtYXJrZG93bl9vZl9tZCIsImFkZF9zcGFjZXMiLCJyZWZlcmVuY2VzIiwibGlzdF9pbmRlbnQiLCJmc3RfcF9pbl9saSIsImlzX2luX2xpc3QiLCJmc3RfcF9pbl9saSQwIiwiaXNfaW5fbGlzdCQwIiwiYyQxIiwiYyQyIiwiZmlsdGVyIiwiYiQxIiwiYiQyIiwieCQwIiwiaGQiLCJjJDMiLCJmaWx0ZXIkMCIsImIkMyIsImIkNCIsImhkJDAiLCJuJDAiLCJvdXRwdXRfaW5kZW50ZWRfYmxvY2siLCJwJDAiLCJwJDEiLCJuZWVkc19uZXdsaW5lcyIsImEkMCIsImIkMCIsIm5sIiwieCQxIiwic3RyaW5nX29mX3Rva2VuIiwibiQxIiwibiQyIiwibiQzIiwibiQ0IiwibiQ1IiwibiQ2IiwibiQ3IiwibiQ4IiwibiQ5IiwibiQxMCIsIm4kMTEiLCJuJDEyIiwibiQxMyIsIm4kMTQiLCJuJDE1IiwibiQxNiIsIm4kMTciLCJuJDE4IiwibiQxOSIsIm4kMjAiLCJuJDIxIiwibiQyMiIsIm4kMjMiLCJuJDI0IiwibiQyNSIsIm4kMjYiLCJuJDI3IiwibiQyOCIsIm4kMjkiLCJuJDMwIiwibiQzMSIsIm4kMzIiLCJuJDMzIiwibyIsImxlbmd0aCIsInNwbGl0X2ZpcnN0IiwibGV4IiwicmVzdWx0Iiwid29yZCIsInN0YXJ0Iiwibl9vY2MiLCJyJDAiLCJybiIsInciLCJnZXQiLCJsZW5ndGgkMCIsInN1YiIsImFyciIsInBvcyIsImxlbiIsImxleF9iaWdhcnJheSIsIm1ha2Vfc3BhY2UiLCJzdHJpbmdfb2ZfdG9rZW5zIiwiZGVzdHJpbmdfb2ZfdG9rZW5zIiwidGxpc3QiLCJsaW1pdCIsInRsaXN0JDAiLCJ0bGlzdCQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQxMSIsInByZXZpb3VzJDEwIiwicHJldmlvdXMkMTMiLCJwcmV2aW91cyQxMiIsInByZXZpb3VzJDE1IiwicHJldmlvdXMkMTQiLCJwcmV2aW91cyQxNyIsInByZXZpb3VzJDE2IiwicHJldmlvdXMkMTkiLCJwcmV2aW91cyQxOCIsInByZXZpb3VzJDIxIiwicHJldmlvdXMkMjAiLCJwcmV2aW91cyQyMyIsInByZXZpb3VzJDIyIiwicHJldmlvdXMkMjUiLCJwcmV2aW91cyQyNCIsInByZXZpb3VzJDI3IiwicHJldmlvdXMkMjYiLCJwcmV2aW91cyQyOSIsInByZXZpb3VzJDI4IiwicHJldmlvdXMkMzEiLCJwcmV2aW91cyQzMCIsInByZXZpb3VzJDMzIiwicHJldmlvdXMkMzIiLCJwcmV2aW91cyQzNSIsInByZXZpb3VzJDM0IiwicHJldmlvdXMkMzciLCJwcmV2aW91cyQzNiIsInByZXZpb3VzJDM5IiwicHJldmlvdXMkMzgiLCJwcmV2aW91cyQ0MSIsInByZXZpb3VzJDQwIiwicHJldmlvdXMkNDMiLCJwcmV2aW91cyQ0MiIsInByZXZpb3VzJDkiLCJwcmV2aW91cyQ0NCIsInByZXZpb3VzJDQ4IiwicHJldmlvdXMkNDkiLCJwcmV2aW91cyQ3IiwicHJldmlvdXMkNiIsInByZXZpb3VzJDgiLCJwcmV2aW91cyQ1IiwicHJldmlvdXMkNCIsInByZXZpb3VzJDMiLCJwcmV2aW91cyQyIiwicHJldmlvdXMkMCIsInByZXZpb3VzJDEiLCJwcmV2aW91cyQ0NyIsInByZXZpb3VzJDQ2IiwicHJldmlvdXMkNDUiLCJpbmRlbnRzJDEiLCJpbmRlbnRzJDAiLCJpbmRlbnRzJDIiLCJpbmRlbnRzIiwiZGVmYXVsdF9sYW5nIiwiZXh0ZW5zaW9ucyIsImdoX3VlbXBoX29yX2JvbGRfc3R5bGUiLCJibGluZF9odG1sIiwic3RyaWN0X2h0bWwiLCJ3YXJuX2Vycm9yIiwiaHRtbGNvZGVzX3NldCIsImlubGluZV9odG1sdGFnc19zZXQiLCJub3RpbmJvZHl0YWdzIiwiaHRtbHRhZ3Nfc2V0IiwiZml4IiwiYWNjdSQwIiwidGwkMzEiLCJ0bCQzMiIsInRsJDMzIiwidGwkMzQiLCJ0bCQzNSIsInRsJDM2IiwidGwkMzciLCJ0bCQzOCIsInRsJDM5IiwidGwkNDAiLCJ0bCQ0MSIsInRsJDQyIiwidGwkNDMiLCJ0bCQ0NCIsInRsJDQ1IiwidGwkNDYiLCJ0bCQ0NyIsInRsJDQ4IiwidGwkNDkiLCJ0bCQ1MCIsInRsJDUxIiwidGwkNTIiLCJ0bCQ1MyIsInRsJDU0IiwidGwkNTUiLCJ0bCQ1NiIsInRsJDU3IiwidGwkNTgiLCJ0bCQ1OSIsInRsJDYwIiwidGwkNjEiLCJ0bCQ2MiIsInRsJDYzIiwidGwkNjQiLCJ0bCQ2NSIsInRsJDY2IiwidGwkNjciLCJ0bCQ2OCIsInRsJDY5IiwibiQzNCIsInRsJDcwIiwidGwkNzEiLCJuJDM1IiwidGwkNzIiLCJ0bCQ3MyIsIm4kMzYiLCJ0bCQ3NCIsInRsJDc1IiwibiQzNyIsInRsJDc2IiwidGwkNzciLCJuJDM4IiwidGwkNzgiLCJ0bCQ3OSIsIm4kMzkiLCJ0bCQ4MCIsInRsJDgxIiwibiQ0MCIsInRsJDgyIiwidGwkODMiLCJiJDUiLCJuJDQxIiwidGwkODQiLCJ0bCQ4NSIsImIkNiIsIm4kNDIiLCJ0bCQ4NiIsInRsJDg3IiwiYiQ3IiwibiQ0MyIsInRsJDg4IiwidGwkODkiLCJiJDgiLCJuJDQ0IiwidGwkOTAiLCJ0bCQ5MSIsImIkOSIsIm4kNDUiLCJ0bCQ5MiIsInRsJDkzIiwiYiQxMCIsIm4kNDYiLCJ0bCQ5NCIsInRsJDk1IiwiYiQxMSIsIm4kNDciLCJ0bCQ5NiIsInRsJDk3IiwiYiQxMiIsIm4kNDgiLCJ0bCQ5OCIsInRsJDk5IiwiYiQxMyIsIm4kNDkiLCJ0bCQxMDAiLCJ0bCQxMDEiLCJiJDE0IiwibiQ1MCIsInRsJDEwMiIsInRsJDEwMyIsImIkMTUiLCJuJDUxIiwidGwkMTA0IiwidGwkMTA1IiwiYiQxNiIsIm4kNTIiLCJ0bCQxMDYiLCJ0bCQxMDciLCJiJDE3IiwibiQ1MyIsInRsJDEwOCIsInRsJDEwOSIsImIkMTgiLCJuJDU0IiwidGwkMTEwIiwidGwkMTExIiwiYiQxOSIsIm4kNTUiLCJ0bCQxMTIiLCJ0bCQxMTMiLCJiJDIwIiwibiQ1NiIsInRsJDExNCIsInRsJDExNSIsImIkMjEiLCJuJDU3IiwidGwkMTE2IiwidGwkMTE3IiwiYiQyMiIsIm4kNTgiLCJ0bCQxMTgiLCJ0bCQxMTkiLCJiJDIzIiwibiQ1OSIsInRsJDEyMCIsInRsJDEyMSIsImIkMjQiLCJuJDYwIiwidGwkMTIyIiwidGwkMTIzIiwiYiQyNSIsIm4kNjEiLCJ0bCQxMjQiLCJ0bCQxMjUiLCJiJDI2IiwibiQ2MiIsInRsJDEyNiIsInRsJDEyNyIsImIkMjciLCJuJDYzIiwidGwkMTI4IiwidGwkMTI5IiwiYiQyOCIsIm4kNjQiLCJ0bCQxMzAiLCJ0bCQxMzEiLCJiJDI5IiwibiQ2NSIsInRsJDEzMiIsInRsJDEzMyIsImIkMzAiLCJuJDY2IiwidGwkMTM0IiwidGwkMTM1IiwiYiQzMSIsIm4kNjciLCJ0bCQxMzYiLCJ0bCQxMzciLCJiJDMyIiwibiQ2OCIsInRsJDEzOCIsInRsJDEzOSIsImIkMzMiLCJyZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyIsIm1ha2VfcGFyYWdyYXBocyIsImNwJDAiLCJjcCQ1IiwiYWNjdSQxNyIsImIxIiwiYjIiLCJjbGVhbl9wYXJhZ3JhcGhzIiwiYXNzZXJ0X3dlbGxfZm9ybWVkIiwiZXh0cmFjdF9mYWxsYmFjayIsIm1haW5fbG9vcCIsInJlbWFpbnMiLCJyJDEiLCJhY2N1JDIiLCJyJDIiLCJtIiwiYWNjdSQzIiwidW5pbmRlbnRfcmV2IiwibGV4ZW1lcyIsImNsJDAiLCJ5IiwidW5pbmRlbnQiLCJzbmQiLCJmc3QiLCJpc19ibGFuayIsInNlbXBoX29yX2JvbGQiLCJzbV91ZW1waF9vcl9ib2xkIiwiZ2hfdWVtcGhfb3JfYm9sZCIsInVlbXBoX29yX2JvbGQiLCJlYXRfYmxhbmsiLCJzZXRleHRfdGl0bGUiLCJkZXRlY3RfYmFsYW5jZWRfYnFzIiwiciQzIiwiciQ0IiwiciQ1IiwiciQ2IiwiciQ3IiwiYmwiLCJibCQwIiwidGFnX21heWJlX2gxIiwidGFnX21heWJlX2gyIiwidGFnX21kIiwic2VsZl80IiwidGFnX3NldGV4dCIsInBsJDAiLCJybGVmdCQwIiwicmlnaHQkMSIsInJpZ2h0JDIiLCJybGVmdCIsImhyX20iLCJocl9zIiwiaHIiLCJiY29kZSIsImRlZmF1bHRfbGFuZyQwIiwiYWNjdSQxIiwiY2IiLCJjb2RlJDAiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDEiLCJjbGVhbl9iY29kZSIsImNvZGUkNCIsInJlYWRfdW50aWxfZ3QiLCJicSIsIm5vX25sIiwiYWNjdSQxOSIsImFjY3UkMjAiLCJ4JDIiLCJyZWFkX3VudGlsX2x0IiwiYWNjdSQxNiIsInJlYWRfdW50aWxfY3BhcmVudGgiLCJyZWFkX3VudGlsX29wYXJlbnRoIiwicmVhZF91bnRpbF9kcSIsInJlYWRfdW50aWxfcSIsInJlYWRfdW50aWxfb2JyYWNrZXQiLCJyZWFkX3VudGlsX2NicmFja2V0IiwicmVhZF91bnRpbF9zcGFjZSIsInJlYWRfdW50aWxfbmV3bGluZSIsInJlYWRfdGl0bGUiLCJoIiwiaCQwIiwibWF5YmVfZXh0ZW5zaW9uIiwibnAiLCJuciIsImsiLCJlbWFpbHN0eWxlX3F1b3RpbmciLCJibG9jayQwIiwiY2wkMiIsImJsb2NrIiwibWF5YmVfcmVmZXJlbmNlIiwibWF5YmVfZGVmIiwicmVtYWlucyQwIiwicmVtYWlucyQxIiwicmVtYWlucyQyIiwidXJsJDAiLCJ1cmwkMSIsImJsYW5rIiwiZmxhZyIsInJlbWFpbnMkMyIsInRleHQkMCIsImZhbGxiYWNrJDEiLCJtYXliZV9saW5rIiwicmVhZF91cmwiLCJyX2NwIiwibF9jcCIsInJfZHEiLCJsX2RxIiwicmVzdCQwIiwiaGFzX3BhcmFncmFwaHMiLCJwYXJzZV9saXN0IiwiZW5kX29mX2l0ZW0iLCJzZWxmXzYiLCJzZWxmXzUiLCJibG9jayQ1IiwicmVzdCQ2IiwiYmxvY2skNiIsInJlc3QkNyIsImJsb2NrJDciLCJyZXN0JDUiLCJibG9jayQ4IiwicmVzdCQ5IiwiYmxvY2skOSIsInJlc3QkMTAiLCJibG9jayQxMCIsInJlc3QkOCIsInJlc3QkMSIsImJsb2NrJDEiLCJibG9jayQyIiwicmVzdCQzIiwiYmxvY2skMyIsInJlc3QkNCIsImJsb2NrJDQiLCJyZXN0JDIiLCJyZXZfdG9fdCIsImFkZCIsInN1Ymxpc3QiLCJpdGVtcyIsIml0ZW0kMCIsIm1ha2VfdXAiLCJpdGVtcyQwIiwibGlzdF9pdGVtcyIsImluZGVudHMkMyIsImluZGVudHMkNCIsIm5ld19pdGVtJDAiLCJwJDIiLCJpdGVtcyQ1IiwiaXRlbXMkMyIsIml0ZW1zJDQiLCJuZXdfaXRlbSQxIiwicCQzIiwiaXRlbXMkOCIsIml0ZW1zJDYiLCJzdWJsaXN0JDAiLCJpdGVtcyQ3IiwibmV3X2l0ZW0iLCJpdGVtcyQxIiwiaXRlbXMkMiIsIm5ld19pdGVtJDIiLCJwJDQiLCJpdGVtcyQ5IiwiaXRlbXMkMTAiLCJuZXdfaXRlbSQzIiwicCQ1IiwiaXRlbXMkMTEiLCJzdWJsaXN0JDEiLCJpdGVtcyQxMiIsIml0ZW1zJDEzIiwiaW5kZW50cyQ1IiwibmV3X2l0ZW0kNCIsInAkNiIsIml0ZW1zJDE0Iiwic3VibGlzdCQyIiwiaXRlbXMkMTUiLCJpdGVtcyQxNiIsImluZGVudHMkNiIsInN0cmluZ19vZl9pdGVtcyIsImluZGVudCQwIiwicnAiLCJpY29kZSIsInNlbGZfNyIsImR1bW15X3RhZyIsInNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSIsInNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbiIsIm5ld2xpbmVzIiwibWF5YmVfYXV0b2VtYWlsIiwiZG9tYWluIiwiZW1haWwiLCJpc19oZXgiLCJtZWRpYXR5cGV0ZXh0b21kIiwibWFpbl9pbXBsX3JldiIsInByZXZpb3VzJDUwIiwicHJldmlvdXMkNTEiLCJsZXhlbWVzJDAiLCJsZXhlbWVzJDEiLCJsZXhlbWVzJDIiLCJwcmV2aW91cyQ1MiIsImxleGVtZXMkMyIsInByZXZpb3VzJDUzIiwibGV4ZW1lcyQ0IiwicHJldmlvdXMkNTQiLCJ3JDAiLCJsZXhlbWVzJDUiLCJwcmV2aW91cyQ1NSIsImxleGVtZXMkNiIsInByZXZpb3VzJDU2IiwiciQ4IiwibGV4ZW1lcyQ3IiwicHJldmlvdXMkNTciLCJyJDkiLCJ3JDEiLCJsZXhlbWVzJDgiLCJyJDEzIiwicHJldmlvdXMkNTgiLCJyJDEwIiwibGV4ZW1lcyQ5IiwicHJldmlvdXMkNTkiLCJyJDExIiwibGV4ZW1lcyQxMCIsInByZXZpb3VzJDYwIiwiciQxMiIsImxleGVtZXMkNjEiLCJyJDExNiIsInQkMyIsImxleGVtZXMkNjIiLCJwcmV2aW91cyQxMDciLCJyJDY1IiwibGV4ZW1lcyQ2MyIsInByZXZpb3VzJDEwOCIsInIkNjYiLCJsZXhlbWVzJDY0IiwicHJldmlvdXMkMTA5IiwiciQ2NyIsImxleGVtZXMkNjUiLCJwcmV2aW91cyQxMTAiLCJyJDY4IiwibGV4ZW1lcyQ2NiIsInByZXZpb3VzJDExMSIsInIkNjkiLCJsZXhlbWVzJDY3IiwicHJldmlvdXMkMTEyIiwiciQ3MCIsImxleGVtZXMkNjgiLCJwcmV2aW91cyQxMTMiLCJyJDcxIiwibGV4ZW1lcyQ2OSIsInByZXZpb3VzJDExNCIsInIkNzIiLCJsZXhlbWVzJDcwIiwicHJldmlvdXMkMTE1IiwiciQ3MyIsImxleGVtZXMkNzEiLCJwcmV2aW91cyQxMTYiLCJyJDc0IiwibGV4ZW1lcyQ3MiIsInByZXZpb3VzJDExNyIsInIkNzUiLCJsZXhlbWVzJDczIiwicHJldmlvdXMkMTE4IiwiciQ3NiIsImxleGVtZXMkNzQiLCJwcmV2aW91cyQxMTkiLCJyJDc3IiwibGV4ZW1lcyQ3NSIsInByZXZpb3VzJDEyMCIsInIkNzgiLCJsZXhlbWVzJDc2IiwicHJldmlvdXMkMTIxIiwiciQ3OSIsImxleGVtZXMkNzciLCJwcmV2aW91cyQxMjIiLCJyJDgwIiwibGV4ZW1lcyQ3OCIsInByZXZpb3VzJDEyMyIsInIkODEiLCJsZXhlbWVzJDc5IiwiciQ4MiIsImxleGVtZXMkODAiLCJyJDgzIiwibGV4ZW1lcyQ4MSIsInIkODQiLCJsZXhlbWVzJDgyIiwiciQ4NSIsImxleGVtZXMkODMiLCJyJDg2IiwibGV4ZW1lcyQ4NCIsInIkODciLCJsZXhlbWVzJDg1IiwiciQ4OCIsImxleGVtZXMkODYiLCJyJDg5IiwibGV4ZW1lcyQ4NyIsInIkOTAiLCJsZXhlbWVzJDg4IiwiciQ5MSIsImxleGVtZXMkODkiLCJyJDkyIiwibGV4ZW1lcyQ5MCIsInIkOTMiLCJsZXhlbWVzJDkxIiwiciQ5NCIsImxleGVtZXMkOTIiLCJyJDk1IiwibGV4ZW1lcyQ5MyIsInIkOTYiLCJsZXhlbWVzJDk0IiwiciQ5NyIsImxleGVtZXMkOTUiLCJyJDk4IiwibGV4ZW1lcyQ5NiIsInIkOTkiLCJsZXhlbWVzJDk3IiwiciQxMDAiLCJsZXhlbWVzJDk4IiwiciQxMDEiLCJsZXhlbWVzJDk5IiwiciQxMDIiLCJsZXhlbWVzJDEwMCIsInIkMTAzIiwibGV4ZW1lcyQxMDEiLCJyJDEwNCIsImxleGVtZXMkMTAyIiwiciQxMDUiLCJsZXhlbWVzJDEwMyIsInIkMTA2IiwibGV4ZW1lcyQxMDQiLCJyJDEwNyIsImxleGVtZXMkMTA1IiwiciQxMDgiLCJsZXhlbWVzJDEwNiIsInIkMTA5IiwibGV4ZW1lcyQxMDciLCJyJDExMCIsImxleGVtZXMkMTA4IiwiciQxMTEiLCJsZXhlbWVzJDEwOSIsInIkMTEyIiwibGV4ZW1lcyQxMTAiLCJyJDExMyIsImxleGVtZXMkMTExIiwiciQxMTQiLCJsZXhlbWVzJDExMiIsInIkMTE1IiwiciQ2NCIsImxleGVtZXMkMTEzIiwibGV4ZW1lcyQxMTQiLCJwcmV2aW91cyQxMjQiLCJyJDExNyIsInByZXZpb3VzJDEyNSIsInIkMTE4IiwibGV4ZW1lcyQxMTkiLCJnIiwibGV4ZW1lcyQxMjMiLCJjb21tZW50cyIsInIkMTMyIiwibGV4ZW1lcyQxMjQiLCJwcmV2aW91cyQxMzIiLCJyJDEzMyIsInByZXZpb3VzJDEzMyIsInIkMTM0IiwidyQ1IiwidyQ2IiwibGV4ZW1lcyQxMjUiLCJnJDAiLCJsZXhlbWVzJDEyNiIsInIkMTM2IiwibGV4ZW1lcyQxMjciLCJyJDEzNyIsInIkMTM1IiwibGV4ZW1lcyQxMjgiLCJyJDEzOCIsImxleGVtZXMkMTI5IiwibGV4ZW1lcyQxMzAiLCJwcmV2aW91cyQxMzQiLCJyJDEzOSIsImxleGVtZXMkMTMxIiwicHJldmlvdXMkMTM1IiwiciQxNDAiLCJsZXhlbWVzJDEzMiIsInByZXZpb3VzJDEzNiIsInIkMTQxIiwicHJldmlvdXMkMTM3IiwiciQxNDIiLCJsZXhlbWVzJDEzMyIsImxleGVtZXMkMTM0IiwieCQzIiwicHJldmlvdXMkMTM4IiwiciQxNDMiLCJtYWluX2ltcGwiLCJsZXhlbWVzJDEzNSIsInByZXZpb3VzJDEzOSIsInIkMTQ0IiwicHJldmlvdXMkMTQwIiwiciQxNDUiLCJsZXhlbWVzJDEzNiIsInIkMTQ2IiwibGV4ZW1lcyQxMzciLCJyJDE0NyIsImxleGVtZXMkMTM4IiwicHJldmlvdXMkMTQxIiwiciQxNDgiLCJsZXhlbWVzJDEzOSIsInByZXZpb3VzJDE0MiIsInIkMTQ5IiwibGV4ZW1lcyQxNDAiLCJwcmV2aW91cyQxNDMiLCJyJDE1MCIsImxleGVtZXMkMTQxIiwiciQxNTEiLCJsZXhlbWVzJDE0MiIsImxleGVtZXMkMTQzIiwieCQ0IiwicHJldmlvdXMkMTQ0IiwiciQxNTIiLCJwcmV2aW91cyQxNDUiLCJyJDE1MyIsImxleGVtZXMkMTQ0IiwicHJldmlvdXMkMTQ2IiwiciQxNTQiLCJwcmV2aW91cyQxNDciLCJyJDE1NSIsImxleGVtZXMkMTQ1IiwidyQ3IiwicHJldmlvdXMkMTQ4IiwiciQxNTYiLCJsZXhlbWVzJDE0NiIsImxleGVtZXMkMTQ3IiwicHJldmlvdXMkMTQ5IiwiciQxNTciLCJsZXhlbWVzJDU4IiwibGV4ZW1lcyQ1OSIsInByZXZpb3VzJDEwNCIsInIkNjEiLCJsZXhlbWVzJDYwIiwicHJldmlvdXMkMTA1IiwiciQ2MiIsInByZXZpb3VzJDEwNiIsInIkNjMiLCJ3JDQiLCJsZXhlbWVzJDEyMCIsInVybCQyIiwibGV4ZW1lcyQxMjIiLCJwcmV2aW91cyQxMzAiLCJyJDEzMCIsInByZXZpb3VzJDEzMSIsInIkMTMxIiwibGV4ZW1lcyQxMjEiLCJ1cmwkMyIsInIkMTI4IiwiciQxMjkiLCJsZXhlbWVzJDExNSIsImxleGVtZXMkMTE2IiwiciQxMjEiLCJ0bHMiLCJsZXhlbWVzJDExNyIsInByZXZpb3VzJDEyNiIsInIkMTE5IiwicHJldmlvdXMkMTI3IiwiciQxMjAiLCJudGwkMCIsIm50bCQxIiwiYWx0JDIiLCJhbHQkMSIsInIkMTI3IiwibnRsIiwicGF0aF90aXRsZSIsInBhdGgiLCJub3RoaW5nIiwiciQxMjUiLCJwYXRoJDAiLCJ0aXRsZSQzIiwiciQxMjQiLCJyJDEyNiIsImxleGVtZXMkMTE4IiwicHJldmlvdXMkMTI4IiwiciQxMjIiLCJwcmV2aW91cyQxMjkiLCJyJDEyMyIsInNwIiwibGV4ZW1lcyQzNyIsInByZXZpb3VzJDg4IiwiciQ0MyIsImxleGVtZXMkMzgiLCJwcmV2aW91cyQ4OSIsInIkNDQiLCJsZXhlbWVzJDQ1IiwicHJldmlvdXMkOTUiLCJsZXhlbWVzJDQ3IiwibGV4ZW1lcyQ1MSIsInIkNTYiLCJsZXhlbWVzJDUyIiwicHJldmlvdXMkOTkiLCJsZXhlbWVzJDQ4IiwiciQ1MiIsImxleGVtZXMkNDkiLCJwcmV2aW91cyQ5NiIsInIkNTMiLCJsZXhlbWVzJDUwIiwicHJldmlvdXMkOTciLCJyJDU0IiwicHJldmlvdXMkOTgiLCJyJDU1IiwibGV4ZW1lcyQ1MyIsInR0bCIsImxleGVtZXMkNTQiLCJwcmV2aW91cyQxMDAiLCJyJDU3IiwicHJldmlvdXMkMTAxIiwiciQ1OCIsImxleGVtZXMkNTUiLCJwcmV2aW91cyQxMDIiLCJyJDU5IiwibGV4ZW1lcyQ1NiIsInByZXZpb3VzJDEwMyIsImxleGVtZXMkNTciLCJyJDYwIiwibGV4ZW1lcyQzOSIsImxleGVtZXMkNDIiLCJyJDQ4IiwibGV4ZW1lcyQ0MyIsInByZXZpb3VzJDkyIiwibGV4ZW1lcyQ0NCIsInByZXZpb3VzJDkzIiwiciQ0OSIsInByZXZpb3VzJDk0IiwiciQ1MCIsImxleGVtZXMkNDAiLCJyJDQ1IiwibGV4ZW1lcyQ0MSIsInByZXZpb3VzJDkwIiwiciQ0NiIsInByZXZpb3VzJDkxIiwiciQ0NyIsImZvbyQxIiwibGV4ZW1lcyQ0NiIsImZvbyQwIiwiZm9vIiwibmV3X3IiLCJyJDUxIiwibGV4ZW1lcyQzNSIsInIkNDEiLCJsZXhlbWVzJDM2IiwicHJldmlvdXMkODciLCJyJDQyIiwidGsiLCJsZXhlbWVzJDMwIiwibGV4ZW1lcyQzMSIsInByZXZpb3VzJDgxIiwiciQzNSIsInByZXZpb3VzJDgyIiwiciQzNiIsImxleGVtZXMkMzIiLCJsZXhlbWVzJDMzIiwicHJldmlvdXMkODMiLCJyJDM3IiwicHJldmlvdXMkODQiLCJyJDM4IiwibGV4ZW1lcyQzNCIsInByZXZpb3VzJDg1IiwiciQzOSIsInByZXZpb3VzJDg2IiwiciQ0MCIsImxleGVtZXMkMjgiLCJwcmV2aW91cyQ3OSIsInIkMzMiLCJ0a3MiLCJ0azAiLCJ0ZXh0JDEiLCJsZXhlbWVzJDI5IiwicHJldmlvdXMkODAiLCJyJDM0IiwibGV4ZW1lcyQyNSIsImxleGVtZXMkMjYiLCJwcmV2aW91cyQ3NiIsInIkMzAiLCJsZXhlbWVzJDI3IiwicHJldmlvdXMkNzciLCJyJDMxIiwicHJldmlvdXMkNzgiLCJyJDMyIiwibGV4ZW1lcyQyMCIsImxleGVtZXMkMjEiLCJwcmV2aW91cyQ3MSIsInIkMjUiLCJwcmV2aW91cyQ3MiIsInIkMjYiLCJsZXhlbWVzJDIyIiwibGV4ZW1lcyQyMyIsInByZXZpb3VzJDczIiwiciQyNyIsInByZXZpb3VzJDc0IiwiciQyOCIsImxleGVtZXMkMjQiLCJwcmV2aW91cyQ3NSIsInIkMjkiLCJsZXhlbWVzJDExIiwidyQyIiwiaHRtbF9zdHVmZiIsInRhZ25hbWV0b3AiLCJtZF9vZl9pbnRlcm1fbGlzdCIsIm1kX29mX2ludGVybV9saXN0JDAiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInN0cmluZ19vZl90YWdzdGF0dXMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsImFkZF90b2tlbl90b19ib2R5IiwidCQ2IiwiYWRkX3Rva2VuX3RvX2JvZHkkMCIsImRlbGltaXRlciIsImJlZm9yZSIsInRhZ25hbWUkMiIsImxleGVtZXMkMTgiLCJoJDEiLCJwcmV2aW91cyQ2NyIsInIkMjEiLCJwcmV2aW91cyQ2OCIsInIkMjIiLCJsZXhlbWVzJDEyIiwibGV4ZW1lcyQxMyIsInByZXZpb3VzJDYxIiwiciQxNCIsImxleGVtZXMkMTQiLCJwcmV2aW91cyQ2MiIsInIkMTUiLCJwcmV2aW91cyQ2MyIsInIkMTYiLCJtYWluX2xvb3BfcmV2IiwibWFpbl9wYXJzZSIsInBhcnNlIiwiZGVmYXVsdF9wYXJzZSIsImQiLCJ3YXJuaW5nIiwibGV4X2Zyb21faW5jaGFubmVsIiwiaWMiLCJpY19jb250ZW50IiwidG9fc3RyaW5nIiwicHAiLCJhdHRyaWJ1dGVzIiwibm9kZW5hbWUiLCJvZl9pbnB1dCIsIm9mX3N0cmluZyIsIm9mX2JpZ2FycmF5Iiwic2V0X2RlZmF1bHRfbGFuZyIsInQkNyIsInQkOCIsInQkOSIsInQkMTAiLCJ0JDExIiwidCQxMiIsInQkMTMiLCJmaW5kX3N0YXJ0JDAiLCJsZXZlbCIsIm51bWJlciIsInN1YnNlY3Rpb25zIiwiZGVhbF93aXRoX2hlYWRlciIsImZpbmRfc3RhcnQiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJtYWtlX3RvYyQwIiwibWluX2xldmVsIiwibWF4X2xldmVsIiwidG9jX2VudHJ5IiwibWFrZV90b2MiLCJzdWJfdG9jIiwidG9jIiwic3ViX3RvYyQwIiwidG9jJDAiLCJkZXB0aCIsImhlYWRlcnMkMCJdLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmZ0aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxkb20uY29tcGlsZWQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdGh1bmsuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vaG9va3MuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlX2ludGVybmFsaGFzaF90eXBlcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfYmlnc3RyaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytibGFrZTIuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGVhcF9ibG9jay9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zeXMubWwuaW4iLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2R5bmFycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9yZWNvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9nbG9iYWxpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9wb2x5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ltcG9ydDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2NvbXBhcmVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2hhc2hfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3dvcmRfc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3ByZXR0eV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvd2l0aF9yZXR1cm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tb25hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FwcGxpY2F0aXZlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2VpdGhlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZzAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NvbnRhaW5lcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW5kZXhlZF9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb2JqX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdW5pZm9ybV9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9hdmx0cmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDJfNTAxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDFfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3NleHBfY29udi9ydW50aW1lLWxpYi9wcHhfc2V4cF9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZW51bWVyYXRlL3J1bnRpbWUtbGliL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9hc3NlcnQvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfYmVuY2gvcnVudGltZS1saWIvYmVuY2htYXJrX2FjY3VtdWxhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWQ1L21kNV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUvYmluX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9wcHhfaW5saW5lX3Rlc3RfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9tb2R1bGVfdGltZXIvcnVudGltZS9wcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC92YXJpYW50X2FuZF9yZWNvcmRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3R5cGVyZXBfb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC9tYWtlX3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9hYnN0cmFjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0X3Rlc3RfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2V4cGVjdF90ZXN0X2NvbGxlY3Rvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZy9leHBlY3RfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wb3NpdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9hY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9vbGRfcGFyc2VyX2NvbnRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fdGFibGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvYXV0b21hdG9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvb2Zfc2V4cF9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvcGFyc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NyY19wb3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi90eXBlX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9wcmVfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NleHBfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL2V4bl9tYWdpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zcGxpdHRhYmxlX3JhbmRvbS9zcGxpdHRhYmxlX3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL2JpZ2FycmF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svZ2VuZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svc2hyaW5rZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iYXNlX3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbF9wYXRjaGVzL2pzX29mX29jYW1sX3BhdGNoZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW50X3JlcHIvaW50X3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9iaWdzdHJpbmcvYmFzZV9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZmlsZW5hbWVfYmFzZS9maWxlbmFtZV9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdl9tYXAvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvZW52X3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2NvbW1hbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZWFwX2Jsb2NrL2hlYXBfYmxvY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGVfbW9kdWxlX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9xdWlja2NoZWNrYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2ludDYzYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZV9iaW5fcHJvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS96b25lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdmFsaWRhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdF9vZl90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pcXVlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdHlwZV9pbW1lZGlhY3kubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90dXBsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RheV9vZl93ZWVrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGlnaXRfc3RyaW5nX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tb250aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RhdGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Zsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3BlcmNlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdGltZV9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NwYW5fbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vZmRheV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYWtlX3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21ha2Vfc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcGlkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25vX3BvbHltb3JwaGljX2NvbXBhcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVyaXZpbmdfaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb3JlX3N5cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JhZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlcl9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JvdW5kZWRfaW5kZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmRfc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfdG9rZW5pemVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19nZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZG9tX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9qc19tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vcmF3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2F0dHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZ2xvYmFsX2xpc3RlbmVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS90aHVuay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3Zkb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbF9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5L3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3RpbWluZ193aGVlbC90aW1pbmdfd2hlZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2NvbmZpZy9hc3luY19rZXJuZWxfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL21vcHRpb24vbW9wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC9wYWlyaW5nX2hlYXAvcGFpcmluZ19oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3NleHBfaGlkZGVuX2luX3Rlc3Qvc2V4cF9oaWRkZW5faW5fdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC91b3B0L3VvcHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3NhZmVfcXVldWUvdGhyZWFkX3NhZmVfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2V4ZWN1dGlvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9leHRlcm5hbF9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9vcl9ldmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvam9iX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zeW5jaHJvbm91c190aW1lX3NvdXJjZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbmFkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvaXZhcl9maWxsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RhaWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYnZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2N5Y2xlX2hvb2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGhyb3R0bGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbF9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcGlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbGF6eV9kZWZlcnJlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9lYWdlcl9kZWZlcnJlZC9lYWdlcl9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZWFnZXJfZGVmZXJyZWQvZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2J1cy9idXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29yX25vdF9hdXRob3JpemVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGNfc2hhcGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX21ldGFkYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfbWFwL2luY3JfbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9tYXAvaW5jcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9zZWxlY3QvaW5jcl9zZWxlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vamF2YXNjcmlwdF9wcm9maWxpbmcvamF2YXNjcmlwdF9wcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vdmRvbV9maWxlX2Rvd25sb2FkL3Zkb21fZmlsZV9kb3dubG9hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyX2RvbS91aV9pbmNyL3VpX2luY3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vY29tcG9uZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2FwcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2pzX21pc2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vc3RhcnRfYXBwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2lucHV0X3dpZGdldHMvdmRvbV9pbnB1dF93aWRnZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wdG1hcC9wdG1hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vY29kZWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vbGV4ZXJfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL2Jhc2ljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9yYXcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL3NhZmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udl9saWIvcHB4X3lvanNvbl9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZGVyaXZpbmcvcnVudGltZS9wcHhfZGVyaXZpbmdfcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kT3ZlclN0b3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRCYXNpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvU3RvcmVNYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9TdG9yZVRyYW5zYWN0aW9uYWxSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlVmVjdG9yLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvVW5pY29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1Bvc01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkUG9zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQ29zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0RvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dE9mRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQm94LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9TeW50YXhUZXN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9FeGVyY2lzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGVQcmVsdWRlLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9yZXByZXNlbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2JhY2tlbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2xleGVyX2ZzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfaHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0FXQyxDQUFDO01BRUU7T0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJBQyxzQkFBc0JDLFNBQVNGO09BQy9CRyxvQkFBb0JDO09BQ3BCQztNQUdKLEdBQUlGLFdBQVk7T0FDWkUsWUFBWUQsaUJBQWlCRTtP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O09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O09BNkpFMnRHO09BQ0FDO09BRUFDO09BU0FDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BT0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSUFDO09BR0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BRUNDO09BU0RDO09BSUFDO09BSUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BVUFDO09BQ0FDO09BRUFDO09BT0FDO09BSUFDO09BSUFDO09BU0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSURDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRDFzRztPQVlBd1k7T0FDQUU7T0FPQTlYO09BQ0FFO09BQ0E2ckc7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7SSxVO0ksVTtJLFU7SSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSSxNOzs7OztJO0ssSSxNOzs7Ozs7Ozs7Rzs7STs7OztJOzs7Szs7Ozs7Ozs7Ozs7O0ksaUIsc0I7SSxxQixzQjtJLHNCLHNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7eUIsTzs7eUIsTzs7eUIsTzs7Ozs7O0ssTzs7STtJO0ksTztHOztJO0s7SyxRO2dCOztJOzs7OzJCO21DOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTyw0QyxnQjtHOztJLFU7STtLO2U7OztpQjs7O21CO21CO0k7STtJLE87Rzs7SSxVOztLO0s7O08sVztNLEksSSwyQjs7Ozs7O1k7WTtXOzZCO1MsTztRO1MsTTtTOzs7O1k7O1k7O1k7O1EsTzs7O3NDLE87TTtNOzs7STtJO0c7O0k7Ozs7SztJLE87OztJLEksZ0I7OzsyQixPOzs7STtLLGlCO0s7Tzs7Ozs7SztLOzs7OztNOzs7Ozs7STtHOzs7SyxZOztLO0k7SSxVO0ksTyxXO0c7O0k7O0ssbUI7Szs0Qzs7SyxNO0k7SSxZO0ksSSxVOzs7OztLOztJO0c7O0ksWTs7Ozs7O3dDOztLO007UTtrQjs7O0ksZ0I7STs7Tzs7Ozs7SSxXOzs7SSxVO0ksTzs7MkI7O0c7O0ksVTtJLE87OzJCOztHOztJO2dCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssTztJLE87OztjLE07YTs7O0c7NkIsTyxtQzs7OytDLE87b0QsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07Ozs7SSxTO0k7O0ksTTtHOztJLE87OztjOzs7YTs7RztHO0k7O087O3lCLGtCLG9COztJO0ksTzs0Qyx3QjtHOztJLFM7SSw0QjtJLFc7Rzs7STs7aUI7Szs7O00sYTs7OztHOztJLFk7SSxrQyxNO0k7OztJO0k7OztPOzs7OztRLE87TyxXOzs7Ozs7cUI7Szs7Rzs7STtHOztJLFk7O0ksTzs7O0k7SyxNOzttQjtJOztLOzs7STtHOztJO0k7OztnQjtLLGdDLEk7SyxZOzs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7OztxQjtLOztHOztJO0k7Z0IsVzs7O00sTTtLOzs7TSxJO007Ozs7O0c7O0k7STs7OztPOzs7Ozs7OzttQjtLLE07O0c7O0k7STtlLFc7O2lCO0ssOEI7Ozs7Rzs7STtJO21CLFc7O00sTTtLLDRCLHFCOzs7OztHOztJO0ssTTtJO0ssYzs7OztJO3lCLE87d0IsTztLO007Ozs7TTs7Ozs7Rzs7STtJOzs7Z0I7SyxrQyxPO0ssVzs7OztHOztJO0k7OztNLEc7Tzs7Ozs7OztLO2E7Ozs7Rzs7SSxRLE87O0ksTztHO0c7STs7O0k7O0s7O0k7aUI7SyxHLHFDO0s7OztHOztJO0k7aUI7SyxLLDRCO0s7OztHOztJO0s7OztTOzs7WSxZOztZO1c7O0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7O00sVyxjO007Ozs7O0c7NEIsTyxzQzs7SSxLO0ssRyw0QjtLLE07OztJO2lCLE07Szs7O00sVztLLEcsZ0M7OztHOztJO0s7SztNO08sTztPLE07TSxlO007TztPLE87Ozs7STs7STtpQixNO0s7OztNLG9CO0ssRyxnQzs7O0c7OztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7O0ksVTtJOzs7TztPLE87TTs7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7Ozs7Rzs7STtLLEk7SyxPO0k7SyxRO0ssWSxPO0s7O0c7O0k7O0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOzs7O0ksYztJO2lDLE8sZ0M7aUMsNkI7NkIsTyx1QjtHO29CLHdDOztJO0c7O0ksb0I7Rzs7SSxZO0c7O0k7Ozs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLE87SyxTOztJLGM7SSxXO0ksTztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STsrQjtHOztJOytCO0c7O0k7O0c7O0k7K0I7Rzs7SSxHLGtCO0ksSTtJO2dDOzs7Ozs7Yzs7Ozs7O087USxZOzs7Ozs7OztHOztJLGM7Ozs7O0s7O007Ozs7Szs7Ozs7TyxxQjs7Ozs7Ozs7TTs7O0k7Rzs7SSxRO0ksVztJLE87Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO3VCOztLOzs7OzRCOzs7Rzs7STtJO3lDOztNLE07SyxXO1EsMEM7OztHOztJO0k7SyxJOzs7O007TztTOzs7OztPLE87TSxPOztLO00sUztzQjtNOzs7O0c7O0k7STt1QztLLFc7Ozs7Ozs7TTs7Ozs7Tzs7UyxXO1EsVzs7Ozs7UTs7Ozs7TTtPO08sWTs7Ozs7Szs7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7SyxNO0s7Tzs7Ozs7SSxXO0c7O0k7Ozs7OztRLFc7O1EsVztnQixXOztJO0c7Ryx5Qjs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztLLGtCO0ssTzs7SSxvQjtJLE87Rzs7STs7TTtPLE87Yzs7Ozs7OztJLFc7SSxPO0c7RztJO0k7Ozs7Ozs7STs4QixxQjswQiw0Qjs7STs7Ozs7Ozs7dUIsTTs7STtHOztJOztJO0ksTztHOztJO0c7O0k7SyxZOzs7Szs7O1M7VTtXOztVOzs7O2lDLE87Ozs7O1M7VTtXOztVOzs7O2lDLE87Ozs7OztJO0k7STtHO0c7STtJOzs7O0c7STs7TyxJLEksTzs7Ozs7O087TztRO1M7UyxjOzs7Tzs7TztlOztHOztJOztLO0s7Ozs7Ozs7STtHOztJOzs7SyxPO0ssVztrQixxQztJO1M7STtJOzs7O007TTs7Ozs7STs7OztNO007Ozs7O0k7Ozs7TTtPLE87TyxPOzs7O1E7UyxPO2dCO1M7UztTO1M7Ozs7O1M7Uzs7Uzs7b0I7UyxPOzs7O1UsVzthO1csVztXLEc7WTthO2E7YTs7Ozs7c0I7Ozs7Ozs7UTtROzs7OztNOzs7OztJOzs7Rzs7STs7Ozs7STs7Tzs7MEIsTyxzQzs7SSxPOzs7ZTsyQjtlLHFCOzs7Ozs7Ozs7OztHOztJO0ksYztrQjtJLEk7STtLLE87STtJOztLLE87SSxPOzs7Ozs7Ozs7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TyxJOzs7Ozs7Ozs7Tzs7USxlOzs7Ozs7Ozs7TztPLEk7Ozs7O007Ozs7UTs7O1U7UTs7Ozs7Ozs7OztLLE87O0c7O0k7O0s7Tzs7O1U7VSxPLGdDO1M7OztLLFc7Ozs7OztPO1E7Ozs7Ozs7Ozs7STtJOzs7TztnQztxRDtPLE87Ozs7Ozs7O007O0ksTzs7O0k7SSxPO0c7O0ksWTtnQixPOztJO0ksTztHO0csSSxpQjs7STs7O0ssSSxrQjs7Ozs7O0ssWTs7Ozs7OEI7OztHOztJLGdCO0k7Z0I7O0ksTzs7O2MsZTtjOzs7O2UsTztlLE87YyxXO2E7OztHOztJLFk7STtHOztJOztPOztnQyxPLHFDOztJLE87RztHO0k7STtNOzt1QixpQjs7SSxNO0k7TTs7dUIsaUI7O0ksTTtJLFk7O0k7Ozs7Ozt5QjtxQztxQztxQztxQzs7OztxQzs7c0M7c0M7c0M7c0M7Ozs7O007O0s7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Ozs7O0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Rzs7STtJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Syx1QjtLLE87O0kseUI7SSxPO0c7RyxJOztJOzs7Ozs7STs7Tzs7SSxPO0c7O0k7SztNO1E7OztTO1U7VSxPO1MsTzs7O1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOzs7SyxNOztHOztJO0s7Ozs7TTtNO007TTtLLE87O0k7Ozs7OztLO0s7SSxPO0c7OztJLEc7SztJOzs7O0k7NkM7STs7SyxPO0s7eUI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O00sSTtLLGlCOzs7O0ssTzs7O0s7OztNLE07TSxVO0ssTzs7O0s7Ozs7O00sTTtLOzs7O0ssTzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTzs7O2U7ZSxPO2M7OztJOztLLE87OztlO3VDOzs7ZSxPOzs7OzttQjs7Ozs7Ozs7OzswQjtlLE87Yzs7O0k7O0ssTzs7O2U7OzRCO2U7Yzs7O0k7Z0MsMkI7OztNOzs7USxXOzs7Ozs7TTtLO0ssTztJOztLLEksVSx3Qjs7OzRCOzs7STs7SyxVO0s7Yzs7O2lCO2lCLFc7Z0I7O0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SyxPOztzQyxPLDZCOzs7STs7SyxVO0ssTywwQztJOztLLE87OztlLE8sbUI7Yzs7O0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNO1MsTzs7bUMsTyx3Qjs7O1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7O21CO2tCOzs7UTs7UyxRO1M7OztZO1ksTztXOztTO1E7MkIsaUQ7O1MsUSxtQjtTO3FDLE8sMkI7UztROztTO1UsSSxVLDRCOzs7O1csUTtXO1c7VztROztTO1MsYztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDBCO0ksTztHO3NCLFM7RztJOzs7Ozs7SSw4QjtJLE87RztHO0k7TSx1QjtJO007UTs7Ozs7Ozs7STtXO2M7O0ksTztHO3dCLFM7Ozs7NEIsTyx5QztzQixPLGtDOzBCLHNCO0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Qix5Qzs7UztROztTOzs7VSxNO1M7UTs7UztROztTO1E7O1MsVTtTO1E7UTs7OztTO1UsTTtVO1k7YzsrQzs7VTtZOzs7ZTtnQjswQjs7Ozs7O2dCLEksWTs7O2lCLE07O2dCOztlLGE7OztpQixNOzs7OztnQjs7bUI7Z0IsSSxZOzs7aUIsTTs7O2dCOzttQjs7Ozs7Z0IsSSxjOzs7aUIsTTs7O2dCOztlLE07Yzs7Ozs7UTs7UyxJOzs7OztVOztXLE07VyxNO1U7VSxPOztTO1E7O1MsSTs7Ozs7O1U7O1M7UTs7UztVLGM7VTs7Ozs7OzBDO1U7VyxjO1c7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7OzRCLDBCOztJO0ssTzs7O2U7O3lCOzs7Ozs7Yzs7SSxNO0c7O3lCLE8seUI7SSxjO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Tzs7O1U7O1csZ0I7OztVO1M7OztJO0c7O0k7SyxNOztJOzs7Tzs7O007O0ksTzs7O2M7O2dDLGlDOzs7O2E7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7SSxzQjtJLGU7SSxxQjtvQixZO3FCLFk7c0IsWTs7SSxPO2tCOztHOztJLFc7O0ssTzttQjs7STtJLE87Rzs7STtLO007TSxNOzs7Ozs7OztJLGlCO0c7RztJLGU7SSxjOztJLE07RztHO0k7Ozs7OztJLG1CO0ssTTtJO0k7STtJOzs7OztHOztJO0c7O0ksVTtJLE87Rzs7SSxVO0ksVztHOztJLE87OztjO2UsSztlLFc7O3lCOzt3Qjs7eUI7O3dCOzthOztHOztJOzs7SztzQzs7O0s7c0M7STtJOzs7Rzs7SSxtQjtLLE07STtLO087O3FCLDRCOztLO087O3FCLDRCOztpQjs7O2lCOzs7Ozs7YztjOztHOztJLG1CO0ssTTs7SyxlO00sTztLLGM7O2U7O0k7STs7O08sUztPO08sWTtPO007Ozs7O0c7aUMsZ0M7O0ksbUI7SyxNO0k7Ozs7Z0I7Ozs7Z0I7O0c7O0ksTztHO0c7SSxTO0k7TTs7O1M7Ozs7bUI7K0IsbUI7O1E7Ozs7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJO0ssYztLOzs7OztNLFc7OztHOztJLG1CO0ssTTtJOzs7Ozs7O00sSSw4Qjs7Szs7Ozs7TSxPOzs7Rzs7SSxtQjtLLE07STs7Ozs7OztZOzs7TTtPOztRLFU7Ozs7Ozs7O2tCOzs7Szs7Ozs7SyxlO0s7YTs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7SSxzQjtJLFU7SSxPO0c7O0k7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJOzs7Ozs7Ozs7O0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtJO0k7STtJO0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7TTtROzt3Qjs7TTs7Ozs7OztHO0c7STtJO0k7STs7O1E7OztPOztROztXOztXO21COztPOzs7STtJOzs7UTs7O087dUIsMEM7OztJO3lCLE8sc0M7O0k7O087O087O087O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7O0c7O0k7O087O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7TztTOzs7WTs7YTthO1k7OztLLE0sVztJLE8sVztHOztJO0ksTztHOztJLFksTztJO0ksTztHOztJO0ssTTtLLFU7STtLOzs7UztVO1UsUTs7OztvQjs7UztRO00sSztLO007O087TyxROzs7OztXOzs7Ozs7O0c7Rzs7STt5Qzs7Z0I7SSxxQjtJO0c7Rzs7STtHOztJO0s7Tzs7dUI7O0s7OztHO0csSSxtQjs7STs7O0c7O0ksTzs7O2M7YztlO3VCO2U7ZTtlLFU7ZTs7Ozs7OzZCOztnQjs7O2E7O0c7O0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0s7SztJLFc7RztHOzBCLFEsNEI7O0k7Ozs7O0c7NEIsTyxvQztHO0k7STs7Ozs7O0k7OztHOztJOztLO0s7Ozs7SyxJLFU7Ozs7TTtPLGE7Ozs7OztLOzs7O0s7TSxlO007Ozs7SSxPOzs7O2U7ZTtnQjtnQjs7ZSxPOzs7OztjOzs7OztJOytDLE8saUI7Rzs7STtLLE87STs7SztLLE87STs7SyxPO0k7STtHO2tDLHVDO0c7STtLO0ssWTtLLFE7SyxlOztLLGtCO0ksTztHO0c7STs7OztJLEksK0I7O2dDO0ssb0I7SyxXOztHOzs7SztNOzs7d0I7TTtLLE87STs7Szs7TTtROzs7OztPLHFCO087Ozs7OztLO0k7STtHOztJO0s7Tzs7MkIseUI7OztLO087OztVOztTOzs7OztLLEksZ0I7Szs7O1EsbUI7OztPOzs7O1E7O0k7SSxPOzs7Yzs7Ozs7O2U7Ozs7O2UsUTs7O2U7O2M7YTs7Rzs7SSxjOzs7Ozs7STtLO0s7OztLOzs7Syx3QixrQixzQjtLO2E7OztnQjs7OztnRDs7OzhDO2dCO2dCOzt1QztlOzs7STtJOzs7OzswQzs7O0ksVztJOztLOzs7UTtRLE87OztpQiw2QjtPOztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7O0s7OztROztTO1E7UyxnQztRO087O0ssTzs7STs7Szs7OztNO1E7VTs7O2E7WTs7TSxROzs7SyxHLHdDLFM7TSxVO007O0ssVTtLLE87NkM7O0ksTzs0QztHO0c7STtNO3VDO0ksTTtJO007Ozs7Ozs7O0k7TTt1Qzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxJLEksTTs7Ozs7O0ksd0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0s7SztLOztJLFU7O0ssTTtJO0c7aUMsa0IsUzs7STtLO087c0MsNEI7SyxTO0ssSTs7O0s7Ozs7SztNLFE7OztLOzttQixPLHlDOztLO0s7O3VCLE8sbUM7SyxPOztJO0c7O0k7SztPO3NDLDRCO0s7Tzs7cUIsTyw4Qjs7STtHOztJLFk7O0ksTztHOzs7Ozs7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssTTtLLGlDO0ssTTtLLE07OztLOzs7OzhCOzs7Ozs7Ozs7UTs7OztJOzs7Uzs7Ozs7Ozs7Ozs7OztJO0ssUTtLO00sWTtNLGE7TztNO08sVTtPOzs7Z0IsMkI7O0k7OztJO0kscUI7SSxvQjs7SztLLGU7OztLLE07STtJO2E7O0c7O0ksTzs7Ozs7Yzs7Ozs7O21CO3FCOzs7d0IsSzt5Qjt3Qjt5Qjt5QjsyQjs7Ozs7eUIsTTt5QixVO3dCO3lCLFU7eUI7Ozs7K0M7Ozt1Qjs7O2U7Z0I7OztvQjtzQjs7O3lCOzt3QzswQjs7NkI7Ozs7OzBCLE87OytDLHlCOzs7eUI7d0I7O2dCLGtDO2dCLE07O2tCOzs7O2U7Z0I7Z0IsTTtnQixNO2dCLGlDO2dCLE07Ozs7Ozs7Ozs7Ozs7bUIsTTs7Ozs7a0I7Ozs7Ozs7Ozs7O2M7YTtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztnQyxvQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSTtHOzs7TTtNLE87OztnQixPO2U7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLE8sb0M7O0k7O0ssTTs7O08sdUIsNkM7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7STs7O1E7UTs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7cUI7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFM7OztPLE07O00sUztNO00sa0IsTzs7TTs7STtJO0c7O0ksSSx5QjtJO0c7O0k7SyxRO0ssUzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLO00sZ0MsSztNOzs7O007TSxPOzs4Qjs7O0s7Ozs7TSxPOzs7O087Tzs7Ozs7O0k7O0s7TSxNOztLO0s7TTtNOzJDO2Msb0M7TztRO2dDOzs7O0s7O007TTs7USxPO08sWTs7Ozs7Ozs7UztVO1UsbUI7Ozs7Ozs7VSxJO1U7VyxPOzs7VTs7Ozs7O1ksSTtZO2EsTzs7O1k7OztZLEk7WTthLE87OztZOzs7Tzs7Szs4Qjs7TSxvQztNLFc7OztRLEk7OztTO3lCOzttQjtzQjtVO1c7OztzQjs7Ozs7O1E7OztTO1E7UyxPOztROzs7O087UTtRLGU7TztRLE87O087O007SztLO0s7SztNOztTLE87O1MsTztpQixPOzs7SztNLHNCLFc7TTs7Szs7OztPOztNOztLO007UTs7O007SywwQjtLOztNO0s7TTs7Uzs7O1ksVztZLE87Vzs7O00sMEI7SztLO007UTs7OEIsc0IsVzs7TTtROzs7Ozs7VyxPOzs7cUI7OztnQzs7Z0M7Ozs7OztzQixPOzs7cUI7c0IsWTs7cUIsTzs7O1U7O0s7STtJOzs7O0s7Ozs7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0c7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7USxPOztROztROztROztROztROztROztROztRO2dCOzs7Ozt3QjtPLFc7TyxPOzs7O1EsTTs7UTtTLE87UyxPO1EsTzs7Tzs7USxPO08sTzs7OztRLE07Ozs7USxPOzs7Ozs7O08sVztPLE87Ozs7aUI7OztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OzJCOztPOztRLE87TyxPOzs7TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VTs7YTtVLE87OztPOzs7O1E7USxPO1EsTztPOztVLE87O1UsTzs7O1UsTzs7Ozs7O1E7O1MsTztTLE87USxPOzs7USxNO087USxPO1EsTztRLE87USxPO08sTzs7OztROzs7O1M7Vzs7UyxPO1MsTztTLE87USxPOzs7O1EsTTtPOztRO1U7USxPO1EsTztPLE87O087O1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87OztPLE87O087O1EsTztRLGE7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7OztPLGtCO08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxTO087USxNOzs7UTtTLFM7UyxPO1MsTzs0Qjs7UTtTLE87UyxPOzRCO08sTzs7Ozs7Ozs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7RztJOzs7OztJLG1CO0k7STtLO0s7SztLO087O3lCLG1EOzs7O0s7Ozs7a0M7Ozs7Z0I7O0k7Rzs7STs7Ozs7O2dCOzs7a0I7Ozs7Ozs7O1E7OztJO0ksYzs7Ozs7Ozs7Ozs7OztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCLHlCOztJOzs7SSxNO0c7O0k7OztPOzs7OztPO1E7O1MsTztnQjs7O08sTzs7Ozs7OztpQixPOzs7Ozs7Ozs7Z0I7O007O0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxVO1MsTzs7O21CO29COzJCO3FCO29COzs7OzBDOzs7a0I7OztROztTLE87OzttQjtvQjsyQjtxQixNO29COzs7OztxQixPOzs7a0I7OztROztTO1M7OztZO2EsVTs7O1c7O1MsTzs7O21CO29CLEs7b0I7O2tCOztROzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7VTtZLDJDO1U7VTtVOzs7O1csbUI7cUI7Vzs7Ozs7Uzs7VTtZOzs7O2U7ZSxPOzs7eUIsSSxJLE07Ozs7O2tDOzt5Qjt3Qjs7O2M7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7O2tCLFE7O1M7OztVLGE7Uzs7O1ksTzs7O3NCOztzQjtxQjs7Vzs7UztVLFc7VSxhO1U7O1U7b0I7VTs7VTtVO1UsTztTO1M7Ozs7Vzs7WTs7O1c7Ozs7O1M7O1UsOEI7VSxrQjtTOzs7WTs7Ozs7WTthO2E7WTthOzs7Z0I7Z0IsTztlOzs7WTtXOztTOztZO1MsTzs7O21CO29CLE07Ozs7b0I7OztvQjs7NkI7OztnQzsrQjs7OzttQjtvQjs7b0I7b0I7c0I7OzttQjtrQjs7UTs7UztTLE87a0Q7UTs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7OztLLE07Ozs7USxrRDtRLE87Tzs7d0IsUzt3QixTOztvQixjOzBCLE8sNEM7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixTOzBCLFM7c0IsYzs7SSxPO0c7Ozs7Ozs7O3NCOzJCOzJCOzs7Ozs7Ozs7OzsyQjsyQjsyQjs7MkI7MkI7MkI7c0I7O3NCO3NCO3NCOzs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksOEI7OztPOztRO1U7Ozs7YSxRO2EsTztZO1EsTTtPLE87OztPLE87OzJCLE87O0c7RztJOzs7O0k7Ozs7SyxNOzRCOzs7OztROzs7O0k7SywwQiwwQjtLLE87O0c7O0k7STsyQjtLLFE7VztLOzs7Rzs7STt5QixPLDhCO0c7O0ksVTtJO0k7Rzs7SSxPLHVCO0c7NkIsd0I7OztJO2M7Yzs7OztJO2M7Yzs7O0ksSSw2QixROztLLE07K0I7O0k7Rzs7O0k7YztjOzs7STs7O0c7O0ksWTtnQixNOztJO0c7O0k7STtHOzs7STs7Ozs7Ozs7O0s7O0k7Rzs7O0s7O0k7STtHOzs7OzswQiw0Qjt5QixPLHVDOzs7Ozs7OztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O2M7YzthOztHOztJO0k7SyxVO0ssVTtLLFU7SyxVO0ssVzs7Ozs7Ozs7Ozs7Ozs7TTtNO087TyxVOzs7Ozs7Ozs7OztPLE07OEI7O00sSTs7Ozs7OzswQztTOzs7Ozs7O007TztPO087TztPO3lCO087OztVO1c7Vzs7OztXO1k7WTtZO1k7OztVO1M7TyxnQjtPOzs7WSxZOztZO1c7OztPOzs7Ozs7UTs7UTtROzs7Vzs7WTs7WSxTO1k7VztVO29COzs7TTtPOztVO1c7VztzQjs7VTs7Tzs7VTtXO1c7VSxPOztNOzs7O087TztRO1EsNEI7TztPO1E7USxVO087USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0I7aUI7O3dCOztZO29COztzQjtpQztXOzs4QjtPOzs7VyxPOzs7cUI7cUI7b0I7OztPOzs7OztNO007TztPLEk7Ozs7Ozs7Ozs7TyxVOzs7Ozs7Ozs7O1E7UztTO1M7UztTO1M7UztRLEc7OztTO1U7Z0M7VTtTOzs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7OzthOztjO2M7OztjO2M7O2M7Ozs7O2M7Ozs7O2E7Ozs7Ozs7O1k7VSxXO1M7OztVO1c7Ozs7O2M7Yzs7Ozs7Ozs7YTt3Qjs7UTs7OztVLE07Uzs7VTs7VztXO1c7OztjOztlOztlOztlO2M7YTs7cUI7Ozs7OztRO1M7O1k7d0I7WTs7OzthO2U7OztZLFc7O1M7O1k7WSxPOztROztPLE07MkM7O00sTTsyQzs7O0ksTTtHOztJO0s7TSxLO007UTs7MEIsTywyQjswQixhOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7Rzs7STs7O3lCOzt5QixNO2lDOztHO3NCLG1COzZCLG1COzZCLG1CO3VCLGM7O0k7OzsyQjs7eUIsTTs7O08sSSxVOzs7O1EsTTs7Ozs7O0c7O0k7STtpQjs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7Ozs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOztTLE87OzsrQix5QjtROztTLE87OzsrQix5QjtROztTO1E7O1M7UTs7UztROzBCLHVCOztTO1M7UztTO1E7O1M7Ozs7bUI7bUI7a0I7UTs7UztVO1U7O1U7Ozs7VyxzQjs7OzthOzs7Ozs7Ozs7YTtjOzs7OztlOzs7Ozs7O2E7Ozs7O1c7Ozs7Ozs7VSxNOzs7O3FDO1U7O1csTTs7VTs7Ozs7OztVOzs7O1E7OztVOzs7b0I7Ozs4QjsrQjsrQixNOytCOzhCOzs7Ozt1Qzs7NkI7bUI7Uzs7VTs7O29COzs7OEI7K0I7K0IsTTsrQjs4Qjs7Ozs7dUM7OzZCO21CO1M7OztXLE87Ozs7cUI7OzsrQjsrQjt1Qzs7OEI7b0I7VTtVO1csa0QsYztXO1c7MEQsYztXO1c7YTs7OztnQixPOzs7OzBCLE87Ozs7b0MsWTs7O3FDOzs7b0M7bUM7eUI7ZTtXO1c7VTtXOzthOzs7Ozs7O2M7Z0I7OzthOzs7Ozs7VztVO1U7bUI7O29COzs7OztxQixRO29CO21CO1M7O1Usd0I7Ozs7O3NCO1U7Uzs7VTs7O1c7YTs7VzthOzs7OztXOztjOzs7Ozs7VTs7VTtXO1k7WTtZOztZOzs7O2Esa0I7Ozs7O2U7OztrQjs7Ozs7O2lCO2U7Ozs7O2E7Ozs7OztnRTs7Vzs7O2UsTzs7Ozt5QixPOzs7O21DO29DOzs7a0M7d0I7YztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7O2tCLFU7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7Ozs7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7OzttQjtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87OytCLDRCOztHOztJOzs7Ozs7O0k7SyxVO0s7SyxPOzs0QixPLHNDOzs7STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07Ozs7MEI7OzswQzs7OztzQjs7dUIsTTt1Qjs7OzswQjs7OzBDOzs7Ozs7c0I7Ozt1QixLO3VCLEs7dUI7eUI7Ozt1Qjs7OzBCOzs7MEM7Ozs7bUIsVzs7OztxQjs7Ozs7Ozs7O21COzs7OztzQixvQjs7O3NCOztzQjs7Ozt1QixLO3VCLEs7dUI7dUIsUTs7Ozs7O3lCOzs7Ozs7OzswQixVOzBCLFU7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7O2tCO2tCLE87aUI7Ozs7OztFOzs7Ozs7O0c7Ozs7SSx3Qjs7Z0MsTyxzQzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLCtCOztJOzs7Rzs7STtLOzs7Vzs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxZO2dCLE87STs7SyxVOztrQjtjO0c7O0k7SztNLE87TSxjO0s7STtJLFk7Z0I7STs7SyxVO2tCO0ksYztnQjtJLE07Rzs7SSxHO0s7TSxPO1k7OztJO0k7SztLO007TyxPO08sTTtNLGU7TTtPO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7Szs7Ozs7SztJO0ssaUM7STs7SyxhO0ssTztJO0k7Ozs7Ozs7Ozs7STtLO0s7O0k7STtLO0s7O0s7Szs7O0s7Szs7Ozs7STtLO0s7Szs7SSxPO0c7O0ksTzs7OztlLE87Yzs7OztHOztJLE87OztjOzs7ZSxPO2UsYztjO2E7O0c7O0k7Szs7a0IsTTtLLEk7Ozs7aUI7Tzs7Ozs7SyxXOzBCLE07SztLO0s7SztLLHVDOzs7O2tCOztPO1M7O3lCLG1DOztROztPO1M7O3lCLG1DOztRO08sUTtPOztPOzs7OztLO0s7SyxXO0s7Ozs7NEI7OztHOztJO0k7SztLO0s7SyxJOztLO00sVztNOzs7OztJO0k7O00sWTs7O087b0I7O087OztNOzs7O0c7OztJLE87K0MscUI7OztJOzs7Szs7SztNO007OztJO0c7O0k7Ozs7Ozs7Ozs7OztLOzs7OztpQjtLO0ssVztLO007TTtROzs7Vzs7WTtXO1U7O007UTs7O1c7Ozs7Ozs7VyxPOzs7VTs7TSxPO007UTtVOzs7YTthLG1CLDJCO2E7YSxPO1k7O007UTs7O1c7Ozs7O1c7O2E7O1k7OztZLE07OzZCOztXO1U7Ozs7O007SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7Ozs7Ozs7Ozs7OztRO1M7UyxxQix1Qjs7O1ksVztpQztZLFE7WTtZO1c7Ozs7OzsyQyxxQjtPO1E7Uzs0Qiw0Qjs7O1ksc0I7WSxRO1k7WTtXOzs7Ozs7OztLO007UTtVOzs7YTs7O3FDO2M7Z0I7OzttQjs7Ozs7OzttQjtxQixnQztvQjttQjtxQixnQztvQjttQjtrQjs7Ozs7O2E7WTs7TTtROzs7Vzs7Ozs7VyxXOzt3QjtXOztZO1c7VTs7Ozs7Ozs7Ozs7VTs7O2E7YTtZOzs7Ozs7Szs7UTtVOzs7YTs7Ozs7YTs7cUI7O1k7O0s7Ozs7Ozs7O1E7UTs7USx5RDs7Ozs7Ozs7O2E7OztnQjtnQixPO2U7O1c7VTtXOztXLFM7WTs7WTs7Ozs7YTs7O2dCO2dCLE87ZTs7VztVOzs7OztROzs7OztNOztTOzs7WTs7OzthO2U7OztrQjtpQjs7WTtXOztNLFc7OztLLE87STtJLE87O0c7RztJLE87Rzs7STtJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7Ozs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt5QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7RztJLE87OztjLFc7YyxPO2E7O0c7RztJOzs7SyxPO0ssTztJLE87O0c7STs7RztHLDhDLHdCO0c7STs7Ozs7Ozs7Ozs7OztLO0s7TTtROzswQixvQixXOztNO007UTtLO0ssTztJO0ksOEMsUztJO0s7O2U7O0k7STs7Ozs7Ozs7O0c7O0ksZ0M7Ozs7Szs7STtHOztJOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7OztJLE87OzRCOzs7O0k7Ozs7YyxPO2E7Ozs7SSx1QyxPLHVCOzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLHFCLE8sd0M7STtJO0ssTztLO0s7Tzs7O1U7VTtTOztJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO2dCOztJO0c7O0k7Rzs7O0k7OztJO0c7O0k7SyxNOzs7SyxNOzs7SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7O0s7OztROzs7STtHOztJO0ssTTs7SyxNOztLLE07SztPOzs7Ozs7Ozs7OztLOzs7UTs7O0k7RztHO3FDLGtDOzs7Ozs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7Ozs7O2UsTTs7bUM7O0s7O0c7RztHOztNLHVCOztNO0s7OztJLE87OztjLE07O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzJCLFk7dUIsWTtzQixZO3dCLE8saUM7Ozs7Ozs7Ozs7Ozs7O0ksZTs7O0ssSSxjOzs7Ozs7O2U7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOztvQjtLLFEsTzs7Ozs7STtHOztJO2M7SSxJLHFCLE07SSxPO0c7O0k7O0s7SztJLGtCO0k7OzZCLFk7d0IsWTt5QixZO3dCLE8sc0M7O0k7STtHOztJLGdCLE07STtHOztJLGdCLG1CLE07STtHO21CLCtCO21CLCtCO21CLCtCO21CLGtDO21CLCtCO29CLGdDO3FCLGlDOzZCLHlDOzZCLHdDOztJO0ssUzs7SyxNO0k7Rzs7SSx5QjtJLE87Rzs7SSxhO0ksTztHO3NCLE8sZ0Q7O0k7SyxXO0ssYTtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7OzswQjs7USxvQzs7OztnQixPOztHOztJOzt5Qjs7MkI7ZSxPOztHOztJO0s7TSxNO007TSxVO0s7Ozs7O007Yzs7Ozs7Ozs7Rzs7SSxROztJO1k7OEMsaUI7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7O0ksVTtJLFU7SSxVO0ksTzs7O2M7O2lCLE87O2lCOztxQzs7YTs7RztpQywrQixVO3lCLGlEOytCLGE7OEIsYTtHOztJOztLO0s7SztJO0c7O0k7Ozs7Ozs7OztJOzs7Ozs7TztRO2tCOzs7Ozs7STtHOztJOzs7TTtNLE87OztJO0c7Rzs7STs7SztLO0s7STtHOztJO0s7Tzs7eUIsZ0M7O0ssTTtJLE87Rzs7STtJO2lCOzswRDs7OztHOztJOztpQixPOzs7Ozs7Ozs7TTs7Ozs7Rzs7SSxPOzswQiwrQzs7RztHLGdCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLLFU7SztLOzs7OzJCOzs7RztHLGlCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxxQjs7STtpQjtHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHNCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7Ryx1Qjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksYztJLHNCO0c7O0ksYztJLHNCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksVTtJLDJCO0c7O0ksZ0I7Rzs7SSxxQjtHOztJLFk7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksNEM7STs7OztJOzthO2E7Ozs7STtJO0c7O0k7O2E7YTs7Rzs7O0k7STtJOzs7STtJO0k7RztrQyx3QjsrQix3QjtvQywwQjs7SSwyQjtHOzRCLHFCO2lDLDBCOztJLDJCO0c7OEM7Rzs2QztHO3NDLCtCO3VDLGdDOztJO0k7STtJO0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7cUMsa0IsUzs7SSxNO0c7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOztJLE87RzsrQixzQjs7SSxVO0k7Rzs7STs7SyxNO0s7STs7O0k7O0ssTTtLO0k7OztJOztLLE07SztJOzsrQixzQjtzQixjOzs7STs7OztJOztHOzs7STs7O0ksVztJO0c7bUMsMkI7aUMsZ0M7dUMsc0M7aUMsZ0M7cUMsbUM7cUMsbUM7c0MsbUM7b0MsbUM7O0k7RzttQyxtQzs7STtHO3FDLGlDOztJO0c7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7STs7Tyx3QyxZOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7OztTOzt1QiwrQzs7Ozs7Ozs7Ozs7OztjOzs7aUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7OztJOzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQztxQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO2lDLGdDO3NDLGdDO3VDLHNDOzRDO0c7b0MsbUM7b0MsbUM7bUMsZ0M7MEMsbUM7d0MsbUM7dUMsb0M7b0Msb0M7O0k7RzttQyxpQzs0QztHO3VDLG9DO3NDLG9DOztJO0c7MkM7Rzs7STtHO21DLG9DO2lDLGlDO3lDLG9DO29DLGlDOztJO0c7MkM7RztrQyxpQztrQyxpQztxQyxvQztvQyxpQztzQyxvQztnQyxpQztxQyxvQzs7STtHO3VDLGlDOzJDLDJCO29DLDRCOzBDLDhCOzs7STs7O0ksVztJO0c7bUMsZ0M7bUMsZ0M7cUMsZ0M7c0MsbUM7cUMsbUM7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzt1QyxpQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7OztJOzswQix5QjtxQyxtQzsrQix5QjttQyx5QjtnQyx5QjsyQix5Qjs4Qix5QjsrQix5Qjs0Qix5QjtrQyx5QjsyQiwwQjs0QiwwQjs0QiwwQjsrQiwwQjs7O0k7OzhCLDBCOztJOztPOztzQixPLDhDOztJLE87OztjLFc7YyxxQjthOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7K0IsNEI7OEIseUI7cUMsbUM7cUMseUI7Z0MseUI7NkIseUI7aUMseUI7OEIseUI7MkIseUI7NEIsMEI7aUMsMEI7OEIsMEI7OztJOztnQywwQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7c0MsbUM7dUMsc0M7MkM7Rzt1QyxnQztxQyxtQztHOzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7Rzt1QyxnQztxQyxtQztHOzs7Ozs7OztJLG1COzttQyxtQzs7STtHOztJO0c7O0k7Rzt1QyxtQztnQywrQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7Rzs7SSxXO0k7Rzs7Ozs7O0ksbUI7OztJO0c7O0k7Rzs7STtHOztJO0c7dUMsb0M7dUMsb0M7Z0MsZ0M7O0k7O087O3NCLE8sOEM7O0ksTzs7O2MsVztjLHVCO2E7O0c7d0IsZTsyQixpQjs7SSxXO0k7Rzs7Ozs7OztJLDRCOztHOztJOzs7OztLLE87SSxzQjs7Rzs7STs7Ozs7SyxPO0ksc0I7O0c7O0k7Ozs7O0ssTztJLHNCOztHOztJOzs7OztLLE87SSx1Qjs7Rzs7Ozs7OztJLGdDOztHOzs7Ozs7SSx1Qjs7Rzs7STs7Ozs7SyxNO0k7Ozs7WTs7O0c7O0k7Ozs7Ozs7SyxNO0k7Ozs7OztZOztHLEk7O0k7Ozs7Ozs7OztLLE07STs7Ozs7OztZOzs7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7OztJLGdDOztHLEk7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7O0ksNkI7OztJOzs7OztLLE07SSw0Qjs7O0k7Ozs7Ozs7SyxNO0k7Ozs7WTs7O0k7Ozs7O0ssTTtJLGdDOztHO2dDLHlCO0c7Z0MseUI7Rzs7O0k7OztJO0c7K0IsOEI7Rzs7O0k7OztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DLG1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7aUQsTztpRCxPOzs7STtJLE87OztJLFk7O0ksTzs7OztJLE87Ozs7STtJOztLLHNCLE87SyxPOzs7SSxPOzs7O0k7STs7O0ssTzs7O0ksTzs7OztJO0k7Ozs7O1E7USxPOztRLG1CLE87USxPOzs7UTtRLFc7USxPOzs7USxPOztnQzs7OztRO1EsVztRLE87O3lCLE87OztRLE87O2dDOzs7MkIsTzs7O1E7UTtTLE87UyxzQjtRLE87O2dDOzs7O1E7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJOztxQjs7STtLLEs7SyxLO0ssSztJOzs7O087TztPLE87OztJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJOztxQjs7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7O0s7dUM7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFU7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxVO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OzJCLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE07TyxPOzt5QixPOztPLGlCLE07TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGtDLE07TztPLE87OztPOzs7O1U7OztXLFM7VyxPOzs7VTs7Ozs7OztTOzs7O1MsUztTOzs7MEMsTzs7TztPO08sTzs7O087TyxVO08sTzsrQzs7O087TyxPOzs7TztPLE87O08sa0IsTTtPLE87OztPO08sZ0I7O3lCLGdCOztPOzs7USxNO1Esb0I7Tzs7dUI7O08sZ0I7OztPO087OztPO087TyxPOztPLG9CLE07TyxPOzs7TztPO08sZ0I7OztPO08sTzs7O087TyxPOzs7TztPO087TyxPOzs7TztPLE87OztPO08sUztPLE87OzBCLE87OzRCOzs7TztPLE87O087O1EsTTtRLG9CO08sTzs7OEI7Ozs7TztPO08sTzs7O087TyxPOzsyQixPOzsyQixPOzs7TztPLGdCOzswQixPOzsyQixPOzsyQixPOzs7TztPLE87Ozs7Ozs7TztPLFU7TztPLE87a0MsTzs7Ozs7Ozs7O0k7STtJO0ksTzs7OztJO0k7aUM7Ozt3Qjs7O087Tzs7Tzs7Tzs7TyxrQixNO08sTzs7O087aUI7O087d0M7TyxPOzswQixnQjs7Tzs7USxNO1Esb0I7TyxPOzs4Qjs7O08sb0IsTTtPLE87OztPO08sTzs7O087TyxPOzswQjs7MEIsTzs7MEI7OzBCLE87O3dCLE87OztPO08sTzs7Ozs7STtJOzs7O087TyxVO08sTzs7d0IsTzs7O08sUztPO08sTzs7O087TyxVO08sTzsrQzs7TyxtQyxNO087TyxPOzs7TztPLE87O3dCLE87OztPO08sTzs7OztJLHFDLE87O0ksTzs7OztJO0k7Ozt5QixPOzs7TztPOzs7TztPOzs7TztPLE87O3dCLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7Ozs7Ozs7SyxNO0ksMEM7STtJO0k7SSxPOztHO0k7OztRO1E7O087O1EsVTtRLE87Tzs7O1E7UTtRLFM7USxPO087O1EsVTtRLE87Tzs7USxVO1EscUI7Tzs7USxVO1EscUI7Tzs7Ozs7OztRLFU7USxxQjtPOzs7UTs7Ozs7OztRO1E7O3dCOztRO1EsUztRO1EsTztPOzJCLDRDOzs7UTtRO1EsTztPOzs7UTs7OztRO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7OztRO1E7UTtRLE87TzsyQixTOztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7O1E7Ozs7O1E7USxTO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7O1E7UTtRLE87Tzs7O1E7OzZCLE87OytCLE87OytCLE87OztXO1csZ0I7O087O1EsVTtRLE87Tzs7O1EsVTtRLE87Tzs7O1E7O1EsUzs7Tzs7UTs7UyxPOzs7USxPO087Ozs7Ozs7OztROzs7Ozs7UTtRO1E7OztXOztZOzs0Qjs7WSxPOztXOzs7WSxNO1c7VyxPO1U7O1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7O0ksTztHOztJLFE7O0c7O0k7SyxPO0ssTztLLFM7SSxPOzs7YyxPO2E7O0c7RyxzQjtHOzs7TSxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEM7Ozs7UTtpQjs7Ozs7SSxXO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozt1Qjs7UTs7Ozs7STtHOztJO2dCOztJO0c7O0ksSTs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7VTs7Ozs7Yzs7dUIsTztzQjs7Ozs7Yzs7dUIsTztzQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MEIsTzt5Qjs7Ozs7O2E7O3NCLE87cUI7Ozs7TyxPOzs7Ozs7Ozs7SSxPO0c7O0ksdUI7STs7Ozs7Ozs7O00sVztNOzs7Ozs7STs7O0k7SztLO0k7Rzs7SSxPO0c7O0ksTzs7O2M7YzthOztHOztJLE87OztjO2M7YTs7Rzs7STtLO0s7OztTO1MsTztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7O0k7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7OztJO0c7O0ksZ0I7SSxVO0ksTztHOztJO0s7SSwwQztJO2dCOztJO0c7O0ksVTtJLE87OztjOztlOztnQzs7ZTtjO2MsTzthOzs7Rzs7STtJLE87OztjO2MsTzthOztHOztJLEksOEI7SSxPOzs7YyxjO3dCO2M7YyxPOzthOztHOztJO0k7bUI7O0s7TTs7OztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7SSxPO0c7Ozs7SztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLO0s7TTtLO007Szs7Ozs7Ozs7Ozs7OztVO1UsSSxVLDRCOzs7Ozs7Vzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztLLFU7Ozs7Ozs7Ozs7Ozs7UztTLE87Ozs7O0s7Szt3RTs7O0ksVztJO0s7TSxNO007SztLLFU7SztLOzs7O0s7SyxNOztHOztJLE87OztjO2E7O0c7O0ksTzs7O2MsTzs7O3dCOzs7eUI7eUI7O3VCOzthOztHOztJO0c7O0k7Rzs2QiwyQzsrQiw2QzsrQix5Qzs2Qix1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COzs7O0c7O0k7STtnQjs7SyxTLHVCOzs7Rzs7SSxTOztJO0c7O0ksaUI7Rzs7STs7Ozs7Ozs7Z0I7OztHOztJOzs7Ozs7OztnQjs7SSxPO0c7O0k7SyxhOztNLFk7bUI7bUI7TSxPO0s7SyxPLG9DO0c7O0k7O00sWTtNLE87SztLLE8sNEI7Rzs7STs2QixzQixhOzZCLHVCLGM7NkIscUIsWTs7Rzs7STsyQyxnQzs7RztHO0k7STtJO0k7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7O0ssTTs7Syx3QixPO0ssTzs7STs7O0ssTztLLE87SSxPO0c7O0k7O0ssTTs7STtHOztJO0k7OzthLFk7YTthO1k7Rzs7STtJOzs7YTtjLFM7OzthO2E7WTtHOztJOzs7Szs7O0k7SyxXO0s7Ozs7K0I7Ozs7O0ksTzs0Qyx3QjtHOztJO0ssSTtLLEk7Ozs7STtnQixPO0ssSSxpQixJLDhCOzs7Ozs7O007TTs7Ozs7O0ssMEI7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ssSTs7STtnQixPO0ssSSxpQixJO0s7bUIsTTtNOzs7TztRLE07OztPOzs7dUIsTTtNO087UztXO08sTztNOzs7Ozs7TTs7Ozs7Rzs7STtJO0c7O0k7SyxJO0ssTztLLE87STtJLGE7STtHOztJOzs7Rzs7Ozs7Ozs7O0ksUyxPO0k7O0s7OztJLE87O29CLGMsNkI7O0ksVSxNO0ksa0I7OztLOztPLGM7Tzs7Ozs7Ozs7O0c7c0IsYyxtQjs7STtJOzs7RztzQixZO3NCLGtEOztJOztLO087OztVOztXOzs7Ozs7Ozs7Ozs7O1UsTztTOzs7STs7TSxNO0s7OztNLEk7TTtNOzs7O08sSSx3Qzs7OztTOzs7Vzs7Uzs7Ozs7Tzs7Ozs7SyxjOzs7SyxNO0k7Ozs7SyxNO0s7Szs7Ozs7TSxJLFk7Ozs7Ozs7O1M7Ozs7O1E7Ozs7O00sdUI7TTs7Ozs7SSxjO0c7O0k7OztrQjs7STtHOztJLGdDOzs7O1E7Ozs7OzJCOztROzs7Ozs2Qjs7UTs7OztRLHFCOzs7Ozs7SyxNO0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O0c7O0k7SyxNO0ksc0I7Ozs7O08sTTtNOzs7Ozs7SyxJO0s7Z0I7TTtNLEc7O087UTs7Ozs7Ozs7STtJLFc7STs7O087O007O0ksSSxlLHNCO0k7OztPOzs7UTs7Ozs7Ozs7O1k7Ozs7YyxNOzthO2EsSyxrQzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7OztROzs7TTs7STtHOzs7O0s7OztNOztLLE07O0ksTTs7O0k7OztLLFc7Ozs7STs7SztLO087Ozs7VTs7O1U7UztLOztLLE07STtLO0s7SztPOzs7O1U7Vzs7WTs7WTs7O2E7Ozs7WTs7Ozs7UztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7STs0Qjs0Qjs7O0csSSxtQjt1QixXO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1UsUTs7Uzs7VSxPOztTOztVO1c7O1ksTztZLE87VyxPOzs7Ozs7Ozs7O2tCO1U7Uzs7VSxRO1U7Ozs7VztXO1U7Uzs7VSxLLHlCO2tCOztVO1M7O1UsUTtVLEksWTs7OzhCOzs7VTtXLFU7VztVO1M7O1UsUTtVO1U7Uzs7VTs7O1U7VTtTOztVOztXO1k7YTs7OztjLE87YTs7WTtZOztVLE87Uzs7VTtVO1c7OztjOzs7Yzs7OztlLE87Ozs7Ozt5QixHLDhCO2tDOzs7OzBCOzt5QixNOzs7O3lCLFE7Ozs7Ozt5QiwyQjt5QixxQjsyQzt5Qjt5Qjs7O2MsTTs7VSxPO1M7O1U7VztZLFE7WTs7VyxnQztTOztVO1U7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7OztTOztVO1U7Ozs7ZTtnQixTO2dCLGU7Ozs7d0MsTzs7O2U7Ozs7VyxPOztTOztVOzs7Ozs7VyxNOzs7O1c7WTs7ZTtnQixTO2dCLGE7Ozs7dUMsTzs7O2U7Ozs7VyxPOztTOztVO1U7Ozs7MEM7O2U7Ozs7ZTs7VyxNOztTOztVO1c7VyxlOztTOztVOzs7cUM7bUI7bUI7O1M7NkIsNEI7O1UsbUI7Ozs7Uzs7VTs7VztZLE87bUI7OztVO1M7O1U7Uzs7O1U7OztVLE87Ozt1QyxTO2lDLFM7O1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7Ozs7Uzs7VTtzQjs7VTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTs7WTtZOzs7OzRCOztZO1k7Ozs7O1M7O1Usb0IsVztVLE87Uzs7Ozs7OztVO1csUTtXLFU7OztXO1c7VyxPOztVO1M7O1U7O1M7O1UsbUMsTztVO1U7VSxpQjs7OzJDLGtDO3lDLGlDOztVO1UsWTs7Vzs7WSxPO1ksTztXO1c7VyxXO1csTzs7VTs7Uzs7VTtVOztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtrQztrQzs7OztVO1csTTs7VTtvQjtvQjtTOztVO1UsRyxXO1c7VSxNO1M7O1UsRyxXO1c7VSxNO1M7O1U7VTtTOztVO1U7Uzs7VTs7OzhCOztXOzs7K0I7O1U7UztvRCx5Qjs7Ozs7Ozs7VTs7O1U7VztXO1c7VTtTOztVO1UsTztTOztVO1UsTztTOzhCLHVDOztVO1c7VztVLE87Uzs7VTtXLE07O1M7O1U7VTtTOztVLEksYztVO1M7O1U7Ozs7OztVO1M7O1U7VTt5QjtXLEksUzs7OztTOztVO1U7Ozs7b0IsTyxjO21COztTOztVO1U7Ozs7b0I7OzhCLGM7bUI7O1M7O1UsTztTO29DLHVCO2dDLHVCOztVO1c7O1k7O1csTzs7Ozs7O3FCO3FCO29COzs7OztVOztXOztXLFE7c0I7VTs7VztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLFM7OztVO1U7dUI7VyxJLFM7Ozs7Uzs7VTtVLE07UztzQyx5QixTO3FDLHlCLFM7O1U7VTtvQjtvQjtTO2lDLDJCOztVOztXOztZOzs7VyxlLE87O1csTzs7O3NCLE87VSxNO1M7O1Usa0I7VTtTOztVO1M7O1Usa0I7VTtVLE07Uzs7O1U7VTtTOztVO1U7Vzs7cUI7Ozs7OztvRSxTO3dELCtCO2dELFM7O29COztVOztTOzs7VTtvQjs7Uzs7VTtvQjtVOztXO1UsTztTOztVO29CO1U7O1c7VSxPO1M7O1U7b0I7VTs7Vzs7VztVLE87Uzs7VSxlO1M7O1UsZTtTOztVO29COztTO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7STtJLE87Rzs7STtJLE87Rzs0QixPLHNDOzRCLE8sdUM7NkIsZ0M7O0ksaUIsNkI7STtHOztJO0c7Z0MseUM7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7MEIsOEI7O0k7SSxPO0c7O0k7Rzs7SSwwQzs7O0ksTztHOztJOzs7Ozs7Ozs7O087Ozs7Ozs7Tzs7OztJOzRCOztHOztJOzs7Ozs7Ozs7Ozs7O0s7O0k7NEI7O0c7O0k7SSxPO0c7O0k7Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7SSwrQjs7STtHOztJO0c7O0ksWTs7STs7O0ksWTs7STs7O0ksTTtHOztJO0s7SztJLE07Rzs7STtJLE07Rzs7STtJLE07Rzs7STs7O3dCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7USxNOzs7O0k7Rzs7SSxxQjs7Ozs7Ozs7Ozs7O2dCOztnQjs7O007OztJO0c7RztJOzs7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7STs7Ozs7STs7Ozs7O0s7SyxROzs7SyxLO0k7Ozs7SSxXO0k7OztJLEk7STtHOztJO0ksVztHOztJO0k7Rzt5QixpQzs7STs7NEIsVyw4QjtJLE87Rzs7SSxtQyxjO0ksTztHOztJO0ksTztHOztJOztLO087O2dDLHNDOzs7STs7Ozs7O2U7Rzs7STtLOzs7SyxPO0s7SSxVOzs7Rzs7STtLOzs7SyxPO0s7SSxVOztJO0c7O0kscUM7Yzs7STs7O0kscUM7YztJOztLO0s7SSxPOzs7STs7Ozs7O0ssUztLO0k7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLLE87SyxPO0ksTzs0Qyx3QjtHOztJO0s7TSxhO00sYztNLE87TSxPO00sTztLLE87O0k7SyxPO0ssZ0I7SyxPO0ssTztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STs7OztjLFc7YyxPOztxQyx3Qjs7YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7Ozs7SztxQztJOzs7Ozs7WTs7Ozs7STthO0k7Rzs7STtJO0c7OztJOztHOztJLHlCOztJOzs7SSxrQjtJOztLO087Yzs7Z0I7OztLOztNO007TTtxQjs7O0k7O087OztVOzs7VztVO1M7OztJO0c7O0k7SyxNO0k7O0ssbUI7SyxxQzt1Qjt1Qjt1Qjs7TSxNOztNLE07OztNLE07O0s7STtJOzs7MkI7Ozs7USwwQztRLGtCOzs7O0k7RztxQyw2Qjs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7OztTO1M7UTtPOztROztTOzs7OztTO1MsSTtRO087O1E7Ozs7Ozs7OztTLE87UyxPO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7O1MsTztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7OztTLE07UTtTLE87UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsSztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7O1M7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7UztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87Uzs7O2lCOzs7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7OztTO1MsTztTO1E7OztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UyxLO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1MsSztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7UztROzs7UTs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTLE07UztRO087O1E7Ozs7Ozs7OztTO1MsTTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7O1M7Uzs7Uyw0QjtROzs7O1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1MsUztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1MsTztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLE87UztTO1c7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTtRO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7Ozs7O1MsSztTO1M7Uzs7UTtTO1U7Ozs7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7OztTO1M7Vzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztXLHlDLGM7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztROzs7UTs7Ozs7OztTO1M7Uzs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UyxPO1M7UztTO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7OztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7O1M7UyxPO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1MsTztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7Uzs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7OztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO1MsTTtROztTO1c7O3lCLHdCOztROzs7UTs7Uzs7Ozs7UztTOzs7UztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7UyxLO1M7UTs7O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7OztTLEs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTOzs7UztTLE87UztTO1c7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7O1M7UyxtQjs7O2M7UyxXO1M7UztXOztROzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7O1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7UTs7O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7O1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7O1E7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1MsUTtTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztROzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROztTOzs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1M7O1M7UztTO1E7Ozs7Ozs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UyxPO1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1MsTztTO1c7Ozs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxRO1MsTztTLE87UztXOzs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UyxPO1M7UyxPO1M7Vzs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UyxLO1E7UTtTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7O1E7UTtTO1MsSTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTOztTO1E7OztROzs7Ozs7Ozs7UyxJO1E7Tzs7UTs7Ozs7Ozs7Ozs7UyxJO1E7OztROzs7Ozs7Ozs7UztTO1MsTztTLEk7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsbUI7OztjO1MsTztTLFE7UztTO1c7Uzs7UztROzs7UTs7Ozs7Ozs7OztTO1M7UyxPO1M7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7Ozs7O1M7UztTLE87UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7OztTO1M7UyxPO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7O1M7UztTOzs7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztTO1M7Uzs7O1M7UztROzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTOztTO1M7O1E7USxNO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7Vzs7O2M7YzthOzs7UyxPO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7OztTO1E7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1c7OztjO2M7YTs7O1MsTztTO1E7OztROztTOzs7Ozs7OztTO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTLGU7UztTO1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Ozs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7Ozs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7OztROztTOzs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROzs7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztRO1E7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UyxPO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7Ozs7Ozs7O1E7OztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1M7UTs7Ozs7O087O1E7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7UztROzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTLE87UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1MsSTtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7OztTO1U7OztRLEksdUI7UTtPOztROztTOzs7Ozs7Ozs7UztTOzs7O1M7VTs7O1EsSSx1QjtRO087O1E7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztVOzs7USxJLHVCO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7OztTO1U7Ozs7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UztTLE87UyxXO1M7Vzs7Ozs7Ozs7OztTO2U7UTs7O1E7O1M7Ozs7O1MsUTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLHlCO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOztTOzs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7O1M7OztRO1MsTTtRO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsTztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Uzs7UyxRO1E7Tzs7UTs7Uzs7Ozs7O1M7O1MsUTtRO087O1E7O1M7Ozs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7O1M7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1MsaUI7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTLFc7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UyxLO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7Uzs7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UyxLO1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7Uzs7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1MsSztTLEs7UztTOzs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTOzs7O1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UyxPO1MsVztTO1c7O1M7ZTtROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxLO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTLEs7UztTO1MsSztRO1E7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7OzthOztTLE87UztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLGdCO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxPO1M7UyxRO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLFE7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztTLE87UztXOztTO1M7UztROzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7O1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1MsTztTO1M7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UTtPOztROztTOzs7Ozs7UTtPOzRCLE0sMkM7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UyxLO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTLEs7UztTO1M7UyxLO1MsTztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTOzs7WTs7Ozs7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7d0QsTztHOztJLE87Rzs7SSxPO0c7dUQsTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7Rzs7STtJLGM7STtJLE87RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7SztLOzs7Ozs7STs7O0k7STs7OzBCO0ksYzs7O0k7STtHOztJLGdCOztJO0ksSSxVLDZCO0k7STtHOztJLE07MEI7Rzs7SSxNO0c7O0k7Ozs7TSxVOzs7Ozs7Ozs7O08sTTs7O08sTTs7TTs7Ozs7O0c7O0k7Ozs7Uzs7Uzs7Uzs7O3NCO0k7Rzs7SSxnQjtJLE07OEI7Rzs7STsyQixPO0k7O3FDO0c7O0k7MkIsTztJOztxQztHOztJO0ksTztHOztJLE87Rzs7STtJO0c7O0k7STs7Ozs7OztHO0c7STtJOzs7SSxXO0ksTzs7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztHOztJO0c7Rzs7O00sdUI7Ozs7bUI7O1E7UyxVO2dCOzs7O1U7O1csTztrQjs7Ozs7OzthOzs7Ozs7O2dCLGtCOztnQixPO2U7Ozs7Ozs7YTs7Ozs7OztnQixvQjs7Z0IsTztlOzs7cUI7O1U7O1csZTtrQjs7Ozs7a0I7Ozs7O2tCOzs7Ozs7O2E7Ozs7Ozs7Z0Isb0I7O2dCLE87ZTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxhO0k7STtLLE87O0k7RzswQjs7STtJO0s7O1E7Ozs7Ozs7VTs7VTs7VTs7VTs7YTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVLG1CO1U7Ozs7UyxTO3FDO1M7UztVLE87O1M7O1MsZ0M7O1M7VSxPOztTOztTOztTOztTOztTOztZOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7WTs7UztTOztTOztZOztTO1M7O1M7O1k7O1M7O1M7bUI7UztVLFc7VTs7OztpQzs7OztTO21CO1M7Uzs7UzttQjtTOztTO21CO1M7Uzs7UztnQjtTOztTO1U7WTs7VSxRO1M7O1M7a0I7Uzs7UztVO1k7O1UsVTtTOztTOztZO1M7O1M7VTs7O1M7O1M7VTtZOztVOzs2Qjs7O1M7O1M7VTtZOztVLFc7VTs7NkI7OztVO1M7O1M7VTtVO1k7O1U7VSxVO1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1k7O1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTLGdDOztTLFE7Uzs7UyxVO1M7O1M7O1M7O1M7O1M7O1k7O1M7O1M7O1M7VTs7O1M7O1M7VTs7Ozt3Qjs0Qjs7UztVO1k7O1U7OztlLGE7ZTtjOzs7O1M7OztVLFc7VTs7UztVOzs7Uzs7Uzs7WTs7UztVLFc7VSxZOztTLHlCOztTLFk7Uzs7OztTOztTO1Msc0I7Uzt1Qjs7VTs7VTtXOztjOzs7Ozs7Vzs7O1U7VztXO1csTTtXO1c7VyxVO1c7VyxZOzs7VyxJLGU7Ozs7Ozs7a0I7Ozs7Vzs7O1U7Ozs7b0M7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7UztpQjs7O0s7OztHOztJO2tCOztLO007O1M7OztNOzs7Ozs7bUM7UTs7Ozs7UyxNOzs7UyxPOzs7O1E7Ozs4QjtROzs7WTs7Ozs7O1csd0I7O1ksTTtXOztZLE87WSxROztXOzs7Ozs7O1E7OztROztTO1MsUTs4QjtROzs7WTs7Ozs7O1csNEI7O1ksTTtXOztZLE87WSxVOztXOzs7Ozs7O1E7UTtROzs7UTs7UTs7Vzs7UTtRO1E7UTs7O1E7O1E7O1E7O1E7O1E7Ozs7UyxNO1E7O1MsTztTLFU7O1E7O1E7Z0I7UTtROzs7UTtnQjs7O0c7O0k7a0I7O0s7TTs7Uzs7O007Ozs7Ozs7UTtTO1MsSzs7UztTLFE7UTtRO1M7UztTOzs7O1EsUTtROzs7UTs7UTs7UTs7O1E7UyxNO1MsTTtTOzs7Ozs7UztVO1U7WTtlO3NDO1E7Uzs7Uzs7OztTLFU7Uzs7UTs7O1E7Z0I7UTtROzs7NkI7O1EsVTtROzs7Rzs7STs7SztNOztTOzs7TTs7Ozs7USxTO1E7UTs7OzZCOztROztXOztRO1E7OztRLFE7UTs7O0c7O0k7STtLOztROzs7OztTOztTO2lCOztLOzs7Rzs7STtjOztJLE87Rzs7SSxlOztLO0s7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTtXLE07VyxNO1csVTtVO1UsRzs7Ozs7Ozs7OzsrQjs7Ozs7Ozs7Ozs7Ozs7OzswQjs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7TSxjOzs7OztTLFU7UztTLFU7Uzs7O1MsVTtTO1M7Ozs7OztTLFU7UztTO1UsTTtVLE07UztTO1UsTTtVLE07UztTLFU7Uzs7O1MsVTtTO1M7VSxNO1UsTTtTO1MsVTtTO1MsVTtTO1M7OztNOztJO0k7Rzs7STs7OztjOztJLE87Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7O0c7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjtJLEc7SztJLFc7SSxHO0s7SSxXO0ksRztLO0ksVSx1Qjs7Ozs7eUI7OzBCOzsyQjs7UztVLE87aUI7Ozs7Ozs7Ozs7Ozs7OztJLFM7Ozs7O3dCOzswQjs7MkI7O1M7VSxPOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLO0ssYztJO0c7O0k7SztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPO08sVztPLFc7TyxPOzs7OztJO0c7O0k7STtHOztJOztPOzs7SSxPO0c7c0MsZ0M7NEIsMkI7O0k7Ozs7OzBCOzsyQjs4Qjs2Qjs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1ksbUM7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix5Qzs7STs7O2E7aUMsTztJOzs7O00sTTs7b0Isd0IsTzs7SztLOzs7Rzs7STs7SSxROztJO0k7SSxPO0c7O0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7OztPOzs7bUI7Ozs7Ozs7bUI7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7TyxPOzs7OztJLE87Rzs7STs7OztROzs7OzZCLE8sdUI7Ozs7Tzs7Ozs7aUI7aUIsTztnQjs7OzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7Ozs7NkIsTyx1Qjs7OztPOzs7OztpQjtpQixPO2dCOzs7OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO2M7Yzs7O2dCO0c7O0k7SSxPO0c7OEIsd0I7O0ksTztHOztJLFE7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7Ozs7bUM7Ozs7SSxPOzs7Ozs7a0M7Ozs7STtJOztNLE87Ozs7b0M7O29DOzs7Ozs7O1MsTzs7Ozs7bUI7Ozt1Qzs7OztTLE87Ozs7dUM7Ozs7Ozs7O1UsTzs7Ozs7b0IsUTs7b0IsTzs7Ozs7OEI7OzttQjs7d0M7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7OztPLE87Ozs7O2lCLFE7O2tCOzs7O2dEOzs7O2lCLE87Ozs7K0M7O2dCOzs7Ozs7Ozs7O1c7OztZLE87Ozs7OzswQzs7MEM7Ozs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOzs7WSxPOzs7Ozs7c0IsTzs7OztzQixRO3NCO3VCOzswQjtzQixPOzs7OztnQzs7O3FCOzswQzs7OztXO1U7TyxPOzs7OztpQix3Qjs7aUI7a0I7Ozs7Ozs7O2lCLE87Z0I7OztpQjs7OzttQixPOzs7Ozs2Qjs7Ozs7aUI7Z0I7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7OztPLE87Ozs7OztxQzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7SyxPOzs7O21DOzttQzs7Ozs7SyxPOzs7O21DOzs7Ozs7Ozs7O0s7Ozs7O00sZ0M7Ozs7OztJOzs7TSw0QjtNOztLLE87Ozs7O2U7Ozs7O0k7SyxPOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7OztxQzs7Ozs7OztLOzs7SztNLE87O0s7Ozs7Ozs7Ozs7Ozs7O1M7VSxPOztTOzs7USxHO1MsTztpQixPOzs7O1MsTzs7Ozs7OzttQjs7OzttQjs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7OztJO0s7TSxPOztLOzs7a0MsTzs7OzhCOzt5QixPOzs7TyxPOzs7O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxhLE87Ozs7VyxPOzs7Ozs7eUM7OztPOztRLE87Ozs7O2tCOzs7Ozs7TyxPOzs7OztpQjs7Ozs7OztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7O08sTzs7OztxQzs7cUM7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRLDRCOzs7TyxPOzs7Ozs7O2lCOzs7O0k7Ozs7a0M7OztHOztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sZSxPOzs7SyxPOzs7Ozs7bUM7OztJLGlCOzs7OztLO2UsTzs7SyxPOzs7Ozs7bUM7Ozs7SyxPOzs7Ozs7bUM7OztJLE87Ozs7OztrQzs7a0M7Ozs7SSxlOzs7Ozs7OztNOztROzswQiw2Qzs7O007Ozs7Ozs7Ozs7Ozs7VyxZOztXLE87O1U7O3FEO1k7Ozs7bUM7Ozs7OztlOzs7O21DOztZOzs7O21DO1c7Ozs7a0M7Ozs7OztjOzs7O1c7O1U7O087UywyQzs7Ozs7Ozs7Vzs7OztrQzs7Vzs7Ozs7Ozs7OztZOzs7YTthO1k7Ozs7Ozs7Ozs7Ozs7K0M7Ozs7Ozs7Ozs7Ozs7OzhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7OzsrQzs7Ozs7OztZOzs7Ozs7Ozs7OztTO1U7VyxnQjtXOzs7OztZOzs7O1U7VztXLEk7Vzs7Z0I7Z0I7Ozs7Ozs7WSxNOzs7Ozs7O1U7c0I7VyxTOzs7cUM7cUM7VTs7Ozs7Ozs7Ozs7Ozs7TTs7O0k7OztJOztLOzs7SSxPOzs7O2tDOztrQzs7Rzs7STs7SyxPOzs7O21DOzs7O0ksMEI7STtJLE87Ozs7O2M7OztrQzs7Rzs7O0k7SSwwQjtRO0k7Ozs7TTs7O0ssTzs7UTtJLE87Ozs7O2M7Ozs7Yzs7OztrQzs7Rzs7STs7TSxPOzs7O29DOztvQzs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlLE87Ozs7O3lCOzs7Ozt5Qjs7Ozs7OztZOztlOztZOzs7VyxPOzs7O3lDOzs7cUI7Ozs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7OztXOzs7O2EsTzs7Ozs7MkM7Ozs7O1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7UyxPOzs7OzttQjttQjtvQjs7dUI7bUIsTzs7OztpRDs7OzZCOzs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozt1Qzs7OztTLE87OztTLE87Ozs7Ozt1Qzs7Ozs7Ozs7YSxPOzs7Ozs7MkM7Ozs7O1MsTzs7Ozs7bUI7Ozs7OztTLE87Ozs7dUM7Ozs7UyxPOzs7O3VDOzs7OztVLE87Ozs7d0M7OztTLE87Ozs7dUM7O3VDOzs7OEI7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVOzs7O3dDOzs7Ozs7Ozs7O1U7VyxPOzs7OztxQjs7b0I7Ozs7VyxPOzs7OztxQjs7OztxQjs7OztVOztXO1c7a0M7OztVLE87Ozs7O29COzs7OztVLE87Ozs7d0M7O3dDOzs7O1UsTzs7Ozt3Qzs7d0M7Ozs7VSxPOzs7O21COztvQjs7O3dDOzs7O1UsTzs7Ozs7b0I7Ozt3Qzs7OztVLE87Ozs7Ozt3Qzs7OztVLE87Ozs7O3dDOzt3Qzs7Ozs7Ozs7Vyw0QjtXOztVLE87Ozs7d0M7OztvQjs7O3dDOzs7OztXOzs7O3lDOzs7Ozs7YTs7OztjO2M7cUM7YSxPOzs7Ozs7Ozs7dUIsUztzQzt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7Ozs7OztlLG9DOzs7Ozs7YTtjLE07YztjLDRCO2M7O2EsTzs7Ozs7dUI7Ozs7Ozs7TSxPOzs7O29DOztvQzs7Ozs7OztPLE87Ozs7O2lCOzs7O007TyxPOztNOzs7Rzs0Qjs7STs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7SztNLE87O0s7O0ksa0IsTzs7STtHOztJOzs7STtLLGtCLE87O0s7Ozs7OzsyQjs7MEI7Ozs7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7Uzs7O3FDLE87cUMsTzs7O21DLE87b0MsTzs7Ozs7OztZO1ksNEI7WTs7VyxPOzs7OztxQjs7Ozs7O1c7OztTLE07Ozs7OztTLE87Ozs7Ozs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7a0I7Ozs7Ozs7UztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7c0M7OztROzs7Ozs7UyxrQztRLE87Ozs7c0M7Ozs7Ozs7Ozs7OztRLE87Ozs7c0M7O3NDOzs7UTs7OztTLDRCO1EsTzs7OztzQzs7O2tCOzs7c0M7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7O0k7OztJLE87OztjLE87Ozs7OzRDOzs7O0c7O0ksTzs7O2MsTzs7Ozs7NEM7Ozs7Rzs7SSxPOzs7OztrQzs7Rzs7SSxPOzs7O2tDOzs7Yzs7O2MsTzs7Ozs7d0I7OzthOztHOzs7SSxPOzs7OztrQzs7Ozs7SSxPOzs7OztrQzs7OztJLE87Ozs7O2M7OztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7O3lCOzs7Tzs7O0c7O0k7Ozs7TyxPOzs7OztpQixRO2lCO2tCOztxQjtpQixPOzs7OzsyQjs7O2dCOzs7O3FDOzs7Ozs7O1E7K0I7UTs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7OztVOzs7Ozs7TyxPOzs7OztpQjs7O3FDOzs7O087Ozs7TyxPOzs7Ozs7O3FDOzs7Rzs7O0s7SyxPOzs7Ozs7O21DOzs7O21DOzttQzs7STtJLFE7O2U7O0k7Szs7UTtJLE87Ozs7O2M7Ozs7Yzs7O0c7O0k7OztPLGtEO08sTzs7Ozs7cUM7OztpQixTOztpQixPO2dCOzs7aUI7Ozs7Ozs7USxPOzs7Ozs7OztzQzs7O2tCOzs7O08sd0M7TyxPOzs7Ozs7Ozs7cUM7OztpQjs7Ozs7OztRLE87Ozs7Ozs7O3NDOzs7a0I7Ozs7Tzs7Ozs7Vzs7OztVO1E7TyxPOzs7Ozs7OztpQjs7Ozs7OzttQixPOzs7Ozs7aUQ7O2lEOzs7O2tCOzs7Z0I7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozt5Qjs7O087OztHOzs7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Yzs7Ozs7STtLLE87Ozs7bUM7O21DOzs7Ozs7TyxPOzs7OztpQjs7aUI7a0I7O3FCO2lCLE87Ozs7OzJCOzs7Z0I7Ozs7OzBCOzs7TyxPOzs7O3FDOztxQzs7Ozs7O1E7O1c7O1E7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7OztPLE87Ozs7cUM7O3FDOzs7MkI7OztPLE87Ozs7Ozs7cUM7OztHOztJO0k7O00sTzs7OztvQzs7b0M7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1MsTzs7Ozt1Qzs7dUM7OztRLE87Ozs7O3NDOztzQzs7Ozs7OztVOzthOzs7Z0IsTzs7Ozs4Qzs7Ozs7MEI7Ozs7O2dCLE87Ozs7Z0IsTzs7Ozs7OzhDOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7OzhDOzs7OzswQjs7Ozs7Z0IsTzs7OztVOztTLE87Ozs7dUM7OzttQjs7Ozs7OztRO1MsTzs7UTs7O0c7O0k7OztJOzs7OzJCLE87Ozs7Uyw0QjtTOzs7USxPOzs7OztrQjs7Ozs7USxPOzs7O3NDOzs7MEI7OztRLE87O1E7Ozs7c0M7Ozs7O0k7SyxPOztJO0c7O0k7OztJOzs7O2tDOzs7Rzs7STs7OztPLE87Ozs7Ozs7O2lCOzs7O2lCOzs7OztPOzsyQjs7MEI7OzBCOzs7O1EscUI7USxPOzs7O2lCOzs7O2tCOzs7O08sSTtPLE87Ozs7Z0I7cUM7OztpQjs7Ozs7TyxPOzs7Ozs7OztpQjs7Ozs7OztRLFU7O1E7O1M7Ozs7VztnQzs7Z0M7Ozs7O1M7Ozs7VztnQzs7Z0M7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7aUIsUzs7aUI7aUIsTzs7OzsrQzs7Z0I7OztpQjs7Ozs7Ozs7O087USxNOztPLE87Ozs7O3FDOzs7aUI7Ozs7TyxtQjtPLE87Ozs7Ozs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7O1csTzs7Ozs7Ozs7cUI7Ozs7O3lDOzs7cUI7Ozs7TyxVOztvQjs7O1E7O1c7O1E7O08sTzs7Ozs7aUI7Ozs7aUI7Ozs7MkI7O3lCOzs7TztPOztHOztJO0ssTzs7OzttQzs7bUM7Ozs7OzBCLE87Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7O1EsTzs7OztpQjtzQzs7c0M7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzttQzs7Rzs7STs7OztrQzs7O0c7O0k7Ozs7Ozs7UyxPOzs7O3VDOzs7bUI7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7OztTLE87Ozs7Ozs7OztLLE87Ozs7bUM7O0k7Ozs7OztPOztRLE8sd0MsWTs7OztPLE87Ozs7cUM7OztpQjs7O3FDOztxQzs7OztNLE87Ozs7b0M7O29DOztvQzs7Ozs7O00sTzs7OztvQzs7b0M7O29DOztvQzs7OztLLE87Ozs7bUM7O21DOzttQzs7Ozs7OztLLE87Ozs7bUM7Ozs7O0ksTzs7OztrQzs7a0M7Ozs7OztLLE87Ozs7Ozs7bUM7O21DOztJO0ksUTs7ZTs7SSwwQjtRO0ksTzs7OztrQzs7O2M7Ozs7O0k7Ozs7Ozs7Ozs7TSxpQixPOzs7OztJLE87Ozs7O2tDOztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7Ozs7OztpQjs7OztpQjs7Ozs7O1EsTTs7Tzs7MEI7OzBCOzs7TyxPOzs7O2dCOztpQjs7OztrQjs7Ozs7bUI7O29COzs7O3NCOzJDOzs7O29COzs7OztpQjs7OzttQixPOzs7O2lEOztpRDs7O2lCLE87Ozs7K0M7O2dCOzs7aUI7Ozs7Ozs7Ozs7WSxxQztZLE87Ozs7cUI7MEM7OzBDOzs7c0I7Ozs7VyxJO1csTzs7OztvQjt5Qzs7O3FCOzs7O087USxNOzs7Ozs7OztRLE87Ozs7aUI7c0M7O3NDOzs7a0I7Ozs7a0IsTzsyRDtpQjs7OztPLE87Ozs7Z0I7cUM7OztpQjs7OztpQixPOzBEO2dCOzs7Ozs7OztPLE87Ozs7OztpQixTOztpQjtpQixPOzs7OytDOztnQjs7O2lCOzs7O08sbUI7TyxPOzs7OztxQzs7O2lCOzs7Ozs7OztXLE87Ozs7eUM7O1U7OztXLDhCOzs7Ozs7Ozs7YTs7Ozs7Yzs7Ozs7O1csSSxPOzs7Ozs7Ozs7O1csMEI7ZTtXLE87Ozs7Ozs7O3FCOzs7Ozs7cUI7Ozs7cUI7Ozt5Qzs7O3FCOzs7O08sVTs7b0I7OztROztXOztROztPLE87Ozs7O2lCOzs7O2lCOzs7OzJCOzs7TyxPOzs7O3FDOzs7aUI7Ozs7eUI7OztPO087O0c7OztJLDBCOzs7Ozs7Ozs7SSxPOzs7SSxRO0ksMEI7SSxPOzs7OztjOzs7Ozs7O0s7Ozs7O0ssTzs7Ozs7OzttQzs7Ozs7bUM7O21DOztJO0ksUSxNOztlOztJLDBCO1E7SSxPOzs7O2tDOzs7Yzs7Ozs7O0ssTzs7Ozs7Ozs7bUM7O21DOztJOztJLE87Ozs7O2M7OztHOztxQixrQix3Qjs7SztpQjs7O2U7Ozs7O3FDOztlOzs7O3FDOztJOztLO0s7O0k7O3VCLHdCLHdCO0s7OytCOzs7Ozs7VSxhLE87O1UsTzs7Ozs7b0I7Ozs7UztNLE87OztLLE87Ozs7Ozs7ZTs7O0k7O0ssTzs7O2U7ZSxPOzs7OzZDOzs2Qzs7Yzs7STtJLE87Rzs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7Ozs7YyxRO2MsMEI7YyxPOzs7Ozt3Qjs7O2E7Ozs7Ozs7Yzs7OztrQzs7Rzs7Ozs7Ozs7OztLLFM7O0ssTzs7Ozs7ZTs7O0k7STtLLE87Ozs7OztlOztnQixPOzs7OzswQjs7Ozs7dUI7ZSwwQjttQjtlLE87Ozs7O3lCOzs7Yzs7bUM7OztJLE87Ozs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs2Qzs7Ozs7YywwQjtrQjtjLE87Ozs7O3dCOzs7NEM7O2E7O2tDOzs7O0k7OztLOzs7SSxPOzs7Ozs7O2tDOztHOzs7Ozs7O007SywwQjtLO0ssTzs7OzttQzs7O2U7OzttQzs7O0k7Rzs7SSxnQzs7Ozs7Ozs7Ozs7OztJLDBCO0k7O0ssTztlO2U7Ozs7OztxQzs7OztJLE87YztjOzs7Ozs7b0M7Ozs7STs7O3lCLE87OztxQixPOztPLE87OzBCLE87OztPLE8sd0I7O0c7O0k7OztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TztPO08sTTs7Ozs7O08sVTtPLG9DO08sTTs7TTtPO08sTTs7Ozs7Rzs7Ryw2QjtHO0csMEI7RztHLDhCO0c7Ryx1QjtHO0csd0I7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDBCO0c7Ryx3QjtHO0csd0I7RztHLDJCO0c7RyxtQztHO0csaUM7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHlCO0c7OztNLDhCOzs7O1M7Ozs7OztVOzs7Yzs7OztZOzs7Ozs7O1k7Ozs7Ozs7WTs7Ozs7OztZOzs7Ozs7Ozs7OztTOzs7O1UsTTs7WTs7Ozs7O2dCOzs7Ozs7Z0I7OztTOzs7VTs7YTs7Z0IsTzs7Z0IsTzs7Z0IsTzs7Z0IsTzs7O2dCLE87OztZO2dCOzs7Ozs7WTs7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7SSxJO0k7Ozs7MkI7OzJCOzs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7SSxPOzs7Yzs7YTs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7Ozs7UTtROzs7UTtROzs7UTtRO1EsTzs7O2tCOzs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7Ozs7OztRO1E7OztROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztROzs7Ozs7USxPOzs7USxPOzs7O1E7UTs7O1E7aUI7O1E7O1E7UTtTLE87O1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7OzRCOzs7USxPOzs0Qjs7Ozs7OztRO1E7UyxPOztROzs7UTs7Ozs7Rzs7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztRLE87OztRO1E7Ozs7OztRO1E7OztTOzs7O1U7VTs7OztVO1U7VTs7OztTOzs7UztTO1M7OztROzs7Ozs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7OztRLE87OztROzs7Ozs7UTtROzs7UTtROzs7Ozs7UTtROzs7Ozs7UTs7Ozs7O1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7O0s7SztLO0s7OztJLE87OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJO0ksTzs7O2M7YztjO2E7O0c7O0k7O3lCOzsyQjs7O087USxPOztPOzs7OztRO1E7O1E7UyxPOztROztPO1EsTzs7Tzs7OztJOzs7STtJO0ksSTtJO0k7STtJO0k7OztHOztJO0k7STtJO0k7STtHOztJO0k7STtJLEk7STtJO0ksZ0I7OztLO0ssTzs7O0k7Z0I7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7UTs7OztRO1E7UTs7Ozs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7Ozs7UTtRO1E7OztRO1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztRO1E7Ozs7O1M7Uzs7Ozs7O1M7Ozs7Ozs7UTtRO1E7OztRO1E7UyxPOztROzs7Ozs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087O087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Ozs7O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJLFk7O0k7OztJOzs7TztPOzs7TyxPOzs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7Ozs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7UTs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7STs7O087USxPO087Tzs7VTtPOztRO1E7UTs7Ozs7UTtROzs7Tzs7OztHOztJO0k7STs7Rzs7O0k7STs7OztJO0k7Ozs7STtJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQyx1QzttQyx1Qzs7STs7O0s7Szs7Ozs7OztJO21COzs7OzZCLE87OztxQixPOztPLE87OztPLE87O08sb0IsTztPLE87O0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7VTs7O2E7Ozs7YyxNO2MsUTthO2M7OztlLE87Ozs7OzBCO2EsTzs7O08sTzs7Tzs7O1EsTztRLE87UTtPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRO1U7OzthOzs7O2MsTTtjLFE7YTtjOzs7O2UsTztlLE87Ozs4QzthLE87OztPLE87OztPOzs7USxPO1E7VTs0QztPLE87OztPOzs7O1EsTztRLHNCO1E7VTs7MkI7O1E7TyxPOzs7Tzs7O1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7O1E7OztXOzs7O1ksTztZLE87VyxXOzs7SyxPO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0ssTztLOztROzt5Qjs7SSxPOzs7Ozs7Ozs7OztJOzs7O0ssTTtLLFE7SyxPO0ksTzs7O0k7Ozs7O0ssTTtLLFE7O0s7Ozs7TSxlO007OztTOzJDOzs7OztJO0ksTzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7O1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7TyxrQixPO08sTzs7Tzs7Ozs7O1EsTztRO08sTzs7O087Ozs7OztRLE87UTtPLE87Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztLLE87SSxPOzs7SSxZO0ksaUMsTztJOzs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87USxPO08sTzs7O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUI7TyxPOzs7O0k7O08sa0MsTztPOztPLHVDO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O08sb0M7Tzs7OztJOzs7SyxRO0k7O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLFE7STs7Tzs7O1EsVTtRLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7OztRLE87USxPO1EsTztPLE87Ozs7O29DOztROzs7O1MsVTtTLFE7UyxlOztPO1E7OzthOztjLFc7O2EsNEIsTzthLG1COzs7UTtVOzs7YTs7O2MsUTthO2M7Ozs7ZSxPO3lDOzs7YTs7O08sTzs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsZTtRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsZTtRLE87USxzQjtRO1U7OzJCOztPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRLE87UTtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087Ozs7USxlO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7O1EsTztRLE87USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxlO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7TyxxQjtPLE87O087OztRLE87UTtPLE87OztPOztRLE87USxzQjtRO1U7OzJCOztPLE87O087Ozs7USxPO1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O08sb0IsTztPLE87O08sb0IsTztPLE87O087OztRLGU7USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7OztRLE87USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7OztJOzs7OztLO0ssTTtLLE07SyxNO0ksTzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7Tzs7O1E7USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7UTs7O2E7OztjLE87YTtxQjs7c0M7OztZOztRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsTztRLHNCO1E7VTs7MkI7O08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxtQjtPLE87O08sbUIsTztPLE87O08saUIsTztPLE87O087OztRLE87UTtPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7O1EsTztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7SyxXOzs7SSxjOzs7STs7OztLLFE7SyxVO0k7O087Ozs7USw4QjtRLE87TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0s7SyxPO0s7O1E7MEM7SSxPOzs7Ozs7Ozs7OztHO0k7OztRO1MsTztTLE87UTtPOztRLFc7USxPO087OztROzs7O1MsTztTLGU7USxXO087O1EsVztRLE87Tzs7USxXO1Esc0I7Tzs7USxXO1Esc0I7Tzs7Ozs7OztRLFc7USxzQjtPOzs7O1E7Ozs7Ozs7UztTLGU7UztTOztZOzs2Qjs7UyxXO1MsVztRLE87O087O1EsVztRO087OztROzs7UyxPO1E7Tzs7O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Ozs7Ozs7TzsyQixTOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTO1M7UyxXO1MsVztRLE87Tzs7OztROzs7OztTO1MsZTtTLFc7UyxXO1EsTztPOztROzs7OztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7O1M7UyxXO1MsVztRLE87O087OztROzs2QixXOzs7VyxXOzs7VyxXOztXOzs7WSxlO1csVzs7Tzs7USxXO1EsTztPOzs7USxXO1EsTztPOzs7UTtTLE87O1MsZTtRO087O1E7O1MsVzs7O1EsVztPOzs7Ozs7O1E7Ozs7Ozs7UztVOzs7VyxPO1U7a0I7O21DOzs7O1M7OztVLE87VSxPO1MsVztRO1E7UyxPO1MsTztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Tzs7Ozs7Ozs7Ozs7SyxNOztJO0ssTztJO0k7SztPOzs7VTs7VztXLE87VyxlO1UsTzs7Ozs7Uzs7O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3QjtzQixtQzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTztHOztJO0s7Ozs7TSxXO00sVztNO0ssTzs7STtJLE87Rzs7STs7O2dCO0ssVztJLE87OztxQixTO0k7Ozt3QjtTO0k7Rzs7STtLO0ssTztLLGU7STtHOztJO0ssUTs7OztLOztLOztLOztLOztLOztLOztLOztLOzs7O0s7O007TTthOztLO007YTtJOztLOztLOzt3Qjt3Qjs7O0s7O0s7O0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztROzs7OztJLE87Rzs7SSxPOzs7YzttQzs7O2U7Ozs7Ozs7Z0I7O2UsTztjOztlOzs7Ozs7Ozs7aUI7OztnQjs7ZSxPO2M7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7OztpQjs7O2tCO2lCLFc7Ozs7ZSxPOzs7Ozs7Ozs7OztnQixnQyxPO2dCLFc7O2UsTzs7Ozs7O2dCOzs7OztnQjs7Ozs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7Ozs7O2dCO2dCLGE7Ozs7O2dCO21DLFM7aUI7O29DOzs7aUI7OztvQjtvQixPO21COzs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7aUI7O29CO3FCLE07b0I7b0IsTzttQjtpQjs7bUM7bUM7Ozs7Z0IsTzs7O2dCOzs7OztjO2E7O0c7O0k7SztPOzs7VTt1RDtVO1M7O0s7SSxPO0c7O0ksWTtnQixNOzs7Szs7STtHOzs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7STtLLEs7SztPLDJCOztLLFU7O0ssVTtLO0s7TSxRO00sSztLO0s7SztLLE87STtJOzs7OztpQjs7Z0I7Rzs7STs7Ozs7O08sYztPOzs7O0k7OztJOzs7Ozs7TyxjO087Ozs7STs7O0k7SSxXO0c7O0k7SSxXO0c7O0ksa0QsYztHOztJO0ssa0M7SztNOzs7VTtXO1ksTTtZLE0sbUI7Vzs7O1c7O1k7bUMsTSxvQztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7STs7Ozs7Ozs7OztJO0s7SyxRO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7Ozs7Ozs7Ozs7STtJLGlCOztLLE87STtHOztJO0ksaUI7Ozs7OztRLE87OztRLE87OztrQjtrQjtpQjs7O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7USxPOzsyQjs7OztrQjs7O29CO29CO21COztrQjs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OztRLE87Ozs7UTs7Vzs7NkIsaUM7O1E7a0I7Ozs7USxPOzs7O1EsTzs7OztrQjs7O29CO29CO21COztrQjs7Ozs7Ozs7OztLOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7OzBCOzs7USxPOzs7STtHOztJOzt1Qjs7STtHO0c7SSxPO0c7O0k7a0I7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7b0IsTzs7OztRLE87OztJO0c7O0k7SSxpQjs7OztRLE87Ozs7USxPOzs7STtHOztJOzs7Ozs7O2dCO0c7O0k7Ozs7Ozs7Z0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7STtJOztJO0ksVztHO3lCLGtDOztJOzs7SztPOzZDO0ksVzs7OztJLE87OztjO2MsTzthOzs7OztJLFEsTTtJOzs7SyxROzs7SSxJLGlDOzs7MkI7OztHOztJOzt1QixPOzs7TyxPO2UsTTs7RztHOztJO0s7O0c7Ozs7Ozs7O1EsSSxJOzs7O29COztROztRLHNDOzs7Ozs7UTs7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJO2lEO0ksVTtJLE07Rzs7STtJOzttQzs7O1E7OztROzs7OztRLE87OytCOzs7O1E7USxPOzsrQjs7OztRLE87OztrQjtrQjs7bUI7OztrQjtpQjs7OztRO1EsTzs7K0I7Ozs7OztRLE87OztrQjtrQjs7bUIsTzs7MEM7Ozs7a0I7aUI7Ozs7OztRO1E7O1c7OEMsa0IsUztRLE87OytCOzs7UTs7O1M7Ozs7a0M7OztHOztJLFk7O0ksTzs7O0k7O0ssTzs2Qzs7O0ksTzswQywwQjs7O0k7OztPO087TztNOztJO0k7Ozs7SyxPOzs7ZTtlLE87O3NDOzs7Ozs7SSxPOzsyQiw0Qjs7Rzs7STs7O0s7SyxPOzhDOzs7STtHOztJO0ksTzs7MkI7O0c7O0k7RztHOztJO0k7O21DOzs7UTs7Ozs7USxPO2dEOzs7UTtrQjs7USxrQixPOztROzsyQjs7O1EsTzs7O2tCO2tCO2tCO2lCOzs7O1EsTztnRDs7O1E7Ozs7O1E7UTs7MkI7Ozs7O1EsTzs7O2tCO21COztpQjs7Ozs7MEI7O1Esb0M7Ozs7Z0I7OztHO3lCOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7OztROzs7O1MsTzs7Ozs7VTs7OztVO1U7OzsrQzs7Ozs7OztRO1EsTzs7aUMsa0IseUI7Ozs7UTtROzs7UTtROzs7USxPOzsrQjs7OztRO1E7OytCOzs7UTs7O1c7VztXO1U7O1E7OztRO1E7OztRO1E7Ozs7O1EsTzs7K0I7Ozs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7OztRLE87O2lDLGtCLHlCOzs7UTs7OztTO1M7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1EsTzs7K0I7Ozs7OztRO1MsTzs7UTs7USxxQzs7Ozs7UTs7Ozs7Uzs7UTs7Vzs7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOzhCOztJO3VCOztJO0k7Rzs7SSxPOzs7Yzs7OztlO2M7Yzs7O0c7O0k7SztPOzt5Qiw2Qjs7O0s7O0ssdUM7O0s7dUM7SztJOzs7SztLLE87O0k7STtHOztJOztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7OztRO1EsTzs7O2tCOzt3Qzs7eUM7O3lDOzsyQzs7O3FCOzsyQzs7aUI7Ozs7UTtTLE87O1E7OzBCO29DOzs7Rzs7STs7O0k7STtJLEksZ0M7Ozs7OzBDO0s7Szs7Rzs7STs7O3lCOzs0Qjs7eUI7ZSxzQjs7RztrQywrQixTOztJLE87OztHOztJLGlDOzs7MEIscUI7Ozs7OzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087O1E7USxRO1EsTTtPLFc7O087O1E7VTs7O2E7eUI7O2EsTztZOztRLE87USxNO087O3VCLGlDOztPOzswQjs7Tzs7UTs7O087TztRLFE7USxNO08sVzs7O087O3VCOztPOzs7Tzs7eUI7O087O087O3lCLHFCOztPLGtCO3lDO087O0k7O29COztJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7OzswQjs7MEIsd0I7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7UyxPOztRO29DOzs7Rzs7STs7O0k7STs7Ozs7UTtRLE87OytCOzs7O1E7USxPOzs7Ozs7eUM7OzJDOzs2Qzs7O3FCO3FCOztxQjsrQzs7Ozs7O1E7Ozs7MEI7O1Esb0M7Ozs7O0c7NkM7Rzs7STtLOzs7STtJO0c7O0ksTzs7Ozs7Rzs7SSxpQzs7O3lCLGlCOztPLG1DO087OzBCLHFCOzs7Tzs7dUI7O087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtVOzs7YTt5Qjs7YSxPO1k7O1EsTztRLE07Tzs7cUIsbUM7O087O08sb0I7eUM7Tzs7MEI7OztPOzt3Qjs7Tzs7O087O3lCOztPOztPOztROzs7MEIsbUI7TztRLFE7USxNO08sVzs7TzttQyx1Qjs7OztJO0k7RztzQyw4QixTOzhDO0c7O0ksbUI7O0k7OztJO0k7Ozs7O1E7USxPOzsrQjs7O1E7Ozs7UztRLE87OytCOzs7O1E7UTs7Ozs7O1E7USxPOztpQyxrQix5Qjs7O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1EsbUM7Ozs7O0c7O0k7Ozs7OzJCOzs7Ozs7Ozs7Ozs7O1E7UTs7NEI7O1E7b0M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7SSxjOzs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0k7O0ssTzs7O0k7STtHOztJOzs4QixPOzs4Qjs7Tzs7O1EsTTtRLE07TyxPOztHOztJLHdDO0k7OztLLE07SyxNO0ksTztHOzhCLDhCOztJOzs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7Ozs7Ozs7O1M7Ozs7O0s7OztHOztJOztPOzs2Qjs7O0c7RztJOzs7Ozs7Ozs7O0k7OztHOzBCLDRCOzZCLDhCOztJO0s7Ozs7O2dDO1EsTzs7UTs7OztTLG1COzs0QjtRLE87OztRLE87Ozs7Ozs0QjtRLE87TTtHO3NDLHVCOzJCLHVCOzs7Ozs7Ozs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7Ozs7SyxJO0k7Ozs7Ozs7O0ksWSxPOzs7O0s7OztJO0c7O0ksUTtJOzs7Ozs7O0ssSTtJOztNOzs7Szs7OztrQzthO2E7O0k7aUIsTTs7K0I7Ozs7Ozs7bUIsTTtLOzs7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7bUIsTTtLOzs7OztNLEk7SyxZOzs7Ozs7SSxZO0ksa0I7STtHOzs7O21CO0s7Ozs7O00sSTtLLFkseUI7Ozs7OztJO0k7aUI7Szs7Ozs7TSxJO0s7O007OztlOztrQjs7Z0Msa0M7ZSxPOzs7Ozs7Rzs7Ozs7TTs7OztPLFM7Tzs7Ozs7O29COzs7Ozs7O0k7eUIsaUM7Rzs7SSxRO0ksYztJLE87Rzs7STs7YztjLHFCO2E7Ozs7Rzs7OzttQjs7SztLOzs7OztJO0k7Szs7TSxPOzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7OztVLE87Ozs7O1U7Ozs7O1c7VSxVOzs7Ozs7OztVOzs7OztXO1UsVTs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztVLGlCOzs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7O1MsTzs7Ozs7O1ksa0M7WSxpQjs7Ozs7Ozs7WSxvQztZLGM7Ozs7Ozs7Ozs7Ozs7O1ksa0M7WSxjOzs7Ozs7TTs7Szs7Rzs7STs7YTs7SSxPO0c7Ozs7OztRLHFCLE07USxPOztRLHNDO2dCOzs7Ozs7Z0MscUM7O0k7STs7OzZCLE87O1E7OztTO1M7USxPOzs7RzswQixTOztJLE8sMEI7Rzs7Ozs7Ozs2QixvQjs7OztROzs7UztTLE07UyxNO1M7USxPOzs7O1M7Ozs7Ozs7SztLLEc7TTtPLE07YTs7Z0I7SztLLE87Ozs7Ozs7OzZCLE87Ozs7O1EsTzs7Ozs7O0ssTzs7OztJO0k7Ozs2Qjs7USxNOzs7Rzs7STs7OzsyQjs7OztROzs7Ozs7Szs7OztHOztJO0s7Szs7OzBCOztTLDhCOzs7Ozs7STtJO0c7O0k7STs7Ozs7OEIsTzs7Ozs7Ozs7Ozs7OztLOztHO3FDLDBCO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHlDO0k7Rzs7SSw2QztJO0c7O0ksNEM7STtHOztJO0c7O0k7Rzs7STs7WTs7Ozs7Rzs7STtLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO3lCO0k7SztNLE07TTs7OztZLE07Ozs7O0ssTTtJO0k7Szs7O0s7O0k7STtLO00sTTtNOzs7O1ksTTtJOzs7Ozs7Ozs7STs7Ozs7OztHOztJOzs7O007Ozs7OztPO007Ozs7TTs7OzsrQzs7O0k7TSx3Qyx1QjtLO0ksTTtHOztJO0s7SyxNO0s7SyxNO0s7O0s7Ozs7O0s7OztTOzs7OztJO0k7SztLLE07SyxhO0s7STtHOzJCLG9DO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SztLLG1COztHOztJOztPLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O0c7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7OztJOzs7OztJOzs7Ozs7NEI7Ozs7OztnQjs7STtHOztJO0ssUTtLLFU7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OzBCLHFCOzZCLFMsZ0M7O0ksTztLLFU7Szs7SSxXO0c7O0ksTztLLFU7Szs7SSxXO0c7Ozs7Ozs7Ozs7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLHlCO0k7RztHO0k7Ozs2Qzs2QzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4QjtzQixXLDhCO3VCLFcsOEI7NEIsVyw4Qjs7SSxXO0c7d0IsVyw4QjsyQixXLDhCOztJOzs7SyxNO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Tzs7OztVO1M7OztLO00sVTtNLE87O0s7O1Esa0IsTTtRLE87OztROzs7Uzs7WTs7O2M7OztlOzs7Yzs7O1k7VztTOzs7Uzs7WSxtQjtZO2EsTztZO1ksTzs7Ozs7O1c7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7WSxPOzs7c0IsTzs7cUI7VztRLE87a0I7a0I7Ozs7Ozs7Ozs7USxPOzs7O1E7UyxPOzs7USxPOzs7Ozs7Ozs7Ozs7USxPOzt5QixPOzs7O2M7YztHOztJO0k7OztLOztHOztJOztLLFE7STs7RyxnQzsyQixpQztrQyxxQzswQiw2QjswQiwyQjtzQiwyQjtzQiwwQjs7STtrQzt1Qjs7SSxJLFUsa0M7OzsyQjs7O0c7NkIsZ0M7O0k7OztLOztJO0c7Rzs7O0s7Szs7OzhCLE87O1M7OztVO1M7O1Msc0M7Uzs7O1M7O1U7Ozs7O0k7STtHOztJO3VDOzs7Rzs7STtHOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7STtJLE87Rzs7SSxJLGlCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLHdCO0ksTztHOztJO0ksTztHOztJLEksa0M7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLG9CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx1QjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHlCO29CLFk7MEIseUI7O0k7O087O087O087O087O087O087ZTs7RzswQixlOzBCLGU7MkIsZ0M7dUIseUI7dUIsbUM7NEIseUI7O0k7SSxzQjtHO0c7OztJO0k7Ozs7Ozs7Ozs7STtJO0c7O0ksSSxnQjtJO0c7O0k7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCOzs7OztJO0s7SztLO0s7STs7O0ssSSxrQjtJLEksa0I7STs7O0ssSSxrQjtJLE87OztjO2M7YTs7Ozs7Ozs7O0c7MEIsa0Q7eUIscUIsMkI7O0ksSSxpQjtJO0c7O0k7SSxPO0c7eUIseUI7O0ksc0IsaUIsa0I7O0c7O0k7SSxPO0c7d0IscUQ7O0k7O08sTzs7TyxPO2UsTzs7OztJO0ssTztJO0ksVTtJLE87Rzs7STtJLE87Rzs7STtnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7VSxNO1U7Ozs7STtHOztJOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7OztHO3FDLG1CLFU7RyxZLHlDOztJOzs7O0c7O0k7STs7Ozs7Ozs7Szs7Rzs7STs7RztpQyxjOzs7Ozs7Ozs7Ozs7OzZCLGM7Ozs7Ozs7Ozs7Uzs7Ozs7OztLOztLOzs7Ozs7Ozs7O1Esc0M7Ozt3Qjs7STs7O0k7Ozs7O1Esc0M7Ozs0Qjs7STtHO3dCLGtCO3lCLGtCO3lCLGtCO3NCLGtCO2dEO0c7NEIsb0I7O0ksSztLLE07OztHOzhCLHFCOzhCLHFCO3VCLFU7MEIsVTs7STs7OztLLEk7O0c7O0k7SSxPO0c7MEQ7Rzs7STs7SyxzQjtLLE87OztHOztJO0k7Szs7O0s7O0c7MEIsa0M7NEIsa0M7MkIsa0M7MEIsa0M7O0k7STs7Szs7O00saUI7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sVzs7Ozs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7STs7OztJO0c7O0ksWTs7STtHOztJO0k7Rzs7SSxXO0k7SSxPOzBDLDBCO0c7O0ksMEIsTztpQyxPO0k7Ozs7O0s7OztJLE87RztHLGE7O0k7O0k7RztnQyxzQzs7STs7MkM7OytDOzs4Qzs7OEM7Ozs7Ozs7Ozs7O0c7RztJLGdCOzs7Ozs7O0k7O0c7O0ksSSxtQjtzQjtJOztJOzs7Ozs7Szs7Ozs7SztLOztJO0c7O0ksSTs7Rzs7SSxJOztvQztJO0c7O0ksSTs7b0M7STtHOztJOzs7Rzs0QixnRDs7STtJOzs7bUQ7Ozs7SyxPOztHOztJO0k7O00sTzs7O007Tzs7Ozs7OztHOztJO0k7O00sTzs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0c7NEIsd0I7O0k7O0k7Rzs7SSw0Qzs7O2U7O0k7Ozs7O08sTTtNOzs7Ozs7SyxvQzs7Szs7Ozs7O0ksd0I7a0M7O0k7Ozs7dUM7O0k7Ozs7TSxxQjs7Ozs7O0ksTzs7O2M7Ozs7Ozs7OztnQzs7O2M7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHFCO0cscUI7RywyQjs7SSxPOzs0QjtHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLDBCO3VCLDBCOzRCLDBCOztJLE87OzRCO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxPOzs0QjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXO0ksTzthOzs7Z0I7OztpQixPO2dCLE8sa0I7ZTs7RztHO0k7OztRLE07TztJOzs7Ozs7Ozs7OzsyQixPLDJDO21DLDJCOztJLE87Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7STtrRDtJO0c7O0k7MkU7STtHOztJOzs7Ozs7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxRO1U7SSxJLEssNEIsUTs7OzswQjs7UTs7O1EsTTs7STtHOzBCLE8sbUM7O0k7Rzs7SSxXO0ksVztJLFc7SSxPOzs7YyxrQixROzhEO2M7YTs7Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTs7STtHOztJLFk7Ozs7OztRLGdCLG1COzs7NEI7OztJO0c7O0k7Z0I7SSxtQixVOzs7SztNLFk7TSxPOzs7STtHOztJO0ssTztLO087OztVLG1CLFE7Ozs7WSxPOzs7NEMsTzs7VTtTOzs7SyxPO0ssUTs7Ozs7Ozs7USxNOztJO0ssTztLO087OztVO1UsTztTOztrQjs7STtHOztJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7O08sTzs7O2lCO2lCLE87Z0I7OztlLE07O0c7O0kseUMsTyxpQjtHOzs7O3FDOzs7TTtNOzs7Ozs7O0k7O0ssTzs7O0ksTzswQyxPLG9COzs7STs7SyxXOzs7STtZOzs7ZTs7OztnQixPO2U7Yzs7OztJLDhCOzs7Tzs7O08sTzs7NEIsTyxvQjs7OztPLE87OztpQjtpQixPO2dCOzs7OztJLFc7SSxPO0c7O0k7OzBCLE87OzBCLE87OzRCLE87OzBCLE87OzJCLE87OzBCLE87bUMsTzs7OztJO0c7O0ksa0IsTztJO0ksa0IsTztJOztHOztJO0ksa0IsTztJOztJLHlCO0ksa0IsTztJLE87RzswQztHOztJLG1CLE87SSxPO0c7O0ksaUIsTTtJO0k7SSxrQixPO0k7O0c7O0ksa0IsTTtJO0k7O0c7O0ksWTs7SSxPOzs7STs7MEIsTzs7O087TyxPO2lDLE87Ozs7STs7O087TyxVO087TyxPOzs7TztPO087OztVO1UsTztTOztPLE87OztpQjtpQixPO2dCOzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlO0ksWTs7Ozs7OztRLG9CLE07USxPOzs7a0I7a0IsTztpQjs7Ozs7OztLLE87O0k7Rzt1QixTOztJO0ssUTs7Ozs7SztPOzs7VSxpQyxROzs7O1c7O1ksTTtrQjs7Vzs7OztZO1k7WSxPO2tCO1U7Uzs7STs7Ozs7MkI7OztJO0ksTztHOzs7OztrQzs7Ozs7UTs7Ozs7UyxNLHFDO1MsTTtRLGM7O3lCLFc7OztRLGdCOzs7a0IsVztROzs7O1MsdUI7USxXOztROzs7OztTLE07UyxNO1EsZ0I7O1Esb0IsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7UTs7Z0I7OzttQjttQixjO2tCOzs7Ozs7SSxXOztJLE87Rzs7SSxJLGdCLE07STs7O087TyxPO007O0k7RztHOzs7O3FDOzs7OztNLFUsNkI7Ozs7Ozs7RyxXOztJO3NDLHNCOzs7Rzs7STs7O0c7O0ksNEI7Ozs7SyxNOzs7SSxHLG1DOztJO0c7O0k7OzsyQjs7O0c7Rzs7SSxZOzs7O0ksZ0Q7STtHOztJLDhCOztJO0c7O0ksOEI7OztLLE87OztJLE87Rzs7STs7aUI7O0s7TTswQztLOzs7O0c7O0k7STs7Ozs7K0I7OztHOztJO0k7OztROztROzs7Rzs7STtJO3dCOzs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJO0k7STs7eUIsa0Isc0I7O0ksTzs7Z0Msa0Isc0I7O0c7O0ksTztHOztJLFk7c0U7SSxNO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJLEksVyx5Qjs7OzJCLE87OztHOztJO2M7O2dCO2dCO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUzs7Ozs7Ozs7O0k7Rzs7STtjO2M7O2dCO2dCO0c7O0ksYzs7cUI7SSxTO1k7OztLO00sSzs7YTs7Vzs7O0k7Z0IsTztLLFk7Ozs7TTs7Szs7O0c7O0ksVTtJO21CO0c7O0k7Ozs7SyxPOztJO0c7OztLOzs7Ozs7O29COzs7Ozs7O3NCOzs7b0I7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7UyxPOzs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07Ozs7USxPOzs7OztrQjs7Ozs7USxPOzswQzs7O1EsbUI7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7OztrQjs7OzsyQixPOztROztTO1M7Ozs7eUI7Ozs7Ozs2QjthOzs7Ozs7O2dCOzs7Ozs7O1EsTzs7OztzQzs7OztRO1M7O1UsVzs7O2U7O1M7VTs7VSxjOztXLG9CLFU7Ozs7OztVO1c7WTs7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7OztZLFE7O1ksK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2UsVzs7O2U7O2tCOzs7ZSxXOzs7O2M7Ozs7O3VCOztXOzs7Vzs7Ozt3QjtTOzs7OztVLE87Ozs7MkIsTzs7O1EsTzs7Ozs7a0I7Ozs7OztTLE87Ozs7SyxPOzs7O21DOzs7O0s7Szs7Ozs0Qjs7Z0M7Z0I7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7bUI7O3NCLE87O0s7Szs7OztxQixPLHlDO3dCLE8sNEM7RyxnQztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kscUI7SSxPO0c7cUIsTyx5QztHLDZCOztJLDRCOzs7SyxPOzs7SSxPO0c7O0k7Ozs7USxPOzs7Ozs7c0M7Ozs7USxPOzs7Ozs7Ozs7STs7O0k7O0s7SztLO0s7SztLO0ssTzs7STs7O0k7O0ssTzs7Ozs7ZTs7OztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7UTtRO1E7USxPOzs7USxPOzs7OztrQjs7OzswQjs7dUIsTzs7MEM7O1E7Ozs7Uzs7WTs7O2MsTzs7WTs7OztZOzthOzs7dUIsTztzQjs7Ozs7WTs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtROzs7Vzs7OztXLE87O1U7O1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJLE87Ozs7Ozs7MkI7O2U7ZTs7Ozs7Rzs7Ozs7d0I7Ozs7TSxPOzs7Ozs7OztnQjs7Ozs7Szs7a0I7Ozs7Ozs7SztlOzs7aUI7aUI7STtJLE87Ozs7Ozs7O2M7Ozs7Ozs7bUI7O3NCLE87O0s7SztLOzs7OztJLFU7O0s7SztLO0s7SztLLE87OztJO0ksTzs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Yzs7Ozs7Ozs7OztLO0ksMEI7Ozs7Ozs7OztJLE87OztJLFU7dUIsTywwQztJLE87Ozs7O2M7Ozs7O0k7Ozs7Ozs7VyxVOztXLE87Ozs7O3FCOzs7O08sTzs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7TyxPOzs7Ozs7O2lCOzs7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7O0c7STs7STs7O1EsTztPOztJOzt1QixPLCtDOztJOzs7USxPO087O0k7OztRLE87Tzs7STs7O1EsTztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dEO0c7O0k7OztNLG9DOzs7OztLLGE7SyxPOzs7Ozs7Ozs7Rzs7O0ssWSxPO0s7OztNLE87SyxPOzs7O0ssNEI7Ozs7OztPLE87Ozs7Ozs7Ozs7SztNLFE7OztLOzs7Ozs7Uzs7O1U7Ozs7Ozs7TTtPLE87TztTOztNLE87Ozs7STtHOztJLG1DOzs7TyxPOzs7Ozs7OztPLE87OztPO2lCOztpQjs7O08sTzs7OztJLFk7O21CLE87Ozs7Szs7O007OztLOzs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO00sTzs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0k7SyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7Ozs7O2dCLE87ZTs7Ozs7aUI7Ozs7Ozs7c0I7Ozs7Ozs7VyxPOzs7OztxQjs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1csTzs7O3FCO3FCLE87Ozs7Ozs7O29COztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXOzs7Ozs7cUI7Ozs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQixPOzs7Ozs0Qjs7O2lCO2MsTzs7Ozs7Ozs7O2MsTzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1c7VyxPOzs7cUIsTztvQjs7O08sTzs7Ozs7Ozs7Ozs7O2lCLE87OzsyQixPOzBCO2dCOzs7OztJOzs7OztJOztlOzs7Ozs7aUI7Ozs7ZTs7STtjOzs7Ozs7Z0I7Ozs7OztjOzs7Ozs7O0c7OztLOzs7O00sTzs7Ozs7Z0I7Ozs7O3dCLE8sMEM7Ozs0Qjs7Ozs7O21DOzs7O0k7dUIsTywwQztJO0k7Szs7O0ksTzs7Ozs7Ozs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOzs7Szs7O007OztLOzs7Ozs7O1E7OztTOzs7Ozs7TTtPLE87TztNOzs7Z0I7Ozs7OztJOztLOzs7O0s7OztjOzs7O0k7OztPLE87Ozs7Ozs7Ozs7O2lCOzs7OztRLE87NkIsTzs7USxPO08sWTs7USxPOztPLE87OztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7STtZOzs7OztHOytCLG9DOztJO0k7WTs7Ozs7Rzs7STs7OztLLE87STtHO2lDLHNDOztJLDhCLE87STtHO21DLHdDOzBCLHNDO2dDLDZDOztJO2dDO2tDO0k7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7UztpQixPOzs7O0c7O0ksSSxVOzs7Ozs7Uzs7dUM7aUIsTzs7OztxQixPOztJO0c7O0ksSSxVOzs7Ozs7UTs7O1E7O1EsTzs7O1EsVTs7Ozs7Ozs4Qjs7UTs7OztLLE07O0k7Rzs7SSxJLFU7Ozs0Qjs7OztHO0c7SSxTOzs7Ozs7OztvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7O0ksVztJO0s7OztRLHVDOztZLGtDOzs7OzRCOzs7USxrQiwyQjs7OztTO1UsTztpQjtRO1E7O0k7SyxLO0ssVzs0Qjs7OztLLEksTyxrQztJOzs7O00sWTs7OztROzs7O1M7Vzs7OzthOzs7OztNLE07Ozs7O1M7OztVO1k7OzZCOzs7O1UsSSxVOzs7Ozs7Ozs7Ozs7Ozs7ZTs7O2tCOzs7cUIsTzs7b0I7Ozs7bUI7c0I7b0IsTTs7bUIsVzs7OzsyQzs7dUI7O3dCLE87d0IsTTt1Qjt1QixJLE8sNEI7MEI7d0IsTTs7dUIsWTs7O3dCOzs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7OzswQzs7MEIsTTs7Ozs7d0IsWTs7Ozs7MEIsSzsyQjs0QixVOzs7Ozs7OEI7Ozs7Ozs7d0I7Ozs7K0I7O3VCO3VCOzttQjtvQixPO29CLEk7bUI7bUIsYTttQjttQjtrQjtrQjtpQjs7Ozs7O1M7OztVO1U7OztVOzs7VztZO2M7OytCOzs7Ozs7Ozs7OztTLFM7Ozs7OztTOztVLE87VSxROzs7VTs7OztZOzs7Ozs7Ozs7Vzs7WSxPO1c7OztZO2EsTzthLGM7Ozs7OztZOzs7Ozs7Ozs7ZSxVOzZCOzs7Ozs7WSxNOzs7O1U7VTtXO2E7OzhCOzs7OztXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7O1U7WTs7O2U7ZTtjOzs7Ozs7O1E7Ozt5Qjs7O0k7STtHOztJLE87O2tDLGlDO0c7O0k7O0s7SztLO0k7Rzs7STs7SzthOzs4Qjs7OztJO1k7OzZCOzs7O0k7Ozs7SztLOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7NkI7Ozs7Ozs7Ozs7WTs7O2U7O2dCO2dCO2dCO2tCOzttQzs7Z0I7ZTs7Ozs7O0k7WTs7NkI7Ozs7Ozs7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7STs7Tzs7OztRO1E7VTs7MkI7O1E7Tzs7Tzs7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtZOztRO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJLEksOEI7STtZOzs2Qjs7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOztJOztLO0s7O0s7SztLO0k7WTs7NkI7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7SSxPOztrQywrQjtHOztJOztLO0s7O0k7Rzs7SSxPOzs7YzthO0c7O0k7O0s7OztLO087O3dCOztLO0s7Tzs7d0I7O0k7Rzs7SSxPOzs7YzthO0c7O0ksTzs7O2MsVTtjLE87YTs7O0c7O0k7STtHOztJO0s7SztLO0k7Rzs7STtJO0c7O0k7O3lCOzswQixXOzs7O1E7Ozs7UztROzs7TzttQzs7Rzs7STs7O08sSSxVOzs7Ozs7WTs7c0M7b0IsTzs7OztPOzswQjs7Ozs7UTs7OztROzs7O1MsTztTO1E7O087OztRO087bUM7Ozs7STs7eUI7OzBCOzs7Tzs7Ozs7OztPO21DOztHOztJLGdCO0k7Rzs7SSxrQixzQjtJO1k7OzRCOzs7OztHOztJLGU7STtHOztJLFk7OztLLE87Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO2E7Rzs7STs7SyxPOzs7STtHOztJOzs7O0s7Ozs7Ozs7O1c7WSxNO1ksTTtXLE87VTs7Ozs7O1MsVTtTLE87UTs7Ozs7OztROzs7OztTLE87Uzs7Ozs7UTs7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxPO1M7Ozs7O1E7Ozs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxRO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7SSxPOzs7YztzQjs7O3lCOzs7O2E7OztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Tzs7O087OztPOztHOztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Ozs7OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7Rzs7SSxvQjt3QjtJOzs7Ozs7O0s7O3VCO0s7O3VCO0k7OztlOztnQjs7O2UsTzs7O3lCOzBCOzRCOzs0Qzs7MEI7eUI7d0I7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOzZCLE8sdUM7O0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOzs7Ozs7Ozs7OztJO0s7OztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzRDLFc7TSxRO00sTTs7O007Ozs7Uzs7Ozs7Ozs7Ozs7O0ssTzs7O0s7TSxNO00sTTtNLFU7SyxPOzs7O0k7SSwwQix1QjtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O2E7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2U7Yzs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7RztJO007O3FCLFcsK0I7O0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsVzs7OztNLE87O0k7STtJOzs7O0ksTztHOztJOzs7OztZLHdDLFk7STtLOztNLDRCO007TSxNO3FCOzs7STtHOztJO0s7OztJLHlDO0k7O0ssOEI7SyxjO0ssUTtLLE07OztLLE07Szs7Ozs7OztROzs7Ozs7Ozs7STs7OztHOztJOzs7OztJO0s7Ozs7Ozs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7Ozs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7O1U7Ozs7OztLOztHOztJOztLOzs7TTtNO007Szs7O1E7USxPOzs7Tzs7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7YTs7Ozs7Ozs7OztTOztLOztJO0c7O0k7O0s7OztNO007TTtRO1U7OztTLFk7Uzs7O1U7Ozs7O1U7O2E7Ozs7Ozs7Ozs7O1M7UztTOztLOztJO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLLE87SyxRO0k7Rzs7SSxTO0k7SztlO0s7TTtNO007O0s7Szs7TSxNO0ssRztNLE07Szs7UTs7O0ssTTs7Ozs7OztNO00sTTs7SztLLE07O0c7O0k7STtJO0k7SyxNO0s7STtJO0k7Rzs7STs7Tyx5QixNO08sTzs7Tzs7O1EsTTtPLE87OztPLDJCLE07TyxPOzs7Rzs7O00sdUI7O00sVztLOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzt1QixNLGdEO0c7STs7O1E7O1M7VTtXLE07VyxNOzs7Ozs7OztTO1U7OzttQjs7O1UseUI7O1E7TztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SztLO0ksVztHOztJOzs7Ozs7STs7O0k7O0k7Rzs7STs7SztPOztnQyxzQzs7O0ssTTtJLE87Ozs7d0I7Ozs7OztLOzs7OztJLEksVTs7OzJCOzs7Yzs7STs7O0k7OztLLFc7O0s7SyxPOztJLE87RztnQyxrQjs2QywrQjs7STtLLE07SztPOzs7eUIsTyxpQjtJO0k7Rzs7O0ksTzs7O2MsVTs7YyxPO2E7Ozs7O0k7Ozs7SztLO0s7SztJLHNCO0k7OztPLDhCOzs7O007OztLLEk7Ozs7O007OztJO0k7Rzs7STtJLHVCLE07SSxJLFU7Ozs7NkIsTTtLLFk7OztNO007TyxLO087TTs7O007SyxNOztjLE07OztLLE07STtHOztJO0ssVTtLLFc7STtJO0ssTTtLO0ssSztJO0k7Rzs7STtHOztJOztLLFU7O0s7SyxVO0s7TSxPOzs7Z0I7aUI7aUI7aUI7Ozs7O2tCO2tCLE87OztrQjs7bUI7cUI7bUI7a0IsTzs7Ozs7aUI7O29COzs7Ozs7cUIsTTs7dUI7Ozs7Ozs7Ozs7O29CLE07Ozs7Ozt1Qjs7aUI7aUIsTzs7ZTs7Ozs7STtHOztJO0ksSSxXOzs7O00sTTs7O0ksVyxNOztJO0c7O0k7OztLLE07SSxPOzs7O0ksTzs7OztJLE87Ozs7SSxPOzs7STs7Ozs7SyxRO0s7STtHOztJO0ksTzs7O2lDLE8sK0I7O2M7Ozs7ZTtpQjs7Ozs7b0IsTzttQjtlOzs7Ozs7Ozs7ZTtjOzs7OztjOzs7aUI7OztnQjs7YztjO2E7Rzs7STtLOztROzs7Ozs7UyxNO1EsTzs7Ozs7Ozs7Ozs7UTs7Ozs7UyxNO1MsTTtRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7O007RztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7Ozs7OztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07Ozs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNO087Uzs7O1k7Ozs7O2lCLFcsTzs7aUIsTztnQjs7O1k7Vzs7Z0I7Ozs7OztJO0ssTztLO087O3lCLHFCLDBCOztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7UTs7O1c7VyxjO1U7O0k7SyxPO0s7Tzs7O1U7VTtTOztJLE87Rzs7STtLLE87SztPO1M7OzJCLG1CLGU7OztLO21DOzs7TSxPOzs7K0I7Ozs7SztJO0ksTztHOztJO0k7O0s7TTtROzs7VyxPLGM7VTs7O007bUM7Ozs7TTs7UztXOzs7YyxPO3VEO2E7Ozs7Ozs7Ozs7OztVO1UsTyw4QjtTOzs7Ozs7Rzs7STtJOztLOzswQixPLHNDOzs7bUM7Ozs7TTs7O1M7VSxhO1UsMkI7UyxPLGM7UTs7Ozs7Ozs7OztVO1UsTyw0QjtTOzs7OztHOztJO0k7SztNO1E7O21DLG9COzs7TTs7Ozs7O0ksTzs7O2MsSSx1QixjOzs7c0M7OzthOztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQzs7STs7Ozs7Ozs7RztHO0k7OztRLE07Tzs7STs7O1EsTTtPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLO007UTs7bUMsb0I7OztNOzs7Ozs7STtLO087OztVLEk7Ozs7O1k7Ozs7OztVLFc7YyxxQixjOzs7a0M7OztTOztLLE87SztJLE87Rzs2QixTOzRCLGdCOzZCLGdCO0c7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7d0IsaUQ7O0k7SyxtQixPO0ssTzs7O0ksTzs7RztJOztpQyx1QjtnQyxpQztxQix1Qzs7SSxXO0ksaUI7Rzs7SSxPO0s7SSxpQjs7Ozs7TTtPOztRLGdDOzs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJOzs7WTs7Rzs7STs7SztLO0s7SyxLO0s7SztPOzs7VSw4Qjs7VTtTOzs7SyxPO0s7SyxjO0ssTztLLGtCO0ssWTtLLE07STtLOztNLFc7Yzs7O0k7Ozs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjs7Ozs7SSxPO0c7O0k7Rzs7SSxPO0c7O0k7STtLO0c7O0ksTzs7Rzs7SSxPO0c7O0ksTztHOztJO0k7STtJO0k7STtHOztJO0k7STtJO0c7O0k7STtJO0c7O0ksWTs7OztJLE87O0c7O0k7dUI7O0k7Rzs7STtxQjtJLEksVyw2Qzs7OztLLEksUSxrQzs7Ozs7O29COzs7Ozs7SyxZO0s7Szs7Rzs7STs7USxJOzs7Syx3Qjs7OztLLHFCO3VCLE07O0k7Rzs7STs7eUI7O08sOEI7TyxPOztPOzs7UTtRLE07TyxPOztlLE07O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPO2UsTTs7Rzs7STtLO0ssTTtJLE87Rzs7STs7TyxrQjswQixNOztPOztPLDhCO08sTztlLE07O0c7Ozs7SyxNO0k7O0ssTztLO08sMkM7Szs7O0s7Szs7SSxNOzs7SSxJLFc7Ozs7Ozs0Qjs7UTs7O1M7USxPOztRLE07OztRO1M7O1U7VTs7VTs7VzthOzs4QiwrQjs7VTs7UyxNOzs7Ozs7Vzs7O1k7WSxRO1ksTzs7VyxNO21CLE07O1E7OztJO0kscUI7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs4QixpQztxQyxpQzs7STs7eUI7O08sOEI7TyxtQjtlLE07O0c7O0k7O0s7OztJO0c7O0ksTztHOztJO0c7O0k7Rzs7STs7TyxrQiwrQjtxQixNOztPOztPOzs7UTtnQjtPO29CLE07USxxQztvQzs7OztlLE07O0c7O0k7O087O1EsTzs7OztPOzs7UTtRLFU7O2UsTTs7Rzs7SSxPOzs7Yzs7aUI7O2tCLE07O2lCOztpQjs7Ozs7aUI7aUIsTzs7aUIsSTs7O2tCOzt1QjttQixXO21CLE87Ozs7O2tCLFc7a0IsTzs7O2tCLE07OztpQjs7aUI7O2lCOztpQjt5Qjs7OztHOztJLFksTzs7STs7RztJLG1COzs7OzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7TztlLE07Ozs7STs7O00sc0I7OztPO1EsTztRLE87TztRO1MsTztvQjs7O2dCOzs7Ozs7O0s7Ozs7OztNOztxQzs7Ozs7TTs7OztHOztJLEksK0M7Ozs7O00sTTs7Szs7Rzs7STs7Tzs7Tyw4Qjs7O08sTTs7Tzs7O1E7OztHOztJO0k7Szs7O00sSTs7Ozs7Ozs7Ozs7Szs7Rzs7STs7TyxrQjtPLE87O087OztRO1EsUztPLE87O08sZ0M7TztlLE07O0c7O0k7Rzs7SSxJLDZCOzs7O0s7O1UsaUM7O0s7O0ksTTtHOztJLEksNkI7Z0IsTTs7STtHOztJO2dCLE07O0k7Rzs7STtJLE87Rzs7STtJOzs7O1EsSSxtQyxjOzs7Z0M7Ozs7UTs7O0c7O0ksVztJO0ssbUI7Szs7TTs7Ozs7O0s7TTtPLE87TyxPOzs7Ozs7TTtPLEs7TyxPO007OztLO0s7STtJLEksZ0I7STtLOzs7Ozs7Ozs7Ozs7c0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO0ksd0MsTyxpQjtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLLG9DLHVCOzs7TyxZOzs7OztPLFk7Tzs0Qjs7Tzs7d0IsaUQ7O08sTzs7O2lCO2dCOztNOzs7SztLOzs7ZTtlO2dCO2lCLFU7aUI7bUI7NEI7O2dCOztlLG1COztlO2M7O0c7O0k7Ozs7Rzs7SSxPOzs7K0IsTyxxQzs7Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7TyxPOzs7aUI7aUIsK0Q7aUI7Z0I7OztPOzs7UTsrQixnQjtRO1U7OzthOzs7TyxPO2U7O0c7OzBCLGdCOzs7Ozs7eUM7OztPOzs7UTtRO1U7OzthOzs7ZTs7OztJLE8sMkM7Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztPO1Esb0I7UTtROzs7VztXO1csTztVO087OztVO1U7O2E7OztjLFM7Yzs7OzswQjs7Ozs7YTtjLE87YyxZO2M7YztjLE87b0I7OzthOzs7YyxhO2MsTzthOzs7Ozs7Ozs7aUI7O2tCLE87a0I7b0I7c0Q7aUI7OztvQjs7bUI7Ozs7O2lCOztrQjtvQjtrQjtvQjtzRDtpQjs7O29CO3FCLFk7cUI7OzttQjs7OzthO2MsTztjLFk7YztjO2MsTztvQjthOztjO2dDOzs7Yzs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7OztjLFE7YyxRO2M7YyxPO2MsWTtjO2M7K0I7OzthOzs7O2MsVztjLE87YTs7O2UsTTs7O3dCOzs7O2E7YyxTO2MsTztjLFE7Yzs7Ozs7Ozs7OztjO2M7YyxPO29COzs7OzthOzs7YyxXO2M7Z0I7YyxPO2MsVTtjO2M7YyxPO29COzs7O2E7OztjLFM7YztjLE87YyxVO2M7YztjLE87b0I7OzthOzs7YyxTO2MsTztjLFU7YztjO2MsTztvQjs7O1M7O087O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0s7SztrRCxzQjtLO0s7Ozs7cUI7OEI7OztNLE87OztnQjs7Z0IsVztnQixPO2U7Ozs7OztHOztJOztLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLGdEOzs7O2lCLDBCO087Ozs7Ozs7Ozs7Rzs7STtJLGlCO0k7STs7O087TTs7STtLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO0s7Ozs7bUIsZTs7SSxJLHFCOzs7Ozs7OztROztTLFM7UztXOzs7YztjOzs7OztpQjs7O2lDOzs7aUI7a0I7bUIsVTttQjttQjttQjttQjttQjttQixXOzttQjttQjs7Ozs7c0I7Ozs7Ozs7Ozs7OzttQjttQjs7OzttQzs0Qzs7O29CLE87Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7OzhCLE87Ozt3Qzs7a0Q7O3VDOzs2Qjs7Ozs7Ozs7OztnQjtjOytCO2M7Ozs7Ozs7Ozs7ZTtjOzs7Ozs7Ozs7Ozs7O2E7Ozs7OztZOzhDOzs7O1E7O1M7VztTO1c7OztjO2M7Ozs7O2lCOzs7aUM7OztpQjtrQjttQixVO21CO21CO21CO21CO21CO3lCOzttQjttQjs7OztvQzttQjtvQjtvQix1Qjs7O29CLE87Ozs4Qjs4QixPOzs7d0M7O2tEOzt1Qzs7NkI7Ozs7Ozs7Ozs7Z0I7YztjO2M7ZSxZOzs7Ozs7Ozs7OztlO2M7Ozs7Ozs7Ozs7Ozs7YTs7O1M7O1k7OEM7Ozs7O0k7STtJOzs7Szs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SztJO0k7STs7Ozs7Tzs7O3VCOzs7TztROztTLGU7UztTO1MsVzs7UztTOzs7OzBCO1MsTzs7O21CO21CLE87Ozs2Qjs7dUM7Ozs0Qjs7a0I7Ozs7OztPO007STs7O0s7Ozs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLHVDO0k7OztPO007O0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7Ozs7STtJO0s7OztLOzs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7Ozs7SztvQyxlOzs7bUMsZTs7OztJO0ssTztLO0s7SztJOzs7STtLO0ssUTtLOzs7STtHOztJO0ksNEI7Rzs7SSxZO0k7Rzs7STtLO0s7STtHOztJO0k7Rzs7STtHOztJO0k7Rzs7SSxvQixPO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJLFEsK0I7SSxPO0c7O0k7SyxLO0s7SzswQztJO0c7O0k7SyxLO0ssZ0M7STtHOztJO0ssSztLO0ssUTtLO0k7Rzs7SSxTO0k7OztHOztJO0ssSztLLFE7Syw2QjtJO0c7O0k7SyxLO0s7SyxvQztJO0c7O0k7SyxLO0ssK0I7STtHOztJO0c7Ozs7O0ssVzs7Ozs7O1Msa0I7Uzs7VSxRO1MsVztRO0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7O0k7SyxPO0s7OztJO0c7O0k7Szs7O0k7RzsrRTtHOzs7O0s7O0c7RztJOztHO0c7STs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7O0c7STs7O0k7STtHOztJO0ssSzs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SyxLOzs7Szs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSTs7OzRCOzs7cUI7O3VCOzs7Szs7Ozs0QixPLGlCLHFCOzs7SztJOztLOzs7OzRCLE8saUIscUI7OztLO0k7STtLO3lCLHlCO0ssMkIsd0I7Syx5QiwwQjtLLHdCLHlCO0ssMkIseUI7SywwQiwwQjtLLDBCLHlCO0ssMEIsMEI7STs7Ozs7Ozs7Ozs7Ozs7Rzs7O0s7TSxNOzBCOztLLEcsOEI7SyxNO0k7SSxJOzs7NEI7Ozs7Szs7O00sRzs7TyxXOzs7SyxNO0k7O0s7OztNLEc7O08sVzs7O0ssTTtJO0k7Ozs7SztLO0s7SztLO0s7SztJOzs7Ozs7Ozs7Ozs7OztHOztJLHFCOztLLE07STtHOztJOzs7O0s7O2U7ZTtLLGM7SyxpQjtLLGlCOzs7O0s7TTs7O1M7O3NDOztRO0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztpQjs7Ozs7OztXOzs7Ozs7UTtLOztJOzs7STtLO087SyxLO0s7O0ssTTs7STtHOztJLEcsZ0Q7SSxjO0ksTztHOztJO0ssTztLLE87SztPLFc7SSxPO0c7O0k7STtJO0ssTztLLE87SyxPO0s7Tzs7UztLLFc7Szs7STtJO0c7O0k7MkIsVztHOzsrQiw0QztJO0c7Rzs7O0k7TTs7Ozs7VTs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOztJLE87Ozs7NkIsTywwQjtHOztJLGtCO0ksTTtHOztJLFU7O0k7SSxPOzs7YztlOzs7b0I7ZSxPO2UsTztjLE87YTs7Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVO0ksVztJLE87Rzs7SSxVO0ksb0I7OztLLEksVzs7Ozs7O0s7O0ksVztJLE87Rzs7SSxVOzs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJOzs7TSxZOzs7Tzs7O1EsSSxXOzs7Ozs7UTs7Tzs7Tzs7Ozs7TSxNOzs7O0k7Rzs7SSxVO0ksYztJOzs7SztNLFc7Ozs7Ozs7Szs7O0c7O0k7Rzs7STs7O1MsSTs7O007TyxJLFc7Ozs7Ozs7Ozs7Ozs7STtLLGtCOztLOzs7Ozs7Szs7SSxJOzs7O007OztJO0k7Rzs7STs7Yzs7O2dCOztpQjtpQixPO2dCO2dCO2U7OztHOztJOztPOztROzs7Tzs7Tzs7O1E7OztPOztPO1E7Ozs7UTtVOztPOztHOztJO0s7OztLOzs7O007O0s7OztrQjs7STtHOztJOzs7Szs7O007OztNOzs7O0k7SztPOzs7VTtVO1M7O0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVTs7OztTOzs7TztPO087O08sTTs7Rzs7STtLOzs7SSxpQjtHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxhOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxjOzs7O1M7OztPO087Tzs7TyxNOztHOztJOztPLGdCOztpQjs7O21COztvQjtvQixPO21CO21CO2tCOzs7Ozs7Ozs7O1EsSSxhOzs7Ozs7O1MsTzs7OztvQjttQjttQjtrQjs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7UyxPOzs7O29CO21CO21CO2tCOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFc7SSxtQjtJOztLLFE7O0ssTzs7STtZLDBDLGlCO0ksTyxXO0c7c0Msa0M7cUMsa0M7dUMsa0M7d0Msa0M7c0Msa0M7dUMsa0M7Ozs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Ozs7STs7OztJLGlCO0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7OztJOzs7O0ksSTs7Ozs7OztPOzs7OztJOzs7O0ksc0I7Ozs7SSxJOzs7NEI7Ozs7O0ssTzs7OztnQjtlO2U7Yzs7O0k7Ozs7SSxJOzs7Ozs7O087Ozs7O0k7Ozs7SSxzQjs7OztJLEk7Ozs0Qjs7Ozs7SyxPOzs7O2dCO2U7ZTtjOzs7STs7OztJLEk7Ozs0Qjs7Ozs7Ozs7O1M7O1M7aUI7O0s7O0ksb0IsZTs7O0s7Szs7STs7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7Szs7O2U7ZSxPO2M7Yzs7STs7Szs7O0s7eUI7SSxvQixPO0ksTzs7O2MsTyw0QjthOzs7Rzs7STtLOzs7TTswQjtLLG9CLE87SyxPOzs7ZSxZOztlLE87Yzs7OztJLFk7NEIsTyx5Qjs7STtLO007UTs7O1cscUIsTztVOzs7TTtnQjtLOzs7O007UTtVOzsyQix3Qzs7Ozs7O0c7O0k7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7OztJOztLOzs7Szt5Qjs7SSxPOzs7YyxTO2MsTzthOzs7Rzs7O0ssZ0I7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7NEIsTywyQjtzQixhO3VCLGM7STtLO0c7O3NCLGE7dUIsYztJO0s7Rzs7a0MsTyxpQztzQixhO3VCLGM7STtLO0c7O0k7SztLLE8sdUI7STtzQixhO3VCLGM7STtLO0c7O21DLE8sa0M7c0IsYTt1QixjO0k7SztHOzs7SyxPO0k7c0IsYTt1QixjO0k7SztHOztJOzs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsd0M7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7OztLO087OztVLEksSztVLFc7Uzs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPOztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssVztLLE87STtJOzs7TyxPOytDLHFCOzs7TyxPOytDLDRCO2U7O0c7O0ksTzs7OztjLFc7YyxPO2E7Rzs7STsrQyxzQjs7Rzs7STsrQyxzQjs7Rzs7STs4QyxzQjs7OztHOztJLDZDLHlCOztHOztJLHVDLHlCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7Tzs7O1EsTztPO087a0I7cUM7TyxPOzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087TyxJOzs7O1M7OztPLFc7TyxPOzs7Ozs7OztPOztRLE87TztPLEk7Ozs7Uzs7O08sVztPLE87Ozs7Ozs7O087O1EsTztPO08sSTs7OztTOzs7TyxXO08sTzs7Ozs7Ozs7Tzs7USxPO087Tzs7O087Tzs7O087Tzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O087O1EsTztPLE87O087O1EsTztPLE87Ozs7TztRO1EsTztRLE87TyxPOzs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTzs7UyxPO1E7OztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O08sTzs7O087OztHOzs7TSx1QjtNOztPO087Uzs7WTtNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJLE87OztjOztpQzs7Ozs7a0IsbUI7Ozs7Yzs7O0c7cUQ7Rzs7STs7dUI7Ozs7Ozs7Vzs7O1c7Ozs7Ozs7O1M7OztROzs7O3FDOztJOzswQixPLHlDOztJO0ssTTtJO0c7O0k7SyxNO0k7Rzs7STtLLE07STtHOzBDOztJO0ssTTtJO0c7O0ksTzs7K0M7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STtHOztJLDhCOzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TyxrQztPOzs7O2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7O1EsTzs7O2tCO2tCLE87aUI7Ozs7USxPOzs0QixPOzs0QixPOzs0QixPOzs7UTtRLE87O0k7OztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7O1E7Z0I7OzttQjttQixtQjtrQjs7Ozs7USxXOzt5QixXOztzQixXOzt3QixZOztRLHlDLE07USxZOztJO0c7O0k7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7O1MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O0ksTzs7NkIsbUIsVTs7Rzs7STtJLE87Rzs7STtHOztJO0k7Szs7STtJOzttQixxQzs7O0c7O0k7SSxPO0c7O0k7RzsrQixPLHFDOztJOzs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7O1E7O1E7Ozs7O1M7UTtTOzs7Ozs7VTs7Ozs7Ozs7Uzs7OzsrQjs7OztJOzs7eUIseUI7STtHOzs7STtLOzsrQixXOzs7bUI7SztJO0k7SztJOztLOzs7OzZCOztTOzs7VTs7O1U7OztVOztpQztTOztzQzs7Ozs7O0s7STtJO0c7O0k7STs7d0I7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7dUIsdUI7O0kscUM7O0k7Rzs7SSxZOzs7Ozs7Ozs7Ozs7Ozs7O08sTTs7ZSxNOzs7OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TTs7Ozs7TSxJO007TztxQjtPOzs7O1E7O1E7Ozs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztVLFU7VSxPO1M7TTtNOzs7TyxVOztNOztTOzs7O0s7Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZLE87O0ksTzs7O0k7STs7OztRLE87Ozs7O1EsTzs7Ozs7Ozs7Ozs7OztLLE87O0c7O0ksTztHOztJOztxQixPOztxQixPOzs7O1EsTzs7TyxPOzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7SSxlO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0ksTzs7O2M7O2E7O0c7O0k7STs7Rzs7STtJLE87OztjO2M7YyxPO2E7O0c7O0k7STs7SztLO0ssSSxtQjttQzs7OzBCLE87OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTs7O1E7UTtRLE87OztrQjtrQjs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7OztXLE87OztxQixPO29CO1U7Ozs7Ozs7UTtROzs7UTs7Ozs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7TTtNOztNOzs7O1M7VTs7O2E7YTthOzs7YTthOzs7YTthOztTO1M7Ozs7O21DOzs7O1EsTzs7O1E7Ozs7OztRLE87OztRO1E7OztRO1E7a0I7O1E7UTs7OztTO1c7OztjOztlLE87ZSxPO2MsTzthOztTLE87UTtROzs7UTtROzs7UTtROzs7UTtROzs0Qjs7NEI7OzRCOzs7UTtROzs7OztHOztJOzs7TztPO087OztPO087TztPOzs7TztPO087OztPO087O0c7O0k7STs7SztLO0ssSSxtQjs7TTs7TTs7O1M7UztROzs7O21DOzs7O1EsTzs7O1EsTzs7O1E7O1E7OztXOzs7Ozs7Ozs7UTtROzs7Ozs7OztTOztTO1M7O3VCLGdEOztTOzs7UTs7Ozs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtROztTOztTOztTOzs7OytCOztZO1k7OztTOztRO1E7OztVOztVOzs7OztZOzs7O1k7Ozs7WTs7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7Vzs7Ozs7O1c7Ozs7OztXOzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7OztRO1E7OztRO1E7Ozs7OztRO1E7Ozs7OzRCOzs7UTs7Ozs7O1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7Ozs7Rzs7STs7O0k7STtJO0k7O0c7O0k7STs7Rzs7STtJOzs7O0s7Szs7O0k7STtJO0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7OztROzs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7OztPOztPOzs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7O0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtROzs7Ozs7UTtRO1E7OztROztROzs7Vzs7OztROzs7Ozs7OztTO1M7Uzs7Ozs7OztROzs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7eUI7O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7Ozs7Uzs7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPOztPOzs7TztPO087OztPO087OztPO087O3lCOztHOztJO0k7STs7Rzs7STtJO0k7O0c7O0ksWTs7STs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7OztTO1M7UztVLE87O1M7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7aUI7Ozs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7O2dCOztrQyxtQixVOzs7O087Tzs7OztnQjs7a0MsbUIsVTs7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7O0k7STs7O0s7Szs7O0k7SyxPOztJOzs7STs7O0k7O2MseUI7O0s7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7O0k7O08sTTs7TyxNO2UsTTs7RzswQyxrQztpQywwQztHOzs7eUIsb0I7NkIsaUM7O0ksTTtHOztJLE07RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7OztNLHNCOztNO08sTztNO007TyxhO08sVztNO2M7O0s7RztJO0k7STtJOztJO0k7SSxnQjtJLGU7SSxlO0ksYztxQyx3Qjs7STs7O0c7O0k7Ozs7O0c7O0k7SyxROzs7cUI7Ozs7Rzs7STs7Rzs0QixPLHdDOztJO0k7STtvQyxPLHNCO0k7Rzs7SSwrQztHOztJO0ksSTtJO0k7Rzs7SSwrQztHOztJO0c7O0k7Rzs7STtJO0k7STtHOztJLHFDO0c7O0k7OztJO0k7b0MsTyxzQjtJO0c7O0k7OztJO0c7O0k7O0c7O0k7O0k7RztxQywrQjtHOztJOztLO00sTztNOzt5Qzs7OztJO0c7O0k7O0c7O0ksSSxxQyxJO0k7STtHO0csSTs7STtLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztrRTtHOztJOzs7O0k7RzsrQix3QjtHO0k7Ozs7Ozs7OztJLHVDOztJO0c7O0ksa0IsTzs7SSxPO0c7bUMsOEI7O0k7Yzs7Rzs7SSxXO1c7Rzs7SSxXO0ksUztzQjtJO0ksTztHOztJLG1COztJO0c7O0ksK0I7STtHOztJOzs7O00sTzs7O0ksTztHOztJLGtCOztJO0c7O0k7O0c7O0k7STs7O1E7OztnQjs7Rzs7STtrRDtJO0c7O0ksWTsyRTtJLE07Rzs7STs7O0s7TSxZOzs7TTs7Ozs7Tzs7Ozs7STtZOzs7ZTtlLE87Yzs7O0c7O0ksTzs7O2M7YyxPO2E7Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Ozs7YTtNOzs7OztNOzs7O087Ozs7O0c7O0k7STtLLFk7Ozs7Ozs7O0s7O0c7O0ksSSx1QixROzs0QztJO0c7O0ksSSx1QixRO29EO0k7Rzs7SSxjOzs7O1E7OztRO1MsWTs7OzthLE87Ozs7O1MsTTs7O0ksTztHOztJLFk7Ozs7UTs7MkIsTzs7SSxPO0c7Rzs7TTs7O1M7UyxPO1E7O0k7OztNLEs7Tzs7OztNLEs7Tzs7SztNLFE7TSxROzs7Ozs7Szs7TyxXO08sVzs7O08sVztPLFc7Ozs7Ozs7Ozs7O00sRztPOzs7OztjO087Ozs7Vzs7O0k7Rzs7SSxZO0k7Ozs7SztLLFE7a0M7O0s7Szs7STs7Rzs7O0s7SztNLEssNkI7TSxZOzs7O1U7Ozs7OztZLEksVTs7Ozs7Ozs7Ozs7O2U7Ozs7OztXLE87O3lDOzs7Ozs7OztVLG9DOzs7Ozs7OztVOzthOztvQzs7O1UsRyw0QjtVLFc7Ozs7OztNLE87O29DOzs7O0k7STtHOztJO0s7SyxLLDJDO0k7STtHOztJO2dCOztJLE07Rzs7STtLOzs7Ozs7O1M7d0MseUI7Ozs7Uzs7O1k7WSxXOzs7YSxPOzs7WSxPOztpQyx5Qjs7Vzs7Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7STs7O0k7STtJO0s7OztROztRLEksNEI7Ozs7O1MsTTs7O087O0s7SztLO0s7Ozs7OztLO0s7Szs7RzsrQixPLG9DOztJO0ssUTs7OztJO0ksWTs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxROztROzs7O00sWTs7OztNO00sTzs7Ozs7OztHOztJO0k7Rzs7STtJO0ssWTs7TSxZOzs7OztVO1U7Ozs7O1U7VSxPOzs7VTs7VSxPOzs7VTs7Ozs7VTtVLE87OztvQjtvQjttQjs7O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7Szs7O0c7O0k7STtLO00sYTtNLE87SyxXO2dCLDZCO0ssWTs7Ozs7b0I7VSxJLFc7OztzQzs7Ozs7Ozs7O29CO1U7VSxHLCtCO1UsVzs7Ozs7O0ssTzt3Qzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sTzs7OEI7Ozs7Ozs7Rzs7SSxJLG9DOzs7OztLOztHOztJO0ssbUI7Z0I7Z0IsMkI7SyxZOzs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7Ozs7YztpRCxvQjs7VTs7OztjOzs7aUI7a0IsTztrQjttQztpQjtnQjs7O1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csTzs7bUM7Ozs7Ozs7OztxQjtXOzs7Ozs7O3dDO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLE87O2lDOzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SyxPOzs2Qjs7O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJO0k7Syx1Qjs7OztPO1EsTztRLGM7Ozs7Ozs7O00sSTs7OztLLGlCO0ssVztLO0ssWTs7Ozt5Qjs7Ozs7Ozs7d0I7OztVO1csTTtXLE87Ozs7Ozs7Ozs7O2E7Z0Qsb0I7OztTO1c7OzRCOztVOzs7OzthLE87Ozt1QixPOztpQzs7OztzQjs7O1k7UyxtQjtTLEksVzs7O3FDOzs7Ozs7O1MsTzs7O21COztrQjs7O0ssTzs7O2U7Ozs7Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7UTs7O1c7VyxPO1U7O1EsTzs7O2tCO2tCLE87aUI7Ozs7UTs7Ozs7STtHOztJO0c7K0IsMEI7O0ksSSxRLDZCOztLLFk7OzttQjs7O0s7TSxROzs7Szs7O3FCO0s7SztLLE87d0M7STs7Szs7Ozs7bUI7O007TSxjLE87TTs7dUI7O00sWTs7Tzs7USxPO1EsSztRLE87UTs7cUI7Ozs7OztLO0k7STs7STs7cUI7O0ksTzs7O2M7ZTtlLE87O2E7O0c7O0k7NEI7Rzs7STtLLFk7Z0I7Ozs7Ozs7SztLO0s7SyxPOzs2Qjs7O0c7O0ksZTtJO0ksbUI7STtLLFk7O007O08sTztPLE87TSxHLHlDOztLO007TyxRO08sVzs7Ozs7YztZOzs2Qjs7O007Ozs7O00sZTtNO00sTzs7OEI7OztJO0k7OztPLFc7TztNOztJO0s7TSxXO007Ozs7OztNO0c7O0k7SyxXO0ssVztLO1E7TSxNO0s7SyxPO0k7SSxJLFMsSTs7Ozs7O0k7STtHO0c7STs7Ozs7Ozs7OztJLG9CO0ksVztzRTtJLFk7NEM7Ozs7O00sTTtLOzs7O00sTztNO1E7Ozs7OzRCLE87SSxnQjtJOzs7Ozs7Uzs7O1U7Ozs7Ozs7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEs7Ozs7Ozs7Ozs7cUI7Ozs7OztTOzs7Ozs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjOztpQixrQixRO2lFO2lCOztjLFM7YTtlLGtDO2MsVztjO2dCO3FCO2U7Z0I7Z0IsTzt3Qjs7Ozs7Ozs7Ozs7VTt5Qjs7Ozs7a0I7O0k7STs7O0k7Ozs7SSxPOzs7YzthO0c7O0k7O0k7O0k7Rzs7SSxPOzs7YyxPOzttQyxtQzs7YTtHOzs7Szs7OztrQjtNO0ssTztJOztLLEksNkI7Ozs2Qjs7O0s7STtJLFk7STtHOzs7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTs7O0ksTzs7O2M7Yzs7Ozs7bUI7O29CO29CO29CLFE7Ozs7Ozs7Ozs7b0IsVztvQjs7O21CO29CLFM7b0I7b0I7c0I7OzttQjttQjtvQjtvQjttQixLO29CLE07O21CO21CO2tCOzs7Ozs7aUM7YztlLFE7ZTs7O2U7aUI7O2tDOztjO2E7Rzs7SSxPOzs7YztlO2lCOzsrQiw0Qzs7ZTtjO2E7Rzs7SSw4Qjs7O3lCOzs7TztlOzs7a0I7Ozs7bUIsTztrQjtpQjs7Ozs7TztlOzs7a0I7Ozs7bUIsTzttQixPO2tCO2lCOzs7Ozs7SSxPOzs7Yzs7Ozs7Ozs7Ozs7O2U7aUI7O2tDOzs7OztlOzs7b0I7Ozs7OztjO3NCOzt1Qzs7Ozs7Ozs7Ozs7Ozs7O2E7Rzs7STs7STs7STtHOzs7Szs7UTs7Ozs7O1M7Vzs7NEI7O1M7UTs7UTs7UztXOzs7YztjO2E7O1M7Vzs7O2M7YzthOztTO1E7O1E7Ozs7UztROzs7SSxPOzs7Yzs7O2U7aUI7O2tDOztlO2M7YTtHOzs7SyxZOzs7TTs7SyxNO0k7STtLLE87SyxVO0ssTztJO0ksSSw2Qjs7Szs7O1E7USxPO087OztJOztLOztVO00sZ0I7TSxJLFcsdUM7Ozs7TyxrQjtPO08sVzs7Ozs7O1k7Ozs7O2E7YTs2Qjs7O1k7O2EsTzthLE87WTs7O3FCOzs7WTthOzs7O2E7YTtjO2UsTztlLGtCOzs7YTs7YztnQjs7aUM7Ozs7Ozs7Ozs7Ozs7VzswQzs7TztPOzs7SztRLG9DO0ssZ0I7SztLO0k7STtJOztzQixPLHFCOztJO0c7OztJLE87OztjOzthOzs7SSxPOzs7YyxZOzs7Ozs7Ozs7Ozs7ZTtnQjs7OztjO2M7YTtHO0c7STs7O1EsTTtPOzs7SSxXO087SyxNOzs7STs7O0s7TSxpQixROztPOzs7UTtPOzs7MEIsTyxzQzs7O00sTTs7dUMsTzs7O0k7Szs7OztJO0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOzs7OztJO0s7Szs7Ozs7TSxNOzs7O0c7STs7OztJLFk7OztZO007OztLO00sUTtNLFE7TTtNLFU7OztNOzhCO087TyxJOzs7OztPOzs7Ozs7O0ssdUM7SyxJLFU7Ozs7TSxhO00sRztPLE07TSxPOzs7SztNO087Ozs7Ozs7O0s7TSxPO00sVTtLO0s7Szs7SSxNOzs7STtHOztJLEksbUM7Ozs7O0ssTTs7Rzs7SSxXO0ksSSx3QixjOzs7Z0MsNkI7O0s7SztLOztHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkscUM7Ozs7SztLO0ssTTs7Rzs7SSxXO0ksSSxpRDs7O2dDOzs7Rzs7SSxJLHNEOzs7K0I7OztLOztHOztJLEksc0Q7OztnQzs7O0c7Ozs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7O1MsSyw2QjtTLEk7OztxQzs7O1M7OztTOzs7OztTOzs7UyxNOztLOztHOztJO0c7O0ksWTs7SztJLE07Rzs7SSxXO0ksSSx5Qzs7OztLO0ssTTs7Rzs7SSxJLDBEOzs7O2dDOzs7Rzs7STtLLEksSTs7Ozs7OztXOztZO2E7O2E7Ozs7d0M7OztXOzs7O0ksWTs7Ozs7OztPLEc7USxXO1EsTzs7Ozs7STtHOztJO0s7YTs7TSxPO0s7Ozs7NEI7OztHOztJO0ssSSxPLDZCO0s7VSxnQyxJOzs7Ozs7OztLO007Ozs7Ozs0Qjs7O0c7Rzs7SSxHO0ssTTtJLFk7Ozs7O1EsOEM7UTtTLEc7VSxNO1M7VSxZO1U7WTs7O2U7OztTOzs7OztTO1U7VztXO1U7Ozs7O1csTTs7Ozs7O1E7O0ksMEI7SyxnQjtLLE87OztlOzs7O0k7RztHLEk7d0IsdUI7O0k7SztLO0s7STs7O2E7Tzs0QiwwQjs7Ozs7SztLLE07O0c7O0ksSSxxQjs7O3dCOzs7Rzs7SSxJLDRCLGM7Ozt3Qjs7O0c7O0k7SyxPO0ssVzs7SyxZOzs7OztTLEc7VSxNO1Msc0Q7UyxvQjtTO1U7Ozs7Ozs7OztVOzs7Ozs7VSxJLEksTzs7Ozs7O1UsTzs7O29CLDZCO29CO21COzs7Ozs7UyxhOztLOztNLEksZ0I7TSxPOzs7Z0I7Ozs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1MsTzs7O21CO21CLE87a0I7O1E7TTtNOzs7Ozs7USxHLGdDOzs7Ozs7UTtRLE87Ozs7O0ssTTs7OztJLEksK0M7Ozs7TTs7O0c7O0ksaUM7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLOzs7SyxZOzs7Ozt3Qjs7UztVO1csSztXO2E7OztnQjs7O3NCOzBCOztlOzs7VTs7Ozs7OztvQjs7b0M7Ozs7O1MsZTs7O1M7OztVLFU7UztVLE87O1M7O0ssTzt3QztJOztLOztJLE87O2lDLGlDOzs2QixrQzs7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHO0c7O007OztTO1MsTztROztJOzs7Szs7OzttQjs7UyxPOzs7b0I7b0IsTzttQjs7bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTtjOzs7aUIsZTs7Z0I7OztXOzs7OztZLE87Ozs7VSxXO1U7OztVO1k7OzBCLE8sb0M7O1c7Ozs7TSxPOztJO0k7Rzs7STs7SztPOzs7VTtVLE87Uzs7O0k7TTs7b0IsTywyQzs7SztJO007O29CLE8sMkM7O0s7STtLO08sd0Msc0I7SztPLHdDLHNCOztJLE87O2lDLHdDOzs2QixPLHNCO0c7O0k7SztLOzs7Ozs7Szs7RztHO0k7Ozs7Ozs7STtLO087O3dCOztLO087O3dCOztJLE87OztjO2U7aUI7OztvQixZOzs7d0I7c0I7c0I7c0I7OztvQjs7O2U7ZSxPO2UsTztlLE87ZSxXO2M7YTtHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7VSx1Qjs7RztpQyx3Qzs7SSxPO2lDO0c7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7STtZOzs2Qjs7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7O0k7O0s7Z0M7OztLO007TTtNOztNLFE7OztNO00sSTtLO0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STs7SyxJLFc7Ozs7Ozs7O0k7Rzs7SSxJLDZCOztHOztJO0s7TSxPO00sTztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7NEI7OztHOztJLFk7OztLO007TyxtQjtPO007Ozs7OztNOzs7STtHOzs7O0ssRyxtQztLO00sUTtNLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixHLGlDOzs7Ozs7Ozs7OztNOztLLEksbUM7SyxHLG1DO0ssZTtnQjtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7O3VCO21CO3VCLCtCOzs7O2tCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7Ozt3QjsyRCxTOztvQjtxQixPOzt1Qjs7OzBCOzBCO3lCOzs7OztvQjtxQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7Ozs7OzhCLEs7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7OEI7OzhCOzs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7O2tDLE07Ozs7Ozs7OztvQzs7Ozs7Ozs7b0M7Ozs7a0MsTTs7aUMsVztpQyxHO2tDLE07Ozs7Ozs7K0IsTTs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07a0IsTzs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7OzttQzs7OztrQyxPOzswRDs7Ozs7Ozs7Ozs7Ozs7O2tDLE87OzBEOzs7Ozs7Ozs7Ozs7Ozs7OzZCLE07OzRCOzJCOzs7Ozs7OztpQjtrQjtrQjs7Ozs7bUIsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksTzs7a0M7OztHOztJO0s7Szs7SyxNO0k7Szs7O0s7OztLOzs7O0s7Tzs7O1U7dUI7UztJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07SSxPOzs7Yzs7Ozs7ZSxPO2UsTzs7O2U7Ozs7Ozs7ZSxNOztjO2E7O0c7OztLO0s7Ozs7UTtRLFc7VztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJO0k7SztJLEkscUI7STs7Szs7c0I7O0ssSTs7Ozs7OztJLFc7STtLO0s7SyxPO0ssa0I7SSxJLFc7Ozs7TSxNOzs7STtLLGM7Szs7O0ksZ0I7SSxPO0c7O0ksVztJLFM7STtLO0s7SSxPO0c7RztJOzs7USxNO087O0k7OztRLE07TztJOzs7OztJO0s7OzBCOzs7UTs7O1E7TTtHOztJOztLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7Ozs7O1E7UyxTOzs7Ozs7VTs7Ozs7Ozs7OzRCLE07Ozs7UTs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7OztJO0s7SztLLE8sMkM7STs7TSwyQzs7OztLO087VTs7SyxNOztJO0c7RztJOzs7Ozs7Ozs7OztJLEs7SyxNO0k7STtJLEk7OztLLG9EOzs7STtLLGtCO0ssYTs7Ozs7O0s7O0k7STtHOztJO0ksSTs7O0s7TTtNO007TTs7Ozs7Ozs7SSxPO0c7O0ksMkI7STtJOztLLEksUSwwQixVOzs7Ozs7Ozs7Vzs7O1k7OztXO1c7Ozs7Ozs7Ozs7Z0I7Z0I7Ozs7O2lCO21COzs7OztrQixXO2tCO2tCLG9CO2tCOzs7O2dCO2dCLEs7Z0I7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7SSwyQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7TztTOzs7Ozs7Ozs7USxXO1E7USxvQjtROzs7TyxJLHFCOztROztROztNOztLLE07Ozs7Z0M7OztHOztJO0k7STtJO0s7SztLLE87SyxPO0ssSztLLE87SyxPO0ssUTtJO0k7STtJO0ksK0I7Ozs7Ozs7TSxZOzs7Ozs7TSxjOzs7Ozs7Ozs7OztJO0ssSSxzQzs7Ozs7TSwwQjs7STtHOztJO0ssTTtLO0ssSztLLFc7Ozs7SztNOztTOzs7OztZOzs7Ozs7Ozs7WTtZLE87Ozs7Ozs7TTs7STs7TTs7TTtNOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7O2tCO2tCO3NCLCtCOzs7OztnQjtnQjtnQjtpQixVO2lCLFU7OytCOzs7aUI7O2lCOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O2dCOztrQjs7a0I7a0I7OztpQjtrQjtrQjs7b0I7O3FDOzttQjtvQjtxQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7O3VCOzBELFM7O21CLFc7bUI7OztzQjtzQixNOzt1QixXO3VCLEksOEI7Ozs7O3dCO3dCO3dCOztzQjs7OztxQjs7Ozs7O2lCOzs7O2dCOzs7Ozs7Yzs7ZTtlO2M7ZTtnQjtnQjs7OztlLFc7eUI7Ozs7ZTtlOzs7O2E7OztjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7aUIsVztpQixJOzs7OztrQjtrQjtrQjtrQjttQjttQjs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7d0M7Ozs7Ozs7Ozs7OztpRDtpQixXO2lCOzs7b0I7b0I7bUI7Ozs7Ozs7Ozs7O1U7Ozs7OztXO1c7Vzs7Ozs7Ozs7UTtRO1E7UTtRO1E7Ozs7O1EsSztTO3NCO1MsWTs7O1E7Uzs7Uzs7Uzs7Ozs7aUQ7O3FEO007Ozs7TSxZOzs7O087TztPO08sSSxtQixJOzs7Ozs7TztPO2tCOzs7O0s7Ozs7OztLO0s7Ozs7SSxXO08sMEM7SSxPOztrQzs7O0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxVO0ssaUI7Szs7O1E7Ozs7OztRO1E7Ozs7O1UsVztVO1Usb0I7O1M7Uzs7Ozs7O1M7eUI7O087O0s7Ozs7SztLO0ssTTs7OztJLEksUSwwQixVOzs7dUIsTzs7OztVLE87O1U7Ozs7SSxNO0c7O0k7SyxROzs7OztLLFU7Ozs7O0ksNkI7STtLOzs7Ozs7O0s7TSxPO00sSztLOzs7USxrQixPO1EsTztPOztLOzs7UTtRO1MsVztTLE07OEI7Ozs7Z0M7OztPOzs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJO0ssTzs7O2U7OztnQixROzs7NkI7c0M7O2M7O0k7STtLLE87OztlOzRCO2M7O0k7STtLLEksa0I7O007TztPOzs7WTs7O2M7Ozs0QjtxQzs7YTs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTs7O1k7OEM7UTs7Ozs7OztxQjtNLFM7O0s7TSxLO007OztNO08sTztPLE87TTs7SyxLO007TyxXO08sSztPLE87TTtNLG9CO00sTzs7SyxHLGlDO0ssTztlOztJO0k7SyxNO0ssTTtLOztJO0s7SztLOzs7UTtRO1M7O1M7Ozs7OztTOztPOztLLEc7TSxTO00sRztPO1EsTztRLE87Tzs7O0s7Ozs7SztLO0ssTTs7OztJO0s7Ozs7UyxZLE87UyxvQjtTOztNO007Ozs7OzttQjtLO00sUTtNLFU7O3NDOztPOztnQyxPLDhCO007Ozs7Ozs7Ozs7OzJDOzs7O1U7OztvQixRO29CO29CLFc7b0I7b0Isb0I7b0I7cUI7O3dCOzt5Qzs7cUI7Ozs7cUI7cUIsTTs7bUI7Ozs7OzsyQjs7O1U7O21DLE8sOEI7Ozs7OztTOztrQyxPLDhCOzs7OztTLEcsK0I7UyxJO1M7VSxXO2E7VyxRO1c7VztXLE87O3lDOzs7OztTOzs7Ozs7Ozs7O3lCO2tDOzs7OztVLGM7OztXLFc7Ozs7Yzs7OztpQixPOzt5Qzs7Z0I7Ozs7Ozs7O1M7UztVOzthLE87Ozt1QixXO3VCLFc7c0I7WTtVLFE7VSxRO1U7VTtZOzs2Qjs7OztVO1k7OzZCOzs7Ozs7VTs7O1ksc0IsTztZOzs2Qjs7Ozs7OztVOzs7OzthO2EsTzs7O3VCLHlCO3VCLDJCO3NCO1k7UztTO1M7VSxPO1UsTztTO1MsTzs7OztVOzttQyxPLDhCOzs7Ozs7VTs7O29CLFE7b0I7b0IsVztvQjtvQixvQjtvQjtxQjs7d0I7O3VDLDJCOztxQjs7OztxQjtxQixNOzttQjs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OztNOztLOzs7O0ksVztJLEksZ0M7Ozs7O0s7SyxNOzs7Rzs7STtJO0ssZ0I7SztLLDBDO0k7STtHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0ssSSxxQjtLO007TSx5QjtNLG9CO007TTtNOzs7Ozs7TTtNLE07Ozs7Ozs7STtHOzt1QyxrQzs7STtJO0c7aUMscUM7O0k7Rzs7STtLO0s7STtJO0c7Rzs7Ozs7SztNO007TSxJO0s7STtJLEk7Ozs7NkM7SyxNOzs7Ozs7O0ksWTs7OztRO1Msd0I7Ozs7UTtROzs7O2E7UyxrQzs7UyxNOzs7UTs7SSxNO0c7Rzs7OztJO0k7Ozs7UztVO1U7VSxLO1M7UTtLLEk7Ozs7TTs7TyxROztNLE07Ozs7Ozs7O0ssWTs7OztTO1UsVTtVOzs7UztTOzs7UyxjLDRCOzs7O0ssTTs7Rzs7O0s7TTtNLEs7TTtLO0k7SSxJOzs7O0s7O00sUTtNLFE7O0ssTTs7Ozs7Ozs7SSxZOzs7O1E7UyxVO1MsVTtTOzs7UTtROzswQjs7SSxNO0c7RztJOzs7O0ksSSw2QixROztLO00sTTtjLE07SyxJLFEsNkI7Szs7OztPO1EsVTtRO1E7Ozs7UTtTLFM7Uzs7O087ZTtPO087OztPOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7RztJOzs7Ozs7UyxZOzs7O00sSTs7OztRLE07Ozs7TSxJOzs7OztPLE07Ozs7Ozs7O0s7O007Yzs7VTs7O1UsTTs7Ozs7Ozs7OztLO0ssSTs7Ozs7TSxNOzs7O0k7ZTs7OztHOzs7O0k7OztLLEksVTs7Ozs7OztLOzs7O007Szs7OztPLE07OztNLEk7Ozs7O08sTTs7Ozs7O0ksYTs7O0c7RztJOzs7Ozs7Ozs7Ozs7SSwyQjtJLEk7Ozs7Ozs7Ozs7UTs7O1MsUTtTO1EsTTs7Ozs7SyxNOzs7STs7O087Tzs7USxTO1MsTTs7Ozs7TyxJOzs7OztRLHNCO1EsTTs7O087TTs7SSxPOzs7YztjO2U7Ozs7OztlLHNCO2UsTTs7O2M7YTs7Rzs7STtLO0s7OztLO087OztVOzs7Ozs7O1U7VztVLEksVTs7OztrQjs7YztlO2lCO2U7Ozs7O2M7ZSxVO2U7Ozs7Ozs7OztXOztVOzs7O1csUTs7VztZLFU7WTs7Ozs7VTtTOzs7Ozs7OztJO0c7O0k7Szs7SSxPOzs7YztxQjs7d0I7YTs7Rzs7STtLO0s7O0k7SyxJLDZCLFE7bUM7OztRO1MsUTtTLE87UTtROzs7USxxQjs7Ozs7USxNOzs7Rzs7STtJOzs0QixtQiw0Qjs7STs7Tzs7O1U7VTtTOztJOzs7TztPO007Ozs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCO2lCO21COzs7c0I7b0M7c0I7dUIsUTt1QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MkI7NEI7NEI7Ozs7Ozs7NEI7Ozs7Ozt1RTs7eUI7O3dCOzs7Ozs7OzJCLE87Ozs7OzsyQjs0Qjs2Qjs2Qjs7Z0M7OzttQztrQzs7NkI7Ozs7Ozs7NkI7Ozs7eUI7Ozt3Qjt5QixlOzs7bUM7MEIsVzswQjswQixXOzZCOzs7OEI7OztpQzs7Ozs7Ozs7OEI7OztpQztnQzs7Ozs7Ozs7Ozt5Qjs7Ozs7Ozt5Qjs7O29DLE87O3NCO3FCOzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0I7Ozs7cUI7OztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJLE87OztjOzs7O0c7O0k7Szs7O0s7OztLOzs7O0ksK0I7STs7Ozs7TSx3QjtJLE87OztjOzs7Ozs7ZSxRO2UsVTs7Ozs7a0M7Ozs7O3FCLE07Ozs7Ozs7ZSxNOztjO2U7ZTs7Ozs7OztlOytCOzthOztHOztJO0k7Rzs7STs7SSxJLG1DOztJO0ksTzs7aUMsdUM7OztjO2U7OztpQztlOzs7Ozs7OztlO2UsTTs7O2E7Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLFc7SyxXO0ssWTs7OztTO1UsVzs7OzBCOzs7O1M7O1UsVTs7OztVLE87VSxrQjs7VTtXLE87VyxPO1csUztXLFE7VyxPO1csTztVOztTO3FDO1MsZTtvQjtTLFc7Ozs7SyxPOzs2Qjs7O0c7O0k7STtJOztHOztJO0ksTzs7O2M7YyxPOzs7OzBCO3dCO2E7O0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJOzs7Ozs7SSxNOzs7O2E7O0c7O0ksSTs7O3FDOzs7STtHOztJOztJOztJO0c7O0ksTzs7O2U7OztnQixTO2dCLFM7b0M7d0M7ZTtjOzs7Ozs7YztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7Ozs7Ozs7O1csSzs7Ozs7O007TztPO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2dCO2lCLDhCO2lCLFU7Ozs7Ozs7YztlLE87ZSwyQjs7OztlLE87aUI7ZSxXO2U7O3FCOztnQjsyQjtjO3VCO2M7dUI7cUI7ZSxXO2U7Ozs7O2lCOzs7OztpQjs7OztrQztvQjtxQixRO3FCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjswQjswQjs7Ozs7OzswQjs7Ozs7O3FFOzt1Qjs7Ozs7Ozs7Ozs7OzsyQjs0Qjs0Qjs2QixPOzsrQjtrQzs7O29DOzs7O21DOzs7cUM7OztrQzs7O3FDO29DOzs0Qjs7Ozs7Ozs0Qjs7Ozs7Ozs7O3lDOzs7O3VCOzs7O3FCOztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7Z0IsTztnQjs7OztxQjs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7Ozs7SSxXO08sMEM7SSxPOzs7Yzs7OztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7O00sTzs7O2dCOzs7Ozs7aUIsTztpQixPOzs7O2lCOztvQjs7OztpQjs7O2dCO2lCO2lCOzs7Ozs7O2lCO2lDOztlOzs7Szs7OztJO0ksVztJLE87O2lDLE8sNEI7OztjO2E7Rzs7STtHOztJO0k7Szs7O2tCO0s7Ozs7OztLLE07OztHOztJLEk7Ozs4Qjs7O0k7Rzs7STtJO0s7TSxXO00sYzs7Ozs7TSxJOzs7a0MsTTs7Ozs7O0s7O0c7RztJOzs7Ozs7Ozs7O0k7SztPOzs7VTtVLEksVTs7O2tDOzs7O1U7Z0M7O3dCOzJCO1U7Uzs7O0s7Tzs7O1U7VSxHLDBDOztVO1M7OztLO087OztVO1UsSSxVOzs7a0M7Ozs7NkI7MkI7VTtTOzs7SSxPOzs7YztjLGlCO2U7YzthOzs7Rzs7STs7Ozs7Ozs7VTs7Ozs7Ozs7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7Ozs7Ozs7Ozs7Ozs7YSxHO2M7YyxJOzs7Ozs7ZSxNOzs7Ozs7Ozs7OztjOzs7OztPLE07OztNOztLOzs7Ozs7OztNLE07Ozs7Ozs7STs7SyxRO0ssUTtLO0ksVzs7O0k7O0ssTzs7STs7SyxhO0ssVTtLLFU7SztLO0s7SztJO0k7OztLLEk7Ozs7OztNOzs7Ozs7O0k7Ozs7STtLLFE7SyxRO0s7SSxXO0k7SztNO00sYTtNO007TTtNO0s7SztLO00sSztNLEs7O00sTTtLOzs7USxJLG9EOzs7Ozs7UyxNOzs7Ozs7Ozs7OztPOzs7SztNOzs7UztTLEksVTs7OztXLE07Ozs7UyxJOzs7Ozs7VSxNOzs7Ozs7Ozs7OztTO1E7O007OztTO1MsSSxVOzs7O1csTTs7OztTLEk7Ozs7OztVLE07Ozs7Ozs7Ozs7O1M7UTs7Ozs7Ozs7SztNO1E7NkMsMEI7TSxPO007O3FCO0s7Ozs7OztLOzs7RztJOzs7Ozs7Ozs0Qix5Qzs7STs7aUM7O0s7O0k7Rzs7SSxPOzs7YztjO2E7OztHOztJO0k7ZTs7aUU7Ozs7Rzs7SSxPO0c7O0ksSSxVLDZCOztLLE07SSxtQixVOzs7OztNLEcsNkI7OztJLE07Rzs7STtJLE87Rzs7SSxZOztjLHNCOztLOzs7O2tCO087UTtTLE87UyxNOztRO1E7Ozs7K0I7Ozs7Tzs7OztRLEs7TywyQjtPO1E7UTs7O1E7OztRO087O08sc0IsTztPLDZCO087UTtRO1U7OzthOzs7UTtPOzs7O29CO3NEOzs7OztPOzs7OztROzs7Ozs7O1E7UyxjO1M7OztVO1c7OztVO1c7Ozs7Ozs7WSxNOzs7VSxjOzs7OztZLEc7YTtlOztnQzs7YyxNO2E7YTtjO2Msa0I7YztjOzs7c0I7Ozs7Ozs7YSxLO2MsTTs7O2M7OzthO2EsSTs7OztlLE07OzthO2E7Ozs7VSxNOztTLE07Ozs7O1M7VTs7O1M7OztPLHFCLE87Tyw2QjtPO087USxJLE87O1M7UztVO1c7Vzs7Ozs7OztRO1M7Vzs7O2M7ZSxROzs7Yzs7Ozs7OzthOzs7UztTOzs7OztnQjtrRDs7O1E7Ozs7K0I7Ozs7TyxxQixPO087UTtTOztTO1M7OztROztPOztPOzs7O1E7OztROzs7UTtPOzs7O08sb0IsTztPLGlDO1E7Uzs7UztTLDhCO1M7Vzs7O2MsOEIsUTs7Ozs7cUM7O2U7O2dCOzs7Ozs7OzJCOzs7MEI7O2U7O2MsTTthOztTOzhCO1M7UztXOzZDO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RztJLFc7Ozs7OztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCO2lCLE87OzsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQixHLGlDOzs7Ozs7Ozs7Ozs7Ozs7aUIsc0I7aUIsRztrQjtrQixHO21COzs7O2lCO2tCOzs7a0I7OztrQjs7OztpQixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUI7c0M7Ozs7aUI7OztrQjs7bUI7Ozs7Ozt1QjtzQzs7O2lCLE87OzsyQjsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7OztpQjtrQjttQixVOzs7O21CLFU7Ozs7bUI7Ozs7bUI7bUI7bUIsVTttQixXOzs7Ozs7Ozs7Ozt5QixHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO3lCOzs7Ozs7OzsyQjs7OzhCOzs7K0IsUTsrQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDOzs7OzsrQjs7OEIsTTs2Qjs7Ozs7Ozs7Ozs7O3dCOzs7MkI7Ozs0QixROzRCLFU7eUQ7Ozs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs4Qjs7Ozs7Ozs7NkI7OzJCLE07MEI7Ozs7OzttQixNOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7O21CO3FCOzs7d0Isa0M7d0I7O2dDOzs7dUI7Ozs7bUI7b0IsYTs7O3FCO3NCOzs7eUI7eUI7d0I7Ozs7Ozs7O3FCO3VCO3NCO2lDOzs7O29CO29CLE07OzhCOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7OztROzs7O1E7Uzs7Ozs7Ozs7TztROzs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPO1c7YTs7O2dCOzs7aUIsUTs7O2dCOzs7Ozs7aUI7O2dCOztpQixPO2lCLE87aUIsTztnQjs7O3lCOzs7O2U7Ozs7VTs7Ozs7Vzs7OztPO1EsSSxROzs7Ozs7Ozs7OztrQjs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTOzs7Ozs7O0s7Ozs7STs7STtJO0k7SyxXO0ssTzs7O2U7Ozs7O2UsSSw0Qzs7OztpQjt1Qzs7O2M7b0I7Rzs7SSxJLFEsMkIsTzs7OztROztROzs7OztTO1EsTzs7UTs7O1EsTTs7SSxPO0c7O0ksSSxRLDJCLE87Ozs7UTs7O1M7USxPOztROztTLFE7Ozs7OztTLE87UyxPO1MsTztTLFc7USxPOzs7UTs7SSxPO0c7O0ksWTs7STtHOzs7OztLLEcseUM7SztNLFk7TSxROzs7O1M7WTtVLHNCOzs7UztVO1k7O21DOzs7OztVO1M7VTs7Ozs7O1U7Ozs7cUM7Ozs7O2tCOzs7Ozs7Ozs7Uzs7Ozs7Uzs7VTtZOzttQzs7Ozs7UyxHLDRCO1M7VSxPO1U7Ozs7O0ssTzs7bUM7Ozs7OztJO0k7Rzs7STtJLE87Rzs7STtHO0c7OztLOztJLE87Rzs7STs7SztPOzs7VTs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7O1M7OztVOzs7Ozs7OztROzs7Vzs7Ozs7SSxPO0c7O0ksZTtlO2lCO0ksUzs7O0ssSyw2QjtNLGM7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07O0ssWTs7Ozs7UyxrQzs7Ozs7VyxrQjtZOztZLGM7O2E7Ozs7O3dCOzs7OztXOztTLFk7O1U7Vzs7O1csTztXLE87VTs7OztTOztVLFU7Ozs7OztVO1k7OztlOzs7Z0IsUTs7Ozs7Ozs7bUI7Ozs7b0I7c0I7Ozt5QixPOzs7b0M7bUM7Ozs7d0I7OztvQixPO3NCO29CO3FCLE87NEI7Ozs7Ozs7Ozs7ZTtjOztVO1k7OztlOzRCO2M7O1U7WTs7O2U7ZSxPO2M7O1U7Z0I7Uzs7OztJLE87OzRCOztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7SSx1QyxRO2tFO0ksSSxXLDJDOzs7O0ssSSxPLDJCLE87SztLO00sVzs7Ozs7OztXO1ksYzs7O2EsTTs7O1k7O2E7OztnQjs7O21COzs7Ozs7Ozs7O1k7YTtjLE87YyxJOzs7OztjOzs7Ozs7YyxNOzs7Ozs7O1csa0M7OztZLEc7Ozs7Ozs7OztrQjs7O3FCOzs7Ozs7Ozs7O1csbUIsTztXO1ksVTtZO1ksSTs7Ozs7WTtZO2EsVzthOztrQjs7O2E7ZTs7Z0M7Ozs7O2EsVTs7Ozs7YyxHOzhCOzs7Ozs7Ozs7Ozs7VyxHO1k7YTthLFU7OzthLE07Ozs7Ozs7Z0I7Ozt5Qjs7Ozs7Ozs7VTs7OzJCOzs7Ozs7TTtNLE07O0s7Szs7OztJO0s7SztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7O0k7Szs7TTtROzt5Qjs7OztNOztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOztPO1M7OzBCOzs7OztLOztNO1E7O3lCOzs7TTtROzt5Qjs7SztLOzs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7USxLO1M7Ozs7VTtTOztpQjs7O29COzs7Ozs7OztROztTO1c7OztjO2M7YTs7UztXOzs7YztjO2E7O1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7O0s7O1E7O3lCOzs7Ozs7Ozs7STtJO0c7O0ksRztLLE07STs7Ozs7Szs7Szs7Szs7UTs7eUI7Ozs7Ozs7OztJO0k7Rzs7SSxTO0ksRywwQztJLEksOEIsUTs7SyxvQixPO0s7OztRLG1CLFE7Ozs7Ozs7VyxPOzttQzs7Ozs7UTtPOztLLE87OzZCOzs7SSxPOzs0Qjs7Rzs7STtJLE87OzRCOztHOztJO0s7SztLLFE7SyxVOzs7OztLLE87O0k7Rzs7O0ksWTs7Ozs7UTtTLEksWSw2QjtTOzs7O2dDOzs7OztRLEc7UyxXO1M7O1c7OztjLGtCLFE7Ozs7Ozs7ZTs7YzthOztVOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLGM7cUIsWTtHLEksK0I7O0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7SSxXO0ksTztHOztJLHVCO0c7RztJOzs7UTtRLHNCOztRO1Esc0I7O1E7USxzQjs7UTtRLHNCOztRO1Esc0I7O0ksdUIsTSwwQztHOztJO0k7Ozs7Ozs7cUM7O3FDOztxQzs7cUM7O3FDOzs7Ozs7OztLO0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtnQjtJOztLLG1DOztLOztHOztJLHFDLE87Ozs7Ozs7Ozs7Rzs7SSxXO0ksTztHO3lCLCtDOztJO0k7STtLLE87SztPO1MsMkM7SSxPLFc7Rzs7SSwwQiw0QztJO0s7SyxROzs7STtLO0k7SyxPO0k7STtLLE87STtJO0s7Tyx3Qyx1QjtLLG9CO0ssVTtJOzs7Tzs7UTtRO1E7TztPO007O0ksTzs7O2MsWTs7O2UsTzs7Ozs7Ozs7OztjO2U7aUI7bUQ7ZSxPO2MsTzs7Ozs7Ozs7Ozs7O0c7O0ksVztHO0c7c0IseUI7RztJO0k7OztJO0ssa0IsTztLLE87STtJO2U7SSxPO0c7O0k7Ozs7TTs7TyxPO2M7OztLO00sVztNLE87O0s7TTs7Uzs7WSxPOztZLE87O1ksTzs7WSxPOztZLE87b0I7O1E7TTtNLE87TSxROzs7TSxHOzs7TztRO3lDOztVOzZDOzs7Ozs7d0M7SyxjOztpQjs7TTtPO2tCO08sVztjO0s7TSxZO007TTs7ZTs7OztNO2E7OztRLEk7Ozs7Ozs7O1M7Ozs7O0ssTzs7SSxXO0ksTztHOztJLEksMEIsTztJLE87Rzs7STtJLE87RztHO0ksZTs7Ozs7Ozs7STtJOzRCO0ssVSxnQztNO0s7OztHOztJOztPOztRLE87UTtxQjtPOztRO1U7Ozs7O1EsTztRLHFCO08sSSxZOzs7K0I7Ozs7Tzs7O1MsSSxVOzs7Ozs7Ozs7VSx1QixPO1U7Ozs7OztROzs7NkM7O08sc0M7Tzs7O087O0c7bUQ7Rzs7OztLO0k7STtJOzs2Qjs7Ozs7Ozs7VTs7O1csTztVO2M7Ozs7Ozs7cUI7Ozs7OztPLFMsVzs7Tzs7Tzs7O1E7UTtPOzs7TyxZOztPOzs7O0k7Ozs7Rzs7STtJLE87Rzs7SSxPO0c7O0k7O0s7Tzs7d0I7O0ssTztJLE87Rzs7Ozs7Ozs7Ozs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOztJLE87Ozs7Ozs7YyxPOzs7d0IsTzt1Qjs7YTs7RztJOzs7O0k7STtxQzs7O007Ozs7O0c7O0ksWSxPOztJLE87OztJLDhCO3lDOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxJLEs7Ozs7TSxHO007Ozs7O0ssTzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7Rzs7O0s7SyxPOztJO0ksc0I7Rzs7STtLLE87Ozs7TyxPOztPOzs7OztRLE87UTtPLE87Ozs7Ozs7Ozs7OztPLE87O087Ozs7UTtPLE87Ozs7Ozs7O3FDOzs7O08sTzs7Ozs7OztpQjs0QixPOztpQixPOztnQjs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXO1csTztVO08sTzs7Ozs7cUM7Ozs7Ozs7Ozs7OztpQixhLE87O2lCLE87O2dCOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7SSxPOzs7YyxZLE87O2MsTzthOztjLE87YTs7YyxPOzs7Ozs7Ozs7d0IsUSxPOzt3QixPOzt1QjthOztHOztJOztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7Ozs7Ozs7SSxRLE07O0ksTztHOzs7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1k7Yzs7K0I7O1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7Ozs7STtJOzs7UTs7UyxTO1MsSTs7O1MseUI7OztROzs7O1E7OztTOzs7UTs7Ozs7O0ssSTtLOztHOztJO0ssWTtLLE87STtjOztHOztJO0k7Ozs7O3dCOzs7Szs7UTs7O1c7O1k7Ozs7O1c7WTthLEk7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O1U7Ozs7O0k7Rzs7STtJLE87O2lDLGdDOzs7Rzs7STtjLG1DOztHOztJO0k7Ozs2QixXOzs7O1Esd0M7UTs7Ozs7O0s7O0c7O0ksK0I7dUI7STtLOzs7O0ssUTtLOzsyQzs7YyxNOztNOzs7Uzs7VSxvQjtVLEcsa0Q7O1M7O1UsSTtVLE87VSxPOzs7VTs7OztZOzs7OzJCLDRDO2E7YTtlOzs7a0I7a0IsTztpQjs7WTs7O2E7YztjO2dCOzs4QixPLCtCOzthO2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7Uzs7UTs7O0k7Ozs7Ozs7Ozs7Ozs7O007TyxXOztRLDJDOzs7OztLLEksSTs7Ozs7O0s7O0c7O0ksTzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksVztJO2lDOzs7STtHOztJLGlCOztJLFc7SSxPOzs7YyxrQixROztlOzs7Z0IsTztlOztpQzs7Ozs7O2M7YTs7Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87O3FCO1EsTzs7O2tCOzs7Z0M7Z0M7aUI7Ozs7aUIsNEI7USxPOztRLG9CLFU7OztTLHNCLE87O1EsTzs7SSxPO0c7Rzs7SSxlO0k7O0ssTztnQjswQjt3Qjs7RztHO0k7STtJO0k7STtJO0k7STs7O0k7SyxNO0s7SyxXO2U7Ozs7Ozs7Ozs7Ozs7OzthLE87Ozs7OztROztJO0c7O0k7STtLLEksVzs7OzZCOzs7OztHOztJLFc7STs7O0s7O1E7OztXO1c7VTs7Szs7OztJO0c7O0k7SyxXO0s7SyxpQzs7Rzs7SSxjO0k7SztNLE87TSxPO0s7Szs7Tzt3QjtNOzs7Rzs7STtJLEksVyw4Qzs7OztLO00sVztNOzs7Ozs7Ozs7Ozs7OztZOzthOztnQixPOzs7MEI7MEI7eUI7O2U7WTs7O2E7OztpQixXO2lCLE87Z0I7YztnQjt3Qyw4Qjs7Ozs7OztrQjs7TTtNOzs7Rzs7SSxZOztLOzs7UTtRLFc7Tzs7O0c7O0ksNEI7OztJLE87Ozs7ZTs7O2M7OztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJLFc7SSx3QjtJOzs7Rzs7STtJLHNCO0c7O0ksWTs7OzswQjs7OztROztJO0c7O0k7STtLO0ssRztNO0s7TSxNO007TTs7Ozs7Uzs7Ozs7O1MsRztVO1MsWTs7Ozs7O3lCOzs2Qzs7Ozs7UztTO2lDOzs7Szs2Qjs7RzsyQiw2Qjs2QixtQixzQjs7STs7Ozs7Rzs7STs7Ozs7STs7O0c7MkIsVSwrQjs7STtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtNO1c7SztNLDZCO007O3lCO0s7OztLLEksTSw4Qjs7OztTO1U7VSwwQjtTOzs7OztVLDBCOzs7UyxHO1UsYzs7Ozs7OzthLEc7Ozs7Ozs7Ozs7OztTOzs2Qjs7Uzs7O1U7OztVOztVLDRCO1M7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7VTs7ZTs7O2lCOzhCO2dCOzs7VTtZOzs7ZSxrQixROytEO2U7Yzs7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDOzs7Ozs7aUI7bUQ7Vzs7O1M7VTtZOzs7ZTs7O2dCLFE7NkM7Ozs7Ozs7aUI7Ozs7Ozs7aUI7OztlOzs7VTs7OztlO2lEO1M7O1M7Ozt3Qjs7UyxnQjtTO1UsUTtVO1M7UztVO1k7OzZCOztVO1M7O1M7O1M7OztVO1k7OztlOzs7Z0I7Z0IsTztlLFc7Yzs7Uzs7SztJO0ksRzs7TTs7dUI7O0ksWTs7Ozs7O1Esc0I7UTs7O0k7SywrQjtLO0s7Ozt5QjtLOztJO0c7O0ksTzs7NEI7O0c7O0k7SztNLFU7OztNO1E7OztXO3dCO1U7OztNO1E7OztXO1csTztVOztNOzs7Szs7O2dCLE87STs7O0s7Szs7O0ksWTtJLE07Rzs7STtLOzs7OztNO007OztLOztJLGM7Ozs7Ozs7OzsrQjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7RzswQywwQjs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0ksTzs7O2MsSSxPLDRCO3FDO2M7YzthOzs7Rzs7STs7Tzs7O1UsVztVLE87d0I7O1M7OztJLE87Rzs7STs7SyxPOzs7SSxPOzBDLDBCO0c7O0ksSTtJLFc7Rzs7SSxxQzs7SSxlO0c7O0k7SyxPOztLO087O3dCOztLO0k7Rzs7STs7K0Isc0M7O0c7O0ksSSxpQzs7SyxtQixPO0s7OztRLFcsVztRO1M7VSxPO2lCOzs7USxjO087OztJO0k7STs7cUI7Ozs7Syx1QixVOzs7O08sc0IsVTs7Ozs7OztVLEc7VztZLFc7bUI7Ozs7Ozs7Ozs7OztLOzs7OztJOzs7Ozs7UTt1QywwQjs7OztROzs7Vzs7VTs7O0k7Rzs7STtLOzs7O0ssa0I7O0s7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs0QywyQjs7O0k7SztPOzs7VSxhO1Usc0I7VSxXO1U7VyxXO1c7Ozs7O2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7OztVO1csVTs7O1c7O1U7Uzs7O0s7Tzs7O1U7OztXOztVO1M7OztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7OztpQjs7O1E7Ozs7O1M7OztjOzs7OztJOzs7OztZOzs7Rzs7STs7Rzs7STtJLE87Rzs7STtJO0k7Rzs7STtJO0k7SSxPO0c7O0k7STtJO0c7O0k7SSxPO0c7cUQsd0I7Rzs7SSxJLHVCO0ksTztHOztJO0ksTztHOztJOztLO087O3dCOztLO0k7Rzs7STtJO0k7STs7Rzs7STtLLFU7Szs7Szs7c0I7O0ssTzs7O2U7bUY7ZTtjOztJO0k7O0ssTztLOzs7SztJOzs7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0k7STtLLE87Szs7O0ksTzs7Ozs7O0c7O0k7SyxPO0s7SztLOzs7OytCOzs7OztJO0c7O0k7SSxPO0c7O0ksWTs7O0s7O0k7Rzs7O0k7Ozs7Ozs7UTs7O1MsTTtTO1M7UTs7VTthO1MsVztTLEs7VSxPOzs7OztRLHVCO1EsRztTOzs7UTs7Z0MsbUIsd0I7Ozs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztZLE07OztTO1M7Ozs7O1E7O1M7Uzs7UztTO1c7OztjO2M7YTs7O1M7Vzs7O2M7YzthOzs7UyxhO1M7Vzs7O2M7Yzs7Ozs7OzthOzs7UztXOzs7YztjO2E7OztTLGM7UztXOzs7Yzs7Ozs7ZTs7O2U7YyxhOztjO2E7OztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssYztLOzs7Szs7STtHO0c7O007OztTO1U7VTtZO2U7O1M7UTs7STtJO0k7STtJLGU7STtJOztxQjs7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STs7cUI7O0k7STtLLE87SztPOzs7VTs7Uzs7O0s7Tzs7O1U7O1M7OztLO0s7SyxPO0ssTztLLE87SztJO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztpQixjO2tCLFc7a0IsTzs7aUI7Z0I7Z0IsTzs7OEI7O0c7O0ksVztJLE87Rzs7Ozs7eUI7O08sbUI7Tzs7Ozs7O1M7O1UsUTs7cUI7O1MsSSxzQixXOzs7O3VDLFM7Tzs7UTs7UTs7Z0M7TzttQzs7OztJOzJCLFc7O2M7YyxPOzs7d0I7d0IsTztpRTt1Qjs7YTs7Rzs7STtLLE87SyxhOztLOztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1U7WTs7O2U7OytDOztlO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO0s7SztNLFE7TTs7TTs7Tzs7O007O087Uzs7O1k7OzthOzs7WTtXOztPOzs7O1ksTztXOzthOztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7O0ssTzs7OztlLG9COzs7O0k7SSxPLFc7Rzs7SSxPO0c7O0k7SSxPO0c7O0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7STs7O0ssTztLLE87SSxPOzs7STs7Tzs7d0I7SSxPO0c7OztJLEcsK0I7STtJOzs7STs7SyxPOztJOzs7SyxPO0ssTztJLE87OztJLFk7O2dCOztJLE87Ozs7Ozs7OztrQzs7Ozs7Ozs7Ozs7SSxLLGtDLDhCLCtDLFU7STs7O0k7O3lCOzs7NEM7OztJO0c7OztLLE87O1E7O29COztLO0k7SSxTOztJLGdCO0c7O0k7OEI7Rzs7OzttQjs7OztNOzs7TTs7Ozs7O0c7STtNOzs7O1UsTztTOzs7O0ksWTs7Szs7TSxVOzs7Ozs7SyxlO0s7TSxPO00sTztNLFc7TSxPO0ssTzs7STtHOztJOzs7SztJO3NDO0k7OztJLFc7SSxPO0c7O0ksTztHO0c7SSxhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87OztJO0k7STs7SyxPOztLLE87Ozs7Ozs7Ozs7Rzs7STs7Tzs7OztROztRLFE7USxVOzs7UTtTOztrQixPOztpQjs7OztRO1M7O2tCLE87O2lCOztPOzs7O1EsVzs7OztVLFc7O1U7OztXO2E7K0M7VTtrQjs7Ozs7Ozs7OytDOzs7OztpQjtnQzs7O1c7VztZLE87O2M7Ozs7Vzs7WTtjOzs7aUI7aUI7aUIsTzswQjs7Z0I7O2M7O1U7a0I7OztVOzs7O1csTztVO2tCOzs7Ozs7Ozs7O1Usa0IsTztVO2tCOzs7Ozs7Ozs7OztRLFc7OztRO2dCOzs7Ozs7Ozs7TyxXOzs7Ozs7UTtRO1MsTztlOzs7Ozs7Ozs7Ozs7O2lDOzs7Z0M7OztVLG1CLE87VSxXOzs7VTtVLFc7VSxXOztVLG1CLE87VSxXOzs7VTtVLFc7VTtrQjs7Ozs7Ozs7OztPOzs7TztPO08sYzs7Ozs7Vzs7b0I7b0I7b0I7b0I7cUIsTztxQixPO29CLE87O21COztPLDBCOzs7O0ksTzs7OytCLHdDO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSxXOzs7O00sVztNLE87O2lCO0ssYzs7TSxXO00sTzs7Szs7STtHOzs7OztnRSxTO0k7Ozs7YztjO2U7aUI7OztvQjtvQjttQjs7O2U7aUI7OztvQjs7O3FCLE87b0IsVzttQjs7OEI7YztlOzs7b0I7b0I7bUI7O2U7YztlLE07O2M7O2U7Z0I7Ozs7Ozs7b0I7Ozt1Qjs7O3dCLFE7Ozs7O3dDLG1COzt1Qjs7Ozs7ZTtnQixPO2dCLE87O2dCOztpQjttQjs7b0M7OzttQjs7Ozs7Ozs7OztnRDtlO2dCLE87Z0Isc0I7Ozs7Ozs7O2U7ZTs7Ozs7O3NDOzs7a0I7O2dCO2dCOztlOztrQjs7O3FCO3FCLEksVzs7OzZDOzs7cUIsWTttRDtxQjs7c0IsTztzQixTO3NCO3FCLE87b0I7OztlOzs7a0IsaUI7OzttQjs7O29CLE87b0IsTztvQixPO29CO3NCOzs7OzBCLE87eUI7O21CLE87Ozs7Ozs7Ozs7O2tCOzttQixPO2tCLE87Ozs7Ozs7O2lCOztlOzs7Ozs7OztlLE07O2E7Ozs7STtLOzs7Ozs7O0s7O0k7Szs7O2tCO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7SSxZOztJOzs7STs7O0ksbUI7eUI7STtZOzs2Qjs7Rzs7SSxxQjtJO1k7OzZCOztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2lCOzs7Ozs7Ozs7OztlLE87YztlOzttQjs7O2MsTzs7Ozs7d0I7Ozs7Ozs7Ozs7c0M7O2E7OztJOzs7O2M7YztjO2UsTTs7ZTs7a0I7O2UsTzs7Ozs7Ozs7Ozs7YyxpQjtjLE87Ozs7Ozs7Ozs7YTtHOztHLDhCO0csaUM7O0k7Rzs7STs7NkIsK0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7OztpQixPOzs7Ozs7Ozs7Z0I7OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7OztJLFk7OztLLE87OztlLE87Ozs7MkM7O2M7O0k7SSxPOzs7O2dDOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7SSxJLDRCLDhCOzs7OzRCOzs7Rzs7SSxpQjtJLGdCO0ksTztHOztJLE87Rzs7STs7O087O1EsTztRO08sVzs7Ozs7Ozs7VSxZO1U7Ozs7Ozs7O1U7VyxPO1csVTtVOzs7Ozs7OztJO0c7Ozs7Z0I7Ozs7O1E7Ozs7O1MscUIsTztTLEs7Ozs7Ozs7Ozs7Ozs7O1M7O1Usa0I7VSxZO1U7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1E7O1E7Ozs7Ozs7Uzs7d0M7UyxRO1E7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7NEI7Ozs7O1EsWTtROzs7OztROzs7UTs7Ozs7STtxQjtrQjs7STtHOzs7O0k7NkM7SSxPO0c7O0k7OzRDO0ksTztHOztJOztPOzt3Qjs7O087ZTs7Rzs7SSxTOzs7Szs7Ozs7OztNOzs7TTtLOzs7OztJO0c7O0k7STs7O1Esa0IsUTtvQjs7USxJLGdCOzs7O1UsTTs7Ozs7O1E7O1MsUTtTLFU7OztTOztZOzs2Qjs7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztROzs7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7Uzs7OzthOzs4Qjs7Ozs7O1E7Ozs7O2UsTTtROzs7O08saUI7OztPLGlCOzs7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZO0ksSSxnQjs7OzJCOzs7aUM7STtLLE07SyxVO0ssTTtLLFM7SyxRO0ksSTs7OzRCOzs7SSxnQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxpQjs7STtZOzs7ZTs7Ozs7OztrQjs7O3dDOzs7Ozs7Ozs7Ozs7OztrQjs7Ozs7eUM7Ozs7OzswQjs7OztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRLFk7Ozs7OztROzs7O0c7cUMsdUM7Ozs7Ozs7UTtTLFk7cUIsTTtTLG9CO1M7Ozs7O1UsTTs7Ozs7USxPO2lCOzs7b0I7Ozs7Ozs7Ozs7Ozs7OytDOzs7O3FCLE07O29COzs7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7UTs7O1M7UztTLE07UztTLE07USxPOzs7Rzs7STtJO0ssSSxjLHVDOzs7Ozs7Uyw2QjtTLEcsK0I7Uzs7OztTLG1DO1MsRyxpQztTOzs7aUI7OztHOztJOzs7STtLO00sbUM7Ozs7Ozs7O0ksTztHOztJO0s7SyxROzs7Ozs7OztPO1EsUTtRO1U7Ozs7Ozs7O0c7O0ksUzs7Ozs7Ozs7Ozs7Ozs7OztTLEc7Ozs7Ozs7Ozs7OztPOzs7WTtPOzs7OztPOzs7aUI7O3dCOztHOzs7SyxJLDZCLGE7Ozs0Qjs7O0k7O0k7Rzs7STtLO007TTtNOzs7UyxvQjtvQjs7UTs7O1M7Ozs7OzthLE87Ozt1QixtQjt1Qjs7d0I7d0IsbUI7a0M7O3NCOzs7OzJCOzs7O1M7UTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO007UTs7O1c7VyxPO1U7OztNLDBCLE8sbUM7TSw4QixXOztLOzs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7SSxZOzs7Ozs7Ozs7OztJO0ksTztHOztJO0ssVTtLOzs7Ozs7Ozs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7O1U7VSxTO1UsUTs7O1csTTtVLE07Ozs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLE07a0I7Ozs7UyxNOztTOzs7VTs7WTs7O2U7Z0IsTTtnQixNO2UsTztjOzs7OztTOztVO2dCOzs7Uzs7O1U7Z0I7OztTOzs7O1U7Z0I7OztTOzs7O1U7Z0I7O0s7Szs7Rzs7SSxPO0c7O0ksa0IsTTtJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXOzs7Ozs7Ozs7Ozs7Ozs7b0I7O00sTTs7SztLOzs7SyxNO0k7Rzs7SSxZOztLO00sTztNLFU7O3dDO0s7O0k7Rzt1Qyw0Qjs7STtHOztJLDhCOzZCLGlCLGtCOztHOzt1QixPLHlDO0k7Z0M7OztLLE87Ozs7Ozs0QixPLHlDOzRCLE8seUM7OztxQixPLHlDO0k7Szs7UTs7UTs7UTtnQjs7STtLOztNOztNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxPOzs7Ozs7MkIsTyx5QzsyQixPLHlDO0c7O0k7Ozs7USxPOzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87Ozs7Ozs7Ozs7O2lCOztrQjs7aUI7O2tCO2tCO2tCLE87aUIsTzs7OztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O0c7O0ksd0IsTyx5QztJLCtCLFM7O0s7O00sTztLLE87O0k7SztPO0ssTztJLE87Rzs7cUIsTyx5QztJLDRCO0k7OzJCOzs7Tzs7O087O1E7UTtRLE87TyxPOztPOztRO1E7USxPO08sTzs7Rzs7STs7OztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O08sTzs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7Rzs7cUIsTyx5QztJLFU7STs7Ozs7SyxPO0ssYztJLE87Ozs7Ozs7Yzs7OztHOzt1QixPLHlDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztROztXOztjOztjOztjO3NCOztVO1E7UTtRLE87TyxPO2dCOzs7Ozs7O087Tzs7NkI7O087OzJCLE8seUM7UTs7VyxPO1U7TztROztXOzs7WTs7VyxPOztXLHFCLE87VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTztpQjs7O087OztPOztROzs7TyxvQjtPLE87Z0I7Ozs7OztPOzs7TyxzQjtPLE87OztPOztRLFU7TztpQjtpQjs7Rzs7STs7Szs7STtLLE07SyxNO0ksSTs7Ozs7Szs7STtHOztJOzs7OztJOzs7Tzs7Ozs7USxPO08sRyx3QztPLFc7Tzs7K0Q7TztRO1E7Ozs7Ozs7OzBCO0s7O0c7RztJOzs7Ozs7Ozs7O0ksZTs7STs7O0k7O087O087O087Ozs7RzttQixtQzs7STtLOzs7Ozs7TSxRO00sUTtLOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7O0ksTztpRCxvQjtHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7VztZO2M7OztpQjtpQjtnQjs7WSxVOzs7VztZO2EsTzthLE87WTs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7OztTLGtCO1UsZTtVLEs7VyxNO1U7VyxPO1csTztXLFE7Ozs7VyxjO1csYzs7O1c7VyxjOzs7Ozs7Ozs7Ozs7O1c7O2M7OztpQixrQixRO2lFO2lCO2dCOztXOzs7O1c7O1k7O2E7Ozs7OztjLFU7YyxVOzs7Ozs7Ozs7OztnQixXO21CO2lCO2tCLFE7a0IsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7aUI7OztrQjtrQjs7Ozs7Ozs7Ozs7O2M7O2dCOzs7aUI7aUI7Ozs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7OztNLGM7Ozs7Ozs7O3NDOzs7OztzQzs7Ozs7Ozs7OztJOztNOztNO08sTztPLE87TTs7Ozs7OztLOztJO0c7OztJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs7O1U7O2dDOzs7Vzs7WSxRO1ksVTs7OztlLHFCLE87ZSxHOzs7ZSxzQixPO2UsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7O2UsVztlLE87Yzs7Vzt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLE07Ozs7Ozs7Ozs7O1c7WTs7Ozs7Ozs7OztVO1c7WTs7ZSxXO2UsTztjOztXO3dCOztVOzs7VyxPO1csTzs7O2dCOzs7a0I7bUIsTzttQixPO2tCO21CLFc7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7a0I7aUI7Ozs7VTs7O1c7WSxrQixtQztZOztlOzs7Ozs7Z0IsUTtnQixRO2U7Ozs7Ozs7Z0I7O2U7Ozs7MkI7O2U7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNOzs7SSxnQjtJO0ssTztLO0k7SyxjOzs7Ozs7Ozs7SSxnQjtJOzs7Ozs7SSxvQjtJO0s7OztLLE87SSxPOzs7ZTtlO2dCOztlO2U7Z0IsUTs7O2dCLFU7Ozs7O2dCLEksc0I7O2dCLG1COzs7OzswQjtlO2dCLFU7Ozs7Z0IsVTs7OztnQjtlO2dCLEksb0I7OztlO2M7Ozs7Ozs7STs7Szs7STtLLE07SyxNO0s7SztJLEk7Ozs7O0s7O0k7Ozs7SSxzQjs7MEI7STtHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksTzs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixPLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksTzs2QztHOztJOzs7SyxNO0k7SSxPOzs7STtJO0k7STs7c0IsbUIsTyw2Qjs7O0c7O0k7STtJO0k7SSxnQixNO0ksTztHOztJOzs7OztJO0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJO0k7Rzs7O0k7STtJLE87OztJO0ksd0I7Rzs7STtJLHdCO0c7OztJO0k7Ozs7TztPLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTTtPLE87OzRCLE87OzZCLE87OztPLE87OztpQjtpQixPO2dCOzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TywwQjt1QyxPOzs7O0k7STtJO0k7O0c7Ozs7Ozs7STtJO0k7STtJLE87OztJO0ssa0IsTTtLLE87OztJLE87OzJCOzs7O0k7OztLLE87OztlO2U7ZTtlO2U7OytCOztlO2UsZ0IsTTtlLE87Ozs7O0ksTzs7MkI7Ozs7STtJO0k7STtJOzs7TztPO087TyxPO007O0k7SSxnQixNO0k7SSxPOzs7YztjLE87YTs7Rzs7SSxxQixNO0ksTzs7O0k7STtJO0k7O3NCLGtCLE8sNEI7O0ksZ0IsTTtJLE87Rzs7Ozs7O0k7STtJLE87OztJOzs7OztJO0k7STtJOzs7SztzQztLO0ssVTtLLE87OztJO0c7Ozs7Ozs7O0k7STtJO0k7Ozs7TztPO2lDOzs7eUIsTzs7MEI7OztVO1UsTzs7OztxQzs7OzRCOzs7TztPOztPOztPLHFCLE07TyxPOzs7TztPLFU7TztPLE87OztpQjtpQjs7aUM7O2lCLE87Z0I7OztPLHNCLE07TyxPOzs7TyxPOzs7aUI7aUI7aUIsTztnQjs7O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7OztJOzsyQixPOztPLHNDLE07TztPLE87O08sb0IsTTtPLE87ZTs7Ozs7Ozs7OztJO0k7STs7O087TztPLE87TTs7STtxQzs7OzhCOztPOzs7TztPLE87OztPOzs7VTs7OztXLE87OztVO1UsTzs7Ozs7USxPOztPOzs7OztRLE07TztPO087eUM7TyxPOzs7TztPLE87OztpQixrQixNO2lCLE87Z0I7Ozs7TztPLFU7TyxPOzs7TztPLFU7TyxPOztPLDBCLE07TyxPOzs7TztPLFU7TyxPOztPLHdCLE07TyxPOzs7Tzs7O1U7NkI7O1U7VSxPO1M7O08sVTtPLE87OztPO08sTzs7O087TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztnQzs7NEI7OztPO08sTzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O2dDOzs7TztPLE87Ozs7O0k7OztPO087TyxPO007O0k7Ozs7STtJO0ksTzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08sMEI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJO0ksd0I7Rzs7SSxZOztJO0ksTzs7Ozs7Ozs7STtJO0k7Ozs4Qjs7NkIsTzs7O087TyxPOzs7TztPLE87OztpQjtpQjtpQixPO2dCOzs7Z0MsTzt3Qzs7OztJOzs0QixPOzsyQjs7MkIsTzs7OEIsTzs7NkI7cUMsTzs7Ozs7Ozs7O0k7STs7O0ksTzs7Ozs7Ozs7STtJO0k7SSxPOzs7SSw4Qjs7OztPOzs7VTtVLE87Uzs7TyxPOzs7aUI7aUIsTztnQjs7OztPO08sTzs7O087TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OzhCOzs2QixPOzs7TztPLE87OztPO087TyxPOztrQyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7Ozs7O0k7STtJO0k7SSxPOzs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87OytCLE87OztPO087OztVO1UsTztTOztPLE87OztPO08sTzs7O2lCLGtCLE07aUIsTztnQjs7Ozs7Ozs7TztPOzs7VTtVLE87Uzs7TyxPOzs7TztPLFU7TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO3VDLE87Ozs7Ozs7OztJO0k7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7O087TyxVO08sTzs7TywyQixNO08sTzs7O087TyxVO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzs7Z0MsTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7SztLLFU7SyxPOzs7SSxPOzs7O0k7STs7O0s7SyxPOzs7SSxPOzs7STs7SyxPOzs7SSxPOzs7O0k7STs7OzRCLE87OztPO087OztPO087OztPO08sTzs7NkIsTztzQyxPOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7Ozs7O0k7STtJO0k7SSxPOzs0QixTO3lDLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7a0IsUzs7SSxnQyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7Ozs7SSxnQjs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEIsTyw0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SyxPO0k7OztJLE87NkM7Rzs7STs7OztLLE87SyxPO0ksVzs7O0k7SyxPO0ssTzs7O0ssTzs7OztLOztLLE87SztPOzt3Qjs7STs7Ozs7Ozs7Ozs7O0c7O0k7SyxVO0s7SztLLE87SyxXO0ssaUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SztLO0ssZ0I7STtHOztJO0ssVztLLGtCOztJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0ssWTtJOztPOzs7USxPO3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7Ozs7O1EsTzs7O1c7OzRCOzs7O087O1EsTztRLHNCOzs7Vzs7NEI7Ozs7Ozs2Qzs7Ozs7MEI7O0k7OztJO0ssVTtLO0ssVztLLGlCO0k7Rzs7STtLLFM7SztLLFU7SyxnQjtJO0c7O0k7SyxrQixPO0ssVzs7O0k7WTs7NkI7Ozs7STs7O0s7YTs7O2dCO2lCLFM7aUI7aUI7bUI7O29DOztpQjtpQjtpQixPO2lCLFM7aUIsZ0I7Z0I7Ozs7Ozs7Ozs7Ozs7STtZOzs2Qjs7OztJO0ssVTtLO0s7SyxPO0ssTztLLE87SztPOzt3Qjs7SyxXO0s7SyxPO0ssZTtLO0ssTztLO087O3dCOztLLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7STtLLFk7SztLO0ssTztLO087O3dCOztLO0ssTztLLHFCO0ssbUI7STs7Ozs7Ozs7Rzs7STtLLFk7SyxvQjtLLG1CO0k7Rzs7STtLLFU7SztLOztLOzs7O00sTztNLE87TTs7O1M7MkM7Ozs7Ozs7O0kscUI7STtHOztJO0ssVTtLLFU7SztLLE87STtLLDBCOzs7dUIsVzs7cUM7O1E7Ozs7UyxPO1E7OztJO0s7Tzs7d0I7O0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7VTt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7O1U7WTs7O2U7OztnQixPO2U7dUI7O3dDOzs7Yzs7VSxPO1UsTzs7OztTOzs7O1UsTzs4Qjs7O1M7OztVLE87VSxzQjs7O2E7OzhCOzs7OztTOztVLE87eUI7Ozs0Qzs7O1M7O1UsTztxQjs7OzZDOzs7Uzs7OztVLE87MEI7Ozs7O0kscUI7STtHOztJOzt1QixXOztPOzs7USxPO1EsTztPLFc7O08sZ0IsTztPLFc7ZTs7Ozt3QixxQjtJO0ssVTtLO0ssTztLO087O3dCOztLLFU7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7UyxROzs7NEM7OztROzs7UztXOzs7Ozs7OzhCOztlOzs7Z0IsUTtnQixTOztjLGE7Yzs7Ozs0Qzs7Uzs7Ozs7OztVLFE7VSxPO1UsVTtVO1k7OzZCOztVLGU7Ozs7OztROzs7UyxPO1MsTztTO1c7OzRCOzt3Qjs7O1E7Ozs7UyxPO1MsTzt3Qjs7O1E7OztTLE87UyxPO3dCOzs7UTs7UyxPO3dCOzs7UTs7OztTLE87UyxPOzs7O1E7OztTLE87MkI7OztROzs7O1M7Vzs7O2M7OztlOztjOzs7ZSxPO2M7YTs7UyxPOzs7OztZOzs7UTs7OztTO3lCOzs7UTs7Ozs7UyxPO1M7eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7Ozs7eUI7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1MsTzs7OztROzs7UyxPO1Msc0I7Ozs7WTs7NkI7Ozs7UTs7Ozs7O1MsTztTLE87Ozs7UTs7O1MsTzt5Qjs7Ozs7O3lCOzs7MEM7Ozs7Ozt5Qjs7Ozs7eUI7OztROzs7Ozs7UyxPO1MsTztTLE87OztZOzs7Ozs7Ozs7Ozs7O1E7OztTLE87eUI7O0kscUI7STtHOztJO0s7SztLLE87SSxvQjtJOztPOzt3Qjs7STtHOztJO0ssVTtLO0ssTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJO0ssVTtLLFU7Szs7O3dDOztPOzs7USxVOzs7Ozs7OztpQjs7Ozt5Qzs7MEM7OzswQzs7OzBDOzs7Tzs7USxPO3VCOzs7MEM7OzswQzs7OzBDOzs7OzsyQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OzRDOztJO0c7O0ksd0I7Rzs7SSxZO0k7Ozs7SyxPO0k7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxPOzs7O087OztRLE87USxzQjtRO1U7OzJCOzt1Qjs7OzRDOzs7Ozs7OztJLHFCO0k7Rzs7STs7NEIsVzs7O087OzJCLFc7OzhCLFc7OztPOzs2QixXOzs7O0k7SyxPO0ssTztLLE87OztJO3NDOzs7Ozs7Rzs7STtLLE87SyxPO0ssTzs7O0ksVztHOztJLDhCOzs7Tzs7O1E7VTs7O2E7YSxjO1k7O1E7VTs7O2E7YSxrQjtZOztPOztPLGtDLE07TyxXOztPOztRLE07USxNO087O087Ozs7USxPO08sVzs7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxNOzs7O087Ozs7USxNO1EsTTt1Qjs7Ozs7dUI7Ozs7O1E7OztTLE07UyxVO21COztROztTLE07bUI7Ozs7Ozs7dUI7O0kscUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SyxTO0s7OztPOzs7O1EsTTtRLE07Ozs7MkM7OztPOzs7Ozs7USxNO1EsTTtRO1U7OzBCOzs2Qjs7O087OztRLE07USxNO1E7VTs7MEI7O3NCOzs7Tzs7Ozs7USxVOzs7USxNO1EsTTs7Ozs7Vzs7MkI7Ozs7O087Ozs7OztRLE07USxNO3NCOzs7Tzs7O1EsTTtzQjs7SSxvQjtJO0c7O0k7SyxZO0ssWTtLOzs7Tzs7OztRLE07USxNOzs7OzRDOzs7Tzs7OztRLE07Z0M7OztPOzs7USxNO3lCOztJLHVCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFUsZ0M7Ozt5Qzs7Ozs7Ozs7eUM7Ozs7Ozs7Ozs4Qzs7O087Ozs7USxNOzJCOzs7MkM7O0kscUI7STtHOztJO0ssVztLLFc7Szs7Ozs7O1M7Ozs7VSxNO2lDOzs7Uzs7VSxNOzBCOzs7Uzs7OztVLE07VSxNOzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTtVLE07Ozs7Ozs7MEI7OztTOzs7O1UsTTs7Z0I7Ozs7Ozs4Qjs7OzBDOzs7Uzs7OztVLE07Ozs7OztJLHNCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFMsZ0M7O0s7Ozs7TSxNO00sTTs7O3NDO0ksb0I7STtHOztJLEksUyxnQzs7Szs7O00sTTs7O3dDO0ksb0I7STtHOztJOztLLFc7OztJLGdCOzs7SSxJLFMsZ0M7Ozs7Ozs7OzsyQjs7O087Ozs7OztROzs7O087Ozs7UTs7OztPOzs7USxNO3NCOzs7eUM7OzswQzs7SSxvQjtJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7OztJO0ssUztLLFM7SyxVO0ssZ0I7SztJO0c7d0IsUztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RztJO0k7Ozs7Ozs7Ozs7OztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLO007TTtROzt5QixpQzs7Ozs7O0s7Ozs7TTs7Ozs7O0s7OztROzs7Ozs7O1csRztZO1k7O1c7Ozs7Ozs7O1c7VztXOzs7VyxHO1k7WTs7Vzs7WTtZO1k7Ozs7WTtZO1k7WTtZOzs7O1k7WTtZO1k7WTs7VztXO21COztRLEc7UztTOztROzs7Ozs7O1M7OztRO1E7Ozs7O1csTztVO1E7USxRO1E7UTtROzs7O0s7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OzttQixPOztPLE87O0c7OzJCLDRCOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxNO0s7STs7Syx3QjtLOzhDO0k7OztLOzs7O0ssOEIsc0I7Syx3Qiw2Qjs7TTtNOzs7USwyQjs7OztPOztLOztNOztLO3FCOzttQzs7OztRLEksVTs7OztTLEksVTs7O2dDOzs7UyxPOzs7O2tCO1Esa0I7OztROzs7UztROztROzs7UztTOztTOzs7O1U7VTs7Ozs7Uzs7UTtROztROztTO1c7OzJCOztROzs0Qjs7UTs7O1M7aUMsa0M7Uzs7O1MsSSxXOzs7Z0M7OztTOztROztRLDBCLFU7c0I7O1E7a0M7Ozs7Szt3QztJOztLLGlCO0s7STs7O007TTtLO0ssNkI7Szs7eUI7O1Esa0M7UTs7dUM7OztRLFc7OzRCOzs7UTs7eUI7bUM7O0k7STs7SztPO3VDOztLO087dUM7O0s7TTtNO007Ozs7Ozs7O0k7O0s7Szs7b0M7OztTOztTOztTOztTOzs7O2lCOzs7STs7Szs7Ozs7O087O1E7Tzs7a0I7O3NCO0s7STs7SztNO007TTs7Ozs7OztNO0s7OztJO0k7O21DLFM7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJOzt5QixPOzsyQixPOzt5QixPOzt5QixPOzswQixPOzsyQixPOzsyQixPO21DLE87Ozs7STs7Tzs7eUIsTzs7MkIsTzs7O08sTzs7OEI7Ozs7TyxPOzs4Qjs7Ozs7O0k7SSxJOzs7Ozs7O0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7MEIsTyxtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7eUIsVzs7MkIsVzs7eUIsVzs7O08scUI7OzBCLFc7OzJCLFc7OzJCLFc7OzJCLFc7O0c7RzswQixPLCtCOztJLFM7SSxPOztpQyxPLDJCOzs7YztjOzs7ZTtnQixNOztlLFk7ZTtnQjtnQjtpQixJOzs7Ozs7OztjO2E7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7STs7SyxVO0s7Ozs7O1E7Ozt5Qjs7O1EsaUI7O1M7VTtVOzthLDJCO2E7YyxJLGlCOzs7cUM7Ozs7OzsyRDs7YyxhOzs7Ozs7O1k7VTs7YSxZOzs7Yzs7YTtZOzs7Ozs7Yzs7OztjOztlLEs7Yzs7YTs7YzthLE87O3FDLDhCOzs7OzthOzs7YzthLE87O3FDLDhCOzs7O1M7Ozs7O2E7Ozs7YzthO2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthOzs7Yzs7O2lCOzs7O2lCOzs7O2lCOzs7b0I7OztvQixxQzs7Ozs7O29COzs7O3VCOzBCO3FCO3FCOztvQjttQjs7Ozs7aUI7OztpQjs7O2tCO2lCOzs7aUI7OztrQjtpQjs7OztpQjs7O29COzs7cUI7b0I7bUI7Ozs7O2lCOzs7OztpQjs7O2EsTztZOzs7Ozs7OzthO2E7O2M7O2EsTztZOzthO2E7OztnQjs7OztnQjs7OzttQjs7OztzQjs4Qjs7Ozs7OztnQjs7O2EsTztZOzs7O2E7OztjOzs7aUI7Ozs7aUI7OztvQjs7O3FCOzs7O3dCOzJCOzs7Ozs7OztvQjttQjs7OzthOzs7Z0I7Z0I7aUI7OztvQjs7O29COztnQjtlOzthLE87WTs7Ozs7YTs7Ozs7YTthLE87WTs7O2E7Ozs7Ozs7O2dCOzs7Ozs7aUI7Ozs7Ozs7OztnQjs7O2EsTztZOzs7YTs7Ozs7Ozs7Z0I7Ozs7OztpQjs7Ozs7YSxPO1k7O2E7OztjOzs7aUI7Ozs7aUI7Ozs7Ozs7aUI7Ozs7aUI7OzthLE87WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7Ozs7O21DOzs7Ozs7bUI7Ozs7OzttQjs7OztRLHNCO1E7UyxPO1E7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOztpQzs7ZTs7Z0IsZTtlLE87O3dDLG9CLG9COzs7ZTs7Z0IsTTtnQixVOzs7aUM7O2lDOztpQzs7aUM7O2lDOztpQzs7a0M7O21DO3lDOztXOztRO1M7VztTLE07UyxNOzs7Yzs7UyxNO1MsTTtTLE07O1MsTTs7Uzs7WTs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTztPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CLE8sOEI7Rzs7STtJLE8sd0MsZTtHOztJLE87OztjO2M7ZTs7Z0I7Ozs7YzthOztHOztJLFU7SSxPO0c7O0k7STtLO0ssTztJOztLO0s7SyxPO0k7O0s7Ozs7O1M7O1UsWTtVLG9CO1M7VTtXLE87Vzs7Ozs7Ozs7O1M7Ozs7O1U7Ozs7VTs7Ozs7Uzs7Ozs7O2E7OztZOzs7Ozs0Qjs7MkI7O1M7OztVO1UsTTtTOzs7SztLLE87STs7SyxjO0s7SyxPO0k7O0ssa0I7Ozs7Ozs7O1k7VztRO1M7MkMscUI7Ozs7UTs7OzRCO1E7O3dCOzs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0M7OztJO0k7OztPO08sTzs7O087OztVOzs2QixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPO3VDLE87Ozs7TyxPO2U7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztVOztJO0c7O0k7STs7OzZCLFc7Ozs7USxzQztROzs7Ozs7Szs7Rzs7O0ksZ0I7OztJLFk7Ozs7Ozs7Tzs7O1E7OztPOzs7OztLLFk7SztLO0k7STtJO0c7O0k7O3lCLFc7O3lCOzt1RDs7eUI7OzJCLFc7OzJCLFc7OztPLFc7O0c7O0k7STtHOztJLFc7SSxPO0c7O0ksbUIsTztJLE87Rzs7STtLLE07SyxROzs7Rzs7STtLLE07SyxRO0ssTztJLE87O0c7O0ksSSxNLG1DOzs7Ozs7bUI7OztPOzs7USxPOzZCOzs7cUM7O087OztRLE87K0I7Ozt3Qzs7O3NDOztxQzs7Tzs7USxPO21COzs7c0M7O3FDOzs7Ozs7Vzs7O2M7YyxPO2E7Ozs7Ozs7O1c7OztjO2MsTzthOzs7O3dDOzs7O0ksTztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOzs7SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztLLFc7Szs7UTs7O1c7Ozs7WSxPO1ksTztXLFc7VTs7Szs7UTs7eUI7O0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLO0s7O1E7O3lCOztJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7VzthOzs7Z0I7Z0IsVztlOzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2dCOzs7aUIsTztnQjtlOzs7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7OztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7dUI7O1M7Ozs7O1UsTztVLFU7Ozs7Ozs7Ozs7OEI7OztjOzs7ZSxPO2UsTzs4Qjs7Ozs7Ozs7Ozs7OztRO1M7Vzs7O2M7Ozs7ZTs7O2dCOzs7YztlLFE7ZSxPO2UsZ0I7ZTtpQjs7K0IseUI7O2U7YzthOzs7OztROzs7UztXOzs7YztjLFc7O2Msc0I7YTs7O29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzJCOzs7UTs7O1M7Vzs7O2M7aUM7O2Msb0I7YTs7O1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87MkI7Ozs7UTs7OzttQjs7O1c7O1ksTzttQjs7O1c7O1ksTzttQjs7d0I7Ozs7O1E7OztTLE87Ozs7UTs7O1MsTzs7Ozs7Ozs7WTs7O2U7OztnQixPO2U7Yzs7OztROzs7O1MsTzs2Qjs7O1E7OztTLE87cUI7OzswQzs7OzJDOzs7dUM7Ozs7cUI7OztROzs7O1M7UztrQzs7O1MsUTtTLE87UyxTO1MsUzs7OztROztTO1MsTzs7Ozs7cUI7OztROzs7UyxPO3FCOztJLFc7SSxPOzs7Yzs7OztlLFE7ZSxVO2M7Ozs7b0M7OztpQjs7O2tCLE87a0IsTzs7K0I7OztpQjs7a0IsTztvQzs7Ozs7OEI7O2MsTzs7Ozs7Rzs7STs7SyxXO0ssVztLO0k7Rzs7STs7Tzs7O1U7VSxjO1M7O0k7Rzs7STtLLE07SyxRO0s7O0ssTztLLE87SSxPOztHOztJLGtCLE87SSxPO0c7O0ksSSxNLG1DOzs7b0M7O087OztRLE87NkI7OztPOztRLE87bUI7Ozt3Qzs7O3NDOztxQzs7cUM7O087O1EsTzttQjs7O3NDOzt3Qzs7O3NDOzt3Qzs7O087O1EsTztvQjs7O087O1EsTztvQjs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0s7SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SSxPO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtLLE07SyxRO0ssTztLO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Rzs7STtJLHNCO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZOztJLGlCOzs7STtLLE07SyxRO0s7Ozs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxPO21COzs7d0M7Ozs7SSxPO0c7OztJOztPLG9CLE07Tzs7TyxvQjtPOztPLG1CLFE7Tzs7TyxzQixNO087O08sc0I7Tzs7TyxxQixRO087Ozs7STtLLE07SyxRO0s7OztLLE87Ozs7Ozs7cUM7O087OztRLE07Ozs7Tzs7O1EsTTttQjs7OzBDOzs7OztRLE07Tzs7USxNO21COzs4Qzs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7TyxNOzt3Qzs7O087Ozs7USxNOzZCOzs7Tzs7O1E7VTs7O2E7YSxXOzthLHNCO1k7OzttQjs7O087Ozs7USxNO1EsTTs2Qjs7Ozs7OztTOzs7VSxNO1UsTTs7Ozs7O1MsTTtROztTLE07bUI7Ozs7O087OztRLE07bUI7O0ksTztHOztJO0ssTTtLLFE7Szs7O087OztRLE07USxNOzs7O3NDOztPOzs7O1EsTTswQjs7O087OztRLE07bUI7O0ksTztHOztJOztLLE07SyxNO0ksVztHOztJO0ssTTtLLFE7Szs7O3FDOztPOzs7Ozs7USxNO3VCOzs7Tzs7Ozs7O1EsTTs7a0I7OztPOzs7O1EsTTt1Qjs7OztJLE87Rzs7STtLLE07SyxRO0s7Ozs7Ozs7O1E7Ozs7UyxNOzJCOzs7UTs7UyxNO29COzs7UTs7O1MsTTtTLE07Ozs7UTs7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7Ozs7O29COzs7UTs7OztTLE07b0I7OztROzs7UztXOzt5QixPLGtDOzs0Qjs7O3dDOzs7Ozs7Z0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7Ozs7Ozs7Ozs7Ozs7O3lDOzs7OztLO3lEO0s7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7O1E7VTs7d0IsTyxrQzs7d0I7Ozs7Ozs7cUM7Ozs7O3dDOzs7Ozs7Ozt3Qzs7UTs7O1M7O3lDOzs7O087OztRLE07dUI7OztPOztRO21COzs7O0ksTztHOzZCLFM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLE87Ozs7Ozs7MkI7OzhCLE87O2U7ZTs7Ozs7Rzs7cUIsTyx5QztJLDBCO0k7OztPLE87OztpQjs7OztpQjs7Ozs7TyxPOztPOzs7O1E7O08sTzs7O08sTzs7Rzs7O0ksTzs7O0k7Ozs7SyxPO0ksTzs7OztJLFc7SSxTO0k7SyxPO0ssTztLLE87SSxPO0c7O0k7Ozs7USxnQjtvQixXOzs7OztRLFc7O1Esa0M7Ozs7O1Esa0I7O1MsVzs7OztHOztJLE87K0MscUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0I7SSxvQixTO0k7Rzs7Ozs7Ozs7OztVO1csTztXO3dCOzs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7Uzs7Ozs7WTs7YTs7OzRCOztZOztZOzs7Ozs7OztZOzs7YTs7Ozs7O2EsVTs7Ozs7Ozs7O2E7YyxXOzs7YyxjOzs7WTs7Ozs7Ozs7Ozs7Ozs7OztxQjtlOzs7Ozs7Ozs7OztvQjtjOzs7Ozs7OztlOztnQjs7O2dCOzs7Z0I7Ozs7ZTs7Ozs7O2E7O1k7YTs7O2E7OzthOzs7O1k7Ozs7Ozs7O1UsRyxnQztVLFc7VTs7O1c7WSxPO1ksTztZLE87bUI7VTs7UyxJLFc7Ozs7Ozs7WTs7Ozs7UztzRDtTOztVOzs7Ozs7Ozs7Ozs7d0I7O1M7OztPOztRLE87USxPO1E7OzJCO087UTtRO087OztLO007TTtNO0s7Ozs7STs7TTs7Ozs7TyxTO087Ozs7OztNO087OztNOzs7c0I7STtHOztJOzs7TSxXO0ssb0IsTztLLFc7O2dCO0k7O0ssUTtLLE87SSxXO0c7OztJOztLLDRDOztJLGE7STtHOztJO0ssTztLLFU7O087OztXOzs7WTs7VztXO1U7Ozs7Ozs7Ozs7OztLOzs7O1E7Ozs7O007Tzs7O08sTTs7Ozs7Ozs7STtLO087OztVOzs7a0I7VztVO1M7Ozs7Ozs7Ozs7O0s7OztNOzs7Ozs7O08sRzs7Ozs7WTs7Ozs7Ozs7Ozs7SyxJLFU7Ozs7Ozs7Ozs7Szs7d0I7O3dCOzt3Qjs7OztLOzs7OztJO0ssTztLOzs7Ozs7Ozs7OztLOzs7Ozs7O2tCOzs7TTs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztVO1k7OzhCLHFCOztVOzs7Ozs7UztVLGM7Ozs7Ozs7Ozs7Uzs7OztVOzs7VTtVLGM7Ozs7Ozs7Ozs7Uzs7OztVO1UsTztVO1k7Ozs7Ozs7UztVO1U7WTs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1UsZTtVLE87Uzs7Ozs7Ozs7UztTLDBCO1M7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLFk7O2E7Ozs7VTs7VzthO1c7Ozs7Ozs7OzthLE07Ozs7ZTs7NkIsdUI7Ozs7Ozs7Ozs7OztTO1U7Ozs7Ozs7Ozs7Uzs7OztVLE87Uzs7Ozs7Ozs7UztVLFU7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OztTOzs7O1M7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFU7VSxXOzs7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFE7VSxTOztVO1U7WTs7Ozs7Ozs7SyxNOzs7STtLOztNOzs7O0k7Ozs7STtLOzs7Ozs7Ozs7Ozs7O0ssTztLLE87OztJO1k7Ozs7Ozs7STtJOzs7SztNOztJOzs7Ozs7Tzs7O0s7Ozs7Ozs7OztLOzs7OzBDOztJO0c7O0k7STs7Ozs7Ozs7SyxzQjtLOztHO0c7STtJOztJO0s7Szs7O0ksTzthLDRDOztHOztJO3VCOztJO0c7Ozs7Ozs7Ozs7O0k7Ozs7SztpQixNOztLOzs7TTtNLE07Szs7STtLLFE7SyxTO0s7SSxNOztHOzs7O0k7O0s7OztTOzs7Ozs7O3lDO0ksd0I7SSxNO0c7RyxJOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STtJOzs7Ozs7O1U7Ozs7VyxRO1c7Ozs7VTs7Ozs7UTs7OztTOzs7Ozs7Ozs7VTs7O1csTTtXLE07VTs7OztLOztHOzs7STtLO007O0s7STtJOztLLFM7SyxTO0s7SztJLE87O0c7STs7Ozs7OztJOztPOztPOztPOzs7UTtRO3FDLFk7Ozs7Uzs7O1UsTTtVLE07UyxHLHdDOztrQjs7TztlOztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Yzs7O2lCO2tCLFE7a0IsUTtpQixPO2dCOztZLFE7Vzs7Ozs7O1M7OztVLFE7VSxRO1U7VSxNO1UsTTtTOzs7Ozs7Ozs7OztLOztJO0ssTTtLLE07STtHOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7O0s7O0k7O0ssUztLLFc7SztLO0ksTztHOztJOzs7Szs7O0ksTTtHOztJOzZDOztJLE07Rzs7STs7OzZDOztJLE07Rzs7STs7dUI7OztLLE07O0ksTTs7Rzs7O0k7Ozs7O007OztLO00sTTs7O2dEOztJLE07Rzs7STs7SyxNOzs7STtHOztJO3VCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TTs7O087Ozs7cUI7OztRLE07Tzs7O1EsbUI7Ozs7OztJLE07Rzs7SSxZLE87Ozs7O08sTzs7OztPLE87Ozs7Ozs7OztPLG9DO08sTzs7O08sc0M7TyxPOzs7OztJO0ssTztJOzs7STs7OztRLGdDO1EsTzs7O1Esb0M7USxPOzs7SSxPOzs7SSxZOztnQjs7SSxPO0c7O0ksYztJO007eUMsOEI7SztNO00sTztLLE87O0ksVztJLE87Rzs7SSxjO0k7TTt5Qyw4QjtLO007TSxPO0ssTzs7SSxXO0ksTztHOztJLDhCOzs7TyxzQzs7Ozs7Ozs7OzsyQjs7Ozs7OztPOzs7UTs7YTs7Ozs7ZSxNOztHOztJOzs7OzttQjs7O007OztPOztZOzs7Ozs7SyxvQjs7Ozs7O0k7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7OztJO0ksTztHOztJOzs7SyxPOztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7VyxxQzs7Ozs7Ozs7OztXLG9DOzs7Ozs7Ozs7UyxlLFU7dUIsTTs7Ozs7TSxNOzs7Ozs0QixPOzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPOztjO0c7OztJO0k7OztJLFc7SSxPO0c7O0ksTztHO2lDLG1COztJOzs7OztLOztJO0c7O0k7Z0I7O0k7Rzs7SSxxQyxPOztJLE87OztJO2dCLE87O0ksK0M7STs7OztLO0ksTztHOztJO2dCLE87O0k7Rzs7STtnQixPOzs7Szs7O007TSxPO0ssTzs7Ozs7O00sTzs7STtHOztJOztLOztNOztNO0ssTzs7OztPO087O1E7O087Ozs7UTtPLE87O08sTztlLE87O0c7O0k7Ozs7UTtROztRLE87Z0IsTzs7O0kscUIsTyxnQztHOztJO3dDO0k7Rzs7O0s7OztNLE87TSxNO007TSxPO0ssTzs7Ozs7Ozs7O0k7SztPLDJDO0ssUyxXO0ksTztHOzs7Szs7UTs7Ozs7SztJO0k7Rzs7STtLLGE7Ozs7TTs7Ozs7OzthOzs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7OztRLE87O1EsTTs7SSxPO0c7O0k7OztLO0s7Tzs7Ozt5QixtRDs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7O007UTs7OzswQixPLDRDO0s7YTs7Ozs7aUI7OztLOztNOzs7O0k7O0s7SSxPOzs4Qix5Qzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7STtLLE87SztPOzs7MEIsTyxzQjtJLE87Rzs7STs7Tzs7UTtROztRLE87USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7O1EsSztRLEs7UTtRLE87TyxPOzs7Ozs7Ozs7OztHOztJO0ssUTs7OztLLE87SyxPO0ksTzs7Ozs7Ozs7Yzs7O0c7O0k7OztLLE87O0ssTztJLE87Ozs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7Ozs7OztHOztJO0ssTztJLGlCLE87SSxXO0c7OztJOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztLO0s7STtLLE87Ozs7STs7Rzs7STs7Ozs7STs7TyxxQjttQjs7TyxXOzs7Tzs7Ozs7UTs7O087USxPOzs7O087OztPOztRLE87USxVO087OztPO1EsTzs7OztPOzs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87OztJLE87Ozs7O2M7O2U7ZTtnQixVOzs7Z0I7O2dCLE87Z0IsTztnQixPO2UsTzs7O2UsTTs7Yzs7O2lCOztpQjs7a0I7Ozs7O3VCOzs7d0IsTzs7d0IsTzt1QixPOzs7O2tCO2tCOzs7OztxQixNOzs7b0I7Ozs7bUQ7Ozs7b0I7O3FCLGU7b0I7Ozs7Ozs7O29COztxQixlO29COzs7Ozs7OztvQjs7Ozs7Ozs7OztpQjs7Ozs7Ozs7YTtHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO08sTzs7Ozs7K0I7O0c7O0k7O08sc0I7TyxPOzs2Qjs7TyxnQzs7Ozs7O1U7O1c7MEI7Ozs7MEM7O087TyxPOzs7Z0Q7Tzs7UTtRO1E7TyxPOzs7OzsrQjs7Rzs7O0k7SSxPOzs7OztjOztpQjs7a0I7b0I7Ozs7Ozs7Ozs7Ozs7OztvQjs7cUI7cUI7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0I7NkI7OztpQixtQjs7a0IsTTs7Ozs2Qjs7YyxhOzJCLHNCOztlLE87Ozt5QyxPLHNCOzs7YztjO2E7OztJLE87OztjO2U7O2dCO2dCLFc7ZSxXOzs4Qzs7Ozs7OztjO3NCOzs7Ozt5Qjs7O29DO3lCOzs7Ozs7NkIsaUI7NkIsTzs7Ozs0Qix1Qzs7OztxQzs0Qjs2Qjs2Qjs2QjsrQjs7Ozs7Z0Q7NEIsTzs7Ozt5Qjs7NEI7OzhDLGlDOzt5QjswQjs7OzhCOytCLE87OytCOztnQyxPOytCLE87OzhCOzsrQixPOzhCLE87OzZCOzJCOzs4QixlOzs4Qjs2QjsyQjsyQjsyQjsyQixNOzBCLE87Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7O3lCLE87d0I7YTtHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0k7SSxPO0c7RztJO0k7STs7O0k7TTs7d0Isa0IseUI7OztJLE07RztHO0k7Ozs7Ozs7STs7O0c7O0k7Rzs7STtLLE07O0s7O0c7O0ksNEIsSztJLE87OztjOzs7YTs7Rzs7SSxPOzs7YyxxQjthOztHOztJLE87OztjLFk7OztrQjtnQjtnQjs7O2M7YTs7O0c7O0k7TTs7d0Isa0IsTyw0Qjs7STs7TztTOzs7WTs7O2EsSTthLFE7OztnQjtjO2M7OztZLE07O1c7O0k7Szs7TTtRLDJDO0s7O0ksTztHOztJO0k7TTs7O1MsWTs7O1UsTzs7UyxNO1E7O0k7Rzs7O0k7Ozs7OztJO0s7TSxJO007O1MsTztRO1k7Ozs7Ozs7SyxXO0ssTzs7Rzs7STtLLE07O0s7O0c7O0ksZTtJO0ssTTs7Ozs7SSxTO0k7STtHOztJLGlEO0k7OztPOzs7OztPO1EsSSxJLDZCLE87USxJLG1DLEk7b0I7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO1U7VztZOztlOzs2QjtjO1k7YztXLE07Ozs7O3dCOzs7VSxTOztVOzs7Ozs7TztNOzs7STtLLE87OztlO2UsSSxXLG9DOzs7Ozs7O2dCLE07OztjO29COztHO0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087Ozs7aUMscUM7O0ksUTs7STtLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLO0sscUI7O0c7O0ksTzs7Ozs7YyxtQjs7ZTtlOzs7ZSxNOzs7ZSxnQjtlLE07OztjO2UsTTtjO2M7YzthO0c7RztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7OztjO2E7Ozs7O0s7STtJOzs7O00sTTtLO0s7Ozs7OztRLGdCO1EsTTs7TyxJLEk7Ozs7UTtROzs7Tzs7Tzs7OztRO1E7UTtRO1U7YTs7USxPO087OztPLE87USxNO087UTtVOzswQjs7UTs7VywyQyxlO1EsTztPOztPOzs7USxVOzs7OztROzs7OzthLDRDLFM7Ozs7OztPO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxTO1E7Ozs7O2dCOzs7O08sVztPOzs7VTtVO1csVztXOzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxTO087O087OztRLFk7OztXO1ksVztZLEs7YSxJOzs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Ozs7Ozs7WTthOztjO2MsUTs7Ozs7O2E7YyxJO2MsVTs7Ozs7O2tCLE07Ozs7O2lCLHFCLFU7Ozs7Ozs7a0IsRzttQixNOzs7a0I7bUIsYzs7Ozs7O29CLE07OzttQjs7Ozs7O2EsTTs7O1k7OzthO2U7Ozs7O2tCOzs7OzsyQjtpQjthO1k7OztXOztRLGdCO1E7VTs7K0IsMEI7OztRLG1DO1E7VTs7O2E7YSxPO1k7OztPLG1DOztPOzs7USxVOzs7UTtRO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxPO1EsVTs7O1EsTztPOzs7VTtVLEksVyx3Qzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxPO1EsVTs7a0M7UTtROztPLE07OztPO1E7UztTO1EsSTs7OztTLGtCLFE7UyxNOzs7Ozs7OztRO1M7Vzs7O2M7YztjO2MsSTs7Ozs7ZSxrQixRO2UsTTs7O2M7YTs7YztjLE87YTs7O1MsTTtTLEs7UyxVOzs7Ozs7YTs7Ozs7O2E7Ozs7Ozs7Tzs7Tzs7OztRO1E7O1c7WTtZO2tCO1csTztVO1EsVTs7O1csUTtXO1k7YSxROzs7WTthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTtRO1E7UTtVOzs7YTs7YztjOzs7O2U7O2dCO2dCO2dCLFU7Ozs7Ozs7Ozs7OztlOzZCOztlO2dCLE87Z0IsVTs7Ozs7O29CLE07Ozs7OzttQixHO29CLFM7b0I7Ozt1Qjs7O3dCOzt5QixLOzBCLFk7O3FEOzs7MEIsTTs7Ozs7O3VCO3NCOzs7Ozs7O2UsTTs7Ozs7Yzs7aUI7Ozs7O29CLE87Ozs4Qjs7O21COzs7ZTs7Z0IsSztpQjtrQjtvQjtxRCxjO3NCOzs7OzsyQjs7O2dCLE07OztvQzs7d0I7O2M7OzthOzs7UTtVOztrQyxpQjs7O1EsVztPOztROzs7VyxlOztZLE07O1c7VTs7O087Ozs7VyxPOztVO1E7UTtVO2E7OztPLEksNEIsTztPOztPOzs7USxTLHdDLFk7UTtVOzs7NkIsb0IsNEI7O2E7K0IsOEM7YTs7MEI7YTs7Z0I7O2tDLG1DOzthO1k7OztRO1E7UTtVOzt3QixPLCtCOztRLE87UTtPO087O087Ozs7UTtRO1U7OzthO2EsRztjLE07O2EsTztZOztRLE07UTs7NEIsTyx3QztRO1U7OzthO2E7WTs7UTs7O2E7O1EsUztROzs7Vzs7O2M7YzthOztRLFE7Tzs7Tzs7O1EsVTs7O1E7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7TTtROzs7Vyx3QixROzs7WSxjOztXO1U7O007O1M7SztLLE87O0ksTztHOzJDO0c7O0k7SSxPO0c7O0k7STs7SztJO0k7STtHOztJOztJO0s7Tzs7OztVO1U7VTtTO0s7STtJOzs7O0ssTztLLE87STtHOztJO0k7SztPOzs7MEIsb0IsNEI7O1U7VTtVO1U7Uzs7O0ksZ0I7Rzs7STs7Szs7O00sUyx3QyxZO007UTs7OzJCLG9CLDRCOztXO1c7WTtZO1c7VTs7O0s7Szs7SSxPOzs7O2M7YzthO0c7O0ksTztHOztJOztlO2U7Ozs7TyxPOzs7Ozs7OztpQixPO2dCOztPLGtCLE07TyxPOztPOzs7O1EsTTtPLE87OztPLHVCLE07TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7Tzs7USxNOzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOzs7UTs7VyxPO1U7TyxPOzs7OztpQjtpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7TyxxQixPO087TyxZOzs7OztTLE87Ozs7bUIsVztrQjs7O087O087OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7USxPO087TyxHO1E7ZTtROztRLFc7UTs7TyxPOztPLG9CLE87TyxPOzs7TyxPOzs7OztpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7O08sTzs7Ozs7aUIsWSxPO2lCOztrQixPO2lCLE87Z0I7OztPLHFCLE87TyxPOzs7Rzs7O007O087ZTs7OztvQzs7O3FDOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsa0M7O0k7O3FCLE87O3VCLE87O3FCLE87O3FCLE87O3VCLE87O3VCLE87K0IsTzs7Rzs7STs7Szs7O007O0s7TSxPO0s7O1EsTzs7USxPOztRLE87Ozs7O0ssTzs7O08sb0IsTztPLE87OztPLE87OztPLG9CO08sTzs7O08sTzs7OztxQzs7Ozs7OztRLE87OztPOzs7O1E7Ozs7O1MsTzs7Ozs7Ozs7Ozs7USxPOzs7OztzQzs7OztRLE87Ozs7O3NDOztPO1E7VTs7d0IsbUM7O1EsTztPLE87Ozs7OztxQzs7OztxQixPOztPLE87O087O1E7VTs7NEIsK0M7O08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksTzs7Ozs7OztnQzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7STs7O08sTztNOztJLE87Rzs7STtXO0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7STs7c0IsaUQ7O0ksTyw0QyxhO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7UTtVOzs0QixvQixXOztRO1U7OzRCLG9CLFc7Ozs7OzswQjs7Ozs7Ozs7Ozs7Ozs7OztVO1csTTtXLFE7bUY7VSxNO1M7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozt5Qjs7Tzs7eUIsTzs7K0I7aUM7O0c7O3NCLHlDO0k7Ozs7OztROztTOzs7Ozs7OztROztTO1c7OztjO2M7YTs7Ozs7UTs7OztTOzs7OztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7Ozs7Ozs7SSxtQjs7O0k7RztHOzs7Ozs7O0ksTTtJO21COztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7UTs7O1c7a0Q7VztVOzs7Ozs0Qjs7O0ksTzs7NEI7O0c7O0ksTzs7NkIsd0IsWTs7Rzs7SSxXO2lCO0c7O0k7OztLOztJO0c7O0k7Ozs7O1EsTzs7Ozs7O1EsZSxPO1EsTywyQjs7OztJLE87Rzs7STtJOzs7Ozs7USxJLHVCOzs7Ozs7USxJLG9COzs7Ozs7USxJLG9COzs7Ozs7OztPLEksdUI7Ozs7Ozs7OztPLFc7TyxXOztNOzs7TztPOzs7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUI7Ozs7Ozs7Ozs7Ozs7O2lCLG1DO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7MEI7O0s7OztPLGtCLE87O087OzttQjtLO0k7O0s7Szs7O1E7Ozs7O1M7USxXOzs7Ozs7c0I7TTs7STtJOzswQiwyQztHOzs7O0k7Ozs7Ozs7OztJO0s7O087O1U7SyxPO0ssUTt5RTtJLE07Rzs7STs7Ozs7Ozs7Ozs7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7OztxRDs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07UztRLE87OztrQjtrQjttQjs7c0I7Ozt5Qjs7d0I7Ozs7Ozs7OztrQjtpQjs7O0k7Rzs7SSxZLGtDOzs7Ozs7O2tCO00sNEM7Ozs7Ozs7VTs7VztXO2E7OztnQixPOztzQywrQjs7OztlOzs7Vzs7Ozs7O2tCOztNOzs7STtHOztJLFM7WSxPO0k7Ozs7Szs7O0k7Rzs7STs7OztROztTOzs7UTs7UTs7OztTOzs7UTs7Ozs7VSxNOzs7OztROztROzs7Uzs7Ozs7UTs7O21COzs7c0I7c0I7O2dDOztzQjtxQjs7Ozs7Ozs7UTs7Uzs7O1M7UTs7Z0IsTzs7UTs7Z0IsTzs7STtHOzJCLDRCO3lDLDRCOzs7SztLO007TyxPO08sTzs7Tzs7OztROzs7OztNLE87O2U7Ozs7OztJO0k7Rzs7SSxZOzs7SyxNOztJLDhCLDBCO0k7Rzs7O0s7SztvQjs7Ozs7Ozs7TTtPO087ZTs7Ozs7O0k7STtHOzs7SyxVO0s7STs7SyxZOztLOzs7OztLLE87OztlO2U7Yzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7OztNO0s7TTs7Ozs7Szs7OztJO0ssWTtLO087SztPO1M7OztZO1ksa0I7Vzs7STtHO0c7STs7STtNOzs7UyxtQjtTLHVDOztVO1csTTs7eUIsVzs7VTtTOztxQixXOztTO1E7Ozs7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7O1U7WTs7O2Usa0I7bUY7ZSxNO2M7O1UsTTtTLGdCO1UsVztVLE87OztvQjs7O3FCLFE7Ozs7cUIsTzs7b0I7bUI7OztTLFc7UyxXO1MsVztTLE87OzttQjs7O2lDOzs7NkI7a0I7Ozs7O007OztNLE07O0k7Rzs7STs7Ozs7O0ssTztJO2dCOzs7Ozs7Rzs7STtLLE07O21CO0ksbUI7STtHOztJLFk7O0s7TTtPLE87TyxVOzs7Tzs7cUIsbUI7Ozs7O007Ozs7OztNLGM7Ozs7VTs7VzthOzs7Z0IsVztlOztVOzs7VTtnQjs7O2EseUMsYTs7VTtVLE87O2tDOzs7TTs7O0k7Rzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7O0ssUTs7Ozs7O08scUIsVTs7cUI7Ozs7bUI7O0k7SyxpQjtLO087OztVLFc7Uzs7SztPOzt5Qiw4Qjs7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7TTtROzs7Vzs2RTtXLE87VTs7TTtNLFM7SyxnQixNO0s7Yzs7K0I7OztJO0c7O0k7SztPOzt5QixrQixPLHVCOzs7STtLLEs7O00sZ0I7O0ssVTs7O0c7O0k7STs7Ozs7Ozs7Ozs7OztVLG9COzs7Ozs7VTttQjs7cUMsa0IsUzs7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTtPLE87OztpQjs7O2tCOzRCO2lCO2lCLHdCO2dCOzs7Ozs7OztPOzs7O1E7TyxTO087Ozs7OztRLG9COztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztROzs7Ozs7Rzs7SSxVO2E7STs7O0ssTztLLE87O0s7Syx3QztLO007OztTO1MsTztnRCxrQjtRO007Ozs7Ozs7O1M7O1k7OztlO2UscUI7ZTtnQjtnQjs7eUI7Z0IsTTtlLE87O3VDOztjOztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksTzs7NEI7O0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNOzs7VTs7OztZOzs7VTtTOztNOzs7OztNOzs7O087TSxTO007Ozs7TTtPO08sVTs7O087TyxPO087Ozs7O0c7O0k7SyxXO0ssTzs7O2U7ZTtJOzs7SyxPO0ksTzthOzs7Z0I7aUI7O2tCO2lCLE87O3dDLHFCOzs7Z0I7OztnQixPOzs7MEIsVzswQixPO3lCOztlOztHOztJO0ksd0M7STtLO0s7OztLOzs7O1M7Ozs7VztZLE07Vyx1Qjs7O2EsTTs7Ozs7WTthO29COzs7Ozs7O1UsVzs7UztTOzs7Vyx1Qjs7Ozs7O2dCO2lCOzs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COztzQzs7Ozs7a0I7bUI7cUI7Ozt3QixrQjs7OzhEOzt3QixNOzt1Qjs7bUIsTzs7Ozs7Ozs7eUM7a0I7Ozs7Ozs7bUI7O29COztzQixNO3FCLFM7cUIsSzs7OztvQixJOzs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7O3dCO3dCO29DO3VCOztzQzs7Ozs7Ozs7O3dCOzs7OzBCLE87Ozt3QixNOzt1QjttQyxlLDRCOzttQyxjOzs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsa0I7eUY7cUIsTTs7b0I7Ozs7bUI7bUI7a0I7Z0IsTTtnQixPO2dCO2tCOzs7cUI7cUIsRyx3QztxQixZO21EOzs7c0I7OztxQjtvQjs7Ozs7Ozs7bUI7OztzQjtxQjs7Ozs7ZSxHOzs7O2dCO2lCLEs7aUIsWTs7Ozs7Ozs7ZTtnQjtrQjs7O3FCLGtCO3lGO3FCLE07O29COzs7ZTtnQixLO2dCOzs7Ozs7bUM7Ozs7Ozs7Ozs7NkIsTzs7O1MsTzs7aUMsc0I7O1E7TTtROzsrQix1Qjs7TSxPO00sTztLLE87Yzs7O2lCLFk7Ozs7O2lCLHFCO2lCO2tCO2tCOzs7O3VCO2tCLE07aUIsTzs7eUM7O2dCOzs7STtLO0ssTztJLE87OzJCLHNCOztHOztJO0ksTzthOzs7Z0IsMEM7Z0IsTTtlOztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VSxZO1U7OztXO1c7VztVO1M7O007Tzs7TztPOzs7UTtTLE87Ozs7OztRLHlDOzs7UywyQixNOztjO1U7VyxROzs7Ozs7VzthOzs7Z0I7Ozs7aUIsUTs7Ozs0QjtnQjtlOzs7OztXO1c7O1c7O3lCLDBCO1ksVztZLE87Vzs7Ozs7Ozs7Tzs7Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix5Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OztRLEksd0MsaUI7USxPLDJDLGlCO2U7Ozs7O1UsNEMsUztNLE87OztnQixpQzs7Ozs7aUI7Ozs7Ozs7OztrQixNOzs7aUI7OztrQjtrQjtrQjtrQjtrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Z0M7Ozs7Ozs7OztvQixXOzsrQjs7O2tCOztpQjs7Z0IsTTtlOzs7OztLOzs7TSxPO00sTzs7TTtROzs7Vzs7WSxNO1c7O1ksTztZLE87NEQ7VztVOztPO1E7USxNOzs7OztPLEkseUI7Ozs7Ozs7OztRLEkseUI7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCLG9DO2dCLFc7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7VTs7Ozs7Ozs7Yzs7ZTs7O2M7Ozs7Ozs7Ozs7Yzs7ZSxPO2UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztHOztJO0k7O007Ozs7O087TSxXOzs7OztLOztHOzs7OztvQjs7O007UTt3QyxPLHdCOztXOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQixlOzs7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7b0IsUzs2Qjs7Ozs7Ozs7Ozs7OztxQjs7cUI7b0I7b0I7bUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLHFCLE87bUI7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLG9CO2dCOzs7Ozs7Ozs7UTs7Ozs7O1E7UyxPOztROztPOzs7O087USxPOztPOzs7SyxNOztHO3NCOztJO0s7SztNOzs7Ozs7Tzs7Ozs7Ozs7Szs7Ozs7SyxrQixPOztLOztHOztJO0s7Ozs7O007Szs7STtHOztJOztNO3FDLDZCO0k7Rzs7STtLLFk7O0s7STtJO0s7Tzs7O1U7OztXLFE7OztXO1U7Uzs7Ozs7STtJO0c7O0k7STttQjs7OztNOzs7OztHOztJO0k7bUI7Ozs7TTs7Ozs7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7VSxPOzs7b0I7b0I7bUI7Ozs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7STtLLE87SztlLHlDLGE7SSxXOzs7aUI7Szs7Ozs7O007Szs7TTtPLE87Ozs7VzthOzs7O087Tzs0Qjs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTO1U7WTs7O2UsMEM7ZSxNO2M7O1U7VTs7O1UsSztXOzs7Ozs7Ozs7OztnQjs7OztROztzQixPLGtDOzs7Ozs7Ozs7TSxNOzs7O1U7O0c7NkIsMEI7O0ksYztJO0s7Szs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7VyxPOzs7cUI7Ozs7O29COzs7VyxvQztXLFc7Ozs7O1c7OztRLE8sd0MsZTs7Ozs7TTs7STtJO0c7O0ksSSw2Qjs7Szs7TSx5QjtNLG1CLFc7TSxROzs7TSxHO087UTtTLE07UyxNO1E7UTtTO1E7VTs7O2E7Ozs7Yzs7YTtZOztTO1EsSSxPOzs7Tzs7Ozs7Ozs7SyxZO007Ozs7O21CO0k7Szs7UTs7eUIsdUM7Ozs7O007OztTOztxQztZLDBCO1MsZTtTLE87UTs7OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O0s7TywyQztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjtTO1U7O1cscUIsTztXLE87OztxQixTOztvQjs7O1UsTztTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxNO1UsTztVLE07Z0I7VTs7O2U7O2dDLHNCOzs7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7SztPOzs7VTtVLE87Uzs7O0k7SztNO1E7OztXO1csZTtVOzs7TTtROzs7VztXLE87Ozs7O3FCLE87b0I7VTs7OztLO00sTTtNO1E7OztXOzs7O1ksVztXLE87VTs7O0ssRzs7O0k7OztPO08sTztNOzs7STtHOztJLFUsNEMsUztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SSxJLFcsMEM7Ozs7OztHOzs7SztLO007TSxHLDBDO00sYTttQjs7TTtPLDhCO08sUTs7Ozs7VSxxQjs7Ozs7O1UsTzs7O1UsZTtVO1c7WSxPO1k7Yzs7O2lCOzBCO2dCOzs7Vzs7Ozs7O1csTzs7bUM7Ozs7Ozs7Ozs7OztVLE07Ozs7VSxXO1U7OzthLGtCLFE7OztlOztnQixJO2UsTzs7dUM7Ozs7Ozs7OzthO1k7O1UsVzs7Ozs7OztVOztXLEk7VSxPOzs7b0I7b0I7bUI7OztNOztJO0k7Rzs7STtLLE07SyxNO0ksTztHO0csZ0I7O0k7OztLLG9CO0s7Tzs7O1U7Ozs7Vzt5QjtVO1M7O0s7SztJOzs7Tzs7OztPO007OztLOzs7USxLO1M7UyxLO1U7Vzs7O2M7YztlLEcsNEM7NEI7ZTtlLEcsbUM7ZSxZOzs7O21CLE07OzttQjtvQixVO29COzs7Ozs7O29CLFc7b0IsRztxQixNOzs7OztlLE87O2E7VTtXO1c7Vzs7OztpQzs7Ozs7UTtPOzs7Syx3QjtLOzs7UTtRO1E7UztTLFE7OztTLEs7UyxNO1E7Ozs7OztTLE07Ozs7Ozs7Tzs7O0s7TSxPO00sTTtNO1E7OztXLFU7VyxXO1U7O0s7TTtNOzs7UztTLEcsMkI7Ozs7O2U7UztROzs7TTtPOzs7VSxHLDBDO1UsZ0I7O1U7VztXLE87VzthOzs7Z0IsTzswQjs7ZTs7O1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1U7VyxNO1csVTt3QixPOzs7Ozs7Ozs7VTtVLE07Ozs7OztTO007O3dCLG1CLG1COzs7O0ksTzs7O2M7OztlO2U7ZSxZOzs7ZSxlOzs7YztlO2UsTTtjLGM7Ozs7O3FCO2UsTzs7YzthOzs7O0c7SSxZLHlDLGtCOzs7OztJLHFDLE87O0ksTzs7O2M7YzthOztHOzs7Ozs7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQyxROztLOztNLE07TSxNO0s7OztRO1E7UyxNO1EsaUM7O1M7VSxPO1UsUTs7OztXO1ksTTtZLE07a0I7Ozs7Ozs7OztRLFEsTTtRO087Ozs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7SztPO3dDLHFCO0ssYTs7Ozs7TSxPOzs7Z0I7Ozs7aUI7aUI7Z0I7ZTs7Ozs7STs7Ozs7O1M7O1U7WTs7O2U7ZTtjOzs7O3dDOzs7O1M7VzswQywwQjtVO1c7YTs0Qyx3QjtXLE07Ozt5Qzs7VTtXLE07VzthOzs7Z0IsVTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7VzthOzs7O2dCOzs7O1csVTs7VyxNO1U7OztXLE07aUI7Ozs7Ozs7SSwyQjtJLE87OztJLEksc0M7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7SyxVO0s7O2U7RztHO0ksTztHO0c7SSxPOzhDLG9CO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7Ozs7O0c7RztJOzs7Ozs7Ozs7Ozs7STs7O0k7O087d0M7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7STtLO087OztVOzs7Ozs7VTs7O1M7Ozs7O0s7TztJLE87OztjOzs7O2U7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxjOzs7Ozs7TztRO1EsTzs7Ozs7TTs7Szs7Rzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7STs7O0k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs4QixPLGlDOzs7OztLLGM7bUI7O0ssTzs7STtHOztHLGdDLGdCO0cseUIsUztHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0ssa0I7SyxRO3VCOztJLE07RztHOztJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7NEIsOEM7Rzs7STtNOztnQyxXLDhCOzs7O0k7STtLLFk7bUM7d0I7SyxzQzs7OztHOztJLFU7SSxPO2E7OztnQixZOzs7aUIsaUI7O2dCLE07ZTs7RztHOztJOzs7Ozs7STs7STtHOztJLE87OztjLEksbUI7YyxXO2E7OztHOzs7Ozs7O0k7OztJLEksVSxtQzs7Ozs7O0c7OztLO0s7TSxJLDZCLFU7O087O1EsTTtxQjs7O007Ozs7OztVO1UsTztTO00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7Ozs7YTtjOzs7a0IsbUIsUTs7OztvQixPOzs7b0Q7O2tCOztlLE07ZSxRO2UsUTtlLFU7Ozs7Ozs7Ozs7Ozs7dUM7Ozs7O1ksTTs7Ozs7Ozs7VyxPO1U7TyxPOzs7O0k7STtHOztJLE8sNEMsUztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssTzs7K0I7Ozs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7VSx1QixVOztVLE07Ozs7Ozs7Ozs7Ozs7Ozs7aUI7bUQsUzs7O0ssOEI7OztJLDhCOztHOztJLGU7SSxJLGdDOzs7MEI7OztHOztJO0ssTTtLLE07O0c7RyxrQyxnQjtHLHlCLHVCO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHLHFDLFM7Rzs7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztLO00sTTtNLE87TSxVOzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7OztPLGM7cUI7O087O007O0s7O0k7Rzs7STtJLE87Rzs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJOztPOztPOzs7Ozs7O0c7O0k7SSxvQjtHOytCLDBDOztJO0ksd0M7SSxZOzs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Ozs7VTs7OztnQzs7O1E7OztROzs7OztRLE07O0k7Rzs7SSxJLDJCLEk7Ozs7K0I7Ozs7Ozs7Ozs7TyxHOzs7Vzs7Ozs7bUI7Ozs7YSxvQzs7STtHOzRCLHVDO29DLHVDOztJOzs7Ozs7O08sRztRLEksVSw2Qzs7OzsrQjs7Ozs7O0k7Rzs7STs7Ozs7Ozs7UTs7O1M7UTs7Ozs7STtHOztJO0ksZ0Isb0M7SSxZOzs7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxPOzs7OztjLE87YTtHOzs7STs7Ozs7OztNOzs7UztrQixNOztROzs7O0s7TSxPO2U7O0ksWTtJLGE7Ozs7Ozs7OzsyQjs7OztJOzs7O0ssTztLLE87O0s7O1E7OzBCLE8sMkI7Ozs7Ozs7Ozs7Ozs7OztJOzs7STtrQjs7Ozs7O007Ozs7Ozs7Ozs7Ozs7O1E7O087Ozs7Ozs7O0c7O0k7O0ssTTtJOztLLEs7SyxVOzs7OztRLHFCLEk7ZTtTLE07Ozs7UTs7UyxVOzs7OztTLFc7UTtRLEc7UyxNOzs7OztLLE87O0ksTTtHOzs7O0ssSSxlLHVDOzs7O08sTTs7OztJLE87Rzs7STtLLE07STtJOzs7TztPLEc7USxNO3VCOztNOzs7Ozs7Ozs7SyxPOzs7OztlO2dCLFE7Z0IsTTtnQixPO2dCLE87ZTt1Qjs7Ozs7OztjOztJO0ssUztLO087OztVLG1CLFE7Ozs7OztVO1M7O0k7Rzs7STtLOztNLE87TSxNO0s7aUIsd0MsWTs7O0k7O0s7OztJOzs7O0k7O0ssTzs7O2U7O2dCO2tCOzs7O3FCO3FCO3NCO3dCO3VELFk7c0IsYztzQjtzQjs7OztzQjt3QjtzQjtzQixVOzs7c0IsRzt1Qjs7cUI7c0IsTztzQixZO3NCLGdCO3FCLE07O29COztxQjs7OztxQjtxQjtxQjtxQixzQixPLDhCO3FCO3FCO29COzs7OztlO2M7O0k7Szs7O0k7RztHO0k7TTs7O1M7UyxPO1E7O0k7TTs7O1M7Uzs7OztTO1UsaUI7VSxPO1MsTyxXO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Z0I7O0ksTztHOztJO0k7SyxHLDRDO2tCO0ssWTs7Ozs7UyxJLFc7Ozs7VyxNOzs7UztVLE87VSxPO1MsSTs7Ozs7VSxNOzs7UyxPOzs7bUI7Ozs7Ozs7aUI7Ozs7SyxPOzs7ZTs7OztHOztJLE87OztjOzs7ZSxTOzs7O2dCLE07O2U7Z0I7OzthOztHOzs7Ozs7OztNLG1CLFU7OztPO1E7UyxTO1MsTzs7Vzs7O1MsSTs7Ozs7OztTO1UsTztVLE87VSxPOztZOzs7OztTLE07Ozs7Ozs7UyxNOzs7O00sTTs7O0k7Ozs7O0s7SztNLEs7O1EsVztRLEc7OztTLGdCO3NCOzs7Ozs7O3FCOzs7Z0I7TyxjOzs7Ozs7WTs7YTsyQjs7Ozs7Ozs7O08sVztPO1EsWTtRLFU7O1E7OztTLGE7UTs7Uzs7MEI7OztRLEksVzs7Ozs7O21COzs7cUI7Ozs7O1E7Ozs7OztPLE87OztpQjs7Ozs7TyxNOzs7OztROzs7UyxVOzs7O3FDOzs7Ozs7OzswQjs7Ozs7O3dCOzs7OztnQjtnQjtNLE07O0k7O0s7STtJLFc7STtLOzs7TTtROzs7eUI7O0s7Ozs7OEIsTzs7O0c7O0k7SztLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPOzs7O2dDO21CO1E7O0ssTztJLE87Rzs7SSxrQjtJOztLO0s7TSxlO2lCO21CO00sWTs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VSxPOzs7b0I7Ozs7Ozs7O2tCOzs7O00sTzs7O2dCOzs7O0k7O0s7SztJO0ksTzs7O2M7ZSxROzs7OztjOzs7aUI7OztjO2E7O0c7O0k7Ozs7Ozs7SztLO00sTztNLE87TSxPO0ssSyxpQztLO007TSxPO00sTztLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLHFCLE87OztJO0c7O0ksTzs7O2M7YzthOzs7O0c7O0k7STtLLGM7SztPOzs7VTs7VztXLE87VyxhO1c7VztVOzs7Ozs7Ozs7Uzs7SyxlO0ssUTtLO087OztVO1csTztXLE87VSxXO1M7O0s7Tzs7O1U7O1c7YTs7O2dCOzs7OztXO1csYzs7OztZLEksZSxLO1k7Ozs7ZTs7Ozs7O2UsVztlO2UsTztjO1k7O1c7Ozs7O1csTzs7Ozs7cUI7cUIsTzs7OzsrQjsrQjtnQztnQztrQzs7b0Qsb0IsYzs7Z0M7a0M7OztxQzs7OztzQyxPO3FDOzZDOzs7b0M7O2dDLFU7Z0MsUTsrQjs7aUMsTTs7Ozs7Ozs7Z0M7OztvQyxNOzttQztpQzs7O2tDOztrQzs7O2lDOzs7bUM7Ozs7OztpRDs7O3FDOzs7Ozs7O3NDO3NEOzs7cUM7Ozs7O2tDOzs7O2lDOzs7bUM7bUQ7OztrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7a0M7b0M7a0M7b0M7Ozs7Ozs7Ozs7Ozs7Ozs7a0M7O21ELDZCOzs7O2lDOztnQztnQzs7O21DO21DLEc7b0MsTTs7O29DOztrQzs7Z0M7aUM7aUM7bUM7O2tELE8sa0M7OzBDO2lDLE07O2dDO2lDOztvQyxPOzs7Ozs4QzsrQyxPOytDOzs7Ozs7Ozs7Ozs7OytDOzs7K0MsTzsrQyxPOytDOzs7Ozs7Ozs7OytDOzs4Qzs2QzttQztpQztpQyxPO2lDLFU7Ozs7Ozs7Z0M7O2lDOzs7aUM7OztzQzs7O3lDOzswQyxRO3FEO3lDLG1CLFU7OzswQyxPOzt5Qzt3Qzs7OztpQztpQzs7Ozs7Z0M7O2lDO2lDLE07Ozs7OytCO2dDLFE7Ozs7Z0MsTztnQyxPO2dDOzs7Ozs7Ozs7Ozs7Ozs7OytCOzs7a0M7Ozs7bUM7bUM7a0M7bUMsVzttQzs7Ozs7OzttQyxNOzs7aUM7OytCO2dDO2lDO2tDLE87a0MsVztrQyxVOzs7OztrQyxNOzs7OztnQzs7K0I7Z0M7Ozs7Ozs7Ozs7Ozs7Z0M7O2dEOztnQzs7aUMsTzs2Qzs7Z0M7O2lDLE87NkM7K0I7OEI7b0I7O1U7VyxPO1c7YTs7VzthOzs7Z0I7Z0I7ZTs7VyxROzs7O1U7VyxTO1csVTtVOzs7YTs7OztjLE87Ozt3Qjt5QjswQixPOzBCOzRCOzs7O3lCOzs7OzswQixPOzs7O3VCOzs7O2EsTzs7O3VCO3VCO3dCO3lCLE87eUI7MkI7Ozs7d0I7Ozs7O3lCLE87Ozs7c0I7O1k7O1U7VTs7a0I7b0Q7Uzs7Ozs7O0s7Tzs7Z0MsbUIseUI7OztLO087OztVOzs7OztJOzs7Tzs7O1E7USxNO3lCO087UTtVOzs0QixPLDRCOztRO1EsTztPOzs7OztnQjs7O007OztLLG1COztLLE87STtJOzs7TztPOzs7Z0I7Ozs7TTs7STs7O08sdUM7Tzs7O2dCOzs7O007O0k7OztPOztRO1EsUTttQjs7TyxNOztNOzs7STs7O08sdUI7Tzs7O1U7VTtTOzs7Ozs7OztXLGtCOzs7WTs7O1csTTs7VyxvQjs7WTs7YTs7Z0IsTztlO2E7ZTtZOzs7ZTtlO2dCO2lCLE87aUIsUTs7Ozs7aUIsTTs7Ozs7OztnQjs7OztrQjs7O3FCO29COzs7Ozs7Ozs7O2tCOzs7O2dCLE07Ozs7Z0I7O2U7Yzs7OztXLE07OztxQjtPLHFCOztRLE07O087Ozs7STtLO007UTs7O1c7VztVOzs7TTtRLFc7TSxPLFc7TSxVLFc7Ozs7OztNLE07Ozs7TSxNOzs7OztLLE07O0k7STs7OztPOzs7O0k7O087OztVO1U7Ozs7Ozs7Ozs7O1M7OztJO0c7O0ksSSxLOzs7O007O087TyxTO08sVTs7OztPO1EsUztRLE07USxpQjs7OztPO1EsUTs7O00sSTs7Ozs7TyxNOzs7O087USxPO1EsTztPOzs7VSxXLG1CO1U7VztZLE87bUI7OztVLGM7Uzs7O007TyxpQjtPLG1CO087O1U7O087O1U7O2E7TyxNOzs7TyxNOzs7Tyx1Qjs7OztTOztVLFU7Ozs7OztXOztZLFM7WSxPO2M7WSxNO1csc0IsTztXOzs7Ozs7Ozs7VyxNOzs7UyxNOzs7O087UTs7Ozs7O00sTTs7Szs7OztNOzs7Ozs7Ozs7OztJO0ssTztLLE87Szs7Ozs7Ozs7OztLO0s7Ozs7OztvQzs7Ozs7O0ksWTtJOzs7O0ksTzs7Ozs7Yzs7Ozs7Ozs7YTtHOzJCLCtCOztJLE87Ozs7O2M7O2UsUTs7OztlLE07Ozs7ZTtnQjs7bUI7O3FDLGlDOzs7Ozs7Ozs7ZSxNOzs7YztlO2lCOzs7b0I7cUIsUTs7O29CO21COztlLE87Ozs7ZTtnQixPO2dCO2tCOzs7c0I7Ozs7O3VCO3VCOzs7Ozs7cUI7Ozs7O2M7O2UsTTs7O2M7ZSxRO2U7aUI7Ozs7cUI7cUI7cUIsTzs7OytCOytCOzs4Qjs7b0I7O29CO29CO3FCO3FCO3VCOzt5QyxvQixjOztxQixPO3FCLE87b0I7b0I7OztxQjt1Qjs7OzBCOzs7O29CO21COzs7Yzs7O2lCLG9CLFE7NkI7O2lCLE07O2dCOztjOzs7aUI7aUI7a0I7O3FCOzs7Ozs7a0I7Ozs7Ozs7a0IsTTs7O2dCOztjO2U7aUI7OztvQjs7O3FCO29CLE87O21COzs7ZSxVOzs7ZTs7Ozs7Ozs7O2M7YTtHOztJO0ssUTtLO087Ozs7VztXOztVOztVO1U7O1M7OztLLFU7OztLLE07OztJO0s7SyxTO0k7Rzs7STtLO087Ozs7eUIsbUM7Ozs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7VSxPOztTLE07O1E7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7TTs7bUM7Ozs7TSxHO00sRztNLEc7TSxHOzs7OztLLE07OztJO0c7O0k7STtLOztNLFU7TTs7Ozs7Ozs7Ozs7O1csTTs7O1U7OztXO1c7OztVOzs7Ozs7Ozs7OztNOztLLE07O0c7O0ksTzs7Ozs7YyxJLE0sMEM7O2U7Ozs7O2U7Z0I7Ozs7O2dCO2tCOzs7O2dCO2lCO2lCO21DOzs7O2dCLE07Ozs7Ozs7OztlO2dCLE07O2U7OzttQixXO21CO29CLFk7Ozs7c0I7O3VCLFM7MkM7Ozs7OztvQjs7OzsyQzs7O2tCO2dCO2tCO2U7OztrQixnQjtrQixPO2lCOzs7ZTtnQixPO2dCLE87Ozs7ZSxLO2dCLE07O2U7Z0IsTztnQixPOzs7YztlO2lCOzttQyxlOzs7Ozs7ZTs7Ozs7Ozs7O2M7YTtHOzs7STtJLE87O2dDLGdDOztjO2M7ZTtlO2U7aUI7O21DLG9CLGM7O2UsUTtlO2lCOzs7b0I7Ozs7cUIsTTtxQixRO29CO21COztlOzs7ZTs7Z0IsTTs7Ozs7Ozs7OztjO2UsYTs7YztlOzs7a0I7a0I7bUIsVzttQjs7Ozs7OzttQixNOzs7aUI7OztjOzs7aUI7aUI7a0IsVztrQjs7Ozs7OztrQixNOzs7Z0I7O2Msd0I7Ozs7O2U7Ozs7Yzs7Ozs7OztlOzs7Ozs7OztjO2UsTztlLE87OztlOzs7Ozs7OztrQjs7Ozs7Ozs7Yzs7O2lCO2dCOztjLGM7OztlLE07OztjO2U7ZSxXO2M7ZTs7a0I7Ozs7Ozs7Ozs7OztlLE07OztjOztpQjtjO2U7O2tCOzs7Ozs7O2UsTTs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7OztHOztJO0ssTztLLE87Szs7SyxxQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLFc7SztLLFc7STtJLE87Ozs7Yzs7OztlLE87ZSxPO2M7Ozs7Ozs7Ozs7Ozs7OzthO0c7O0ksWTtJLE87OztjOztlOzs4QjtjLFc7YTs7Rzs7NEIsTyxzQztJO0k7STtHOztJO0s7TTtROzs7VyxXO1csTztVOztNLE07TSxXO0s7SztNLE87TSxPO0s7Szs7Ozs0Qjs7O0c7O0k7Ozs7Ozs7YztlLE87ZTtlLE87YyxPOzthO0c7O0ksc0M7O0ksTyx3QyxZO0c7O0k7SztLO29COzs7Ozs7Ozs7Ozs7OztNOztJO0k7Rzs7SSxPOzs7YztjLE87O2E7O0c7O0k7SztNOzs7TyxPO08sTztNLE87O0s7OztNLE87TSxPO0ssTzs7STtLLE87STtJLE87YTs7O0c7O0ksTztHOztJOzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7USxPOztRLE87Ozs7OztPLE87OztPLE87O087Ozs7UTtPLE87Z0I7O2lCO2lCO2lCLE87Ozs7Ozs7O2dCOztPOzs7O1E7TyxPO2dCOztpQjtpQjtpQixPOzs7Ozs7OztnQjs7OztROztTO1c7Ozs7OztTLE87USxPOzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7O087Tzs7Ozs7O3VCLE8sMEM7dUIsTywwQztPLE87OztPO087Ozs7Ozt1QixPLDBDO3VCLE8sMEM7TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087Ozs7O1E7UTs7VyxPO1U7TztPO087USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7OztpQiw2Qiw4QjtpQixPOzsyQjs7MkI7Z0I7OztPOzs7Ozs7O1k7Ozs7Z0I7Ozs7cUMsUzs7eUMsVztlO2EsUTs7Ozs7O2lCOztrQixVOzs7aUIsRyxpQztpQjs7OzttQyxrQixTOzs7b0I7b0IsTzttQjs7O2lCLG9CLE87aUIsRyxtQztpQjs7O21COztvQixrQixROzs7OytEOztzQixPOzs7cUQ7O29CLE87bUI7OztvQjs7cUIsTztvQixPO21COzs7YTs7Ozs7OztXOzs7O3lCLFk7OztjLFc7YyxPO2E7Ozs7Vzs7Ozs7YztjLE87YTs7O2M7Ozs7Ozs7O2E7OztPLE87OztPLE87Ozs7Ozs7O08sdUIsTztPLE87Ozs7Ozs7OztPOzs7O1E7VTs7Ozs7O1EsTztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7aUIsVztpQixPO2dCOztpQixPO2dCOztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7O087Ozs7UTs7Vzs7OztZO1c7O3VCO3VCOzt1Qjs7O087USxnQixPO1E7Ozs7Ozs7Ozs7O1E7Ozs7VztXO1ksTztZLE87Vzs7Ozs7Ozs7OztXO1csVztXOzs7Ozs7Ozs7O1c7VyxXO1c7Ozs7Ozs7Ozs7VyxXO1c7Ozs7Ozs7Ozs7O1csVztXOzs7Ozs7Ozs7OztXLFc7Vzs7Ozs7Ozs7Ozs7Z0M7TyxJLHFCO08sTzs7TyxvQixPO08sTzs7O087TztPOzs7O3FCLFM7O3lCLGE7TyxPOzs7aUI7O2lCOzs7Ozs7Ozs7Ozs7O08scUI7TyxPOzs7TztpQjs7Ozs7Ozs7aUI7Ozs7Ozs7OztPOztROztXLFksTztXLG9CLE87VyxPOztPLE87Ozs7Ozs7Ozs7TyxPOztPOztROztXLE87VTtRLE87USxPO08sTzs7OztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozt1Qjs7O0k7RztxQyx3Qjs7STtJOzttQzs7OzZCOzs7O1E7OztZOzthLG1CO2EsTzs7WTtXO1M7Vzs7Ozs7UTs7O2lGLGU7O1EsTzs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UTs7OztTOzs7O1U7VSxROzs7Ozs7OztRLG9CLFU7OztpQzs7O1E7OztRO1MsTzs7O1E7Ozs7Ozs7OztROzs7OztRO2dCOzs7O0c7O0k7OztJLG1COztJLEksVywrQjs7OzRCOzs7OztJO0k7Ozs7NkI7O1E7O1E7O1E7O1E7OztRO1M7O1k7O1k7O1ksTzs7WSxPOzs7Ozs7UTtTLE87O1E7OztHOztJOzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHO0k7O0ksVTs7SSxJLFcsNEI7Ozs0Qjs7O0c7OztJLE87OztjLEkscUI7YyxPO2E7OztHOztJLE87Rzs7SSxPLGlDO0c7O0ksTzs7O2M7YzthOztHOzs7SSxPOzsrQixPLDBCOzs7Rzs7SSxtQjtHOztJLE87Rzs7STs7SSxPO0c7O0ksTzs7aUMsbUIsd0I7OztHOztJO2E7NEMsd0I7RzsyQixhOztJO0ssTywrQztHOztJO2tDOzs7MkI7O087O087Ozs7UTtPO1E7O087OztROztXO2tEOztXO1U7OztXOzhCOztXO1U7USxXO1EsVzs7Ozs7O1M7Vzs7K0IsMEI7O2lDO087UTtRLDBCO087UTtRLHFDOzs7Ozs7Ozs7OztRLGU7OztPOztROzs7OzBCOzs7YTs7O2M7OzthOzs7Ozs7Ozs7UTs7O1E7OztpQzs7OztpQzs7UTtPLHNCOzs7TztRO1M7VzswQyx1QjtTLFE7OztTLE87UztRLHVDOztPOzs7USwwQix1QjtROzs7OEI7TyxzQjs7O08sNkI7O08seUM7Ozs7Ozs7Ozs7O1E7Ozs7a0M7O08sc0I7OztPLDZCOzs7OztRO1M7Ozs7Ozs7O2lDOztROzs7O2MsTzs7O3dCO3dCOzs7O3dCO3VCOzs7Ozs7TyxzQjs7MkI7Ozs7OztRO08sc0I7O087O1EsVTs7TzsrQjs7Ozs7Ozs7Ozs4QjtRO08sc0I7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7Ozs7Ozs7O1E7TyxzQjs7NEI7TyxzQjs7NkI7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7O087OztRLDRDOztvQztRO08sc0I7O087Ozs7UTtRO087UTs7TywwQztPLG1CLE87OzJCOztPLG9CLFU7Ozs7OztPOztnQzs7O08sa0IsTzs7Tzs7Ozs7O1E7c0M7UTs7aUM7O08sc0I7OzZCOztPLG1DO087UTs7Rzs0Qjs7SSxzQztJLHFCO0c7O0k7SSxxQjtHOztJOzs7MEI7OzJCOzs2Qjs7Tzs7eUI7ZTs7Rzs7SSxpQjs7STtHOztJOzs7MkI7OztPO1EsTzs7O2tCOzs7cUIsa0I7cUI7OztxQjs7cUI7O3FCOztxQjs7c0I7d0I7OzBDLG1CLFU7O3NCO3FCOztxQjs7c0IsTTtxQjs7Ozs7O3FCOztxQjs7c0I7d0I7OzsyQjsyQjswQjs7c0I7d0I7eUQ7Ozs7eUI7MEI7OzJCOzJCOzs7O3lCOztzQjtxQjs7d0M7O3FCOztzQixpRDtzQixZOzs7O3lCOztzQjtxQjs7cUI7Ozs7c0IsZTtzQjtxQjs2Qjs7aUI7Ozs7eUI7Ozs7OztRO08scUI7OzJCOzs7OzswQixpQzs7O087c0M7OztXOzs7O2lDLDRCOzs7O21COzs7Ozs7TztRLE87O087O0c7eUI7O0k7STs7OztRLHNCOzswQjs7Ozs7O1M7USxxQjs7O0c7O0k7O0s7O00sTTtNO007TTs7OztLO007OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7OzRCOzsyQjs7UTs7O1M7VywwQztTO1EsbUI7Ozs7Ozs7O1kscUI7OztvQztTO1EscUI7O1E7Ozs7UztRO1M7Ozs7OztHOztJO3VCOztJO0c7O0k7SztPLHlDLGE7SztJO0s7OztTOzs7VTtVO1U7OztVOztTO1UsZTtVO1M7O00sTTtNLFE7Ozs7Szs7TTs7O1U7OztxQjtTO08sUTtNLEc7Ozs7Ozs7O1M7OztVO1M7OztJO0c7O0k7Ozs7O0s7OzZCOztJO0ssMEI7Syx3QztHOztJO0s7SyxNO0s7TztTLHlDLHFCOztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7STtLO007Ozs7OztZOzs7ZTtlO2M7Ozs7Ozs7SztNOztJO0c7OztLO0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7OztJOztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7O0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7Ozs7cUIsc0MsWTtxQix5QyxZO3lDLDRCOzZCLHdCOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7Rzs7STs7OztRLEksbUIsOEI7OzttQzs7Ozs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7Ozs7USxJLG1CLDhCOzs7bUM7OztPOzsyQjs7O087OzttQjs7Tzs7Rzs7STt5Qzs7SSxNO0c7O0ksTztHOztJO0c7O0ksWTtJLGlCO0c7O0k7SyxRO0s7O0s7STtpQjs7OztHOztJO0ssTztLLFE7Ozs7O00sRyx1Qzs7O0ksTTtHOztJLE8sMkI7Rzs7STtJLE87Rzs7STs0Qzs7Ozs7TTs7O0k7Rzs7STs0Qzs7O3FDO2tEOztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7O0ksSSxXLHNDOzs7OztNLE07Ozs7SyxNOzs7RztHO0ksa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7VztZO0s7Ozs7OztNLE07Ozs7O0ssTTs7O0c7O0k7STtHOztJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJLE87Ozs7ZTs2RDtlO2M7O0c7O0ksTzs7OztlOztnQjs7OztpQixPO2lCLFE7Ozs7aUI7a0IsSTtrQixVO2lEOzs7O21CLHFCO29CLFc7b0IsTzs7Ozs7OztvQixLO3FCLFc7cUI7O3NCLE07OztxQixPOzs2Qzs7Ozs7a0IsbUI7bUIsVzttQixPOzs7aUI7O2dCLE07O2U7Yzs7Rzs7STs7OztJO0c7Ozs7OztJOzs7O0k7TTs7O1Msc0I7UyxPO1E7O0ssTTs7Ozs7O08sTTtpQjs7O007OztPLE87TyxPO087OytCOzs7Ozs7OztjO0k7SyxPO0ssUzs7STs7O0ksTzs7O2MsK0IsTztjLE87dUI7YTs7Rzs7STs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7VTtXLE87O1U7O1U7O1c7YTs7OEI7O1UsTzs7Ozs7Ozs7Ozs7OztVO1U7VzthOzs4Qjs7VyxVOzs7VyxPO1U7OzthOzs7Yzs7YSxzQjtZOzs7VTs7VTs7O1c7YTs7OEI7O1csb0I7VyxPO1csVztVLE87O1U7O1csTztXLE07O1U7VyxPO1c7YTs7O2dCO2dCO2U7Ozs7YztlLFE7OztjOzs7O2UsVztlO2dCLGM7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE07OztnQjtlOzs7Ozs7YztlLFU7OztjO2M7YTtVO1U7OztVO1c7O1ksVTs7OztZLE87WSxXO1csTzs7VSxJLGdDO1U7VTs7Ozs7OztNLFM7TyxPO007TztPO1M7OzsyQixPLDZCO08sTztPLE87TTtNOzs7Ozs7O0k7OztJO0s7Tzs7eUIsTywyQjs7SyxLO0ssZ0I7STtJO0c7Ozs7Ozs7Ozs7STtLO00sTztNLE87TSxPO00sTztNLEs7Szs7O0s7Ozs7OztLOztJO0k7SztPOzs7VSxvQjs7Vzs7OztZO1ksVTs7OztZOztZO2M7OztpQjtrQixPO2tCO29COzs7O2lCO2lCO2dCOztZO2M7Ozs7a0I7a0IsTztpQjtnQyxPLHNDOzs7OztXO1ksTTtZLE07VztZLE07Ozs7YSxXO2E7YTtjLE87YyxVOzthLE07OztZOzs7O1k7YTtlLHdDLFk7YTtlOzs7a0IsWTs7Ozs7b0IsRztxQixPOzs7a0IsTTs7aUI7Ozs7YSxNOzs7VztZOzs7Ozs7O1c7WSxVOzs7WTs7Ozs7O1c7VTs7O1M7Ozs7O0s7OztLOztNOzs7UztTO1M7UztVLE87VSxjO1U7b0I7Uzs7WTs7UztTLE07UTs7Ozs7Ozs7STtHOzs7SSxPOzs7YztlLFE7OztjO2U7Ozs7O2lCOzs7Ozs7OztpQixNOzs7Ozs7O2M7YTs7Rzs7STtLLFM7SyxnQjtJO3dCO0k7Rzs7STtLLEs7SyxPO0kseUM7STtHOztJO2lDO0ssc0I7STtLLE87STtJO0ssZTtLLGdCO0k7Szt5QjtJLFc7SSw4QjtHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7SSxZO3NFO0ksTTtHOzs7Syw0QjtJOztLO00sUztNO3dCLE07O0s7TTs7Uzs7O1k7WSxPO1c7Ozs7OztNOztTOzsyQixtQixPLHdCOztNLE07Ozs7Ozs7O0s7SztJOzs7O29CLE87TSxzQyxPO00sRzs7Vzs7OztLO007TTtROzswQixvQiwwQjs7TTs7K0I7OzsrQjtLLE87Ozs7O2U7ZSxPO2M7STs7SyxrQixNOzs7TSxvQjtNOztLLE87STs7SyxHO007TTtPO08sWTs7Tzs7bUI7TyxPOzs7O0k7O0s7TSxPO00sTztNLFc7SyxPO0k7O0ssVztLLFc7SztNO1E7Ozs7MEIsTywrQjtNLHdCO0ssTztJOztLOzt1RDs7SyxnQjtLLE87STs7Syx3Qzs7SyxPO0k7Ozs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTtVO1k7OztlOztnQjtnQjtlO2M7O1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7Ozs7SSxPOzs7YyxPO3lDLE8sMEI7YTs7O2MsTyxjO2E7O0c7OztJO0s7Tzs7O1U7VSxPO1M7O0s7SztLO0s7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0k7O0ssWTtLOztPLG9CLE87Tzs7dUIsTywrQzs7TyxXO08sTzs7O08sb0I7Tzs7Ozs7Z0I7Tzs7TSxhO21CO00sZTs7O0s7Ozs7Ozs7OztJO0k7SztPOzs7VTs7Uzs7SztPOzs7VTs2Qjs7VTtTOztLO087OztVOztXOztVLHNDOzs7Ozs7Ozs7Ozs7VTtTOzs7O0s7O0ssVTs7TTs7OztPO1M7OztZO1k7Vzs7TyxPO08seUM7TyxPO007UTs7eUI7O08sZ0I7Tzs7O087OztVO1UsTztTOzs7OztLLFc7Szs7STs7Tzs7O1U7O1M7O0ksTztHOzZCLGU7NkIsZTs7SSxRO1U7YyxnRDtJO0s7NEM7O0k7SSxPO0c7NEIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7O1MsTzs7O21CO21CO2tCOzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7Rzs7SSxrQjtHOztJLHdCO0c7O0ksTzs7Ozs7Yzs7YTtHOzs7OztLO007O0k7O0ssVztLO0s7STs7SztnQjs7STtvQiw4QjtJOzs7Szs7Ozs7ZTs7Ozs7O087O1EsTztROzs7Tzs7Tzs7O1E7O1E7VTs7OzRCLG1DO1E7Ozs7Tzs7Ozs7Ozs7O087O1E7UTs7Tzs7Ozs7Ozs7Uzs7O1U7VTs7YTtjLE87YTtjLFk7YyxPO2EsTztZOztVO1M7OztPLE07OztPLE87USxNO087UTs7UTtVOzs7Ozs7OztROztRLFcsd0MsWTtPO3FDOztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087USxhOzs7Ozs7UTs7Ozs7Ozs7O1E7O1EsOEI7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7O3VCOzs7Ozs7Vyx1Qjs7Ozs7Ozs7Ozs7Ozs7TyxHO1E7b0I7OztTOzs7O1U7USxXO1EsTTs7O087UTs7Ozs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTtROzs7VztXO1U7OztPOztRO1U7Ozs7Ozs7O1E7O087Ozs7O2lCOzs7OztPO1EsTTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7TztRLE07Tzs7O1M7UyxNOzs7d0I7OztROzs7UyxjO1M7OztPOzs7Vzs7OztZOzs7Vzs7O1E7O1E7Ozs7O2E7Ozs7Ozs7Ozs7OztROztTO1MsVTs7O1ksc0I7WTthLE07OztZO1k7O1E7Ozt1QjtRO1MsSSxpRDs7Ozs7Ozs7Vzs7Ozs7O1U7VyxPO1csSTtVOzs7Ozs7Tzs7Ozs7O21COzs7O087O1E7UTtVOzt3QixzQzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7UTtRO1E7VTs7Ozs7YzthO2E7YyxXO2MsUTtjLFE7YztjO2E7WTs7Ozs7UTtRO1EsWTtPOzs7VTtVO1M7O087OztVO1U7Uzs7Tzs7UTtROzs7VztXO1k7OztnQixPOzt5QyxzQixhOztlO1k7Ozs7Ozs7Ozs7YyxLO2U7Z0IsTztnQjtrQjtxQjs7O2UsTTs7OztjO2UsVztlO2U7Ozs7Ozs7ZSxNOzs7Yzs7OzsrQjtZLE07OztVO1E7O1EsTzs7OztPO1EsTztROztPOzs7OztpQjs7Ozs7Ozs7O1M7Ozs7O1UsUTs7OztTOzRCOztTLGM7O1U7Ozs7YTs7OztpQixPO2dCOztXOzs7VTs7Ozs7Ozs7O1MsTTs7OztPOzs7UTtVOzs7O2M7YyxPO2E7NEIsTyxzQzs7Ozs7TyxXO087MkI7TztRO1E7Tzs7OztTOzs7Ozs7Ozs7Ozs7O087O087OztRLFU7OztRO1U7OzRCLE8sNEI7O1EsTztRLE87USxVOzs7USxHO1M7VSxPO1U7WTs7O2U7Ozs7O2dCLFE7Ozs7aUI7O2tCLE07aUI7Ozs7Z0IsVTtnQjs7ZTtjOzs7OztVLFc7VTs7O2EsTztZO1Usb0I7VSxPO1U7VSxtQjtVO1k7OztlO2U7Yzs7UztVLE07O1M7OztVO1k7OztlO2M7OztVOzs7Ozs7Ozs7Ozs7O08sTTs7O087O1E7UTtROztPOzs7OztpQjs7OztPOztRLEk7UTs7UTs7Ozs7Ozs7Tzs7UTtROzs7Tzs7Ozs7Ozs7O087OztRO1E7b0I7TyxNOzs7TyxNO2tDOztPOzs7USxXOzs7TztPO1E7O1EsVzs7USxNOztPO087Ozs7Ozs7Ozs7SSxPOzs7YztjLE87YTtHOztJLE87OztjOzs7Ozs7O2U7YyxPOzs7Ozs7YTs7O0c7O0k7OztJLE87OztjOzs7OztjLE87Ozt3Qjt5QjsyQjt5QjsyQjt5QixPO3lCLFE7Ozs7eUI7d0IsTzs7dUI7YTs7O0c7O0k7SztHOztJO0s7SyxLO0ssa0I7SyxXO0s7STtLO0s7O0ksd0MsTyxpQjtJLEc7Syx1QztJO0s7Tzs7O1U7Ozs7Ozs7OztVLGtCLHFDO1U7VyxLO1csTztXLFU7VzthOzs7Ozs7VzthOzs7Ozs7VTtTOzs7Ozs7STtHOztJO0ssaUI7SyxTO0s7SyxLO0ssa0I7SyxXO0s7SSx3QyxPLGlCO0k7RztHO0k7STs7Ozs7OztJO0ksVztHOztJOztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOzs7O0s7TTs7SSxJOzs7Syx5Qjs7SSxnQyxPLGtDO0k7Ozs7Ozs7STs7Ozs0Qjs7UTs7UyxPO1M7UztTLE87UTtRLE87OztRLE87UyxNO1E7Uzs7UyxVO1E7O2tCLGdDO2tCOzs7aUI7OztrQjs7O3NCLHdDLFk7a0Isa0I7aUI7O1E7Ozs7Uzs7O1MsTTtRO1M7Ozs7O1E7O2tCLGdDO2tCOzs7aUI7aUI7O2tCOztpQjs7UTs7OztTOzs7Ozs7O1k7Vzs7O1MsNEMsbUI7O1E7O1E7OztTLFk7OztZOzs7O2E7OztZOzs7O3NCLE87cUI7O1E7OztrQyxzQzs7UTs7UztROztrQjtrQjs7O2lCOzs4QiwwQjs7UTs7UztRO3VDLDBCOztROzs7O1M7Ozs7YTthO1k7WTtXO1EsZTtROzs7WTthLE07WTtZO2E7OzsrQyxTOzs7O3lDO3VDOzs7WTtXO1Msc0I7UyxzQjs7O1M7Ozs7O2EsTTs7Ozs7Ozs7Ozs7O1U7VyxNO1U7Ozs7O1U7Ozs7USxPOzt3Qix3QjtxQjt5QixxQztJLGM7a0IsTTs7O3NCOzs7Szs7STtLLE07STs7Tzs7O1U7Ozs7Ozs7Uzs7O0k7OztJOztLLE87SztLO0k7SztNO007Ozs7Ozs7c0IsUztLO0s7Szs7Ozs7O0s7Szs7Ozs2Qjs7O0k7SSxPOzs7Yzs7Ozs7Ozs2QjtJLE87OztjOzs7ZTtnQixNOzs7YzthOzs7RztJOzs7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87STs7O087TztPLE87TTs7STtJO0ksTztHOztJO0k7Ozs7Ozs7O1U7OztXO2E7OzRCLDhCOztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7O2U7aUQ7WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLHNDO1U7b0I7OztzQjs7Ozt1QjtzQjt1Qjt3Qjt3Qjs7Ozs2Qjs7OztpQztnRjtpQztnQzs7Ozs7c0I7cUI7Ozs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7VzthOzs7Z0I7Z0Isd0I7OztlOztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7VztXO2E7OztnQjs7O21COzs7b0Q7O21CO21COzttQjs7bUI7O3VDOzJCOztlOztVO1c7WTtjOzs7aUI7aUI7OztnQjs7O1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7OztJO0k7Ozs7O1EsTzs7O2tCOzs7O3FCLE87OzJDLDhCOzs7O3FCLE87OzhDLGlDOzs7Ozs7OztxQixPOzs7K0I7K0I7OEI7OztxQjs7cUI7Ozs7NkI7O2tCO2lCOzs7Ozs7UTtTLE87O1E7OztRO2dCOzs7Rzs7STs7O0ksWTs7STtLLE87O0k7Rzs7STs7K0IsOEI7O0ksVTtJLE87OztjOzs7OztlLFE7O2UsTTs7O2M7YTs7Rzs7SSxPOzs7YyxlOztlLE07O2M7YTs7Rzs7STs7Ozs7TTs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VTs7YTs7OEI7O1MsTzs7Uzs7O1UsVTs7O1U7WTtVLE87Uzs7WTs7NkI7O1MsTzs7OztLLE87O0c7O0k7Szs7TTtLLEksOEM7Ozs7O00sTTs7Ozs7Ozs7MEI7STtJLEksZ0Q7Ozs7O0ssTTs7O0c7O0k7STtLLHFCOzs7Ozs7O1M7Ozs7Ozs7O1M7O1U7O2E7OzhCOztTLE87Ozs7OztTLGtDO1M7O1M7Ozs7VTtTOztLLE87O0c7O0k7Ozs7OztPOzs7UTtRLGM7ZTs7a0I7Ozt3Qjs7Szs7O3lCLE87STs7Ozs7Szs7Ozs7Ozs7Yzs7OztLOztNLHVCO007Ozs7OztJLE87Rzs7STtJLE87Ozs7O2M7ZSxTO2UsRztnQixXO2UsWTs7Z0I7OztpQjtpQixZOzs7Ozs7ZSxXO2UsVzs7OztHOzs7STtJO0k7STtLLE07SztPOzs7VSxZOztXOzs7aUI7WSxVOzs7VztXOztVLE07Uzs7OztLLFU7OztLO2U7STtLLGM7SyxXO0ssa0I7SSxNO0c7OztLO0s7TSxPO00sSztLO007O1M7OztTLEcsb0M7Ozs7Ozs7O087Tzs7Ozs7Ozs7Ozs7OztLOztROzswQixpQzs7O0ssTztJOztLO00sTztNLEs7Szs7Ozs7Ozs7OztXO2E7OytCLGlDOztZOzs7Ozs7OztlLE87O3dDLHNCLG9COzs7O2U7ZSxPOzt3QyxzQixvQjs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7O0k7SztLO007Ozs7VTs7O2E7MkQ7YTtZOztpQjs7b0M7Ozs7O1M7O1Msa0M7UyxXOzs7aUI7OztJO0k7Rzs7O0ssVztLLFc7UTtNLE07SztLLE87STtJLEksVywyQixjOzs7O0s7Szs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87OztTLE87O2tDLGtCLGU7Ozs4QixPOzs7UztTLGtCLE87O1M7Ozs7Ozs7Ozs7TSxrQixPOztNOztLO0k7cUI7SSxJOzs7d0I7OztJO0c7O0k7O2M7OytDO2M7YTs7Rzs7STs7Yzs0RDtjO2E7O0c7O0k7O2M7NkQ7YzthOztHOztJO0k7Ozs0Qzs7OztHOzs7O21CLE87SyxzQzs7Ozs0Qjs7OEI7Ozs7OztJOzthLHdDLFk7Rzs7STtJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJO0k7Ozs7Ozs7VSx3QztVLFc7Ozs7Ozs7Ozs7Ozs7OztTOztLOztHOztJLFk7Ozs7SyxnQyxVOzs7Ozs7TSxjOzs7O08sc0MsTztPO1EsVztRO1MsVztTO1UsVztVO1csVztXLFMsTzs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLGtCLE87O0ksSSxXLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7RzswQztHOztJLHlCOztHOzs7SSxTOzs7Szs7O007TTtLLE87Ozs7O0s7OztNO00sUztNLE07SyxPOzs0Qjs7OztJLHNCO2tEO0ksb0I7SSxPOzs7SSw4Qjs7Ozs7Ozs7O1E7O1MsVztTLEk7O1M7Z0I7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztJOzs7SSxTO0k7Rzs7STtLLHVCO0s7Tzs7Ozs7VTtTO0k7STtHOztJOztLOztLO0s7O0s7OztRLFc7UTtPO0s7STtJOztLOzZCOztJOztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7UTtRLFM7UTs7ZTs7USxVOzs7OztTLEc7Ozs7O21COzs7bUI7Ozs7Ozs7Tzs7UTs7Ozs7a0I7Ozs7TztPO1E7MEMsbUM7OztZO1k7Ozs7Ozs7WTtXO1MsdUIsNEI7Uzt1QixrQixtQzttQyxrQztpQyx3Qjs7O1k7WTtXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7dUI7O1c7OztZOztlOztlO3VCOztXOzs7WTthLGtCO2E7O1k7WTtXOzs7WTthOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztXOzs7WSw0Qjs7O2E7OztZO1c7OztZOzs7OztZO1c7OztZO2E7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7ZTs7Ozs7Ozs7ZTs7Ozs7OztlOzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7ZSxNOztXOzs7Vzs7Uzs7Ozs7OztRLE07OztPO087Ozs7Ozs7OztVO1c7WTs7OztXOzs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7VTs7MEIsbUM7O1EsYztRO1U7Ozs7YTtjO2UsUTs7OzthO2M7Ozs7Ozs7Ozs7O2M7Yzs7Ozs7OztjOzs7aUI7aUI7aUI7a0IsaUI7a0I7a0IsWTtpQjs7Z0I7O2E7WTs7YTthLG1DO1k7OztPOzs7Ozs7Ozs7Tzs7OztRO1E7Ozs7Ozs7O087O29COztTO1U7VSxPO1UsYztpQjtROztXOzs7YyxJLGlCLE87YyxPO2E7OztRLEk7Ozs7Uzs7VTtVLGtCO1U7UyxNOzs7O087Ozs7aUI7OztvQjtvQjttQjs7Ozs7OztPO1EsTTtPOzs7Vzs7WTtjOzs7OztpQjtrQixTO2tCLEcsc0M7a0IsWTs7O21CLEk7Ozs7cUIsTTs7OzttQixhOzs7OztrQjs7O1csTzs7O3FCO3NCO3dCOzswQyxnQzs7c0IsSztxQjtvQjs7VTtRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO1c7WTs7Ozs7Ozs7Ozs7Ozs7O1U7VztZOzs7Ozs7Ozs7O087UTs7VyxPOzs7cUI7cUIsTzs7b0I7OztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQjs0QztnQjtlO1k7Ozs7Ozs7NEI7Ozs7O1c7WTs7Z0I7Ozs7O1ksVTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXO1k7YztnQjs7O21COzhCOzttQjtrQjs7O1k7WSxPO1k7OztlOzs7O1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7VTtZOzswQixXLHlCOztVLE87VSxPOztVOzthOzsrQix5Qzs7VTtXOztjOzZDLHVCO1c7WTthO2U7O2dDOzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7TztRO1E7VTs7OzthOzs7ZSxzQjtlOztpQixXO2lCO2lCLEk7Ozs7Ozs7Ozs7ZTtnQjtpQixPO2lCLFU7OztpQjtnQjtnQjs7OzthOztjLFk7Ozs7Ozs7Ozs7a0I7bUI7cUI7Ozs7Ozs7bUIsTzttQjtxQjs7O3dCO21DOzt3QixrQjt1Qjs7bUI7bUIsWTtrQjtpQjtjLGdCO2M7ZSxXO2UsUTtlLE87ZSxVOzs7Ozs7Ozs7Ozs7O2UsRztnQixTOztnQjs7O29COzs7Ozs7Ozs4Qzs7bUI7aUIsTztpQixXOzs7Ozs7Ozs7O29CLG1CO3FCO3FCO3NCO3NCOzs7eUY7O29CO3FCLG1EO21COzs7b0I7OztvQjtxQjtxQjttQyxzQzttQjs7OztrQixNOzs7Ozs7Ozs0Qjs7OzttQjs7cUI7Ozt3Qjt3QixpQjt1Qjs7O3NCOzs7eUI7d0I7O29CO3FCOzs7Ozs7a0IsTTs7O2lCO2tCOzs7OztpQixjOzs7Ozs7OztrQixhOzs7aUM7a0I7bUIsZ0I7bUI7O2tCO21COzs7Ozs7O21CLGU7Ozs7bUI7Ozs7Ozs7O2dCOzs7Ozs7OztjOztZOzs7Tzs7Tzs7O1E7VTs7OzRCOzRCLGdDO1E7Ozs7TztTOzt1Qiw0Qzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7Ozs7O087OztPLE87USxNO087UTtVOzs0QixPLDJCOztRLFc7Ozs7VTt1QztTO087UTtVOzsrQiw2Qzs7O1E7UTtjLHdDLFk7Tzt1Qzs7O087OztPOzs7UTtRLGU7TztRO1MsTztTLFU7UyxPO1MsVTs7Ozs7Ozs7Uzs7OztVLE87VSxVO1UsTztVLFU7Ozs7Ozs7OztZOzthO2E7O1k7Ozs7UyxNOztRLE07Ozs7O1E7O1M7Vzs7NEI7O1M7VywyQyxjO1MsTztTLGtCO1MsTTtTO1E7Ozs7O2tCOzs7Ozs7TztRLE07O1E7O1M7Vzs7NkIsMEM7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7UTs7UyxPO1M7Vzs7OztjLFc7YyxPO2E7Ozs7Tzs7O1E7O1c7O1E7UTs7Ozs7YTs7Ozs7OztVLFc7VTs2QjtTOztPOzs7Ozs7VSxNOzs7Ozs7TztjO1E7O1csTzs7O3FCOztvQjs7VTtPO1E7O1MsVzs7O1k7YSxROzs7WTtZLEk7Ozs7O2E7YyxVOzs7YTs7OztnQjttQztlO2E7OztZO1c7UyxvQjs7Ozs7O1E7UztXOzs7YyxJOzs7OztlO2dCO2tCOztvQyxvQixjOztnQjs7Z0IsTTtlOztnQjtrQjtpRCxZO2dCOzs7O2tDOztvQixLO3FCO29COzs7OztnQjtlLE07Ozs7YzthOzs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O1E7VTs7aUMsdUI7OztRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Ozs7VTt5QztTO087UTtVOzsyQiwrQzs7UTtPOzs7OztpQjs7OztPOzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087O1E7Tzs7Tzs7O1E7UTtPOztPOzs7O1E7UTs7OztpRzt5Qjs7TztPOztPOzs7Ozs7O1E7O1E7OztnQzs7O1MsTTtROztTLE87UyxPO1MsVzs7O3VDLGU7Ozs7OztPLEksaUQ7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztROztxQztRO1EsTztPOzs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7O087Ozs7Ozs7OztPOzs7UTtVOzs7YSxJOzs7Ozs7Ozs7Ozs7b0IsSSxTOzs7OztxQjs7d0I7O29ELHFCOzs7cUIsTTs7O29CO3FCLFE7Ozs7OztvQixJLFc7Ozs7OztxQjtzQixPO3NCLE87O3NCO3FCO3FCOzs7O29CO3FCLFE7Ozs7Ozs7Ozs7O21CLEksVzs7Ozs7b0I7O3VCOzttRCxxQjs7O29CLE07OzttQjtvQixRO29CLFc7Z0M7Ozs7OztjLEksVTs7Ozs7O2U7Z0I7aUIsTztpQixROzs7O2tCOzs4QjttQjs7O3NCLGE7Ozs7OztzQjs7Ozs7Ozs7Ozs7ZSxNOzs7YyxJOzthO1k7O2E7YSxPO1k7Ozs7USxXOzs7OztXO1ksTztZLE87WSxPO1c7Ozs7OztZLHNCOzs7O3FCOzs7cUI7dUI7Ozt1Qjs7Ozs7UTs7TyxNOztPOztRLFc7OztROztRLE07O08seUI7Tzs7Ozs7aUI7Ozs7Tzs7O1EsVzs7Ozs7TztRLE07O087USxRO1E7USxXO29CO1E7Tzs7Ozs7aUI7Ozs7O087OztVO1U7WTsyQyw4QjtXLE07O1U7Uzs7O087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2MsTztjO2E7Ozs7OzthOztnQjs7NkMsc0I7OzthLE07Ozs7UyxTO1E7OztPLE07O087Ozs7USxLO1E7VTs7OztjO2MsTzthOzthO2M7Z0I7OzttQjtvQixROzs7bUI7bUI7O29CLFE7b0IsTztvQixTO29CLGE7b0I7OztvQjs7cUI7dUI7Ozs7Ozs7O21CO2tCOzs7OztjO2E7WTs7Ozs7Tzs7Ozs7Ozs7O087OztRLFc7OztRO087O087OztRO1E7Ozs7OzswQjs7O3lCOzs7Ozs7O087Ozs7Ozs7Ozs7OztROzs7Tzs7USxRO1EsYTs7OztVO3lDO1M7TyxJLGlEO087Ozs7O2lCOzs7O087OztRO1U7OzthLFk7YTs7YyxRO2MsTTthO1k7O2E7YSxPO1k7Ozs7Ozs7VyxXO1c7OEI7VTtPO1EsTztRLFc7Ozs7O1c7WTs7O1ksTztZO1c7Ozs7OztZOzs7ZTs7OztvQjtvQjs7bUI7O21CO29CO3NCOzs7eUIsTzt3Qjs7eUI7eUIsTzt3Qjs7O29CO21CO2tCOzs7O2EsTzs7O1k7YTs7O2EsTzs7Ozs7O1E7Ozs7Ozs7OztPLE07O087O1EsVzs7O087OztPOzs7UTs7Ozs7O2E7YTtZOzs7Tzs7Ozs7Ozs7O087O1EsTztRLE87USxXOzs7O1csTTs7Vyx5Qzs7WTs7YTthLE87b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsSztRLFc7OztRO087Tzs7Tzs7Ozs7UTtVOzs7YTs7Yzs7O2MsVTtjLFc7Ozs7O2E7O2M7OztlLEs7O2U7ZTtpQjs7Ozs7ZSxTOzs7OzthO2MsaUI7YztnQjs7YyxZO2MsWTtjO2M7Ozs7aUI7O2MsUTthLEk7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7VztZO1c7Ozs7OztZO2M7OztpQjtrQjs7O2tCLFU7a0IsUztrQixVO2tCLFk7a0I7b0I7a0I7b0I7O2lCLEk7Ozs7OztrQixNOzs7aUI7OztnQjs7Ozs7Ozs7WTs7O1k7VztZO2EsTzthLE87WTs7Ozs7O1ksTTs7O1c7Vzs7UTs0Qjs7O1EsTztRLFE7UTs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7OztXOztZLE87WTs7WSwwQjtZOzs7OztzQjs7OztXLE07Ozs7O08sTTs7OztJOzthO2E7WTs7YTsyQztZOzthOzs7NEQ7O2E7WTtHOzs7Ozs7STtLOztNO1E7OztXO1ksUTs7OztZLFU7Ozs7Vzs7O1U7Ozs7Ozs7O0s7TTtPLE87TyxPO08sVTtNO007TTs7Ozs7O00sTTs7SyxXO0s7YTs7OztJO0ssVTs7OztLLEs7SztPOzs7O1c7VyxPO1U7O1U7VyxROzs7VTtTOzs7O0s7SyxVOzs7Ozs7Ozs7TSxHLDRCLDBEOztLO2E7Z0I7TTtPO1EsTztlO087UTtRO1EsSTs7Ozs7UTs7Ozs7TTtPLGM7TztPOztnQjs7Ozs7OztPLE07OztLO00sVTs7O0s7SyxJOzs7O00sc0IsVztNLE07Ozs7O0k7OztJOztPOzsyQixxQzt5QixPLHdDO0k7Rzs7O0k7Szs7TTs7Ozs7WTs7Ozs7Ozs7Ozs7Ozs7SSxnQztJO0c7O0k7O087VTtVO0ksTzs7OztjO2UsTztlLFE7ZSxROzs7ZSxVOzs7ZSxPOztlLFc7ZSxHLDJDO2UsVztlO2UsWTs7Ozs7aUMsTzs7O2UsTztjO2MsVTtjO2M7YTtHOztJOztLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJOzs7STs7SyxNO0s7OztLOzs7Ozs7c0I7OztTOztVLFc7bUI7Ozs7OztJO0c7O0k7Ozs7O0s7SyxtQjtJLE87Ozs7YztlO2dCLE87Z0IsUTs7Ozs7OztlOzs7Ozs7Ozs7Ozs7OztlLE07Ozs7YyxHO2UsUztlO2dCO2dCOzs7OztpQixNOzs7Ozs7OztjO2E7O0c7Ozs7Ozs7Ozs7STs7Ozs7O0k7OztNO087O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7O1k7YSxjOzs7Ozs7O1k7Vzs7WTs7Ozs7O1k7VzsyQixTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Tzs7Ozs7Ozs7Ozs7Szs7OztLOzs7TTs7Ozs7O1c7WTs7Ozs7O2dCOzs7Ozs7OztXO1U7Ozs7Ozs7Szs7O1E7dUM7TztLOzs7Ozs7O0k7Ozs7O0s7Ozs7OztLLEs7TSxNO0ssaUI7SztNO007Ozs7O08sTTs7Ozs7OztPOztRO1E7O1U7Ozs7O0s7TTs7Ozs7O0k7Szs7Ozs7Ozs7OztVO1c7Ozs7Ozs7Ozs7Ozs7VztVO1M7Ozs7Szs7Ozs7Ozs7TSxPO00sVztLOzs7UTtxQztPO0ssVztLO007Tzs7O087Uzs7MEI7O087Ozs7SyxTOzs7O2tCOzs7TTtPO087OztLOzs7Ozs7Ozs7SSxNOzs7STtLO087O3lCLG9DOztLO0s7OztNO00sTTs7Ozs7Ozs7O0k7SyxTOzs7O0s7Ozs7Ozs7OztJO0c7O0k7Ozs7SztLLG1CO0s7Tzs7OztVO1c7YTs7OztnQjtpQjttQjs7OztzQjt1QixJOzs7c0I7cUI7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7Ozs7OztpQixNOzs7Z0IsZTtnQjtlOzs7OztXO3dDO1k7O3lDO1c7OztXLE07O1UsTTs7Uzs7Ozs7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7Szs7SztNO007TztTOzs2QixPLG1DOzJCLDhCO087Uzs7OzthOztZOztZOzs7YSxPO2E7WSx1QjtZO1c7OztPLE87Tzs7Ozs7Ozs7USxNOztNLE07OztJOzs7OztLO007OztNO2dCOztLLE87OzZCOztJO0k7Ozs7UztVLEs7VSxROzs7O1Usd0IsTztVOztTO1E7SyxHO007TyxPOztTOzsrQixPLDRCOzs7Ozs7Ozs7STtLOztLO0s7O0k7Ozs7SztPOzt5Qiw4Qjs7Ozs7Ozs7Ozs7O087UTtTLE87UyxVOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztLLE87SyxVOzs7OztLOzs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7O1M7OzBCOzs7Ozs7O1E7TTs7O007O1M7OztZO1ksTztXOztLO2M7SztNOzs7Ozs7Ozs7OztNOzs7O1U7Ozs7OztNO007TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07OztJOzs7Szs7O007TztPO087TSxNOzs7Ozs7Ozs7STtLLFU7Ozs7O0s7Ozs7Ozs7OztJOzs7Ozs7O08sdUI7Ozs7Ozs7Ozs7O0k7TztLLFc7SyxNOzs7STs7d0I7SztPOzs7O1U7VzthOzs7O2dCO2lCLFE7OztpQjs7Z0I7ZTs7Z0I7Z0I7Z0I7OzswQjsyQixPOzs7MkIsTzswQjs7Ozs7eUI7ZTs7OztVO1M7Ozs7O0ssVTs7SyxNO0k7OztLOztLLDBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0k7SyxPO0s7Tzs7O1U7VTtTOzs7O0s7Ozs7Ozs7OztLLE07O0ksTTs7O0k7O087dUMsOEI7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSztLLE87STtLO00sTztNLGM7Ozs7Ozs7Ozs7Ozs7OzthOztLLGtCO0s7O3VCLDZDO0s7O0k7STtJO0c7Ozs7Ozs7Ozs7O0k7SztPOzt5QixrQixZOztLO087STtLOzs7UyxXO1MsVztTLFk7OztpQjtXLFc7Vzs7O2Msa0IsUTs7ZSxNO2M7YTs7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7SztPO0s7TztLOzs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7OztJLGtCO0ksTzs7OztjO2UsTTtlO2U7ZTtpQjs7OztxQjtxQjtxQixPOzs7K0I7K0IsTzs7OEI7O29COztvQjtxQjtxQjt1Qjs7OzBCOzs7OzJCOzZCOzs7Z0M7aUM7bUM7Ozs7c0MsTzs7cUM7aUM7aUMsVztpQzs7aUM7Ozs7O2lDO2dDO2dDOzs7Ozs7Ozt3Qzs7Ozs0Qzt5SDs0QzsyQzs7K0I7O2dDO2dDLE87OytCOzBCOzBCOzs7Ozs7Ozs7OzsyQixPOzBCOzs7Ozs7Ozs7eUI7O3FCO3VCOzt5QywwQixpQjs7cUI7dUI7OzswQjswQjt5Qjs7Ozs7c0I7dUIsa0I7O2tDOzs7cUI7c0IsOEIsVzs7OztvQixhOztxQixPOzs7K0I7K0I7OEI7O29CO29CO29CLEc7cUI7O3dCOzt5Qzs7cUI7cUI7O29COztrQyxPLGlCOzs7cUIsVztvQjs7O3VCO3VCLE87NEQ7O3NCOztvQjs7Ozs7bUI7Ozs7O2UsVztlO2lCOzs7b0IsTzs7OzhCOzs7Ozs7OytCO2lEOytCOzttRCxlO21ELGU7OzsrQjs7OztrRDs7Ozs7OEIsTzs7Ozs7Ozs7NkI7O21CO2tDO2U7YztlO2dCLE87K0I7Ozs7ZTtnQjtrQjtnQjs7bUIsWTs7bUI7O2dCO2tCOzs7cUI7Ozs7O3NCO3NCLFE7OztzQixNOztxQixtQjtxQjtvQjs7Ozs7O2U7Z0I7a0I7OztxQjtxQjtvQjs7Ozs7YztlO2lCOztrQzs7ZTtpQjs7a0M7Ozs7O2UsTTs7Ozs7OztlOzs7a0I7OzttQjtrQixPOzJCOzs7OytCOztnQzs7OztpQztpQyxPOzs7O2tDOzs7cUM7OztzQztzQyxvQjs7b0M7O2lDOzttQzt3Qzs7Ozs7Z0Q7OztpQztrQzs7OztzQzs7a0MsTztrQyxRO2tDLE87OztrQyxPO2lDOzs7Ozs7Z0M7OytCOzhCOztpQjs7ZSxPOzs7Ozt5Qjt5Qjt3QjtjO2M7ZSxrQyx1Qjs7ZTs7O2U7ZTs7Yzs7O2M7eUM7YTs7OztJOzs7SztPOzs7VSxXO1M7O0k7OztlOztrQjs7O3FCO3FCO29COztlLE87Yzs7Ozs7Ozs7YztjOzs7Ozs7OztjOzs7O2M7Ozs7YTs7Rzs7O0ksTzs7Ozs7YztlOzs7O2U7Ozs7ZSxPO2UsUztjO2tDO2M7YTtHOzs7Ozs7Ozs7STtLLFE7SztPLDJDOztLO087Ozs7VztXOzs7YyxvQjtjLGM7YTs7O1c7VyxPOzs7cUI7cUI7O3FCLHlCO3FCOztvQjs7O1U7O1UsOEI7VTtXO2E7OztnQjtpQjttQjs7cUMsTyw0Qjs7aUI7aUIsa0I7aUIsVzs7OztpQixPOzs7OzsyQjs7OzBCOztnQjtpQjttQjtpQjs7O2lCOztnQjtpQjs7O29CLFk7Ozs7c0I7Ozs7O3VCLE87Ozs7OztvQjtvQjs7bUI7OztnQjs7O21CO21COzhCOzs7O2tCOztnQjtlOztnQjtnQjtnQixPOzt1QyxxQzs7ZTs7Ozs7O1c7VzthOzs7Z0I7OztpQixPO2dCO2U7O1U7eUMsTyxpQjs7O29ELGU7OzBELGU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVO1c7VzthOzs7Z0IsTzs7Ozs7MEI7MkIsTzsyQixPOzBCOzs7MkI7NEIsTzs0QixPOzJCOzs7Ozs7OzBCO3lCO2U7O1U7VyxxQjt5RDtXOzs7O1c7OztnQjs7YSxNOzs7O2U7OztrQixzQixPO2tCLE87OzRCO2lCOzs7Ozs7O1U7VztXO1c7YTs7O2dCLE87Ozs7OzBCLGlDOzBCOzJCOzJCOzJCLE87MEI7Ozs2Qjs4QixLOzhCLE87OEI7OEI7NkI7Ozs7NkM7c0Q7OzhCOztpQzs7aUM7O2tDLE87aUMsTztnQzs2QixPOzs7O3VDOzs7Ozs7O3VDLFc7dUM7Ozs7c0M7NEI7OzBCO3lCO2U7OztXO2E7OztnQjtnQjtnQjs7aUI7aUIsUTs7aUI7OztrQjtvQjs7O3VCO3NCOzt1Qjt1QixPO3NCOzs7a0I7b0I7Ozs7O3VCO3NCO2lCOztnQjs7bUI7Ozs7O3NCO3NCO3FCO2dCO2U7Ozs7OztXO1ksVTs7O1c7Ozs7NkIsTyx5Qzs7VTs7YTs7O2dCO2dCO2U7OztVOzs7YTthLE87Ozs7O3VCO3dCO3dCLFM7dUI7dUI7c0I7WTs7O1U7Ozs7O2tCOzs7cUI7Ozs7O3NCLE87cUI7b0I7O1M7Ozs7O0ssSTtLO087OztVO1U7Uzs7O0k7Szs7O1Esb0I7Ozs7WTs7K0M7O1EsTTtPOztJOzs7TztPO007O0k7STs7O0k7Szs7eUIsZTt5QixlOzs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtLO087Ozt5Qjs7VTtVO1M7Szs7Szs7TTthO0s7O0k7Rzs7SSxPOzs7O2MsTzthO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7YyxtQjs7YzthO0c7O0ksWTtJLG1CLFE7Ozs7Ozs7SztNO1E7O1c7OzthOzs7ZTtNOzs7UyxPOzs7TTs7O08sTztNLFc7O0s7O0k7OztJLFc7OztLLE87STtJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJLE87Ozs7O2M7Ozs7Ozs7O2E7O0c7O0ksSztLLE87STtLLE87SyxPO0ksTztHOztJOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Ozs7Ozs7O1EsTzs7USxPOzs7USxPOzs7USxPOztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7aUIsTztnQjs7Tzs7O1E7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsVztpQixPOztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7Ozs7aUI7O2tCLE87aUI7Ozs7Ozs7O2lCO3lCO2lCLHVCO2dCOzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OzthLG9CLFE7OzhCOzs7Ozs7Ozs7Tzs7Ozs7OztrQjs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztRLE87UTtVOzs7YSxtQjs7YTtZOztPOzs7Ozs7Tzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7aUI7a0IsTztrQixPO2lCLE87O2dCOztPOzs7Ozs7USxVOztRLGM7Ozs7OzswQjs7Ozs7UTtTOztZO1c7Uzs7UztTO1M7O2tCOztTLFc7UyxNO1EsTzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROztXLFc7VyxPO1U7UTs7VzttQjtXLE87VTtPLE87OztPLHNCLE87TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7aUIsTzs7Ozs7MkI7MkIsRzs0QixXOzRCOzs7Ozs7Ozs7OzRCOzZCLE87Ozs2QixPOzZCLE87NEI7Ozs7Ozs7OytCOzs7Ozs7OzsyQjswQjtnQjs7O087Ozs7O1EsWTtRLFM7TyxPOzs7OztpQixPOzs7Ozs7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLE87OzBCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsVztpQjtpQjtnQjs7OztPLE87Ozs7O2lCLE87Ozs7OzJCOzs0QixPOzJCOzsrQzs7MkI7MEI7Z0I7Ozs7TyxPOzs7OztpQjtpQjtnQjs7O08sbUIsTztPLE87O08scUIsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87TyxPOzs7Ozs7Ozs7OztPLE87Ozs7O2lCO2lCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsTzs7Z0I7Ozs7TyxPOzs7TyxPOzs7OztpQjs7Ozs7OztvQjtxQixXO3FCLE87cUIsTztvQixPOzttQjs7b0IsTzttQjs7MkI7Ozs7Ozs7Z0I7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7OztROztXO1ksTzs7WSxXO1ksTzs7O1csVztXLE87Ozs7Ozs7TztRLDRCOzs7USxPO08sTzs7Ozs7Ozs7aUI7O3FDOzs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7TyxxQixPO08sTzs7O087OzJCOzs7O2E7OzsyQjs7MkI7OzJCOzsyQjttQzs7TyxPOzs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7UTs7O1csTzs7USxPO1EsTztPLE87Ozs7Tzs7Ozs7OztpQixPOztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTzs7Z0I7O2lCLE87Z0I7OztPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztROztXLFc7VyxPO1U7UTs7Vzs7O1k7WTtjO1csTzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7OztpQjs7O08sc0IsTztPLE87Ozs7SSxPOzs7OzZCLDJCO0c7Rzs7O007O087O3FDOztNO0s7Ozs7STsyQjtHO3NDLGtDOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJOzs7USxNO087SSxvQjs7Ozs7O0k7SyxPO0ssTztLLE87SSxXO0c7cUIsc0MsWTs7O0k7SyxROzs7O0ssTTs7Ozs7OztrQjtHOztJO0ksTztHOztJLFc7STtHOztJLFc7STtLLFE7SyxRO0ksdUI7SSxNOztHOztJO0k7OztNOzs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxNO0ksTzs7Ozs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7O2U7YztjOzs7aUI7OztrQixVOzs7aUIsRztrQixNOztpQjtrQixVOzs7a0IsTztpQjtpQixXO29CO2tCO21CLE87bUIsTztrQixNOzs7aUI7a0I7b0I7Ozt1Qjt3QixNO3dCO3VCLEksc0M7Ozs7Ozt3QixNOzs7c0I7OztrQjtpQjtpQjs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsVztrQjtpQixJOzs7O21CLE07Ozs7aUI7O29COzs7Ozt1QixPOzs7O3NELDhCOztrQyxPOzs7OzJELGEsa0I7aUM7aUM7Ozs7b0M7OzhDOzhDOzhDOzhDOzZDOzs7Ozs7OztvQzs7OEM7K0MsTTsrQzs4Qzs4Qzs2Qzs7Ozs7Ozs7b0M7OzhDOytDLE07K0M7Ozs7K0M7O2dELGM7K0M7K0M7Z0QsTTtnRDtnRDs7O2lEOzs7b0QsSSxNLHFDO29ELEk7Ozs7OztxRCxNOzs7Ozs7bUQ7OytDOzs4QzsrQyxNOytDOzhDOzhDOzZDOzs7Ozs7b0M7OzhDOytDOzs7OEM7NkM7OztvQztvQzs7O29DLE07K0Q7Ozs7O3NCO2lCO2lCO2tCO2tCO2lCOztpQjs7OztrQixNO2tCO2tCO29CO3VCOztrQjtrQjtpQjs7O2lCLE07NEM7OztpQjs7O2tCLFU7OztrQjtpQjs7YTtHOztJO0k7SztLLE87STs7Ozs7Ozs7OztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7SztPOzs7VTs7OztXLE87VztXO1U7Uzs7Ozs7SSxJOzs7O00sTTs7OztJO0s7SztLO0s7SztLOzs7Ozs7Ozs7O0s7Tzs7Ozs7VSxPOzs7b0I7Ozs7Ozs7OztxQjtxQjtvQjtxQixPO29CO29COzs7Ozs7O3VCOztpQzs7O2lDO2lDO2lDO2tDLGM7a0MscUI7a0Msb0I7a0M7b0M7a0M7b0M7aUM7Ozs2RDs7O3lDO21DOztxRDttQzs7eUM7bUM7MEQ7bUM7Ozs7a0M7bUMsTzttQyxjO2tDO21DLE07OztpQztrQztvQztrQztvQztrQztvQzs7O3VDOzs7Ozt3Qzt3Qzt3QyxLO3dDO3dDLFM7dUM7c0M7Ozs7Ozs7a0M7b0M7Ozt1QyxzQjtzQzs7OztrQzs7bUM7bUM7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7O2tDO2lDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7O2tDOztxQzs7O3dDLE87dUM7cUQscUM7a0M7Ozs7dUMsVzs7Ozs7b0M7O3FDO3FDO3FDLEs7cUMsUzs7Ozs7Ozs7Ozs7Ozs7O2tDO21DOzs7Ozs7Ozs7bUM7a0M7Ozs7Ozs7OztpQzs7O3VCOztpQyxHO2tDLE07Ozs7Ozs7aUMsRzs7bUM7OztrQyxNOzs7Ozs7O2lDOztvQzs7O3VDLE87c0M7O2lDOzs7O3NDLFc7Ozs7O21DOztvQztvQztvQyxLO29DLFM7Ozs7Ozs7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7OztrQztrQztvQztrQztvQztpQzs7Ozs7Ozs7O2dDOzs7Ozs7Ozs7d0I7O2tDO21DLFE7bUMsTTttQztrQztrQzttQzttQztrQzs7Ozs7Ozs7O2lDOzs7dUI7O2lDLEc7a0MsTTs7O2lDLEc7O21DOzs7a0MsTTs7Ozs7Ozs7O3FDOztpQzs7O2tDO21DOztvQyxRO29DLE07Ozs0QztrQzs7O21DLGM7Ozs7O3VDO3dDLE87d0MsTzt1Qzt1QyxXO3VDOzs7dUM7OztnRDt3QyxNO3VDOzs7Ozs7bUMsTTs7Ozs7Ozs7bUMsTTs7Ozs7Ozs7a0M7bUM7bUMsZ0I7bUM7Ozs7Ozs7OzttQzttQztxQzttQztxQztrQzs7Ozs7Ozs7OztpQyxNOztnQzs7Ozs7O3VCOztpQztrQzs7O2tDO2tDO2lDOzs7Ozs7Ozs7Z0M7Ozt1Qjs7aUM7a0M7a0MsZ0I7a0M7a0M7aUM7Ozs7Ozs7OztnQzs7O3VCO3VCO3dCO3dCO3VCOzs7Ozs7Ozs7Ozt1QixNO2tEOzs7Ozs7UztLO0ssUzs7STtJO0k7O087OztVLFc7VSxPO1M7Ozt3QjtLLE07O0k7STs7SztPOzs7VTs7Ozs7Ozs7NEIsZTs0QixlO1c7VyxPO1c7Ozs7OztjO1UsTztTOzs7O087OztXO1c7O2M7Ozs7Ozs7O2U7aUI7OztvQjtvQjs7bUI7OztjO2U7O2dCO2tCOzs7cUI7cUIsTztvQjs7O2dCLEs7Z0Isb0IsZTtnQjtnQixPO2dCLDZCOztrQjs7OztjO2U7Ozs7O2M7Ozs7Ozs7O2U7Ozs7O2U7ZTs7OztjOzs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7ZTtlOzs7O2M7Ozs7OztlO2U7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsSztxQjtxQixPO3FCLFk7cUI7dUI7OzswQixPOzt5QjtxQjtxQjtvQjttQjs7O2M7Ozs7O2U7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsWTtxQjtxQjt1Qjs7cUIsWTtxQjt1Qjs7OzBCLE87eUI7cUI7b0I7bUI7OztjOzs7O2U7Ozs7VztVOzs7O0ssVztJOzs7OztJOzs7SSxPOzs7OztjOzthO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPO1E7VTs7MEIsTyw0Qzs7USxVOzs7USxTO1EsTztPO08sVztVO1E7UyxPO1MsTztRLE07OztPOzs7VTtVO1csVztXOzs7Ozs7VyxNOzs7Uzs7O087TztRO1E7Ozs7Tzs7Ozs7Ozs7Tzs7UTs7O087Ozs7UTs7OztTO1MsTztTLE87b0I7UyxPO1MsTztTLE87UyxrQjtTLE87UyxPO1MsYTtTLE87UyxPO1MsUztTO2U7UyxPO1MsTztTLE87UztXO1E7O087OztRO1U7OzthLE87O1k7O2E7YTs7YyxPOzthLE87WTs7Ozs7UTtVOzs7YTs7O2M7YyxLO2MsTzs7YyxXO2E7OztnQzs7Ozs7O1k7O1EsTztRLFE7UTtVOzs7Ozs7O1E7VTs7O2E7O1k7USxPO087Ozs7OztVOzs7Ozs7Ozs7Ozs7Ozs7TyxTO087OztRLGM7Tzs7Ozs7Ozs7O087USxNO087UTtVOzs7YTs7WTt5QixvQzs7Ozs7O1E7OztTLEc7O2M7O1E7UyxPO1MsTzs7Uzs7WTs7OEIseUM7O1M7VTs7YTs0Qyx1QjtVO1c7WTtjOzsrQjs7WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7Ozs7YTs7YyxtQjtlO2dCLEs7Z0IsTTtnQixNO3VCOzs7eUI7O2E7WTs7O2EsVztZOzs7O1csTTs7Ozs7OztxQjs7OztZOztjOzs7aUI7aUIsaUI7Z0I7Ozs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7UztXOzs7YztjO2E7OztTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVTs7O1EsTztRO1U7OzthOzs7O2M7YyxLO2M7Z0I7OztrQyx1Qzs7YyxXO2M7OzJCOzs7Ozs7YztjLE87YyxPO2E7O3FCO1k7Ozs7O1E7O1Esb0I7Tzs7Ozs7Ozs7Tzs7O1E7VTs7OztjOzs7ZSxPO2M7YyxXO2MsTzthOzthO2M7Z0I7OzttQjs7OzttQjttQjtrQjtjO2dCOzs7bUI7bUI7bUI7a0I7YTtZOzs7USxROztRLE07O087UTs7OztRLE87USxPO087Tzs7Ozs7Ozs7O08sTTtrQzs7Tzs7O1E7UTtVOzs7O1U7UTs7Tzs7O0c7SSxNO0ksYTs7Ozs7STtJOzs7O1E7OztTO1c7YztjO1M7UztRLE87Ozs7O2dCLE87OztHOztJO3VCLE87STs7O0s7TztVO1U7SztLO0ksTztHOztJLEksaUI7Ozs7O3NCO007Ozs7O0k7SyxPO0ssSzs7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1c7Ozs7WSxPO1c7VyxPO1U7O1U7OztXO1ksZTtZOzs7OzthLE07Ozs7VTtXLFk7VzthOzsrQixvQixjOztXO1U7OztXO1ksTTtZLE87Ozs7OztXLE07O1UsaUMsTztVO1M7Ozs7Ozs7SyxVOzs7SyxTO0ssTTtLLE87STtJO0ssVztLOzs7OztNLE07Ozs7O0ksUztJLEk7Ozs7SywyQjtLLE07O0ksVztJO0k7SyxVOzs7SyxPO0k7SyxXO0s7Ozs7O00sTTs7OztJLEk7Ozs7SyxrQjtLLE07OztJO0s7TSxPO007Szs7Ozs7O0ssTTs7O0k7SyxPO0ssZTtLOzs7Szs7O1E7Ozs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7Ozt3QjtLOztLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztLLE87SyxVOzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7O0s7OztROzs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7O0k7Ozs7STs7Ozs7Ozs7Ozs7Ozs7STtLLFE7SztPOzs7VTtXLE87VyxPO1csTztXLE87VTs7a0I7Ozs7Uzs7SztPOzs7O1U7VzthOzs7Z0I7Ozs7Ozs7O2lCLFE7aUI7Ozs7aUIsUTtpQjs7OztpQjttQjs7cUMsaUM7O2lCLGdCO2lCOzs7O2lCOzs7Ozs7Ozs7O2lCOztzQjs7aUI7bUI7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7Ozs7VTtTOzs7SztPOzs7VTs7Ozs7Ozs7Ozs7OztXO1UsSTs7Ozs7VyxNOzs7VTtVO1U7VTtVO1U7VTtVLFc7VTtZOzs7ZSxrQjtlLE07O2M7O1U7VyxPO1csUTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OEIsTyx3Qzs7O2dCLE87ZTtVLE07Ozs7SyxRO0ksSSxjOzs7Ozs7SyxNOztJO0ssUTtLO087Ozs7Ozs7Ozs7VTtXO1ksTzttQjs7O1U7VyxPO1csTztXLE87VSxPOzs7O0s7Tzs7O1U7Ozs7Ozs7Ozs7OztXOzs7VyxrQjs7WTs7O2EsVTs7O2EsVTs7O2EsTztZO1ksSTs7Ozs7O2EsTTs7O21CO2EsTTs7OztXLE07O1U7Ozs7Ozs7Ozs7Ozs7O0k7RztHOztJO0k7SyxhO0s7O1M7Ozs7OztJO0k7Rzs7STtLLGE7SztJO0k7Rzs7STtLOzs7SztPO3VDLDZCO0ssVTs7O0k7STtHOztJO0c7O0k7Szs7O0k7WTs7O2U7Ozs7Ozs7O2M7OztHOztJO0k7O0s7O1M7Ozs7Ozs7O0k7SSxZO0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7UTtROzs7USxPOzs7a0I7cUM7O2tCO2lCOzs7OztROzs7OztpQjs7Ozs7Rzs7STtLLE87SyxPO0ssTztJO0c7O0k7Szs7Yzs7O0k7O3NCOztJO0c7O0k7O087O087ZTs7Rzs7SSxPOzs7OztjO2U7Z0IsTztnQixTO2UsTztjO2M7dUI7d0IsTzs7OzswQjswQjs7Ozs7Ozs2QixPOzRCOzs2QixPOzRCOzBCLE87OzswQixPOzs7Ozs7O29DLE87O21DOztvQyxPO21DOzswQjs7OzsyQixPOzBCLE87OzswQjs7MkIsTzswQixPOzswQixPOzswQjs7MkI7OzhCOytCLE87OEIsVzs4QixPOzs7MEIsTzs7OzBCOzsyQixPOzBCLE87Ozs7Ozs7OzBCOzsyQixPOzBCLE87OzBCOzsyQixPOzBCLE87Ozs7OzswQjs7MEI7MkIsTzsyQixPOzJCLE87MkIsTzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsVztvQyxPOzttQzs7b0MsTzttQzs7MEI7Ozs7MkI7MkI7Ozs7MkIsTzsyQjs2Qjs7MEIsTzs7Ozs7Ozs7OzswQjs7OzJCOzJCOzZCOzswQixPOzs7MEI7Ozs7MkIsTzswQixPOzs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsTzttQzs7b0MsTzttQzs7MEI7Ozs7MkIsTzswQjswQixXOzBCLE87Ozs7Ozs7Ozs7OzBCOzs7OzJCOzs4QixPOzs2QjsyQixPOzBCOzBCLFc7MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87OzswQixPOzs7MEI7OzsyQjs7OEI7Ozs7K0I7OytCLG1COzhCOzhCOzhCOytCLE87OEI7OEI7K0IsTzsrQixPOzhCLE87Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7Ozs7OzswQjswQjs7MkIsTzsyQjs2Qjs7OztpQyxPO2dDOzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7MEI7Ozs7MkIsTzsyQixPOzBCLE87Ozs7Ozs7b0MsTzs7Ozs7Ozs4QyxPOzZDOzs4QyxPOzZDO21DOzs7MEIsTzs7Ozs7OztvQyxPO21DOztvQyxPO21DOzs7Ozs7OzBCLE87Ozs7OzJCLE87OzswQixPOzs7OzBCLE87OzswQjs7MkI7MkIsTzswQixPOztzQjs7YTtHO0c7OztNOztPO2U7Ozs7c0M7OztxQzs7TTtLOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7STs7d0Isc0I7O2lDOztPLE07OztPOztHOztJLFk7OzswQjs7O08sTTtlLE07O0c7O0ksWTs7OzBCOzs7TyxNOztPLE07O0c7O0k7SyxPO0s7Tzs2QztJLFM7STtJLE07Rzs7STs7SztNLFM7TSxPO0s7SyxVO0s7STtJO0ssTzs7O2UsVztlLE87Yzs7O0k7STtLLE87SyxROzs7Szs7O08sSztROzs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTtJLE87O0c7O0k7SztPOzs7OztVO1M7OztLO0k7RztHO0k7OztRLE07Tzs7OztJOztPLDJDO0ksTzs7O2M7OztlLE87YyxPOzs7d0IsVzt3QixPOzt1Qjs7YTs7Rzs7STtLLFc7SztLLE07O0s7O00sbUI7TSxROzs7OztJO0ssWTtLLFM7SyxPO0ssTztLLFE7STs7O2M7OztJLFk7STtJLE87OztJO0k7OztROzs7OztRO1E7USxPOztRLE07O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7Ozs7STtHOztJLEkseUI7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7OztjLGlCLE87Yyx1QztjOztlOzs7Ozs7Ozs7Ozs7Ozs7bUIsTzs7OztjOzs7YTs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OzJCLFM7O0ksTztHOzs7Ozs7Ozs7Ozs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEc7UTs7TSxxQjs7OztJOzs7OztNOztLO0s7Ozs7Ozs7Ozs7OztZOzs7Ozs7Z0I7bUI7YTtjLFE7YyxPO2MsTzs7O2MsTztjO2dCOzs7bUI7Ozs7Ozs7O21COzs7O29CLE87b0IsTzttQixPO2tCOztjOztpQjs7bUMsTywyQjs7Ozs7Ozs7Ozs7Ozs7O2MsTztjLFM7YztnQjtjLFk7YztnQjs7Ozs7Ozs7YztjOzs7O2E7Ozs7Ozs7O2E7Yzs7Ozs7Ozs7Ozs7Ozs7OztjO2M7Z0I7Ozs7YTs7Ozs7Ozs7Ozs7WSxHOzs7O2EsTTs7O1ksYztZOztZOzs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7UyxHO1U7VyxVO1c7YTs7Vzs7Vzs7OztXLFc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHO2M7ZSxZO2U7ZSxRO2U7ZSxVO2M7Yzs7Ozs7Ozs7YSxHO2M7ZSxZO2UsZ0I7Yzs7O2M7Ozs7OztTLEc7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7Ozs7O1ksRzthO2MsWTtjOzs7Yzs7O2E7YztlLE87ZSxPO2U7Yzs7Ozs7YTs7OzthOzs7Ozs7O0s7OztLOztROzs7Vzs7OztNLE07OztLO0k7STtLO00sUTtNOzs7Szs7Ozs7TztROzs7USxVOztRLE07Tzs7O1E7O1EsTTs7Ozs7OztjOzs7O2dCO2tCOzs7cUI7b0I7O2lCO2tCOzs7Ozs7Ozs7O2lCLE07Ozs7O2MsTzthOzs7Ozs7Ozs7Ozs7Ozs7Yzs7O3dCOzsyQjs7NEMsd0M7Ozs7eUI7Ozs7Ozs7OzswQjsyQixjOzJCLFU7MkIsUTs7Ozs0Qjs7NkI7K0I7Ozs7NkIsTTs7Ozs7Ozs7Ozs7OzBCLE07Ozs7O3dCO3VCO2E7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7Ozs7OztVO1csTTs7Ozs7Ozs7YTs7O2MsTztnQjthO2M7OztpQixrQjs7Ozs7O21CLGE7Ozs7O2lCLE07Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxJLGM7Ozs7YSxNOzs7Ozs7O2UsTztjOzs7VztZLE87O1c7WSxNOzs7OztlLE87Yzs7VTtXLE07VzthOztrQjs7O1U7O1csUTtXO2E7OztnQixPO2U7OztrQjs7O1U7O1cscUIsTyxvQztXLFE7VyxRO2tCOzs7Ozs7Ozs7Szs7SztLOzs7Ozs7SyxNOzs7OztJO0s7SztPOzs7VTs7OztVO1M7OztLLFE7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7O087O1EsTztPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O08sOEM7Tzs7O1U7OzthO2E7OzthO2E7cUI7O1M7O087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7OztROztTLFU7UztXOzs7YyxPOzs7d0I7d0IsVzt1Qjs7YTs7UztXOzs7YztjLE87YTs7O1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7O1E7O1M7UztTLFU7UztTLFU7OztTO1EsTzs7O1E7O1MsVTs7O1M7Uzs7O2M7OzthOzs7USxPOzs7O0c7O0k7STtZOzs2Qjs7Ozs7Rzs7STtLO0ssTztLLE87SyxPO0ssTztLLE87SyxPO0k7O2E7Ozs7Ozs7O0c7O0k7Ozs7Tzs7Ozs7Ozs7eUI7Ozs7O3lCO3lCOzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxRO2dCLE87OztLLE07OztJO0k7SSxPOzs7YztlOzs7Ozs7YTs7Rzs7STs7OztJO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7O0k7OzBCOzs0Qjs7NEI7OzRCOzs0Qjs7NEI7b0M7O0c7O0ksVztJLE87OztjO2UsTztlLE07ZTtpQjttRDtjLE87Ozt3Qjs7Ozs7d0I7dUI7Ozs7Rzs7STs7SztPOzs7VTtVLE87Uzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGlEOzs7O2E7TztRLG9CLGU7USxPO1E7VSx5QyxlO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOztJLE87Ozs7O2MsbUI7OztpQjs7a0I7aUI7OztpQixvQjtpQjs7OztrQjs7O21COzs7bUI7O29CLFE7b0IsTztvQixPO29CO29CO3NCOzs7Ozs7Ozs7Ozs7OztpQjtpQjs7O2lCOzs7a0I7a0I7a0I7O2tCO29COzs7Ozs7Ozs7Ozs7OzBCOzs7MkIsVTs7Ozs7OzswQjs7OzJCOzs7OzswQjs7OzJCOzs7Ozs7Ozs7Ozs7MEI7OzsyQixVOzs7MkI7Ozs7dUI7d0I7Ozs7Ozt3QixVO3VCOzs7Ozs7a0IsVTtrQjtrQixPO2lCO29DOzs7Ozs7aUI7O2tCLFE7a0I7b0I7OztpQjs7O2lCLE07NEM7OztpQjs7a0I7a0IsTztpQjs7YTtHOztJO0s7Ozs7SyxPO0k7Rzs7SSxpQzs7SyxTO0ssZ0MsZTs7O1E7O1MsVTs7O1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7O1E7O3VCLDBDOztRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7UTs7O1c7Ozs7Ozs7O1ksTTs7VztZLE07Vzs7WSxPO1ksUTtZO1c7VTs7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTs7d0IsOEM7O1E7Uzs7OztTOzsrQixrQzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTtRO1M7Ozs7UztROztROztTLFE7UztXOzs7OzZCLG1DOztTLE87UyxPO1M7OztTOztVLFc7OztTOzs7OztRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7Uzs7OztROzs7Ozs7Ozs7OztROztTOzs7UztXOzs7YyxtQzswQjs7YzthOztROzs7VztXO1U7O1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O1E7Ozs7b0I7O3NDLG1CLFU7Ozs7Ozs7O1E7O1M7Ozs7UTtRO1M7Ozs7UztROztROztTOzs7Uzs7UyxNO1E7O1M7UyxRO1M7Ozs7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztTO1c7Ozs7NkIsaUM7UztTLFU7UztTLFc7Ozs7O1E7O3lCOztRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7UTs7O1c7VztXOztVOztRO1M7Ozs7Uzs7O2M7Ozs7O2E7OztTLE87Uzs7OztlO2lELGdCOzs7O1E7O1E7O1MsVzs7O1E7OztXO1c7O1U7O1E7Uzs7OztTOzs7Yzs7O2E7OztTLE87Uzs7OztlO2lELGU7Ozs7UTs7O1E7USxpQzt1QjtRO1M7Ozs7UTs7Ozs7O1EsTTttQzs7OztJLDJCO0ksTzs7Ozs7YztlLG1COzs7O2U7ZTtjO2M7YTs7O0ksTzs7Ozs7Yzs7Ozs7ZSxPO2U7aUI7O2tDOztlLE87ZSxPO2U7O2tCO2tELFk7Ozs7ZSxRO2UsUTs7O2U7O2M7YTtHOzs7SyxPOzs7ZTtlLE87Ozs7eUI7eUIsTzs7d0I7O2M7OztJOztLLE87OztlOzs7O2dCO2tCOzs7O29DLHFDO2dCO2U7Yzs7O0k7STtLLE87OztlO2UsTzs7d0MsbUIsbUI7O2M7O0k7STtLLFE7SztPOzs7VSxvQixPO1UsTztTOztLO087OztVLE87Ozs7b0IsVztvQixPO21CO1M7OztLO087OztVO1csTztXLFM7Ozs7Vzs7Yzs2Qyw2Qjs7OztXO2E7OzRCLGUsa0M7O1U7Uzs7O0s7SztPO3NDLDhCO0s7STtJLEksK0I7STtJOztPOzs7VTs7Ozs7Vzs7O1c7O2M7aUQ7Ozs7Ozs7VzthO2dEO1U7Uzs7O0k7RztHO0k7OztJO0k7Ozs7MEI7Ozs7UztTOzs7Ozs7SyxNOztHOztJLEksc0M7Ozs2Qjs7O0c7Ozs7OztROztRLHFCLFE7USxPOzs7a0I7O3FCOztzQixPO3FCLE87OEI7aUUsdUI7Ozt3Qzs2Qjs7Ozs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7OztnQjs7OztJO0ksTzthOzs7Z0I7OztpQixTO2lCO2dCLE07O2U7O0c7O0ksTzs7O2M7O2lCOztrQixPO2lCLE87MEI7Ozs2Qjs4QixTOzhCOzZCLE07OzRCOzs7O2lCO3lCOzs7O0c7RztJO00sMEMsZTs7O0k7O0ssTzs7STtHOztJLGtCO0ksWTs7OztPLE07OztPO2U7OztrQjs7OztzQjs7Ozt1QixXO3NCLEc7dUI7d0IsVzt3QixLO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3dCOzBCO3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7O3NCOzt5Qjt5Qjt3Qzs7Ozs7OzRCLFE7NkI7Ozs7Ozt3Qjs7OztzQjtzQjs7Ozs7O3FCOztrQjtpQjs7ZSxNOztHOztJOzs7Ozs7Uzs7O1ksZ0MsTztZLFc7Vzs7SSxPO0c7OztLOztROzs7Vzt3QjtVOztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtnQjs7ZTtrQjs7STtHOzs7SSxPOzs7OztjOzthOzs7Ozs7Tzs7USxPO1E7USxnQjtRLFE7Ozs7dUI7Ozs7Ozs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7O087OztROzs7UTtROzs7OztPOzs7O087O1E7VTs7NEIsTyxvQzs7USxPO1EsVTs7OztXLE07Ozs7VzthOzs7Z0I7NkI7ZTs7WSxNOzs7Ozs7cUI7O29CO1c7WTtZLG9CO1c7WSxNO1c7Ozs7TyxNOzs7O08sTTtrQzs7OztPOzs7O1c7OztZOzs7WTtZOzs7Ozs7b0I7WTs7Ozs7Vzs7WTtZOzs7Ozs7O087UTs7O2dDO1c7O1E7O2E7O1E7OztPLE87OztpQjs7O2tCLGM7Ozs7O3FCLGdDOzs7O3VCLE07O3NCO3dCOzt5QixPO3dCOzs7OzsyQjs7cUI7c0IsTTs7cUIsVztxQjs7OztvQjs7Ozs7O3dCO3lCOzJCO3lCO3lCOzs7Ozt3QixNOzs7dUI7cUI7OzsrQjs7Ozs7O29CO3FCO3NCO3dCOzs7Ozs7Ozs7b0I7cUIsd0IsUTtxQjs7OytCOzs7O2lDOzs7O3NCOzt1QixRO3NCOztzQjt1Qjt3QixPOzs7Ozs7Ozt1Qjt1QixNOzs7Ozs7OztzQjt1Qjs7MEI7Ozs7Ozs7dUI7Ozs7dUI7Ozs7b0I7O29COzs7Ozs7OzRCOzs7b0IsTTs7O29CO3FCO3VCO3FCO3FCOzs7OztvQixNOzs7Ozs7Ozs7O0ksTzs7Ozs7Yzs7ZTs7Z0I7Ozs7Z0I7Z0I7ZTs7YztlOzs7ZSxRO2U7ZTtpQjs7Ozs7Ozs7Ozs7Yzs7O2lCOzs7YztlO2lCOzs7b0I7Ozt1Qjs7O3VCOzs7dUI7Ozs7Ozs7dUI7Ozt1Qjs7O3VCOzs7dUI7O21COztlO2M7YTtHOztJLGlDOzs7Szs7UTs7O1M7Vzs7Ozs2QixPLHVDO1E7O1E7OztTLFE7OztTLG9CO1MsTztTO1c7OztjOzs7OztjO2MsUztjOztzQjthOzs7OztROztnQjs7OztROztTLFU7OztRO1E7Z0I7UTs7Ozs7O1E7OztTLFU7Ozs7UTs7dUIsMEM7O1E7Uzs7O2dDLG9DOzs7UztXOzs7YztjLE87YTs7Ozs7Ozs7WTs7O2U7OztnQixjO2dCLFM7ZSxPO2M7Ozs7O1E7O1E7O1MsVTs7OztTO1M7Vzs7O2M7YyxPO2E7Ozs7UTs7O29DLGtDOzs7Ozs7UTs7UyxVOzs7O1M7UTtRO2dCO1E7Ozs7OztROzs7Ozs7UyxjO1MsVTtTO1c7Ozs7O2M7Ozs7Ozs7Ozs7OztjO2E7Ozs7UyxPO1MsUztTOzs7Ozs7UyxhO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7UztXOzs7Yzs7ZSxNOzs7Ozs7OztjO2E7O1M7OzthOzs7Z0I7Ozs7O2dCO2U7Ozs7UTs7O1c7VyxPOzs7cUI7OztVOztRO1M7Vzs7O2M7Ozs7Ozs7OztlO2lCOzs7OztvQjs7Ozs2Qjs7O21COzs7ZTtjO2E7OztTO1c7OztjOzs7Ozs7O2MsYTtjLG9CO2MsTzthOzs7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7O1M7O1k7OztlOzs7O2dCO2tCOzs7cUIsVztxQixlO29COztlO2M7OztTO1U7WTs7O2U7ZSxVO2U7Ozs7Z0I7Ozs7O2UsTzs7Yzs7O1U7WTs7O2U7ZSxVOztlLE87Yzs7Ozs7Ozs7O1E7OztZOzs7Ozs7Ozs7O2EsYTthOztZO2E7O2dCOzs7Ozs7Ozs7Ozs7OzthLE07OztZOzs7YTs7Ozs7OzthO1k7O1MsWTtTO1c7OztjO2MsTzs7b0MsK0I7O2E7O1M7Vzs7O2M7YyxPO2E7OztTOzs7YztjO2E7OztROztpQjs7bUMsbUIsVTs7Ozs7O1E7O1M7Ozs7UTtROztTLE07UTs7UTs7Uzs7Ozs7UTs7UTs7UyxXOzs7UztXOzs7YztjO2M7YztjOzs7O2UsUTs7O2UsUTtlLEk7OztjLE87YTs7O1M7OztjOzs7OzthOzs7UyxPO1E7O2lCOztpQyw2Qjs7Ozs7O1E7O1MsVzs7O1M7Vzs7O2M7YztjO2M7Ozs7ZSxRO2UsSTs7O2MsTzthOzs7Uzs7O2M7OzthOzs7UyxPO1E7O2lCOztnQyxnQzs7Ozs7O1E7O1M7UztXOzs7OztjO2E7OztTLFU7UztTO1c7Ozs7O1E7O3lCOztRO1E7OztRO3lDO3VCO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7OztJO0k7Rzs7RztJOzs7RztJOztHO0k7Ozs7OztHO0k7OztJLE87Rzs7STs7OEIsTzs7O087Ozs4Qjs7O21COzs7ZTs7Rzs7STtLO0s7O0s7O00sVTs7Ozs7O0ksVTtJO0k7Rzs7STtLOzsyQjs7O1E7O1EsTTtNO0c7O0k7SztPOzs7VSxPOzs7O29COztxQixRO29CO21CO1M7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTtRLFU7OztRO1U7OzthOztnQjs7aUI7O2lCLE87aUIsVTtnQjs7Z0I7O2lCOztpQixPO2lCO21CO2dCO3dCOztZOzs7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNLEk7O0s7TTtROzs7VztXLEk7OzttQzs7O1csSSxXOzs7bUM7OzsyQjtXLFE7VztVOzs7Ozs7Ozs7O0k7OztPO087UTtTLE87UyxPO1E7Ozs7O1MsTTs7OztNOztJO0ssTztLLE87O0s7STtLO2lCOzs7Ozs7SyxNOzs7STs7O0k7Rzs7STtHOztJO0c7Ozs7Ozs7SztNOzs7OztLO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxRO0ssTztLLFc7SSxPO0c7O0ksaUI7STtLLFc7SztLO0k7STtJLE87Ozs7O2U7Z0IsTztnQixhO2U7Yzs7YztjOztlO2M7Ozs7Ozs7ZSxPO2UsSztlLE87ZSxVO2U7O2U7ZSxjO2U7Ozs7O2tCO21CLE87bUIsTztrQixPOzs7Ozs7aUI7ZTtlOztjLGtCO2MsNkI7ZTtnQixPO2dCLE87ZTtlO2dCO2tCOzs7Ozs7Ozs7OztlO2U7ZTtlLGM7O2dCO2lCLFM7aUIsTztpQixNO2lCO2dCOzs7ZTs7Ozs7O3FDOztlO2dCO2lCLE87Ozs7Ozs7Z0I7Z0IsTTs7O3lCOzs7OztjO2UsUztlO2lCOzs7Ozs7Ozs7OztjO2M7ZSxVO2U7YztjO2E7Rzs7SSxXO0ksTztHO3FDLHVDOztJO0c7O0k7O087OztVO1csVztXLE87VyxLO1csTztXLGtCOztXLE07O1UsVztTOztJO0k7SztPOzs7VTs7O1csUTtXLFE7VTtTOztLO087OztVO1UsTztTOzs7SztPOzs7VTs7O1csTztXLE87VyxPO1c7VTtTOztLLFM7SyxPO0ssVztLO087OztVOztXLEs7VyxPO1UsTztTOzs7SyxRLFc7SyxNO0ksRztZLHFCO007TSxNO3lCOztLO00sUzs7UTs7Ozs7Ozs7OztNLE87Szs7Szs7STtLO08sMkM7SyxPO0s7Tzs7O1U7VSxXO1M7OztLO00sTTtNO00sTztLOztJO0c7O0k7OztRLE87O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87Ozs7TyxvQixPO08sTzs7Tzs7USxPO08sTzs7TyxzQixPO08sTzs7TyxzQixPO08sTzs7TyxvQixPO08sTzs7Ozs7Ozs7OztPOzs7USxTO1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7USxTO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7TztPO087O1EsTztRO1U7Ozs7YyxPO2E7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7TztPO087USxPO1E7VTtZOzs7O2dCLE87ZTs7O1EsTztROztXOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7TyxPOzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7TyxrQixPO08sTzs7TyxvQixPO08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7UztXO1MsVztTLHVCOztTLE87UztXOzs7UyxPOztTLE87UztXOzs7Ozs7Ozs7USxPOzs7Ozs7Ozs7OztPOzs7Ozs7USxxQjtRLFk7O1EsTzs7USxPO1E7VTs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087O1E7USxPO08sTzs7Ozs7Ozs7OztPOzs7OztXLHlCLE87VyxPO1U7UTtRLE87TyxPOzs7Ozs7Ozs7Ozs7OztJLE87Ozs7NkIsMEI7RztHOzs7TTs7Tzs7cUM7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0I7Rzs7Ozs7O0ssWTs7Ozs7Ozs7Ozs7TTtPLE07YTs7Ozs7OztJLGE7SSxxQixNO0ksTzs7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzs7Ozs7Ozs7Ozs7OzsyQixxQjs7SSxVO0k7SztPOzs7VTtTOztLLE07SyxNO0ksTztHOztJLFk7O0ksRztLLE07STtLLGU7Szs7Ozs7O0k7Ozs7Ozs7Ozs7O0c7O0ksWTtJOztLO0s7STtHOytCLE8sbUM7O0k7SyxRO0ssUTs7O0k7OztlO0s7OztNLEk7SyxHLHFEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEOzs7O0c7O0ksTzs7O2MsTzthOzs7Rzs7STtJOzs7O1M7O1MsVTtTOzs7UTtLLFU7O2tCOztLO0s7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7RztJO0k7OzZCLDBDOztJO087SztJLE07Rzs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7OztJO0s7SztLLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVO1U7WTs7O2U7ZTtjOzs7VTtZOzs7ZTtlO2M7O1U7Uzs7Uzs7OztVO1U7WTs7O2U7ZTtjOztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxPOzhDO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O00sc0I7Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7TztPLE87OztpQjtpQixPO2dCOzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPO087OztVO1UsTztTOztPOzs7VTtVLE87Uzs7Ozs7TztPOzt5QixvQixPLHNCOztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7UztXOzZDO1MsTztTO1EsTzs7Ozs7O1E7OztTO1c7OzZCLG9CLGdCOztTO1M7Vzs7NkIsbUIsVTs7UyxPO1EsTzs7O1E7O1E7OztTO1csMkM7UztXLDJDO1M7OztTO3NCO1EsNkI7USxPOztROzs7O1M7VywyQztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7UztXOzZDO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7O0ksTzs7O2M7YyxPO2E7OztHO0c7STs7Ozs7O29DLHdDOztJO0k7Ozs7Ozt5RDs7Ozs7Szs7Rzs7STs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7Tzs7SSxPOzs7STs7SyxPOzs7STs7O0ksSSxXOzs7O0s7TSxPO00sTztLLE87O0k7Rzs7STtHOztJO0c7a0Q7Rzs7STtHOztJO0ssTztLLE07SztJLEksVTs7OztLO00sTztNLE87SyxPOzs7STtHOztJOzttQixPO0ksb0IsTTtJOzs7O0k7SyxxQztLLGlCO0k7STtLLE87OztlOzs7OztnQjs7O2U7Yzs7O0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O3lCOztROzs7Ozs7Uzs7O1M7UTs7UTs7Ozs7Uzs7O1M7UTs7UTs7O1M7Vzs7O2M7OztlOzs7YzthOzs7OztTO1E7Z0I7OzttQjttQjs7Ozs7O1E7O1E7Ozs7UztTO1c7OzRCOzs7UztXOzs0Qjs7UztROztROzs7OztTO1M7Vzs7OztjOzs7UTs7O1E7O1E7Ozs7OztTOzs7UztROztROzs7O1M7OztTO1E7O1E7Ozs7UztTO1E7O1Esa0M7UTs7USxrQztROztROzs7Ozs7Uzs7O1M7UztROzs7USxHO1MsTTtRLEksSSxPOzs7Ozs7UTs7UTs7Ozs7O1M7UztROztROzs7UztTO3dCLE8sc0M7UztXOzs7Yzs7OzswQixJOzs7a0Q7OzswQixPOzs7O2MsTzs7Ozt5QixJOzs7aUQ7Ozt5QixPOzthOzs7UztXOzt1QyxPLHdCOzs7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssTzs2QztJOztLO007Ozs7O007SztJOzs7Szs7O0ssWTs7Szs7STswQixrQzsyQix3Qzs7O0k7Rzs7O0ssWTtLLE87STtJOztPLDBDLG1CO0k7RztHO0k7O21DLFc7Ozs7OztJOzs7Ozs7O0ssUztJOzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7OzBCOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPLGtDLE07TztlOzs7a0I7a0I7aUI7Ozs7O08sYzs7Tzs7OztRLE07UTtVOzs7YTthLGM7WTs7O1E7VTs7O2E7YSxjO1k7O1E7TyxXOztPOzs7OztRLE07UTtVOzs7YTthLGM7WTs7TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOztJO3NCOzs7Ozs7OzswQjs7O21COzttQyxnQjs7Ozs7Ozs7OzBCOzs7Ozs7O0k7Rzt5Qiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7O3FCLE87Tzs7O1E7O1csTzs7O3FCLE87O29COztVO08sTzs7Ozs7Ozs7Ozs7cUIsTztPOzs7UTs7VyxPOzs7cUIsTztvQjs7VTtPLE87OztPLE87Ozs7STs7Tzs7Tzs7TztlOztHOztJOztPOztPO2U7O0c7O0k7OztROztRLE87Z0IsTzs7SSxtQjtJLE87OztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1E7Z0I7OztJO0c7O0k7O2tCOztrQjswQjs7SSxPO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtJLE87Rzs7STs7ZTtlOzs7O2lCO2lCOztxQixPOzs7TyxPOztHOztJOzs7O007UTs7eUI7O087OztPLGM7TztPOzs7VTtVLE87Uzs7TyxPOztNO00sTzs7O0k7Rzs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTztnQixPOzs7Ozs7NkI7Ozs7Ozs7Ozs7Ozs2Qjs7NkI7OzZCOzs2Qjs7OEI7OzhCOzs7OztXOztXOztXOztXOztXO21COzs7O1E7OztROzs7USxPOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7O1E7a0I7a0I7Ozs7O08sTzs7O08sTzs7Ozs7USxPOzs7O08sTzs7O087Ozs7UTtPLE87O087Ozs7UTtPOzs7Ozs7O08sTzs7Tzs7O1E7Tzs7Ozs7OztPLE87OztPLE87OztPOzs7Ozs7O08sTzs7O08sTzs7O08sTzs7TyxrQixPO08sTzs7O2lCO2lCOzs7aUI7aUI7OzJCOztPLG1CO08sTzs7O08sTzs7O08sTzs7NkI7Ozs7UTtRLE87O087TyxPOzs7O1E7USxPOztPO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOzs0Qjs7NEI7O087OztRO1E7TyxPOzs0Qjs7NEI7OzRCOzs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7O1E7Ozs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0ksUzthOzs7OztROztROztROzsyQjs7O087O087Ozs7Tzs7Tzs7YTtzQjtHOztJOzs7Z0I7Z0I7Ozs7STs7O1EsTzs7USxPOztRLE87Z0I7OztJLE87OztJOztPLE87O08sTztlOzs7Ozs7Ozt5QixPOzs7USxPOzswQjs7UTs7Uzs7WSxPOzs7c0IsTztxQjs7VztRLE87Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O1E7OztTOztZO1ksTzs7O3NCOzt1Qjs7O3NCLE87Ozs7Ozs7O3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLE87OztzQixPO3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZO1k7OztlOztnQjs7O2UsTztjOztZOzs7ZTs7Z0I7OztlLE87Yzs7O3dCOzs7YTs7O1ksTztXOztRLE87Ozs7Ozs7OztZO1k7OztlOztnQjs7O2UsVztlLE87Yzs7NEI7OzthOzs7WSxPO1c7USxPOzs7UTs7O1M7O1ksTzs7O3NCLE87cUI7O1c7USxPOzs7Ozs7OztRLE87Ozs7Ozs7O2tCLE87Ozs0Qjs0QixPOzsyQjs7aUI7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O1M7O1ksTzs7O3NCLE87cUI7O1c7UztRLE87Ozs7Ozs7Ozs7OztRLGtDOzs7Ozs7Ozs7OztROzs7UyxPO1E7Ozs7Ozs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztLO007O1M7OztZOztlOztlO3VCOzs7WTs7WSxNOztRO007Szs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTzs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7O0ksTzs7Ozs7Ozs7Ozs7SztNLE87OztnQjtnQixPOzs7Ozs7OztlOztLO0s7Szs7O1E7Ozs7UztRO1E7Tzs7SyxPO0k7SSxPOzs7Ozs7Ozs7Ozs7O3FEOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007O1M7OzJCLG9CLFc7O00sTztLOztNO087Uzs7O1k7WTtXOztPLE87TTs7O1M7UztTOzRCOztTO1M7UTs7TTtLO21CO0s7OztrQztrQztJO0k7Ozs7O3NCOzs7aUMsWTs7Ozs7O1M7UztRO1E7O1M7OztROzs7Ozs7Ozs7Uzs7O1M7OztROztTOztVO1k7UyxjO1E7O1M7Ozs7VTtZOztVLEs7OztTOzs7OztVOztXOzs7O1c7Ozs7VSxHO1c7WTtjOztZO1k7Ozs7YTthO2E7Ozs7OztZO2E7O2lCOzs7Ozs7bUI7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1cseUI7Ozs7YTs7YzthO2E7Ozs7Ozs7O3NCOztTOzs7aUI7OztRO1EsSSxJLHNDOztTLEksZTs7Ozs7OztZO1k7Ozs7Ozs7VyxHLHVCOzs7OztVLE87OztTOztVLFU7VTtXOzs7OztXO1c7O1U7VTtTO1M7O1U7Ozs7VTtVO1MsSSxXLHVDOzs7OztVO1csTTtVOztXO1c7Ozs7OztZOzthLEksdUIsTzthOzs7Ozs7Ozs7VTs7O1c7O1k7WTtZO1k7Ozs7YTtjOzs7YztjOzs7Ozs7O2E7YTthO2M7O2M7YTs7OzthOzs7Ozs7O1k7YTthO2E7YTthOzs7Ozs7OztnQjtpQjs7Ozs7Ozs7Ozs7O2lCOztpQjtnQjtnQjtnQjtpQjs7aUI7Z0I7Ozs7O2dCOzs7OztjOzs7Ozs7Ozs7Ozs7OztZO2E7YTthO2E7YTs7OztjO2U7Ozs7OztlOzs7Ozs7O2dCO2dCO2U7ZTtlO2dCOztnQjtlOzs7Ozs7Yzs7Ozs7Ozs7OztXLEksaUM7Vzs7Ozs7OztXOztZOzs7Ozs7OztZLEc7YTtjOzs7Ozs7Ozs7Ozs7Yzs7YzthO2E7YTtjOztjOzs7Ozs7O1k7YTs7O1c7WTs7Ozs7O1U7VTs7UTs7Uzs7O1U7OztVO1U7Ozs7Ozs7UztTO1MseUIsd0I7UztROztTO1Usb0I7VSxPO1MsTztROztTLFc7UyxPO1E7O1MsVztTLE87UTs7UyxrQztTO1UsTTs7VTtVLE87OztTO1U7VSxPOztTO1U7OztXOzs7Ozs7OztXO1k7YTthOzs7WTs7VztZO1k7OztXOztVOztvQyx1QztvQyxzQzs7OztZLEksb0I7WSxxQjs7VyxVO1csTzs7OztxQjtzQjtzQjtzQjtxQixxQjtvQjs7O3FDLHNDO3FDLHVDOzs7O1csSSxzQjtXLHNCOztVLFU7VSxPOzs7O29CO3FCO3FCO3FCO29COzZCO21COztTOztVOzs7Ozs7VTtVOzs7Ozs7O2E7YztjOztjLE07YSxPOzs7VztZO1k7O1ksTTtXLE87OztTO1U7VztXOzs7Ozs7O1M7VTtVOzs7Ozs7OztTOzs7VTtVLE07c0I7O29DO1M7O1UsZTtVLEk7UztVO1M7UyxJOzs7O1c7Ozs7Ozs7Ozs7Ozs7OzRCOzs7Ozs7ZTtnQjs7Ozs7O2dCOzs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7O2E7YztlOzs7OztjO2M7Yzs7YTs7Ozs7Vzs7Ozs7Uzs7VTtVO1UsSTtVLE07VTtVO1U7VTs7O1M7VTs7VztZOzs7O1c7c0I7Ozs7OztZOztZOzs7Ozs7O2dCO2U7OztXOzs7Vzs7Ozs7WSxNO1ksTTtZOzs7O2E7Yzs7OzthO2M7ZSxNOzs7Ozs7O2M7Yzs7Ozs7OztlO2U7Ozs7O2E7Ozs7O1c7WTtZLE87O1c7OztjO2M7YzthOzs7Ozs7ZTtnQixPO2U7c0I7ZSxPOzs7O3lCLE87d0I7Yzs7Vzs7VztXOzs7VSxJLG1COzs7O1M7O1k7OztlLE07YztTOzs7WTtZO1k7Vzs7UztTOzs7UztVLDJCLFM7VTtZOzs7ZTtnQjs7aUIsUTs7O2lCOzsrQixPLGMscUI7Z0IsTzs7O2U7Yzs7UztROztTO1UsTTtTO1UsWTtVOzs7UyxPO1E7O1M7VSxNO1M7VSxZO1U7OztVOztvQztTOzs7O2E7OzZCLHVCLFcsRTs7UyxPO1E7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtjO2M7Ozs7Ozs7Ozs7O0ksVyxPO0k7O0s7Tzs7O1U7VSxXO1M7O0k7OztPO087TztNOztJLE87Rzs7STs7O2dCLE87Ozs7Ozs7O0s7aUI7Ozs7Ozs7STtHOztJLFE7SSxPO0c7O0k7Rzs7O0ksVzs7O0ksTzs2QztHOzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7UTs7O1M7UTs7UTs7OztTO1M7USxPOzs7O2dCOztJO0c7RztJOztvQixPLGlDOztJLE87MkMsNEI7Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFM7SyxROzs7d0IsTyxrQztJLG1CLE0sd0M7c0IsMEI7SSxJOztvQjtxQztpQjs7Ozs7Ozs7O1MsYTs7UTs7Ozs7OzRCOztROzs7Ozs7OztROzs7OztTLHNCLE87UyxhOztROzs7OztTOzs7VTtVOzs7UTs7Ozs7Ozs7UTs7SSxPO0c7O0ksWTs7SSxPO0c7OztJLE87Ozs7Ozs7Ozs7SSxXO0k7Rzs7O0k7SyxNOztJOzs7O0k7SyxNOztJOzs7O0ksVyxNOztJOzs7O0ksVyxNOztJLGU7Ozs7Ozs7O3FCLGtCLGdDOzRCLHFCOztJLE87O0c7O0k7TztLLE87SSxXO0ksTztHOzBCLE8seUM7O0ksTzs7O2M7OztlOzs7YyxtQjs7O0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7OztNO00sSTs7Ozs7OztNLGlCO007O0k7STtHOztJLE87OztjO2M7ZSxPOztjO2U7eUM7ZTs7Ozt3Qzs7O2E7O0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJLE87OztjOztlOztjLE87YTs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7SztLO29COzs0QjtNOzs7Tzs7VTtXLE07O1U7UztPLFE7OztVO1U7eUI7Vzs7Ozs7WSxNO1k7Ozs7OztjOztlO2UsTzs7Ozs7Ozs7O2E7YztjOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7O1c7VyxJLGtCOzs7Ozs7O1csVztjO1k7VyxNOztTO29DLHdDOztNOzs7OztJO0k7Rzs7STthO2tDOztHOztJLFk7O0k7Rzs7SSxPOzs7OztjO3dCO3dCOzs7OzBCOzBCLE87O3lCOzs7YTs7Rzs7STtjO2M7Ozs7Z0I7Z0IsTztlOzs7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOztJLE87OztjO2MsYzthOztHO0c7O0k7O3lCLGtCOztJO0k7Ozs7Ozs2Qzs7Szs7Rzs7STtnQyw0QixXO0ksVTtJOzs7YSxtQjs7O1k7Rzs7SSxZOztzQztJOzs7SyxXO21COzs7SyxPLFc7O0ksTztHOzs7SSxPOzs7Yzs7Ozs7ZSxRO2UsVTs7Ozs7Ozt3Qjs7Ozs7Yzs7O2U7Z0IsVzs7OzttQiw0QjtjO2E7Ozs7SSxvQjs7Ozs7Ozs7OztNOzs7VTs7OztTOzs7VTs7O1M7TztxQzs7OztROzs7O1M7MEI7Ozs7O21CO1E7O1M7UTs7Ozs7UTtTLFEsbUM7Uzs7UztROzs7Ozs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHOzs7Ozs7Ozs7Ozs7Ozs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7STs7Tzs7O1U7VSxXO1M7O0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7O2E7Ozs7aUI7OztvQjtvQjttQjs7Ozs7YTtlOzs7a0Isb0IsTztrQixPO2lCOzs7YSxPO2E7ZTtpQjs7O29CO29CLE87bUI7O2E7ZTtpQjs7O29CO29CLGU7bUI7O2EsUzthLFc7YTtlOztnQzs7OztnQjtnQjtpQjs7O3FCLGU7b0I7a0I7Ozs7O21COzs7O21COzs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCO3dCOzJDLE8sa0M7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Z0Q7Ozs7Ozs7Ozs7Ozs7OzsrQjs7OztrQzs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7dUI7d0I7d0IsTzt3Qjs7OzJCOzBELGM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7OztpQjs7OztlO2E7YTtlO2lCOzs7b0I7b0I7bUI7O2E7O2E7OztZO29COzs7VztZOzs7Vzs7Ozs7Ozs7UTs7O1EscUI7USxXO087Ozs7O007Tzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WTs7Ozs7Vzs7Ozs7Ozs7Ozs7OztROztXOzs7Yzs7Ozs7ZSxNO2U7O2U7ZTs7YzthOztROzs7O1k7OztlO2UscUI7Yzs7Ozs7UTs7OztjOzs7Ozs7Ozs7Ozs7O087Ozs7OztJO0c7OztLOzs7Ozs7O087USxRO1EsSztPOzs7OztPOzs7a0M7UTs7Ozs7OztNO087Ozs7Ozs7Ozs7Ozs7O007O1EsTTtPLFU7Tzs7TTs7OztJOztLOzs7Ozs7Ozs7SyxTO0s7TTs7Ozs7O00sTztLOzs7OztJO0k7Rzs7SSxXLE07Ozs7OzswQjtNO087TztTOzs7WTtZO2EsTTtZLEk7OztXOztPLDJDLFc7Tzs7Ozs7TSxZO007OztVOztnQzs7YTtzQzs7UztPO1M7OztZOzs7YTtZLHNCO1c7OztPO087Uzs7O1k7WTtXOzs7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJOztPOzt5QixrQixPLDJCOzs7Ozs7OztLLGE7Ozs7STtHOzs7Szs7Ozs7TTtNLE07TSxXO00sTzs7Szs7ZTs7Ozs7OztJLE87Rzs7O0s7Ozs7O00sTTtNLGtCOztLOzs7O0s7OztNO29COztnQjtJLFc7SSxpQjtHO2lDLFc7MEMsVzs7STs7O2MsYTthOzs7a0Y7YyxPOzs7OztHOztJO3lFO0ksTTtHOztJOzs7SyxPOztJLE07Rzs7STs7Rzs7STtrQzs7SyxNOztJO0c7RztJLGU7Ozs7Ozs7Ozs7STs7YTtjLFk7YyxNO2MsUTs7O2EsSSxVOzs7O2UsTzs7OzthLE87O0c7RztJOztJOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOztHOztJOztNO08sVTtPO087O087TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNLFE7TTtNLE07OztTO1E7TTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJLDhCOzs7Ozs7OztJO0c7O0ksVztJOzs7TztPO087TTs7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7Ozs7Ozs7Ozs7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7O2MsTzs7O3dCO3dCOzs7Ozs7O3VCOzs7YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7STtLO087OztVO1UsZ0I7Uzs7SyxPO0s7OztLLFM7STs7OztJOztPOzs7VTtVO1M7O0k7Rzs7STtJOzs7OztPLFM7UTtPOzs7OztLOztHOztJOztPOzs7VTtVLE87Uzs7STtHOztJLFk7O0k7Ozs7OztJLFksTzs7OztLOzs7Ozs7STs7O0k7SztLOzs7OztLLFE7TTtPOztXOzs7O087TztNOzs7Ozs0Qjs7Ozs7a0I7O0s7STtJLE87RzsrQix1Qjs7STtHOztJOzs7SztNLFc7OztJLFc7SSxPO0c7MEIsd0I7K0IsdUM7OEIsOEM7O0k7Rzs2QixXO3VDLCtCOztJO0ssVzs7Szs7OztNO087TztPO007TTs7Ozs7STtLLDRCLFc7O0s7Ozs7O087UTs7O087Ozs7c0IsYyxpQzs7TTs7Ozs7SSxJLFk7Ozs7TSxpQjs7TTs7Ozs7SSxPOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7YztjLE87O3dCO2E7O0c7O0k7STtLOztNLFE7TTsyQixRLDhCLFM7Ozs7Ozs7Ozs7O1U7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtVOzs7OztXO1U7Vzs7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7OztNLE07Ozs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7OztLOztlLGlDO0s7TSxNO0s7TTtpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLOzs7OztJLE87Rzs7SSxZLE87O21COzs7Ozs7OztJO0c7O0k7Z0I7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJOzs7Rzs7OztJOztLOztJOztLO007OztNO1E7TTs7UyxZO1M7Ozs7O1U7OztTOzs7Ozs7UyxNO1E7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7Ozs7O007TyxNO087Uzs7O1k7OzthLE07WTtXOzs7Ozs7Szs7UTs7O1c7OztZLE07VztVOzs7Szs7STtLLFM7Ozs7OztLOztROzs7VztXO1U7Ozs7TSxNO0s7O00sbUMsbUI7TTs7UyxPOzs7Ozs7Ozs7UTtNLE87TSxPO00sWTtNO1E7TTtPO1M7O3lCLCtCOzs7OztNO087Ozs7Ozs7Ozs7TztRO1U7OzthO2EsTzs7O3VCO3VCLE87OzZDLE8sZ0M7O3NCOztZOzs7O087UTs7Ozs7YSwyQzs7Ozs7Ozs7O007TztTOzs7WTs7Ozs7YTthO2U7OztrQjtpQjs7O2E7O2EsVTs7YSxPOzt1Qjs7OztZO1k7WTtXOzs7OztPO1M7TTs7Ozs7Ozs7Ozs7OztNO087OztNOzs7OztTLGEsTzs7UyxPO1E7Ozs7Ozs7Ozs7O0k7SyxzQjtLOztTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7O1c7Ozs7Ozs7OztNOzs7Ozs7Ozs7TyxvQyxROzs2Qzs7O087UTtVOzs7YTthLGM7WTs7UTtVOzs7YTthLGM7WTs7USxPO1E7OztRLFM7Tzs7Ozs7O087UTtVOzs7YTthO1k7O1E7OztXOzs7YztjO2E7Ozs7Ozs7OztRO1MsSTs7O1ksa0I7d0I7O1ksSSxJLE87Ozs7Ozs7WSxPOztRO1E7USxJLGlCO1E7OztXOzs7O1U7OztTOztVO1k7OztlLG9COzJCOzs7YztVO1UsTzs7VSxPOzs7OztrQjs7Ozs7O0k7OztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTtnQixPOztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztpQjtLOzs7Ozs7O007O0s7OztTLE87OzttQjs7O29COzs7bUIsSSxZOzs7NkM7OzttQjsrQjs7O1E7TSxPO00sTTtLLEksVTs7OztvQjtNOzs7Ozs7bUI7SyxZOzs7Ozs7OztNO007TywwQjtPO087Ozs7OztJO0s7SywwQjtLLE87SSxXO0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUI7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7c0I7Ozs7O3FCO087UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7O1EsTzs7K0IsOEI7Ozs7USxPOzsrQiw4Qjs7O0s7Ozs7STs7OztRO2tCOzs7Ozs7Ozs7UztVOzs7O1c7VTs7Ozs7Ozs7Ozs7O1M7VTs7VztVOzs7Ozs7Tzs7OztRO1E7UTtPOzs7USxXOztPLE87O0ksTztHOztJO2dCLE87O0k7Rzs7O0k7STs7TSxPOzs7O0ssSSxZOzs7O007Ozs7Ozs7Ozs7OztrQjs7TTtNO087OztNOzs7O08sSSxVOzs7O1E7Ozs7OztPOzs7UTtROzs7Ozs7O0c7O0k7Ozs7O00sRztPO1E7Ozs7OzhCOzs7O007OztTLFc7UyxjO1E7TTs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7OztrQjs7Ozs7Ozs7OztJOzs7SztLO087O3dCOztLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjs0Qzs7OEIsb0I7OEI7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7OztvQjs7OEIsb0I7Ozs7Ozt1Qzs7OEI7Ozs7Z0M7Ozs7OytCOytCOzhCO2lEOzs7Ozs7Ozs7OzhCOzZCOzs7Ozs7O29COzs7Ozs7O1U7O29COzs7OztvQjs7O3FCOzs7b0I7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozs7Ozs7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozt1Qjt3Qjt3QjswQjs7OzZCOzZCOzhCLE07Ozs2Qjs0Qjs7d0I7Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7VTs7O29CLFk7b0I7NEM7OzhCOzsrQjsrQixROzsrQjs7Ozs7OEI7OEI7Ozs7OytCLFc7K0IsTzs7OytCLE07Ozs4QixPOzs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7NEM7OzhCOzsrQjsrQjs7OztnQzs7aUM7OztvQztvQztxQztxQyxNO3FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQzttQztnQzs7OzhCLE07Ozs7OzsrQjsrQixPOzs7K0IsTTs7OEI7OytCOzhCLE87Ozs7Ozs7Ozs7Ozs7VTs7b0I7Ozs7OztxQixZO3FCOzs7Ozs7O3NCOztzQjs7Ozt1Qjt1Qjt1QixPO3NCLFMsNkI7c0IsVTtzQjt1Qjs7aUM7Ozs7OztzQjs7dUI7OzBCLG9COzBCOztzQjs7Z0M7Ozs7Ozs7cUIsTTs7O29COzs7b0I7OztxQjtvQixHO3FCLFc7cUI7Ozt3QixrQixROzs7Ozs7O3dCO3VCOzs7Ozs7cUI7b0I7b0I7cUI7cUI7dUI7cUI7OztxQjs7Ozs7Ozs7Ozs7Ozs7b0I7cUI7Ozs7Ozs7Ozs7Ozs7O3VCOzs7Ozt1Qjs7Ozs7O3dCLE07dUI7Ozs7Ozs7Ozs7dUI7Ozs7dUI7Ozs7Ozs7Ozs7cUI7c0I7Ozs7Ozs7O3NCOzs7Ozs7b0I7Ozs7O1UsVztVOztvQjs7OztvQjs7OEIsb0I7OytCOztnQzs7O21DOzs7Ozs7O2tDOytCOzs4QixNOzs7a0Q7Ozs7Ozs7b0I7OztxQjs7O3FCLFM7cUI7OztxQjt1Qjs7Ozs7O29COzs7Ozs7Rzs7O0k7SyxROzs7Szs7O0k7Rzs7STtrRDtJO0c7d0IsTyx5Qzs7STs7O0ssTzs7OEIsMEM7OztJO0c7O0ksTztHOztJLFk7STs7OztPOzs7VTs7O1csTztVO1csVztXOzs7OztVO1M7O0s7STs7O0k7SztHOzs7O0s7SyxhO0s7SztJOztLO007TTs7O0ssd0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJOzs7O00sTTs7OztJLHNCOzs7O0s7TSxPO00sTztNLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7O0k7SztLO0s7TzttQyxtQjtJOzs7Ozs7OztjOzthO0c7O0k7O0c7O0k7O0c7O0k7O0c7O0k7Ozs7O1E7OztROztzQzs7Ozs7O1E7Ozs7OztZLE87OztzQjtzQjtxQjs7VztTO1c7OzRCOztTOztTO1E7O1E7Ozs7O1M7Vzs7NEI7O1E7O2dCOzs7bUI7bUI7a0I7Ozs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7aUM7Ozs7Ozs7OztLO007TSxTO00sWTtNO1E7OztXO1csZTtVOztNO1E7OzBCLG1CLFU7O007Ozs7WTs7Ozs7Ozs7Ozs7MkMsa0M7aUIsTzs7Ozs7Ozs7O2lCLE87Ozs7O1k7YSxVO2E7ZTs7OEIsZSwyQjs7WTs7O3FCOzs7VztXO1k7WSxjO1c7O1ksTzs7Vzs7WSxPOztXO2tCO1csdUIsVyxnQztXOzs7O2U7OztZOztXLE87Ozs7Ozs7SSxRO0k7Rzs7STtLLE87OztTOzs7O0s7Tzt1Qyx1Qjs7Ozs7Ozs7O2M7Ozs7NkI7O2E7Rzs7STtrQyxPO3VCLE07O0k7Rzs7STs7SztPOzs7VTtVO1M7OztJO1k7OztlOztnQixPOzs7OEI7Ozs7Z0I7aUIsTzsyQjs7Z0IsTTs7O2U7Yzs7OztHOztJOztPOzs7O1E7VTs7OzthOzs7Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJO0ssVztLO087O3lCLGtCLGM7O0s7SyxPO0s7SztLO08sbUMsaUI7Ozs7Ozs7Ozs7VTs7O1c7O2M7OytCOzs7O1c7OztXLE87VzthOzs7Z0IsbUIsTzs7Z0I7ZTs7VzthOzZDLHVCO1c7VzthOzs7Z0I7Z0I7ZTs7Vzs7O2dCO2lCOzs7O2tCOzs7O2lCOzsyQjs7Ozs7Ozs7Z0I7Ozs7Ozs7O1csTztVO2tCOztTO0ksTztHOzs7STs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7OztLOztJO0c7O0ksVTs7SSxpQjtHOzs7Ozs7Ozs7Ozs7O0k7O087O1EsUTtROztRO1E7VTs7UTtPOzs7O087O1EsWTtRLGtCO1E7VTs7O2E7Ozs7Yzs7Ozs7YTs7cUI7O1k7Ozs7OztRO1U7O3NDLFc7Ozs7Ozs7OztRO1U7UTtROzs7Vzs7Tzs7Ozs7Ozs7Tzs7O2tCOzsrQiwyQzs7O087OztrQjs7K0Isd0M7O087OztRO1U7OzthO2EsTztZOzs7Tzs7K0IsMkI7OztvRDs7O087Ozs7UTtRO1E7VTs7O2E7Ozs7O1E7Ozs7VTs7Ozs7OztXOzs7WTs7Ozs7Vzs7O1M7Ozs7O1M7Ozs7O08sTzs7Tzs7Ozs7UTtRO1U7OzthOzs7Tzs7O1MsTztROzs7Ozs7Uzs7O087O087O087Ozs7OztRO1E7VTs7O2E7YSxPO1k7OztROztPOzs7a0I7Ozt5Qjs7Tzs7Tzs7OztRO1E7OztZOztPOzs7a0I7OzsyQjs7Tzs7Tzs7OztRO1E7Tzs7O2tCOzs7dUI7O087OztPOzs2QixvQjs7O087OzhCLHNCOztJLE87Rzs7SSxXO0k7Ozs7O0s7SztJOzs7ZTs7O2M7O0k7RztHO0ksYTtJO007SSxjOzs7Ozs7STtLO087OztVO1UsTztTOzs7SztPOzs7VTtVO1c7Ozs7O1c7Vzs7OztlLGtCLFE7MkI7O2UsTzs7O3lCO3lCO3dCOzs7ZTs7ZTs7ZTs7ZTs7ZTs7OztnQixNO2dCLFE7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsbUIsTTtxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7b0IsZTs7O29CO3FCLGlCOzs7cUIsTztvQjs7b0I7O29CLGlCLFM7b0I7Ozs7Ozs7b0IsTzs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOztlOztlLG1COzs7OztlOzs7O2U7Ozs7OztlOzs7ZTs7O2U7Ozs7ZTs7OztlOzs7O2U7O3VCOztVOztXLE87OztxQjs7b0I7OztVOztXLE87OztxQixPOzs7K0I7K0I7OzhCOzs7b0I7OztVO1U7OztXOzs7Ozs7Vzs7Yzs7MEMsVzs7OztXOzs7Ozs7O1c7Ozs7O1U7VyxTO1c7O1csTztVOzs7OztXO1c7O1U7Uzs7O0s7Tzs7O1U7OztXO1U7Uzs7O0s7O0s7TTtROzs7VztXO1U7Ozs7O0k7SztPOzs7VTtVO1M7OztLO087OztVOzs7Ozs7OztVOzs7O3NCOztVO1M7OztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLFM7OztJOztLO00sSSxjLDJDOzs7OztPLFM7TztPOzs7STtHO0c7STtJO0k7STs7STtJO0k7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHO0ksaUI7Ozs7OztJO0ssUTs7O0s7Tzs7K0IsbUM7OztJO0k7Rzs7STtLLE07O0ssTTs7SSxXOzs7O0s7O007Ozs7Ozs7Ozs7O007OztJO0s7aUQsMkI7OztJO0c7O0ksc0I7O0ssTTtJLHNCOztJLEksUTs7Ozs7Ozs7Ozs7OztJOzZCLHlCO0c7RztJO0k7STtJOzs7STtJO0c7O0k7OztnQjtnQjs7O2lDLE8saUI7Yzs7OztnQjs7O2dCO2lCLFE7OztpQjttQjs7O3NCOzs7Ozs7Ozs7cUI7OztnQjtlO0c7O0k7O3lDLFcscUI7O0k7Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STtJOztJLHVCO0k7Ozs7TTs7Ozs7Ozs7O0k7Rzs7STtLOzs7Ozs7USxPOzs7O0ssVztHOztJO0ssaUM7SztLLE8sb0Q7Rzs7STs7Ozs7O0s7O0k7Rzs7STs7Ozs7OztLLEksUTs7OytCOzs7Szs7STtHOztJOzs7OztNOzs7VTtTOzs7Ozs7Ozs7OztJLE87Rzs7O0s7TSxJO007UTtVO3lDLE87O00sTSxXO00sTSxXO0s7O0k7STt1Qjs7a0I7SSxxQixVO2tCOztJO0c7O0ksVzs7Ozs7OztJLEs7SztJOzZDO0k7STtHOztJLFc7Ozs7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7ZTs7Ozs7OztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7MkIsTztJO0c7Ozs7Ozs7O0ksTzs7O0k7OztNO29EOzs7OztPOztNOzs7Ozs7Ozs7OztNO007TTs7O0k7Rzs7STs7O007MEI7c0I7TTs7Ozs7Ozs7Ozs7TTs7O0k7Rzs7STs7O007cUI7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007OztJO0c7O0k7STtHOzs7SztNO007TTs7TSxtQjs7Ozs7Ozs7OztLO0k7STtHOztJO0k7Rzs7STtJLFc7STs7Ozs7O0s7O0s7Szs7O3dCO0k7Rzs7STtLO0s7Szs7Szs7TTtLO3NCO007O087Ozs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O2U7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007Ozs7Ozs7Ozs7O007OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0ksTzs7d0Msc0I7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2E7ZTs7K0IseUI7O1k7OztZOzs7O2EsVTs7Ozt1Qjs7O1k7Ozs7Ozs7Ozs7OzttQjs7Ozs7O1k7Ozs7YSwrQjs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7Ozs7O1k7Ozs7O2EsVTs7OzJCO1k7Ozs7O1k7Ozs7O2EsVTs7OytCO1k7OztZLHVCLFU7Ozs7eUI7OztZOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztVLFM7O1M7O1c7OztZO3FCO1UsTzs7b0I7OztzQjs7O3dCOzs7MEI7Ozs0Qjs7OztTOzs7O0k7RztHO0ksYTtJLG9CO0ksbUI7SSxnQjtJO007STtNO0ksaUI7STtNO0k7TTtJLGdCO0k7TTtJO007SSxvQjtJO007STtNO0ksbUI7STtNO0k7TTtJLGU7STtNO0k7TTs7STs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7Rzs7STtLLE07SztLLFE7Ozs7SztPOztVOztJOztPOztPOztPO1EsVztRLE87TztRO1MsTzt1Qjs7O087O087Z0I7Tzs7Tzs7Ozs7Ozs7O08saUI7Tzs7RztHO0k7TTtJLFU7O0ksTztHOztJLE87Rzs7STs7Ozs7Ozs7O1M7OztVLE87OztVOzs7Ozs7Ozs7OztXLE07Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7Ozs7OztTOzs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxXOzs7OztTOzs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7cUI7Uzs7OztRLE87OzswQjs7Ozs7Ozs7VSxtQjtVOzs7Ozs7Ozs7Ozs7VyxHOzs7Ozs7VTs7Ozs7O1csTTs7OztTOzs7OzttQjs7UyxxQjtTOzs7O0ksTTt1QjtHOztJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7O0k7YSxNO0k7Rzs7STtLOztTO0s7O0k7SyxXO0s7SyxlO0k7STtLO0s7Tzs7eUIsbUIsZTs7SztJO2M7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztJO0c7OztJOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztLLE87OztJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7O1EsTTtPOztJOzs7USxNO087SSx1Qjs7O0k7SztPOzs7OztVLFc7VSxPO1M7Szs7OztNOztPLE87Yzs7aUI7Ozs7Z0I7SSxJLE0sNkM7Ozs7O3VDOztLOzs7Ozs7SSxPO0c7RztJOzs7OztJLG1CLE07O0k7Rzs7STs7MEM7O0ksTztHOztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SyxROzs7O0ssUTtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZO1ksTztJOzs7Szs7O0k7Rzs7STtJOzs7Ozs0QixPOzs7Uzs7OztLOztHOztJOzs7OztRLE87O1EsTzs7USxNOzJCOztJLE87Rzs7STtJO0ssTzs7STtHOztJOzs7STs7Ozs7OztJO0ssTzs7Ozs2Qjs7STtLLE87OztJO0c7O0k7Ozs7O0ssTTs7OztPO2dCOzs7Ozs7MkI7O087Ozs7UTtPOztPOzs7USxtQztROzs7OzthOzs7Ozs7Ozs7O2dCOztrQjs7b0MsaUM7Ozs7OztvQjs7Ozs7Ozs7YTs7WTs7Ozs7O1EsUztRO1U7Ozs7Ozs7O1E7VTs7O2E7YTt1Qjs7WTs7O08sTzs7Ozs7OztTOzs7OztVO1M7bUI7O1k7OzhCLDZDOztVO1c7OztXO2E7OztnQjs7aUIsTTs7O2dCO2U7O1c7Vzs7VyxPO1c7YTs7Ozs7Ozs7OztVLHFCO1U7VyxhO1csWTtXLGdCO1c7VTs7Ozs7Ozs7OztxQjs7Ozs7O087O1EsVztRLFU7USxjO1E7USxPO087Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OzhCO1c7WSxROzs7Vzs7YSxNO1k7O2E7O1k7Ozs7WTtZOzs7VztZLE07VyxVO1c7WTs7b0I7b0QsZTtXO1c7WSxXO1k7Yzs7Z0MsbUIsVTs7WTtjOzs7aUI7aUIsZTtnQjs7WSxPO1ksTztZLE87VztXO1k7Yzs7O2lDLHlDOzs7aUI7Z0I7WTtXOzs7OztRO1U7Ozs7USxrQjtRLFk7USxZOzs7VztZO2M7Z0Q7WSxLO1ksc0I7Vzs7OztvQjs7O1U7UTs7Ozs7O1U7VzthOzs7Z0IsVztnQixXO2U7O1c7YTs7K0IsbUIsZTs7VzthOzs7O1csTTtVO1c7O2E7Ozs7OztTO1U7WTs4QztVLFM7VSxJO1U7WTs7Ozs7O1M7VSxNO1M7VTs7WTs7O08sTzs7O2lCOzs7O2lCO2dCOzs7O087OztRLEs7UTtVOzt3Qiw2Qjs7UTtVOzsyQjs7USxPO087O087O1E7OztPO1E7MkI7UTs7Ozs7Uzs7O2lCOzs7O087OztROzs7Ozs7OztnQyxXOzs7WTthOzs7MEI7YTs7Ozs7Yzs7O3NCOzs7O1k7Ozs7YSxPO2EsUTtZOzs7OztzQjs7K0M7USxNOzs4QztPLE07O08sb0MsTTtPLFksVztPLHNCO087UTs7UyxzQjtROzs7OztRLFc7UTs7d0I7Ozs7Tzs7Ozs7OztROztRO1MsVTs7OztZLHdCOzs7O2E7Yzs7O2M7O2lCLE07OztpQjtrQixPOzs7O2E7YyxPOzs7WSxXO1k7Ozs7Ozs7UTtTLE07UTs7UztXO1MsTztROzs7Ozs7Ozs7O087USxVO1E7VTs7O2E7YTtjOztlLGU7Yzs7YTs7O2MsYTs7O2M7ZTs7O2U7O2tCLE07Ozs7O29DOzs7a0M7O2E7Ozs7c0I7O1k7O1EsTztRLFU7OztRO1U7OzZCLGdEOzs7O087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVTs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtRO1U7OzthO2E7OztZOzs7Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7O1UsYTtVLGdCO1M7Ozs7UTs7OztTLFE7UztROzs7O2lCOzs7O087USxPOztPOztPOzs7UTtRO087Ozs7Ozs7UTs7OzBCO08sSSx3QztPOztPLG9CLFU7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1EsZTtRO1U7Ozs7Ozs7O1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7OztXLFk7Vzs7O1ksVTtZLFc7Ozs7WTs7Z0I7Ozs7O1k7WTs7Ozs7Z0I7Ozs7WSxNO1k7VyxPOzs7Ozs7UTs7WTs7Ozs7UTtROzs7OzthLHdCO2E7Ozs7OztZOzs7Ozs7USxTO1E7VTs7Ozs7Ozs7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7VTs7O2M7Yzs7Ozs7Ozs7d0I7OzthOzs7O087Ozs7ZTs7Ozs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLE87OzRCOztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJO0ksTzs7OzhCLDRDOzs7YzthOzs7Ozs7OztLOztROzs7OztTLE87UTs7O1EsMkI7Ozs7Ozs7OztTOzs7O2lCOzs7OztLO0k7Ozs7O087O2dCO2tEOzs7Tzs7O1E7UTs7Vzs7O2M7O2MsUzs7Yzs7VTtPO1M7OzJCLG9CLFc7Ozs7O087Ozs7OztjO2dEO1E7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtxQjs7c0M7OztZOztRLFM7UTs7Ozs7OztVOzs7Ozs7VyxPO2E7OztjOzs7Ozs7Ozs7Ozs7OztXOzs7TyxPOzs7aUI7aUI7Z0I7Ozs7TTs7OztPOzs7OztJOzs7YTs7O2dCOzs7aUIsTTtnQjt3Qjs7d0M7OztlOzs7O0k7OztpQjs7OzttQzs7Ozs7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsVTtXO1M7VTtXLE87VzthOzs7Z0I7Z0I7d0I7OztlOztVO1csTTtVOzs7VzthOzs2Qiw4Qzs7VzthOzs7Z0I7Z0IsTzs7OzBCLFU7MEIsTzt5Qjs7O2U7OztXO2E7OztnQixXO2U7O1c7YTs4QztXO2E7OytCLDRDOztXO2E7OztnQjtnQjtlOztXOzs7YztVOzs7OztXOzs7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7OztLO007OztPLE07O1M7OztZLG9CLE07WSxPO1c7Ozs7O0s7TTtROztzQiw2Qjs7TTtROzt3Qjs7TTtROztNOzs7O0k7SyxrQjtLO087OztVOzs7VztXO1c7O1c7O1ksTztZO2M7Ozs7Ozs7O1c7O1U7OztXOzs7VzthOzs7Ozs7OztVO1M7Ozs7O0ssTTtLLFU7O0s7OztNO1E7OztXOzs7WSxRO1k7Yzs7Ozs7Ozs7VztVOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7NEM7Rzs7STs7Ozs7O0ksWTs7O0s7TSx5Qjs7STtHOzs7STtLO007UTs7O1csb0I7Ozs7a0M7O3dFOzs7VyxNO1U7Ozs7Uzs7Ozs7O1U7VSxRO1M7O007UTtLO00sTyxpRDs7O0ssWSxzQixZO0s7Ozs7Ozs7TTtNLFE7TTtLO007TSxPLHlEO0k7STs7O0k7SSxlO0c7O0k7YztjOztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7Ozs7O087USxPO1EsTztXO1EsVztRLE87Ozs7O0ksTztHOzs7STs7O0ksTztHO3lCLDRDOzRCLE8saUM7O0ksYyxXO0k7Ozs7USwwQyxnQjtJLE87Rzs7STs7Ozt5QjtJLGU7Rzs7SSxPOzs7Yzs7O2U7O2M7Ozs7aUM7O2E7OztHOzs7STs7Ozs7YTs7O2dCO2dCO2U7Ozs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjtTO1c7OztjOzs7O2U7OztpQjs7a0I7Ozs7Ozs7c0Msa0I7Ozs7aUI7Ozs7O2tCOzs7Ozs7O2lCOztjO2E7Ozs7OztTO1c7OztjO2M7O2E7OztRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7UztXOzs7Yzs7Ozs7ZTs7O2lCOzs7O2tCOztrQjs7Ozs7Ozt1Qjs7OzBCOzBCOzJCOzRCOzs7dUM7NEI7Ozs7OzJDOzsyQjs7OztrRDs7O3lCOzs7Ozs7Ozs7O2lCOztpQjs7OztrQjtpQjs7OztrQjs7bUIsVzttQjtxQjtrQzs7O21COzs4QjtvQjtxQixPO3FCLE07Ozs7Ozs7eUI7Ozs7Ozs7a0I7OzswQjs7a0I7OzswQjs7Ozs7aUI7O2tCOzs7cUI7a0M7aUI7Ozs7Z0M7Ozs7O2lCOztjO2E7Ozs7Ozs7Uzs7UztXOzttQyw2Qjs7O1MsTTtTLFE7Ozs7OzthOzs7Z0I7Z0I7Ozs7OzhCOzs7Ozs7Ozs7OztTLEksTSxnQzs7OztVO1c7OztnQjtrRDs7OztTO1UsTztVO1k7OztlO2U7ZTtjOzs7VTs7Ozs7Z0I7a0Q7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7UztXOzs7YyxXO2E7O1MsZ0I7OztTOzs7UTs7Ozs7Ozs7OztROzs7Ozs7Ozs7UyxLO1UsTTtTO1UsTTtVLE07OztVO1k7OztlO2U7Ozs7OztjOzs7VTtZOzs7ZTtlOzs7Ozs7Yzs7O1U7VTs7VSwrQjtVLE87Uzs7Ozs7OzZCOzs7Ozs7WTs7Ozs7Ozs7OztXO1EsUztRO1M7Ozs7b0I7Ozs7UTs7Ozt1Qjs7Ozs7OztJOztLLHlDLG9CO0k7Ozs7Szs7O0k7OzthLEk7YTtxQjs7WTtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLOztLO007O1M7OztZLFc7O1k7Ozs7YSxvQixLO2EsTzs7a0MsVyxnQzs7Ozs7Uzs7OztTLG9COzs7Ozs7Ozs7Ozs7OztnQixHO2lCOztnRDs7Ozs7Ozs7Ozs7OztnQixHO2lCOzs7Ozs7Ozs7YyxHO2U7Ozs7O1MsTTtROztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzsyQixtQjs7Ozs7Ozs7SztNLE87TSxPO007SztNOzs7O1MsTzs7O21CLFE7O2tCOzs7Ozs7OztTLE87OzttQjsyQjs7a0I7Ozs7UyxPOzs7bUI7MkI7O2tCOzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLOztLO0s7TSxPO00sTzs7SztNO1E7TSxPO00sTztvQjtLO0ssTzs7O2U7ZTtlLE87Yzs7O0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTtLO087OztVLFc7VSxPLHlCO1M7O0ssTztLLFU7STs7O087USxTO1E7TztRLE07O087TTs7OztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7O3NCOzs7Ozs7O0s7Ozs7WTs7Ozs7Ozs7OztNLEs7SztPOztzQixXLGlDOztNO087O3dCOztNOztPOzs7OztPOzs7O2E7Ozs7Ozs7Ozs7Ozs7OztLOzs7SztNOzs7O1M7OztLOztJO0ssUztLLFM7Ozs7OztJOzs7Ozs7VTswQyxlOzs7Ozs7Ozs7VzsyQyxlOztLLE07SztPOzs7VTtVO1M7OztLO0s7Ozs7d0I7O0k7STtLO087OztVLHFCLE87VSxPO1M7O0s7Tzs7O1U7VTtTOzs7SztJO0k7SztNO007Ozs7WTs7Ozs7OztLO007Ozs7TTttQjs7TTs7Ozs7O1M7OztLOztNOzs7OztVOzs7Ozs7Ozs7Ozs7STs7O0ssSTs7Ozs7Ozs7Ozs7OztJOzs7O0s7SztLOzs7Ozs7Ozs7YTs7O0k7OztJLE87Ozs7MkI7O0c7OztLO0s7STs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNLFc7Szs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OEIsc0I7O0ksVzs7STtHOztJLFc7O0ksa0I7Rzs7SSxPOzs7YztlO2UsTTtjO2E7OztHOztJLDhCOzs7O08sTzs7Ozs7O2tCOzs7aUI7aUI7Ozs7cUI7Ozs7d0I7Ozs7aUI7Z0I7O087OztRLFE7UTtRO1E7Ozs7UTs7O1M7OztVLFU7VTtVO1U7Ozs7OztPLE87Ozs7O2lCOztrQjs7a0I7Ozs7Ozs7O3dCOzs7OztrQixPOztnQjs7Ozs7OztPLE87O087Ozs7USxNO08sTzs7OztnQyx1Qzs7Rzs7STtLLEs7SztPOzs7VTs7Ozs7OztVLEssa0M7VTtXLE87VyxPO1csZ0M7VyxTO1csTztVOztrQjs7Uzs7Ozs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLO2E7ZTs7O2tCO2tCLGE7a0I7bUI7OztrQjtpQjs7YSxPO1k7b0I7Ozt1QjttRTt1Qjs7d0I7Ozt1QjtzQjs7Ozs7Ozs7Ozs7O1k7OzthO1k7Ozs7O2dDOzs7TTs7O0ksTztHO0c7O0k7OztLOzs7O0k7RztHO0ksVztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO087OztVOzs7Ozs7ZSxZOzs7O2tCOztrQixNOzs7a0IsTTs7O2M7OztlO2U7MkI7Ozs7Ozs7Ozs7b0I7OztxQixPO3FCLFU7Ozs7O3FDOzs7d0IsSztxQzs7OztxQjs7b0I7b0IsTTs7OztvQixNOzs7Ozs7bUI7Ozs7b0IsUTs7Ozs7O21CLE07Ozs7O29COzs7cUI7O3lCO29COzs7O21COzs7b0IsUTs7Ozs7bUI7Ozs7b0IsUTs7Ozs7bUIscUI7bUIsVzs7OztjO1c7WTthOzthLFE7Ozs7d0I7YTs7Ozs7Ozs7d0I7Ozs7Ozs7Ozs7Ozs7VztZLFE7WTs7O1UsVztVO1M7O0s7Tzs7eUIsbUIsVTs7SyxLO0s7Tzs7eUIsb0IsVzs7SyxNO0s7Tzs7eUIscUIsWTs7SyxPO0s7Tzs7eUIsb0IsVzs7SyxNO0ssSztLO0ssUztLOztLOztNOzs7O1U7O1csTTtVLGtCOztXLE07O1U7Uzs7O007Tzs7Ozs7O1U7VSxNOzs7Ozs7O1M7Ozs7OztPLE07OztpQjs7OztLO007TSxJLDZCOzs7O1E7OztTOztVO1MsRztVOzs7O1E7Ozs7OztLOztNO007Ozs7Ozs7Ozs7Ozs7SztLO0k7SSxJLDZCOzs7O007O08sTTtrQjtNOzs7Ozs7O0s7Szs7Ozs7O1E7Ozs7OztTO1E7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7STs7SztLOzs7Ozs7UTs7Ozs7Tzs7Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7O087O3lCLG1CLGE7O0k7O1k7OztlOzs7Ozs7Z0I7a0I7OztlO2M7O0c7O0k7STtLO00sTTtNOzs7O1E7Ozs7aUI7OztROztRLE87Ozs7O2tCOzs7Ozs7a0I7bUI7O21COzs7b0IscUI7Ozs7Ozs7Ozs7Ozs7O21CLFk7Ozs7Ozs7OztxQjtzQixPOzs7OztrQzttQjs7c0I7OztvQixNO3VDO21COztvQjs7Ozs7Ozs7a0IsTzttQixNOztrQjttQjs7bUI7cUI7Ozt3Qjs7Ozs7O3lCLFU7eUI7eUI7eUI7d0I7dUI7Ozs7O2tCLE87Ozs7Ozs7O2lCOzs7UTs7OztTO1E7Ozs7UTs7O1E7OztTOzs7Ozs7UTttQzs7O0c7O0k7SyxvQjs7Szs7Ozs7Ozs7O0ksTzs7Ozs0Qjs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87Ozs7O1cseUMsZTs7O087OztRLE87USxJO1E7O1c7OztVO1EsUTtROzs7Vzs7O2M7YztlOzs7OztnQixPO2UsTzs7YzthOzs7UTtVOzs7YTthLFc7WTs7USxVO1E7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Syx5Qzs7O1E7O1M7Ozs7USxnQjs7UTs7O1M7VztTLE87UyxhO1M7Ozs7O1EsVzs7O1E7Ozs7OztROztTO1c7NEMsYztTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VTs7OztjOzs7K0I7O1U7WTs7Ozs7UztVOzs7O1M7VTs7Ozs7b0I7Ozs7Uzs7a0I7Ozs7Ozs7Ozs7UTs7UztXLHlDLGE7UyxlO1M7Ozs7O1M7Ozs7YyxTO2Msa0I7Yzt1QjthOzs7UTs7USxtQixPOztRO1MsUTtTLE07OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UTs7OztROztTOzs7Uzs7OzthOzs7Ozs7O1E7Z0I7OztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJOztLOzs7Ozs7TyxVO29COzs7O0s7STtJOzs7SyxnQix5QztLLE87STtJO0ssTzs7SztPOzs7VSxrQjtTOzs7SyxPO0ssYTtJO0k7STtHOzs7STs7STtJO0ssWTtLLFM7SztPOzs7VTtTOzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7UztXOzs2QixtQixhOztRLE87Ozs7UTs7UztTLE87USxPOzs7O0c7O0k7STttQjtLLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7Ozs7USxtQjs2QjtRLHdCO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO1M7Vzs7NkIsbUIsYTs7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7VSxPO1UsTztTLE87O1EsSSx3QixPO1EsTzs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRLFc7USxPOzs0QyxXOzs7Ozs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VzthOzhDLGM7VztXOztXOzs7VTtrQjs7O1U7OztXO1csTTtXLFE7Vzs7O1c7VTs7Ozs7bUI7Ozs7Ozs7Ozs7ZTs7O2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7Z0I7OzttQjttRCxlOztlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7Ozs7VTs7VzthOzZDLGE7Vzs7O1U7OztvQjtxQjs7c0I7OzswQjs7O29CLE87bUI7Ozs7OztXOztZOztZLFE7WTtZLFE7WSxPO1k7OztlOzs7ZTs7O2dCO2dCO2U7Ozs7Ozs7WTtXOzttQjs7VSxXOztVO1csUTtXLE07VyxROzs7Yzs7O2M7OztlO2M7Ozs7Ozs7VztXO1U7Ozs7a0I7OztVOztXOzs7VztXLFE7Vzs7O1U7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7WTtZO1k7MkI7WSxTOzs7ZTs7aUI7Ozs7O2tCO2tCOztpQzs7a0I7aUI7Ozs7eUI7Ozs7Ozs7Ozs7O2UsTTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxNOztZO2EsTzs7ZTtvRCxpQjs7Vzs7VTtXLFE7VztXLFE7Vzs7O2M7OztjOzs7ZTtlOzs4Qjs7Yzs7Ozs7Ozt1Qjs7O1c7VztVOzs7O2tCOzs7Ozs7O007TztRLFE7OztRO1E7Ozs7O087Ozs7O087USxPO1EsTztPLE87O0s7O00sTzs7OEI7O0s7O007TztRLFE7Ozs7OztXOzs7Ozs7O1MsTTs7O087Ozs7O1EsTTs7O0s7O00sTzs7b0M7OztLOzs7TTs7Ozs7O2lCOzs7Ozs7TTs7Ozs7TyxXO087TTs7Ozs7SztNLFU7O007SyxPO0k7SSxPOzs7STtLLE87SyxTO0k7Rzs7SSxzQzs7STtLLGU7SyxTO0s7Ozs7STs7RztJLGdCO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4QixPO3dCOztHOztJLEksVyw4Qzs7OzRCLE87OztHOztJO0k7Ozs7Ozs7Ozs7O0c7b0MscUM7O0k7STs7SSxPOzs7Yzs7aUI7OztxQjs7O3NCOzs7Ozs7Ozs7Ozs7O3lCOzswQixTOzBCLE07OzRCOzs7Ozt5Qjs7Ozt5Qjs7MEI7NEI7NkQsYzt5Qjs7eUI7MEIsTTs7Ozs7eUI7eUI7MEIsTTs7Ozs7Ozs7MkI7MkI7NEI7O2dDOzs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7MEI7NEI7NEQsYTs7Ozs7K0IsUzs7K0I7d0M7Ozs7OEI7OzhCOzs7eUIsbUIsTzs7eUI7MEIsTTswQixNOzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7eUI7OzBCOzs7eUI7eUI7MEIsTzs7NEI7Ozt5Qjs7MEIsUTswQjswQixROzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7O2lDOztxQjtvQjs7ZSxNO2MsTzs7O3dCO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3VCOzs7OztHOztJLFk7O0k7Rzs7STtnQjs7O00sTTtpQzs7STs7Ozs7Ozs7ZTs7Rzs7STs7OztROztJOzs7O0c7O0k7SyxVO0ssOEI7SyxZO0k7O0s7Ozs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07Szs7O1U7Ozs7OztTOzs7SztJLFc7Rzs7STtLLGtCLE07SyxPOztJO0ssTztJO0k7SyxNO0ssTTtLLE07SSxPOztHOzs7STtLLE07OztLO00sTTs7TSxNO007UTtLLE87STtJOztPOztPOztPO2U7Ozs7STtLLE87STs7SztLLFU7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNO0s7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJO0s7SyxhLFc7STtHOzs7Ozs7Ozs7O0k7Szs7OztLLGtCO0s7SyxZO0k7Ozs7O1k7O0c7O0k7SztPO1M7OztZOzs7Ozs7WSxTO1k7YTtlO2EsSTtZO1c7O0ssUTs7O0ssTztJLE87OztjLGM7O2M7YTs7O0c7O0k7SztPOzs2Qix3Qjs7Ozs7OztJO0c7RywyQyxTOztJLDJCLE8sK0I7Rzs7STs7YSxjLE87Ozs7O3VCLFc7dUI7c0I7WTs7Rzs7STs7O2M7YTs7NEIsUzs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87OztJOzs7YyxXO2MsVzthOzs7YSxXO2EsVztZOzs7OztHO0ksbUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7YyxPLGM7YTs7NEIsTyxjLHFCOzs7O0c7d0IseUI7O0ksUSxxQyxTOztJOzs7YztjO2E7Rzs7SSxPOzs7YztjO2E7OztHOztJLHVEO0k7Rzs7SSxzQztnQjtJOztLLFE7SyxPO0ssTztLLFM7SztLO0ksVzs7O0k7O087Ozs7OztROzs7UTtPOztPOzs7UTs7O087O08sTzsyQzs7OztJO0s7Szs7Szs7TTs7UTs7O1c7VztVOzs7O0k7Rzs7STtLO087OztVO1U7Uzs7O0s7Tzs7Ozs7Vzs7O29COztxQzs7O1U7VSxPOzs7b0I7b0I7bUI7Ozs7STtHOztJLEksVTs7Szs7USxvQjs7Ozt1QixNOzs7OztTOzhCLE07O1MsSSxrQjs7Ozs7VyxVO1c7O1UsTTs7UztVOztVLFU7dUIsTTtTOztVLDBCLHNCOzs7YTs7O2M7Ozs7YTs7Ozs7Ozs7WTtVO1U7Ozs7Yyx3QztjOzthOzs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTtTOztpQyw2Qjs7Ozs7O1E7Ozs7OztTOzs7UTs7Z0MscUM7O1E7Ozs7O1M7UTs7Z0MscUM7O1E7OztTOzs7UTs7Z0MsNkI7Ozs7Ozs7Ozs7O3NCOztVOztnQyxnQzs7OztTOzs7O1U7VTtZOzs0Qjs7VSw0QiwwQjtVLDBCLFk7OzthOzs7ZSxNOzs7O2U7ZTs7O3VCOztjOzs7O1k7VTtZOzJDLHdCO1M7O1c7WTtjO1k7Ozs7Ozs7Ozs7NEI7Ozs7WTs7WTs7Ozs7YTs7Ozs7Z0I7Ozs7YSxNOzs7Ozs7OztnQjs7Ozs0Qjs0QjsyQjs7ZTs7WTs7O3NCLGU7Ozs7OztnQzs4Qzs7Ozs7OzBDOzs7Ozs7Ozs7MEMsTzt5QzsrQjtxQjs7Ozs7OztZOzs7YTs7O2dDLDZDOzs7Z0IsaUIsaUI7Z0I7Ozs7b0I7Z0IsTTs7O3lCOzs7ZTs7Ozs7WTs7O1E7UTs7UTs7OztTLFU7OztTLFU7OztTO1M7O1E7OztrQjs7Ozs7bUI7cUI7bUI7cUI7bUI7O2tCO2lCOztROzs7OztTLFU7OztTO1M7UTs7O2tCOzs7bUIsUTtrQjtpQjs7USwwQjtROztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UztROzs7a0I7a0I7aUI7O1EsOEI7UTs7OEIsc0I7OztROzsrQixzQjs7O1E7OytCLG9CO2dCLDRCOztJOztLO2M7OzhCOztJOztLOztROzBDO2UscUMsUzs7Syw0QixjO0k7OztLLFU7Szs7STs7Ozs7O0s7SztPO0s7SyxTO0ssUTtLOzs7Szs7SztPOzs7Ozs7OztLLFE7SztJO0c7O0ksTzs7MkI7O0c7dUIsNEIsd0I7Rzs7O00sdUI7OztPOztROztXLE87Ozs7OztVO1E7O1csVTtXLE87VTtRO1U7WSx3QyxZOztRLE07UTtVO1ksMkMsZTtRLFMsVztPO2U7OztNO08sTzs7Ozs7Ozs7OztNO007TyxVO08sTztNO007TztTO1csd0MsWTs7TyxNO08sVyxXO007Yzs7Szs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Z0MsTztJLEc7SyxNO0k7SyxPO0ssTztJLFMsTTtJO0c7O0k7OztPLEc7USxNO087O087Ozs7OztRO1U7OzJCOztPOzswQixpQzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOzs7Tzs7c0Isd0M7O087Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7Ozs7Tzs7ZTs7Z0M7Ozs7Tzs7OztRO1U7OzJCOztRO1U7OzthO2E7WTs7O1E7VTs7O2E7YTtZOztRO087O087Ozs7O1E7VTs7MkI7O1E7VTs7O2E7YTtZOztPOzs7Tzs7ZTs7Z0M7OztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7UTtVOzsyQjs7UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7O0ksTzs7O2M7YzthOzs7O0c7O0k7STs7O1E7O1E7O1E7O1Esc0I7Ozs7VSxXO1U7OztROzs7OztRO1MsTzs7O1E7Ozs7Ozs7O1E7OztXO1c7VTs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROztRO2tEOzs7UTtrRDs7USxPOztnQzs7OztRO1E7OztXO1c7VTs7USxPOztnQzs7OztRLE87OztROzs7OztROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztJOzs7SSxPOzt5QixnQyxrQjtHOztJLE87OzRCO0c7O0k7Ozs7O0c7O0k7Ozs7O0s7Ozs7Ozs7Ozs7OztXO2E7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7Szs7O1EsbUIsTztRLFMsTTtRO087O0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SztLO007UTs7MEIsa0IseUI7O007TTtRLDJDO00sZTtNLFU7TTtROzs7VyxPO1U7Ozs7TSxTO007USx5QyxrQjtNLFk7Szs7STtLO007Ozs7TTs7OztVOztLOzs7OztNOzs7ZTs7OztHOzhCO0c7STs7Ozs7Ozs7OztJO0ssUTtLLFk7SyxXO0s7SztJO0s7O0ssVztLLE87STs7Szs7eUIsTzs7OztTOzs7VSxVOzs7Ozs7Ozs7OztXOzs7OzthOzs7OztZOzs7OztTLE87Ozs7eUIsa0I7Ozs7Uzs7OztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVO1U7VSxjOzs7O1k7O2EsSzs7WTtZOzs7O1U7VTs7Ozs7SyxPO0k7MkIsNEI7O0s7OztLOzs7STs7Szs7Szs7O0k7STs7Szs7Ozs7OztVLEc7VztZLEs7WSxPO1k7O1ksTTs7OzJCOzs7Ozs7O1MsRzs7O2dCOztLLFc7SyxPOzs7ZSxrQztlO2M7OztJO0ksYTtHOztJOzs7K0I7Ozs7O0ksSSxvQixRO0k7SyxJLFcseUM7Ozs2Qjs7O0k7O0ssWTs7OzthOzs7SztLLE87STs7Ozs7OztTO1MsTzs7aUM7Ozs7Ozs7Ozs7Uzs7O1k7WTtXOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQiwyQjs7UyxPOzs7bUI7bUI7a0I7Ozs7UztTOzsyQixrQiwyQjs7aUI7OzZCOzs7OztTO1MsTzs7aUM7Ozs7Ozs7O1c7VztZO1ksTztXOzs7O1M7Ozs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7Ozs7UyxPOztpQzs7Ozs7O2lCOztNOzs7O0k7SSxZOzs7Ozs7Uzs7Ozs7O1U7WTs7NkI7O1M7Ozs7UztpQjs7a0M7OztTOzs7Ozs7VTtTOztTOzs7OztVO1M7O1M7OztVO1k7OztlOzs7Ozs7OztnQjtnQjtrQjs7ZTtjOztTOztTOzs7O1U7WTs7NkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1U7WTs7NkI7O1M7Ozs7O1M7Ozs7O1U7WTs7NkI7O1U7WTs7O2U7ZTtjOztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VTtZOzs2Qjs7UztVO1csUTs7O1c7YTs7O2dCO2dCLFc7ZTs7VzthOzs7Z0I7Z0IsTztlOzs7O1csTztXO2E7OztnQjtnQjtlOzs7O1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1U7WTs7NkI7O1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7OzthO2EsTzs7cUM7O1k7Uzs7VTtXO3lCOzs7Ozs7Uzs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7O1M7OzJCLG9CLDZCOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQix3Qjs7UyxPOztrQyxrQix3Qjs7OztTOztTOzsyQixrQixzQjs7aUI7OzZCOzs7OztTLE87O2lDOzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7OztTO1M7Ozs7Ozs7OztTLE87O2lDOzs7Ozs7Ozs7Ozs7O0k7SSxjO0k7Szs7TSxlLDZCOztLO0k7STtLOztNLGUsNkI7O0s7STs7Ozs7OztTLEksVSwyQzs7O2dDOzs7Ozs7Ozs7YTs7Ozs7YyxNO2E7WTtTOztVO1c7dUI7Vzs7WTs7Ozs7Uzs7Uzs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7WTthLE07YSxNO2dCO2EsVTthLE87Ozs7OztTLE87Ozs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7WTs7O2UsVTtlO2M7O1M7OztTLGM7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1UsVztTOzs7OztTOzs7OztVLE07VTtZOzs7ZTtlO2M7O1M7OztTLGU7O1M7Ozs7OztVO1M7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOzs7O1UsbUI7VTs7O1M7VTtVOzs7OztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7eUM7O1M7Ozs7OztVLE07VTtTOzt3Qzs7O1MseUI7OztpQjs7O0k7SztLLFE7SztLLGE7SSxRO0k7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHdCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOzRCO2E7SztJO0c7O0k7OztROztROztROztROztROztROztROztRO2dCOzs7STtHO0c7STs7Ozs7SSxVO0k7Rzs7SSxVO21CO0k7Ozs7Rzs7SSxvQjtJOzs7Tzs7O1EsUztnQjtRLE07TztPLE87TTs7SSxVO0k7SSxPO0c7Rzs7OztJLGtCO0k7STtLLGU7SyxTLDJCO0k7SyxNOztJO0ksSSw0Qjs7OztNO08sTTtPLE87TyxNOztNOzs7OztJO0s7Tzs7O1U7Ozs7O1c7VTtTOzs7OztJO0c7bUIsWTtpQyxZOztJO0k7aUIsTTs7Ozs7OztLLEc7TTtNOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksaUI7O0c7O0k7Szs7bUIsVyxxQzs7O0c7O0ksRztLLE87STs7UztLOztROztLLE87O0k7Rzs7SSxPOzs7YyxXO2M7ZTtnQixhO2dCO2tCO3FCOzs7Ozs7Ozs7OztjO3lCOzt1QzswQjs7O2UsWTs7Ozs7O2U7O2dCLE07Z0IsTTtnQixNO2UsTzs7YyxJLFU7Ozs7O2U7O2dCLE07Z0IsTTtlLE87O2M7Ozs7b0I7Ozs7O0c7O0k7OztPOzBCOztPLE87TTs7OztHOztJOztpQjs7OztNLEcsdUM7TTs7Ozs7TTs7O08sTztNOzttQztPOztNOzs7OztHO0c7STs7OztJOztJLGlCOztJLE07Rzs7STs7O0s7SztNO08sTTtPLEs7TTs7O3NCOzs7Ozs7Tzs7Ozs7Ozs7Ozs7SyxJLFE7Ozs7Ozs7ZTs7cUI7O0c7O0k7STtLLE07SyxNOztLO3NDLDRCOzs7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCOzZCLE87NEIsTztHOzs7OztJOzs7Ozs7STs7OzswQiw0Qzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTzs7O0ksVztJLE87O2M7RztHOzs7OztJOztJOzJCLHFDOztLOzRCO0s7STs7Szs7SztJO0k7O0c7OztJO0k7O0k7Rzs7STtLO0s7Ozs7O00sTTs7O0c7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7SSxJLHdEOzs7OztNLFk7a0IsTTs7b0I7TSx1QjtNO007O0s7O0c7O0k7a0I7O0k7Rzs7SSxXO0k7OztPO087TTs7STtHOztJO0ksTztHOztJLEksK0IsTTtJLE87Rzs7SSxJLHFEOzs7O007TTtNOzs7OztJO0k7STtJO0k7SSwrQjs7OztNO007TTs7Ozs7STtJO0k7STtJO0ksK0I7Ozs7TTtNO007Ozs7O0ksTztHOztJOzs7Ozs0Qjs7NEI7OzRCOzs0QixPOzs4Qjs7OEI7c0M7OztPOzs7UTtVLDRCOzs2QixvQyxTO087Tzs7Tzs7UTtVLCtCO087OztVLE8sK0I7Uzs7TzttQzs7Rzs7STs7O08sTztRO087UTtRO1E7Ozs7OztROzs7TTs7O0ssUztLLE87O2tDLE8sMkI7OztlLEksUSxlOzs7dUM7OztjO0k7Ozs7SyxPO0ksZTtJLE87O2lDLE8sK0I7OztjOztpQjs7Ozs7OztpQzt1QjtlLE07O2M7YTtHOztJO0k7STtJLE87Rzs7SSxPOzs7Yzs7O2lCOzs7a0I7O2lCOztpQixxQztpQjs7aUIscUM7aUI7O2lCLHVDO2lCOzs7aUI7O2E7O0c7O0ksVztJOzs7TztPO087TTs7O0k7Rzs7STtHO21DLHVCOztJO087SztJLFc7STs7O087TztPO007Ozs7Rzs7SSxXOzs7STtJOztHOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7STs7O0ssaUI7Szs7TTtNLFU7O2EsTTtLOztJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7STtJOzs7TztRLE07UTs7MEI7OztNOztJO0c7O0k7RzttRDtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Rzs7O00sdUI7O00sVztLOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksTzs7Ozs7Yzs7O0c7O0ksd0I7RztpQzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUztJLE87Ozs7ZTs7Yzs7O2M7ZTtlO2lCLDJCO2M7ZSxNO2MsVTs7YyxPO2E7Rzs7SSxTO0k7STtLLE07SztPOzs7VTtXO1csUztXLE07VyxNO1csTztzQjtVOztXO1csTTs7aUI7VyxNO1UsUztVO1c7WSxNOzs7Ozs7OztVO1UscUI7VTtVLE07Ozs7STtHOztJLGdDO2U7STs7O2tCLFc7SyxRLFc7STtJOzs7SSxnQztlO0k7OztrQixXO0ssUSxXO0k7STs7O0k7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFM7STtLO2U7Szs7O00sVTtNLEc7TyxNOzs7Ozs7Ozs7O1c7Ozs7STtHOztJLGMsK0I7Rzs7STtLLFM7SyxTOztJO0c7OztJO0s7Szs7O0kseUIsTywyQjtJO0s7O1E7VTs7VyxVOztXO1k7Ozs7Ozs7OztZLFU7WTs7VyxPO1U7OEI7Ozs7Szs7UTtVOztXO1c7VTtLOzs7UTs7OzswQixPLDhCOztJLE87Ozs7O2M7YTtHOztJOzs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOztHOzs7TSx1Qjs7TSxXO0s7OztJO0k7SSxPOztpQyxzQzs7O2MsTzt1Qjs7d0I7Ozs7Ozs7dUI7YTtHOztJO0k7OzsyQjs7O0c7O0k7STs7OzJCOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STs7Ozs7Ozs7SSxPO0c7O0k7STtJO0k7STtJO0ksTTtHOztJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJLE07Rzs7SSxZOztJO0c7O0ksWTs7STtHO0c7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87O0c7O0k7O3NCLE07Ozs7O0s7O1E7O3NCLE8sOEI7O0s7Ozs7O00sTzs7OEI7Ozs7OztHOztJLGdCOztLLE87OzZCOzs7OztHOztJOzs7aUI7O2lDOzs7Ozs7O0c7O0k7SyxTO0ssTztLLFE7a0MsTztJLFc7STs7cUI7Ozs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0ksTyxXO0c7OztLLCtCLFM7STs7SywrQixhO0k7Ozs7Ozs7Ozs7USxvQjs7O1MsTzs7aUM7Ozs7Ozs7OzBCOzs7O1U7O1U7O1U7O1U7O1M7OzBCOzs7VTs7Uzs7UTs7Ozs7O1M7Ozs7O2E7O3dCOzt3Qzs7OztZO1M7Ozs7Uzs7OztTOztVOzs7VSxPOzs7Ozs7UTs7eUI7O1E7Uyx5QixTO1M7UztvQjtRLHFCOzs7O21COzttQzs7Ozs7Ozs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOztROzs7TTtPO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOytCOztTLGM7dUI7UyxzQixPO1MsTzs7aUM7Ozs7OztTLE87Ozs7Ozs7O1M7O1M7Ozs7UyxjOztVLE87O2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7OztTOzs7Ozs7Ozs7OztTOzs7O1UsYzs7VyxPOzttQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs4QixPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7OEI7Ozs7SSxlOzs7OztjOzsrQjs7OztHOztJOzs7O0k7O087O0ksRztLLEksUzs7TTs7TyxNO08sVztPLE87TSxXO00sTTs7SztNLE07Ozs7SztNO087O1U7Ozs7O2E7YTtZOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7UTs7O1c7O1U7Ozs7OztROzs7O1csYztXOztZLGE7WSxZO1c7OztJOzs7TztPO007O0k7SyxRO0s7OztPOzs7USxROzs7Ozs7Ozs7b0I7OztTO1UsTTtnQjs7Ozs7Tzs7Ozs7O1UsSSxjOzs7O1ksTTs7O3FCOzs7O1U7Vzs7Ozs7Vzs7Ozs7OztVO1csTTs7Ozs7OztPO1EsTTs7TztRLE07USxNOzs7Ozs7OztPOzs7Ozs7OztNOzs7UztTO1E7Ozs7Ozs7O0ksVzs7SSxXOzs7Rzs7STtJO0ssTTtLLE07SSxPO0c7RyxJOztJO0s7SyxNO0ssTTtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0c7O0k7O0s7O087WTtNLEc7TSxHOzs7Ozs7STtHOzJCLDRCOzJCLDRCOztJOzs7Szs7UTs7MEIsNEI7O1k7TTs7O0s7Tzs7O1UsbUI7O1UsTztTOztNOzt1QztJLFU7STs7Ozs7Ozs7OztRO1E7UTtROztTLFU7OztPO087O2dDOzs7VTtVO1U7OztXOztZLFU7Ozs7Ozs7OztVOzs7Ozs7O21CO1csTTs7Ozs7VTs7WTtpQjs7YTs7Ozs7Vzs7YTtrQjtZOzs7aUI7Ozs7WSxjOzs7O2E7O1k7O2U7WSxNOzs7Ozs7Ozs7VTs7VyxNOzs7O1U7O1csTTs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7OztJO0s7WTtLOzs7OztNOztPLFk7TyxNLFc7TyxNO08sWTtNO00sTTs7O0s7O00sTSxXO00sWSxXO00sVztLO0ssTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiwrQzs7SSw4QjtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O08sNEMsUztJOzs7O0c7O0k7Rzs7STtHO29CLHdEOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7RztHOztJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7STs7OzJCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzJCLDZDOztJO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0ksTTs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7eUIsbUQ7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG9EOztJO0c7dUIsa0Q7dUIsa0Q7O0k7Rzt1QixrRDt3QixtRDt5QixvRDt5QixvRDs7STtHOztJO0c7eUIsb0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RztrQiwwRDs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJO0ksTzs7O2M7O2U7OzswQyxpQzs7NEM7ZTtnQjsyQjs7ZTsyQyxXLGM7ZTs7O2tCLHVCLGtCLGlCOzs7a0I7OzJCOzJCLHVCOzBCOzs7a0IsMkIsWSxpQjs7O2tCLDJCLFksaUI7OztrQjtzQyxvQiwwQjs7O2tCO3NDLFksMEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7Ozs4QjtrQjs7O21CO21CO3FCOztzQzs7a0I7OztrQjs7c0Msb0IsMEI7OztrQjs7MkI7b0U7MkI7MEI7OztrQjs7MkI7MkI7MkIsTzswQjs2Qzs7YztjO2E7O0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDZCO0c7Ryw0QjtHO0csNEI7RztHLDJCO0c7RyxpQztHO0csa0M7RztHLGdDO0c7Ryx3QjtHO0csd0I7RztHLHdCO0c7RyxxQjtvQixrRDs7Ryx5QjtHO0csd0I7RztHLDhCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2Qjs7STtLLE87SyxPO0ksTyxXO0c7O21CLG9EO21CLG9EO0c7SSxRO0k7Ryx1QjtHO0csMEI7RztHLDBCO0c7Ryx1QjtHO0csMEI7RztHLHNCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO087Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLG9DO0c7RyxpQjtrQixrQzs7SSxlO0ksTztHO3FCLGdEO3dCLGtDOzs0Qix1Qzs0QixpQzs7Ryw4Qjt3QixtQzt3QixrQzs7RyxpQjtHO0csb0I7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7O0k7OztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csc0I7RztHLHdCOzs7Ozs7O0k7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7Ozs7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOzs7Ozs7RywwQjs7SSxPO0c7MEIsbUQ7cUIsTyxpRDt1QixTO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOzs7O0csd0I7O0ksTztHOztHLHlCO0c7MkI7RyxJO0cseUI7RztHLHNCO0c7RywwQjtHO0csd0I7O0ksZTtJLE87Rzs7SSxXOzs7Rzs7STs7OztHOztHLDhCOztJOzs7O0c7O0k7OztHOztJOzs7Rzt5Qiw2QjsyQiw2Qjt1QixPLHFDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7OztLO087Ozs7O0ssTTtLLFk7SyxNO0ssTTs7SyxZO0s7SyxNO0ssUztJO0ksTzs7O0k7STtJOztLLE07SyxNO0ksTztHOzs7STtLLFksa0I7Ozs7Z0I7Szs7OzsyQjs7Ozs7STtJLFU7STtLLFk7Ozs7Ozs7STtJO0k7Rzs7SSxHLG1DO0ksZTtJO0k7Rzs7STtLLFU7Szs7O2M7YyxPO2E7STs7O0s7O00sTSxXO0ssZTtLO00sTTtXOzs7Ozs7SztNLE07b0I7Ozs7SztNLDBCO007OztJLE87Ozs7NkIsTyx3QjtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7dUIsZ0M7a0MsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87TTtROzt3QixPLHFDOztNLFE7TSxPO007UTs7d0IsTyxtQzs7O0s7a0IsTTtNOzs7Ozs7O1UsVztVLHFCO1M7TyxVOzs7O0s7O007OztXOzs7OzRCOzs7STtLLFc7SyxXO0ssVztLO087OztVLE8scUI7Uzs7SztPOzs7VSxPLHFCO1M7O0k7Ozs7TTtPOzt1QjtLOzs7OztNLE87SyxXOzs7Ozs7Ozs7OztJOztZOzs7STtLO007OztXO3lDLHlCOzs7O0ksSztLLE87O0k7O0ssVTtNLEk7Ozs7VTs7STtLO087OztJOztNLE87SyxVO007TTtNLEk7Ozs7O00sMEI7TSxJOzs7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0s7TSxhO007UTtVOzs0QixPLGtDOztXO1k7Yzs7WSxPO1k7Yzs7O2lCO2tCLFM7a0IsTztpQjtpQixVO2lCLE87Z0I7OztZLEk7VztVO0s7Ozs7Szs7TTtNOzs7SztNO1E7O1M7O1MsYTtTO1M7VTs7VztZLFk7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCO2lCLGM7O2lCOzs7Ozs7Ozs7OztjOzs7O2dCOztpQixPOzs7Ozs7Ozs7Ozs7Ozs7O1E7O3dEO0s7O0c7Ozs7Ozs7O0s7SztLOzs7UTs7UyxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CLDRCOztPOztLLE87OztLO00sYTs7O1E7O2dDOzs7O00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXO0k7TTs7O1MsTyxxQjtROzs7Ozs7Szs7TTs7O0k7O0s7Tzs7OEI7Ozs7OztLLFc7SztPOzs7O0ssVztLO087OztNLFc7TTtlOzs7Ozs7Ozs7STtLLGMsZSx3QixTO0ssVztLLE87STs7Ozs7O0k7O0c7O0k7OztJOztHOztJOztJOztLLE87SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOztJLE87OztjOzs7ZSxJO2MsRztlLFc7ZSxPOzs7Ozs2Qzs7O2MsVztjLE87YTs7Rzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0ssYztLLEc7TTtjO007O0ssUzs7TTtjO007Ozs7O1MsVztTLE87UTs2Qjs7O0s7TSxPO00sTzs7TTs7Ozs7Szs7Ozs7TTs7O1M7Ozs7TTs7O1M7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STs7SyxxQztJOztJO0s7Szs7Ozt3QixjO3dCLG1CO3dCLG1COzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDOzs7OzttQzs7Ozs7OztxQzs7Ozs7c0M7Ozs7O3VDOzs7Ozs7O3VCOzs7Ozs7Ozt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEM7Ozs7OzRDLDZCOzs7Ozs2QyxrQzs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt3QixpQjtLOzs7O3NCOztLLGU7SztLOztNOztPLEk7TztPO1M7OztZOzs7OzthLFU7YTthO1k7WTtZO1c7O007OztTOzs7Ozs7VTtTO1M7OztZO2EsRztjO2EsVzthOztZLEc7YTtZLFc7WTtXOzs7O1UsVTtVLFE7Ozs7O1M7UTs7TTs7Ozs7OztPOzs7VTtXLFE7OztXOztVOzs7YSxVO2E7WTs7Ozs7O29CO29COztTOzs7O087YztPLFc7TztPOztvQyxzQzs7Tzs7VTs7O2E7YSxPO1k7O087OztVO1U7VTs7O2E7OztjO2EsTztZOztVO1UsTztTOztPOztNOzs7TSxVO007O0s7Szs7OzsrQztLO0s7O0c7O0k7SSxPO0c7O0k7SztLOztJOzs7ZTtLO0ssYztLLE87SztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxTO0ssTTtJO0k7SyxNO0s7TztJLE87YTs7YyxPOzthO0c7O0k7SyxNO0ssTTtLO08sVztJLE87YTtHOztJLE87YTs7YztlLE0sVztlO2lCO21COztlOztlOzs7OztrQjttQixNO21CLE07a0IsTzsyQjs7OztpQjtjO2M7YztjO2M7YTtHOztJO0ssUztLLE07SyxLO0ksTztHOztJLFU7SSxPO2E7O2M7YyxHLDZCO2MsSTs7YTtHOztJO0ssYTtLLE07SztPLFc7SSxPO2E7Rzs7STtLLE07SztPO1MsVztLO08sVztJLE87YTs7Ozs7Z0I7Z0IsTztlOztHOztJLFU7SSxPO2E7OztlOzs7OztlLE87Ozt5QjswQixNOzBCLE07eUIsTzt3Qjs7YztjLE87Ozs7O3dCO3dCLEs7eUI7eUIsSzswQjs7d0I7d0IsTzt1QjthO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0dtR3JvQk07Ozs7SUFBQTtJQThITTtJQU1abzZIO0lBRUFDO0lBcENPLGtCQWtDUEQsU0FFQUM7SUE0Qko7R0FFUTtHQUVlLFNBQW5CQyxXLFU7R0FQQTtJQUFBOztPQU9BQTs7OztJQVMwQjtJQW9DWDtJQWxCQTtJQWlDTjs7Ozs7RTs7Ozs7Ozs7Ozs7O0dFaE5EOzs7OztJQUFBO1lBbUNSQyxJQUFLQyxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDQyxJQUFLRixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUEscUNBaUJuQ0YsS0FFQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFNQUM7SUFIVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FHVkE7Ozs7Ozs7O1lBTUFDLFFBQU9KLEdBQVdDLEdBQVksT0FBdkJELE1BQVdDLFVBQTBCO0dBSHBDO0lBQUE7Ozs7Ozs7OztPQUdSRztJQWRBQztJQUVBQzs7OERBRkFELE9BRUFDOzs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHQ2FXOzs7Ozs7SUFBVEM7SUF6Q1UsYUF5Q1ZBO0lBa0NGQztJQUlBQztZQXFDRUMsYztZQU1BQyxJQUFJWCxHQUFFWSxHQUFJLE9BQU5aLEtBL0NOUSxTQUFBQSxTQStDbUQsV0FBM0NJLEdBQUZaLEdBQWtEO1lBRXREYSxLQUFLYixHQUFFWSxHQUFJLE9BQU5aLEtBakRQUSxTQUFBQSxTQWlENkMsV0FBcENJLEdBQUZaLEdBQXlDO1lBRTlDYyxLQUFLZCxHQUFJLFlBQUpBLEtBbkRQUSxnQkFtRDhCO1lBRTVCTyxLQUFLZixHQUFFWTtJQUFXLGVBQWJaLEtBckRQUTtpQkFxRHlDLFdBQWhDSSxHQUFGWjtHQUFxQztZQUUxQ2dCLE9BQUtoQixHQUFFWSxHQUFFSztJQUFJLE9BQVJqQixLQXZEUFEsU0F1RHFDLFdBQTVCSSxRQUFzQyxXQUFwQ0ssR0FBSmpCO0dBQTJDO1lBRWhEa0IsSUFBSWxCLEdBQUVZLEdBQUksT0FBTlosS0F6RE5RLFNBeURrQyxXQUExQkksUUFBRlosRUFBdUM7WUFFM0NtQixPQUFPbkIsR0FDVCxLQURTQSxHQXZEZSxPQUp4QlEsWUE4RE9ZLE1BSEVwQixhQUdGb0IsSUFBYTtZQUVsQkMsVUFBMkNyQixHQUE3QixPQUE2QkEsS0FoRTdDUSxpQkFnRTZDUixHQUFZO0dBNUJsQjs7O09BcEN2Q1E7T0F5Q0VFO09BTUFDO09BRUFFO09BRUFDO09BRUFDO09BRUFDO09BRUFFO09BRUFDO09BS0FFO1lBUUFDLGM7WUFNQUMsTUFBSXZCLEdBQUVZO0lBQUksT0FBTlosTUExRU5TLGNBQUFBLGNBMEVvRSxXQUE1REcsR0FBRlo7R0FBbUU7WUFFdkV3QixPQUFLeEIsR0FBRVk7SUFBSSxPQUFOWixNQTVFUFMsY0FBQUEsY0E0RThELFdBQXJERyxHQUFGWjtHQUEwRDtZQUUvRHlCLE9BQUt6QixHQUFJLFlBQUpBLE1BOUVQUyxxQkE4RTBDO1lBRXhDaUIsT0FBSzFCLEdBQUVZO0lBQVcsZUFBYlosTUFoRlBTO2lCQWdGcUQsV0FBNUNHLEdBQUZaO0dBQWlEO1lBRXREMkIsT0FBSzNCLEdBQUVZLEdBQUVLO0lBQUksT0FBUmpCLE1BbEZQUyxjQWtGaUQsV0FBeENHLFFBQWtELFdBQWhESyxHQUFKakI7R0FBdUQ7WUFFNUQ0QixNQUFJNUIsR0FBRVksR0FBSSxPQUFOWixNQXBGTlMsY0FvRjhDLFdBQXRDRyxRQUFGWixFQUFtRDtZQUV2RDZCLFNBQU83QjtJQUNULEtBRFNBLEdBdEZlLE9BQXhCUztRQXlGT1csTUFIRXBCO1dBR0ZvQjtHQUFhO1lBRWxCVSxZQUEyQzlCLEdBQTdCLE9BQTZCQSxNQTNGN0NTLHNCQTJGNkNULEdBQVk7R0E1Qlo7OztPQS9EN0NTO09Bb0VFYTtPQU1BQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUtBQztZQUtGQyxPQUFPL0IsR0FBRVksR0FBRUs7SUFBWSxVQUFBLFdBQWRMLEdBQUZaO0lBQXNCLE9BQUEsd0NBQVcsT0FBekIsV0FBSmlCLEdBQUpqQixHQUFvQztHQUFDO1lBRTVDZ0MsV0FBV2hDLEdBQUVZLEdBQUVLO0lBQVksVUFBQSxtQkFBaEJqQixHQUFFWTtJQUE2QixPQUFBLHdDQUFXLE9BQWxDLFdBQUpLLEdBQUpqQixHQUE2QztHQUFDO0dBb0NqRDtJQUFSaUM7SUFFQUM7SUF3SEFDO0lBRUFDO0lBRUFDO0lBRUFDOztJQVNGQzs7SUFFQUM7OztZQStFQUMsZ0JBQXlDLG1DQUEwQjs7O0lBRW5FQztJQU1BQztJQUVBQztZQU1BQyxVQUFVakM7SUFBdUI7O09BQUE7a0JBQW9CWixHQUFFOEMsWUFBVSxPQUFBLFdBQXZEbEMsR0FBMkNaLEdBQWU7O0dBQUU7WUFFdEUrQyxXQUFXbkM7SUFBdUI7O09BQUE7a0JBQW9CWixHQUFFOEMsWUFBUyxPQUFBLFdBQXREbEMsR0FBNkNrQyxLQUFGOUMsR0FBa0I7O0dBQUU7WUFVMUVnRCxlO1lBRUFDLGtCO0dBK01lOztJQS9GZkM7O0lBbUZBQzs7SUFZQUM7SUFBZTs7SUE4Q2ZDOzs7WUFuQ0VDLFVBQVMsT0FBQSxrQ0FBNkI7WUFFdENDLGFBQVksT0FBQSxxQ0FBZ0M7WUFFNUNDO0lBQ1ksVUFBQTtJQUFBLE9BQUE7R0FBd0M7WUFFcERDLGVBQWMsT0FBQSx3Q0FBZ0M7WUF3QmhEQyxlQUFlQyxHQUFJLE9BQUEsa0JBQUpBLEdBQXlDO1lBRXhEQyxnQkFBZ0JELEdBQUksT0ExQmxCRixVQTBCY0UsR0FBNEM7OztJQVk1REU7OztZQUVBQyxVQUFXQyxHQUNiLHFCQUFBLE9BQUEsY0FEYUEsR0FDa0Q7WUFFN0RDLG1CQUFvQkQ7SUFDdEI7SUFBQSxPQUFBLHVCQURzQkE7R0FDa0Q7WUFFdEVFLFVBQVdGLEdBQ2IscUJBQUEsT0FBQSxjQURhQSxHQUNrRDtZQUU3REcsbUJBQW9CSDtJQUN0QjtJQUFBLE9BQUEsdUJBRHNCQTtHQUNrRDtZQUV0RUksT0FBUUosR0FDVixxQkFBQSxPQUFBLFdBRFVBLEdBQ2tEO1lBRTFESyxTQUFVTCxHQUNaLHFCQUFBLE9BQUEsYUFEWUEsR0FDa0Q7WUFrQzVETSxNQUFPQyxHQUNULHFCQUFBLE9BQVEsVUFEQ0EsT0FDNEQ7WUFFbkVDLFNBQVVSO0lBQ1oscUJBQUlTLE1BQUksYUFESVQ7SUFFVCxPQUxETSxNQUlFRyxPQUNZLHNDQURaQTtHQUNzQztZQUV4Q0MsV0FBWVY7SUFDZCxxQkFBSVMsTUFBSSxlQURNVDtJQUVYLE9BVERNLE1BUUVHLE9BQ1ksd0NBRFpBO0dBQ3dDO0dBRzVDOzs7TUFBMEIsdUJBRWY7VUFEUWI7TUFBSyxXQXZHcEJGLFVBdUdlRTtLQUNIO0dBR2hCOzs7TUFDSSxzQkF6V0ZqQjs7b0JBMFd3RDtLQUF1Qjs7R0FGakYsU0FJRWdDLFVBQVdDLE9BQXFCM0U7SUFJZixVQUFBLCtCQUplQTs7O0tBTXpCO09BRkg7Y0FKNEJBO2dCQU9oQixzQkFQZ0JBOzs7ZUFBQUE7O0lBQ2xDLG9CQURhMkU7R0FRSDtZQUVSQyxTQUFPRCxPQUFNM0U7SUFBSSxPQVZqQjBFLFVBVTJCLGdDQUFwQkMsUUFBTTNFO0dBQThCO1lBRTNDNkU7SUFDRjs7S0FFRTtPQUFBO2tCQUFxQkMsaUJBQTBCLE9BZi9DSixVQWVxQkksU0FBQUEsTUFBNEQ7O0dBQUU7Ozs7T0FqdUJqRnRFO3FCO09BSUFDO3FCOzs7T0FzSUF3QjtPQUVBQztPQTBIQUU7T0FGQUQ7T0FNQUc7T0FGQUQ7T0FXRkU7T0FFQUM7T0FBQUE7T0FBQUE7T0ErRUFDO09BRUFDO09BQUFBO09BTUFDO09BRUFDO09BTUFDO09BRUFFO09BVUFDO09BRUFDO09BZ0hBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW1GQUM7T0FZQUM7O1FBa0JFSztRQVBBSDtRQUVBQztRQUVBQzs7UUErQkZIOzs7c0I7c0I7T0FVQVE7T0FFQUM7T0FHQUU7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FtQ0FDO09BR0FFO09BSUFFO09BaG1CRTFDO09BRUFDO09Bc25CRjRDO09BRUFDOztPQWpHQWpCO09BRkFGO09BSUFMOzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7O1lDeHNCQTBCO0lBQ0YsSUFBSUMsMEJBQ2FDLFNBQUlDO0lBQ25CO1FBRG1CQSxNQURqQkYsUUFPRyxPQUFBLDRCQU5VQztLQUdQOzBCQUhXQztNQUdYLFFBQUE7O01BRU0sSUFBTHZCLGNBTFVXLElBQUFZLFlBQUpDLFlBS054QixHQUxNc0I7TUFBQUEsTUFBQUU7TUFBSUQsS0FBQVo7O1VBSVAsSUFKT2MsTUFBQUYsWUFBQUEsS0FBQUU7O0dBUVI7WUFtQ1RDLElBQUlDLEdBQUVDLE1BQU8sUUFBVEQsSUFBRUMsVUFBQUEsYUFBeUI7WUFFL0JDLElBQUl4RixHQUFFQyxHQUFJLE9BQU5ELElBQUVDLEVBQVc7R0FuQkcsK0NBaUJwQm9GLEtBRUFHLEtBQUFBO1lBNkNGQyxvQkFBMEMsb0JBQU8sU0FBOEI7WUFFL0VDLG9CQUEwQyxvQkFBTyxTQUE4QjtZQUUvRUMseUJBQ0YseUJBQU8sU0FBNkM7WUFFbERDLDRCQUNGLDRCQUFPLFNBQWlEO1lBeUh0REMsU0FBU0M7SUFDWCxZQURXQTs7OztRQUVFLFdBRkZBOztRQUdJLFdBSEpBOzs7UUFJZSxXQUpmQTs7SUFLSixXQUxJQTtHQUtlO1lBR3RCQyxLQUFNQyxLQUFnQlY7SUFDeEIsT0FEUVUsaUJBQWdCVjtjQUNFLDhCQURsQlU7O0dBQzJEO1lBRWpFQyxRQUFRdEMsR0FBMEIsT0FIbENvQyxLQUdRcEMsTUFBd0M7WUFFaER1QztJQUNGLDZDQUVLO0lBREEsT0FBQTtHQUNPO1lBRVZDLEtBQUt4QyxHQUF1QixPQVY1Qm9DLEtBVUtwQyxNQUF1Qzs7SUF5QjlDeUM7O1lBTUFDLFFBQVF6RjtJQUNWLE9BQ0U7O2FBQUE7O2dCQUV5QixVQUFBO2dCQUFiLEdBQUE7aUJBT0ssSUFBTjBGLE1BQU0sV0FYVDFGO3lCQVdHMEY7aUJBQ3lCLE9BRHpCQTs7Z0JBZnFCLElBQUEsYUFXZixRQUFBLFdBUFQxRjs7Z0JBUTRCO2VBSzFCO0dBQUU7WUFFWjJGLGFBQWEzRjtJQUNmLE9BQ0U7O2FBQUE7d0JBQThCNEY7Z0JBRUwsVUFBQTtnQkFBYixHQUFBO2lCQU9LLElBQU5GLE1BQU0sV0FYSjFGLEdBRWlCNEY7eUJBU25CRjtpQkFDeUIsT0FEekJBOztnQkE5QnFCLElBQUEsYUEwQmYsUUFBQSxXQVBKMUYsR0FFaUI0Rjs7Z0JBTU07ZUFLMUI7R0FBRTtZQUVaQyxlQUFnQjdGLEdBQThCNEYsUUFBWUUsT0FDNUQsT0FEa0I5RixPQUE4QjRGLFFBQVlFLE9BQ1Y7WUFFaERDO0lBQ0Y7S0FDRTtPQUFBOzs7O1VBQThCLE9BQXVCOzs7O29CQUFXLE1BQUE7bUJBQWU7U0FBQzs7SUFFL0U7OztnQkFLbUQ7Ozs7a0JBQVcsTUFBQTs7aUJBQVk7OztHQUVsRTtHQUVFLElBR1RDLHdDQUhTLFlBR1RBO1lBYUZDLHNDQVNTQyxTQUFBQyxNQUFBQyxTQVRzRUM7SUFDakYsS0FBTztLQUdMOztNQUFBO2lCQUFhdEQ7U0FBbUIsY0FKK0NzRCxLQUlsRXREO1NBQW1CO1U7UUFBWTs7S0FFNUMsdUJBQVUsc0NBQTZDOztJQUVqQjtPQUM3Qm1ELG1CQUFBQTtPQUFBQyxnQkFBQUE7T0FBQUMsbUJBQUFBOzhCQVRzRUM7SUFrQi9FLHVCQUFVLG9DQWxCcUVBLFdBa0JqQjtHQUFBO1lBRTlEQyxpQkFBa0J2RCxHQUFzQndELEtBQUlDLEdBQUVDO0lBQ2hELE9BckJFUiw0QkFvQmtCbEQsR0FBc0J3RCxTQUFNRSxhQUFGRDtHQUNHO1lBRS9DRSxvQkFBb0JDLElBQUssT0FBQSxXQUFMQSxPQUFVO1lBRTlCQztJQUNGLEdBQUc7O0lBRXlDOztHQUFhO1lBRXZEQyxrQkFBbUJDLFNBQVNDLFlBQVlDO0lBSy9CO09BTFVGLFNBTWdCLElBQXZCMUgsSUFOTzBILFlBTWdCLFVBQXZCMUg7T0FOZ0IySDtLQU9VLElBQTFCRSxNQVBnQkYsZUFPVSxVQUExQkU7OztPQVA0QkQ7S0FRTixJQUF0QnhHLE1BUjRCd0csV0FRTixNQUFBLDhCQUF0QnhHOzs7OztHQVFROzs7OztPQXZScEJ3RTtPQUhBRDtPQUZBRDtPQUZBRDtPQTVGQVY7T0E2TkFjO1dBV0VJLFNBRUFDLE1BS0FDO09BeUJGQztPQU1BQztPQWVBRTtPQWVBRTtPQUdBRTs7T0E2QkFFO09Bb0JBSztPQUdBSTtPQUVBRTtPQUtBQzs7O0U7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7SUN2V0FLOztJQTZEQUM7Ozs7SUFvQkFDOztJQVVBQzs7SUFVQUM7O0lBVUFDOztJQVVBQzs7SUFVQUM7WUFVQUMsSUFDQ0MsR0FBRWpFLEdBQUVrRSxHQUFLLE9BQUEsK0JBQVRELEdBQUVqRSxHQUFFa0UsR0FBb0M7O0lBRXpDdEg7SUFFQXVIOztJQThEQUM7WUFtQkVDO0lBQ0YsSUFBSUM7SUFDSixPQUFBLHFCQURJQTtHQUNlO1lBUWpCQztJQUNGLElBQUlEO0lBQ0osT0FBQSxvQkFESUE7R0FDZTs7OztPQS9PbkJkOzs7O09BNkRBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTs7Ozs7O09Bb0JBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUdBcEg7T0FFQXVIO09BOERBQztPQUFBQTs7Ozs7O1dBbUJFQzs7OztRQVVBRTs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ3RPRUMsV0FBV2xJOzs7bUJBQ1Q7S0FFRSxJQURIbUksZ0JBQUxQLGdCQUNRLFFBQUEsV0FITzVILEdBRWY0SDttQkFHU1EsZ0JBQU0sV0FBTkEsS0FMTEYsV0FBV2xJLEdBRVZtSTtlQUFBQTs7O1lBd0JMRSxTQUFVQyxhQUFhQyxTQUFRWjtJQWxCakM7T0FrQnlCWTs0QkFBQUE7OztJQWpCdkI7S0FERUM7T0FSRU47O1VBVUYsSUFBWU4sY0FBTmxGO1VBQ0osS0FEVWtGLEdBRUE7Y0FDSFEsTUFIR1I7VUFHRSxlQUhSbEYsTUFHa0Msd0JBQS9CMEY7U0FBMkM7MkJBYTVDRTtLQUpaO09BZElFO1VBZ0JHLHVCQUFXLDZCQWhCZEE7O0tBb0JlLEtBQUEsMkJBRmNiOztHQUVHO1lBRWxDYyxpQkFBa0JILGFBQWFDLFNBQVFwRjtJQUN6QyxPQUxFa0YsU0FJa0JDLGFBQWFDLGFBQ0Msd0JBRE9wRjtHQUNJO1lBRTNDdUYsY0FBZUosYUFBYUMsU0FBUUk7SUFFcEM7S0FERUM7T0FDRjs7O1VBQ0U7b0NBSWV6RixjQUFLLE9BQUxBOztxQ0FIRXdFLGNBQUssT0FBTEE7ZUFDSWtCO1dBQUssT0FBTEE7OztlQUNUakY7V0FBbUIsT0FBQSx3QkFBbkJBOztjQUVGa0Y7VUFBSyxPQUFMQTtTQUFxQjtTQVJHSDtJQVdQLE9BbEI3Qk4sU0FPZUMsYUFBYUMsU0FXQyw2QkFWM0JLO0dBVTRDO1lBaUI5Q0c7SUFFSSxZQUFBO2tCQUtDckcsaUJBQVEsT0FBUkE7SUFIRyxjQUFBOztLQUNJLE9BQUE7UUFDSHNHO0lBQVEsT0FBUkE7R0FDUTttQ0FJakJDO1lBS0VDLFNBQVVuRztJQUNaLE9BRFlBLGFBTFprRztjQU9LLDhCQUZPbEc7O0dBR0E7WUFFVm9HLEtBQU1wRztJQUNSLE9BRFFBO2NBQ3lCLDhCQUR6QkE7O0dBQ3lFO1lBRS9FcUcsT0FBUXJHO0lBQ1YsY0FEVUE7Y0FFTCw4QkFGS0E7O0dBR0U7WUFFVm1FLFlBQWFuRTtJQUNmLE9BRGVBO2NBRVYsOEJBRlVBOztHQUdIO0dBaUVFO0lBQVpzRyxZQUFZO0lBRVpDLFdBQVc7SUFFWEMsUUFBUTtJQUVSQyxRQUFRO0lBRVJDLE9BQU87SUFFUEMsVUFBVTtJQWJLLGtCQUdmTCxXQUVBQyxVQUVBQyxPQUVBQyxPQUVBQyxNQUVBQzs7SUFHRkM7SUFFQXJEOzs7T0EvSUFtQztPQUdBQztXQTRDRVEsVUFLQUMsb0IsY0FHQUMsUUFLQWxDOztPQTdCRjZCO09BOEdBWTtPQUVBckQ7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDM0xPOztJQXE1RWlCc0Q7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFuRTtJQUFBdEc7Ozs7Ozs7O0lBcjVFeEIwSyxPQUFrQjtJQWd1QmxCNUg7SUFFQUM7SUFFQUU7SUFFQUU7SUFLRXdILFNBQVM7SUFFVEMsUUFBUTtJQUVSQyxRQUFRO0lBRVJDLE9BQU87SUFFUEMsTUFBTTtJQUVOQyxRQUFRO0lBRVJDLFdBQVc7SUFFWEMsWUFBWTtJQUVaQyxVQUFVO0lBRVZDLFlBQVk7SUFFWkMsWUFBWTtJQUVaQyxXQUFXO0lBRVhDLFdBQVc7SUFFWEMsVUFBVTtJQUVWQyxRQUFRO0lBRVJDLGFBQWE7SUFFYkMsUUFBUTtJQUVSQyxpQkFBa0I7SUFFbEJDLGFBQWE7SUFFYkMsWUFBWTtJQUVaQyxXQUFXO0lBRVhDLGNBQWM7SUFFZEMsWUFBWTtJQUVaQyxVQUFVO0lBRVZDLFlBQVk7SUFFWkMsV0FBVztJQUVYQyxZQUFZO0lBRVpDLE9BQU87SUFFUEMsT0FBTztJQUVQQyxhQUFhO0lBRWJDLFNBQVM7SUFFVEMsUUFBUTtJQUVSQyxhQUFhO0lBRWJDLFNBQVM7SUFFVEMsU0FBUztJQUVUQyxRQUFRO0lBRVJDLE9BQU87SUFFUGhHLE9BQU87SUFFUGlHLFNBQVM7SUFFVEMsZUFBZTtJQUVmQyxTQUFTO0lBRVRDO01BQW9CO0lBRXBCQyxXQUFXO0lBRVh0RyxRQUFRO0lBRVJELFFBQVE7SUFFUndHLFNBQVM7SUFFVEMsU0FBUztJQUVUQyxVQUFVO0lBRVZDLFdBQVc7SUFFWEMsV0FBVztJQUVYQyxjQUFjO0lBRWQ5RyxXQUFXO0lBRVgrRyxjQUFjO0lBRWRDLFNBQVM7SUFFVEMsV0FBVztJQUVYQyxtQkFBbUI7SUFFbkJDLGlCQUFpQjtJQUVqQkMsZUFBZTtJQUVmQztNQUFxQjtJQUVyQkMsa0JBQWtCO0lBRWxCQyxnQkFBZ0I7SUFFaEJDLGtCQUFrQjtJQUVsQkMsZ0JBQWdCO0lBRWhCQyxtQkFBbUI7SUFFbkJDLFVBQVU7SUFFVkMsaUJBQWlCO0lBRWpCQyxpQkFBaUI7SUFFakJDLFVBQVU7SUFFVkMsUUFBUTtJQUVSQztNQUFvQjtJQUVwQkMsYUFBYTtJQUViQyxpQkFBaUI7SUFFakJuSSxZQUFZO0lBRVpvSTtNQUFxQjtJQUVyQjlPLFVBQVU7SUFFVitPLFFBQVE7SUFFUkMsT0FBTztJQUVQQyxVQUFVO0lBRVZDLGVBQWU7SUFFZkMsZ0JBQWdCO0lBRWhCQyxjQUFjO0lBRWRDLGVBQWU7SUFFZkMsY0FBYztJQUVkQyxhQUFhO0lBRWJDLGNBQWM7SUFFZEMsWUFBWTtJQUVaQyxhQUFhO0lBRWJDLFNBQVM7SUFFVEMsVUFBVTtJQUVWQyxVQUFVO0lBRVZDLFVBQVU7SUFFVkMsZUFBZTtJQUVmQyxVQUFVO0lBRVYzTTtJQUtGTTtJQUVBTDtJQUVBUztJQUVBRztJQW14QkErTDtZQStaQUM7SUFDRixPQVdFOzs7O2NBUkU7Ozs7Y0FHNEIsbURBQ3ZCOztjQUdBLHFCQUF3RTs7O2FBQU07c0JBQ2hGQyxHQUFLLE9BQUxBLEVBQU07R0FBQzs7SUF3TVpDO0lBNkp5QjdKLFdBN0p6QjZKOzs7OztZQU1BQyxlQUFlck07SUFDakIsSUFDNEIsTUFBQSx3QkFGWEEsV0F1SlV1QztJQW5KekIsT0FBQTs7OzZCQURXLE1BQUEsMENBQWU7c0JBQ3JCK0osT0FBUyxPQUFUQSxNQUFjO0dBQUM7WUFFcEJDLG1CQUFtQnZNO0lBQ3JCLElBQzRCLE1BQUEsd0JBRlBBLFdBaUpNdUM7SUE3SXpCLE9BQUE7Ozs7Y0FEb0IsVUFBQSxrQ0FIRHZDO2NBR0MsT0FBQTthQUFzRDtzQkFDckVzTSxPQUFTLE9BQVRBLE1BQWM7R0FBQztZQUVwQkUsbUJBQW1CeE07SUFBSyxJQUEyQyxNQUFBLHdCQUFoREEsV0EySU11QztJQTNJZ0IsT0FBQTtHQUF5QztZQUVsRmtLLHNCQUFzQnpNLElBQUd4RjtJQUMzQixJQUM0QixNQUFBLHdCQUZKd0YsV0F5SUd1QztJQXJJekIsT0FBQTs7OzZCQURXLFNBQUk7c0JBQ1ZuRztjQUFzQixVQUFBLFdBSkY1QixRQUlwQjRCO2NBQXNCLE9BQUE7YUFBVTtHQUFDO1lBcUV0Q3NRLG1CQUFpQzNRO0lBQTBCLFVBQUEsd0JBQTFCQTs7R0FBMEM7R0FJckQ7SUFBdEI0UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUVJQyxzQkFYS0MsTUFBQTlRLE1BVzhCK1EsS0FBSUM7SUFDN0M7Y0FaV0YsY0FBQTlRLE1BYU4sT0FSSDJRLGNBTXVDSSxLQUFJQztlQUYzQ0o7OztPQWNzQzs7O1FBQUEsTUFBQSx3QkFaS0k7O1VBWGxDRjtRQXlCd0MsSUFEekJwTCxNQXhCZm9MLFNBeUJ3QyxNQUFBLG9CQUR6QnBMOzs7VUF4QmYxRjtRQTJCd0MsSUFEMUJrRixJQTFCZGxGLFNBMkJ3QyxNQUFBLG9CQUQxQmtGOzs7OztjQWZnQjZMOztNQU1SLFVBWi9CSixjQU11Q0ksS0FBSUM7U0FYbENGLGdCQUFBQTtTQUFBOVEsZ0JBQUFBO01BbUJMOztLQVlBO01BTU87YUFnQ2N3Rzs7T0FoQ2Q7T0FBQTs7Ozs7S0E1QlhvSzs7R0FpQzhDO1lBRTlDSyxXQXJDb0JGLEtBcUNhLE9BdkNqQ0osY0FFb0JJLEtBQUkvUSxNQXFDdUM7WUFFL0RrUixXQXZDb0JILEtBdUNhLE9BekNqQ0osY0FFb0JJLEtBQUl6SyxRQXVDdUM7WUFFL0Q2SyxXQXpDb0JKLEtBeUNhLE9BM0NqQ0osY0FFb0JJLEtBQUl0RyxRQXlDdUM7WUFFL0QyRyxZQTNDb0JMLEtBMkNlLE9BN0NuQ0osY0FFb0JJLEtBQUl2RyxRQTJDMEM7WUFFbEU2RyxXQTdDb0JOLEtBNkNhLE9BL0NqQ0osY0FFb0JJLEtBQUl4RyxRQTZDdUM7WUFFL0QrRyxXQS9Db0JQLEtBK0NhLE9BakRqQ0osY0FFb0JJLEtBQUl6RyxRQStDdUM7WUFFL0RpSCxZQWpEb0JSLEtBaURlLE9BbkRuQ0osY0FFb0JJLEtBQUkxRyxRQWlEMEM7WUFFbEVtSCxXQW5Eb0JULEtBbURhLE9BckRqQ0osY0FFb0JJLEtBQUkzRyxRQW1EdUM7WUFFL0RxSCxXQXJEb0JWLEtBcURhLE9BdkRqQ0osY0FFb0JJLEtBQUk1RyxRQXFEdUM7WUFFL0R1SCxlQXZEb0JYLEtBdURxQixPQXpEekNKLGNBRW9CSSxLQUFJN0csUUF1RG1EO1lBRTNFeUgsYUF6RG9CWixLQXlEaUIsT0EzRHJDSixjQUVvQkksS0FBSTlHLFFBeUQ2QztZQUVyRTJILGFBQWNkLE1BQU85USxNQUFLK1E7SUFDNUIsT0F4RE1GLHNCQXVEVUMsTUFBTzlRLE1BQUsrUTtHQUNtQjtZQUU3Q2MsWUFBYWYsTUFBTzlRLE1BQUsrUTtJQUMzQixPQTNETUYsc0JBMERTQyxNQUFPOVEsTUFBSytRO0dBQ21CO1lBRTVDZSxlQUFnQmhCLE1BQU85USxNQUFLK1E7SUFDOUIsT0E5RE1GLHNCQTZEWUMsTUFBTzlRLE1BQUsrUTtHQUNtQjtZQUUvQ2dCLGFBQWNqQixNQUFPOVEsTUFBSytRO0lBQzVCLE9BakVNRixzQkFnRVVDLE1BQU85USxNQUFLK1E7R0FDbUI7WUFFN0NpQixZQXZFb0JqQixLQXVFZSxPQXpFbkNKLGNBRW9CSSxLQUFJL0csU0F1RTBDO1lBRWxFaUksZUF6RW9CbEIsS0F5RXFCLE9BM0V6Q0osY0FFb0JJLEtBQUloSCxTQXlFbUQ7WUFFM0VtSSxhQTNFb0JuQixLQTJFaUIsT0E3RXJDSixjQUVvQkksS0FBSWpILFNBMkU2QztZQUVyRXFJLFNBN0VvQnBCLEtBNkVZLE9BL0VoQ0osY0FFb0JJLEtBQUlsSCxTQTZFb0M7WUFFNUR1SSxTQS9Fb0JyQixLQStFWSxPQWpGaENKLGNBRW9CSSxLQUFJbkgsU0ErRW9DO1lBRTVEeUksU0FqRm9CdEIsS0FpRlksT0FuRmhDSixjQUVvQkksS0FBSXBILFNBaUZvQztZQUU1RDJJLFNBbkZvQnZCLEtBbUZTLE9BckY3QkosY0FFb0JJLEtBQUlySCxTQW1GaUM7WUFFekQ2SSxhQXJGb0J4QixLQXFGaUIsT0F2RnJDSixjQUVvQkksS0FBSXRILFNBcUY2QztZQUVyRStJLFVBdkZvQnpCLEtBdUZXLE9BekYvQkosY0FFb0JJLEtBQUl2SCxTQXVGb0M7WUFFNURpSixZQXpGb0IxQixLQXlGZSxPQTNGbkNKLGNBRW9CSSxLQUFJeEgsU0F5RjBDO1lBRWxFbUosUUEzRm9CM0IsS0EyRmUsT0E3Rm5DSixjQUVvQkksS0FBSXpILFNBMkZzQztZQUU5RHFKLFNBN0ZvQjVCLEtBNkZjLE9BL0ZsQ0osY0FFb0JJLEtBQUkxSCxTQTZGc0M7WUFFOUR1SixTQS9Gb0I3QixLQStGYyxPQWpHbENKLGNBRW9CSSxLQUFJM0gsU0ErRnNDO1lBRTlEeUosU0FqR29COUIsS0FpR2MsT0FuR2xDSixjQUVvQkksS0FBSTVILFNBaUdzQztZQUU5RDJKLFNBbkdvQi9CLEtBbUdjLE9BckdsQ0osY0FFb0JJLEtBQUk3SCxTQW1Hc0M7WUFFOUQ2SixTQXJHb0JoQyxLQXFHYyxPQXZHbENKLGNBRW9CSSxLQUFJOUgsU0FxR3NDO1lBRTlEK0osU0F2R29CakMsS0F1R2MsT0F6R2xDSixjQUVvQkksS0FBSS9ILFNBdUdzQztZQUU5RGlLLFFBekdvQmxDLEtBeUdXLE9BM0cvQkosY0FFb0JJLEtBQUloSSxTQXlHa0M7WUFFMURtSyxpQkEzR29CbkMsS0EyR29CLE9BN0d4Q0osY0FFb0JJLEtBQUlqSSxTQTJHb0Q7WUFFNUVxSyxVQTdHb0JwQyxLQTZHVyxPQS9HL0JKLGNBRW9CSSxLQUFJbEksU0E2R29DO1lBRTVEdUssU0EvR29CckMsS0ErR1MsT0FqSDdCSixjQUVvQkksS0FBSW5JLFNBK0dpQztZQUV6RHlLLFNBakhvQnRDLEtBaUhTLE9Bbkg3QkosY0FFb0JJLEtBQUlwSSxTQWlIaUM7WUFFekQySyxVQW5Ib0J2QyxLQW1IVyxPQXJIL0JKLGNBRW9CSSxLQUFJckksU0FtSG9DO1lBRTVENkssVUFySG9CeEMsS0FxSFcsT0F2SC9CSixjQUVvQkksS0FBSXRJLFNBcUhvQztZQUU1RCtLLFFBdkhvQnpDLEtBdUhZLE9BekhoQ0osY0FFb0JJLEtBQUl2SSxTQXVIbUM7WUFFM0RpTCxVQXpIb0IxQyxLQXlIYSxPQTNIakNKLGNBRW9CSSxLQUFJeEksU0F5SHNDO1lBRTlEbUwsYUEzSG9CM0MsS0EySGlCLE9BN0hyQ0osY0FFb0JJLEtBQUl6SSxTQTJINkM7WUFFckVxTCxZQTdIb0I1QyxLQTZIZSxPQS9IbkNKLGNBRW9CSSxLQUFJMUksU0E2SDBDO1lBRWxFdUwsVUEvSG9CN0MsS0ErSFcsT0FqSS9CSixjQUVvQkksS0FBSTNJLFNBK0hvQztZQUU1RHlMLFdBaklvQjlDLEtBaUlhLE9BbklqQ0osY0FFb0JJLEtBQUk1SSxTQWlJdUM7WUFFL0QyTCxhQW5Jb0IvQyxLQW1JaUIsT0FySXJDSixjQUVvQkksS0FBSTdJLFNBbUk2QztZQUVyRTZMLFlBcklvQmhELEtBcUllLE9BdkluQ0osY0FFb0JJLEtBQUk5SSxTQXFJMEM7WUFFbEUrTCxjQXZJb0JqRCxLQXVJd0IsT0F6STVDSixjQUVvQkksS0FBSS9JLFNBdUlxRDtZQUU3RWlNLFVBeklvQmxELEtBeUlnQixPQTNJcENKLGNBRW9CSSxLQUFJaEosU0F5SXlDO1lBRWpFbU0sZUEzSW9CbkQsS0EySXFCLE9BN0l6Q0osY0FFb0JJLEtBQUlqSixTQTJJbUQ7WUFFM0VxTSxZQTdJb0JwRCxLQTZJc0IsT0EvSTFDSixjQUVvQkksS0FBSWxKLFNBNklpRDtZQUV6RXVNLFlBL0lvQnJELEtBK0lzQixPQWpKMUNKLGNBRW9CSSxLQUFJbkosU0ErSWlEO1lBRXpFeU0sWUFqSm9CdEQsS0FpSnNCLE9BbkoxQ0osY0FFb0JJLEtBQUlwSixTQWlKaUQ7WUFFekUyTSxTQW5Kb0J2RCxLQW1KZSxPQXJKbkNKLGNBRW9CSSxLQUFJckosU0FtSnVDO1lBRS9ENk0sU0FySm9CeEQsS0FxSmdCLE9BdkpwQ0osY0FFb0JJLEtBQUl0SixTQXFKd0M7WUFFaEUrTSxTQXZKb0J6RCxLQXVKZ0IsT0F6SnBDSixjQUVvQkksS0FBSXZKLFNBdUp3QztZQUVoRWlOLFVBQVUxRCxLQUFNLE9BM0poQkosY0EySlVJLGNBQTZCO1lBRXZDMkQsVUFBVTNELEtBQU0sT0E3SmhCSixjQTZKVUksY0FBNkI7WUFFdkM0RCxXQUFXNUQsS0FBTSxPQS9KakJKLGNBK0pXSSxlQUE4QjtZQUV6QzZELFNBQVM3RCxLQUFNLE9BaktmSixjQWlLU0ksYUFBNEI7WUFFckM4RCxRQUFROUQsS0FBTSxPQW5LZEosY0FtS1FJLFlBQTJCO1lBRW5DK0QsUUFBUS9ELEtBQU0sT0FyS2RKLGNBcUtRSSxZQUEyQjtZQUVuQ2dFLFVBQVVoRSxLQUFNLE9BdktoQkosY0F1S1VJLGNBQTZCO1lBRXZDaUUsWUFBWWpFLEtBQU0sT0F6S2xCSixjQXlLWUksZ0JBQStCO1lBRTNDa0UsU0FBU2xFLEtBQU0sT0EzS2ZKLGNBMktTSSxhQUE0QjtZQUVyQ21FLGFBQWFuRSxLQUFNLE9BN0tuQkosY0E2S2FJLGlCQUFnQztZQUU3Q29FLFdBQVdwRSxLQUFNLE9BL0tqQkosY0ErS1dJLGVBQThCO1lBRXpDcUUsVUFBVXJFLEtBQU0sT0FqTGhCSixjQWlMVUksY0FBNkI7WUFFdkNzRSxXQUFXdEUsS0FBTSxPQW5MakJKLGNBbUxXSSxlQUE4QjtZQUV6Q3VFLFdBQVd2RSxLQUFNLE9BckxqQkosY0FxTFdJLGVBQThCO1lBRXpDd0UsVUFBVXhFLEtBQU0sT0F2TGhCSixjQXVMVUksY0FBNkI7WUFFdkN5RSxVQUFVekUsS0FBTSxPQXpMaEJKLGNBeUxVSSxjQUE2QjtZQUV2QzBFLFdBQVcxRSxLQUFNLE9BM0xqQkosY0EyTFdJLGVBQThCO1lBRXpDMkUsU0FBUzNFLEtBQU0sT0E3TGZKLGNBNkxTSSxhQUE0QjtZQUVyQzRFLFNBQVM1RSxLQUFNLE9BL0xmSixjQStMU0ksYUFBNEI7WUFFckM2RSxlQUFlN0UsS0FBTSxPQWpNckJKLGNBaU1lSSxtQkFBa0M7WUFFakQ4RSxjQUFjOUUsS0FBTSxPQW5NcEJKLGNBbU1jSSxrQkFBaUM7WUFFL0MrRSxlQW5Nb0IvRSxLQW1NcUIsT0FyTXpDSixjQUVvQkksS0FBSXhKLFNBbU1tRDtZQUUzRXdPLFlBck1vQmhGLEtBcU1lLE9Bdk1uQ0osY0FFb0JJLEtBQUl6SixTQXFNMEM7WUFFbEUwTyxhQXZNb0JqRixLQXVNaUIsT0F6TXJDSixjQUVvQkksS0FBSTFKLFNBdU02QztZQUVyRTRPLFlBek1vQmxGLEtBeU1lLE9BM01uQ0osY0FFb0JJLEtBQUkzSixTQXlNMEM7WUFFbEU4TyxZQTNNb0JuRixLQTJNZSxPQTdNbkNKLGNBRW9CSSxLQUFJNUosU0EyTTBDO0dBRXRFOzs7OztZQUVJZ1AsYUFBYXBGO0lBL01rQixVQUYvQkosY0FpTmFJLEtBL01XN0o7V0FpTm5CO0tBQStCLE1BQUE7SUFDdEM7R0FBQztHQU13Qjs7SUFKdkJrUDtJQUl1QixNQUFBLDhCQUp2QkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFHRXpUO01BQ0s7O1NBU0R0QztTQUNKLE9BRElBLGFBYk4rVjttQkFjdUMsOEJBRGpDL1Y7O1FBQzBFOztTQU4xRWdXO1NBQ21CLFVBQUEsOEJBRG5CQTtTQUNHLE9BQUE7bUJBRUYsOEJBSERBOztRQUc2QjtZQUtqQ0MsYUFBYUMsS0FBS0M7SUFDcEIsVUFEb0JBO0lBQ2pCLDRCQUFtQyx3QkFEdkJEO2NBRVYsOEJBRmVDOztHQUdSO1lBRVZ2UixFQUFFNUUsR0FBSSxPQUxOaVcsb0JBS0VqVyxHQUFzQjtZQUV4Qm9XLEtBQUtwVyxHQUFJLE9BUFRpVyx1QkFPS2pXLEdBQXlCO1lBRTlCcVcsS0FBS3JXLEdBQUksT0FUVGlXLHVCQVNLalcsR0FBeUI7WUFFOUJzVyxXQUFXdFcsR0FBSSxPQVhmaVcsNkJBV1dqVyxHQUErQjtZQUUxQ3VXLEtBQUt2VyxHQUFJLE9BYlRpVyx1QkFhS2pXLEdBQXlCO1lBRTlCd1csR0FBR3hXLEdBQUksT0FmUGlXLHFCQWVHalcsR0FBdUI7WUFFMUJ5VyxPQUFPelcsR0FBSSxPQWpCWGlXLDJCQWlCT2pXLEdBQTJCO1lBRWxDMFcsT0FBTzFXLEdBQUksT0FuQlhpVyx5QkFtQk9qVyxHQUEyQjtZQUVsQzJXLFFBQVEzVyxHQUFJLE9BckJaaVcsMEJBcUJRalcsR0FBNEI7WUFFcEM0VyxJQUFJNVcsR0FBSSxPQXZCUmlXLHNCQXVCSWpXLEdBQXdCO1lBRTVCNlcsU0FBUzdXLEdBQUksT0F6QmJpVywyQkF5QlNqVyxHQUE2QjtZQUV0QzhXLElBQUk5VyxHQUFJLE9BM0JSaVcsc0JBMkJJalcsR0FBd0I7WUFFNUIrVyxJQUFJL1csR0FBSSxPQTdCUmlXLHNCQTZCSWpXLEdBQXdCO1lBRTVCZ1gsR0FBR2hYLEdBQUksT0EvQlBpVyxxQkErQkdqVyxHQUF1QjtZQUUxQmlYLFNBQVNqWCxHQUFJLE9BakNiaVcsMkJBaUNTalcsR0FBNkI7WUFFdENrWCxNQUFNbFgsR0FBSSxPQW5DVmlXLHdCQW1DTWpXLEdBQTBCO1lBRWhDbVgsS0FBS25YLEdBQUksT0FyQ1RpVyx1QkFxQ0tqVyxHQUF5QjtZQUU5Qm9YLFNBQVNwWCxHQUFJLE9BdkNiaVcsMkJBdUNTalcsR0FBNkI7WUFFdENxWCxNQUFNclgsR0FBSSxPQXpDVmlXLHdCQXlDTWpXLEdBQTBCO1lBRWhDc1gsR0FBR3RYLEdBQUksT0EzQ1BpVyxxQkEyQ0dqVyxHQUF1QjtZQUUxQnVYLEdBQUd2WCxHQUFJLE9BN0NQaVcscUJBNkNHalcsR0FBdUI7WUFFMUJ3WCxHQUFHeFgsR0FBSSxPQS9DUGlXLHFCQStDR2pXLEdBQXVCO1lBRTFCeVgsR0FBR3pYLEdBQUksT0FqRFBpVyxxQkFpREdqVyxHQUF1QjtZQUUxQjBYLEdBQUcxWCxHQUFJLE9BbkRQaVcscUJBbURHalcsR0FBdUI7WUFFMUIyWCxHQUFHM1gsR0FBSSxPQXJEUGlXLHFCQXFER2pXLEdBQXVCO1lBRTFCNFgsS0FBSzVYLEdBQUksT0F2RFRpVyx1QkF1REtqVyxHQUF5QjtZQUU5QjZYLEdBQUc3WCxHQUFJLE9BekRQaVcscUJBeURHalcsR0FBdUI7WUFFMUI4WCxLQUFLOVgsR0FBSSxPQTNEVGlXLHVCQTJES2pXLEdBQXlCO1lBRTlCK1gsT0FBTy9YLEdBQUksT0E3RFhpVyx5QkE2RE9qVyxHQUEyQjtZQUVsQ2dZLElBQUloWSxHQUFJLE9BL0RSaVcsc0JBK0RJalcsR0FBd0I7WUFFNUJpWSxRQUFNalksR0FBSSxPQWpFVmlXLDBCQWlFTWpXLEdBQTBCO1lBRWhDa1ksSUFBSWxZLEdBQUksT0FuRVJpVyxzQkFtRUlqVyxHQUF3QjtZQUU1Qm1ZLE1BQU1uWSxHQUFJLE9BckVWaVcsd0JBcUVNalcsR0FBMEI7WUFFaENvWSxPQUFPcFksR0FBSSxPQXZFWGlXLHlCQXVFT2pXLEdBQTJCO1lBRWxDcVksR0FBR3JZLEdBQUksT0F6RVBpVyxxQkF5RUdqVyxHQUF1QjtZQUUxQnNZLEtBQUt0WSxHQUFJLE9BM0VUaVcsdUJBMkVLalcsR0FBeUI7WUFFOUJoRCxJQUFJZ0QsR0FBSSxPQTdFUmlXLHNCQTZFSWpXLEdBQXdCO1lBRTVCdVksS0FBS3ZZLEdBQUksT0EvRVRpVyx1QkErRUtqVyxHQUF5QjtZQUU5QndZLE9BQVF4WSxHQUFJLE9BakZaaVcseUJBaUZRalcsR0FBMkI7WUFFbkN5WSxHQUFHelksR0FBSSxPQW5GUGlXLHFCQW1GR2pXLEdBQXVCO1lBRTFCMFksU0FBUzFZLEdBQUksT0FyRmJpVywyQkFxRlNqVyxHQUE2QjtZQUV0Q3hDLE9BQU93QyxHQUFJLE9BdkZYaVcseUJBdUZPalcsR0FBMkI7WUFFbEMyWSxFQUFFM1ksR0FBSSxPQXpGTmlXLG9CQXlGRWpXLEdBQXNCO1lBSXhCNFksSUFBSTVZLEdBQUksT0E3RlJpVyxzQkE2RklqVyxHQUF3QjtZQUU1Qm9GLEVBQUVwRixHQUFJLE9BL0ZOaVcsb0JBK0ZFalcsR0FBc0I7WUFFeEI2WSxPQUFPN1ksR0FBSSxPQWpHWGlXLHlCQWlHT2pXLEdBQTJCO1lBRWxDOFksU0FBTzlZLEdBQUksT0FuR1hpVywyQkFtR09qVyxHQUEyQjtZQUVsQytZLE1BQU0vWSxHQUFJLE9BckdWaVcsd0JBcUdNalcsR0FBMEI7WUFFaENnWixNQUFNaFosR0FBSSxPQXZHVmlXLHdCQXVHTWpXLEdBQTBCO1lBRWhDaVosTUFBTWpaLEdBQUksT0F6R1ZpVyx3QkF5R01qVyxHQUEwQjtZQUVoQ2taLEdBQUdsWixHQUFJLE9BM0dQaVcscUJBMkdHalcsR0FBdUI7WUFFMUJtWixTQUFTblosR0FBSSxPQTdHYmlXLDZCQTZHU2pXLEdBQTZCO1lBRXRDb1osTUFBTXBaLEdBQUksT0EvR1ZpVyx3QkErR01qVyxHQUEwQjtZQUVoQ3FaLEdBQUdyWixHQUFJLE9BakhQaVcscUJBaUhHalcsR0FBdUI7WUFFMUJzWixNQUFNdFosR0FBSSxPQW5IVmlXLHdCQW1ITWpXLEdBQTBCO1lBRWhDdVosTUFBTXZaLEdBQUksT0FySFZpVyx3QkFxSE1qVyxHQUEwQjtZQUVoQ3daLEdBQUd4WixHQUFJLE9BdkhQaVcscUJBdUhHalcsR0FBdUI7WUFFMUJ5WixHQUFHelosR0FBSSxPQXpIUGlXLHFCQXlIR2pXLEdBQXVCO1lBRTFCMFosTUFBTTFaLEdBQUksT0EzSFZpVyx3QkEySE1qVyxHQUEwQjtZQUVoQzJaLE1BQU0zWixHQUFJLE9BN0hWaVcsd0JBNkhNalcsR0FBMEI7WUFFaEM0WixrQkFBa0JDLFFBQVFDO0lBQ1YsVUFBQSw4QkFERUQ7SUFDYyxHQUEvQix5Q0FEeUJDLGNBQVJEO0tBRWYsT0FBQSw4QkFGdUJDO0lBR3ZCO0dBQU87WUFFVkMsV0FBV0Q7SUFBSztJQUFBLE9BTGhCRixrQ0FLV0U7R0FBd0Q7WUFFbkVFLGNBQWNGO0lBQUs7SUFBQSxPQVBuQkYscUNBT2NFO0dBQTJEO1lBRXpFRyxXQUFXSDtJQUFLO0lBQUEsT0FUaEJGLGtDQVNXRTtHQUF3RDtZQUVuRUksaUJBQWlCSjtJQUFLO0lBQUEsT0FYdEJGLHdDQVdpQkU7R0FBOEQ7WUFFL0VLLGNBQWNMO0lBQUs7SUFBQSxPQWJuQkYscUNBYWNFO0dBQTJEO1lBRXpFTSxhQUFhTjtJQUFLO0lBQUEsT0FmbEJGLG9DQWVhRTtHQUEwRDtPQUt6RTlXO1lBRUFxWDtJQUNGLE9BQTZCOzs7O2NBQ25CLFlBQUE7Ozs7OzBCQUNzQzs7Ozs0QkFBVyxNQUFBOzsyQkFBWTt3QkFDMUI7Ozs7MEJBQVcsTUFBQTs7eUJBQVk7YUFDbEQ7R0FBQztZQUVqQkM7SUFDRixXQW5VMkJuVSxzQkFBQUE7SUFxVTNCOzs7R0FDcUQ7WUFFbkRvVTtJQUNGLE9BR0U7Ozs2QkFEVyxPQVRYRCwyQkFTbUM7c0JBQzlCamU7Y0FBSyxPQUEyRDs7O3VDQUExQixPQVYzQ2llLDJCQVVtRTtnQ0FBT2hlLEdBQUssV0FBMUVELEdBQXFFQyxHQUFTO2FBQUM7R0FBQztZQUVyRmtlO0lBQ0Y7O1lBL1UyQnJVO1lBQUFBO0lBa1YzQjs7O0dBQ3dFO1lBRXRFc1U7SUFDRixXQXRWMkJ0VSxzQkFBQUE7SUF3VjNCOzs7R0FBMEU7WUFFeEV1VTtJQUNGLE9BUUU7Ozs7Y0FMUTs7OztrQkFDQzs7a0JBQ0E7OzBCQUNBOztjQUNBO2FBQVM7c0JBQ2JyZSxHQUFLLE9BQUxBLEVBQU07R0FBQztZQUVac2UsK0JBQXNDM2EsR0FBR21ELFNBQVNDLE1BQU1DLFNBQVFJO0lBQ2xFLE9BTUU7YUFuNURBUDthQTQ0RHNDbEQ7YUE3aUVwQ3NMO2FBNmlFdUNuSTthQUFTQzthQUFNQzthQU94RDtlQTdsRUFYOztnQkE4bEVLO2lCQUFJa1k7O21CQUFNOzs7cUNBQXNDLFNBQUM7Ozs7aUJBQzdDQzs7bUJBQU07OztxQ0FBc0Msc0JBQWM7Ozs7Z0JBQzlELE9BQUEsV0FWMkRwWCxRQVF2RG1YLElBQ0FDO2VBQ3lCO0dBQUU7WUFFcENDLDJCQUEyQjlhLEdBQUV5RCxHQUFFQztJQUNqQyxPQWJFaVgsK0JBWTJCM2EsT0FBSTBELGFBQUZEO0dBQ3dCO1lBOFpwQ3NYLFNBN1FObFc7SUFDWDtLQUFNLFFBQUEsd0JBREtBOzs7dUJBVUM7Ozt3QkFzRUc7Ozt5QkE2QkQ7OzswQkFUSTs4QkF2Q0w7OEJBaEJBOzRCQUZGO21DQXdFTzttQ0FEQTtpQ0FFRjs7OzhCQXNCSDsrQkE5RUM7b0NBMkVLOzhCQS9FTjttQ0E4RUs7a0NBL0VEO2tDQTRDQTs7Ozs7OzBCQVBHO29DQUREO29DQURBO3VDQUpHO3VDQUNBOytCQTZDUjtnQ0FDQztpQ0F2QkM7OztnQ0E3QkQ7Z0NBQ0E7Z0NBQ0E7Z0NBQ0E7Z0NBQ0E7a0NBR0U7c0NBQ0k7Ozs7Ozs7eUJBL0RUOzs7MEJBd0VLOzhCQTFESjtnQ0FxREU7Z0NBakJBO2dDQUNBO2dDQUNBO2dDQUNBOzs7NkJBcERIOzZCQUNBO3VDQTRGVTtrQ0FDTDt1Q0FGSzsyQ0FESTtpQ0FyQlY7Ozs7OzswQkEvRUo7NkJBQ0E7NkJBQ0E7NkJBQ0E7NkJBQ0E7NkJBQ0E7NkJBQ0E7NkJBQ0E7Ozs2QkFkQTs2QkFDQTs2QkFDQTs2QkFDQTs2QkFDQTs2QkFDQTs2QkFDQTs7Ozs7Ozs7d0JBbUJFOzs7eUJBZ0NKOzs7MkJBakVFOzZCQUNBOzZCQUNBOzZCQUNBOzZCQUNBOzZCQUNBOzZCQUNBOzs7MkJBNERGOzJCQUNBOzJCQUNBOzZCQXdDRTsrQkE5REU7c0NBdUZPO2dDQUNOOzs7Ozs7MkJBMUVMOzRCQVNDOzRCQUNBOzRCQUNBOzJCQVZEOzJCQUNBOzJCQUNBOzJCQUNBOzs7K0JBOUJJOytCQUNBOytCQUNBOzRCQXlFSDs4QkFwRUU7OEJBSEE7K0JBTUM7Ozs7Ozs7MEJBZ0ZROzs7MkJBN0VSOytCQXBCQTsrQkFDQTsrQkFDQTsrQkFDQTsrQkFDQTsrQkFDQTs7O3NDQXlGTztvQ0FJRjtpQ0E3RUg7OEJBUUg7b0NBZ0VNO29DQTVCQTtxQ0FDQzs7Ozs7OzJCQXRDSDtrQ0FWQTtvQ0FLRTtxQ0FDQztvQ0E0RUQ7eUNBSks7dUNBR0Y7b0NBSkg7OztnQ0F4Qko7aUNBQ0M7a0NBS0M7a0NBSEE7bUNBQ0M7Z0NBQ0g7a0NBakRFOzs7OztJQWtGVjtHQUFZO1lBc0lGbVc7SUF4Rk87Ozs7OztTQXFEaEI7O1NBQ0E7O1NBVUE7O1NBREE7O1NBdkJBOztTQUNBOztTQVRBOztTQUdBOztTQVlBOztTQVhBOztTQUVBOztTQXVCQTs7U0E1QkE7O1NBMEJBOztTQXRCQTs7U0FxQkE7O1NBV0E7O1NBbkVDOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUVBOztTQXdDQTs7U0ExQkE7O1NBb0NBOztTQXJDQTs7U0FzQ0E7O1NBQ0E7O1NBbERBOztTQXlCQTs7U0FFQTs7U0FEQTs7U0FhQTs7Ozs7U0ExQkY7O1NBQ0E7O1NBMEJDOztTQXpDQTs7U0E2QkE7O1NBNUNBOztTQW1FQTs7U0FJQTs7U0FHQTs7U0FEQTs7U0FIQTs7U0FLQTs7U0FHQTs7U0FEQTs7U0FEQTs7U0EvREE7O1NBd0RBOztTQUdBOztTQTlDQTs7U0FUQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FvQkE7O1NBZ0JBOztTQUZBOztTQVpBOztTQWRBOztTQWVBOztTQUNBOztTQUNBOztTQVpBOztTQWFBOzs7SUE0QkQ7R0FBWTtZQUVqQkMseUJBQXNCLFNBQVk7WUFxQmxDQztJQUNGLElBaEJXQyxxQkFPTDs7U0FNS2xlLElBbkJUZ2U7Ozs7O1NBTVNHO1NBYUFuZTtvQkFYVDRIO1ksR0FBQUEsR0FBSyxPQUFMQTtxQkFGU3VXO3VCQUFBQSxTQWhJSDs7MEJBZ0lHQTtvQkFBQUE7O2dCQW5JSDs7Z0JBQ0E7d0JBQ0E7O1lBRUQ7Ozs7O1NBK0hJQztTQWFBcGU7b0JBWFQ0SDtZLEdBQUFBLEdBQUssT0FBTEE7cUJBRlN3Vzt1QkFBQUEsU0F6SEg7OzBCQXlIR0E7b0JBQUFBOztnQkE1SEg7O2dCQUNBO3dCQUNBOztZQUVEOzs7OztTQXdISUM7U0FhQXJlO29CQVhUNEg7WSxHQUFBQSxHQUFLLE9BQUxBO3FCQUZTeVc7NEJBQUFBOzs7O2lCQXBHSDs7aUJBQ0E7O2lCQUNBOztpQkFDQTs7aUJBQ0M7O2lCQUNBOztpQkFDQTs7aUJBQ0E7O2lCQUNBOztpQkFDQTs7aUJBWEE7O2lCQUZBOzs7aUJBQ0E7O2lCQUVBO3lCQUpBOzs7MEJBeUdFQTtvQkFBQUE7O2dCQS9HSDs7Z0JBS0E7O2dCQURBOztnQkFOQTs7Z0JBRkE7O2dCQU1BOztnQkFIQTs7Z0JBSUE7O2dCQUZBOztnQkFKQTs7Z0JBRkE7O2dCQURBOztZQTJCRDs7O0lBdUZXO0tBRFBDO0tBaUJGbGY7T0FoQlMsaUNBRFBrZixTQUZUTixtQkFFZUY7S0FNZnRkLE1BV1NSLEVBQUZaO1dBWFBvQixNQUFBQSxNQUZldWQsb0JBQU5HO0dBbUJ1QztZQVFoREssWUFBWUw7SUFDZCxRQURjQSxPQUNzRDtJQUFsRCxJQUFJLGNBQUssNEJBRGJBLFNBQ1E7ZUFBb0M7R0FBYztZQUV0RU0sb0JBQWlCLFdBQVk7WUFFN0JDLFlBQVMsU0FBSTtZQUViQztJQUNGO0tBQVUsT0FBQSwyQ0FMUkY7Ozs7b0RBRUFDLE1BTEFGOzRCQUFBQTtHQVlTO1lBS1hJLGU7WUFxRUFDLE9BRk1DO0lBR1I7WUFIUUE7S0FHSjVGLE1BQU07YUFDViw4QkFESUEsTUFIUSxZQUFKNEY7a0RBR0o1Rjs7OztlQUFBQTtrQkFBQUE7O29CQUFBQSwyQkFISTRGLFlBQUFBO3dCQUFBQTtzQkFBQUE7O2VBR0o1RjtrQkFBQUE7O29CQUFBQTs7c0JBQUFBOzt3QkFBQUEsNEJBSEk0RixZQUFBQTs0QkFBQUE7MEJBQUFBO3dCQUFBQTtzQkFBQUE7O2VBR0o1RjtrQkFBQUE7O29CQUFBQTs7c0JBQUFBLDhCQUhJNEYsYUFBQUE7MkJBQUFBO3dCQUFBQTtzQkFBQUE7O2VBR0o1RjtrQkFBQUE7O29CQUFBQSx3QkFISTRGLGFBQUFBO3lCQUFBQTt1QkFBQUE7O2VBR0o1RiwyQkFISTRGLGFBQUFBOztlQUdKNUY7a0JBQUFBOztvQkFBQUE7O3NCQUFBQSw4QkFISTRGLGFBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztlQUdKNUY7a0JBQUFBOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzswQkFBQUE7OzRCQUFBQTs7OEJBQUFBOztnQ0FBQUEsMEJBSEk0RixhQUFBQTtxQ0FBQUE7bUNBQUFBO2lDQUFBQTsrQkFBQUE7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztlQUdKNUY7a0JBQUFBOztvQkFBQUE7O3NCQUFBQSx5QkFISTRGLGFBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztlQUdKNUY7a0JBQUFBOztvQkFBQUE7O3NCQUFBQSwwQkFISTRGLGFBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztlQUdKNUY7a0JBQUFBLDBCQUhJNEYsYUFBQUE7dUJBQUFBOztlQUdKNUY7a0JBQUFBOztvQkFBQUE7O3NCQUFBQSw0QkFISTRGLGFBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztlQUdKNUY7a0JBQUFBOztvQkFBQUEseUJBSEk0RixhQUFBQTt5QkFBQUE7dUJBQUFBOztlQUdKNUYsdUJBSEk0RixhQUFBQTs7ZUFHSjVGO2tCQUFBQTs7b0JBQUFBLDJCQUhJNEYsYUFBQUE7eUJBQUFBO3VCQUFBQTs7ZUFHSjVGO2tCQUFBQTs7b0JBQUFBOztzQkFBQUE7O3dCQUFBQTs7MEJBQUFBOzs0QkFBQUE7OzhCQUFBQTs7Z0NBQUFBLHdCQUhJNEYsYUFBQUE7cUNBQUFBO21DQUFBQTtpQ0FBQUE7K0JBQUFBOzZCQUFBQTsyQkFBQUE7eUJBQUFBO3VCQUFBQTs7ZUFHSjVGLHdCQUhJNEYsYUFBQUE7O2VBR0o1RiwyQkFISTRGLGFBQUFBOztJQUFJLFlBQUpBO0dBd0hRO1lBRWRDLFdBQVcvYjtJQUFJLE9BQTRCOzthQUFoQ0E7NkJBQTBCLFNBQUk7c0JBQU9BLEdBQUssV0F4SHJENmIsT0F3SGdEN2IsSUFBb0I7R0FBQztZQVdyRWdjLFlBQWFsQztJQUViLFVBaHVCRUMsV0E4dEJXRDtJQXdCYixPQUFBOzs7O2NBbkJJLFVBanVCRkUsY0E0dEJXRjtjQXVCVCxPQUFBOzs7O3dCQWZJLFVBbHVCTkcsV0EwdEJXSDt3QkFzQkwsT0FBQTs7OztrQ0FYSSxVQW51QlZJLGlCQXd0QldKO2tDQXFCRCxPQUFBOzs7OzRDQVBJLFVBcHVCZEssY0FzdEJXTDs0Q0FvQkcsT0FBQTs7OztzREFISSxVQXJ1QmxCTSxhQW90QldOO3NEQW1CTyxPQUFBOzs7K0VBRFcsV0FsQmxCQSxJQWtCNEM7d0VBQ2hDQSxJQUFNLFdBQU5BLElBQXFCO3FEQUFDOzhEQUMxQkEsSUFBTSxXQUFOQSxJQUFzQjsyQ0FBQztvREFDM0JBLElBQU0sV0FBTkEsSUFBeUI7aUNBQUM7MENBQzlCQSxJQUFNLFdBQU5BLElBQXdCO3VCQUFDO2dDQUM3QkEsSUFBTSxXQUFOQSxJQUFzQjthQUFDO3NCQUMzQkEsSUFBTSxXQUFOQSxJQUFtQjtHQUFDO1lBRXpCbUMsZ0JBQWdCbkM7SUFBSyxPQUE2Qjs7YUFBbENBOzZCQUE0QixTQUFJO3NCQUFPQSxJQUFNLFdBMUI3RGtDLFlBMEJ1RGxDLEtBQTJCO0dBQUM7WUFFbkZvQztJQUNGLE9BSUU7Ozs7Y0FEVzs7YUFBNEI7NkJBQzdCLDhCQUFtQjtHQUFDO0dBR2hDO0lBREVDO01BQ0Y7O1NBR007VUFERXZXOzthQTNzQ05vSzs7Y0FBQUE7O2VBQUFBOztnQkFBQUE7b0JBQUFBO1NBbXRDRTtVQUNZO1dBQU5vTTthQUFNOzt3QkFBZUMsR0FBSyxPQUFBLGlDQUFMQSxHQUFxQjtlQVQ1Q3pXO1dBVUYsZUFBSTBXLFVBQVksT0FEWkYsSUFDQUUsVUFBa0U7VUFBdEU7Ozs7O1VBRUE7V0FBSUM7O2NBQVM7O2FBQXlDO1dBQ2xEQyxXQURBRDtVQUVKLGdCQUFJRDtXQUNGO1lBQUkzYSxJQUhGNGE7WUFJRUUsS0FIRkQsK0JBRUU3YTttQkFDQThhLGVBQUFBO1dBSEZELFVBRUU3YTtXQTF0Q1ZxTyxrQkF5dENRc007V0FLSyxTQUEyQzs7UUFBQTtZQUl4REk7SUFBa0IsV0FsdUNsQjFNO0lBa3VDaUMsT0FBQTtHQUErQztZQUVoRjJNO0lBdGtDRixXQTNETW5NLDRCQTBEcUJySztJQXlrQ1osT0FBQTtHQUFrQztZQUUvQ3lXO0lBMWtDRixXQTNETXBNLDRCQTBEcUJySztJQTZrQ1osT0FBQTtHQUErQjtPQUU1QzBXO1lBTUFDLFdBQVdSLFVBQVN6TTtJQUNiLElBQUxqTTthQUNJbVosS0FBS2xOO0tBQ1gsaUJBRFdBO1VBQ0RtTixTQURDbk4saUJBQ1BvTixPQVRKSjs7VUFTVUcsYUFBTkMsT0FET3BOO0tBS29CO01BRDNCcU4sS0FITUYsZUFIQ1YseUIsT0FFTFMsS0FDSUM7TUFJcUIsT0FBQSw4QkFEM0JFO0tBTEZ0WixZQW52Q0ZvTSx3QkFxdkNJaU47O0lBSWlFO0lBTC9ERixLQUZjbE47SUFTdEIsT0FSSWpNO0dBU0Y7WUFFQXVaLGFBQWN2WjtJQUNoQixZQURnQkE7Z0JBRU47O0lBRk1BO1dBOXZDZG9NO0dBbXdDd0I7WUFFeEJvTix1QkFBd0JmLEdBRTFCLE9BQVcsY0FGZUEsR0FFc0M7Ozs7T0ExM0Q5RHhNO09BZ3hCeUIxSjtPQTNJekJpSztPQU5BRDtPQVFBRTtPQWRBSjtPQTFOQUg7T0FvTkFFO09BdGxEQXZOO09BRUFDO09BRUFFO09BRUFFO09Bc2lFQUU7T0FFQXFYOztRQW5pRUUvUDtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUlBRTtRQUZBRDtRQUlBRTtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBaEc7UUFFQWlHO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUF0RztRQUVBRDtRQUVBd0c7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQTlHO1FBRUErRztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBbkk7UUFFQW9JO1FBRUE5TztRQUVBK087UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQTNNO09BT0ZDO09BRkFLO09BSUFJO09BMDREQWdYO09BWUFHO09BcDVEQWhYO09BNjNEQTRXO09BbEJBSDtPQU1BQztPQU9BQztXQThjRVMsVUFmZUY7V0FrQ2ZXO09BLzBCRi9LO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDOztPQUlBQztPQStxQkE4RjtPQXFFQUM7T0F3SEFFO09BV0FDO09BMEJBQztPQUVBQzs7UUEzNEJFNVo7UUFrQkFzQztRQUVBd1I7UUFvSEFzRDtRQWxIQXJEO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBTUFHO1FBSkFGO1FBRUFDO1FBSUFFO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUF0YjtRQUVBdWI7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQWxiO1FBRUFtYjtpQkFFTTNZLEdBQUksT0EzRlZpVyx3QkEyRk1qVyxHQUEwQjtRQUVoQzRZO1FBRUF4VDtRQUVBeVQ7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFJQUU7UUFPQUk7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7T0FpeUJGMEM7T0FZQUs7T0FPQUM7T0E3REFqQjs7T0E5L0dBOVI7T0F3aEhBcVM7T0FFQUM7T0FJQUM7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O1lHOS9HQTJCLE9BQU8xRjtJQUF1QixTQUFBLHdCQUF2QkE7O0dBQXNDO1lBRTdDMkYsZUFBZUM7SUFDakI7V0FBTztLQUNGO0lBRzRDO0tBQUEsTUFBQSw2QkFMaENBO0tBS2YsTUFBQTs7SUFGRixPQUFBO0dBRXlFO1lBRXZFQyxjQUFjaGM7SUFDaEI7V0FBTztLQUNGO2FBQ0RpYyxlQUF5QyxPQUFRLFdBSHJDamMsa0JBRzhDO0lBQ2pDO0tBQUEsS0FBQSw4QkFEekJpYzs7O0dBQ2lEO1lBRW5EQztJQUNGO1dBQU87S0FDRjs7O0dBQ3lCOzs7VUFsQjVCTCxRQUVBQyxnQkFPQUUsZUFNQUU7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7WUcvQ0FVLE9BQU9sZjtJQUFJLElBQTJCLEtBQUEsdUJBQS9CQSxJQUErQjs7R0FBaUM7WUFFdkVtZixpQkFBaUJuZjtJQUFJLElBQTJCLEtBQUEsdUJBQS9CQSxJQUErQjs7R0FBa0M7WUFFbEZvZixpQkFBaUJwZixHQUFFbkQ7SUFDckI7S0FBNkMsS0FBQSxnQ0FBVyw4QkFEbkNBO0tBQ00sS0FBQSx1QkFEUm1EO0tBQ1E7O0dBQXVDO1lBRWhFcWYsb0JBQW9CN2EsR0FBRWpFO0lBQ1EsVUFBQSwrQkFEVmlFLEdBQUVqRTtJQUN4QixPQUFBO2FBQWlCOzs7O2dCQUE2QyxNQUFBO2VBQVk7R0FBRTtZQUUxRStlLGtCQUFldGY7SUFDakI7SUFDc0M7S0FBQSxNQUFBLHVCQUZyQkE7S0FDakI7O0tBQ2lCLE1BQUE7SUFBQSxPQUFBO0dBQXdEO1lBRXZFdWYsWUFBU3ZmO0lBQ1g7SUFHYztLQUFBLE1BQUEsdUJBSkhBOztLQUdUO09BQUE7OztrQkFFUXdmO1VBQ08sVUFBQSwrQkFEUEE7VUFFSDtTQUFnQjtJQUpyQixPQUFBO0dBSXVCO1lBSXZCQyxlQUFlQyxHQUFJLE9BbEJuQkwsb0JBa0JlSyxNQUEyQjtZQUUxQ0MsY0FBY0QsR0FBRW5mO0lBQ2xCO0tBQW1DLE1BQUEsK0JBRG5CbWYsR0FBRW5mO0tBQ0UsTUFBQTtJQUFBLE9BQUE7R0FBbUQ7R0FFMUIsSUFBQTtZQUUzQ3FmLFdBQVc1ZjtJQUFJLFVBQUEsdUJBQUpBOztHQUErRDtZQUUxRTZmLG9CQUFpQjdmLEdBQUU4ZjtJQUNyQjtJQUNpRCxJQUFBLE1BSi9DRixXQUVtQkUsT0FFSixNQUFBLHVCQUZFOWY7SUFFbkIsT0FBQTtHQUFtRTtZQUVqRStmLGNBQWNDLEtBQUVoZ0IsR0FBRThmO0lBQ3BCO0tBQ21DLFFBRm5CRTthQUFBQTtXQUFBQTtLQVFvQjs7S0FDYyxNQWZoREosV0FNa0JFO0tBU0gsTUFBQSx1QkFUQzlmO0lBU2xCLE9BQUE7R0FBb0U7WUFFbEVpZ0I7SUFDRixJQUFpQkMsNEJBQUxDLFVBQUtwaEIsTUFBQW1oQjtJQUNmO1lBRGVuaEIsS0FDQyxPQUROb2hCO0tBQ2dCO01BRFhDLFFBQUFyaEI7TUFBTHNoQixhQTNDVmhCLHlCQTJDZXRnQixNQUFMb2hCO0tBQUFBLE9BQUFFO0tBQUt0aEIsTUFBQXFoQjs7R0FHTTtZQUVyQkUsV0FBUXRnQjtJQUNWO0lBQytCLElBQUEsTUFBQSx1QkFGckJBO0lBRU8sT0FSZmlnQixpQkFRZTtHQUFvRDtZQUVuRU0sbUJBQWdCdmdCO0lBQ2xCO0lBQytCLElBQUEsTUFBQSx1QkFGYkE7SUFFRCxPQVpmaWdCLGlCQVllO0dBQTZEO0dBSWpFLGVBakVYZjtZQW1FQXNCLE1BQU14Z0I7SUFBcUIsVUFBQSx1QkFBckJBO0lBQUksT0FBQTtHQUEyRTtZQUVyRnlnQixjQUFjemdCLEdBQUksT0FyRWxCa2YsT0FtRUFzQixNQUVjeGdCLElBQW9CO1lBRWxDMGdCLHdCQUF3QjFnQixHQUFJLE9BckU1Qm1mLGlCQWlFQXFCLE1BSXdCeGdCLElBQThCOzs7O09BdkV0RGtmO09BRUFDO09BRUFDO09BK0RBb0I7T0FFQUM7T0FFQUM7T0E3REFwQjtPQUlBQztPQUFBQTtPQVdBRTtPQUVBRTtPQU9BRTtPQUlBRTtPQWlCQU87T0FJQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0N2REo7Ozs7O0lBQUE7WUFFSUksaUJBQWUsTUFBQSwwQ0FBZTtHQUlwQjtJQUFWQyxVQUFVO0lBTXFDOzs7WUFNL0NDLDJCQUEyQkM7SUFDN0I7ZUFENkJBO0lBQzdCLE9BQUEsdUJBQWlCO0dBQXlDO1lBRXhEQyxVQUFVL2dCO0lBQWtDOztPQUFBO1NBWDFCLG1DQUpsQjRnQixTQWVVNWdCO0lBQUksT0FBQSx1QkFBaUI7R0FBK0M7WUFLOUVnaEIsZUFBOEJoaEI7UUFBbEJpaEI7SUFDZCxLQURjQTtLQUdULE9BQUE7Y0FBaUIsK0JBQVcsdUJBSERqaEI7SUFFZjtLQXBCSFM7T0FvQkc7U0FBa0IsK0JBQVcsdUJBRmRUO0lBbEJkLE9BQUEsbUNBRmhCNGdCLFNBRVluZ0I7O0dBa0RoQjtJQUFBOzs7WUFjSXlnQixvQkFBb0JsaEI7SUFDdEIsSUFBSXdGLDBCQURrQnhGO2FBRWRtaEIsSUFBSTVnQjtLQUNWLElBQVksSUFBQSxPQUFBLHNDQUhRUCxHQUVWTyxRQUNONmdCOzs7OztVQUFBQSxJQUZGNWI7O0tBR1MsSUFBUDZiLE9BQU8sc0NBSlNyaEIsR0FFVk8sR0FDTjZnQixJQURNN2dCO1lBRFJpRixLQUVFNGIsUUFDQUMsZUFBQUEsTUFGRUYsSUFDRkM7SUFFNEM7SUFFNUMsSUFHSjVjLElBUk0yYztPQVFOM2MsS0FBQUE7Z0JBQUFBO2dCQUZVO3lDQUNJOztJQUNULE9BQUxBO0dBQU07WUFHTjhjLGlCQUFpQjliO0lBQ0Q7O09BQUE7OztVQUFVO1dBQVNmO1dBQUg4YztXQUE2QixPQTVEN0RQLGFBNERtQ3ZjO1dBQW9CLE9BQUE7V0FBZCxPQTVEekN1YyxhQTREZ0NPO1VBQXVCLE9BQUE7U0FBa0I7U0FEeEQvYjtJQUNELE9BQUE7R0FBNEQ7WUFFNUVnYywyQkFBMkJyZ0I7SUFDN0I7S0EvRnFDLEtBQUEsd0JBQVc7WUE4Rm5CQTtLQTlGRixNQUFBO0tBZ0d2QnNnQjthQUVJTixJQUFJamdCLEtBQUluQztLQUNkLElBRGNxaEIsUUFBQXJoQjtLQUNkO2FBRGNxaEIsT0FFVCxPQUZLbGY7TUFJUjtPQUVvQjtRQUFBLE9BQUEsb0NBTlJrZjtRQUtWO1VBTEVlOzthQU1DOzs7ZUFoR1BSO3dCQWdHNERlO2dCQUNqRDtpQkF0R1U7bUJBQUE7cUJBQVc7eUJBcUc0QkE7O2lCQUNIO2tCQUFTeGxCO2tCQUFIRDtrQkFFekMsT0FuRnRCNGtCLDJCQWlGa0Uza0I7aUJBRW5ELFdBbkZmMmtCLDJCQWlGK0Q1a0I7Z0JBRW5DO2dCQXZHOUI7aUJBQTJDOzt5QkFvR21CeWxCO2tCQXBHbkIsV0FvR21CQTt5QkFwR25COzs7Z0JBcUdnQixPQUFBLHVDQWpHekRmO2VBbUc0QjthQVRsQnpmO1lBQUlrZjtPQUtWOzs7OztPQU9nQixJQVpORixRQUFBRTtPQUFBQSxRQUFBRjs7O0lBWXdCO0lBRXhDLE9BZFFpQixPQUZKTTtHQWdCWTtZQUVkRSxpQkFBaUIzaEI7SUFBSSxPQXBCckJ3aEIsMkJBb0JnRCx1QkFBL0J4aEI7R0FBZ0Q7R0FJakU7SUFBQTs7Ozs7SUFLQTs7Ozs7O1lBRUE0aEI7SUFDRjtJQXNCRSxPQUFBOzs7O2NBbkJFO2NBR0UsT0FBQTs7O3VDQURXLFNBQUk7Z0NBQ1ZDO3dCQUNIO3lCQUFJdGYsTUFBTSwrQkFEUHNmO3lCQUd5QyxPQUFBLCtCQUZ4Q3RmO3lCQUNBdWY7MkJBOUdWakI7NkJBK0dtQyx1Q0EvSG5DRjt5QkEwSWdDLE9BQUEsK0JBYnRCcGU7eUJBWUs7MkJBQUE7NkJBQ0U7OzsrQ0FBK0MsY0FBZ0I7eUJBSGhELE9BQUEsK0JBVnRCQTt5QkFTSzsyQkFoRGZpZjs2QkFpRGlCOzs7K0NBQStDLGNBQWdCO3dCQU4xRTs7cUNBM0ROTixvQkF3RFVZLFdBQUFBO3VCQWFHO2FBQUM7c0JBQ1REO2NBQ0g7ZUFBSXRmLE1BQU0sK0JBRFBzZjtlQUVnQyxNQUFBLCtCQUQvQnRmO2VBQ2dCLGNBQUEsc0NBOUl0Qm9lO2VBMkRJLFFBQUE7Ozs7Ozs7cUJBbUZFb0I7OztvQkFBQUE7O2VBT2U7Z0JBQUEsTUFBQSwrQkFSZnhmO2dCQU1BdWY7a0JBbklOakI7b0JBcUlNO2lFQUErQyxjQUFnQjtnQkFnQjVDLE1BQUEsK0JBeEJuQnRlO2dCQXVCRTtrQkFwSlJzZTtvQkFxSlU7aUVBQWdELGNBQWdCO2dCQUhqRCxNQUFBLCtCQXJCbkJ0ZTtnQkFvQkU7a0JBM0VSaWY7b0JBNEVVO2lFQUErQyxjQUFnQjtnQkFKekQsTUF4RmhCTixvQkE2RU1ZO2dCQVVzQixNQUFBLCtCQWhCdEJ2ZjtnQkFJQXZDO2tCQVdJO29CQUNHO2lFQUErQyxjQUFnQjt1QkFadEVBLGVBQUssbUJBQUxBLEtBSEEraEI7Z0JBVzRDLE9BQUEsK0JBWjVDeGY7Z0JBVUF5Zjs7bUJBdklObkI7cUJBeUltQyx1Q0F6Sm5DRjs7O21CQW1KTW1COzs7Z0JBcUJKLE9BMUJJQyxVQVNBQyxXQUFBQTtlQWlCSjs7Y0ExR3NCLE1BQUE7YUEwR29CO0dBQUM7WUFFN0NDLGNBQWNqaUI7SUFBSSxPQXJEbEI0aEIsaUJBcURtQyx1QkFBckI1aEI7R0FBc0M7WUFFcERraUI7SUFBZ0I7Ozs7UUFnQkVDO1FBRENDO1FBRExDO1FBREFDO1FBREFDO1VBSUlKO1FBZ0JIO1NBQUEsTUFwTGZuQixhQW9La0JtQjtlQWdCVDs7O1VBakJVQztRQWFGO1NBQUEsTUFySGpCZCxpQkF3R21CYztlQWFSOzs7T0FGUDtRQUFBLE1BQUE7UUFEa0I7VUFBQTtzQ0FBZW5tQixHQUFLLE9BN0sxQytrQixhQTZLcUMva0IsR0FBZ0IsR0FYdkNvbUI7UUFXVixNQUFBO1FBQUEsTUFBQTtRQURBLE1BQUE7aUJBWFVDOzs7UUFVRztTQUFBLE1BQUEsdUJBVkhBO2VBVUg7T0FGUDtRQUFBLE1BQUE7UUFEQSxNQXhLSnRCLGFBZ0tjdUI7UUFRVixNQUFBO09BQUEsT0FBQTs7OztRQWtCY0M7UUFEQ0M7UUFETEM7UUFEQUM7UUFEQUM7VUFJSUo7UUFnQkg7U0FBQSxNQTFNZnhCLGFBMExrQndCO2VBZ0JUOzs7VUFqQlVDO1FBYUY7U0FBQSxNQTNJakJuQixpQkE4SG1CbUI7ZUFhUjs7O09BRlA7UUFBQSxNQUFBO1FBRGtCO1VBQUE7c0NBQWV4bUIsR0FBSyxPQW5NMUMra0IsYUFtTXFDL2tCLEdBQWdCLEdBWHZDeW1CO1FBV1YsTUFBQTtRQUFBLE1BQUE7UUFEQSxNQUFBO2tCQVhVQzs7O1FBVUc7U0FBQSxNQUFBLHVCQVZIQTtlQVVIO09BRlA7UUFBQSxNQUFBO1FBREEsTUE5TEozQixhQXNMYzRCO1FBUVYsTUFBQTtPQUFBLE9BQUE7Ozs7UUF6Q3NEQztRQUFwQkM7UUFBckJDO1VBQXlDRjtRQVMzQztTQUFBLE1BOUpmN0IsYUFxSjBENkI7ZUFTakQ7OztVQVQ2QkM7UUFLckI7U0FBQSxNQS9GakJ4QixpQkEwRnNDd0I7ZUFLM0I7OztPQUZQO1FBQUEsTUFBQTtRQURrQjtVQUFBO3NDQUFlN21CLEdBQUssT0F2SjFDK2tCLGFBdUpxQy9rQixHQUFnQixHQUZwQzhtQjtRQUViLE1BQUE7UUFBQSxNQUFBO09BQUEsT0FBQTs7R0FtRHVCO0dBSVQ7O0lBQUEsTUFBQTtJQXJLbEJDO0lBRUFDO0dBbUtHLEdBQUE7Ozs7Z0NBMkJtQixTQUFFO2dDQUZELFNBQUU7MkJBRkwsU0FBRTs7Ozs7Ozs7Ozs7Ozs7O0dBT2I7SUFBUFYsT0FwUEYxQjtJQXNQRXFDLFdBdFBGckM7R0EwUEU7SUFBSTtLQUFBLFVBQUssbUJBQWU7S0FGeEJ5Qjs7Ozs7UUFBQUE7O0dBS2M7SUFBZGEsY0E3UEZ0QztJQStQRXdCLE9Bek1GbkIsb0JBdU1FaUM7O0dBTUk7Ozs7R0FETixJQURFQyxjQTNMRjVCO1lBaU1FNkI7SUFDTSxJQUFKcmpCLElBQUk7V0FDUixzQkFESUE7S0FDaUMsVUFBQSx3QkFEakNBO0tBQ3NCLEdBQUE7TUFEbEIsT0FBQTs7ZUFBSkE7O3FDQUFBQTs7SUFHQyxPQUhEQTtHQUdFO1lBRUpzakIsYUFBYXRqQjtJQUFnQixVQUFBLHVCQUFoQkE7O0dBQStCO1lBRTVDN0MsV0FBUyxPQTFLWHlrQiwyQkEwS29DO1lBRWxDcmQsSUFBSWdmO0lBQWdCLFVBQUEsdUJBckh0QnJCLGNBcUhNcUI7O0dBQStDO0dBRXZDO0lBQVpDLFlBblJGM0M7OztPQUdBRTtPQUtBQztPQXlDQWdDO09BRUFDO09BR0EvQjtPQWFBSTtPQXVCQUs7T0FnRUFNO09BRUFDOztRQXdGRUs7UUFJQUQ7UUFGQVk7UUFPQUM7UUFFQWQ7UUFFQWU7UUFNQUM7UUFNQUM7UUFFQW5tQjtRQUVBb0g7UUFFQWlmOzs7RTs7Ozs7Ozs7Rzs7Ozs7Ozs7WUUvUUZhLHFDQUFnRSxVQUFrQjs7WUFJbEYzRjtJQUFrQixPQUZEO0dBRThCO1lBUy9DNEYsY0FFRXpuQixHQUNBMG5CO0lBRUosSUFBZ0MsS0FBQSw4QkFINUIxbkI7SUFJSixHQUhJMG5CO0tBaEI4RCxZQWdCOURBLFFBaEI4RDs7Ozs7O0lBb0J4RDtHQUtQOzs7O09BekJERjs7T0FJQTNGO09BU0E0Rjs7OztFOzs7Ozs7R1MrRFU7O0lBQVZ3TCxVQUFVOzhCQUFWQTs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZSWxIQWMsVUFBVUMsR0FBRUM7SUFBSSxPQUFZLDZCQUFsQkQsR0FBa0IsaUJBQWhCQztHQUE0QjtZQUV4Q0MsVUFBVUYsR0FBRUM7SUFBSSxPQUFBLG1CQUFNLDZCQUFaRCxHQUFFQztHQUF5QjtZQUVyQ0UsUUFBUUY7SUFBSSxPQUFpQiw2QkFBQSxpQkFBckJBO0dBQStCO1lBRXZDRyxRQUFRQztJQUFJLE9BQUEsbUJBQVMsNkJBQWJBO0dBQStCO1lBRXZDQyxTQUFTTixHQUFFQztJQUFxQixVQVJoQ0YsVUFRU0MsR0FBRUM7SUFBcUIsT0FBQTtHQUFhO1lBRTdDTSxTQUFTUCxHQUFFQztJQUFJLE9BUmZDLFVBUVNGLEdBQXFCLDZCQUFuQkM7R0FBa0M7WUFFN0NPLE9BQU9SO0k7UUFBc0NTO0lBQVMsT0FBQSxnQkFBQSxXQUEvQ1QsR0FBc0NTOztZQUU3Q0MsVUFBVVYsR0FBRVM7SUFDUixZQUFBLHVCQURRQTtnQkFDd0I7UUFBWUU7SUFBSyxXQUFLLFdBRGhEWCxHQUNzQ1c7R0FBZTtZQUUvREMsV0FBV0MsS0FBSWIsR0FBRVM7SUFDYixZQUFBLHVCQURhQTtnQkFDbUIsT0FEekJJO1FBQ29DRjtJQUFLLE9BQUEsV0FEckNYLEdBQ2dDVztHQUFRO1lBRXZERyxTQUFTRCxLQUFJSjtJQUFVLFlBQUEsdUJBQVZBO2dCQUEwQyxPQUE5Q0k7UUFBeURGO0lBQUssT0FBTEE7R0FBTTtZQUV4RUksUUFBUWYsR0FBRVM7SUFDTixZQUFBLHVCQURNQTs7UUFDMkNFO0lBQVMsT0FBQSxnQkFBQSxXQUR0RFgsR0FDNkNXO0dBQWM7WUFFbkVLLE9BQU9oQixHQUFFUztJQUNMLFlBQUEsb0JBREtBO2dCQUN3QjtRQUFZRTtJQUFLLFdBQUssV0FEaERYLEdBQ3NDVztHQUFlO1lBRTVETSxJQUFJakI7STtRQUFpQ1M7SUFBVSxPQUFBLGlCQUFBLFdBQTNDVCxHQUFpQ1M7O1lBRXJDUyxRQUFRbEIsR0FBRVM7SUFDTixZQUFBLG9CQURNQTs7UUFDbUNFO0lBQVUsT0FBQSxpQkFBQSxXQUQvQ1gsR0FDcUNXO0dBQWU7WUFFNURRLFdBQVcsbURBQXNCO1lBRWpDQyxRQUFRQztJQUFJLElBQXFCLEtBQUEsd0JBQXpCQSxJQUF5Qjs7R0FBVTtZQUUzQ0MsSUFBSUM7SUFDTixPQUFBOztzQkFDT0E7Y0FBUSxPQU5iSjt1QkFNb0Isd0JBQVE7YUFBZ0M7O2FBRnhESTtHQUdvQjtZQUV4QkMsZ0JBQWdCSDtJQUF3QixTQUFBLHdCQUF4QkE7O0dBQWtDO1lBQ2xESSxVQUFVekIsR0FFVjBCO0ksR0FBQUE7S0FBWSxPQUFBO2NBRkYxQixHQURWd0IsZ0JBRytCLCtCQUEvQkU7UUFEYUMsSUFDYkQ7SUFEb0IsT0FBQSxXQURWMUIsR0FDVSx5QkFBUDJCOztHQUtHLElBQWRDLGVBRUFDO1lBS0FDLFFBQVNyQjtJQUFtQixVQUFuQkEsTUFMVG9CLG1DQUtTcEIsS0FQVG1CO0lBTzhDO0dBQWdCO1lBQzlERyxTQUF1QnRCLEdBQVdUO1FBQTVCZ0Msc0JBTk5IO0lBT0MsT0FGREMsUUFDdUJyQixLQUFqQnVCLE9BQ29CLFdBRFFoQyxHQUFYUzs7WUFFdkJ3QixVQUF3QnhCLEdBQVdUO1FBQTVCZ0Msc0JBUlBIO0lBU0MsT0FKREMsUUFHd0JyQixLQUFqQnVCLE9BQ21CLFdBRFNoQyxHQUFYUzs7WUFFeEJ5QixLQUFNekIsR0FBbUIsV0FMekJxQixRQUtNckIsR0FBa0M7WUFDeEMwQixLQUFNMUIsR0FBV1Q7SUFBZ0MsY0FOakQ4QixRQU1NckI7aUJBQTRELFdBQWpEVCxHQUFYUztHQUF3RTtZQUM5RTJCLE9BQU0zQixHQUFXVCxHQUFpQnFDO0lBQXFCLE9BUHZEUCxRQU9NckIsS0FBbUUsV0FBeERULFFBQWtFLFdBQWpEcUMsR0FBNUI1QjtHQUF5RjtZQUMvRjZCLElBQUs3QixHQUFXVCxHQUF1QixPQVJ2QzhCLFFBUUtyQixLQUFvRCxXQUF6Q1QsUUFBWFMsRUFBd0U7WUFDN0U4QixZQUEwQjlCO1FBQWpCdUIsc0JBZFRIO0lBY2tELEtBQXhCcEIsR0FDbEIsT0FEQ3VCO1FBRUpyQixNQUZxQkY7SUFFaEIsT0FBTEU7O1lBQ0w2QixVQUFnRS9CLEdBQTdCLE9BWm5DcUIsUUFZZ0VyQixhQUFBQSxHQUFZO1lBQzVFZ0MsVUFBaUN6QztRQUExQmdDLHNCQWxCUEg7Z0JBbUJRLE9BRERHO1FBRUZ2QjtJQUFLLE9BQUEsV0FGdUJULEdBRTVCUzs7WUFDTGlDLFFBQVMxQyxHQUFvRVMsR0FBN0IsT0FoQmhEcUIsUUFnQjZFckIsYUFBVSxXQUE5RVQsR0FBb0VTLElBQWdCO0dBekJyRjs7O09BRVJtQjtPQUVBQztPQUtBQztPQUNBQztPQUVBRTtPQUVBQztPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUdBQztPQUNBQztPQUdBQztZQU1FQztJQUFrQjtJQUFBOztTQUVqQkMsZ0JBQUxDO1FBQWdCLHVCQUFoQkEsSUFBOEUsT0FBOUVBO2VBQUtEOztHQUEwRTtZQUUvRUUsWUFBWXpDO0lBQUksT0FKWnNDLGdCQUk0Qix1Q0FBcEJ0QztHQUE4Qzs7WUFHMUQwQyxlQUErQixnQ0FBdUM7WUFDdEVDLFlBQVkzQztJQUFJLE9BQWM7b0NBQXFDLDZCQUF2REE7R0FBeUU7WUFFckY0QyxpQkFBaUJDO0lBQ25CO0tBQVcsT0FBQSx3QkFEUUE7S0FFTDtPQUFBO2tCQUFvQkM7VUFDOUI7V0FBb0IsTUFITEQsRUFFZUM7V0FDdkIsVUFBQTs4QkFIUUQsRUFFZUM7VUFDYTtTQUFpQjs7R0FBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTNGaEVwRDtPQUVBRztPQUVBQztPQUVBQztPQUVBRTtPQUVBQztPQUVBQztPQUVBRTtPQUdBRTtPQUdBRTtPQUVBQztPQUdBQztPQUdBQztPQUVBQztPQUdBQztPQUVBQztPQUVBRTtPQUtBRTtPQUNBQzs7T0FtQ0lrQjtPQUlKRzs7T0FHQUM7T0FDQUM7T0FFQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7WU1oRkF5SDtJQUFjOztPQUNGOztPQUNDO2VBQ0k7O0dBQXNCO1lBRXZDQztJQUFtQjs7T0FDWDs7T0FDQTs7T0FDTTtlQUNBOztHQUFtQjtHQUVRO0lBQXpDQztJQUNBQzs7WUFFQUMsV0FBVyxpQkFBVTtZQUVyQkMsS0FBTUMsT0FBT0MsVUFBU0M7SUFDeEI7NEJBRHdCQTs7O2VBQUFBOzs4Q0FBQUE7K0NBQUFBOztLQUdMOztRQUFBOzs7bUJBQWVDO1dBQUssT0FBQTs2QkFBbUJDLEdBQU0sT0FBRSxXQUFoQ0QsY0FBMEM7VUFBQztVQUg5REY7O0tBSUU7TUFBQTtRQUFBOzs7bUJBQWVFO1dBQUssT0FBQTs2QkFBbUJDLEdBQU0sT0FBekIsV0FBTEQsT0FBaUM7VUFBQztVQUoxREg7O0tBSU47O1VBQ0dLO1NBQUFDLDBCQUFBRDtLQUNILEtBTk1MLE9BTW1CLE1BQUEsNEJBRHRCTTtTQUN1Q0gsSUFOcENIO0tBTXlDLE9BQUE7cUNBQWVJLEdBQUssT0FBQSxXQUF6QkQsR0FBb0JDLEdBQXdCLEdBRG5GRTs7R0FDd0Y7WUFFM0ZDLE1BQU9QLE9BQU9DLFVBQVNPLEdBQUVOO0lBQzNCOzRCQUQyQkE7OztlQUFBQTs7OENBQUFBOytDQUFBQTs7S0FHUjs7UUFBQTs7O21CQUFlQztXQUFLLE9BQUE7NkJBQW1CQztxQkFBTSxPQUFFLFdBQWhDRCxHQUFnQyxXQUh6Q0s7b0JBR3dEO1VBQUM7VUFIbEVQOztLQUlDO01BQUE7UUFBQTs7O21CQUFlRTtXQUFLLE9BQUE7NkJBQW1CQyxHQUFNLE9BQXpCLFdBQUxELE9BQWlDO1VBQUM7VUFKekRIOztLQUlQOztVQUNHSztTQUFBQywwQkFBQUQ7S0FDSCxLQU5PTCxPQU1rQixNQUFBLDRCQUR0Qk07U0FDdUNILElBTm5DSDtLQU13QyxPQUFBO3FDQUFlSSxHQUFLLE9BQUEsV0FBekJELEdBQW9CQyxHQUF3QixHQURuRkU7O0dBQ3dGO1lBRTNGRyxzQkFBaUQsMkNBR3BEO1lBRUdDLE9BQVFDLFNBQVNYLE9BQU9ZLFNBQVFDLE1BQUtaO0lBQ3ZDO0tBQWlDO0tBQzdCQzs7O1NBQXlDO1VBQUEsTUFBQSxnQ0FGbkJVO1VBRUssTUFBQSx3QkFGR0M7OztJQXJCaENkLEtBcUJpQkMsV0FBb0JDLFdBRW5DQzsyQkFBQUE7OztlQUFBQTs7OENBQUFBOytDQUFBQTs7SUFJRjs7T0FBQTs7O2tCQUFlWTtVQUFLLE9BQUE7NEJBQW1CVjtvQkFDbkMsSUFBSVcsSUFaUk4saUJBV3VDTCxJQUUvQlk7b0JBQ0osT0FBQSxXQUhXRixHQUVQRSxJQURBRDttQkFFRTtTQUFDO1NBVEhKOztHQVNZO1lBRXBCTSxpQkFBbUMsdUJBQWU7WUFFbERDO0lBRWtCO0tBRldDO0tBQVZDO0tBRUQsTUFBQSxtREFGV0Q7S0FDakIsTUFBQSx5REFET0M7OztZQUtuQkMsYUFBY0MsY0FBNkJUO0lBQzdDO0tBQ29DLE1BQUEsZ0NBUGxDSyxtQkFLY0k7S0FFTSxNQUFBLHdCQUZ1QlQ7O0dBRTRCO1lBRXZFVSxVQUFXQyxXQUEwQlg7SUFDdkM7S0FBbUQsTUFBQSxnQ0E1RGpEbkIsYUEyRFc4QjtLQUNZLE1BQUEsK0JBQVUsd0JBRElYOztLQUVOLE1BQUEsd0JBRk1BOztHQUVPOzthQU8xQ1ksT0FBUUgsU0FBUU4sSUFBR0g7S0FDckIsT0FkQVEsYUFhVUMsU0FBUU4sSUFBR0g7SUFDUTthQUUzQmEsTUFBT0YsTUFBS1IsSUFBR0gsTUFDakIsT0FiQVUsVUFZU0MsTUFBS1IsSUFBR0gsTUFDTTthQUVyQmMsSUFBSzFCLFVBQVVELE9BQU80QixVQUFrQkM7S0FDMUMsT0FuREF0QjtjQWtEaUJQO2NBQVZDOzs7O2dCQUNxRDtpQkFBQSxNQUFBLHNDQURwQzJCO2lCQUN3QixNQUFBLGlCQUROQzs7O0lBQzBDO2FBRWxGQyxJQUFLN0IsVUFBVUQsT0FBTzRCLFVBQWtCQztLQUMxQyxPQTlEQTlCO2NBNkRpQkM7Y0FBVkM7OztnQkFDNEM7aUJBQUEsTUFBQSxzQ0FEM0IyQjtpQkFDZSxNQUFBLGlCQURHQzs7O0lBQ2lDO2FBRXpFRSxNQUFPQyxRQUFRQyxRQUFRQyxPQUFPQztLQUNPO0tBQ3ZDLEtBRnlCRDtXQUFPQztPQUdoQixNQUFBO01BSThCO09BRGpDQyxVQU5tQkQ7T0FPYyxNQUFBLG1EQVA3QkY7T0FPYSxNQUFBLGlCQURqQkc7TUFDWDs7U0FIS0MsVUFKa0JIO1FBQU9DO01BV0E7T0FIYkcsVUFSYUg7T0FXQSxNQUFBLG1EQVhmRjtPQVdULE1BQUEsbURBWENEO09BVWUsTUFBQSxpQkFGTE07T0FFWCxNQUFBLGlCQU5ERDtNQUtMOztLQUo0QztNQUFBLE1BQUEsbURBTHJDTDtNQUtxQixNQUFBLGlCQUR2Qks7S0FDTDtJQU1zRDthQUV0REUsTUFBT3ZDLE9BQU80QixVQUFrQjNCO0tBQ2xDLEtBRGdCMkI7YUE3RWhCN0I7ZUE2RVNDO21CQUF5QkM7Ozs7OztpQkFBbEIyQjs7VUFHTlk7YUFoRlZ6QztlQTZFU0M7bUJBQXlCQzs7O2lCQUdpQyxVQUFBLGlCQUF6RHVDOzs7OztZQWhGVnpDO2NBNkVTQztrQkFBeUJDO2tDO0lBSTJDO2FBRTNFd0MsSUFBS3pDLFlBQTRDQyxVQUErQnVDO2NBQzlFRSxNQUFNQztNQUFXLFlBQUEsNkJBQVhBO2tCQUNFO1VBQ0hDO01BQU0sV0FBSyxpQkFBWEE7S0FBdUI7S0FDaEMsU0FKa0ZKO1VBSzlFWixNQUw4RVk7YUEzRWxGakM7ZUEyRU9QO21CQUE0Q0M7ZUFDL0N5Qzs7O2lCQUlxRCxVQUFBLGlCQUFyRGQ7Ozs7aUJBTDhFWTtZQTNFbEZqQztjQTJFT1A7a0JBQTRDQztjQUMvQ3lDO2tDO0lBS29FO2FBRXRFRyxRQUFTN0MsT0FBTzRCLEtBQUtXLFlBQTRDdEM7S0FDbkUsS0FEa0IyQjthQW5GbEJyQjtlQW1GV1A7bUJBQXdEQztlQUVsQzs7O2lCQUFzRDtrQkFBQSxNQUFBLGdDQUZoRXNDOzs7O2lCQUFMWDs7VUFHUlk7YUF0RlZqQztlQW1GV1A7bUJBQXdEQztlQUc1Qjs7O2lCQUE4RDtrQkFBQSxNQUFBLGdDQUg5RXNDO2tCQUdpRSxNQUFBLGlCQUE5RUM7Ozs7O1lBdEZWakM7Y0FtRldQO2tCQUF3REM7Y0FJM0I7OztnQkFBMEQsVUFBQSxnQ0FKM0VzQzs7O0lBSStGO2FBRXBITyxRQUFTOUMsWUFBeUNDLFVBQStCdUM7Y0FDL0VFLE1BQU1DO01BQVcsWUFBQSw2QkFBWEE7a0JBQ0U7VUFDSEM7TUFBTSxXQUFLLGlCQUFYQTtLQUF1QjtLQUNoQyxTQUptRko7VUFLL0VaLE1BTCtFWTthQXpGbkZqQztlQXlGV1A7bUJBQXlDQztlQUNoRHlDOzs7aUJBSXdELFVBQUEsaUJBQXhEZDs7OztpQkFMK0VZO1lBekZuRmpDO2NBeUZXUDtrQkFBeUNDO2NBQ2hEeUM7a0M7SUFLdUU7YUFFekVLLGFBQWMvQyxPQUFPNEIsS0FBS1csWUFBeUN0QztLQUNyRSxLQUR1QjJCO2FBakd2QnJCO2VBaUdnQlA7bUJBQXFEQztlQUVwQzs7O2lCQUEwRDtrQkFBQSxNQUFBLGdDQUYvRHNDOzs7O2lCQUFMWDs7VUFHYlk7YUFwR1ZqQztlQWlHZ0JQO21CQUFxREM7ZUFHOUI7OztpQkFBa0U7a0JBQUEsTUFBQSxnQ0FIN0VzQztrQkFHZ0UsTUFBQSxpQkFBbEZDOzs7OztZQXBHVmpDO2NBaUdnQlA7a0JBQXFEQztjQUk3Qjs7O2dCQUE4RCxVQUFBLGdDQUoxRXNDOzs7SUFJOEY7YUFFeEhTLFNBQVEvQyxVQUFVRDtLO1VBQ2hCNEI7YUFoSEo3QjtlQStHb0JDO2VBQVZDOzs7aUJBQzJDLFVBQUEsaUJBQWpEMkI7Ozs7O1lBaEhKN0I7Y0ErR29CQztjQUFWQztrQzs7YUFJUmdELEtBQU1qRCxPQUFPNEIsS0FBS3NCLGdCQUNqQi9DO2NBQ0NGLFNBQVNrRDtNQUNMLFlBQUEsNkJBREtBO2tCQUVEO01BRUY7O09BQUEsVUFBQTs7V0FDQ1g7T0FDTCxXQVBIckMsR0FNUXFDLEdBQ0Q7Ozs7OztLQUU4QjtLQUN4QyxLQVhlWjthQW5IZjdCO2VBbUhRQzttQkFFSkM7OztpQkFXa0M7a0JBQUE7b0JBQUEsZ0NBM0l0Q04sa0JBOEhvQnVEOzs7O2lCQUFMdEI7O1VBY0xZO2FBaklWekM7ZUFtSFFDO21CQUVKQzs7O2lCQWEwQztrQkFBQTtvQkFBQSxnQ0E3STlDTixrQkE4SG9CdUQ7a0JBZWEsTUFBQSxpQkFEdkJWOzs7OztZQWpJVnpDO2NBbUhRQztrQkFFSkM7OztnQkFlc0M7O21CQUFBLGdDQS9JMUNOLGtCQThIb0J1RDs7O0lBaUI2RDthQUUvRUUsS0FBTXBELE9BQU80QixLQUFLc0IsaUJBQ2pCL0MsR0FBNkJrRCxPQUFhcEQ7S0FDbkMsSUFBTnFELFVBRDRCRDtjQUU1QkUsV0FBU0o7TUFDTCxZQUFBLDZCQURLQTtrQkFBYixPQUFBLFdBRjZDbEQsVUFDekNxRDtNQUtNOztPQUFBLFVBQUE7O09BRUosSUFES2QsZ0JBQ0wsTUFQRmM7T0FBQUEsU0FPUyxXQVJWbkQsR0FPUXFDLEdBQ007Ozs7OztLQUV1QjtLQUN4QyxLQVplWjthQXRJZjdCO2VBc0lRQzttQkFHSnVEOzs7aUJBV2tDO2tCQUFBO29CQUFBLGdDQS9KdEM1RCxrQkFpSm9CdUQ7Ozs7aUJBQUx0Qjs7VUFlTFk7YUFySlZ6QztlQXNJUUM7bUJBR0p1RDs7O2lCQWEwQztrQkFBQTtvQkFBQSxnQ0FqSzlDNUQsa0JBaUpvQnVEO2tCQWdCYSxPQUFBLGlCQUR2QlY7Ozs7O1lBckpWekM7Y0FzSVFDO2tCQUdKdUQ7OztnQkFlc0M7O21CQUFBLGdDQW5LMUM1RCxrQkFpSm9CdUQ7OztJQWtCNkQ7YUFFL0VNLFVBQVd4RCxPQUFPNEIsS0FBS3NCLGlCQUN0Qi9DO2NBQ0NGLFNBQVNrRDtNQUNMLFlBQUEsNkJBREtBO2tCQUVEO01BRUY7O09BQUEsVUFBQTs7V0FDQ1g7T0FDTCxXQVBIckMsR0FNUXFDOzs7Ozs7S0FHNkI7S0FDeEMsS0FYb0JaO2FBMUpwQjdCO2VBMEphQzttQkFFVEM7OztpQkFXcUM7a0JBQUE7b0JBQUEsZ0NBbEx6Q04sa0JBcUt5QnVEOzs7O2lCQUFMdEI7O1VBY1ZZO2FBeEtWekM7ZUEwSmFDO21CQUVUQzs7O2lCQWE2QztrQkFBQTtvQkFBQSxnQ0FwTGpETixrQkFxS3lCdUQ7a0JBZVcsT0FBQSxpQkFEMUJWOzs7OztZQXhLVnpDO2NBMEphQztrQkFFVEM7OztnQkFleUM7O21CQUFBLGdDQXRMN0NOLGtCQXFLeUJ1RDs7O0lBaUIyRDthQUVsRk8sVUFBV3pELE9BQU80QixLQUFLc0IsaUJBQ3RCL0MsR0FBc0JrRCxPQUFhcEQ7S0FDNUIsSUFBTnFELFVBRHFCRDtjQUVyQkUsV0FBU0o7TUFDTCxZQUFBLDZCQURLQTtrQkFBYixPQUFBLFdBRnNDbEQsVUFDbENxRDtNQUtNOztPQUFBLFVBQUE7O1dBQ0NkO09BTlBjLFNBT1MsV0FSVm5ELEdBT1FxQyxHQU5QYzs7Ozs7O0tBU29DO0tBQ3hDLEtBWm9CMUI7YUE3S3BCN0I7ZUE2S2FDO21CQUdUdUQ7OztpQkFXcUM7a0JBQUE7b0JBQUEsZ0NBdE16QzVELGtCQXdMeUJ1RDs7OztpQkFBTHRCOztVQWVWWTthQTVMVnpDO2VBNkthQzttQkFHVHVEOzs7aUJBYTZDO2tCQUFBO29CQUFBLGdDQXhNakQ1RCxrQkF3THlCdUQ7a0JBZ0JXLE9BQUEsaUJBRDFCVjs7Ozs7WUE1TFZ6QztjQTZLYUM7a0JBR1R1RDs7O2dCQWV5Qzs7bUJBQUEsZ0NBMU03QzVELGtCQXdMeUJ1RDs7O0lBa0IyRDthQUVsRlEsTUFBTzFELE9BQU9DO0tBQ2hCLE9BMUxBTTtjQXlMU1A7Y0FBT0M7OEJBQ2lCLFNBQUU7a0M7SUFBbUI7YUFFcEQwRDtLQUdXO01BSGdDQztNQUFiQztNQUFSQztNQUdYLE9BQUEsbURBSGdDRjtNQUU1QixPQUFBLG1EQUZlQztNQUNuQixPQUFBLG1EQURXQzs7O2FBTXRCQyxhQUFjekMsZUFBNkNULE1BQUtPO0tBQ2xFO01BQWM7UUFBQSxnQ0FQWnVDLHNCQU1jckM7TUFFYyxPQUFBLHdCQUZvQ0Y7TUFFbEQsT0FBQSx3QkFGNkNQOztJQUVOO2FBRXJEbUQsbUJBQWtEbkQ7S0FDMUIsV0FBQSx3QkFEMEJBOztLQUMxQztJQUE2QjthQUVyQ29ELGdCQUErQ3BEO0tBQ3ZDLFdBQUEsd0JBRHVDQTs7SUFDMUI7SUFuS1k7WUFLakNZO1lBR0FDO1lBR0FDO1lBR0FHO1lBR0FDO1lBYUFRO1lBTUFFO1lBUUFJO1lBTUFDO1lBUUFDO1lBTUFDO1lBSUFDO1lBbUJBRztZQW9CQUk7WUFtQkFDO1lBb0JBQztZQUdBQztZQU1BSTtZQUlBQztZQUdBQzs7O2FBUUFDLE1BQU1yQyxHQUFJLE9BQUpBLEVBQUs7YUFDWGEsTUFBTWIsR0FBSSxPQUFKQSxFQUFLO0lBSjhELFdBR3pFcUMsT0FDQXhCOztHQUtvRTs7SUFHcEV3QjtJQUNBeEI7SUFKb0UsZUFHcEV3QixPQUNBeEI7WUFNQXlCLFFBQU10QyxHQUFJLE9BQUpBLEVBQXFCO1lBQzNCdUMsUUFBTXZDLEdBQUksT0FBSkEsRUFBcUI7R0FKcUMsbUJBR2hFc0MsU0FDQUM7WUFNQUMsUUFBTXhDO0lBQUk7S0FBdUMsT0FBQSx3QkFBM0NBO0tBQTJDOztLQUFiOztHQUF3QjtZQUM1RHlDO0lBQVUsT0FBQTtHQUEyQjtHQUp3QjtJQUFBLGFBRzdERCxTQUNBQzs7O09BalFGNUU7T0FLQUM7T0FNQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FRQVE7T0FRQUU7T0FLQUM7T0FXQU87T0FFQUM7T0FLQUc7T0FJQUU7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUNyRUVnRDs7Ozs7Ozs7WUFQRkMsTUFBT0MsSUFBUUMsSUFBSyxPQUFiRCxPQUFRQyxXQUFxQjs7SUFDcENDO0lBQ0FDO0lBQ0FDO0lBQ0FDO1lBRUFDLFlBQXdCQztJQUUxQixJQUZXQywyQkFFUEMsVUFGT0QsZ0JBQ1BWLFNBQUFBO0lBRUosT0FBQSx1QkFESVcsWUFGc0JGOztPQU14Qkc7WUFDQUMsVUFBV0gsUUFBT0QsTUFBTUs7SUFBaUIsVUFQekNOLE9BT1dFLFFBQU9EO29DQUFNSyxRQUR4QkY7R0FDZ0Y7WUFFaEZHLFFBQVFEO0lBQ1YsSUFBSSxjQUFLLFdBRENBLFFBQ047Ozs0QkFDYTs7O0dBQUk7WUFHbkJFLE1BQU1DLEdBQUdDLEtBQUtiLEtBQUtjO0lBQU0sT0FBQSx1QkFBbkJGLEdBQUdDLEtBQUtiLEtBQUtjO0dBQWdDO1lBQ25EQyxhQUFhSCxHQUFHQyxLQUFLYixLQUFLYztJQUFNLE9BTmhDSjs2QkFNbUQsT0FBbkIsdUJBQW5CRSxHQUFHQyxLQUFLYixLQUFLYyxLQUEwRDtHQUFDO1lBQ3JGRSxpQkFBaUJKLEdBQUdDLEtBQUtiLEtBQUtjO0lBQU0sT0FBQSx1QkFBbkJGLEdBQUdDLEtBQUtiLEtBQUtjO0dBQXVDO1lBQ3JFRyxXQUFXTDtJQUFJLE9BUmZGLHdCQVFrQyxPQUFuQix1QkFBSkUsR0FBMEM7R0FBQztZQUN0RE0sV0FBV047SUFBSSxPQVRmRix3QkFTa0MsT0FBbkIsdUJBQUpFLEdBQTBDO0dBQUM7WUFDdERPLGlCQUFpQlA7SUFBSSxPQVZyQkYsd0JBVXdDLE9BQW5CLHVCQUFKRSxHQUFnRDtHQUFDO1lBQ2xFUSxtQkFBbUJSO0lBQUksT0FYdkJGLHdCQVcwQyxPQUFuQix1QkFBSkUsR0FBMkM7R0FBQztZQUMvRFMsYUFBYVQsR0FBRUMsS0FBS0M7SUFBTSxPQVoxQko7O2NBWTZDLE9BQW5CLDhCQUFYRyxLQUFGRCxHQUFPRTthQUE0RDtHQUFDO09BQ2pGUTtZQUVBQyxVQUFVWDtJQUVaLElBQUlZLG9CQUNBQyxTQUFTLDJCQURURDtJQU1KLElBSEUsUUFBQSw4QkFGRUMsUUFIUWIsR0FFUlk7Ozs0QkFPYSxPQUFBLDJCQU5iQzs7O0dBTW1DO1lBR3JDQyxLQUFNQyxhQUFZQztJQUNwQixLQURRRCxhQU9ILE9BUGVDO1FBR2RkLG9DQUhjYztJQUlsQixPQURJZDtLQUNxQixVQUFBLHdCQUpQYyxNQUdkZDtLQUNVLEdBQUE7TUFDVCxPQUFBLDJCQUxhYyxTQUdkZDs7SUFHQyxPQU5hYztHQU9YO1lBR1BDLGdCQUFpQ2pCO0lBQzdCO0tBRFNlO0tBQ1QsUUF0Q0pqQix3QkFzQ3VCLE9BQXpCLHVCQURtQ0UsR0FDUztnQkFDbEM7UUFDSGdCO0lBQVEsV0FiYkYsS0FVYUMsYUFHUkM7O1lBR0xFLG9CQUFxQ2xCO0lBQzVCLElBRFFlLGdDQUNmQyxPQUFPLHVCQUQ0QmhCO0lBRXZDLE9BbEJFYyxLQWdCaUJDLGFBQ2ZDOztZQUlGRyxXQUFZSixhQUFZZixHQUNib0IsTUFEc0J2QjtJQUNuQyxJQUFhd0IsS0FBQUQ7SUFDWDtLQUFNLFlBYk5ILFdBV1lGLGFBQVlmO2lCQUdkLE9BRkNxQjtLQUdTLElBQWJMLGlCQUhJTSxPQUdTLFdBSmF6QixHQUN0QndCLElBR0pMO0tBSElLLEtBQUFDOztHQUtKO1lBR1BDLFlBQWFSLGFBQVlmO0lBQ2xCOztPQVZQbUI7U0FTYUosYUFBWWYsZUFDMEJ3QixPQUFNUixNQUFRLFdBQVJBLE1BQU5RLE9BQTJCO0lBQXZFLE9BQUE7R0FBeUU7WUFHaEZDLFdBQVlWLGFBQVlmLEdBQUdIO0lBQzdCLE9BZEVzQjthQWFZSjthQUFZZjs7NkJBQ29CZ0IsTUFBUSxPQUFBLFdBRHpCbkIsR0FDaUJtQixNQUFjO0dBQUM7WUFHM0RVLFdBQVlYLGFBQVlZO0lBQVEsT0FuRWhDL0I7Z0JBbUV3QitCLHFCLE9BUnhCSixZQVFZUjtHQUFpRTtZQUM3RWEsU0FBU0QsT0FBUSxPQXBFakIvQixhQW9FUytCLE9BbkRUaEIsV0FtRDZDOzs7O09BakY3QzNCO09BSUFNO09BRUFDO09BT0FLO09BREFEO09BUUFJO09BQ0FJO09BQ0FDO09BRUFFO09BREFEO09BRUFFO09BQ0FDO09BQ0FDO09BR0FFO09Bc0JBTTtPQU1BQztPQUtBQztPQVNBSTtPQUlBRTtPQTNFQXRDO09BQ0FDO09BQ0FDO09BeUJBcUI7T0FvREFnQjtPQUNBRTs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDeERFN0M7Ozs7Ozs7WUF6QkZDLE1BQU9DLElBQVFDLElBQUssT0FBYkQsT0FBUUMsV0FBcUI7O0lBQ3BDQztJQUNBQztJQUNBQztJQUNBd0M7SUFDQUM7Ozs7WUFFQUMsVUFBVS9CO0lBQ1osT0FEWUEsTUFGVjhCLGVBRVU5QixNQUhWNkI7R0FROEI7WUFNOUJ0QywyQkFLRUM7SUFHUTtLQVBOQztLQUNBdUM7S0FDQUM7S0FDQUM7V0FIQXpDO0tBT0ZDLG1CQURBWDtXQUxFaUQ7S0FPRkcsbUJBREF6QztLQUVBMEMsVUFQRUgsd0JBTUZFLFdBQUFBO0lBRUosT0FBQSx1QkFESUMsU0FORUYsTUFDRjFDOzs7SUFTRmtCO0lBQ0EyQjtJQUNBMUM7SUFDQTJDO1lBQ0FDLE9BQU92QyxHQUFHQyxLQUFLYixLQUFLYztJQUFNLE9BQUEsdUJBQW5CRixHQUFHQyxLQUFLYixLQUFLYztHQUFpQztZQUNyRHNDLGlCQUFpQnhDLEdBQUdDLEtBQUtiLEtBQUtjO0lBQU0sT0FBQSx1QkFBbkJGLEdBQUdDLEtBQUtiLEtBQUtjO0dBQTJDOztJQUN6RXVDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO1lBQ0FDLFFBQVFoRCxHQUFJLE9BQUEsV0FQWnlDLGVBT1F6QyxRQUF3QjtZQUVoQ2lELGFBRlFqRCxHQUVPd0I7SUFDakIsT0FBbUI7O2FBREZBO3NCQUNPUjtjQUN0QixXQVhBeUIsZUFPUXpDLEdBR2NnQjtjQUhWLE9BQUEsV0FQWnlCLGVBT1F6QzthQUtDO0dBQUM7O0lBR1ZrRDtJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztZQUVBQyxRQUFTQyxNQUFLQztJQUNoQjs7T0FEV0Q7VUFHSyx5QkFIQUM7VUFJSCw0QkFKR0E7SUFJSCxPQUFBLFdBUFhKO0dBT21DO1lBR25DSyxTQUFVRixNQUFLQztJQUNqQjs7T0FEWUQ7VUFHSSx5QkFIQ0M7VUFJSiw0QkFKSUE7SUFJSixPQUFBLFdBYlhIO0dBYW1DO1lBR25DNUQsVUFBV0gsUUFBUXVDLFFBQVFDLGdCQUFnQkMsTUFBSzFDLE1BQU1LO0lBQzNDLFVBMURYTixPQXlEV0UsUUFBUXVDLFFBQVFDLGdCQUFnQkMsTUFBSzFDO29DQUFNSyxRQXpDdERGO0dBMENnRjtZQUdoRmtFLFlBQVlyRSxNQUFLZ0M7SUFBUSxPQUp6QjVCO3lCQUlZSixlQUFvQ1EsR0FBSyxPQWhDckRpRCxhQWdDZ0RqRCxHQUEvQndCLE9BQXdEO0dBQUM7WUFDMUVzQyxVQUFVdEUsTUFBTXVFO0lBQU8sT0FMdkJuRTs7Ozs7YUFLVUo7c0JBQW9DUSxHQUFLLE9BQTVCLFdBMUN2QnlDLGVBMEM4Q3pDLEdBQTlCK0QsTUFBdUQ7R0FBQzs7OztPQXpFeEVoQztPQVBBL0M7T0FJQTZDO09BQ0FDO09BYUF2QztPQXlEQUs7T0F6Q0FEO09BQ0EyQztPQUhBNUI7T0FDQTJCO09BR0FFO09BRUFFO09BREFEO09BRUFFO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BUUFHO09BRkFGO09BUUFPO09BT0FHO09BZEFUO09BRUFFO09BQ0FDO09BQ0FDO09BQ0FDO09BMURBckU7T0FDQUM7T0FDQUM7T0E0RUF3RTtPQUNBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7R0NoRlU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBR1JFO0lBSFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR1JBOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dFa0JOOzs7Ozs7O0lBQUE7Ozs7Ozs7OztNOzs7Ozs7Ozs7Ozs7OztZQUVJQyxlQUFnQkMsU0FBU0MsS0FBS0MsT0FBTUMsS0FBSUM7SUFDMUMsR0FEa0JKO0tBSUE7TUFBVEssSUFKU0w7TUFJQSxNQUFBLDJCQUpvQkc7TUFDbENHLFlBR1Usc0JBQUxEOztTQUhMQyxZQURrQ0g7SUFNdEM7S0FBQTtPQU5nQ0Q7Ozs7O29FQUFBQTs7O0tBUzFCLE1BQUEsK0NBVHFCRDtLQU12Qk0sV0FDUSxzQkFQOEJIO0lBcUIxQyxjQXBCSUUsV0FLQUM7R0FlYTtZQU9mQyxVQUFXUCxLQUFLUSxXQUFXQyxNQUFNVixTQUFRVyxXQUFVQztJQUM5QyxjQUFBLFdBRG9DRCxXQUFVQzs7S0FFN0MsTUFBQTthQTlCTmI7ZUE0QmlDQztlQUF0QkM7ZUFBZ0JTOztvQ0FIRyxXQUdkRCxXQUFtQ0c7O0lBQzlDO0dBQ2lEO0dBRUs7SUFBM0RDOzs7Ozs7WUFDQUMsa0JBQWtCQyxHQURsQkYsWUFDa0JFLFlBQWU7WUFjakNDLGtCQUFtQlAsV0FBV1EsWUFBWUMsT0FBT0MsVUFBUUM7SUFDM0QsR0FENENGO1NBSW5DSCxJQUptQ0csVUFDeENHLE9BR1UsV0FBTE4sR0FKa0RLLE9BQVJEOztTQUMvQ0UsYUFFUSxXQUhvQkosWUFBMkJHLE9BQVJEO0lBTW5ELEdBTElFLE1BTUM7SUFsQks7S0FBTkMsTUFBTSxXQVdXYixXQUFzQ1c7S0FWdkRHLFNBQVMsV0FVUWQsV0FBOEJVO0tBVG5ELFFBTkVOOztLQVNZO01BRFBXO01BQ0RDLE9BQVEsNEJBSlZGO01BS0VHLEtBQVEsNEJBTlZKO0tBT0YsV0FIS0UsTUFDREMsTUFDQUM7O0lBR04sMEJBUklILFFBREFEO0dBbUJpRDtZQVNuREssUUFBUzFCLEtBQUtRLFdBQVdRLFlBQVlQLE1BQU1WLFNBQVNrQixPQUFNVSxJQUFHQztJQUN6RCxZQWxCSmIsa0JBaUJjUCxXQUFXUSxZQUEyQkMsT0FBTVUsSUFBR0M7a0NBRXBEOzRCQVRvQ0MsbUJBQUpDO0lBVWpCLE1BQUE7WUFuRXhCaEM7Y0FnRTJDQztjQUFsQ0M7Y0FBNEJTOztrQkFQSXFCLG1CQUFJRDs7R0FVb0I7WUFRakRFO0lBQWEvQixLQUFLUSxXQUFXUSxZQUFZUCxNQUFNVixTQUFTa0IsT0FBT0ssUUFBUUQ7SUFDbkYsWUE3QkpOLGtCQTRCa0NQLFdBQVdRLFlBQTJCQyxPQUFPSyxRQUFRRDtrQ0FFOUU7NEJBUjRDRixvQkFBUkQ7SUFTaEIsTUFBQTtZQTlFN0JwQjtjQTJFK0RDO2NBQWxDQztjQUE0QlM7OztnQ0FOWlM7b0NBQVFDOztHQVMwQjs7O1VBbEQvRVosV0FvQ0FtQixTQVdnQkssYUExQ2hCbEI7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0MzRE07OztJQVNKbUI7Ozs7OztJQVRBQztJQVVBQyxrQkFEQUY7WUFFQUcsSUFBSUMsS0FESkYsaUJBQ0lFLGNBQXdCO1lBQzVCQyxhQUZBSCxpQkFEQUYsaUJBRzhCO0dBSzFCLElBQUpNO1lBRUFDLGVBRkFELE9BRWtCLDJCQUZsQkEsZ0JBRTRCO1lBbUM1QkUsUUFBUUMsSUFBR0MsSUFBSyxnQ0FBUkQsT0FBR0MsT0FBc0M7WUFJakRDLG9CQUFvQkw7SUFDdEIsSUFBSUYsTUFEa0JFLE1BRWxCTSxNQUFKLDhCQURJUixNQUVTUztJQUNYO1NBRFdBLGFBRFRELEtBT0c7S0FIQSxHQUFBLDhCQUxIUixLQUVTUztNQUlKO2NBQUs7bUNBTlZULEtBRVNTLFlBRFRELE1BQ1NDO0tBS0osSUFMSUMsTUFBQUQ7S0FBQUEsSUFBQUM7O0dBUVA7WUFHSkMsZUFBZVQsR0FBRVU7SUFBWTtZQUFkVjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFFVTtZQUFGVjtHQUFrQztPQVEvQyxJQUFBLE1BQUEsc0NBREZXOzs7O1FBQUFBOztHQUlKO0lBTEVDLHNCQUNFRDtJQVVGRSxrQkFBcUQ7WUFFckRDLGVBQWdCQztJQUNsQjtLQUFJLFVBQUEsOEJBSEZGLGlCQUVnQkU7S0FDZDs7OzsyQkFDVzs7O0dBQUU7WUFHZkMsV0FBWUQ7SUFBbUIsVUFML0JELGVBS1lDO0lBQW1CLE9BQUE7R0FBeUI7T0FNaEQscUNBQ1IsSUFBQSxTQUxBRTs7OztRQUFBQTs7WUFVQUMsZ0JBQWMsT0FWZEQsb0NBVXNEO1lBRXZDRTtJQUNHQyxNQUNBQyxNQUNBQyxVQUNBQyxnQkFDQUMsTUFDQUMsVUFDQUMsUUFDRGhCO0lBRW5CLGVBWkVRLGFBYVc7UUFFUEgsVUFqSEZuQixnQkFjQStCLEtBUEEzQjtPQU9BMkI7S0FBOEI7TUFBQSxNQUFBLDRCQUE5QkE7Z0JBQVc7OztJQXhCWGhDO0lBNkhBO0tBREVpQzs7UUE1SEZqQztRQWdIZ0IwQjtRQUVBRTtRQUhBSDtRQUVBRTtRQUVBRTtRQUNBQztRQUNBQztRQUNEaEI7O0tBbUJtQixVQWJoQ2tCLE9BakNKZCxlQWdDSUM7SUFjZ0MsT0FBQSw4QkFoRHBDRixpQkFrQ0lFO0dBY2tFO1lBR3ZEYyxpQkFDR1Qsc0NBT0RVO0lBRW5CLGVBMUNFWixhQTJDVztJQXRJVGxCLFdBNEhnQm9CLE1BNUhoQnBCO0lBeUlGLElBRUcsV0FSYzhCLE9BU2QsVUExSUQ3QixZQTBJQztVQUVBOEI7U0FBQUMseUJBQUFEO0tBNUlEOUI7S0E4SUMsTUFBQSw0QkFGQStCOztHQUVTOzs7O1dBdEpWbkMsS0FDQUU7V0E0REFVLGdCQWxCQVAsU0FJQUc7T0FvQkZPO09Ba0JBSTtPQWNlRztPQThCQVU7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0MxSVA7Ozs7O0lBQVJJLFFBQVE7WUFDUkMsS0FBS0MsR0FDUCxPQURPQSxLQURMRixRQUFBQSxRQUNLRSxFQUlKOztJQUVEQzs7WUFJQUMsVUFBVUYsR0FBSSxPQUFKQSxFQUFLO1lBQ2ZHLGNBQWNIO0lBQUksaUNBQUpBLFdBQXVDLE9BWHJERCxLQVdjQztJQUFJLE1BQUE7R0FBeUM7T0FHM0RJO1lBQ0FDLFdBQVdMLEdBQUksT0FmZkQsS0Flb0IsOEJBQVRDLElBQTRCO1lBRXZDTSxPQUFPTixHQUFJLE9BakJYRCxLQWlCZ0IsNkJBQVRDLElBQTBCO1lBRWpDTyxNQUFNUCxHQUFJLE9BbkJWRCxLQW1CZSw2QkFBVEMsSUFBeUI7WUFFL0JRLFNBQVNELE9BQU9FLEtBQUtDO0lBQU0sT0FyQjNCWCxLQXFCZ0MsNkJBQXZCUSxPQUFPRSxLQUFLQztHQUEwQzs7OztPQWYvRFQ7O09BSUFDO09BQ0FDO09BWEFKO09BY0FLO09BQ0FDO09BRUFDO09BRUFDO09BRUFDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUN1U0FHO0lBcUZGQztJQUFBQztJQWFFQztJQTZCRUM7Ozs7Ozs7Ozs7Ozs7O0lDeGFFQztJQUFBQztJQUFBQztJQUFBQztJQXFYUkM7SUFyWFFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBcVhSQzs7Ozs7Ozs7Ozs7O1lEOVhJQyxVQUFVQyxLQUFJQztJQUNoQixPQUFBOztzQkFBcUJDO2NBQWM7O2lCQUFBOzs7OztxQ0FBaUJDO3NCQUFBLE9BQUEsV0NROUNaLFdEUjhDWTtxQkFBaUI7OzttQkFEekRIO21CQUNTRTtjQUFjLE9BQUE7YUFBeUM7YUFENUREO0dBQ2lFO1lBRy9FRyxhQUFhWixPQUFNYSxHQUFFQztJQUN2QixHQURxQkQ7UUFBRUMsT0FJUkMsSUFKUUQsTUFJaEJFLElBSmNILE1BSUQsT0FBQSxXQUpMYixPQUlSZ0IsR0FBUUQ7O2NBSlFELEdBR1A7SUFEaUI7R0FFSjtHQVU3QixTQUFBRyxVQUFBQyxPQUFBQyxPQUFBQztJQUFxQyxPQUFyQ0QsVUFBQUM7Ozs7d0JBQXdCQyxPQUFBQztnQkFBQTtpQkFBQUMsUUFBQUY7aUJBQUFHLFFBQUFIO2lCQUFBSSxRQUFBSDtpQkFBQUksUUFBQUo7aUJBQUFLLElBQUEsc0JBQUFILE9BQUFFOzZCQUFBQyxJQUFTLFdBQWpDVCxPQUF3QkssT0FBQUUsU0FBQUU7ZUFBVztlQUFuQ1I7ZUFBQUM7R0FBeUM7WUFBekNRLFlBQUtDO0lBQUw7S0FBY0M7S0FBQUM7T0FBQTs7OztXQUFVQztXQUFBQztXQUFBQyxpQ0FBQUQ7V0FBQUUsc0JBQW5CTixVQUFtQkc7eUJBQUFFLGNBQUFDOztTQUFWTDtLQUFkTSxnQ0FBY0w7SUFBZCxXQUFBSztHQUFzRTtZQW9CbEVDLE9BQU83QixLQUFLOEIsSUFBR0M7SUFDSjtLQUFUQztPQUFTOztTQURJRDs7VUFDZSxJQUFjRSxlQUFSQztVQUFrQixPQUFBLDRCQUFsQkEsSUFBUUQ7U0FBK0I7T0FBekVEO0tBSnlCO01BQVhHLE9BSWRIO2dCQUFBQTtNQUpJSTtNQUFMQztNQUEwQixnQkFBMUJBLFlBQUtEO01BVktFO01BQUtDLFdBVWZGO01BVnlCRyxhQVVwQko7Y0FBVUQ7OztnQ0FUSiwwQkFEREc7Ozs7T0FFT0c7O09BQVZDO09BQUxDO01BQ1UsR0FBQSw0QkFIR0osVUFFYkk7T0FHSSxLQUFBLFdBUUtiLElBYmNVLFlBRWxCRTt1Q0FBTEM7OztlQUFlRjs7O09BSU4sb0JBSlRFLFlBQUtELGVBRkdKO09BQUFBO09BQUtDLFdBRWJJO09BRnVCSCxhQUVsQkU7ZUFBVUQ7Ozs7OztnQ0FjZEcsdUJBQVUsV0FBVkE7UUFDTTFDO0lBQ1YsT0FBQSxXQTNDRkgsVUFzQ1NDLFdBSUdFO0dBQ3VFO1lBR2pGMkMsT0FBT0MsR0FBSSxPQUFKQSxLQUFZO1lBQ25CQyxJQUFJRCxHQUFHRTtJQUFJO1lBQVc7O2NBQWxCRjs7ZUFBdUMsSUFBU0csY0FBSEM7ZUFBUyxXQUFUQSxHQUFZLFdBQXRERixHQUE2Q0M7Y0FBYTtHQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQW1CbkVFLE9BQU9MLEdBQUksT0FBSkEsRUFBSztZQUNaTSxPQUFPTixHQUFJLE9BQUpBLEVBQUs7WUFDWk8sWUFBVVA7SUFBSSxXQUFBLG1CQUFKQTtJQUFJLE9BQUE7R0FBNkI7WUFDM0NRLFlBQVVwRDtJQUFJLE9BQUEsdUJBQUEsc0JBQUpBO0dBQXFDO1lBQy9DcUQsS0FBS0MsR0FBSSxPQUFPLG1CQUFBLFdDN0RkNUQsYUQ2REc0RCxJQUE2QjtZQUNsQ0MsTUFBSWpELEdBQUksT0FBTyxtQkFBQSx5QkFBWEEsSUFBNEI7WUFDaENrRCxLQUFLbEQsR0FBRUQ7SUFBSSxJQUFzQixPQUFBLHNCQUExQkEsSUFBWSxPQUFBLHNCQUFkQztJQUFhLE9BQUEsbUJBQUE7R0FBMkI7WUFDN0NtRCxLQUFLQztJQUFrQyxXQUFBLDBCQUFsQ0E7SUFBVyxPQUFBLG1CQUFBO0dBQWlEO1lBQ2pFQyxZQUFZM0QsR0FBRTBEO0lBQWdCLFdBQUEsc0JBRDlCRCxLQUNjQztJQUFXLE9BQUEsbUJBQUEsc0JBQWIxRDtHQUFxQztZQVdyRDRELFlBQUtDO0lBQUw7O09BQ0U7UUFBQUM7UUFBQUM7UUFBQUMsV0FBQSxXQzdFSXhFLGFENkVKdUU7UUFBQUUsV0FBQSxXQURHSixVQUNIQztPQUFBLHdCQUFBRSxjQUFBQzs7T0FDQTtRQUFBQztRQUFBQztRQUFBQyxXQUFBLFdDOUVJNUUsYUQ4RUoyRTtRQUFBRSxXQUFBLHNCQUZHUixVQUVISztPQUFBLHdCQUFBRSxjQUFBQzs7T0FDQTtRQUFBQztRQUFBQyxXQUFBLHNCQUhHVixVQUdIUztPQUFBLHdCQUFBQzs7T0FDQTtRQUFBQztRQUFBQztVQUFBOzs7O2NBQWFDO2NBQUFDO2NBQUFDLGlDQUFBRDtjQUFBRSxzQkFKVmhCLFVBSVVhOzRCQUFBRSxjQUFBQzs7WUFBYkw7T0FBQSx3QkFBQUM7O09BQ0E7UUFBQUs7UUFBQUM7VUFBQTs7OztjQUFjQztjQUFBQztjQUFBQyxpQ0FBQUQ7Y0FBQUUsaUNBTFh0QixVQUtXbUI7NEJBQUFFLGNBQUFDOztZQUFkTDtPQUFBLHdCQUFBQzs7T0FFQTtRQUFBSztRQUFBQyxXQTFFRm5FLGtDQW1FSzJDLFdBT0h1QjtPQUFBLHdCQUFBQzs7T0FPQTtRQUFBQztRQUFBQztRQUFBQyxXQUFBLFdBZEczQixVQWNIMEI7UUFBQUUsV0FBQSxzQkFkRzVCLFVBY0h5QjtPQUFBLHdCQUFBRSxjQUFBQzs7T0FDQTtRQUFBQztRQUFBQztRQUFBQyxXQUFBLHNCQUFBRDtRQUFBRSxXQUFBLHNCQWZHaEMsVUFlSDZCO09BQUEsd0JBQUFFLGNBQUFDOztPQUNBLElBQUFDLHFCQUFBQyxXQUFBLHNCQUFBRDtPQUFBLHdCQUFBQzs7R0FDd0I7WUFqQjFCQyxVQUFBeEYsT0FBQXlGLE9BQUFDO0lBQUEsR0FBQUQsVUFBQUMsT0FBQTs7Ozs7Ozs7Ozs7OztpQkFBQUQ7O2lCQUNFRSxRQURGRjtzQkFBQUMsVUFDRTthQUFjO2NBQWRFLFFBREZGO2NBQ0VHLFFBREZIO2NBQ0VJLFFBREZMO2NBQ2dCaEYsSUFBQSxXQzdFVnRCLFNENkVKd0csT0FBQUU7MEJBQWNwRixJQUFTLFdBRHpCVCxPQUNFOEYsT0FBQUYsU0FBY25GOztpQkFDZHNGLFFBRkZOLFVBRUVPLFFBRkZQO29CQUFBQzs7OztnQkFFWTtpQkFBVk8sUUFGRlA7aUJBRUVRLFFBRkZSO2lCQUVZUyxNQUFBLFdDOUVOaEgsU0Q4RUo2RyxPQUFBRTs2QkFBVUM7MEJBQVk7O29DQUFIQyxPQUFBQzs0QkFBQSxPQUFBLFdBRnJCckcsT0FFcUJvRyxPQUFBQzsyQkFBRTsyQkFBckJOOzJCQUFBRTswQkFBVUU7d0JBQVY7OztpQkFDQUcsUUFIRmI7b0JBQUFDOzs7Ozs7b0JBR0VhLFFBSEZiO2dCQUdnQixPQUFBOztrQ0FBSGMsT0FBQUM7MEJBQUEsT0FBQSxXQUhiekcsT0FHYXdHLE9BQUFDO3lCQUFFO3lCQUFiSDt5QkFBQUM7d0JBQUE7OztpQkFDQUcsUUFKRmpCO29CQUFBQzs7Ozs7Ozs7b0JBSUVpQixRQUpGakI7Z0JBSTRCLE9BQUE7O2tDQUFia0IsT0FBQUM7MEJBQUE7MkJBQUFDLFFBQUFGOzJCQUFBRyxRQUFBSDsyQkFBQUksUUFBQUg7MkJBQUFJLFFBQUFKOzJCQUFBcEcsSUFBQSxzQkFBQXNHLE9BQUFFO3VDQUFBeEcsSUFBUyxXQUp4QlQsT0FJZThHLE9BQUFFLFNBQUF2Rzt5QkFBVzt5QkFBeEJpRzt5QkFBQUM7d0JBQUE7OztpQkFDQU8sUUFMRnpCO29CQUFBQzs7Ozs7Ozs7OztvQkFLRXlCLFFBTEZ6QjtnQkFLa0MsT0FBQTs7a0NBQWxCMEIsT0FBQUM7MEJBQUE7MkJBQUFDLFFBQUFGOzJCQUFBRyxRQUFBSDsyQkFBQUksUUFBQUg7MkJBQUFJLFFBQUFKOzJCQUFBNUcsSUFBQSxzQkFBQThHLE9BQUFFO3VDQUFBaEg7b0NBQVk7OzhDQUFIaUgsT0FBQUM7c0NBQUEsT0FBQSxXQUx6QjNILE9BS3lCMEgsT0FBQUM7cUNBQUU7cUNBQVhMO3FDQUFBRTtvQ0FBQS9HO3lCQUFnQjt5QkFBOUJ5Rzt5QkFBQUM7d0JBQUE7OztpQkFFQVMsUUFQRm5DO29CQUFBQzs7Ozs7Ozs7Ozs7O29CQU9FbUMsUUFQRm5DO2dCQU84QixPQTFFOUIzRjtrQ0EwRW9CK0gsT0FBQUM7MEJBQUcsT0FBQTs7NENBQUhDLE9BQUFDO29DQUFBLE9BQUEsV0FQcEJqSSxPQU9vQmdJLE9BQUFDO21DQUFFO21DQUFGSDttQ0FBQUM7eUJBQVM7eUJBQTNCSDt5QkFBQUM7d0JBQUE7OztpQkFPQUssUUFkRnpDLFVBY0UwQyxRQWRGMUM7b0JBQUFDOzs7Ozs7Ozs7Ozs7OztnQkFjbUI7aUJBQWpCMEMsUUFkRjFDO2lCQWNFMkMsUUFkRjNDO2lCQWNtQjRDLE1BQUEsV0FkbkJ0SSxPQWNFbUksT0FBQUU7NkJBQWlCQzswQkFBUTs7b0NBQUhDLE9BQUFDOzRCQUFBLE9BQUEsV0FkeEJ4SSxPQWN3QnVJLE9BQUFDOzJCQUFFOzJCQUF4Qk47MkJBQUFFOzBCQUFpQkU7d0JBQWpCOzs7aUJBQ0FHLFFBZkZoRCxVQWVFaUQsUUFmRmpEO29CQUFBQzs7Ozs7Ozs7Ozs7Ozs7O2dCQWVlO2lCQUFiaUQsUUFmRmpEO2lCQWVFa0QsUUFmRmxEO2lCQWVlbUQsTUFBQSxzQkFBYkgsT0FBQUU7NkJBQWFDOzBCQUFTOztvQ0FBSEMsT0FBQUM7NEJBQUEsT0FBQSxXQWZyQi9JLE9BZXFCOEksT0FBQUM7MkJBQUU7MkJBQXJCTjsyQkFBQUU7MEJBQWFFO3dCQUFiOzs7O2lCQUNBRyxRQWhCRnZEO29CQUFBQzs7Ozs7Ozs7Ozs7Ozs7O2dCQWVFOztvQkFDQXVELFFBaEJGdkQ7Z0JBZ0JXLE9BQUEsc0JBQVRzRCxPQUFBQzs7O1VBRkE7O1NBUEE7O1FBRkE7O09BREE7O01BREE7O0tBREE7O0lBREE7R0FnQndCO1lBRXRCQyxNQUFJcEosR0FBR3dDO0lBQ1QsT0FETXhDOztXQUVTcUosTUFGVHJKLE1BRU1nRCxJQUZOaEQsTUFFZSxXQUFUZ0QsR0FBc0IsV0FGekJSLEdBRU02Rzs7V0FDSnBILEtBSExqQyxNQUdFTixJQUhGTTtPQUdZLFdBQVZOLEdBQW1CLDBCQUFoQnVDLElBSEZPOztXQUlEYixPQUpGM0IsTUFJUSxXQUFNLDBCQUFaMkIsTUFKQ2E7O1dBS0FZLElBTEhwRDtPQUtRO2VBQU87O2lCQUFab0Q7O2tCQUEyQixJQUFTcEQsY0FBSE47a0JBQVMsV0FBVEEsR0FBWSxXQUw3QzhDLEdBS29DeEM7aUJBQWE7O1dBQ2hEc0osTUFOSnRKO09BTVM7ZUFBUTs7aUJBQWJzSjs7a0JBQTRCLElBQVNySCxlQUFIdkM7a0JBQVUsV0FBVkEsR0FBYSwwQkFBVnVDLElBTnRDTztpQkFNK0Q7O1dBQ3pERixJQVBUdEM7T0FPYyxXQWhFbEJ1QyxJQWdFYUQsa0JBQUssT0FBQSx1QkFQWEU7O09BUWlDLElBQXhCK0csTUFSWnZKLE1BUVN3SixNQVJUeEosTUFRb0MsT0FBQSwwQkFBeEJ1SixLQVJUL0c7T0FRZSxXQUFhLFdBUjVCQSxHQVFNZ0g7O1dBQ0RDLE1BVFJ6SixNQVNLMEosTUFUTDFKO09BU2MsV0FBVDBKLEtBQXFCLDBCQUFsQkQsS0FUTGpIO21CQVVIQyxJQVZBekMsTUFVSyxXQUFMeUM7O0dBQVU7WUFHZGtILFlBQVVySDtJQUFtQixXQWhDakNnQiw0QkFnQ3NELFdBQVUsR0FBbERoQjtJQUFtQixPQUFBO0dBQW1DO1lBUWhFc0g7SUFBZTs7V0FDd0I1SixjQUFIZ0Q7T0FDTixPQXJEOUJLLDhCQUpBTixLQXdEb0NDLFFBQUdoRDs7V0FFOUJvRCxjQUFIeUcsMkJBdkROMUcsS0F1RFNDO09BQWdDLE9BdER6Q0MsMEJBSkFOLEtBMERNOEc7O1dBQ0FQLGdCQUFnQyxPQXZEdENqRywyQkFEQUYsS0F3RE1tRzs7V0FDQ0M7T0FHTCxPQTNERmxHOzs7aUJBREFGO21CQTREZ0I7O3FCQUhUb0c7O3NCQUd3QixJQUFTakgsY0FBSDVDO3NCQUFTLE9BN0Q5Q3dELEtBNkQwRCxtQkFBckJ4RCxJQUFHNEM7cUJBQXNDOzs7V0FDdEVtSDtPQUdOLE9BL0RGcEc7OztpQkFEQUY7bUJBaUVNOztxQkFKRXNHOztzQkFJYSxJQUFTckcsY0FBSDFELGNBQXVDLE9BakVsRXlELEtBaUU4QkM7c0JBQW9DLE9BbEVsRUYsS0FrRWdELG1CQUFyQnhEO3FCQUF1RDs7O1dBNUYzRW9LO09BaUdMLE9BckVGekc7OztpQkFEQUY7bUJBdUVNOztxQkFsR0MyRzs7c0JBa0d3QyxJQUFTL0osY0FBSHNKO3lCQUFHdEo7MkJBbEVuREMsSUFrRW1ERCxhQXRFeERzRCwwQkFJS3JEOztrQ0FKTHFEO3NCQXVFdUMsT0F6RXZDSCxLQXlFcUIsbUJBRGdDbUc7cUJBQ0k7OztXQUV6Q1UsZ0JBQUhWO09BQTBDLE9BekV2RGhHLGlDQXlFYWdHLFNBMUVibEcsS0EwRWdCNEc7O1dBQ0pDLGdCQUFIckoseUJBM0VUd0MsS0EyRVk2RztPQUFtQyxPQTFFL0MzRyw2QkFIQUosTUE2RVN0Qzs7V0FDTDBGLGdCQUE4QixPQTNFbENoRCx5QkFIQUosTUE4RUlvRDs7R0FBOEM7WUFvRGxENEQscUJBQXFCakssY0FBSyxPQUFMQTtZQVluQmtLLFlBQW9CbEs7SUFDdEIsT0FEc0JBOztXQUlQcUosTUFKT3JKLE1BSWMsT0E1RnBDNEosaUJBNEZlUDs7V0FEUUcsTUFIRHhKLFNBR08sT0FBTndKO21CQURkVyxNQUZhbkssTUFFUixPQUFMbUs7O0dBRTJDO1lBR2xEQyxRQUFnQnBLLEdBQVVEO0lBQ0MsV0FSM0JtSyxZQU8wQm5LO2lCQUM1QixzQkFSRW1LLFlBT2dCbEs7R0FDNEI7WUFHNUNxSyxPQUFPckssR0FBSSxXQVhYa0ssWUFXT2xLLElBQXdCO1lBRS9Cc0ssU0FBT3RLO0lBQ1QsSUFBSXFKLE1BM0hKRCxNQTBIU3BKLEdBYlBrSyxjQWVFSyxPQS9HSlosWUE4R0lOO0lBRUosT0FGSUE7O09BU0YsZUFSRWtCLE1BdkdKWCxhQXNHSVA7O09BSVEsZUFIUmtCLE1BdkdKWCxhQXNHSVA7O1dBR3FDakcsSUFIckNpRyxRQUcwQyxXQUFMakc7O09BV3ZDLGVBYkVtSCxNQXZHSlgsYUFzR0lQOztPQW9DRixlQW5DRWtCLE1BdkdKWCxhQXNHSVA7ZUFzQ0YsZUFyQ0VrQixNQXZHSlgsYUFzR0lQOztHQXNDd0M7WUFHMUNtQixNQUFJeEssR0FBSSxPQTFDUnNLLGFBMENJdEssSUFBa0I7WUFDdEJ5SyxNQUFNQyxLQUFJdEgsR0FBSSxPQTNDZGtILGFBMkNNSSxLQUFJdEgsSUFBaUM7WUFDM0N1SCxRQUFRQyxLQUFJeEgsR0FBSSxPQTVDaEJrSCxhQTRDUU0sS0FBSXhILElBQTZCO1lBRXpDeUgsaUJBQWtCN0s7SUFDcEIsU0FEb0JBLFVBRUF1SyxPQUZBdkssU0FFWSxXQUFadUs7UUFDTG5ILElBSEtwRDtJQUdBLGNBQTRDQSxHQUFLLFdBQUxBLEdBQWE7SUFBbEI7SUFBdkMsV0FwT3BCdUMsSUFvT2VhLGtCQUE0QyxPQUFBO0dBQXVCO0dBSXpFO1lBS1AwSCxTQUFTOUgsR0FBRWhELEdBQUksT0ExRGZzSyxhQTBEU3RILEdBQUVoRCxJQUFpQztZQUM1QytLLFNBQVMvSCxHQUFFSSxHQUFJLE9BM0Rma0gsYUEyRFN0SCxHQUFFSSxJQUE2QjtZQUN4QzRILE1BQU01SCxHQUFJLE9BNURWa0gsYUE0RE1sSCxJQUF5QjtZQUUvQjZILGFBQWF6TCxLQUFJNEQ7SUFDbkIsT0EvREVrSDs7Y0E1TEZqSjtnQkEwUGU3Qjs7aUIsT0E1UmpCSSxhQXdOSXdLOztnQkFvRWlCaEg7R0FDaUU7WUFHbEY4SCxNQUFJbEwsR0FBSSxPQWxFUnNLLGFBa0VJdEssSUFBdUI7WUFDM0JtTCxRQUFNbkwsR0FBRW9ELEdBQUksT0FuRVprSCxhQW1FTXRLLEdBQUVvRCxJQUFvQztZQUM1Q2dJLFVBQVE5SSxHQUFFYyxHQUFJLE9BcEVka0gsYUFvRVFoSSxHQUFFYyxJQUFnQztZQUMxQ2lJLE9BQU9yTCxHQUFJLE9BQUpBLEVBQUs7WUFDWnNMLE9BQU9sSSxHQUFJLE9BdEVYa0gsYUFzRU9sSCxJQUEwQjtZQUNqQ21JLFFBQVFuSSxHQUFJLE9BdkVaa0gsYUF1RVFsSCxJQUEyQjtZQUNuQ29JLFNBQU9DLEdBQUksV0FyRlh2QixZQXFGT3VCLElBQWdDO0dBcEdUOzs7T0FHaEN4QjtXQW1FRU8sT0FFQUcsU0FEQUYsT0E3Q0FKLFFBZ0RBUTs7O1FBWUFDO1FBQ0FDO1FBQ0FDO1FBRUFDO1FBSUFDO1FBRUFFO1FBREFEO1FBRUFFO1FBQ0FDO1FBQ0FDO1FBQ0FDO1lBMENORSxXQWxDRUMsT0FBQUM7SUFBQSxHQUFBRCxVQUFBQyxPQUFBO1FBQVVDLFFBQVZELFVBQVVFLFFBQVZIO0lBQW9CLE9BN050QmpHO3NCQTZObUJxRyxPQUFBQyxPQUFBLE9Ba0NuQk4sV0FsQ21CSyxPQUFBQyxPQUFFO2FBQVRGO2FBQUFEO0dBQWdFOztrREFBMUV0Tjs7WUFrQ0YwTjtJQWxDRSxJQUFVQyxxQkFBQUMsV0E3Tlo3SSxZQStQQTJJLFlBbENZQztJQUFBLHdCQUFBQztHQUFnRTtZQUV0RUMsU0FBU3BNLEdBQUVELEdBQUksYUFnQ3JCMkwsV0FoQ2UxTCxHQUFFRCxXQUFzQjtZQUlqQ3NNLE1BQUlyTSxHQUFJLGVBQUpBLElBQXlDO1lBQzdDc00sUUFBTUMsR0FBRXRLLElBQUssZUFBUHNLLEdBQUV0SyxLQUF3RDtZQUNoRXVLLFVBQVFDLEdBQUV4SyxJQUFLLGVBQVB3SyxHQUFFeEssS0FBb0Q7WUFROUR5SztJQUFtQixJQUVmQzthQUFBQSxPQUFNLFdBL01aaEQsWUErTU1nRDtRQURjQyxNQUNkRDtJQURzQixXQUFSQztHQUNzQztZQUd4REMsU0FBT3ZLLEdBQUksT0FBSkEsRUFBSztZQUVSd0s7SUFBWSxJQUNackI7SUFBcUIsT0E3TTNCN0IsYUFyQkFSLE1Ba09NcUMsR0FEQXFCO0dBQ21FO1lBWXpFQyxZQUFVdEIsR0FBSSxPQWJScUIsWUFhSXJCLEdBQW9CO1lBRzVCdUIsV0FBU2hLLEdBQUVoRCxHQUFJLGVBQU5nRCxHQUFFaEQsSUFBOEI7WUFDekNpTixXQUFTakssR0FBRWYsSUFBSyxlQUFQZSxHQUFFZixLQUE0QjtZQUN2Q2lMLFFBQU1qTCxJQUFLLGVBQUxBLEtBQXdCO1lBQzlCa0wsZUFBYTNOLEtBQUl5QztJQUFLOzthQXRUeEJaO2VBc1RlN0I7O2dCLE9BeFZqQkksYUFnVEl3TTs7ZUF3Q2lCbks7R0FBNkI7WUFDOUNtTCxNQUFJek0sR0FBSSxlQUFKQSxJQUFvQjtZQUN4QjBNLFVBQVFaLEdBQUV4SyxJQUFLLE9BcENmdUssVUFvQ1FDLEdBQUV4SyxJQUFzQjtZQUNoQ3FMLFFBQU1mLEdBQUV0SyxJQUFLLE9BdENicUssUUFzQ01DLEdBQUV0SyxJQUFvQjtZQUM1QnNMLFNBQU92TixHQUFJLE9BQUpBLEVBQUs7WUFDWndOLFNBQU92TCxJQUFLLGVBQUxBLEtBQXlCO1lBQ2hDd0wsVUFBUXhMLElBQUssZUFBTEEsS0FBMEI7WUFDbEN5TCxTQUFPQyxLQUFNLE9BQU5BLElBQVM7R0FYTjs7O09BQ1ZYO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO1lBR0ZFLGNBQWN0TDtJQUF1QixXQWxCekMySixXQWtCa0IzSjtJQUF1QixPQUFBO0dBQWE7R0FxQnREO0lDbFhNdUw7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFxWFJDO0lBclhRQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQXFYUkM7SURIRUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFFSXBDOzs7Ozs7WUFzRUFxQyxTQXhDU3RQLEtBQUl1UDtJQUNiLElBQUlDLE1BL0JKdkM7SUFBQUEsV0ErQkl1QztJQUNVO0tBQVZDO09BQVU7O1NBRkRGOztVQUVtQixJQUFhek0sY0FBSjRNLGVBQUhsUDtVQUFhLFdBQWJBLE9BQUdrUCxJQUFJNU07U0FBaUI7SUFDOUQsV0FGSTBNLEtBREt4UCxLQUVMeVA7R0FDaUI7WUFLbkJFLE9BQU9DLEdBQUV4RTtJQUNMLFlBQUEsOEJBREd3RSxNQzFaUG5CLFFEMFpTckQ7O0tBSVQsT0FBQTtjQXZhSnJMO2dCQW1hVzZQOzs7Ozs7bUNBTUpDO29CQUFBLE9BQUEsV0NoYUhyQixhRGdhR3FCO21CQUEyRDs7O2NBTnJEekU7O1FBRUowRTtJQUFVLE9BQVZBO0dBTUQ7WUFNTkMsUUFBQUMsT0FBQUM7SUFBQSxJQUFBQyxVQUFBRixPQUFBRyxVQUFBRjtJQUFBO1FBQUFDLFlBQUFDLFNBQUE7Ozs7Ozs7Ozs7Ozs7a0JBQUFEOztrQkFDRUUsUUFERkY7dUJBQUFDLFlBQ0U7Y0FBYztlQURoQkUsUUFBQUY7ZUFDRUcsUUFERkg7ZUFBQUksUUFBQUw7ZUFDZ0IsT0FBQSxXQ3BEdEJwUSxTRG9EUXNRLE9BQUFFO2NBQWMsV0FBQTtjQURoQkosVUFBQUs7Y0FBQUosVUFBQUU7OztrQkFFRUcsUUFGRk4sWUFFRU8sUUFGRlA7cUJBQUFDOzs7O2lCQUVZO2tCQUFWTyxRQUZGUDtrQkFFRVEsUUFGRlI7a0JBRVksT0FBQSxXQ3JEbEJyUSxTRHFEUTJRLE9BQUFFO2lCQUFVOzs7cUNBQVNDLE9BQUFDLE9BQUEsT0FGckJkLFFBRXFCYSxPQUFBQyxPQUFDOzRCQUFwQkw7NEJBQUFFOzt5QkFBQTs7O2tCQUNBSSxRQUhGWjtxQkFBQUM7Ozs7OztxQkFHRVksUUFIRlo7aUJBRzJCLE9BQUE7O21DQUFaYSxPQUFBQzsyQkFBQTs0QkFBQUMsUUFBQUY7NEJBQUFHLFFBQUFIOzRCQUFBSSxRQUFBSDs0QkFBQUksUUFBQUo7NEJBQUEsT0FBQSxzQkFBQUUsT0FBQUU7MkJBQUEsY0FIZnRCLFFBR2VtQixPQUFBRTswQkFBVTswQkFBdkJOOzBCQUFBQzt5QkFBQTs7O2tCQUNBTyxRQUpGcEI7cUJBQUFDOzs7Ozs7OztxQkFJRW9CLFFBSkZwQjtpQkFJaUMsT0FBQTs7bUNBQWpCcUIsT0FBQUM7MkJBQUE7NEJBQUFDLFFBQUFGOzRCQUFBRyxRQUFBSDs0QkFBQUksUUFBQUg7NEJBQUFJLFFBQUFKOzRCQUFBLE9BQUEsc0JBQUFFLE9BQUFFOzJCQUFBO3FDQUFBOzsrQ0FBU0MsT0FBQUMsT0FBQSxPQUp6QmhDLFFBSXlCK0IsT0FBQUMsT0FBQztzQ0FBVkw7c0NBQUFFOzswQkFBZTswQkFBN0JOOzBCQUFBQzt5QkFBQTs7O2tCQUNBUyxRQUxGOUI7cUJBQUFDOzs7Ozs7Ozs7O3FCQUtFOEIsUUFMRjlCO2lCQUtlLE9BQUE7O21DQUFGK0IsT0FBQUMsT0FBQSxPQUxicEMsUUFLYW1DLE9BQUFDLE9BQUM7MEJBQVpIOzBCQUFBQzt5QkFBQTs7O2tCQUNBRyxRQU5GbEM7cUJBQUFDOzs7Ozs7Ozs7Ozs7aUJBTXFCO2tCQUFuQmtDLFFBTkZsQztrQkFNcUJtQyxRQUFuQkY7a0JBQW1CRyxRQUFuQkg7a0JBQW1CSSxRQUFuQkg7a0JBQW1CSSxRQUFuQko7a0JBQW1CLE9BQUEsV0N6RDNCN1MsT0R5RDJCK1MsT0FBQUU7aUJBQUE7MkJBQUE7O3FDQUFhQyxPQUFBQzs2QkFBRSxHQUFGRCxVQUFBQyxPQWhEdEM7NkNBZ0RzQ0Q7d0NBQUFDLG9DQUFBQTsrQkEvQ3ZCO2dDQURmQyxZQWdEc0NEO2dDQWhEdENFLFdBZ0RzQ0g7Z0NBL0N2QkksUUFEZkQ7Z0NBQ2VFLFFBRGZGO2dDQUNlRyxRQURmSjtnQ0FDZUssUUFEZkw7Z0NBQ2UsT0FBQSxzQkFBQUcsT0FBQUU7K0JBQUE7eUNBcFliN1M7bURBbWJvQzhTLE9BQUFDLE9BL0NkLE9BeUNwQnBELFFBTWtDbUQsT0FBQUMsT0EvQ1o7MENBQVhMOzBDQUFBRTs7Ozs0Q0ErQ3VCTCxvQ0FBQUE7OEJBOUN0QjsrQkFGaEJTLFlBZ0RzQ1Q7K0JBaER0Q1UsV0FnRHNDWDsrQkFBQVksUUFoRHRDRDsrQkFFZ0JFLFFBRmhCRjsrQkFnRHNDRyxRQWhEdENKOytCQUVnQkssUUFGaEJMOytCQUVnQixPQUFBLFdDWGxCNVQsT0RXa0IrVCxPQUFBRTs4QkFBQSxjQXdDWjFELFFBTWtDdUQsT0FBQUU7OzZCQWhEdEMsT0FBQSxtQkFnRHNDZCxPQUFBQzs0QkFBYTs0QkFBMUJMOzRCQUFBRTs7eUJBQW5COzs7a0JBQ0FrQixRQVBGeEQ7cUJBQUFDOzs7Ozs7Ozs7Ozs7OztpQkFPWTtrQkFBVndELFFBUEZ4RDtrQkFPWXlELFFBQVZGO2tCQUFVRyxRQUFWSDtrQkFBVUksUUFBVkg7a0JBQVVJLFFBQVZKO2tCQUFVLE9BQUEsV0MxRGxCblUsT0QwRGtCcVUsT0FBQUU7aUJBQUEsY0FBQSxXQzFEbEI5RSxTRDBEa0IyRSxPQUFBRTt5QkFBVjs7O2tCQUNBRSxRQVJGOUQsWUFRRStELFFBUkYvRDtxQkFBQUM7Ozs7Ozs7Ozs7Ozs7OztpQkFRZTtrQkFBYitELFFBUkYvRDtrQkFRRWdFLFFBUkZoRTtrQkFRZSxPQUFBLFdDM0RyQnhCLFNEMkRRc0YsT0FBQUU7aUJBQWE7OztxQ0FBUUMsT0FBQUMsT0FBQSxPQVJ2QnRFLFFBUXVCcUUsT0FBQUMsT0FBQzs0QkFBdEJMOzRCQUFBRTs7eUJBQUE7Ozs7a0JBQ0FJLFFBVEZwRSxZQVNFcUUsUUFURnJFLFlBU0VzRSxRQVRGdEU7cUJBQUFDOzs7Ozs7Ozs7Ozs7Ozs7aUJBUUU7OztrQkFDQXNFLFFBVEZ0RTtrQkFTRXVFLFFBVEZ2RTtrQkE3QkZ3RSxRQTZCRXhFOztvQkFTRXFFLFVBdENKRzs7O2tCQUNVLFdBQUEsV0ExQlp4RixTQStETXFGLFVBdENKRztrQkFDVTttQkFDQSxXQUFBLFdDeEJkblYsT0Q0RFFnVixVQXRDSkc7bUJBRVU7Ozs7O2tDQUNLQyxPQUFBQzswQkFBQTsyQkFBQUMsUUFBQUY7MkJBQUFHLFFBQUFIOzJCQUFBSSxRQUFBSDsyQkFBQUksUUFBQUo7MkJBQUEsT0FBQSxXQ3pCbkJsRyxTRHlCbUJvRyxPQUFBRTswQkFBQTsyQkFBUzs0QkFtQ1BDLFFBbkNGSjs0QkFBU0ssUUFBVEw7NEJBbUNFTSxRQW5DRko7NEJBQVNLLFFBQVRMOzRCQUFlOzhCQUFBOzt5Q0FBTk0sT0FBQUM7aUNBQUEsT0FBQSxXQ3pCNUJ0RyxTRHlCNEJxRyxPQUFBQztnQ0FBSztnQ0FBTEo7Z0NBQUFFOzJCQUFNLFNBbUNiLE9BVGZ0RixRQVNlbUYsT0FBQUU7Ozs7OzBCQW5DYTt5QkFBVTt5QkFtQ3BDWjt5QkF0Q0pHOzs7Ozs7Ozs7aUJBc0NtQjtrQkFBVSxXQUFBLFdDNURqQ2hHLFNENERRNEYsT0FBQUc7a0JBQXlCOzs7cUNBQVFjLE9BQUFDLE9BQUEsT0FUbkMxRixRQVNtQ3lGLE9BQUFDLE9BQUM7NEJBQWxDbkI7NEJBQUFHOzs7OztpQkFBeUI7OztXQUZ6Qjs7VUFEQTs7U0FEQTs7UUFEQTs7T0FEQTs7TUFEQTs7S0FEQTs7R0FTZ0M7Ozs7OztZQXZDL0JpQixZQTZCSEM7SUFBQTs7Y0FBQUE7O2NBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FBQSxPQUFBOzs7dUJBQUFBOzthQUFBLE9BQUE7OztzQkFBQUE7O1lBQUEsT0FBQTs7O3FCQUFBQTs7V0FBQSxPQUFBOzs7b0JBQUFBOztVQUFBLE9BQUE7OzttQkFBQUE7O1NBQUEsT0FBQTs7O2tCQUFBQTs7UUFBQSxPQUFBOzs7aUJBQUFBOztPQUFBLE9BQUE7OztnQkFBQUE7O01BQUEsT0FBQTs7O2VBQUFBOztnQkFBQUE7O01BQUEsT0FBQTs7O2VBQUFBOzs7TUFBQSxPQUFBOzs7ZUFBQUE7O01BQ0VDO2lDQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBQUE7a0JBQUFBOzs7O3FCQUFBQTtpQkFBQUE7aUJBQUFBO2lCQUFBQTtpQkFBQUE7aUJBQUFBO2lCQUFBQTtpQkFBQUE7aUJBQUFBOzs7aUJBQUFDO2FBQUEsR0FBQUE7eUJBQUFBOztlQUFBO2dCQUFBQztnQkFBQUMsV0FBQUY7Z0JBQUFHLFdBQUEsV0N6YUF2VyxhRHlhQXNXO2dCQUFBRSxXQTlCQ1AsWUE4QkRJO2VBQUEsV0FBQUUsVUFBQUM7OzthQUFBLE9BQUE7OztzQkFBQUw7c0JBREZEOztnQkFFRU87WUFBQSxHQUFBQTt3QkFBQUE7O2NBQUE7ZUFBQUM7ZUFBQUMsV0FBQUY7ZUFBQUcsV0FBQSxXQzFhQTVXLGFEMGFBMlc7ZUFBQUUsV0FBQSxzQkEvQkNaLGFBK0JEUztjQUFBLFdBQUFFLFVBQUFDOzs7WUFBQSxPQUFBOzs7cUJBREFWO3FCQURGRDs7ZUFNRVk7Y0FBQUEsbUJBQUFBO2dCQUFBQyxXQUFBRDs7O2FBQUEsU0FBQUM7eUJBQUFBOzs7O2dCQUFtQjtpQkFBQUM7aUJBQUFDO2lCQUFBQyxXQUFBLFdDOWFuQnZYLFdEOGFtQnNYO2lCQUFBRTttQkFBQTs7OEJBaER6QkM7c0JBQUE7O2dDQUFBQTs7eUJBQ0VDLFdBREZEOzsyQkFDRUM7OEJBQUFBOztnQ0FBQTtnQ0FDYzsrREFGaEI5WCxrQkFBQTZYOzhCQUNlOzZEQURmN1gsa0JBQUE2WDs7bUNBQUFBOzs7OzhCQUNFRSx5QkFBYUM7NkJBQUFBOzhCQUFBQTt1Q0FBYjs7K0JBQUFELG1CQUFBQTtpQ0FDY0UsV0FEZEY7Ozs4QkFDYyxTQUFBRTswQ0FBQUE7Ozs7aUNBQUE7a0NBQUFDO2tDQUFBQztrQ0FBQUMsV0FBQSxXQ2hZVmhZLFdEZ1lVK1g7a0NBQUFFLFdBV1QzQixZQVhTd0I7a0NBQUFJLGVBQUFGLFVBQUFDOzs7Ozs7K0JBQUFDO2lDQUFBO2dFQUZoQnRZLHFCQUVnQmlZOzt1REFBQUs7Ozs7OytCQUFBOztpQ0FGaEJ0WTtpQ0FDZWdZO2lDQURmSDs7OzhCQUNFRSxtQkFBQUE7Z0NBQWFRLFdBQWJSOzs7NkJBQWEsU0FBQVE7eUNBQUFBOzs7O2dDQUFBO2lDQUFBQztpQ0FBQUM7aUNBQUFDLFdBQUEsc0JBQUFEO2lDQUFBRSxXQUFBLHNCQVlSakMsYUFaUThCO2lDQUFBSSxlQUFBRixVQUFBQzs7Ozs7OzhCQUFBQztnQ0FBQTsrREFEZjVZLHFCQUNldVk7O3NEQUFBSzs7Ozs7OEJBQUE7O2dDQURmNVk7Z0NBQ2VnWTtnQ0FEZkg7Ozs7Ozs2QkFDRTs2REFERjdYLGtCQUFBNlg7Ozs7OzRCQUNFOzREQURGN1gsa0JBQUE2WDs7dUJBQUE7Ozs7O3dCQUFBLE9BQUE7K0RBQUE1WCxrQkFBQTRYOzs7O3FCQWdEeUJKO2lCQUFuQm9CLGVBQW1CbEIsVUFBQUM7Ozs7OztjQUFuQmlCO2dCQUFtQjs7OztrQkFBbkJyQjs7WUFBQSxXQUFBcUI7O1dBQUEsT0FBQTs7O29CQUxBakM7b0JBREZEOztjQVFFbUM7VUFBQSxHQUFBQTtzQkFBQUE7O1lBQUE7YUFBQUM7YUFBQUMsV0FBQUY7YUFBQUcsV0FBQSxXQ2hiQTVKLGFEZ2JBMko7YUFBQUUsV0FBQSxzQkFyQ0N4QyxhQXFDRHFDO1lBQUEsV0FBQUUsVUFBQUM7OztVQUFBLE9BQUE7OzttQkFQQXRDO21CQURGRDs7YUFHRXdDO1lBQUFBLG1CQUFBQTtVQUFBO1dBQUFDLFdBQUFEO1dBQUFFO2FBQUE7O3dCQUFhQztnQkFBRCxTQUFDQTs0QkFBQUE7Ozs7bUJBQUE7b0JBQUFDO29CQUFBQztvQkFBQUMsV0FBQSxzQkFBQUQ7b0JBQUFFLFdBaENaaEQsWUFnQ1k2QzttQkFBQSxXQUFBRSxVQUFBQzs7OztnQkFBQSxPQUFBOzs7O3lCQUFBSjtlQUFnQjtlQUE3QkY7VUFBQSxXQUFBQzs7U0FBQSxPQUFBOzs7a0JBRkF6QztrQkFERkQ7O1lBU0VnRDtRQUFBLEdBQUFBO29CQUFBQTs7OztXQXRDSjtZQXNDSUM7WUFBQUM7WUF0Q0pDLFdBc0NJSDtZQXRDSjs7OztlQXpCRnZKOzs7O2dCQ2xYTWhROzs7O2lCRDJZSjs7NEJBR2UyWjtvQkFBRCxTQUFDQTtnQ0FBQUE7Ozs7dUJBQUE7d0JBQUFDO3dCQUFBQzt3QkFBQUMsV0FBQSxXQzlZWDdLLGFEOFlXNEs7OztpQ0FBQUQ7b0NBQUFBOzs7OzJCQUFTOzRCQUFBRzs0QkFBQUM7NEJBQUFDLFdBQUEsc0JDOVlwQnpLLGFEOFlvQndLOzRCQUFBRSxXQUhuQjVELFlBR21CeUQ7NEJBQVRJLGVBQVNGLFVBQUFDOzs7Ozs7eUJBQVRDOzJCQUFTOzBEQUh4QnJhLHFCQUdlOFo7O3VCQUFBLFdBQUFFLFVBQUFLOzs7O29CQUFBLE9BQUE7MERBSGZyYSxxQkFHZTZaO21CQUErQjs7WUFtQzFDUztjQXRDSjs7Z0JBQUF0YTs7O2lCQUFBOzs7Z0JBS2lDOzs7aUJBTGpDOztrQkFHSXVRO2tCQURBelA7a0JBREF3UDtpQkFESixXQUNJQSxLQUNBeFAsS0FDQXlQO2dCQUU2QjtnQkFMakNxSjtZQXNDSVcsV0FBQSxXQ2piQXBMLGFEaWJBd0s7WUFBQWEsV0FBQSxzQkF0Q0NoRSxhQXNDRGtEO1dBQUEsV0FBQVksVUFBQUMsVUFBQUM7Ozs7UUFBQSxPQUFBOzs7aUJBUkE5RDtpQkFERkQ7O1dBS0VnRTtVQUFBQSxtQkFBQUE7UUFBQTtTQUFBQyxXQUFBRDtTQUFBRSxXQUFBLHNCQWxDQ25FLGFBa0NEa0U7UUFBQSxXQUFBQzs7T0FBQSxPQUFBOzs7Z0JBSkFqRTtnQkFERkQ7O1VBT0VtRTtTQUFBQSxtQkFBQUE7V0FBQUMsV0FBQUQ7OztRQUFBLFNBQUFDO29CQUFBQTs7OztXQUFVO1lBQUFDO1lBQUFDO1lBQUFDLFdBQUEsV0MvYVY5YSxXRCthVTZhO1lBQUFFLFdBQUEsV0MvYVZ2TCxhRCthVW9MO1lBQVZJLGVBQVVGLFVBQUFDOzs7Ozs7U0FBVkM7V0FBVTs7OzthQUFWTDs7T0FBQSxXQUFBSzs7TUFBQSxPQUFBOzs7ZUFOQXhFO2VBREZEOztTQUlFMEU7UUFBQUEsbUJBQUFBO01BQUE7T0FBQUMsV0FBQUQ7T0FBQUU7U0FBQTs7b0JBQWNDO1lBQUQsU0FBQ0E7d0JBQUFBOzs7O2VBQUE7Z0JBQUFDO2dCQUFBQztnQkFBQUMsV0FBQSxzQkFBQUQ7Z0JBQUFFLFdBQUEsc0JBakNibEYsYUFpQ2ErRTtlQUFBLFdBQUFFLFVBQUFDOzs7O1lBQUEsT0FBQTs7OztxQkFBQUo7V0FBcUI7V0FBbkNGO01BQUEsV0FBQUM7O0tBQUEsT0FBQTs7O2NBSEEzRTtjQURGRDs7SUFBQSxPQUFBOzs7YUFBQUE7R0FVa0M7b0RBVmxDeFc7Ozs7Ozs7Ozs7Ozs7Ozs7WUE3QkcwYjtJQTZCSDs7T0FDRTtRQUFBQztRQUFBQztRQUFBQyxXQUFBLFdDemFBdGIsYUR5YUFxYjtRQUFBRSxXQTlCQ0osWUE4QkRDO09BQUEsd0JBQUFFLGNBQUFDOztPQUNBO1FBQUFDO1FBQUFDO1FBQUFDLFdBQUEsV0MxYUExYixhRDBhQXliO1FBQUFFLFdBQUEsc0JBL0JDUixhQStCREs7T0FBQSx3QkFBQUUsY0FBQUM7O09BQ0E7UUFBQUM7UUFBQUM7VUFBQTs7OztjQUFhQztjQUFBQztjQUFBQyxpQ0FBQUQ7Y0FBQUUsV0FoQ1pkLFlBZ0NZVzs0QkFBQUUsY0FBQUM7O1lBQWJMO09BQUEsd0JBQUFDOztPQUNBO1FBQUFLO1FBQUFDO1VBQUE7Ozs7Y0FBY0M7Y0FBQUM7Y0FBQUMsaUNBQUFEO2NBQUFFLGlDQWpDYnBCLGFBaUNhaUI7NEJBQUFFLGNBQUFDOztZQUFkTDtPQUFBLHdCQUFBQzs7T0FDQTtRQUFBSztRQUFBQyxXQUFBLHNCQWxDQ3RCLGFBa0NEcUI7T0FBQSx3QkFBQUM7O09BQ0E7UUFBQUM7UUFBbUJDLFdBQW5CRDtRQUFtQkUsV0FBbkJGO1FBQW1CRyxzQkM5YW5CbGQsV0Q4YW1CaWQ7UUFBQUU7Ozs7YTs7ZUEvQ3ZCQztlQUFhQyxXQUFiRDtlQUFhRSxXQUFiRjtlQUFhRyxpQ0FBQUQ7ZUFBQUUsaUNBWVJoQyxhQVpRNkI7OzJDQUFBRSxjQUFBQzs7O2NBQWJDO2NBQ2NDLFdBRGREO2NBQ2NFLFdBRGRGO2NBQ2NHLHNCQ2hZVjVkLFdEZ1lVMmQ7Y0FBQUUsV0FXVHJDLFlBWFNrQzs7MENBQUFFLGNBQUFDOztZQThDU2I7UUFBbkJjLG1CQUFtQlosY0FBQUM7T0FBbkIsd0JBQUFXOztPQUNBO1FBQUFDO1FBQVVDLFdBQVZEO1FBQVVFLFdBQVZGO1FBQVVHLHNCQy9hVmxlLFdEK2FVaWU7UUFBQUUsc0JDL2FWM08sYUQrYVV3TztRQUFWSSxtQkFBVUYsY0FBQUM7T0FBVix3QkFBQUM7O09BQ0E7UUFBQUM7UUFBQUM7UUFBQUMsV0FBQSxXQ2hiQXRQLGFEZ2JBcVA7UUFBQUUsV0FBQSxzQkFyQ0NoRCxhQXFDRDZDO09BQUEsd0JBQUFFLGNBQUFDOztPQWxDQTtRQW1DQUM7UUFBQUM7UUFBQUM7UUFuQ0FDLGNBbUNBRDtRQXBDQUUsVUFvQ0FGO1FBckNBRyxVQXFDQUg7UUFuQ0FJO1VBQUE7Ozs7Y0FBV0M7Y0FBQUM7Y0FBQUMsc0JDOVlYalEsYUQ4WVdnUTtjQUFTRSxXQUFUSDtjQUFTSSxXQUFUSjtjQUFTSyxpQ0M5WXBCN1AsYUQ4WW9CNFA7Y0FBQUUsV0FIbkI5RCxZQUdtQjJEO2NBQVRJLG1CQUFTRixjQUFBQzs0QkFBVEosY0FBQUs7O1lBQVhYO1FBSEpZLGdDQUdJVDtRQURBVSxVQUFBLFdDN1lBemYsV0Q2WUE2ZTtRQUZKYSxrQ0FFSUQsZUFGSkQ7UUFDSUcsVUFBQSxXQTFCTjNQLGFBMEJNOE87UUFESmMsa0NBQ0lELGVBREpEO1FBc0NJRyxlQXRDSkQ7UUFzQ0lFLFdBQUEsV0NqYkE3USxhRGliQXlQO1FBQUFxQixXQUFBLHNCQXRDQ3ZFLGFBc0NEaUQ7T0FBQSx3QkFBQW9CLGNBQUFDLGNBQUFDOztHQUNnQztZQVZsQ0MsV0FBQUMsSUFBQUMsSUFBQSxXQUFBRCxJQUFBQyxJQVVrQztZQWdCbENDLFdBMUJBRixJQUFBQyxJQUFBLFdBQUFELElBQUFDLElBVWtDO1lBVmxDRSxTQUFBSCxJQUFBLFdBQUFBLElBVWtDO1lBVmxDSSxVQUFBSixJQUFBLFdBQUFBLElBVWtDO1lBVmxDSyxRQUFBTCxJQUFBLFdBQUFBLElBVWtDO1lBVmxDTSxRQUFBTixJQUFBQyxJQUFBLFdBQUFELElBQUFDLElBVWtDO1lBVmxDTSxRQUFBUCxJQUFBQyxJQUFBTyxJQUFBLFdBQUFSLElBQUFDLElBQUFPLElBVWtDO1lBWWxDQyxPQUFPN2YsR0FBRTRDLEdBQUksMEJBQU41QyxHQUFFNEMsSUFBa0I7WUFDM0JrZCxRQUFTaGdCLEtBQUk4QyxHQUFJLDBCQUFSOUMsS0FBSThDLElBQXFCO1lBQ2xDbWQsTUFBSWpnQixLQUFJOEMsR0FBSSxlQUFSOUMsS0FBSThDLElBQWdCO1lBQ3hCb2QsZUFBYWxnQixLQUFJeUMsSUFBSyxlQUFUekMsS0FBSXlDLEtBQTJCO1lBSzVDMGQsWUFBY0M7SUFDaEIsZ0JBQUlDLE9BQU1qVjtLQUNBLElBQU5rVjtjQUNBQyxRQUFRblY7TUFBTSxpQ0FEZGtWLFFBQ1FsVixLQ3BGaEJ1RDtLRG9Gd0Q7Y0FFNUM2UjtNQUFPO01BQUE7OztjQUVFMWQsMEJBQUFBOztjQUNKMmQ7O2NBUUZoZTtVQUFNLE9BaEJEMmQ7b0JBZ0JnQzs7cUJBQXJDM2Q7cUNBQXFDLElBQVNLLGNBQU0sT0FYdkQwZCxLQVdpRDFkLEdBQWE7OztjQUMxRFg7VUFDUixPQWxCWWllO29CQWtCbUI7O3FCQUR2QmplOztzQkFDdUIsSUFBU3NlO3NCQUFPLE9BQUEsMEJBQVBBLElBYnBDRDtxQkFhZ0U7OztjQVYzREM7O2NBRVFDO1VBQ0QsT0FBQTs7bUJBRENBOztvQkFDRDt5QkFHSXhXO3FCQUFNLE9BVHRCc1csS0FTZ0J0Vzs7O2dDQUZLO3dCQUNKcEg7b0JBQU0sT0FSdkIwZCxLQVFpQjFkO21CQUNZOztVQU14Qjs7Y0FFSzZkLG1CQUFMdlY7VUFDTixLQXBCSG1WLFFBbUJTblYsTUFwQlRrVixhQW9CU2xWLEtBcEJUa1YsU0EyQkFNLFNBUFN4VjsyQ0FBS3VWLE1BakJWSDtzQkFHS0M7O09BQXVDLE9BQUEsMEJBQXZDQSxJQUhMRDs7S0F1QmdCO2NBQ3BCSSxTQUFTeFY7TUFDWCxJQUFPeVYsT0ExRUxsUixPQTZDQTBRLE9BNEJTalY7TUFFWCxPQTFCTW9WLEtBeUJDSztLQUNFO0tBRlBELFNBNUJNeFY7S0FpQ0EsSUFBTjBWLE1BL0JBUCxRQUZNblY7S0FvQ1YsT0FISTBWLElBR0Q7R0FBQTtHQUdXO0lBQVpDLFlBeENBWjtJQXlDQWEsaUNBekNBYjs7Ozs7Ozs7Ozs7OztpQkE0RFVyZDtLQUFMLElBQVdHLGNBQUhDO0tBQVMsT0FBQSx5QkFBWkosR0FBR0ksR0FBR0Q7SUFBK0I7SUFEdkMsSUFBQSxNQUFBLDRCQ2pnQk4rTCxjRGlnQk07YUFGTm5OLGFBR0csT0FBQTthQUdIb2YsU0FBT25lLEdBQUVJLEdBQUksT0FBQSx5QkFBTkosR0FBRUksR0FBZ0I7SUFUekIsZUFTQStkLFVBTkFwZjthQTJCQWhDLFFBQUFxaEIsT0FBQUM7S0FBUztNQUFBQyxRQUFURjtNQUFTRyxRQUFUSDtNQUFTSSxRQUFUSDtNQUFTSSxRQUFUSjtNQUFTaGdCLElBQUEsV0F4S2YrTixXQXdLZW1TLE9BQUFFO2tCQUFBcGdCLElBQVEsV0MxaEJqQnVOLFdEMGhCUzBTLE9BQUFFLFNBQUFuZ0I7SUFBYTthQUF0QjlCO0tBQUE7TUFBU21pQjtNQUFBQztNQUFBQyxzQkF4S2ZyUyxhQXdLZW9TO01BQUFFLHNCQzFoQlRyVCxhRDBoQlNrVDtvQkFBQUUsY0FBQUM7SUFBMkM7SUFEM0M7S0FBQSxRQUNUOWhCLFNBQUFSOzs7YUFVQXVpQixLQUFLOWUsR0FBRUksR0FBSSxPQUFBLHlCQUFOSixHQUFFSSxHQUFnQjtJQUNmLElBQVIyZSxRQUFRO2FBQ1JDLE9BQU9oZixHQUFFSSxHQUFFRCxHQUFJLE9BQUEseUJBQVJILEdBQUVJLEdBQUVELEdBQTRCO0lBZnZDLGVBYUEyZSxNQUNBQyxPQUNBQzthQWdCQUMsU0FBT3ZoQixVQUFXd2hCLE1BQVEsT0FBbkJ4aEIsRUFBb0I7YUFFM0J5aEIsS0FBS25mLEdBQUVFLEdBQUdrZixPQUFNRjtLQUNWLElBQUp4aEIsSUFBSSxXQUREc0MsR0FBS29mLE9BQU1GO0tBRWxCLE9BQUEsV0FBQSxXQUZTaGYsR0FDTHhDLElBRFEwaEIsT0FBTUY7SUFFRDthQUdmRyxTQUFTQyxZQUFhSjtLQUNYLElBQVRLLDRCQURvQkwsTUFBYkk7S0FFRyxPQUFBOztjQURWQzs4QkFDVSxJQUF1QjdoQixjQUFNLFdBQU5BLEdBQWtDO0lBQU87YUFHNUU4aEIsZUFBZUYsS0FBSUcsT0FBT0wsT0FBTUY7S0FDbEM7TUFDT1Esd0JBRnFCTjtNQUdyQk8sNEJBSDJCVCxNQUFqQkksS0FFVkk7S0FEUCxXQUdHLFdBSmtCRCxPQUFPTCxlQUdyQk87SUFDMEI7YUFHL0JDLEtBQUs1ZixHQUFJLGtCQUFKQSxlQUF5QjtJQXRCOUI7S0FBQSxlQUdBaWYsVUFFQUUsTUFLQUUsVUFLQUcsZ0JBT0FJO0tBS0ZDO0tBQ0FDO2FBRUFDLGtCQUNFcGdCLElBQUlPO2NBQ0E4ZixLQUFLQztNOztRQUVKdGdCO1FBQUxqQzt3QkFBdUJELEdBQUssT0FGeEJ1aUIsU0FFbUJ2aUIsR0FGZHdpQixTQUVKdGdCLElBQTRDO1FBQXRDLE9BQUEsV0FIUE8sR0FHSnhDO09BQW1COztlQVByQm1pQjs7TUFNZSxXQUFBLDBCQURKSTtNQUNJOztjQUxmSDs7S0FRRixPQUpRRSxRQURKcmdCO0lBS007aUJBcUJONGQsT0FBTTJDLE1BQUtsZ0I7S0FDYixPQURhQTs7O1NBY0VvSCxNQWRGcEg7U0FjRDVDLElBZEM0Qzs7b0JBZWVHO1lBQVksV0FBQSw0QkFENUIvQyxHQUNnQitDO1lBQVk7O29CQTVDeEMyZjtXQTRDdUU7U0FBckUsV0FmQXZDLE9BQU0yQyxNQWNPOVk7UUFDUzs7Z0JBN0N4QnlZOzs7U0E4Q1dsQyxLQWhCRTNkO1NBZ0JMbWdCLE1BaEJLbmdCOztvQkFpQnFCNE07WUFBYSxXQUFBLDRCQUR2Q3VULEtBQzBCdlQ7WUFBYTs7b0JBOUMvQ2tUO1dBOEMrRTtTQUE3RSxPQWNGTSxVQS9CRTdDLE9BQU0yQyxNQWdCR3ZDO1FBQ21COztnQkEvQzlCa0M7OztTQWdDU1EsUUFGSXJnQjs7b0JBS0hxZ0I7WUFBZ0IsV0FBQSw0QkFBaEJBO1lBQWdCOztvQkFsQzFCUDtXQWtDeUQ7U0FGdkQ7V0E5QkZDO2FBNkJTTTs7Y0FDb0IsSUFBUzNpQixjQUFITjs0QkFDTEs7ZUFBWSxlQURQTCxHQUNMSztlQUFZOzt1QkFqQzFDcWlCO2NBaUNnRDtjQUE1QyxlQUpGdkMsT0FBTTJDLE1BRzhCeGlCO2NBQ1o7O3NCQWxDMUJtaUI7YUFrQ2lEO1FBQzNDOztnQkFuQ05BOzs7U0FvQ1VTLE9BTkd0Z0I7O29CQVNIc2dCO1lBQWUsV0FBQSw2QkFBZkE7WUFBZTs7b0JBdEN6QlI7V0FzQ3dEO1NBRnREO1dBbENGQzthQWlDVU87O2NBQ2tCLElBQVMzZ0IsZUFBSHZDOzRCQUNFbWpCO2VBQWEsZUFEZm5qQixHQUNFbWpCO2VBQWE7O3VCQXJDakRUO2NBcUN3RDtjQUFwRCxXQXVCSk0sVUEvQkU3QyxPQUFNMkMsTUFPNkJ2Z0I7Y0FDTDs7c0JBdENoQ2tnQjthQXNDeUQ7UUFDbkQ7O2dCQXZDTkE7OztTQWdEUWhDLE9BbEJLN2Q7O29CQWtCaUM0TTtZQUFhLFdBQUEsNEJBQWJBO1lBQWE7O29CQS9DM0RrVDtXQStDc0Y7U0FBeEUsT0FhZE0sVUEvQkU3QyxPQUFNMkMsTUFrQkFyQztRQUFrQzs7Z0JBaEQxQ2dDOzs7aUJBOEJhN2Y7U0EyQlE0ZDtTQUFMMWdCOztvQkFFTnNqQjtZQUFPO2FBQTBDLE9BQUEsMEJBQWpEQTthQUFjLE9BQUEsNEJBRlJ0akI7WUFFUTs7b0JBMUR4QjRpQjtXQTBENkU7U0FEM0U7V0F2REZDO2FBc0RxQm5DLG1CLE9BT3JCNkMsaUJBbENFbEQsT0FBTTJDO1FBNkJGOztnQkEzRE5MOztRQXlDUzttQkFYSTdmO1NBVUQwZ0I7U0FBTEM7U0FDRSw2QkFYRFQsTUFVSVE7O1NBR0MsT0FBQTtrQkFsb0JmempCO29CQStuQlMwakI7Ozs7Ozt1Q0FHcUJDO3dCQUFBLE9BQUEsV0N6bkIxQjNVLGFEeW5CMEIyVTt1QkFBNkI7OztrQkFIN0NGOztZQUVGaGpCO1FBQUs7O2dCQXpDZm9pQixTQXlDVXBpQjs7O1NBYU1takIsT0F6Qkg3Z0I7U0F5QkZzSSxNQXpCRXRJO3lCQTBCdUI2Z0IsTUFBUSxPQWtDNUNDLFNBNURFdkQsT0F5QlNqVixLQUN5QnVZLE1BQStCO1NBQWpFLE9BS0ZULFVBL0JFN0MsT0FBTTJDLE1BeUJRVztRQUNnQjs7Z0JBeERoQ2hCOzs7U0FpRDBCa0IsU0FuQmIvZ0I7U0FtQlFnaEIsUUFuQlJoaEI7U0FtQkZpaEIsV0FuQkVqaEI7eUJBcUJINmdCLE1BRVIsT0FxQ0ZDLFNBekNXRyxVQUFVRCxPQUVYSCxNQUVrQjtTQUgxQixPQVdGVCxVQS9CRTdDLE9BQU0yQyxNQW1Ca0JhO1FBRXBCOztnQkFuRE5sQjs7SUEyRDZFO2FBRTdFTyxVQUNFN0MsT0FBTTJDLE1BQUt2QztLQUFNLE9BM0RuQm9DO2NBMkRhcEMsbUIsV0FBWEosT0FBTTJDO0lBQW9EO2FBRTVETyxpQkFJRWxELE9BQU0yQyxNQUFLZ0I7S0FDYixlQURhQTs7aUJBQUFBO09BS0k5WjtPQUFMbEs7O2tCQUVGaUQ7VUFDRCxZQUFBLDRCQURDQTs7ZUFwbkJIbUssdUJBQUFBO1dBc25CZTs7bUJBNUV0QndWOztjQTZFVzdYO1VBQ04sT0FBQSxXQXRxQlBoTCxVQWdxQmNDLFdBS0QrSztTQUtEO09BVFIsV0FOQXNWLE9BQU0yQyxNQUtTOVk7TUFFWDs7Y0EzRU55WTs7Z0JBb0VhcUIsdUJBRUY5akI7OztPQUNRNEM7O2tCQUNTRztVQUFZLG1CQUY3Qi9DLE9BRXVDLDRCQUF0QitDO1VBQVk7O2tCQXZFeEMyZjtTQXVFNkU7T0FBM0UsV0FKQXZDLE9BQU0yQyxNQUdXbGdCO01BQ0s7O2NBeEV4QjZmOztLQXNFOEIsbUJBQW5CemlCO0tBQW1COzthQXJFOUIwaUI7SUFrRlU7YUFFVnFCLGdCQUNFNUQsT0FBTTZELFNBQVFyRDtLQUNoQjtNQUF1QjtRQUFBOztVQURmcUQ7bUJBQzBDQyxHQUFFM2pCLEdBQUssV0FBTEEsR0FBUSw0QkFBVjJqQixJQUE4QjtNQUE1RW5CO21CQUN5Qi9mO01BQVksV0FBQSw0QkFBWkE7TUFBWTs7Y0F2RnpDMmY7S0F1Rm9FO0tBQXBFLGVBRkV2QyxPQUNFMkMsTUFEWW5DO0tBRVM7O2FBeEZ6QjhCO0lBd0ZvRTthQUVwRWlCLFNBQ0V2RCxPQUFNalYsS0FBSXVZO0tBQ1o7TUFBSW5VLE1BREY2UTtNQUVrQixRQWpSbEIxUSxPQStRQTBRLE9BQU1qVjtNQUVLeVY7TUFBVHFEO0tBQ0osT0FEYXJEOzs7WUFDVHVEO29CQUFBQTs7S0FNUztNQUFUQyxTQXBNSnRELFVBMkxFVixPQUFNalY7TUFVSmtaLGVBcE1KdEQsK0JBMExFWCxPQUFNalY7OztNQVNLLEdBTlRnWiw0QkFNQUM7V0FDQUM7T0FhTSxjQUFBLDJCQXJCTkosU0FGUVA7O1lBd0JIbmpCLGdCQUZId2lCLDBCQUVHeGlCOztZQUZId2lCLE9BR21CO09BRXZCLFdBM0JBM0MsT0FzQkkyQyxNQXBCT25DOzs7O01BZ0JQO1dBQ2M1VCxjQUFZLE9BQUEsNEJBQVpBLEdBbkJSMFc7T0FtQm9COztlQTdHaENmOztVQThHZTFYLGdCQUFjLE9BQUEsNEJBQWRBLEtBcEJIeVk7TUFvQmlCOztjQTlHN0JmO0tBOEc0RDs7TUFOdEQ7V0FDS3pYO09BQVc7O2VBekd0QnlYLFNBeUdXelg7O01BRThCO09BQUEsT0F2QnpDOFksZ0JBTUU1RCxPQUVFNkQsU0FBU3JEO09BZWlCLFdBaEIxQnJSLEtBRElwRTs7TUFpQmlDOzs7S0FBcUM7U0FKMUQsVUFaaEJvRSxLQURJcEU7S0FhTjs7OztLQUFBOzthQXhHRnVYOztLQTZHTTs7YUE3R05BO0lBc0h1QjthQUl2QjRCLE9BQ0V6aEI7S0FDRjtNQUFJdWQsUUFoUkovUSxTQWdSa0IsV0Mxc0JoQmhRO01EMnNCRTBqQjtNQUNrQixVQUZsQjNDLE9BQ0EyQyxNQUZGbGdCO01BR0VHO0tBQ0osT0FBQSw2QkFESUE7SUFDcUI7SUF6TmEsaUNBb050Q3NoQjs7R0FZUztJQUFBOzs7O1NBdllUaFg7YUE5QkVWLE9BRUFHLFdBREFGLFNBY0FPLFVBTEFIOzs7SUErWUZxWDs7WUFxQkZDLGVBQWVyVztJQUFtQyw4Q0FBbkNBO0lBQW1DLE9BQUE7R0FBK0I7WUFDakZzVyxzQkFBc0J0VztJQUFNLE9BQWMsbUJBRDFDcVcsZUFDc0JyVztHQUF3QztHQUdoRTtJQUFBOzs7Ozs7Ozs7O007OzBDQXRWTzBNOzs7WUF3Vkg2SixzQkFBc0I1aEI7SUFDeEIsU0FEd0JBLE1BR2pCLE1BQUEsNkNBSGlCQTtRQUVoQjJkLEtBRmdCM2Q7SUFFVixPQUFOMmQ7R0FDb0I7Ozs7T0EzVnZCNUY7V0MzWUR0TTtXQUFBTztXQUFBeFA7V0FBQUssYUFBQUM7T0QwYkYwUDtPQWxCQXFRO09BQUFGO09BQUFDO09Bc0JBSztPQUNBQztPQUVBRTtPQXpCQU47T0FBQUM7T0F3QkFJO09BRUFUO09BMUJBSDtlQUFBdFAsU0E3QkcyRixhQUFBbUY7c0JBL1VIdlgsYUFEQUQscUJBRkFGLFFBQ0FDOztZQWpESjNDLFdBQUFXLGFBNEJJeUI7WUF1Q0pxRCxXQUFBcEM7Z0JBK1BBb0ksWUFBQU8sYUFBQVAsWUFBQU87O1FBQUFQO1FBQUFPO1FBa0JJMkI7UUFoQkFiOzs7Ozs7Ozs7Ozs7Ozs7T0EyWEFnWDtPQXFCRkM7T0FDQUM7V0FLRUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7WUVwdkJBQyw0QkFBMEIsU0FBRTtZQVM1QkMsNkJBQTJCLFNBQUU7WUFDN0JDLDJCQUF5QixTQUFFO1lBRTNCQyw2QkFBMkIsU0FBRTtZQUM3QkMsMEJBQXdCLFNBQUU7R0FkaEI7OztPQUNWSjs7Ozs7Ozs7O09BU0FDO09BQ0FDOztPQUVBQztPQUNBQzs7O1lBS0ZDLGlDQUF5QixTQUFFOzthQUd6QkEsc0NBQTJCLFNBQUU7SUFEUyxXQUN0Q0E7OzthQUlBQSwyQ0FBOEIsU0FBRTtJQURNLFdBQ3RDQTs7O2FBSUFBLGdEQUFnQyxTQUFFO0lBREksV0FDdENBOzs7Ozs7T0FYRkE7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDbEJKOztJQWdOTUM7SUF2Q0FDO0lBbkJBQztJQXZDQUM7Ozs7Ozs7SUEvR05DO0lBSUE7SUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUE4Qk1DO0lBQVk7OztRQUNBOztRQUNBOztRQUNJOztRQUNIOztRQUNJOztRQUNIOztRQUNBOztRQUNJOztRQUNMOztRQUNBOztRQUNFOztRQUNJOztRQUNKOztRQUNHO2dCQUVFOzs7O1dBRENDLG9CQUFMQztPQUFrQixPQUFBLGdDQUFsQkEsS0FBS0Q7O1dBRWJILGdCQUFPLE9BQUEsbUNBQVBBOztXQUNBRCxrQkFBTyxPQUFBLG1DQUFQQTs7V0FDT0Q7T0FBTyxPQUFBLDBDQUFQQTs7V0FDSUQ7T0FBTyxPQUFBLDhDQUFQQTs7V0FDUlE7T0FBTyxPQUFBLHNDQUFQQTs7V0FDQUM7T0FBTyxPQUFBLHNDQUFQQTs7R0FBNEI7R0FNN0M7SUFBQTs7Ozs7Ozs7O007O01BSG9COztPQUFKQztPQUFJLGVBekJkTCxVQXlCVUs7NkJBNURoQk47OztHQWdFQTtJQUFBOztJQUNBOzs7WUFFSU8saUJBQWlCQyxLQUFJQztJQUFNLE1BQUEsNENBQVZELEtBQUlDO0dBQW1DO1lBRXhEQyx5QkFBeUJDLE1BQUtGO0lBQ2hDLE1BQUEsZ0RBRDJCRSxPQUFLRjtHQUMyQjtZQUd6REcsOEJBQThCYjtJQUFlLFVBQUEsc0JBQWZBO0lBQWUsT0FBQTtHQUFtQztZQUNoRmM7SUFBdUIsT0FBQTtHQUFpQztZQU94REMsV0FBV0M7SUFBSSxPQUFBOzs7O2FBQUpBO0dBQTBDOztJQUNyREM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFDQUMsV0FBV1I7SUFBTSxVQUFOQTtpQkFUWEk7R0FTcUQ7WUFDckRLLFVBQVdDLEtBQVdWO0lBQU0sVUFBVSxjQUEzQlUsUUFBV1Y7WUFBb0MsTUFBQTs7R0FBa0I7WUFFNUVXLGFBQWFELEtBQUlFO0lBQ25CLElBQUlaLE1BRGVZO0lBRmpCSCxVQUVhQyxLQUNYVjtJQUNKLE9BRElBO0dBRUQ7WUFHRGEsV0FBWUgsS0FBV0k7SUFBTyxVQUFVLGNBQTVCSixPQUFXSTtZQUFxQyxNQUFBOztHQUFrQjtZQUU5RUMsWUFBYXpCLEtBQUswQjtJLFlBSVY7UUFISGhCO09BQUFBO0tBQ3VCLFVBQUEsZ0NBRmZWLEtBQUswQjtLQUVGOztJQUFBLE9BRFhoQjs7WUFlTGlCLFNBQVVDLFNBQVNDLEtBQUtDLFNBQVNDLEtBQUkzQjtJQUN2QztLQUNJNEIsWUFsQkZQLFlBaUJFekIsa0JBRFE0QjtLQUdSSyxZQW5CRlIsWUFpQkV6QixrQkFEc0I4QjtJQUkxQixPQUp1QzFCLEtBS2xDLE9BQUE7YUFMa0NBO1lBWWYsY0FaSHlCLFFBRWpCRyxZQUZtQzVCO2VBYWxDO2VBQ21CO2lCQWRXMkI7a0JBRy9CRSxZQUhtQzdCO2lCQWVsQztpQkFDQTtrQkFkRDRCLFdBRmlCSCxLQUdqQkksV0FIK0JGLEtBQUkzQjtPQVF4QixjQVJNeUIsT0FFakJHO0tBT0c7Y0FDUSxjQVZvQkQsT0FHL0JFO2lCQVFHO0dBSzhDO1lBdUJuREMsZ0JBQWlCTixTQUFRTyxLQUFLTCxTQUFRVixLQUFLaEI7SUFDN0M7S0FDSTRCLFlBekRGUCxZQXdERTFCLHNCQURlNkI7S0FHZkssWUExREZSLFlBd0RFMUIsc0JBRDRCK0I7SUFJaEMsT0FKNkMxQjtLQUt4QyxPQUFBO2FBTHdDQTtrQ0FBbEIrQixRQUV2QkgsWUFGeUM1QjtlQWF4QztlQUNtQjtpQkFkZ0JnQjtrQkFHcENhLFlBSHlDN0I7aUJBZXhDO2lCQUNBO2tCQWRENEIsV0FGdUJHLEtBR3ZCRixXQUhvQ2IsS0FBS2hCOzZCQUFsQitCLE9BRXZCSDtLQU9HO2NBQ1EsY0FWeUJaLE9BR3BDYTtpQkFRRztHQUttRDtZQUd4REcsZUFBZ0JSLFNBQVFPLEtBQUtMLFNBQVFWLEtBQUtoQjtJQUM1QztLQUNJNEIsWUE1RUZQLFlBMkVFM0Isc0JBRGM4QjtLQUdkSyxZQTdFRlIsWUEyRUUzQixzQkFEMkJnQztJQUkvQixPQUo0QzFCO0tBS3ZDLE9BQUE7YUFMdUNBO2lDQUFsQitCLFFBRXRCSCxZQUZ3QzVCO2VBYXZDO2VBQ21CO2lCQWRlZ0I7a0JBR25DYSxZQUh3QzdCO2lCQWV2QztpQkFDQTtrQkFkRDRCLFdBRnNCRyxLQUd0QkYsV0FIbUNiLEtBQUtoQjs0QkFBbEIrQixPQUV0Qkg7S0FPRztjQUNRLGNBVndCWixPQUduQ2E7aUJBUUc7R0FLa0Q7WUF1QnZESSxlQUFnQlQsU0FBUVIsS0FBS1UsU0FBUUssS0FBSy9CO0lBQzVDO0tBQ0k0QixZQW5IRlAsWUFrSEU1QixzQkFEYytCO0tBR2RLLFlBcEhGUixZQWtIRTVCLHNCQUQyQmlDO0lBSS9CLE9BSjRDMUI7S0FLdkMsT0FBQTthQUx1Q0E7WUFZcEIsY0FaRWdCLFFBRXRCWSxZQUZ3QzVCO2VBYXZDOztpQkFia0MrQjtrQkFHbkNGLFlBSHdDN0I7aUJBZXZDO2lCQUNBO2tCQWRENEIsV0FGc0JaLEtBR3RCYSxXQUhtQ0UsS0FBSy9CO09BUTdCLGNBUldnQixPQUV0Qlk7S0FPRzttQ0FUZ0NHLE9BR25DRjtpQkFRRztHQUtrRDtZQU9uREssZUFBZUM7OzttQkFDYixPQURhQTtTQUVUQyx1Q0FBTkMsY0FBSEM7S0FDRCw4QkFIbUJILE1BRWxCRyxHQUFHRDtlQUFNRDs7O1lBMERWRyxpQjs7OztPQWpOQTVCO09BQ0FFO09BQ0FDO09BQ0FDO09BUUFJO09BTkFGO09BK0RBYTtPQW1CQUU7T0F1Q0FDO09BQUFBO09BakdBVjs7O1dBM0VFekI7Ozs7T0FnQ0ZNO09BRUFHO09BSUFFO09BQ0FDO09BNEpJd0I7T0E0REpLOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7SUU1UUFFO0lBQ0FDOzs7Ozs7O0lBRUFDO01BRkFEOzs7U0FLTzFCLEtBQUlWLEtBQUlzQztTQUFLLG9CQUFiNUIsS0FBSVYsa0JBQUlzQztTQUFLO1FBQWdDO0lBR3BEQztNQVJBSDs7O1NBV08xQixLQUFJVixLQUFJc0M7U0FBSyxvQkFBYjVCLEtBQUlWLEtBQThCLGlCQUExQnNDO1NBQUs7UUFBZ0M7SUFHcERFO01BZEFKOzs7U0FpQk8xQixLQUFJVixLQUFJc0M7U0FBSyxvQkFBYjVCLEtBQUlWLEtBQThCLGlCQUExQnNDO1NBQUs7UUFBZ0M7SUFHcERHO01BcEJBTDs7U0FzQk8xQixLQUFJVixLQUFJc0M7U0FBSyxvQkFBYjVCLEtBQUlWLGtCQUFJc0M7U0FBSztRQUFnQzs7SUFJcERJO01BMUJBTjs7U0E0Qk8xQixLQUFJVixLQUFJc0M7U0FBSyxvQkFBYjVCLEtBQUlWLEtBQThCLGlCQUExQnNDO1NBQUs7UUFBZ0M7O0lBSXBESztNQWhDQVA7O1NBa0NPMUIsS0FBSVYsS0FBSXNDO1NBQUssb0JBQWI1QixLQUFJVixLQUE4QixpQkFBMUJzQztTQUFLO1FBQWdDOztZQUlwRE0sZUFBZWxDLEtBQUtWO0lBQ3RCLCtCQURzQkE7SUFFdEIsK0JBRmlCVSxLQUFLVjtJQUd0QixjQUhpQlUsS0FBS1Y7SUFHdEIsT0FBQSxnQ0FIc0JBO0dBSWY7WUFHTDZDLGVBQWVuQyxLQUFLVixLQUFJOEM7SUFDMUIsK0JBRHNCOUM7SUFFdEIsK0JBRmlCVSxLQUFLVjtjQUFJOEM7SUFHMUIsY0FIaUJwQyxLQUFLVjtJQUd0QixPQUFBLGdDQUhzQkE7R0FJZjtZQUdMK0Msd0JBQXdCckMsS0FBSVYsS0FBSU07SUFDbEMsK0JBRDBCSSxLQUFJVjtJQUU5QixjQUYwQlUsS0FBSVYsS0FBSU07SUFFbEMsT0FBQSxnQ0FGOEJOO0dBR3ZCO1lBV0xnRCxvQkFBb0J0QyxLQUFJVixLQUFJTTtJQUNuQixJQUFQUSxPQUFPLGdDQURlZDtJQUUxQiwrQkFGc0JVLEtBQ2xCSTtJQUVKLGNBSHNCSixLQUFJVjtJQTlDeEJ5QyxlQThDb0IvQixLQUlILGdDQUpPVixTQUFJTTtJQUk5QixPQUhJUTtHQUlBO1lBR0ZtQyxvQkFBb0J2QyxLQUFJVixLQUFJTTtJQUNuQixJQUFQUSxPQUFPLGdDQURlZDtJQUUxQiwrQkFGc0JVLEtBQ2xCSTtJQUVKLGNBSHNCSixLQUFJVjtJQWhEeEIwQyxlQWdEb0JoQyxLQUlILGdDQUpPVixTQUFJTTtJQUk5QixPQUhJUTtHQUlBO1lBSUZvQyxvQkFBb0J4QyxLQUFJVixLQUFJTTtJQUNuQixJQUFQUSxPQUFPLGdDQURlZDtJQUUxQiwrQkFGc0JVLEtBQ2xCSTtJQUVKLGNBSHNCSixLQUFJVjtJQW5EeEIyQyxlQW1Eb0JqQyxLQUlILGdDQUpPVixTQUFJTTtJQUk5QixPQUhJUTtHQUlBO1lBSUZxQyxlQUFlekMsS0FBS1YsS0FBSW9EO0lBQzFCLCtCQURzQnBEO0lBRXRCLCtCQUZpQlUsS0FBS1Y7SUFHdEIsY0FIaUJVLEtBQUtWLEtBQUlvRDtJQUcxQixPQUFBLGdDQUhzQnBEO0dBSWY7WUFHTHFELGNBQWMzQyxLQUFLVixLQUFJTTtJQUN6QiwrQkFEcUJOO1lBQUlNO2NBQUFBLEdBS2xCLE9BcERMeUMsd0JBK0NjckMsS0FBS1YsS0FBSU07Z0JBQUFBLEdBT2xCLE9BeENMMEMsb0JBaUNjdEMsS0FBS1YsS0FBSU07UUFwR3ZCNkIsaUNBb0d1QjdCO01BU1UsT0F6QmpDNEMsb0JBZ0JjeEMsS0FBS1YsS0FTYyxvQkFUVk07S0FVVSxPQW5DakMyQyxvQkF5QmN2QyxLQUFLVixLQUFJTTs7ZUFBQUE7S0F4Q2QsSUFBUFEsT0FBTyxnQ0F3Q1VkO0tBdkNyQiwrQkF1Q2dCVSxLQXhDWkk7S0FFSixjQXNDZ0JKLEtBQUtWO0tBckNyQixjQXFDZ0JVLEtBckNBLGdDQXFDS1YsU0FBSU07S0FyQ3pCLE9BSElROztpQkF3Q3FCUixHQWNwQixPQS9DSDBDLG9CQWlDY3RDLEtBQUtWLEtBQUlNO09BcEd2QjZCLGtCQW9HdUI3QjtLQWdCUSxPQWhDL0I0QyxvQkFnQmN4QyxLQUFLVixLQWdCWSxvQkFoQlJNO0lBaUJRLE9BMUMvQjJDLG9CQXlCY3ZDLEtBQUtWLEtBQUlNO0dBaUJ3QjtZQUcvQ2dELGVBQWU1QyxLQUFLVixLQUVsQnVEO0lBREosK0JBRHNCdkQ7SUFHdEIsU0FESXVELE1BRUMsT0F2RUhSLHdCQW1FZXJDLEtBQUtWLEtBRWxCdUQ7ZUFBQUEsTUFJQyxPQTNESFAsb0JBcURldEMsS0FBS1YsS0FFbEJ1RDtPQTFIRnBCLHVCQTBIRW9CO0tBTTZCLE9BNUMvQkwsb0JBb0NleEMsS0FBS1YsS0FRVyxvQkFON0J1RDtJQU82QixPQXREL0JOLG9CQTZDZXZDLEtBQUtWLEtBRWxCdUQ7R0FPNkM7WUFHL0NDLGlCQUFpQjlDLEtBQUtWLEtBQUl5QjtJQUM1QjtLQUFJL0IsNEJBRHdCK0I7S0FHeEJnQyxVQWZGSCxlQVlpQjVDLEtBQUtWLEtBQ3BCTjtLQUdBb0IsT0FBTyxnQ0FEUDJDLFNBRkEvRDtJQUlKLCtCQUxtQmdCLEtBSWZJO0lBR0oseUNBUDRCVyxLQUd4QmdDLFNBSGUvQyxLQUNmaEI7SUFNSixPQUhJb0I7R0FJQTtZQUdGNEMsZ0JBQWdCaEQsS0FBS1YsS0FBSXlCO0lBQzNCO0tBQUkvQixtQ0FEdUIrQjtLQUd2QmdDLFVBMUJGSCxlQXVCZ0I1QyxLQUFLVixLQUNuQk47S0FHQW9CLE9BQU8sZ0NBRFAyQyxTQUZBL0Q7SUFJSiwrQkFMa0JnQixLQUlkSTtJQUdKLHdDQVAyQlcsS0FHdkJnQyxTQUhjL0MsS0FDZGhCO0lBTUosT0FISW9CO0dBSUE7WUFHRjZDLGdCQUFnQmpELEtBQUtWLEtBQUlzQztJQUMzQiwrQkFEdUJ0QztJQUVaLElBQVBjLE9BQU8sZ0NBRllkO0lBR3ZCLCtCQUhrQlUsS0FFZEk7SUEzSEY2QixlQXlIZ0JqQyxLQUFLVixLQUlBLGlDQUpJc0M7SUFJM0IsT0FGSXhCO0dBR0E7O0lBSUY4QztNQW5LQXpCO2tCQXFLaUJ6QixLQUFLVixLQUFJTSxHQUFLLE9BakUvQitDLGNBaUVpQjNDLEtBQUtWLEtBQUlNLEdBQTRDOztTQUV4REksS0FBS1YsS0FBSU07U0FDckIsS0FBRyxrQkFEa0JBLGVBQ0UsY0FERkE7VUFLaEIsT0F4RVArQyxjQW1FYzNDLEtBQUtWLEtBQUlNO1NBR25CLCtCQUhlTjtTQUdmLE9BL0ZKaUQsb0JBNEZjdkMsS0FBS1YsS0FBSU07UUFLdUI7WUFHOUN1RCxnQkFBZ0JuRCxLQUFLVixLQUFJTTtJQUMzQixLQUFHLGtCQUR3QkEsYUFDSixjQURJQTtRQS9LekI2QjtNQXVLQSxPQW5FQWtCLGNBMkVnQjNDLEtBQUtWLHlCQUFJTTtLQU9DLEtBQXBCLGtCQVBtQkEsYUFPQyxjQVBEQTtNQVJ6QixPQW5FQStDLGNBMkVnQjNDLEtBQUtWLHlCQUFJTTtLQVN6QiwrQkFUcUJOO0tBVU8sT0E5RzVCaUQsb0JBb0dnQnZDLEtBQUtWLEtBVU8sb0JBVkhNOztJQUd6QiwrQkFIcUJOO0lBR3JCLE9BOUZBa0Qsb0JBMkZnQnhDLEtBQUtWLEtBQUlNO0dBV2lCO1lBSTFDd0Qsb0JBQW9CcEQsS0FBS1YsS0FBSU07SUFDL0I7T0EvTEU2QjtLQWlNSztTQURILGtCQUYyQjdCLHFCQUd4QixjQUh3QkE7O0tBSzdCLCtCQUx5Qk47S0FNRyxPQWhINUJrRCxvQkEwR29CeEMsS0FBS1YsS0FNRyxvQkFOQ007Ozs7S0FPRSxLQXJNL0I2QixrQkFxTStCLGtCQVBGN0I7S0FPbUIsS0FBQSxjQVBuQkEsWUFXMUIsT0FyR0grQyxjQTBGb0IzQyxLQUFLVixLQUFJTTs7SUFTN0IsK0JBVHlCTjtJQVVHLE9BN0g1QmlELG9CQW1Ib0J2QyxLQUFLVixLQUFJTTtHQVdpQjtZQUk5Q3lELGNBQWNDLGNBQWF0RCxLQUFLVixLQUFJaUUsR0FBSSxrQkFBMUJELGNBQWF0RCxLQUFLVixLQUFJaUU7R0FBNEI7WUFFaEVDLGVBQWVGLGNBQWF0RCxLQUFLVixLQUFJbUU7SUFDdkMsK0JBRHVDQTs7O1NBQ25DcEMsSUFEbUNvQzs7d0NBQ25DcEMsSUFEbUNvQztTQUNuQ3BDLG9DQURtQ29DOztJQUV2QyxPQUFBLFdBRmlCSCxjQUFhdEQsS0FBS1YsS0FDL0IrQjtHQUNtQjtZQUdyQnFDLGlCQUFpQkosY0FBYXRELEtBQUtWO0ksWUFDM0IsT0F2S1I2QyxlQXNLOEJuQyxLQUFLVjtJQUd4QixJQUROK0IsY0FDRGpCLE9BektKK0IsZUFzSzhCbkMsS0FBS1Y7SUFJbkMsT0FBQSxXQUppQmdFLGNBQWF0RCxLQUcxQkksTUFEQ2lCOztZQUtMc0MsZUFBZUMsYUFBWUMsYUFBWTdELEtBQUtWO0lBQ25DO0tBRDJDOEM7S0FBSDBCO0tBQy9DMUQsT0FBTyxXQURNd0QsYUFBd0I1RCxLQUFLVixLQUFLd0U7SUFFbkQsT0FBQSxXQUY2QkQsYUFBWTdELEtBQ3JDSSxNQURrRGdDOztZQUtwRDJCO0lBQWlCSCxhQUFZQyxhQUFZRyxhQUFZaEUsS0FBS1Y7SUFDaEQ7S0FEMkRvRDtLQUFITjtLQUFIMEI7S0FDN0RHLFFBQVEsV0FET0wsYUFBb0M1RCxLQUFLVixLQUFLd0U7S0FFN0RJLFFBQVEsV0FGbUJMLGFBQXdCN0QsS0FDbkRpRSxPQURnRTdCO0lBR3BFLE9BQUEsV0FIMkM0QixhQUFZaEUsS0FFbkRrRSxPQUZtRXhCOztZQU1yRXlCLGVBUUViLGNBQWF0RCxLQUFLVixLQUFJOEU7SUFDeEI7S0FBSXBGLE1BQXlCLDJCQURMb0Y7S0FQT0MsWUEvRy9CekIsZUFzSGU1QyxLQUFLVixLQUNoQk47S0FSMkJzRixVQUFBRDtLQUFRRSxNQU9mSDtJQU54QjtVQUR1Q0csS0FFL0IsT0FGdUJEO0tBSVg7TUFKbUJFLFFBQUFEO01BR3JDRSxLQUhxQ0Y7TUFBUkcsY0FJWCxXQUdsQnBCLGNBQWF0RCxLQVBnQnNFLFNBRzdCRztLQUg2QkgsVUFBQUk7S0FBUUgsTUFBQUM7O0dBVUg7WUFHcEJHLDBCQUEyQkMsUUFBUUMsTUFBSzdFLEtBQUtWLEtBQUl3RTtJQUNuRTtLQUFJOUUsTUFBTSxXQURtQzRGLFFBQXNCZDtLQUcvRGdCLFFBL0hGbEMsZUE0SHdENUMsS0FBS1YsS0FDM0ROO0tBR0ErRixPQUhBL0Y7S0FJQW9CLE9BQU8sZ0NBRlAwRSxPQUNBQztJQUVKLCtCQU4wRC9FLEtBS3RESTtJQUVKLFdBUHFEeUUsU0FBY2YsR0FHL0RnQixPQUhzRDlFLEtBQ3REaEI7SUFNSixPQUZJb0I7R0FHQTtZQUdGNEUscUJBQXFCaEYsS0FBS1YsS0FBSXdFO0lBQ2hDLE9BWmtCYTs7O2M7OzthQVdLM0U7YUFBS1Y7YUFBSXdFO0dBTTdCO1lBb0JEbUIsZ0JBQXlCM0IsY0FBYXRELEtBQUtWLEtBQUk0RjtJQUNqRCxHQUQyQjVCLGlCQS9IekJMO0tBK0dGLE9BckJrQjBCOzRCOztlOzs7Y0FxQ3NCM0U7Y0FBS1Y7Y0FBSTRGO0lBTWpDO0tBZGtDdEYsSUFRRHNGO0tBUlJaLFVBekp2QzFCLGVBaUtzQzVDLEtBQUtWLEtBUktNO0tBQzlDdUYsa0JBRHFDYjtLQUV6QyxNQUZrRDFFO0tBQ2hDOztTQUNsQndGOztNQURJRDtPQUVhLFdBS1U3QixjQUFhdEQsS0FQcENtRixnQkFPNkNELE9BTmpERTtNQUFBLFVBQUFBO2lCQUFBQTtNQUFBQTs7O1dBRElEO0dBY21EO1lBR3JERSxrQkFBa0JDLGVBQWNDLGVBQWN2RixLQUFLVixLQUFJNkI7SUFDekQ7S0FDSXFFLE9BRE0sK0JBRCtDckU7S0FHckRtRCxVQTlLRjFCLGVBMks4QzVDLEtBQUtWLEtBRWpEa0c7S0FFQUM7YUFDQUMsVUFBVXBFLEdBQUVELEdBQUVpRDtLQURkbUI7S0FHZ0IsSUFBZGYsY0FBYyxXQVBBWSxlQUE0QnRGLEtBSzlCc0UsU0FBSmhEO0tBR1osT0FBQSxXQVJnQ2lFLGVBQWN2RixLQU8xQzBFLGFBRlVyRDtJQUdzQjtJQUV4QixJQUFWc0UsVUFBVSwrQkFMVkQsV0FMcUR2RSxNQUdyRG1EO09BQ0FtQixlQUZBRDtLQVNvQjtJQUFBLE9BRHBCRztHQUVHO1lBUUxDLHNCQUFzQjVGLEtBQUtWLEtBQUkrQjtJQUNqQztLQUFJckMsTUFBTSxjQUR1QnFDO0tBRzdCeUQsUUFsTUZsQyxlQStMc0I1QyxLQUFLVixLQUN6Qk47S0FHQStGLE9BSEEvRjtLQUlBb0IsT0FBTyxnQ0FGUDBFLE9BQ0FDO0lBRUosK0JBTndCL0UsS0FLcEJJO0lBRUosa0NBUGlDaUIsR0FHN0J5RCxPQUhvQjlFLEtBSXBCK0U7SUFHSixPQUZJM0U7R0FHQTtZQUdGeUYsc0JBQXNCN0YsS0FBS1YsS0FBSStCO0lBQ2pDO0tBQUlyQyxNQUFNLGNBRHVCcUM7S0FHN0J5RCxRQTdNRmxDLGVBME1zQjVDLEtBQUtWLEtBQ3pCTjtLQUdBK0YsT0FIQS9GO0tBSUFvQixPQUFPLGdDQUZQMEUsT0FDQUM7SUFFSiwrQkFOd0IvRSxLQUtwQkk7SUFFSixrQ0FQaUNpQixHQUc3QnlELE9BSG9COUUsS0FJcEIrRTtJQUdKLE9BRkkzRTtHQUdBO1lBS0YwRixzQkFBc0I5RixLQUFLVixLQUFJeUc7SUFDakM7S0FBSUMsT0FBTyxjQURzQkQ7S0FFN0JFLE9BQU8sY0FGc0JGO0tBRzdCakIsUUExTkZsQyxlQXVOc0I1QyxLQUFLVixLQUN6QjBHO0tBR0FFLFFBM05GdEQsZUF1TnNCNUMsS0FHcEI4RSxPQURBbUI7S0FHQWxCLGdCQUpBaUIsTUFDQUM7S0FJQTdGLE9BQU8sZ0NBRlA4RixPQUNBbkI7SUFFSiwrQkFQd0IvRSxLQU1wQkk7SUFFSixrQ0FSaUMyRixHQUk3QkcsT0FKb0JsRyxLQUtwQitFO0lBR0osT0FGSTNFO0dBR0E7WUFHRitGLHNCQUFzQm5HLEtBQUtWLEtBQUl5RztJQUNqQztLQUFJQyxPQUFPLGNBRHNCRDtLQUU3QkUsT0FBTyxjQUZzQkY7S0FHN0JqQixRQXRPRmxDLGVBbU9zQjVDLEtBQUtWLEtBQ3pCMEc7S0FHQUUsUUF2T0Z0RCxlQW1Pc0I1QyxLQUdwQjhFLE9BREFtQjtLQUdBbEIsZ0JBSkFpQixNQUNBQztLQUlBN0YsT0FBTyxnQ0FGUDhGLE9BQ0FuQjtJQUVKLCtCQVB3Qi9FLEtBTXBCSTtJQUVKLGtDQVJpQzJGLEdBSTdCRyxPQUpvQmxHLEtBS3BCK0U7SUFHSixPQUZJM0U7R0FHQTtZQUtGZ0csb0JBQW9CcEcsS0FBS1YsS0FBSStHO0lBQy9CO0tBQUlySCxNQUFNLGNBRHFCcUg7S0FHM0J2QixRQXBQRmxDLGVBaVBvQjVDLEtBQUtWLEtBQ3ZCTjtLQUdBb0IsT0FBTyxnQ0FEUDBFLE9BRkE5RjtJQUlKLCtCQUxzQmdCLEtBSWxCSTtJQUVKLGtDQU4rQmlHLEdBRzNCdkIsT0FIa0I5RSxLQUNsQmhCO0lBS0osT0FGSW9CO0dBR0E7WUFHRmtHLHNCQUFzQnRHLEtBQUtWLEtBQUlzQztJQUNqQywrQkFENkJ0QztJQUVsQixJQUFQYyxPQUFPLGdDQUZrQmQ7SUFHN0IsK0JBSHdCVSxLQUVwQkk7SUExVkY0QixlQXdWc0JoQyxLQUFLVixLQUFJc0M7SUFJakMsT0FGSXhCO0dBR0E7WUFHRm1HLG1CQUFtQnZHLEtBQUtWLEtBQUlNO0lBQzlCLCtCQUQwQk47SUFFMUIsK0JBRnFCVSxLQUFLVjtJQUcxQixjQUhxQlUsS0FBS1YsS0FBSU07SUFHOUIsT0FBQSxnQ0FIMEJOO0dBSW5CO1lBR0xrSCxvQkFBb0J4RyxLQUFLVixLQUFJTTtJQUMvQiwrQkFEMkJOO0lBRWhCLElBQVBjLE9BQU8sZ0NBRmdCZDtJQUczQiwrQkFIc0JVLEtBRWxCSTtJQS9XRjJCLGVBNldvQi9CLEtBQUtWLEtBQUlNO0lBSS9CLE9BRklRO0dBR0E7WUFHRnFHLG9CQUFvQnpHLEtBQUtWLEtBQUlNO0lBQy9CLCtCQUQyQk47SUFFaEIsSUFBUGMsT0FBTyxnQ0FGZ0JkO0lBRzNCLCtCQUhzQlUsS0FFbEJJO0lBalhGNEIsZUErV29CaEMsS0FBS1YsS0FBSU07SUFJL0IsT0FGSVE7R0FHQTtZQUdGc0csb0JBQW9CMUcsS0FBS1YsS0FBSU07SUFDL0IsK0JBRDJCTjtJQUVoQixJQUFQYyxPQUFPLGdDQUZnQmQ7SUFHM0IsK0JBSHNCVSxLQUVsQkk7SUFuWEY2QixlQWlYb0JqQyxLQUFLVixLQUlKLG9CQUpRTTtJQUkvQixPQUZJUTtHQUdBO1lBR0Z1RyxxQkFBcUIzRyxLQUFLVixLQUFJTTtJQUNoQywrQkFENEJOO0lBRWpCLElBQVBjLE9BQU8sZ0NBRmlCZDtJQUc1QiwrQkFIdUJVLEtBRW5CSTtJQTNYRjZCLGVBeVhxQmpDLEtBQUtWLEtBQUlNO0lBSWhDLE9BRklRO0dBR0E7WUFHRndHLHdCQUF3QjVHLEtBQUtWLEtBQUlNO0lBQ25DLCtCQUQrQk47SUFFcEIsSUFBUGMsT0FBTyxnQ0FGb0JkO0lBRy9CLCtCQUgwQlUsS0FFdEJJO0lBamFGdUIsZUErWndCM0IsS0FBS1YsS0FBSU07SUFJbkMsT0FGSVE7R0FHQTtZQUdGeUcsd0JBQXdCN0csS0FBS1YsS0FBSU07SUFDbkMsK0JBRCtCTjtJQUVwQixJQUFQYyxPQUFPLGdDQUZvQmQ7SUFHL0IsK0JBSDBCVSxLQUV0Qkk7SUFuYUZ5QixlQWlhd0I3QixLQUFLVixLQUFJTTtJQUluQyxPQUZJUTtHQUdBO1lBR0YwRywwQkFBMEI5RyxLQUFLVixLQUFJTTtJQUNyQywrQkFEaUNOO0lBRXRCLElBQVBjLE9BQU8sZ0NBRnNCZDtJQUdqQywrQkFINEJVLEtBRXhCSTtJQTNhRnlCLGVBeWEwQjdCLEtBQUtWLEtBQUlNO0lBSXJDLE9BRklRO0dBR0E7WUFHRjJHLHdCQUF3Qi9HLEtBQUtWLEtBQUlNO0lBQ25DLCtCQUQrQk47SUFFcEIsSUFBUGMsT0FBTyxnQ0FGb0JkO0lBRy9CLCtCQUgwQlUsS0FFdEJJO0lBN2FGMEIsZUEyYXdCOUIsS0FBS1YsS0FJUixvQkFKWU07SUFJbkMsT0FGSVE7R0FHQTtZQUdGNEcsMEJBQTBCaEgsS0FBS1YsS0FBSU07SUFDckMsK0JBRGlDTjtJQUV0QixJQUFQYyxPQUFPLGdDQUZzQmQ7SUFHakMsK0JBSDRCVSxLQUV4Qkk7SUFyYkYwQixlQW1iMEI5QixLQUFLVixLQUFJTTtJQUlyQyxPQUZJUTtHQUdBO1lBTUY2RyxjQUFjakgsS0FBS1YsS0FBSXNDO0lBQ2pCLElBQUpzRixNQUFJLHVCQURpQnRGO2NBRXpCLHNCQURJc0Y7S0FDSixNQUFBO0lBQ0EsK0JBSHFCNUg7SUFJVixJQUFQYyxPQUFPLGdDQUpVZDtJQUtyQiwrQkFMZ0JVLEtBSVpJO09BamRGcUI7S0FxZFEsSUFBSnFDLElBQUksa0JBUE5vRCxTQVFFOUUsSUFBSSxrQkFSTjhFO0tBU0Ysb0JBVmNsSCxLQUFLVixLQVFmd0U7S0FHSixvQkFYYzlELEtBV0csZ0NBWEVWLFNBU2Y4Qzs7O0tBSUk7TUFBSitFLE1BQUksa0JBWk5EO01BYUVFLE1BQUksa0JBYk5GO01BY0V4RSxJQUFJLGtCQWROd0U7TUFlRUcsSUFBSSxrQkFmTkg7S0FnQkYsb0JBakJjbEgsS0FBS1YsS0FhZjZIO0tBS0osb0JBbEJjbkgsS0FrQkcsZ0NBbEJFVixTQWNmOEg7S0FLSixvQkFuQmNwSCxLQW1CRyxnQ0FuQkVWLFNBZWZvRDtLQUtKLG9CQXBCYzFDLEtBb0JHLGdDQXBCRVYsVUFnQmYrSDs7SUFLTixPQWpCSWpIO0dBaUJBOzs7O09BM2JGOEI7T0FPQUM7T0FzRkFXO09BV0FFO09BbERBUDtPQU9BRTtPQW9CQUM7T0FrQ0FLO09BU0FDO09BWUFDO09BZUFDO09BZUFDO09BRUFHO09BS0FFO09BT0FDO09BS0FJO09BTUFJO09BbURBYztPQVVBSTtPQW9CQU87T0FXQUM7T0FBQUE7T0FhQUM7T0FZQUs7T0FBQUE7T0FjQUM7T0ExR0FwQjtPQThNQWlDO09BMUZBWDtPQVFBQztPQU9BQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQztPQVFBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NuY2dCOzs7Ozs7Ozs7Ozs7Ozs7O0lBSmhCdkY7SUFDQUM7OztJQUNBNEYsZ0JBRkE3RjtJQUdBOEYsZ0JBSEE5RjtJQUlBK0YsZ0JBQWdCO0lBQ2hCQyxnQkFBZ0I7WUFFQUMsa0JBQWtCcEksS0FBSXNDO0lBQ3hDLEdBUkVILGdCQVNHLE9BRm1DRztJQUdWO01BQXRCLGtCQUhnQ0EsR0FKdEMyRixrQkFPNEIsZUFIVTNGLEdBTHRDMEY7S0FTRyxPQUptQzFGO0lBS25DLE9BQUEsbUNBTCtCdEM7R0FLWTtZQUc5QnFJLGtCQUFrQnJJLEtBQUlzQztJQUN4QztNQUFHLGtCQURxQ0EsR0FWdEM2RixrQkFXdUIsZUFEZTdGLEdBWHRDNEY7Z0NBV3NDNUY7SUFHbkMsT0FBQSxtQ0FIK0J0QztHQUdZOztJQUc5Q3NJO01BckJBbkc7a0JBdUJPbkMsS0FBS3NDLEdBQUssT0FBQSxvQkFBTEEsR0FBeUI7O1NBRWhCdEMsS0FBSXNDO1NBQ3ZCO1dBQUcsa0JBRG9CQSxHQUNmO2NBQ0wsZUFGb0JBLEdBRWY7VUFDSCxPQUFBLG9CQUhrQkE7U0FJbEIsT0FBQSxtQ0FKY3RDO1FBSTZCO0lBVWxEdUk7TUF0Q0FuRzs7O1NBdUM0QzFCLEtBQUlWO1NBQU8sT0FBQSxhQUFBLG9CQUFYVSxLQUFJVjtRQUFzQztJQUd0RndJO01BMUNBcEc7OztTQTJDNEMxQixLQUFJVjtTQUFPLE9BQUEsaUJBQUEsb0JBQVhVLEtBQUlWO1FBQXNDO0lBR3RGeUk7TUE5Q0FyRzs7O1NBK0M0QzFCLEtBQUlWO1NBQU8sT0FBQSxpQkFBQSxvQkFBWFUsS0FBSVY7UUFBc0M7SUFHdEYwSTtNQWxEQXRHOztTQW1EMEIxQixLQUFJVjtTQUFPLE9BQUEsYUFBQSxvQkFBWFUsS0FBSVY7UUFBc0M7O0lBR3BFMkk7TUF0REF2Rzs7U0F1RDBCMUIsS0FBSVY7U0FBTyxPQUFBLGlCQUFBLG9CQUFYVSxLQUFJVjtRQUFzQzs7SUFHcEU0STtNQTFEQXhHOztTQTJEMEIxQixLQUFJVjtTQUFPLE9BQUEsaUJBQUEsb0JBQVhVLEtBQUlWO1FBQXNDOztZQVFwRTZJLGNBQWNuSSxLQUFLRTtJQUNYLElBQU5aLE1BQU0sK0JBRE1VLEtBQUtFO0lBRXJCLCtCQURJWjtJQUVELGFBQUEsY0FIYVUsS0FDWlY7ZUFEaUJZLGFBSUwsZ0NBSFpaO2NBSUMsbUNBSkRBO0dBSXlDO1lBRzNDOEksY0FBY3BJLEtBQUtFO0lBQ1gsSUFBTlosTUFBTSwrQkFETVUsS0FBS0U7SUFFckIsK0JBRElaO0lBRUUsWUFBQSxjQUhVVSxLQUNaVjs7ZUFEaUJZLGFBUVIsZ0NBUFRaOztnQkFTRyxtQ0FUSEE7aUJBRGlCWSxhQUtSLGdDQUpUWjtHQVMyQztZQUc3QytJLHVCQUF1QnJJLEtBQUtFLFNBQVNaO0lBQzVCLElBQVBjLE9BQU8sZ0NBRDRCZDtJQUV2QywrQkFGeUJVLEtBQ3JCSTtJQWhHSSxJQUFKc0MsSUFBSSxjQStGaUIxQyxLQUFjVixNQUduQ00sV0FsR0E4QyxJQUFBQSxjQUFBQTtZQWtHQTlDLEdBQ1csbUNBSmVNO0lBQUFBLGFBQzFCRTtJQUtKLE9BSElSO0dBR0g7WUFHQzBJLG9CQUFvQnRJLEtBQUtFLFNBQVNaO0lBQ3pCLElBQVBjLE9BQU8sZ0NBRHlCZDtJQUVwQywrQkFGc0JVLEtBQ2xCSTtJQUR1QkYsYUFDdkJFO0lBbkNJLElBQUp3QixJQWJGb0csd0JBK0NvQmhJLEtBQWNWO0lBakNwQyxlQURJc0MsSUFBQUEsZ0JBQUFBO0dBd0N5QjtNQXhHM0JIOztLQWdMSThHO0tBSEpDO2dCQUlJeEksS0FBS0UsU0FBU1o7UUFDTCxJQUFQYyxPQUFPLGdDQURLZDtRQUVoQiwrQkFGRVUsS0FDRUk7UUFER0YsYUFDSEU7UUFHaUIsSUFBakJSLElBOUhOcUksZUEwSElqSSxLQUFjVjtRQUtoQixZQURJTSxJQUFBQSxJQUFBQSxJQUxGMkk7T0FVc0M7OztLQWIxQ0M7Z0JBZUl4SSxLQUFLRSxTQUFTWjtRQUNMLElBQVBjLE9BQU8sZ0NBREtkO1FBRWhCLCtCQUZFVSxLQUNFSTtRQUVJLElBQUpSLElBeElOcUksZUFxSUlqSSxLQUFjVjtRQUlGLEdBQVgsa0JBRENNLFNBQ1UsZUFEVkEsR0E3TE4wSCxnQkEwTFNwSCxhQUNIRSxNQU9GLE9BTEVSO2tEQUhHTTtPQVMrQztZQWV4RHVJLGNBQWN6SSxLQUFLRTtJQUNYLElBQU5aLE1BQU0sK0JBRE1VLEtBQUtFO0lBRXJCLCtCQURJWjtJQUVFLElBQ2NvSixLQURkLGNBSFUxSSxLQUNaVjthQUdnQm9KO0tBSkN4SSxhQUtSLGdDQUpUWjtLQUtGLE9BRmtCb0o7O2NBQUFBO1lBQUFBOzthQXhObEJqSCxnQkFtT0UsT0FBQSxtQ0FkQW5DO1FBWXdDO1NBekJOd0YsUUF5Qk0sZ0NBWnhDeEY7U0FaQXFKLFNBQU8sZ0NBRDJCN0Q7UUFFdEMsK0JBVWdCOUUsS0FYWjJJO1FBRUksSUFBSi9JLElBaEpGc0ksZUF5SmNsSSxLQVpzQjhFO1FBSXhCLEdBQVgsa0JBRENsRixXQUNVLGVBRFZBLEdBdk1GNEg7YUEwTUlvQiwwQkFIRmhKO1NBU2lCTSxhQVhqQnlJO1NBT0YsT0FGSUM7O2tEQU1lMUk7O1FBVXFCLE9BakR4Q3NJO2lCQXVDY3hJLEtBQUtFLFNBVXFCLGdDQVR0Q1o7O1FBT3NDO1NBdERKNEcsUUFzREksZ0NBUHRDNUc7U0E5Q0FjLE9BQU8sZ0NBRDJCOEY7UUFFdEMsK0JBNENnQmxHLEtBN0NaSTtRQTZDaUJGLGFBN0NqQkU7UUFHSixPQXZIRTRILHdCQWlLY2hJLEtBOUNzQmtHOztJQStEcEMsT0FBQSxtQ0FoQkU1RztHQWdCc0M7WUFHeEN1SixlQUFlN0ksS0FBS0U7SUFDdEIsSUFBSTRJLFlBRGtCNUksWUFFbEJsQixNQXRCRnlKLGNBb0JlekksS0FBS0U7d0JBRWxCbEIsS0FDZ0Msb0NBRmhDOEo7SUFJTyxJQURQeEosTUFKa0JZLFlBS2xCRSxPQUFPLGdDQURQZCxLQUZBTjtJQUlKLCtCQU5pQmdCLEtBS2JJO0lBTGtCRixhQUtsQkU7SUFHTSxJQUFOVyxNQUFNLGtCQU5OL0I7SUFPSixxQ0FMSU0sS0FKYVUsUUFRYmUsS0FOQS9CO0lBT0osT0FESStCO0dBRUQ7WUFHRGdJLGdCQUFnQi9JLEtBQUtFO0lBQ2IsSUFBTmEsTUFkRjhILGVBYWdCN0ksS0FBS0U7SUFFdkIsT0FBQSw2QkFESWE7R0FDc0I7WUFHeEJpSSxjQUFjaEosS0FBS0U7SUFDWCxJQUFOWixNQUFNLCtCQURNVSxLQUFLRTtJQUVyQiwrQkFESVo7SUFEaUJZLGFBR1YsZ0NBRlBaO0lBR0osT0FBQSxjQUpnQlUsS0FDWlY7R0FHYztZQUdoQjJKLGFBQWFqSixLQUFLRTtJQUNWLElBQU5aLE1BQU0sK0JBREtVLEtBQUtFO0lBRXBCLCtCQURJWjtJQUVFLElBQ2NvSixLQURkLGNBSFMxSSxLQUNYVjthQUdnQm9KO0tBSkF4SSxhQUtQLGdDQUpUWjtLQUtGLE9BRmtCb0o7O2FBQUFBLElBZWxCLE9BQUEsbUNBbEJFcEo7V0FHZ0JvSjs7WUFyUWxCakgsZ0JBa1JFLE9BQUEsbUNBaEJBbkM7T0FjNkM7UUE1SU53RixRQTRJTSxnQ0FkN0N4RjtRQTdIQXFKLFNBQU8sZ0NBRGdDN0Q7T0FFM0MsK0JBMkhlOUUsS0E1SFgySTtPQUVJO1FBQUpPLE1BNUVGaEIsZUFzTWFsSSxLQTdINEI4RTtRQUl2Q3FFLE1BekhjeEIsa0JBa1BFekgsWUExSGhCZ0o7T0EwSGdCaEosYUE1SGhCeUk7T0FLSixPQUZJUTs7T0FxSTJDO1FBbEpKakQsUUFrSkksZ0NBWDNDNUc7UUF0SUFjLE9BQU8sZ0NBRGdDOEY7T0FFM0MsK0JBb0llbEcsS0FySVhJO09BRUk7UUFBSlIsSUF2RUZxSSxlQTBNYWpJLEtBdEk0QmtHO1FBSXZDMEMsTUF4SGNsQixrQkEwUEV4SCxZQW5JaEJOO09BbUlnQk0sYUFySWhCRTtPQUtKLE9BRkl3STs7T0E0SW9DLE9Bekt0Q047Z0JBK0phdEksS0FBS0UsU0FVb0IsZ0NBVHBDWjs7T0FPdUMsT0FoTHpDK0k7Z0JBd0thckksS0FBS0UsU0FRdUIsZ0NBUHZDWjs7R0FrQnFDO1lBR3ZDOEosZUFBZXBKLEtBQUtFO0lBQ1osSUFBTlosTUFBTSwrQkFET1UsS0FBS0U7SUFFdEIsK0JBRElaO0lBRU8sSUFBUGMsT0FBTyxnQ0FGUGQ7SUFHSiwrQkFKaUJVLEtBR2JJO0lBSGtCRixhQUdsQkU7SUFJSixPQUFBLGlDQW5PRThILGVBNE5lbEksS0FDYlY7R0FNd0M7WUFHMUMrSixlQUFlckosS0FBS0U7SUFDWixJQUFOWixNQUFNLCtCQURPVSxLQUFLRTtJQUV0QiwrQkFESVo7SUFFRSxJQUNjb0osS0FEZCxjQUhXMUksS0FDYlY7YUFHZ0JvSjtLQUpFeEksYUFLVCxnQ0FKVFo7S0FLRixPQUZrQm9KOztjQUFBQTtZQUFBQTs7UUFRb0I7U0FsTUo1RCxRQWtNSSxnQ0FYcEN4RjtTQXRMQWMsT0FBTyxnQ0FEeUIwRTtRQUVwQywrQkFvTGlCOUUsS0FyTGJJO1FBcUxrQkYsYUFyTGxCRTtRQUlKLE9BekRFNkgsZUEwT2VqSSxLQXRMbUI4RTs7UUFnTWxDLE9Bek1Bd0Q7aUJBK0xldEksS0FBS0UsU0FVZ0MsZ0NBVGxEWjs7UUFPRixPQWhOQStJO2lCQXdNZXJJLEtBQUtFLFNBUW1DLGdDQVByRFo7O0lBYUYsT0FBQSxtQ0FiRUE7R0FhdUM7WUFHekNnSyxlQUFldEosS0FBS0U7SUFDWixJQUFOWixNQUFNLCtCQURPVSxLQUFLRTtJQUV0QiwrQkFESVo7SUFFRSxJQUNjb0osS0FEZCxjQUhXMUksS0FDYlY7YUFHZ0JvSjtLQUpFeEksYUFLVCxnQ0FKVFo7S0FLRixPQUFBLG9CQUZrQm9KOztjQUFBQTtZQUFBQTs7UUFVb0I7U0E3TUo1RCxRQTZNSSxnQ0FicEN4RjtTQS9MQWMsT0FBTyxnQ0FEeUIwRTtRQUVwQywrQkE2TGlCOUUsS0E5TGJJO1FBOExrQkYsYUE5TGxCRTtRQUlKLE9BN0RFOEgsZUF1UGVsSSxLQS9MbUI4RTs7UUEyTWE7U0FqTEpvQixRQWlMSSxnQ0FYN0M1RztTQXJLQXFKLFNBQU8sZ0NBRGtDekM7UUFFN0MsK0JBbUtpQmxHLEtBcEtiMkk7UUFvS2tCekksYUFwS2xCeUk7UUFHSSxJQUFKL0ksSUExRkZxSSxlQTJQZWpJLEtBcks0QmtHO1FBSzdDLE9BQUEsb0JBREl0Rzs7UUEyS0YsT0FBQTtpQkExTkEwSTttQkFnTmV0SSxLQUFLRSxTQVVnQyxnQ0FUbERaOztRQU9GLE9BQUE7aUJBak9BK0k7bUJBeU5lckksS0FBS0UsU0FRbUMsZ0NBUHJEWjs7SUFlRixPQUFBLG1DQWZFQTtHQWV1QztZQUd6Q2lLLG1CQUFtQnZKLEtBQUtFO0lBQ2hCLElBQU5aLE1BQU0sK0JBRFdVLEtBQUtFO0lBRTFCLCtCQURJWjtJQUVFLElBQ2NvSixLQURkLGNBSGUxSSxLQUNqQlY7YUFHZ0JvSjtLQUpNeEksYUFLYixnQ0FKVFo7S0FLRixPQUZrQm9KOztjQUFBQTtZQUFBQTs7V0F6VWxCakg7U0FtVm1EO1VBdExKcUQsUUFzTEksZ0NBYmpEeEY7VUF4S0FxSixTQUFPLGdDQURzQzdEO1NBRWpELCtCQXNLcUI5RSxLQXZLakIySTtTQUVJO1VBQUpDLE1BckdGVixlQTBRbUJsSSxLQXhLNEI4RTtVQUk3Q29FLE1BNUlGdEIsd0JBd0krQzlDLE9BRzdDOEQ7U0FxS3NCMUksYUF2S3RCeUk7U0FLSixPQUZJTzs7OztRQWdMaUQ7U0E1TEpoRCxRQTRMSSxnQ0FYakQ1RztTQWhMQWMsT0FBTyxnQ0FEc0M4RjtRQUVqRCwrQkE4S3FCbEcsS0EvS2pCSTtRQStLc0JGLGFBL0t0QkU7UUFHSSxJQUFKUixJQWxHRnFJLGVBOFFtQmpJLEtBaEw0QmtHO1FBS2pELE9BREl0Rzs7UUFzTEYsT0E3T0EwSTtpQkFtT21CdEksS0FBS0UsU0FVZ0MsZ0NBVHREWjs7UUFPRixPQXBQQStJO2lCQTRPbUJySSxLQUFLRSxTQVFtQyxnQ0FQekRaOztJQWVGLE9BQUEsbUNBZkVBO0dBZTJDO1lBRzdDa0ssYUFBYUMsYUFBWXpKLEtBQUtFO0lBQ3ZCLElBQUx3SixLQUFLLFdBRE1ELGFBQVl6SixLQUFLRTtJQUVoQyxXQURJd0o7R0FDRTtZQUdKQyxjQUFjRixhQUFZekosS0FBS0U7SUFDeEIsSUFBTHdKLEtBQUssV0FET0QsYUFBWXpKLEtBQUtFO0lBRWpDLE9BQUEsMkJBREl3SjtHQUNZO1lBR2RFLGdCQUFnQkgsYUFBWXpKLEtBQUtFO0lBQ3pCLElBQU5aLE1BQU0sK0JBRG9CVSxLQUFLRTtJQUVuQywrQkFESVo7SUFFRSxZQUFBLGNBSHdCVSxLQUMxQlY7OztlQVVHLG9DQVZIQTtnQkFEK0JZLGFBS3RCLGdDQUpUWjtJQUQrQlksYUFRdEIsZ0NBUFRaO0lBUU8sSUFBTG9LLEtBQUssV0FUT0QsYUFBWXpKLEtBQUtFO0lBVWpDLFdBREl3SjtHQUUyQztZQUcvQ0csY0FBY0MsWUFBV0MsWUFBVy9KLEtBQUtFO0lBQzNDO0tBQUk0RCxJQUFJLFdBRFFnRyxZQUFzQjlKLEtBQUtFO0tBRXZDa0MsSUFBSSxXQUZtQjJILFlBQVcvSixLQUFLRTtJQUczQyxXQUZJNEQsR0FDQTFCO0dBQ0E7WUFHRjRILGdCQUFnQkYsWUFBV0MsWUFBV0UsWUFBV2pLLEtBQUtFO0lBQ3hEO0tBQUk0RCxJQUFJLFdBRFVnRyxZQUFpQzlKLEtBQUtFO0tBRXBEa0MsSUFBSSxXQUZxQjJILFlBQXNCL0osS0FBS0U7S0FHcER3QyxJQUFJLFdBSGdDdUgsWUFBV2pLLEtBQUtFO0lBSXhELFdBSEk0RCxHQUNBMUIsR0FDQU07R0FDRztZQUdMd0gsb0JBQW9CVCxhQUFZekosS0FBS0UsU0FDMUJsQjtJQUFiLElBQWFZLElBQUFaLEtBQUVtTDtJQUNiO2NBRFd2SyxHQUNHLE9BRER1SztLQUN1QjtNQUR2QkMsWUFDd0IsV0FGakJYLGFBQVl6SixLQUFLRSxVQUN4QmlLO01BQUZ2QixNQUFBaEo7S0FBQUEsSUFBQWdKO0tBQUV1QixNQUFBQzs7R0FHSjtZQUdUQywyQkFBNEJ0TCxTQUFRMEssYUFBWXpKLEtBQUtFO0lBQzVDLElBQVBsQixNQWpMRnlKLGNBZ0xnRHpJLEtBQUtFO09BQXpCbkIsVUFDMUJDO0tBQ2tCLG9DQURsQkEsS0FEMEJELFVBQXlCbUI7SUFHekMsSUFBVm9LLFVBVkZKLG9CQU9vQ1QsYUFBWXpKLEtBQUtFLFNBQ25EbEI7SUFHSixPQUFBLDRCQURJc0w7R0FDWTtZQUdkQyxjQUFjZCxhQUFZekosS0FBS0U7SUFDakMsT0FSRW1LLHVDQU9jWixhQUFZekosS0FBS0U7R0FDbUM7R0FHaEQsSUFBbEJzSyxrQkFBa0I7R0FDTiw4QkFEWkE7O0lBR0FDO01BbFpBaEo7WUFzWmdCaUoseUJBQTBCQyxRQUFROUYsTUFBSzdFLEtBQUtFO0lBQzlELElBQUlaLE1BRDBEWSxZQUUxRGxCLE1BcE1GeUosY0FrTXVEekksS0FBS0U7T0FKNUR1Syx5QkFNRXpMLEtBQ2lDLG9DQUZqQ007SUFJSjtLQURJeUYsT0FGQS9GO0tBR0E4RixRQUwwRDVFO0tBTTFERSxPQUFPLGdDQURQMEUsT0FEQUM7SUFHSiwrQkFQeUQvRSxLQU1yREk7SUFFTSxJQUFOd0ssTUFBTSxXQVJrQ0QsUUFFeEMzTDtJQU9KLFdBVG9ENkYsTUFLaERDLE9BTHFEOUUsUUFRckQ0SyxLQU5BNUw7SUFGMERrQixhQU0xREU7SUFLSixPQUhJd0s7R0FHRDtZQUdEQyxvQkFBb0I3SyxLQUFLRTtJQUMzQixPQWZrQndLOzs7Yzs7O2FBY0kxSzthQUFLRTtHQUtqQjtZQVdSNEssZUFBd0JyQixhQUFZekosS0FBS0U7SUFDM0MsR0FEMEJ1SixnQkE3SnhCTDtLQXNKRixPQXZCa0JzQjs7O2U7OztjQThCb0IxSztjQUFLRTtJQUs5QixJQURQNEksWUFKcUM1SSxZQUtyQ2xCLE1Bck9KeUosY0FnT29DekksS0FBS0U7SUFNekMsU0FESWxCLEtBRUM7T0EzYkx5Qzt5QkF5Ykl6QyxLQU9LLG9DQVJMOEo7O3VDQUNBOUo7S0FTRztNQUdVO09BQUwrTCxPQUFLLFdBakJPdEIsYUFyQ3hCZTtPQXVEUSxVQURJTztPQUZKQzs7b0JBQUFBO0tBT0osR0FQSUE7TUFZQztPQURFQyxPQVhIRDs7T0FZQyxNQUFBLHFCQURFQztPQUNGLCtCQXRCTGpNO2NBdUJPLG9DQXhCUDhKOzs4QkFDQTlKO01Bb0JPLG9DQXJCUDhKOztJQXlCVTtLQUFSb0MsUUFBUSxXQTdCVXpCLGFBQVl6SixLQUFLRTtLQThCbkNpTCxNQUFNLHVCQXpCUm5NLEtBd0JFa007S0FFSixNQTFCRWxNO0tBeUJROztTQUNWb0c7O01BQ1csSUFBTHNFLEtBQUssV0FoQ1dELGFBQVl6SixLQUFLRTtNQThCbkNpTCxRQUNKL0YsS0FDTXNFO01BRE4sVUFBQXRFO2lCQUFBQTtNQUFBQTs7O0lBSUEsT0FMSStGO0dBS0M7WUFHUEMsaUJBQWlCQyxjQUFhQyxjQUFhdEwsS0FBS0U7SUFDbEQ7S0FBSWxCLE1BdlFGeUosY0FzUTJDekksS0FBS0U7S0FFOUNpQixPQUFPLGlDQURQbkM7SUFFZSxTQUFmdU07SyxPQTdHRjFCLGNBMEdpQndCLGNBQWFDOztJQUl0QixJQUFORSxNQWpHRnRCLG9CQWdHRXFCLGNBSHlDdkwsS0FBS0UsU0FDOUNsQjtJQUlKLE9BQUEsZ0NBSEltQyxNQUVBcUs7R0FDbUI7WUFRckJDLHFCQUFxQnpMLEtBQUtFO0lBQzVCO0tBQUlsQixNQXBSRnlKLGNBbVJxQnpJLEtBQUtFO0tBRXhCNkUsT0FEQS9GO0tBRUFNLE1BSHdCWTtLQUl4QkUsT0FBTyxnQ0FEUGQsS0FEQXlGO0lBR0osK0JBTHVCL0UsS0FJbkJJO0lBRU07S0FBTnNMO09BQU07MEVBTE4xTTtJQU1KLCtCQUpJTSxLQUhtQlUsUUFNbkIwTCxLQUpBM0c7SUFGd0I3RSxhQUl4QkU7SUFLSixPQUhJc0w7R0FHRDtZQUdEQyxxQkFBcUIzTCxLQUFLRTtJQUM1QjtLQUFJbEIsTUFoU0Z5SixjQStScUJ6SSxLQUFLRTtLQUV4QjZFLE9BREEvRjtLQUVBTSxNQUh3Qlk7S0FJeEJFLE9BQU8sZ0NBRFBkLEtBREF5RjtJQUdKLCtCQUx1Qi9FLEtBSW5CSTtJQUVNO0tBQU5zTDtPQUFNOzBFQUxOMU07SUFNSiwrQkFKSU0sS0FIbUJVLFFBTW5CMEwsS0FKQTNHO0lBRndCN0UsYUFJeEJFO0lBS0osT0FISXNMO0dBR0Q7WUFLREUscUJBQXFCNUwsS0FBS0U7SUFDNUI7S0FBSThGLE9BOVNGeUMsY0E2U3FCekksS0FBS0U7S0FFeEIrRixPQS9TRndDLGNBNlNxQnpJLEtBQUtFO0tBR3hCNkUsZ0JBRkFpQixNQUNBQztLQUVBM0csTUFKd0JZO0tBS3hCRSxPQUFPLGdDQURQZCxLQURBeUY7SUFHSiwrQkFOdUIvRSxLQUtuQkk7SUFFTTtLQUFOeUw7T0FBTTs7OztTQU5ON0Y7U0FDQUM7SUFNSiwrQkFKSTNHLEtBSm1CVSxRQU9uQjZMLEtBSkE5RztJQUh3QjdFLGFBS3hCRTtJQUtKLE9BSEl5TDtHQUdEO1lBR0RDLHFCQUFxQjlMLEtBQUtFO0lBQzVCO0tBQUk4RixPQTNURnlDLGNBMFRxQnpJLEtBQUtFO0tBRXhCK0YsT0E1VEZ3QyxjQTBUcUJ6SSxLQUFLRTtLQUd4QjZFLGdCQUZBaUIsTUFDQUM7S0FFQTNHLE1BSndCWTtLQUt4QkUsT0FBTyxnQ0FEUGQsS0FEQXlGO0lBR0osK0JBTnVCL0UsS0FLbkJJO0lBRU07S0FBTnlMO09BQU07Ozs7U0FOTjdGO1NBQ0FDO0lBTUosK0JBSkkzRyxLQUptQlUsUUFPbkI2TCxLQUpBOUc7SUFId0I3RSxhQUt4QkU7SUFLSixPQUhJeUw7R0FHRDtZQUtERSxtQkFBbUIvTCxLQUFLRTtJQUMxQjtLQUFJbEIsTUExVUZ5SixjQXlVbUJ6SSxLQUFLRTtLQUV0QlosTUFGc0JZO0tBR3RCRSxPQUFPLGdDQURQZCxLQURBTjtJQUdKLCtCQUpxQmdCLEtBR2pCSTtJQUVNLElBQU5XLE1BQU0sK0JBSk4vQjtJQUtKLCtCQUpJTSxLQUZpQlUsUUFLakJlLEtBSkEvQjtJQURzQmtCLGFBR3RCRTtJQUtKLE9BSElXO0dBR0Q7WUFHRGlMLHFCQUFxQmhNLEtBQUtFO0lBQzVCLElBQUlaLE1BRHdCWTtJQUU1QiwrQkFESVo7SUFFTyxJQUFQYyxPQUFPLGdDQUZQZDtJQUdKLCtCQUp1QlUsS0FHbkJJO0lBRUksSUFBSlIsSUF0ZkZxSSxlQWlmcUJqSSxLQUNuQlY7SUFNRCxHQUFBLG1CQUZDTTtLQUdDLE1BQUEseURBUEROO0lBRHdCWSxhQUd4QkU7SUFTVyxPQVBYUjtHQU9tQztZQUdyQ3FNLGtCQUFrQmpNLEtBQUtFO0lBQ2YsSUFBTlosTUFBTSwrQkFEVVUsS0FBS0U7SUFFekIsK0JBRElaO0lBRHFCWSxhQUdkLGdDQUZQWjtJQUdKLE9BQUEsY0FKb0JVLEtBQ2hCVjtHQUdlO1lBR2pCNE0sbUJBQW1CbE0sS0FBS0U7SUFDMUIsSUFBSVosTUFEc0JZO0lBRTFCLCtCQURJWjtJQUVPLElBQVBjLE9BQU8sZ0NBRlBkO0lBR0osK0JBSnFCVSxLQUdqQkk7SUFIc0JGLGFBR3RCRTtJQUdKLE9BamhCRTRILHdCQTJnQm1CaEksS0FDakJWO0dBSzJCO1lBRzdCNk0sbUJBQW1Cbk0sS0FBS0U7SUFDMUIsSUFBSVosTUFEc0JZO0lBRTFCLCtCQURJWjtJQUVPLElBQVBjLE9BQU8sZ0NBRlBkO0lBR0osK0JBSnFCVSxLQUdqQkk7SUFIc0JGLGFBR3RCRTtJQUdJLElBQUpSLElBdGhCRnFJLGVBZ2hCbUJqSSxLQUNqQlY7SUFNSixPQXZrQmtCb0ksa0JBaWtCZHBJLEtBS0FNO0dBQ21CO1lBR3JCd00sbUJBQW1CcE0sS0FBS0U7SUFDMUIsSUFBSVosTUFEc0JZO0lBRTFCLCtCQURJWjtJQUVPLElBQVBjLE9BQU8sZ0NBRlBkO0lBR0osK0JBSnFCVSxLQUdqQkk7SUFIc0JGLGFBR3RCRTtJQUdJLElBQUpSLElBNWhCRnNJLGVBc2hCbUJsSSxLQUNqQlY7SUFNSixPQXprQmtCcUksa0JBbWtCZHJJLEtBS0FNO0dBQ21CO1lBR3JCeU0sb0JBQW9Cck0sS0FBS0U7SUFDM0IsSUFBSVosTUFEdUJZO0lBRTNCLCtCQURJWjtJQUVPLElBQVBjLE9BQU8sZ0NBRlBkO0lBR0osK0JBSnNCVSxLQUdsQkk7SUFIdUJGLGFBR3ZCRTtJQUdKLE9BdGlCRThILGVBZ2lCb0JsSSxLQUNsQlY7R0FLa0I7WUFHcEJnTix1QkFBdUJ0TSxLQUFLRTtJQUM5QixJQUFJWixNQUQwQlk7SUFFOUIsK0JBRElaO0lBRU8sSUFBUGMsT0FBTyxnQ0FGUGQ7SUFHSiwrQkFKeUJVLEtBR3JCSTtJQUgwQkYsYUFHMUJFO0lBR0osT0Fua0JFeUgsd0JBNmpCdUI3SCxLQUNyQlY7R0FLMkI7WUFHN0JpTix1QkFBdUJ2TSxLQUFLRTtJQUM5QixJQUFJWixNQUQwQlk7SUFFOUIsK0JBRElaO0lBRU8sSUFBUGMsT0FBTyxnQ0FGUGQ7SUFHSiwrQkFKeUJVLEtBR3JCSTtJQUgwQkYsYUFHMUJFO0lBR0ksSUFBSlIsSUF4a0JGa0ksZUFra0J1QjlILEtBQ3JCVjtJQU1KLE9BN21Ca0JvSSxrQkF1bUJkcEksS0FLQU07R0FDbUI7WUFHckI0TSx5QkFBeUJ4TSxLQUFLRTtJQUNoQyxJQUFJWixNQUQ0Qlk7SUFFaEMsK0JBRElaO0lBRU8sSUFBUGMsT0FBTyxnQ0FGUGQ7SUFHSiwrQkFKMkJVLEtBR3ZCSTtJQUg0QkYsYUFHNUJFO0lBR0osT0FsbEJFMEgsZUE0a0J5QjlILEtBQ3ZCVjtHQUtrQjtZQUdwQm1OLHVCQUF1QnpNLEtBQUtFO0lBQzlCLElBQUlaLE1BRDBCWTtJQUU5QiwrQkFESVo7SUFFTyxJQUFQYyxPQUFPLGdDQUZQZDtJQUdKLCtCQUp5QlUsS0FHckJJO0lBSDBCRixhQUcxQkU7SUFHSSxJQUFKUixJQXZsQkZtSSxlQWlsQnVCL0gsS0FDckJWO0lBTUosT0F4bkJrQnFJLGtCQWtuQmRySSxLQUtBTTtHQUNtQjtZQUdyQjhNLHlCQUF5QjFNLEtBQUtFO0lBQ2hDLElBQUlaLE1BRDRCWTtJQUVoQywrQkFESVo7SUFFTyxJQUFQYyxPQUFPLGdDQUZQZDtJQUdKLCtCQUoyQlUsS0FHdkJJO0lBSDRCRixhQUc1QkU7SUFHSixPQWptQkUySCxlQTJsQnlCL0gsS0FDdkJWO0dBS2tCO1lBZXBCcU4sYUFBYTNNLEtBQUtFO0lBQ3BCLElBQUlaLE1BRGdCWTtJQUVwQiwrQkFESVo7SUFFTyxJQUFQYyxPQUFPLGdDQUZQZDtJQUdKLCtCQUplVSxLQUdYSTtJQUhnQkYsYUFHaEJFO0lBR00sSUFBTitLLE1BQU07SUFDVixHQXRxQkUxSjtLQXdxQlE7TUFBSnFDLElBQUksb0JBVEs5RCxLQUNYVjtNQVNFOEMsSUFBSSxvQkFWS3BDLEtBVVksZ0NBVHZCVjtLQVVGLGlCQUxFNkwsUUFHRXJIO0tBR0osaUJBTkVxSCxRQUlFL0k7OztLQUlJO01BQUorRSxNQUFJLG9CQWRLbkgsS0FDWFY7TUFjRThILE1BQUksb0JBZktwSCxLQWVZLGdDQWR2QlY7TUFlRW9ELElBQUksb0JBaEJLMUMsS0FnQlksZ0NBZnZCVjtNQWdCRStILElBQUksb0JBakJLckgsS0FpQlksZ0NBaEJ2QlY7S0FpQkYsaUJBWkU2TCxRQVFFaEU7S0FLSixpQkFiRWdFLFFBU0UvRDtLQUtKLGlCQWRFK0QsUUFVRXpJO0tBS0osaUJBZkV5SSxTQVdFOUQ7O0lBS21CLFVBQUEsNkJBaEJyQjhEO0lBZ0JxQixPQUFBO0dBQTRCOzs7O09Bam5CbkRoRDtPQVFBQztPQXlLQVc7T0FiQUY7T0FrQkFHO09BT0FDO09BN0NBUjtPQW1FQVc7T0FVQUM7T0FpQkFDO09BbUJBQztPQW1CQUM7T0FLQUc7T0FLQUM7T0FjQUM7T0FNQUc7T0FxQkFPO09BeUNBTztPQXNDQU07T0FhQUs7T0FZQUU7T0FBQUE7T0FjQUM7T0FhQUU7T0FBQUE7T0FlQUM7T0F6SEFsQjtPQW9JQW1CO09BZUFDO09BT0FDO09BU0FDO09BVUFDO09BVUFDO09BU0FDO09BU0FDO09BVUFDO09BU0FDO09BVUFDO09BcUJBQztPQTNSQXRDOzs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0N4WmlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFqQnVDLGlCQUFpQixxQkFBUztJQUMxQkMsaUJBQWlCLHFCQUFTO0lBQzFCQyxtQkFBbUIscUJBQVM7SUFDNUJDLGtCQUFrQixxQkFBUztJQUMzQkMsaUJBQWlCLHFCQUFTO0lBQzFCQyxrQkFBa0IscUJBQVM7SUFDM0JDLGdCQUFnQixxQkFBUztJQUN6QkMsa0JBQWtCLHFCQUFTO0lBQzNCQyxrQkFBa0IscUJBQVM7SUFDM0JDLGtCQUFrQixxQkFBUztJQUMzQkM7TUFBc0IscUJBQVM7SUFDL0JDLGlCQUFpQixxQkFBUztJQUMxQkMsbUJBQW1CLHFCQUFTO0lBQzVCQztNQUF3QixxQkFBUztJQUNqQ0M7TUFBd0IscUJBQVM7SUFDakNDLGdCQUFnQixxQkFBUztJQUN6QkM7TUFBd0IscUJBQVM7SUFDakNDO01BQXdCLHFCQUFTO0lBQ2pDQyxnQkFBZ0IscUJBQVM7SUFDekJDO01BQXNCLHFCQUFTO0lBQy9CQztNQUF1QixxQkFBUztJQUNoQ0M7TUFBd0IscUJBQVM7SUFDakNDO01BQXFCLHFCQUFTO0lBQzlCQztNQUFzQixxQkFBUztJQUMvQkM7TUFBc0IscUJBQVM7SUFDL0JDO01BQXNCLHFCQUFTO0lBQy9CQztNQUF1QixxQkFBUztJQUNoQ0M7TUFBMEIscUJBQVM7SUFDbkNDO01BQTBCLHFCQUFTO0lBQ25DQztNQUE0QixxQkFBUztJQUNyQ0M7TUFBMEIscUJBQVM7SUFDbkNDO01BQTRCLHFCQUFTOzs7Ozs7WUFHckNDLGNBQWNoTjtJQUFJLE9BQWdDLHFCQUF2QixrQ0FBYkE7R0FBeUM7WUFDdkRpTixpQkFBaUJqTjtJQUFJLE9BQW1DLHFCQUExQixxQ0FBYkE7R0FBNEM7WUFDN0RrTixlQUFlbE47SUFBSSxPQUFpQyxxQkFBeEIsbUNBQWJBO0dBQTBDO1lBQ3pEbU4sZ0JBQWdCbk47SUFBSSxPQUFrQyxxQkFBekIsb0NBQWJBO0dBQTJDO1lBQzNEb04sa0JBQWtCcE4sR0FBRXFOO0lBQUksT0FBb0M7dUJBQTNCLHNDQUFmck4sT0FBRXFOO0dBQWdEO1lBR3BFQyxlQUFldE4sR0FBSSxPQUFKQSxFQUFLO1lBQ3BCdU4sZUFBZXZOLEdBQUVxTixHQUFJLE9BQU0sc0JBQVpyTixPQUFFcU4sUUFBa0I7WUFDbkNHLGlCQUFpQnhOLEdBQUVxTixHQUFFSTtJQUFJLE9BQU0sc0JBQWR6TixPQUFFcU4sT0FBRUk7R0FBcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BM0MxQ3pDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BR0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BR0FFO09BQ0FDO09BQ0FDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0MvQmlCOzs7Ozs7OztJQVhqQjNOO0lBS0U2TjtJQUNBQztJQUNBQzs7Ozs7O0lBQ0FDO0lBQ0FDLG9CQVRGak87SUFVRWtPLHdCQVZGbE87SUFXRW1PO01BQWUsdUJBRmZGLG1CQUNBQztJQTRCQUU7SUF5QkFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBcENBQyxpQkFBZTtJQUtmQztJQUlBQyxnQkFBZ0I7SUFDRSxNQUFBO0lBQWxCQyxrQkFBa0I7SUFVbEJDO01BQWUsZ0NBZmZILGVBQUFBO1lBdUNGSSx1QkFBbUIsU0FBQztZQUNwQkMsdUJBQWtCLFNBQUM7WUFzQm5CQyx1QkFBa0IsU0FBQztZQUNuQkMsZUFBYXJSO0lBQUksUUFBSkE7Y0FBQUEsR0FuQlY7Z0JBbUJVQSxHQWpCVjtRQXhGSDZCLGlDQXlHYTdCLEdBZlY7S0FDQTs7ZUFjVUEsR0FUVjtpQkFTVUEsR0FQVjtPQWxHSDZCLGtCQXlHYTdCLGlCQUxWO0lBQ0E7R0FJNkU7WUFFaEZzUixnQkFDRXJPO0lBQUosU0FBSUEsTUFFQztlQUZEQSxNQUlDO09BaEhIcEIsdUJBNEdFb0IsTUFNQztJQUNBO0dBQUM7WUFHSnNPLHlCQUF5Qm5TO0lBRVosSUFBWG9TLFdBYkZGLGdCQVd5QmxTO0lBRzNCLE9BQUEsZ0NBRElvUyxVQUZ1QnBTO0dBR2I7WUFHWnFTLGdCQUFnQnRRO0lBQU0sT0FOdEJvUSx1REFNZ0JwUTtHQUFrRDtZQUNsRXVRLGVBQWV2UTtJQUFNLE9BUHJCb1Esc0RBT2VwUTtHQUFpRDtZQUNoRXdRLHNCQUFpQixVQUFFO1lBRW5CQyxpQkFBZUMsR0FNakIsU0FDQzs7SUExSEdDO0lBQ0FDO0lBb0JBQztJQVNBQztJQUNBQztJQUNBQztJQTZGRkM7TUExSUF2UTtrQkE0SU83QixHQUFLLE9BbkNacVIsZUFtQ09yUixHQUFrQzs7U0FFckNBO1NBQ0YsS0FBRyxrQkFEREEsZUFDcUIsY0FEckJBO1VBQ2tELE9BdEN0RHFSLGVBcUNJclI7U0FDMkM7UUFBb0M7SUFHbkZxUztNQWxKQXhROztTQXFKSTdCO1NBQ0YsS0FBRyxrQkFEREEsYUFDcUIsY0FEckJBO1VBQUosT0E1Q0FxUixtQ0E0Q0lyUjtTQUMyQztRQUFvQzs7U0FFL0VBO1NBQ0YsS0FBRyxrQkFEREEsYUFDcUIsY0FEckJBO1VBQ2lFLE9BZnJFb1MsaUJBZXFFLG9CQURqRXBTO1NBQzJDO1FBQXdDO0lBR3ZGc1M7TUE1SkF6UTtrQkE4Sk83QixHQUFLLE9BWlpxUyxpQkFZMkIsNEJBQXBCclMsSUFBMEM7a0JBQzFDQSxHQUFLLE9BckJab1MsaUJBcUJPcFMsR0FBMEM7WUFHakR1UyxlQUFhQyxhQUFZN08sR0FBSSxrQkFBaEI2TyxhQUFZN087R0FBa0I7WUFDM0M4TyxrQkFBZ0JELGFBQVkzTztJQUFLLCtCQUFMQTs7O2VBQUFBOzs4Q0FBQUE7K0NBQUFBOztJQUFpQixPQUFBLFdBQTdCMk87R0FBNEM7WUFHNURFLGtCQUFnQkY7SSxZQUNSO0lBQ00sSUFBVC9RLGNBQVMsTUFBQSxXQUZFK1EsYUFFWC9RO0lBQVMsT0FBQTs7WUFHZGtSLGdCQUFjQyxZQUFXQztJQUFtQztLQUFwQnJRO0tBQUgwQjtLQUF1QixNQUFBLFdBQW5DMk8sWUFBZXJRO0tBQUssTUFBQSxXQUEvQm9RLFlBQXVCMU87SUFBdUIsT0FBQTs7WUFFNUQ0TyxrQkFBZ0JGLFlBQVdDLFlBQVdFO0lBQ1Y7S0FENEJqUTtLQUFITjtLQUFIMEI7S0FDdEIsTUFBQSxXQURVNk8sWUFBa0JqUTtLQUMzQyxNQUFBLFdBRGMrUCxZQUEwQnJRO0tBQ3ZELE1BQUEsV0FEa0JvUSxZQUFrQzFPO0tBQ3BELE1BQUE7SUFBOEIsT0FBQTs7WUFHNUI4TyxjQU9FUixhQUFZaE87SUFBTyxJQU5JeU8sY0FBVUMsYUFBUXZPLE1BTTdCSDtJQUxkO1VBRDJDRztNQUV4QixVQXpFbkIyTSxnQkF1RW1DNEI7TUFFaEIsT0FBQSxnQ0FGTUQ7O0tBSTBDO01BSnhCck8sUUFBQUQ7TUFHekNFLEtBSHlDRjtNQUFSd08sWUFJZ0MsZ0NBSmhDRDtNQUlPLE1BQUEsV0FFeENWLGFBSEEzTjtNQUh1QnVPLGFBSUssZ0NBSkxIO0tBQUFBLFdBQUFHO0tBQVVGLFVBQUFDO0tBQVF4TyxNQUFBQzs7R0FNc0I7WUFRakV5TyxvQkFBb0IvTjtJQUN0QixJQU5lbEcsTUFNTCxnQ0FEWWtHLEtBSHRCLE1BbEZFZ00sZ0JBZ0ZhbFM7SUFPZixPQUFBLHlDQVBlQTtHQU9hO1lBaUIxQmtVLGVBQXdCZCxhQUFZbE47SUFDdEMsR0FEMEJrTixnQkFuRnhCWjtLQTZERixJQUZleFMsTUF3QnVCa0csZUF0QnRDLE1BbEZFZ00sZ0JBZ0ZhbFM7S0FZZixPQUFBLHlDQVplQTs7SUFFZjtLQUZlbVUsUUF3QnVCak87S0FLaENrTyxZQTdHSmxDLGdCQWdGYWlDO0tBZ0JYRSxvQkFhRUQ7S0FaTixNQWpCZUQ7S0FnQks7O1NBQ3BCL047O01BQ1csSUFBTHNFLEtBTWdDeEUsT0FQdENFLElBRW9DLE1BQUEsV0FLVmdOLGFBTnBCMUk7TUFGRjJKO09BR2UsZ0NBSGZBO01BQ0osVUFBQWpPO2lCQUFBQTtNQUFBQTs7O1dBRElpTztHQWMrQztZQUdqREMsaUJBQWlCQyxjQUFhQyxjQUFhclM7SUFDL0IsSUFBVnNFO2FBQ0FDLFVBQVVwRSxHQUFFRCxHQUFFK1I7S0FEZDNOO0tBRzJCO01BQUEsTUFBQSxXQUpDK04sY0FFaEJuUztNQUVGLE1BQUEsV0FKS2tTLGNBRUxqUztNQUVaLE1BQUEsZ0NBRmdCOFI7S0FFYSxPQUFBO0lBQWM7SUFFbkM7S0F2Q0twVSxNQXVDTCwrQkFObUNtQztLQS9CN0MsTUFsRkUrUCxnQkFnRmFsUztLQXdDWG9VLFlBQVksK0JBTFoxTixXQUZ5Q3ZFO09BQ3pDc0UsZUFsQ1d6RztLQXlDUztJQUFBLE9BRHBCb1U7R0FFSztZQUdQSyxpQkFBaUIvSCxLQUFJZ0k7SUFDdkIsSUE5Q2UxVSxNQThDTCxjQURTME0sTUEzQ25CLE1BbEZFd0YsZ0JBZ0ZhbFM7SUErQ2YsT0FBQSw4Q0FGdUIwVSxZQTdDUjFVO0dBK0NzQjtZQUduQzJVLHFCQUFxQmpJLEtBQU0sT0FMM0IrSCxpQkFLcUIvSCxRQUE0QjtZQUNqRGtJLHFCQUFxQmxJLEtBQU0sT0FOM0IrSCxpQkFNcUIvSCxRQUE0QjtZQUdqRG1JLGlCQUFpQmhJLEtBQUk2SDtJQUN2QjtLQXZEZUksT0F1REosY0FEUWpJO0tBdERKa0ksT0F3REosc0JBRlFsSTtLQUdmOUcsZ0JBekRXK08sTUFBQUM7S0FFZixNQWxGRTdDLGdCQWdGYTZDO0tBRWYsTUFsRkU3QyxnQkFnRmE0QztLQTBEZixNQUFBO0lBQUEsT0FBQSw4Q0FKdUJKLFlBR25CM087R0FDdUQ7WUFHekRpUCxxQkFBcUJuSSxLQUFNLE9BUDNCZ0ksaUJBT3FCaEksUUFBNEI7WUFDakRvSSxxQkFBcUJwSSxLQUFNLE9BUjNCZ0ksaUJBUXFCaEksUUFBNEI7WUFFakRxSSxtQkFBbUJsVSxLQUFNLE9BbkJ6QnlULGlCQW1CbUJ6VCxRQUE0QjtZQUMvQ21VLDhCQUF5QixTQUFDO1lBQzFCQywyQkFBc0IsU0FBQztZQUN2QkMsNEJBQXVCLFNBQUM7WUFDeEJDLDRCQUF1QixTQUFDO1lBQ3hCQyw0QkFBdUIsU0FBQztZQUN4QkMsNkJBQXdCLFNBQUM7WUFDekJDLGdDQUEyQixTQUFDO1lBQzVCQyxnQ0FBMkIsU0FBQztZQUM1QkMsa0NBQTZCLFNBQUM7WUFDOUJDLGdDQUEyQixTQUFDO1lBQzVCQyxrQ0FBNkIsU0FBQzs7OztPQXJMOUIvRDtPQUNBQztPQTBDQU07T0FDQUM7T0FyQkFOO09BQ0FDO09BdUJBTztPQVVBUTtPQVFBQztPQVVBQztPQWpEQWhCO09BdURBaUI7T0FDQUU7T0FBQUE7T0FHQUM7T0FLQUM7T0FFQUc7T0FJQUU7T0FrQ0FNO09BU0FJO09BaUJBSztPQUNBQztPQUFBQTtPQVVBSTtPQUNBQztPQUFBQTtPQUVBQztPQTNEQWpCO09BNERBa0I7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0F4SUF0RDs7UUF6SEVqQztRQUNBQztRQUNBQztRQUNBQztRQUdBRztRQTJCQUM7UUF6QkE2QjtRQUNBQztRQUhBL0I7UUFGQUY7UUFzREFJO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDOztRQXBFQWxCO1FBQ0FDO1FBb0NBbUI7UUFBQUE7UUFuQ0FsQjtRQTJCQW9DO1FBR0FuQjtRQUNBWjtRQURBWTtRQUFBQTtRQUFBQTtRQUtBQztRQUNBbUI7UUFDQUM7UUFDQUM7UUFDQXBCO1FBQ0FDO1FBTEFGO1FBQUFBO1FBQUFBO1FBQUFBO1FBQUFBO1FBQUFBO1FBZUFHO1FBQUFBO1FBQUFBO1FBZkFIO1FBQUFBO1FBQUFBO1FBcUJBWjtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDdkRNOzs7Ozs7O0lBQUE7SUFNQTtJQU1BO1lBTVJzRSxtQkFBbUJ0VixNQUFLUSxLQUFNRSxTQUFRMEI7SUFDeEMsdUNBRHFCcEMsTUFBV1U7R0FDYTtHQUt6QjtJQUFsQjZVOztJQUNBQzs7OztRLE9BUEFGOztJQVFBbEk7SUFFQXFJLGVBRkFySSxnQkFGQW1JLGlCQUNBQztJQVFBRTs7SUFDQUM7Ozs7USxPQWhCQUw7O0lBaUJBakk7SUFFQXVJLGVBRkF2SSxnQkFGQXFJLGlCQUNBQztJQVFBRTs7SUFFQUM7Ozs7USxPQTFCQVI7O0lBOEJBaEk7SUFFQXlJLGlCQUZBekksa0JBTkF1SSxtQkFFQUM7SUFXQUU7O0lBRUFDOzs7O1EsT0F2Q0FYOztJQTJDQS9IO0lBRUEySSxnQkFGQTNJLGlCQU5BeUksa0JBRUFDO0lBV0FFOztJQUNBQzs7OztRLE9BbkRBZDs7SUFvREE5SDtJQUVBNkksZUFGQTdJLGdCQUZBMkksaUJBQ0FDO0lBUUFFOztJQUNBQzs7OztRLE9BNURBakI7O0lBNkRBNUg7SUFDQThJLGNBREE5SSxlQUZBNEksZ0JBQ0FDO0lBS0FFOztJQUVBQzs7OztRLE9BbkVBcEI7O0lBdUVBN0g7SUFFQWtKLGdCQUZBbEosaUJBTkFnSixrQkFFQUM7SUFXQUU7O0lBRUFDOzs7O1EsT0FoRkF2Qjs7SUFvRkEzSDtJQUVBbUosZ0JBRkFuSixpQkFOQWlKLGtCQUVBQztJQVdBRTs7SUFFQUM7Ozs7USxPQTdGQTFCOztJQWlHQXpIO0lBRUFvSixnQkFGQXBKLGlCQU5Ba0osa0JBRUFDO0lBV0FFOztJQUlBQzs7OztRLE9BNUdBN0I7O0lBZ0hBeEg7SUFFQXNKO1VBRkF0SixxQkFSQW9KLHNCQUlBQztJQWNBRTs7SUFDQUM7Ozs7USxPQTNIQWhDOztJQTRIQXZIO0lBRUF3SixlQUZBeEosZ0JBRkFzSixpQkFDQUM7Ozs7Ozs7OztZQVFBRSxlQUFlQztJQUNqQjtxQkFBYzVWO2FBQUssT0FBQSw4QkFERjRWLGtCQUNINVY7WUFBMkM7cUJBQzFDckIsS0FBS1YsS0FBSStCO2FBQUssT0FBQTswQ0FGWjRWLGtCQUVGalgsS0FBS1YsS0FBSStCO1lBQXVEO0dBQzlFO1lBR0M2VixlQUFlQztJQUNqQjtxQkFBY25YLEtBQUtFO2FBQVcsT0FBQTt5Q0FEYmlYLGtCQUNIblgsS0FBS0U7WUFBNEQ7O2EsT0ExSTdFNFU7O0dBNElEO1lBR0NsRyxjQUFjd0ksSUFBSyxPQUFBLCtCQUFMQSxJQUEyQjtZQUV6Q0MsUUFBUUM7SUFDVixJQUVXLE9BWFRKLGVBUVFJLFlBRUMsT0FoQlROLGVBY1FNO0lBQ1YsV0FIRTFJLGNBRVEwSTtHQUlUO1lBSUNDLGdCQUFnQk47SUFDbEI7cUJBQWM1VjthQUFLLE9BQUEsOEJBREQ0VixrQkFDSjVWO1lBQTRDO3FCQUMzQ3JCLEtBQUtWLEtBQUkrQjthQUFLLE9BQUE7MENBRlg0VixrQkFFSGpYLEtBQUtWLEtBQUkrQjtZQUF3RDtHQUMvRTtZQUdDbVcsZ0JBQWdCTDtJQUNsQjtxQkFBY25YLEtBQUtFO2FBQVcsT0FBQTt5Q0FEWmlYLGtCQUNKblgsS0FBS0U7WUFBNkQ7O2EsT0FoSzlFNFU7O0dBa0tEO1lBR0M1RixlQUFla0ksSUFBSyxPQUFBLCtCQUFMQSxJQUE0QjtZQUUzQ0ssU0FBU0g7SUFDWCxJQUVXLE9BWFRFLGdCQVFTRixZQUVBLE9BaEJUQyxnQkFjU0Q7SUFDWCxXQUhFcEksZUFFU29JO0dBSVY7WUFJQ0ksa0JBQWtCVDtJQUNwQjtxQkFBYzVWO2FBQUssT0FBQSw4QkFEQzRWLGtCQUNONVY7WUFBOEM7cUJBQzdDckIsS0FBS1YsS0FBSStCO2FBQUssT0FBQTswQ0FGVDRWLGtCQUVMalgsS0FBS1YsS0FBSStCO1lBQTBEO0dBQ2pGO1lBR0NzVyxrQkFBa0JSO0lBQ3BCO3FCQUFjblgsS0FBS0U7YUFBVyxPQUFBO3lDQURWaVgsa0JBQ05uWCxLQUFLRTtZQUErRDs7YSxPQXRMaEY0VTs7R0F3TEQ7WUFHQ2pHLGlCQUFpQnVJLElBQUssT0FBQSwrQkFBTEEsSUFBOEI7WUFFL0NRLFdBQVdOO0lBQ2I7S0FFVyxPQVhUSyxrQkFRV0w7S0FFRixPQWhCVEksa0JBY1dKO0lBQ2IsV0FIRXpJLGlCQUVXeUk7R0FJWjtZQUlDTyxnQkFBZ0JDLGdCQUFlQztJQUNqQztxQkFBYzFXO2FBQUssT0FBQTt5Q0FERHlXLG1CQUFlQyxtQkFDbkIxVztZQUFpRTtxQkFFdEVyQixLQUFLVixLQUFJK0I7YUFDWCxPQUFBOztzQkFKV3lXO3NCQUFlQztzQkFHeEIvWDtzQkFBS1Y7c0JBQUkrQjtZQUM4RDtHQUMvRTtZQUdDMlcsZ0JBQWdCQyxnQkFBZUM7SUFDakM7cUJBQ1NsWSxLQUFLRTthQUNQLE9BQUE7O3NCQUhXK1g7c0JBQWVDO3NCQUV4QmxZO3NCQUFLRTtZQUNnRTs7YSxPQWhONUU0VTs7R0FrTkQ7WUFLQ3FELFNBQVNDLFNBQVFDO0lBQ25CO0tBRVcsT0FiVEwsZ0JBVVNJLFlBQVFDO0tBRVIsT0FwQlRSLGdCQWtCU08sWUFBUUM7S0FGQ0MsS0FFREQ7S0FGRmpCLEtBRU5nQjtJQUNYLFdBSHlCLCtCQUFSaEIsSUFBR2tCO0dBTW5CO1lBSUNDLGtCQUFrQlQsZ0JBQWVDLGdCQUFlUztJQUNsRDtxQkFDU25YO2FBQ0YsT0FBQTs7c0JBSGF5VztzQkFBZUM7c0JBQWVTO3NCQUV6Q25YO1lBQ2dGO3FCQUVoRnJCLEtBQUtWLEtBQUkrQjthQUNYLE9BQUE7O3NCQU5heVc7c0JBQWVDO3NCQUFlUztzQkFLekN4WTtzQkFBS1Y7c0JBQUkrQjtZQU9SO0dBQ1Q7WUFHQ29YLGtCQUFrQlIsZ0JBQWVDLGdCQUFlUTtJQUNsRDtxQkFDUzFZLEtBQUtFO2FBQ1AsT0FBQTs7c0JBSGErWDtzQkFBZUM7c0JBQWVRO3NCQUV6QzFZO3NCQUFLRTtZQU1HOzthLE9BdlBmNFU7O0dBeVBEO1lBS0M2RCxXQUFXUCxTQUFRQyxTQUFRTztJQUM3QjtLQUVXLE9BbEJUSCxrQkFlV0wsWUFBUUMsWUFBUU87S0FFbEIsT0FqQ1RMLGtCQStCV0gsWUFBUUMsWUFBUU87S0FGSkMsS0FFSUQ7S0FGUE4sS0FFREQ7S0FGRmpCLEtBRU5nQjtJQUNiLFdBSDhCLCtCQUFYaEIsSUFBR2tCLElBQUdPO0dBTXhCO1lBSUNDLGdCQUFnQjdCO0lBQ2xCO3FCQUFjNVY7YUFBSyxPQUFBLDhCQURENFYsa0JBQ0o1VjtZQUE0QztxQkFDM0NyQixLQUFLVixLQUFJK0I7YUFBSyxPQUFBOzBDQUZYNFYsa0JBRUhqWCxLQUFLVixLQUFJK0I7WUFBd0Q7R0FDL0U7WUFHQzBYLGdCQUFnQjVCO0lBQ2xCO3FCQUFjblgsS0FBS0U7YUFBVyxPQUFBO3lDQURaaVgsa0JBQ0puWCxLQUFLRTtZQUE2RDs7YSxPQTdROUU0VTs7R0ErUUQ7WUFHQ2hHLGVBQWVzSSxJQUFLLE9BQUEsK0JBQUxBLElBQTRCO1lBRTNDNEIsU0FBUzFCO0lBQ1gsSUFFVyxPQVhUeUIsZ0JBUVN6QixZQUVBLE9BaEJUd0IsZ0JBY1N4QjtJQUNYLFdBSEV4SSxlQUVTd0k7R0FJVjtZQUlDMkIsaUJBQWlCaEM7SUFDbkI7cUJBQWM1VjthQUFLLE9BQUEsOEJBREE0VixrQkFDTDVWO1lBQTZDO3FCQUM1Q3JCLEtBQUtWLEtBQUkrQjthQUFLLE9BQUE7MENBRlY0VixrQkFFSmpYLEtBQUtWLEtBQUkrQjtZQUF5RDtHQUNoRjtZQUdDNlgsaUJBQWlCL0I7SUFDbkI7cUJBQWNuWCxLQUFLRTthQUFXLE9BQUE7eUNBRFhpWCxrQkFDTG5YLEtBQUtFO1lBQThEOzthLE9BblMvRTRVOztHQXFTRDtZQUdDL0YsZ0JBQWdCcUksSUFBSyxPQUFBLCtCQUFMQSxJQUE2QjtZQUU3QytCLFVBQVU3QjtJQUNaO0tBRVcsT0FYVDRCLGlCQVFVNUI7S0FFRCxPQWhCVDJCLGlCQWNVM0I7SUFDWixXQUhFdkksZ0JBRVV1STtHQUlYO1lBSUM4QixtQkFBbUJ0QixnQkFBZUM7SUFDcEM7cUJBQWMxVzthQUFLLE9BQUE7eUNBREV5VyxtQkFBZUMsbUJBQ3RCMVc7WUFBb0U7cUJBRXpFckIsS0FBS1YsS0FBSStCO2FBQ1gsT0FBQTs7c0JBSmN5VztzQkFBZUM7c0JBRzNCL1g7c0JBQUtWO3NCQUFJK0I7WUFDaUU7R0FDbEY7WUFHQ2dZLG1CQUFtQnBCLGdCQUFlQztJQUNwQztxQkFDU2xZLEtBQUtFO2FBQ1AsT0FBQTs7c0JBSGMrWDtzQkFBZUM7c0JBRTNCbFk7c0JBQUtFO1lBQ21FOzthLE9BN1QvRTRVOztHQStURDtZQUdDOUYsa0JBQWtCb0ksSUFBR2tCO0lBQUssT0FBQSwrQkFBUmxCLElBQUdrQjtHQUFrQztZQUV2RGdCLFlBQVlsQixTQUFRQztJQUN0QjtLQUVXLE9BYlRnQixtQkFVWWpCLFlBQVFDO0tBRVgsT0FwQlRlLG1CQWtCWWhCLFlBQVFDO0lBQ3RCLFdBSEVySixrQkFFWW9KLFlBQVFDO0dBSXJCO0dBS0Q7SUFERWtCOztJQUlBQzs7OztRLE9BaFZBMUU7O0lBb1ZBckg7SUFFQWdNOztPQUZBaE07T0FSQThMO09BSUFDO0lBY0FFOztJQUlBQzs7OztRLE9BbFdBN0U7O0lBc1dBcEg7SUFFQWtNOztPQUZBbE07T0FSQWdNO09BSUFDO0lBY0FFOztJQUNBQzs7OztRLE9BalhBaEY7O0lBa1hBbkg7SUFDQW9NLGNBREFwTSxlQUZBa00sZ0JBQ0FDO0lBS0FFOztJQUlBQzs7OztRLE9BMVhBbkY7O0lBOFhBbEg7SUFFQXNNOztPQUZBdE07T0FSQW9NO09BSUFDO0lBY0FFOztJQUlBQzs7OztRLE9BNVlBdEY7O0lBZ1pBakg7SUFFQXdNOztPQUZBeE07T0FSQXNNO09BSUFDO0lBY0FFOztJQUNBQzs7OztRLE9BM1pBekY7O0lBNFpBaEg7SUFDQTBNLGNBREExTSxlQUZBd00sZ0JBQ0FDO0lBS0FFOztJQUlBQzs7OztRLE9BcGFBNUY7O0lBd2FBL0c7SUFFQTRNO1VBRkE1TSxxQkFSQTBNLHNCQUlBQztJQWNBRTs7SUFJQUM7Ozs7USxPQXRiQS9GOztJQTBiQTlHO0lBRUE4TTtVQUZBOU0sc0JBUkE0TSx1QkFJQUM7SUFnQkFFOztJQUlBQzs7OztRLE9BMWNBbEc7O0lBOGNBN0c7SUFFQWdOOztPQUZBaE47T0FSQThNO09BSUFDO0lBY0FFOztJQUlBQzs7OztRLE9BNWRBckc7O0lBZ2VBNUc7SUFFQWtOO1VBRkFsTixvQkFSQWdOLHFCQUlBQztJQWNBRTs7SUFJQUM7Ozs7USxPQTllQXhHOztJQWtmQTNHO0lBRUFvTjtVQUZBcE4scUJBUkFrTixzQkFJQUM7SUFjQUU7O0lBSUFDOzs7O1EsT0FoZ0JBM0c7O0lBb2dCQTFHO0lBRUFzTjtVQUZBdE4scUJBUkFvTixzQkFJQUM7SUFjQUU7O0lBSUFDOzs7O1EsT0FsaEJBOUc7O0lBc2hCQXpHO0lBRUF3TjtVQUZBeE4scUJBUkFzTixzQkFJQUM7SUFjQUU7O0lBSUFDOzs7O1EsT0FwaUJBakg7O0lBd2lCQXhHO0lBRUEwTjtVQUZBMU4sc0JBUkF3Tix1QkFJQUM7SUFjQUU7O0lBSUFDOzs7O1EsT0F0akJBcEg7O0lBMGpCQXZHO0lBRUE0Tjs7T0FGQTVOO09BUkEwTjtPQUlBQztJQWNBRTs7SUFJQUM7Ozs7USxPQXhrQkF2SDs7SUE0a0JBdEc7SUFFQThOOztPQUZBOU47T0FSQTROO09BSUFDO0lBY0FFOztJQUlBQzs7OztRLE9BMWxCQTFIOztJQWdtQkFyRztJQUVBZ087O09BRkFoTztPQVZBOE47T0FJQUM7SUFnQkFFOztJQUlBQzs7OztRLE9BOW1CQTdIOztJQWtuQkFwRztJQUVBa087O09BRkFsTztPQVJBZ087T0FJQUM7SUFjQUU7O0lBSUFDOzs7O1EsT0Fob0JBaEk7O0lBc29CQW5HO0lBRUFvTzs7T0FGQXBPO09BVkFrTztPQUlBQztZQW1CQUUsV0FBV0MsS0FBSUM7SUFDakI7cUJBQWM3YjthQUFtQixVQUFBLFdBRHBCNGIsS0FDQzViO2FBQW1CLE9BQUEsV0FEaEI2YjtZQUN1QjtxQkFDekJsZCxLQUFLVixLQUFJK0I7YUFBNkIsVUFBQSxXQUZ4QzRiLEtBRVc1YjthQUE2QixPQUFBLFdBRnBDNmIsYUFFRmxkLEtBQUtWO1lBQXdDO0dBQzNEO1lBR0M2ZCxXQUFXRixLQUFJQztJQUNqQjtxQkFBY2xkLEtBQUtFO2FBQVcsT0FBSSxXQURyQitjLEtBQ3FCLFdBRGpCQyxhQUNIbGQsS0FBS0U7WUFBMkM7cUJBQzNDRixLQUFLRSxTQUFRa2Q7YUFBUSxPQUFJO3NCQUYvQkgsS0FFK0IsV0FGM0JDLGFBRUVsZCxLQUFLRSxTQUFRa2Q7WUFBa0Q7R0FDakY7WUFHQ0gsSUFBSUksV0FBVUMsWUFBV0MsWUFBV0w7SUFDdEM7S0FFVyxNQVRUQyxXQU15QkksWUFBV0w7S0FFM0IsTUFkVEYsV0FZY00sWUFBc0JKO0lBQ3RDLFdBQVUsV0FESkcsV0FBZ0NIO0dBSXJDOzs7Ozs7O09BN3BCQ25JO09BQ0FDO09BQ0FwSTtPQUVBcUk7T0FLQUM7T0FDQUM7T0FDQXRJO09BRUF1STtPQUtBQztPQUVBQztPQUlBeEk7T0FFQXlJO09BS0FDO09BRUFDO09BSUExSTtPQUVBMkk7T0FLQUM7T0FDQUM7T0FDQTVJO09BRUE2STtPQUtBQztPQUNBQztPQUNBN0k7T0FDQThJO09BR0FDO09BRUFDO09BSUFqSjtPQUVBa0o7T0FLQUM7T0FFQUM7T0FJQWxKO09BRUFtSjtPQUtBQztPQUVBQztPQUlBbko7T0FFQW9KO09BS0FDO09BSUFDO09BSUFySjtPQUVBc0o7T0FRQUM7T0FDQUM7T0FDQXZKO09BRUF3SjtPQUtBQztPQU1BRTtPQU1BdEk7T0FFQXlJO09BUUFFO09BTUFDO09BTUF0STtPQUVBdUk7T0FRQUM7T0FNQUM7T0FNQTlJO09BRUErSTtPQVFBQztPQVFBRztPQVVBRztPQVFBSTtPQWdCQUU7T0FlQUU7T0FRQUc7T0FNQUM7T0FNQWpLO09BRUFrSztPQVFBQztPQU1BQztPQU1Bbks7T0FFQW9LO09BUUFDO09BUUFDO09BUUFySztPQUVBc0s7T0FRQUM7T0FJQUM7T0FJQS9MO09BRUFnTTtPQVFBQztPQUlBQztPQUlBak07T0FFQWtNO09BUUFDO09BQ0FDO09BQ0FuTTtPQUNBb007T0FHQUM7T0FJQUM7T0FJQXJNO09BRUFzTTtPQVFBQztPQUlBQztPQUlBdk07T0FFQXdNO09BUUFDO09BQ0FDO09BQ0F6TTtPQUNBME07T0FHQUM7T0FJQUM7T0FJQTNNO09BRUE0TTtPQVFBQztPQUlBQztPQUlBN007T0FFQThNO09BVUFDO09BSUFDO09BTUFDO09BUUFDO09BSUFDO09BSUFqTjtPQUVBa047T0FRQUM7T0FJQUM7T0FJQW5OO09BRUFvTjtPQVFBQztPQUlBQztPQUlBck47T0FFQXNOO09BUUFDO09BSUFDO09BSUF2TjtPQUVBd047T0FRQUM7T0FJQUM7T0FJQXpOO09BRUEwTjtPQVFBQztPQUlBQztPQUlBM047T0FFQTROO09BUUFDO09BSUFDO09BSUE3TjtPQUVBOE47T0FRQUM7T0FJQUM7T0FNQS9OO09BRUFnTztPQVFBQztPQUlBQztPQUlBak87T0FFQWtPO09BUUFDO09BSUFDO09BTUFuTztPQUVBb087T0FXQUM7T0FNQUc7T0FNQUY7Ozs7RTs7Ozs7O0dDL25CYTs7SUFBQTs7OztFOzs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztJQ2pFYk87SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFFQUMsY0FBMkJDLFFBQU92YztJQUV0QixJQUZEd2MsMkJBQ0NDLFVBQ0EsV0FGZUYsV0FBT3ZjO0lBR2xDLEdBSFd3YztLQUtLO01BQVZFLFVBQVUsZ0NBSkpELFNBTFpOO01BVU14ZCxNQUFNLCtCQUROK2Q7TUFFQXplLE1BQU0sV0FWWm1lLHVCQVNNemQsUUFMTThkO01BQUFFLFlBT0EsZ0NBRE4xZSxLQU5Nd2U7TUFBTGhaLFFBTUR4RjtNQU5KMmUsUUFLSWplOztLQUlNO01BVFZrZSxRQVNVLCtCQVRBSjtNQUFBRSxZQUFBRjtNQUFMaFo7TUFBTG1aLFFBQUFDO0lBWU0sSUFBTmhZLFFBQU0sV0FibUIwWCxXQUN6QkssT0FBS25aLE9BRDJCekQ7V0FhaEM2RSxVQVpVOFg7Y0FBVkM7Y0FlQzs7WUFLSEUsZ0JBQWlCQyxVQUFVQyxNQUFLQztJQUN4QixJQUFOdGUsTUFBTSwrQkExQlJ3ZDtJQTJCRixXQUY2QmEsTUFDekJyZSxRQTFCRndkO0lBNEJZO0tBQVZ0ZDtLQUNBbEIsTUFBTSxXQTNCUjBlLHNCQXdCRTFkLEtBRUFFO0lBRUosR0FMbUJrZTtTQU1aRyxhQU5ZSDtRQU1aRyxhQUZIdmY7TUFJQSxXQUFBLGtDQUpBQSxLQUVHdWY7TUFFSCxPQUFBOzs7UUFLRU4sWUFURmpmLE1BU3lDLCtCQVR6Q0EsT0FIQWdCO0lBYUYsV0FkMkJxZSxNQWF2QkosVUFURmpmO0lBREFrQjtJQWFRLElBQU5pTCxNQUFNLFdBaEJzQm1ULFdBYTVCTCxPQVZGL2Q7T0FBQUEsZUFDQWxCLEtBY0csT0FGRG1NO0lBS0EsSUFERXFULE1BQ0Ysa0NBakJGeGYsS0FEQWtCO0lBd0JBLE9BQUEsc0JBUElzZTtHQU9TOztJQVFFOzs7Ozs7S0FBZkM7S0FDQUM7S0FDQUMseUJBRkFGLGNBQ0FDO0lBSnFFOzs7Ozs7WUFHckVEO1lBQ0FDO1lBQ0FDOztZQUdGQyxxQkFBcUJDLFlBQVdDO0lBQ2xDLEtBRHVCRCxZQUViLE9BRndCQztRQUczQkMsT0FIZ0JGO0lBR1IsT0FBQSwrQkFBUkUsTUFIMkJEO0dBR007O0lBY2xCLGNBQWRFLGNBakJOSjthQWtCTUssV0FBV0M7S0FBaUIsV0FBQSxpQkFBakJBO0tBQWlCLE9BQUE7SUFBZ0I7YUFDNUNDLFlBQVluZixLQUFLVixLQUFJNGY7S0FBMkIsV0FBQSxpQkFBM0JBO0tBQTJCLE9BQUEsaUJBQXBDbGYsS0FBS1Y7SUFBK0M7YUFDaEU4ZixXQUFXcGYsS0FBS0U7S0FBdUIsV0FBQSxpQkFBNUJGLEtBQUtFO0tBQXVCLE9BQUE7SUFBMkI7YUFDbEVtZixhQUFlcmYsS0FBS0UsU0FBUU47S0FBaUIsV0FBQSxpQkFBOUJJLEtBQUtFLFNBQVFOO0tBQWlCLE9BQUE7SUFBaUM7Ozs7YUFKOUVvZixhQUNBQyxZQUNBRSxhQUNBQyxZQUNBQztLQTdCa0NDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFqQjtLQUFBQztLQUFBQztJQW1CNUM7WUFuQjRDVztZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBakI7WUFBQUM7WUFBQUM7Ozs7YUF5Q3RDSyxZQUFZVztLQUMrQixXQUFBLGlCQUQvQkE7S0FDK0IsT0FsQzdDZjtJQWtDeUU7YUFHdkVLLFdBQVc3TSxhQUFZOE07S0FBNkIsV0FBQSxpQkFBN0JBO0tBQTZCLE9BQUEsaUJBQXpDOU07SUFBeUQ7YUFFcEUrTSxZQUFZN2IsY0FBYXRELEtBQUtWLEtBQUk0ZjtLQUNBLFdBQUEsaUJBREFBO0tBQ0EsT0FBQSxpQkFEdEI1YixjQUFhdEQsS0FBS1Y7SUFDb0I7YUFHbEQ4ZixXQUFXM1YsYUFBWXpKLEtBQUtFO0tBQ2pCLFdBQUEsaUJBREF1SixhQUFZekosS0FBS0U7S0FDakIsT0FBQTtJQUF1QzthQUdsRG1mLGFBQWU1VixhQUFZekosS0FBS0UsU0FBUU47S0FDN0IsV0FBQSxpQkFESTZKLGFBQVl6SixLQUFLRSxTQUFRTjtLQUM3QixPQUFBO0lBQTZDO2FBR3hENmUsYUFBYW1CO0tBQ2Y7c0JBQWN2ZSxHQUFLLE9BZmpCNGQsV0FjYVcsZUFDRHZlLEdBQWlDO3NCQUNoQ3JCLEtBQUtWLEtBQUkrQjtjQUFLLE9BZDNCOGQsWUFZYVMsZUFFQTVmLEtBQUtWLEtBQUkrQjthQUE0QztJQUNuRTthQUdDcWQsYUFBYW1CO0tBQ2Y7c0JBQWM3ZixLQUFLRTtjQUFXLE9BZjVCa2YsV0FjYVMsZUFDRDdmLEtBQUtFO2FBQWtEO3NCQUU1REYsS0FBTUUsU0FBUU47Y0FDaEI7Ozt1QkFEUU07YUFDcUU7SUFDbkY7YUFHQ3llLE1BQU1tQjtLQUNSO01BRVcsT0FYVHBCLGFBUU1vQjtNQUVHLE9BaEJUckIsYUFjTXFCO0tBQ1IsV0FqQ0VkLFlBZ0NNYztJQUlQO0lBdkNMOztZQUdNZDtZQUlBQztZQUVBRTtZQUlBQztZQUlBQztZQUlBWjtZQU1BQztZQVFBQzs7OzthQWdCQUssWUFBWWUsZUFBY0M7S0FHMUIsV0FBQSxpQkFIWUQsZUFBY0M7S0FHMUIsT0FwRkZwQjtJQW9GNkM7YUFHM0NLLFdBQVdnQixjQUFhQyxjQUFhaEI7S0FDQSxXQUFBLGlCQURBQTtLQUNBLE9BQUEsaUJBRDFCZSxjQUFhQztJQUM2QjthQUdyRGYsWUFBWWdCLGVBQWNDLGVBQWNwZ0IsS0FBS1YsS0FBSTRmO0tBQ0EsVUFBQSxpQkFEQUE7S0FDQSxPQUFBLGlCQURyQ2lCLGVBQWNDLGVBQWNwZ0IsS0FBS1Y7SUFDb0I7YUFHakU4ZixXQUFXaUIsY0FBYUMsY0FBYXRnQixLQUFLRTtLQUMvQixVQUFBLGlCQURBbWdCLGNBQWFDLGNBQWF0Z0IsS0FBS0U7S0FDL0IsT0FBQTtJQUFxRDthQUdoRW1mLGFBQWVnQixjQUFhQyxjQUFhdGdCLEtBQUtFLFNBQVFOO0tBQzNDLFVBQUEsaUJBREl5Z0IsY0FBYUMsY0FBYXRnQixLQUFLRSxTQUFRTjtLQUMzQyxPQUFBO0lBQTJEO2FBR3RFNmUsYUFBYThCLGFBQVlDO0tBQzNCO3NCQUFjbmY7Y0FBSyxPQWpCakI0ZCxXQWdCYXNCLGdCQUFZQyxnQkFDYm5mO2FBQW1EO3NCQUV4RHJCLEtBQUtWLEtBQUkrQjtjQUFLLE9BZnJCOGQsWUFZYW9CLGdCQUFZQyxnQkFHbEJ4Z0IsS0FBS1YsS0FBSStCO2FBQStEO0lBQ2hGO2FBR0NxZCxhQUFhK0IsYUFBWUM7S0FDM0I7c0JBQ1MxZ0IsS0FBS0U7Y0FBVyxPQWpCdkJrZixXQWVhcUIsZ0JBQVlDLGdCQUVsQjFnQixLQUFLRTthQUFvRTtzQkFFekVGLEtBQU1FLFNBQVFOO2NBQ2hCOzs7dUJBRFFNO2FBQ3FFO0lBQ25GO2FBR0N5ZSxNQUFNZ0MsYUFBWUM7S0FDcEI7TUFFVyxNQVpUbEMsYUFTTWlDLGdCQUFZQztNQUVULE1BbEJUbkMsYUFnQk1rQyxnQkFBWUM7S0FDcEIsV0F2Q0U1QixZQXNDTTJCLGdCQUFZQztJQUluQjtJQTdDTDs7WUFHTTVCO1lBTUFDO1lBSUFFO1lBSUFDO1lBSUFDO1lBSUFaO1lBT0FDO1lBU0FDOzs7O2FBZ0JBSyxZQUFZZSxlQUFjQyxlQUFjYTtLQUd4QyxVQUFBLGlCQUhZZCxlQUFjQyxlQUFjYTtLQUd4QyxPQTFJRmpDO0lBMEkyRDthQUd6REssV0FBV2dCLGNBQWFDLGNBQWFZLGNBQWE1QjtLQUNBLFVBQUEsaUJBREFBO0tBQ0EsT0FBQSxpQkFEdkNlLGNBQWFDLGNBQWFZO0lBQzZCO2FBR2xFM0I7S0FBWWdCLGVBQWNDLGVBQWNXLGVBQWMvZ0IsS0FBS1YsS0FBSTRmO0tBQ0EsVUFBQSxpQkFEQUE7S0FDQSxPQUFBOztjQURuRGlCO2NBQWNDO2NBQWNXO2NBQWMvZ0I7Y0FBS1Y7O0lBQ29CO2FBRy9FOGY7S0FBV2lCLGNBQWFDLGNBQWFVLGNBQWFoaEIsS0FBS0U7S0FDNUM7O1FBQUE7Z0JBREFtZ0IsY0FBYUMsY0FBYVUsY0FBYWhoQixLQUFLRTtLQUM1QyxPQUFBO0lBQWtFO2FBRzdFbWY7S0FBZWdCLGNBQWFDLGNBQWFVLGNBQWFoaEIsS0FBS0UsU0FBUU47S0FDeEQ7O1FBQUE7Z0JBREl5Z0IsY0FBYUMsY0FBYVUsY0FBYWhoQixLQUFLRSxTQUFRTjtLQUN4RCxPQUFBO0lBQXdFO2FBR25GNmUsYUFBYThCLGFBQVlDLGFBQVlTO0tBQ3ZDO3NCQUFjNWY7Y0FBSyxPQWpCakI0ZDt1QkFnQmFzQixnQkFBWUMsZ0JBQVlTLGdCQUN6QjVmO2FBQW9FO3NCQUV6RXJCLEtBQUtWLEtBQUkrQjtjQUNYLE9BaEJMOGQ7dUJBWWFvQjt1QkFBWUM7dUJBQVlTO3VCQUc5QmpoQjt1QkFBS1Y7dUJBQUkrQjthQUNpRTtJQUNsRjthQUdDcWQsYUFBYStCLGFBQVlDLGFBQVlRO0tBQ3ZDO3NCQUNTbGhCLEtBQUtFO2NBQ1AsT0FuQkxrZjt1QkFnQmFxQjt1QkFBWUM7dUJBQVlRO3VCQUU5QmxoQjt1QkFBS0U7YUFDbUU7c0JBRXhFRixLQUFNRSxTQUFRTjtjQUNoQjs7O3VCQURRTTthQUNxRTtJQUNuRjthQUdDeWUsTUFBTWdDLGFBQVlDLGFBQVlPO0tBQ2hDO01BRVcsTUFiVHpDLGFBVU1pQyxnQkFBWUMsZ0JBQVlPO01BRXJCLE1BcEJUMUMsYUFrQk1rQyxnQkFBWUMsZ0JBQVlPO0tBQ2hDO2FBekNFbkMsWUF3Q00yQixnQkFBWUMsZ0JBQVlPOzs7SUFJL0I7SUEvQ0w7O1lBR01uQztZQU1BQztZQUlBRTtZQUlBQztZQUlBQztZQUlBWjtZQVFBQztZQVVBQzs7O0lBVzBCOzs7O0tBQXhCeUM7SUFINEU7a0RBRzVFQTs7OztJQXlCWTs7WUEyQmhCQyxpQkFBaUI1UCxHQUFHNlAsYUFBWUM7SUFDbEMsS0FEc0JELGFBRVosT0FBQSxXQUZTN1AsR0FBZThQO1FBRzNCQyxnQkFIZUY7SUFHQSxPQUFBLDhCQUhIN1AsUUFHWitQLGVBSDJCRDtHQUd1QztHQU92RTs7SUFBQTtNQUFBOzs7Ozs7SUFJZTtNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBK0RidkMsWUFBWUU7S0FDZDtNQUtRLFVBQUUsaUJBTklBO01BS04sTUFBQTtNQURKLFVBQUU7S0FBRixPQUFBO0lBR0U7YUFHSkQsV0FBV3pNLFlBQVcwTTtLQUN4QixJQUFJdUMsbUJBQ0FoYztLQUNKOztPQUh3QnlaO2dCQUdUeFY7UUFDVyxVQUFBLGlCQUpiOEksWUFHRTlJO1FBRlgrWCxjQUdVLGdDQUhWQTtRQUNBaGM7O09BR1U7S0FDSixJQUFOekcsTUFBTSxpQkFOY2tnQjtRQUVwQnpaLGVBSUF6RzthQTdGSnFpQjtLQStGSyxVQVBESSxhQU9DLE1BQUEsOEJBRkR6aUI7S0FFQyxPQUFBO0lBQ3VEO2FBRzFEbWdCLFlBQVl2YixhQUFZNUQsS0FBS1YsS0FBSTRmO0tBQ25DO01BQ0kxWixPQURNLGlCQUR5QjBaO01BRy9CaGYsY0FBYyw4QkFIUUYsS0FBS1YsS0FFM0JrRztNQUVBQztLQUNKOztPQUxtQ3laO2dCQUtwQnhWO1FBRlh4SixhQUdTLGlCQU5DMEQsYUFBWTVELEtBR3RCRSxZQUVXd0o7UUFEWGpFOztPQUdVO1lBSFZBLGVBRkFEO2VBQ0F0RjtlQXRHSm1oQjtJQTZHNkQ7YUFHM0RqQyxXQUFXdFYsWUFBVzlKLEtBQUtFO0tBQzdCLElBQUlsQixNQUFPLDZCQURhZ0IsS0FBS0UsVUFFekJ3aEI7Y0FDQXRoQjtNQUNGLEdBSEVwQixPQUNBMGlCLFFBbEhKTDtNQWtISUs7OEJBRlM1WCxZQUFXOUosS0FBS0U7S0FNUTtLQUV4QixJQUFUeWhCLFNBQVMsaUJBUFQzaUIsS0FFQW9CO1FBREFzaEIsU0FEQTFpQixLQWpISnFpQjtLQXlIbUIsT0FEZk07SUFFRTthQUdKdEMsYUFBZXZWLFlBQVk5SixLQUFNRSxTQUFRTjtLQUFLLGdEQUFiTTtJQUFrRDthQUVuRnVlLGFBQWFtQjtLQUNmO3NCQUFjdmUsR0FBSyxPQXpDakI0ZCxXQXdDYVcsZUFDRHZlLEdBQWlDO3NCQUNoQ3JCLEtBQUtWLEtBQUkrQjtjQUFLLE9BOUIzQjhkLFlBNEJhUyxlQUVBNWYsS0FBS1YsS0FBSStCO2FBQTRDO0lBQ25FO2FBR0NxZCxhQUFhbUI7S0FDZjtzQkFBYzdmLEtBQUtFO2NBQVcsT0F0QjVCa2YsV0FxQmFTLGVBQ0Q3ZixLQUFLRTthQUFrRDtzQkFDbERGLEtBQUtFLFNBQVFOO2NBQU0sT0FWcEN5ZixhQVFhUSxlQUVJN2YsS0FBS0UsU0FBUU47YUFBb0Q7SUFDbkY7YUFHQytlLE1BQU1tQjtLQUNSLElBRVcsTUFUVHBCLGFBTU1vQixnQkFFRyxNQWRUckIsYUFZTXFCO0tBQ1IsV0EvREVkLFlBOERNYztJQUlQO0lBckU2RDtZQUc1RGQ7WUFVQUM7WUFZQUU7WUFhQUM7WUFhQUM7WUFFQVo7WUFNQUM7WUFNQUM7OzthQVdBSyxZQUFZNEMsSUFBR0M7S0FDakI7TUFLUSxVQUFFLGlCQU5JRCxJQUFHQztNQUtULE1BQUE7TUFESixVQUFFO0tBQUYsT0FBQTtJQUdFO2FBR0o1QyxXQUFXek0sWUFBV0MsWUFBV3lNO0tBQ25DLElBQUl1QyxtQkFDQWhjO0tBQ0o7O09BSG1DeVo7Z0JBR3BCeFY7UUFDVyxVQUFBLGlCQUpiOEksWUFBV0MsWUFHVC9JO1FBRlgrWCxjQUdVLGdDQUhWQTtRQUNBaGM7O09BR1U7S0FDSixJQUFOekcsTUFBTSxpQkFOeUJrZ0I7UUFFL0J6WixlQUlBekc7YUF0S0pxaUI7S0F3S0ssVUFQREksYUFPQyxNQUFBLDhCQUZEemlCO0tBRUMsT0FBQTtJQUN1RDthQUcxRG1nQixZQUFZdmIsYUFBWUMsYUFBWTdELEtBQUtWLEtBQUk0ZjtLQUMvQztNQUNJMVosT0FETSxpQkFEcUMwWjtNQUczQ2hmLGNBQWMsOEJBSG9CRixLQUFLVixLQUV2Q2tHO01BRUFDO0tBQ0o7O09BTCtDeVo7Z0JBS2hDeFY7UUFGWHhKO1NBR1MsaUJBTkMwRCxhQUFZQyxhQUFZN0QsS0FHbENFLFlBRVd3SjtRQURYakU7O09BR1U7WUFIVkEsZUFGQUQ7ZUFDQXRGO2VBL0tKbWhCO0lBc0w2RDthQUczRGpDLFdBQVd0VixZQUFXQyxZQUFXL0osS0FBS0U7S0FDeEMsSUFBSWxCLE1BQU8sNkJBRHdCZ0IsS0FBS0UsVUFFcEN3aEI7Y0FDQXRoQjtNQUNGLEdBSEVwQixPQUNBMGlCLFFBM0xKTDtNQTJMSUs7OEJBRlM1WCxZQUFXQyxZQUFXL0osS0FBS0U7S0FNUTtLQUVuQyxJQUFUeWhCLFNBQVMsaUJBUFQzaUIsS0FFQW9CO1FBREFzaEIsU0FEQTFpQixLQTFMSnFpQjtLQWtNbUIsT0FEZk07SUFFRTthQUdKdEMsYUFBZXZWLFlBQVlDLFlBQVkvSixLQUFNRSxTQUFRTixHQUN2RCxnREFEK0NNO0lBQ1Y7YUFHbkN1ZSxhQUFhOEIsYUFBWUM7S0FDM0I7c0JBQWNuZjtjQUFLLE9BM0NqQjRkLFdBMENhc0IsZ0JBQVlDLGdCQUNibmY7YUFBbUQ7c0JBRXhEckIsS0FBS1YsS0FBSStCO2NBQUssT0FqQ3JCOGQsWUE4QmFvQixnQkFBWUMsZ0JBR2xCeGdCLEtBQUtWLEtBQUkrQjthQUErRDtJQUNoRjthQUdDcWQsYUFBYStCLGFBQVlDO0tBQzNCO3NCQUNTMWdCLEtBQUtFO2NBQVcsT0ExQnZCa2YsV0F3QmFxQixnQkFBWUMsZ0JBRWxCMWdCLEtBQUtFO2FBQW9FO3NCQUV6RUYsS0FBS0UsU0FBUU47Y0FDZixPQWhCTHlmO3VCQVdhb0IsZ0JBQVlDLGdCQUlsQjFnQixLQUFLRSxTQUFRTjthQUNnRDtJQUNyRTthQUdDK2UsTUFBTWdDLGFBQVlDO0tBQ3BCO01BRVcsTUFaVGxDLGFBU01pQyxnQkFBWUM7TUFFVCxNQWxCVG5DLGFBZ0JNa0MsZ0JBQVlDO0tBQ3BCLFdBckVFNUIsWUFvRU0yQixnQkFBWUM7SUFJbkI7SUEzRTZEO1lBRzVENUI7WUFVQUM7WUFZQUU7WUFhQUM7WUFhQUM7WUFJQVo7WUFPQUM7WUFTQUM7OzthQVdBSyxZQUFZNEMsSUFBR0MsSUFBR0M7S0FDcEI7TUFLUSxVQUFFLGlCQU5JRixJQUFHQyxJQUFHQztNQUtaLE1BQUE7TUFESixVQUFFO0tBQUYsT0FBQTtJQUdFO2FBR0o3QyxXQUFXek0sWUFBV0MsWUFBV0UsWUFBV3VNO0tBQzlDLElBQUl1QyxtQkFDQWhjO0tBQ0o7O09BSDhDeVo7Z0JBRy9CeFY7UUFDVyxVQUFBLGlCQUpiOEksWUFBV0MsWUFBV0UsWUFHcEJqSjtRQUZYK1gsY0FHVSxnQ0FIVkE7UUFDQWhjOztPQUdVO0tBQ0osSUFBTnpHLE1BQU0saUJBTm9Da2dCO1FBRTFDelosZUFJQXpHO2FBclBKcWlCO0tBdVBLLFVBUERJLGFBT0MsTUFBQSw4QkFGRHppQjtLQUVDLE9BQUE7SUFDdUQ7YUFHMURtZ0IsWUFBWXZiLGFBQVlDLGFBQVlHLGFBQVloRSxLQUFLVixLQUFJNGY7S0FDM0Q7TUFDSTFaLE9BRE0saUJBRGlEMFo7TUFHdkRoZixjQUFjLDhCQUhnQ0YsS0FBS1YsS0FFbkRrRztNQUVBQztLQUNKOztPQUwyRHlaO2dCQUs1Q3hWO1FBRlh4SjtTQUdTO2lCQU5DMEQsYUFBWUMsYUFBWUcsYUFBWWhFLEtBRzlDRSxZQUVXd0o7UUFEWGpFOztPQUdVO1lBSFZBLGVBRkFEO2VBQ0F0RjtlQTlQSm1oQjtJQXFRNkQ7YUFHM0RqQyxXQUFXdFYsWUFBV0MsWUFBV0UsWUFBV2pLLEtBQUtFO0tBQ25ELElBQUlsQixNQUFPLDZCQURtQ2dCLEtBQUtFLFVBRS9Dd2hCO2NBQ0F0aEI7TUFDRixHQUhFcEIsT0FDQTBpQixRQTFRSkw7TUEwUUlLOztxQkFGUzVYLFlBQVdDLFlBQVdFLFlBQVdqSyxLQUFLRTtLQU1RO0tBRTlDLElBQVR5aEIsU0FBUyxpQkFQVDNpQixLQUVBb0I7UUFEQXNoQixTQURBMWlCLEtBelFKcWlCO0tBaVJtQixPQURmTTtJQUVFO2FBR0p0QyxhQUFldlYsWUFBWUMsWUFBWUUsWUFBWWpLLEtBQU1FLFNBQVFOLEdBQ25FLGdEQUQyRE07SUFDdEI7YUFHbkN1ZSxhQUFhOEIsYUFBWUMsYUFBWVM7S0FDdkM7c0JBQWM1ZjtjQUFLLE9BM0NqQjRkO3VCQTBDYXNCLGdCQUFZQyxnQkFBWVMsZ0JBQ3pCNWY7YUFBb0U7c0JBRXpFckIsS0FBS1YsS0FBSStCO2NBQ1gsT0FsQ0w4ZDt1QkE4QmFvQjt1QkFBWUM7dUJBQVlTO3VCQUc5QmpoQjt1QkFBS1Y7dUJBQUkrQjthQUNpRTtJQUNsRjthQUdDcWQsYUFBYStCLGFBQVlDLGFBQVlRO0tBQ3ZDO3NCQUNTbGhCLEtBQUtFO2NBQ1AsT0E1QkxrZjt1QkF5QmFxQjt1QkFBWUM7dUJBQVlRO3VCQUU5QmxoQjt1QkFBS0U7YUFDbUU7c0JBRXhFRixLQUFLRSxTQUFRTjtjQUNmLE9BbEJMeWY7dUJBWWFvQjt1QkFBWUM7dUJBQVlRO3VCQUs5QmxoQjt1QkFBS0U7dUJBQVFOO2FBQ2lFO0lBQ3RGO2FBR0MrZSxNQUFNZ0MsYUFBWUMsYUFBWU87S0FDaEM7TUFFVyxNQWJUekMsYUFVTWlDLGdCQUFZQyxnQkFBWU87TUFFckIsTUFwQlQxQyxhQWtCTWtDLGdCQUFZQyxnQkFBWU87S0FDaEM7YUF2RUVuQyxZQXNFTTJCLGdCQUFZQyxnQkFBWU87OztJQUkvQjtJQTdFNkQ7WUFHNURuQztZQVVBQztZQVlBRTtZQWFBQztZQWFBQztZQUlBWjtZQVFBQztZQVVBQzs7Ozs7T0ExbEJGbkI7T0FFQUU7T0FEQUQ7T0FHQUU7T0FxQkFROzs7O1FBeU80Qjs7OztTQUF4QmlEO1NBSGE7O2tEQUdiQTs7Ozs7Ozs7Ozs7O1FBT3dCOzs7O1NBQXhCQTtTQUhhOztrREFHYkE7Ozs7Ozs7Ozs7OztRQU93Qjs7OztTQUF4QkE7U0FIYTs7a0RBR2JBOzs7Ozs7Ozs7Ozs7O1FBV2E7Ozs7U0FBQTs7Ozs7Ozs7Ozs7O1FBT0E7Ozs7U0FBQTs7Ozs7Ozs7Ozs7O1FBT0E7Ozs7U0FBQTs7Ozs7Ozs7Ozs7O1FBZ0NUO1NBQUE7U0FEQSxNQUFBO1NBREosVUFBRTtTQUpKcEMsY0FFQTtpQkFRQUMsV0FBV0M7U0FDYixJQUFJdUMsbUJBQ0FoYztTQUNKOztXQUhheVo7b0JBR0V4VjtZQUNXLFVBQUEsaUJBRFhBO1lBRlgrWCxjQUdVLGdDQUhWQTtZQUNBaGM7O1dBR1U7U0FDSixJQUFOekcsTUFBTSxpQkFOR2tnQjtZQUVUelosZUFJQXpHO2lCQXBDSnFpQjtTQXNDSyxVQVBESSxhQU9DLE1BQUEsOEJBRkR6aUI7U0FFQyxPQUFBO1FBQ3VEO2lCQUcxRG1nQixZQUFZbmYsS0FBS1YsS0FBSTRmO1NBQ3ZCO1VBQ0kxWixPQURNLGlCQURhMFo7VUFHbkJoZixjQUFjLDhCQUhKRixLQUFLVixLQUVma0c7VUFFQUM7U0FDSjs7V0FMdUJ5WjtvQkFLUnhWO1lBRlh4SixhQUdTLGlCQU5DRixLQUdWRSxZQUVXd0o7WUFEWGpFOztXQUdVO2dCQUhWQSxlQUZBRDttQkFDQXRGO21CQTdDSm1oQjtRQW9ENkQ7aUJBRzNEakMsV0FBV3BmLEtBQUtFO1NBQ2xCLElBQUlsQixNQUFPLDZCQURFZ0IsS0FBS0UsVUFFZHdoQjtrQkFDQXRoQjtVQUNGLEdBSEVwQixPQUNBMGlCLFFBekRKTDtVQXlESUs7a0NBRlMxaEIsS0FBS0U7U0FNUTtTQUViLElBQVR5aEIsU0FBUyxpQkFQVDNpQixLQUVBb0I7WUFEQXNoQixTQURBMWlCLEtBeERKcWlCO1NBZ0VtQixPQURmTTtRQUVFO2lCQUdKdEMsYUFBZXJmLEtBQU1FLFNBQVFOO1NBQUssOENBQWJNO1FBQWtEO1FBQ3hEO1NBQWZ1ZSxtQkF2Q0FRLFlBWUFFO1NBNEJBVCxtQkFmQVUsWUFhQUM7U0FHQVYsWUFuREFLLGFBaURBUCxjQUNBQzs7Z0JBeENBTztnQkFZQUU7Z0JBYUFDO2dCQWFBQztnQkFoREFMO2dCQWlEQVA7Z0JBQ0FDO2dCQUNBQzs7Ozs7OztFOzs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUN0WEYxSjtJQUNBckk7SUFDQW1JO0lBQ0E3UztJQUNBOFM7SUFDQTdNOztZQUVBNFosZ0JBQWtCL2hCLEtBQU1FLFNBQVE4aEI7SUFDbEMsaURBRDBCOWhCO0dBQ3FCOztJQUc3Q2tWO0lBQ0F2STtJQUNBcUk7SUFDQS9TO0lBQ0FnVDtJQUNBL007O1lBRUE2WixnQkFBa0JqaUIsS0FBTUUsU0FBUThoQjtJQUNsQyxpREFEMEI5aEI7R0FDcUI7O0lBRzdDcVY7SUFDQXpJO0lBQ0F1STtJQUNBdlM7SUFDQXdTO0lBQ0F2TTs7WUFFQW1aLGtCQUFvQmxpQixLQUFNRSxTQUFROGhCO0lBQ3BDLG1EQUQ0QjloQjtHQUNxQjs7SUFHL0N3VjtJQUNBM0k7SUFDQXlJO0lBQ0F4UztJQUNBeVM7SUFDQTVNOztZQUVBc1osaUJBQW1CbmlCLEtBQU1FLFNBQVE4aEI7SUFDbkMsa0RBRDJCOWhCO0dBQ3FCOztJQUc5QzJWO0lBQ0E3STtJQUNBMkk7SUFDQWxUO0lBQ0FtVDtJQUNBNU07O1lBRUFvWixnQkFBa0JwaUIsS0FBTUUsU0FBUThoQjtJQUNsQyxpREFEMEI5aEI7R0FDcUI7O0lBRzdDOFY7SUFDQTlJO0lBQ0E0STtJQUNBblQ7SUFDQW9UO0lBQ0E5TTs7WUFDQW9aLGVBQWlCcmlCLEtBQU1FLFNBQVE4aEI7SUFBUSxnREFBaEI5aEI7R0FBOEQ7O0lBQ3JGaVc7SUFDQWxKO0lBQ0FnSjtJQUNBaFQ7SUFDQWlUO0lBQ0E5TTs7WUFFQWtaLGlCQUFtQnRpQixLQUFNRSxTQUFROGhCO0lBQ25DLGtEQUQyQjloQjtHQUNxQjs7SUFHOUM0YTtJQUNBOU07SUFDQTRNO0lBQ0E1VjtJQUNBNlY7SUFDQWhROztZQUVBMFgsc0JBQXdCdmlCLEtBQU1FLFNBQVE4aEI7SUFDeEMsdURBRGdDOWhCO0dBQ3FCOztJQUduRG9XO0lBQ0FuSjtJQUNBaUo7SUFDQWxUO0lBQ0FtVDtJQUNBaE47O1lBRUFtWixpQkFBbUJ4aUIsS0FBTUUsU0FBUThoQjtJQUNuQyxrREFEMkI5aEI7R0FDcUI7O0lBRzlDdVc7SUFDQXBKO0lBQ0FrSjtJQUNBcFQ7SUFDQXFUO0lBQ0FsTjs7WUFFQW1aLGlCQUFtQnppQixLQUFNRSxTQUFROGhCO0lBQ25DLGtEQUQyQjloQjtHQUNxQjs7SUFHOUMwVztJQUNBdEo7SUFDQW9KO0lBQ0F0VDtJQUNBdVQ7SUFDQXBOOztZQUVBbVoscUJBQXVCMWlCLEtBQU1FLFNBQVE4aEI7SUFDdkMsc0RBRCtCOWhCO0dBQ3FCOztJQUdsRG1YO0lBQ0F6STtJQUNBb0k7SUFDQTNUO0lBQ0E2VDtJQUNBMU47O1lBRUFtWixlQUFpQmxSLEdBQUd6UixLQUFNRSxTQUFROGhCO0lBQ3BDLGdEQUQ0QjloQjtHQUNrQjs7SUFHNUMwaUI7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7O1lBRUFDLGtCQUFvQnpSLEdBQUd6UixLQUFNRSxTQUFROGhCO0lBQ3ZDLGlEQUQrQjloQjtHQUNnQjs7SUFHN0N1WDtJQUNBdkk7SUFDQXFJO0lBQ0EvVDtJQUNBZ1U7SUFDQTdOOztZQUVBd1osZ0JBQWtCMVIsR0FBR3pSLEtBQU1FLFNBQVE4aEI7SUFDckMsbURBRDZCOWhCO0dBQ2tCOztJQUc3QzBYO0lBQ0EvSTtJQUNBNkk7SUFDQWhVO0lBQ0FpVTtJQUNBL047O1lBRUF3WixrQkFBb0IzUixHQUFHelIsS0FBTUUsU0FBUThoQjtJQUN2QyxtREFEK0I5aEI7R0FDa0I7O0lBRy9DOFk7SUFDQWxLO0lBQ0FnSztJQUNBM1U7SUFDQTRVO0lBQ0F4Tzs7WUFFQThZLGdCQUFrQjVSLEdBQUd6UixLQUFNRSxTQUFROGhCO0lBQ3JDLGlEQUQ2QjloQjtHQUNrQjs7SUFHN0NpWjtJQUNBcEs7SUFDQWtLO0lBQ0FoVTtJQUNBaVU7SUFDQXBPOztZQUVBd1ksaUJBQW1CN1IsR0FBR3pSLEtBQU1FLFNBQVE4aEI7SUFDdEMsa0RBRDhCOWhCO0dBQ2tCOztJQUc5Q29aO0lBQ0F0SztJQUNBb0s7SUFDQS9UO0lBQ0FnVTtJQUNBak87O1lBRUFtWSxtQkFBcUI5UixHQUFHK1IsR0FBR3hqQixLQUFNRSxTQUFROGhCO0lBQzNDLG9EQURtQzloQjtHQUNlOztJQUdoRHlhO0lBQ0E1TTtJQUNBME07SUFDQXJVO0lBQ0FzVTtJQUNBM087O1lBRUEwWCxxQkFBdUJ6akIsS0FBTUUsU0FBUThoQjtJQUN2QyxzREFEK0I5aEI7R0FDcUI7O0lBR2xEc2E7SUFDQTFNO0lBQ0F3TTtJQUNBb0o7SUFDQW5KO0lBQ0FvSjs7WUFDQUMsZUFBaUI1akIsS0FBTUUsU0FBUThoQjtJQUFRLGdEQUFoQjloQjtHQUE4RDs7SUFDckZnYTtJQUNBdE07SUFDQW9NO0lBQ0FsVTtJQUNBbVU7SUFDQXJPOztZQUVBaVksdUJBQXlCN2pCLEtBQU1FLFNBQVE4aEI7SUFDekMsd0RBRGlDOWhCO0dBQ3FCOztJQUdwRG1hO0lBQ0F4TTtJQUNBc007SUFDQWhVO0lBQ0FpVTtJQUNBdE87O1lBRUFnWSx1QkFBeUI5akIsS0FBTUUsU0FBUThoQjtJQUN6Qyx3REFEaUM5aEI7R0FDcUI7O0lBR3BENlo7SUFDQXBNO0lBQ0FrTTtJQUNBa0s7SUFDQWpLO0lBQ0FrSzs7WUFDQUMsZUFBaUJqa0IsS0FBTUUsU0FBUThoQjtJQUFRLGdEQUFoQjloQjtHQUE4RDs7SUFDckZ1WjtJQUNBaE07SUFDQThMO0lBQ0EzVDtJQUNBNFQ7SUFDQS9OOztZQUVBeVksdUJBQXlCbGtCLEtBQU1FLFNBQVE4aEI7SUFDekMsd0RBRGlDOWhCO0dBQ3FCOztJQUdwRDBaO0lBQ0FsTTtJQUNBZ007SUFDQTdUO0lBQ0E4VDtJQUNBaE87O1lBRUF3WSx1QkFBeUJua0IsS0FBTUUsU0FBUThoQjtJQUN6Qyx3REFEaUM5aEI7R0FDcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FwUXBEK1U7T0FDQXJJO09BQ0FtSTtPQUNBN1M7T0FDQThTO09BQ0E3TTtPQUVBNFo7T0FJQTNNO09BQ0F2STtPQUNBcUk7T0FDQS9TO09BQ0FnVDtPQUNBL007T0FFQTZaO09BSUExTTtPQUNBekk7T0FDQXVJO09BQ0F2UztPQUNBd1M7T0FDQXZNO09BRUFtWjtPQUlBeE07T0FDQTNJO09BQ0F5STtPQUNBeFM7T0FDQXlTO09BQ0E1TTtPQUVBc1o7T0FJQXRNO09BQ0E3STtPQUNBMkk7T0FDQWxUO09BQ0FtVDtPQUNBNU07T0FFQW9aO09BSUFwTTtPQUNBOUk7T0FDQTRJO09BQ0FuVDtPQUNBb1Q7T0FDQTlNO09BQ0FvWjtPQUNBbE07T0FDQWxKO09BQ0FnSjtPQUNBaFQ7T0FDQWlUO09BQ0E5TTtPQUVBa1o7T0FJQXhIO09BQ0E5TTtPQUNBNE07T0FDQTVWO09BQ0E2VjtPQUNBaFE7T0FFQTBYO09BSUFqTTtPQUNBbko7T0FDQWlKO09BQ0FsVDtPQUNBbVQ7T0FDQWhOO09BRUFtWjtPQUlBL0w7T0FDQXBKO09BQ0FrSjtPQUNBcFQ7T0FDQXFUO09BQ0FsTjtPQUVBbVo7T0FJQTdMO09BQ0F0SjtPQUNBb0o7T0FDQXRUO09BQ0F1VDtPQUNBcE47T0FFQW1aO09BSUFyTDtPQUNBekk7T0FDQW9JO09BQ0EzVDtPQUNBNlQ7T0FDQTFOO09BRUFtWjtPQUlBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQUlBekw7T0FDQXZJO09BQ0FxSTtPQUNBL1Q7T0FDQWdVO09BQ0E3TjtPQUVBd1o7T0FJQXZMO09BQ0EvSTtPQUNBNkk7T0FDQWhVO09BQ0FpVTtPQUNBL047T0FFQXdaO09BSUFwSztPQUNBbEs7T0FDQWdLO09BQ0EzVTtPQUNBNFU7T0FDQXhPO09BRUE4WTtPQUlBbEs7T0FDQXBLO09BQ0FrSztPQUNBaFU7T0FDQWlVO09BQ0FwTztPQUVBd1k7T0FJQWhLO09BQ0F0SztPQUNBb0s7T0FDQS9UO09BQ0FnVTtPQUNBak87T0FFQW1ZO09BSUE1STtPQUNBNU07T0FDQTBNO09BQ0FyVTtPQUNBc1U7T0FDQTNPO09BRUEwWDtPQUlBako7T0FDQTFNO09BQ0F3TTtPQUNBb0o7T0FDQW5KO09BQ0FvSjtPQUNBQztPQUNBMUo7T0FDQXRNO09BQ0FvTTtPQUNBbFU7T0FDQW1VO09BQ0FyTztPQUVBaVk7T0FJQXhKO09BQ0F4TTtPQUNBc007T0FDQWhVO09BQ0FpVTtPQUNBdE87T0FFQWdZO09BSUEvSjtPQUNBcE07T0FDQWtNO09BQ0FrSztPQUNBaks7T0FDQWtLO09BQ0FDO09BQ0F4SztPQUNBaE07T0FDQThMO09BQ0EzVDtPQUNBNFQ7T0FDQS9OO09BRUF5WTtPQUlBdEs7T0FDQWxNO09BQ0FnTTtPQUNBN1Q7T0FDQThUO09BQ0FoTztPQUVBd1k7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHQ3JRaUI7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxNQUFBO0lBRGJuRixjQUNGO0lBR0VDO0lBQ0FFO0lBQ0FDOztZQUVBQyxhQUFlcmYsS0FBTUUsU0FBUWtrQjtJQUMvQix3REFEdUJsa0I7R0FDK0I7O0lBR3BEbWtCOzs7T0FaQXJGO09BSUFDO09BQ0FFO09BQ0FDO09BRUFDOzs7Ozs7Ozs7O1NBSUFnRjtTQVpBckY7U0FJQUM7U0FDQUU7U0FDQUM7U0FFQUM7OztFOzs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztZRVJKdUgsbUI7Z0NBQUFBOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7WUMwQkFDO0lBQ00sSUFBSkMsSUFBSTtJQUNMLE9BQUEsMkJBRENBO2NBQUFBO2NBVHlCO0dBVTZCO3NCQUZ4REQ7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNzQ0VFOztJQWdTRkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXhWRUM7SUFBWTs7T0FDRDs7T0FDQTtlQUNGOztHQUFPO1lBR2hCQyxRQUFRQyxJQUFHQztJQUNiOztZQURVRDs7YUFBR0MsSUFFUzs7OztjQUZUQSxJQUlnQjs7SUFESjtHQUNXO1lBR2xDQyxZQUFZQztJQUFLLE9BQUEsNEJBUGpCSixZQU9ZSTtHQUFzQztHQWVqQztJQUFuQkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUEwRUVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJUTtJQUNSLElBQUEsU0FIQUM7Ozs7O1FBQUFBOztZQVFBQyxXQU1GLE9BZEVELDBCQUZBRCxVQWdCcUM7R0FZL0IsSUFBQSxNQUFBLHNDQUNORztZQUdBQztJQUNGO0tBQUcsT0FKREQ7S0FJQyxrQkFBc0IsbUNBSnZCQTtrQkFJdUQsbUNBSnZEQTtHQUlrRjtZQUdsRkU7SUFBYSxZQUNMO1FBQ0hDO0lBQUssT0FBTEEsS0FUTEg7R0FTc0I7R0FtQkYsSUFBcEJJO1lBZ0JBQztJQUFrQjtLQW5CWEMsSUFHUEY7S0FIdUIsT0FBQSxxQ0FBZUcsR0FBSyxPQUFMQSxLQUFXLEdBQTFDRDtJQUFnQixPQUFBO0dBbUJVO0dBR3pCO0lBQVZFO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO1lBRUFDLGdCQUFnQkMsT0FBTUMsVUFBU0MsTUFBS0MsV0FBVUM7SUFDaEQsd0JBRGtCSjs7O1NBQ1JLLFVBRFFMOzswQ0FDUkssVUFEUUw7U0FDUkssMENBRFFMOztJQVFaO1lBUElLLDRCQU9vQiw4QkFQcEJBO0lBT29CLE9BQUE7b0NBUk5KLFVBQVNDLE1BQUtDLFdBQVVDO0dBUUw7O0lBdUJuQyw0QkFBQSxRQUFBOzs7OztVQUNKRTs7OztRQUVZO1NBRjJCQztTQUFQQztTQUU1QkM7U0FDQUM7U0FDQUM7U0FDQUMsb0JBakxKbEQ7U0FrTEltRDtTQTFOY0M7V0FtVGhCO29DQS9GRlIsOEJBQWdDRTtTQXBOaEJPO29CQWdUVEM7WUFDRixrQ0E3RkxWLE1BNEZPVTtZQUNGLE9BQUE7V0FDTTtTQWxUR0M7V0E2Tlo7Ozs7Ozs7O2lCQXBESjVCO2lCQUhBSDs7Z0JBNEQrQjs7Ozs7b0NBWHpCd0IsaUNBY2dEOzs7Ozs4QkFHM0JRLEdBaEJyQlAsbUJBZ0JxQk8sYUFBd0I7Ozs7O3NCQWxFbkRoQzs7Ozs7dUJBS0FLOzs7dUNBSkFKOzs7O3lCQUNBQzs7Ozs7Ozt3QkEyRWdCLElBQUs7O3dCQXZFckJJLGFBeUU0Qjs7dUJBQTZCOzs7Ozs7aUNBRzlCMkI7eUJBQUssSUE5TXpCbkMsSUErS0Q0QixrQkE5S1csV0E2TVVPLEtBOU1wQm5DO3lCQStLRDRCOzsyQkE3S1k7OzRDLE9BNE1TTzs2QkE5TXBCbkM7Ozt3QkE4TTZFOzs7Ozs7a0NBS2xFbUM7MEJBQUs7MkJBN01ibkMsSUF5S0o0QjsyQkF4S1c7NkJBQUE7OzhDLE9BNE1DTzsrQkE3TVJuQzswQkF5S0o0QiwyQkFvQ1lPLEtBN01SbkM7O3lCQTZNb0U7Ozs7OzttQ0FHbkRvQzsyQkF0Q3JCUCxxQkFzQ3FCTyxHQXRDckJQOzswQkFzQzBEOzs7Ozs7b0NBSTlDUTs0QkFDRjs2QkFwRWhCOzhCQUFBOztpQ0FDRTs7bUNBa0VnQkE7OzRDQS9EUkMsTUFBS3BCLE1BQUtDLFdBQVdDLFNBQVksV0FBakNrQixVQUFLcEI7bUNBQTJDOzs7OzZCQUcxRDs4QkFDRzsrQkFBQTs7a0NBQUs7O29DQTJEVW1COzs2Q0EzRHFDQyxNQUFLcEIsTUFBUSxXQUFib0IsVUFBS3BCLE9BQXVCOzs7OzhCQUdoRjsrQkFBSztnQ0FBQTs7bUNBQUs7O3FDQXdES21COzs4Q0F4RGdDQyxNQUFRLFdBQVJBLFNBQWtCOzs7Ozs7Ozs7OEJBMkRwQ0M7OEJBQU5EOzhCQUZJRSxVQUVFRDs4QkFGWnRCLFdBRU1xQjtvQ0FFSCw4QkFMTEQ7NkJBT1k7OEJBQUpILElBQUksOEJBUFpHOzhCQVFRSSxhQUFXLDhCQVJuQkosUUFPUUg7OEJBRUFRO2dDQUNGOztrQ0FWTkw7a0NBT1FIO3lEQVBSRyxPQU9RSDs2QkFLSjs4QkFDTTsrQkFBQSxPQUFBLDJCQUpGUTsrQkFHQUM7Ozs7Ozs4QkFHQSxrQ0FmUk47a0NBWVFNLFVBT0E7O2lDQWxCSUgsY0FXSkcsVUFYTjFCLFdBT013Qjs7O2lDQVBJRCxhQUFWdkIsV0FERm9COzRCQTlDWlosbUJBK0NjUixVQUFVdUIsa0JBL0N4QmY7OzJCQXNFeUQ7Ozs7OytCQTlHL0RmOzs7OztnQ0FDQUM7Ozs7OzBDQXdIMkJ5QixHQXZIM0J4QixzQkF1SDJCd0IsYUFBMkI7Ozs7OzJDQUczQkEsR0F6SDNCdkIsMEJBeUgyQnVCLGFBQStCOzs7Ozs0Q0FHL0JBLEdBM0gzQnRCLDBCQTJIMkJzQixhQUErQjs7O1NBN1MvQ1EsT0E0TlAsaUNBUkZ0QixNQUF1Q0M7UUFuTjNDLElBQUksNkJBRFNxQixNQUFLWCxHQUFFRixHQUFFRDs7OztjQUVaZTtVQUNSLGtDQURRQTtVQUNSOzs7OztjQUVTQztVQUNULGtDQURTQTtVQUNUOzs7UUErU0k7ZUE5RkVwQixrREFDQUM7U0EzR0FvQjs7O29CQXVHNEJ2QixLQUU1QkMsVUFJQUksZ0JBREFEO1FBL0hKckMsWUFtQkl3RDs7Ozs7OztPQXFOTkMsd0JBOU5FdkQ7OztRQTZPRTs7Ozs7O01BSUosSUFBTyxVQUFBOzs7Ozs7Ozs7U0FMUHdEOzs7UUFBQUE7O09BV0FDLFVBekJBRix1QkFjQUM7WUFtQkFFLDBCQUF3QixPQUFBLDJCQUF3QztHQUloRTtJQUZBQzs7O1FBR2lCO1NBQUEsT0FBQTtTQUFkLE9BQUE7UUFBQSxPQUFBOztZQUdIQywrQkFBb0N0QjtJQUN0QixJQUFadUIsWUFURkg7SUFVRixJQVdNLElBQUEsV0FBRyxXQWI2QnBCLFFBRWxDd0I7VUFZQUM7O01BQUFDLDBCQUFBRDtNQVpBRCxjQVlBRSxLQUFtQjs7SUFFQztLQUFBLE9BeEJ0Qk47S0F3QnNCLE9BQUEsaUNBZnBCRztJQS9MRjdDLGNBOE1zQjtJQUN4QixPQWZJOEM7R0FlRDtHQUc4QjtJQUEvQkc7OztRQUF5RCxPQUFBOztJQUN6REM7OztRQUF1RCxPQUFBOztZQWF2REM7SUFDRjtLQS9QWTVELElBSVJGO0tBSlksT0FBQSxxQ0FBY0csR0FBSyxPQUFMQSxLQUFZLEdBQTlCRDtLQWlRVjtPQUFBOztrQkFDUW9DO1VBQUs7V0FBOEIsT0FBQSw4QkFBbkNBO1dBQW1DLE9BQUE7V0FBakIsT0FBQTtVQUFBLE9BQUE7U0FBbUQ7O0lBRDdFLE9BQUE7R0FFcUM7WUFnQ3JDeUI7SUFDSSxJQUVNQyxtQkFGTiw0QkF6UUp4RDtTQTJRVXdELGtCQURKO0lBRW9CLFdBQUE7SUFBMUI7SUFBQSxPQUFBOztzQkFDZUM7Y0FBVyxPQUFBLGtDQUFYQTthQUF3QzthQUY3Q0Q7R0FFNkQ7WUFHdkVFLGlCQUFpQkM7SUFDbkIsT0FBQTs7c0JBQ083QjtjQUNGLEdBdlJIbEM7ZUFJQUksd0JBa1JLOEIsR0FsUkw5Qjs7ZUFtUmdFLGtDQUQzRDhCO3lCQWpSTDdCOzt5QkF1UUFzRCx5QkFjSzs7YUFDTzthQVBLSTtHQVFkO1lBR0hDLFVBQVdDLEdBQXFCcEM7SUFDbEMsV0FEYW9DO0lBQ2IsT0FBQSxXQURrQ3BDO0dBRTlCO1lBR0ZxQyxjQUFjQztJQUNoQjtLQUNBLE9BQUEsNkJBRmdCQTtLQUlNO09BQUE7OztrQkFBS2hDO1VBQ3pCLHdCQTFHQWU7OztzQkFBQUE7Ozt1QkFBQUE7OztzREFBQUE7O1VBMEdJLFdBQUEscUNBRHFCZjtTQUM2QztLQUN6RDtPQUFBOzs7a0JBQUtBO1VBQWMsV0FBQSxzQkFBZEE7VUFBYyxPQUFBO1NBQVU7SUFKNUMsT0FBQTtHQUtnQjtZQUdDaUM7SUFDR0M7SUFDQXZEO0lBQ0F3RDtJQUNTQztJQUNHQztJQUNadkQ7SUFDQUM7SUFDRFc7SUFDQTRDO0lBRWIsWUEzWEZsRjtrQ0E0WFM7OztLQUdQbUY7O0tBRDZDQztLQUFZaEQ7S0FBaENpRDtLQUFUQztJQUdaLFNBbkdvQkMsVSxPQW1FNUJkLFVBZ0JrQkssUUFPRHhDO0lBV1Y7S0FESFY7OztTQUFKLE9BbFRBTjtrQkFrU2tCQyxPQUVTeUQsY0FDR0MsaUJBQ1p2RCxXQUNBQzs7S0FjUyxPQXRVekJyQjtLQXpHMEJrRixnQkErYVIsdUJBbEJGVDtLQW9CaEIsT0FBQSxlQVRrQk8sVUFsZHBCekY7SUEyZEU7OztRQVQyQndGO1dBNUUvQjs7O2FBQ0U7Y0FBaUNJO2NBQWpCQztjQUFWbEU7Y0FDQ21FO3NDQWdFb0JYO2tCQWhFeEIsc0JBREd4RDs7MEJBQ0NtRTs7Y0FLQTtlQURFQztpQkFDRjs7bUJBMkRvQlo7bUJBaEVwQlc7eUNBRERuRTtlQVFELE9BSElvRSx1QkFMSHBFO2NBUUQ7OzZCQVBFbUU7Ozs7OztzQkFRd0I7d0JBd0RKWCxjQWhFcEJXOzs7O21CQURTRDs7a0JBYUpHLGNBYklIO3lCQWFXLFdBcURHVCxpQkFyRGxCWTs7Ozs7Ozs7a0JBWExDOzs7a0JBQUFBO2FBYUosR0FiSUEsT0FGMEJMO2FBZ0I5QixPQWRJSztZQWNFO1lBMkRvQlQ7OztNQXZhN0I7T0FBQTtTQUFBOztvQkFBaUJVO1lBQU8sV0FBSSw0QkFBWEEsS0FEV1A7V0FDbUI7V0F1YUVKO09BdmFqRDs7O1VBQ2U7O3FCQUFLWTthQUFXLG1DQUFYQSxTQUZRUjtZQUV3QjtZQXNhSEo7T0FhdkM7OytCQVROeEQ7OztZQTNEMkJxRSxVQTJEM0JyRTs7NkNBM0QyQnFFLFVBMkQzQnJFO1lBM0QyQnFFLDBDQTJEM0JyRTs7OztVQUp5RFE7YUFuRDdEOzt1QkFBaUI4RDtlQUFhLE9BQUEsNEJBSkNELFNBSWRDO2NBQXNEO2NBbURWOUQ7O1FBUXpEK0Q7OztXQUFBQTs7O1VBQUFBOzs7U0FBQUE7SUFRSixHQVJJQTtlQVBBaEIseUJBa0JvQixPQTNYdEJqRjtLQTZYSyxJQURZZ0MsWUFuQmZpRCxlQW9CRyxPQXpYTGhGLFdBd1hpQitCO0tBQ1o7OEJBakJITjs7O1dBbUJNd0UsVUFuQk54RTs7NENBbUJNd0UsVUFuQk54RTtXQW1CTXdFLDBDQW5CTnhFOztNQXhkSmpDO29CQThKQW9COztPQWlWcUQsSUFBdkNzRixpQkFBdUMsT0FoSHJEbEM7T0FnSG9CLDZCQUFOa0MsU0FKSkQ7O1NBblZWM0YsWUF3VnVCLGtDQUxiMkY7U0FoVlZ4RjtXQXNWVTBGOztPQTVIWTtRQUFwQkMsb0JBQW9CO1FBQ3BCQyxvQkFBb0I7NEJBTHRCdkM7OzttQkFBQUE7OztvQkFBQUE7OzttREFBQUE7O09BTUY7K0JBTEVDOzs7bUJBQUFBOzs7b0JBQUFBOzs7bURBQUFBOztPQU1GO09BQ2EsSUFBVHVDLFNBNUJGN0MsK0JBdUI0QjJCO09BTTlCLDhCQUxJZ0I7T0FNSiw0QkFMSUM7V0EySFFGLFdBTUEsNkJBeENPcEIsV0F0RmZ1Qjs7U0FqT0ZoRyxZQWtXdUIsa0NBM1Z2Qk87ZUFrVlVzRjtxQkFBQUEsYUFlVTFCLHdCQUFMWjtPQS9mZnBFO09BaWdCd0I7UUFBWjhHLGNBdEVaL0IsY0FvRW9CQztRQUdSK0IsVUFBVSxtQ0FIUDNDO1FBSUg0QyxNQUFTLDhCQURURDtRQVFGLE9BNUlWeEM7T0E0SVUsT0FBQTtnQkEvRlZJO2dCQStEVTZCO2dCQXlCRVE7Z0JBREFEO2dCQURBRDs7O1NBakJGSixhQVdTO01BM2ZuQjFHO01BOGZzRCxXQWhJdER1RTtNQWdJc0QsT0FBQSxXQW5GdERJLHVCQStEVTZCOzs7OztnQkFmTkQ7SUFhRzs7WUFxQ1BVLHNCQUFzQkMsWUFBVzVFO0lBQ25DLEdBN2dCRXJDLGdCQWloQkE7SUFqaEJBQSxxQkE0Z0JzQmlIO0lBUWYsWUFoY0w5RztrQ0FpY1k7SUFFUjs7S0FEdUJtRjtLQUFiNEI7S0FDVixPQURVQSxrQkFWTUQ7SUFXaEIsV0FBQTs7O2VBRHVCM0IsNkJBQUFBLG1CQUdwQjZCO1NBQUFBOztPQWJ3QjlFLHVCQWF4QjhFO0tBT0YsT0FBQTtJQXpiTC9HLGFBcWErQmlDOztHQXVCVTtZQUczQytFLFVBQVVIO0lBQ1osWUF2aUJFakg7Z0JBNGlCQTtJQUNlO0tBQVZrQztLQUFVLE9BQVZBLE9BUEsrRTtLQU9LLGVBN2lCZmpIOztHQTZpQndEO1lBR3hEcUg7SUFBTXBDLFFBQVF2RCxPQUFPd0QsTUFBTXZELFVBQVVxRSxhQUFhbkUsV0FBV0MsU0FBUVc7SUFDdkUsT0E3R2lCdUM7YUE0R1RDO2FBQVF2RDthQUFPd0Q7YUFBTXZEO2FBQVVxRTthQUFhbkU7YUFBV0M7YUFBUVc7c0JBQ1c2RSxHQUNoRixPQURnRkEsRUFDL0U7R0FBQztZQUdGQztJQUFXdEMsUUFBUXZELE9BQU93RCxNQUFNdkQsVUFBVXFFLGFBQWFuRSxXQUFXQyxTQUFRVztJQUM1RSxPQWxIaUJ1QzthQWlISkM7YUFBUXZEO2FBQU93RDthQUFNdkQ7YUFBVXFFO2FBQWFuRTthQUFXQzthQUFRVzs2QkFFMUUsU0FBSTtHQUFDO1lBR1UrRTtJQUNHdkMsUUFDQXZELE9BQ0F3RCxNQUNTQyxjQUNHQyxpQkFDWnZELFdBQ0FDLFNBQ0RXO0lBRWIsWUFoZkZ0QztrQ0FpZlM7OztLQUdQbUY7O0tBRGtFQztLQUFsREU7SUFHWixTQUFKQyxVLE9BckpKZCxVQXNJa0JLLFFBT0R4QztJQVVTO0tBQUEsT0F6YnhCaEM7S0E3R3VDZ0gsZUFzaUJ0Qix1QkFmRHZDO0tBaUJoQixPQUFBLGVBUGtCTyxVQXZrQnBCekY7S0E2a0JJc0c7Ozs7VUF0aUJROztxQkFBS0g7YUFBVyxtQ0FBWEEsU0FEd0JzQjtZQUNRO1lBZ2lCcUJsQzs7SUFrQnRFLEdBWkllO2VBTEFoQix5QkFvQm9CLE9BbGZ0QmpGO0tBb2ZLLElBRFlnQyxZQXJCZmlELGVBc0JHLE9BaGZMaEYsV0ErZWlCK0I7S0FDWjtNQWxtQlB6QztNQStrQkE7T0FzQlVtQztTQTdiVk47V0F3WmtCQyxPQUVTeUQsY0FDR0MsaUJBQ1p2RCxXQUNBQztPQTNiZDRGLE9BSEZsSDtNQUFBQSx1QkE4ZFF1QixTQXBDUW1ELE9BdmJkd0M7TUFFSixJQTBkTSxJQXpkQUMsSUFrTk41RCwrQkErT0kyQixNQXZjRmxGLGVBR0VrSDtZQU9GRTtXQUFBQyx3QkFBQUQ7T0FWQXBILGVBR0VrSDtPQVNGLE1BQUEsNEJBRkFHOztlQUpJRixNQXVlVztvQkF2ZVhBLE1Bd2VjNUMsd0JBQUxaO01BcG5CZnRFO01Bc25Cd0I7T0FBWmdILGNBekxaL0IsY0F1TG9CQztPQUdSK0IsVUFBVSxtQ0FIUDNDO09BSUg0QyxNQUFTLDhCQURURDtPQVFGLE9BL1BWeEM7T0EyUFUsT0FBQSw4QkF2QkF2QztNQTJCQSxPQUFBO2VBbE5WMkMsaUJBNk1VOztlQUZFcUM7ZUFEQUQ7ZUFEQUQ7Ozs7OztnQkF0Q1JQO0lBaUJHOztZQWlDUHdCO0lBQ0ksWUE1aUJGM0g7O3lCQThqQjBDK0c7O01BL2hCUjtPQUFBO1NBQUE7O29CQUFtQmEsVUFBS0MsS0FBTyxXQUFaRCxHQUFLQyxLQUFlOzs7T0FBdkMsTUFBQTtPQTZoQjFCLE1BQUE7TUFBVjtNQUFBOzttQkFwZkE5RztxQkF5ZlFzRixpQkFBTSx1QkFBTkE7S0FuUFJqQztTQXVSRzBELFFBMXJCSGxJLGlCQTByQlVtSSxxQkE1ckJWckk7Y0E0ckJHb0ksZUFBT0M7U0FqaUJWcEg7T0FtZ0JLLGtDQTdwQkxoQixjQUZBRjtNQXFxQk87T0FERXVJO1NBQ0Y7OzJCQUFZLElBQVl2Qyw0QkFBQUEsUUFBbUI7V0FmTnNCO09BYXJDa0IsU0FDRUQsbUJBQUFBO01BT04sR0FSSUM7V0FTSWpHLFFBVEppRztPQVVEO09BRUE7OztVQUNFLElBQWdCdkMsNEJBQVZsRTtVQUNILEtBRGFrRTtXQUVILE9BQUEsa0NBRlBsRTtjQUdJcUUsY0FITUg7VUFHUyxPQUFBLGtDQUhuQmxFLFVBR0lxRTtTQUE0RDtTQVBuRTdEO09BU0w7T0FBQTs7ZUFuckJOckMsZ0JBeUpBZTtPQStoQlE7T0FBQTs7TUFFRzs7Y0FDRHFIOzs7TUFPZ0I7T0FBQSxNQUFBO2FBQWYsa0NBUERBO0tBQ1Asa0NBREFELE9BM3JCSG5JO0tBNHJCRzs7OztLQXhEQSxHQUFBO01BQXNDO01BQWxCLEdBQUEsbUVBRXJCOztLQUtBOztJQUFBO0dBd0RxQjtHQVFWO0lBTGJ1SSxjQXRpQkFqSDtJQXVpQkFrSCxhQXRpQkFqSDtJQXVpQkFrSCxpQkF0aUJBakg7SUF1aUJBa0gscUJBcmlCQWhIO0lBc2lCQWlILHFCQXZpQkFsSDtJQXdpQkFtSCxxQkExRUFaO1lBMkVBYSxjQUFlbEcsR0FEZmlHLG9CQUNlakcsR0FEZmlHLHlCQUNpRDtZQUVqREU7SUFDdUIsVUFBQSw0QkFKdkJGOztNQTV0QkVoSjtRQWd1Qko7b0NBQWMrQyxHQUFLLE9BQUEsV0FBTEEsTUFBUzs7Ozs7OztJQUF2QixPQUFBO0dBR087Ozs7T0FoWkxrQjtPQVJBdEU7T0FtQkF1RTtXQXJXRXJFLFNBT0FHLGFBYkFKO09BNGlCRjBIO09BMEJBSTtPQVVBQztPQUtBRTtPQUtlQztPQTBJZmE7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUU7T0FFQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0lDbnZCQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJRixJQUFNLElBQ0pDLFFBREk7bUJBS0pDO1FBQUFBLHlCQUpBRDs7R0FLZSxJQUFmRSxlQUFlLDRCQURmRDtZQU1FRSxlQUFlQyxHQUFJLE9BQUpBLEVBQUs7WUFDcEJDLGVBQWVELEdBQUksT0FBSkEsRUFBSztZQVFsQkUsVUFBVUM7SUFBUyxVQUFBLDZCQUFUQTtJQUFTLE9BQUE7R0FBNkQ7WUFDaEZDLFVBQVVDO0lBQVEsVUFBQSwyQkFBUkE7SUFBUSxPQUFBO0dBQTRCO1lBQzlDQyx5QkFBeUJDO0lBQU8saUNBQVBBLE1BRHpCSDtHQUMwRDtHQUduRCxJQUFUSSxpQkFMRU4sV0FFQUk7WUEwQ0ZHLE9BQVFDO0lBR3FCLFVBQUE7SUFGL0IscUNBRFVBO0dBTVQ7WUFXQ0MsYUFBYVgsR0FBRVk7SUFDakIsR0E1RUFkO0tBOEVTLEtBQUEsNEJBSE1FO01BR2IsTUFBQTtLQUhhQSxPQUFFWTtLQUFGWixPQUttQjtLQUxuQkEsT0FPcUI7Ozs7ZUFsRnBDRjs7R0FrRjZFO1lBRzNFZSxhQUFhYixHQUFFWTtJQUNqQixLQXRGQWQsY0FBZSxPQUFmQTtJQXlGYztLQUFSZ0IsUUFBUTtLQUNSQyxRQUxTZjtLQU1UZ0IsaUJBQWlCO0tBQ2pCQyxrQkFQU2pCO0tBUVRrQixVQUFVLDJCQUpWSixPQUNBQztJQUlHLEtBQUEsNkJBVE1mLE1BQUVZO0tBU2YsTUFBQTtJQUVFO0tBREVPOztRQUpBSCxvQkFDQUM7UUFEQUQsb0JBQ0FDO1FBREFELHFCQUNBQztLQVdKLFVBbEJhakI7OztNQXFCSm9CO01BSExDLHVCQUdlLDBCQUFWRDs7U0FITEM7SUFNRjtLQURFQyxtQkF2QldWLGFBUVhNLFNBRUFDLFdBUUFFO0lBbEJTckIsV0F1QlRzQixjQXZCU3RCO0lBQUFBO0lBQUFBO2dCQUFBQTtnQkFkTDtRQUNIdUI7SUFBQUE7O0dBeUNHO0dBSVM7SUFBbkJDLG1CQTNERWY7SUE0REZnQixlQTVERWhCLFdBMkRGZTtZQUVBRSxlQUFhQztJQUFjLE9BNUN6QmhCLGFBMkNGYyxjQUNhRTtHQUF5RDtZQUN0RUMsZUFBYUQ7SUFBYyxPQW5DekJkLGFBaUNGWSxjQUVhRTtHQUF5RDtZQUN0RUUsd0JBQXdCQztJQUFNLE9BOUM1Qm5CLGFBMENGYSxrQkFJd0JNO0dBQTZDO1lBQ3JFQyx3QkFBd0JEO0lBQU0sT0FyQzVCakIsYUFnQ0ZXLGtCQUt3Qk07R0FBNkM7WUF3QmpFRSx5QkFBeUJ6QixNQUFNMEI7SUFDckM7S0F6SDZCOUI7T0EwSDNCO3dCQUY2QkksZUFFTmUsY0FBa0MsT0FBbENBLGdCQUFzRDtLQXpIekVZLFNBUkYxQjtLQWdJQTJCLG1CQXZIRixXQURJRCxXQUR1Qi9CO0tBNkh6QmlDLFNBQVMsNEJBTHdCSDtLQVJGSTtPQWNuQzs7U0FMSUY7U0FEMkI1QjtrQkFXekIrQjtVQURGO1dBQ3lEakI7V0FBWEY7V0FBYlA7V0FNdEI7YUFqQlRvQix5QkFXdURYLHNCQVh4Qlk7V0FnQnpCO2FBQUE7Ozt3QkFFV00sTUFBUSxPQUFBLDZCQUFSQSxNQUFtQjtXQUhoQyxNQUFBO1dBcENtQ0MsY0FnQ0tyQjtXQWhDeEJzQixvQkFnQ3dCdEI7V0FoQzNDdUIsb0JBZ0MyQ3ZCO1VBOUJsRCxTQUFJd0IsUUFBUS9CLGFBQVlnQztXQUN0QixTQURzQkEsT0FDSjtXQUFnQztZQUFBLE1BQUEsNkJBRHhDaEM7WUFDa0IsTUFBQSx5QkFETmdDO1dBQ0ksV0FBRTtVQUF5QztVQUtuRTtXQUFBLE1BTkFELHlCQUZ5Q0g7V0FPekMsTUFMQUcsK0JBRnNCRjtXQU90QixNQUFBO1dBREYsTUFKRUUsK0JBRkdEO1dBS0hHLFVBQ0Y7VUFJQyxHQUFBLDBCQUxDQTs7O1dBSzZDO1lBQUEsTUFBQSxpQ0FMN0NBO2tCQUs2QztVQXlCdkMsVUFBQTtVQUZKLFdBREFQLGlCQUVFLHNCQUY2QjFCO1NBT1U7S0F6QjNDa0M7T0FDRjs7U0FGaUNUOztrQkFFRlU7VUFBTCxJQUFZQztVQUFZLE9BQUE7aUNBQW5CRCxPQUFtQiw4QkFBWkM7U0FBK0M7S0FFdEU7T0FBQTs7U0FKa0JYOztVQUlsQixJQUFZWSxrQkFBTkQ7VUFDckIsT0FBQTt3Q0FKRUYsbUJBR21CRSxNQUFNQztTQUMwQjtJQXVCeEMsT0FBQTs7O3NCQUFLVixNQUFRLE9BQUEsc0JBZnhCSCxRQWVnQkcsTUFBcUI7R0FBQztZQUl0Q3BCLFVBQVUrQjtJQUNaO0tBRW9CLFlBQUEsc0JBSFJBO0tBRWMsWUFBQSxzQkFGZEE7S0FDYyxZQUFBLHNCQURkQTtJQUNaO0dBR0M7R0FHRDtJQVJBQzs7O1FBUWlCLE9BQUE7OzswQkFBS0Q7a0JBQ25CO21CQUlROzJCQUFBLHNCQUxXQTt3QkFPWjs7eUJBUFlBO2tDQU9jRTswQkFDeEI7MkJBRWMsTUFqQnhCakMsVUFja0NpQzsyQkFFWixNQUFBLGtDQUZZQTswQkFDeEI7a0NBQWdCLGdDQURRQTs7Ozt5QkFLdkI7O21CQVRJLE1BVmZqQyxVQU9vQitCO21CQUVQLE1BQUEsa0NBRk9BO2tCQUNuQjswQkFBZ0IsZ0NBREdBOzs7O2lCQWNsQjs7TUEvTEpwRDtJQWlPQTs7O09BRUksSUFqQ3lCdUQsa0JBaUN6QiwwQkE3R0o1QjtPQTZFRixTQUFJNkI7UUFDRixPQUFBO09BQWdGO09BRzFFLElBbExNbkQsU0FrTE4scUNBeE1OTjs7VUFzQllNO1FBdUxWLElBckxGLElBREkrQixTQUhGMUIsV0EwTEcrQyxXQXRMTCxXQURJckIsV0FEUS9CO3VCQWlMVnFELGdCQUoyQkg7UUFDM0JDOztTQUdBRTtXQVNHOzthQWJ3Qkg7c0JBYVFJLE9BQU9uQztjQUNyQztlQUFtQyxNQUFBLDJCQURMbUM7ZUFDMUJ2QyxVQUFVLDJCQUhoQnFDO2VBSU1sQztpQkFDRjs7bUJBSG1DQzs0QkFLekJtQyxPQUFNQztvQkFDWjtxQkFBbUMsTUFBQSwyQkFEN0JEO3FCQUNGdkMsVUFBVSwyQkFSdEJxQztvQkFTUTs0QkFGWUc7NEJBQ1J4Qzs0QkFEUXdDOzRCQUFBQTttQkFFd0I7Y0FFMUM7c0JBVHFDcEM7c0JBQ2pDSjtzQkFEaUNJO3NCQUVqQ0Q7YUFPK0M7OztRQXJCeERpQzt1Q0ExQkZIOzs7bUJBQUFBOzs7b0JBQUFBOzs7bURBQUFBOztZQTZCRUs7O2lCQXBERXhCLHlCQW9ERndCO09BcUJKLE9BQUE7TUFRMEU7Ozs7T0FuT3hFMUQ7T0FWQUg7V0FlRUksZ0JBQ0FFLGdCQWFBTztPQW9HRmtCO09BQ0FFO09BQ0FDO09BQ0FFOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDcklBNEIsWUFBNENDLEdBQUssT0FBTEEsRUFBTTs2QkFNaERDLFlBQW9ELFNBQUMsRUFEM0QsV0FDTUE7b0NBTkZGOzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7WUM2QkVHLFFBQVFDLEdBQUVDLEdBQUksZ0NBQU5ELE1BQUVDLE1BQWlDO1lBQzNDQyxNQUFNRixHQUFFQyxHQUFJLE9BQU5ELFNBQUVDLGFBQTJCO0dBQzdCLElBQU5FO1lBRUFDLEtBQUtDLE1BQ1AsSUFBSUMsT0FIRkgsUUFBQUEsVUFLRixXQUZJRyxNQURHRCxNQUdPO1lBR1pFLEtBQUtQLEdBQUksc0NBQUpBLE1BQXVCO1lBQzVCSyxLQUFLTCxHQUFJLE9BQUpBLEtBQVU7R0FDTixJQUFUUSxXQVJBSjtZQWpDUUssVUFrRElDLElBQUdDO0lBQ2pCLEdBRGNELE9BQUdDLElBRVo7SUFFTyxJQUFOQyxNQXpCSmIsUUFxQllXLE9BQUdDO0lBS2YsU0FESUMsS0FDYSxPQURiQTtRQXJEU0MsTUFpREVGLE9BakRKRyxNQWlEQ0osT0FqRERWLElBQUFjLEtBQUViLElBQUFZO0lBQ2I7VUFEV2IsVUFBRUM7VUFBQUEsR0FJRjtLQUVELElBTkdjLEtBQUFkLE1BS0ZlLElBTEVmLE1BQUZnQixLQUFBakIsTUFLVEgsSUFMU0csTUFNTGtCLElBUEVULFVBTU5aLEdBQVNtQjtLQUVULFNBRElFLEdBQzBCLE9BRDFCQTtLQU5LbEIsSUFBQWlCO0tBQUVoQixJQUFBYzs7R0FzRHNEO1lBR25FSSxRQUFNbkIsR0FBRUMsR0FBSSxhQTFESlEsVUEwREZULEdBQUVDLFdBQW1CO0dBRWxCO0lBRFRtQjtJQVVGQyxlQTVCRWI7OztZQXlCRmMsSUFBSUMsR0FBSSxPQUFKQSxFQUFLO1lBQ1RDLE1BQUlELEdBQUksT0FBSkEsS0FBYTtZQUNqQkUsT0FBS0YsR0FBSSxJQTVCRnZCLElBNEJGdUIsYUE1QkV2QixLQTRCb0I7WUFFM0IwQjtRQUFTckI7SUFBK0IsV0FyQ3RDRCxLQXFDT0M7O1lBS1BzQixLQUFpQkMsS0FBWUMsS0FBYSxhQTNFbENwQixVQTJFU21CLEtBQVlDLGFBQW9DO1lBRWpFQyxhQUF5QkYsS0FBWUM7SUFDdkMsYUE5RVVwQixVQTZFaUJtQixLQUFZQztHQUc5QjtZQUdQRSxpQkFBNkJILEtBQVlDO0lBQzNDLGFBcEZVcEIsVUFtRnFCbUIsS0FBWUM7O2NBR3RDO0dBQW9DOzttREE1QnZDVixTQUNBQzs7Ozs7O2FBcUhBTSxPQUFPTSxPQUFNLE9BQUEseUJBQU5BLE9BQTBCO2FBQ2pDQyxJQUFJQyxPQS9HRjdCLE1BK0dlLE9BQW9CLDBCQUFqQzZCLE9BL0dGN0IsTUErRzZDO2FBQy9DOEIsSUFBSUQsT0FoSEY3QixNQWdIYStCO0tBQU8sT0FBbUMsMEJBQXJERixPQWhIRjdCLFVBQUFBLE1BZ0hhK0I7SUFBNkQ7YUFFNUVDLEtBQWNILE9BbEhaN0I7S0FtSEosSUFDTSxJQUFBLFVBQUsseUJBRks2QixPQWxIWjdCLFFBbUhBK0I7Ozs7O1VBQUFBOztLQUlKLEtBSklBLE1BS007aUJBTE5BLFNBT2tDRSxtQkFBckJiO0tBekdmTSxpQkF5R2VOLFFBMUhicEI7S0E0SEMsV0FGaUNpQztJQUk5QjtJQXBCWixXQUlNWixRQUNBTyxLQUNBRSxLQUVBRTs7WUFnQkZFLEtBNUpPQyxPQUFBQztJQThKUCxJQURFQyxNQUNGLGtDQTlKT0YsVUFBQUM7SUFnS1QsT0FBQSxzQkFISUM7R0FHUTs7SUFPTTtLQTVJWm5CLElBNElZLGlCQTFJaEJGO0tBMElJbUIsUUE1SUFqQjtLQUFBb0IsTUE2SVksaUJBM0loQnRCO0tBMklJb0IsUUE3SUFFO0tBMklGQztPQWhMQTFDLE1BaUxFc0MsT0FDQUM7O1VBWkpGLEtBV0lDLE9BQ0FDO0lBTHNDLFdBR3hDRzs7O0lBV2M7S0F0SlpyQixJQXNKWSxpQkFwSmhCRixVQUFBQTtLQW9KSW1CLFFBdEpBakI7S0FBQW9CLE1BdUpZLGlCQXJKaEJ0QixVQUFBQTtLQXFKSW9CLFFBdkpBRTtLQXFKRkM7T0ExTEExQyxNQTJMRXNDLE9BQ0FDOztVQXRCSkYsS0FxQklDLE9BQ0FDO0lBTHNDLFdBR3hDRzs7O0lBV2M7S0FoS1pyQixJQWdLWSxpQkE5SmhCRixVQUFBQSxVQUFBQTtLQThKSW1CLFFBaEtBakI7S0FBQW9CLE1BaUtZLGlCQS9KaEJ0QixVQUFBQSxVQUFBQTtLQStKSW9CLFFBaktBRTtLQStKRkM7T0FwTUExQyxNQXFNRXNDLE9BQ0FDOztVQWhDSkYsS0ErQklDLE9BQ0FDO0lBTHNDLFdBR3hDRzs7O0lBV2M7S0ExS1pyQixJQTBLWSxpQkF4S2hCRixVQUFBQSxVQUFBQSxVQUFBQTtLQXdLSW1CLFFBMUtBakI7S0FBQW9CLE1BMktZLGlCQXpLaEJ0QixVQUFBQSxVQUFBQSxVQUFBQTtLQXlLSW9CLFFBM0tBRTtLQXlLRkM7T0E5TUExQyxNQStNRXNDLE9BQ0FDOztVQTFDSkYsS0F5Q0lDLE9BQ0FDO0lBTHNDLFdBR3hDRzs7O0lBY2M7S0F2TFpyQixJQXVMWSxpQkFyTGhCRixVQUFBQSxVQUFBQSxVQUFBQSxVQUFBQTtLQXFMSW1CLFFBdkxBakI7S0FBQW9CLE1Bd0xZLGlCQXRMaEJ0QixVQUFBQSxVQUFBQSxVQUFBQSxVQUFBQTtLQXNMSW9CLFFBeExBRTtLQXNMRkM7T0EzTkExQyxNQTRORXNDLE9BQ0FDOztVQXZESkYsS0FzRElDLE9BQ0FDO0lBUnNDLFdBTXhDRzs7Ozs7T0FuTEZsQjtPQURBTDtPQU1FTTtPQUVBRztPQU1BQztXQW5GUXRCLFdBMERSVSxTQUNBQztPQU9GRTtXQXJDRXZCLFNBQ0FHLE9BU0FLLE1BQ0FGO09BMkJGbUI7T0FDQUM7O1FBc0VRLElBQU50QixNQXpHQUMsWUEwR0F5QyxvQkFEQTFDO21CQUNBMEM7OztRQUlNLElBQU4xQyxNQTlHQUM7aUJBK0dBeUMsY0FBYzdDLEdBQUksV0FEbEJHLFNBQ2NILE9BQStCO21CQUE3QzZDOzs7UUFJTSxJQUFOMUMsTUFuSEFDO2lCQW9IQXlDLGNBQWM3QyxHQUFFQyxHQUFJLFdBRHBCRSxTQUNjSCxPQUFFQyxRQUFrQzttQkFBbEQ0Qzs7O1FBSU0sSUFBTjFDLE1BeEhBQztpQkF5SEF5QyxjQUFjN0MsR0FBRUMsR0FBRTZDO1NBQUksV0FEdEIzQyxTQUNjSCxPQUFFQyxPQUFFNkM7UUFBcUM7bUJBQXZERDs7O1FBSU0sSUFBTjFDLE1BN0hBQztpQkE4SEF5QyxjQUFjN0MsR0FBRUMsR0FBRTZDLEdBQUVDO1NBQUksV0FEeEI1QyxTQUNjSCxPQUFFQyxPQUFFNkMsT0FBRUM7UUFBd0M7bUJBQTVERjs7O1FBSU0sSUFBTjFDLE1BbElBQztpQkFtSUF5QyxjQUFjN0MsR0FBRUMsR0FBRTZDLEdBQUVDLEdBQUVDO1NBQUksV0FEMUI3QyxTQUNjSCxPQUFFQyxPQUFFNkMsT0FBRUMsT0FBRUM7UUFBMkM7bUJBQWpFSDs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7Ozs7Ozs7SUMzSWtCO2FBK0xoQkksTUFBTTFCLEdBQUksT0FBSkEsS0FBVzthQUNqQjJCLE1BQU0zQixHQUFJLE9BQUpBLEtBQVc7YUFDakI0QixZQUFZNUIsR0FBSSxPQUFKQSxLQUFpQjthQUM3QjZCLE1BQU03QixHQUFJLE9BQUpBLEtBQVc7YUFDakI4QixXQUFXOUIsR0FBSSxPQUFKQSxLQUFnQjthQUMzQkcsT0FBT0gsR0FBSSxPQUFKQSxLQUFZO2FBQ25CK0IsS0FBSy9CLEdBQUksT0FBSkEsS0FBVTthQUNmZ0MsU0FBU2hDLEdBQUksT0FBSkEsS0FBUzthQUNsQmlDLGtCQUFrQmpDLEdBQUksT0FBSkEsRUFBSztJQVh2QjtLQUFBOztRQUdBMEI7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQTNCO1FBQ0E0QjtRQUNBQztRQUNBQztLQUdvQjthQXVFcEJYLGNBQWN0QixHQUFJLE9BQUpBLEtBQWM7YUFDNUJrQyxPQUFPbEMsR0FBSSxPQUFKQSxnQkFBdUI7YUFDOUJtQyxJQUFJbkMsR0FBRTZCLE9BQVEsd0JBQVY3QixNQUFFNkIsV0FBQUEsT0FBc0I7YUFDNUJPLGVBQWVwQyxHQUFJLE9BQUpBLEtBQWlCO2FBQ2hDcUMsTUFBTXJDLEdBQUksT0FBSkEsS0FBVzthQUNqQnNDLEtBQUt0QyxHQUFHdUMsTUFBTUM7S0FBSSxvQ0FBSkEsR0FBTkQsTUFBSHZDO0lBQTBDO2FBQy9DeUMsb0JBQWtCekMsR0FBSSxPQUFKQSxFQUFLO0lBVHZCO0tBQUE7O1FBR0FzQjtRQUNBWTtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBRztLQUdrQjthQTZFbEJDLFFBQU0xQyxHQUFJLE9BQUpBLEtBQVc7YUFDakIyQyxRQUFNM0MsR0FBSSxPQUFKQSxLQUFXO2FBQ2pCNEMsSUFBSTVDLEdBQUksT0FBSkEsS0FBUzthQUNiNkMsV0FBVzdDLEdBQUksT0FBSkEsS0FBZ0I7YUFDM0I4QyxPQUFLOUMsR0FBSSxPQUFKQSxLQUFVO2FBQ2YrQyxXQUFTL0MsR0FBSSxPQUFKQSxLQUFTO2FBQ2xCZ0Qsb0JBQWtCaEQsR0FBSSxPQUFKQSxFQUFLO0lBVHZCO0tBQUE7O1FBR0EwQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztLQUdtQjthQTZFbkJDLGdCQUFjakQsR0FBSSxPQUFKQSxLQUFjO2FBQzVCa0QsU0FBT2xELEdBQUksT0FBSkEsZ0JBQXlCO2FBQ2hDbUQsTUFBTW5ELEdBQUU2QixPQUFRLHdCQUFWN0IsTUFBRTZCLFdBQUFBLE9BQXdCO2FBQ2hDdUIscUJBQXFCcEQsR0FBSSxPQUFKQSxLQUEwQjthQUMvQ3FELFNBQU9yRCxHQUFJLE9BQUpBLEtBQVk7YUFDbkJzRCxPQUFLdEQsR0FBR3VDLE1BQU1DO0tBQUksb0NBQUpBLEdBQU5ELE1BQUh2QztJQUE0QzthQUNqRHVELG9CQUFrQnZELEdBQUksT0FBSkEsRUFBSztJQVR2Qjs7O1FBR0FpRDtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztJQTFjUjs7Ozs7Ozs7O0dBc0JLOzs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0lDdENPekU7SUFXQW9CO0lBV0FzRDtJQVdBQztJQVdBQztJQVdBQztJQVdBQztJQVdBQztJQVdBQztJQVdBQztJQVNGQztJQVFBQztJQVFBQztJQVFBQztJQVFBQztJQVFBQztJQVVBQztJQVFBQztJQVFBQztJQVFBQztJQVFBQzs7Ozs7Ozs7SUFuTUpDLDJEQUtNN0Y7SUFNTjhGLDZEQUtNMUU7SUFNTjJFLDZEQUtNckI7SUFNTnNCOytDQUtNckI7SUFNTnNCLDREQUtNckI7SUFNTnNCLDZEQUtNckI7SUFNTnNCLDhEQUtNckI7SUFNTnNCLDZEQUtNckI7SUFNTnNCLDREQUtNckI7SUFNTnNCLDREQUtNckI7d0RBU0ZDO0lBR0pxQjtzREFLSXBCO0lBR0pxQjt1REFLSXBCO0lBR0pxQjt3REFLSXBCO0lBR0pxQjtxREFLSXBCO0lBR0pxQjswREFLSXBCO0lBR0pxQjt3REFPSXBCO0lBR0pxQjt3REFLSXBCO0lBR0pxQjt3REFLSXBCO0lBR0pxQjt3REFLSXBCO0lBR0pxQjt3REFLSXBCO0lBR0pxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWtYRXBFO0lBQVE7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7ZUFDQTs7R0FBQztZQUdUTDtJOztXQUNHMEUsdUJBQUFBOztXQUdBQyx5QkFBQUE7O1dBR0FDLHlCQUFBQTs7V0FHQUMseUJBQUFBOztXQUdBQyx5QkFBQUE7bUJBR0FDLHlCQUFBQTs7O1lBS0hDLFFBQUtOO0lBQU07S0FBZ0MsTUFyQjNDMUUsY0FxQkswRTtLQUF3QixNQUFBO0lBQUEsT0FBQTtHQUFrQztHQTlLdEQsZ0JBZ0pUckUsT0FTQUwsZUFxQkFnRjtZQWdCQUM7STs7T0FDc0I7O09BQ0E7O09BQ0E7ZUFDQTs7O1lBR3RCdEQ7STs7T0FFcUQ7O1FBRDlDdkU7UUFBSEQ7UUFDaUQsTUFBQSx3QkFEOUNDO09BQzhDLE9BQUEsV0FqY3ZEa0gsb0JBaWM2Qix3QkFEdkJuSDs7T0FNRjs7UUFKUThDO1FBQUhqQztRQUFIQztRQUlGLE1BQUEsd0JBSlFnQztRQUdSLE1BQUEsd0JBSEtqQztPQUlMLE9BQUE7Z0JBOWJKdUcsb0JBNGJJLHdCQUZFdEc7O09BVUY7O1FBTFdpQztRQUFIZ0Y7UUFBSEM7UUFBSEM7UUFLRixNQUFBLHdCQUxXbEY7UUFJWCxNQUFBLHdCQUpRZ0Y7UUFHUixNQUFBLHdCQUhLQztPQUtMLE9BQUE7Z0JBNWJKWDtnQkF5Ykksd0JBRkVZOzs7OztPQVlGOztRQU5jakY7UUFBSGtGO1FBQUhDO1FBQUhDO1FBQUhDO1FBTUYsTUFBQSx3QkFOY3JGO1FBS2QsTUFBQSx3QkFMV2tGO1FBSVgsTUFBQSx3QkFKUUM7UUFHUixNQUFBLHdCQUhLQztPQU1MLE9BQUE7Z0JBM2JKZDtnQkF1Ykksd0JBRkVlOzs7Ozs7O0dBbENLO0lBQUEsWUFhVFAsU0FPQXREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQTZCRThEO0k7OztlQTFvQkpwQzs7ZUFXQUM7O2VBV0FDOztlQVdBQzs7ZUFXQUM7O2VBV0FDOztlQVdBQzs7ZUFXQUM7O2VBV0FDO3VCQVdBQzs7OztXQWtqQk9ZO09BQWtDLE9BQUEsV0FqaUJ6Q1gsb0JBc2hCSTBCLGdCQVdHZjs7V0FDRkM7T0FBZ0MsT0FBQSxXQTFoQnJDWCxrQkE4Z0JJeUIsZ0JBWUNkOztXQUNDQztPQUFpQyxPQUFBLFdBbmhCdkNYLG1CQXNnQkl3QixnQkFhRWI7O1dBQ0RDO09BQWtDLE9BQUEsV0E1Z0J2Q1gsb0JBOGZJdUIsZ0JBY0NaOztXQUNEQztPQUErQixPQUFBLFdBcmdCbkNYLGlCQXNmSXNCLGdCQWVBWDs7T0FFNkM7O1FBRGxDWTtRQUFMQztRQUN1QyxNQWpCN0NGLGdCQWdCV0M7T0FDa0MsT0FBQSxXQS9makR0QixzQkE4ZUlxQixnQkFnQk1FOztXQUVKWixrQkFBTyxPQUFBLDBCQUFQQTs7V0FDQ2Esa0JBQU8sT0FBQSwyQkFBUEE7O1dBQ0NDLGtCQUFPLE9BQUEsMEJBQVBBO21CQUNEckksb0JBQVksT0FBQSxxQkFBWkE7OztZQUdIeUIsYUFDRjZHLElBQUdDO0lBQ0wsSUFERUMsT0FBQUYsSUFBR0csT0FBQUY7SUFDTDs7O2dCQURFQztjQUFBQTs7b0JBQUdDLDRCQUFBQSxNQXNCUzttQkF0QlRBOzs7b0JBQUFBLDRCQUFBQSxNQXVCYTttQkF2QmJBOzs7b0JBQUFBLDRCQUFBQSxNQXdCYTttQkF4QmJBOzs7b0JBQUFBLDRCQUFBQSxNQXlCcUI7bUJBekJyQkE7OztvQkFBQUEsNEJBQUFBLE1BMEJXO21CQTFCWEE7OztvQkFBQUEsNEJBQUFBLE1BMkJhO21CQTNCYkE7OztvQkFBQUEsNEJBQUFBLE1BNEJlO21CQTVCZkE7OztvQkFBQUEsNEJBQUFBLE1BNkJhO21CQTdCYkE7OztvQkFBQUEsNEJBQUFBLE1BOEJXO21CQTlCWEE7OztvQkFBQUEsNEJBQUFBLE1BK0JXO21CQS9CWEE7Ozs7Y0FBSEQ7O2NBZ0NPRSxLQWhDUEY7b0JBQUdDO2tCQUFBQTs7Y0FpQ0ksSUFEV0UsT0FoQ2ZGLFNBa0NRakosSUFuQ1RpQyxhQWlDS2lILElBQVdDO3FCQUVQbkosSUFBQUEsSUFBQUE7Ozs7OztjQUVOb0osT0FwQ0xKO29CQUFHQztrQkFBQUE7O2NBcUNJLElBRE9JLE9BcENYSixTQXNDUUssTUF2Q1RySCxhQXFDR21ILE1BQVNDO3FCQUVIQyxNQUFBQSxNQUFBQTs7Ozs7O2NBRUxDLE9BeENOUDtvQkFBR0M7a0JBQUFBOztjQXlDSSxJQURTTyxPQXhDYlAsU0EwQ1FRLE1BM0NUeEgsYUF5Q0lzSCxNQUFVQztxQkFFTEMsTUFBQUEsTUFBQUE7Ozs7OztjQUVOQyxPQTVDTFY7b0JBQUdDO2tCQUFBQTs7Y0E2Q0ksSUFET1UsT0E1Q1hWLFNBOENRVyxNQS9DVDNILGFBNkNHeUgsTUFBU0M7cUJBRUhDLE1BQUFBLE1BQUFBOzs7Ozs7Y0FFUEMsT0FoREpiO29CQUFHQztrQkFBQUE7O2NBaURJLElBREthLE9BaERUYixTQWtEUWMsTUFuRFQ5SCxhQWlERTRILE1BQVFDO3FCQUVEQyxNQUFBQSxNQUFBQTs7Ozs7O29CQWxEWGYsU0FvRGdCZ0IsZUFBTkM7b0JBcERQaEI7a0JBQUFBOztjQXFESTt1QkFyREpBO2VBb0RvQ2lCO2VBQU5DO2VBQzFCLFVBdERMbEksYUFxRFFnSSxNQUF1QkU7ZUFDRixVQXREN0JsSSxhQXFEYytILE1BQXVCRTtxQ0FFZDtjQUNEOzs7Ozs7Y0FDbEJFLE9BeEROcEI7b0JBQUdDO2tCQUFBQTs7a0JBd0Rhb0IsT0F4RGJwQjtxQkF3REdtQjs7MkJBQUFBOzBCQUFVQyxTQStCQTtpQkEzQk47NEJBSk1BO2tCQUdZQztrQkFBSkM7a0JBQVhDO2tCQUFKQztrQkFDQyxVQTdEUnhJLGFBNERPd0ksSUFBZUY7a0JBQ00sVUE3RDVCdEksYUE0RFd1SSxJQUFlRjt3Q0FFQTtpQkFDRDs7MkJBTnJCRjswQkFBVUMsU0FnQ0E7aUJBeEJOOzRCQVJNQTtrQkFPb0JLO2tCQUFKQztrQkFBSkM7a0JBQVhDO2tCQUFKQztrQkFBSkM7a0JBQ0MsVUFqRVI5SSxhQWdFTzhJLE1BQW1CSDtrQkFDRSxVQWpFNUIzSSxhQWdFVzZJLE1BQW1CSDtrQkFDa0IsVUFqRWhEMUksYUFnRWU0SSxJQUFtQkg7bURBRUU7aUJBQ1E7OzJCQVZ4Q047MEJBQVVDLFNBaUNBO2lCQXBCVjs0QkFiVUE7a0JBVzRCVztrQkFBSkM7a0JBQUpDO2tCQUFKQztrQkFBWEM7a0JBQUpDO2tCQUFKQztrQkFBSkM7a0JBRUgsV0F0RUp0SixhQW9FT3NKLE1BQXVCSjtrQkFFTixXQXRFeEJsSixhQW9FV3FKLE1BQXVCSjtrQkFFVSxXQXRFNUNqSixhQW9FZW9KLE1BQXVCSjtrQkFFMEIsV0F0RWhFaEosYUFvRW1CbUosSUFBdUJKO2tFQUlJO2lCQUN1Qjs7MkJBaEJqRVo7MEJBQVVDLFNBa0NBO2lCQWZSOzZCQW5CUUE7a0JBaUJvQ21CO2tCQUFKQztrQkFBSkM7a0JBQUpDO2tCQUFKQztrQkFBWEM7a0JBQUpDO2tCQUFKQztrQkFBSkM7a0JBQUpDO2tCQUVELFdBNUVOaEssYUEwRU9nSyxNQUEyQkw7a0JBRzVCLFdBN0VOM0osYUEwRVcrSixNQUEyQkw7a0JBSWhDLFdBOUVOMUosYUEwRWU4SixNQUEyQkw7a0JBS3BDLFdBL0VOekosYUEwRW1CNkosTUFBMkJMO2tCQU14QyxXQWhGTnhKLGFBMEV1QjRKLElBQTJCTDs7a0JBUU07aUJBS2hDOzs7Ozs7O2NBS25CVSxPQTNGUGxEO29CQUFHQztrQkFBQUE7O2NBOEZEO2VBSGdCa0QsT0EzRmZsRDtlQThGRCxNQUFBLDJCQUhnQmtEO2VBRWhCLE1BQUEsMkJBRktEO2NBR0wsT0FBQTs7Ozs7O2NBQ01FLE9BL0ZScEQ7b0JBQUdDO2tCQUFBQTs7Y0FrR0Q7ZUFIa0JvRCxPQS9GakJwRDtlQWtHRCxNQUFBLDBCQUhrQm9EO2VBRWxCLE1BQUEsMEJBRk1EO2NBR04sT0FBQTs7Ozs7O3lCQWxHRnBELFNBR09zRDtvQkFISnJELDJCQUFBQTtXQUtrRDt1QkFMbERBO1lBRzhCc0Q7WUFBUEM7WUFBWkM7WUFFdUMsTUFBQSxxQkFGM0JEO1lBRUQsTUFBQSxxQkFGbEJGO1lBSVFJLE1BRlo7Y0FFWUEsS0FBSyxPQUFMQTtjQUpERDtzQkFBQUE7OztpQkFIZEU7O2dEQUFBQTtpQkFBQUE7O2lCQUdpQ0osTUFIakN2RCxPQUFBMkQ7c0JBR2lDSjs7O2lCQUg5Qks7O2dEQUFBQTtpQkFBQUE7O1lBQUg1RCxPQUFBMkQ7WUFBRzFELE9BQUEyRDs7O2dCQUc4QkwsTUFVYjtxQkFWYUE7OztnQkFIOUJNOzsrQ0FBQUE7Z0JBQUFBOztXQUFBNUQsT0FBQTREOzs7Y0FjT0M7VUFDVixLQURVQSxNQUdDO29CQUhEQTs7O2VBZFZDOzs4Q0FBQUE7ZUFBQUE7O1VBQUEvRCxPQUFBK0Q7OztVQWtCY0MsS0FsQlgvRDtNQW1CSCxLQURjK0QsSUFHSDtnQkFIR0E7OztXQWxCWEM7OzBDQUFBQTtXQUFBQTs7TUFBQWhFLE9BQUFnRTs7O2VBQUhqRTthQUFBQTs7O1NBb0dZOztTQUNBOztTQUNJOztTQUNMOztTQUNDOztTQUNDOztTQUNEOztTQUNEO2lCQUNBOzs7YUE1R1hBOzs7U0E2R2U7O1NBQ0Y7O1NBQ0M7O1NBQ0Q7O1NBQ0Q7O1NBQ0s7O1NBQ0g7O1NBQ0M7aUJBQ0M7O0tBbEJOOztHQWtCVTtZQUd0QmxILEtBQUszQixHQUFFQyxHQUFJLGFBekhQNkIsYUF5SEM5QixHQUFFQyxXQUE0QjtZQUVuQzhCLGlCQUFpQi9CLEdBQUVDO0lBQ2YsWUE1SEE2QixhQTJIYTlCLEdBQUVDOztLQUdYLE1BQUE7UUFESDhNO0lBQVMsT0FBVEE7R0FDZTtZQUdoQkM7SUFBTyxJQUVYcks7SUFGVztlQUVYQSwwQkFBQUE7Z0JBQUFBOzs7OztZQUQ2QnNLOzsyQ0FBQUE7WUFBQUE7O09BQzdCdEssTUFENkJzSzs7OztLQUN4QixPQUFMdEs7O0dBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BVk5oQjtNQXpISUc7TUEySEpDO01BbkpJdUc7TUF5SkEwRTtPQU1ORSxvQkFFQUM7WUFRQUMsa0JBQWtCN0YsS0FBTSxXQUFOQSxLQUF3QjtZQUMxQzhGLGdCQUFnQjlGLEtBQU0sV0FBTkEsS0FBc0I7WUFDdEMrRixpQkFBaUIvRixLQUFNLFdBQU5BLEtBQXVCO1lBQ3hDZ0csa0JBQWtCaEcsS0FBTSxXQUFOQSxLQUFzQjtZQUN4Q2lHLGVBQWVqRyxLQUFNLFdBQU5BLEtBQXFCO1lBQ3BDa0csb0JBQW9CakYsS0FBSUQsS0FBTSxlQUFWQyxLQUFJRCxNQUFpQztZQUV6RG1GLGtCQUFrQjFOLEdBQUVDLEdBQUksbUJBQU5ELEdBQUVDLEtBQTJDO1lBQy9EME4sa0JBQWtCM04sR0FBRUMsR0FBRTZDLEdBQUksbUJBQVI5QyxHQUFFQyxHQUFFNkMsS0FBOEM7WUFDcEU4SyxrQkFBa0I1TixHQUFFQyxHQUFFNkMsR0FBRUMsR0FBSSxtQkFBVi9DLEdBQUVDLEdBQUU2QyxHQUFFQyxLQUFpRDtZQUN6RThLLGtCQUFrQjdOLEdBQUVDLEdBQUU2QyxHQUFFQyxHQUFFQyxHQUFJLG1CQUFaaEQsR0FBRUMsR0FBRTZDLEdBQUVDLEdBQUVDO0dBQW9EOztJQW5COUU4SztJQUVBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQU9BQztJQVFBQzs7O2FBdEJBcEIsa0JBcnhCRS9HO2FBbXhCRjhHLGdCQXp5QkVoSDtJQW0wQmdCc0k7SUFBbEJDOzs7O09BMUJBdkI7T0FDQVk7T0FDQVg7T0FDQVk7T0F1QkFVO09BdEJBVDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQWVBRTtPQWRBbkI7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQWE7T0FDQVo7T0FDQUM7T0FDQUM7T0FDQUM7T0E3ekJFM0g7T0FXQUM7T0FXQUM7T0FXQUM7T0FreUJnQm1JO09BdnhCaEJsSTtPQVdBQztPQVdBQztPQVdBQztPQVdBQztPQVdBQztPQWlCQUM7T0FRQUM7T0FRQUM7T0FRQUM7T0FRQUM7T0FRQUM7T0FVQUM7T0FRQUM7T0FRQUM7T0FRQUM7T0FRQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztZQ3RNRm9ILHFCQUVFQztJQUFKLFVBQUlBLHNCQUVDLE9BRkRBO1FBSUVDLE9BSkZEO0lBS0YsU0FESUM7S0FDSixNQUFBO0lBQ1csSUFBUEMsT0FORkY7Y0FNRUUsbUJBRUosT0FGSUE7SUFDSixNQUFBO0dBQ2E7WUFHYkMsYUFBYUM7SUFDZjtLQUFJQzt5Q0FEV0Q7S0FDSjs7U0FDWEU7O01BQ29DLFVBQUEsd0JBSHJCRixHQUVmRTtNQURJRCxpQkFBQUE7TUFDSixVQUFBQztpQkFBQUE7TUFBQUE7OztJQURJRCxVQUFBQTt3QkFBQUEsVUFBQUEsMkJBQUFBO0dBT29EO0dBS0g7SUFBQSxNQWJuREY7Ozs7OztNQWJBSjtJQTBCSyxNQUFBO0dBQ3FDLFVBZDFDSTtNQWJBSjtJQTJCSyxNQUFBO1lBQ1VRLDBCQUF3QixVQUFrQztZQUN6RXZLLHFCQUFxQjNFO0lBQTJCLFVBQUEscUJBQTNCQTs7R0FBK0M7R0FjdkQsSUFBVG1QLDBCQUNBQztHQUdDLEtBbEJMeksscUJBY0l3SztJQUlOLE1BQUE7R0FDWSxHQW5CVnhLLHFCQWVJeUs7SUFJTixNQUFBOzs7O09BaERFVjtPQWFBSTtPQWVlSTtPQUNmdks7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztRR3RCQTs7U0FIRTlCO1NBUU0wUztTQUVBM1M7U0FSTnFSLGdCQU1Nc0IsbUJBUk4xUyxlQVVNRDttQkFSTnFSLE9BRkFwUjs7Ozs7U0FtQkFBO2lCQUVBb1IsTUFBZ0J1QjtTQUNsQjtVQUE0QyxNQUFBLDRDQUQxQkE7VUFZVjNTLGdCQVhZO1VBVVowUztVQUVBM1M7U0FYUixlQUZrQjRTLE9BV1ZELG1CQUNBMVMsZUFDQUQ7UUFFaUI7bUJBZnZCcVIsT0FGQXBSOzs7OztTQXdCQUE7aUJBRUFvUixNQUFtQnVCLE9BQU1DO1NBQzNCO1VBQ3dELE1BQUEsNENBRjdCQTtVQUVELE1BQUEsNENBRkxEO1VBa0JiM1MsZ0JBaEJOO1VBZU0wUztVQUVBM1M7U0FmUjtxQkFKcUI0UyxPQUFNQyxPQWlCbkJGLG1CQUNBMVMsZUFDQUQ7UUFFdUI7bUJBckI3QnFSLE9BRkFwUjs7Ozs7U0E4QkFBO2lCQUVBb1IsTUFBc0J1QixPQUFNQyxPQUFNQztTQUNwQztVQUlJLE1BQUEsNENBTGdDQTtVQUloQyxNQUFBLDRDQUowQkQ7VUFHMUIsTUFBQSw0Q0FIb0JEO1VBeUJoQjNTLGdCQXZCTjtVQXNCTTBTO1VBRUEzUztTQW5CUjs7a0JBUHdCNFM7a0JBQU1DO2tCQUFNQztrQkF3QjVCSDtrQkFDQTFTO2tCQUNBRDtRQUUyQjttQkE1QmpDcVIsT0FGQXBSOzs7OztTQXFDQUE7aUJBRUFvUixNQUF5QnVCLE9BQU1DLE9BQU1DLE9BQU1DO1NBQzdDO1VBS0ksTUFBQSw0Q0FOeUNBO1VBS3pDLE1BQUEsNENBTG1DRDtVQUluQyxNQUFBLDRDQUo2QkQ7VUFHN0IsTUFBQSw0Q0FIdUJEO1VBOEJuQjNTLGdCQTVCTjtVQTJCTTBTO1VBRUEzUztTQXZCUjs7a0JBUjJCNFM7a0JBQU1DO2tCQUFNQztrQkFBTUM7a0JBNkJyQ0o7a0JBQ0ExUztrQkFDQUQ7UUFFK0I7bUJBakNyQ3FSLE9BRkFwUjs7Ozs7U0EwQ0FBO2lCQUVBb1IsTUFBNEJ1QixPQUFNQyxPQUFNQyxPQUFNQyxPQUFNQztTQUN0RDtVQU1JLE1BQUEsNENBUGtEQTtVQU1sRCxNQUFBLDRDQU40Q0Q7VUFLNUMsTUFBQSw0Q0FMc0NEO1VBSXRDLE1BQUEsNENBSmdDRDtVQUdoQyxNQUFBLDRDQUgwQkQ7VUFtQ3RCM1MsZ0JBakNOO1VBZ0NNMFM7VUFFQTNTO1NBM0JSOztrQkFUOEI0UztrQkFBTUM7a0JBQU1DO2tCQUFNQztrQkFBTUM7a0JBa0M5Q0w7a0JBQ0ExUztrQkFDQUQ7UUFFbUM7bUJBdEN6Q3FSLE9BRkFwUjs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUV4R0tpVDs7Ozs7O0lDOUJIQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQXFYUkM7WUR0WE1DLFlBQWFDLEtBQUlDO0lBQ25CLE9BQU8sK0JBRFlBO2NBQ2dDLCtCQURwQ0QsS0FBSUM7Y0FBQUE7R0FDNEQ7R0FKN0U7OztPQUdBRjtPQ0NFdkI7cUI7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FxWFJZO09BclhRWDtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FETUUsSUFDSkssSUFESTtVQUVNQztTQUFBQywwQkFBQUQsUUFIVkUsNEJBR1VEOzs7UUFIVkMsMEJBRUFIOztHQUdKLFNBTkVJO0lBT0EsY0FORUQ7U0FRS0QsTUFSTEM7S0FRWSxNQUFBLDRCQUFQRDs7UUFEREYsSUFQSkc7SUFPUyxPQUFMSDtHQUNpQjtZQWdCbkJLLFlBRUdDO0lBQ0YsT0FBQTs7YUFGRWpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBbUNnQjs7Ozs7Ozs7Ozs7O2FBTUo7OztjQUdWOzs7O2VBQ3FEa0M7ZUFBWkM7ZUFBYkM7ZUFBZEM7ZUFBWEM7Y0FDRDtzQkFEQ0E7c0JBQVdEO3NCQUFjRDtzQkFBYUQ7c0JBQVlEO2FBQ087YUE3QzlERDtHQThDTztZQU1WTTtJQUNEO0tBSWdCQztLQURFQztLQURDQztLQURDQztLQURIQztLQVFWQyxVQUFZLHNCQUpITDtLQUdYTSxnQ0FDRUQ7S0FLQUUsVUFBWSxzQkFWRE47S0FTYk8sa0NBQ0VELGVBTkZEO0tBV0VHLFVBQVksc0JBaEJBUDtLQWVkUSxrQ0FDRUQsZUFORkQ7S0FZRUcsVUFBWSxzQkF2QkNSO0tBc0JmUyxrQ0FDRUQsZUFQRkQ7S0FhRUcsVUFBWSxvQkE5QkZUO0tBNkJaVSxrQ0FDRUQsZUFQRkQ7SUFXSixXQUxJRTtHQUt5QjtZQU03QkMsVUFDR0MsT0FBUUM7SUFDVixHQURFRCxVQUFRQyxPQUVMO0lBRUcsSUFXSkMsSUFYSSxxQkFKTkYsVUFBUUM7YUFlTkMsR0FBSyxPQUFMQTtJQVRPLElBUUpDLE1BUkksc0JBTlRILFVBQVFDO2FBY0hFLEtBQUssT0FBTEE7SUFOTyxJQUtKQyxNQUxJLHNCQVJaSixVQUFRQzthQWFBRyxLQUFLLE9BQUxBO0lBSE8sSUFFSkMsTUFGSSxzQkFWZkwsVUFBUUM7aUJBWUdJLDRCQVpYTCxVQUFRQyxZQVlHSTtHQUdGOztrREFoQlpOLFdBekNBaEI7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBcUVGdUIsa0JBQWtCeEIsVUFDcEIsV0FEb0JBLHNCQUNxRDtZQUd2RXlCLHdCQUF5QkM7SUFDM0I7V0FEMkJBO1dBQUFBO1dBQUFBO1dBQUFBO0tBQ0MsTUFBQSxnQ0FEREE7SUFDM0IsV0FBYTtHQUtaO0dBdUJLLElBQ0pDLHlCQUVBQztZQUtBQyxZQUFVekMsR0FBSSxPQUFKQSxFQUFLO1lBRWYwQyxZQUFVQztJQUNaLGlDQURZQTtLQUdQO1FBQ0xDOztLQUNRLFlBQUEsd0JBTElELEdBSVpDOzs7Ozs7Ozs7OztNQUdTOztLQUpKLFVBQ0xBO2VBQUFBLEdBS0EsT0FUWUQ7S0FJWkM7O0dBS0M7Ozs7O09BeE1EdkM7O1FBeUJJQztRQXNEQU87UUFxRUZ1QjtRQUlBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7V0E4QkFFLGFBRUFDLFdBT0FFLGFBRkFEOzs7O0U7Ozs7Ozs7Ozs7OztHSXhOMkI7O0lBQUE7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Ozs7O0lDUTNCOEM7Ozs7Ozs7Ozs7OztZQUVBQyxzQkFBaUIscUNBRW1CO1lBR3BDQywrQkFBNENDO0lBUTVDLFVBYkFGLGVBSzRDRTtJQVE1QyxPQUFBO0dBQWtCO0dBbEJTO0lBQUE7VUFHM0JILE9BRUFDLGdCQUtBQzs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0lDZkZFOzs7Ozs7Ozs7Ozs7Ozs7SSxJQTJLV0MsUyxvQ0Fma0JDO0lBQy9CO0tBQU07TUFEeUJDO1FBQ3pCOzZCQTdKSkgsa0JBNEo2QkUsaUJBZWxCRDtjQWZrQkUsbUI7Y0FBQUE7S0FZUixXQUdWRixXQUFBQTtLQWZrQkMsa0JBQUFDOztJQWdCOUI7U0FDbUNDO0tBQ3BDO01BQU07T0FEOEJDO1NBQzlCOzhCQTlLSkwsa0JBNktrQ0ksbUJBRnZCSDtjQUV1Qkk7TUFpQmIsV0FuQlZKLFdBQUFBO01BRXVCRyxvQkFBQUM7O1lBQUFBOztROztnQjs7O0c7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDMUtoQjs7Ozs7Ozs7Ozs7Ozs7O0lBQUE7SUFhbEJDO1lBRUFDLFFBQVNDLFdBQVNDO0lBQ3BCLElBQU0sSUFDSkMsSUFESSxXQURjRDtVQUtSRTtTQUFBQyx3QkFBQUQ7S0FDVixXQU5TSDtLQU9ULE1BQUEsNEJBRlVJOztJQUZWLFdBSFNKO0lBR1QsT0FEQUU7R0FLTztHQUlLO0lBQVZHOzs7WUFFQUMsSUFBS0M7SUFDUCxPQUhFRjtjQUtVO2VBTFZBLGlCQUVLRTtHQUdzRDtZQUczREM7SUFDRixPQVRFSDtlQUFBQTtjQVdRO0dBQStDO1lBZ0N2REk7SUFBa0IsT0FBQTtHQUFjO1lBU2hDQyxrQkFBa0JDO0lBQUksVUFBSkEsTUFBK0IsTUFBQTtJQUFBLE9BQUE7R0FBZ0M7WUFFakZDLFFBQVFDLE9BQU9aO0lBQ1IsSUFBTGEsS0FBSyx1QkFEQ0Q7SUFFa0MsT0FuRTVDZDs2QkFtRTRCLE9BQWdCLHVCQUR4Q2UsSUFDbUM7NkJBQWdCLE9BQXZELFdBRmlCYixHQUNiYSxJQUN1RDtHQUFDO0dBR1I7SUFBbERDOzs7WUE4QkZDO0lBN0I4QixxQ0FENUJEO0dBQ3dEO1lBRXhERTtJQUNGLFVBSkVGO2NBTVEsT0FBQTtRQURDSjtJQUFNLE9BQU5BO0dBQzJFO1lBUXBGTywrQkFBcUNQLEdBQUVRO0lBQ3pDLElBQUlDLE1BL0JGWCxpQkFnQ0YsTUFGdUNFOztTQUsvQlUsc0JBSEpDLGFBR0lEOztTQUhKQztJQUZtQ1gsZUFBRVEsVUFDckNDLE1BRG1DVDtJQVF2Qyx1QkFSdUNBO1FBU25DWSxNQVJBSCxNQUNBRTtJQVE2QixPQTdCL0JWO2FBRkFGLGtCQXFCcUNDO3NCQVVERztjQUNwQyx1QkFEb0NBLElBUmxDUTtjQVFKLE9BQUEsdUJBQXNDUixJQURsQ1M7YUFHd0I7R0FBQztZQU03QkM7SUFDRjtJQUNBO0lBQ0E7SUFBQSxPQUFBO0dBQzBCO1lBR3hCQyx1QkFBdUJOO0lBQ1YsSUFBWE8sV0FyQ0FUO0lBNkJGTztJQVNGLE9BM0JJTiwrQkEwQkFRLFVBRHFCUDtHQUdzQztZQW1LN0RRO0lBRUYseUNBdlJFN0I7R0F1UmlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBbkpiOEIsNEJBQTRCZCxJQUFHUztTQUNqQyxJQUFRLE1BQUEsdUJBRHNCVCxJQUFHUyxNQUM3Qk0sSUFBSTtTQUNELEtBQUEsOENBREhBLElBRUMsT0FGREE7U0FJRixVQUFBO1NBQUEsT0FBQSw0QkFKRUE7UUFPQztpQkFHSEMsd0JBQXdCbkI7U0FDMUIsdUJBQVU7U0FDSyxJQUFYb0IsV0F6Rkp0QjtTQTBGQTtTQUNBLHVCQUowQkU7U0FLZCxJQUFSRSxRQW5GSkgsa0JBOEUwQkM7U0FRckIsT0FySlBaO2tDQW9Kd0IsT0FBQSx3QkFGbEJjLE9BRWtDOzttQkFFbEMsT0FyRkpEOzRCQWlGSUM7cUNBSXNCQzs2QkFDcEI7OEJBRUksTUFBQSxrQ0FaZ0JIOzhCQVdsQjtnQ0FBQTs7O21DQUdLO29DQUFzQnFCO29DQUFMQztvQ0FBTkM7b0NBQUxDO29DQUNITixJQTFCZEQsNEJBb0J3QmQsSUFLU2tCLFdBQWhCRzttQ0FFUCxXQUZ1Qkgsa0JBQUxDLEtBQ2RKLElBRFFLO2tDQUVjOzs7OEJBTnZCRTs4QkFBTEQ7OEJBUUFFO2dDQTdCUlQsNEJBb0J3QmQsSUFQdEJpQixXQVFNSTs2QkFTSjtxQ0FBQSxrQ0FUU0M7cUNBUUxDOzRCQUM2QjtrQkFBQztRQUFDO2lCQStEekNDLFlBNURjbkI7U0FDTixJQXJGa0JSLElBTjFCTTtTQTZCRk87U0F0QlUsSUFBTkosTUExQkZYO1NBeUIwQkUsZUFvRlpRLFVBbkZaQyxNQUR3QlQ7O1FBdUZVO2lCQTBEcENjLHVCQXZEeUJOO1NBQ2pCLElBQUpSLElBakdKTTtTQTZCRk87U0FxRUUsT0F2RkFOLCtCQXNGSVAsR0FEcUJRO1FBR3NCO1FBSS9DOzs7V0FDRSxVQTNHRko7cUJBNEdZO1dBRWU7O1lBRFpKO1lBQUxzQjtZQUNpQixVQXZDekJILHdCQXNDYW5CO1lBQ0M0QjtZQUFSQztrQkFERVAsU0FBQUE7a0JBQUFBLFNBQUFBO2tCQUFBQTtZQU9KLE1BQUEsMENBUElBO1dBRU47V0FTQTs7O2NBQW9CLElBQVNKO2NBQU0sT0FBQSxrQ0FBTkE7YUFBOEI7YUFWdkRXO1dBVUosT0FBQSxrQ0FWWUQ7VUFXa0I7aUJBbUNsQ0U7U0FoQ1FDO1NBQWF2QjtTQW1DQXdCO1NBQ2xCQztTQUNBQztTQXJDNEJDO1NBQWNDO1NBd0MxQ0M7U0F4Q29FL0M7U0EyQ3pFO2dCQTNDdUJrQixjQUFBQTtnQkFBQUEsY0FBQUE7Z0JBQUFBO1VBbURYLE1BQUEsMENBbkRXQTtTQXVEckIsT0FBQTs7a0JBZkc2Qjs7O29CLEtBSkFKLGFBWVk7d0JBQ0hmLElBYlRlO29CQWFjLE9BQUxmOztrQkFaVGdCOzs7Ozs7bUJBbUJBLFlBL09IeEM7O3dCQWdCSzRDLGVBK05FQyx3QkEvTkZEOzs7cUJBK05FQzt1QkE5TkM7bUJBK05GLEdBdEJlUCxlQXFCZE87b0JBR0YsT0FBQTs7Ozs2QkF4QmdCUDs2QkFuQ0F4Qjs2QkF3RGQrQjttQkFhRjs7O3NCQUE2QixVQWpLcEMxQjtzQkFpS29DLE9BQUE7cUJBQVU7bUJBOU0vQjtvQkFBWDJCO3NCQUFXOztvQkFDWEMsT0FBTyx1QkFEUEQ7bUJBRUo7cUJBRElDO21CQUVKO29CQXVJTXpDOzs7dUJBeklGeUM7dUJBRWUsMENBSGZEO21CQWFGcEMsMEJBNEhxQkksVUFDakJSOzRCQUVBWCxVQUFRcUQ7b0JBQ1YsT0FBTTs7OzhCQWhHVjdCOzhCQWhDRVQ7OEJBb0kyQzsrQkFBQSxRQTdEekNlLHdCQXNERW5COytCQU9xQjBCOytCQUFkaUI7OEJBNU1ieEQ7OztpQ0FvTVU0QztpQ0FBYXZCO2lDQUFVMkI7aUNBQWNDO2lDQVFsQ087aUNBQWNqQjs7aUNBTGJnQjtnQ0F2TWR2RDs7NkJBdU4wQjttQkFBQzs7O29CQUV6QixJQUFNLGlCQXJCaUVHOzBCQXVCM0RzRDtxQkFDRDtzQkFEQ0MsMEJBQUFEO3NCQUNORSxLQUFLO3FCQXJCUHpELGtCQW9CUXdELEtBQ05DOzs7b0JBckJGekQ7O21CQW1FQztrQkFNSztRQUFDO21CQS9DWHNDLGFBQ0FiLHdCQUVBZ0I7O09BOUhGekI7T0FTQVM7T0FzS0FFO1dBdFFFckIsS0FNQUU7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztZQ2xDQWtELFNBQU9DLEdBQUksT0FBSkEsRUFBSztHQUhOLGFBR05EO1lBR0ZFLFNBQVNDLEdBQUksT0FBSkEsRUFBSztZQUNkQyxJQUFJQyxHQUFJLE9BQUEsV0FBSkEsTUFBUTtvQ0FBWkQsS0FEQUY7OztFOzs7Ozs7Ozs7Ozs7R0NOdUI7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDa0d2Qkk7Ozs7Ozs7Ozs7O1lBekJBQztJQUNEO0tBQW1EQztLQUFwQkM7S0FBbEJDO0tBR0xDLFVBQVksK0JBSCtCSDtLQUU3Q0ksZ0NBQ0VEO0tBS0FFLFVBQVksK0JBUldKO0tBT3pCSyxrQ0FDRUQsZUFORkQ7S0FXRUcsVUFBWSwrQkFiUEw7S0FZUE0sa0NBQ0VELGVBTkZEO0lBVUosV0FMSUU7R0FLeUI7O0lBTTlCQzs7O1lBRUFDLFVBQVVDLEtBQUtDO0lBQU8sV0FBWkQsUUFBQUEsU0FBS0MsVUFBTEQsU0FBS0M7R0FBb0U7WUFRbkZDO0lBQ0Q7S0FBNkNDO0tBQTNCQztLQUdWQyxVQXRDUGpCLFlBbUM0Q2U7S0FFdkNHLGdDQUNFRDtLQUtBRSxVQTNDUG5CLFlBbUNpQmdCO0tBT1pJLGtDQUNFRCxlQU5GRDtJQVVKLFdBTElFO0dBS3lCOztJQU05QkM7Ozs7WUFFQUMsZ0JBQWlCQyxXQUFXQztJQUM5QixXQURtQkQsV0E3QmpCWixVQTZCNEJhO0dBQ3FCO1lBOERqREM7Ozs7U0FBZ0NDOzt3Q0FBQUE7U0FBQUE7O0lBRWxDOztTQVFpQkM7OztNQUhSLE1BQUE7U0FHUUE7OztLQUNYQywyQkFEV0QseUJBQUFBO0tBRGJFLGNBRUVEOzs7O2NBZUY7Z0JBQUEsaUNBMUI4QkYsT0FTOUJHOzthQUNhRjs7WUE0Q2JHO1FBQVNDLDZCQW5KWGhDO0lBb0pBLFdBN0ZhLDZCQTRGRmdDLHNCQUFBQTs7WUFXVEMsTUFBTU4sR0FBR2Q7SUFBSGMsT0F2R0s7SUF1R0xBO0lBQUFBO0lBQUFBLE9BQUdkO0lBQUhjO0lBQUFBO0lBQUFBLE9BQUdkOztHQVNTO1lBU2xCcUIsV0FBV1AsR0FBRUU7SUFDZixHQURhRjtLQUFBQSxXQUFBQSxNQUFBQTtLQUFBQSxPQXpIQTtLQXlIQUE7OzZCQUFBQSxNQUFBQSxNQUFFRTs7R0FFdUI7WUFHcENNLFNBQVNSLEdBQUVFLEdBQUdPO0lBQ2hCLElBQUlDLFVBRE9WLFFBQUtTLFdBQUhQLEdBRVRTLGFBRk9YLE9BQUtTO0lBQUxULE9BQ1BVO2FBQ0FDO0tBSUMsSUFDQ0MsYUFMRkQ7S0FGT1gsT0FPTFk7S0FaSkwsV0FLU1AsR0FDUFUsWUFNRUU7S0FQS1osT0FBQUE7OztJQUFBQSxPQUVQVzs7R0FVc0I7WUFHeEJFLFNBQVNiO0lBcEJUTyxXQW9CU1AsR0FBQUE7SUFHTTtLQUFiYyxpQkFIT2QsTUFBQUE7S0FJUGUsWUFKT2Y7S0FLUGdCLGFBTE9oQjtLQU1QSyxjQU5PTDtJQVFUOzs7O2tCQUNnQixpQ0FOZGM7O2tCQUNBQzs7YUFJRjtxQkFBVyxrQ0FMVEQ7O3FCQUVBRTtxQkFDQVg7O0dBTUQ7WUFtQmVZLFFBQVFqQixHQUFHa0IsUUFBUUMsT0FBT0M7SUFDNUMsSUFSZ0NDLE1BT0hILFNBQUhsQjtJQUFBQSxPQUFHa0I7WUFQR0c7YUFBQUE7YUF2QzlCYjtlQThDd0JSO3NCQVBNcUIsZ0JBT1lELGFBQVBEO21CQUFPQzs7aUJBUFpDO1NBYTFCWixZQWIwQlksWUFPWUQ7S0FPMUMsT0FyREFaO2NBOEN3QlI7c0JBQWtCb0IsYUFBUEQsZ0JBTS9CVjtjQUFBQTs7T0FiMEJZLFNBb0RoQjtJQTVEUixJQUFKbkIsUUFRNEJtQjs7YUFSNUJuQixNQVNKLE9BeENFTSxTQThDd0JSLEdBQVdtQixPQUFPQztLQTlDMUNaLFNBOEN3QlIsU0FmdEJFO0tBQUFBLE9BQUFBOztHQTZEaUM7WUFHbkNvQixJQUFJdEIsR0FBR2tCLFFBQVMsT0FqREFELFFBaURaakIsR0FBR2tCLGNBQW1EO1lBQzFESyxVQUFVdkIsR0FBR2tCLFFBQVMsT0FsRE5ELFFBa0ROakIsR0FBR2tCLGVBQXNEO1lBQ25FTSxZQUFZeEIsR0FBR2tCLFFBQVMsT0FuRFJELFFBbURKakIsR0FBR2tCLGVBQXNEO1lBZ0NyRU87Ozs7U0FBY0M7O3dDQUFBQTtTQUFBQTs7SUFDaEIsWUFEZ0JBOztLQUVSLE1BQUE7UUFDR0MsbUJBQVRDO0lBQ0E7WUFEQUE7WUFBU0Q7WUFIS0Q7WUFBQUE7O1lBQUFBO1lBQUFBO1lBQUFBLFVBQUFBOzs7OztHQWtCbEI7SUFBQTs7O1lBRUlHLGVBQWEsY0FBcUI7WUFzQmxDQyxzQkFBc0I5QixHQUFHUztJQUMzQixHQUR3QlQsUUFBR1M7UUFBSFQsT0FBQUEsTUF0QnRCNkI7UUFzQnNCN0I7a0JBQUFBOztPQWxCaEIsTUFBQTtVQUNHMkIsbUJBQVRDO01BaUJzQjVCO01BQUFBLE9BQUFBO01BQUFBLE9BakJ0QjRCO01BaUJzQjVCLE9BakJiMkI7OztNQVVQSSw2QkFPb0IvQixNQUFBQTtNQU5wQmdDLGFBTW9CaEMsU0FBQUEsT0FBQUE7S0FBQUEsT0FBQUEsUUFOcEJnQyxhQURBRCxXQUNBQztLQU1vQmhDLFFBQUFBLFFBTnBCZ0M7S0FNb0JoQyxPQUFBQTtRQUFBQSxRQUFHUyxVQXRCekJvQjs7UUEyQkUzQixLQUxvQkYsVUFBQUEsUUFBR1MsNEJBQUFBO0lBQUhULFFBQUFBLFFBQUdTO0lBTzNCLE9BRklQO0dBRUg7WUFLSytCLFFBQVFqQyxHQUFHa0MsTUFBTUMsY0FBY0M7SUFDckM7S0FEaUJDLFNBQUFIO0tBQU1JLGlCQUFBSDtLQUFjSSwwQkFBQUg7SUFDckM7Y0FiRU4sc0JBWVk5QjtVQUlSa0IsU0FKUWxCLE9BQVNzQztNQUFUdEMsT0FJUmtCO2VBSldtQixRQU9WLFdBUE9yQyxNQUlSa0IsU0FKUWxCLFVBSVJrQjtVQUpXc0IsU0FBQUg7TUFBQUEsU0FBQUc7TUFBTUY7TUFBY0M7O21CQVpuQ1Qsc0JBWVk5QjtNQUFBQSxRQUFBQSxPQUFTc0M7TUFBQUE7TUFBY0M7O21CQVpuQ1Qsc0JBWVk5QjtNQW1CRTtPQUFKRSxJQS9CVjRCLHNCQVlZOUI7T0FvQkZ5Qyx1QkFwQnlCRiw4QkFBZEQ7T0FBY0ksMEJBQUFIO09BQWRJLGlCQW9CWEYsa0JBREF2QyxLQW5CeUJxQztNQUFkRCxpQkFBQUs7TUFBY0osMEJBQUFHOzttQkFabkNaLHNCQVlZOUI7TUFBQUEsUUFBQUEsT0FBU3NDO01BQVR0QyxPQUFBQTtNQUFBQSxPQUFBQTtNQUFTc0M7TUFBY0M7OztVQW9DdEJLLFdBcENENUMsT0FBU3NDO01BQVR0QyxPQW9DQzRDO2NBcENFUDtPQXdDTSxJQUFObkQsVUF4Q0hjLE1Bb0NDNEMsV0FwQ0Q1QyxVQW9DQzRDO2dCQXBDRVAsUUFBSHJDLFlBd0NHZDtPQUVKLE9BRklBOztVQXhDQTJELFNBQUFSO01BQUFBLFNBQUFRO01BQU1QO01BQWNDOztHQTJDaUQ7WUFHcEZPLFlBQVk5QyxHQUFHa0M7SUFDakIsWUFEY2xDO2dCQU9KLE9BckRKaUMsUUE4Q1FqQyxHQUFHa0M7UUFFVmhEO0lBRk9jO2lCQUFHa0MsT0FFVmhELE1BaEREK0MsUUE4Q1FqQyxHQUFHa0M7R0FPaUQ7R0E1SGhFO0lBQUEsZUFpQkFULG1CQW9HQXFCOzs7WUFXRkMsS0FBSy9DLEdBQUVnRCxHQUFFQztJQUNYLFVBRFNELDZCQUFFQyxLQUFGRDtZQUNlO0lBQ2IsSUFBUEUsT0FBTyx3QkFGSmxEO0lBR1A7S0FDa0I7TUFBWkgsWUFBWSx3QkFGZHFELE1BRktGO01BS0hsRCxXQUFXLHdCQUhib0QsT0FGT0QsSUFBRkQ7TUFNUCxNQTdZQXBELGdCQTJZSUMsV0FDQUM7S0FDSjs7Ozs7TUFFb0IsT0FBQTs7O0dBQWdDO1lBR2hEcUQsZUFBZ0JDO0lBQ3RCLFNBRHNCQSxTQUVWO1FBQ0xDLElBSGVEO0lBR1YsT0FBQTs7c0JBQWlDRSxLQUFJQyxHQUFLLE9BQVRELE1BSHZDSCxlQUcyQ0ksT0FBMkI7O2FBQXJFRjtHQUFzRTtHQUk3RTs7WUFFUUcsS0FBTUMsS0FBSUMsT0FBT047SUFDdkIsR0FEdUJBLFNBQVhLLEtBRVAsaUJBRldDO2FBQU9OLFNBS1QsT0FMRU07SUFPQSxJQURQTCxJQU5jRCxTQU9mTyxVQUdOQyxVQVZVSCxLQUFJQyxlQU1QTDtJQUNPLE9BQVJNO0dBQ007WUFFWkMsVUFBV0gsS0FBSUMsT0FBT0c7SUFDeEIsT0FBQTs7Z0MsT0FYTUwsS0FVT0M7YUFBSUM7YUFBT0c7R0FDdUI7WUFHN0NDLFNBQVM5RCxHQUFHeUQsS0FBSVQ7SUFDbEIsSUFBSUMsS0FEY0QsS0F2QmRHLGVBdUJVTTtJQUVkLFdBcENBVixLQWtDVy9DLEdBQU9nRCxHQUNkQztHQUNhO1lBZ0JqQmMsbUJBYnFCL0QsR0FBRW9ELE1BQU1LO0lBQzdCLElBcEJNRCxLQW1CdUJDLFFBQU5MOzs7O1NBR0xsRDtLQUFLLE9BUnJCNEQsU0FLbUI5RCxHQUFReUQsS0FHWHZEOztJQURIO0dBQ3lCO1lBV3hDOEQsMkJBUjZCaEUsR0FBRTZELE9BQU9KO0lBQ3RDLElBaEJFRyxVQWVvQ0gsUUFBUEk7Ozs7U0FHYjNEO0tBQUssT0FkckI0RCxTQVcyQjlELEdBQVN5RCxLQUdwQnZEOztJQURIO0dBQ3lCO1lBT3hDK0QsUUFBUWpFO0lBQ1YsSUFBSWtELE9BQU8sd0JBRERsRCxJQUVHc0Q7SUFDWDtLQUFBLElBQU0sSUFFSnBFLE1BRkksd0JBRkpnRTs7OzhCQUc4QixPQUFBLGtDQUZyQkk7OztLQUdHLElBSEhZLFlBR1RoRixLQUhTb0U7S0FBQUEsTUFBQVk7O0dBS047WUFHTEMsU0FBU25FO0lBQUksVUFWYmlFLFFBVVNqRTtJQUFJLE9BQUE7R0FBMEI7WUFDdkNvRSxRQUFRQyxJQUFHQztJQUFrQyxVQUQ3Q0gsU0FDV0c7SUFBSyxPQUFBLGFBRGhCSCxTQUNRRTtHQUFrRDtZQUMxREUsVUFBVXZFO0lBQThCLFVBRnhDbUUsU0FFVW5FO0lBQThCLE9BQUEsK0JBamdCeEMxQjtHQWlnQm9EOzs7O09BQXBEaUc7T0FEQUg7T0FoZ0JBOUY7T0F3QkFVO09BQ0FYO09BQ0FZO09BUUFHO09BbUJBTztPQUVBQztXQXFIRVEsUUFpSUFrQixLQUNBQyxXQUNBQyxhQWxGQVgsVUF0Q0FQO09BOFRGMkQ7T0FVQUU7T0FqRUFwQjtPQW9EQWdCO09BQ0FDO09BN1hBakU7Ozs7RTs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7Ozs7Ozs7WUUvS0VxSCxTQU1FQztJQUFTLElBTEEvRCxpQkFLVCtEOzttQ0FKUyxPQURBL0Q7O01BR3FCLE9BQUE7S0FERSxJQUFmZ0Usa0JBQUh0SCxjQUFrQixZQUFsQkEsR0FGTHNEO0tBQUFBO2FBRVFnRTs7R0FHSztHQW5CYjtJQUFBLGlCQWFYRjtJQVVrQjs7O1lBYXBCRztJQUFhOzs2REFDUG5FLGlCQUFnQixPQUFoQkE7SUFDRCxPQUFBO0dBQXFDO1lBRzFDb0UsV0FNRUg7SUFBUyxJQUxBL0QsaUJBS1QrRDs7bUNBSlMsT0FEQS9EOztNQUVDLE9BQUE7S0FDaUIsSUFBZmdFLGtCQUFObEUsaUJBQXFCLFlBQXJCQSxNQUhHRTtLQUFBQTthQUdHZ0U7O0dBRVU7OztzQ0FYeEJDLFlBS0FDOzs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0MxQ2E7OztJQUFBO0lBTUE7SUFRSDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJQ0lWQztJQUNBQztZQUlBdEgsWUFBb0R1SCxNQUFLQzs7S0FqQmxEdkg7V0FBQUEsaUJBQUFBO1dBQUFBO1dBQUFBOztXQWlCa0R1SDs7aUJBZjVDLHlDQUZOdkg7Ozs7O2lCQUlnQix5Q0FKaEJBOzs7T0FRUDtRQUFBO2tCQUFpQjs7SUFVbkI7WUFORW9IO1lBS3lERzs7Ozs7WUFPM0M7O1lBUHNDRDs7Ozs7O1lBaUJwREEsS0FBSzNILEdBQUksT0FBSkEsS0FBVTtZQUNmNkgsVUFBVTdILEdBQUksNENBQUpBLE1BQTJDO1lBQ3JEOEgsWUFBWTlILEdBQUksT0FBSkEsS0FBaUI7WUFDN0JrQixPQUFPNkcsT0FBUSxPQUFSQSxVQUFvQjtZQUMzQkMsS0FBS0QsT0FBUSxPQUFSQSxVQUF5QjtZQUM5QkUsT0FBT0YsT0FBUSxPQUFSQSxZQUFBQSxjQUF1QztZQUM5Q0csU0FIT0g7SUFHTSxVQUhOQSxXQUd3QixNQUQvQkUsT0FGT0Y7SUFHTSxXQUhOQTtHQUdvRTtZQVczRXpILFdBQTJDTjtRQUFuQ2Q7SUFBbUNjO0lBQUFBLE9BdkMzQ3lIO0lBdUMyQ3pIO0lBQUFBO0lBQUFBO0lBQUFBO0lBQUFBLFFBQW5DZDtJQUFtQ2MsUUFBbkNkO0lBQW1DYyxRQUFuQ2QsU0FBQUE7V0FBbUNjOztPQU5PLFVBTGxEa0ksU0FXMkNsSTtPQU5PLHFDQU1QQTs7OztPQUppQixVQVA1RGtJLFNBVzJDbEk7T0FKaUIscUNBSWpCQTs7NENBQUFBOzt3Q0FBQUE7O1lBYzNDbUksUUFBUUosT0FDVixPQURVQSxpQkFHRTtZQUdWSyxtQkFBbUJMLE9BQVEsV0FBUkEsaUJBQXVCO1lBQzFDTSxnQkFBZ0JOLE9BQUFBLFdBM0RoQkwsc0JBMkQ0RDtZQUM1RFksZ0JBQWdCUCxPQUFRLE9BQVJBLFNBQTZCOzs7O09BeEQ3QzNIO09Ba0NBRTtPQWhCQXVIO09BREFGO09BR0F6RztPQUNBOEc7T0FDQUM7T0FnQ0FHO09BQ0FDO09BcENBUDtPQXFDQVE7T0FSQUg7Ozs7RTs7Ozs7O0dDdkVZOztJQUFBOzs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ09aNUQ7O0tBQXNCZ0U7S0FBVkw7OzRCQUdhLDhCQUhISztJQUN4Qjs7OEJBQzRCLGlDQUZkTDs7O1lBT1pBLFNBQVNsSSxHQUFJLE9BQUpBLEtBQWM7WUFDdkJ1SSxRQUFRdkksR0FBSSxPQUFKQSxLQUFhO1lBQ3JCd0ksZUFBZXhJLEdBQUksT0FBSkEsS0FBb0I7WUFFbkN5SSxPQUFPQyxLQUFLQyxVQUpIM0k7SUFLWCxJQUFJZCxNQUxPYyxNQU1QNEksTUFOTzVJO0lBT1gsT0FBQTtpQ0FIUzBJLFVBQUtDLFVBQ1Z6SixRQUFBQSxRQUNBMEo7R0FPQztHQUdQO0lBQUE7Ozs7R0FHRTs7Ozs7O01BQTBFO09BSWpFLE1BQUE7TUFGWSxJQURMQyxxQkFDUkMsV0E1Qk52RSxVQTJCY3NFO01BRVosd0JBRElDO0tBRWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFLcEJDLE1BQU9DLFFBQW1CZCxVQUFVZSxRQUFRbkI7SUFDOUMsT0FEU2tCOztXQUNMVCxVQTZCNEI7OztPQVRaO1FBQUEsTUFBQSw2QkFyQjBCVDtRQUMxQ1M7VUFvQkc7Ozs7O1dBcEJIQTs7V0FBQUE7OztRQUFBQTtVQURrQ1U7Ozs7O1dBQ2xDVjs7V0FBQUE7O1dBQUFBOztXQUFBQTs7V0FBQUE7O1dBQUFBOztXQUFBQTttQkFBQUE7Ozs7ZUFES1MsWUFBNkJDO2VBQTdCRDtPQW9DYSxVQUFBLDZCQXBDd0JsQjtPQW9DckMsR0FBQSw0Q0FKTFU7OztVQUFBQTs7O1NBQUFBOztJQU9KLE1BQUE7aUNBdkM0Qk4sVUFDeEJLLFNBK0JBQztHQU9xRDtHQUcxQztJQUFBLGNBcEViQSxnQkEwQkFPOztVQW5DQXhFLFdBT0EyRCxVQUNBSyxTQUdBRTs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O1lDaEJBUyxZQUNFbkIsT0FBT2tCLFFBQU9EO0lBQ2xCLHVDQURJakI7OzthQUFjaUI7aUJBQWRqQixXQUFBQSxZQUFBQSxlQUFBQTthQUFPa0I7YUFBUGxCO0dBUzRCO0dBV3BCO0lBSlZJO0lBSVU7SUFPRTtJQUhDOzs7Ozs7Ozs7O1lBUWJnQixpQkFBeUJwQjtRQUFYcUIsMEJBQ1psSSxTQUR1QjZHLFlBQVhxQjtJQUVoQixXQUYyQnJCLFdBQ3ZCN0csU0FEdUI2RyxlQUN2QjdHOztZQUlGbUksb0JBQW9CdEIsT0FBTXhFLEdBQU53RSxXQUFNeEUsWUFBOEI7WUFDeER0QixRQUFROEYsT0FBQUEsWUFBQUEsNEJBQXdDO1lBRWhEdUIsWUFDRXZCO0lBQ0osSUFBSXdCLGlCQURBeEI7SUFBQUEsWUFDQXdCO0lBREF4QixZQUFBQTtJQUFBQSxZQUFBQTtjQUFBQTs7OztRQU1XLE9BQUEscUNBTlhBLFVBQ0F3Qjs7UUFPRixPQUFBLHFDQVJFeEIsVUFDQXdCOztJQVFHO0dBQUU7WUFHUEMsb0JBQW9CekIsT0FBUSxPQUFSQSxTQUFpQztZQUVyRDBCLGVBQ0UxQixPQUFNMkIsUUFBS3BDO0lBQ2YsWUFESVM7ZUFHRiw4QkFIRUEsYUFBTTJCLFNBQUtwQztjQUFBQTtHQUtIO1lBR1ZxQyxjQUFjNUIsT0FBTTZCLEdBQUV0QztJQUN4Qiw4QkFEZ0JTLFVBQU02QjtJQUN0QixPQUR3QnRDO0dBRW5CO1lBR0h1QyxxQkFBcUI5QixPQUFNNkIsR0FBRXRDO0lBQy9CLDhCQUR1QlMsVUFBTTZCO0lBQzdCLE9BZkVILGVBY3FCMUIsT0FBTTZCLEdBQUV0QztHQUVIO1lBRzFCd0MsWUFBWS9CLE9BQ2QsT0FBTSxXQTNESkksU0EwRFlKLGVBR1E7WUFHcEJnQyxnQkFBZ0JoQyxPQUFRLFdBTnhCK0IsWUFNZ0IvQixPQUErQjtZQUUvQ2lDLHVCQUF1QmpDO0lBQ3pCLFVBRHlCQTs7OzhDQUNyQmtDO1NBQUFBOztJQUtKLEdBTElBOztnQkFEcUJsQztrQkFGdkJnQyxnQkFFdUJoQzs7ZUFDckJrQztJQUtvQyxhQXpGdENmLFlBbUZ1Qm5CO0dBTzBCO1lBR2pEbUMsUUFBUW5DLE9BQU9xQjtJQUNqQjt1Q0FEVXJCLFVBQUFBLFlBQU9xQjtHQUNvRDtZQUduRWUsZUFDRXBDLE9BQU0yQixRQUFLcEM7SUFmYjBDLHVCQWVFakM7SUFFSiw4QkFGSUEsVUFBTTJCO0lBRVYsT0FGZXBDO0dBUVY7WUFHSDhDLHdCQUNFckMsT0FBTVQ7SUEzQlIwQyx1QkEyQkVqQztJQUVKLDhCQUZJQTtJQUVKLE9BRlVUO0dBR0w7WUFHSCtDLG9CQUNFdEMsT0FBTTJCLFFBQU1wQztJQWxDZDBDLHVCQWtDRWpDO1dBQUFBOztPQUlDLEdBeENIZ0MsZ0JBb0NFaEMsUUF4QkZtQyxRQXdCRW5DLFdBSTRCLE9BSmhCVDs7T0FhTixPQWJNQTs7T0FPWCxHQTNDSHlDLGdCQW9DRWhDLFFBeEJGbUMsUUF3QkVuQyxXQU80QixPQVBoQlQ7O09BVXNCLFVBOUZwQzZCLGVBb0ZFcEI7T0FBQUE7T0FXRiw4QkFYRUE7T0FXRixPQVhjVDs7R0FhRDtZQUdiZ0QsWUFBWXZDLE9BQU02QixHQUFFdEM7SUFDdEIsVUFEb0JzQzs7Ozs7Ozs7UUFDcEI7Ozs7Ozs7Ozs7Ozs7OztZQUFJVzs7Ozs7VUFBQUEsTUFEZ0JYOzs7S0FTaEIsOEJBVFU3QjtTQUNWd0MsTUFEZ0JYOztJQVlwQiw4QkFaYzdCLFVBQ1Z3QztJQVdKLE9BekZFZCxlQTZFWTFCLE9BQU02QixHQUFFdEM7R0FhTTtZQUcxQmtELG1CQUFtQnpDLE9BQU1UO0lBQzNCLDhCQURxQlM7SUFDckIsT0FEMkJUO0dBRXRCO1lBS0htRCxRQUFRYjtJQUNWLFNBRFVBO2FBQUFBLHNCQUFBQTs7a0JBQUFBLFVBQUFBO1lBQUFBO0dBSTZCO1lBR3JDYyxvQkFBb0IzQyxPQVRaNkIsR0FTb0J0QztJQUFSUyxZQUFBQSxzQkFUWjZCO0lBV1YsT0E3R0VILGVBMkdvQjFCLE9BVFo2QixHQVNvQnRDO0dBRUY7WUFHMUJxRCx5QkFBeUI1QyxPQWRqQjZCLEdBY3lCdEM7SUFDbkMsSUFBSXNELFNBRHVCN0Msc0JBZGpCNkI7SUFjaUI3QjthQUN2QjZDLE9BektGMUIsWUF3S3lCbkI7SUFJTyxVQUFBLDJCQUg5QjZDO0lBR0osOEJBSjJCN0M7SUFJM0IsT0FwSEUwQixlQWdIeUIxQixPQWRqQjZCLEdBY3lCdEM7R0FLUDtZQUcxQnVELCtCQUFpQzlDLE9BQU02QixHQUFFdEM7SUFDM0MsSUFBSXNELFNBRCtCN0Msc0JBQU02QjtJQUFON0I7YUFDL0I2QyxPQWpMRjFCLFlBZ0xpQ25CO0lBR2YsT0EzSGxCMEIsZUF3SGlDMUIsT0FBTTZCLEdBQUV0QztHQUlmO1lBRzFCd0Qsb0JBQW9CL0MsT0FBTTZCLEdBQUV0QztJQUN5QixVQTVCckRtRCxRQTJCMEJiO0lBQU43QixXQUFBQTtJQUV0QixPQWpJRTBCLGVBK0hvQjFCLE9BQU02QixHQUFFdEM7R0FFRjtZQUcxQnlELHlCQUF5QmhELE9BQU02QixHQUFFdEM7SUFDbkMsSUFBNEMsTUFqQzFDbUQsUUFnQytCYixJQUM3QmdCLFFBRHVCN0M7SUFBQUE7SUFHTyxVQUFBLDJCQUY5QjZDO0lBRUosOEJBSDJCN0M7SUFHM0IsT0F2SUUwQixlQW9JeUIxQixPQUFNNkIsR0FBRXRDO0dBSVA7WUFHMUIwRCxRQUNFakQsT0FBTTJCLFFBQU1wQztJQWpIZDBDLHVCQWlIRWpDO0lBQUFBLFdBQUFBO1dBQUFBOztPQUtDLEdBeEhIZ0MsZ0JBbUhFaEMsUUF2R0ZtQyxRQXVHRW5DLFdBSzRCLE9BTGhCVDs7T0FPSCxPQTFIWHlDLGdCQW1IRWhDLGFBQVlULFNBQUFBOztPQVNYLE9BNUhIeUMsZ0JBbUhFaEMsVUF2R0ZtQyxRQXVHRW5DLGVBQVlULFVBQUFBO2VBY1AsV0FqTFA2QixlQW1LRXBCLFFBQVlUOztHQWN3QjtZQUd0QzJELG1CQUFtQmxEO0lBQ3JCLE9BRUU7O2FBSG1CQTtpQkFBQUEsV0FBQUEsWUFBQUEsZUFBQUE7R0FNbEI7WUFZRG1ELCtCQUErQm5ELE9BQU1ULE9BQU84QjtJQUM5QyxZQURpQ3JCO2tDQUVkLE9BRm9CVDtJQU1yQyxJQUhtQjZELGNBR2ZDLGVBTjJCckQ7SUFBQUEsWUFBQUEsWUFBYXFCO1FBUXhDaUMsbUJBUjJCdEQ7SUFTL0IsSUFBTyxJQUlKVixVQUpJLFdBTlk4RCxHQUhZcEQsT0FBTVQ7VUFVeEJnRTtTQUFBQyx3QkFBQUQ7S0FDVix1Q0FYNEJ2RDtLQVk1QixNQUFBLDRCQUZVd0Q7OztNQVZrQnhELGVBTTNCcUQsZUFOd0NoQztTQUFickIsY0FRM0JzRDtLQVIyQnRELFlBTTNCcUQ7WUFOMkJyRDs7UUFsQi9Ca0QsbUJBa0IrQmxEOzs7UUFsQi9Ca0QsbUJBa0IrQmxEOztLQWtCNUIsT0FMQVY7O0lBR0EsTUFBQTtHQUdNO1lBR1RtRSxhQUFhekQ7SUFBUTtLQUFBLE1BNUtyQmdDLGdCQTRLYWhDO0tBQVEsa0JBQVJBOztHQUFnRDtZQUU3RDBELDJCQUEyQjFELE9BQU1ULE9BQU84QjtJQUMxQyxPQUhFb0MsYUFFMkJ6RDtjQXhCM0JtRCwrQkF3QjJCbkQsT0FBTVQsT0FBTzhCO2NBQVA5QjtHQUNvRDtZQWFyRm9FLFdBQ0UzRCxPQUFNVCxPQUFPOEI7SUFDakIsWUFESXJCOzs7O1VBUEY0RDtTQU9FNUQsV0FQRjREO1dBUUVDLGFBL1FGMUMsWUE4UUVuQjs7O1VBUHFCOEQ7U0FBdkJGLHdCQU9FNUQ7T0FBQUEsV0FQcUI4RDtXQVFyQkQ7Ozs7U0FBQUE7O0lBQ0QsS0FuQkRKLGFBaUJFekQsUUFZQyxPQVpLVDtXQUNOc0UsWUFEQTdELFlBQUFBO09BQ0E2RCwyQkFEQTdELDRCQVdHLE9BWEdUO0lBVUgsT0FqREw0RCwrQkF1Q0VuRCxPQUFNVCxPQUFPOEI7R0FZUDtZQUdKMEM7UUFBVTVIOzs7TUFDTCxNQUFBOztVQUNKb0Q7TUFBUyxlQUZBcEQsUUFFVG9EOztLQUMyQixJQUFwQkQsc0JBQU5qRSxtQkFBMEIsWUFBMUJBLE1BSFFjO0tBQUFBO2VBR0ZtRDs7O1lBR1owRSx5QkFBeUJDLFNBQVMxRTtJQUdwQyxVQUhvQ0EsNEJBQUFBO0tBS2xCLFdBTGtCQSxjQUFUMEUsU0FBUzFFLFdBQUFBO0lBTTdCLGVBTm9CMEUsVUFBUzFFO0dBTVE7WUFHMUMyRSxzQkFBc0I3SSxNQU9wQmtFO0ksVUFBQUEsNEJBQUFBO0tBSGU7TUFGZ0NELFVBSy9DQztNQUxpQzRFLGVBS2pDNUU7TUFMa0I2RSxnQkFLbEI3RTtNQUpJMEU7O1NBRGNHO1NBRXlCLGtDQUZWRDtTQUZiOUk7S0FNcEIsT0FmRjJJLHlCQVlNQyxTQUQyQzNFOztJQUt0QyxlQVBXakUsT0FPcEJrRTs7WUFZRjhFLFFBQ0VyRSxPQUFNMkIsUUFBTTJDO0lBQ2hCLFFBREl0RSxVQXNCQyxPQXRWSG1CLFlBZ1VFbkI7V0FBQUE7O09BU0ssR0F4UFBnQyxnQkErT0VoQyxRQW5PRm1DLFFBbU9FbkM7V0FHRXVFLFVBSFVEOzs7T0FXQyxJQVJYQyxVQWxQSnZDLGdCQStPRWhDLFNBbkNFK0QsYUFtQ1VPLFdBQUFBOzs7T0FhUDtRQVZIQztVQWxQSnZDLGdCQStPRWhDO2NBbk9GbUMsUUFtT0VuQyxXQW5DRStELGFBbUNVTzthQUFBQTs7O09Ba0JXLElBNUJQRSxVQXJSbEJwRCxpQkErUkVwQixRQVZ3QnpFLGlCQVVaK0k7Ozs7OztZQVJxQyxJQUFoQy9FLGtCQUFIdEgsY0FBbUMsWUFBbkNBLEdBRlVzRDtZQUFBQTtvQkFFUGdFOzs7WUFFTzthQURQRDthQUFYeEg7YUFDRnVELGVBREV2RCxXQUhVME0sVUFBUWpKO2FBYXRCZ0osVUF2QkpMLHNCQWNNN0ksTUFEYWlFOzs7UUFHWSxNQUFBOzs7SUFJN0JVLFdBQUFBO0lBcUJGLE9BeEVBMkQsV0FtREUzRCxPQUdFdUU7R0FtQjBEO1lBRzlERSxjQUF1QnpFO0lBR2lDLElBSDdDcUIsMEJBRzZDLE1BM1R4REQsZ0JBd1RXQyxRQUFZckI7SUFHekIsV0FIeUJBOztZQVF2QjBFLHdCQUF3QjFFLE9BQU96QjtJQUNqQyxJQUFJb0csNEJBRDZCcEc7SUFFakMsYUFESW9HOzt5Q0FEc0IzRSxVQUFBQTtlQXBReEJtQyxRQW9Rd0JuQyxTQUN0QjJFLFVBclFGeEMsUUFvUXdCbkM7R0FNRTtZQUcxQjRFLGNBQ0U1RSxPQUFNVDtJQUNBLElBQU5zRixNQUFNLDZCQURON0U7SUFFSiw2QkFGSUE7V0FBQUE7O09BTUcsR0FoU0xnQyxnQkEwUkVoQyxRQVZGMEUsd0JBVUUxRSxPQUNBNkU7V0FFQXZGLFVBSE1DOzs7T0FRSyxJQUxYRCxVQTdSRjBDLGdCQTBSRWhDLGlCQUNBNkUsTUFETXRGLFNBQUFBOzs7T0FVSDtRQVBIRDtVQTdSRjBDLGdCQTBSRWhDO2NBVkYwRSx3QkFVRTFFLE9BQ0E2RSxjQUFBQSxNQURNdEY7YUFBQUE7OztPQWtCUTtRQUFBLE1BNVZoQjZCLGlCQTBVRXBCO1FBZ0JJOEU7Y0ExVk4xRCx3Q0EyVUV5RCxXQURBN0U7UUFxQkkzRSxXQUxBeUosS0FmSkQsU0FBQUE7UUFFQXZGLFVBbEVGNEUsc0JBb0ZNN0ksTUFyQkVrRTs7SUF3QlYsT0F0SEVvRSxXQThGRTNELE9BR0FWO0dBcUIyQjtZQUc3QnlGLGlCQUNFL0UsT0FBTTJCLFFBQU1wQztJQUNOLElBQU5zRixNQUFNLDZCQURON0U7SUFFSiw2QkFGSUE7V0FBQUE7O09BTUcsR0E1VExnQyxnQkFzVEVoQyxRQTFTRm1DLFFBMFNFbkM7V0FHQVYsVUFIWUM7OztPQVFELElBTFhELFVBelRGMEMsZ0JBc1RFaEMsaUJBQ0E2RSxNQURZdEYsU0FBQUE7OztPQVVUO1FBUEhEO1VBelRGMEMsZ0JBc1RFaEM7Y0ExU0ZtQyxRQTBTRW5DLG1CQUNBNkUsTUFEWXRGO2FBQUFBOzs7V0FnQlJ5RixNQWhCSmhGO09BaUJBLDhCQURJZ0Y7T0FFSSxJQUFKQyxJQUFJLDZCQUZKRDtPQUdKLDZCQUhJQTtPQUtHO1FBREgzSixXQWxFTm9KLGNBOENFekUsUUFDQTZFLFNBaUJJSTtRQWZKM0YsVUE5RkY0RSxzQkErR003SSxNQXBCUWtFOztJQXlCaEIsT0FuSkVvRSxXQTBIRTNELE9BR0FWO0dBc0IyQjtZQUc3QjRGLG1CQUNFbEYsT0FBTTJCLFFBQU1wQztJQUFaUyxlQUFBQSxVQUFBQTtnQkFBQUEsZUFuWUZvQixpQkFtWUVwQixXQUFZVCxTQUFBQTtHQU1KO1lBR1Y0RixvQkFDRW5GLE9BQU0yQixRQUFLcEM7SUFBWFMsV0FBQUE7V0FBQUE7O09BR1csT0FIQVQ7O09BSUwsT0FKS0E7O09BS1UsT0FMVkE7O2dCQUFYUztRQVNvQyxVQXRadENvQixpQkE2WUVwQjtRQUFBQTtRQVVBLDhCQVZBQTs7T0FXRiw4QkFYRUEsYUFBTTJCO09BV1IsT0FYYXBDOztHQVlSO1lBR0w2RixrQkFDRXBGLE9BQU0yQixRQUFLcEM7SUFBWFMsV0FBQUE7V0FBQUE7O09BR1csT0FIQVQ7O09BSUwsT0FKS0E7O09BS1UsT0FMVkE7O1dBT1R5RixNQVBGaEY7T0FRRiw4QkFESWdGLEtBUElyRDtnQkFBTjNCLFVBa0JHLE9BbEJRVDtPQVdILElBQUowRixJQUFJLDZCQUpORDtPQUtGLDZCQUxFQTtPQU9jO1FBRFpmLGNBbEhOUSxjQXFHRXpFLFFBV0lpRjtRQUtBM0YsVUEzS04wRSx5QkF3S01DLFNBYk8xRTtPQWlCWCxPQWhORm1FLDJCQStMRTFELE9BZ0JJVjs7R0FFSTtZQUdWK0YsbUJBQ0VyRixPQUFNMkIsUUFBS3BDO0lBQ2YsT0FESVMsVUFNRyxPQU5RVDtJQUd1QixVQXRicEM2QixlQW1iRXBCO0lBQUFBO0lBSUYsOEJBSkVBLGFBQU0yQjtJQUlSLE9BSmFwQztHQU1IO1lBR1YrRixpQkFDRXRGLE9BQU1UO0lBQ1YsT0FESVM7O09BRVcsT0FGTFQ7O09BR0EsT0FIQUE7O09BSWUsT0FKZkE7O09BT0EsSUFESnlGLE1BTkZoRixhQU9FaUYsSUFBSSw2QkFESkQ7T0FFSiw2QkFGSUE7T0FHc0M7UUFBdENmLGNBOUlKUSxZQXFJRXpFLFFBT0VpRjtRQUdBM0YsVUFyTUowRSx5QkFvTUlDLFNBVEkxRTtPQVdSLE9BMU9BbUUsMkJBK05FMUQsT0FVRVY7O0dBQzJDO1lBRy9DaUcsY0FDRXZGLE9BQU1UO0lBQ1YsT0FESVMsVUE3ZUZtQixZQTZlRW5CO0lBRUQsR0FwYUQrQixZQWthRS9CLFFBN2VGbUIsWUE2ZUVuQjthQUFBQTtlQUFBQTs7Ozs7Ozs7O01BN2VGbUIsWUE2ZUVuQjs7O0lBU0osT0FUVVQ7R0FTTDs7OztPQXRmSDRCO09BaUJBZjtPQXFCQWtCO09BQ0FwSDtPQUVBcUg7T0FhQUU7OztPQVdBRztPQUtBRTtPQStEQVM7T0E4QkFJO09BS0FDO09BUUFFO09BT0FDO09BS0FDO09BdU9Ba0M7T0FsVUE5QztPQW1CQUU7T0E1REFaO09BMklBdUI7T0E0SEFvQjtPQXVFQVU7T0F1Q0FJO09BZ0JBQztPQXNCQUM7T0FVQUM7T0FuSEFWO09BN1BBdkM7T0ErWEFrRDtPQXZWQTlDOzs7O0U7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztZQzlJQWpHO0lBQ0Q7O09BQ2tDOztPQUNGOztPQUNiOztPQUNBOztPQUNRO2VBQ0M7O0dBQTBDO1lBTXJFZ0osVUFBVXZOO0lBQ04sWUFkSnVFLFVBYVV2RTs7S0FHQSxPQUFBO1FBRExnTjtJQUFLLE9BQUxBO0dBQ29EOzJDQWhCekR6SSxXQWFBZ0o7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUN0QkF4RTtZQU1BeUUsUUFBUXpGLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSG9HLFFBQVExRixPQUFNMkIsUUFBTXBDO0lBQ3RCLHdDQURVUztJQUVWLHdDQUZVQTtJQUVWLE9BRnNCVDtHQUdqQjtZQUtIb0csUUFBUTNGLE9BQU0yQixRQUFNcEM7SUFDdEIsd0NBRFVTO0lBRVYsd0NBRlVBO0lBRVYsT0FGc0JUO0dBR2pCO1lBS0hxRyxRQUFRNUYsT0FBTTJCLFFBQU1wQztJQUN0Qix3Q0FEVVM7SUFFVix3Q0FGVUE7SUFFVixPQUZzQlQ7R0FHakI7WUFLSHNHLFFBQVE3RixPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0h3RyxRQUFROUYsT0FBTTJCLFFBQU1wQztJQUN0Qix3Q0FEVVM7SUFFVix3Q0FGVUE7SUFFVixPQUZzQlQ7R0FHakI7WUFLSHdHLFFBQVEvRixPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0gwRyxRQUFRaEcsT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIMkcsUUFBUWpHLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSDRHLFFBQVFsRyxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBSUg2RyxRQUFRbkcsT0FBTzJCLFFBQU1wQztJQUFTLE9BQUEsV0EzRjlCeUIsT0EyRlFoQjtHQUF5RTtZQUVqRm9HLFFBQVFwRyxPQUFPMkIsUUFBTXBDO0lBQVMsT0FBQSxXQTdGOUJ5QixPQTZGUWhCO0dBQThFO1lBR3RGcUcsUUFBUXJHLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHdDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSGdILFFBQVF0RyxPQUFNMkIsUUFBTXBDO0lBQ1YsSUFBUkQsVUFBUSx5Q0FERlUsT0FBWVQ7SUFFdEIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIaUgsUUFBUXZHLE9BQU0yQixRQUFNcEM7SUFDVixJQUFSRCxVQUFRLHlDQURGVSxPQUFZVDtJQUV0Qix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0hrSCxRQUFReEcsT0FBTTJCLFFBQU1wQztJQUNWLElBQVJELFVBQVEseUNBREZVLE9BQVlUO0lBRXRCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSG1ILFFBQVF6RyxPQUFNMkIsUUFBS3BDO0lBQ3JCO0tBQUlELFVBQVEseUNBREZVLE9BQVdUO0tBRWpCK0U7T0FBUSx5Q0FGRnRFLE9BQU0yQixRQUNackM7SUFFSix3Q0FIVVU7SUFJVix3Q0FKVUE7SUFJVixPQUZJc0U7R0FHQztZQUtIb0MsUUFBUTFHLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHdDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSHFILFFBQVEzRyxPQUFNMkIsUUFBS3BDO0lBQ3JCO0tBQUlELFVBQVEseUNBREZVLE9BQVdUO0tBRWpCK0U7T0FBUSx5Q0FGRnRFLE9BQU0yQixRQUNackM7SUFFSix3Q0FIVVU7SUFJVix3Q0FKVUE7SUFJVixPQUZJc0U7R0FHQztZQUtIc0MsUUFBUTVHLE9BQU0yQixRQUFLcEM7SUFDckI7S0FBSUQsVUFBUSx5Q0FERlUsT0FBV1Q7S0FFakIrRTtPQUFRLHlDQUZGdEUsT0FBTTJCLFFBQ1pyQztJQUVKLHdDQUhVVTtJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0h1QyxRQUFRN0csT0FBTTJCLFFBQUtwQztJQUNyQjtLQUFJRCxVQUFRLHlDQURGVSxPQUFXVDtLQUVqQitFO09BQVEseUNBRkZ0RSxPQUFNMkIsUUFDWnJDO0lBRUosd0NBSFVVO0lBSVYsd0NBSlVBO0lBSVYsT0FGSXNFO0dBR0M7WUFLSHdDLFFBQVE5RyxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx3Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0h5SCxRQUFRL0csT0FBTzJCLFFBQU1wQztJQUN2QixPQUFBLFdBL0xFeUIsT0E4TFFoQjtHQUMrQztZQUt2RGdILFFBQVFoSCxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0gySCxRQUFRakgsT0FBTTJCLFFBQU1wQztJQUNWLElBQVJELFVBQVEseUNBREZVLE9BQVlUO0lBRXRCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSDRILFFBQVFsSCxPQUFNMkIsUUFBTXBDO0lBQ1YsSUFBUkQsVUFBUSx5Q0FERlUsT0FBWVQ7SUFFdEIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtINkgsUUFBUW5ILE9BQU0yQixRQUFLcEM7SUFDckI7S0FBSUQsVUFBUSx5Q0FERlUsT0FBV1Q7S0FFakIrRSxVQUFRLHdDQUZGdEUsT0FBTTJCLFFBQ1pyQztJQUVKLHdDQUhVVTtJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0g4QyxRQUFRcEgsT0FBTTJCLFFBQU1wQztJQUN0QjtLQUFJRCxVQUFRLHlDQURGVSxPQUFZVDtLQUVsQitFLFVBQVEseUNBRkZ0RSxPQUNOVjtJQUVKLHdDQUhVVTtJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0grQyxRQUFRckgsT0FBTTJCLFFBQU1wQztJQUN0QjtLQUFJRCxVQUFRLHlDQURGVSxPQUFZVDtLQUVsQitFLFVBQVEseUNBRkZ0RSxPQUNOVjtJQUVKLHdDQUhVVTtJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0hnRCxRQUFRdEgsT0FBTTJCLFFBQU1wQztJQUN0QjtLQUFJRCxVQUFRLHlDQURGVSxPQUFZVDtLQUVsQitFLFVBQVEseUNBRkZ0RSxPQUNOVjtJQUVKLHdDQUhVVTtJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0hpRCxRQUFRdkgsT0FBTTJCLFFBQUtwQztJQUNyQjtLQUFJRCxVQUFRLHlDQURGVSxPQUFXVDtLQUVqQitFLFVBQVEseUNBRkZ0RSxPQUNOVjtLQUVBaUY7T0FBUSx5Q0FIRnZFLE9BQU0yQixRQUVaMkM7SUFFSix3Q0FKVXRFO0lBS1Ysd0NBTFVBO0lBS1YsT0FGSXVFO0dBR0M7WUFLSGlELFFBQVF4SCxPQUFNMkIsUUFBS3BDO0lBQ3JCO0tBQUlELFVBQVEseUNBREZVLE9BQVdUO0tBRWpCK0UsVUFBUSx3Q0FGRnRFLE9BQU0yQixRQUNackM7SUFFSix3Q0FIVVU7SUFJVix3Q0FKVUE7SUFJVixPQUZJc0U7R0FHQztZQUtIbUQsUUFBUXpILE9BQU0yQixRQUFLcEM7SUFDckI7S0FBSUQsVUFBUSx5Q0FERlUsT0FBV1Q7S0FFakIrRSxVQUFRLHlDQUZGdEUsT0FDTlY7S0FFQWlGO09BQVEseUNBSEZ2RSxPQUFNMkIsUUFFWjJDO0lBRUosd0NBSlV0RTtJQUtWLHdDQUxVQTtJQUtWLE9BRkl1RTtHQUdDO1lBS0htRCxRQUFRMUgsT0FBTTJCLFFBQUtwQztJQUNyQjtLQUFJRCxVQUFRLHlDQURGVSxPQUFXVDtLQUVqQitFLFVBQVEseUNBRkZ0RSxPQUNOVjtLQUVBaUY7T0FBUSx5Q0FIRnZFLE9BQU0yQixRQUVaMkM7SUFFSix3Q0FKVXRFO0lBS1Ysd0NBTFVBO0lBS1YsT0FGSXVFO0dBR0M7WUFLSG9ELFFBQVEzSCxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0hzSSxRQUFRNUgsT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIdUksUUFBUTdILE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSHdJLFFBQVE5SCxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0h5SSxRQUFRL0gsT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIMEksUUFBUWhJLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSDJJLFFBQVFqSSxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0g0SSxRQUFRbEksT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtINkksUUFBUW5JLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSDhJLFFBQVFwSSxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0grSSxRQUFRckksT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIZ0osUUFBUXRJLE9BQU0yQixRQUFLcEM7SUFDckI7S0FBSUQsVUFBUSx5Q0FERlUsT0FBV1Q7S0FFakIrRTtPQUFRLHlDQUZGdEUsT0FBTTJCLFFBQ1pyQztJQUVKLHdDQUhVVTtJQUlWLHdDQUpVQTtJQUlWLE9BRklzRTtHQUdDO1lBS0hpRSxRQUFRdkksT0FBTTJCLFFBQUtwQztJQUNyQjtLQUFJRCxVQUFRLHlDQURGVSxPQUFXVDtLQUVqQitFO09BQVEseUNBRkZ0RSxPQUFNMkIsUUFDWnJDO0lBRUosd0NBSFVVO0lBSVYsd0NBSlVBO0lBSVYsT0FGSXNFO0dBR0M7WUFLSGtFLFFBQVF4SSxPQUFNMkIsUUFBS3BDO0lBQ3JCO0tBQUlELFVBQVEseUNBREZVLE9BQVdUO0tBRWpCK0U7T0FBUSx5Q0FGRnRFLE9BQU0yQixRQUNackM7SUFFSix3Q0FIVVU7SUFJVix3Q0FKVUE7SUFJVixPQUZJc0U7R0FHQztZQUtIbUUsUUFBUXpJLE9BQU8yQixRQUFNcEM7SUFDdkIsT0FBQSxXQXBiRXlCLE9BbWJRaEI7R0FDbUQ7WUFLM0QwSSxRQUFRMUksT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIcUosUUFBUTNJLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSHNKLFFBQVE1SSxPQUFPMkIsUUFBTXBDO0lBQ3ZCLE9BQUEsV0E1Y0V5QixPQTJjUWhCO0dBQ21EO1lBSzNENkksUUFBUTdJLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSHdKLFFBQVE5SSxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0h5SixRQUFRL0ksT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIMEosUUFBUWhKLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSDJKLFFBQVFqSixPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0g0SixRQUFRbEosT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtINkosUUFBUW5KLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSDhKLFFBQVFwSixPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0grSixRQUFRckosT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIZ0ssUUFBUXRKLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSGlLLFFBQVF2SixPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0hrSyxRQUFReEosT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIbUssUUFBUXpKLE9BQU0yQixRQUFLcEM7SUFDckI7S0FBSUQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztLQUVTLFlBQUEsd0NBRnBCUztJQUVWLHdDQUZVQTtJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSG9LLFFBQVExSixPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0hxSyxRQUFRM0osT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIc0ssUUFBUTVKLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSHVLLFFBQVE3SixPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0h3SyxRQUFROUosT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIeUssUUFBUS9KLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSDBLLFFBQVFoSyxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0gySyxRQUFRakssT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtINEssUUFBUWxLLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSDZLLFFBQVFuSyxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0g4SyxRQUFRcEssT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUtIK0ssUUFBUXJLLE9BQU0yQixRQUFLcEM7SUFDVDtLQUFSRCxVQUFRLHlDQURGVSxPQUFNMkIsUUFBS3BDO0lBRXJCLHdDQUZVUztJQUdWLHdDQUhVQTtJQUdWLE9BRklWO0dBR0M7WUFLSGdMLFFBQVF0SyxPQUFNMkIsUUFBS3BDO0lBQ1Q7S0FBUkQsVUFBUSx5Q0FERlUsT0FBTTJCLFFBQUtwQztJQUVyQix3Q0FGVVM7SUFHVix3Q0FIVUE7SUFHVixPQUZJVjtHQUdDO1lBS0hpTCxRQUFRdkssT0FBTTJCLFFBQUtwQztJQUNUO0tBQVJELFVBQVEseUNBREZVLE9BQU0yQixRQUFLcEM7SUFFckIsd0NBRlVTO0lBR1Ysd0NBSFVBO0lBR1YsT0FGSVY7R0FHQztZQUlIa0wsWUFBWXhLLE9BQU1UO0lBQVEsT0FBQSx5Q0FBZFMsT0FBTVQ7R0FBaUM7WUFFbkRrTCxZQUFZekssT0FBTVQsT0FBUyxPQUFBLFdBcnNCM0J5QixPQXFzQlloQixhQUFnRTtZQUU1RTBLLFlBQVkxSyxPQUFNVCxPQUFTLE9BQUEsV0F2c0IzQnlCLE9BdXNCWWhCLGFBQXFFO1lBR2pGMkssWUFBWTNLLE9BQU1UO0lBQ1IsSUFBUkQsVUFBUSx5Q0FERVUsT0FBTVQ7SUFFcEIsT0FBQSx5Q0FGY1MsT0FDVlY7R0FDcUI7WUFLdkJzTCxZQUFZNUssT0FBTVQ7SUFDUixJQUFSRCxVQUFRLHlDQURFVSxPQUFNVDtJQUVwQixPQUFBLHlDQUZjUyxPQUNWVjtHQUNxQjtZQUt2QnVMLFlBQVk3SyxPQUFNVDtJQUNwQjtLQUFJRCxVQUFRLHlDQURFVSxPQUFNVDtLQUVoQitFLFVBQVEseUNBRkV0RSxPQUNWVjtJQUVKLE9BQUEseUNBSGNVLE9BRVZzRTtHQUNxQjtZQUl2QndHLFlBQVk5SyxPQUFNVCxPQUFTLE9BQUEsV0EvdEIzQnlCLE9BK3RCWWhCLGFBQWtFO1lBRTlFK0ssWUFBWS9LLE9BQU1ULE9BQVMsT0FBQSxXQWp1QjNCeUIsT0FpdUJZaEIsYUFBa0U7R0FJaEY7SUFERWdMOztPQTl0QkF2RjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVFBQztPQWpCQUY7T0FTQUM7T0FnQkFFO09BekJBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQWlDQUk7T0FTQUM7T0ExQ0FMO09BQUFBO09BQUFBO09BQUFBO09Ba0RBTTtPQVNBQztPQTNEQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvRUFRO09BcEVBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZFQVM7T0E3RUFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXRFQVQ7T0FzRUFTO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BR0FDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQVVBQztPQTlDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBUztPQXJGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BVUFDO09BOUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4RkFVO09BOUZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0EwREFNO09BOUZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFTO09BckZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9HQVc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FVQUM7T0FwQkFGO09BVUFDO09Bb0JBRTtPQTlCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FWQUQ7T0F3Q0FJO09BV0FDO09BbkRBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQTZEQU07T0FXQUM7T0F4RUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BbUZBUTtPQW5GQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E0RkFTO09BNUZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFHQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwQ0FKO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVZBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9CQUU7T0FwQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOEJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQTJCQUc7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQVNBQztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0EyQkFHO09BN0NBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQVNBQztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FyTkF4QjtPQXFOQXdCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BbEJBRjtPQWtCQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BN0NBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0F0REFOO09BQUFBO09BK0RBTztPQS9EQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3RUFRO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BeEVBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWlGQVM7T0FqRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMEZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBDQUo7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F6TUF2QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9PQTBCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcE9BMUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2T0EyQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTdPQTNCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWlMQW9CO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQVNBQztPQS9EQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BdERBTjtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09B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Ozs7Uyx1QkFBQUE7UyxjQUFBQTtTLG9CQUFWTSxLQUFVTjs7O1NBa0N4QixRQUFBLDhCQWxDd0JBLFFBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztTLG9CQUFWTTtTLG9CQUFBQSxLQUFVTjs7O1NBZ0R4QjtVQUFBLEtBQUEsOEJBaER3QkEsUUFBQUE7VUFxRHhCLEtBQUEsOEJBckR3QkEsUUFBQUE7VUEwRHhCLEtBQUEsOEJBMUR3QkEsUUFBQUE7Ozs7OztVO1csUSw4QkFBQUE7Ozs7VzthOzs7Ozs7OztVOztTLFU7UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OztTQWtGeEI7VUFBQSxPQUFBLDhCQWxGd0JBLFFBQUFBO1VBdUZ4QixPQUFBLDhCQXZGd0JBLFFBQUFBO1U7Ozs7VTs7Ozs7VSxNO1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FzR3hCLFVBQUEsOEJBdEd3QkEsUUFBQUE7UyxvQkFBVk07UyxvQkFBQUE7UyxvQkFBQUEsS0FBVU47OztTLGNBQUFBO1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7bUJBQUFBLG1CQUFBQTtTLG9CQUFWTSxLQUFVTjtTLG9CQUFWTSxLQUFVTjs7O1M7O1k7cUNBRVVnQixVQUFBQSxXQUFBQTtTLE87OztJQURjOztLOztNO2tCOzs7a0I7SyxxQjtJO0k7Ozs7Ozs7bUMsUzt5QixTOzZCLGM7O0ksVztHO2tELE87Rzs2QyxPO0c7Ozs7Ozs7O0ksVTtJLFc7Rzs7SSxxQjtHOzhCLE8sd0M7O0ksTztHOztJLFU7SSxPO0c7O0k7O0c7K0Isc0I7O0k7OztLLG1CO0ksZTs7OztJLGU7O2dELHlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7OztJQ29QOUNDO0lBcU1BQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQS8yQkFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7SUFBQUM7SUFBQUM7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FNQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FZQUU7SUM5TEkwRjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBV05DO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7O1NBM0JNM0U7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7Ozs7Ozs7U0FBQUM7U0FBQUM7U0FBQUM7U0FB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QztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUtJQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQURBRDtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUtJQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQURBRDtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQ3BhSUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQVdOQztJQVVBQztJQUNBQztJQUVBQztJQUNBQztJQUNBQztJQUNBQztJRDhZTUM7SUFDQUM7Ozs7U0MxYUE3RTtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7Ozs7OztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7U0FBQUM7U0FBQUM7U0F3Qk4wQztTQXhCTXpDO1NBQUFDOzs7O1NBV05xQzs7O1NBZUFLO1NBREFEOztTQXpCTXhDO1NBMkJOMEM7Ozs7U0FOQUw7OztTQXJCTXBDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBc0JOaUM7U0F0Qk1oQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTRHlhQVE7U0FDQUM7SUFHSkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLSUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FEQUQ7U0FD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QUFBRDtRQUFLRTtRQUdHRTtRQUFSQztRQUFBQztRQUFBQztRQUFBRTtRQUFBRDtRQUFBRTtRQUFBQztRQUFBQztRQUFBckU7UUFBQWQ7UUFBQVU7UUFBQVQ7UUFBUXVGOzs7U0E3Qkh2STtTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUFLRTtTQUNBRTtTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUFLRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFLS0U7VUFBUkM7VUFBQUM7VUFBQUc7VUFBQUQ7VUFBQUQ7VUFBQUc7VUFBQUM7VUFBQUM7VUF1QkZPO1VBQUFDO1VBQUFTO1VBckJNNUQ7O1NBVURrRTtTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUFLRTtTQUdMQztTQUFBQztTQUFBRTtTQUFBQztTQUFBRTtTQUFBRDtTQUFLRTtTQUVBRTtTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUFLRTtTQUdBRTtTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUFLRTtTQUdHRTtTQUFSQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBckU7U0FBQWQ7U0FBQVU7U0FBQVQ7U0FBUXVGOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDckpZRTs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FBQUE7Ozs7Ozs7Ozs7ZUFBQUE7OztFOzs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUE0QlZwK0Q7SUFDQW1xSztJQUNBbHJEO0lBQ0Foc0M7R0FPSztHQUdhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FibEJq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QUErQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0s7SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7SztLO0s7Szs7Ozt3QixNO00sUTs7TTs7Ozs7O0ksTTtHOztJOztLO0s7SztLOzs7O3dCLE07TSxROztNOzs7OztpQixNOztHOztJOzs7Rzs7STtJLE87Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztRO1E7O1E7UztTOzs7OztVLHVCOzs7O1E7UztTOzs7OztVLHVCOzs7O1E7O2dCLHFCOztRO1E7UztTO1M7UztTO1M7Ozs7VTtVO1U7VTtVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7Ozs7O1E7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7O1EsYyxPO1EsTyxjOztROztRO2dCOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sUTtPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPO1EsSTtRLEk7USxNO1EsSTtRO1E7UTs7OztRO1M7O1k7O1M7Ozs7O1c7WSxNO1ksTTtZLE07WSxNO1k7WTtZOzs7WSxPO1c7O1c7O1c7OztPLE87O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7VSxJO1M7UztTLE87O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxvQzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxJLHlDOzs7O1c7Ozs7UyxJLHlDOzs7O1c7Ozs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLG1CO1U7O3FCOztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcscUI7VTs7cUI7O1M7UztTLEksVyx5Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTLE8scUI7O1M7UztTLEksVyx5Qjs7Ozs7Ozs7Ozs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1MsUTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7O1MsTzs7a0I7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO2lCOztTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztLOzs7OztPO087UTtROztxQjs7UztTO1M7O3NCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sSSxjO087UTtRO2lCOzs7UztTO1M7a0I7Ozs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7aUI7UyxNOztpQixNO1M7aUI7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztpQjtTLE07O2lCLE07Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO1EsaUI7UTtRO1E7aUI7O1M7UztTO1MsbUI7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztROztROztROztRO1M7UztTO1M7UztTO1M7UztVO1U7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1M7UztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7O1E7Uzs7WTs7Uzs7Ozs7VztXO1c7O1c7WTs7ZTs7OztnQixPOztnQjs7Z0I7O1k7Ozs7O1csTzs7Vzs7Vzs7OztROztRO1E7OztRLHlDOztROztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USwwQjs7UTtROzs7USx5Qzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1MsTzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxPOztROztRLHlDO2dCOzs7Rzs7STsyQixPO0k7Rzs7STtJLE87Rzs7STtZO0k7OztLLE07SyxJO0s7Szs7OztNLFc7TTthO007Ozs7O0k7Rzs7STtLO0c7Ozs7STtJO0ssTTtJOztLOztNOztJOzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7OzZDLE87O0ssSSxtRDs7O2lDLG9CO00sSTs7O08sTTs7TSxNOztJO0k7OztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs0QyxPOztLLG1COztLO007TztRLE87UTtROzs7O087Ozs7O2tCOztPO0k7STs7O0ksUztJLG9CLE8sMkI7STtJO0c7cUJBRHZDbUU7SSxJQUFJbkU7SUFBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkU7Rzs7SSxPQXRXdEJvRTtHO0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzRCO0c7Rzs7STs7SyxJLFcsd0M7Ozs2Qjs7OztJLFc7SSxjOzs7STtJO2U7Ozs7TSxJLFk7Ozs4Qjs7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSw2QztJLFc7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7Ozs7OztHOztJO0k7YSxPOzs7TSxlLFE7Ozs7Ozs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2Msd0U7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7c0Q7MEQ7O2M7YTs7Rzs7STs7YywyRTtjO2E7O0c7O0k7SSxPO2E7OytCLG9CLFc7O0c7O0k7SSxPO2E7OytCLHNCLGE7O0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7T0FtUElxQztPQTBFSk07T0FHSUM7T0F4b0JBMEM7T0F3VUp0RjtPQWFBRztPQVVBRTtPQWNBRTtPQTVDQVY7T0F3REFnQjtPQWFBQztPQVlBRztPQTVCQU47T0FuR0FwQjtPQXlJSTJCO09BOVZKaEQ7T0FHQUM7T0FhQUc7T0FtQ0FFO09BMERBTTtPQWZBRDtPQW9DQUU7T0E1SUFsQjtPQStKQW9HO09BaUNBekU7T0FVQUM7T0FLQTJFO09BOENBSztPQXpDQUg7T0E4Q0FJO09BbkNBbkY7T0FFSUs7T0F3WkprRTtPQUNBQztPQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7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O0k7STtJO0k7STtJLE87OztJO0ssTSxtQjtLLE07SyxJO2tDOytCO0ksTztHO3NCLCtCO3NCLGlDOztJO0ssSTtlO2dCO0k7STtJLE87Rzs7SSx1QixPLG9DO0c7Ryx3Qjs7STtLLEs7SyxLO0ssSztLLEs7SyxLO0ssSTs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7SSx1QixvQztHOztJLDhCOzs7Szs7O0k7RzswQixhLG9DOzs7O3dCLFM7O0ksNEIsTTs2QjtnQztJLFc7OztJO0ssUTtLLHFCO0s7SztJO0ksUTtJO0k7STtJO0ksTztHO3FDLHNCOztJO2dCOztJO0c7K0IsUzsrQixTOztJLDRCLE07STs7O2M7O2U7O2dCO21CO0s7TTtPLEk7TztPO087O1UsVyxNO3NCO3FCLE07c0I7cUIsTTtzQixNO1U7UztPOztVLGU7c0I7Uzs7O087Tzs7Ozs7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztRLGM7UTs7TztPOzs7Ozs7OzRCOzs7STs7O0ksOEI7SSx1Qiw0QztJO0ssSTtLO0s7O0s7OztJOzs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7OztvQixPO0ssVTtLOzs7Ozs7STtJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBQUFDO0lBQUFDO0lBQUFDOzs7OztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7O0lBQUFDOzs7SUFBQUM7Ozs7Ozs7SUF2VlhDO0lBQUFDO0lBQUFDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0lBbjVFcEJDOzs7Ozs7Ozs7Ozs7OztJQUxROztRQUdSMUw7SUFEb0MsV0FDcENBLE9BRUEwTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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O0tBQUwwdkM7SUFDSix3QkFGSUQsZ0JBQ0FDLFFBQUsxdkM7R0FDYztZQUV2Qnd2QyxjQUEyQmoyQztRQUFyQjRYLDBCQUFZdytCO09BQUFBLFdBQ0Y7SUFDSixJQUFWMXBDLFVBQVUsZ0NBRmUxTTtJQUc3QixHQUhRNFg7U0FLTXk5QixjQUxOejlCLFVBS0p3OUIsU0FMSXg5QjtRQUtKdzlCLFlBQ29CO1NBSHBCaUIsWUFwRUVkLFdBbUVGN29DLFlBR0Ewb0MsUUFBVUM7OztTQUZWZ0IsWUFEQTNwQztJQU1NO0tBQU40TCxNQUFNLDJCQVJGVjtLQVNKcStCLE1BeENFRixTQWtDRk0sV0FLQS85QixhQUFBQSxNQVJnQjg5QjtJQVdwQixPQUZJSCxlQUFBQTs7Ozs7T0F4SUZ6QjtPQUNBQztPQW9CSUM7Ozs7T0EwR0p1Qjs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHOztJOzs7Ozs7O0s7O0k7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCOztROzs7USxPOztRLHNDO1EsUTs7OztROzs7O1E7OztnQjs7O0c7O0k7STs7Ozs7Ozs7Ozs7NEI7OztRLHFDOzs7UTs7O1Esa0IsTzs7UTs7USxzQztROzs7Ozs7Ozs7Ozs7Rzt5Qjs7STtJOzs7Ozs7UyxtQztTOztTLG1DO1M7O1Msa0IsTzs7Uzs7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzs7O1Esa0IsUTt3Qjs7OztrRDt1QztRO1MsUTtTO1M7UztTOzs7Ozs7Ozs7dUI7Ozs7O1E7OztTO1M7UTsyQzs7O1E7dUI7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Uzs7Ozs7USxrQztRO1EsSSw2QjtROztRO1E7O1E7O1M7Uzt1QjtRO3VCO1E7O1E7O1E7O1M7UztRO3lCO1E7eUI7UTs7UTs7USxvQjtROztROzs7UTtRO1E7dUI7Ozs7UTt1Qjs7O0k7O0ssa0I7SztLO0k7STtJO0ksSSxtQjtJLEc7OztLLFE7SyxpQixPLHdCO2lDOztJLG1CO0k7OztPO087TTs7Ozs7O0k7WTs7Ozs7Ozs7SSxRO0k7O29COzs7c0I7Ozs7O0c7Rzs7SSxvQzs7SyxJO0s7TTs7O2dCO29CO087UTs7O1E7Ozs7O007O0k7O0ssSSxVO0s7OztPLGtDO1E7UyxNOzs7OztPLFU7Ozs7Ozs7OzthOzs7Yyx1QjtlO2dCOzs7Ozs7YztlOzs7Ozs7Ozs7Ozs7YTs7Ozs7YyxVOzs7Ozs7OztnQjs7Ozs7Ozs7aUI7aUI7a0I7OztpQjs7OzJCOzhCOzs7OzJCOzs7O2UsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsZTs7O1UsSSxtQjs7Ozs7VSxJLG1COzs7O2MsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O087Ozs7TTtNOzs7STtJLEk7OztjO0c7c0IsNEI7Z0MsNEI7O0k7O0ssTTtLO0s7Szs7OztNLEksSSx1Qjs7Ozs7O1M7Ozs7OztRO1E7Ozs7Tzs7O007Ozs7O0ksTztHOzZCLDBCO3VDLDBCO0c7O00sb0QsVzs7SSxVO0k7O0c7O0ksVTtJOztHOztJLFU7STs2QixNO0k7Rzs7SSxVO0k7NkIsTTtJO0c7O0k7SztPOzs7SztLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtNO0ssYSxNO0ssTzs7SSxPO0c7bUMsMEI7NkIsb0I7Z0MsNkI7O0k7O087SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksa0I7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7R0N0SUk7R0FBQTs7O0UiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gc3RyZnRpbWVcbi8vIGdpdGh1Yi5jb20vc2Ftc29uanMvc3RyZnRpbWVcbi8vIEBfc2pzXG4vL1xuLy8gQ29weXJpZ2h0IDIwMTAgLSAyMDE1IFNhbWkgU2FtaHVyaSA8c2FtaUBzYW1odXJpLm5ldD5cbi8vXG4vLyBNSVQgTGljZW5zZVxuLy8gaHR0cDovL3Nqcy5taXQtbGljZW5zZS5vcmdcbi8vXG5cbjsoZnVuY3Rpb24oKSB7XG5cbiAgICB2YXIgRGVmYXVsdExvY2FsZSA9IHtcbiAgICAgICAgICAgIGRheXM6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXSxcbiAgICAgICAgICAgIHNob3J0RGF5czogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSxcbiAgICAgICAgICAgIG1vbnRoczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sXG4gICAgICAgICAgICBzaG9ydE1vbnRoczogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuICAgICAgICAgICAgQU06ICdBTScsXG4gICAgICAgICAgICBQTTogJ1BNJyxcbiAgICAgICAgICAgIGFtOiAnYW0nLFxuICAgICAgICAgICAgcG06ICdwbScsXG4gICAgICAgICAgICBmb3JtYXRzOiB7XG4gICAgICAgICAgICAgICAgRDogJyVtLyVkLyV5JyxcbiAgICAgICAgICAgICAgICBGOiAnJVktJW0tJWQnLFxuICAgICAgICAgICAgICAgIFI6ICclSDolTScsXG4gICAgICAgICAgICAgICAgVDogJyVIOiVNOiVTJyxcbiAgICAgICAgICAgICAgICBYOiAnJVQnLFxuICAgICAgICAgICAgICAgIGM6ICclYSAlYiAlZCAlWCAlWScsXG4gICAgICAgICAgICAgICAgcjogJyVJOiVNOiVTICVwJyxcbiAgICAgICAgICAgICAgICB2OiAnJWUtJWItJVknLFxuICAgICAgICAgICAgICAgIHg6ICclRCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFN0cmZ0aW1lID0gbmV3IFN0cmZ0aW1lKERlZmF1bHRMb2NhbGUsIDAsIGZhbHNlKSxcbiAgICAgICAgaXNDb21tb25KUyA9IHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnLFxuICAgICAgICBuYW1lc3BhY2U7XG5cbiAgICAvLyBDb21tb25KUyAvIE5vZGUgbW9kdWxlXG4gICAgaWYgKGlzQ29tbW9uSlMpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gbW9kdWxlLmV4cG9ydHMgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGRlcHJlY2F0ZWRTdHJmdGltZTtcbiAgICAgICAgaWYoam9vX2dsb2JhbF9vYmplY3QpIGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cbiAgICAvLyBCcm93c2VycyBhbmQgb3RoZXIgZW52aXJvbm1lbnRzXG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEdldCB0aGUgZ2xvYmFsIG9iamVjdC4gV29ya3MgaW4gRVMzLCBFUzUsIGFuZCBFUzUgc3RyaWN0IG1vZGUuXG4gICAgICAgIG5hbWVzcGFjZSA9IGpvb19nbG9iYWxfb2JqZWN0IHx8IChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMgfHwgKDEsZXZhbCkoJ3RoaXMnKTsgfSgpKTtcbiAgICAgICAgbmFtZXNwYWNlLnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cblxuICAgIC8vIERlcHJlY2F0ZWQgQVBJLCB0byBiZSByZW1vdmVkIGluIHYxLjBcbiAgICB2YXIgX3JlcXVpcmUgPSBpc0NvbW1vbkpTID8gXCJyZXF1aXJlKCdzdHJmdGltZScpXCIgOiBcInN0cmZ0aW1lXCI7XG4gICAgdmFyIF9kZXByZWNhdGlvbldhcm5pbmdzID0ge307XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRpb25XYXJuaW5nKG5hbWUsIGluc3RlYWQpIHtcbiAgICAgICAgaWYgKCFfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gXCIgKyBuYW1lICsgXCIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMS4wLiBJbnN0ZWFkLCB1c2UgYFwiICsgaW5zdGVhZCArIFwiYC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVUWiA9IGRlcHJlY2F0ZWRTdHJmdGltZVRaO1xuICAgIG5hbWVzcGFjZS5zdHJmdGltZVVUQyA9IGRlcHJlY2F0ZWRTdHJmdGltZVVUQztcbiAgICBuYW1lc3BhY2UubG9jYWxpemVkU3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWVMb2NhbGl6ZWQ7XG5cbiAgICAvLyBBZGFwdCB0aGUgb2xkIEFQSSB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBuZXcgQVBJLlxuICAgIGZ1bmN0aW9uIGFkYXB0Rm9yd2FyZHMoZm4pIHtcbiAgICAgICAgZm4ubG9jYWxpemUgPSBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi50aW1lem9uZSA9IGRlZmF1bHRTdHJmdGltZS50aW1lem9uZS5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgICAgIGZuLnV0YyA9IGRlZmF1bHRTdHJmdGltZS51dGMuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgIH1cblxuICAgIGFkYXB0Rm9yd2FyZHMoYWRhcHRlZFN0cmZ0aW1lKTtcbiAgICBmdW5jdGlvbiBhZGFwdGVkU3RyZnRpbWUoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgLy8gZCBhbmQgbG9jYWxlIGFyZSBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBsb2NhbGUpXG4gICAgICAgIGlmIChkICYmIGQuZGF5cykge1xuICAgICAgICAgICAgbG9jYWxlID0gZDtcbiAgICAgICAgICAgIGQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSwgW2xvY2FsZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGRlcHJlY2F0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0pYFwiLCBfcmVxdWlyZSArIFwiKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVFooZm10LCBkLCBsb2NhbGUsIHRpbWV6b25lKSB7XG4gICAgICAgIC8vIGxvY2FsZSBpcyBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBkYXRlLCB0aW1lem9uZSlcbiAgICAgICAgaWYgKCh0eXBlb2YgbG9jYWxlID09ICdudW1iZXInIHx8IHR5cGVvZiBsb2NhbGUgPT0gJ3N0cmluZycpICYmIHRpbWV6b25lID09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWV6b25lID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0eilgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKS50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgdmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcy50aW1lem9uZSh0eikoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KTsgcyhmb3JtYXQsIFtkYXRlXSlgIG9yIGBcIiArIF9yZXF1aXJlICsgXCIudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IChsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZSkudGltZXpvbmUodGltZXpvbmUpO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICB2YXIgdXRjU3RyZnRpbWUgPSBkZWZhdWx0U3RyZnRpbWUudXRjKCk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVVRDKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBkYXRlLCBsb2NhbGUpYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVVUQyhmb3JtYXQsIFtkYXRlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IHV0Y1N0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiB1dGNTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkKGxvY2FsZSkge1xuICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplZFN0cmZ0aW1lKGxvY2FsZSlgXCIsIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKVwiKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpO1xuICAgIH1cbiAgICAvLyBFbmQgb2YgZGVwcmVjYXRlZCBBUElcblxuICAgIC8vIFBvbHlmaWxsIERhdGUubm93IGZvciBvbGQgYnJvd3NlcnMuXG4gICAgaWYgKHR5cGVvZiBEYXRlLm5vdyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBEYXRlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiArbmV3IERhdGUoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBTdHJmdGltZShsb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNUaW1lem9uZSkge1xuICAgICAgICB2YXIgX2xvY2FsZSA9IGxvY2FsZSB8fCBEZWZhdWx0TG9jYWxlLFxuICAgICAgICAgICAgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID0gY3VzdG9tVGltZXpvbmVPZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIF91c2VVdGNCYXNlZERhdGUgPSB1c2VVdGNUaW1lem9uZSB8fCBmYWxzZSxcblxuICAgICAgICAgICAgLy8gd2Ugc3RvcmUgdW5peCB0aW1lc3RhbXAgdmFsdWUgaGVyZSB0byBub3QgY3JlYXRlIG5ldyBEYXRlKCkgZWFjaCBpdGVyYXRpb24gKGVhY2ggbWlsbGlzZWNvbmQpXG4gICAgICAgICAgICAvLyBEYXRlLm5vdygpIGlzIDIgdGltZXMgZmFzdGVyIHRoYW4gbmV3IERhdGUoKVxuICAgICAgICAgICAgLy8gd2hpbGUgbWlsbGlzZWNvbmQgcHJlY2lzZSBpcyBlbm91Z2ggaGVyZVxuICAgICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSB2ZXJ5IGhlbHBmdWwgd2hlbiBzdHJmdGltZSB0cmlnZ2VyZWQgYSBsb3Qgb2YgdGltZXMgb25lIGJ5IG9uZVxuICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSAwLFxuICAgICAgICAgICAgX2NhY2hlZERhdGU7XG5cbiAgICAgICAgZnVuY3Rpb24gX3N0cmZ0aW1lKGZvcm1hdCwgZGF0ZSkge1xuICAgICAgICAgICAgdmFyIHRpbWVzdGFtcDtcblxuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZXN0YW1wID4gX2NhY2hlZERhdGVUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSBjdXJyZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wKTtcblxuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBfY2FjaGVkRGF0ZVRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG93IHRvIGF2b2lkIGR1cGxpY2F0aW9uIG9mIGRhdGUgaW5zdGFudGlhdGlvbiBmb3IgdXRjIGhlcmU/XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSB0aWVkIHRvIGdldFRpbWV6b25lT2Zmc2V0IG9mIHRoZSBjdXJyZW50IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlID0gbmV3IERhdGUoX2NhY2hlZERhdGVUaW1lc3RhbXAgKyBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihfY2FjaGVkRGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGUgPSBfY2FjaGVkRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgX2xvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSAnJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nID0gbnVsbCxcbiAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZSxcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBmb3JtYXQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRDaGFyQ29kZSA9IGZvcm1hdC5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzSW5TY29wZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAnLSdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICdfJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDk1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnOidcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA1OCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRlbmRlZFRaKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gZGV0ZWN0ZWQgdXNlIG9mIHVuc3VwcG9ydGVkICU6OiBvciAlOjo6IG1vZGlmaWVycyB0byBzdHJmdGltZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRUWiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDaGFyQ29kZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlcyBmb3IgbmV3IERhdGUoMCkgaW4gR01UXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdUaHVyc2RheSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLmRheXNbZGF0ZS5nZXREYXkoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW51YXJ5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUubW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyAxMDApLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxLzAxLzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ELCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwLTAxLTAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5GLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnSSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDczOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhNYXRoLmZsb29yKHRpbWVzdGFtcCAlIDEwMDApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1pbnV0ZXMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdhbSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuYW0gOiBsb2NhbGUucG07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuUiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0U2Vjb25kcygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwOjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ULCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIod2Vla051bWJlcihkYXRlLCAnc3VuZGF5JyksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ21vbmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE2OjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5YLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdHTVQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUgJiYgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBcIkdNVFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZml4bWUgb3B0aW1pemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR6U3RyaW5nID0gZGF0ZS50b1N0cmluZygpLm1hdGNoKC9cXCgoW1xcd1xcc10rKVxcKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gdHpTdHJpbmcgJiYgdHpTdHJpbmdbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnREYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuYywgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0RGF0ZSgpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydE1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnaic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IE1hdGguY2VpbCgoZGF0ZS5nZXRUaW1lKCkgLSB5LmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhkYXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldEhvdXJzKCksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1vbnRoKCkgKyAxLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1xcbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMXN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKSArIG9yZGluYWwoZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnQU0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/IGxvY2FsZS5BTSA6IGxvY2FsZS5QTTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyOjAwOjAwIEFNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuciwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IE1hdGguZmxvb3IodGltZXN0YW1wIC8gMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFx0JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd1JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXkgPT09IDAgPyA3IDogZGF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxIC0gNywgTW9uZGF5IGlzIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEtSmFuLTE5NzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy52LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMCAtIDYsIFN1bmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyLzMxLzY5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMueCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAoJycgKyBkYXRlLmdldEZ1bGxZZWFyKCkpLnNsaWNlKDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnKzAwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd6JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZXh0ZW5kZWRUWiA/IFwiKzAwOjAwXCIgOiBcIiswMDAwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2ZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2N1c3RvbVRpbWV6b25lT2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQgLyAoNjAgKiAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IC1kYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ24gPSBvZmYgPCAwID8gJy0nIDogJysnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VwID0gZXh0ZW5kZWRUWiA/ICc6JyA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaG91cnMgPSBNYXRoLmZsb29yKE1hdGguYWJzKG9mZiAvIDYwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW5zID0gTWF0aC5hYnMob2ZmICUgNjApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gc2lnbiArIHBhZFRpbGwyKGhvdXJzKSArIHNlcCArIHBhZFRpbGwyKG1pbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAnJSdcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJDb2RlID09PSAzNykge1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0U3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gX3N0cmZ0aW1lO1xuXG4gICAgICAgIHN0cmZ0aW1lLmxvY2FsaXplID0gZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKGxvY2FsZSB8fCBfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIF91c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnRpbWV6b25lID0gZnVuY3Rpb24odGltZXpvbmUpIHtcbiAgICAgICAgICAgIHZhciBjdXN0b21UaW1lem9uZU9mZnNldCA9IF9jdXN0b21UaW1lem9uZU9mZnNldDtcbiAgICAgICAgICAgIHZhciB1c2VVdGNCYXNlZERhdGUgPSBfdXNlVXRjQmFzZWREYXRlO1xuXG4gICAgICAgICAgICB2YXIgdGltZXpvbmVUeXBlID0gdHlwZW9mIHRpbWV6b25lO1xuICAgICAgICAgICAgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicgfHwgdGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHVzZVV0Y0Jhc2VkRGF0ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAvLyBJU08gODYwMSBmb3JtYXQgdGltZXpvbmUgc3RyaW5nLCBbLStdSEhNTVxuICAgICAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gdGltZXpvbmVbMF0gPT09ICctJyA/IC0xIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMSwgMyksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBwYXJzZUludCh0aW1lem9uZS5zbGljZSgzLCA1KSwgMTApO1xuXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gc2lnbiAqICgoNjAgKiBob3VycykgKyBtaW51dGVzKSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gbWludXRlczogNDIwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSB0aW1lem9uZSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUoX2xvY2FsZSwgY3VzdG9tVGltZXpvbmVPZmZzZXQsIHVzZVV0Y0Jhc2VkRGF0ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc3RyZnRpbWUudXRjID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIF9jdXN0b21UaW1lem9uZU9mZnNldCwgdHJ1ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZFRpbGwyKG51bWJlclRvUGFkLCBwYWRkaW5nQ2hhcikge1xuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT09ICcnIHx8IG51bWJlclRvUGFkID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkaW5nQ2hhciA9PSBudWxsKSB7XG4gICAgICAgICAgICBwYWRkaW5nQ2hhciA9ICcwJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFkZGluZ0NoYXIgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMyhudW1iZXJUb1BhZCkge1xuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5OSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiAnMCcgKyBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzAwJyArIG51bWJlclRvUGFkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvdXJzMTIoaG91cikge1xuICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGhvdXIgPiAxMikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgLSAxMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG5cbiAgICAvLyBmaXJzdFdlZWtkYXk6ICdzdW5kYXknIG9yICdtb25kYXknLCBkZWZhdWx0IGlzICdzdW5kYXknXG4gICAgLy9cbiAgICAvLyBQaWxmZXJlZCAmIHBvcnRlZCBmcm9tIFJ1YnkncyBzdHJmdGltZSBpbXBsZW1lbnRhdGlvbi5cbiAgICBmdW5jdGlvbiB3ZWVrTnVtYmVyKGRhdGUsIGZpcnN0V2Vla2RheSkge1xuICAgICAgICBmaXJzdFdlZWtkYXkgPSBmaXJzdFdlZWtkYXkgfHwgJ3N1bmRheSc7XG5cbiAgICAgICAgLy8gVGhpcyB3b3JrcyBieSBzaGlmdGluZyB0aGUgd2Vla2RheSBiYWNrIGJ5IG9uZSBkYXkgaWYgd2VcbiAgICAgICAgLy8gYXJlIHRyZWF0aW5nIE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICB2YXIgd2Vla2RheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChmaXJzdFdlZWtkYXkgPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBpZiAod2Vla2RheSA9PT0gMCkgLy8gU3VuZGF5XG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IDY7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgd2Vla2RheS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGZpcnN0RGF5T2ZZZWFyVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKSxcbiAgICAgICAgICAgIGRhdGVVdGMgPSBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLFxuICAgICAgICAgICAgeWRheSA9IE1hdGguZmxvb3IoKGRhdGVVdGMgLSBmaXJzdERheU9mWWVhclV0YykgLyA4NjQwMDAwMCksXG4gICAgICAgICAgICB3ZWVrTnVtID0gKHlkYXkgKyA3IC0gd2Vla2RheSkgLyA3O1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHdlZWtOdW0pO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgb3JkaW5hbCBzdWZmaXggZm9yIGEgbnVtYmVyOiBzdCwgbmQsIHJkLCBvciB0aFxuICAgIGZ1bmN0aW9uIG9yZGluYWwobnVtYmVyKSB7XG4gICAgICAgIHZhciBpID0gbnVtYmVyICUgMTA7XG4gICAgICAgIHZhciBpaSA9IG51bWJlciAlIDEwMDtcblxuICAgICAgICBpZiAoKGlpID49IDExICYmIGlpIDw9IDEzKSB8fCBpID09PSAwIHx8IGkgPj0gNCkge1xuICAgICAgICAgICAgcmV0dXJuICd0aCc7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiAnc3QnO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gJ25kJztcbiAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICdyZCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihkYXRlKSB7XG4gICAgICAgIHJldHVybiAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIHx8IDApICogNjAwMDA7XG4gICAgfVxuXG59KCkpO1xuIiwiKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZSE9PVwidW5kZWZpbmVkXCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT1cInVuZGVmaW5lZFwiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09XCJ1bmRlZmluZWRcIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuVmlydHVhbERvbSA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZShcIi4vdmRvbS9jcmVhdGUtZWxlbWVudC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVsZW1lbnRcblxufSx7XCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIjoyNH1dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRpZmYgPSByZXF1aXJlKFwiLi92dHJlZS9kaWZmLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG59LHtcIi4vdnRyZWUvZGlmZi5qc1wiOjQ3fV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vKiFcbiAqIENyb3NzLUJyb3dzZXIgU3BsaXQgMS4xLjFcbiAqIENvcHlyaWdodCAyMDA3LTIwMTIgU3RldmVuIExldml0aGFuIDxzdGV2ZW5sZXZpdGhhbi5jb20+XG4gKiBBdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBFQ01BU2NyaXB0IGNvbXBsaWFudCwgdW5pZm9ybSBjcm9zcy1icm93c2VyIHNwbGl0IG1ldGhvZFxuICovXG5cbi8qKlxuICogU3BsaXRzIGEgc3RyaW5nIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncyB1c2luZyBhIHJlZ2V4IG9yIHN0cmluZyBzZXBhcmF0b3IuIE1hdGNoZXMgb2YgdGhlXG4gKiBzZXBhcmF0b3IgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IGFycmF5LiBIb3dldmVyLCBpZiBgc2VwYXJhdG9yYCBpcyBhIHJlZ2V4IHRoYXQgY29udGFpbnNcbiAqIGNhcHR1cmluZyBncm91cHMsIGJhY2tyZWZlcmVuY2VzIGFyZSBzcGxpY2VkIGludG8gdGhlIHJlc3VsdCBlYWNoIHRpbWUgYHNlcGFyYXRvcmAgaXMgbWF0Y2hlZC5cbiAqIEZpeGVzIGJyb3dzZXIgYnVncyBjb21wYXJlZCB0byB0aGUgbmF0aXZlIGBTdHJpbmcucHJvdG90eXBlLnNwbGl0YCBhbmQgY2FuIGJlIHVzZWQgcmVsaWFibHlcbiAqIGNyb3NzLWJyb3dzZXIuXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFN0cmluZyB0byBzcGxpdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gc2VwYXJhdG9yIFJlZ2V4IG9yIHN0cmluZyB0byB1c2UgZm9yIHNlcGFyYXRpbmcgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbGltaXRdIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUgaW4gdGhlIHJlc3VsdCBhcnJheS5cbiAqIEByZXR1cm5zIHtBcnJheX0gQXJyYXkgb2Ygc3Vic3RyaW5ncy5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQmFzaWMgdXNlXG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJyk7XG4gKiAvLyAtPiBbJ2EnLCAnYicsICdjJywgJ2QnXVxuICpcbiAqIC8vIFdpdGggbGltaXRcbiAqIHNwbGl0KCdhIGIgYyBkJywgJyAnLCAyKTtcbiAqIC8vIC0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBCYWNrcmVmZXJlbmNlcyBpbiByZXN1bHQgYXJyYXlcbiAqIHNwbGl0KCcuLndvcmQxIHdvcmQyLi4nLCAvKFthLXpdKykoXFxkKykvaSk7XG4gKiAvLyAtPiBbJy4uJywgJ3dvcmQnLCAnMScsICcgJywgJ3dvcmQnLCAnMicsICcuLiddXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uIHNwbGl0KHVuZGVmKSB7XG5cbiAgdmFyIG5hdGl2ZVNwbGl0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxpdCxcbiAgICBjb21wbGlhbnRFeGVjTnBjZyA9IC8oKT8/Ly5leGVjKFwiXCIpWzFdID09PSB1bmRlZixcbiAgICAvLyBOUENHOiBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cFxuICAgIHNlbGY7XG5cbiAgc2VsZiA9IGZ1bmN0aW9uKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgYG5hdGl2ZVNwbGl0YFxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc2VwYXJhdG9yKSAhPT0gXCJbb2JqZWN0IFJlZ0V4cF1cIikge1xuICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9XG4gICAgdmFyIG91dHB1dCA9IFtdLFxuICAgICAgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyBcImlcIiA6IFwiXCIpICsgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyBcIm1cIiA6IFwiXCIpICsgKHNlcGFyYXRvci5leHRlbmRlZCA/IFwieFwiIDogXCJcIikgKyAvLyBQcm9wb3NlZCBmb3IgRVM2XG4gICAgICAoc2VwYXJhdG9yLnN0aWNreSA/IFwieVwiIDogXCJcIiksXG4gICAgICAvLyBGaXJlZm94IDMrXG4gICAgICBsYXN0TGFzdEluZGV4ID0gMCxcbiAgICAgIC8vIE1ha2UgYGdsb2JhbGAgYW5kIGF2b2lkIGBsYXN0SW5kZXhgIGlzc3VlcyBieSB3b3JraW5nIHdpdGggYSBjb3B5XG4gICAgICBzZXBhcmF0b3IgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgXCJnXCIpLFxuICAgICAgc2VwYXJhdG9yMiwgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICBzdHIgKz0gXCJcIjsgLy8gVHlwZS1jb252ZXJ0XG4gICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZykge1xuICAgICAgLy8gRG9lc24ndCBuZWVkIGZsYWdzIGd5LCBidXQgdGhleSBkb24ndCBodXJ0XG4gICAgICBzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cChcIl5cIiArIHNlcGFyYXRvci5zb3VyY2UgKyBcIiQoPyFcXFxccylcIiwgZmxhZ3MpO1xuICAgIH1cbiAgICAvKiBWYWx1ZXMgZm9yIGBsaW1pdGAsIHBlciB0aGUgc3BlYzpcbiAgICAgKiBJZiB1bmRlZmluZWQ6IDQyOTQ5NjcyOTUgLy8gTWF0aC5wb3coMiwgMzIpIC0gMVxuICAgICAqIElmIDAsIEluZmluaXR5LCBvciBOYU46IDBcbiAgICAgKiBJZiBwb3NpdGl2ZSBudW1iZXI6IGxpbWl0ID0gTWF0aC5mbG9vcihsaW1pdCk7IGlmIChsaW1pdCA+IDQyOTQ5NjcyOTUpIGxpbWl0IC09IDQyOTQ5NjcyOTY7XG4gICAgICogSWYgbmVnYXRpdmUgbnVtYmVyOiA0Mjk0OTY3Mjk2IC0gTWF0aC5mbG9vcihNYXRoLmFicyhsaW1pdCkpXG4gICAgICogSWYgb3RoZXI6IFR5cGUtY29udmVydCwgdGhlbiB1c2UgdGhlIGFib3ZlIHJ1bGVzXG4gICAgICovXG4gICAgbGltaXQgPSBsaW1pdCA9PT0gdW5kZWYgPyAtMSA+Pj4gMCA6IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICBsaW1pdCA+Pj4gMDsgLy8gVG9VaW50MzIobGltaXQpXG4gICAgd2hpbGUgKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3RyKSkge1xuICAgICAgLy8gYHNlcGFyYXRvci5sYXN0SW5kZXhgIGlzIG5vdCByZWxpYWJsZSBjcm9zcy1icm93c2VyXG4gICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHN0ci5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYCBmb3JcbiAgICAgICAgLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBzXG4gICAgICAgIGlmICghY29tcGxpYW50RXhlY05wY2cgJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgIG1hdGNoWzBdLnJlcGxhY2Uoc2VwYXJhdG9yMiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWYpIHtcbiAgICAgICAgICAgICAgICBtYXRjaFtpXSA9IHVuZGVmO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggPj0gbGltaXQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlcGFyYXRvci5sYXN0SW5kZXggPT09IG1hdGNoLmluZGV4KSB7XG4gICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXgrKzsgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvci50ZXN0KFwiXCIpKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKFwiXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0Lmxlbmd0aCA+IGxpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIGxpbWl0KSA6IG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn0pKCk7XG5cbn0se31dLDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgT25lVmVyc2lvbkNvbnN0cmFpbnQgPSByZXF1aXJlKCdpbmRpdmlkdWFsL29uZS12ZXJzaW9uJyk7XG5cbnZhciBNWV9WRVJTSU9OID0gJzcnO1xuT25lVmVyc2lvbkNvbnN0cmFpbnQoJ2V2LXN0b3JlJywgTVlfVkVSU0lPTik7XG5cbnZhciBoYXNoS2V5ID0gJ19fRVZfU1RPUkVfS0VZQCcgKyBNWV9WRVJTSU9OO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2U3RvcmU7XG5cbmZ1bmN0aW9uIEV2U3RvcmUoZWxlbSkge1xuICAgIHZhciBoYXNoID0gZWxlbVtoYXNoS2V5XTtcblxuICAgIGlmICghaGFzaCkge1xuICAgICAgICBoYXNoID0gZWxlbVtoYXNoS2V5XSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xufVxuXG59LHtcImluZGl2aWR1YWwvb25lLXZlcnNpb25cIjo2fV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG4ndXNlIHN0cmljdCc7XG5cbi8qZ2xvYmFsIHdpbmRvdywgZ2xvYmFsKi9cblxudmFyIHJvb3QgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/XG4gICAgd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIGdsb2JhbCA6IHt9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEluZGl2aWR1YWw7XG5cbmZ1bmN0aW9uIEluZGl2aWR1YWwoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gcm9vdCkge1xuICAgICAgICByZXR1cm4gcm9vdFtrZXldO1xuICAgIH1cblxuICAgIHJvb3Rba2V5XSA9IHZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se31dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgSW5kaXZpZHVhbCA9IHJlcXVpcmUoJy4vaW5kZXguanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPbmVWZXJzaW9uO1xuXG5mdW5jdGlvbiBPbmVWZXJzaW9uKG1vZHVsZU5hbWUsIHZlcnNpb24sIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciBrZXkgPSAnX19JTkRJVklEVUFMX09ORV9WRVJTSU9OXycgKyBtb2R1bGVOYW1lO1xuICAgIHZhciBlbmZvcmNlS2V5ID0ga2V5ICsgJ19FTkZPUkNFX1NJTkdMRVRPTic7XG5cbiAgICB2YXIgdmVyc2lvblZhbHVlID0gSW5kaXZpZHVhbChlbmZvcmNlS2V5LCB2ZXJzaW9uKTtcblxuICAgIGlmICh2ZXJzaW9uVmFsdWUgIT09IHZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gb25seSBoYXZlIG9uZSBjb3B5IG9mICcgK1xuICAgICAgICAgICAgbW9kdWxlTmFtZSArICcuXFxuJyArXG4gICAgICAgICAgICAnWW91IGFscmVhZHkgaGF2ZSB2ZXJzaW9uICcgKyB2ZXJzaW9uVmFsdWUgK1xuICAgICAgICAgICAgJyBpbnN0YWxsZWQuXFxuJyArXG4gICAgICAgICAgICAnVGhpcyBtZWFucyB5b3UgY2Fubm90IGluc3RhbGwgdmVyc2lvbiAnICsgdmVyc2lvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEluZGl2aWR1YWwoa2V5LCBkZWZhdWx0VmFsdWUpO1xufVxuXG59LHtcIi4vaW5kZXguanNcIjo1fV0sNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG52YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1wibWluLWRvY3VtZW50XCI6MTd9XSw4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG5cbnZhciBDb21tZW50ID0gcmVxdWlyZShcIi4vZG9tLWNvbW1lbnQuanNcIilcbnZhciBET01UZXh0ID0gcmVxdWlyZShcIi4vZG9tLXRleHQuanNcIilcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcbnZhciBEb2N1bWVudEZyYWdtZW50ID0gcmVxdWlyZShcIi4vZG9tLWZyYWdtZW50LmpzXCIpXG52YXIgRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC5qc1wiKVxudmFyIGRpc3BhdGNoRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiKVxudmFyIGFkZEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciByZW1vdmVFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnQ7XG5cbmZ1bmN0aW9uIERvY3VtZW50KCkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IHRoaXMuY3JlYXRlRWxlbWVudChcImhlYWRcIilcbiAgICB0aGlzLmJvZHkgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oZWFkKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYm9keSlcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbdGhpcy5kb2N1bWVudEVsZW1lbnRdXG4gICAgdGhpcy5ub2RlVHlwZSA9IDlcbn1cblxudmFyIHByb3RvID0gRG9jdW1lbnQucHJvdG90eXBlO1xucHJvdG8uY3JlYXRlVGV4dE5vZGUgPSBmdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudE5TID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gbnVsbCA/IG51bGwgOiBTdHJpbmcobmFtZXNwYWNlKVxuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzLCBucylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnTmFtZSkge1xuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzKVxufVxuXG5wcm90by5jcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpIHtcbiAgICByZXR1cm4gbmV3IERvY3VtZW50RnJhZ21lbnQodGhpcylcbn1cblxucHJvdG8uY3JlYXRlRXZlbnQgPSBmdW5jdGlvbiBjcmVhdGVFdmVudChmYW1pbHkpIHtcbiAgICByZXR1cm4gbmV3IEV2ZW50KGZhbWlseSlcbn1cblxucHJvdG8uY3JlYXRlQ29tbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhLCB0aGlzKVxufVxuXG5wcm90by5nZXRFbGVtZW50QnlJZCA9IGZ1bmN0aW9uIGdldEVsZW1lbnRCeUlkKGlkKSB7XG4gICAgaWQgPSBTdHJpbmcoaWQpXG5cbiAgICB2YXIgcmVzdWx0ID0gZG9tV2Fsayh0aGlzLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChTdHJpbmcobm9kZS5pZCkgPT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQgfHwgbnVsbFxufVxuXG5wcm90by5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxucHJvdG8uZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZVxucHJvdG8uY29udGFpbnMgPSBET01FbGVtZW50LnByb3RvdHlwZS5jb250YWluc1xuXG5wcm90by5yZW1vdmVFdmVudExpc3RlbmVyID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxucHJvdG8uYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXJcbnByb3RvLmRpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50XG5cbn0se1wiLi9kb20tY29tbWVudC5qc1wiOjksXCIuL2RvbS1lbGVtZW50LmpzXCI6MTAsXCIuL2RvbS1mcmFnbWVudC5qc1wiOjExLFwiLi9kb20tdGV4dC5qc1wiOjEyLFwiLi9ldmVudC5qc1wiOjEzLFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCJkb20td2Fsa1wiOjE4fV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IENvbW1lbnRcblxuZnVuY3Rpb24gQ29tbWVudChkYXRhLCBvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDb21tZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgb3duZXIpXG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICAgIHRoaXMubm9kZVZhbHVlID0gZGF0YVxuICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkNvbW1lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gOFxuQ29tbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNjb21tZW50XCJcblxuQ29tbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfQ29tbWVudF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IENvbW1lbnRdXCJcbn1cblxufSx7fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvbVdhbGsgPSByZXF1aXJlKFwiZG9tLXdhbGtcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHNlcmlhbGl6ZU5vZGUgPSByZXF1aXJlKFwiLi9zZXJpYWxpemUuanNcIilcblxudmFyIGh0bWxucyA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG5cbm1vZHVsZS5leHBvcnRzID0gRE9NRWxlbWVudFxuXG5mdW5jdGlvbiBET01FbGVtZW50KHRhZ05hbWUsIG93bmVyLCBuYW1lc3BhY2UpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUpXG4gICAgfVxuXG4gICAgdmFyIG5zID0gbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBodG1sbnMgOiAobmFtZXNwYWNlIHx8IG51bGwpXG5cbiAgICB0aGlzLnRhZ05hbWUgPSBucyA9PT0gaHRtbG5zID8gU3RyaW5nKHRhZ05hbWUpLnRvVXBwZXJDYXNlKCkgOiB0YWdOYW1lXG4gICAgdGhpcy5ub2RlTmFtZSA9IHRoaXMudGFnTmFtZVxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJcIlxuICAgIHRoaXMuZGF0YXNldCA9IHt9XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5zdHlsZSA9IHt9XG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxuICAgIHRoaXMubmFtZXNwYWNlVVJJID0gbnNcbiAgICB0aGlzLl9hdHRyaWJ1dGVzID0ge31cblxuICAgIGlmICh0aGlzLnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgIHRoaXMudHlwZSA9ICd0ZXh0J1xuICAgIH1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUudHlwZSA9IFwiRE9NRWxlbWVudFwiXG5ET01FbGVtZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDFcblxuRE9NRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9hcHBlbmRDaGlsZChjaGlsZCkge1xuICAgIGlmIChjaGlsZC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpXG4gICAgY2hpbGQucGFyZW50Tm9kZSA9IHRoaXNcblxuICAgIHJldHVybiBjaGlsZFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlcGxhY2VDaGlsZChlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBuZWVkbGUucGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIG5lZWRsZS5wYXJlbnROb2RlID0gbnVsbFxuICAgICAgICB0aGlzLmNoaWxkTm9kZXNbaW5kZXhdID0gZWxlbVxuICAgICAgICBlbGVtLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICAgICAgcmV0dXJuIG5lZWRsZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVDaGlsZChlbGVtKSB7XG4gICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBlbGVtLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGVsZW0pXG4gICAgdGhpcy5jaGlsZE5vZGVzLnNwbGljZShpbmRleCwgMSlcblxuICAgIGVsZW0ucGFyZW50Tm9kZSA9IG51bGxcbiAgICByZXR1cm4gZWxlbVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2luc2VydEJlZm9yZShlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiByZWZlcmVuY2VFbGVtZW50IGlzIGEgZG9tIG5vZGVcbiAgICAgICAgLy8gYW5kIHBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IG5lZWRsZSA9PT0gbnVsbCB8fCBuZWVkbGUgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAtMSA6XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihuZWVkbGUpXG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDAsIGVsZW0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuICAgICAgICByZXR1cm4gZWxlbVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3NldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIHByZWZpeCA9IG51bGxcbiAgICAgICAgdmFyIGxvY2FsTmFtZSA9IG5hbWVcbiAgICAgICAgdmFyIGNvbG9uUG9zaXRpb24gPSBuYW1lLmluZGV4T2YoXCI6XCIpXG4gICAgICAgIGlmIChjb2xvblBvc2l0aW9uID4gLTEpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyKDAsIGNvbG9uUG9zaXRpb24pXG4gICAgICAgICAgICBsb2NhbE5hbWUgPSBuYW1lLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSlcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSB8fCAodGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdID0ge30pXG4gICAgICAgIGF0dHJpYnV0ZXNbbG9jYWxOYW1lXSA9IHt2YWx1ZTogdmFsdWUsIHByZWZpeDogcHJlZml4fVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVzW25hbWVdICYmIGF0dHJpYnV0ZXNbbmFtZV0udmFsdWVcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVzW25hbWVdXG4gICAgICAgIH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV1cbiAgICAgICAgcmV0dXJuICEhYXR0cmlidXRlcyAmJiBuYW1lIGluIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lLCB2YWx1ZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0QXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2hhc0F0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbkRPTUVsZW1lbnQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG4vLyBVbi1pbXBsZW1lbnRlZFxuRE9NRWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiBfRWxlbWVudF9mb2N1cygpIHtcbiAgICByZXR1cm4gdm9pZCAwXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0VsZW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUodGhpcylcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lcykge1xuICAgIHZhciBjbGFzc2VzID0gY2xhc3NOYW1lcy5zcGxpdChcIiBcIik7XG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWUgfHwgXCJcIlxuICAgICAgICAgICAgdmFyIG5vZGVDbGFzc2VzID0gbm9kZUNsYXNzTmFtZS5zcGxpdChcIiBcIilcblxuICAgICAgICAgICAgaWYgKGNsYXNzZXMuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUNsYXNzZXMuaW5kZXhPZihpdGVtKSAhPT0gLTFcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpIHtcbiAgICB0YWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiAodGFnTmFtZSA9PT0gJyonIHx8IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lKSkge1xuICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIF9FbGVtZW50X2NvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZG9tV2Fsayh0aGlzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCA9PT0gbm9kZVxuICAgIH0pIHx8IGZhbHNlXG59XG5cbn0se1wiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCIuL3NlcmlhbGl6ZS5qc1wiOjE5LFwiZG9tLXdhbGtcIjoxOH1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBEb2N1bWVudEZyYWdtZW50XG5cbmZ1bmN0aW9uIERvY3VtZW50RnJhZ21lbnQob3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KClcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXVxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGxcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRvY3VtZW50RnJhZ21lbnRcIlxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxMVxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNkb2N1bWVudC1mcmFnbWVudFwiXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGRcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgICBmdW5jdGlvbiBfRG9jdW1lbnRGcmFnbWVudF90b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcobm9kZSlcbiAgICAgICAgfSkuam9pbihcIlwiKVxuICAgIH1cblxufSx7XCIuL2RvbS1lbGVtZW50LmpzXCI6MTB9XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IERPTVRleHRcblxuZnVuY3Rpb24gRE9NVGV4dCh2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01UZXh0KHZhbHVlKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IHZhbHVlIHx8IFwiXCJcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnR5cGUgPSBcIkRPTVRleHROb2RlXCJcbkRPTVRleHQucHJvdG90eXBlLm5vZGVUeXBlID0gM1xuRE9NVGV4dC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiN0ZXh0XCJcblxuRE9NVGV4dC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfVGV4dF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnJlcGxhY2VEYXRhID0gZnVuY3Rpb24gcmVwbGFjZURhdGEoaW5kZXgsIGxlbmd0aCwgdmFsdWUpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZGF0YVxuICAgIHZhciBsZWZ0ID0gY3VycmVudC5zdWJzdHJpbmcoMCwgaW5kZXgpXG4gICAgdmFyIHJpZ2h0ID0gY3VycmVudC5zdWJzdHJpbmcoaW5kZXggKyBsZW5ndGgsIGN1cnJlbnQubGVuZ3RoKVxuICAgIHRoaXMuZGF0YSA9IGxlZnQgKyB2YWx1ZSArIHJpZ2h0XG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG59XG5cbn0se31dLDEzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gRXZlbnRcblxuZnVuY3Rpb24gRXZlbnQoZmFtaWx5KSB7fVxuXG5FdmVudC5wcm90b3R5cGUuaW5pdEV2ZW50ID0gZnVuY3Rpb24gX0V2ZW50X2luaXRFdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZVxuICAgIHRoaXMuYnViYmxlcyA9IGJ1YmJsZXNcbiAgICB0aGlzLmNhbmNlbGFibGUgPSBjYW5jZWxhYmxlXG59XG5cbkV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uIF9FdmVudF9wcmV2ZW50RGVmYXVsdCgpIHtcbiAgICBcbn1cblxufSx7fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBhZGRFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnNbdHlwZV0pIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0gPSBbXVxuICAgIH1cblxuICAgIGlmIChlbGVtLmxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0ucHVzaChsaXN0ZW5lcilcbiAgICB9XG59XG5cbn0se31dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gZGlzcGF0Y2hFdmVudFxuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2KSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG4gICAgdmFyIHR5cGUgPSBldi50eXBlXG5cbiAgICBpZiAoIWV2LnRhcmdldCkge1xuICAgICAgICBldi50YXJnZXQgPSBlbGVtXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICBlbGVtLmxpc3RlbmVycyA9IHt9XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG5cbiAgICBpZiAobGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGV2LmN1cnJlbnRUYXJnZXQgPSBlbGVtXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZXYpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyLmhhbmRsZUV2ZW50KGV2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWxlbS5wYXJlbnROb2RlLmRpc3BhdGNoRXZlbnQoZXYpXG4gICAgfVxufVxuXG59LHt9XSwxNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBsaXN0ID0gZWxlbS5saXN0ZW5lcnNbdHlwZV1cbiAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2YobGlzdGVuZXIpXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSlcbiAgICB9XG59XG5cbn0se31dLDE3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBEb2N1bWVudCA9IHJlcXVpcmUoJy4vZG9jdW1lbnQuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgRG9jdW1lbnQoKTtcblxufSx7XCIuL2RvY3VtZW50LmpzXCI6OH1dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdGl2ZWx5V2Fsa1xuXG5mdW5jdGlvbiBpdGVyYXRpdmVseVdhbGsobm9kZXMsIGNiKSB7XG4gICAgaWYgKCEoJ2xlbmd0aCcgaW4gbm9kZXMpKSB7XG4gICAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH1cbiAgICBcbiAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZXMpXG5cbiAgICB3aGlsZShub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlcy5zaGlmdCgpLFxuICAgICAgICAgICAgcmV0ID0gY2Iobm9kZSlcblxuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZE5vZGVzICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vZGVzID0gc2xpY2UuY2FsbChub2RlLmNoaWxkTm9kZXMpLmNvbmNhdChub2RlcylcbiAgICAgICAgfVxuICAgIH1cbn1cblxufSx7fV0sMTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWxpemVOb2RlXG5cbnZhciB2b2lkRWxlbWVudHMgPSAvYXJlYXxiYXNlfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8a2V5Z2VufGxpbmt8bWVudWl0ZW18bWV0YXxwYXJhbXxzb3VyY2V8dHJhY2t8d2JyL2k7XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZU5vZGUobm9kZSkge1xuICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gZXNjYXBlVGV4dChub2RlLmRhdGEpXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiBcIjwhLS1cIiArIG5vZGUuZGF0YSArIFwiLS0+XCJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVFbGVtZW50KG5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVFbGVtZW50KGVsZW0pIHtcbiAgICB2YXIgc3RyaW5ncyA9IFtdXG5cbiAgICB2YXIgdGFnbmFtZSA9IGVsZW0udGFnTmFtZVxuXG4gICAgaWYgKGVsZW0ubmFtZXNwYWNlVVJJID09PSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIikge1xuICAgICAgICB0YWduYW1lID0gdGFnbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgfVxuXG4gICAgc3RyaW5ncy5wdXNoKFwiPFwiICsgdGFnbmFtZSArIHByb3BlcnRpZXMoZWxlbSkgKyBkYXRhc2V0aWZ5KGVsZW0pKVxuXG4gICAgaWYgKHZvaWRFbGVtZW50cy50ZXN0KHRhZ25hbWUpKSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIiAvPlwiKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIj5cIilcblxuICAgICAgICBpZiAoZWxlbS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoLmFwcGx5KHN0cmluZ3MsIGVsZW0uY2hpbGROb2Rlcy5tYXAoc2VyaWFsaXplTm9kZSkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoKGVzY2FwZVRleHQoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS5pbm5lckhUTUwpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlbGVtLmlubmVySFRNTClcbiAgICAgICAgfVxuXG4gICAgICAgIHN0cmluZ3MucHVzaChcIjwvXCIgKyB0YWduYW1lICsgXCI+XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ3Muam9pbihcIlwiKVxufVxuXG5mdW5jdGlvbiBpc1Byb3BlcnR5KGVsZW0sIGtleSkge1xuICAgIHZhciB0eXBlID0gdHlwZW9mIGVsZW1ba2V5XVxuXG4gICAgaWYgKGtleSA9PT0gXCJzdHlsZVwiICYmIE9iamVjdC5rZXlzKGVsZW0uc3R5bGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW0uaGFzT3duUHJvcGVydHkoa2V5KSAmJlxuICAgICAgICAodHlwZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlID09PSBcImJvb2xlYW5cIiB8fCB0eXBlID09PSBcIm51bWJlclwiKSAmJlxuICAgICAgICBrZXkgIT09IFwibm9kZU5hbWVcIiAmJiBrZXkgIT09IFwiY2xhc3NOYW1lXCIgJiYga2V5ICE9PSBcInRhZ05hbWVcIiAmJlxuICAgICAgICBrZXkgIT09IFwidGV4dENvbnRlbnRcIiAmJiBrZXkgIT09IFwiaW5uZXJUZXh0XCIgJiYga2V5ICE9PSBcIm5hbWVzcGFjZVVSSVwiICYmICBrZXkgIT09IFwiaW5uZXJIVE1MXCJcbn1cblxuZnVuY3Rpb24gc3R5bGlmeShzdHlsZXMpIHtcbiAgICBpZiAodHlwZW9mIHN0eWxlcyA9PT0gJ3N0cmluZycpIHJldHVybiBzdHlsZXNcbiAgICB2YXIgYXR0ciA9IFwiXCJcbiAgICBPYmplY3Qua2V5cyhzdHlsZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzdHlsZXNba2V5XVxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSgvW0EtWl0vZywgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgcmV0dXJuIFwiLVwiICsgYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9KVxuICAgICAgICBhdHRyICs9IGtleSArIFwiOlwiICsgdmFsdWUgKyBcIjtcIlxuICAgIH0pXG4gICAgcmV0dXJuIGF0dHJcbn1cblxuZnVuY3Rpb24gZGF0YXNldGlmeShlbGVtKSB7XG4gICAgdmFyIGRzID0gZWxlbS5kYXRhc2V0XG4gICAgdmFyIHByb3BzID0gW11cblxuICAgIGZvciAodmFyIGtleSBpbiBkcykge1xuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogXCJkYXRhLVwiICsga2V5LCB2YWx1ZTogZHNba2V5XSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkobGlzdCkge1xuICAgIHZhciBhdHRyaWJ1dGVzID0gW11cbiAgICBsaXN0LmZvckVhY2goZnVuY3Rpb24gKHR1cGxlKSB7XG4gICAgICAgIHZhciBuYW1lID0gdHVwbGUubmFtZVxuICAgICAgICB2YXIgdmFsdWUgPSB0dXBsZS52YWx1ZVxuXG4gICAgICAgIGlmIChuYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gc3R5bGlmeSh2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXMucHVzaChuYW1lICsgXCI9XCIgKyBcIlxcXCJcIiArIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKSArIFwiXFxcIlwiKVxuICAgIH0pXG5cbiAgICByZXR1cm4gYXR0cmlidXRlcy5sZW5ndGggPyBcIiBcIiArIGF0dHJpYnV0ZXMuam9pbihcIiBcIikgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIHByb3BlcnRpZXMoZWxlbSkge1xuICAgIHZhciBwcm9wcyA9IFtdXG4gICAgZm9yICh2YXIga2V5IGluIGVsZW0pIHtcbiAgICAgICAgaWYgKGlzUHJvcGVydHkoZWxlbSwga2V5KSkge1xuICAgICAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IGVsZW1ba2V5XSB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbnMgaW4gZWxlbS5fYXR0cmlidXRlcykge1xuICAgICAgZm9yICh2YXIgYXR0cmlidXRlIGluIGVsZW0uX2F0dHJpYnV0ZXNbbnNdKSB7XG4gICAgICAgIHZhciBwcm9wID0gZWxlbS5fYXR0cmlidXRlc1tuc11bYXR0cmlidXRlXVxuICAgICAgICB2YXIgbmFtZSA9IChwcm9wLnByZWZpeCA/IHByb3AucHJlZml4ICsgXCI6XCIgOiBcIlwiKSArIGF0dHJpYnV0ZVxuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHByb3AudmFsdWUgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5jbGFzc05hbWUpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiY2xhc3NcIiwgdmFsdWU6IGVsZW0uY2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLmxlbmd0aCA/IHN0cmluZ2lmeShwcm9wcykgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIGVzY2FwZVRleHQocykge1xuICAgIHZhciBzdHIgPSAnJztcblxuICAgIGlmICh0eXBlb2YocykgPT09ICdzdHJpbmcnKSB7IFxuICAgICAgICBzdHIgPSBzOyBcbiAgICB9IGVsc2UgaWYgKHMpIHtcbiAgICAgICAgc3RyID0gcy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJcbiAgICAgICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCBcIiZsdDtcIilcbiAgICAgICAgLnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpXG59XG5cbmZ1bmN0aW9uIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHN0cikge1xuICAgIHJldHVybiBlc2NhcGVUZXh0KHN0cikucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIilcbn1cblxufSx7fV0sMjA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNPYmplY3QoeCkge1xuXHRyZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgeCAhPT0gbnVsbDtcbn07XG5cbn0se31dLDIxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBuYXRpdmVJc0FycmF5ID0gQXJyYXkuaXNBcnJheVxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUlzQXJyYXkgfHwgaXNBcnJheVxuXG5mdW5jdGlvbiBpc0FycmF5KG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09IFwiW29iamVjdCBBcnJheV1cIlxufVxuXG59LHt9XSwyMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgcGF0Y2ggPSByZXF1aXJlKFwiLi92ZG9tL3BhdGNoLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxufSx7XCIuL3Zkb20vcGF0Y2guanNcIjoyN31dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoXCJpcy1vYmplY3RcIilcbnZhciBpc0hvb2sgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdmhvb2suanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVByb3BlcnRpZXNcblxuZnVuY3Rpb24gYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzLCBwcmV2aW91cykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV1cblxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0hvb2socHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpXG4gICAgICAgICAgICBpZiAocHJvcFZhbHVlLmhvb2spIHtcbiAgICAgICAgICAgICAgICBwcm9wVmFsdWUuaG9vayhub2RlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QocHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKSB7XG4gICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKCFpc0hvb2socHJldmlvdXNWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnN0eWxlW2ldID0gXCJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByZXZpb3VzVmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IFwiXCJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNWYWx1ZS51bmhvb2spIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUudW5ob29rKG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSkge1xuICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWRcblxuICAgIC8vIFNldCBhdHRyaWJ1dGVzXG4gICAgaWYgKHByb3BOYW1lID09PSBcImF0dHJpYnV0ZXNcIikge1xuICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBhdHRyVmFsdWUgPSBwcm9wVmFsdWVbYXR0ck5hbWVdXG5cbiAgICAgICAgICAgIGlmIChhdHRyVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgYXR0clZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYocHJldmlvdXNWYWx1ZSAmJiBpc09iamVjdChwcmV2aW91c1ZhbHVlKSAmJlxuICAgICAgICBnZXRQcm90b3R5cGUocHJldmlvdXNWYWx1ZSkgIT09IGdldFByb3RvdHlwZShwcm9wVmFsdWUpKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNPYmplY3Qobm9kZVtwcm9wTmFtZV0pKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0ge31cbiAgICB9XG5cbiAgICB2YXIgcmVwbGFjZXIgPSBwcm9wTmFtZSA9PT0gXCJzdHlsZVwiID8gXCJcIiA6IHVuZGVmaW5lZFxuXG4gICAgZm9yICh2YXIgayBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tdXG4gICAgICAgIG5vZGVbcHJvcE5hbWVdW2tdID0gKHZhbHVlID09PSB1bmRlZmluZWQpID8gcmVwbGFjZXIgOiB2YWx1ZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUuX19wcm90b19fKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdmhvb2suanNcIjozOCxcImlzLW9iamVjdFwiOjIwfV0sMjQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZShcImdsb2JhbC9kb2N1bWVudFwiKVxuXG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodm5vZGUsIG9wdHMpIHtcbiAgICB2YXIgZG9jID0gb3B0cyA/IG9wdHMuZG9jdW1lbnQgfHwgZG9jdW1lbnQgOiBkb2N1bWVudFxuICAgIHZhciB3YXJuID0gb3B0cyA/IG9wdHMud2FybiA6IG51bGxcblxuICAgIHZub2RlID0gaGFuZGxlVGh1bmsodm5vZGUpLmFcblxuICAgIGlmIChpc1dpZGdldCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHZub2RlLmluaXQoKVxuICAgIH0gZWxzZSBpZiAoaXNWVGV4dCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGRvYy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KVxuICAgIH0gZWxzZSBpZiAoIWlzVk5vZGUodm5vZGUpKSB7XG4gICAgICAgIGlmICh3YXJuKSB7XG4gICAgICAgICAgICB3YXJuKFwiSXRlbSBpcyBub3QgYSB2YWxpZCB2aXJ0dWFsIGRvbSBub2RlXCIsIHZub2RlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSAodm5vZGUubmFtZXNwYWNlID09PSBudWxsKSA/XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KHZub2RlLnRhZ05hbWUpIDpcbiAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnROUyh2bm9kZS5uYW1lc3BhY2UsIHZub2RlLnRhZ05hbWUpXG5cbiAgICB2YXIgcHJvcHMgPSB2bm9kZS5wcm9wZXJ0aWVzXG4gICAgYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzKVxuXG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGNyZWF0ZUVsZW1lbnQoY2hpbGRyZW5baV0sIG9wdHMpXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGROb2RlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVcbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIjozNixcIi4uL3Zub2RlL2lzLXZub2RlLmpzXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dC5qc1wiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuL2FwcGx5LXByb3BlcnRpZXNcIjoyMyxcImdsb2JhbC9kb2N1bWVudFwiOjd9XSwyNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vLyBNYXBzIGEgdmlydHVhbCBET00gdHJlZSBvbnRvIGEgcmVhbCBET00gdHJlZSBpbiBhbiBlZmZpY2llbnQgbWFubmVyLlxuLy8gV2UgZG9uJ3Qgd2FudCB0byByZWFkIGFsbCBvZiB0aGUgRE9NIG5vZGVzIGluIHRoZSB0cmVlIHNvIHdlIHVzZVxuLy8gdGhlIGluLW9yZGVyIHRyZWUgaW5kZXhpbmcgdG8gZWxpbWluYXRlIHJlY3Vyc2lvbiBkb3duIGNlcnRhaW4gYnJhbmNoZXMuXG4vLyBXZSBvbmx5IHJlY3Vyc2UgaW50byBhIERPTSBub2RlIGlmIHdlIGtub3cgdGhhdCBpdCBjb250YWlucyBhIGNoaWxkIG9mXG4vLyBpbnRlcmVzdC5cblxudmFyIG5vQ2hpbGQgPSB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUluZGV4XG5cbmZ1bmN0aW9uIGRvbUluZGV4KHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcykge1xuICAgIGlmICghaW5kaWNlcyB8fCBpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRpY2VzLnNvcnQoYXNjZW5kaW5nKVxuICAgICAgICByZXR1cm4gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIDApXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWN1cnNlKHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KSB7XG4gICAgbm9kZXMgPSBub2RlcyB8fCB7fVxuXG5cbiAgICBpZiAocm9vdE5vZGUpIHtcbiAgICAgICAgaWYgKGluZGV4SW5SYW5nZShpbmRpY2VzLCByb290SW5kZXgsIHJvb3RJbmRleCkpIHtcbiAgICAgICAgICAgIG5vZGVzW3Jvb3RJbmRleF0gPSByb290Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZDaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW5cblxuICAgICAgICBpZiAodkNoaWxkcmVuKSB7XG5cbiAgICAgICAgICAgIHZhciBjaGlsZE5vZGVzID0gcm9vdE5vZGUuY2hpbGROb2Rlc1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByb290SW5kZXggKz0gMVxuXG4gICAgICAgICAgICAgICAgdmFyIHZDaGlsZCA9IHZDaGlsZHJlbltpXSB8fCBub0NoaWxkXG4gICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleCA9IHJvb3RJbmRleCArICh2Q2hpbGQuY291bnQgfHwgMClcblxuICAgICAgICAgICAgICAgIC8vIHNraXAgcmVjdXJzaW9uIGRvd24gdGhlIHRyZWUgaWYgdGhlcmUgYXJlIG5vIG5vZGVzIGRvd24gaGVyZVxuICAgICAgICAgICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCBuZXh0SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2UoY2hpbGROb2Rlc1tpXSwgdkNoaWxkLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvb3RJbmRleCA9IG5leHRJbmRleFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzXG59XG5cbi8vIEJpbmFyeSBzZWFyY2ggZm9yIGFuIGluZGV4IGluIHRoZSBpbnRlcnZhbCBbbGVmdCwgcmlnaHRdXG5mdW5jdGlvbiBpbmRleEluUmFuZ2UoaW5kaWNlcywgbGVmdCwgcmlnaHQpIHtcbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdmFyIG1pbkluZGV4ID0gMFxuICAgIHZhciBtYXhJbmRleCA9IGluZGljZXMubGVuZ3RoIC0gMVxuICAgIHZhciBjdXJyZW50SW5kZXhcbiAgICB2YXIgY3VycmVudEl0ZW1cblxuICAgIHdoaWxlIChtaW5JbmRleCA8PSBtYXhJbmRleCkge1xuICAgICAgICBjdXJyZW50SW5kZXggPSAoKG1heEluZGV4ICsgbWluSW5kZXgpIC8gMikgPj4gMFxuICAgICAgICBjdXJyZW50SXRlbSA9IGluZGljZXNbY3VycmVudEluZGV4XVxuXG4gICAgICAgIGlmIChtaW5JbmRleCA9PT0gbWF4SW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50SXRlbSA+PSBsZWZ0ICYmIGN1cnJlbnRJdGVtIDw9IHJpZ2h0XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEl0ZW0gPCBsZWZ0KSB7XG4gICAgICAgICAgICBtaW5JbmRleCA9IGN1cnJlbnRJbmRleCArIDFcbiAgICAgICAgfSBlbHNlICBpZiAoY3VycmVudEl0ZW0gPiByaWdodCkge1xuICAgICAgICAgICAgbWF4SW5kZXggPSBjdXJyZW50SW5kZXggLSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICAgIHJldHVybiBhID4gYiA/IDEgOiAtMVxufVxuXG59LHt9XSwyNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgVlBhdGNoID0gcmVxdWlyZShcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiKVxuXG52YXIgdXBkYXRlV2lkZ2V0ID0gcmVxdWlyZShcIi4vdXBkYXRlLXdpZGdldFwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5UGF0Y2hcblxuZnVuY3Rpb24gYXBwbHlQYXRjaCh2cGF0Y2gsIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgdHlwZSA9IHZwYXRjaC50eXBlXG4gICAgdmFyIHZOb2RlID0gdnBhdGNoLnZOb2RlXG4gICAgdmFyIHBhdGNoID0gdnBhdGNoLnBhdGNoXG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBWUGF0Y2guUkVNT1ZFOlxuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZU5vZGUoZG9tTm9kZSwgdk5vZGUpXG4gICAgICAgIGNhc2UgVlBhdGNoLklOU0VSVDpcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WVEVYVDpcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLldJREdFVDpcbiAgICAgICAgICAgIHJldHVybiB3aWRnZXRQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLlZOT0RFOlxuICAgICAgICAgICAgcmV0dXJuIHZOb2RlUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5PUkRFUjpcbiAgICAgICAgICAgIHJlb3JkZXJDaGlsZHJlbihkb21Ob2RlLCBwYXRjaClcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlBST1BTOlxuICAgICAgICAgICAgYXBwbHlQcm9wZXJ0aWVzKGRvbU5vZGUsIHBhdGNoLCB2Tm9kZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICAgICAgY2FzZSBWUGF0Y2guVEhVTks6XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZVJvb3QoZG9tTm9kZSxcbiAgICAgICAgICAgICAgICByZW5kZXJPcHRpb25zLnBhdGNoKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZG9tTm9kZSlcbiAgICB9XG5cbiAgICBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHZOb2RlKTtcblxuICAgIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIGluc2VydE5vZGUocGFyZW50Tm9kZSwgdk5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChuZXdOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIHN0cmluZ1BhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgdlRleHQsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGRvbU5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgZG9tTm9kZS5yZXBsYWNlRGF0YSgwLCBkb21Ob2RlLmxlbmd0aCwgdlRleHQudGV4dClcbiAgICAgICAgbmV3Tm9kZSA9IGRvbU5vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuICAgICAgICBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodlRleHQsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHdpZGdldFBhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgd2lkZ2V0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHVwZGF0aW5nID0gdXBkYXRlV2lkZ2V0KGxlZnRWTm9kZSwgd2lkZ2V0KVxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAodXBkYXRpbmcpIHtcbiAgICAgICAgbmV3Tm9kZSA9IHdpZGdldC51cGRhdGUobGVmdFZOb2RlLCBkb21Ob2RlKSB8fCBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHdpZGdldCwgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIGlmICghdXBkYXRpbmcpIHtcbiAgICAgICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCBsZWZ0Vk5vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gdk5vZGVQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgdykge1xuICAgIGlmICh0eXBlb2Ygdy5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIgJiYgaXNXaWRnZXQodykpIHtcbiAgICAgICAgdy5kZXN0cm95KGRvbU5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgbW92ZXMpIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IGRvbU5vZGUuY2hpbGROb2Rlc1xuICAgIHZhciBrZXlNYXAgPSB7fVxuICAgIHZhciBub2RlXG4gICAgdmFyIHJlbW92ZVxuICAgIHZhciBpbnNlcnRcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW92ZXMucmVtb3Zlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZW1vdmUgPSBtb3Zlcy5yZW1vdmVzW2ldXG4gICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzW3JlbW92ZS5mcm9tXVxuICAgICAgICBpZiAocmVtb3ZlLmtleSkge1xuICAgICAgICAgICAga2V5TWFwW3JlbW92ZS5rZXldID0gbm9kZVxuICAgICAgICB9XG4gICAgICAgIGRvbU5vZGUucmVtb3ZlQ2hpbGQobm9kZSlcbiAgICB9XG5cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGhcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1vdmVzLmluc2VydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaW5zZXJ0ID0gbW92ZXMuaW5zZXJ0c1tqXVxuICAgICAgICBub2RlID0ga2V5TWFwW2luc2VydC5rZXldXG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIHdlaXJkZXN0IGJ1ZyBpJ3ZlIGV2ZXIgc2VlbiBpbiB3ZWJraXRcbiAgICAgICAgZG9tTm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgaW5zZXJ0LnRvID49IGxlbmd0aCsrID8gbnVsbCA6IGNoaWxkTm9kZXNbaW5zZXJ0LnRvXSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSb290KG9sZFJvb3QsIG5ld1Jvb3QpIHtcbiAgICBpZiAob2xkUm9vdCAmJiBuZXdSb290ICYmIG9sZFJvb3QgIT09IG5ld1Jvb3QgJiYgb2xkUm9vdC5wYXJlbnROb2RlKSB7XG4gICAgICAgIG9sZFJvb3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Um9vdCwgb2xkUm9vdClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Um9vdDtcbn1cblxufSx7XCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MSxcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiOjQ0LFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCIuL3VwZGF0ZS13aWRnZXRcIjoyOH1dLDI3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIHJlbmRlciA9IHJlcXVpcmUoXCIuL2NyZWF0ZS1lbGVtZW50XCIpXG52YXIgZG9tSW5kZXggPSByZXF1aXJlKFwiLi9kb20taW5kZXhcIilcbnZhciBwYXRjaE9wID0gcmVxdWlyZShcIi4vcGF0Y2gtb3BcIilcbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxuZnVuY3Rpb24gcGF0Y2gocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICByZW5kZXJPcHRpb25zID0gcmVuZGVyT3B0aW9ucyB8fCB7fVxuICAgIHJlbmRlck9wdGlvbnMucGF0Y2ggPSByZW5kZXJPcHRpb25zLnBhdGNoICYmIHJlbmRlck9wdGlvbnMucGF0Y2ggIT09IHBhdGNoXG4gICAgICAgID8gcmVuZGVyT3B0aW9ucy5wYXRjaFxuICAgICAgICA6IHBhdGNoUmVjdXJzaXZlXG4gICAgcmVuZGVyT3B0aW9ucy5yZW5kZXIgPSByZW5kZXJPcHRpb25zLnJlbmRlciB8fCByZW5kZXJcblxuICAgIHJldHVybiByZW5kZXJPcHRpb25zLnBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKVxufVxuXG5mdW5jdGlvbiBwYXRjaFJlY3Vyc2l2ZShyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBpbmRpY2VzID0gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpXG5cbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlXG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZG9tSW5kZXgocm9vdE5vZGUsIHBhdGNoZXMuYSwgaW5kaWNlcylcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IHJvb3ROb2RlLm93bmVyRG9jdW1lbnRcblxuICAgIGlmICghcmVuZGVyT3B0aW9ucy5kb2N1bWVudCAmJiBvd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCkge1xuICAgICAgICByZW5kZXJPcHRpb25zLmRvY3VtZW50ID0gb3duZXJEb2N1bWVudFxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZUluZGV4ID0gaW5kaWNlc1tpXVxuICAgICAgICByb290Tm9kZSA9IGFwcGx5UGF0Y2gocm9vdE5vZGUsXG4gICAgICAgICAgICBpbmRleFtub2RlSW5kZXhdLFxuICAgICAgICAgICAgcGF0Y2hlc1tub2RlSW5kZXhdLFxuICAgICAgICAgICAgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gYXBwbHlQYXRjaChyb290Tm9kZSwgZG9tTm9kZSwgcGF0Y2hMaXN0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgaWYgKCFkb21Ob2RlKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAoaXNBcnJheShwYXRjaExpc3QpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0Y2hMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXdOb2RlID0gcGF0Y2hPcChwYXRjaExpc3RbaV0sIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0LCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgcm9vdE5vZGUgPSBuZXdOb2RlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2hlcykge1xuICAgICAgICBpZiAoa2V5ICE9PSBcImFcIikge1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKE51bWJlcihrZXkpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGljZXNcbn1cblxufSx7XCIuL2NyZWF0ZS1lbGVtZW50XCI6MjQsXCIuL2RvbS1pbmRleFwiOjI1LFwiLi9wYXRjaC1vcFwiOjI2LFwiZ2xvYmFsL2RvY3VtZW50XCI6NyxcIngtaXMtYXJyYXlcIjoyMX1dLDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSB1cGRhdGVXaWRnZXRcblxuZnVuY3Rpb24gdXBkYXRlV2lkZ2V0KGEsIGIpIHtcbiAgICBpZiAoaXNXaWRnZXQoYSkgJiYgaXNXaWRnZXQoYikpIHtcbiAgICAgICAgaWYgKFwibmFtZVwiIGluIGEgJiYgXCJuYW1lXCIgaW4gYikge1xuICAgICAgICAgICAgcmV0dXJuIGEuaWQgPT09IGIuaWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhLmluaXQgPT09IGIuaW5pdFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDF9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXR0cmlidXRlSG9vaztcblxuZnVuY3Rpb24gQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEF0dHJpYnV0ZUhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgcHJldikge1xuICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIHByZXYudmFsdWUgPT09IHRoaXMudmFsdWUgJiZcbiAgICAgICAgcHJldi5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBwcm9wLCB0aGlzLnZhbHVlKTtcbn07XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgJiYgbmV4dC50eXBlID09PSAnQXR0cmlidXRlSG9vaycgJiZcbiAgICAgICAgbmV4dC5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29sb25Qb3NpdGlvbiA9IHByb3AuaW5kZXhPZignOicpO1xuICAgIHZhciBsb2NhbE5hbWUgPSBjb2xvblBvc2l0aW9uID4gLTEgPyBwcm9wLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSkgOiBwcm9wO1xuICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlTlModGhpcy5uYW1lc3BhY2UsIGxvY2FsTmFtZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS50eXBlID0gJ0F0dHJpYnV0ZUhvb2snO1xuXG59LHt9XSwzMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdlN0b3JlID0gcmVxdWlyZSgnZXYtc3RvcmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdkhvb2s7XG5cbmZ1bmN0aW9uIEV2SG9vayh2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFdkhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXZIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkV2SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB0aGlzLnZhbHVlO1xufTtcblxuRXZIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbihub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB1bmRlZmluZWQ7XG59O1xuXG59LHtcImV2LXN0b3JlXCI6NH1dLDMxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBTb2Z0U2V0SG9vaztcblxuZnVuY3Rpb24gU29mdFNldEhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuU29mdFNldEhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgaWYgKG5vZGVbcHJvcGVydHlOYW1lXSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlW3Byb3BlcnR5TmFtZV0gPSB0aGlzLnZhbHVlO1xuICAgIH1cbn07XG5cbn0se31dLDMyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBWTm9kZSA9IHJlcXVpcmUoJy4uL3Zub2RlL3Zub2RlLmpzJyk7XG52YXIgVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS92dGV4dC5qcycpO1xudmFyIGlzVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12bm9kZScpO1xudmFyIGlzVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12dGV4dCcpO1xudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtd2lkZ2V0Jyk7XG52YXIgaXNIb29rID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdmhvb2snKTtcbnZhciBpc1ZUaHVuayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXRodW5rJyk7XG5cbnZhciBwYXJzZVRhZyA9IHJlcXVpcmUoJy4vcGFyc2UtdGFnLmpzJyk7XG52YXIgc29mdFNldEhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL3NvZnQtc2V0LWhvb2suanMnKTtcbnZhciBldkhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL2V2LWhvb2suanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBoO1xuXG5mdW5jdGlvbiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBbXTtcbiAgICB2YXIgdGFnLCBwcm9wcywga2V5LCBuYW1lc3BhY2U7XG5cbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BzID0gcHJvcHMgfHwgcHJvcGVydGllcyB8fCB7fTtcbiAgICB0YWcgPSBwYXJzZVRhZyh0YWdOYW1lLCBwcm9wcyk7XG5cbiAgICAvLyBzdXBwb3J0IGtleXNcbiAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgICAgIGtleSA9IHByb3BzLmtleTtcbiAgICAgICAgcHJvcHMua2V5ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnQgbmFtZXNwYWNlXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCduYW1lc3BhY2UnKSkge1xuICAgICAgICBuYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgICAgIHByb3BzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBmaXggY3Vyc29yIGJ1Z1xuICAgIGlmICh0YWcgPT09ICdJTlBVVCcgJiZcbiAgICAgICAgIW5hbWVzcGFjZSAmJlxuICAgICAgICBwcm9wcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJlxuICAgICAgICBwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFpc0hvb2socHJvcHMudmFsdWUpXG4gICAgKSB7XG4gICAgICAgIHByb3BzLnZhbHVlID0gc29mdFNldEhvb2socHJvcHMudmFsdWUpO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybVByb3BlcnRpZXMocHJvcHMpO1xuXG4gICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgY2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgICAgYWRkQ2hpbGQoY2hpbGRyZW4sIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpO1xuICAgIH1cblxuXG4gICAgcmV0dXJuIG5ldyBWTm9kZSh0YWcsIHByb3BzLCBjaGlsZE5vZGVzLCBrZXksIG5hbWVzcGFjZSk7XG59XG5cbmZ1bmN0aW9uIGFkZENoaWxkKGMsIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpIHtcbiAgICBpZiAodHlwZW9mIGMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoYykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoU3RyaW5nKGMpKSk7XG4gICAgfSBlbHNlIGlmIChpc0NoaWxkKGMpKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChjKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoYykpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhZGRDaGlsZChjW2ldLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYyA9PT0gbnVsbCB8fCBjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IFVuZXhwZWN0ZWRWaXJ0dWFsRWxlbWVudCh7XG4gICAgICAgICAgICBmb3JlaWduT2JqZWN0OiBjLFxuICAgICAgICAgICAgcGFyZW50Vm5vZGU6IHtcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiB0YWcsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoaXNIb29rKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocHJvcE5hbWUuc3Vic3RyKDAsIDMpID09PSAnZXYtJykge1xuICAgICAgICAgICAgICAgIC8vIGFkZCBldi1mb28gc3VwcG9ydFxuICAgICAgICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGV2SG9vayh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGQoeCkge1xuICAgIHJldHVybiBpc1ZOb2RlKHgpIHx8IGlzVlRleHQoeCkgfHwgaXNXaWRnZXQoeCkgfHwgaXNWVGh1bmsoeCk7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KSB8fCBpc0NoaWxkKHgpO1xufVxuXG5mdW5jdGlvbiBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoZGF0YSkge1xuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTtcblxuICAgIGVyci50eXBlID0gJ3ZpcnR1YWwtaHlwZXJzY3JpcHQudW5leHBlY3RlZC52aXJ0dWFsLWVsZW1lbnQnO1xuICAgIGVyci5tZXNzYWdlID0gJ1VuZXhwZWN0ZWQgdmlydHVhbCBjaGlsZCBwYXNzZWQgdG8gaCgpLlxcbicgK1xuICAgICAgICAnRXhwZWN0ZWQgYSBWTm9kZSAvIFZ0aHVuayAvIFZXaWRnZXQgLyBzdHJpbmcgYnV0OlxcbicgK1xuICAgICAgICAnZ290OlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLmZvcmVpZ25PYmplY3QpICtcbiAgICAgICAgJy5cXG4nICtcbiAgICAgICAgJ1RoZSBwYXJlbnQgdm5vZGUgaXM6XFxuJyArXG4gICAgICAgIGVycm9yU3RyaW5nKGRhdGEucGFyZW50Vm5vZGUpXG4gICAgICAgICdcXG4nICtcbiAgICAgICAgJ1N1Z2dlc3RlZCBmaXg6IGNoYW5nZSB5b3VyIGBoKC4uLiwgWyAuLi4gXSlgIGNhbGxzaXRlLic7XG4gICAgZXJyLmZvcmVpZ25PYmplY3QgPSBkYXRhLmZvcmVpZ25PYmplY3Q7XG4gICAgZXJyLnBhcmVudFZub2RlID0gZGF0YS5wYXJlbnRWbm9kZTtcblxuICAgIHJldHVybiBlcnI7XG59XG5cbmZ1bmN0aW9uIGVycm9yU3RyaW5nKG9iaikge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsICcgICAgJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG9iaik7XG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiLi4vdm5vZGUvaXMtdm5vZGVcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0XCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXRcIjo0MSxcIi4uL3Zub2RlL3Zub2RlLmpzXCI6NDMsXCIuLi92bm9kZS92dGV4dC5qc1wiOjQ1LFwiLi9ob29rcy9ldi1ob29rLmpzXCI6MzAsXCIuL2hvb2tzL3NvZnQtc2V0LWhvb2suanNcIjozMSxcIi4vcGFyc2UtdGFnLmpzXCI6MzMsXCJ4LWlzLWFycmF5XCI6MjF9XSwzMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBzcGxpdCA9IHJlcXVpcmUoJ2Jyb3dzZXItc3BsaXQnKTtcblxudmFyIGNsYXNzSWRTcGxpdCA9IC8oW1xcLiNdP1thLXpBLVowLTlcXHUwMDdGLVxcdUZGRkZfOi1dKykvO1xudmFyIG5vdENsYXNzSWQgPSAvXlxcLnwjLztcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVRhZztcblxuZnVuY3Rpb24gcGFyc2VUYWcodGFnLCBwcm9wcykge1xuICAgIGlmICghdGFnKSB7XG4gICAgICAgIHJldHVybiAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgbm9JZCA9ICEocHJvcHMuaGFzT3duUHJvcGVydHkoJ2lkJykpO1xuXG4gICAgdmFyIHRhZ1BhcnRzID0gc3BsaXQodGFnLCBjbGFzc0lkU3BsaXQpO1xuICAgIHZhciB0YWdOYW1lID0gbnVsbDtcblxuICAgIGlmIChub3RDbGFzc0lkLnRlc3QodGFnUGFydHNbMV0pKSB7XG4gICAgICAgIHRhZ05hbWUgPSAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NlcywgcGFydCwgdHlwZSwgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCB0YWdQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJ0ID0gdGFnUGFydHNbaV07XG5cbiAgICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUgPSBwYXJ0LmNoYXJBdCgwKTtcblxuICAgICAgICBpZiAoIXRhZ05hbWUpIHtcbiAgICAgICAgICAgIHRhZ05hbWUgPSBwYXJ0O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcuJykge1xuICAgICAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMgfHwgW107XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnIycgJiYgbm9JZCkge1xuICAgICAgICAgICAgcHJvcHMuaWQgPSBwYXJ0LnN1YnN0cmluZygxLCBwYXJ0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xhc3Nlcykge1xuICAgICAgICBpZiAocHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocHJvcHMuY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3BzLmNsYXNzTmFtZSA9IGNsYXNzZXMuam9pbignICcpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5uYW1lc3BhY2UgPyB0YWdOYW1lIDogdGFnTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG59LHtcImJyb3dzZXItc3BsaXRcIjozfV0sMzQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgREVGQVVMVF9OQU1FU1BBQ0UgPSBudWxsO1xudmFyIEVWX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMnO1xudmFyIFhMSU5LX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcbnZhciBYTUxfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSc7XG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWR1RpbnkxMi9hdHRyaWJ1dGVUYWJsZS5odG1sXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvYXR0aW5kZXguaHRtbFxudmFyIFNWR19QUk9QRVJUSUVTID0ge1xuICAgICdhYm91dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2NlbnQtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FjY3VtdWxhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWRkaXRpdmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWxpZ25tZW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYW1wbGl0dWRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FyYWJpYy1mb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVOYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F0dHJpYnV0ZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXppbXV0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYW5kd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZUZyZXF1ZW5jeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlUHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlbGluZS1zaGlmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JpYXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FsY01vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FwLWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGFzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAtcGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcFBhdGhVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1wcm9maWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTY3JpcHRUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTdHlsZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3Vyc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGF0YXR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVmYXVsdEFjdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkZXNjZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RpZmZ1c2VDb25zdGFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXJlY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlzcGxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXZpc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RvbWluYW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R1cic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGdlTW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGl0YWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbGV2YXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5hYmxlLWJhY2tncm91bmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V2OmV2ZW50JzogRVZfTkFNRVNQQUNFLFxuICAgICdldmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtcnVsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyUmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNIaWdobGlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNhYmxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtZmFtaWx5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUtYWRqdXN0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc3RyZXRjaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0eWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtdmFyaWFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXdlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb3JtYXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnJvbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1uYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGhSZWYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRUcmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5kbGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LWFkdi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkZW9ncmFwaGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ltYWdlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbjInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW5pdGlhbFZpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW50ZXJjZXB0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2snOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmVsTWF0cml4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbFVuaXRMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlQb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5U3BsaW5lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlUaW1lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsYW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xlbmd0aEFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZXR0ZXItc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaWdodGluZy1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaW1pdGluZ0NvbmVBbmdsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsb2NhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1taWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLXN0YXJ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlckhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJXaWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tDb250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFza1VuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDaGFyYWN0ZXJFbmNvZGluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYUNvbnRlbnRFbmNvZGluZ3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFTaXplJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhVGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWluJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1uZXh0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1wcmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ251bU9jdGF2ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2JzZXJ2ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3BlcmF0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JkZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVyZmxvdyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYW5vc2UtMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdGhMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVybkNvbnRlbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Vbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwaGFzZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwbGF5YmFja09yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50ZXItZXZlbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0Wic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFscGhhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJpbWl0aXZlVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJvcGFnYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BlcnR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmFkaXVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVmWSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVuZGVyaW5nLWludGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXRDb3VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXREdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRFeHRlbnNpb25zJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRmVhdHVyZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb250cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZvcm1hdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzb3VyY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXN1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncm90YXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NlZWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2hhcGUtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Nsb3BlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NuYXBzaG90VGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BlY3VsYXJFeHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcHJlYWRNZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RhcnRPZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RkRGV2aWF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW1oJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW12JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0aXRjaFRpbGVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3AtY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RvcC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaWtldGhyb3VnaC10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaGFycmF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1kYXNob2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lY2FwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lam9pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbWl0ZXJsaW1pdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3VyZmFjZVNjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNCZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3JEZWZhdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNNYXN0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jVG9sZXJhbmNlRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeXN0ZW1MYW5ndWFnZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YWJsZVZhbHVlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtYW5jaG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtZGVjb3JhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpbWVsaW5lQmVnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGl0bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndG8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybUJlaGF2aW9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHlwZW9mJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuZGVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZS1iaWRpJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtcmFuZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pdHMtcGVyLWVtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtYWxwaGFiZXRpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWhhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1pZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LW1hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2YWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVyc2lvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LWFkdi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3Qm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZpZXdUYXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlzaWJpbGl0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd29yZC1zcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dyaXRpbmctbW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6YXJjcm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6aHJlZic6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6cm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6c2hvdyc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6dGl0bGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnR5cGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3htbDpiYXNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmlkJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmxhbmcnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6c3BhY2UnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3lDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd6b29tQW5kUGFuJzogREVGQVVMVF9OQU1FU1BBQ0Vcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU1ZHQXR0cmlidXRlTmFtZXNwYWNlO1xuXG5mdW5jdGlvbiBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UodmFsdWUpIHtcbiAgaWYgKFNWR19QUk9QRVJUSUVTLmhhc093blByb3BlcnR5KHZhbHVlKSkge1xuICAgIHJldHVybiBTVkdfUFJPUEVSVElFU1t2YWx1ZV07XG4gIH1cbn1cblxufSx7fV0sMzU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ3gtaXMtYXJyYXknKTtcblxudmFyIGggPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cblxudmFyIFNWR0F0dHJpYnV0ZU5hbWVzcGFjZSA9IHJlcXVpcmUoJy4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2UnKTtcbnZhciBhdHRyaWJ1dGVIb29rID0gcmVxdWlyZSgnLi9ob29rcy9hdHRyaWJ1dGUtaG9vaycpO1xuXG52YXIgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbm1vZHVsZS5leHBvcnRzID0gc3ZnO1xuXG5mdW5jdGlvbiBzdmcodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pIHtcbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwge307XG5cbiAgICAvLyBzZXQgbmFtZXNwYWNlIGZvciBzdmdcbiAgICBwcm9wZXJ0aWVzLm5hbWVzcGFjZSA9IFNWR19OQU1FU1BBQ0U7XG5cbiAgICB2YXIgYXR0cmlidXRlcyA9IHByb3BlcnRpZXMuYXR0cmlidXRlcyB8fCAocHJvcGVydGllcy5hdHRyaWJ1dGVzID0ge30pO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5hbWVzcGFjZSA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZShrZXkpO1xuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCkgeyAvLyBub3QgYSBzdmcgYXR0cmlidXRlXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnRpZXNba2V5XTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgIT09IG51bGwpIHsgLy8gbmFtZXNwYWNlZCBhdHRyaWJ1dGVcbiAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IGF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlXG4gICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fCBpc0FycmF5KHgpO1xufVxuXG59LHtcIi4vaG9va3MvYXR0cmlidXRlLWhvb2tcIjoyOSxcIi4vaW5kZXguanNcIjozMixcIi4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2VcIjozNCxcIngtaXMtYXJyYXlcIjoyMX1dLDM2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4vaXMtdm5vZGVcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4vaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi9pcy10aHVua1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhbmRsZVRodW5rXG5cbmZ1bmN0aW9uIGhhbmRsZVRodW5rKGEsIGIpIHtcbiAgICB2YXIgcmVuZGVyZWRBID0gYVxuICAgIHZhciByZW5kZXJlZEIgPSBiXG5cbiAgICBpZiAoaXNUaHVuayhiKSkge1xuICAgICAgICByZW5kZXJlZEIgPSByZW5kZXJUaHVuayhiLCBhKVxuICAgIH1cblxuICAgIGlmIChpc1RodW5rKGEpKSB7XG4gICAgICAgIHJlbmRlcmVkQSA9IHJlbmRlclRodW5rKGEsIG51bGwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYTogcmVuZGVyZWRBLFxuICAgICAgICBiOiByZW5kZXJlZEJcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlclRodW5rKHRodW5rLCBwcmV2aW91cykge1xuICAgIHZhciByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGVcblxuICAgIGlmICghcmVuZGVyZWRUaHVuaykge1xuICAgICAgICByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGUgPSB0aHVuay5yZW5kZXIocHJldmlvdXMpXG4gICAgfVxuXG4gICAgaWYgKCEoaXNWTm9kZShyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNWVGV4dChyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNXaWRnZXQocmVuZGVyZWRUaHVuaykpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInRodW5rIGRpZCBub3QgcmV0dXJuIGEgdmFsaWQgbm9kZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRUaHVua1xufVxuXG59LHtcIi4vaXMtdGh1bmtcIjozNyxcIi4vaXMtdm5vZGVcIjozOSxcIi4vaXMtdnRleHRcIjo0MCxcIi4vaXMtd2lkZ2V0XCI6NDF9XSwzNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzVGh1bmtcclxuXHJcbmZ1bmN0aW9uIGlzVGh1bmsodCkge1xyXG4gICAgcmV0dXJuIHQgJiYgdC50eXBlID09PSBcIlRodW5rXCJcclxufVxyXG5cbn0se31dLDM4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNIb29rXG5cbmZ1bmN0aW9uIGlzSG9vayhob29rKSB7XG4gICAgcmV0dXJuIGhvb2sgJiZcbiAgICAgICh0eXBlb2YgaG9vay5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJob29rXCIpIHx8XG4gICAgICAgdHlwZW9mIGhvb2sudW5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJ1bmhvb2tcIikpXG59XG5cbn0se31dLDM5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVmlydHVhbE5vZGVcblxuZnVuY3Rpb24gaXNWaXJ0dWFsTm9kZSh4KSB7XG4gICAgcmV0dXJuIHggJiYgeC50eXBlID09PSBcIlZpcnR1YWxOb2RlXCIgJiYgeC52ZXJzaW9uID09PSB2ZXJzaW9uXG59XG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIGlzVmlydHVhbFRleHQoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsVGV4dFwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1dpZGdldFxuXG5mdW5jdGlvbiBpc1dpZGdldCh3KSB7XG4gICAgcmV0dXJuIHcgJiYgdy50eXBlID09PSBcIldpZGdldFwiXG59XG5cbn0se31dLDQyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gXCIyXCJcblxufSx7fV0sNDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcbnZhciBpc1ZIb29rID0gcmVxdWlyZShcIi4vaXMtdmhvb2tcIilcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsTm9kZVxuXG52YXIgbm9Qcm9wZXJ0aWVzID0ge31cbnZhciBub0NoaWxkcmVuID0gW11cblxuZnVuY3Rpb24gVmlydHVhbE5vZGUodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4sIGtleSwgbmFtZXNwYWNlKSB7XG4gICAgdGhpcy50YWdOYW1lID0gdGFnTmFtZVxuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwgbm9Qcm9wZXJ0aWVzXG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IG5vQ2hpbGRyZW5cbiAgICB0aGlzLmtleSA9IGtleSAhPSBudWxsID8gU3RyaW5nKGtleSkgOiB1bmRlZmluZWRcbiAgICB0aGlzLm5hbWVzcGFjZSA9ICh0eXBlb2YgbmFtZXNwYWNlID09PSBcInN0cmluZ1wiKSA/IG5hbWVzcGFjZSA6IG51bGxcblxuICAgIHZhciBjb3VudCA9IChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpIHx8IDBcbiAgICB2YXIgZGVzY2VuZGFudHMgPSAwXG4gICAgdmFyIGhhc1dpZGdldHMgPSBmYWxzZVxuICAgIHZhciBoYXNUaHVua3MgPSBmYWxzZVxuICAgIHZhciBkZXNjZW5kYW50SG9va3MgPSBmYWxzZVxuICAgIHZhciBob29rc1xuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcGVydGllcykge1xuICAgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbcHJvcE5hbWVdXG4gICAgICAgICAgICBpZiAoaXNWSG9vayhwcm9wZXJ0eSkgJiYgcHJvcGVydHkudW5ob29rKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFob29rcykge1xuICAgICAgICAgICAgICAgICAgICBob29rcyA9IHt9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaG9va3NbcHJvcE5hbWVdID0gcHJvcGVydHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkpIHtcbiAgICAgICAgICAgIGRlc2NlbmRhbnRzICs9IGNoaWxkLmNvdW50IHx8IDBcblxuICAgICAgICAgICAgaWYgKCFoYXNXaWRnZXRzICYmIGNoaWxkLmhhc1dpZGdldHMpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhhc1RodW5rcyAmJiBjaGlsZC5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZGVzY2VuZGFudEhvb2tzICYmIChjaGlsZC5ob29rcyB8fCBjaGlsZC5kZXNjZW5kYW50SG9va3MpKSB7XG4gICAgICAgICAgICAgICAgZGVzY2VuZGFudEhvb2tzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNXaWRnZXRzICYmIGlzV2lkZ2V0KGNoaWxkKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZC5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNUaHVua3MgJiYgaXNUaHVuayhjaGlsZCkpIHtcbiAgICAgICAgICAgIGhhc1RodW5rcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50ID0gY291bnQgKyBkZXNjZW5kYW50c1xuICAgIHRoaXMuaGFzV2lkZ2V0cyA9IGhhc1dpZGdldHNcbiAgICB0aGlzLmhhc1RodW5rcyA9IGhhc1RodW5rc1xuICAgIHRoaXMuaG9va3MgPSBob29rc1xuICAgIHRoaXMuZGVzY2VuZGFudEhvb2tzID0gZGVzY2VuZGFudEhvb2tzXG59XG5cblZpcnR1YWxOb2RlLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbE5vZGUucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxOb2RlXCJcblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZob29rXCI6MzgsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXdpZGdldFwiOjQxLFwiLi92ZXJzaW9uXCI6NDJ9XSw0NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxuVmlydHVhbFBhdGNoLk5PTkUgPSAwXG5WaXJ0dWFsUGF0Y2guVlRFWFQgPSAxXG5WaXJ0dWFsUGF0Y2guVk5PREUgPSAyXG5WaXJ0dWFsUGF0Y2guV0lER0VUID0gM1xuVmlydHVhbFBhdGNoLlBST1BTID0gNFxuVmlydHVhbFBhdGNoLk9SREVSID0gNVxuVmlydHVhbFBhdGNoLklOU0VSVCA9IDZcblZpcnR1YWxQYXRjaC5SRU1PVkUgPSA3XG5WaXJ0dWFsUGF0Y2guVEhVTksgPSA4XG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFBhdGNoXG5cbmZ1bmN0aW9uIFZpcnR1YWxQYXRjaCh0eXBlLCB2Tm9kZSwgcGF0Y2gpIHtcbiAgICB0aGlzLnR5cGUgPSBOdW1iZXIodHlwZSlcbiAgICB0aGlzLnZOb2RlID0gdk5vZGVcbiAgICB0aGlzLnBhdGNoID0gcGF0Y2hcbn1cblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsUGF0Y2hcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFRleHRcblxuZnVuY3Rpb24gVmlydHVhbFRleHQodGV4dCkge1xuICAgIHRoaXMudGV4dCA9IFN0cmluZyh0ZXh0KVxufVxuXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxUZXh0LnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsVGV4dFwiXG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlByb3BzXG5cbmZ1bmN0aW9uIGRpZmZQcm9wcyhhLCBiKSB7XG4gICAgdmFyIGRpZmZcblxuICAgIGZvciAodmFyIGFLZXkgaW4gYSkge1xuICAgICAgICBpZiAoIShhS2V5IGluIGIpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFWYWx1ZSA9IGFbYUtleV1cbiAgICAgICAgdmFyIGJWYWx1ZSA9IGJbYUtleV1cblxuICAgICAgICBpZiAoYVZhbHVlID09PSBiVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYVZhbHVlKSAmJiBpc09iamVjdChiVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoZ2V0UHJvdG90eXBlKGJWYWx1ZSkgIT09IGdldFByb3RvdHlwZShhVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSG9vayhiVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIG9iamVjdERpZmYgPSBkaWZmUHJvcHMoYVZhbHVlLCBiVmFsdWUpXG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdERpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IG9iamVjdERpZmZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYktleSBpbiBiKSB7XG4gICAgICAgIGlmICghKGJLZXkgaW4gYSkpIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2JLZXldID0gYltiS2V5XVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDQ3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2hcIilcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12dGV4dFwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdGh1bmtcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIilcblxudmFyIGRpZmZQcm9wcyA9IHJlcXVpcmUoXCIuL2RpZmYtcHJvcHNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmXG5cbmZ1bmN0aW9uIGRpZmYoYSwgYikge1xuICAgIHZhciBwYXRjaCA9IHsgYTogYSB9XG4gICAgd2FsayhhLCBiLCBwYXRjaCwgMClcbiAgICByZXR1cm4gcGF0Y2hcbn1cblxuZnVuY3Rpb24gd2FsayhhLCBiLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICB2YXIgYXBwbHlDbGVhciA9IGZhbHNlXG5cbiAgICBpZiAoaXNUaHVuayhhKSB8fCBpc1RodW5rKGIpKSB7XG4gICAgICAgIHRodW5rcyhhLCBiLCBwYXRjaCwgaW5kZXgpXG4gICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcblxuICAgICAgICAvLyBJZiBhIGlzIGEgd2lkZ2V0IHdlIHdpbGwgYWRkIGEgcmVtb3ZlIHBhdGNoIGZvciBpdFxuICAgICAgICAvLyBPdGhlcndpc2UgYW55IGNoaWxkIHdpZGdldHMvaG9va3MgbXVzdCBiZSBkZXN0cm95ZWQuXG4gICAgICAgIC8vIFRoaXMgcHJldmVudHMgYWRkaW5nIHR3byByZW1vdmUgcGF0Y2hlcyBmb3IgYSB3aWRnZXQuXG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICAgICAgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgYSwgYikpXG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKGIpKSB7XG4gICAgICAgIGlmIChpc1ZOb2RlKGEpKSB7XG4gICAgICAgICAgICBpZiAoYS50YWdOYW1lID09PSBiLnRhZ05hbWUgJiZcbiAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSA9PT0gYi5uYW1lc3BhY2UgJiZcbiAgICAgICAgICAgICAgICBhLmtleSA9PT0gYi5rZXkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHNQYXRjaCA9IGRpZmZQcm9wcyhhLnByb3BlcnRpZXMsIGIucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNQYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guUFJPUFMsIGEsIHByb3BzUGF0Y2gpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcHBseSA9IGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZOT0RFLCBhLCBiKSlcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVlRleHQoYikpIHtcbiAgICAgICAgaWYgKCFpc1ZUZXh0KGEpKSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9IGVsc2UgaWYgKGEudGV4dCAhPT0gYi50ZXh0KSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5XSURHRVQsIGEsIGIpKVxuICAgIH1cblxuICAgIGlmIChhcHBseSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBseVxuICAgIH1cblxuICAgIGlmIChhcHBseUNsZWFyKSB7XG4gICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZGlmZkNoaWxkcmVuKGEsIGIsIHBhdGNoLCBhcHBseSwgaW5kZXgpIHtcbiAgICB2YXIgYUNoaWxkcmVuID0gYS5jaGlsZHJlblxuICAgIHZhciBvcmRlcmVkU2V0ID0gcmVvcmRlcihhQ2hpbGRyZW4sIGIuY2hpbGRyZW4pXG4gICAgdmFyIGJDaGlsZHJlbiA9IG9yZGVyZWRTZXQuY2hpbGRyZW5cblxuICAgIHZhciBhTGVuID0gYUNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBiTGVuID0gYkNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBsZW4gPSBhTGVuID4gYkxlbiA/IGFMZW4gOiBiTGVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBsZWZ0Tm9kZSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgcmlnaHROb2RlID0gYkNoaWxkcmVuW2ldXG4gICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICBpZiAoIWxlZnROb2RlKSB7XG4gICAgICAgICAgICBpZiAocmlnaHROb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXhjZXNzIG5vZGVzIGluIGIgbmVlZCB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksXG4gICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLklOU0VSVCwgbnVsbCwgcmlnaHROb2RlKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdhbGsobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVk5vZGUobGVmdE5vZGUpICYmIGxlZnROb2RlLmNvdW50KSB7XG4gICAgICAgICAgICBpbmRleCArPSBsZWZ0Tm9kZS5jb3VudFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyZWRTZXQubW92ZXMpIHtcbiAgICAgICAgLy8gUmVvcmRlciBub2RlcyBsYXN0XG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICBWUGF0Y2guT1JERVIsXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgb3JkZXJlZFNldC5tb3Zlc1xuICAgICAgICApKVxuICAgIH1cblxuICAgIHJldHVybiBhcHBseVxufVxuXG5mdW5jdGlvbiBjbGVhclN0YXRlKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYSBzaW5nbGUgd2Fsaywgbm90IHR3b1xuICAgIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgIGRlc3Ryb3lXaWRnZXRzKHZOb2RlLCBwYXRjaCwgaW5kZXgpXG59XG5cbi8vIFBhdGNoIHJlY29yZHMgZm9yIGFsbCBkZXN0cm95ZWQgd2lkZ2V0cyBtdXN0IGJlIGFkZGVkIGJlY2F1c2Ugd2UgbmVlZFxuLy8gYSBET00gbm9kZSByZWZlcmVuY2UgZm9yIHRoZSBkZXN0cm95IGZ1bmN0aW9uXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzV2lkZ2V0KHZOb2RlKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZOb2RlLmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgdk5vZGUsIG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVk5vZGUodk5vZGUpICYmICh2Tm9kZS5oYXNXaWRnZXRzIHx8IHZOb2RlLmhhc1RodW5rcykpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgICAgICBkZXN0cm95V2lkZ2V0cyhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkgJiYgY2hpbGQuY291bnQpIHtcbiAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbi8vIENyZWF0ZSBhIHN1Yi1wYXRjaCBmb3IgdGh1bmtzXG5mdW5jdGlvbiB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgdmFyIG5vZGVzID0gaGFuZGxlVGh1bmsoYSwgYilcbiAgICB2YXIgdGh1bmtQYXRjaCA9IGRpZmYobm9kZXMuYSwgbm9kZXMuYilcbiAgICBpZiAoaGFzUGF0Y2hlcyh0aHVua1BhdGNoKSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBuZXcgVlBhdGNoKFZQYXRjaC5USFVOSywgbnVsbCwgdGh1bmtQYXRjaClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhdGNoZXMocGF0Y2gpIHtcbiAgICBmb3IgKHZhciBpbmRleCBpbiBwYXRjaCkge1xuICAgICAgICBpZiAoaW5kZXggIT09IFwiYVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIEV4ZWN1dGUgaG9va3Mgd2hlbiB0d28gbm9kZXMgYXJlIGlkZW50aWNhbFxuZnVuY3Rpb24gdW5ob29rKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoaXNWTm9kZSh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHZOb2RlLmhvb2tzKSB7XG4gICAgICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBlbmRQYXRjaChcbiAgICAgICAgICAgICAgICBwYXRjaFtpbmRleF0sXG4gICAgICAgICAgICAgICAgbmV3IFZQYXRjaChcbiAgICAgICAgICAgICAgICAgICAgVlBhdGNoLlBST1BTLFxuICAgICAgICAgICAgICAgICAgICB2Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkS2V5cyh2Tm9kZS5ob29rcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodk5vZGUuZGVzY2VuZGFudEhvb2tzIHx8IHZOb2RlLmhhc1RodW5rcykge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHVuaG9vayhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IGNoaWxkLmNvdW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZEtleXMob2JqKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBMaXN0IGRpZmYsIG5haXZlIGxlZnQgdG8gcmlnaHQgcmVvcmRlcmluZ1xuZnVuY3Rpb24gcmVvcmRlcihhQ2hpbGRyZW4sIGJDaGlsZHJlbikge1xuICAgIC8vIE8oTSkgdGltZSwgTyhNKSBtZW1vcnlcbiAgICB2YXIgYkNoaWxkSW5kZXggPSBrZXlJbmRleChiQ2hpbGRyZW4pXG4gICAgdmFyIGJLZXlzID0gYkNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBiRnJlZSA9IGJDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChiRnJlZS5sZW5ndGggPT09IGJDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhOKSB0aW1lLCBPKE4pIG1lbW9yeVxuICAgIHZhciBhQ2hpbGRJbmRleCA9IGtleUluZGV4KGFDaGlsZHJlbilcbiAgICB2YXIgYUtleXMgPSBhQ2hpbGRJbmRleC5rZXlzXG4gICAgdmFyIGFGcmVlID0gYUNoaWxkSW5kZXguZnJlZVxuXG4gICAgaWYgKGFGcmVlLmxlbmd0aCA9PT0gYUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IGJDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPKE1BWChOLCBNKSkgbWVtb3J5XG4gICAgdmFyIG5ld0NoaWxkcmVuID0gW11cblxuICAgIHZhciBmcmVlSW5kZXggPSAwXG4gICAgdmFyIGZyZWVDb3VudCA9IGJGcmVlLmxlbmd0aFxuICAgIHZhciBkZWxldGVkSXRlbXMgPSAwXG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggYSBhbmQgbWF0Y2ggYSBub2RlIGluIGJcbiAgICAvLyBPKE4pIHRpbWUsXG4gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgYUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhSXRlbSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgaXRlbUluZGV4XG5cbiAgICAgICAgaWYgKGFJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKGJLZXlzLmhhc093blByb3BlcnR5KGFJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBNYXRjaCB1cCB0aGUgb2xkIGtleXNcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBiS2V5c1thSXRlbS5rZXldXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIGtleWVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTWF0Y2ggdGhlIGl0ZW0gaW4gYSB3aXRoIHRoZSBuZXh0IGZyZWUgaXRlbSBpbiBiXG4gICAgICAgICAgICBpZiAoZnJlZUluZGV4IDwgZnJlZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYkZyZWVbZnJlZUluZGV4KytdXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGZyZWUgaXRlbXMgaW4gYiB0byBtYXRjaCB3aXRoXG4gICAgICAgICAgICAgICAgLy8gdGhlIGZyZWUgaXRlbXMgaW4gYSwgc28gdGhlIGV4dHJhIGZyZWUgbm9kZXNcbiAgICAgICAgICAgICAgICAvLyBhcmUgZGVsZXRlZC5cbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBpIC0gZGVsZXRlZEl0ZW1zKytcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFzdEZyZWVJbmRleCA9IGZyZWVJbmRleCA+PSBiRnJlZS5sZW5ndGggP1xuICAgICAgICBiQ2hpbGRyZW4ubGVuZ3RoIDpcbiAgICAgICAgYkZyZWVbZnJlZUluZGV4XVxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGIgYW5kIGFwcGVuZCBhbnkgbmV3IGtleXNcbiAgICAvLyBPKE0pIHRpbWVcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbmV3SXRlbSA9IGJDaGlsZHJlbltqXVxuXG4gICAgICAgIGlmIChuZXdJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKCFhS2V5cy5oYXNPd25Qcm9wZXJ0eShuZXdJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgYW55IG5ldyBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhZGRpbmcgbmV3IGl0ZW1zIHRvIHRoZSBlbmQgYW5kIHRoZW4gc29ydGluZyB0aGVtXG4gICAgICAgICAgICAgICAgLy8gaW4gcGxhY2UuIEluIGZ1dHVyZSB3ZSBzaG91bGQgaW5zZXJ0IG5ldyBpdGVtcyBpbiBwbGFjZS5cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0l0ZW0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaiA+PSBsYXN0RnJlZUluZGV4KSB7XG4gICAgICAgICAgICAvLyBBZGQgYW55IGxlZnRvdmVyIG5vbi1rZXllZCBpdGVtc1xuICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNpbXVsYXRlID0gbmV3Q2hpbGRyZW4uc2xpY2UoKVxuICAgIHZhciBzaW11bGF0ZUluZGV4ID0gMFxuICAgIHZhciByZW1vdmVzID0gW11cbiAgICB2YXIgaW5zZXJ0cyA9IFtdXG4gICAgdmFyIHNpbXVsYXRlSXRlbVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBiQ2hpbGRyZW4ubGVuZ3RoOykge1xuICAgICAgICB2YXIgd2FudGVkSXRlbSA9IGJDaGlsZHJlbltrXVxuICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtc1xuICAgICAgICB3aGlsZSAoc2ltdWxhdGVJdGVtID09PSBudWxsICYmIHNpbXVsYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgbnVsbCkpXG4gICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIG5lZWQgYSBrZXkgaW4gdGhpcyBwb3NpdGlvbi4uLlxuICAgICAgICAgICAgaWYgKHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFuIGluc2VydCBkb2Vzbid0IHB1dCB0aGlzIGtleSBpbiBwbGFjZSwgaXQgbmVlZHMgdG8gbW92ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoYktleXNbc2ltdWxhdGVJdGVtLmtleV0gIT09IGsgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcmVtb3ZlIGRpZG4ndCBwdXQgdGhlIHdhbnRlZCBpdGVtIGluIHBsYWNlLCB3ZSBuZWVkIHRvIGluc2VydCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0ZW1zIGFyZSBtYXRjaGluZywgc28gc2tpcCBhaGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGVJbmRleCsrXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGsrK1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYSBrZXkgaW4gc2ltdWxhdGUgaGFzIG5vIG1hdGNoaW5nIHdhbnRlZCBrZXksIHJlbW92ZSBpdFxuICAgICAgICAgICAgZWxzZSBpZiAoc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgaysrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYWxsIHRoZSByZW1haW5pbmcgbm9kZXMgZnJvbSBzaW11bGF0ZVxuICAgIHdoaWxlKHNpbXVsYXRlSW5kZXggPCBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBvbmx5IG1vdmVzIHdlIGhhdmUgYXJlIGRlbGV0ZXMgdGhlbiB3ZSBjYW4ganVzdFxuICAgIC8vIGxldCB0aGUgZGVsZXRlIHBhdGNoIHJlbW92ZSB0aGVzZSBpdGVtcy5cbiAgICBpZiAocmVtb3Zlcy5sZW5ndGggPT09IGRlbGV0ZWRJdGVtcyAmJiAhaW5zZXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBuZXdDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgIG1vdmVzOiB7XG4gICAgICAgICAgICByZW1vdmVzOiByZW1vdmVzLFxuICAgICAgICAgICAgaW5zZXJ0czogaW5zZXJ0c1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmUoYXJyLCBpbmRleCwga2V5KSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSlcblxuICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IGluZGV4LFxuICAgICAgICBrZXk6IGtleVxuICAgIH1cbn1cblxuZnVuY3Rpb24ga2V5SW5kZXgoY2hpbGRyZW4pIHtcbiAgICB2YXIga2V5cyA9IHt9XG4gICAgdmFyIGZyZWUgPSBbXVxuICAgIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cblxuICAgICAgICBpZiAoY2hpbGQua2V5KSB7XG4gICAgICAgICAgICBrZXlzW2NoaWxkLmtleV0gPSBpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcmVlLnB1c2goaSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleXM6IGtleXMsICAgICAvLyBBIGhhc2ggb2Yga2V5IG5hbWUgdG8gaW5kZXhcbiAgICAgICAgZnJlZTogZnJlZSAgICAgIC8vIEFuIGFycmF5IG9mIHVua2V5ZWQgaXRlbSBpbmRpY2VzXG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBlbmRQYXRjaChhcHBseSwgcGF0Y2gpIHtcbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgaWYgKGlzQXJyYXkoYXBwbHkpKSB7XG4gICAgICAgICAgICBhcHBseS5wdXNoKHBhdGNoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbHkgPSBbYXBwbHksIHBhdGNoXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFwcGx5XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2hhbmRsZS10aHVua1wiOjM2LFwiLi4vdm5vZGUvaXMtdGh1bmtcIjozNyxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92cGF0Y2hcIjo0NCxcIi4vZGlmZi1wcm9wc1wiOjQ2LFwieC1pcy1hcnJheVwiOjIxfV0sNDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHZkb20gPSB7XG4gIFZOb2RlOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS92bm9kZS92bm9kZScpLFxuICBWVGV4dDogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdnRleHQnKSxcbiAgZGlmZjogcmVxdWlyZSgndmlydHVhbC1kb20vZGlmZicpLFxuICBwYXRjaDogcmVxdWlyZSgndmlydHVhbC1kb20vcGF0Y2gnKSxcbiAgY3JlYXRlRWxlbWVudDogcmVxdWlyZSgndmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnQnKSxcbiAgc3ZnOiByZXF1aXJlKFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIiksXG59O1xuXG5nbG9iYWwuVmlydHVhbERvbSA9IHZkb207XG5tb2R1bGUuZXhwb3J0cyA9IHZkb207XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCJ2aXJ0dWFsLWRvbS9jcmVhdGUtZWxlbWVudFwiOjEsXCJ2aXJ0dWFsLWRvbS9kaWZmXCI6MixcInZpcnR1YWwtZG9tL3BhdGNoXCI6MjIsXCJ2aXJ0dWFsLWRvbS92aXJ0dWFsLWh5cGVyc2NyaXB0L3N2Z1wiOjM1LFwidmlydHVhbC1kb20vdm5vZGUvdm5vZGVcIjo0MyxcInZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0XCI6NDV9XX0se30sWzQ4XSkoNDgpXG59KTtcbiIsImZ1bmN0aW9uIFZkb21UaHVuayhmbiwgYXJncywga2V5KSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFZkb21UaHVuaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWZG9tVGh1bmsoZm4sIGFyZ3MsIGtleSk7XG4gICAgfVxuXG4gICAgaWYgKGtleSkge1xuICAgICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgfVxuXG4gICAgdGhpcy5mbiA9IGZuO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5WZG9tVGh1bmsgPSBWZG9tVGh1bms7XG5cblZkb21UaHVuay5wcm90b3R5cGUudHlwZSA9ICdUaHVuayc7XG5WZG9tVGh1bmsucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChwcmV2KSB7XG4gIGlmIChwcmV2ICYmIHRoaXMuYXJncyA9PT0gcHJldi5hcmdzICYmIHRoaXMuZm4gPT09IHByZXYuZm4pIHtcbiAgICByZXR1cm4gcHJldi52bm9kZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmZuKHRoaXMuYXJncyk7XG59O1xuXG5cbiIsIi8vIFVzZWQgYnkgd29ya2Fyb3VuZCBmb3IgaW5wdXQgZWxlbWVudCB2YWx1ZSBmaWVsZFxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9ob29rcy9zb2Z0LXNldC1ob29rLmpzXG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG5cbnZhciBHZW5lcmljSG9vayA9IGZ1bmN0aW9uIChpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHZW5lcmljSG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljSG9vayhpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0ID0gaW5pdDtcbiAgICB0aGlzLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmV4dHJhID0gZXh0cmE7XG59O1xuXG52YXIgaG9va19zdGF0ZV9rZXkgPSBcInZkb21faG9va19zdGF0ZV9rZXlcIjtcblxuaWYgKHRoaXMuU3ltYm9sKSB7XG4gICAgaG9va19zdGF0ZV9rZXkgPSBTeW1ib2woaG9va19zdGF0ZV9rZXkpO1xufVxuXG5HZW5lcmljSG9vay53cml0ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgc3RhdGUpIHtcbiAgICBpZiAoIW5vZGVbaG9va19zdGF0ZV9rZXldKSB7XG4gICAgICAgIG5vZGVbaG9va19zdGF0ZV9rZXldID0ge307XG4gICAgfVxuICAgIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXSA9IHN0YXRlO1xufVxuXG5HZW5lcmljSG9vay5yZWFkX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgcmV0dXJuIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2sucmVtb3ZlX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgZGVsZXRlIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbiA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgIHJldHVybiBmcm9tIGluc3RhbmNlb2YgdGhpcyAmJiB0byBpbnN0YW5jZW9mIHRoaXMgJiYgZnJvbS5pZCA9PT0gdG8uaWQgJiYgdG8udXBkYXRlO1xufTtcblxuR2VuZXJpY0hvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHByZXYpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbihwcmV2LCB0aGlzKSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBHZW5lcmljSG9vay5yZWFkX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICAgICAgc3RhdGUgPSB0aGlzLnVwZGF0ZShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLndyaXRlX3N0YXRlKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5pbml0KG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH1cbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIG5leHQpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbih0aGlzLCBuZXh0KSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nLCB0aGUgaW1wZW5kaW5nIFtob29rXSB3aWxsIGhhbmRsZSB0aGUgY2FsbCB0byB1cGRhdGUuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgfVxufTtcblxuam9vX2dsb2JhbF9vYmplY3QuR2VuZXJpY0hvb2sgPSBHZW5lcmljSG9vaztcbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCh2KSB7XG4gIHYgPSB2IC0gKCh2ID4+PiAxKSAmIDB4NTU1NTU1NTUpO1xuICB2ID0gKHYgJiAweDMzMzMzMzMzKSArICgodiA+Pj4gMikgJiAweDMzMzMzMzMzKTtcbiAgcmV0dXJuICgodiArICh2ID4+PiA0KSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+PiAyNDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MgY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zKHgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4bih4KSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NseiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCkge1xuICB2YXIgbiA9IDMyO1xuICB2YXIgeTtcbiAgeSA9IHggPj4xNjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDg7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0geCA+PiA0OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDE7IGlmICh5ICE9IDApIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSB4O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY2x6KHgpIHtcbiAgdmFyIG4gPSA2NDtcbiAgdmFyIHk7XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTMyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMSk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0gY2FtbF9pbnQ2NF90b19pbnQzMih4KTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpIHtcbiAgaWYgKHggPT09IDApIHsgcmV0dXJuIDMyOyB9XG4gIHZhciBuID0gMTtcbiAgaWYgKCAoeCAmIDB4MDAwMEZGRkYpID09PSAwKSB7IG4gPSBuICsgMTY7IHggPSB4ID4+IDE2OyB9XG4gIGlmICggKHggJiAweDAwMDAwMEZGKSA9PT0gMCkgeyBuID0gbiArICA4OyB4ID0geCA+PiAgODsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwRikgPT09IDApIHsgbiA9IG4gKyAgNDsgeCA9IHggPj4gIDQ7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMDMpID09PSAwKSB7IG4gPSBuICsgIDI7IHggPSB4ID4+ICAyOyB9XG4gIHJldHVybiBuIC0gKHggJiAxKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FuZCwgY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY3R6KHgpIHtcbiAgaWYgKGNhbWxfaW50NjRfaXNfemVybyh4KSkgeyByZXR1cm4gNjQ7IH1cbiAgdmFyIG4gPSAxO1xuICBmdW5jdGlvbiBpc196ZXJvICh4KSAgICB7IHJldHVybiBjYW1sX2ludDY0X2lzX3plcm8oeCk7IH1cbiAgZnVuY3Rpb24gbGFuZCAoeCx5KSAgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9hbmQoeCwgeSk7IH1cbiAgZnVuY3Rpb24gc21hbGxfaW50NjQoeCkgeyByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoeCwwLDApOyB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMHhGRkZGRkYsIDB4MDAwMEZGLCAweDAwMDApKSkpIHtcbiAgICBuID0gbiArIDMyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwRkZGRikpKSkge1xuICAgIG4gPSBuICsgMTY7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMEZGKSkpKSB7XG4gICAgbiA9IG4gKyAgODsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwRikpKSkge1xuICAgIG4gPSBuICsgIDQ7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDMpKSkpIHtcbiAgICBuID0gbiArICAyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgfVxuICByZXR1cm4gbiAtIChjYW1sX2ludDY0X3RvX2ludDMyKGNhbWxfaW50NjRfYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAxKSkpKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSAxO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWV4cG9uZW50PT0wKSB7XG4gICAgbXVsWzFdID0gKG11bFsxXSAqIG11bFszXSkgfCAwO1xuICAgIG11bFsyXSA9IChtdWxbMV0gKiBtdWxbMV0pIHwgMDtcbiAgICBtdWxbM10gPSAobXVsWzJdICogbXVsWzFdKSB8IDA7XG4gICAgcmVzID0gKHJlcyAqIG11bFtleHBvbmVudCAmIDNdKSB8IDA7XG4gICAgZXhwb25lbnQgPSBleHBvbmVudCA+PiAyO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKDEsMCk7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKGV4cG9uZW50KSkge1xuICAgIG11bFsxXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzNdKTtcbiAgICBtdWxbMl0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFsxXSk7XG4gICAgbXVsWzNdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzJdLCBtdWxbMV0pO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfbXVsKHJlcywgbXVsW2NhbWxfaW50NjRfbG8zMihleHBvbmVudCkgJiAzXSk7XG4gICAgZXhwb25lbnQgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKGV4cG9uZW50LCAyKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAscylcbn1cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9kb3VibGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX2RvdWJsZShkKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAsZCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfYW1fdGVzdGluZyBjb25zdFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBCYXNlX2FtX3Rlc3RpbmcoeCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jc2VsX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2NzZWxfdmFsdWUodl9jb25kLCB2X3RydWUsIHZfZmFsc2UpIHtcbiAgICBpZiAodl9jb25kKVxuICAgICAgICByZXR1cm4gdl90cnVlO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHZfZmFsc2U7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfdW5zYWZlX2NyZWF0ZV9sb2NhbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXNcbmZ1bmN0aW9uIEJhc2VfdW5zYWZlX2NyZWF0ZV9sb2NhbF9ieXRlcyh2X2xlbikge1xuICAgIC8vIFRoaXMgZG9lcyBhIHJlZHVuZGFudCBib3VuZHMgY2hlY2sgYW5kIChzaW5jZSB0aGlzIGlzXG4gICAgLy8gamF2YXNjcmlwdCkgZG9lc24ndCBhbGxvY2F0ZSBsb2NhbGx5LCBidXQgdGhhdCdzIGZpbmUuXG4gICAgcmV0dXJuIGNhbWxfY3JlYXRlX2J5dGVzKHZfbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2xvY2FsX3ZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV92ZWN0XG5mdW5jdGlvbiBjYW1sX21ha2VfbG9jYWxfdmVjdCh2X2xlbiwgdl9lbHQpIHtcbiAgICAvLyBJbiBqYXZhc2NyaXB0IHRoZXJlJ3Mgbm8gbG9jYWwgYWxsb2NhdGlvbi5cbiAgICByZXR1cm4gY2FtbF9tYWtlX3ZlY3QgKHZfbGVuLCB2X2VsdCk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2luZml4XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2luZml4ICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYgKHgpIHsgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIFt4XSkgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG5mdW5jdGlvbiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwKHgsaSxvbGQsbil7XG4gIGlmKHhbaSsxXSA9PSBvbGQpIHtcbiAgICB4W2krMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfc2hhcmVkKHgpe1xuICByZXR1cm4gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3VwZGF0ZV90YWcoYixvLG4pIHtcbiAgICBpZihiWzBdPT1vKSB7IGJbMF0gPSBuOyByZXR1cm4gMSB9XG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmcobykge1xuICBpZiAoKG8gaW5zdGFuY2VvZiBBcnJheSkgJiYgb1swXSA9PSAob1swXSA+Pj4gMCkgJiZcbiAgICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4gIGZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjUwKTtcbiAgcmV0dXJuIDA7IC8vIHVuaXRcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3JlYWRfcmVzdWx0KG8pIHtcbiAgcmV0dXJuIChjYW1sX29ial90YWcobykgPT0gMjUwKT9vWzFdOm87XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246IDwgNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gKHQgPT0gMjQ1KSA/IDEgOiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT0gXCIlZFwiKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiK2kpO1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChpIDwgMCkgeyBpZiAoZi5zaWduZWRjb252KSB7IGYuc2lnbiA9IC0xOyBpID0gLWk7IH0gZWxzZSBpID4+Pj0gMDsgfVxuICB2YXIgcyA9IGkudG9TdHJpbmcoZi5iYXNlKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBzLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIHMgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBzO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKSB7XG4gIHZhciBpID0gMCwgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLCBiYXNlID0gMTAsIHNpZ24gPSAxO1xuICBpZiAobGVuID4gMCkge1xuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpKSB7XG4gICAgY2FzZSA0NTogaSsrOyBzaWduID0gLTE7IGJyZWFrO1xuICAgIGNhc2UgNDM6IGkrKzsgc2lnbiA9IDE7IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PSA0OClcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpKSB7XG4gICAgY2FzZSAxMjA6IGNhc2UgODg6IGJhc2UgPSAxNjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExMTogY2FzZSA3OTogYmFzZSA9ICA4OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgIDk4OiBjYXNlIDY2OiBiYXNlID0gIDI7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTc6IGNhc2UgODU6IGkgKz0gMjsgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gW2ksIHNpZ24sIGJhc2VdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2RpZ2l0XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2RpZ2l0KGMpIHtcbiAgaWYgKGMgPj0gNDggJiYgYyA8PSA1NykgIHJldHVybiBjIC0gNDg7XG4gIGlmIChjID49IDY1ICYmIGMgPD0gOTApICByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyAocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgdGhyZXNob2xkID0gLTEgPj4+IDA7XG4gIHZhciBjID0gKGkgPCBsZW4pP2NhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk6MDtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGQ7XG4gIGZvciAoaSsrO2k8bGVuO2krKykge1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAvLyBGb3IgYmFzZSBkaWZmZXJlbnQgZnJvbSAxMCwgd2UgZXhwZWN0IGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uLFxuICAvLyBoZW5jZSBhbnkgdmFsdWUgb2YgJ3JlcycgKGxlc3MgdGhhbiAndGhyZXNob2xkJykgaXMgYWNjZXB0YWJsZS5cbiAgLy8gQnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGUgcmVzdWx0IGJhY2sgdG8gYSBzaWduZWQgaW50ZWdlci5cbiAgcmVzID0gc2lnbiAqIHJlcztcbiAgaWYgKChiYXNlID09IDEwKSAmJiAoKHJlcyB8IDApICE9IHJlcykpXG4gICAgLyogU2lnbmVkIHJlcHJlc2VudGF0aW9uIGV4cGVjdGVkLCBhbGxvdyAtMl4obmJpdHMtMSkgdG8gMl4obmJpdHMtMSkgLSAxICovXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX211bCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tdWwoYSxiKXtcbiAgcmV0dXJuIE1hdGguaW11bChhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RpdlxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9kaXYoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiAoeC95KXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9tb2QoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiB4JXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNlxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoKCh4ICYgMHgwMEZGKSA8PCA4KSB8XG4gICAgICAgICAgICgoeCAmIDB4RkYwMCkgPj4gOCkpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYnN3YXBcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkge1xuICByZXR1cm4gKCgoeCAmIDB4MDAwMDAwRkYpIDw8IDI0KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMDAwRkYwMCkgPDwgOCkgfFxuICAgICAgICAgICgoeCAmIDB4MDBGRjAwMDApID4+PiA4KSB8XG4gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4+IDI0KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX3VuaXZfcGFyYW0gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246IDwgNC4xMlxuZnVuY3Rpb24gY2FtbF9oYXNoX3VuaXZfcGFyYW0gKGNvdW50LCBsaW1pdCwgb2JqKSB7XG4gIHZhciBoYXNoX2FjY3UgPSAwO1xuICBmdW5jdGlvbiBoYXNoX2F1eCAob2JqKSB7XG4gICAgbGltaXQgLS07XG4gICAgaWYgKGNvdW50IDwgMCB8fCBsaW1pdCA8IDApIHJldHVybjtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkgJiYgb2JqWzBdID09PSAob2JqWzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKG9ialswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqWzJdKSB8IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgbGltaXQrKzsgaGFzaF9hdXgob2JqKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgb2JqWzBdKSB8IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvYmoubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgaGFzaF9hdXggKG9ialtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKG9iaikpIHtcbiAgICAgIGNvdW50IC0tO1xuICAgICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQob2JqKTtcbiAgICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGZvciAodmFyIGIgPSBjb250ZW50LCBsID0gYi5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgICAgZm9yICh2YXIgYSA9IGNvbnRlbnQsIGwgPSBhLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYVtpXSkgfCAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcob2JqKSkge1xuICAgICAgdmFyIGpzYnl0ZXMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9iaik7XG4gICAgICBmb3IgKHZhciBiID0ganNieXRlcywgbCA9IGpzYnl0ZXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmb3IgKHZhciBiID0gb2JqLCBsID0gb2JqLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSAob2JqfDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBjb3VudCAtLTtcbiAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9iaikgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSArb2JqKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgY291bnQtLTtcbiAgICAgIHZhciBwID0gY2FtbF9pbnQ2NF90b19ieXRlcyAoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IChvYmopKTtcbiAgICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgcFtpXSkgfCAwO1xuICAgIH0gZWxzZSBpZihvYmogJiYgb2JqLmNhbWxfY3VzdG9tKSB7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoID0gY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaChvYmopIHwgMDtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgaCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYXNoX2F1eCAob2JqKTtcbiAgcmV0dXJuIGhhc2hfYWNjdSAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsZCkge1xuICBkID0gY2FtbF9tdWwoZCwgMHhjYzllMmQ1MXwwKTtcbiAgZCA9ICgoZCA8PCAxNSkgfCAoZCA+Pj4gKDMyLTE1KSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9ICgoaCA8PCAxMykgfCAoaCA+Pj4gKDMyLTEzKSkpOyAgIC8vUk9UTDMyKGgsIDEzKTtcbiAgcmV0dXJuICgoKGggKyAoaCA8PCAyKSl8MCkgKyAoMHhlNjU0NmI2NHwwKSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmluYWwoaCkge1xuICBoIF49IGggPj4+IDE2O1xuICBoID0gY2FtbF9tdWwgKGgsIDB4ODVlYmNhNmJ8MCk7XG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPSBjYW1sX211bCAoaCwgMHhjMmIyYWUzNXwwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9oYXNoX21peF9pbnQ2NFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9mbG9hdCAoaCwgdjApIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50NjQoaCwgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh2MCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludDY0IChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gcy5jaGFyQ29kZUF0KGkpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCA4KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMikgPDwgMTYpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSszKSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHMuY2hhckNvZGVBdChpKzIpIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gcy5jaGFyQ29kZUF0KGkrMSkgPDwgODtcbiAgY2FzZSAxOlxuICAgIHcgfD0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHNbaV1cbiAgICAgIHwgKHNbaSsxXSA8PCA4KVxuICAgICAgfCAoc1tpKzJdIDw8IDE2KVxuICAgICAgfCAoc1tpKzNdIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gc1tpKzJdIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gc1tpKzFdIDw8IDg7XG4gIGNhc2UgMTogdyB8PSBzW2ldO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlcyhoLCB2KSB7XG4gIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHYpO1xuICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpXG4gIGVsc2UgLyogQVJSQVkgKi9cbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgY29udGVudCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHYpKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoIChjb3VudCwgbGltaXQsIHNlZWQsIG9iaikge1xuICB2YXIgcXVldWUsIHJkLCB3ciwgc3osIG51bSwgaCwgdiwgaSwgbGVuO1xuICBzeiA9IGxpbWl0O1xuICBpZiAoc3ogPCAwIHx8IHN6ID4gMjU2KSBzeiA9IDI1NjtcbiAgbnVtID0gY291bnQ7XG4gIGggPSBzZWVkO1xuICBxdWV1ZSA9IFtvYmpdOyByZCA9IDA7IHdyID0gMTtcbiAgd2hpbGUgKHJkIDwgd3IgJiYgbnVtID4gMCkge1xuICAgIHYgPSBxdWV1ZVtyZCsrXTtcbiAgICBpZiAodiAmJiB2LmNhbWxfY3VzdG9tKXtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50IChoLCBoaCk7XG4gICAgICAgIG51bSAtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKHZbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHZbMl0pO1xuICAgICAgICBudW0tLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKSB7XG4gICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdGFnKTtcbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gdi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgcXVldWVbd3IrK10gPSB2W2ldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodnwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHYrdisxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLHYpO1xuICAgICAgbnVtLS07XG4gICAgfVxuICB9XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWwsIGNhbWxfaGFzaF9taXhfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19oYXNoKGgsIHYpe1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdik7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGpzb29fZmxvb3JfbG9nMlxudmFyIGxvZzJfb2sgPSBNYXRoLmxvZzIgJiYgTWF0aC5sb2cyKDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3KSA9PSAxMDIwXG5mdW5jdGlvbiBqc29vX2Zsb29yX2xvZzIoeCkge1xuICBpZihsb2cyX29rKSByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpXG4gIHZhciBpID0gMDtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC1JbmZpbml0eTtcbiAgaWYoeD49MSkge3doaWxlICh4Pj0yKSB7eC89MjsgaSsrfSB9XG4gIGVsc2Uge3doaWxlICh4IDwgMSkge3gqPTI7IGktLX0gfTtcbiAgcmV0dXJuIGk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMSwgMCwgMHg3ZmYwKTtcbiAgICBpZiAoeCA+IDApXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHg3ZmYwKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweGZmZjApXG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8weDgwMDA6KHg+PTApPzA6MHg4MDAwO1xuICBpZiAoc2lnbikgeCA9IC14O1xuICAvLyBJbnQ2NC5iaXRzX29mX2Zsb2F0IDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3ID0gMHg3ZmIwMDAwMDAwMDAwMDAwTFxuICAvLyB1c2luZyBNYXRoLkxPRzJFKk1hdGgubG9nKHgpIGluIHBsYWNlIG9mIE1hdGgubG9nMiByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3RcbiAgdmFyIGV4cCA9IGpzb29fZmxvb3JfbG9nMih4KSArIDEwMjM7XG4gIGlmIChleHAgPD0gMCkge1xuICAgIGV4cCA9IDA7XG4gICAgeCAvPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgfSBlbHNlIHtcbiAgICB4IC89IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICAgIGlmICh4IDwgMTYpIHtcbiAgICAgIHggKj0gMjsgZXhwIC09MTsgfVxuICAgIGlmIChleHAgPT0gMCkge1xuICAgICAgeCAvPSAyOyB9XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLDI0KTtcbiAgdmFyIHIzID0geHwwO1xuICB4ID0gKHggLSByMykgKiBrO1xuICB2YXIgcjIgPSB4fDA7XG4gIHggPSAoeCAtIHIyKSAqIGs7XG4gIHZhciByMSA9IHh8MDtcbiAgcjMgPSAocjMgJjB4ZikgfCBzaWduIHwgZXhwIDw8IDQ7XG4gIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShyMSwgcjIsIHIzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAoeCkge1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KDEpO1xuICBmbG9hdDMyYVswXSA9IHg7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KDEpO1xuICBpbnQzMmFbMF0gPSB4O1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyYS5idWZmZXIpO1xuICByZXR1cm4gZmxvYXQzMmFbMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2xhc3NpZnlfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2xhc3NpZnlfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIGlmIChNYXRoLmFicyh4KSA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCkgcmV0dXJuIDA7XG4gICAgaWYgKHggIT0gMCkgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDI7XG4gIH1cbiAgcmV0dXJuIGlzTmFOKHgpPzQ6Mztcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbW9kZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tb2RmX2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICB2YXIgbmVnID0gKDEveCkgPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IgKHgpO1xuICAgIHZhciBmID0geCAtIGk7XG4gICAgaWYgKG5lZykgeyBpID0gLWk7IGYgPSAtZjsgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKGlzTmFOICh4KSkgcmV0dXJuIFswLCBOYU4sIE5hTl07XG4gIHJldHVybiBbMCwgMS94LCB4XTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbGRleHBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbGRleHBfZmxvYXQgKHgsZXhwKSB7XG4gIGV4cCB8PSAwO1xuICBpZiAoZXhwID4gMTAyMykge1xuICAgIGV4cCAtPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgaWYgKGV4cCA+IDEwMjMpIHsgIC8vIGluIGNhc2UgeCBpcyBzdWJub3JtYWxcbiAgICAgIGV4cCAtPSAxMDIzO1xuICAgICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICB9XG4gIH1cbiAgaWYgKGV4cCA8IC0xMDIzKSB7XG4gICAgZXhwICs9IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7XG4gIH1cbiAgeCAqPSBNYXRoLnBvdygyLCBleHApO1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZnJleHBfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9mcmV4cF9mbG9hdCAoeCkge1xuICBpZiAoKHggPT0gMCkgfHwgIWlzRmluaXRlKHgpKSByZXR1cm4gWzAsIHgsIDBdO1xuICB2YXIgbmVnID0geCA8IDA7XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywganNvb19mbG9vcl9sb2cyKHgpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwtZXhwKTtcbiAgd2hpbGUgKHggPCAwLjUpIHtcbiAgICB4ICo9IDI7XG4gICAgZXhwLS07XG4gIH1cbiAgd2hpbGUgKHggPj0gMSkge1xuICAgIHggKj0gMC41O1xuICAgIGV4cCsrO1xuICB9XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUgKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHJldHVybiAwO1xuICBpZiAoeCA8IHkpIHJldHVybiAtMTtcbiAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgaWYgKHggPT09IHgpIHJldHVybiAxO1xuICBpZiAoeSA9PT0geSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb3B5c2lnbl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3B5c2lnbl9mbG9hdCAoeCwgeSkge1xuICBpZiAoeSA9PSAwKSB5ID0gMSAvIHk7XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgcmV0dXJuICh5IDwgMCk/KC14KTp4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NpZ25iaXRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2lnbmJpdF9mbG9hdCh4KSB7XG4gIGlmICh4ID09IDApIHggPSAxIC8geDtcbiAgcmV0dXJuICh4IDwgMCk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4cG0xX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cG0xX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmV4cG0xKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2V4cDJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLnBvdygyLCB4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxcF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxcF9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzFwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzIoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaHlwb3RfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaHlwb3RfZmxvYXQgKHgsIHkpIHsgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMTBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMTBfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgubG9nMTAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYWNvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYWNvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYWNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXNpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXNpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF90YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXRhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXRhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcm91bmRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfcm91bmRfZmxvYXQgKHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4gKHggLSB5ID49IDAuNSk/KHkgKyAxKTp5XG4gIH0gZWxzZSB7XG4gICAgdmFyIHkgPSBNYXRoLmNlaWwoeCk7XG4gICAgcmV0dXJuICh5IC0geCA+PSAwLjUpPyh5IC0gMSk6eVxuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgaWYoc3ltYikge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBzeW1iLmxlbmd0aDsgaSsrKXtcbiAgICAgIHJbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3ltYltpXVsxXSldID0gc3ltYltpXVsyXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmIChuYW1lX29wdCkge1xuICAgIHZhciBuYW1lID0gbmFtZV9vcHQ7XG4gICAgaWYoZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKSB7XG4gICAgICBuID0gY2FtbF9jYWxsYmFjayhnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MsIFtuYW1lXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4KSB7XG4gICAgICAgIGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4ID0gY2FtbF9idWlsZF9zeW1ib2xzKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scylcbiAgICAgIH1cbiAgICAgIHZhciBuaWQgPSBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeFtuYW1lXVxuICAgICAgaWYobmlkID49IDApXG4gICAgICAgIG4gPSBuaWRcbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9yZWdpc3Rlcl9nbG9iYWw6IGNhbm5vdCBsb2NhdGUgXCIgKyBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHModW5pdCkgeyByZXR1cm4gMCB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBBbiBPQ2FtbCBzdHJpbmcgaXMgYW4gb2JqZWN0IHdpdGggdGhyZWUgZmllbGRzOlxuLy8gLSB0YWcgJ3QnXG4vLyAtIGxlbmd0aCAnbCdcbi8vIC0gY29udGVudHMgJ2MnXG4vL1xuLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgY2FuIGJlIGVpdGhlciBhIEphdmFTY3JpcHQgYXJyYXkgb3Jcbi8vIGEgSmF2YVNjcmlwdCBzdHJpbmcuIFRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgY2FuIGJlIGxlc3MgdGhhbiB0aGVcbi8vIGxlbmd0aCBvZiB0aGUgT0NhbWwgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHJlbWFpbmluZyBieXRlcyBhcmVcbi8vIGFzc3VtZWQgdG8gYmUgemVyb2VzLiBBcnJheXMgYXJlIG11dGFibGUgYnV0IGNvbnN1bWVzIG1vcmUgbWVtb3J5XG4vLyB0aGFuIHN0cmluZ3MuIEEgY29tbW9uIHBhdHRlcm4gaXMgdG8gc3RhcnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgYW5kXG4vLyBwcm9ncmVzc2l2ZWx5IGZpbGwgaXQgZnJvbSB0aGUgc3RhcnQuIFBhcnRpYWwgc3RyaW5ncyBtYWtlcyBpdFxuLy8gcG9zc2libGUgdG8gaW1wbGVtZW50IHRoaXMgZWZmaWNpZW50bHkuXG4vL1xuLy8gV2hlbiBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIFVURi0xNiwgd2Uga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZVxuLy8gc3RyaW5nIGlzIGNvbXBvc2VkIG9ubHkgb2YgQVNDSUkgY2hhcmFjdGVycyAoaW4gd2hpY2ggY2FzZSwgbm9cbi8vIGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkKSBvciBub3QuXG4vL1xuLy8gVGhlIHN0cmluZyB0YWcgY2FuIHRodXMgdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi8vICAgZnVsbCBzdHJpbmcgICAgIEJZVEUgfCBVTktOT1dOOiAgICAgIDBcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBBU0NJSTogICAgICAgIDlcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBOT1RfQVNDSUk6ICAgIDhcbi8vICAgc3RyaW5nIHByZWZpeCAgIFBBUlRJQUw6ICAgICAgICAgICAgIDJcbi8vICAgYXJyYXkgICAgICAgICAgIEFSUkFZOiAgICAgICAgICAgICAgIDRcbi8vXG4vLyBPbmUgY2FuIHVzZSBiaXQgbWFza2luZyB0byBkaXNjcmltaW5hdGUgdGhlc2UgZGlmZmVyZW50IGNhc2VzOlxuLy8gICBrbm93bl9lbmNvZGluZyh4KSA9IHgmOFxuLy8gICBpc19hc2NpaSh4KSA9ICAgICAgIHgmMVxuLy8gICBraW5kKHgpID0gICAgICAgICAgIHgmNlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfc3RyX3JlcGVhdChuLCBzKSB7XG4gIGlmKG4gPT0gMCkgcmV0dXJuIFwiXCI7XG4gIGlmIChzLnJlcGVhdCkge3JldHVybiBzLnJlcGVhdChuKTt9IC8vIEVDTUFzY3JpcHQgNiBhbmQgRmlyZWZveCAyNCtcbiAgdmFyIHIgPSBcIlwiLCBsID0gMDtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKG4gJiAxKSByICs9IHM7XG4gICAgbiA+Pj0gMTtcbiAgICBpZiAobiA9PSAwKSByZXR1cm4gcjtcbiAgICBzICs9IHM7XG4gICAgbCsrO1xuICAgIGlmIChsID09IDkpIHtcbiAgICAgIHMuc2xpY2UoMCwxKTsgLy8gZmxhdHRlbiB0aGUgc3RyaW5nXG4gICAgICAvLyB0aGVuLCB0aGUgZmxhdHRlbmluZyBvZiB0aGUgd2hvbGUgc3RyaW5nIHdpbGwgYmUgZmFzdGVyLFxuICAgICAgLy8gYXMgaXQgd2lsbCBiZSBjb21wb3NlZCBvZiBsYXJnZXIgcGllY2VzXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuLy9XZWFrZGVmXG4vLyBQcmUgRUNNQVNjcmlwdCA1LCBbYXBwbHldIHdvdWxkIG5vdCBzdXBwb3J0IGFycmF5LWxpa2Ugb2JqZWN0LlxuLy8gSW4gc3VjaCBzZXR1cCwgVHlwZWRfYXJyYXkgd291bGQgYmUgaW1wbGVtZW50ZWQgYXMgcG9seWZpbGwsIGFuZCBbZi5hcHBseV0gd291bGRcbi8vIGZhaWwgaGVyZS4gTWFyayB0aGUgcHJpbWl0aXZlIGFzIFdlYWtkZWYsIHNvIHRoYXQgcGVvcGxlIGNhbiBvdmVycmlkZSBpdCBlYXNpbHkuXG5mdW5jdGlvbiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09IGEubGVuZ3RoKSByZXR1cm4gZi5hcHBseSAobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCxsZW4tPTEwMjQpXG4gICAgcyArPSBmLmFwcGx5IChudWxsLCBhLnNsaWNlKGksaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmOF9vZl91dGYxNlxuZnVuY3Rpb24gY2FtbF91dGY4X29mX3V0ZjE2KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBiLCBjLCBkLCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYyA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYyA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhjMCB8IChjID4+IDYpKTtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjIDwgMHhkODAwIHx8IGMgPj0gMHhkZmZmKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlMCB8IChjID4+IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA+PSAweGRiZmYgfHwgaSArIDEgPT0gbCB8fFxuICAgICAgICAgICAgICAgKGQgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBkID4gMHhkZmZmKSB7XG4gICAgICAvLyBVbm1hdGNoZWQgc3Vycm9nYXRlIHBhaXIsIHJlcGxhY2VkIGJ5IFxcdWZmZmQgKHJlcGxhY2VtZW50IGNoYXJhY3RlcilcbiAgICAgIHQgKz0gXCJcXHhlZlxceGJmXFx4YmRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgaSsrO1xuICAgICAgYyA9IChjIDw8IDEwKSArIGQgLSAweDM1ZmRjMDA7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmMCB8IChjID4+IDE4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDEyKSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfVxuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBjYW1sX3V0ZjE2X29mX3V0Zjgocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IFwiXCIsIGMsIGMxLCBjMiwgdiwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjMSA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYzEgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgdiA9IDE7XG4gICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgIGMgPSBjMiArIChjMSA8PCA2KTtcbiAgICAgIGlmIChjMSA8IDB4ZTApIHtcbiAgICAgICAgdiA9IGMgLSAweDMwODA7XG4gICAgICAgIGlmICh2IDwgMHg4MCkgdiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ID0gMjtcbiAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgICAgICBjID0gYzIgKyAoYyA8PCA2KTtcbiAgICAgICAgICBpZiAoYzEgPCAweGYwKSB7XG4gICAgICAgICAgICB2ID0gYyAtIDB4ZTIwODA7XG4gICAgICAgICAgICBpZiAoKHYgPCAweDgwMCkgfHwgKCh2ID49IDB4ZDdmZikgJiYgKHYgPCAweGUwMDApKSkgdiA9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHYgPSAzO1xuICAgICAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkgJiZcbiAgICAgICAgICAgICAgICAoYzEgPCAweGY1KSkge1xuICAgICAgICAgICAgICB2ID0gYzIgLSAweDNjODIwODAgKyAoYyA8PCA2KTtcbiAgICAgICAgICAgICAgaWYgKHYgPCAweDEwMDAwIHx8IHYgPiAweDEwZmZmZikgdiA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2IDwgNCkgeyAvLyBJbnZhbGlkIHNlcXVlbmNlXG4gICAgICBpIC09IHY7XG4gICAgICB0ICs9IFwiXFx1ZmZmZFwiO1xuICAgIH0gZWxzZSBpZiAodiA+IDB4ZmZmZilcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ3YzAgKyAodiA+PiAxMCksIDB4ZGMwMCArICh2ICYgMHgzRkYpKVxuICAgIGVsc2VcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh2KTtcbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkgKHMpIHtcbiAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBnZXRzIGJldHRlciBhdCBhcm91bmQgdGhpcyBwb2ludCBmb3IgYWxsIGJyb3dzZXJzXG4gIGlmIChzLmxlbmd0aCA8IDI0KSB7XG4gICAgLy8gU3BpZGVybW9ua2V5IGdldHMgbXVjaCBzbG93ZXIgd2hlbiBzLmxlbmd0aCA+PSAyNCAob24gNjQgYml0IGFyY2hzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgaWYgKHMuY2hhckNvZGVBdChpKSA+IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2VcbiAgICByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSkge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgcmV0dXJuIHMuY1tpXVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgLy8gVGhlIE9DYW1sIGNvbXBpbGVyIHVzZXMgQ2hhci51bnNhZmVfY2hyIG9uIGludGVnZXJzIGxhcmdlciB0aGFuIDI1NSFcbiAgYyAmPSAweGZmO1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIHtcbiAgICBpZiAoaSA9PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICBpZiAoaSArIDEgPT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAzKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjIgPSAweEZGICYgaTE2ID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMTY7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDE2XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQxNlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhGRiAmIGkzMiA+PiAyNCxcbiAgICAgIGIzID0gMHhGRiAmIGkzMiA+PiAxNixcbiAgICAgIGIyID0gMHhGRiAmIGkzMiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAzLCBiNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MzJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKykge1xuICAgIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDY0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyAocykge1xuICB2YXIgdGFnID0gOSAvKiBCWVRFUyB8IEFTQ0lJICovO1xuICBpZiAoIWpzb29faXNfYXNjaWkocykpXG4gICAgdGFnID0gOCAvKiBCWVRFUyB8IE5PVF9BU0NJSSAqLywgcyA9IGNhbWxfdXRmOF9vZl91dGYxNihzKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRhZywgcywgcy5sZW5ndGgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sQnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gTWxCeXRlcyAodGFnLCBjb250ZW50cywgbGVuZ3RoKSB7XG4gIHRoaXMudD10YWc7IHRoaXMuYz1jb250ZW50czsgdGhpcy5sPWxlbmd0aDtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcbiAgc3dpdGNoICh0aGlzLnQpIHtcbiAgY2FzZSA5OiAvKkJZVEVTIHwgQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyh0aGlzKTtcbiAgY2FzZSAwOiAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB7XG4gICAgICB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgcmV0dXJuIHRoaXMuYztcbiAgICB9XG4gICAgdGhpcy50ID0gODsgLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gIGNhc2UgODogLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgfVxufTtcbk1sQnl0ZXMucHJvdG90eXBlLnRvVXRmMTYgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIHIgPSB0aGlzLnRvU3RyaW5nKCk7XG4gIGlmKHRoaXMudCA9PSA5KSByZXR1cm4gclxuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHIpO1xufVxuTWxCeXRlcy5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIGNvbnRlbnQgPSB0aGlzLnQgPT0gNCA/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkocy5sKTtcbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICBpZighIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICBhID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKDQsYSxhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfY29tcGFyZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPy0xOihzMS5jID4gczIuYyk/MTowO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jID09IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX3N0cmluZ19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9ieXRlc19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPD0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMixzMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczIsczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT0gMCAmJiAobCA+PSBzLmwgfHwgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbCA+PSBzLmMubGVuZ3RoKSkpIHtcbiAgICAgIGlmIChjID09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0IChsLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgICAgICAgcy50ID0gKGwgPT0gcy5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JsaXRfYnl0ZXMoczEsIGkxLCBzMiwgaTIsIGxlbikge1xuICBpZiAobGVuID09IDApIHJldHVybiAwO1xuICBpZiAoKGkyID09IDApICYmXG4gICAgICAobGVuID49IHMyLmwgfHwgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpKSB7XG4gICAgczIuYyA9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2UgaWYgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09IHMyLmMubGVuZ3RoKSB7XG4gICAgczIuYyArPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIHtcbiAgICBpZiAoczIudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsIGMyID0gczIuYztcbiAgICBpZiAoczEudCA9PSA0IC8qIEFSUkFZICovKSB7XG4gICAgICBpZiAoaTIgPD0gaTEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGwgPSBNYXRoLm1pbiAobGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzIgW2kyICsgaV0gPSBjMS5jaGFyQ29kZUF0KGkxICsgaSk7XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2JsaXRfc3RyaW5nKGEsYixjLGQsZSkge1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcoYSksYixjLGQsZSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKSB7IHJldHVybiBzLmwgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29uY2F0KGEsYikgeyByZXR1cm4gYSArIGIgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIE1sQnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChzMSxzMil7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhzMS50LHMxLmMrczIuYyxzMS5sK3MyLmwpXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IEludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IEludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQ7XG4gIGlmICAgICAgKHRhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSBraW5kID0gNTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHZhciB0YSA9XG4gICAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgICAgdGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSA/XG4gICAgICBuZXcgSW50MzJBcnJheSh0YS5idWZmZXIgLHRhLmJ5dGVPZmZzZXQsIHRhLmxlbmd0aCkgOiB0YTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgaWYoZ2xvYmFsVGhpcy5xdWl0KSBnbG9iYWxUaGlzLnF1aXQoY29kZSk7XG4gIC8vbm9kZWpzXG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdClcbiAgICBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdChjb2RlKTtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiRnVuY3Rpb24gJ2V4aXQnIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG4pe1xuICBzd2l0Y2goZXhuWzJdKSB7XG4gIGNhc2UgLTg6IC8vIE1hdGNoX2ZhaWx1cmVcbiAgY2FzZSAtMTE6IC8vIEFzc2VydF9mYWlsdXJlXG4gIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgIHJldHVybiAxO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bil7XG4gIHZhciByID0gXCJcIjtcbiAgaWYoZXhuWzBdID09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZihleG4ubGVuZ3RoID09IDMgJiYgZXhuWzJdWzBdID09IDAgJiYgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG5bMV0pKSB7XG5cbiAgICAgIHZhciBidWNrZXQgPSBleG5bMl07XG4gICAgICB2YXIgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhcnQgPSAyXG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvcih2YXIgaSA9IHN0YXJ0OyBpIDwgYnVja2V0Lmxlbmd0aDsgaSArKyl7XG4gICAgICBpZihpID4gc3RhcnQpIHIrPVwiLCBcIjtcbiAgICAgIHZhciB2ID0gYnVja2V0W2ldXG4gICAgICBpZih0eXBlb2YgdiA9PSBcIm51bWJlclwiKVxuICAgICAgICByKz0gdi50b1N0cmluZygpO1xuICAgICAgZWxzZSBpZih2IGluc3RhbmNlb2YgTWxCeXRlcyl7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYodHlwZW9mIHYgPT0gXCJzdHJpbmdcIil7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgciArPSBcIl9cIjtcbiAgICB9XG4gICAgciArPSBcIilcIlxuICB9IGVsc2UgaWYgKGV4blswXSA9PSAyNDgpe1xuICAgIHIgKz0gZXhuWzFdXG4gIH1cbiAgcmV0dXJuIHJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKXtcbiAgaWYoZXJyIGluc3RhbmNlb2YgQXJyYXkgJiYgKGVyclswXSA9PSAwIHx8IGVyclswXSA9PSAyNDgpKSB7XG4gICAgdmFyIGhhbmRsZXIgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiKTtcbiAgICBpZihoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsZmFsc2VdKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIGNhbWxfY2FsbGJhY2soYXRfZXhpdCwgWzBdKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnKTtcbiAgICAgIGlmKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9zdGF0aWNfZW52XG5mdW5jdGlvbiBjYW1sX3NldF9zdGF0aWNfZW52KGssdil7XG4gIGlmKCFnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudilcbiAgICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudiA9IHt9XG4gIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W2tdID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fc3lzX2dldGVudiAoY29uc3QpXG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5lbnZcbiAgICAgJiYgcHJvY2Vzcy5lbnZbbl0gIT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBwcm9jZXNzLmVudltuXTtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZcbiAgICAgJiYgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl0pXG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKSk7XG4gIGlmKHIgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdXG5cbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmFyZ3ZcbiAgICAgJiYgcHJvY2Vzcy5hcmd2Lmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgYXJndiA9IHByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIil7XG4gICAgdmFyIGNoaWxkX3Byb2Nlc3MgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyk7XG4gICAgaWYoY2hpbGRfcHJvY2VzcyAmJiBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTtcbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpICogMC4wMDE7XG5mdW5jdGlvbiBjYW1sX3N5c190aW1lICgpIHtcbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHJldHVybiBub3cgKiAwLjAwMSAtIGNhbWxfaW5pdGlhbF90aW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW5cbi8vUmVxdWlyZXM6IGNhbWxfc3lzX3RpbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbihiKSB7XG4gIHJldHVybiBjYW1sX3N5c190aW1lKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JhbmRvbV9zZWVkIG11dGFibGVcbi8vVGhlIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBhbiBhcnJheSBzaW5jZSBPQ2FtbCA0LjAuLi5cbmZ1bmN0aW9uIGNhbWxfc3lzX3JhbmRvbV9zZWVkICgpIHtcbiAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgICB2YXIgYSA9IGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSg0KSk7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgIHZhciBhID0gbmV3IEludDMyQXJyYXkoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLmJ1ZmZlcik7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfVxuICB9XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICB2YXIgeCA9IG5vd14weGZmZmZmZmZmKk1hdGgucmFuZG9tKCk7XG4gIHJldHVybiBbMCx4XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2ludF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIGNvbnN0XG4vLyBtYXhfaW50IC8gNCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgb3ZlcmZsb3dcbi8vbGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxOztcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgKCkgeyByZXR1cm4gKDB4N0ZGRkZGRkYvNCkgfCAwO31cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4ICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJVbml4XCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIldpbjMyXCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiAoKSB7IHJldHVybiBvc190eXBlID09IFwiQ3lnd2luXCIgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImpzX29mX29jYW1sXCIpXTtcbn1cblxuLy9Qcm92aWRlczogb3NfdHlwZVxudmFyIG9zX3R5cGUgPSAoZ2xvYmFsVGhpcy5wcm9jZXNzICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PSBcIndpbjMyXCIpID8gXCJDeWd3aW5cIiA6IFwiVW5peFwiO1xuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9jb25maWcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9jb25maWcgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKXtyZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeGRnX2RlZmF1bHRzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF94ZGdfZGVmYXVsdHMoX3VuaXQpIHtcbiAgcmV0dXJuIDA7IC8vIGVtcHR5IGxpc3Rcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmlzRmlsZShyb290LnJlc3QpO1xufVxuLy9BbHdheXNcbi8vUmVxdWlyZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYocHJvY2VzcyAmJiBwcm9jZXNzLm9uKSB7XG4gICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBmdW5jdGlvbiAoZXJyLCBvcmlnaW4pIHtcbiAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycik7XG4gICAgICBwcm9jZXNzLmV4aXQgKDIpO1xuICAgIH0pXG4gIH1cbiAgZWxzZSBpZihnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpe1xuICAgIGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbihldmVudCl7XG4gICAgICBpZihldmVudC5lcnJvcil7XG4gICAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGV2ZW50LmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpO1xuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxudmFyIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKVxuICBpZihyICE9PSB1bmRlZmluZWQpe1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspe1xuICAgICAgaWYobFtpXSA9PSBcImJcIikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IDE7IGJyZWFrIH1cbiAgICAgIGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gKyhsW2ldLnNsaWNlKDIpKX1cbiAgICAgIGVsc2UgY29udGludWU7XG4gICAgfVxuICB9XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIChfdW5pdCkgeyByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKGIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBiOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbnZhciBjYW1sX3N0YWNrX2RlcHRoID0gMDtcblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2NoZWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGhcbmZ1bmN0aW9uIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKSB7XG4gICAgcmV0dXJuIC0tY2FtbF9zdGFja19kZXB0aCA+IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6ICFlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFjaywgY2FtbF93cmFwX2V4Y2VwdGlvbiwgY2FtbF9yZXN1bWVfc3RhY2ssIGNhbWxfZnJlc2hfb29faWQsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnRcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZixhcmdzKSB7XG4gIGZ1bmN0aW9uIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyKGVmZixrLG1zKSB7XG4gICAgLy8gUmVzdW1lcyB0aGUgY29udGludWF0aW9uIGsgYnkgcmFpc2luZyBleGNlcHRpb24gVW5oYW5kbGVkLlxuICAgIGNhbWxfcmVzdW1lX3N0YWNrKGtbMV0sbXMpO1xuICAgIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgICBpZihleG4pIGNhbWxfcmFpc2Vfd2l0aF9hcmcoZXhuLCBlZmYpO1xuICAgIGVsc2Uge1xuICAgICAgZXhuID0gWzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRWZmZWN0LlVuaGFuZGxlZFwiKSwgY2FtbF9mcmVzaF9vb19pZCgwKV07XG4gICAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGV4bik7XG4gICAgfVxuICB9XG4gIHZhciBzYXZlZF9zdGFja19kZXB0aCA9IGNhbWxfc3RhY2tfZGVwdGg7XG4gIHZhciBzYXZlZF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFjaztcbiAgdmFyIHNhdmVkX2ZpYmVyX3N0YWNrID0gY2FtbF9maWJlcl9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2V4bl9zdGFjayA9IDA7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpbMCwgMCwgMCwgdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXJdLCByOntrOjAsIHg6MCwgZTowfX07XG4gICAgdmFyIHJlcyA9IHtqb29fdHJhbXA6IGYsXG4gICAgICAgICAgICAgICBqb29fYXJnczogYXJncy5jb25jYXQoZnVuY3Rpb24gKHgpe3JldHVybiB4O30pfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfZXhuX3N0YWNrKSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICAgICAgICBjYW1sX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrWzJdO1xuICAgICAgICByZXMgPSB7am9vX3RyYW1wOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IFtjYW1sX3dyYXBfZXhjZXB0aW9uKGUpXX07XG4gICAgICB9XG4gICAgfSB3aGlsZShyZXMgJiYgcmVzLmpvb19hcmdzKVxuICB9IGZpbmFsbHkge1xuICAgIGNhbWxfc3RhY2tfZGVwdGggPSBzYXZlZF9zdGFja19kZXB0aDtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHNhdmVkX2V4bl9zdGFjaztcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID0gc2F2ZWRfZmliZXJfc3RhY2s7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJ1c2UtanMtc3RyaW5nXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJlZmZlY3RzXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd3JhcF9leGNlcHRpb24gY29uc3QgKG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfd3JhcF9leGNlcHRpb24oZSkge1xuICBpZiAoRkxBRyhcImV4Y3dyYXBcIikpIHtcbiAgICBpZihlIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZihnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgICBleG4gPSBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgICBlbHNlXG4gICAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICAgIGV4biA9IFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG4gICAgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVycm9yIGF0IGhhbmQsIGxldCdzIHVzZSBpdC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IpXG4gICAgICBleG4uanNfZXJyb3IgPSBlO1xuICAgIHJldHVybiBleG47XG4gIH0gZWxzZVxuICAgIHJldHVybiBlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgaWYoY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcpXG4gICAgcmV0dXJuIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpO1xuICBlbHNlIHJldHVybiBleG5cbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZighZXhuLmpzX2Vycm9yIHx8IGZvcmNlIHx8IGV4blswXSA9PSAyNDgpIGV4bi5qc19lcnJvciA9IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiSnMgZXhjZXB0aW9uIGNvbnRhaW5pbmcgYmFja3RyYWNlXCIpO1xuICByZXR1cm4gZXhuO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIFswLCBleG4uanNfZXJyb3JdOyB9XG4gIHJldHVybiAwO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Jvb2woeCkgeyByZXR1cm4gISF4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHsgcmV0dXJuICt4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fZmxvYXQgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc19mcm9tX2ludDMyXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkgeyByZXR1cm4geHwwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGJbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGxlbjtpKyspIGJbaSsxXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdmFyKHgpIHtcbiAgdmFyIHggPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh4KTtcbiAgLy9DaGVja3MgdGhhdCB4IGhhcyB0aGUgZm9ybSBpZGVudFsuaWRlbnRdKlxuICBpZigheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSl7XG4gICAgY29uc29sZS5lcnJvcihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gW3VuZGVmaW5lZF07XG4gICAgfVxuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZik7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLFt0aGlzLGFyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSArIDEpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSAtIDE7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgcmV0dXJuIChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIC8vIEZ1bmN0aW9ucyBoYXZlIGFuIGFkZGl0aW9uYWwgY29udGludWF0aW9uIHBhcmFtZXRlci4gVGhpcyBzaG91bGRcbiAgLy8gbm90IGJlIHZpc2libGUgd2hlbiBjYWxsaW5nIHRoZW0gZnJvbSBKYXZhU2NyaXB0XG4gIHJldHVybiAoKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKSkgLSAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zdHJpY3RfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfc3RyaWN0X2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX3B1cmVfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QgKGEpIHtcbiAgdmFyIG8gPSB7fTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBhW2ldO1xuICAgIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocFsxXSldID0gcFsyXTtcbiAgfVxuICByZXR1cm4gbztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfY29uc3RhbnRzXG52YXIgY2FtbF9tYXJzaGFsX2NvbnN0YW50cyA9IHtcbiAgUFJFRklYX1NNQUxMX0JMT0NLOiAgICAgICAgIDB4ODAsXG4gIFBSRUZJWF9TTUFMTF9JTlQ6ICAgICAgICAgICAweDQwLFxuICBQUkVGSVhfU01BTExfU1RSSU5HOiAgICAgICAgMHgyMCxcbiAgQ09ERV9JTlQ4OiAgICAgICAgICAgICAgICAgIDB4MDAsXG4gIENPREVfSU5UMTY6ICAgICAgICAgICAgICAgICAweDAxLFxuICBDT0RFX0lOVDMyOiAgICAgICAgICAgICAgICAgMHgwMixcbiAgQ09ERV9JTlQ2NDogICAgICAgICAgICAgICAgIDB4MDMsXG4gIENPREVfU0hBUkVEODogICAgICAgICAgICAgICAweDA0LFxuICBDT0RFX1NIQVJFRDE2OiAgICAgICAgICAgICAgMHgwNSxcbiAgQ09ERV9TSEFSRUQzMjogICAgICAgICAgICAgIDB4MDYsXG4gIENPREVfQkxPQ0szMjogICAgICAgICAgICAgICAweDA4LFxuICBDT0RFX0JMT0NLNjQ6ICAgICAgICAgICAgICAgMHgxMyxcbiAgQ09ERV9TVFJJTkc4OiAgICAgICAgICAgICAgIDB4MDksXG4gIENPREVfU1RSSU5HMzI6ICAgICAgICAgICAgICAweDBBLFxuICBDT0RFX0RPVUJMRV9CSUc6ICAgICAgICAgICAgMHgwQixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAgICAgICAgIDB4MEMsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9CSUc6ICAgICAweDBELFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAgMHgwRSxcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6ICAgIDB4MEYsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOiAweDA3LFxuICBDT0RFX0NPREVQT0lOVEVSOiAgICAgICAgICAgMHgxMCxcbiAgQ09ERV9JTkZJWFBPSU5URVI6ICAgICAgICAgIDB4MTEsXG4gIENPREVfQ1VTVE9NOiAgICAgICAgICAgICAgICAweDEyLFxuICBDT0RFX0NVU1RPTV9MRU46ICAgICAgICAgICAgMHgxOCxcbiAgQ09ERV9DVVNUT01fRklYRUQ6ICAgICAgICAgIDB4MTlcbn1cblxuXG4vL1Byb3ZpZGVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gVUludDhBcnJheVJlYWRlciAocywgaSkgeyB0aGlzLnMgPSBzOyB0aGlzLmkgPSBpOyB9XG5VSW50OEFycmF5UmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK107IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgOCkgfCBzW2kgKyAxXVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQgPj4gMTYpIHwgc1tpICsgMV07XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSh0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIE1sU3RyaW5nUmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7IHRoaXMuaSA9IGk7IH1cbk1sU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0ID4+IDE2KSB8IHMuY2hhckNvZGVBdChpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnMuc3Vic3RyaW5nKGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB2YXIgcyA9IHRoaXMucztcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGJbal0gPSBzLmNoYXJDb2RlQXQoaSArIGopO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IEJpZ1N0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIEJpZ1N0cmluZ1JlYWRlciAoYnMsIGkpIHsgdGhpcy5zID0gYnM7IHRoaXMuaSA9IGk7IH1cbkJpZ1N0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDgpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCAyNCA+PiAxNikgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKSAgICAgICAgICkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBhcnIgPSBuZXcgQXJyYXkobGVuKVxuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKyl7XG4gICAgICBhcnJbal0gPSBjYW1sX2JhX2dldF8xKHRoaXMucywgaStqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldChpKTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIH1cbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9ieXRlcyAoYSkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIChjYW1sX2ludDY0X29mX2J5dGVzIChhKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXJcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAocywgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSwgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzICh0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X21hcnNoYWwod3JpdGVyLCB2LCBzaXplcykge1xuICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgd3JpdGVyLndyaXRlICg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4OyBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzaXplWzBdID0gNDtcbiAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzd2l0Y2ggKHJlYWRlci5yZWFkOHUgKCkpIHtcbiAgY2FzZSAxOlxuICAgIHNpemVbMF0gPSA0O1xuICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgY2FzZSAyOlxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICBkZWZhdWx0OiBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbmF0aXZlIGludGVnZXJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3VubWFyc2hhbCwgY2FtbF9pbnQ2NF9tYXJzaGFsLCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9pbnQzMl91bm1hcnNoYWwsIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXJpYWxpemUsIGNhbWxfYmFfZGVzZXJpYWxpemUsIGNhbWxfYmFfY29tcGFyZSwgY2FtbF9iYV9oYXNoXG52YXIgY2FtbF9jdXN0b21fb3BzID1cbiAgICB7XCJfalwiOiB7XG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgICAgc2VyaWFsaXplICA6IGNhbWxfaW50NjRfbWFyc2hhbCxcbiAgICAgIGZpeGVkX2xlbmd0aCA6IDgsXG4gICAgICBjb21wYXJlIDogY2FtbF9pbnQ2NF9jb21wYXJlLFxuICAgICAgaGFzaCA6IGNhbWxfaW50NjRfaGFzaFxuICAgIH0sXG4gICAgIFwiX2lcIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQzMl91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfblwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyYXlcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycmF5XCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycjAyXCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnIwMlwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9XG4gICAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKSB7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuICB2YXIgbWFnaWMgPSByZWFkZXIucmVhZDMydSAoKVxuICBzd2l0Y2gobWFnaWMpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHJlYWRlci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiKTtcbiAgICBicmVha1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrO1xuICB9XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgaW50ZXJuX29ial90YWJsZSA9IChudW1fb2JqZWN0cyA+IDApP1tdOm51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMgKHJlYWRlcikge1xuICAgIHZhciBjb2RlID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICBpZiAoY29kZSA+PSAweDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLykge1xuICAgICAgaWYgKGNvZGUgPj0gMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLykge1xuICAgICAgICB2YXIgdGFnID0gY29kZSAmIDB4RjtcbiAgICAgICAgdmFyIHNpemUgPSAoY29kZSA+PiA0KSAmIDB4NztcbiAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIChjb2RlICYgMHgzRik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2RlID49IDB4MjAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HICovKSB7XG4gICAgICAgIHZhciBsZW4gPSBjb2RlICYgMHgxRjtcbiAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaChjb2RlKSB7XG4gICAgICAgIGNhc2UgMHgwMDogLy9jc3QuQ09ERV9JTlQ4OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzICgpO1xuICAgICAgICBjYXNlIDB4MDE6IC8vY3N0LkNPREVfSU5UMTY6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzICgpO1xuICAgICAgICBjYXNlIDB4MDI6IC8vY3N0LkNPREVfSU5UMzI6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICAgICAgICBjYXNlIDB4MDM6IC8vY3N0LkNPREVfSU5UNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA0OiAvL2NzdC5DT0RFX1NIQVJFRDg6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDU6IC8vY3N0LkNPREVfU0hBUkVEMTY6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA2OiAvL2NzdC5DT0RFX1NIQVJFRDMyOlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwODogLy9jc3QuQ09ERV9CTE9DSzMyOlxuICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICB2YXIgdGFnID0gaGVhZGVyICYgMHhGRjtcbiAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBkYXRhIGJsb2NrIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA5OiAvL2NzdC5DT0RFX1NUUklORzg6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBBOiAvL2NzdC5DT0RFX1NUUklORzMyOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEM6IC8vY3N0LkNPREVfRE9VQkxFX0xJVFRMRTpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0WzcgLSBpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQjogLy9jc3QuQ09ERV9ET1VCTEVfQklHOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRDogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRjogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMDogLy9jc3QuQ09ERV9DT0RFUE9JTlRFUjpcbiAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBjb2RlIHBvaW50ZXJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgxMjogLy9jc3QuQ09ERV9DVVNUT006XG4gICAgICAgIGNhc2UgMHgxODogLy9jc3QuQ09ERV9DVVNUT01fTEVOOlxuICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgIHZhciBjLCBzID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoKGMgPSByZWFkZXIucmVhZDh1ICgpKSAhPSAwKSBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbc107XG4gICAgICAgICAgdmFyIGV4cGVjdGVkX3NpemU7XG4gICAgICAgICAgaWYoIW9wcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICBzd2l0Y2goY29kZSl7XG4gICAgICAgICAgY2FzZSAweDEyOiAvLyBjc3QuQ09ERV9DVVNUT00gKGRlcHJlY2F0ZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vIGNzdC5DT0RFX0NVU1RPTV9GSVhFRFxuICAgICAgICAgICAgaWYoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZXhwZWN0ZWQgYSBmaXhlZC1zaXplIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE4OiAvLyBjc3QuQ09ERV9DVVNUT01fTEVOXG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTsgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHJlYWRlci5pO1xuICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgIHZhciB2ID0gb3BzLmRlc2VyaWFsaXplKHJlYWRlciwgc2l6ZSk7XG4gICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSBzaXplWzBdKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG1lc3NhZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYoY29tcHJlc3NlZCkge1xuICAgIGlmKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIHZhciBzaXplID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgZCA9IHYubGVuZ3RoO1xuICAgIGlmIChkIDwgc2l6ZSkgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICB2W2RdID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgfVxuICBpZiAodHlwZW9mIG9mcyE9XCJudW1iZXJcIikgb2ZzWzBdID0gcmVhZGVyLmk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMjBcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMTZcblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKHMsIG9mcykge1xuICB2YXIgciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyksIG9mcyk7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoKHIucmVhZDMydSgpKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByLnJlYWQzMnUoKTtcbiAgICBicmVhaztcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGhlYWRlcl9sZW4gLSBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgKyBkYXRhX2xlbjtcbn1cblxuLy9Qcm92aWRlczogTWxPYmplY3RUYWJsZVxudmFyIE1sT2JqZWN0VGFibGU7XG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUuc3RvcmUgPSBmdW5jdGlvbih2KSB7XG4gIHRoaXMubG9va3VwLnNldCh2LCB0aGlzLm9ianMubGVuZ3RoKTtcbiAgdGhpcy5vYmpzLnB1c2godik7XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnJlY2FsbCA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIGkgPSB0aGlzLmxvb2t1cC5nZXQodik7XG4gIHJldHVybiAoaSA9PT0gdW5kZWZpbmVkKVxuICAgID8gdW5kZWZpbmVkIDogdGhpcy5vYmpzLmxlbmd0aCAtIGk7ICAgLyogaW5kZXggaXMgcmVsYXRpdmUgKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IE1sT2JqZWN0VGFibGUsIGNhbWxfbGlzdF90b19qc19hcnJheSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9pc19jb250aW51YXRpb25fdGFnXG52YXIgY2FtbF9vdXRwdXRfdmFsID0gZnVuY3Rpb24gKCl7XG4gIGZ1bmN0aW9uIFdyaXRlciAoKSB7IHRoaXMuY2h1bmsgPSBbXTsgfVxuICBXcml0ZXIucHJvdG90eXBlID0ge1xuICAgIGNodW5rX2lkeDoyMCwgYmxvY2tfbGVuOjAsIG9ial9jb3VudGVyOjAsIHNpemVfMzI6MCwgc2l6ZV82NDowLFxuICAgIHdyaXRlOmZ1bmN0aW9uIChzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfYXQ6ZnVuY3Rpb24gKHBvcywgc2l6ZSwgdmFsdWUpIHtcbiAgICAgIHZhciBwb3MgPSBwb3M7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1twb3MrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfY29kZTpmdW5jdGlvbiAoc2l6ZSwgY29kZSwgdmFsdWUpIHtcbiAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfc2hhcmVkOmZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAoMSA8PCA4KSkgdGhpcy53cml0ZV9jb2RlKDgsIDB4MDQgLypjc3QuQ09ERV9TSEFSRUQ4Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIGlmIChvZmZzZXQgPCAoMSA8PCAxNikpIHRoaXMud3JpdGVfY29kZSgxNiwgMHgwNSAvKmNzdC5DT0RFX1NIQVJFRDE2Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIHRoaXMud3JpdGVfY29kZSgzMiwgMHgwNiAvKmNzdC5DT0RFX1NIQVJFRDMyKi8sIG9mZnNldCk7XG4gICAgfSxcbiAgICBwb3M6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5jaHVua19pZHggfSxcbiAgICBmaW5hbGl6ZTpmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlICgzMiwgMHg4NDk1QTZCRSk7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5ibG9ja19sZW4pO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV8zMik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzY0KTtcbiAgICAgIHJldHVybiB0aGlzLmNodW5rO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHYsIGZsYWdzKSB7XG4gICAgZmxhZ3MgPSBjYW1sX2xpc3RfdG9fanNfYXJyYXkoZmxhZ3MpO1xuXG4gICAgdmFyIG5vX3NoYXJpbmcgPSAoZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSksXG4gICAgICAgIGNsb3N1cmVzID0gIChmbGFncy5pbmRleE9mKDEgLypNYXJzaGFsLkNsb3N1cmVzKi8pICE9PSAtMSk7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoXCIrdHlwZV9vZl92K1wiKVwiKTtcbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLlxuICAgICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBDIC8qY3N0LkNPREVfRE9VQkxFX0xJVFRMRSovKTtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFs3IC0gaV0pfVxuICAgICAgICAgIHdyaXRlci5zaXplXzMyICs9IDNcbiAgICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAyXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQ2NFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjQgPSBjYW1sX2hhc2hfbWl4X2ludDY0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQgPSBjYW1sX2hhc2hfbWl4X2ludDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0ID0gY2FtbF9oYXNoX21peF9mbG9hdDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nID0gY2FtbF9oYXNoX21peF9zdHJpbmc7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbFxuZnVuY3Rpb24gQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUoc2VlZCkge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoc2VlZCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ210aW1lXG4vL0FsaWFzOiB1bml4X2dtdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9ta3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gY2FtbF91bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuICAgIHJldHVybiB0dHkuaXNhdHR5KGZpbGVEZXNjcmlwdG9yKT8xOjA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLCBcIkVBQ0NFU1wiLCBcIkVBR0FJTlwiLCBcIkVCQURGXCIsIFwiRUJVU1lcIiwgXCJFQ0hJTERcIiwgXCJFREVBRExLXCIsIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLCBcIkVGQVVMVFwiLCBcIkVGQklHXCIsIFwiRUlOVFJcIiwgXCJFSU5WQUxcIiwgXCJFSU9cIiwgXCJFSVNESVJcIiwgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIiwgXCJFTkFNRVRPT0xPTkdcIiwgXCJFTkZJTEVcIiwgXCJFTk9ERVZcIiwgXCJFTk9FTlRcIiwgXCJFTk9FWEVDXCIsIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsIFwiRU5PU1BDXCIsIFwiRU5PU1lTXCIsIFwiRU5PVERJUlwiLCBcIkVOT1RFTVBUWVwiLCBcIkVOT1RUWVwiLCBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIiwgXCJFUElQRVwiLCBcIkVSQU5HRVwiLCBcIkVST0ZTXCIsIFwiRVNQSVBFXCIsIFwiRVNSQ0hcIiwgXCJFWERFVlwiLCBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIiwgXCJFQUxSRUFEWVwiLCBcIkVOT1RTT0NLXCIsIFwiRURFU1RBRERSUkVRXCIsIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsIFwiRU5PUFJPVE9PUFRcIiwgXCJFUFJPVE9OT1NVUFBPUlRcIiwgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsIFwiRVBGTk9TVVBQT1JUXCIsIFwiRUFGTk9TVVBQT1JUXCIsIFwiRUFERFJJTlVTRVwiLCBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLCBcIkVORVRVTlJFQUNIXCIsIFwiRU5FVFJFU0VUXCIsIFwiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRVNFVFwiLCBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsIFwiRU5PVENPTk5cIiwgXCJFU0hVVERPV05cIiwgXCJFVE9PTUFOWVJFRlNcIiwgXCJFVElNRURPVVRcIiwgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIiwgXCJFSE9TVFVOUkVBQ0hcIiwgXCJFTE9PUFwiLCBcIkVPVkVSRkxPV1wiXG5dO1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5XG4gICAgfVxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIHZhcmlhbnRzLCBmYWxsYmFjayB0byBFVU5LTk9XTkVSUihpbnQpXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIGVycm5vKTtcbiAgfVxuICB2YXIgYXJncyA9IFtcbiAgICB2YXJpYW50LFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHN5c2NhbGwgfHwgXCJcIiksXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aCB8fCBcIlwiKVxuICBdO1xuICByZXR1cm4gYXJncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X3N0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9zdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbHN0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X2xzdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmsodG9fZGlyLCBzcmNfcm9vdC5yZXN0LCBkc3Rfcm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JlYWRsaW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9yZWFkbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5yZWFkbGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3VubGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dWlkKHVuaXQpIHtcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQpe1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKCk7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9oYXNfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X2hhc19zeW1saW5rKHVuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCk/MTowXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9vcGVuZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UocGF0aCk7XG4gIGlmICghcm9vdC5kZXZpY2Uub3BlbmRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfb3BlbmRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHZhciBkaXJfaGFuZGxlID0gcm9vdC5kZXZpY2Uub3BlbmRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiB7IHBvaW50ZXIgOiBkaXJfaGFuZGxlLCBwYXRoOiBwYXRoIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgICAgZW50cnkgPSBkaXJfaGFuZGxlLnBvaW50ZXIucmVhZFN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwicmVhZGRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxuICBpZiAoZW50cnkgPT09IG51bGwpIHtcbiAgICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhlbnRyeS5uYW1lKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfY2xvc2VkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKSB7XG4gIHRyeSB7XG4gICAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZXdpbmRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpciwgY2FtbF91bml4X29wZW5kaXJcbi8vQWxpYXM6IHVuaXhfcmV3aW5kZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmV3aW5kZGlyKGRpcl9oYW5kbGUpIHtcbiAgY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xuICB2YXIgbmV3X2Rpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihkaXJfaGFuZGxlLnBhdGgpO1xuICBkaXJfaGFuZGxlLnBvaW50ZXIgPSBuZXdfZGlyX2hhbmRsZS5wb2ludGVyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRmaXJzdFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfb3BlbmRpciwgY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kZmlyc3RcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kZmlyc3QocGF0aCkge1xuICAvLyBUaGUgV2luZG93cyBjb2RlIGFkZHMgdGhpcyBnbG9iIHRvIHRoZSBwYXRoLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSBpdFxuICB2YXIgcGF0aF9qcyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBhdGgpO1xuICBwYXRoX2pzID0gcGF0aF9qcy5yZXBsYWNlKC8oXnxbXFxcXFxcL10pXFwqXFwuXFwqJC8sIFwiXCIpO1xuICBwYXRoID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aF9qcyk7XG4gIC8vICouKiBpcyBub3cgc3RyaXBwZWRcbiAgdmFyIGRpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKTtcbiAgdmFyIGZpcnN0X2VudHJ5ID0gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG4gIC8vIFRoZSBXaW5kb3dzIGJpbmRpbmdzIHR5cGUgZGlyX2hhbmRsZSBhcyBhbiBgaW50YCBidXQgaXQncyBub3QgaW4gSlNcbiAgcmV0dXJuIFswLCBmaXJzdF9lbnRyeSwgZGlyX2hhbmRsZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kbmV4dFxuLy9SZXF1aXJlczogY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kbmV4dFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRuZXh0KGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGNsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vQWxpYXM6IHdpbl9maW5kY2xvc2VcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kY2xvc2UoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nICgpIHtyZXR1cm4gMDt9XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBEdW1teSBmaWxlc3lzdGVtXG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSl7XG4gIHJldHVybiAobmFtZS5zbGljZSgtMSkgIT09IFwiL1wiKSA/IChuYW1lICsgXCIvXCIpIDogbmFtZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9IGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csJy8nKTtcbmVsc2VcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSAgXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKXtcbiAgdmFyIHggPSBwYXRoX2lzX2Fic29sdXRlKHBhdGgpO1xuICBpZiAoIXgpIHJldHVybjtcbiAgcmV0dXJuIHhbMF0gKyBcIi9cIn1cblxuLy9Qcm92aWRlczogY2FtbF9yb290XG4vL1JlcXVpcmVzOiBjYW1sX2dldF9yb290LCBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX2ZhaWx3aXRoXG52YXIgY2FtbF9yb290ID0gY2FtbF9nZXRfcm9vdChjYW1sX2N1cnJlbnRfZGlyKSB8fCBjYW1sX2ZhaWx3aXRoKFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpO1xuXG5cbi8vUHJvdmlkZXM6IE1sRmlsZVxuZnVuY3Rpb24gTWxGaWxlKCl7ICB9XG5cbi8vUHJvdmlkZXM6IHBhdGhfaXNfYWJzb2x1dGVcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKSB7XG4gIGZ1bmN0aW9uIHBvc2l4KHBhdGgpIHtcbiAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgcmV0dXJuIFtcIlwiLCBwYXRoLnN1YnN0cmluZygxKV07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luMzIocGF0aCkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG4gICAgdmFyIHNwbGl0RGV2aWNlUmUgPSAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHZhciBpc1VuYyA9IEJvb2xlYW4oZGV2aWNlICYmIGRldmljZS5jaGFyQXQoMSkgIT09ICc6Jyk7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChCb29sZWFuKHJlc3VsdFsyXSB8fCBpc1VuYykpIHtcbiAgICAgIHZhciByb290ID0gKHJlc3VsdFsxXSB8fCAnJyk7XG4gICAgICB2YXIgc2VwID0gKHJlc3VsdFsyXSB8fCAnJyk7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbjMyIDogcG9zaXg7XG4gIH1cbiAgZWxzZSByZXR1cm4gcG9zaXhcbn1cbnZhciBwYXRoX2lzX2Fic29sdXRlID0gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9wYXRoXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3BhdGggKG5hbWUpIHtcbiAgbmFtZT1jYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYoICFwYXRoX2lzX2Fic29sdXRlKG5hbWUpIClcbiAgICBuYW1lID0gY2FtbF9jdXJyZW50X2RpciArIG5hbWU7XG4gIHZhciBjb21wMCA9IHBhdGhfaXNfYWJzb2x1dGUobmFtZSk7XG4gIHZhciBjb21wID0gY29tcDBbMV0uc3BsaXQoXCIvXCIpO1xuICB2YXIgbmNvbXAgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpPGNvbXAubGVuZ3RoOyBpKyspe1xuICAgIHN3aXRjaChjb21wW2ldKXtcbiAgICBjYXNlIFwiLi5cIjogaWYobmNvbXAubGVuZ3RoPjEpIG5jb21wLnBvcCgpOyBicmVhaztcbiAgICBjYXNlIFwiLlwiOiBicmVhaztcbiAgICBjYXNlIFwiXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9zeXNfZmRzW3ZmZF07XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2JhX21hcF9maWxlIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9tYXBfZmlsZVxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZShhcmd2LGFyZ24pe1xuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLGFyZ3ZbMV0sYXJndlsyXSxhcmd2WzNdLGFyZ3ZbNF0sYXJndls1XSk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlX2V4dGVybihuYW1lLGNvbnRlbnQpe1xuICBpZihnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUpXG4gICAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCk7XG4gIGVsc2Uge1xuICAgIGlmKCFnbG9iYWxUaGlzLmNhbWxfZnNfdG1wKSBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gICAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcC5wdXNoKHtuYW1lOm5hbWUsY29udGVudDpjb250ZW50fSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnNfaW5pdFxuLy9SZXF1aXJlczoganNvb19jcmVhdGVfZmlsZVxuZnVuY3Rpb24gY2FtbF9mc19pbml0ICgpe1xuICB2YXIgdG1wPWdsb2JhbFRoaXMuY2FtbF9mc190bXBcbiAgaWYodG1wKXtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgaSsrKXtcbiAgICAgIGpzb29fY3JlYXRlX2ZpbGUodG1wW2ldLm5hbWUsdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYoISByb290LmRldmljZS5yZWdpc3RlcikgY2FtbF9mYWlsd2l0aChcImNhbm5vdCByZWdpc3RlciBmaWxlXCIpO1xuICByb290LmRldmljZS5yZWdpc3Rlcihyb290LnJlc3QsY29udGVudCk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciBuYW1lID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlYWRfZmlsZV9jb250ZW50XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIE1sRmFrZUZkLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuXG4gIHZhciBhID0gdGhpcy5yZWFkZGlyKG5hbWUpO1xuICB2YXIgYyA9IGZhbHNlO1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiB7IHJlYWRTeW5jIDogKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYykge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGkgPT0gYS5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHZhciBlbnRyeSA9IGFbaV07XG4gICAgaSsrO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5IH1cbiAgfSlcbiAgICAsIGNsb3NlU3luYzogKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGMgPSB0cnVlO1xuICAgICAgYSA9IFtdO1xuICAgIH0pXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIGxlbiA9IGNsZW4gLSBvZmZzZXQ7XG4gIH1cbiAgaWYobGVuKSB7XG4gICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gICAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBkYXRhLCAwLCBsZW4pO1xuICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgfVxuICByZXR1cm4gbGVuXG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmRfb3V0KGZkLGZsYWdzKSB7XG4gIE1sRmFrZUZpbGUuY2FsbCh0aGlzLCBjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gIHRoaXMubG9nID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiAwIH0pO1xuICBpZihmZCA9PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZztcbiAgZWxzZSBpZihmZCA9PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nXG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIH1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMubG9nKSB7XG4gICAgaWYobGVuID4gMFxuICAgICAgICYmIHBvcyA+PSAwXG4gICAgICAgJiYgcG9zK2xlbiA8PSBidWYubGVuZ3RoXG4gICAgICAgJiYgYnVmW3BvcytsZW4tMV0gPT0gMTApXG4gICAgICBsZW4gLS07XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgdmFyIHNyYyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgdGhpcy5sb2coc3JjLnRvVXRmMTYoKSk7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgaXMgd3JpdGUgb25seVwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG9nID0gdW5kZWZpbmVkO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmQobmFtZSwgZmlsZSxmbGFncykge1xuICB0aGlzLmZpbGUgPSBmaWxlO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5cbk1sRmFrZUZkLnByb3RvdHlwZS5lcnJfY2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5hbWUgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLmxlbmd0aCAoKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLndyaXRlKG9mZnNldCxidWYscG9zLGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLnJlYWQob2Zmc2V0LCBidWYsIHBvcywgbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maWxlID0gdW5kZWZpbmVkO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBNbE11dGV4XG5mdW5jdGlvbiBNbE11dGV4KCkge1xuICB0aGlzLmxvY2tlZCA9IGZhbHNlXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbmV3XG4vL1JlcXVpcmVzOiBNbE11dGV4XG5mdW5jdGlvbiBjYW1sX21sX211dGV4X25ldyh1bml0KSB7XG4gIHJldHVybiBuZXcgTWxNdXRleCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X2xvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbG9jayh0KSB7XG4gIGlmKHQubG9ja2VkKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJNdXRleC5sb2NrOiBtdXRleCBhbHJlYWR5IGxvY2tlZC4gQ2Fubm90IHdhaXQuXCIpO1xuICBlbHNlIHQubG9ja2VkID0gdHJ1ZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2sodCkge1xuICBpZighdC5sb2NrZWQpIHtcbiAgICB0LmxvY2tlZCA9IHRydWU7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3VubG9jayh0KSB7XG4gIHQubG9ja2VkID0gZmFsc2U7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgSW50MzJBcnJheSh4KTtcbiAgLy8gRm9yIG51bSA8IDEuNVxuICAvLyBsZW5ndGhfbmF0IGlzbid0IGV4dGVybmFsLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlIE9iai5zaXplXG4gIC8vIHdvcmsgb3V0IHJpZ2h0LlxuICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgLy8gLSArMSBmb3IgdGhlIHRhZ1xuICAvLyAtICsxIGZvciB0aGUgY3VzdG9tX29wcyBzbG90XG4gIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDJcbn1cblxuTWxOYXQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfbmF0XCI7XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpe1xuICByZXR1cm4gbmV3IE1sTmF0KGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjcmVhdGVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gY3JlYXRlX25hdChzaXplKSB7XG4gIHZhciBhcnIgPSBuZXcgTWxOYXQoc2l6ZSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIuZGF0YVtpXSA9IC0xO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vUHJvdmlkZXM6IHNldF90b196ZXJvX25hdFxuZnVuY3Rpb24gc2V0X3RvX3plcm9fbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmxpdF9uYXRcbmZ1bmN0aW9uIGJsaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IG5hdDIuZGF0YVtvZnMyK2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0XG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0KG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0XG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0KG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIG51bV9kaWdpdHNfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZihuYXQuZGF0YVtvZnMraV0gIT0gMCkgcmV0dXJuIGkrMTtcbiAgfVxuICByZXR1cm4gMTsgLy8gMCBjb3VudHMgYXMgMSBkaWdpdFxufVxuXG4vL1Byb3ZpZGVzOiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXRcbmZ1bmN0aW9uIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQsIG9mcykge1xuICB2YXIgYSA9IG5hdC5kYXRhW29mc107XG4gIHZhciBiID0gMDtcbiAgaWYoYSAmIDB4RkZGRjAwMDApIHsgYiArPTE2OyBhID4+Pj0xNjsgfVxuICBpZihhICYgMHhGRjAwKSAgICAgeyBiICs9IDg7IGEgPj4+PSA4OyB9XG4gIGlmKGEgJiAweEYwKSAgICAgICB7IGIgKz0gNDsgYSA+Pj49IDQ7IH1cbiAgaWYoYSAmIDEyKSAgICAgICAgIHsgYiArPSAyOyBhID4+Pj0gMjsgfVxuICBpZihhICYgMikgICAgICAgICAgeyBiICs9IDE7IGEgPj4+PSAxOyB9XG4gIGlmKGEgJiAxKSAgICAgICAgICB7IGIgKz0gMTsgfVxuICByZXR1cm4gMzIgLSBiO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9pbnRcbmZ1bmN0aW9uIGlzX2RpZ2l0X2ludChuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA+PSAwKSByZXR1cm4gMVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdID09IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfb2RkXG5mdW5jdGlvbiBpc19kaWdpdF9vZGQobmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSAmIDEpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGluY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKHggfCAwKTtcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IGFkZF9uYXRcbi8vUmVxdWlyZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geFxuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBjYXJyeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBsZW1lbnRfbmF0XG5mdW5jdGlvbiBjb21wbGVtZW50X25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICgtMSA+Pj4gMCkgLSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKTtcbiAgfVxufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy9Qcm92aWRlczogZGVjcl9uYXRcbmZ1bmN0aW9uIGRlY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PjApIC0gYm9ycm93O1xuICAgIG5hdC5kYXRhW29mcytpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKGJvcnJvdyA9PSAxKSA/IDAgOiAxO1xufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBzdWJfbmF0XG4vL1JlcXVpcmVzOiBkZWNyX25hdFxuZnVuY3Rpb24gc3ViX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgLSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVjcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIChib3Jyb3c9PTEpPzA6MSk7XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNbb2ZzM11cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogbXVsdF9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGFkZF9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMykge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgYSA9IChuYXQzLmRhdGFbb2ZzM10gPj4+IDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHgxID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSAmIDB4MDAwMEZGRkYpICsgY2Fycnk7XG4gICAgdmFyIHgyID0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhID4+PiAxNik7XG4gICAgY2FycnkgPSBNYXRoLmZsb29yKHgyLzY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDM7XG4gICAgY2FycnkgKz0gTWF0aC5mbG9vcih4My80Mjk0OTY3Mjk2KTtcbiAgfVxuXG4gIGlmKGxlbjIgPCBsZW4xICYmIGNhcnJ5KSB7XG4gICAgcmV0dXJuIGFkZF9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIG5hdF9vZl9hcnJheShbY2FycnldKSwgMCwgMSwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjM7IGkrKykge1xuICAgIGNhcnJ5ICs9IG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEraSwgbGVuMS1pLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzK2kpO1xuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbmF0MSA9IDIgKiBuYXQxICsgbmF0MiAqIG5hdDJcbi8vIGxlbjEgPj0gMiAqIGxlbjJcbi8vUHJvdmlkZXM6IHNxdWFyZV9uYXRcbi8vUmVxdWlyZXM6IG11bHRfbmF0LCBhZGRfbmF0XG5mdW5jdGlvbiBzcXVhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgY2FycnkgKz0gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQxLCBvZnMxLCBsZW4xLCAwKTtcbiAgY2FycnkgKz0gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMik7XG4gIHJldHVybiBjYXJyeTtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA8PCBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhID4+PiAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIEFzc3VtaW5nIGMgPiBhLCByZXR1cm5zIFtxdW90aWVudCwgcmVtYWluZGVyXSBvZiAoYTw8MzIgKyBiKS9jXG4vL1Byb3ZpZGVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfaGVscGVyKGEsIGIsIGMpIHtcbiAgdmFyIHggPSBhICogNjU1MzYgKyAoYj4+PjE2KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKHgvYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwRkZGRik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3Iody9jKSwgdyAlIGNdO1xufVxuXG4vLyBuYXQxW29mczErbGVuXSA8IG5hdDJbb2ZzMl1cbi8vUHJvdmlkZXM6IGRpdl9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9kaWdpdF9uYXQobmF0cSwgb2ZzcSwgbmF0ciwgb2ZzciwgbmF0MSwgb2ZzMSwgbGVuLCBuYXQyLCBvZnMyKSB7XG4gIHZhciByZW0gPSAobmF0MS5kYXRhW29mczErbGVuLTFdID4+PjApO1xuICAvLyBuYXRxW29mc3ErbGVuLTFdIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybyAoZHVlIHRvIHRoZSBNU0QgcmVxdWlyZW1lbnQpLFxuICAvLyBhbmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLlxuICBmb3IodmFyIGkgPSBsZW4tMjsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgeCA9IGRpdl9oZWxwZXIocmVtLCAobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0Mi5kYXRhW29mczJdID4+PiAwKSk7XG4gICAgbmF0cS5kYXRhW29mc3EraV0gPSB4WzBdO1xuICAgIHJlbSA9IHhbMV07XG4gIH1cbiAgbmF0ci5kYXRhW29mc3JdID0gcmVtO1xuICByZXR1cm4gMDtcbn1cblxuLy8gbmF0MVtuYXQyOl0gOj0gbmF0MSAvIG5hdDJcbi8vIG5hdDFbOm5hdDJdIDo9IG5hdDEgJSBuYXQyXG4vLyBsZW4xID4gbGVuMiwgbmF0MltvZnMyK2xlbjItMV0gPiBuYXQxW29mczErbGVuMS0xXVxuLy9Qcm92aWRlczogZGl2X25hdFxuLy9SZXF1aXJlczogZGl2X2RpZ2l0X25hdCwgZGl2X2hlbHBlciwgbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0LCBzaGlmdF9sZWZ0X25hdCwgc2hpZnRfcmlnaHRfbmF0LCBjcmVhdGVfbmF0LCBzZXRfdG9femVyb19uYXQsIG11bHRfZGlnaXRfbmF0LCBzdWJfbmF0LCBjb21wYXJlX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBkaXZfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgaWYobGVuMiA9PSAxKSB7XG4gICAgZGl2X2RpZ2l0X25hdChuYXQxLCBvZnMxKzEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMitsZW4yLTEpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcblxuICB2YXIgZCA9IChuYXQyLmRhdGFbb2ZzMitsZW4yLTFdID4+PiAwKSArIDE7XG4gIHZhciBhID0gY3JlYXRlX25hdChsZW4yKzEpO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gbGVuMjsgaS0tKSB7XG4gICAgLy8gRGVjZW50IGxvd2VyIGJvdW5kIG9uIHF1b1xuICAgIHZhciBxdW8gPSBkID09IDQyOTQ5NjcyOTYgPyAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDogZGl2X2hlbHBlcigobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0MS5kYXRhW29mczEraS0xXSA+Pj4wKSwgZClbMF07XG4gICAgc2V0X3RvX3plcm9fbmF0KGEsIDAsIGxlbjIrMSk7XG4gICAgbXVsdF9kaWdpdF9uYXQoYSwgMCwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIGEsIDAsIGxlbjIrMSwgMSk7XG5cbiAgICB3aGlsZSAobmF0MS5kYXRhW29mczEraV0gIT0gMCB8fCBjb21wYXJlX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMCkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBxdW87XG4gIH1cblxuICBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyBzaGlmdCByZW1haW5kZXJcbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gcmVzdG9yZVxuICByZXR1cm4gMDtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gbGVuMS0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciBhID0gbmF0MS5kYXRhW29mczEraV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYobmF0MS5kYXRhW29mczFdID4gbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gMTtcbiAgaWYobmF0MS5kYXRhW29mczFdIDwgbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdFxuLy9SZXF1aXJlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGEgPSBudW1fZGlnaXRzX25hdChuYXQxLCBvZnMxLCBsZW4xKTtcbiAgdmFyIGIgPSBudW1fZGlnaXRzX25hdChuYXQyLCBvZnMyLCBsZW4yKTtcbiAgaWYoYSA+IGIpIHJldHVybiAxO1xuICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICBmb3IodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA+IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAxO1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDwgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdF9yZWFsXG4vL1JlcXVpcmVzOiBjb21wYXJlX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXRfcmVhbChuYXQxLG5hdDIpe1xuICByZXR1cm4gY29tcGFyZV9uYXQobmF0MSwwLG5hdDEuZGF0YS5sZW5ndGgsbmF0MiwwLG5hdDIuZGF0YS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBsYW5kX2RpZ2l0X25hdFxuZnVuY3Rpb24gbGFuZF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gJj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSB8PSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBseG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbHhvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gXj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeil7XG4gIHZhciBsZW4gPSBuYXQuZGF0YS5sZW5ndGg7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3ope1xuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIG5hdCA9IG5ldyBNbE5hdChsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0ZpbGUoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLHttb2RlOm1vZGV9KTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucm1kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNEaXJlY3RvcnkoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGIgPSB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICAgIHRoaXMuZnMudW5saW5rU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gYjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZiwgcmFpc2VfdW5peCkge1xuICB2YXIgY29uc3RzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGtleSBpbiBmKXtcbiAgICBzd2l0Y2goa2V5KXtcbiAgICBjYXNlIFwicmRvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1JET05MWTsgYnJlYWs7XG4gICAgY2FzZSBcIndyb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19XUk9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJhcHBlbmRcIiAgOlxuICAgICAgcmVzIHw9IGNvbnN0cy5PX1dST05MWSB8IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjcmVhdGVcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0NSRUFUOyAgICBicmVhaztcbiAgICBjYXNlIFwidHJ1bmNhdGVcIiA6IHJlcyB8PSBjb25zdHMuT19UUlVOQzsgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4Y2xcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fRVhDTDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiaW5hcnlcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTsgICBicmVhaztcbiAgICBjYXNlIFwidGV4dFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19URVhUOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm5vbmJsb2NrXCIgOiByZXMgfD0gY29uc3RzLk9fTk9OQkxPQ0s7IGJyZWFrO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHZhciBmZCA9IHRoaXMuZnMub3BlblN5bmModGhpcy5ubShuYW1lKSwgcmVzKTtcbiAgICB2YXIgaXNDaGFyYWN0ZXJEZXZpY2UgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0NoYXJhY3RlckRldmljZSgpO1xuICAgIGYuaXNDaGFyYWN0ZXJEZXZpY2UgPSBpc0NoYXJhY3RlckRldmljZTtcbiAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLm9wZW5kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJhaXNlX25vZGVqc19lcnJvciA9IGZ1bmN0aW9uKGVyciwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpIHtcbiAgICB2YXIgYXJncyA9IG1ha2VfdW5peF9lcnJfYXJncyhlcnIuY29kZSwgZXJyLnN5c2NhbGwsIGVyci5wYXRoLCBlcnIuZXJybm8pO1xuICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0c19mcm9tX2pzID0gZnVuY3Rpb24oanNfc3RhdHMpIHtcbiAgLyogPT09VW5peC5maWxlX2tpbmQ9PT1cbiAgICogdHlwZSBmaWxlX2tpbmQgPVxuICAgKiAgICAgU19SRUcgICAgICAgICAgICAgICAgICAgICAgICgqKiBSZWd1bGFyIGZpbGUgKilcbiAgICogICB8IFNfRElSICAgICAgICAgICAgICAgICAgICAgICAoKiogRGlyZWN0b3J5ICopXG4gICAqICAgfCBTX0NIUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIENoYXJhY3RlciBkZXZpY2UgKilcbiAgICogICB8IFNfQkxLICAgICAgICAgICAgICAgICAgICAgICAoKiogQmxvY2sgZGV2aWNlICopXG4gICAqICAgfCBTX0xOSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFN5bWJvbGljIGxpbmsgKilcbiAgICogICB8IFNfRklGTyAgICAgICAgICAgICAgICAgICAgICAoKiogTmFtZWQgcGlwZSAqKVxuICAgKiAgIHwgU19TT0NLICAgICAgICAgICAgICAgICAgICAgICgqKiBTb2NrZXQgKilcbiAgICovXG4gIHZhciBmaWxlX2tpbmQ7XG4gIGlmIChqc19zdGF0cy5pc0ZpbGUoKSkge1xuICAgIGZpbGVfa2luZCA9IDA7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVfa2luZCA9IDE7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDI7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMztcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgZmlsZV9raW5kID0gNDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0ZJRk8oKSkge1xuICAgIGZpbGVfa2luZCA9IDU7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTb2NrZXQoKSkge1xuICAgIGZpbGVfa2luZCA9IDY7XG4gIH1cbiAgLyogPT09VW5peC5zdGF0cz09PVxuICAgKiB0eXBlIHN0YXRzID1cbiAgICogIHsgc3RfZGV2IDogaW50OyAgICAgICAgICAgICAgICgqKiBEZXZpY2UgbnVtYmVyICopXG4gICAqICAgIHN0X2lubyA6IGludDsgICAgICAgICAgICAgICAoKiogSW5vZGUgbnVtYmVyICopXG4gICAqICAgIHN0X2tpbmQgOiBmaWxlX2tpbmQ7ICAgICAgICAoKiogS2luZCBvZiB0aGUgZmlsZSAqKVxuICAgKiAgICBzdF9wZXJtIDogZmlsZV9wZXJtOyAgICAgICAgKCoqIEFjY2VzcyByaWdodHMgKilcbiAgICogICAgc3RfbmxpbmsgOiBpbnQ7ICAgICAgICAgICAgICgqKiBOdW1iZXIgb2YgbGlua3MgKilcbiAgICogICAgc3RfdWlkIDogaW50OyAgICAgICAgICAgICAgICgqKiBVc2VyIGlkIG9mIHRoZSBvd25lciAqKVxuICAgKiAgICBzdF9naWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIEdyb3VwIElEIG9mIHRoZSBmaWxlJ3MgZ3JvdXAgKilcbiAgICogICAgc3RfcmRldiA6IGludDsgICAgICAgICAgICAgICgqKiBEZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSkgKilcbiAgICogICAgc3Rfc2l6ZSA6IGludDsgICAgICAgICAgICAgICgqKiBTaXplIGluIGJ5dGVzICopXG4gICAqICAgIHN0X2F0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBhY2Nlc3MgdGltZSAqKVxuICAgKiAgICBzdF9tdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUgKilcbiAgICogICAgc3RfY3RpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IHN0YXR1cyBjaGFuZ2UgdGltZSAqKVxuICAgKiAgfVxuICAgKi9cbiAgcmV0dXJuIEJMT0NLKFxuICAgIDAsXG4gICAganNfc3RhdHMuZGV2LFxuICAgIGpzX3N0YXRzLmlubyxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAganNfc3RhdHMuc2l6ZSxcbiAgICBqc19zdGF0cy5hdGltZU1zLFxuICAgIGpzX3N0YXRzLm10aW1lTXMsXG4gICAganNfc3RhdHMuY3RpbWVNc1xuICApO1xufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKCkge1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGZChmZCwgZmxhZ3Mpe1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5mZCA9IGZkO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxOb2RlRmQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRmQ7XG5cbk1sTm9kZUZkLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5mdHJ1bmNhdGVTeW5jKHRoaXMuZmQsbGVufDApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYSxidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gICAgcmV0dXJuIHJlYWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmNsb3NlU3luYyh0aGlzLmZkKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRmQoKXtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICBpZihmbGFncy5uYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIHZhciBmZDIgPSBmcy5vcGVuU3luYyhmbGFncy5uYW1lLCBcInJzXCIpO1xuICAgICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZDIsIGZsYWdzKTtcbiAgICB9IGNhdGNoKGUpIHsgIH1cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19hbGxvY1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19hbGxvYyhfLHNpemUpe1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGUoMTIsIDAsIFswLHNpemVdKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1Yih4KXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X3N0dWIoczEsIGkxLCBzMiwgaTIsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHMxLGkxLHMyLGkyLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtc2V0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1zZXRfc3R1YihiaWdzdHJpbmcsIHZfcG9zLCB2X2xlbiwgdl9jaGFyKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIGNhbWxfYmFfc2V0XzEoYmlnc3RyaW5nLCB2X3BvcyArIGksIHZfY2hhcik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMSh2X3MxLHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHZfczIsdl9zMl9wb3MgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfYnl0ZXNfZ2V0XG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSwgdl9zMV9wb3MgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYnl0ZXNfZ2V0KHZfczIsIHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG52YXIgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nID0gY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2ZpbmRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19maW5kKGJzLCBjaHIsIHBvcywgbGVuKXtcbiAgd2hpbGUobGVuID4gMCl7XG4gICAgaWYoY2FtbF9iYV9nZXRfMShicyxwb3MpID09IGNocikgcmV0dXJuIHBvcztcbiAgICBwb3MrKztcbiAgICBsZW4tLTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGUoaGF5c3RhY2ssIG5lZWRsZSwgaGF5c3RhY2tfcG9zLCBoYXlzdGFja19sZW4sIG5lZWRsZV9wb3MsIG5lZWRsZV9sZW4pe1xuICB2YXIgaSA9IDA7XG4gIHZhciBsaW0gPSBoYXlzdGFja19sZW4gLSBuZWVkbGVfbGVuO1xuICBmb3IodmFyIGkgPSAwOyBpIDw9IGxpbTsgKytpKSB7XG4gICAgdmFyIG1hdGNoZXMgPSB0cnVlO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmVlZGxlX2xlbjsgKytqKSB7XG4gICAgICBpZiAoY2FtbF9iYV9nZXRfMShoYXlzdGFjaywgaGF5c3RhY2tfcG9zICsgaSArIGopICE9IGNhbWxfYmFfZ2V0XzEobmVlZGxlLG5lZWRsZV9wb3MgKyBqKSkge1xuICAgICAgICBtYXRjaGVzID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobWF0Y2hlcykgcmV0dXJuIChoYXlzdGFja19wb3MgKyBpKTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8vLy8vLy8vIENPUkVcblxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxudmFyIGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG4vL1Byb3ZpZGVzOiBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG5cbi8vUHJvdmlkZXM6IGNvcmVfdGltZV9uc19mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfdGltZV9uc19mb3JtYXQodGltZSxmb3JtYXQpe1xuICB2YXIgZCA9IG5ldyBEYXRlKHRpbWUgKiAxMDAwKTtcbiAgdmFyIGZvcm1hdGpzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmb3JtYXQpO1xuICB2YXIganN0cmluZyA9IGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lKGZvcm1hdGpzLCBkKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanN0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfY29tcGFjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfY29tcGFjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX2hlYXBfY2h1bmtzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfY2h1bmtzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19taW5vcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3Byb21vdGVkX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX3Byb21vdGVkX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY190b3BfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY190b3BfaGVhcF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzXG5mdW5jdGlvbiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZmRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luLCBjYW1sX21kNV9jaGFuLCBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbmZ1bmN0aW9uIGNvcmVfbWQ1X2ZkKGZkKXtcbiAgICB2YXIgaWMgPSBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGNhbWxfbWQ1X2NoYW4oaWMsIC0xKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBjYW1sX21sX2Nsb3NlX2NoYW5uZWwoaWMpO1xuICAgIH1cbn1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tZDVfc3RyaW5nLCBjYW1sX2JsaXRfc3RyaW5nLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nKGJ1Ziwgb2ZzLCBsZW4sIHJlcyl7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihidWYsIG9mcywgYnl0ZXMsIDAsIGxlbik7XG4gICAgdmFyIHJlczIgPSBjYW1sX21kNV9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnl0ZXMpLCAwLCBsZW4pO1xuICAgIGNhbWxfYmxpdF9zdHJpbmcocmVzMiwgMCwgcmVzLCAwLCAxNik7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vQmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19kZXN0cm95X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1Yih2X2JzdHIpIHtcbiAgaWYgKHZfYnN0ci5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnc3RyaW5nX2Rlc3Ryb3k6IGJpZ3N0cmluZyBpcyBhbHJlYWR5IGRlYWxsb2NhdGVkXCIpO1xuICB9XG4gIC8vIE11dGF0ZSB0aGUgb3JpZ2luYWwgYmlnc3RyaW5nIGluLXBsYWNlLCB0byBzaW11bGF0ZSB3aGF0IHRoZSBDIHZlcnNpb24gZG9lc1xuICB2X2JzdHIuX19pc19kZWFsbG9jYXRlZCA9IHRydWU7XG4gIHZfYnN0ci5kYXRhID0gbmV3IHZfYnN0ci5kYXRhLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcigwKTtcbiAgdl9ic3RyLmRpbXMgPSBbIDAgXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19yZWFsbG9jXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX3JlYWxsb2MoYmlnc3RyaW5nLCBzaXplKSB7XG4gICAgaWYgKGJpZ3N0cmluZy5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ3N0cmluZ19yZWFsbG9jOiBiaWdzdHJpbmcgaXMgYWxyZWFkeSBkZWFsbG9jYXRlZFwiKTtcbiAgICB9XG5cbiAgICB2YXIgbmV3X2RhdGEgPSBuZXcgYmlnc3RyaW5nLmRhdGEuX19wcm90b19fLmNvbnN0cnVjdG9yKHNpemUpO1xuICAgIG5ld19kYXRhLnNldChiaWdzdHJpbmcuZGF0YS5zbGljZSgwLCBzaXplKSk7XG4gICAgdmFyIG5ld19iaWdzdHJpbmcgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmlnc3RyaW5nLmtpbmQsIGJpZ3N0cmluZy5sYXlvdXQsIFtzaXplXSwgbmV3X2RhdGEpO1xuICAgIGJpZ3N0cmluZ19kZXN0cm95X3N0dWIoYmlnc3RyaW5nKTtcblxuICAgIHJldHVybiBuZXdfYmlnc3RyaW5nO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLHNyY19vZmYsZHN0LGRzdF9vZmYsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9pbnRfY29tcGFyZVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyhiYTEsIGJhMV9vZmYsIGJhMiwgYmEyX29mZiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGNhbWxfaW50X2NvbXBhcmUoY2FtbF9iYV9nZXRfMShiYTEsIGJhMV9vZmYgKyBpKSwgY2FtbF9iYV9nZXRfMShiYTIsIGJhMl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZyhiYSwgYmFfb2ZmLCBzdHIsIHN0cl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmEsIGJhX29mZiArIGkpLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHN0ciwgc3RyX29mZiArIGkpKTtcbiAgICBpZiAoYyAhPSAwKSByZXR1cm4gY1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jaHJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNocihiYSwgYmFfb2ZmLCBjaHIsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGNhbWxfYmFfZ2V0XzEoYmEsIGJhX29mZiArIGkpID09IGNocikge1xuICAgICAgcmV0dXJuIChiYV9vZmYgKyBpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKXtcbiAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhhKSkgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSkgcmV0dXJuIDEyNTI7IC8vIG9jYW1sIHN0cmluZyAoaWYgZGlmZmVyZW50IGZyb20gYnl0ZXMpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBhWzBdID09PSAoYVswXT4+PjApICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuICh0YWcgPT0gMjU0KT8wOnRhZ1xuICB9XG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBTdHJpbmcpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGEgJiYgYS5jYW1sX2N1c3RvbSkgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhICYmIGEuY29tcGFyZSkgcmV0dXJuIDEyNTY7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxMjQ3OyAvLyBsaWtlIGNsb3N1cmVfdGFnICgyNDcpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3ltYm9sXCIpIHJldHVybiAxMjUxO1xuICByZXR1cm4gMTAwMTsgLy9vdXRfb2ZfaGVhcF90YWdcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKXtcbiAgcmV0dXJuIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0uY29tcGFyZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYoY29tcCkge1xuICAgIHZhciB4ID0gKHN3YXAgPiAwKT9jb21wKGN1c3RvbSxudW0sdG90YWwpOmNvbXAobnVtLGN1c3RvbSx0b3RhbCk7XG4gICAgaWYodG90YWwgJiYgeCAhPSB4KSByZXR1cm4gc3dhcDsgLy8gdG90YWwgJiYgbmFuXG4gICAgaWYoK3ggIT0gK3gpIHJldHVybiAreDsgLy8gbmFuXG4gICAgaWYoKHggfCAwKSAhPSAwKSByZXR1cm4gKHggfCAwKTsgLy8gIW5hblxuICB9XG4gIHJldHVybiBzd2FwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRvdGFsKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICBmb3IoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYSA9PSAyNTApIHsgYSA9IGFbMV07IGNvbnRpbnVlIH1cblxuICAgICAgdmFyIHRhZ19iID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYik7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYiA9PSAyNTApIHsgYiA9IGJbMV07IGNvbnRpbnVlIH1cblxuICAgICAgLy8gdGFncyBhcmUgZGlmZmVyZW50XG4gICAgICBpZih0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYodGFnX2EgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19iID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYSwgYiwgLTEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYodGFnX2IgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19hID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYiwgYSwgMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGFnX2EgPCB0YWdfYik/LTE6MTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCh0YWdfYSl7XG4gICAgICAgIC8vIDI0NjogTGF6eV90YWcgaGFuZGxlZCBiZWxsb3dcbiAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgIHZhciB4ID0gY2FtbF9pbnRfY29tcGFyZShhWzJdLCBiWzJdKTtcbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDk6IC8vIEluZml4XG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkIHRhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRm9yd2FyZF90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICB2YXIgeCA9IGNhbWxfYnl0ZXNfY29tcGFyZShhLCBiKTtcbiAgICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MzogLy8gRG91YmxlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBDdXN0b21fdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSk7XG4gICAgICAgIGlmKGNvbXAgIT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKXtcbiAgICAgICAgICByZXR1cm4gKGEuY2FtbF9jdXN0b208Yi5jYW1sX2N1c3RvbSk/LTE6MTtcbiAgICAgICAgfVxuICAgICAgICBpZighY29tcClcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgdmFyIHggPSBjb21wKGEsYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU2OiAvLyBjb21wYXJlIGZ1bmN0aW9uXG4gICAgICAgIHZhciB4ID0gYS5jb21wYXJlKGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpIHsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDA6IC8vIE51bWJlclxuICAgICAgICBhID0gK2E7XG4gICAgICAgIGIgPSArYjtcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgLy8gSGVyZSB3ZSBjYW4gYmUgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgICAgLy8gMS4gSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMy4gSmF2YVNjcmlwdCBvYmplY3QgdGhhbiBjYW5ub3QgYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy9cbiAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAvLyAoMikgd2lsbCBjb2VyY2UgdG8gcHJpbWl0aXZlIHR5cGVzIHVzaW5nIFt2YWx1ZU9mXSBvciBbdG9TdHJpbmddXG4gICAgICAgIC8vICgyKSBhbmQgKDMpLCBhZnRlciBldmVudHVhbCBjb2VyY2lvblxuICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAvLyAtIGlmIGEgb3IgYiBhcmUgbm90IHN0cmluZ3MsIGNvbnZlcnQgYSBhbmQgYiB0byBudW1iZXJcbiAgICAgICAgLy8gICBhbmQgYXBwbHkgc3RhbmRhcmQgY29tcGFyaXNvblxuICAgICAgICAvL1xuICAgICAgICAvLyBFeGNlcHRpb246IGAhPWAgd2lsbCBub3QgY29lcmNlL2NvbnZlcnQgaWYgYm90aCBhIGFuZCBiIGFyZSBvYmplY3RzXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTE6IC8vIEphdmFTY3JpcHQgU3ltYm9sLCBubyBvcmRlcmluZy5cbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTI6IC8vIG9jYW1sIHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGEpO1xuICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGEudG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIGIgPSBiLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ2OiAvLyBMYXp5X3RhZ1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheVxuICAgICAgZGVmYXVsdDogLy8gQmxvY2sgd2l0aCBvdGhlciB0YWdcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHRhZ19hKSkge1xuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvLy8vLy8vLy8gQklOX1BST1RcblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGJpZ3N0cmluZywgaSl7XG4gIGlmIChpID4+PiAwID49IGJpZ3N0cmluZy5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICBjYW1sX2NoZWNrX2JvdW5kKGRzdCxkc3RfcG9zKTsgLy8gZmlyc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmQoZHN0LGRzdF9wb3MrbGVuLTEpOyAvLyBsYXN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhzcmMsIHNyY19wb3MpOyAgLyogZmlyc3QgcG9zICovXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKHNyYywgc3JjX3BvcyArIGxlbiAqIDggLSAxKTsgLyogbGFzdCBwb3MgKi9cbiAgdmFyIHZpZXcgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KGxlbik7XG4gIHZhciBidWZmZXIgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheSh2aWV3LmJ1ZmZlcik7XG4gIGJ1ZmZlci5zZXQoc3JjLmRhdGEuc3ViYXJyYXkoc3JjX3Bvcywgc3JjX3BvcyArIChsZW4gKiA4KSkpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMCBcbiAgICBkc3RbZHN0X3BvcytpKzFdID0gdmlld1tpXTtcbiAgfVxuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YihzcmNfcG9zLHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDAgXG4gIGNhbWxfY2hlY2tfYm91bmQgKHNyYywgc3JjX3Bvcyk7IC8vIGZpcnN0IHBvcyBcbiAgY2FtbF9jaGVja19ib3VuZCAoc3JjLCBzcmNfcG9zICsgbGVuIC0gMSk7IC8vIGxhc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGRzdCwgZHN0X3Bvcyk7IC8qIGZpcnN0IHBvcyAqL1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhkc3QsIGRzdF9wb3MgKyBsZW4gKiA4IC0gMSk7IC8qIGxhc3QgcG9zICovXG4gIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMFxuICBzcmNfcG9zID0gc3JjX3BvcyArIDFcbiAgdmFyIGZsb2F0NjQgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KHNyYy5zbGljZShzcmNfcG9zLHNyY19wb3MgKyBsZW4pKTtcbiAgdmFyIGZsb2F0NjRfdWludDggPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheShmbG9hdDY0LmJ1ZmZlcik7XG4gIHZhciB2aWV3ID0gZHN0LmRhdGEuc3ViYXJyYXkoZHN0X3BvcywgZHN0X3BvcyArIChsZW4gKiA4KSk7XG4gIHZpZXcuc2V0KGZsb2F0NjRfdWludDgpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEsIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIC8vIFtiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXSBpcyB1c2VkIHdpdGggbWl4ZWQgYmlnYXJyYXkga2luZHMuXG4gIC8vIENvbnZlcnRlciBldmVyeXRoaW5nIHRvIGJpZ2FycmF5IG9mIGNoYXIgYmVmb3JlIHRoZSBibGl0LlxuICBpZihzcmMua2luZCAhPSAxMikgLy8gMTIgaXMgdGhlIGNoYXIga2luZFxuICAgIHNyYyA9IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShzcmMuZGF0YSk7XG4gIGlmKGRzdC5raW5kICE9IDEyKSAvLyAxMiBpcyB0aGUgY2hhciBraW5kXG4gICAgZHN0ID0gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGRzdC5kYXRhKTtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gQXJyYXlcblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zdWIgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9zdWIgKGEsIGksIGxlbikge1xuICB2YXIgYTIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBhMlswXT0wO1xuICBmb3IodmFyIGkyID0gMSwgaTE9IGkrMTsgaTIgPD0gbGVuOyBpMisrLGkxKysgKXtcbiAgICBhMltpMl09YVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2FwcGVuZCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgdmFyIGwxID0gYTEubGVuZ3RoLCBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMStsMi0xXG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gMDtcbiAgdmFyIGkgPSAxLGogPSAxO1xuICBmb3IoO2k8bDE7aSsrKSBhW2ldPWExW2ldO1xuICBmb3IoO2k8bDtpKyssaisrKSBhW2ldPWEyW2pdO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X2dldCAoYXJyYXksIGluZGV4KSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5W2luZGV4KzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpe1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGFycmF5W29mcytpKzFdID0gdjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kIChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdmVjdCBjb25zdCAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy9Qcm92aWRlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBibGFrZTJiID0gKGZ1bmN0aW9uICgpIHtcbi8vIEJsYWtlMkIgaW4gcHVyZSBKYXZhc2NyaXB0XG4vLyBBZGFwdGVkIGZyb20gdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbiBSRkM3NjkzXG4vLyBQb3J0ZWQgdG8gSmF2YXNjcmlwdCBieSBEQyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9kY3Bvc2NoXG5cbi8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuLy8gU2V0cyB2W2EsYSsxXSArPSB2W2IsYisxXVxuLy8gdiBzaG91bGQgYmUgYSBVaW50MzJBcnJheVxuZnVuY3Rpb24gQURENjRBQSAodiwgYSwgYikge1xuICBjb25zdCBvMCA9IHZbYV0gKyB2W2JdXG4gIGxldCBvMSA9IHZbYSArIDFdICsgdltiICsgMV1cbiAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgbzErK1xuICB9XG4gIHZbYV0gPSBvMFxuICB2W2EgKyAxXSA9IG8xXG59XG5cbi8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuLy8gU2V0cyB2W2EsYSsxXSArPSBiXG4vLyBiMCBpcyB0aGUgbG93IDMyIGJpdHMgb2YgYiwgYjEgcmVwcmVzZW50cyB0aGUgaGlnaCAzMiBiaXRzXG5mdW5jdGlvbiBBREQ2NEFDICh2LCBhLCBiMCwgYjEpIHtcbiAgbGV0IG8wID0gdlthXSArIGIwXG4gIGlmIChiMCA8IDApIHtcbiAgICBvMCArPSAweDEwMDAwMDAwMFxuICB9XG4gIGxldCBvMSA9IHZbYSArIDFdICsgYjFcbiAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgbzErK1xuICB9XG4gIHZbYV0gPSBvMFxuICB2W2EgKyAxXSA9IG8xXG59XG5cbi8vIExpdHRsZS1lbmRpYW4gYnl0ZSBhY2Nlc3NcbmZ1bmN0aW9uIEIyQl9HRVQzMiAoYXJyLCBpKSB7XG4gIHJldHVybiBhcnJbaV0gXiAoYXJyW2kgKyAxXSA8PCA4KSBeIChhcnJbaSArIDJdIDw8IDE2KSBeIChhcnJbaSArIDNdIDw8IDI0KVxufVxuXG4vLyBHIE1peGluZyBmdW5jdGlvblxuLy8gVGhlIFJPVFJzIGFyZSBpbmxpbmVkIGZvciBzcGVlZFxuZnVuY3Rpb24gQjJCX0cgKGEsIGIsIGMsIGQsIGl4LCBpeSkge1xuICBjb25zdCB4MCA9IG1baXhdXG4gIGNvbnN0IHgxID0gbVtpeCArIDFdXG4gIGNvbnN0IHkwID0gbVtpeV1cbiAgY29uc3QgeTEgPSBtW2l5ICsgMV1cblxuICBBREQ2NEFBKHYsIGEsIGIpIC8vIHZbYSxhKzFdICs9IHZbYixiKzFdIC4uLiBpbiBKUyB3ZSBtdXN0IHN0b3JlIGEgdWludDY0IGFzIHR3byB1aW50MzJzXG4gIEFERDY0QUModiwgYSwgeDAsIHgxKSAvLyB2W2EsIGErMV0gKz0geCAuLi4geDAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIHgsIHgxIGlzIHRoZSBoaWdoIDMyIGJpdHNcblxuICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgdG8gdGhlIHJpZ2h0IGJ5IDMyIGJpdHNcbiAgbGV0IHhvcjAgPSB2W2RdIF4gdlthXVxuICBsZXQgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV1cbiAgdltkXSA9IHhvcjFcbiAgdltkICsgMV0gPSB4b3IwXG5cbiAgQURENjRBQSh2LCBjLCBkKVxuXG4gIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSAyNCBiaXRzXG4gIHhvcjAgPSB2W2JdIF4gdltjXVxuICB4b3IxID0gdltiICsgMV0gXiB2W2MgKyAxXVxuICB2W2JdID0gKHhvcjAgPj4+IDI0KSBeICh4b3IxIDw8IDgpXG4gIHZbYiArIDFdID0gKHhvcjEgPj4+IDI0KSBeICh4b3IwIDw8IDgpXG5cbiAgQURENjRBQSh2LCBhLCBiKVxuICBBREQ2NEFDKHYsIGEsIHkwLCB5MSlcblxuICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgcmlnaHQgYnkgMTYgYml0c1xuICB4b3IwID0gdltkXSBeIHZbYV1cbiAgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV1cbiAgdltkXSA9ICh4b3IwID4+PiAxNikgXiAoeG9yMSA8PCAxNilcbiAgdltkICsgMV0gPSAoeG9yMSA+Pj4gMTYpIF4gKHhvcjAgPDwgMTYpXG5cbiAgQURENjRBQSh2LCBjLCBkKVxuXG4gIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSA2MyBiaXRzXG4gIHhvcjAgPSB2W2JdIF4gdltjXVxuICB4b3IxID0gdltiICsgMV0gXiB2W2MgKyAxXVxuICB2W2JdID0gKHhvcjEgPj4+IDMxKSBeICh4b3IwIDw8IDEpXG4gIHZbYiArIDFdID0gKHhvcjAgPj4+IDMxKSBeICh4b3IxIDw8IDEpXG59XG5cbi8vIEluaXRpYWxpemF0aW9uIFZlY3RvclxuY29uc3QgQkxBS0UyQl9JVjMyID0gbmV3IFVpbnQzMkFycmF5KFtcbiAgMHhmM2JjYzkwOCwgMHg2YTA5ZTY2NywgMHg4NGNhYTczYiwgMHhiYjY3YWU4NSwgMHhmZTk0ZjgyYiwgMHgzYzZlZjM3MixcbiAgMHg1ZjFkMzZmMSwgMHhhNTRmZjUzYSwgMHhhZGU2ODJkMSwgMHg1MTBlNTI3ZiwgMHgyYjNlNmMxZiwgMHg5YjA1Njg4YyxcbiAgMHhmYjQxYmQ2YiwgMHgxZjgzZDlhYiwgMHgxMzdlMjE3OSwgMHg1YmUwY2QxOVxuXSlcblxuY29uc3QgU0lHTUE4ID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNCwgMTAsIDQsIDgsIDksIDE1LCAxMyxcbiAgNiwgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzLCAxMSwgOCwgMTIsIDAsIDUsIDIsIDE1LCAxMywgMTAsIDE0LCAzLCA2LCA3LCAxLFxuICA5LCA0LCA3LCA5LCAzLCAxLCAxMywgMTIsIDExLCAxNCwgMiwgNiwgNSwgMTAsIDQsIDAsIDE1LCA4LCA5LCAwLCA1LCA3LCAyLCA0LFxuICAxMCwgMTUsIDE0LCAxLCAxMSwgMTIsIDYsIDgsIDMsIDEzLCAyLCAxMiwgNiwgMTAsIDAsIDExLCA4LCAzLCA0LCAxMywgNywgNSxcbiAgMTUsIDE0LCAxLCA5LCAxMiwgNSwgMSwgMTUsIDE0LCAxMywgNCwgMTAsIDAsIDcsIDYsIDMsIDksIDIsIDgsIDExLCAxMywgMTEsIDcsXG4gIDE0LCAxMiwgMSwgMywgOSwgNSwgMCwgMTUsIDQsIDgsIDYsIDIsIDEwLCA2LCAxNSwgMTQsIDksIDExLCAzLCAwLCA4LCAxMiwgMixcbiAgMTMsIDcsIDEsIDQsIDEwLCA1LCAxMCwgMiwgOCwgNCwgNywgNiwgMSwgNSwgMTUsIDExLCA5LCAxNCwgMywgMTIsIDEzLCAwLCAwLFxuICAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNCwgMTAsIDQsIDgsIDksIDE1LCAxMywgNixcbiAgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzXG5dXG5cbi8vIFRoZXNlIGFyZSBvZmZzZXRzIGludG8gYSB1aW50NjQgYnVmZmVyLlxuLy8gTXVsdGlwbHkgdGhlbSBhbGwgYnkgMiB0byBtYWtlIHRoZW0gb2Zmc2V0cyBpbnRvIGEgdWludDMyIGJ1ZmZlcixcbi8vIGJlY2F1c2UgdGhpcyBpcyBKYXZhc2NyaXB0IGFuZCB3ZSBkb24ndCBoYXZlIHVpbnQ2NHNcbmNvbnN0IFNJR01BODIgPSBuZXcgVWludDhBcnJheShcbiAgU0lHTUE4Lm1hcChmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB4ICogMlxuICB9KVxuKVxuXG4vLyBDb21wcmVzc2lvbiBmdW5jdGlvbi4gJ2xhc3QnIGZsYWcgaW5kaWNhdGVzIGxhc3QgYmxvY2suXG4vLyBOb3RlIHdlJ3JlIHJlcHJlc2VudGluZyAxNiB1aW50NjRzIGFzIDMyIHVpbnQzMnNcbmNvbnN0IHYgPSBuZXcgVWludDMyQXJyYXkoMzIpXG5jb25zdCBtID0gbmV3IFVpbnQzMkFycmF5KDMyKVxuZnVuY3Rpb24gYmxha2UyYkNvbXByZXNzIChjdHgsIGxhc3QpIHtcbiAgbGV0IGkgPSAwXG5cbiAgLy8gaW5pdCB3b3JrIHZhcmlhYmxlc1xuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIHZbaV0gPSBjdHguaFtpXVxuICAgIHZbaSArIDE2XSA9IEJMQUtFMkJfSVYzMltpXVxuICB9XG5cbiAgLy8gbG93IDY0IGJpdHMgb2Ygb2Zmc2V0XG4gIHZbMjRdID0gdlsyNF0gXiBjdHgudFxuICB2WzI1XSA9IHZbMjVdIF4gKGN0eC50IC8gMHgxMDAwMDAwMDApXG4gIC8vIGhpZ2ggNjQgYml0cyBub3Qgc3VwcG9ydGVkLCBvZmZzZXQgbWF5IG5vdCBiZSBoaWdoZXIgdGhhbiAyKio1My0xXG5cbiAgLy8gbGFzdCBibG9jayBmbGFnIHNldCA/XG4gIGlmIChsYXN0KSB7XG4gICAgdlsyOF0gPSB+dlsyOF1cbiAgICB2WzI5XSA9IH52WzI5XVxuICB9XG5cbiAgLy8gZ2V0IGxpdHRsZS1lbmRpYW4gd29yZHNcbiAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICBtW2ldID0gQjJCX0dFVDMyKGN0eC5iLCA0ICogaSlcbiAgfVxuXG4gIC8vIHR3ZWx2ZSByb3VuZHMgb2YgbWl4aW5nXG4gIC8vIHVuY29tbWVudCB0aGUgRGVidWdQcmludCBjYWxscyB0byBsb2cgdGhlIGNvbXB1dGF0aW9uXG4gIC8vIGFuZCBtYXRjaCB0aGUgUkZDIHNhbXBsZSBkb2N1bWVudGF0aW9uXG4gIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgQjJCX0coMCwgOCwgMTYsIDI0LCBTSUdNQTgyW2kgKiAxNiArIDBdLCBTSUdNQTgyW2kgKiAxNiArIDFdKVxuICAgIEIyQl9HKDIsIDEwLCAxOCwgMjYsIFNJR01BODJbaSAqIDE2ICsgMl0sIFNJR01BODJbaSAqIDE2ICsgM10pXG4gICAgQjJCX0coNCwgMTIsIDIwLCAyOCwgU0lHTUE4MltpICogMTYgKyA0XSwgU0lHTUE4MltpICogMTYgKyA1XSlcbiAgICBCMkJfRyg2LCAxNCwgMjIsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDZdLCBTSUdNQTgyW2kgKiAxNiArIDddKVxuICAgIEIyQl9HKDAsIDEwLCAyMCwgMzAsIFNJR01BODJbaSAqIDE2ICsgOF0sIFNJR01BODJbaSAqIDE2ICsgOV0pXG4gICAgQjJCX0coMiwgMTIsIDIyLCAyNCwgU0lHTUE4MltpICogMTYgKyAxMF0sIFNJR01BODJbaSAqIDE2ICsgMTFdKVxuICAgIEIyQl9HKDQsIDE0LCAxNiwgMjYsIFNJR01BODJbaSAqIDE2ICsgMTJdLCBTSUdNQTgyW2kgKiAxNiArIDEzXSlcbiAgICBCMkJfRyg2LCA4LCAxOCwgMjgsIFNJR01BODJbaSAqIDE2ICsgMTRdLCBTSUdNQTgyW2kgKiAxNiArIDE1XSlcbiAgfVxuXG4gIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgY3R4LmhbaV0gPSBjdHguaFtpXSBeIHZbaV0gXiB2W2kgKyAxNl1cbiAgfVxufVxuXG4vLyByZXVzYWJsZSBwYXJhbWV0ZXJCbG9ja1xuY29uc3QgcGFyYW1ldGVyQmxvY2sgPSBuZXcgVWludDhBcnJheShbXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vICAwOiBvdXRsZW4sIGtleWxlbiwgZmFub3V0LCBkZXB0aFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgNDogbGVhZiBsZW5ndGgsIHNlcXVlbnRpYWwgbW9kZVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgODogbm9kZSBvZmZzZXRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMTI6IG5vZGUgb2Zmc2V0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDE2OiBub2RlIGRlcHRoLCBpbm5lciBsZW5ndGgsIHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAyMDogcmZ1XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDI0OiByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMjg6IHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAzMjogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAzNjogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0MDogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0NDogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0ODogcGVyc29uYWxcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNTI6IHBlcnNvbmFsXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDU2OiBwZXJzb25hbFxuICAwLFxuICAwLFxuICAwLFxuICAwIC8vIDYwOiBwZXJzb25hbFxuXSlcblxuLy8gQ3JlYXRlcyBhIEJMQUtFMmIgaGFzaGluZyBjb250ZXh0XG4vLyBSZXF1aXJlcyBhbiBvdXRwdXQgbGVuZ3RoIGJldHdlZW4gMSBhbmQgNjQgYnl0ZXNcbi8vIFRha2VzIGFuIG9wdGlvbmFsIFVpbnQ4QXJyYXkga2V5XG5mdW5jdGlvbiBibGFrZTJiSW5pdCAob3V0bGVuLCBrZXkpIHtcbiAgaWYgKG91dGxlbiA9PT0gMCB8fCBvdXRsZW4gPiA2NCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBvdXRwdXQgbGVuZ3RoLCBleHBlY3RlZCAwIDwgbGVuZ3RoIDw9IDY0JylcbiAgfVxuICBpZiAoa2V5Lmxlbmd0aCA+IDY0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGtleSwgZXhwZWN0ZWQgVWludDhBcnJheSB3aXRoIDAgPCBsZW5ndGggPD0gNjQnKVxuICB9XG5cbiAgLy8gc3RhdGUsICdwYXJhbSBibG9jaydcbiAgY29uc3QgY3R4ID0ge1xuICAgIGI6IG5ldyBVaW50OEFycmF5KDEyOCksXG4gICAgaDogbmV3IFVpbnQzMkFycmF5KDE2KSxcbiAgICB0OiAwLCAvLyBpbnB1dCBjb3VudFxuICAgIGM6IDAsIC8vIHBvaW50ZXIgd2l0aGluIGJ1ZmZlclxuICAgIG91dGxlbjogb3V0bGVuIC8vIG91dHB1dCBsZW5ndGggaW4gYnl0ZXNcbiAgfVxuXG4gIC8vIGluaXRpYWxpemUgcGFyYW1ldGVyQmxvY2sgYmVmb3JlIHVzYWdlXG4gIHBhcmFtZXRlckJsb2NrLmZpbGwoMClcbiAgcGFyYW1ldGVyQmxvY2tbMF0gPSBvdXRsZW5cbiAgcGFyYW1ldGVyQmxvY2tbMV0gPSBrZXkubGVuZ3RoXG4gIHBhcmFtZXRlckJsb2NrWzJdID0gMSAvLyBmYW5vdXRcbiAgcGFyYW1ldGVyQmxvY2tbM10gPSAxIC8vIGRlcHRoXG5cbiAgLy8gaW5pdGlhbGl6ZSBoYXNoIHN0YXRlXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIGN0eC5oW2ldID0gQkxBS0UyQl9JVjMyW2ldIF4gQjJCX0dFVDMyKHBhcmFtZXRlckJsb2NrLCBpICogNClcbiAgfVxuXG5cblxuICBpZihrZXkubGVuZ3RoID4gMCl7XG4gICAgYmxha2UyYlVwZGF0ZShjdHgsIGtleSlcbiAgICAvLyBhdCB0aGUgZW5kXG4gICAgY3R4LmMgPSAxMjhcbiAgfVxuXG4gIHJldHVybiBjdHhcbn1cblxuLy8gVXBkYXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbi8vIFJlcXVpcmVzIGhhc2ggY29udGV4dCBhbmQgVWludDhBcnJheSAoYnl0ZSBhcnJheSlcbmZ1bmN0aW9uIGJsYWtlMmJVcGRhdGUgKGN0eCwgaW5wdXQpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChjdHguYyA9PT0gMTI4KSB7XG4gICAgICAvLyBidWZmZXIgZnVsbCA/XG4gICAgICBjdHgudCArPSBjdHguYyAvLyBhZGQgY291bnRlcnNcbiAgICAgIGJsYWtlMmJDb21wcmVzcyhjdHgsIGZhbHNlKSAvLyBjb21wcmVzcyAobm90IGxhc3QpXG4gICAgICBjdHguYyA9IDAgLy8gY291bnRlciB0byB6ZXJvXG4gICAgfVxuICAgIGN0eC5iW2N0eC5jKytdID0gaW5wdXRbaV1cbiAgfVxufVxuXG4vLyBDb21wbGV0ZXMgYSBCTEFLRTJiIHN0cmVhbWluZyBoYXNoXG4vLyBSZXR1cm5zIGEgVWludDhBcnJheSBjb250YWluaW5nIHRoZSBtZXNzYWdlIGRpZ2VzdFxuZnVuY3Rpb24gYmxha2UyYkZpbmFsIChjdHgpIHtcbiAgY3R4LnQgKz0gY3R4LmMgLy8gbWFyayBsYXN0IGJsb2NrIG9mZnNldFxuXG4gIHdoaWxlIChjdHguYyA8IDEyOCkge1xuICAgIC8vIGZpbGwgdXAgd2l0aCB6ZXJvc1xuICAgIGN0eC5iW2N0eC5jKytdID0gMFxuICB9XG4gIGJsYWtlMmJDb21wcmVzcyhjdHgsIHRydWUpIC8vIGZpbmFsIGJsb2NrIGZsYWcgPSAxXG5cbiAgLy8gbGl0dGxlIGVuZGlhbiBjb252ZXJ0IGFuZCBzdG9yZVxuICBjb25zdCBvdXQgPSBuZXcgVWludDhBcnJheShjdHgub3V0bGVuKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGN0eC5vdXRsZW47IGkrKykge1xuICAgIG91dFtpXSA9IGN0eC5oW2kgPj4gMl0gPj4gKDggKiAoaSAmIDMpKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiAgcmV0dXJuIHtJbml0OmJsYWtlMmJJbml0LCBVcGRhdGU6Ymxha2UyYlVwZGF0ZSwgRmluYWw6Ymxha2UyYkZpbmFsfVxufSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSl7XG4gIGtleSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGtleSk7XG4gIGlmKGtleS5sZW5ndGggPiA2NCkge1xuICAgIGtleS5zdWJhcnJheSgwLDY0KTtcbiAgfVxuICByZXR1cm4gYmxha2UyYi5Jbml0KGhhc2hsZW4sIGtleSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbikge1xuICB2YXIgciA9IGJsYWtlMmIuRmluYWwoY3R4KTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KHIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmLCBvZnMsIGxlbil7XG4gIHZhciBpbnB1dCA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGJ1Zik7XG4gIGlucHV0ID0gaW5wdXQuc3ViYXJyYXkob2ZzLCBvZnMgKyBsZW4pO1xuICBibGFrZTJiLlVwZGF0ZShjdHgsIGlucHV0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9zdHJpbmcoaGFzaGxlbiwga2V5LCBidWYsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX2JsYWtlMl9jcmVhdGUgKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsdG9yZWFkKXtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoNDA5Nik7XG4gIGlmKHRvcmVhZCA8IDApe1xuICAgIHdoaWxlKHRydWUpe1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCxidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgYnJlYWs7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUodG9yZWFkID4gMCkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCwgKHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkKSk7XG4gICAgICBpZihyZWFkID09IDApIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgICAgdG9yZWFkIC09IHJlYWRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLG9mcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVRyYW5zZm9ybVxudmFyIGNhbWxfTUQ1VHJhbnNmb3JtID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLCBiID0gd1sxXSwgYyA9IHdbMl0sIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDcsIDB4RDc2QUE0NzgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE3LCAweDI0MjA3MERCKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyAzXSwgMjIsIDB4QzFCRENFRUUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA1XSwgMTIsIDB4NDc4N0M2MkEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNywgMHhBODMwNDYxMyk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNywgMHg2OTgwOThEOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOV0sIDEyLCAweDhCNDRGN0FGKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTFdLCAyMiwgMHg4OTVDRDdCRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDcsIDB4NkI5MDExMjIpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE3LCAweEE2Nzk0MzhFKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzE1XSwgMjIsIDB4NDlCNDA4MjEpO1xuXG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDZdLCA5LCAweEMwNDBCMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1RTVBNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDUsIDB4RDYyRjEwNUQpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTBdLCA5LCAweDAyNDQxNDUzKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDRdLCAyMCwgMHhFN0QzRkJDOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDUsIDB4MjFFMUNERTYpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTQsIDB4RjRENTBEODcpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDhdLCAyMCwgMHg0NTVBMTRFRCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDJdLCA5LCAweEZDRUZBM0Y4KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTQsIDB4Njc2RjAyRDkpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNCwgMHhGRkZBMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOF0sIDExLCAweDg3NzFGNjgxKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTRdLCAyMywgMHhGREU1MzgwQyk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDQsIDB4QTRCRUVBNDQpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE2LCAweEY2QkI0QjYwKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzEwXSwgMjMsIDB4QkVCRkJDNzApO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyAwXSwgMTEsIDB4RUFBMTI3RkEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNiwgMHhENEVGMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNCwgMHhEOUQ0RDAzOSk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMl0sIDExLCAweEU2REI5OUU1KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDJdLCAyMywgMHhDNEFDNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNiwgMHhGNDI5MjI0NCk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTUsIDB4QUI5NDIzQTcpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDVdLCAyMSwgMHhGQzkzQTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDNdLCAxMCwgMHg4RjBDQ0M5Mik7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE1LCAweEZGRUZGNDdEKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA2LCAweDZGQTg3RTRGKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4RkUyQ0U2RTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsxM10sIDIxLCAweDRFMDgxMUExKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNiwgMHhGNzUzN0U4Mik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTUsIDB4MkFEN0QyQkIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDldLCAyMSwgMHhFQjg2RDM5MSk7XG5cbiAgICB3WzBdID0gYWRkKGEsIHdbMF0pO1xuICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgd1syXSA9IGFkZChjLCB3WzJdKTtcbiAgICB3WzNdID0gYWRkKGQsIHdbM10pO1xuICB9fSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtsZW46MCxcbiAgICAgICAgICB3Om5ldyBVaW50MzJBcnJheShbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3Nl0pLFxuICAgICAgICAgIGIzMjpiMzIsXG4gICAgICAgICAgYjg6Yjh9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVVcGRhdGUoY3R4LCBpbnB1dCwgaW5wdXRfbGVuKXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICB2YXIgaW5wdXRfcG9zID0gMDtcbiAgY3R4LmxlbiArPSBpbnB1dF9sZW47XG4gIGlmKGluX2J1Zil7XG4gICAgdmFyIG1pc3NpbmcgPSA2NCAtIGluX2J1ZjtcbiAgICBpZihpbnB1dF9sZW4gPCBtaXNzaW5nKSB7XG4gICAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsaW5wdXRfbGVuKSxpbl9idWYpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxtaXNzaW5nKSxpbl9idWYpO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gbWlzc2luZztcbiAgICBpbnB1dF9wb3MgKz0gbWlzc2luZztcbiAgfVxuICB3aGlsZShpbnB1dF9sZW4gPj0gNjQpe1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIDY0KSwgMCk7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSA2NDtcbiAgICBpbnB1dF9wb3MgKz0gNjQ7XG4gIH1cbiAgaWYoaW5wdXRfbGVuKVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIGN0eC5iOFtpbl9idWZdID0gMHg4MDtcbiAgaW5fYnVmICsrO1xuICBpZihpbl9idWYgPiA1Nikge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDY0OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH1cbiAgY3R4LmIzMlsxNF0gPSBjdHgubGVuIDw8IDM7XG4gIGN0eC5iMzJbMTVdID0gKGN0eC5sZW4gPj4gMjkpICYgMHgxRkZGRkZGRjtcbiAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICB2YXIgdCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCA0OyBqKyspXG4gICAgICB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICByZXR1cm4gdDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2J5dGVzKHMsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpO1xuICBjYW1sX01ENVVwZGF0ZShjdHgsYS5zdWJhcnJheShvZnMsIG9mcyArIGxlbiksIGxlbik7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfZXhuX3N0YWNrXS4gRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBwdXNoZWQgaW50byB0aGlzIHN0YWNrIHdoZW5cbmVudGVyaW5nIGEgW3RyeSAuLi4gd2l0aCAuLi5dIGFuZCBwb3BwZWQgb24gZXhpdC4gVGhlbiwgaGFuZGxlcnMgYW5kXG50aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2ZpYmVyX3N0YWNrXS4gVG8gaW5zdGFsbCBhblxuZWZmZWN0IGhhbmRsZXIsIHdlIHB1c2ggYSBuZXcgZmliZXIgaW50byB0aGUgZXhlY3V0aW9uIGNvbnRleHQuXG5cbldlIGhhdmUgYmFzaWNhbGx5IHRoZSBmb2xsb3dpbmcgdHlwZSBmb3IgcmVpZmllZCBjb250aW51YXRpb25zICh0eXBlXG5bY29udGludWF0aW9uXSBpbiBtb2R1bGUgW0VmZmVjdF0gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkpOlxuXG4gIHR5cGUgKCdhLCAnYikgY29udGludWF0aW9uID0gKCdhLCAnYikgc3RhY2sgcmVmXG5cbiAgYW5kIChfLCBfKSBzdGFjayA9XG4gICAgICBDb25zIDogKCdiIC0+IHVuaXQpICogICAgICAgICAgICAgKCogbG93LWxldmVsIGNvbnRpbnVhdGlvbiAqKVxuICAgICAgICAgICAgIChleG4gLT4gdW5pdCkgbGlzdCAqICAgICAgICgqIGV4Y2VwdGlvbiBoYW5kbGVycyAqKVxuICAgICAgICAgICAgICgnYiwgJ2MpIGhhbmRsZXIgKlxuICAgICAgICAgICAgICgnYSwgJ2IpIHN0YWNrXG4gICAgICAgICAgICAgLT4gKCdhLCAnYykgc3RhY2tcbiAgICB8IEVtcHR5IDogKCdhLCAnYSkgc3RhY2tcblxuICBhbmQgKCdhLCdiKSBoYW5kbGVyID0gICAoKiBBcyBpbiBtb2R1bGUgRWZmZWN0IGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgRWZmZWN0LnQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG5Db250aW51YXRpb25zIGFyZSBvbmUtc2hvdC4gQSBjb250aW51YXRpb24gW3JlZiBFbXB0eV0gaGFzIGFscmVhZHlcbmJlZW4gcmVzdW1lZC5cblxuQSBjb250aW51YXRpb24gaXMgYmFzaWNhbGx5IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiBmaWJlcnMsIHdoaWNoIGVhY2hcbmhhcyBpdHMgbG93LWxldmVsIGNvbnRpbnVhdGlvbiwgaXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQgYVxudHJpcGxlIG9mIGhhbmRsZXJzIHRvIGRlYWwgd2l0aCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzIG9yIGFuXG5lZmZlY3QgaXMgcGVyZm9ybWVkLiBXaGVuIHJlc3VtaW5nIGEgY29udGludWF0aW9uLCB0aGUgaW5uZXJtb3N0IGZpYmVyXG5pcyByZXN1bWVkIGZpcnN0LlxuXG5UaGUgaGFuZGxlcnMgYXJlIENQUy10cmFuc2Zvcm1lZCBmdW5jdGlvbnM6IHRoZXkgYWN0dWFsbHkgdGFrZSBhblxuYWRkaXRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvbi5cbiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGlzIGFuIE9DYW1sIGxpc3Qgb2YgZXhjZXB0aW9uIGhhbmRsZXJzXG52YXIgY2FtbF9leG5fc3RhY2sgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1c2hfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcHVzaF90cmFwKGhhbmRsZXIpIHtcbiAgY2FtbF9leG5fc3RhY2s9WzAsaGFuZGxlcixjYW1sX2V4bl9zdGFja107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfZXhuX3N0YWNrKSByZXR1cm4gZnVuY3Rpb24oeCl7dGhyb3cgeDt9XG4gIHZhciBoID0gY2FtbF9leG5fc3RhY2tbMV07XG4gIGNhbWxfZXhuX3N0YWNrPWNhbWxfZXhuX3N0YWNrWzJdO1xuICByZXR1cm4gaFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGhhcyB0aGUgc2hhcGUge2gsIHI6e2ssIHgsIGV9fSB3aGVyZSBoIGlzIGEgdHJpcGxlIG9mIGhhbmRsZXJzXG4vLyAoc2VlIGVmZmVjdC5qcykgYW5kIGssIHggYW5kIGUgYXJlIHRoZSBzYXZlZCBjb250aW51YXRpb24sXG4vLyBleGNlcHRpb24gc3RhY2sgYW5kIGZpYmVyIHN0YWNrIG9mIHRoZSBwYXJlbnQgZmliZXIuXG52YXIgY2FtbF9maWJlcl9zdGFjaztcblxuLy9Qcm92aWRlczpjYW1sX3Jlc3VtZV9zdGFja1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBrKSB7XG4gIGlmICghc3RhY2spIGNhbWxfcmFpc2VfY29uc3RhbnRcbiAgICAgICAgICAgICAgICAgKGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiKSk7XG4gIC8vIFVwZGF0ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCB0aGUgc3RhY2sgb2YgZmliZXJzIGluIFtzdGFja10gaW5cbiAgLy8gb3JkZXIgdG8gcmVzdW1lIHRoZSBjb250aW51YXRpb25cbiAgZG8ge1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6c3RhY2tbM10sIHI6e2s6aywgeDpjYW1sX2V4bl9zdGFjaywgZTpjYW1sX2ZpYmVyX3N0YWNrfX07XG4gICAgayA9IHN0YWNrWzFdO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc3RhY2tbMl07XG4gICAgc3RhY2sgPSBzdGFja1s0XTtcbiAgfSB3aGlsZSAoc3RhY2spXG4gIHJldHVybiBrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF9maWJlclxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX2ZpYmVyKCkge1xuICAvLyBNb3ZlIHRvIHRoZSBwYXJlbnQgZmliZXIsIHJldHVybmluZyB0aGUgcGFyZW50J3MgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuICB2YXIgcmVtID0gY2FtbF9maWJlcl9zdGFjay5yO1xuICBjYW1sX2V4bl9zdGFjayA9IHJlbS54O1xuICBjYW1sX2ZpYmVyX3N0YWNrID0gcmVtLmU7XG4gIHJldHVybiByZW0uaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgazApIHtcbiAgLy8gQWxsb2NhdGUgYSBjb250aW51YXRpb24gaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZVxuICBpZiAoIWNvbnQpIGNvbnQgPSBbMjQ1IC8qY29udGludWF0aW9uKi8sIDBdO1xuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfZmliZXJfc3RhY2suaFszXTtcbiAgLy8gQ29ucyB0aGUgY3VycmVudCBmaWJlciBvbnRvIHRoZSBjb250aW51YXRpb246XG4gIC8vICAgY29udCA6PSBDb25zIChrLCBleG5fc3RhY2ssIGhhbmRsZXJzLCAhY29udClcbiAgY29udFsxXSA9IFswLGswLGNhbWxfZXhuX3N0YWNrLGNhbWxfZmliZXJfc3RhY2suaCxjb250WzFdXTtcbiAgLy8gTW92ZSB0byBwYXJlbnQgZmliZXIgYW5kIGV4ZWN1dGUgdGhlIGVmZmVjdCBoYW5kbGVyIHRoZXJlXG4gIC8vIFRoZSBoYW5kbGVyIGlzIGRlZmluZWQgaW4gU3RkbGliLkVmZmVjdCwgc28gd2Uga25vdyB0aGF0IHRoZSBhcml0eSBtYXRjaGVzXG4gIHZhciBrMSA9IGNhbWxfcG9wX2ZpYmVyKCk7XG4gIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/aGFuZGxlcihlZmYsY29udCxrMSxrMSlcbiAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsW2VmZixjb250LGsxLGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgZnVuY3Rpb24gY2FsbChpLCB4KSB7XG4gICAgdmFyIGY9Y2FtbF9maWJlcl9zdGFjay5oW2ldO1xuICAgIHZhciBhcmdzID0gW3gsIGNhbWxfcG9wX2ZpYmVyKCldO1xuICAgIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/Y2FtbF9jYWxsX2dlbihmLGFyZ3MpXG4gICAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncyk7XG4gIH1cbiAgZnVuY3Rpb24gaHZhbCh4KSB7XG4gICAgLy8gQ2FsbCBbaHZdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgxLCB4KTtcbiAgfVxuICBmdW5jdGlvbiBoZXhuKGUpIHtcbiAgICAvLyBDYWxsIFtoeF0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDIsIGUpO1xuICB9XG4gIHJldHVybiBbMCwgaHZhbCwgWzAsIGhleG4sIDBdLCBbMCwgaHYsIGh4LCBoZl0sIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjaz1jb250WzFdO1xuICBjb250WzFdPTA7XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1xuLy9SZXF1aXJlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjKGNvbnQsIGh2YWwsIGhleG4sIGhlZmYpIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBzdGFja1szXSA9IFswLCBodmFsLCBoZXhuLCBoZWZmXTtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX25ldyh1bml0KXtcbiAgICByZXR1cm4ge2NvbmRpdGlvbjoxfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fd2FpdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fd2FpdCh0LG11dGV4dCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0KHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWxcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQoKXtcbiAgY2FtbF9mYWlsd2l0aChcIkVmZmVjdCBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc1xudmFyIGNhbWxfZG9tYWluX2RscyA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldChvbGQsbikge1xuICBpZihjYW1sX2RvbWFpbl9kbHMgIT09IG9sZCkgcmV0dXJuIDBcbiAgY2FtbF9kb21haW5fZGxzID0gbjtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2dldCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpe1xuICByZXR1cm4gcmVmWzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2NhcyhyZWYsbyxuKSB7XG4gIGlmKHJlZlsxXSA9PT0gbyl7XG4gICAgcmVmWzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZmV0Y2hfYWRkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19leGNoYW5nZVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2UocmVmLCB2KSB7XG4gIHZhciByID0gcmVmWzFdO1xuICByZWZbMV0gPSB2O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5cbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4odW5pdCkge1xuICByZXR1cm4gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuX1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3NldF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZShfbmFtZSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbmZ1bmN0aW9uIGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50KHVuaXQpIHsgcmV0dXJuIDEgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2lkXG52YXIgY2FtbF9kb21haW5faWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246ID49IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLHRlcm1fc3luYyl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayh0ZXJtX3N5bmNbMl0pO1xuICAgIC8vVE9ETzogZml4IGV4biBjYXNlXG4gICAgdGVybV9zeW5jWzFdID0gWzAsIFswLCByZXNdXTtcbiAgICByZXR1cm4gaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZixtdXRleCl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gICAgcmV0dXJuIGlkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQodW5pdCl7XG4gICAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KHVuaXQpe1xuICAgIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZSkgZmlsZS5jbG9zZSgpO1xuICBkZWxldGUgY2FtbF9zeXNfZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSxpZHgpIHtcbiAgaWYoaWR4ID09IHVuZGVmaW5lZCl7XG4gICAgaWR4ID0gY2FtbF9zeXNfZmRzLmxlbmd0aDtcbiAgfVxuICBjYW1sX3N5c19mZHNbaWR4XSA9IGZpbGU7XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbiAobmFtZSwgZmxhZ3MsIF9wZXJtcykge1xuICB2YXIgZiA9IHt9O1xuICB3aGlsZShmbGFncyl7XG4gICAgc3dpdGNoKGZsYWdzWzFdKXtcbiAgICBjYXNlIDA6IGYucmRvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDE6IGYud3Jvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDI6IGYuYXBwZW5kID0gMTticmVhaztcbiAgICBjYXNlIDM6IGYuY3JlYXRlID0gMTticmVhaztcbiAgICBjYXNlIDQ6IGYudHJ1bmNhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNTogZi5leGNsID0gMTsgYnJlYWs7XG4gICAgY2FzZSA2OiBmLmJpbmFyeSA9IDE7YnJlYWs7XG4gICAgY2FzZSA3OiBmLnRleHQgPSAxO2JyZWFrO1xuICAgIGNhc2UgODogZi5ub25ibG9jayA9IDE7YnJlYWs7XG4gICAgfVxuICAgIGZsYWdzPWZsYWdzWzJdO1xuICB9XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCxmKTtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGZpbGUsIHVuZGVmaW5lZCk7XG59XG4oZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBuZXcgTWxGYWtlRmRfb3V0KGZkLCBmbGFncylcbiAgfVxuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMCx7cmRvbmx5OjEsYWx0bmFtZTpcIi9kZXYvc3RkaW5cIixpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDApO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMSx7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDEpO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMix7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDIpO1xufSkoKVxuXG5cbi8vIG9jYW1sIENoYW5uZWxzXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lKGNoYW5pZCwgbmFtZSkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5uYW1lID0gbmFtZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0IChjYXB0dXJlZCwgaW50byl7XG4gIHZhciB0b19yZXN0b3JlID0gY2FtbF9tbF9jaGFubmVsX2dldChjYXB0dXJlZCk7XG4gIHZhciBuZXdfID0gY2FtbF9tbF9jaGFubmVsX2dldChpbnRvKTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjYXB0dXJlZF0gPSBuZXdfOyAvLyBYWFhcbiAgcmV0dXJuIHRvX3Jlc3RvcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9yZXN0b3JlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZSAoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpe1xuICBjYW1sX21sX2NoYW5uZWxzW2NhcHR1cmVkXSA9IHRvX3Jlc3RvcmU7IC8vIFhYWFxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX2dldChpZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tpZF07IC8vIFhYWFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pc19iaW5hcnlfbW9kZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2VcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZihjaGFuLm9wZW5lZCkge1xuICAgIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gICAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZCk7XG4gICAgY2hhbi5mZCA9IC0xO1xuICAgIGNoYW4uYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5sZW5ndGgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemVfNjQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjaGFuLmZpbGUubGVuZ3RoICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0KGNoYW5pZCxmKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm91dHB1dCA9IChmdW5jdGlvbiAocykge2Yocyl9KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZmlsbCAoY2hhbikge1xuICBpZihjaGFuLnJlZmlsbCAhPSBudWxsKXtcbiAgICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgICB2YXIgc3RyX2EgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIpO1xuICAgIGlmIChzdHJfYS5sZW5ndGggPT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKXtcbiAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpO1xuICAgICAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgICAgIGNoYW4uYnVmZmVyID0gYjtcbiAgICAgIH1cbiAgICAgIGNoYW4uYnVmZmVyLnNldChzdHJfYSxjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgICAgY2hhbi5vZmZzZXQgKz0gc3RyX2EubGVuZ3RoO1xuICAgICAgY2hhbi5idWZmZXJfbWF4ICs9IHN0cl9hLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCBjaGFuLmJ1ZmZlcl9tYXgsIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2JpZ2FycmF5IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmxvY2sgKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYobCA8PSBhdmFpbCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBsO1xuICB9XG4gIGVsc2UgaWYoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGF2YWlsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBhdmFpbDtcbiAgICBuID0gYXZhaWw7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgIGlmKG4gPiBhdmFpbCkgbiA9IGF2YWlsO1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZSAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgaGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgZnVuY3Rpb24gYmxvY2soYnVmZmVyLCBvZmZzZXQsIG4pIHtcbiAgICB2YXIgciA9IDA7XG4gICAgd2hpbGUociA8IG4pe1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgICAgIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCtyXSA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICAgICAgY2hhbi5idWZmZXJfY3VycisrO1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB2YXIgciA9IGJsb2NrKGhlYWRlciwgMCwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgaWYociA9PSAwKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgZWxzZSBpZiAociA8IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3RcIik7XG4gIHZhciBsZW4gPSBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChjYW1sX2J5dGVzX29mX2FycmF5KGhlYWRlciksIDApO1xuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuICsgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgYnVmLnNldChoZWFkZXIsMCk7XG4gIHZhciByID0gYmxvY2soYnVmLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUsIGxlbilcbiAgaWYociA8IGxlbilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3QgXCIgKyByICsgXCIgIFwiICsgbGVuKTtcbiAgdmFyIG9mZnNldCA9IFswXTtcbiAgdmFyIHJlcyA9IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIG9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0ID0gY2hhbi5vZmZzZXQgKyBvZmZzZXRbMF07XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcChjKSB7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlKGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2NoYXIgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2NoYXIsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfaW50IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgNDsgaSsrKXtcbiAgICByZXMgPSAocmVzIDw8IDgpICsgY2FtbF9tbF9pbnB1dF9jaGFyKGNoYW5pZCkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYocG9zID49IGNoYW4ub2Zmc2V0IC0gY2hhbi5idWZmZXJfbWF4XG4gICAgICYmIHBvcyA8PSBjaGFuLm9mZnNldFxuICAgICAmJiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5KSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbihjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQscG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3Bvc19pbihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCAtIChjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luXzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX3Bvc19pbihjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X3NjYW5fbGluZShjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgdmFyIHAgPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBkbyB7XG4gICAgaWYocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPiAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyKSwwKTtcbiAgICAgICAgcCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICB9XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgICAgdmFyIHByZXZfbWF4ID0gY2hhbi5idWZmZXJfbWF4O1xuICAgICAgY2FtbF9yZWZpbGwgKGNoYW4pO1xuICAgICAgaWYocHJldl9tYXggPT0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPSAxMCk7XG4gIHJldHVybiAocCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9mbHVzaCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBmbHVzaCBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBpZighY2hhbi5idWZmZXIgfHwgY2hhbi5idWZmZXJfY3VyciA9PSAwKSByZXR1cm4gMDtcbiAgaWYoY2hhbi5vdXRwdXQpIHtcbiAgICBjaGFuLm91dHB1dChjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmZpbGUud3JpdGUoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgfVxuICBjaGFuLm9mZnNldCArPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vb3V0cHV0IHRvIG91dF9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X3RhXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiXG4gIH1cbiAgc3dpdGNoKGNoYW4uYnVmZmVyZWQpe1xuICBjYXNlIDA6IC8vIFVuYnVmZmVyZWRcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVha1xuICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrO1xuICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICB2YXIgaWQgPSBidWZmZXIubGFzdEluZGV4T2YoMTApXG4gICAgaWYoaWQgPCAwKSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoMCwgaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGlkICsgMTtcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXksIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dChjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pe1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksb2Zmc2V0LGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9jaGFyIChjaGFuaWQsYykge1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nLCBjYW1sX21sX291dHB1dCxjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlIChjaGFuaWQsdixmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyl7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dChjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dF82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX291dChjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0XzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9wb3Nfb3V0KGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50IChjaGFuaWQsaSkge1xuICB2YXIgYXJyID0gWyhpPj4yNCkgJiAweEZGLChpPj4xNikgJiAweEZGLChpPj44KSAmIDB4RkYsaSAmIDB4RkYgXTtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lzX2J1ZmZlcmVkKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpLmJ1ZmZlcmVkID8gMSA6IDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2J1ZmZlcmVkKGNoYW5pZCx2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA9IHY7XG4gIGlmKCF2KSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHJldHVybiAwXG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG52YXIgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIoZXZlbnRfbmFtZSwgZXZlbnRfdGFnLCBldmVudF90eXBlKSB7XG4gIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ICs9IDE7XG4gIHJldHVybiBbMCwgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgsIGV2ZW50X25hbWUsIGV2ZW50X3R5cGUsIGV2ZW50X3RhZ107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKGV2ZW50LCBldmVudF9jb250ZW50KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfYXJlX2FjdGl2ZVxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfYXJlX2FjdGl2ZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCJcbi8vUHJvdmlkZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjFcbnZhciB6c3RkX2RlY29tcHJlc3MgPSAoZnVuY3Rpb24gKCkge1xuXCJ1c2Ugc3RyaWN0XCI7XG4vLyBhbGlhc2VzIGZvciBzaG9ydGVyIGNvbXByZXNzZWQgY29kZSAobW9zdCBtaW5pZmVycyBkb24ndCBkbyB0aGlzKVxudmFyIGFiID0gQXJyYXlCdWZmZXIsIHU4ID0gVWludDhBcnJheSwgdTE2ID0gVWludDE2QXJyYXksIGkxNiA9IEludDE2QXJyYXksIHUzMiA9IFVpbnQzMkFycmF5LCBpMzIgPSBJbnQzMkFycmF5O1xudmFyIHNsYyA9IGZ1bmN0aW9uICh2LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5zbGljZSlcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5zbGljZS5jYWxsKHYsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgdmFyIG4gPSBuZXcgdTgoZSAtIHMpO1xuICAgIG4uc2V0KHYuc3ViYXJyYXkocywgZSkpO1xuICAgIHJldHVybiBuO1xufTtcbnZhciBmaWxsID0gZnVuY3Rpb24gKHYsIG4sIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmZpbGwpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuZmlsbC5jYWxsKHYsIG4sIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgZm9yICg7IHMgPCBlOyArK3MpXG4gICAgICAgIHZbc10gPSBuO1xuICAgIHJldHVybiB2O1xufTtcbnZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwodiwgdCwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB3aGlsZSAocyA8IGUpIHtcbiAgICAgICAgdlt0KytdID0gdltzKytdO1xuICAgIH1cbn07XG4vKipcbiAqIENvZGVzIGZvciBlcnJvcnMgZ2VuZXJhdGVkIHdpdGhpbiB0aGlzIGxpYnJhcnlcbiAqL1xuLy8gZXJyb3IgY29kZXNcbnZhciBlYyA9IFtcbiAgICAnaW52YWxpZCB6c3RkIGRhdGEnLFxuICAgICd3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpJyxcbiAgICAnaW52YWxpZCBibG9jayB0eXBlJyxcbiAgICAnRlNFIGFjY3VyYWN5IHRvbyBoaWdoJyxcbiAgICAnbWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrJyxcbiAgICAndW5leHBlY3RlZCBFT0YnXG5dO1xuO1xudmFyIGVyciA9IGZ1bmN0aW9uIChpbmQsIG1zZywgbnQpIHtcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgfHwgZWNbaW5kXSk7XG4gICAgZS5jb2RlID0gaW5kO1xuICAgIGlmICghbnQpXG4gICAgICAgIHRocm93IGU7XG4gICAgcmV0dXJuIGU7XG59O1xudmFyIHJiID0gZnVuY3Rpb24gKGQsIGIsIG4pIHtcbiAgICB2YXIgaSA9IDAsIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKVxuICAgICAgICBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbn07XG52YXIgYjQgPSBmdW5jdGlvbiAoZCwgYikgeyByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7IH07XG4vLyByZWFkIFpzdGFuZGFyZCBmcmFtZSBoZWFkZXJcbnZhciByemZoID0gZnVuY3Rpb24gKGRhdCwgdykge1xuICAgIHZhciBuMyA9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkgfCAoZGF0WzJdIDw8IDE2KTtcbiAgICBpZiAobjMgPT0gMHgyRkI1MjggJiYgZGF0WzNdID09IDI1Mykge1xuICAgICAgICAvLyBac3RhbmRhcmRcbiAgICAgICAgdmFyIGZsZyA9IGRhdFs0XTtcbiAgICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgICAgdmFyIHNzID0gKGZsZyA+PiA1KSAmIDEsIGNjID0gKGZsZyA+PiAyKSAmIDEsIGRmID0gZmxnICYgMywgZmNmID0gZmxnID4+IDY7XG4gICAgICAgIGlmIChmbGcgJiA4KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyBieXRlXG4gICAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgICAgLy8gZGljdCBieXRlc1xuICAgICAgICB2YXIgZGIgPSBkZiA9PSAzID8gNCA6IGRmO1xuICAgICAgICAvLyBkaWN0aW9uYXJ5IGlkXG4gICAgICAgIHZhciBkaSA9IHJiKGRhdCwgYnQsIGRiKTtcbiAgICAgICAgYnQgKz0gZGI7XG4gICAgICAgIC8vIGZyYW1lIHNpemUgYnl0ZXNcbiAgICAgICAgdmFyIGZzYiA9IGZjZiA/ICgxIDw8IGZjZikgOiBzcztcbiAgICAgICAgLy8gZnJhbWUgc291cmNlIHNpemVcbiAgICAgICAgdmFyIGZzcyA9IHJiKGRhdCwgYnQsIGZzYikgKyAoKGZjZiA9PSAxKSAmJiAyNTYpO1xuICAgICAgICAvLyB3aW5kb3cgc2l6ZVxuICAgICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICAgIGlmICghc3MpIHtcbiAgICAgICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgICAgICB2YXIgd2IgPSAxIDw8ICgxMCArIChkYXRbNV0gPj4gMykpO1xuICAgICAgICAgICAgd3MgPSB3YiArICh3YiA+PiAzKSAqIChkYXRbNV0gJiA3KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KVxuICAgICAgICAgICAgZXJyKDEpO1xuICAgICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09IDEgPyAoZnNzIHx8IHdzKSA6IHcgPyAwIDogd3MpICsgMTIpO1xuICAgICAgICBidWZbMF0gPSAxLCBidWZbNF0gPSA0LCBidWZbOF0gPSA4O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgbDogMCxcbiAgICAgICAgICAgIGQ6IGRpLFxuICAgICAgICAgICAgdzogKHcgJiYgdyAhPSAxKSA/IHcgOiBidWYuc3ViYXJyYXkoMTIpLFxuICAgICAgICAgICAgZTogd3MsXG4gICAgICAgICAgICBvOiBuZXcgaTMyKGJ1Zi5idWZmZXIsIDAsIDMpLFxuICAgICAgICAgICAgdTogZnNzLFxuICAgICAgICAgICAgYzogY2MsXG4gICAgICAgICAgICBtOiBNYXRoLm1pbigxMzEwNzIsIHdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICgoKG4zID4+IDQpIHwgKGRhdFszXSA8PCAyMCkpID09IDB4MTg0RDJBNSkge1xuICAgICAgICAvLyBza2lwcGFibGVcbiAgICAgICAgcmV0dXJuIGI0KGRhdCwgNCkgKyA4O1xuICAgIH1cbiAgICBlcnIoMCk7XG59O1xuLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbnZhciBtc2IgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgdmFyIGJpdHMgPSAwO1xuICAgIGZvciAoOyAoMSA8PCBiaXRzKSA8PSB2YWw7ICsrYml0cylcbiAgICAgICAgO1xuICAgIHJldHVybiBiaXRzIC0gMTtcbn07XG4vLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG52YXIgcmZzZSA9IGZ1bmN0aW9uIChkYXQsIGJ0LCBtYWwpIHtcbiAgICAvLyB0YWJsZSBwb3NcbiAgICB2YXIgdHBvcyA9IChidCA8PCAzKSArIDQ7XG4gICAgLy8gYWNjdXJhY3kgbG9nXG4gICAgdmFyIGFsID0gKGRhdFtidF0gJiAxNSkgKyA1O1xuICAgIGlmIChhbCA+IG1hbClcbiAgICAgICAgZXJyKDMpO1xuICAgIC8vIHNpemVcbiAgICB2YXIgc3ogPSAxIDw8IGFsO1xuICAgIC8vIHByb2JhYmlsaXRpZXMgc3ltYm9scyAgcmVwZWF0ICAgaW5kZXggICBoaWdoIHRocmVzaG9sZFxuICAgIHZhciBwcm9icyA9IHN6LCBzeW0gPSAtMSwgcmUgPSAtMSwgaSA9IC0xLCBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgICAgdmFyIGJpdHMgPSBtc2IocHJvYnMgKyAxKTtcbiAgICAgICAgdmFyIGNidCA9IHRwb3MgPj4gMztcbiAgICAgICAgLy8gbWFza1xuICAgICAgICB2YXIgbXNrID0gKDEgPDwgKGJpdHMgKyAxKSkgLSAxO1xuICAgICAgICB2YXIgdmFsID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHRwb3MgJiA3KSkgJiBtc2s7XG4gICAgICAgIC8vIG1hc2sgKDEgZmV3ZXIgYml0KVxuICAgICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgICAvLyBtYXggc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIG1zdiA9IG1zayAtIHByb2JzIC0gMTtcbiAgICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIHN2YWwgPSB2YWwgJiBtc2sxZmI7XG4gICAgICAgIGlmIChzdmFsIDwgbXN2KVxuICAgICAgICAgICAgdHBvcyArPSBiaXRzLCB2YWwgPSBzdmFsO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cyArIDE7XG4gICAgICAgICAgICBpZiAodmFsID4gbXNrMWZiKVxuICAgICAgICAgICAgICAgIHZhbCAtPSBtc3Y7XG4gICAgICAgIH1cbiAgICAgICAgZnJlcVsrK3N5bV0gPSAtLXZhbDtcbiAgICAgICAgaWYgKHZhbCA9PSAtMSkge1xuICAgICAgICAgICAgcHJvYnMgKz0gdmFsO1xuICAgICAgICAgICAgc3ltc1stLWh0XSA9IHN5bTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcm9icyAtPSB2YWw7XG4gICAgICAgIGlmICghdmFsKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgLy8gcmVwZWF0IGJ5dGVcbiAgICAgICAgICAgICAgICB2YXIgcmJ0ID0gdHBvcyA+PiAzO1xuICAgICAgICAgICAgICAgIHJlID0gKChkYXRbcmJ0XSB8IChkYXRbcmJ0ICsgMV0gPDwgOCkpID4+ICh0cG9zICYgNykpICYgMztcbiAgICAgICAgICAgICAgICB0cG9zICs9IDI7XG4gICAgICAgICAgICAgICAgc3ltICs9IHJlO1xuICAgICAgICAgICAgfSB3aGlsZSAocmUgPT0gMyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN5bSA+IDI1NSB8fCBwcm9icylcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzeW1wb3MgPSAwO1xuICAgIC8vIHN5bSBzdGVwIChjb3ByaW1lIHdpdGggc3ogLSBmb3JtdWxhIGZyb20genN0ZCBzb3VyY2UpXG4gICAgdmFyIHNzdGVwID0gKHN6ID4+IDEpICsgKHN6ID4+IDMpICsgMztcbiAgICAvLyBzeW0gbWFza1xuICAgIHZhciBzbWFzayA9IHN6IC0gMTtcbiAgICBmb3IgKHZhciBzID0gMDsgcyA8PSBzeW07ICsrcykge1xuICAgICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgICBpZiAoc2YgPCAxKSB7XG4gICAgICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIHNwbGl0IGludG8gdHdvIGxvb3BzIGluIHpzdGQgdG8gYXZvaWQgYnJhbmNoaW5nLCBidXQgYXMgSlMgaXMgaGlnaGVyLWxldmVsIHRoYXQgaXMgdW5uZWNlc3NhcnlcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHNmOyArK2kpIHtcbiAgICAgICAgICAgIHN5bXNbc3ltcG9zXSA9IHM7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICAgICAgfSB3aGlsZSAoc3ltcG9zID49IGh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgICAgLy8gbmV4dCBzdGF0ZVxuICAgICAgICB2YXIgbnMgPSBkc3RhdGVbc3ltc1tpXV0rKztcbiAgICAgICAgLy8gbnVtIGJpdHNcbiAgICAgICAgdmFyIG5iID0gbmJpdHNbaV0gPSBhbCAtIG1zYihucyk7XG4gICAgICAgIG5zdGF0ZVtpXSA9IChucyA8PCBuYikgLSBzejtcbiAgICB9XG4gICAgcmV0dXJuIFsodHBvcyArIDcpID4+IDMsIHtcbiAgICAgICAgICAgIGI6IGFsLFxuICAgICAgICAgICAgczogc3ltcyxcbiAgICAgICAgICAgIG46IG5iaXRzLFxuICAgICAgICAgICAgdDogbnN0YXRlXG4gICAgICAgIH1dO1xufTtcbi8vIHJlYWQgaHVmZm1hblxudmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsIHdjID0gLTE7XG4gICAgLy8gICAgYnVmZmVyICAgICAgICAgICAgIGhlYWRlciBieXRlXG4gICAgdmFyIGJ1ZiA9IG5ldyB1OCgyOTIpLCBoYiA9IGRhdFtidF07XG4gICAgLy8gaHVmZm1hbiB3ZWlnaHRzXG4gICAgdmFyIGh3ID0gYnVmLnN1YmFycmF5KDAsIDI1Nik7XG4gICAgLy8gcmFuayBjb3VudFxuICAgIHZhciByYyA9IGJ1Zi5zdWJhcnJheSgyNTYsIDI2OCk7XG4gICAgLy8gcmFuayBpbmRleFxuICAgIHZhciByaSA9IG5ldyB1MTYoYnVmLmJ1ZmZlciwgMjY4KTtcbiAgICAvLyBOT1RFOiBhdCB0aGlzIHBvaW50IGJ0IGlzIDEgbGVzcyB0aGFuIGV4cGVjdGVkXG4gICAgaWYgKGhiIDwgMTI4KSB7XG4gICAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICAgIHZhciBfYSA9IHJmc2UoZGF0LCBidCArIDEsIDYpLCBlYnQgPSBfYVswXSwgZmR0ID0gX2FbMV07XG4gICAgICAgIGJ0ICs9IGhiO1xuICAgICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgICAvLyBsYXN0IGJ5dGVcbiAgICAgICAgdmFyIGxiID0gZGF0W2J0XTtcbiAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgICAgdmFyIHN0MSA9IDAsIHN0MiA9IDAsIGJ0cjEgPSBmZHQuYiwgYnRyMiA9IGJ0cjE7XG4gICAgICAgIC8vIGZzZSBwb3NcbiAgICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgICAgdmFyIGZwb3MgPSAoKytidCA8PCAzKSAtIDggKyBtc2IobGIpO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjE7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QxICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIxKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICAgICAgZnBvcyAtPSBidHIyO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QyICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIyKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDJdO1xuICAgICAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgICAgICBzdDEgPSBmZHQudFtzdDFdO1xuICAgICAgICAgICAgYnRyMiA9IGZkdC5uW3N0Ml07XG4gICAgICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgICB9XG4gICAgICAgIGlmICgrK3djID4gMjU1KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgICAgZm9yICg7IGkgPCB3YzsgaSArPSAyKSB7XG4gICAgICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgICAgIGh3W2ldID0gYnl0ZSA+PiA0O1xuICAgICAgICAgICAgaHdbaSArIDFdID0gYnl0ZSAmIDE1O1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgLy8gYml0cyBtdXN0IGJlIGF0IG1vc3QgMTEsIHNhbWUgYXMgd2VpZ2h0XG4gICAgICAgIGlmICh3dCA+IDExKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICB3ZXMgKz0gd3QgJiYgKDEgPDwgKHd0IC0gMSkpO1xuICAgIH1cbiAgICAvLyBtYXggYml0c1xuICAgIHZhciBtYiA9IG1zYih3ZXMpICsgMTtcbiAgICAvLyB0YWJsZSBzaXplXG4gICAgdmFyIHRzID0gMSA8PCBtYjtcbiAgICAvLyByZW1haW5pbmcgc3VtXG4gICAgdmFyIHJlbSA9IHRzIC0gd2VzO1xuICAgIC8vIG11c3QgYmUgcG93ZXIgb2YgMlxuICAgIGlmIChyZW0gJiAocmVtIC0gMSkpXG4gICAgICAgIGVycigwKTtcbiAgICBod1t3YysrXSA9IG1zYihyZW0pICsgMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgKytyY1tod1tpXSA9IHd0ICYmIChtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksIG5iID0gaGJ1Zi5zdWJhcnJheSh0cyk7XG4gICAgcmlbbWJdID0gMDtcbiAgICBmb3IgKGkgPSBtYjsgaSA+IDA7IC0taSkge1xuICAgICAgICB2YXIgcHYgPSByaVtpXTtcbiAgICAgICAgZmlsbChuYiwgaSwgcHYsIHJpW2kgLSAxXSA9IHB2ICsgcmNbaV0gKiAoMSA8PCAobWIgLSBpKSkpO1xuICAgIH1cbiAgICBpZiAocmlbMF0gIT0gdHMpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgYml0cyA9IGh3W2ldO1xuICAgICAgICBpZiAoYml0cykge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSByaVtiaXRzXTtcbiAgICAgICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgcmlbYml0c10gPSBjb2RlICsgKDEgPDwgKG1iIC0gYml0cykpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2J0LCB7XG4gICAgICAgICAgICBuOiBuYixcbiAgICAgICAgICAgIGI6IG1iLFxuICAgICAgICAgICAgczogc3ltc1xuICAgICAgICB9XTtcbn07XG4vLyBUYWJsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoaXM6XG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbi8vIGRlZmF1bHQgbGl0ZXJhbCBsZW5ndGggdGFibGVcbnZhciBkbGx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsIDE0NiwgNFxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBtYXRjaCBsZW5ndGggdGFibGVcbnZhciBkbWx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCAzNiwgOVxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBvZmZzZXQgY29kZSB0YWJsZVxudmFyIGRvY3QgPSAvKiNfX1BVUkVfXyAqLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMiwgMTMyLCAxNiwgNjYsIDEwMiwgNzAsIDY4LCA2OCwgNjgsIDY4LCAzNiwgNzMsIDJcbl0pLCAwLCA1KVsxXTtcbi8vIGJpdHMgdG8gYmFzZWxpbmVcbnZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsIGJsID0gbmV3IGkzMihsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgYmxbaV0gPSBzO1xuICAgICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xufTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJpdHNcbnZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTM0Njc4MDIwLCAyMDIwNTAwNTcsIDI2OTQyMjA5M1xuXSkpLmJ1ZmZlciwgMCwgMzYpO1xuLy8gbGl0ZXJhbCBsZW5ndGggYmFzZWxpbmVcbnZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuLy8gbWF0Y2ggbGVuZ3RoIGJpdHNcbnZhciBtbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTE3NzY5MjIwLCAxODUyMDcwNDgsIDI1MjU3OTA4NCwgMTZcbl0pKS5idWZmZXIsIDAsIDUzKTtcbi8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxudmFyIG1sYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKG1sYiwgMyk7XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW1cbnZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsIHNzID0gb3V0Lmxlbmd0aCwgbGIgPSBkYXRbbGVuIC0gMV0sIG1zayA9ICgxIDw8IGh1LmIpIC0gMSwgZWIgPSAtaHUuYjtcbiAgICBpZiAoIWxiKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN0ID0gMCwgYnRyID0gaHUuYiwgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLCBpID0gLTE7XG4gICAgZm9yICg7IHBvcyA+IGViICYmIGkgPCBzczspIHtcbiAgICAgICAgdmFyIGNidCA9IHBvcyA+PiAzO1xuICAgICAgICB2YXIgdmFsID0gKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAocG9zICYgNyk7XG4gICAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgICAgb3V0WysraV0gPSBodS5zW3N0XTtcbiAgICAgICAgcG9zIC09IChidHIgPSBodS5uW3N0XSk7XG4gICAgfVxuICAgIGlmIChwb3MgIT0gZWIgfHwgaSArIDEgIT0gc3MpXG4gICAgICAgIGVycigwKTtcbn07XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbi8vIFRPRE86IHVzZSB3b3JrZXJzIHRvIHBhcmFsbGVsaXplXG52YXIgZGh1NCA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgYnQgPSA2O1xuICAgIHZhciBzcyA9IG91dC5sZW5ndGgsIHN6MSA9IChzcyArIDMpID4+IDIsIHN6MiA9IHN6MSA8PCAxLCBzejMgPSBzejEgKyBzejI7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSksIG91dC5zdWJhcnJheSgwLCBzejEpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzJdIHwgKGRhdFszXSA8PCA4KSksIG91dC5zdWJhcnJheShzejEsIHN6MiksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6Miwgc3ozKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQpLCBvdXQuc3ViYXJyYXkoc3ozKSwgaHUpO1xufTtcbi8vIHJlYWQgWnN0YW5kYXJkIGJsb2NrXG52YXIgcnpiID0gZnVuY3Rpb24gKGRhdCwgc3QsIG91dCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgYnQgPSBzdC5iO1xuICAgIC8vICAgIGJ5dGUgMCAgICAgICAgYmxvY2sgdHlwZVxuICAgIHZhciBiMCA9IGRhdFtidF0sIGJ0eXBlID0gKGIwID4+IDEpICYgMztcbiAgICBzdC5sID0gYjAgJiAxO1xuICAgIHZhciBzeiA9IChiMCA+PiAzKSB8IChkYXRbYnQgKyAxXSA8PCA1KSB8IChkYXRbYnQgKyAyXSA8PCAxMyk7XG4gICAgLy8gZW5kIGJ5dGUgZm9yIGJsb2NrXG4gICAgdmFyIGVidCA9IChidCArPSAzKSArIHN6O1xuICAgIGlmIChidHlwZSA9PSAxKSB7XG4gICAgICAgIGlmIChidCA+PSBkYXQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdC5iID0gYnQgKyAxO1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBmaWxsKG91dCwgZGF0W2J0XSwgc3QueSwgc3QueSArPSBzeik7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxsKG5ldyB1OChzeiksIGRhdFtidF0pO1xuICAgIH1cbiAgICBpZiAoZWJ0ID4gZGF0Lmxlbmd0aClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChidHlwZSA9PSAwKSB7XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgICAgIHN0LnkgKz0gc3o7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09IDIpIHtcbiAgICAgICAgLy8gICAgYnl0ZSAzICAgICAgICBsaXQgYnR5cGUgICAgIHNpemUgZm9ybWF0XG4gICAgICAgIHZhciBiMyA9IGRhdFtidF0sIGxidCA9IGIzICYgMywgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgICAvLyBsaXQgc3JjIHNpemUgIGxpdCBjbXAgc3ogNCBzdHJlYW1zXG4gICAgICAgIHZhciBsc3MgPSBiMyA+PiA0LCBsY3MgPSAwLCBzNCA9IDA7XG4gICAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgICAgICBpZiAoc2YgJiAxKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChzZiAmIDIpICYmIChkYXRbKytidF0gPDwgMTIpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgPSBiMyA+PiAzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczQgPSBzZjtcbiAgICAgICAgICAgIGlmIChzZiA8IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9ICgoZGF0WysrYnRdICYgNjMpIDw8IDQpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMik7XG4gICAgICAgICAgICBlbHNlIGlmIChzZiA9PSAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiAzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDIpIHwgKGRhdFsrK2J0XSA8PCA2KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICAgICAgLy8gYWRkIGxpdGVyYWxzIHRvIGVuZCAtIGNhbiBuZXZlciBvdmVybGFwIHdpdGggYmFja3JlZmVyZW5jZXMgYmVjYXVzZSB1bnVzZWQgbGl0ZXJhbHMgYWx3YXlzIGFwcGVuZGVkXG4gICAgICAgIHZhciBidWYgPSBvdXQgPyBvdXQuc3ViYXJyYXkoc3QueSwgc3QueSArIHN0Lm0pIDogbmV3IHU4KHN0Lm0pO1xuICAgICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgICAgdmFyIHNwbCA9IGJ1Zi5sZW5ndGggLSBsc3M7XG4gICAgICAgIGlmIChsYnQgPT0gMClcbiAgICAgICAgICAgIGJ1Zi5zZXQoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsc3MpLCBzcGwpO1xuICAgICAgICBlbHNlIGlmIChsYnQgPT0gMSlcbiAgICAgICAgICAgIGZpbGwoYnVmLCBkYXRbYnQrK10sIHNwbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaHVmZm1hbiB0YWJsZVxuICAgICAgICAgICAgdmFyIGh1ID0gc3QuaDtcbiAgICAgICAgICAgIGlmIChsYnQgPT0gMikge1xuICAgICAgICAgICAgICAgIHZhciBodWQgPSByaHUoZGF0LCBidCk7XG4gICAgICAgICAgICAgICAgLy8gc3VidHJhY3QgZGVzY3JpcHRpb24gbGVuZ3RoXG4gICAgICAgICAgICAgICAgbGNzICs9IGJ0IC0gKGJ0ID0gaHVkWzBdKTtcbiAgICAgICAgICAgICAgICBzdC5oID0gaHUgPSBodWRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghaHUpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgKHM0ID8gZGh1NCA6IGRodSkoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsY3MpLCBidWYuc3ViYXJyYXkoc3BsKSwgaHUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgICAgdmFyIG5zID0gZGF0W2J0KytdO1xuICAgICAgICBpZiAobnMpIHtcbiAgICAgICAgICAgIGlmIChucyA9PSAyNTUpXG4gICAgICAgICAgICAgICAgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdGMDA7XG4gICAgICAgICAgICBlbHNlIGlmIChucyA+IDEyNylcbiAgICAgICAgICAgICAgICBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAgICAgLy8gc3ltYm9sIGNvbXByZXNzaW9uIG1vZGVzXG4gICAgICAgICAgICB2YXIgc2NtID0gZGF0W2J0KytdO1xuICAgICAgICAgICAgaWYgKHNjbSAmIDMpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAyOyBpID4gLTE7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBtZCA9IChzY20gPj4gKChpIDw8IDEpICsgMikpICYgMztcbiAgICAgICAgICAgICAgICBpZiAobWQgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBybGUgYnVmXG4gICAgICAgICAgICAgICAgICAgIHZhciByYnVmID0gbmV3IHU4KFswLCAwLCBkYXRbYnQrK11dKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgczogcmJ1Zi5zdWJhcnJheSgyLCAzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG46IHJidWYuc3ViYXJyYXkoMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGI6IDBcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY2N1cmFjeSBsb2cgOCBmb3Igb2Zmc2V0cywgOSBmb3Igb3RoZXJzXG4gICAgICAgICAgICAgICAgICAgIF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSksIGJ0ID0gX2FbMF0sIGR0c1tpXSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3QudClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0gc3QudFtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2IgPSBzdC50ID0gZHRzLCBtbHQgPSBfYlswXSwgb2N0ID0gX2JbMV0sIGxsdCA9IF9iWzJdO1xuICAgICAgICAgICAgdmFyIGxiID0gZGF0W2VidCAtIDFdO1xuICAgICAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLCBjYnQgPSBzcG9zID4+IDMsIG91YnQgPSAwO1xuICAgICAgICAgICAgdmFyIGxzdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9jdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG9zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvY3QuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG1zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGZvciAoKytuczsgLS1uczspIHtcbiAgICAgICAgICAgICAgICB2YXIgbGxjID0gbGx0LnNbbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbGJ0ciA9IGxsdC5uW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIG1sYyA9IG1sdC5zW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG1idHIgPSBtbHQublttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvZmMgPSBvY3Quc1tvc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvYnRyID0gb2N0Lm5bb3N0XTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvZmMpID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG9mcCA9IDEgPDwgb2ZjO1xuICAgICAgICAgICAgICAgIHZhciBvZmYgPSBvZnAgKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSB8IChkYXRbY2J0ICsgM10gPDwgMjQpKSA+Pj4gKHNwb3MgJiA3KSkgJiAob2ZwIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sYlttbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBtbCA9IG1sYmxbbWxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIGxsID0gbGxibFtsbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsYltsbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIGxzdCA9IGxsdC50W2xzdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxidHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbXN0ID0gbWx0LnRbbXN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICAgICAgICBvc3QgPSBvY3QudFtvc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBpZiAob2ZmID4gMykge1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmYgLT0gMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSBvZmYgLSAobGwgIT0gMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IGlkeCA9PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID4gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxsOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBsbCwgc3BsICs9IGxsO1xuICAgICAgICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IC1zdGluO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnMgPSBzdC5lICsgc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1sKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gbWw7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBzdC53W2JzICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3VidCArPSBsZW4sIG1sIC09IGxlbiwgc3RpbiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3N0aW4gKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBtbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdWJ0ICE9IHNwbCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzcGwgPCBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0KytdID0gYnVmW3NwbCsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3VidCA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgICAgICBpZiAob3V0KVxuICAgICAgICAgICAgICAgIHN0LnkgKz0gb3VidDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCAwLCBvdWJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICBzdC55ICs9IGxzcztcbiAgICAgICAgICAgICAgICBpZiAoc3BsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbHNzOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNwbClcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCBzcGwpO1xuICAgICAgICB9XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIHJldHVybiBidWY7XG4gICAgfVxuICAgIGVycigyKTtcbn07XG4vLyBjb25jYXRcbnZhciBjY3QgPSBmdW5jdGlvbiAoYnVmcywgb2wpIHtcbiAgICBpZiAoYnVmcy5sZW5ndGggPT0gMSlcbiAgICAgICAgcmV0dXJuIGJ1ZnNbMF07XG4gICAgdmFyIGJ1ZiA9IG5ldyB1OChvbCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnVmcy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgICAgYnVmLnNldChjaGssIGIpO1xuICAgICAgICBiICs9IGNoay5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG59O1xuLyoqXG4gKiBEZWNvbXByZXNzZXMgWnN0YW5kYXJkIGRhdGFcbiAqIEBwYXJhbSBkYXQgVGhlIGlucHV0IGRhdGFcbiAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICogICAgICAgICAgICBleGFjdGx5IGVub3VnaCBtZW1vcnkgdG8gZml0IHRoZSBkZWNvbXByZXNzZWQgZGF0YS4gSWYgeW91clxuICogICAgICAgICAgICBkYXRhIGhhcyBtdWx0aXBsZSBmcmFtZXMgYW5kIHlvdSBrbm93IHRoZSBvdXRwdXQgc2l6ZSwgc3BlY2lmeWluZ1xuICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvbXByZXNzZWQgZGF0YVxuICovXG5yZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsIGJ1ZnMgPSBbXSwgbmIgPSArIWJ1Ziwgb2wgPSAwO1xuICAgIGZvciAoOyBkYXQubGVuZ3RoOykge1xuICAgICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdCA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT0gc3QudSkge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmID0gc3Qudyk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IHN0LnU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKDsgIXN0Lmw7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgICAgICAgIGlmICghYmxrKVxuICAgICAgICAgICAgICAgICAgICBlcnIoNSk7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChibGspO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBibGsubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHN0Lncuc2V0KGJsaywgc3Qudy5sZW5ndGggLSBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidCA9IHN0LmIgKyAoc3QuYyAqIDQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ0ID0gc3Q7XG4gICAgICAgIGRhdCA9IGRhdC5zdWJhcnJheShidCk7XG4gICAgfVxuICAgIHJldHVybiBjY3QoYnVmcywgb2wpO1xufVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjJcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF96c3RkX2luaXRpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMS4xXG5mdW5jdGlvbiBjYW1sX3pzdGRfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcbiAgcmV0dXJuIDFcbn1cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2tleV9vZmZzZXQgPSAzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxudmFyIGNhbWxfZXBoZV9kYXRhX29mZnNldCA9IDJcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYgKHYgaW5zdGFuY2VvZiBPYmplY3QgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXS5yZWdpc3RlcikgeFsxXS5yZWdpc3Rlcih2LCB1bmRlZmluZWQsIHYpO1xuICAgIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IG5ldyBnbG9iYWxUaGlzLldlYWtSZWYodik7XG4gIH1cbiAgZWxzZSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4WzFdLnVucmVnaXN0ZXIpIHtcbiAgICB2YXIgb2xkID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldLmRlcmVmKCk7XG4gICAgaWYob2xkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBjb3VudCA9IDBcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpe1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpXG4gICAgICAgICAgaWYoa2V5ID09PSBvbGQpIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGNvdW50ID09IDEpIHhbMV0udW5yZWdpc3RlcihvbGQpO1xuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZSwgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY3JlYXRlIChuKSB7XG4gIHZhciB4ID0gY2FtbF93ZWFrX2NyZWF0ZShuKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9rZXksIGNhbWxfZXBoZV91bnNldF9rZXlcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZih2ID09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCxpKVxuICBlbHNlIGNhbWxfZXBoZV9zZXRfa2V5KHgsaSx2WzFdKVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICByZXR1cm4gKHdlYWs9PT11bmRlZmluZWQpPzA6WzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2NvcHlcIik7XG4gIHZhciB5ID0gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIGlmKHdlYWs9PT11bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfYmxpdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfa2V5KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfc2V0X2RhdGEsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgdmFyIG4gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgaWYobiA9PT0gdW5kZWZpbmVkKSBjYW1sX2VwaGVfdW5zZXRfZGF0YShkc3QpO1xuICBlbHNlIGNhbWxfZXBoZV9zZXRfZGF0YShkc3QsIG4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfZGF0YSh4LCBkYXRhKXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZighICh4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSkpIHtcbiAgICAgIHhbMV0gPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoKSB7IGNhbWxfZXBoZV91bnNldF9kYXRhKHgpIH0pO1xuICAgICAgLy9yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS5yZWdpc3RlcihrZXksIHVuZGVmaW5lZCwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9kYXRhKHgpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KXtcbiAgICAgIC8vdW5yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS51bnJlZ2lzdGVyKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCJcblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZnVsbF9tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19mdWxsX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbi8vVmVyc2lvbjogPj0gNC4xMlxuZnVuY3Rpb24gY2FtbF9nY19xdWlja19zdGF0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuLy9SZXF1aXJlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3N0YXQoKSB7XG4gIHJldHVybiBjYW1sX2djX3F1aWNrX3N0YXQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcbnZhciBhbGxfZmluYWxpemVycyA9IG5ldyBnbG9iYWxUaGlzLlNldCgpXG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIChjYiwgYSkge1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICB2YXIgeCA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICh4KXthbGxfZmluYWxpemVycy5kZWxldGUoeCk7IGNiKDApOyByZXR1cm47fSk7XG4gICAgeC5yZWdpc3RlcihhLHgpO1xuICAgIGFsbF9maW5hbGl6ZXJzLmFkZCh4KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWxlYXNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlbGVhc2UgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdGFydChyYXRlLHN0YWNrX3NpemUsdHJhY2tlcil7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RvcFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0b3AodW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX2Rpc2NhcmRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKHQpIHsgcmV0dXJuIDAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3BhdXNlXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3BhdXNlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XG5mdW5jdGlvbiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKHdvcmspIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY2FtbF9nY19taW5vcl93b3Jkcyh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21pbm9yX2ZyZWVcbmZ1bmN0aW9uIGNhbWxfZ2V0X21pbm9yX2ZyZWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChuKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2NyZWRpdFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfY3JlZGl0KG4pIHsgcmV0dXJuIDA7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRm9ybWF0XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZm9ybWF0IChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID1cbiAgICAgIHsganVzdGlmeTonKycsIHNpZ25zdHlsZTonLScsIGZpbGxlcjonICcsIGFsdGVybmF0ZTpmYWxzZSxcbiAgICAgICAgYmFzZTowLCBzaWduZWRjb252OmZhbHNlLCB3aWR0aDowLCB1cHBlcmNhc2U6ZmFsc2UsXG4gICAgICAgIHNpZ246MSwgcHJlYzotMSwgY29udjonZicgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gZm10LmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlICctJzpcbiAgICAgIGYuanVzdGlmeSA9ICctJzsgYnJlYWs7XG4gICAgY2FzZSAnKyc6IGNhc2UgJyAnOlxuICAgICAgZi5zaWduc3R5bGUgPSBjOyBicmVhaztcbiAgICBjYXNlICcwJzpcbiAgICAgIGYuZmlsbGVyID0gJzAnOyBicmVhaztcbiAgICBjYXNlICcjJzpcbiAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOlxuICAgIGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgZi53aWR0aCA9IDA7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYud2lkdGggPSBmLndpZHRoICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy4nOlxuICAgICAgZi5wcmVjID0gMDtcbiAgICAgIGkrKztcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi5wcmVjID0gZi5wcmVjICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICBjYXNlICdkJzogY2FzZSAnaSc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgJ3UnOlxuICAgICAgZi5iYXNlID0gMTA7IGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgZi5iYXNlID0gMTY7IGJyZWFrO1xuICAgIGNhc2UgJ1gnOlxuICAgICAgZi5iYXNlID0gMTY7IGYudXBwZXJjYXNlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnbyc6XG4gICAgICBmLmJhc2UgPSA4OyBicmVhaztcbiAgICBjYXNlICdlJzogY2FzZSAnZic6IGNhc2UgJ2cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi5jb252ID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnRSc6IGNhc2UgJ0YnOiBjYXNlICdHJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgIGYuY29udiA9IGMudG9Mb3dlckNhc2UgKCk7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCByYXdidWZmZXIpIHtcbiAgaWYgKGYudXBwZXJjYXNlKSByYXdidWZmZXIgPSByYXdidWZmZXIudG9VcHBlckNhc2UoKTtcbiAgdmFyIGxlbiA9IHJhd2J1ZmZlci5sZW5ndGg7XG4gIC8qIEFkanVzdCBsZW4gdG8gcmVmbGVjdCBhZGRpdGlvbmFsIGNoYXJzIChzaWduLCBldGMpICovXG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgKGYuc2lnbiA8IDAgfHwgZi5zaWduc3R5bGUgIT0gJy0nKSkgbGVuKys7XG4gIGlmIChmLmFsdGVybmF0ZSkge1xuICAgIGlmIChmLmJhc2UgPT0gOCkgbGVuICs9IDE7XG4gICAgaWYgKGYuYmFzZSA9PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcgJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICBpZiAoZi5zaWduZWRjb252KSB7XG4gICAgaWYgKGYuc2lnbiA8IDApIGJ1ZmZlciArPSAnLSc7XG4gICAgZWxzZSBpZiAoZi5zaWduc3R5bGUgIT0gJy0nKSBidWZmZXIgKz0gZi5zaWduc3R5bGU7XG4gIH1cbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSA4KSBidWZmZXIgKz0gJzAnO1xuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDE2KSBidWZmZXIgKz0gZi51cHBlcmNhc2U/XCIwWFwiOlwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlXG52YXIgY2FtbF9ncl9zdGF0ZTtcblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIk5vdCBpbml0aWFsaXplZFwiKV0pO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGluZm8gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhpbmZvKTtcbiAgZnVuY3Rpb24gZ2V0KG5hbWUpe1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiK25hbWUrXCIgKj0gKihbYS16QS1aMC05X10rKSAqKCx8JClcIik7XG4gICAgaWYocmVzKSByZXR1cm4gcmVzWzJdO1xuICB9XG4gIHZhciBzcGVjcyA9IFtdO1xuICBpZighKGluZm89PVwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZighdGFyZ2V0KSB0YXJnZXQ9XCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYoIXN0YXR1cykgc3BlY3MucHVzaChcInN0YXR1cz0xXCIpXG5cbiAgdmFyIHcgPSBnZXQoXCJ3aWR0aFwiKTtcbiAgdyA9IHc/cGFyc2VJbnQodyk6MjAwO1xuICBzcGVjcy5wdXNoKFwid2lkdGg9XCIrdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoP3BhcnNlSW50KGgpOjIwMDtcbiAgc3BlY3MucHVzaChcImhlaWdodD1cIitoKTtcblxuICB2YXIgd2luID0gZ2xvYmFsVGhpcy5vcGVuKFwiYWJvdXQ6YmxhbmtcIix0YXJnZXQsc3BlY3Muam9pbihcIixcIikpO1xuICBpZighd2luKSB7Y2FtbF9mYWlsd2l0aChcIkdyYXBoaWNzLm9wZW5fZ3JhcGg6IGNhbm5vdCBvcGVuIHRoZSB3aW5kb3dcIil9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKTtcbiAgY3R4LnNldF90aXRsZSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIGRvYy50aXRsZSA9IHRpdGxlO1xuICB9O1xuICBjYW1sX2dyX3N0YXRlX3NldChjdHgpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICBib2R5LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfaW5pdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfY29sb3IsY2FtbF9ncl9tb3ZldG8sY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoLGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSxjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpe1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsY2FtbF9ncl9zdGF0ZS55KTtcbiAgY2FtbF9ncl9yZXNpemVfd2luZG93KGNhbWxfZ3Jfc3RhdGUud2lkdGgsY2FtbF9ncl9zdGF0ZS5oZWlnaHQpO1xuICBjYW1sX2dyX3NldF9saW5lX3dpZHRoKGNhbWxfZ3Jfc3RhdGUubGluZV93aWR0aCk7XG4gIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShjYW1sX2dyX3N0YXRlLnRleHRfc2l6ZSk7XG4gIGNhbWxfZ3Jfc2V0X2ZvbnQoY2FtbF9ncl9zdGF0ZS5mb250KTtcbiAgY2FtbF9ncl9zZXRfY29sb3IoY2FtbF9ncl9zdGF0ZS5jb2xvcik7XG4gIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShjYW1sX2dyX3N0YXRlLnRpdGxlKTtcbiAgLy9jYW1sX2dyX3Jlc2l6ZV93aW5kb3cgbWlnaHQgcmVzZXQgc29tZSBjYW52YXMnIHByb3BlcnRpZXNcbiAgY2FtbF9ncl9zdGF0ZS5jb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCl7XG4gIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIGNhbnZhcyA6IGNhbnZhcyxcbiAgICB4IDogMCxcbiAgICB5IDogMCxcbiAgICB3aWR0aCA6IHcsXG4gICAgaGVpZ2h0IDogaCxcbiAgICBsaW5lX3dpZHRoIDogMSxcbiAgICBmb250IDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZSA6IDI2LFxuICAgIGNvbG9yIDogMHgwMDAwMDAsXG4gICAgdGl0bGUgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpXG4gIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZG9jX29mX3N0YXRlXG5mdW5jdGlvbiBjYW1sX2dyX2RvY19vZl9zdGF0ZShzdGF0ZSkge1xuICBpZihzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudClcbiAgICByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSAwO1xuICBzLmNhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShuYW1lKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRpdGxlID0gbmFtZTtcbiAgdmFyIGpzbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZihzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KClcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgcy5jYW52YXMud2lkdGggPSB3O1xuICBzLmNhbnZhcy5oZWlnaHQgPSBoO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbGVhcl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xlYXJfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gIHMuY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAvLyAgcy5jb250ZXh0LnN0cm9rZVJlY3QgKDAuLCAwLiwgcy53aWR0aCwgcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLndpZHRoO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmhlaWdodDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBmdW5jdGlvbiBjb252ZXJ0KG51bWJlcikge1xuICAgIHZhciBzdHIgPSAnJyArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSAnMCcgKyBzdHI7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICB2YXJcbiAgciA9IChjb2xvciA+PiAxNikgJiAweGZmLFxuICBnID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsXG4gIGIgPSAoY29sb3IgPj4gMCkgICYgMHhmZjtcbiAgcy5jb2xvcj1jb2xvcjtcbiAgdmFyIGNfc3RyID0gJyMnICsgY29udmVydChyKSArIGNvbnZlcnQoZykgKyBjb252ZXJ0KGIpO1xuICBzLmNvbnRleHQuZmlsbFN0eWxlID0gICBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICB2YXIgY29sb3IgPSBzLmNvbG9yO1xuICBkWzBdID0gKGNvbG9yID4+IDE2KSAmIDB4ZmY7IC8vclxuICBkWzFdID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsIC8vZ1xuICBkWzJdID0gKGNvbG9yID4+IDApICAmIDB4ZmY7IC8vYlxuICBkWzNdID0gMHhGRjsgLy9hXG4gIHMueD14O1xuICBzLnk9eTtcbiAgcy5jb250ZXh0LnB1dEltYWdlRGF0YShpbSx4LHMuaGVpZ2h0IC0geSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3BvaW50X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wb2ludF9jb2xvcih4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSB5LDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgcmV0dXJuIChkWzBdIDw8IDE2KSArIChkWzFdIDw8IDgpICsgZFsyXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbW92ZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tb3ZldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueFxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8ocy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LHMuaGVpZ2h0IC0geSk7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsY3gsY3kscnkscngsYTEsYTIpe1xuICB3aGlsZShhMT5hMikgYTIrPTM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLHhQb3MseVBvcyx4UG9zX3ByZXYseVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCtyeSkvMikpIC8gc3BhY2UpIHwgMDtcbiAgdmFyIGRlbHRhID0gKGEyIC0gYTEpICogTWF0aC5QSSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGo9MDtqPD1udW07aisrKXtcbiAgICB4UG9zID0gY3ggLSAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9IGN5ICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB5UG9zID0geVBvcy50b0ZpeGVkKDIpO1xuICAgIGlmIChqPT0wKSB7XG4gICAgICBjdHgubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgIH0gZWxzZSBpZiAoeFBvc19wcmV2IT14UG9zIHx8IHlQb3NfcHJldiE9eVBvcyl7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXY9eFBvcztcbiAgICB5UG9zX3ByZXY9eVBvcztcbiAgICBpLT0gZGVsdGE7Ly9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgodyl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5saW5lX3dpZHRoID0gdztcbiAgcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmZpbGxSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9wb2x5XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3BvbHkoYXIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yKHZhciBpID0gMjsgaSA8IGFyLmxlbmd0aDsgaSsrKVxuICAgIHMuY29udGV4dC5saW5lVG8oYXJbaV1bMV0scy5oZWlnaHQgLSBhcltpXVsyXSk7XG4gIHMuY29udGV4dC5saW5lVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIG0gPSBzLmNvbnRleHQubWVhc3VyZVRleHQoc3RyKTtcbiAgdmFyIGR4ID0gbS53aWR0aDtcbiAgcy5jb250ZXh0LmZpbGxUZXh0KHN0cixzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpe1xuICBjYW1sX2dyX2RyYXdfc3RyKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHJpbmcoc3RyKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzdHIpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfZm9udChmKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGV4dF9zaXplID0gc2l6ZTtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl90ZXh0X3NpemUodHh0KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgdyA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0eHQpKS53aWR0aDtcbiAgcmV0dXJuIFswLHcscy50ZXh0X3NpemVdO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbWFrZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbWFrZV9pbWFnZShhcnIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDEgO1xuICB2YXIgdyA9IGFyclsxXS5sZW5ndGggLSAxO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHcsaCk7XG4gIGZvcih2YXIgaT0wO2k8aDtpKyspe1xuICAgIGZvcih2YXIgaj0wO2o8dztqKyspe1xuICAgICAgdmFyIGMgPSBhcnJbaSsxXVtqKzFdO1xuICAgICAgdmFyIG8gPSBpKih3KjQpICsgKGogKiA0KTtcbiAgICAgIGlmKGMgPT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSBjID4+IDE2ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSBjID4+ICA4ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSBjID4+ICAwICYgMFhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAweGZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHVtcF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHVtcF9pbWFnZShpbSl7XG4gIHZhciBkYXRhID0gWzBdXG4gIGZvcih2YXIgaT0wOyBpPGltLmhlaWdodDtpKyspe1xuICAgIGRhdGFbaSsxXSA9IFswXVxuICAgIGZvcih2YXIgaj0wOyBqPGltLndpZHRoO2orKyl7XG4gICAgICB2YXIgbyA9IGkqKGltLndpZHRoKjQpICsgKGogKiA0KSxcbiAgICAgICAgICByID0gaW0uZGF0YVtvKzBdLFxuICAgICAgICAgIGcgPSBpbS5kYXRhW28rMV0sXG4gICAgICAgICAgYiA9IGltLmRhdGFbbysyXTtcbiAgICAgIGRhdGFbaSsxXVtqKzFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBpZighaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwwLDApO1xuICAgIHZhciBpbWFnZSA9IG5ldyBnbG9iYWxUaGlzLkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gICAgICBpbS5pbWFnZSA9IGltYWdlO1xuICAgIH1cbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuICB9IGVsc2Uge1xuICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW0uaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jcmVhdGVfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NyZWF0ZV9pbWFnZSh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgseSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2JsaXRfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2JsaXRfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0yID0gcy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSxpbS53aWR0aCxpbS5oZWlnaHQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSsxXSA9IGltMi5kYXRhW2krMV07XG4gICAgaW0uZGF0YVtpKzJdID0gaW0yLmRhdGFbaSsyXTtcbiAgICBpbS5kYXRhW2krM10gPSBpbTIuZGF0YVtpKzNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX3NpZ25hbCgpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl93YWl0X2V2ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dhaXRfZXZlbnQoX2V2bCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dhaXRfZXZlbnQgbm90IEltcGxlbWVudGVkOiB1c2UgR3JhcGhpY3NfanMgaW5zdGVhZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zeW5jaHJvbml6ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9zeW5jaHJvbml6ZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3N5bmNocm9uaXplIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVtZW1iZXJfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9yZW1lbWJlcl9tb2RlICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dpbmRvd19pZCBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3coYSxiLGMsZCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyhhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICAoZ2xvYmFsVGhpcy5uYXZpZ2F0b3ImJmdsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgICAgID9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGNvbnNvbGU7XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCB9IGNhdGNoIChlKSB7IH07XG4gIH1cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMi5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDMuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgfVxuICBjYW1sX2ZhaWx3aXRoKFwiQ2Fubm90IGNyZWF0ZSBhIFhNTEh0dHBSZXF1ZXN0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gZXhuLmpzX2Vycm9yOyB9XG4gIHJldHVybiBudWxsO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IGxleGluZy5jIDYwNDUgMjAwNC0wMS0wMSAxNjo0Mjo0M1ogZG9saWdleiAkICovXG5cbi8qIFRoZSB0YWJsZS1kcml2ZW4gYXV0b21hdG9uIGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXguICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICB2YXIgbCA9IHMubGVuZ3RoIC8gMjtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHJldHVybiAtYmFzZS0xO1xuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX21lbShzLCBpLCBtZW0sIGN1cnJfcG9zKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm47XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuIDtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV9jb2RlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrX2NvZGVdKTtcbiAgICB0YmwubGV4X2NoZWNrX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrX2NvZGVdKTtcbiAgICB0YmwubGV4X3RyYW5zX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zX2NvZGVdKTtcbiAgICB0YmwubGV4X2RlZmF1bHRfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbCkgdGJsLmxleF9jb2RlID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0YmxbbGV4X2NvZGVdKTtcblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICByZXR1cm4gLWJhc2UtMTtcbiAgICB9XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZSA7XG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBJZiBzb21lIHRyYW5zaXRpb24sIGdldCBhbmQgcGVyZm9ybSBtZW1vcnkgbW92ZXMgKi9cbiAgICAgIHZhciBiYXNlX2NvZGUgPSB0YmwubGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7XG4gICAgICBpZiAodGJsLmxleF9jaGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0ZSlcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF90cmFuc19jb2RlW2Jhc2VfY29kZSArIGNdO1xuICAgICAgZWxzZVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdO1xuICAgICAgaWYgKHBjX29mZiA+IDApXG4gICAgICAgIGNhbWxfbGV4X3J1bl9tZW1cbiAgICAgICh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9seG1fbmV4dFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uZXdfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2x4bV9uZXh0KHYpIHtcbiAgZnVuY3Rpb24gc2hpZnRfbCh4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnRfcih4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X29yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24geG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIGFkZChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9hZGQoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gcm90bCh4LCBrKSB7XG4gICAgcmV0dXJuIG9yKHNoaWZ0X2woeCxrKSxzaGlmdF9yICh4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGQxMzQyNTQzZGU4MmVmOTVcIikpO1xuICB2YXIgZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSk7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LDApO1xuICB2YXIgcyA9IGdldChzdCwxKTtcbiAgdmFyIHgwID0gZ2V0KHN0LDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsMyk7XG4gIC8qIENvbWJpbmluZyBvcGVyYXRpb24gKi9cbiAgeiA9IGFkZChzLCB4MCk7XG4gIC8qIE1peGluZyBmdW5jdGlvbiAqL1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSB4b3IoeixzaGlmdF9yKHosMzIpKTtcbiAgLyogTENHIHVwZGF0ZSAqL1xuICBzZXQoc3QsIDEsIGFkZCAobXVsKHMsTSksIGEpKTtcbiAgLyogWEJHIHVwZGF0ZSAqL1xuICB2YXIgcTAgPSB4MFxuICB2YXIgcTEgPSB4MVxuICBxMSA9IHhvcihxMSxxMCk7XG4gIHEwID0gcm90bChxMCwgMjQpO1xuICBxMCA9IHhvcih4b3IocTAsIHExKSwgKHNoaWZ0X2wocTEsMTYpKSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCIvL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG52YXIgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dCBcbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnJcbnZhciBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyXG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciwgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxuZnVuY3Rpb24gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0ICh2b3V0cHV0LCB2c3Rkb3V0LCB2c3RkZXJyKXtcbiAgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciA9IGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl07XG4gIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQgPSBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdO1xuICB2YXIgb3V0cHV0ID0gY2FtbF9tbF9jaGFubmVsc1t2b3V0cHV0XTtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XSA9IG91dHB1dDtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXSA9IG91dHB1dDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0XG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyLCBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG5mdW5jdGlvbiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdCAodnN0ZG91dCwgdnN0ZGVycil7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF0gPSBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0O1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdID0gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVycjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkKGNoYW4pe1xuICB2YXIgaW5mbyA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbl07XG4gIHJldHVybiBpbmZvLm9mZnNldFxufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZXJfdHJhY2VcbnZhciBjYW1sX3BhcnNlcl90cmFjZSA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheSwgY2FtbF9wYXJzZXJfdHJhY2UsY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuXG4gIGZ1bmN0aW9uIGxvZyh4KSB7XG4gICAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHggKyBcIlxcblwiKTtcbiAgICBjYW1sX21sX291dHB1dCgyLCBzLCAwLCBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5fbmFtZShuYW1lcywgbnVtYmVyKVxuICB7XG4gICAgdmFyIHN0ciA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWVzKTtcbiAgICBpZiAoc3RyWzBdID09ICdcXHgwMCcpXG4gICAgICByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCdcXHgwMCcpW251bWJlcl07XG4gIH1cblxuICBmdW5jdGlvbiBwcmludF90b2tlbihzdGF0ZSwgdG9rKVxuICB7XG4gICAgdmFyIHRva2VuLCBraW5kO1xuICAgIGlmICh0b2sgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJudW1iZXJcIilcbiAgICAgICAga2luZCA9IFwiXCIgKyB0b2tbMV07XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdG9rWzFdID09IFwic3RyaW5nXCIpXG4gICAgICAgIGtpbmQgPSB0b2tbMV1cbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpXG4gICAgICAgIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSlcbiAgICAgIGVsc2VcbiAgICAgICAga2luZCA9IFwiX1wiXG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbiArIFwiKFwiICsga2luZCArIFwiKVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfY29uc3RdLCB0b2spO1xuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBuZXh0OnN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBwcmludF90b2tlbiAoc3RhdGUsIGFyZyk7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJSZWNvdmVyaW5nIGluIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrIG5leHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgICBsb2coXCJObyBtb3JlIHN0YXRlcyB0byBkaXNjYXJkXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApXG4gICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SOyAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgbGFzdCB0b2tlbiByZWFkXCIpO1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHNoaWZ0IHRvIHN0YXRlIFwiICsgdGFibGVzLnRhYmxlW24yXSk7XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1xuZnVuY3Rpb24gY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2soeCl7XG4gIHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7XG59XG5cbiIsIi8vUHJvdmlkZXM6IGpzX3BlcmZvcm1hbmNlXG52YXIganNfcGVyZm9ybWFuY2UgPSB7bWFyazogKGZ1bmN0aW9uICgpIHt9KSwgbWVhc3VyZTogKGZ1bmN0aW9uICgpIHt9KSB9O1xuaWYgKHR5cGVvZiBqb29fZ2xvYmFsX29iamVjdC5wZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBqc19wZXJmb3JtYW5jZSA9IGpvb19nbG9iYWxfb2JqZWN0LnBlcmZvcm1hbmNlO1xufSBlbHNlIHtcbiAgdHJ5IHtcbiAgICB2YXIgcGVyZl9ob29rcyA9IHJlcXVpcmUoJ3BlcmZfaG9va3MnKTtcbiAgICBqc19wZXJmb3JtYW5jZSA9IHBlcmZfaG9va3MucGVyZm9ybWFuY2U7XG4gICAgam9vX2dsb2JhbF9vYmplY3QuUGVyZm9ybWFuY2VPYnNlcnZlciA9IHBlcmZfaG9va3MuUGVyZm9ybWFuY2VPYnNlcnZlcjtcbiAgfSBjYXRjaCAoX2UpIHtcbiAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oXCJjb3VsZG4ndCBsb2FkIHBlcmZvcm1hbmNlIGhvb2tzXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfbWFya1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9tYXJrKG5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5tYXJrKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9tZWFzdXJlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX21lYXN1cmUobmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLm1lYXN1cmUoXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoc3RhcnQpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoZW5kKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX2NsZWFyX21hcmtzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX2NsZWFyX21hcmtzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLmNsZWFyTWFya3MoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuIiwiLy8vLy8vLy8vIFRJTUVfTk9XXG5cbi8vUHJvdmlkZXM6IHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbnZhciBtc190b19uYW5vID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxMDAwKjEwMDApO1xuZnVuY3Rpb24gdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvKCl7XG4gICAgdmFyIG1zID0gRGF0ZS5ub3coKTtcbiAgICAvLyBtdWx0aXBsZSBieSB0d28gLSBpbnQ2MyBpbnRlZ2VycyBhcmUgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgIHZhciBtc19pNjMgPSBjYW1sX2ludDY0X29mX2Zsb2F0KG1zKjIpO1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChtc19pNjMsbXNfdG9fbmFubyk7XG59XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcblxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxubGV0IGxub3QgeCA9IHggbHhvciAoLTEpXG5cbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcblxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5cbigqIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IGluZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5lZ19pbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHhGRl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuYW4gPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjhfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgbWF4X2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0VGX0ZGX0ZGX0ZGX0ZGX0ZGX0ZGTFxubGV0IG1pbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgwMF8xMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBlcHNpbG9uX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDNDX0IwXzAwXzAwXzAwXzAwXzAwXzAwTFxuXG50eXBlIGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuKCogU3RyaW5nIGFuZCBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGVzIFN0cmluZyBhbmQgQnl0ZXMgKilcblxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2xlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19jcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHN0cmluZ19ibGl0IDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgKCBeICkgczEgczIgPVxuICBsZXQgbDEgPSBzdHJpbmdfbGVuZ3RoIHMxIGFuZCBsMiA9IHN0cmluZ19sZW5ndGggczIgaW5cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgKGwxICsgbDIpIGluXG4gIHN0cmluZ19ibGl0IHMxIDAgcyAwIGwxO1xuICBzdHJpbmdfYmxpdCBzMiAwIHMgbDEgbDI7XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBDaGFyICopXG5cbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hhcl9vZl9pbnQgOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiY2hhcl9vZl9pbnRcIiBlbHNlIHVuc2FmZV9jaGFyX29mX2ludCBuXG5cbigqIFVuaXQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogUGFpciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5cbigqIFJlZmVyZW5jZXMgKilcblxudHlwZSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG5cbigqIFJlc3VsdCB0eXBlICopXG5cbnR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbigqIFN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbmxldCBzdHJpbmdfb2ZfYm9vbCBiID1cbiAgaWYgYiB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiYm9vbF9vZl9zdHJpbmdcIlxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiBTb21lIHRydWVcbiAgfCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc3RyaW5nX29mX2ludCBuID1cbiAgZm9ybWF0X2ludCBcIiVkXCIgblxuXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgc3RyaW5nX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5cbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBzdHJpbmdfbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbCB0aGVuIHMgXiBcIi5cIiBlbHNlXG4gICAgbWF0Y2ggc3RyaW5nX2dldCBzIGkgd2l0aFxuICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICB8IF8gLT4gc1xuICBpblxuICBsb29wIDBcblxubGV0IHN0cmluZ19vZl9mbG9hdCBmID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgZilcblxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgTGlzdCAqKVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyAoIEAgKSBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgfCBbXSAtPiBsMlxuICB8IGgxIDo6IFtdIC0+IGgxIDo6IGwyXG4gIHwgaDEgOjogaDIgOjogW10gLT4gaDEgOjogaDIgOjogbDJcbiAgfCBoMSA6OiBoMiA6OiBoMyA6OiB0bCAtPiBoMSA6OiBoMiA6OiBoMyA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbigqIGZvciBhdF9leGl0ICopXG50eXBlICdhIGF0b21pY190XG5leHRlcm5hbCBhdG9taWNfbWFrZSA6ICdhIC0+ICdhIGF0b21pY190ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgYXRvbWljX2dldCA6ICdhIGF0b21pY190IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgYXRvbWljX2NvbXBhcmVfYW5kX3NldCA6ICdhIGF0b21pY190IC0+ICdhIC0+ICdhIC0+IGJvb2xcbiAgPSBcIiVhdG9taWNfY2FzXCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBhdG9taWNfbWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IGF0b21pY19tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgYXRvbWljX2NvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gYXRvbWljX2NvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19kb21haW5fbG9jYWxfYXRfZXhpdCA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gICghZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQpICgpO1xuICAoYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgICAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgICA9IENvbXBsZXhcbm1vZHVsZSBDb25kaXRpb24gICAgICA9IENvbmRpdGlvblxubW9kdWxlIERpZ2VzdCAgICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRG9tYWluICAgICAgICAgPSBEb21haW5cbm1vZHVsZSBEeW5hcnJheSAgICAgICA9IER5bmFycmF5XG5tb2R1bGUgRWZmZWN0ICAgICAgICAgPSBFZmZlY3Rcbm1vZHVsZSBFaXRoZXIgICAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgICAgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ICAgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICAgID0gRnVuXG5tb2R1bGUgR2MgICAgICAgICAgICAgPSBHY1xubW9kdWxlIEhhc2h0YmwgICAgICAgID0gSGFzaHRibFxubW9kdWxlIEluX2NoYW5uZWwgICAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTXV0ZXggICAgICAgICAgPSBNdXRleFxubW9kdWxlIE5hdGl2ZWludCAgICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFyc2luZyAgICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUHJpbnRleGMgICAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBTY2FuZiAgICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VtYXBob3JlICAgICAgPSBTZW1hcGhvcmVcbm1vZHVsZSBTZXEgICAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyaW5nICAgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgICA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICAgID0gU3lzXG5tb2R1bGUgVHlwZSAgICAgICAgICAgPSBUeXBlXG5tb2R1bGUgVWNoYXIgICAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICAgID0gV2Vha1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCogQGNvbmZpZ3VyZV9pbnB1dEAgKilcbiMzIFwic3lzLm1sLmluXCJcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG4oKiBTeXN0ZW0gaW50ZXJmYWNlICopXG5cbmV4dGVybmFsIGdldF9jb25maWc6IHVuaXQgLT4gc3RyaW5nICogaW50ICogYm9vbCA9IFwiY2FtbF9zeXNfZ2V0X2NvbmZpZ1wiXG5leHRlcm5hbCBnZXRfZXhlY3V0YWJsZV9uYW1lIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZVwiXG5leHRlcm5hbCBhcmd2IDogc3RyaW5nIGFycmF5ID0gXCIlc3lzX2FyZ3ZcIlxuZXh0ZXJuYWwgYmlnX2VuZGlhbiA6IHVuaXQgLT4gYm9vbCA9IFwiJWJpZ19lbmRpYW5cIlxuZXh0ZXJuYWwgd29yZF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiV3b3JkX3NpemVcIlxuZXh0ZXJuYWwgaW50X3NpemUgOiB1bml0IC0+IGludCA9IFwiJWludF9zaXplXCJcbmV4dGVybmFsIG1heF93b3NpemUgOiB1bml0IC0+IGludCA9IFwiJW1heF93b3NpemVcIlxuZXh0ZXJuYWwgdW5peCA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV91bml4XCJcbmV4dGVybmFsIHdpbjMyIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3dpbjMyXCJcbmV4dGVybmFsIGN5Z3dpbiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV9jeWd3aW5cIlxuZXh0ZXJuYWwgZ2V0X2JhY2tlbmRfdHlwZSA6IHVuaXQgLT4gYmFja2VuZF90eXBlID0gXCIlYmFja2VuZF90eXBlXCJcblxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGdldF9leGVjdXRhYmxlX25hbWUoKVxubGV0IChvc190eXBlLCBfLCBfKSA9IGdldF9jb25maWcoKVxubGV0IGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKClcbmxldCBiaWdfZW5kaWFuID0gYmlnX2VuZGlhbiAoKVxubGV0IHdvcmRfc2l6ZSA9IHdvcmRfc2l6ZSAoKVxubGV0IGludF9zaXplID0gaW50X3NpemUgKClcbmxldCB1bml4ID0gdW5peCAoKVxubGV0IHdpbjMyID0gd2luMzIgKClcbmxldCBjeWd3aW4gPSBjeWd3aW4gKClcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gbWF4X3dvc2l6ZSAoKVxubGV0IG1heF9mbG9hdGFycmF5X2xlbmd0aCA9IG1heF9hcnJheV9sZW5ndGggLyAoNjQgLyB3b3JkX3NpemUpXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDFcbmV4dGVybmFsIHJ1bnRpbWVfdmFyaWFudCA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfdmFyaWFudFwiXG5leHRlcm5hbCBydW50aW1lX3BhcmFtZXRlcnMgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcIlxuXG5leHRlcm5hbCBmaWxlX2V4aXN0czogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2ZpbGVfZXhpc3RzXCJcbmV4dGVybmFsIGlzX2RpcmVjdG9yeSA6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19pc19kaXJlY3RvcnlcIlxuZXh0ZXJuYWwgaXNfcmVndWxhcl9maWxlIDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVwiXG5leHRlcm5hbCByZW1vdmU6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW1vdmVcIlxuZXh0ZXJuYWwgcmVuYW1lIDogc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW5hbWVcIlxuZXh0ZXJuYWwgZ2V0ZW52OiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19nZXRlbnZcIlxuXG5sZXQgZ2V0ZW52X29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAoZ2V0ZW52IHMpXG4gIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuZXh0ZXJuYWwgY29tbWFuZDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcIlxuZXh0ZXJuYWwgdGltZTogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfc3lzX3RpbWVcIiBcImNhbWxfc3lzX3RpbWVfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjaGRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX2NoZGlyXCJcbmV4dGVybmFsIG1rZGlyOiBzdHJpbmcgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX21rZGlyXCJcbmV4dGVybmFsIHJtZGlyOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcm1kaXJcIlxuZXh0ZXJuYWwgZ2V0Y3dkOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0Y3dkXCJcbmV4dGVybmFsIHJlYWRkaXIgOiBzdHJpbmcgLT4gc3RyaW5nIGFycmF5ID0gXCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVwiXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoaW50IC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IGludCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcblxuZXhjZXB0aW9uIEJyZWFrXG5cbmxldCBjYXRjaF9icmVhayBvbiA9XG4gIGlmIG9uIHRoZW5cbiAgICBzZXRfc2lnbmFsIHNpZ2ludCAoU2lnbmFsX2hhbmRsZShmdW4gXyAtPiByYWlzZSBCcmVhaykpXG4gIGVsc2VcbiAgICBzZXRfc2lnbmFsIHNpZ2ludCBTaWduYWxfZGVmYXVsdFxuXG5cbmV4dGVybmFsIGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzOiBib29sIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcIlxuZXh0ZXJuYWwgcnVudGltZV93YXJuaW5nc19lbmFibGVkOiB1bml0IC0+IGJvb2wgPVxuICBcImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXCJcblxuKCogVGhlIHZlcnNpb24gc3RyaW5nIGlzIGZvdW5kIGluIGZpbGUgLi4vVkVSU0lPTiAqKVxuXG5sZXQgb2NhbWxfdmVyc2lvbiA9IFwiQFZFUlNJT05AXCJcblxubGV0IGRldmVsb3BtZW50X3ZlcnNpb24gPSBAT0NBTUxfREVWRUxPUE1FTlRfVkVSU0lPTkBcblxudHlwZSBleHRyYV9wcmVmaXggPSBQbHVzIHwgVGlsZGVcblxudHlwZSBleHRyYV9pbmZvID0gZXh0cmFfcHJlZml4ICogc3RyaW5nXG5cbnR5cGUgb2NhbWxfcmVsZWFzZV9pbmZvID0ge1xuICBtYWpvciA6IGludDtcbiAgbWlub3IgOiBpbnQ7XG4gIHBhdGNobGV2ZWwgOiBpbnQ7XG4gIGV4dHJhIDogZXh0cmFfaW5mbyBvcHRpb25cbn1cblxubGV0IG9jYW1sX3JlbGVhc2UgPSB7XG4gIG1ham9yID0gQE9DQU1MX1ZFUlNJT05fTUFKT1JAO1xuICBtaW5vciA9IEBPQ0FNTF9WRVJTSU9OX01JTk9SQDtcbiAgcGF0Y2hsZXZlbCA9IEBPQ0FNTF9WRVJTSU9OX1BBVENITEVWRUxAO1xuICBleHRyYSA9IEBPQ0FNTF9SRUxFQVNFX0VYVFJBQFxufVxuXG4oKiBPcHRpbWl6YXRpb24gKilcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogJ2EgLT4gJ2EgPSBcIiVvcGFxdWVcIlxuXG5tb2R1bGUgSW1tZWRpYXRlNjQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UoSW1tZWRpYXRlIDogSW1tZWRpYXRlKShOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcbiAgICBleHRlcm5hbCBtYWdpYyA6IF8gcmVwciAtPiB0IHJlcHIgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IHJlcHIgPVxuICAgICAgaWYgd29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICBtYWdpYyBJbW1lZGlhdGVcbiAgICAgIGVsc2VcbiAgICAgICAgbWFnaWMgTm9uX2ltbWVkaWF0ZVxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdGFycmF5X2dldFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X3NldCA6XG4gICAgZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiY2FtbF9mbG9hdGFycmF5X3NldFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBkb3VibGVfZmllbGQgeCBpID0gZmxvYXRhcnJheV9nZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaVxubGV0IFtAaW5saW5lIGFsd2F5c10gc2V0X2RvdWJsZV9maWVsZCB4IGkgdiA9XG4gIGZsb2F0YXJyYXlfc2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGkgdlxuZXh0ZXJuYWwgcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgPSBcImNhbWxfb2JqX3Jhd19maWVsZFwiXG5leHRlcm5hbCBzZXRfcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfb2JqX3NldF9yYXdfZmllbGRcIlxuXG5leHRlcm5hbCBuZXdfYmxvY2sgOiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfb2JqX2Jsb2NrXCJcbmV4dGVybmFsIGR1cCA6IHQgLT4gdCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQzXG5cbmxldCBmb3JjaW5nX3RhZyA9IDI0NFxubGV0IGNvbnRfdGFnID0gMjQ1XG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCJcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFR5cGUgZXF1YWxpdHkgd2l0bmVzcyAqKVxuXG50eXBlIChfLCBfKSBlcSA9IEVxdWFsOiAoJ2EsICdhKSBlcVxuXG4oKiBUeXBlIGlkZW50aWZpZXJzICopXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICB0eXBlIF8gaWQgPSAuLlxuICBtb2R1bGUgdHlwZSBJRCA9IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgXyBpZCArPSBJZCA6IHQgaWRcbiAgZW5kXG5cbiAgdHlwZSAhJ2EgdCA9IChtb2R1bGUgSUQgd2l0aCB0eXBlIHQgPSAnYSlcblxuICBsZXQgbWFrZSAodHlwZSBhKSAoKSA6IGEgdCA9XG4gICAgKG1vZHVsZSBzdHJ1Y3QgdHlwZSB0ID0gYSB0eXBlIF8gaWQgKz0gSWQgOiB0IGlkIGVuZClcblxuICBsZXRbQGlubGluZV0gdWlkICh0eXBlIGEpICgobW9kdWxlIEEpIDogYSB0KSA9XG4gICAgT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgQS5JZClcblxuICBsZXQgcHJvdmFibHlfZXF1YWxcbiAgICAgICh0eXBlIGEgYikgKChtb2R1bGUgQSkgOiBhIHQpICgobW9kdWxlIEIpIDogYiB0KSA6IChhLCBiKSBlcSBvcHRpb25cbiAgICA9XG4gICAgbWF0Y2ggQS5JZCB3aXRoIEIuSWQgLT4gU29tZSBFcXVhbCB8IF8gLT4gTm9uZVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgbWFrZSA6ICdhIC0+ICdhIHQgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBtYWtlX2NvbnRlbmRlZCA6ICdhIC0+ICdhIHQgPSBcImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXCJcbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBleGNoYW5nZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgPSBcIiVhdG9taWNfZXhjaGFuZ2VcIlxuZXh0ZXJuYWwgY29tcGFyZV9hbmRfc2V0IDogJ2EgdCAtPiAnYSAtPiAnYSAtPiBib29sID0gXCIlYXRvbWljX2Nhc1wiXG5leHRlcm5hbCBmZXRjaF9hbmRfYWRkIDogaW50IHQgLT4gaW50IC0+IGludCA9IFwiJWF0b21pY19mZXRjaF9hZGRcIlxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbmxldCBzZXQgciB4ID0gaWdub3JlIChleGNoYW5nZSByIHgpXG5sZXQgaW5jciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgMSlcbmxldCBkZWNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAoLTEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBJbnRlcm5hbHMgb2YgZm9yY2luZyBsYXp5IHZhbHVlcy4gKilcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWRcblxuKCogW3VwZGF0ZV90b19mb3JjaW5nIGJsa10gdHJpZXMgdG8gdXBkYXRlIGEgW2Jsa10gd2l0aCBbbGF6eV90YWddIHRvXG4gICBbZm9yY2luZ190YWddIHVzaW5nIGNvbXBhcmUtYW5kLXN3YXAgKENBUyksIHRha2luZyBjYXJlIHRvIGhhbmRsZSBjb25jdXJyZW50XG4gICBtYXJraW5nIG9mIHRoZSBoZWFkZXIgd29yZCBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiBSZXR1cm5zIFswXSBpZiB0aGVcbiAgIENBUyBpcyBzdWNjZXNzZnVsLiBJZiB0aGUgQ0FTIGZhaWxzLCB0aGVuIHRoZSB0YWcgd2FzIG9ic2VydmVkIHRvIGJlXG4gICBzb21ldGhpbmcgb3RoZXIgdGhhbiBbbGF6eV90YWddIGR1ZSB0byBhIGNvbmN1cnJlbnQgbXV0YXRvci4gSW4gdGhpcyBjYXNlLFxuICAgdGhlIGZ1bmN0aW9uIHJldHVybnMgWzFdLiAqKVxuZXh0ZXJuYWwgdXBkYXRlX3RvX2ZvcmNpbmcgOiBPYmoudCAtPiBpbnQgPVxuICBcImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1wiIFtAQG5vYWxsb2NdXG5cbigqIFtyZXNldF90b19sYXp5IGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGggW09iai5mb3JjaW5nX3RhZ11cbiAgIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5sYXp5X3RhZ10sIHRha2luZyBjYXJlIHRvIGhhbmRsZSBjb25jdXJyZW50XG4gICBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuICopXG5leHRlcm5hbCByZXNldF90b19sYXp5IDogT2JqLnQgLT4gdW5pdCA9IFwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcIiBbQEBub2FsbG9jXVxuXG4oKiBbdXBkYXRlX3RvX2ZvcndhcmQgYmxrXSBleHBlY3RzIFtibGtdIHRvIGJlIGEgbGF6eSBvYmplY3Qgd2l0aFxuICAgW09iai5mb3JjaW5nX3RhZ10gYW5kIHVwZGF0ZXMgdGhlIHRhZyB0byBbT2JqLmZvcndhcmRfdGFnXSwgdGFraW5nIGNhcmUgdG9cbiAgIGhhbmRsZSBjb25jdXJyZW50IG1hcmtpbmcgb2YgdGhpcyBvYmplY3QncyBoZWFkZXIgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC5cbiAqKVxuZXh0ZXJuYWwgdXBkYXRlX3RvX2ZvcndhcmQgOiBPYmoudCAtPiB1bml0ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcIiBbQEBub2FsbG9jXVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX2Jsb2NrIGJsayA9XG4gIGxldCBiID0gT2JqLnJlcHIgYmxrIGluXG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCBiIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKCkpOyAoKiBSZWxlYXNlIHRoZSBjbG9zdXJlICopXG4gIHRyeVxuICAgIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gICAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIHJlc3VsdCk7XG4gICAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgICByZXN1bHRcbiAgd2l0aCBlIC0+XG4gICAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgZSkpO1xuICAgIHJlc2V0X3RvX2xhenkgYjtcbiAgICByYWlzZSBlXG5cbigqIEFzc3VtZXMgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBmb3JjaW5nICopXG5sZXQgZG9fZm9yY2VfdmFsX2Jsb2NrIGJsayA9XG4gIGxldCBiID0gT2JqLnJlcHIgYmxrIGluXG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCBiIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKCkpOyAoKiBSZWxlYXNlIHRoZSBjbG9zdXJlICopXG4gIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICB1cGRhdGVfdG9fZm9yd2FyZCBiO1xuICByZXN1bHRcblxuKCogQ2FsbGVkIGJ5IFtmb3JjZV9nZW5dICopXG5sZXQgZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBXZSBleHBlY3QgdGhlIHRhZyB0byBiZSBbbGF6eV90YWddLCBidXQgbWF5IGJlIG90aGVyIHRhZ3MgZHVlIHRvXG4gICAgIGNvbmN1cnJlbnQgZm9yY2luZyBvZiBsYXp5IHZhbHVlcy4gKilcbiAgbWF0Y2ggdXBkYXRlX3RvX2ZvcmNpbmcgKE9iai5yZXByIGJsaykgd2l0aFxuICB8IDAgd2hlbiBvbmx5X3ZhbCAtPiBkb19mb3JjZV92YWxfYmxvY2sgYmxrXG4gIHwgMCAtPiBkb19mb3JjZV9ibG9jayBibGtcbiAgfCBfIC0+IHJhaXNlIFVuZGVmaW5lZFxuXG4oKiB1c2VkIGluIHRoZSAlbGF6eV9mb3JjZSBwcmltaXRpdmUgKilcbmxldCBmb3JjZV9sYXp5X2Jsb2NrIGJsayA9IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbDpmYWxzZSBibGtcblxuKCogW2ZvcmNlX2dlbiB+b25seV92YWw6ZmFsc2VdIGlzIG5vdCB1c2VkLCBzaW5jZSBbTGF6eS5mb3JjZV0gaXNcbiAgIGRlY2xhcmVkIGFzIGEgcHJpbWl0aXZlIHdob3NlIGNvZGUgaW5saW5lcyB0aGUgdGFnIHRlc3RzIG9mIGl0c1xuICAgYXJndW1lbnQsIGV4Y2VwdCB3aGVuIGFmbCBpbnN0cnVtZW50YXRpb24gaXMgdHVybmVkIG9uLiAqKVxubGV0IGZvcmNlX2dlbiB+b25seV92YWwgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFVzaW5nIFtTeXMub3BhcXVlX2lkZW50aXR5XSBwcmV2ZW50cyB0d28gcG90ZW50aWFsIHByb2JsZW1zOlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLCB0aGVuIGl0IGNvdWxkIGhhdmUgYmVlblxuICAgICAgIHNob3J0Y3V0IGR1cmluZyBHQywgc28gdGhhdCBpbmZvcm1hdGlvbiBtdXN0IGJlIGZvcmdvdHRlbiAoc2VlIEdQUiM3MTNcbiAgICAgICBhbmQgaXNzdWUgIzczMDEpLiBUaGlzIGlzIG5vdCBhbiBpc3N1ZSBoZXJlIGF0IHRoZSBtb21lbnQgc2luY2VcbiAgICAgICBbT2JqLnRhZ10gaXMgbm90IHNpbXBsaWZpZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgR1BSIzcxMyBhbHNvXG4gICAgICAgZW5zdXJlcyB0aGF0IG5vIHZhbHVlIHdpbGwgYmUga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZy5cbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgaW1tdXRhYmxlLCB0aGVuIGlmIHRoZSBjb21waWxlclxuICAgICAgIGNhbm5vdCBwcm92ZSB0aGF0IHRoZSBsYXN0IGJyYW5jaCBpcyBub3QgdGFrZW4gaXQgd2lsbCBpc3N1ZSBhXG4gICAgICAgd2FybmluZyA1OSAobW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSB2YWx1ZSkgKilcbiAgbGV0IGx6diA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgbHp2IGluXG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gICgqIFNUQVJUIG5vIHNhZmUgcG9pbnRzLiBJZiBhIEdDIG9jY3VycyBoZXJlLCB0aGVuIHRoZSBvYmplY3QgW3hdIG1heSBiZVxuICAgICBzaG9ydC1jaXJjdWl0ZWQsIGFuZCBnZXR0aW5nIHRoZSBmaXJzdCBmaWVsZCBvZiBbeF0gd291bGQgZ2V0IHVzIHRoZSB3cm9uZ1xuICAgICB2YWx1ZS4gTHVja2lseSwgdGhlIGNvbXBpbGVyIGRvZXMgbm90IGluc2VydCBHQyBzYWZlIHBvaW50cyBhdCB0aGlzIHBsYWNlLFxuICAgICBzbyBpdCBpcyBvay4gKilcbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuXG4gICAgKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZylcbiAgKCogRU5EIG5vIHNhZmUgcG9pbnRzICopXG4gIGVsc2UgaWYgdCA9IE9iai5mb3JjaW5nX3RhZyB0aGVuIHJhaXNlIFVuZGVmaW5lZFxuICBlbHNlIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsIGx6dlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0xhenldOiBkZWZlcnJlZCBjb21wdXRhdGlvbnMgKilcblxuXG4oKlxuICAgV0FSTklORzogc29tZSBwdXJwbGUgbWFnaWMgaXMgZ29pbmcgb24gaGVyZS4gIERvIG5vdCB0YWtlIHRoaXMgZmlsZVxuICAgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBpbiBPQ2FtbC5cbiopXG5cblxuKCogV2UgbWFrZSB1c2Ugb2YgdHdvIHNwZWNpYWwgdGFncyBwcm92aWRlZCBieSB0aGUgcnVudGltZTpcbiAgIFtsYXp5X3RhZ10gYW5kIFtmb3J3YXJkX3RhZ10uXG5cbiAgIEEgdmFsdWUgb2YgdHlwZSBbJ2EgTGF6eS50XSBjYW4gYmUgb25lIG9mIHRocmVlIHRoaW5nczpcbiAgIDEuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtsYXp5X3RhZ10uICBJdHMgZmllbGQgaXMgYSBjbG9zdXJlIG9mXG4gICAgICB0eXBlIFt1bml0IC0+ICdhXSB0aGF0IGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgIDIuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtmb3J3YXJkX3RhZ10uICBJdHMgZmllbGQgaXMgdGhlIHZhbHVlXG4gICAgICBvZiB0eXBlIFsnYV0gdGhhdCB3YXMgY29tcHV0ZWQuXG4gICAzLiBBbnl0aGluZyBlbHNlIGV4Y2VwdCBhIGZsb2F0LiAgVGhpcyBoYXMgdHlwZSBbJ2FdIGFuZCBpcyB0aGUgdmFsdWVcbiAgICAgIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgRXhjZXB0aW9ucyBhcmUgc3RvcmVkIGluIGZvcm1hdCAoMSkuXG4gICBUaGUgR0Mgd2lsbCBtYWdpY2FsbHkgY2hhbmdlIHRoaW5ncyBmcm9tICgyKSB0byAoMykgYWNjb3JkaW5nIHRvIGl0c1xuICAgZmFuY3kuXG5cbiAgIElmIE9DYW1sIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIC1mbGF0LWZsb2F0LWFycmF5IG9wdGlvbiAod2hpY2ggaXNcbiAgIGN1cnJlbnRseSB0aGUgZGVmYXVsdCksIHRoZSBmb2xsb3dpbmcgaXMgYWxzbyB0cnVlOlxuICAgV2UgY2Fubm90IHVzZSByZXByZXNlbnRhdGlvbiAoMykgZm9yIGEgW2Zsb2F0IExhenkudF0gYmVjYXVzZVxuICAgW2NhbWxfbWFrZV9hcnJheV0gYXNzdW1lcyB0aGF0IG9ubHkgYSBbZmxvYXRdIHZhbHVlIGNhbiBoYXZlIHRhZ1xuICAgW0RvdWJsZV90YWddLlxuXG4gICBXZSBoYXZlIHRvIHVzZSB0aGUgYnVpbHQtaW4gdHlwZSBjb25zdHJ1Y3RvciBbbGF6eV90XSB0b1xuICAgbGV0IHRoZSBjb21waWxlciBpbXBsZW1lbnQgdGhlIHNwZWNpYWwgdHlwaW5nIGFuZCBjb21waWxhdGlvblxuICAgcnVsZXMgZm9yIHRoZSBbbGF6eV0ga2V5d29yZC5cbiopXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWxpbnRlcm5hbExhenkudFxuXG5leGNlcHRpb24gVW5kZWZpbmVkID0gQ2FtbGludGVybmFsTGF6eS5VbmRlZmluZWRcbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6ICdhIC0+ICdhIGxhenlfdCA9IFwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZFwiXG5leHRlcm5hbCBmb3JjZSA6ICdhIHQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxubGV0IGZvcmNlX3ZhbCBsID0gQ2FtbGludGVybmFsTGF6eS5mb3JjZV9nZW4gfm9ubHlfdmFsOnRydWUgbFxuXG5sZXQgZnJvbV9mdW4gKGYgOiB1bml0IC0+ICdhcmcpID1cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5sYXp5X3RhZyAxIGluXG4gIE9iai5zZXRfZmllbGQgeCAwIChPYmoucmVwciBmKTtcbiAgKE9iai5vYmogeCA6ICdhcmcgdClcblxubGV0IGZyb21fdmFsICh2IDogJ2FyZykgPVxuICBsZXQgdCA9IE9iai50YWcgKE9iai5yZXByIHYpIGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgfHwgdCA9IE9iai5sYXp5X3RhZyB8fFxuICAgICB0ID0gT2JqLmZvcmNpbmdfdGFnIHx8IHQgPSBPYmouZG91YmxlX3RhZyB0aGVuIGJlZ2luXG4gICAgbWFrZV9mb3J3YXJkIHZcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICAoT2JqLm1hZ2ljIHYgOiAnYXJnIHQpXG4gIGVuZFxuXG5sZXQgaXNfdmFsIChsIDogJ2FyZyB0KSA9IE9iai50YWcgKE9iai5yZXByIGwpIDw+IE9iai5sYXp5X3RhZ1xuXG5sZXQgbWFwIGYgeCA9XG4gIGxhenkgKGYgKGZvcmNlIHgpKVxuXG5sZXQgbWFwX3ZhbCBmIHggPVxuICBpZiBpc192YWwgeFxuICB0aGVuIGZyb21fdmFsIChmIChmb3JjZSB4KSlcbiAgZWxzZSBsYXp5IChmIChmb3JjZSB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCByZWMgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIG1hdGNoIHNlcTEoKSB3aXRoXG4gIHwgTmlsIC0+IHNlcTIoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zIChmIHgsIG1hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgICB8IFNvbWUgeSAtPiBDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXIgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBpZiBmIHhcbiAgICAgIHRoZW4gQ29ucyAoeCwgZmlsdGVyIGYgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBmb2xkX2xlZnQgZiBhY2MgbmV4dFxuXG5sZXQgcmVjIGl0ZXIgZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGl0ZXIgZiBuZXh0XG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG5cbmxldCBpc19lbXB0eSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKF8sIF8pIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgdW5jb25zIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBTb21lICh4LCB4cylcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcblxuXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBhY2N1IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZW5ndGhfYXV4IChhY2N1ICsgMSkgeHNcblxubGV0W0BpbmxpbmVdIGxlbmd0aCB4cyA9XG4gIGxlbmd0aF9hdXggMCB4c1xuXG5sZXQgcmVjIGl0ZXJpX2F1eCBmIGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBmIGkgeDtcbiAgICAgIGl0ZXJpX2F1eCBmIChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBpdGVyaSBmIHhzID1cbiAgaXRlcmlfYXV4IGYgMCB4c1xuXG5sZXQgcmVjIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBpIHggaW5cbiAgICAgIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gZm9sZF9sZWZ0aSBmIGFjY3UgeHMgPVxuICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgMCB4c1xuXG5sZXQgcmVjIGZvcl9hbGwgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4ICYmIGZvcl9hbGwgcCB4c1xuXG5sZXQgcmVjIGV4aXN0cyBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4IHx8IGV4aXN0cyBwIHhzXG5cbmxldCByZWMgZmluZCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kIHAgeHNcblxubGV0IGZpbmRfaW5kZXggcCB4cyA9XG4gIGxldCByZWMgYXV4IGkgeHMgPSBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgaWYgcCB4IHRoZW4gU29tZSBpIGVsc2UgYXV4IChpKzEpIHhzIGluXG4gIGF1eCAwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG5sZXQgZmluZF9tYXBpIGYgeHMgPVxuICBsZXQgcmVjIGF1eCBpIHhzID0gbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBhdXggKGkrMSkgeHNcbiAgICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgICByZXN1bHQgaW5cbiAgYXV4IDAgeHNcblxuKCogW2l0ZXIyXSwgW2ZvbGRfbGVmdDJdLCBbZm9yX2FsbDJdLCBbZXhpc3RzMl0sIFttYXAyXSwgW3ppcF0gd29yayBhbHNvIGluXG4gICB0aGUgY2FzZSB3aGVyZSB0aGUgdHdvIHNlcXVlbmNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzLiBUaGV5IHN0b3AgYXMgc29vblxuICAgYXMgb25lIHNlcXVlbmNlIGlzIGV4aGF1c3RlZC4gVGhlaXIgYmVoYXZpb3IgaXMgc2xpZ2h0bHkgYXN5bW1ldHJpYzogd2hlblxuICAgW3hzXSBpcyBlbXB0eSwgdGhleSBkbyBub3QgZm9yY2UgW3lzXTsgaG93ZXZlciwgd2hlbiBbeXNdIGlzIGVtcHR5LCBbeHNdIGlzXG4gICBmb3JjZWQsIGV2ZW4gdGhvdWdoIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGFwcGxpY2F0aW9uIFt4cygpXSB0dXJucyBvdXRcbiAgIHRvIGJlIHVzZWxlc3MuICopXG5cbmxldCByZWMgaXRlcjIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeTtcbiAgICAgICAgICBpdGVyMiBmIHhzIHlzXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBhY2N1XG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGxldCBhY2N1ID0gZiBhY2N1IHggeSBpblxuICAgICAgICAgIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzXG5cbmxldCByZWMgZm9yX2FsbDIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgJiYgZm9yX2FsbDIgZiB4cyB5c1xuXG5sZXQgcmVjIGV4aXN0czIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSB8fCBleGlzdHMyIGYgeHMgeXNcblxubGV0IHJlYyBlcXVhbCBlcSB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGVxIHggeSAmJiBlcXVhbCBlcSB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXylcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIDBcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgbGV0IGMgPSBjbXAgeCB5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY29tcGFyZSBjbXAgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pIC0+XG4gICAgICAtMVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgICsxXG5cblxuXG4oKiBbaW5pdF9hdXggZiBpIGpdIGlzIHRoZSBzZXF1ZW5jZSBbZiBpLCAuLi4sIGYgKGotMSldLiAqKVxuXG5sZXQgcmVjIGluaXRfYXV4IGYgaSBqICgpID1cbiAgaWYgaSA8IGogdGhlbiBiZWdpblxuICAgIENvbnMgKGYgaSwgaW5pdF9hdXggZiAoaSArIDEpIGopXG4gIGVuZFxuICBlbHNlXG4gICAgTmlsXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlNlcS5pbml0XCJcbiAgZWxzZVxuICAgIGluaXRfYXV4IGYgMCBuXG5cbmxldCByZWMgcmVwZWF0IHggKCkgPVxuICBDb25zICh4LCByZXBlYXQgeClcblxubGV0IHJlYyBmb3JldmVyIGYgKCkgPVxuICBDb25zIChmKCksIGZvcmV2ZXIgZilcblxuKCogVGhpcyBwcmVsaW1pbmFyeSBkZWZpbml0aW9uIG9mIFtjeWNsZV0gcmVxdWlyZXMgdGhlIHNlcXVlbmNlIFt4c11cbiAgIHRvIGJlIG5vbmVtcHR5LiBBcHBseWluZyBpdCB0byBhbiBlbXB0eSBzZXF1ZW5jZSB3b3VsZCBwcm9kdWNlIGFcbiAgIHNlcXVlbmNlIHRoYXQgZGl2ZXJnZXMgd2hlbiBpdCBpcyBmb3JjZWQuICopXG5cbmxldCByZWMgY3ljbGVfbm9uZW1wdHkgeHMgKCkgPVxuICBhcHBlbmQgeHMgKGN5Y2xlX25vbmVtcHR5IHhzKSAoKVxuXG4oKiBbY3ljbGUgeHNdIGNoZWNrcyB3aGV0aGVyIFt4c10gaXMgZW1wdHkgYW5kLCBpZiBzbywgcmV0dXJucyBhbiBlbXB0eVxuICAgc2VxdWVuY2UuIE90aGVyd2lzZSwgW2N5Y2xlIHhzXSBwcm9kdWNlcyBvbmUgY29weSBvZiBbeHNdIGZvbGxvd2VkXG4gICB3aXRoIHRoZSBpbmZpbml0ZSBzZXF1ZW5jZSBbY3ljbGVfbm9uZW1wdHkgeHNdLiBUaHVzLCB0aGUgbm9uZW1wdGluZXNzXG4gICBjaGVjayBpcyBwZXJmb3JtZWQganVzdCBvbmNlLiAqKVxuXG5sZXQgY3ljbGUgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzJykgLT5cbiAgICAgIENvbnMgKHgsIGFwcGVuZCB4cycgKGN5Y2xlX25vbmVtcHR5IHhzKSlcblxuKCogW2l0ZXJhdGUxIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFtmIHgsIGYgKGYgeCksIC4uLl0uXG4gICBJdCBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChpdGVyYXRlIGYgeCldLlxuICAgW2l0ZXJhdGUxXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIGl0ZXJhdGUxIGYgeCAoKSA9XG4gIGxldCB5ID0gZiB4IGluXG4gIENvbnMgKHksIGl0ZXJhdGUxIGYgeSlcblxuKCogW2l0ZXJhdGUgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW3gsIGYgeCwgLi4uXS4gKilcblxuKCogVGhlIHJlYXNvbiB3aHkgd2UgZ2l2ZSB0aGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLFxuICAgYXMgb3Bwb3NlZCB0byB0aGUgbW9yZSBuYWl2ZSBkZWZpbml0aW9uIHRoYXQgbWF5IGNvbWUgdG8gbWluZCwgaXMgdGhhdFxuICAgd2UgYXJlIGNhcmVmdWwgdG8gYXZvaWQgZXZhbHVhdGluZyBbZiB4XSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGNhbGwgaXNcbiAgIGFjdHVhbGx5IG5lY2Vzc2FyeS4gVGhlIG5haXZlIGRlZmluaXRpb24gKG5vdCBzaG93biBoZXJlKSBjb21wdXRlcyB0aGVcbiAgIHNlY29uZCBhcmd1bWVudCBvZiB0aGUgc2VxdWVuY2UsIFtmIHhdLCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpc1xuICAgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLiAqKVxuXG5sZXQgaXRlcmF0ZSBmIHggPVxuICBjb25zIHggKGl0ZXJhdGUxIGYgeClcblxuXG5cbmxldCByZWMgbWFwaV9hdXggZiBpIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGYgaSB4LCBtYXBpX2F1eCBmIChpKzEpIHhzKVxuXG5sZXRbQGlubGluZV0gbWFwaSBmIHhzID1cbiAgbWFwaV9hdXggZiAwIHhzXG5cbigqIFt0YWlsX3NjYW4gZiBzIHhzXSBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChzY2FuIGYgcyB4cyldLlxuICAgW3RhaWxfc2Nhbl0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtzY2FuXS4gKilcblxuKCogVGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtzY2FuXSBpcyBtZWFudCB0byBhdm9pZCBjb21wdXRpbmdcbiAgIGVsZW1lbnRzIHRvbyBlYXJseTsgc2VlIHRoZSBhYm92ZSBjb21tZW50IGFib3V0IFtpdGVyYXRlMV0gYW5kIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyB0YWlsX3NjYW4gZiBzIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBzID0gZiBzIHggaW5cbiAgICAgIENvbnMgKHMsIHRhaWxfc2NhbiBmIHMgeHMpXG5cbmxldCBzY2FuIGYgcyB4cyA9XG4gIGNvbnMgcyAodGFpbF9zY2FuIGYgcyB4cylcblxuKCogW3Rha2VdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFt0YWtlIDAgeHNdIHJldHVybnMgW2VtcHR5XVxuICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgcmVjIHRha2VfYXV4IG4geHMgPVxuICBpZiBuID0gMCB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICBDb25zICh4LCB0YWtlX2F1eCAobi0xKSB4cylcblxubGV0IHRha2UgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEudGFrZVwiO1xuICB0YWtlX2F1eCBuIHhzXG5cbigqIFtmb3JjZV9kcm9wIG4geHNdIGlzIGVxdWl2YWxlbnQgdG8gW2Ryb3AgbiB4cyAoKV0uXG4gICBbZm9yY2VfZHJvcCBuIHhzXSByZXF1aXJlcyBbbiA+IDBdLlxuICAgW2ZvcmNlX2Ryb3BdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbZHJvcF0uICopXG5cbmxldCByZWMgZm9yY2VfZHJvcCBuIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxldCBuID0gbiAtIDEgaW5cbiAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgeHMoKVxuICAgICAgZWxzZVxuICAgICAgICBmb3JjZV9kcm9wIG4geHNcblxuKCogW2Ryb3BdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFtkcm9wIDAgeHNdIHJldHVybnMgW3hzXSBpbW1lZGlhdGVseSxcbiAgIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgZHJvcCBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS5kcm9wXCJcbiAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgeHNcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbmxldCByZWMgdGFrZV93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIENvbnMgKHgsIHRha2Vfd2hpbGUgcCB4cykgZWxzZSBOaWxcblxubGV0IHJlYyBkcm9wX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSBhcyBub2RlIC0+XG4gICAgICBpZiBwIHggdGhlbiBkcm9wX3doaWxlIHAgeHMgKCkgZWxzZSBub2RlXG5cbmxldCByZWMgZ3JvdXAgZXEgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoY29ucyB4ICh0YWtlX3doaWxlIChlcSB4KSB4cyksIGdyb3VwIGVxIChkcm9wX3doaWxlIChlcSB4KSB4cykpXG5cbmV4Y2VwdGlvbiBGb3JjZWRfdHdpY2VcblxubW9kdWxlIFN1c3BlbnNpb24gPSBzdHJ1Y3RcblxuICB0eXBlICdhIHN1c3BlbnNpb24gPVxuICAgIHVuaXQgLT4gJ2FcblxuICAoKiBDb252ZXJzaW9ucy4gKilcblxuICBsZXQgdG9fbGF6eSA6ICdhIHN1c3BlbnNpb24gLT4gJ2EgTGF6eS50ID1cbiAgICBMYXp5LmZyb21fZnVuXG4gICAgKCogZnVuIHMgLT4gbGF6eSAocygpKSAqKVxuXG4gIGxldCBmcm9tX2xhenkgKHMgOiAnYSBMYXp5LnQpIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+IExhenkuZm9yY2Ugc1xuXG4gICgqIFttZW1vaXplXSB0dXJucyBhbiBhcmJpdHJhcnkgc3VzcGVuc2lvbiBpbnRvIGEgcGVyc2lzdGVudCBzdXNwZW5zaW9uLiAqKVxuXG4gIGxldCBtZW1vaXplIChzIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmcm9tX2xhenkgKHRvX2xhenkgcylcblxuICAoKiBbZmFpbHVyZV0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgZmFpbHMgd2hlbiBmb3JjZWQuICopXG5cbiAgbGV0IGZhaWx1cmUgOiBfIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogQSBzdXNwZW5zaW9uIGNyZWF0ZWQgYnkgW29uY2VdIGhhcyBiZWVuIGZvcmNlZCB0d2ljZS4gKilcbiAgICAgIHJhaXNlIEZvcmNlZF90d2ljZVxuXG4gICgqIElmIFtmXSBpcyBhIHN1c3BlbnNpb24sIHRoZW4gW29uY2UgZl0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgY2FuIGJlIGZvcmNlZFxuICAgICBhdCBtb3N0IG9uY2UuIElmIGl0IGlzIGZvcmNlZCBtb3JlIHRoYW4gb25jZSwgdGhlbiBbRm9yY2VkX3R3aWNlXSBpc1xuICAgICByYWlzZWQuICopXG5cbiAgbGV0IG9uY2UgKGYgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGxldCBhY3Rpb24gPSBBdG9taWMubWFrZSBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBHZXQgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBzdG9yZWQgaW4gW2FjdGlvbl0sIGFuZCB3cml0ZSB0aGVcbiAgICAgICAgIGZ1bmN0aW9uIFtmYWlsdXJlXSBpbiBpdHMgcGxhY2UsIHNvIHRoZSBuZXh0IGFjY2VzcyB3aWxsIHJlc3VsdFxuICAgICAgICAgaW4gYSBjYWxsIHRvIFtmYWlsdXJlKCldLiAqKVxuICAgICAgbGV0IGYgPSBBdG9taWMuZXhjaGFuZ2UgYWN0aW9uIGZhaWx1cmUgaW5cbiAgICAgIGYoKVxuXG5lbmQgKCogU3VzcGVuc2lvbiAqKVxuXG5sZXQgcmVjIG1lbW9pemUgeHMgPVxuICBTdXNwZW5zaW9uLm1lbW9pemUgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG1lbW9pemUgeHMpXG4gIClcblxubGV0IHJlYyBvbmNlIHhzID1cbiAgU3VzcGVuc2lvbi5vbmNlIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBvbmNlIHhzKVxuICApXG5cblxubGV0IHJlYyB6aXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zICgoeCwgeSksIHppcCB4cyB5cylcblxubGV0IHJlYyBtYXAyIGYgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zIChmIHggeSwgbWFwMiBmIHhzIHlzKVxuXG5sZXQgcmVjIGludGVybGVhdmUgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHlzKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKHgsIGludGVybGVhdmUgeXMgeHMpXG5cbigqIFtzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSB5c10uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCB4cyAoY29ucyB5IHlzKV0uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgKGNvbnMgeSB5cyldLlxuXG4gICBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgYnVpbGRpbmcgYmxvY2tzIGluIHRoZSBkZWZpbml0aW9uXG4gICBvZiBbc29ydGVkX21lcmdlXS4gKilcblxubGV0IHJlYyBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cyAoKSA9XG4gIG1hdGNoIHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeCwgeHMpXG4gIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh5LCB5cylcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzID1cbiAgaWYgY21wIHggeSA8PSAwIHRoZW5cbiAgICBDb25zICh4LCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cylcbiAgZWxzZVxuICAgIENvbnMgKHksIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzKVxuXG5sZXQgc29ydGVkX21lcmdlIGNtcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICAgIHwgTmlsLCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBOaWwsIGNcbiAgICB8IGMsIE5pbCAtPlxuICAgICAgICBjXG4gICAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuXG5sZXQgcmVjIG1hcF9mc3QgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKHgsIF8pLCB4eXMpIC0+XG4gICAgICBDb25zICh4LCBtYXBfZnN0IHh5cylcblxubGV0IHJlYyBtYXBfc25kIHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKChfLCB5KSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeSwgbWFwX3NuZCB4eXMpXG5cbmxldCB1bnppcCB4eXMgPVxuICBtYXBfZnN0IHh5cywgbWFwX3NuZCB4eXNcblxubGV0IHNwbGl0ID1cbiAgdW56aXBcblxuKCogW2ZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzXSBpcyBlcXVpdmFsZW50IHRvXG4gICBbZmlsdGVyX21hcCBFaXRoZXIuZmluZF9sZWZ0IChtYXAgZiB4cyldLiAqKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IHkgLT5cbiAgICAgICAgICBDb25zICh5LCBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cylcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpXG4gICAgICB8IEVpdGhlci5SaWdodCB6IC0+XG4gICAgICAgICAgQ29ucyAoeiwgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzKVxuXG5sZXQgcGFydGl0aW9uX21hcCBmIHhzID1cbiAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMsXG4gIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4c1xuXG5sZXQgcGFydGl0aW9uIHAgeHMgPVxuICBmaWx0ZXIgcCB4cywgZmlsdGVyIChmdW4geCAtPiBub3QgKHAgeCkpIHhzXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtwZWVsIHhzc10gaXMgYSBwYWlyIG9mXG4gICB0aGUgZmlyc3QgY29sdW1uIChhIHNlcXVlbmNlIG9mIGVsZW1lbnRzKSBhbmQgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiBzaG9ydGVyIHJvd3MpLiBUaGVzZSB0d28gc2VxdWVuY2VzIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gQW4gZW1wdHkgcm93IGlzIGlnbm9yZWQuICopXG5cbigqIEJlY2F1c2UgW3BlZWxdIHVzZXMgW3VuemlwXSwgaXRzIGFyZ3VtZW50IG11c3QgYmUgcGVyc2lzdGVudC4gVGhlIHNhbWVcbiAgIHJlbWFyayBhcHBsaWVzIHRvIFt0cmFuc3Bvc2VdLCBbZGlhZ29uYWxzXSwgW3Byb2R1Y3RdLCBldGMuICopXG5cbmxldCBwZWVsIHhzcyA9XG4gIHVuemlwIChmaWx0ZXJfbWFwIHVuY29ucyB4c3MpXG5cbmxldCByZWMgdHJhbnNwb3NlIHhzcyAoKSA9XG4gIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHhzcyBpblxuICBpZiBpc19lbXB0eSBoZWFkcyB0aGVuIGJlZ2luXG4gICAgYXNzZXJ0IChpc19lbXB0eSB0YWlscyk7XG4gICAgTmlsXG4gIGVuZFxuICBlbHNlXG4gICAgQ29ucyAoaGVhZHMsIHRyYW5zcG9zZSB0YWlscylcblxuKCogVGhlIGludGVybmFsIGZ1bmN0aW9uIFtkaWFnb25hbHNdIHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50LCBbcmVtYWluZGVyc10sXG4gICB3aGljaCBjb250YWlucyB0aGUgcmVtYWluZGVycyBvZiB0aGUgcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuXG4gICBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcmVjIGRpYWdvbmFscyByZW1haW5kZXJzIHhzcyAoKSA9XG4gIG1hdGNoIHhzcygpIHdpdGhcbiAgfCBDb25zICh4cywgeHNzKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IG5vbmVtcHR5IHJvdyBbeCA6OiB4c10uIFRodXMsIHRoZSBuZXh0IGRpYWdvbmFsXG4gICAgICAgICAgICAgaXMgW3ggOjogaGVhZHNdOiB0aGlzIGRpYWdvbmFsIGJlZ2lucyB3aXRoIFt4XSBhbmQgY29udGludWVzIHdpdGhcbiAgICAgICAgICAgICB0aGUgZmlyc3QgZWxlbWVudCBvZiBldmVyeSByb3cgaW4gW3JlbWFpbmRlcnNdLiBJbiB0aGUgcmVjdXJzaXZlXG4gICAgICAgICAgICAgY2FsbCwgdGhlIGFyZ3VtZW50IFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBbeHMgOjpcbiAgICAgICAgICAgICB0YWlsc10sIHdoaWNoIG1lYW5zIHRoYXQgd2UgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LCBbeHNdLFxuICAgICAgICAgICAgIGFuZCB0aGF0IHdlIGtlZXAgdGhlIHRhaWxzIG9mIHRoZSBwcmUtZXhpc3RpbmcgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGNvbnMgeCBoZWFkcywgZGlhZ29uYWxzIChjb25zIHhzIHRhaWxzKSB4c3MpXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IGVtcHR5IHJvdy4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpYWdvbmFsIGlzXG4gICAgICAgICAgICAganVzdCBbaGVhZHNdLCBhbmQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIGp1c3QgW3RhaWxzXSxcbiAgICAgICAgICAgICBhcyB3ZSBkbyBub3QgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChoZWFkcywgZGlhZ29uYWxzIHRhaWxzIHhzcylcbiAgICAgIGVuZFxuICB8IE5pbCAtPlxuICAgICAgKCogVGhlcmUgYXJlIG5vIG1vcmUgcm93cyB0byBiZSBkaXNjb3ZlcmVkLiBUaGVyZSByZW1haW5zIHRvIGV4aGF1c3RcbiAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cy4gKilcbiAgICAgIHRyYW5zcG9zZSByZW1haW5kZXJzICgpXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtkaWFnb25hbHMgeHNzXSBpc1xuICAgdGhlIHNlcXVlbmNlIG9mIGl0cyBkaWFnb25hbHMuXG5cbiAgIFRoZSBmaXJzdCBkaWFnb25hbCBjb250YWlucyBqdXN0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgZmlyc3Qgcm93LiBUaGUgc2Vjb25kIGRpYWdvbmFsIGNvbnRhaW5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgc2Vjb25kIHJvdyBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBmaXJzdCByb3c7IGFuZCBzbyBvbi5cbiAgIFRoaXMga2luZCBvZiBkaWFnb25hbCBpcyBpbiBmYWN0IHNvbWV0aW1lcyBrbm93biBhcyBhbiBhbnRpZGlhZ29uYWwuXG5cbiAgIC0gRXZlcnkgZGlhZ29uYWwgaXMgYSBmaW5pdGUgc2VxdWVuY2UuXG4gICAtIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZmluaXRlIChpbiBlaXRoZXIgZGlyZWN0aW9uKS5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBtdXN0IGJlIHBlcnNpc3RlbnQuICopXG5cbmxldCBkaWFnb25hbHMgeHNzID1cbiAgZGlhZ29uYWxzIGVtcHR5IHhzc1xuXG5sZXQgbWFwX3Byb2R1Y3QgZiB4cyB5cyA9XG4gIGNvbmNhdCAoZGlhZ29uYWxzIChcbiAgICBtYXAgKGZ1biB4IC0+XG4gICAgICBtYXAgKGZ1biB5IC0+XG4gICAgICAgIGYgeCB5XG4gICAgICApIHlzXG4gICAgKSB4c1xuICApKVxuXG5sZXQgcHJvZHVjdCB4cyB5cyA9XG4gIG1hcF9wcm9kdWN0IChmdW4geCB5IC0+ICh4LCB5KSkgeHMgeXNcblxubGV0IG9mX2Rpc3BlbnNlciBpdCA9XG4gIGxldCByZWMgYyAoKSA9XG4gICAgbWF0Y2ggaXQoKSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIE5pbFxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIENvbnMgKHgsIGMpXG4gIGluXG4gIGNcblxubGV0IHRvX2Rpc3BlbnNlciB4cyA9XG4gIGxldCBzID0gcmVmIHhzIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICghcykoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9IE5vbmUgfCBTb21lIG9mICdhXG5cbmxldCBub25lID0gTm9uZVxubGV0IHNvbWUgdiA9IFNvbWUgdlxubGV0IHZhbHVlIG8gfmRlZmF1bHQgPSBtYXRjaCBvIHdpdGggU29tZSB2IC0+IHYgfCBOb25lIC0+IGRlZmF1bHRcbmxldCBnZXQgPSBmdW5jdGlvbiBTb21lIHYgLT4gdiB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5sZXQgYmluZCBvIGYgPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IGYgdlxubGV0IGpvaW4gPSBmdW5jdGlvbiBTb21lIG8gLT4gbyB8IE5vbmUgLT4gTm9uZVxubGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmxldCBmb2xkIH5ub25lIH5zb21lID0gZnVuY3Rpb24gU29tZSB2IC0+IHNvbWUgdiB8IE5vbmUgLT4gbm9uZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBmIHYgfCBOb25lIC0+ICgpXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdHJ1ZSB8IFNvbWUgXyAtPiBmYWxzZVxubGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcblxubGV0IGVxdWFsIGVxIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBlcSB2MCB2MVxufCBOb25lLCBOb25lIC0+IHRydWVcbnwgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSBjbXAgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGNtcCB2MCB2MVxufCBOb25lLCBOb25lIC0+IDBcbnwgTm9uZSwgU29tZSBfIC0+IC0xXG58IFNvbWUgXywgTm9uZSAtPiAxXG5cbmxldCB0b19yZXN1bHQgfm5vbmUgPSBmdW5jdGlvbiBOb25lIC0+IEVycm9yIG5vbmUgfCBTb21lIHYgLT4gT2sgdlxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBOb25lIC0+IFtdIHwgU29tZSB2IC0+IFt2XVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE5vbmUgLT4gU2VxLmVtcHR5IHwgU29tZSB2IC0+IFNlcS5yZXR1cm4gdlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdlXG5cbmxldCBvayB2ID0gT2sgdlxubGV0IGVycm9yIGUgPSBFcnJvciBlXG5sZXQgdmFsdWUgciB+ZGVmYXVsdCA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGRlZmF1bHRcbmxldCBnZXRfb2sgPSBmdW5jdGlvbiBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIEVycm9yIF9cIlxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgYmluZCByIGYgPSBtYXRjaCByIHdpdGggT2sgdiAtPiBmIHYgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IGpvaW4gPSBmdW5jdGlvbiBPayByIC0+IHIgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcCBmID0gZnVuY3Rpb24gT2sgdiAtPiBPayAoZiB2KSB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBPayB2IC0+IGYgdiB8IEVycm9yIF8gLT4gKClcbmxldCBpdGVyX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGYgZSB8IE9rIF8gLT4gKClcbmxldCBpc19vayA9IGZ1bmN0aW9uIE9rIF8gLT4gdHJ1ZSB8IEVycm9yIF8gLT4gZmFsc2VcbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uIEVycm9yIF8gLT4gdHJ1ZSB8IE9rIF8gLT4gZmFsc2VcblxubGV0IGVxdWFsIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IF8sIF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgT2sgXywgRXJyb3IgXyAtPiAtMVxufCBFcnJvciBfLCBPayBfIC0+IDFcblxubGV0IHRvX29wdGlvbiA9IGZ1bmN0aW9uIE9rIHYgLT4gU29tZSB2IHwgRXJyb3IgXyAtPiBOb25lXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE9rIHYgLT4gW3ZdIHwgRXJyb3IgXyAtPiBbXVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE9rIHYgLT4gU2VxLnJldHVybiB2IHwgRXJyb3IgXyAtPiBTZXEuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gYm9vbCA9IGZhbHNlIHwgdHJ1ZVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5sZXQgZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuZXh0ZXJuYWwgdG9faW50IDogYm9vbCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvbiBmYWxzZSAtPiAwLiB8IHRydWUgLT4gMS5cblxuKCpcbmxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxufCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxufCBcInRydWVcIiAtPiBTb21lIHRydWVcbnwgXyAtPiBOb25lXG4qKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb24gZmFsc2UgLT4gXCJmYWxzZVwiIHwgdHJ1ZSAtPiBcInRydWVcIlxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgY2hyIG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJDaGFyLmNoclwiIGVsc2UgdW5zYWZlX2NociBuXG5cbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZTogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBieXRlc191bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgZXNjYXBlZCA9IGZ1bmN0aW9uXG4gIHwgJ1xcJycgLT4gXCJcXFxcJ1wiXG4gIHwgJ1xcXFwnIC0+IFwiXFxcXFxcXFxcIlxuICB8ICdcXG4nIC0+IFwiXFxcXG5cIlxuICB8ICdcXHQnIC0+IFwiXFxcXHRcIlxuICB8ICdcXHInIC0+IFwiXFxcXHJcIlxuICB8ICdcXGInIC0+IFwiXFxcXGJcIlxuICB8ICcgJyAuLiAnficgYXMgYyAtPlxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgMSBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgYztcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuICB8IGMgLT5cbiAgICAgIGxldCBuID0gY29kZSBjIGluXG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSA0IGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCAnXFxcXCc7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMSAodW5zYWZlX2NociAoNDggKyBuIC8gMTAwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMiAodW5zYWZlX2NociAoNDggKyAobiAvIDEwKSBtb2QgMTApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAzICh1bnNhZmVfY2hyICg0OCArIG4gbW9kIDEwKSk7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IGxvd2VyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBEYW5pZWwgQy4gQnVlbnpsaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5cbmxldCBlcnJfbm9fcHJlZCA9IFwiVSswMDAwIGhhcyBubyBwcmVkZWNlc3NvclwiXG5sZXQgZXJyX25vX3N1Y2MgPSBcIlUrMTBGRkZGIGhhcyBubyBzdWNjZXNzb3JcIlxubGV0IGVycl9ub3Rfc3YgaSA9IGZvcm1hdF9pbnQgXCIlWFwiIGkgXiBcIiBpcyBub3QgYW4gVW5pY29kZSBzY2FsYXIgdmFsdWVcIlxubGV0IGVycl9ub3RfbGF0aW4xIHUgPSBcIlUrXCIgXiBmb3JtYXRfaW50IFwiJTA0WFwiIHUgXiBcIiBpcyBub3QgYSBsYXRpbjEgY2hhcmFjdGVyXCJcblxudHlwZSB0ID0gaW50XG5cbmxldCBtaW4gPSAweDAwMDBcbmxldCBtYXggPSAweDEwRkZGRlxubGV0IGxvX2JvdW5kID0gMHhEN0ZGXG5sZXQgaGlfYm91bmQgPSAweEUwMDBcblxubGV0IGJvbSA9IDB4RkVGRlxubGV0IHJlcCA9IDB4RkZGRFxuXG5sZXQgc3VjYyB1ID1cbiAgaWYgdSA9IGxvX2JvdW5kIHRoZW4gaGlfYm91bmQgZWxzZVxuICBpZiB1ID0gbWF4IHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3N1Y2MgZWxzZVxuICB1ICsgMVxuXG5sZXQgcHJlZCB1ID1cbiAgaWYgdSA9IGhpX2JvdW5kIHRoZW4gbG9fYm91bmQgZWxzZVxuICBpZiB1ID0gbWluIHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3ByZWQgZWxzZVxuICB1IC0gMVxuXG5sZXQgaXNfdmFsaWQgaSA9IChtaW4gPD0gaSAmJiBpIDw9IGxvX2JvdW5kKSB8fCAoaGlfYm91bmQgPD0gaSAmJiBpIDw9IG1heClcbmxldCBvZl9pbnQgaSA9IGlmIGlzX3ZhbGlkIGkgdGhlbiBpIGVsc2UgaW52YWxpZF9hcmcgKGVycl9ub3Rfc3YgaSlcbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfY2hhciB1ID0gdSA8IDI1NlxubGV0IG9mX2NoYXIgYyA9IENoYXIuY29kZSBjXG5sZXQgdG9fY2hhciB1ID1cbiAgaWYgdSA+IDI1NSB0aGVuIGludmFsaWRfYXJnIChlcnJfbm90X2xhdGluMSB1KSBlbHNlXG4gIENoYXIudW5zYWZlX2NociB1XG5cbmxldCB1bnNhZmVfdG9fY2hhciA9IENoYXIudW5zYWZlX2NoclxuXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgaGFzaCA9IHRvX2ludFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4MDA3RiAtPiAxXG58IHUgd2hlbiB1IDw9IDB4MDdGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAzXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHV0Zl8xNl9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGluaXQgaSBsYXN0IGYgPVxuICBpZiBpID4gbGFzdCB0aGVuIFtdXG4gIGVsc2UgaWYgaSA9IGxhc3QgdGhlbiBbZiBpXVxuICBlbHNlXG4gICAgbGV0IHIxID0gZiBpIGluXG4gICAgbGV0IHIyID0gZiAoaSsxKSBpblxuICAgIHIxIDo6IHIyIDo6IGluaXQgKGkrMikgbGFzdCBmXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpbml0IDAgKGxlbiAtIDEpIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBbYTFdIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBsZXQgcjIgPSBmIGEyIGluXG4gICAgICByMTo6cjI6Om1hcCBmIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgW2ExXSAtPlxuICAgICAgbGV0IHIxID0gZiBpIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGkgYTEgaW5cbiAgICAgIGxldCByMiA9IGYgKGkrMSkgYTIgaW5cbiAgICAgIHIxOjpyMjo6bWFwaSAoaSsyKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoW2ExXSwgW2IxXSkgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIFtyMV1cbiAgfCAoYTE6OmEyOjpsMSwgYjE6OmIyOjpsMikgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIGxldCByMiA9IGYgYTIgYjIgaW5cbiAgICAgIHIxOjpyMjo6bWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCBmaW5kX2luZGV4IHAgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIHAgYSB0aGVuIFNvbWUgaSBlbHNlIGF1eCAoaSsxKSBsIGluXG4gIGF1eCAwXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9tYXBpIGYgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGF1eCAoaSsxKSBsXG4gICAgIGVuZCBpblxuICBhdXggMFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IDo6IGZpbmRfYWxsIHAgbCBlbHNlIGZpbmRfYWxsIHAgbFxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyaSBwIGkgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6bCAtPlxuICAgICAgbGV0IGknID0gaSArIDEgaW5cbiAgICAgIGlmIHAgaSB4IHRoZW4geCA6OiBmaWx0ZXJpIHAgaScgbCBlbHNlIGZpbHRlcmkgcCBpJyBsXG5cbmxldCBmaWx0ZXJpIHAgbCA9IGZpbHRlcmkgcCAwIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbFxuICAgICAgfCBTb21lIHYgLT4gdiA6OiBmaWx0ZXJfbWFwIGYgbFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBjb25jYXRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6eHMgLT4gcHJlcGVuZF9jb25jYXRfbWFwIChmIHgpIGYgeHNcbmFuZFtAdGFpbF9tb2RfY29uc10gcHJlcGVuZF9jb25jYXRfbWFwIHlzIGYgeHMgPVxuICBtYXRjaCB5cyB3aXRoXG4gIHwgW10gLT4gY29uY2F0X21hcCBmIHhzXG4gIHwgeSA6OiB5cyAtPiB5IDo6IHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgdmVyeSBsb25nIGxpc3QgKGxlbmd0aCBvdmVyIGFib3V0IDEwMDAwMCksIGl0IHVzZWQgdG8gYmVcbiAgIGZhc3RlciB0byBjb252ZXJ0IHRoZSBsaXN0IHRvIGFuIGFycmF5LCBzb3J0IHRoZSBhcnJheSwgYW5kIGNvbnZlcnRcbiAgIGJhY2ssIHRydW5jYXRpbmcgdGhlIGFycmF5IG9iamVjdCBhZnRlciBwcmVwZW5kaW5nIGVhY2ggdGhvdXNhbmRcbiAgIGVudHJpZXMgdG8gdGhlIHJlc3VsdGluZyBsaXN0LiBJbXBvc3NpYmxlIG5vdyB0aGF0IE9iai50cnVuY2F0ZSBoYXNcbiAgIGJlZW4gcmVtb3ZlZC4gKilcblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBkdXBsaWNhdGVzICopXG5cbmxldCBzb3J0X3VuaXEgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2UgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlX3JldiB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhfd2l0aCBsIG4gPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGlmIG4gPSAwIHRoZW4gMCBlbHNlXG4gICAgICBpZiBuID4gMCB0aGVuIC0xIGVsc2UgMVxuICB8IF8gOjogbCAtPlxuICAgIGlmIG4gPD0gMCB0aGVuIDEgZWxzZVxuICAgICAgY29tcGFyZV9sZW5ndGhfd2l0aCBsIChuLTEpXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gOjogXyAtPiBmYWxzZVxuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgb2Zfc2VxIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiBbXVxuICB8IFNlcS5Db25zICh4MSwgc2VxKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBbeDFdXG4gICAgICB8IFNlcS5Db25zICh4Miwgc2VxKSAtPiB4MSA6OiB4MiA6OiBvZl9zZXEgc2VxXG4gICAgICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuZXh0ZXJuYWwgbmVnIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCBhZGQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBzdWIgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCBtdWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCBkaXYgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCByZW0gOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCBsb2dvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxvZ25vdCB4ID0gbG9neG9yIHggKC0xKVxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5cbigqXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmcgcyA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmxldCB0b19zdHJpbmcgeCA9IGZvcm1hdF9pbnQgXCIlZFwiIHhcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgdW5zYWZlX2VzY2FwZSBzID1cbiAgKCogV2UgcGVyZm9ybSB0d28gcGFzc2VzIG9uIHRoZSBpbnB1dCBzZXF1ZW5jZSwgb25lIHRvIGNvbXB1dGUgdGhlXG4gICAgIHJlc3VsdCBzaXplIGFuZCBvbmUgdG8gd3JpdGUgdGhlIHJlc3VsdC5cblxuICAgICAjMTE1MDgsICMxMTUwOTogVGhpcyBsb2dpYyB3b3VsZCBiZSBpbmNvcnJlY3QgaW4gcHJlc2VuY2Ugb2ZcbiAgICAgY29uY3VycmVudCBtb2RpZmljYXRpb24gdG8gdGhlIGlucHV0LCBtYWtpbmcgdGhlIHVzZSBvZlxuICAgICBbdW5zYWZlX3NldF0gYmVsb3cgbWVtb3J5LXVuc2FmZS5cblxuICAgICBQcmVjb25kaXRpb246IFRoaXMgZnVuY3Rpb24gbWF5IGJlIHNhZmVseSBjYWxsZWQgb246XG4gICAgIC0gYW4gaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2VcbiAgICAgLSBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgKHRoZSBmdW5jdGlvbiB0YWtlcyBvd25lcnNoaXApXG5cbiAgICAgSW4gZWl0aGVyIGNhc2Ugd2UgcmV0dXJuIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZS5cbiAgKilcbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBzXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgZXNjYXBlZCBiID1cbiAgbGV0IGIgPSBjb3B5IGIgaW5cbiAgKCogV2UgY29weSBvdXIgaW5wdXQgdG8gb2J0YWluIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZSBbYl1cbiAgICAgdG8gc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gKilcbiAgdW5zYWZlX2VzY2FwZSBiXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuICBlbHNlIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeFxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4IGVsc2VcbiAgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG5cbigqIFVURiBjb2RlY3MgYW5kIHZhbGlkYXRpb25zICopXG5cbmxldCBkZWNfaW52YWxpZCA9IFVjaGFyLnV0Zl9kZWNvZGVfaW52YWxpZFxubGV0W0BpbmxpbmVdIGRlY19yZXQgbiB1ID0gVWNoYXIudXRmX2RlY29kZSBuIChVY2hhci51bnNhZmVfb2ZfaW50IHUpXG5cbigqIEluIGNhc2Ugb2YgZGVjb2RpbmcgZXJyb3IsIGlmIHdlIGVycm9yIG9uIHRoZSBmaXJzdCBieXRlLCB3ZVxuICAgY29uc3VtZSB0aGUgYnl0ZSwgb3RoZXJ3aXNlIHdlIGNvbnN1bWUgdGhlIFtuXSBieXRlcyBwcmVjZWRpbmdcbiAgIHRoZSBlcnJvcmluZyBieXRlLlxuXG4gICBUaGlzIG1lYW5zIHRoYXQgaWYgYSBjbGllbnQgdXNlcyBkZWNvZGVzIHdpdGhvdXQgY2FyaW5nIGFib3V0XG4gICB2YWxpZGl0eSBpdCBuYXR1cmFsbHkgcmVwbGFjZSBib2d1cyBkYXRhIHdpdGggVWNoYXIucmVwIGFjY29yZGluZ1xuICAgdG8gdGhlIFdIQVRXRyBFbmNvZGluZyBzdGFuZGFyZC4gT3RoZXIgc2NoZW1lcyBhcmUgcG9zc2libGUgYnlcbiAgIGNvbnN1bHRpbmcgdGhlIG51bWJlciBvZiB1c2VkIGJ5dGVzIG9uIGludmFsaWQgZGVjb2Rlcy4gRm9yIG1vcmVcbiAgIGRldGFpbHMgc2VlIGh0dHBzOi8vaHNpdm9uZW4uZmkvYnJva2VuLXV0Zi04L1xuXG4gICBGb3IgdGhpcyByZWFzb24gaW4gW2dldF91dGZfOF91Y2hhcl0gd2UgZ3JhZHVhbGx5IGNoZWNrIHRoZSBuZXh0XG4gICBieXRlIGlzIGF2YWlsYWJsZSByYXRoZXIgdGhhbiBkb2luZyBpdCBpbW1lZGlhdGVseSBhZnRlciB0aGVcbiAgIGZpcnN0IGJ5dGUuIENvbnRyYXN0IHdpdGggW2lzX3ZhbGlkX3V0Zl84XS4gKilcblxuKCogVVRGLTggKilcblxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feEJGIGIgPSBiIGxzciA2IDw+IDBiMTBcbmxldFtAaW5saW5lXSBub3RfaW5feEEwX3RvX3hCRiBiID0gYiBsc3IgNSA8PiAwYjEwMVxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDlGIGIgPSBiIGxzciA1IDw+IDBiMTAwXG5sZXRbQGlubGluZV0gbm90X2luX3g5MF90b194QkYgYiA9IGIgPCAweDkwIHx8IDB4QkYgPCBiXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OEYgYiA9IGIgbHNyIDQgPD4gMHg4XG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8yIGIwIGIxID1cbiAgKChiMCBsYW5kIDB4MUYpIGxzbCA2KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMyBiMCBiMSBiMiA9XG4gICgoYjAgbGFuZCAweDBGKSBsc2wgMTIpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIyIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzID1cbiAgKChiMCBsYW5kIDB4MDcpIGxzbCAxOCkgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgMTIpIGxvclxuICAoKGIyIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIzIGxhbmQgMHgzRikpXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgYiBpID1cbiAgbGV0IGIwID0gZ2V0X3VpbnQ4IGIgaSBpbiAoKiByYWlzZXMgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIGluZGV4LiAqKVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIENoYXIudW5zYWZlX2NociBiMCB3aXRoICgqIFNlZSBUaGUgVW5pY29kZSBTdGFuZGFyZCwgVGFibGUgMy43ICopXG4gIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGRlY19yZXQgMSBiMFxuICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBkZWNfcmV0IDIgKHV0Zl84X3VjaGFyXzIgYjAgYjEpXG4gIHwgJ1xceEUwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94QTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEVEJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDlGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RjAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g5MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEY0JyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDhGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8IF8gLT4gZGVjX2ludmFsaWQgMVxuXG5sZXQgc2V0X3V0Zl84X3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICAgc2V0X3VpbnQ4IGIgaSB1O1xuICAgICAgMVxuICB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4QzAgbG9yICh1IGxzciA2KSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMilcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEUwIGxvciAodSBsc3IgMTIpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDMpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEYwIGxvciAodSBsc3IgMTgpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiAoaSArIDIpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDQpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl84IGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gICAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIChnZXQgYiBpKSB3aXRoXG4gICAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gbG9vcCBtYXggYiAoaSArIDEpXG4gICAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feEEwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RUQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g5RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94OTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEY0JyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OEYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZCRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZiZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZMRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZsZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGJsaXQgPVxuICBCLmJsaXRfc3RyaW5nXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gXCJcIlxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW4gYnRzIEBAXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoQi5jcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCA9ICggXiApXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXJpIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG5sZXQgbWFwIGYgcyA9XG4gIEIubWFwIGYgKGJvcyBzKSB8PiBidHNcbmxldCBtYXBpIGYgcyA9XG4gIEIubWFwaSBmIChib3MgcykgfD4gYnRzXG5sZXQgZm9sZF9yaWdodCBmIHggYSA9XG4gIEIuZm9sZF9yaWdodCBmIChib3MgeCkgYVxubGV0IGZvbGRfbGVmdCBmIGEgeCA9XG4gIEIuZm9sZF9sZWZ0IGYgYSAoYm9zIHgpXG5sZXQgZXhpc3RzIGYgcyA9XG4gIEIuZXhpc3RzIGYgKGJvcyBzKVxubGV0IGZvcl9hbGwgZiBzID1cbiAgQi5mb3JfYWxsIGYgKGJvcyBzKVxuXG4oKiBCZXdhcmU6IHdlIGNhbm5vdCB1c2UgQi50cmltIG9yIEIuZXNjYXBlIGJlY2F1c2UgdGhleSBhbHdheXMgbWFrZSBhXG4gICBjb3B5LCBidXQgU3RyaW5nLm1saSBzcGVsbHMgb3V0IHNvbWUgY2FzZXMgd2hlcmUgd2UgYXJlIG5vdCBhbGxvd2VkXG4gICB0byBtYWtlIGEgY29weS4gKilcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBpZiBzID0gXCJcIiB0aGVuIHNcbiAgZWxzZSBpZiBpc19zcGFjZSAodW5zYWZlX2dldCBzIDApIHx8IGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgKGxlbmd0aCBzIC0gMSkpXG4gICAgdGhlbiBidHMgKEIudHJpbSAoYm9zIHMpKVxuICBlbHNlIHNcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCBiID0gYm9zIHMgaW5cbiAgKCogV2Ugc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gYnkgcGFzc2luZyBhblxuICAgICBpbW11dGFibGUgYnl0ZSBzZXF1ZW5jZSBbYl0uICopXG4gIGJ0cyAoQi51bnNhZmVfZXNjYXBlIGIpXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID1cbiAgQi51cHBlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9XG4gIEIubG93ZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLnVuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zdHJpbmdfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2ggMCB4XG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3RyaW5nX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gYm9zIHMgfD4gQi50b19zZXFcblxubGV0IHRvX3NlcWkgcyA9IGJvcyBzIHw+IEIudG9fc2VxaVxuXG5sZXQgb2Zfc2VxIGcgPSBCLm9mX3NlcSBnIHw+IGJ0c1xuXG4oKiBVVEYgZGVjb2RlcnMgYW5kIHZhbGlkYXRvcnMgKilcblxubGV0IGdldF91dGZfOF91Y2hhciBzIGkgPSBCLmdldF91dGZfOF91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfOCBzID0gQi5pc192YWxpZF91dGZfOCAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2YmVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2YmVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2YmUgKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmxlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmxlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmxlIChib3MgcylcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5cbmxldCBnZXRfaW50OCBzIGkgPSBCLmdldF9pbnQ4IChib3MgcykgaVxubGV0IGdldF91aW50MTZfbGUgcyBpID0gQi5nZXRfdWludDE2X2xlIChib3MgcykgaVxubGV0IGdldF91aW50MTZfYmUgcyBpID0gQi5nZXRfdWludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9uZSBzIGkgPSBCLmdldF9pbnQxNl9uZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbGUgcyBpID0gQi5nZXRfaW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2JlIHMgaSA9IEIuZ2V0X2ludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9sZSBzIGkgPSBCLmdldF9pbnQzMl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfYmUgcyBpID0gQi5nZXRfaW50MzJfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2xlIHMgaSA9IEIuZ2V0X2ludDY0X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9iZSBzIGkgPSBCLmdldF9pbnQ2NF9iZSAoYm9zIHMpIGlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gdW5pdCA9ICgpXG5cbmxldCBlcXVhbCAoKSAoKSA9IHRydWVcbmxldCBjb21wYXJlICgpICgpID0gMFxubGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGV4dGVybl9mbGFncyA9XG4gICAgTm9fc2hhcmluZ1xuICB8IENsb3N1cmVzXG4gIHwgQ29tcGF0XzMyXG5cbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAxNlxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIDBdIHdoZW4gW2wgPD0gMF0uXG4gICAgIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYWtlX21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gICAgZG9uZTtcbiAgZW5kO1xuICByZXNcblxubGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0X21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgKCogV2UgbXVzdCBub3QgZXZhbHVhdGUgW2YgeCAwXSB3aGVuIFtzeSA8PSAwXTogKilcbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSAoZiB4IDApIGluXG4gICAgICBmb3IgeSA9IDEgdG8gcHJlZCBzeSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgIGRvbmU7XG4gICAgICB1bnNhZmVfc2V0IHJlcyB4IHJvd1xuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgZG9uZVxuXG5sZXQgbWFwaV9pbnBsYWNlIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfaW5kZXggcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBTb21lIGlcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwaSBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxubGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgIGxldCBqID0gcmFuZCAoaSArIDEpIGluXG4gICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICB1bnNhZmVfc2V0IGEgaiB2XG4gIGRvbmVcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgcXVpZXRfbmFuID0gbmFuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IHNpZ25hbGluZ19uYW4gPSBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgbWFrZV9tYXRyaXggc3ggc3kgdiA9XG4gICAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gICAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5tYWtlX21hdHJpeFwiO1xuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIHN4IChjcmVhdGUgMCkgaW5cbiAgICBpZiBzeSA+IDAgdGhlbiBiZWdpblxuICAgICAgZm9yIHggPSAwIHRvIHN4IC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyB4IChtYWtlIHN5IHYpXG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgaW5pdF9tYXRyaXggc3ggc3kgZiA9XG4gICAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gICAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0X21hdHJpeFwiO1xuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIHN4IChjcmVhdGUgMCkgaW5cbiAgICBpZiBzeSA+IDAgdGhlbiBiZWdpblxuICAgICAgZm9yIHggPSAwIHRvIHN4IC0gMSBkb1xuICAgICAgICBsZXQgcm93ID0gY3JlYXRlIHN5IGluXG4gICAgICAgIGZvciB5ID0gMCB0byBzeSAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCByb3dcbiAgICAgIGRvbmU7XG4gICAgZW5kO1xuICAgIHJlc1xuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGxldCBsMiA9IGxlbmd0aCBhMiBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gICAgdW5zYWZlX2JsaXQgYTEgMCByZXN1bHQgMCBsMTtcbiAgICB1bnNhZmVfYmxpdCBhMiAwIHJlc3VsdCBsMSBsMjtcbiAgICByZXN1bHRcblxuICAoKiBuZXh0IDMgZnVuY3Rpb25zOiBtb2RpZmllZCBjb3B5IG9mIGNvZGUgZnJvbSBzdHJpbmcubWwgKilcbiAgbGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPVxuICAgIGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmNvbmNhdFwiXG5cbiAgbGV0IHJlYyBzdW1fbGVuZ3RocyBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBhY2MpIGFjYykgdGxcblxuICBsZXQgY29uY2F0IGwgPVxuICAgIGxldCBsZW4gPSBzdW1fbGVuZ3RocyAwIGwgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsIGkgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IGxlbilcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0IGhsZW4gPSBsZW5ndGggaGQgaW5cbiAgICAgICAgdW5zYWZlX2JsaXQgaGQgMCByZXN1bHQgaSBobGVuO1xuICAgICAgICBsb29wIHRsIChpICsgaGxlbilcbiAgICBpblxuICAgIGxvb3AgbCAwO1xuICAgIHJlc3VsdFxuXG4gIGxldCBzdWIgYSBvZnMgbGVuID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5zdWJcIjtcbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IGEgb2ZzIHJlc3VsdCAwIGxlbjtcbiAgICByZXN1bHRcblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsIGluXG4gICAgdW5zYWZlX2JsaXQgYSAwIHJlc3VsdCAwIGw7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlciBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIyIGYgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbiAgbGV0IG1hcCBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWFwX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmVcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcGlfaW5wbGFjZSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBleGlzdHMgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9yX2FsbCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIGZhbHNlIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtZW0geCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgYnV0IHNsaWdodGx5IGRpZmZlcmVudCAqKVxuICBsZXQgbWVtX2llZWUgeCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiB4ID0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfb3B0IHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeFxuICAgICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX2luZGV4IHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX21hcCBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXBpIGYgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbiAgbGV0IHNvcnQgY21wIGEgPVxuICAgIGxldCBtYXhzb24gbCBpID1cbiAgICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAgICF4XG4gICAgICBlbmQgZWxzZVxuICAgICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgICAgdGhlbiBpMzErMVxuICAgICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gICAgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gICAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgYnViYmxlZG93biBsIGpcbiAgICBpblxuICAgIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICAgIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gICAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICAgIGRvbmU7XG4gICAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGV4Y2VwdCBmb3IgdGhlIGNhbGwgdG8gW2NyZWF0ZV0gKilcbiAgbGV0IGN1dG9mZiA9IDVcbiAgbGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgICBlbmRcbiAgICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICAgIGluXG4gICAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgICAgZGVjciBqO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgICBkb25lO1xuICAgIGluXG4gICAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgICAgbGV0IHQgPSBjcmVhdGUgbDIgaW5cbiAgICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgICBlbmRcblxuICBsZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAxIGRvXG4gICAgICBsZXQgaiA9IHJhbmQgKGkgKyAxKSBpblxuICAgICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgdW5zYWZlX3NldCBhIGkgKGdldCBhIGopO1xuICAgICAgdW5zYWZlX3NldCBhIGogdlxuICAgIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXFpIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2ZfcmV2X2xpc3QgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgIFtdIC0+IGFcbiAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgaW5cbiAgICBmaWxsIChsZW4tMSkgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2Zfc2VxIGkgPVxuICAgIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICAgIG9mX3Jldl9saXN0IGxcblxuXG4gIGxldCBtYXBfdG9fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBbfCB8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IEFycmF5Lm1ha2UgbCAoZiAodW5zYWZlX2dldCBhIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gIGxldCBtYXBfZnJvbV9hcnJheSBmIGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG5lbmRcblxubW9kdWxlIEFycmF5TGFiZWxzID0gQXJyYXlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBuID49IDBMICYmIG4gPD0gbWF4X2ludCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSB4ID0geVxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTmF0aXZlaW50XTogcHJvY2Vzc29yLW5hdGl2ZSBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWc6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbmVnXCJcbmV4dGVybmFsIGFkZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYWRkXCJcbmV4dGVybmFsIHN1YjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfc3ViXCJcbmV4dGVybmFsIG11bDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbXVsXCJcbmV4dGVybmFsIGRpdjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfZGl2XCJcbmV4dGVybmFsIHJlbTogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYW5kXCJcbmV4dGVybmFsIGxvZ29yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vclwiXG5leHRlcm5hbCBsb2d4b3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsOiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50OiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQ6IG5hdGl2ZWludCAtPiBpbnQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IG5hdGl2ZWludCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMjogbmF0aXZlaW50IC0+IGludDMyID0gXCIlbmF0aXZlaW50X3RvX2ludDMyXCJcblxubGV0IHplcm8gPSAwblxubGV0IG9uZSA9IDFuXG5sZXQgbWludXNfb25lID0gLTFuXG5sZXQgc3VjYyBuID0gYWRkIG4gMW5cbmxldCBwcmVkIG4gPSBzdWIgbiAxblxubGV0IGFicyBuID0gaWYgbiA+PSAwbiB0aGVuIG4gZWxzZSBuZWcgblxubGV0IHNpemUgPSBTeXMud29yZF9zaXplXG5sZXQgbWluX2ludCA9IHNoaWZ0X2xlZnQgMW4gKHNpemUgLSAxKVxubGV0IG1heF9pbnQgPSBzdWIgbWluX2ludCAxblxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbilcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgbiA+PSAwbiAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gbmF0aXZlaW50XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleCAqKVxuXG50eXBlIHBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxubGV0IGR1bW15X3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAwO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAtMTtcbn1cblxudHlwZSBsZXhidWYgPVxuICB7IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQ7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyIDogYnl0ZXM7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9hYnNfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X2FjdGlvbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3AgOiBwb3NpdGlvbjtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3AgOiBwb3NpdGlvbjtcbiAgfVxuXG50eXBlIGxleF90YWJsZXMgPVxuICB7IGxleF9iYXNlOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cms6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdDogc3RyaW5nO1xuICAgIGxleF90cmFuczogc3RyaW5nO1xuICAgIGxleF9jaGVjazogc3RyaW5nO1xuICAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdF9jb2RlIDogc3RyaW5nO1xuICAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jb2RlOiBzdHJpbmc7fVxuXG5leHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5leHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbmV3X2xleF9lbmdpbmVcIlxuXG5sZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5cbmxldCBuZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19uZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxubGV0IGxleF9yZWZpbGwgcmVhZF9mdW4gYXV4X2J1ZmZlciBsZXhidWYgPVxuICBsZXQgcmVhZCA9XG4gICAgcmVhZF9mdW4gYXV4X2J1ZmZlciAoQnl0ZXMubGVuZ3RoIGF1eF9idWZmZXIpIGluXG4gIGxldCBuID1cbiAgICBpZiByZWFkID4gMFxuICAgIHRoZW4gcmVhZFxuICAgIGVsc2UgKGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgMCkgaW5cbiAgKCogQ3VycmVudCBzdGF0ZSBvZiB0aGUgYnVmZmVyOlxuICAgICAgICA8LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0+XG4gICAgICAgIHwgIGp1bmsgfCAgICAgIHZhbGlkIGRhdGEgICAgIHwgICBqdW5rICAgIHxcbiAgICAgICAgXiAgICAgICBeICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgXlxuICAgICAgICAwICAgIHN0YXJ0X3BvcyAgICAgICAgICAgICBidWZmZXJfZW5kICAgIEJ5dGVzLmxlbmd0aCBidWZmZXJcbiAgKilcbiAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuICsgbiA+IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlciB0aGVuIGJlZ2luXG4gICAgKCogVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG5cbiAgICAgICA8PSBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXJcbiAgICB0aGVuIGJlZ2luXG4gICAgICAoKiBCdXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGlmIHdlIHJlY2xhaW0gdGhlIGp1bmsgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgb2YgdGhlIGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXIgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBXZSBtdXN0IGdyb3cgdGhlIGJ1ZmZlci4gIERvdWJsaW5nIGl0cyBzaXplIHdpbGwgcHJvdmlkZSBlbm91Z2hcbiAgICAgICAgIHNwYWNlIHNpbmNlIG4gPD0gU3RyaW5nLmxlbmd0aCBhdXhfYnVmZmVyIDw9IFN0cmluZy5sZW5ndGggYnVmZmVyLlxuICAgICAgICAgV2F0Y2ggb3V0IGZvciBzdHJpbmcgbGVuZ3RoIG92ZXJmbG93LCB0aG91Z2guICopXG4gICAgICBsZXQgbmV3bGVuID1cbiAgICAgICAgSW50Lm1pbiAoMiAqIEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlcikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG4gPiBuZXdsZW5cbiAgICAgIHRoZW4gZmFpbHdpdGggXCJMZXhpbmcubGV4X3JlZmlsbDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gICAgICBsZXQgbmV3YnVmID0gQnl0ZXMuY3JlYXRlIG5ld2xlbiBpblxuICAgICAgKCogQ29weSB0aGUgdmFsaWQgZGF0YSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBuZXdidWYgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKTtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDwtIG5ld2J1ZlxuICAgIGVuZDtcbiAgICAoKiBSZWFsbG9jYXRpb24gb3Igbm90LCB3ZSBoYXZlIHNoaWZ0ZWQgdGhlIGRhdGEgbGVmdCBieVxuICAgICAgIHN0YXJ0X3BvcyBjaGFyYWN0ZXJzOyB1cGRhdGUgdGhlIHBvc2l0aW9ucyAqKVxuICAgIGxldCBzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgcztcbiAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIDA7XG4gICAgbGV4YnVmLmxleF9sYXN0X3BvcyA8LSBsZXhidWYubGV4X2xhc3RfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gcyA7XG4gICAgbGV0IHQgPSBsZXhidWYubGV4X21lbSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC0xIGRvXG4gICAgICBsZXQgdiA9IHQuKGkpIGluXG4gICAgICBpZiB2ID49IDAgdGhlblxuICAgICAgICB0LihpKSA8LSB2LXNcbiAgICBkb25lXG4gIGVuZDtcbiAgKCogVGhlcmUgaXMgbm93IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgQnl0ZXMuYmxpdCBhdXhfYnVmZmVyIDAgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9idWZmZXJfbGVuIG47XG4gIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuXG5cbmxldCB6ZXJvX3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAxO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAwO1xufVxuXG5sZXQgZnJvbV9mdW5jdGlvbiA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgZiA9XG4gIHsgcmVmaWxsX2J1ZmYgPSBsZXhfcmVmaWxsIGYgKEJ5dGVzLmNyZWF0ZSA1MTIpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMTAyNDtcbiAgICBsZXhfYnVmZmVyX2xlbiA9IDA7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IGZhbHNlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgZnJvbV9jaGFubmVsID93aXRoX3Bvc2l0aW9ucyBpYyA9XG4gIGZyb21fZnVuY3Rpb24gP3dpdGhfcG9zaXRpb25zIChmdW4gYnVmIG4gLT4gaW5wdXQgaWMgYnVmIDAgbilcblxubGV0IGZyb21fc3RyaW5nID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBzID1cbiAgeyByZWZpbGxfYnVmZiA9IChmdW4gbGV4YnVmIC0+IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZSk7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLm9mX3N0cmluZyBzOyAoKiBoYXZlIHRvIG1ha2UgYSBjb3B5IGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHVuc2FmZS1zdHJpbmcgbW9kZSAqKVxuICAgIGxleF9idWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSB0cnVlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgc2V0X3Bvc2l0aW9uIGxleGJ1ZiBwb3NpdGlvbiA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wICA8LSB7cG9zaXRpb24gd2l0aCBwb3NfZm5hbWUgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfZm5hbWV9O1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gcG9zaXRpb24ucG9zX2NudW1cblxubGV0IHNldF9maWxlbmFtZSBsZXhidWYgZm5hbWUgPVxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmbmFtZX1cblxubGV0IHdpdGhfcG9zaXRpb25zIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3Bvc1xuXG5sZXQgbGV4ZW1lIGxleGJ1ZiA9XG4gIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxubGV0IHN1Yl9sZXhlbWUgbGV4YnVmIGkxIGkyID1cbiAgbGV0IGxlbiA9IGkyLWkxIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuXG5cbmxldCBzdWJfbGV4ZW1lX29wdCBsZXhidWYgaTEgaTIgPVxuICBpZiBpMSA+PSAwIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuID0gaTItaTEgaW5cbiAgICBTb21lIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlbilcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBOb25lXG4gIGVuZFxuXG5sZXQgc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBpID0gQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGlcblxubGV0IHN1Yl9sZXhlbWVfY2hhcl9vcHQgbGV4YnVmIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgIFNvbWUgKEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpKVxuICBlbHNlXG4gICAgTm9uZVxuXG5cbmxldCBsZXhlbWVfY2hhciBsZXhidWYgaSA9XG4gIEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciAobGV4YnVmLmxleF9zdGFydF9wb3MgKyBpKVxuXG5sZXQgbGV4ZW1lX3N0YXJ0IGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcC5wb3NfY251bVxubGV0IGxleGVtZV9lbmQgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2NudW1cblxubGV0IGxleGVtZV9zdGFydF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcFxubGV0IGxleGVtZV9lbmRfcCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcFxuXG5sZXQgbmV3X2xpbmUgbGV4YnVmID1cbiAgbGV0IGxjcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7IGxjcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGNwLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxjcC5wb3NfY251bTtcbiAgICAgIH1cblxuXG5cbigqIERpc2NhcmQgZGF0YSBsZWZ0IGluIGxleGVyIGJ1ZmZlci4gKilcblxubGV0IGZsdXNoX2lucHV0IGxiID1cbiAgbGIubGV4X2N1cnJfcG9zIDwtIDA7XG4gIGxiLmxleF9hYnNfcG9zIDwtIDA7XG4gIGxldCBsY3AgPSBsYi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxiLmxleF9jdXJyX3AgPC0ge3plcm9fcG9zIHdpdGggcG9zX2ZuYW1lID0gbGNwLnBvc19mbmFtZX07XG4gIGxiLmxleF9idWZmZXJfbGVuIDwtIDA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG5vcGVuIExleGluZ1xuXG4oKiBJbnRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIHBhcnNpbmcgZW5naW5lICopXG5cbnR5cGUgcGFyc2VyX2VudiA9XG4gIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50IGFycmF5OyAgICAgICAgKCogU3RhdGVzICopXG4gICAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQgYXJyYXk7ICAgICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2YgdGhlIHN0YWNrcyAqKVxuICAgIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgqIEJhc2Ugc3AgZm9yIGN1cnJlbnQgcGFyc2UgKilcbiAgICBtdXRhYmxlIGN1cnJfY2hhciA6IGludDsgICAgICAgICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKilcbiAgICBtdXRhYmxlIGx2YWwgOiBPYmoudDsgICAgICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wqKVxuICAgIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgqIEVuZCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKVxuICAgIG11dGFibGUgYXNwIDogaW50OyAgICAgICAgICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJocyBpdGVtcyBpbiB0aGUgcnVsZSAqKVxuICAgIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAgICAgICAgICgqIFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKVxuICAgIG11dGFibGUgc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAgKCogU2F2ZWQgZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopXG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG50eXBlIHBhcnNlX3RhYmxlcyA9XG4gIHsgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheTtcbiAgICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7XG4gICAgdHJhbnNsX2Jsb2NrIDogaW50IGFycmF5O1xuICAgIGxocyA6IHN0cmluZztcbiAgICBsZW4gOiBzdHJpbmc7XG4gICAgZGVmcmVkIDogc3RyaW5nO1xuICAgIGRnb3RvIDogc3RyaW5nO1xuICAgIHNpbmRleCA6IHN0cmluZztcbiAgICByaW5kZXggOiBzdHJpbmc7XG4gICAgZ2luZGV4IDogc3RyaW5nO1xuICAgIHRhYmxlc2l6ZSA6IGludDtcbiAgICB0YWJsZSA6IHN0cmluZztcbiAgICBjaGVjayA6IHN0cmluZztcbiAgICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0O1xuICAgIG5hbWVzX2NvbnN0IDogc3RyaW5nO1xuICAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nIH1cblxuZXhjZXB0aW9uIFlZZXhpdCBvZiBPYmoudFxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgcGFyc2VyX2lucHV0ID1cbiAgICBTdGFydFxuICB8IFRva2VuX3JlYWRcbiAgfCBTdGFja3NfZ3Jvd25fMVxuICB8IFN0YWNrc19ncm93bl8yXG4gIHwgU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkXG4gIHwgRXJyb3JfZGV0ZWN0ZWRcblxudHlwZSBwYXJzZXJfb3V0cHV0ID1cbiAgICBSZWFkX3Rva2VuXG4gIHwgUmFpc2VfcGFyc2VfZXJyb3JcbiAgfCBHcm93X3N0YWNrc18xXG4gIHwgR3Jvd19zdGFja3NfMlxuICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uXG4gIHwgQ2FsbF9lcnJvcl9mdW5jdGlvblxuXG4oKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxubGV0IF8gPSBbUmVhZF90b2tlbjsgUmFpc2VfcGFyc2VfZXJyb3I7IEdyb3dfc3RhY2tzXzE7IEdyb3dfc3RhY2tzXzI7XG4gICAgICAgICBDb21wdXRlX3NlbWFudGljX2FjdGlvbjsgQ2FsbF9lcnJvcl9mdW5jdGlvbl1cblxuZXh0ZXJuYWwgcGFyc2VfZW5naW5lIDpcbiAgICBwYXJzZV90YWJsZXMgLT4gcGFyc2VyX2VudiAtPiBwYXJzZXJfaW5wdXQgLT4gT2JqLnQgLT4gcGFyc2VyX291dHB1dFxuICAgID0gXCJjYW1sX3BhcnNlX2VuZ2luZVwiXG5cbmV4dGVybmFsIHNldF90cmFjZTogYm9vbCAtPiBib29sXG4gICAgPSBcImNhbWxfc2V0X3BhcnNlcl90cmFjZVwiXG5cbmxldCBlbnYgPVxuICB7IHNfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAwO1xuICAgIHZfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAoT2JqLnJlcHIgKCkpO1xuICAgIHN5bWJfc3RhcnRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3RhY2tzaXplID0gMTAwO1xuICAgIHN0YWNrYmFzZSA9IDA7XG4gICAgY3Vycl9jaGFyID0gMDtcbiAgICBsdmFsID0gT2JqLnJlcHIgKCk7XG4gICAgc3ltYl9zdGFydCA9IGR1bW15X3BvcztcbiAgICBzeW1iX2VuZCA9IGR1bW15X3BvcztcbiAgICBhc3AgPSAwO1xuICAgIHJ1bGVfbGVuID0gMDtcbiAgICBydWxlX251bWJlciA9IDA7XG4gICAgc3AgPSAwO1xuICAgIHN0YXRlID0gMDtcbiAgICBlcnJmbGFnID0gMCB9XG5cbmxldCBncm93X3N0YWNrcygpID1cbiAgbGV0IG9sZHNpemUgPSBlbnYuc3RhY2tzaXplIGluXG4gIGxldCBuZXdzaXplID0gb2xkc2l6ZSAqIDIgaW5cbiAgbGV0IG5ld19zID0gQXJyYXkubWFrZSBuZXdzaXplIDBcbiAgYW5kIG5ld192ID0gQXJyYXkubWFrZSBuZXdzaXplIChPYmoucmVwciAoKSlcbiAgYW5kIG5ld19zdGFydCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3NcbiAgYW5kIG5ld19lbmQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zIGluXG4gICAgQXJyYXkuYmxpdCBlbnYuc19zdGFjayAwIG5ld19zIDAgb2xkc2l6ZTtcbiAgICBlbnYuc19zdGFjayA8LSBuZXdfcztcbiAgICBBcnJheS5ibGl0IGVudi52X3N0YWNrIDAgbmV3X3YgMCBvbGRzaXplO1xuICAgIGVudi52X3N0YWNrIDwtIG5ld192O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfc3RhcnRfc3RhY2sgMCBuZXdfc3RhcnQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX3N0YXJ0X3N0YWNrIDwtIG5ld19zdGFydDtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX2VuZF9zdGFjayAwIG5ld19lbmQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX2VuZF9zdGFjayA8LSBuZXdfZW5kO1xuICAgIGVudi5zdGFja3NpemUgPC0gbmV3c2l6ZVxuXG5sZXQgY2xlYXJfcGFyc2VyKCkgPVxuICBBcnJheS5maWxsIGVudi52X3N0YWNrIDAgZW52LnN0YWNrc2l6ZSAoT2JqLnJlcHIgKCkpO1xuICBlbnYubHZhbCA8LSBPYmoucmVwciAoKVxuXG5sZXQgY3VycmVudF9sb29rYWhlYWRfZnVuID0gcmVmIChmdW4gKF8gOiBPYmoudCkgLT4gZmFsc2UpXG5cbmxldCB5eXBhcnNlIHRhYmxlcyBzdGFydCBsZXhlciBsZXhidWYgPVxuICBsZXQgcmVjIGxvb3AgY21kIGFyZyA9XG4gICAgbWF0Y2ggcGFyc2VfZW5naW5lIHRhYmxlcyBlbnYgY21kIGFyZyB3aXRoXG4gICAgICBSZWFkX3Rva2VuIC0+XG4gICAgICAgIGxldCB0ID0gT2JqLnJlcHIobGV4ZXIgbGV4YnVmKSBpblxuICAgICAgICBlbnYuc3ltYl9zdGFydCA8LSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgICAgIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICAgICAgbG9vcCBUb2tlbl9yZWFkIHRcbiAgICB8IFJhaXNlX3BhcnNlX2Vycm9yIC0+XG4gICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvbiAtPlxuICAgICAgICBsZXQgKGFjdGlvbiwgdmFsdWUpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIChTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQsIHRhYmxlcy5hY3Rpb25zLihlbnYucnVsZV9udW1iZXIpIGVudilcbiAgICAgICAgICB3aXRoIFBhcnNlX2Vycm9yIC0+XG4gICAgICAgICAgICAoRXJyb3JfZGV0ZWN0ZWQsIE9iai5yZXByICgpKSBpblxuICAgICAgICBsb29wIGFjdGlvbiB2YWx1ZVxuICAgIHwgR3Jvd19zdGFja3NfMSAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8xIChPYmoucmVwciAoKSlcbiAgICB8IEdyb3dfc3RhY2tzXzIgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMiAoT2JqLnJlcHIgKCkpXG4gICAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uIC0+XG4gICAgICAgIHRhYmxlcy5lcnJvcl9mdW5jdGlvbiBcInN5bnRheCBlcnJvclwiO1xuICAgICAgICBsb29wIEVycm9yX2RldGVjdGVkIChPYmoucmVwciAoKSkgaW5cbiAgbGV0IGluaXRfYXNwID0gZW52LmFzcFxuICBhbmQgaW5pdF9zcCA9IGVudi5zcFxuICBhbmQgaW5pdF9zdGFja2Jhc2UgPSBlbnYuc3RhY2tiYXNlXG4gIGFuZCBpbml0X3N0YXRlID0gZW52LnN0YXRlXG4gIGFuZCBpbml0X2N1cnJfY2hhciA9IGVudi5jdXJyX2NoYXJcbiAgYW5kIGluaXRfbHZhbCA9IGVudi5sdmFsXG4gIGFuZCBpbml0X2VycmZsYWcgPSBlbnYuZXJyZmxhZyBpblxuICBlbnYuc3RhY2tiYXNlIDwtIGVudi5zcCArIDE7XG4gIGVudi5jdXJyX2NoYXIgPC0gc3RhcnQ7XG4gIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgdHJ5XG4gICAgbG9vcCBTdGFydCAoT2JqLnJlcHIgKCkpXG4gIHdpdGggZXhuIC0+XG4gICAgbGV0IGN1cnJfY2hhciA9IGVudi5jdXJyX2NoYXIgaW5cbiAgICBlbnYuYXNwIDwtIGluaXRfYXNwO1xuICAgIGVudi5zcCA8LSBpbml0X3NwO1xuICAgIGVudi5zdGFja2Jhc2UgPC0gaW5pdF9zdGFja2Jhc2U7XG4gICAgZW52LnN0YXRlIDwtIGluaXRfc3RhdGU7XG4gICAgZW52LmN1cnJfY2hhciA8LSBpbml0X2N1cnJfY2hhcjtcbiAgICBlbnYubHZhbCA8LSBpbml0X2x2YWw7XG4gICAgZW52LmVycmZsYWcgPC0gaW5pdF9lcnJmbGFnO1xuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICBZWWV4aXQgdiAtPlxuICAgICAgICBPYmoubWFnaWMgdlxuICAgIHwgXyAtPlxuICAgICAgICBjdXJyZW50X2xvb2thaGVhZF9mdW4gOj1cbiAgICAgICAgICAoZnVuIHRvayAtPlxuICAgICAgICAgICAgaWYgT2JqLmlzX2Jsb2NrIHRva1xuICAgICAgICAgICAgdGhlbiB0YWJsZXMudHJhbnNsX2Jsb2NrLihPYmoudGFnIHRvaykgPSBjdXJyX2NoYXJcbiAgICAgICAgICAgIGVsc2UgdGFibGVzLnRyYW5zbF9jb25zdC4oT2JqLm1hZ2ljIHRvaykgPSBjdXJyX2NoYXIpO1xuICAgICAgICByYWlzZSBleG5cblxubGV0IHBlZWtfdmFsIGVudiBuID1cbiAgT2JqLm1hZ2ljIGVudi52X3N0YWNrLihlbnYuYXNwIC0gbilcblxubGV0IHN5bWJvbF9zdGFydF9wb3MgKCkgPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8PSAwIHRoZW4gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBzdCA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBsZXQgZW4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGlmIHN0IDw+IGVuIHRoZW4gc3QgZWxzZSBsb29wIChpIC0gMSlcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBlbnYucnVsZV9sZW5cblxubGV0IHN5bWJvbF9lbmRfcG9zICgpID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxubGV0IHJoc19zdGFydF9wb3MgbiA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxubGV0IHJoc19lbmRfcG9zIG4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5cbmxldCBzeW1ib2xfc3RhcnQgKCkgPSAoc3ltYm9sX3N0YXJ0X3BvcyAoKSkucG9zX2NudW1cbmxldCBzeW1ib2xfZW5kICgpID0gKHN5bWJvbF9lbmRfcG9zICgpKS5wb3NfY251bVxubGV0IHJoc19zdGFydCBuID0gKHJoc19zdGFydF9wb3MgbikucG9zX2NudW1cbmxldCByaHNfZW5kIG4gPSAocmhzX2VuZF9wb3MgbikucG9zX2NudW1cblxubGV0IGlzX2N1cnJlbnRfbG9va2FoZWFkIHRvayA9XG4gICghY3VycmVudF9sb29rYWhlYWRfZnVuKShPYmoucmVwciB0b2spXG5cbmxldCBwYXJzZV9lcnJvciAoXyA6IHN0cmluZykgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBlbHRcbiAgICB0eXBlIHRcbiAgICB2YWwgZW1wdHk6IHRcbiAgICB2YWwgYWRkOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHNpbmdsZXRvbjogZWx0IC0+IHRcbiAgICB2YWwgcmVtb3ZlOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBpbnRlcjogdCAtPiB0IC0+IHRcbiAgICB2YWwgZGlzam9pbnQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGRpZmY6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGNhcmRpbmFsOiB0IC0+IGludFxuICAgIHZhbCBlbGVtZW50czogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBtaW5fZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtaW5fZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG1heF9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1heF9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiB0IC0+IGVsdFxuICAgIHZhbCBjaG9vc2Vfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZDogZWx0IC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfb3B0OiBlbHQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gICAgdmFsIG1hcDogKGVsdCAtPiBlbHQpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXI6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChlbHQgLT4gZWx0IG9wdGlvbikgLT4gdCAtPiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gICAgdmFsIHNwbGl0OiBlbHQgLT4gdCAtPiB0ICogYm9vbCAqIHRcbiAgICB2YWwgaXNfZW1wdHk6IHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGVsdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIHRvX2xpc3QgOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG9mX2xpc3Q6IGVsdCBsaXN0IC0+IHRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBlbHQgLT4gdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiBlbHQgU2VxLnQgLT4gdCAtPiB0XG4gICAgdmFsIG9mX3NlcSA6IGVsdCBTZXEudCAtPiB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcbiAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2Yge2w6dDsgdjplbHQ7IHI6dDsgaDppbnR9XG5cbiAgICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZVxuICAgICAgIGNoaWxkcmVuIGRpZmZlciBieSBhdCBtb3N0IDIgKilcblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICAgIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gICAgbGV0IGJhbCBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB0IGVsc2VcbiAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdCBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdCBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCBzaW5nbGV0b24geCA9IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIHYgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQgZWxlbWVudHMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkgZWxlbWVudC5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2VsZW1lbnQgeCBsKSB2IHJcblxuICAgIGxldCByZWMgYWRkX21heF9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgbCB2IChhZGRfbWF4X2VsZW1lbnQgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fZWxlbWVudCB2IHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2VsZW1lbnQgdiBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IHI9bHI7IGg9bGh9LCBOb2Rle2w9cmw7IHY9cnY7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgclxuXG4gICAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0IGxcblxuICAgIGxldCByZWMgbWluX2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdF9vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHQgclxuXG4gICAgbGV0IHJlYyBtYXhfZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0X29wdCByXG5cbiAgICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGJhbCB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBqb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBTcGxpdHRpbmcuICBzcGxpdCB4IHMgcmV0dXJucyBhIHRyaXBsZSAobCwgcHJlc2VudCwgcikgd2hlcmVcbiAgICAgICAgLSBsIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA8IHhcbiAgICAgICAgLSByIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA+IHhcbiAgICAgICAgLSBwcmVzZW50IGlzIGZhbHNlIGlmIHMgY29udGFpbnMgbm8gZWxlbWVudCBlcXVhbCB0byB4LFxuICAgICAgICAgIG9yIHRydWUgaWYgcyBjb250YWlucyBhbiBlbGVtZW50IGVxdWFsIHRvIHguICopXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgZmFsc2UsIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCB0cnVlLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBsciwgcHJlcywgcnIpXG5cbiAgICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9IGFzIHQpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpblxuICAgICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpblxuICAgICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIHQyKSAtPiB0MlxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxOyBoPWgxfSwgTm9kZXtsPWwyOyB2PXYyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDEgdGhlbiBhZGQgdjIgczEgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwyLCBfLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgaDEgPSAxIHRoZW4gYWRkIHYxIHMyIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMSwgXywgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpXG5cbiAgICAoKiBTYW1lIGFzIHNwbGl0LCBidXQgY29tcHV0ZSB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXNcbiAgICAgICBvbmx5IGlmIHRoZSBwaXZvdCBlbGVtZW50IGlzIG5vdCBpbiB0aGUgc2V0LiAgVGhlIHJpZ2h0IHN1YnRyZWVcbiAgICAgICBpcyBjb21wdXRlZCBvbiBkZW1hbmQuICopXG5cbiAgICB0eXBlIHNwbGl0X2JpcyA9XG4gICAgICB8IEZvdW5kXG4gICAgICB8IE5vdEZvdW5kIG9mIHQgKiAodW5pdCAtPiB0KVxuXG4gICAgbGV0IHJlYyBzcGxpdF9iaXMgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm90Rm91bmQgKEVtcHR5LCAoZnVuICgpIC0+IEVtcHR5KSlcbiAgICAgIHwgTm9kZXtsOyB2OyByOyBffSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBGb3VuZFxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggbCB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsbCwgcmwpIC0+IE5vdEZvdW5kIChsbCwgKGZ1biAoKSAtPiBqb2luIChybCAoKSkgdiByKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCByIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxyLCBycikgLT4gTm90Rm91bmQgKGpvaW4gbCB2IGxyLCBycilcblxuICAgIGxldCByZWMgZGlzam9pbnQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIHwgKF8sIEVtcHR5KSAtPiB0cnVlXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBpZiBzMSA9PSBzMiB0aGVuIGZhbHNlXG4gICAgICAgICAgZWxzZSBtYXRjaCBzcGxpdF9iaXMgdjEgdDIgd2l0aFxuICAgICAgICAgICAgICBOb3RGb3VuZChsMiwgcjIpIC0+IGRpc2pvaW50IGwxIGwyICYmIGRpc2pvaW50IHIxIChyMiAoKSlcbiAgICAgICAgICAgIHwgRm91bmQgLT4gZmFsc2VcblxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpXG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIHIsIGUpKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICB8IChNb3JlKHYxLCByMSwgZTEpLCBNb3JlKHYyLCByMiwgZTIpKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG5cbiAgICBsZXQgY29tcGFyZSBzMSBzMiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHMxIEVuZCkgKGNvbnNfZW51bSBzMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgczEgczIgPVxuICAgICAgY29tcGFyZSBzMSBzMiA9IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgRW1wdHksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bD1sMTsgdj12MTsgcj1yMX0sIChOb2RlIHtsPWwyOyB2PXYyOyByPXIyfSBhcyB0MikgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IGwxIGwyICYmIHN1YnNldCByMSByMlxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPWwxOyB2PXYxOyByPUVtcHR5OyBoPTB9KSBsMiAmJiBzdWJzZXQgcjEgdDJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9RW1wdHk7IHY9djE7IHI9cjE7IGg9MH0pIHIyICYmIHN1YnNldCBsMSB0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGl0ZXIgZiBsOyBmIHY7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzIGFjY3UgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBmb2xkIGYgciAoZiB2IChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2IHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9KSBhcyB0IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2IHRoZW5cbiAgICAgICAgICAgIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gdCBlbHNlIGpvaW4gbCcgdiByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdlxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IHJmKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZXtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBlbGVtZW50cyBzID1cbiAgICAgIGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2VsdFxuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fZWx0X29wdFxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB2XG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSB2XG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHRyeV9qb2luIGwgdiByID1cbiAgICAgICgqIFtqb2luIGwgdiByXSBjYW4gb25seSBiZSBjYWxsZWQgd2hlbiAoZWxlbWVudHMgb2YgbCA8IHYgPFxuICAgICAgICAgZWxlbWVudHMgb2Ygcik7IHVzZSBbdHJ5X2pvaW4gbCB2IHJdIHdoZW4gdGhpcyBwcm9wZXJ0eSBtYXlcbiAgICAgICAgIG5vdCBob2xkLCBidXQgeW91IGhvcGUgaXQgZG9lcyBob2xkIGluIHRoZSBjb21tb24gY2FzZSAqKVxuICAgICAgaWYgKGwgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSAobWF4X2VsdCBsKSB2IDwgMClcbiAgICAgICYmIChyID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgdiAobWluX2VsdCByKSA8IDApXG4gICAgICB0aGVuIGpvaW4gbCB2IHJcbiAgICAgIGVsc2UgdW5pb24gbCAoYWRkIHYgcilcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuXG4gICAgbGV0IHRyeV9jb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiB0cnlfam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgYmVnaW4gbWF0Y2ggdicgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdicgLT5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHRyeV9jb25jYXQgbCcgcidcbiAgICAgICAgIGVuZFxuXG4gICAgbGV0IG9mX3NvcnRlZF9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBzdWIgbiBsID1cbiAgICAgICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgICAgIHwgMCwgbCAtPiBFbXB0eSwgbFxuICAgICAgICB8IDEsIHgwIDo6IGwgLT4gTm9kZSB7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfSwgbFxuICAgICAgICB8IDIsIHgwIDo6IHgxIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7IHI9RW1wdHk7IGg9Mn0sIGxcbiAgICAgICAgfCAzLCB4MCA6OiB4MSA6OiB4MiA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxO1xuICAgICAgICAgICAgICAgICByPU5vZGV7bD1FbXB0eTsgdj14Mjsgcj1FbXB0eTsgaD0xfTsgaD0yfSwgbFxuICAgICAgICB8IG4sIGwgLT5cbiAgICAgICAgICBsZXQgbmwgPSBuIC8gMiBpblxuICAgICAgICAgIGxldCBsZWZ0LCBsID0gc3ViIG5sIGwgaW5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgbWlkIDo6IGwgLT5cbiAgICAgICAgICAgIGxldCByaWdodCwgbCA9IHN1YiAobiAtIG5sIC0gMSkgbCBpblxuICAgICAgICAgICAgY3JlYXRlIGxlZnQgbWlkIHJpZ2h0LCBsXG4gICAgICBpblxuICAgICAgZnN0IChzdWIgKExpc3QubGVuZ3RoIGwpIGwpXG5cbiAgICBsZXQgdG9fbGlzdCA9IGVsZW1lbnRzXG5cbiAgICBsZXQgb2ZfbGlzdCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlbXB0eVxuICAgICAgfCBbeDBdIC0+IHNpbmdsZXRvbiB4MFxuICAgICAgfCBbeDA7IHgxXSAtPiBhZGQgeDEgKHNpbmdsZXRvbiB4MClcbiAgICAgIHwgW3gwOyB4MTsgeDJdIC0+IGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDNdIC0+IGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDM7IHg0XSAtPiBhZGQgeDQgKGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKSlcbiAgICAgIHwgXyAtPiBvZl9zb3J0ZWRfbGlzdCAoTGlzdC5zb3J0X3VuaXEgT3JkLmNvbXBhcmUgbClcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IGFkZCB4IHMpIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBjID0gc2VxX29mX2VudW1fIChjb25zX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPSByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IHMgPVxuICAgICAgbGV0IHJlYyBhdXggbG93IHMgYyA9IG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyByOyB2OyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IHMgRW5kKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhKydhIHRcbiAgICB2YWwgZW1wdHk6ICdhIHRcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZF90b19saXN0OiBrZXkgLT4gJ2EgLT4gJ2EgbGlzdCB0IC0+ICdhIGxpc3QgdFxuICAgIHZhbCB1cGRhdGU6IGtleSAtPiAoJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHNpbmdsZXRvbjoga2V5IC0+ICdhIC0+ICdhIHRcbiAgICB2YWwgcmVtb3ZlOiBrZXkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG1lcmdlOlxuICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT5cbiAgICAgICdhIHQgLT4gJ2IgdCAtPiAnYyB0XG4gICAgdmFsIHVuaW9uOiAoa2V5IC0+ICdhIC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY2FyZGluYWw6ICdhIHQgLT4gaW50XG4gICAgdmFsIGJpbmRpbmdzOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBtaW5fYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1pbl9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXhfYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1heF9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBjaG9vc2U6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBjaG9vc2Vfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbWFwOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBtYXBpOiAoa2V5IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgZmlsdGVyOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoa2V5IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG4gICAgdmFsIHNwbGl0OiBrZXkgLT4gJ2EgdCAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbToga2V5IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBlcXVhbDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGNvbXBhcmU6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgZm9yX2FsbDogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCB0b19saXN0IDogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgb2ZfbGlzdCA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IGFkZF90b19saXN0IHggZGF0YSBtID1cbiAgICAgIGxldCBhZGQgPSBmdW5jdGlvbiBOb25lIC0+IFNvbWUgW2RhdGFdIHwgU29tZSBsIC0+IFNvbWUgKGRhdGEgOjogbCkgaW5cbiAgICAgIHVwZGF0ZSB4IGFkZCBtXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaXRlciBmIGw7IGYgdiBkOyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcGkgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXBpIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGZvbGQgZiByIChmIHYgZCAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgayBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBrZXlzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGtleS5cblxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2JpbmRpbmcgayB4IGwpIHYgZCByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgZCAoYWRkX21heF9iaW5kaW5nIGsgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgZCByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9iaW5kaW5nIHYgZCByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9iaW5kaW5nIHYgZCBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHI7IGg9bGh9LFxuICAgICAgICAgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiBsZCAoam9pbiBsciB2IGQgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBkIHJsKSBydiByZCByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiBkIHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IGNvbmNhdF9vcl9qb2luIHQxIHYgZCB0MiA9XG4gICAgICBtYXRjaCBkIHdpdGhcbiAgICAgIHwgU29tZSBkIC0+IGpvaW4gdDEgdiBkIHQyXG4gICAgICB8IE5vbmUgLT4gY29uY2F0IHQxIHQyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgTm9uZSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCBTb21lIGQsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgZCByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgZCBsciwgcHJlcywgcnIpXG5cbiAgICBsZXQgcmVjIG1lcmdlIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sIF8pIHdoZW4gaDEgPj0gaGVpZ2h0IHMyIC0+XG4gICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYxIChmIHYxIChTb21lIGQxKSBkMikgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IChfLCBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyfSkgLT5cbiAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjIgKGYgdjIgZDEgKFNvbWUgZDIpKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgbGV0IHJlYyB1bmlvbiBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgIHwgKEVtcHR5LCBzKSB8IChzLCBFbXB0eSkgLT4gc1xuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sXG4gICAgICAgICBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjEgZDEgclxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGNvbmNhdF9vcl9qb2luIGwgdjEgKGYgdjEgZDEgZDIpIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjIgZDIgclxuICAgICAgICAgICAgfCBTb21lIGQxIC0+IGNvbmNhdF9vcl9qb2luIGwgdjIgKGYgdjIgZDEgZDIpIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSBhcyBtIC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2ZCB0aGVuIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gbSBlbHNlIGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtmXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGZ2ZCA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmdmQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGQnIC0+IGpvaW4gbCcgdiBkJyByJ1xuICAgICAgICAgICAgfCBOb25lIC0+IGNvbmNhdCBsJyByJ1xuICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2ZFxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBkIHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgZCByZilcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGtleSAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgZCwgciwgZSkpXG5cbiAgICBsZXQgY29tcGFyZSBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGVxdWFsX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gdHJ1ZVxuICAgICAgICB8IChFbmQsIF8pICAtPiBmYWxzZVxuICAgICAgICB8IChfLCBFbmQpIC0+IGZhbHNlXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIE9yZC5jb21wYXJlIHYxIHYyID0gMCAmJiBjbXAgZDEgZDIgJiZcbiAgICAgICAgICAgIGVxdWFsX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gZXF1YWxfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmluZGluZ3NfYXV4ICgodiwgZCkgOjogYmluZGluZ3NfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGJpbmRpbmdzIHMgPVxuICAgICAgYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fYmluZGluZ1xuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fYmluZGluZ19vcHRcblxuICAgIGxldCB0b19saXN0ID0gYmluZGluZ3NcbiAgICBsZXQgb2ZfbGlzdCBicyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBlbXB0eSBic1xuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLHYpIC0+IGFkZCBrIHYgbSkgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT4gU2VxLkNvbnMgKChrLHYpLCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBtID1cbiAgICAgIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIG0gRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgZDsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgZCwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPlxuICAgICAgICAgIFNlcS5Db25zICgoayx2KSwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID1cbiAgICAgIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgbSA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgbSBjID0gbWF0Y2ggbSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCBkLCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgZCwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgbSBFbmQpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIGMgOiAnYSBsaXN0OyBtdXRhYmxlIGxlbiA6IGludDsgfVxuXG5leGNlcHRpb24gRW1wdHlcblxubGV0IGNyZWF0ZSAoKSA9IHsgYyA9IFtdOyBsZW4gPSAwOyB9XG5cbmxldCBjbGVhciBzID0gcy5jIDwtIFtdOyBzLmxlbiA8LSAwXG5cbmxldCBjb3B5IHMgPSB7IGMgPSBzLmM7IGxlbiA9IHMubGVuOyB9XG5cbmxldCBwdXNoIHggcyA9IHMuYyA8LSB4IDo6IHMuYzsgcy5sZW4gPC0gcy5sZW4gKyAxXG5cbmxldCBwb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBoZFxuICB8IFtdICAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgcG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IFNvbWUgaGRcbiAgfCBbXSAgICAgLT4gTm9uZVxuXG5sZXQgZHJvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBfaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxXG4gIHwgW10gLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBoZFxuICB8IFtdICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IFNvbWUgaGRcbiAgfCBbXSAgICAtPiBOb25lXG5cbmxldCBpc19lbXB0eSBzID0gKHMuYyA9IFtdKVxuXG5sZXQgbGVuZ3RoIHMgPSBzLmxlblxuXG5sZXQgaXRlciBmIHMgPSBMaXN0Lml0ZXIgZiBzLmNcblxubGV0IGZvbGQgZiBhY2MgcyA9IExpc3QuZm9sZF9sZWZ0IGYgYWNjIHMuY1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBMaXN0LnRvX3NlcSBzLmNcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBzID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBzIGc7XG4gIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRnJhbmNvaXMgUG90dGllciwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgY2VsbCA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiB7IGNvbnRlbnQ6ICdhOyBtdXRhYmxlIG5leHQ6ICdhIGNlbGwgfVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgZmlyc3Q6ICdhIGNlbGw7XG4gIG11dGFibGUgbGFzdDogJ2EgY2VsbFxufVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBmaXJzdCA9IE5pbDtcbiAgbGFzdCA9IE5pbFxufVxuXG5sZXQgY2xlYXIgcSA9XG4gIHEubGVuZ3RoIDwtIDA7XG4gIHEuZmlyc3QgPC0gTmlsO1xuICBxLmxhc3QgPC0gTmlsXG5cbmxldCBhZGQgeCBxID1cbiAgbGV0IGNlbGwgPSBDb25zIHtcbiAgICBjb250ZW50ID0geDtcbiAgICBuZXh0ID0gTmlsXG4gIH0gaW5cbiAgbWF0Y2ggcS5sYXN0IHdpdGhcbiAgfCBOaWwgLT5cbiAgICBxLmxlbmd0aCA8LSAxO1xuICAgIHEuZmlyc3QgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuICB8IENvbnMgbGFzdCAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoICsgMTtcbiAgICBsYXN0Lm5leHQgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuXG5sZXQgcHVzaCA9XG4gIGFkZFxuXG5sZXQgcGVlayBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBjb250ZW50XG5cbmxldCBwZWVrX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IFNvbWUgY29udGVudFxuXG5sZXQgdG9wID1cbiAgcGVla1xuXG5sZXQgdGFrZSBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIGNvbnRlbnRcblxubGV0IHRha2Vfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIFNvbWUgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIFNvbWUgY29udGVudFxuXG5sZXQgcG9wID1cbiAgdGFrZVxuXG5sZXQgY29weSA9XG4gIGxldCByZWMgY29weSBxX3JlcyBwcmV2IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IHFfcmVzLmxhc3QgPC0gcHJldjsgcV9yZXNcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCByZXMgPSBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IGluXG4gICAgICBiZWdpbiBtYXRjaCBwcmV2IHdpdGhcbiAgICAgIHwgTmlsIC0+IHFfcmVzLmZpcnN0IDwtIHJlc1xuICAgICAgfCBDb25zIHAgLT4gcC5uZXh0IDwtIHJlc1xuICAgICAgZW5kO1xuICAgICAgY29weSBxX3JlcyByZXMgbmV4dFxuICBpblxuICBmdW4gcSAtPiBjb3B5IHsgbGVuZ3RoID0gcS5sZW5ndGg7IGZpcnN0ID0gTmlsOyBsYXN0ID0gTmlsIH0gTmlsIHEuZmlyc3RcblxubGV0IGlzX2VtcHR5IHEgPVxuICBxLmxlbmd0aCA9IDBcblxubGV0IGxlbmd0aCBxID1cbiAgcS5sZW5ndGhcblxubGV0IGl0ZXIgPVxuICBsZXQgcmVjIGl0ZXIgZiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgZiBjb250ZW50O1xuICAgICAgaXRlciBmIG5leHRcbiAgaW5cbiAgZnVuIGYgcSAtPiBpdGVyIGYgcS5maXJzdFxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgZm9sZCBmIGFjY3UgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gYWNjdVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgY29udGVudCBpblxuICAgICAgZm9sZCBmIGFjY3UgbmV4dFxuICBpblxuICBmdW4gZiBhY2N1IHEgLT4gZm9sZCBmIGFjY3UgcS5maXJzdFxuXG5sZXQgdHJhbnNmZXIgcTEgcTIgPVxuICBpZiBxMS5sZW5ndGggPiAwIHRoZW5cbiAgICBtYXRjaCBxMi5sYXN0IHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHExLmxlbmd0aDtcbiAgICAgIHEyLmZpcnN0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcbiAgICB8IENvbnMgbGFzdCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHEyLmxlbmd0aCArIHExLmxlbmd0aDtcbiAgICAgIGxhc3QubmV4dCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcSA9XG4gIGxldCByZWMgYXV4IGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICB8IE5pbCAtPiBTZXEuTmlsXG4gICAgfCBDb25zIHsgY29udGVudD14OyBuZXh0OyB9IC0+IFNlcS5Db25zICh4LCBhdXggbmV4dClcbiAgaW5cbiAgYXV4IHEuZmlyc3RcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBxID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBxIGc7XG4gIHFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbigqIFRoZSBbaW5uZXJfYnVmZmVyXSB0eXBlIGVuc3VyZXMgdGhhdCB0aGUgW2xlbmd0aF0gYW5kIFtidWZmZXJdIGZpZWxkcyBhcmVcbiAgIGFsd2F5cyBzeW5jaHJvbml6ZWQsIFtsZW5ndGggPSBCeXRlcy5sZW5ndGggYnVmZmVyXSwgZXZlbiBpbiBwcmVzZW5jZVxuICAgb2YgZGF0YSByYWNlcy5cbiopXG50eXBlIGlubmVyX2J1ZmZlciA9IHtcbiAgYnVmZmVyOiBieXRlcztcbiAgbGVuZ3RoOiBpbnQ7XG59XG5cbnR5cGUgdCA9XG4ge211dGFibGUgaW5uZXIgOiBpbm5lcl9idWZmZXI7XG4gIG11dGFibGUgcG9zaXRpb24gOiBpbnQ7XG4gIGluaXRpYWxfYnVmZmVyIDogYnl0ZXN9XG4oKiBJbnZhcmlhbnRzOiBhbGwgcGFydHMgb2YgdGhlIGNvZGUgcHJlc2VydmUgdGhlIGludmFyaWFudHMgdGhhdDpcbiAgIC0gW2lubmVyLmxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBpbm5lci5idWZmZXJdXG4gICBJbiBhYnNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIGFsc28gaGF2ZVxuICAgLSBbMCA8PSBiLnBvc2l0aW9uIDw9IGIuaW5uZXIubGVuZ3RoXVxuXG4gICBOb3RlIGluIHBhcnRpY3VsYXIgdGhhdCBbYi5wb3NpdGlvbiA9IGIuaW5uZXIubGVuZ3RoXSBpcyBsZWdhbCxcbiAgIGl0IG1lYW5zIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsIGFuZCB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5kZWRcbiAgIGJlZm9yZSBhbnkgZnVydGhlciBhZGRpdGlvbi4gKilcblxubGV0IGNyZWF0ZSBuID1cbiBsZXQgbiA9IGlmIG4gPCAxIHRoZW4gMSBlbHNlIG4gaW5cbiBsZXQgbiA9IGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBTeXMubWF4X3N0cmluZ19sZW5ndGggZWxzZSBuIGluXG4gbGV0IHMgPSBCeXRlcy5jcmVhdGUgbiBpblxuIHsgaW5uZXIgPSB7IGJ1ZmZlciA9IHM7IGxlbmd0aCA9IG59OyBwb3NpdGlvbiA9IDA7IGluaXRpYWxfYnVmZmVyID0gc31cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxubGV0IHRvX2J5dGVzIGIgPSBCeXRlcy5zdWIgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJ5dGVzLnN1Yl9zdHJpbmcgYi5pbm5lci5idWZmZXIgb2ZzIGxlblxuXG5cbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJ5dGVzLmJsaXQgc3JjLmlubmVyLmJ1ZmZlciBzcmNvZmYgZHN0IGRzdG9mZiBsZW5cblxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBvZnMgPCAwIHx8IG9mcyA+PSBwb3NpdGlvbiB8fCBwb3NpdGlvbiA+IGxlbmd0aCB0aGVuXG4gICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5udGhcIlxuICBlbHNlIEJ5dGVzLnVuc2FmZV9nZXQgYnVmZmVyIG9mc1xuXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cblxubGV0IGNsZWFyIGIgPSBiLnBvc2l0aW9uIDwtIDBcblxubGV0IHJlc2V0IGIgPVxuICBiLnBvc2l0aW9uIDwtIDA7XG4gIGxldCBpbm5lciA9XG4gICAgeyBidWZmZXIgPSBiLmluaXRpYWxfYnVmZmVyOyBsZW5ndGggPSBCeXRlcy5sZW5ndGggYi5pbml0aWFsX2J1ZmZlciB9XG4gIGluXG4gIGIuaW5uZXIgPC0gaW5uZXJcblxuKCogW3Jlc2l6ZSBiIG1vcmVdIGVuc3VyZXMgdGhhdCBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5pbm5lci5sZW5ndGhdIGhvbGRzXG4gICBieSBkeW5hbWljYWxseSBleHRlbmRpbmcgW2IuaW5uZXJdIGlmIG5lY2Vzc2FyeSAtLSBhbmQgdGh1c1xuICAgaW5jcmVhc2luZyBbYi5pbm5lci5sZW5ndGhdLlxuKilcbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IG9sZF9wb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCBvbGRfbGVuID0gYi5pbm5lci5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICB3aGlsZSBvbGRfcG9zICsgbW9yZSA+ICFuZXdfbGVuIGRvIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBpZiBvbGRfcG9zICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICB0aGVuIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZSBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiXG4gIGVuZDtcbiAgbGV0IG5ld19idWZmZXIgPSBCeXRlcy5jcmVhdGUgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCeXRlcy5ibGl0IGIuaW5uZXIuYnVmZmVyIDAgbmV3X2J1ZmZlciAwIGIucG9zaXRpb247XG4gIGIuaW5uZXIgPC0geyBidWZmZXIgPSBuZXdfYnVmZmVyOyBsZW5ndGggPSAhbmV3X2xlbiB9XG5cbigqIE5vdGU6XG4gICAgU29tZSBvZiB0aGUgZnVuY3Rpb25zIGJlbG93IGhhdmUgYSBmYXN0IHBhdGggd2hlbiB0aGUgaW5uZXJcbiAgYnVmZmVyIGRvZXNuJ3QgbmVlZCB0byBiZSBleHRlbmRlZC5cbiAgICBJbiB0aGlzIGNhc2UsIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB1bnNhZmUgYWNjZXNzZXMgb24gdGhlXG4gIGNvbnRlbnRzIG9mIHRoZSBbaW5uZXJdIGZpZWxkIHNpbmNlIGl0cyBmaWVsZHMgYXJlIGltbXV0YWJsZS5cbiAgSW4gcHJlc2VuY2Ugb2YgZGF0YSByYWNlcywgd2UgbWF5IGFjY2VzcyB0aGUgd3JvbmcgaW5uZXIgYnVmZmVyLCBidXQgd2VcbiAgd2lsbCB1c2UgdGhpcyBidWZmZXIgc2FmZWx5LlxuICBBcyBzb29uIGFzIHdlIG5lZWQgdG8gcmVzaXplIHRoZSBidWZmZXIsIHdlIGZhbGwgYmFjayB0byBzYWZlIGFjY2Vzc2VzLlxuKilcblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGlmIHBvcyA+PSBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBCeXRlcy5zZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBjXG4gICkgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxubGV0IHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCA9IDRcbmxldCB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4ID0gNFxuXG5sZXQgcmVjIGFkZF91dGZfOF91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl84X3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl84X3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZiZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmxlX3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZsZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIG9mZnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlblxuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjsgbGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyAwIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5pbm5lci5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCBpblxuICAgICBpZiBzdG9wID0gc3RhcnQgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIGZpbmRfaWRlbnQgcyBqIGxpbSB3aXRoXG4gICAgICAgICB8IGlkZW50LCBuZXh0X2kgLT5cbiAgICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgJyQnO1xuICAgICAgICAgICBzdWJzdCAnICcgalxuICAgICAgICAgZW5kXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cztcbiAgICAgICAgIGlmIGN1cnJlbnQgPD4gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAxO1xuICAgIHNldF9pbnQ4IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDggYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMjtcbiAgICBzZXRfaW50MTYgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MTYgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgNDtcbiAgICBzZXRfaW50MzIgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MzIgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgODtcbiAgICBzZXRfaW50NjQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50NjQgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIFhhdmllciBMZXJveSBhbmQgUGFzY2FsIEN1b3EsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRcbmV4dGVybmFsIGNyZWF0ZTogdW5pdCAtPiB0ID0gXCJjYW1sX21sX211dGV4X25ld1wiXG5leHRlcm5hbCBsb2NrOiB0IC0+IHVuaXQgPSBcImNhbWxfbWxfbXV0ZXhfbG9ja1wiXG5leHRlcm5hbCB0cnlfbG9jazogdCAtPiBib29sID0gXCJjYW1sX21sX211dGV4X3RyeV9sb2NrXCJcbmV4dGVybmFsIHVubG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X3VubG9ja1wiXG5cbigqIHByaXZhdGUgcmUtZXhwb3J0ICopXG5leHRlcm5hbCByZXJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmVyYWlzZVwiXG5cbigqIGNhbm5vdCBpbmxpbmUsIG90aGVyd2lzZSBmbGFtYmRhIG1pZ2h0IG1vdmUgY29kZSBhcm91bmQuICopXG5sZXRbQGlubGluZSBuZXZlcl0gcHJvdGVjdCBtIGYgPVxuICBsb2NrIG07XG4gIG1hdGNoIGYoKSB3aXRoXG4gIHwgeCAtPlxuICAgIHVubG9jayBtOyB4XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAoKiBOT1RFOiBbdW5sb2NrXSBkb2VzIG5vdCBwb2xsIGZvciBhc3luY2hyb25vdXMgZXhjZXB0aW9ucyAqKVxuICAgIHVubG9jayBtO1xuICAgIHJlcmFpc2UgZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBDb2xsw6hnZSBkZSBGcmFuY2UgYW5kIElOUklBIFBhcmlzICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFNlbWFwaG9yZXMgKilcblxudHlwZSBzZW0gPSB7XG4gIG11dDogTXV0ZXgudDsgICAgICAgICAgICAgICAgICAgICAgICAgKCogcHJvdGVjdHMgW3ZdICopXG4gIG11dGFibGUgdjogaW50OyAgICAgICAgICAgICAgICAgICAgICAgKCogdGhlIGN1cnJlbnQgdmFsdWUgKilcbiAgbm9uemVybzogQ29uZGl0aW9uLnQgICAgICAgICAgICAgICAgICAoKiBzaWduYWxlZCB3aGVuIFt2ID4gMF0gKilcbn1cblxubW9kdWxlIENvdW50aW5nID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSB2ID1cbiAgaWYgdiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlbWFwaG9yZS5Db3VudGluZy5pbml0OiB3cm9uZyBpbml0aWFsIHZhbHVlXCI7XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7IHY7IG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgaWYgcy52IDwgbWF4X2ludCB0aGVuIGJlZ2luXG4gICAgcy52IDwtIHMudiArIDE7XG4gICAgQ29uZGl0aW9uLnNpZ25hbCBzLm5vbnplcm87XG4gICAgTXV0ZXgudW5sb2NrIHMubXV0XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICAgIHJhaXNlIChTeXNfZXJyb3IgXCJTZW1hcGhvcmUuQ291bnRpbmcucmVsZWFzZTogb3ZlcmZsb3dcIilcbiAgZW5kXG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gcy52IC0gMTtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gcy52IC0gMTsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxubGV0IGdldF92YWx1ZSBzID0gcy52XG5cbmVuZFxuXG5tb2R1bGUgQmluYXJ5ID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSBiID1cbiAgeyBtdXQgPSBNdXRleC5jcmVhdGUoKTtcbiAgICB2ID0gaWYgYiB0aGVuIDEgZWxzZSAwO1xuICAgIG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgcy52IDwtIDE7XG4gIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IGFjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHdoaWxlIHMudiA9IDAgZG8gQ29uZGl0aW9uLndhaXQgcy5ub256ZXJvIHMubXV0IGRvbmU7XG4gIHMudiA8LSAwO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IHRyeV9hY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBsZXQgcmV0ID0gaWYgcy52ID0gMCB0aGVuIGZhbHNlIGVsc2UgKHMudiA8LSAwOyB0cnVlKSBpblxuICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gIHJldFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuXG4gICgqIFRoZSBsYXlvdXRzIG9mIFtzdGF0ZV0gYW5kIFt0ZXJtX3N5bmNdIGFyZSBoYXJkLWNvZGVkIGluXG4gICAgIFtydW50aW1lL2RvbWFpbi5jXSAqKVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUnVubmluZ1xuICAgIHwgRmluaXNoZWQgb2YgKCdhLCBleG4pIHJlc3VsdCBbQHdhcm5pbmcgXCItdW51c2VkLWNvbnN0cnVjdG9yXCJdXG5cbiAgdHlwZSAnYSB0ZXJtX3N5bmMgPSB7XG4gICAgKCogcHJvdGVjdGVkIGJ5IFttdXRdICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6ICdhIHN0YXRlIFtAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl0gO1xuICAgIG11dCA6IE11dGV4LnQgO1xuICAgIGNvbmQgOiBDb25kaXRpb24udCA7XG4gIH1cblxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+ICdhKSAtPiAnYSB0ZXJtX3N5bmMgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIiBbQEBub2FsbG9jXVxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHQgPSB7XG4gIGRvbWFpbiA6IFJhdy50O1xuICB0ZXJtX3N5bmMgOiAnYSBSYXcudGVybV9zeW5jO1xufVxuXG5tb2R1bGUgRExTID0gc3RydWN0XG5cbiAgbW9kdWxlIE9ial9vcHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgbm9uZSA6IHRcbiAgICB2YWwgc29tZSA6ICdhIC0+IHRcbiAgICB2YWwgaXNfc29tZSA6IHQgLT4gYm9vbFxuXG4gICAgKCoqIFt1bnNhZmVfZ2V0IG9ial0gbWF5IG9ubHkgYmUgY2FsbGVkIHNhZmVseVxuICAgICAgICBpZiBbaXNfc29tZV0gaXMgdHJ1ZS5cblxuICAgICAgICBbdW5zYWZlX2dldCAoc29tZSB2KV0gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICBbT2JqLm9iaiAoT2JqLnJlcHIgdildLiAqKVxuICAgIHZhbCB1bnNhZmVfZ2V0IDogdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBPYmoudFxuICAgIGxldCBub25lID0gT2JqLnJlcHIgKHJlZiAwKVxuICAgIGxldCBzb21lIHYgPSBPYmoucmVwciB2XG4gICAgbGV0IGlzX3NvbWUgb2JqID0gKG9iaiAhPSBub25lKVxuICAgIGxldCB1bnNhZmVfZ2V0IG9iaiA9IE9iai5vYmogb2JqXG4gIGVuZFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqX29wdC50IGFycmF5XG5cbiAgZXh0ZXJuYWwgZ2V0X2Rsc19zdGF0ZSA6IHVuaXQgLT4gZGxzX3N0YXRlID0gXCIlZGxzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2Rsc19zdGF0ZSA6IGRsc19zdGF0ZSAtPiB1bml0ID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gZGxzX3N0YXRlIC0+IGJvb2wgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZV9kbHMgKCkgPVxuICAgIGxldCBzdCA9IEFycmF5Lm1ha2UgOCBPYmpfb3B0Lm5vbmUgaW5cbiAgICBzZXRfZGxzX3N0YXRlIHN0XG5cbiAgbGV0IF8gPSBjcmVhdGVfZGxzICgpXG5cbiAgdHlwZSAnYSBrZXkgPSBpbnQgKiAodW5pdCAtPiAnYSlcblxuICBsZXQga2V5X2NvdW50ZXIgPSBBdG9taWMubWFrZSAwXG5cbiAgdHlwZSBrZXlfaW5pdGlhbGl6ZXIgPVxuICAgIEtJOiAnYSBrZXkgKiAoJ2EgLT4gJ2EpIC0+IGtleV9pbml0aWFsaXplclxuXG4gIGxldCBwYXJlbnRfa2V5cyA9IEF0b21pYy5tYWtlIChbXSA6IGtleV9pbml0aWFsaXplciBsaXN0KVxuXG4gIGxldCByZWMgYWRkX3BhcmVudF9rZXkga2kgPVxuICAgIGxldCBsID0gQXRvbWljLmdldCBwYXJlbnRfa2V5cyBpblxuICAgIGlmIG5vdCAoQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwYXJlbnRfa2V5cyBsIChraSA6OiBsKSlcbiAgICB0aGVuIGFkZF9wYXJlbnRfa2V5IGtpXG5cbiAgbGV0IG5ld19rZXkgP3NwbGl0X2Zyb21fcGFyZW50IGluaXRfb3JwaGFuID1cbiAgICBsZXQgaWR4ID0gQXRvbWljLmZldGNoX2FuZF9hZGQga2V5X2NvdW50ZXIgMSBpblxuICAgIGxldCBrID0gKGlkeCwgaW5pdF9vcnBoYW4pIGluXG4gICAgYmVnaW4gbWF0Y2ggc3BsaXRfZnJvbV9wYXJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzcGxpdCAtPiBhZGRfcGFyZW50X2tleSAoS0koaywgc3BsaXQpKVxuICAgIGVuZDtcbiAgICBrXG5cbiAgKCogSWYgbmVjZXNzYXJ5LCBncm93IHRoZSBjdXJyZW50IGRvbWFpbidzIGxvY2FsIHN0YXRlIGFycmF5IHN1Y2ggdGhhdCBbaWR4XVxuICAgKiBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheS4gKilcbiAgbGV0IHJlYyBtYXliZV9ncm93IGlkeCA9XG4gICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgIGxldCBzeiA9IEFycmF5Lmxlbmd0aCBzdCBpblxuICAgIGlmIGlkeCA8IHN6IHRoZW4gc3RcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGNvbXB1dGVfbmV3X3NpemUgcyA9XG4gICAgICAgIGlmIGlkeCA8IHMgdGhlbiBzIGVsc2UgY29tcHV0ZV9uZXdfc2l6ZSAoMiAqIHMpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19zeiA9IGNvbXB1dGVfbmV3X3NpemUgc3ogaW5cbiAgICAgIGxldCBuZXdfc3QgPSBBcnJheS5tYWtlIG5ld19zeiBPYmpfb3B0Lm5vbmUgaW5cbiAgICAgIEFycmF5LmJsaXQgc3QgMCBuZXdfc3QgMCBzejtcbiAgICAgICgqIFdlIHdhbnQgYSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIHNhZmUgd2l0aCByZXNwZWN0IHRvXG4gICAgICAgICBzaW5nbGUtZG9tYWluIG11bHRpLXRocmVhZGluZzogcmV0cnkgaWYgdGhlIERMUyBzdGF0ZSBoYXNcbiAgICAgICAgIGNoYW5nZWQgdW5kZXIgb3VyIGZlZXQuXG4gICAgICAgICBOb3RlIHRoYXQgdGhlIG51bWJlciBvZiByZXRyaWVzIHdpbGwgYmUgdmVyeSBzbWFsbCBpblxuICAgICAgICAgY29udGVuZGVkIHNjZW5hcmlvcywgYXMgdGhlIGFycmF5IG9ubHkgZ3Jvd3MsIHdpdGhcbiAgICAgICAgIGV4cG9uZW50aWFsIHJlc2l6aW5nLiAqKVxuICAgICAgaWYgY29tcGFyZV9hbmRfc2V0X2Rsc19zdGF0ZSBzdCBuZXdfc3RcbiAgICAgIHRoZW4gbmV3X3N0XG4gICAgICBlbHNlIG1heWJlX2dyb3cgaWR4XG4gICAgZW5kXG5cbiAgbGV0IHNldCAodHlwZSBhKSAoaWR4LCBfaW5pdCkgKHggOiBhKSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gZW5zdXJlcyB0aGF0IGZsYW1iZGEgZG9lcyBub3QgbG9vayBhdCB0aGUgdHlwZSBvZlxuICAgICAqIFt4XSwgd2hpY2ggbWF5IGJlIGEgW2Zsb2F0XSBhbmQgY29uY2x1ZGUgdGhhdCB0aGUgW3N0XSBpcyBhIGZsb2F0IGFycmF5LlxuICAgICAqIFdlIGRvIG5vdCB3YW50IE9DYW1sJ3MgZmxvYXQgYXJyYXkgb3B0aW1pc2F0aW9uIGtpY2tpbmcgaW4gaGVyZS4gKilcbiAgICBzdC4oaWR4KSA8LSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhcnJheV9jb21wYXJlX2FuZF9zZXQgYSBpIG9sZHZhbCBuZXd2YWwgPVxuICAgICgqIE5vdGU6IHdlIGNhbm5vdCB1c2UgW0Bwb2xsIGVycm9yXSBkdWUgdG8gdGhlXG4gICAgICAgYWxsb2NhdGlvbnMgb24gYS4oaSkgaW4gdGhlIERvdWJsZV9hcnJheSBjYXNlLiAqKVxuICAgIGxldCBjdXJ2YWwgPSBhLihpKSBpblxuICAgIGlmIGN1cnZhbCA9PSBvbGR2YWwgdGhlbiAoXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSBuZXd2YWw7XG4gICAgICB0cnVlXG4gICAgKSBlbHNlIGZhbHNlXG5cbiAgbGV0IGdldCAodHlwZSBhKSAoKGlkeCwgaW5pdCkgOiBhIGtleSkgOiBhID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCBvYmogPSBzdC4oaWR4KSBpblxuICAgIGlmIE9ial9vcHQuaXNfc29tZSBvYmpcbiAgICB0aGVuIChPYmpfb3B0LnVuc2FmZV9nZXQgb2JqIDogYSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA6IGEgPSBpbml0ICgpIGluXG4gICAgICBsZXQgbmV3X29iaiA9IE9ial9vcHQuc29tZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2KSBpblxuICAgICAgKCogQXQgdGhpcyBwb2ludCwgW3N0XSBvciBbc3QuKGlkeCldIG1heSBoYXZlIGJlZW4gY2hhbmdlZFxuICAgICAgICAgYnkgYW5vdGhlciB0aHJlYWQgb24gdGhlIHNhbWUgZG9tYWluLlxuXG4gICAgICAgICBJZiBbc3RdIGNoYW5nZWQsIGl0IHdhcyByZXNpemVkIGludG8gYSBsYXJnZXIgdmFsdWUsXG4gICAgICAgICB3ZSBjYW4ganVzdCByZXVzZSB0aGUgbmV3IHZhbHVlLlxuXG4gICAgICAgICBJZiBbc3QuKGlkeCldIGNoYW5nZWQsIHdlIGRyb3AgdGhlIGN1cnJlbnQgdmFsdWUgdG8gYXZvaWRcbiAgICAgICAgIGxldHRpbmcgb3RoZXIgdGhyZWFkcyBvYnNlcnZlIGEgJ3JldmVydCcgdGhhdCBmb3JnZXRzXG4gICAgICAgICBwcmV2aW91cyBtb2RpZmljYXRpb25zLiAqKVxuICAgICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgICAgaWYgYXJyYXlfY29tcGFyZV9hbmRfc2V0IHN0IGlkeCBvYmogbmV3X29ialxuICAgICAgdGhlbiB2XG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgICgqIGlmIHN0LihpZHgpIGNoYW5nZWQsIHNvbWVvbmUgbXVzdCBoYXZlIGluaXRpYWxpemVkXG4gICAgICAgICAgIHRoZSBrZXkgaW4gdGhlIG1lYW50aW1lLiAqKVxuICAgICAgICBsZXQgdXBkYXRlZF9vYmogPSBzdC4oaWR4KSBpblxuICAgICAgICBpZiBPYmpfb3B0LmlzX3NvbWUgdXBkYXRlZF9vYmpcbiAgICAgICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IHVwZGF0ZWRfb2JqIDogYSlcbiAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gIHR5cGUga2V5X3ZhbHVlID0gS1YgOiAnYSBrZXkgKiAnYSAtPiBrZXlfdmFsdWVcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IGtleV92YWx1ZSBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoS0kgKGssIHNwbGl0KSkgLT4gS1YgKGssIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDoga2V5X3ZhbHVlIGxpc3QpID1cbiAgICBMaXN0Lml0ZXIgKGZ1biAoS1YgKGssIHYpKSAtPiBzZXQgayB2KSBsXG5lbmRcblxuKCoqKioqKioqIElkZW50aXR5ICoqKioqKioqKiopXG5cbmxldCBnZXRfaWQgeyBkb21haW47IF8gfSA9IGRvbWFpblxuXG5sZXQgc2VsZiAoKSA9IFJhdy5zZWxmICgpXG5cbmxldCBpc19tYWluX2RvbWFpbiAoKSA9IChzZWxmICgpIDo+IGludCkgPSAwXG5cbigqKioqKioqKiBDYWxsYmFja3MgKioqKioqKioqKilcblxuKCogZmlyc3Qgc3Bhd24sIGRvbWFpbiBzdGFydHVwIGFuZCBhdCBleGl0IGZ1bmN0aW9uYWxpdHkgKilcbmxldCBmaXJzdF9kb21haW5fc3Bhd25lZCA9IEF0b21pYy5tYWtlIGZhbHNlXG5cbmxldCBmaXJzdF9zcGF3bl9mdW5jdGlvbiA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgYmVmb3JlX2ZpcnN0X3NwYXduIGYgPVxuICBpZiBBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImZpcnN0IGRvbWFpbiBhbHJlYWR5IHNwYXduZWRcIilcbiAgZWxzZSBiZWdpblxuICAgIGxldCBvbGRfZiA9ICFmaXJzdF9zcGF3bl9mdW5jdGlvbiBpblxuICAgIGxldCBuZXdfZiAoKSA9IG9sZF9mICgpOyBmICgpIGluXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gbmV3X2ZcbiAgZW5kXG5cbmxldCBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCkgPVxuICBpZiBub3QgKEF0b21pYy5nZXQgZmlyc3RfZG9tYWluX3NwYXduZWQpIHRoZW4gYmVnaW5cbiAgICBBdG9taWMuc2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRydWU7XG4gICAgIWZpcnN0X3NwYXduX2Z1bmN0aW9uKCk7XG4gICAgKCogUmVsZWFzZSB0aGUgb2xkIGZ1bmN0aW9uICopXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gKGZ1biAoKSAtPiAoKSlcbiAgZW5kXG5cbmxldCBhdF9leGl0X2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT4gKGZ1biAoKSAtPiAoKSkpXG5cbmxldCBhdF9leGl0IGYgPVxuICBsZXQgb2xkX2V4aXQgOiB1bml0IC0+IHVuaXQgPSBETFMuZ2V0IGF0X2V4aXRfa2V5IGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgZiAoKTsgb2xkX2V4aXQgKClcbiAgaW5cbiAgRExTLnNldCBhdF9leGl0X2tleSBuZXdfZXhpdFxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gIGxldCBmIDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBmICgpXG5cbmxldCBfID0gU3RkbGliLmRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IDo9IGRvX2F0X2V4aXRcblxuKCoqKioqKiogQ3JlYXRpb24gYW5kIFRlcm1pbmF0aW9uICoqKioqKioqKVxuXG5sZXQgc3Bhd24gZiA9XG4gIGRvX2JlZm9yZV9maXJzdF9zcGF3biAoKTtcbiAgbGV0IHBrID0gRExTLmdldF9pbml0aWFsX2tleXMgKCkgaW5cblxuICAoKiBbdGVybV9zeW5jXSBpcyB1c2VkIHRvIHN5bmNocm9uaXplIHdpdGggdGhlIGpvaW5pbmcgZG9tYWlucyAqKVxuICBsZXQgdGVybV9zeW5jID1cbiAgICBSYXcueyBzdGF0ZSA9IFJ1bm5pbmcgO1xuICAgICAgICAgIG11dCA9IE11dGV4LmNyZWF0ZSAoKSA7XG4gICAgICAgICAgY29uZCA9IENvbmRpdGlvbi5jcmVhdGUgKCkgfVxuICBpblxuXG4gIGxldCBib2R5ICgpID1cbiAgICBtYXRjaFxuICAgICAgRExTLmNyZWF0ZV9kbHMgKCk7XG4gICAgICBETFMuc2V0X2luaXRpYWxfa2V5cyBwaztcbiAgICAgIGxldCByZXMgPSBmICgpIGluXG4gICAgICByZXNcbiAgICB3aXRoXG4gICAgKCogUnVuIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzIHdoZW4gdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBlaXRoZXJcbiAgICAgICB0ZXJtaW5hdGVzIG5vcm1hbGx5IG9yIGV4Y2VwdGlvbmFsbHkuICopXG4gICAgfCByZXMgLT5cbiAgICAgICAgKCogSWYgdGhlIGRvbWFpbiBjb21wdXRhdGlvbiB0ZXJtaW5hdGVkIG5vcm1hbGx5LCBidXQgdGhlXG4gICAgICAgICAgIFthdF9leGl0XSBjYWxsYmFja3MgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgdGhlbiByZXR1cm4gdGhlXG4gICAgICAgICAgIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgZG9fYXRfZXhpdCAoKTtcbiAgICAgICAgcmVzXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICgqIElmIGJvdGggdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBhbmQgdGhlIFthdF9leGl0XSBjYWxsYmFja3NcbiAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucywgdGhlbiBpZ25vcmUgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIGFuZCByZXR1cm4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgKHRyeSBkb19hdF9leGl0ICgpIHdpdGggXyAtPiAoKSk7XG4gICAgICAgIHJhaXNlIGV4blxuICBpblxuICBsZXQgZG9tYWluID0gUmF3LnNwYXduIGJvZHkgdGVybV9zeW5jIGluXG4gIHsgZG9tYWluIDsgdGVybV9zeW5jIH1cblxubGV0IGpvaW4geyB0ZXJtX3N5bmMgOyBfIH0gPVxuICBsZXQgb3BlbiBSYXcgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCB0ZXJtX3N5bmMuc3RhdGUgd2l0aFxuICAgIHwgUnVubmluZyAtPlxuICAgICAgICBDb25kaXRpb24ud2FpdCB0ZXJtX3N5bmMuY29uZCB0ZXJtX3N5bmMubXV0O1xuICAgICAgICBsb29wICgpXG4gICAgfCBGaW5pc2hlZCByZXMgLT5cbiAgICAgICAgcmVzXG4gIGluXG4gIG1hdGNoIE11dGV4LnByb3RlY3QgdGVybV9zeW5jLm11dCBsb29wIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleCAtPiByYWlzZSBleFxuXG5sZXQgcmVjb21tZW5kZWRfZG9tYWluX2NvdW50ID0gUmF3LmdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmlnblxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0cy4gV2hlbiB0aGUgZmxhZyBpcyBkaXNhYmxlZCwgaXQgd2lsbCByZWplY3QgYW55XG4gICAgICBmb3JtYXQgdGhhdCBpcyBub3QgYWNjZXB0ZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uXG5cbiAgICAgIEEgdHlwaWNhbCBleGFtcGxlIHdvdWxkIGJlIFwiJSsgZFwiOiBzcGVjaWZ5aW5nIGJvdGggJysnIChpZiB0aGVcbiAgICAgIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGggYSAnKycgdG8gZ2V0IHRoZSBzYW1lIHdpZHRoIGFzXG4gICAgICBuZWdhdGl2ZSBudW1iZXJzKSBhbmQgJyAnIChpZiB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aFxuICAgICAgYSBzcGFjZSkgZG9lcyBub3QgbWFrZSBzZW5zZSwgYnV0IHRoZSBsZWdhY3kgKDwgNC4wMilcbiAgICAgIGltcGxlbWVudGF0aW9uIHdhcyBoYXBweSB0byBqdXN0IGlnbm9yZSB0aGUgc3BhY2UuXG4gICopXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kIG1zZyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgbXNnXG4gIGluXG5cbiAgKCogVXNlZCB3aGVuIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCAob3IgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdCkgd2FzIGVuY291bnRlcmVkXG4gICAgICB1bmV4cGVjdGVkbHkuICopXG4gIGxldCB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBlbmRfaW5kXG4gICAgICBcInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdFwiXG4gIGluXG5cbiAgKCogVXNlZCBmb3IgJTBjOiBubyBvdGhlciB3aWR0aHMgYXJlIGltcGxlbWVudGVkICopXG4gIGxldCBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmRcbiAgICAgIFwibm9uLXplcm8gd2lkdGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnNcIlxuICBpblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gb3B0aW9uIGRlcGVuZGVuY3lcbiAgICAgcHJvYmxlbS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X3dpdGhvdXQgc3RyX2luZCBjIHMgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICclYycgd2l0aG91dCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBjIHNcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gdW5leHBlY3RlZFxuICAgICBjaGFyYWN0ZXIuICopXG4gIGxldCBleHBlY3RlZF9jaGFyYWN0ZXIgc3RyX2luZCBleHBlY3RlZCByZWFkID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCByZWFkICVDXCJcbiAgICAgIHN0ciBzdHJfaW5kIGV4cGVjdGVkIHJlYWRcbiAgaW5cblxuICAoKiBQYXJzZSB0aGUgc3RyaW5nIGZyb20gYmVnX2luZCAoaW5jbHVkZWQpIHRvIGVuZF9pbmQgKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBwYXJzZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBiZWdfaW5kIGVuZF9pbmQgLT4gcGFyc2VfbGl0ZXJhbCBiZWdfaW5kIGJlZ19pbmQgZW5kX2luZFxuXG4gICgqIFJlYWQgbGl0ZXJhbCBjaGFyYWN0ZXJzIHVwIHRvICclJyBvciAnQCcgc3BlY2lhbCBjaGFyYWN0ZXJzLiAqKVxuICBhbmQgcGFyc2VfbGl0ZXJhbCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgRW5kX29mX2Zvcm1hdCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfZm9ybWF0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9hZnRlcl9hdCAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9saXRlcmFsIGxpdF9zdGFydCAoc3RyX2luZCArIDEpIGVuZF9pbmRcblxuICAoKiBQYXJzZSBhIGZvcm1hdCBhZnRlciAnJScgKilcbiAgYW5kIHBhcnNlX2Zvcm1hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIGVuZF9pbmQgLT4gcGFyc2VfaWduIHBjdF9pbmQgKHBjdF9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgYW5kIHBhcnNlX2lnbiA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXycgLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCAoc3RyX2luZCsxKSBlbmRfaW5kIHRydWVcbiAgICAgIHwgXyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBmYWxzZVxuXG4gIGFuZCBwYXJzZV9mbGFncyA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiAoXywgXywgZSwgZikgZm10X2ViYlxuICA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBpZ24gLT5cbiAgICBsZXQgemVybyA9IHJlZiBmYWxzZSBhbmQgbWludXMgPSByZWYgZmFsc2VcbiAgICBhbmQgcGx1cyA9IHJlZiBmYWxzZSBhbmQgc3BhY2UgPSByZWYgZmFsc2VcbiAgICBhbmQgaGFzaCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzZXRfZmxhZyBzdHJfaW5kIGZsYWcgPVxuICAgICAgKCogaW4gbGVnYWN5IG1vZGUsIGR1cGxpY2F0ZSBmbGFncyBhcmUgYWNjZXB0ZWQgKilcbiAgICAgIGlmICFmbGFnICYmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZHVwbGljYXRlIGZsYWcgJUNcIlxuICAgICAgICAgIHN0ciBzdHJfaW5kIHN0ci5bc3RyX2luZF07XG4gICAgICBmbGFnIDo9IHRydWU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHJlYWRfZmxhZ3Mgc3RyX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICcwJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHplcm87ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJy0nIC0+IHNldF9mbGFnIHN0cl9pbmQgbWludXM7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnKycgLT4gc2V0X2ZsYWcgc3RyX2luZCBwbHVzOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcjJyAtPiBzZXRfZmxhZyBzdHJfaW5kIGhhc2g7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnICcgLT4gc2V0X2ZsYWcgc3RyX2luZCBzcGFjZTsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZFxuICAgICAgICAgICF6ZXJvICFtaW51cyAhcGx1cyAhaGFzaCAhc3BhY2UgaWduXG4gICAgICBlbmRcbiAgICBpblxuICAgIHJlYWRfZmxhZ3Mgc3RyX2luZFxuXG4gICgqIFRyeSB0byByZWFkIGEgZGlnaXRhbCBvciBhICcqJyBwYWRkaW5nLiAqKVxuICBhbmQgcGFyc2VfcGFkZGluZyA6IHR5cGUgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHplcm8gbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhZHR5ID0gbWF0Y2ggemVybywgbWludXMgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gUmlnaHRcbiAgICAgIHwgZmFsc2UsIHRydWUgIC0+IExlZnRcbiAgICAgIHwgIHRydWUsIGZhbHNlIC0+IFplcm9zXG4gICAgICB8ICB0cnVlLCB0cnVlICAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMZWZ0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICctJyBcIjBcIiBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgbGV0IG5ld19pbmQsIHdpZHRoID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAoTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiAoQXJnX3BhZGRpbmcgcGFkdHkpXG4gICAgfCBfIC0+XG4gICAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgICB8IExlZnQgIC0+XG4gICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLScgXCJwYWRkaW5nXCI7XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIHwgWmVyb3MgLT5cbiAgICAgICAgICgqIGEgJzAnIHBhZGRpbmcgaW5kaWNhdGlvbiBub3QgZm9sbG93ZWQgYnkgYW55dGhpbmcgc2hvdWxkXG4gICAgICAgICAgIGJlIGludGVycHJldGVkIGFzIGEgUmlnaHQgcGFkZGluZyBvZiB3aWR0aCAwLiBUaGlzIGlzIHVzZWRcbiAgICAgICAgICAgYnkgc2Nhbm5pbmcgY29udmVyc2lvbnMgJTBzIGFuZCAlMGMgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgKExpdF9wYWRkaW5nIChSaWdodCwgMCkpXG4gICAgICB8IFJpZ2h0IC0+XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIGVuZFxuXG4gICgqIElzIHByZWNpc2lvbiBkZWZpbmVkPyAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcGFkZGluZyA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcuJyAtPlxuICAgICAgcGFyc2VfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkXG4gICAgfCBzeW1iIC0+XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIE5vX3ByZWNpc2lvbiBwYWQgc3ltYlxuXG4gICgqIFJlYWQgdGhlIGRpZ2l0YWwgb3IgJyonIHByZWNpc2lvbi4gKilcbiAgYW5kIHBhcnNlX3ByZWNpc2lvbiA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kID1cbiAgICAgIGxldCBuZXdfaW5kLCBwcmVjID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiBwcmVjKSBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmRcbiAgICB8ICgnKycgfCAnLScpIGFzIHN5bWIgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT5cbiAgICAgICgqIExlZ2FjeSBtb2RlIHdvdWxkIGFjY2VwdCBhbmQgaWdub3JlICcrJyBvciAnLScgYmVmb3JlIHRoZVxuICAgICAgICAgaW50ZWdlciBkZXNjcmliaW5nIHRoZSBkZXNpcmVkIHByZWNpc2lvbjsgbm90ZSB0aGF0IHRoaXNcbiAgICAgICAgIGNhbm5vdCBoYXBwZW4gZm9yIHBhZGRpbmcgd2lkdGgsIGFzICcrJyBhbmQgJy0nIGFscmVhZHkgaGF2ZVxuICAgICAgICAgYSBzZW1hbnRpY3MgdGhlcmUuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgdGhlIGlkZWEgKHN1cHBvcnRlZCBieSB0aGlzIHR3ZWFrKSB0aGF0IHdpZHRoIGFuZFxuICAgICAgICAgcHJlY2lzaW9uIGxpdGVyYWxzIGFyZSBcImludGVnZXIgbGl0ZXJhbHNcIiBpbiB0aGUgT0NhbWwgc2Vuc2UgaXNcbiAgICAgICAgIHN0aWxsIGJsYXRhbnRseSB3cm9uZywgYXMgMTIzXzQ1NiBvciAweEZGIGFyZSByZWplY3RlZC4gKilcbiAgICAgIHBhcnNlX2xpdGVyYWwgKG1pbnVzIHx8IHN5bWIgPSAnLScpIChzdHJfaW5kICsgMSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gcGFkIEFyZ19wcmVjaXNpb25cbiAgICB8IF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIG5vdGUgdGhhdCBsZWdhY3kgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBpZ25vcmUgJy4nIHdpdGhvdXRcbiAgICAgICAgICAgYSBudW1iZXIgKGFzIGl0IGRvZXMgZm9yIHBhZGRpbmcgaW5kaWNhdGlvbnMpLCBidXRcbiAgICAgICAgICAgaW50ZXJwcmV0cyBpdCBhcyAnLjAnICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIDApXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLicgXCJwcmVjaXNpb25cIlxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiB0IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfY29udiAodHlwZSB1KSAodHlwZSB2KSAocGFkcHJlYyA6ICh1LCB2KSBwYWRkaW5nKSA9XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIHByZWMgcGFkcHJlYyBzdHIuW3N0cl9pbmRdIGluXG4gICAgKCogaW4gbGVnYWN5IG1vZGUsIHNvbWUgZm9ybWF0cyAoJXMgYW5kICVTKSBhY2NlcHQgYSB3ZWlyZCBtaXggb2ZcbiAgICAgICBwYWRkaW5nIGFuZCBwcmVjaXNpb24sIHdoaWNoIGlzIG1lcmdlZCBhcyBhIHNpbmdsZSBwYWRkaW5nXG4gICAgICAgaW5mb3JtYXRpb24uIEZvciBleGFtcGxlLCBpbiAlLjEwcyB0aGUgcHJlY2lzaW9uIGlzIGltcGxpY2l0bHlcbiAgICAgICB1bmRlcnN0b29kIGFzIHBhZGRpbmcgJTEwcywgYnV0IHRoZSBsZWZ0LXBhZGRpbmcgY29tcG9uZW50IG1heVxuICAgICAgIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBsZWZ0IHBhZGRpbmcgb3IgYSBuZWdhdGl2ZSBwcmVjaXNpb246XG4gICAgICAgJS0uM3MgYW5kICUuLTNzIGFyZSBlcXVpdmFsZW50IHRvICUtM3MgKilcbiAgICBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAtPiAoXG4gICAgICBtYXRjaCBtaW51cywgcHJlYyB3aXRoXG4gICAgICAgIHwgXywgTm9fcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgTm9fcGFkZGluZ1xuICAgICAgICB8IGZhbHNlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKSlcbiAgICAgICAgfCB0cnVlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKExlZnQsIG4pKVxuICAgICAgICB8IGZhbHNlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIFJpZ2h0KVxuICAgICAgICB8IHRydWUsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgTGVmdClcbiAgICApXG4gICAgfCBwYWQgLT4gcGFyc2VfY29udiBwYWRcblxuICAoKiBDYXNlIGFuYWx5c2lzIG9uIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9jb252ZXJzaW9uIDogdHlwZSB4IHkgeiB0IHUgdiBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiAoeCwgeSkgcGFkZGluZyAtPlxuICAgICAgICAoeiwgdCkgcHJlY2lzaW9uIC0+ICh1LCB2KSBwYWRkaW5nIC0+IGNoYXIgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyBwYWRwcmVjIHN5bWIgLT5cbiAgICAoKiBGbGFncyB1c2VkIHRvIGNoZWNrIG9wdGlvbiB1c2FnZXMvY29tcGF0aWJpbGl0aWVzLiAqKVxuICAgIGxldCBwbHVzX3VzZWQgID0gcmVmIGZhbHNlIGFuZCBoYXNoX3VzZWQgPSByZWYgZmFsc2VcbiAgICBhbmQgc3BhY2VfdXNlZCA9IHJlZiBmYWxzZSBhbmQgaWduX3VzZWQgICA9IHJlZiBmYWxzZVxuICAgIGFuZCBwYWRfdXNlZCAgID0gcmVmIGZhbHNlIGFuZCBwcmVjX3VzZWQgID0gcmVmIGZhbHNlIGluXG5cbiAgICAoKiBBY2Nlc3MgdG8gb3B0aW9ucywgdXBkYXRlIGZsYWdzLiAqKVxuICAgIGxldCBnZXRfcGx1cyAgICAoKSA9IHBsdXNfdXNlZCAgOj0gdHJ1ZTsgcGx1c1xuICAgIGFuZCBnZXRfaGFzaCAgICgpID0gaGFzaF91c2VkIDo9IHRydWU7IGhhc2hcbiAgICBhbmQgZ2V0X3NwYWNlICAgKCkgPSBzcGFjZV91c2VkIDo9IHRydWU7IHNwYWNlXG4gICAgYW5kIGdldF9pZ24gICAgICgpID0gaWduX3VzZWQgICA6PSB0cnVlOyBpZ25cbiAgICBhbmQgZ2V0X3BhZCAgICAgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZFxuICAgIGFuZCBnZXRfcHJlYyAgICAoKSA9IHByZWNfdXNlZCAgOj0gdHJ1ZTsgcHJlY1xuICAgIGFuZCBnZXRfcGFkcHJlYyAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkcHJlYyBpblxuXG4gICAgbGV0IGdldF9pbnRfcGFkICgpIDogKHgseSkgcGFkZGluZyA9XG4gICAgICAoKiAlNS4zZCBpcyBhY2NlcHRlZCBhbmQgbWVhbmluZ2Z1bDogcGFkIHRvIGxlbmd0aCA1IHdpdGhcbiAgICAgICAgIHNwYWNlcywgYnV0IGZpcnN0IHBhZCB3aXRoIHplcm9zIHVwdG8gbGVuZ3RoIDMgKDAtcGFkZGluZ1xuICAgICAgICAgaXMgdGhlIGludGVycHJldGF0aW9uIG9mIFwicHJlY2lzaW9uXCIgZm9yIGludGVnZXIgZm9ybWF0cykuXG5cbiAgICAgICAgICUwNS4zZCBpcyByZWR1bmRhbnQ6IHBhZCB0byBsZW5ndGggNSAqd2l0aCB6ZXJvcyosIGJ1dFxuICAgICAgICAgZmlyc3QgcGFkIHdpdGggemVyb3MuLi4gVG8gYWRkIGluc3VsdCB0byB0aGUgaW5qdXJ5LCB0aGVcbiAgICAgICAgIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSAwLXBhZGRpbmcgaW5kaWNhdGlvbiBhbmRcbiAgICAgICAgIGRvZXMgdGhlIDUgcGFkZGluZyB3aXRoIHNwYWNlcyBpbnN0ZWFkLiBXZSByZXVzZSB0aGlzXG4gICAgICAgICBpbnRlcnByZXRhdGlvbiBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IHN0YXRpY2FsbHkgcmVqZWN0IHRoaXNcbiAgICAgICAgIGZvcm1hdCB3aGVuIHRoZSBsZWdhY3kgbW9kZSBpcyBkaXNhYmxlZCwgdG8gcHJvdGVjdCBzdHJpY3RcbiAgICAgICAgIHVzZXJzIGZyb20gdGhpcyBjb3JuZXIgY2FzZS4gKilcbiAgICAgICBtYXRjaCBnZXRfcGFkICgpLCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICAgICB8IHBhZCwgTm9fcHJlY2lzaW9uIC0+IHBhZFxuICAgICAgICAgfCBOb19wYWRkaW5nLCBfICAgICAtPiBOb19wYWRkaW5nXG4gICAgICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgbiksIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKVxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcywgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBMaXRfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWRcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkIGluXG5cbiAgICAoKiBDaGVjayB0aGF0IHBhZHR5IDw+IFplcm9zLiAqKVxuICAgIGxldCBjaGVja19ub18wIHN5bWIgKHR5cGUgYSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpIDogKGEsYikgcGFkZGluZyA9XG4gICAgICBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoKExlZnQgfCBSaWdodCksIF8pIC0+IHBhZFxuICAgICAgfCBBcmdfcGFkZGluZyAoTGVmdCB8IFJpZ2h0KSAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcyAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgaW5cblxuICAgICgqIEdldCBwYWRkaW5nIGFzIGEgcGFkX29wdGlvbiAoc2VlIFwiJV9cIiwgXCIle1wiLCBcIiUoXCIgYW5kIFwiJVtcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgb3B0X29mX3BhZCBjICh0eXBlIGEpICh0eXBlIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgPSBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IE5vbmVcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aCkgLT4gU29tZSB3aWR0aFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInMCdcIlxuICAgICAgfCBMaXRfcGFkZGluZyAoTGVmdCwgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIictJ1wiXG4gICAgICB8IEFyZ19wYWRkaW5nIF8gLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInKidcIlxuICAgIGluXG4gICAgbGV0IGdldF9wYWRfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWQgKCkpIGluXG4gICAgbGV0IGdldF9wYWRwcmVjX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkcHJlYyAoKSkgaW5cblxuICAgICgqIEdldCBwcmVjaXNpb24gYXMgYSBwcmVjX29wdGlvbiAoc2VlIFwiJV9mXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IGdldF9wcmVjX29wdCAoKSA9IG1hdGNoIGdldF9wcmVjICgpIHdpdGhcbiAgICAgIHwgTm9fcHJlY2lzaW9uICAgICAgIC0+IE5vbmVcbiAgICAgIHwgTGl0X3ByZWNpc2lvbiBuZGVjIC0+IFNvbWUgbmRlY1xuICAgICAgfCBBcmdfcHJlY2lzaW9uICAgICAgLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicqJ1wiXG4gICAgaW5cblxuICAgIGxldCBmbXRfcmVzdWx0ID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnLCcgLT5cbiAgICAgIHBhcnNlIHN0cl9pbmQgZW5kX2luZFxuICAgIHwgJ2MnIC0+XG4gICAgICBsZXQgY2hhcl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoQ2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgc2Nhbl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlMGMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChTY2FuX25leHRfY2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggZ2V0X3BhZF9vcHQgJ2MnIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSAwIC0+IHNjYW5fZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSBfbiAtPlxuICAgICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yXG4gICAgICAgICAgIHRoZW4gaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZFxuICAgICAgICAgICBlbHNlICgqIGxlZ2FjeSBpZ25vcmVzICVjIHdpZHRocyAqKSBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgZW5kXG4gICAgfCAnQycgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jYW1sX2NoYXIsZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChDYW1sX2NoYXIgZm10X3Jlc3QpXG4gICAgfCAncycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChTdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnUycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfY2FtbF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKENhbWxfc3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+XG4gICAgICBsZXQgaWNvbnYgPSBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IFRva2VuX2NvdW50ZXIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIHwgJ24nIHwgJ0wnIHdoZW4gc3RyX2luZD1lbmRfaW5kIHx8IG5vdCAoaXNfaW50X2Jhc2Ugc3RyLltzdHJfaW5kXSkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IGNvdW50ZXJfb2ZfY2hhciBzeW1iIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50MzIgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ24nIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpXG4gICAgICAgICAgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdMJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50NjQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2YnIHwgJ2UnIHwgJ0UnIHwgJ2cnIHwgJ0cnIHwgJ0YnIHwgJ2gnIHwgJ0gnIC0+XG4gICAgICBsZXQgZmNvbnYgPVxuICAgICAgICBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kXG4gICAgICAgICAgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zsb2F0IChnZXRfcGFkX29wdCAnXycsIGdldF9wcmVjX29wdCAoKSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoRmxvYXQgKGZjb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdiJyB8ICdCJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9ib29sIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChCb29sIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2EnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQWxwaGEgZm10X3Jlc3QpXG4gICAgfCAndCcgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChUaGV0YSBmbXRfcmVzdClcbiAgICB8ICdyJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChSZWFkZXIgZm10X3Jlc3QpXG4gICAgfCAnIScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGbHVzaCBmbXRfcmVzdClcbiAgICB8ICgnJScgfCAnQCcpIGFzIGMgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKGMsIGZtdF9yZXN0KSlcbiAgICB8ICd7JyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJ30nIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICd7Jywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnKCcgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICcpJyBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJygnLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICdbJyAtPlxuICAgICAgbGV0IG5leHRfaW5kLCBjaGFyX3NldCA9IHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdfJywgY2hhcl9zZXQpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ1snLCBjaGFyX3NldCwgZm10X3Jlc3QpKVxuICAgIHwgJy0nIHwgJysnIHwgJyMnIHwgJyAnIHwgJ18nIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBmbGFnICVDIGlzIG9ubHkgYWxsb3dlZCBhZnRlciB0aGUgJyUlJywgYmVmb3JlIHBhZGRpbmcgYW5kIHByZWNpc2lvblwiXG4gICAgICAgIHN0ciBwY3RfaW5kIHN5bWJcbiAgICB8IF8gLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGludmFsaWQgY29udmVyc2lvbiBcXFwiJSUlY1xcXCJcIiBzdHIgKHN0cl9pbmQgLSAxKSBzeW1iXG4gICAgaW5cbiAgICAoKiBDaGVjayBmb3IgdW51c2VkIG9wdGlvbnMsIGFuZCByZWplY3QgdGhlbSBhcyBpbmNvbXBhdGlibGUuXG5cbiAgICAgICBTdWNoIGNoZWNrcyBuZWVkIHRvIGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLCBhcyB0aGUgbGVnYWN5XG4gICAgICAgcGFyc2VyIHNpbGVudGx5IGlnbm9yZWQgaW5jb21wYXRpYmxlIGZsYWdzLiAqKVxuICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlbiBiZWdpblxuICAgIGlmIG5vdCAhcGx1c191c2VkICYmIHBsdXMgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIjtcbiAgICBpZiBub3QgIWhhc2hfdXNlZCAmJiBoYXNoIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCI7XG4gICAgaWYgbm90ICFzcGFjZV91c2VkICYmIHNwYWNlIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCI7XG4gICAgaWYgbm90ICFwYWRfdXNlZCAgJiYgUGFkZGluZ19FQkIgcGFkIDw+IFBhZGRpbmdfRUJCIE5vX3BhZGRpbmcgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCJgcGFkZGluZydcIjtcbiAgICBpZiBub3QgIXByZWNfdXNlZCAmJiBQcmVjaXNpb25fRUJCIHByZWMgPD4gUHJlY2lzaW9uX0VCQiBOb19wcmVjaXNpb24gdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIChpZiBpZ24gdGhlbiAnXycgZWxzZSBzeW1iKVxuICAgICAgICBcImBwcmVjaXNpb24nXCI7XG4gICAgaWYgaWduICYmIHBsdXMgdGhlbiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJysnXCI7XG4gICAgZW5kO1xuICAgICgqIHRoaXMgbGFzdCB0ZXN0IG11c3Qgbm90IGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLFxuICAgICAgIGFzIGlnbm9yaW5nIGl0IHdvdWxkIHR5cGljYWxseSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdHlwaW5nXG4gICAgICAgdGhhbiB3aGF0IHRoZSBsZWdhY3kgcGFyc2VyIHVzZWQgKilcbiAgICBpZiBub3QgIWlnbl91c2VkICYmIGlnbiB0aGVuXG4gICAgICBiZWdpbiBtYXRjaCBzeW1iIHdpdGhcbiAgICAgICAgKCogYXJndW1lbnQtbGVzcyBmb3JtYXRzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpbiBsZWdhY3kgbW9kZSAqKVxuICAgICAgICB8ICgnQCcgfCAnJScgfCAnIScgfCAnLCcpIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+ICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJ18nXCJcbiAgICAgIGVuZDtcbiAgICBmbXRfcmVzdWx0XG5cbiAgKCogUGFyc2UgZm9ybWF0dGluZyBpbmZvcm1hdGlvbiAoYWZ0ZXIgJ0AnKS4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX2F0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIEVuZF9vZl9mb3JtYXQpKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnWycgLT5cbiAgICAgICAgcGFyc2VfdGFnIGZhbHNlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX2JveCwgZm10X3Jlc3QpKVxuICAgICAgfCAneycgLT5cbiAgICAgICAgcGFyc2VfdGFnIHRydWUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICd9JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfdGFnLCBmbXRfcmVzdCkpXG4gICAgICB8ICcsJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCxcIiwgMCwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJAIFwiLCAxLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnOycgLT5cbiAgICAgICAgcGFyc2VfZ29vZF9icmVhayAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJz8nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGRmx1c2gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZvcmNlX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGbHVzaF9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBwYXJzZV9tYWdpY19zaXplIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfYXQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIHdoZW4gc3RyX2luZCArIDEgPCBlbmRfaW5kICYmIHN0ci5bc3RyX2luZCArIDFdID0gJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX3BlcmNlbnQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBmbXRfcmVzdCkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgYywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8bmFtZT4gYWZ0ZXIgXCJAe1wiIG9yIFwiQFtcIi4gKilcbiAgYW5kIHBhcnNlX3RhZyA6IHR5cGUgZSBmIC4gYm9vbCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGlzX29wZW5fdGFnIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIHRyeVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIGxldCBpbmQgPSBTdHJpbmcuaW5kZXhfZnJvbSBzdHIgKHN0cl9pbmQgKyAxKSAnPicgaW5cbiAgICAgICAgaWYgaW5kID49IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgc3RyX2luZCAoaW5kIC0gc3RyX2luZCArIDEpIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKGluZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgKGluZCArIDEpIGluXG4gICAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChzdWJfZm10LCBzdWJfc3RyKSBpblxuICAgICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKEVuZF9vZl9mb3JtYXQsIFwiXCIpIGluXG4gICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDx3aWR0aCBvZmZzZXQ+IGFmdGVyIFwiQDtcIi4gKilcbiAgYW5kIHBhcnNlX2dvb2RfYnJlYWsgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbGV0IG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgfHwgc3RyLltzdHJfaW5kXSA8PiAnPCcgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiAoXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgd2lkdGggPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfM10gd2l0aFxuICAgICAgICAgICAgICB8ICc+JyAtPlxuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfMy1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF8zICsgMSwgQnJlYWsgKHMsIHdpZHRoLCAwKVxuICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF80LCBvZmZzZXQgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMyBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzQgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF81XSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF81LXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxLCBCcmVhayAocywgd2lkdGgsIG9mZnNldClcbiAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICApXG4gICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIHN0cl9pbmQsIEJyZWFrIChcIkA7XCIsIDEsIDApXG4gICAgaW5cbiAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSB0aGUgc2l6ZSBpbiBhIDxuPi4gKilcbiAgYW5kIHBhcnNlX21hZ2ljX3NpemUgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbWF0Y2hcbiAgICAgIHRyeVxuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCBzaXplID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfM10gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQgLSAyKSAoc3RyX2luZF8zIC0gc3RyX2luZCArIDMpIGluXG4gICAgICAgICAgU29tZSAoc3RyX2luZF8zICsgMSwgTWFnaWNfc2l6ZSAocywgc2l6ZSkpXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgU29tZSAobmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0KSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyAnPCcsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSBhbmQgY29uc3RydWN0IGEgY2hhciBzZXQuICopXG4gIGFuZCBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG5cbiAgICBsZXQgY2hhcl9zZXQgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgICBsZXQgYWRkX2NoYXIgYyA9XG4gICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYztcbiAgICBpblxuICAgIGxldCBhZGRfcmFuZ2UgYyBjJyA9XG4gICAgICBmb3IgaSA9IGludF9vZl9jaGFyIGMgdG8gaW50X29mX2NoYXIgYycgZG9cbiAgICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IChjaGFyX29mX2ludCBpKTtcbiAgICAgIGRvbmU7XG4gICAgaW5cblxuICAgIGxldCBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQgPVxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiAnJSUnIGFsb25lIGlzIG5vdCBhY2NlcHRlZCBpbiBjaGFyYWN0ZXIgc2V0cywgXFxcbiAgICAgICAgIHVzZSAlJSUlIGluc3RlYWQgYXQgcG9zaXRpb24gJWQuXCIgc3RyIHN0cl9pbmRcbiAgICBpblxuXG4gICAgKCogUGFyc2UgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIGNoYXIgc2V0LiAqKVxuICAgIGxldCByZWMgcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBsZXQgYyA9IHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFBhcnNlIHRoZSBjb250ZW50IG9mIGEgY2hhciBzZXQgdW50aWwgdGhlIGZpcnN0ICddJy4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfY29udGVudCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBUZXN0IGZvciByYW5nZSBpbiBjaGFyIHNldC4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcbiAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgd2hlbiBjID0gJyUnIC0+XG4gICAgICAgIGFkZF9jaGFyIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBpZiBjID0gJyUnIHRoZW4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kO1xuICAgICAgICAoKiBub3RlIHRoYXQgJ0AnIGFsb25lIGlzIGFjY2VwdGVkLCBhcyBkb25lIGJ5IHRoZSBsZWdhY3lcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb247IHRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSByZXF1aXJlcyAlQFxuICAgICAgICAgICBzbyB3ZSBjb3VsZCB3YXJuIG9uIHRoYXQgKilcbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgYydcblxuICAgICgqIE1hbmFnZSByYW5nZSBpbiBjaGFyIHNldCAoZXhjZXB0IGlmIHRoZSAnLScgdGhlIGxhc3QgY2hhciBiZWZvcmUgJ10nKSAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICclJyAtPlxuICAgICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgLT5cbiAgICAgICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDIpIGVuZF9pbmRcbiAgICAgICAgICB8IF8gLT4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICBpblxuICAgIGxldCBzdHJfaW5kLCByZXZlcnNlID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgICAgfCAnXicgLT4gc3RyX2luZCArIDEsIHRydWVcbiAgICAgICAgfCBfIC0+IHN0cl9pbmQsIGZhbHNlIGluXG4gICAgbGV0IG5leHRfaW5kID0gcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgbGV0IGNoYXJfc2V0ID0gZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0IGluXG4gICAgbmV4dF9pbmQsIChpZiByZXZlcnNlIHRoZW4gcmV2X2NoYXJfc2V0IGNoYXJfc2V0IGVsc2UgY2hhcl9zZXQpXG5cbiAgKCogQ29uc3VtZSBhbGwgbmV4dCBzcGFjZXMsIHJhaXNlIGFuIEZhaWx1cmUgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBpZiBzdHIuW3N0cl9pbmRdID0gJyAnIHRoZW4gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBlbHNlIHN0cl9pbmRcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZSBpZiBlbmRfaW5kIGlzXG4gICAgIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgYWNjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IGFjYyAqIDEwICsgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCcpIGluXG4gICAgICBpZiBuZXdfYWNjID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGludGVnZXIgJWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAlZFwiXG4gICAgICAgICAgc3RyIG5ld19hY2MgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCBuZXdfYWNjXG4gICAgfCBfIC0+IHN0cl9pbmQsIGFjY1xuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlXG4gICAgIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX2ludGVnZXIgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMFxuICAgIHwgJy0nIC0+IChcbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgIGxldCBuZXh0X2luZCwgbiA9IHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCAwIGluXG4gICAgICAgIG5leHRfaW5kLCAtblxuICAgICAgfCBjIC0+XG4gICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiZGlnaXRcIiBjXG4gICAgKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBBZGQgYSBsaXRlcmFsIHRvIGEgZm9ybWF0IGZyb20gYSBsaXRlcmFsIGNoYXJhY3RlciBzdWItc2VxdWVuY2UuICopXG4gIGFuZCBhZGRfbGl0ZXJhbCA6IHR5cGUgYSBkIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IChhLCBfLCBfLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGZtdCAtPiBtYXRjaCBzdHJfaW5kIC0gbGl0X3N0YXJ0IHdpdGhcbiAgICB8IDAgICAgLT4gRm10X0VCQiBmbXRcbiAgICB8IDEgICAgLT4gRm10X0VCQiAoQ2hhcl9saXRlcmFsIChzdHIuW2xpdF9zdGFydF0sIGZtdCkpXG4gICAgfCBzaXplIC0+IEZtdF9FQkIgKFN0cmluZ19saXRlcmFsIChTdHJpbmcuc3ViIHN0ciBsaXRfc3RhcnQgc2l6ZSwgZm10KSlcblxuICAoKiBTZWFyY2ggdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzdWItZm9ybWF0XG4gICAgIChpLmUuIHRoZSBjb3JyZXNwb25kaW5nIFwiJX1cIiBvciBcIiUpXCIpICopXG4gIGFuZCBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBzdWItZm9ybWF0LCBcXFxuICAgICAgICAgZXhwZWN0ZWQgXFxcIiUlJWNcXFwiIGF0IGNoYXJhY3RlciBudW1iZXIgJWRcIiBzdHIgYyBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJyUnIC0+XG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGlmIHN0ci5bc3RyX2luZCArIDFdID0gYyB0aGVuICgqIEVuZCBvZiBmb3JtYXQgZm91bmQgKikgc3RyX2luZCBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgfCAnXycgLT5cbiAgICAgICAgICAoKiBTZWFyY2ggZm9yIFwiJV8oXCIgb3IgXCIlX3tcIi4gKilcbiAgICAgICAgICBpZiBzdHJfaW5kICsgMiA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAyXSB3aXRoXG4gICAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgY1xuICAgICAgICAgIGVuZFxuICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICgqICV7Li4uJX0gc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICgqICUoLi4uJSkgc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICd9JyAtPlxuICAgICAgICAgICgqIEVycm9yOiAlKC4uLiV9LiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICcpJ1wiICd9J1xuICAgICAgICB8ICcpJyAtPlxuICAgICAgICAgICgqIEVycm9yOiAley4uLiUpLiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICd9J1wiICcpJ1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICBlbmRcbiAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAoKiBDaGVjayBpZiBzeW1iIGlzIGEgdmFsaWQgaW50IGNvbnZlcnNpb24gYWZ0ZXIgXCIlbFwiLCBcIiVuXCIgb3IgXCIlTFwiICopXG4gIGFuZCBpc19pbnRfYmFzZSBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gICgqIENvbnZlcnQgYSBjaGFyIChsLCBuIG9yIEwpIHRvIGl0cyBhc3NvY2lhdGVkIGNvdW50ZXIuICopXG4gIGFuZCBjb3VudGVyX29mX2NoYXIgc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2wnIC0+IExpbmVfY291bnRlciAgfCAnbicgLT4gQ2hhcl9jb3VudGVyXG4gICAgfCAnTCcgLT4gVG9rZW5fY291bnRlciB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgaW50X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbWF0Y2ggcGx1cywgaGFzaCwgc3BhY2UsIHN5bWIgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9kICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfaVxuICAgIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2QnIC0+IEludF9zZCB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdpJyAtPiBJbnRfc2lcbiAgICB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfcGQgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X3BpXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAneCcgLT4gSW50X3ggIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ1gnIC0+IEludF9YXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAneCcgLT4gSW50X0N4IHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ1gnIC0+IEludF9DWFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ28nIC0+IEludF9vXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnbycgLT4gSW50X0NvXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAndScgLT4gSW50X3VcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdkJyAtPiBJbnRfQ2RcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdpJyAtPiBJbnRfQ2lcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd1JyAtPiBJbnRfQ3VcbiAgICB8IF8sIHRydWUsIF8sICd4JyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ3hcbiAgICB8IF8sIHRydWUsIF8sICdYJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ1hcbiAgICB8IF8sIHRydWUsIF8sICdvJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ29cbiAgICB8IF8sIHRydWUsIF8sICgnZCcgfCAnaScgfCAndScpIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBmYWxzZSBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCJcbiAgICB8IHRydWUsIF8sIHRydWUsIF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIHRydWUsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiXG4gICAgfCB0cnVlLCBfLCBmYWxzZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIGZhbHNlIGhhc2ggc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgZmFsc2UsIF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3BhY2UsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGZsb2F0X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBsZXQgZmxhZyA9IG1hdGNoIHBsdXMsIHNwYWNlIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX1xuICAgIHwgZmFsc2UsICB0cnVlIC0+IEZsb2F0X2ZsYWdfc1xuICAgIHwgIHRydWUsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfcFxuICAgIHwgIHRydWUsICB0cnVlIC0+XG4gICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gRmxvYXRfZmxhZ19wXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIiBpblxuICAgIGxldCBraW5kID0gbWF0Y2ggaGFzaCwgc3ltYiB3aXRoXG4gICAgfCBfLCAnZicgLT4gRmxvYXRfZlxuICAgIHwgXywgJ2UnIC0+IEZsb2F0X2VcbiAgICB8IF8sICdFJyAtPiBGbG9hdF9FXG4gICAgfCBfLCAnZycgLT4gRmxvYXRfZ1xuICAgIHwgXywgJ0cnIC0+IEZsb2F0X0dcbiAgICB8IF8sICdoJyAtPiBGbG9hdF9oXG4gICAgfCBfLCAnSCcgLT4gRmxvYXRfSFxuICAgIHwgZmFsc2UsICdGJyAtPiBGbG9hdF9GXG4gICAgfCB0cnVlLCAnRicgLT4gRmxvYXRfQ0ZcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gICAgZmxhZywga2luZFxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBpbmNvbXBhdGlibGUgb3B0aW9ucy4qKVxuICBhbmQgaW5jb21wYXRpYmxlX2ZsYWcgOiB0eXBlIGEgLiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nIC0+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnRvdXQsIElOUklBIFBhcmlzLVNhY2xheSAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoIDogaW50O1xuICBtdXRhYmxlIGFyciA6ICdhIHNsb3QgYXJyYXk7XG59XG4oKiB7MiBUaGUgdHlwZSBbJ2EgdF19XG5cbiAgIEEgZHluYW1pYyBhcnJheSBpcyByZXByZXNlbnRlZCB1c2luZyBhIGJhY2tpbmcgYXJyYXkgW2Fycl0gYW5kXG4gICBhIFtsZW5ndGhdLiBJdCBiZWhhdmVzIGFzIGFuIGFycmF5IG9mIHNpemUgW2xlbmd0aF0gLS0gdGhlIGluZGljZXNcbiAgIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXSBpbmNsdWRlZCBjb250YWluIHVzZXItcHJvdmlkZWQgdmFsdWVzIGFuZFxuICAgY2FuIGJlIFtnZXRdIGFuZCBbc2V0XSAtLSBidXQgdGhlIGxlbmd0aCBtYXkgYWxzbyBjaGFuZ2UgaW4gdGhlXG4gICBmdXR1cmUgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzIGF0IHRoZSBlbmQuXG5cbiAgIFdlIHVzZSB0aGUgZm9sbG93aW5nIGNvbmNlcHRzO1xuICAgLSBjYXBhY2l0eTogdGhlIGxlbmd0aCBvZiB0aGUgYmFja2luZyBhcnJheTpcbiAgICAgW0FycmF5Lmxlbmd0aCAgYXJyXVxuICAgLSBsaXZlIHNwYWNlOiB0aGUgcG9ydGlvbiBvZiB0aGUgYmFja2luZyBhcnJheSB3aXRoXG4gICAgIGluZGljZXMgZnJvbSBbMF0gdG8gW2xlbmd0aCAtIDFdIGluY2x1ZGVkLlxuICAgLSBlbXB0eSBzcGFjZTogdGhlIHBvcnRpb24gb2YgdGhlIGJhY2tpbmcgYXJyYXlcbiAgICAgZnJvbSBbbGVuZ3RoXSB0byB0aGUgZW5kIG9mIHRoZSBiYWNraW5nIGFycmF5LlxuXG4gICB7MiBUaGUgdHlwZSBbJ2Egc2xvdF19XG5cbiAgIFdlIHNob3VsZCBub3Qga2VlcCBhIHVzZXItcHJvdmlkZWQgdmFsdWUgaW4gdGhlIGVtcHR5IHNwYWNlLCBhc1xuICAgdGhpcyBjb3VsZCBleHRlbmQgaXRzIGxpZmV0aW1lIGFuZCBtYXkgcmVzdWx0IGluIG1lbW9yeSBsZWFrcyBvZlxuICAgYXJiaXRyYXJ5IHNpemUuIEZ1bmN0aW9ucyB0aGF0IHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBkeW5hbWljXG4gICBhcnJheSwgc3VjaCBhcyBbcG9wX2xhc3RdIG9yIFt0cnVuY2F0ZV0sIG11c3QgcmVhbGx5IGVyYXNlIHRoZVxuICAgZWxlbWVudCBmcm9tIHRoZSBiYWNraW5nIGFycmF5LlxuXG4gICBUaGlzIGNvbnN0cmFpbnQgbWFrZXMgaXQgZGlmZmljdWx0IHRvIHJlcHJlc2VudCBhbiBkeW5hbWljIGFycmF5IG9mXG4gICBlbGVtZW50cyBvZiB0eXBlIFsnYV0gd2l0aCBhIGJhY2tpbmcgYXJyYXkgb2YgdHlwZSBbJ2EgYXJyYXldOiB3aGF0XG4gICB2YWxpZCB2YWx1ZSBvZiB0eXBlIFsnYV0gd291bGQgd2UgdXNlIGluIHRoZSBlbXB0eSBzcGFjZT8gVHlwaWNhbFxuICAgY2hvaWNlcyBpbmNsdWRlOlxuICAgLSBhY2NlcHRpbmcgc2NlbmFyaW9zIHdoZXJlIHdlIGFjdHVhbGx5IGxlYWsgdXNlci1wcm92aWRlZCB2YWx1ZXNcbiAgICAgKGJ1dCB0aGlzIGNhbiBibG93dXAgbWVtb3J5IHVzYWdlIGluIHNvbWUgY2FzZXMsIGFuZCBpcyBoYXJkIHRvIGRlYnVnKVxuICAgLSByZXF1aXJpbmcgYSBcImR1bW15XCIgdmFsdWUgYXQgY3JlYXRpb24gb2YgdGhlIGR5bmFtaWMgYXJyYXlcbiAgICAgb3IgaW4gdGhlIHBhcnRzIG9mIHRoZSBBUEkgdGhhdCBncm93IHRoZSBlbXB0eSBzcGFjZVxuICAgICAoYnV0IHVzZXJzIGZpbmQgdGhpcyB2ZXJ5IGluY29udmVuaWVudClcbiAgIC0gdXNpbmcgYXJjYW5lIE9iai5tYWdpYyB0cmlja3NcbiAgICAgKGJ1dCBleHBlcnRzIGRvbid0IGFncmVlIG9uIHdoaWNoIHRyaWNrcyBhcmUgc2FmZSB0byB1c2UgYW5kL29yXG4gICAgICBzaG91bGQgYmUgdXNlZCBoZXJlKVxuICAgLSB1c2luZyBhIGJhY2tpbmcgYXJyYXkgb2YgWydhIG9wdGlvbl0gdmFsdWVzLCB1c2luZyBbTm9uZV1cbiAgICAgaW4gdGhlIGVtcHR5IHNwYWNlXG4gICAgIChidXQgdGhpcyBnaXZlcyBhIG5vdGljZWFibHkgbGVzcyBlZmZpY2llbnQgbWVtb3J5IHJlcHJlc2VudGF0aW9uKVxuXG4gICBJbiB0aGUgcHJlc2VudCBpbXBsZW1lbnRhdGlvbiwgd2UgdXNlIHRoZSBbJ2Egb3B0aW9uXSBhcHByb2FjaCxcbiAgIHdpdGggYSB0d2lzdC4gV2l0aCBbJ2Egb3B0aW9uXSwgY2FsbGluZyBbc2V0IGEgaSB4XSBtdXN0IHJlYWxsb2NhdGVcbiAgIGEgbmV3IFtTb21lIHhdIGJsb2NrOlxue1tcbiAgIGxldCBzZXQgYSBpIHggPVxuICAgICBpZiBpIDwgMCB8fCBpID49IGEubGVuZ3RoIHRoZW4gZXJyb3IgXCJvdXQgb2YgYm91bmRzXCI7XG4gICAgIGEuYXJyLihpKSA8LSBTb21lIHhcbl19XG4gICBJbnN0ZWFkIHdlIHVzZSB0aGUgdHlwZSBbJ2Egc2xvdF0gYmVsb3csXG4gICB3aGljaCBiZWhhdmVzIGFzIGFuIG9wdGlvbiB3aG9zZSBbU29tZV0gY29uc3RydWN0b3JcbiAgIChjYWxsZWQgW0VsZW1dIGhlcmUpIGhhcyBhIF9tdXRhYmxlXyBhcmd1bWVudC5cbiopXG5hbmQgJ2Egc2xvdCA9XG58IEVtcHR5XG58IEVsZW0gb2YgeyBtdXRhYmxlIHY6ICdhIH1cbigqXG4gICBUaGlzIGdpdmVzIGFuIGFsbG9jYXRpb24tZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiBbc2V0XSB0aGF0IGNhbGxzXG4gICBbQXJyYXkuZ2V0XSAoaW5zdGVhZCBvZiBbQXJyYXkuc2V0XSkgb24gdGhlIGJhY2tpbmcgYXJyYXkgYW5kIHRoZW5cbiAgIG11dGF0ZXMgdGhlIFt2XSBwYXJhbWV0ZXIuIEluIHBzZXVkby1jb2RlOlxue1tcbiAgIGxldCBzZXQgYSBpIHggPVxuICAgICBpZiBpIDwgMCB8fCBpID49IGEubGVuZ3RoIHRoZW4gZXJyb3IgXCJvdXQgb2YgYm91bmRzXCI7XG4gICAgIG1hdGNoIGEuYXJyLihpKSB3aXRoXG4gICAgIHwgRW1wdHkgLT4gZXJyb3IgXCJpbnZhbGlkIHN0YXRlOiBtaXNzaW5nIGVsZW1lbnRcIlxuICAgICB8IEVsZW0gcyAtPiBzLnYgPC0geFxuXX1cbiAgIFdpdGggdGhpcyBhcHByb2FjaCwgYWNjZXNzaW5nIGFuIGVsZW1lbnQgc3RpbGwgcGF5cyB0aGUgY29zdCBvZiBhblxuICAgZXh0cmEgaW5kaXJlY3Rpb24gKGNvbXBhcmVkIHRvIGFwcHJvYWNoZXMgdGhhdCBkbyBub3QgYm94IGVsZW1lbnRzXG4gICBpbiB0aGUgYmFja2luZyBhcnJheSksIGJ1dCBvbmx5IG9wZXJhdGlvbnMgdGhhdCBhZGQgbmV3IGVsZW1lbnRzIGF0XG4gICB0aGUgZW5kIG9mIHRoZSBhcnJheSBwYXkgZXh0cmEgYWxsb2NhdGlvbnMuXG5cbiAgIFRoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgd2hlcmUgWydhIG9wdGlvbl0gaXMgYmV0dGVyOiBpdCBtYWtlc1xuICAgW3BvcF9sYXN0X29wdF0gbW9yZSBlZmZpY2llbnQgYXMgdGhlIHVuZGVybHlpbmcgb3B0aW9uIGNhbiBiZVxuICAgcmV0dXJuZWQgZGlyZWN0bHksIGFuZCBpdCBhbHNvIGxldHMgdXMgdXNlIFtBcnJheS5ibGl0XSB0b1xuICAgaW1wbGVtZW50IFthcHBlbmRdLiBXZSBiZWxpZXZlIHRoYXQgb3B0aW1pemluZyBbZ2V0XSBhbmQgW3NldF0gaXNcbiAgIG1vcmUgaW1wb3J0YW50IGZvciBkeW5hbWljIGFycmF5cy5cblxuICAgezIgSW52YXJpYW50cyBhbmQgdmFsaWQgc3RhdGVzfVxuXG4gICBXZSBlbmZvcmNlIHRoZSBpbnZhcmlhbnQgdGhhdCBbbGVuZ3RoID49IDBdIGF0IGFsbCB0aW1lcy5cbiAgIHdlIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQgZm9yIG9wdGltaXphdGlvbi5cblxuICAgVGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGRlZmluZSB3aGF0IHdlIGNhbGwgYSBcInZhbGlkXCIgZHluYXJyYXk6XG4gICAtIHZhbGlkIGxlbmd0aDogW2xlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXVxuICAgLSBubyBtaXNzaW5nIGVsZW1lbnQgaW4gdGhlIGxpdmUgc3BhY2U6XG4gICAgIGZvcmFsbCBpLCBbMCA8PSBpIDwgbGVuZ3RoXSBpbXBsaWVzIFthcnIuKGkpIDw+IEVtcHR5XVxuICAgLSBubyBlbGVtZW50IGluIHRoZSBlbXB0eSBzcGFjZTpcbiAgICAgZm9yYWxsIGksIFtsZW5ndGggPD0gaSA8IEFycmF5Lmxlbmd0aCBhcnJdIGltcGxpZXMgW2Fyci4oaSkgPSBFbXB0eV1cblxuICAgVW5mb3J0dW5hdGVseSwgd2UgY2Fubm90IGVhc2lseSBlbmZvcmNlIHZhbGlkaXR5IGFzIGFuIGludmFyaWFudCBpblxuICAgcHJlc2VuY2Ugb2YgY29uY3VycmVudCB1cGRhdGVzLiBXZSBjYW4gdGh1cyBvYnNlcnZlIGR5bmFycmF5cyBpblxuICAgXCJpbnZhbGlkIHN0YXRlc1wiLiBPdXIgaW1wbGVtZW50YXRpb24gbWF5IHJhaXNlIGV4Y2VwdGlvbnMgb3IgcmV0dXJuXG4gICBpbmNvcnJlY3QgcmVzdWx0cyBvbiBvYnNlcnZpbmcgaW52YWxpZCBzdGF0ZXMsIGJ1dCBvZiBjb3Vyc2UgaXRcbiAgIG11c3QgcHJlc2VydmUgbWVtb3J5IHNhZmV0eS5cbiopXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBsZXRbQGlubGluZSBuZXZlcl0gaW5kZXhfb3V0X29mX2JvdW5kcyBmIH5pIH5sZW5ndGggPVxuICAgIGlmIGxlbmd0aCA9IDAgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICAgIFwiRHluYXJyYXkuJXM6IGluZGV4ICVkIG91dCBvZiBib3VuZHMgKGVtcHR5IGR5bmFycmF5KVwiXG4gICAgICAgIGYgaVxuICAgIGVsc2VcbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkR5bmFycmF5LiVzOiBpbmRleCAlZCBvdXQgb2YgYm91bmRzICgwLi4lZClcIlxuICAgICAgICBmIGkgKGxlbmd0aCAtIDEpXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgZiBuID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IG5lZ2F0aXZlIGxlbmd0aCAlZCByZXF1ZXN0ZWRcIlxuICAgICAgZiBuXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG5lZ2F0aXZlX2NhcGFjaXR5X3JlcXVlc3RlZCBmIG4gPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCJEeW5hcnJheS4lczogbmVnYXRpdmUgY2FwYWNpdHkgJWQgcmVxdWVzdGVkXCJcbiAgICAgIGYgblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSByZXF1ZXN0ZWRfbGVuZ3RoX291dF9vZl9ib3VuZHMgZiByZXF1ZXN0ZWRfbGVuZ3RoID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGNhbm5vdCBncm93IHRvIHJlcXVlc3RlZCBsZW5ndGggJWQgKG1heF9hcnJheV9sZW5ndGggaXMgJWQpXCJcbiAgICAgIGYgcmVxdWVzdGVkX2xlbmd0aCBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG4gICgqIFdoZW4gb2JzZXJ2aW5nIGFuIGludmFsaWQgc3RhdGUgKFttaXNzaW5nX2VsZW1lbnRdLFxuICAgICBbaW52YWxpZF9sZW5ndGhdKSwgd2UgZG8gbm90IGdpdmUgdGhlIG5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb25cbiAgICAgaW4gdGhlIGVycm9yIG1lc3NhZ2UsIGFzIHRoZSBlcnJvciBpcyByZWxhdGVkIHRvIGludmFsaWQgb3BlcmF0aW9uc1xuICAgICBwZXJmb3JtZWQgZWFybGllciwgYW5kIG5vdCB0byB0aGUgY2FsbHNpdGUgb2YgdGhlIGZ1bmN0aW9uXG4gICAgIGl0c2VsZi4gKilcblxuICBsZXQgaW52YWxpZF9zdGF0ZV9kZXNjcmlwdGlvbiA9XG4gICAgXCJJbnZhbGlkIGR5bmFycmF5ICh1bnN5bmNocm9uaXplZCBjb25jdXJyZW50IGxlbmd0aCBjaGFuZ2UpXCJcblxuICBsZXRbQGlubGluZSBuZXZlcl0gbWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGggPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCIlczogbWlzc2luZyBlbGVtZW50IGF0IHBvc2l0aW9uICVkIDwgbGVuZ3RoICVkXCJcbiAgICAgIGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb25cbiAgICAgIGkgbGVuZ3RoXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfbGVuZ3RoIH5sZW5ndGggfmNhcGFjaXR5ID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiJXM6IGxlbmd0aCAlZCA+IGNhcGFjaXR5ICVkXCJcbiAgICAgIGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb25cbiAgICAgIGxlbmd0aCBjYXBhY2l0eVxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBsZW5ndGhfY2hhbmdlX2R1cmluZ19pdGVyYXRpb24gZiB+ZXhwZWN0ZWQgfm9ic2VydmVkID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGEgbGVuZ3RoIGNoYW5nZSBmcm9tICVkIHRvICVkIG9jY3VycmVkIGR1cmluZyBpdGVyYXRpb25cIlxuICAgICAgZiBleHBlY3RlZCBvYnNlcnZlZFxuXG4gICgqIFdoZW4gYW4gW0VtcHR5XSBlbGVtZW50IGlzIG9ic2VydmVkIHVuZXhwZWN0ZWRseSBhdCBpbmRleCBbaV0sXG4gICAgIGl0IG1heSBiZSBlaXRoZXIgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3IgYW4gaW52YWxpZC1zdGF0ZSBzaXR1YXRpb25cbiAgICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgW2kgPD0gbGVuZ3RoXS4gKilcbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIHVuZXhwZWN0ZWRfZW1wdHlfZWxlbWVudCBmIH5pIH5sZW5ndGggPVxuICAgIGlmIGkgPCBsZW5ndGggdGhlblxuICAgICAgbWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGhcbiAgICBlbHNlXG4gICAgICBpbmRleF9vdXRfb2ZfYm91bmRzIGYgfmkgfmxlbmd0aFxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBlbXB0eV9keW5hcnJheSBmID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGVtcHR5IGFycmF5XCIgZlxuZW5kXG5cbigqIERldGVjdGluZyBpdGVyYXRvciBpbnZhbGlkYXRpb24uXG5cbiAgIFNlZSB7IWl0ZXJ9IGJlbG93IGZvciBhIGRldGFpbGVkIHVzYWdlIGV4YW1wbGUuXG4qKVxubGV0IGNoZWNrX3NhbWVfbGVuZ3RoIGYgYSB+bGVuZ3RoID1cbiAgbGV0IGxlbmd0aF9hID0gYS5sZW5ndGggaW5cbiAgaWYgbGVuZ3RoIDw+IGxlbmd0aF9hIHRoZW5cbiAgICBFcnJvci5sZW5ndGhfY2hhbmdlX2R1cmluZ19pdGVyYXRpb24gZlxuICAgICAgfmV4cGVjdGVkOmxlbmd0aCB+b2JzZXJ2ZWQ6bGVuZ3RoX2FcblxuKCoqIENhcmVmdWwgdW5zYWZlIGFjY2Vzcy4gKilcblxuKCogUG9zdGNvbmRpdGlvbiBvbiBub24tZXhjZXB0aW9uYWwgcmV0dXJuOlxuICAgW2xlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXSAqKVxubGV0W0BpbmxpbmUgYWx3YXlzXSBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFyciA9XG4gIGxldCBjYXBhY2l0eSA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgaWYgbGVuZ3RoID4gY2FwYWNpdHkgdGhlblxuICAgIEVycm9yLmludmFsaWRfbGVuZ3RoIH5sZW5ndGggfmNhcGFjaXR5XG5cbigqIFByZWNvbmRpdGlvbjogWzAgPD0gaSA8IGxlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXVxuXG4gICBUaGlzIHByZWNvbmRpdGlvbiBpcyB0eXBpY2FsbHkgZ3VhcmFudGVlZCBieSBrbm93aW5nXG4gICBbMCA8PSBpIDwgbGVuZ3RoXSBhbmQgY2FsbGluZyBbY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnJdLiopXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggPVxuICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IGFyciBpIHdpdGhcbiAgfCBFbXB0eSAtPiBFcnJvci5taXNzaW5nX2VsZW1lbnQgfmkgfmxlbmd0aFxuICB8IEVsZW0ge3Z9IC0+IHZcblxuXG4oKiogezE6ZHluYXJyYXlzIER5bmFtaWMgYXJyYXlzfSAqKVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBhcnIgPSBbfCB8XTtcbn1cblxubGV0IG1ha2UgbiB4ID1cbiAgaWYgbiA8IDAgdGhlbiBFcnJvci5uZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIFwibWFrZVwiIG47XG4gIHtcbiAgICBsZW5ndGggPSBuO1xuICAgIGFyciA9IEFycmF5LmluaXQgbiAoZnVuIF8gLT4gRWxlbSB7diA9IHh9KTtcbiAgfVxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB0aGVuIEVycm9yLm5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgXCJpbml0XCIgbjtcbiAge1xuICAgIGxlbmd0aCA9IG47XG4gICAgYXJyID0gQXJyYXkuaW5pdCBuIChmdW4gaSAtPiBFbGVtIHt2ID0gZiBpfSk7XG4gIH1cblxubGV0IGdldCBhIGkgPVxuICAoKiBUaGlzIGltcGxlbWVudGF0aW9uIHdpbGwgcHJvcGFnYXRlIGFuIFtJbnZhbGlkX2FyZ3VtZW50XSBleGNlcHRpb25cbiAgICAgZnJvbSBhcnJheSBsb29rdXAgaWYgdGhlIGluZGV4IGlzIG91dCBvZiB0aGUgYmFja2luZyBhcnJheSxcbiAgICAgaW5zdGVhZCBvZiB1c2luZyBvdXIgb3duIFtFcnJvci5pbmRleF9vdXRfb2ZfYm91bmRzXS4gVGhpcyBpc1xuICAgICBhbGxvd2VkIGJ5IG91ciBzcGVjaWZpY2F0aW9uLCBhbmQgbW9yZSBlZmZpY2llbnQgLS0gbm8gbmVlZCB0b1xuICAgICBjaGVjayB0aGF0IFtsZW5ndGggYSA8PSBjYXBhY2l0eSBhXSBpbiB0aGUgZmFzdCBwYXRoLiAqKVxuICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICB8IEVsZW0gcyAtPiBzLnZcbiAgfCBFbXB0eSAtPlxuICAgICAgRXJyb3IudW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IFwiZ2V0XCIgfmkgfmxlbmd0aDphLmxlbmd0aFxuXG5sZXQgc2V0IGEgaSB4ID1cbiAgKCogU2VlIHshZ2V0fSBjb21tZW50IG9uIHRoZSB1c2Ugb2YgY2hlY2tlZCBhcnJheVxuICAgICBhY2Nlc3Mgd2l0aG91dCBvdXIgb3duIGJvdW5kIGNoZWNraW5nLiAqKVxuICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICB8IEVsZW0gcyAtPiBzLnYgPC0geFxuICB8IEVtcHR5IC0+XG4gICAgICBFcnJvci51bmV4cGVjdGVkX2VtcHR5X2VsZW1lbnQgXCJzZXRcIiB+aSB+bGVuZ3RoOmEubGVuZ3RoXG5cbmxldCBsZW5ndGggYSA9IGEubGVuZ3RoXG5cbmxldCBpc19lbXB0eSBhID0gKGEubGVuZ3RoID0gMClcblxubGV0IGNvcHkge2xlbmd0aDsgYXJyfSA9XG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiB1c2UgW2xlbmd0aF0gYXMgdGhlIG5ldyBjYXBhY2l0eSB0byBtYWtlXG4gICAgIHRoaXMgYW4gTyhsZW5ndGgpIG9wZXJhdGlvbi4gKilcbiAge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgICAgRWxlbSB7dn1cbiAgICApO1xuICB9XG5cbmxldCBnZXRfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiBFcnJvci5lbXB0eV9keW5hcnJheSBcImdldF9sYXN0XCI7XG4gICgqIFdlIGtub3cgW2xlbmd0aCA+IDBdLiAqKVxuICB1bnNhZmVfZ2V0IGFyciB+aToobGVuZ3RoIC0gMSkgfmxlbmd0aFxuXG5sZXQgZmluZF9sYXN0IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gICgqIFdlIGtub3cgW2xlbmd0aCA8PSBjYXBhY2l0eSBhXS4gKilcbiAgaWYgbGVuZ3RoID0gMCB0aGVuIE5vbmVcbiAgZWxzZVxuICAgICgqIFdlIGtub3cgW2xlbmd0aCA+IDBdLiAqKVxuICAgIFNvbWUgKHVuc2FmZV9nZXQgYXJyIH5pOihsZW5ndGggLSAxKSB+bGVuZ3RoKVxuXG4oKiogezE6cmVtb3ZpbmcgUmVtb3ZpbmcgZWxlbWVudHN9ICopXG5cbmxldCBwb3BfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBsYXN0ID0gbGVuZ3RoIC0gMSBpblxuICAoKiBXZSBrbm93IFtsZW5ndGggPiAwXSBzbyBbbGFzdCA+PSAwXS4gKilcbiAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCBhcnIgbGFzdCB3aXRoXG4gIHwgRW1wdHkgLT5cbiAgICAgIEVycm9yLm1pc3NpbmdfZWxlbWVudCB+aTpsYXN0IH5sZW5ndGhcbiAgfCBFbGVtIHMgLT5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYXJyIGxhc3QgRW1wdHk7XG4gICAgICBhLmxlbmd0aCA8LSBsYXN0O1xuICAgICAgcy52XG5cbmxldCBwb3BfbGFzdF9vcHQgYSA9XG4gIG1hdGNoIHBvcF9sYXN0IGEgd2l0aFxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICB8IHggLT4gU29tZSB4XG5cbmxldCByZW1vdmVfbGFzdCBhID1cbiAgbGV0IGxhc3QgPSBsZW5ndGggYSAtIDEgaW5cbiAgaWYgbGFzdCA+PSAwIHRoZW4gYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsYXN0O1xuICAgIGEuYXJyLihsYXN0KSA8LSBFbXB0eTtcbiAgZW5kXG5cbmxldCB0cnVuY2F0ZSBhIG4gPVxuICBpZiBuIDwgMCB0aGVuIEVycm9yLm5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgXCJ0cnVuY2F0ZVwiIG47XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBpZiBsZW5ndGggPD0gbiB0aGVuICgpXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBuO1xuICAgIEFycmF5LmZpbGwgYXJyIG4gKGxlbmd0aCAtIG4pIEVtcHR5O1xuICBlbmRcblxubGV0IGNsZWFyIGEgPSB0cnVuY2F0ZSBhIDBcblxuXG4oKiogezE6Y2FwYWNpdHkgQmFja2luZyBhcnJheSBhbmQgY2FwYWNpdHl9ICopXG5cbmxldCBjYXBhY2l0eSBhID0gQXJyYXkubGVuZ3RoIGEuYXJyXG5cbmxldCBuZXh0X2NhcGFjaXR5IG4gPVxuICBsZXQgbicgPVxuICAgICgqIEZvciBsYXJnZSB2YWx1ZXMgb2Ygbiwgd2UgdXNlIDEuNSBhcyBvdXIgZ3Jvd3RoIGZhY3Rvci5cblxuICAgICAgIEZvciBzbWFsbGVyIHZhbHVlcyBvZiBuLCB3ZSBncm93IG1vcmUgYWdncmVzc2l2ZWx5IHRvIGF2b2lkXG4gICAgICAgcmVhbGxvY2F0aW5nIHRvbyBtdWNoIHdoZW4gYWNjdW11bGF0aW5nIGVsZW1lbnRzIGludG8gYW4gZW1wdHlcbiAgICAgICBhcnJheS5cblxuICAgICAgIFRoZSBjb25zdGFudHMgXCI1MTIgd29yZHNcIiBhbmQgXCI4IHdvcmRzXCIgYmVsb3cgYXJlIHRha2VuIGZyb21cbiAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mb2xseS9ibG9iL1xuICAgICAgICAgICBjMDZjMGY0MWQ5MWRhZjFhNmE1ZjNmYzFjZDQ2NTMwMmFjMjYwNDU5L2ZvbGx5L0ZCVmVjdG9yLmgjTDExMjgtTDExNTdcbiAgICAqKVxuICAgIGlmIG4gPD0gNTEyIHRoZW4gbiAqIDJcbiAgICBlbHNlIG4gKyBuIC8gMlxuICBpblxuICAoKiBqdW1wIGRpcmVjdGx5IGZyb20gMCB0byA4ICopXG4gIG1pbiAobWF4IDggbicpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBlbnN1cmVfY2FwYWNpdHkgYSBjYXBhY2l0eV9yZXF1ZXN0ID1cbiAgbGV0IGFyciA9IGEuYXJyIGluXG4gIGxldCBjdXJfY2FwYWNpdHkgPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGlmIGNhcGFjaXR5X3JlcXVlc3QgPCAwIHRoZW5cbiAgICBFcnJvci5uZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgXCJlbnN1cmVfY2FwYWNpdHlcIiBjYXBhY2l0eV9yZXF1ZXN0XG4gIGVsc2UgaWYgY3VyX2NhcGFjaXR5ID49IGNhcGFjaXR5X3JlcXVlc3QgdGhlblxuICAgICgqIFRoaXMgaXMgdGhlIGZhc3QgcGF0aCwgdGhlIGNvZGUgdXAgdG8gaGVyZSBtdXN0IGRvIGFzIGxpdHRsZSBhc1xuICAgICAgIHBvc3NpYmxlLiAoVGhpcyBpcyB3aHkgd2UgZG9uJ3QgdXNlIFtsZXQge2FycjsgbGVuZ3RofSA9IGFdIGFzXG4gICAgICAgdXN1YWwsIHRoZSBsZW5ndGggaXMgbm90IG5lZWRlZCBpbiB0aGUgZmFzdCBwYXRoLikqKVxuICAgICgpXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBjYXBhY2l0eV9yZXF1ZXN0ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlblxuICAgICAgRXJyb3IucmVxdWVzdGVkX2xlbmd0aF9vdXRfb2ZfYm91bmRzIFwiZW5zdXJlX2NhcGFjaXR5XCIgY2FwYWNpdHlfcmVxdWVzdDtcbiAgICBsZXQgbmV3X2NhcGFjaXR5ID1cbiAgICAgICgqIFdlIHVzZSBlaXRoZXIgdGhlIG5leHQgZXhwb25lbnRpYWwtZ3Jvd3RoIHN0cmF0ZWd5LFxuICAgICAgICAgb3IgdGhlIHJlcXVlc3RlZCBzdHJhdGVneSwgd2hpY2hldmVyIGlzIGJpZ2dlci5cblxuICAgICAgICAgQ29tcGFyZWQgdG8gb25seSB1c2luZyB0aGUgZXhwb25lbnRpYWwtZ3Jvd3RoIHN0cmF0ZWd5LCB0aGlzXG4gICAgICAgICBsZXRzIHVzIHVzZSBsZXNzIG1lbW9yeSBieSBhdm9pZGluZyBhbnkgb3ZlcnNob290IHdoZW5ldmVyXG4gICAgICAgICB0aGUgY2FwYWNpdHkgcmVxdWVzdCBpcyBub3RpY2VhYmx5IGxhcmdlciB0aGFuIHRoZSBjdXJyZW50XG4gICAgICAgICBjYXBhY2l0eS5cblxuICAgICAgICAgQ29tcGFyZWQgdG8gb25seSB1c2luZyB0aGUgcmVxdWVzdGVkIGNhcGFjaXR5LCB0aGlzIGF2b2lkc1xuICAgICAgICAgbG9zaW5nIHRoZSBhbW9ydGl6ZWQgZ3VhcmFudGVlOiB3ZSBhbGxvY2F0ZWQgXCJleHBvbmVudGlhbGx5XG4gICAgICAgICBvciBtb3JlXCIsIHNvIHRoZSBhbW9ydGl6YXRpb24gaG9sZHMuIEluIHBhcnRpY3VsYXIsIG5vdGljZVxuICAgICAgICAgdGhhdCByZXBlYXRlZCBjYWxscyB0byBbZW5zdXJlX2NhcGFjaXR5IGEgKGxlbmd0aCBhICsgMSldXG4gICAgICAgICB3aWxsIGhhdmUgYW1vcnRpemVkLWxpbmVhciByYXRoZXIgdGhhbiBxdWFkcmF0aWMgY29tcGxleGl0eS5cbiAgICAgICopXG4gICAgICBtYXggKG5leHRfY2FwYWNpdHkgY3VyX2NhcGFjaXR5KSBjYXBhY2l0eV9yZXF1ZXN0IGluXG4gICAgbGV0IG5ld19hcnIgPSBBcnJheS5tYWtlIG5ld19jYXBhY2l0eSBFbXB0eSBpblxuICAgIEFycmF5LmJsaXQgYXJyIDAgbmV3X2FyciAwIGEubGVuZ3RoO1xuICAgIGEuYXJyIDwtIG5ld19hcnI7XG4gICAgKCogcG9zdGNvbmRpdGlvbjogKilcbiAgICBhc3NlcnQgKDAgPD0gY2FwYWNpdHlfcmVxdWVzdCk7XG4gICAgYXNzZXJ0IChjYXBhY2l0eV9yZXF1ZXN0IDw9IEFycmF5Lmxlbmd0aCBuZXdfYXJyKTtcbiAgZW5kXG5cbmxldCBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSBleHRyYV9jYXBhY2l0eV9yZXF1ZXN0ID1cbiAgZW5zdXJlX2NhcGFjaXR5IGEgKGxlbmd0aCBhICsgZXh0cmFfY2FwYWNpdHlfcmVxdWVzdClcblxubGV0IGZpdF9jYXBhY2l0eSBhID1cbiAgaWYgY2FwYWNpdHkgYSA9IGEubGVuZ3RoXG4gIHRoZW4gKClcbiAgZWxzZSBhLmFyciA8LSBBcnJheS5zdWIgYS5hcnIgMCBhLmxlbmd0aFxuXG5sZXQgc2V0X2NhcGFjaXR5IGEgbiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBFcnJvci5uZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgXCJzZXRfY2FwYWNpdHlcIiBuO1xuICBsZXQgYXJyID0gYS5hcnIgaW5cbiAgbGV0IGN1cl9jYXBhY2l0eSA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgaWYgbiA8IGN1cl9jYXBhY2l0eSB0aGVuIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbWluIGEubGVuZ3RoIG47XG4gICAgYS5hcnIgPC0gQXJyYXkuc3ViIGFyciAwIG47XG4gIGVuZFxuICBlbHNlIGlmIG4gPiBjdXJfY2FwYWNpdHkgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYXJyID0gQXJyYXkubWFrZSBuIEVtcHR5IGluXG4gICAgQXJyYXkuYmxpdCBhcnIgMCBuZXdfYXJyIDAgYS5sZW5ndGg7XG4gICAgYS5hcnIgPC0gbmV3X2FycjtcbiAgZW5kXG5cbmxldCByZXNldCBhID1cbiAgYS5sZW5ndGggPC0gMDtcbiAgYS5hcnIgPC0gW3x8XVxuXG4oKiogezE6YWRkaW5nIEFkZGluZyBlbGVtZW50c30gKilcblxuKCogV2UgY2hvc2UgYW4gaW1wbGVtZW50YXRpb24gb2YgW2FkZF9sYXN0IGEgeF0gdGhhdCBiZWhhdmVzIGNvcnJlY3RseVxuICAgaW4gcHJlc2VuY2Ugb2YgYXN5bmNocm9ub3VzIC8gcmUtZW50cmFudCBjb2RlIGV4ZWN1dGlvbiBhcm91bmRcbiAgIGFsbG9jYXRpb25zIGFuZCBwb2xsIHBvaW50czogaWYgYW5vdGhlciB0aHJlYWQgb3IgYSBjYWxsYmFjayBnZXRzXG4gICBleGVjdXRlZCBvbiBhbGxvY2F0aW9uLCB3ZSBhZGQgdGhlIGVsZW1lbnQgYXQgdGhlIG5ldyBlbmQgb2YgdGhlXG4gICBkeW5hbWljIGFycmF5LlxuXG4gICAoV2UgZG8gbm90IGdpdmUgdGhlIHNhbWUgZ3VhcmFudGVlcyBpbiBwcmVzZW5jZSBvZiBjb25jdXJyZW50XG4gICBwYXJhbGxlbCB1cGRhdGVzLCB3aGljaCBhcmUgbXVjaCBtb3JlIGV4cGVuc2l2ZSB0byBwcm90ZWN0XG4gICBhZ2FpbnN0LilcbiopXG5cbigqIFthZGRfbGFzdF9pZl9yb29tIGEgZWxlbV0gb25seSB3cml0ZXMgdGhlIHNsb3QgaWYgdGhlcmUgaXMgcm9vbSwgYW5kXG4gICByZXR1cm5zIFtmYWxzZV0gb3RoZXJ3aXNlLiAqKVxubGV0W0BpbmxpbmVdIGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gICgqIHdlIGtub3cgWzAgPD0gbGVuZ3RoXSAqKVxuICBpZiBsZW5ndGggPj0gQXJyYXkubGVuZ3RoIGFyciB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICAoKiB3ZSBrbm93IFswIDw9IGxlbmd0aCA8IEFycmF5Lmxlbmd0aCBhcnJdICopXG4gICAgYS5sZW5ndGggPC0gbGVuZ3RoICsgMTtcbiAgICBBcnJheS51bnNhZmVfc2V0IGFyciBsZW5ndGggZWxlbTtcbiAgICB0cnVlXG4gIGVuZFxuXG5sZXQgYWRkX2xhc3QgYSB4ID1cbiAgbGV0IGVsZW0gPSBFbGVtIHt2ID0geH0gaW5cbiAgaWYgYWRkX2xhc3RfaWZfcm9vbSBhIGVsZW0gdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hZGQgYSBlbGVtID1cbiAgICAgIGVuc3VyZV9leHRyYV9jYXBhY2l0eSBhIDE7XG4gICAgICBpZiBub3QgKGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtKVxuICAgICAgdGhlbiBncm93X2FuZF9hZGQgYSBlbGVtXG4gICAgaW4gZ3Jvd19hbmRfYWRkIGEgZWxlbVxuICBlbmRcblxubGV0IHJlYyBhcHBlbmRfbGlzdCBhIGxpID1cbiAgbWF0Y2ggbGkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgeCA6OiB4cyAtPiBhZGRfbGFzdCBhIHg7IGFwcGVuZF9saXN0IGEgeHNcblxubGV0IGFwcGVuZF9pdGVyIGEgaXRlciBiID1cbiAgaXRlciAoZnVuIHggLT4gYWRkX2xhc3QgYSB4KSBiXG5cbmxldCBhcHBlbmRfc2VxIGEgc2VxID1cbiAgU2VxLml0ZXIgKGZ1biB4IC0+IGFkZF9sYXN0IGEgeCkgc2VxXG5cbigqIGFwcGVuZF9hcnJheTogc2FtZSBbLi4uX2lmX3Jvb21dIGFuZCBsb29wIGxvZ2ljIGFzIFthZGRfbGFzdF0uICopXG5cbmxldCBhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIgPVxuICBsZXQge2FycjsgbGVuZ3RoID0gbGVuZ3RoX2F9ID0gYSBpblxuICBsZXQgbGVuZ3RoX2IgPSBBcnJheS5sZW5ndGggYiBpblxuICBpZiBsZW5ndGhfYSArIGxlbmd0aF9iID4gQXJyYXkubGVuZ3RoIGFyciB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsZW5ndGhfYSArIGxlbmd0aF9iO1xuICAgICgqIE5vdGU6IHdlIGludGVudGlvbmFsbHkgdXBkYXRlIHRoZSBsZW5ndGggKmJlZm9yZSogZmlsbGluZyB0aGVcbiAgICAgICBlbGVtZW50cy4gVGhpcyBcInJlc2VydmUgYmVmb3JlIGZpbGxcIiBhcHByb2FjaCBwcm92aWRlcyBiZXR0ZXJcbiAgICAgICBiZWhhdmlvciB0aGFuIFwiZmlsbCB0aGVuIG5vdGlmeVwiIGluIHByZXNlbmNlIG9mIHJlZW50cmFudFxuICAgICAgIG1vZGlmaWNhdGlvbnMgKHdoaWNoIG1heSBvY2N1ciBiZWxvdywgb24gYSBwb2xsIHBvaW50IGluIHRoZSBsb29wIG9yXG4gICAgICAgdGhlIFtFbGVtXSBhbGxvY2F0aW9uKTpcblxuICAgICAgIC0gSWYgc29tZSBjb2RlIGFzeW5jaHJvbm91c2x5IGFkZHMgbmV3IGVsZW1lbnRzIGFmdGVyIHRoaXNcbiAgICAgICAgIGxlbmd0aCB1cGRhdGUsIHRoZXkgd2lsbCBnbyBhZnRlciB0aGUgc3BhY2Ugd2UganVzdCByZXNlcnZlZCxcbiAgICAgICAgIGFuZCBpbiBwYXJ0aWN1bGFyIG5vIGFkZGl0aW9uIHdpbGwgYmUgbG9zdC4gSWYgaW5zdGVhZCB3ZVxuICAgICAgICAgdXBkYXRlZCB0aGUgbGVuZ3RoIGFmdGVyIHRoZSBsb29wLCBhbnkgYXN5bmNocm9ub3VzIGFkZGl0aW9uXG4gICAgICAgICBkdXJpbmcgdGhlIGxvb3AgY291bGQgYmUgZXJhc2VkIG9yIGVyYXNlIG9uZSBvZiBvdXIgYWRkaXRpb25zLFxuICAgICAgICAgc2lsZW50bHksIHdpdGhvdXQgd2FybmluZyB0aGUgdXNlci5cblxuICAgICAgIC0gSWYgc29tZSBjb2RlIGFzeW5jaHJvbm91c2x5IGl0ZXJhdGVzIG9uIHRoZSBkeW5hcnJheSwgb3JcbiAgICAgICAgIHJlbW92ZXMgZWxlbWVudHMsIG9yIG90aGVyd2lzZSB0cmllcyB0byBhY2Nlc3MgdGhlXG4gICAgICAgICByZXNlcnZlZC1idXQtbm90LXlldC1maWxsZWQgc3BhY2UsIGl0IHdpbGwgZ2V0IGEgY2xlYW4gXCJtaXNzaW5nXG4gICAgICAgICBlbGVtZW50XCIgZXJyb3IuIFRoaXMgaXMgd29yc2UgdGhhbiB3aXRoIHRoZSBmaWxsLXRoZW4tbm90aWZ5XG4gICAgICAgICBhcHByb2FjaCB3aGVyZSB0aGUgbmV3IGVsZW1lbnRzIHdvdWxkIG9ubHkgYmVjb21lIHZpc2libGVcbiAgICAgICAgICh0byBpdGVyYXRvcnMsIGZvciByZW1vdmFsLCBldGMuKSBhbGx0b2dldGhlciBhdCB0aGUgZW5kIG9mXG4gICAgICAgICBsb29wLlxuXG4gICAgICAgVG8gc3VtbWFyaXNlLCBcInJlc2VydmUgYmVmb3JlIGZpbGxcIiBpcyBiZXR0ZXIgb24gYWRkLWFkZCByYWNlcyxcbiAgICAgICBhbmQgXCJmaWxsIHRoZW4gbm90aWZ5XCIgaXMgYmV0dGVyIG9uIGFkZC1yZW1vdmUgb3IgYWRkLWl0ZXJhdGVcbiAgICAgICByYWNlcy4gQnV0IHRoZSBrZXkgZGlmZmVyZW5jZSBpcyB0aGUgZmFpbHVyZSBtb2RlOlxuICAgICAgIHJlc2VydmUtYmVmb3JlIGZhaWxzIG9uIGFkZC1yZW1vdmUgb3IgYWRkLWl0ZXJhdGUgcmFjZXMgd2l0aFxuICAgICAgIGEgY2xlYW4gZXJyb3IsIHdoaWxlIG5vdGlmeS1hZnRlciBmYWlscyBvbiBhZGQtYWRkIHJhY2VzIHdpdGhcbiAgICAgICBzaWxlbnRseSBkaXNhcHBlYXJpbmcgZGF0YS4gKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoX2IgLSAxIGRvXG4gICAgICBsZXQgeCA9IEFycmF5LnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFyciAobGVuZ3RoX2EgKyBpKSAoRWxlbSB7diA9IHh9KVxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICBlbmRcblxubGV0IGFwcGVuZF9hcnJheSBhIGIgPVxuICBpZiBhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIgdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hcHBlbmQgYSBiID1cbiAgICAgIGVuc3VyZV9leHRyYV9jYXBhY2l0eSBhIChBcnJheS5sZW5ndGggYik7XG4gICAgICBpZiBub3QgKGFwcGVuZF9hcnJheV9pZl9yb29tIGEgYilcbiAgICAgIHRoZW4gZ3Jvd19hbmRfYXBwZW5kIGEgYlxuICAgIGluIGdyb3dfYW5kX2FwcGVuZCBhIGIgIGVuZFxuXG4oKiBhcHBlbmQ6IHNhbWUgWy4uLl9pZl9yb29tXSBhbmQgbG9vcCBsb2dpYyBhcyBbYWRkX2xhc3RdLFxuICAgc2FtZSByZXNlcnZlLWJlZm9yZS1maWxsIGxvZ2ljIGFzIFthcHBlbmRfYXJyYXldLiAqKVxuXG4oKiBJdCBpcyBhIHByb2dyYW1taW5nIGVycm9yIHRvIG11dGF0ZSB0aGUgbGVuZ3RoIG9mIFtiXSBkdXJpbmcgYSBjYWxsXG4gICB0byBbYXBwZW5kIGEgYl0uIFRvIGRldGVjdCB0aGlzIG1pc3Rha2Ugd2Uga2VlcCB0cmFjayBvZiB0aGUgbGVuZ3RoXG4gICBvZiBbYl0gdGhyb3VnaG91dCB0aGUgY29tcHV0YXRpb24gYW5kIGNoZWNrIGl0IHRoYXQgZG9lcyBub3RcbiAgIGNoYW5nZS5cbiopXG5sZXQgYXBwZW5kX2lmX3Jvb20gYSBiIH5sZW5ndGhfYiA9XG4gIGxldCB7YXJyID0gYXJyX2E7IGxlbmd0aCA9IGxlbmd0aF9hfSA9IGEgaW5cbiAgaWYgbGVuZ3RoX2EgKyBsZW5ndGhfYiA+IEFycmF5Lmxlbmd0aCBhcnJfYSB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsZW5ndGhfYSArIGxlbmd0aF9iO1xuICAgIGxldCBhcnJfYiA9IGIuYXJyIGluXG4gICAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aF9iIGFycl9iO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGhfYiAtIDEgZG9cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhcnJfYiB+aSB+bGVuZ3RoOmxlbmd0aF9iIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFycl9hIChsZW5ndGhfYSArIGkpIChFbGVtIHt2ID0geH0pXG4gICAgZG9uZTtcbiAgICBjaGVja19zYW1lX2xlbmd0aCBcImFwcGVuZFwiIGIgfmxlbmd0aDpsZW5ndGhfYjtcbiAgICB0cnVlXG4gIGVuZFxuXG5sZXQgYXBwZW5kIGEgYiA9XG4gIGxldCBsZW5ndGhfYiA9IGxlbmd0aCBiIGluXG4gIGlmIGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IgdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hcHBlbmQgYSBiIH5sZW5ndGhfYiA9XG4gICAgICBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSBsZW5ndGhfYjtcbiAgICAgICgqIEVsaWRpbmcgdGhlIFtjaGVja19zYW1lX2xlbmd0aF0gY2FsbCBiZWxvdyB3b3VsZCBiZSB3cm9uZyBpblxuICAgICAgICAgdGhlIGNhc2Ugd2hlcmUgW2FdIGFuZCBbYl0gYXJlIGFsaWFzZXMgb2YgZWFjaCBvdGhlciwgd2VcbiAgICAgICAgIHdvdWxkIGdldCBpbnRvIGFuIGluZmluaXRlIGxvb3AgaW5zdGVhZCBvZiBmYWlsaW5nLlxuXG4gICAgICAgICBXZSBjb3VsZCBwdXNoIHRoZSBjYWxsIHRvIFthcHBlbmRfaWZfcm9vbV0gaXRzZWxmLCBidXQgd2VcbiAgICAgICAgIHByZWZlciB0byBrZWVwIGl0IGluIHRoZSBzbG93IHBhdGguICAqKVxuICAgICAgY2hlY2tfc2FtZV9sZW5ndGggXCJhcHBlbmRcIiBiIH5sZW5ndGg6bGVuZ3RoX2I7XG4gICAgICBpZiBub3QgKGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IpXG4gICAgICB0aGVuIGdyb3dfYW5kX2FwcGVuZCBhIGIgfmxlbmd0aF9iXG4gICAgaW4gZ3Jvd19hbmRfYXBwZW5kIGEgYiB+bGVuZ3RoX2JcbiAgZW5kXG5cblxuXG4oKiogezE6aXRlcmF0aW9uIEl0ZXJhdGlvbn0gKilcblxuKCogVGhlIGltcGxlbWVudGF0aW9uIGNob2ljZSB0aGF0IHdlIG1hZGUgZm9yIGl0ZXJhdG9ycyBpcyB0aGUgb25lXG4gICB0aGF0IG1heGltaXplcyBlZmZpY2llbmN5IGJ5IGF2b2lkaW5nIHJlcGVhdGVkIGJvdW5kIGNoZWNraW5nOiB3ZVxuICAgY2hlY2sgdGhlIGxlbmd0aCBvZiB0aGUgZHluYW1pYyBhcnJheSBvbmNlIGF0IHRoZSBiZWdpbm5pbmcsIGFuZFxuICAgdGhlbiBvbmx5IG9wZXJhdGUgb24gdGhhdCBwb3J0aW9uIG9mIHRoZSBkeW5hcnJheSwgaWdub3JpbmdcbiAgIGVsZW1lbnRzIGFkZGVkIGluIHRoZSBtZWFudGltZS5cblxuICAgVGhlIHNwZWNpZmljYXRpb24gc3RhdGVzIHRoYXQgaXQgaXMgYSBwcm9ncmFtbWluZyBlcnJvciB0byBtdXRhdGVcbiAgIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IGR1cmluZyBpdGVyYXRpb24uIFdlIGNoZWNrIGZvciB0aGlzIGFuZFxuICAgcmFpc2UgYW4gZXJyb3Igb24gc2l6ZSBjaGFuZ2UuXG4gICBOb3RlIHRoYXQgd2UgbWF5IHN0aWxsIG1pc3Mgc29tZSB0cmFuc2llbnQgc3RhdGUgY2hhbmdlcyB0aGF0IGNhbmNlbFxuICAgZWFjaCBvdGhlciBhbmQgbGVhdmUgdGhlIGxlbmd0aCB1bmNoYW5nZWQgYXQgdGhlIG5leHQgY2hlY2suXG4qKVxuXG5sZXQgaXRlcl8gZiBrIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgKCogW2NoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyXSBpcyB1c2VkIGZvciBtZW1vcnkgc2FmZXR5LCBpdFxuICAgICBndWFyYW50ZWVzIHRoYXQgdGhlIGJhY2tpbmcgYXJyYXkgaGFzIGNhcGFjaXR5IGF0IGxlYXN0IFtsZW5ndGhdLFxuICAgICBhbGxvd2luZyB1bnNhZmUgYXJyYXkgYWNjZXNzLlxuXG4gICAgIFtjaGVja19zYW1lX2xlbmd0aF0gaXMgdXNlZCBmb3IgY29ycmVjdG5lc3MsIGl0IGxldHMgdGhlIGZ1bmN0aW9uXG4gICAgIGZhaWwgbW9yZSBvZnRlbiBpZiB3ZSBkaXNjb3ZlciB0aGUgcHJvZ3JhbW1pbmcgZXJyb3Igb2YgbXV0YXRpbmdcbiAgICAgdGhlIGxlbmd0aCBkdXJpbmcgaXRlcmF0aW9uLlxuXG4gICAgIFdlIGNvdWxkLCBuYWl2ZWx5LCBjYWxsIFtjaGVja19zYW1lX2xlbmd0aF0gYXQgZWFjaCBpdGVyYXRpb24gb2ZcbiAgICAgdGhlIGxvb3AgKGJlZm9yZSBvciBhZnRlciwgb3IgYm90aCkuIEhvd2V2ZXIsIG5vdGljZSB0aGF0IHRoaXMgaXNcbiAgICAgbm90IG5lY2Vzc2FyeSB0byBkZXRlY3QgdGhlIHJlbW92YWwgb2YgZWxlbWVudHMgZnJvbSBbYV06IGlmXG4gICAgIGVsZW1lbnRzIGhhdmUgYmVlbiByZW1vdmVkIGJ5IHRoZSB0aW1lIHRoZSBbZm9yXSBsb29wIHJlYWNoZXNcbiAgICAgdGhlbSwgdGhlbiBbdW5zYWZlX2dldF0gd2lsbCBpdHNlbGYgZmFpbCB3aXRoIGFuIFtJbnZhbGlkX2FyZ3VtZW50XVxuICAgICBleGNlcHRpb24uIFdlIG9ubHkgbmVlZCB0byBkZXRlY3QgdGhlIGFkZGl0aW9uIG9mIG5ldyBlbGVtZW50cyB0b1xuICAgICBbYV0gZHVyaW5nIGl0ZXJhdGlvbiwgYW5kIGZvciB0aGlzIGl0IGlzIGVub3VnaCB0byBjYWxsXG4gICAgIFtjaGVja19zYW1lX2xlbmd0aF0gb25jZSBhdCB0aGUgZW5kLlxuXG4gICAgIENhbGxpbmcgW2NoZWNrX3NhbWVfbGVuZ3RoXSBtb3JlIG9mdGVuIGNvdWxkIGNhdGNoIG1vcmVcbiAgICAgcHJvZ3JhbW1pbmcgZXJyb3JzLCBidXQgdGhlIG9ubHkgZXJyb3JzIHRoYXQgd2UgbWlzcyB3aXRoIHRoaXNcbiAgICAgb3B0aW1pemF0aW9uIGFyZSB0aG9zZSB0aGF0IGtlZXAgdGhlIGFycmF5IHNpemUgY29uc3RhbnQgLS1cbiAgICAgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgdGhhdCBjYW5jZWwgZWFjaCBvdGhlci4gV2UgY29uc2lkZXIgdGhpc1xuICAgICBhbiBhY2NlcHRhYmxlIHRyYWRlb2ZmLlxuICAqKVxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBrICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKTtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggZiBhIH5sZW5ndGhcblxubGV0IGl0ZXIgayBhID1cbiAgaXRlcl8gXCJpdGVyXCIgayBhXG5cbmxldCBpdGVyaSBrIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgayBpICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKTtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJpdGVyaVwiIGEgfmxlbmd0aFxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgICBFbGVtIHt2ID0gZiAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCl9KTtcbiAgfSBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcIm1hcFwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVzID0ge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICAgIEVsZW0ge3YgPSBmIGkgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpfSk7XG4gIH0gaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJtYXBpXCIgYSB+bGVuZ3RoO1xuICByZXNcblxubGV0IGZvbGRfbGVmdCBmIGFjYyBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICByIDo9IGYgIXIgdjtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJmb2xkX2xlZnRcIiBhIH5sZW5ndGg7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSBhY2MgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByID0gcmVmIGFjYyBpblxuICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICByIDo9IGYgdiAhcjtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJmb2xkX3JpZ2h0XCIgYSB+bGVuZ3RoO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBsb29wIHAgYXJyIGkgbGVuZ3RoID1cbiAgICBpZiBpID0gbGVuZ3RoIHRoZW4gZmFsc2VcbiAgICBlbHNlXG4gICAgICBwICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKVxuICAgICAgfHwgbG9vcCBwIGFyciAoaSArIDEpIGxlbmd0aFxuICBpblxuICBsZXQgcmVzID0gbG9vcCBwIGFyciAwIGxlbmd0aCBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcImV4aXN0c1wiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBsb29wIHAgYXJyIGkgbGVuZ3RoID1cbiAgICBpZiBpID0gbGVuZ3RoIHRoZW4gdHJ1ZVxuICAgIGVsc2VcbiAgICAgIHAgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpXG4gICAgICAmJiBsb29wIHAgYXJyIChpICsgMSkgbGVuZ3RoXG4gIGluXG4gIGxldCByZXMgPSBsb29wIHAgYXJyIDAgbGVuZ3RoIGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZm9yX2FsbFwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmaWx0ZXIgZiBhID1cbiAgbGV0IGIgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcl8gXCJmaWx0ZXJcIiAoZnVuIHggLT4gaWYgZiB4IHRoZW4gYWRkX2xhc3QgYiB4KSBhO1xuICBiXG5cbmxldCBmaWx0ZXJfbWFwIGYgYSA9XG4gIGxldCBiID0gY3JlYXRlICgpIGluXG4gIGl0ZXJfIFwiZmlsdGVyX21hcFwiIChmdW4geCAtPlxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHkgLT4gYWRkX2xhc3QgYiB5XG4gICkgYTtcbiAgYlxuXG5cbigqKiB7MTpjb252ZXJzaW9ucyBDb252ZXJzaW9ucyB0byBvdGhlciBkYXRhIHN0cnVjdHVyZXN9ICopXG5cbigqIFRoZSBlYWdlciBbdG9fKl0gY29udmVyc2lvbiBmdW5jdGlvbnMgYmVoYXZlIHNpbWlsYXJseSB0byBpdGVyYXRvcnNcbiAgIGluIHByZXNlbmNlIG9mIHVwZGF0ZXMgZHVyaW5nIGNvbXB1dGF0aW9uLiBUaGUgWypfcmVlbnRyYW50XVxuICAgZnVuY3Rpb25zIG9iZXkgdGhlaXIgbW9yZSBwZXJtaXNzaXZlIHNwZWNpZmljYXRpb24sIHdoaWNoIHRvbGVyYXRlc1xuICAgYW55IGNvbmN1cnJlbnQgdXBkYXRlLiAqKVxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggYSBpblxuICB7XG4gICAgbGVuZ3RoO1xuICAgIGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPiBFbGVtIHt2ID0gQXJyYXkudW5zYWZlX2dldCBhIGl9KTtcbiAgfVxuXG5sZXQgdG9fYXJyYXkgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPlxuICAgIHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpXG4gIGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fYXJyYXlcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgb2ZfbGlzdCBsaSA9XG4gIGxldCBhID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciAoZnVuIHggLT4gYWRkX2xhc3QgYSB4KSBsaTtcbiAgYVxuXG5sZXQgdG9fbGlzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgbCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBsIDo9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggOjogIWxcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19saXN0XCIgYSB+bGVuZ3RoO1xuICAhbFxuXG5sZXQgb2Zfc2VxIHNlcSA9XG4gIGxldCBpbml0ID0gY3JlYXRlKCkgaW5cbiAgYXBwZW5kX3NlcSBpbml0IHNlcTtcbiAgaW5pdFxuXG5sZXQgdG9fc2VxIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBjaGVja19zYW1lX2xlbmd0aCBcInRvX3NlcVwiIGEgfmxlbmd0aDtcbiAgICBpZiBpID49IGxlbmd0aCB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgKyAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcV9yZWVudHJhbnQgYSA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBpZiBpID49IGxlbmd0aCBhIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSArIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxX3JldiBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19zZXFfcmV2XCIgYSB+bGVuZ3RoO1xuICAgIGlmIGkgPCAwIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSAtIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggKGxlbmd0aCAtIDEpXG5cbmxldCB0b19zZXFfcmV2X3JlZW50cmFudCBhID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1biAoKSAtPlxuICAgIGlmIGkgPCAwIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgaWYgaSA+PSBsZW5ndGggYSB0aGVuXG4gICAgICAoKiBJZiBzb21lIGVsZW1lbnRzIGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSBtZWFudGltZSwgd2Ugc2tpcFxuICAgICAgICAgdGhvc2UgZWxlbWVudHMgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5ldyBlbmQgb2YgdGhlIGFycmF5LiAqKVxuICAgICAgYXV4IChsZW5ndGggYSAtIDEpICgpXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgPSBnZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAodiwgYXV4IChpIC0gMSkpXG4gICAgZW5kXG4gIGluXG4gIGF1eCAobGVuZ3RoIGEgLSAxKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLnN0YXJ0c193aXRoIH5wcmVmaXg6XCItXCIgcyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbigqIERpc2FibGUgd2FybmluZyAzNzogdmFsdWVzIGFyZSBjb25zdHJ1Y3RlZCBpbiB0aGUgcnVudGltZSAqKVxudHlwZVtAd2FybmluZyBcIi0zN1wiXSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgIDogc3RyaW5nO1xuICAgICAgc3RhcnRfbG51bSA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gICAgICBlbmRfb2Zmc2V0IDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2Ygc3RhcnRfbG51bSAqKVxuICAgICAgZW5kX2xudW0gICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgOiBpbnQ7ICgqIFJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiBlbmRfbG51bSBsaW5lICopXG4gICAgICBpc19pbmxpbmUgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGxldCBsaW5lcyA9XG4gICAgICAgIGlmIGwuc3RhcnRfbG51bSA9IGwuZW5kX2xudW0gdGhlblxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiICVkXCIgbC5zdGFydF9sbnVtXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcInMgJWQtJWRcIiBsLnN0YXJ0X2xudW0gbC5lbmRfbG51bVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSVzLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsaW5lcyBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbiAgZW5kX2xpbmUgOiBpbnQ7XG4gIGVuZF9jb2wgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwuc3RhcnRfbG51bTtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9vZmZzZXQ7XG4gICAgICBlbmRfbGluZSAgICA9IGwuZW5kX2xudW07XG4gICAgICBlbmRfY29sICAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCBuZWdhdGUgcCB2ID0gbm90IChwIHYpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5X3JhaXNlZCBvZiBleG5cblxubGV0ICgpID0gUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBAQCBmdW5jdGlvblxufCBGaW5hbGx5X3JhaXNlZCBleG4gLT4gU29tZSAoXCJGdW4uRmluYWxseV9yYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bilcbnwgXyAtPiBOb25lXG5cbmxldCBwcm90ZWN0IH4oZmluYWxseSA6IHVuaXQgLT4gdW5pdCkgd29yayA9XG4gIGxldCBmaW5hbGx5X25vX2V4biAoKSA9XG4gICAgdHJ5IGZpbmFsbHkgKCkgd2l0aCBlIC0+XG4gICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgKEZpbmFsbHlfcmFpc2VkIGUpIGJ0XG4gIGluXG4gIG1hdGNoIHdvcmsgKCkgd2l0aFxuICB8IHJlc3VsdCAtPiBmaW5hbGx5X25vX2V4biAoKSA7IHJlc3VsdFxuICB8IGV4Y2VwdGlvbiB3b3JrX2V4biAtPlxuICAgICAgbGV0IHdvcmtfYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZmluYWxseV9ub19leG4gKCkgO1xuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2Ugd29ya19leG4gd29ya19idFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKYWNxdWVzLUhlbnJpIEpvdXJkYW4sIHByb2pldCBHYWxsaXVtLCBJTlJJQSBQYXJpcyAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICAqKVxuKCogICAgIGV0IGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXQgPSB7XG4gIG1pbm9yX3dvcmRzIDogZmxvYXQ7XG4gIHByb21vdGVkX3dvcmRzIDogZmxvYXQ7XG4gIG1ham9yX3dvcmRzIDogZmxvYXQ7XG4gIG1pbm9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBtYWpvcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgaGVhcF93b3JkcyA6IGludDtcbiAgaGVhcF9jaHVua3MgOiBpbnQ7XG4gIGxpdmVfd29yZHMgOiBpbnQ7XG4gIGxpdmVfYmxvY2tzIDogaW50O1xuICBmcmVlX3dvcmRzIDogaW50O1xuICBmcmVlX2Jsb2NrcyA6IGludDtcbiAgbGFyZ2VzdF9mcmVlIDogaW50O1xuICBmcmFnbWVudHMgOiBpbnQ7XG4gIGNvbXBhY3Rpb25zIDogaW50O1xuICB0b3BfaGVhcF93b3JkcyA6IGludDtcbiAgc3RhY2tfc2l6ZSA6IGludDtcbiAgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiBpbnQ7XG59XG5cbnR5cGUgY29udHJvbCA9IHtcbiAgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludDtcbiAgc3BhY2Vfb3ZlcmhlYWQgOiBpbnQ7XG4gIHZlcmJvc2UgOiBpbnQ7XG4gIG1heF9vdmVyaGVhZCA6IGludDtcbiAgc3RhY2tfbGltaXQgOiBpbnQ7XG4gIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcblxubGV0IGV2ZW50bG9nX3BhdXNlICgpID0gKClcbmxldCBldmVudGxvZ19yZXN1bWUgKCkgPSAoKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcHJpbnRfc3RhdCBjID1cbiAgbGV0IHN0ID0gc3RhdCAoKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1pbm9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJtYWpvcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJjb21wYWN0aW9uczogICAgICAgICAgICAlZFxcblwiIHN0LmNvbXBhY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6ICVkXFxuXCIgc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwxID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiUuMGZcIiBzdC5taW5vcl93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwibWlub3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWlub3Jfd29yZHM7XG4gIGZwcmludGYgYyBcInByb21vdGVkX3dvcmRzOiAlKi4wZlxcblwiIGwxIHN0LnByb21vdGVkX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJtYWpvcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5tYWpvcl93b3JkcztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMiA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlZFwiIHN0LnRvcF9oZWFwX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJ0b3BfaGVhcF93b3JkczogJSpkXFxuXCIgbDIgc3QudG9wX2hlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImhlYXBfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsaXZlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QubGl2ZV93b3JkcztcbiAgZnByaW50ZiBjIFwiZnJlZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmZyZWVfd29yZHM7XG4gIGZwcmludGYgYyBcImxhcmdlc3RfZnJlZTogICAlKmRcXG5cIiBsMiBzdC5sYXJnZXN0X2ZyZWU7XG4gIGZwcmludGYgYyBcImZyYWdtZW50czogICAgICAlKmRcXG5cIiBsMiBzdC5mcmFnbWVudHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBmcHJpbnRmIGMgXCJsaXZlX2Jsb2NrczogJWRcXG5cIiBzdC5saXZlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiZnJlZV9ibG9ja3M6ICVkXFxuXCIgc3QuZnJlZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImhlYXBfY2h1bmtzOiAlZFxcblwiIHN0LmhlYXBfY2h1bmtzXG5cblxubGV0IGFsbG9jYXRlZF9ieXRlcyAoKSA9XG4gIGxldCAobWksIHBybywgbWEpID0gY291bnRlcnMgKCkgaW5cbiAgKG1pICsuIG1hIC0uIHBybykgKi4gZmxvYXRfb2ZfaW50IChTeXMud29yZF9zaXplIC8gOClcblxuXG5leHRlcm5hbCBmaW5hbGlzZSA6ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyXCJcbmV4dGVybmFsIGZpbmFsaXNlX2xhc3QgOiAodW5pdCAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID1cbiAgXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXCJcbmV4dGVybmFsIGZpbmFsaXNlX3JlbGVhc2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVsZWFzZVwiXG5cblxudHlwZSBhbGFybSA9IGJvb2wgQXRvbWljLnRcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmIEF0b21pYy5nZXQgYXJlYy5hY3RpdmUgdGhlbiBiZWdpblxuICAgIGxldCBmaW5hbGx5ICgpID0gZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjIGluXG4gICAgRnVuLnByb3RlY3QgfmZpbmFsbHkgYXJlYy5mXG4gIGVuZFxuXG5sZXQgZGVsZXRlX2FsYXJtIGEgPSBBdG9taWMuc2V0IGEgZmFsc2VcblxubGV0IGNyZWF0ZV9hbGFybSBmID1cbiAgbGV0IGFyZWMgPSB7IGFjdGl2ZSA9IEF0b21pYy5tYWtlIHRydWU7IGYgPSBmIH0gaW5cbiAgRG9tYWluLmF0X2V4aXQgKGZ1biAoKSAtPiBkZWxldGVfYWxhcm0gYXJlYy5hY3RpdmUpO1xuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIHRcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuXG4gICAgZXh0ZXJuYWwgZGlzY2FyZCA6IHQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX2Rpc2NhcmRcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW5fY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5faW5fYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5faW5cbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX2luX2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IGljID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX2luX25vZXJyIGljKVxuICAgIChmdW4gKCkgLT4gZiBpYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luX2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbiBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX2luX25vZXJyXG5cbmxldCBpbnB1dF9jaGFyIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICB8IGMgLT4gU29tZSBjXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2J5dGUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfYnl0ZSBpYyB3aXRoXG4gIHwgbiAtPiBTb21lIG5cbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfbGluZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dCA9IFN0ZGxpYi5pbnB1dFxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgPSBcImNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcIlxuXG5sZXQgaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0X2JpZ2FycmF5XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuIFNvbWUgKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluICgqIElPX0JVRkZFUl9TSVpFICopXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIHRyeVxuICAgICAgU3RkbGliLmluX2NoYW5uZWxfbGVuZ3RoIGljIC0gU3RkbGliLnBvc19pbiBpY1xuICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgIC0xXG4gIGluXG4gIGxldCBpbml0aWFsX3NpemUgPSBpZiBpbml0aWFsX3NpemUgPCAwIHRoZW4gY2h1bmtfc2l6ZSBlbHNlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICBpZiBpbml0aWFsX3NpemUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIGluaXRpYWxfc2l6ZVxuICAgIGVsc2VcbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgbnJlYWQgPSByZWFkX3VwdG8gaWMgYnVmIDAgaW5pdGlhbF9zaXplIGluXG4gIGlmIG5yZWFkIDwgaW5pdGlhbF9zaXplIHRoZW4gKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBwYXJ0aWFsbHkgZmlsbGVkICopXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCBucmVhZFxuICBlbHNlIGJlZ2luICgqIG5yZWFkID0gaW5pdGlhbF9zaXplLCBtYXliZSBFT0YgcmVhY2hlZCAqKVxuICAgIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgICAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIGlzIGNvbXBsZXRlbHkgZmlsbGVkICopXG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gICAgfCBjIC0+XG4gICAgICAgICgqIEVPRiBub3QgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYnVmIG9mcyA9XG4gICAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgb2ZzIGNodW5rX3NpemUgaW5cbiAgICAgICAgICBsZXQgcmVtID0gQnl0ZXMubGVuZ3RoIGJ1ZiAtIG9mcyBpblxuICAgICAgICAgICgqIFtyZW1dIGNhbiBiZSA8IFtjaHVua19zaXplXSBpZiBidWZmZXIgc2l6ZSBjbG9zZSB0b1xuICAgICAgICAgICAgIFtTeXMubWF4X3N0cmluZ19sZW5ndGhdICopXG4gICAgICAgICAgbGV0IHIgPSByZWFkX3VwdG8gaWMgYnVmIG9mcyByZW0gaW5cbiAgICAgICAgICBpZiByIDwgcmVtIHRoZW4gKCogRU9GIHJlYWNoZWQgKilcbiAgICAgICAgICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgKG9mcyArIHIpXG4gICAgICAgICAgZWxzZSAoKiByID0gcmVtICopXG4gICAgICAgICAgICBsb29wIGJ1ZiAob2ZzICsgcmVtKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBucmVhZCAoY2h1bmtfc2l6ZSArIDEpIGluXG4gICAgICAgIEJ5dGVzLnNldCBidWYgbnJlYWQgYztcbiAgICAgICAgbG9vcCBidWYgKG5yZWFkICsgMSlcbiAgZW5kXG5cbmxldCBbQHRhaWxfbW9kX2NvbnNdIHJlYyBpbnB1dF9saW5lcyBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBsaW5lIC0+IGxpbmUgOjogaW5wdXRfbGluZXMgaWNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gW11cblxubGV0IHJlYyBmb2xkX2xpbmVzIGYgYWNjdSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBsaW5lIC0+IGZvbGRfbGluZXMgZiAoZiBhY2N1IGxpbmUpIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IGFjY3VcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfaW5cblxuZXh0ZXJuYWwgaXNfYmluYXJ5X21vZGUgOiBpbl9jaGFubmVsIC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYmluYXJ5X21vZGVcIlxuXG5leHRlcm5hbCBpc2F0dHkgOiB0IC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzYXR0eVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IG91dF9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9vdXRfYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5fb3V0XG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9vdXRfZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgb2MgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyIG9jKVxuICAgIChmdW4gKCkgLT4gZiBvYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dF9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0IHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtKSBzIGZcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9iaWdhcnJheSA6XG4gIHQgLT4gXyBCaWdhcnJheS5BcnJheTEudCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XCJcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnJcbmxldCBmbHVzaCA9IFN0ZGxpYi5mbHVzaFxubGV0IGZsdXNoX2FsbCA9IFN0ZGxpYi5mbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IFN0ZGxpYi5vdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmdcbmxldCBvdXRwdXRfYmlnYXJyYXkgb2MgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9iaWdhcnJheSBvYyBidWYgb2ZzIGxlblxuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9vdXRcblxuZXh0ZXJuYWwgaXNfYmluYXJ5X21vZGUgOiBvdXRfY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgc2V0X2J1ZmZlcmVkIDogdCAtPiBib29sIC0+IHVuaXQgPSBcImNhbWxfbWxfc2V0X2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNfYnVmZmVyZWQgOiB0IC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYnVmZmVyZWRcIlxuXG5leHRlcm5hbCBpc2F0dHkgOiB0IC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzYXR0eVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFV0aWxpdHkgZnVuY3Rpb25zICopXG5cbmxldCBoZXhfb2Zfc3RyaW5nIGQgPVxuICBsZXQgY2hhcl9oZXggbiA9XG4gICAgQ2hhci5jaHIgKGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgKyBuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIENoYXIuY29kZSAnYScgKyBuIC0gMTApIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGQgaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAobGVuICogMikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgc3RyaW5nX29mX2hleCBzID1cbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJEaWdlc3Qub2ZfaGV4XCIgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBTdHJpbmcuaW5pdCAoU3RyaW5nLmxlbmd0aCBzIC8gMikgKGZ1biBpIC0+IENoYXIuY2hyIChieXRlICgyICogaSkpKVxuXG4oKiBHZW5lcmljIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdCA9IHN0cmluZ1xuICB2YWwgaGFzaF9sZW5ndGggOiBpbnRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdFxuICB2YWwgYnl0ZXMgOiBieXRlcyAtPiB0XG4gIHZhbCBzdWJzdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gIHZhbCBzdWJieXRlcyA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgY2hhbm5lbCA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHRcbiAgdmFsIGZpbGUgOiBzdHJpbmcgLT4gdFxuICB2YWwgb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gdCAtPiB1bml0XG4gIHZhbCBpbnB1dCA6IGluX2NoYW5uZWwgLT4gdFxuICB2YWwgdG9faGV4IDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX2hleCA6IHN0cmluZyAtPiB0XG5lbmRcblxuKCogQkxBS0UyIGhhc2hpbmcsIHBhcmFtZXRlcml6ZWQgYnkgaGFzaCBzaXplICopXG5cbm1vZHVsZSBCTEFLRTIgKFg6IHNpZyB2YWwgaGFzaF9sZW5ndGggOiBpbnQgZW5kKSA6IFMgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBzdHJpbmdcblxuICBsZXQgaGFzaF9sZW5ndGggPVxuICAgIGlmIFguaGFzaF9sZW5ndGggPCAxIHx8IFguaGFzaF9sZW5ndGggPiA2NFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuQkxBS0UyOiB3cm9uZyBoYXNoIHNpemVcIjtcbiAgICBYLmhhc2hfbGVuZ3RoXG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuICB0eXBlIHN0YXRlXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2dlbjogaW50IC0+IHN0cmluZyAtPiBzdGF0ZSA9IFwiY2FtbF9ibGFrZTJfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdXBkYXRlOiBzdGF0ZSAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2JsYWtlMl91cGRhdGVcIlxuICBleHRlcm5hbCBmaW5hbDogc3RhdGUgLT4gaW50IC0+IHQgPSBcImNhbWxfYmxha2UyX2ZpbmFsXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogaW50IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGFrZTJfc3RyaW5nXCJcblxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX2dlbiBoYXNoX2xlbmd0aCBcIlwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPVxuICAgIHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG4gIGxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCI7XG4gICAgdW5zYWZlX3N0cmluZyBoYXNoX2xlbmd0aCBcIlwiIHN0ciBvZnMgbGVuXG5cbiAgbGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9XG4gICAgc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxuICBsZXQgY2hhbm5lbCBpYyB0b3JlYWQgPVxuICAgIGxldCBidWZfc2l6ZSA9IDQwOTYgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0IGN0eCA9IGNyZWF0ZSAoKSBpblxuICAgIGlmIHRvcmVhZCA8IDAgdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBkb19yZWFkICgpID1cbiAgICAgICAgbGV0IG4gPSBJbl9jaGFubmVsLmlucHV0IGljIGJ1ZiAwIGJ1Zl9zaXplIGluXG4gICAgICAgIGlmIG4gPSAwXG4gICAgICAgIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoXG4gICAgICAgIGVsc2UgKHVwZGF0ZSBjdHggKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSAwIG47IGRvX3JlYWQgKCkpXG4gICAgICBpbiBkb19yZWFkICgpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCB0b3JlYWQgPVxuICAgICAgICBpZiB0b3JlYWQgPSAwIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEluX2NoYW5uZWwuaW5wdXQgaWMgYnVmIDAgKEludC5taW4gYnVmX3NpemUgdG9yZWFkKSBpblxuICAgICAgICAgIGlmIG4gPSAwXG4gICAgICAgICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIHVwZGF0ZSBjdHggKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSAwIG47XG4gICAgICAgICAgICBkb19yZWFkICh0b3JlYWQgLSBuKVxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmRcbiAgICAgIGluIGRvX3JlYWQgdG9yZWFkXG4gICAgZW5kXG5cbiAgbGV0IGZpbGUgZmlsZW5hbWUgPVxuICAgIEluX2NoYW5uZWwud2l0aF9vcGVuX2JpbiBmaWxlbmFtZSAoZnVuIGljIC0+IGNoYW5uZWwgaWMgKC0xKSlcblxuICBsZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID0gb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG4gIGxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIGhhc2hfbGVuZ3RoXG5cbiAgbGV0IHRvX2hleCBkID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gaGFzaF9sZW5ndGggdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgICBoZXhfb2Zfc3RyaW5nIGRcblxuICBsZXQgb2ZfaGV4IHMgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA8PiBoYXNoX2xlbmd0aCAqIDIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5vZl9oZXhcIjtcbiAgICBzdHJpbmdfb2ZfaGV4IHNcblxuZW5kXG5cbm1vZHVsZSBCTEFLRTEyOCA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gMTYgZW5kKVxubW9kdWxlIEJMQUtFMjU2ID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSAzMiBlbmQpXG5tb2R1bGUgQkxBS0U1MTIgPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDY0IGVuZClcblxuKCogTUQ1IGhhc2hpbmcgKilcblxubW9kdWxlIE1ENSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IHN0cmluZ1xuXG4gIGxldCBoYXNoX2xlbmd0aCA9IDE2XG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuICBleHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuICBleHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxuICBsZXQgc3RyaW5nIHN0ciA9XG4gICAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxuICBsZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gICAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbiAgbGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbiAgbGV0IGZpbGUgZmlsZW5hbWUgPVxuICAgIEluX2NoYW5uZWwud2l0aF9vcGVuX2JpbiBmaWxlbmFtZSAoZnVuIGljIC0+IGNoYW5uZWwgaWMgKC0xKSlcblxuICBsZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID0gb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG4gIGxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbiAgbGV0IHRvX2hleCBkID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgICBoZXhfb2Zfc3RyaW5nIGRcblxuICBsZXQgb2ZfaGV4IHMgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gICAgc3RyaW5nX29mX2hleCBzXG5cbmVuZFxuXG4oKiBEZWZhdWx0IGV4cG9ydGVkIGltcGxlbWVudGF0aW9uIGlzIE1ENSAqKVxuXG5pbmNsdWRlIE1ENVxuXG5sZXQgZnJvbV9oZXggPSBvZl9oZXhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBNYW51ZWwgU2VycmFubyBldCBYYXZpZXIgTGVyb3ksIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtCaWdhcnJheV06IGxhcmdlLCBtdWx0aS1kaW1lbnNpb25hbCwgbnVtZXJpY2FsIGFycmF5cyAqKVxuXG4oKiBUaGVzZSB0eXBlcyBpbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSB0YWJsZXMgaW5cbiAgIC4uL3R5cGluZy90eXBlb3B0Lm1sICopXG5cbnR5cGUgZmxvYXQxNl9lbHQgPSBGbG9hdDE2X2VsdFxudHlwZSBmbG9hdDMyX2VsdCA9IEZsb2F0MzJfZWx0XG50eXBlIGZsb2F0NjRfZWx0ID0gRmxvYXQ2NF9lbHRcbnR5cGUgaW50OF9zaWduZWRfZWx0ID0gSW50OF9zaWduZWRfZWx0XG50eXBlIGludDhfdW5zaWduZWRfZWx0ID0gSW50OF91bnNpZ25lZF9lbHRcbnR5cGUgaW50MTZfc2lnbmVkX2VsdCA9IEludDE2X3NpZ25lZF9lbHRcbnR5cGUgaW50MTZfdW5zaWduZWRfZWx0ID0gSW50MTZfdW5zaWduZWRfZWx0XG50eXBlIGludDMyX2VsdCA9IEludDMyX2VsdFxudHlwZSBpbnQ2NF9lbHQgPSBJbnQ2NF9lbHRcbnR5cGUgaW50X2VsdCA9IEludF9lbHRcbnR5cGUgbmF0aXZlaW50X2VsdCA9IE5hdGl2ZWludF9lbHRcbnR5cGUgY29tcGxleDMyX2VsdCA9IENvbXBsZXgzMl9lbHRcbnR5cGUgY29tcGxleDY0X2VsdCA9IENvbXBsZXg2NF9lbHRcblxuKCogS2VlcCB0aGUgb3JkZXIgb2YgdGhlc2UgY29uc3RydWN0b3JzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9raW5kXG4gICBlbnVtZXJhdGlvbiBpbiBiaWdhcnJheS5oICopXG5cbnR5cGUgKCdhLCAnYikga2luZCA9XG4gIHwgRmxvYXQzMiA6IChmbG9hdCwgZmxvYXQzMl9lbHQpIGtpbmRcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBmbG9hdDY0X2VsdCkga2luZFxuICB8IEludDhfc2lnbmVkIDogKGludCwgaW50OF9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50OF91bnNpZ25lZCA6IChpbnQsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfc2lnbmVkIDogKGludCwgaW50MTZfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3Vuc2lnbmVkIDogKGludCwgaW50MTZfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MzIgOiAoaW50MzIsIGludDMyX2VsdCkga2luZFxuICB8IEludDY0IDogKGludDY0LCBpbnQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQgOiAoaW50LCBpbnRfZWx0KSBraW5kXG4gIHwgTmF0aXZlaW50IDogKG5hdGl2ZWludCwgbmF0aXZlaW50X2VsdCkga2luZFxuICB8IENvbXBsZXgzMiA6IChDb21wbGV4LnQsIGNvbXBsZXgzMl9lbHQpIGtpbmRcbiAgfCBDb21wbGV4NjQgOiAoQ29tcGxleC50LCBjb21wbGV4NjRfZWx0KSBraW5kXG4gIHwgQ2hhciA6IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEZsb2F0MTYgOiAoZmxvYXQsIGZsb2F0MTZfZWx0KSBraW5kXG5cbnR5cGUgY19sYXlvdXQgPSBDX2xheW91dF90eXBcbnR5cGUgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dF90eXAgKCoqKVxuXG50eXBlICdhIGxheW91dCA9XG4gICAgQ19sYXlvdXQ6IGNfbGF5b3V0IGxheW91dFxuICB8IEZvcnRyYW5fbGF5b3V0OiBmb3J0cmFuX2xheW91dCBsYXlvdXRcblxubGV0IGZsb2F0MTYgPSBGbG9hdDE2XG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDE2IC0+IDJcbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIGxldCBkbGVuID0gQXJyYXkubGVuZ3RoIGRpbXMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zOyBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXggPVxuICAgIFwibHhtMTpcIlxuICAgICgqIFwibHhtXCIgZGVub3RlcyB0aGUgYWxnb3JpdGhtIGN1cnJlbnRseSBpbiB1c2UsIGFuZCAnMScgaXNcbiAgICAgICBhIHZlcnNpb24gbnVtYmVyLiBXZSBzaG91bGQgdXBkYXRlIHRoaXMgcHJlZml4IGlmIHdlIGNoYW5nZVxuICAgICAgIHRoZSBSYW5kb20gYWxnb3JpdGhtIG9yIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCwgc28gdGhhdCB1c2Vyc1xuICAgICAgIGdldCBhIGNsZWFuIGVycm9yIGluc3RlYWQgb2YgYmVsaWV2aW5nIHRoYXQgdGhleSBmYWl0aGZ1bGx5XG4gICAgICAgcmVwcm9kdWNlIHRoZWlyIHByZXZpb3VzIHN0YXRlIGFuZCBpbiBmYWN0IGdldCBhIGRpZmZlcmVudFxuICAgICAgIHN0cmVhbS5cblxuICAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjb25zdHJhaW50IHRvIGtlZXAgdGhlIHNhbWVcbiAgICAgICBcIjxuYW1lPjx2ZXI+OjxkYXRhPlwiIGZvcm1hdCBvciBtZXNzYWdlIHNpemUgaW4gZnV0dXJlIHZlcnNpb25zLFxuICAgICAgIHdlIGNvdWxkIGNoYW5nZSB0aGUgZm9ybWF0IGNvbXBsZXRlbHkgaWYgd2Ugd2FudGVkIGFzIGxvbmdcbiAgICAgICBhcyB0aGVyZSBpcyBubyBjb25mdXNpb24gcG9zc2libGUgd2l0aCB0aGUgcHJldmlvdXMgZm9ybWF0cy4gKilcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuID1cbiAgICBTdHJpbmcubGVuZ3RoIHNlcmlhbGl6YXRpb25fcHJlZml4XG5cbiAgbGV0IHRvX2JpbmFyeV9zdHJpbmcgcyA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChwcmVmbGVuICsgNCAqIDgpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcHJlZml4IDAgYnVmIDAgcHJlZmxlbjtcbiAgICBmb3IgaSA9IDAgdG8gMyBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIGkgKiA4KSAoQXJyYXkxLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuXG4gIGxldCBvZl9iaW5hcnlfc3RyaW5nIGJ1ZiA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGJ1ZiA8PiBwcmVmbGVuICsgNCAqIDhcbiAgICAgICB8fCBub3QgKFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4IGJ1ZilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJSYW5kb20uU3RhdGUub2ZfYmluYXJ5X3N0cmluZzogZXhwZWN0ZWQgYSBmb3JtYXQgXFxcbiAgICAgICAgICBjb21wYXRpYmxlIHdpdGggT0NhbWwgXCIgXiBTeXMub2NhbWxfdmVyc2lvbik7XG4gICAgbGV0IGkxID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAwICogOCkgaW5cbiAgICBsZXQgaTIgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDEgKiA4KSBpblxuICAgIGxldCBpMyA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMiAqIDgpIGluXG4gICAgbGV0IGk0ID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAzICogOCkgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuXG4gIGxldCBhc3NpZ24gKGRzdDogdCkgKHNyYzogdCkgPVxuICAgIEFycmF5MS5ibGl0IHNyYyBkc3RcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcycgPSBjcmVhdGUoKSBpbiBhc3NpZ24gcycgczsgcydcblxuICAoKiBUaGUgc2VlZCBpcyBhbiBhcnJheSBvZiBpbnRlZ2Vycy4gIEl0IGNhbiBiZSBqdXN0IG9uZSBpbnRlZ2VyLFxuICAgICBidXQgaXQgY2FuIGFsc28gYmUgMTIgb3IgbW9yZSBieXRlcy4gIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2UsXG4gICAgIHdlIHNlcmlhbGl6ZSB0aGUgYXJyYXkgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywgdGhlbiBoYXNoIHRoZVxuICAgICBzZXF1ZW5jZSB3aXRoIE1ENSAoRGlnZXN0LmJ5dGVzKS4gIE1ENSBnaXZlcyBvbmx5IDEyOCBiaXRzIHdoaWxlXG4gICAgIHdlIG5lZWQgMjU2IGJpdHMsIHNvIHdlIGhhc2ggdHdpY2Ugd2l0aCBkaWZmZXJlbnQgc3VmZml4ZXMuICopXG4gIGxldCByZWluaXQgcyBzZWVkID1cbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgKG4gKiA4ICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvXG4gICAgICBCeXRlcy5zZXRfaW50NjRfbGUgYiAoaSAqIDgpIChJbnQ2NC5vZl9pbnQgc2VlZC4oaSkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMSc7XG4gICAgbGV0IGQxID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMic7XG4gICAgbGV0IGQyID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBzZXQgcyAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDgpXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiA4KVxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCBzID0gY3JlYXRlKCkgaW4gcmVpbml0IHMgc2VlZDsgc1xuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9XG4gICAgbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IG1pbl9pbnQzMSA9IC0weDQwMDBfMDAwMFxuICAgICAgKCogPSAtMnteMzB9LCB3aGljaCBpcyBbbWluX2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICBsZXQgbWF4X2ludDMxID0gMHgzRkZGX0ZGRkZcbiAgICAgICgqID0gIDJ7XjMwfS0xLCB3aGljaCBpcyBbbWF4X2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICAoKiBhdm9pZCBpbnRlZ2VyIGxpdGVyYWxzIGZvciB0aGVzZSwgMzItYml0IE9DYW1sIHdvdWxkIHJlamVjdCB0aGVtOiAqKVxuICBsZXQgbWluX2ludDMyID0gLSgxIGxzbCAzMSlcbiAgICAgICgqID0gLTB4ODAwMF8wMDAwIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuICBsZXQgbWF4X2ludDMyID0gKDEgbHNsIDMxKSAtIDFcbiAgICAgICgqID0gIDB4N0ZGRl9GRkZGIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDJeMzAgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtuXSAoZXhjbHVkZWQpLlxuICAgICBbYm91bmRdIG1heSBiZSBhbnkgcG9zaXRpdmUgW2ludF0uICBbbWFza10gbXVzdCBiZSBvZiB0aGUgZm9ybSBbMnteaX0tMV1cbiAgICAgYW5kIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW25dLiAgTGFyZ2VyIHZhbHVlcyBvZiBbbWFza10gbWFrZSB0aGUgZnVuY3Rpb25cbiAgICAgcnVuIGZhc3RlciAoZmV3ZXIgc2FtcGxlcyBhcmUgcmVqZWN0ZWQpLiAgU21hbGxlciB2YWx1ZXMgb2YgW21hc2tdXG4gICAgIGFyZSB1c2FibGUgb24gYSB3aWRlciByYW5nZSBvZiBPQ2FtbCBpbXBsZW1lbnRhdGlvbnMuICAqKVxuICBsZXQgcmVjIGludF9hdXggcyBuIG1hc2sgPVxuICAgICgqIFdlIHN0YXJ0IGJ5IGRyYXdpbmcgYSBub24tbmVnYXRpdmUgaW50ZWdlciBpbiB0aGUgWyBbMCwgbWFza10gXSByYW5nZSAqKVxuICAgIGxldCByID0gSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWFzayBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgICgqIEZvciB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcmVzdWx0IGJldHdlZW4gMCBpbmNsdWRlZCBhbmQgW25dXG4gICAgICogZXhjbHVkZWQsIHRoZSByYW5kb20gbnVtYmVyIFtyXSBtdXN0IGhhdmUgYmVlbiBkcmF3biB1bmlmb3JtbHkgaW5cbiAgICAgKiBhbiBpbnRlcnZhbCB3aG9zZSBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBbbl0uIFRvIGFjaGlldmUgdGhpcyxcbiAgICAgKiB3ZSB1c2UgcmVqZWN0aW9uIHNhbXBsaW5nIG9uIHRoZSBncmVhdGVzdCBpbnRlcnZhbCBbIFswLCBrKm4tMV0gXVxuICAgICAqIHRoYXQgZml0cyBpbiBbIFswLCBtYXNrXSBdLiAgVGhhdCBpcywgd2UgcmVqZWN0IHRoZVxuICAgICAqIHNhbXBsZSBpZiBpdCBmYWxscyBvdXRzaWRlIG9mIHRoaXMgaW50ZXJ2YWwsIGFuZCBkcmF3IGFnYWluLlxuICAgICAqIFRoaXMgaXMgd2hhdCB0aGUgdGVzdCBiZWxvdyBkb2VzLCB3aGlsZSBjYXJlZnVseSBhdm9pZGluZ1xuICAgICAqIG92ZXJmbG93cyBhbmQgc3BhcmluZyBhIGRpdmlzaW9uIFttYXNrIC8gbl0uICopXG4gICAgaWYgciAtIHYgPiBtYXNrIC0gbiArIDEgdGhlbiBpbnRfYXV4IHMgbiBtYXNrIGVsc2UgdlxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFRoZSBib3VuZCBtdXN0IGZpdCBpbiAzMS1iaXQgc2lnbmVkIGludGVnZXJzLlxuICAgICBUaGlzIGZ1bmN0aW9uIHlpZWxkcyB0aGUgc2FtZSBvdXRwdXQgcmVnYXJkbGVzcyBvZiB0aGUgaW50ZWdlciBzaXplLiAqKVxuICBsZXQgaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kID4gbWF4X2ludDMxIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRfYXV4IHMgYm91bmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS5cbiAgICAgW2JvdW5kXSBtYXkgYmUgYW55IHBvc2l0aXZlIFtpbnRdLiAqKVxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgKCogV2hlbiB0aGUgYm91bmQgZml0cyBpbiAzMS1iaXQgc2lnbmVkIGludGVnZXJzLCB3ZSB1c2UgdGhlIHNhbWUgbWFza1xuICAgICAgIGFzIGluIGZ1bmN0aW9uIFtpbnRdIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zXG4gICAgICAgc3VwcG9ydGVkIGJ5IE9DYW1sICgzMi1iaXQgT0NhbWwsIDY0LWJpdCBPQ2FtbCwgYW5kIEphdmFTY3JpcHQpLlxuICAgICAgIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzItYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIFttYXhfaW50MzJdXG4gICAgICAgYXMgdGhlIG1hc2sgc28gYXMgdG8geWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgd2hlcmVcbiAgICAgICBbU3lzLmludF9zaXplID49IDMyXSAoaS5lLiBKYXZhU2NyaXB0IGFuZCA2NC1iaXQgT0NhbWwpLiAqKVxuICAgIGVsc2VcbiAgICAgIGludF9hdXggcyBib3VuZFxuICAgICAgICAoaWYgYm91bmQgPD0gbWF4X2ludDMxIHRoZW4gbWF4X2ludDMxXG4gICAgICAgICBlbHNlIGlmIGJvdW5kIDw9IG1heF9pbnQzMiB0aGVuIG1heF9pbnQzMlxuICAgICAgICAgZWxzZSBtYXhfaW50KVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgVGhlIFtuYml0c10gcGFyYW1ldGVyIGlzIHRoZSBzaXplIGluIGJpdHMgb2YgdGhlIHNpZ25lZCBpbnRlZ2Vyc1xuICAgICB3ZSBkcmF3IGZyb20gW3NdLlxuICAgICBXZSBtdXN0IGhhdmUgWy0ye15uYml0cyAtIDF9IDw9IG1pbiA8PSBtYXggPCAye15uYml0cyAtIDF9XS5cbiAgICAgTW9yZW92ZXIsIGZvciB0aGUgaXRlcmF0aW9uIHRvIGNvbnZlcmdlIHF1aWNrbHksIHRoZSBpbnRlcnZhbFxuICAgICBbW21pbiwgbWF4XV0gc2hvdWxkIGhhdmUgd2lkdGggYXQgbGVhc3QgWzJ7Xm5iaXRzIC0gMX1dLlxuICAgICBBcyB0aGUgd2lkdGggYXBwcm9hY2hlcyB0aGlzIGxvd2VyIGxpbWl0LCB0aGUgYXZlcmFnZSBudW1iZXIgb2ZcbiAgICAgZHJhd3MgYXBwcm9hY2hlcyAyLCB3aXRoIGEgcXVpdGUgaGlnaCBzdGFuZGFyZCBkZXZpYXRpb24gKDIgKyBlcHNpbG9uKS4gKilcbiAgbGV0IHJlYyBpbnRfaW5fbGFyZ2VfcmFuZ2UgcyB+bWluIH5tYXggfm5iaXRzID1cbiAgICBsZXQgZHJvcCA9IFN5cy5pbnRfc2l6ZSAtIG5iaXRzIGluXG4gICAgKCogVGhlIGJpdHNoaWZ0cyByZXBsaWNhdGUgdGhlIFtuYml0c10tdGggYml0IChzaWduIGJpdCkgdG8gaGlnaGVyIGJpdHM6ICopXG4gICAgbGV0IHIgPSAoKEludDY0LnRvX2ludCAobmV4dCBzKSkgbHNsIGRyb3ApIGFzciBkcm9wIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyBlbHNlIHJcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFttYXNrXSBpcyBhcyBkZXNjcmliZWQgZm9yIFtpbnRfYXV4XS5cbiAgICAgW25iaXRzXSBpcyBhcyBkZXNjcmliZWQgZm9yIFtpbnRfaW5fbGFyZ2VfcmFuZ2VdLiAqKVxuICBsZXQgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzayB+bmJpdHMgPVxuICAgIGxldCBzcGFuID0gbWF4IC0gbWluICsgMSBpblxuICAgIGlmIHNwYW4gPD0gbWFzayAoKiBbc3Bhbl0gaXMgc21hbGwgZW5vdWdoICopXG4gICAgJiYgc3BhbiA+IDAgICAgICgqIG5vIG92ZXJmbG93IG9jY3VycmVkIHdoZW4gY29tcHV0aW5nIFtzcGFuXSAqKVxuICAgIHRoZW5cbiAgICAgICgqIEp1c3QgZHJhdyBhIG51bWJlciBpbiBbWzAsIHNwYW4pXSBhbmQgc2hpZnQgaXQgYnkgW21pbl0uICopXG4gICAgICBtaW4gKyBpbnRfYXV4IHMgc3BhbiBtYXNrXG4gICAgZWxzZVxuICAgICAgKCogU3BhbiB0b28gbGFyZ2UsIHVzZSB0aGUgYWx0ZXJuYXRpdmUgZHJhd2luZyBtZXRob2QuICopXG4gICAgICBpbnRfaW5fbGFyZ2VfcmFuZ2UgcyB+bWluIH5tYXggfm5iaXRzXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBXZSBtdXN0IGhhdmUgW21pbiA8PSBtYXhdLiAqKVxuICBsZXQgaW50X2luX3JhbmdlIHMgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXggdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uaW50X2luX3JhbmdlXCI7XG4gICAgKCogV2hlbiBib3RoIGJvdW5kcyBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHBhcmFtZXRlcnNcbiAgICAgICBbbWFza10gYW5kIFtuYml0c10gYXBwcm9wcmlhdGUgZm9yIDMxLWJpdCBpbnRlZ2Vycywgc28gYXMgdG9cbiAgICAgICB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3JtcyBzdXBwb3J0ZWQgYnkgT0NhbWwuXG4gICAgICAgV2hlbiBib3RoIGJvdW5kcyBmaXQgaW4gMzItYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHBhcmFtZXRlcnNcbiAgICAgICBbbWFza10gYW5kIFtuYml0c10gYXBwcm9wcmlhdGUgZm9yIDMyLWJpdCBpbnRlZ2Vycywgc28gYXMgdG9cbiAgICAgICB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gSmF2YVNjcmlwdCBhbmQgb24gNjQtYml0IE9DYW1sLiAqKVxuICAgIGlmIG1pbiA+PSBtaW5faW50MzEgJiYgbWF4IDw9IG1heF9pbnQzMSB0aGVuXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQzMSB+bmJpdHM6MzFcbiAgICBlbHNlIGlmIG1pbiA+PSBtaW5faW50MzIgJiYgbWF4IDw9IG1heF9pbnQzMiB0aGVuXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQzMiB+bmJpdHM6MzJcbiAgICBlbHNlXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQgfm5iaXRzOlN5cy5pbnRfc2l6ZVxuXG4gICgqIFJldHVybiAzMiByYW5kb20gYml0cyBhcyBhbiBbaW50MzJdICopXG4gIGxldCBiaXRzMzIgcyA9XG4gICAgSW50NjQudG9faW50MzIgKG5leHQgcylcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzMzIgcykgMSBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9hdXhdLiAqKVxuICAgIGlmIEludDMyLihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxbClcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiBhbiBbaW50MzJdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IHJlYyBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggPVxuICAgIGxldCByID0gSW50NjQudG9faW50MzIgKG5leHQgcykgaW5cbiAgICBpZiByIDwgbWluIHx8IHIgPiBtYXggdGhlbiBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggZWxzZSByXG5cbiAgbGV0IGludDMyX2luX3JhbmdlIHMgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXggdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJfaW5fcmFuZ2VcIlxuICAgIGVsc2VcbiAgICAgIGxldCBzcGFuID0gSW50MzIuc3VjYyAoSW50MzIuc3ViIG1heCBtaW4pIGluXG4gICAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfaW5fcmFuZ2VfYXV4XS4gKilcbiAgICAgIGlmIHNwYW4gPD0gSW50MzIuemVybyB0aGVuXG4gICAgICAgIGludDMyX2luX3JhbmdlX2F1eCBzIH5taW4gfm1heFxuICAgICAgZWxzZVxuICAgICAgICBJbnQzMi5hZGQgbWluIChpbnQzMmF1eCBzIHNwYW4pXG5cbiAgKCogUmV0dXJuIDY0IHJhbmRvbSBiaXRzIGFzIGFuIFtpbnQ2NF0gKilcbiAgbGV0IGJpdHM2NCBzID1cbiAgICBuZXh0IHNcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDY0YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzNjQgcykgMSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9hdXhdLiAqKVxuICAgIGlmIEludDY0LihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxTClcbiAgICB0aGVuIGludDY0YXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQ2NCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwTFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50NjRcIlxuICAgIGVsc2UgaW50NjRhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiBhbiBbaW50NjRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IHJlYyBpbnQ2NF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggPVxuICAgIGxldCByID0gbmV4dCBzIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQ2NF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0X2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDY0LnN1Y2MgKEludDY0LnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDY0Lnplcm8gdGhlblxuICAgICAgICBpbnQ2NF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50NjQuYWRkIG1pbiAoaW50NjRhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiAzMiBvciA2NCByYW5kb20gYml0cyBhcyBhIFtuYXRpdmVpbnRdICopXG4gIGxldCBuYXRpdmViaXRzID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGJpdHMzMiBzKVxuICAgIGVsc2UgZnVuIHMgLT4gSW50NjQudG9fbmF0aXZlaW50IChiaXRzNjQgcylcblxuICAoKiBSZXR1cm4gYSBbbmF0aXZlaW50XSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgbmF0aXZlaW50ID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyBib3VuZCAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyIHMgKE5hdGl2ZWludC50b19pbnQzMiBib3VuZCkpXG4gICAgZWxzZSBmdW4gcyBib3VuZCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0IHMgKEludDY0Lm9mX25hdGl2ZWludCBib3VuZCkpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLiAqKVxuICBsZXQgbmF0aXZlaW50X2luX3JhbmdlID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzJfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihOYXRpdmVpbnQudG9faW50MzIgbWluKSB+bWF4OihOYXRpdmVpbnQudG9faW50MzIgbWF4KSlcbiAgICBlbHNlIGZ1biBzIH5taW4gfm1heCAtPlxuICAgICAgSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NF9pbl9yYW5nZSBzXG4gICAgICAgIH5taW46KEludDY0Lm9mX25hdGl2ZWludCBtaW4pIH5tYXg6KEludDY0Lm9mX25hdGl2ZWludCBtYXgpKVxuXG4gICgqIFJldHVybiBhIGZsb2F0IDAgPCB4IDwgMSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlXG4gICAgIG11bHRpcGxlcyBvZiAyXi01MyAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHMgPVxuICAgIGxldCBiID0gbmV4dCBzIGluXG4gICAgbGV0IG4gPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIGIgMTEgaW5cbiAgICBpZiBuIDw+IDBMIHRoZW4gSW50NjQudG9fZmxvYXQgbiAqLiAweDEucC01MyBlbHNlIHJhd2Zsb2F0IHNcblxuICAoKiBSZXR1cm4gYSBmbG9hdCBiZXR3ZWVuIDAgYW5kIFtib3VuZF0gKilcbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgKCogUmV0dXJuIGEgcmFuZG9tIEJvb2xlYW4gKilcbiAgbGV0IGJvb2wgcyA9IG5leHQgcyA8IDBMXG5cbiAgKCogU3BsaXQgYSBuZXcgUFJORyBvZmYgdGhlIGdpdmVuIFBSTkcgKilcbiAgbGV0IHNwbGl0IHMgPVxuICAgIGxldCBpMSA9IGJpdHM2NCBzIGluIGxldCBpMiA9IGJpdHM2NCBzIGluXG4gICAgbGV0IGkzID0gYml0czY0IHMgaW4gbGV0IGk0ID0gYml0czY0IHMgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuZW5kXG5cbmxldCBta19kZWZhdWx0ICgpID1cbiAgKCogVGhpcyBpcyB0aGUgc3RhdGUgb2J0YWluZWQgd2l0aCBbU3RhdGUubWFrZSBbfCAzMTQxNTkyNjUgfF1dLiAqKVxuICBTdGF0ZS5tayAoLTYxOTY4NzQyODk1Njc3MDUwOTdMKVxuICAgICAgICAgICA1ODY1NzMyNDk4MzM3MTMxODlMXG4gICAgICAgICAgICgtODU5MTI2ODgwMzg2NTA0MzQwN0wpXG4gICAgICAgICAgIDYzODg2MTM1OTU4NDk3NzIwNDRMXG5cbmxldCByYW5kb21fa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudDpTdGF0ZS5zcGxpdCBta19kZWZhdWx0XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50X2luX3JhbmdlIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSB+bWluIH5tYXhcbmxldCBpbnQzMiBib3VuZCA9IFN0YXRlLmludDMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGludDMyX2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludDMyX2luX3JhbmdlIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSB+bWluIH5tYXhcbmxldCBuYXRpdmVpbnQgYm91bmQgPSBTdGF0ZS5uYXRpdmVpbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgbmF0aXZlaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLm5hdGl2ZWludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQ2NF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQ2NF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgZmxvYXQgc2NhbGUgPSBTdGF0ZS5mbG9hdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBiaXRzMzIgKCkgPSBTdGF0ZS5iaXRzMzIgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czY0ICgpID0gU3RhdGUuYml0czY0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IG5hdGl2ZWJpdHMgKCkgPSBTdGF0ZS5uYXRpdmViaXRzIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxuXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5yZWluaXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQoKSlcblxuKCogU3BsaXR0aW5nICopXG5cbmxldCBzcGxpdCAoKSA9IFN0YXRlLnNwbGl0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEhhc2ggdGFibGVzICopXG5cbigqIFdlIGRvIGR5bmFtaWMgaGFzaGluZywgYW5kIHJlc2l6ZSB0aGUgdGFibGUgYW5kIHJlaGFzaCB0aGUgZWxlbWVudHNcbiAgIHdoZW4gdGhlIGxvYWQgZmFjdG9yIGJlY29tZXMgdG9vIGhpZ2guICopXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICBtdXRhYmxlIGRhdGE6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICB9XG5cbmFuZCAoJ2EsICdiKSBidWNrZXRsaXN0ID1cbiAgICBFbXB0eVxuICB8IENvbnMgb2YgeyBtdXRhYmxlIGtleTogJ2E7XG4gICAgICAgICAgICAgIG11dGFibGUgZGF0YTogJ2I7XG4gICAgICAgICAgICAgIG11dGFibGUgbmV4dDogKCdhLCAnYikgYnVja2V0bGlzdCB9XG5cbigqIFRoZSBzaWduIG9mIGluaXRpYWxfc2l6ZSBlbmNvZGVzIHRoZSBmYWN0IHRoYXQgYSB0cmF2ZXJzYWwgaXNcbiAgIG9uZ29pbmcgb3Igbm90LlxuXG4gICBUaGlzIGRpc2FibGVzIHRoZSBlZmZpY2llbnQgaW4gcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgcmVzaXppbmcuXG4qKVxuXG5sZXQgb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICB8fCBoLmluaXRpYWxfc2l6ZSA8IDBcblxubGV0IGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIGguaW5pdGlhbF9zaXplIDwtIC0gaC5pbml0aWFsX3NpemVcblxuKCogVG8gcGljayByYW5kb20gc2VlZHMgaWYgcmVxdWVzdGVkICopXG5cbmxldCByYW5kb21pemVkX2RlZmF1bHQgPVxuICBsZXQgcGFyYW1zID1cbiAgICB0cnkgU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT4gXCJcIiBpblxuICBTdHJpbmcuY29udGFpbnMgcGFyYW1zICdSJ1xuXG5sZXQgcmFuZG9taXplZCA9IEF0b21pYy5tYWtlIHJhbmRvbWl6ZWRfZGVmYXVsdFxuXG5sZXQgcmFuZG9taXplICgpID0gQXRvbWljLnNldCByYW5kb21pemVkIHRydWVcbmxldCBpc19yYW5kb21pemVkICgpID0gQXRvbWljLmdldCByYW5kb21pemVkXG5cbmxldCBwcm5nX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXRcblxuKCogRnVuY3Rpb25zIHdoaWNoIGFwcGVhciBiZWZvcmUgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIG11c3QgZWl0aGVyIGJlXG4gICBpbmRlcGVuZGVudCBvZiB0aGUgaGFzaCBmdW5jdGlvbiBvciB0YWtlIGl0IGFzIGEgcGFyYW1ldGVyIChzZWUgIzIyMDIgYW5kXG4gICBjb2RlIGJlbG93IHRoZSBmdW5jdG9yIGRlZmluaXRpb25zLiAqKVxuXG4oKiBDcmVhdGluZyBhIGZyZXNoLCBlbXB0eSB0YWJsZSAqKVxuXG5sZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgaWYgeCA+PSBuIHRoZW4geFxuICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxubGV0IGNyZWF0ZSA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaW5pdGlhbF9zaXplID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KSBlbHNlIDBcbiAgaW5cbiAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG5sZXQgY2xlYXIgaCA9XG4gIGlmIGguc2l6ZSA+IDAgdGhlbiBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIEFycmF5LmZpbGwgaC5kYXRhIDAgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIEVtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXQgaCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICAgIHx8IGxlbiA9IGFicyBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgY2xlYXIgaFxuICBlbHNlIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgKGFicyBoLmluaXRpYWxfc2l6ZSkgRW1wdHlcbiAgZW5kXG5cbmxldCBjb3B5X2J1Y2tldGxpc3QgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgbGV0IHJlYyBsb29wIHByZWMgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IENvbnMgcHJlYyAtPiAgcHJlYy5uZXh0IDwtIHJcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGxvb3AgciBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICBsb29wIHIgbmV4dDtcbiAgICAgIHJcblxubGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5tYXAgY29weV9idWNrZXRsaXN0IGguZGF0YSB9XG5cbmxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG5sZXQgaW5zZXJ0X2FsbF9idWNrZXRzIGluZGV4ZnVuIGlucGxhY2Ugb2RhdGEgbmRhdGEgPVxuICBsZXQgbnNpemUgPSBBcnJheS5sZW5ndGggbmRhdGEgaW5cbiAgbGV0IG5kYXRhX3RhaWwgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBhcyBjZWxsIC0+XG4gICAgICAgIGxldCBjZWxsID1cbiAgICAgICAgICBpZiBpbnBsYWNlIHRoZW4gY2VsbFxuICAgICAgICAgIGVsc2UgQ29ucyB7a2V5OyBkYXRhOyBuZXh0ID0gRW1wdHl9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBuaWR4ID0gaW5kZXhmdW4ga2V5IGluXG4gICAgICAgIGJlZ2luIG1hdGNoIG5kYXRhX3RhaWwuKG5pZHgpIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBuZGF0YS4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIGNlbGw7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbmRhdGFfdGFpbC4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgaW5zZXJ0X2J1Y2tldCBuZXh0XG4gIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2RhdGEgLSAxIGRvXG4gICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgZG9uZTtcbiAgaWYgaW5wbGFjZSB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIG5zaXplIC0gMSBkb1xuICAgICAgbWF0Y2ggbmRhdGFfdGFpbC4oaSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIEVtcHR5XG4gICAgZG9uZVxuXG5sZXQgcmVzaXplIGluZGV4ZnVuIGggPVxuICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgbGV0IGlucGxhY2UgPSBub3QgKG9uZ29pbmdfdHJhdmVyc2FsIGgpIGluXG4gICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAgICAoKiBzbyB0aGF0IGluZGV4ZnVuIHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICBpbnNlcnRfYWxsX2J1Y2tldHMgKGluZGV4ZnVuIGgpIGlucGxhY2Ugb2RhdGEgbmRhdGFcbiAgZW5kXG5cbmxldCBpdGVyIGYgaCA9XG4gIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+XG4gICAgICAgICgpXG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZiBrZXkgZGF0YTsgZG9fYnVja2V0IG5leHQgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gRW1wdHlcbiAgICAgIGVuZFxuICB8IChDb25zICh7a2V5OyBkYXRhOyBuZXh0fSBhcyBjKSkgYXMgc2xvdCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZiBrZXkgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgbmV4dFxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gc2xvdFxuICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBzbG90XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGMuZGF0YSA8LSBkYXRhO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgc2xvdCBuZXh0XG4gICAgICBlbmRcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICBsZXQgZCA9IGguZGF0YSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBFbXB0eSBoLmRhdGEuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGhcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCBmb2xkIGYgaCBpbml0ID1cbiAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICAgIEVtcHR5IC0+XG4gICAgICAgIGFjY3VcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBkb19idWNrZXQgbmV4dCAoZiBrZXkgZGF0YSBhY2N1KSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICAhYWNjdVxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxudHlwZSBzdGF0aXN0aWNzID0ge1xuICBudW1fYmluZGluZ3M6IGludDtcbiAgbnVtX2J1Y2tldHM6IGludDtcbiAgbWF4X2J1Y2tldF9sZW5ndGg6IGludDtcbiAgYnVja2V0X2hpc3RvZ3JhbTogaW50IGFycmF5XG59XG5cbmxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgQ29uc3tuZXh0fSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgbmV4dFxuXG5sZXQgc3RhdHMgaCA9XG4gIGxldCBtYmwgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBiIC0+XG4gICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICBoLmRhdGE7XG4gIHsgbnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHRibCA9XG4gICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICBpblxuICBhdXggMCBFbXB0eVxuXG5sZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxubGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuKCogRnVuY3RvcmlhbCBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIHNlZWRlZF9oYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlOiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5OiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZTogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZSA6ID9yYW5kb206Ym9vbCAtPiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlU2VlZGVkKEg6IFNlZWRlZEhhc2hlZFR5cGUpOiAoU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIHR5cGUga2V5ID0gSC50XG4gICAgdHlwZSAnYSBoYXNodGJsID0gKGtleSwgJ2EpIHRcbiAgICB0eXBlICdhIHQgPSAnYSBoYXNodGJsXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICAgIGxldCBjbGVhciA9IGNsZWFyXG4gICAgbGV0IHJlc2V0ID0gcmVzZXRcbiAgICBsZXQgY29weSA9IGNvcHlcblxuICAgIGxldCBrZXlfaW5kZXggaCBrZXkgPVxuICAgICAgKEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgYWRkIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxuICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICgpXG4gICAgICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxuICAgIGxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBtZW1faW5fYnVja2V0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgICAgICBILmVxdWFsIGsga2V5IHx8IG1lbV9pbl9idWNrZXQga2V5IG5leHRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbWVtX2luX2J1Y2tldCBrZXkgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCByZWMgbWVtX2luX2J1Y2tldCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IGtleSBuZXh0XG5cbmxldCBtZW0gaCBrZXkgPVxuICBtZW1faW5fYnVja2V0IGtleSBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSlcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXJcbiAqICAgIC0gTGlua1xuICogICAgLSBEYXRhICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyICgqIENBTUxfRVBIRV9GSVJTVF9LRVkgaW4gd2Vhay5oICopXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2FjYyAtPiAnYWNjKSAtPiB0IC0+ICdhY2MgLT4gJ2FjY1xuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuICAoKiBHZW5lcmFsIGF1eGlsaWFyeSBmdW5jdGlvbiBmb3Igc2VhcmNoaW5nIGZvciBhIHBhcnRpY3VsYXIgdmFsdWVcbiAgICogaW4gYSBoYXNoLXNldCwgYW5kIGFjdGluZyBhY2NvcmRpbmcgdG8gd2hldGhlciBvciBub3QgaXQncyBmb3VuZCAqKVxuXG4gIGxldCBmaW5kX2F1eCB0IGQgZm91bmQgbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgYXMgb3B0IHdoZW4gSC5lcXVhbCB2IGQgLT4gZm91bmQgYnVja2V0IGkgb3B0IHZcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICBsZXQgZmluZF9vcHQgdCBkID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgIG8gX3YgLT4gbylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IE5vbmUpXG5cbiAgbGV0IG1lcmdlIHQgZCAgICA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pIF9vICB2IC0+IHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAgaCAgaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCBpOyBkKVxuXG4gIGxldCBmaW5kIHQgZCAgICAgPSBmaW5kX2F1eCB0IGQgKGZ1biBfYiBfaSBfbyAgdiAtPiB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gX2ggX2kgLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCByZW1vdmUgdCBkICAgPSBmaW5kX2F1eCB0IGQgKGZ1biAgYiAgaSBfbyBfdiAtPiBzZXQgYiBpIE5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiAoKSlcblxuICBsZXQgbWVtIHQgZCAgICAgID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgX28gX3YgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IGZhbHNlKVxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGxvb3AgKGkgKyAxKSAodiA6OiBhY2N1KVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lID1cbiAgY2xlYXJfdGFnX3N0YWNrIHN0YXRlO1xuICB3aGlsZSBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSBkb1xuICAgIHBwX2Nsb3NlX2JveCBzdGF0ZSAoKVxuICBkb25lO1xuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBwcF9pbmZpbml0eTtcbiAgYWR2YW5jZV9sZWZ0IHN0YXRlO1xuICBpZiBlbmRfd2l0aF9uZXdsaW5lIHRoZW4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHBwX3Jpbml0IHN0YXRlXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBmb3JtYXQgdmFsdWVzIGFuZCB1c2UgYm94ZXMuXG5cbiopXG5cbigqIFRvIGZvcm1hdCBhIHN0cmluZy4gKilcbmxldCBwcF9wcmludF9hc19zaXplIHN0YXRlIHNpemUgcyA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHNcblxuXG5sZXQgcHBfcHJpbnRfYXMgc3RhdGUgaXNpemUgcyA9XG4gIHBwX3ByaW50X2FzX3NpemUgc3RhdGUgKFNpemUub2ZfaW50IGlzaXplKSBzXG5cblxubGV0IHBwX3ByaW50X3N0cmluZyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG5sZXQgcHBfcHJpbnRfYnl0ZXMgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChCeXRlcy5sZW5ndGggcykgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG4oKiBUbyBmb3JtYXQgYW4gaW50ZWdlci4gKilcbmxldCBwcF9wcmludF9pbnQgc3RhdGUgaSA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoSW50LnRvX3N0cmluZyBpKVxuXG4oKiBUbyBmb3JtYXQgYSBmbG9hdC4gKilcbmxldCBwcF9wcmludF9mbG9hdCBzdGF0ZSBmID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfZmxvYXQgZilcblxuKCogVG8gZm9ybWF0IGEgYm9vbGVhbi4gKilcbmxldCBwcF9wcmludF9ib29sIHN0YXRlIGIgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9ib29sIGIpXG5cbigqIFRvIGZvcm1hdCBhIGNoYXIuICopXG5sZXQgcHBfcHJpbnRfY2hhciBzdGF0ZSBjID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgMSAoU3RyaW5nLm1ha2UgMSBjKVxuXG5sZXQgcHBfcHJpbnRfbm90aGluZyBfc3RhdGUgKCkgPSAoKVxuXG5cbigqIE9wZW5pbmcgYm94ZXMuICopXG5sZXQgcHBfb3Blbl9oYm94IHN0YXRlICgpID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaGJveFxuYW5kIHBwX29wZW5fdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX3Zib3hcblxuYW5kIHBwX29wZW5faHZib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9odmJveFxuYW5kIHBwX29wZW5faG92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaG92Ym94XG5hbmQgcHBfb3Blbl9ib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ib3hcblxuXG4oKiBQcmludGluZyBxdWV1ZWQgdGV4dC5cblxuICAgW3BwX3ByaW50X2ZsdXNoXSBwcmludHMgYWxsIHBlbmRpbmcgaXRlbXMgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGFuZFxuICAgdGhlbiBmbHVzaGVzIHRoZSBsb3cgbGV2ZWwgb3V0cHV0IGRldmljZSBvZiB0aGUgZm9ybWF0dGVyIHRvIGFjdHVhbGx5XG4gICBkaXNwbGF5IHByaW50aW5nIG1hdGVyaWFsLlxuXG4gICBbcHBfcHJpbnRfbmV3bGluZV0gYmVoYXZlcyBhcyBbcHBfcHJpbnRfZmx1c2hdIGFmdGVyIHByaW50aW5nIGFuIGFkZGl0aW9uYWxcbiAgIG5ldyBsaW5lLiAqKVxubGV0IHBwX3ByaW50X25ld2xpbmUgc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZTp0cnVlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcbmFuZCBwcF9wcmludF9mbHVzaCBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lOmZhbHNlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcblxuXG4oKiBUbyBnZXQgYSBuZXdsaW5lIHdoZW4gb25lIGRvZXMgbm90IHdhbnQgdG8gY2xvc2UgdGhlIGN1cnJlbnQgYm94LiAqKVxubGV0IHBwX2ZvcmNlX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIFRvIGZvcm1hdCBzb21ldGhpbmcsIG9ubHkgaW4gY2FzZSB0aGUgbGluZSBoYXMganVzdCBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9wcmludF9pZl9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlXG4gICAgICB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfaWZfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogR2VuZXJhbGl6ZWQgYnJlYWsgaGludCB0aGF0IGFsbG93cyBwcmludGluZyBzdHJpbmdzIGJlZm9yZS9hZnRlclxuICAgc2FtZS1saW5lIG9mZnNldCAod2lkdGgpIG9yIG5ldy1saW5lIG9mZnNldCAqKVxubGV0IHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZSB+Zml0cyB+YnJlYWtzID1cbiAgbGV0IGJlZm9yZSwgd2lkdGgsIGFmdGVyID0gZml0cyBpblxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCB0b2tlbiA9IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBiZWZvcmUgKyB3aWR0aCArIFN0cmluZy5sZW5ndGggYWZ0ZXIgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG4oKiBQcmludGluZyBicmVhayBoaW50czpcbiAgIEEgYnJlYWsgaGludCBpbmRpY2F0ZXMgd2hlcmUgYSBib3ggbWF5IGJlIGJyb2tlbi5cbiAgIElmIGxpbmUgaXMgYnJva2VuIHRoZW4gb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudFxuICAgYm94IGVsc2UgKHRoZSB2YWx1ZSBvZikgd2lkdGggYmxhbmtzIGFyZSBwcmludGVkLiAqKVxubGV0IHBwX3ByaW50X2JyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZVxuICAgIH5maXRzOihcIlwiLCB3aWR0aCwgXCJcIikgfmJyZWFrczooXCJcIiwgb2Zmc2V0LCBcIlwiKVxuXG5cbigqIFByaW50IGEgc3BhY2UgOlxuICAgYSBzcGFjZSBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgYSBzaW5nbGUgc3BhY2UgaWYgdGhlIGJyZWFrIGRvZXMgbm90XG4gICBzcGxpdCB0aGUgbGluZTtcbiAgIGEgY3V0IGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBub3RoaW5nIGlmIHRoZSBicmVhayBkb2VzIG5vdCBzcGxpdCB0aGVcbiAgIGxpbmUuICopXG5sZXQgcHBfcHJpbnRfc3BhY2Ugc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAxIDBcbmFuZCBwcF9wcmludF9jdXQgc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAwIDBcblxuXG4oKiBUYWJ1bGF0aW9uIGJveGVzLiAqKVxubGV0IHBwX29wZW5fdGJveCBzdGF0ZSAoKSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS56ZXJvIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJlZ2luIChQcF90Ym94IChyZWYgW10pKTsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKiBDbG9zZSBhIHRhYnVsYXRpb24gYm94LiAqKVxubGV0IHBwX2Nsb3NlX3Rib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfdGVuZDsgbGVuZ3RoID0gMCB9IGluXG4gICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtO1xuICAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxXG4gIGVuZFxuXG5cbigqIFByaW50IGEgdGFidWxhdGlvbiBicmVhay4gKilcbmxldCBwcF9wcmludF90YnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YnJlYWsgKHdpZHRoLCBvZmZzZXQpOyBsZW5ndGggPSB3aWR0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG5cbmxldCBwcF9wcmludF90YWIgc3RhdGUgKCkgPSBwcF9wcmludF90YnJlYWsgc3RhdGUgMCAwXG5cbmxldCBwcF9zZXRfdGFiIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfc3RhYjsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gY29udHJvbCB0aGUgcHJldHR5LXByaW50ZXJzXG5cbiopXG5cbigqIFNldF9tYXhfYm94ZXMuICopXG5sZXQgcHBfc2V0X21heF9ib3hlcyBzdGF0ZSBuID0gaWYgbiA+IDEgdGhlbiBzdGF0ZS5wcF9tYXhfYm94ZXMgPC0gblxuXG4oKiBUbyBrbm93IHRoZSBjdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGJveGVzIGFsbG93ZWQuICopXG5sZXQgcHBfZ2V0X21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG5sZXQgcHBfb3Zlcl9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbigqIEVsbGlwc2lzLiAqKVxubGV0IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0YXRlIHMgPSBzdGF0ZS5wcF9lbGxpcHNpcyA8LSBzXG5hbmQgcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRvIHNldCB0aGUgbWFyZ2luIG9mIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX2xpbWl0IG4gPVxuICBpZiBuIDwgcHBfaW5maW5pdHkgdGhlbiBuIGVsc2UgcHJlZCBwcF9pbmZpbml0eVxuXG5cbigqIEludGVybmFsIHByZXR0eS1wcmludGVyIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWluX3NwYWNlX2xlZnQgPC0gbjtcbiAgICBzdGF0ZS5wcF9tYXhfaW5kZW50IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3Jpbml0IHN0YXRlXG5cblxuKCogSW5pdGlhbGx5LCB3ZSBoYXZlIDpcbiAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdCwgYW5kXG4gICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luLiAqKVxubGV0IHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG4gPVxuICBpZiBuID4gMSB0aGVuXG4gICAgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIChzdGF0ZS5wcF9tYXJnaW4gLSBuKVxuXG5cbmxldCBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9pbmRlbnRcblxubGV0IHBwX3NldF9tYXJnaW4gc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWFyZ2luIDwtIG47XG4gICAgbGV0IG5ld19tYXhfaW5kZW50ID1cbiAgICAgICgqIFRyeSB0byBtYWludGFpbiBtYXhfaW5kZW50IHRvIGl0cyBhY3R1YWwgdmFsdWUuICopXG4gICAgICBpZiBzdGF0ZS5wcF9tYXhfaW5kZW50IDw9IHN0YXRlLnBwX21hcmdpblxuICAgICAgdGhlbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGVsc2VcbiAgICAgICgqIElmIHBvc3NpYmxlIG1haW50YWluIHBwX21pbl9zcGFjZV9sZWZ0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgICAgICBpZiB0aGlzIGxlYWRzIHRvIGEgdG9vIHNtYWxsIG1heF9pbmRlbnQsIHRha2UgaGFsZiBvZiB0aGVcbiAgICAgICAgIG5ldyBtYXJnaW4sIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiAxLiAqKVxuICAgICAgIEludC5tYXggKEludC5tYXggKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0KVxuICAgICAgICAgICAgICAgIChzdGF0ZS5wcF9tYXJnaW4gLyAyKSkgMSBpblxuICAgICgqIFJlYnVpbGQgaW52YXJpYW50cy4gKilcbiAgICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuZXdfbWF4X2luZGVudFxuXG5cbigqKiBHZW9tZXRyeSBmdW5jdGlvbnMgYW5kIHR5cGVzICopXG50eXBlIGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OmludDsgbWFyZ2luOiBpbnR9XG5cbmxldCB2YWxpZGF0ZV9nZW9tZXRyeSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIGlmIG1heF9pbmRlbnQgPCAyIHRoZW5cbiAgICBFcnJvciBcIm1heF9pbmRlbnQgPCAyXCJcbiAgZWxzZSBpZiBtYXJnaW4gPD0gbWF4X2luZGVudCB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPD0gbWF4X2luZGVudFwiXG4gIGVsc2UgaWYgbWFyZ2luID49IHBwX2luZmluaXR5IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA+PSBwcF9pbmZpbml0eVwiXG4gIGVsc2UgT2sgKClcblxubGV0IGNoZWNrX2dlb21ldHJ5IGdlb21ldHJ5ID1cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IE9rICgpIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG5cbmxldCBwcF9nZXRfbWFyZ2luIHN0YXRlICgpID0gc3RhdGUucHBfbWFyZ2luXG5cbmxldCBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIHBwX3NldF9tYXJnaW4gc3RhdGUgbWFyZ2luO1xuICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBtYXhfaW5kZW50O1xuICAoKVxuXG5sZXQgcHBfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBtc2cgLT5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJGb3JtYXQucHBfc2V0X2dlb21ldHJ5OiBcIiBeIG1zZykpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIF9tc2cgLT5cbiAgICAgKClcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgPVxuICB7IG1hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RhdGUgKCk7IG1heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSB9XG5cbmxldCBwcF91cGRhdGVfZ2VvbWV0cnkgc3RhdGUgdXBkYXRlID1cbiAgbGV0IGdlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpIGluXG4gIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlICh1cGRhdGUgZ2VvbWV0cnkpXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUge1xuICAgICAgb3V0X3N0cmluZyA9IGY7XG4gICAgICBvdXRfZmx1c2ggPSBnO1xuICAgICAgb3V0X25ld2xpbmUgPSBoO1xuICAgICAgb3V0X3NwYWNlcyA9IGk7XG4gICAgICBvdXRfaW5kZW50ID0gajtcbiAgICB9ID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF9mbHVzaCA9IHN0YXRlLnBwX291dF9mbHVzaDtcbiAgb3V0X25ld2xpbmUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZTtcbiAgb3V0X3NwYWNlcyA9IHN0YXRlLnBwX291dF9zcGFjZXM7XG4gIG91dF9pbmRlbnQgPSBzdGF0ZS5wcF9vdXRfaW5kZW50O1xufVxuXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgc3RyaW5nIG91dHB1dCBhbmQgZmx1c2ggZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGcgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7IHN0YXRlLnBwX291dF9mbHVzaCA8LSBnXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoKVxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9uZXdsaW5lIHN0YXRlICgpID0gc3RhdGUucHBfb3V0X3N0cmluZyBcIlxcblwiIDAgIDFcblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IHNwYWNlcy4gKilcbmxldCBibGFua19saW5lID0gU3RyaW5nLm1ha2UgODAgJyAnXG5sZXQgcmVjIGRpc3BsYXlfYmxhbmtzIHN0YXRlIG4gPVxuICBpZiBuID4gMCB0aGVuXG4gIGlmIG4gPD0gODAgdGhlbiBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCBuIGVsc2VcbiAgYmVnaW5cbiAgICBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCA4MDtcbiAgICBkaXNwbGF5X2JsYW5rcyBzdGF0ZSAobiAtIDgwKVxuICBlbmRcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfaW5kZW50ID0gZGlzcGxheV9ibGFua3NcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zIGFzIHByaW50aW5nIHRvIGEgZ2l2ZW5cbiAgIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RhdGUgb2MgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIG91dHB1dF9zdWJzdHJpbmcgb2M7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSAoZnVuICgpIC0+IGZsdXNoIG9jKTtcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHN0YXRlXG5cbigqXG5cbiAgRGVmaW5pbmcgc3BlY2lmaWMgZm9ybWF0dGVyc1xuXG4qKVxuXG5sZXQgZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8XCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcbmxldCBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8L1wiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5cbmxldCBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnID0gaWdub3JlXG5sZXQgZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcgPSBpZ25vcmVcblxuKCogQnVpbGRpbmcgYSBmb3JtYXR0ZXIgZ2l2ZW4gaXRzIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuXG4gICBPdGhlciBmaWVsZHMgZ2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMuICopXG5sZXQgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqID1cbiAgKCogVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvcm1hdHRlciBjb250YWlucyBhIGR1bW15IGJveC4gKilcbiAgbGV0IHBwX3F1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCBzeXNfdG9rID1cbiAgICB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfYmVnaW4gKDAsIFBwX2hvdmJveCk7IGxlbmd0aCA9IDAgfSBpblxuICBRdWV1ZS5hZGQgc3lzX3RvayBwcF9xdWV1ZTtcbiAgbGV0IHNjYW5fc3RhY2sgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHNjYW5fc3RhY2s7XG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gMTsgcXVldWVfZWxlbSA9IHN5c190b2sgfSBzY2FuX3N0YWNrO1xuICBsZXQgcHBfbWFyZ2luID0gNzhcbiAgYW5kIHBwX21pbl9zcGFjZV9sZWZ0ID0gMTAgaW5cbiAge1xuICAgIHBwX3NjYW5fc3RhY2sgPSBzY2FuX3N0YWNrO1xuICAgIHBwX2Zvcm1hdF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90Ym94X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3RhZ19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJrX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmdpbiA9IHBwX21hcmdpbjtcbiAgICBwcF9taW5fc3BhY2VfbGVmdCA9IHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luO1xuICAgIHBwX2N1cnJlbnRfaW5kZW50ID0gMDtcbiAgICBwcF9pc19uZXdfbGluZSA9IHRydWU7XG4gICAgcHBfbGVmdF90b3RhbCA9IDE7XG4gICAgcHBfcmlnaHRfdG90YWwgPSAxO1xuICAgIHBwX2N1cnJfZGVwdGggPSAxO1xuICAgIHBwX21heF9ib3hlcyA9IG1heF9pbnQ7XG4gICAgcHBfZWxsaXBzaXMgPSBcIi5cIjtcbiAgICBwcF9vdXRfc3RyaW5nID0gZjtcbiAgICBwcF9vdXRfZmx1c2ggPSBnO1xuICAgIHBwX291dF9uZXdsaW5lID0gaDtcbiAgICBwcF9vdXRfc3BhY2VzID0gaTtcbiAgICBwcF9vdXRfaW5kZW50ID0gajtcbiAgICBwcF9wcmludF90YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya190YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya19vcGVuX3RhZyA9IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZztcbiAgICBwcF9tYXJrX2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWc7XG4gICAgcHBfcHJpbnRfb3Blbl90YWcgPSBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnO1xuICAgIHBwX3ByaW50X2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnO1xuICAgIHBwX3F1ZXVlID0gcHBfcXVldWU7XG4gIH1cblxuXG4oKiBCdWlsZCBhIGZvcm1hdHRlciBvdXQgb2YgaXRzIG91dCBmdW5jdGlvbnMuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMgb3V0X2Z1bnMgPVxuICBwcF9tYWtlX2Zvcm1hdHRlclxuICAgIG91dF9mdW5zLm91dF9zdHJpbmdcbiAgICBvdXRfZnVucy5vdXRfZmx1c2hcbiAgICBvdXRfZnVucy5vdXRfbmV3bGluZVxuICAgIG91dF9mdW5zLm91dF9zcGFjZXNcbiAgICBvdXRfZnVucy5vdXRfaW5kZW50XG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3aXRoIGRlZmF1bHQgZnVuY3Rpb25zIHRvIG91dHB1dCBzcGFjZXMsXG4gIGluZGVudGF0aW9uLCBhbmQgbmV3IGxpbmVzLiAqKVxubGV0IG1ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIGxldCBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggaWdub3JlIGlnbm9yZSBpZ25vcmUgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBwcGZcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbQnVmZmVyLnRdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYiA9XG4gIG1ha2VfZm9ybWF0dGVyIChCdWZmZXIuYWRkX3N1YnN0cmluZyBiKSBpZ25vcmVcblxuXG4oKiBBbGxvY2F0aW5nIGJ1ZmZlciBmb3IgcHJldHR5LXByaW50aW5nIHB1cnBvc2VzLlxuICAgRGVmYXVsdCBidWZmZXIgc2l6ZSBpcyBwcF9idWZmZXJfc2l6ZSBvciA1MTIuXG4qKVxubGV0IHBwX2J1ZmZlcl9zaXplID0gNTEyXG5sZXQgcHBfbWFrZV9idWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplXG5cbigqIFRoZSBzdGFuZGFyZCAoc2hhcmVkKSBidWZmZXIuICopXG5sZXQgc3RkYnVmID0gcHBfbWFrZV9idWZmZXIgKClcblxuKCogUHJlZGVmaW5lZCBmb3JtYXR0ZXJzIHN0YW5kYXJkIGZvcm1hdHRlciB0byBwcmludFxuICAgdG8gW1N0ZGxpYi5zdGRvdXRdLCBbU3RkbGliLnN0ZGVycl0sIGFuZCB7IXN0ZGJ1Zn0uICopXG5sZXQgc3RkX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3Rkb3V0XG5hbmQgZXJyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3RkZXJyXG5hbmQgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIgc3RkYnVmXG5cbigqIEluaXRpYWxpc2UgZG9tYWluIGxvY2FsIHN0YXRlICopXG5tb2R1bGUgRExTID0gRG9tYWluLkRMU1xuXG5sZXQgc3RkYnVmX2tleSA9IERMUy5uZXdfa2V5IHBwX21ha2VfYnVmZmVyXG5sZXQgXyA9IERMUy5zZXQgc3RkYnVmX2tleSBzdGRidWZcblxubGV0IHN0cl9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBmb3JtYXR0ZXJfb2ZfYnVmZmVyIChETFMuZ2V0IHN0ZGJ1Zl9rZXkpKVxubGV0IF8gPSBETFMuc2V0IHN0cl9mb3JtYXR0ZXJfa2V5IHN0cl9mb3JtYXR0ZXJcblxubGV0IGJ1ZmZlcmVkX291dF9zdHJpbmcga2V5IHN0ciBvZnMgbGVuID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgKERvbWFpbi5ETFMuZ2V0IGtleSkgc3RyIG9mcyBsZW5cblxubGV0IGJ1ZmZlcmVkX291dF9mbHVzaCBvYyBrZXkgKCkgPVxuICBsZXQgYnVmID0gRG9tYWluLkRMUy5nZXQga2V5IGluXG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0ciAwIGxlbiA7XG4gIFN0ZGxpYi5mbHVzaCBvYztcbiAgQnVmZmVyLmNsZWFyIGJ1ZlxuXG5sZXQgc3RkX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxubGV0IGVycl9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcblxubGV0IHN0ZF9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBsZXQgcHBmID1cbiAgICBwcF9tYWtlX2Zvcm1hdHRlciAoYnVmZmVyZWRfb3V0X3N0cmluZyBzdGRfYnVmX2tleSlcbiAgICAgIChidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZG91dCBzdGRfYnVmX2tleSkgaWdub3JlIGlnbm9yZSBpZ25vcmVcbiAgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBEb21haW4uYXRfZXhpdCAocHBfcHJpbnRfZmx1c2ggcHBmKTtcbiAgcHBmKVxubGV0IF8gPSBETFMuc2V0IHN0ZF9mb3JtYXR0ZXJfa2V5IHN0ZF9mb3JtYXR0ZXJcblxubGV0IGVycl9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBsZXQgcHBmID1cbiAgICBwcF9tYWtlX2Zvcm1hdHRlciAoYnVmZmVyZWRfb3V0X3N0cmluZyBlcnJfYnVmX2tleSlcbiAgICAgIChidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZGVyciBlcnJfYnVmX2tleSkgaWdub3JlIGlnbm9yZSBpZ25vcmVcbiAgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBEb21haW4uYXRfZXhpdCAocHBfcHJpbnRfZmx1c2ggcHBmKTtcbiAgcHBmKVxubGV0IF8gPSBETFMuc2V0IGVycl9mb3JtYXR0ZXJfa2V5IGVycl9mb3JtYXR0ZXJcblxubGV0IGdldF9zdGRfZm9ybWF0dGVyICgpID0gRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleVxubGV0IGdldF9lcnJfZm9ybWF0dGVyICgpID0gRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleVxubGV0IGdldF9zdHJfZm9ybWF0dGVyICgpID0gRExTLmdldCBzdHJfZm9ybWF0dGVyX2tleVxubGV0IGdldF9zdGRidWYgKCkgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXlcblxuKCogW2ZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZl0gZmx1c2hlcyBmb3JtYXR0ZXIgW3BwZl0sXG4gICB0aGVuIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlciBbYnVmXSB0aGF0IGlzIHJlc2V0LlxuICAgRm9ybWF0dGVyIFtwcGZdIGlzIHN1cHBvc2VkIHRvIHByaW50IHRvIGJ1ZmZlciBbYnVmXSwgb3RoZXJ3aXNlIHRoaXNcbiAgIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgdXNlZnVsLiAqKVxubGV0IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZiA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHBwZiB+ZW5kX3dpdGhfbmV3bGluZTpmYWxzZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIHNcblxuKCogRmx1c2ggW3N0cl9mb3JtYXR0ZXJdIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIFtzdGRidWZdLiAqKVxubGV0IGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkgPVxuICBsZXQgc3RkYnVmID0gRExTLmdldCBzdGRidWZfa2V5IGluXG4gIGxldCBzdHJfZm9ybWF0dGVyID0gRExTLmdldCBzdHJfZm9ybWF0dGVyX2tleSBpblxuICBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIHN0ZGJ1ZiBzdHJfZm9ybWF0dGVyXG5cbmxldCBtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IG91dHB1dCcgPSBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgaW5cbiAgICBsZXQgZmx1c2gnICgpID1cbiAgICAgIG91dHB1dCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgMCAoQnVmZmVyLmxlbmd0aCBidWYpO1xuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGZsdXNoICgpXG4gICAgaW5cbiAgICBtYWtlX2Zvcm1hdHRlciBvdXRwdXQnIGZsdXNoJylcblxubGV0IHN5bmNocm9uaXplZF9mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZ1xuKilcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nIGlzIHByZXR0eS1wcmludGluZyB3aXRoIG5vIGxvdyBsZXZlbCBvdXRwdXQuXG5cbiAgV2hlbiB1c2luZyBhIHN5bWJvbGljIGZvcm1hdHRlciwgYWxsIHJlZ3VsYXIgcHJldHR5LXByaW50aW5nIGFjdGl2aXRpZXNcbiAgb2NjdXIgYnV0IG91dHB1dCBtYXRlcmlhbCBpcyBzeW1ib2xpYyBhbmQgc3RvcmVkIGluIGEgYnVmZmVyIG9mIG91dHB1dFxuICBpdGVtcy4gQXQgdGhlIGVuZCBvZiBwcmV0dHktcHJpbnRpbmcsIGZsdXNoaW5nIHRoZSBvdXRwdXQgYnVmZmVyIGFsbG93c1xuICBwb3N0LXByb2Nlc3Npbmcgb2Ygc3ltYm9saWMgb3V0cHV0IGJlZm9yZSBsb3cgbGV2ZWwgb3V0cHV0IG9wZXJhdGlvbnMuXG4qKVxuXG50eXBlIHN5bWJvbGljX291dHB1dF9pdGVtID1cbiAgfCBPdXRwdXRfZmx1c2hcbiAgfCBPdXRwdXRfbmV3bGluZVxuICB8IE91dHB1dF9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgT3V0cHV0X3NwYWNlcyBvZiBpbnRcbiAgfCBPdXRwdXRfaW5kZW50IG9mIGludFxuXG50eXBlIHN5bWJvbGljX291dHB1dF9idWZmZXIgPSB7XG4gIG11dGFibGUgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDogc3ltYm9saWNfb3V0cHV0X2l0ZW0gbGlzdDtcbn1cblxubGV0IG1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciAoKSA9XG4gIHsgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzID0gW10gfVxuXG5sZXQgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIFtdXG5cbmxldCBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBMaXN0LnJldiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBpdGVtcyA9IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiBpblxuICBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYjtcbiAgaXRlbXNcblxubGV0IGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgaXRlbSA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gaXRlbSA6OiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgc3ltYm9saWNfZmx1c2ggc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9mbHVzaFxuICBhbmQgc3ltYm9saWNfbmV3bGluZSBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X25ld2xpbmVcbiAgYW5kIHN5bWJvbGljX3N0cmluZyBzb2IgcyBpIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zdHJpbmcgKFN0cmluZy5zdWIgcyBpIG4pKVxuICBhbmQgc3ltYm9saWNfc3BhY2VzIHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3BhY2VzIG4pXG4gIGFuZCBzeW1ib2xpY19pbmRlbnQgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9pbmRlbnQgbikgaW5cblxuICBsZXQgZiA9IHN5bWJvbGljX3N0cmluZyBzb2JcbiAgYW5kIGcgPSBzeW1ib2xpY19mbHVzaCBzb2JcbiAgYW5kIGggPSBzeW1ib2xpY19uZXdsaW5lIHNvYlxuICBhbmQgaSA9IHN5bWJvbGljX3NwYWNlcyBzb2JcbiAgYW5kIGogPSBzeW1ib2xpY19pbmRlbnQgc29iIGluXG4gIHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgalxuXG4oKlxuXG4gIEJhc2ljIGZ1bmN0aW9ucyBvbiB0aGUgJ3N0YW5kYXJkJyBmb3JtYXR0ZXJcbiAgKHRoZSBmb3JtYXR0ZXIgdGhhdCBwcmludHMgdG8gW1N0ZGxpYi5zdGRvdXRdKS5cblxuKilcblxubGV0IG9wZW5faGJveCB2ID0gcHBfb3Blbl9oYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl92Ym94IHYgPSBwcF9vcGVuX3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2h2Ym94IHYgPSBwcF9vcGVuX2h2Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9ob3Zib3ggdiA9IHBwX29wZW5faG92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9ib3ggdiA9IHBwX29wZW5fYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2VfYm94IHYgPSBwcF9jbG9zZV9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3N0YWcgdiA9IHBwX29wZW5fc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX3N0YWcgdiA9IHBwX2Nsb3NlX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9hcyB2IHcgPSBwcF9wcmludF9hcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgcHJpbnRfc3RyaW5nIHYgPSBwcF9wcmludF9zdHJpbmcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9ieXRlcyB2ID0gcHBfcHJpbnRfYnl0ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9pbnQgdiA9IHBwX3ByaW50X2ludCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2Zsb2F0IHYgPSBwcF9wcmludF9mbG9hdCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2NoYXIgdiA9IHBwX3ByaW50X2NoYXIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9ib29sIHYgPSBwcF9wcmludF9ib29sIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnJlYWsgdiB3ID0gcHBfcHJpbnRfYnJlYWsgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X2N1dCB2ID0gcHBfcHJpbnRfY3V0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfc3BhY2UgdiA9IHBwX3ByaW50X3NwYWNlIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZm9yY2VfbmV3bGluZSB2ID0gcHBfZm9yY2VfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2ZsdXNoIHYgPSBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X25ld2xpbmUgdiA9IHBwX3ByaW50X25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9pZl9uZXdsaW5lIHYgPSBwcF9wcmludF9pZl9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBvcGVuX3Rib3ggdiA9IHBwX29wZW5fdGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX3Rib3ggdiA9IHBwX2Nsb3NlX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF90YnJlYWsgdiB3ID0gcHBfcHJpbnRfdGJyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcblxuYW5kIHNldF90YWIgdiA9IHBwX3NldF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF90YWIgdiA9IHBwX3ByaW50X3RhYiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21hcmdpbiB2ID0gcHBfc2V0X21hcmdpbiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJnaW4gdiA9IHBwX2dldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXhfaW5kZW50IHYgPSBwcF9zZXRfbWF4X2luZGVudCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfaW5kZW50IHYgPSBwcF9nZXRfbWF4X2luZGVudCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2dlb21ldHJ5IH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBwcF9zZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIH5tYXhfaW5kZW50IH5tYXJnaW5cbmFuZCBzYWZlX3NldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIH5tYXhfaW5kZW50IH5tYXJnaW5cbmFuZCBnZXRfZ2VvbWV0cnkgdiA9IHBwX2dldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHVwZGF0ZV9nZW9tZXRyeSB2ID0gcHBfdXBkYXRlX2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2JveGVzIHYgPSBwcF9zZXRfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21heF9ib3hlcyB2ID0gcHBfZ2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG92ZXJfbWF4X2JveGVzIHYgPSBwcF9vdmVyX21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2VsbGlwc2lzX3RleHQgdiA9IHBwX3NldF9lbGxpcHNpc190ZXh0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2VsbGlwc2lzX3RleHQgdiA9IHBwX2dldF9lbGxpcHNpc190ZXh0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgdiB3ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfcHJpbnRfdGFncyB2ID1cbiAgcHBfc2V0X3ByaW50X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfcHJpbnRfdGFncyB2ID1cbiAgcHBfZ2V0X3ByaW50X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfbWFya190YWdzIHYgPVxuICBwcF9zZXRfbWFya190YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21hcmtfdGFncyB2ID1cbiAgcHBfZ2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF90YWdzIHYgPVxuICBwcF9zZXRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5cbigqIENvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKVxuXG5sZXQgcHBfcHJpbnRfaXRlciA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgaXRlciBwcF92IHBwZiB2ID1cbiAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgbGV0IHBwX3YgdiA9XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW4gaXNfZmlyc3QgOj0gZmFsc2UgZWxzZSBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3YgcHBmIHZcbiAgaW5cbiAgaXRlciBwcF92IHZcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHBwX3ByaW50X2xpc3QgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHYgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgTGlzdC5pdGVyIHBwX3YgcHBmIHZcblxuKCogVG8gZm9ybWF0IGFuIGFycmF5ICopXG5sZXQgcHBfcHJpbnRfYXJyYXkgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHYgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgQXJyYXkuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgU2VxLml0ZXIgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9zdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcblxubGV0IHByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBlcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpICgpO1xuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbmxldCAoKSA9IERvbWFpbi5iZWZvcmVfZmlyc3Rfc3Bhd24gKGZ1biAoKSAtPlxuICBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpO1xuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5fTtcblxuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5fTtcbilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaW5dIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyX29wdCA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCBvcHRpb24sICdkKSBmb3JtYXQ2IC0+ICdjXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxubGV0IGtzY2FuZl9nZW4gaWIgZWYgYWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycyB3aXRoXG4gICAgfCBleGNlcHRpb24gKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUgYXMgZXhjKSAtPlxuICAgICAgICBlZiBpYiBleGNcbiAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHwgYXJncyAtPlxuICAgICAgICBhZiAoYXBwbHkgZiBhcmdzKVxuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbmxldCBrc2NhbmYgaWIgZWYgZm10ID1cbiAga3NjYW5mX2dlbiBpYiBlZiAoZnVuIHggLT4geCkgZm10XG5cbmxldCBrc2NhbmZfb3B0IGliIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgKGZ1biBfIF8gLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeCkgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IGJzY2FuZl9vcHQgaWIgZm10ID0ga3NjYW5mX29wdCBpYiBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc3NjYW5mX29wdCBzIGZtdCA9IGtzY2FuZl9vcHQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGluIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBzY2FuZl9vcHQgZm10ID0ga3NjYW5mX29wdCBTY2FubmluZy5zdGRpbiBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChPYmoubWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+IGNsb3N1cmUgPSBcIiVpZGVudGl0eVwiXG5cbigqKioqIExhYmVscyAqKioqKVxuXG5sZXQgcHVibGljX21ldGhvZF9sYWJlbCBzIDogdGFnID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGxldCB0YWcgPSBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdSBpblxuICAoKiBQcmludGYuZXByaW50ZiBcIiVzID0gJWRcXG5cIiBzIHRhZzsgZmx1c2ggc3RkZXJyOyAqKVxuICBPYmoubWFnaWMgdGFnXG5cbigqKioqIFNwYXJzZSBhcnJheSAqKioqKVxuXG5tb2R1bGUgVmFycyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgdmFycyA9IGludCBWYXJzLnRcblxubW9kdWxlIE1ldGhzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBtZXRocyA9IGxhYmVsIE1ldGhzLnRcbm1vZHVsZSBMYWJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IGxhYmVsIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIGxhYnMgPSBib29sIExhYnMudFxuXG4oKiBUaGUgY29tcGlsZXIgYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGlzIHN0cnVjdHVyZSBpcyBbc2l6ZV0uICopXG50eXBlIHRhYmxlID1cbiB7IG11dGFibGUgc2l6ZTogaW50O1xuICAgbXV0YWJsZSBtZXRob2RzOiBjbG9zdXJlIGFycmF5O1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X25hbWU6IG1ldGhzO1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X2xhYmVsOiBsYWJzO1xuICAgbXV0YWJsZSBwcmV2aW91c19zdGF0ZXM6XG4gICAgIChtZXRocyAqIGxhYnMgKiAobGFiZWwgKiBpdGVtKSBsaXN0ICogdmFycyAqXG4gICAgICBsYWJlbCBsaXN0ICogc3RyaW5nIGxpc3QpIGxpc3Q7XG4gICBtdXRhYmxlIGhpZGRlbl9tZXRoczogKGxhYmVsICogaXRlbSkgbGlzdDtcbiAgIG11dGFibGUgdmFyczogdmFycztcbiAgIG11dGFibGUgaW5pdGlhbGl6ZXJzOiAob2JqIC0+IHVuaXQpIGxpc3QgfVxuXG5sZXQgZHVtbXlfdGFibGUgPVxuICB7IG1ldGhvZHMgPSBbfCBkdW1teV9pdGVtIHxdO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSAwIH1cblxubGV0IHRhYmxlX2NvdW50ID0gcmVmIDBcblxuKCogZHVtbXlfbWV0IHNob3VsZCBiZSBhIHBvaW50ZXIsIHNvIHVzZSBhbiBhdG9tICopXG5sZXQgZHVtbXlfbWV0IDogaXRlbSA9IE9iai5vYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gT2JqLm1hZ2ljIGxlbjtcbiAgbWV0aG9kcy4oMSkgPC0gT2JqLm1hZ2ljIChmaXRfc2l6ZSBsZW4gKiBTeXMud29yZF9zaXplIC8gOCAtIDEpO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBtZXRob2RzLihpKjIrMykgPC0gT2JqLm1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IE9iai5tYWdpYyAwIHRoZW4gW10gZWxzZSBBcnJheS50b19saXN0IGFyclxuXG5sZXQgbmFycm93IHRhYmxlIHZhcnMgdmlydF9tZXRocyBjb25jcl9tZXRocyA9XG4gIGxldCB2YXJzID0gdG9fbGlzdCB2YXJzXG4gIGFuZCB2aXJ0X21ldGhzID0gdG9fbGlzdCB2aXJ0X21ldGhzXG4gIGFuZCBjb25jcl9tZXRocyA9IHRvX2xpc3QgY29uY3JfbWV0aHMgaW5cbiAgbGV0IHZpcnRfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIHZpcnRfbWV0aHMgaW5cbiAgbGV0IGNvbmNyX21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBjb25jcl9tZXRocyBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC1cbiAgICAgKHRhYmxlLm1ldGhvZHNfYnlfbmFtZSwgdGFibGUubWV0aG9kc19ieV9sYWJlbCwgdGFibGUuaGlkZGVuX21ldGhzLFxuICAgICAgdGFibGUudmFycywgdmlydF9tZXRoX2xhYnMsIHZhcnMpXG4gICAgIDo6IHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgIFZhcnMuZm9sZFxuICAgICAgKGZ1biBsYWIgaW5mbyB0dmFycyAtPlxuICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmFycyB0aGVuIFZhcnMuYWRkIGxhYiBpbmZvIHR2YXJzIGVsc2UgdHZhcnMpXG4gICAgICB0YWJsZS52YXJzIFZhcnMuZW1wdHk7XG4gIGxldCBieV9uYW1lID0gcmVmIE1ldGhzLmVtcHR5IGluXG4gIGxldCBieV9sYWJlbCA9IHJlZiBMYWJzLmVtcHR5IGluXG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PVxuICAgICAgICAgIExhYnMuYWRkIGxhYmVsXG4gICAgICAgICAgICAodHJ5IExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHdpdGggTm90X2ZvdW5kIC0+IHRydWUpXG4gICAgICAgICAgICAhYnlfbGFiZWwpXG4gICAgY29uY3JfbWV0aHMgY29uY3JfbWV0aF9sYWJzO1xuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj0gTGFicy5hZGQgbGFiZWwgZmFsc2UgIWJ5X2xhYmVsKVxuICAgIHZpcnRfbWV0aHMgdmlydF9tZXRoX2xhYnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSAhYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSAhYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aF9sYWJzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIFtdXG5cbmxldCB3aWRlbiB0YWJsZSA9XG4gIGxldCAoYnlfbmFtZSwgYnlfbGFiZWwsIHNhdmVkX2hpZGRlbl9tZXRocywgc2F2ZWRfdmFycywgdmlydF9tZXRocywgdmFycykgPVxuICAgIExpc3QuaGQgdGFibGUucHJldmlvdXNfc3RhdGVzXG4gIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LSBMaXN0LnRsIHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gcyB2IC0+IFZhcnMuYWRkIHYgKFZhcnMuZmluZCB2IHRhYmxlLnZhcnMpIHMpXG4gICAgICAgc2F2ZWRfdmFycyB2YXJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRocyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBzYXZlZF9oaWRkZW5fbWV0aHNcblxubGV0IG5ld19zbG90IHRhYmxlID1cbiAgbGV0IGluZGV4ID0gdGFibGUuc2l6ZSBpblxuICB0YWJsZS5zaXplIDwtIGluZGV4ICsgMTtcbiAgaW5kZXhcblxubGV0IG5ld192YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgaW5kZXggPSBuZXdfc2xvdCB0YWJsZSBpblxuICAgIGlmIG5hbWUgPD4gXCJcIiB0aGVuIHRhYmxlLnZhcnMgPC0gVmFycy5hZGQgbmFtZSBpbmRleCB0YWJsZS52YXJzO1xuICAgIGluZGV4XG5cbmxldCB0b19hcnJheSBhcnIgPVxuICBpZiBhcnIgPSBPYmoubWFnaWMgMCB0aGVuIFt8fF0gZWxzZSBhcnJcblxubGV0IG5ld19tZXRob2RzX3ZhcmlhYmxlcyB0YWJsZSBtZXRocyB2YWxzID1cbiAgbGV0IG1ldGhzID0gdG9fYXJyYXkgbWV0aHMgaW5cbiAgbGV0IG5tZXRocyA9IEFycmF5Lmxlbmd0aCBtZXRocyBhbmQgbnZhbHMgPSBBcnJheS5sZW5ndGggdmFscyBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobm1ldGhzICsgbnZhbHMpIDAgaW5cbiAgZm9yIGkgPSAwIHRvIG5tZXRocyAtIDEgZG9cbiAgICByZXMuKGkpIDwtIGdldF9tZXRob2RfbGFiZWwgdGFibGUgbWV0aHMuKGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudmFscyAtIDEgZG9cbiAgICByZXMuKGkrbm1ldGhzKSA8LSBuZXdfdmFyaWFibGUgdGFibGUgdmFscy4oaSlcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBnZXRfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzIHdpdGggTm90X2ZvdW5kIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlcyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIHRhYmxlKSBuYW1lc1xuXG5sZXQgYWRkX2luaXRpYWxpemVyIHRhYmxlIGYgPVxuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gZjo6dGFibGUuaW5pdGlhbGl6ZXJzXG5cbigqXG5tb2R1bGUgS2V5cyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSB0YWcgYXJyYXkgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbmxldCBrZXlfbWFwID0gcmVmIEtleXMuZW1wdHlcbmxldCBnZXRfa2V5IHRhZ3MgOiBpdGVtID1cbiAgdHJ5IG1hZ2ljIChLZXlzLmZpbmQgdGFncyAha2V5X21hcCA6IHRhZyBhcnJheSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBrZXlfbWFwIDo9IEtleXMuYWRkIHRhZ3MgdGFncyAha2V5X21hcDtcbiAgICBtYWdpYyB0YWdzXG4qKVxuXG5sZXQgY3JlYXRlX3RhYmxlIHB1YmxpY19tZXRob2RzID1cbiAgaWYgcHVibGljX21ldGhvZHMgPT0gT2JqLm1hZ2ljIDAgdGhlbiBuZXdfdGFibGUgW3x8XSBlbHNlXG4gICgqIFtwdWJsaWNfbWV0aG9kc10gbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgZm9yIGJ5dGVjb2RlICopXG4gIGxldCB0YWdzID0gQXJyYXkubWFwIHB1YmxpY19tZXRob2RfbGFiZWwgcHVibGljX21ldGhvZHMgaW5cbiAgbGV0IHRhYmxlID0gbmV3X3RhYmxlIHRhZ3MgaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgbWV0IC0+XG4gICAgICBsZXQgbGFiID0gaSoyKzIgaW5cbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSAgPC0gTWV0aHMuYWRkIG1ldCBsYWIgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWIgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsKVxuICAgIHB1YmxpY19tZXRob2RzO1xuICB0YWJsZVxuXG5sZXQgaW5pdF9jbGFzcyB0YWJsZSA9XG4gIGluc3RfdmFyX2NvdW50IDo9ICFpbnN0X3Zhcl9jb3VudCArIHRhYmxlLnNpemUgLSAxO1xuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gTGlzdC5yZXYgdGFibGUuaW5pdGlhbGl6ZXJzO1xuICByZXNpemUgdGFibGUgKDMgKyBPYmoubWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCBPYmoucmVwciBpbml0IHxdO1xuICAgICBPYmoubWFnaWMgKEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIGNsYSkgKHRvX2FycmF5IHZhbHMpIDogaW50IGFycmF5KTtcbiAgICAgQXJyYXkubWFwXG4gICAgICAgKGZ1biBubSAtPiBPYmoucmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIE9iai5tYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZVxuICAgIHRoZW4gbiBlbHNlIG5ld19tZXRob2QgdGFibGVcbiAgaW5cbiAgdGFibGUubWV0aG9kcy4obikgPC0gT2JqLm1hZ2ljIDA7XG4gIG5cblxudHlwZSBpbXBsID1cbiAgICBHZXRDb25zdFxuICB8IEdldFZhclxuICB8IEdldEVudlxuICB8IEdldE1ldGhcbiAgfCBTZXRWYXJcbiAgfCBBcHBDb25zdFxuICB8IEFwcFZhclxuICB8IEFwcEVudlxuICB8IEFwcE1ldGhcbiAgfCBBcHBDb25zdENvbnN0XG4gIHwgQXBwQ29uc3RWYXJcbiAgfCBBcHBDb25zdEVudlxuICB8IEFwcENvbnN0TWV0aFxuICB8IEFwcFZhckNvbnN0XG4gIHwgQXBwRW52Q29uc3RcbiAgfCBBcHBNZXRoQ29uc3RcbiAgfCBNZXRoQXBwQ29uc3RcbiAgfCBNZXRoQXBwVmFyXG4gIHwgTWV0aEFwcEVudlxuICB8IE1ldGhBcHBNZXRoXG4gIHwgU2VuZENvbnN0XG4gIHwgU2VuZFZhclxuICB8IFNlbmRFbnZcbiAgfCBTZW5kTWV0aFxuICB8IENsb3N1cmUgb2YgY2xvc3VyZVxuXG5sZXQgbWV0aG9kX2ltcGwgdGFibGUgaSBhcnIgPVxuICBsZXQgbmV4dCAoKSA9IGluY3IgaTsgT2JqLm1hZ2ljIGFyci4oIWkpIGluXG4gIG1hdGNoIG5leHQoKSB3aXRoXG4gICAgR2V0Q29uc3QgLT4gbGV0IHggOiB0ID0gbmV4dCgpIGluIGdldF9jb25zdCB4XG4gIHwgR2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X3ZhciBuXG4gIHwgR2V0RW52ICAgLT4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X2VudiBlIG5cbiAgfCBHZXRNZXRoICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfbWV0aCBuXG4gIHwgU2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gc2V0X3ZhciBuXG4gIHwgQXBwQ29uc3QgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gYXBwX2NvbnN0IGYgeFxuICB8IEFwcFZhciAgIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfdmFyIGYgblxuICB8IEFwcEVudiAgIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiAgbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnYgZiBlIG5cbiAgfCBBcHBNZXRoICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX21ldGggZiBuXG4gIHwgQXBwQ29uc3RDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IHkgPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9jb25zdCBmIHggeVxuICB8IEFwcENvbnN0VmFyIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X3ZhciBmIHggblxuICB8IEFwcENvbnN0RW52IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9lbnYgZiB4IGUgblxuICB8IEFwcENvbnN0TWV0aCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9tZXRoIGYgeCBuXG4gIHwgQXBwVmFyQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfdmFyX2NvbnN0IGYgbiB4XG4gIHwgQXBwRW52Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX2Vudl9jb25zdCBmIGUgbiB4XG4gIHwgQXBwTWV0aENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX21ldGhfY29uc3QgZiBuIHhcbiAgfCBNZXRoQXBwQ29uc3QgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIG1ldGhfYXBwX2NvbnN0IG4geFxuICB8IE1ldGhBcHBWYXIgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX3ZhciBuIG1cbiAgfCBNZXRoQXBwRW52IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpblxuICAgICAgbWV0aF9hcHBfZW52IG4gZSBtXG4gIHwgTWV0aEFwcE1ldGggLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX21ldGggbiBtXG4gIHwgU2VuZENvbnN0IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBzZW5kX2NvbnN0IG0geCAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRWYXIgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX3ZhciBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kRW52IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgc2VuZF9lbnYgbSBlIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kTWV0aCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfbWV0aCBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBDbG9zdXJlIF8gYXMgY2xvIC0+IE9iai5tYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6ID9yYW5kb20gKCp0aHdhcnQgdG9vbHMvc3luY19zdGRsaWJfZG9jcyopIDogYm9vbCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5IGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5IGVwaCBrZXk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkgPVxuICAgIG1hdGNoIGdldF9rZXkgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkgLT4gZ2V0X2RhdGEgZXBoXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoID0gSC5zZWVkZWRfaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsxX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrMV9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5IGsgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5IGUgd2l0aFxuICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5IGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleSBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXkxIGtleTIgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkxIGVwaCBrZXkxO1xuICAgIHNldF9rZXkyIGVwaCBrZXkyO1xuICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBrZXkxKTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleTEga2V5MiA9XG4gICAgbWF0Y2ggZ2V0X2tleTEgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkxIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGdldF9rZXkyIGVwaCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkyIC0+IGdldF9kYXRhIGVwaFxuICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuc2VlZGVkX2hhc2ggc2VlZCBrMSArIEgyLnNlZWRlZF9oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrMSwgJ2syLCAnZCkgdCA9ICgnazEsICdrMiwgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazJfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrMSBrMiBkID0gYiA6PSBrMl9tYWtlIGsxIGsyIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgazEgazIgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5MSBlLCBnZXRfa2V5MiBlIHdpdGhcbiAgICAgIHwgU29tZSB4MSwgU29tZSB4MiB3aGVuIHgxID09IGsxICYmIHgyID09IGsyIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsxIGsyID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsxIGsyIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsxIGsyID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrMSBrMikgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXlzIGRhdGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGtleXMgaW5cbiAgICBsZXQgZXBoID0gY3JlYXRlIGwgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gc2V0X2tleSBlcGggaSBrZXlzLihpKSBkb25lO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5cyA9XG4gICAgbGV0IGwgPSBsZW5ndGggZXBoIGluXG4gICAgdHJ5XG4gICAgICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBrZXlzIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICBtYXRjaCBnZXRfa2V5IGVwaCBpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleXMuKGkpIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBnZXRfZGF0YSBlcGhcbiAgICB3aXRoIEV4aXQgLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5zZWVkZWRfaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrbl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0ga25fbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgayBlID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBsZW5ndGggZSA8PiBBcnJheS5sZW5ndGggayB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggayAtIDEgZG9cbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGUgaSB3aXRoXG4gICAgICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsuKGkpIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCBFeGl0IC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuZXhpc3RzIChmdW5jdGlvbiAnXFxcIicgfCAnJScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGYgdGhlblxuICAgICAgZmFpbHdpdGggKFwiRmlsZW5hbWUucXVvdGVfY29tbWFuZDogYmFkIGZpbGUgbmFtZSBcIiBeIGYpXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgZiAnICcgdGhlblxuICAgICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcIlxcXCJcIjsgZjsgXCJcXFwiXCJdXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGlmIGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmZcbiAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICBlbHNlIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIlxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmdfa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByYW5kb21fc3RhdGUgPSBEb21haW4uRExTLmdldCBwcm5nX2tleSBpblxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRvbV9zdGF0ZSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6RnVuLmlkIChmdW4gKCkgLT4gdGVtcF9kaXJfbmFtZSlcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBEb21haW4uRExTLnNldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDIwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKVxuICAgIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgKG5hbWUsXG4gICAgICAgb3Blbl9vdXRfZ2VuIChPcGVuX3dyb25seTo6T3Blbl9jcmVhdDo6T3Blbl9leGNsOjptb2RlKSBwZXJtcyBuYW1lKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IHRlbXBfZGlyID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpXG4gICAgPyhwZXJtcyA9IDBvNzAwKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIFN5cy5ta2RpciBuYW1lIHBlcm1zO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ29tcGxleCBudW1iZXJzICopXG5cbnR5cGUgdCA9IHsgcmU6IGZsb2F0OyBpbTogZmxvYXQgfVxuXG5sZXQgemVybyA9IHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbmxldCBvbmUgPSB7IHJlID0gMS4wOyBpbSA9IDAuMCB9XG5sZXQgaSA9IHsgcmUgPSAwLjA7IGltID0gMS4wIH1cblxubGV0IGFkZCB4IHkgPSB7IHJlID0geC5yZSArLiB5LnJlOyBpbSA9IHguaW0gKy4geS5pbSB9XG5cbmxldCBzdWIgeCB5ID0geyByZSA9IHgucmUgLS4geS5yZTsgaW0gPSB4LmltIC0uIHkuaW0gfVxuXG5sZXQgbmVnIHggPSB7IHJlID0gLS4geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IGNvbmogeCA9IHsgcmUgPSB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgbXVsIHggeSA9IHsgcmUgPSB4LnJlICouIHkucmUgLS4geC5pbSAqLiB5LmltO1xuICAgICAgICAgICAgICAgIGltID0geC5yZSAqLiB5LmltICsuIHguaW0gKi4geS5yZSB9XG5cbmxldCBkaXYgeCB5ID1cbiAgaWYgYWJzX2Zsb2F0IHkucmUgPj0gYWJzX2Zsb2F0IHkuaW0gdGhlblxuICAgIGxldCByID0geS5pbSAvLiB5LnJlIGluXG4gICAgbGV0IGQgPSB5LnJlICsuIHIgKi4geS5pbSBpblxuICAgIHsgcmUgPSAoeC5yZSArLiByICouIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9ICh4LmltIC0uIHIgKi4geC5yZSkgLy4gZCB9XG4gIGVsc2VcbiAgICBsZXQgciA9IHkucmUgLy4geS5pbSBpblxuICAgIGxldCBkID0geS5pbSArLiByICouIHkucmUgaW5cbiAgICB7IHJlID0gKHIgKi4geC5yZSArLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAociAqLiB4LmltIC0uIHgucmUpIC8uIGQgfVxuXG5sZXQgaW52IHggPSBkaXYgb25lIHhcblxubGV0IG5vcm0yIHggPSB4LnJlICouIHgucmUgKy4geC5pbSAqLiB4LmltXG5cbmxldCBub3JtIHggPSBGbG9hdC5oeXBvdCB4LnJlIHguaW1cblxubGV0IGFyZyB4ID0gYXRhbjIgeC5pbSB4LnJlXG5cbmxldCBwb2xhciBuIGEgPSB7IHJlID0gY29zIGEgKi4gbjsgaW0gPSBzaW4gYSAqLiBuIH1cblxubGV0IHNxcnQgeCA9XG4gIGlmIHgucmUgPSAwLjAgJiYgeC5pbSA9IDAuMCB0aGVuIHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICAgIGxldCB3ID1cbiAgICAgIGlmIHIgPj0gaSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBxID0gaSAvLiByIGluXG4gICAgICAgIHNxcnQocikgKi4gc3FydCgwLjUgKi4gKDEuMCArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBxID0gciAvLiBpIGluXG4gICAgICAgIHNxcnQoaSkgKi4gc3FydCgwLjUgKi4gKHEgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgaW5cbiAgICBpZiB4LnJlID49IDAuMFxuICAgIHRoZW4geyByZSA9IHc7ICBpbSA9IDAuNSAqLiB4LmltIC8uIHcgfVxuICAgIGVsc2UgeyByZSA9IDAuNSAqLiBpIC8uIHc7ICBpbSA9IGlmIHguaW0gPj0gMC4wIHRoZW4gdyBlbHNlIC0uIHcgfVxuICBlbmRcblxubGV0IGV4cCB4ID1cbiAgbGV0IGUgPSBleHAgeC5yZSBpbiB7IHJlID0gZSAqLiBjb3MgeC5pbTsgaW0gPSBlICouIHNpbiB4LmltIH1cblxubGV0IGxvZyB4ID0geyByZSA9IGxvZyAobm9ybSB4KTsgaW0gPSBhdGFuMiB4LmltIHgucmUgfVxuXG5sZXQgcG93IHggeSA9IGV4cCAobXVsIHkgKGxvZyB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gLi5cbmV4dGVybmFsIHBlcmZvcm0gOiAnYSB0IC0+ICdhID0gXCIlcGVyZm9ybVwiXG5cbnR5cGUgZXhuICs9IFVuaGFuZGxlZDogJ2EgdCAtPiBleG5cbmV4Y2VwdGlvbiBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbmxldCAoKSA9XG4gIGxldCBwcmludGVyID0gZnVuY3Rpb25cbiAgICB8IFVuaGFuZGxlZCB4IC0+XG4gICAgICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIlN0ZGxpYi5FZmZlY3QuVW5oYW5kbGVkKCVzKVwiXG4gICAgICAgICAgICAoUHJpbnRleGMuc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBAQCBPYmoucmVwciB4KVxuICAgICAgICBpblxuICAgICAgICBTb21lIG1zZ1xuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgcHJpbnRlclxuXG4oKiBSZWdpc3RlciB0aGUgZXhjZXB0aW9ucyBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiBhY2Nlc3MgaXQgKilcbnR5cGUgXyB0ICs9IFNob3VsZF9ub3Rfc2VlX3RoaXNfXyA6IHVuaXQgdFxubGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJFZmZlY3QuVW5oYW5kbGVkXCJcbiAgICAgICAgICAoVW5oYW5kbGVkIFNob3VsZF9ub3Rfc2VlX3RoaXNfXylcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIlxuICAgICAgICAgIENvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcblxudHlwZSAoJ2EsICdiKSBzdGFjayBbQEBpbW1lZGlhdGVdXG50eXBlIGxhc3RfZmliZXIgW0BAaW1tZWRpYXRlXVxuXG5leHRlcm5hbCByZXN1bWUgOlxuICAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+IGxhc3RfZmliZXIgLT4gJ2IgPSBcIiVyZXN1bWVcIlxuZXh0ZXJuYWwgcnVuc3RhY2sgOiAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+ICdiID0gXCIlcnVuc3RhY2tcIlxuXG5tb2R1bGUgRGVlcCA9IHN0cnVjdFxuXG4gIHR5cGUgKCdhLCdiKSBjb250aW51YXRpb25cblxuICBleHRlcm5hbCB0YWtlX2NvbnRfbm9leGMgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gKCdhLCAnYikgc3RhY2sgPVxuICAgIFwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXCIgW0BAbm9hbGxvY11cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcbiAgZXh0ZXJuYWwgY29udF9sYXN0X2ZpYmVyIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgPSBcIiVmaWVsZDFcIlxuICBleHRlcm5hbCBjb250X3NldF9sYXN0X2ZpYmVyIDpcbiAgICAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiB1bml0ID0gXCIlc2V0ZmllbGQxXCJcblxuICBsZXQgY29udGludWUgayB2ID1cbiAgICByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIHggLT4geCkgdiAoY29udF9sYXN0X2ZpYmVyIGspXG5cbiAgbGV0IGRpc2NvbnRpbnVlIGsgZSA9XG4gICAgcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+IHJhaXNlIGUpIGUgKGNvbnRfbGFzdF9maWJlciBrKVxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoX2JhY2t0cmFjZSBrIGUgYnQgPVxuICAgIHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPiBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJ0KVxuICAgICAgZSAoY29udF9sYXN0X2ZpYmVyIGspXG5cbiAgdHlwZSAoJ2EsJ2IpIGhhbmRsZXIgPVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyB0IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2IgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBtYXRjaF93aXRoIGNvbXAgYXJnIGhhbmRsZXIgPVxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJ1bnN0YWNrIHMgY29tcCBhcmdcblxuICB0eXBlICdhIGVmZmVjdF9oYW5kbGVyID1cbiAgICB7IGVmZmM6ICdiLiAnYiB0IC0+ICgoJ2IsJ2EpIGNvbnRpbnVhdGlvbiAtPiAnYSkgb3B0aW9uIH1cblxuICBsZXQgdHJ5X3dpdGggY29tcCBhcmcgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMnIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIChmdW4geCAtPiB4KSAoZnVuIGUgLT4gcmFpc2UgZSkgZWZmYycgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcblxubW9kdWxlIFNoYWxsb3cgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG5cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcblxuICBleHRlcm5hbCBjb250X2xhc3RfZmliZXIgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciA9IFwiJWZpZWxkMVwiXG4gIGV4dGVybmFsIGNvbnRfc2V0X2xhc3RfZmliZXIgOlxuICAgICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDFcIlxuXG4gIGxldCBmaWJlciA6IHR5cGUgYSBiLiAoYSAtPiBiKSAtPiAoYSwgYikgY29udGludWF0aW9uID0gZnVuIGYgLT5cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3QgdHlwZSBfIHQgKz0gSW5pdGlhbF9zZXR1cF9fIDogYSB0IGVuZCBpblxuICAgIGxldCBleGNlcHRpb24gRSBvZiAoYSxiKSBjb250aW51YXRpb24gaW5cbiAgICBsZXQgZicgKCkgPSBmIChwZXJmb3JtIE0uSW5pdGlhbF9zZXR1cF9fKSBpblxuICAgIGxldCBlcnJvciBfID0gZmFpbHdpdGggXCJpbXBvc3NpYmxlXCIgaW5cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGVmZiB3aXRoXG4gICAgICB8IE0uSW5pdGlhbF9zZXR1cF9fIC0+XG4gICAgICAgICAgY29udF9zZXRfbGFzdF9maWJlciBrIGxhc3RfZmliZXI7XG4gICAgICAgICAgcmFpc2Vfbm90cmFjZSAoRSBrKVxuICAgICAgfCBfIC0+IGVycm9yICgpXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGVycm9yIGVycm9yIGVmZmMgaW5cbiAgICBtYXRjaCBydW5zdGFjayBzIGYnICgpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFIGsgLT4ga1xuICAgIHwgXyAtPiBlcnJvciAoKVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdhKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgdXBkYXRlX2hhbmRsZXIgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+XG4gICAgKCdiIC0+ICdjKSAtPlxuICAgIChleG4gLT4gJ2MpIC0+XG4gICAgKCdkIHQgLT4gKCdkLCdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYykgLT5cbiAgICAoJ2EsJ2MpIHN0YWNrID0gXCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBjb250aW51ZV9nZW4gayByZXN1bWVfZnVuIHYgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgY29udF9zZXRfbGFzdF9maWJlciBrIGxhc3RfZmliZXI7XG4gICAgICAgICAgZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBsYXN0X2ZpYmVyID0gY29udF9sYXN0X2ZpYmVyIGsgaW5cbiAgICBsZXQgc3RhY2sgPSB1cGRhdGVfaGFuZGxlciBrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJlc3VtZSBzdGFjayByZXN1bWVfZnVuIHYgbGFzdF9maWJlclxuXG4gIGxldCBjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIHggLT4geCkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGggayB2IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4gZSAtPiByYWlzZSBlKSB2IGhhbmRsZXJcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayB2IGJ0IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4gZSAtPiBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJ0KSB2IGhhbmRsZXJcblxuICBleHRlcm5hbCBnZXRfY2FsbHN0YWNrIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPiBpbnQgLT4gUHJpbnRleGMucmF3X2JhY2t0cmFjZSA9XG4gICAgXCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXCJcbmVuZFxuIiwiW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiBibGl0X3N0cmluZyBkb2Vzbid0IGV4aXN0IGluIFtTdGRMYWJlbHMuQnl0ZXNdLi4uICAqKVxubGV0IGJ5dGVzX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgQnl0ZXMuYmxpdF9zdHJpbmcgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG47O1xuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBGb3JtYXRcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5cbmxldCBzZXhwX29mX3QgdCA9IHRcbmxldCB0X29mX3NleHAgdCA9IHRcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IHJlcyA9IGNvbXBhcmUgeCB5IGluXG4gICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgeHMgeXNcblxuYW5kIGNvbXBhcmUgYSBiID1cbiAgaWYgYSA9PSBiXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IEF0b20gYSwgQXRvbSBiIC0+IFN0cmluZy5jb21wYXJlIGEgYlxuICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgIHwgTGlzdCBhLCBMaXN0IGIgLT4gY29tcGFyZV9saXN0IGEgYilcbjs7XG5cbmxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zIG9mIHRcbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIHRcblxubW9kdWxlIFByaW50aW5nID0gc3RydWN0XG4gICgqIERlZmF1bHQgaW5kZW50YXRpb24gbGV2ZWwgZm9yIGh1bWFuLXJlYWRhYmxlIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IGRlZmF1bHRfaW5kZW50ID0gcmVmIDFcblxuICAoKiBFc2NhcGluZyBvZiBzdHJpbmdzIHVzZWQgYXMgYXRvbXMgaW4gUy1leHByZXNzaW9ucyAqKVxuXG4gIGxldCBtdXN0X2VzY2FwZSBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxlbiA9IDBcbiAgICB8fFxuICAgIGxldCByZWMgbG9vcCBzdHIgaXggPVxuICAgICAgbWF0Y2ggc3RyLltpeF0gd2l0aFxuICAgICAgfCAnXCInIHwgJygnIHwgJyknIHwgJzsnIHwgJ1xcXFwnIC0+IHRydWVcbiAgICAgIHwgJ3wnIC0+XG4gICAgICAgIGl4ID4gMFxuICAgICAgICAmJlxuICAgICAgICBsZXQgbmV4dCA9IGl4IC0gMSBpblxuICAgICAgICBDaGFyLmVxdWFsIHN0ci5bbmV4dF0gJyMnIHx8IGxvb3Agc3RyIG5leHRcbiAgICAgIHwgJyMnIC0+XG4gICAgICAgIGl4ID4gMFxuICAgICAgICAmJlxuICAgICAgICBsZXQgbmV4dCA9IGl4IC0gMSBpblxuICAgICAgICBDaGFyLmVxdWFsIHN0ci5bbmV4dF0gJ3wnIHx8IGxvb3Agc3RyIG5leHRcbiAgICAgIHwgJ1xcMDAwJyAuLiAnXFwwMzInIHwgJ1xcMTI3JyAuLiAnXFwyNTUnIC0+IHRydWVcbiAgICAgIHwgXyAtPiBpeCA+IDAgJiYgbG9vcCBzdHIgKGl4IC0gMSlcbiAgICBpblxuICAgIGxvb3Agc3RyIChsZW4gLSAxKVxuICA7O1xuXG4gIGxldCBlc2NhcGVkIHMgPVxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgblxuICAgICAgOj0gIW5cbiAgICAgICAgICtcbiAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgICB8IF8gLT4gNFxuICAgIGRvbmU7XG4gICAgaWYgIW4gPSBTdHJpbmcubGVuZ3RoIHNcbiAgICB0aGVuIHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBzJyA9IEJ5dGVzLmNyZWF0ZSAhbiBpblxuICAgICAgbiA6PSAwO1xuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICAgICB8ICcgJyAuLiAnficgYXMgYyAtPiBCeXRlcy51bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICBsZXQgYSA9IENoYXIuY29kZSBjIGluXG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIC8gMTAwKSkpO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIC8gMTAgbW9kIDEwKSkpO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIG1vZCAxMCkpKSk7XG4gICAgICAgIGluY3IgblxuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcycpXG4gIDs7XG5cbiAgbGV0IGVzY19zdHIgc3RyID1cbiAgICBsZXQgZXN0ciA9IGVzY2FwZWQgc3RyIGluXG4gICAgbGV0IGVsZW4gPSBTdHJpbmcubGVuZ3RoIGVzdHIgaW5cbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChlbGVuICsgMikgaW5cbiAgICBieXRlc19ibGl0X3N0cmluZyB+c3JjOmVzdHIgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczoxIH5sZW46ZWxlbjtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyAwICdcIic7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgKGVsZW4gKyAxKSAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIDs7XG5cbiAgbGV0IGluZGV4X29mX25ld2xpbmUgc3RyIHN0YXJ0ID0gU3RyaW5nLmluZGV4X2Zyb21fb3B0IHN0ciBzdGFydCAnXFxuJ1xuXG4gIGxldCBnZXRfc3Vic3RyaW5nIHN0ciBpbmRleCBlbmRfcG9zX29wdCA9XG4gICAgbGV0IGVuZF9wb3MgPVxuICAgICAgbWF0Y2ggZW5kX3Bvc19vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc3RyXG4gICAgICB8IFNvbWUgZW5kX3BvcyAtPiBlbmRfcG9zXG4gICAgaW5cbiAgICBTdHJpbmcuc3ViIHN0ciB+cG9zOmluZGV4IH5sZW46KGVuZF9wb3MgLSBpbmRleClcbiAgOztcblxuICBsZXQgaXNfb25lX2xpbmUgc3RyID1cbiAgICBtYXRjaCBpbmRleF9vZl9uZXdsaW5lIHN0ciAwIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBpbmRleCAtPiBpbmRleCArIDEgPSBTdHJpbmcubGVuZ3RoIHN0clxuICA7O1xuXG4gIGxldCBwcF9odW1fbWF5YmVfZXNjX3N0ciBwcGYgc3RyID1cbiAgICBpZiBub3QgKG11c3RfZXNjYXBlIHN0cilcbiAgICB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgc3RyXG4gICAgZWxzZSBpZiBpc19vbmVfbGluZSBzdHJcbiAgICB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY19zdHIgc3RyKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGluZGV4ID1cbiAgICAgICAgbGV0IG5leHRfbmV3bGluZSA9IGluZGV4X29mX25ld2xpbmUgc3RyIGluZGV4IGluXG4gICAgICAgIGxldCBuZXh0X2xpbmUgPSBnZXRfc3Vic3RyaW5nIHN0ciBpbmRleCBuZXh0X25ld2xpbmUgaW5cbiAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZXNjYXBlZCBuZXh0X2xpbmUpO1xuICAgICAgICBtYXRjaCBuZXh0X25ld2xpbmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG5ld2xpbmVfaW5kZXggLT5cbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXFwiO1xuICAgICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpO1xuICAgICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFxcblwiO1xuICAgICAgICAgIGxvb3AgKG5ld2xpbmVfaW5kZXggKyAxKVxuICAgICAgaW5cbiAgICAgIHBwX29wZW5fYm94IHBwZiAwO1xuICAgICAgKCogdGhlIGxlYWRpbmcgc3BhY2UgaXMgdG8gbGluZSB1cCB0aGUgbGluZXMgKilcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIgXFxcIlwiO1xuICAgICAgbG9vcCAwO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXCJcIjtcbiAgICAgIHBwX2Nsb3NlX2JveCBwcGYgKCkpXG4gIDs7XG5cbiAgbGV0IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgPSBpZiBtdXN0X2VzY2FwZSBzdHIgdGhlbiBlc2Nfc3RyIHN0ciBlbHNlIHN0clxuXG4gICgqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIGZvcm1hdHRlcnMgKilcblxuICBsZXQgcmVjIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiBwcF9odW1fbWF5YmVfZXNjX3N0ciBwcGYgc3RyXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9vcGVuX2JveCBwcGYgaW5kZW50O1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIihcIjtcbiAgICAgIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiBoO1xuICAgICAgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiB0XG4gICAgfCBMaXN0IFtdIC0+IHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiXG5cbiAgYW5kIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBwcF9wcmludF9zcGFjZSBwcGYgKCk7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIpXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIDs7XG5cbiAgbGV0IHJlYyBwcF9tYWNoX2ludGVybmFsIG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPlxuICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgXCIgXCI7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIHN0cic7XG4gICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBwcF9tYWNoX2ludGVybmFsIGZhbHNlIHBwZiBoIGluXG4gICAgICBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmIHQ7XG4gICAgICBmYWxzZVxuICAgIHwgTGlzdCBbXSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIigpXCI7XG4gICAgICBmYWxzZVxuXG4gIGFuZCBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0XG4gICAgfCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiXG4gIDs7XG5cbiAgbGV0IHBwX2h1bSBwcGYgc2V4cCA9IHBwX2h1bV9pbmRlbnQgIWRlZmF1bHRfaW5kZW50IHBwZiBzZXhwXG4gIGxldCBwcF9tYWNoIHBwZiBzZXhwID0gaWdub3JlIChwcF9tYWNoX2ludGVybmFsIGZhbHNlIHBwZiBzZXhwKVxuICBsZXQgcHAgPSBwcF9tYWNoXG5cbiAgKCogU2V4cCBzaXplICopXG5cbiAgbGV0IHJlYyBzaXplX2xvb3AgKCh2LCBjKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IHYgKyAxLCBjICsgU3RyaW5nLmxlbmd0aCBzdHJcbiAgICB8IExpc3QgbHN0IC0+IExpc3QuZm9sZF9sZWZ0IGxzdCB+aW5pdDphY2MgfmY6c2l6ZV9sb29wXG4gIDs7XG5cbiAgbGV0IHNpemUgc2V4cCA9IHNpemVfbG9vcCAoMCwgMCkgc2V4cFxuXG4gICgqIEJ1ZmZlciBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19idWZmZXJfaHVtIH5idWYgPyhpbmRlbnQgPSAhZGVmYXVsdF9pbmRlbnQpIHNleHAgPVxuICAgIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYUA/XCIgKHBwX2h1bV9pbmRlbnQgaW5kZW50KSBzZXhwXG4gIDs7XG5cbiAgbGV0IHRvX2J1ZmZlcl9tYWNoIH5idWYgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHN0cic7XG4gICAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJygnO1xuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIGZhbHNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHQ7XG4gICAgICAgIGZhbHNlXG4gICAgICB8IExpc3QgW10gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcpJ1xuICAgIGluXG4gICAgaWdub3JlIChsb29wIGZhbHNlIHNleHApXG4gIDs7XG5cbiAgbGV0IHRvX2J1ZmZlciA9IHRvX2J1ZmZlcl9tYWNoXG5cbiAgbGV0IHRvX2J1ZmZlcl9nZW4gfmJ1ZiB+YWRkX2NoYXIgfmFkZF9zdHJpbmcgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBhZGRfY2hhciBidWYgJyAnO1xuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBhZGRfY2hhciBidWYgJygnO1xuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIGZhbHNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHQ7XG4gICAgICAgIGZhbHNlXG4gICAgICB8IExpc3QgW10gLT5cbiAgICAgICAgYWRkX3N0cmluZyBidWYgXCIoKVwiO1xuICAgICAgICBmYWxzZVxuICAgIGFuZCBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBtYXlfbmVlZF9zcGFjZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0XG4gICAgICB8IFtdIC0+IGFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gICgqIFRoZSBtYXhpbXVtIHNpemUgb2YgYSB0aGluZyBvbiB0aGUgbWlub3IgaGVhcCBpcyAyNTYgd29yZHMuXG4gICAgIFByZXZpb3VzbHksIHRoaXMgc2l6ZSBvZiB0aGUgcmV0dXJuZWQgYnVmZmVyIGhlcmUgd2FzIDQwOTYgYnl0ZXMsIHdoaWNoXG4gICAgIGNhdXNlZCB0aGUgQnVmZmVyIHRvIGJlIGFsbG9jYXRlZCBvbiB0aGUgKm1ham9yKiBoZWFwIGV2ZXJ5IHRpbWUuXG5cbiAgICAgQWNjb3JkaW5nIHRvIGEgc2ltcGxlIGJlbmNobWFyayBieSBSb24sIHdlIGNhbiBpbXByb3ZlIHBlcmZvcm1hbmNlIGZvclxuICAgICBzbWFsbCBzLWV4cHJlc3Npb25zIGJ5IGEgZmFjdG9yIG9mIH40IGlmIHdlIG9ubHkgYWxsb2NhdGUgMTAyNCBieXRlc1xuICAgICAoMTI4IHdvcmRzICsgc29tZSBzbWFsbCBvdmVyaGVhZCkgd29ydGggb2YgYnVmZmVyIGluaXRpYWxseS4gIEFuZCBvbmVcbiAgICAgY2FuIGFyZ3VlIHRoYXQgaWYgaXQncyBmcmVlIHRvIGFsbG9jYXRlIHN0cmluZ3Mgc21hbGxlciB0aGFuIDI1NiB3b3JkcyxcbiAgICAgbGFyZ2Ugcy1leHByZXNzaW9ucyByZXF1aXJpbmcgbGFyZ2VyIGV4cGVuc2l2ZSBidWZmZXJzIHdvbid0IG5vdGljZVxuICAgICB0aGUgZXh0cmEgdHdvIGRvdWJsaW5ncyBmcm9tIDEwMjQgYnl0ZXMgdG8gMjA0OCBhbmQgNDA5Ni4gQW5kIGVzcGVjaWFsbHlcbiAgICAgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIGFwcGxpY2F0aW9ucyB0byBhbHdheXMgcGFzcyBpbiBhIGxhcmdlciBidWZmZXIgdG9cbiAgICAgdXNlLiAqKVxuICBsZXQgYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSAxMDI0XG5cbiAgKCogU3RyaW5nIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gP2luZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0clxuICAgICAgd2hlbiBtYXRjaCBpbmRleF9vZl9uZXdsaW5lIHN0ciAwIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIF8gLT4gZmFsc2UgLT4gbWFjaF9tYXliZV9lc2Nfc3RyIHN0clxuICAgIHwgc2V4cCAtPlxuICAgICAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICAgICAgdG9fYnVmZmVyX2h1bSA/aW5kZW50IHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX21hY2ggPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gbWFjaF9tYXliZV9lc2Nfc3RyIHN0clxuICAgIHwgc2V4cCAtPlxuICAgICAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICAgICAgdG9fYnVmZmVyX21hY2ggc2V4cCB+YnVmO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfbWFjaFxuZW5kXG5cbmluY2x1ZGUgUHJpbnRpbmdcblxubGV0IG9mX2Zsb2F0X3N0eWxlIDogWyBgVW5kZXJzY29yZXMgfCBgTm9fdW5kZXJzY29yZXMgXSByZWYgPSByZWYgYE5vX3VuZGVyc2NvcmVzXG5sZXQgb2ZfaW50X3N0eWxlIDogWyBgVW5kZXJzY29yZXMgfCBgTm9fdW5kZXJzY29yZXMgXSByZWYgPSByZWYgYE5vX3VuZGVyc2NvcmVzXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgUHJpbnRpbmdcbmVuZFxuXG5sZXQgbWVzc2FnZSBuYW1lIGZpZWxkcyA9XG4gIGxldCByZWMgY29udl9maWVsZHMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChmbmFtZSwgZnNleHApIDo6IHJlc3QgLT5cbiAgICAgIChtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgfCBcIlwiIC0+IGZzZXhwIDo6IGNvbnZfZmllbGRzIHJlc3RcbiAgICAgICB8IF8gLT4gTGlzdCBbIEF0b20gZm5hbWU7IGZzZXhwIF0gOjogY29udl9maWVsZHMgcmVzdClcbiAgaW5cbiAgTGlzdCAoQXRvbSBuYW1lIDo6IGNvbnZfZmllbGRzIGZpZWxkcylcbjs7XG4iLCIoKiogUmVwcmVzZW50YXRpb24gb2YgUy1leHByZXNzaW9uIGdyYW1tYXJzICopXG5cbigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgcmVwcmVzZW50YXRpb24gZm9yIHMtZXhwcmVzc2lvbiBncmFtbWFycy4gVXNpbmcgcHB4X3NleHBfY29udlxuICAgIGFuZCBbW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXV0gcHJvZHVjZXMgYSBncmFtbWFyIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBkZXJpdmVkXG4gICAgW29mX3NleHBdIGZvciBhIGdpdmVuIHR5cGUuXG5cbiAgICBBcyB3aXRoIG90aGVyIGRlcml2ZWQgZGVmaW5pdGlvbnMsIHBvbHltb3JwaGljIHR5cGVzIGRlcml2ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYVxuICAgIGdyYW1tYXIgZm9yIGVhY2ggdHlwZSBhcmd1bWVudCBhbmQgcHJvZHVjZXMgYSBncmFtbWFyIGZvciB0aGUgbW9ub21vcnBoaXplZCB0eXBlLlxuXG4gICAgTW9ub21vcnBoaWMgdHlwZXMgZGVyaXZlIGEgZ3JhbW1hciBkaXJlY3RseS4gVG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cyxcbiAgICBbW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXV0gd3JhcHMgZ3JhbW1hcnMgaW4gdGhlIFtMYXp5XSBjb25zdHJ1Y3RvciBhcyBuZWVkZWQuXG5cbiAgICBUaGlzIHR5cGUgbWF5IGNoYW5nZSBvdmVyIHRpbWUgYXMgb3VyIG5lZWRzIGZvciBleHByZXNzaXZlIGdyYW1tYXJzIGNoYW5nZS4gV2Ugd2lsbFxuICAgIGF0dGVtcHQgdG8gbWFrZSBjaGFuZ2VzIGJhY2t3YXJkLWNvbXBhdGlibGUsIG9yIGF0IGxlYXN0IHByb3ZpZGUgYSByZWFzb25hYmxlIHVwZ3JhZGVcbiAgICBwYXRoLiAqKVxuXG5bQEBAd2FybmluZyBcIi0zMFwiXSAoKiBhbGxvdyBkdXBsaWNhdGUgZmllbGQgbmFtZXMgKilcblxuKCoqIEdyYW1tYXIgb2YgYSBzZXhwLiAqKVxudHlwZSBncmFtbWFyID1cbiAgfCBBbnkgb2Ygc3RyaW5nICgqKiBhY2NlcHRzIGFueSBzZXhwOyBzdHJpbmcgaXMgYSB0eXBlIG5hbWUgZm9yIGh1bWFuIHJlYWRhYmlsaXR5ICopXG4gIHwgQm9vbCAoKiogYWNjZXB0cyB0aGUgYXRvbXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiLCBtb2R1bG8gY2FwaXRhbGl6YXRpb24gKilcbiAgfCBDaGFyICgqKiBhY2NlcHRzIGFueSBzaW5nbGUtY2hhcmFjdGVyIGF0b20gKilcbiAgfCBJbnRlZ2VyICgqKiBhY2NlcHRzIGFueSBhdG9tIG1hdGNoaW5nIG9jYW1sIGludGVnZXIgc3ludGF4LCByZWdhcmRsZXNzIG9mIGJpdCB3aWR0aCAqKVxuICB8IEZsb2F0ICgqKiBhY2NlcHRzIGFueSBhdG9tIG1hdGNoaW5nIG9jYW1sIGZsb2F0IHN5bnRheCAqKVxuICB8IFN0cmluZyAoKiogYWNjZXB0cyBhbnkgYXRvbSAqKVxuICB8IE9wdGlvbiBvZiBncmFtbWFyICgqKiBhY2NlcHRzIGFuIG9wdGlvbiwgYm90aCBbTm9uZV0gdnMgW1NvbWUgX10gYW5kIFsoKV0gdnMgWyhfKV0uICopXG4gIHwgTGlzdCBvZiBsaXN0X2dyYW1tYXIgKCoqIGFjY2VwdHMgYSBsaXN0ICopXG4gIHwgVmFyaWFudCBvZiB2YXJpYW50ICgqKiBhY2NlcHRzIGNsYXVzZXMga2V5ZWQgYnkgYSBsZWFkaW5nIG9yIHNvbGUgYXRvbSAqKVxuICB8IFVuaW9uIG9mIGdyYW1tYXIgbGlzdCAoKiogYWNjZXB0cyBhIHNleHAgaWYgYW55IG9mIHRoZSBsaXN0ZWQgZ3JhbW1hcnMgYWNjZXB0cyBpdCAqKVxuICB8IFRhZ2dlZCBvZiBncmFtbWFyIHdpdGhfdGFnXG4gICgqKiBhbm5vdGF0ZXMgYSBncmFtbWFyIHdpdGggYSBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIgKilcbiAgfCBUeXZhciBvZiBzdHJpbmdcbiAgKCoqIE5hbWUgb2YgYSB0eXBlIHZhcmlhYmxlLCBlLmcuIFtUeXZhciBcImFcIl0gZm9yIFsnYV0uIE9ubHkgbWVhbmluZ2Z1bCB3aGVuIHRoZSBib2R5IG9mXG4gICAgICB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyBbZGVmbl0gZGVmaW5lcyBhIGNvcnJlc3BvbmRpbmcgdHlwZSB2YXJpYWJsZS4gKilcbiAgfCBUeWNvbiBvZiBzdHJpbmcgKiBncmFtbWFyIGxpc3QgKiBkZWZuIGxpc3RcbiAgKCoqIFR5cGUgY29uc3RydWN0b3IgYXBwbGllZCB0byBhcmd1bWVudHMsIGFuZCBpdHMgZGVmaW5pdGlvbi5cblxuICAgICAgRm9yIGV4YW1wbGUsIHdyaXRpbmcgW1R5Y29uIChcInRyZWVcIiwgWyBJbnRlZ2VyIF0sIGRlZm5zKV0gcmVwcmVzZW50cyBbaW50IHRyZWVdLCBmb3JcbiAgICAgIHdoYXRldmVyIFt0cmVlXSBpcyBkZWZpbmVkIGFzIGluIFtkZWZuc10uIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyBbdHJlZV0gYXMgYSBiaW5hcnlcbiAgICAgIHRyZWUgd2l0aCB0aGUgcGFyYW1ldGVyIHR5cGUgc3RvcmVkIGF0IHRoZSBsZWF2ZXMuXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBkZWZucyA9XG4gICAgICAgICAgWyB7IHR5Y29uID0gXCJ0cmVlXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID1cbiAgICAgICAgICAgICAgICBWYXJpYW50XG4gICAgICAgICAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFJlY3Vyc2l2ZSAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiTGVhZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChSZWN1cnNpdmUgKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibm9kZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IExpc3QgKE1hbnkgKFJlY3Vyc2l2ZSBcInRyZWVcIiwgW1R5dmFyIFwiYVwiXSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOyB7IHR5Y29uID0gXCJsZWFmXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gW1R5dmFyIFwiYVwiXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgOztcbiAgICAgIF19XG5cbiAgICAgIFRvIGlsbHVzdHJhdGUgdGhlIG1lYW5pbmcgb2YgW1R5Y29uXSB3aXRoIHJlc3BlY3QgdG8gW2RlZm5zXSwgYW5kIHRvIGRlbW9uc3RyYXRlIG9uZVxuICAgICAgd2F5IHRvIGFjY2VzcyB0aGVtLCBpdCBpcyBlcXVpdmFsZW50IHRvIGV4cGFuZCB0aGUgZGVmaW5pdGlvbiBvZiBcInRyZWVcIiBvbmUgbGV2ZWxcbiAgICAgIGFuZCBtb3ZlIHRoZSBbZGVmbnNdIHRvIGVuY2xvc2VkIHJlY3Vyc2l2ZSByZWZlcmVuY2VzOlxuXG4gICAgICB7W1xuICAgICAgICBUeWNvbiAoXCJ0cmVlXCIsIFsgSW50ZWdlciBdLCBkZWZucylcbiAgICAgICAgLS0+XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyB7IG5hbWUgPSBcIk5vZGVcIlxuICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcIm5vZGVcIiwgW1R5dmFyIFwiYVwiXSwgZGVmbnMpLCBFbXB0eSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDsgeyBuYW1lID0gXCJMZWFmXCJcbiAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJsZWFmXCIsIFtUeXZhciBcImFcIl0sIGRlZm5zKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgXX1cblxuICAgICAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBleHBvc2VzIHRoZSBzdHJ1Y3R1cmUgb2YgYSBncmFtbWFyIHdpdGggcmVjdXJzaXZlIHJlZmVyZW5jZXMsXG4gICAgICB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBtZWFuaW5nIG9mIHJlY3Vyc2l2ZWx5LWRlZmluZWQgZWxlbWVudHMuICopXG4gIHwgUmVjdXJzaXZlIG9mIHN0cmluZyAqIGdyYW1tYXIgbGlzdFxuICAoKiogVHlwZSBjb25zdHJ1Y3RvciBhcHBsaWVkIHRvIGFyZ3VtZW50cy4gVXNlZCB0byBkZW5vdGUgcmVjdXJzaXZlIHR5cGUgcmVmZXJlbmNlcy5cbiAgICAgIE9ubHkgbWVhbmluZ2Z1bCB3aGVuIHVzZWQgaW5zaWRlIHRoZSBbZGVmbl1zIG9mIGEgW1R5Y29uXSBncmFtbWFyLCB0byByZWZlciB0byBhXG4gICAgICB0eXBlIGNvbnN0cnVjdG9yIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBbZGVmbl0gbGlzdC4gKilcbiAgfCBMYXp5IG9mIGdyYW1tYXIgbGF6eV90XG4gICgqKiBMYXppbHkgY29tcHV0ZWQgZ3JhbW1hci4gVXNlIFtMYXp5XSB0byBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLiBUbyBkZWZpbmVcbiAgICAgIHJlY3Vyc2l2ZSBncmFtbWFycywgdXNlIFtSZWN1cnNpdmVdIGluc3RlYWQuICopXG5cbigqKiBHcmFtbWFyIG9mIGEgbGlzdCBvZiBzZXhwcy4gKilcbmFuZCBsaXN0X2dyYW1tYXIgPVxuICB8IEVtcHR5ICgqKiBhY2NlcHRzIGFuIGVtcHR5IGxpc3Qgb2Ygc2V4cHMgKilcbiAgfCBDb25zIG9mIGdyYW1tYXIgKiBsaXN0X2dyYW1tYXJcbiAgKCoqIGFjY2VwdHMgYSBub24tZW1wdHkgbGlzdCB3aXRoIGhlYWQgYW5kIHRhaWwgbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXJzICopXG4gIHwgTWFueSBvZiBncmFtbWFyICgqKiBhY2NlcHRzIHplcm8gb3IgbW9yZSBzZXhwcywgZWFjaCBtYXRjaGluZyB0aGUgZ2l2ZW4gZ3JhbW1hciAqKVxuICB8IEZpZWxkcyBvZiByZWNvcmQgKCoqIGFjY2VwdHMgc2V4cHMgcmVwcmVzZW50aW5nIGZpZWxkcyBvZiBhIHJlY29yZCAqKVxuXG4oKiogQ2FzZSBzZW5zaXRpdml0eSBvcHRpb25zIGZvciBuYW1lcyBvZiB2YXJpYW50IGNvbnN0cnVjdG9ycy4gKilcbmFuZCBjYXNlX3NlbnNpdGl2aXR5ID1cbiAgfCBDYXNlX2luc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFVzZWQgZm9yIGN1c3RvbSBwYXJzZXJzLiAqKVxuICB8IENhc2Vfc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLiBVc2VkIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUgZm9yIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGNhc2Ugc2Vuc2l0aXZlIGFmdGVyd2FyZC5cbiAgICAgIFVzZWQgZm9yIHJlZ3VsYXIgdmFyaWFudHMuICopXG5cbigqKiBHcmFtbWFyIG9mIHZhcmlhbnRzLiBBY2NlcHRzIGFueSBzZXhwIG1hdGNoaW5nIG9uZSBvZiB0aGUgY2xhdXNlcy4gKilcbmFuZCB2YXJpYW50ID1cbiAgeyBjYXNlX3NlbnNpdGl2aXR5IDogY2FzZV9zZW5zaXRpdml0eVxuICA7IGNsYXVzZXMgOiBjbGF1c2Ugd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSBzaW5nbGUgdmFyaWFudCBjbGF1c2UuIEFjY2VwdHMgc2V4cHMgYmFzZWQgb24gdGhlIFtjbGF1c2Vfa2luZF0uICopXG5hbmQgY2xhdXNlID1cbiAgeyBuYW1lIDogc3RyaW5nXG4gIDsgY2xhdXNlX2tpbmQgOiBjbGF1c2Vfa2luZFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlJ3MgY29udGVudHMuIFtBdG9tX2NsYXVzZV0gYWNjZXB0cyBhbiBhdG9tIG1hdGNoaW5nXG4gICAgdGhlIGNsYXVzZSdzIG5hbWUuIFtMaXN0X2NsYXVzZV0gYWNjZXB0cyBhIGxpc3Qgd2hvc2UgaGVhZCBpcyBhbiBhdG9tIG1hdGNoaW5nIHRoZVxuICAgIGNsYXVzZSdzIG5hbWUgYW5kIHdob3NlIHRhaWwgbWF0Y2hlcyBbYXJnc10uIFRoZSBjbGF1c2UncyBuYW1lIGlzIG1hdGNoZWQgbW9kdWxvIHRoZVxuICAgIHZhcmlhbnQncyBbbmFtZV9raW5kXS4gKilcbmFuZCBjbGF1c2Vfa2luZCA9XG4gIHwgQXRvbV9jbGF1c2VcbiAgfCBMaXN0X2NsYXVzZSBvZiB7IGFyZ3MgOiBsaXN0X2dyYW1tYXIgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZC4gQWNjZXB0cyBhbnkgbGlzdCBvZiBzZXhwcyBzcGVjaWZ5aW5nIGVhY2ggb2YgdGhlIGZpZWxkcyxcbiAgICByZWdhcmRsZXNzIG9mIG9yZGVyLiBJZiBbYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBzcGVjaWZpZWQsIGlnbm9yZXMgc2V4cHMgd2l0aCBuYW1lc1xuICAgIG5vdCBmb3VuZCBpbiBbZmllbGRzXS4gKilcbmFuZCByZWNvcmQgPVxuICB7IGFsbG93X2V4dHJhX2ZpZWxkcyA6IGJvb2xcbiAgOyBmaWVsZHMgOiBmaWVsZCB3aXRoX3RhZ19saXN0IGxpc3RcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZCBmaWVsZC4gQSBmaWVsZCBtdXN0IHNob3cgdXAgZXhhY3RseSBvbmNlIGluIGEgcmVjb3JkIGlmXG4gICAgW3JlcXVpcmVkXSwgb3IgYXQgbW9zdCBvbmNlIG90aGVyd2lzZS4gQWNjZXB0cyBhIGxpc3QgaGVhZGVkIGJ5IFtuYW1lXSBhcyBhbiBhdG9tLFxuICAgIGZvbGxvd2VkIGJ5IHNleHBzIG1hdGNoaW5nIFthcmdzXS4gKilcbmFuZCBmaWVsZCA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IHJlcXVpcmVkIDogYm9vbFxuICA7IGFyZ3MgOiBsaXN0X2dyYW1tYXJcbiAgfVxuXG4oKiogR3JhbW1hciB0YWdnZWQgd2l0aCBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIuICopXG5hbmQgJ2Egd2l0aF90YWcgPVxuICB7IGtleSA6IHN0cmluZ1xuICA7IHZhbHVlIDogU2V4cC50XG4gIDsgZ3JhbW1hciA6ICdhXG4gIH1cblxuYW5kICdhIHdpdGhfdGFnX2xpc3QgPVxuICB8IFRhZyBvZiAnYSB3aXRoX3RhZ19saXN0IHdpdGhfdGFnXG4gIHwgTm9fdGFnIG9mICdhXG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjdXJzaXZlIHR5cGUgZGVmaW5pdGlvbi4gTmFtZXMgdGhlIFt0eWNvbl0gYmVpbmcgZGVmaW5lZCwgYW5kIHRoZVxuICAgIFt0eXZhcnNdIGl0IHRha2VzIGFzIHBhcmFtZXRlcnMuIFNwZWNpZmllcyB0aGUgW2dyYW1tYXJdIG9mIHRoZSBbdHljb25dLiBUaGUgZ3JhbW1hclxuICAgIG1heSByZWZlciB0byBhbnkgb2YgdGhlIFt0eXZhcnNdLCBhbmQgdG8gYW55IG9mIHRoZSBbdHljb25dcyBmcm9tIHRoZSBzYW1lIHNldCBvZlxuICAgIFtSZWN1cnNpdmVdIGRlZmluaXRpb25zLiAqKVxuYW5kIGRlZm4gPVxuICB7IHR5Y29uIDogc3RyaW5nXG4gIDsgdHl2YXJzIDogc3RyaW5nIGxpc3RcbiAgOyBncmFtbWFyIDogZ3JhbW1hclxuICB9XG5cbigqKiBUb3AtbGV2ZWwgZ3JhbW1hciB0eXBlLiBIYXMgYSBwaGFudG9tIHR5cGUgcGFyYW1ldGVyIHRvIGFzc29jaWF0ZSBlYWNoIGdyYW1tYXIgd2l0aFxuICAgIHRoZSB0eXBlIGl0cyBzZXhwcyByZXByZXNlbnQuIFRoaXMgbWFrZXMgaXQgaGFyZGVyIHRvIGFwcGx5IGdyYW1tYXJzIHRvIHRoZSB3cm9uZ1xuICAgIHR5cGUsIHdoaWxlIGdyYW1tYXJzIGNhbiBzdGlsbCBiZSBlYXNpbHkgY29lcmNlZCB0byBhIG5ldyB0eXBlIGlmIG5lZWRlZC4gKilcbnR5cGUgXyB0ID0geyB1bnR5cGVkIDogZ3JhbW1hciB9IFtAQHVuYm94ZWRdXG5cbmxldCBjb2VyY2UgKHR5cGUgYSBiKSAoeyB1bnR5cGVkID0gXyB9IGFzIHQgOiBhIHQpIDogYiB0ID0gdFxuXG5sZXQgdGFnICh0eXBlIGEpICh7IHVudHlwZWQgPSBncmFtbWFyIH0gOiBhIHQpIH5rZXkgfnZhbHVlIDogYSB0ID1cbiAgeyB1bnR5cGVkID0gVGFnZ2VkIHsga2V5OyB2YWx1ZTsgZ3JhbW1hciB9IH1cbjs7XG5cbigqKiBUaGlzIHJlc2VydmVkIGtleSBpcyB1c2VkIGZvciBhbGwgdGFncyBnZW5lcmF0ZWQgZnJvbSBkb2MgY29tbWVudHMuICopXG5sZXQgZG9jX2NvbW1lbnRfdGFnID0gXCJzZXhwX2dyYW1tYXIuZG9jX2NvbW1lbnRcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgY2FuIGJlIHVzZWQgdG8gYXNzb2NpYXRlIGEgdHlwZSBuYW1lIHdpdGggYSBncmFtbWFyLiAqKVxubGV0IHR5cGVfbmFtZV90YWcgPSBcInNleHBfZ3JhbW1hci50eXBlX25hbWVcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIHJlcHJlc2VudHMgYSBrZXkvdmFsdWUgYXNzb2NpYXRpb24uIFRoZSB0YWcnc1xuICAgIHZhbHVlIGlzIGlnbm9yZWQuICopXG5sZXQgYXNzb2NfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2NcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIGlzIGEga2V5IGluIGEga2V5L3ZhbHVlIGFzc29jaWF0aW9uLiBUaGUgdGFnJ3NcbiAgICB2YWx1ZSBpcyBpZ25vcmVkLiAqKVxubGV0IGFzc29jX2tleV90YWcgPSBcInNleHBfZ3JhbW1hci5hc3NvYy5rZXlcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIGlzIGEgdmFsdWUgaW4gYSBrZXkvdmFsdWUgYXNzb2NpYXRpb24uIFRoZVxuICAgIHRhZydzIHZhbHVlIGlzIGlnbm9yZWQuICopXG5sZXQgYXNzb2NfdmFsdWVfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2MudmFsdWVcIlxuXG4oKiogV2hlbiB0aGUga2V5IGlzIHNldCB0byBbQXRvbSBcImZhbHNlXCJdIGZvciBhIHZhcmlhbnQgY2xhdXNlLCB0aGF0IGNsYXVzZSBzaG91bGQgbm90IGJlXG4gICAgc3VnZ2VzdGVkIGluIGF1dG8tY29tcGxldGlvbiBiYXNlZCBvbiB0aGUgc2V4cCBncmFtbWFyLiAqKVxubGV0IGNvbXBsZXRpb25fc3VnZ2VzdGVkID0gXCJzZXhwX2dyYW1tYXIuY29tcGxldGlvbi1zdWdnZXN0ZWRcIlxuIiwib3BlbiBTdGRMYWJlbHNcblxubGV0IHNleHBfZ3JhbW1hcl93aXRoX3RhZ3MgZ3JhbW1hciB+dGFncyA9XG4gIExpc3QuZm9sZF9yaWdodCB0YWdzIH5pbml0OmdyYW1tYXIgfmY6KGZ1biAoa2V5LCB2YWx1ZSkgZ3JhbW1hciAtPlxuICAgIFNleHBfZ3JhbW1hci5UYWdnZWQgeyBrZXk7IHZhbHVlOyBncmFtbWFyIH0pXG47O1xuXG5sZXQgc2V4cF9ncmFtbWFyX3dpdGhfdGFnX2xpc3QgeCB+dGFncyA9XG4gIExpc3QuZm9sZF9yaWdodCB0YWdzIH5pbml0OnggfmY6KGZ1biAoa2V5LCB2YWx1ZSkgZ3JhbW1hciAtPlxuICAgIFNleHBfZ3JhbW1hci5UYWcgeyBrZXk7IHZhbHVlOyBncmFtbWFyIH0pXG47O1xuXG5sZXQgdW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gTGlzdCBFbXB0eSB9XG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQm9vbCB9XG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IENoYXIgfVxubGV0IGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEZsb2F0IH1cbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IHNleHBfdF9zZXhwX2dyYW1tYXIgOiBTZXhwLnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJTZXhwLnRcIiB9XG5sZXQgcmVmX3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5sZXQgbGF6eV90X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5cbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBvcHRpb24gU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBPcHRpb24gdW50eXBlZCB9XG47O1xuXG5sZXQgbGlzdF9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGxpc3QgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBhcnJheV9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGFycmF5IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgZW1wdHlfc2V4cF9ncmFtbWFyIDogXyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFVuaW9uIFtdIH1cbmxldCBvcGFxdWVfc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG5sZXQgZnVuX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxuIiwiKCogVXRpbGl0eSBNb2R1bGUgZm9yIFMtZXhwcmVzc2lvbiBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwXG5cbigqIENvbnZlcnNpb24gb2YgT0NhbWwtdmFsdWVzIHRvIFMtZXhwcmVzc2lvbnMgKilcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogJyUuMTdnJyBpcyBndWFyYW50ZWVkIHRvIGJlIHJvdW5kLXRyaXBwYWJsZS5cblxuICAgJyUuMTVnJyB3aWxsIGJlIHJvdW5kLXRyaXBwYWJsZSBhbmQgbm90IGhhdmUgbm9pc2UgYXQgdGhlIGxhc3QgZGlnaXQgb3IgdHdvIGZvciBhIGZsb2F0XG4gICB3aGljaCB3YXMgY29udmVydGVkIGZyb20gYSBkZWNpbWFsIChzdHJpbmcpIHdpdGggPD0gMTUgc2lnbmlmaWNhbnQgZGlnaXRzLiAgU28gaXQnc1xuICAgd29ydGggdHJ5aW5nIGZpcnN0IHRvIGF2b2lkIHRoaW5ncyBsaWtlIFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIuXG5cbiAgIFNlZSBjb21tZW50IGFib3ZlIFt0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlXSBpbiB7IUNvcmUuRmxvYXR9IGZvclxuICAgZGV0YWlsZWQgZXhwbGFuYXRpb24gYW5kIGV4YW1wbGVzLiAqKVxubGV0IGRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0ID1cbiAgcmVmIChmdW4geCAtPlxuICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHkgPSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdHXCIgeClcbjs7XG5cbmxldCByZWFkX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCB3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgbGlzdF9tYXAgZiBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBsIH5mKVxubGV0IHNleHBfb2ZfdW5pdCAoKSA9IExpc3QgW11cbmxldCBzZXhwX29mX2Jvb2wgYiA9IEF0b20gKHN0cmluZ19vZl9ib29sIGIpXG5sZXQgc2V4cF9vZl9zdHJpbmcgc3RyID0gQXRvbSBzdHJcbmxldCBzZXhwX29mX2J5dGVzIGJ5dGVzID0gQXRvbSAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHNleHBfb2ZfY2hhciBjID0gQXRvbSAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHNleHBfb2ZfaW50IG4gPSBBdG9tIChzdHJpbmdfb2ZfaW50IG4pXG5sZXQgc2V4cF9vZl9mbG9hdCBuID0gQXRvbSAoIWRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0IG4pXG5sZXQgc2V4cF9vZl9pbnQzMiBuID0gQXRvbSAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9pbnQ2NCBuID0gQXRvbSAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgbiA9IEF0b20gKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX3JlZiBzZXhwX29mX19hIHJmID0gc2V4cF9vZl9fYSAhcmZcbmxldCBzZXhwX29mX2xhenlfdCBzZXhwX29mX19hIGx2ID0gc2V4cF9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFsgc2V4cF9vZl9fYSB4IF1cbiAgfCBTb21lIHggLT4gTGlzdCBbIEF0b20gXCJzb21lXCI7IHNleHBfb2ZfX2EgeCBdXG4gIHwgTm9uZSB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFtdXG4gIHwgTm9uZSAtPiBBdG9tIFwibm9uZVwiXG47O1xuXG5sZXQgc2V4cF9vZl9wYWlyIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiAoYSwgYikgPSBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGIgXVxuXG5sZXQgc2V4cF9vZl90cmlwbGUgc2V4cF9vZl9fYSBzZXhwX29mX19iIHNleHBfb2ZfX2MgKGEsIGIsIGMpID1cbiAgTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiOyBzZXhwX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHNleHBfb2ZfbGlzdCBzZXhwX29mX19hIGxzdCA9IExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgbHN0IH5mOnNleHBfb2ZfX2EpKVxuXG5sZXQgc2V4cF9vZl9hcnJheSBzZXhwX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgc2V4cF9vZl9oYXNodGJsIHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBMaXN0IFsgc2V4cF9vZl9rZXkgazsgc2V4cF9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHNleHBfb2Zfb3BhcXVlIF8gPSBBdG9tIFwiPG9wYXF1ZT5cIlxubGV0IHNleHBfb2ZfZnVuIF8gPSBBdG9tIFwiPGZ1bj5cIlxuXG4oKiBFeGNlcHRpb24gY29udmVydGVyIHJlZ2lzdHJhdGlvbiBhbmQgbG9va3VwICopXG5cbm1vZHVsZSBFeG5fY29udmVydGVyID0gc3RydWN0XG4gICgqIFRoZXNlIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IGNvbnRleHQtc3dpdGNoZXNcbiAgICAgY2Fubm90IGhhcHBlbiB1bmxlc3MgdGhlcmUgaXMgYW4gYWxsb2NhdGlvbi4gIEl0IGlzIHJlYXNvbmFibGUgdG8gZXhwZWN0XG4gICAgIHRoYXQgdGhpcyB3aWxsIHJlbWFpbiB0cnVlIGZvciB0aGUgZm9yZXNlZWFibGUgZnV0dXJlLiAgVGhhdCB3YXkgd2VcbiAgICAgYXZvaWQgdXNpbmcgbXV0ZXhlcyBhbmQgdGh1cyBhIGRlcGVuZGVuY3kgb24gdGhlIHRocmVhZHMgbGlicmFyeS4gKilcblxuICAoKiBGYXN0IGFuZCBhdXRvbWF0aWMgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiAqKVxuXG4gIG1vZHVsZSBSZWdpc3RyYXRpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzZXhwX29mX2V4biA6IGV4biAtPiBTZXhwLnRcbiAgICAgIDsgKCogSWYgW3ByaW50ZXhjID0gdHJ1ZV0gdGhlbiB0aGlzIHNleHAgY29udmVydGVyIGlzIHVzZWQgZm9yIFByaW50ZXhjLnRvX3N0cmluZyAqKVxuICAgICAgICBwcmludGV4YyA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEV4bl90YWJsZSA9IEVwaGVtZXJvbi5LMS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuXG4gICAgICBsZXQgZXF1YWwgPSAoID09IClcbiAgICAgIGxldCBoYXNoID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuICAgIGVuZClcblxuICBsZXQgdGhlX2V4bl90YWJsZSA6IFJlZ2lzdHJhdGlvbi50IEV4bl90YWJsZS50ID0gRXhuX3RhYmxlLmNyZWF0ZSAxN1xuXG4gICgqIEVwaGVtZXJvbnMgYXJlIHVzZWQgc28gdGhhdCBbc2V4cF9vZl9leG5dIGNsb3N1cmUgZG9uJ3Qga2VlcCB0aGVcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpdmUuICopXG4gIGxldCBhZGQgPyhwcmludGV4YyA9IHRydWUpID9maW5hbGlzZTpfIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBzZXhwX29mX2V4biA9XG4gICAgRXhuX3RhYmxlLmFkZCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9XG4gIDs7XG5cbiAgbGV0IGZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjIGV4biA9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4biBpblxuICAgIG1hdGNoIEV4bl90YWJsZS5maW5kX29wdCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfSAtPlxuICAgICAgKG1hdGNoIGZvcl9wcmludGV4YywgcHJpbnRleGMgd2l0aFxuICAgICAgIHwgZmFsc2UsIF8gfCBfLCB0cnVlIC0+IFNvbWUgKHNleHBfb2ZfZXhuIGV4bilcbiAgICAgICB8IHRydWUsIGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl91bml0X3Rlc3RzX29ubHkgPSBzdHJ1Y3RcbiAgICBsZXQgc2l6ZSAoKSA9IChFeG5fdGFibGUuc3RhdHNfYWxpdmUgdGhlX2V4bl90YWJsZSkubnVtX2JpbmRpbmdzXG4gIGVuZFxuZW5kXG5cbmxldCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6dHJ1ZSBleG5cbmxldCBzZXhwX29mX2V4bl9vcHQgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4YzpmYWxzZSBleG5cblxubGV0IHNleHBfb2ZfZXhuIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gTGlzdCBbIEF0b20gKFByaW50ZXhjLnRvX3N0cmluZyBleG4pIF1cbiAgfCBTb21lIHNleHAgLT4gc2V4cFxuOztcblxubGV0IGV4bl90b19zdHJpbmcgZSA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSlcblxuKCoge1tleGNlcHRpb24gQmxhaCBbQEBkZXJpdmluZyBzZXhwXV19IGdlbmVyYXRlcyBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uXG4gICBbRXhuX2NvbnZlcnRlci5hZGRdIGRlZmluZWQgaW4gdGhpcyBmaWxlLiAgU28gd2UgYXJlIGd1YXJhbnRlZCB0aGF0IGFzIHNvb24gYXMgd2VcbiAgIG1hcmsgYW4gZXhjZXB0aW9uIGFzIHNleHBhYmxlLCB0aGlzIG1vZHVsZSB3aWxsIGJlIGxpbmtlZCBpbiBhbmQgdGhpcyBwcmludGVyIHdpbGwgYmVcbiAgIHJlZ2lzdGVyZWQsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4gKilcbmxldCAoKSA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBleG4gLT5cbiAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgc2V4cCAtPiBTb21lIChTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHApKVxuOztcblxubGV0IHByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gUHJpbnRleGMudG9fc3RyaW5nIGV4blxuICB8IFNvbWUgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHBcbjs7XG5cbigqIENvbnZlcnNpb24gb2YgUy1leHByZXNzaW9ucyB0byBPQ2FtbC12YWx1ZXMgKilcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBTZXhwLk9mX3NleHBfZXJyb3JcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3NleHBfZXJyb3JfZXhuIGV4YyBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkpXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcblxubGV0IHVuaXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiAoKVxuICB8IEF0b20gXyB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwidW5pdF9vZl9zZXhwOiBlbXB0eSBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBib29sX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gKFwidHJ1ZVwiIHwgXCJUcnVlXCIpIC0+IHRydWVcbiAgfCBBdG9tIChcImZhbHNlXCIgfCBcIkZhbHNlXCIpIC0+IGZhbHNlXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IHVua25vd24gc3RyaW5nXCIgc2V4cFxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYnl0ZXNfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYnl0ZXNfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY2hhcl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiBzZXhwO1xuICAgIHN0ci5bMF1cbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBpbnRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGZsb2F0X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImZsb2F0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQzMl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50MzIub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50MzJfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDMyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDY0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQ2NC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQ2NF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50NjRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwibmF0aXZlaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJuYXRpdmVpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgcmVmX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gcmVmIChhX19vZl9zZXhwIHNleHApXG5sZXQgbGF6eV90X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2Zfc2V4cCBzZXhwKVxuXG5sZXQgb3B0aW9uX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgaWYgIXJlYWRfb2xkX29wdGlvbl9mb3JtYXRcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFtdIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIGVsIF0gfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCByZXByZXNlbnQgb3B0aW9uYWwgdmFsdWVcIiBzZXhwXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwKVxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cFxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IGJlIChzb21lIGVsKVwiIHNleHApXG47O1xuXG5sZXQgcGFpcl9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGEsIGJcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHR3byBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCB0cmlwbGVfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgY19fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwOyBjX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgbGV0IGMgPSBjX19vZl9zZXhwIGNfc2V4cCBpblxuICAgIGEsIGIsIGNcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBsaXN0X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2Zfc2V4cCBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImxpc3Rfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYXJyYXlfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IFt8fF1cbiAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl9zZXhwIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2Zfc2V4cCBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImFycmF5X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGhhc2h0Ymxfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWxfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgTGlzdCBbIGtfc2V4cDsgdl9zZXhwIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2Zfc2V4cCBrX3NleHApIH5kYXRhOih2YWxfb2Zfc2V4cCB2X3NleHApXG4gICAgICB8IExpc3QgXyB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHNleHBcbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgb3BhcXVlX29mX3NleHAgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgXCJvcGFxdWVfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHNleHBcbjs7XG5cbmxldCBmdW5fb2Zfc2V4cCBzZXhwID0gb2Zfc2V4cF9lcnJvciBcImZ1bl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiBzZXhwXG5cbigqIFNleHAgR3JhbW1hcnMgKilcblxuaW5jbHVkZSBTZXhwX2NvbnZfZ3JhbW1hclxuXG4oKiBSZWdpc3RlcmluZyBkZWZhdWx0IGV4Y2VwdGlvbiBwcmludGVycyAqKVxuXG5sZXQgZ2V0X2ZsY19lcnJvciBuYW1lIChmaWxlLCBsaW5lLCBjaHIpID0gQXRvbSAoc3ByaW50ZiBcIiVzICVzOiVkOiVkXCIgbmFtZSBmaWxlIGxpbmUgY2hyKVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6ZmFsc2UgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBc3NlcnRfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBc3NlcnRfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIkFzc2VydF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeGl0XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEV4aXQgLT4gQXRvbSBcIkV4aXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRW5kX29mX2ZpbGVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRW5kX29mX2ZpbGUgLT4gQXRvbSBcIkVuZF9vZl9maWxlXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJGYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmQgLT4gQXRvbSBcIk5vdF9mb3VuZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBJbnZhbGlkX2FyZ3VtZW50XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYXJnIC0+IExpc3QgWyBBdG9tIFwiSW52YWxpZF9hcmd1bWVudFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXRjaF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE1hdGNoX2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJNYXRjaF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRfc11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmRfcyBhcmcgLT4gTGlzdCBbIEF0b20gXCJOb3RfZm91bmRfc1wiOyBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5c19lcnJvciBhcmcgLT4gTGlzdCBbIEF0b20gXCJTeXNfZXJyb3JcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkhlbHBdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkhlbHAgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkhlbHBcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkJhZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuQmFkIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5CYWRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTGF6eS5VbmRlZmluZWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTGF6eS5VbmRlZmluZWQgLT4gQXRvbSBcIkxhenkuVW5kZWZpbmVkXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNpbmcuUGFyc2VfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUGFyc2luZy5QYXJzZV9lcnJvciAtPiBBdG9tIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBRdWV1ZS5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBRdWV1ZS5FbXB0eSAtPiBBdG9tIFwiUXVldWUuRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2NhbmYuU2Nhbl9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFNjYW5mLlNjYW5fZmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJTY2FuZi5TY2FuX2ZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3RhY2suRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3RhY2suRW1wdHkgLT4gQXRvbSBcIlN0YWNrLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5cy5CcmVha11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXMuQnJlYWsgLT4gQXRvbSBcIlN5cy5CcmVha1wiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4Yzp0cnVlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHNleHApIC0+XG4gICAgICAgICAgTGlzdCBbIEF0b20gXCJTZXhwbGliLkNvbnYuT2Zfc2V4cF9lcnJvclwiOyBzZXhwX29mX2V4biBleGM7IHNleHAgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBTLWV4cHJlc3Npb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwX2NvbnZcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHNleHAgPVxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZyBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2MgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogYSBbc2V4cC5ib29sXSBmaWVsZCB3YXMgZ2l2ZW4gYSBwYXlsb2FkLlwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IG9ubHkgcGFpcnMgZXhwZWN0ZWQsIHRoZWlyIGZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBcXFxuICAgICAgIGF0b21cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyBzZXhwIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3NleHA6IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSBzZXhwXG47O1xuIiwib3BlbiEgU3RkTGFiZWxzXG5vcGVuISBTZXhwX2NvbnZcbm9wZW4hIFNleHBfY29udl9lcnJvclxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IERlZmF1bHQgOiAodW5pdCAtPiAnYSkgLT4gKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IE9taXRfbmlsIDogKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFJlcXVpcmVkIDogKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfYXJyYXkgOiAoJ2EgYXJyYXksIFNleHAudCAtPiAnYSkgdFxuICAgIHwgU2V4cF9ib29sIDogKGJvb2wsIHVuaXQpIHRcbiAgICB8IFNleHBfbGlzdCA6ICgnYSBsaXN0LCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfb3B0aW9uIDogKCdhIG9wdGlvbiwgU2V4cC50IC0+ICdhKSB0XG5lbmRcblxubW9kdWxlIEZpZWxkcyA9IHN0cnVjdFxuICB0eXBlIF8gdCA9XG4gICAgfCBFbXB0eSA6IHVuaXQgdFxuICAgIHwgRmllbGQgOlxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBraW5kIDogKCdhLCAnY29udikgS2luZC50XG4gICAgICAgIDsgY29udiA6ICdjb252XG4gICAgICAgIDsgcmVzdCA6ICdiIHRcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgKiAnYikgdFxuXG4gIGxldCBsZW5ndGggPVxuICAgIGxldCByZWMgbGVuZ3RoX2xvb3AgOiB0eXBlIGEuIGEgdCAtPiBpbnQgLT4gaW50ID1cbiAgICAgIGZ1biB0IGFjYyAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaWVsZCB7IHJlc3Q7IF8gfSAtPiBsZW5ndGhfbG9vcCByZXN0IChhY2MgKyAxKVxuICAgICAgICB8IEVtcHR5IC0+IGFjY1xuICAgIGluXG4gICAgZnVuIHQgLT4gbGVuZ3RoX2xvb3AgdCAwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hbGZvcm1lZCA9IHN0cnVjdFxuICAoKiBSZXByZXNlbnRzIGVycm9ycyB0aGF0IGNhbiBvY2N1ciBkdWUgdG8gbWFsZm9ybWVkIHJlY29yZCBzZXhwcy4gQWNjdW11bGF0ZWQgYXMgYVxuICAgICB2YWx1ZSBzbyB3ZSBjYW4gcmVwb3J0IG11bHRpcGxlIG5hbWVzIGF0IG9uY2UgZm9yIGV4dHJhIGZpZWxkcywgZHVwbGljYXRlIGZpZWxkcywgb3JcbiAgICAgbWlzc2luZyBmaWVsZHMuICopXG4gIHR5cGUgdCA9XG4gICAgfCBCb29sX3BheWxvYWRcbiAgICB8IEV4dHJhcyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgRHVwcyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgTWlzc2luZyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgTm9uX3BhaXIgb2YgU2V4cC50IG9wdGlvblxuXG4gIGxldCBjb21iaW5lIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgKCogY2hvb3NlIHRoZSBmaXJzdCBib29sLXBheWxvYWQgb3Igbm9uLXBhaXIgZXJyb3IgdGhhdCBvY2N1cnMgKilcbiAgICB8ICgoQm9vbF9wYXlsb2FkIHwgTm9uX3BhaXIgXykgYXMgdCksIF8gLT4gdFxuICAgIHwgXywgKChCb29sX3BheWxvYWQgfCBOb25fcGFpciBfKSBhcyB0KSAtPiB0XG4gICAgKCogY29tYmluZSBsaXN0cyBvZiBzaW1pbGFyIGVycm9ycyAqKVxuICAgIHwgRXh0cmFzIGEsIEV4dHJhcyBiIC0+IEV4dHJhcyAoYSBAIGIpXG4gICAgfCBEdXBzIGEsIER1cHMgYiAtPiBEdXBzIChhIEAgYilcbiAgICB8IE1pc3NpbmcgYSwgTWlzc2luZyBiIC0+IE1pc3NpbmcgKGEgQCBiKVxuICAgICgqIG90aGVyd2lzZSwgZHVwcyA+IGV4dHJhcyA+IG1pc3NpbmcgKilcbiAgICB8IChEdXBzIF8gYXMgdCksIF8gfCBfLCAoRHVwcyBfIGFzIHQpIC0+IHRcbiAgICB8IChFeHRyYXMgXyBhcyB0KSwgXyB8IF8sIChFeHRyYXMgXyBhcyB0KSAtPiB0XG4gIDs7XG5cbiAgbGV0IHJhaXNlIHQgfmNhbGxlciB+Y29udGV4dCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCb29sX3BheWxvYWQgLT4gcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgY2FsbGVyIGNvbnRleHRcbiAgICB8IEV4dHJhcyBuYW1lcyAtPiByZWNvcmRfZXh0cmFfZmllbGRzIGNhbGxlciAoTGlzdC5yZXYgbmFtZXMpIGNvbnRleHRcbiAgICB8IER1cHMgbmFtZXMgLT4gcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgY2FsbGVyIChMaXN0LnJldiBuYW1lcykgY29udGV4dFxuICAgIHwgTWlzc2luZyBuYW1lcyAtPlxuICAgICAgTGlzdC5tYXAgbmFtZXMgfmY6KGZ1biBuYW1lIC0+IHRydWUsIG5hbWUpXG4gICAgICB8PiByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGNhbGxlciBjb250ZXh0XG4gICAgfCBOb25fcGFpciBtYXliZV9jb250ZXh0IC0+XG4gICAgICBsZXQgY29udGV4dCA9IE9wdGlvbi52YWx1ZSBtYXliZV9jb250ZXh0IH5kZWZhdWx0OmNvbnRleHQgaW5cbiAgICAgIHJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkIGNhbGxlciBjb250ZXh0XG4gIDs7XG5lbmRcblxuZXhjZXB0aW9uIE1hbGZvcm1lZCBvZiBNYWxmb3JtZWQudFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgKCogU3RvcmVzIHNleHBzIGNvcnJlc3BvbmRpbmcgdG8gcmVjb3JkIGZpZWxkcywgaW4gdGhlIG9yZGVyIHRoZSBmaWVsZHMgd2VyZSBkZWNsYXJlZC5cbiAgICAgRXhjbHVkZXMgZmllbGRzIGFscmVhZHkgcGFyc2VkIGluIHRoZSBmYXN0IHBhdGguXG5cbiAgICAgTGlzdCBzZXhwcyByZXByZXNlbnQgYSBmaWVsZCB0aGF0IGlzIHByZXNlbnQsIHN1Y2ggYXMgKHggMSkgZm9yIGEgZmllbGQgbmFtZWQgXCJ4XCIuXG4gICAgIEF0b20gc2V4cHMgcmVwcmVzZW50IGEgZmllbGQgdGhhdCBpcyBhYnNlbnQsIG9yIGF0IGxlYXN0IG5vdCB5ZXQgc2Vlbi4gKilcbiAgdHlwZSB0ID0geyBzdGF0ZSA6IFNleHAudCBhcnJheSB9IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHVuc2FmZV9nZXQgdCBwb3MgPSBBcnJheS51bnNhZmVfZ2V0IHQuc3RhdGUgcG9zXG4gIGxldCB1bnNhZmVfc2V0IHQgcG9zIHNleHAgPSBBcnJheS51bnNhZmVfc2V0IHQuc3RhdGUgcG9zIHNleHBcbiAgbGV0IGFic2VudCA9IFNleHAuQXRvbSBcIlwiXG4gIGxldCBjcmVhdGUgbGVuID0geyBzdGF0ZSA9IEFycmF5Lm1ha2UgbGVuIGFic2VudCB9XG5lbmRcblxuKCogUGFyc2luZyBmaWVsZCB2YWx1ZXMgZnJvbSBzdGF0ZS4gKilcblxubGV0IHJlYyBwYXJzZV92YWx1ZV9tYWxmb3JtZWRcbiAgOiB0eXBlIGEgYi4gTWFsZm9ybWVkLnQgLT4gZmllbGRzOihhICogYikgRmllbGRzLnQgLT4gc3RhdGU6U3RhdGUudCAtPiBwb3M6aW50IC0+IGFcbiAgPVxuICBmdW4gbWFsZm9ybWVkIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbGV0IChGaWVsZCBmaWVsZCkgPSBmaWVsZHMgaW5cbiAgbGV0IG1hbGZvcm1lZCA9XG4gICAgbWF0Y2ggcGFyc2VfdmFsdWVzIH5maWVsZHM6ZmllbGQucmVzdCB+c3RhdGUgfnBvczoocG9zICsgMSkgd2l0aFxuICAgIHwgKF8gOiBiKSAtPiBtYWxmb3JtZWRcbiAgICB8IGV4Y2VwdGlvbiBNYWxmb3JtZWQgb3RoZXIgLT4gTWFsZm9ybWVkLmNvbWJpbmUgbWFsZm9ybWVkIG90aGVyXG4gIGluXG4gIHJhaXNlIChNYWxmb3JtZWQgbWFsZm9ybWVkKVxuXG5hbmQgcGFyc2VfdmFsdWUgOiB0eXBlIGEgYi4gZmllbGRzOihhICogYikgRmllbGRzLnQgLT4gc3RhdGU6U3RhdGUudCAtPiBwb3M6aW50IC0+IGEgKiBiID1cbiAgZnVuIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbGV0IChGaWVsZCB7IG5hbWU7IGtpbmQ7IGNvbnY7IHJlc3QgfSkgPSBmaWVsZHMgaW5cbiAgbGV0IHZhbHVlIDogYSA9XG4gICAgbWF0Y2gga2luZCwgU3RhdGUudW5zYWZlX2dldCBzdGF0ZSBwb3Mgd2l0aFxuICAgICgqIHdlbGwtZm9ybWVkICopXG4gICAgfCBSZXF1aXJlZCwgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IERlZmF1bHQgXywgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IE9taXRfbmlsLCBMaXN0IFsgXzsgc2V4cCBdIC0+IGNvbnYgc2V4cFxuICAgIHwgU2V4cF9vcHRpb24sIExpc3QgWyBfOyBzZXhwIF0gLT4gU29tZSAoY29udiBzZXhwKVxuICAgIHwgU2V4cF9saXN0LCBMaXN0IFsgXzsgc2V4cCBdIC0+IGxpc3Rfb2Zfc2V4cCBjb252IHNleHBcbiAgICB8IFNleHBfYXJyYXksIExpc3QgWyBfOyBzZXhwIF0gLT4gYXJyYXlfb2Zfc2V4cCBjb252IHNleHBcbiAgICB8IFNleHBfYm9vbCwgTGlzdCBbIF8gXSAtPiB0cnVlXG4gICAgKCogaWxsLWZvcm1lZCAqKVxuICAgIHwgKCAoUmVxdWlyZWQgfCBEZWZhdWx0IF8gfCBPbWl0X25pbCB8IFNleHBfb3B0aW9uIHwgU2V4cF9saXN0IHwgU2V4cF9hcnJheSlcbiAgICAgICwgKExpc3QgKF8gOjogXyA6OiBfIDo6IF8pIGFzIHNleHApICkgLT5cbiAgICAgIHBhcnNlX3ZhbHVlX21hbGZvcm1lZCAoTm9uX3BhaXIgKFNvbWUgc2V4cCkpIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgICB8ICggKFJlcXVpcmVkIHwgRGVmYXVsdCBfIHwgT21pdF9uaWwgfCBTZXhwX29wdGlvbiB8IFNleHBfbGlzdCB8IFNleHBfYXJyYXkpXG4gICAgICAsIExpc3QgKFtdIHwgWyBfIF0pICkgLT4gcGFyc2VfdmFsdWVfbWFsZm9ybWVkIChOb25fcGFpciBOb25lKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCBTZXhwX2Jvb2wsIExpc3QgKFtdIHwgXyA6OiBfIDo6IF8pIC0+XG4gICAgICBwYXJzZV92YWx1ZV9tYWxmb3JtZWQgQm9vbF9wYXlsb2FkIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgICAoKiBhYnNlbnQgKilcbiAgICB8IFJlcXVpcmVkLCBBdG9tIF8gLT4gcGFyc2VfdmFsdWVfbWFsZm9ybWVkIChNaXNzaW5nIFsgbmFtZSBdKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCBEZWZhdWx0IGRlZmF1bHQsIEF0b20gXyAtPiBkZWZhdWx0ICgpXG4gICAgfCBPbWl0X25pbCwgQXRvbSBfIC0+IGNvbnYgKExpc3QgW10pXG4gICAgfCBTZXhwX29wdGlvbiwgQXRvbSBfIC0+IE5vbmVcbiAgICB8IFNleHBfbGlzdCwgQXRvbSBfIC0+IFtdXG4gICAgfCBTZXhwX2FycmF5LCBBdG9tIF8gLT4gW3x8XVxuICAgIHwgU2V4cF9ib29sLCBBdG9tIF8gLT4gZmFsc2VcbiAgaW5cbiAgdmFsdWUsIHBhcnNlX3ZhbHVlcyB+ZmllbGRzOnJlc3QgfnN0YXRlIH5wb3M6KHBvcyArIDEpXG5cbmFuZCBwYXJzZV92YWx1ZXMgOiB0eXBlIGEuIGZpZWxkczphIEZpZWxkcy50IC0+IHN0YXRlOlN0YXRlLnQgLT4gcG9zOmludCAtPiBhID1cbiAgZnVuIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbWF0Y2ggZmllbGRzIHdpdGhcbiAgfCBGaWVsZCBfIC0+IHBhcnNlX3ZhbHVlIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgfCBFbXB0eSAtPiAoKVxuOztcblxuKCogUG9wdWxhdGluZyBzdGF0ZS4gSGFuZGxlcyBzbG93IHBhdGggY2FzZXMgd2hlcmUgdGhlcmUgbWF5IGJlIHJlb3JkZXJlZCwgZHVwbGljYXRlZCxcbiAgIG1pc3NpbmcsIG9yIGV4dHJhIGZpZWxkcy4gKilcblxubGV0IHJlYyBwYXJzZV9zcGluZV9tYWxmb3JtZWQgbWFsZm9ybWVkIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgPVxuICBsZXQgbWFsZm9ybWVkID1cbiAgICBtYXRjaCBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgd2l0aFxuICAgIHwgKCkgLT4gbWFsZm9ybWVkXG4gICAgfCBleGNlcHRpb24gTWFsZm9ybWVkIG90aGVyIC0+IE1hbGZvcm1lZC5jb21iaW5lIG1hbGZvcm1lZCBvdGhlclxuICBpblxuICByYWlzZSAoTWFsZm9ybWVkIG1hbGZvcm1lZClcblxuYW5kIHBhcnNlX3NwaW5lX3Nsb3cgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcyA9XG4gIG1hdGNoIChzZXhwcyA6IFNleHAudCBsaXN0KSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoTGlzdCAoQXRvbSBuYW1lIDo6IF8pIGFzIGZpZWxkKSA6OiBzZXhwcyAtPlxuICAgIGxldCBpID0gaW5kZXggbmFtZSBpblxuICAgIChtYXRjaCBzZWVuIDw9IGkgJiYgaSA8IGxlbiB3aXRoXG4gICAgIHwgdHJ1ZSAtPlxuICAgICAgICgqIHZhbGlkIGZpZWxkIGZvciBzbG93LXBhdGggcGFyc2luZyAqKVxuICAgICAgIGxldCBwb3MgPSBpIC0gc2VlbiBpblxuICAgICAgIChtYXRjaCBTdGF0ZS51bnNhZmVfZ2V0IHN0YXRlIHBvcyB3aXRoXG4gICAgICAgIHwgQXRvbSBfIC0+XG4gICAgICAgICAgKCogZmllbGQgbm90IHNlZW4geWV0ICopXG4gICAgICAgICAgU3RhdGUudW5zYWZlX3NldCBzdGF0ZSBwb3MgZmllbGQ7XG4gICAgICAgICAgcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgIHwgTGlzdCBfIC0+XG4gICAgICAgICAgKCogZmllbGQgYWxyZWFkeSBzZWVuICopXG4gICAgICAgICAgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIChEdXBzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzKVxuICAgICB8IGZhbHNlIC0+XG4gICAgICAgKG1hdGNoIDAgPD0gaSAmJiBpIDwgc2VlbiB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICgqIGZpZWxkIHNlZW4gaW4gZmFzdCBwYXRoICopXG4gICAgICAgICAgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIChEdXBzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAoKiBleHRyYSBmaWVsZCAqKVxuICAgICAgICAgIChtYXRjaCBleHRyYSB3aXRoXG4gICAgICAgICAgIHwgdHJ1ZSAtPiBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHNcbiAgICAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoRXh0cmFzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzKSkpXG4gIHwgc2V4cCA6OiBzZXhwcyAtPlxuICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoTm9uX3BhaXIgKFNvbWUgc2V4cCkpIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHNcbjs7XG5cbigqIFNsb3cgcGF0aCBmb3IgcmVjb3JkIHBhcnNpbmcuIFVzZXMgc3RhdGUgdG8gc3RvcmUgZmllbGRzIGFzIHRoZXkgYXJlIGRpc2NvdmVyZWQuICopXG5cbmxldCBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMgPVxuICBsZXQgdW5zZWVuID0gRmllbGRzLmxlbmd0aCBmaWVsZHMgaW5cbiAgbGV0IHN0YXRlID0gU3RhdGUuY3JlYXRlIHVuc2VlbiBpblxuICBsZXQgbGVuID0gc2VlbiArIHVuc2VlbiBpblxuICAoKiBwb3B1bGF0ZSBzdGF0ZSAqKVxuICBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHM7XG4gICgqIHBhcnNlIHZhbHVlcyBmcm9tIHN0YXRlICopXG4gIHBhcnNlX3ZhbHVlcyB+ZmllbGRzIH5zdGF0ZSB+cG9zOjBcbjs7XG5cbigqIEZhc3QgcGF0aCBmb3IgcmVjb3JkIHBhcnNpbmcuIERpcmVjdGx5IHBhcnNlcyBhbmQgcmV0dXJucyBmaWVsZHMgaW4gdGhlIG9yZGVyIHRoZXkgYXJlXG4gICBkZWNsYXJlZC4gRmFsbHMgYmFjayBvbiBzbG93IHBhdGggaWYgYW55IGZpZWxkcyBhcmUgYWJzZW50LCByZW9yZGVyZWQsIG9yIG1hbGZvcm1lZC4gKilcblxubGV0IHJlYyBwYXJzZV9maWVsZF9mYXN0XG4gIDogdHlwZSBhIGIuXG4gICAgZmllbGRzOihhICogYikgRmllbGRzLnRcbiAgICAtPiBpbmRleDooc3RyaW5nIC0+IGludClcbiAgICAtPiBleHRyYTpib29sXG4gICAgLT4gc2VlbjppbnRcbiAgICAtPiBTZXhwLnQgbGlzdFxuICAgIC0+IGEgKiBiXG4gID1cbiAgZnVuIH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcyAtPlxuICBsZXQgKEZpZWxkIHsgbmFtZTsga2luZDsgY29udjsgcmVzdCB9KSA9IGZpZWxkcyBpblxuICBtYXRjaCBzZXhwcyB3aXRoXG4gIHwgTGlzdCAoQXRvbSBhdG9tIDo6IGFyZ3MpIDo6IG90aGVycyB3aGVuIFN0cmluZy5lcXVhbCBhdG9tIG5hbWUgLT5cbiAgICAobWF0Y2gga2luZCwgYXJncyB3aXRoXG4gICAgIHwgUmVxdWlyZWQsIFsgc2V4cCBdIC0+XG4gICAgICAgY29udiBzZXhwLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzXG4gICAgIHwgRGVmYXVsdCBfLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IE9taXRfbmlsLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IFNleHBfb3B0aW9uLCBbIHNleHAgXSAtPlxuICAgICAgICggU29tZSAoY29udiBzZXhwKVxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9saXN0LCBbIHNleHAgXSAtPlxuICAgICAgICggbGlzdF9vZl9zZXhwIGNvbnYgc2V4cFxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9hcnJheSwgWyBzZXhwIF0gLT5cbiAgICAgICAoIGFycmF5X29mX3NleHAgY29udiBzZXhwXG4gICAgICAgLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzIClcbiAgICAgfCBTZXhwX2Jvb2wsIFtdIC0+XG4gICAgICAgdHJ1ZSwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICAoKiBtYWxmb3JtZWQgZmllbGQgb2Ygc29tZSBraW5kLCBkaXNwYXRjaCB0byBzbG93IHBhdGggKilcbiAgICAgfCBfLCBfIC0+IHBhcnNlX3JlY29yZF9zbG93IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcylcbiAgKCogbWFsZm9ybWVkIG9yIG91dC1vZi1vcmRlciBmaWVsZCwgZGlzcGF0Y2ggdG8gc2xvdyBwYXRoICopXG4gIHwgXyAtPiBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHNcblxuYW5kIHBhcnNlX3NwaW5lX2Zhc3RcbiAgOiB0eXBlIGEuXG4gICAgZmllbGRzOmEgRmllbGRzLnRcbiAgICAtPiBpbmRleDooc3RyaW5nIC0+IGludClcbiAgICAtPiBleHRyYTpib29sXG4gICAgLT4gc2VlbjppbnRcbiAgICAtPiBTZXhwLnQgbGlzdFxuICAgIC0+IGFcbiAgPVxuICBmdW4gfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzIC0+XG4gIG1hdGNoIGZpZWxkcyB3aXRoXG4gIHwgRmllbGQgXyAtPiBwYXJzZV9maWVsZF9mYXN0IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwc1xuICB8IEVtcHR5IC0+XG4gICAgKG1hdGNoIHNleHBzIHdpdGhcbiAgICAgfCBbXSAtPiAoKVxuICAgICB8IF8gOjogXyAtPlxuICAgICAgICgqIGV4dHJhIHNleHBzLCBkaXNwYXRjaCB0byBzbG93IHBhdGggKilcbiAgICAgICBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMpXG47O1xuXG5sZXQgcGFyc2VfcmVjb3JkX2Zhc3QgfmZpZWxkcyB+aW5kZXggfmV4dHJhIHNleHBzID1cbiAgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW46MCBzZXhwc1xuOztcblxuKCogRW50cnkgcG9pbnRzLiAqKVxuXG5sZXQgcmVjb3JkX29mX3NleHBzXG4gICAgICB+Y2FsbGVyXG4gICAgICB+Y29udGV4dFxuICAgICAgfmZpZWxkc1xuICAgICAgfmluZGV4X29mX2ZpZWxkXG4gICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICB+Y3JlYXRlXG4gICAgICBzZXhwc1xuICA9XG4gIGxldCBhbGxvd19leHRyYV9maWVsZHMgPVxuICAgIGFsbG93X2V4dHJhX2ZpZWxkcyB8fCBub3QgIVNleHBfY29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzXG4gIGluXG4gIG1hdGNoXG4gICAgcGFyc2VfcmVjb3JkX2Zhc3QgfmZpZWxkcyB+aW5kZXg6aW5kZXhfb2ZfZmllbGQgfmV4dHJhOmFsbG93X2V4dHJhX2ZpZWxkcyBzZXhwc1xuICB3aXRoXG4gIHwgdmFsdWUgLT4gY3JlYXRlIHZhbHVlXG4gIHwgZXhjZXB0aW9uIE1hbGZvcm1lZCBtYWxmb3JtZWQgLT4gTWFsZm9ybWVkLnJhaXNlIG1hbGZvcm1lZCB+Y2FsbGVyIH5jb250ZXh0XG47O1xuXG5sZXQgcmVjb3JkX29mX3NleHAgfmNhbGxlciB+ZmllbGRzIH5pbmRleF9vZl9maWVsZCB+YWxsb3dfZXh0cmFfZmllbGRzIH5jcmVhdGUgc2V4cCA9XG4gIG1hdGNoIChzZXhwIDogU2V4cC50KSB3aXRoXG4gIHwgQXRvbSBfIGFzIGNvbnRleHQgLT4gcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGNhbGxlciBjb250ZXh0XG4gIHwgTGlzdCBzZXhwcyBhcyBjb250ZXh0IC0+XG4gICAgcmVjb3JkX29mX3NleHBzXG4gICAgICB+Y2FsbGVyXG4gICAgICB+Y29udGV4dFxuICAgICAgfmZpZWxkc1xuICAgICAgfmluZGV4X29mX2ZpZWxkXG4gICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICB+Y3JlYXRlXG4gICAgICBzZXhwc1xuOztcbiIsIigqIFRoZSBbZ2xvYmFsaXplX3tib29sLGNoYXIsdW5pdH1dIGZ1bmN0aW9ucyBhcmUgd3JpdHRlbiBhcyBtYXRjaGVzIHBsdXMgdGhlIGlkZW50aXR5XG4gICBmdW5jdGlvbiBzbyB0aGF0IHRoZSB0eXBlIGNoZWNrZXIgY2FuIGdpdmUgdGhlbSB0aGUgZGVzaXJlZCB0eXBlLCB3aXRob3V0IGhhdmluZyB0byBkb1xuICAgYW55dGhpbmcgc3BlY2lhbC4gIEhvd2V2ZXIsIFtnbG9iYWxpemVfaW50XSBjYW5ub3QgYmUgd3JpdHRlbiB0aGlzIHdheSwgc28gd2UgcmVzb3J0IHRvXG4gICB1c2luZyBhbiBbZXh0ZXJuYWxdLiAqKVxuXG5sZXQgZ2xvYmFsaXplX2Jvb2wgPSBmdW5jdGlvblxuICB8ICh0cnVlIHwgZmFsc2UpIGFzIGIgLT4gYlxuOztcblxubGV0IGdsb2JhbGl6ZV9jaGFyID0gZnVuY3Rpb25cbiAgfCAnXFx4MDAnIC4uICdcXHhGRicgYXMgYyAtPiBjXG47O1xuXG5leHRlcm5hbCBnbG9iYWxpemVfZmxvYXQgOiAoZmxvYXRbQGxvY2FsXSkgLT4gZmxvYXQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50IDogKGludFtAbG9jYWxdKSAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50MzIgOiAoaW50MzJbQGxvY2FsXSkgLT4gaW50MzIgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50NjQgOiAoaW50NjRbQGxvY2FsXSkgLT4gaW50NjQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfbmF0aXZlaW50IDogKG5hdGl2ZWludFtAbG9jYWxdKSAtPiBuYXRpdmVpbnQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfYnl0ZXMgOiAoYnl0ZXNbQGxvY2FsXSkgLT4gYnl0ZXMgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfc3RyaW5nIDogKHN0cmluZ1tAbG9jYWxdKSAtPiBzdHJpbmcgPSBcImNhbWxfb2JqX2R1cFwiXG5cbmxldCBnbG9iYWxpemVfdW5pdCAoKCkgYXMgdSkgPSB1XG5cbmV4dGVybmFsIGdsb2JhbGl6ZV9hcnJheScgOiAoJ2EgYXJyYXlbQGxvY2FsXSkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfb2JqX2R1cFwiXG5cbmxldCBnbG9iYWxpemVfYXJyYXkgXyBhID0gZ2xvYmFsaXplX2FycmF5JyBhXG5cbmxldCByZWMgZ2xvYmFsaXplX2xpc3QgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+IGYgeCA6OiBnbG9iYWxpemVfbGlzdCBmIHhzXG47O1xuXG5sZXQgZ2xvYmFsaXplX29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuOztcblxubGV0IGdsb2JhbGl6ZV9yZXN1bHQgZ2xvYmFsaXplX2EgZ2xvYmFsaXplX2IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIGEgLT4gT2sgKGdsb2JhbGl6ZV9hIGEpXG4gIHwgRXJyb3IgYiAtPiBFcnJvciAoZ2xvYmFsaXplX2IgYilcbjs7XG5cbmxldCBnbG9iYWxpemVfcmVmJyByID0gcmVmICFyXG5sZXQgZ2xvYmFsaXplX3JlZiBfIHIgPSBnbG9iYWxpemVfcmVmJyByXG4iLCIoKiogUHJpbWl0aXZlcyBmb3IgcG9seW1vcnBoaWMgY29tcGFyZS4gKilcblxuKCpfIFBvbHltb3JwaGljIGNvbXBpbGVyIHByaW1pdGl2ZXMgY2FuJ3QgYmUgYWxpYXNlcyBhcyB0aGlzIGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAgaW5saW5pbmcuIChJZiBhbGlhc2VkIHdpdGhvdXQgYSB0eXBlIGFubm90YXRpb24sIHRoZSBjb21waWxlciB3b3VsZCBpbXBsZW1lbnQgdGhlbVxuICB1c2luZyB0aGUgZ2VuZXJpYyBjb2RlIGRvaW5nIGEgQyBjYWxsLCBhbmQgaXQncyB0aGlzIGNvZGUgdGhhdCB3b3VsZCBiZSBpbmxpbmVkLikgQXMgYVxuICByZXN1bHQgd2UgaGF2ZSB0byBjb3B5IHRoZSBbZXh0ZXJuYWwgLi4uXSBkZWNsYXJhdGlvbiBoZXJlLiAqKVxuZXh0ZXJuYWwgKCA8ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA9ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPiApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoID49ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBhc2NlbmRpbmcgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBjb21wYXJlIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbmxldCBtYXggeCB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxubGV0IG1pbiB4IHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBpbmNsdWRlZCBpbiBbSW1wb3J0XS4gIEl0IGlzIGFpbWVkIGF0IG1vZHVsZXMgdGhhdCBkZWZpbmUgdGhlIHN0YW5kYXJkXG4gICBjb21iaW5hdG9ycyBmb3IgW3NleHBfb2ZdLCBbb2Zfc2V4cF0sIFtjb21wYXJlXSBhbmQgW2hhc2hdIGFuZCBhcmUgaW5jbHVkZWQgaW5cbiAgIFtJbXBvcnRdLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAoKiBUaGVzZSBtb2R1bGVzIGFyZSByZWRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0KVxuICBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG50eXBlICdhIHJlZiA9ICdhIFN0ZGxpYi5yZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5cbigqIFJlc2h1ZmZsZSBbU3RkbGliXSBzbyB0aGF0IHdlIGNob29zZSB0aGUgbW9kdWxlcyB1c2luZyBsYWJlbHMgd2hlbiBhdmFpbGFibGUuICopXG5tb2R1bGUgU3RkbGliID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliXG4gIGluY2x1ZGUgU3RkbGliLlN0ZExhYmVsc1xuICBpbmNsdWRlIFN0ZGxpYi5Nb3JlTGFiZWxzXG5lbmRcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCgnYSAtPiAnYilbQGxvY2FsX29wdF0pIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuZXh0ZXJuYWwgKCAmJiApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgbm90IDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuKCogV2UgdXNlIFtPYmoubWFnaWNdIGhlcmUgYXMgb3RoZXIgaW1wbGVtZW50YXRpb25zIGdlbmVyYXRlIGEgY29uZGl0aW9uYWwganVtcCBhbmQgdGhlXG4gICBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGlzIG5vdGljZWFibGUuICopXG5sZXQgYm9vbF90b19pbnQgKHggOiBib29sKSA6IGludCA9IFN0ZGxpYi5PYmoubWFnaWMgeFxuXG4oKiBUaGlzIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5ICopXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgKCAhPSApID0gU3RkbGliLiggIT0gKVxubGV0ICggKiApID0gU3RkbGliLiggKiApXG5sZXQgKCAqKiApID0gU3RkbGliLiggKiogKVxubGV0ICggKi4gKSA9IFN0ZGxpYi4oICouIClcbmxldCAoICsgKSA9IFN0ZGxpYi4oICsgKVxubGV0ICggKy4gKSA9IFN0ZGxpYi4oICsuIClcbmxldCAoIC0gKSA9IFN0ZGxpYi4oIC0gKVxubGV0ICggLS4gKSA9IFN0ZGxpYi4oIC0uIClcbmxldCAoIC8gKSA9IFN0ZGxpYi4oIC8gKVxubGV0ICggLy4gKSA9IFN0ZGxpYi4oIC8uIClcblxubW9kdWxlIFBvbHkgPSBQb2x5MCAoKiogQGNhbm9uaWNhbCBCYXNlLlBvbHkgKilcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgKCogRGVjbGFyZWQgYXMgZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX2FwcGx5X1ggd3JhcHBpbmcgZXZlbiB3aGVuXG4gICAgIGNvbXBpbGluZyB3aXRob3V0IGNyb3NzIGxpYnJhcnkgaW5saW5pbmcuICopXG4gIGV4dGVybmFsICggPSApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuICBleHRlcm5hbCAoID49ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbiAgZXh0ZXJuYWwgY29tcGFyZSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPCApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmVcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGludFxuICAgID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuSW50NjQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBib29sKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBib29sKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBib29sKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBib29sKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJvb2wpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBib29sKSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogY2hhcikgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogY2hhcikgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogY2hhcikgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBjaGFyKSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogY2hhcikgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCBpIHggPSBTdGRsaWIuVWNoYXIudG9faW50IHhcbiAgbGV0ICggPCApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIChpIHgpIChpIHkpXG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIChpIHgpIChpIHkpXG4gIGxldCAoIDw+ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PiApIChpIHgpIChpIHkpXG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPj0gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgKGkgeCkgKGkgeSlcblxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuYXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5kZXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSAoaSB4KSAoaSB5KVxuICBsZXQgZXF1YWwgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgKGkgeCkgKGkgeSlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBmbG9hdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBmbG9hdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogZmxvYXQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogZmxvYXQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBmbG9hdCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHN0cmluZykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHN0cmluZykgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IHN0cmluZykgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGJ5dGVzKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGJ5dGVzKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBieXRlcykgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBieXRlcykgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGJ5dGVzKSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbigqIFRoaXMgbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gc3BlY2lhbGl6ZSBpdCBhcyBhXG4gICBkaXJlY3Qgc2V0IG9yIGNhbWxfbW9kaWZ5ICopXG5leHRlcm5hbCAoIDo9ICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgd29uJ3QgdW5ib3hcbiAgIHJlZmVyZW5jZXMgKilcbmV4dGVybmFsICggISApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gKCdhIHJlZltAbG9jYWxfb3B0XSkgPSBcIiVtYWtlbXV0YWJsZVwiXG5cbmxldCAoIEAgKSA9IFN0ZGxpYi4oIEAgKVxubGV0ICggXiApID0gU3RkbGliLiggXiApXG5sZXQgKCB+LSApID0gU3RkbGliLiggfi0gKVxubGV0ICggfi0uICkgPSBTdGRsaWIuKCB+LS4gKVxubGV0ICggYXNyICkgPSBTdGRsaWIuKCBhc3IgKVxubGV0ICggbGFuZCApID0gU3RkbGliLiggbGFuZCApXG5sZXQgbG5vdCA9IFN0ZGxpYi5sbm90XG5sZXQgKCBsb3IgKSA9IFN0ZGxpYi4oIGxvciApXG5sZXQgKCBsc2wgKSA9IFN0ZGxpYi4oIGxzbCApXG5sZXQgKCBsc3IgKSA9IFN0ZGxpYi4oIGxzciApXG5sZXQgKCBseG9yICkgPSBTdGRsaWIuKCBseG9yIClcbmxldCAoIG1vZCApID0gU3RkbGliLiggbW9kIClcbmxldCBhYnMgPSBTdGRsaWIuYWJzXG5sZXQgZmFpbHdpdGggPSBTdGRsaWIuZmFpbHdpdGhcbmxldCBmc3QgPSBTdGRsaWIuZnN0XG5sZXQgaW52YWxpZF9hcmcgPSBTdGRsaWIuaW52YWxpZF9hcmdcbmxldCBzbmQgPSBTdGRsaWIuc25kXG5cbigqIFtyYWlzZV0gbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBhcyB0aGUgY29tcGlsZXIgYXV0b21hdGljYWxseSByZXBsYWNlc1xuICAgJyVyYWlzZScgYnkgJyVyZXJhaXNlJyB3aGVuIGFwcHJvcHJpYXRlLiAqKVxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxubGV0IHBoeXNfZXF1YWwgPSBTdGRsaWIuKCA9PSApXG5cbmV4dGVybmFsIGRlY3IgOiAoaW50IHJlZltAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWRlY3JcIlxuZXh0ZXJuYWwgaW5jciA6IChpbnQgcmVmW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaW5jclwiXG5cbigqIHVzZWQgYnkgc2V4cF9jb252LCB3aGljaCBmbG9hdDAgZGVwZW5kcyBvbiB0aHJvdWdoIG9wdGlvbiAqKVxubGV0IGZsb2F0X29mX3N0cmluZyA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdcblxuKCogW2FtX3Rlc3RpbmddIGlzIHVzZWQgaW4gYSBmZXcgcGxhY2VzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIGluIHRlc3RpbmcgbW9kZSwgc3VjaFxuICAgYXMgaW4gW3JhbmRvbS5tbF0uICBbYW1fdGVzdGluZ10gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW0Jhc2VfYW1fdGVzdGluZ10sIGEgd2VhayBDL2pzXG4gICBwcmltaXRpdmUgdGhhdCByZXR1cm5zIFtmYWxzZV0sIGJ1dCB3aGVuIGxpbmtpbmcgYW4gaW5saW5lLXRlc3QtcnVubmVyIGV4ZWN1dGFibGUsIGlzXG4gICBvdmVycmlkZGVuIGJ5IGFub3RoZXIgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbdHJ1ZV0uICopXG5leHRlcm5hbCBhbV90ZXN0aW5nIDogdW5pdCAtPiBib29sID0gXCJCYXNlX2FtX3Rlc3RpbmdcIlxuXG5sZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmcgKClcbiIsIigqIFtJbnQwXSBkZWZpbmVzIGludGVnZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbU3RkbGliXS4gW0ludDBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGVcbiAgIHBhcnQgb2YgW1N0ZGxpYl0gdGhhdCBbQmFzZV0gdXNlcyBmb3IgaW50ZWdlcnMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGludDAubWwgc2hvdWxkIHVzZSB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgdGhyb3VnaCBbU3RkbGliXS4gW0ludDBdIGhhc1xuICAgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgaW50cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuSW50XSBpbiBidWlsZFxuICAgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgSW50ICA9IEludDBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgSW50ID0gSW50MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcFxuICAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5JbnRdLiAqKVxuXG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9pbnRcbmxldCBvZl9zdHJpbmcgPSBTdGRsaWIuaW50X29mX3N0cmluZ1xubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuaW50X29mX3N0cmluZ19vcHRcbmxldCB0b19mbG9hdCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdCA9IFN0ZGxpYi5pbnRfb2ZfZmxvYXRcbmxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IFN0ZGxpYi5taW5faW50XG5sZXQgc3VjYyA9IFN0ZGxpYi5zdWNjXG5sZXQgcHJlZCA9IFN0ZGxpYi5wcmVkXG4iLCJvcGVuISBJbXBvcnQwXG5pbmNsdWRlIFN0ZGxpYi5QcmludGZcblxuKCoqIGZhaWx3aXRoLCBpbnZhbGlkX2FyZywgYW5kIGV4aXQgYWNjZXB0aW5nIHByaW50ZidzIGZvcm1hdC4gKilcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGZhaWx3aXRoZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gZmFpbHdpdGggcykgZm10XG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9hcmdmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAoKSAtPiBpbnZhbGlkX2FyZyBzKSBmbXRcbiIsIigqIFtTeXMwXSBkZWZpbmVzIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW1N0ZGxpYi5TeXNdLiAgW1N5czBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZlxuICAgW1N0ZGxpYi5TeXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3lzLm1sXG4gICBzaG91bGQgdXNlIFtTdGRsaWIuU3lzXS4gW1N5czBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlXG4gICBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHRoZXNlXG4gICBmdW5jdGlvbnMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN5c10gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIFN5cyA9IFN5czBdLiAgRGVmaW5pbmcgW21vZHVsZSBTeXMgPSBTeXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlXG4gICBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN5c10uICopXG5cbm9wZW4hIEltcG9ydDBcblxudHlwZSBiYWNrZW5kX3R5cGUgPSBTdGRsaWIuU3lzLmJhY2tlbmRfdHlwZSA9XG4gIHwgTmF0aXZlXG4gIHwgQnl0ZWNvZGVcbiAgfCBPdGhlciBvZiBzdHJpbmdcblxubGV0IGJhY2tlbmRfdHlwZSA9IFN0ZGxpYi5TeXMuYmFja2VuZF90eXBlXG5sZXQgaW50ZXJhY3RpdmUgPSBTdGRsaWIuU3lzLmludGVyYWN0aXZlXG5sZXQgb3NfdHlwZSA9IFN0ZGxpYi5TeXMub3NfdHlwZVxubGV0IHVuaXggPSBTdGRsaWIuU3lzLnVuaXhcbmxldCB3aW4zMiA9IFN0ZGxpYi5TeXMud2luMzJcbmxldCBjeWd3aW4gPSBTdGRsaWIuU3lzLmN5Z3dpblxubGV0IHdvcmRfc2l6ZV9pbl9iaXRzID0gU3RkbGliLlN5cy53b3JkX3NpemVcbmxldCBpbnRfc2l6ZV9pbl9iaXRzID0gU3RkbGliLlN5cy5pbnRfc2l6ZVxubGV0IGJpZ19lbmRpYW4gPSBTdGRsaWIuU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfc3RyaW5nX2xlbmd0aCA9IFN0ZGxpYi5TeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gU3RkbGliLlN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5sZXQgcnVudGltZV92YXJpYW50ID0gU3RkbGliLlN5cy5ydW50aW1lX3ZhcmlhbnRcbmxldCBydW50aW1lX3BhcmFtZXRlcnMgPSBTdGRsaWIuU3lzLnJ1bnRpbWVfcGFyYW1ldGVyc1xubGV0IGFyZ3YgPSBTdGRsaWIuU3lzLmFyZ3ZcbmxldCBnZXRfYXJndiAoKSA9IFN0ZGxpYi5TeXMuYXJndlxubGV0IG9jYW1sX3ZlcnNpb24gPSBTdGRsaWIuU3lzLm9jYW1sX3ZlcnNpb25cbmxldCBlbmFibGVfcnVudGltZV93YXJuaW5ncyA9IFN0ZGxpYi5TeXMuZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcbmxldCBydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgPSBTdGRsaWIuU3lzLnJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuXG5sZXQgZ2V0ZW52X2V4biB2YXIgPVxuICB0cnkgU3RkbGliLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCBTdGRsaWIuTm90X2ZvdW5kIC0+XG4gICAgUHJpbnRmLmZhaWx3aXRoZiBcIlN5cy5nZXRlbnZfZXhuOiBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBpcyBub3Qgc2V0XCIgdmFyICgpXG47O1xuXG5sZXQgZ2V0ZW52IHZhciA9XG4gIG1hdGNoIFN0ZGxpYi5TeXMuZ2V0ZW52IHZhciB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5leHRlcm5hbCBvcGFxdWVfaWRlbnRpdHkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVvcGFxdWVcIlxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5X2dsb2JhbCA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxuZXhjZXB0aW9uIEJyZWFrID0gU3RkbGliLlN5cy5CcmVha1xuIiwiKCogW0FycmF5MF0gZGVmaW5lcyBhcnJheSBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXNcbiAgIG9mIFtTdGRsaWIuQXJyYXldLiAgW0FycmF5MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuQXJyYXldXG4gICB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGFycmF5MC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQXJyYXldLlxuICAgW0FycmF5MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgYXJyYXlzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5BcnJheV0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkXG4gICBkbyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXS4gIFRoaXMgaW5jbHVkZXMgdXNlcyBvZiBzdWJzY3JpcHQgc3ludGF4IChbeC4oaSldLCBbeC4oaSkgPC1cbiAgIGVdKSwgd2hpY2ggdGhlIE9DYW1sIHBhcnNlciBkZXN1Z2FycyBpbnRvIGNhbGxzIHRvIFtBcnJheS5nZXRdIGFuZCBbQXJyYXkuc2V0XS5cbiAgIERlZmluaW5nIFttb2R1bGUgQXJyYXkgPSBBcnJheTBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbVxuICAgbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQXJyYXldLiAqKVxuXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlX2xvY2FsIDogaW50IC0+ICdhIC0+ICgnYSBhcnJheVtAbG9jYWxdKSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuICBleHRlcm5hbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuICBleHRlcm5hbCBnZXQgOiAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogICgnYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgOiAgKCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgIDogIHNyYzooJ2EgYXJyYXlbQGxvY2FsX29wdF0pXG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6KCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGRzdF9wb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmVuZFxuXG5pbmNsdWRlIEFycmF5XG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICB0cnkgY3JlYXRlIGxlbiB4IHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpXG47O1xuXG5sZXQgY3JlYXRlX2xvY2FsIH5sZW4geCA9XG4gIFxuICAgICh0cnkgY3JlYXRlX2xvY2FsIGxlbiB4IHdpdGhcbiAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfbG9jYWwgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKCkpXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgfmxlbiA9XG4gIHRyeSBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCBsZW4gd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgIGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpXG47O1xuXG5sZXQgYXBwZW5kID0gU3RkbGliLkFycmF5LmFwcGVuZFxubGV0IGJsaXQgPSBTdGRsaWIuQXJyYXkuYmxpdFxubGV0IGNvbmNhdCA9IFN0ZGxpYi5BcnJheS5jb25jYXRcbmxldCBjb3B5ID0gU3RkbGliLkFycmF5LmNvcHlcbmxldCBmaWxsID0gU3RkbGliLkFycmF5LmZpbGxcblxubGV0IGluaXQgbGVuIH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IGNyZWF0ZSB+bGVuIChmIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIEludDAucHJlZCBsZW4gZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHJlcylcbjs7XG5cbmxldCBtYWtlX21hdHJpeCA9IFN0ZGxpYi5BcnJheS5tYWtlX21hdHJpeFxubGV0IG9mX2xpc3QgPSBTdGRsaWIuQXJyYXkub2ZfbGlzdFxubGV0IHN1YiA9IFN0ZGxpYi5BcnJheS5zdWJcbmxldCB0b19saXN0ID0gU3RkbGliLkFycmF5LnRvX2xpc3RcblxubGV0IGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBmb2xkX3JpZ2h0IHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+aW5pdCA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSBsZW5ndGggdCAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgdCBpKSAhclxuICBkb25lO1xuICAhclxuOztcblxubGV0IGl0ZXIgdCB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuXG5sZXQgbWFwIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgfmxlbiAoZiAodW5zYWZlX2dldCB0IDApKSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBtYXBpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSB+bGVuIChmIDAgKHVuc2FmZV9nZXQgdCAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBzdGFibGVfc29ydCB0IH5jb21wYXJlID0gU3RkbGliLkFycmF5LnN0YWJsZV9zb3J0IHQgfmNtcDpjb21wYXJlXG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGVsdF9pID0gdC4oaSkgaW5cbiAgbGV0IGVsdF9qID0gdC4oaikgaW5cbiAgdW5zYWZlX3NldCB0IGkgZWx0X2o7XG4gIHVuc2FmZV9zZXQgdCBqIGVsdF9pXG47O1xuIiwiKCogW0NoYXIwXSBkZWZpbmVzIGNoYXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbU3RkbGliLkNoYXJdLiAgW0NoYXIwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW1N0ZGxpYi5DaGFyXSB0aGF0XG4gICBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBjaGFyMC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQ2hhcl0uXG4gICBbQ2hhcjBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGNoYXJzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5DaGFyXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgQ2hhciA9IENoYXIwXS4gIERlZmluaW5nIFttb2R1bGUgQ2hhciA9IENoYXIwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkNoYXJdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5sZXQgZXNjYXBlZCA9IFN0ZGxpYi5DaGFyLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBTdGRsaWIuQ2hhci5sb3dlcmNhc2VfYXNjaWlcbmxldCB0b19pbnQgPSBTdGRsaWIuQ2hhci5jb2RlXG5sZXQgdW5zYWZlX29mX2ludCA9IFN0ZGxpYi5DaGFyLnVuc2FmZV9jaHJcbmxldCB1cHBlcmNhc2UgPSBTdGRsaWIuQ2hhci51cHBlcmNhc2VfYXNjaWlcblxuKCogV2UgdXNlIG91ciBvd24gcmFuZ2UgdGVzdCB3aGVuIGNvbnZlcnRpbmcgaW50ZWdlcnMgdG8gY2hhcnMgcmF0aGVyIHRoYW5cbiAgIGNhbGxpbmcgW1N0ZGxpYi5DaGFyLmNocl0gYmVjYXVzZSBpdCdzIHNpbXBsZSBhbmQgaXQgc2F2ZXMgdXMgYSBmdW5jdGlvbiBjYWxsXG4gICBhbmQgdGhlIHRyeS13aXRoIChleGNlcHRpb25zIGNvc3QsIGVzcGVjaWFsbHkgaW4gdGhlIHdvcmxkIHdpdGggYmFja3RyYWNlcykuICopXG5sZXQgaW50X2lzX29rIGkgPSAwIDw9IGkgJiYgaSA8PSAyNTVcbmxldCBtaW5fdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDBcbmxldCBtYXhfdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDI1NVxubGV0IG9mX2ludCBpID0gaWYgaW50X2lzX29rIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2ZfaW50X2V4biBpID1cbiAgaWYgaW50X2lzX29rIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLm9mX2ludF9leG4gZ290IGludGVnZXIgb3V0IG9mIHJhbmdlOiAlZFwiIGkgKClcbjs7XG5cbmxldCBlcXVhbCAodDEgOiBjaGFyKSB0MiA9IFBvbHkuZXF1YWwgdDEgdDJcbiIsIigqIFtMaXN0MF0gZGVmaW5lcyBsaXN0IGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW1N0ZGxpYi5MaXN0XS4gIFtMaXN0MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuTGlzdF0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gbGlzdDAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkxpc3RdLlxuICAgW0xpc3QwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBsaXN0cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuTGlzdF0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIExpc3QgPSBMaXN0MF0uICBEZWZpbmluZyBbbW9kdWxlIExpc3QgPSBMaXN0MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5MaXN0XS4gKilcblxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBoZF9leG4gPSBTdGRsaWIuTGlzdC5oZFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MaXN0Lmxlbmd0aFxubGV0IHJldl9hcHBlbmQgPSBTdGRsaWIuTGlzdC5yZXZfYXBwZW5kXG5sZXQgdGxfZXhuID0gU3RkbGliLkxpc3QudGxcbmxldCB1bnppcCA9IFN0ZGxpYi5MaXN0LnNwbGl0XG5cbigqIFNvbWUgb2YgdGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5cbmxldCByZWMgZXhpc3RzIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCB4IDo6IHhzIC0+IGlmIGYgeCB0aGVuIHRydWUgZWxzZSBleGlzdHMgeHMgfmZcbjs7XG5cbmxldCByZWMgZXhpc3RzMl9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gZmFsc2VcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT4gZiBhMSBhMiB8fCBleGlzdHMyX29rIGwxIGwyIH5mXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG47O1xuXG5sZXQgcmVjIGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gaW5pdFxuICB8IGEgOjogbCAtPiBmb2xkIGwgfmluaXQ6KGYgaW5pdCBhKSB+ZlxuOztcblxubGV0IHJlYyBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiBpbml0XG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IGZvbGQyX29rIGwxIGwyIH5mIH5pbml0OihmIGluaXQgYTEgYTIpXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mOihmIFtAbG9jYWxdKSA9IG5vdCAoZXhpc3RzIHQgfmY6KGZ1biB4IC0+IG5vdCAoZiB4KSkpXG5cbmxldCByZWMgZm9yX2FsbDJfb2sgbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT4gZiBhMSBhMiAmJiBmb3JfYWxsMl9vayBsMSBsMiB+ZlxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcbjs7XG5cbmxldCByZWMgaXRlciB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBhIDo6IGwgLT5cbiAgICBmIGE7XG4gICAgaXRlciBsIH5mXG47O1xuXG5sZXQgcmVjIGl0ZXIyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiB1bml0KSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAoKVxuICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPlxuICAgIGYgYTEgYTI7XG4gICAgaXRlcjJfb2sgbDEgbDIgfmZcbiAgfCBfLCBfIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG47O1xuXG5sZXQgcmVjIG5vbnRhaWxfbWFwIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+XG4gICAgbGV0IHkgPSBmIHggaW5cbiAgICB5IDo6IG5vbnRhaWxfbWFwIHhzIH5mXG47O1xuXG5sZXQgbm9udGFpbF9tYXBpIHQgfmYgPSBTdGRsaWIuTGlzdC5tYXBpIHQgfmZcbmxldCBwYXJ0aXRpb24gdCB+ZiA9IFN0ZGxpYi5MaXN0LnBhcnRpdGlvbiB0IH5mXG5cbmxldCByZXZfbWFwID1cbiAgbGV0IHJlYyBybWFwX2YgZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGEgOjogbCAtPiBybWFwX2YgZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgZnVuIGwgfmY6KGYgW0Bsb2NhbF0pIC0+IHJtYXBfZiBmIFtdIGxcbjs7XG5cbmxldCByZXZfbWFwMl9vayA9XG4gIGxldCByZWMgcm1hcDJfZiBmIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT4gYWNjdVxuICAgIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IHJtYXAyX2YgZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBmdW4gbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSAtPiBybWFwMl9mIGYgW10gbDEgbDJcbjs7XG5cbmxldCBzb3J0IGwgfmNvbXBhcmUgPSBTdGRsaWIuTGlzdC5zb3J0IGwgfmNtcDpjb21wYXJlXG5sZXQgc3RhYmxlX3NvcnQgbCB+Y29tcGFyZSA9IFN0ZGxpYi5MaXN0LnN0YWJsZV9zb3J0IGwgfmNtcDpjb21wYXJlXG5cbmxldCByZXYgPSBmdW5jdGlvblxuICB8IChbXSB8IFsgXyBdKSBhcyByZXMgLT4gcmVzXG4gIHwgeCA6OiB5IDo6IHJlc3QgLT4gcmV2X2FwcGVuZCByZXN0IFsgeTsgeCBdXG47O1xuXG5sZXQgZm9sZF9yaWdodCBsIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmluaXQgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfIC0+IGZvbGQgfmY6KGZ1biBhIGIgLT4gZiBiIGEpIH5pbml0IChyZXYgbCkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfcmlnaHQyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+aW5pdCA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IGluaXQgKCogYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgW35mXSBiZWxvdyAqKVxuICB8IF8sIF8gLT4gZm9sZDJfb2sgfmY6KGZ1biBhIGIgYyAtPiBmIGIgYyBhKSB+aW5pdCAocmV2IGwxKSAocmV2IGwyKSBbQG5vbnRhaWxdXG47O1xuIiwiKCpcbiAgIFRoaXMgaXMgdGhlIGludGVyZmFjZSB0byB0aGUgcnVudGltZSBzdXBwb3J0IGZvciBbcHB4X2hhc2hdLlxuXG4gICBUaGUgW3BweF9oYXNoXSBzeW50YXggZXh0ZW5zaW9uIHN1cHBvcnRzOiBbQEBkZXJpdmluZyBoYXNoXSBhbmQgWyVoYXNoX2ZvbGQ6IFRZUEVdIGFuZFxuICAgWyVoYXNoOiBUWVBFXVxuXG4gICBGb3IgdHlwZSBbdF0gYSBmdW5jdGlvbiBbaGFzaF9mb2xkX3RdIG9mIHR5cGUgW0hhc2guc3RhdGUgLT4gdCAtPiBIYXNoLnN0YXRlXSBpc1xuICAgZ2VuZXJhdGVkLlxuXG4gICBUaGUgZ2VuZXJhdGVkIFtoYXNoX2ZvbGRfPFQ+XSBmdW5jdGlvbiBpcyBjb21wb3NpdGlvbmFsLCBmb2xsb3dpbmcgdGhlIHN0cnVjdHVyZSBvZiB0aGVcbiAgIHR5cGU7IGFsbG93aW5nIHVzZXIgb3ZlcnJpZGVzIGF0IGV2ZXJ5IGxldmVsLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIG9jYW1sJ3MgYnVpbHRpblxuICAgcG9seW1vcnBoaWMgaGFzaGluZyBbSGFzaHRibC5oYXNoXSB3aGljaCBpZ25vcmVzIHVzZXIgb3ZlcnJpZGVzLlxuXG4gICBUaGUgZ2VuZXJhdG9yIGFsc28gcHJvdmlkZXMgYSBkaXJlY3QgaGFzaC1mdW5jdGlvbiBbaGFzaF0gKG5hbWVkIFtoYXNoXzxUPl0gd2hlbiA8VD4gIT1cbiAgIFwidFwiKSBvZiB0eXBlOiBbdCAtPiBIYXNoLmhhc2hfdmFsdWVdLlxuXG4gICBUaGUgZm9sZGluZyBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2hfZm9sZDogVFlQRV1cbiAgIFRoZSBkaXJlY3QgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoOiBUWVBFXVxuKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBIYXNoX2ludGZcblxuKCoqIEJ1aWx0aW4gZm9sZGluZy1zdHlsZSBoYXNoIGZ1bmN0aW9ucywgYWJzdHJhY3RlZCBvdmVyIFtIYXNoX2ludGYuU10gKilcbm1vZHVsZSBGb2xkaW5nIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkJ1aWx0aW5faW50ZlxuICB3aXRoIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGhhc2hfZm9sZF91bml0IHMgKCkgPSBzXG4gIGxldCBoYXNoX2ZvbGRfaW50ID0gSGFzaC5mb2xkX2ludFxuICBsZXQgaGFzaF9mb2xkX2ludDY0ID0gSGFzaC5mb2xkX2ludDY0XG4gIGxldCBoYXNoX2ZvbGRfZmxvYXQgPSBIYXNoLmZvbGRfZmxvYXRcbiAgbGV0IGhhc2hfZm9sZF9zdHJpbmcgPSBIYXNoLmZvbGRfc3RyaW5nXG4gIGxldCBhc19pbnQgZiBzIHggPSBoYXNoX2ZvbGRfaW50IHMgKGYgeClcblxuICAoKiBUaGlzIGlnbm9yZXMgdGhlIHNpZ24gYml0IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyB1bmxpa2VseSB0byBsZWFkIHRvXG4gICAgIGZyZXF1ZW50IGNvbGxpc2lvbnMgKG1pbl92YWx1ZSBjb2xsaWRpbmcgd2l0aCAwIGlzIHRoZSBtb3N0IGxpa2VseSBvbmUpLiAgKilcbiAgbGV0IGhhc2hfZm9sZF9pbnQzMiA9IGFzX2ludCBTdGRsaWIuSW50MzIudG9faW50XG4gIGxldCBoYXNoX2ZvbGRfY2hhciA9IGFzX2ludCBDaGFyLnRvX2ludFxuXG4gIGxldCBoYXNoX2ZvbGRfYm9vbCA9XG4gICAgYXNfaW50IChmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IDFcbiAgICAgIHwgZmFsc2UgLT4gMClcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX25hdGl2ZWludCBzIHggPSBoYXNoX2ZvbGRfaW50NjQgcyAoU3RkbGliLkludDY0Lm9mX25hdGl2ZWludCB4KVxuXG4gIGxldCBoYXNoX2ZvbGRfb3B0aW9uIGhhc2hfZm9sZF9lbGVtIHMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBoYXNoX2ZvbGRfaW50IHMgMFxuICAgIHwgU29tZSB4IC0+IGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfaW50IHMgMSkgeFxuICA7O1xuXG4gIGxldCByZWMgaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gc1xuICAgIHwgeCA6OiB4cyAtPiBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfZWxlbSBzIHgpIHhzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCA9XG4gICAgKCogVGhlIFtsZW5ndGhdIG9mIHRoZSBsaXN0IG11c3QgYmUgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGhhc2gtc3RhdGUgc28gdmFsdWVzIG9mXG4gICAgICAgdHlwZXMgc3VjaCBhcyBbdW5pdCBsaXN0XSAtIChbXSwgWygpXSwgWygpOygpXSwuLikgYXJlIGhhc2hlZCBkaWZmZXJlbnRseS4gKilcbiAgICAoKiBUaGUgW2xlbmd0aF0gbXVzdCBjb21lIGJlZm9yZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgYSB2aW9sYXRpb24gb2YgdGhlIHJ1bGVcbiAgICAgICBlbmZvcmNlZCBieSBQZXJmZWN0X2hhc2guICopXG4gICAgbGV0IHMgPSBoYXNoX2ZvbGRfaW50IHMgKExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgbGV0IHMgPSBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCBpblxuICAgIHNcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2xhenlfdCBoYXNoX2ZvbGRfZWxlbSBzIHggPSBoYXNoX2ZvbGRfZWxlbSBzIChTdGRsaWIuTGF6eS5mb3JjZSB4KVxuICBsZXQgaGFzaF9mb2xkX3JlZl9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAheFxuXG4gIGxldCByZWMgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgaSA9XG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBhcnJheVxuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IGUgPSBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkgaW5cbiAgICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyBlKSBhcnJheSAoaSArIDEpKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgPVxuICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faVxuICAgICAgKCogW2xlbmd0aF0gbXVzdCBiZSBpbmNvcnBvcmF0ZWQgZm9yIGFycmF5cywgYXMgaXQgaXMgZm9yIGxpc3RzLiBTZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgaGFzaF9mb2xkX2VsZW1cbiAgICAgIChoYXNoX2ZvbGRfaW50IHMgKEFycmF5Lmxlbmd0aCBhcnJheSkpXG4gICAgICBhcnJheVxuICAgICAgMFxuICA7O1xuXG4gICgqIHRoZSBkdXBsaWNhdGlvbiBoZXJlIGlzIGJlY2F1c2Ugd2UgdGhpbmtcbiAgICAgb2NhbWwgY2FuJ3QgZWxpbWluYXRlIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIG90aGVyd2lzZS4gKilcbiAgbGV0IGhhc2hfbmF0aXZlaW50IHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9uYXRpdmVpbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2ludDY0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50NjQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQzMiB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDMyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfY2hhciB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2NoYXIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9ib29sIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfYm9vbCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5cbiAgbGV0IGhhc2hfc3RyaW5nIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9zdHJpbmcgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2Zsb2F0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfZmxvYXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF91bml0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdW5pdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5lbmRcblxubW9kdWxlIEYgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuRnVsbFxuICB3aXRoIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICAgYW5kIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBzZWVkID0gSGFzaC5zZWVkID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBGb2xkaW5nIChIYXNoKVxuXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAoSGFzaC5yZXNldCA/c2VlZCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsaGFzaCA6IHNpZ1xuICBpbmNsdWRlXG4gICAgSGFzaF9pbnRmLlNcbiAgICB3aXRoIHR5cGUgc3RhdGUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zdGF0ZVxuICAgICAoKiBXZSBnaXZlIGEgY29uY3JldGUgdHlwZSBmb3IgW3N0YXRlXSwgYWxiZWl0IG9ubHkgcGFydGlhbGx5IGV4cG9zZWQgKHNlZVxuICAgICAgICBCYXNlX2ludGVybmFsaGFzaF90eXBlcyksIHNvIHRoYXQgaXQgdW5pZmllcyB3aXRoIHRoZSBzYW1lIHR5cGUgaW4gW0Jhc2VfYm9vdF0sXG4gICAgICAgIGFuZCB0byBhbGxvdyBvcHRpbWl6YXRpb25zIGZvciB0aGUgaW1tZWRpYXRlIHR5cGUuICopXG4gICAgIGFuZCB0eXBlIHNlZWQgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zZWVkXG4gICAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5oYXNoX3ZhbHVlXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQ2NCA6IHN0YXRlIC0+IGludDY0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2ludCA6IHN0YXRlIC0+IGludCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfZmxvYXQgOiBzdGF0ZSAtPiBmbG9hdCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9zdHJpbmcgOiBzdGF0ZSAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBnZXRfaGFzaF92YWx1ZSA6IHN0YXRlIC0+IGhhc2hfdmFsdWUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXCJcbiAgW0BAbm9hbGxvY11cbmVuZCA9IHN0cnVjdFxuICBsZXQgZGVzY3JpcHRpb24gPSBcImludGVybmFsaGFzaFwiXG5cbiAgaW5jbHVkZSBCYXNlX2ludGVybmFsaGFzaF90eXBlc1xuXG4gIGxldCBhbGxvYyAoKSA9IGNyZWF0ZV9zZWVkZWQgMFxuICBsZXQgcmVzZXQgPyhzZWVkID0gMCkgX3QgPSBjcmVhdGVfc2VlZGVkIHNlZWRcblxuICBtb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gICAgbGV0IGNvbXBhcmVfc3RhdGUgKGEgOiBzdGF0ZSkgKGIgOiBzdGF0ZSkgPSBjb21wYXJlIChhIDo+IGludCkgKGIgOj4gaW50KVxuICAgIGxldCBzdGF0ZV90b19zdHJpbmcgKHN0YXRlIDogc3RhdGUpID0gSW50LnRvX3N0cmluZyAoc3RhdGUgOj4gaW50KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEludGVybmFsaGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID0gZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAocmVzZXQgP3NlZWQgKGFsbG9jICgpKSkgeClcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gc3RydWN0XG4gICAgbW9kdWxlIEZvbGRpbmcgPSBGb2xkaW5nIChJbnRlcm5hbGhhc2gpXG4gICAgaW5jbHVkZSBGb2xkaW5nXG5cbiAgICAoKiBbRm9sZGluZ10gcHJvdmlkZXMgc29tZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIFtoYXNoXypdIGZ1bmN0aW9ucyBiZWxvdyxcbiAgICAgICBidXQgdGhleSBhcmUgaW5lZmZpY2llbnQgZm9yIHNvbWUgdXNlLWNhc2VzIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiB0aGUgW2hhc2hfZm9sZF1cbiAgICAgICBmdW5jdGlvbnMuIEF0IHRoaXMgcG9pbnQsIHRoZSBbaGFzaF92YWx1ZV0gdHlwZSBoYXMgYmVlbiBmaXhlZCB0byBbaW50XSwgc28gdGhpc1xuICAgICAgIG1vZHVsZSBjYW4gcHJvdmlkZSBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMuICopXG5cbiAgICBsZXQgaGFzaF9jaGFyID0gQ2hhcjAudG9faW50XG5cbiAgICAoKiBUaGlzIGhhc2ggd2FzIGNob3NlbiBmcm9tIGhlcmU6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2JhZGJveS82MjY3NzQzXG5cbiAgICAgICBJdCBhdHRlbXB0cyB0byBmdWxmaWxsIHRoZSBwcmltYXJ5IGdvYWxzIG9mIGEgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbjpcblxuICAgICAgIC0gYSBiaXQgY2hhbmdlIGluIHRoZSBpbnB1dCBzaG91bGQgY2hhbmdlIH4xLzIgb2YgdGhlIG91dHB1dCBiaXRzXG4gICAgICAgLSB0aGUgb3V0cHV0IHNob3VsZCBiZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBvdXRwdXQgcmFuZ2VcbiAgICAgICAtIGlucHV0cyB0aGF0IGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIHNob3VsZG4ndCBsZWFkIHRvIG91dHB1dHMgdGhhdCBhcmUgY2xvc2UgdG9cbiAgICAgICAgIGVhY2ggb3RoZXIuXG4gICAgICAgLSBhbGwgYml0cyBvZiB0aGUgaW5wdXQgYXJlIHVzZWQgaW4gZ2VuZXJhdGluZyB0aGUgb3V0cHV0XG5cbiAgICAgICBJbiBvdXIgY2FzZSB3ZSBhbHNvIHdhbnQgaXQgdG8gYmUgZmFzdCwgbm9uLWFsbG9jYXRpbmcsIGFuZCBpbmxpbmFibGUuICAqKVxuICAgIGxldFtAaW5saW5lIGFsd2F5c10gaGFzaF9pbnQgKHQgOiBpbnQpID1cbiAgICAgIGxldCB0ID0gbG5vdCB0ICsgKHQgbHNsIDIxKSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDMpICsgKHQgbHNsIDgpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMTQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMikgKyAodCBsc2wgNCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyOCkgaW5cbiAgICAgIHQgKyAodCBsc2wgMzEpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2Jvb2wgeCA9IGlmIHggdGhlbiAxIGVsc2UgMFxuXG4gICAgZXh0ZXJuYWwgaGFzaF9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiQmFzZV9oYXNoX2RvdWJsZVwiIFtAQG5vYWxsb2NdXG5cbiAgICBsZXQgaGFzaF91bml0ICgpID0gMFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcbiIsIm9wZW4gSW1wb3J0MFxuXG5sZXQgY29tcGFyZV9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJDb21wYXJlIGNhbGxlZCBvbiB0aGUgdHlwZSAlcywgd2hpY2ggaXMgYWJzdHJhY3QgaW4gYW4gaW1wbGVtZW50YXRpb24uXCJcbiAgICB0eXBlX25hbWVcbjs7XG5cbmxldCBlcXVhbF9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJFcXVhbCBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG50eXBlICdhIGNvbXBhcmUgPSAnYSAtPiAnYSAtPiBpbnRcbnR5cGUgJ2EgZXF1YWwgPSAnYSAtPiAnYSAtPiBib29sXG5cbm1vZHVsZSBDb21wYXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjb21wYXJlIDogdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2EgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAoJ2EsICdiKSB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAnYyBjb21wYXJlIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEVxdWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdhIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdiIGVxdWFsIC0+ICgnYSwgJ2IpIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAnYyBlcXVhbCAtPiAoJ2EsICdiLCAnYykgdCBlcXVhbFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICBsZXQgY29tcGFyZV9ib29sIDogYm9vbCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2NoYXIgOiBjaGFyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfZmxvYXQgOiBmbG9hdCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludCA6IGludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludDMyIDogaW50MzIgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQ2NCA6IGludDY0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50IDogbmF0aXZlaW50IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfc3RyaW5nIDogc3RyaW5nIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfdW5pdCA6IHVuaXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBjb21wYXJlX2FycmF5IGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgaWYgcGh5c19lcXVhbCBhIGJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgICAgaWYgcmV0IDw+IDBcbiAgICAgIHRoZW4gcmV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwgPSBBcnJheTAudW5zYWZlX2dldCBhIGlcbiAgICAgICAgICAgIGFuZCByID0gQXJyYXkwLnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCAwKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IFtdLCBfIC0+IC0xXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgeCB5IGluXG4gICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCB4cyB5c1xuICA7O1xuXG4gIGxldCBjb21wYXJlX29wdGlvbiBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgfCBOb25lLCBTb21lIF8gLT4gLTFcbiAgICB8IFNvbWUgXywgTm9uZSAtPiAxXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBjb21wYXJlX2VsdCBhIGJcbiAgOztcblxuICBsZXQgY29tcGFyZV9yZWYgY29tcGFyZV9lbHQgYSBiID0gY29tcGFyZV9lbHQgIWEgIWJcbiAgbGV0IGVxdWFsX2Jvb2wgOiBib29sIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfY2hhciA6IGNoYXIgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQgOiBpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQzMiA6IGludDMyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50NjQgOiBpbnQ2NCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA6IG5hdGl2ZWludCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3N0cmluZyA6IHN0cmluZyBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3VuaXQgOiB1bml0IGVxdWFsID0gUG9seS5lcXVhbFxuXG4gICgqIFtQb2x5LmVxdWFsXSBpcyBJRUVFIGNvbXBsaWFudCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudCBoZXJlLiAqKVxuICBsZXQgZXF1YWxfZmxvYXQgeCB5ID0gZXF1YWxfaW50IChjb21wYXJlX2Zsb2F0IHggeSkgMFxuXG4gIGxldCBlcXVhbF9hcnJheSBlcXVhbF9lbHQgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8XG4gICAgbGV0IGxlbl9hID0gQXJyYXkwLmxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgZXF1YWwgbGVuX2EgbGVuX2JcbiAgICAmJlxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGkgPSBsZW5fYVxuICAgICAgfHxcbiAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgZXF1YWxfZWx0IGwgciAmJiBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCByZWMgZXF1YWxfbGlzdCBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCBbXSwgXyB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IGVxdWFsX2VsdCB4IHkgJiYgZXF1YWxfbGlzdCBlcXVhbF9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIGVxdWFsX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGVxdWFsX2VsdCBhIGJcbiAgOztcblxuICBsZXQgZXF1YWxfcmVmIGVxdWFsX2VsdCBhIGIgPSBlcXVhbF9lbHQgIWEgIWJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIGZvciB1c2UgYnkgcHB4X2hhc2gsIGFuZCBpcyB0aHVzIG5vdCBpbiB0aGUgaW50ZXJmYWNlIG9mIEJhc2UuICopXG5tb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBIYXNoID0gSGFzaCAoKiogQGNhbm9uaWNhbCBCYXNlLkhhc2ggKilcbmVuZFxuXG50eXBlICdhIGhhc2hfZm9sZCA9IFN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFN0ZC5IYXNoLnN0YXRlXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiB0IGhhc2hfZm9sZFxuICAgIHZhbCBoYXNoIDogdCAtPiBTdGQuSGFzaC5oYXNoX3ZhbHVlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2EgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6ICdhIGhhc2hfZm9sZCAtPiAnYiBoYXNoX2ZvbGQgLT4gKCdhLCAnYikgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3RcbiAgICAgIDogICdhIGhhc2hfZm9sZFxuICAgICAgLT4gJ2IgaGFzaF9mb2xkXG4gICAgICAtPiAnYyBoYXNoX2ZvbGRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGhhc2hfZm9sZFxuICBlbmRcbmVuZFxuIiwib3BlbiBIYXNoLkJ1aWx0aW5cbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPSBTZXhwbGliMC5TZXhwLnQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG5sZXQgcmVjIGNvbXBhcmUgPVxuICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwMV8gYl9fMDAyX1xuICAgICB0aGVuIDBcbiAgICAgZWxzZSAoXG4gICAgICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgICAgfCBBdG9tIF9hX18wMDNfLCBBdG9tIF9iX18wMDRfIC0+IGNvbXBhcmVfc3RyaW5nIF9hX18wMDNfIF9iX18wMDRfXG4gICAgICAgfCBBdG9tIF8sIF8gLT4gLTFcbiAgICAgICB8IF8sIEF0b20gXyAtPiAxXG4gICAgICAgfCBMaXN0IF9hX18wMDVfLCBMaXN0IF9iX18wMDZfIC0+IGNvbXBhcmVfbGlzdCBjb21wYXJlIF9hX18wMDVfIF9iX18wMDZfKVxuICAgICAgIDogdCAtPiB0IC0+IGludClcbjs7XG5cbmxldCByZWMgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEF0b20gX2EwIC0+XG4gICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBfYTBcbiAgICAgfCBMaXN0IF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX2xpc3QgaGFzaF9mb2xkX3QgaHN2IF9hMFxuICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuXG5hbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfY29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5sZXQgb2Zfc3RyaW5nID0gKClcbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9XG4gIHwgVzMyXG4gIHwgVzY0XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgVzMyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlczMlwiXG4gICAgfCBXNjQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVzY0XCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IG51bV9iaXRzID0gZnVuY3Rpb25cbiAgfCBXMzIgLT4gMzJcbiAgfCBXNjQgLT4gNjRcbjs7XG5cbmxldCB3b3JkX3NpemUgPVxuICBtYXRjaCBTeXMud29yZF9zaXplX2luX2JpdHMgd2l0aFxuICB8IDMyIC0+IFczMlxuICB8IDY0IC0+IFc2NFxuICB8IF8gLT4gZmFpbHdpdGggXCJ1bmtub3duIHdvcmQgc2l6ZVwiXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbmxldCByID0gcmVmIFsgXCJCYXNlLlNleHAucHBfaHVtXCIgXVxubGV0IGFsbCAoKSA9ICFyXG5sZXQgcmVnaXN0ZXIgcCA9IHIgOj0gcCA6OiAhclxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBwcCA6IEZvcm1hdHRlci50IC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9wcCAoTSA6IHNpZ1xuICAgIGluY2x1ZGUgU1xuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIGxldCAoKSA9IHJlZ2lzdGVyIChNLm1vZHVsZV9uYW1lIF4gXCIucHBcIilcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXIgKE0gOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbiAgUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgbGV0IHBwIGZvcm1hdHRlciB0ID0gU3RkbGliLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm9ybWF0dGVyIChNLnRvX3N0cmluZyB0KVxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZXhuIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbltAQEBlbmRdXG5cbmxldCBleGl0ID0gU3RkbGliLmV4aXRcblxuZXhjZXB0aW9uIEZpbmFsbHkgb2YgdCAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGaW5hbGx5XSAoZnVuY3Rpb25cbiAgICB8IEZpbmFsbHkgKGFyZzBfXzAwMV8sIGFyZzFfXzAwMl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfXG4gICAgICBhbmQgcmVzMV9fMDA0XyA9IHNleHBfb2ZfdCBhcmcxX18wMDJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleG4ubWwuRmluYWxseVwiOyByZXMwX18wMDNfOyByZXMxX18wMDRfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFJlcmFpc2VkIG9mIHN0cmluZyAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBSZXJhaXNlZF0gKGZ1bmN0aW9uXG4gICAgfCBSZXJhaXNlZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgIGxldCByZXMwX18wMDdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA1X1xuICAgICAgYW5kIHJlczFfXzAwOF8gPSBzZXhwX29mX3QgYXJnMV9fMDA2XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLlJlcmFpc2VkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5leGNlcHRpb24gU2V4cCBvZiBTZXhwLnRcblxuKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZTpcblxuICAge1tcbiAgICAgZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuICAgICAoKiAuLi4gKilcbiAgICAgW0BAQGVuZF1cbiAgIF19XG5cbiAgIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmEgd3JhcHBpbmcgb2YgWyhTZXhwIC4uLildLiAqKVxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNleHBdIChmdW5jdGlvblxuICAgIHwgU2V4cCB0IC0+IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBTZXhwIHNleHBcblxubGV0IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIHQgYmFja3RyYWNlID1cbiAgU3RkbGliLlByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHQgYmFja3RyYWNlXG47O1xuXG5leHRlcm5hbCBpc19waHlzX2VxdWFsX21vc3RfcmVjZW50IDogdCAtPiBib29sID0gXCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4blwiXG5cbmxldCByZXJhaXNlIGV4biBzdHIgPVxuICBsZXQgZXhuJyA9IFJlcmFpc2VkIChzdHIsIGV4bikgaW5cbiAgaWYgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCBleG5cbiAgdGhlbiAoXG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuJyBidClcbiAgZWxzZSByYWlzZSBleG4nXG47O1xuXG5sZXQgcmVyYWlzZWYgZXhjIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIHN0ciAoKSAtPiByZXJhaXNlIGV4YyBzdHIpIGZvcm1hdFxubGV0IHRvX3N0cmluZyBleGMgPSBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIChzZXhwX29mX2V4biBleGMpXG5sZXQgdG9fc3RyaW5nX21hY2ggZXhjID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfZXhuXG5cbmxldCBwcm90ZWN0eCB+ZiB4IH4oZmluYWxseSA6IF8gLT4gdW5pdCkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHJlcyAtPlxuICAgIGZpbmFsbHkgeDtcbiAgICByZXNcbiAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKG1hdGNoIGZpbmFsbHkgeCB3aXRoXG4gICAgIHwgKCkgLT4gcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuIGJ0XG4gICAgIHwgZXhjZXB0aW9uIGZpbmFsX2V4biAtPlxuICAgICAgICgqIFVuZm9ydHVuYXRlbHksIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFtmaW5hbF9leG5dIGlzIGRpc2NhcmRlZCBoZXJlLiAqKVxuICAgICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChGaW5hbGx5IChleG4sIGZpbmFsX2V4bikpIGJ0KVxuOztcblxubGV0IHByb3RlY3QgfmYgfmZpbmFsbHkgPSBwcm90ZWN0eCB+ZiAoKSB+ZmluYWxseVxuXG5sZXQgZG9lc19yYWlzZSAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICB0cnlcbiAgICBpZ25vcmUgKGYgKCkgOiBhKTtcbiAgICBmYWxzZVxuICB3aXRoXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBleG5cblxuICAgIGxldCBwcCBwcGYgdCA9XG4gICAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgdCB3aXRoXG4gICAgICB8IFNvbWUgc2V4cCAtPiBTZXhwLnBwX2h1bSBwcGYgc2V4cFxuICAgICAgfCBOb25lIC0+IFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RkbGliLlByaW50ZXhjLnRvX3N0cmluZyB0KVxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRXhuXCJcbiAgZW5kKVxuXG5sZXQgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2UgPVxuICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCJAWzwyPlVuY2F1Z2h0IGV4Y2VwdGlvbjpAXFxuQFxcbkBbJWFAXUBdQFxcbkAuXCIgcHAgZXhjO1xuICBpZiBTdGRsaWIuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1cyAoKVxuICB0aGVuIFN0ZGxpYi5QcmludGV4Yy5wcmludF9yYXdfYmFja3RyYWNlIFN0ZGxpYi5zdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRlcnJcbjs7XG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKCkgPVxuICBTdGRsaWIuUHJpbnRleGMuc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIHByaW50X3dpdGhfYmFja3RyYWNlXG47O1xuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2F1eCB+ZG9fYXRfZXhpdCB+ZXhpdCBmID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4YyAtPlxuICAgIGxldCByYXdfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKCogT25lIHJlYXNvbiB0byBydW4gW2RvX2F0X2V4aXRdIGhhbmRsZXJzIGJlZm9yZSBwcmludGluZyBvdXQgdGhlIGVycm9yIG1lc3NhZ2UgaXNcbiAgICAgICB0aGF0IGl0IGhlbHBzIGN1cnNlcyBhcHBsaWNhdGlvbnMgYnJpbmcgdGhlIHRlcm1pbmFsIGluIGEgZ29vZCBzdGF0ZSwgb3RoZXJ3aXNlIHRoZVxuICAgICAgIGVycm9yIG1lc3NhZ2UgbWlnaHQgZ2V0IGNvcnJ1cHRlZC4gIEFsc28sIHRoZSBPQ2FtbCB0b3AtbGV2ZWwgdW5jYXVnaHQgZXhjZXB0aW9uXG4gICAgICAgaGFuZGxlciBkb2VzIHRoZSBzYW1lLiAqKVxuICAgIGlmIGRvX2F0X2V4aXRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICh0cnkgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5XG4gICAgICAgICAgU3RkbGliLlByaW50Zi5lcHJpbnRmIFwiRXhuLmhhbmRsZV91bmNhdWdodCBjb3VsZCBub3QgcHJpbnQ7IGV4aXRpbmcgYW55d2F5XFxuJSFcIlxuICAgICAgICB3aXRoXG4gICAgICAgIHwgXyAtPiAoKSkpO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID0gaGFuZGxlX3VuY2F1Z2h0X2F1eCBmIH5leGl0IH5kb19hdF9leGl0OnRydWVcblxubGV0IGhhbmRsZV91bmNhdWdodCB+ZXhpdDptdXN0X2V4aXQgZiA9XG4gIGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdDooaWYgbXVzdF9leGl0IHRoZW4gZXhpdCBlbHNlIGlnbm9yZSkgfmRvX2F0X2V4aXQ6bXVzdF9leGl0XG47O1xuXG5sZXQgcmVyYWlzZV91bmNhdWdodCBzdHIgZnVuYyA9XG4gIHRyeSBmdW5jICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICBsZXQgYnQgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoUmVyYWlzZWQgKHN0ciwgZXhuKSkgYnRcbjs7XG5cbmV4dGVybmFsIGNsZWFyX2JhY2t0cmFjZSA6IHVuaXQgLT4gdW5pdCA9IFwiQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3NcIiBbQEBub2FsbG9jXVxuXG5sZXQgcmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgZSA9XG4gICgqIFdlIGNsZWFyIHRoZSBiYWNrdHJhY2UgdG8gcmVkdWNlIGNvbmZ1c2lvbiwgc28gdGhhdCBwZW9wbGUgZG9uJ3QgdGhpbmsgd2hhdGV2ZXJcbiAgICAgaXMgc3RvcmVkIGNvcnJlc3BvbmRzIHRvIHRoaXMgcmFpc2UuICopXG4gIGNsZWFyX2JhY2t0cmFjZSAoKTtcbiAgU3RkbGliLnJhaXNlX25vdHJhY2UgZVxuOztcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBjbGVhcl9iYWNrdHJhY2UgPSBjbGVhcl9iYWNrdHJhY2VcbmVuZFxuIiwiKCogYmVsb25ncyBpbiBDb21tb24sIGJ1dCBtb3ZlZCBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSByZXR1cm4gPSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cbmxldCB3aXRoX3JldHVybiAodHlwZSBhKSBmID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgKCogUmFpc2VkIHRvIGluZGljYXRlIH5yZXR1cm4gd2FzIGNhbGxlZC4gIExvY2FsIHNvIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyB0aWVkIHRvIGFcbiAgICAgICBwYXJ0aWN1bGFyIGNhbGwgb2YgW3dpdGhfcmV0dXJuXS4gKilcbiAgICBleGNlcHRpb24gUmV0dXJuIG9mIGFcbiAgZW5kXG4gIGluXG4gIGxldCBpc19hbGl2ZSA9IHJlZiB0cnVlIGluXG4gIGxldCByZXR1cm4gYSA9XG4gICAgaWYgbm90ICFpc19hbGl2ZVxuICAgIHRoZW4gZmFpbHdpdGggXCJ1c2Ugb2YgW3JldHVybl0gZnJvbSBhIFt3aXRoX3JldHVybl0gdGhhdCBhbHJlYWR5IHJldHVybmVkXCI7XG4gICAgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIChNLlJldHVybiBhKVxuICBpblxuICB0cnlcbiAgICBsZXQgYSA9IGYgeyByZXR1cm4gfSBpblxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIGFcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIChtYXRjaCBleG4gd2l0aFxuICAgICB8IE0uUmV0dXJuIGEgLT4gYVxuICAgICB8IF8gLT4gcmFpc2UgZXhuKVxuOztcblxubGV0IHdpdGhfcmV0dXJuX29wdGlvbiBmID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICBmIHsgcmV0dXJuID0gKGZ1biBhIC0+IHJldHVybi5yZXR1cm4gKFNvbWUgYSkpIH07XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IHByZXBlbmQgeyByZXR1cm4gfSB+ZiA9IHsgcmV0dXJuID0gKGZ1biB4IC0+IHJldHVybiAoZiB4KSkgfVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbmV4dGVybmFsIGlnbm9yZSA6IChfW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogdGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgW1N0ZGxpYi5pZ25vcmVdICopXG5cbmxldCBub24gZiB4ID0gbm90IChmIHgpXG5cbmxldCBmb3JldmVyIGYgPVxuICBsZXQgcmVjIGZvcmV2ZXIgKCkgPVxuICAgIGYgKCk7XG4gICAgZm9yZXZlciAoKVxuICBpblxuICB0cnkgZm9yZXZlciAoKSB3aXRoXG4gIHwgZSAtPiBlXG47O1xuXG5leHRlcm5hbCBpZCA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlIHR5cGljYWwgdXNlIGNhc2UgZm9yIHRoZXNlIGZ1bmN0aW9ucyBpcyB0byBwYXNzIGluIGZ1bmN0aW9uYWwgYXJndW1lbnRzIGFuZCBnZXRcbiAgIGZ1bmN0aW9ucyBhcyBhIHJlc3VsdC4gKilcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IHJlYyBhcHBseV9uX3RpbWVzIH5uIGYgeCA9IGlmIG4gPD0gMCB0aGVuIHggZWxzZSBhcHBseV9uX3RpbWVzIH5uOihuIC0gMSkgZiAoZiB4KVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQsICdiIHQpIGZfbGFiZWxlZF9mblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBUaGUgZm9sbG93aW5nIGlkZW50aXRpZXMgb3VnaHQgdG8gaG9sZCAoZm9yIHNvbWUgdmFsdWUgb2YgPSk6XG5cbiAgICAgIC0gW3JldHVybiB4ID4+PSBmID0gZiB4XVxuICAgICAgLSBbdCA+Pj0gZnVuIHggLT4gcmV0dXJuIHggPSB0XVxuICAgICAgLSBbKHQgPj49IGYpID4+PSBnID0gdCA+Pj0gZnVuIHggLT4gKGYgeCA+Pj0gZyldXG5cbiAgICAgIE5vdGU6IFs+Pj1dIGlzIHRoZSBpbmZpeCBub3RhdGlvbiBmb3IgW2JpbmRdKSAqKVxuXG4gICgqKiBUaGUgW21hcF0gYXJndW1lbnQgdG8gW01vbmFkLk1ha2VdIHNheXMgaG93IHRvIGltcGxlbWVudCB0aGUgbW9uYWQncyBbbWFwXSBmdW5jdGlvbi5cbiAgICAgIFtgRGVmaW5lX3VzaW5nX2JpbmRdIG1lYW5zIHRvIGRlZmluZSBbbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSldLlxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuXG5cbiAgICAgIFNvbWUgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtNb25hZC5NYWtlXSBhcmUgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbbWFwXSwgc29cbiAgICAgIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbWFwXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeSBhcyB3ZWxsLiAqKVxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gKCdhIC0+ICdiLCAnYiB0KSBmX2xhYmVsZWRfZm4gXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljID0gQmFzaWNfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBCYXNpY19sb2NhbCA9XG4gIEJhc2ljX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEluZml4X2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuXG4gICgqKiBbdCA+Pj0gZl0gcmV0dXJucyBhIGNvbXB1dGF0aW9uIHRoYXQgc2VxdWVuY2VzIHRoZSBjb21wdXRhdGlvbnMgcmVwcmVzZW50ZWQgYnkgdHdvXG4gICAgICBtb25hZCBlbGVtZW50cy4gIFRoZSByZXN1bHRpbmcgY29tcHV0YXRpb24gZmlyc3QgZG9lcyBbdF0gdG8geWllbGQgYSB2YWx1ZSBbdl0sIGFuZFxuICAgICAgdGhlbiBydW5zIHRoZSBjb21wdXRhdGlvbiByZXR1cm5lZCBieSBbZiB2XS4gKilcbiAgdmFsICggPj49ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmblxuXG4gICgqKiBbdCA+PnwgZl0gaXMgW3QgPj49IChmdW4gYSAtPiByZXR1cm4gKGYgYSkpXS4gKilcbiAgdmFsICggPj58ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZm5cbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeCA9IEluZml4X2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2Jcbm1vZHVsZSB0eXBlIEluZml4X2xvY2FsID0gSW5maXhfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4X2dlbiA9IHNpZ1xuICAoKiogT3BlbmluZyBhIG1vZHVsZSBvZiB0aGlzIHR5cGUgYWxsb3dzIG9uZSB0byB1c2UgdGhlIFslYmluZF0gYW5kIFslbWFwXSBzeW50YXhcbiAgICAgIGV4dGVuc2lvbnMgZGVmaW5lZCBieSBwcHhfbGV0LCBhbmQgYnJpbmdzIFtyZXR1cm5dIGludG8gc2NvcGUuICopXG5cbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICgqKiBUaGVzZSBhcmUgY29udmVuaWVudCB0byBoYXZlIGluIHNjb3BlIHdoZW4gcHJvZ3JhbW1pbmcgd2l0aCBhIG1vbmFkOiAqKVxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIGluY2x1ZGUgSW5maXhfZ2VuIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmX2xhYmVsZWRfZm5cbiAgICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgYm90aCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheCA9XG4gIFN5bnRheF9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTeW50YXhfbG9jYWwgPVxuICBTeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4X2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIGluY2x1ZGUgSW5maXhfZ2VuIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggOlxuICAgIEluZml4X2dlbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgKCoqIFtiaW5kIHQgfmZdID0gW3QgPj49IGZdICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgKCoqIFtyZXR1cm4gdl0gcmV0dXJucyB0aGUgKHRyaXZpYWwpIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyB2LiAqKVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIHQgfmZdIGlzIHQgPj58IGYuICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgKCoqIFtqb2luIHRdIGlzIFt0ID4+PSAoZnVuIHQnIC0+IHQnKV0uICopXG4gIHZhbCBqb2luIDogJ2EgdCB0IC0+ICdhIHRcblxuICAoKiogW2lnbm9yZV9tIHRdIGlzIFttYXAgdCB+ZjooZnVuIF8gLT4gKCkpXS4gIFtpZ25vcmVfbV0gdXNlZCB0byBiZSBjYWxsZWQgW2lnbm9yZV0sXG4gICAgICBidXQgd2UgZGVjaWRlZCB0aGF0IHdhcyBhIGJhZCBuYW1lLCBiZWNhdXNlIGl0IHNoYWRvd2VkIHRoZSB3aWRlbHkgdXNlZFxuICAgICAgW1N0ZGxpYi5pZ25vcmVdLiAgU29tZSBtb25hZHMgc3RpbGwgZG8gW2xldCBpZ25vcmUgPSBpZ25vcmVfbV0gZm9yIGhpc3RvcmljYWxcbiAgICAgIHJlYXNvbnMuICopXG4gIHZhbCBpZ25vcmVfbSA6ICdhIHQgLT4gdW5pdCB0XG5cbiAgdmFsIGFsbCA6ICdhIHQgbGlzdCAtPiAnYSBsaXN0IHRcblxuICAoKiogTGlrZSBbYWxsXSwgYnV0IGVuc3VyZXMgdGhhdCBldmVyeSBtb25hZGljIHZhbHVlIGluIHRoZSBsaXN0IHByb2R1Y2VzIGEgdW5pdCB2YWx1ZSxcbiAgICAgIGFsbCBvZiB3aGljaCBhcmUgZGlzY2FyZGVkIHJhdGhlciB0aGFuIGJlaW5nIGNvbGxlY3RlZCBpbnRvIGEgbGlzdC4gKilcbiAgdmFsIGFsbF91bml0IDogdW5pdCB0IGxpc3QgLT4gdW5pdCB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9XG4gIFNfd2l0aG91dF9zeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheF9sb2NhbCA9XG4gIFNfd2l0aG91dF9zeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2xvY2FsID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheF9sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4X2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzJfZ2VuID0gc2lnXG4gICgqKiBNdWx0aSBwYXJhbWV0ZXIgbW9uYWQuIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGdldHMgdW5pZmllZCBhY3Jvc3MgYWxsIHRoZSBjb21wdXRhdGlvbi5cbiAgICAgIFRoaXMgaXMgdXNlZCB0byBlbmNvZGUgbW9uYWRzIHdvcmtpbmcgb24gYSBtdWx0aSBwYXJhbWV0ZXIgZGF0YSBzdHJ1Y3R1cmUgbGlrZVxuICAgICAgKFsoJ2EsJ2IpIHJlc3VsdF0pLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMiA9IEJhc2ljMl9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEJhc2ljMl9sb2NhbCA9XG4gIEJhc2ljMl9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBJbmZpeDJfZ2VuID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdlKSB0LCAoJ2IsICdlKSB0KSBmblxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmblxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MiA9IEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG5tb2R1bGUgdHlwZSBJbmZpeDJfbG9jYWwgPSBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4Ml9nZW4gPSBzaWdcbiAgdHlwZSAoJ2EsICdlKSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcblxuICAgIGluY2x1ZGVcbiAgICAgIEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgbWFwIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gJ2IsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdlKSB0IC0+ICgnYiwgJ2UpIHQgLT4gKCdhICogJ2IsICdlKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MiA9XG4gIFN5bnRheDJfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4Ml9sb2NhbCA9XG4gIFN5bnRheDJfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTMl9nZW4gPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIGluY2x1ZGVcbiAgICBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICBpbmNsdWRlXG4gICAgU3ludGF4Ml9nZW5cbiAgICB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0XG4gICAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG4gICAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggOlxuICAgIEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cbiAgdmFsIGpvaW4gOiAoKCdhLCAnZSkgdCwgJ2UpIHQgLT4gKCdhLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2UpIHQgLT4gKHVuaXQsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID1cbiAgUzJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYiBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTMl9sb2NhbCA9XG4gIFMyX2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgQmFzaWMzID0gc2lnXG4gICgqKiBNdWx0aSBwYXJhbWV0ZXIgbW9uYWQuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgZ2V0IHVuaWZpZWQgYWNyb3NzIGFsbCB0aGVcbiAgICAgIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHQgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeDMgPSBzaWdcbiAgKCoqIFNhbWUgYXMgSW5maXgsIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBhcmVcbiAgICAgIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MyA9IHNpZ1xuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5cbiAgICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2IsICdkLCAnZSkgdCAtPiAoJ2EgKiAnYiwgJ2QsICdlKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmRcbiAgICAgIGFuZCB0aGlyZCBhcmUgYWx3YXlzIGp1c3QgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIGluY2x1ZGUgSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBpbmNsdWRlIFN5bnRheDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnZCwgJ2UpIHQsICdkLCAnZSkgdCAtPiAoJ2EsICdkLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2QsICdlKSB0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2QsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdkLCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2QsICdlKSB0IGxpc3QgLT4gKHVuaXQsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBzaWdcbiAgKCoqIEluZGV4ZWQgbW9uYWQsIGluIHRoZSBzdHlsZSBvZiBBdGtleS4gVGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBhcmUgY29tcG9zZWRcbiAgICAgIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uIFRvIHNlZSB0aGlzIG1vcmUgY2xlYXJseSwgeW91IGNhbiBsb29rIGF0IHRoZSB0eXBlIG9mIGJpbmQ6XG5cbiAgICAgIHtbXG4gICAgICAgIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gICAgICBdfVxuXG4gICAgICBhbmQgaXNvbGF0ZSBzb21lIG9mIHRoZSB0eXBlIHZhcmlhYmxlcyB0byBzZWUgdGhlaXIgaW5kaXZpZHVhbCBiZWhhdmlvcnM6XG5cbiAgICAgIHtbXG4gICAgICAgIHZhbCBiaW5kIDogJ2EgICAgICAgICAgICAgLT4gZjooJ2EgLT4gICdiICAgICAgICAgICApIC0+ICAnYlxuICAgICAgICB2YWwgYmluZCA6ICAgICAgJ2ksICdqICAgIC0+ICAgICAgICAgICAgICAgJ2osICdrICAgICAtPiAgICAgJ2ksICdrXG4gICAgICBdfVxuXG4gICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBBdGtleS1zdHlsZSBpbmRleGVkIG1vbmFkcywgc2VlOlxuXG4gICAgICB7dlxuICAgICAgICBQYXJhbWV0ZXJpc2VkIE5vdGlvbnMgb2YgQ29tcHV0YXRpb25cbiAgICAgICAgUm9iZXJ0IEF0a2V5XG4gICAgICAgIGh0dHA6Ly9iZW50bmliLm9yZy9wYXJhbW5vdGlvbnMtamZwLnBkZlxuICAgICAgdn0gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5cbiAgICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2IsICdqLCAnaykgdCAtPiAoJ2EgKiAnYiwgJ2ksICdrKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19pbmRleGVkID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZFxuICAgICAgdGhpcmQgYXJlIGNvbXBvc2VkIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIGluY2x1ZGUgSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcbiAgaW5jbHVkZSBTeW50YXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuICB2YWwgam9pbiA6ICgoJ2EsICdqLCAnaykgdCwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdrKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnaSwgJ2opIHQgLT4gKHVuaXQsICdpLCAnaikgdFxuICB2YWwgYWxsIDogKCdhLCAnaSwgJ2kpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2ksICdpKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnaSwgJ2kpIHQgbGlzdCAtPiAodW5pdCwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIFNfdG9fUzIgKFggOiBTKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TMyAoWCA6IFMyKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG5lbmRcblxubW9kdWxlIFNfdG9fU19pbmRleGVkIChYIDogUykgOiBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoWCA6IFMzKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTX2luZGV4ZWRfdG9fUzIgKFggOiBTX2luZGV4ZWQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCAnZSkgWC50ID1cbnN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCAnZSkgWC50XG5lbmRcblxubW9kdWxlIHR5cGUgTW9uYWQgPSBzaWdcbiAgKCoqIEEgbW9uYWQgaXMgYW4gYWJzdHJhY3Rpb24gb2YgdGhlIGNvbmNlcHQgb2Ygc2VxdWVuY2luZyBvZiBjb21wdXRhdGlvbnMuICBBIHZhbHVlIG9mXG4gICAgICB0eXBlIFsnYSBtb25hZF0gcmVwcmVzZW50cyBhIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyBhIHZhbHVlIG9mIHR5cGUgWydhXS4gKilcblxuICBtb2R1bGUgdHlwZSBCYXNpYyA9IEJhc2ljXG4gIG1vZHVsZSB0eXBlIEJhc2ljMiA9IEJhc2ljMlxuICBtb2R1bGUgdHlwZSBCYXNpYzMgPSBCYXNpYzNcbiAgbW9kdWxlIHR5cGUgQmFzaWNfaW5kZXhlZCA9IEJhc2ljX2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgQmFzaWNfbG9jYWwgPSBCYXNpY19sb2NhbFxuICBtb2R1bGUgdHlwZSBCYXNpYzJfbG9jYWwgPSBCYXNpYzJfbG9jYWxcbiAgbW9kdWxlIHR5cGUgSW5maXggPSBJbmZpeFxuICBtb2R1bGUgdHlwZSBJbmZpeDIgPSBJbmZpeDJcbiAgbW9kdWxlIHR5cGUgSW5maXgzID0gSW5maXgzXG4gIG1vZHVsZSB0eXBlIEluZml4X2luZGV4ZWQgPSBJbmZpeF9pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEluZml4X2xvY2FsID0gSW5maXhfbG9jYWxcbiAgbW9kdWxlIHR5cGUgSW5maXgyX2xvY2FsID0gSW5maXgyX2xvY2FsXG4gIG1vZHVsZSB0eXBlIFN5bnRheCA9IFN5bnRheFxuICBtb2R1bGUgdHlwZSBTeW50YXgyID0gU3ludGF4MlxuICBtb2R1bGUgdHlwZSBTeW50YXgzID0gU3ludGF4M1xuICBtb2R1bGUgdHlwZSBTeW50YXhfaW5kZXhlZCA9IFN5bnRheF9pbmRleGVkXG4gIG1vZHVsZSB0eXBlIFN5bnRheF9sb2NhbCA9IFN5bnRheF9sb2NhbFxuICBtb2R1bGUgdHlwZSBTeW50YXgyX2xvY2FsID0gU3ludGF4Ml9sb2NhbFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gU193aXRob3V0X3N5bnRheFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4X2xvY2FsID0gU193aXRob3V0X3N5bnRheF9sb2NhbFxuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gIG1vZHVsZSB0eXBlIFMzID0gUzNcbiAgbW9kdWxlIHR5cGUgU19pbmRleGVkID0gU19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIFNfbG9jYWwgPSBTX2xvY2FsXG4gIG1vZHVsZSB0eXBlIFMyX2xvY2FsID0gUzJfbG9jYWxcblxuICBtb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50XG4gIG1vZHVsZSBNYWtlMiAoWCA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnRcbiAgbW9kdWxlIE1ha2UzIChYIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgbW9kdWxlIE1ha2VfaW5kZXhlZCAoWCA6IEJhc2ljX2luZGV4ZWQpIDpcbiAgICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnRcblxuICBtb2R1bGUgTWFrZV9sb2NhbCAoWCA6IEJhc2ljX2xvY2FsKSA6IFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50XG4gIG1vZHVsZSBNYWtlMl9sb2NhbCAoWCA6IEJhc2ljMl9sb2NhbCkgOiBTMl9sb2NhbCB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnRcblxuICAoKiogRGVmaW5lIGEgbW9uYWQgdGhyb3VnaCBhbiBpc29tb3JwaGlzbSB3aXRoIGFuIGV4aXN0aW5nIG1vbmFkLiBGb3IgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSAnYSB0ID0geyB2YWx1ZSA6ICdhIH1cblxuICAgICAgICBpbmNsdWRlIE1vbmFkLk9mX21vbmFkIChNb25hZC5JZGVudCkgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICAgICAgbGV0IHRvX21vbmFkIHsgdmFsdWUgfSA9IHZhbHVlXG4gICAgICAgICAgICBsZXQgb2ZfbW9uYWQgdmFsdWUgPSB7IHZhbHVlIH1cbiAgICAgICAgICBlbmQpXG4gICAgICBdfSAqKVxuICBtb2R1bGUgT2ZfbW9uYWRcbiAgICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogJ2EgdCAtPiAnYSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWQyXG4gICAgICAoTW9uYWQgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IpIE1vbmFkLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkM1xuICAgICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgICAgKE1vbmFkIDogU19pbmRleGVkKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2opIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2opIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnRcblxuICAoKiogQW4gZWFnZXIgaWRlbnRpdHkgbW9uYWQgd2l0aCBmdW5jdGlvbnMgaGVhdmlseSBhbm5vdGF0ZWQgd2l0aFxuICAgICAgW0BpbmxpbmVkXSBvciBbQGlubGluZSBoaW50XS5cblxuICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIG1hbnVhbGx5IHdyaXR0ZW4sIHJhdGhlciB0aGFuIGJlaW5nXG4gICAgICBjb25zdHJ1Y3RlZCBieSBbTW9uYWQuTWFrZV0uIFRoaXMgZ2l2ZXMgYmV0dGVyIGlubGluaW5nXG4gICAgICBndWFyYW50ZWVzLlxuICAqKVxuICBtb2R1bGUgSWRlbnQgOiBTX2xvY2FsIHdpdGggdHlwZSAnYSB0ID0gJ2FcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1vbmFkX2ludGZcblxubW9kdWxlIHR5cGUgQmFzaWNfZ2VuZXJhbCA9IHNpZ1xuICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZFxuICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAtPiBmOignYSAtPiAoJ2IsICdqLCAnaywgJ2QsICdlKSB0KVxuICAgIC0+ICgnYiwgJ2ksICdrLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZFxuICAgICAgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2ksICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbmVyYWwgKE0gOiBCYXNpY19nZW5lcmFsKSA9IHN0cnVjdFxuICBsZXQgYmluZCA9IE0uYmluZFxuICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cbiAgbGV0IG1hcF92aWFfYmluZCBtYSB+ZiA9IE0uYmluZCBtYSB+ZjooZnVuIGEgLT4gTS5yZXR1cm4gKGYgYSkpXG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggTS5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19iaW5kIC0+IG1hcF92aWFfYmluZFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCBhIGIgPSBhID4+PSBmdW4gYSAtPiBiID4+fCBmdW4gYiAtPiBhLCBiXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGpvaW4gdCA9IHQgPj49IGZ1biB0JyAtPiB0J1xuICBsZXQgaWdub3JlX20gdCA9IG1hcCB0IH5mOihmdW4gXyAtPiAoKSlcblxuICBsZXQgYWxsID1cbiAgICBsZXQgcmVjIGxvb3AgdnMgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IHZzKVxuICAgICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biB2IC0+IGxvb3AgKHYgOjogdnMpIHRzXG4gICAgaW5cbiAgICBmdW4gdHMgLT4gbG9vcCBbXSB0c1xuICA7O1xuXG4gIGxldCByZWMgYWxsX3VuaXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biAoKSAtPiBhbGxfdW5pdCB0c1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2luZGV4ZWQgKE0gOiBCYXNpY19pbmRleGVkKSA6XG4gIFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UzIChNIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgTS50ID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTIgKE0gOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgOj0gKCdhLCAnZCkgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChNIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyX2xvY2FsIChNIDogQmFzaWMyX2xvY2FsKSA9IHN0cnVjdFxuICBsZXQgYmluZCA9IE0uYmluZFxuICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cblxuICBsZXQgbWFwX3ZpYV9iaW5kIG1hIH5mID1cbiAgICBsZXQgcmVzID0gTS5iaW5kIG1hIH5mOihmdW4gYSAtPiBNLnJldHVybiAoZiBhKSkgaW5cbiAgICByZXNcbiAgOztcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBNLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2JpbmQgLT4gbWFwX3ZpYV9iaW5kXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcblxuICAgICAgbGV0IGJvdGggYSBiID1cbiAgICAgICAgbGV0IHJlcyA9XG4gICAgICAgICAgYmluZCBhIH5mOihmdW4gYSAtPlxuICAgICAgICAgICAgbGV0IHJlcyA9IG1hcCBiIH5mOihmdW4gYiAtPiBhLCBiKSBpblxuICAgICAgICAgICAgcmVzKVxuICAgICAgICBpblxuICAgICAgICByZXNcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGpvaW4gdCA9IHQgPj49IEZuLmlkXG5cbiAgbGV0IGlnbm9yZV9tIHQgPVxuICAgIGxldCByZXMgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9sb2NhbCAoTSA6IEJhc2ljX2xvY2FsKSA6IFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID1cbiAgTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkX2dlbmVyYWwgKE1vbmFkIDogc2lnXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgICB2YWwgYmluZFxuICAgICAgOiAgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAgIC0+ICgnYiwgJ2ksICdrLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbiAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNb25hZC50XG4gICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudCAtPiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICAgIGVuZCkgPVxuICBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiBhID0gTS5vZl9tb25hZCAoTW9uYWQucmV0dXJuIGEpXG4gICAgbGV0IGJpbmQgdCB+ZiA9IE0ub2ZfbW9uYWQgKE1vbmFkLmJpbmQgKE0udG9fbW9uYWQgdCkgfmY6KGZ1biBhIC0+IE0udG9fbW9uYWQgKGYgYSkpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIChmdW4gdCB+ZiAtPiBNLm9mX21vbmFkIChNb25hZC5tYXAgKE0udG9fbW9uYWQgdCkgfmYpKVxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9pbmRleGVkXG4gICAgKE1vbmFkIDogU19pbmRleGVkKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2opIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2opIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDNcbiAgICAoTW9uYWQgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IsICdjKSBNb25hZC50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDJcbiAgICAoTW9uYWQgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IpIE1vbmFkLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkXG4gICAgKE1vbmFkIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICdhIE1vbmFkLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBsZXRbQGlubGluZV0gYmluZCBhIH5mID0gKGYgW0BpbmxpbmVkIGhpbnRdKSBhXG4gIGxldFtAaW5saW5lXSBtYXAgYSB+ZiA9IChmIFtAaW5saW5lZCBoaW50XSkgYVxuXG4gIGV4dGVybmFsIHJldHVybiA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXRbQGlubGluZV0gKCA+PnwgKSBhIGYgPSBtYXAgYSB+ZlxuICAgIGxldFtAaW5saW5lXSAoID4+PSApIGEgZiA9IGJpbmQgYSB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXRbQGlubGluZV0gYm90aCBhIGIgPSBhLCBiXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kXG5cbiAgZXh0ZXJuYWwgam9pbiA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgaWdub3JlX20gOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG4gIGV4dGVybmFsIGFsbF91bml0IDogKHVuaXQgbGlzdFtAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG4gIGV4dGVybmFsIGFsbCA6ICgnYSBsaXN0W0Bsb2NhbF9vcHRdKSAtPiAoJ2EgbGlzdFtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcHBsaWNhdGl2ZV9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbigqKiBUaGlzIG1vZHVsZSBzZXJ2ZXMgbW9zdGx5IGFzIGEgcGFydGlhbCBjaGVjayB0aGF0IFtTMl0gYW5kIFtTXSBhcmUgaW4gc3luYywgYnV0XG4gICAgYWN0dWFsbHkgY2FsbGluZyBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsLiAqKVxubW9kdWxlIFNfdG9fUzIgKFggOiBTKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TIChUIDogVC5UKSAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIFQudCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgJ2EgdCA9ICgnYSwgVC50KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoVCA6IFQuVCkgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIFQudCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIFQudCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MgKFQxIDogVC5UKSAoVDIgOiBULlQpIChYIDogUzMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgVDEudCwgVDIudCkgWC50ID1cbnN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIFQxLnQsIFQyLnQpIFgudFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2FwcGx5IC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBtYXAyIHRhIHRiIH5mID0gbWFwIH5mIHRhIDwqPiB0YlxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGIgPCo+IHRjXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0ICggKj4gKSB1IHYgPSByZXR1cm4gKGZ1biAoKSB5IC0+IHkpIDwqPiB1IDwqPiB2XG4gIGxldCAoIDwqICkgdSB2ID0gcmV0dXJuIChmdW4geCAoKSAtPiB4KSA8Kj4gdSA8Kj4gdlxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MykgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFhcbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEltcGxcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MikgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsICdkLCBfKSB0ID0gKCdhLCAnZCkgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4XG4gICAgKFggOiBGb3JfbGV0X3N5bnRheCkgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgyXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG4oKiogVGhpcyBmdW5jdG9yIGNsb3NlbHkgcmVzZW1ibGVzIFtNYWtlM10sIGFuZCBpbmRlZWQgaXQgY291bGQgYmUgaW1wbGVtZW50ZWRcbiAgICBtdWNoIHNob3J0ZXIgaW4gdGVybXMgb2YgW01ha2UzXS4gSG93ZXZlciwgd2UgaW1wbGVtZW50IGl0IGJ5IGhhbmQgc28gdGhhdFxuICAgIHRoZSByZXN1bHRpbmcgZnVuY3Rpb25zIGFyZSBtb3JlIGVmZmljaWVudCwgZS5nLiB1c2luZyBbbWFwMl0gZGlyZWN0bHkgaW5zdGVhZCBvZlxuICAgIGRlZmluaW5nIFthcHBseV0gaW4gdGVybXMgb2YgaXQgYW5kIHRoZW4gW21hcDJdIGluIHRlcm1zIG9mIHRoYXQuIEZvciBtb3N0XG4gICAgYXBwbGljYXRpdmVzIHRoaXMgZG9lcyBub3QgbWF0dGVyLCBidXQgZm9yIHNvbWUgKHN1Y2ggYXMgQm9uc2FpLlZhbHVlLnQpLCBpdCBoYXMgYVxuICAgIGxhcmdlciBpbXBhY3QuICopXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMiAoWCA6IEJhc2ljM191c2luZ19tYXAyKSA6XG4gIFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX21hcDIgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwMiAobWFwMiB0YSB0YiB+ZikgdGMgfmY6KGZ1biBmYWIgYyAtPiBmYWIgYylcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMiAoWCA6IEJhc2ljMl91c2luZ19tYXAyKSA6XG4gIFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDIgKFggOiBCYXNpY191c2luZ19tYXAyKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID1cbiAgTWFrZTJfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMl9sb2NhbCAoWCA6IEJhc2ljM191c2luZ19tYXAyX2xvY2FsKSA6XG4gIFMzX2xvY2FsIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gbWFwMiB+ZjooZnVuICgpIC0+IGYpIChyZXR1cm4gKCkpIHQgW0Bub250YWlsXVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfbWFwMiAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSBtYXAgLT4gbWFwXG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG5cbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPVxuICAgIGxldCByZXMgPSBtYXAyIChib3RoIHRhIHRiKSB0YyB+ZjooZnVuIChhLCBiKSBjIC0+IGYgYSBiIGMpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMl9sb2NhbCAoWCA6IEJhc2ljMl91c2luZ19tYXAyX2xvY2FsKSA6XG4gIFMyX2xvY2FsIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDJfbG9jYWwgKFggOiBCYXNpY191c2luZ19tYXAyX2xvY2FsKSA6XG4gIFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTJfdXNpbmdfbWFwMl9sb2NhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyIChNIDogTW9uYWQuUzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgTS50ID0gTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gICAgbGV0IGFwcGx5IG1mIG14ID0gTS5iaW5kIG1mIH5mOihmdW4gZiAtPiBNLm1hcCBteCB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBNLm1hcFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZCAoTSA6IE1vbmFkLlMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBPZl9tb25hZDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgQ29tcG9zZSAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50IEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEcucmV0dXJuIChGLnJldHVybiBhKVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRy5hcHBseSAoRy5tYXAgfmY6Ri5hcHBseSB0ZikgdHhcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBHLm1hcCB+ZjooRi5tYXAgfmYpIHRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFBhaXIgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRi5yZXR1cm4gYSwgRy5yZXR1cm4gYVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRi5hcHBseSAoZnN0IHRmKSAoZnN0IHR4KSwgRy5hcHBseSAoc25kIHRmKSAoc25kIHR4KVxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEYubWFwIH5mIChmc3QgdCksIEcubWFwIH5mIChzbmQgdClcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EgdCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgU19mYyA9IHNpZ1xuICB0eXBlIGNvbXBhcmFibGVfdFxuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgdCA6PSBjb21wYXJhYmxlX3RcbmVuZFxuXG5tb2R1bGUgTW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdiKVxuZW5kXG5cbmxldCBtYWtlICh0eXBlIHQpIH5jb21wYXJlIH5zZXhwX29mX3QgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgY29tcGFyYWJsZV90ID0gdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kIDogU19mY1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlX3QgPSB0KVxuOztcblxubW9kdWxlIFNfdG9fUzEgKFMgOiBTKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBTLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG9wZW4gU1xuXG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IE0ueyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICdhIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIl9cIlxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICEnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSBjb21wYXJhdG9yIC0+ICgnYSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgISdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYikgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDIgKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdhLCAnYikgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhIGIgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdFxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcCkgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsIF8pIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWRfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYSwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wX2EgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQyX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYiwgXykgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDJfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wYXJlXG4gICAgICA6ICAoJ2EgLT4gJ2EgLT4gaW50KVxuICAgICAgLT4gKCdiIC0+ICdiIC0+IGludClcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgLT4gaW50XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHAudCkgLT4gKCdiIC0+IFNleHAudCkgLT4gKCdhLCAnYiwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSBiID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgIDsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgYi5zZXhwX29mX3RcbiAgICB9XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnZiwgJ3MpIHQgPVxuICB8IEZpcnN0IG9mICdmXG4gIHwgU2Vjb25kIG9mICdzXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6XG4gICdmICdzLiAoJ2YgLT4gJ2YgLT4gaW50KSAtPiAoJ3MgLT4gJ3MgLT4gaW50KSAtPiAoJ2YsICdzKSB0IC0+ICgnZiwgJ3MpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2YgX2NtcF9fcyBhX18wMDFfIGJfXzAwMl8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgIHwgRmlyc3QgX2FfXzAwM18sIEZpcnN0IF9iX18wMDRfIC0+IF9jbXBfX2YgX2FfXzAwM18gX2JfXzAwNF9cbiAgICB8IEZpcnN0IF8sIF8gLT4gLTFcbiAgICB8IF8sIEZpcnN0IF8gLT4gMVxuICAgIHwgU2Vjb25kIF9hX18wMDVfLCBTZWNvbmQgX2JfXzAwNl8gLT4gX2NtcF9fcyBfYV9fMDA1XyBfYl9fMDA2Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgZiBzLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoZiwgcykgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2YgX2hhc2hfZm9sZF9zIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBGaXJzdCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfZiBoc3YgX2EwXG4gIHwgU2Vjb25kIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9zIGhzdiBfYTBcbjs7XG5cbmxldCB0X29mX3NleHAgOlxuICAnZiAncy5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnZikgLT4gKFNleHBsaWIwLlNleHAudCAtPiAncykgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnZiwgJ3MpIHRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDIzXyBzX18wMjRfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gZl9fMDIzXykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBzX18wMjRfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoZl9fMDIzXywgc19fMDI0XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMTFfID0gXCJlaXRoZXIwLm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfZl9fMDA3XyBfb2Zfc19fMDA4XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9mX18wMDdfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgICAgRmlyc3QgcmVzMF9fMDE3X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgX3RhZ19fMDE5XykgOjogc2V4cF9hcmdzX18wMjBfKSBhc1xuICAgICAgICBfc2V4cF9fMDE4XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMjBfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMjFfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2Zfc19fMDA4XyBhcmcwX18wMjFfIGluXG4gICAgICAgICAgIFNlY29uZCByZXMwX18wMjJfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxOV9cbiAgICAgICAgICAgICBfc2V4cF9fMDE4XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBzZXhwX18wMTBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnZiAncy5cbiAgKCdmIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdmLCAncykgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDMxXyBzX18wMzJfKVxuICAgICAgOiAgKChmX18wMzFfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAzMl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChmX18wMzFfLCBzX18wMzJfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2ZfXzAyNV8gX29mX3NfXzAyNl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgYXJnMF9fMDI3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI4XyA9IF9vZl9mX18wMjVfIGFyZzBfXzAyN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmlyc3RcIjsgcmVzMF9fMDI4XyBdXG4gICAgICB8IFNlY29uZCBhcmcwX18wMjlfIC0+XG4gICAgICAgIGxldCByZXMwX18wMzBfID0gX29mX3NfXzAyNl8gYXJnMF9fMDI5XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZWNvbmRcIjsgcmVzMF9fMDMwXyBdXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAnZiAncy5cbiAgJ2YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gJ3MgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gKCdmLCAncykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIGZ1biBfJ2Zfc2V4cF9ncmFtbWFyIF8nc19zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkZpcnN0XCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydmX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJTZWNvbmRcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ3Nfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG4iLCIoKiBUaGUgdHlwZSBbdF0gc2hvdWxkIGJlIGFic3RyYWN0IHRvIG1ha2UgdGhlIGZzZXQgYW5kIHNldCBmdW5jdGlvbnMgdW5hdmFpbGFibGVcbiAgIGZvciBwcml2YXRlIHR5cGVzIGF0IHRoZSBsZXZlbCBvZiB0eXBlcyAoYW5kIG5vdCBieSBwdXR0aW5nIE5vbmUgaW4gdGhlIGZpZWxkKS5cbiAgIFVuZm9ydHVuYXRlbHksIG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCBtZWFucyB0aGF0IHdoZW4gY3JlYXRpbmcgZmllbGRzICh0aHJvdWdoXG4gICBhIFtjcmVhdGVdIGZ1bmN0aW9uKSB2YWx1ZSByZXN0cmljdGlvbiBraWNrcyBpbi4gVGhpcyBpcyB3b3JrZWQgYXJvdW5kIGJ5IGluc3RlYWRcbiAgIG5vdCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QsIGJ1dCBmb3JjaW5nIGFueW9uZSBicmVha2luZyB0aGUgYWJzdHJhY3Rpb24gdG8gdXNlXG4gICB0aGUgW0Zvcl9nZW5lcmF0ZWRfY29kZV0gbW9kdWxlLCBtYWtpbmcgaXQgb2J2aW91cyB0byBhbnkgcmVhZGVyIHRoYXQgc29tZXRoaW5nIHVnbHlcbiAgIGlzIGdvaW5nIG9uLlxuICAgdF93aXRoX3Blcm0gKGFuZCBkZXJpdmF0aXZlcykgaXMgdGhlIHR5cGUgdGhhdCB1c2VycyByZWFsbHkgdXNlLiBJdCBpcyBhIGNvbnN0cnVjdG9yXG4gICBiZWNhdXNlOlxuICAgMS4gaXQgbWFrZXMgdHlwZSBlcnJvcnMgbW9yZSByZWFkYWJsZSAobGVzcyBhbGlhc2luZylcbiAgIDIuIHRoZSB0eXBlciBpbiBvY2FtbCA0LjAxIGFsbG93cyB0aGlzOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQSA9IHN0cnVjdFxuICAgICAgIHR5cGUgdCA9IHthIDogaW50fVxuICAgICBlbmRcbiAgICAgdHlwZSB0ID0gQS50XG4gICAgIGxldCBmICh4IDogdCkgPSB4LmFcbiAgIF19XG5cbiAgIChhbHRob3VnaCB3aXRoIFdhcm5pbmcgNDA6IGEgaXMgdXNlZCBvdXQgb2Ygc2NvcGUpXG4gICB3aGljaCBtZWFucyB0aGF0IGlmIFt0X3dpdGhfcGVybV0gd2FzIHJlYWxseSBhbiBhbGlhcyBvbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdLFxuICAgcGVvcGxlIGNvdWxkIHNheSBbdC5zZXR0ZXJdIGFuZCBicmVhayB0aGUgYWJzdHJhY3Rpb24gd2l0aCBubyBpbmRpY2F0aW9uIHRoYXRcbiAgIHNvbWV0aGluZyB1Z2x5IGlzIGdvaW5nIG9uIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgIFRoZSB3YXJuaW5nIGlzIChJIHRoaW5rKSBmb3IgcGVvcGxlIHdobyB3YW50IHRvIG1ha2UgdGhlaXIgY29kZSBjb21wYXRpYmxlIHdpdGhcbiAgIHByZXZpb3VzIHZlcnNpb25zIG9mIG9jYW1sLCBzbyB3ZSBtYXkgdmVyeSB3ZWxsIHR1cm4gaXQgb2ZmLlxuXG4gICBUaGUgdHlwZSB0X3dpdGhfcGVybSBjb3VsZCBhbHNvIGhhdmUgYmVlbiBhIFt1bml0IC0+IEZvcl9nZW5lcmF0ZWRfY29kZS50XSB0byB3b3JrXG4gICBhcm91bmQgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHRoZW4gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSB3b3VsZCBoYXZlIGJlZW4gYSBwcm9wZXJcbiAgIGFic3RyYWN0IHR5cGUsIGJ1dCBpdCBsb29rcyBsaWtlIGl0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSAoZm9yIGV4YW1wbGUsIGEgZm9sZCBvbiBhXG4gICByZWNvcmQgdHlwZSB3aXRoIDQwIGZpZWxkcyB3b3VsZCBhY3R1YWxseSBhbGxvY2F0ZSB0aGUgNDAgW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSdzIGF0XG4gICBldmVyeSBzaW5nbGUgZm9sZC4pICopXG5cbm1vZHVsZSBGb3JfZ2VuZXJhdGVkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgeyBmb3JjZV92YXJpYW5jZSA6ICdwZXJtIC0+IHVuaXRcbiAgICA7ICgqIGZvcmNlIFt0XSB0byBiZSBjb250cmF2YXJpYW50IGluIFsncGVybV0sIGJlY2F1c2UgcGhhbnRvbSB0eXBlIHZhcmlhYmxlcyBvblxuICAgICAgICAgY29uY3JldGUgdHlwZXMgZG9uJ3Qgd29yayB0aGF0IHdlbGwgb3RoZXJ3aXNlICh1c2luZyA6PiBjYW4gcmVtb3ZlIHRoZW0gZWFzaWx5KSAqKVxuICAgICAgbmFtZSA6IHN0cmluZ1xuICAgIDsgc2V0dGVyIDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvblxuICAgIDsgZ2V0dGVyIDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICA7IGZzZXQgOiAncmVjb3JkIC0+ICdmaWVsZCAtPiAncmVjb3JkXG4gICAgfVxuXG4gIGxldCBvcGFxdWVfaWRlbnRpdHkgPSBTeXMwLm9wYXF1ZV9pZGVudGl0eVxuZW5kXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtID1cbiAgfCBGaWVsZCBvZiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgRm9yX2dlbmVyYXRlZF9jb2RlLnRcbltAQHVuYm94ZWRdXG5cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9IChbIGBSZWFkIHwgYFNldF9hbmRfY3JlYXRlIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgcmVhZG9ubHlfdCA9IChbIGBSZWFkIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cblxubGV0IG5hbWUgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLm5hbWVcbmxldCBnZXQgKEZpZWxkIGZpZWxkKSByID0gZmllbGQuZ2V0dGVyIHJcbmxldCBmc2V0IChGaWVsZCBmaWVsZCkgciB2ID0gZmllbGQuZnNldCByIHZcbmxldCBzZXR0ZXIgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLnNldHRlclxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ3Jlc3VsdCkgdXNlciA9XG4gIHsgZiA6ICdmaWVsZC4gKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtIC0+ICdyZXN1bHQgfVxuXG5sZXQgbWFwIChGaWVsZCBmaWVsZCkgciB+ZiA9IGZpZWxkLmZzZXQgciAoZiAoZmllbGQuZ2V0dGVyIHIpKVxuXG5sZXQgdXBkYXRlciAoRmllbGQgZmllbGQpID1cbiAgbWF0Y2ggZmllbGQuc2V0dGVyIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHNldHRlciAtPiBTb21lIChmdW4gciB+ZiAtPiBzZXR0ZXIgciAoZiAoZmllbGQuZ2V0dGVyIHIpKSlcbjs7XG4iLCIoKiBbU3RyaW5nMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluXG4gICB0ZXJtcyBvZiBbU3RkbGliLlN0cmluZ10uIFtTdHJpbmcwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtTdGRsaWIuU3RyaW5nXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIHN0cmluZzAubWwgc2hvdWxkXG4gICB1c2UgW1N0ZGxpYi5TdHJpbmddLiAgW1N0cmluZzBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2Unc1xuICAgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncywgaW5jbHVkaW5nIHRoZSBzdWJzY3JpcHQgc3ludGF4IFt4LltpXV0gd2hpY2hcbiAgIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbU3RyaW5nXSwgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN0cmluZ10gaW5cbiAgIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuXG4gICB7W1xuICAgICBtb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN0cmluZ10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogKHN0cmluZ1tAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IChzdHJpbmdbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gY2hhclxuICAgID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZW5kXG5cbmluY2x1ZGUgU3RyaW5nXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgKCBeICkgPSAoIF4gKVxubGV0IGNhcGl0YWxpemUgPSBTdGRsaWIuU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbmxldCBjb21wYXJlID0gU3RkbGliLlN0cmluZy5jb21wYXJlXG5sZXQgZXNjYXBlZCA9IFN0ZGxpYi5TdHJpbmcuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IFN0ZGxpYi5TdHJpbmcubG93ZXJjYXNlX2FzY2lpXG5sZXQgbWFrZSA9IFN0ZGxpYi5TdHJpbmcubWFrZVxubGV0IHN1YiA9IFN0ZGxpYi5TdHJpbmcuc3ViXG5sZXQgdW5jYXBpdGFsaXplID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbmxldCB1bnNhZmVfYmxpdCA9IFN0ZGxpYi5TdHJpbmcudW5zYWZlX2JsaXRcbmxldCB1cHBlcmNhc2UgPSBTdGRsaWIuU3RyaW5nLnVwcGVyY2FzZV9hc2NpaVxubGV0IHNwbGl0X29uX2NoYXIgPSBTdGRsaWIuU3RyaW5nLnNwbGl0X29uX2NoYXJcblxubGV0IGNvbmNhdCA/KHNlcCA9IFwiXCIpIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIlwiXG4gICgqIFRoZSBzdGRsaWIgZG9lcyBub3Qgc3BlY2lhbGl6ZSB0aGlzIGNhc2UgYmVjYXVzZSBpdCBjb3VsZCBicmVhayBleGlzdGluZyBwcm9qZWN0cy4gKilcbiAgfCBbIHggXSAtPiB4XG4gIHwgbCAtPiBTdGRsaWIuU3RyaW5nLmNvbmNhdCB+c2VwIGxcbjs7XG5cbmxldCBpdGVyIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RkbGliLkxleGluZy5wb3NpdGlvbiA9XG4gICAgeyBwb3NfZm5hbWUgOiBzdHJpbmdcbiAgICA7IHBvc19sbnVtIDogaW50XG4gICAgOyBwb3NfYm9sIDogaW50XG4gICAgOyBwb3NfY251bSA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPVxuICAgIChmdW4gYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICAgICB0aGVuIDBcbiAgICAgICBlbHNlIChcbiAgICAgICAgIG1hdGNoIGNvbXBhcmVfc3RyaW5nIGFfXzAwMV8ucG9zX2ZuYW1lIGJfXzAwMl8ucG9zX2ZuYW1lIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfbG51bSBiX18wMDJfLnBvc19sbnVtIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfYm9sIGJfXzAwMl8ucG9zX2JvbCB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfY251bSBiX18wMDJfLnBvc19jbnVtXG4gICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGZ1biBoc3YgYXJnIC0+XG4gICAgICBsZXQgaHN2ID1cbiAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBhcmcucG9zX2ZuYW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2xudW1cbiAgICAgICAgaW5cbiAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19ib2xcbiAgICAgIGluXG4gICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2NudW1cbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuIHsgcG9zX2ZuYW1lID0gcG9zX2ZuYW1lX18wMDRfXG4gICAgICAgICA7IHBvc19sbnVtID0gcG9zX2xudW1fXzAwNl9cbiAgICAgICAgIDsgcG9zX2JvbCA9IHBvc19ib2xfXzAwOF9cbiAgICAgICAgIDsgcG9zX2NudW0gPSBwb3NfY251bV9fMDEwX1xuICAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwM18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAxMV8gPSBzZXhwX29mX2ludCBwb3NfY251bV9fMDEwXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2NudW1cIjsgYXJnX18wMTFfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9pbnQgcG9zX2JvbF9fMDA4XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2JvbFwiOyBhcmdfXzAwOV8gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBwb3NfbG51bV9fMDA2XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2xudW1cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgcG9zX2ZuYW1lX18wMDRfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfZm5hbWVcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwM19cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIFBweF9oZXJlLmxpZnRfcG9zaXRpb25fYXNfc3RyaW5nLiAqKVxubGV0IG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBbIHBvc19mbmFtZTsgXCI6XCI7IEludC50b19zdHJpbmcgcG9zX2xudW07IFwiOlwiOyBJbnQudG9fc3RyaW5nIChwb3NfY251bSAtIHBvc19ib2wpIF1cbjs7XG5cbmxldCB0b19zdHJpbmcgeyBTdGRsaWIuTGV4aW5nLnBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sIH0gPVxuICBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2xcbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlzdDBcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIChmIHggOiBfIEVpdGhlcjAudCkgd2l0aFxuICAgICAgIHwgRmlyc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmRcbiAgICAgICB8IFNlY29uZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtAbm9udGFpbF1cbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFN0ZGxpYi5yZXN1bHQgPVxuICB8IE9rIG9mICdhXG4gIHwgRXJyb3Igb2YgJ2JcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2EgJ2IuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2EsICdiKSB0XG4gID1cbiAgZnVuICh0eXBlIGFfXzAxN18gYl9fMDE4XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxN18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGFfXzAxN18sIGJfXzAxOF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwicmVzdWx0Lm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJva1wiIHwgXCJPa1wiKSBhcyBfdGFnX18wMDhfKSA6OiBzZXhwX2FyZ3NfXzAwOV8pIGFzXG4gICAgICAgIF9zZXhwX18wMDdfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAwOV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxMF8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDExXyA9IF9vZl9hX18wMDFfIGFyZzBfXzAxMF8gaW5cbiAgICAgICAgICAgT2sgcmVzMF9fMDExX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMDhfXG4gICAgICAgICAgICAgX3NleHBfXzAwN18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIF90YWdfXzAxM18pIDo6IHNleHBfYXJnc19fMDE0XykgYXNcbiAgICAgICAgX3NleHBfXzAxMl8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE0XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE1XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTZfID0gX29mX2JfXzAwMl8gYXJnMF9fMDE1XyBpblxuICAgICAgICAgICBFcnJvciByZXMwX18wMTZfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAxM19cbiAgICAgICAgICAgICBfc2V4cF9fMDEyXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm9rXCIgfCBcIk9rXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2EgJ2IuXG4gICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGFfXzAyNV8gYl9fMDI2XylcbiAgICAgIDogICgoYV9fMDI1XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wMjZfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoYV9fMDI1XywgYl9fMDI2XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTlfIF9vZl9iX18wMjBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAyMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAyMl8gXVxuICAgICAgfCBFcnJvciBhcmcwX18wMjNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjRfID0gX29mX2JfXzAyMF8gYXJnMF9fMDIzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFcnJvclwiOyByZXMwX18wMjRfIF1cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6XG4gICdhICdiLlxuICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiT2tcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkVycm9yXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA6XG4gICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMjdfIGJfXzAyOF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAyN18sIGJfXzAyOF8gd2l0aFxuICAgIHwgT2sgX2FfXzAyOV8sIE9rIF9iX18wMzBfIC0+IF9jbXBfX2EgX2FfXzAyOV8gX2JfXzAzMF9cbiAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICB8IF8sIE9rIF8gLT4gMVxuICAgIHwgRXJyb3IgX2FfXzAzMV8sIEVycm9yIF9iX18wMzJfIC0+IF9jbXBfX2IgX2FfXzAzMV8gX2JfXzAzMl8pXG47O1xuXG5sZXQgZXF1YWwgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDMzXyBiX18wMzRfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDMzXyBiX18wMzRfXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMzNfLCBiX18wMzRfIHdpdGhcbiAgICB8IE9rIF9hX18wMzVfLCBPayBfYl9fMDM2XyAtPiBfY21wX19hIF9hX18wMzVfIF9iX18wMzZfXG4gICAgfCBPayBfLCBfIC0+IGZhbHNlXG4gICAgfCBfLCBPayBfIC0+IGZhbHNlXG4gICAgfCBFcnJvciBfYV9fMDM3XywgRXJyb3IgX2JfXzAzOF8gLT4gX2NtcF9fYiBfYV9fMDM3XyBfYl9fMDM4Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgYSBiLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoYSwgYikgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBPayBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gIHwgRXJyb3IgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuOztcblxuW0BAQGVuZF1cblxubGV0IGdsb2JhbGl6ZSA9IGdsb2JhbGl6ZV9yZXN1bHRcblxuaW5jbHVkZSBNb25hZC5NYWtlMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgIGxldCBiaW5kIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gZiB4XG4gICAgOztcblxuICAgIGxldCBtYXAgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICAgIHwgT2sgeCAtPiBPayAoZiB4KVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgcmV0dXJuIHggPSBPayB4XG4gIGVuZClcblxubGV0IGludmFyaWFudCBjaGVja19vayBjaGVja19lcnJvciB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgb2sgLT4gY2hlY2tfb2sgb2tcbiAgfCBFcnJvciBlcnJvciAtPiBjaGVja19lcnJvciBlcnJvclxuOztcblxubGV0IGZhaWwgeCA9IEVycm9yIHhcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcblxubGV0IG1hcF9lcnJvciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgXyBhcyB4IC0+IHhcbiAgfCBFcnJvciB4IC0+IEVycm9yIChmIHgpXG47O1xuXG5tb2R1bGUgRXJyb3IgPSBNb25hZC5NYWtlMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCBiaW5kIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE9rIF8gYXMgb2sgLT4gb2tcbiAgICAgIHwgRXJyb3IgZSAtPiBmIGVcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwX2Vycm9yXG4gICAgbGV0IHJldHVybiBlID0gRXJyb3IgZVxuICBlbmQpXG5cbmxldCBpc19vayA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IGZhbHNlXG4gIHwgRXJyb3IgXyAtPiB0cnVlXG47O1xuXG5sZXQgb2sgPSBmdW5jdGlvblxuICB8IE9rIHggLT4gU29tZSB4XG4gIHwgRXJyb3IgXyAtPiBOb25lXG47O1xuXG5sZXQgZXJyb3IgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gTm9uZVxuICB8IEVycm9yIHggLT4gU29tZSB4XG47O1xuXG5sZXQgb2Zfb3B0aW9uIG9wdCB+ZXJyb3IgPVxuICBtYXRjaCBvcHQgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPiBFcnJvciBlcnJvclxuOztcblxubGV0IGl0ZXIgdiB+ZiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE9rIHggLT4gZiB4XG4gIHwgRXJyb3IgXyAtPiAoKVxuOztcblxubGV0IGl0ZXJfZXJyb3IgdiB+ZiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE9rIF8gLT4gKClcbiAgfCBFcnJvciB4IC0+IGYgeFxuOztcblxubGV0IHRvX2VpdGhlciA6IF8gdCAtPiBfIEVpdGhlci50ID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IEZpcnN0IHhcbiAgfCBFcnJvciB4IC0+IFNlY29uZCB4XG47O1xuXG5sZXQgb2ZfZWl0aGVyIDogXyBFaXRoZXIudCAtPiBfIHQgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gT2sgeFxuICB8IFNlY29uZCB4IC0+IEVycm9yIHhcbjs7XG5cbmxldCBva19pZl90cnVlIGJvb2wgfmVycm9yID0gaWYgYm9vbCB0aGVuIE9rICgpIGVsc2UgRXJyb3IgZXJyb3JcblxubGV0IHRyeV93aXRoIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgZXhuXG47O1xuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgb2tfb3JfZmFpbHdpdGggPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIHN0ciAtPiBmYWlsd2l0aCBzdHJcbjs7XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ29rLCAnZXJyKSBfcmVzdWx0ID0gKCdvaywgJ2VycikgdCA9XG4gICAgfCBPayBvZiAnb2tcbiAgICB8IEVycm9yIG9mICdlcnJcblxuICBsZXQgaXNfZXJyb3IgPSBpc19lcnJvclxuICBsZXQgaXNfb2sgPSBpc19va1xuZW5kXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBPayBfLCBFcnJvciBlIHwgRXJyb3IgZSwgT2sgXyAtPiBFcnJvciBlXG4gIHwgT2sgb2sxLCBPayBvazIgLT4gT2sgKG9rIG9rMSBvazIpXG4gIHwgRXJyb3IgZXJyMSwgRXJyb3IgZXJyMiAtPiBFcnJvciAoZXJyIGVycjEgZXJyMilcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9ycyBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdDEucGFydGl0aW9uX21hcCBsIH5mOnRvX2VpdGhlciBpblxuICBtYXRjaCBlcnJzIHdpdGhcbiAgfCBbXSAtPiBPayBva1xuICB8IF8gOjogXyAtPiBFcnJvciBlcnJzXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gbWFwIChjb21iaW5lX2Vycm9ycyBsKSB+ZjooZnVuIChfIDogdW5pdCBsaXN0KSAtPiAoKSlcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5nIGZvciBleHBvcnQgb25seSAqKVxubGV0IG9rX2ZzdCA9IHRvX2VpdGhlclxuIiwiKCoqIFByb3ZpZGVzIGdlbmVyaWMgc2lnbmF0dXJlcyBmb3IgY29udGFpbmVyIGRhdGEgc3RydWN0dXJlcy5cblxuICAgIFRoZXNlIHNpZ25hdHVyZXMgaW5jbHVkZSBmdW5jdGlvbnMgKFtpdGVyXSwgW2ZvbGRdLCBbZXhpc3RzXSwgW2Zvcl9hbGxdLCAuLi4pIHRoYXRcbiAgICB5b3Ugd291bGQgZXhwZWN0IHRvIGZpbmQgaW4gYW55IGNvbnRhaW5lci4gVXNlZCBieSBpbmNsdWRpbmcgW0NvbnRhaW5lci5TMF0gb3JcbiAgICBbQ29udGFpbmVyLlMxXSBpbiB0aGUgc2lnbmF0dXJlIGZvciBldmVyeSBjb250YWluZXItbGlrZSBkYXRhIHN0cnVjdHVyZSAoW0FycmF5XSxcbiAgICBbTGlzdF0sIFtTdHJpbmddLCAuLi4pIHRvIGVuc3VyZSBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAoKiogW0NvbnRpbnVlX29yX3N0b3AudF0gaXMgdXNlZCBieSB0aGUgW2ZdIGFyZ3VtZW50IHRvIFtmb2xkX3VudGlsXSBpbiBvcmRlciB0b1xuICAgICAgaW5kaWNhdGUgd2hldGhlciBmb2xkaW5nIHNob3VsZCBjb250aW51ZSwgb3Igc3RvcCBlYXJseS5cblxuICAgICAgQGNhbm9uaWNhbCBCYXNlLkNvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wXG4gICopXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHwgQ29udGludWUgb2YgJ2FcbiAgICAgIHwgU3RvcCBvZiAnYlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEV4cG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkNvbnRhaW5lci5TdW1tYWJsZSAqKVxubW9kdWxlIHR5cGUgU3VtbWFibGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCoqIFRoZSByZXN1bHQgb2Ygc3VtbWluZyBubyB2YWx1ZXMuICopXG4gIHZhbCB6ZXJvIDogdFxuXG4gICgqKiBBbiBvcGVyYXRpb24gdGhhdCBjb21iaW5lcyB0d28gW3RdJ3MgYW5kIGhhbmRsZXMgW3plcm8gKyB4XSBieSBqdXN0IHJldHVybmluZyBbeF0sXG4gICAgICBhcyB3ZWxsIGFzIGluIHRoZSBzeW1tZXRyaWMgY2FzZS4gKilcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBtb25vbW9ycGhpYyBjb250YWluZXIgLSBhIGNvbnRhaW5lciBmb3IgYSBzcGVjaWZpYyBlbGVtZW50IHR5cGUsIGUuZy4sXG4gICAgc3RyaW5nLCB3aGljaCBpcyBhIGNvbnRhaW5lciBvZiBjaGFyYWN0ZXJzIChbdHlwZSBlbHQgPSBjaGFyXSkgYW5kIG5ldmVyIG9mIGFueXRoaW5nXG4gICAgZWxzZS4gKilcbm1vZHVsZSB0eXBlIFMwID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGVsdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogdCAtPiBlbHQgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcblxuICAoKiogW2l0ZXJdIG11c3QgYWxsb3cgZXhjZXB0aW9ucyByYWlzZWQgaW4gW2ZdIHRvIGVzY2FwZSwgdGVybWluYXRpbmcgdGhlIGl0ZXJhdGlvblxuICAgICAgY2xlYW5seS4gIFRoZSBzYW1lIGhvbGRzIGZvciBhbGwgZnVuY3Rpb25zIGJlbG93IHRha2luZyBhbiBbZl0uICopXG4gIHZhbCBpdGVyIDogdCAtPiBmOigoZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiB0IC0+IGY6KChlbHQgLT4gJ3N1bSlbQGxvY2FsXSkgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiB0IC0+IGY6KChlbHQgLT4gJ2Egb3B0aW9uKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcC4gbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lXG4gICAgICBjb21wbGV4aXR5IGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6IHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiB0IC0+IGNvbXBhcmU6KChlbHQgLT4gZWx0IC0+IGludClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiBfIHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IF8gdCAtPiBmOigoZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogXyB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiBUaGUgb3JkZXIgaW4gd2hpY2ggdGhlXG4gICAgICBlbGVtZW50cyB3aWxsIGJlIHN1bW1lZCBpcyB1bnNwZWNpZmllZC4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+IF8gdFxuICAgIC0+IGY6KChlbHQgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiBfIHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogXyB0IC0+IGY6KChlbHQgLT4gJ2Egb3B0aW9uKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IF8gdCAtPiBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiBfIHQgLT4gZWx0IGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AgbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24sIG9yIFtOb25lXSBpZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiAqKVxuICB2YWwgbWluX2VsdCA6IF8gdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IF8gdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBwb2x5bW9ycGhpYyBjb250YWluZXIsIGUuZy4sIFsnYSBsaXN0XSBvciBbJ2EgYXJyYXldLiAqKVxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSAtPiBlcXVhbDooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XSAgKilcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAnYSB0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW5pbXVtIChyZXNwIG1heGltdW0pIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWRcbiAgICAgIFtjb21wYXJlXSBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3RcbiAgICAgIGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uXG4gICAgICB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eSBhcyBbZm9sZF0uICopXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzFfcGhhbnRvbSA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIFtlcXVhbF0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AgbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lIGNvbXBsZXhpdHlcbiAgICAgIGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGVsdCAtPiBlcXVhbDooKCdhIGVsdCAtPiAnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSBlbHQgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgYXJyYXlcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGludClbQGxvY2FsXSkgLT4gJ2EgZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgaW5jbHVkZSBTMFxuXG4gIHZhbCBvZl9saXN0IDogZWx0IGxpc3QgLT4gdFxuICB2YWwgb2ZfYXJyYXkgOiBlbHQgYXJyYXkgLT4gdFxuXG4gICgqKiBFLmcuLCBbYXBwZW5kIChvZl9saXN0IFthOyBiXSkgKG9mX2xpc3QgW2M7IGQ7IGVdKV0gaXMgW29mX2xpc3QgW2E7IGI7IGM7IGQ7IGVdXSAqKVxuICB2YWwgYXBwZW5kIDogdCAtPiB0IC0+IHRcblxuICAoKiogQ29uY2F0ZW5hdGVzIGEgbmVzdGVkIGNvbnRhaW5lci4gVGhlIGVsZW1lbnRzIG9mIHRoZSBpbm5lciBjb250YWluZXJzIGFyZVxuICAgICAgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGluIG9yZGVyIHRvIGdpdmUgdGhlIHJlc3VsdC4gKilcbiAgdmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0XG5cbiAgKCoqIFttYXAgZiAob2ZfbGlzdCBbYTE7IC4uLjsgYW5dKV0gYXBwbGllcyBbZl0gdG8gW2ExXSwgW2EyXSwgLi4uLCBbYW5dLCBpbiBvcmRlciwgYW5kXG4gICAgICBidWlsZHMgYSByZXN1bHQgZXF1aXZhbGVudCB0byBbb2ZfbGlzdCBbZiBhMTsgLi4uOyBmIGFuXV0uICopXG4gIHZhbCBtYXAgOiB0IC0+IGY6KChlbHQgLT4gZWx0KVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyBhbGwgdGhlIGVsZW1lbnRzIG9mIFt0XSB0aGF0IHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0uICopXG4gIHZhbCBmaWx0ZXIgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbZmlsdGVyX21hcCB0IH5mXSBhcHBsaWVzIFtmXSB0byBldmVyeSBbeF0gaW4gW3RdLiBUaGUgcmVzdWx0IGNvbnRhaW5zIGV2ZXJ5IFt5XSBmb3JcbiAgICAgIHdoaWNoIFtmIHhdIHJldHVybnMgW1NvbWUgeV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogdCAtPiBmOigoZWx0IC0+IGVsdCBvcHRpb24pW0Bsb2NhbF0pIC0+IHRcblxuICAoKiogW2NvbmNhdF9tYXAgdCB+Zl0gaXMgZXF1aXZhbGVudCB0byBbY29uY2F0IChtYXAgdCB+ZildLiAqKVxuICB2YWwgY29uY2F0X21hcCA6IHQgLT4gZjooKGVsdCAtPiB0KVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+Zl0gcmV0dXJucyBhIHBhaXIgW3QxLCB0Ml0sIHdoZXJlIFt0MV0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0XG4gICAgICBzYXRpc2Z5IFtmXSwgYW5kIFt0Ml0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0IGRvIG5vdCBzYXRpc2Z5IFtmXS4gVGhlIFwidGZcIlxuICAgICAgc3VmZml4IGlzIG1uZW1vbmljIHRvIHJlbWluZCByZWFkZXJzIHRoYXQgdGhlIHJlc3VsdCBpcyAodHJ1ZXMsIGZhbHNlcykuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gdCAqIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+Zl0gcGFydGl0aW9ucyBbdF0gYWNjb3JkaW5nIHRvIFtmXS4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiB0IC0+IGY6KChlbHQgLT4gKGVsdCwgZWx0KSBFaXRoZXIwLnQpW0Bsb2NhbF0pIC0+IHQgKiB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzFfd2l0aF9jcmVhdG9ycyA9IHNpZ1xuICBpbmNsdWRlIFMxXG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gJ2EgdFxuXG4gICgqKiBFLmcuLCBbYXBwZW5kIChvZl9saXN0IFsxOyAyXSkgKG9mX2xpc3QgWzM7IDQ7IDVdKV0gaXMgW29mX2xpc3QgWzE7IDI7IDM7IDQ7IDVdXSAqKVxuICB2YWwgYXBwZW5kIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcblxuICAoKiogQ29uY2F0ZW5hdGVzIGEgbmVzdGVkIGNvbnRhaW5lci4gVGhlIGVsZW1lbnRzIG9mIHRoZSBpbm5lciBjb250YWluZXJzIGFyZVxuICAgICAgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGluIG9yZGVyIHRvIGdpdmUgdGhlIHJlc3VsdC4gKilcbiAgdmFsIGNvbmNhdCA6ICdhIHQgdCAtPiAnYSB0XG5cbiAgKCoqIFttYXAgZiAob2ZfbGlzdCBbYTE7IC4uLjsgYW5dKV0gYXBwbGllcyBbZl0gdG8gW2ExXSwgW2EyXSwgLi4uLCBbYW5dLCBpbiBvcmRlciwgYW5kXG4gICAgICBidWlsZHMgYSByZXN1bHQgZXF1aXZhbGVudCB0byBbb2ZfbGlzdCBbZiBhMTsgLi4uOyBmIGFuXV0uICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgYWxsIHRoZSBlbGVtZW50cyBvZiBbdF0gdGhhdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW2ZdLiAqKVxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdFxuXG4gICgqKiBbZmlsdGVyX21hcCB0IH5mXSBhcHBsaWVzIFtmXSB0byBldmVyeSBbeF0gaW4gW3RdLiBUaGUgcmVzdWx0IGNvbnRhaW5zIGV2ZXJ5IFt5XSBmb3JcbiAgICAgIHdoaWNoIFtmIHhdIHJldHVybnMgW1NvbWUgeV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgKCoqIFtjb25jYXRfbWFwIHQgfmZdIGlzIGVxdWl2YWxlbnQgdG8gW2NvbmNhdCAobWFwIHQgfmYpXS4gKilcbiAgdmFsIGNvbmNhdF9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiB0KVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+Zl0gcmV0dXJucyBhIHBhaXIgW3QxLCB0Ml0sIHdoZXJlIFt0MV0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0XG4gICAgICBzYXRpc2Z5IFtmXSwgYW5kIFt0Ml0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0IGRvIG5vdCBzYXRpc2Z5IFtmXS4gVGhlIFwidGZcIlxuICAgICAgc3VmZml4IGlzIG1uZW1vbmljIHRvIHJlbWluZCByZWFkZXJzIHRoYXQgdGhlIHJlc3VsdCBpcyAodHJ1ZXMsIGZhbHNlcykuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0ICogJ2EgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcCB0IH5mXSBwYXJ0aXRpb25zIFt0XSBhY2NvcmRpbmcgdG8gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICgnYiwgJ2MpIEVpdGhlcjAudClbQGxvY2FsXSkgLT4gJ2IgdCAqICdjIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgdHlwZSAoXywgXykgY29uY2F0XG5cbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBlbHQgbGlzdCAtPiAoJ2EsIF8pIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgZWx0IGFycmF5IC0+ICgnYSwgXykgdFxuICB2YWwgYXBwZW5kIDogKCdhLCAncCkgdCAtPiAoJ2EsICdwKSB0IC0+ICgnYSwgJ3ApIHRcbiAgdmFsIGNvbmNhdCA6ICgoJ2EsICdwKSB0LCAncCkgY29uY2F0IC0+ICgnYSwgJ3ApIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiAnYiBlbHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdwKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+ICdiIGVsdCBvcHRpb24pW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIGNvbmNhdF9tYXAgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gKCdiLCAncCkgdClbQGxvY2FsXSkgLT4gKCdiLCAncCkgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ3ApIHQgKiAoJ2EsICdwKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2EsICdwKSB0XG4gICAgLT4gZjooKCdhIGVsdCAtPiAoJ2IgZWx0LCAnYyBlbHQpIEVpdGhlcjAudClbQGxvY2FsXSlcbiAgICAtPiAoJ2IsICdwKSB0ICogKCdjLCAncCkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfZ2VuX2FyZyA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgZm9sZCA6ICgnYSwgJ3BoYW50b20pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFRoZSBbaXRlcl0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtpdGVyXSBmdW5jdGlvbi4gIFtgRGVmaW5lX3VzaW5nX2ZvbGRdIG1lYW5zIHRvIGRlZmluZSBbaXRlcl1cbiAgICAgIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgaXRlciB0IH5mID0gQ29udGFpbmVyLml0ZXIgfmZvbGQgdCB+ZlxuICAgICAgXX1cblxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuICBTZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbQ29udGFpbmVyLk1ha2VdIGFyZSBkZWZpbmVkIGluXG4gICAgICB0ZXJtcyBvZiBbaXRlcl0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbaXRlcl0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3lcbiAgICAgIGFzIHdlbGwuICopXG4gIHZhbCBpdGVyXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgICAgfCBgQ3VzdG9tIG9mICgnYSwgJ3BoYW50b20pIHQgLT4gZjooKCdhIGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gICAgICBdXG5cbiAgKCoqIFRoZSBbbGVuZ3RoXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2xlbmd0aF0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmVcbiAgICAgIFtsZW5ndGhdIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgbGVuZ3RoIHQgfmYgPSBDb250YWluZXIubGVuZ3RoIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2xlbmd0aF0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbGVuZ3RoXSB3aWxsIGltcHJvdmUgdGhlaXJcbiAgICAgIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIGxlbmd0aCA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAoJ2EsICdwaGFudG9tKSB0IC0+IGludCBdXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICgnYSwgXykgdCA6PSAnYSB0IGFuZCB0eXBlICdhIGVsdCA6PSAnYVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2UwX2FyZyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICB0eXBlIHRcblxuICBpbmNsdWRlIE1ha2VfZ2VuX2FyZyB3aXRoIHR5cGUgKCdhLCBfKSB0IDo9IHQgYW5kIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9jb21tb25fd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmdcblxuICB0eXBlIChfLCBfKSBjb25jYXRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGVsdCBsaXN0IC0+ICgnYSwgXykgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBlbHQgYXJyYXkgLT4gKCdhLCBfKSB0XG4gIHZhbCBjb25jYXQgOiAoKCdhLCBfKSB0LCBfKSBjb25jYXQgLT4gKCdhLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgaW5jbHVkZSBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZ1xuXG4gIHZhbCBjb25jYXRfb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiAoJ2EsIF8pIGNvbmNhdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZVxuICAgIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnXG4gICAgd2l0aCB0eXBlICgnYSwgXykgdCA6PSAnYSB0XG4gICAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYVxuICAgICBhbmQgdHlwZSAoJ2EsIF8pIGNvbmNhdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgdHlwZSB0XG5cbiAgaW5jbHVkZVxuICAgIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnXG4gICAgd2l0aCB0eXBlICgnYSwgXykgdCA6PSB0XG4gICAgIGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuICAgICBhbmQgdHlwZSAoJ2EsIF8pIGNvbmNhdCA6PSAnYSBsaXN0XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZCA9IHNpZ1xuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbZm9sZF0uXG5cbiAgICAgIEUuZy46IFtpdGVyIH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIC0+IGYgYSldLiAqKVxuXG4gIHR5cGUgKCd0LCAnYSwgJ2FjYykgZm9sZCA9ICd0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG4gIHR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbiAgdmFsIGl0ZXIgOiBmb2xkOigndCwgJ2EsIHVuaXQpIGZvbGQgLT4gKCd0LCAnYSkgaXRlclxuICB2YWwgY291bnQgOiBmb2xkOigndCwgJ2EsIGludCkgZm9sZCAtPiAndCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIG1pbl9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2Egb3B0aW9uKSBmb2xkXG4gICAgLT4gJ3RcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBsZW5ndGggOiBmb2xkOigndCwgXywgaW50KSBmb2xkIC0+ICd0IC0+IGludFxuICB2YWwgdG9fbGlzdCA6IGZvbGQ6KCd0LCAnYSwgJ2EgbGlzdCkgZm9sZCAtPiAndCAtPiAnYSBsaXN0XG5cbiAgdmFsIHN1bVxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ3N1bSkgZm9sZFxuICAgIC0+IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICd0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2FjYykgZm9sZFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gJ3RcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhY2MpIGZvbGRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ3RcbiAgICAtPiAnZmluYWxcblxuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbaXRlcl0gYW5kIFtsZW5ndGhdLiAqKVxuXG4gIHZhbCBpc19lbXB0eSA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBib29sXG4gIHZhbCBtZW0gOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZpbmQgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19hcnJheSA6IGxlbmd0aDondCBsZW5ndGggLT4gaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+ICdhIGFycmF5XG5lbmRcblxubW9kdWxlIHR5cGUgQ29udGFpbmVyID0gc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBFeHBvcnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzAgPSBTMFxuICBtb2R1bGUgdHlwZSBTMF9waGFudG9tID0gUzBfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTMF93aXRoX2NyZWF0b3JzID0gUzBfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBTMSA9IFMxXG4gIG1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBTMV9waGFudG9tXG4gIG1vZHVsZSB0eXBlIFMxX3dpdGhfY3JlYXRvcnMgPSBTMV93aXRoX2NyZWF0b3JzXG4gIG1vZHVsZSB0eXBlIERlcml2ZWQgPSBEZXJpdmVkXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWMgPSBHZW5lcmljXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWNfd2l0aF9jcmVhdG9ycyA9IEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBTdW1tYWJsZSA9IFN1bW1hYmxlXG5cbiAgaW5jbHVkZSBEZXJpdmVkXG5cbiAgKCoqIFRoZSBpZGlvbSBmb3IgdXNpbmcgW0NvbnRhaW5lci5NYWtlXSBpcyB0byBiaW5kIHRoZSByZXN1bHRpbmcgbW9kdWxlIGFuZCB0b1xuICAgICAgZXhwbGljaXRseSBpbXBvcnQgZWFjaCBvZiB0aGUgZnVuY3Rpb25zIHRoYXQgb25lIHdhbnRzOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgICAgbGV0IGNvdW50ICAgID0gQy5jb3VudFxuICAgICAgICBsZXQgZXhpc3RzICAgPSBDLmV4aXN0c1xuICAgICAgICBsZXQgZmluZCAgICAgPSBDLmZpbmRcbiAgICAgICAgKCogLi4uICopXG4gICAgICBdfVxuXG4gICAgICBUaGlzIGlzIHByZWZlcmFibGUgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIGluY2x1ZGUgQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgXX1cblxuICAgICAgYmVjYXVzZSB0aGUgW2luY2x1ZGVdIG1ha2VzIGl0IHRvbyBlYXN5IHRvIHNoYWRvdyBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgIGNvbnRhaW5lciBmdW5jdGlvbnMgKFtsZW5ndGhdIGJlaW5nIGEgY29tbW9uIG9uZSkuXG5cbiAgICAgIFtDb250YWluZXIuTWFrZTBdIGlzIGxpa2UgW0NvbnRhaW5lci5NYWtlXSwgYnV0IGZvciBtb25vbW9ycGhpYyBjb250YWluZXJzIGxpa2VcbiAgICAgIFtzdHJpbmddLiAqKVxuICBtb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuXG4gIG1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgOiBTMCB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgZWx0IDo9IFQuRWx0LnRcblxuICBtb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcblxuICBtb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIFMxX3dpdGhfY3JlYXRvcnMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5cbiAgbW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIFMwX3dpdGhfY3JlYXRvcnMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGVsdCA6PSBULkVsdC50XG5cbiAgbW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICAgIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudFxuICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgICAgYW5kIHR5cGUgKCdhLCAncGhhbnRvbSkgY29uY2F0IDo9ICgnYSwgJ3BoYW50b20pIFQuY29uY2F0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBDb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9XG4gICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCgnYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKVtAbG9jYWxdKSAtPiAnYWNjdW1cblxudHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbnR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbmxldCBpdGVyIH4oZm9sZCA6IChfLCBfLCBfKSBmb2xkKSB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpIFtAbm9udGFpbF1cbmxldCBjb3VudCB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIGEgLT4gaWYgZiBhIHRoZW4gbiArIDEgZWxzZSBuKSBbQG5vbnRhaWxdXG5cbmxldCBzdW0gKHR5cGUgYSkgfmZvbGQgKG1vZHVsZSBNIDogU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgZm9sZCB0IH5pbml0Ok0uemVybyB+ZjooZnVuIG4gYSAtPiBNLiggKyApIG4gKGYgYSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0ID1cbiAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgUmVzdWx0Lk9rXG4gICAgICAoZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGl0ZW0gLT5cbiAgICAgICAgIG1hdGNoIGYgYWNjIGl0ZW0gd2l0aFxuICAgICAgICAgfCBSZXN1bHQuT2sgeCAtPiB4XG4gICAgICAgICB8IEVycm9yIF8gYXMgZSAtPiByZXR1cm4gZSkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBmaW5pc2hcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IENvbnRpbnVlX29yX3N0b3AuQ29udGludWUgeCAtPiB4XG4gICAgICAgICB8IFN0b3AgeCAtPiByZXR1cm4geCkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWluIC0+IGlmIGNvbXBhcmUgbWluIGVsdCA+IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IG1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1heCAtPiBpZiBjb21wYXJlIG1heCBlbHQgPCAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBsZW5ndGggfmZvbGQgYyA9IGZvbGQgYyB+aW5pdDowIH5mOihmdW4gYWNjIF8gLT4gYWNjICsgMSlcblxubGV0IGlzX2VtcHR5IH5pdGVyIGMgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biBfIC0+IHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IG1lbSB+aXRlciBjIHggfmVxdWFsID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geSAtPiBpZiBlcXVhbCB4IHkgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGV4aXN0cyB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvcl9hbGwgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgbm90IChmIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX21hcCB+aXRlciB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciB0IH5mOihmdW4geCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHIucmV0dXJuIHJlcyk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmQgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gKFNvbWUgeCkpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCB0b19saXN0IH5mb2xkIGMgPSBMaXN0LnJldiAoZm9sZCBjIH5pbml0OltdIH5mOihmdW4gYWNjIHggLT4geCA6OiBhY2MpKVxuXG5sZXQgdG9fYXJyYXkgfmxlbmd0aCB+aXRlciBjID1cbiAgbGV0IGFycmF5ID0gcmVmIFt8fF0gaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICBpdGVyIGMgfmY6KGZ1biB4IC0+XG4gICAgaWYgIWkgPSAwIHRoZW4gYXJyYXkgOj0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCBjKSB4O1xuICAgICFhcnJheS4oIWkpIDwtIHg7XG4gICAgaW5jciBpKTtcbiAgIWFycmF5XG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID1cbnN0cnVjdFxuICBsZXQgZm9sZCA9IFQuZm9sZFxuXG4gIGxldCBpdGVyID1cbiAgICBtYXRjaCBULml0ZXIgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyIC0+IGl0ZXJcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+ZiAtPiBpdGVyIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgbGVuZ3RoID1cbiAgICBtYXRjaCBULmxlbmd0aCB3aXRoXG4gICAgfCBgQ3VzdG9tIGxlbmd0aCAtPiBsZW5ndGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCAtPiBsZW5ndGggfmZvbGQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gaXNfZW1wdHkgfml0ZXIgdFxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBtZW0gfml0ZXIgdCB4IH5lcXVhbFxuICBsZXQgc3VtIG0gdCA9IHN1bSB+Zm9sZCBtIHRcbiAgbGV0IGNvdW50IHQgfmYgPSBjb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0cyB+aXRlciB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcCB+aXRlciB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kIH5pdGVyIHQgfmZcbiAgbGV0IHRvX2xpc3QgdCA9IHRvX2xpc3QgfmZvbGQgdFxuICBsZXQgdG9fYXJyYXkgdCA9IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgdFxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBmb2xkX3Jlc3VsdCB0IH5mb2xkIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IGZvbGRfdW50aWwgdCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCB4ID0gbWVtIHQgeCB+ZXF1YWw6VC5FbHQuZXF1YWxcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNfYXJnKSA6XG4gIEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuICAgYW5kIHR5cGUgKCdhLCAncGhhbnRvbSkgY29uY2F0IDo9ICgnYSwgJ3BoYW50b20pIFQuY29uY2F0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKFQpXG5cbiAgbGV0IG9mX2xpc3QgPSBULm9mX2xpc3RcbiAgbGV0IG9mX2FycmF5ID0gVC5vZl9hcnJheVxuICBsZXQgY29uY2F0ID0gVC5jb25jYXRcbiAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IFQuY29uY2F0X29mX2FycmF5XG4gIGxldCBhcHBlbmQgYSBiID0gY29uY2F0IChjb25jYXRfb2ZfYXJyYXkgW3wgYTsgYiB8XSlcbiAgbGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAoY29uY2F0X29mX2FycmF5IChBcnJheS5tYXAgKHRvX2FycmF5IHQpIH5mKSlcblxuICBsZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgICBjb25jYXRfbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IG9mX2FycmF5IFt8fF1cbiAgICAgIHwgU29tZSB5IC0+IG9mX2FycmF5IFt8IHkgfF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IFNvbWUgKGYgeCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gICAgbGV0IGFycmF5ID0gQXJyYXkubWFwICh0b19hcnJheSB0KSB+ZiBpblxuICAgIGxldCB4cyA9XG4gICAgICBBcnJheS5mb2xkX3JpZ2h0IGFycmF5IH5pbml0OltdIH5mOihmdW4gZWl0aGVyIGFjYyAtPlxuICAgICAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IHggLT4geCA6OiBhY2NcbiAgICAgICAgfCBTZWNvbmQgXyAtPiBhY2MpXG4gICAgaW5cbiAgICBsZXQgeXMgPVxuICAgICAgQXJyYXkuZm9sZF9yaWdodCBhcnJheSB+aW5pdDpbXSB+ZjooZnVuIGVpdGhlciBhY2MgLT5cbiAgICAgICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCBfIC0+IGFjY1xuICAgICAgICB8IFNlY29uZCB4IC0+IHggOjogYWNjKVxuICAgIGluXG4gICAgb2ZfbGlzdCB4cywgb2ZfbGlzdCB5c1xuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgcGFydGl0aW9uX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBGaXJzdCB4IGVsc2UgU2Vjb25kIHgpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIFQudFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgICB0eXBlICgnYSwgXykgY29uY2F0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gQXJyYXkudG9fbGlzdFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxubGV0IGl0ZXJpIH5mb2xkIHQgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIHYgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgdiBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IGNvdW50aSB+Zm9sZGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgbiBhIC0+IGlmIGYgaSBhIHRoZW4gbiArIDEgZWxzZSBuKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvcl9hbGxpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBub3QgKGYgaSB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXBpIH5pdGVyaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIHgpKSk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxuKCogQWxsb3dzIFtNYWtlX2dlbl0gdG8gc2hhcmUgYSBbQ29udGFpbmVyLkdlbmVyaWNdIGltcGxlbWVudGF0aW9uIHdpdGgsIGUuZy4sXG4gICBbQ29udGFpbmVyLk1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNdLiAqKVxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY29udGFpbmVyXG4gICAgKFQgOiBNYWtlX2dlbl9hcmcpXG4gICAgKEMgOiBDb250YWluZXIuR2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgICAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCkgOlxuICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQgPVxuc3RydWN0XG4gIGluY2x1ZGUgQ1xuXG4gIGxldCBpdGVyaSA9XG4gICAgbWF0Y2ggVC5pdGVyaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXJpIC0+IGl0ZXJpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlcmkgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBmb2xkaSA9XG4gICAgbWF0Y2ggVC5mb2xkaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGZvbGRpIC0+IGZvbGRpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmluaXQgfmYgLT4gZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBjb3VudGkgdCB+ZiA9IGNvdW50aSB+Zm9sZGkgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gZXhpc3RzaSB+aXRlcmkgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IGZvcl9hbGxpIH5pdGVyaSB0IH5mXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZGkgdCB+ZiA9IGZpbmRpIH5pdGVyaSB0IH5mXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gIEdlbmVyaWMgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZV9nZW4gKFQpXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY29udGFpbmVyIChUKSAoQylcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKF8sIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgIGFuZCB0eXBlICgnYSwgJ3BoYW50b20pIGNvbmNhdCA6PSAoJ2EsICdwaGFudG9tKSBULmNvbmNhdCA9IHN0cnVjdFxuICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUKVxuICBpbmNsdWRlIENcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NvbnRhaW5lciAoVCkgKEMpXG5cbiAgbGV0IGRlcml2ZWRfaW5pdCBuIH5mID0gb2ZfYXJyYXkgKEFycmF5LmluaXQgbiB+ZilcblxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggVC5pbml0IHdpdGhcbiAgICB8IGBDdXN0b20gaW5pdCAtPiBpbml0XG4gICAgfCBgRGVmaW5lX3VzaW5nX29mX2FycmF5IC0+IGRlcml2ZWRfaW5pdFxuICA7O1xuXG4gIGxldCBkZXJpdmVkX2NvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKFQuY29uY2F0X29mX2FycmF5IChBcnJheS5tYXBpICh0b19hcnJheSB0KSB+ZikpXG5cbiAgbGV0IGNvbmNhdF9tYXBpID1cbiAgICBtYXRjaCBULmNvbmNhdF9tYXBpIHdpdGhcbiAgICB8IGBDdXN0b20gY29uY2F0X21hcGkgLT4gY29uY2F0X21hcGlcbiAgICB8IGBEZWZpbmVfdXNpbmdfY29uY2F0IC0+IGRlcml2ZWRfY29uY2F0X21hcGlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgY29uY2F0X21hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+IG9mX2FycmF5IFt8fF1cbiAgICAgIHwgU29tZSB5IC0+IG9mX2FycmF5IFt8IHkgfF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwaSB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBTb21lIChmIGkgeCkpIFtAbm9udGFpbF1cblxuICBsZXQgZmlsdGVyaSB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX3dpdGhfY3JlYXRvcnNfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgICB0eXBlICgnYSwgXykgY29uY2F0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTBfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2UwX3dpdGhfY3JlYXRvcnNfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKF8sIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IEFycmF5LnRvX2xpc3RcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RkbGliLkxhenlcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsYXp5X3Rfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGF6eV90XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gbGF6eV90X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5leHRlcm5hbCBmb3JjZSA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuXG5sZXQgbWFwIHQgfmYgPSBsYXp5IChmIChmb3JjZSB0KSlcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MiB0aGVuIDAgZWxzZSBjb21wYXJlX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG47O1xuXG5sZXQgZXF1YWwgZXF1YWxfYSB0MSB0MiA9IGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiB0cnVlIGVsc2UgZXF1YWxfYSAoZm9yY2UgdDEpIChmb3JjZSB0MilcbmxldCBoYXNoX2ZvbGRfdCA9IEhhc2guQnVpbHRpbi5oYXNoX2ZvbGRfbGF6eV90XG5sZXQgcGVlayB0ID0gaWYgaXNfdmFsIHQgdGhlbiBTb21lIChmb3JjZSB0KSBlbHNlIE5vbmVcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiB4ID0gZnJvbV92YWwgeFxuICAgIGxldCBiaW5kIHQgfmYgPSBsYXp5IChmb3JjZSAoZiAoZm9yY2UgdCkpKVxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgVF91bmZvcmNpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBpc192YWwgdCB0aGVuIHNleHBfb2ZfYSAoZm9yY2UgdCkgZWxzZSBzZXhwX29mX3N0cmluZyBcIjx1bmZvcmNlZCBsYXp5PlwiXG4gIDs7XG5lbmRcbiIsIigqIFNwbGl0IG9mZiB0byBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5IHdpdGggW09yX2Vycm9yXS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbmxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIHBvc2l0aW9uOiAlZFwiIHBvcyAoKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIGxlbmd0aDogJWRcIiBsZW4gKCk7XG4gICgqIFdlIHVzZSBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gdG90YWxfbGVuZ3RoXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA+IHRvdGFsX2xlbmd0aCAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnZiBcInBvcyArIGxlbiBwYXN0IGVuZDogJWQgKyAlZCA+ICVkXCIgcG9zIGxlbiB0b3RhbF9sZW5ndGggKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICAoKiBUaGlzIGlzIGJldHRlciB0aGFuIFtzbG93X2NoZWNrX3Bvc19sZW5fZXhuXSBmb3IgdHdvIHJlYXNvbnM6XG5cbiAgICAgLSBtdWNoIGxlc3MgaW5saW5lZCBjb2RlXG4gICAgIC0gb25seSBvbmUgY29uZGl0aW9uYWwganVtcFxuXG4gICAgIFRoZSByZWFzb24gaXQgd29ya3MgaXMgdGhhdCBjaGVja2luZyBbPCAwXSBpcyB0ZXN0aW5nIHRoZSBoaWdoZXN0IG9yZGVyIGJpdCwgc29cbiAgICAgW2EgPCAwIHx8IGIgPCAwXSBpcyB0aGUgc2FtZSBhcyBbYSBsb3IgYiA8IDBdLlxuXG4gICAgIFtwb3MgKyBsZW5dIGNhbiBvdmVyZmxvdywgc28gW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gaXMgbm90IGVxdWl2YWxlbnQgdG9cbiAgICAgW3RvdGFsX2xlbmd0aCAtIGxlbiAtIHBvcyA8IDBdLCB3ZSBuZWVkIHRvIHRlc3QgZm9yIFtwb3MgKyBsZW5dIG92ZXJmbG93IGFzXG4gICAgIHdlbGwuICopXG4gIGxldCBzdG9wID0gcG9zICsgbGVuIGluXG4gIGlmIHBvcyBsb3IgbGVuIGxvciBzdG9wIGxvciAodG90YWxfbGVuZ3RoIC0gc3RvcCkgPCAwXG4gIHRoZW4gc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBnZXRfcG9zX2xlbl9leG4gPyhwb3MgPSAwKSA/bGVuICgpIH50b3RhbF9sZW5ndGggPVxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBpIC0+IGlcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIGNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBwb3MsIGxlblxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gPSBzbG93X2NoZWNrX3Bvc19sZW5fZXhuXG5lbmRcbiIsIlxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgb3BlbiBTdGRsaWIuQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgbGV0IG9mX3N0YXRlIDogU3RkbGliLlJhbmRvbS5TdGF0ZS50IC0+IHQgPSBTdGRsaWIuT2JqLm1hZ2ljXG5lbmRcblxubGV0IGFzc2lnbiBkc3Qgc3JjID1cbiAgbGV0IGRzdCA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2UgZHN0KSBpblxuICBsZXQgc3JjID0gUmVwci5vZl9zdGF0ZSAoTGF6eS5mb3JjZSBzcmMpIGluXG4gIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEuYmxpdCBzcmMgZHN0XG5cbmxldCBtYWtlX2RlZmF1bHQgZGVmYXVsdCA9XG4gIGxldCBzcGxpdF9mcm9tX3BhcmVudCB2ID1cbiAgICBTdGRsaWIuTGF6eS5tYXBfdmFsIFN0ZGxpYi5SYW5kb20uU3RhdGUuc3BsaXQgdlxuICBpblxuICBTdGRsaWIuRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudCAoZnVuICgpIC0+IGRlZmF1bHQpXG5cbmxldCBnZXRfc3RhdGUgcmFuZG9tX2tleSA9IFN0ZGxpYi5Eb21haW4uRExTLmdldCByYW5kb21fa2V5XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5cbigqIFVuZm9ydHVuYXRlbHksIGJlY2F1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lcyBub3QgZXhwb3NlXG4gICBbU3RkbGliLlJhbmRvbS5TdGF0ZS5kZWZhdWx0XSwgd2UgaGF2ZSB0byBjb25zdHJ1Y3Qgb3VyIG93bi4gIFdlIHRoZW4gYnVpbGQgdGhlXG4gICBbU3RkbGliLlJhbmRvbS5pbnRdLCBbU3RkbGliLlJhbmRvbS5ib29sXSBmdW5jdGlvbnMgYW5kIGZyaWVuZHMgdXNpbmcgdGhhdCBkZWZhdWx0IHN0YXRlIGluXG4gICBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeS5cblxuICAgT25lIG90aGVyIHRyaWNraW5lc3MgaXMgdGhhdCB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgdW5leHBvc2VkIFtTdGRsaWIuUmFuZG9tLlN0YXRlLmFzc2lnbl1cbiAgIGZ1bmN0aW9uLCB3aGljaCBhY2Nlc3NlcyB0aGUgdW5leHBvc2VkIHN0YXRlIHJlcHJlc2VudGF0aW9uLiAgU28sIHdlIGNvcHkgdGhlXG4gICBbU3RhdGUucmVwcl0gdHlwZSBkZWZpbml0aW9uIGFuZCBbYXNzaWduXSBmdW5jdGlvbiB0byBoZXJlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksXG4gICBhbmQgdXNlIFtPYmoubWFnaWNdIHRvIGdldCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24uICopXG5cbigqIFJlZ3Jlc3Npb24gdGVzdHMgb3VnaHQgdG8gYmUgZGV0ZXJtaW5pc3RpYyBiZWNhdXNlIHRoYXQgd2F5IGFueW9uZSB3aG8gYnJlYWtzIHRoZSB0ZXN0XG4gICBrbm93cyB0aGF0IGl0J3MgdGhlaXIgY29kZSB0aGF0IGJyb2tlIHRoZSB0ZXN0LiAgSWYgdGVzdHMgYXJlIG5vbmRldGVybWluaXN0aWMsIGEgdGVzdFxuICAgZmFpbHVyZSBtYXkgaW5zdGVhZCBoYXBwZW4gYmVjYXVzZSB0aGUgdGVzdCBydW5uZXIgZ290IHVubHVja3kgYW5kIHVuY292ZXJlZCBhblxuICAgZXhpc3RpbmcgYnVnIGluIHRoZSBjb2RlIHN1cHBvc2VkbHkgYmVpbmcgXCJwcm90ZWN0ZWRcIiBieSB0aGUgdGVzdCBpbiBxdWVzdGlvbi4gKilcbmxldCBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzID1cbiAgaWYgYW1fdGVzdGluZ1xuICB0aGVuIChcbiAgICBtYXRjaCBhbGxvd19pbl90ZXN0cyB3aXRoXG4gICAgfCBTb21lIHRydWUgLT4gKClcbiAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICBcImluaXRpYWxpemluZyBSYW5kb20gd2l0aCBhIG5vbmRldGVybWluaXN0aWMgc2VlZCBpcyBmb3JiaWRkZW4gaW4gaW5saW5lIHRlc3RzXCIpXG47O1xuXG5leHRlcm5hbCByYW5kb21fc2VlZCA6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbmxldCByYW5kb21fc2VlZCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICByYW5kb21fc2VlZCAoKVxuOztcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICgqIFdlIGFsbG93IGxhemluZXNzIG9ubHkgZm9yIHRoZSBkZWZpbml0aW9uIG9mIFtkZWZhdWx0XSwgYmVsb3csIHdoaWNoIG1heSBsYXppbHkgY2FsbFxuICAgICBbbWFrZV9zZWxmX2luaXRdLiBGb3IgYWxsIG90aGVyIHB1cnBvc2VzLCB3ZSBjcmVhdGUgYW5kIHVzZSBbdF0gZWFnZXJseS4gKilcbiAgdHlwZSB0ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS50IExhenkudFxuXG4gIGxldCBiaXRzIHQgPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgdClcbiAgbGV0IGJvb2wgdCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuYm9vbCAoTGF6eS5mb3JjZSB0KVxuICBsZXQgaW50IHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDMyIHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50MzIgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50NjQgdCB4ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5pbnQ2NCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBuYXRpdmVpbnQgdCB4ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5uYXRpdmVpbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbWFrZSBzZWVkID0gTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5tYWtlIHNlZWQpXG4gIGxldCBjb3B5IHQgPSBMYXp5LmZyb21fdmFsIChTdGRsaWIuUmFuZG9tLlN0YXRlLmNvcHkgKExhenkuZm9yY2UgdCkpXG4gIGxldCBjaGFyIHQgPSBpbnQgdCAyNTYgfD4gQ2hhci51bnNhZmVfb2ZfaW50XG4gIGxldCBhc2NpaSB0ID0gaW50IHQgMTI4IHw+IENoYXIudW5zYWZlX29mX2ludFxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICAgIGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHM7XG4gICAgTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcbiAgOztcblxuICBsZXQgYXNzaWduID0gUmFuZG9tX3JlcHIuYXNzaWduXG4gIGxldCBmdWxsX2luaXQgdCBzZWVkID0gYXNzaWduIHQgKG1ha2Ugc2VlZClcblxuICBsZXQgZGVmYXVsdCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogV2UgZGVmaW5lIEJhc2UncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZSBhcyBhIGNvcHkgb2YgT0NhbWwncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZS5cbiAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBwcm9ncmFtcyB0aGF0IHVzZSBCYXNlLlJhbmRvbSB3aWxsIHNlZSB0aGUgc2FtZSBzZXF1ZW5jZSBvZlxuICAgICAgICAgcmFuZG9tIGJpdHMgYXMgaWYgdGhleSBoYWQgdXNlZCBTdGRsaWIuUmFuZG9tLiBIb3dldmVyLCBiZWNhdXNlIFtnZXRfc3RhdGVdIHJldHVybnNcbiAgICAgICAgIGEgY29weSwgQmFzZS5SYW5kb20gYW5kIE9DYW1sLlJhbmRvbSBhcmUgbm90IHVzaW5nIHRoZSBzYW1lIHN0YXRlLiBJZiBhIHByb2dyYW1cbiAgICAgICAgIHVzZWQgYm90aCwgZWFjaCBvZiB0aGVtIHdvdWxkIGdvIHRocm91Z2ggdGhlIHNhbWUgc2VxdWVuY2Ugb2YgcmFuZG9tIGJpdHMuIFRvXG4gICAgICAgICBhdm9pZCB0aGF0LCB3ZSByZXNldCBPQ2FtbCdzIHJhbmRvbSBzdGF0ZSB0byBhIGRpZmZlcmVudCBzZWVkLCBnaXZpbmcgaXQgYVxuICAgICAgICAgZGlmZmVyZW50IHNlcXVlbmNlLiAqKVxuICAgICAgbGV0IHQgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICAgICAgU3RkbGliLlJhbmRvbS5pbml0IDEzNztcbiAgICAgIExhenkuZnJvbV92YWwgdClcbiAgICBlbHNlXG4gICAgICBsYXp5XG4gICAgICAgICgqIE91dHNpZGUgb2YgdGVzdHMsIHdlIGluaXRpYWxpemUgcmFuZG9tIHN0YXRlIG5vbmRldGVybWluaXN0aWNhbGx5IGFuZCBsYXppbHkuXG4gICAgICAgICAgIFdlIGZvcmNlIHRoZSByYW5kb20gaW5pdGlhbGl6YXRpb24gdG8gYmUgbGF6eSBzbyB0aGF0IHdlIGRvIG5vdCBwYXkgYW55IGNvc3RcbiAgICAgICAgICAgZm9yIGl0IGluIHByb2dyYW1zIHRoYXQgZG8gbm90IHVzZSByYW5kb21uZXNzLiAqKVxuICAgICAgICAoTGF6eS5mb3JjZSAobWFrZV9zZWxmX2luaXQgKCkpKVxuICA7O1xuXG4gIGxldCBpbnRfb25fNjRiaXRzIHQgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBTdGRsaWIuSW50NjQudG9faW50IChpbnQ2NCB0IChTdGRsaWIuSW50NjQub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50X29uXzMyYml0cyB0IGJvdW5kID1cbiAgICAoKiBOb3QgYWx3YXlzIHRydWUgd2l0aCB0aGUgSmF2YVNjcmlwdCBiYWNrZW5kLiAqKVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBTdGRsaWIuSW50MzIudG9faW50IChpbnQzMiB0IChTdGRsaWIuSW50MzIub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDY0ID1cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT5cbiAgICAgIGxvZ3hvclxuICAgICAgICAoYml0cyBzdGF0ZSlcbiAgICAgICAgKGxvZ3hvciAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSA2MCkpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50MzIgPVxuICAgIGxldCBvcGVuIFN0ZGxpYi5JbnQzMiBpblxuICAgIGxldCBiaXRzIHN0YXRlID0gb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGZ1biBzdGF0ZSAtPiBsb2d4b3IgKGJpdHMgc3RhdGUpIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSAzMClcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIHN0YXRlID0gU3RkbGliLkludDY0LnRvX2ludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzMyYml0cyBzdGF0ZSA9IFN0ZGxpYi5JbnQzMi50b19pbnQgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzIHN0YXRlID1cbiAgICBTdGRsaWIuSW50NjQudG9fbmF0aXZlaW50IChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMgc3RhdGUgPVxuICAgIFN0ZGxpYi5OYXRpdmVpbnQub2ZfaW50MzIgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgcmFpc2VfY3Jvc3NlZF9ib3VuZHMgbmFtZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCBzdHJpbmdfb2ZfYm91bmQgPVxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiUmFuZG9tLiVzOiBjcm9zc2VkIGJvdW5kcyBbJXMgPiAlc11cIlxuICAgICAgbmFtZVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCBsb3dlcl9ib3VuZClcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgdXBwZXJfYm91bmQpXG4gICAgICAoKVxuICBbQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuICA7O1xuXG4gIGxldCBpbnRfaW5jbCA9XG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnRcIiBsbyBoaSBJbnQudG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBoaSAtIGxvIGluXG4gICAgICBpZiBkaWZmID0gSW50Lm1heF92YWx1ZVxuICAgICAgdGhlbiBsbyArIChmdWxsX3JhbmdlX2ludCBzdGF0ZSBsYW5kIEludC5tYXhfdmFsdWUpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMFxuICAgICAgdGhlbiBsbyArIGludCBzdGF0ZSAoSW50LnN1Y2MgZGlmZilcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50MzJfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50MzIgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDMyXCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBsXG4gICAgICB0aGVuIGFkZCBsbyAoaW50MzIgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9pbmNsID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gU3RkbGliLk5hdGl2ZWludCBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwibmF0aXZlaW50XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX25hdGl2ZWludCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwblxuICAgICAgdGhlbiBhZGQgbG8gKG5hdGl2ZWludCBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50NjRfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDY0XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgICB0aGVuIGFkZCBsbyAoaW50NjQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgdW5pZm9ybWx5IHJhbmRvbSBmbG9hdCBpbiBbMCwgMSkuICopXG4gIGxldCByZWMgcmF3ZmxvYXQgc3RhdGUgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCBzY2FsZSA9IDB4MXAtMzAgaW5cbiAgICAoKiAyXi0zMCAqKVxuICAgIGxldCByMSA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHIyID0gU3RkbGliLmZsb2F0X29mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBsZXQgcmVzdWx0ID0gKChyMSAqLiBzY2FsZSkgKy4gcjIpICouIHNjYWxlIGluXG4gICAgKCogV2l0aCB2ZXJ5IHNtYWxsIHByb2JhYmlsaXR5LCByZXN1bHQgY2FuIHJvdW5kIHVwIHRvIDEuMCwgc28gaW4gdGhhdCBjYXNlLCB3ZSBqdXN0XG4gICAgICAgdHJ5IGFnYWluLiAqKVxuICAgIGlmIHJlc3VsdCA8IDEuMCB0aGVuIHJlc3VsdCBlbHNlIHJhd2Zsb2F0IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGZsb2F0IHN0YXRlIGhpID0gcmF3ZmxvYXQgc3RhdGUgKi4gaGlcblxuICBsZXQgZmxvYXRfcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImZsb2F0XCIgbG8gaGkgU3RkbGliLnN0cmluZ19vZl9mbG9hdDtcbiAgICBsbyArLiBmbG9hdCBzdGF0ZSAoaGkgLS4gbG8pXG4gIDs7XG5lbmRcblxubGV0IGRlZmF1bHQgPSBSYW5kb21fcmVwci5tYWtlX2RlZmF1bHQgU3RhdGUuZGVmYXVsdFxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBpbnQgeCA9IFN0YXRlLmludCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnQzMiB4ID0gU3RhdGUuaW50MzIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgbmF0aXZlaW50IHggPSBTdGF0ZS5uYXRpdmVpbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50NjQgeCA9IFN0YXRlLmludDY0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGZsb2F0IHggPSBTdGF0ZS5mbG9hdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnRfaW5jbCB4IHkgPSBTdGF0ZS5pbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDMyX2luY2wgeCB5ID0gU3RhdGUuaW50MzJfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IG5hdGl2ZWludF9pbmNsIHggeSA9IFN0YXRlLm5hdGl2ZWludF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgaW50NjRfaW5jbCB4IHkgPSBTdGF0ZS5pbnQ2NF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgZmxvYXRfcmFuZ2UgeCB5ID0gU3RhdGUuZmxvYXRfcmFuZ2UgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgY2hhciAoKSA9IFN0YXRlLmNoYXIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGFzY2lpICgpID0gU3RhdGUuYXNjaWkgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc2VlZFxubGV0IGluaXQgc2VlZCA9IGZ1bGxfaW5pdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ID9hbGxvd19pbl90ZXN0cyAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpKVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc1xuIiwiKCoqIEFuIGludGVybmFsLW9ubHkgbW9kdWxlIGZhY3RvcmVkIG91dCBkdWUgdG8gYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gY29yZV9hcnJheVxuICAgIGFuZCBjb3JlX2xpc3QuICBDb250YWlucyBjb2RlIGZvciBwZXJtdXRpbmcgYW4gYXJyYXkuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgPyhwb3MgPSAwKSA/bGVuIHQgPVxuICAoKiBDb3BpZWQgZnJvbSBbT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNvbXBpbGluZ1xuICAgICB3aXRob3V0IGZsYW1iZGEuICopXG4gIGxldCB0b3RhbF9sZW5ndGggPSBsZW5ndGggdCBpblxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBsIC0+IGxcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBsZXQgbnVtX3N3YXBzID0gbGVuIC0gMSBpblxuICBmb3IgaSA9IG51bV9zd2FwcyBkb3dudG8gMSBkb1xuICAgIGxldCB0aGlzX2kgPSBwb3MgKyBpIGluXG4gICAgKCogW3JhbmRvbV9pXSBpcyBkcmF3biBmcm9tIFtwb3MsdGhpc19pXSAqKVxuICAgIGxldCByYW5kb21faSA9IHBvcyArIFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChpICsgMSkgaW5cbiAgICBzd2FwIHQgdGhpc19pIHJhbmRvbV9pXG4gIGRvbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBMZXNzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEVxdWFsIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEdyZWF0ZXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIExlc3M7IEVxdWFsOyBHcmVhdGVyIF0gOiB0IGxpc3QpXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwib3JkZXJpbmcubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIC0+IExlc3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIC0+IEVxdWFsXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgLT4gR3JlYXRlclxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZXNzXCIgfCBcIkxlc3NcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IExlc3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVzc1wiXG4gICAgfCBFcXVhbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJFcXVhbFwiXG4gICAgfCBHcmVhdGVyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkdyZWF0ZXJcIlxuICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJMZXNzXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJFcXVhbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiR3JlYXRlclwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBfb3JkZXJpbmcgPSB0ID1cbiAgICB8IExlc3NcbiAgICB8IEVxdWFsXG4gICAgfCBHcmVhdGVyXG5lbmRcblxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBMZXNzIGVsc2UgaWYgbiA9IDAgdGhlbiBFcXVhbCBlbHNlIEdyZWF0ZXJcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTGVzcyAtPiAtMVxuICB8IEVxdWFsIC0+IDBcbiAgfCBHcmVhdGVyIC0+IDFcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxuXG5pbmNsdWRlIExpc3QxXG5cbigqIFRoaXMgaXRzZWxmIGluY2x1ZGVzIFtMaXN0MF0uICopXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gICAgZnVuICh0eXBlIGFfXzAwMV8pXG4gICAgICAgIDogKCgoYV9fMDAxX1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDFfKSAtPiAoYV9fMDAxXyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwMV8gdCkgLT5cbiAgICAgIGdsb2JhbGl6ZV9saXN0XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGxpc3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9saXN0XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxpc3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBPcl91bmVxdWFsX2xlbmd0aHMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBVbmVxdWFsX2xlbmd0aHNcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDEwXyBiX18wMTFfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTBfIGJfXzAxMV9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxMF8sIGJfXzAxMV8gd2l0aFxuICAgICAgfCBPayBfYV9fMDEyXywgT2sgX2JfXzAxM18gLT4gX2NtcF9fYSBfYV9fMDEyXyBfYl9fMDEzX1xuICAgICAgfCBPayBfLCBfIC0+IC0xXG4gICAgICB8IF8sIE9rIF8gLT4gMVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMsIFVuZXF1YWxfbGVuZ3RocyAtPiAwKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMTdfKSA6ICgoYV9fMDE3XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAxN18gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTRfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAxNV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAxNl8gPSBfb2ZfYV9fMDE0XyBhcmcwX18wMTVfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAxNl8gXVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbF9sZW5ndGhzXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxubGV0IG9mX2xpc3QgdCA9IHRcblxubGV0IHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGxldCBuZXh0X2kgPSBzdHJpZGUgc3RhcnRfaSBpblxuICBsZXQgb3JkZXIgeCB5ID0gT3JkZXJpbmcub2ZfaW50IChjb21wYXJlIHggeSkgaW5cbiAgbGV0IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKCkgPVxuICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlXCJcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RyaWRlX29yZGVyID1cbiAgICBtYXRjaCBvcmRlciBzdGFydF9pIG5leHRfaSB3aXRoXG4gICAgfCBFcXVhbCAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgfCBMZXNzIC0+IGBMZXNzXG4gICAgfCBHcmVhdGVyIC0+IGBHcmVhdGVyXG4gIGluXG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBsZXQgaV90b19zdG9wX29yZGVyID0gb3JkZXIgaSBzdG9wX2kgaW5cbiAgICBtYXRjaCBpX3RvX3N0b3Bfb3JkZXIsIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICB8IExlc3MsIGBMZXNzIHwgR3JlYXRlciwgYEdyZWF0ZXIgLT5cbiAgICAgICgqIGhhdmVuJ3QgeWV0IHJlYWNoZWQgW3N0b3BfaV0uIENvbnRpbnVlLiAqKVxuICAgICAgbGV0IG5leHRfaSA9IHN0cmlkZSBpIGluXG4gICAgICAobWF0Y2ggb3JkZXIgaSBuZXh0X2ksIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICAgICB8IEVxdWFsLCBfIC0+IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKClcbiAgICAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgY2hhbmdlIGRpcmVjdGlvblwiXG4gICAgICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+IGxvb3AgbmV4dF9pIChpIDo6IGFjY3VtKSlcbiAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICgqIHN0ZXBwZWQgcGFzdCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgYWNjdW1cbiAgICB8IEVxdWFsLCBfIC0+XG4gICAgICAoKiByZWFjaGVkIFtzdG9wX2ldLiAgRmluaXNoZWQuICopXG4gICAgICAobWF0Y2ggc3RvcCB3aXRoXG4gICAgICAgfCBgaW5jbHVzaXZlIC0+IGkgOjogYWNjdW1cbiAgICAgICB8IGBleGNsdXNpdmUgLT4gYWNjdW0pXG4gIGluXG4gIGxldCBzdGFydF9pID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X2lcbiAgICB8IGBleGNsdXNpdmUgLT4gbmV4dF9pXG4gIGluXG4gIHJldiAobG9vcCBzdGFydF9pIFtdKVxuOztcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X2kgc3RvcF9pID1cbiAgaWYgc3RyaWRlID0gMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZTogc3RyaWRlIG11c3QgYmUgbm9uLXplcm9cIjtcbiAgcmFuZ2UnIH5jb21wYXJlIH5zdHJpZGU6KGZ1biB4IC0+IHggKyBzdHJpZGUpIH5zdGFydCB+c3RvcCBzdGFydF9pIHN0b3BfaVxuOztcblxubGV0IGhkIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBfIC0+IFNvbWUgeFxuOztcblxubGV0IHRsIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiB0JyAtPiBTb21lIHQnXG47O1xuXG5sZXQgbnRoIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIG50aF9hdXggdCBuID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGEgOjogdCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggdCAobiAtIDEpXG4gICAgaW5cbiAgICBudGhfYXV4IHQgbilcbjs7XG5cbmxldCBudGhfZXhuIHQgbiA9XG4gIG1hdGNoIG50aCB0IG4gd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiTGlzdC5udGhfZXhuICVkIGNhbGxlZCBvbiBsaXN0IG9mIGxlbmd0aCAlZFwiIG4gKGxlbmd0aCB0KSAoKVxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdW5vcmRlcmVkX2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwgfCBsLCBbXSAtPiBsXG4gIHwgXyAtPiByZXZfYXBwZW5kIGwxIGwyXG47O1xuXG5tb2R1bGUgQ2hlY2tfbGVuZ3RoMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIgLT4gbG9vcCBhIGIgKHNoYXJlZF9sZW5ndGggKyAxKVxuICAgICAgfCBbXSwgXyB8IF8sIFtdIC0+IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGIgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDJfZXhuIG5hbWUgbDEgbDIgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2IgfSAtPlxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCJcbiAgICAgIG5hbWVcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYSlcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYilcbiAgICAgICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDIub2ZfbGlzdHMgbDEgbDIgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9XG4gICAgfCBTYW1lX2xlbmd0aCBvZiBpbnRcbiAgICB8IFVuZXF1YWxfbGVuZ3RocyBvZlxuICAgICAgICB7IHNoYXJlZF9sZW5ndGggOiBpbnRcbiAgICAgICAgOyB0YWlsX29mX2EgOiAnYSBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9iIDogJ2IgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYyA6ICdjIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgbDMgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgYyBzaGFyZWRfbGVuZ3RoID1cbiAgICAgIG1hdGNoIGEsIGIsIGMgd2l0aFxuICAgICAgfCBbXSwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIsIF8gOjogYyAtPiBsb29wIGEgYiBjIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBbXSwgXyB8IF8sIF8sIFtdIC0+XG4gICAgICAgIFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGI7IHRhaWxfb2ZfYyA9IGMgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBsMyAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDNfZXhuIG5hbWUgbDEgbDIgbDMgPVxuICBtYXRjaCBDaGVja19sZW5ndGgzLm9mX2xpc3RzIGwxIGwyIGwzIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2I7IHRhaWxfb2ZfYyB9IC0+XG4gICAgbGV0IG4xID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EgaW5cbiAgICBsZXQgbjIgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYiBpblxuICAgIGxldCBuMyA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9jIGluXG4gICAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZCB8fCAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgbjIgbjMgKClcbjs7XG5cbmxldCBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiBPcl91bmVxdWFsX2xlbmd0aHMuT2sgKGYgbDEgbDIgbDMpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIF8gLT4gVW5lcXVhbF9sZW5ndGhzXG47O1xuXG5sZXQgaXRlcjIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihpdGVyMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgaXRlcjJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJpdGVyMl9leG5cIiBsMSBsMjtcbiAgaXRlcjJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KHJldl9tYXAyX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCByZXZfbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcInJldl9tYXAyX2V4blwiIGwxIGwyO1xuICByZXZfbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGZvbGQyIGwxIGwyIH5pbml0IH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9sZDJfb2sgfmluaXQgfmYpIFtAbm9udGFpbF1cblxubGV0IGZvbGQyX2V4biBsMSBsMiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9sZDJfZXhuXCIgbDEgbDI7XG4gIGZvbGQyX29rIGwxIGwyIH5pbml0IH5mXG47O1xuXG5sZXQgZm9sZF9yaWdodDIgbDEgbDIgfmYgfmluaXQgPVxuICBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb2xkX3JpZ2h0Ml9vayB+ZiB+aW5pdCkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfcmlnaHQyX2V4biBsMSBsMiB+ZiB+aW5pdCA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9sZF9yaWdodDJfZXhuXCIgbDEgbDI7XG4gIGZvbGRfcmlnaHQyX29rIGwxIGwyIH5mIH5pbml0XG47O1xuXG5sZXQgZm9yX2FsbDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb3JfYWxsMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgZm9yX2FsbDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb3JfYWxsMl9leG5cIiBsMSBsMjtcbiAgZm9yX2FsbDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBleGlzdHMyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZXhpc3RzMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgZXhpc3RzMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImV4aXN0czJfZXhuXCIgbDEgbDI7XG4gIGV4aXN0czJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBlcXVhbCBhID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBiIDo6IGJzIC0+IGVxdWFsIGEgYiB8fCBsb29wIGVxdWFsIGEgYnNcbiAgaW5cbiAgbG9vcCBlcXVhbCBhIHRcbjs7XG5cbigqIFRoaXMgaXMgYSBjb3B5IG9mIHRoZSBjb2RlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggYW4gZXh0cmEgZXRhLWV4cGFuc2lvbiB0b1xuICAgYXZvaWQgY3JlYXRpbmcgcGFydGlhbCBjbG9zdXJlcyAoc2hvd2VkIHVwIGZvciBbZmlsdGVyXSkgaW4gcHJvZmlsaW5nKS4gKilcbmxldCByZXZfZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVjIGZpbmQgfmYgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gZmluZCB+ZiAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCB+ZiBhY2N1IGxcbiAgaW5cbiAgZmluZCB+ZiBbXSB0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSByZXYgKHJldl9maWx0ZXIgdCB+ZilcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBsXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICBpblxuICBsb29wIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwX2V4blxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgbG9vcCBsXG4gIGluXG4gIGxvb3AgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJlYyBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgeCA6OiB0IC0+IGlmIGYgeCB0aGVuIHggZWxzZSBmaW5kX2V4biB0IH5mXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiBpIHggdGhlbiBTb21lIChpLCB4KSBlbHNlIGxvb3AgKGkgKyAxKSBsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgZmluZGlfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBsKVxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXBpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgJiYgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgfHwgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbigqKiBGb3IgdGhlIGNvbnRhaW5lciBpbnRlcmZhY2UuICopXG5sZXQgZm9sZF9sZWZ0ID0gZm9sZFxuXG5sZXQgb2ZfYXJyYXkgPSBBcnJheS50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBBcnJheS5vZl9saXN0XG5sZXQgdG9fbGlzdCB0ID0gdFxuXG5sZXQgbWF4X25vbl90YWlsY2FsbCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMV8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQncyBzbWFsbC4gVGhpc1xuICAgICBudW1iZXIgd2FzIHRha2VuIGZyb20gb2NhbWwjc3RkbGliL2xpc3QubWwgd2hpY2ggaXMgYWxzbyBlcXVhbCB0byB0aGUgZGVmYXVsdCBsaW1pdFxuICAgICBvZiByZWN1cnNpdmUgY2FsbCBpbiB0aGUganNfb2Zfb2NhbWwgY29tcGlsZXIgYmVmb3JlIHN3aXRjaGluZyB0byB0cmFtcG9saW5lLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG47O1xuXG4oKiogVGFpbCByZWN1cnNpdmUgdmVyc2lvbnMgb2Ygc3RhbmRhcmQgW0xpc3RdIG1vZHVsZSAqKVxuXG5sZXQgdGFpbF9hcHBlbmQgbDEgbDIgPSByZXZfYXBwZW5kIChyZXYgbDEpIGwyXG5cbigqIFRoZXJlIGFyZSBhIGZldyBvcHRpbWl6ZWQgbGlzdCBvcGVyYXRpb25zIGhlcmUsIGluY2x1ZGluZyBhcHBlbmQgYW5kIG1hcC4gIFRoZXJlIGFyZVxuICAgYmFzaWNhbGx5IHR3byBvcHRpbWl6YXRpb25zIGluIHBsYXk6IGxvb3AgdW5yb2xsaW5nLCBhbmQgZHluYW1pYyBzd2l0Y2hpbmcgYmV0d2VlblxuICAgc3RhY2sgYW5kIGhlYXAgYWxsb2NhdGlvbi5cblxuICAgVGhlIGxvb3AtdW5yb2xsaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZCwgd2UganVzdCB1bnJvbGwgNSBsZXZlbHMgb2YgdGhlIGxvb3AuICBUaGlzIG1ha2VzXG4gICBlYWNoIGl0ZXJhdGlvbiBmYXN0ZXIsIGFuZCBhbHNvIHJlZHVjZXMgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgY29uc3VtZWQgcGVyIGxpc3RcbiAgIGVsZW1lbnQuXG5cbiAgIFRoZSBkeW5hbWljIHN3aXRjaGluZyBpcyBkb25lIGJ5IGNvdW50aW5nIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzLCBhbmQgdGhlblxuICAgc3dpdGNoaW5nIHRvIHRoZSBcInNsb3dcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIHdlIGV4Y2VlZCBhIGdpdmVuIGxpbWl0LiAgVGhpcyBtZWFucyB0aGF0XG4gICBzaG9ydCBsaXN0cyB1c2UgdGhlIGZhc3Qgc3RhY2stYWxsb2NhdGlvbiBtZXRob2QsIGFuZCBsb25nIGxpc3RzIHVzZSBhIHNsb3dlciBvbmUgdGhhdFxuICAgZG9lc24ndCByZXF1aXJlIHN0YWNrIHNwYWNlLiAqKVxubGV0IHJlYyBjb3VudF9hcHBlbmQgbDEgbDIgY291bnQgPVxuICBtYXRjaCBsMiB3aXRoXG4gIHwgW10gLT4gbDFcbiAgfCBfIC0+XG4gICAgKG1hdGNoIGwxIHdpdGhcbiAgICAgfCBbXSAtPiBsMlxuICAgICB8IFsgeDEgXSAtPiB4MSA6OiBsMlxuICAgICB8IFsgeDE7IHgyIF0gLT4geDEgOjogeDIgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDMgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiBsMlxuICAgICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiBsMlxuICAgICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgICAgeDFcbiAgICAgICA6OiB4MlxuICAgICAgIDo6IHgzXG4gICAgICAgOjogeDRcbiAgICAgICA6OiB4NVxuICAgICAgIDo6XG4gICAgICAgKGlmIGNvdW50ID4gbWF4X25vbl90YWlsY2FsbFxuICAgICAgICB0aGVuIHRhaWxfYXBwZW5kIHRsIGwyXG4gICAgICAgIGVsc2UgY291bnRfYXBwZW5kIHRsIGwyIChjb3VudCArIDEpKSlcbjs7XG5cbmxldCBhcHBlbmQgbDEgbDIgPSBjb3VudF9hcHBlbmQgbDEgbDIgMFxuXG4oKiBBbiBvcmRpbmFyeSB0YWlsIHJlY3Vyc2l2ZSBtYXAgYnVpbGRzIHVwIGFuIGludGVybWVkaWF0ZSAocmV2ZXJzZWQpIHJlcHJlc2VudGF0aW9uLFxuICAgd2l0aCBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0IHBlciBlbGVtZW50LiBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIGluc3RlYWQgY2h1bmtzXG4gICA5IG9iamVjdHMgaW50byBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0LCByZWR1Y2luZyBhbGxvY2F0aW9uIGFuZCBwZXJmb3JtYW5jZSBjb3N0c1xuICAgYWNjb3JkaW5nbHkuIE5vdGUgdGhhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGxpc3QgaXMgZG9uZSBieSB0aGUgc3RkbGliJ3MgbWFwXG4gICBmdW5jdGlvbi4gKilcbmxldCB0YWlsX21hcCB4cyB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIHJpc2UgeXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4geXNcbiAgICB8ICh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicyAtPlxuICAgICAgcmlzZSAoeTAgOjogeTEgOjogeTIgOjogeTMgOjogeTQgOjogeTUgOjogeTYgOjogeTcgOjogeTggOjogeXMpIGJzXG4gIGluXG4gIGxldCByZWMgZGl2ZSBicyA9IGZ1bmN0aW9uXG4gICAgfCB4MCA6OiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB4NiA6OiB4NyA6OiB4OCA6OiB4cyAtPlxuICAgICAgbGV0IHkwID0gZiB4MCBpblxuICAgICAgbGV0IHkxID0gZiB4MSBpblxuICAgICAgbGV0IHkyID0gZiB4MiBpblxuICAgICAgbGV0IHkzID0gZiB4MyBpblxuICAgICAgbGV0IHk0ID0gZiB4NCBpblxuICAgICAgbGV0IHk1ID0gZiB4NSBpblxuICAgICAgbGV0IHk2ID0gZiB4NiBpblxuICAgICAgbGV0IHk3ID0gZiB4NyBpblxuICAgICAgbGV0IHk4ID0gZiB4OCBpblxuICAgICAgZGl2ZSAoKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzKSB4c1xuICAgIHwgeHMgLT4gcmlzZSAobm9udGFpbF9tYXAgfmYgeHMpIGJzXG4gIGluXG4gIGxldCByZXMgPSBkaXZlIFtdIHhzIGluXG4gIHJlc1xuOztcblxubGV0IHJlYyBjb3VudF9tYXAgfmY6KGYgW0Bsb2NhbF0pIGwgY3RyID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBbIHgxIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgWyBmMSBdXG4gIHwgWyB4MTsgeDIgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgWyBmMTsgZjIgXVxuICB8IFsgeDE7IHgyOyB4MyBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgWyBmMTsgZjI7IGYzIF1cbiAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgWyBmMTsgZjI7IGYzOyBmNCBdXG4gIHwgeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogdGwgLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgbGV0IGY1ID0gZiB4NSBpblxuICAgIGYxXG4gICAgOjogZjJcbiAgICA6OiBmM1xuICAgIDo6IGY0XG4gICAgOjogZjVcbiAgICA6OiAoaWYgY3RyID4gbWF4X25vbl90YWlsY2FsbCB0aGVuIHRhaWxfbWFwIH5mIHRsIGVsc2UgY291bnRfbWFwIH5mIHRsIChjdHIgKyAxKSlcbjs7XG5cbmxldCBtYXAgbCB+ZiA9IGNvdW50X21hcCB+ZiBsIDBcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCAoID4+fCApIGwgZiA9IG1hcCBsIH5mXG5sZXQgbWFwMl9vayBsMSBsMiB+ZiA9IHJldiAocmV2X21hcDJfb2sgbDEgbDIgfmYpXG5sZXQgbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KG1hcDJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IG1hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJtYXAyX2V4blwiIGwxIGwyO1xuICBtYXAyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmYgPVxuICBsZXQgcmVjIGxvb3AgbDEgbDIgbDMgYWMgPVxuICAgIG1hdGNoIGwxLCBsMiwgbDMgd2l0aFxuICAgIHwgW10sIFtdLCBbXSAtPiBhY1xuICAgIHwgeDEgOjogbDEsIHgyIDo6IGwyLCB4MyA6OiBsMyAtPiBsb29wIGwxIGwyIGwzIChmIHgxIHgyIHgzIDo6IGFjKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbG9vcCBsMSBsMiBsMyBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmV2X21hcDMgbDEgbDIgbDMgfmYgPSBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mOihyZXZfbWFwM19vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgcmV2X21hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJyZXZfbWFwM19leG5cIiBsMSBsMiBsMztcbiAgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCBtYXAzX29rIGwxIGwyIGwzIH5mID0gcmV2IChyZXZfbWFwM19vayBsMSBsMiBsMyB+ZilcbmxldCBtYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoobWFwM19vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgbWFwM19leG4gbDEgbDIgbDMgfmYgPVxuICBjaGVja19sZW5ndGgzX2V4biBcIm1hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIG1hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmQgbDEgbDIgfmYgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT4gbDJcbiAgfCBoIDo6IHQgLT4gcmV2X21hcF9hcHBlbmQgfmYgdCAoZiBoIDo6IGwyKVxuOztcblxubGV0IHVuemlwIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDJcbiAgICB8ICh4LCB5KSA6OiB0bCAtPiBsb29wIHRsICh4IDo6IGwxKSAoeSA6OiBsMilcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdXG47O1xuXG5sZXQgdW56aXAzIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiBsMyA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDIsIGwzXG4gICAgfCAoeCwgeSwgeikgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpICh6IDo6IGwzKVxuICBpblxuICBsb29wIChyZXYgbGlzdCkgW10gW10gW11cbjs7XG5cbmxldCB6aXBfZXhuIGwxIGwyID1cbiAgdHJ5IG1hcDJfb2sgfmY6KGZ1biBhIGIgLT4gYSwgYikgbDEgbDIgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluIHppcF9leG46ICVkIDw+ICVkXCIgKGxlbmd0aCBsMSkgKGxlbmd0aCBsMikgKClcbjs7XG5cbmxldCB6aXAgbDEgbDIgPSBtYXAyIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyXG5cbigqKiBBZGRpdGlvbmFsIGxpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmV2X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGggOjogdCAtPiBsb29wIChpICsgMSkgKGYgaSBoIDo6IGFjYykgdFxuICBpblxuICBsb29wIDAgW10gbCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwaSBsIH5mID0gcmV2IChyZXZfbWFwaSBsIH5mKVxuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGl0ZXJpIGwgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCBsIH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIHNuZCAoZm9sZCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHYgLT4gaSArIDEsIGYgaSBhY2MgdikpXG47O1xuXG5sZXQgZmlsdGVyaSBsIH5mID1cbiAgcmV2IChmb2xkaSBsIH5mOihmdW4gcG9zIGFjYyB4IC0+IGlmIGYgcG9zIHggdGhlbiB4IDo6IGFjYyBlbHNlIGFjYykgfmluaXQ6W10pXG47O1xuXG5sZXQgcmVkdWNlIGwgfmYgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgaGQgOjogdGwgLT4gU29tZSAoZm9sZCB+aW5pdDpoZCB+ZiB0bClcbjs7XG5cbmxldCByZWR1Y2VfZXhuIGwgfmYgPVxuICBtYXRjaCByZWR1Y2UgbCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCByZWR1Y2VfYmFsYW5jZWQgbCB+ZiA9XG4gICgqIENhbGwgdGhlIFwic2l6ZVwiIG9mIGEgdmFsdWUgdGhlIG51bWJlciBvZiBsaXN0IGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGNvbWJpbmVkIGludG9cbiAgICAgaXQgdmlhIGNhbGxzIHRvIFtmXS4gIFdlIHByb2NlZWQgYnkgdXNpbmcgW2ZdIHRvIGNvbWJpbmUgZWxlbWVudHMgaW4gdGhlIGFjY3VtdWxhdG9yXG4gICAgIG9mIHRoZSBzYW1lIHNpemUgdW50aWwgd2UgY2FuJ3QgY29tYmluZSBhbnkgbW9yZSwgdGhlbiBnZXR0aW5nIGEgbmV3IGVsZW1lbnQgZnJvbSB0aGVcbiAgICAgaW5wdXQgbGlzdCBhbmQgcmVwZWF0aW5nLlxuXG4gICAgIFdpdGggdGhpcyBzdHJhdGVneSwgaW4gdGhlIGFjY3VtdWxhdG9yOlxuICAgICAtIHdlIG9ubHkgZXZlciBoYXZlIGVsZW1lbnRzIG9mIHNpemVzIGEgcG93ZXIgb2YgdHdvXG4gICAgIC0gd2UgbmV2ZXIgaGF2ZSBtb3JlIHRoYW4gb25lIGVsZW1lbnQgb2YgZWFjaCBzaXplXG4gICAgIC0gdGhlIHN1bSBvZiBhbGwgdGhlIGVsZW1lbnQgc2l6ZXMgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZFxuXG4gICAgIFRoZXNlIGNvbmRpdGlvbnMgZW5mb3JjZSB0aGF0IGxpc3Qgb2YgZWxlbWVudHMgb2YgZWFjaCBzaXplIGlzIHByZWNpc2VseSB0aGUgYmluYXJ5XG4gICAgIGV4cGFuc2lvbiBvZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnN1bWVkOiBpZiB5b3UndmUgY29uc3VtZWQgMTMgPSAwYjExMDFcbiAgICAgZWxlbWVudHMsIHlvdSBoYXZlIG9uZSBlbGVtZW50IG9mIHNpemUgOCwgb25lIG9mIHNpemUgNCwgYW5kIG9uZSBvZiBzaXplIDEuICBIZW5jZVxuICAgICB3aGVuIGEgbmV3IGVsZW1lbnQgY29tZXMgYWxvbmcsIHRoZSBudW1iZXIgb2YgY29tYmluaW5ncyB5b3UgbmVlZCB0byBkbyBpcyB0aGUgbnVtYmVyXG4gICAgIG9mIHRyYWlsaW5nIDFzIGluIHRoZSBiaW5hcnkgZXhwYW5zaW9uIG9mIFtudW1dLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgaGF2ZVxuICAgICBhbHJlYWR5IGdvbmUgaW50byB0aGUgYWNjdW11bGF0b3IuICBUaGUgYWNjdW11bGF0b3IgaXMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHNpemUsIHNvXG4gICAgIHRoZSBuZXh0IGVsZW1lbnQgdG8gY29tYmluZSB3aXRoIGlzIGFsd2F5cyB0aGUgaGVhZCBvZiB0aGUgbGlzdC4gKilcbiAgbGV0IHJlYyBzdGVwX2FjY3VtIG51bSBhY2MgeCA9XG4gICAgaWYgbnVtIGxhbmQgMSA9IDBcbiAgICB0aGVuIHggOjogYWNjXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIE5ldyBlbGVtZW50cyBmcm9tIGxhdGVyIGluIHRoZSBpbnB1dCBsaXN0IGdvIG9uIHRoZSBmcm9udCBvZiB0aGUgYWNjdW11bGF0b3IsIHNvXG4gICAgICAgICB0aGUgYWNjdW11bGF0b3IgaXMgaW4gcmV2ZXJzZSBvcmRlciB3cnQgdGhlIG9yaWdpbmFsIGxpc3Qgb3JkZXIsIGhlbmNlIFtmIHkgeF1cbiAgICAgICAgIGluc3RlYWQgb2YgW2YgeCB5XS4gKilcbiAgICAgIHwgeSA6OiB5cyAtPiBzdGVwX2FjY3VtIChudW0gYXNyIDEpIHlzIChmIHkgeCkpXG4gIGluXG4gICgqIEV4cGVyaW1lbnRhbGx5LCBpbmxpbmluZyBbZm9sZGldIGFuZCB1bnJvbGxpbmcgdGhpcyBsb29wIGEgZmV3IHRpbWVzIGNhbiByZWR1Y2VcbiAgICAgcnVudGltZSBkb3duIHRvIGEgdGhpcmQgYW5kIGFsbG9jYXRpb24gdG8gMS8xNnRoIG9yIHNvIGluIHRoZSBtaWNyb2JlbmNobWFya3MgYmVsb3cuXG4gICAgIEhvd2V2ZXIsIGluIG1vc3QgdXNlIGNhc2VzIFtmXSBpcyBsaWtlbHkgdG8gYmUgZXhwZW5zaXZlIChvdGhlcndpc2Ugd2h5IGRvIHlvdSBjYXJlXG4gICAgIGFib3V0IHRoZSBvcmRlciBvZiByZWR1Y3Rpb24/KSBzbyB0aGUgb3ZlcmhlYWQgb2YgdGhpcyBmdW5jdGlvbiBpdHNlbGYgZG9lc24ndCByZWFsbHlcbiAgICAgbWF0dGVyLiBJZiB5b3UgY29tZSB1cCB3aXRoIGEgdXNlLWNhc2Ugd2hlcmUgaXQgZG9lcywgdGhlbiB0aGF0J3Mgc29tZXRoaW5nIHlvdSBtaWdodFxuICAgICB3YW50IHRvIHRyeTogc2VlIGhnIGxvZyAtcHIgNDllZjA2NWY0MjlkLiAqKVxuICBtYXRjaCBmb2xkaSBsIH5pbml0OltdIH5mOnN0ZXBfYWNjdW0gd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IFNvbWUgKGZvbGQgeHMgfmluaXQ6eCB+ZjooZnVuIHggeSAtPiBmIHkgeCkpXG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlX2JhbGFuY2VkIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9iYWxhbmNlZF9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgZ3JvdXBpIGwgfmJyZWFrID1cbiAgbGV0IGdyb3VwcyA9XG4gICAgZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIHggLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IFtdIC0+IFsgWyB4IF0gXVxuICAgICAgfCBjdXJyZW50X2dyb3VwIDo6IHRsIC0+XG4gICAgICAgIGlmIGJyZWFrIGkgKGhkX2V4biBjdXJyZW50X2dyb3VwKSB4XG4gICAgICAgIHRoZW4gWyB4IF0gOjogY3VycmVudF9ncm91cCA6OiB0bCAoKiBzdGFydCBuZXcgZ3JvdXAgKilcbiAgICAgICAgZWxzZSAoeCA6OiBjdXJyZW50X2dyb3VwKSA6OiB0bClcbiAgICAoKiBleHRlbmQgY3VycmVudCBncm91cCAqKVxuICBpblxuICBtYXRjaCBncm91cHMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgbCAtPiByZXZfbWFwIGwgfmY6cmV2XG47O1xuXG5sZXQgZ3JvdXAgbCB+YnJlYWsgPSBncm91cGkgbCB+YnJlYWs6KGZ1biBfIHggeSAtPiBicmVhayB4IHkpIFtAbm9udGFpbF1cblxubGV0IHNvcnRfYW5kX2dyb3VwIGwgfmNvbXBhcmUgPVxuICBsIHw+IHN0YWJsZV9zb3J0IH5jb21wYXJlIHw+IGdyb3VwIH5icmVhazooZnVuIHggeSAtPiBjb21wYXJlIHggeSA8PiAwKVxuOztcblxubGV0IGNvbmNhdF9tYXAgbCB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChyZXZfYXBwZW5kIChmIGhkKSBhY2MpIHRsXG4gIGluXG4gIGxldCByZXMgPSBhdXggW10gbCBpblxuICByZXNcbjs7XG5cbmxldCBjb25jYXRfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBhdXggY29udCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChjb250ICsgMSkgKHJldl9hcHBlbmQgKGYgY29udCBoZCkgYWNjKSB0bFxuICBpblxuICBhdXggMCBbXSBsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtZXJnZSBsMSBsMiB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBhY2MgbDJcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGFjYyBsMVxuICAgIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjb21wYXJlIGgxIGgyIDw9IDAgdGhlbiBsb29wIChoMSA6OiBhY2MpIHQxIGwyIGVsc2UgbG9vcCAoaDIgOjogYWNjKSBsMSB0MlxuICBpblxuICBsb29wIFtdIGwxIGwyIFtAbm9udGFpbF1cbjs7XG5cbm1vZHVsZSBDYXJ0ZXNpYW5fcHJvZHVjdCA9IHN0cnVjdFxuICAoKiBXZSBhcmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZSBleHBvcnQgZnJvbSBmdW5jdG9ycyBzbyB0aGF0IHdlIGRvbid0IGFjY2lkZW50YWxseVxuICAgICByZWJpbmQgbW9yZSBlZmZpY2llbnQgbGlzdC1zcGVjaWZpYyBmdW5jdGlvbnMuICopXG5cbiAgbGV0IGJpbmQgPSBjb25jYXRfbWFwXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcDIgYSBiIH5mID0gY29uY2F0X21hcCBhIH5mOihmdW4geCAtPiBtYXAgYiB+ZjooZnVuIHkgLT4gZiB4IHkpKVxuICBsZXQgcmV0dXJuIHggPSBbIHggXVxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgdCAoZiBbQGxvY2FsXSkgPSBiaW5kIHQgfmZcblxuICBvcGVuIHN0cnVjdFxuICAgIG1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBsZXQgbWFwMiA9IG1hcDJcbiAgICAgIGVuZClcblxuICAgIG1vZHVsZSBNb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGxldCBhbGwgPSBNb25hZC5hbGxcbiAgbGV0IGFsbF91bml0ID0gTW9uYWQuYWxsX3VuaXRcbiAgbGV0IGlnbm9yZV9tID0gTW9uYWQuaWdub3JlX21cbiAgbGV0IGpvaW4gPSBNb25hZC5qb2luXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG4gIGVuZFxuXG4gIGxldCBhcHBseSA9IEFwcGxpY2F0aXZlLmFwcGx5XG4gIGxldCBib3RoID0gQXBwbGljYXRpdmUuYm90aFxuICBsZXQgbWFwMyA9IEFwcGxpY2F0aXZlLm1hcDNcbiAgbGV0ICggPCo+ICkgPSBBcHBsaWNhdGl2ZS4oIDwqPiApXG4gIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgICBsZXQgKCA8KiApID0gQXBwbGljYXRpdmUuKCA8KiApXG4gIGVuZFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoQ2FydGVzaWFuX3Byb2R1Y3QgOiBNb25hZC5TX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbigqKiByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0X2V4biBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4geFxuICB8IF8gOjogdGwgLT4gbGFzdF9leG4gdGxcbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubGFzdFwiXG47O1xuXG4oKiogb3B0aW9uYWxseSByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0IGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbIHggXSAtPiBTb21lIHhcbiAgfCBfIDo6IHRsIC0+IGxhc3QgdGxcbiAgfCBbXSAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGlzX3ByZWZpeCBsaXN0IH5wcmVmaXggfmVxdWFsID1cbiAgbWF0Y2ggcHJlZml4IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgaGQgOjogdGwgLT5cbiAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgIHwgW10gLT4gZmFsc2VcbiAgICAgfCBoZCcgOjogdGwnIC0+IGVxdWFsIGhkIGhkJyAmJiBpc19wcmVmaXggdGwnIH5wcmVmaXg6dGwgfmVxdWFsKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGExIDo6IHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgYTEgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhMiA6OiB0IC0+IGlmIGVxdWFsIGExIGEyIHRoZW4gU29tZSAoYTEsIGEyKSBlbHNlIGxvb3AgYTIgdFxuICAgIGluXG4gICAgbG9vcCBhMSB0IFtAbm9udGFpbF1cbjs7XG5cbigqIHJldHVybnMgbGlzdCB3aXRob3V0IGFkamFjZW50IGR1cGxpY2F0ZXMgKilcbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyA/KHdoaWNoX3RvX2tlZXAgPSBgTGFzdCkgbGlzdCB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgdG9fa2VlcCBhY2N1bSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB0b19rZWVwIDo6IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgZXF1YWwgaGQgdG9fa2VlcFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0b19rZWVwID1cbiAgICAgICAgICBtYXRjaCB3aGljaF90b19rZWVwIHdpdGhcbiAgICAgICAgICB8IGBGaXJzdCAtPiB0b19rZWVwXG4gICAgICAgICAgfCBgTGFzdCAtPiBoZFxuICAgICAgICBpblxuICAgICAgICBsb29wIHRvX2tlZXAgYWNjdW0gdGwpXG4gICAgICBlbHNlIGxvb3AgaGQgKHRvX2tlZXAgOjogYWNjdW0pIHRsXG4gIGluXG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gcmV2IChsb29wIGhkIFtdIHRsKVxuOztcblxuKCoqIHJldHVybnMgc29ydGVkIHZlcnNpb24gb2YgbGlzdCB3aXRoIGR1cGxpY2F0ZXMgcmVtb3ZlZCAqKVxubGV0IGRlZHVwX2FuZF9zb3J0IGxpc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3QgKCogcGVyZm9ybWFuY2UgaGFjayAqKVxuICB8IF8gLT5cbiAgICBsZXQgZXF1YWwgeCB4JyA9IGNvbXBhcmUgeCB4JyA9IDAgaW5cbiAgICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsaXN0IGluXG4gICAgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgfmVxdWFsIHNvcnRlZCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9hX2R1cCBsIH5jb21wYXJlID1cbiAgbGV0IHNvcnRlZCA9IHNvcnQgbCB+Y29tcGFyZSBpblxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IE5vbmVcbiAgICB8IGhkMSA6OiAoaGQyIDo6IF8gYXMgdGwpIC0+IGlmIGNvbXBhcmUgaGQxIGhkMiA9IDAgdGhlbiBTb21lIGhkMSBlbHNlIGxvb3AgdGxcbiAgaW5cbiAgbG9vcCBzb3J0ZWQgW0Bub250YWlsXVxuOztcblxubGV0IGNvbnRhaW5zX2R1cCBsc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBmaW5kX2FfZHVwIGxzdCB+Y29tcGFyZSB3aXRoXG4gIHwgU29tZSBfIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZmluZF9hbGxfZHVwcyBsIH5jb21wYXJlID1cbiAgKCogV2UgYWRkIHRoaXMgcmV2ZXJzYWwsIHNvIHdlIGNhbiBza2lwIGEgW3Jldl0gYXQgdGhlIGVuZC4gV2UgY291bGQgc2tpcFxuICAgICBbcmV2XSBhbnl3YXkgc2luY2Ugd2UgZG9uIG5vdCBnaXZlIGFueSBvcmRlcmluZyBndWFyYW50ZWVzLCBidXQgaXQgaXNcbiAgICAgbmljZSB0byBnZXQgcmVzdWx0cyBpbiBuYXR1cmFsIG9yZGVyLiAqKVxuICBsZXQgY29tcGFyZSBhIGIgPSBjb21wYXJlIGIgYSBpblxuICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsIGluXG4gICgqIFdhbGsgdGhlIGxpc3QgYW5kIHJlY29yZCB0aGUgZmlyc3Qgb2YgZWFjaCBjb25zZWN1dGl2ZSBydW4gb2YgaWRlbnRpY2FsIGVsZW1lbnRzICopXG4gIGxldCByZWMgbG9vcCBzb3J0ZWQgcHJldiB+YWxyZWFkeV9yZWNvcmRlZCBhY2MgPVxuICAgIG1hdGNoIHNvcnRlZCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBjb21wYXJlIHByZXYgaGQgPD4gMFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIGFjY1xuICAgICAgZWxzZSBpZiBhbHJlYWR5X3JlY29yZGVkXG4gICAgICB0aGVuIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSBhY2NcbiAgICAgIGVsc2UgbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDp0cnVlIChoZCA6OiBhY2MpXG4gIGluXG4gIG1hdGNoIHNvcnRlZCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWMgYWxsX2VxdWFsX3RvIHQgdiB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgeCA6OiB4cyAtPiBlcXVhbCB4IHYgJiYgYWxsX2VxdWFsX3RvIHhzIHYgfmVxdWFsXG47O1xuXG5sZXQgYWxsX2VxdWFsIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogeHMgLT4gaWYgYWxsX2VxdWFsX3RvIHhzIHggfmVxdWFsIHRoZW4gU29tZSB4IGVsc2UgTm9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudCkgW0Bub250YWlsXVxuOztcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGFzc2VydCAoaSA+PSAwKTtcbiAgICBpZiBpID0gMCB0aGVuIGFjY3VtIGVsc2UgbG9vcCAoaSAtIDEpIChmIChpIC0gMSkgOjogYWNjdW0pXG4gIGluXG4gIGxvb3AgbiBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmV2X2ZpbHRlcl9tYXAgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgbCBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyX21hcCBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcCBsIH5mKVxuXG5sZXQgcmV2X2ZpbHRlcl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaSBoZCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gbG9vcCAoaSArIDEpIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgMCBsIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcGkgbCB+ZilcbmxldCBmaWx0ZXJfb3B0IGwgPSBmaWx0ZXJfbWFwIGwgfmY6Rm4uaWRcblxubGV0IHBhcnRpdGlvbjNfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kIHRyZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kLCByZXYgdHJkXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgYEZzdCB5IC0+IGxvb3AgdCAoeSA6OiBmc3QpIHNuZCB0cmRcbiAgICAgICB8IGBTbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkgdHJkXG4gICAgICAgfCBgVHJkIHkgLT4gbG9vcCB0IGZzdCBzbmQgKHkgOjogdHJkKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCBmIHggOiBfIEVpdGhlci50ID0gaWYgZiB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4IGluXG4gIHBhcnRpdGlvbl9tYXAgdCB+ZiBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcGFydGl0aW9uX3Jlc3VsdCB0ID0gcGFydGl0aW9uX21hcCB0IH5mOlJlc3VsdC50b19laXRoZXJcblxubW9kdWxlIEFzc29jID0gc3RydWN0XG4gIHR5cGUgJ2Ega2V5ID0gKCdhW0B0YWcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX2tleV90YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQga2V5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGtleSA9XG4gICAgZnVuIF9vZl9hX18wMThfIC0+IF9vZl9hX18wMThfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2Zfa2V5IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGtleSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biBfb2ZfYV9fMDIwXyAtPiBfb2ZfYV9fMDIwX1xuICA7O1xuXG4gIGxldCBrZXlfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGtleSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnXG4gICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIHZhbHVlID0gKCdhW0B0YWcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3ZhbHVlX3RhZyA9IExpc3QgW11dKVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB2YWx1ZV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB2YWx1ZSA9XG4gICAgZnVuIF9vZl9hX18wMjFfIC0+IF9vZl9hX18wMjFfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdmFsdWUgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdmFsdWUgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAyM18gLT4gX29mX2FfXzAyM19cbiAgOztcblxuICBsZXQgdmFsdWVfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdmFsdWUgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWdcbiAgICAgICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgKCgnYSBrZXkgKiAnYiB2YWx1ZSkgbGlzdFtAdGFnIFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY190YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMzJfID0gXCJsaXN0Lm1sLkFzc29jLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDI0XyBfb2ZfYl9fMDI1XyB4X18wMzNfIC0+XG4gICAgICBsaXN0X29mX3NleHBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wMjdfOyBhcmcxX18wMjhfIF0gLT5cbiAgICAgICAgICAgIGxldCByZXMwX18wMjlfID0ga2V5X29mX3NleHAgX29mX2FfXzAyNF8gYXJnMF9fMDI3X1xuICAgICAgICAgICAgYW5kIHJlczFfXzAzMF8gPSB2YWx1ZV9vZl9zZXhwIF9vZl9iX18wMjVfIGFyZzFfXzAyOF8gaW5cbiAgICAgICAgICAgIHJlczBfXzAyOV8sIHJlczFfXzAzMF9cbiAgICAgICAgICB8IHNleHBfXzAzMV8gLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMzJfXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgc2V4cF9fMDMxXylcbiAgICAgICAgeF9fMDMzX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfYV9fMDM0XyBfb2ZfYl9fMDM1XyB4X18wNDBfIC0+XG4gICAgICBzZXhwX29mX2xpc3RcbiAgICAgICAgKGZ1biAoYXJnMF9fMDM2XywgYXJnMV9fMDM3XykgLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAzOF8gPSBzZXhwX29mX2tleSBfb2ZfYV9fMDM0XyBhcmcwX18wMzZfXG4gICAgICAgICAgIGFuZCByZXMxX18wMzlfID0gc2V4cF9vZl92YWx1ZSBfb2ZfYl9fMDM1XyBhcmcxX18wMzdfIGluXG4gICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzAzOF87IHJlczFfXzAzOV8gXSlcbiAgICAgICAgeF9fMDQwX1xuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2EgJ2IuXG4gICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBUYWdnZWRcbiAgICAgICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3RhZ1xuICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgKGxpc3Rfc2V4cF9ncmFtbWFyXG4gICAgICAgICAgICAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoa2V5X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyKS51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zICgodmFsdWVfc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIpLnVudHlwZWQsIEVtcHR5KSApKVxuICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnVudHlwZWRcbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBwYWlyX29mX2dyb3VwID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgKGssIF8pIDo6IF8gYXMgbGlzdCAtPiBrLCBtYXAgbGlzdCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ3JvdXAgYWxpc3QgfmVxdWFsID1cbiAgICBncm91cCBhbGlzdCB+YnJlYWs6KGZ1biAoeCwgXykgKHksIF8pIC0+IG5vdCAoZXF1YWwgeCB5KSkgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgc29ydF9hbmRfZ3JvdXAgYWxpc3QgfmNvbXBhcmUgPVxuICAgIHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlOihmdW4gKHgsIF8pICh5LCBfKSAtPiBjb21wYXJlIHggeSlcbiAgICB8PiBtYXAgfmY6cGFpcl9vZl9ncm91cFxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5mOihmdW4gKGtleScsIF8pIC0+IGVxdWFsIGtleSBrZXknKSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIChzbmQgeClcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuQXNzb2MuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICAgIGxldCBmaW5kX2V4biB0IH5lcXVhbCBrZXkgPVxuICAgICAgbWF0Y2ggZmluZCB0IGtleSB+ZXF1YWwgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHZhbHVlIC0+IHZhbHVlXG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5lcXVhbCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBfIC0+IHRydWVcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgfmVxdWFsIGtleSA9IGZpbHRlciB0IH5mOihmdW4gKGtleScsIF8pIC0+IG5vdCAoZXF1YWwga2V5IGtleScpKSBbQG5vbnRhaWxdXG5cbiAgbGV0IGFkZCB0IH5lcXVhbCBrZXkgdmFsdWUgPVxuICAgICgqIHRoZSByZW1vdmUgZG9lc24ndCBjaGFuZ2UgdGhlIG1hcCBzZW1hbnRpY3MsIGJ1dCBrZWVwcyB0aGUgbGlzdCBzbWFsbCAqKVxuICAgIChrZXksIHZhbHVlKSA6OiByZW1vdmUgdCB+ZXF1YWwga2V5XG4gIDs7XG5cbiAgbGV0IGludmVyc2UgdCA9IG1hcCB0IH5mOihmdW4gKHgsIHkpIC0+IHksIHgpXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mOihmdW4gKGtleSwgdmFsdWUpIC0+IGtleSwgZiB2YWx1ZSkgW0Bub250YWlsXVxuZW5kXG5cbmxldCBzdWIgbCB+cG9zIH5sZW4gPVxuICAoKiBXZSB1c2UgW3BvcyA+IGxlbmd0aCBsIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gbGVuZ3RoIGxdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IGxlbmd0aCBsIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnN1YlwiO1xuICByZXZcbiAgICAoZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGVsIC0+XG4gICAgICAgaWYgaSA+PSBwb3MgJiYgaSA8IHBvcyArIGxlbiB0aGVuIGVsIDo6IGFjYyBlbHNlIGFjYykpXG47O1xuXG5sZXQgc3BsaXRfbiB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdLCB0X29yaWdcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW0sIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWcsIFtdICgqIGluIHRoaXMgY2FzZSwgdF9vcmlnID0gcmV2IGFjY3VtICopXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxuKCogY29waWVkIGZyb20gW3NwbGl0X25dIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2UgdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZ1xuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbmxldCByZWMgZHJvcCB0IG4gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBfIDo6IHRsIHdoZW4gbiA+IDAgLT4gZHJvcCB0bCAobiAtIDEpXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY2h1bmtzX29mIGwgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8PSAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5jaHVua3Nfb2Y6IEV4cGVjdGVkIGxlbmd0aCA+IDAsIGdvdCAlZFwiIGxlbmd0aCAoKTtcbiAgbGV0IHJlYyBhdXggb2ZfbGVuZ3RoIGFjYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IHN1Ymxpc3QsIGwgPSBzcGxpdF9uIGwgbGVuZ3RoIGluXG4gICAgICBhdXggb2ZfbGVuZ3RoIChzdWJsaXN0IDo6IGFjYykgbFxuICBpblxuICBhdXggbGVuZ3RoIFtdIGxcbjs7XG5cbmxldCBzcGxpdF93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IHQgLT4gcmV2IGFjYywgdFxuICBpblxuICBsb29wIFtdIHhzIFtAbm9udGFpbF1cbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF93aGlsZV0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZV93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IF8gLT4gcmV2IGFjY1xuICBpblxuICBsb29wIFtdIHhzIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWMgZHJvcF93aGlsZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGRyb3Bfd2hpbGUgdGwgfmZcbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBkcm9wX2xhc3QgdCA9XG4gIG1hdGNoIHJldiB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiBsc3QgLT4gU29tZSAocmV2IGxzdClcbjs7XG5cbmxldCBkcm9wX2xhc3RfZXhuIHQgPVxuICBtYXRjaCBkcm9wX2xhc3QgdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkxpc3QuZHJvcF9sYXN0X2V4bjogZW1wdHkgbGlzdFwiXG4gIHwgU29tZSBsc3QgLT4gbHN0XG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgbGlzdDEgbGlzdDIgPVxuICBpZiBpc19lbXB0eSBsaXN0MlxuICB0aGVuIFtdXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBsMSBsMiBhY2N1bSA9XG4gICAgICBtYXRjaCBsMSB3aXRoXG4gICAgICB8IFtdIC0+IGFjY3VtXG4gICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgdGwgbDIgKHJldl9hcHBlbmQgKG1hcCB+ZjooZnVuIHggLT4gaGQsIHgpIGwyKSBhY2N1bSlcbiAgICBpblxuICAgIHJldiAobG9vcCBsaXN0MSBsaXN0MiBbXSkpXG47O1xuXG5sZXQgY29uY2F0IGwgPSBmb2xkX3JpZ2h0IGwgfmluaXQ6W10gfmY6YXBwZW5kXG5sZXQgY29uY2F0X25vX29yZGVyIGwgPSBmb2xkIGwgfmluaXQ6W10gfmY6KGZ1biBhY2MgbCAtPiByZXZfYXBwZW5kIGwgYWNjKVxubGV0IGNvbnMgeCBsID0geCA6OiBsXG5cbmxldCBpc19zb3J0ZWQgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8PSAwICYmIGxvb3AgcmVzdFxuICBpblxuICBsb29wIGwgW0Bub250YWlsXVxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDwgMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsIFtAbm9udGFpbF1cbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gICgqIHNwZWNpYWwgY2FzZXMgdG8gc3BlZWQgdGhpbmdzIHVwIGluIHRyaXZpYWwgY2FzZXMgKilcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3RcbiAgfCBbIHg7IHkgXSAtPiBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGUgdGhlbiBbIHk7IHggXSBlbHNlIGxpc3RcbiAgfCBfIC0+XG4gICAgbGV0IGFyciA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIEFycmF5X3Blcm11dGUucGVybXV0ZSBhcnIgfnJhbmRvbV9zdGF0ZTtcbiAgICBBcnJheS50b19saXN0IGFyclxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgaWYgaXNfZW1wdHkgbGlzdFxuICB0aGVuIGZhaWx3aXRoIFwiTGlzdC5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGxpc3RcIlxuICBlbHNlIG50aF9leG4gbGlzdCAoUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCBsaXN0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIGxpc3QpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY29tcGFyZSBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgaWYgbiA9IDAgdGhlbiBjb21wYXJlIGNtcCB4cyB5cyBlbHNlIG5cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF9saXN0XG5cbmxldCBlcXVhbF9sb2NhbCAoKGVxdWFsIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB0MSB0MiA9XG4gIGxldCByZWMgbG9vcCB+ZXF1YWwgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgeDEgOjogdDEsIHgyIDo6IHQyIC0+IGVxdWFsIHgxIHgyICYmIGxvb3AgfmVxdWFsIHQxIHQyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgfmVxdWFsIHQxIHQyXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIGYgeCB5IC0+IGVxdWFsX2xvY2FsIGYgeCB5XG47O1xuXG5sZXQgdHJhbnNwb3NlID1cbiAgbGV0IHJlYyBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHQgY29sdW1uX2FjYyB0cmltbWVkIGZvdW5kX2VtcHR5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGNvbHVtbl9hY2MsIHRyaW1tZWQsIGZvdW5kX2VtcHR5XG4gICAgfCBbXSA6OiB0bCAtPiBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsIGNvbHVtbl9hY2MgdHJpbW1lZCB0cnVlXG4gICAgfCAoeCA6OiB4cykgOjogdGwgLT5cbiAgICAgIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdGwgKHggOjogY29sdW1uX2FjYykgKHhzIDo6IHRyaW1tZWQpIGZvdW5kX2VtcHR5XG4gIGluXG4gIGxldCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgPSBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgW10gW10gZmFsc2UgaW5cbiAgbGV0IHJlYyBsb29wIHJvd3MgY29sdW1ucyBkb19yZXYgPVxuICAgIG1hdGNoIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyB3aXRoXG4gICAgfCBbXSwgW10sIF8gLT4gU29tZSAocmV2IGNvbHVtbnMpXG4gICAgfCBjb2x1bW4sIHRyaW1tZWRfcm93cywgZm91bmRfZW1wdHkgLT5cbiAgICAgIGlmIGZvdW5kX2VtcHR5XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY29sdW1uID0gaWYgZG9fcmV2IHRoZW4gcmV2IGNvbHVtbiBlbHNlIGNvbHVtbiBpblxuICAgICAgICBsb29wIHRyaW1tZWRfcm93cyAoY29sdW1uIDo6IGNvbHVtbnMpIChub3QgZG9fcmV2KSlcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdIHRydWVcbjs7XG5cbmV4Y2VwdGlvbiBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIG9mIGludCBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzXVxuICAgIChmdW5jdGlvblxuICAgICAgfCBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIGFyZzBfXzA0MV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzA0Ml8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9pbnQgYXJnMF9fMDQxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpc3QubWwuVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc1wiXG4gICAgICAgICAgOyByZXMwX18wNDJfXG4gICAgICAgICAgXVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0cmFuc3Bvc2VfZXhuIGwgPVxuICBtYXRjaCB0cmFuc3Bvc2UgbCB3aXRoXG4gIHwgU29tZSBsIC0+IGxcbiAgfCBOb25lIC0+IHJhaXNlIChUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIChtYXAgbCB+ZjpsZW5ndGgpKVxuOztcblxubGV0IGludGVyc3BlcnNlIHQgfnNlcCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPiB4IDo6IGZvbGRfcmlnaHQgeHMgfmluaXQ6W10gfmY6KGZ1biB5IGFjYyAtPiBzZXAgOjogeSA6OiBhY2MpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcblxubGV0IGlzX3N1ZmZpeCBsaXN0IH5zdWZmaXggfmVxdWFsOigoZXF1YWxfZWx0IDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsaXN0X2xlbiA9IGxlbmd0aCBsaXN0IGluXG4gIGxldCBzdWZmaXhfbGVuID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsaXN0X2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGVxdWFsX2xvY2FsIGVxdWFsX2VsdCAoZHJvcCBsaXN0IChsaXN0X2xlbiAtIHN1ZmZpeF9sZW4pKSBzdWZmaXhcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBhcyBtYW55IHBsYWNlcyBhcyBwb3NzaWJsZS4gUGxlYXNlIGF2b2lkXG4gICBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9faW50ZlxubW9kdWxlIENoYXIgPSBDaGFyMFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgb2YgU2V4cC50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBFeG4gb2YgZXhuXG4gICAgfCBTZXhwIG9mIFNleHAudFxuICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24wLnQgb3B0aW9uXG4gICAgfCBUYWdfdCBvZiBzdHJpbmcgKiB0XG4gICAgfCBUYWdfYXJnIG9mIHN0cmluZyAqIFNleHAudCAqIHRcbiAgICB8IE9mX2xpc3Qgb2YgaW50IG9wdGlvbiAqIHQgbGlzdFxuICAgIHwgV2l0aF9iYWNrdHJhY2Ugb2YgdCAqIHN0cmluZyAoKiBiYWNrdHJhY2UgKilcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHJlYyBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IGFyZzBfXzAwMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwMl8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvdWxkX25vdF9jb25zdHJ1Y3RcIjsgcmVzMF9fMDAyXyBdXG4gICAgICB8IFN0cmluZyBhcmcwX18wMDNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDRfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDAzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTdHJpbmdcIjsgcmVzMF9fMDA0XyBdXG4gICAgICB8IEV4biBhcmcwX18wMDVfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDZfID0gc2V4cF9vZl9leG4gYXJnMF9fMDA1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeG5cIjsgcmVzMF9fMDA2XyBdXG4gICAgICB8IFNleHAgYXJnMF9fMDA3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA4XyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMDhfIF1cbiAgICAgIHwgVGFnX3NleHAgKGFyZzBfXzAwOV8sIGFyZzFfXzAxMF8sIGFyZzJfXzAxMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA5X1xuICAgICAgICBhbmQgcmVzMV9fMDEzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAxMF9cbiAgICAgICAgYW5kIHJlczJfXzAxNF8gPSBzZXhwX29mX29wdGlvbiBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGFyZzJfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfc2V4cFwiOyByZXMwX18wMTJfOyByZXMxX18wMTNfOyByZXMyX18wMTRfIF1cbiAgICAgIHwgVGFnX3QgKGFyZzBfXzAxNV8sIGFyZzFfXzAxNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE1X1xuICAgICAgICBhbmQgcmVzMV9fMDE4XyA9IHNleHBfb2ZfdCBhcmcxX18wMTZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ190XCI7IHJlczBfXzAxN187IHJlczFfXzAxOF8gXVxuICAgICAgfCBUYWdfYXJnIChhcmcwX18wMTlfLCBhcmcxX18wMjBfLCBhcmcyX18wMjFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxOV9cbiAgICAgICAgYW5kIHJlczFfXzAyM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMjBfXG4gICAgICAgIGFuZCByZXMyX18wMjRfID0gc2V4cF9vZl90IGFyZzJfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfYXJnXCI7IHJlczBfXzAyMl87IHJlczFfXzAyM187IHJlczJfXzAyNF8gXVxuICAgICAgfCBPZl9saXN0IChhcmcwX18wMjVfLCBhcmcxX18wMjZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfaW50IGFyZzBfXzAyNV9cbiAgICAgICAgYW5kIHJlczFfXzAyOF8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90IGFyZzFfXzAyNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2ZfbGlzdFwiOyByZXMwX18wMjdfOyByZXMxX18wMjhfIF1cbiAgICAgIHwgV2l0aF9iYWNrdHJhY2UgKGFyZzBfXzAyOV8sIGFyZzFfXzAzMF8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMzFfID0gc2V4cF9vZl90IGFyZzBfXzAyOV9cbiAgICAgICAgYW5kIHJlczFfXzAzMl8gPSBzZXhwX29mX3N0cmluZyBhcmcxX18wMzBfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIldpdGhfYmFja3RyYWNlXCI7IHJlczBfXzAzMV87IHJlczFfXzAzMl8gXVxuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHJlYyB0b19zdHJpbmdzX2h1bSB0IGFjID1cbiAgICAoKiBXZSB1c2UgW1NleHAudG9fc3RyaW5nX21hY2hdLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGltcGxlbWVudGluZ1xuICAgICAgIFt0b19zdHJpbmdzX2h1bV0sIGJlY2F1c2Ugd2Ugd2FudCB0aGUgaW5mbyB0byBmaXQgb24gYSBzaW5nbGUgbGluZSwgYW5kIG9uY2Ugd2UndmVcbiAgICAgICBoYWQgdG8gcmVzb3J0IHRvIHNleHBzLCB0aGUgbWVzc2FnZSBpcyBnb2luZyB0byBzdGFydCBub3QgbG9va2luZyBzbyBwcmV0dHlcbiAgICAgICBhbnl3YXkuICopXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IHNleHAgLT5cbiAgICAgIFwiY291bGQgbm90IGNvbnN0cnVjdCBpbmZvOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IFNleHAudG9fc3RyaW5nX21hY2ggKEV4bi5zZXhwX29mX3QgZXhuKSA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgXykgLT4gdGFnIDo6IFwiOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IHRhZyA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWMgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIGJvZHkgZWxzZSB0YWcgOjogXCI6IFwiIDo6IGJvZHlcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICB0b19zdHJpbmdzX2h1bSB0IChcIlxcbkJhY2t0cmFjZTpcXG5cIiA6OiBiYWNrdHJhY2UgOjogYWMpXG4gICAgfCBPZl9saXN0ICh0cnVuY19hZnRlciwgdHMpIC0+XG4gICAgICBsZXQgdHMgPVxuICAgICAgICBtYXRjaCB0cnVuY19hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0c1xuICAgICAgICB8IFNvbWUgbWF4IC0+XG4gICAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCB0cyBpblxuICAgICAgICAgIGlmIG4gPD0gbWF4XG4gICAgICAgICAgdGhlbiB0c1xuICAgICAgICAgIGVsc2UgTGlzdC50YWtlIHRzIG1heCBAIFsgU3RyaW5nIChQcmludGYuc3ByaW50ZiBcImFuZCAlZCBtb3JlIGluZm9cIiAobiAtIG1heCkpIF1cbiAgICAgIGluXG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT5cbiAgICAgICAgdG9fc3RyaW5nc19odW0gdCAoaWYgTGlzdC5pc19lbXB0eSBhYyB0aGVuIGFjIGVsc2UgXCI7IFwiIDo6IGFjKSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBTdHJpbmcuY29uY2F0ICh0b19zdHJpbmdzX2h1bSB0IFtdKVxuXG4gICgqIExpa2UgW1N0cmluZy5zcGxpdF9saW5lc10sIGJ1dCBsZXNzIG9wdGltaXplZCBhbmQgZG9lc24ndCBoYW5kbGUgW1xcclxcbl0uIEF2b2lkcyBhXG4gICAgIGRlcGVuZGVuY3kgY3ljbGUuIEltcHJvdmVzIG9uIG5haXZlIFtTdHJpbmcuc3BsaXRfb25fY2hhcl0gYnkgcmVtb3ZpbmcgZW1wdHkgZmluYWxcbiAgICAgbGluZS4gKilcbiAgbGV0IHNwbGl0X2xpbmVzIHN0cmluZyA9XG4gICAgbGV0IHN0cmluZyA9XG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAnXFxuJyAoU3RyaW5nLmdldCBzdHJpbmcgKGxlbiAtIDEpKVxuICAgICAgdGhlbiBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOjAgfmxlbjoobGVuIC0gMSlcbiAgICAgIGVsc2Ugc3RyaW5nXG4gICAgaW5cbiAgICBTdHJpbmcuc3BsaXRfb25fY2hhciBzdHJpbmcgfnNlcDonXFxuJ1xuICA7O1xuXG4gIGxldCByZWMgdG9fc2V4cHNfaHVtIHQgYWMgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBfIGFzIHQgLT4gc2V4cF9vZl90IHQgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gQXRvbSBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gRXhuLnNleHBfb2ZfdCBleG4gOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBoZXJlKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoQXRvbSB0YWdcbiAgICAgICAgIDo6IHNleHBcbiAgICAgICAgIDo6XG4gICAgICAgICAobWF0Y2ggaGVyZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGhlcmUgLT4gWyBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmUgXSkpXG4gICAgICA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gTGlzdCAoQXRvbSB0YWcgOjogdG9fc2V4cHNfaHVtIHQgW10pIDo6IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IHNleHAgOjogdG9fc2V4cHNfaHVtIHQgW10gaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIExpc3QgYm9keSA6OiBhYyBlbHNlIExpc3QgKEF0b20gdGFnIDo6IGJvZHkpIDo6IGFjXG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgU2V4cC5MaXN0IFsgdG9fc2V4cF9odW0gdDsgc2V4cF9vZl9saXN0IHNleHBfb2Zfc3RyaW5nIChzcGxpdF9saW5lcyBiYWNrdHJhY2UpIF1cbiAgICAgIDo6IGFjXG4gICAgfCBPZl9saXN0IChfLCB0cykgLT5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPiB0b19zZXhwc19odW0gdCBhYylcblxuICBhbmQgdG9fc2V4cF9odW0gdCA9XG4gICAgbWF0Y2ggdG9fc2V4cHNfaHVtIHQgW10gd2l0aFxuICAgIHwgWyBzZXhwIF0gLT4gc2V4cFxuICAgIHwgc2V4cHMgLT4gU2V4cC5MaXN0IHNleHBzXG4gIDs7XG5cbiAgKCogV2UgdXNlIFtwcm90ZWN0XSB0byBndWFyZCBhZ2FpbnN0IGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHVzZXItc3VwcGxpZWQgZnVuY3Rpb25zLCBzb1xuICAgICB0aGF0IGZhaWx1cmUgdG8gcHJvZHVjZSBvbmUgcGFydCBvZiBhbiBpbmZvIGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgcGFydHMuICopXG4gIGxldCBwcm90ZWN0IGYgPVxuICAgIHRyeSBmICgpIHdpdGhcbiAgICB8IGV4biAtPiBDb3VsZF9ub3RfY29uc3RydWN0IChFeG4uc2V4cF9vZl90IGV4bilcbiAgOztcblxuICBsZXQgb2ZfaW5mbyBpbmZvID0gcHJvdGVjdCAoZnVuICgpIC0+IExhenkuZm9yY2UgaW5mbylcbiAgbGV0IHRvX2luZm8gdCA9IGxhenkgdFxuZW5kXG5cbm9wZW4gTWVzc2FnZVxuXG50eXBlIHQgPSBNZXNzYWdlLnQgTGF6eS50XG5cbmxldCBpbnZhcmlhbnQgXyA9ICgpXG5sZXQgdG9fbWVzc2FnZSA9IE1lc3NhZ2Uub2ZfaW5mb1xubGV0IG9mX21lc3NhZ2UgPSBNZXNzYWdlLnRvX2luZm9cblxuKCogSXQgaXMgT0sgdG8gdXNlIFtNZXNzYWdlLnRvX3NleHBfaHVtXSwgd2hpY2ggaXMgbm90IHN0YWJsZSwgYmVjYXVzZSBbdF9vZl9zZXhwXSBiZWxvd1xuICAgY2FuIGhhbmRsZSBhbnkgc2V4cC4gKilcbmxldCBzZXhwX29mX3QgdCA9IE1lc3NhZ2UudG9fc2V4cF9odW0gKHRvX21lc3NhZ2UgdClcbmxldCB0X29mX3NleHAgc2V4cCA9IGxhenkgKE1lc3NhZ2UuU2V4cCBzZXhwKVxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gQW55IFwiSW5mby50XCIgfVxubGV0IGNvbXBhcmUgdDEgdDIgPSBTZXhwLmNvbXBhcmUgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBlcXVhbCB0MSB0MiA9IFNleHAuZXF1YWwgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gU2V4cC5oYXNoX2ZvbGRfdCBzdGF0ZSAoc2V4cF9vZl90IHQpXG5sZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuXG5sZXQgdG9fc3RyaW5nX2h1bSB0ID1cbiAgbWF0Y2ggdG9fbWVzc2FnZSB0IHdpdGhcbiAgfCBTdHJpbmcgcyAtPiBzXG4gIHwgbWVzc2FnZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gKE1lc3NhZ2UudG9fc2V4cF9odW0gbWVzc2FnZSlcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IE1lc3NhZ2UudG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkICh0b19tZXNzYWdlIHQpXG5sZXQgdG9fc3RyaW5nX21hY2ggdCA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfdCB0KVxubGV0IG9mX2xhenkgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfc2V4cCBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFNleHAgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfdCBsYXp5X3QgPSBMYXp5LmpvaW4gbGF6eV90XG5sZXQgb2Zfc3RyaW5nIG1lc3NhZ2UgPSBMYXp5LmZyb21fdmFsIChTdHJpbmcgbWVzc2FnZSlcbmxldCBjcmVhdGVmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBvZl9zdHJpbmcgZm9ybWF0XG5sZXQgb2ZfdGh1bmsgZiA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKGYgKCkpKSlcblxubGV0IGNyZWF0ZSA/aGVyZSA/c3RyaWN0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIG1hdGNoIHN0cmljdCB3aXRoXG4gIHwgTm9uZSAtPiBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKSlcbiAgfCBTb21lICgpIC0+IG9mX21lc3NhZ2UgKFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoU2V4cCBzZXhwKVxubGV0IHRhZyB0IH50YWcgPSBsYXp5IChUYWdfdCAodGFnLCB0b19tZXNzYWdlIHQpKVxuXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAoXCJcIiwgTGF6eS5mb3JjZSB0YWcsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IHRhZ19zIHQgfnRhZyA9IHRhZ19zX2xhenkgdCB+dGFnOihMYXp5LmZyb21fdmFsIHRhZylcblxubGV0IHRhZ19hcmcgdCB0YWcgeCBzZXhwX29mX3ggPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAodGFnLCBzZXhwX29mX3ggeCwgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgb2ZfbGlzdCA/dHJ1bmNfYWZ0ZXIgdHMgPSBsYXp5IChPZl9saXN0ICh0cnVuY19hZnRlciwgTGlzdC5tYXAgdHMgfmY6dG9fbWVzc2FnZSkpXG5cbmV4Y2VwdGlvbiBFeG4gb2YgdFxuXG5sZXQgKCkgPVxuICAoKiBXZSBpbnN0YWxsIGEgY3VzdG9tIGV4bi1jb252ZXJ0ZXIgcmF0aGVyIHRoYW4gdXNlXG4gICAgIFtleGNlcHRpb24gRXhuIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdIC4uLiBbQEBAZW5kXV0gdG8gZWxpbWluYXRlIHRoZSBleHRyYVxuICAgICB3cmFwcGluZyBvZiBcIihFeG4gLi4uKVwiLiAqKVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhuXSAoZnVuY3Rpb25cbiAgICB8IEV4biB0IC0+IHNleHBfb2ZfdCB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB0b19leG4gdCA9XG4gIGlmIG5vdCAoTGF6eS5pc192YWwgdClcbiAgdGhlbiBFeG4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBMYXp5LmZvcmNlIHQgd2l0aFxuICAgIHwgTWVzc2FnZS5FeG4gZXhuIC0+IGV4blxuICAgIHwgXyAtPiBFeG4gdClcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPVxuICBsZXQgYmFja3RyYWNlID1cbiAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGBHZXQgLT5cbiAgICAgIFNvbWUgKFN0ZGxpYi5QcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICAgIHwgU29tZSAoYFRoaXMgcykgLT4gU29tZSBzXG4gIGluXG4gIG1hdGNoIGV4biwgYmFja3RyYWNlIHdpdGhcbiAgfCBFeG4gdCwgTm9uZSAtPiB0XG4gIHwgRXhuIHQsIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlICh0b19tZXNzYWdlIHQsIGJhY2t0cmFjZSkpXG4gIHwgXywgTm9uZSAtPiBMYXp5LmZyb21fdmFsIChNZXNzYWdlLkV4biBleG4pXG4gIHwgXywgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKFNleHAgKEV4bi5zZXhwX29mX3QgZXhuKSwgYmFja3RyYWNlKSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW5mb1wiXG4gICAgbGV0IHBwIHBwZiB0ID0gU3RkbGliLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmdfaHVtIHQpXG4gIGVuZClcblxubW9kdWxlIEludGVybmFsX3JlcHIgPSBNZXNzYWdlXG5cbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0Vycm9yXSBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIHZhcmlvdXMgcGxhY2VzLiAgUGxlYXNlIGF2b2lkIGFkZGluZyBuZXdcbiAgIGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9cblxubGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIkVycm9yLnRcIiB9XG5sZXQgcmFpc2UgdCA9IHJhaXNlICh0b19leG4gdClcbmxldCByYWlzZV9zIHNleHAgPSByYWlzZSAoY3JlYXRlX3Mgc2V4cClcbmxldCB0b19pbmZvIHQgPSB0XG5sZXQgb2ZfaW5mbyB0ID0gdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkVycm9yXCJcbiAgICBsZXQgcHAgPSBwcFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW52YXJpYW50X2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbmxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmIDogdW5pdCA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIlxuICAgICAgICAgWyBcIlwiLCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmVcbiAgICAgICAgIDsgXCJleG5cIiwgc2V4cF9vZl9leG4gZXhuXG4gICAgICAgICA7IFwiXCIsIHNleHBfb2ZfdCB0XG4gICAgICAgICBdKVxuOztcblxubGV0IGNoZWNrX2ZpZWxkIHQgZiBmaWVsZCA9XG4gIHRyeSBmIChGaWVsZC5nZXQgZmllbGQgdCkgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwicHJvYmxlbSB3aXRoIGZpZWxkXCJcbiAgICAgICAgIFsgXCJmaWVsZFwiLCBzZXhwX29mX3N0cmluZyAoRmllbGQubmFtZSBmaWVsZCk7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAoJ2EsIEVycm9yLnQpIFJlc3VsdC50XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPiBSZXN1bHQuY29tcGFyZSBfY21wX19hIEVycm9yLmNvbXBhcmUgYV9fMDAxXyBiX18wMDJfXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+IFJlc3VsdC5lcXVhbCBfY21wX19hIEVycm9yLmVxdWFsIGFfXzAwN18gYl9fMDA4X1xuOztcblxubGV0IGhhc2hfZm9sZF90IDpcbiAgJ2EuXG4gIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgLT4gJ2EgdFxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIGhzdiBhcmcgLT4gUmVzdWx0Lmhhc2hfZm9sZF90IF9oYXNoX2ZvbGRfYSBFcnJvci5oYXNoX2ZvbGRfdCBoc3YgYXJnXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMTNfIHhfXzAxNV8gLT4gUmVzdWx0LnRfb2Zfc2V4cCBfb2ZfYV9fMDEzXyBFcnJvci50X29mX3NleHAgeF9fMDE1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE2XyB4X18wMTdfIC0+IFJlc3VsdC5zZXhwX29mX3QgX29mX2FfXzAxNl8gRXJyb3Iuc2V4cF9vZl90IHhfXzAxN19cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVzdWx0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIgRXJyb3IudF9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbmxldCAoID4+PSApID0gUmVzdWx0LiggPj49IClcbmxldCAoID4+fCApID0gUmVzdWx0LiggPj58IClcbmxldCBiaW5kID0gUmVzdWx0LmJpbmRcbmxldCBpZ25vcmVfbSA9IFJlc3VsdC5pZ25vcmVfbVxubGV0IGpvaW4gPSBSZXN1bHQuam9pblxubGV0IG1hcCA9IFJlc3VsdC5tYXBcbmxldCByZXR1cm4gPSBSZXN1bHQucmV0dXJuXG5cbm1vZHVsZSBNb25hZF9pbmZpeCA9IFJlc3VsdC5Nb25hZF9pbmZpeFxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBhIC0+IGludmFyaWFudF9hIGFcbiAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5pbnZhcmlhbnQgZXJyb3Jcbjs7XG5cbmxldCBtYXAyIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE9rIHgsIE9rIHkgLT4gT2sgKGYgeCB5KVxuICB8IE9rIF8sIChFcnJvciBfIGFzIGUpIHwgKEVycm9yIF8gYXMgZSksIE9rIF8gLT4gZVxuICB8IEVycm9yIGUxLCBFcnJvciBlMiAtPiBFcnJvciAoRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuOztcblxubW9kdWxlIEZvcl9hcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgbWFwMiA9IG1hcDJcbiAgZW5kKVxuXG5sZXQgKCAqPiApID0gRm9yX2FwcGxpY2F0aXZlLiggKj4gKVxubGV0ICggPCogKSA9IEZvcl9hcHBsaWNhdGl2ZS4oIDwqIClcbmxldCAoIDwqPiApID0gRm9yX2FwcGxpY2F0aXZlLiggPCo+IClcbmxldCBhcHBseSA9IEZvcl9hcHBsaWNhdGl2ZS5hcHBseVxubGV0IGJvdGggPSBGb3JfYXBwbGljYXRpdmUuYm90aFxubGV0IG1hcDMgPSBGb3JfYXBwbGljYXRpdmUubWFwM1xuXG5tb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBGb3JfYXBwbGljYXRpdmUuQXBwbGljYXRpdmVfaW5maXhcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCBvayA9IFJlc3VsdC5va1xubGV0IGlzX29rID0gUmVzdWx0LmlzX29rXG5sZXQgaXNfZXJyb3IgPSBSZXN1bHQuaXNfZXJyb3JcblxubGV0IHRyeV93aXRoID8oYmFja3RyYWNlID0gZmFsc2UpIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4gP2JhY2t0cmFjZTooaWYgYmFja3RyYWNlIHRoZW4gU29tZSBgR2V0IGVsc2UgTm9uZSkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/YmFja3RyYWNlIGYgPSBqb2luICh0cnlfd2l0aCA/YmFja3RyYWNlIGYpXG5cbmxldCBva19leG4gPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGVyciAtPiBFcnJvci5yYWlzZSBlcnJcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBFcnJvciAoRXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxuXG5sZXQgb2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlID0gZnVuY3Rpb25cbiAgfCBPayBfIGFzIHogLT4gelxuICB8IEVycm9yIGV4biAtPiBvZl9leG4gP2JhY2t0cmFjZSBleG5cbjs7XG5cbmxldCBlcnJvciA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBFcnJvciAoRXJyb3IuY3JlYXRlID9oZXJlID9zdHJpY3QgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCBlcnJvcl9zIHNleHAgPSBFcnJvciAoRXJyb3IuY3JlYXRlX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbWVzc2FnZSA9IEVycm9yIChFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSlcbmxldCBlcnJvcmYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihmdW4gZSAtPiBFcnJvci50YWdfYXJnIGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIHMgPSBlcnJvciBcInVuaW1wbGVtZW50ZWRcIiBzIHNleHBfb2Zfc3RyaW5nXG5cblxubGV0IGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2sgfm9uX2Vycm9yID1cbiAgbWF0Y2ggUmVzdWx0LmNvbWJpbmVfZXJyb3JzIGxpc3Qgd2l0aFxuICB8IE9rIHggLT4gT2sgKG9uX29rIHgpXG4gIHwgRXJyb3IgZXJycyAtPiBFcnJvciAob25fZXJyb3IgZXJycylcbjs7XG5cbmxldCBpZ25vcmVfdW5pdF9saXN0IChfIDogdW5pdCBsaXN0KSA9ICgpXG5cbmxldCBlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSA9IGZ1bmN0aW9uXG4gIHwgWyBlIF0gLT4gZVxuICB8IGxpc3QgLT4gRXJyb3Iub2ZfbGlzdCBsaXN0XG47O1xuXG5sZXQgYWxsIGxpc3QgPSBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rOkZuLmlkIH5vbl9lcnJvcjplcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeVxuXG5sZXQgYWxsX3VuaXQgbGlzdCA9XG4gIGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6aWdub3JlX3VuaXRfbGlzdCB+b25fZXJyb3I6ZXJyb3Jfb2ZfbGlzdF9pZl9uZWNlc3Nhcnlcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9ycyBsaXN0ID0gY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazpGbi5pZCB+b25fZXJyb3I6RXJyb3Iub2ZfbGlzdFxuXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsaXN0ID1cbiAgY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazppZ25vcmVfdW5pdF9saXN0IH5vbl9lcnJvcjpFcnJvci5vZl9saXN0XG47O1xuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdC5wYXJ0aXRpb25fbWFwIGwgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICBtYXRjaCBvayB3aXRoXG4gIHwgW10gLT4gRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJycylcbiAgfCBfIC0+IE9rIG9rXG47O1xuXG5sZXQgZmluZF9vayBsID1cbiAgbWF0Y2ggTGlzdC5maW5kX21hcCBsIH5mOlJlc3VsdC5vayB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgT2sgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBFcnJvclxuICAgICAgKEVycm9yLm9mX2xpc3RcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgICAgICB8IE9rIF8gYXMgeCAtPiByZXR1cm4geFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyKSkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwID0gUmVzdWx0Lm1hcFxubGV0IGl0ZXIgPSBSZXN1bHQuaXRlclxubGV0IGl0ZXJfZXJyb3IgPSBSZXN1bHQuaXRlcl9lcnJvclxuIiwiKCogVGhpcyBpcyBicm9rZW4gb2ZmIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBTaWduIGFuZCBDb21wYXJhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOZWdcbiAgfCBaZXJvXG4gIHwgUG9zXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbjAubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIC0+IFBvc1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDAyXyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgc2V4cF9fMDAyXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IE5lZyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOZWdcIlxuICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIk5lZ1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBQb3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5sZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3MgXSA6IHQgbGlzdClcblxuW0BAQGVuZF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogdCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogdCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xXG4gIHwgWmVybyAtPiAwXG4gIHwgUG9zIC0+IDFcbjs7XG5cbmxldCBfID0gaGFzaFxuXG4oKiBJZ25vcmUgdGhlIGhhc2ggZnVuY3Rpb24gcHJvZHVjZWQgYnkgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2hdICopXG5sZXQgaGFzaCA9IHRvX2ludFxubGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25cIlxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBOZWcgZWxzZSBpZiBuID0gMCB0aGVuIFplcm8gZWxzZSBQb3NcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcblxubW9kdWxlIFdpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG9wZW4gVFxuXG4gIGxldCBpc19wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPiAwXG4gIGxldCBpc19ub25fbmVnYXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID49IDBcbiAgbGV0IGlzX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA8IDBcbiAgbGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPD0gMFxuICBsZXQgc2lnbiB0ID0gU2lnbjAub2ZfaW50IChjb21wYXJlIHQgemVybylcbmVuZFxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIFBvbHlcbiAgZW5kXG5cbiAgaW5jbHVkZSBQb2x5XG5cbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlKVxuICBlbmRcblxuICBpbmNsdWRlIENcbmVuZFxuXG5sZXQgZ3QgY21wIGEgYiA9IGNtcCBhIGIgPiAwXG5sZXQgbHQgY21wIGEgYiA9IGNtcCBhIGIgPCAwXG5sZXQgZ2VxIGNtcCBhIGIgPSBjbXAgYSBiID49IDBcbmxldCBsZXEgY21wIGEgYiA9IGNtcCBhIGIgPD0gMFxubGV0IGVxdWFsIGNtcCBhIGIgPSBjbXAgYSBiID0gMFxubGV0IG5vdF9lcXVhbCBjbXAgYSBiID0gY21wIGEgYiA8PiAwXG5sZXQgbWluIGNtcCB0IHQnID0gaWYgbGVxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5sZXQgbWF4IGNtcCB0IHQnID0gaWYgZ2VxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5cbm1vZHVsZSBJbmZpeCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogSW5maXggd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGxldCAoID4gKSBhIGIgPSBndCBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDwgKSBhIGIgPSBsdCBULmNvbXBhcmUgYSBiXG4gIGxldCAoID49ICkgYSBiID0gZ2VxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD0gKSBhIGIgPSBsZXEgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA9ICkgYSBiID0gZXF1YWwgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8PiApIGEgYiA9IG5vdF9lcXVhbCBULmNvbXBhcmUgYSBiXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBDb21wYXJpc29ucyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXggKFQpXG5cbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0IG1pbiB0IHQnID0gbWluIGNvbXBhcmUgdCB0J1xuICBsZXQgbWF4IHQgdCcgPSBtYXggY29tcGFyZSB0IHQnXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJhdG9yLmNvbXBhcmVcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBDb21wYXJpc29ucyAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB0IHQnID0gY29tcGFyZSB0JyB0XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciBbQGlubGluZWQgaGludF0gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgICAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgICAgIFtAQEBlbmRdXG5cbiAgICAgICAgICB2YWwgY29tcG9uZW50IDogdCAtPiBDLnRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuKCogY29tcGFyZSBbeF0gYW5kIFt5XSBsZXhpY29ncmFwaGljYWxseSB1c2luZyBmdW5jdGlvbnMgaW4gdGhlIGxpc3QgW2NtcHNdICopXG5sZXQgbGV4aWNvZ3JhcGhpYyBjbXBzIHggeSA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBjbXAgOjogY21wcyAtPlxuICAgICAgbGV0IHJlcyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIHJlcyA9IDAgdGhlbiBsb29wIGNtcHMgZWxzZSByZXNcbiAgICB8IFtdIC0+IDBcbiAgaW5cbiAgbG9vcCBjbXBzXG47O1xuXG5sZXQgbGlmdCBjbXAgfmYgeCB5ID0gY21wIChmIHgpIChmIHkpXG5sZXQgcmV2ZXJzZSBjbXAgeCB5ID0gY21wIHkgeFxuXG50eXBlICdhIHJldmVyc2VkID0gJ2FcblxubGV0IGNvbXBhcmVfcmV2ZXJzZWQgY21wIHggeSA9IGNtcCB5IHhcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2hhYmxlLktleSAqKVxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIFZhbHVlcyByZXR1cm5lZCBieSBbaGFzaF0gbXVzdCBiZSBub24tbmVnYXRpdmUuICBBbiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaW4gdGhlXG4gICAgICBjYXNlIHRoYXQgW2hhc2hdIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZS4gKilcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gICgqKiBUaGlzIGZ1bmN0aW9uIGlzIHNvdW5kIGJ1dCBub3QgY29tcGxldGUsIG1lYW5pbmcgdGhhdCBpZiBpdCByZXR1cm5zIFt0cnVlXSB0aGVuIGl0J3NcbiAgICAgIHNhZmUgdG8gdXNlIHRoZSB0d28gaW50ZXJjaGFuZ2VhYmx5LiAgSWYgaXQncyBbZmFsc2VdLCB5b3UgaGF2ZSBubyBndWFyYW50ZWVzLiAgRm9yXG4gICAgICBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICA+IHV0b3BcbiAgICAgICAgb3BlbiBDb3JlOztcbiAgICAgICAgbGV0IGVxdWFsIChhIDogJ2EgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnQpIGIgPVxuICAgICAgICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgICAgICAgfHwgKHBoeXNfZXF1YWwgYS5oYXNoIGIuaGFzaFxuICAgICAgICAgICAgICAmJiBwaHlzX2VxdWFsIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdClcbiAgICAgICAgOztcbiAgICAgICAgbGV0IGEgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBsZXQgYiA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS57IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCA9IEludC5zZXhwX29mX3QgfTs7XG4gICAgICAgIGVxdWFsIGEgYjs7ICAoKiBmYWxzZT8hICopXG4gICAgICBdfVxuICAqKVxuICBsZXQgZXF1YWwgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGhhc2hfcGFyYW0gPSBTdGRsaWIuSGFzaHRibC5oYXNoX3BhcmFtXG4gIGxldCBoYXNoID0gU3RkbGliLkhhc2h0YmwuaGFzaFxuICBsZXQgcG9seSA9IHsgaGFzaDsgY29tcGFyZSA9IFBvbHkuY29tcGFyZTsgc2V4cF9vZl90ID0gKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgfVxuXG4gIGxldCBvZl9rZXkgKHR5cGUgYSkgKG1vZHVsZSBLZXkgOiBLZXkgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgeyBoYXNoID0gS2V5Lmhhc2g7IGNvbXBhcmUgPSBLZXkuY29tcGFyZTsgc2V4cF9vZl90ID0gS2V5LnNleHBfb2ZfdCB9XG4gIDs7XG5cbiAgbGV0IHRvX2tleSAodHlwZSBhKSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZCA6IEtleVxuICAgICAgd2l0aCB0eXBlIHQgPSBhKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgSGFzaGFibGVcblxubW9kdWxlIHR5cGUgSGFzaGFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSGFzaGFibGUudCA9XG4gICAgeyBoYXNoIDogJ2EgLT4gaW50XG4gICAgOyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHBvbHkgOiAnYSB0XG4gIHZhbCBvZl9rZXkgOiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKSAtPiAnYSB0XG4gIHZhbCB0b19rZXkgOiAnYSB0IC0+IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpXG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUIDogQXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBBcmdfd2l0aF9jb21wYXJhdG9yKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBhbGwgPSAoWyAoKSBdIDogdCBsaXN0KVxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV91bml0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3VuaXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX3VuaXQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHVuaXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdW5pdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB1bml0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGNvbXBhcmUgXyBfID0gMFxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCIoKVwiIC0+ICgpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQmFzZS5Vbml0Lm9mX3N0cmluZzogKCkgZXhwZWN0ZWRcIlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVuaXRcIlxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxubGV0IGludmFyaWFudCAoKSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBcblxubGV0IGdldF9wb3NfbGVuID9wb3MgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgdHJ5IFJlc3VsdC5PayAoZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IE9yX2Vycm9yLmVycm9yX3N0cmluZyBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoZXNlIGZ1bmN0aW9ucyBpbXBsZW1lbnQgYSBzZWFyY2ggZm9yIHRoZSBmaXJzdCAocmVzcC4gbGFzdCkgZWxlbWVudFxuICAgc2F0aXNmeWluZyBhIHByZWRpY2F0ZSwgYXNzdW1pbmcgdGhhdCB0aGUgcHJlZGljYXRlIGlzIGluY3JlYXNpbmcgb25cbiAgIHRoZSBjb250YWluZXIsIG1lYW5pbmcgdGhhdCwgaWYgdGhlIGNvbnRhaW5lciBpcyBbdTEuLi51bl0sIHRoZXJlIGV4aXN0cyBhXG4gICBrIHN1Y2ggdGhhdCBwKHUxKT0uLi4uPXAodWspID0gZmFsc2UgYW5kIHAodWsrMSk9Li4uLj1wKHVuKT0gdHJ1ZS5cbiAgIElmIHRoaXMgayA9IDEgKHJlc3AgbiksIGZpbmRfbGFzdF9ub3Rfc2F0aXNmeWluZyAocmVzcCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcpXG4gICB3aWxsIHJldHVybiBOb25lLiAqKVxuXG5sZXQgcmVjIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gIGlmIGxvID4gaGlcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgcHJlZCAoZ2V0IHQgbG8pXG4gIHRoZW4gU29tZSBsb1xuICBlbHNlIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihsbyArIDEpIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYSBjb250YWluZXIgW3RdLCBhIHByZWRpY2F0ZSBbcHJlZF0gYW5kIHR3byBpbmRpY2VzIFtsbyA8IGhpXSwgc3VjaCB0aGF0XG4gICBbcHJlZF0gaXMgaW5jcmVhc2luZyBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLlxuXG4gICByZXR1cm4gYSByYW5nZSAobG8sIGhpKSB3aGVyZTpcbiAgIC0gbG8gYW5kIGhpIGFyZSBjbG9zZSBlbm91Z2ggdG9nZXRoZXIgZm9yIGEgbGluZWFyIHNlYXJjaFxuICAgLSBJZiBbcHJlZF0gaXMgbm90IGNvbnN0YW50bHkgW2ZhbHNlXSBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICBvbiB3aGljaCBbcHJlZF0gaXMgW3RydWVdIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXS4gKilcbigqIEludmFyaWFudDogdGhlIGZpcnN0IGVsZW1lbnQgc2F0aXNmeWluZyBbcHJlZF0sIGlmIGl0IGV4aXN0cyBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0gKilcbmxldCByZWMgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICAoKiBXYXJuaW5nOiB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IHRlcm1pbmF0ZSBpZiB0aGUgY29uc3RhbnQgKGN1cnJlbnRseSA4KSBpc1xuICAgICBzZXQgPD0gMSAqKVxuICBpZiBoaSAtIGxvIDw9IDhcbiAgdGhlbiBsbywgaGlcbiAgZWxzZSAoXG4gICAgbGV0IG1pZCA9IGxvICsgKChoaSAtIGxvKSAvIDIpIGluXG4gICAgaWYgcHJlZCAoZ2V0IHQgbWlkKVxuICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCBpcyBiZXR3ZWVuIFtsb10gYW5kIFttaWRdICopXG4gICAgdGhlblxuICAgICAgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGk6bWlkIH5wcmVkXG4gICAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQsIGlmIGl0IGV4aXN0cyxcbiAgICAgICAgIGlzIGJldHdlZW4gW21pZCsxXSBhbmQgW2hpXSAqKVxuICAgIGVsc2UgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobWlkICsgMSkgfmhpIH5wcmVkKVxuOztcblxubGV0IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxvID0gcG9zIGluXG4gIGxldCBoaSA9IHBvcyArIGxlbiAtIDEgaW5cbiAgbGV0IGxvLCBoaSA9IGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkIGluXG4gIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYW4gYXJyYXkgd2l0aCBzaGFwZSBbdHJ1ZSwuLi50cnVlLGZhbHNlLC4uLmZhbHNlXSAoaS5lLiwgdGhlIF9yZXZlcnNlXyBvZiB3aGF0XG4gICBpcyBkZXNjcmliZWQgYWJvdmUpIGFuZCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB0cnVlIG9yIE5vbmUgaWYgdGhlcmUgYXJlIG5vXG4gICB0cnVlKilcbmxldCBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+cHJlZCB+Z2V0IH5sZW5ndGggPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgKCogVGhlIGxhc3Qgc2F0aXNmeWluZyBpcyB0aGUgb25lIGp1c3QgYmVmb3JlIHRoZSBmaXJzdCBub3Qgc2F0aXNmeWluZyAqKVxuICAgIG1hdGNoXG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgfnBvcyB+bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBub3QgKHByZWQgeCkpXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICgqIFRoaXMgbWVhbnMgdGhhdCBhbGwgZWxlbWVudHMgc2F0aXNmeSBwcmVkLlxuICAgICAgIFRoZXJlIGlzIGF0IGxlYXN0IGFuIGVsZW1lbnQgYXMgKGxlbiA+IDApICopXG4gICAgfCBTb21lIGkgd2hlbiBpID0gcG9zIC0+IE5vbmUgKCogbm8gZWxlbWVudCBzYXRpc2ZpZXMgcHJlZCAqKVxuICAgIHwgU29tZSBpIC0+IFNvbWUgKGkgLSAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoXG4gICAgICA/cG9zXG4gICAgICA/bGVuXG4gICAgICB0XG4gICAgICB+bGVuZ3RoOigobGVuZ3RoIDogXyAtPiBfKSBbQGxvY2FsXSlcbiAgICAgIH5nZXQ6KChnZXQgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICBob3dcbiAgICAgIHZcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKSBbQG5vbnRhaWxcbiAgICBdXG4gIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKSBbQG5vbnRhaWxcbiAgICBdXG4gIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgW0Bub250YWlsXG4gICAgXVxuICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApIFtAbm9udGFpbFxuICAgIF1cbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnNlZ21lbnRfb2YgaG93ID1cbiAgbGV0IGlzX2xlZnQgeCA9XG4gICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICB8IGBSaWdodCAtPiBmYWxzZVxuICBpblxuICBsZXQgaXNfcmlnaHQgeCA9IG5vdCAoaXNfbGVmdCB4KSBpblxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X29uX2xlZnQgLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfbGVmdCBbQG5vbnRhaWxdXG4gIHwgYEZpcnN0X29uX3JpZ2h0IC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+cHJlZDppc19yaWdodCBbQG5vbnRhaWxdXG47O1xuIiwiKCoqIE1vZHVsZSB0eXBlcyBmb3IgYSBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb24gZm9yIGEgc2VxdWVuY2UsIGFuZCBmdW5jdG9ycyBmb3IgYnVpbGRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIEFuIFtJbmRleGFibGVdIHR5cGUgaXMgYSBmaW5pdGUgc2VxdWVuY2Ugb2YgZWxlbWVudHMgaW5kZXhlZCBieSBjb25zZWN1dGl2ZSBpbnRlZ2Vyc1xuICAgIFswXSAuLi4gW2xlbmd0aCB0IC0gMV0uICBbZ2V0XSBhbmQgW2xlbmd0aF0gbXVzdCBiZSBPKDEpIGZvciB0aGUgcmVzdWx0aW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIHRvIGJlIGxnKG4pLiAqKVxubW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gIHZhbCBnZXQgOiB0IC0+IGludCAtPiBlbHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID1cbiAgICAoWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgOyBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgTGFzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgIF1cbiAgICAgOiB0IGxpc3QpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X29uX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID0gKFsgYExhc3Rfb25fbGVmdDsgYEZpcnN0X29uX3JpZ2h0IF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG50eXBlICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IGNvbXBhcmU6KCgnZWx0IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAtPiBXaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgLT4gJ2tleVxuICAtPiBpbnQgb3B0aW9uXG5cbnR5cGUgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IHNlZ21lbnRfb2Y6KCgnZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAtPiBpbnQgb3B0aW9uXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgKCoqIFNlZSBbQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKHQsIGVsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGluIGJpbmFyeV9zZWFyY2gubWwgKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKHQsIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgQmluYXJ5X3NlYXJjaGFibGUgPSBzaWdcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBJbmRleGFibGUgPSBJbmRleGFibGVcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IEluZGV4YWJsZTFcblxuICBtb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IFdoaWNoX3RhcmdldF9ieV9rZXlcbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnRcblxuICB0eXBlIG5vbnJlYyAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9ICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICBtb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCB3aXRoIHR5cGUgZWx0IDo9IFQuZWx0XG4gIG1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlICdhIGVsdFxuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgZWx0XG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogQXJnKSA9IHN0cnVjdFxuICBsZXQgZ2V0ID0gVC5nZXRcbiAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIEJpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfmNvbXBhcmUgaG93IHZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+c2VnbWVudF9vZiBob3dcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICB0eXBlICdhIGVsdCA9IFQuZWx0XG4gICAgdHlwZSAnYSB0ID0gVC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UxIChUIDogSW5kZXhhYmxlMSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gIGVuZClcbiIsIigqIFtCeXRlczBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW1N0ZGxpYi5CeXRlc10uIFtCeXRlczBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzc1xuICAgdGhlIHBhcnQgb2YgW1N0ZGxpYi5CeXRlc10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXJcbiAgIHRoYW4gYnl0ZXMwLm1sIHNob3VsZCB1c2UgW1N0ZGxpYi5CeXRlc10uIFtCeXRlczBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmRcbiAgIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQnl0ZXNdIGluXG4gICBidWlsZCBvcmRlciBzaG91bGQgZG86XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBCeXRlcyAgPSBCeXRlczBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgQnl0ZXMgPSBCeXRlczBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHNcbiAgIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQnl0ZXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiAoYnl0ZXNbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IChieXRlc1tAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gY2hhclxuICAgID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGNoYXJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoY2hhcltAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcblxuICAoKiBbdW5zYWZlX2JsaXRfc3RyaW5nXSBpcyBub3QgZXhwb3J0ZWQgaW4gdGhlIFtzdGRsaWJdIHNvIHdlIGV4cG9ydCBpdCBoZXJlICopXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIDogIHNyYzooc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50NjRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnQ2NFxuICAgID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50NjRbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50MzJcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnQzMlxuICAgID0gXCIlY2FtbF9ieXRlc19nZXQzMnVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzJcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50MzJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50MTZcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5lbmRcblxuaW5jbHVkZSBQcmltaXRpdmVzXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgYmxpdCA9IFN0ZGxpYi5CeXRlcy5ibGl0XG5sZXQgYmxpdF9zdHJpbmcgPSBTdGRsaWIuQnl0ZXMuYmxpdF9zdHJpbmdcbmxldCBjb21wYXJlID0gU3RkbGliLkJ5dGVzLmNvbXBhcmVcbmxldCBjb3B5ID0gU3RkbGliLkJ5dGVzLmNvcHlcbmxldCBjcmVhdGUgPSBTdGRsaWIuQnl0ZXMuY3JlYXRlXG5cbmV4dGVybmFsIHVuc2FmZV9jcmVhdGVfbG9jYWwgOiBpbnQgLT4gKGJ5dGVzW0Bsb2NhbF0pID0gXCJCYXNlX3Vuc2FmZV9jcmVhdGVfbG9jYWxfYnl0ZXNcIlxuW0BAbm9hbGxvY11cblxubGV0IGNyZWF0ZV9sb2NhbCBsZW4gPVxuICBcbiAgICAoaWYgbGVuID4gU3lzMC5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuY3JlYXRlX2xvY2FsXCI7XG4gICAgIHVuc2FmZV9jcmVhdGVfbG9jYWwgbGVuKVxuOztcblxubGV0IGZpbGwgPSBTdGRsaWIuQnl0ZXMuZmlsbFxubGV0IG1ha2UgPSBTdGRsaWIuQnl0ZXMubWFrZVxuXG5sZXQgbWFwIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGlmIGwgPSAwXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBtYXBpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgaWYgbCA9IDBcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgc3ViID0gU3RkbGliLkJ5dGVzLnN1YlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAtPiBzcmNfcG9zOmludFxuICAtPiBkc3Q6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImNhbWxfYmxpdF9ieXRlc1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLkJ5dGVzLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IFN0ZGxpYi5CeXRlcy5vZl9zdHJpbmdcblxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZ1xuICA6ICBub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgLT4gKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nX3Byb21pc2Vfbm9fbXV0YXRpb25cbiAgOiAgKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgLT4gKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNlcXVlbmNlX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgbGVuZ3RoIDogKF8gdFtAbG9jYWxdKSAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5cbiAgICAoU3JjIDogU2VxdWVuY2VfZ2VuKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgU3JjLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSBTcmMudCwgJ2EgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdW5zYWZlX2JsaXQgPSBEc3QudW5zYWZlX2JsaXRcblxuICBsZXQgYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpzcmNfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihTcmMubGVuZ3RoIHNyYyk7XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpkc3RfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihEc3QubGVuZ3RoIGRzdCk7XG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IGJsaXRvXG4gICAgICAgIH5zcmNcbiAgICAgICAgPyhzcmNfcG9zID0gMClcbiAgICAgICAgPyhzcmNfbGVuID0gU3JjLmxlbmd0aCBzcmMgLSBzcmNfcG9zKVxuICAgICAgICB+ZHN0XG4gICAgICAgID8oZHN0X3BvcyA9IDApXG4gICAgICAgICgpXG4gICAgPVxuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuOnNyY19sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gICgqIFtzdWJdIGFuZCBbc3Vib10gZW5zdXJlIHRoYXQgZXZlcnkgcG9zaXRpb24gb2YgdGhlIGNyZWF0ZWQgc2VxdWVuY2UgaXMgcG9wdWxhdGVkIGJ5XG4gICAgIGFuIGVsZW1lbnQgb2YgdGhlIHNvdXJjZSBhcnJheS4gIFRodXMgZXZlcnkgZWxlbWVudCBvZiBbZHN0XSBiZWxvdyBpcyB3ZWxsXG4gICAgIGRlZmluZWQuICopXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIGxldCBkc3QgPSBEc3QuY3JlYXRlX2xpa2UgfmxlbiBzcmMgaW5cbiAgICBpZiBsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gICAgc3ViXG4gICAgICBzcmNcbiAgICAgIH5wb3NcbiAgICAgIH5sZW46XG4gICAgICAgIChtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgfCBOb25lIC0+IFNyYy5sZW5ndGggc3JjIC0gcG9zKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMSAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIFNlcXVlbmNlX2dlblxuXG4gICAgdmFsIGNyZWF0ZV9saWtlIDogbGVuOmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgdCwgJ2EgdCkgYmxpdFxuICBlbmQpID1cbiAgTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlMV9nZW5lcmljIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSkgPSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcblxubW9kdWxlIE1ha2UgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gdFxuICAgIHZhbCB1bnNhZmVfYmxpdCA6ICh0LCB0KSBibGl0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IFNlcXVlbmNlLnRcblxuICAgIG9wZW4gU2VxdWVuY2VcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmRcblxuICBpbmNsdWRlIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0XG4gICAgKFNyYyA6IFNlcXVlbmNlKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBNYWtlX2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFNyYy50XG5cbiAgICAgIG9wZW4gU3JjXG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gRHN0LnRcblxuICAgICAgb3BlbiBEc3RcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICAgIGVuZClcblxubW9kdWxlIE1ha2VfdG9fc3RyaW5nIChUIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZClcbiAgICAoVG9fYnl0ZXMgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gVC50IHdpdGggdHlwZSBkc3QgOj0gYnl0ZXMpID1cbnN0cnVjdFxuICBvcGVuIFRvX2J5dGVzXG5cbiAgbGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgICBCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooc3ViIHNyYyB+cG9zIH5sZW4pXG4gIDs7XG5cbiAgbGV0IHN1Ym8gP3BvcyA/bGVuIHNyYyA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1Ym8gP3BvcyA/bGVuIHNyYylcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEVpdGhlcl9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEVpdGhlcjBcblxubGV0IHN3YXAgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gU2Vjb25kIHhcbiAgfCBTZWNvbmQgeCAtPiBGaXJzdCB4XG47O1xuXG5sZXQgaXNfZmlyc3QgPSBmdW5jdGlvblxuICB8IEZpcnN0IF8gLT4gdHJ1ZVxuICB8IFNlY29uZCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc2Vjb25kID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IGZhbHNlXG4gIHwgU2Vjb25kIF8gLT4gdHJ1ZVxuOztcblxubGV0IHZhbHVlIChGaXJzdCB4IHwgU2Vjb25kIHgpID0geFxuXG5sZXQgdmFsdWVfbWFwIHQgfmZpcnN0IH5zZWNvbmQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGaXJzdCB4IC0+IGZpcnN0IHhcbiAgfCBTZWNvbmQgeCAtPiBzZWNvbmQgeFxuOztcblxubGV0IGl0ZXIgPSB2YWx1ZV9tYXBcblxubGV0IG1hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBGaXJzdCAoZmlyc3QgeClcbiAgfCBTZWNvbmQgeCAtPiBTZWNvbmQgKHNlY29uZCB4KVxuOztcblxubGV0IGZpcnN0IHggPSBGaXJzdCB4XG5sZXQgc2Vjb25kIHggPSBTZWNvbmQgeFxuXG5sZXQgZXF1YWwgZXExIGVxMiB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBlcTEgeCB5XG4gIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IGVxMiB4IHlcbiAgfCBGaXJzdCBfLCBTZWNvbmQgXyB8IFNlY29uZCBfLCBGaXJzdCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaW52YXJpYW50IGYgcyA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBmIHhcbiAgfCBTZWNvbmQgeSAtPiBzIHlcbjs7XG5cbm1vZHVsZSBGb2N1cyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRm9jdXMgb2YgeyB2YWx1ZSA6ICdhIFtAZ2xvYmFsXSB9XG4gICAgfCBPdGhlciBvZiB7IHZhbHVlIDogJ2IgW0BnbG9iYWxdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZV9mb2N1c2VkIChNIDogc2lnXG4gICAgdHlwZSAoKydhLCArJ2IpIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICB2YWwgb3RoZXIgOiAnYiAtPiAoXywgJ2IpIHRcbiAgICB2YWwgZm9jdXMgOiAoJ2EsICdiKSB0IC0+ICgoJ2EsICdiKSBGb2N1cy50W0Bsb2NhbF0pXG5cbiAgICB2YWwgY29tYmluZVxuICAgICAgOiAgKCdhLCAnZCkgdFxuICAgICAgLT4gKCdiLCAnZCkgdFxuICAgICAgLT4gZjooKCdhIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgICAgLT4gb3RoZXI6KCgnZCAtPiAnZCAtPiAnZClbQGxvY2FsXSlcbiAgICAgIC0+ICgnYywgJ2QpIHRcblxuICAgIHZhbCBiaW5kIDogKCdhLCAnYikgdCAtPiBmOigoJ2EgLT4gKCdjLCAnYikgdClbQGxvY2FsXSkgLT4gKCdjLCAnYikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cbiAgb3BlbiBXaXRoX3JldHVyblxuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgbGV0IHJlcyA9IGJpbmQgdCB+ZjooZnVuIHggLT4gcmV0dXJuIChmIHgpKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFwcCA9IEFwcGxpY2F0aXZlLk1ha2UyX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5cbiAgICAgIGxldCBtYXAyIDogKCdhLCAneCkgdCAtPiAoJ2IsICd4KSB0IC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSkgLT4gKCdjLCAneCkgdCA9XG4gICAgICAgIGZ1biB0MSB0MiB+ZiAtPlxuICAgICAgICBiaW5kIHQxIH5mOihmdW4geCAtPiBiaW5kIHQyIH5mOihmdW4geSAtPiByZXR1cm4gKGYgeCB5KSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBcHBcblxuICBsZXQgY29tYmluZV9hbGwgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIChtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICAgICAgIHwgRm9jdXMgXyAtPiBvdGhlcl9sb29wIGYgYWNjIHRzXG4gICAgICAgICB8IE90aGVyIG8gLT4gb3RoZXJfbG9vcCBmIChmIGFjYyBvLnZhbHVlKSB0cylcbiAgICBpblxuICAgIGxldCByZWMgcmV0dXJuX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIHggLT4gcmV0dXJuX2xvb3AgZiAoeC52YWx1ZSA6OiBhY2MpIHRzXG4gICAgICAgICB8IE90aGVyIG8gLT4gb3RoZXJfbG9vcCBmIG8udmFsdWUgdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiBbXSB0c1xuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbF91bml0ID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIF8gLT4gb3RoZXJfbG9vcCBmIGFjYyB0c1xuICAgICAgICAgfCBPdGhlciBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2Mgby52YWx1ZSkgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIHsgdmFsdWUgPSAoKSB9IC0+IHJldHVybl9sb29wIGYgdHNcbiAgICAgICAgIHwgT3RoZXIgeyB2YWx1ZSA9IG8gfSAtPiBvdGhlcl9sb29wIGYgbyB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIHRzXG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID1cbiAgICBtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICB8IEZvY3VzIHggLT4gU29tZSB4LnZhbHVlXG4gICAgfCBPdGhlciBfIC0+IE5vbmVcbiAgOztcblxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgfCBGb2N1cyB4IC0+IHgudmFsdWVcbiAgICB8IE90aGVyIF8gLT4gZGVmYXVsdFxuICA7O1xuXG4gIGxldCB3aXRoX3JldHVybiBmID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHJldCAtPiBvdGhlciAoZiAoV2l0aF9yZXR1cm4ucHJlcGVuZCByZXQgfmY6cmV0dXJuKSkpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlyc3QgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gZmlyc3RcbiAgICBsZXQgb3RoZXIgPSBzZWNvbmRcblxuICAgIGxldCBmb2N1cyB0IDogXyBGb2N1cy50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IEZvY3VzIHsgdmFsdWUgPSB4IH1cbiAgICAgIHwgU2Vjb25kIHkgLT4gT3RoZXIgeyB2YWx1ZSA9IHkgfVxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAoZiB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKG90aGVyIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIF8gfCBfLCBTZWNvbmQgeCAtPiBTZWNvbmQgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24uICopXG4gICAgICB8IFNlY29uZCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFNlY29uZCA9IE1ha2VfZm9jdXNlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCByZXR1cm4gPSBzZWNvbmRcbiAgICBsZXQgb3RoZXIgPSBmaXJzdFxuXG4gICAgbGV0IGZvY3VzIHQgOiBfIEZvY3VzLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB4IC0+IEZvY3VzIHsgdmFsdWUgPSB4IH1cbiAgICAgIHwgRmlyc3QgeSAtPiBPdGhlciB7IHZhbHVlID0geSB9XG4gICAgOztcblxuICAgIGxldCBjb21iaW5lIHQxIHQyIH5mIH5vdGhlciA9XG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChmIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAob3RoZXIgeCB5KVxuICAgICAgfCBGaXJzdCB4LCBfIHwgXywgRmlyc3QgeCAtPiBGaXJzdCB4XG4gICAgOztcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24sIGxpa2UgW0ZpcnN0LmJpbmRdIGFib3ZlLiAqKVxuICAgICAgfCBGaXJzdCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlICgnZiwgJ3MpIF9laXRoZXIgPSAoJ2YsICdzKSB0ID1cbiAgICB8IEZpcnN0IG9mICdmXG4gICAgfCBTZWNvbmQgb2YgJ3NcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfb3B0aW9uXG5cbiAgbGV0IGdsb2JhbGl6ZSA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0ID1cbiAgICBmdW4gKHR5cGUgYV9fMDA1XylcbiAgICAgICAgOiAoKChhX18wMDVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8pIC0+IChhX18wMDVfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA1XyB0KSAtPlxuICAgICAgZ2xvYmFsaXplX29wdGlvblxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBoYXNoX2ZvbGRfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gICAgb3B0aW9uX29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBzZXhwX29mX29wdGlvblxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBvcHRpb25fc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSBvcHRpb25cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBnbG9iYWxpemUgOiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgfCBOb25lXG4gIHwgU29tZSBvZiAnYVxuXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NvbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHZhbHVlX21hcCBvIH5kZWZhdWx0IH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IGYgeFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuOztcblxubGV0IGl0ZXIgbyB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxuXG5sZXQgY2FsbCB4IH5mID1cbiAgbWF0Y2ggZiB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPiBmIHhcbjs7XG5cbmxldCB2YWx1ZSB0IH5kZWZhdWx0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBkZWZhdWx0XG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCB2YWx1ZV9leG4gP2hlcmUgP2Vycm9yID9tZXNzYWdlIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggaGVyZSwgZXJyb3IsIG1lc3NhZ2Ugd2l0aFxuICAgICAgfCBOb25lLCBOb25lLCBOb25lIC0+IEVycm9yLm9mX3N0cmluZyBcIk9wdGlvbi52YWx1ZV9leG4gTm9uZVwiXG4gICAgICB8IE5vbmUsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5vZl9zdHJpbmcgbVxuICAgICAgfCBOb25lLCBTb21lIGUsIE5vbmUgLT4gZVxuICAgICAgfCBOb25lLCBTb21lIGUsIFNvbWUgbSAtPiBFcnJvci50YWcgZSB+dGFnOm1cbiAgICAgIHwgU29tZSBwLCBOb25lLCBOb25lIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZSBcIk9wdGlvbi52YWx1ZV9leG5cIiBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBOb25lLCBTb21lIG0gLT4gRXJyb3IuY3JlYXRlIG0gcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgU29tZSBlLCBfIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICh2YWx1ZSBtZXNzYWdlIH5kZWZhdWx0OlwiXCIpXG4gICAgICAgICAgKGUsIHApXG4gICAgICAgICAgKHNleHBfb2ZfcGFpciBFcnJvci5zZXhwX29mX3QgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdClcbiAgICBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgdmFsdWVfb3JfdGh1bmsgbyB+ZGVmYXVsdCA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0ICgpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgeCAtPiBbfCB4IHxdXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgeCAtPiBbIHggXVxuOztcblxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZTpfID0gdFxubGV0IG1heF9lbHQgdCB+Y29tcGFyZTpfID0gdFxuXG5sZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICB2YWx1ZV9tYXAgdCB+ZGVmYXVsdDpNLnplcm8gfmZcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYScgLT4gZXF1YWwgYSBhJ1xuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBfIC0+IDFcbjs7XG5cbmxldCBpc19lbXB0eSA9IGlzX25vbmVcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgeCAtPiBmIGluaXQgeFxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGEgLT4gaWYgZiBhIHRoZW4gMSBlbHNlIDBcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gaWYgZiB4IHRoZW4gdCBlbHNlIE5vbmVcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGVxdWFsIGYgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeCcgLT4gZiB4IHgnXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNvbWUgeCA9IFNvbWUgeFxuXG5sZXQgZmlyc3Rfc29tZSB4IHkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIF8gLT4geFxuICB8IE5vbmUgLT4geVxuOztcblxubGV0IHNvbWVfaWYgY29uZCB4ID0gaWYgY29uZCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcblxubGV0IG1lcmdlIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBTb21lIChmIGEgYilcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgdiBhcyBvIHdoZW4gZiB2IC0+IG9cbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aCBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcbjs7XG5cbm1vZHVsZSBNb25hZF9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBiaW5kIG8gfmYgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBNb25hZC5NYWtlX2xvY2FsIChNb25hZF9hcmcpXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZV9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBtYXAyIHggeSB+ZiA9XG4gICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHgsIFNvbWUgeSAtPiBTb21lIChmIHggeSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMl9sb2NhbCAoQXBwbGljYXRpdmVfYXJnKVxuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCb29sMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBib29sXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfYm9vbCA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBmYWxzZTsgdHJ1ZSBdIDogdCBsaXN0KVxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9ib29sIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Jvb2xcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Jvb2wgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGJvb2xfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYm9vbCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBib29sX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICAgIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gICAgfCBzIC0+IGludmFsaWRfYXJnZiBcIkJvb2wub2Zfc3RyaW5nOiBleHBlY3RlZCB0cnVlIG9yIGZhbHNlIGJ1dCBnb3QgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfYm9vbFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJvb2xcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgdG9faW50IHggPSBib29sX3RvX2ludCB4XG5cbm1vZHVsZSBOb25fc2hvcnRfY2lyY3VpdGluZyA9IHN0cnVjdFxuICAoKiBXZSBkb24ndCBleHBvc2UgdGhpcywgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBicmVhayB0aGUgaW52YXJpYW50IG1lbnRpb25lZCBiZWxvdyBvZlxuICAgICAodG9faW50IHRydWUgPSAxKSBhbmQgKHRvX2ludCBmYWxzZSA9IDApLiAqKVxuICBsZXQgdW5zYWZlX29mX2ludCAoeCA6IGludCkgOiBib29sID0gU3RkbGliLk9iai5tYWdpYyB4XG4gIGxldCAoIHx8ICkgYSBiID0gdW5zYWZlX29mX2ludCAodG9faW50IGEgbG9yIHRvX2ludCBiKVxuICBsZXQgKCAmJiApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxhbmQgdG9faW50IGIpXG5lbmRcblxuKCogV2UgZG8gdGhpcyBhcyBhIGRpcmVjdCBhc3NlcnQgb24gdGhlIHRoZW9yeSB0aGF0IGl0J3MgYSBjaGVhcCB0aGluZyB0byB0ZXN0IGFuZCBhXG4gICByZWFsbHkgY29yZSBpbnZhcmlhbnQgdGhhdCB3ZSBuZXZlciBleHBlY3QgdG8gYnJlYWssIGFuZCB3ZSBzaG91bGQgYmUgaGFwcHkgZm9yIGFcbiAgIHByb2dyYW0gdG8gZmFpbCBpbW1lZGlhdGVseSBpZiB0aGlzIGlzIHZpb2xhdGVkLiAqKVxubGV0ICgpID0gYXNzZXJ0IChQb2x5LiggPSApICh0b19pbnQgdHJ1ZSkgMSAmJiBQb2x5LiggPSApICh0b19pbnQgZmFsc2UpIDApXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbnRhaW5lcl9pbnRmLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgTGlzdCA9IExpc3QxXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gICgqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZlxuICAgICB0aGUgc2VxdWVuY2UgKilcbiAgdHlwZSAoJ2EsICdzKSB0ID1cbiAgICB8IERvbmVcbiAgICB8IFNraXAgb2YgeyBzdGF0ZSA6ICdzIH1cbiAgICB8IFlpZWxkIG9mXG4gICAgICAgIHsgdmFsdWUgOiAnYVxuICAgICAgICA7IHN0YXRlIDogJ3NcbiAgICAgICAgfVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAncy5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgncyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAncykgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDExXyBzX18wMTJfKVxuICAgICAgICA6ICAoKGFfXzAxMV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDEyXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDExXywgc19fMDEyXykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzAwMV8gX29mX3NfXzAwMl8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBEb25lIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkRvbmVcIlxuICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHN0YXRlX18wMDRfIH0gLT5cbiAgICAgICAgICBsZXQgYm5kc19fMDAzXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgICAgICBsZXQgYXJnX18wMDVfID0gX29mX3NfXzAwMl8gc3RhdGVfXzAwNF8gaW5cbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGF0ZVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlNraXBcIiA6OiBibmRzX18wMDNfKVxuICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB2YWx1ZV9fMDA3Xzsgc3RhdGUgPSBzdGF0ZV9fMDA5XyB9IC0+XG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDEwXyA9IF9vZl9zX18wMDJfIHN0YXRlX18wMDlfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhdGVcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDA4XyA9IF9vZl9hX18wMDFfIHZhbHVlX18wMDdfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidmFsdWVcIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJZaWVsZFwiIDo6IGJuZHNfXzAwNl8pXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5vcGVuIFN0ZXBcblxuKCogJ2EgaXMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UsICdzIGlzIHRoZSBzdGF0ZSB0aGF0IHdpbGwgcHJvZHVjZSB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgc2VxdWVuY2UgKilcbnR5cGUgK18gdCA9XG4gIHwgU2VxdWVuY2UgOlxuICAgICAgeyBzdGF0ZSA6ICdzXG4gICAgICA7IG5leHQgOiAncyAtPiAoJ2EsICdzKSBTdGVwLnRcbiAgICAgIH1cbiAgICAgIC0+ICdhIHRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgbmV4dF9zdGVwIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSkgPVxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IH1cbiAgOztcblxuICBsZXQgZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGxvb3AgcyBuZXh0IGZpbmlzaCBmIGFjYyA9XG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGYgYWNjIE5vbmUgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gZiBhY2MgKFNvbWUgYSkgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgIGluXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0IGZpbmlzaCBmIGluaXRcbiAgOztcbmVuZFxuXG5sZXQgdW5mb2xkX3N0ZXAgfmluaXQgfmYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gaW5pdDsgbmV4dCA9IGYgfVxuXG5sZXQgdW5mb2xkIH5pbml0IH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQgfmY6KGZ1biBzIC0+XG4gICAgbWF0Y2ggZiBzIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RlcC5Eb25lXG4gICAgfCBTb21lIChhLCBzKSAtPiBTdGVwLllpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSlcbjs7XG5cbmxldCB1bmZvbGRfd2l0aCBzIH5pbml0IH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gaW5pdCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChzZWVkLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzZWVkLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGYgc2VlZCBhIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VlZCB9IC0+IFNraXAgeyBzdGF0ZSA9IHNlZWQsIHMgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gc2VlZCB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHNlZWQsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgdW5mb2xkX3dpdGhfYW5kX2ZpbmlzaCBzIH5pbml0IH5ydW5uaW5nX3N0ZXAgfmlubmVyX2ZpbmlzaGVkIH5maW5pc2hpbmdfc3RlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChpbml0LCBzKVxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHN0YXRlIC0+XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBuZXh0IGlubmVyX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX2ZpbmlzaGVkIChpbm5lcl9maW5pc2hlZCBzdGF0ZSkgfVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gaW5uZXJfc3RhdGUgfSAtPlxuICAgICAgICAgICAgICAgICAgU2tpcCB7IHN0YXRlID0gYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gaW5uZXJfc3RhdGUgfSAtPlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHJ1bm5pbmdfc3RlcCBzdGF0ZSB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlIH0gLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgfVxuICAgICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHk7IHN0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIH0pKVxuICAgICAgICAgICAgIHwgYElubmVyX2ZpbmlzaGVkIHN0YXRlIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggZmluaXNoaW5nX3N0ZXAgc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSW5uZXJfZmluaXNoZWQgc3RhdGUgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHk7IHN0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSA9IGBJbm5lcl9maW5pc2hlZCBzdGF0ZSB9KSlcbiAgICAgIH1cbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpsIH5mOihmdW5jdGlvblxuICAgIHwgW10gLT4gRG9uZVxuICAgIHwgeCA6OiBsIC0+IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IGwgfSlcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCB2IG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gdlxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyB2IG5leHQgZlxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoZiB2IGEpIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBpbml0IG5leHQgZlxuOztcblxubGV0IHRvX2xpc3RfcmV2IHQgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKVxuXG5cbmxldCB0b19saXN0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSA9XG4gIGxldCBzYWZlX3RvX2xpc3QgdCA9IExpc3QucmV2ICh0b19saXN0X3JldiB0KSBpblxuICBsZXQgcmVjIHRvX2xpc3QgcyBuZXh0IGkgPVxuICAgIGlmIGkgPSAwXG4gICAgdGhlbiBzYWZlX3RvX2xpc3QgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IFtdXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiB0b19saXN0IHMgbmV4dCBpXG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBhIDo6IHRvX2xpc3QgcyBuZXh0IChpIC0gMSkpXG4gIGluXG4gIHRvX2xpc3QgcyBuZXh0IDUwMFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X3Ygc3RvcF92ID1cbiAgbGV0IHN0ZXAgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgYGluY2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID4gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBpOyBzdGF0ZSA9IGkgKyBzdHJpZGUgfVxuICAgIHwgYGluY2x1c2l2ZSAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA8IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgICB8IGBleGNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gICAgfCBgZXhjbHVzaXZlIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpIDw9IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgaW5cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfdlxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBzdGFydF92ICsgc3RyaWRlXG4gIGluXG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOnN0ZXBcbjs7XG5cbmxldCBvZl9sYXp5IHRfbGF6eSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnRfbGF6eSB+ZjooZnVuIHRfbGF6eSAtPlxuICAgIGxldCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPSBMYXp5LmZvcmNlIHRfbGF6eSBpblxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgU2tpcFxuICAgICAgICB7IHN0YXRlID1cbiAgICAgICAgICAgIChsZXQgdiA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gaW5cbiAgICAgICAgICAgICBsYXp5IHYpXG4gICAgICAgIH1cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgWWllbGRcbiAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgOyBzdGF0ZSA9XG4gICAgICAgICAgICAobGV0IHYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IGluXG4gICAgICAgICAgICAgbGF6eSB2KVxuICAgICAgICB9KVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc2VlZFxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHNlZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGYgYTsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gZiBpIGE7IHN0YXRlID0gaSArIDEsIHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgYWNjIHggaW5cbiAgICBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBhY2MgfSlcbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQ6KDAsIGluaXQpIH5mOihmdW4gKGksIGFjYykgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGkgYWNjIHggaW5cbiAgICBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBpICsgMSwgYWNjIH0pXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBzZWVkXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gc2VlZCAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbWFwIH5mOnNuZCAoZmlsdGVyIChtYXBpIHQgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKSlcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIGxldCByZWMgbG9vcCBpIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gaVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgaSBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIChpICsgMSkgcyBuZXh0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6KFtdLCAwKSB+ZjooZnVuIChsLCBpKSB4IC0+IHggOjogbCwgaSArIDEpXG5cbmxldCB0b19hcnJheSB0ID1cbiAgbGV0IGwsIGxlbiA9IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IHggOjogbCAtPlxuICAgIGxldCBhID0gQXJyYXkuY3JlYXRlIH5sZW4geCBpblxuICAgIGxldCByZWMgbG9vcCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgYS4oaSkgPC0geDtcbiAgICAgICAgbG9vcCAoaSAtIDEpIGxcbiAgICBpblxuICAgIGxvb3AgKGxlbiAtIDIpIGw7XG4gICAgYVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gZiBhIC0+IFNvbWUgYVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZlxuICAgICAgIHwgc29tZV9iIC0+IHNvbWVfYilcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggZiBpIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBub3QgKGYgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gbm90IChmIGkgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgaSBhIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+ICgpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICBmIGE7XG4gICAgICBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIF8gLT4gZmFsc2VcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBhID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gXyB9IHdoZW4gZXF1YWwgYSBiIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBhXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgYSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZW1wdHkgPSBTZXF1ZW5jZSB7IHN0YXRlID0gKCk7IG5leHQgPSAoZnVuICgpIC0+IERvbmUpIH1cblxubGV0IGJpbmQgdCB+ZiA9XG4gIHVuZm9sZF9zdGVwXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0sIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICB8IERvbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGVtcHR5LCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGYgYSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSB9KSlcbiAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0sIHJlc3QgfVxuICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSwgcmVzdCB9KSlcbiAgICB+aW5pdDooZW1wdHksIHQpXG47O1xuXG5sZXQgcmV0dXJuIHggPVxuICB1bmZvbGRfc3RlcCB+aW5pdDooU29tZSB4KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRG9uZVxuICAgIHwgU29tZSB4IC0+IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IE5vbmUgfSlcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kKVxuXG5sZXQgbnRoIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBOb25lXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgcyBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICBpZiBwaHlzX2VxdWFsIGkgMCB0aGVuIFNvbWUgYSBlbHNlIGxvb3AgKGkgLSAxKSBzIG5leHRcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIG4gcyBuZXh0KVxuOztcblxubGV0IG50aF9leG4gcyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLm50aFwiXG4gIGVsc2UgKFxuICAgIG1hdGNoIG50aCBzIG4gd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLm50aFwiXG4gICAgfCBTb21lIHggLT4geClcbjs7XG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAxM18gYl9fMDE0XyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDEzXyBiX18wMTRfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTNfLCBiX18wMTRfIHdpdGhcbiAgICAgIHwgTGVmdCBfYV9fMDE1XywgTGVmdCBfYl9fMDE2XyAtPiBfY21wX19hIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IExlZnQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBMZWZ0IF8gLT4gMVxuICAgICAgfCBSaWdodCBfYV9fMDE3XywgUmlnaHQgX2JfXzAxOF8gLT4gX2NtcF9fYiBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBSaWdodCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFJpZ2h0IF8gLT4gMVxuICAgICAgfCBCb3RoIChfYV9fMDE5XywgX2FfXzAyMV8pLCBCb3RoIChfYl9fMDIwXywgX2JfXzAyMl8pIC0+XG4gICAgICAgIChtYXRjaCBfY21wX19hIF9hX18wMTlfIF9iX18wMjBfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19iIF9hX18wMjFfIF9iX18wMjJfXG4gICAgICAgICB8IG4gLT4gbikpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90XG4gICAgOiB0eXBlIGEgYi5cbiAgICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgICAtPiAoYSwgYikgdFxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICB8IExlZnQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgfCBSaWdodCBfYTAgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG4gICAgICB8IEJvdGggKF9hMCwgX2ExKSAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyIGluXG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgICBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNDZfIGJfXzA0N18pXG4gICAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzA0Nl8pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDQ3XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgICAtPiAoYV9fMDQ2XywgYl9fMDQ3XykgdCkgLT5cbiAgICAgIGxldCBlcnJvcl9zb3VyY2VfXzAyN18gPSBcInNlcXVlbmNlLm1sLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnRcIiBpblxuICAgICAgZnVuIF9vZl9hX18wMjNfIF9vZl9iX18wMjRfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJsZWZ0XCIgfCBcIkxlZnRcIikgYXMgX3RhZ19fMDMwXykgOjogc2V4cF9hcmdzX18wMzFfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMjlfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDMxXyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wMzJfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDMzXyA9IF9vZl9hX18wMjNfIGFyZzBfXzAzMl8gaW5cbiAgICAgICAgICAgICBMZWZ0IHJlczBfXzAzM19cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wMzBfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDI5XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIF90YWdfXzAzNV8pIDo6IHNleHBfYXJnc19fMDM2XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM0XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzNl8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDM3XyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzOF8gPSBfb2ZfYl9fMDI0XyBhcmcwX18wMzdfIGluXG4gICAgICAgICAgICAgUmlnaHQgcmVzMF9fMDM4X1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyN19cbiAgICAgICAgICAgICAgIF90YWdfXzAzNV9cbiAgICAgICAgICAgICAgIF9zZXhwX18wMzRfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiYm90aFwiIHwgXCJCb3RoXCIpIGFzIF90YWdfXzA0MF8pIDo6IHNleHBfYXJnc19fMDQxXykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM5XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA0MV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDQyXzsgYXJnMV9fMDQzXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzA0NF8gPSBfb2ZfYV9fMDIzXyBhcmcwX18wNDJfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzA0NV8gPSBfb2ZfYl9fMDI0XyBhcmcxX18wNDNfIGluXG4gICAgICAgICAgICAgQm90aCAocmVzMF9fMDQ0XywgcmVzMV9fMDQ1XylcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wNDBfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDM5XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIHNleHBfXzAyOF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIHNleHBfXzAyOF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBzZXhwX18wMjhfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgfCBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNThfIGJfXzA1OV8pXG4gICAgICAgIDogICgoYV9fMDU4XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wNTlfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wNThfLCBiX18wNTlfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDQ4XyBfb2ZfYl9fMDQ5XyAtPiBmdW5jdGlvblxuICAgICAgICB8IExlZnQgYXJnMF9fMDUwXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTFfID0gX29mX2FfXzA0OF8gYXJnMF9fMDUwXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgcmVzMF9fMDUxXyBdXG4gICAgICAgIHwgUmlnaHQgYXJnMF9fMDUyXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTNfID0gX29mX2JfXzA0OV8gYXJnMF9fMDUyXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IHJlczBfXzA1M18gXVxuICAgICAgICB8IEJvdGggKGFyZzBfXzA1NF8sIGFyZzFfXzA1NV8pIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1Nl8gPSBfb2ZfYV9fMDQ4XyBhcmcwX18wNTRfXG4gICAgICAgICAgYW5kIHJlczFfXzA1N18gPSBfb2ZfYl9fMDQ5XyBhcmcxX18wNTVfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiOyByZXMwX18wNTZfOyByZXMxX18wNTdfIF1cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAgICdhICdiLlxuICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiQm90aFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmxldCBtZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KVxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pXG4gICAgICB+Y29tcGFyZVxuICA9XG4gIGxldCB1bnNoYWRvd2VkX2NvbXBhcmUgPSBjb21wYXJlIGluXG4gIGxldCBvcGVuIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50IGluXG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICAgIHwgKFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxJyB9IGFzIHMxKSwgKFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyJyB9IGFzIHMyKVxuICAgICAgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gdW5zaGFkb3dlZF9jb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8IDBcbiAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IExlZnQgYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMScgfSwgczIgfVxuICAgICAgZWxzZSBpZiBjb21wYXJpc29uID0gMFxuICAgICAgdGhlblxuICAgICAgICBZaWVsZCB7IHZhbHVlID0gQm90aCAoYSwgYik7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEnIH0sIFNraXAgeyBzdGF0ZSA9IHMyJyB9IH1cbiAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IFJpZ2h0IGI7IHN0YXRlID0gczEsIFNraXAgeyBzdGF0ZSA9IHMyJyB9IH1cbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgRG9uZSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IExlZnQgYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBEb25lIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBSaWdodCBiOyBzdGF0ZSA9IERvbmUsIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgbWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIHMxIHMyIH5jb21wYXJlID1cbiAgbWFwIChtZXJnZV93aXRoX2R1cGxpY2F0ZXMgczEgczIgfmNvbXBhcmUpIH5mOihmdW5jdGlvblxuICAgIHwgTGVmdCB4IHwgUmlnaHQgeCB8IEJvdGggKHgsIF8pIC0+IHgpXG47O1xuXG5sZXQgKG1lcmdlIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMjEtMDddIEZvciBpZGVudGljYWwgYmVoYXZpb3IsIHVzZSBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkXSwgYnV0IGNvbnNpZGVyIHVzaW5nIFxcXG4gICAgICAgIFtTZXF1ZW5jZS5tZXJnZV9zb3J0ZWRdIGluc3RlYWQuXCJdKVxuICA9XG4gIG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZFxuOztcblxubGV0IG1lcmdlX3NvcnRlZFxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSlcbiAgICAgIH5jb21wYXJlXG4gID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gICAgfCAoWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEnIH0gYXMgczEpLCAoWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczInIH0gYXMgczIpXG4gICAgICAtPlxuICAgICAgbGV0IGNvbXBhcmlzb24gPSBjb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8PSAwXG4gICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxJyB9LCBzMiB9XG4gICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMxLCBTa2lwIHsgc3RhdGUgPSBzMicgfSB9XG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIERvbmUgLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIERvbmUgfVxuICAgIHwgRG9uZSwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczIgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gRG9uZSwgU2tpcCB7IHN0YXRlID0gczIgfSB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCBoZCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gLT4gU29tZSBhXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBoZF9leG4gcyA9XG4gIG1hdGNoIGhkIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJoZF9leG5cIlxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdGwgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gYSB9IC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgKG1hdGNoIGxvb3AgcyBuZXh0IHdpdGhcbiAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfCBTb21lIHMgLT4gU29tZSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkpXG47O1xuXG5sZXQgdGxfZWFnZXJseV9leG4gcyA9XG4gIG1hdGNoIHRsIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS50bF9leG5cIlxuICB8IFNvbWUgcyAtPiBzXG47O1xuXG5sZXQgbGlmdF9pZGVudGl0eSBuZXh0IHMgPVxuICBtYXRjaCBuZXh0IHMgd2l0aFxuICB8IERvbmUgLT4gRG9uZVxuICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9XG4gIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBJZGVudGl0eSBzIH1cbjs7XG5cbmxldCBuZXh0IHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBTb21lIChhLCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgZmlsdGVyX29wdCBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gTm9uZTsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gU29tZSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZmlsdGVyX21hcCBzIH5mID0gZmlsdGVyX29wdCAobWFwIHMgfmYpXG5sZXQgZmlsdGVyX21hcGkgcyB+ZiA9IGZpbHRlcl9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBzcGxpdF9uIHMgbiA9XG4gIGxldCByZWMgbG9vcCBzIGkgYWNjdW0gbmV4dCA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiBMaXN0LnJldiBhY2N1bSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBMaXN0LnJldiBhY2N1bSwgZW1wdHlcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBpIGFjY3VtIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoaSAtIDEpIChhIDo6IGFjY3VtKSBuZXh0KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuIFtdIG5leHRcbjs7XG5cbmxldCBjaHVua3NfZXhuIHQgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UuY2h1bmtzX2V4blwiXG4gIGVsc2VcbiAgICB1bmZvbGRfc3RlcCB+aW5pdDp0IH5mOihmdW4gdCAtPlxuICAgICAgbWF0Y2ggc3BsaXRfbiB0IG4gd2l0aFxuICAgICAgfCBbXSwgX2VtcHR5IC0+IERvbmVcbiAgICAgIHwgKF8gOjogXyBhcyB4cyksIHQgLT4gWWllbGQgeyB2YWx1ZSA9IHhzOyBzdGF0ZSA9IHQgfSlcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBpIGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgaSBhIC0+IFNvbWUgKGksIGEpXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgKGkgKyAxKSBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgMCBmXG47O1xuXG5sZXQgZmluZF9leG4gcyB+ZiA9XG4gIG1hdGNoIGZpbmQgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLmZpbmRfZXhuXCJcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IGFwcGVuZCBzMSBzMiA9XG4gIG1hdGNoIHMxLCBzMiB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gbmV4dDEgfSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYEZpcnN0X2xpc3QgczFcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBGaXJzdF9saXN0IHMxIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0MSBzMSB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gYFNlY29uZF9saXN0IHMyIH1cbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSAtPiBTa2lwIHsgc3RhdGUgPSBgRmlyc3RfbGlzdCBzMSB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0gLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYEZpcnN0X2xpc3QgczEgfSlcbiAgICAgICAgICAgIHwgYFNlY29uZF9saXN0IHMyIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0MiBzMiB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IGBTZWNvbmRfbGlzdCBzMiB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYFNlY29uZF9saXN0IHMyIH0pKVxuICAgICAgfVxuOztcblxubGV0IGNvbmNhdF9tYXAgcyB+ZiA9IGJpbmQgcyB+ZlxubGV0IGNvbmNhdCBzID0gY29uY2F0X21hcCBzIH5mOkZuLmlkXG5sZXQgY29uY2F0X21hcGkgcyB+ZiA9IGNvbmNhdF9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCB6aXAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pIChTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBuZXh0MiB9KSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhLCBiOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICAgIHwgRG9uZSwgXyB8IF8sIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCB6aXBfZnVsbFxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSlcbiAgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYEJvdGggKGEsIGIpOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBzMiAtPiBTa2lwIHsgc3RhdGUgPSBuZXh0MSBzMSwgczIgfVxuICAgIHwgczEsIFNraXAgeyBzdGF0ZSA9IHMyIH0gLT4gU2tpcCB7IHN0YXRlID0gczEsIG5leHQyIHMyIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBgUmlnaHQgYjsgc3RhdGUgPSBEb25lLCBuZXh0MiBzMiB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBEb25lIC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYExlZnQgYTsgc3RhdGUgPSBuZXh0MSBzMSwgRG9uZSB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCBib3VuZGVkX2xlbmd0aCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSkgfmF0X21vc3QgPVxuICBsZXQgcmVjIGxvb3AgaSBzZWVkIG5leHQgPVxuICAgIGlmIGkgPiBhdF9tb3N0XG4gICAgdGhlbiBgR3JlYXRlclxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBgSXMgaVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzZWVkIH0gLT4gbG9vcCBpIHNlZWQgbmV4dFxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzZWVkIH0gLT4gbG9vcCAoaSArIDEpIHNlZWQgbmV4dClcbiAgaW5cbiAgbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IGxlbmd0aF9pc19ib3VuZGVkX2J5ID8obWluID0gLTEpID9tYXggdCA9XG4gIGxldCBsZW5ndGhfaXNfYXRfbGVhc3QgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID1cbiAgICBsZXQgcmVjIGxvb3AgcyBhY2MgPVxuICAgICAgaWYgYWNjID49IG1pblxuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBhY2NcbiAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIChhY2MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgcyAwXG4gIGluXG4gIG1hdGNoIG1heCB3aXRoXG4gIHwgTm9uZSAtPiBsZW5ndGhfaXNfYXRfbGVhc3QgdFxuICB8IFNvbWUgbWF4IC0+XG4gICAgKG1hdGNoIGJvdW5kZWRfbGVuZ3RoIHQgfmF0X21vc3Q6bWF4IHdpdGhcbiAgICAgfCBgSXMgbGVuIHdoZW4gbGVuID49IG1pbiAtPiB0cnVlXG4gICAgIHwgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCBpdGVyaSBzIH5mID0gaXRlciAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcykgW0Bub250YWlsXVxuXG5sZXQgZm9sZGkgcyB+aW5pdCB+ZiA9XG4gIGZvbGQgfmluaXQgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biBhY2MgKGksIHMpIC0+IGYgaSBhY2MgcykgW0Bub250YWlsXVxuOztcblxubGV0IHJlZHVjZSBzIH5mID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChhLCBzKSAtPiBTb21lIChmb2xkIHMgfmluaXQ6YSB+Zilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHMgfmYgPVxuICBtYXRjaCByZWR1Y2UgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLnJlZHVjZV9leG5cIlxuICB8IFNvbWUgcmVzIC0+IHJlc1xuOztcblxubGV0IGdyb3VwIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSB+YnJlYWsgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5pbml0OihTb21lIChbXSwgcykpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgfCBTb21lIChhY2MsIHMpIC0+XG4gICAgICAgIChtYXRjaCBhY2MsIG5leHQgcyB3aXRoXG4gICAgICAgICB8IF8sIFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTb21lIChhY2MsIHMpIH1cbiAgICAgICAgIHwgW10sIERvbmUgLT4gRG9uZVxuICAgICAgICAgfCBhY2MsIERvbmUgLT4gWWllbGQgeyB2YWx1ZSA9IExpc3QucmV2IGFjYzsgc3RhdGUgPSBOb25lIH1cbiAgICAgICAgIHwgW10sIFlpZWxkIHsgdmFsdWUgPSBjdXI7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IFNvbWUgKFsgY3VyIF0sIHMpIH1cbiAgICAgICAgIHwgKHByZXYgOjogXyBhcyBhY2MpLCBZaWVsZCB7IHZhbHVlID0gY3VyOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICBpZiBicmVhayBwcmV2IGN1clxuICAgICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBMaXN0LnJldiBhY2M7IHN0YXRlID0gU29tZSAoWyBjdXIgXSwgcykgfVxuICAgICAgICAgICBlbHNlIFNraXAgeyBzdGF0ZSA9IFNvbWUgKGN1ciA6OiBhY2MsIHMpIH0pKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgbGFzdF9lbHQgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgbGFzdF9lbHQgc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggbGFzdF9lbHQgd2l0aFxuICAgICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNvbWUgKGIsIGEpXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IGxvb3AgKFNvbWUgYSkgcylcbiAgaW5cbiAgbG9vcCBOb25lIHMgW0Bub250YWlsXVxuOztcblxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIHMgfmVxdWFsID1cbiAgdW5mb2xkX3dpdGggcyB+aW5pdDpOb25lIH5mOihmdW4gcHJldiBhIC0+XG4gICAgbWF0Y2ggcHJldiB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU2tpcCB7IHN0YXRlID0gU29tZSBhIH1cbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU29tZSBhIH0pXG47O1xuXG5sZXQgY291bnQgcyB+ZiA9IGZvbGQgcyB+aW5pdDowIH5mOihmdW4gYWNjIGVsdCAtPiBhY2MgKyBCb29sLnRvX2ludCAoZiBlbHQpKSBbQG5vbnRhaWxdXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgYWNjIGVsdCAtPiBhY2MgKyBCb29sLnRvX2ludCAoZiBpIGVsdCkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT5cbiAgICBpZiBpID49IG4gdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGYgaTsgc3RhdGUgPSBpICsgMSB9KVxuOztcblxubGV0IHN1YiBzIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2Uuc3ViXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBpZiBpIC0gcG9zID49IGxlblxuICAgICAgICAgICAgIHRoZW4gRG9uZVxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IHdoZW4gaSA+PSBwb3MgLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSArIDEsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgdGFrZSBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnRha2VcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIGlmIGkgPj0gbGVuXG4gICAgICAgICAgICAgdGhlbiBEb25lXG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGksIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgZHJvcCBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLmRyb3BcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGkgPj0gbGVuIC0+XG4gICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBpICsgMSwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSArIDEsIHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCB0YWtlX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IF8gfSAtPiBEb25lKVxuICAgICAgfVxuOztcblxubGV0IGRyb3Bfd2hpbGUgcyB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBEcm9wcGluZyBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgRHJvcHBpbmcgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgRHJvcHBpbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBTa2lwIHsgc3RhdGUgPSBgRHJvcHBpbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9KVxuICAgICAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcylcbiAgICAgIH1cbjs7XG5cbmxldCBzaGlmdF9yaWdodCBzIHggPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgQ29uc2luZyAoc2VlZCwgeClcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBDb25zaW5nIChzZWVkLCB4KSAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBgSWRlbnRpdHkgc2VlZCB9XG4gICAgICAgICAgICB8IGBJZGVudGl0eSBzIC0+IGxpZnRfaWRlbnRpdHkgbmV4dCBzKVxuICAgICAgfVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0X3dpdGhfbGlzdCBzIGwgPSBhcHBlbmQgKG9mX2xpc3QgbCkgc1xubGV0IHNoaWZ0X2xlZnQgPSBkcm9wXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgaW50ZXJzcGVyc2UgcyB+c2VwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYEluaXQgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEluaXQgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSW5pdCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBSdW5uaW5nIHMgfSlcbiAgICAgICAgICAgIHwgYFJ1bm5pbmcgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgUnVubmluZyBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBzZXA7IHN0YXRlID0gYFB1dHRpbmcgKGEsIHMpIH0pXG4gICAgICAgICAgICB8IGBQdXR0aW5nIChhLCBzKSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgUnVubmluZyBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgcmVwZWF0IHggPSB1bmZvbGRfc3RlcCB+aW5pdDp4IH5mOihmdW4geCAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSB4IH0pXG5cbmxldCBjeWNsZV9saXN0X2V4biB4cyA9XG4gIGlmIExpc3QuaXNfZW1wdHkgeHMgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuXCI7XG4gIGxldCBzID0gb2ZfbGlzdCB4cyBpblxuICBjb25jYXRfbWFwIH5mOihmdW4gKCkgLT4gcykgKHJlcGVhdCAoKSlcbjs7XG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCBzYSBzYiA9IGNvbmNhdF9tYXAgc2EgfmY6KGZ1biBhIC0+IHppcCAocmVwZWF0IGEpIHNiKVxubGV0IHNpbmdsZXRvbiB4ID0gcmV0dXJuIHhcblxubGV0IGRlbGF5ZWRfZm9sZCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZmluaXNoIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IGsgYWNjXG4gICAgfCBTb21lIGEgLT4gZiBhY2MgYSB+aylcbjs7XG5cbmxldCBmb2xkX20gfmJpbmQgfnJldHVybiB0IH5pbml0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBhY2Mgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiBhY2MpIH5mOmtcbiAgICAgIHwgU29tZSBhIC0+IGJpbmQgKGYgYWNjIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBpdGVyX20gfmJpbmQgfnJldHVybiB0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0OigpXG4gICAgfmY6KGZ1biAoKSBvcHRpb24gfmsgLT5cbiAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYmluZCAocmV0dXJuICgpKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBmb2xkX3VudGlsIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoJ2EsICdiKSBDb250aW51ZV9vcl9zdG9wLnQpIHdpdGhcbiAgICAgICB8IFN0b3AgeCAtPiB4XG4gICAgICAgfCBDb250aW51ZSBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHQgZiBpbml0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCBzIH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGFjYyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gUmVzdWx0LnJldHVybiBhY2NcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoXywgXykgUmVzdWx0LnQpIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgICAgfCBPayBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHQgZiBpbml0XG47O1xuXG5sZXQgZm9yY2VfZWFnZXJseSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxuXG5sZXQgbWVtb2l6ZSAodHlwZSBhKSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIG9mIChhLCB0KSBTdGVwLnQgTGF6eS50XG4gIGVuZFxuICBpblxuICBsZXQgcmVjIG1lbW9pemUgcyA9IE0uVCAobGF6eSAoZmluZF9zdGVwIHMpKVxuICBhbmQgZmluZF9zdGVwIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBmaW5kX3N0ZXAgc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IG1lbW9pemUgcyB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBtZW1vaXplIHM7IG5leHQgPSAoZnVuIChNLlQgbCkgLT4gTGF6eS5mb3JjZSBsKSB9XG47O1xuXG5sZXQgZHJvcF9lYWdlcmx5IHMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGkgfmxlbiBzIG5leHQgPVxuICAgIGlmIGkgPj0gbGVuXG4gICAgdGhlbiBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGVtcHR5XG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgfmxlbiBzIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IGxvb3AgKGkgKyAxKSB+bGVuIHMgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIDAgfmxlbiBzIG5leHRcbjs7XG5cbmxldCBkcm9wX3doaWxlX29wdGlvbiAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3Agc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gcyB9IC0+XG4gICAgICBpZiBmIHggdGhlbiBsb29wIHMgZWxzZSBTb21lICh4LCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICBpblxuICBsb29wIHMgW0Bub250YWlsXVxuOztcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgICAgfCBgTGVmdCBfIC0+IHIucmV0dXJuIDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gci5yZXR1cm4gKC0xKVxuICAgICAgfCBgQm90aCAodjEsIHYyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlbiByLnJldHVybiBjKTtcbiAgICAwKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPVxuICBmb3JfYWxsICh6aXBfZnVsbCB0MSB0MikgfmY6KGZ1bmN0aW9uXG4gICAgfCBgQm90aCAoYTEsIGEyKSAtPiBlcXVhbF9hIGExIGEyXG4gICAgfCBgTGVmdCBfIHwgYFJpZ2h0IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgcm91bmRfcm9iaW4gbGlzdCA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZiBzIHdpdGhcbiAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgWWllbGRcbiAgICAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgICAgOyBzdGF0ZSA9IHRvZG9fc3RhY2ssIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IDo6IGRvbmVfc3RhY2tcbiAgICAgICAgICAgfVxuICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiB0b2RvX3N0YWNrLCBkb25lX3N0YWNrIH1cbiAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgZG9uZV9zdGFjayB9KVxuICAgIHwgW10gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgZG9uZV9zdGFjayB0aGVuIERvbmUgZWxzZSBTa2lwIHsgc3RhdGUgPSBMaXN0LnJldiBkb25lX3N0YWNrLCBbXSB9XG4gIGluXG4gIGxldCBzdGF0ZSA9IGxpc3QsIFtdIGluXG4gIFNlcXVlbmNlIHsgc3RhdGU7IG5leHQgfVxuOztcblxubGV0IGludGVybGVhdmUgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IGYxIH0pID1cbiAgbGV0IG5leHQgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBmMiB9IDo6IHRvZG9fc3RhY2sgLT5cbiAgICAgIChtYXRjaCBmMiBzMiB3aXRoXG4gICAgICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICBZaWVsZFxuICAgICAgICAgICB7IHZhbHVlID0geFxuICAgICAgICAgICA7IHN0YXRlID0gdG9kb19zdGFjaywgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gZjIgfSA6OiBkb25lX3N0YWNrLCBzMVxuICAgICAgICAgICB9XG4gICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICBTa2lwIHsgc3RhdGUgPSB0b2RvX3N0YWNrLCBTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBmMiB9IDo6IGRvbmVfc3RhY2ssIHMxIH1cbiAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgZG9uZV9zdGFjaywgczEgfSlcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggZjEgczEsIGRvbmVfc3RhY2sgd2l0aFxuICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHQ7IHN0YXRlID0gczEgfSwgXyAtPlxuICAgICAgICAgU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgKHQgOjogZG9uZV9zdGFjayksIFtdLCBzMSB9XG4gICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBfIC0+IFNraXAgeyBzdGF0ZSA9IExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSB9XG4gICAgICAgfCBEb25lLCBfIDo6IF8gLT4gU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxIH1cbiAgICAgICB8IERvbmUsIFtdIC0+IERvbmUpXG4gIGluXG4gIGxldCBzdGF0ZSA9IFtdLCBbXSwgczEgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZTsgbmV4dCB9XG47O1xuXG5sZXQgaW50ZXJsZWF2ZWRfY2FydGVzaWFuX3Byb2R1Y3QgczEgczIgPVxuICBtYXAgczEgfmY6KGZ1biB4MSAtPiBtYXAgczIgfmY6KGZ1biB4MiAtPiB4MSwgeDIpKSB8PiBpbnRlcmxlYXZlXG47O1xuXG5sZXQgb2Zfc2VxIChzZXEgOiBfIFN0ZGxpYi5TZXEudCkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpzZXEgfmY6KGZ1biBzZXEgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IERvbmVcbiAgICB8IENvbnMgKGhkLCB0bCkgLT4gWWllbGQgeyB2YWx1ZSA9IGhkOyBzdGF0ZSA9IHRsIH0pXG47O1xuXG5sZXQgdG9fc2VxIChTZXF1ZW5jZSB7IHN0YXRlOyBuZXh0IH0pID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBuZXh0IHN0YXRlIHdpdGhcbiAgICB8IERvbmUgLT4gU3RkbGliLlNlcS5OaWxcbiAgICB8IFNraXAgeyBzdGF0ZSB9IC0+IGxvb3Agc3RhdGVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBoZDsgc3RhdGUgfSAtPiBTdGRsaWIuU2VxLkNvbnMgKGhkLCBmdW4gKCkgLT4gbG9vcCBzdGF0ZSlcbiAgaW5cbiAgZnVuICgpIC0+IGxvb3Agc3RhdGVcbjs7XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnZWx0IHN0ZXBzID0gV3JhcCBvZiAoJ2VsdCwgdW5pdCAtPiAnZWx0IHN0ZXBzKSBTdGVwLnRcblxuICBsZXQgdW53cmFwIChXcmFwIHN0ZXApID0gc3RlcFxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlbHQpIHQgPSAoJ2EgLT4gJ2VsdCBzdGVwcykgLT4gJ2VsdCBzdGVwc1xuXG4gICAgbGV0IHJldHVybiB4IGsgPSBrIHhcblxuICAgIGxldCBiaW5kIG0gfmYgayA9XG4gICAgICBtIChmdW4gYSAtPlxuICAgICAgICBsZXQgbScgPSBmIGEgaW5cbiAgICAgICAgbScgaylcbiAgICA7O1xuXG4gICAgbGV0IG1hcCBtIH5mIGsgPSBtIChmdW4gYSAtPiBrIChmIGEpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNb25hZC5NYWtlMiAoVClcblxuICBsZXQgeWllbGQgZSBrID0gV3JhcCAoWWllbGQgeyB2YWx1ZSA9IGU7IHN0YXRlID0gayB9KVxuICBsZXQgdG9fc3RlcHMgdCA9IHQgKGZ1biAoKSAtPiBXcmFwIERvbmUpXG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBkZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biAoKSB4IH5rIGYgLT4gV3JhcCAoWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gKGZ1biAoKSAtPiBrICgpIGYpIH0pKVxuICAgICAgfmZpbmlzaDpyZXR1cm5cbiAgOztcblxuICBsZXQgcnVuIHQgPVxuICAgIGxldCBpbml0ICgpID0gdG9fc3RlcHMgdCBpblxuICAgIGxldCBmIHRodW5rID0gdW53cmFwICh0aHVuayAoKSkgaW5cbiAgICB1bmZvbGRfc3RlcCB+aW5pdCB+ZlxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGVcblxubW9kdWxlIE9mX3NleHBhYmxlXG4gICAgKFNleHBhYmxlIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6IHQgLT4gU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6IFNleHBhYmxlLnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUxXG4gICAgKFNleHBhYmxlIDogUzEpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICdhIHQgLT4gJ2EgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAnYSBTZXhwYWJsZS50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMlxuICAgIChTZXhwYWJsZSA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYikgU2V4cGFibGUudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTNcbiAgICAoU2V4cGFibGUgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIHQgPVxuICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zdHJpbmdhYmxlIChNIDogU3RyaW5nYWJsZS5TKSA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG53aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKE0udG9fc3RyaW5nIHQpXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogTS50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIHN0cmluZ19zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX2FycmF5XG5cbmxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gIGZ1biAodHlwZSBhX18wMDVfKVxuICAgICAgOiAoKChhX18wMDVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8pIC0+IChhX18wMDVfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA1XyB0KSAtPlxuICAgIGdsb2JhbGl6ZV9hcnJheVxuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGFycmF5X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2FycmF5XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gYXJyYXlfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbigqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSBuZXcgaW4tcGxhY2UsIGNvbnN0YW50IGhlYXAgc29ydGluZyBhbGdvcml0aG0gdG8gcmVwbGFjZSB0aGVcbiAgIG9uZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMuICBJdHMgb25seSBwdXJwb3NlIGlzIHRvIGJlIGZhc3RlciAoaG9wZWZ1bGx5XG4gICBzdHJpY3RseSBmYXN0ZXIpIHRoYW4gdGhlIGJhc2Ugc29ydCBhbmQgc3RhYmxlX3NvcnQuXG5cbiAgIEF0IGEgaGlnaCBsZXZlbCB0aGUgYWxnb3JpdGhtIGlzOlxuICAgLSBwaWNrIHR3byBwaXZvdCBwb2ludHMgYnk6XG4gICAtIHBpY2sgNSBhcmJpdHJhcnkgZWxlbWVudHMgZnJvbSB0aGUgYXJyYXlcbiAgIC0gc29ydCB0aGVtIHdpdGhpbiB0aGUgYXJyYXlcbiAgIC0gdGFrZSB0aGUgZWxlbWVudHMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIG1pZGRsZSBlbGVtZW50IG9mIHRoZSBzb3J0IGFzIHRoZSBwaXZvdHNcbiAgIC0gc29ydCB0aGUgYXJyYXkgd2l0aDpcbiAgIC0gYWxsIGVsZW1lbnRzIGxlc3MgdGhhbiBwaXZvdDEgdG8gdGhlIGxlZnQgKHJhbmdlIDEpXG4gICAtIGFsbCBlbGVtZW50cyA+PSBwaXZvdDEgYW5kIDw9IHBpdm90MiBpbiB0aGUgbWlkZGxlIChyYW5nZSAyKVxuICAgLSBhbGwgZWxlbWVudHMgPiBwaXZvdDIgdG8gdGhlIHJpZ2h0IChyYW5nZSAzKVxuICAgLSBpZiBwaXZvdDEgYW5kIHBpdm90MiBhcmUgZXF1YWwsIHRoZW4gdGhlIG1pZGRsZSByYW5nZSBpcyBzb3J0ZWQsIHNvIGlnbm9yZSBpdFxuICAgLSByZWN1cnNlIGludG8gcmFuZ2UgMSwgMiAoaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIHVuZXF1YWwpLCBhbmQgM1xuICAgLSBkdXJpbmcgcmVjdXJzaW9uIHRoZXJlIGFyZSB0d28gaW5mbGVjdGlvbiBwb2ludHM6XG4gICAtIGlmIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IHJhbmdlIGlzIHNtYWxsLCB1c2UgaW5zZXJ0aW9uIHNvcnQgdG8gc29ydCBpdFxuICAgLSBpZiB0aGUgc3RhY2sgZGVwdGggaXMgbGFyZ2UsIHNvcnQgdGhlIHJhbmdlIHdpdGggaGVhcC1zb3J0IHRvIGF2b2lkIG5eMiB3b3JzdC1jYXNlXG4gICAgIGJlaGF2aW9yXG5cbiAgIFNlZSB0aGUgZm9sbG93aW5nIGZvciBtb3JlIGluZm9ybWF0aW9uOlxuICAgLSBcIkR1YWwtUGl2b3QgUXVpY2tzb3J0XCIgYnkgVmxhZGltaXIgWWFyb3NsYXZza2l5LlxuICAgICBBdmFpbGFibGUgYXRcbiAgICAgaHR0cDovL3d3dy5rcmljaGUuY29tLmFyL3Jvb3QvcHJvZ3JhbW1pbmcvc3BhY2VUaW1lQ29tcGxleGl0eS9EdWFsUGl2b3RRdWlja3NvcnQucGRmXG4gICAtIFwiUXVpY2tzb3J0IGlzIE9wdGltYWxcIiBieSBTZWRnZXdpY2sgYW5kIEJlbnRsZXkuXG4gICAgIFNsaWRlcyBhdCBodHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvfnJzL3RhbGtzL1F1aWNrc29ydElzT3B0aW1hbC5wZGZcbiAgIC0gaHR0cDovL3d3dy5zb3J0aW5nLWFsZ29yaXRobXMuY29tL3F1aWNrLXNvcnQtMy13YXkgKilcblxubW9kdWxlIFNvcnRlciAoUyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gICAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IHN3YXAgYXJyIGkgaiA9XG4gICAgbGV0IHRtcCA9IGdldCBhcnIgaSBpblxuICAgIHNldCBhcnIgaSAoZ2V0IGFyciBqKTtcbiAgICBzZXQgYXJyIGogdG1wXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgU29ydCA9IHNpZ1xuICAgIHZhbCBzb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gbGVmdDppbnQgKCogbGVmdG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHJpZ2h0OmludCAoKiByaWdodG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHVuaXRcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnNlcnRpb25fc29ydCAqKVxuICBtb2R1bGUgSW5zZXJ0aW9uX3NvcnQgOiBTb3J0ID0gc3RydWN0XG4gICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4gaS0xXSBpcyBzb3J0ZWRcbiAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4gcG9zXSBpcyBzb3J0ZWQgYW5kIGNvbnRhaW5zIG9ubHkgZWxlbWVudHMgPiB2XG4gICAgICAgMy4gIGFycltpXSBtYXkgYmUgdGhvdWdodCBvZiBhcyBjb250YWluaW5nIHZcbiAgICAqKVxuICAgIGxldCByZWMgaW5zZXJ0X2xvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGkgdiA9XG4gICAgICBsZXQgaV9uZXh0ID0gaSAtIDEgaW5cbiAgICAgIGlmIGlfbmV4dCA+PSBsZWZ0ICYmIGNvbXBhcmUgKGdldCBhcnIgaV9uZXh0KSB2ID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHNldCBhcnIgaSAoZ2V0IGFyciBpX25leHQpO1xuICAgICAgICBpbnNlcnRfbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaV9uZXh0IHYpXG4gICAgICBlbHNlIGlcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICAgIFthcnJdIGlzIHNvcnRlZCBmcm9tIFtsZWZ0XSB0byBbcG9zIC0gMV0sIGluY2x1c2l2ZSAqKVxuICAgICAgZm9yIHBvcyA9IGxlZnQgKyAxIHRvIHJpZ2h0IGRvXG4gICAgICAgIGxldCB2ID0gZ2V0IGFyciBwb3MgaW5cbiAgICAgICAgbGV0IGZpbmFsX3BvcyA9IGluc2VydF9sb29wIGFyciB+bGVmdCB+Y29tcGFyZSBwb3MgdiBpblxuICAgICAgICBzZXQgYXJyIGZpbmFsX3BvcyB2XG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWFwc29ydCAqKVxuICBtb2R1bGUgSGVhcF9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgIHJvb3QncyBjaGlsZHJlbiBhcmUgYm90aCBlaXRoZXIgcm9vdHMgb2YgbWF4LWhlYXBzIG9yID4gcmlnaHQgKilcbiAgICBsZXQgcmVjIGhlYXBpZnkgYXJyIH5jb21wYXJlIHJvb3QgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCByZWxhdGl2ZV9yb290ID0gcm9vdCAtIGxlZnQgaW5cbiAgICAgIGxldCBsZWZ0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAxIGluXG4gICAgICBsZXQgcmlnaHRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDIgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgbGVmdF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIGxlZnRfY2hpbGQpIChnZXQgYXJyIHJvb3QpID4gMFxuICAgICAgICB0aGVuIGxlZnRfY2hpbGRcbiAgICAgICAgZWxzZSByb290XG4gICAgICBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiByaWdodF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIHJpZ2h0X2NoaWxkKSAoZ2V0IGFyciBsYXJnZXN0KSA+IDBcbiAgICAgICAgdGhlbiByaWdodF9jaGlsZFxuICAgICAgICBlbHNlIGxhcmdlc3RcbiAgICAgIGluXG4gICAgICBpZiBsYXJnZXN0IDw+IHJvb3RcbiAgICAgIHRoZW4gKFxuICAgICAgICBzd2FwIGFyciByb290IGxhcmdlc3Q7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxhcmdlc3QgfmxlZnQgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIEVsZW1lbnRzIGluIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgYXJyYXkgYXJlIGFscmVhZHkgaGVhcHMgb2Ygc2l6ZSAxLiAgV2UgbW92ZVxuICAgICAgICAgdGhyb3VnaCB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgYXJyYXkgZnJvbSBiYWNrIHRvIGZyb250IGV4YW1pbmluZyB0aGUgZWxlbWVudCBhdFxuICAgICAgICAgaGFuZCwgYW5kIHRoZSBsZWZ0IGFuZCByaWdodCBjaGlsZHJlbiwgZml4aW5nIHRoZSBoZWFwIHByb3BlcnR5IGFzIHdlIGdvLiAqKVxuICAgICAgZm9yIGkgPSAobGVmdCArIHJpZ2h0KSAvIDIgZG93bnRvIGxlZnQgZG9cbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgaSB+bGVmdCB+cmlnaHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ7XG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uLiBpXSBpcyBhIG1heC1oZWFwIEhcbiAgICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLi4gcmlnaHRdIGlzIHNvcnRlZCAoY2FsbCBpdCBTKVxuICAgICAgICAgMy4gIGV2ZXJ5IGVsZW1lbnQgb2YgSCBpcyBsZXNzIHRoYW4gZXZlcnkgZWxlbWVudCBvZiBTICopXG4gICAgICBmb3IgaSA9IHJpZ2h0IGRvd250byBsZWZ0ICsgMSBkb1xuICAgICAgICBzd2FwIGFyciBsZWZ0IGk7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxlZnQgfmxlZnQgfnJpZ2h0OihpIC0gMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJvc29ydCAqKVxuICBtb2R1bGUgSW50cm9fc29ydCA6IHNpZ1xuICAgIGluY2x1ZGUgU29ydFxuXG4gICAgdmFsIGZpdmVfZWxlbWVudF9zb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIG0xIG0yIG0zIG00IG01ID1cbiAgICAgIGxldCBjb21wYXJlX2FuZF9zd2FwIGkgaiA9XG4gICAgICAgIGlmIGNvbXBhcmUgKGdldCBhcnIgaSkgKGdldCBhcnIgaikgPiAwIHRoZW4gc3dhcCBhcnIgaSBqXG4gICAgICBpblxuICAgICAgKCogT3B0aW1hbCA1LWVsZW1lbnQgc29ydGluZyBuZXR3b3JrOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgMS0tby0tLS0tby0tLS0tby0tLS0tLS0tLS0tLS0tMVxuICAgICAgICAgICAgICAgfCAgICAgfCAgICAgfFxuICAgICAgICAgICAgMi0tby0tLS0tfC0tby0tfC0tLS0tby0tby0tLS0tMlxuICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfCAgICAgfCAgfFxuICAgICAgICAgICAgMy0tLS0tLS0tby0tby0tfC0tby0tfC0tby0tLS0tM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfFxuICAgICAgICAgICAgNC0tLS0tby0tLS0tLS0tby0tby0tfC0tLS0tby0tNFxuICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfFxuICAgICAgICAgICAgNS0tLS0tby0tLS0tLS0tLS0tLS0tby0tLS0tby0tNVxuICAgICAgICAgIHZ9ICopXG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0yO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTMgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTUgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICAoKiBjaG9vc2UgcGl2b3RzIGZvciB0aGUgYXJyYXkgYnkgc29ydGluZyA1IGVsZW1lbnRzIGFuZCBleGFtaW5pbmcgdGhlIGNlbnRlciB0aHJlZVxuICAgICAgIGVsZW1lbnRzLiAgVGhlIGdvYWwgaXMgdG8gY2hvb3NlIHR3byBwaXZvdHMgdGhhdCB3aWxsIGVpdGhlcjpcbiAgICAgICAtIGJyZWFrIHRoZSByYW5nZSB1cCBpbnRvIDMgZXZlbiBwYXJ0aXRpb25zXG4gICAgICAgICBvclxuICAgICAgIC0gZWxpbWluYXRlIGEgY29tbW9ubHkgYXBwZWFyaW5nIGVsZW1lbnQgYnkgc29ydGluZyBpdCBpbnRvIHRoZSBjZW50ZXIgcGFydGl0aW9uXG4gICAgICAgICBieSBpdHNlbGZcbiAgICAgICAgIFRvIHRoaXMgZW5kIHdlIGxvb2sgYXQgdGhlIGNlbnRlciAzIGVsZW1lbnRzIG9mIHRoZSA1IGFuZCByZXR1cm4gcGFpcnMgb2YgZXF1YWxcbiAgICAgICAgIGVsZW1lbnRzIG9yIHRoZSB3aWRlc3QgcmFuZ2UgKilcbiAgICBsZXQgY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHNpeHRoID0gKHJpZ2h0IC0gbGVmdCkgLyA2IGluXG4gICAgICBsZXQgbTEgPSBsZWZ0ICsgc2l4dGggaW5cbiAgICAgIGxldCBtMiA9IG0xICsgc2l4dGggaW5cbiAgICAgIGxldCBtMyA9IG0yICsgc2l4dGggaW5cbiAgICAgIGxldCBtNCA9IG0zICsgc2l4dGggaW5cbiAgICAgIGxldCBtNSA9IG00ICsgc2l4dGggaW5cbiAgICAgIGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZSBtMSBtMiBtMyBtNCBtNTtcbiAgICAgIGxldCBtMl92YWwgPSBnZXQgYXJyIG0yIGluXG4gICAgICBsZXQgbTNfdmFsID0gZ2V0IGFyciBtMyBpblxuICAgICAgbGV0IG00X3ZhbCA9IGdldCBhcnIgbTQgaW5cbiAgICAgIGlmIGNvbXBhcmUgbTJfdmFsIG0zX3ZhbCA9IDBcbiAgICAgIHRoZW4gbTJfdmFsLCBtM192YWwsIHRydWVcbiAgICAgIGVsc2UgaWYgY29tcGFyZSBtM192YWwgbTRfdmFsID0gMFxuICAgICAgdGhlbiBtM192YWwsIG00X3ZhbCwgdHJ1ZVxuICAgICAgZWxzZSBtMl92YWwsIG00X3ZhbCwgZmFsc2VcbiAgICA7O1xuXG4gICAgbGV0IGR1YWxfcGl2b3RfcGFydGl0aW9uIGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcGl2b3QxLCBwaXZvdDIsIHBpdm90c19lcXVhbCA9IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIGxlZnQgPD0gbCA8IHIgPD0gcmlnaHRcbiAgICAgICAgIDIuICBsIDw9IHAgPD0gclxuICAgICAgICAgMy4gIGwgPD0geCA8IHAgICAgIGltcGxpZXMgYXJyW3hdID49IHBpdm90MVxuICAgICAgICAgYW5kIGFyclt4XSA8PSBwaXZvdDJcbiAgICAgICAgIDQuICBsZWZ0IDw9IHggPCBsICBpbXBsaWVzIGFyclt4XSA8IHBpdm90MVxuICAgICAgICAgNS4gIHIgPCB4IDw9IHJpZ2h0IGltcGxpZXMgYXJyW3hdID4gcGl2b3QyICopXG4gICAgICBsZXQgcmVjIGxvb3AgbCBwIHIgPVxuICAgICAgICBsZXQgcHYgPSBnZXQgYXJyIHAgaW5cbiAgICAgICAgaWYgY29tcGFyZSBwdiBwaXZvdDEgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHN3YXAgYXJyIHAgbDtcbiAgICAgICAgICBjb250IChsICsgMSkgKHAgKyAxKSByKVxuICAgICAgICBlbHNlIGlmIGNvbXBhcmUgcHYgcGl2b3QyID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBsb29wIGludmFyaWFudHM6ICBzYW1lIGFzIHRob3NlIG9mIHRoZSBvdXRlciBsb29wICopXG4gICAgICAgICAgbGV0IHJlYyBzY2FuX2JhY2t3YXJkcyByID1cbiAgICAgICAgICAgIGlmIHIgPiBwICYmIGNvbXBhcmUgKGdldCBhcnIgcikgcGl2b3QyID4gMCB0aGVuIHNjYW5fYmFja3dhcmRzIChyIC0gMSkgZWxzZSByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgciA9IHNjYW5fYmFja3dhcmRzIHIgaW5cbiAgICAgICAgICBzd2FwIGFyciByIHA7XG4gICAgICAgICAgY29udCBsIHAgKHIgLSAxKSlcbiAgICAgICAgZWxzZSBjb250IGwgKHAgKyAxKSByXG4gICAgICBhbmQgY29udCBsIHAgciA9IGlmIHAgPiByIHRoZW4gbCwgciBlbHNlIGxvb3AgbCBwIHIgaW5cbiAgICAgIGxldCBsLCByID0gY29udCBsZWZ0IGxlZnQgcmlnaHQgaW5cbiAgICAgIGwsIHIsIHBpdm90c19lcXVhbFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBsZW4gPSByaWdodCAtIGxlZnQgKyAxIGluXG4gICAgICAoKiBUaGlzIHRha2VzIGNhcmUgb2Ygc29tZSBlZGdlIGNhc2VzLCBzdWNoIGFzIGxlZnQgPiByaWdodCBvciB2ZXJ5IHNob3J0IGFycmF5cyxcbiAgICAgICAgIHNpbmNlIEluc2VydGlvbl9zb3J0LnNvcnQgaGFuZGxlcyB0aGVzZSBjYXNlcyBwcm9wZXJseS4gIFRodXMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgbWFrZSBzdXJlIHRoYXQgbGVmdCBhbmQgcmlnaHQgYXJlIHZhbGlkIGluIHJlY3Vyc2l2ZSBjYWxscy4gKilcbiAgICAgIGlmIGxlbiA8PSAzMlxuICAgICAgdGhlbiBJbnNlcnRpb25fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgaWYgbWF4X2RlcHRoIDwgMFxuICAgICAgdGhlbiBIZWFwX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG1heF9kZXB0aCA9IG1heF9kZXB0aCAtIDEgaW5cbiAgICAgICAgbGV0IGwsIHIsIG1pZGRsZV9zb3J0ZWQgPSBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0OihsIC0gMSk7XG4gICAgICAgIGlmIG5vdCBtaWRkbGVfc29ydGVkIHRoZW4gaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDpsIH5yaWdodDpyO1xuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OihyICsgMSkgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBoZWFwX3NvcnRfc3dpdGNoX2RlcHRoID1cbiAgICAgICAgKCogV2UgYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0IGEgcmVjdXJzaW9uIGRlcHRoIG9mIDMyLiBHTlUgaW50cm9zb3J0IHVzZXMgMmxnKG4pLlxuICAgICAgICAgICBUaGUgZXhwZWN0ZWQgcmVjdXJzaW9uIGRlcHRoIGZvciBwZXJmZWN0IDMtd2F5IHNwbGl0cyBpcyBsb2dfMyhuKS5cblxuICAgICAgICAgICBVc2luZyAzMiBtZWFucyBhIGJhbGFuY2VkIDMtd2F5IHNwbGl0IHdvdWxkIHdvcmsgdXAgdG8gM14zMiBlbGVtZW50cyAocm91Z2hseVxuICAgICAgICAgICAyXjUwIG9yIDEwXjE1KS4gR05VIHJlYWNoZXMgYSBkZXB0aCBvZiAzMiBhdCA2NTUzNiBlbGVtZW50cy5cblxuICAgICAgICAgICBGb3Igc21hbGwgYXJyYXlzLCB0aGlzIG1ha2VzIHVzIGxlc3MgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCwgYnV0IHRoZVxuICAgICAgICAgICAzMipOIGNvc3QgYmVmb3JlIHdlIGRvIGlzIG5vdCB0aGF0IG11Y2guXG5cbiAgICAgICAgICAgRm9yIGxhcmdlIGFycmF5cywgdGhpcyBtZWFucyB3ZSBhcmUgbW9yZSBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0XG4gICAgICAgICAgIHNvbWUgcG9pbnQgaWYgd2UgZ2V0IHNvbWUgYmFkIHNwbGl0cyBvciBpZiB0aGUgYXJyYXkgaXMgaHVnZS4gQnV0IHRoYXQncyBvbmx5IGFcbiAgICAgICAgICAgY29uc3RhbnQgZmFjdG9yIGNvc3QgaW4gdGhlIGZpbmFsIHN0YWdlcyBvZiByZWN1cnNpb24uXG5cbiAgICAgICAgICAgQWxsIGluIGFsbCwgdGhpcyBzZWVtcyB0byBiZSBhIHNtYWxsIHRyYWRlb2ZmIGFuZCBhdm9pZHMgcGF5aW5nIGEgY29zdCB0b1xuICAgICAgICAgICBjb21wdXRlIGEgbG9nYXJpdGhtIGF0IHRoZSBzdGFydC4gKilcbiAgICAgICAgMzJcbiAgICAgIGluXG4gICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoOmhlYXBfc29ydF9zd2l0Y2hfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNvcnQgP3BvcyA/bGVuIGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCBhcnIpXG4gICAgaW5cbiAgICBJbnRyb19zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0OnBvcyB+cmlnaHQ6KHBvcyArIGxlbiAtIDEpXG4gIDs7XG5lbmRcbltAQGlubGluZV1cblxubW9kdWxlIFNvcnQgPSBTb3J0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldFxuICAgIGxldCBzZXQgPSB1bnNhZmVfc2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBlbmQpXG5cbmxldCBzb3J0ID0gU29ydC5zb3J0XG5sZXQgb2ZfYXJyYXkgdCA9IHRcbmxldCB0b19hcnJheSB0ID0gdFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGlzX3NvcnRlZCB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPiAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgaXNfc29ydGVkX3N0cmljdGx5IHQgfmNvbXBhcmUgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPiAwICYmICFyZXN1bHQgZG9cbiAgICBsZXQgZWx0X2kgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICBsZXQgZWx0X2lfbWludXNfMSA9IHVuc2FmZV9nZXQgdCAoIWkgLSAxKSBpblxuICAgIGlmIGNvbXBhcmUgZWx0X2lfbWludXNfMSBlbHRfaSA+PSAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVyZ2UgYTEgYTIgfmNvbXBhcmUgPVxuICBsZXQgbDEgPSBBcnJheS5sZW5ndGggYTEgaW5cbiAgbGV0IGwyID0gQXJyYXkubGVuZ3RoIGEyIGluXG4gIGlmIGwxID0gMFxuICB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsMiA9IDBcbiAgdGhlbiBjb3B5IGExXG4gIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhMiAwKSAodW5zYWZlX2dldCBhMSAobDEgLSAxKSkgPj0gMFxuICB0aGVuIGFwcGVuZCBhMSBhMlxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTEgMCkgKHVuc2FmZV9nZXQgYTIgKGwyIC0gMSkpID4gMFxuICB0aGVuIGFwcGVuZCBhMiBhMVxuICBlbHNlIChcbiAgICBsZXQgbGVuID0gbDEgKyBsMiBpblxuICAgIGxldCBtZXJnZWQgPSBjcmVhdGUgfmxlbiAodW5zYWZlX2dldCBhMSAwKSBpblxuICAgIGxldCBhMV9pbmRleCA9IHJlZiAwIGluXG4gICAgbGV0IGEyX2luZGV4ID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IHVzZV9hMSA9XG4gICAgICAgIGlmIGwxID0gIWExX2luZGV4XG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBpZiBsMiA9ICFhMl9pbmRleFxuICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgZWxzZSBjb21wYXJlICh1bnNhZmVfZ2V0IGExICFhMV9pbmRleCkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KSA8PSAwXG4gICAgICBpblxuICAgICAgaWYgdXNlX2ExXG4gICAgICB0aGVuIChcbiAgICAgICAgdW5zYWZlX3NldCBtZXJnZWQgaSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpO1xuICAgICAgICBhMV9pbmRleCA6PSAhYTFfaW5kZXggKyAxKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KTtcbiAgICAgICAgYTJfaW5kZXggOj0gIWEyX2luZGV4ICsgMSlcbiAgICBkb25lO1xuICAgIG1lcmdlZClcbjs7XG5cbmxldCBjb3B5X21hdHJpeCA9IG1hcCB+Zjpjb3B5XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudCkgW0Bub250YWlsXVxuOztcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAodG9fbGlzdCAobWFwIH5mIHQpKVxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcGkgfmYgdCkpXG5cbmxldCByZXZfaW5wbGFjZSB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICB3aGlsZSAhaSA8ICFqIGRvXG4gICAgc3dhcCB0ICFpICFqO1xuICAgIGluY3IgaTtcbiAgICBkZWNyIGpcbiAgZG9uZVxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IHQgPSBjb3B5IHQgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgYSA6OiBsIC0+XG4gICAgbGV0IGxlbiA9IDEgKyBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgICgqIFdlIHN0YXJ0IGF0IFtsZW4gLSAyXSBiZWNhdXNlIHdlIGFscmVhZHkgcHV0IFthXSBhdCBbdC4obGVuIC0gMSldLiAqKVxuICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIHQuKGkpIDwtIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgdFxuOztcblxuKCogW29mX2xpc3RfbWFwXSBhbmQgW29mX2xpc3RfcmV2X21hcF0gYXJlIGJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBPQ2FtbFxuICAgZGlzdHJpYnV0aW9uLiAqKVxuXG5sZXQgb2ZfbGlzdF9tYXAgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaGQpO1xuICAgICAgICBmaWxsIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgMSB0bCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgb2ZfbGlzdF9tYXBpIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgMCBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgYSBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpIGhkKTtcbiAgICAgICAgZmlsbCBhIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgYSAxIHRsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXAgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXBpIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcGkgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgciA9IHJlZiBbfHxdIGluXG4gIGxldCBrID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGYgaSAodW5zYWZlX2dldCB0IGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgaWYgIWsgPSAwIHRoZW4gciA6PSBjcmVhdGUgfmxlbjoobGVuZ3RoIHQpIGE7XG4gICAgICB1bnNhZmVfc2V0ICFyICFrIGE7XG4gICAgICBpbmNyIGtcbiAgZG9uZTtcbiAgaWYgIWsgPSBsZW5ndGggdCB0aGVuICFyIGVsc2UgaWYgIWsgPiAwIHRoZW4gc3ViIH5wb3M6MCB+bGVuOiFrICFyIGVsc2UgW3x8XVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfaSBhIC0+IGYgYSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9vcHQgdCA9IGZpbHRlcl9tYXAgdCB+ZjpGbi5pZFxuXG5sZXQgcmFpc2VfbGVuZ3RoX21pc21hdGNoIG5hbWUgbjEgbjIgPVxuICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIHQxIHQyID1cbiAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yXG47O1xuXG5sZXQgaXRlcjJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5pdGVyMl9leG5cIiB0MSB0MjtcbiAgaXRlcmkgdDEgfmY6KGZ1biBpIHgxIC0+IGYgeDEgKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkubWFwMl9leG5cIiB0MSB0MjtcbiAgaW5pdCAobGVuZ3RoIHQxKSB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGQyX2V4biB0MSB0MiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZm9sZDJfZXhuXCIgdDEgdDI7XG4gIGZvbGRpIHQxIH5pbml0IH5mOihmdW4gaSBhYyB4IC0+IGYgYWMgeCAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5sZXQgZmlsdGVyaSB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpIFtAbm9udGFpbF1cblxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPSBleGlzdHMgdCB+ZjooZXF1YWwgYSkgW0Bub250YWlsXVxuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0ICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHMyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZXhpc3RzMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvcl9hbGwyX2V4blwiIHQxIHQyO1xuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQxIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0MSAhaSkgKHVuc2FmZV9nZXQgdDIgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXF1YWwgZXF1YWwgdDEgdDIgPSBsZW5ndGggdDEgPSBsZW5ndGggdDIgJiYgZm9yX2FsbDJfZXhuIHQxIHQyIH5mOmVxdWFsXG5cblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBmaW5kaV9pbnRlcm5hbCB0IH5mIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBpZl9ub3RfZm91bmQgKClcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgKG5vdCAhZm91bmQpICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGYgIWkgdmFsdWVcbiAgICAgIHRoZW4gKFxuICAgICAgICB2YWx1ZV9mb3VuZCA6PSB2YWx1ZTtcbiAgICAgICAgZm91bmQgOj0gdHJ1ZSlcbiAgICAgIGVsc2UgaW5jciBpXG4gICAgZG9uZTtcbiAgICBpZiAhZm91bmQgdGhlbiBpZl9mb3VuZCB+aTohaSB+dmFsdWU6IXZhbHVlX2ZvdW5kIGVsc2UgaWZfbm90X2ZvdW5kICgpKVxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBTb21lIChpLCB2YWx1ZSkpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBpLCB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZGlfZXhuOiBub3QgZm91bmRcIikpKVxuOztcblxubGV0IGZpbmRfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZjooZnVuIF9pIHggLT4gZiB4KVxuICAgIH5pZl9mb3VuZDooZnVuIH5pOl8gfnZhbHVlIC0+IHZhbHVlKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiByYWlzZSAoTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX2V4bjogbm90IGZvdW5kXCIpKSlcbiAgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmQgdCB+ZiA9IE9wdGlvbi5tYXAgKGZpbmRpIHQgfmY6KGZ1biBfaSB4IC0+IGYgeCkpIH5mOihmdW4gKF9pLCB4KSAtPiB4KVxuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiAhaSB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXBpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBpX2V4blxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuIDw9IDFcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZXN1bHQgPSByZWYgTm9uZSBpblxuICAgIGxldCBpID0gcmVmIDEgaW5cbiAgICBsZXQgcHJldiA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgY3VyID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBlcXVhbCBjdXIgIXByZXZcbiAgICAgIHRoZW4gKFxuICAgICAgICByZXN1bHQgOj0gU29tZSAoIXByZXYsIGN1cik7XG4gICAgICAgIGkgOj0gbilcbiAgICAgIGVsc2UgKFxuICAgICAgICBwcmV2IDo9IGN1cjtcbiAgICAgICAgaW5jciBpKVxuICAgIGRvbmU7XG4gICAgIXJlc3VsdClcbjs7XG5cbmxldCByZWR1Y2UgdCB+ZiA9XG4gIGlmIGxlbmd0aCB0ID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHIgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIGZvciBpID0gMSB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gICAgZG9uZTtcbiAgICBTb21lICFyKVxuOztcblxubGV0IHJlZHVjZV9leG4gdCB+ZiA9XG4gIG1hdGNoIHJlZHVjZSB0IH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCBwZXJtdXRlID0gQXJyYXlfcGVybXV0ZS5wZXJtdXRlXG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnJhbmRvbV9lbGVtZW50X2V4bjogZW1wdHkgYXJyYXlcIlxuICBlbHNlIHQuKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgemlwIHQxIHQyID1cbiAgaWYgbGVuZ3RoIHQxIDw+IGxlbmd0aCB0MiB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4MikpXG47O1xuXG5sZXQgemlwX2V4biB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDJcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnppcF9leG5cIlxuICBlbHNlIG1hcDJfZXhuIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKVxuOztcblxubGV0IHVuemlwIHQgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIChcbiAgICBsZXQgeCwgeSA9IHQuKDApIGluXG4gICAgbGV0IHJlczEgPSBjcmVhdGUgfmxlbjpuIHggaW5cbiAgICBsZXQgcmVzMiA9IGNyZWF0ZSB+bGVuOm4geSBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IHgsIHkgPSB0LihpKSBpblxuICAgICAgcmVzMS4oaSkgPC0geDtcbiAgICAgIHJlczIuKGkpIDwtIHlcbiAgICBkb25lO1xuICAgIHJlczEsIHJlczIpXG47O1xuXG5sZXQgc29ydGVkX2NvcHkgdCB+Y29tcGFyZSA9XG4gIGxldCB0MSA9IGNvcHkgdCBpblxuICBzb3J0IHQxIH5jb21wYXJlO1xuICB0MVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgKGJvdGggOiBfIEVpdGhlci50IHQpID0gbWFwaSB0IH5mIGluXG4gIGxldCBmaXJzdHMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgeCAtPiBTb21lIHhcbiAgICAgIHwgU2Vjb25kIF8gLT4gTm9uZSlcbiAgaW5cbiAgbGV0IHNlY29uZHMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgXyAtPiBOb25lXG4gICAgICB8IFNlY29uZCB4IC0+IFNvbWUgeClcbiAgaW5cbiAgZmlyc3RzLCBzZWNvbmRzXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCkgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biBfIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biBfIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5sZXQgbGFzdCB0ID0gdC4obGVuZ3RoIHQgLSAxKVxuXG4oKiBDb252ZXJ0IHRvIGEgc2VxdWVuY2UgYnV0IGRvZXMgbm90IGF0dGVtcHQgdG8gcHJvdGVjdCBhZ2FpbnN0IG1vZGlmaWNhdGlvblxuICAgaW4gdGhlIGFycmF5LiAqKVxubGV0IHRvX3NlcXVlbmNlX211dGFibGUgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+XG4gICAgaWYgaSA+PSBsZW5ndGggdFxuICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSB0LihpKTsgc3RhdGUgPSBpICsgMSB9KVxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19zZXF1ZW5jZV9tdXRhYmxlIChjb3B5IHQpXG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCB0MSB0MiA9XG4gIGlmIGlzX2VtcHR5IHQxIHx8IGlzX2VtcHR5IHQyXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuOihuMSAqIG4yKSAodDEuKDApLCB0Mi4oMCkpIGluXG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIGZvciBpMSA9IDAgdG8gbjEgLSAxIGRvXG4gICAgICBmb3IgaTIgPSAwIHRvIG4yIC0gMSBkb1xuICAgICAgICB0LighcikgPC0gdDEuKGkxKSwgdDIuKGkyKTtcbiAgICAgICAgaW5jciByXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICB0KVxuOztcblxubGV0IHRyYW5zcG9zZSB0dCA9XG4gIGlmIGxlbmd0aCB0dCA9IDBcbiAgdGhlbiBTb21lIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHdpZHRoID0gbGVuZ3RoIHR0IGluXG4gICAgbGV0IGRlcHRoID0gbGVuZ3RoIHR0LigwKSBpblxuICAgIGlmIGV4aXN0cyB0dCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQgPD4gZGVwdGgpXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lIChpbml0IGRlcHRoIH5mOihmdW4gZCAtPiBpbml0IHdpZHRoIH5mOihmdW4gdyAtPiB0dC4odykuKGQpKSkpKVxuOztcblxubGV0IHRyYW5zcG9zZV9leG4gdHQgPVxuICBtYXRjaCB0cmFuc3Bvc2UgdHQgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJBcnJheS50cmFuc3Bvc2VfZXhuXCJcbiAgfCBTb21lIHR0JyAtPiB0dCdcbjs7XG5cbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBlbmQpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIHQgPVxuICAgICAgaWYgbGVuID0gMFxuICAgICAgdGhlbiBbfHxdXG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiB0LigwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNvcnQgPSBTb3J0XG4gIG1vZHVsZSBTb3J0ZXIgPSBTb3J0ZXJcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdCBhbGwgdmFsdWVzIG9mIHR5cGUgW3RdIGRvIG5vdCBoYXZlIHRoZSB0YWdcbiAgIFtkb3VibGVfYXJyYXlfdGFnXS4gIFNvbWUgZnVuY3Rpb25zIGJlbG93IGFzc3VtZSB0aGlzIGluIG9yZGVyIHRvIGF2b2lkIHRlc3RpbmcgdGhlXG4gICB0YWcsIGFuZCB3aWxsIHNlZ2ZhdWx0IGlmIHRoaXMgcHJvcGVydHkgZG9lc24ndCBob2xkLiAqKVxudHlwZSB0ID0gU3RkbGliLk9iai50IGFycmF5XG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIGFzc2VydCAoU3RkbGliLk9iai50YWcgKFN0ZGxpYi5PYmoucmVwciB0KSA8PiBTdGRsaWIuT2JqLmRvdWJsZV9hcnJheV90YWcpXG47O1xuXG5sZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoICgqIHdvdWxkIGNoZWNrIGZvciBmbG9hdCBhcnJheXMgaW4gMzIgYml0LCBidXQgd2hhdGV2ZXIgKilcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgU2V4cC5BdG9tXG4gICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgXCI8T2JqX2FycmF5LnQgb2YgbGVuZ3RoIFwiOyBJbnQudG9fc3RyaW5nIChsZW5ndGggdCk7IFwiPlwiIF0pXG47O1xuXG5sZXQgemVyb19vYmogPSBTdGRsaWIuT2JqLnJlcHIgKDAgOiBpbnQpXG5cbigqIFdlIGNhbGwgW0FycmF5LmNyZWF0ZV0gd2l0aCBhIHZhbHVlIHRoYXQgaXMgbm90IGEgZmxvYXQgc28gdGhhdCB0aGUgYXJyYXkgZG9lc24ndCBnZXRcbiAgIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbmxldCBjcmVhdGVfemVybyB+bGVuID0gQXJyYXkuY3JlYXRlIH5sZW4gemVyb19vYmpcbmxldCBlbXB0eSA9IFt8fF1cblxudHlwZSBub3RfYV9mbG9hdCA9XG4gIHwgTm90X2FfZmxvYXRfMFxuICB8IE5vdF9hX2Zsb2F0XzEgb2YgaW50XG5cbmxldCBfbm90X2FfZmxvYXRfMCA9IE5vdF9hX2Zsb2F0XzBcbmxldCBfbm90X2FfZmxvYXRfMSA9IE5vdF9hX2Zsb2F0XzEgNDJcblxubGV0IGdldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gIEl0IGlzIE5PVCBvayB0byB1c2UgW2ludCBhcnJheV0gc2luY2UgKGlmXG4gICAgIHRoaXMgZnVuY3Rpb24gaXMgaW5saW5lZCBhbmQgdGhlIGFycmF5IGNvbnRhaW5zIGluLWhlYXAgYm94ZWQgdmFsdWVzKSB3cm9uZyByZWdpc3RlclxuICAgICB0eXBpbmcgbWF5IHJlc3VsdCwgbGVhZGluZyB0byBhIGZhaWx1cmUgdG8gcmVnaXN0ZXIgbmVjZXNzYXJ5IEdDIHJvb3RzLiAqKVxuICBTdGRsaWIuT2JqLnJlcHJcbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gaXMgcmVxdWlyZWQgb24gdGhlIGFycmF5IGJlY2F1c2UgdGhpcyBjb2RlIGJyZWFrcyB0aGUgdXN1YWxcbiAgICAgICBhc3N1bXB0aW9ucyBhYm91dCBhcnJheSBraW5kcyB0aGF0IHRoZSBGbGFtYmRhIDIgb3B0aW1pc2VyIGNhbiBzZWUuICopXG4gICAgKChTeXMub3BhcXVlX2lkZW50aXR5IChTdGRsaWIuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpLihpKVxuICAgICA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxuICBTdGRsaWIuT2JqLnJlcHJcbiAgICAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgIChTeXMub3BhcXVlX2lkZW50aXR5IChPYmpfbG9jYWwubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSlcbiAgICAgICBpXG4gICAgIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogU2FtZSBjb21tZW50IGFzIFt1bnNhZmVfZ2V0XS4gU3lzLm9wYXF1ZV9pZGVudGl0eSBwcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbVxuICAgICBwb3RlbnRpYWxseSB3cm9uZ2x5IGd1ZXNzaW5nIHRoZSB0eXBlIG9mIHRoZSBhcnJheSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBlbGVtZW50LCB0aGF0XG4gICAgIGlzIHByZXZlbnQgdGhlIGltcGxpY2F0aW9uOiAoT2JqLnRhZyBvYmogPSBPYmouZG91YmxlX3RhZykgPT4gKE9iai50YWcgdCA9XG4gICAgIE9iai5kb3VibGVfYXJyYXlfdGFnKSB3aGljaCBmbGFtYmRhIGhhcyB0cmllZCBpbiB0aGUgcGFzdCAoYXQgbGVhc3QgdGhhdCdzIGFzc3VtaW5nXG4gICAgIHRoZSBjb21waWxlciByZXNwZWN0cyBTeXMub3BhcXVlX2lkZW50aXR5LCB3aGljaCBpcyBub3QgYWx3YXlzIHRoZSBjYXNlKS4gKilcbiAgQXJyYXkudW5zYWZlX3NldFxuICAgIChTeXMub3BhcXVlX2lkZW50aXR5IChPYmpfbG9jYWwubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSlcbiAgICBpXG4gICAgKFN0ZGxpYi5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIHNhbWUgYXMgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IGJ1dCBzYWZlICopXG4gIChTeXMub3BhcXVlX2lkZW50aXR5IChTdGRsaWIuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpLihpKVxuICA8LSAoU3RkbGliLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnQgPVxuICAoKiBUaGlzIHNraXBzIFtjYW1sX21vZGlmeV0sIHdoaWNoIGlzIE9LIGlmIGJvdGggdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmUgaW50ZWdlcnMuICopXG4gIEFycmF5LnVuc2FmZV9zZXRcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqX2xvY2FsLm1hZ2ljICh0IDogdCkgOiBpbnQgYXJyYXkpKVxuICAgIGlcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSBpbnQpXG47O1xuXG4oKiBGb3IgW3NldF0gYW5kIFt1bnNhZmVfc2V0XSwgaWYgYSBwb2ludGVyIGlzIGludm9sdmVkLCB3ZSBmaXJzdCBkbyBhIHBoeXNpY2FsLWVxdWFsaXR5XG4gICB0ZXN0IHRvIHNlZSBpZiB0aGUgcG9pbnRlciBpcyBjaGFuZ2luZy4gIElmIG5vdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyB0aGUgW3NldF0sIHdoaWNoXG4gICBzYXZlcyBhIGNhbGwgdG8gW2NhbWxfbW9kaWZ5XS4gIFdlIHRoaW5rIHRoaXMgcGh5c2ljYWwtZXF1YWxpdHkgdGVzdCBpcyB3b3J0aCBpdFxuICAgYmVjYXVzZSBpdCBpcyB2ZXJ5IGNoZWFwIChib3RoIHZhbHVlcyBhcmUgYWxyZWFkeSBhdmFpbGFibGUgZnJvbSB0aGUgW2lzX2ludF0gdGVzdClcbiAgIGFuZCBiZWNhdXNlIFtjYW1sX21vZGlmeV0gaXMgZXhwZW5zaXZlLiAqKVxuXG5sZXQgc2V0IHQgaSBvYmogPVxuICAoKiBXZSB1c2UgW2dldF0gZmlyc3QgYnV0IHRoZW4gd2UgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBzaW5jZSB3ZSBrbm93IHRoYXQgW2ldIGlzXG4gICAgIHZhbGlkLiAqKVxuICBsZXQgb2xkX29iaiA9IGdldCB0IGkgaW5cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2xkX29iaiAmJiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfb2JqIG9iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0IHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmogJiYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIG9iaiA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2xkX29iaiAmJiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBhID0gZ2V0IHQgaSBpblxuICBsZXQgYiA9IGdldCB0IGogaW5cbiAgdW5zYWZlX3NldCB0IGkgYjtcbiAgdW5zYWZlX3NldCB0IGogYVxuOztcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICAoKiBJZiB3ZSBjYW4sIHVzZSBbQXJyYXkuY3JlYXRlXSBkaXJlY3RseS4gRXZlbiB0aG91Z2ggW2lzX2ludF0gY2hlY2sgaXMgc3Vic3VtZWQgYnlcbiAgICAgdGhlIHRhZyBjaGVjaywgY2hlY2tpbmcgaXQgaXMgbXVjaCBmYXN0ZXIsIHNpbmNlIGl0IGF2b2lkcyBhIEMgZnVuY3Rpb24gY2FsbC4gICopXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IHggfHwgU3RkbGliLk9iai50YWcgeCA8PiBTdGRsaWIuT2JqLmRvdWJsZV90YWdcbiAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiB4XG4gIGVsc2UgKFxuICAgICgqIE90aGVyd2lzZSB1c2UgW2NyZWF0ZV96ZXJvXSBhbmQgc2V0IHRoZSBjb250ZW50cyAqKVxuICAgIGxldCB0ID0gY3JlYXRlX3plcm8gfmxlbiBpblxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeFxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCBzaW5nbGV0b24gb2JqID0gY3JlYXRlIH5sZW46MSBvYmpcblxuKCogUHJlLWNvbmRpdGlvbjogdC4oaSkgaXMgYW4gaW50ZWdlci4gKilcbmxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIG9iaiA9XG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChTdGRsaWIuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2VcbiAgICAoKiBbdC4oaSldIGlzIGFuIGludGVnZXIgYW5kIFtvYmpdIGlzIG5vdCwgc28gd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgdGhleSBhcmVcbiAgICAgICBlcXVhbC4gKilcbiAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50IHQgaSBpbnQgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnRcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChTdGRsaWIuT2JqLnJlcHIgaW50KVxuOztcblxubGV0IHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgaSA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgbm90IChTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciAwKVxuOztcblxuKCoqIFt1bnNhZmVfYmxpdF0gaXMgbGlrZSBbQXJyYXkuYmxpdF0sIGV4Y2VwdCBpdCB1c2VzIG91ciBvd24gZm9yLWxvb3AgdG8gYXZvaWRcbiAgICBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlLiAgSXRzIHBlcmZvcm1hbmNlIGlzIHN0aWxsIG5vdCBjb21wYXJhYmxlIHRvIGEgbWVtY3B5LiAqKVxubGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgKCogV2hlbiBbcGh5c19lcXVhbCBzcmMgZHN0XSwgd2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIFtkc3RfcG9zIDwgc3JjX3Bvc10gYW5kIGhhdmUgdGhlXG4gICAgIGZvciBsb29wIGdvIGluIHRoZSByaWdodCBkaXJlY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBvdmVyd3JpdGUgZGF0YSB0aGF0IHdlIHN0aWxsIG5lZWRcbiAgICAgdG8gcmVhZC4gIFdoZW4gW25vdCAocGh5c19lcXVhbCBzcmMgZHN0KV0sIGRvaW5nIHRoaXMgaXMgaGFybWxlc3MuICBGcm9tIGFcbiAgICAgbWVtb3J5LXBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIG9uZSBsb29wcyB1cCBvciBkb3duLlxuICAgICBDb25zdGFudC1zdHJpZGUgYWNjZXNzLCBmb3J3YXJkIG9yIGJhY2t3YXJkLCBzaG91bGQgYmUgaW5kaXN0aW5ndWlzaGFibGUgKGF0IGxlYXN0IG9uXG4gICAgIGFuIGludGVsIGk3KS4gIFNvLCB3ZSBkb24ndCBkbyBhIGNoZWNrIGZvciBbcGh5c19lcXVhbCBzcmMgZHN0XSBhbmQgYWx3YXlzIGxvb3AgdXAgaW5cbiAgICAgdGhhdCBjYXNlLiAqKVxuICBpZiBkc3RfcG9zIDwgc3JjX3Bvc1xuICB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgZHN0IChkc3RfcG9zICsgaSkgKHVuc2FmZV9nZXQgc3JjIChzcmNfcG9zICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbjs7XG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZV96ZXJvXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZV96ZXJvIH5sZW46KGxlbmd0aCBzcmMpIGluXG4gIGJsaXRvIH5zcmMgfmRzdCAoKTtcbiAgZHN0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFdBUk5JTkc6XG4gICBXZSB1c2Ugbm9uLW1lbW9yeS1zYWZlIHRoaW5ncyB0aHJvdWdob3V0IHRoZSBbVHJ1c3RlZF0gbW9kdWxlLlxuICAgTW9zdCBvZiBpdCBpcyBvbmx5IHNhZmUgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgdHlwZSBzaWduYXR1cmUgKGUuZy4gZXhwb3NpbmdcbiAgIFt2YWwgY29weSA6ICdhIHQgLT4gJ2IgdF0gd291bGQgYmUgYSBiaWcgbWlzdGFrZSkuICopXG5tb2R1bGUgVHJ1c3RlZCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV9vYmpfYXJyYXkgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHN3YXAgOiBfIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHVuc2FmZV9zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0X3dpdGhfY2FtbF9tb2RpZnkgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBsZW5ndGggOiAoJ2EgdFtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIEJsaXQuYmxpdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgOiBfIHQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBPYmpfYXJyYXkudFxuXG4gIGxldCBlbXB0eSA9IE9ial9hcnJheS5lbXB0eVxuICBsZXQgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlX29ial9hcnJheSB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZSB+bGVuIHggPSBPYmpfYXJyYXkuY3JlYXRlIH5sZW4gKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgc2luZ2xldG9uIHggPSBPYmpfYXJyYXkuc2luZ2xldG9uIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHN3YXAgdCBpIGogPSBPYmpfYXJyYXkuc3dhcCB0IGkgalxuICBsZXQgZ2V0IGFyciBpID0gU3RkbGliLk9iai5vYmogKE9ial9hcnJheS5nZXQgYXJyIGkpXG4gIGxldCBzZXQgYXJyIGkgeCA9IE9ial9hcnJheS5zZXQgYXJyIGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2dldCBhcnIgaSA9IFN0ZGxpYi5PYmoub2JqIChPYmpfYXJyYXkudW5zYWZlX2dldCBhcnIgaSlcbiAgbGV0IHVuc2FmZV9zZXQgYXJyIGkgeCA9IE9ial9hcnJheS51bnNhZmVfc2V0IGFyciBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9zZXRfaW50IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnQgYXJyIGkgeFxuXG4gIGxldCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHhcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBPYmpfYXJyYXkubGVuZ3RoXG4gIGxldCB1bnNhZmVfYmxpdCA9IE9ial9hcnJheS51bnNhZmVfYmxpdFxuICBsZXQgY29weSA9IE9ial9hcnJheS5jb3B5XG5cbiAgbGV0IHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID0gT2JqX2FycmF5LnNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA9IE9ial9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlclxuZW5kXG5cbmluY2x1ZGUgVHJ1c3RlZFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKFN0ZGxpYi5PYmoudGFnIChTdGRsaWIuT2JqLnJlcHIgdCkgPD4gU3RkbGliLk9iai5kb3VibGVfYXJyYXlfdGFnKVxuOztcblxubGV0IGluaXQgbCB+ZiA9XG4gIGlmIGwgPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJVbmlmb3JtX2FycmF5LmluaXRcIlxuICBlbHNlIChcbiAgICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46bCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgIGRvbmU7XG4gICAgcmVzKVxuOztcblxubGV0IG9mX2FycmF5IGFyciA9IGluaXQgfmY6KEFycmF5LnVuc2FmZV9nZXQgYXJyKSAoQXJyYXkubGVuZ3RoIGFycikgW0Bub250YWlsXVxubGV0IG1hcCBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpIFtAbm9udGFpbF1cbmxldCBtYXBpIGEgfmYgPSBpbml0IH5mOihmdW4gaSAtPiBmIGkgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKSBbQG5vbnRhaWxdXG5cbmxldCBpdGVyIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBmb2xkaSBhIH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IH5mOihnZXQgdCkgKGxlbmd0aCB0KVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgeCAtPiBzZXQgcmVzIGkgeCk7XG4gIHJlc1xuOztcblxuKCogSXQgaXMgbm90IHNhZmUgZm9yIFt0b19hcnJheV0gdG8gYmUgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGJlY2F1c2Ugd2UgaGF2ZSBjb2RlIHRoYXRcbiAgIHJlbGllcyBvbiBbZmxvYXQgYXJyYXldcyBiZWluZyB1bmJveGVkLCBmb3IgZXhhbXBsZSBpbiBbYmluX3dyaXRlX2FycmF5XS4gKilcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9XG4gICAgaWYgaSA8IDAgdGhlbiBmYWxzZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSB8fCBsb29wIHQgfmYgKGkgLSAxKVxuICBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID0gaWYgaSA8IDAgdGhlbiB0cnVlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpICYmIGxvb3AgdCB+ZiAoaSAtIDEpIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0MSBpblxuICBpZiBsZW5ndGggdDIgPD4gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyX2V4blwiO1xuICBpbml0IGxlbiB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKGdyYW1tYXIgOiBlbHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogZWx0IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChBcnJheS50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxuaW5jbHVkZVxuICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAoQXJyYXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2FycmF5XG4gICAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gZW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIChnZXQgdCAwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBwcHhfY29tcGFyZSBbY29tcGFyZV9hcnJheV0gYnV0IHVzZXMgb3VyIFt1bnNhZmVfZ2V0XSBhbmQgW2xlbmd0aF0uICopXG5sZXQgY29tcGFyZSBjb21wYXJlX2VsdCBhIGIgPVxuICBpZiBwaHlzX2VxdWFsIGEgYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGVuX2IgPSBsZW5ndGggYiBpblxuICAgIGxldCByZXQgPSBjb21wYXJlIGxlbl9hIGxlbl9iIGluXG4gICAgaWYgcmV0IDw+IDBcbiAgICB0aGVuIHJldFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgdGhlbiAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsID0gdW5zYWZlX2dldCBhIGlcbiAgICAgICAgICBhbmQgciA9IHVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgbG9vcCAoaSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCkpXG47O1xuXG5tb2R1bGUgU29ydCA9IEFycmF5LlByaXZhdGUuU29ydGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0XG4gICAgbGV0IHNldCA9IHVuc2FmZV9zZXRcbiAgZW5kKVxuXG5sZXQgc29ydCA9IFNvcnQuc29ydFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgY2VpbCA9IFN0ZGxpYi5jZWlsXG5sZXQgZmxvb3IgPSBTdGRsaWIuZmxvb3JcbmxldCBtb2RfZmxvYXQgPSBTdGRsaWIubW9kX2Zsb2F0XG5sZXQgbW9kZiA9IFN0ZGxpYi5tb2RmXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ1xubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IG5hbiA9IFN0ZGxpYi5uYW5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBtYXhfZmluaXRlX3ZhbHVlID0gU3RkbGliLm1heF9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxubGV0IGNsYXNzaWZ5X2Zsb2F0ID0gU3RkbGliLmNsYXNzaWZ5X2Zsb2F0XG5sZXQgYWJzX2Zsb2F0ID0gU3RkbGliLmFic19mbG9hdFxubGV0IGlzX2ludGVnZXIgPSBTdGRsaWIuRmxvYXQuaXNfaW50ZWdlclxubGV0ICggKiogKSA9IFN0ZGxpYi4oICoqIClcblxubGV0ICggJS4gKSBhIGIgPVxuICAoKiBSYWlzZSBpbiBjYXNlIG9mIGEgbmVnYXRpdmUgbW9kdWx1cywgYXMgZG9lcyBJbnQuKCAlICkuICopXG4gIGlmIGIgPCAwLlxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCIlZiAlJSAlZiBpbiBmbG9hdDAubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCIgYSBiICgpO1xuICBsZXQgbSA9IFN0ZGxpYi5tb2RfZmxvYXQgYSBiIGluXG4gICgqIFByb2R1Y2UgYSBub24tbmVnYXRpdmUgcmVzdWx0IGluIGFuYWxvZ3kgd2l0aCBJbnQuKCAlICkuICopXG4gIGlmIG0gPCAwLiB0aGVuIG0gKy4gYiBlbHNlIG1cbjs7XG5cbigqIFRoZSBiaXRzIG9mIElOUklBJ3MgW1BlcnZhc2l2ZXNdIHRoYXQgd2UganVzdCB3YW50IHRvIGV4cG9zZSBpbiBbRmxvYXRdLiBNb3N0IGFyZVxuICAgYWxyZWFkeSBkZXByZWNhdGVkIGluIFtQZXJ2YXNpdmVzXSwgYW5kIGV2ZW50dWFsbHkgYWxsIG9mIHRoZW0gc2hvdWxkIGJlLiAqKVxuaW5jbHVkZSAoXG4gIFN0ZGxpYiA6XG4gIHNpZ1xuICAgIGV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuXG4gICAgZXh0ZXJuYWwgbGRleHBcbiAgICAgIDogIChmbG9hdFtAdW5ib3hlZF0pXG4gICAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgICAtPiAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiXG4gICAgW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gIGVuZClcblxuKCogV2UgbmVlZCB0aGlzIGluZGlyZWN0aW9uIGJlY2F1c2UgdGhlc2UgYXJlIGV4cG9zZWQgYXMgXCJ2YWxcIiBpbnN0ZWFkIG9mIFwiZXh0ZXJuYWxcIiAqKVxubGV0IGZyZXhwID0gZnJleHBcbmxldCBsZGV4cCA9IGxkZXhwXG5sZXQgaXNfbmFuIHggPSAoeCA6IGZsb2F0KSA8PiB4XG5cbigqIEFuIG9yZGVyLXByZXNlcnZpbmcgYmlqZWN0aW9uIGJldHdlZW4gYWxsIGZsb2F0cyBleGNlcHQgZm9yIE5hTnMsIGFuZCA5OS45NSUgb2ZcbiAgIGludDY0cy5cblxuICAgTm90ZSB3ZSBkb24ndCBkaXN0aW5ndWlzaCAwLiBhbmQgLTAuIGFzIHNlcGFyYXRlIHZhbHVlcyBoZXJlLCB0aGV5IGJvdGggbWFwIHRvIDBMLCB3aGljaFxuICAgbWFwcyBiYWNrIHRvIDAuXG5cbiAgIFRoaXMgc2hvdWxkIHdvcmsgYm90aCBvbiBsaXR0bGUtZW5kaWFuIGFuZCBoaWdoLWVuZGlhbiBDUFVzLiAgV2lraXBlZGlhIHNheXM6IFwib25cbiAgIG1vZGVybiBzdGFuZGFyZCBjb21wdXRlcnMgKGkuZS4sIGltcGxlbWVudGluZyBJRUVFIDc1NCksIG9uZSBtYXkgaW4gcHJhY3RpY2Ugc2FmZWx5XG4gICBhc3N1bWUgdGhhdCB0aGUgZW5kaWFubmVzcyBpcyB0aGUgc2FtZSBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcyBmb3IgaW50ZWdlcnNcIlxuICAgKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW5kaWFubmVzcyNGbG9hdGluZy1wb2ludF9hbmRfZW5kaWFubmVzcykuXG4qKVxubGV0IHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgPVxuICBpZiBpc19uYW4gdFxuICB0aGVuIE5vbmVcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiAoKiBhbHNvIGluY2x1ZGVzIC0wLiAqKVxuICAgIFNvbWUgMExcbiAgZWxzZSBpZiB0ID4gMC5cbiAgdGhlbiBTb21lIChTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCB0KVxuICBlbHNlIFNvbWUgKFN0ZGxpYi5JbnQ2NC5uZWcgKFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0ICgtLnQpKSlcbjs7XG5cbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4geCA9IE9wdGlvbi52YWx1ZV9leG4gKHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHgpXG5cbmxldCBvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4ID1cbiAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSB4IDBMXG4gIHRoZW4gU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgeFxuICBlbHNlIH4tLihTdGRsaWIuSW50NjQuZmxvYXRfb2ZfYml0cyAoU3RkbGliLkludDY0Lm5lZyB4KSlcbjs7XG5cbmxldCBvbmVfdWxwIGRpciB0ID1cbiAgbWF0Y2ggdG9faW50NjRfcHJlc2VydmVfb3JkZXIgdCB3aXRoXG4gIHwgTm9uZSAtPiBTdGRsaWIubmFuXG4gIHwgU29tZSB4IC0+XG4gICAgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXJcbiAgICAgIChTdGRsaWIuSW50NjQuYWRkXG4gICAgICAgICB4XG4gICAgICAgICAobWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICB8IGBVcCAtPiAxTFxuICAgICAgICAgIHwgYERvd24gLT4gLTFMKSlcbjs7XG5cbigqIFt1cHBlcl9ib3VuZF9mb3JfaW50XSBhbmQgW2xvd2VyX2JvdW5kX2Zvcl9pbnRdIGFyZSBmb3IgY2FsY3VsYXRpbmcgdGhlIG1heC9taW4gZmxvYXRcbiAgIHRoYXQgZml0cyBpbiBhIGdpdmVuLXNpemUgaW50ZWdlciB3aGVuIHJvdW5kZWQgdG93YXJkcyAwICh1c2luZyBbaW50X29mX2Zsb2F0XSkuXG5cbiAgIG1heF9pbnQvbWluX2ludCBkZXBlbmQgb24gW251bV9iaXRzXSwgZS5nLiArLy0gMl4zMCwgKy8tIDJeNjIgaWYgMzEtYml0LCA2My1iaXRcbiAgIChyZXNwZWN0aXZlbHkpIHdoaWxlIGZsb2F0IGlzIElFRUUgc3RhbmRhcmQgZm9yIGRvdWJsZSAoNTIgc2lnbmlmaWNhbnQgYml0cykuXG5cbiAgIEluIGFsbCBjYXNlcywgd2Ugd2FudCB0byBndWFyYW50ZWUgdGhhdFxuICAgW2xvd2VyX2JvdW5kX2Zvcl9pbnQgPD0geCA8PSB1cHBlcl9ib3VuZF9mb3JfaW50XVxuICAgaWZmIFtpbnRfb2ZfZmxvYXQgeF0gZml0cyBpbiBhbiBpbnQgd2l0aCBbbnVtX2JpdHNdIGJpdHMuXG5cbiAgIFsyICoqIChudW1fYml0cyAtIDEpXSBpcyB0aGUgZmlyc3QgZmxvYXQgZ3JlYXRlciB0aGF0IG1heF9pbnQsIHdlIHVzZSB0aGUgcHJlY2VkaW5nXG4gICBmbG9hdCBhcyB1cHBlciBib3VuZC5cblxuICAgWy0gKDIgKiogKG51bV9iaXRzIC0gMSkpXSBpcyBlcXVhbCB0byBtaW5faW50LlxuICAgRm9yIGxvd2VyIGJvdW5kIHdlIGxvb2sgZm9yIHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXSBzbyB0aGF0XG4gICBbZl0gcm91bmRzIHRvd2FyZCB6ZXJvIHRvIFttaW5faW50XVxuXG4gICBTbyBpbiBwYXJ0aWN1bGFyIHdlIHdpbGwgaGF2ZTpcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IHggPD0gLSAoMiAqKiAoMS14KSldXG4gICBbdXBwZXJfYm91bmRfZm9yX2ludCB4ICA8ICAgIDIgKiogKDEteCkgXVxuKilcbmxldCB1cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzID1cbiAgbGV0IGV4cCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKG51bV9iaXRzIC0gMSkgaW5cbiAgb25lX3VscCBgRG93biAoMi4gKiogZXhwKVxuOztcblxubGV0IGlzX3hfbWludXNfb25lX2V4YWN0IHggPVxuICAoKiBbeCA9IHggLS4gMS5dIGRvZXMgbm90IHdvcmsgd2l0aCB4ODcgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBiYWNrZW5kICh3aGljaCBpcyB1c2VkXG4gICAgIG9uIDMyLWJpdCBvY2FtbCkgYmVjYXVzZSBvZiA4MC1iaXQgcmVnaXN0ZXIgcHJlY2lzaW9uIG9mIGludGVybWVkaWF0ZSBjb21wdXRhdGlvbnMuXG5cbiAgICAgQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIGNvbXB1dGluZyB0aGlzOiBbeCAtLiBvbmVfdWxwIGBEb3duIHggPD0gMS5dIGlzIGFsc28gcHJvbmUgdG9cbiAgICAgdGhlIHNhbWUgcHJlY2lzaW9uIGlzc3VlczogeW91IG5lZWQgdG8gbWFrZSBzdXJlIFt4XSBpcyA2NC1iaXQuXG4gICopXG4gIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBub3QgKFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHggPSBTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCAoeCAtLiAxLikpXG47O1xuXG5sZXQgbG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIGxldCBtaW5faW50X2FzX2Zsb2F0ID0gfi0uKDIuICoqIGV4cCkgaW5cbiAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiBudW1fYml0cyAtIDEgPCA1MyAoKiA1MyA9ICNiaXRzIGluIHRoZSBmbG9hdCdzIG1hbnRpc3NhIHdpdGggc2lnbiBpbmNsdWRlZCAqKVxuICB0aGVuIChcbiAgICAoKiBUaGUgc21hbGxlc3QgZmxvYXQgdGhhdCByb3VuZHMgdG93YXJkcyB6ZXJvIHRvIFttaW5faW50XSBpc1xuICAgICAgIFttaW5faW50IC0gMSArIGVwc2lsb25dICopXG4gICAgYXNzZXJ0IChpc194X21pbnVzX29uZV9leGFjdCBtaW5faW50X2FzX2Zsb2F0KTtcbiAgICBvbmVfdWxwIGBVcCAobWluX2ludF9hc19mbG9hdCAtLiAxLikpXG4gIGVsc2UgKFxuICAgICgqIFttaW5faW50X2FzX2Zsb2F0XSBpcyBhbHJlYWR5IHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXS4gKilcbiAgICBhc3NlcnQgKG5vdCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCkpO1xuICAgIG1pbl9pbnRfYXNfZmxvYXQpXG47O1xuXG4oKiBGbG9hdCBjbGFtcGluZyBpcyBzdHJ1Y3R1cmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4gY2xhbXBpbmcgZm9yIG90aGVyIHR5cGVzLCBzb1xuICAgdGhhdCB3ZSBnZXQgdGhlIGJlaGF2aW9yIG9mIFtjbGFtcF91bmNoZWNrZWQgbmFuIH5taW4gfm1heCA9IG5hbl0gKGZvciBhbnkgW21pbl0gYW5kXG4gICBbbWF4XSkgZm9yIGZyZWUuXG4qKVxubGV0IGNsYW1wX3VuY2hlY2tlZCAodCA6IGZsb2F0KSB+bWluIH5tYXggPVxuICBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgbWF4IDwgdCB0aGVuIG1heCBlbHNlIHRcbjs7XG5cbmxldCBib3ggPVxuICAoKiBQcmV2ZW50IHBvdGVudGlhbCBjb25zdGFudCBmb2xkaW5nIG9mIFsrLiAwLl0gaW4gdGhlIG5lYXIgb2NhbWxvcHQgZnV0dXJlLiAqKVxuICBsZXQgeCA9IFN5czAub3BhcXVlX2lkZW50aXR5IDAuIGluXG4gIGZ1biBmIC0+IGYgKy4geFxuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5pbmNsdWRlIENoYXIwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfY2hhciA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9jaGFyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9jaGFyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfY2hhciA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG4gIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9jaGFyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubWFrZSAxIHRcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggcyB3aXRoXG4gICAgfCAxIC0+IHMuWzBdXG4gICAgfCBfIC0+IGZhaWx3aXRoZiBcIkNoYXIub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQ2hhclwiXG4gIGVuZClcblxubGV0IHBwIGZtdCBjID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVDXCIgY1xuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGFsbCA9IEFycmF5LmluaXQgMjU2IH5mOnVuc2FmZV9vZl9pbnQgfD4gQXJyYXkudG9fbGlzdFxuXG5sZXQgaXNfbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfcHJpbnQgPSBmdW5jdGlvblxuICB8ICcgJyAuLiAnficgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnXFx0JyB8ICdcXG4nIHwgJ1xcMDExJyAoKiB2ZXJ0aWNhbCB0YWIgKikgfCAnXFwwMTInICgqIGZvcm0gZmVlZCAqKSB8ICdcXHInIHwgJyAnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19hbHBoYSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbigqIFdyaXRpbmcgdGhlc2Ugb3V0LCBpbnN0ZWFkIG9mIGNhbGxpbmcgW2lzX2FscGhhXSBhbmQgW2lzX2RpZ2l0XSwgcmVkdWNlc1xuICAgcnVudGltZSBieSBhcHByb3guIDMwJSAqKVxubGV0IGlzX2FscGhhbnVtID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfZGlnaXRfdW5zYWZlIHQgPSB0b19pbnQgdCAtIHRvX2ludCAnMCdcblxubGV0IGdldF9kaWdpdF9leG4gdCA9XG4gIGlmIGlzX2RpZ2l0IHRcbiAgdGhlbiBnZXRfZGlnaXRfdW5zYWZlIHRcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLmdldF9kaWdpdF9leG4gJUM6IG5vdCBhIGRpZ2l0XCIgdCAoKVxuOztcblxubGV0IGdldF9kaWdpdCB0ID0gaWYgaXNfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9kaWdpdF91bnNhZmUgdCkgZWxzZSBOb25lXG5cbmxldCBpc19oZXhfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF9sb3dlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfdXBwZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdF9leG4gPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnMCdcbiAgfCAnYScgLi4gJ2YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ2EnICsgMTBcbiAgfCAnQScgLi4gJ0YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ0EnICsgMTBcbiAgfCB0IC0+XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJDaGFyLmdldF9oZXhfZGlnaXRfZXhuOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiXG4gICAgICAgICBbIFwiY2hhclwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IGdldF9oZXhfZGlnaXQgdCA9IGlmIGlzX2hleF9kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2hleF9kaWdpdF9leG4gdCkgZWxzZSBOb25lXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgYzEgYzIgPSBjb21wYXJlIChsb3dlcmNhc2UgYzEpIChsb3dlcmNhc2UgYzIpXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfY2hhciBzdGF0ZSAobG93ZXJjYXNlIHQpXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0MC5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbigqIENvbnN0cnVjdCBhIGJ5dGUgc3RyaW5nIG9mIGxlbmd0aCAyNTYsIG1hcHBpbmcgZXZlcnkgaW5wdXQgY2hhcmFjdGVyIGNvZGUgdG9cbiAgIGl0cyBjb3JyZXNwb25kaW5nIG91dHB1dCBjaGFyYWN0ZXIuXG5cbiAgIEJlbmNobWFya3MgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuIHRoZSBsYW1iZGEgKGluY2x1ZGluZyBjb3N0IG9mXG4gICB0aGlzIGZ1bmN0aW9uKSwgZXZlbiBpZiB0YXJnZXQvcmVwbGFjZW1lbnQgYXJlIGp1c3QgMiBjaGFyYWN0ZXJzIGVhY2guXG5cbiAgIFJldHVybiBOb25lIGlmIHRoZSB0cmFuc2xhdGlvbiBtYXAgaXMgZXF1aXZhbGVudCB0byBqdXN0IHRoZSBpZGVudGl0eS4gKilcbmxldCB0cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgbGV0IHRyX21hcCA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGkgKENoYXIub2ZfaW50X2V4biBpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIC0gMSBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCAoU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgaSlcbiAgZG9uZTtcbiAgbGV0IGxhc3RfcmVwbGFjZW1lbnQgPSBTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCAtIDEpIGluXG4gIGZvclxuICAgIGkgPSBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgdG8gU3RyaW5nLmxlbmd0aCB0YXJnZXQgLSAxXG4gIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IGxhc3RfcmVwbGFjZW1lbnRcbiAgZG9uZTtcbiAgbGV0IHJlYyBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIGkgPVxuICAgIGlmIGkgPSAyNTZcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIGkpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgKGkgKyAxKVxuICBpblxuICAoKiBxdWljayBjaGVjayBvbiB0aGUgZmlyc3QgdGFyZ2V0IGNoYXJhY3RlciB3aGljaCB3aWxsIDk5JSBiZSB0cnVlICopXG4gIGxldCBmaXJzdF90YXJnZXQgPSB0YXJnZXQuWzBdIGluXG4gIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGZpcnN0X3RhcmdldCkpIGZpcnN0X3RhcmdldFxuICB8fCBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIDBcbiAgdGhlbiBTb21lIChCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0cl9tYXApXG4gIGVsc2UgTm9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYVxuXG5sZXQgc3RhZ2UgPSBGbi5pZFxubGV0IHVuc3RhZ2UgPSBGbi5pZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIEludCA9IEludDBcbmluY2x1ZGUgU3RyaW5nMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9zdHJpbmcgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfc3RyaW5nXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9zdHJpbmcgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gc3RyaW5nX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG50eXBlIGVsdCA9IGNoYXJcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxuKCogVGhpcyBpcyBjb3BpZWQvYWRhcHRlZCBmcm9tICdibGl0Lm1sJy5cbiAgIFtzdWJdLCBbc3Vib10gY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW0JsaXQuTWFrZShCeXRlcyldIHBsdXMgdW5zYWZlIGNhc3RzIHRvL2Zyb21cbiAgIHN0cmluZyBidXQgd2VyZSBpbmxpbmVkIGhlcmUgdG8gYXZvaWQgdXNpbmcgW0J5dGVzLnVuc2FmZV9vZl9zdHJpbmddIGFzIG11Y2ggYXMgcG9zc2libGUuXG4qKVxubGV0IHVuc2FmZV9zdWIgc3JjIH5wb3MgfmxlbiA9XG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBcIlwiXG4gIGVsc2UgKFxuICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuOztcblxubGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgaWYgcG9zID0gMCAmJiBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyY1xuICB0aGVuIHNyY1xuICBlbHNlIChcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggc3JjKTtcbiAgICB1bnNhZmVfc3ViIHNyYyB+cG9zIH5sZW4pXG47O1xuXG5sZXQgc3VibyA/KHBvcyA9IDApID9sZW4gc3JjID1cbiAgc3ViXG4gICAgc3JjXG4gICAgfnBvc1xuICAgIH5sZW46XG4gICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgfCBOb25lIC0+IGxlbmd0aCBzcmMgLSBwb3MpXG47O1xuXG5sZXQgcmVjIGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3MgfmVuZF8gY2hhciA9XG4gIHBvcyA8IGVuZF9cbiAgJiYgKENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgdCBwb3MpIGNoYXIgfHwgY29udGFpbnNfdW5zYWZlIHQgfnBvczoocG9zICsgMSkgfmVuZF8gY2hhcilcbjs7XG5cbmxldCBjb250YWlucyA/KHBvcyA9IDApID9sZW4gdCBjaGFyID1cbiAgbGV0IHRvdGFsX2xlbmd0aCA9IFN0cmluZy5sZW5ndGggdCBpblxuICBsZXQgbGVuID0gT3B0aW9uLnZhbHVlIGxlbiB+ZGVmYXVsdDoodG90YWxfbGVuZ3RoIC0gcG9zKSBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfOihwb3MgKyBsZW4pIGNoYXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCByZWMgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPj0gbGVuXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3M6KHBvcyArIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgaW5kZXhfZXhuIHQgY2hhciA9IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGluZGV4X2V4blxuOztcblxubGV0IGluZGV4X2Zyb21fZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IDAgfHwgcG9zID4gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9mcm9tX2V4blxuOztcblxubGV0IHJlYyByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPCAwXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgLSAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IHJpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczoobGVuIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJpbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2V4biB0IGNoYXIgPSByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2V4blxuOztcblxubGV0IHJpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IC0xIHx8IHBvcyA+PSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2Zyb21fZXhuXG47O1xuXG5sZXQgaW5kZXggdCBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCBpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgPSBfIH0gOiBTZXhwLnQgPVxuICAgIExpc3RcbiAgICAgIFsgTGlzdCBbIEF0b20gXCJwYXR0ZXJuXCI7IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm4gXVxuICAgICAgOyBMaXN0IFsgQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZSBdXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHBhdHRlcm4gdCA9IHQucGF0dGVyblxuICBsZXQgY2FzZV9zZW5zaXRpdmUgdCA9IHQuY2FzZV9zZW5zaXRpdmVcblxuICAoKiBGaW5kIG1heCBudW1iZXIgb2YgbWF0Y2hlZCBjaGFyYWN0ZXJzIGF0IFtuZXh0X3RleHRfY2hhcl0sIGdpdmVuIHRoZSBjdXJyZW50XG4gICAgIFttYXRjaGVkX2NoYXJzXS4gVHJ5IHRvIGV4dGVuZCB0aGUgY3VycmVudCBtYXRjaCwgaWYgY2hhcnMgZG9uJ3QgbWF0Y2gsIHRyeSB0byBtYXRjaFxuICAgICBmZXdlciBjaGFycy4gSWYgY2hhcnMgbWF0Y2ggdGhlbiBleHRlbmQgdGhlIG1hdGNoLiAqKVxuICBsZXQga21wX2ludGVybmFsX2xvb3Agfm1hdGNoZWRfY2hhcnMgfm5leHRfdGV4dF9jaGFyIH5wYXR0ZXJuIH5rbXBfYXJyYXkgfmNoYXJfZXF1YWwgPVxuICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIG1hdGNoZWRfY2hhcnMgaW5cbiAgICB3aGlsZVxuICAgICAgIW1hdGNoZWRfY2hhcnMgPiAwXG4gICAgICAmJiBub3QgKGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycykpXG4gICAgZG9cbiAgICAgIG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKCFtYXRjaGVkX2NoYXJzIC0gMSlcbiAgICBkb25lO1xuICAgIGlmIGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycylcbiAgICB0aGVuIG1hdGNoZWRfY2hhcnMgOj0gIW1hdGNoZWRfY2hhcnMgKyAxO1xuICAgICFtYXRjaGVkX2NoYXJzXG4gIDs7XG5cbiAgbGV0IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbWF0Y2ggY2FzZV9zZW5zaXRpdmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiBDaGFyLmVxdWFsXG4gICAgfCBmYWxzZSAtPiBDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVAgcHJlLXByb2Nlc3Npbmcgb2YgdGhlIHBhdHRlcm46IGJ1aWxkIHRoZSBpbnQgYXJyYXksIHdoaWNoLCBmb3IgZWFjaCBpLFxuICAgICBjb250YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IG5vbi10cml2aWFsIHByZWZpeCBvZiBzIHdoaWNoIGlzIGVxdWFsIHRvIGEgc3VmZml4XG4gICAgIGVuZGluZyBhdCBzLltpXSAqKVxuICBsZXQgY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBsZXQgbiA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgbGV0IGttcF9hcnJheSA9IEFycmF5LmNyZWF0ZSB+bGVuOm4gKC0xKSBpblxuICAgIGlmIG4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgMCAwO1xuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhcjoodW5zYWZlX2dldCBwYXR0ZXJuIGkpXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IGkgIW1hdGNoZWRfY2hhcnNcbiAgICAgIGRvbmUpO1xuICAgIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9XG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVA6IHVzZSB0aGUgcHJlLXByb2Nlc3NlZCBwYXR0ZXJuIHRvIG9wdGltaXplIGxvb2stYmVoaW5kcyBvbiBub24tbWF0Y2hlcy5cbiAgICAgV2UgcmV0dXJuIGludCB0byBhdm9pZCBhbGxvY2F0aW9uIGluIFtpbmRleF9leG5dLiAtMSBtZWFucyBubyBtYXRjaC4gKilcbiAgbGV0IGluZGV4X2ludGVybmFsID8ocG9zID0gMCkgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfmluXzp0ZXh0ID1cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlbmd0aCB0ZXh0IC0gbGVuZ3RoIHBhdHRlcm5cbiAgICB0aGVuIC0xXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IGogPSByZWYgcG9zIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICB3aGlsZSAhaiA8IG4gJiYgIW1hdGNoZWRfY2hhcnMgPCBrIGRvXG4gICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCAhaiBpblxuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgaiA6PSAhaiArIDFcbiAgICAgIGRvbmU7XG4gICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGsgdGhlbiAhaiAtIGsgZWxzZSAtMSlcbiAgOztcblxuICBsZXQgbWF0Y2hlcyB0IHN0ciA9IGluZGV4X2ludGVybmFsIHQgfmluXzpzdHIgPj0gMFxuXG4gIGxldCBpbmRleCA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcFxuICA7O1xuXG4gIGxldCBpbmRleF9leG4gP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwID49IDBcbiAgICB0aGVuIHBcbiAgICBlbHNlXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJTdWJzdHJpbmcgbm90IGZvdW5kXCIgWyBcInN1YnN0cmluZ1wiLCBzZXhwX29mX3N0cmluZyB0LnBhdHRlcm4gXSlcbiAgOztcblxuICBsZXQgaW5kZXhfYWxsIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5tYXlfb3ZlcmxhcCB+aW5fOnRleHQgPVxuICAgIGlmIGxlbmd0aCBwYXR0ZXJuID0gMFxuICAgIHRoZW4gTGlzdC5pbml0ICgxICsgbGVuZ3RoIHRleHQpIH5mOkZuLmlkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgbGV0IGZvdW5kID0gcmVmIFtdIGluXG4gICAgICBmb3IgaiA9IDAgdG8gbiBkb1xuICAgICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGtcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgZm91bmQgOj0gKGogLSBrKSA6OiAhZm91bmQ7XG4gICAgICAgICAgKCogd2UganVzdCBmb3VuZCBhIG1hdGNoIGluIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gKilcbiAgICAgICAgICBtYXRjaCBtYXlfb3ZlcmxhcCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+IG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKGsgLSAxKVxuICAgICAgICAgIHwgZmFsc2UgLT4gbWF0Y2hlZF9jaGFycyA6PSAwKTtcbiAgICAgICAgaWYgaiA8IG5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0IGogaW5cbiAgICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgICB+Y2hhcl9lcXVhbClcbiAgICAgIGRvbmU7XG4gICAgICBMaXN0LnJldiAhZm91bmQpXG4gIDs7XG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgP3BvcyB0IH5pbl86cyB+d2l0aF8gPVxuICAgIG1hdGNoIGluZGV4ID9wb3MgdCB+aW5fOnMgd2l0aFxuICAgIHwgTm9uZSAtPiBzXG4gICAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgbGVuX3dpdGggLSBsZW5fdCkgaW5cbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOndpdGhfIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczppIH5sZW46bGVuX3dpdGg7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6KGkgKyBsZW5fdClcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczooaSArIGxlbl93aXRoKVxuICAgICAgICB+bGVuOihsZW5fcyAtIGkgLSBsZW5fdCk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG5cbiAgbGV0IHJlcGxhY2VfYWxsIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBudW1fbWF0Y2hlcyA9IExpc3QubGVuZ3RoIG1hdGNoZXMgaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgKChsZW5fd2l0aCAtIGxlbl90KSAqIG51bV9tYXRjaGVzKSkgaW5cbiAgICAgIGxldCBuZXh0X2RzdF9wb3MgPSByZWYgMCBpblxuICAgICAgbGV0IG5leHRfc3JjX3BvcyA9IHJlZiAwIGluXG4gICAgICBMaXN0Lml0ZXIgbWF0Y2hlcyB+ZjooZnVuIGkgLT5cbiAgICAgICAgbGV0IGxlbiA9IGkgLSAhbmV4dF9zcmNfcG9zIGluXG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczohbmV4dF9zcmNfcG9zIH5kc3QgfmRzdF9wb3M6IW5leHRfZHN0X3BvcyB+bGVuO1xuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICAgIH5zcmM6d2l0aF9cbiAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgfmRzdFxuICAgICAgICAgIH5kc3RfcG9zOighbmV4dF9kc3RfcG9zICsgbGVuKVxuICAgICAgICAgIH5sZW46bGVuX3dpdGg7XG4gICAgICAgIG5leHRfZHN0X3BvcyA6PSAhbmV4dF9kc3RfcG9zICsgbGVuICsgbGVuX3dpdGg7XG4gICAgICAgIG5leHRfc3JjX3BvcyA6PSAhbmV4dF9zcmNfcG9zICsgbGVuICsgbGVuX3QpO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOiFuZXh0X3NyY19wb3NcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczohbmV4dF9kc3RfcG9zXG4gICAgICAgIH5sZW46KGxlbl9zIC0gIW5leHRfc3JjX3Bvcyk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG4gIGxldCBzcGxpdF9vbiB0IHMgPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgTGlzdC5tYXAyX2V4blxuICAgICAgKC1wYXR0ZXJuX2xlbiA6OiBtYXRjaGVzKVxuICAgICAgKG1hdGNoZXMgQCBbIFN0cmluZy5sZW5ndGggcyBdKVxuICAgICAgfmY6KGZ1biBpIGogLT4gc3ViIHMgfnBvczooaSArIHBhdHRlcm5fbGVuKSB+bGVuOihqIC0gaSAtIHBhdHRlcm5fbGVuKSlcbiAgOztcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgcHVibGljID0gdFxuXG4gICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgPVxuICAgICAgKGZ1biBhX18wMDNfIGJfXzAwNF8gLT5cbiAgICAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAzXyBiX18wMDRfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgIChlcXVhbF9zdHJpbmcgYV9fMDAzXy5wYXR0ZXJuIGJfXzAwNF8ucGF0dGVybilcbiAgICAgICAgICAgICAoU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgICAgIChlcXVhbF9ib29sIGFfXzAwM18uY2FzZV9zZW5zaXRpdmUgYl9fMDA0Xy5jYXNlX3NlbnNpdGl2ZSlcbiAgICAgICAgICAgICAgICAoZXF1YWxfYXJyYXkgZXF1YWxfaW50IGFfXzAwM18ua21wX2FycmF5IGJfXzAwNF8ua21wX2FycmF5KSlcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gYm9vbClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgcGF0dGVybiA9IHBhdHRlcm5fXzAwOF9cbiAgICAgICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA9IGNhc2Vfc2Vuc2l0aXZlX18wMTBfXG4gICAgICAgICAgIDsga21wX2FycmF5ID0ga21wX2FycmF5X18wMTJfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAwN18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTNfID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX2ludCBrbXBfYXJyYXlfXzAxMl8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwia21wX2FycmF5XCI7IGFyZ19fMDEzXyBdIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTFfID0gc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlX18wMTBfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IGFyZ19fMDExXyBdXG4gICAgICAgICAgIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9zdHJpbmcgcGF0dGVybl9fMDA4XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwYXR0ZXJuXCI7IGFyZ19fMDA5XyBdIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDdfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBGbi5pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm5faGVscGVyID0gc3RydWN0XG4gIG1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IFNlYXJjaF9wYXR0ZXJuMFxuZW5kXG5cbm9wZW4gU2VhcmNoX3BhdHRlcm5faGVscGVyXG5cbmxldCBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9leG4gP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+bWF5X292ZXJsYXAgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9hbGxcbiAgICAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKVxuICAgIH5tYXlfb3ZlcmxhcFxuICAgIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9maXJzdCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5yZXBsYWNlX2FsbCAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5zdWJzdHJpbmcgPVxuICBPcHRpb24uaXNfc29tZSAoc3Vic3RyX2luZGV4X2dlbiB0IH5wYXR0ZXJuOnN1YnN0cmluZyB+Y2FzZV9zZW5zaXRpdmUpXG47O1xuXG5sZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9hbGwgPSBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IGlzX3N1YnN0cmluZyA9IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcblxubGV0IGlzX3N1YnN0cmluZ19hdF9nZW4gPVxuICBsZXQgcmVjIGxvb3AgfnN0ciB+c3RyX3BvcyB+c3ViIH5zdWJfcG9zIH5zdWJfbGVuIH5jaGFyX2VxdWFsID1cbiAgICBpZiBzdWJfcG9zID0gc3ViX2xlblxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgY2hhcl9lcXVhbCAodW5zYWZlX2dldCBzdHIgc3RyX3BvcykgKHVuc2FmZV9nZXQgc3ViIHN1Yl9wb3MpXG4gICAgdGhlbiBsb29wIH5zdHIgfnN0cl9wb3M6KHN0cl9wb3MgKyAxKSB+c3ViIH5zdWJfcG9zOihzdWJfcG9zICsgMSkgfnN1Yl9sZW4gfmNoYXJfZXF1YWxcbiAgICBlbHNlIGZhbHNlXG4gIGluXG4gIGZ1biBzdHIgfnBvczpzdHJfcG9zIH5zdWJzdHJpbmc6c3ViIH5jaGFyX2VxdWFsIC0+XG4gICAgbGV0IHN0cl9sZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHN1Yl9sZW4gPSBsZW5ndGggc3ViIGluXG4gICAgaWYgc3RyX3BvcyA8IDAgfHwgc3RyX3BvcyA+IHN0cl9sZW5cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJTdHJpbmcuaXNfc3Vic3RyaW5nX2F0OiBpbnZhbGlkIGluZGV4ICVkIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgICAgc3RyX3Bvc1xuICAgICAgICBzdHJfbGVuXG4gICAgICAgICgpO1xuICAgIHN0cl9wb3MgKyBzdWJfbGVuIDw9IHN0cl9sZW5cbiAgICAmJiBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvczowIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfc3VmZml4X2dlbiBzdHJpbmcgfnN1ZmZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW5cbiAgICAgICBzdHJpbmdcbiAgICAgICB+cG9zOihzdHJpbmdfbGVuIC0gc3VmZml4X2xlbilcbiAgICAgICB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfcHJlZml4X2dlbiBzdHJpbmcgfnByZWZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgcHJlZml4X2xlbiA9IGxlbmd0aCBwcmVmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBwcmVmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW4gc3RyaW5nIH5wb3M6MCB+c3Vic3RyaW5nOnByZWZpeCB+Y2hhcl9lcXVhbFxuOztcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcl9jb21wYXJlX2Nhc2VsZXNzIGMxIGMyID0gQ2hhci5jb21wYXJlIChDaGFyLmxvd2VyY2FzZSBjMSkgKENoYXIubG93ZXJjYXNlIGMyKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2xvb3AgfnBvcyB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMiA9XG4gICAgICBpZiBwb3MgPSBsZW4xXG4gICAgICB0aGVuIGlmIHBvcyA9IGxlbjIgdGhlbiAwIGVsc2UgLTFcbiAgICAgIGVsc2UgaWYgcG9zID0gbGVuMlxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMgPSBjaGFyX2NvbXBhcmVfY2FzZWxlc3MgKHVuc2FmZV9nZXQgc3RyaW5nMSBwb3MpICh1bnNhZmVfZ2V0IHN0cmluZzIgcG9zKSBpblxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbG9vcCB+cG9zOihwb3MgKyAxKSB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMlxuICAgICAgICB8IF8gLT4gYylcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgc3RyaW5nMSBzdHJpbmcyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgc3RyaW5nMSBzdHJpbmcyXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2VcbiAgICAgICAgY29tcGFyZV9sb29wXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfnN0cmluZzFcbiAgICAgICAgICB+bGVuMTooU3RyaW5nLmxlbmd0aCBzdHJpbmcxKVxuICAgICAgICAgIH5zdHJpbmcyXG4gICAgICAgICAgfmxlbjI6KFN0cmluZy5sZW5ndGggc3RyaW5nMilcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPVxuICAgICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgICBsZXQgc3RhdGUgPSByZWYgKGhhc2hfZm9sZF9pbnQgc3RhdGUgbGVuKSBpblxuICAgICAgZm9yIHBvcyA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBzdGF0ZSA6PSBoYXNoX2ZvbGRfY2hhciAhc3RhdGUgKENoYXIubG93ZXJjYXNlICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgICAgIGRvbmU7XG4gICAgICAhc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgICBsZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2V4biA9IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9hbGwgPSBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmdfYXQgPSBpc19zdWJzdHJpbmdfYXRfZ2VuIH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGbi5pZFxubGV0IHRvX3N0cmluZyA9IEZuLmlkXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIlN0cmluZy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPCAwIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSAtIDEpIGluXG4gIGxvb3AgW10gKGxlbmd0aCBzIC0gMSlcbjs7XG5cbmxldCB0b19saXN0X3JldiBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPSBsZW4gdGhlbiBhY2MgZWxzZSBsb29wIChzLltpXSA6OiBhY2MpIChpICsgMSkgaW5cbiAgbG9vcCBbXSAwXG47O1xuXG5sZXQgcmV2IHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyBpICh1bnNhZmVfZ2V0IHQgKGxlbiAtIDEgLSBpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXNcbjs7XG5cbigqKiBFZmZpY2llbnQgc3RyaW5nIHNwbGl0dGluZyAqKVxuXG5sZXQgbHNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcubHNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgbHNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSBpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgbHNwbGl0Ml9leG5cbjs7XG5cbmxldCByc3BsaXQyX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yc3BsaXQyX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByc3BsaXQyX2V4biBsaW5lIH5vbjpkZWxpbSA9XG4gICAgbGV0IHBvcyA9IHJpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcnNwbGl0Ml9leG5cbjs7XG5cbmxldCBsc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKGxzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJzcGxpdDIgbGluZSB+b24gPVxuICB0cnkgU29tZSAocnNwbGl0Ml9leG4gbGluZSB+b24pIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNoYXJfbGlzdF9tZW0gbCAoYyA6IGNoYXIpID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCBoZCA6OiB0bCAtPiBDaGFyLmVxdWFsIGhkIGMgfHwgY2hhcl9saXN0X21lbSB0bCBjXG47O1xuXG5sZXQgc3BsaXRfZ2VuIHN0ciB+b24gPVxuICBsZXQgaXNfZGVsaW0gPVxuICAgIG1hdGNoIG9uIHdpdGhcbiAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgIHwgYGNoYXJfbGlzdCBsIC0+IGZ1biBjIC0+IGNoYXJfbGlzdF9tZW0gbCBjXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gIGxldCByZWMgbG9vcCBhY2MgbGFzdF9wb3MgcG9zID1cbiAgICBpZiBwb3MgPSAtMVxuICAgIHRoZW4gc3ViIHN0ciB+cG9zOjAgfmxlbjpsYXN0X3BvcyA6OiBhY2NcbiAgICBlbHNlIGlmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvczEgPSBwb3MgKyAxIGluXG4gICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpwb3MxIH5sZW46KGxhc3RfcG9zIC0gcG9zMSkgaW5cbiAgICAgIGxvb3AgKHN1Yl9zdHIgOjogYWNjKSBwb3MgKHBvcyAtIDEpKVxuICAgIGVsc2UgbG9vcCBhY2MgbGFzdF9wb3MgKHBvcyAtIDEpXG4gIGluXG4gIGxvb3AgW10gbGVuIChsZW4gLSAxKVxuOztcblxubGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG5sZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG5sZXQgc3BsaXRfbGluZXMgPVxuICBsZXQgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbCA9XG4gICAgcG9zIDo9ICFwb3MgLSBpZiAhcG9zID4gMCAmJiBDaGFyLmVxdWFsIHQuWyFwb3MgLSAxXSAnXFxyJyB0aGVuIDIgZWxzZSAxO1xuICAgIGVvbCA6PSAhcG9zICsgMVxuICBpblxuICBmdW4gdCAtPlxuICAgIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBuID0gMFxuICAgIHRoZW4gW11cbiAgICBlbHNlIChcbiAgICAgICgqIEludmFyaWFudDogWy0xIDw9IHBvcyA8IGVvbF0uICopXG4gICAgICBsZXQgcG9zID0gcmVmIChuIC0gMSkgaW5cbiAgICAgIGxldCBlb2wgPSByZWYgbiBpblxuICAgICAgbGV0IGFjID0gcmVmIFtdIGluXG4gICAgICAoKiBXZSB0cmVhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgc3BlY2lhbGx5LCBiZWNhdXNlIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGFcbiAgICAgICAgIG5ld2xpbmUsIHdlIGRvbid0IHdhbnQgYW4gZXh0cmEgZW1wdHkgc3RyaW5nIGF0IHRoZSBlbmQgb2YgdGhlIG91dHB1dC4gKilcbiAgICAgIGlmIENoYXIuZXF1YWwgdC5bIXBvc10gJ1xcbicgdGhlbiBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sO1xuICAgICAgd2hpbGUgIXBvcyA+PSAwIGRvXG4gICAgICAgIGlmIENoYXIuKCA8PiApIHQuWyFwb3NdICdcXG4nXG4gICAgICAgIHRoZW4gZGVjciBwb3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogQmVjYXVzZSBbcG9zIDwgZW9sXSwgd2Uga25vdyB0aGF0IFtzdGFydCA8PSBlb2xdLiAqKVxuICAgICAgICAgIGxldCBzdGFydCA9ICFwb3MgKyAxIGluXG4gICAgICAgICAgYWMgOj0gc3ViIHQgfnBvczpzdGFydCB+bGVuOighZW9sIC0gc3RhcnQpIDo6ICFhYztcbiAgICAgICAgICBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sKVxuICAgICAgZG9uZTtcbiAgICAgIHN1YiB0IH5wb3M6MCB+bGVuOiFlb2wgOjogIWFjKVxuOztcblxubGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5sZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcblxubGV0IGlzX3N1YnN0cmluZ19hdCBzIH5wb3MgfnN1YnN0cmluZyA9XG4gIGlzX3N1YnN0cmluZ19hdF9nZW4gcyB+cG9zIH5zdWJzdHJpbmcgfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuOztcblxubGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gIGVsc2UgKFxuICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgIHwgXyAtPiBvbl9lcnJvcilcbjs7XG5cbmxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9wcmVmaXhcIiB0IG4gfnBvczpuIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9zdWZmaXhcIiB0IG4gfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG5sZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxubGV0IGxmaW5kaSA/KHBvcyA9IDApIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA9IG4gdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gIGxvb3AgcG9zIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBmIGMpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT4gU29tZSB0LltpXVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gblxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZiB0LltpXSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzKVxuICBpblxuICBsb29wIDAgW0Bub250YWlsXVxuOztcblxubGV0IHJmaW5kaSA/cG9zIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgLSAxKSBpblxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gICAgfCBOb25lIC0+IGxlbmd0aCB0IC0gMVxuICBpblxuICBsb29wIHBvcyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbGFzdF9ub25fZHJvcCB+ZHJvcCB0ID0gcmZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gbm90IChkcm9wIGMpKSBbQG5vbnRhaWxdXG5cbmxldCByc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG47O1xuXG5sZXQgZmlyc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IGxmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSkgW0Bub250YWlsXVxuXG5sZXQgbHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgMCAtPiB0XG4gIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuOztcblxuKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgIGZpbmFsIHJlc3VsdC4gIFRoaXMgYWxzbyBzYXZlcyBzb21lIGFtb3VudCBvZiB0aW1lLiAqKVxubGV0IHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwIHx8IG5vdCAoZHJvcCB0LlswXSB8fCBkcm9wIHQuW2xlbmd0aCAtIDFdKVxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIChtYXRjaCBsYXN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGxldCB0JyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdCcgaSAoZiBpIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG4oKiByZXBlYXRlZCBjb2RlIHRvIGF2b2lkIHJlcXVpcmluZyBhbiBleHRyYSBhbGxvY2F0aW9uIGZvciBhIGNsb3N1cmUgb24gZWFjaCBjYWxsLiAqKVxubGV0IG1hcCB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgdC5baV0pXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dCdcbjs7XG5cbmxldCB0b19hcnJheSBzID0gQXJyYXkuaW5pdCAobGVuZ3RoIHMpIH5mOihmdW4gaSAtPiBzLltpXSlcblxubGV0IGV4aXN0cyA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPCBsZW4gJiYgKGYgcy5baV0gfHwgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9yX2FsbCA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPSBsZW4gfHwgKGYgcy5baV0gJiYgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgaSBhYyB0LltpXSkgfmYgfmxlblxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgMCBpbml0IH5mIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHRcbmxldCBtYXhfZWx0IHQgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0XG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmxldCBmaW5kX21hcGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxubGV0IGZpbmRpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kaSB+aXRlcmkgdCB+ZlxubGV0IGNvdW50aSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuY291bnRpIH5mb2xkaSB0IH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZvcl9hbGxpIH5pdGVyaSB0IH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZXhpc3RzaSB+aXRlcmkgdCB+ZlxuXG5sZXQgbWVtID1cbiAgbGV0IHJlYyBsb29wIHQgYyB+cG9zOmkgfmxlbiA9XG4gICAgaSA8IGxlbiAmJiAoQ2hhci5lcXVhbCBjICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IGMgfnBvczooaSArIDEpIH5sZW4pXG4gIGluXG4gIGZ1biB0IGMgLT4gbG9vcCB0IGMgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBpZiBDaGFyLmVxdWFsIHRhcmdldCByZXBsYWNlbWVudFxuICB0aGVuIHNcbiAgZWxzZSBpZiBtZW0gcyB0YXJnZXRcbiAgdGhlbiBtYXAgcyB+ZjooZnVuIGMgLT4gaWYgQ2hhci5lcXVhbCBjIHRhcmdldCB0aGVuIHJlcGxhY2VtZW50IGVsc2UgYylcbiAgZWxzZSBzXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBpc19lbXB0eSB0YXJnZXRcbiAgdGhlbiBzdGFnZSBGbi5pZFxuICBlbHNlIGlmIGlzX2VtcHR5IHJlcGxhY2VtZW50XG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aSByZXBsYWNlbWVudCBpcyBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgRm4uaWRcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgaWYgZXhpc3RzIHMgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgKHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSkpXG4gICAgICAgIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSlcbiAgICAgICAgZWxzZSBzKSlcbjs7XG5cbigqIGZhc3QgdmVyc2lvbiwgaWYgd2UgZXZlciBuZWVkIGl0OlxuICAge1tcbiAgICAgbGV0IGNvbmNhdF9hcnJheSB+c2VwIGFyID1cbiAgICAgICBsZXQgYXJfbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgICAgaWYgYXJfbGVuID0gMCB0aGVuIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBsZXQgc2VwX2xlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgIGxldCByZXNfbGVuX3JlZiA9IHJlZiAoc2VwX2xlbiAqIChhcl9sZW4gLSAxKSkgaW5cbiAgICAgICAgIGZvciBpID0gMCB0byBhcl9sZW4gLSAxIGRvXG4gICAgICAgICAgIHJlc19sZW5fcmVmIDo9ICFyZXNfbGVuX3JlZiArIGxlbmd0aCBhci4oaSlcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICBsZXQgcmVzID0gY3JlYXRlICFyZXNfbGVuX3JlZiBpblxuICAgICAgICAgbGV0IHN0cl8wID0gYXIuKDApIGluXG4gICAgICAgICBsZXQgbGVuXzAgPSBsZW5ndGggc3RyXzAgaW5cbiAgICAgICAgIGJsaXQgfnNyYzpzdHJfMCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjAgfmxlbjpsZW5fMDtcbiAgICAgICAgIGxldCBwb3NfcmVmID0gcmVmIGxlbl8wIGluXG4gICAgICAgICBmb3IgaSA9IDEgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgICAgICAgICAgYmxpdCB+c3JjOnNlcCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOnBvcyB+bGVuOnNlcF9sZW47XG4gICAgICAgICAgIGxldCBuZXdfcG9zID0gcG9zICsgc2VwX2xlbiBpblxuICAgICAgICAgICBsZXQgc3RyX2kgPSBhci4oaSkgaW5cbiAgICAgICAgICAgbGV0IGxlbl9pID0gbGVuZ3RoIHN0cl9pIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzdHJfaSB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOm5ld19wb3MgfmxlbjpsZW5faTtcbiAgICAgICAgICAgcG9zX3JlZiA6PSBuZXdfcG9zICsgbGVuX2lcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICByZXNcbiAgIF19ICopXG5cbmxldCBjb25jYXRfYXJyYXkgP3NlcCBhciA9IGNvbmNhdCA/c2VwIChBcnJheS50b19saXN0IGFyKVxubGV0IGNvbmNhdF9tYXAgP3NlcCBzIH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcCAodG9fYXJyYXkgcykgfmYpXG5sZXQgY29uY2F0X21hcGkgP3NlcCB0IH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcGkgKHRvX2FycmF5IHQpIH5mKVxuXG5sZXQgY29uY2F0X2xpbmVzID1cbiAgbGV0IHJlYyBsaW5lX2xlbmd0aHMgfmxpbmVzIH5uZXdsaW5lX2xlbiB+c3VtID1cbiAgICBtYXRjaCBsaW5lcyB3aXRoXG4gICAgfCBbXSAtPiBzdW1cbiAgICB8IGxpbmUgOjogbGluZXMgLT5cbiAgICAgIGxldCBzdW0gPSBzdW0gKyBTdHJpbmcubGVuZ3RoIGxpbmUgKyBuZXdsaW5lX2xlbiBpblxuICAgICAgbGluZV9sZW5ndGhzIH5saW5lcyB+bmV3bGluZV9sZW4gfnN1bVxuICBpblxuICBsZXQgcmVjIHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3MgPVxuICAgIG1hdGNoIGxpbmVzIHdpdGhcbiAgICB8IFtdIC0+IHBvc1xuICAgIHwgbGluZSA6OiBsaW5lcyAtPlxuICAgICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6bGluZVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5kc3Q6YnVmXG4gICAgICAgIH5kc3RfcG9zOnBvc1xuICAgICAgICB+bGVuOihTdHJpbmcubGVuZ3RoIGxpbmUpO1xuICAgICAgbGV0IHBvcyA9IHBvcyArIFN0cmluZy5sZW5ndGggbGluZSBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIGlmIGNybGZcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zICdcXHInO1xuICAgICAgICAgIHBvcyArIDEpXG4gICAgICAgIGVsc2UgcG9zXG4gICAgICBpblxuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zICdcXG4nO1xuICAgICAgbGV0IHBvcyA9IHBvcyArIDEgaW5cbiAgICAgIHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3NcbiAgaW5cbiAgZnVuID8oY3JsZiA9IGZhbHNlKSBsaW5lcyAtPlxuICAgIGxldCBuZXdsaW5lX2xlbiA9IGlmIGNybGYgdGhlbiAyIGVsc2UgMSBpblxuICAgIGxldCBsZW4gPSBsaW5lX2xlbmd0aHMgfm5ld2xpbmVfbGVuIH5saW5lcyB+c3VtOjAgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCB3cml0dGVuID0gd3JpdGVfbGluZXMgfmJ1ZiB+bGluZXMgfmNybGYgfnBvczowIGluXG4gICAgYXNzZXJ0ICh3cml0dGVuID0gbGVuKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuOztcblxuKCogW2ZpbHRlciB0IGZdIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtLlxuXG4gICBMZXQgW24gPSBsZW5ndGggdF0uXG5cbiAgIDEuIEZpbmQgdGhlIGxvd2VzdCBbaV0gc3VjaCB0aGF0IFtub3QgKGYgdC5baV0pXS5cblxuICAgMi4gSWYgdGhlcmUgaXMgbm8gc3VjaCBbaV0sIHRoZW4gcmV0dXJuIFt0XS5cblxuICAgMy4gSWYgdGhlcmUgaXMgc3VjaCBhbiBbaV0sIGFsbG9jYXRlIGEgc3RyaW5nLCBbb3V0XSwgdG8gaG9sZCB0aGUgcmVzdWx0LiAgW291dF0gaGFzXG4gICBsZW5ndGggW24gLSAxXSwgd2hpY2ggaXMgdGhlIG1heGltdW0gcG9zc2libGUgb3V0cHV0IHNpemUgZ2l2ZW4gdGhhdCB0aGVyZSBpcyBhdCBsZWFzdFxuICAgb25lIGNoYXJhY3RlciBub3Qgc2F0aXNmeWluZyBbZl0uXG5cbiAgIDQuIENvcHkgY2hhcmFjdGVycyBhdCBpbmRpY2VzIDAgLi4uIFtpIC0gMV0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDUuIFdhbGsgdGhyb3VnaCBjaGFyYWN0ZXJzIGF0IGluZGljZXMgW2krMV0gLi4uIFtuLTFdIG9mIFt0XSwgY29weWluZyB0aG9zZSB0aGF0XG4gICBzYXRpc2Z5IFtmXSBmcm9tIFt0XSB0byBbb3V0XS5cblxuICAgNi4gSWYgd2UgY29tcGxldGVseSBmaWxsZWQgW291dF0sIHRoZW4gcmV0dXJuIGl0LiAgSWYgbm90LCByZXR1cm4gdGhlIHByZWZpeCBvZiBbb3V0XVxuICAgdGhhdCB3ZSBkaWQgZmlsbCBpbi5cblxuICAgVGhpcyBhbGdvcml0aG0gaGFzIHRoZSBwcm9wZXJ0eSB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgYSBuZXcgc3RyaW5nIGlmIHRoZXJlJ3NcbiAgIG5vdGhpbmcgdG8gZmlsdGVyLCB3aGljaCBpcyBhIGNvbW1vbiBjYXNlLiAqKVxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBuICYmIGYgIWkgdC5bIWldIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGlmICFpID0gblxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IEJ5dGVzLmNyZWF0ZSAobiAtIDEpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpvdXQgfmRzdF9wb3M6MCB+bGVuOiFpO1xuICAgIGxldCBvdXRfcG9zID0gcmVmICFpIGluXG4gICAgaW5jciBpO1xuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGMgPSB0LlshaV0gaW5cbiAgICAgIGlmIGYgIWkgY1xuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXQgIW91dF9wb3MgYztcbiAgICAgICAgaW5jciBvdXRfcG9zKTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgbGV0IG91dCA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0IGluXG4gICAgaWYgIW91dF9wb3MgPSBuIC0gMSB0aGVuIG91dCBlbHNlIHN1YiBvdXQgfnBvczowIH5sZW46IW91dF9wb3MpXG47O1xuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIFNvbWUgKGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9pZl9leGlzdHMgcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3BfcHJlZml4X2V4biBzIH5wcmVmaXggPVxuICBtYXRjaCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3BfcHJlZml4X2V4biAlUyAlU1wiIHMgcHJlZml4ICgpXG47O1xuXG5sZXQgY2hvcF9zdWZmaXggcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIFNvbWUgKGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9pZl9leGlzdHMgcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3Bfc3VmZml4X2V4biBzIH5zdWZmaXggPVxuICBtYXRjaCBjaG9wX3N1ZmZpeCBzIH5zdWZmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3Bfc3VmZml4X2V4biAlUyAlU1wiIHMgc3VmZml4ICgpXG47O1xuXG5tb2R1bGUgRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeCA9IHN0cnVjdFxuICAoKiBXaGVuIHRha2luZyBhIHN0cmluZyBwcmVmaXggb3Igc3VmZml4LCB3ZSBleHRyYWN0IGZyb20gdGhlIHNob3J0ZXN0IGlucHV0IGF2YWlsYWJsZVxuICAgICBpbiBjYXNlIHdlIGNhbiBqdXN0IHJldHVybiBvbmUgb2Ygb3VyIGlucHV0cyB3aXRob3V0IGFsbG9jYXRpbmcgYSBuZXcgc3RyaW5nLiAqKVxuXG4gIGxldCBzaG9ydGVyIGEgYiA9IGlmIGxlbmd0aCBhIDw9IGxlbmd0aCBiIHRoZW4gYSBlbHNlIGJcblxuICBsZXQgc2hvcnRlc3QgbGlzdCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+IExpc3QuZm9sZCByZXN0IH5pbml0OmZpcnN0IH5mOnNob3J0ZXJcbiAgOztcblxuICAoKiBPdXIgZ2VuZXJpYyBhY2Nlc3NvcnMgZm9yIGNvbW1vbiBwcmVmaXgvc3VmZml4IGFic3RyYWN0IG92ZXIgW2dldF9wb3NdLCB3aGljaCBpc1xuICAgICBlaXRoZXIgW3Bvc19mcm9tX2xlZnRdIG9yIFtwb3NfZnJvbV9yaWdodF0uICopXG5cbiAgbGV0IHBvc19mcm9tX2xlZnQgKF8gOiB0KSAoaSA6IGludCkgPSBpXG4gIGxldCBwb3NfZnJvbV9yaWdodCB0IGkgPSBsZW5ndGggdCAtIGkgLSAxXG5cbiAgbGV0IHJlYyBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyID1cbiAgICBpZiBsZW5fc29fZmFyID49IG1heF9sZW5cbiAgICB0aGVuIG1heF9sZW5cbiAgICBlbHNlIGlmIENoYXIuZXF1YWxcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYSAoZ2V0X3BvcyBhIGxlbl9zb19mYXIpKVxuICAgICAgICAgICAgICAodW5zYWZlX2dldCBiIChnZXRfcG9zIGIgbGVuX3NvX2ZhcikpXG4gICAgdGhlbiBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOihsZW5fc29fZmFyICsgMSlcbiAgICBlbHNlIGxlbl9zb19mYXJcbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgPVxuICAgIGxldCBtYXhfbGVuID0gbWluIChsZW5ndGggYSkgKGxlbmd0aCBiKSBpblxuICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICA7O1xuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgbGlzdCB+Z2V0X3BvcyB+bWF4X2xlbiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBtYXhfbGVuXG4gICAgfCBzZWNvbmQgOjogcmVzdCAtPlxuICAgICAgbGV0IG1heF9sZW4gPVxuICAgICAgICAoKiBXZSBjYWxsIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoXSBzb1xuICAgICAgICAgICB0aGF0IFttYXhfbGVuXSBsaW1pdHMgb3VyIHRyYXZlcnNhbCBvZiBbZmlyc3RdIGFuZCBbc2Vjb25kXS4gKilcbiAgICAgICAgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGZpcnN0IHNlY29uZCB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjowXG4gICAgICBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3Agc2Vjb25kIHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3MgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gMFxuICAgIHwgZmlyc3QgOjogcmVzdCAtPlxuICAgICAgKCogUHJlY29tcHV0aW5nIFttYXhfbGVuXSBiYXNlZCBvbiBbc2hvcnRlc3QgbGlzdF0gc2F2ZXMgdXMgd29yayBpbiBsb25nZXIgc3RyaW5ncyxcbiAgICAgICAgIGF0IHRoZSBjb3N0IG9mIGFuIGV4dHJhIHBhc3Mgb3ZlciB0aGUgc3BpbmUgb2YgW2xpc3RdLlxuXG4gICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91J3JlIGxvb2tpbmcgZm9yIHRoZSBsb25nZXN0IHByZWZpeCBvZiB0aGUgc3RyaW5nczpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIGxldCBsb25nX2EgPSBMaXN0LmluaXQgMTAwMCB+ZjooRm4uY29uc3QgJ2EnKVxuICAgICAgICAgICAgWyBsb25nX2E7IGxvbmdfYTsgJ2FhJyBdXG4gICAgICAgICB2fVxuXG4gICAgICAgICB0aGUgYXBwcm9hY2ggYmVsb3cgd2lsbCBqdXN0IGNoZWNrIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiBhbGwgdGhlIHN0cmluZ3MuXG4gICAgICAqKVxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggKHNob3J0ZXN0IGxpc3QpIGluXG4gICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIHRoYXQgcHJvZHVjZSBhIHN0cmluZyBhYnN0cmFjdCBvdmVyIFt0YWtlXSwgd2hpY2ggaXMgZWl0aGVyXG4gICAgIFtwcmVmaXhdIG9yIFtzdWZmaXhdLiAqKVxuXG4gIGxldCBjb21tb25fZ2VuZXJpYzIgYSBiIH5nZXRfcG9zIH50YWtlID1cbiAgICBsZXQgbGVuID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgaW5cbiAgICAoKiBVc2UgdGhlIHNob3J0ZXIgb2YgdGhlIHR3byBzdHJpbmdzLCBzbyB0aGF0IGlmIHRoZSBzaG9ydGVyIG9uZSBpcyB0aGUgc2hhcmVkXG4gICAgICAgcHJlZml4LCBbdGFrZV0gd29uJ3QgYWxsb2NhdGUgYW5vdGhlciBzdHJpbmcuICopXG4gICAgdGFrZSAoc2hvcnRlciBhIGIpIGxlblxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpYyBsaXN0IH5nZXRfcG9zIH50YWtlID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIEFzIHdpdGggW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0sIHdlIGJhc2UgW21heF9sZW5dIG9uIFtzaG9ydGVzdCBsaXN0XS4gV2UgYWxzb1xuICAgICAgICAgdXNlIHRoaXMgcmVzdWx0IGZvciBbdGFrZV0sIGJlbG93LCB0byBwb3RlbnRpYWxseSBhdm9pZCBhbGxvY2F0aW5nIGEgc3RyaW5nLiAqKVxuICAgICAgbGV0IHMgPSBzaG9ydGVzdCBsaXN0IGluXG4gICAgICBsZXQgbWF4X2xlbiA9IGxlbmd0aCBzIGluXG4gICAgICBpZiBtYXhfbGVuID0gMFxuICAgICAgdGhlbiBcIlwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9XG4gICAgICAgICAgKCogV2UgY2FsbCBkaXJlY3RseSBpbnRvIFtjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcF0gcmF0aGVyIHRoYW5cbiAgICAgICAgICAgICBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoXSB0byBhdm9pZCByZWNvbXB1dGluZyBbc2hvcnRlc3QgbGlzdF0uICopXG4gICAgICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICAgICAgICBpblxuICAgICAgICB0YWtlIHMgbGVuKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeFxuXG4gIGxldCBjb21tb25fcHJlZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnByZWZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnN1ZmZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXhfbGVuZ3RoIGxpc3QgPSBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyX2xlbmd0aCBhIGIgPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbmVuZFxuXG4oKiBUaGVyZSB1c2VkIHRvIGJlIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIHRoYXQgd2FzIGZhc3RlciBmb3IgdmVyeSBzaG9ydCBzdHJpbmdzXG4gICAocGVha2luZyBhdCA0MCUgZmFzdGVyIGZvciA0LTYgY2hhciBsb25nIHN0cmluZ3MpLlxuICAgVGhpcyBuZXcgZnVuY3Rpb24gaXMgYXJvdW5kIDIwJSBmYXN0ZXIgdGhhbiB0aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uLCBidXQgc2xvd2VyXG4gICB0aGFuIHRoZSBwcmV2aW91cyBjdXN0b20gaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHRoZSBuZXcgT0NhbWwgZnVuY3Rpb24gaXMgd2VsbFxuICAgYmVoYXZlZCwgYW5kIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbGVzcyBsaWtlbHkgdG8gZGl2ZXJnZSBmcm9tIHRoZSBkZWZhdWx0IE9DYW1sXG4gICBpbXBsZW1lbnRhdGlvbiBkb2VzLCB3aGljaCBpcyBhIGRlc2lyYWJsZSBwcm9wZXJ0eS4gKFRoZSBvbmx5IHdheSB0byBhdm9pZCB0aGVcbiAgIGRpdmVyZ2VuY2UgaXMgdG8gZXhwb3NlIHRoZSBtYWNybyByZWRlZmluZWQgaW4gaGFzaF9zdHVicy5jIGluIHRoZSBoYXNoLmggaGVhZGVyIG9mXG4gICB0aGUgT0NhbWwgY29tcGlsZXIuKSAqKVxubW9kdWxlIEhhc2ggPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgaGFzaCA6IHN0cmluZyAtPiBpbnQgPSBcIkJhc2VfaGFzaF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZW5kXG5cbigqIFtpbmNsdWRlIEhhc2hdIHRvIG1ha2UgdGhlIFtleHRlcm5hbF0gdmVyc2lvbiBvdmVycmlkZSB0aGUgW2hhc2hdIGZyb21cbiAgIFtIYXNoYWJsZS5NYWtlX2JpbmFibGVdLCBzbyB0aGF0IHdlIGdldCBhIGxpdHRsZSBiaXQgb2YgYSBzcGVlZHVwIGJ5IGV4cG9zaW5nIGl0IGFzXG4gICBleHRlcm5hbCBpbiB0aGUgbWxpLiAqKVxubGV0IF8gPSBoYXNoXG5cbmluY2x1ZGUgSGFzaFxuXG4oKiBmb3IgaW50ZXJhY3RpdmUgdG9wLWxldmVscyAtLSBtb2R1bGVzIGRlcml2aW5nIGZyb20gU3RyaW5nIHNob3VsZCBoYXZlIFN0cmluZydzIHByZXR0eVxuICAgcHJpbnRlci4gKilcbmxldCBwcCBwcGYgc3RyaW5nID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiVTXCIgc3RyaW5nXG5sZXQgb2ZfY2hhciBjID0gbWFrZSAxIGNcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBCeXRlcy5zZXQgdCBpIGMpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbmxldCBvZl9saXN0ID0gb2ZfY2hhcl9saXN0XG5sZXQgb2ZfYXJyYXkgYSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhKSB+ZjooQXJyYXkuZ2V0IGEpXG5sZXQgYXBwZW5kID0gKCBeIClcblxubGV0IHBhZF9yaWdodCA/KGNoYXIgPSAnICcpIHMgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHMgaW5cbiAgaWYgc3JjX2xlbiA+PSBsZW5cbiAgdGhlbiBzXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5kc3Q6cmVzIH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnNyY19sZW47XG4gICAgQnl0ZXMuZmlsbCB+cG9zOnNyY19sZW4gfmxlbjoobGVuIC0gc3JjX2xlbikgcmVzIGNoYXI7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXMpXG47O1xuXG5sZXQgcGFkX2xlZnQgPyhjaGFyID0gJyAnKSBzIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzIGluXG4gIGlmIHNyY19sZW4gPj0gbGVuXG4gIHRoZW4gc1xuICBlbHNlIChcbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+ZHN0OnJlcyB+c3JjX3BvczowIH5kc3RfcG9zOihsZW4gLSBzcmNfbGVuKSB+bGVuOnNyY19sZW47XG4gICAgQnl0ZXMuZmlsbCB+cG9zOjAgfmxlbjoobGVuIC0gc3JjX2xlbikgcmVzIGNoYXI7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXMpXG47O1xuXG4oKiBDYWxsZWQgdXBvbiBmaXJzdCBkaWZmZXJlbmNlIGdlbmVyYXRlZCBieSBmaWx0ZXJpbmcuIEFsbG9jYXRlcyBbYnVmZmVyX2xlbl0gYnl0ZXNcbiAgIGZvciBuZXcgcmVzdWx0LCBhbmQgY29waWVzIFtwcmVmaXhfbGVuXSB1bmNoYW5nZWQgY2hhcmFjdGVycyBmcm9tIFtzcmNdLlxuICAgQWx3YXlzIHJldHVybnMgYSBsb2NhbCBidWZmZXIuICopXG5sZXQgbG9jYWxfY29weV9wcmVmaXggKHNyYyBbQGxvY2FsXSkgfnByZWZpeF9sZW4gfmJ1ZmZlcl9sZW4gPVxuICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlX2xvY2FsIGJ1ZmZlcl9sZW4gaW5cbiAgQnl0ZXMuUHJpbWl0aXZlcy51bnNhZmVfYmxpdF9zdHJpbmcgfnNyYyB+ZHN0IH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnByZWZpeF9sZW47XG4gICBkc3Rcbjs7XG5cbigqIENvcGllcyBhIHBlcmhhcHMtbG9jYWwgYnVmZmVyIGludG8gYSBkZWZpbml0ZWx5LWdsb2JhbCBzdHJpbmcuICopXG5sZXQgbG9jYWxfY29weV90b19zdHJpbmcgKGJ1ZiBbQGxvY2FsXSkgfnBvcyA9XG4gIGxldCBzdHIgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZiBpblxuICB1bnNhZmVfc3ViIHN0ciB+cG9zOjAgfmxlbjpwb3MgW0Bub250YWlsXVxuOztcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBzdHJ1Y3RcbiAgICAoKiBmaWx0ZXJfbWFwIGhlbHBlcnMgKilcblxuICAgICgqIEZpbHRlcnMgZnJvbSBzdHJpbmcgW3NyY10gaW50byBhbiBhbGxvY2F0ZWQgYnVmZmVyIFtkc3RdO1xuICAgICAgIGNvcGllcyB0aGUgYWxsb2NhdGVkIGJ1ZmZlciB0byBhIGhlYXAtYWxsb2NhdGVkIHJlc3VsdCBzdHJpbmcuXG5cbiAgICAgICBQcmUtY29uZGl0aW9uczpcbiAgICAgICBbc3JjX2xlbiA9IGxlbmd0aCBzcmNdXG4gICAgICAgW3NyYyAhPSBkc3RdXG4gICAgICAgWzAgPD0gc3JjX3BvcyA8IHNyY19sZW5dXG4gICAgICAgWzAgPD0gZHN0X3BvcyA8IGxlbmd0aCBkc3RdXG4gICAgKilcbiAgICBsZXQgZmlsdGVyX21hcGlfaW50byBzcmMgKGRzdCBbQGxvY2FsXSkgfmYgfnNyY19wb3MgfmRzdF9wb3MgfnNyY19sZW4gPVxuICAgICAgbGV0IGRzdF9wb3MgPSAgKHJlZiBkc3RfcG9zKSBpblxuICAgICAgZm9yIHNyY19wb3MgPSBzcmNfcG9zIHRvIHNyY19sZW4gLSAxIGRvXG4gICAgICAgIG1hdGNoIGYgc3JjX3BvcyAodW5zYWZlX2dldCBzcmMgc3JjX3Bvcykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGRzdCAhZHN0X3BvcyBjO1xuICAgICAgICAgIGluY3IgZHN0X3Bvc1xuICAgICAgZG9uZTtcbiAgICAgIGxvY2FsX2NvcHlfdG9fc3RyaW5nIGRzdCB+cG9zOiFkc3RfcG9zXG4gICAgOztcblxuICAgICgqIEZpbHRlcnMgW3RdLiBJZiB0aGUgcmVzdWx0IHR1cm5zIG91dCB0byBiZSBpZGVudGljYWwgdG8gdGhlIGlucHV0LCByZXR1cm5zIFt0XVxuICAgICAgIGRpcmVjdGx5IHdpdGhvdXQgbmVlZGluZyB0byBhbGxvY2F0ZSBhIGJ1ZmZlciBhbmQgdHJhdmVyc2UgdGhlIHN0cmluZyB0d2ljZS5cblxuICAgICAgIFByZS1jb25kaXRpb246IFtsZW4gPT0gbGVuZ3RoIHRdXG4gICAgICAgUHJlLWNvbmRpdGlvbjogWzAgPD0gcG9zIDw9IGxlbl0gKilcbiAgICBsZXQgcmVjIGZpbHRlcl9tYXBpX21heWJlX2lkIHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCB0IHBvcyBpblxuICAgICAgICBsZXQgbmV4dCA9IEludC5zdWNjIHBvcyBpblxuICAgICAgICBtYXRjaCBmIHBvcyBjMSB3aXRoXG4gICAgICAgIHwgU29tZSBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT5cbiAgICAgICAgICAoKiBpZiBub3RoaW5nIGhhcyBjaGFuZ2VkLCBjb250aW51ZSAqKVxuICAgICAgICAgIGZpbHRlcl9tYXBpX21heWJlX2lkIHQgfmYgfnBvczpuZXh0IH5sZW5cbiAgICAgICAgfCBvcHRpb24gLT5cbiAgICAgICAgICAoKiBJZiBhIGNoYXJhY3RlciBoYXMgYmVlbiBjaGFuZ2VkIG9yIGRyb3BwZWQsIGJlZ2luIGFuIG91dHB1dCBidWZmZXIgdXAgdG9cbiAgICAgICAgICAgICBbcG9zXSwgYW5kIHdyaXRlIHRoZSBuZXcgY2hhcmFjdGVyIGludG8gaXQuICopXG4gICAgICAgICAgbGV0IGNvcHkgPSBsb2NhbF9jb3B5X3ByZWZpeCB0IH5wcmVmaXhfbGVuOnBvcyB+YnVmZmVyX2xlbjpsZW4gaW5cbiAgICAgICAgICBsZXQgZHN0X3BvcyA9XG4gICAgICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHBvc1xuICAgICAgICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBjb3B5IHBvcyBjO1xuICAgICAgICAgICAgICBuZXh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBmaWx0ZXJfbWFwaV9pbnRvIHQgY29weSB+ZiB+c3JjX3BvczpuZXh0IH5kc3RfcG9zIH5zcmNfbGVuOmxlbiBbQG5vbnRhaWxdKVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGZpbHRlcl9tYXAgZnVuY3Rpb25zICopXG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPSBmaWx0ZXJfbWFwaV9tYXliZV9pZCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfIGMgLT4gZiBjKSBbQG5vbnRhaWxdXG5lbmRcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBzdHJ1Y3RcbiAgICAoKiBwYXJ0aXRpb24gaGVscGVycyAqKVxuXG4gICAgbGV0IHBhcnRpdGlvbl9tYXBfaW50byBzcmMgfmZzdHMgfnNuZHMgfmYgfmxlbiB+c3JjX3BvcyB+ZnN0X3BvcyB+c25kX3BvcyA9XG4gICAgICBsZXQgZnN0X3BvcyA9ICAocmVmIGZzdF9wb3MpIGluXG4gICAgICBsZXQgc25kX3BvcyA9ICAocmVmIHNuZF9wb3MpIGluXG4gICAgICBmb3Igc3JjX3BvcyA9IHNyY19wb3MgdG8gbGVuIC0gMSBkb1xuICAgICAgICBtYXRjaCAgKGYgKHVuc2FmZV9nZXQgc3JjIHNyY19wb3MpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgZnN0cyAhZnN0X3BvcyBjO1xuICAgICAgICAgIGluY3IgZnN0X3Bvc1xuICAgICAgICB8IFNlY29uZCBjIC0+XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzbmRzICFzbmRfcG9zIGM7XG4gICAgICAgICAgaW5jciBzbmRfcG9zXG4gICAgICBkb25lO1xuICAgICAgbG9jYWxfY29weV90b19zdHJpbmcgZnN0cyB+cG9zOiFmc3RfcG9zLCBsb2NhbF9jb3B5X3RvX3N0cmluZyBzbmRzIH5wb3M6IXNuZF9wb3NcbiAgICA7O1xuXG4gICAgbGV0IHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSBzcmMgfmYgfmxlbiB+cG9zOnNyY19wb3MgfmZzdF9wb3MgfnNuZF9wb3MgZWl0aGVyID1cbiAgICAgIGxldCBmc3RzID0gbG9jYWxfY29weV9wcmVmaXggc3JjIH5wcmVmaXhfbGVuOmZzdF9wb3MgfmJ1ZmZlcl9sZW46bGVuIGluXG4gICAgICBsZXQgc25kcyA9IGxvY2FsX2NvcHlfcHJlZml4IHNyYyB+cHJlZml4X2xlbjpzbmRfcG9zIH5idWZmZXJfbGVuOmxlbiBpblxuICAgICAgbGV0IGZzdF9wb3MsIHNuZF9wb3MgPVxuICAgICAgICBtYXRjaCAoZWl0aGVyIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgZnN0cyBmc3RfcG9zIGM7XG4gICAgICAgICAgIChmc3RfcG9zICsgMSwgc25kX3BvcylcbiAgICAgICAgfCBTZWNvbmQgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgc25kcyBzbmRfcG9zIGM7XG4gICAgICAgICAgIChmc3RfcG9zLCBzbmRfcG9zICsgMSlcbiAgICAgIGluXG4gICAgICBwYXJ0aXRpb25fbWFwX2ludG9cbiAgICAgICAgc3JjXG4gICAgICAgIH5mc3RzXG4gICAgICAgIH5zbmRzXG4gICAgICAgIH5mXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnNyY19wb3M6KHNyY19wb3MgKyAxKVxuICAgICAgICB+ZnN0X3Bvc1xuICAgICAgICB+c25kX3BvcyBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCByZWMgcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBzcmMsIFwiXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYzEgPSB1bnNhZmVfZ2V0IHNyYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgICAgcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOihwb3MgKyAxKVxuICAgICAgICB8IGVpdGhlciAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZVxuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgICB+ZlxuICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgfmZzdF9wb3M6cG9zXG4gICAgICAgICAgICB+c25kX3BvczowXG4gICAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb25fbWFwX3NlY29uZF9tYXliZV9pZCBzcmMgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBcIlwiLCBzcmNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYzEgPSB1bnNhZmVfZ2V0IHNyYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgU2Vjb25kIGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfc2Vjb25kX21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpXG4gICAgICAgIHwgZWl0aGVyIC0+XG4gICAgICAgICAgcGFydGl0aW9uX21hcF9kaWZmZXJlbmNlXG4gICAgICAgICAgICBzcmNcbiAgICAgICAgICAgIH5mXG4gICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICB+ZnN0X3BvczowXG4gICAgICAgICAgICB+c25kX3Bvczpwb3NcbiAgICAgICAgICAgIGVpdGhlciBbQG5vbnRhaWxdKVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIHBhcnRpdGlvbiBmdW5jdGlvbnMgKilcblxuICBsZXQgcGFydGl0aW9uX21hcCBzcmMgfmYgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggc3JjIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gXCJcIiwgXCJcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCBzcmMgMCBpblxuICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICB8IEZpcnN0IGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPiBwYXJ0aXRpb25fbWFwX2ZpcnN0X21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6MVxuICAgICAgfCBTZWNvbmQgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgIHBhcnRpdGlvbl9tYXBfc2Vjb25kX21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6MVxuICAgICAgfCBlaXRoZXIgLT5cbiAgICAgICAgcGFydGl0aW9uX21hcF9kaWZmZXJlbmNlXG4gICAgICAgICAgc3JjXG4gICAgICAgICAgfmZcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfmZzdF9wb3M6MFxuICAgICAgICAgIH5zbmRfcG9zOjBcbiAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIHBhcnRpdGlvbl9tYXAgdCB+ZjooZnVuIGMgLT4gaWYgZiBjIHRoZW4gIChGaXJzdCBjKSBlbHNlICAoU2Vjb25kIGMpKSBbQG5vbnRhaWxcbiAgICBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEVzY2FwaW5nID0gc3RydWN0XG4gICgqIElmIHRoaXMgaXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRvIHVwZGF0ZSBbZXNjYXBlXSwgd2hpY2ggYXR0ZW1wdHMgdG8gZW5zdXJlIGFsbCB0aGVcbiAgICAgaW52YXJpYW50cyBjaGVja2VkIGhlcmUuICAqKVxuICBsZXQgYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBmdW5jID1cbiAgICBsZXQgZXNjYXBld29ydGh5X21hcCA9XG4gICAgICBpZiBMaXN0LkFzc29jLm1lbSBlc2NhcGV3b3J0aHlfbWFwIH5lcXVhbDpDaGFyLmVxdWFsIGVzY2FwZV9jaGFyXG4gICAgICB0aGVuIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgIGVsc2UgKGVzY2FwZV9jaGFyLCBlc2NhcGVfY2hhcikgOjogZXNjYXBld29ydGh5X21hcFxuICAgIGluXG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOjI1NiAoLTEpIGluXG4gICAgbGV0IHZhbHMgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgZmFsc2UgaW5cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBPayBhcnJcbiAgICAgIHwgKGNfZnJvbSwgY190bykgOjogbCAtPlxuICAgICAgICBsZXQgaywgdiA9XG4gICAgICAgICAgbWF0Y2ggZnVuYyB3aXRoXG4gICAgICAgICAgfCBgRXNjYXBlIC0+IENoYXIudG9faW50IGNfZnJvbSwgY190b1xuICAgICAgICAgIHwgYFVuZXNjYXBlIC0+IENoYXIudG9faW50IGNfdG8sIGNfZnJvbVxuICAgICAgICBpblxuICAgICAgICBpZiBhcnIuKGspIDw+IC0xIHx8IHZhbHMuKENoYXIudG9faW50IHYpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgICBcImVzY2FwZXdvcnRoeV9tYXAgbm90IG9uZS10by1vbmVcIlxuICAgICAgICAgICAgICAgWyBcImNfZnJvbVwiLCBzZXhwX29mX2NoYXIgY19mcm9tXG4gICAgICAgICAgICAgICA7IFwiY190b1wiLCBzZXhwX29mX2NoYXIgY190b1xuICAgICAgICAgICAgICAgOyAoIFwiZXNjYXBld29ydGh5X21hcFwiXG4gICAgICAgICAgICAgICAgICwgc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9jaGFyIHNleHBfb2ZfY2hhcikgZXNjYXBld29ydGh5X21hcFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICBdKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhcnIuKGspIDwtIENoYXIudG9faW50IHY7XG4gICAgICAgICAgdmFscy4oQ2hhci50b19pbnQgdikgPC0gdHJ1ZTtcbiAgICAgICAgICBsb29wIGwpXG4gICAgaW5cbiAgICBsb29wIGVzY2FwZXdvcnRoeV9tYXBcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYEVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBjYWxjdWxhdGUgYSBsaXN0IG9mIChpbmRleCBvZiBjaGFyIHRvIGVzY2FwZSAqIGVzY2FwZWQgY2hhcikgZmlyc3QsIHRoZSBvcmRlclxuICAgICAgICAgICAgICBpcyBmcm9tIHRhaWwgdG8gaGVhZCAqKVxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlX2xlbiA9IHJlZiAwIGluXG4gICAgICAgICAgIGxldCB0b19lc2NhcGUgPVxuICAgICAgICAgICAgIGZvbGRpIHNyYyB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGMgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgYykgd2l0aFxuICAgICAgICAgICAgICAgfCAtMSAtPiBhY2NcbiAgICAgICAgICAgICAgIHwgbiAtPlxuICAgICAgICAgICAgICAgICAoKiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpICopXG4gICAgICAgICAgICAgICAgIGluY3IgdG9fZXNjYXBlX2xlbjtcbiAgICAgICAgICAgICAgICAgKGksIENoYXIudW5zYWZlX29mX2ludCBuKSA6OiBhY2MpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIHRvX2VzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICgqIFt0b19lc2NhcGVdIGRpdmlkZSBbc3JjXSB0byBbTGlzdC5sZW5ndGggdG9fZXNjYXBlICsgMV0gcGllY2VzIHNlcGFyYXRlZCBieVxuICAgICAgICAgICAgICAgIHRoZSBjaGFycyB0byBlc2NhcGUuXG5cbiAgICAgICAgICAgICAgICBMZXRzIHRha2VcbiAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgZXNjYXBlX2dlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgfmVzY2FwZXdvcnRoeV9tYXA6WygnYScsICdBJyk7ICgnYicsICdCJyk7ICgnYycsICdDJyldXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGVfY2hhcjonXydcbiAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgIGZvciBleGFtcGxlLCBhbmQgYXNzdW1lIHRoZSBzdHJpbmcgdG8gZXNjYXBlIGlzXG5cbiAgICAgICAgICAgICAgICBcIjAwMGExMTFiMjIyYzMzM1wiXG5cbiAgICAgICAgICAgICAgICB0aGVuIFt0b19lc2NhcGVdIGlzIFsoMTEsICdDJyk7ICg3LCAnQicpOyAoMywgJ0EnKV0uXG5cbiAgICAgICAgICAgICAgICBUaGVuIHdlIGNyZWF0ZSBhIFtkc3RdIG9mIGxlbmd0aCBbbGVuZ3RoIHNyYyArIDNdIHRvIHN0b3JlIHRoZVxuICAgICAgICAgICAgICAgIHJlc3VsdCwgY29weSBwaWVjZSBcIjMzM1wiIHRvIFtkc3RdIGRpcmVjdGx5LCB0aGVuIGNvcHkgJ18nIGFuZCAnQycgdG8gW2RzdF07XG4gICAgICAgICAgICAgICAgdGhlbiBtb3ZlIG9uIHRvIG5leHQ7IGFmdGVyIDMgaXRlcmF0aW9ucywgY29weSBwaWVjZSBcIjAwMFwiIGFuZCB3ZSBhcmUgZG9uZS5cblxuICAgICAgICAgICAgICAgIEZpbmFsbHkgdGhlIHJlc3VsdCB3aWxsIGJlXG5cbiAgICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiICopXG4gICAgICAgICAgICAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gICAgICAgICAgICAgbGV0IGRzdF9sZW4gPSBzcmNfbGVuICsgIXRvX2VzY2FwZV9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGRzdF9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IChpZHgsIGVzY2FwZWRfY2hhcikgOjogdG9fZXNjYXBlIC0+XG4gICAgICAgICAgICAgICAgICgqW2lkeF0gPSB0aGUgY2hhciB0byBlc2NhcGUqKVxuICAgICAgICAgICAgICAgICAoKiB0YWtlIGZpcnN0IGl0ZXJhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgICAgICAgICAgICAgICAoKiBjYWxjdWxhdGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDEgYmVjYXVzZSB3ZSBkb24ndCBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAxIGluXG4gICAgICAgICAgICAgICAgICgqIHNldCB0aGUgZHN0X3BvcyB0byBjb3B5IHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiwgc2V0IFtzcmNfcG9zXSB0byBbaWR4ICsgMV0gdG8gc2tpcCAnYycgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczooaWR4ICsgMSkgfmRzdCB+ZHN0X3BvcyB+bGVuO1xuICAgICAgICAgICAgICAgICAoKiBiYWNrb2ZmIFtkc3RfcG9zXSBieSAyIHRvIGNvcHkgJ18nIGFuZCAnQycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMiBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IGRzdF9wb3MgZXNjYXBlX2NoYXI7XG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBkc3QgKGRzdF9wb3MgKyAxKSBlc2NhcGVkX2NoYXI7XG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fZXNjYXBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSBmaXJzdCAqKVxuICAgICAgICAgICAgIGxvb3Agc3JjX2xlbiBkc3RfbGVuIHRvX2VzY2FwZTtcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBPcl9lcnJvci5va19leG4gKGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCBlc2NhcGUgfmVzY2FwZXdvcnRoeSB+ZXNjYXBlX2NoYXIgPVxuICAgICgqIEZvciBbZXNjYXBlX2dlbl9leG5dLCB3ZSBkb24ndCBrbm93IGhvdyB0byBmaXggaW52YWxpZCBlc2NhcGV3b3J0aHlfbWFwIHNvIHdlIGhhdmVcbiAgICAgICB0byByYWlzZSBleGNlcHRpb247IGJ1dCBpbiB0aGlzIGNhc2UsIHdlIGtub3cgaG93IHRvIGZpeCBkdXBsaWNhdGVkIGVsZW1lbnRzIGluXG4gICAgICAgZXNjYXBld29ydGh5IGxpc3QsIHNvIHdlIGp1c3QgZml4IGl0IGluc3RlYWQgb2YgcmFpc2luZyBleGNlcHRpb24gdG8gbWFrZSB0aGlzXG4gICAgICAgZnVuY3Rpb24gZWFzaWVyIHRvIHVzZS4gICopXG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgZXNjYXBld29ydGh5XG4gICAgICB8PiBMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOkNoYXIuY29tcGFyZVxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjIC0+IGMsIGMpXG4gICAgaW5cbiAgICBlc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXJcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYFVuZXNjYXBlIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgfCBPayBlc2NhcGV3b3J0aHkgLT5cbiAgICAgIE9rXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgICgqIENvbnRpbnVlIHRoZSBleGFtcGxlIGluIFtlc2NhcGVfZ2VuX2V4bl0sIG5vdyB3ZSB1bmVzY2FwZVxuXG4gICAgICAgICAgICAgIFwiMDAwX0ExMTFfQjIyMl9DMzMzXCJcblxuICAgICAgICAgICAgICBiYWNrIHRvXG5cbiAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgIFRoZW4gW3RvX3VuZXNjYXBlXSBpcyBbMTQ7IDk7IDRdLCB3aGljaCBpcyBpbmRleGVzIG9mICdfJ3MuXG5cbiAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBzdHJpbmcgW2RzdF0gdG8gc3RvcmUgdGhlIHJlc3VsdCwgY29weSBcIjMzM1wiIHRvIGl0LCB0aGVuIGNvcHlcbiAgICAgICAgICAgICAgJ2MnLCB0aGVuIG1vdmUgb24gdG8gbmV4dCBpdGVyYXRpb24uIEFmdGVyIDMgaXRlcmF0aW9ucyBjb3B5IFwiMDAwXCIgYW5kIHdlIGFyZVxuICAgICAgICAgICAgICBkb25lLiAgKilcbiAgICAgICAgICAgKCogaW5kZXhlcyBvZiBlc2NhcGUgY2hhcnMgKilcbiAgICAgICAgICAgbGV0IHRvX3VuZXNjYXBlID1cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgYWNjID1cbiAgICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHNyY1xuICAgICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3JjIH5lc2NhcGVfY2hhciBpIHN0YXR1cyBpblxuICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGluZyAtPiBpIDo6IGFjY1xuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gYWNjKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxvb3AgMCBgTGl0ZXJhbCBbXVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b191bmVzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgaWR4IDo6IHRvX3VuZXNjYXBlJyAtPlxuICAgICAgICAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbmd0aCBzcmMgLSBMaXN0Lmxlbmd0aCB0b191bmVzY2FwZSkgaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbaWR4XSA9IGluZGV4IG9mIGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSAxc3QgaXRlcmF0aW9uIGFzIGV4YW1wbGUsIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDIgdG9cbiAgICAgICAgICAgICAgICAgICAgc2tpcCAnX0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBsZW4gPSBsYXN0X2lkeCAtIGlkeCAtIDIgaW5cbiAgICAgICAgICAgICAgICAgKCogcG9pbnQgW2RzdF9wb3NdIHRvIHRoZSBwb3NpdGlvbiB0byBjb3B5IFwiMzMzXCIgdG8gKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBsYXN0X2RzdF9wb3MgLSBsZW4gaW5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjMzM1wiICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDIpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMSB0byBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGRzdF9wb3MgLSAxIGluXG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldFxuICAgICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgICAgICAgIGRzdF9wb3NcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXNjYXBld29ydGh5LihDaGFyLnRvX2ludCBzcmMuW2lkeCArIDFdKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgLTEgLT4gc3JjLltpZHggKyAxXVxuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gQ2hhci51bnNhZmVfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgICAoKiB1cGRhdGUgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gKilcbiAgICAgICAgICAgICAgICAgbG9vcCBpZHggZHN0X3BvcyB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgaWR4IDwgbGVuZ3RoIHNyYyAtIDFcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSAqKVxuICAgICAgICAgICAgICAgbG9vcCAobGVuZ3RoIHNyYykgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgKCogZm9yIGVzY2FwZWQgc3RyaW5nIGVuZGluZyB3aXRoIGFuIGVzY2FwaW5nIGNoYXIgbGlrZSBcIjAwMF9cIiwganVzdCBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIHRoZSBsYXN0IGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMgLSAxKSAoQnl0ZXMubGVuZ3RoIGRzdCkgdG9fdW5lc2NhcGUnO1xuICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuICh1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZSB+ZXNjYXBlX2NoYXIgPSB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwOltdIH5lc2NhcGVfY2hhclxuXG4gIGxldCBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgcmVjIGxvb3AgcCBjbnQgPVxuICAgICAgaWYgcCA8IDAgfHwgQ2hhci4oIDw+ICkgc3RyLltwXSBlc2NhcGVfY2hhciB0aGVuIGNudCBlbHNlIGxvb3AgKHAgLSAxKSAoY250ICsgMSlcbiAgICBpblxuICAgIGxvb3AgKHBvcyAtIDEpIDBcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGxldCBvZGQgPSBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIG1vZCAyID0gMSBpblxuICAgIG1hdGNoIG9kZCwgQ2hhci5lcXVhbCBzdHIuW3Bvc10gZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgdHJ1ZSwgKHRydWUgfCBmYWxzZSkgLT4gYEVzY2FwZWRcbiAgICB8IGZhbHNlLCB0cnVlIC0+IGBFc2NhcGluZ1xuICAgIHwgZmFsc2UsIGZhbHNlIC0+IGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2JvdW5kIHN0ciBwb3MgZnVuY3Rpb25fbmFtZSA9XG4gICAgaWYgcG9zID49IGxlbmd0aCBzdHIgfHwgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIiVzOiBvdXQgb2YgYm91bmRzXCIgZnVuY3Rpb25fbmFtZSAoKVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2VzY2FwaW5nIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGluZ1wiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwaW5nIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGVkIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGVkXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgRXNjYXBlZCAtPiB0cnVlXG4gICAgfCBgRXNjYXBpbmcgfCBgTGl0ZXJhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2xpdGVyYWwgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2xpdGVyYWxcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImluZGV4X2Zyb21cIjtcbiAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgPVxuICAgICAgaWYgaSA+PSBwb3NcbiAgICAgICYmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAmJiBDaGFyLmVxdWFsIHN0ci5baV0gY2hhclxuICAgICAgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaSA9IGkgKyAxIGluXG4gICAgICAgIGlmIGkgPj0gbGVuZ3RoIHN0clxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSBsb29wIGkgKHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMpKVxuICAgIGluXG4gICAgbG9vcCBwb3MgKGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCJcbiAgICAgICAgICAgWyBcInN0clwiLCBzZXhwX29mX3Qgc3RyXG4gICAgICAgICAgIDsgXCJlc2NhcGVfY2hhclwiLCBzZXhwX29mX2NoYXIgZXNjYXBlX2NoYXJcbiAgICAgICAgICAgOyBcInBvc1wiLCBzZXhwX29mX2ludCBwb3NcbiAgICAgICAgICAgOyBcImNoYXJcIiwgc2V4cF9vZl9jaGFyIGNoYXJcbiAgICAgICAgICAgXSlcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICA7O1xuXG4gIGxldCBpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPSBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG4gIGxldCBpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAwIGNoYXJcblxuICBsZXQgcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcInJpbmRleF9mcm9tXCI7XG4gICAgKCogaWYgdGhlIHRhcmdldCBjaGFyIGlzIHRoZSBzYW1lIGFzIFtlc2NhcGVfY2hhcl0sIHdlIGhhdmUgbm8gd2F5IHRvIGRldGVybWluZSB3aGljaFxuICAgICAgIGVzY2FwZV9jaGFyIGlzIGxpdGVyYWwsIHNvIGp1c3QgcmV0dXJuIE5vbmUgKilcbiAgICBpZiBDaGFyLmVxdWFsIGNoYXIgZXNjYXBlX2NoYXJcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBwb3MgPVxuICAgICAgICBpZiBwb3MgPCAwXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXNjYXBlX2NoYXJzID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBpblxuICAgICAgICAgIGlmIGVzY2FwZV9jaGFycyBtb2QgMiA9IDAgJiYgQ2hhci5lcXVhbCBzdHIuW3Bvc10gY2hhclxuICAgICAgICAgIHRoZW4gU29tZSBwb3NcbiAgICAgICAgICBlbHNlIGxvb3AgKHBvcyAtIGVzY2FwZV9jaGFycyAtIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgcG9zKVxuICA7O1xuXG4gIGxldCByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJyaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgcmluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgaWYgaXNfZW1wdHkgc3RyIHRoZW4gTm9uZSBlbHNlIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgbGV0IHJpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID1cbiAgICByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAobGVuZ3RoIHN0ciAtIDEpIGNoYXJcbiAgOztcblxuICAoKiBbc3BsaXRfZ2VuIHN0ciB+ZXNjYXBlX2NoYXIgfm9uXSB3b3JrcyBzaW1pbGFybHkgdG8gW1N0cmluZy5zcGxpdF9nZW5dLCB3aXRoIGFuXG4gICAgIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnQ6IG9ubHkgc3BsaXQgb24gbGl0ZXJhbCBjaGFycywgbm90IGVzY2FwaW5nIG9yIGVzY2FwZWQgKilcbiAgbGV0IHNwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbiA9XG4gICAgbGV0IGlzX2RlbGltID1cbiAgICAgIG1hdGNoIG9uIHdpdGhcbiAgICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICAgIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyBwb3MgPVxuICAgICAgaWYgcG9zID0gbGVuXG4gICAgICB0aGVuIExpc3QucmV2IChzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoobGVuIC0gbGFzdF9wb3MpIDo6IGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgc3RhdHVzIGluXG4gICAgICAgIGlmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAgICYmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpsYXN0X3BvcyB+bGVuOihwb3MgLSBsYXN0X3BvcykgaW5cbiAgICAgICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgc3RhdHVzIChwb3MgKyAxKSAocG9zICsgMSkpXG4gICAgICAgIGVsc2UgbG9vcCBhY2Mgc3RhdHVzIGxhc3RfcG9zIChwb3MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgW10gYExpdGVyYWwgMCAwXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG4gIGxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbiAgbGV0IHNwbGl0X2F0IHN0ciBwb3MgPVxuICAgIHN1YiBzdHIgfnBvczowIH5sZW46cG9zLCBzdWIgc3RyIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBzdHIgLSBwb3MgLSAxKVxuICA7O1xuXG4gIGxldCBsc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IHJzcGxpdDIgc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPVxuICAgIE9wdGlvbi5tYXAgKHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IGxzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBvbilcbiAgbGV0IHJzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChyaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG5cbiAgKCogW2xhc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYW5kIFtmaXJzdF9ub25fZHJvcF9saXRlcmFsXSBhcmUgZWl0aGVyIGJvdGggW05vbmVdIG9yIGJvdGhcbiAgICAgW1NvbWVdLiBJZiBbU29tZV0sIHRoZW4gdGhlIGZvcm1lciBpcyA+PSB0aGUgbGF0dGVyLiAqKVxuICBsZXQgbGFzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICByZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgbGZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgaSAtPiBpZiBpID0gbGVuZ3RoIHQgLSAxIHRoZW4gdCBlbHNlIHByZWZpeCB0IChpICsgMSlcbiAgOztcblxuICBsZXQgbHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgMCAtPiB0XG4gICAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG4gIDs7XG5cbiAgKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbiAgbGV0IHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gICAgKCogcGVyZm9ybWFuY2UgaGFjazogYXZvaWQgY29weWluZyBbdF0gaW4gY29tbW9uIGNhc2VzICopXG4gICAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuICA7O1xuZW5kXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuKCogT3ZlcnJpZGUgW1NlYXJjaF9wYXR0ZXJuXSB3aXRoIGRlZmF1bHQgY2FzZS1zZW5zaXRpdml0eSBhcmd1bWVudCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgZmlsZSwgc28gdGhhdCBjYWxsIHNpdGVzIGFib3ZlIGFyZSBmb3JjZWQgdG8gc3VwcGx5IGNhc2Utc2Vuc2l0aXZpdHkgZXhwbGljaXRseS4gKilcbm1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IHN0cnVjdFxuICBpbmNsdWRlIFNlYXJjaF9wYXR0ZXJuMFxuXG4gIGxldCBjcmVhdGUgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpIHBhdHRlcm4gPSBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmVcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9ieXRlcyA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG4gIGxldCB0X29mX3NleHAgPSAoYnl0ZXNfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYnl0ZXMgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYnl0ZXNfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIEJ5dGVzMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5CeXRlc1wiXG4gIGxldCBwcCBmbXQgdCA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiICh0b19zdHJpbmcgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFRvX2J5dGVzID0gQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFQpIChUb19ieXRlcylcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIGVuZClcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgbiAwXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIkJ5dGVzLmluaXQgJWRcIiBuICgpO1xuICBsZXQgdCA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gc2V0IHQgaSBjKTtcbiAgdFxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgKGkgLSAxKSAodW5zYWZlX2dldCB0IGkgOjogYWNjKVxuICBpblxuICBsb29wIHQgKGxlbmd0aCB0IC0gMSkgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcbmxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mXG5sZXQgbWFwaSB0IH5mID0gbWFwaSB0IH5mXG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBwb3MgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzIGkpIHRhcmdldCB0aGVuIHVuc2FmZV9zZXQgcyBpIHJlcGxhY2VtZW50XG4gIGRvbmVcbjs7XG5cbmxldCB0cl9tdWx0aSB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAwXG4gIHRoZW4gc3RhZ2UgaWdub3JlXG4gIGVsc2UgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgMFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGk6IHJlcGxhY2VtZW50IGlzIHRoZSBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgaWdub3JlXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHMgaSAoU3RyaW5nLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCAodW5zYWZlX2dldCBzIGkpKSlcbiAgICAgICAgZG9uZSkpXG47O1xuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgY29udGFpbnMgP3BvcyA/bGVuIHQgY2hhciA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbGFzdCA9IHBvcyArIGxlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIGxhc3RcbiAgICAmJiAoQ2hhci5lcXVhbCAoZ2V0IHQgaSkgY2hhciB8fCBsb29wIChpICsgMSkpXG4gIGluXG4gIGxvb3AgcG9zXG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIjIDEgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gXG50eXBlIHJlc3VsdCA9XG58IE5lZyBvZiBzdHJpbmdcbnwgUG9zIG9mIHN0cmluZ1xuXG4jIDggXCJzcmMvaGV4X2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDgyXFwwMDBcXDEwNVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBwYXJzZV9oZXggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxMzUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOZWcgYm9keSApXG4jIDEzOSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDE0NSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIFBvcyBib2R5IClcbiMgMTQ5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBjb252ZXJ0X2ZhaWx1cmUgeCBhIGIgdG9fc3RyaW5nID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiY29udmVyc2lvbiBmcm9tICVzIHRvICVzIGZhaWxlZDogJXMgaXMgb3V0IG9mIHJhbmdlXCJcbiAgICBhXG4gICAgYlxuICAgICh0b19zdHJpbmcgeClcbiAgICAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBudW1fYml0c19pbnQgPSBTeXMuaW50X3NpemVfaW5fYml0c1xubGV0IG51bV9iaXRzX2ludDMyID0gMzJcbmxldCBudW1fYml0c19pbnQ2NCA9IDY0XG5sZXQgbnVtX2JpdHNfbmF0aXZlaW50ID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50ID0gNjMgfHwgbnVtX2JpdHNfaW50ID0gMzEgfHwgbnVtX2JpdHNfaW50ID0gMzIpXG5sZXQgbWluX2ludDMyID0gU3RkbGliLkludDMyLm1pbl9pbnRcbmxldCBtYXhfaW50MzIgPSBTdGRsaWIuSW50MzIubWF4X2ludFxubGV0IG1pbl9pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5taW5faW50XG5sZXQgbWF4X2ludDY0ID0gU3RkbGliLkludDY0Lm1heF9pbnRcbmxldCBtaW5fbmF0aXZlaW50ID0gU3RkbGliLk5hdGl2ZWludC5taW5faW50XG5sZXQgbWF4X25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQubWF4X2ludFxubGV0IGludF90b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2ludFxubGV0IGludDMyX3RvX3N0cmluZyA9IFN0ZGxpYi5JbnQzMi50b19zdHJpbmdcbmxldCBpbnQ2NF90b19zdHJpbmcgPSBTdGRsaWIuSW50NjQudG9fc3RyaW5nXG5sZXQgbmF0aXZlaW50X3RvX3N0cmluZyA9IFN0ZGxpYi5OYXRpdmVpbnQudG9fc3RyaW5nXG5cbigqIGludCA8LT4gaW50MzIgKilcblxubGV0IGludF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludFwiIFwiaW50MzJcIiBpbnRfdG9fc3RyaW5nXG5sZXQgaW50MzJfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50MzJcIiBcImludFwiIGludDMyX3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF90cnVuYyA9IFN0ZGxpYi5JbnQzMi50b19pbnRcbmxldCBpbnRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuSW50MzIub2ZfaW50XG5cbmxldCBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX2ludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX2ludF90cnVuYyBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9faW50X3RydW5jIG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWluX3ZhbHVlIGluXG4gICAgbGV0IG1heCA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQzMiBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50MzIgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnRfdG9faW50MzIgeCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50MzJfdG9faW50IHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50MzJfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBpbnRfdG9faW50MzJfdHJ1bmMgeCBlbHNlIGludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbmxldCBpbnQzMl90b19pbnRfZXhuIHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50MzJfdG9faW50X3RydW5jIHggZWxzZSBpbnQzMl90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludF90b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9pbnRcbmxldCBpbnQ2NF90b19pbnRfdHJ1bmMgPSBTdGRsaWIuSW50NjQudG9faW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGxldCBtaW4gPSBpbnRfdG9faW50NjQgSW50Lm1pbl92YWx1ZSBpblxuICBsZXQgbWF4ID0gaW50X3RvX2ludDY0IEludC5tYXhfdmFsdWUgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50NjRfdG9faW50X3RydW5jIHggZWxzZSBpbnQ2NF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50XCIgbmF0aXZlaW50X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludF90b19uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm9mX2ludFxubGV0IG5hdGl2ZWludF90b19pbnRfdHJ1bmMgPSBTdGRsaWIuTmF0aXZlaW50LnRvX2ludFxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19uYXRpdmVpbnQgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9fbmF0aXZlaW50IEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludCB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnRfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnRfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDMyXCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50MzJfdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfaW50MzJcbmxldCBpbnQ2NF90b19pbnQzMl90cnVuYyA9IFN0ZGxpYi5JbnQ2NC50b19pbnQzMlxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGxldCBtaW4gPSBpbnQzMl90b19pbnQ2NCBtaW5faW50MzIgaW5cbiAgbGV0IG1heCA9IGludDMyX3RvX2ludDY0IG1heF9pbnQzMiBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzIgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gaW50NjRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeCA9XG4gIGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnQzMlwiIG5hdGl2ZWludF90b19zdHJpbmdcbjs7XG5cbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDMyX3RvX25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQub2ZfaW50MzJcbmxldCBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuTmF0aXZlaW50LnRvX2ludDMyXG5cbmxldCBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX25hdGl2ZWludCBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9fbmF0aXZlaW50IG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfbmF0aXZlaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9uYXRpdmVpbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzIgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnQzMl90cnVuYyB4XG4gIGVsc2UgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcIm5hdGl2ZWludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQ2NCA+PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X3RydW5jID0gU3RkbGliLkludDY0LnRvX25hdGl2ZWludFxubGV0IG5hdGl2ZWludF90b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9uYXRpdmVpbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50NjQgPD0gbnVtX2JpdHNfbmF0aXZlaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gbmF0aXZlaW50X3RvX2ludDY0IG1pbl9uYXRpdmVpbnQgaW5cbiAgICBsZXQgbWF4ID0gbmF0aXZlaW50X3RvX2ludDY0IG1heF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDY0X3RvX25hdGl2ZWludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIFNvbWUgKGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCB4XG4gIHRoZW4gaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gaW50NjMgKilcblxubGV0IGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDYzXCIgaW50NjRfdG9fc3RyaW5nXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzID1cbiAgbGV0IG1pbiA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBtaW5faW50NjQgMSBpblxuICBsZXQgbWF4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IG1heF9pbnQ2NCAxIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF9maXRfb25faW50NjNfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzIHggdGhlbiAoKSBlbHNlIGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeFxuOztcblxuKCogc3RyaW5nIGNvbnZlcnNpb25zICopXG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgPVxuICBsZXQgaW5wdXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBpZiBpbnB1dF9sZW5ndGggPD0gY2hhcnNfcGVyX2RlbGltaXRlclxuICB0aGVuIGlucHV0XG4gIGVsc2UgKFxuICAgIGxldCBoYXNfc2lnbiA9XG4gICAgICBtYXRjaCBpbnB1dC5bMF0gd2l0aFxuICAgICAgfCAnKycgfCAnLScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgbnVtX2RpZ2l0cyA9IGlmIGhhc19zaWduIHRoZW4gaW5wdXRfbGVuZ3RoIC0gMSBlbHNlIGlucHV0X2xlbmd0aCBpblxuICAgIGxldCBudW1fZGVsaW1pdGVycyA9IChudW1fZGlnaXRzIC0gMSkgLyBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IG91dHB1dF9sZW5ndGggPSBpbnB1dF9sZW5ndGggKyBudW1fZGVsaW1pdGVycyBpblxuICAgIGxldCBvdXRwdXQgPSBCeXRlcy5jcmVhdGUgb3V0cHV0X2xlbmd0aCBpblxuICAgIGxldCBpbnB1dF9wb3MgPSByZWYgKGlucHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG91dHB1dF9wb3MgPSByZWYgKG91dHB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gcmVmIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgZmlyc3RfZGlnaXRfcG9zID0gaWYgaGFzX3NpZ24gdGhlbiAxIGVsc2UgMCBpblxuICAgIHdoaWxlICFpbnB1dF9wb3MgPj0gZmlyc3RfZGlnaXRfcG9zIGRvXG4gICAgICBpZiAhbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGRlbGltaXRlcjtcbiAgICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgICBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIDo9IGNoYXJzX3Blcl9kZWxpbWl0ZXIpO1xuICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBpbnB1dC5bIWlucHV0X3Bvc107XG4gICAgICBkZWNyIGlucHV0X3BvcztcbiAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgIGRlY3IgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlclxuICAgIGRvbmU7XG4gICAgaWYgaGFzX3NpZ24gdGhlbiBCeXRlcy5zZXQgb3V0cHV0IDAgaW5wdXQuWzBdO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0cHV0KVxuOztcblxubGV0IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlciA9XG4gIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlcjozXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzIGlucHV0ID0gaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyOidfJ1xubGV0IHNleHBfb2ZfaW50X3N0eWxlID0gU2V4cC5vZl9pbnRfc3R5bGVcblxubW9kdWxlIE1ha2UgKEkgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIElcblxuICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDNcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9XG4gICAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAodG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBzID0gdG9fc3RyaW5nIHQgaW5cbiAgICBTZXhwLkF0b21cbiAgICAgIChtYXRjaCAhc2V4cF9vZl9pbnRfc3R5bGUgd2l0aFxuICAgICAgIHwgYFVuZGVyc2NvcmVzIC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgcyB+Y2hhcnNfcGVyX2RlbGltaXRlciB+ZGVsaW1pdGVyOidfJ1xuICAgICAgIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaGV4IChJIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRfaGV4ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSS50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoSS5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIEkuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gSS5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gNFxuXG4gICAgbGV0IHRvX3N0cmluZycgP2RlbGltaXRlciB0ID1cbiAgICAgIGxldCBtYWtlX3N1ZmZpeCA9XG4gICAgICAgIG1hdGNoIGRlbGltaXRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJLnRvX3N0cmluZ1xuICAgICAgICB8IFNvbWUgZGVsaW1pdGVyIC0+XG4gICAgICAgICAgZnVuIHQgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAoSS50b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICAgICAgaW5cbiAgICAgIGlmIEkuKCA8ICkgdCBJLnplcm8gdGhlbiBcIi0weFwiIF4gbWFrZV9zdWZmaXggKEkubmVnIHQpIGVsc2UgXCIweFwiIF4gbWFrZV9zdWZmaXggdFxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmcnIHQgP2RlbGltaXRlcjpOb25lXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPSB0b19zdHJpbmcnIHQgfmRlbGltaXRlclxuXG4gICAgbGV0IGludmFsaWQgc3RyID1cbiAgICAgIFByaW50Zi5mYWlsd2l0aGYgXCIlcy5vZl9zdHJpbmc6IGludmFsaWQgaW5wdXQgJVNcIiBJLm1vZHVsZV9uYW1lIHN0ciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIHN0ciA9XG4gICAgICBJLm9mX3N0cmluZyAoU3RyaW5nLmZpbHRlciBzdHIgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgJ18nKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgICAgbGV0IG1vZHVsZSBMID0gSGV4X2xleGVyIGluXG4gICAgICBsZXQgbGV4ID0gU3RkbGliLkxleGluZy5mcm9tX3N0cmluZyBzdHIgaW5cbiAgICAgIGxldCByZXN1bHQgPSBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBMLnBhcnNlX2hleCBsZXgpIGluXG4gICAgICBpZiBsZXgubGV4X2N1cnJfcG9zID0gbGV4LmxleF9idWZmZXJfbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWQgc3RyXG4gICAgICAgIHwgU29tZSAoTmVnIGJvZHkpIC0+IEkubmVnIChvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgYm9keSlcbiAgICAgICAgfCBTb21lIChQb3MgYm9keSkgLT4gb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICBlbHNlIGludmFsaWQgc3RyXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEhleCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVF9oZXhcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFRfaGV4KVxuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBmaWxlIHdhcyBhdXRvZ2VuZXJhdGVkIGJ5IC4uL2dlbmVyYXRlL2dlbmVyYXRlX3Bvd19vdmVyZmxvd19ib3VuZHMuZXhlICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgaGF2ZSB0byB1c2UgSW50NjQudG9faW50X2V4biBpbnN0ZWFkIG9mIGludCBjb25zdGFudHMgdG8gbWFrZVxuICAgc3VyZSB0aGF0IGZpbGUgY2FuIGJlIHByZXByb2Nlc3NlZCBvbiAzMi1iaXQgbWFjaGluZXMuICopXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUgOiBpbnQzMiA9XG4gIDIxNDc0ODM2NDdsXG5cbmxldCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQzMiBhcnJheSA9XG4gIFt8IDIxNDc0ODM2NDdsXG4gIDsgIDIxNDc0ODM2NDdsXG4gIDsgIDQ2MzQwbFxuICA7ICAxMjkwbFxuICA7ICAyMTVsXG4gIDsgIDczbFxuICA7ICAzNWxcbiAgOyAgMjFsXG4gIDsgIDE0bFxuICA7ICAxMGxcbiAgOyAgOGxcbiAgOyAgN2xcbiAgOyAgNWxcbiAgOyAgNWxcbiAgOyAgNGxcbiAgOyAgNGxcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUgOiBpbnQgPVxuICAoLTEpIGxzciAxXG5cbmxldCBpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50IGFycmF5ID1cbiAgbWF0Y2ggSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludCB3aXRoXG4gIHwgMzIgLT4gQXJyYXkubWFwIGludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyB+ZjpTdGRsaWIuSW50MzIudG9faW50XG4gIHwgNjMgLT5cbiAgICBbfCBTdGRsaWIuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgU3RkbGliLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIFN0ZGxpYi5JbnQ2NC50b19pbnQgMjE0NzQ4MzY0N0xcbiAgICA7ICAxNjY0NTEwXG4gICAgOyAgNDYzNDBcbiAgICA7ICA1NDA0XG4gICAgOyAgMTI5MFxuICAgIDsgIDQ2M1xuICAgIDsgIDIxNVxuICAgIDsgIDExOFxuICAgIDsgIDczXG4gICAgOyAgNDlcbiAgICA7ICAzNVxuICAgIDsgIDI3XG4gICAgOyAgMjFcbiAgICA7ICAxN1xuICAgIDsgIDE0XG4gICAgOyAgMTJcbiAgICA7ICAxMFxuICAgIDsgIDlcbiAgICA7ICA4XG4gICAgOyAgN1xuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgMzEgLT5cbiAgICBbfCAxMDczNzQxODIzXG4gICAgOyAgMTA3Mzc0MTgyM1xuICAgIDsgIDMyNzY3XG4gICAgOyAgMTAyM1xuICAgIDsgIDE4MVxuICAgIDsgIDYzXG4gICAgOyAgMzFcbiAgICA7ICAxOVxuICAgIDsgIDEzXG4gICAgOyAgMTBcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDQ2MTE2ODYwMTg0MjczODc5MDNMXG5cbmxldCBpbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDIxNDc0ODM2NDdMXG4gIDsgIDE2NjQ1MTBMXG4gIDsgIDQ2MzQwTFxuICA7ICA1NDA0TFxuICA7ICAxMjkwTFxuICA7ICA0NjNMXG4gIDsgIDIxNUxcbiAgOyAgMTE4TFxuICA7ICA3M0xcbiAgOyAgNDlMXG4gIDsgIDM1TFxuICA7ICAyN0xcbiAgOyAgMjFMXG4gIDsgIDE3TFxuICA7ICAxNExcbiAgOyAgMTJMXG4gIDsgIDEwTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuXG5sZXQgaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAzMDM3MDAwNDk5TFxuICA7ICAyMDk3MTUxTFxuICA7ICA1NTEwOExcbiAgOyAgNjIwOExcbiAgOyAgMTQ0OExcbiAgOyAgNTExTFxuICA7ICAyMzRMXG4gIDsgIDEyN0xcbiAgOyAgNzhMXG4gIDsgIDUyTFxuICA7ICAzOExcbiAgOyAgMjhMXG4gIDsgIDIyTFxuICA7ICAxOExcbiAgOyAgMTVMXG4gIDsgIDEzTFxuICA7ICAxMUxcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgfF1cblxubGV0IGludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtMzAzNzAwMDQ5OUxcbiAgOyAgLTIwOTcxNTFMXG4gIDsgIC01NTEwOExcbiAgOyAgLTYyMDhMXG4gIDsgIC0xNDQ4TFxuICA7ICAtNTExTFxuICA7ICAtMjM0TFxuICA7ICAtMTI3TFxuICA7ICAtNzhMXG4gIDsgIC01MkxcbiAgOyAgLTM4TFxuICA7ICAtMjhMXG4gIDsgIC0yMkxcbiAgOyAgLTE4TFxuICA7ICAtMTVMXG4gIDsgIC0xM0xcbiAgOyAgLTExTFxuICA7ICAtOUxcbiAgOyAgLThMXG4gIDsgIC03TFxuICA7ICAtN0xcbiAgOyAgLTZMXG4gIDsgIC02TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0xTFxuICB8XVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgbmVnYXRpdmVfZXhwb25lbnQgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiZXhwb25lbnQgY2FuIG5vdCBiZSBuZWdhdGl2ZVwiICgpXG5sZXQgb3ZlcmZsb3cgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiaW50ZWdlciBvdmVyZmxvdyBpbiBwb3dcIiAoKVxuXG4oKiBUbyBpbXBsZW1lbnQgW2ludDY0X3Bvd10sIHdlIHVzZSBDIGNvZGUgcmF0aGVyIHRoYW4gT0NhbWwgdG8gZWxpbWluYXRlIGFsbG9jYXRpb24uICopXG5leHRlcm5hbCBpbnRfbWF0aF9pbnRfcG93IDogaW50IC0+IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGludF9tYXRoX2ludDY0X3BvdyA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViXCJcblxubGV0IGludF9wb3cgYmFzZSBleHBvbmVudCA9XG4gIGlmIGV4cG9uZW50IDwgMCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFcbiAgJiYgKGV4cG9uZW50ID4gNjNcbiAgICAgIHx8IGFicyBiYXNlID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLihleHBvbmVudCkpXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIEludDY0X3dpdGhfY29tcGFyaXNvbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuSW50NjRcblxuICBleHRlcm5hbCAoIDwgKSA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoID49ICkgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5lbmRcblxuKCogd2UgZG9uJ3QgZG8gW2Fic10gaW4gaW50NjQgY2FzZSB0byBhdm9pZCBhbGxvY2F0aW9uICopXG5sZXQgaW50NjRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBsZXQgb3BlbiBJbnQ2NF93aXRoX2NvbXBhcmlzb25zIGluXG4gIGlmIGV4cG9uZW50IDwgMEwgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgKGJhc2UgPiAxTCB8fCBiYXNlIDwgLTFMKVxuICAmJiAoZXhwb25lbnQgPiA2M0xcbiAgICAgIHx8IChiYXNlID49IDBMXG4gICAgICAgICAgJiYgYmFzZVxuICAgICAgICAgICAgID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudCkpXG4gICAgICB8fCAoYmFzZSA8IDBMXG4gICAgICAgICAgJiYgYmFzZVxuICAgICAgICAgICAgIDwgUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudCkpKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubGV0IGludDYzX3Bvd19vbl9pbnQ2NCBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMUxcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCBhYnMgYmFzZVxuICAgICAgICAgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICApXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludDY0X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgdHlwZSBNYWtlX2FyZyA9IHNpZ1xuICB0eXBlIHRcblxuICBpbmNsdWRlIEZsb2F0YWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIH4tICkgOiB0IC0+IHRcblxuICBpbmNsdWRlIENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIE1ha2UgKFggOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgb3BlbiBYXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gWC5yZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgb25lID0gb2ZfaW50X2V4biAxXG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gICgqKiBmbG9hdCBkaXZpc2lvbiBvZiBpbnRlZ2VycyAqKVxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGxldCByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPSBpIC0gKGkgJSBtb2R1bHVzKVxuXG4gIGxldCByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBpZiByZW1haW5kZXIgPSB6ZXJvIHRoZW4gaSBlbHNlIGkgKyBtb2R1bHVzIC0gcmVtYWluZGVyXG4gIDs7XG5cbiAgbGV0IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgaWYgaSA9IHplcm9cbiAgICB0aGVuIHplcm9cbiAgICBlbHNlIGlmIGkgPiB6ZXJvXG4gICAgdGhlbiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgZWxzZSByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuXG4gIGxldCByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPVxuICAgIGxldCByZW1haW5kZXIgPSBpICUgbW9kdWx1cyBpblxuICAgIGxldCBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA9IG1vZHVsdXMgLSByZW1haW5kZXIgaW5cbiAgICBpZiBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA8PSByZW1haW5kZXJcbiAgICB0aGVuIGkgKyBtb2R1bHVzX21pbnVzX3JlbWFpbmRlclxuICAgIGVsc2UgaSAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgRG93biAtPiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgVXAgLT4gcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpbnRfcG93ID0gaW50X3Bvd1xuICBsZXQgaW50NjRfcG93ID0gaW50NjRfcG93XG4gIGxldCBpbnQ2M19wb3dfb25faW50NjQgPSBpbnQ2M19wb3dfb25faW50NjRcblxuICBtb2R1bGUgUG93X292ZXJmbG93X2JvdW5kcyA9IFBvd19vdmVyZmxvd19ib3VuZHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIEMgc3R1YiBmb3IgaW50IHBvcGNvdW50IHRvIHVzZSB0aGUgUE9QQ05UIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG5leHRlcm5hbCBpbnRfcG9wY291bnQgOiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudFwiIFtAQG5vYWxsb2NdXG5cbigqIFRvIG1haW50YWluIGphdmFzY3JpcHQgY29tcGF0aWJpbGl0eSBhbmQgZW5hYmxlIHVuYm94aW5nLCB3ZSBpbXBsZW1lbnQgcG9wY291bnQgaW5cbiAgIE9DYW1sIHJhdGhlciB0aGFuIHVzZSBDIHN0dWJzLiBJbXBsZW1lbnRhdGlvbiBhZGFwdGVkIGZyb206XG4gICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYW1taW5nX3dlaWdodCNFZmZpY2llbnRfaW1wbGVtZW50YXRpb24gKilcbmxldCBpbnQ2NF9wb3Bjb3VudCA9XG4gIGxldCBvcGVuIFN0ZGxpYi5JbnQ2NCBpblxuICBsZXQgKCArICkgPSBhZGQgaW5cbiAgbGV0ICggLSApID0gc3ViIGluXG4gIGxldCAoICogKSA9IG11bCBpblxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgaW5cbiAgbGV0ICggbGFuZCApID0gbG9nYW5kIGluXG4gIGxldCBtMSA9IDB4NTU1NTU1NTU1NTU1NTU1NUwgaW5cbiAgKCogMGIwMTAxMDEwMS4uLiAqKVxuICBsZXQgbTIgPSAweDMzMzMzMzMzMzMzMzMzMzNMIGluXG4gICgqIDBiMDAxMTAwMTEuLi4gKilcbiAgbGV0IG00ID0gMHgwZjBmMGYwZjBmMGYwZjBmTCBpblxuICAoKiAwYjAwMDAxMTExLi4uICopXG4gIGxldCBoMDEgPSAweDAxMDEwMTAxMDEwMTAxMDFMIGluXG4gICgqIDEgYml0IHNldCBwZXIgYnl0ZSAqKVxuICBmdW4gW0BpbmxpbmVdIHggLT5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgcGFpciBvZiBiaXRzICopXG4gICAgbGV0IHggPSB4IC0gKCh4IGxzciAxKSBsYW5kIG0xKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSA0IGJpdHMgKilcbiAgICBsZXQgeCA9ICh4IGxhbmQgbTIpICsgKCh4IGxzciAyKSBsYW5kIG0yKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSBieXRlICopXG4gICAgbGV0IHggPSAoeCArICh4IGxzciA0KSkgbGFuZCBtNCBpblxuICAgICgqIHN1bSB0aGUgYml0IGNvdW50cyBpbiB0aGUgdG9wIGJ5dGUgYW5kIHNoaWZ0IGl0IGRvd24gKilcbiAgICB0b19pbnQgKCh4ICogaDAxKSBsc3IgNTYpXG47O1xuXG5sZXQgaW50MzJfcG9wY291bnQgPVxuICAoKiBPbiA2NC1iaXQgc3lzdGVtcywgdGhpcyBpcyBmYXN0ZXIgdGhhbiBpbXBsZW1lbnRpbmcgdXNpbmcgW2ludDMyXSBhcml0aG1ldGljLiAqKVxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmTCBpblxuICBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKFN0ZGxpYi5JbnQ2NC5sb2dhbmQgKFN0ZGxpYi5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrKVxuOztcblxubGV0IG5hdGl2ZWludF9wb3Bjb3VudCA9XG4gIG1hdGNoIFN0ZGxpYi5OYXRpdmVpbnQuc2l6ZSB3aXRoXG4gIHwgMzIgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDMyX3BvcGNvdW50IChTdGRsaWIuTmF0aXZlaW50LnRvX2ludDMyIHgpXG4gIHwgNjQgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChTdGRsaWIuSW50NjQub2ZfbmF0aXZlaW50IHgpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2lnbjBcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFNpZ24wKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHRvX3N0cmluZ19odW0gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBcIm5lZ2F0aXZlXCJcbiAgfCBaZXJvIC0+IFwiemVyb1wiXG4gIHwgUG9zIC0+IFwicG9zaXRpdmVcIlxuOztcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTEuXG4gIHwgWmVybyAtPiAwLlxuICB8IFBvcyAtPiAxLlxuOztcblxubGV0IGZsaXAgPSBmdW5jdGlvblxuICB8IE5lZyAtPiBQb3NcbiAgfCBaZXJvIC0+IFplcm9cbiAgfCBQb3MgLT4gTmVnXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9IG9mX2ludCAodG9faW50IHQgKiB0b19pbnQgdCcpXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGF0IHRoZSBlbmQsIGFmdGVyIGFueVxuICAgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc29cbiAgIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpc1xuICAgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRfaW50ZlxuaW5jbHVkZSBJbnQwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgeCB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlIHggeVxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgdHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICB8IF8gLT4gUHJpbnRmLmZhaWx3aXRoZiBcIkludC5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbmVuZFxuXG5sZXQgbnVtX2JpdHMgPSBJbnRfY29udmVyc2lvbnMubnVtX2JpdHNfaW50XG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCB0b19mbG9hdCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBTdGRsaWIuaW50X29mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIFN0ZGxpYi5pbnRfb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIleFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIleFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiAodFtAbG9jYWxfb3B0XSkgLT4gKGludDMyW0Bsb2NhbF9vcHRdKSA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMl90cnVuYyA6IChpbnQzMltAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9pbnQ2NF90cnVuYyA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnRfdHJ1bmMgOiAobmF0aXZlaW50W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5cbmxldCBwcmVkIGkgPSBpIC0gMVxubGV0IHN1Y2MgaSA9IGkgKyAxXG5sZXQgdG9faW50IGkgPSBpXG5sZXQgdG9faW50X2V4biA9IHRvX2ludFxubGV0IG9mX2ludCBpID0gaVxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IFN0ZGxpYi5taW5faW50XG5sZXQgbWF4X3ZhbHVlXzMwX2JpdHMgPSAweDNGRkZfRkZGRlxubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19pbnRcbmxldCBvZl9pbnQzMl9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnQzMiA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IHRvX2ludDY0ID0gQ29udi5pbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBhYnMgeCA9IGFicyB4XG5cbigqIG5vdGUgdGhhdCByZW0gaXMgbm90IHNhbWUgYXMgJSAqKVxubGV0IHJlbSBhIGIgPSBhIG1vZCBiXG5sZXQgaW5jciA9IFN0ZGxpYi5pbmNyXG5sZXQgZGVjciA9IFN0ZGxpYi5kZWNyXG5sZXQgc2hpZnRfcmlnaHQgYSBiID0gYSBhc3IgYlxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYSBiID0gYSBsc3IgYlxubGV0IHNoaWZ0X2xlZnQgYSBiID0gYSBsc2wgYlxubGV0IGJpdF9ub3QgYSA9IGxub3QgYVxubGV0IGJpdF9vciBhIGIgPSBhIGxvciBiXG5sZXQgYml0X2FuZCBhIGIgPSBhIGxhbmQgYlxubGV0IGJpdF94b3IgYSBiID0gYSBseG9yIGJcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludF9wb3dcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCAtIDEgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggKyAxXG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4IC0gKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCAoeCAtIDEpID0gMFxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoKiBOb3RlIHRoYXQgd2UgcGFzcyB0aGUgdGFnZ2VkIGludCBoZXJlLiBTZWUgaW50X21hdGhfc3R1YnMuYyBmb3IgZGV0YWlscyBvbiB3aHlcbiAgICAgICAgICB0aGlzIGlzIGNvcnJlY3QuICopXG4gICAgaW50XG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2Nsel91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludFtAdW50YWdnZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jdHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBpZiBpID0gMSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoaSAtIDEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBzaWduID0gU2lnbi5vZl9pbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludF9wb3Bjb3VudFxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVhZGRpbnRcIlxuICBleHRlcm5hbCAoIC0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJXN1YmludFwiXG4gIGV4dGVybmFsICggKiApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlbXVsaW50XCJcbiAgZXh0ZXJuYWwgKCAvICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVkaXZpbnRcIlxuICBleHRlcm5hbCAoIH4tICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBtb2R1bGUgRiA9IEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgRlxuXG4gIGV4dGVybmFsIGJzd2FwMTYgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVic3dhcDE2XCJcblxuICAoKiBUaGVzZSBpbmxpbmVkIHZlcnNpb25zIG9mICglKSwgKC8lKSwgYW5kICgvLykgcGVyZm9ybSBiZXR0ZXIgdGhhbiB0aGVpciBmdW5jdG9yaXplZFxuICAgICBjb3VudGVycGFydHMgaW4gW0ZdIChzZWUgYmVuY2htYXJrcyBiZWxvdykuXG5cbiAgICAgVGhlIHJlYXNvbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZWQgaW4gW0ludF0gYnV0IG5vdCBpbiBhbnkgb2YgdGhlIG90aGVyIGludGVnZXJcbiAgICAgbW9kdWxlcyBpcyB0aGF0IHRoZXkgZXhpc3RlZCBpbiBbSW50XSBhbmQgW0ludF0gYWxvbmUgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZlxuICAgICB0aGUgW0ludF9tYXRoLk1ha2VdIGZ1bmN0b3IsIGFuZCB3ZSBkaWRuJ3Qgd2FudCB0byBkZWdyYWRlIHRoZWlyIHBlcmZvcm1hbmNlLlxuXG4gICAgIFdlIHdvbid0IHByZS1lbXB0aXZlbHkgZG8gdGhlIHNhbWUgZm9yIG5ldyBmdW5jdGlvbnMsIHVubGVzcyBzb21lb25lIGNhcmVzLCBvbiBhIGNhc2VcbiAgICAgYnkgY2FzZSBmYXNoaW9uLiAgKilcblxuICBsZXQgKCAlICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gcmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYW5kaW50XCJcbiAgZXh0ZXJuYWwgKCBsb3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJW9yaW50XCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG4gIGxldCBsbm90ID0gbG5vdFxuXG4gIGV4dGVybmFsICggbHNsICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuICBleHRlcm5hbCAoIGxzciApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlbHNyaW50XCJcbiAgZXh0ZXJuYWwgKCBhc3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFzcmludFwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnRdIGFuZCBbSW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9fRiA9IE8uRlxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBpbmNsdWRpbmcgZnVuY3RvclxuICAgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFVjaGFyMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5VY2hhclwiXG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gSGFzaC5mb2xkX2ludCBzdGF0ZSAodG9faW50IHQpXG4gIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGxldCB0b19zdHJpbmcgdCA9IFByaW50Zi5zcHJpbnRmIFwiVSslMDRYXCIgKHRvX2ludCB0KVxuXG4gICgqIERvIG5vdCBhY3R1YWxseSBleHBvcnQgdGhpcy4gU2VlIGRpc2N1c3Npb24gaW4gdGhlIC5tbGkgKilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIlUrJVhcIiAoZnVuIGkgLT4gVWNoYXIwLm9mX2ludCBpKSB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gb2YgdGhlIGZvcm0gVStYWFhYIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgaW50X2lzX3NjYWxhciA9IGlzX3ZhbGlkXG5cbmxldCBzdWNjX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5zdWNjIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnN1Y2NfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHN1Y2MgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAuc3VjYyBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBwcmVkX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5wcmVkIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnByZWRfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHByZWQgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAucHJlZCBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBvZl9zY2FsYXIgaSA9IGlmIGludF9pc19zY2FsYXIgaSB0aGVuIFNvbWUgKHVuc2FmZV9vZl9pbnQgaSkgZWxzZSBOb25lXG5cbmxldCBvZl9zY2FsYXJfZXhuIGkgPVxuICBpZiBpbnRfaXNfc2NhbGFyIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJVY2hhci5vZl9pbnRfZXhuIGdvdCBhIGludmFsaWQgVW5pY29kZSBzY2FsYXIgdmFsdWU6ICUwNFhcIiBpICgpXG47O1xuXG5sZXQgdG9fc2NhbGFyIHQgPSBVY2hhcjAudG9faW50IHRcbmxldCB0b19jaGFyIGMgPSBpZiBpc19jaGFyIGMgdGhlbiBTb21lICh1bnNhZmVfdG9fY2hhciBjKSBlbHNlIE5vbmVcblxubGV0IHRvX2NoYXJfZXhuIGMgPVxuICBpZiBpc19jaGFyIGNcbiAgdGhlbiB1bnNhZmVfdG9fY2hhciBjXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIudG9fY2hhcl9leG4gZ290IGEgbm9uIGxhdGluLTEgY2hhcmFjdGVyOiBVKyUwNFhcIiAodG9faW50IGMpICgpXG47O1xuXG5sZXQgdXRmOF9ieXRlX2xlbmd0aCB1Y2hhciA9XG4gIGxldCBjb2RlcG9pbnQgPSB0b19zY2FsYXIgdWNoYXIgaW5cbiAgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MDBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIDRcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYSkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMDNfIGJfXzAwNF8pXG4gICAgICA6ICAoKGFfXzAwM18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDA0XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAwM18sIGJfXzAwNF8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyBUIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlRcIlxuOztcblxuW0BAQGVuZF1cblxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgc3ltICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYiwgYSkgdCA9IFRcbmxldCB0cmFucyAodHlwZSBhIGIgYykgKFQgOiAoYSwgYikgdCkgKFQgOiAoYiwgYykgdCkgOiAoYSwgYykgdCA9IFRcbmxldCBjb252ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgKGEgOiBhKSA6IGIgPSBhXG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG5cbm1vZHVsZSBMaWZ0MiAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGExIGIxIGEyIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdClcbiAgICA6ICgoYTEsIGEyKSBYLnQsIChiMSwgYjIpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubW9kdWxlIExpZnQzIChYIDogc2lnXG4gICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMiBhMyBiMykgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIChUIDogKGEzLCBiMykgdClcbiAgICA6ICgoYTEsIGEyLCBhMykgWC50LCAoYjEsIGIyLCBiMykgWC50KSB0XG4gICAgPVxuICAgIFRcbiAgOztcbmVuZFxuXG5sZXQgZGV0dXBsZTIgKHR5cGUgYTEgYTIgYjEgYjIpIChUIDogKGExICogYTIsIGIxICogYjIpIHQpIDogKGExLCBiMSkgdCAqIChhMiwgYjIpIHQgPVxuICBULCBUXG47O1xuXG5sZXQgdHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdCkgOiAoYTEgKiBhMiwgYjEgKiBiMikgdCA9IFRcblxubW9kdWxlIHR5cGUgSW5qZWN0aXZlID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBzdHJpcCA6ICgnYSB0LCAnYiB0KSBlcXVhbCAtPiAoJ2EsICdiKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZTIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHRcblxuICB2YWwgc3RyaXAgOiAoKCdhMSwgJ2EyKSB0LCAoJ2IxLCAnYjIpIHQpIGVxdWFsIC0+ICgnYTEsICdiMSkgZXF1YWwgKiAoJ2EyLCAnYjIpIGVxdWFsXG5lbmRcblxubW9kdWxlIENvbXBvc2l0aW9uX3ByZXNlcnZlc19pbmplY3Rpdml0eSAoTTEgOiBJbmplY3RpdmUpIChNMiA6IEluamVjdGl2ZSkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgTTEudCBNMi50XG5cbiAgbGV0IHN0cmlwIGUgPSBNMS5zdHJpcCAoTTIuc3RyaXAgZSlcbmVuZFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVpZCA9IEludFxuXG4gIG1vZHVsZSBXaXRuZXNzID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSAuLlxuICAgICAgdHlwZSB0eXBlX3dpdG5lc3NfaW50ID0gWyBgdHlwZV93aXRuZXNzIG9mIGludCBdIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICBsZXQgc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50ID1cbiAgICAgICAgKGZ1biAoYHR5cGVfd2l0bmVzcyB2X18wMDVfKSAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ0eXBlX3dpdG5lc3NcIjsgc2V4cF9vZl9pbnQgdl9fMDA1XyBdXG4gICAgICAgICAgIDogdHlwZV93aXRuZXNzX2ludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICA7O1xuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICBsZXQgc2V4cF9vZl90IF9zZXhwX29mX2EgdCA9XG4gICAgICAgIGB0eXBlX3dpdG5lc3NcbiAgICAgICAgICAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWRcbiAgICAgICAgICAgICAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIHQpKVxuICAgICAgICB8PiBzZXhwX29mX3R5cGVfd2l0bmVzc19pbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgXyBLZXkudCArPSBLZXkgOiB0IEtleS50XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIGxldCBzZXhwX29mX3QgKHR5cGUgYSkgc2V4cF9vZl9hIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBNLktleSB8PiBLZXkuc2V4cF9vZl90IHNleHBfb2ZfYVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIHQpICgpID1cbiAgICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgOztcblxuICAgIGxldCB1aWQgKHR5cGUgYSkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAgIFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgTS5LZXkpXG4gICAgOztcblxuICAgICgqIFdlIHdhbnQgYSBjb25zdGFudCBhbGxvY2F0ZWQgb25jZSB0aGF0IFtzYW1lXSBjYW4gcmV0dXJuIHdoZW5ldmVyIGl0IGdldHMgdGhlIHNhbWVcbiAgICAgICB3aXRuZXNzZXMuICBJZiB3ZSB3cml0ZSB0aGUgY29uc3RhbnQgaW5zaWRlIHRoZSBib2R5IG9mIFtzYW1lXSwgdGhlIG5hdGl2ZS1jb2RlXG4gICAgICAgY29tcGlsZXIgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcgYW5kIGxpZnQgaXQgb3V0LiAgQnV0IGZvciBjbGFyaXR5IGFuZCByb2J1c3RuZXNzLFxuICAgICAgIHdlIGRvIGl0IG91cnNlbHZlcy4gKilcbiAgICBsZXQgc29tZV90ID0gU29tZSBUXG5cbiAgICBsZXQgc2FtZSAodHlwZSBhIGIpIChhIDogYSB0KSAoYiA6IGIgdCkgOiAoYSwgYikgZXF1YWwgb3B0aW9uID1cbiAgICAgIGxldCBtb2R1bGUgQSA9ICh2YWwgYSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBCID0gKHZhbCBiIDogUyB3aXRoIHR5cGUgdCA9IGIpIGluXG4gICAgICBtYXRjaCBBLktleSB3aXRoXG4gICAgICB8IEIuS2V5IC0+IHNvbWVfdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICA7O1xuICBlbmRcblxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3aXRuZXNzIDogJ2EgV2l0bmVzcy50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgOyB0b19zZXhwIDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgXyB7IHdpdG5lc3M7IG5hbWU7IHRvX3NleHAgfSA6IFNleHAudCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gQXRvbSBuYW1lXG4gICAgZWxzZVxuICAgICAgTGlzdFxuICAgICAgICBbIExpc3QgWyBBdG9tIFwibmFtZVwiOyBBdG9tIG5hbWUgXVxuICAgICAgICA7IExpc3QgWyBBdG9tIFwid2l0bmVzc1wiOyB3aXRuZXNzIHw+IFdpdG5lc3Muc2V4cF9vZl90IHRvX3NleHAgXVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3NleHAgdCA9IHQudG9fc2V4cFxuICBsZXQgbmFtZSB0ID0gdC5uYW1lXG4gIGxldCBjcmVhdGUgfm5hbWUgdG9fc2V4cCA9IHsgd2l0bmVzcyA9IFdpdG5lc3MuY3JlYXRlICgpOyBuYW1lOyB0b19zZXhwIH1cbiAgbGV0IHVpZCB0ID0gV2l0bmVzcy51aWQgdC53aXRuZXNzXG4gIGxldCBoYXNoIHQgPSB1aWQgdFxuICBsZXQgaGFzaF9mb2xkX3QgcyB0ID0gaGFzaF9mb2xkX2ludCBzICh1aWQgdClcbiAgbGV0IHNhbWVfd2l0bmVzcyB0MSB0MiA9IFdpdG5lc3Muc2FtZSB0MS53aXRuZXNzIHQyLndpdG5lc3NcbiAgbGV0IHNhbWUgdDEgdDIgPSBPcHRpb24uaXNfc29tZSAoc2FtZV93aXRuZXNzIHQxIHQyKVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIHQxIHQyID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgdDEgdDIgd2l0aFxuICAgIHwgU29tZSB3IC0+IHdcbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIlR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBnb3QgZGlmZmVyZW50IGlkc1wiXG4gICAgICAgICAgIFsgKCBcIlwiXG4gICAgICAgICAgICAgLCBzZXhwX29mX3BhaXIgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHQxLCB0MilcbiAgICAgICAgICAgICApXG4gICAgICAgICAgIF0pXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogWydhIENoZWFwX29wdGlvbi50XSBpcyBsaWtlIFsnYSBvcHRpb25dLCBidXQgaXQgZG9lc24ndCBib3ggW3NvbWUgX10gdmFsdWVzLlxuXG4gICAgVGhlcmUgYXJlIHNldmVyYWwgdGhpbmdzIHRoYXQgYXJlIHVuc2FmZSBhYm91dCBpdDpcblxuICAgIC0gW2Zsb2F0IHQgYXJyYXldIChvciBhbnkgYXJyYXktYmFja2VkIGNvbnRhaW5lcikgaXMgbm90IG1lbW9yeS1zYWZlXG4gICAgICBiZWNhdXNlIGZsb2F0IGFycmF5IG9wdGltaXphdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB1bmJveGVkIG9wdGlvblxuICAgICAgb3B0aW1pemF0aW9uLiBZb3UgaGF2ZSB0byB1c2UgW1VuaWZvcm1fYXJyYXkudF0gaW5zdGVhZCBvZiBbYXJyYXldLlxuXG4gICAgLSBOZXN0ZWQgb3B0aW9ucyAoWydhIHQgdF0pIGRvbid0IHdvcmsuIFRoZXkgYXJlIGJlbGlldmVkIHRvIGJlXG4gICAgICBtZW1vcnktc2FmZSwgYnV0IG5vdCBwYXJhbWV0cmljLlxuXG4gICAgLSBBIHJlY29yZCB3aXRoIFtmbG9hdCB0XXMgaW4gaXQgc2hvdWxkIGJlIHNhZmUsIGJ1dCBpdCdzIG9ubHkgW3RdIGJlaW5nXG4gICAgICBhYnN0cmFjdCB0aGF0IGdpdmVzIHlvdSBzYWZldHkuIElmIHRoZSBjb21waWxlciB3YXMgc21hcnQgZW5vdWdoIHRvIHBlZWtcbiAgICAgIHRocm91Z2ggdGhlIG1vZHVsZSBzaWduYXR1cmUgdGhlbiBpdCBjb3VsZCBkZWNpZGUgdG8gY29uc3RydWN0IGEgZmxvYXRcbiAgICAgIGFycmF5IGluc3RlYWQuICopXG5tb2R1bGUgQ2hlYXBfb3B0aW9uID0gc3RydWN0XG4gICgqIFRoaXMgaXMgdGFrZW4gZnJvbSBjb3JlLiBSYXRoZXIgdGhhbiBleHBvc2UgaXQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgYmFzZSwganVzdFxuICAgICBrZWVwIGEgY29weSBhcm91bmQgaGVyZS4gKilcbiAgbGV0IHBoeXNfc2FtZSAodHlwZSBhIGIpIChhIDogYSkgKGIgOiBiKSA9IHBoeXNfZXF1YWwgYSAoU3RkbGliLk9iai5tYWdpYyBiIDogYSlcblxuICBtb2R1bGUgVDAgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBub25lIDogXyB0XG4gICAgdmFsIHNvbWUgOiAnYSAtPiAnYSB0XG4gICAgdmFsIGlzX25vbmUgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc19zb21lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdmFsdWVfZXhuIDogJ2EgdCAtPiAnYVxuICAgIHZhbCB2YWx1ZV91bnNhZmUgOiAnYSB0IC0+ICdhXG4gICAgdmFsIGl0ZXJfc29tZSA6ICdhIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSArJ2EgdFxuXG4gICAgKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgICAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICAgICAgSXQgd291bGQgYmUgc2ltcGxlciB0byB1c2UgdGhpcyB2YWx1ZSBhcyBbbm9uZV0sIGJ1dCB3ZSB1c2UgYW4gaW1tZWRpYXRlIGluc3RlYWRcbiAgICAgICBiZWNhdXNlIGl0IGxldHMgdXMgYXZvaWQgY2FtbF9tb2RpZnkgd2hlbiBzZXR0aW5nIHRvIFtub25lXSwgbWFraW5nIGNlcnRhaW5cbiAgICAgICBiZW5jaG1hcmtzIHNpZ25pZmljYW50bHkgZmFzdGVyIChlLmcuIC4uL2JlbmNoL2FycmF5X3F1ZXVlLmV4ZSkuXG5cbiAgICAgICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBNb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlciBwbGFjZSB3aGVyZSB3ZSB3YW50XG4gICAgICAgaXQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgbWFraW5nIGl0IHNoYXJlZC4gKilcbiAgICBsZXQgbm9uZV9zdWJzdGl0dXRlIDogXyB0ID1cbiAgICAgIFN0ZGxpYi5PYmoub2JqIChTdGRsaWIuT2JqLm5ld19ibG9jayBTdGRsaWIuT2JqLmFic3RyYWN0X3RhZyAxKVxuICAgIDs7XG5cbiAgICBsZXQgbm9uZSA6IF8gdCA9XG4gICAgICAoKiBUaGUgbnVtYmVyIHdhcyBwcm9kdWNlZCBieVxuICAgICAgICAgWzwgL2Rldi91cmFuZG9tIHRyIC1jIC1kICcxMjM0NTY3ODkwYWJjZGVmJyB8IGhlYWQgLWMgMTZdLlxuXG4gICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IGEgcmFuZG9tIG51bWJlciB3aWxsIGhhdmUgbG93ZXIgcHJvYmFiaWxpdHkgdG8gY29sbGlkZSB3aXRoXG4gICAgICAgICBhbnl0aGluZyB0aGFuIGFueSBudW1iZXIgd2UgY2FuIGNob29zZSBvdXJzZWx2ZXMuXG5cbiAgICAgICAgIFdlIGFyZSB1c2luZyBhIHBvbHltb3JwaGljIHZhcmlhbnQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyIGNvbnN0YW50IGJlY2F1c2UgdGhlcmVcbiAgICAgICAgIGlzIGEgY29tcGlsZXIgYnVnIHdoZXJlIGl0IHdyb25nbHkgYXNzdW1lcyB0aGF0IHRoZSByZXN1bHQgb2YgW2lmIF8gdGhlbiBjIGVsc2VcbiAgICAgICAgIHldIGlzIG5vdCBhIHBvaW50ZXIgaWYgW2NdIGlzIGFuIGludGVnZXIgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgVGhpcyBpcyBiZWluZ1xuICAgICAgICAgZml4ZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL3B1bGwvNTU1LiAgVGhlIFwibWVtb3J5IGNvcnJ1cHRpb25cIiB0ZXN0XG4gICAgICAgICBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIGlzc3VlLiAgKilcbiAgICAgIFN0ZGxpYi5PYmoubWFnaWMgYHg2ZThlZTM0NzhlMWQ3NDQ5XG4gICAgOztcblxuICAgIGxldCBpc19ub25lIHggPSBwaHlzX2VxdWFsIHggbm9uZVxuICAgIGxldCBpc19zb21lIHggPSBub3QgKHBoeXNfZXF1YWwgeCBub25lKVxuXG4gICAgbGV0IHNvbWUgKHR5cGUgYSkgKHggOiBhKSA6IGEgdCA9XG4gICAgICBpZiBwaHlzX3NhbWUgeCBub25lIHRoZW4gbm9uZV9zdWJzdGl0dXRlIGVsc2UgU3RkbGliLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV91bnNhZmUgKHR5cGUgYSkgKHggOiBhIHQpIDogYSA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHggbm9uZV9zdWJzdGl0dXRlIHRoZW4gU3RkbGliLk9iai5tYWdpYyBub25lIGVsc2UgU3RkbGliLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV9leG4geCA9XG4gICAgICBpZiBpc19zb21lIHhcbiAgICAgIHRoZW4gdmFsdWVfdW5zYWZlIHhcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuOiB0aGUgZWxlbWVudCBpcyBbTm9uZV1cIlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcl9zb21lIHQgfmYgPSBpZiBpc19zb21lIHQgdGhlbiBmICh2YWx1ZV91bnNhZmUgdClcbiAgZW5kXG5cbiAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuXG4gICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgfCBTb21lIHggLT4gc29tZSB4XG4gICAgOztcblxuICAgIGxldFtAaW5saW5lXSB0b19vcHRpb24geCA9IGlmIGlzX3NvbWUgeCB0aGVuIFNvbWUgKHZhbHVlX3Vuc2FmZSB4KSBlbHNlIE5vbmVcbiAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19vcHRpb25cbiAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9vcHRpb25cblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgPVxuICAgICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoT3B0aW9uLnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUMVxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMSAoT3B0aW9uKSAoVDEpXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgQ2hlYXBfb3B0aW9uLnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gX29mX2FfXzAwMV8geF9fMDAzXyAtPlxuICBVbmlmb3JtX2FycmF5LnRfb2Zfc2V4cCAoQ2hlYXBfb3B0aW9uLnRfb2Zfc2V4cCBfb2ZfYV9fMDAxXykgeF9fMDAzX1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDA0XyB4X18wMDVfIC0+XG4gIFVuaWZvcm1fYXJyYXkuc2V4cF9vZl90IChDaGVhcF9vcHRpb24uc2V4cF9vZl90IF9vZl9hX18wMDRfKSB4X18wMDVfXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gIFVuaWZvcm1fYXJyYXkudF9zZXhwX2dyYW1tYXIgKENoZWFwX29wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyKVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVtcHR5ID0gVW5pZm9ybV9hcnJheS5lbXB0eVxubGV0IGNyZWF0ZSB+bGVuID0gVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbiBDaGVhcF9vcHRpb24ubm9uZVxubGV0IGluaXQgbiB+ZiA9IFVuaWZvcm1fYXJyYXkuaW5pdCBuIH5mOihmdW4gaSAtPiBDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIChmIGkpKSBbQG5vbnRhaWxdXG5sZXQgaW5pdF9zb21lIG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLnNvbWUgKGYgaSkpIFtAbm9udGFpbF1cbmxldCBsZW5ndGggPSBVbmlmb3JtX2FycmF5Lmxlbmd0aFxubGV0W0BpbmxpbmVdIGdldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgZ2V0X3NvbWVfZXhuIHQgaSA9IENoZWFwX29wdGlvbi52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBpc19ub25lIHQgaSA9IENoZWFwX29wdGlvbi5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IHNldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHNldF9zb21lIHQgaSB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHNldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSBDaGVhcF9vcHRpb24ubm9uZVxubGV0IHN3YXAgdCBpIGogPSBVbmlmb3JtX2FycmF5LnN3YXAgdCBpIGpcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IENoZWFwX29wdGlvbi50b19vcHRpb24gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX2dldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgdW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgdCBpID1cbiAgQ2hlYXBfb3B0aW9uLnZhbHVlX3Vuc2FmZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbjs7XG5cbmxldCB1bnNhZmVfaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSB4ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHVuc2FmZV9zZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5zb21lIHgpXG5sZXQgdW5zYWZlX3NldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcblxubGV0IGNsZWFyIHQgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldF9ub25lIHQgaVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgaW5wdXQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGlucHV0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBpbnB1dCBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlciBpbnB1dCB+ZiA9IGl0ZXJpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5cbmxldCBmb2xkaSBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBpdGVyaSBpbnB1dCB+ZjooZnVuIGkgZWxlbSAtPiBhY2MgOj0gZiBpICFhY2MgZWxlbSk7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkIGlucHV0IH5pbml0IH5mID0gZm9sZGkgaW5wdXQgfmluaXQgfmY6KGZ1biAoXyA6IGludCkgYWNjIHggLT4gZiBhY2MgeCkgW0Bub250YWlsXVxuXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyLk1ha2VfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsIF8pIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbHQgPSAnYSBvcHRpb25cblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbGVuZ3RoID0gVW5pZm9ybV9hcnJheS5sZW5ndGhcblxubGV0IG1hcGkgaW5wdXQgfmYgPVxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW46KGxlbmd0aCBpbnB1dCkgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gdW5zYWZlX3NldCBvdXRwdXQgaSAoZiBpIGVsZW0pKTtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbWFwIGlucHV0IH5mID0gbWFwaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSBlbGVtIC0+IGYgZWxlbSkgW0Bub250YWlsXVxuXG5sZXQgbWFwX3NvbWUgaW5wdXQgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0IGluXG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbiBpblxuICBsZXQgKCkgPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgb3B0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGlucHV0IGkgaW5cbiAgICAgIENoZWFwX29wdGlvbi5pdGVyX3NvbWUgb3B0IH5mOihmdW4geCAtPiB1bnNhZmVfc2V0X3NvbWUgb3V0cHV0IGkgKGYgeCkpXG4gICAgZG9uZVxuICBpblxuICBvdXRwdXRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcblxubGV0IG9mX2FycmF5X3NvbWUgYXJyYXkgPVxuICBpbml0X3NvbWUgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxuaW5jbHVkZSBCbGl0Lk1ha2UxX2dlbmVyaWMgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5ID0gVW5pZm9ybV9hcnJheS5jb3B5XG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlX2NoZWFwX29wdGlvbiA9IENoZWFwX29wdGlvblxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhY2tfaW50ZlxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIFtEZXF1ZV0gaW4gdGhhdCBpdCB1c2VzIGFuIGFycmF5IG9mIFsnYV0gYW5kXG4gICBhIG11dGFibGUgW2ludF0gdG8gaW5kaWNhdGUgd2hhdCBpbiB0aGUgYXJyYXkgaXMgdXNlZC4gIFdlIGNob29zZSB0byBpbXBsZW1lbnQgW1N0YWNrXVxuICAgZGlyZWN0bHkgcmF0aGVyIHRoYW4gb24gdG9wIG9mIFtEZXF1ZV0gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBFLmcuIGEgc2ltcGxlXG4gICBtaWNyb2JlbmNobWFyayBzaG93cyB0aGF0IHB1c2gvcG9wIGlzIGFib3V0IDIwJSBmYXN0ZXIuICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV8geyBsZW5ndGggPSBsZW5ndGhfXzAwM187IGVsdHMgPSBlbHRzX18wMDVfIH0gLT5cbiAgbGV0IGJuZHNfXzAwMl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDZfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMDVfIGluXG4gICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwM18gaW5cbiAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gIGluXG4gIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgc2V4cF9vZl90ID0gYFJlYm91bmRfbGF0ZXJcbmxldCBfID0gc2V4cF9vZl90XG5sZXQgY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgKHsgbGVuZ3RoOyBlbHRzIH0gYXMgdCkgOiB1bml0ID1cbiAgdHJ5XG4gICAgYXNzZXJ0ICgwIDw9IGxlbmd0aCAmJiBsZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgICAgaW52YXJpYW50X2EgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBpKVxuICAgIGRvbmU7XG4gICAgKCogV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHVudXNlZCBlbGVtZW50cyBhcmUgdW5zZXQgdG8gYXZvaWQgYSBzcGFjZVxuICAgICAgIGxlYWsuICopXG4gICAgZm9yIGkgPSBsZW5ndGggdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzIC0gMSBkb1xuICAgICAgYXNzZXJ0IChub3QgKE9wdGlvbl9hcnJheS5pc19zb21lIGVsdHMgaSkpXG4gICAgZG9uZVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJTdGFjay5pbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJleG5cIiwgZXhuIHw+IEV4bi5zZXhwX29mX3Q7IFwic3RhY2tcIiwgdCB8PiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9vcGFxdWUgXSlcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgKCkgOiBhIHQgPSB7IGxlbmd0aCA9IDA7IGVsdHMgPSBPcHRpb25fYXJyYXkuZW1wdHkgfVxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFRoZSBvcmRlciBpbiB3aGljaCBlbGVtZW50cyBhcmUgdmlzaXRlZCBoYXMgYmVlbiBjaG9zZW4gc28gYXMgdG8gYmUgYmFja3dhcmRzXG4gICBjb21wYXRpYmxlIHdpdGggW1N0ZGxpYi5TdGFja10gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICFyIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKVxuICBkb25lO1xuICAhclxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgZiAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IG1lbSA9IEMubWVtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgb2ZfbGlzdCAodHlwZSBhKSAobCA6IGEgbGlzdCkgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxcbiAgdGhlbiBjcmVhdGUgKClcbiAgZWxzZSAoXG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjooMiAqIGxlbmd0aCkgaW5cbiAgICBsZXQgciA9IHJlZiBsIGluXG4gICAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBhIDo6IGwgLT5cbiAgICAgICAgT3B0aW9uX2FycmF5LnNldF9zb21lIGVsdHMgaSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHsgbGVuZ3RoOyBlbHRzIH0pXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHJlc2l6ZSB0IHNpemUgPVxuICBsZXQgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOnNpemUgaW5cbiAgT3B0aW9uX2FycmF5LmJsaXQgfnNyYzp0LmVsdHMgfmRzdDphcnIgfnNyY19wb3M6MCB+ZHN0X3BvczowIH5sZW46dC5sZW5ndGg7XG4gIHQuZWx0cyA8LSBhcnJcbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBuZXdfY2FwYWNpdHkgPVxuICBsZXQgbmV3X2NhcGFjaXR5ID0gbWF4IG5ld19jYXBhY2l0eSAobGVuZ3RoIHQpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0IHRoZW4gcmVzaXplIHQgbmV3X2NhcGFjaXR5XG47O1xuXG5sZXQgcHVzaCB0IGEgPVxuICBpZiB0Lmxlbmd0aCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzIHRoZW4gcmVzaXplIHQgKDIgKiAodC5sZW5ndGggKyAxKSk7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmVsdHMgdC5sZW5ndGggYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IHQubGVuZ3RoIC0gMSBpblxuICBsZXQgcmVzdWx0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGk7XG4gIHQubGVuZ3RoIDwtIGk7XG4gIHJlc3VsdFxuOztcblxubGV0IHBvcF9lcnJvciA9IEVycm9yLm9mX3N0cmluZyBcIlN0YWNrLnBvcCBvZiBlbXB0eSBzdGFja1wiXG5sZXQgcG9wIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBvcF9ub25lbXB0eSB0KVxubGV0IHBvcF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBFcnJvci5yYWlzZSBwb3BfZXJyb3IgZWxzZSBwb3Bfbm9uZW1wdHkgdFxubGV0IHRvcF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgKHQubGVuZ3RoIC0gMSlcbmxldCB0b3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay50b3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHRvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh0b3Bfbm9uZW1wdHkgdClcbmxldCB0b3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgdG9wX2Vycm9yIGVsc2UgdG9wX25vbmVtcHR5IHRcbmxldCBjb3B5IHsgbGVuZ3RoOyBlbHRzIH0gPSB7IGxlbmd0aDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jb3B5IGVsdHMgfVxuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIHQubGVuZ3RoID4gMFxuICB0aGVuIChcbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDApXG47O1xuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBpZiB0Lmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGYgKHBvcF9ub25lbXB0eSB0KTtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKCkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgbWF0Y2ggZiAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IHB1c2ggdF9yZXN1bHQgeFxuICBkb25lO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgeCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkgaW5cbiAgICBpZiBmIHggdGhlbiBwdXNoIHRfcmVzdWx0IHhcbiAgZG9uZTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHdyaXRlX2luZGV4ID0gcmVmIDAgaW5cbiAgRXhuLnByb3RlY3RcbiAgICB+ZjooZnVuICgpIC0+XG4gICAgICBmb3IgcmVhZF9pbmRleCA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgIGxldCB4ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIHQuZWx0cyByZWFkX2luZGV4IGluXG4gICAgICAgIGlmIGYgeFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpZiAhd3JpdGVfaW5kZXggPCByZWFkX2luZGV4XG4gICAgICAgICAgdGhlbiBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyAhd3JpdGVfaW5kZXggeDtcbiAgICAgICAgICBpbmNyIHdyaXRlX2luZGV4KVxuICAgICAgZG9uZSlcbiAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICBmb3IgaSA9ICF3cml0ZV9pbmRleCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSB0LmVsdHMgaVxuICAgICAgZG9uZTtcbiAgICAgIHQubGVuZ3RoIDwtICF3cml0ZV9pbmRleCkgW0Bub250YWlsXVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgcHVzaCB0IHg7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhpcyBpcyBsaWZ0ZWQgb3V0IG9mIFtNXSBiZWNhdXNlIFtTb3VyY2VfY29kZV9wb3NpdGlvbjBdIGV4cG9ydHMgW1N0cmluZzBdXG4gICBhcyBbU3RyaW5nXSwgd2hpY2ggZG9lcyBub3QgZXhwb3J0IGEgaGFzaCBmdW5jdGlvbi4gKilcbmxldCBoYXNoX292ZXJyaWRlIHsgU3RkbGliLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9ID1cbiAgU3RyaW5nLmhhc2ggcG9zX2ZuYW1lXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2xudW1cbiAgbHhvciBJbnQuaGFzaCBwb3NfYm9sXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2NudW1cbjs7XG5cbm1vZHVsZSBNID0gc3RydWN0XG4gIGluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5cbiAgbGV0IGhhc2ggPSBoYXNoX292ZXJyaWRlXG5lbmRcblxuaW5jbHVkZSBNXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChNKVxuXG5sZXQgb2ZfcG9zIChwb3NfZm5hbWUsIHBvc19sbnVtLCBwb3NfY251bSwgXykgPVxuICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sID0gMCB9XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdcbiAgICB8IFplcm9cbiAgICB8IFBvc1xuICAgIHwgTmFuXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbl9vcl9uYW4ubWwuVC50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIChmdW4gaHN2IGFyZyAtPlxuICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgIHwgTmFuIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgM1xuICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvczsgTmFuIF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25fb3JfbmFuXCJcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogVC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogVC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBULnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogVC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IFQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IG9mX3NpZ24gPSBmdW5jdGlvblxuICB8IFNpZ24uTmVnIC0+IE5lZ1xuICB8IFNpZ24uWmVybyAtPiBaZXJvXG4gIHwgU2lnbi5Qb3MgLT4gUG9zXG47O1xuXG5sZXQgdG9fc2lnbl9leG4gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBTaWduLk5lZ1xuICB8IFplcm8gLT4gU2lnbi5aZXJvXG4gIHwgUG9zIC0+IFNpZ24uUG9zXG4gIHwgTmFuIC0+IGludmFsaWRfYXJnIFwiQmFzZS5TaWduX29yX25hbi50b19zaWduX2V4bjogTmFuXCJcbjs7XG5cbmxldCBvZl9pbnQgbiA9IG9mX3NpZ24gKFNpZ24ub2ZfaW50IG4pXG5sZXQgdG9faW50X2V4biB0ID0gU2lnbi50b19pbnQgKHRvX3NpZ25fZXhuIHQpXG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuICB8IE5hbiAtPiBOYW5cbjs7XG5cbmxldCAoICogKSB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5hbiwgXyB8IF8sIE5hbiAtPiBOYW5cbiAgfCBfIC0+IG9mX3NpZ24gKFNpZ24uKCAqICkgKHRvX3NpZ25fZXhuIHQpICh0b19zaWduX2V4biB0JykpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFwibmVnYXRpdmVcIlxuICB8IFplcm8gLT4gXCJ6ZXJvXCJcbiAgfCBQb3MgLT4gXCJwb3NpdGl2ZVwiXG4gIHwgTmFuIC0+IFwibm90LWEtbnVtYmVyXCJcbjs7XG5cbigqIEluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgYW55IGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXRcbiAgIGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgYWxsIDogJ2EuICdhIGxpc3QgLT4gJ2EgdCBsaXN0ID1cbiAgZnVuIF9hbGxfb2ZfYSAtPlxuICBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICB8IGVudW1lcmF0ZV9fMDAxXyA6OiBsIC0+IG1hcCBsIChJbmNsIGVudW1lcmF0ZV9fMDAxXyA6OiBhY2MpXG4gICAgIGluXG4gICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgKFBweF9lbnVtZXJhdGVfbGliLkxpc3QuYXBwZW5kXG4gICAgICAgKGxldCByZWMgbWFwIGwgYWNjID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFBweF9lbnVtZXJhdGVfbGliLkxpc3QucmV2IGFjY1xuICAgICAgICAgIHwgZW51bWVyYXRlX18wMDJfIDo6IGwgLT4gbWFwIGwgKEV4Y2wgZW51bWVyYXRlX18wMDJfIDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbWFwIF9hbGxfb2ZfYSBbXSlcbiAgICAgICBbIFVuYm91bmRlZCBdKVxuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biAodHlwZSBhX18wMThfKSA6ICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxOF8pIC0+IFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfIHQpIC0+XG4gIGxldCBlcnJvcl9zb3VyY2VfXzAwNl8gPSBcIm1heWJlX2JvdW5kLm1sLnRcIiBpblxuICBmdW4gX29mX2FfXzAwM18gLT4gZnVuY3Rpb25cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgX3RhZ19fMDA5XykgOjogc2V4cF9hcmdzX18wMTBfKSBhc1xuICAgICAgX3NleHBfXzAwOF8gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxMF8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTFfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTJfID0gX29mX2FfXzAwM18gYXJnMF9fMDExXyBpblxuICAgICAgICAgSW5jbCByZXMwX18wMTJfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMDlfXG4gICAgICAgICAgIF9zZXhwX18wMDhfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICBfc2V4cF9fMDEzXyAtPlxuICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgbGV0IHJlczBfXzAxN18gPSBfb2ZfYV9fMDAzXyBhcmcwX18wMTZfIGluXG4gICAgICAgICBFeGNsIHJlczBfXzAxN19cbiAgICAgICB8IF8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDZfXG4gICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSAtPiBVbmJvdW5kZWRcbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ1bmJvdW5kZWRcIiB8IFwiVW5ib3VuZGVkXCIpIDo6IF8pIGFzXG4gICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICB8IHNleHBfXzAwNV8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biAodHlwZSBhX18wMjRfKSA6ICgoYV9fMDI0XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAyNF8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gIGZ1biBfb2ZfYV9fMDE5XyAtPiBmdW5jdGlvblxuICAgIHwgSW5jbCBhcmcwX18wMjBfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIxXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkluY2xcIjsgcmVzMF9fMDIxXyBdXG4gICAgfCBFeGNsIGFyZzBfXzAyMl8gLT5cbiAgICAgIGxldCByZXMwX18wMjNfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhjbFwiOyByZXMwX18wMjNfIF1cbiAgICB8IFVuYm91bmRlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmJvdW5kZWRcIlxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiSW5jbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXhjbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlVuYm91bmRlZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG50eXBlIGludGVydmFsX2NvbXBhcmlzb24gPVxuICB8IEJlbG93X2xvd2VyX2JvdW5kXG4gIHwgSW5fcmFuZ2VcbiAgfCBBYm92ZV91cHBlcl9ib3VuZFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaF1cblxubGV0IGludGVydmFsX2NvbXBhcmlzb25fb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMjdfID0gXCJtYXliZV9ib3VuZC5tbC5pbnRlcnZhbF9jb21wYXJpc29uXCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJiZWxvd19sb3dlcl9ib3VuZFwiIHwgXCJCZWxvd19sb3dlcl9ib3VuZFwiKSAtPiBCZWxvd19sb3dlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5fcmFuZ2VcIiB8IFwiSW5fcmFuZ2VcIikgLT4gSW5fcmFuZ2VcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIC0+IEFib3ZlX3VwcGVyX2JvdW5kXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IHNleHBfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IGludGVydmFsX2NvbXBhcmlzb24pXG47O1xuXG5sZXQgc2V4cF9vZl9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJCZWxvd19sb3dlcl9ib3VuZFwiXG4gICAgfCBJbl9yYW5nZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbl9yYW5nZVwiXG4gICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJBYm92ZV91cHBlcl9ib3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0IChpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW1hciA6IGludGVydmFsX2NvbXBhcmlzb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJCZWxvd19sb3dlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiSW5fcmFuZ2VcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkFib3ZlX3VwcGVyX2JvdW5kXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24gPVxuICAoU3RkbGliLmNvbXBhcmUgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gaW50KVxuOztcblxubGV0IChoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiA6XG4gICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEluX3JhbmdlIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoX2ludGVydmFsX2NvbXBhcmlzb24gOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBJbmNsIChmIGluY2wpXG4gIHwgRXhjbCBleGNsIC0+IEV4Y2wgKGYgZXhjbClcbiAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG47O1xuXG5sZXQgaXNfbG93ZXJfYm91bmQgdCB+b2ZfOmEgfmNvbXBhcmUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gY29tcGFyZSBpbmNsIGEgPD0gMFxuICB8IEV4Y2wgZXhjbCAtPiBjb21wYXJlIGV4Y2wgYSA8IDBcbiAgfCBVbmJvdW5kZWQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX3VwcGVyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgYSBpbmNsIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBhIGV4Y2wgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlID1cbiAgbWF0Y2ggbG93ZXIgd2l0aFxuICB8IFVuYm91bmRlZCAtPiBmYWxzZVxuICB8IEluY2wgbG93ZXIgfCBFeGNsIGxvd2VyIC0+XG4gICAgKG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgICAgfCBJbmNsIHVwcGVyIHwgRXhjbCB1cHBlciAtPiBjb21wYXJlIGxvd2VyIHVwcGVyID4gMClcbjs7XG5cbmxldCBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIGlmIGJvdW5kc19jcm9zc2VkIH5sb3dlciB+dXBwZXIgfmNvbXBhcmVcbiAgdGhlbiBmYWlsd2l0aCBcIk1heWJlX2JvdW5kLmNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuOiBsb3dlciBib3VuZCA+IHVwcGVyIGJvdW5kXCJcbjs7XG5cbmxldCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZTtcbiAgaWYgbm90IChpc19sb3dlcl9ib3VuZCBsb3dlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQmVsb3dfbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBub3QgKGlzX3VwcGVyX2JvdW5kIHVwcGVyIH5vZl86YSB+Y29tcGFyZSlcbiAgdGhlbiBBYm92ZV91cHBlcl9ib3VuZFxuICBlbHNlIEluX3JhbmdlXG47O1xuXG5sZXQgaW50ZXJ2YWxfY29udGFpbnNfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSA9XG4gIG1hdGNoIGNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSB3aXRoXG4gIHwgSW5fcmFuZ2UgLT4gdHJ1ZVxuICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIE9yX2R1cGxpY2F0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIFsgYE9rIG9mICdhXG4gICAgfCBgRHVwbGljYXRlXG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgfCBgT2sgX2xlZnRfXzAwM18sIGBPayBfcmlnaHRfXzAwNF8gLT4gX2NtcF9fYSBfbGVmdF9fMDAzXyBfcmlnaHRfXzAwNF9cbiAgICAgIHwgYER1cGxpY2F0ZSwgYER1cGxpY2F0ZSAtPiAwXG4gICAgICB8IHgsIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwNV8gYl9fMDA2XyAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDVfIGJfXzAwNl9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzAwNV8sIGJfXzAwNl8gd2l0aFxuICAgICAgICB8IGBPayBfbGVmdF9fMDA3XywgYE9rIF9yaWdodF9fMDA4XyAtPiBfY21wX19hIF9sZWZ0X18wMDdfIF9yaWdodF9fMDA4X1xuICAgICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gdHJ1ZVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAwOV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYE9rIHZfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgX29mX2FfXzAwOV8gdl9fMDEwXyBdXG4gICAgICB8IGBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRHVwbGljYXRlXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAnelxuZW5kXG5cbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSBjb21wYXJhdG9yOigna2V5LCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnelxuZW5kXG5cbm1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2sgJ3YuICgnayAtPiAnayAtPiBpbnQpIC0+ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMTFfIGJfXzAxMl8gLT5cbiAgICBsZXQgdF9fMDEzXywgdF9fMDE0XyA9IGFfXzAxMV8gaW5cbiAgICBsZXQgdF9fMDE1XywgdF9fMDE2XyA9IGJfXzAxMl8gaW5cbiAgICBtYXRjaCBfY21wX19rIHRfXzAxM18gdF9fMDE1XyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBpZiBTdGRsaWIuKCA9PSApIHRfXzAxNF8gdF9fMDE2X1xuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdF9fMDE0XywgdF9fMDE2XyB3aXRoXG4gICAgICAgIHwgYExlZnQgX2xlZnRfXzAxN18sIGBMZWZ0IF9yaWdodF9fMDE4XyAtPiBfY21wX192IF9sZWZ0X18wMTdfIF9yaWdodF9fMDE4X1xuICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDE5XywgYFJpZ2h0IF9yaWdodF9fMDIwXyAtPiBfY21wX192IF9sZWZ0X18wMTlfIF9yaWdodF9fMDIwX1xuICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMjFfLCBgVW5lcXVhbCBfcmlnaHRfXzAyMl8gLT5cbiAgICAgICAgICBsZXQgdF9fMDIzXywgdF9fMDI0XyA9IF9sZWZ0X18wMjFfIGluXG4gICAgICAgICAgbGV0IHRfXzAyNV8sIHRfXzAyNl8gPSBfcmlnaHRfXzAyMl8gaW5cbiAgICAgICAgICAobWF0Y2ggX2NtcF9fdiB0X18wMjNfIHRfXzAyNV8gd2l0aFxuICAgICAgICAgICB8IDAgLT4gX2NtcF9fdiB0X18wMjRfIHRfXzAyNl9cbiAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgIHwgeCwgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHkpXG4gICAgfCBuIC0+IG5cbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdrICd2LlxuICAgICgnayAtPiAnayAtPiBib29sKSAtPiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndikgdCAtPiAoJ2ssICd2KSB0IC0+IGJvb2xcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgICAgIGxldCB0X18wMjlfLCB0X18wMzBfID0gYV9fMDI3XyBpblxuICAgICAgbGV0IHRfXzAzMV8sIHRfXzAzMl8gPSBiX18wMjhfIGluXG4gICAgICBTdGRsaWIuKCAmJiApXG4gICAgICAgIChfY21wX19rIHRfXzAyOV8gdF9fMDMxXylcbiAgICAgICAgKGlmIFN0ZGxpYi4oID09ICkgdF9fMDMwXyB0X18wMzJfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCB0X18wMzBfLCB0X18wMzJfIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDMzXywgYExlZnQgX3JpZ2h0X18wMzRfIC0+IF9jbXBfX3YgX2xlZnRfXzAzM18gX3JpZ2h0X18wMzRfXG4gICAgICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMzVfLCBgUmlnaHQgX3JpZ2h0X18wMzZfIC0+IF9jbXBfX3YgX2xlZnRfXzAzNV8gX3JpZ2h0X18wMzZfXG4gICAgICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAzN18sIGBVbmVxdWFsIF9yaWdodF9fMDM4XyAtPlxuICAgICAgICAgICAgIGxldCB0X18wMzlfLCB0X18wNDBfID0gX2xlZnRfXzAzN18gaW5cbiAgICAgICAgICAgICBsZXQgdF9fMDQxXywgdF9fMDQyXyA9IF9yaWdodF9fMDM4XyBpblxuICAgICAgICAgICAgIFN0ZGxpYi4oICYmICkgKF9jbXBfX3YgdF9fMDM5XyB0X18wNDFfKSAoX2NtcF9fdiB0X18wNDBfIHRfXzA0Ml8pXG4gICAgICAgICAgIHwgeCwgeSAtPiBTdGRsaWIuKCA9ICkgeCB5KSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnayAndi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdrKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wNTdfID0gXCJtYXBfaW50Zi5tbC5TeW1tZXRyaWNfZGlmZl9lbGVtZW50LnRcIiBpblxuICAgIGZ1biBfb2Zfa19fMDQzXyBfb2Zfdl9fMDQ0XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNjdfOyBhcmcxX18wNjhfIF0gLT5cbiAgICAgICAgbGV0IHJlczBfXzA2OV8gPSBfb2Zfa19fMDQzXyBhcmcwX18wNjdfXG4gICAgICAgIGFuZCByZXMxX18wNzBfID1cbiAgICAgICAgICBsZXQgc2V4cF9fMDY2XyA9IGFyZzFfXzA2OF8gaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIG1hdGNoIHNleHBfXzA2Nl8gd2l0aFxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyBhcyBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIDo6IHNleHBfYXJnc19fMDUwXykgYXNcbiAgICAgICAgICAgICAgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiBhcyBfdGFnX18wNjNfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2NF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDY1XyA9IF9vZl92X18wNDRfIGFyZzBfXzA2NF8gaW5cbiAgICAgICAgICAgICAgICAgICAgYExlZnQgcmVzMF9fMDY1X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjNfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiBhcyBfdGFnX18wNjBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2MV8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDYyXyA9IF9vZl92X18wNDRfIGFyZzBfXzA2MV8gaW5cbiAgICAgICAgICAgICAgICAgICAgYFJpZ2h0IHJlczBfXzA2Ml9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYwX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiBhcyBfdGFnX18wNTFfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA1OF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU5XyA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYXJnMF9fMDU4XyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNTJfOyBhcmcxX18wNTNfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTRfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDUyX1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlczFfXzA1NV8gPSBfb2Zfdl9fMDQ0XyBhcmcxX18wNTNfIGluXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMwX18wNTRfLCByZXMxX18wNTVfXG4gICAgICAgICAgICAgICAgICAgICAgfCBzZXhwX18wNTZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNleHBfXzA1Nl9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYFVuZXF1YWwgcmVzMF9fMDU5X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNTFfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgIHNleHBfXzA2Nl9cbiAgICAgICAgaW5cbiAgICAgICAgcmVzMF9fMDY5XywgcmVzMV9fMDcwX1xuICAgICAgfCBzZXhwX18wNzFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgZXJyb3Jfc291cmNlX18wNTdfIDIgc2V4cF9fMDcxX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdrICd2LlxuICAgICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2Zfa19fMDcyXyBfb2Zfdl9fMDczXyAoYXJnMF9fMDgxXywgYXJnMV9fMDgyXykgLT5cbiAgICAgIGxldCByZXMwX18wODNfID0gX29mX2tfXzA3Ml8gYXJnMF9fMDgxX1xuICAgICAgYW5kIHJlczFfXzA4NF8gPVxuICAgICAgICBtYXRjaCBhcmcxX18wODJfIHdpdGhcbiAgICAgICAgfCBgTGVmdCB2X18wNzRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2Zfdl9fMDczXyB2X18wNzRfIF1cbiAgICAgICAgfCBgUmlnaHQgdl9fMDc1XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl92X18wNzNfIHZfXzA3NV8gXVxuICAgICAgICB8IGBVbmVxdWFsIHZfXzA3Nl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbFwiXG4gICAgICAgICAgICA7IChsZXQgYXJnMF9fMDc3XywgYXJnMV9fMDc4XyA9IHZfXzA3Nl8gaW5cbiAgICAgICAgICAgICAgIGxldCByZXMwX18wNzlfID0gX29mX3ZfXzA3M18gYXJnMF9fMDc3X1xuICAgICAgICAgICAgICAgYW5kIHJlczFfXzA4MF8gPSBfb2Zfdl9fMDczXyBhcmcxX18wNzhfIGluXG4gICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wNzlfOyByZXMxX18wODBfIF0pXG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDgzXzsgcmVzMV9fMDg0XyBdXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgICAnayAndi5cbiAgICAnayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydrX3NleHBfZ3JhbW1hciBfJ3Zfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIExpc3RcbiAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAoIF8na19zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgLCBDb25zXG4gICAgICAgICAgICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIEVtcHR5IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpXG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wODVfIGJfXzA4Nl8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzA4NV8gYl9fMDg2X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDg1XywgYl9fMDg2XyB3aXRoXG4gICAgICB8IGBMZWZ0IF9sZWZ0X18wODdfLCBgTGVmdCBfcmlnaHRfXzA4OF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDg3XyBfcmlnaHRfXzA4OF9cbiAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wODlfLCBgUmlnaHQgX3JpZ2h0X18wOTBfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18wODlfIF9yaWdodF9fMDkwX1xuICAgICAgfCBgQm90aCBfbGVmdF9fMDkxXywgYEJvdGggX3JpZ2h0X18wOTJfIC0+XG4gICAgICAgIGxldCB0X18wOTNfLCB0X18wOTRfID0gX2xlZnRfXzA5MV8gaW5cbiAgICAgICAgbGV0IHRfXzA5NV8sIHRfXzA5Nl8gPSBfcmlnaHRfXzA5Ml8gaW5cbiAgICAgICAgKG1hdGNoIF9jbXBfX2xlZnQgdF9fMDkzXyB0X18wOTVfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19yaWdodCB0X18wOTRfIHRfXzA5Nl9cbiAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgfCB4LCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19sZWZ0IF9jbXBfX3JpZ2h0IGFfXzA5N18gYl9fMDk4XyAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wOTdfIGJfXzA5OF9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzA5N18sIGJfXzA5OF8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wOTlfLCBgTGVmdCBfcmlnaHRfXzEwMF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDk5XyBfcmlnaHRfXzEwMF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzEwMV8sIGBSaWdodCBfcmlnaHRfXzEwMl8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzEwMV8gX3JpZ2h0X18xMDJfXG4gICAgICAgIHwgYEJvdGggX2xlZnRfXzEwM18sIGBCb3RoIF9yaWdodF9fMTA0XyAtPlxuICAgICAgICAgIGxldCB0X18xMDVfLCB0X18xMDZfID0gX2xlZnRfXzEwM18gaW5cbiAgICAgICAgICBsZXQgdF9fMTA3XywgdF9fMTA4XyA9IF9yaWdodF9fMTA0XyBpblxuICAgICAgICAgIFN0ZGxpYi4oICYmICkgKF9jbXBfX2xlZnQgdF9fMTA1XyB0X18xMDdfKSAoX2NtcF9fcmlnaHQgdF9fMTA2XyB0X18xMDhfKVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2xlZnRfXzEwOV8gX29mX3JpZ2h0X18xMTBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IHZfXzExMV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2ZfbGVmdF9fMTA5XyB2X18xMTFfIF1cbiAgICAgIHwgYFJpZ2h0IHZfXzExMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3JpZ2h0X18xMTBfIHZfXzExMl8gXVxuICAgICAgfCBgQm90aCB2X18xMTNfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiXG4gICAgICAgICAgOyAobGV0IGFyZzBfXzExNF8sIGFyZzFfXzExNV8gPSB2X18xMTNfIGluXG4gICAgICAgICAgICAgbGV0IHJlczBfXzExNl8gPSBfb2ZfbGVmdF9fMTA5XyBhcmcwX18xMTRfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzExN18gPSBfb2ZfcmlnaHRfXzExMF8gYXJnMV9fMTE1XyBpblxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzExNl87IHJlczFfXzExN18gXSlcbiAgICAgICAgICBdXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wICopXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ29udGludWVcbiAgICB8IFN0b3BcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgQ29udGludWU7IFN0b3AgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFN0ZGxpYi4oID0gKSA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb250aW51ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJDb250aW51ZVwiXG4gICAgICB8IFN0b3AgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RvcFwiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWQgKilcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGaW5pc2hlZFxuICAgIHwgVW5maW5pc2hlZFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBGaW5pc2hlZDsgVW5maW5pc2hlZCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoU3RkbGliLiggPSApIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkZpbmlzaGVkXCJcbiAgICAgIHwgVW5maW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmZpbmlzaGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdjbXAgY21wXG4gIHR5cGUgKCdhLCAnY21wLCAneikgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgaW52YXJpYW50cyA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcblxuICB2YWwgYWRkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZF9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc2V0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZF9tdWx0aVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcmVtb3ZlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2IGxpc3QpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGNoYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gZjooKCd2IG9wdGlvbiAtPiAndiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgdXBkYXRlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gZjooKCd2IG9wdGlvbiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaW5kIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBvcHRpb24pIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBtZW0gOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAnayBrZXkgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOigoJ2sga2V5IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiB1bml0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooKCd2MSAtPiAndjIpW0Bsb2NhbF0pIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgdmFsIG1hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBmb2xkXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOlxuICAgICAgICAgKChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgICAgICAgIFtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0XG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZDJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGluaXQ6J2FjY1xuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgnayBrZXkgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBjb21iaW5lX2Vycm9yc1xuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBlcXVhbFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sga2V5IGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrIGtleSAqICd2KSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOigoa2V5OidrIGtleSAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21iaW5lOigoa2V5OidrIGtleSAtPiAndiAtPiAndiAtPiAndilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZGF0YV9lcXVhbDooKCd2IC0+ICd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgICAtPiBpbml0OidhY2NcbiAgICAgIC0+IGY6KCgnYWNjIC0+ICgnayBrZXksICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAgIC0+ICdhY2MgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayBrZXkgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNwbGl0X2xlX2d0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sdF9nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYXBwZW5kXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBsb3dlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IG1pbjonayBrZXlcbiAgICAgIC0+IG1heDonayBrZXlcbiAgICAgIC0+IGluaXQ6J2FjY1xuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayBrZXkgLT4gbWF4OidrIGtleSAtPiAoJ2sga2V5ICogJ3YpIGxpc3QgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBudGggOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IC0+ICdrIGtleSAqICd2XG4gIHZhbCByYW5rIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGludCBvcHRpb24pIGFjY2Vzc19vcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrIGtleVxuICAgICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgU2VxdWVuY2UudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gc2VnbWVudF9vZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pW0Bsb2NhbF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA6IHNpZ1xuICAgIHZhbCBtYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG5cbiAgICB2YWwgZmlsdGVyX21hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24gQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdHJlZVxuICB0eXBlICdrIGtleVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgKCdhLCAnY21wLCAneikgYWNjZXNzX29wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdrLCAnY21wLCAnayBrZXkgLT4gJ3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgbWFwX2tleXNcbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdFxuICAgICAgLT4gZjooKCdrMSBrZXkgLT4gJ2syIGtleSlbQGxvY2FsXSlcbiAgICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0IC0+IGY6KCgnazEga2V5IC0+ICdrMiBrZXkpW0Bsb2NhbF0pIC0+ICgnazIsICd2LCAnY21wMikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIHRyYW5zcG9zZV9rZXlzXG4gICAgOiAoICdrMVxuICAgICAgLCAnY21wMVxuICAgICAgLCAoICdrMlxuICAgICAgICAsICdjbXAyXG4gICAgICAgICwgKCdrMSwgKCdrMiwgJ2EsICdjbXAyKSB0LCAnY21wMSkgdCAtPiAoJ2syLCAoJ2sxLCAnYSwgJ2NtcDEpIHQsICdjbXAyKSB0IClcbiAgICAgICAgICBjcmVhdGVfb3B0aW9ucyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbGVuOmludCAtPiBmOigoaW50IC0+ICdrIGtleSAqICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIGxpc3RcbiAgICAgIC0+IGluaXQ6J3YyXG4gICAgICAtPiBmOigoJ3YyIC0+ICd2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgbGlzdCAtPiBmOigoJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXVxuICAgICAgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBTZXF1ZW5jZS50XG4gICAgICAtPiBpbml0Oid2MlxuICAgICAgLT4gZjooKCd2MiAtPiAndjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gZjooKCd2IC0+ICd2IC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3RcbiAgICAgIC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ3YgbGlzdCAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X2V4blxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3QgLT4gZ2V0X2tleTooKCd2IC0+ICdrIGtleSlbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0IC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pIC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KChmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooKGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdrLCAnY21wLCAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZSAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnYSBjbXBcbiAgdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbiAgdmFsIHNleHBfb2ZfbV9fdFxuICAgIDogIChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKCd2IC0+IFNleHAudClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdFxuICAgIDogIChtb2R1bGUgQ29tcGFyZV9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBpbnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKEhhc2guc3RhdGUgLT4gJ3YgLT4gSGFzaC5zdGF0ZSlcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+IEhhc2guc3RhdGVcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYXAgPSBzaWdcbiAgKCoqIFtNYXBdIGlzIGEgZnVuY3Rpb25hbCBkYXRhIHN0cnVjdHVyZSAoYmFsYW5jZWQgYmluYXJ5IHRyZWUpIGltcGxlbWVudGluZyBmaW5pdGUgbWFwc1xuICAgICAgb3ZlciBhIHRvdGFsbHktb3JkZXJlZCBkb21haW4sIGNhbGxlZCBhIFwia2V5XCIuICopXG5cbiAgdHlwZSAoISdrZXksICshJ3ZhbHVlLCAhJ2NtcCkgdFxuXG4gIG1vZHVsZSBPcl9kdXBsaWNhdGUgPSBPcl9kdXBsaWNhdGVcbiAgbW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250aW51ZV9vcl9zdG9wXG5cbiAgbW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBVbmZpbmlzaGVkXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2VudW1lcmF0ZV9saWIuRW51bWVyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBNYXBzIFtDb250aW51ZV0gdG8gW0ZpbmlzaGVkXSBhbmQgW1N0b3BdIHRvIFtVbmZpbmlzaGVkXS4gKilcbiAgICB2YWwgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0XG5cbiAgICAoKiogTWFwcyBbRmluaXNoZWRdIHRvIFtDb250aW51ZV0gYW5kIFtVbmZpbmlzaGVkXSB0byBbU3RvcF0uICopXG4gICAgdmFsIHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudFxuICBlbmRcblxuICBtb2R1bGUgTWVyZ2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdsZWZ0LCAncmlnaHQpIHQgPVxuICAgICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgICB8IGBCb3RoIG9mICdsZWZ0ICogJ3JpZ2h0XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgdmFsIGNvbXBhcmVcbiAgICAgIDogICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGludFxuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGJvb2wpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGJvb2xcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgbGVmdCA6ICgnbGVmdCwgXykgdCAtPiAnbGVmdCBvcHRpb25cbiAgICB2YWwgcmlnaHQgOiAoXywgJ3JpZ2h0KSB0IC0+ICdyaWdodCBvcHRpb25cbiAgICB2YWwgbGVmdF92YWx1ZSA6ICgnbGVmdCwgXykgdCAtPiBkZWZhdWx0OidsZWZ0IC0+ICdsZWZ0XG4gICAgdmFsIHJpZ2h0X3ZhbHVlIDogKF8sICdyaWdodCkgdCAtPiBkZWZhdWx0OidyaWdodCAtPiAncmlnaHRcblxuICAgIHZhbCB2YWx1ZXNcbiAgICAgIDogICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBsZWZ0X2RlZmF1bHQ6J2xlZnRcbiAgICAgIC0+IHJpZ2h0X2RlZmF1bHQ6J3JpZ2h0XG4gICAgICAtPiAnbGVmdCAqICdyaWdodFxuICBlbmRcblxuICB0eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9ICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTJdIHVzZSBbQ29tcGFyYXRvci5Nb2R1bGUudF0gaW5zdGVhZFwiXVxuXG4gICgqKiBUZXN0IGlmIHRoZSBpbnZhcmlhbnRzIG9mIHRoZSBpbnRlcm5hbCBBVkwgc2VhcmNoIHRyZWUgaG9sZC4gKilcbiAgdmFsIGludmFyaWFudHMgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBmaXJzdC1jbGFzcyBtb2R1bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBvdGhlciBtYXAvc2V0L2V0Yy5cbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogVGhlIGVtcHR5IG1hcC4gKilcbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQSBtYXAgd2l0aCBvbmUgKGtleSwgZGF0YSkgcGFpci4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAnYiAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMuICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmFpc2luZyBhbiBleGNlcHRpb24gaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LiAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiBUaGUgYWNjdW11bGF0b3IgaXMgcGVyLWtleS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgIyBsZXQgbWFwID0gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImFcIiwgMTsgXCJhXCIsIDEwOyBcImJcIiwgMjsgXCJiXCIsIDIwOyBcImJcIiwgMjAwIF1cbiAgICAgICAgICAgICAgICAgICAgICB+aW5pdDpJbnQuU2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgfmY6U2V0LmFkZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJpbnRfcyBbJXNleHAgKG1hcCA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTs7XG4gICAgICAgICgoYSAoMSAxMCkpIChiICgyIDIwIDIwMCkpKVxuICAgICAgICAtIDogdW5pdCA9ICgpXG4gICAgICBdfVxuICAqKVxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCgnYyAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBmOigoJ2IgLT4gJ2IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaXRlcmkgfml0ZXJpXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0XSwgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZiB0YWtpbmcgYSBjb25jcmV0ZVxuICAgICAgZGF0YSBzdHJ1Y3R1cmUsIGl0IHRha2VzIGFuIGl0ZXJhdGlvbiBmdW5jdGlvbi4gIEZvciBpbnN0YW5jZSwgdG8gY29udmVydCBhIHN0cmluZyB0YWJsZVxuICAgICAgaW50byBhIG1hcDogW29mX2l0ZXJpIChtb2R1bGUgU3RyaW5nKSB+ZjooSGFzaHRibC5pdGVyaSB0YWJsZSldLiAgSXQgaXMgZmFzdGVyIHRoYW5cbiAgICAgIGFkZGluZyB0aGUgZWxlbWVudHMgb25lIGJ5IG9uZS4gKilcbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaXRlcmk6KChmOigoa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBMaWtlIFtvZl9pdGVyaV0gZXhjZXB0IHRoYXQgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOigoZjooKGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYSBzb3J0ZWQgYXJyYXkgb2Yga2V5LWRhdGEgcGFpcnMuIFRoZSBpbnB1dCBhcnJheSBtdXN0IGJlIHNvcnRlZFxuICAgICAgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlciksIGFzIGdpdmVuIGJ5IHRoZSByZWxldmFudCBjb21wYXJhdG9yLCBhbmRcbiAgICAgIG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlIGtleXMuIElmIGVpdGhlciBvZiB0aGVzZSBjb25kaXRpb25zIGRvZXMgbm90IGhvbGQsXG4gICAgICBhbiBlcnJvciBpcyByZXR1cm5lZC4gICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogTGlrZSBbb2Zfc29ydGVkX2FycmF5XSBleGNlcHQgdGhhdCBpdCByZXR1cm5zIGEgbWFwIHdpdGggYnJva2VuIGludmFyaWFudHMgd2hlbiBhblxuICAgICAgW0Vycm9yXSB3b3VsZCBoYXZlIGJlZW4gcmV0dXJuZWQuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgYyB+bGVuIH5mXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgY1xuICAgICAgKEFycmF5LmluaXQgbGVuIH5mKV0sIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBhIGRlY3JlYXNpbmcgb3JkZXIgaXMgbm90XG4gICAgICBzdXBwb3J0ZWQuICBUaGUgYWR2YW50YWdlIGlzIG5vdCByZXF1aXJpbmcgeW91IHRvIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZSBhcnJheS4gIFtmXVxuICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCAwLCAxLCAuLi4gW2xlbiAtIDFdLCBpbiBvcmRlci4gKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheSBjIChTZXF1ZW5jZS50b19hcnJheVxuICAgICAgc2VxKV0sIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGFycmF5LlxuXG4gICAgICBUaGUgc2VxdWVuY2Ugd2lsbCBiZSBmb2xkZWQgb3ZlciBvbmNlLCBhbmQgdGhlIGFkZGl0aW9uYWwgdGltZSBjb21wbGV4aXR5IGlzIHtlIE8obil9LlxuICAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2UgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3QgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cblxuICAgICAgSWYgeW91ciBzZXF1ZW5jZSBpcyBpbmNyZWFzaW5nLCB1c2UgW29mX2luY3JlYXNpbmdfc2VxdWVuY2VdLlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLlxuXG4gICAgICBbb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3Rfb3JfZXJyb3IgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX2V4biBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9leG4gYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfbXVsdGkgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfZm9sZCBjIHNlcSB+aW5pdCB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9mb2xkIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+aW5pdCB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooKCdjIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gc2VxdWVuY2UgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfcmVkdWNlIGMgc2VxIH5mXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X3JlZHVjZSBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gZjooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ29uc3RydWN0cyBhIG1hcCBmcm9tIGEgbGlzdCBvZiB2YWx1ZXMsIHdoZXJlIFtnZXRfa2V5XSBleHRyYWN0cyBhIGtleSBmcm9tIGEgdmFsdWUuXG4gICopXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5XG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sgXVxuXG4gICgqKiBMaWtlIFtvZl9saXN0X3dpdGhfa2V5XTsgcmV0dXJucyBbRXJyb3JdIG9uIGR1cGxpY2F0ZSBrZXkuICopXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9leG5cbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBsaXN0XG4gICAgLT4gZ2V0X2tleTooKCd2IC0+ICdrKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHByb2R1Y2VzIGxpc3RzIG9mIGFsbCB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2gga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9tdWx0aVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIFRlc3RzIHdoZXRoZXIgYSBtYXAgaXMgZW1wdHkuICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW2xlbmd0aCBtYXBdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBbbWFwXS4gIE8oMSksIGJ1dCBbVHJlZS5sZW5ndGhdIGlzXG4gICAgICBPKG4pLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBuZXcgYmluZGluZzsgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBib3VuZCwgaXRzXG4gICAgICBwcmV2aW91cyBiaW5kaW5nIGRpc2FwcGVhcnMuICopXG4gIHZhbCBzZXQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FkZCB0IH5rZXkgfmRhdGFdIGFkZHMgYSBuZXcgZW50cnkgdG8gW3RdIG1hcHBpbmcgW2tleV0gdG8gW2RhdGFdIGFuZCByZXR1cm5zIFtgT2tdXG4gICAgICB3aXRoIHRoZSBuZXcgbWFwLCBvciBpZiBba2V5XSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gW3RdLCByZXR1cm5zIFtgRHVwbGljYXRlXS4gKilcbiAgdmFsIGFkZCA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuXG4gIHZhbCBhZGRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIElmIFtrZXldIGlzIG5vdCBwcmVzZW50IHRoZW4gYWRkIGEgc2luZ2xldG9uIGxpc3QsIG90aGVyd2lzZSwgY29ucyBkYXRhIG9udG8gdGhlXG4gICAgICBoZWFkIG9mIHRoZSBleGlzdGluZyBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBJZiB0aGUga2V5IGlzIHByZXNlbnQsIHRoZW4gcmVtb3ZlIGl0cyBoZWFkIGVsZW1lbnQ7IGlmIHRoZSByZXN1bHQgaXMgZW1wdHksIHJlbW92ZVxuICAgICAgdGhlIGtleS4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgdGhlIGVtcHR5IGxpc3QgaWYgdGhlcmUgaXMgbm9uZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gJ3YgbGlzdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSByZXR1cm5zIGEgbmV3IG1hcCBbbV0gdGhhdCBpcyB0aGUgc2FtZSBhcyBbdF0gb24gYWxsIGtleXMgZXhjZXB0XG4gICAgICBmb3IgW2tleV0sIGFuZCB3aG9zZSB2YWx1ZSBmb3IgW2tleV0gaXMgZGVmaW5lZCBieSBbZl0sIGkuZS4sIFtmaW5kIG0ga2V5ID0gZiAoZmluZFxuICAgICAgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAna1xuICAgIC0+IGY6KCgndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3VwZGF0ZSB0IGtleSB+Zl0gaXMgW2NoYW5nZSB0IGtleSB+ZjooZnVuIG8gLT4gU29tZSAoZiBvKSldLiAqKVxuICB2YWwgdXBkYXRlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBmOigoJ3Ygb3B0aW9uIC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cblxuICAoKiogUmV0dXJucyBbU29tZSB2YWx1ZV0gYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgW05vbmVdIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gJ3Ygb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIHJhaXNpbmcgW1N0ZGxpYi5Ob3RfZm91bmRdIG9yIFtOb3RfZm91bmRfc11cbiAgICAgIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYW55IGJpbmRpbmcgZm9yIHRoZSBrZXkgaW4gcXVlc3Rpb24gcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbbWVtIG1hcCBrZXldIHRlc3RzIHdoZXRoZXIgW21hcF0gY29udGFpbnMgYSBiaW5kaW5nIGZvciBba2V5XS4gKilcbiAgdmFsIG1lbSA6ICgnaywgXywgJ2NtcCkgdCAtPiAnayAtPiBib29sXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOigoJ2sgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIHVudGlsIHRoZSBmaXJzdCB0aW1lIFtmXSByZXR1cm5zIFtTdG9wXS4gSWYgW2ZdIHJldHVybnMgW1N0b3BdLCB0aGUgZmluYWxcbiAgICAgIHJlc3VsdCBpcyBbVW5maW5pc2hlZF0uIE90aGVyd2lzZSwgdGhlIGZpbmFsIHJlc3VsdCBpcyBbRmluaXNoZWRdLiAqKVxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICAoKiogSXRlcmF0ZXMgdHdvIG1hcHMgc2lkZSBieSBzaWRlLiBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIE8oTSArIE4pLiAgSWYgdHdvXG4gICAgICBpbnB1dHMgYXJlIFtbKDAsIGEpOyAoMSwgYSldXSBhbmQgW1soMSwgYik7ICgyLCBiKV1dLCBbZl0gd2lsbCBiZSBjYWxsZWQgd2l0aCBbWygwLFxuICAgICAgYExlZnQgYSk7ICgxLCBgQm90aCAoYSwgYikpOyAoMiwgYFJpZ2h0IGIpXV0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIHJlcGxhY2VkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuKilcbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCgndjEgLT4gJ3YyKVtAbG9jYWxdKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogQ29udmVydCBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdG8gYSBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdXNpbmcgW2ZdLiAqKVxuICB2YWwgbWFwX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCgnazEgLT4gJ2syKVtAbG9jYWxdKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgKCoqIExpa2UgW21hcF9rZXlzXSwgYnV0IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOigoJ2sxIC0+ICdrMilbQGxvY2FsXSlcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIHRcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0sIHVudGlsIHRoZSBmaXJzdFxuICAgICAgdGltZSB0aGF0IFtmXSByZXR1cm5zIFtTdG9wIF9dLiBJZiBbZl0gcmV0dXJucyBbU3RvcCBmaW5hbF0sIHRoaXMgZnVuY3Rpb24gcmV0dXJuc1xuICAgICAgaW1tZWRpYXRlbHkgd2l0aCB0aGUgdmFsdWUgW2ZpbmFsXS4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIGFuZCB0aGUgZmluYWxcbiAgICAgIGNhbGwgdG8gW2ZdIHJldHVybnMgW0NvbnRpbnVlIGxhc3RdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgW2ZpbmlzaCBsYXN0XS4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgICAgICAgIFtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogRm9sZHMgb3ZlciB0d28gbWFwcyBzaWRlIGJ5IHNpZGUsIGxpa2UgW2l0ZXIyXS4gKilcbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyX21hcGldIHJ1biBpbiBPKG4pXG4gICAgICB0aW1lLlxuXG4gICAgICBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbcGFydGl0aW9uX3RmXSBhbmQgW3BhcnRpdGlvbmlfdGZdIGtlZXAgYSBsb3RcbiAgICAgIG9mIHNoYXJpbmcgYmV0d2VlbiB0aGVpciByZXN1bHQgYW5kIHRoZSBvcmlnaW5hbCBtYXAuICBEcm9wcGluZyBvciBrZWVwaW5nIGEgcnVuIG9mXG4gICAgICBba10gY29uc2VjdXRpdmUgZWxlbWVudHMgY29zdHMgW08obG9nKGspKV0gZXh0cmEgbWVtb3J5LiBLZWVwaW5nIHRoZSBlbnRpcmUgbWFwXG4gICAgICBjb3N0cyBubyBleHRyYSBtZW1vcnkgYXQgYWxsOiBbZmlsdGVyIH5mOihmdW4gXyAtPiB0cnVlKV0gcmV0dXJucyB0aGUgb3JpZ2luYWwgbWFwLlxuICAqKVxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgnayAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlciA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIGZpbHRlcmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuICopXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRha2VzIGJvdGggW2tleV0gYW5kIFtkYXRhXSBhc1xuICAgICAgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcGkgdCB+Zl0gcmV0dXJucyB0d28gbmV3IFt0XXMsIHdpdGggZWFjaCBrZXkgaW4gW3RdIGFwcGVhcmluZyBpblxuICAgICAgZXhhY3RseSBvbmUgb2YgdGhlIHJlc3VsdGluZyBtYXBzIGRlcGVuZGluZyBvbiBpdHMgbWFwcGluZyBpbiBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKV0gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqXG4gICAgIHtbXG4gICAgICAgcGFydGl0aW9uaV90ZiB0IH5mXG4gICAgICAgPVxuICAgICAgIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICBpZiBmIH5rZXkgfmRhdGFcbiAgICAgICAgIHRoZW4gRmlyc3QgZGF0YVxuICAgICAgICAgZWxzZSBTZWNvbmQgZGF0YSlcbiAgICAgXX0gKilcbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogUHJvZHVjZXMgW09rXSBvZiBhIG1hcCBpbmNsdWRpbmcgYWxsIGtleXMgaWYgYWxsIGRhdGEgaXMgW09rXSwgb3IgYW4gW0Vycm9yXVxuICAgICAgaW5jbHVkaW5nIGFsbCBlcnJvcnMgb3RoZXJ3aXNlLiAqKVxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFJldHVybnMgYSB0b3RhbCBvcmRlcmluZyBiZXR3ZWVuIG1hcHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHRvdGFsIG9yZGVyaW5nIHVzZWRcbiAgICAgIHRvIGNvbXBhcmUgZGF0YSBhc3NvY2lhdGVkIHdpdGggZXF1YWwga2V5cyBpbiB0aGUgdHdvIG1hcHMuICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIG1hcHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgbSkuY29tcGFyZV0gb2YgdGhlIG1hcCBbbV0gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnayBIYXNoLmZvbGRlciAtPiAndiBIYXNoLmZvbGRlciAtPiAoJ2ssICd2LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCBjbXAgbTEgbTJdIHRlc3RzIHdoZXRoZXIgdGhlIG1hcHMgW20xXSBhbmQgW20yXSBhcmUgZXF1YWwsIHRoYXQgaXMsIGNvbnRhaW5cbiAgICAgIHRoZSBzYW1lIGtleXMgYW5kIGFzc29jaWF0ZSBlYWNoIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlLiAgW2NtcF0gaXMgdGhlIGVxdWFsaXR5XG4gICAgICBwcmVkaWNhdGUgdXNlZCB0byBjb21wYXJlIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXlzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGtleXMgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sgbGlzdFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgZGF0YSBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgKCoqIENyZWF0ZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBmcm9tIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gKCoqIGRlZmF1bHQgaXMgW2BJbmNyZWFzaW5nXSAqKVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiB7MiBBZGRpdGlvbmFsIG9wZXJhdGlvbnMgb24gbWFwc30gKilcblxuICAoKiogTWVyZ2VzIHR3byBtYXBzLiBUaGUgcnVudGltZSBpcyBPKGxlbmd0aCh0MSkgKyBsZW5ndGgodDIpKS4gWW91IHNob3VsZG4ndCB1c2UgdGhpc1xuICAgICAgZnVuY3Rpb24gdG8gbWVyZ2UgYSBsaXN0IG9mIG1hcHM7IGNvbnNpZGVyIHVzaW5nIFttZXJnZV9za2V3ZWRdIGluc3RlYWQuICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+ICgndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogQSBzcGVjaWFsIGNhc2Ugb2YgW21lcmdlXSwgW21lcmdlX3NrZXdlZCB0MSB0Ml0gaXMgYSBtYXAgY29udGFpbmluZyBhbGwgdGhlXG4gICAgICBiaW5kaW5ncyBvZiBbdDFdIGFuZCBbdDJdLiBCaW5kaW5ncyB0aGF0IGFwcGVhciBpbiBib3RoIFt0MV0gYW5kIFt0Ml0gYXJlXG4gICAgICBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHZhbHVlIHVzaW5nIHRoZSBbY29tYmluZV0gZnVuY3Rpb24uIEluIGEgY2FsbFxuICAgICAgW2NvbWJpbmUgfmtleSB2MSB2Ml0sIHRoZSB2YWx1ZSBbdjFdIGNvbWVzIGZyb20gW3QxXSBhbmQgW3YyXSBmcm9tIFt0Ml0uXG5cbiAgICAgIFRoZSBydW50aW1lIG9mIFttZXJnZV9za2V3ZWRdIGlzIFtPKG1pbihsMSwgbDIpICogbG9nKG1heChsMSwgbDIpKSldLCB3aGVyZSBbbDFdIGlzXG4gICAgICB0aGUgbGVuZ3RoIG9mIFt0MV0gYW5kIFtsMl0gdGhlIGxlbmd0aCBvZiBbdDJdLiBUaGlzIGlzIGxpa2VseSB0byBiZSBmYXN0ZXIgdGhhblxuICAgICAgW21lcmdlXSB3aGVuIG9uZSBvZiB0aGUgbWFwcyBpcyBhIGxvdCBzbWFsbGVyLCBvciB3aGVuIHlvdSBtZXJnZSBhIGxpc3Qgb2YgbWFwcy4gKilcbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tYmluZTooKGtleTonayAtPiAndiAtPiAndiAtPiAndilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgbW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgICAgOiAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsXSByZXR1cm5zIGEgbGlzdCBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS5cbiAgICAgIEl0IGlzIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50XG4gICAgICBvZiBzdHJ1Y3R1cmUuIFRoZSBrZXlzIGluIHRoZSBvdXRwdXQgc2VxdWVuY2Ugd2lsbCBiZSBpbiBzb3J0ZWQgb3JkZXIuXG5cbiAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBbZGF0YV9lcXVhbF0gaXMgYXQgbGVhc3QgYXMgZXF1YXRpbmcgYXMgcGh5c2ljYWwgZXF1YWxpdHk6IHRoYXRcbiAgICAgIFtwaHlzX2VxdWFsIHggeV0gaW1wbGllcyBbZGF0YV9lcXVhbCB4IHldLiBPdGhlcndpc2UsIFtzeW1tZXRyaWNfZGlmZl0gbWF5IGJlaGF2ZSBpblxuICAgICAgdW5leHBlY3RlZCB3YXlzLiBGb3IgZXhhbXBsZSwgd2l0aCBbfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gZmFsc2UpXSBpdCBpcyBOT1RcbiAgICAgIG5lY2Vzc2FyaWx5IHRoZSBjYXNlIHRoZSByZXN1bHRpbmcgY2hhbmdlIHNlcXVlbmNlIHdpbGwgY29udGFpbiBhbiBlbGVtZW50XG4gICAgICBbKGssIGBVbmVxdWFsIF8pXSBmb3IgZXZlcnkga2V5IFtrXSBzaGFyZWQgYnkgYm90aCBtYXBzLlxuXG4gICAgICBXYXJuaW5nOiBGbG9hdCBlcXVhbGl0eSB2aW9sYXRlcyB0aGlzIHByb3BlcnR5ISBbcGh5c19lcXVhbCBGbG9hdC5uYW4gRmxvYXQubmFuXSBpc1xuICAgICAgdHJ1ZSwgYnV0IFtGbG9hdC4oPSkgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXMgZmFsc2UuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gZm9sZHMgYWNyb3NzIGFuIGltcGxpY2l0IHNlcXVlbmNlIG9mIGNoYW5nZXNcbiAgICAgIGJldHdlZW4gW3QxXSBhbmQgW3QyXSwgaW4gc29ydGVkIG9yZGVyIGJ5IGtleXMuIEVxdWl2YWxlbnQgdG9cbiAgICAgIFtTZXF1ZW5jZS5mb2xkIChzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCldLCBhbmQgbW9yZSBlZmZpY2llbnQuICopXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOigoJ3YgLT4gJ3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIFttaW5fZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtaW5pbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogW21heF9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1heGltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIFttYXBdIGlzIGVtcHR5LiAqKVxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBTd2FwIHRoZSBpbm5lciBhbmQgb3V0ZXIga2V5cyBvZiBuZXN0ZWQgbWFwcy4gSWYgW3RyYW5zcG9zZV9rZXlzIG0gYSA9IGJdLCB0aGVuXG4gICAgICBbZmluZF9leG4gKGZpbmRfZXhuIGEgaSkgaiA9IGZpbmRfZXhuIChmaW5kX2V4biBiIGopIGldLiAqKVxuICB2YWwgdHJhbnNwb3NlX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICgnazIsICd2LCAnY21wMikgdCwgJ2NtcDEpIHRcbiAgICAtPiAoJ2syLCAoJ2sxLCAndiwgJ2NtcDEpIHQsICdjbXAyKSB0XG5cbiAgKCoqIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBhcyBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBbTGlzdF0uICopXG5cbiAgdmFsIGZvcl9hbGwgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cblxuICAoKiogW3NwbGl0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrZXldLCB0aGUgbWFwcGluZyBvZiBba2V5XSBpZlxuICAgICAgYW55LCBhbmQgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2xlX2d0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgdGhhdCBhcmUgbGVzcyBvciBlcXVhbCB0byBba2V5XSBhbmQgYVxuICAgICAgbWFwIG9mIGtleXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0X2xlX2d0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbc3BsaXRfbHRfZ2UgdCBrZXldIHJldHVybnMgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tleV0gYW5kIGEgbWFwIG9mXG4gICAgICBrZXlzIHRoYXQgYXJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRfbHRfZ2UgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnRdIHJldHVybnMgW2BPayBtYXBdIHdoZXJlIFttYXBdIGNvbnRhaW5zIGFsbCB0aGVcbiAgICAgIFsoa2V5LCB2YWx1ZSldIHBhaXJzIGZyb20gdGhlIHR3byBpbnB1dCBtYXBzIGlmIGFsbCB0aGUga2V5cyBmcm9tIFtsb3dlcl9wYXJ0XSBhcmVcbiAgICAgIGxlc3MgdGhhbiBhbGwgdGhlIGtleXMgZnJvbSBbdXBwZXJfcGFydF0uICBPdGhlcndpc2UgaXQgcmV0dXJuc1xuICAgICAgW2BPdmVybGFwcGluZ19rZXlfcmFuZ2VzXS5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBuKSB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBsYXJnZXIgaW5wdXQgbWFwLiAgVGhpcyBjYW4gYmVcbiAgICAgIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gW01hcC5tZXJnZV0gb3IgcmVwZWF0ZWQgW01hcC5hZGRdLlxuXG4gICAgICB7W1xuICAgICAgICBhc3NlcnQgKG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgIHwgYE9rIHdob2xlX21hcCAtPlxuICAgICAgICAgICAgTWFwLnRvX2FsaXN0IHdob2xlX21hcFxuICAgICAgICAgICAgPSBMaXN0LmFwcGVuZCAodG9fYWxpc3QgbG93ZXJfcGFydCkgKHRvX2FsaXN0IHVwcGVyX3BhcnQpXG4gICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiB0cnVlKTtcbiAgICAgIF19ICopXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gICgqKiBbc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXSByZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBlbnRyaWVzIGZyb21cbiAgICAgIFt0XSB3aG9zZSBrZXlzIGxpZSBpbnNpZGUgdGhlIGludGVydmFsIGluZGljYXRlZCBieSBbfmxvd2VyX2JvdW5kXSBhbmRcbiAgICAgIFt+dXBwZXJfYm91bmRdLiAgSWYgdGhpcyBpbnRlcnZhbCBpcyBlbXB0eSwgYW4gZW1wdHkgbWFwIGlzIHJldHVybmVkLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgb3V0cHV0IG1hcC4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZVxuICAgICAgb3V0cHV0IG1hcC4gKilcbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmZdIGZvbGRzIFtmXSAod2l0aCBpbml0aWFsIHZhbHVlIFt+aW5pdF0pXG4gICAgICBvdmVyIGFsbCBrZXlzIChhbmQgdGhlaXIgYXNzb2NpYXRlZCB2YWx1ZXMpIHRoYXQgYXJlIGluIHRoZSByYW5nZSBbW21pbiwgbWF4XV1cbiAgICAgIChpbmNsdXNpdmUpLiAgKilcbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IG1pbjona1xuICAgIC0+IG1heDona1xuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXhdIHJldHVybnMgYW4gYXNzb2NpYXRpdmUgbGlzdCBvZiB0aGUgZWxlbWVudHMgd2hvc2Uga2V5c1xuICAgICAgbGllIGluIFtbbWluLCBtYXhdXSAoaW5jbHVzaXZlKSwgd2l0aCB0aGUgc21hbGxlc3Qga2V5IGJlaW5nIGF0IHRoZSBoZWFkIG9mIHRoZVxuICAgICAgbGlzdC4gKilcbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sgLT4gbWF4OidrIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIFtjbG9zZXN0X2tleSB0IGRpciBrXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XSB3aXRoIFtrZXldIGNsb3Nlc3QgdG9cbiAgICAgIFtrXSB0aGF0IHNhdGlzZmllcyB0aGUgZ2l2ZW4gaW5lcXVhbGl0eSBib3VuZC5cblxuICAgICAgRm9yIGV4YW1wbGUsIFtjbG9zZXN0X2tleSB0IGBMZXNzX3RoYW4ga10gd291bGQgYmUgdGhlIHBhaXIgd2l0aCB0aGUgY2xvc2VzdCBrZXkgdG9cbiAgICAgIFtrXSB3aGVyZSBba2V5IDwga10uXG5cbiAgICAgIFt0b19zZXF1ZW5jZV0gY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBzYW1lIHJlc3VsdHMgYXMgW2Nsb3Nlc3Rfa2V5XS4gIEl0IGlzIGxlc3NcbiAgICAgIGVmZmljaWVudCBmb3IgaW5kaXZpZHVhbCBsb29rdXBzIGJ1dCBtb3JlIGVmZmljaWVudCBmb3IgZmluZGluZyBtYW55IGVsZW1lbnRzIHN0YXJ0aW5nXG4gICAgICBhdCBzb21lIHZhbHVlLiAqKVxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdrXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbbnRoIHQgbl0gZmluZHMgdGhlIChrZXksIHZhbHVlKSBwYWlyIG9mIHJhbmsgbiAoaS5lLiwgc3VjaCB0aGF0IHRoZXJlIGFyZSBleGFjdGx5IG5cbiAgICAgIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBmb3VuZCBrZXkpLCBpZiBvbmUgZXhpc3RzLiAgTyhsb2cobGVuZ3RoIHQpICsgbikgdGltZS4gKilcbiAgdmFsIG50aCA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICdrICogJ3ZcblxuICAoKiogW3JhbmsgdCBrXSBJZiBba10gaXMgaW4gW3RdLCByZXR1cm5zIHRoZSBudW1iZXIgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tdIGluXG4gICAgICBbdF0sIGFuZCBbTm9uZV0gb3RoZXJ3aXNlLiAqKVxuICB2YWwgcmFuayA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gaW50IG9wdGlvblxuXG5cblxuICAoKiogW3RvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdF1cbiAgICAgIGdpdmVzIGEgc2VxdWVuY2Ugb2Yga2V5LXZhbHVlIHBhaXJzIGJldHdlZW4gW2tleXNfbGVzc19vcl9lcXVhbF90b10gYW5kXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUsIHByZXNlbnRlZCBpbiBbb3JkZXJdLiAgSWZcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dLCB0aGUgc2VxdWVuY2UgaXNcbiAgICAgIGVtcHR5LlxuXG4gICAgICBXaGVuIG5laXRoZXIgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gbm9yIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFyZVxuICAgICAgcHJvdmlkZWQsIHRoZSBjb3N0IGlzIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSB0byBwcm9kdWNlXG4gICAgICBlYWNoIGVsZW1lbnQuIElmIGVpdGhlciBpcyBwcm92aWRlZCAoYW5kIGlzIHVzZWQgYnkgdGhlIG9yZGVyIHBhcmFtZXRlclxuICAgICAgcHJvdmlkZWQpLCB0aGVuIHRoZSB0aGUgY29zdCBpcyBPKG4pIHVwIGZyb250LCBhbmQgYW1vcnRpemVkIE8oMSkgdG9cbiAgICAgIHByb2R1Y2UgZWFjaCBlbGVtZW50LiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2tcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XVxuICAgICAgc3BlY2lmaWVkIGJ5IFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KChrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICAgICBdXG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBvbiB0aGUgYm91bmRhcnkgb2YgdGhlXG4gICAgICBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZVxuICAgICAgbGVmdCBzZWdtZW50LCB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuXG4gICAgICBJdCByZXR1cm5zIFtOb25lXSBpZiB0aGUgc2VnbWVudCBpcyBlbXB0eS5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtzZWdtZW50X29mXSBzZWdtZW50cyBbdF0gYXMgaW4gdGhlXG4gICAgICBkaWFncmFtLCBhbmQgYmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIGRvZXNuJ3Qgc2VnbWVudCBbdF0uICBCZWhhdmlvclxuICAgICAgaXMgYWxzbyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zdWJyYW5nZV0gdGFrZXMgYSBbY29tcGFyZV0gZnVuY3Rpb24gdGhhdCBkaXZpZGVzIFt0XSBpbnRvIHRocmVlXG4gICAgICAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzIHdpdGggcmVzcGVjdCB0byBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdOlxuXG4gICAgICB7dlxuICAgICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgSW5fcmFuZ2UgfCBBYm92ZV91cHBlcl9ib3VuZCB8XG4gICAgICB2fVxuXG4gICAgICBhbmQgcmV0dXJucyBhIG1hcCBvZiB0aGUgW0luX3JhbmdlXSBzZWdtZW50LlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG0gKyBuKSB3aGVyZSBbbV0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgbWFwIGFuZCBbbl0gaXMgdGhlXG4gICAgICBsZW5ndGggb2YgdGhlIG91dHB1dC4gVGhlIGxpbmVhciB0ZXJtIGluIFtuXSBpcyB0byBjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dC5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIFtjb21wYXJlXSBkb2VzIG5vdCBzZWdtZW50IFt0XSBhcyBzaG93biBhYm92ZSwgb3IgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIGl0cyBpbnB1dHMuICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgdHJhdmVyc2FscyB0byByZWNvbnN0cnVjdCBhIG1hcCB3aXRoaW4gYW4gYXBwbGljYXRpdmUuIFVzZXNcbiAgICAgIFtMYXp5X2FwcGxpY2F0aXZlXSBzbyB0aGF0IHRoZSBtYXAgY2FuIGJlIHRyYXZlcnNlZCB3aXRoaW4gdGhlIGFwcGxpY2F0aXZlLCByYXRoZXJcbiAgICAgIHRoYW4gbmVlZGluZyB0byBiZSB0cmF2ZXJzZWQgYWxsIGF0IG9uY2UsIG91dHNpZGUgdGhlIGFwcGxpY2F0aXZlLiAqKVxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgOiBzaWdcbiAgICB2YWwgbWFwaVxuICAgICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG5cbiAgICB2YWwgZmlsdGVyX21hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbiBBLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCBBLnRcbiAgZW5kXG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IGludCBNYXAuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSAoU3RyaW5nLnQsIGludCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgTWFwLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgTWFwLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kIHN5bnRheFxuICAgICAgZG9lc24ndCAoYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzLCBzYXksIFtTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3NdXG4gICAgICAtLSBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLlxuXG4gICAgICBJbiBhZGRpdGlvbiwgd2hlbiB1c2luZyBbQEBkZXJpdmluZ10sIHRoZSByZXF1aXJlbWVudHMgb24gdGhlIGtleSBtb2R1bGUgYXJlIG9ubHlcbiAgICAgIHRob3NlIG5lZWRlZCB0byBzYXRpc2Z5IHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZGVyaXZlIG9uIHRoZSBtYXAgaXRzZWxmLiBTYXkgeW91XG4gICAgICB3cml0ZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSB0ID0gaW50IE1hcC5NKFgpLnQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIF19XG5cbiAgICAgIHRoZW4gdGhpcyB3aWxsIGJlIHdlbGwgdHlwZWQgZXhhY3RseSBpZiBbWF0gY29udGFpbnMgYXQgbGVhc3Q6XG4gICAgICAtIGEgdHlwZSBbdF0gd2l0aCBubyBwYXJhbWV0ZXJzXG4gICAgICAtIGEgY29tcGFyYXRvciB3aXRuZXNzXG4gICAgICAtIGEgW2hhc2hfZm9sZF90XSBmdW5jdGlvbiB3aXRoIHRoZSByaWdodCB0eXBlICopXG4gIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgna2V5LCAndmFsdWUsICdjbXApIHQgOj0gKCdrZXksICd2YWx1ZSwgJ2NtcCkgdFxuXG4gICgqKiBbVXNpbmdfY29tcGFyYXRvcl0gaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW01hcF0sIGV4Y2VwdCB0aGVcbiAgICAgIGZ1bmN0aW9ucyB0YWtlIGEgW35jb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XSwgd2hlcmVhcyB0aGUgZnVuY3Rpb25zIGF0IHRoZVxuICAgICAgdG9wbGV2ZWwgb2YgW01hcF0gdGFrZSBhIFsoJ2ssICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnaywgKyd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgdHlwZSAoKydrLCArJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAna1xuICAgICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8sIF8pIHRcblxuICAgICAgKCoqIFtCdWlsZF9pbmNyZWFzaW5nXSBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBtYXAgaW5jcmVtZW50YWxseSBmcm9tIGFcbiAgICAgICAgICBzZXF1ZW5jZSB0aGF0IGlzIGtub3duIHRvIGJlIGluY3JlYXNpbmcuXG5cbiAgICAgICAgICBUaGUgdG90YWwgdGltZSBjb21wbGV4aXR5IG9mIGNvbnN0cnVjdGluZyBhIG1hcCB0aGlzIHdheSBpcyBPKG4pLCB3aGljaCBpcyBtb3JlXG4gICAgICAgICAgZWZmaWNpZW50IHRoYW4gdXNpbmcgW01hcC5hZGRdIGJ5IGEgbG9nYXJpdGhtaWMgZmFjdG9yLlxuXG4gICAgICAgICAgVGhpcyBpbnRlcmZhY2UgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBkdWFsIG9mIFt0b19zZXF1ZW5jZV0sIGJ1dCB3ZSBkb24ndCBoYXZlXG4gICAgICAgICAgYW4gZXF1YWxseSBuZWF0IGlkaW9tIGZvciB0aGUgZHVhbHMgb2Ygc2VxdWVuY2VzIChbb2Zfc2VxdWVuY2VdIGlzIG11Y2ggbGVzc1xuICAgICAgICAgIGdlbmVyYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgc2VxdWVuY2UgdG8gYmUgcHJvZHVjZWQgYXN5bmNocm9ub3VzbHkpLiAqKVxuICAgICAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB0eXBlICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgdmFsIGVtcHR5IDogKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IG9mIFthZGRfZXhuXSBpcyBhbW9ydGl6ZWQgY29uc3RhbnQtdGltZSAoaWYgW3RdIGlzIHVzZWRcbiAgICAgICAgICAgIGxpbmVhcmx5KSwgd2l0aCBhIHdvcnN0LWNhc2UgTyhsb2cobikpIHRpbWUuICopXG4gICAgICAgIHZhbCBhZGRfZXhuXG4gICAgICAgICAgOiAgKCdrLCAndiwgJ3cpIHRcbiAgICAgICAgICAtPiBjb21wYXJhdG9yOignaywgJ3cpIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+IGtleTona1xuICAgICAgICAgIC0+IGRhdGE6J3ZcbiAgICAgICAgICAtPiAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgICgqKiBUaW1lIGNvbXBsZXhpdHkgaXMgTyhsb2cobikpLiAqKVxuICAgICAgICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICd3KSB0IC0+ICgnaywgJ3YsICd3KSB0cmVlXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAna1xuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3RcbiAgICAgIDogICdrIEhhc2guZm9sZGVyXG4gICAgICAtPiAndiBIYXNoLmZvbGRlclxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgKCoqIFRvIGdldCBhcm91bmQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uLCBhcHBseSB0aGUgZnVuY3RvciBhbmQgaW5jbHVkZSBpdC4gWW91XG4gICAgICAgIGNhbiBzZWUgYW4gZXhhbXBsZSBvZiB0aGlzIGluIHRoZSBbUG9seV0gc3VibW9kdWxlIGJlbG93LiAqKVxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBNYXAuICopXG4gIG1vZHVsZSBQb2x5IDpcbiAgICBTX3BvbHlcbiAgICB3aXRoIHR5cGUgKCdrZXksICsndmFsdWUpIHQgPSAoJ2tleSwgJ3ZhbHVlLCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgIGFuZCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0cmVlID1cbiAgICAgICAgICAgKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICgqKiBDcmVhdGUgYSBtYXAgZnJvbSBhIHRyZWUgdXNpbmcgdGhlIGdpdmVuIGNvbXBhcmF0b3IuICopXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIEV4dHJhY3QgYSB0cmVlIGZyb20gYSBtYXAuICopXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG5cbiAgKCoqIHsyIE1vZHVsZXMgYW5kIG1vZHVsZSB0eXBlcyBmb3IgZXh0ZW5kaW5nIFtNYXBdfVxuXG4gICAgICBGb3IgdXNlIGluIGV4dGVuc2lvbnMgb2YgQmFzZSwgbGlrZSBbQ29yZV0uICopXG5cbiAgbW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFdpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxuICBtb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gV2l0aG91dF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwX2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxubW9kdWxlIE5hbWVkID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzZXQgOiAnYVxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5HZW5lcmljXG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICAoKiogVGhlIFthY2Nlc3Nfb3B0aW9uc10gdHlwZSBpcyB1c2VkIHRvIG1ha2UgW0FjY2Vzc29yc19nZW5lcmljXSBmbGV4aWJsZSBhcyB0byB3aGV0aGVyXG4gICAgICBhIGNvbXBhcmF0b3IgaXMgcmVxdWlyZWQgdG8gYmUgcGFzc2VkIHRvIGNlcnRhaW4gZnVuY3Rpb25zLiAqKVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGFjY2Vzc19vcHRpb25zXG5cbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcblxuICAoKiogb3ZlcnJpZGUgW0NvbnRhaW5lcl0ncyBbbWVtXSAqKVxuICB2YWwgbWVtIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdW5pb24gOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnYSBlbHQpIEVpdGhlci50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldFxuICAgICAgOiAoICdhXG4gICAgICAgICwgJ2NtcFxuICAgICAgICAsICgnYSwgJ2NtcCkgdCBOYW1lZC50IC0+IG9mXzooJ2EsICdjbXApIHQgTmFtZWQudCAtPiB1bml0IE9yX2Vycm9yLnQgKVxuICAgICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogKCAnYVxuICAgICAgICAsICdjbXBcbiAgICAgICAgLCAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiB1bml0IE9yX2Vycm9yLnQgKVxuICAgICAgICAgIGFjY2Vzc19vcHRpb25zXG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYSBlbHQgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGY6XG4gICAgICAgICAgICgoWyBgTGVmdCBvZiAnYSBlbHQgfCBgUmlnaHQgb2YgJ2EgZWx0IHwgYEJvdGggb2YgJ2EgZWx0ICogJ2EgZWx0IF0gLT4gdW5pdClcbiAgICAgICAgICAgIFtAbG9jYWxdKVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogJ2EgZWx0IG9wdGlvbiAqICgnYSwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNwbGl0X2xlX2d0XG4gICAgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sdF9nZVxuICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZ3JvdXBfYnlcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBlcXVpdjooKCdhIGVsdCAtPiAnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHQgbGlzdFxuXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIGVsdFxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnY21wIGNtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gJ2EgZWx0IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgZWx0IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAnYSBlbHQgb3B0aW9uIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KCgnYSBlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSBlbHQsICdhIGVsdCkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGVsdFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCwgJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXAsICdhIGVsdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wLCAnYSBlbHQgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICgnYSwgJ2NtcCwgbGVuOmludCAtPiBmOigoaW50IC0+ICdhIGVsdClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICgnYSwgXywgJ2EgZWx0IGxpc3QgLT4gJ2EgZWx0IGxpc3QpIGNyZWF0ZV9vcHRpb25zXG5cbiAgKCoqIFRoZSB0eXBlcyBvZiBbbWFwXSBhbmQgW2ZpbHRlcl9tYXBdIGFyZSBzdWJ0bGUuICBUaGUgaW5wdXQgc2V0LCBbKCdhLCBfKSBzZXRdLFxuICAgICAgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBhIHNldCBvZiAqYW55KiB0eXBlLCB3aXRoIGFueVxuICAgICAgY29tcGFyYXRvciwgd2hpbGUgdGhlIG91dHB1dCBzZXQsIFsoJ2IsICdjbXApIHRdLCByZWZsZWN0cyB0aGF0IHRoZSBvdXRwdXQgc2V0IGhhc1xuICAgICAgdGhlIHBhcnRpY3VsYXIgWydjbXBdIG9mIHRoZSBjcmVhdGlvbiBmdW5jdGlvbi4gIFRoZSBjb21wYXJhdG9yIGNhbiBjb21lIGluIG9uZSBvZlxuICAgICAgdGhyZWUgd2F5cywgZGVwZW5kaW5nIG9uIHdoaWNoIHNldCBtb2R1bGUgaXMgdXNlZFxuXG4gICAgICAtIFtTZXQubWFwXSAtLSBjb21wYXJhdG9yIGNvbWVzIGFzIGFuIGFyZ3VtZW50XG4gICAgICAtIFtTZXQuUG9seS5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgcG9seW1vcnBoaWMgY29tcGFyaXNvblxuICAgICAgLSBbRm9vLlNldC5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgW0Zvby5jb21wYXJhdG9yXSAqKVxuICB2YWwgbWFwXG4gICAgOiAoJ2IsICdjbXAsICgnYSwgXykgc2V0IC0+IGY6KCgnYSAtPiAnYiBlbHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogKCAnYlxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgXykgc2V0IC0+IGY6KCgnYSAtPiAnYiBlbHQgb3B0aW9uKVtAbG9jYWxdKSAtPiAoJ2IsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdhLCAnY21wLCAoJ2EgZWx0LCAnY21wIGNtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdlbHQsICdjbXApIHRcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdHJlZVxuICB0eXBlICdlbHQgZWx0XG4gIHR5cGUgJ2NtcCBjbXBcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgJ2VsdCB0XG4gIHR5cGUgJ2VsdCB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2VsdCwgJ2NtcCkgdCA6PSAnZWx0IHRcbiAgICB3aXRoIHR5cGUgKCdlbHQsICdjbXApIHRyZWUgOj0gJ2VsdCB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3QgOiAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCAnY21wKSB0IC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+ICgnZWx0LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdCA6IChtb2R1bGUgQ29tcGFyZV9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsX21fX3QgOiAobW9kdWxlIEVxdWFsX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdlbHQsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5cbiAgdmFsIGhhc2hfbV9fdCA6IChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgXykgdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgKCoqIFNldHMgYmFzZWQgb24geyFDb21wYXJhdG9yLlN9LlxuXG4gICAgICBDcmVhdG9ycyByZXF1aXJlIGEgY29tcGFyYXRvciBhcmd1bWVudCB0byBiZSBwYXNzZWQgaW4sIHdoZXJlYXMgYWNjZXNzb3JzIHVzZSB0aGVcbiAgICAgIGNvbXBhcmF0b3IgcHJvdmlkZWQgYnkgdGhlIGlucHV0IHNldC4gKilcblxuICAoKiogVGhlIHR5cGUgb2YgYSBzZXQuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCwgYW5kXG4gICAgICB0aGUgc2Vjb25kIGlkZW50aWZpZXMgdGhlIGNvbXBhcmF0b3IsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gdGhhdFxuICAgICAgaXMgdXNlZCBmb3Igb3JkZXJpbmcgZWxlbWVudHMgaW4gdGhpcyBzZXQuICBNYW55IG9wZXJhdGlvbnMgKGUuZy4sIHshdW5pb259KSxcbiAgICAgIHJlcXVpcmUgdGhhdCB0aGV5IGJlIHBhc3NlZCBzZXRzIHdpdGggdGhlIHNhbWUgZWxlbWVudCB0eXBlIGFuZCB0aGUgc2FtZSBjb21wYXJhdG9yXG4gICAgICB0eXBlLiAqKVxuICB0eXBlICghJ2VsdCwgISdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCEnZWx0LCAhJ2NtcCkgdCA6PSAoJ2VsdCwgJ2NtcCkgdFxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdHMgaW50ZXJuYWwgaW52YXJpYW50cyBvZiB0aGUgc2V0IGRhdGEgc3RydWN0dXJlLiAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGNcbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogQ3JlYXRlcyBhbiBlbXB0eSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIHNldCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29tcGFyYXRvciB0aGF0IGNvbnRhaW5zIG9ubHkgdGhlIHByb3ZpZGVkXG4gICAgICBlbGVtZW50LiAqKVxuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGUgc2V0LiBbTygxKV0uICopXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcblxuICAoKiogW2lzX2VtcHR5IHRdIGlzIFt0cnVlXSBpZmYgW3RdIGlzIGVtcHR5LiAgW08oMSldLiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFttZW0gdCBhXSByZXR1cm5zIFt0cnVlXSBpZmYgW2FdIGlzIGluIFt0XS4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gYm9vbFxuXG4gICgqKiBbYWRkIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gYWRkZWQgdG8gW3RdLCBvciByZXR1cm5zIFt0XSBpZiBbbWVtIHQgYV0uXG4gICAgICBbTyhsb2cgbildLiAqKVxuICB2YWwgYWRkIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbcmVtb3ZlIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gcmVtb3ZlZCBmcm9tIFt0XSBpZiBbbWVtIHQgYV0sIG9yIHJldHVybnMgW3RdXG4gICAgICBvdGhlcndpc2UuICBbTyhsb2cgbildLiAqKVxuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gdDEgdDJdIHJldHVybnMgdGhlIHVuaW9uIG9mIHRoZSB0d28gc2V0cy4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgdW5pb24gOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gYyBsaXN0XSByZXR1cm5zIHRoZSB1bmlvbiBvZiBhbGwgdGhlIHNldHMgaW4gW2xpc3RdLiAgVGhlXG4gICAgICBbY29tcGFyYXRvcl0gYXJndW1lbnQgaXMgcmVxdWlyZWQgZm9yIHRoZSBjYXNlIHdoZXJlIFtsaXN0XSBpcyBlbXB0eS5cbiAgICAgIFtPKG1heChMaXN0Lmxlbmd0aCBsaXN0LCBuIGxvZyBuKSldLCB3aGVyZSBbbl0gaXMgdGhlIHN1bSBvZiBzaXplcyBvZiB0aGUgaW5wdXQgc2V0cy4gKilcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtpbnRlciB0MSB0Ml0gY29tcHV0ZXMgdGhlIGludGVyc2VjdGlvbiBvZiBzZXRzIFt0MV0gYW5kIFt0Ml0uICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtkaWZmIHQxIHQyXSBjb21wdXRlcyB0aGUgc2V0IGRpZmZlcmVuY2UgW3QxIC0gdDJdLCBpLmUuLCB0aGUgc2V0IGNvbnRhaW5pbmcgYWxsXG4gICAgICBlbGVtZW50cyBpbiBbdDFdIHRoYXQgYXJlIG5vdCBpbiBbdDJdLiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBkaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyXSByZXR1cm5zIGEgc2VxdWVuY2Ugb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uIEl0IGlzXG4gICAgICBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudCBvZlxuICAgICAgc3RydWN0dXJlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcblxuICAoKiogW2NvbXBhcmVfZGlyZWN0IHQxIHQyXSBjb21wYXJlcyB0aGUgc2V0cyBbdDFdIGFuZCBbdDJdLiAgSXQgcmV0dXJucyB0aGUgc2FtZSByZXN1bHRcbiAgICAgIGFzIFtjb21wYXJlXSwgYnV0IHVubGlrZSBjb21wYXJlLCBkb2Vzbid0IHJlcXVpcmUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbiBmb3IgdGhlXG4gICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIHNldC4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludFxuXG4gICgqKiBIYXNoIGZ1bmN0aW9uOiBhIGJ1aWxkaW5nIGJsb2NrIHRvIHVzZSB3aGVuIGhhc2hpbmcgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgc2V0cyBpblxuICAgICAgdGhlbS4gW2hhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFtjb21wYXJlX2RpcmVjdF0gaWZmXG4gICAgICBbaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFsoY29tcGFyYXRvciBzKS5jb21wYXJlXSBvZiB0aGUgc2V0IFtzXSBiZWluZ1xuICAgICAgaGFzaGVkLiAqKVxuICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdhIEhhc2guZm9sZGVyIC0+ICgnYSwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgdDEgdDJdIHJldHVybnMgW3RydWVdIGlmZiB0aGUgdHdvIHNldHMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cy4gIFtPKGxlbmd0aCB0MSArXG4gICAgICBsZW5ndGggdDIpXSAqKVxuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2V4aXN0cyB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlcmUgZXhpc3RzIGFuIFthXSBpbiBbdF0gZm9yIHdoaWNoIFtmIGFdLiAgW08obildLFxuICAgICAgYnV0IHJldHVybnMgYXMgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtmIGFdLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFtmb3JfYWxsIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiBmb3IgYWxsIFthXSBpbiBbdF0sIFtmIGFdLiAgW08obildLCBidXQgcmV0dXJucyBhc1xuICAgICAgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtub3QgKGYgYSldLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBbY291bnQgdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgW3RydWVdLlxuICAgICAgW08obildLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBbc3VtIHRdIHJldHVybnMgdGhlIHN1bSBvZiBbZiB0XSBmb3IgZWFjaCBbdF0gaW4gdGhlIHNldC5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFtmaW5kIHQgZl0gcmV0dXJucyBhbiBlbGVtZW50IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgdHJ1ZSwgd2l0aCBubyBndWFyYW50ZWUgYXNcbiAgICAgIHRvIHdoaWNoIGVsZW1lbnQgaXMgcmV0dXJuZWQuICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZSBlbGVtZW50IGlzXG4gICAgICBmb3VuZC4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbZmluZF9tYXAgdCBmXSByZXR1cm5zIFtiXSBmb3Igc29tZSBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhID0gU29tZSBiXS4gIElmIG5vIHN1Y2hcbiAgICAgIFthXSBleGlzdHMsIHRoZW4gW2ZpbmRdIHJldHVybnMgW05vbmVdLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGVcbiAgICAgIGVsZW1lbnQgaXMgZm91bmQuICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICAoKiogTGlrZSBbZmluZF0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGZhaWx1cmUuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcblxuICAoKiogW250aCB0IGldIHJldHVybnMgdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgb2YgW3RdLCBpbiBbTyhsb2cgbildIHRpbWUuICBUaGVcbiAgICAgIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFtOb25lXSBpZiBbaSA8IDBdIG9yIFtpID49IGxlbmd0aCB0XS4gKilcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtyZW1vdmVfaW5kZXggdCBpXSByZXR1cm5zIGEgdmVyc2lvbiBvZiBbdF0gd2l0aCB0aGUgW2lddGggc21hbGxlc3QgZWxlbWVudCByZW1vdmVkLFxuICAgICAgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFt0XSBpZiBbaSA8IDBdIG9yXG4gICAgICBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaXNfc3Vic2V0IHQxIH5vZl86dDJdIHJldHVybnMgdHJ1ZSBpZmYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdLiAqKVxuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbYXJlX2Rpc2pvaW50IHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgW2lzX2VtcHR5IChpbnRlciB0MSB0MildLCBidXQgaXMgbW9yZVxuICAgICAgZWZmaWNpZW50LiAqKVxuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtOYW1lZF0gYWxsb3dzIHRoZSB2YWxpZGF0aW9uIG9mIHN1YnNldCBhbmQgZXF1YWxpdHkgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHNldHMuICBBXG4gICAgICBbTmFtZWQudF0gaXMgYSByZWNvcmQgb2YgYSBzZXQgYW5kIGEgbmFtZSwgd2hlcmUgdGhlIG5hbWUgaXMgdXNlZCBpbiBlcnJvciBtZXNzYWdlcyxcbiAgICAgIGFuZCBbTmFtZWQuaXNfc3Vic2V0XSBhbmQgW05hbWVkLmVxdWFsXSB2YWxpZGF0ZSBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHNcbiAgICAgIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgZm9yLCBlLmcuLFxuICAgICAge1tcbiAgICAgICAgTmFtZWQuaXNfc3Vic2V0IHsgc2V0ID0gc2V0MTsgbmFtZSA9IFwic2V0MVwiIH0gfm9mXzp7c2V0ID0gc2V0MjsgbmFtZSA9IFwic2V0MlwiIH1cbiAgICAgIF19XG5cbiAgICAgIGxvb2tzIGxpa2VcbiAgICAgIHt2XG4gICAgICAgIChcInNldDEgaXMgbm90IGEgc3Vic2V0IG9mIHNldDJcIiAoaW52YWxpZF9lbGVtZW50cyAoLi4uZWxlbWVudHMgb2Ygc2V0MSAtIHNldDIuLi4pKSlcbiAgICAgICB2fVxuXG4gICAgICBzbyBbbmFtZV0gc2hvdWxkIGJlIGEgbm91biBwaHJhc2UgdGhhdCBkb2Vzbid0IHNvdW5kIGF3a3dhcmQgaW4gdGhlIGFib3ZlIGVycm9yXG4gICAgICBtZXNzYWdlLiAgRXZlbiB0aG91Z2ggaXQgYWRkcyB2ZXJib3NpdHksIGNob29zaW5nIFtuYW1lXXMgdGhhdCBzdGFydCB3aXRoIHRoZSBwaHJhc2VcbiAgICAgIFwidGhlIHNldCBvZlwiIG9mdGVuIG1ha2VzIHRoZSBlcnJvciBtZXNzYWdlIHNvdW5kIG1vcmUgbmF0dXJhbC5cbiAgKilcbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdHlwZSAoJ2EsICdjbXApIHNldCA6PSAoJ2EsICdjbXApIHRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIE5hbWVkLnQgPVxuICAgICAgeyBzZXQgOiAnYVxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdIGFuZCBhXG4gICAgICAgIGh1bWFuLXJlYWRhYmxlIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgc2V0IHQgLT4gb2ZfOignYSwgJ2NtcCkgc2V0IHQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBlcXVhbCB0byBbdDJdIGFuZCBhIGh1bWFuLXJlYWRhYmxlXG4gICAgICAgIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSBzZXQgdCAtPiAoJ2EsICdjbXApIHNldCB0IC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICAoKiogVGhlIGxpc3Qgb3IgYXJyYXkgZ2l2ZW4gdG8gW29mX2xpc3RdIGFuZCBbb2ZfYXJyYXldIG5lZWQgbm90IGJlIHNvcnRlZC4gKilcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdG9fbGlzdF0gYW5kIFt0b19hcnJheV0gcHJvZHVjZSBzZXF1ZW5jZXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICBjb21wYXJhdG9yLiAqKVxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG5cbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIENyZWF0ZSBzZXQgZnJvbSBzb3J0ZWQgYXJyYXkuICBUaGUgaW5wdXQgbXVzdCBiZSBzb3J0ZWQgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3JcbiAgICAgIGRlc2NlbmRpbmcgb3JkZXIgYXMgZ2l2ZW4gYnkgdGhlIGNvbXBhcmF0b3IpIGFuZCBjb250YWluIG5vIGR1cGxpY2F0ZXMsIG90aGVyd2lzZSB0aGVcbiAgICAgIHJlc3VsdCBpcyBhbiBlcnJvci4gIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgW08obildLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBTaW1pbGFyIHRvIFtvZl9zb3J0ZWRfYXJyYXldLCBidXQgd2l0aG91dCBjaGVja2luZyB0aGUgaW5wdXQgYXJyYXkuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3RhYmxlX2RlZHVwX2xpc3RdIGlzIGhlcmUgcmF0aGVyIHRoYW4gaW4gdGhlIFtMaXN0XSBtb2R1bGUgYmVjYXVzZSB0aGVcbiAgICAgIGltcGxlbWVudGF0aW9uIHJlbGllcyBjcnVjaWFsbHkgb24gc2V0cywgYW5kIGJlY2F1c2UgZG9pbmcgc28gYWxsb3dzIG9uZSB0byBhdm9pZCB1c2VzXG4gICAgICBvZiBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGZ1bmN0b3IgYXQgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25cbiAgICAgIG9mIFtDb21wYXJhdG9yXSBhbmQgdXNpbmcgdGhlIHJlc3VsdGluZyBbc3RhYmxlX2RlZHVwX2xpc3RdLiAqKVxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgKCoqIFttYXAgYyB0IH5mXSByZXR1cm5zIGEgbmV3IHNldCBjcmVhdGVkIGJ5IGFwcGx5aW5nIFtmXSB0byBldmVyeSBlbGVtZW50IGluXG4gICAgICBbdF0uICBUaGUgcmV0dXJuZWQgc2V0IGlzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBbY29tcGFyYXRvcl0uICBbTyhuIGxvZyBuKV0uICopXG4gIHZhbCBtYXBcbiAgICA6ICAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgeyFtYXB9LCBleGNlcHQgZWxlbWVudHMgZm9yIHdoaWNoIFtmXSByZXR1cm5zIFtOb25lXSB3aWxsIGJlIGRyb3BwZWQuICAqKVxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyB0aGUgc3Vic2V0IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAgW08obiBsb2dcbiAgICAgIG4pXS4gKilcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0byBsYXJnZXN0LiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdCwgc2hvcnQgY2lyY3VpdGluZyB0aGUgZm9sZCBpZiBbZiBhY2N1bSB4XSBpcyBhbiBbRXJyb3IgX10gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cblxuICAoKiogTGlrZSB7IWZvbGR9LCBleGNlcHQgdGhhdCBpdCBnb2VzIGZyb20gdGhlIGxhcmdlc3QgdG8gdGhlIHNtYWxsZXN0IGVsZW1lbnQuICopXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2EgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtpdGVyIHQgfmZdIGNhbGxzIFtmXSBvbiBldmVyeSBlbGVtZW50IG9mIFt0XSwgZ29pbmcgaW4gb3JkZXIgZnJvbSB0aGUgc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QuICAqKVxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlIHR3byBzZXRzIHNpZGUgYnkgc2lkZS4gIENvbXBsZXhpdHkgaXMgW08obStuKV0gd2hlcmUgW21dIGFuZCBbbl0gYXJlIHRoZSBzaXplc1xuICAgICAgb2YgdGhlIHR3byBpbnB1dCBzZXRzLiAgQXMgYW4gZXhhbXBsZSwgd2l0aCB0aGUgaW5wdXRzIFswOyAxXSBhbmQgWzE7IDJdLCBbZl0gd2lsbCBiZVxuICAgICAgY2FsbGVkIHdpdGggW2BMZWZ0IDBdOyBbYEJvdGggKDEsIDEpXTsgYW5kIFtgUmlnaHQgMl0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KChbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBpZiBbYSwgYiA9IHBhcnRpdGlvbl90ZiBzZXQgfmZdIHRoZW4gW2FdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZWQgW3RydWVdLFxuICAgICAgYW5kIFtiXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VzIFtmYWxzZV0uICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogU2FtZSBhcyB7IXRvX2xpc3R9LiAqKVxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBzZXQuICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1pbl9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFJldHVybnMgdGhlIGxhcmdlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gICopXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshbWF4X2VsdH0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogcmV0dXJucyBhbiBhcmJpdHJhcnkgZWxlbWVudCwgb3IgW05vbmVdIGlmIHRoZSBzZXQgaXMgZW1wdHkuICopXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFjaG9vc2V9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFtzcGxpdCB0IHhdIHByb2R1Y2VzIGEgdHJpcGxlIFsodDEsIG1heWJlX3gsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLFxuICAgICAgW21heWJlX3hdIGlzIHRoZSBtZW1iZXIgKGlmIGFueSkgb2YgW3RdIHdoaWNoIGNvbXBhcmVzIGVxdWFsIHRvIFt4XSxcbiAgICAgIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsYXJnZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2xlX2d0IHQgeF0gcHJvZHVjZXMgYSBwYWlyIFsodDEsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gW3hdLFxuICAgICAgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdF9sZV9ndCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2x0X2dlIHQgeF0gcHJvZHVjZXMgYSBwYWlyIFsodDEsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLFxuICAgICAgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBbeF0uICopXG4gIHZhbCBzcGxpdF9sdF9nZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogaWYgW2VxdWl2XSBpcyBhbiBlcXVpdmFsZW5jZSBwcmVkaWNhdGUsIHRoZW4gW2dyb3VwX2J5IHNldCB+ZXF1aXZdIHByb2R1Y2VzIGEgbGlzdFxuICAgICAgb2YgZXF1aXZhbGVuY2UgY2xhc3NlcyAoaS5lLiwgYSBzZXQtdGhlb3JldGljIHF1b3RpZW50KS4gIEUuZy4sXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBjaGFycyA9IFNldC5vZl9saXN0IFsnQSc7ICdhJzsgJ2InOyAnYyddIGluXG4gICAgICAgIGxldCBlcXVpdiBjIGMnID0gQ2hhci5lcXVhbCAoQ2hhci51cHBlcmNhc2UgYykgKENoYXIudXBwZXJjYXNlIGMnKSBpblxuICAgICAgICBncm91cF9ieSBjaGFycyB+ZXF1aXZcbiAgICAgIF19XG5cbiAgICAgIHByb2R1Y2VzOlxuXG4gICAgICB7W1xuICAgICAgICBbU2V0Lm9mX2xpc3QgWydBJzsnYSddOyBTZXQuc2luZ2xldG9uICdiJzsgU2V0LnNpbmdsZXRvbiAnYyddXG4gICAgICBdfVxuXG4gICAgICBbZ3JvdXBfYnldIHJ1bnMgaW4gTyhuXjIpIHRpbWUsIHNvIGlmIHlvdSBoYXZlIGEgY29tcGFyaXNvbiBmdW5jdGlvbiwgaXQncyB1c3VhbGx5XG4gICAgICBtdWNoIGZhc3RlciB0byB1c2UgW1NldC5vZl9saXN0XS4gKilcbiAgdmFsIGdyb3VwX2J5IDogKCdhLCAnY21wKSB0IC0+IGVxdWl2OigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICAoKiogW3RvX3NlcXVlbmNlIHRdIGNvbnZlcnRzIHRoZSBzZXQgW3RdIHRvIGEgc2VxdWVuY2Ugb2YgdGhlIGVsZW1lbnRzIGJldHdlZW5cbiAgICAgIFtncmVhdGVyX29yX2VxdWFsX3RvXSBhbmQgW2xlc3Nfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSBpbiB0aGUgb3JkZXIgaW5kaWNhdGVkIGJ5XG4gICAgICBbb3JkZXJdLiAgSWYgW2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBsZXNzX29yX2VxdWFsX3RvXSB0aGUgc2VxdWVuY2UgaXMgZW1wdHkuICBDb3N0IGlzXG4gICAgICBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgZm9yIGVhY2ggZWxlbWVudCBwcm9kdWNlZC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIGVsZW1lbnQgaW4gW3RdIHNwZWNpZmllZCBieVxuICAgICAgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2tleSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2YgdGhlIHNlZ21lbnRzIGFzXG4gICAgICBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBsZWZ0IHNlZ21lbnQsXG4gICAgICB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuICBJdCByZXR1cm5zXG4gICAgICBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOigoJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFByb2R1Y2VzIHRoZSBlbGVtZW50cyBvZiB0aGUgdHdvIHNldHMgYmV0d2VlbiBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kXG4gICAgICBbbGVzc19vcl9lcXVhbF90b10gaW4gW29yZGVyXSwgbm90aW5nIHdoZXRoZXIgZWFjaCBlbGVtZW50IGFwcGVhcnMgaW4gdGhlIGxlZnQgc2V0LFxuICAgICAgdGhlIHJpZ2h0IHNldCwgb3IgYm90aC4gIEluIHRoZSBib3RoIGNhc2UsIGJvdGggZWxlbWVudHMgYXJlIHJldHVybmVkLCBpbiBjYXNlIHRoZVxuICAgICAgY2FsbGVyIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQgYXJlIGVxdWFsIHRvIHRoZSBzZXRzJyBjb21wYXJhdG9yLiAgUnVuc1xuICAgICAgaW4gTyhsZW5ndGggdCArIGxlbmd0aCB0JykuICopXG4gIG1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgICB8IExlZnQgb2YgJ2FcbiAgICAgIHwgUmlnaHQgb2YgJ2JcbiAgICAgIHwgQm90aCBvZiAnYSAqICdiXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IFNldC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfc2V0ID0gKFN0cmluZy50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBTZXQudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW1NldC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3MsXG4gICAgICBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLiAqKVxuICBtb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKiBBIHBvbHltb3JwaGljIFNldC4gKilcbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICdlbHQgdCA9ICgnZWx0LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgKCoqIFVzaW5nIGNvbXBhcmF0b3IgaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW1NldF0sIGV4Y2VwdCB0aGUgZnVuY3Rpb25zXG4gICAgICB0YWtlIGEgW35jb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRdIHdoZXJlIHRoZSBmdW5jdGlvbnMgYXQgdGhlIHRvcGxldmVsIG9mXG4gICAgICBbU2V0XSB0YWtlcyBhIFsoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnZWx0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgKCoqIEEgW1RyZWUudF0gY29udGFpbnMganVzdCB0aGUgdHJlZSBkYXRhIHN0cnVjdHVyZSB0aGF0IGEgc2V0IGlzIGJhc2VkIG9uLCB3aXRob3V0XG4gICAgICAgICAgaW5jbHVkaW5nIHRoZSBjb21wYXJhdG9yLiAgQWNjb3JkaW5nbHksIGFueSBvcGVyYXRpb24gb24gYSBbVHJlZS50XSBtdXN0IGFsc28gdGFrZVxuICAgICAgICAgIGFzIGFuIGFyZ3VtZW50IHRoZSBjb3JyZXNwb25kaW5nIGNvbXBhcmF0b3IuICopXG4gICAgICB0eXBlICgnYSwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2VsdClcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8pIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2VsdCBIYXNoLmZvbGRlciAtPiAoJ2VsdCwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhLCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbU2V0XX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgRWx0X3BsYWluID0gRWx0X3BsYWluXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNldF9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFbXB0eVxuICAgICgqIChMZWFmIHgpIGlzIHRoZSBzYW1lIGFzIChOb2RlIChFbXB0eSwgeCwgRW1wdHksIDEsIDEpKSBidXQgdXNlcyBsZXNzIHNwYWNlLiAqKVxuICAgIHwgTGVhZiBvZiAnYVxuICAgICgqIGZpcnN0IGludCBpcyBoZWlnaHQsIHNlY29uZCBpcyBzdWItdHJlZSBzaXplICopXG4gICAgfCBOb2RlIG9mICdhIHQgKiAnYSAqICdhIHQgKiBpbnQgKiBpbnRcblxuICB0eXBlICdhIHRyZWUgPSAnYSB0XG5cbiAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGUgY2hpbGRyZW4gZGlmZmVyIGJ5XG4gICAgIGF0IG1vc3QgMi4gKilcbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHYgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2VsdCBsb3dlciB2IDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfZWx0IHYgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIHYgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBoLCBuKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgbiA9IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSB2KSBjb21wYXJlX2VsdCBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgdikgdXBwZXIgY29tcGFyZV9lbHQgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfZWx0IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfZWx0IHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgIGlmIGggPSAxXG4gICAgdGhlbiBMZWFmIHZcbiAgICBlbHNlIChcbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLlNldCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgayA9IGYgaSBpblxuICAgICAgICBMZWFmIGtcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIEVtcHR5XG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgKExlYWYga3IpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICAoKiBXZSBkb24ndCBjaGVjayBpZiB0aGUgYXJyYXkgaXMgc29ydGVkIG9yIGtleXMgYXJlIGR1cGxpY2F0ZWQsIGJlY2F1c2UgdGhhdFxuICAgICAgICAgY2hlY2tpbmcgaXMgc2xvd2VyIHRoYW4gdGhlIHdob2xlIFtvZl9zb3J0ZWRfYXJyYXldIGZ1bmN0aW9uICopXG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyIHx8IGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+IFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKGkpIGFycmF5LihpICsgMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpKVxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICBsZXQgYmFsIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKGwpPmgocikrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBscnYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgbGwpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgRW1wdHkpIGxydiAoY3JlYXRlIEVtcHR5IHYgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscnIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBiZWNhdXNlIGgocik+aChsKSsyIGFuZCBoKGxlYWYpPTEgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByciwgXywgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybFxuICAgICAgICB0aGVuIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBMZWFmIHJsdiAtPlxuICAgICAgICAgICAgYXNzZXJ0IChpc19lbXB0eSBycik7XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgRW1wdHkpIHJsdiAoY3JlYXRlIEVtcHR5IHJ2IHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsciwgXywgXykgLT4gY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgaCA9IGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxIGluXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGlmIGggPSAxIHRoZW4gTGVhZiB2IGVsc2UgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gIGV4Y2VwdGlvbiBTYW1lXG5cbiAgbGV0IGFkZCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gY3JlYXRlIChMZWFmIHgpIHYgRW1wdHlcbiAgICAgICAgZWxzZSBjcmVhdGUgRW1wdHkgdiAoTGVhZiB4KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBiYWwgKGF1eCBsKSB2IHJcbiAgICAgICAgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbYWRkXSB0aGF0IGFzc3VtZXMgdGhhdCBbeF0gaXMgbGVzcyB0aGFuIGFsbCBleGlzdGluZyBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGFkZF9taW4geCB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgIHwgTGVhZiBfIC0+IE5vZGUgKEVtcHR5LCB4LCB0LCAyLCAyKVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChhZGRfbWluIHggbCkgdiByXG4gIDs7XG5cbiAgKCogc3BlY2lhbGl6YXRpb24gb2YgW2FkZF0gdGhhdCBhc3N1bWVzIHRoYXQgW3hdIGlzIGdyZWF0ZXIgdGhhbiBhbGwgZXhpc3RpbmcgZWxlbWVudHMgKilcbiAgbGV0IHJlYyBhZGRfbWF4IHQgeCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICB8IExlYWYgXyAtPiBOb2RlICh0LCB4LCBFbXB0eSwgMiwgMilcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCBsIHYgKGFkZF9tYXggciB4KVxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZFxuICAgICByLiAqKVxuICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gYWRkX21pbiB2IHJcbiAgICB8IF8sIEVtcHR5IC0+IGFkZF9tYXggbCB2XG4gICAgfCBMZWFmIGx2LCBfIC0+IGFkZF9taW4gbHYgKGFkZF9taW4gdiByKVxuICAgIHwgXywgTGVhZiBydiAtPiBhZGRfbWF4IChhZGRfbWF4IGwgdikgcnZcbiAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIGxoLCBfKSwgTm9kZSAocmwsIHJ2LCByciwgcmgsIF8pIC0+XG4gICAgICBpZiBsaCA+IHJoICsgMlxuICAgICAgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgMlxuICAgICAgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByclxuICAgICAgZWxzZSBjcmVhdGUgbCB2IHJcbiAgOztcblxuICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgYWNjID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiB2YWx1ZSAtPiBmIGFjYyB2YWx1ZSBbQG5vbnRhaWxdXG4gICAgICB8IE5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfaGVscGVyIH5mIGxlZnQgYWNjIHdpdGhcbiAgICAgICAgIHwgU3RvcCBfYSBhcyB4IC0+IHhcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIGFjYyB2YWx1ZSB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICAgICB8IENvbnRpbnVlIGEgLT4gZm9sZF91bnRpbF9oZWxwZXIgfmYgcmlnaHQgYSkpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGluaXQgd2l0aFxuICAgIHwgQ29udGludWUgeCAtPiBmaW5pc2ggeCBbQG5vbnRhaWxdXG4gICAgfCBTdG9wIHggLT4geFxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgfCBOb2RlIChfLCB2LCBFbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCBfLCByLCBfLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgciwgXywgXykgLT4gclxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gYmFsIHQxIChtaW5fZWx0X2V4biB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG4gIGxldCBjb25jYXQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gam9pbiB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICBsZXQgc3BsaXQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBzcGxpdCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gRW1wdHksIFNvbWUgdiwgRW1wdHlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIEVtcHR5LCBOb25lLCBMZWFmIHZcbiAgICAgICAgZWxzZSBMZWFmIHYsIE5vbmUsIEVtcHR5XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gbCwgU29tZSB2LCByXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxsLCBtYXliZV9lbHQsIHJsID0gc3BsaXQgbCBpblxuICAgICAgICAgIGxsLCBtYXliZV9lbHQsIGpvaW4gcmwgdiByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbHIsIG1heWJlX2VsdCwgcnIgPSBzcGxpdCByIGluXG4gICAgICAgICAgam9pbiBsIHYgbHIsIG1heWJlX2VsdCwgcnIpXG4gICAgaW5cbiAgICBzcGxpdCB0XG4gIDs7XG5cbiAgbGV0IHJlYyBzcGxpdF9sZV9ndCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5LCBFbXB0eVxuICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA+PSAwIHRoZW4gTGVhZiB2LCBFbXB0eSBlbHNlIEVtcHR5LCBMZWFmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gYWRkX21heCBsIHYsIHJcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIHJsID0gc3BsaXRfbGVfZ3QgbCB4IH5jb21wYXJlX2VsdCBpblxuICAgICAgICBsbCwgam9pbiBybCB2IHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxyLCByciA9IHNwbGl0X2xlX2d0IHIgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgam9pbiBsIHYgbHIsIHJyKVxuICA7O1xuXG4gIGxldCByZWMgc3BsaXRfbHRfZ2UgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPiAwIHRoZW4gTGVhZiB2LCBFbXB0eSBlbHNlIEVtcHR5LCBMZWFmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gbCwgYWRkX21pbiB2IHJcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIHJsID0gc3BsaXRfbHRfZ2UgbCB4IH5jb21wYXJlX2VsdCBpblxuICAgICAgICBsbCwgam9pbiBybCB2IHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxyLCByciA9IHNwbGl0X2x0X2dlIHIgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgam9pbiBsIHYgbHIsIHJyKVxuICA7O1xuXG4gICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IHJlYyBtZW0gdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDBcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDAgfHwgbWVtIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2VsdFxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24geCA9IExlYWYgeFxuXG4gIGxldCByZW1vdmUgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA9IDAgdGhlbiBFbXB0eSBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByIGVsc2UgaWYgYyA8IDAgdGhlbiBiYWwgKGF1eCBsKSB2IHIgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6XyA9XG4gICAgbGV0IHJlYyBhdXggdCBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBMZWFmIF8gLT4gaWYgaSA9IDAgdGhlbiBFbXB0eSBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsX3NpemUgPSBsZW5ndGggbCBpblxuICAgICAgICBsZXQgYyA9IFBvbHkuY29tcGFyZSBpIGxfc2l6ZSBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIG1lcmdlIGwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gYmFsIChhdXggbCBpKSB2IHJcbiAgICAgICAgZWxzZSBiYWwgbCB2IChhdXggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IGkgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHVuaW9uIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIHMxXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICAgICAgfCBMZWFmIHYxLCBfIC0+IHVuaW9uIChOb2RlIChFbXB0eSwgdjEsIEVtcHR5LCAxLCAxKSkgczJcbiAgICAgICAgfCBfLCBMZWFmIHYyIC0+IHVuaW9uIHMxIChOb2RlIChFbXB0eSwgdjIsIEVtcHR5LCAxLCAxKSlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBoMSwgXyksIE5vZGUgKGwyLCB2MiwgcjIsIGgyLCBfKSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxXG4gICAgICAgICAgICB0aGVuIGFkZCBzMSB2MiB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbDIsIF8sIHIyID0gc3BsaXQgczIgdjEgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpKVxuICAgICAgICAgIGVsc2UgaWYgaDEgPSAxXG4gICAgICAgICAgdGhlbiBhZGQgczIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbDEsIF8sIHIxID0gc3BsaXQgczEgdjIgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKSkpXG4gICAgaW5cbiAgICB1bmlvbiBzMSBzMlxuICA7O1xuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIHhzID1cbiAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIExpc3QuZm9sZCB4cyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjIHggLT4gdW5pb24gYWMgKHRvX3RyZWUgeCkgfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlciBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IChMZWFmIGVsdCBhcyBzaW5nbGV0b24pLCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIChMZWFmIGVsdCBhcyBzaW5nbGV0b24pIC0+XG4gICAgICAgICAgaWYgbWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0IHRoZW4gc2luZ2xldG9uIGVsc2UgRW1wdHlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgICB8IGwyLCBTb21lIHYxLCByMiAtPiBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKSkpXG4gICAgaW5cbiAgICBpbnRlciBzMSBzMlxuICA7O1xuXG4gIGxldCBkaWZmIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gRW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIC0+IEVtcHR5XG4gICAgICAgIHwgdDEsIEVtcHR5IC0+IHQxXG4gICAgICAgIHwgTGVhZiB2MSwgdDIgLT4gZGlmZiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHQyXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgICB8IGwyLCBTb21lIF8sIHIyIC0+IGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpKSlcbiAgICBpblxuICAgIGRpZmYgczEgczJcbiAgOztcblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2EsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnYSAqICdhIHRyZWUgKiAoJ2EsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyBzIChlIDogKF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiB2IC0+IE1vcmUgKHYsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgcyAoZSA6IChfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29uc19yaWdodCByIChNb3JlICh2LCBsLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3NldCBzIDogKF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHMgRW5kXG4gICAgbGV0IG9mX3NldF9yaWdodCBzIDogKF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHMgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmIHYgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIEVtcHR5LCAxLCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIHIsIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBfLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPiAwIC0+IGxvb3AgbCBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCByIChNb3JlICh2LCBsLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IGUxIGUyID1cbiAgICAgIGxldCByZWMgbG9vcCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIGUxLCBlMiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gMFxuICAgICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICAgIHwgTW9yZSAodjEsIHIxLCBlMSksIE1vcmUgKHYyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgaWYgcGh5c19lcXVhbCByMSByMlxuICAgICAgICAgIHRoZW4gbG9vcCBlMSBlMlxuICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpXG4gICAgICBpblxuICAgICAgbG9vcCBlMSBlMlxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGl0ZXIgfmYgPSBmdW5jdGlvblxuICAgICAgfCBFbmQgLT4gKClcbiAgICAgIHwgTW9yZSAoYSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgZiBhO1xuICAgICAgICBpdGVyIChjb25zIHRyZWUgZW51bSkgfmZcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIyIGNvbXBhcmVfZWx0IHQxIHQyIH5mID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gKClcbiAgICAgICAgfCBFbmQsIF8gLT4gaXRlciB0MiB+ZjooZnVuIGEgLT4gZiAoYFJpZ2h0IGEpKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgXywgRW5kIC0+IGl0ZXIgdDEgfmY6KGZ1biBhIC0+IGYgKGBMZWZ0IGEpKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBCb3RoIChhMSwgYTIpKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgZiAoYExlZnQgYTEpO1xuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBmIChgUmlnaHQgYTIpO1xuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MiBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQgPVxuICAgICAgbGV0IHN0ZXAgc3RhdGUgOiAoKF8sIF8pIEVpdGhlci50LCBfKSBTZXF1ZW5jZS5TdGVwLnQgPVxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoZWx0LCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBTZWNvbmQgZWx0OyBzdGF0ZSA9IEVuZCwgY29ucyB0cmVlIGVudW0gfVxuICAgICAgICB8IE1vcmUgKGVsdCwgdHJlZSwgZW51bSksIEVuZCAtPlxuICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBGaXJzdCBlbHQ7IHN0YXRlID0gY29ucyB0cmVlIGVudW0sIEVuZCB9XG4gICAgICAgIHwgKE1vcmUgKGExLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoYTIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID1cbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgICB0aGVuIGVudW0xLCBlbnVtMlxuICAgICAgICAgICAgICBlbHNlIGNvbnMgdHJlZTEgZW51bTEsIGNvbnMgdHJlZTIgZW51bTJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBuZXh0X3N0YXRlIH0pXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBGaXJzdCBhMTsgc3RhdGUgPSBjb25zIHRyZWUxIGVudW0xLCByaWdodCB9XG4gICAgICAgICAgZWxzZSBZaWVsZCB7IHZhbHVlID0gU2Vjb25kIGEyOyBzdGF0ZSA9IGxlZnQsIGNvbnMgdHJlZTIgZW51bTIgfVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OihvZl9zZXQgdDEsIG9mX3NldCB0MikgfmY6c3RlcFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGs7IHN0YXRlID0gRW51bS5jb25zIHQgZSB9XG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPlxuICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrOyBzdGF0ZSA9IEVudW0uY29uc19yaWdodCB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0X3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2VsdCA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2VsdCBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlbHQgLT4gYWRkIHQgZWx0IH5jb21wYXJlX2VsdFxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGdyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8IDApIFtAbm9udGFpbF1cbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID4gMCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgbGV0IGlzX2xlZnQgeCA9XG4gICAgICBtYXRjaCBzZWdtZW50X29mIHggd2l0aFxuICAgICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgICB8IGBSaWdodCAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOmlzX2xlZnQgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0IFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICAgICAgdCdcbiAgICA9XG4gICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdClcbiAgICAgICh0b19zZXF1ZW5jZSBjb21wYXJhdG9yIH5vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0JylcbiAgICAgIH5jb21wYXJlOlxuICAgICAgICAobWF0Y2ggb3JkZXIgd2l0aFxuICAgICAgICAgfCBgSW5jcmVhc2luZyAtPiBjb21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIHwgYERlY3JlYXNpbmcgLT4gRm4uZmxpcCBjb21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPVxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMilcbiAgOztcblxuICBsZXQgaXRlcjIgczEgczIgfmNvbXBhcmVfZWx0IH5mID1cbiAgICBFbnVtLml0ZXIyIGNvbXBhcmVfZWx0IChFbnVtLm9mX3NldCBzMSkgKEVudW0ub2Zfc2V0IHMyKSB+ZlxuICA7O1xuXG4gIGxldCBlcXVhbCBzMSBzMiB+Y29tcGFyZV9lbHQgPSBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID0gMFxuXG4gIGxldCBpc19zdWJzZXQgczEgfm9mXzpzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaXNfc3Vic2V0IHMxIH5vZl86czIgPVxuICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgIHwgRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBMZWFmIHYxLCB0MiAtPiBtZW0gdDIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCBMZWFmIHYyIC0+XG4gICAgICAgIChtYXRjaCBsMSwgcjEgd2l0aFxuICAgICAgICAgfCBFbXB0eSwgRW1wdHkgLT5cbiAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZG4ndCBvY2N1ciBpbiBwcmFjdGljZSBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGNvbnN0cnVjdGVkXG4gICAgICAgICAgICAgIGEgTGVhZiByYXRoZXIgdGhhbiBhIE5vZGUgd2l0aCB0d28gRW1wdHkgc3VidHJlZXMgKilcbiAgICAgICAgICAgY29tcGFyZV9lbHQgdjEgdjIgPSAwXG4gICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCAoTm9kZSAobDIsIHYyLCByMiwgXywgXykgYXMgdDIpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIHBoeXNfZXF1YWwgczEgczIgfHwgKGlzX3N1YnNldCBsMSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnIyKVxuICAgICAgICAgICgqIE5vdGUgdGhhdCBoZWlnaHQgYW5kIHNpemUgZG9uJ3QgbWF0dGVyIGhlcmUuICopXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBpc19zdWJzZXQgKE5vZGUgKGwxLCB2MSwgRW1wdHksIDAsIDApKSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnQyXG4gICAgICAgIGVsc2UgaXNfc3Vic2V0IChOb2RlIChFbXB0eSwgdjEsIHIxLCAwLCAwKSkgfm9mXzpyMiAmJiBpc19zdWJzZXQgbDEgfm9mXzp0MlxuICAgIGluXG4gICAgaXNfc3Vic2V0IHMxIH5vZl86czJcbiAgOztcblxuICBsZXQgcmVjIGFyZV9kaXNqb2ludCBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgfCBFbXB0eSwgXyB8IF8sIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgZWx0LCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIExlYWYgZWx0IC0+IG5vdCAobWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0KVxuICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIGZhbHNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT5cbiAgICAgICAgICBhcmVfZGlzam9pbnQgbDEgbDIgfmNvbXBhcmVfZWx0ICYmIGFyZV9kaXNqb2ludCByMSByMiB+Y29tcGFyZV9lbHRcbiAgICAgICAgfCBfLCBTb21lIF8sIF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgTGVhZiB2IC0+IGYgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBpdGVyIGw7XG4gICAgICAgIGYgdjtcbiAgICAgICAgaXRlciByXG4gICAgaW5cbiAgICBpdGVyIHQgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiA9IEVudW0uc3ltbWV0cmljX2RpZmZcblxuICBsZXQgcmVjIGZvbGQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIGFjY3UgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkgdilcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9lbGVtIHN0YXRlIHQgPVxuICAgIGZvbGQgdCB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKSB+ZjpoYXNoX2ZvbGRfZWxlbVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuXG4gIGxldCByZWMgZm9sZF9yaWdodCBzIH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IGYgdiBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX3JpZ2h0IH5mIGwgfmluaXQ6KGYgdiAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCByZWMgZm9yX2FsbCB0IH5mOnAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2ICYmIGZvcl9hbGwgfmY6cCBsICYmIGZvcl9hbGwgfmY6cCByXG4gIDs7XG5cbiAgbGV0IHJlYyBleGlzdHMgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT4gcCB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBwIHYgfHwgZXhpc3RzIH5mOnAgbCB8fCBleGlzdHMgfmY6cCByXG4gIDs7XG5cbiAgbGV0IGZpbHRlciBzIH5mOnAgPVxuICAgIGxldCByZWMgZmlsdCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IExlYWYgdiBhcyB0IC0+IGlmIHAgdiB0aGVuIHQgZWxzZSBFbXB0eVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSBhcyB0IC0+XG4gICAgICAgIGxldCBsJyA9IGZpbHQgbCBpblxuICAgICAgICBsZXQga2VlcF92ID0gcCB2IGluXG4gICAgICAgIGxldCByJyA9IGZpbHQgciBpblxuICAgICAgICBpZiBrZWVwX3YgJiYgcGh5c19lcXVhbCBsIGwnICYmIHBoeXNfZXF1YWwgciByJ1xuICAgICAgICB0aGVuIHRcbiAgICAgICAgZWxzZSBpZiBrZWVwX3ZcbiAgICAgICAgdGhlbiBqb2luIGwnIHYgcidcbiAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcbiAgICBpblxuICAgIGZpbHQgcyBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICAobWF0Y2ggcCB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgZmlsdFxuICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0KVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgclxuICAgIGluXG4gICAgZmlsdCBFbXB0eSBzIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHMgfmY6cCA9XG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgICB8IExlYWYgdiBhcyB0IC0+IGlmIHAgdiB0aGVuIHQsIEVtcHR5IGVsc2UgRW1wdHksIHRcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgbCd0LCBsJ2YgPSBsb29wIGwgaW5cbiAgICAgICAgbGV0IGtlZXBfdl90ID0gcCB2IGluXG4gICAgICAgIGxldCByJ3QsIHInZiA9IGxvb3AgciBpblxuICAgICAgICBsZXQgbWsga2VlcF92IGwnIHInID1cbiAgICAgICAgICBpZiBrZWVwX3YgJiYgcGh5c19lcXVhbCBsIGwnICYmIHBoeXNfZXF1YWwgciByJ1xuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgaWYga2VlcF92XG4gICAgICAgICAgdGhlbiBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuICAgICAgICBpblxuICAgICAgICBtayBrZWVwX3ZfdCBsJ3Qgcid0LCBtayAobm90IGtlZXBfdl90KSBsJ2YgcidmXG4gICAgaW5cbiAgICBsb29wIHMgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IHYgOjogYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcbiAgOztcblxuICBsZXQgZWxlbWVudHMgcyA9IGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgbGV0IGNob29zZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBjaG9vc2VfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTZXQuY2hvb3NlX2V4bjogZW1wdHkgc2V0XCIpIGluXG4gICAgbGV0IGNob29zZV9leG4gdCA9XG4gICAgICBtYXRjaCBjaG9vc2UgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgY2hvb3NlX2V4blxuICA7O1xuXG4gIGxldCBvZl9saXN0IGxzdCB+Y29tcGFyZV9lbHQgPVxuICAgIExpc3QuZm9sZCBsc3QgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlIH5jb21wYXJlX2VsdCA9XG4gICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgdG9fbGlzdCBzID0gZWxlbWVudHMgc1xuXG4gIGxldCBvZl9hcnJheSBhIH5jb21wYXJlX2VsdCA9XG4gICAgQXJyYXkuZm9sZCBhIH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gICgqIGZhc3RlciBidXQgZXF1aXZhbGVudCB0byBbQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KV0gKilcbiAgbGV0IHRvX2FycmF5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IFt8fF1cbiAgICB8IExlYWYgdiAtPiBbfCB2IHxdXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgbGV0IHJlcyA9IEFycmF5LmNyZWF0ZSB+bGVuOnMgdiBpblxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgKCogSW52YXJpYW50OiBvbiBlbnRyeSBhbmQgb24gZXhpdCB0byBbbG9vcF0sICFwb3NfcmVmIGlzIHRoZSBuZXh0XG4gICAgICAgICAgIGF2YWlsYWJsZSBjZWxsIGluIHRoZSBhcnJheS4gKilcbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IExlYWYgdiAtPlxuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgICBsb29wIGw7XG4gICAgICAgICAgcmVzLighcG9zX3JlZikgPC0gdjtcbiAgICAgICAgICBpbmNyIHBvc19yZWY7XG4gICAgICAgICAgbG9vcCByXG4gICAgICBpblxuICAgICAgbG9vcCBsO1xuICAgICAgKCogcmVzLighcG9zX3JlZikgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAoYnkgQXJyYXkuY3JlYXRlIH5sZW46YWJvdmUpLiAqKVxuICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgbG9vcCByO1xuICAgICAgcmVzXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mIH5jb21wYXJlX2VsdCA9XG4gICAgZm9sZCB0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IChmIHgpIH5jb21wYXJlX2VsdCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBncm91cF9ieSBzZXQgfmVxdWl2ID1cbiAgICBsZXQgcmVjIGxvb3Agc2V0IGVxdWl2X2NsYXNzZXMgPVxuICAgICAgaWYgaXNfZW1wdHkgc2V0XG4gICAgICB0aGVuIGVxdWl2X2NsYXNzZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeCA9IGNob29zZV9leG4gc2V0IGluXG4gICAgICAgIGxldCBlcXVpdl94LCBub3RfZXF1aXZfeCA9XG4gICAgICAgICAgcGFydGl0aW9uX3RmIHNldCB+ZjooZnVuIGVsdCAtPiBwaHlzX2VxdWFsIHggZWx0IHx8IGVxdWl2IHggZWx0KVxuICAgICAgICBpblxuICAgICAgICBsb29wIG5vdF9lcXVpdl94IChlcXVpdl94IDo6IGVxdWl2X2NsYXNzZXMpKVxuICAgIGluXG4gICAgbG9vcCBzZXQgW10gW0Bub250YWlsXVxuICA7O1xuXG5cbiAgbGV0IHJlYyBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gU29tZSB2XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggZmluZCBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbmQgciB+ZlxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX21hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAobWF0Y2ggZiB2IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBmaW5kX21hcCBsIH5mIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgciB+ZlxuICAgICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcikpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2V0LmZpbmRfZXhuIGZhaWxlZCB0byBmaW5kIGEgbWF0Y2hpbmcgZWxlbWVudFwiXG4gICAgfCBTb21lIGUgLT4gZVxuICA7O1xuXG4gIGxldCByZWMgbnRoIHQgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgaSA9IDAgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgaWYgaSA+PSBzXG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBudGggbCBpIGVsc2UgaWYgYyA9IDAgdGhlbiBTb21lIHYgZWxzZSBudGggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgbG9vcCB4cyBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuID1cbiAgICAgIG1hdGNoIHhzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgbGVmdG92ZXJzXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGlmIG1lbSBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0XG4gICAgICAgIHRoZW4gbG9vcCB0bCBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuXG4gICAgICAgIGVsc2UgbG9vcCB0bCAoaGQgOjogbGVmdG92ZXJzKSAoYWRkIGFscmVhZHlfc2VlbiBoZCB+Y29tcGFyZV9lbHQpXG4gICAgaW5cbiAgICBsb29wIHhzIFtdIGVtcHR5XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBsc3QgLT5cbiAgICAgIGxldCBlbHRfbHN0ID0gTGlzdC5tYXAgbHN0IH5mOmFfb2Zfc2V4cCBpblxuICAgICAgbGV0IHNldCA9IG9mX2xpc3QgZWx0X2xzdCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGxlbmd0aCBzZXQgPSBMaXN0Lmxlbmd0aCBsc3RcbiAgICAgIHRoZW4gc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNldCA9IHJlZiBlbXB0eSBpblxuICAgICAgICBMaXN0Lml0ZXIyX2V4biBsc3QgZWx0X2xzdCB+ZjooZnVuIGVsX3NleHAgZWwgLT5cbiAgICAgICAgICBpZiBtZW0gIXNldCBlbCB+Y29tcGFyZV9lbHRcbiAgICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJTZXQudF9vZl9zZXhwOiBkdXBsaWNhdGUgZWxlbWVudCBpbiBzZXRcIiBlbF9zZXhwXG4gICAgICAgICAgZWxzZSBzZXQgOj0gYWRkICFzZXQgZWwgfmNvbXBhcmVfZWx0KTtcbiAgICAgICAgYXNzZXJ0IGZhbHNlKVxuICAgIHwgc2V4cCAtPiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biBlbCBhY2MgLT4gc2V4cF9vZl9hIGVsIDo6IGFjYykpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgbGV0IGlzX3N1YnNldFxuICAgICAgICAgIChzdWJzZXQgOiBfIE5hbWVkLnQpXG4gICAgICAgICAgfm9mXzooc3VwZXJzZXQgOiBfIE5hbWVkLnQpXG4gICAgICAgICAgfnNleHBfb2ZfZWx0XG4gICAgICAgICAgfmNvbXBhcmVfZWx0XG4gICAgICA9XG4gICAgICBsZXQgaW52YWxpZF9lbGVtZW50cyA9IGRpZmYgc3Vic2V0LnNldCBzdXBlcnNldC5zZXQgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBpc19lbXB0eSBpbnZhbGlkX2VsZW1lbnRzXG4gICAgICB0aGVuIE9rICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGludmFsaWRfZWxlbWVudHNfc2V4cCA9IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBpbnZhbGlkX2VsZW1lbnRzIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgKHN1YnNldC5uYW1lIF4gXCIgaXMgbm90IGEgc3Vic2V0IG9mIFwiIF4gc3VwZXJzZXQubmFtZSlcbiAgICAgICAgICAgICBbIFwiaW52YWxpZF9lbGVtZW50c1wiLCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgXSkpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCBzMSBzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0ID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgICAgWyBpc19zdWJzZXQgczEgfm9mXzpzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIDsgaXNfc3Vic2V0IHMyIH5vZl86czEgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2EsICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogJ2EgVHJlZTAudFxuICB9XG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdHJlZSA9ICdhIFRyZWUwLnRcblxubGV0IGxpa2UgeyB0cmVlID0gXzsgY29tcGFyYXRvciB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3IgfVxuXG5sZXQgbGlrZV9tYXliZV9ub19vcCAoeyB0cmVlID0gb2xkX3RyZWU7IGNvbXBhcmF0b3IgfSBhcyBvbGRfdCkgdHJlZSA9XG4gIGlmIHBoeXNfZXF1YWwgb2xkX3RyZWUgdHJlZSB0aGVuIG9sZF90IGVsc2UgeyB0cmVlOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCBjb21wYXJlX2VsdCB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcblxuICBsZXQgY29tcGFyYXRvcl9zICh0eXBlIGsgY21wKSB0IDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGtcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gICAgZW5kKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0LnRyZWVcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0LnRyZWVcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdC50cmVlXG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHQudHJlZVxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0LnRyZWVcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0LnRyZWVcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdC50cmVlIH5pbml0IH5mIH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhLnRyZWUgYi50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0LnRyZWUgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdC50cmVlIH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdC50cmVlIH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdC50cmVlIH5mXG4gIGxldCBtZW0gdCBhID0gVHJlZTAubWVtIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcbiAgbGV0IGZpbHRlciB0IH5mID0gbGlrZV9tYXliZV9ub19vcCB0IChUcmVlMC5maWx0ZXIgdC50cmVlIH5mKVxuICBsZXQgYWRkIHQgYSA9IGxpa2UgdCAoVHJlZTAuYWRkIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCByZW1vdmUgdCBhID0gbGlrZSB0IChUcmVlMC5yZW1vdmUgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHVuaW9uIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAudW5pb24gdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgaW50ZXIgdDEgdDIgPSBsaWtlIHQxIChUcmVlMC5pbnRlciB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG4gIGxldCBkaWZmIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjb21wYXJlX2VsdCB0MSkgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBlcXVhbCB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICBsZXQgaXNfc3Vic2V0IHQgfm9mXyA9IFRyZWUwLmlzX3N1YnNldCB0LnRyZWUgfm9mXzpvZl8udHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGxldCB0b19uYW1lZF90cmVlIChuYW1lZCA6IChfLCBfKSB0IE5hbWVkLnQpID0geyBuYW1lZCB3aXRoIHNldCA9IG5hbWVkLnNldC50cmVlIH1cblxuICAgIGxldCBpc19zdWJzZXQgc3Vic2V0IH5vZl86c3VwZXJzZXQgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgICh0b19uYW1lZF90cmVlIHN1YnNldClcbiAgICAgICAgfm9mXzoodG9fbmFtZWRfdHJlZSBzdXBlcnNldClcbiAgICAgICAgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBzdWJzZXQuc2V0KVxuICAgICAgICB+c2V4cF9vZl9lbHQ6c3Vic2V0LnNldC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgdDEgdDIgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdCBbIGlzX3N1YnNldCB0MSB+b2ZfOnQyOyBpc19zdWJzZXQgdDIgfm9mXzp0MSBdXG4gICAgOztcblxuICAgIGluY2x1ZGUgTmFtZWRcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBsZXQgdHJlZV90LCB0cmVlX2YgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mIGluXG4gICAgbGlrZV9tYXliZV9ub19vcCB0IHRyZWVfdCwgbGlrZV9tYXliZV9ub19vcCB0IHRyZWVfZlxuICA7O1xuXG4gIGxldCBzcGxpdCB0IGEgPVxuICAgIGxldCB0cmVlMSwgYiwgdHJlZTIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWUxLCBiLCBsaWtlIHQgdHJlZTJcbiAgOztcblxuICBsZXQgc3BsaXRfbGVfZ3QgdCBhID1cbiAgICBsZXQgdHJlZTEsIHRyZWUyID0gVHJlZTAuc3BsaXRfbGVfZ3QgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2x0X2dlIHQgYSA9XG4gICAgbGV0IHRyZWUxLCB0cmVlMiA9IFRyZWUwLnNwbGl0X2x0X2dlIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9IExpc3QubWFwIChUcmVlMC5ncm91cF9ieSB0LnRyZWUgfmVxdWl2KSB+ZjoobGlrZSB0KVxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0LnRyZWUgaVxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlX2luZGV4IHQudHJlZSBpIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSB0LmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICAgICAgdCcudHJlZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgc3RhdGUgdC50cmVlXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID0gKCdhLCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBjZSBjb21wYXJhdG9yID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpIGFfb2Zfc2V4cCBzZXhwXG4gIDs7XG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGUgPSBUcmVlMC5zaW5nbGV0b24gZVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID0gVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdFxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdFxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0XG4gIGxldCB0b19saXN0IHQgPSBUcmVlMC50b19saXN0IHRcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQgfmluaXQgfmZcbiAgbGV0IG1hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAubWFwIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZmlsdGVyIHQgfmYgPSBUcmVlMC5maWx0ZXIgdCB+ZlxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gVHJlZTAucGFydGl0aW9uX3RmIHQgfmZcbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEgYiB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAubWVtIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuYWRkIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCByZW1vdmUgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAucmVtb3ZlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLnVuaW9uIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGludGVyIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuaW50ZXIgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmRpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNlIGNvbXBhcmF0b3IpIHQxIHQyXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgYXJlX2Rpc2pvaW50IH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGEgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl8gfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLnVuaW9uX2xpc3QgbCB+dG9fdHJlZTpGbi5pZCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9IFRyZWUwLmdyb3VwX2J5IHQgfmVxdWl2XG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5zcGxpdCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc3BsaXRfbGVfZ3QgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXRfbGVfZ3QgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNwbGl0X2x0X2dlIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0X2x0X2dlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQgaVxuICBsZXQgcmVtb3ZlX2luZGV4IH5jb21wYXJhdG9yIHQgaSA9IFRyZWUwLnJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0ID0gdFxuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0J1xuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWUwLk5hbWVkXG5cbiAgICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQxIH5vZl86dDIgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgIHQxXG4gICAgICAgIH5vZl86dDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgICAgVHJlZTAuTmFtZWQuZXF1YWxcbiAgICAgICAgdDFcbiAgICAgICAgdDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5jb21wYXJlIGFfb2Zfc2V4cCBzZXhwKVxuICA7O1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cbiAgZW5kXG5cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGUgfVxuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgfnRvX3RyZWUgbClcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgbGV0IHRyZWUgPVxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IuTW9uYWRfaW5maXguKFxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgPj58IGZ1biB0cmVlIC0+IHsgY29tcGFyYXRvcjsgdHJlZSB9KVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAubWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvclxuICAgIDsgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIH1cbiAgOztcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG50eXBlICgnZWx0LCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGVsdCBjbXApICgobW9kdWxlIE0pIDogKGVsdCwgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCB1bmlvbl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB+bGVuIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2Zfc2VxdWVuY2UgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBzdGFibGVfZGVkdXBfbGlzdCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBtYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxubGV0IGZpbHRlcl9tYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbmxldCB0b190cmVlID0gVXNpbmdfY29tcGFyYXRvci50b190cmVlXG5sZXQgb2ZfdHJlZSBtIHQgPSBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGVsdCBjbXApXG4gICAgICAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdClcbiAgOiAoZWx0LCBfKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9IGVsdCkgc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZVxuOztcblxubGV0IGhhc2hfbV9fdCBmb2xkZXIgdCA9XG4gIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9tX190IGZvbGRlciAoSGFzaC5jcmVhdGUgKCkpIHQgaW5cbiAgSGFzaC5nZXRfaGFzaF92YWx1ZSBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSBzZXQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgJ2VsdCB0cmVlID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuXG4gIGluY2x1ZGUgVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgbGV0IHNpbmdsZXRvbiBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgYVxuICBsZXQgdW5pb25fbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yIGFcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2Zfc2VxdWVuY2UgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvciBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfcmVmXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPSBlcXVhbF9yZWZcblxuICBsZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfKVxuICAgICAgICA6ICgoKGFfXzAwOV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA5XykgLT4gKGFfXzAwOV8gdFtAb2NhbWwubG9jYWxdKSAtPiBhX18wMDlfIHQpIC0+XG4gICAgICBnbG9iYWxpemVfcmVmXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IHJlZl9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX3JlZlxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiByZWZfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBnbG9iYWxpemUgOiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0XG5cbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbigqIEluIHRoZSBkZWZpbml0aW9uIG9mIFt0XSwgd2UgZG8gbm90IGhhdmUgW1tAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXSBiZWNhdXNlXG4gICBpbiBnZW5lcmFsLCBzeW50YXggZXh0ZW5zaW9ucyB0ZW5kIHRvIHVzZSB0aGUgaW1wbGVtZW50YXRpb24gd2hlbiBhdmFpbGFibGUgcmF0aGVyIHRoYW5cbiAgIHVzaW5nIHRoZSBhbGlhcy4gIEhlcmUgdGhhdCB3b3VsZCBsZWFkIHRvIHVzZSB0aGUgcmVjb3JkIHJlcHJlc2VudGF0aW9uIFsgeyBtdXRhYmxlXG4gICBjb250ZW50cyA6ICdhIH0gXSB3aGljaCB3b3VsZCByZXN1bHQgaW4gZGlmZmVyZW50IChhbmQgdW53YW50ZWQpIGJlaGF2aW9yLiAgKilcbnR5cGUgJ2EgdCA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuZXh0ZXJuYWwgY3JlYXRlIDogJ2EgLT4gKCdhIHRbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG5sZXQgc3dhcCB0MSB0MiA9XG4gIGxldCB0bXAgPSAhdDEgaW5cbiAgdDEgOj0gIXQyO1xuICB0MiA6PSB0bXBcbjs7XG5cbmxldCByZXBsYWNlIHQgZiA9IHQgOj0gZiAhdFxuXG5sZXQgc2V0X3RlbXBvcmFyaWx5IHQgYSB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gIXQgaW5cbiAgdCA6PSBhO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHQgOj0gcmVzdG9yZV90bylcbjs7XG5cbm1vZHVsZSBBbmRfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVCA6ICdhIHJlZiAqICdhIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V0IChUIChyLCBhKSkgPSByIDo9IGFcbiAgbGV0IHNldHMgdHMgPSBMaXN0Lml0ZXIgdHMgfmY6c2V0XG4gIGxldCBzbmFwc2hvdCAoVCAociwgXykpID0gVCAociwgIXIpXG4gIGxldCBzbmFwc2hvdHMgdHMgPSBMaXN0Lm1hcCB0cyB+ZjpzbmFwc2hvdFxuZW5kXG5cbmxldCBzZXRzX3RlbXBvcmFyaWx5IGFuZF92YWx1ZXMgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9IEFuZF92YWx1ZS5zbmFwc2hvdHMgYW5kX3ZhbHVlcyBpblxuICBBbmRfdmFsdWUuc2V0cyBhbmRfdmFsdWVzO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IEFuZF92YWx1ZS5zZXRzIHJlc3RvcmVfdG8pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cblxuKCogW3RdIHN0b3JlcyB0aGUgW3QubGVuZ3RoXSBxdWV1ZSBlbGVtZW50cyBhdCBjb25zZWN1dGl2ZSBpbmNyZWFzaW5nIGluZGljZXMgb2YgW3QuZWx0c10sXG4gICBtb2QgdGhlIGNhcGFjaXR5IG9mIFt0XSwgd2hpY2ggaXMgW09wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gIFRoZSBjYXBhY2l0eSBpc1xuICAgcmVxdWlyZWQgdG8gYmUgYSBwb3dlciBvZiB0d28gKHVzZXItcmVxdWVzdGVkIGNhcGFjaXRpZXMgYXJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3RcbiAgIHBvd2VyKSwgc28gdGhhdCBtb2QgY2FuIHF1aWNrbHkgYmUgY29tcHV0ZWQgdXNpbmcgW2xhbmQgdC5tYXNrXSwgd2hlcmUgW3QubWFzayA9XG4gICBjYXBhY2l0eSB0IC0gMV0uICBTbywgcXVldWUgZWxlbWVudCBbaV0gaXMgYXQgW3QuZWx0cy4oICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2sgKV0uXG5cbiAgIFtudW1fbXV0YXRpb25zXSBpcyB1c2VkIHRvIGRldGVjdCBtb2RpZmljYXRpb24gZHVyaW5nIGl0ZXJhdGlvbi4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBudW1fbXV0YXRpb25zIDogaW50XG4gIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbWFzayA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV9cbiAgICB7IG51bV9tdXRhdGlvbnMgPSBudW1fbXV0YXRpb25zX18wMDNfXG4gICAgOyBmcm9udCA9IGZyb250X18wMDVfXG4gICAgOyBtYXNrID0gbWFza19fMDA3X1xuICAgIDsgbGVuZ3RoID0gbGVuZ3RoX18wMDlfXG4gICAgOyBlbHRzID0gZWx0c19fMDExX1xuICAgIH0gLT5cbiAgICBsZXQgYm5kc19fMDAyXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTJfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMTFfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWx0c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDlfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX2ludCBtYXNrX18wMDdfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFza1wiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDZfID0gc2V4cF9vZl9pbnQgZnJvbnRfXzAwNV8gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmcm9udFwiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbnVtX211dGF0aW9uc19fMDAzXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm51bV9tdXRhdGlvbnNcIjsgYXJnX18wMDRfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMl9cbjs7XG5cbltAQEBlbmRdXG5cbm1vZHVsZSB0eXBlIFMgPSBRdWV1ZV9pbnRmLlNcblxubGV0IGluY19udW1fbXV0YXRpb25zIHQgPSB0Lm51bV9tdXRhdGlvbnMgPC0gdC5udW1fbXV0YXRpb25zICsgMVxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5sZXQgZWx0c19pbmRleCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9pc19zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9pc19zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgYSA9IE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSkgYVxubGV0IHVuc2FmZV91bnNldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5cbmxldCBjaGVja19pbmRleF9leG4gdCBpID1cbiAgaWYgaSA8IDAgfHwgaSA+PSB0Lmxlbmd0aFxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJRdWV1ZSBpbmRleCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIFsgXCJpbmRleFwiLCBpIHw+IEludC5zZXhwX29mX3Q7IFwibGVuZ3RoXCIsIHQubGVuZ3RoIHw+IEludC5zZXhwX29mX3QgXSlcbjs7XG5cbmxldCBnZXQgdCBpID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgdW5zYWZlX2dldCB0IGlcbjs7XG5cbmxldCBzZXQgdCBpIGEgPVxuICBjaGVja19pbmRleF9leG4gdCBpO1xuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICB1bnNhZmVfc2V0IHQgaSBhXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxubGV0IGxlbmd0aCB7IGxlbmd0aDsgXyB9ID0gbGVuZ3RoXG5cbmxldCBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zID1cbiAgaWYgdC5udW1fbXV0YXRpb25zIDw+IG51bV9tdXRhdGlvbnNcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwibXV0YXRpb24gb2YgcXVldWUgZHVyaW5nIGl0ZXJhdGlvblwiXG4gICAgICAgICBbIFwiXCIsIHQgfD4gc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIF0pXG47O1xuXG5sZXQgY29tcGFyZSA9XG4gIGxldCByZWMgdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCBwb3MgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MiA9XG4gICAgbWF0Y2ggcG9zID0gbGVuMSwgcG9zID0gbGVuMiB3aXRoXG4gICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiAxXG4gICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgIGxldCB4ID0gY29tcGFyZV9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MiBtdXQyO1xuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgIHwgMCAtPiB1bnNhZmVfY29tcGFyZV9mcm9tIGNvbXBhcmVfZWx0IChwb3MgKyAxKSB+dDEgfnQyIH5sZW4xIH5sZW4yIH5tdXQxIH5tdXQyXG4gICAgICAgfCBuIC0+IG4pXG4gIGluXG4gIGZ1biBjb21wYXJlX2VsdCB0MSB0MiAtPlxuICAgIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgICB0aGVuIDBcbiAgICBlbHNlXG4gICAgICB1bnNhZmVfY29tcGFyZV9mcm9tXG4gICAgICAgIGNvbXBhcmVfZWx0XG4gICAgICAgIDBcbiAgICAgICAgfnQxXG4gICAgICAgIH50MlxuICAgICAgICB+bGVuMTp0MS5sZW5ndGhcbiAgICAgICAgfmxlbjI6dDIubGVuZ3RoXG4gICAgICAgIH5tdXQxOnQxLm51bV9tdXRhdGlvbnNcbiAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGVxdWFsID1cbiAgbGV0IHJlYyB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgcG9zIH50MSB+dDIgfm11dDEgfm11dDIgfmxlbiA9XG4gICAgcG9zID0gbGVuXG4gICAgfHxcbiAgICBsZXQgYiA9IGVxdWFsX2VsdCAodW5zYWZlX2dldCB0MSBwb3MpICh1bnNhZmVfZ2V0IHQyIHBvcykgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICBiICYmIHVuc2FmZV9lcXVhbF9mcm9tIGVxdWFsX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bXV0MSB+bXV0MiB+bGVuXG4gIGluXG4gIGZ1biBlcXVhbF9lbHQgdDEgdDIgLT5cbiAgICBwaHlzX2VxdWFsIHQxIHQyXG4gICAgfHxcbiAgICBsZXQgbGVuMSA9IHQxLmxlbmd0aCBpblxuICAgIGxldCBsZW4yID0gdDIubGVuZ3RoIGluXG4gICAgbGVuMSA9IGxlbjJcbiAgICAmJiB1bnNhZmVfZXF1YWxfZnJvbVxuICAgICAgICAgZXF1YWxfZWx0XG4gICAgICAgICAwXG4gICAgICAgICB+dDFcbiAgICAgICAgIH50MlxuICAgICAgICAgfmxlbjpsZW4xXG4gICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgICB+bXV0Mjp0Mi5udW1fbXV0YXRpb25zXG47O1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgeyBudW1fbXV0YXRpb25zOyBtYXNrID0gXzsgZWx0czsgZnJvbnQ7IGxlbmd0aCB9ID0gdCBpblxuICBhc3NlcnQgKGZyb250ID49IDApO1xuICBhc3NlcnQgKGZyb250IDwgY2FwYWNpdHkgdCk7XG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgYXNzZXJ0IChjYXBhY2l0eSA9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gIGFzc2VydCAoY2FwYWNpdHkgPj0gMSk7XG4gIGFzc2VydCAoSW50LmlzX3BvdzIgY2FwYWNpdHkpO1xuICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkpO1xuICBmb3IgaSA9IDAgdG8gY2FwYWNpdHkgLSAxIGRvXG4gICAgaWYgaSA8IHQubGVuZ3RoXG4gICAgdGhlbiAoXG4gICAgICBpbnZhcmlhbnRfYSAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucylcbiAgICBlbHNlIGFzc2VydCAobm90ICh1bnNhZmVfaXNfc2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgP2NhcGFjaXR5ICgpIDogYSB0ID1cbiAgbGV0IGNhcGFjaXR5ID1cbiAgICBtYXRjaCBjYXBhY2l0eSB3aXRoXG4gICAgfCBOb25lIC0+IDJcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiY2Fubm90IGhhdmUgcXVldWUgd2l0aCBuZWdhdGl2ZSBjYXBhY2l0eVwiXG4gICAgICAgICAgICAgWyBcImNhcGFjaXR5XCIsIGNhcGFjaXR5IHw+IEludC5zZXhwX29mX3QgXSlcbiAgICAgIGVsc2UgaWYgY2FwYWNpdHkgPSAwXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgSW50LmNlaWxfcG93MiBjYXBhY2l0eVxuICBpblxuICB7IG51bV9tdXRhdGlvbnMgPSAwXG4gIDsgZnJvbnQgPSAwXG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGxlbmd0aCA9IDBcbiAgOyBlbHRzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmNhcGFjaXR5XG4gIH1cbjs7XG5cbmxldCBibGl0X3RvX2FycmF5IH5zcmMgZHN0ID1cbiAgYXNzZXJ0IChzcmMubGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZHN0KTtcbiAgbGV0IGZyb250X2xlbiA9IEludC5taW4gc3JjLmxlbmd0aCAoY2FwYWNpdHkgc3JjIC0gc3JjLmZyb250KSBpblxuICBsZXQgcmVzdF9sZW4gPSBzcmMubGVuZ3RoIC0gZnJvbnRfbGVuIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46ZnJvbnRfbGVuIH5zcmM6c3JjLmVsdHMgfnNyY19wb3M6c3JjLmZyb250IH5kc3QgfmRzdF9wb3M6MDtcbiAgT3B0aW9uX2FycmF5LmJsaXQgfmxlbjpyZXN0X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3Bvczpmcm9udF9sZW5cbjs7XG5cbmxldCBzZXRfY2FwYWNpdHlfaW50ZXJuYWwgdCBuZXdfY2FwYWNpdHkgPVxuICBsZXQgZHN0ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICBibGl0X3RvX2FycmF5IH5zcmM6dCBkc3Q7XG4gIHQuZnJvbnQgPC0gMDtcbiAgdC5tYXNrIDwtIG5ld19jYXBhY2l0eSAtIDE7XG4gIHQuZWx0cyA8LSBkc3Rcbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBkZXNpcmVkX2NhcGFjaXR5ID1cbiAgKCogV2UgYWxsb3cgYXJndW1lbnRzIGxlc3MgdGhhbiAxIHRvIFtzZXRfY2FwYWNpdHldLCBidXQgdHJhbnNsYXRlIHRoZW0gdG8gMSB0byBzaW1wbGlmeVxuICAgICB0aGUgY29kZSB0aGF0IHJlbGllcyBvbiB0aGUgYXJyYXkgbGVuZ3RoIGJlaW5nIGEgcG93ZXIgb2YgMi4gKilcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgbGV0IG5ld19jYXBhY2l0eSA9IEludC5jZWlsX3BvdzIgKG1heCAxIChtYXggZGVzaXJlZF9jYXBhY2l0eSB0Lmxlbmd0aCkpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0IHRoZW4gc2V0X2NhcGFjaXR5X2ludGVybmFsIHQgbmV3X2NhcGFjaXR5XG47O1xuXG5sZXQgZW5xdWV1ZSB0IGEgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBzZXRfY2FwYWNpdHlfaW50ZXJuYWwgdCAoMiAqIHQubGVuZ3RoKTtcbiAgdW5zYWZlX3NldCB0IHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGRlcXVldWVfbm9uZW1wdHkgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBlbHRzID0gdC5lbHRzIGluXG4gIGxldCBmcm9udCA9IHQuZnJvbnQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBmcm9udCBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgZWx0cyBmcm9udDtcbiAgdC5mcm9udCA8LSBlbHRzX2luZGV4IHQgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIFN0ZGxpYi5RdWV1ZS5FbXB0eSBlbHNlIGRlcXVldWVfbm9uZW1wdHkgdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9ub25lbXB0eSB0KVxubGV0IGRlcXVldWVfYW5kX2lnbm9yZV9leG4gKHR5cGUgZWx0KSAodCA6IGVsdCB0KSA9IGlnbm9yZSAoZGVxdWV1ZV9leG4gdCA6IGVsdClcbmxldCBmcm9udF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIHQuZnJvbnRcbmxldCBsYXN0X25vbmVtcHR5IHQgPSB1bnNhZmVfZ2V0IHQgKHQubGVuZ3RoIC0gMSlcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGZyb250X25vbmVtcHR5IHQpXG5sZXQgcGVla19leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBmcm9udF9ub25lbXB0eSB0XG5sZXQgbGFzdCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChsYXN0X25vbmVtcHR5IHQpXG5sZXQgbGFzdF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBsYXN0X25vbmVtcHR5IHRcblxubGV0IGNsZWFyIHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgdW5zYWZlX3Vuc2V0IHQgaVxuICAgIGRvbmU7XG4gICAgdC5sZW5ndGggPC0gMDtcbiAgICB0LmZyb250IDwtIDApXG47O1xuXG5sZXQgYmxpdF90cmFuc2ZlciB+c3JjIH5kc3QgP2xlbiAoKSA9XG4gIGluY19udW1fbXV0YXRpb25zIHNyYztcbiAgaW5jX251bV9tdXRhdGlvbnMgZHN0O1xuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBzcmMubGVuZ3RoXG4gICAgfCBTb21lIGxlbiAtPlxuICAgICAgaWYgbGVuIDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiUXVldWUuYmxpdF90cmFuc2ZlcjogbmVnYXRpdmUgbGVuZ3RoXCJcbiAgICAgICAgICAgICBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICAgICAgbWluIGxlbiBzcmMubGVuZ3RoXG4gIGluXG4gIGlmIGxlbiA+IDBcbiAgdGhlbiAoXG4gICAgc2V0X2NhcGFjaXR5IGRzdCAobWF4IChjYXBhY2l0eSBkc3QpIChkc3QubGVuZ3RoICsgbGVuKSk7XG4gICAgbGV0IGRzdF9zdGFydCA9IGRzdC5mcm9udCArIGRzdC5sZW5ndGggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgKCogVGhpcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHNpbXBseSBbZW5xdWV1ZSBkc3QgKGRlcXVldWVfbm9uZW1wdHkgc3JjKV0gKilcbiAgICAgIGxldCBzcmNfaSA9IChzcmMuZnJvbnQgKyBpKSBsYW5kIHNyYy5tYXNrIGluXG4gICAgICBsZXQgZHN0X2kgPSAoZHN0X3N0YXJ0ICsgaSkgbGFuZCBkc3QubWFzayBpblxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZVxuICAgICAgICBkc3QuZWx0c1xuICAgICAgICBkc3RfaVxuICAgICAgICAoT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gc3JjLmVsdHMgc3JjX2kpO1xuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBzcmMuZWx0cyBzcmNfaVxuICAgIGRvbmU7XG4gICAgZHN0Lmxlbmd0aCA8LSBkc3QubGVuZ3RoICsgbGVuO1xuICAgIHNyYy5mcm9udCA8LSAoc3JjLmZyb250ICsgbGVuKSBsYW5kIHNyYy5tYXNrO1xuICAgIHNyYy5sZW5ndGggPC0gc3JjLmxlbmd0aCAtIGxlbilcbjs7XG5cbmxldCBlbnF1ZXVlX2FsbCB0IGwgPVxuICAoKiBUcmF2ZXJzaW5nIHRoZSBsaXN0IHVwIGZyb250IHRvIGNvbXB1dGUgaXRzIGxlbmd0aCBpcyBwcm9iYWJseSAoYnV0IG5vdCBkZWZpbml0ZWx5KVxuICAgICBiZXR0ZXIgdGhhbiBkb3VibGluZyB0aGUgdW5kZXJseWluZyBhcnJheSBzaXplIHNldmVyYWwgdGltZXMgZm9yIGxhcmdlIHF1ZXVlcy4gKilcbiAgc2V0X2NhcGFjaXR5IHQgKEludC5tYXggKGNhcGFjaXR5IHQpICh0Lmxlbmd0aCArIExpc3QubGVuZ3RoIGwpKTtcbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgICBsZXQgciA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gICAgZG9uZTtcbiAgICAhcilcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgYSAtPlxuICAgIGxldCBhY2MgPSBmICFpIGFjYyBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgYWNjKSBbQG5vbnRhaWxdXG47O1xuXG5cbigqIFtpdGVyXSBpcyBpbXBsZW1lbnRlZCBkaXJlY3RseSBiZWNhdXNlIGltcGxlbWVudGluZyBpdCBpbiB0ZXJtcyBvZiBbZm9sZF0gaXNcbiAgIHNsb3dlci4gKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHJlc3VsdCA6PSB1bnNhZmVfZ2V0IHQgaSA6OiAhcmVzdWx0XG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYEN1c3RvbSBmb2xkaVxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuXG5cbigqIEZvciBbY29uY2F0X21hcF0sIFtmaWx0ZXJfbWFwXSwgYW5kIFtmaWx0ZXJdLCB3ZSBkb24ndCBjcmVhdGUgW3RfcmVzdWx0XSB3aXRoIFt0XSdzXG4gICBjYXBhY2l0eSBiZWNhdXNlIHdlIGhhdmUgbm8gaWRlYSBob3cgbWFueSBlbGVtZW50cyBbdF9yZXN1bHRdIHdpbGwgdWx0aW1hdGVseSBob2xkLiAqKVxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXIgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXJpIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6c3JjLmxlbmd0aCAoKSBpblxuICBibGl0X3RvX2FycmF5IH5zcmMgZHN0LmVsdHM7XG4gIGRzdC5sZW5ndGggPC0gc3JjLmxlbmd0aDtcbiAgZHN0XG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTooTGlzdC5sZW5ndGggbCkgKCkgaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxuKCogVGhlIHF1ZXVlIFt0XSByZXR1cm5lZCBieSBbY3JlYXRlXSB3aWxsIGhhdmUgW3QubGVuZ3RoID0gMF0sIFt0LmZyb250ID0gMF0sIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBJbnQuY2VpbF9wb3cyIGxlbl0uICBTbywgd2Ugb25seSBoYXZlIHRvIHNldCBbdC5sZW5ndGhdIHRvIFtsZW5dIGFmdGVyXG4gICB0aGUgYmxpdCB0byBtYWludGFpbiBhbGwgdGhlIGludmFyaWFudHM6IFt0Lmxlbmd0aF0gaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgaW4gdGhlIHF1ZXVlLCBbdC5mcm9udF0gaXMgdGhlIGFycmF5IGluZGV4IG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gKilcbmxldCBpbml0IGxlbiB+ZiA9XG4gIGlmIGxlbiA8IDBcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJRdWV1ZS5pbml0OiBuZWdhdGl2ZSBsZW5ndGhcIiBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6bGVuICgpIGluXG4gIGFzc2VydCAoT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgPj0gbGVuKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyBpIChmIGkpXG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIGxlbjtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGEgPSBpbml0IChBcnJheS5sZW5ndGggYSkgfmY6KEFycmF5LnVuc2FmZV9nZXQgYSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCB0Lmxlbmd0aCB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBtYXAgdGEgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHRhLm51bV9tdXRhdGlvbnMgaW5cbiAgbGV0IHRiID0gY3JlYXRlIH5jYXBhY2l0eTp0YS5sZW5ndGggKCkgaW5cbiAgdGIubGVuZ3RoIDwtIHRhLmxlbmd0aDtcbiAgZm9yIGkgPSAwIHRvIHRhLmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgYiA9IGYgKHVuc2FmZV9nZXQgdGEgaSkgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdGEgbnVtX211dGF0aW9ucztcbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHRiLmVsdHMgaSBiXG4gIGRvbmU7XG4gIHRiXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBtYXAgdCB+ZjooZnVuIGEgLT5cbiAgICBsZXQgcmVzdWx0ID0gZiAhaSBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgcmVzdWx0KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6MSAoKSBpblxuICBlbnF1ZXVlIHQgeDtcbiAgdFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHRvX2xpc3QgdCB8PiBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2FcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCB8PiBvZl9saXN0XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB8XG5cbiAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBmdW5jdGlvblxuICAgIHwgKF8gOiB0KSAtPiAuXG4gIDs7XG5cbiAgbGV0IGFsbCA9IFtdXG4gIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBcIkJhc2UuTm90aGluZy50XCIgc2V4cFxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG4gIGxldCB0b19zdHJpbmcgPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBvZl9zdHJpbmcgKF8gOiBzdHJpbmcpID0gZmFpbHdpdGggXCJCYXNlLk5vdGhpbmcub2Zfc3RyaW5nOiBub3Qgc3VwcG9ydGVkXCJcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTm90aGluZ1wiXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkbGliLk5hdGl2ZWludFxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9XG4gICAgKGdsb2JhbGl6ZV9uYXRpdmVpbnQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKG5hdGl2ZWludF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9uYXRpdmVpbnQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gbmF0aXZlaW50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgbGV0IG9mX3N0cmluZ19vcHQgPSBvZl9zdHJpbmdfb3B0XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX25hdGl2ZWludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJW54XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVueFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bV9iaXRzID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBvZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBvZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIk5hdGl2ZWludC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IFN0ZGxpYi5OYXRpdmVpbnQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuTmF0aXZlaW50LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gU3RkbGliLk5hdGl2ZWludC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgKHggOiBuYXRpdmVpbnQpID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gU3RkbGliLk5hdGl2ZWludC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgU3RkbGliLk5hdGl2ZWludC5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBTdGRsaWIuTmF0aXZlaW50LnByZWQgeCA9IDBuXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgbmF0aXZlaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgU3RkbGliLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBpZiBTdGRsaWIuTmF0aXZlaW50LmVxdWFsIGkgU3RkbGliLk5hdGl2ZWludC5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChTdGRsaWIuTmF0aXZlaW50LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcbmxldCBvZl9uYXRpdmVpbnQgdCA9IHRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50IHQgPSB0XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQubmF0aXZlaW50X3BvcGNvdW50XG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IHRvX2ludCA9IENvbnYubmF0aXZlaW50X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnRfZXhuXG5sZXQgdG9faW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50MzIgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX2V4blxubGV0IHRvX2ludDMyX3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuY1xubGV0IHRvX2ludDY0ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtOYXRpdmVpbnRdIGFuZCBbTmF0aXZlaW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuZXh0ZXJuYWwgYnN3YXAgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfbmF0aXZlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1hcF9pbnRmXG5cbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG4gICgqIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIHRlc3RlZCBpbiBbdGVzdF9tYXAubWxdIHRvIG1ha2Ugc3VyZSBvdXIgdXNlIG9mXG4gICAgIFtTdGRsaWIuT2JqLm1hZ2ljXSBpcyBjb3JyZWN0IGFuZCBzYWZlLiAqKVxuICBsZXQgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0ID0gU3RkbGliLk9iai5tYWdpY1xuICBsZXQgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50ID0gU3RkbGliLk9iai5tYWdpY1xuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuTWVyZ2VfZWxlbWVudFxuXG4gIGxldCBsZWZ0ID0gZnVuY3Rpb25cbiAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICB8IGBMZWZ0IGxlZnQgfCBgQm90aCAobGVmdCwgXykgLT4gU29tZSBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgIHwgYFJpZ2h0IHJpZ2h0IHwgYEJvdGggKF8sIHJpZ2h0KSAtPiBTb21lIHJpZ2h0XG4gIDs7XG5cbiAgbGV0IGxlZnRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgUmlnaHQgXyAtPiBkZWZhdWx0XG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IGxlZnRcbiAgOztcblxuICBsZXQgcmlnaHRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBfIC0+IGRlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gcmlnaHRcbiAgOztcblxuICBsZXQgdmFsdWVzIHQgfmxlZnRfZGVmYXVsdCB+cmlnaHRfZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBsZWZ0IC0+IGxlZnQsIHJpZ2h0X2RlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCAtPiBsZWZ0X2RlZmF1bHQsIHJpZ2h0XG4gICAgfCBgQm90aCAobGVmdCwgcmlnaHQpIC0+IGxlZnQsIHJpZ2h0XG4gIDs7XG5lbmRcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuZXhjZXB0aW9uIER1cGxpY2F0ZSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIER1cGxpY2F0ZV0gKGZ1bmN0aW9uXG4gICAgfCBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLkR1cGxpY2F0ZVwiXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbigqIFtXaXRoX2xlbmd0aC50XSBhbGxvd3MgdXMgdG8gc3RvcmUgbGVuZ3RoIGluZm9ybWF0aW9uIG9uIHRoZSBzdGFjayB3aGlsZVxuICAga2VlcGluZyB0aGUgdHJlZSBnbG9iYWwuIFRoaXMgc2F2ZXMgdXAgdG8gTyhsb2cgbikgYmxvY2tzIG9mIGhlYXAgYWxsb2NhdGlvbi4gKilcbm1vZHVsZSBXaXRoX2xlbmd0aCA6IHNpZ1xuICB0eXBlICdhIHQgPSBwcml2YXRlXG4gICAgeyB0cmVlIDogJ2FcbiAgICAgICAgICAgICBbQGdsb2JhbF1cbiAgICA7IGxlbmd0aCA6IGludCBbQGdsb2JhbF1cbiAgICB9XG5cbiAgdmFsIHdpdGhfbGVuZ3RoIDogJ2EgLT4gaW50IC0+ICgnYSB0W0Bsb2NhbF0pXG4gIHZhbCB3aXRoX2xlbmd0aF9nbG9iYWwgOiAnYSAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgZ2xvYmFsaXplIDogKCdhIHRbQGxvY2FsXSkgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB0cmVlIDogJ2EgW0BnbG9iYWxdXG4gICAgOyBsZW5ndGggOiBpbnQgW0BnbG9iYWxdXG4gICAgfVxuXG4gIGxldCB3aXRoX2xlbmd0aCB0cmVlIGxlbmd0aCA9ICB7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCB3aXRoX2xlbmd0aF9nbG9iYWwgdHJlZSBsZW5ndGggPSB7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCBnbG9iYWxpemUgKHsgdHJlZTsgbGVuZ3RoIH0gW0Bsb2NhbF0pID0geyB0cmVlOyBsZW5ndGggfVxuZW5kXG5cbm9wZW4gV2l0aF9sZW5ndGhcblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgTGVhZiBvZiAnayAqICd2XG4gICAgfCBOb2RlIG9mICgnaywgJ3YpIHQgKiAnayAqICd2ICogKCdrLCAndikgdCAqIGludFxuXG4gIHR5cGUgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIHRcblxuICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBoKSAtPiBoXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9rZXkgbG93ZXIgayA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2tleSBrIHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiAoaywgXykgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgfCBOb2RlIChsLCBrLCBfLCByLCBoKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgICAmJiBsb29wIGxvd2VyIChTb21lIGspIGNvbXBhcmVfa2V5IGxcbiAgICAgICAgJiYgbG9vcCAoU29tZSBrKSB1cHBlciBjb21wYXJlX2tleSByXG4gICAgaW5cbiAgICBmdW4gdCB+Y29tcGFyZV9rZXkgLT4gbG9vcCBOb25lIE5vbmUgY29tcGFyZV9rZXkgdFxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMiAqKVxuICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA9IDAgJiYgaHIgPSAwXG4gICAgdGhlbiBMZWFmICh4LCBkKVxuICAgIGVsc2UgTm9kZSAobCwgeCwgZCwgciwgaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpXG4gIDs7XG5cbiAgbGV0IHNpbmdsZXRvbiBrZXkgZGF0YSA9IExlYWYgKGtleSwgZGF0YSlcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5NYXAgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpIDogKF8sIF8pIHQgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgaywgdiA9IGYgaSBpblxuICAgICAgICBMZWFmIChrLCB2KVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgTm9kZSAoTGVhZiAoa2wsIHZsKSwgaywgdiwgRW1wdHksIDIpXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsLCB2bCA9IGYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IsIHZyID0gZiAoaSArIDIpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIExlYWYgKGtyLCB2ciksIDIpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgdiByaWdodFxuICAgIGluXG4gICAgbG9vcCBsZW4gfmYgMFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFycmF5X2xlbmd0aCA9IEFycmF5Lmxlbmd0aCBhcnJheSBpblxuICAgIGxldCBuZXh0ID1cbiAgICAgIGlmIGFycmF5X2xlbmd0aCA8IDJcbiAgICAgICAgIHx8XG4gICAgICAgICBsZXQgazAsIF8gPSBhcnJheS4oMCkgaW5cbiAgICAgICAgIGxldCBrMSwgXyA9IGFycmF5LigxKSBpblxuICAgICAgICAgY29tcGFyZV9rZXkgazAgazEgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBcbiAgICAgICh3aXRoX2xlbmd0aFxuICAgICAgICAgKG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHQpXG4gICAgICAgICBhcnJheV9sZW5ndGgpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+XG4gICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSlcbiAgICB8IF8gLT5cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgaW5jcmVhc2luZyA9XG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oMCkpIChmc3QgYXJyYXkuKDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT4gaSA8IDBcbiAgICAgICAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDIgZG9cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2tleSAoZnN0IGFycmF5LihpKSkgKGZzdCBhcnJheS4oaSArIDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT5cbiAgICAgICAgICAgIGlmIFBvbHkuKCA8PiApIChpIDwgMCkgaW5jcmVhc2luZ1xuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpKVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMyAqKVxuICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsIGluXG4gICAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBociArIDIgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsZCwgbHIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKGxydiwgbHJkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBFbXB0eSkgbHJ2IGxyZCAoY3JlYXRlIEVtcHR5IHggZCByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyZCwgbHJyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBobCArIDIgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByZCwgcnIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKHJsdiwgcmxkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBFbXB0eSkgcmx2IHJsZCAoY3JlYXRlIEVtcHR5IHJ2IHJkIHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsZCwgcmxyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKSkpXG4gICAgZWxzZSBjcmVhdGUgbCB4IGQgclxuICA7O1xuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5IH5zZXhwX29mX2tleSA9XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIltNYXAuYWRkX2V4bl0gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuXG4gIG1vZHVsZSBBZGRfb3Jfc2V0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbFxuICAgICAgfCBBZGRfZXhuXG4gICAgICB8IFNldFxuICBlbmRcblxuICBsZXQgcmVjIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgICAgIH5rZXk6eFxuICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICAgICB+KGFkZF9vcl9zZXQgOiBBZGRfb3Jfc2V0LnQpXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAoeCwgZGF0YSkpIChsZW5ndGggKyAxKSlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBhZGRfb3Jfc2V0IHdpdGhcbiAgICAgICAgfCBBZGRfZXhuX2ludGVybmFsIC0+ICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZSlcbiAgICAgICAgfCBBZGRfZXhuIC0+ICAocmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5KVxuICAgICAgICB8IFNldCAtPiAgKHdpdGhfbGVuZ3RoIChMZWFmICh4LCBkYXRhKSkgbGVuZ3RoKSlcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gICh3aXRoX2xlbmd0aCAoTm9kZSAoTGVhZiAoeCwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKSkgKGxlbmd0aCArIDEpKVxuICAgICAgZWxzZSAgKHdpdGhfbGVuZ3RoIChOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoeCwgZGF0YSksIDIpKSAobGVuZ3RoICsgMSkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGUpXG4gICAgICAgIHwgQWRkX2V4biAtPiAgKHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleSlcbiAgICAgICAgfCBTZXQgLT4gICh3aXRoX2xlbmd0aCAoTm9kZSAobCwgeCwgZGF0YSwgciwgaCkpIGxlbmd0aCkpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIGwgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPVxuICAgICAgICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgfmxlbmd0aCB+a2V5OnggfmRhdGEgciB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0XG4gICAgICAgIGluXG4gICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFtzZXQnXSBmb3IgdGhlIGNhc2Ugd2hlbiBba2V5XSBpcyBsZXNzIHRoYW4gYWxsIHRoZSBleGlzdGluZyBrZXlzICopXG4gIGxldCByZWMgc2V0X21pbiBrZXkgZGF0YSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgKGtleSwgZGF0YSlcbiAgICB8IExlYWYgKHYsIGQpIC0+IE5vZGUgKExlYWYgKGtleSwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBsID0gc2V0X21pbiBrZXkgZGF0YSBsIGluXG4gICAgICBiYWwgbCB2IGQgclxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFtzZXQnXSBmb3IgdGhlIGNhc2Ugd2hlbiBba2V5XSBpcyBncmVhdGVyIHRoYW4gYWxsIHRoZVxuICAgICBleGlzdGluZyBrZXlzICAqKVxuICBsZXQgcmVjIHNldF9tYXggdCBrZXkgZGF0YSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrZXksIGRhdGEpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoa2V5LCBkYXRhKSwgMilcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgciA9IHNldF9tYXggciBrZXkgZGF0YSBpblxuICAgICAgYmFsIGwgdiBkIHJcbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBcbiAgICAgIChmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICB0XG4gICAgICAgICB+bGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICB+c2V4cF9vZl9rZXlcbiAgICAgICAgIH5hZGRfb3Jfc2V0OkFkZF9leG4pXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgXG4gICAgICAoZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgdFxuICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICB+YWRkX29yX3NldDpBZGRfZXhuX2ludGVybmFsKVxuICA7O1xuXG4gIGxldCBzZXQgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBcbiAgICAgIChmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICB0XG4gICAgICAgICB+bGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICB+c2V4cF9vZl9rZXk6KGZ1biBfIC0+IExpc3QgW10pXG4gICAgICAgICB+YWRkX29yX3NldDpTZXQpXG4gIDs7XG5cbiAgbGV0IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXkgPSAoc2V0IHQgfmxlbmd0aDowIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5KS50cmVlXG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRnJhZ21lbnQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPVxuICAgICAgICB7IGxlZnRfc3VidHJlZSA6ICgnaywgJ3YpIHRcbiAgICAgICAgOyBrZXkgOiAna1xuICAgICAgICA7IGRhdGEgOiAndlxuICAgICAgICB9XG5cbiAgICAgIGxldCBzaW5nbGV0b25fdG9fdHJlZV9leG4gPSBmdW5jdGlvblxuICAgICAgICB8IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9IC0+IHNpbmdsZXRvbiBrZXkgZGF0YVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJNYXAuc2luZ2xldG9uX3RvX3RyZWVfZXhuOiBub3QgYSBzaW5nbGV0b25cIlxuICAgICAgOztcblxuICAgICAgbGV0IHNpbmdsZXRvbiB+a2V5IH5kYXRhID0geyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH1cblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGNvbGxhcHNlIGwgciA9IGNyZWF0ZSBsLmxlZnRfc3VidHJlZSBsLmtleSBsLmRhdGEgclxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIubGVmdF9zdWJ0cmVlKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGpvaW4gbCByID0geyByIHdpdGggbGVmdF9zdWJ0cmVlID0gY29sbGFwc2UgbCByLmxlZnRfc3VidHJlZSB9XG4gICAgICBsZXQgbWF4X2tleSB0ID0gdC5rZXlcbiAgICBlbmRcblxuICAgICgqKiBCdWlsZCB0cmVlcyBmcm9tIHNpbmdsZXRvbnMgaW4gYSBiYWxhbmNlZCB3YXkgYnkgdXNpbmcgc2tldyBiaW5hcnkgZW5jb2RpbmcuXG4gICAgICAgIEVhY2ggbGV2ZWwgY29udGFpbnMgdHJlZXMgb2YgdGhlIHNhbWUgaGVpZ2h0LCBjb25zZWN1dGl2ZSBsZXZlbHMgaGF2ZSBjb25zZWN1dGl2ZVxuICAgICAgICBoZWlnaHRzLiBUaGVyZSBhcmUgbm8gZ2Fwcy4gVGhlIGZpcnN0IGxldmVsIGFyZSBzaW5nbGUga2V5cy5cbiAgICAqKVxuICAgIHR5cGUgKCdrLCAndikgdCA9XG4gICAgICB8IFplcm8gb2YgdW5pdFxuICAgICAgKCogW3VuaXRdIHRvIG1ha2UgcGF0dGVybiBtYXRjaGluZyBmYXN0ZXIgKilcbiAgICAgIHwgT25lIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG4gICAgICB8IFR3byBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudCAqICgnaywgJ3YpIEZyYWdtZW50LnRcblxuICAgIGxldCBlbXB0eSA9IFplcm8gKClcblxuICAgIGxldCBhZGRfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCB4ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiBPbmUgKHQsIHgpXG4gICAgICAgIHwgT25lICh0LCB5KSAtPiBUd28gKHQsIHksIHgpXG4gICAgICAgIHwgVHdvICh0LCB6LCB5KSAtPiBPbmUgKGdvIHQgKEZyYWdtZW50LmpvaW4geiB5KSwgeClcbiAgICAgIGluXG4gICAgICBmdW4gdCB+a2V5IH5kYXRhIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbiB+a2V5IH5kYXRhKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZV91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHIgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IHJcbiAgICAgICAgfCBPbmUgKHQsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIGwgcilcbiAgICAgICAgfCBUd28gKHQsIGxsLCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSAoRnJhZ21lbnQuam9pbiBsbCBsKSByKVxuICAgICAgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gRW1wdHlcbiAgICAgIHwgT25lICh0LCByKSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICAgIHwgVHdvICh0LCBsLCByKSAtPiBnbyAoT25lICh0LCBsKSkgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gTm9uZVxuICAgICAgfCBPbmUgKF8sIHIpIHwgVHdvIChfLCBfLCByKSAtPiBTb21lIChGcmFnbWVudC5tYXhfa2V5IHIpXG4gICAgOztcbiAgZW5kXG5cblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5ID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGxldCB7IHRyZWUgPSBidWlsZGVyOyBsZW5ndGggfSA9XG4gICAgICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgICAgICBzZXFcbiAgICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIEJ1aWxkX2luY3JlYXNpbmcuZW1wdHkgMClcbiAgICAgICAgICB+ZjooZnVuIHsgdHJlZSA9IGJ1aWxkZXI7IGxlbmd0aCB9IChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBtYXRjaCBCdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgYnVpbGRlciB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJlX2tleSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICAgICAgICByZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX2luY3JlYXNpbmdfc2VxdWVuY2U6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHdpdGhfbGVuZ3RoX2dsb2JhbFxuICAgICAgICAgICAgICAgIChCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgYnVpbGRlciB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgIChsZW5ndGggKyAxKSlcbiAgICAgIGluXG4gICAgICBPayAod2l0aF9sZW5ndGhfZ2xvYmFsIChCdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIGJ1aWxkZXIpIGxlbmd0aCkpXG4gIDs7XG5cbiAgKCogTGlrZSBbYmFsXSBidXQgYWxsb3dzIGFueSBkaWZmZXJlbmNlIGluIGhlaWdodCBiZXR3ZWVuIFtsXSBhbmQgW3JdLlxuXG4gICAgIE8ofGhlaWdodCBsIC0gaGVpZ2h0IHJ8KSAqKVxuICBsZXQgcmVjIGpvaW4gbCBrIGQgciA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBzZXRfbWluIGsgZCByXG4gICAgfCBfLCBFbXB0eSAtPiBzZXRfbWF4IGwgayBkXG4gICAgfCBMZWFmIChsaywgbGQpLCBfIC0+IHNldF9taW4gbGsgbGQgKHNldF9taW4gayBkIHIpXG4gICAgfCBfLCBMZWFmIChyaywgcmQpIC0+IHNldF9tYXggKHNldF9tYXggbCBrIGQpIHJrIHJkXG4gICAgfCBOb2RlIChsbCwgbGssIGxkLCBsciwgbGgpLCBOb2RlIChybCwgcmssIHJkLCByciwgcmgpIC0+XG4gICAgICAoKiBbYmFsXSByZXF1aXJlcyBoZWlnaHQgZGlmZmVyZW5jZSA8PSAzLiAqKVxuICAgICAgaWYgbGggPiByaCArIDNcbiAgICAgICgqIFtoZWlnaHQgbHIgPj0gaGVpZ2h0IHJdLFxuICAgICAgICAgdGhlcmVmb3JlIFtoZWlnaHQgKGpvaW4gbHIgayBkIHIgLi4uKV0gaXMgW2hlaWdodCBybCArIDFdIG9yIFtoZWlnaHQgcmxdXG4gICAgICAgICB0aGVyZWZvcmUgdGhlIGhlaWdodCBkaWZmZXJlbmNlIHdpdGggW2xsXSB3aWxsIGJlIDw9IDMgKilcbiAgICAgIHRoZW4gYmFsIGxsIGxrIGxkIChqb2luIGxyIGsgZCByKVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgM1xuICAgICAgdGhlbiBiYWwgKGpvaW4gbCBrIGQgcmwpIHJrIHJkIHJyXG4gICAgICBlbHNlIGJhbCBsIGsgZCByXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmVdIHJlYyBzcGxpdF9nZW4gdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICB8IExlYWYgKGssIGQpIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBFbXB0eSwgU29tZSAoaywgZCksIEVtcHR5XG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gRW1wdHksIE5vbmUsIHRcbiAgICAgIGVsc2UgdCwgTm9uZSwgRW1wdHlcbiAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBsLCBTb21lIChrLCBkKSwgclxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBtYXliZSwgbHIgPSBzcGxpdF9nZW4gbCB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBsbCwgbWF5YmUsIGpvaW4gbHIgayBkIHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJsLCBtYXliZSwgcnIgPSBzcGxpdF9nZW4gciB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBqb2luIGwgayBkIHJsLCBtYXliZSwgcnIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgeCB+Y29tcGFyZV9rZXkgPSBzcGxpdF9nZW4gdCB4IH5jb21wYXJlX2tleTooZnVuIHkgLT4gY29tcGFyZV9rZXkgeCB5KVxuXG4gICgqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmVhbGx5IHJlaW5zZXJ0IFt4XSwgYnV0IGp1c3QgYXJyYW5nZXMgc28gdGhhdCBbc3BsaXRdXG4gICAgIHByb2R1Y2VzIHRoZSBlcXVpdmFsZW50IHRyZWUgaW4gdGhlIGZpcnN0IHBsYWNlLiAqKVxuICBsZXQgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG8geCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBsZWZ0LCBib3VuZGFyeV9vcHQsIHJpZ2h0ID1cbiAgICAgIHNwbGl0X2dlblxuICAgICAgICB0XG4gICAgICAgIHhcbiAgICAgICAgfmNvbXBhcmVfa2V5OlxuICAgICAgICAgIChtYXRjaCBpbnRvIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCAtPlxuICAgICAgICAgICAgIGZ1biB5IC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9rZXkgeCB5IHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gMVxuICAgICAgICAgICAgICAgIHwgcmVzIC0+IHJlcylcbiAgICAgICAgICAgfCBgUmlnaHQgLT5cbiAgICAgICAgICAgICBmdW4geSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IHggeSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IC0xXG4gICAgICAgICAgICAgICAgfCByZXMgLT4gcmVzKSlcbiAgICBpblxuICAgIGFzc2VydCAoT3B0aW9uLmlzX25vbmUgYm91bmRhcnlfb3B0KTtcbiAgICBsZWZ0LCByaWdodFxuICA7O1xuXG4gIGxldCBzcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH4obG93ZXJfYm91bmQgOiAnYSBNYXliZV9ib3VuZC50KVxuICAgICAgICB+KHVwcGVyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgPVxuICAgIGlmIE1heWJlX2JvdW5kLmJvdW5kc19jcm9zc2VkXG4gICAgICAgICB+Y29tcGFyZTpjb21wYXJlX2tleVxuICAgICAgICAgfmxvd2VyOmxvd2VyX2JvdW5kXG4gICAgICAgICB+dXBwZXI6dXBwZXJfYm91bmRcbiAgICB0aGVuIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZWZ0LCBtaWRfYW5kX3JpZ2h0ID1cbiAgICAgICAgbWF0Y2ggbG93ZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBlbXB0eSwgdFxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgICB8IEV4Y2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgbGV0IG1pZCwgcmlnaHQgPVxuICAgICAgICBtYXRjaCB1cHBlcl9ib3VuZCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkIC0+IG1pZF9hbmRfcmlnaHQsIGVtcHR5XG4gICAgICAgIHwgSW5jbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YExlZnQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+XG4gICAgICAgICAgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCBtaWRfYW5kX3JpZ2h0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxlZnQsIG1pZCwgcmlnaHQpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIFNvbWUgZCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGQgZWxzZSBmaW5kIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZGF0YSA9IGRhdGEgOjogT3B0aW9uLnZhbHVlIChmaW5kIHQga2V5IH5jb21wYXJlX2tleSkgfmRlZmF1bHQ6W10gaW5cbiAgICAgKHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggZmluZCB0IHggfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gW11cbiAgICB8IFNvbWUgbCAtPiBsXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgaWZfbm90X2ZvdW5kIGtleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgcmFpc2UgKE5vdF9mb3VuZF9zIChMaXN0IFsgQXRvbSBcIk1hcC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHNleHBfb2Zfa2V5IGtleSBdKSlcbiAgICBpblxuICAgIGxldCByZWMgZmluZF9leG4gdCB4IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBpZiBjb21wYXJlX2tleSB4IHYgPSAwIHRoZW4gZCBlbHNlIGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIGQgZWxzZSBmaW5kX2V4biAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgeCB+Y29tcGFyZV9rZXkgPSBPcHRpb24uaXNfc29tZSAoZmluZCB0IHggfmNvbXBhcmVfa2V5KVxuXG4gIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCBkKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoRW1wdHksIGssIGQsIF8sIF8pIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxcbiAgOztcblxuICBleGNlcHRpb24gTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBleGNlcHRpb24gTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWluX2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWluX2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIGssIGQsIEVtcHR5LCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoXywgXywgXywgciwgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIF8sIHIsIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHgsIGQsIHIsIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgeCBkIHJcbiAgOztcblxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggbWF4X2VsdCBsb3dlcl9wYXJ0LCBtaW5fZWx0IHVwcGVyX3BhcnQgd2l0aFxuICAgIHwgTm9uZSwgXyAtPiBgT2sgdXBwZXJfcGFydFxuICAgIHwgXywgTm9uZSAtPiBgT2sgbG93ZXJfcGFydFxuICAgIHwgU29tZSAobWF4X2xvd2VyLCBfKSwgU29tZSAobWluX3VwcGVyLCB2KSB3aGVuIGNvbXBhcmVfa2V5IG1heF9sb3dlciBtaW5fdXBwZXIgPCAwIC0+XG4gICAgICBsZXQgdXBwZXJfcGFydF93aXRob3V0X21pbiA9IHJlbW92ZV9taW5fZWx0IHVwcGVyX3BhcnQgaW5cbiAgICAgIGBPayAoam9pbiBsb3dlcl9wYXJ0IG1pbl91cHBlciB2IHVwcGVyX3BhcnRfd2l0aG91dF9taW4pXG4gICAgfCBfIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlID1cbiAgICAoKiBUaGlzIGFzc3VtZXMgdGhhdCBtaW4gPD0gbWF4LCB3aGljaCBpcyBjaGVja2VkIGJ5IHRoZSBvdXRlciBmdW5jdGlvbi4gKilcbiAgICBsZXQgcmVjIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW5pdFxuICAgICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSBrIG1pbiA8IDAgfHwgY29tcGFyZV9rZXkgayBtYXggPiAwXG4gICAgICAgIHRoZW4gKCogayA8IG1pbiB8fCBrID4gbWF4ICopXG4gICAgICAgICAgaW5pdFxuICAgICAgICBlbHNlIGYgfmtleTprIH5kYXRhOmQgaW5pdFxuICAgICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgY19taW4gPSBjb21wYXJlX2tleSBrIG1pbiBpblxuICAgICAgICBpZiBjX21pbiA8IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPCBtaW4sIHRoZW4gdGhpcyBub2RlIGFuZCBpdHMgbGVmdCBicmFuY2ggYXJlIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgaWYgY19taW4gPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrID0gbWluLCB0aGVuIHRoaXMgbm9kZSdzIGxlZnQgYnJhbmNoIGlzIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQ6KGYgfmtleTprIH5kYXRhOmQgaW5pdCkgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGsgPiBtaW4gKilcbiAgICAgICAgICBsZXQgeiA9IGdvIGwgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGxldCBjX21heCA9IGNvbXBhcmVfa2V5IGsgbWF4IGluXG4gICAgICAgICAgKCogaWYgayA+IG1heCwgd2UncmUgZG9uZSAqKVxuICAgICAgICAgIGlmIGNfbWF4ID4gMFxuICAgICAgICAgIHRoZW4gelxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHogPSBmIH5rZXk6ayB+ZGF0YTpkIHogaW5cbiAgICAgICAgICAgICgqIGlmIGsgPSBtYXgsIHRoZW4gd2UgZm9sZCBpbiB0aGlzIG9uZSBsYXN0IHZhbHVlIGFuZCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgICBpZiBjX21heCA9IDAgdGhlbiB6IGVsc2UgZ28gciB+bWluIH5tYXggfmluaXQ6eiB+ZiB+Y29tcGFyZV9rZXkpKVxuICAgIGluXG4gICAgZnVuIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgY29tcGFyZV9rZXkgbWluIG1heCA8PSAwIHRoZW4gZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGVsc2UgaW5pdFxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXkgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgICAgIHRcbiAgICAgICAgIH5taW5cbiAgICAgICAgIH5tYXhcbiAgICAgICAgIH5pbml0OltdXG4gICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgbCAtPiAoa2V5LCBkYXRhKSA6OiBsKVxuICAgICAgICAgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbnM6XG4gICAgIC0gYWxsIGVsZW1lbnRzIGluIHQxIGFyZSBsZXNzIHRoYW4gZWxlbWVudHMgaW4gdDJcbiAgICAgLSB8aGVpZ2h0KHQxKSAtIGhlaWdodCh0Mil8IDw9IDIgKilcbiAgbGV0IGNvbmNhdF91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICAoKiBzaW1pbGFyIHRvIFtjb25jYXRfdW5jaGVja2VkXSwgYW5kIGJhbGFuY2VzIHRyZWVzIG9mIGFyYml0cmFyeSBoZWlnaHQgZGlmZmVyZW5jZXMgKilcbiAgbGV0IGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFJlbW92ZV9ub19vcFxuXG4gIGxldCByZW1vdmUgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wKVxuICAgICAgfCBMZWFmICh2LCBfKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSB4IHYgPSAwXG4gICAgICAgIHRoZW4gICh3aXRoX2xlbmd0aCBFbXB0eSAobGVuZ3RoIC0gMSkpXG4gICAgICAgIGVsc2UgIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuICAod2l0aF9sZW5ndGggKGNvbmNhdF91bmNoZWNrZWQgbCByKSAobGVuZ3RoIC0gMSkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gcmVtb3ZlX2xvb3AgbCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHJlbW92ZV9sb29wIHIgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgIGluXG4gICAgdHJ5ICAocmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5KSB3aXRoXG4gICAgfCBSZW1vdmVfbm9fb3AgLT4gICh3aXRoX2xlbmd0aCB0IGxlbmd0aClcbiAgOztcblxuICAoKiBVc2UgZXhjZXB0aW9uIHRvIGF2b2lkIHRyZWUtcmVidWlsZCBpbiBuby1vcCBjYXNlICopXG4gIGV4Y2VwdGlvbiBDaGFuZ2Vfbm9fb3BcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIGNoYW5nZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICgqIGVxdWl2YWxlbnQgdG8gcmV0dXJuaW5nOiBFbXB0eSAqKVxuICAgICAgICAgICAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBDaGFuZ2Vfbm9fb3ApXG4gICAgICAgICB8IFNvbWUgZGF0YSAtPiAgKHdpdGhfbGVuZ3RoIChMZWFmIChrZXksIGRhdGEpKSAobGVuZ3RoICsgMSkpKVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAgKHdpdGhfbGVuZ3RoIEVtcHR5IChsZW5ndGggLSAxKSlcbiAgICAgICAgICB8IFNvbWUgZCcgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAodiwgZCcpKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIEVtcHR5KSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBFbXB0eSB2IGQgcikgbGVuZ3RoKSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gICh3aXRoX2xlbmd0aCAoY29uY2F0X3VuY2hlY2tlZCBsIHIpIChsZW5ndGggLSAxKSlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiAgKHdpdGhfbGVuZ3RoIChOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gY2hhbmdlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgIGluXG4gICAgdHJ5ICAoY2hhbmdlX2NvcmUgdCBrZXkgZikgd2l0aFxuICAgIHwgQ2hhbmdlX25vX29wIC0+ICAod2l0aF9sZW5ndGggdCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyB1cGRhdGVfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGYgTm9uZSBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChMZWFmIChrZXksIGRhdGEpKSAobGVuZ3RoICsgMSkpXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGQnID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKExlYWYgKHYsIGQnKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCBFbXB0eSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgRW1wdHkgdiBkIHIpIGxlbmd0aCkpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGRhdGEgPSBmIChTb21lIGQpIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHVwZGF0ZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICBpblxuICAgICAodXBkYXRlX2NvcmUgdCBrZXkgZilcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBcbiAgICAgIChjaGFuZ2UgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICB8IE5vbmUgfCBTb21lIChbXSB8IFsgXyBdKSAtPiBOb25lXG4gICAgICAgICB8IFNvbWUgKF8gOjogKF8gOjogXyBhcyBub25fZW1wdHlfdGFpbCkpIC0+IFNvbWUgbm9uX2VtcHR5X3RhaWwpKVxuICA7O1xuXG4gIGxldCByZWMgaXRlcl9rZXlzIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIF8pIC0+IGYgdlxuICAgIHwgTm9kZSAobCwgdiwgXywgciwgXykgLT5cbiAgICAgIGl0ZXJfa2V5cyB+ZiBsO1xuICAgICAgZiB2O1xuICAgICAgaXRlcl9rZXlzIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAoXywgZCkgLT4gZiBkXG4gICAgfCBOb2RlIChsLCBfLCBkLCByLCBfKSAtPlxuICAgICAgaXRlciB+ZiBsO1xuICAgICAgZiBkO1xuICAgICAgaXRlciB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgaXRlcmkgfmYgbDtcbiAgICAgIGYgfmtleTp2IH5kYXRhOmQ7XG4gICAgICBpdGVyaSB+ZiByXG4gIDs7XG5cbiAgbGV0IGl0ZXJpX3VudGlsID1cbiAgICBsZXQgcmVjIGl0ZXJpX3VudGlsX2xvb3AgdCB+ZiA6IENvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggaXRlcmlfdW50aWxfbG9vcCB+ZiBsIHdpdGhcbiAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICB8IENvbnRpbnVlIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICAgICB8IENvbnRpbnVlIC0+IGl0ZXJpX3VudGlsX2xvb3AgfmYgcikpXG4gICAgaW5cbiAgICBmdW4gdCB+ZiAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLm9mX2NvbnRpbnVlX29yX3N0b3AgKGl0ZXJpX3VudGlsX2xvb3AgdCB+ZilcbiAgOztcblxuICBsZXQgcmVjIG1hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIGQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgbGV0IHInID0gbWFwIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXBpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgfmtleTp2IH5kYXRhOmQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwaSB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBtYXBpIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBmb2xkIHQgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2xvb3AgdCB+YWNjIH5mIDogKF8sIF8pIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlIGFjY1xuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY1xuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9sb29wIGwgfmFjYyB+ZiB3aXRoXG4gICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgYWNjIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBmb2xkX3VudGlsX2xvb3AgciB+YWNjIH5mKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfbG9vcCB0IH5hY2M6aW5pdCB+ZiB3aXRoXG4gICAgfCBDb250aW51ZSBhY2MgLT4gZmluaXNoIGFjYyBbQG5vbnRhaWxdXG4gICAgfCBTdG9wIHN0b3AgLT4gc3RvcFxuICA7O1xuXG4gIGxldCByZWMgZm9sZF9yaWdodCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkX3JpZ2h0IH5mIHIgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaWx0ZXJfbWFwaSB0IH5mIH5sZW4gPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgfCBTb21lIG5ld19kYXRhIC0+IExlYWYgKHYsIG5ld19kYXRhKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICBFbXB0eSlcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwaSBsIH5mIH5sZW4gaW5cbiAgICAgIGxldCBuZXdfZGF0YSA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgIGxldCByJyA9IGZpbHRlcl9tYXBpIHIgfmYgfmxlbiBpblxuICAgICAgKG1hdGNoIG5ld19kYXRhIHdpdGhcbiAgICAgICB8IFNvbWUgbmV3X2RhdGEgLT4gam9pbiBsJyB2IG5ld19kYXRhIHInXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBkZWNyIGxlbjtcbiAgICAgICAgIGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaWx0ZXJpIHQgfmYgfmxlbiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICB8IHRydWUgLT4gdFxuICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgRW1wdHkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGwnID0gZmlsdGVyaSBsIH5mIH5sZW4gaW5cbiAgICAgIGxldCBrZWVwX2RhdGEgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBmaWx0ZXJpIHIgfmYgfmxlbiBpblxuICAgICAgaWYgcGh5c19lcXVhbCBsIGwnICYmIGtlZXBfZGF0YSAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgIHRoZW4gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGtlZXBfZGF0YSB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPiBqb2luIGwnIHYgZCByJ1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICAgY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCBsJyByJylcbiAgOztcblxuICBsZXQgZmlsdGVyIHQgfmYgfmxlbiA9IGZpbHRlcmkgdCB+bGVuIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiB+bGVuID0gZmlsdGVyaSB0IH5sZW4gfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiB+bGVuID0gZmlsdGVyX21hcGkgdCB+bGVuIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgICBsZXQgdDEsIHQyID1cbiAgICAgIGZvbGRcbiAgICAgICAgdFxuICAgICAgICB+aW5pdDooQnVpbGRfaW5jcmVhc2luZy5lbXB0eSwgQnVpbGRfaW5jcmVhc2luZy5lbXB0eSlcbiAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICh0MSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHggLT4gQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQxIH5rZXkgfmRhdGE6eCwgdDJcbiAgICAgICAgICB8IFNlY29uZCB5IC0+IHQxLCBCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgdDIgfmtleSB+ZGF0YTp5KVxuICAgIGluXG4gICAgQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0MSwgQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0MlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICAgIGxldCByZWMgbG9vcCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgICAgfCB0cnVlIC0+IHQsIEVtcHR5XG4gICAgICAgICB8IGZhbHNlIC0+IEVtcHR5LCB0KVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgbCd0LCBsJ2YgPSBsb29wIGwgfmYgaW5cbiAgICAgICAgbGV0IGtlZXBfZGF0YV90ID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgICBsZXQgcid0LCByJ2YgPSBsb29wIHIgfmYgaW5cbiAgICAgICAgbGV0IG1rIGwnIGtlZXBfZGF0YSByJyA9XG4gICAgICAgICAgaWYgcGh5c19lcXVhbCBsIGwnICYmIGtlZXBfZGF0YSAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgICAgICB0aGVuIHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGtlZXBfZGF0YSB3aXRoXG4gICAgICAgICAgICB8IHRydWUgLT4gam9pbiBsJyB2IGQgcidcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCBsJyByJylcbiAgICAgICAgaW5cbiAgICAgICAgbWsgbCd0IGtlZXBfZGF0YV90IHIndCwgbWsgbCdmIChub3Qga2VlcF9kYXRhX3QpIHInZlxuICAgIGluXG4gICAgbG9vcCB0IH5mXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnaywgJ3YsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnayAqICd2ICogKCdrLCAndikgdHJlZSAqICgnaywgJ3YsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyB0IChlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCB0IChlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl90cmVlIHRyZWUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9IGNvbnMgdHJlZSBFbmRcbiAgICBsZXQgb2ZfdHJlZV9yaWdodCB0cmVlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHRyZWUgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgXywgciwgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RlcF9kZWVwZXJfZXhuIHRyZWUgZSA9XG4gICAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IEVtcHR5LCBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbCwgTW9yZSAodiwgZCwgciwgZSlcbiAgICA7O1xuXG4gICAgKCogW2Ryb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyXSBkcm9wcyB0aGUgbGFyZ2VzdCBwaHlzaWNhbGx5LWVxdWFsXG4gICAgICAgcHJlZml4IG9mIHRyZWUxIGFuZCB0cmVlMiB0aGF0IHRoZXkgc2hhcmUsIGFuZCB0aGVuIHByZXBlbmRzIHRoZSByZW1haW5pbmcgZGF0YVxuICAgICAgIGludG8gYWNjMSBhbmQgYWNjMiwgcmVzcGVjdGl2ZWx5LlxuICAgICAgIFRoaXMgY2FuIGJlIGFzeW1wdG90aWNhbGx5IGZhc3RlciB0aGFuIFtjb25zXSBldmVuIGlmIGl0IHNraXBzIGEgc21hbGwgcHJvcG9ydGlvblxuICAgICAgIG9mIHRoZSB0cmVlIGJlY2F1c2UgW2NvbnNdIGlzIGFsd2F5cyBPKGxvZyhuKSkgaW4gdGhlIHNpemUgb2YgdGhlIHRyZWUsIHdoaWxlXG4gICAgICAgdGhpcyBmdW5jdGlvbiBpcyBPKGxvZyhuL20pKSB3aGVyZSBbbV0gaXMgdGhlIHNpemUgb2YgdGhlIHBhcnQgb2YgdGhlIHRyZWUgdGhhdFxuICAgICAgIGlzIHNraXBwZWQuICopXG4gICAgbGV0IHJlYyBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICB0aGVuIGFjYzEsIGFjYzJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaDIgPSBoZWlnaHQgdHJlZTIgaW5cbiAgICAgICAgbGV0IGgxID0gaGVpZ2h0IHRyZWUxIGluXG4gICAgICAgIGlmIGgyID0gaDFcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHRyZWUxLCBhY2MxID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUxIGFjYzEgaW5cbiAgICAgICAgICBsZXQgdHJlZTIsIGFjYzIgPSBzdGVwX2RlZXBlcl9leG4gdHJlZTIgYWNjMiBpblxuICAgICAgICAgIGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyKVxuICAgICAgICBlbHNlIGlmIGgyID4gaDFcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHRyZWUyLCBhY2MyID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUyIGFjYzIgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHRyZWUxLCBhY2MxID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUxIGFjYzEgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMikpXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2RhdGEgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGUxLCBlMiA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggcjEgZTEgcjIgZTIgaW5cbiAgICAgICAgICAgICAgbG9vcCBlMSBlMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgZGF0YV9lcXVhbCB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IHRydWVcbiAgICAgICAgfCBFbmQsIF8gfCBfLCBFbmQgLT4gZmFsc2VcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGNvbXBhcmVfa2V5IHYxIHYyID0gMFxuICAgICAgICAgICYmIGRhdGFfZXF1YWwgZDEgZDJcbiAgICAgICAgICAmJlxuICAgICAgICAgIGxldCBlMSwgZTIgPSBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHIxIGUxIHIyIGUyIGluXG4gICAgICAgICAgbG9vcCBlMSBlMlxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmb2xkIH5pbml0IH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+IGluaXRcbiAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBsZXQgbmV4dCA9IGYgfmtleSB+ZGF0YSBpbml0IGluXG4gICAgICAgIGZvbGQgKGNvbnMgdHJlZSBlbnVtKSB+aW5pdDpuZXh0IH5mXG4gICAgOztcblxuICAgIGxldCBmb2xkMiBjb21wYXJlX2tleSB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgY3VyciA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gY3VyclxuICAgICAgICB8IEVuZCwgXyAtPlxuICAgICAgICAgIGZvbGQgdDIgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYFJpZ2h0IGRhdGEpIGFjYykgW0Bub250YWlsXG4gICAgICAgICAgXVxuICAgICAgICB8IF8sIEVuZCAtPlxuICAgICAgICAgIGZvbGQgdDEgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYExlZnQgZGF0YSkgYWNjKSBbQG5vbnRhaWxcbiAgICAgICAgICBdXG4gICAgICAgIHwgTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpLCBNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBCb3RoICh2MSwgdjIpKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBMZWZ0IHYxKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSB0MiBuZXh0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azIgfmRhdGE6KGBSaWdodCB2MikgY3VyciBpblxuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyIGluaXQgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsID1cbiAgICAgIGxldCBzdGVwIHN0YXRlID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGtleSwgYFJpZ2h0IGRhdGE7IHN0YXRlID0gRW5kLCBjb25zIHRyZWUgZW51bSB9XG4gICAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSwgRW5kIC0+XG4gICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0ga2V5LCBgTGVmdCBkYXRhOyBzdGF0ZSA9IGNvbnMgdHJlZSBlbnVtLCBFbmQgfVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBlbnVtMSB0cmVlMiBlbnVtMiBpblxuICAgICAgICAgICAgaWYgZGF0YV9lcXVhbCB2MSB2MlxuICAgICAgICAgICAgdGhlbiBTZXF1ZW5jZS5TdGVwLlNraXAgeyBzdGF0ZSA9IG5leHRfc3RhdGUgfVxuICAgICAgICAgICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrMSwgYFVuZXF1YWwgKHYxLCB2Mik7IHN0YXRlID0gbmV4dF9zdGF0ZSB9KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazEsIGBMZWZ0IHYxOyBzdGF0ZSA9IGNvbnMgdHJlZTEgZW51bTEsIHJpZ2h0IH1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrMiwgYFJpZ2h0IHYyOyBzdGF0ZSA9IGxlZnQsIGNvbnMgdHJlZTIgZW51bTIgfVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0Oihkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHQxIEVuZCB0MiBFbmQpIH5mOnN0ZXBcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAgIGxldCBhZGQgYWNjIGsgdiA9IGYgYWNjIChrLCBgUmlnaHQgdikgaW5cbiAgICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgICAgbGV0IHJlYyBsb29wIGxlZnQgcmlnaHQgYWNjID1cbiAgICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgICB8IEVuZCwgZW51bSAtPlxuICAgICAgICAgIGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgZW51bSwgRW5kIC0+XG4gICAgICAgICAgZm9sZCBlbnVtIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaWYgZGF0YV9lcXVhbCB2MSB2MiB0aGVuIGFjYyBlbHNlIGYgYWNjIChrMSwgYFVuZXF1YWwgKHYxLCB2MikpIGluXG4gICAgICAgICAgICBsZXQgZW51bTEsIGVudW0yID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBlbnVtMSB0cmVlMiBlbnVtMiBpblxuICAgICAgICAgICAgbG9vcCBlbnVtMSBlbnVtMiBhY2MpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsxIHYxIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSByaWdodCBhY2MpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrMiB2MiBpblxuICAgICAgICAgICAgbG9vcCBsZWZ0IChjb25zIHRyZWUyIGVudW0yKSBhY2MpXG4gICAgICBpblxuICAgICAgbGV0IGxlZnQsIHJpZ2h0ID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgICBsb29wIGxlZnQgcmlnaHQgaW5pdCBbQG5vbnRhaWxdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT5cbiAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gaywgdjsgc3RhdGUgPSBFbnVtLmNvbnMgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWUgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPlxuICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrLCB2OyBzdGF0ZSA9IEVudW0uY29uc19yaWdodCB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9rZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2ZfdHJlZV9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZ19rZXkpXG4gICAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2tleSBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSAtPiBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19sZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBsZXQgZTEsIGUyID0gRW51bS5kcm9wX3BoeXNfZXF1YWxfcHJlZml4IHQxIEVuZCB0MiBFbmQgaW5cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIGUxIGUyXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgbGV0IGUxLCBlMiA9IEVudW0uZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgRW51bS5lcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgZTEgZTJcbiAgOztcblxuICBsZXQgaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyXG4gICAgICBjb21wYXJlX2tleVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MSlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDIpXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICgpIC0+IGYgfmtleSB+ZGF0YSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDIgY29tcGFyZV9rZXkgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MikgfmYgfmluaXRcbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAoKiBbRW51bS5mb2xkX2RpZmZzXSBpcyBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwgYnV0IGlzIGNvbnNpZGVyYWJseVxuICAgICAgIHNsb3dlciwgYXMgd2UgaGF2ZSB0byBhbGxvY2F0ZSBxdWl0ZSBhIGxvdCBvZiBzdGF0ZSB0byB0cmFjayBlbnVtZXJhdGlvbiBvZiBhIHRyZWUuXG4gICAgICAgQXZvaWQgaWYgd2UgY2FuLlxuICAgICopXG4gICAgbGV0IHNsb3cgeCB5IH5pbml0ID0gRW51bS5mb2xkX3N5bW1ldHJpY19kaWZmIHggeSB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmYgfmluaXQgaW5cbiAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgbGV0IGRlbHRhIGFjYyBrIHYgdicgPSBpZiBkYXRhX2VxdWFsIHYgdicgdGhlbiBhY2MgZWxzZSBmIGFjYyAoaywgYFVuZXF1YWwgKHYsIHYnKSkgaW5cbiAgICAoKiBJZiB0d28gdHJlZXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXQgdGhlIHJvb3QgKGFuZCB0aGUgc2FtZSBrZXksIGlmIHRoZXkncmVcbiAgICAgICBbTm9kZV1zKSB3ZSBjYW4gdHJpdmlhbGx5IGRpZmYgZWFjaCBzdWJwYXJ0IGluIG9idmlvdXMgd2F5cy4gKilcbiAgICBsZXQgcmVjIGxvb3AgdCB0JyBhY2MgPVxuICAgICAgaWYgcGh5c19lcXVhbCB0IHQnXG4gICAgICB0aGVuIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQsIHQnIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgbmV3X3ZhbHMgLT5cbiAgICAgICAgICBmb2xkIG5ld192YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCBvbGRfdmFscywgRW1wdHkgLT5cbiAgICAgICAgICBmb2xkIG9sZF92YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCBMZWFmIChrLCB2KSwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSBrIGsnIHdpdGhcbiAgICAgICAgICAgfCB4IHdoZW4geCA9IDAgLT4gZGVsdGEgYWNjIGsgdiB2J1xuICAgICAgICAgICB8IHggd2hlbiB4IDwgMCAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsgdiBpblxuICAgICAgICAgICAgIGFkZCBhY2MgaycgdidcbiAgICAgICAgICAgfCBfICgqIHdoZW4geCA+IDAgKikgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrJyB2JyBpblxuICAgICAgICAgICAgIHJlbW92ZSBhY2MgayB2KVxuICAgICAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pLCBOb2RlIChsJywgaycsIHYnLCByJywgXykgd2hlbiBjb21wYXJlX2tleSBrIGsnID0gMCAtPlxuICAgICAgICAgIGxldCBhY2MgPSBsb29wIGwgbCcgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IGRlbHRhIGFjYyBrIHYgdicgaW5cbiAgICAgICAgICBsb29wIHIgcicgYWNjXG4gICAgICAgICgqIE91ciByb290cyBhcmVuJ3QgdGhlIHNhbWUga2V5LiBGYWxsYmFjayB0byB0aGUgc2xvdyBtb2RlLiBUcmVlcyB3aXRoIHNtYWxsXG4gICAgICAgICAgIGRpZmZzIHdpbGwgb25seSBkbyB0aGlzIG9uIHZlcnkgc21hbGwgcGFydHMgb2YgdGhlIHRyZWUgKGhvcGVmdWxseSAtIGlmIHRoZVxuICAgICAgICAgICBvdmVyYWxsIHJvb3QgaXMgcmViYWxhbmNlZCwgd2UnbGwgZWF0IHRoZSB3aG9sZSBjb3N0LCB1bmZvcnR1bmF0ZWx5LikgKilcbiAgICAgICAgfCBOb2RlIF8sIE5vZGUgXyB8IE5vZGUgXywgTGVhZiBfIHwgTGVhZiBfLCBOb2RlIF8gLT4gc2xvdyB0IHQnIH5pbml0OmFjYylcbiAgICBpblxuICAgIGxvb3AgdDEgdDIgaW5pdCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJlYyBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKGwsIF8sIF8sIHIsIF8pIC0+IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIGZvbGRcbiAgICAgIHRcbiAgICAgIH5pbml0OihoYXNoX2ZvbGRfaW50IHN0YXRlIChsZW5ndGggdCkpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgc3RhdGUgLT4gaGFzaF9mb2xkX2RhdGEgKGhhc2hfZm9sZF9rZXkgc3RhdGUga2V5KSBkYXRhKVxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleSB+ZGF0YTpfIGxpc3QgLT4ga2V5IDo6IGxpc3QpIHQgfmluaXQ6W11cbiAgbGV0IGRhdGEgdCA9IGZvbGRfcmlnaHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIHQgfmluaXQ6W11cblxuICBtb2R1bGUgdHlwZSBGb2xkYWJsZSA9IHNpZ1xuICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuICBlbmRcblxuICBsZXRbQGlubGluZSBhbHdheXNdIG9mX2ZvbGRhYmxlJyB+Zm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIChmb2xkIFtAaW5saW5lZCBoaW50XSlcbiAgICAgIGZvbGRhYmxlXG4gICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICB+ZjooZnVuIHsgdHJlZSA9IGFjY3VtOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICBsZXQgcHJldl9kYXRhID1cbiAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbml0XG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldlxuICAgICAgICBpblxuICAgICAgICBsZXQgZGF0YSA9IGYgcHJldl9kYXRhIGRhdGEgaW5cbiAgICAgICAgKHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICA7O1xuXG4gIG1vZHVsZSBPZl9mb2xkYWJsZSAoTSA6IEZvbGRhYmxlKSA9IHN0cnVjdFxuICAgIGxldCBvZl9mb2xkYWJsZV9mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBvZl9mb2xkYWJsZScgfmZvbGQ6TS5mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfcmVkdWNlIGZvbGRhYmxlIH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBNLmZvbGRcbiAgICAgICAgZm9sZGFibGVcbiAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICB+ZjooZnVuIHsgdHJlZSA9IGFjY3VtOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIGxldCBuZXdfZGF0YSA9XG4gICAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgICAgICAgIHwgU29tZSBwcmV2IC0+IGYgcHJldiBkYXRhXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoc2V0IGFjY3VtIH5sZW5ndGggfmtleSB+ZGF0YTpuZXdfZGF0YSB+Y29tcGFyZV9rZXkgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxcbiAgICAgIF1cbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleSA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgTS5mb2xkXG4gICAgICAgICAgICBmb2xkYWJsZVxuICAgICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IGxlbmd0aCcgfSBhcyBhY2MpID1cbiAgICAgICAgICAgICAgICBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCdcbiAgICAgICAgICAgICAgdGhlbiByLnJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KVxuICAgICAgICAgICAgICBlbHNlIGdsb2JhbGl6ZSBhY2MgW0Bub250YWlsXSlcbiAgICAgICAgaW5cbiAgICAgICAgYE9rIG1hcClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX29yX2Vycm9yIGZvbGRhYmxlIH5jb21wYXJhdG9yID1cbiAgICAgIG1hdGNoIG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX29yX2Vycm9yOiBkdXBsaWNhdGUga2V5XCIpXG4gICAgICAgICAga2V5XG4gICAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX2V4biBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgKFwiTWFwLm9mX1wiIF4gTS5uYW1lIF4gXCJfZXhuOiBkdXBsaWNhdGUga2V5XCIpIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgIDs7XG5cbiAgICAoKiBSZXZlcnNlIHRoZSBpbnB1dCwgdGhlbiBmb2xkIGZyb20gbGVmdCB0byByaWdodC4gVGhlIHJlc3VsdGluZyBtYXAgdXNlcyB0aGUgZmlyc3RcbiAgICAgICBpbnN0YW5jZSBvZiBlYWNoIGtleSBmcm9tIHRoZSBpbnB1dCBsaXN0LiBUaGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgZWxlbWVudHMgaW4gZWFjaFxuICAgICAgIG91dHB1dCBsaXN0IGlzIHRoZSBzYW1lIGFzIGluIHRoZSBpbnB1dCBsaXN0LiAqKVxuICAgIGxldCBvZl9mb2xkYWJsZV9tdWx0aSBmb2xkYWJsZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgbGV0IGFsaXN0ID0gTS5mb2xkIGZvbGRhYmxlIH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgaW5cbiAgICAgIG9mX2ZvbGRhYmxlJyBhbGlzdCB+Zm9sZDpMaXN0LmZvbGQgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSB+Y29tcGFyZV9rZXlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgT2ZfYWxpc3QgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwiYWxpc3RcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBmb2xkID0gTGlzdC5mb2xkXG4gICAgZW5kKVxuXG4gIGxldCBvZl9hbGlzdF9mb2xkID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZm9sZFxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfcmVkdWNlXG4gIGxldCBvZl9hbGlzdCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX29yX2Vycm9yXG4gIGxldCBvZl9hbGlzdF9leG4gPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9leG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfbXVsdGlcblxuICBtb2R1bGUgT2Zfc2VxdWVuY2UgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwic2VxdWVuY2VcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICAgIGxldCBmb2xkID0gU2VxdWVuY2UuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2Zfc2VxdWVuY2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfZXhuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX211bHRpXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXkgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgbGV0IG1hcCA9XG4gICAgICAgIExpc3QuZm9sZFxuICAgICAgICAgIGxpc3RcbiAgICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQga2V5ID0gZ2V0X2tleSBkYXRhIGluXG4gICAgICAgICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IG5ld19sZW5ndGggfSBhcyBhY2MpID1cbiAgICAgICAgICAgICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGxlbmd0aCA9IG5ld19sZW5ndGhcbiAgICAgICAgICAgIHRoZW4gci5yZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSlcbiAgICAgICAgICAgIGVsc2UgZ2xvYmFsaXplIGFjYyBbQG5vbnRhaWxdKVxuICAgICAgaW5cbiAgICAgIGBPayBtYXApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yID1cbiAgICBtYXRjaCBvZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgIFwiTWFwLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3I6IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBrZXlcbiAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeCAtPiB4XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmNyZWF0ZSBcIk1hcC5vZl9saXN0X3dpdGhfa2V5X2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGxpc3QgPSBMaXN0LnJldiBsaXN0IGluXG4gICAgTGlzdC5mb2xkIGxpc3QgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKSB+ZjooZnVuIHsgdHJlZSA9IHQ7IGxlbmd0aCB9IGRhdGEgLT5cbiAgICAgIGxldCBrZXkgPSBnZXRfa2V5IGRhdGEgaW5cbiAgICAgICh1cGRhdGUgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1biBvcHRpb24gLT5cbiAgICAgICAgIGxldCBsaXN0ID0gT3B0aW9uLnZhbHVlIG9wdGlvbiB+ZGVmYXVsdDpbXSBpblxuICAgICAgICAgZGF0YSA6OiBsaXN0KVxuICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBub3QgKGYgZGF0YSkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgICB0cnVlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgbm90IChmIH5rZXkgfmRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIGYgZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXG4gICAgXVxuICA7O1xuXG4gIGxldCB0b19hbGlzdCA/KGtleV9vcmRlciA9IGBJbmNyZWFzaW5nKSB0ID1cbiAgICBtYXRjaCBrZXlfb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT4gZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gICAgfCBgRGVjcmVhc2luZyAtPiBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIHggLT4gKGtleSwgZGF0YSkgOjogeClcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZWx0cyA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46KGxlbmd0aCB0MSArIGxlbmd0aCB0MikgaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgaXRlcjIgdDEgdDIgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleSB+ZGF0YTp2YWx1ZXMgLT5cbiAgICAgIG1hdGNoIGYgfmtleSB2YWx1ZXMgd2l0aFxuICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgIFVuaWZvcm1fYXJyYXkuc2V0IGVsdHMgIWkgKGtleSwgdmFsdWUpO1xuICAgICAgICBpbmNyIGlcbiAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgbGV0IGxlbiA9ICFpIGluXG4gICAgbGV0IGdldCBpID0gVW5pZm9ybV9hcnJheS5nZXQgZWx0cyBpIGluXG4gICAgbGV0IHRyZWUgPSBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mOmdldCBpblxuICAgICAod2l0aF9sZW5ndGggdHJlZSBsZW4pXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCA9XG4gICAgbGV0IG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aF9sYXJnZSB0X2xhcmdlIHRfc21hbGwgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIGZvbGRcbiAgICAgICAgdF9zbWFsbFxuICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIHRfbGFyZ2UgbGVuZ3RoX2xhcmdlKVxuICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGE6ZGF0YScgeyB0cmVlID0gdDsgbGVuZ3RoIH0gLT5cbiAgICAgICAgICAodXBkYXRlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhJ1xuICAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IGNhbGwgY29tYmluZSB+a2V5IGRhdGEgZGF0YScpXG4gICAgICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgIGluXG4gICAgbGV0IGNhbGwgZiB+a2V5IHggeSA9IGYgfmtleSB4IHkgaW5cbiAgICBsZXQgc3dhcCBmIH5rZXkgeCB5ID0gZiB+a2V5IHkgeCBpblxuICAgIGZ1biB0MSB0MiB+bGVuZ3RoMSB+bGVuZ3RoMiB+Y29tYmluZSB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGxlbmd0aDIgPD0gbGVuZ3RoMVxuICAgICAgdGhlbiBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgxIHQxIHQyIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgyIHQyIHQxIH5jYWxsOnN3YXAgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIENsb3Nlc3Rfa2V5X2ltcGwgPSBzdHJ1Y3RcbiAgICAoKiBbbWFya2VyXSBhbmQgW3JlcGFja2FnZV0gYWxsb3cgdXMgdG8gY3JlYXRlIFwibG9naWNhbFwiIG9wdGlvbnMgd2l0aG91dCBhY3R1YWxseVxuICAgICAgIGFsbG9jYXRpbmcgYW55IG9wdGlvbnMuIFBhc3NpbmcgW0ZvdW5kIGtleSB2YWx1ZV0gdG8gYSBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgcGFzc2luZyBbU29tZSAoa2V5LCB2YWx1ZSldOyBwYXNzaW5nIFtNaXNzaW5nICgpICgpXSBpcyBlcXVpdmFsZW50IHRvIHBhc3NpbmdcbiAgICAgICBbTm9uZV0uICopXG4gICAgdHlwZSAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyID1cbiAgICAgIHwgTWlzc2luZyA6ICgnaywgJ3YsIHVuaXQsIHVuaXQpIG1hcmtlclxuICAgICAgfCBGb3VuZCA6ICgnaywgJ3YsICdrLCAndikgbWFya2VyXG5cbiAgICBsZXQgcmVwYWNrYWdlXG4gICAgICAgICAgKHR5cGUgayB2IGtfb3B0IHZfb3B0KVxuICAgICAgICAgIChtYXJrZXIgOiAoaywgdiwga19vcHQsIHZfb3B0KSBtYXJrZXIpXG4gICAgICAgICAgKGsgOiBrX29wdClcbiAgICAgICAgICAodiA6IHZfb3B0KVxuICAgICAgOiAoayAqIHYpIG9wdGlvblxuICAgICAgPVxuICAgICAgbWF0Y2ggbWFya2VyIHdpdGhcbiAgICAgIHwgTWlzc2luZyAtPiBOb25lXG4gICAgICB8IEZvdW5kIC0+IFNvbWUgKGssIHYpXG4gICAgOztcblxuICAgICgqIFRoZSB0eXBlIHNpZ25hdHVyZSBpcyBleHBsaWNpdCBoZXJlIHRvIGFsbG93IHBvbHltb3JwaGljIHJlY3Vyc2lvbi4gKilcbiAgICBsZXQgcmVjIGxvb3AgOlxuICAgICAgJ2sgJ3YgJ2tfb3B0ICd2X29wdC5cbiAgICAgICgnaywgJ3YpIHRyZWVcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrXG4gICAgICAtPiBjb21wYXJlX2tleTooJ2sgLT4gJ2sgLT4gaW50KVxuICAgICAgLT4gKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlclxuICAgICAgLT4gJ2tfb3B0XG4gICAgICAtPiAndl9vcHRcbiAgICAgIC0+ICgnayAqICd2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIGZ1biB0IGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIC0+XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIC0+IGMgPj0gMFxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+IGMgPiAwXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IGMgPD0gMFxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+IGMgPCAwXG4gICAgICAgICAgdGhlbiBTb21lIChrJywgdicpXG4gICAgICAgICAgZWxzZSByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IE5vZGUgKGwsIGsnLCB2JywgciwgXykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBjID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJhc2UgY2FzZSAobm8gcmVjdXJzaXZlIGNhbGwpLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgTGVzc19vcl9lcXVhbF90byAtPiBTb21lIChrJywgdicpXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgciB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWluX2VsdCByXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgbCB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWF4X2VsdCBsKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogV2UgYXJlIGd1YXJhbnRlZWQgaGVyZSB0aGF0IGsnIDw+IGsuICopXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHRoZSBvbmx5IHJlY3Vyc2l2ZSBjYXNlLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIgayB+Y29tcGFyZV9rZXkgPSBsb29wIHQgZGlyIGsgfmNvbXBhcmVfa2V5IE1pc3NpbmcgKCkgKClcbiAgZW5kXG5cbiAgbGV0IGNsb3Nlc3Rfa2V5ID0gQ2xvc2VzdF9rZXlfaW1wbC5jbG9zZXN0X2tleVxuXG4gIGxldCByZWMgcmFuayB0IGsgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGsnLCBfKSAtPiBpZiBjb21wYXJlX2tleSBrJyBrID0gMCB0aGVuIFNvbWUgMCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGsnLCBfLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiBTb21lIChsZW5ndGggbClcbiAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgIHRoZW4gcmFuayBsIGsgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIE9wdGlvbi5tYXAgKHJhbmsgciBrIH5jb21wYXJlX2tleSkgfmY6KGZ1biByYW5rIC0+IHJhbmsgKyAxICsgbGVuZ3RoIGwpXG4gIDs7XG5cbiAgKCogdGhpcyBjb3VsZCBiZSBpbXBsZW1lbnRlZCB1c2luZyBbU2VxdWVuY2VdIGludGVyZmFjZSBidXQgdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvblxuICAgICBhbGxvY2F0ZXMgb25seSAyIHdvcmRzIGFuZCBkb2Vzbid0IHJlcXVpcmUgd3JpdGUtYmFycmllciAqKVxuICBsZXQgcmVjIG50aCcgbnVtX3RvX3NlYXJjaCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPlxuICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICBOb25lKVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIChtYXRjaCBudGgnIG51bV90b19zZWFyY2ggbCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiBzb21lXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgICAgIG50aCcgbnVtX3RvX3NlYXJjaCByKSlcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IG50aCcgKHJlZiBuKSB0XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPCAwKSBbQG5vbnRhaWxdXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID49IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB+a2V5IH5kYXRhID0gbm90IChpc19sZWZ0IH5rZXkgfmRhdGEpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0IFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXSBmaW5kcyB0aGUga2V5IGluIFt0XSB3aGljaCBzYXRpc2ZpZXMgW21heWJlX2JvdW5kXVxuICAgICBhbmQgdGhlIHJlbGV2YW50IG9uZSBvZiBbaWZfZXhjbHVzaXZlXSBvciBbaWZfaW5jbHVzaXZlXSwgYXMganVkZ2VkIGJ5IFtjb21wYXJlXS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgfmlmX2V4Y2x1c2l2ZSB+aWZfaW5jbHVzaXZlID1cbiAgICBsZXQgZmluZF9ib3VuZCB0IGhvdyBib3VuZCB+Y29tcGFyZSA6IF8gTWF5YmVfYm91bmQudCBvcHRpb24gPVxuICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCB0IGhvdyBib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICB8IFNvbWUgKGJvdW5kLCBfKSAtPiBTb21lIChJbmNsIGJvdW5kKVxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIChtYXliZV9ib3VuZCA6IF8gTWF5YmVfYm91bmQudCkgd2l0aFxuICAgIHwgRXhjbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfZXhjbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBJbmNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9pbmNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IFVuYm91bmRlZCAtPiBTb21lIFVuYm91bmRlZFxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHNdIGZpbmRzIHRoZSAobm90IG5lY2Vzc2FyaWx5IGRpc3RpbmN0KSBrZXlzIGluIFt0XVxuICAgICB3aGljaCBtb3N0IGNsb3NlbHkgYXBwcm9hY2ggKGJ1dCBkbyBub3QgY3Jvc3MpIFtsb3dlcl9ib3VuZF0gYW5kIFt1cHBlcl9ib3VuZF0sIGFzXG4gICAgIGp1ZGdlZCBieSBbY29tcGFyZV0uIEl0IHJldHVybnMgW05vbmVdIGlmIG5vIGtleXMgaW4gW3RdIGFyZSB3aXRoaW4gdGhhdCByYW5nZS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBmaW5kX2xvd2VyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBsZXQgZmluZF91cHBlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIG1hdGNoIGZpbmRfbG93ZXJfYm91bmQgdCBsb3dlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbG93ZXJfYm91bmQgLT5cbiAgICAgIChtYXRjaCBmaW5kX3VwcGVyX2JvdW5kIHQgdXBwZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIHVwcGVyX2JvdW5kIC0+IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkpXG4gIDs7XG5cblxuICB0eXBlICgnaywgJ3YpIGFjYyA9XG4gICAgeyBtdXRhYmxlIGJhZF9rZXkgOiAnayBvcHRpb25cbiAgICA7IG11dGFibGUgbWFwX2xlbmd0aCA6ICgnaywgJ3YpIHQgV2l0aF9sZW5ndGgudFxuICAgIH1cblxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFjYyA9IHsgYmFkX2tleSA9IE5vbmU7IG1hcF9sZW5ndGggPSB3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMCB9IGluXG4gICAgaXRlcmkgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBsZXQgeyB0cmVlID0gbWFwOyBsZW5ndGggfSA9IGFjYy5tYXBfbGVuZ3RoIGluXG4gICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IGxlbmd0aCcgfSBhcyBwYWlyKSA9XG4gICAgICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgbWFwIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCcgJiYgT3B0aW9uLmlzX25vbmUgYWNjLmJhZF9rZXlcbiAgICAgIHRoZW4gYWNjLmJhZF9rZXkgPC0gU29tZSBrZXlcbiAgICAgIGVsc2UgYWNjLm1hcF9sZW5ndGggPC0gZ2xvYmFsaXplIHBhaXIpO1xuICAgIG1hdGNoIGFjYy5iYWRfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9rIGFjYy5tYXBfbGVuZ3RoXG4gICAgfCBTb21lIGtleSAtPiBgRHVwbGljYXRlX2tleSBrZXlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSB+KGNvbXBhcmF0b3IgOiBfIENvbXBhcmF0b3IudCkgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuY3JlYXRlIFwiTWFwLm9mX2l0ZXJpX2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwIHNleHAgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwKSBzZXhwIGluXG4gICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgbWF0Y2ggb2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgICBMaXN0Lml0ZXIyX29rIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBrMiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiTWFwLnRfb2Zfc2V4cF9kaXJlY3Q6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgIGxldCBmIH5rZXkgfmRhdGEgYWNjID0gU2V4cC5MaXN0IFsgc2V4cF9vZl9rZXkga2V5OyBzZXhwX29mX3ZhbHVlIGRhdGEgXSA6OiBhY2MgaW5cbiAgICBTZXhwLkxpc3QgKGZvbGRfcmlnaHQgfmYgdCB+aW5pdDpbXSlcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCB+c2V4cF9vZl9rZXkgPVxuICAgIGxldCBva3MsIGVycm9ycyA9IHBhcnRpdGlvbl9tYXAgdCB+ZjpSZXN1bHQudG9fZWl0aGVyIGluXG4gICAgaWYgaXNfZW1wdHkgZXJyb3JzXG4gICAgdGhlbiBPayBva3NcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yX3MgKHNleHBfb2ZfdCBzZXhwX29mX2tleSBFcnJvci5zZXhwX29mX3QgZXJyb3JzKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c1xuICAgICAgICB0MVxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcjooeyBjb21wYXJlID0gY29tcGFyZV9rZXk7IHNleHBfb2ZfdCA9IHNleHBfb2Zfa2V5IH0gOiBfIENvbXBhcmF0b3IudClcbiAgICA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBgT2tcbiAgICAgICAgKGZvbGRcbiAgICAgICAgICAgdDFcbiAgICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgeyB0cmVlID0gdDI7IGxlbmd0aCB9IC0+XG4gICAgICAgICAgICAgbGV0IGtleSA9IGYga2V5IGluXG4gICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICBhZGRfZXhuX2ludGVybmFsIHQyIH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IHw+IGdsb2JhbGl6ZVxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IER1cGxpY2F0ZSAtPiByZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSkpKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcmVzdWx0IC0+IHJlc3VsdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90IGluXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJNYXAubWFwX2tleXNfZXhuOiBkdXBsaWNhdGUga2V5XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcblxuICBsZXQgdHJhbnNwb3NlX2tleXMgfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3Igb3V0ZXJfdCA9XG4gICAgZm9sZFxuICAgICAgb3V0ZXJfdFxuICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgfmY6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl90IGFjYyAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgaW5uZXJfdFxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgeyB0cmVlID0gYWNjOyBsZW5ndGggPSBhY2NfbGVuIH0gLT5cbiAgICAgICAgICAgICh1cGRhdGVcbiAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgaW5uZXJfa2V5XG4gICAgICAgICAgICAgICB+bGVuZ3RoOmFjY19sZW5cbiAgICAgICAgICAgICAgIH5jb21wYXJlX2tleTppbm5lcl9jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB3aXRoX2xlbmd0aF9nbG9iYWwgKHNpbmdsZXRvbiBvdXRlcl9rZXkgZGF0YSkgMVxuICAgICAgICAgICAgICAgICB8IFNvbWUgeyB0cmVlID0gZWx0OyBsZW5ndGggPSBlbHRfbGVuIH0gLT5cbiAgICAgICAgICAgICAgICAgICAoc2V0XG4gICAgICAgICAgICAgICAgICAgICAgZWx0XG4gICAgICAgICAgICAgICAgICAgICAgfmtleTpvdXRlcl9rZXlcbiAgICAgICAgICAgICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgICAgICAgICAgIH5sZW5ndGg6ZWx0X2xlblxuICAgICAgICAgICAgICAgICAgICAgIH5jb21wYXJlX2tleTpvdXRlcl9jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgICAgICAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pXG4gICAgICAgICAgICAgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSlcbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgPSBzdHJ1Y3RcbiAgICBsZXQgcmVjIG1hcGkgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQS5yZXR1cm4gRW1wdHlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gQS5tYXAgKGYgfmtleTp2IH5kYXRhOmQpIH5mOihmdW4gbmV3X2RhdGEgLT4gTGVhZiAodiwgbmV3X2RhdGEpKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgbCcgPSBBLm9mX3RodW5rIChmdW4gKCkgLT4gbWFwaSB+ZiBsKSBpblxuICAgICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICAgIGxldCByJyA9IEEub2ZfdGh1bmsgKGZ1biAoKSAtPiBtYXBpIH5mIHIpIGluXG4gICAgICAgIEEubWFwMyBsJyBkJyByJyB+ZjooZnVuIGwnIGQnIHInIC0+IE5vZGUgKGwnLCB2LCBkJywgcicsIGgpKVxuICAgIDs7XG5cbiAgICAoKiBJbiB0aGVvcnkgdGhlIGNvbXB1dGF0aW9uIG9mIGxlbmd0aCBvbi10aGUtZmx5IGlzIG5vdCBuZWNlc3NhcnkgaGVyZSBiZWNhdXNlIGl0IGNhblxuICAgICAgIGJlIGRvbmUgYnkgd3JhcHBpbmcgdGhlIGFwcGxpY2F0aXZlIFtBXSB3aXRoIGxlbmd0aC1jb21wdXRpbmcgbG9naWMuIEhvd2V2ZXIsXG4gICAgICAgaW50cm9kdWNpbmcgYW4gYXBwbGljYXRpdmUgdHJhbnNmb3JtZXIgbGlrZSB0aGF0IG1ha2VzIHRoZSBtYXAgYmVuY2htYXJrcyBpblxuICAgICAgIGFzeW5jX2tlcm5lbC9iZW5jaC9zcmMvYmVuY2hfZGVmZXJyZWRfbWFwLm1sIG5vdGljZWFibHkgc2xvd2VyLiAqKVxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIGxldCByZWMgdHJlZV9maWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gQS5yZXR1cm4gKHdpdGhfbGVuZ3RoX2dsb2JhbCBFbXB0eSAwKVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgICAgQS5tYXAgKGYgfmtleTp2IH5kYXRhOmQpIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBTb21lIG5ld19kYXRhIC0+IHdpdGhfbGVuZ3RoX2dsb2JhbCAoTGVhZiAodiwgbmV3X2RhdGEpKSAxXG4gICAgICAgICAgICB8IE5vbmUgLT4gd2l0aF9sZW5ndGhfZ2xvYmFsIEVtcHR5IDApXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgICBBLm1hcDNcbiAgICAgICAgICAgIChBLm9mX3RodW5rIChmdW4gKCkgLT4gdHJlZV9maWx0ZXJfbWFwaSBsIH5mKSlcbiAgICAgICAgICAgIChmIH5rZXk6diB+ZGF0YTpkKVxuICAgICAgICAgICAgKEEub2ZfdGh1bmsgKGZ1biAoKSAtPiB0cmVlX2ZpbHRlcl9tYXBpIHIgfmYpKVxuICAgICAgICAgICAgfmY6XG4gICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICB7IHRyZWUgPSBsJzsgbGVuZ3RoID0gbF9sZW4gfSBuZXdfZGF0YSB7IHRyZWUgPSByJzsgbGVuZ3RoID0gcl9sZW4gfSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIG5ld19kYXRhIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgbmV3X2RhdGEgLT5cbiAgICAgICAgICAgICAgICAgIHdpdGhfbGVuZ3RoX2dsb2JhbCAoam9pbiBsJyB2IG5ld19kYXRhIHInKSAobF9sZW4gKyByX2xlbiArIDEpXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICB3aXRoX2xlbmd0aF9nbG9iYWwgKGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpIChsX2xlbiArIHJfbGVuKSlcbiAgICAgIGluXG4gICAgICB0cmVlX2ZpbHRlcl9tYXBpIHQgfmZcbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2ssICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogKCdrLCAndikgVHJlZTAudFxuICA7IGxlbmd0aCA6IGludFxuICB9XG5cbnR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG5cbmxldCBjb21wYXJlX2tleSB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGxlbmd0aCA9IF87IGNvbXBhcmF0b3IgfSAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudCkgPVxuICB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgbGlrZV9tYXliZV9ub19vcFxuICAgICAgKHsgdHJlZSA9IG9sZF90cmVlOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gYXMgb2xkX3QpXG4gICAgICAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudClcbiAgPVxuICBpZiBwaHlzX2VxdWFsIG9sZF90cmVlIHRyZWUgdGhlbiBvbGRfdCBlbHNlIHsgdHJlZTsgbGVuZ3RoOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCB3aXRoX3NhbWVfbGVuZ3RoIHsgdHJlZSA9IF87IGNvbXBhcmF0b3I7IGxlbmd0aCB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCB9XG5sZXQgb2ZfbGlrZV90cmVlIHQgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG5sZXQgb2ZfbGlrZV90cmVlX21heWJlX25vX29wIHQgdHJlZSA9XG4gIGlmIHBoeXNfZXF1YWwgdC50cmVlIHRyZWVcbiAgdGhlbiB0XG4gIGVsc2UgeyB0cmVlOyBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG47O1xuXG5sZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbigqIEV4cG9zaW5nIHRoaXMgZnVuY3Rpb24gd291bGQgbWFrZSBpdCB2ZXJ5IGVhc3kgZm9yIHRoZSBpbnZhcmlhbnRzXG4gICBvZiB0aGlzIG1vZHVsZSB0byBiZSBicm9rZW4uICopXG5sZXQgb2ZfdHJlZV91bnNhZmUgfmNvbXBhcmF0b3Igfmxlbmd0aCB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuXG4gIGxldCBpbnZhcmlhbnRzIHQgPVxuICAgIFRyZWUwLmludmFyaWFudHMgdC50cmVlIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgJiYgVHJlZTAubGVuZ3RoIHQudHJlZSA9IHQubGVuZ3RoXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLnNldCB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5cbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4bl9pbnRlcm5hbFxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgcmVzdWx0IC0+IGBPayByZXN1bHRcbiAgICB8IGV4Y2VwdGlvbiBEdXBsaWNhdGUgLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX211bHRpIHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLnJlbW92ZV9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCBrZXkgPSBUcmVlMC5maW5kX211bHRpIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5jaGFuZ2UgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC51cGRhdGUgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHQudHJlZVxuICAgICAga2V5XG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIHQga2V5ID0gVHJlZTAuZmluZCB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgcmVtb3ZlIHQga2V5ID1cbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICB0XG4gICAgICAoVHJlZTAucmVtb3ZlIHQudHJlZSBrZXkgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lbSB0IGtleSA9IFRyZWUwLm1lbSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQudHJlZSB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIHQxIHQyIH5mID0gVHJlZTAuaXRlcjIgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIGxldCBtYXAgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwIHQudHJlZSB+ZilcbiAgbGV0IG1hcGkgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwaSB0LnRyZWUgfmYpXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEudHJlZSB0Mi50cmVlIH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9rZXlzIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZV9tYXliZV9ub19vcCB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlsdGVyIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlciB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyaSB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2UgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXBpIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZSB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2ZfbGlrZV90cmVlMiB0ICh0MSwgdDIpID0gb2ZfbGlrZV90cmVlIHQgdDEsIG9mX2xpa2VfdHJlZSB0IHQyXG5cbiAgbGV0IG9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AgdCAodDEsIHQyKSA9XG4gICAgb2ZfbGlrZV90cmVlX21heWJlX25vX29wIHQgdDEsIG9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCB0IHQyXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBvZl9saWtlX3RyZWUyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQudHJlZSB+ZilcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IG9mX2xpa2VfdHJlZTIgdCAoVHJlZTAucGFydGl0aW9uX21hcCB0LnRyZWUgfmYpXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPSBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKFRyZWUwLnBhcnRpdGlvbmlfdGYgdC50cmVlIH5mKVxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYpXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KG9mX2xpa2VfdHJlZSB0KVxuICAgICAgKFRyZWUwLmNvbWJpbmVfZXJyb3JzIHQudHJlZSB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2RhdGEgdDEgdDIgPSBUcmVlMC5lcXVhbCAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdC50cmVlXG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHQudHJlZVxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0LnRyZWVcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MS50cmVlXG4gICAgICB0Mi50cmVlXG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiA9XG4gICAgbGlrZSB0MSAoVHJlZTAubWVyZ2UgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogVGhpcyBpcyBvbmx5IGEgbm8tb3AgaW4gdGhlIGNhc2Ugd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBtYXBzIGlzIGVtcHR5LiAqKVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIChpZiB0Mi5sZW5ndGggPD0gdDEubGVuZ3RoIHRoZW4gdDEgZWxzZSB0MilcbiAgICAgIChUcmVlMC5tZXJnZV9za2V3ZWRcbiAgICAgICAgIHQxLnRyZWVcbiAgICAgICAgIHQyLnRyZWVcbiAgICAgICAgIH5sZW5ndGgxOnQxLmxlbmd0aFxuICAgICAgICAgfmxlbmd0aDI6dDIubGVuZ3RoXG4gICAgICAgICB+Y29tYmluZVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQudHJlZSB+ZlxuXG4gIGxldCBzcGxpdCB0IGsgPVxuICAgIGxldCBsLCBtYXliZSwgciA9IFRyZWUwLnNwbGl0IHQudHJlZSBrIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgaW5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgYm90aF9sZW4gPSBpZiBPcHRpb24uaXNfc29tZSBtYXliZSB0aGVuIHQubGVuZ3RoIC0gMSBlbHNlIHQubGVuZ3RoIGluXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG1heWJlLCBvZl90cmVlX3Vuc2FmZSByIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIGwpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBvZl90cmVlIHIgfmNvbXBhcmF0b3IgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIGwgfmNvbXBhcmF0b3Igfmxlbmd0aDooYm90aF9sZW4gLSBsZW5ndGggciksIG1heWJlLCByKVxuICA7O1xuXG4gIGxldCBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdCB+aW50byBrID1cbiAgICBsZXQgbCwgciA9XG4gICAgICBUcmVlMC5zcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdC50cmVlIH5pbnRvIGsgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgIGluXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG9mX3RyZWVfdW5zYWZlIHIgfmNvbXBhcmF0b3Igfmxlbmd0aDoodC5sZW5ndGggLSBsZW5ndGggbCkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgciA9IG9mX3RyZWUgciB+Y29tcGFyYXRvciBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbCB+Y29tcGFyYXRvciB+bGVuZ3RoOih0Lmxlbmd0aCAtIGxlbmd0aCByKSwgcilcbiAgOztcblxuICBsZXQgc3BsaXRfbGVfZ3QgdCBrID0gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG86YExlZnQga1xuICBsZXQgc3BsaXRfbHRfZ2UgdCBrID0gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG86YFJpZ2h0IGtcblxuICBsZXQgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgbGVmdCwgbWlkLCByaWdodCA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZSB0LnRyZWUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IG91dGVyX2pvaW5lZF9oZWlnaHQgPVxuICAgICAgbGV0IGhfbCA9IFRyZWUwLmhlaWdodCBsZWZ0XG4gICAgICBhbmQgaF9yID0gVHJlZTAuaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoX2wgPSBoX3IgdGhlbiBoX2wgKyAxIGVsc2UgbWF4IGhfbCBoX3JcbiAgICBpblxuICAgIGlmIG91dGVyX2pvaW5lZF9oZWlnaHQgPCBUcmVlMC5oZWlnaHQgbWlkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbWlkX2xlbmd0aCA9IHQubGVuZ3RoIC0gKFRyZWUwLmxlbmd0aCBsZWZ0ICsgVHJlZTAubGVuZ3RoIHJpZ2h0KSBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpIH5sZW5ndGg6bWlkX2xlbmd0aClcbiAgICBlbHNlIG9mX3RyZWUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmFwcGVuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IGxvd2VyX3BhcnQpXG4gICAgICAgIH5sb3dlcl9wYXJ0Omxvd2VyX3BhcnQudHJlZVxuICAgICAgICB+dXBwZXJfcGFydDp1cHBlcl9wYXJ0LnRyZWVcbiAgICB3aXRoXG4gICAgfCBgT2sgdHJlZSAtPlxuICAgICAgYE9rXG4gICAgICAgIChvZl90cmVlX3Vuc2FmZVxuICAgICAgICAgICB0cmVlXG4gICAgICAgICAgIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIGxvd2VyX3BhcnQpXG4gICAgICAgICAgIH5sZW5ndGg6KGxvd2VyX3BhcnQubGVuZ3RoICsgdXBwZXJfcGFydC5sZW5ndGgpKVxuICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQudHJlZSB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdC50cmVlIH5taW4gfm1heCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdC50cmVlIGRpciBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQudHJlZSBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIHQga2V5ID0gVHJlZTAucmFuayB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdC50cmVlIH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIFRyZWUwLkVtcHR5IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHJlZV90cmF2ZXJzYWxzID0gVHJlZTAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBKVxuXG4gICAgbGV0IG1hcGkgdCB+ZiA9XG4gICAgICBBLm1hcCAoVHJlZV90cmF2ZXJzYWxzLm1hcGkgdC50cmVlIH5mKSB+ZjooZnVuIG5ld190cmVlIC0+XG4gICAgICAgIHdpdGhfc2FtZV9sZW5ndGggdCBuZXdfdHJlZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgICAgQS5tYXAgKFRyZWVfdHJhdmVyc2Fscy5maWx0ZXJfbWFwaSB0LnRyZWUgfmYpIH5mOihmdW4gbmV3X3RyZWVfd2l0aF9sZW5ndGggLT5cbiAgICAgICAgbGlrZSB0IG5ld190cmVlX3dpdGhfbGVuZ3RoKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbigqIFswXSBpcyB1c2VkIGFzIHRoZSBbbGVuZ3RoXSBhcmd1bWVudCBldmVyeXdoZXJlIGluIHRoaXMgbW9kdWxlLCBzaW5jZSB0cmVlcyBkbyBub3RcbiAgIGhhdmUgdGhlaXIgbGVuZ3RocyBzdG9yZWQgYXQgdGhlIHJvb3QsIHVubGlrZSBtYXBzLiBUaGUgdmFsdWVzIGFyZSBkaXNjYXJkZWQgYWx3YXlzLiAqKVxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9ICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0cmVlID0gdHJlZVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gayB2ID0gVHJlZTAuc2luZ2xldG9uIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvclxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdCA9IChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpLnRyZWVcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZiA9XG4gICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBtYXRjaCBUcmVlMC5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdHJlZVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSA9IChUcmVlMC5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yKS50cmVlXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl9yZXF1aXJlZF9ieV9pbnRmIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID0gKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpLnRyZWVcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBUcmVlMC5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcikudHJlZVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIChUcmVlMC5vZl9saXN0X3dpdGhfa2V5X211bHRpXG4gICAgICAgbGlzdFxuICAgICAgIH5nZXRfa2V5XG4gICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IHRvX3RyZWUgdCA9IHRcblxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0XG5cbiAgbGV0IHNldCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5zZXQgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgYWRkX2V4biB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgdFxuICAgICAgIH5rZXlcbiAgICAgICB+ZGF0YVxuICAgICAgIH5sZW5ndGg6MFxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgKFRyZWUwLmFkZF9leG5faW50ZXJuYWxcbiAgICAgICB0XG4gICAgICAgfmtleVxuICAgICAgIH5kYXRhXG4gICAgICAgfmxlbmd0aDowXG4gICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IGFkZCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIHRyeSBgT2sgKGFkZF9leG5faW50ZXJuYWwgdCB+Y29tcGFyYXRvciB+a2V5IH5kYXRhKSB3aXRoXG4gICAgfCBfIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgKFRyZWUwLmFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIChUcmVlMC5yZW1vdmVfbXVsdGkgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX211bHRpIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIChUcmVlMC5jaGFuZ2UgdCBrZXkgfmYgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIGNoYW5nZSB+Y29tcGFyYXRvciB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHRcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAuZmluZCB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICAoVHJlZTAucmVtb3ZlIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAubWVtIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICBsZXQgaXRlcl9rZXlzIHQgfmYgPSBUcmVlMC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdCB+ZlxuICBsZXQgaXRlcmlfdW50aWwgdCB+ZiA9IFRyZWUwLml0ZXJpX3VudGlsIHQgfmZcblxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIFRyZWUwLml0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mXG4gIGxldCBtYXBpIHQgfmYgPSBUcmVlMC5tYXBpIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQgfmYgfmluaXQgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIH5jb21wYXJhdG9yIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiA9IFRyZWUwLmZpbHRlcl9rZXlzIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlciB0IH5mID0gVHJlZTAuZmlsdGVyIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9IFRyZWUwLmZpbHRlcmkgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID0gVHJlZTAuZmlsdGVyX21hcGkgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl9tYXAgdCB+ZlxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gVHJlZTAucGFydGl0aW9uaV90ZiB0IH5mXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIH5jb21wYXJhdG9yIHQgPVxuICAgIFRyZWUwLmNvbWJpbmVfZXJyb3JzIHQgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmVxdWFsIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHRcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdFxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDFcbiAgICAgIHQyXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIChUcmVlMC5tZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkIH5jb21wYXJhdG9yIHQxIHQyIH5jb21iaW5lID1cbiAgICAoKiBMZW5ndGggY29tcHV0YXRpb24gbWFrZXMgdGhpcyBzaWduaWZpY2FudGx5IHNsb3dlciB0aGFuIFttZXJnZV9za2V3ZWRdIG9uIGEgbWFwXG4gICAgICAgd2l0aCBhIFtsZW5ndGhdIGZpZWxkLCBidXQgZG9lcyBwcmVzZXJ2ZSBhbW91bnQgb2YgYWxsb2NhdGlvbi4gKilcbiAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgdDFcbiAgICAgICB0MlxuICAgICAgIH5sZW5ndGgxOihsZW5ndGggdDEpXG4gICAgICAgfmxlbmd0aDI6KGxlbmd0aCB0MilcbiAgICAgICB+Y29tYmluZVxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0XG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBUcmVlMC5leGlzdHNpIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0IH5mXG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGsgPSBUcmVlMC5zcGxpdCB0IGsgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHNwbGl0X2xlX2d0IH5jb21wYXJhdG9yIHQgayA9XG4gICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5XG4gICAgICB0XG4gICAgICB+aW50bzpgTGVmdFxuICAgICAga1xuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2x0X2dlIH5jb21wYXJhdG9yIHQgayA9XG4gICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5XG4gICAgICB0XG4gICAgICB+aW50bzpgUmlnaHRcbiAgICAgIGtcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmNvbXBhcmF0b3Igfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIFRyZWUwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgXywgcmV0LCBfID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfmxvd2VyX2JvdW5kXG4gICAgICAgIH51cHBlcl9ib3VuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHJldFxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB+Y29tcGFyYXRvciB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgIHRcbiAgICAgIH5taW5cbiAgICAgIH5tYXhcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IH5jb21wYXJhdG9yIHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgfmNvbXBhcmF0b3IgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0IGRpciBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdCBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAucmFuayB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHRcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcikudHJlZVxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaCBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IEVtcHR5XG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyZWUwX3RyYXZlcnNhbHMgPSBUcmVlMC5NYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEpXG5cbiAgICBsZXQgbWFwaSB0IH5mID0gVHJlZTBfdHJhdmVyc2Fscy5tYXBpIHQgfmZcblxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIEEubWFwXG4gICAgICAgIChUcmVlMF90cmF2ZXJzYWxzLmZpbHRlcl9tYXBpIHQgfmYpXG4gICAgICAgIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiB3aXRoXG4gICAgfCBgT2sgeyB0cmVlID0gdDsgbGVuZ3RoID0gXyB9IC0+IGBPayB0XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPSAoVHJlZTAubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYpLnRyZWVcblxuICAoKiBUaGlzIGNhbGxpbmcgY29udmVudGlvbiBvZiBbfmNvbXBhcmF0b3IgfmNvbXBhcmF0b3JdIGlzIGNvbmZ1c2luZy4gSXQgaXMgcmVxdWlyZWRcbiAgICAgYmVjYXVzZSBbYWNjZXNzX29wdGlvbnNdIGFuZCBbY3JlYXRlX29wdGlvbnNdIGJvdGggZGVtYW5kIGEgW35jb21wYXJhdG9yXSBhcmd1bWVudCBpblxuICAgICBbTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZV0uXG5cbiAgICAgTWFraW5nIGl0IGxlc3MgY29uZnVzaW5nIHdvdWxkIHJlcXVpcmUgc29tZSB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5IGluIHNpZ25hdHVyZXMuXG4gICAgIEJldHRlciB0byBqdXN0IGxpdmUgd2l0aCBhbiB1bmRlc2lyYWJsZSBpbnRlcmZhY2UgaW4gYSBmdW5jdGlvbiB0aGF0IHdpbGwgcHJvYmFibHlcbiAgICAgbmV2ZXIgYmUgY2FsbGVkIGRpcmVjdGx5LiAqKVxuICBsZXQgdHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvciB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yIHQgPVxuICAgIChUcmVlMC50cmFuc3Bvc2Vfa2V5cyB+b3V0ZXJfY29tcGFyYXRvciB+aW5uZXJfY29tcGFyYXRvciB0KS50cmVlXG4gICAgfD4gbWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIHR5cGUgKCdrLCAndiwgJ3cpIHQgPSAoJ2ssICd2KSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRcblxuICAgIGxldCBlbXB0eSA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuZW1wdHlcblxuICAgIGxldCBhZGRfZXhuIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSA9XG4gICAgICBtYXRjaCBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgdCB3aXRoXG4gICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICBFcnJvci5yYWlzZV9zIChTZXhwLkF0b20gXCJNYXAuQnVpbGRfaW5jcmVhc2luZy5hZGQ6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgfCBfIC0+IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0IH5rZXkgfmRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWUgdCA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdiA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBrIHY7IGxlbmd0aCA9IDEgfVxuXG4gIGxldCBvZl90cmVlMCB+Y29tcGFyYXRvciAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudCkgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgOztcblxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAod2l0aF9sZW5ndGggdHJlZSAoVHJlZTAubGVuZ3RoIHRyZWUpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHRvX3RyZWUgPSB0b190cmVlXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgICAgfmY6KGZ1biB0cmVlIC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoIH0gLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5pdGVyaSB3aXRoXG4gICAgfCBgT2sgdHJlZV9sZW5ndGggLT4gYE9rIChvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlX2xlbmd0aClcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICh3aXRoX2xlbmd0aCAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZikgbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihmdW4geCAtPiBvZl90cmVlMCB+Y29tcGFyYXRvciB4KVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXEgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9tdWx0aSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBUcmVlMC5vZl9saXN0X3dpdGhfa2V5X211bHRpIGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gb2ZfdHJlZTAgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgdC50cmVlIH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBwYWlyIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgcGFpcilcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZHVwIC0+IGR1cFxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm1hcF9rZXlzX2V4biB0LnRyZWUgfmYgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3IgdCA9XG4gICAgbGV0IG91dGVyX2NvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3IgaW5cbiAgICBUcmVlMC50cmFuc3Bvc2Vfa2V5cyB+b3V0ZXJfY29tcGFyYXRvciB+aW5uZXJfY29tcGFyYXRvciAoVHJlZTAubWFwIHQudHJlZSB+Zjp0b190cmVlKVxuICAgIHw+IG9mX3RyZWUwIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3JcbiAgICB8PiBtYXAgfmY6KGZ1biB4IC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgeClcbiAgOztcblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3IgPSBLLmNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBlbmRcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX3RyZWUgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgdHJlZSA9XG4gIG9mX3RyZWUgfmNvbXBhcmF0b3I6TS5jb21wYXJhdG9yIHRyZWVcbjs7XG5cbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYWxpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0X211bHRpIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3RfZm9sZCBtIGEgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+aW5pdCB+ZlxuOztcblxubGV0IG9mX2FsaXN0X3JlZHVjZSBtIGEgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfaXRlcmkgbSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuXG5sZXQgb2ZfaXRlcmlfZXhuIG0gfml0ZXJpID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBtIHNlcSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzZXFcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZSBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcblxubGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIG0gcyA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuOztcblxubGV0IG9mX3NlcXVlbmNlX2V4biBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9tdWx0aSBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9mb2xkIG0gcyB+aW5pdCB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5pbml0IH5mXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIG0gcyB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHMgfmZcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5IG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBsIH5nZXRfa2V5XG47O1xuXG5sZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbSBsIH5nZXRfa2V5ID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBtYXBfa2V5cyBtIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcbmxldCBtYXBfa2V5c19leG4gbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdCB+ZlxubGV0IHRyYW5zcG9zZV9rZXlzIG0gdCA9IFVzaW5nX2NvbXBhcmF0b3IudHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgTSAoSyA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGspIHNleHBfb2ZfdiB0ID1cbiAgc2V4cF9vZl90IEsuc2V4cF9vZl90IHNleHBfb2ZfdiAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBrIGNtcClcbiAgICAgIChtb2R1bGUgSyA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgdl9vZl9zZXhwXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOksuY29tcGFyYXRvciBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrKVxuICAgICAgKG1vZHVsZSBLIDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBrKVxuICAgICAgKHZfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBUYWdnZWRcbiAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdGFnXG4gICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAgIChNYW55XG4gICAgICAgICAgICAgICAgIChMaXN0XG4gICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICggVGFnZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBncmFtbWFyID0gSy50X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICwgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUYWdnZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgZ3JhbW1hciA9IHZfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpKSlcbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9tX190IChtb2R1bGUgXyA6IENvbXBhcmVfbSkgY29tcGFyZV92IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY29tcGFyZV92IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuXG5sZXQgaGFzaF9mb2xkX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBrKSBoYXNoX2ZvbGRfdiBzdGF0ZSA9XG4gIGhhc2hfZm9sZF9kaXJlY3QgSy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfdiBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyYXRvciA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2V4biBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGEgfmluaXQgfmZcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYSB+ZlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHMgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzIH5mXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5IH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBtYXBfa2V5cyB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IHRyYW5zcG9zZV9rZXlzIHQgPSBVc2luZ19jb21wYXJhdG9yLnRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yIHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0MFxuXG50eXBlICdhIHQgPSAnYSBTdGRsaWIuUXVldWUudFxuXG5sZXQgY3JlYXRlID0gU3RkbGliLlF1ZXVlLmNyZWF0ZVxubGV0IGNsZWFyID0gU3RkbGliLlF1ZXVlLmNsZWFyXG5sZXQgY29weSA9IFN0ZGxpYi5RdWV1ZS5jb3B5XG5sZXQgaXNfZW1wdHkgPSBTdGRsaWIuUXVldWUuaXNfZW1wdHlcbmxldCBsZW5ndGggPSBTdGRsaWIuUXVldWUubGVuZ3RoXG5sZXQgcGVlayA9IFN0ZGxpYi5RdWV1ZS5wZWVrXG5sZXQgcG9wID0gU3RkbGliLlF1ZXVlLnBvcFxubGV0IHB1c2ggPSBTdGRsaWIuUXVldWUucHVzaFxubGV0IHRyYW5zZmVyID0gU3RkbGliLlF1ZXVlLnRyYW5zZmVyXG5cbmxldCBpdGVyIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgY2FtbF9pdGVyIDogKCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiAnYSB0IC0+IHVuaXQgPVxuICAgIFN0ZGxpYi5PYmoubWFnaWMgKFN0ZGxpYi5RdWV1ZS5pdGVyIDogKCdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdClcbiAgaW5cbiAgY2FtbF9pdGVyIGYgdFxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbWxfZm9sZCA6ICgoJ2IgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIC0+ICdhIHQgLT4gJ2IgPVxuICAgIFN0ZGxpYi5PYmoubWFnaWMgKFN0ZGxpYi5RdWV1ZS5mb2xkIDogKCdiIC0+ICdhIC0+ICdiKSAtPiAnYiAtPiAnYSB0IC0+ICdiKVxuICBpblxuICBjYW1sX2ZvbGQgZiBpbml0IHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlua2VkX3F1ZXVlMFxuXG5sZXQgZW5xdWV1ZSB0IHggPSBMaW5rZWRfcXVldWUwLnB1c2ggeCB0XG5sZXQgZGVxdWV1ZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBvcCB0KVxubGV0IGRlcXVldWVfZXhuID0gTGlua2VkX3F1ZXVlMC5wb3BcbmxldCBkZXF1ZXVlX2FuZF9pZ25vcmVfZXhuICh0eXBlIGVsdCkgKHQgOiBlbHQgdCkgPSBpZ25vcmUgKGRlcXVldWVfZXhuIHQgOiBlbHQpXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBlZWsgdClcbmxldCBwZWVrX2V4biA9IExpbmtlZF9xdWV1ZTAucGVla1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBpdGVyaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBtZW0gPSBDLm1lbVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBzdW0gPSBDLnN1bVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvbGRpID0gQy5mb2xkaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxubGV0IGl0ZXJpID0gQy5pdGVyaVxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9IExpbmtlZF9xdWV1ZTAudHJhbnNmZXIgc3JjIGRzdFxuXG5sZXQgY29uY2F0X21hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHJlcyBiKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgcmVzIGEpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gZW5xdWV1ZSByZXMgKGYgYSkpO1xuICByZXNcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gZW5xdWV1ZSByZXMgKGYgaSBhKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHEgfmYgPVxuICBsZXQgcScgPSBmaWx0ZXIgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyaSBxIH5mIGluXG4gIGNsZWFyIHE7XG4gIHRyYW5zZmVyIH5zcmM6cScgfmRzdDpxXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsaXN0ID0gTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuXG5sZXQgb2ZfbGlzdCBsaXN0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGFycmF5ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnJheSB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGVucXVldWUgdCAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIGxlbmd0aCB0IHdpdGhcbiAgfCAwIC0+IFt8fF1cbiAgfCBsZW4gLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW4gKHBlZWtfZXhuIHQpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIHYgLT5cbiAgICAgIGFyci4oIWkpIDwtIHY7XG4gICAgICBpbmNyIGkpO1xuICAgIGFyclxuOztcblxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKGxpc3Rfb2Zfc2V4cCBhX29mX3NleHAgc2V4cClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHNpbmdsZXRvbiBhID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZW5xdWV1ZSB0IGE7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5JbnQ2NFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50NjQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50NjRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQ2NCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgY29tcGFyZSA9IEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nX29wdCA9IG9mX3N0cmluZ19vcHRcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSA2NFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludDY0X3Bvd1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBTdGRsaWIuSW50NjQub2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2NC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwNjQgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMTYgeCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDQ4XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAzMiB4ID1cbiAgKCogVGhpcyBpcyBzdHJpY3RseSBiZXR0ZXIgdGhhbiBjb2VyY2luZyB0byBhbiBpbnQzMiB0byBwZXJmb3JtIGJ5dGVzd2FwLiBDb2VyY2luZ1xuICAgICBmcm9tIGFuIGludDMyIHdpbGwgYWRkIHVubmVjZXNzYXJ5IHNoaWZ0IG9wZXJhdGlvbnMgdG8gc2lnbiBleHRlbmQgdGhlIG51bWJlclxuICAgICBhcHByb3ByaWF0ZWx5LlxuICAqKVxuICBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAzMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDQ4IHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAxNlxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgaW5jciByID0gciA6PSBhZGQgIXIgb25lXG5sZXQgZGVjciByID0gciA6PSBzdWIgIXIgb25lXG5cbmV4dGVybmFsIG9mX2ludDY0IDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0XG5sZXQgdG9faW50NjQgdCA9IHRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDY0X3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmV4dGVybmFsIHRvX2ludF90cnVuYyA6ICh0W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQzMltAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludF90cnVuY1xuICA6ICAoaW50NjRbQGxvY2FsX29wdF0pXG4gIC0+IChuYXRpdmVpbnRbQGxvY2FsX29wdF0pXG4gID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgb2ZfaW50IDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMiA6IChpbnQzMltAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29mX2ludDMyXCJcblxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252LmludDY0X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IFN0ZGxpYi5JbnQ2NC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IFN0ZGxpYi5JbnQ2NC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5JbnQ2NC5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuSW50NjQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgU3RkbGliLkludDY0LnByZWQgeCA9IFN0ZGxpYi5JbnQ2NC56ZXJvXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDY0W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gU3RkbGliLkludDY0Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50NjQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBpZiBTdGRsaWIuSW50NjQuZXF1YWwgaSBTdGRsaWIuSW50NjQub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoU3RkbGliLkludDY0LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50NjRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVMeFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDY0XCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2FkZFwiXG4gIGV4dGVybmFsICggLSApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9zdWJcIlxuICBleHRlcm5hbCAoICogKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbXVsXCJcbiAgZXh0ZXJuYWwgKCAvICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2RpdlwiXG4gIGV4dGVybmFsICggfi0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgZXh0ZXJuYWwgKCBsYW5kICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2FuZFwiXG4gIGV4dGVybmFsICggbG9yICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29yXCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X3hvclwiXG5cbiAgbGV0IGxub3QgPSBiaXRfbm90XG5cbiAgZXh0ZXJuYWwgKCBsc2wgKVxuICAgIDogICh0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKHRbQGxvY2FsX29wdF0pXG4gICAgPSBcIiVpbnQ2NF9sc2xcIlxuXG4gIGV4dGVybmFsICggYXNyIClcbiAgICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICh0W0Bsb2NhbF9vcHRdKVxuICAgID0gXCIlaW50NjRfYXNyXCJcblxuICBleHRlcm5hbCAoIGxzciApXG4gICAgOiAgKHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAodFtAbG9jYWxfb3B0XSlcbiAgICA9IFwiJWludDY0X2xzclwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2NF0gYW5kIFtJbnQ2NC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEEgNjNiaXQgaW50ZWdlciBpcyBhIDY0Yml0IGludGVnZXIgd2l0aCBpdHMgYml0cyBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICBhbmQgaXRzIGxvd2VzdCBiaXQgc2V0IHRvIDAuXG4gICBUaGlzIGlzIHRoZSBzYW1lIGtpbmQgb2YgZW5jb2RpbmcgYXMgT0NhbWwgaW50IG9uIDY0Yml0IGFyY2hpdGVjdHVyZS5cbiAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmVpbmcgdGhlIGxvd2VzdCBiaXQgKGltbWVkaWF0ZSBiaXQpIHNldCB0byAxLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cblxubW9kdWxlIFQwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG4gICAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50NjQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5tb2R1bGUgVyA6IHNpZ1xuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuICBlbmRcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIHZhbCB3cmFwX2V4biA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIHdyYXBfbW9kdWxvIDogU3RkbGliLkludDY0LnQgLT4gdFxuICB2YWwgdW53cmFwIDogdCAtPiBTdGRsaWIuSW50NjQudFxuXG4gICgqKiBSZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIGludDY0IHRoYXQgaXMgZXF1YWwgdG8gdGhlIGlucHV0IGludDYzIG1vZHVsbyAyXjYzLiAqKVxuICB2YWwgdW53cmFwX3Vuc2lnbmVkIDogdCAtPiBTdGRsaWIuSW50NjQudFxuXG4gIHZhbCBpbnZhcmlhbnQgOiB0IC0+IHVuaXRcbiAgdmFsIGFkZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdWIgOiB0IC0+IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIHN1Y2MgOiB0IC0+IHRcbiAgdmFsIHByZWQgOiB0IC0+IHRcbiAgdmFsIG11bCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cgOiB0IC0+IHQgLT4gdFxuICB2YWwgZGl2IDogdCAtPiB0IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3Bjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBiaXRfbm90IDogdCAtPiB0XG4gIHZhbCBiaXRfeG9yIDogdCAtPiB0IC0+IHRcbiAgdmFsIGJpdF9vciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfYW5kIDogdCAtPiB0IC0+IHRcbiAgdmFsIHNoaWZ0X2xlZnQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG4gIHZhbCB0b19pbnQ2NCA6IHQgLT4gU3RkbGliLkludDY0LnRcbiAgdmFsIG9mX2ludDY0IDogU3RkbGliLkludDY0LnQgLT4gdCBvcHRpb25cbiAgdmFsIG9mX2ludDY0X2V4biA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIG9mX2ludDY0X3RydW5jIDogU3RkbGliLkludDY0LnQgLT4gdFxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGNlaWxfcG93MiA6IHQgLT4gdFxuICB2YWwgZmxvb3JfcG93MiA6IHQgLT4gdFxuICB2YWwgY2VpbF9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGZsb29yX2xvZzIgOiB0IC0+IGludFxuICB2YWwgaXNfcG93MiA6IHQgLT4gYm9vbFxuICB2YWwgY2x6IDogdCAtPiBpbnRcbiAgdmFsIGN0eiA6IHQgLT4gaW50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUMFxuXG4gIHR5cGUgdCA9IGludDY0XG5cbiAgbGV0IHdyYXBfZXhuIHggPVxuICAgICgqIFJhaXNlcyBpZiB0aGUgaW50NjQgdmFsdWUgZG9lcyBub3QgZml0IG9uIGludDYzLiAqKVxuICAgIENvbnYuaW50NjRfZml0X29uX2ludDYzX2V4biB4O1xuICAgIFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTFxuICA7O1xuXG4gIGxldCB3cmFwIHggPVxuICAgIGlmIENvbnYuaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gU29tZSAoU3RkbGliLkludDY0Lm11bCB4IDJMKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgd3JhcF9tb2R1bG8geCA9IFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTFxuICBsZXQgdW53cmFwIHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgeCAxXG4gIGxldCB1bndyYXBfdW5zaWduZWQgeCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMVxuXG4gICgqIFRoaXMgZG9lcyBub3QgdXNlIHdyYXAgb3IgdW53cmFwIHRvIGF2b2lkIGdlbmVyYXRpbmcgZXhjZXB0aW9ucyBpbiB0aGUgY2FzZSBvZlxuICAgICBvdmVyZmxvd3MuIFRoaXMgaXMgdG8gcHJlc2VydmUgdGhlIHNlbWFudGljcyBvZiBpbnQgdHlwZSBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlLiAqKVxuICBsZXQgZjIgZiBhIGIgPVxuICAgIFN0ZGxpYi5JbnQ2NC5tdWwgKGYgKFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBhIDEpIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgYiAxKSkgMkxcbiAgOztcblxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZUxcbiAgbGV0IG0geCA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmQgeCBtYXNrXG4gIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAobSB0ID0gdClcbiAgbGV0IGFkZCB4IHkgPSBTdGRsaWIuSW50NjQuYWRkIHggeVxuICBsZXQgc3ViIHggeSA9IFN0ZGxpYi5JbnQ2NC5zdWIgeCB5XG4gIGxldCBuZWcgeCA9IFN0ZGxpYi5JbnQ2NC5uZWcgeFxuICBsZXQgYWJzIHggPSBTdGRsaWIuSW50NjQuYWJzIHhcbiAgbGV0IG9uZSA9IHdyYXBfZXhuIDFMXG4gIGxldCBzdWNjIGEgPSBhZGQgYSBvbmVcbiAgbGV0IHByZWQgYSA9IHN1YiBhIG9uZVxuICBsZXQgbWluX3ZhbHVlID0gbSBTdGRsaWIuSW50NjQubWluX2ludFxuICBsZXQgbWF4X3ZhbHVlID0gbSBTdGRsaWIuSW50NjQubWF4X2ludFxuICBsZXQgYml0X25vdCB4ID0gbSAoU3RkbGliLkludDY0LmxvZ25vdCB4KVxuICBsZXQgYml0X2FuZCA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmRcbiAgbGV0IGJpdF94b3IgPSBTdGRsaWIuSW50NjQubG9neG9yXG4gIGxldCBiaXRfb3IgPSBTdGRsaWIuSW50NjQubG9nb3JcbiAgbGV0IHNoaWZ0X2xlZnQgeCBpID0gU3RkbGliLkludDY0LnNoaWZ0X2xlZnQgeCBpXG4gIGxldCBzaGlmdF9yaWdodCB4IGkgPSBtIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgeCBpKVxuICBsZXQgc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkgPSBtIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkpXG4gIGxldCBwb3cgPSBmMiBJbnRfbWF0aC5Qcml2YXRlLmludDYzX3Bvd19vbl9pbnQ2NFxuICBsZXQgbXVsIGEgYiA9IFN0ZGxpYi5JbnQ2NC5tdWwgYSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSlcbiAgbGV0IGRpdiBhIGIgPSB3cmFwX21vZHVsbyAoU3RkbGliLkludDY0LmRpdiBhIGIpXG4gIGxldCByZW0gYSBiID0gU3RkbGliLkludDY0LnJlbSBhIGJcbiAgbGV0IHBvcGNvdW50IHggPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudCB4XG4gIGxldCB0b19pbnQ2NCB0ID0gdW53cmFwIHRcbiAgbGV0IG9mX2ludDY0IHQgPSB3cmFwIHRcbiAgbGV0IG9mX2ludDY0X2V4biB0ID0gd3JhcF9leG4gdFxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgdCA9IHdyYXBfbW9kdWxvIHRcbiAgbGV0IHRfb2Zfc2V4cCB4ID0gd3JhcF9leG4gKGludDY0X29mX3NleHAgeClcbiAgbGV0IHNleHBfb2ZfdCB4ID0gc2V4cF9vZl9pbnQ2NCAodW53cmFwIHgpXG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBpc19wb3cyIHggPSBJbnQ2NC5pc19wb3cyICh1bndyYXAgeClcblxuICBsZXQgY2x6IHggPVxuICAgICgqIFdlIHJ1biBJbnQ2NC5jbHogZGlyZWN0bHkgb24gdGhlIHdyYXBwZWQgaW50NjMgdmFsdWUuIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHRoZVxuICAgICAgIGJpdHMgb2YgdGhlIGludDYzX2VtdWwgYXJlIGxlZnQtYWxpZ25lZCBpbiB0aGUgSW50NjQuICopXG4gICAgSW50NjQuY2x6IHhcbiAgOztcblxuICBsZXQgY3R6IHggPSBJbnQ2NC5jdHogKHVud3JhcCB4KVxuICBsZXQgZmxvb3JfcG93MiB4ID0gSW50NjQuZmxvb3JfcG93MiAodW53cmFwIHgpIHw+IHdyYXBfZXhuXG4gIGxldCBjZWlsX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgZmxvb3JfbG9nMiB4ID0gSW50NjQuZmxvb3JfbG9nMiAodW53cmFwIHgpXG4gIGxldCBjZWlsX2xvZzIgeCA9IEludDY0LmNlaWxfbG9nMiAodW53cmFwIHgpXG5lbmRcblxub3BlbiBXXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IFcudCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChXLmdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIFcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBXLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKFcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoVy5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBXLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVy5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlID0gVy5jb21wYXJlXG4gIGxldCBpbnZhcmlhbnQgPSBXLmludmFyaWFudFxuXG4gICgqIFdlIGRvbid0IGV4cGVjdCBbaGFzaF0gdG8gZm9sbG93IHRoZSBiZWhhdmlvciBvZiBpbnQgaW4gNjRiaXQgYXJjaGl0ZWN0dXJlICopXG4gIGxldCBfID0gaGFzaFxuICBsZXQgaGFzaCAoeCA6IHQpID0gU3RkbGliLkhhc2h0YmwuaGFzaCB4XG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGludmFsaWRfc3RyIHggPSBQcmludGYuZmFpbHdpdGhmIFwiSW50NjMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgeCAoKVxuXG4gICgqXG4gICAgIFwic2lnblwiIHJlZmVycyB0byB3aGV0aGVyIHRoZSBudW1iZXIgc3RhcnRzIHdpdGggYSAnLSdcbiAgICAgXCJzaWduZWRuZXNzID0gZmFsc2VcIiBtZWFucyB0aGUgcmVzdCBvZiB0aGUgbnVtYmVyIGlzIHBhcnNlZCBhcyB1bnNpZ25lZCBhbmQgdGhlbiBjYXN0XG4gICAgIHRvIHNpZ25lZCB3aXRoIHdyYXAtYXJvdW5kIG1vZHVsbyAyXmlcbiAgICAgXCJzaWduZWRuZXNzID0gdHJ1ZVwiIG1lYW5zIG5vIHN1Y2ggY3JhemluZXNzIGhhcHBlbnNcblxuICAgICBUaGUgdGVybWlub2xvZ3kgYW5kIHRoZSBsb2dpYyBpcyBkdWUgdG8gdGhlIGNvZGUgaW4gYnl0ZXJ1bi9pbnRzLmMgaW4gb2NhbWwgNC4wM1xuICAgICAoW3BhcnNlX3NpZ25fYW5kX2Jhc2VdIGZ1bmN0aW9uKS5cblxuICAgICBTaWduZWRuZXNzIGVxdWFscyB0cnVlIGZvciBwbGFpbiBkZWNpbWFsIG51bWJlciAoZS5nLiAxMjM1LCAtNjc4OSlcblxuICAgICBTaWduZWRuZXNzIGVxdWFscyBmYWxzZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAtIFsweGZmZmZdLCBbLTB4ZmZmZl0gKGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswYjAxMDFdLCBbLTBiMDEwMV0gKGJpbmFyeSByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMG8xMjM3XSwgWy0wbzEyMzddIChvY3RhbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMHU5ODEyXSwgWy0wdTk4MTJdICh1bnNpZ25lZCBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIC0gYXZhaWxhYmxlIGZyb20gT0NhbWwgNC4wMykgKilcbiAgbGV0IHNpZ25fYW5kX3NpZ25lZG5lc3MgeCA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggeCBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcG9zLCBzaWduID1cbiAgICAgIGlmIDAgPCBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCB4LlswXSB3aXRoXG4gICAgICAgIHwgJy0nIC0+IDEsIGBOZWdcbiAgICAgICAgfCAnKycgLT4gMSwgYFBvc1xuICAgICAgICB8IF8gLT4gMCwgYFBvcylcbiAgICAgIGVsc2UgMCwgYFBvc1xuICAgIGluXG4gICAgaWYgcG9zICsgMiA8IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IGMxID0geC5bcG9zXSBpblxuICAgICAgbGV0IGMyID0geC5bcG9zICsgMV0gaW5cbiAgICAgIG1hdGNoIGMxLCBjMiB3aXRoXG4gICAgICB8ICcwJywgJzAnIC4uICc5JyAtPiBzaWduLCB0cnVlXG4gICAgICB8ICcwJywgXyAtPiBzaWduLCBmYWxzZVxuICAgICAgfCBfIC0+IHNpZ24sIHRydWUpXG4gICAgZWxzZSBzaWduLCB0cnVlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gU3RkbGliLkludDY0LnRvX3N0cmluZyAodW53cmFwIHgpXG5cbiAgbGV0IG9mX3N0cmluZ19yYXcgc3RyID1cbiAgICBsZXQgc2lnbiwgc2lnbmVkbmVzcyA9IHNpZ25fYW5kX3NpZ25lZG5lc3Mgc3RyIGluXG4gICAgaWYgc2lnbmVkbmVzc1xuICAgIHRoZW4gb2ZfaW50NjRfZXhuIChTdGRsaWIuSW50NjQub2Zfc3RyaW5nIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb3Nfc3RyID1cbiAgICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICAgIHwgYE5lZyAtPiBTdHJpbmcuc3ViIHN0ciB+cG9zOjEgfmxlbjooU3RyaW5nLmxlbmd0aCBzdHIgLSAxKVxuICAgICAgICB8IGBQb3MgLT4gc3RyXG4gICAgICBpblxuICAgICAgbGV0IGludDY0ID0gU3RkbGliLkludDY0Lm9mX3N0cmluZyBwb3Nfc3RyIGluXG4gICAgICAoKiB1bnNpZ25lZCA2My1iaXQgaW50IG11c3QgcGFyc2UgYXMgYSBwb3NpdGl2ZSBzaWduZWQgNjQtYml0IGludCAqKVxuICAgICAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGludDY0IDBMIHRoZW4gaW52YWxpZF9zdHIgc3RyO1xuICAgICAgbGV0IGludDYzID0gd3JhcF9tb2R1bG8gaW50NjQgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBgTmVnIC0+IG5lZyBpbnQ2M1xuICAgICAgfCBgUG9zIC0+IGludDYzKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICB0cnkgb2Zfc3RyaW5nX3JhdyBzdHIgd2l0aFxuICAgIHwgXyAtPiBpbnZhbGlkX3N0ciBzdHJcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX29wdCBzdHIgPVxuICAgIG1hdGNoIG9mX3N0cmluZ19yYXcgc3RyIHdpdGhcbiAgICB8IHQgLT4gU29tZSB0XG4gICAgfCBleGNlcHRpb24gXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGJzd2FwMTYgdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDE2ICh1bndyYXAgdCkpXG4gIGxldCBic3dhcDMyIHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAzMiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXA0OCB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwNDggKHVud3JhcCB0KSlcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG51bV9iaXRzID0gNjNcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGJpdF9ub3RcbmxldCBiaXRfeG9yID0gYml0X3hvclxubGV0IGJpdF9vciA9IGJpdF9vclxubGV0IGJpdF9hbmQgPSBiaXRfYW5kXG5sZXQgcG9wY291bnQgPSBwb3Bjb3VudFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBwb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVcbmxldCBtaW51c19vbmUgPSB3cmFwX2V4biBTdGRsaWIuSW50NjQubWludXNfb25lXG5sZXQgb25lID0gd3JhcF9leG4gU3RkbGliLkludDY0Lm9uZVxubGV0IHplcm8gPSB3cmFwX2V4biBTdGRsaWIuSW50NjQuemVyb1xubGV0IGlzX3BvdzIgPSBpc19wb3cyXG5sZXQgZmxvb3JfcG93MiA9IGZsb29yX3BvdzJcbmxldCBjZWlsX3BvdzIgPSBjZWlsX3BvdzJcbmxldCBmbG9vcl9sb2cyID0gZmxvb3JfbG9nMlxubGV0IGNlaWxfbG9nMiA9IGNlaWxfbG9nMlxubGV0IGNseiA9IGNselxubGV0IGN0eiA9IGN0elxubGV0IHRvX2Zsb2F0IHggPSBTdGRsaWIuSW50NjQudG9fZmxvYXQgKHVud3JhcCB4KVxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCB4ID0gd3JhcF9tb2R1bG8gKFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdCB4KVxuXG5sZXQgb2ZfZmxvYXQgdCA9XG4gIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiB0ID49IGZsb2F0X2xvd2VyX2JvdW5kICYmIHQgPD0gZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiB3cmFwX21vZHVsbyAoU3RkbGliLkludDY0Lm9mX2Zsb2F0IHQpXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDYzLm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICgpXG47O1xuXG5sZXQgb2ZfaW50NjQgPSBvZl9pbnQ2NFxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gb2ZfaW50NjRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IHRvX2ludDY0XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxuXG4oKiBXZSBjYW4gcmV1c2UgY29udmVyc2lvbiBmdW5jdGlvbiBmcm9tL3RvIGludDY0IGhlcmUuICopXG5sZXQgb2ZfaW50IHggPSB3cmFwX2V4biAoQ29udi5pbnRfdG9faW50NjQgeClcbmxldCBvZl9pbnRfZXhuIHggPSBvZl9pbnQgeFxubGV0IHRvX2ludCB4ID0gQ29udi5pbnQ2NF90b19pbnQgKHVud3JhcCB4KVxubGV0IHRvX2ludF9leG4geCA9IENvbnYuaW50NjRfdG9faW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9faW50X3RydW5jIHggPSBDb252LmludDY0X3RvX2ludF90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfaW50MzIgeCA9IHdyYXBfZXhuIChDb252LmludDMyX3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50MzJfZXhuIHggPSBvZl9pbnQzMiB4XG5sZXQgdG9faW50MzIgeCA9IENvbnYuaW50NjRfdG9faW50MzIgKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX2V4biB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX3RydW5jIHggPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jICh1bndyYXAgeClcbmxldCBvZl9uYXRpdmVpbnQgeCA9IG9mX2ludDY0IChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF9leG4geCA9IHdyYXBfZXhuIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF90cnVuYyB4ID0gb2ZfaW50NjRfdHJ1bmMgKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgdG9fbmF0aXZlaW50IHggPSBDb252LmludDY0X3RvX25hdGl2ZWludCAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X2V4biB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuICh1bndyYXAgeClcbmxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X3RydW5jICh1bndyYXAgeClcblxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoVC5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIFQuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gVC5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuXG4gICAgbGV0IHRvX3N0cmluZyBpID1cbiAgICAgICgqIHRoZSB1c2Ugb2YgW3Vud3JhcF91bnNpZ25lZF0gaGVyZSBpcyBpbXBvcnRhbnQgZm9yIHRoZSBjYXNlIG9mIFttaW5fdmFsdWVdICopXG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVMeFwiICh1bndyYXBfdW5zaWduZWQgaSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gb2Zfc3RyaW5nIChcIjB4XCIgXiBzKVxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2My5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nIHggPSB0b19zdHJpbmcgeFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2M1wiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjNdIGFuZCBbSW50NjMuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG5tb2R1bGUgUmVwciA9IHN0cnVjdFxuICB0eXBlIGVtdWxhdGVkID0gdFxuXG4gIHR5cGUgKCd1bmRlcmx5aW5nX3R5cGUsICdpbnRlcm1lZGlhdGVfdHlwZSkgdCA9XG4gICAgfCBJbnQgOiAoaW50LCBpbnQpIHRcbiAgICB8IEludDY0IDogKGludDY0LCBlbXVsYXRlZCkgdFxuZW5kXG5cbmxldCByZXByID0gUmVwci5JbnQ2NFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5JbnQzMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50MzIgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50MzJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQzMl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQzMiA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQzMl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gIGxldCBvZl9zdHJpbmdfb3B0ID0gb2Zfc3RyaW5nX29wdFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDMyXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQzMi5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgSW5maXhfY29tcGFyZSA9IHN0cnVjdFxuICBvcGVuIFBvbHlcblxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IHggPj0geVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IHggPD0geVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IHggPiB5XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSB4IDwgeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IHggPD4geVxuZW5kXG5cbm1vZHVsZSBDb21wYXJlID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXhfY29tcGFyZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB4IHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfaW50MzIgdCA9IHRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyIHQgPSB0XG5sZXQgdG9faW50MzJfZXhuID0gdG9faW50MzJcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDMyX3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmxldCBvZl9pbnQgPSBDb252LmludF90b19pbnQzMlxubGV0IG9mX2ludF9leG4gPSBDb252LmludF90b19pbnQzMl9leG5cbmxldCBvZl9pbnRfdHJ1bmMgPSBDb252LmludF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludCA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50MzJfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYuaW50MzJfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYuaW50MzJfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IG9mX25hdGl2ZWludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxuZXh0ZXJuYWwgYnN3YXAzMiA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVic3dhcF9pbnQzMlwiXG5cbmxldCBic3dhcDE2IHggPSBTdGRsaWIuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXAzMiB4KSAxNlxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBTdGRsaWIuSW50MzIubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBTdGRsaWIuSW50MzIubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBTdGRsaWIuSW50MzIucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBTdGRsaWIuSW50MzIuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgU3RkbGliLkludDMyLnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIFN0ZGxpYi5JbnQzMi5wcmVkIHggPSBTdGRsaWIuSW50MzIuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludDMyIGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDMyW0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50MzJfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gU3RkbGliLkludDMyLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50MzIuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IFN0ZGxpYi5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICAoKiBUaGUgW2kgPSAxXSBjaGVjayBpcyBuZWVkZWQgYmVjYXVzZSBjbHooMCkgaXMgdW5kZWZpbmVkICopXG4gICAgaWYgU3RkbGliLkludDMyLmVxdWFsIGkgU3RkbGliLkludDMyLm9uZVxuICAgIHRoZW4gMFxuICAgIGVsc2UgbnVtX2JpdHMgLSBjbHogKFN0ZGxpYi5JbnQzMi5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50MzIgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50MzIgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlbHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJWx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzIuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQzMlwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKENvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDMyXSBhbmQgW0ludDMyLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFJlcHIgPSBJbnQ2M19lbXVsLlJlcHJcblxuKCogSW4gYSB3b3JsZCB3aGVyZSB0aGUgY29tcGlsZXIgd291bGQgdW5kZXJzdGFuZCBbQEBpbW1lZGlhdGU2NF0gYXR0cmlidXRlcyBvbiB0eXBlXG4gICBkZWNsYXJhdGlvbnMsIHRoaXMgbW9kdWxlIGlzIGhvdyBvbmUgd291bGQgcHJvZHVjZSBhIFt0eXBlIHRdIHdpdGggdGhpcyBhdHRyaWJ1dGUuICopXG5tb2R1bGUgSW1tZWRpYXRlNjQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW1tZWRpYXRlIDogSW1tZWRpYXRlKSAoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpIDogc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcblxuICAgIHZhbCByZXByIDogdCByZXByXG4gIGVuZFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICBleHRlcm5hbCB0cmFuc3BhcmVudF9tYWdpYyA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdiW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxuICAgIGxldCByZXByID1cbiAgICAgICgqIFtPYmoubWFnaWNdIGludm9sdmVzIG9wYXF1ZW5lc3MgdW5kZXIgRmxhbWJkYSAyIHdoaWNoIHdpbGwgaW5oaWJpdFxuICAgICAgICAgYXZhaWxhYmlsaXR5IG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlIGZvciBsYXRlciBpbmxpbmluZ1xuICAgICAgICAgKGUuZy4gaW50byBmbG9hdC5tbCkuIEFzIHN1Y2ggd2UgZXhwbGljaXRseSB1c2UgJWlkZW50aXR5IGhlcmUuICopXG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+ICh0cmFuc3BhcmVudF9tYWdpYyBJbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgICB8IFczMiAtPiAodHJhbnNwYXJlbnRfbWFnaWMgTm9uX2ltbWVkaWF0ZSA6IHQgcmVwcilcbiAgICA7O1xuICBlbmRcbiAgW0BAaW5saW5lIGFsd2F5c11cbmVuZFxuXG5pbmNsdWRlIEltbWVkaWF0ZTY0Lk1ha2UgKEludCkgKEludDYzX2VtdWwpXG5cbm1vZHVsZSBCYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgSW50X2ludGYuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludF90cnVuYyA6IHQgLT4gaW50XG4gICAgdmFsIG9mX2ludDMyIDogaW50MzIgLT4gdFxuICAgIHZhbCB0b19pbnQzMiA6IHQgLT4gSW50MzIudCBvcHRpb25cbiAgICB2YWwgdG9faW50MzJfdHJ1bmMgOiB0IC0+IEludDMyLnRcbiAgICB2YWwgb2ZfaW50NjQgOiBJbnQ2NC50IC0+IHQgb3B0aW9uXG4gICAgdmFsIG9mX2ludDY0X3RydW5jIDogSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0IG9wdGlvblxuICAgIHZhbCB0b19uYXRpdmVpbnQgOiB0IC0+IG5hdGl2ZWludCBvcHRpb25cbiAgICB2YWwgb2ZfbmF0aXZlaW50X3RydW5jIDogbmF0aXZlaW50IC0+IHRcbiAgICB2YWwgdG9fbmF0aXZlaW50X3RydW5jIDogdCAtPiBuYXRpdmVpbnRcbiAgICB2YWwgb2ZfZmxvYXRfdW5jaGVja2VkIDogZmxvYXQgLT4gdFxuICAgIHZhbCByZXByIDogKHQsIHQpIEludDYzX2VtdWwuUmVwci50XG4gICAgdmFsIGJzd2FwMTYgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXAzMiA6IHQgLT4gdFxuICAgIHZhbCBic3dhcDQ4IDogdCAtPiB0XG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE5hdGl2ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdG9faW50IHggPSBTb21lIHhcbiAgICBsZXQgdG9faW50X3RydW5jIHggPSB4XG5cbiAgICAoKiBbb2ZfaW50MzJfZXhuXSBpcyBhIHNhZmUgb3BlcmF0aW9uIG9uIHBsYXRmb3JtcyB3aXRoIDY0LWJpdCB3b3JkIHNpemVzLiAqKVxuICAgIGxldCBvZl9pbnQzMiA9IG9mX2ludDMyX2V4blxuICAgIGxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IHRvX25hdGl2ZWludCB4XG4gICAgbGV0IHRvX25hdGl2ZWludCB4ID0gU29tZSAodG9fbmF0aXZlaW50IHgpXG4gICAgbGV0IHJlcHIgPSBJbnQ2M19lbXVsLlJlcHIuSW50XG4gICAgbGV0IGJzd2FwMzIgdCA9IEludDY0LnRvX2ludF90cnVuYyAoSW50NjQuYnN3YXAzMiAoSW50NjQub2ZfaW50IHQpKVxuICAgIGxldCBic3dhcDQ4IHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwNDggKEludDY0Lm9mX2ludCB0KSlcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIFMpID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiAobW9kdWxlIE5hdGl2ZSA6IFMpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgSW50NjNfZW11bCA6IFMpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSAodmFsIEJhY2tlbmQuaW1wbCA6IEJhY2tlbmQuUylcblxubW9kdWxlIE92ZXJmbG93X2V4biA9IHN0cnVjdFxuICBsZXQgKCArICkgdCB1ID1cbiAgICBsZXQgc3VtID0gdCArIHUgaW5cbiAgICBpZiBiaXRfb3IgKGJpdF94b3IgdCB1KSAoYml0X3hvciB0IChiaXRfbm90IHN1bSkpIDwgemVyb1xuICAgIHRoZW4gc3VtXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCArICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInN1bVwiLCBzZXhwX29mX3Qgc3VtIF0pXG4gIDs7XG5cbiAgbGV0ICggLSApIHQgdSA9XG4gICAgbGV0IGRpZmYgPSB0IC0gdSBpblxuICAgIGxldCBwb3NfZGlmZiA9IHQgPiB1IGluXG4gICAgaWYgdCA8PiB1ICYmIEJvb2wuKCA8PiApIHBvc19kaWZmIChpc19wb3NpdGl2ZSBkaWZmKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLSApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJkaWZmXCIsIHNleHBfb2ZfdCBkaWZmIF0pXG4gICAgZWxzZSBkaWZmXG4gIDs7XG5cbiAgbGV0IG5lZ2F0aXZlX29uZSA9IG9mX2ludCAoLTEpXG4gIGxldCBkaXZfd291bGRfb3ZlcmZsb3cgdCB1ID0gdCA9IG1pbl92YWx1ZSAmJiB1ID0gbmVnYXRpdmVfb25lXG5cbiAgbGV0ICggKiApIHQgdSA9XG4gICAgbGV0IHByb2R1Y3QgPSB0ICogdSBpblxuICAgIGlmIHUgPD4gemVybyAmJiAoZGl2X3dvdWxkX292ZXJmbG93IHByb2R1Y3QgdSB8fCBwcm9kdWN0IC8gdSA8PiB0KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKiApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCBwcm9kdWN0IF0pXG4gICAgZWxzZSBwcm9kdWN0XG4gIDs7XG5cbiAgbGV0ICggLyApIHQgdSA9XG4gICAgaWYgZGl2X3dvdWxkX292ZXJmbG93IHQgdVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCAodCAvIHUpIF0pXG4gICAgZWxzZSB0IC8gdVxuICA7O1xuXG4gIGxldCBhYnMgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcImFicyBvdmVyZmxvd1wiIGVsc2UgYWJzIHRcbiAgbGV0IG5lZyB0ID0gaWYgdCA9IG1pbl92YWx1ZSB0aGVuIGZhaWx3aXRoIFwibmVnIG92ZXJmbG93XCIgZWxzZSBuZWcgdFxuZW5kXG5cbmxldCAoKSA9IGFzc2VydCAoSW50LiggPSApIG51bV9iaXRzIDYzKVxuXG5sZXQgcmFuZG9tX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGJvdW5kID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50IHN0YXRlICh0b19pbnRfZXhuIGJvdW5kKSlcbjs7XG5cbmxldCByYW5kb21fb2ZfaW50NjQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludDY0X2V4biAoUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlICh0b19pbnQ2NCBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHJhbmRvbV9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX29mX2ludDY0XG47O1xuXG5sZXQgcmFuZG9tX2luY2xfb2ZfaW50ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQgKFJhbmRvbS5TdGF0ZS5pbnRfaW5jbCBzdGF0ZSAodG9faW50X2V4biBsbykgKHRvX2ludF9leG4gaGkpKVxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHN0YXRlICh0b19pbnQ2NCBsbykgKHRvX2ludDY0IGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21faW5jbF9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX2luY2xfb2ZfaW50NjRcbjs7XG5cbmxldCBmbG9vcl9sb2cyIHQgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gdCB8PiB0b19pbnRfZXhuIHw+IEludC5mbG9vcl9sb2cyXG4gIHwgVzMyIC0+XG4gICAgaWYgdCA8PSB6ZXJvXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKTtcbiAgICBsZXQgZmxvb3JfbG9nMiA9IHJlZiAoSW50LiggLSApIG51bV9iaXRzIDIpIGluXG4gICAgd2hpbGUgZXF1YWwgemVybyAoYml0X2FuZCB0IChzaGlmdF9sZWZ0IG9uZSAhZmxvb3JfbG9nMikpIGRvXG4gICAgICBmbG9vcl9sb2cyIDo9IEludC4oIC0gKSAhZmxvb3JfbG9nMiAxXG4gICAgZG9uZTtcbiAgICAhZmxvb3JfbG9nMlxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcHIgPSBSZXByXG5cbiAgbGV0IHJlcHIgPSByZXByXG5cbiAgbW9kdWxlIEVtdWwgPSBJbnQ2M19lbXVsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2h0YmwuS2V5ICopXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIFR3byBbdF1zIHRoYXQgW2NvbXBhcmVdIGVxdWFsIG11c3QgaGF2ZSBlcXVhbCBoYXNoZXMgZm9yIHRoZSBoYXNodGFibGVcbiAgICAgICAgdG8gYmVoYXZlIHByb3Blcmx5LiAqKVxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLk1lcmdlX2ludG9fYWN0aW9uICopXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJlbW92ZVxuICAgIHwgU2V0X3RvIG9mICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gc2lnXG4gICgqKiB7MiBBY2Nlc3NvcnN9ICopXG5cbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG5cbiAgdmFsIHNleHBfb2Zfa2V5IDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBTZXhwLnRcbiAgdmFsIGNsZWFyIDogKF8sIF8pIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBBdHRlbXB0aW5nIHRvIG1vZGlmeSAoW3NldF0sIFtyZW1vdmVdLCBldGMuKSB0aGUgaGFzaHRhYmxlIGR1cmluZyBpdGVyYXRpb24gKFtmb2xkXSxcbiAgICAgIFtpdGVyXSwgW2l0ZXJfa2V5c10sIFtpdGVyaV0pIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAqKVxuICB2YWwgZm9sZFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXykgdCAtPiBmOigoJ2Ega2V5IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZXMgb3ZlciBib3RoIGtleXMgYW5kIHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuaXRlcmkgaCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgcHJpbnRfZW5kbGluZSAoUHJpbnRmLnNwcmludGYgXCIlZC0lZFwiIGtleSBkYXRhKSk7O1xuICAgICAgMS00XG4gICAgICA1LTZcbiAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIHZ9ICopXG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBjb3VudCA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBib29sXG4gIHZhbCByZW1vdmUgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogQ2hvb3NlIGFuIGFyYml0cmFyeSBrZXkvdmFsdWUgcGFpciBvZiBhIGhhc2ggdGFibGUuIFJldHVybnMgW05vbmVdIGlmIFt0XSBpcyBlbXB0eS5cblxuICAgICAgVGhlIGNob2ljZSBpcyBkZXRlcm1pbmlzdGljLiBDYWxsaW5nIFtjaG9vc2VdIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHRhYmxlXG4gICAgICByZXR1cm5zIHRoZSBzYW1lIGtleS92YWx1ZSBwYWlyLCBzbyBsb25nIGFzIHRoZSB0YWJsZSBpcyBub3QgbXV0YXRlZCBpbiBiZXR3ZWVuLlxuICAgICAgQmV5b25kIGRldGVybWluaXNtLCBubyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IGhvdyB0aGUgY2hvaWNlIGlzIG1hZGUuIEV4cGVjdFxuICAgICAgYmlhcyB0b3dhcmQgY2VydGFpbiBoYXNoIHZhbHVlcy5cblxuICAgICAgVGhpcyBoYXNoIGJpYXMgY2FuIGxlYWQgdG8gZGVnZW5lcmF0ZSBwZXJmb3JtYW5jZSBpbiBzb21lIGNhc2VzLCBzdWNoIGFzIGNsZWFyaW5nXG4gICAgICBhIGhhc2ggdGFibGUgdXNpbmcgcmVwZWF0ZWQgW2Nob29zZV0gYW5kIFtyZW1vdmVdLiBBdCBlYWNoIGl0ZXJhdGlvbiwgZmluZGluZyB0aGVcbiAgICAgIG5leHQgZWxlbWVudCBtYXkgaGF2ZSB0byBzY2FuIGZhcnRoZXIgZnJvbSBpdHMgaW5pdGlhbCBoYXNoIHZhbHVlLiAqKVxuICB2YWwgY2hvb3NlIDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIG9wdGlvblxuXG4gICgqKiBMaWtlIFtjaG9vc2VdLiBSYWlzZXMgaWYgW3RdIGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5ICogJ2JcblxuICAoKiogQ2hvb3NlcyBhIHJhbmRvbSBrZXkvdmFsdWUgcGFpciBvZiBhIGhhc2ggdGFibGUuIFJldHVybnMgW05vbmVdIGlmIFt0XSBpcyBlbXB0eS5cblxuICAgICAgVGhlIGNob2ljZSBpcyBkaXN0cmlidXRlZCB1bmlmb3JtbHkgYWNyb3NzIGhhc2ggdmFsdWVzLCByYXRoZXIgdGhhbiBhY3Jvc3Mga2V5c1xuICAgICAgdGhlbXNlbHZlcy4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGNsb3NlciB0aGUga2V5cyBhcmUgdG8gZXZlbmx5IHNwYWNlZCBvdXQgaW4gdGhlXG4gICAgICB0YWJsZSwgdGhlIGNsb3NlciB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgdG8gYSB1bmlmb3JtIGNob2ljZSBvZiBrZXlzLlxuXG4gICAgICBUaGlzIGZ1bmN0aW9uIG1heSBiZSBwcmVmZXJhYmxlIHRvIFtjaG9vc2VdIHdoZW4gbm9uZGV0ZXJtaW5pc3RpYyBjaG9pY2UgaXNcbiAgICAgIGFjY2VwdGFibGUsIGFuZCBiaWFzIHRvd2FyZCBjZXJ0YWluIGhhc2ggdmFsdWVzIGlzIHVuZGVzaXJhYmxlLiAqKVxuICB2YWwgY2hvb3NlX3JhbmRvbWx5XG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAoKiogZGVmYXVsdDogW1JhbmRvbS5TdGF0ZS5kZWZhdWx0XSAqKVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2Ega2V5ICogJ2IpIG9wdGlvblxuXG4gICgqKiBMaWtlIFtjaG9vc2VfcmFuZG9tbHldLiBSYWlzZXMgaWYgW3RdIGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlX3JhbmRvbWx5X2V4blxuICAgIDogID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgKCoqIGRlZmF1bHQ6IFtSYW5kb20uU3RhdGUuZGVmYXVsdF0gKilcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5ICogJ2JcblxuICAoKiogU2V0cyB0aGUgZ2l2ZW4gW2tleV0gdG8gW2RhdGFdLiAqKVxuICB2YWwgc2V0IDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbYWRkXSBhbmQgW2FkZF9leG5dIGxlYXZlIHRoZSB0YWJsZSB1bmNoYW5nZWQgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBwcmVzZW50LiAqKVxuICB2YWwgYWRkIDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gWyBgT2sgfCBgRHVwbGljYXRlIF1cblxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gY2hhbmdlcyBbdF0ncyB2YWx1ZSBmb3IgW2tleV0gdG8gYmUgW2YgKGZpbmQgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2IpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW3VwZGF0ZV9hbmRfcmV0dXJuIHQga2V5IH5mXSBpcyBbdXBkYXRlXSwgYnV0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBbZiBvXS4gKilcbiAgdmFsIHVwZGF0ZV9hbmRfcmV0dXJuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooKCdiIG9wdGlvbiAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogW21hcCB0IGZdIHJldHVybnMgYSBuZXcgdGFibGUgd2l0aCB2YWx1ZXMgcmVwbGFjZWQgYnkgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBbZl1cbiAgICAgIHRvIHRoZSBjdXJyZW50IHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIGxldCBoJyA9IEhhc2h0YmwubWFwIGggfmY6KChmdW4geCAtPiB4ICogMilbQGxvY2FsXSkgaW5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaCc7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDEyKTsgKDEsIDgpXVxuICAgICAgdn0gKilcbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdiIC0+ICdjKVtAbG9jYWxdKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogUmV0dXJucyBhIG5ldyB0YWJsZSBieSBmaWx0ZXJpbmcgdGhlIGdpdmVuIHRhYmxlJ3MgdmFsdWVzIGJ5IFtmXTogdGhlIGtleXMgZm9yIHdoaWNoXG4gICAgICBbZl0gYXBwbGllZCB0byB0aGUgY3VycmVudCB2YWx1ZSByZXR1cm5zIFtTb21lXSBhcmUga2VwdCwgYW5kIHRob3NlIGZvciB3aGljaCBpdFxuICAgICAgcmV0dXJucyBbTm9uZV0gYXJlIGRpc2NhcmRlZC5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuZmlsdGVyX21hcCBoIH5mOigoZnVuIHggLT4gaWYgeCA+IDUgdGhlbiBTb21lIHggZWxzZSBOb25lKVtAbG9jYWxdKVxuICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoNSwgNildXG4gICAgICB2fSAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdiIC0+ICdjIG9wdGlvbilbQGxvY2FsXSkgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IpIHQgLT4gZjooKCdhIGtleSAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogUmV0dXJucyBuZXcgdGFibGVzIHdpdGggYm91bmQgdmFsdWVzIHBhcnRpdGlvbmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZFxuICAgICAgdmFsdWVzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogUmV0dXJucyBhIHBhaXIgb2YgdGFibGVzIFsodDEsIHQyKV0sIHdoZXJlIFt0MV0gY29udGFpbnMgYWxsIHRoZSBlbGVtZW50cyBvZiB0aGVcbiAgICAgIGluaXRpYWwgdGFibGUgd2hpY2ggc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXSwgYW5kIFt0Ml0gY29udGFpbnMgdGhlIHJlc3QuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fdGZdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBbZmluZF9vcl9hZGQgdCBrIH5kZWZhdWx0XSByZXR1cm5zIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBrZXkgW2tdIGlmIGl0IGlzIGluIHRoZVxuICAgICAgdGFibGUgW3RdLCBhbmQgb3RoZXJ3aXNlIGFzc2lnbnMgW2tdIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBbZGVmYXVsdCAoKV0uICopXG4gIHZhbCBmaW5kX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KCh1bml0IC0+ICdiKVtAbG9jYWxdKSAtPiAnYlxuXG4gICgqKiBMaWtlIFtmaW5kX29yX2FkZF0gYnV0IFtkZWZhdWx0XSB0YWtlcyB0aGUga2V5IGFzIGFuIGFyZ3VtZW50LiAqKVxuICB2YWwgZmluZGlfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDooKCdhIGtleSAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogW2ZpbmQgdCBrXSByZXR1cm5zIFtTb21lXSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgW2tdIGluIFt0XSwgb3IgW05vbmVdIGlmIG5vIHN1Y2hcbiAgICAgIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBbZmluZF9leG4gdCBrXSByZXR1cm5zIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgW2tdIGluIFt0XSwgb3IgcmFpc2VzIFtTdGRsaWIuTm90X2ZvdW5kXVxuICAgICAgb3IgW05vdF9mb3VuZF9zXSBpZiBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYlxuXG4gICgqKiBbZmluZF9hbmRfY2FsbCB0IGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRdXG5cbiAgICAgIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIFttYXRjaCBmaW5kIHQgayB3aXRoIFNvbWUgdiAtPiBpZl9mb3VuZCB2IHwgTm9uZSAtPiBpZl9ub3RfZm91bmQga11cblxuICAgICAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSB0aGUgb3B0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gICgqKiBKdXN0IGxpa2UgW2ZpbmRfYW5kX2NhbGxdLCBidXQgdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQgd2hpY2ggaXMgcGFzc2VkIHRvIFtpZl9mb3VuZF1cbiAgICAgIGFuZCBbaWZfbm90X2ZvdW5kXSwgc28gdGhhdCB0aGUgY2xpZW50IGNvZGUgY2FuIGF2b2lkIGFsbG9jYXRpbmcgY2xvc3VyZXMgb3IgdXNpbmdcbiAgICAgIHJlZnMgdG8gcGFzcyB0aGlzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGluIGNvZGVcbiAgICAgIHdoaWNoIHRyaWVzIHRvIG1pbmltaXplIGhlYXAgYWxsb2NhdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdkIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOigoJ2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGlmX2ZvdW5kOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDFcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGlmX2ZvdW5kOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnZSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICAoKiogW2ZpbmRfYW5kX3JlbW92ZSB0IGtdIHJldHVybnMgU29tZSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgayBpbiB0IGFuZCByZW1vdmVzIGl0LFxuICAgICAgb3IgTm9uZSBpcyBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9hbmRfcmVtb3ZlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIE1lcmdlcyB0d28gaGFzaHRhYmxlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiBbbWVyZ2UgZiBoMSBoMl0gaGFzIGFzIGtleXMgdGhlIHNldCBvZiBhbGwgW2tdIGluIHRoZSB1bmlvbiBvZiB0aGVcbiAgICAgIHNldHMgb2Yga2V5cyBvZiBbaDFdIGFuZCBbaDJdIGZvciB3aGljaCBbZChrKV0gaXMgbm90IE5vbmUsIHdoZXJlOlxuXG4gICAgICBkKGspID1cbiAgICAgIC0gW2YgfmtleTprIChgTGVmdCBkMSldXG4gICAgICAgIGlmIFtrXSBpbiBbaDFdIG1hcHMgdG8gZDEsIGFuZCBbaDJdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYFJpZ2h0IGQyKV1cbiAgICAgICAgaWYgW2tdIGluIFtoMl0gbWFwcyB0byBkMiwgYW5kIFtoMV0gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciBba107XG5cbiAgICAgIC0gW2YgfmtleTprIChgQm90aCAoZDEsIGQyKSldXG4gICAgICAgIG90aGVyd2lzZSwgd2hlcmUgW2tdIGluIFtoMV0gbWFwcyB0byBbZDFdIGFuZCBba10gaW4gW2gyXSBtYXBzIHRvIFtkMl0uXG5cbiAgICAgIEVhY2gga2V5IFtrXSBpcyBtYXBwZWQgdG8gYSBzaW5nbGUgcGllY2Ugb2YgZGF0YSBbeF0sIHdoZXJlIFtkKGspID0gU29tZSB4XS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ2EpIHRcbiAgICAtPiAoJ2ssICdiKSB0XG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIGtleSAtPiBbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdiIHwgYEJvdGggb2YgJ2EgKiAnYiBdIC0+ICdjIG9wdGlvbilcbiAgICAgICAgICBbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICdjKSB0XG5cblxuICAoKiogRXZlcnkgW2tleV0gaW4gW3NyY10gd2lsbCBiZSByZW1vdmVkIG9yIHNldCBpbiBbZHN0XSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZVxuICAgICAgb2YgW2ZdLiAqKVxuICB2YWwgbWVyZ2VfaW50b1xuICAgIDogIHNyYzooJ2ssICdhKSB0XG4gICAgLT4gZHN0OignaywgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiAnYSAtPiAnYiBvcHRpb24gLT4gJ2IgTWVyZ2VfaW50b19hY3Rpb24udClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGtleXMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGtleXMgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgZGF0YSBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgZGF0YSA6IChfLCAnYikgdCAtPiAnYiBsaXN0XG5cbiAgKCoqIFtmaWx0ZXJfaW5wbGFjZSB0IH5mXSByZW1vdmVzIGFsbCB0aGUgZWxlbWVudHMgZnJvbSBbdF0gdGhhdCBkb24ndCBzYXRpc2Z5IFtmXS4gKilcbiAgdmFsIGZpbHRlcl9rZXlzX2lucGxhY2UgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGtleSAtPiBib29sKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbbWFwX2lucGxhY2UgdCB+Zl0gYXBwbGllcyBbZl0gdG8gYWxsIGVsZW1lbnRzIGluIFt0XSwgdHJhbnNmb3JtaW5nIHRoZW0gaW5cbiAgICAgIHBsYWNlLiAqKVxuICB2YWwgbWFwX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+ICdiKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIG1hcGlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZmlsdGVyX21hcF9pbnBsYWNlXSBjb21iaW5lcyB0aGUgZWZmZWN0cyBvZiBbbWFwX2lucGxhY2VdIGFuZCBbZmlsdGVyX2lucGxhY2VdLiAqKVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX21hcGlfaW5wbGFjZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtlcXVhbCBmIHQxIHQyXSBhbmQgW3NpbWlsYXIgZiB0MSB0Ml0gYm90aCByZXR1cm4gdHJ1ZSBpZmYgW3QxXSBhbmQgW3QyXSBoYXZlIHRoZVxuICAgICAgc2FtZSBrZXlzIGFuZCBmb3IgYWxsIGtleXMgW2tdLCBbZiAoZmluZF9leG4gdDEgaykgKGZpbmRfZXhuIHQyIGspXS4gIFtlcXVhbF0gYW5kXG4gICAgICBbc2ltaWxhcl0gb25seSBkaWZmZXIgaW4gdGhlaXIgdHlwZXMuICopXG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuXG4gIHZhbCBzaW1pbGFyIDogKCdiMSAtPiAnYjIgLT4gYm9vbCkgLT4gKCdhLCAnYjEpIHQgLT4gKCdhLCAnYjIpIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCAoa2V5LCBkYXRhKSBwYWlycyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgdG9fYWxpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgbGlzdFxuXG5cbiAgKCoqIFtyZW1vdmVfaWZfemVyb10ncyBkZWZhdWx0IGlzIFtmYWxzZV0uICopXG4gIHZhbCBpbmNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gIHZhbCBkZWNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE11bHRpID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gICgqKiBbYWRkX211bHRpIHQgfmtleSB+ZGF0YV0gaWYgW2tleV0gaXMgcHJlc2VudCBpbiB0aGUgdGFibGUgdGhlbiBjb25zXG4gICAgICBbZGF0YV0gb24gdGhlIGxpc3QsIG90aGVyd2lzZSBhZGQgW2tleV0gd2l0aCBhIHNpbmdsZSBlbGVtZW50IGxpc3QuICopXG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW3JlbW92ZV9tdWx0aSB0IGtleV0gdXBkYXRlcyB0aGUgdGFibGUsIHJlbW92aW5nIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGJvdW5kIHRvXG4gICAgICBba2V5XS4gSWYgdGhlIGxpc3QgaGFzIG9ubHkgb25lIGVsZW1lbnQgKG9yIGlzIGVtcHR5KSB0aGVuIHRoZSBiaW5kaW5nIGlzXG4gICAgICByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCBfIGxpc3QpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogW2ZpbmRfbXVsdGkgdCBrZXldIHJldHVybnMgdGhlIGVtcHR5IGxpc3QgaWYgW2tleV0gaXMgbm90IHByZXNlbnQgaW4gdGhlIHRhYmxlLFxuICAgICAgcmV0dXJucyBbdF0ncyB2YWx1ZXMgZm9yIFtrZXldIG90aGVyd2lzZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2Ega2V5IC0+ICdiIGxpc3RcbmVuZFxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ2tleSBLZXkudFxuICAtPiAnelxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ3pcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGUgOiAoJ2Ega2V5LCAnYiwgdW5pdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnYSBrZXksICdiLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAoJ2Ega2V5LCAnYiBsaXN0LCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYiBsaXN0KSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OigoJ3IgLT4gJ2Ega2V5KVtAbG9jYWxdKVxuICAgICAgICAtPiBnZXRfZGF0YTooKCdyIC0+ICdiKVtAbG9jYWxdKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MSwuLi4seG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCBPcl9lcnJvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBncm91cFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAgICAgLT4gY29tYmluZTooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+ICgnYSwgJ2IpIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gICgqKiB7MiBDcmVhdG9yc30gKilcblxuICAoKiogVGhlIG1vZHVsZSB5b3UgcGFzcyB0byBbY3JlYXRlXSBtdXN0IGhhdmUgYSB0eXBlIHRoYXQgaXMgaGFzaGFibGUsIHNleHBhYmxlLCBhbmRcbiAgICAgIGNvbXBhcmFibGUuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KTs7XG4gICAgICAgIC0gOiAoaW50LCAnX2EpIEhhc2h0YmwudCA9IDxhYnN0cj47O1xuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3QgKG1vZHVsZSBJbnQpIFsoMywgXCJzb21ldGhpbmdcIik7ICgyLCBcIndoYXRldmVyXCIpXVxuICAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXkgb2YgaW50IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBXaGVyZWFzIFtvZl9hbGlzdF0gd2lsbCByZXBvcnQgW0R1cGxpY2F0ZV9rZXldIG5vIG1hdHRlciBob3cgbWFueSBkdXBzIHRoZXJlIGFyZSBpblxuICAgICAgeW91ciBsaXN0LCBbb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXSB3aWxsIHJlcG9ydCBlYWNoIGFuZCBldmVyeSBkdXBsaWNhdGUgZW50cnkuXG5cbiAgICAgIEZvciBleGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXkgMVxuXG4gICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXlzIFsxOyAyXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQ3JlYXRlcyBhIHt7IU11bHRpfSBcIm11bHRpXCJ9IGhhc2h0YWJsZSwgaS5lLiwgYSBoYXNodGFibGUgd2hlcmUgZWFjaCBrZXkgcG9pbnRzIHRvIGFcbiAgICAgIGxpc3QgcG90ZW50aWFsbHkgY29udGFpbmluZyBtdWx0aXBsZSB2YWx1ZXMuIFNvIGluc3RlYWQgb2Ygc2hvcnQtY2lyY3VpdGluZyB3aXRoIGFcbiAgICAgIFtgRHVwbGljYXRlX2tleV0gdmFyaWFudCBvbiBkdXBsaWNhdGVzLCBhcyBpbiBbb2ZfYWxpc3RdLCBbb2ZfYWxpc3RfbXVsdGldIGZvbGRzXG4gICAgICB0aG9zZSB2YWx1ZXMgaW50byBhIGxpc3QgZm9yIHRoZSBnaXZlbiBrZXk6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfbXVsdGkgKG1vZHVsZSBJbnQpIFsoMSwgXCJhXCIpOyAoMSwgXCJiXCIpOyAoMiwgXCJjXCIpOyAoMiwgXCJkXCIpXTs7XG4gICAgICB2YWwgaCA6IChpbnQsIHN0cmluZyBsaXN0KSBIYXNodGJsLnQgPSA8YWJzdHI+XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgIC0gOiBzdHJpbmcgbGlzdCA9IFtcImJcIjsgXCJhXCJdXG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCkgdFxuXG4gICgqKiBBcHBsaWVzIHRoZSBbZ2V0X2tleV0gYW5kIFtnZXRfZGF0YV0gZnVuY3Rpb25zIHRvIHRoZSBbJ3IgbGlzdF0gdG8gY3JlYXRlIHRoZVxuICAgICAgaW5pdGlhbCBrZXlzIGFuZCB2YWx1ZXMsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBuZXcgaGFzaHRhYmxlLlxuXG4gICAgICB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxOy4uLjt4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXVxuICAgICAgXX1cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgbGV0IGggPVxuICAgICAgICAgIEhhc2h0YmwuY3JlYXRlX21hcHBlZCAobW9kdWxlIEludClcbiAgICAgICAgICAgIH5nZXRfa2V5OigoZnVuIHggLT4geClbQGxvY2FsXSlcbiAgICAgICAgICAgIH5nZXRfZGF0YTooKGZ1biB4IC0+IHggKyAxKVtAbG9jYWxdKVxuICAgICAgICAgICBbMTsgMjsgM107O1xuICAgICAgICB2YWwgaCA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIGludCkgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuXG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBtYXRjaCBoIHdpdGhcbiAgICAgICAgICB8IGBPayB4IC0+IHhcbiAgICAgICAgICB8IGBEdXBsaWNhdGVfa2V5cyBfIC0+IGZhaWx3aXRoIFwiXCJcbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgICAtIDogaW50ID0gMlxuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZV9tYXBwZWRcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdyKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdFxuXG4gICgqKiBMaWtlIFtjcmVhdGVfbWFwcGVkXSwgYXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyXG4gICAgICBsaXN0XSB0byBjcmVhdGUgdGhlIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZSAtLVxuICAgICAgYW5kIHRoZW4sIGxpa2UgW2FkZF9tdWx0aV0sIGZvbGRzIHRvZ2V0aGVyIHZhbHVlcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUga2V5cy4gSGVyZSxcbiAgICAgIHRob3VnaCwgdGhlIGZ1bmN0aW9uIHVzZWQgZm9yIHRoZSBmb2xkaW5nIGlzIGdpdmVuIGJ5IFtjb21iaW5lXSAoaW5zdGVhZCBvZiBqdXN0XG4gICAgICBiZWluZyBhIFtjb25zXSkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLmdyb3VwIChtb2R1bGUgSW50KVxuICAgICAgICAgICB+Z2V0X2tleTooKGZ1biB4IC0+IHggLyAyKVtAbG9jYWxdKVxuICAgICAgICAgICB+Z2V0X2RhdGE6KChmdW4geCAtPiB4KVtAbG9jYWxdKVxuICAgICAgICAgICB+Y29tYmluZTooKGZ1biB4IHkgLT4geCAqIHkpW0Bsb2NhbF0pXG4gICAgICAgICAgICBbIDE7IDI7IDM7IDRdXG4gICAgICAgICB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWygyLCA0KTsgKDEsIDYpOyAoMCwgMSldXG4gICAgICAgdn0gKilcbiAgdmFsIGdyb3VwXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gY29tYmluZTooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBzaWdcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuXG4gIHR5cGUgKCEnYSwgISdiKSB0XG5cbiAgKCoqIFdlIHByb3ZpZGUgYSBbc2V4cF9vZl90XSBidXQgbm90IGEgW3Rfb2Zfc2V4cF0gZm9yIHRoaXMgdHlwZSBiZWNhdXNlIG9uZSBuZWVkcyB0byBiZVxuICAgICAgZXhwbGljaXQgYWJvdXQgdGhlIGhhc2ggYW5kIGNvbXBhcmlzb24gZnVuY3Rpb25zIHVzZWQgd2hlbiBjcmVhdGluZyBhIGhhc2h0YWJsZS5cbiAgICAgIE5vdGUgdGhhdCBbSGFzaHRibC5Qb2x5LnRdIGRvZXMgaGF2ZSBbW0BAZGVyaXZpbmcgc2V4cF1dLCBhbmQgdXNlcyBPQ2FtbCdzIGJ1aWx0LWluXG4gICAgICBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGFuZCBhbmQgcG9seW1vcnBoaWMgaGFzaGluZy4gKilcbiAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYiAtPiBTZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cC50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ICgqKiBAaW5saW5lICopXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5ID0gJ2FcbiAgKCoqIEBpbmxpbmUgKilcblxuXG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAoKiogQGlubGluZSAqKVxuXG4gIHZhbCBoYXNoYWJsZV9zIDogKCdrZXksIF8pIHQgLT4gJ2tleSBLZXkudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyXG4gICAgOiAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuXG4gIHZhbCBoYXNoYWJsZSA6ICdhIEhhc2hhYmxlLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgaW5jbHVkZSBNdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdrLCAndikgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNodGJsID0gc2lnXG4gICgqKiBBIGhhc2ggdGFibGUgaXMgYSBtdXRhYmxlIGRhdGEgc3RydWN0dXJlIGltcGxlbWVudGluZyBhIG1hcCBiZXR3ZWVuIGtleXMgYW5kIHZhbHVlcy5cbiAgICAgIEl0IHN1cHBvcnRzIGNvbnN0YW50LXRpbWUgbG9va3VwIGFuZCBpbi1wbGFjZSBtb2RpZmljYXRpb24uXG5cbiAgICAgIHsxIFVzYWdlfVxuXG4gICAgICBBcyBhIHNpbXBsZSBleGFtcGxlLCB3ZSdsbCBjcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggc3RyaW5nIGtleXMgdXNpbmcgdGhlXG4gICAgICB7eyFjcmVhdGV9W2NyZWF0ZV19IGNvbnN0cnVjdG9yLCB3aGljaCBleHBlY3RzIGEgbW9kdWxlIGRlZmluaW5nIHRoZSBrZXkncyB0eXBlOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgaCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgU3RyaW5nKTs7XG4gICAgICAgIHZhbCBoIDogKHN0cmluZywgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+XG4gICAgICBdfVxuXG4gICAgICBXZSBjYW4gc2V0IHRoZSB2YWx1ZXMgb2YgaW5kaXZpZHVhbCBrZXlzIHdpdGgge3shc2V0fVtzZXRdfS4gSWYgdGhlIGtleSBhbHJlYWR5IGhhc1xuICAgICAgYSB2YWx1ZSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlbi5cblxuICAgICAge3ZcbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImZvb1wiIH5kYXRhOjU7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo2OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiYmFyXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fVxuXG4gICAgICBXZSBjYW4gYWNjZXNzIHZhbHVlcyBieSBrZXksIG9yIGR1bXAgYWxsIG9mIHRoZSBoYXNoIHRhYmxlJ3MgZGF0YTpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuZmluZCBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCBvcHRpb24gPSBTb21lIDZcblxuICAgICAgSGFzaHRibC5maW5kX2V4biBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCA9IDZcblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoOztcbiAgICAgIC0gOiAoc3RyaW5nICogaW50KSBsaXN0ID0gWyhcImZvb1wiLCA2KTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuICAgICAge3shY2hhbmdlfVtjaGFuZ2VdfSBsZXRzIHVzIGNoYW5nZSBhIGtleSdzIHZhbHVlIGJ5IGFwcGx5aW5nIHRoZSBnaXZlbiBmdW5jdGlvbjpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuY2hhbmdlIGggXCJmb29cIiAoZnVuIHggLT5cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBTb21lICh4ICogMilcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgKTs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgMTIpOyAoXCJiYXJcIiwgNildXG4gICAgICB2fVxuXG5cbiAgICAgIFdlIGNhbiB1c2Uge3shbWVyZ2V9W21lcmdlXX0gdG8gbWVyZ2UgdHdvIGhhc2h0YWJsZXMgd2l0aCBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyXG4gICAgICBob3cgd2UgY2hvb3NlIHZhbHVlcyB3aGVuIGEga2V5IGlzIHByZXNlbnQgaW4gdGhlIGZpcnN0IChcImxlZnRcIikgaGFzaHRhYmxlLCB0aGVcbiAgICAgIHNlY29uZCAoXCJyaWdodFwiKSwgb3IgYm90aC4gSGVyZSwgd2UnbGwgY29ucyB0aGUgdmFsdWVzIHdoZW4gYm90aCBoYXNodGFibGVzIGhhdmUgYVxuICAgICAga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGgxID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNSk7ICgyLCAzMjMyKV0gaW5cbiAgICAgIGxldCBoMiA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDMpXSBpblxuICAgICAgSGFzaHRibC5tZXJnZSBoMSBoMiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSAoYExlZnQgeClcbiAgICAgICAgfCBgUmlnaHQgeCAtPiBTb21lIChgUmlnaHQgeClcbiAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gaWYgeD15IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGBCb3RoICh4LHkpKVxuICAgICAgKSB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogWz4gYEJvdGggb2YgaW50ICogaW50IHwgYExlZnQgb2YgaW50IHwgYFJpZ2h0IG9mIGludCBdKSBsaXN0ID1cbiAgICAgIFsoMiwgYExlZnQgMzIzMik7ICgxLCBgQm90aCAoNSwgMykpXVxuICAgICAgdn1cblxuICAgICAgezEgSW50ZXJmYWNlfSAqKVxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N1Ym1vZHVsZXMgKCoqIEBpbmxpbmUgKilcblxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMgPSBBY2Nlc3NvcnNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMgPSBDcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBNdWx0aSA9IE11bHRpXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3VibW9kdWxlcyA9IFNfd2l0aG91dF9zdWJtb2R1bGVzXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuXG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gTWVyZ2VfaW50b19hY3Rpb25cblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9ICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zXG5cbiAgbW9kdWxlIENyZWF0b3JzIChLZXkgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICAgIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbiAgZW5kXG5cbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X3RhYmxlID0gaW50IEhhc2h0YmwuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IChTdHJpbmcudCwgaW50KSBIYXNodGJsLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgSGFzaHRibC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZFxuICAgICAgc3ludGF4IGRvZXNuJ3QgKGJlY2F1c2UgW3Rfb2Zfc2V4cF0gZG9lc24ndCBrbm93IHdoYXQgY29tcGFyaXNvbi9oYXNoIGZ1bmN0aW9uIHRvXG4gICAgICB1c2UpLiAqKVxuICBtb2R1bGUgTSAoSyA6IFQuVCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKi8qKilcblxuICAoKl8gU2VlIHRoZSBKYW5lIFN0cmVldCBTdHlsZSBHdWlkZSBmb3IgYW4gZXhwbGFuYXRpb24gb2YgW1ByaXZhdGVdIHN1Ym1vZHVsZXM6XG5cbiAgICBodHRwczovL29wZW5zb3VyY2UuamFuZXN0cmVldC5jb20vc3RhbmRhcmRzLyNwcml2YXRlLXN1Ym1vZHVsZXMgKilcbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gICAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICAgIHZhbCBoYXNoYWJsZSA6ICgna2V5LCBfKSB0IC0+ICdrZXkgSGFzaGFibGUudFxuICBlbmRcbmVuZFxuIiwiKCogQSBmZXcgc21hbGwgdGhpbmdzIGNvcGllZCBmcm9tIG90aGVyIHBhcnRzIG9mIEJhc2UgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiB1cywgc28gd2VcbiAgIGNhbid0IHVzZSB0aGVtLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuKCogSXRzIGltcG9ydGFudCB0aGF0IEVtcHR5IGhhdmUgbm8gYXJncy4gSXQncyB0ZW1wdGluZyB0byBtYWtlIHRoaXMgdHlwZSBhIHJlY29yZFxuICAgKGUuZy4gdG8gaG9sZCB0aGUgY29tcGFyZSBmdW5jdGlvbiksIGJ1dCBhIGxvdCBvZiBtZW1vcnkgaXMgc2F2ZWQgYnkgRW1wdHkgYmVpbmcgYW5cbiAgIGltbWVkaWF0ZSwgc2luY2UgYWxsIHVudXNlZCBidWNrZXRzIGluIHRoZSBoYXNodGJsIGRvbid0IHVzZSBhbnkgbWVtb3J5IChiZXNpZGVzIHRoZVxuICAgYXJyYXkgY2VsbCkgKilcbnR5cGUgKCdrLCAndikgdCA9XG4gIHwgRW1wdHlcbiAgfCBOb2RlIG9mXG4gICAgICB7IG11dGFibGUgbGVmdCA6ICgnaywgJ3YpIHRcbiAgICAgIDsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICA7IG11dGFibGUgaGVpZ2h0IDogaW50XG4gICAgICA7IG11dGFibGUgcmlnaHQgOiAoJ2ssICd2KSB0XG4gICAgICB9XG4gIHwgTGVhZiBvZlxuICAgICAgeyBrZXkgOiAna1xuICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZcbiAgICAgIH1cblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0OyByaWdodCA9IF8gfSAtPiBoZWlnaHRcbjs7XG5cbmxldCBpbnZhcmlhbnQgY29tcGFyZSA9XG4gIGxldCBsZWdhbF9sZWZ0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSBsZWZ0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT5cbiAgICAgIGFzc2VydCAoY29tcGFyZSBsZWZ0X2tleSBrZXkgPCAwKVxuICBpblxuICBsZXQgbGVnYWxfcmlnaHRfa2V5IGtleSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiB7IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gcmlnaHRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgcmlnaHRfa2V5IGtleSA+IDApXG4gIGluXG4gIGxldCByZWMgaW52ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IHwgTGVhZiBfIC0+ICgpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gazsgdmFsdWUgPSBfOyBoZWlnaHQgPSBoOyByaWdodCB9IC0+XG4gICAgICBsZXQgaGwsIGhyID0gaGVpZ2h0IGxlZnQsIGhlaWdodCByaWdodCBpblxuICAgICAgaW52IGxlZnQ7XG4gICAgICBpbnYgcmlnaHQ7XG4gICAgICBsZWdhbF9sZWZ0X2tleSBrIGxlZnQ7XG4gICAgICBsZWdhbF9yaWdodF9rZXkgayByaWdodDtcbiAgICAgIGFzc2VydCAoaCA9IEludC5tYXggaGwgaHIgKyAxKTtcbiAgICAgIGFzc2VydCAoYWJzIChobCAtIGhyKSA8PSAyKVxuICBpblxuICBpbnZcbjs7XG5cbmxldCBpbnZhcmlhbnQgdCB+Y29tcGFyZSA9IGludmFyaWFudCBjb21wYXJlIHRcblxuKCogSW4gdGhlIGZvbGxvd2luZyBjb21tZW50cyxcbiAgICd0IGlzIGJhbGFuY2VkJyBtZWFucyB0aGF0ICdpbnZhcmlhbnQgdCcgZG9lcyBub3RcbiAgIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFRoaXMgaW1wbGllcyBvZiBjb3Vyc2UgdGhhdCBlYWNoIG5vZGUncyBoZWlnaHQgZmllbGQgaXNcbiAgIGNvcnJlY3QuXG4gICAndCBpcyBiYWxhbmNlYWJsZScgbWVhbnMgdGhhdCBoZWlnaHQgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIG9mIHRcbiAgIGRpZmZlciBieSBhdCBtb3N0IDMuICopXG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGhhdmUgY29ycmVjdCBoZWlnaHRzXG4gICBAcG9zdDogb3V0cHV0IGhhcyB0aGUgY29ycmVjdCBoZWlnaHQgKilcbmxldCB1cGRhdGVfaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gb2xkX2hlaWdodDsgcmlnaHQgfSBhcyB4KSAtPlxuICAgIGxldCBuZXdfaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IGxlZnQpIChoZWlnaHQgcmlnaHQpICsgMSBpblxuICAgIGlmIG5ld19oZWlnaHQgPD4gb2xkX2hlaWdodCB0aGVuIHguaGVpZ2h0IDwtIG5ld19oZWlnaHRcbiAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGFyZSBiYWxhbmNlZFxuICAgQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHBvc3Q6IG91dHB1dCBpcyBiYWxhbmNlZCAoaW4gcGFydGljdWxhciwgaGVpZ2h0IGlzIGNvcnJlY3QpICopXG5sZXQgYmFsYW5jZSB0cmVlID1cbiAgbWF0Y2ggdHJlZSB3aXRoXG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gdHJlZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHJvb3Rfbm9kZSkgLT5cbiAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdFxuICAgIGFuZCBociA9IGhlaWdodCByaWdodCBpblxuICAgICgqICsgMiBpcyBjcml0aWNhbGx5IGltcG9ydGFudCwgbG93ZXJpbmcgaXQgdG8gMSB3aWxsIGJyZWFrIHRoZSBMZWFmXG4gICAgICAgYXNzdW1wdGlvbnMgaW4gdGhlIGNvZGUgYmVsb3csIGFuZCB3aWxsIGZvcmNlIHVzIHRvIHByb21vdGUgbGVhZiBub2RlcyBpblxuICAgICAgIHRoZSBiYWxhbmNlIHJvdXRpbmUuIEl0J3MgYWxzbyBmYXN0ZXIsIHNpbmNlIGl0IHdpbGwgYmFsYW5jZSBsZXNzIG9mdGVuLlxuICAgICAgIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgZGVsaWNhdGUuICBUaGUgdXBkYXRlX2hlaWdodCBjYWxscyBtdXN0XG4gICAgICAgb2NjdXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHNpbmNlIHVwZGF0ZV9oZWlnaHQgYXNzdW1lcyBpdHMgY2hpbGRyZW4gaGF2ZVxuICAgICAgIHRoZSBjb3JyZWN0IGhlaWdodHMuICAqKVxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICgqIEl0IGNhbm5vdCBiZSBhIGxlYWYsIGJlY2F1c2UgZXZlbiBpZiByaWdodCBpcyBlbXB0eSwgYSBsZWFmXG4gICAgICAgICBpcyBvbmx5IGhlaWdodCAxICopXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IGxlZnRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IGxlZnRfbm9kZV9yaWdodFxuICAgICAgICAgICB9IGFzIGxlZnRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxlZnRfbm9kZV9sZWZ0ID49IGhlaWdodCBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnQ7XG4gICAgICAgICAgbGVmdClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogaWYgcmlnaHQgaXMgYSBsZWFmLCB0aGVuIGxlZnQgbXVzdCBiZSBlbXB0eS4gVGhhdCBtZWFuc1xuICAgICAgICAgICAgIGhlaWdodCBpcyAyLiBFdmVuIGlmIGhyIGlzIGVtcHR5IHdlIHN0aWxsIGNhbid0IGdldCBoZXJlLiAqKVxuICAgICAgICAgIG1hdGNoIGxlZnRfbm9kZV9yaWdodCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IGxyX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBscl9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBscl9ub2RlKSAtPlxuICAgICAgICAgICAgbGVmdF9ub2RlLnJpZ2h0IDwtIGxyX2xlZnQ7XG4gICAgICAgICAgICByb290X25vZGUubGVmdCA8LSBscl9yaWdodDtcbiAgICAgICAgICAgIGxyX25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICAgIGxyX25vZGUubGVmdCA8LSBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0X25vZGVfcmlnaHQ7XG4gICAgICAgICAgICBsZWZ0X25vZGVfcmlnaHQpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHJpZ2h0IGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IE5vZGVcbiAgICAgICAgICAoeyBsZWZ0ID0gcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IHJpZ2h0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyByaWdodF9ub2RlKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcmlnaHRfbm9kZV9yaWdodCA+PSBoZWlnaHQgcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHQ7XG4gICAgICAgICAgcmlnaHQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgY2Fubm90IGJlIGEgbGVhZiAqKVxuICAgICAgICAgIG1hdGNoIHJpZ2h0X25vZGVfbGVmdCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IHJsX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBybF9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBybF9ub2RlKSAtPlxuICAgICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHJsX3JpZ2h0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLnJpZ2h0IDwtIHJsX2xlZnQ7XG4gICAgICAgICAgICBybF9ub2RlLmxlZnQgPC0gdHJlZTtcbiAgICAgICAgICAgIHJsX25vZGUucmlnaHQgPC0gcmlnaHQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgICByaWdodF9ub2RlX2xlZnQpKVxuICAgIGVsc2UgKFxuICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgdHJlZSlcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChyaWdodCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcbmxldCBzZXRfbGVmdCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIGxlZnQgdHJlZSB0aGVuICgpIGVsc2Ugci5sZWZ0IDwtIHRyZWU7XG4gICAgdXBkYXRlX2hlaWdodCBub2RlXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChsZWZ0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X3JpZ2h0IG5vZGUgdHJlZSA9XG4gIGxldCB0cmVlID0gYmFsYW5jZSB0cmVlIGluXG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IE5vZGUgKHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByKSAtPlxuICAgIGlmIHBoeXNfZXF1YWwgcmlnaHQgdHJlZSB0aGVuICgpIGVsc2Ugci5yaWdodCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0IGlzIGJhbGFuY2VkLlxuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlZCwgd2l0aCBuZXcgbm9kZSBpbnNlcnRlZFxuICAgQHBvc3Q6ICFhZGRlZCA9IHRydWUgaWZmIHRoZSBzaGFwZSBvZiB0aGUgaW5wdXQgdHJlZSBjaGFuZ2VkLiAgKilcbmxldCBhZGQgPVxuICBsZXQgcmVjIGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IExlYWYgKHsga2V5ID0gayc7IHZhbHVlID0gXyB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaycgayBpblxuICAgICAgKCogVGhpcyBjb21wYXJlIGlzIHJldmVyc2VkIG9uIHB1cnBvc2UsIHdlIGFyZSBwcmV0ZW5kaW5nXG4gICAgICAgICB0aGF0IHRoZSBsZWFmIHdhcyBqdXN0IGluc2VydGVkIGluc3RlYWQgb2YgdGhlIG90aGVyIHdheVxuICAgICAgICAgcm91bmQsIHRoYXQgd2F5IHdlIG9ubHkgYWxsb2NhdGUgb25lIG5vZGUuICopXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2O1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICAgIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gTm9kZSB7IGxlZnQgPSB0OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gRW1wdHkgfVxuICAgICAgICBlbHNlIE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gMjsgcmlnaHQgPSB0IH0pXG4gICAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiBzZXRfbGVmdCB0IChhZGQgbGVmdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KVxuICAgICAgZWxzZSBzZXRfcmlnaHQgdCAoYWRkIHJpZ2h0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYpO1xuICAgICAgdFxuICBpblxuICBmdW4gdCB+cmVwbGFjZSB+Y29tcGFyZSB+YWRkZWQgfmtleSB+ZGF0YSAtPlxuICAgIGxldCB0ID0gYWRkIHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGtleSBkYXRhIGluXG4gICAgaWYgIWFkZGVkIHRoZW4gYmFsYW5jZSB0IGVsc2UgdFxuOztcblxubGV0IHJlYyBmaXJzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IGw7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gZmlyc3QgbFxuOztcblxubGV0IHJlYyBsYXN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gRW1wdHkgfSAtPiBTb21lIChrLCB2KVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IHIgfSAtPiBsYXN0IHJcbjs7XG5cblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWMgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aWZfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX25vdF9mb3VuZFxuICA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBMZWFmIHsga2V5ID0gayc7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2UgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrIGFyZzEgYXJnMlxuICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2VcbiAgICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgKGlmIGMgPCAwIHRoZW4gbGVmdCBlbHNlIHJpZ2h0KVxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICBrXG4gICAgICAgIGFyZzFcbiAgICAgICAgYXJnMlxuICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIGRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZyAoKSA9IGlmX2ZvdW5kIGRhdGEgYXJnIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcgKCkgPSBpZl9ub3RfZm91bmQga2V5IGFyZyBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIGRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMiA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gPVxuICBsZXQgaWZfZm91bmQgXyA9IHRydWUgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gZmFsc2UgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayAtPiBmaW5kX2FuZF9jYWxsIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IHJlbW92ZSA9XG4gIGxldCByZWMgbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmIF8gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBtaW5fZWx0IGxlZnRcbiAgaW5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgIHwgTGVhZiBfIC0+IEVtcHR5ICgqIFRoaXMgbXVzdCBiZSB0aGUgcm9vdCAqKVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+IHJpZ2h0XG4gICAgfCBOb2RlIHsgbGVmdCA9IExlYWYgXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT5cbiAgICAgIExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgbm9kZSAtPlxuICAgICAgc2V0X2xlZnQgbm9kZSBFbXB0eTtcbiAgICAgIHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgKHJlbW92ZV9taW5fZWx0IGxlZnQpO1xuICAgICAgdHJlZVxuICBpblxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgdHJlZSA9IG1pbl9lbHQgdDIgaW5cbiAgICAgIChtYXRjaCB0cmVlIHdpdGhcbiAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgICAgICBsZXQgdDIgPSBiYWxhbmNlIChyZW1vdmVfbWluX2VsdCB0MikgaW5cbiAgICAgICAgIE5vZGVcbiAgICAgICAgICAgeyBsZWZ0ID0gdDFcbiAgICAgICAgICAgOyBrZXkgPSBrXG4gICAgICAgICAgIDsgdmFsdWUgPSB2XG4gICAgICAgICAgIDsgaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IHQxKSAoaGVpZ2h0IHQyKSArIDFcbiAgICAgICAgICAgOyByaWdodCA9IHQyXG4gICAgICAgICAgIH1cbiAgICAgICB8IE5vZGUgXyBhcyBub2RlIC0+XG4gICAgICAgICBzZXRfcmlnaHQgbm9kZSAocmVtb3ZlX21pbl9lbHQgdDIpO1xuICAgICAgICAgc2V0X2xlZnQgbm9kZSB0MTtcbiAgICAgICAgIG5vZGUpXG4gIGluXG4gIGxldCByZWMgcmVtb3ZlIHQgcmVtb3ZlZCBjb21wYXJlIGsgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICBFbXB0eVxuICAgIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZWQgOj0gdHJ1ZTtcbiAgICAgICAgRW1wdHkpXG4gICAgICBlbHNlIChcbiAgICAgICAgcmVtb3ZlZCA6PSBmYWxzZTtcbiAgICAgICAgdClcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIG1lcmdlIGxlZnQgcmlnaHQpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc2V0X2xlZnQgdCAocmVtb3ZlIGxlZnQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHNldF9yaWdodCB0IChyZW1vdmUgcmlnaHQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICBpblxuICBmdW4gdCB+cmVtb3ZlZCB+Y29tcGFyZSBrIC0+IGJhbGFuY2UgKHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrKVxuOztcblxubGV0IHJlYyBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBpbml0XG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhIGluaXRcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBFbXB0eVxuICAgICAgfSAtPiBmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gRW1wdHlcbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfVxuICAgICAgfSAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9IH1cbiAgICAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH07IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9XG4gICAgLT4gZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KSkgfmZcbiAgfCBOb2RlIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBmb2xkIHJpZ2h0IH5pbml0OihmIH5rZXkgfmRhdGEgKGZvbGQgbGVmdCB+aW5pdCB+ZikpIH5mXG47O1xuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgaXRlciBsZWZ0IH5mO1xuICAgIGYgfmtleSB+ZGF0YTtcbiAgICBpdGVyIHJpZ2h0IH5mXG47O1xuXG5sZXQgcmVjIG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmICh7IGtleTsgdmFsdWUgfSBhcyB0KSAtPiB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5OyB2YWx1ZTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyB0KSAtPlxuICAgIG1hcGlfaW5wbGFjZSB+ZiBsZWZ0O1xuICAgIHQudmFsdWUgPC0gZiB+a2V5IH5kYXRhOnZhbHVlO1xuICAgIG1hcGlfaW5wbGFjZSB+ZiByaWdodFxuOztcblxubGV0IGNob29zZV9leG4gPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltBdmx0cmVlLmNob29zZV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSlcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZTsgXyB9IHwgTm9kZSB7IGtleTsgdmFsdWU7IF8gfSAtPiBrZXksIHZhbHVlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2h0YmxfaW50ZlxuXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXkuU1xuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxubGV0IGhhc2hfcGFyYW0gPSBIYXNoYWJsZS5oYXNoX3BhcmFtXG5sZXQgaGFzaCA9IEhhc2hhYmxlLmhhc2hcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG50eXBlICgnaywgJ3YpIHQgPVxuICB7IG11dGFibGUgdGFibGUgOiAoJ2ssICd2KSBBdmx0cmVlLnQgYXJyYXlcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IGdyb3d0aF9hbGxvd2VkIDogYm9vbFxuICA7IGhhc2hhYmxlIDogJ2sgSGFzaGFibGUudFxuICA7IG11dGFibGUgbXV0YXRpb25fYWxsb3dlZCA6IGJvb2wgKCogU2V0IGR1cmluZyBhbGwgaXRlcmF0aW9uIG9wZXJhdGlvbnMgKilcbiAgfVxuXG50eXBlICdhIGtleSA9ICdhXG5cbmxldCBzZXhwX29mX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3RcbmxldCBjb21wYXJlX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlXG5cbmxldCBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0ID1cbiAgaWYgbm90IHQubXV0YXRpb25fYWxsb3dlZCB0aGVuIGZhaWx3aXRoIFwiSGFzaHRibDogbXV0YXRpb24gbm90IGFsbG93ZWQgZHVyaW5nIGl0ZXJhdGlvblwiXG47O1xuXG5sZXQgd2l0aG91dF9tdXRhdGluZyB0IGYgPVxuICBpZiB0Lm11dGF0aW9uX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICB4XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHJhaXNlIGV4bilcbiAgZWxzZSBmICgpXG47O1xuXG4oKiogSW50ZXJuYWxseSB1c2UgYSBtYXhpbXVtIHNpemUgdGhhdCBpcyBhIHBvd2VyIG9mIDIuIFJldmVyc2VzIHRoZSBhYm92ZSB0byBmaW5kIHRoZVxuICAgIGZsb29yIHBvd2VyIG9mIDIgYmVsb3cgdGhlIHN5c3RlbSBtYXggYXJyYXkgbGVuZ3RoICopXG5sZXQgbWF4X3RhYmxlX2xlbmd0aCA9IEludC5mbG9vcl9wb3cyIEFycmF5Lm1heF9sZW5ndGhcblxuKCogVGhlIGRlZmF1bHQgc2l6ZSBpcyBjaG9zZW4gdG8gYmUgMCAoYXMgb3Bwb3NlZCB0byAxMjggYXMgaXQgd2FzIGJlZm9yZSkgYmVjYXVzZTpcbiAgIC0gMTI4IGNhbiBjcmVhdGUgc3Vic3RhbnRpYWwgbWVtb3J5IG92ZXJoZWFkICh4MTApIHdoZW4gY3JlYXRpbmcgbWFueSB0YWJsZXMsIG1vc3RcbiAgICAgb2Ygd2hpY2ggYXJlIG5vdCBiaWcgKHNheSwgaWYgeW91IGhhdmUgYSBoYXNodGJsIG9mIGhhc2h0YmwpLiBBbmQgbWVtb3J5IG92ZXJoZWFkIGlzXG4gICAgIG5vdCB0aGF0IGVhc3kgdG8gcHJvZmlsZS5cbiAgIC0gaWYgYSBoYXNodGJsIGlzIGdvaW5nIHRvIGdyb3csIGl0J3Mgbm90IGNsZWFyIHdoeSAxMjggaXMgbWFya2VkbHkgYmV0dGVyIHRoYW4gb3RoZXJcbiAgICAgc2l6ZXMgKGlmIHlvdSBnb2luZyB0byBzdGljayAxMDAwIGVsZW1lbnRzLCB5b3UncmUgZ29pbmcgdG8gZ3JvdyB0aGUgaGFzaHRhYmxlIG9uY2VcbiAgICAgb3IgdHdpY2UgYW55d2F5KVxuICAgLSBpbiBvdGhlciBsYW5ndWFnZXMgKGxpa2UgcnVzdCwgcHl0aG9uLCBhbmQgYXBwYXJlbnRseSBnbyksIHRoZSBkZWZhdWx0IGlzIGFsc28gYVxuICAgICBzbWFsbCBzaXplLiAqKVxubGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMCkgfmhhc2hhYmxlICgpID1cbiAgbGV0IHNpemUgPSBJbnQubWluIChJbnQubWF4IDEgc2l6ZSkgbWF4X3RhYmxlX2xlbmd0aCBpblxuICBsZXQgc2l6ZSA9IEludC5jZWlsX3BvdzIgc2l6ZSBpblxuICB7IHRhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBBdmx0cmVlLmVtcHR5XG4gIDsgbGVuZ3RoID0gMFxuICA7IGdyb3d0aF9hbGxvd2VkXG4gIDsgaGFzaGFibGVcbiAgOyBtdXRhdGlvbl9hbGxvd2VkID0gdHJ1ZVxuICB9XG47O1xuXG4oKiogU3VwcGxlbWVudGFsIGhhc2guIFRoaXMgbWF5IG5vdCBiZSBuZWNlc3NhcnksIGl0IGlzIGludGVuZGVkIGFzIGEgZGVmZW5zZSBhZ2FpbnN0IHBvb3JcbiAgICBoYXNoIGZ1bmN0aW9ucywgZm9yIHdoaWNoIHRoZSBwb3dlciBvZiAyIHNpemVkIHRhYmxlIHdpbGwgYmUgZXNwZWNpYWxseSBzZW5zaXRpdmUuXG4gICAgV2l0aCBzb21lIHRlc3Rpbmcgd2UgbWF5IGNob29zZSB0byBhZGQgaXQsIGJ1dCB0aGlzIHRhYmxlIGlzIGRlc2lnbmVkIHRvIGJlIHJvYnVzdCB0b1xuICAgIGNvbGxpc2lvbnMsIGFuZCBpbiBtb3N0IG9mIG15IHRlc3RpbmcgdGhpcyBkZWdyYWRlcyBwZXJmb3JtYW5jZS4gKilcbmxldCBfc3VwcGxlbWVudGFsX2hhc2ggaCA9XG4gIGxldCBoID0gaCBseG9yICgoaCBsc3IgMjApIGx4b3IgKGggbHNyIDEyKSkgaW5cbiAgaCBseG9yIChoIGxzciA3KSBseG9yIChoIGxzciA0KVxuOztcblxubGV0IHNsb3QgdCBrZXkgPVxuICBsZXQgaGFzaCA9IHQuaGFzaGFibGUuSGFzaGFibGUuaGFzaCBrZXkgaW5cbiAgKCogdGhpcyBpcyBhbHdheXMgbm9uLW5lZ2F0aXZlIGJlY2F1c2Ugd2UgZG8gW2xhbmRdIHdpdGggbm9uLW5lZ2F0aXZlIG51bWJlciAqKVxuICBoYXNoIGxhbmQgKEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSlcbjs7XG5cbmxldCBhZGRfd29ya2VyIHQgfnJlcGxhY2UgfmtleSB+ZGF0YSA9XG4gIGxldCBpID0gc2xvdCB0IGtleSBpblxuICBsZXQgcm9vdCA9IHQudGFibGUuKGkpIGluXG4gIGxldCBhZGRlZCA9ICAocmVmIGZhbHNlKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgICgqIFRoZSBhdmwgdHJlZSBtaWdodCByZXBsYWNlIHRoZSB2YWx1ZSBbcmVwbGFjZT10cnVlXSBvciBkbyBub3RoaW5nIFtyZXBsYWNlPWZhbHNlXVxuICAgICAgIHRvIHRoZSBlbnRyeSwgaW4gdGhhdCBjYXNlIHRoZSB0YWJsZSBkaWQgbm90IGdldCBiaWdnZXIsIHNvIHdlIHNob3VsZCBub3RcbiAgICAgICBpbmNyZW1lbnQgbGVuZ3RoLCB3ZSBwYXNzIGluIHRoZSBib29sIHJlZiB0LmFkZGVkIHNvIHRoYXQgaXQgY2FuIHRlbGwgdXMgd2hldGhlclxuICAgICAgIGl0IGFkZGVkIG9yIHJlcGxhY2VkLiBXZSBkbyBpdCB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLiBTaW5jZSB0aGUgYm9vbFxuICAgICAgIGlzIGFuIGltbWVkaWF0ZSBpdCBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuICAgIEF2bHRyZWUuYWRkIH5yZXBsYWNlIHJvb3QgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIH5hZGRlZCB+a2V5IH5kYXRhXG4gIGluXG4gIGlmICFhZGRlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgKCogVGhpcyBsaXR0bGUgb3B0aW1pemF0aW9uIHNhdmVzIGEgY2FtbF9tb2RpZnkgd2hlbiB0aGUgdHJlZVxuICAgICBoYXNuJ3QgYmVlbiByZWJhbGFuY2VkLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV3X3Jvb3Qgcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdDtcbiAgIWFkZGVkXG47O1xuXG5sZXQgbWF5YmVfcmVzaXplX3RhYmxlIHQgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgbGV0IHNob3VsZF9ncm93ID0gdC5sZW5ndGggPiBsZW4gaW5cbiAgaWYgc2hvdWxkX2dyb3cgJiYgdC5ncm93dGhfYWxsb3dlZFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FycmF5X2xlbmd0aCA9IEludC5taW4gKGxlbiAqIDIpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgICBpZiBuZXdfYXJyYXlfbGVuZ3RoID4gbGVuXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbmV3X3RhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46bmV3X2FycmF5X2xlbmd0aCBBdmx0cmVlLmVtcHR5IGluXG4gICAgICBsZXQgb2xkX3RhYmxlID0gdC50YWJsZSBpblxuICAgICAgdC50YWJsZSA8LSBuZXdfdGFibGU7XG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IGYgfmtleSB+ZGF0YSA9IGlnbm9yZSAoYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YSA6IGJvb2wpIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9sZF90YWJsZSAtIDEgZG9cbiAgICAgICAgQXZsdHJlZS5pdGVyIG9sZF90YWJsZS4oaSkgfmZcbiAgICAgIGRvbmUpKVxuOztcblxubGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBpZ25vcmUgKGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGEgOiBib29sKTtcbiAgbWF5YmVfcmVzaXplX3RhYmxlIHRcbjs7XG5cbmxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgbGV0IGFkZGVkID0gYWRkX3dvcmtlciB+cmVwbGFjZTpmYWxzZSB0IH5rZXkgfmRhdGEgaW5cbiAgaWYgYWRkZWRcbiAgdGhlbiAoXG4gICAgbWF5YmVfcmVzaXplX3RhYmxlIHQ7XG4gICAgYE9rKVxuICBlbHNlIGBEdXBsaWNhdGVcbjs7XG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICB8IGBPayAtPiAoKVxuICB8IGBEdXBsaWNhdGUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleSB0IGluXG4gICAgbGV0IGVycm9yID0gRXJyb3IuY3JlYXRlIFwiSGFzaHRibC5hZGRfZXhuIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIga2V5IHNleHBfb2Zfa2V5IGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIHQudGFibGUuKGkpIDwtIEF2bHRyZWUuZW1wdHlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gMFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDIgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMlxuICAgICAgdHJlZVxuICAgICAgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gICAgICBrZXlcbiAgICAgIH5hXG4gICAgICB+YlxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQga2V5IC0+IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBmYWxzZVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gXyB9IC0+IGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwXG4gIHwgdHJlZSAtPiBBdmx0cmVlLm1lbSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXlcbjs7XG5cbmxldCByZW1vdmUgdCBrZXkgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWRfb3JfcmVtb3ZlZCA9ICAocmVmIGZhbHNlKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgIEF2bHRyZWUucmVtb3ZlIHJvb3QgfnJlbW92ZWQ6YWRkZWRfb3JfcmVtb3ZlZCB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG4gIGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCByb290IG5ld19yb290KSB0aGVuIHQudGFibGUuKGkpIDwtIG5ld19yb290O1xuICBpZiAhYWRkZWRfb3JfcmVtb3ZlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGFjYyA6PSBmIH5rZXkgfmRhdGEgIWFjY1xuICAgICAgICB8IGJ1Y2tldCAtPiBhY2MgOj0gQXZsdHJlZS5mb2xkIGJ1Y2tldCB+aW5pdDohYWNjIH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgIWFjY1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICByYWlzZSBleG4pXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICAgICAgICB8IGJ1Y2tldCAtPiBBdmx0cmVlLml0ZXIgYnVja2V0IH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT4gdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG1cbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgaXRlcl9rZXlzIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5cbmxldCByZWMgY2hvb3NlX25vbmVtcHR5IHRhYmxlIGkgPVxuICBsZXQgYXZsdHJlZSA9IEFycmF5LnVuc2FmZV9nZXQgdGFibGUgaSBpblxuICBpZiBBdmx0cmVlLmlzX2VtcHR5IGF2bHRyZWVcbiAgdGhlbiBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgKChpICsgMSkgbGFuZCAoQXJyYXkubGVuZ3RoIHRhYmxlIC0gMSkpXG4gIGVsc2UgQXZsdHJlZS5jaG9vc2VfZXhuIGF2bHRyZWVcbjs7XG5cbmxldCBjaG9vc2VfZXhuIHQgPVxuICBpZiB0Lmxlbmd0aCA9IDAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSGFzaHRibC5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pO1xuICBjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwXG47O1xuXG5sZXQgY2hvb3NlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9ub25lbXB0eSB0LnRhYmxlIDApXG5cbmxldCBjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkgfnJhbmRvbV9zdGF0ZSB0ID1cbiAgbGV0IHN0YXJ0X2lkeCA9IFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChBcnJheS5sZW5ndGggdC50YWJsZSkgaW5cbiAgY2hvb3NlX25vbmVtcHR5IHQudGFibGUgc3RhcnRfaWR4XG47O1xuXG5sZXQgY2hvb3NlX3JhbmRvbWx5ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9yYW5kb21seV9ub25lbXB0eSB+cmFuZG9tX3N0YXRlIHQpXG47O1xuXG5sZXQgY2hvb3NlX3JhbmRvbWx5X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0hhc2h0YmwuY2hvb3NlX3JhbmRvbWx5X2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKTtcbiAgY2hvb3NlX3JhbmRvbWx5X25vbmVtcHR5IH5yYW5kb21fc3RhdGUgdFxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IGludmFyaWFudF9kYXRhIHQgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgQXZsdHJlZS5pbnZhcmlhbnQgdC50YWJsZS4oaSkgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gIGRvbmU7XG4gIGxldCByZWFsX2xlbiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGkgLT5cbiAgICAgIGludmFyaWFudF9rZXkga2V5O1xuICAgICAgaW52YXJpYW50X2RhdGEgZGF0YTtcbiAgICAgIGkgKyAxKVxuICBpblxuICBhc3NlcnQgKHJlYWxfbGVuID0gdC5sZW5ndGgpXG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgaWZfZm91bmQgdiBfID0gdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIGsgdCA9XG4gICAgcmFpc2VcbiAgICAgIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJIYXNodGJsLmZpbmRfZXhuOiBub3QgZm91bmRcIjsgdC5oYXNoYWJsZS5zZXhwX29mX3QgayBdKSlcbiAgaW5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID0gZmluZF9hbmRfY2FsbDEgdCBrZXkgfmE6dCB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBmb3JfYWxsaSB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IG5vdCAoZiB+a2V5IH5kYXRhKSkpXG5sZXQgZm9yX2FsbCB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gbm90IChmIGRhdGEpKSlcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKSBbQG5vbnRhaWxcbiAgXVxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOihmIH5rZXkgfmRhdGEpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBjb3B5IHQgPSBtYXAgdCB+ZjpGbi5pZFxuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IFNvbWUgbmV3X2RhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICB8IE5vbmUgLT4gKCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgZmlsdGVyX2tleXMgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuXG5sZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gIGxldCB0MCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGxldCB0MSA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IG5ld19kYXRhIC0+IHNldCB0MCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBTZWNvbmQgbmV3X2RhdGEgLT4gc2V0IHQxIH5rZXkgfmRhdGE6bmV3X2RhdGEpO1xuICB0MCwgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKSBcbiAgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5cbmxldCBmaW5kX29yX2FkZCB0IGlkIH5kZWZhdWx0OihkZWZhdWx0IFtAbG9jYWxdKSA9XG4gIGZpbmRfYW5kX2NhbGxcbiAgICB0XG4gICAgaWRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIC0+IGRhdGEpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuIGtleSAtPlxuICAgICAgbGV0IGRlZmF1bHQgPSBkZWZhdWx0ICgpIGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGlfb3JfYWRkIHQgaWQgfmRlZmF1bHQgPVxuICBmaW5kX2FuZF9jYWxsXG4gICAgdFxuICAgIGlkXG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCBrZXkgaW5cbiAgICAgIHNldCB0IH5rZXkgfmRhdGE6ZGVmYXVsdDtcbiAgICAgIGRlZmF1bHQpIFtAbm9udGFpbF1cbjs7XG5cbigqIFNvbWUgaGFzaHRibCBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGFibGUgdG8gcGVyZm9ybSB0aGlzIG1vcmUgZWZmaWNpZW50bHkgdGhhbiB0d29cbiAgIHNlcGFyYXRlIGxvb2t1cHMgKilcbmxldCBmaW5kX2FuZF9yZW1vdmUgdCBpZCA9XG4gIGxldCByZXN1bHQgPSBmaW5kIHQgaWQgaW5cbiAgaWYgT3B0aW9uLmlzX3NvbWUgcmVzdWx0IHRoZW4gcmVtb3ZlIHQgaWQ7XG4gIHJlc3VsdFxuOztcblxuXG5sZXQgY2hhbmdlIHQgaWQgfmYgPVxuICBtYXRjaCBmIChmaW5kIHQgaWQpIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB0IGlkXG4gIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXk6aWQgfmRhdGFcbjs7XG5cbmxldCB1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mID1cbiAgbGV0IGRhdGEgPSBmIChmaW5kIHQgaWQpIGluXG4gIHNldCB0IH5rZXk6aWQgfmRhdGE7XG4gIGRhdGFcbjs7XG5cbmxldCB1cGRhdGUgdCBpZCB+ZiA9IGlnbm9yZSAodXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA6IF8pXG5cbmxldCBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieSA9XG4gIGlmIHJlbW92ZV9pZl96ZXJvXG4gIHRoZW5cbiAgICBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvcHQgLT5cbiAgICAgIG1hdGNoIGJ5ICsgT3B0aW9uLnZhbHVlIG9wdCB+ZGVmYXVsdDowIHdpdGhcbiAgICAgIHwgMCAtPiBOb25lXG4gICAgICB8IG4gLT4gU29tZSBuKVxuICBlbHNlXG4gICAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGJ5XG4gICAgICB8IFNvbWUgaSAtPiBieSArIGkpXG47O1xuXG5sZXQgaW5jciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5XG5sZXQgZGVjciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5ICgtYnkpXG5cbmxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBbIGRhdGEgXVxuICAgIHwgU29tZSBsIC0+IGRhdGEgOjogbClcbjs7XG5cbmxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBbXSB8IFNvbWUgWyBfIF0gLT4gcmVtb3ZlIHQga2V5XG4gIHwgU29tZSAoXyA6OiB0bCkgLT4gc2V0IHQgfmtleSB+ZGF0YTp0bFxuOztcblxubGV0IGZpbmRfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSBsIC0+IGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSB+c2l6ZSAoKSBpblxuICBsZXQgZHVwZXMgPSByZWYgW10gaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGlmIG1lbSByZXMga2V5IHRoZW4gZHVwZXMgOj0ga2V5IDo6ICFkdXBlcyBlbHNlIHNldCByZXMgfmtleSB+ZGF0YSk7XG4gIG1hdGNoICFkdXBlcyB3aXRoXG4gIHwgW10gLT4gYE9rIHJlc1xuICB8IGtleXMgLT4gYER1cGxpY2F0ZV9rZXlzIChMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmUga2V5cylcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIH5oYXNoYWJsZSAoKSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgYWRkX211bHRpIHJlcyB+a2V5IH5kYXRhKTtcbiAgcmVzXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0IHdpdGhcbiAgfCBgT2sgdCAtPiBgT2sgdFxuICB8IGBEdXBsaWNhdGVfa2V5cyBrIC0+IGBEdXBsaWNhdGVfa2V5IChMaXN0LmhkX2V4biBrKVxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBgT2sgdiAtPiBSZXN1bHQuT2sgdlxuICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yIFwiSGFzaHRibC5vZl9hbGlzdF9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgc2V4cF9vZl9rZXlcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgUmVzdWx0Lk9rIHYgLT4gdlxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEVycm9yLnJhaXNlIGVcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCB0b19hbGlzdCB0ID0gZm9sZCB+ZjooZnVuIH5rZXkgfmRhdGEgbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICB0XG4gIHw+IHRvX2FsaXN0XG4gIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIChrMSwgXykgKGsyLCBfKSAtPiB0Lmhhc2hhYmxlLmNvbXBhcmUgazEgazIpXG4gIHw+IHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSlcbjs7XG5cbmxldCB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9XG4gIGxldCBhbGlzdCA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHApIHNleHAgaW5cbiAgbWF0Y2ggb2ZfYWxpc3Qgfmhhc2hhYmxlIGFsaXN0IH5zaXplOihMaXN0Lmxlbmd0aCBhbGlzdCkgd2l0aFxuICB8IGBPayB2IC0+IHZcbiAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgKCogZmluZCB0aGUgc2V4cCBvZiBhIGR1cGxpY2F0ZSBrZXksIHNvIHRoZSBlcnJvciBpcyBuYXJyb3dlZCB0byBhIGtleSBhbmQgbm90XG4gICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgbGV0IGZvdW5kX2ZpcnN0X2sgPSByZWYgZmFsc2UgaW5cbiAgICBMaXN0Lml0ZXIyX2V4biBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICBpZiBoYXNoYWJsZS5jb21wYXJlIGsgazIgPSAwXG4gICAgICB0aGVuXG4gICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIkhhc2h0YmwudF9vZl9zZXhwOiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICBlbHNlIGZvdW5kX2ZpcnN0X2sgOj0gdHJ1ZSk7XG4gICAgYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGsgdilcbiAgICAgIChrX2dyYW1tYXIgOiBrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgKHZfZ3JhbW1hciA6IHYgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogKGssIHYpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG47O1xuXG5sZXQga2V5cyB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YTpfIGFjYyAtPiBrZXkgOjogYWNjKVxubGV0IGRhdGEgdCA9IGZvbGQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IGFkZF90b19ncm91cHMgZ3JvdXBzIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSB+cm93cyA9XG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gcm93IC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgcm93IGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByb3cgaW5cbiAgICBsZXQgZGF0YSA9XG4gICAgICBtYXRjaCBmaW5kIGdyb3VwcyBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgIHwgU29tZSBvbGQgLT4gY29tYmluZSBvbGQgZGF0YVxuICAgIGluXG4gICAgc2V0IGdyb3VwcyB+a2V5IH5kYXRhKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgcm93cyA9XG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSBpblxuICBhZGRfdG9fZ3JvdXBzIHJlcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3M7XG4gIHJlc1xuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhOkZuLmlkIHJvd3Ncbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgbWF0Y2ggY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyB3aXRoXG4gIHwgYE9rIHQgLT4gUmVzdWx0Lk9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMga2V5cyAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiSGFzaHRibC5jcmVhdGVfd2l0aF9rZXk6IGR1cGxpY2F0ZSBrZXlzXCJcbiAgICAgICAgIFsgXCJrZXlzXCIsIHNleHBfb2ZfbGlzdCBzZXhwX29mX2tleSBrZXlzIF0pXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBPcl9lcnJvci5va19leG4gKGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MpXG47O1xuXG5sZXQgbWVyZ2UgPVxuICBsZXQgbWF5YmVfc2V0IHQgfmtleSB+ZiBkID1cbiAgICBtYXRjaCBmIH5rZXkgZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gc2V0IHQgfmtleSB+ZGF0YTp2XG4gIGluXG4gIGZ1biB0X2xlZnQgdF9yaWdodCB+ZiAtPlxuICAgIGlmIG5vdCAoSGFzaGFibGUuZXF1YWwgdF9sZWZ0Lmhhc2hhYmxlIHRfcmlnaHQuaGFzaGFibGUpXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkhhc2h0YmwubWVyZ2U6IGRpZmZlcmVudCAnaGFzaGFibGUnIHZhbHVlc1wiO1xuICAgIGxldCBuZXdfdCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmdyb3d0aF9hbGxvd2VkOnRfbGVmdC5ncm93dGhfYWxsb3dlZFxuICAgICAgICB+aGFzaGFibGU6dF9sZWZ0Lmhhc2hhYmxlXG4gICAgICAgIH5zaXplOnRfbGVmdC5sZW5ndGhcbiAgICAgICAgKClcbiAgICBpblxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9sZWZ0IChmdW4gKCkgLT5cbiAgICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9yaWdodCAoZnVuICgpIC0+XG4gICAgICAgIGl0ZXJpIHRfbGVmdCB+ZjooZnVuIH5rZXkgfmRhdGE6bGVmdCAtPlxuICAgICAgICAgIG1hdGNoIGZpbmQgdF9yaWdodCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYExlZnQgbGVmdClcbiAgICAgICAgICB8IFNvbWUgcmlnaHQgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBCb3RoIChsZWZ0LCByaWdodCkpKTtcbiAgICAgICAgaXRlcmkgdF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6cmlnaHQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfbGVmdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYFJpZ2h0IHJpZ2h0KVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgICAgKCogYWxyZWFkeSBkb25lIGFib3ZlICopKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdKTtcbiAgICBuZXdfdFxuOztcblxubGV0IG1lcmdlX2ludG8gfnNyYyB+ZHN0IH5mID1cbiAgaXRlcmkgc3JjIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCBkc3RfZGF0YSA9IGZpbmQgZHN0IGtleSBpblxuICAgIGxldCBhY3Rpb24gPSB3aXRob3V0X211dGF0aW5nIGRzdCAoZnVuICgpIC0+IGYgfmtleSBkYXRhIGRzdF9kYXRhKSBpblxuICAgIG1hdGNoIChhY3Rpb24gOiBfIE1lcmdlX2ludG9fYWN0aW9uLnQpIHdpdGhcbiAgICB8IFJlbW92ZSAtPiByZW1vdmUgZHN0IGtleVxuICAgIHwgU2V0X3RvIGRhdGEgLT5cbiAgICAgIChtYXRjaCBkc3RfZGF0YSB3aXRoXG4gICAgICAgfCBOb25lIC0+IHNldCBkc3QgfmtleSB+ZGF0YVxuICAgICAgIHwgU29tZSBkc3RfZGF0YSAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZHN0X2RhdGEgZGF0YSkgdGhlbiBzZXQgZHN0IH5rZXkgfmRhdGEpKSBbQG5vbnRhaWxcbiAgXVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhYyBlbHNlIGtleSA6OiBhYylcbiAgaW5cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGtleSAtPiByZW1vdmUgdCBrZXkpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5cbmxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgbWFwX3Jlc3VsdHMgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFjIC0+IChrZXksIGYgfmtleSB+ZGF0YSkgOjogYWMpIGluXG4gIExpc3QuaXRlciBtYXBfcmVzdWx0cyB+ZjooZnVuIChrZXksIHJlc3VsdCkgLT5cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZW1vdmUgdCBrZXlcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhKVxuOztcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSB0IH5mID1cbiAgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgd2l0aG91dF9tdXRhdGluZyB0IChmdW4gKCkgLT5cbiAgICBBcnJheS5pdGVyIHQudGFibGUgfmY6KEF2bHRyZWUubWFwaV9pbnBsYWNlIH5mKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9IG1hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgZXF1YWwgZXF1YWwgdCB0JyA9XG4gIGxlbmd0aCB0ID0gbGVuZ3RoIHQnXG4gICYmICh3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICB3aXRob3V0X211dGF0aW5nIHQnIChmdW4gKCkgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIG1hdGNoIGZpbmQgdCcga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHIucmV0dXJuIGZhbHNlXG4gICAgICAgIHwgU29tZSBkYXRhJyAtPiBpZiBub3QgKGVxdWFsIGRhdGEgZGF0YScpIHRoZW4gci5yZXR1cm4gZmFsc2UpIFtAbm9udGFpbF0pO1xuICAgIHRydWUpIFtAbm9udGFpbF0pXG47O1xuXG5sZXQgc2ltaWxhciA9IGVxdWFsXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgY2hvb3NlID0gY2hvb3NlXG4gIGxldCBjaG9vc2VfZXhuID0gY2hvb3NlX2V4blxuICBsZXQgY2hvb3NlX3JhbmRvbWx5ID0gY2hvb3NlX3JhbmRvbWx5XG4gIGxldCBjaG9vc2VfcmFuZG9tbHlfZXhuID0gY2hvb3NlX3JhbmRvbWx5X2V4blxuICBsZXQgY2xlYXIgPSBjbGVhclxuICBsZXQgY29weSA9IGNvcHlcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZVxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGFkZF9leG4gPSBhZGRfZXhuXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbiAgbGV0IHVwZGF0ZSA9IHVwZGF0ZVxuICBsZXQgdXBkYXRlX2FuZF9yZXR1cm4gPSB1cGRhdGVfYW5kX3JldHVyblxuICBsZXQgYWRkX211bHRpID0gYWRkX211bHRpXG4gIGxldCByZW1vdmVfbXVsdGkgPSByZW1vdmVfbXVsdGlcbiAgbGV0IGZpbmRfbXVsdGkgPSBmaW5kX211bHRpXG4gIGxldCBtZW0gPSBtZW1cbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZpbHRlcl9tYXAgPSBmaWx0ZXJfbWFwXG4gIGxldCBmaWx0ZXJfbWFwaSA9IGZpbHRlcl9tYXBpXG4gIGxldCBmaWx0ZXJfa2V5cyA9IGZpbHRlcl9rZXlzXG4gIGxldCBmaWx0ZXIgPSBmaWx0ZXJcbiAgbGV0IGZpbHRlcmkgPSBmaWx0ZXJpXG4gIGxldCBwYXJ0aXRpb25fbWFwID0gcGFydGl0aW9uX21hcFxuICBsZXQgcGFydGl0aW9uX21hcGkgPSBwYXJ0aXRpb25fbWFwaVxuICBsZXQgcGFydGl0aW9uX3RmID0gcGFydGl0aW9uX3RmXG4gIGxldCBwYXJ0aXRpb25pX3RmID0gcGFydGl0aW9uaV90ZlxuICBsZXQgZmluZF9vcl9hZGQgPSBmaW5kX29yX2FkZFxuICBsZXQgZmluZGlfb3JfYWRkID0gZmluZGlfb3JfYWRkXG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgZmluZF9leG4gPSBmaW5kX2V4blxuICBsZXQgZmluZF9hbmRfY2FsbCA9IGZpbmRfYW5kX2NhbGxcbiAgbGV0IGZpbmRfYW5kX2NhbGwxID0gZmluZF9hbmRfY2FsbDFcbiAgbGV0IGZpbmRfYW5kX2NhbGwyID0gZmluZF9hbmRfY2FsbDJcbiAgbGV0IGZpbmRpX2FuZF9jYWxsID0gZmluZGlfYW5kX2NhbGxcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMSA9IGZpbmRpX2FuZF9jYWxsMVxuICBsZXQgZmluZGlfYW5kX2NhbGwyID0gZmluZGlfYW5kX2NhbGwyXG4gIGxldCBmaW5kX2FuZF9yZW1vdmUgPSBmaW5kX2FuZF9yZW1vdmVcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IG1lcmdlID0gbWVyZ2VcbiAgbGV0IG1lcmdlX2ludG8gPSBtZXJnZV9pbnRvXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgPSBmaWx0ZXJfa2V5c19pbnBsYWNlXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSA9IGZpbHRlcl9pbnBsYWNlXG4gIGxldCBmaWx0ZXJpX2lucGxhY2UgPSBmaWx0ZXJpX2lucGxhY2VcbiAgbGV0IG1hcF9pbnBsYWNlID0gbWFwX2lucGxhY2VcbiAgbGV0IG1hcGlfaW5wbGFjZSA9IG1hcGlfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlID0gZmlsdGVyX21hcGlfaW5wbGFjZVxuICBsZXQgZXF1YWwgPSBlcXVhbFxuICBsZXQgc2ltaWxhciA9IHNpbWlsYXJcbiAgbGV0IGluY3IgPSBpbmNyXG4gIGxldCBkZWNyID0gZGVjclxuICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleVxuZW5kXG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBLZXkuaGFzaGFibGVcblxuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKClcbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID0gb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHBcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG4gIDs7XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXkgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IEhhc2hhYmxlLnBvbHlcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEhhc2hhYmxlID0gSGFzaGFibGUuSGFzaGFibGVcblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBsZXQgaGFzaGFibGUgdCA9IHQuaGFzaGFibGVcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgY3JlYXRlIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKVxuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfbXVsdGkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgY3JlYXRlX21hcHBlZCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgZ3JvdXAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG47O1xuXG5sZXQgaGFzaGFibGVfcyB0ID0gSGFzaGFibGUudG9fa2V5IHQuaGFzaGFibGVcblxubW9kdWxlIE0gKEsgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBrKSAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrKSB2X29mX3NleHAgc2V4cCA9XG4gIHRfb2Zfc2V4cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEspKSBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGspIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaykgdl9ncmFtbWFyID1cbiAgdF9zZXhwX2dyYW1tYXIgSy50X3NleHBfZ3JhbW1hciB2X2dyYW1tYXJcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIGVxdWFsX3YgdDEgdDIgPSBlcXVhbCBlcXVhbF92IHQxIHQyXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuXG5sZXQgaGFzaGFibGVfcyA9IEhhc2h0YmwuaGFzaGFibGVfc1xubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5sZXQgcG9seV9oYXNoYWJsZSA9IEhhc2h0YmwuUG9seS5oYXNoYWJsZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAnYSB0ID0gKCdhLCB1bml0KSBIYXNodGJsLnRcbnR5cGUgJ2EgaGFzaF9zZXQgPSAnYSB0XG50eXBlICdhIGVsdCA9ICdhXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuICBsZXQgbGVuZ3RoID0gSGFzaHRibC5sZW5ndGhcbiAgbGV0IG1lbSA9IEhhc2h0YmwubWVtXG4gIGxldCBpc19lbXB0eSB0ID0gSGFzaHRibC5pc19lbXB0eSB0XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgSGFzaHRibC5pdGVyX2tleXMgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyBhcyBvIC0+IHIucmV0dXJuIG8pO1xuICAgICAgTm9uZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kX21hcCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBTb21lIGEgZWxzZSBOb25lKSBbQG5vbnRhaWxdXG4gIGxldCBhZGQgdCBrID0gSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KClcblxuICBsZXQgc3RyaWN0X2FkZCB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImVsZW1lbnQgYWxyZWFkeSBleGlzdHNcIlxuICAgIGVsc2UgKFxuICAgICAgSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KCk7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gIDs7XG5cbiAgbGV0IHN0cmljdF9hZGRfZXhuIHQgayA9IE9yX2Vycm9yLm9rX2V4biAoc3RyaWN0X2FkZCB0IGspXG4gIGxldCByZW1vdmUgPSBIYXNodGJsLnJlbW92ZVxuXG4gIGxldCBzdHJpY3RfcmVtb3ZlIHQgayA9XG4gICAgaWYgbWVtIHQga1xuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlIHQgaztcbiAgICAgIFJlc3VsdC5PayAoKSlcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yIFwiZWxlbWVudCBub3QgaW4gc2V0XCIgayAoSGFzaHRibC5zZXhwX29mX2tleSB0KVxuICA7O1xuXG4gIGxldCBzdHJpY3RfcmVtb3ZlX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9yZW1vdmUgdCBrKVxuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgIEhhc2h0YmwuZm9sZCB0IH5pbml0IH5mOihmdW4gfmtleSB+ZGF0YTooKSBhY2MgLT4gZiBhY2Mga2V5KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9IEhhc2h0YmwuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG4gIGxldCB0b19saXN0ID0gSGFzaHRibC5rZXlzXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2UgdCA9XG4gICAgc2V4cF9vZl9saXN0IHNleHBfb2ZfZSAodG9fbGlzdCB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTooaGFzaGFibGUgdCkuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IGluZGV4ID0gcmVmIChsZW4gLSAxKSBpblxuICAgIGZvbGQgdCB+aW5pdDpbfHxdIH5mOihmdW4gYWNjIGtleSAtPlxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGFjYyA9IDBcbiAgICAgIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4ga2V5XG4gICAgICBlbHNlIChcbiAgICAgICAgaW5kZXggOj0gIWluZGV4IC0gMTtcbiAgICAgICAgYWNjLighaW5kZXgpIDwtIGtleTtcbiAgICAgICAgYWNjKSlcbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgICBIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9yX2FsbCB0IH5mID0gbm90IChIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gbm90IChmIGtleSkpKVxuICBsZXQgZXF1YWwgdDEgdDIgPSBIYXNodGJsLmVxdWFsIChmdW4gKCkgKCkgLT4gdHJ1ZSkgdDEgdDJcbiAgbGV0IGNvcHkgdCA9IEhhc2h0YmwuY29weSB0XG4gIGxldCBmaWx0ZXIgdCB+ZiA9IEhhc2h0YmwuZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSkgW0Bub250YWlsXVxuICBsZXQgdW5pb24gdDEgdDIgPSBIYXNodGJsLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIF8gLT4gU29tZSAoKSlcbiAgbGV0IGRpZmYgdDEgdDIgPSBmaWx0ZXIgdDEgfmY6KGZ1biBrZXkgLT4gbm90IChIYXNodGJsLm1lbSB0MiBrZXkpKVxuXG4gIGxldCBpbnRlciB0MSB0MiA9XG4gICAgbGV0IHNtYWxsZXIsIGxhcmdlciA9IGlmIGxlbmd0aCB0MSA+IGxlbmd0aCB0MiB0aGVuIHQyLCB0MSBlbHNlIHQxLCB0MiBpblxuICAgIEhhc2h0YmwuZmlsdGVyaSBzbWFsbGVyIH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBIYXNodGJsLm1lbSBsYXJnZXIga2V5KVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgICBsZXQgdG9fcmVtb3ZlID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgeCAtPiBpZiBmIHggdGhlbiBhYyBlbHNlIHggOjogYWMpIGluXG4gICAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIHggLT4gcmVtb3ZlIHQgeClcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGhhc2h0YmwgPSBIYXNodGJsLm1hcCBoYXNodGJsIH5mOmlnbm9yZVxuICBsZXQgdG9faGFzaHRibCB0IH5mID0gSGFzaHRibC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBsXG4gIGluXG4gIGxldCB0ID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIG0gaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biBrIC0+IGFkZCB0IGspO1xuICB0XG47O1xuXG5sZXQgdF9vZl9zZXhwIG0gZV9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBTZXhwLkF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIHJlcXVpcmVzIGEgbGlzdFwiIHNleHBcbiAgfCBTZXhwLkxpc3QgbGlzdCAtPlxuICAgIGxldCB0ID0gY3JlYXRlIG0gfnNpemU6KExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biBzZXhwIC0+XG4gICAgICBsZXQgZSA9IGVfb2Zfc2V4cCBzZXhwIGluXG4gICAgICBtYXRjaCBzdHJpY3RfYWRkIHQgZSB3aXRoXG4gICAgICB8IE9rICgpIC0+ICgpXG4gICAgICB8IEVycm9yIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCBnb3QgYSBkdXBsaWNhdGUgZWxlbWVudFwiIHNleHApO1xuICAgIHRcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBFbHQudCkgLT4gU2V4cC50IC0+ICdhIEVsdC50IHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIEVsdC50IHRcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgd2l0aCB0eXBlICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGVfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBlX29mX3NleHAgc2V4cFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGhhc2hfc2V0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBwb2x5X2hhc2hhYmxlXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG5lbmRcblxubW9kdWxlIE0gKEVsdCA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IEVsdC50IHRcbmVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQpIHNleHAgPVxuICB0X29mX3NleHAgKG1vZHVsZSBFbHQpIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdCkgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChsaXN0X3NleHBfZ3JhbW1hciBFbHQudF9zZXhwX2dyYW1tYXIpXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFByaW50ZlxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5pbmNsdWRlIEZsb2F0MFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfZmxvYXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Zsb2F0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfZmxvYXQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICBsZXQgdF9vZl9zZXhwID0gKGZsb2F0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Zsb2F0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGZsb2F0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCB0b19mbG9hdCB4ID0geFxubGV0IG9mX2Zsb2F0IHggPSB4XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIHRyeSBmbG9hdF9vZl9zdHJpbmcgcyB3aXRoXG4gIHwgXyAtPiBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5vZl9zdHJpbmcgJXNcIiBzICgpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX29wdCA9IGZsb2F0X29mX3N0cmluZ19vcHRcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XS4gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGkgbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG4oKiBMZXQgW3ldIGJlIGEgcG93ZXIgb2YgMi4gIFRoZW4gdGhlIG5leHQgcmVwcmVzZW50YWJsZSBmbG9hdCBpczpcbiAgIFt6ID0geSAqICgxICsgMiAqKiAtNTIpXVxuICAgYW5kIHRoZSBwcmV2aW91cyBvbmUgaXNcbiAgIFt4ID0geSAqICgxIC0gMiAqKiAtNTMpXVxuXG4gICBJbiBnZW5lcmFsLCBldmVyeSB0d28gYWRqYWNlbnQgZmxvYXRzIGFyZSB3aXRoaW4gYSBmYWN0b3Igb2YgYmV0d2VlbiBbMSArIDIqKi01M11cbiAgIGFuZCBbMSArIDIqKi01Ml0gZnJvbSBlYWNoIG90aGVyLCB0aGF0IGlzIHdpdGhpbiBbMSArIDEuMWUtMTZdIGFuZCBbMSArIDIuM2UtMTZdLlxuXG4gICBTbyBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIGZsb2F0IHN0YXJ0cyB3aXRoIFwiMVwiLCB0aGVuIGl0cyBhZGphY2VudCBmbG9hdHNcbiAgIHdpbGwgdXN1YWxseSBkaWZmZXIgZnJvbSBpdCBieSAxLCBhbmQgc29tZXRpbWVzIGJ5IDIsIGF0IHRoZSAxN3RoIHNpZ25pZmljYW50IGRpZ2l0XG4gICAoY291bnRpbmcgZnJvbSAxKS5cblxuICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIHN0YXJ0cyB3aXRoIFwiOVwiLCB0aGVuIHRoZSBhZGphY2VudFxuICAgZmxvYXRzIHdpbGwgYmUgb2ZmIGJ5IG5vIG1vcmUgdGhhbiAyMyBhdCB0aGUgMTZ0aCBhbmQgMTd0aCBzaWduaWZpY2FudCBkaWdpdHMuXG5cbiAgIEUuZy46XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1NjdcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyMy45OTk5OTk5OTk5OTk5XCJcbiAgIHZ9XG4gICBQcmludGluZyBhIGNvdXBsZSBvZiBleHRyYSBkaWdpdHMgcmV2ZWFscyB0aGF0IHRoZSBkaWZmZXJlbmNlIGluZGVlZCBpcyByb3VnaGx5IDExIGF0XG4gICBkaWdpdHMgMTd0aCBhbmQgMTh0aCAodGhhdCBpcywgMTN0aCBhbmQgMTR0aCBhZnRlciBcIi5cIik6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTlnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2Nzg5XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5ODg2XCJcbiAgIHZ9XG5cbiAgIFRoZSB1bHAgKHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYWRqYWNlbnQgZmxvYXRzKSBpcyB0d2ljZSBhcyBiaWcgb24gdGhlIG90aGVyIHNpZGUgb2ZcbiAgIDEwMjQuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDI0LjAwMDAwMDAwMDAwMDIyN1wiXG4gICB2fVxuXG4gICBOb3cgdGFrZSBhIHBvd2VyIG9mIDIgd2hpY2ggc3RhcnRzIHdpdGggOTk6XG5cbiAgIHt2XG4gICAgICMgMi4qKjkzLiA7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgIDEgMjM0NTY3ODkwMTIzNDU2NzhcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDIyZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDQ0ZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDExZSsyN1xuICAgdn1cblxuICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAyKio5MyBhbmQgaXRzIHR3byBuZWlnaGJvcnMgaXMgc2xpZ2h0bHkgbW9yZSB0aGFuLCByZXNwZWN0aXZlbHksXG4gICAxIGFuZCAyIGF0IHNpZ25pZmljYW50IGRpZ2l0IDE2LlxuXG4gICBUaG9zZSBleGFtcGxlcyBzaG93IHRoYXQ6XG4gICAtIDE3IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBhbHdheXMgc3VmZmljaWVudCB0byByZXByZXNlbnQgYSBmbG9hdCB3aXRob3V0IGFtYmlndWl0eVxuICAgLSAxNXRoIHNpZ25pZmljYW50IGRpZ2l0IGNhbiBhbHdheXMgYmUgcmVwcmVzZW50ZWQgYWNjdXJhdGVseVxuICAgLSBjb252ZXJ0aW5nIGEgZGVjaW1hbCBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgdG8gaXRzIG5lYXJlc3QgZmxvYXQgYW5kIGJhY2tcbiAgICAgY2FuIGNoYW5nZSB0aGUgbGFzdCBkZWNpbWFsIGRpZ2l0IGJ5IG5vIG1vcmUgdGhhbiAxXG5cbiAgIFRvIG1ha2Ugc3VyZSB0aGF0IGZsb2F0cyBvYnRhaW5lZCBieSBjb252ZXJzaW9uIGZyb20gZGVjaW1hbCBmcmFjdGlvbnMgKGUuZy4gXCIzLjE0XCIpXG4gICBhcmUgcHJpbnRlZCB3aXRob3V0IHRyYWlsaW5nIG5vbi16ZXJvIGRpZ2l0cywgb25lIHNob3VsZCBjaG9vc2UgdGhlIGZpcnN0IGFtb25nIHRoZVxuICAgJyUuMTVnJywgJyUuMTZnJywgYW5kICclLjE3ZycgcmVwcmVzZW50YXRpb25zIHdoaWNoIGRvZXMgcm91bmQtdHJpcDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiICAgICAgICAgICAgICAgICAgICAgKCogcGljayB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0XCJcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUgKilcblxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOFwiICAgICAgICAgICAgICAgICAgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUtLWRvZXMgbm90IHJvdW5kLXRyaXAgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAyXCIgICAgICAgICgqIHByZWZlciB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOC4wMDAwMDAwMDAwMDAwMDE4XCIgICAgICAgKCogdGhpcyBvbmUgaGFzIG9uZSBkaWdpdCBvZiBqdW5rIGF0IHRoZSBlbmQgKilcbiAgIHZ9XG5cbiAgIFNraXBwaW5nIHRoZSAnJS4xNmcnIGluIHRoZSBhYm92ZSBwcm9jZWR1cmUgc2F2ZXMgdXMgc29tZSB0aW1lLCBidXQgaXQgbWVhbnMgdGhhdCwgYXNcbiAgIHNlZW4gaW4gdGhlIHNlY29uZCBleGFtcGxlIGFib3ZlLCBvY2Nhc2lvbmFsbHkgbnVtYmVycyB3aXRoIGV4YWN0bHkgMTYgc2lnbmlmaWNhbnRcbiAgIGRpZ2l0cyB3aWxsIGhhdmUgYW4gZXJyb3IgaW50cm9kdWNlZCBhdCB0aGUgMTd0aCBkaWdpdC4gIFRoYXQgaXMgcHJvYmFibHkgT0sgZm9yXG4gICB0eXBpY2FsIHVzZSwgYmVjYXVzZSBhIG51bWJlciB3aXRoIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBcInVnbHlcIiBhbHJlYWR5LiAgQWRkaW5nIG9uZVxuICAgbW9yZSBkb2Vzbid0IG1ha2UgaXQgbXVjaCB3b3JzZSBmb3IgYSBodW1hbiByZWFkZXIuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBjYW5ub3Qgc2tpcCAnJS4xNWcnIGFuZCBvbmx5IGxvb2sgYXQgJyUuMTZnJyBhbmQgJyUuMTdnJywgc2luY2VcbiAgIHRoZSBpbmFjY3VyYWN5IGF0IHRoZSAxNnRoIGRpZ2l0IG1pZ2h0IGludHJvZHVjZSB0aGUgbm9pc2Ugd2Ugd2FudCB0byBhdm9pZDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyXCIgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAxXCIgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1qdW5rIGF0IHRoZSBlbmQgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAwOVwiXG4gICB2fVxuKilcbmxldCB0b19zdHJpbmcgeCA9XG4gIHZhbGlkX2Zsb2F0X2xleGVtXG4gICAgKGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNWdcIiB4IGluXG4gICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3Z1wiIHgpXG47O1xuXG5sZXQgbWF4X3ZhbHVlID0gaW5maW5pdHlcbmxldCBtaW5fdmFsdWUgPSBuZWdfaW5maW5pdHlcbmxldCBtaW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID0gMi4gKiogLTEwNzQuXG5sZXQgbWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDIyLlxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgcGkgPSAweDMuMjQzRjZBODg4NUEzMDhEMzEzMTk4QTJFMDM3MDczXG5sZXQgc3FydF9waSA9IDB4MS5DNUJGODkxQjRFRjZBQTc5QzNCMDUyMEQ1REI5MzhcbmxldCBzcXJ0XzJwaSA9IDB4Mi44MUIyNjNGRUM0RTBCMkNBRjk0ODNGNUNFNDU5RENcbmxldCBldWxlciA9IDB4MC45M0M0NjdFMzdEQjBDN0E0RDFCRTNGODEwMTUyQ0JcbmxldCBvZl9pbnQgPSBJbnQudG9fZmxvYXRcbmxldCB0b19pbnQgPSBJbnQub2ZfZmxvYXRcbmxldCBvZl9pbnQ2MyBpID0gSW50NjMudG9fZmxvYXQgaVxubGV0IG9mX2ludDY0IGkgPSBTdGRsaWIuSW50NjQudG9fZmxvYXQgaVxubGV0IHRvX2ludDY0ID0gU3RkbGliLkludDY0Lm9mX2Zsb2F0XG5sZXQgaXJvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5sZXQgaXJvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5cbigqIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgXCJleG5cIiByb3VuZGluZyBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBzbyB0aGV5IGFyZSB3cml0dGVuXG4gICBvdXQgc2VwYXJhdGVseSwgYW5kIHR1bmVkIGluZGl2aWR1YWxseS4gIChXZSBjb3VsZCBoYXZlIHRoZSBvcHRpb24gdmVyc2lvbnMgY2FsbFxuICAgdGhlIFwiZXhuXCIgdmVyc2lvbnMsIGJ1dCB0aGF0IGltcG9zZXMgYXJndWFibHkgZ3JhdHVpdG91cyBvdmVyaGVhZC0tLWVzcGVjaWFsbHlcbiAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBjYXB0dXJlIG9mIGJhY2t0cmFjZXMgaXMgZW5hYmxlZCB1cG9uIFwid2l0aFwiLS0tYW5kIHRoYXQgc2VlbXNcbiAgIG5vdCB3b3J0aCBpdCB3aGVuIGNvbXBhcmVkIHRvIHRoZSByZWxhdGl2ZWx5IHNtYWxsIGFtb3VudCBvZiBjb2RlIGR1cGxpY2F0aW9uLikgKilcblxuKCogRXJyb3IgcmVwb3J0aW5nIGJlbG93IGlzIHZlcnkgY2FyZWZ1bGx5IGFycmFuZ2VkIHNvIHRoYXQsIGUuZy4sIFtpcm91bmRfbmVhcmVzdF9leG5dXG4gICBpdHNlbGYgY2FuIGJlIGlubGluZWQgaW50byBjYWxsZXJzIHN1Y2ggdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gYWxsb2NhdGUgYSBib3ggZm9yIHRoZVxuICAgW2Zsb2F0XSBhcmd1bWVudC4gIFRoaXMgaXMgZG9uZSB3aXRoIGEgYm94IFtib3hdIGZ1bmN0aW9uIGNhcmVmdWxseSBjaG9zZW4gdG8gYWxsb3cgdGhlXG4gICBjb21waWxlciB0byBjcmVhdGUgYSBzZXBhcmF0ZSBib3ggZm9yIHRoZSBmbG9hdCBvbmx5IGluIGVycm9yIGNhc2VzLiAgU2VlLCBlLmcuLFxuICAgWy4uLy4uL3plcm8vdGVzdC9wcmljZV90ZXN0Lm1sXSBmb3IgYSBtZWNoYW5pY2FsIHRlc3Qgb2YgdGhpcyBwcm9wZXJ0eSB3aGVuIGJ1aWxkaW5nXG4gICB3aXRoIFtYX0xJQlJBUllfSU5MSU5JTkc9dHJ1ZV0uICopXG5cbmxldCBpcm91bmRfdXAgdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX2Rvd24gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW4gaWYgdCA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KSBlbHNlIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldCBpcm91bmRfdG93YXJkc196ZXJvIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pcm91bmRfdG93YXJkc196ZXJvX2V4bjogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChib3ggdClcbiAgICAgICgpXG47O1xuXG4oKiBPdXRzaWRlIG9mIHRoZSByYW5nZSAocm91bmRfbmVhcmVzdF9sYi4ucm91bmRfbmVhcmVzdF91YiksIGFsbCByZXByZXNlbnRhYmxlIGRvdWJsZXNcbiAgIGFyZSBpbnRlZ2VycyBpbiB0aGUgbWF0aGVtYXRpY2FsIHNlbnNlLCBhbmQgW3JvdW5kX25lYXJlc3RdIHNob3VsZCBiZSBpZGVudGl0eS5cblxuICAgSG93ZXZlciwgZm9yIG9kZCBudW1iZXJzIHdpdGggdGhlIGFic29sdXRlIHZhbHVlIGJldHdlZW4gMioqNTIgYW5kIDIqKjUzLCB0aGUgZm9ybXVsYVxuICAgW3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsgMC41KV0gZG9lcyBub3QgaG9sZDpcblxuICAge3ZcbiAgICAgIyBsZXQgbmFpdmVfcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKy4gMC41KTs7XG4gICAgICMgbGV0IHggPSAyLiAqKiA1Mi4gKy4gMS47O1xuICAgICB2YWwgeCA6IGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5Ny5cbiAgICAgIyBuYWl2ZV9yb3VuZF9uZWFyZXN0IHg7O1xuICAgICAtIDogICAgIGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5OC5cbiAgIHZ9XG4qKVxuXG5sZXQgcm91bmRfbmVhcmVzdF9sYiA9IC0uKDIuICoqIDUyLilcbmxldCByb3VuZF9uZWFyZXN0X3ViID0gMi4gKiogNTIuXG5cbigqIEZvciBbeCA9IG9uZV91bHAgYERvd24gMC41XSwgdGhlIGZvcm11bGEgW2Zsb29yICh4ICsuIDAuNSldIGZvciByb3VuZGluZyB0byBuZWFyZXN0XG4gICBkb2VzIG5vdCB3b3JrLCBiZWNhdXNlIHRoZSBleGFjdCByZXN1bHQgaXMgaGFsZndheSBiZXR3ZWVuIFtvbmVfdWxwIGBEb3duIDEuXSBhbmQgWzEuXSxcbiAgIGFuZCBpdCBnZXRzIHJvdW5kZWQgdXAgdG8gWzEuXSBkdWUgdG8gdGhlIHJvdW5kLXRpZXMtdG8tZXZlbiBydWxlLiAqKVxubGV0IG9uZV91bHBfbGVzc190aGFuX2hhbGYgPSBvbmVfdWxwIGBEb3duIDAuNVxuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgPVxuICB0XG4gICsuXG4gIGlmIHQgPSBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmXG4gIHRoZW4gb25lX3VscF9sZXNzX3RoYW5faGFsZiAoKiBzaW5jZSB0IDwgMC41LCBtYWtlIHN1cmUgdGhlIHJlc3VsdCBpcyA8IDEuMCAqKVxuICBlbHNlIDAuNVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpKVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gICAgZWxzZSBOb25lXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0XzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0XzMyXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuXzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGxcIiAoYm94IHQpICgpKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfbmVhcmVzdF9leG5fNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF9leG5fMzJcbjs7XG5cbigqIFRoZSBmb2xsb3dpbmcgW2lyb3VuZF9leG5dIGFuZCBbaXJvdW5kXSBmdW5jdGlvbnMgYXJlIHNsb3dlciB0aGFuIHRoZSBvbmVzIGFib3ZlLlxuICAgVGhlaXIgZXF1aXZhbGVuY2UgdG8gdGhvc2UgZnVuY3Rpb25zIGlzIHRlc3RlZCBpbiB0aGUgdW5pdCB0ZXN0cyBiZWxvdy4gKilcblxubGV0W0BpbmxpbmVdIGlyb3VuZF9leG4gPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYFplcm8gLT4gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdFxuICB8IGBOZWFyZXN0IC0+IGlyb3VuZF9uZWFyZXN0X2V4biB0XG4gIHwgYFVwIC0+IGlyb3VuZF91cF9leG4gdFxuICB8IGBEb3duIC0+IGlyb3VuZF9kb3duX2V4biB0XG47O1xuXG5sZXQgaXJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICB0cnkgU29tZSAoaXJvdW5kX2V4biB+ZGlyIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBpc19pbmYgdCA9IDEuIC8uIHQgPSAwLlxubGV0IGlzX2Zpbml0ZSB0ID0gdCAtLiB0ID0gMC5cblxubGV0IG1pbl9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBtYXhfaW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgYWRkID0gKCArLiApXG5sZXQgc3ViID0gKCAtLiApXG5sZXQgbmVnID0gKCB+LS4gKVxubGV0IGFicyA9IGFic19mbG9hdFxubGV0IHNjYWxlID0gKCAqLiApXG5sZXQgc3F1YXJlIHggPSB4ICouIHhcblxubW9kdWxlIFBhcnRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBmcmFjdGlvbmFsIDogdCAtPiBmbG9hdFxuICB2YWwgaW50ZWdyYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBtb2RmIDogZmxvYXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0ICogZmxvYXRcblxuICBsZXQgZnJhY3Rpb25hbCB0ID0gZnN0IHRcbiAgbGV0IGludGVncmFsIHQgPSBzbmQgdFxuICBsZXQgbW9kZiA9IG1vZGZcbmVuZFxuXG5sZXQgbW9kZiA9IFBhcnRzLm1vZGZcbmxldCByb3VuZF9kb3duID0gZmxvb3JcbmxldCByb3VuZF91cCA9IGNlaWxcbmxldCByb3VuZF90b3dhcmRzX3plcm8gdCA9IGlmIHQgPj0gMC4gdGhlbiByb3VuZF9kb3duIHQgZWxzZSByb3VuZF91cCB0XG5cbigqIHNlZSB0aGUgY29tbWVudCBhYm92ZSBbcm91bmRfbmVhcmVzdF9sYl0gYW5kIFtyb3VuZF9uZWFyZXN0X3ViXSBmb3IgYW4gZXhwbGFuYXRpb24gKilcbmxldFtAb2NhbWwuaW5saW5lXSByb3VuZF9uZWFyZXN0X2lubGluZSB0ID1cbiAgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGIgJiYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiBmbG9vciAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgZWxzZSB0ICsuIDAuXG47O1xuXG5sZXQgcm91bmRfbmVhcmVzdCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0XG5cbmxldCByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiB0ID1cbiAgaWYgdCA8PSByb3VuZF9uZWFyZXN0X2xiIHx8IHQgPj0gcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIHQgKy4gMC5cbiAgZWxzZSAoXG4gICAgbGV0IGZsb29yID0gZmxvb3IgdCBpblxuICAgICgqIFtjZWlsX29yX3N1Y2MgPSBpZiB0IGlzIGFuIGludGVnZXIgdGhlbiB0ICsuIDEuIGVsc2UgY2VpbCB0XS4gIEZhc3RlciB0aGFuIFtjZWlsXS4gKilcbiAgICBsZXQgY2VpbF9vcl9zdWNjID0gZmxvb3IgKy4gMS4gaW5cbiAgICBsZXQgZGlmZl9mbG9vciA9IHQgLS4gZmxvb3IgaW5cbiAgICBsZXQgZGlmZl9jZWlsID0gY2VpbF9vcl9zdWNjIC0uIHQgaW5cbiAgICBpZiBkaWZmX2Zsb29yIDwgZGlmZl9jZWlsXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgaWYgZGlmZl9mbG9vciA+IGRpZmZfY2VpbFxuICAgIHRoZW4gY2VpbF9vcl9zdWNjXG4gICAgZWxzZSBpZiAoKiBleGFjdCB0aWUsIHBpY2sgdGhlIGV2ZW4gKilcbiAgICAgIG1vZF9mbG9hdCBmbG9vciAyLiA9IDAuXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgY2VpbF9vcl9zdWNjKVxuOztcblxubGV0IGludDYzX3JvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcbmxldCBpbnQ2M19yb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5cbmxldCBpbnQ2M19yb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGludDYzX3JvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuIHQwID1cbiAgbGV0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHQwIGluXG4gIGlmIHQgPiAwLlxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKGJveCB0MClcbiAgICAgICAgKClcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoYm94IHQwKVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4biBmID0gSW50NjMub2ZfaW50IChpcm91bmRfbmVhcmVzdF9leG4gZilcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuXG4gIHwgVzMyIC0+IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuXG47O1xuXG5sZXQgcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCB0XG4gIHwgYERvd24gLT4gcm91bmRfZG93biB0XG4gIHwgYFVwIC0+IHJvdW5kX3VwIHRcbiAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gdFxuOztcblxubW9kdWxlIENsYXNzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbmZpbml0ZVxuICAgIHwgTmFuXG4gICAgfCBOb3JtYWxcbiAgICB8IFN1Ym5vcm1hbFxuICAgIHwgWmVyb1xuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgSW5maW5pdGU7IE5hbjsgTm9ybWFsOyBTdWJub3JtYWw7IFplcm8gXSA6IHQgbGlzdClcblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDA3XyA9IFwiZmxvYXQubWwuQ2xhc3MudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIC0+IEluZmluaXRlXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgLT4gTm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgLT4gU3Vibm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDhfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwOF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSA6OiBfKSBhcyBzZXhwX18wMDhfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA4X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDhfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA4XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwNl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDZfXG4gICAgIHwgc2V4cF9fMDA2XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwNl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbmZpbml0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmZpbml0ZVwiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgfCBOb3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTm9ybWFsXCJcbiAgICAgIHwgU3Vibm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN1Ym5vcm1hbFwiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJJbmZpbml0ZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOYW5cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlN1Ym5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuZW5kXG5cbmxldCBjbGFzc2lmeSB0ID1cbiAgbGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgdCB3aXRoXG4gIHwgRlBfbm9ybWFsIC0+IEMuTm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsIC0+IEMuU3Vibm9ybWFsXG4gIHwgRlBfemVybyAtPiBDLlplcm9cbiAgfCBGUF9pbmZpbml0ZSAtPiBDLkluZmluaXRlXG4gIHwgRlBfbmFuIC0+IEMuTmFuXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzID8oZGVsaW1pdGVyID0gJ18nKSA/KHN0cmlwX3plcm8gPSBmYWxzZSkgc3RyaW5nID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyaW5nIH5vbjonLicgd2l0aFxuICB8IE5vbmUgLT4gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgc3RyaW5nIH5kZWxpbWl0ZXJcbiAgfCBTb21lIChsZWZ0LCByaWdodCkgLT5cbiAgICBsZXQgbGVmdCA9IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIGxlZnQgfmRlbGltaXRlciBpblxuICAgIGxldCByaWdodCA9XG4gICAgICBpZiBzdHJpcF96ZXJvIHRoZW4gU3RyaW5nLnJzdHJpcCByaWdodCB+ZHJvcDooZnVuIGMgLT4gQ2hhci4oID0gKSBjICcwJykgZWxzZSByaWdodFxuICAgIGluXG4gICAgKG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgfCBcIlwiIC0+IGxlZnRcbiAgICAgfCBfIC0+IGxlZnQgXiBcIi5cIiBeIHJpZ2h0KVxuOztcblxubGV0IHRvX3N0cmluZ19odW0gP2RlbGltaXRlciA/KGRlY2ltYWxzID0gMykgP3N0cmlwX3plcm8gPyhleHBsaWNpdF9wbHVzID0gZmFsc2UpIGYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGRlY2ltYWxzIDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJ0b19zdHJpbmdfaHVtOiBpbnZhbGlkIGFyZ3VtZW50IH5kZWNpbWFscz0lZFwiIGRlY2ltYWxzICgpO1xuICBtYXRjaCBjbGFzc2lmeSBmIHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiBmID4gMC4gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW5cIlxuICB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgcyA9XG4gICAgICBpZiBleHBsaWNpdF9wbHVzIHRoZW4gc3ByaW50ZiBcIiUrLipmXCIgZGVjaW1hbHMgZiBlbHNlIHNwcmludGYgXCIlLipmXCIgZGVjaW1hbHMgZlxuICAgIGluXG4gICAgaW5zZXJ0X3VuZGVyc2NvcmVzIHMgP2RlbGltaXRlciA/c3RyaXBfemVyb1xuOztcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgbGV0IHNleHAgPSBzZXhwX29mX3QgdCBpblxuICBtYXRjaCAhU2V4cC5vZl9mbG9hdF9zdHlsZSB3aXRoXG4gIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHNleHBcbiAgfCBgVW5kZXJzY29yZXMgLT5cbiAgICAobWF0Y2ggc2V4cCB3aXRoXG4gICAgIHwgTGlzdCBfIC0+XG4gICAgICAgcmFpc2Vfc1xuICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgXCJbc2V4cF9vZl9mbG9hdF0gcHJvZHVjZWQgc3RyYW5nZSBzZXhwXCJcbiAgICAgICAgICAgIFsgXCJzZXhwXCIsIFNleHAuc2V4cF9vZl90IHNleHAgXSlcbiAgICAgfCBBdG9tIHN0cmluZyAtPlxuICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzdHJpbmcgJ0UnIHRoZW4gc2V4cCBlbHNlIEF0b20gKGluc2VydF91bmRlcnNjb3JlcyBzdHJpbmcpKVxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCA/KHByZWZpeCA9IFwiXCIpIH5raWxvIH5tZWdhIH5naWdhIH50ZXJhID9wZXRhICgpID1cbiAgKCogUm91bmQgYSByYXRpbyB0b3dhcmQgdGhlIG5lYXJlc3QgaW50ZWdlciwgcmVzb2x2aW5nIHRpZXMgdG93YXJkIHRoZSBuZWFyZXN0IGV2ZW5cbiAgICAgbnVtYmVyLiAgRm9yIHNhbmUgaW5wdXRzIChpbiBwYXJ0aWN1bGFyLCB3aGVuIFtkZW5vbWluYXRvcl0gaXMgYW4gaW50ZWdlciBhbmRcbiAgICAgW2FicyBudW1lcmF0b3IgPCAyZTUyXSkgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUuICBPdGhlcndpc2UsIHRoZSByZXN1bHQgbWlnaHQgYmUgYVxuICAgICBsaXR0bGUgYml0IG9mZiwgYnV0IHdlIGRvbid0IHJlYWxseSB1c2UgdGhhdCBjYXNlLiAqKVxuICBsZXQgaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IGsgPSBmbG9vciAobnVtZXJhdG9yIC8uIGRlbm9taW5hdG9yKSBpblxuICAgICgqIGlmIFthYnMgayA8IDJlNTNdLCB0aGVuIGJvdGggW2tdIGFuZCBbayArLiAxLl0gYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGFuZCBpblxuICAgICAgIHBhcnRpY3VsYXIgW2sgKy4gMS4gPiBrXS4gIElmIFtkZW5vbWluYXRvcl0gaXMgYWxzbyBhbiBpbnRlZ2VyLCBhbmRcbiAgICAgICBbYWJzIChkZW5vbWluYXRvciAqLiAoayArLiAxKSkgPCAyZTUzXSAoYW5kIGluIHNvbWUgb3RoZXIgY2FzZXMsIHRvbyksIHRoZW4gW2xvd2VyXVxuICAgICAgIGFuZCBbaGlnaGVyXSBhcmUgYWN0dWFsbHkgYm90aCBhY2N1cmF0ZS4gIFNpbmNlIChyb3VnaGx5KVxuICAgICAgIFtudW1lcmF0b3IgPSBkZW5vbWluYXRvciAqLiBrXSB0aGVuIGZvciBbYWJzIG51bWVyYXRvciA8IDJlNTJdIHdlIHNob3VsZCBiZVxuICAgICAgIGZpbmUuICopXG4gICAgbGV0IGxvd2VyID0gZGVub21pbmF0b3IgKi4gayBpblxuICAgIGxldCBoaWdoZXIgPSBkZW5vbWluYXRvciAqLiAoayArLiAxLikgaW5cbiAgICAoKiBTdWJ0cmFjdGluZyBudW1iZXJzIHdpdGhpbiBhIGZhY3RvciBvZiB0d28gZnJvbSBlYWNoIG90aGVyIGlzIGFjY3VyYXRlLlxuICAgICAgIFNvIGVpdGhlciB0aGUgdHdvIHN1YnRyYWN0aW9ucyBiZWxvdyBhcmUgYWNjdXJhdGUsIG9yIGsgPSAwLCBvciBrID0gLTEuXG4gICAgICAgSW4gY2FzZSBvZiBhIHRpZSwgcm91bmQgdG8gZXZlbi4gKilcbiAgICBsZXQgZGlmZl9yaWdodCA9IGhpZ2hlciAtLiBudW1lcmF0b3IgaW5cbiAgICBsZXQgZGlmZl9sZWZ0ID0gbnVtZXJhdG9yIC0uIGxvd2VyIGluXG4gICAgbGV0IGsgPSBpcm91bmRfbmVhcmVzdF9leG4gayBpblxuICAgIGlmIGRpZmZfcmlnaHQgPCBkaWZmX2xlZnRcbiAgICB0aGVuIGsgKyAxXG4gICAgZWxzZSBpZiBkaWZmX3JpZ2h0ID4gZGlmZl9sZWZ0XG4gICAgdGhlbiBrXG4gICAgZWxzZSBpZiAoKiBhIHRpZSAqKVxuICAgICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoayBtb2QgMikgMFxuICAgIHRoZW4ga1xuICAgIGVsc2UgayArIDFcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgdCA8IDAuMCB0aGVuIFwiLWluZiAgXCIgZWxzZSBcImluZiAgXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW4gIFwiXG4gIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBnbyB0ID1cbiAgICAgIGxldCBjb252X29uZSB0ID1cbiAgICAgICAgYXNzZXJ0ICgwLiA8PSB0ICYmIHQgPCA5OTkuOTUpO1xuICAgICAgICBsZXQgeCA9IHByZWZpeCBeIGZvcm1hdF9mbG9hdCBcIiUuMWZcIiB0IGluXG4gICAgICAgICgqIEZpeCB0aGUgXCIuMFwiIHN1ZmZpeCAqKVxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHggfnN1ZmZpeDpcIi4wXCJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHggPSBCeXRlcy5vZl9zdHJpbmcgeCBpblxuICAgICAgICAgIGxldCBuID0gQnl0ZXMubGVuZ3RoIHggaW5cbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDEpICcgJztcbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDIpICcgJztcbiAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOngpXG4gICAgICAgIGVsc2UgeFxuICAgICAgaW5cbiAgICAgIGxldCBjb252IG1hZyB0IGRlbm9taW5hdG9yID1cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAoZGVub21pbmF0b3IgPSAxMDAuICYmIHQgPj0gOTk5Ljk1KVxuICAgICAgICAgIHx8IChkZW5vbWluYXRvciA+PSAxMDBfMDAwLiAmJiB0ID49IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDkuOTk5XzUpKSk7XG4gICAgICAgIGFzc2VydCAodCA8IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDlfOTk5LjUpKTtcbiAgICAgICAgbGV0IGksIGQgPVxuICAgICAgICAgIGxldCBrID0gaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yOnQgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICAgKCogW21vZF0gaXMgb2theSBoZXJlIGJlY2F1c2Ugd2Uga25vdyBpID49IDAuICopXG4gICAgICAgICAgayAvIDEwLCBrIG1vZCAxMFxuICAgICAgICBpblxuICAgICAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgICAgIGFzc2VydCAoMCA8PSBpICYmIGkgPCAxMDAwKTtcbiAgICAgICAgYXNzZXJ0ICgwIDw9IGQgJiYgZCA8IDEwKTtcbiAgICAgICAgaWYgZCA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiJXMlZCVzIFwiIHByZWZpeCBpIG1hZ1xuICAgICAgICBlbHNlIHNwcmludGYgXCIlcyVkJXMlZFwiIHByZWZpeCBpIG1hZyBkXG4gICAgICBpblxuICAgICAgKCogV2hpbGUgdGhlIHN0YW5kYXJkIG1ldHJpYyBwcmVmaXhlcyAoZS5nLiBjYXBpdGFsIFwiTVwiIHJhdGhlciB0aGFuIFwibVwiLCBbMV0pIGFyZVxuICAgICAgICAgbm9taW5hbGx5IG1vcmUgY29ycmVjdCwgdGhpcyBoaW5kZXJzIHJlYWRhYmlsaXR5IGluIG91ciBjYXNlLiAgRS5nLiwgMTBHNiBhbmRcbiAgICAgICAgIDEwNjYgbG9vayB0b28gc2ltaWxhci4gIFRoYXQncyBhbiBleHRyZW1lIGV4YW1wbGUsIGJ1dCBpbiBnZW5lcmFsIGssbSxnLHQscFxuICAgICAgICAgcHJvYmFibHkgc3RhbmQgb3V0IGJldHRlciB0aGFuIEssTSxHLFQsUCB3aGVuIGludGVyc3BlcnNlZCB3aXRoIGRpZ2l0cy5cblxuICAgICAgICAgWzFdIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWV0cmljX3ByZWZpeCAqKVxuICAgICAgKCogVGhlIHRyaWNrIGhlcmUgaXMgdGhhdDpcbiAgICAgICAgIC0gdGhlIGZpcnN0IGJvdW5kYXJ5ICg5OTkuOTUpIGFzIGEgZmxvYXQgaXMgc2xpZ2h0bHkgb3Zlci1yZXByZXNlbnRlZCAoc28gaXQgaXNcbiAgICAgICAgICAgYmV0dGVyIGFwcHJveGltYXRlZCBhcyBcIjFrXCIgdGhhbiBhcyBcIjk5OS45XCIpLFxuICAgICAgICAgLSB0aGUgb3RoZXIgYm91bmRhcmllcyBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYmVjYXVzZSB0aGV5IGFyZSBpbnRlZ2Vycy5cbiAgICAgICAgICAgVGhhdCdzIHdoeSB0aGUgc3RyaWN0IGVxdWFsaXRpZXMgYmVsb3cgZG8gZXhhY3RseSB3aGF0IHdlIHdhbnQuICopXG4gICAgICBpZiB0IDwgOTk5Ljk1RTBcbiAgICAgIHRoZW4gY29udl9vbmUgdFxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTNcbiAgICAgIHRoZW4gY29udiBraWxvIHQgMTAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTZcbiAgICAgIHRoZW4gY29udiBtZWdhIHQgMTAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU5XG4gICAgICB0aGVuIGNvbnYgZ2lnYSB0IDEwMF8wMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTEyXG4gICAgICB0aGVuIGNvbnYgdGVyYSB0IDEwMF8wMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBwZXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdFxuICAgICAgICB8IFNvbWUgcGV0YSAtPlxuICAgICAgICAgIGlmIHQgPCA5OTkuOTVFMTVcbiAgICAgICAgICB0aGVuIGNvbnYgcGV0YSB0IDEwMF8wMDBfMDAwXzAwMF8wMDAuXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHQpXG4gICAgaW5cbiAgICBpZiB0ID49IDAuIHRoZW4gZ28gdCBlbHNlIFwiLVwiIF4gZ28gfi0udFxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyB0ID1cbiAgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0IH5raWxvOlwia1wiIH5tZWdhOlwibVwiIH5naWdhOlwiZ1wiIH50ZXJhOlwidFwiIH5wZXRhOlwicFwiICgpXG47O1xuXG4oKiBQZXJmb3JtYW5jZSBub3RlOiBJbml0aWFsaXppbmcgdGhlIGFjY3VtdWxhdG9yIHRvIDEgcmVzdWx0cyBpbiBvbmUgZXh0cmFcbiAgIG11bHRpcGx5OyBlLmcuLCB0byBjb21wdXRlIHggKiogNCwgd2UgaW4gcHJpbmNpcGxlIG9ubHkgbmVlZCAyIG11bHRpcGxpZXMsXG4gICBidXQgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgMyBtdWx0aXBsaWVzLiAgSG93ZXZlciwgYXR0ZW1wdHMgdG8gYXZvaWQgdGhpc1xuICAgKGxpa2UgZGVjcmVtZW50aW5nIG4gYW5kIGluaXRpYWxpemluZyBhY2N1bSB0byBiZSB4LCBvciBoYW5kbGluZyBzbWFsbFxuICAgZXhwb25lbnRzIGFzIGEgc3BlY2lhbCBjYXNlKSBoYXZlIG5vdCB5aWVsZGVkIGFueXRoaW5nIHRoYXQgaXMgYSBuZXRcbiAgIGltcHJvdmVtZW50LlxuKilcbmxldCBpbnRfcG93IHggbiA9XG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAxLlxuICBlbHNlIChcbiAgICAoKiBVc2luZyBbeCArLiAoLTAuKV0gb24gdGhlIGZvbGxvd2luZyBsaW5lIGNvbnZpbmNlcyB0aGUgY29tcGlsZXIgdG8gYXZvaWQgYSBjZXJ0YWluXG4gICAgICAgYm94aW5nICh0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbGxvY2F0aW9uIGluIGVhY2ggaXRlcmF0aW9uKS4gIFNvb24sIHRoZSBjb21waWxlclxuICAgICAgIHNob3VsZG4ndCBuZWVkIHRoaXMgXCJoaW50XCIgdG8gYXZvaWQgdGhlIGJveGluZy4gIFRoZSByZWFzb24gd2UgYWRkIC0wIHJhdGhlciB0aGFuIDBcbiAgICAgICBpcyB0aGF0IFt4ICsuICgtMC4pXSBpcyBhcHBhcmVudGx5IGFsd2F5cyB0aGUgc2FtZSBhcyBbeF0sIHdoZXJlYXMgW3ggKy4gMC5dIGlzXG4gICAgICAgbm90LCBpbiB0aGF0IGl0IHNlbmRzIFstMC5dIHRvIFswLl0uICBUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBiZWNhdXNlIHdlIHdhbnRcbiAgICAgICBbaW50X3BvdyAoLTAuKSAoLTEpXSB0byByZXR1cm4gbmVnX2luZmluaXR5IGp1c3QgbGlrZSBbLTAuICoqIC0xLl0gd291bGQuICAqKVxuICAgIGxldCB4ID0gcmVmICh4ICsuIC0wLikgaW5cbiAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgbGV0IGFjY3VtID0gcmVmIDEuIGluXG4gICAgaWYgIW4gPCAwXG4gICAgdGhlbiAoXG4gICAgICAoKiB4ICoqIG4gPSAoMS94KSAqKiAtbiAqKVxuICAgICAgeCA6PSAxLiAvLiAheDtcbiAgICAgIG4gOj0gfi0gKCFuKTtcbiAgICAgIGlmICFuIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIG4gbXVzdCBoYXZlIGJlZW4gbWluX2ludCwgc28gaXQgaXMgbm93IHNvIGJpZyB0aGF0IGl0IGhhcyB3cmFwcGVkIGFyb3VuZC5cbiAgICAgICAgICAgV2UgZGVjcmVtZW50IGl0IHNvIHRoYXQgaXQgbG9va3MgcG9zaXRpdmUgYWdhaW4sIGJ1dCBhY2NvcmRpbmdseSBoYXZlXG4gICAgICAgICAgIHRvIHB1dCBhbiBleHRyYSBmYWN0b3Igb2YgeCBpbiB0aGUgYWNjdW11bGF0b3IuXG4gICAgICAgICopXG4gICAgICAgIGFjY3VtIDo9ICF4O1xuICAgICAgICBkZWNyIG4pKTtcbiAgICAoKiBMZXR0aW5nIFthXSBkZW5vdGUgKHRoZSBvcmlnaW5hbCB2YWx1ZSBvZikgW3ggKiogbl0sIHdlIG1haW50YWluXG4gICAgICAgdGhlIGludmFyaWFudCB0aGF0IFsoeCAqKiBuKSAqLiBhY2N1bSA9IGFdLiAqKVxuICAgIHdoaWxlICFuID4gMSBkb1xuICAgICAgaWYgIW4gbGFuZCAxIDw+IDAgdGhlbiBhY2N1bSA6PSAheCAqLiAhYWNjdW07XG4gICAgICB4IDo9ICF4ICouICF4O1xuICAgICAgbiA6PSAhbiBsc3IgMVxuICAgIGRvbmU7XG4gICAgKCogbiBpcyBuZWNlc3NhcmlseSAxIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsXG4gICAgICAgbXVsdGlwbGljYXRpb24gYnkgeC4gKilcbiAgICAheCAqLiAhYWNjdW0pXG47O1xuXG5sZXQgcm91bmRfZ2VuIHggfmhvdyA9XG4gIGlmIHggPSAwLlxuICB0aGVuIDAuXG4gIGVsc2UgaWYgbm90IChpc19maW5pdGUgeClcbiAgdGhlbiB4XG4gIGVsc2UgKFxuICAgICgqIFNpZ25pZmljYW50IGRpZ2l0cyBhbmQgZGVjaW1hbCBkaWdpdHMuICopXG4gICAgbGV0IHNkLCBkZCA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgc2lnbmlmaWNhbnRfZGlnaXRzIHNkIC0+XG4gICAgICAgIGxldCBkZCA9IHNkIC0gdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgICAgfCBgZGVjaW1hbF9kaWdpdHMgZGQgLT5cbiAgICAgICAgbGV0IHNkID0gZGQgKyB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgc2QgPCAwXG4gICAgdGhlbiAwLlxuICAgIGVsc2UgaWYgc2QgPj0gMTdcbiAgICB0aGVuIHhcbiAgICBlbHNlIChcbiAgICAgICgqIENob29zZSB0aGUgb3JkZXIgdGhhdCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdC4gU21hbGwgcG9zaXRpdmVcbiAgICAgICAgIGludGVnZXJzIGFyZSwgYnV0IHRoZWlyIGludmVyc2VzIGluIG1vc3QgY2FzZXMgYXJlIG5vdC4gKilcbiAgICAgIGxldCBhYnNfZGQgPSBJbnQuYWJzIGRkIGluXG4gICAgICBpZiBhYnNfZGQgPiAyMiB8fCBzZCA+PSAxNlxuICAgICAgKCogMTAqKjIyIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBidXQgMTAqKjIzIGlzIG5vdCwgc28gdXNlIHRoZSBzbG93XG4gICAgICAgICBwYXRoLiAgU2ltaWxhcmx5LCBpZiB3ZSBuZWVkIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpbiB0aGUgcmVzdWx0LCB0aGVuIHRoZSBpbnRlZ2VyXG4gICAgICAgICBbcm91bmRfbmVhcmVzdCAoeCA8b3A+IG9yZGVyKV0gbWlnaHQgbm90IGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBzaW5jZVxuICAgICAgICAgZm9yIHNvbWUgcmFuZ2VzIHdlIG9ubHkgaGF2ZSAxNSBkaWdpdHMgb2YgcHJlY2lzaW9uIGd1YXJhbnRlZWQuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgd2UgYXJlIHN0aWxsIHJvdW5kaW5nIHR3aWNlIGhlcmU6XG5cbiAgICAgICAgIDEpIGZpcnN0IHRpbWUgd2hlbiByb3VuZGluZyBbeCAqLiBvcmRlcl0gb3IgW3ggLy4gb3JkZXJdIHRvIHRoZSBuZWFyZXN0IGZsb2F0XG4gICAgICAgICAoanVzdCB0aGUgbm9ybWFsIHdheSBmbG9hdGluZy1wb2ludCBtdWx0aXBsaWNhdGlvbiBvciBkaXZpc2lvbiB3b3JrcyksXG5cbiAgICAgICAgIDIpIHNlY29uZCB0aW1lIHdoZW4gYXBwbHlpbmcgW3JvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuXSB0byB0aGUgcmVzdWx0IG9mIHRoZVxuICAgICAgICAgYWJvdmUgb3BlcmF0aW9uXG5cbiAgICAgICAgIFNvIGZvciBhcmd1bWVudHMgd2l0aGluIGFuIHVscCBmcm9tIGEgdGllIHdlIG1pZ2h0IHN0aWxsIHByb2R1Y2UgYW4gb2ZmLWJ5LW9uZVxuICAgICAgICAgcmVzdWx0LiAqKVxuICAgICAgdGhlbiBvZl9zdHJpbmcgKHNwcmludGYgXCIlLipnXCIgc2QgeClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3JkZXIgPSBpbnRfcG93IDEwLiBhYnNfZGQgaW5cbiAgICAgICAgaWYgZGQgPj0gMFxuICAgICAgICB0aGVuIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4ICouIG9yZGVyKSAvLiBvcmRlclxuICAgICAgICBlbHNlIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4IC8uIG9yZGVyKSAqLiBvcmRlcikpKVxuOztcblxubGV0IHJvdW5kX3NpZ25pZmljYW50IHggfnNpZ25pZmljYW50X2RpZ2l0cyA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIHNpZ25pZmljYW50X2RpZ2l0cyAwXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQucm91bmRfc2lnbmlmaWNhbnQ6IGludmFsaWQgYXJndW1lbnQgc2lnbmlmaWNhbnRfZGlnaXRzOiVkXCJcbiAgICAgIHNpZ25pZmljYW50X2RpZ2l0c1xuICAgICAgKClcbiAgZWxzZSByb3VuZF9nZW4geCB+aG93Oihgc2lnbmlmaWNhbnRfZGlnaXRzIHNpZ25pZmljYW50X2RpZ2l0cylcbjs7XG5cbmxldCByb3VuZF9kZWNpbWFsIHggfmRlY2ltYWxfZGlnaXRzID0gcm91bmRfZ2VuIHggfmhvdzooYGRlY2ltYWxfZGlnaXRzIGRlY2ltYWxfZGlnaXRzKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAoKiBjbGFtcF91bmNoZWNrZWQgaXMgaW4gZmxvYXQwLm1sICopXG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgaWYgbWluIDw9IG1heFxuICB0aGVuIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIGVsc2VcbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG47O1xuXG5sZXQgKCArICkgPSAoICsuIClcbmxldCAoIC0gKSA9ICggLS4gKVxubGV0ICggKiApID0gKCAqLiApXG5sZXQgKCAqKiApID0gKCAqKiApXG5sZXQgKCAvICkgPSAoIC8uIClcbmxldCAoICUgKSA9ICggJS4gKVxubGV0ICggfi0gKSA9ICggfi0uIClcblxubGV0IHNpZ25fZXhuIHQgOiBTaWduLnQgPVxuICBpZiB0ID4gMC5cbiAgdGhlbiBQb3NcbiAgZWxzZSBpZiB0IDwgMC5cbiAgdGhlbiBOZWdcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiBaZXJvXG4gIGVsc2UgRXJyb3IucmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiRmxvYXQuc2lnbl9leG4gb2YgTkFOXCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IHNpZ25fb3JfbmFuIHQgOiBTaWduX29yX25hbi50ID1cbiAgaWYgdCA+IDAuIHRoZW4gUG9zIGVsc2UgaWYgdCA8IDAuIHRoZW4gTmVnIGVsc2UgaWYgdCA9IDAuIHRoZW4gWmVybyBlbHNlIE5hblxuOztcblxubGV0IGllZWVfbmVnYXRpdmUgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBQb2x5LihiaXRzIDwgU3RkbGliLkludDY0Lnplcm8pXG47O1xuXG5sZXQgZXhwb25lbnRfYml0cyA9IDExXG5sZXQgbWFudGlzc2FfYml0cyA9IDUyXG5sZXQgZXhwb25lbnRfbWFzazY0ID0gSW50NjQuKHNoaWZ0X2xlZnQgb25lIGV4cG9uZW50X2JpdHMgLSBvbmUpXG5sZXQgZXhwb25lbnRfbWFzayA9IEludDY0LnRvX2ludF9leG4gZXhwb25lbnRfbWFzazY0XG5sZXQgbWFudGlzc2FfbWFzayA9IEludDYzLihzaGlmdF9sZWZ0IG9uZSBtYW50aXNzYV9iaXRzIC0gb25lKVxubGV0IG1hbnRpc3NhX21hc2s2NCA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhX21hc2tcblxubGV0IGllZWVfZXhwb25lbnQgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBJbnQ2NC4oYml0X2FuZCAoc2hpZnRfcmlnaHRfbG9naWNhbCBiaXRzIG1hbnRpc3NhX2JpdHMpIGV4cG9uZW50X21hc2s2NClcbiAgfD4gU3RkbGliLkludDY0LnRvX2ludFxuOztcblxubGV0IGllZWVfbWFudGlzc2EgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICAoKiBUaGlzIGlzIHNhZmUgYmVjYXVzZSBtYW50aXNzYV9tYXNrNjQgPCBJbnQ2My5tYXhfdmFsdWUgKilcbiAgKEludDYzLm9mX2ludDY0X3RydW5jKSBTdGRsaWIuSW50NjQuKGxvZ2FuZCBiaXRzIG1hbnRpc3NhX21hc2s2NClcbjs7XG5cbmxldCBjcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBpZiBJbnQuKGJpdF9hbmQgZXhwb25lbnQgZXhwb25lbnRfbWFzayA8PiBleHBvbmVudClcbiAgdGhlbiBmYWlsd2l0aGYgXCJleHBvbmVudCAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIGV4cG9uZW50IGV4cG9uZW50X21hc2sgKClcbiAgZWxzZSBpZiBJbnQ2My4oYml0X2FuZCBtYW50aXNzYSBtYW50aXNzYV9tYXNrIDw+IG1hbnRpc3NhKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIm1hbnRpc3NhICVzIG91dCBvZiByYW5nZSBbMCwgJXNdXCJcbiAgICAgIChJbnQ2My50b19zdHJpbmcgbWFudGlzc2EpXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhX21hc2spXG4gICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgc2lnbl9iaXRzID0gaWYgbmVnYXRpdmUgdGhlbiBTdGRsaWIuSW50NjQubWluX2ludCBlbHNlIFN0ZGxpYi5JbnQ2NC56ZXJvIGluXG4gICAgbGV0IGV4cHRfYml0cyA9XG4gICAgICBTdGRsaWIuSW50NjQuc2hpZnRfbGVmdCAoU3RkbGliLkludDY0Lm9mX2ludCBleHBvbmVudCkgbWFudGlzc2FfYml0c1xuICAgIGluXG4gICAgbGV0IG1hbnRfYml0cyA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhIGluXG4gICAgbGV0IGJpdHMgPSBTdGRsaWIuSW50NjQuKGxvZ29yIHNpZ25fYml0cyAobG9nb3IgZXhwdF9iaXRzIG1hbnRfYml0cykpIGluXG4gICAgU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgYml0cylcbjs7XG5cbmxldCBjcmVhdGVfaWVlZSB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSA9XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhKVxuOztcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdG9fc3RyaW5nIHggPSBQcmludGYuc3ByaW50ZiBcIiUuOEdcIiB4XG4gIGxldCBzZXhwX29mX3QgeCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX3N0cmluZyB4XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBUaGVzZSBhcmUgcGFydGx5IGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRvIGF2b2lkIHNvbWUgYm94aW5nIHdlJ3JlIGdldHRpbmcgd2l0aFxuICAgdGhlIHZlcnNpb25zIHdlIGdldCBmcm9tIFtXaXRoX3plcm9dLiAgVGhleSBhbHNvIG1ha2UgW0Zsb2F0LmlzX25lZ2F0aXZlIG5hbl0gYW5kXG4gICBbRmxvYXQuaXNfbm9uX3Bvc2l0aXZlIG5hbl0gcmV0dXJuIFtmYWxzZV07IHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXSByZXR1cm5cbiAgIFt0cnVlXS4gKilcbmxldCBpc19wb3NpdGl2ZSB0ID0gdCA+IDAuXG5sZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSB0ID49IDAuXG5sZXQgaXNfbmVnYXRpdmUgdCA9IHQgPCAwLlxubGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gdCA8PSAwLlxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5GbG9hdFwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoICUgKSA9ICggJSApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50ID0gb2ZfaW50XG4gIGxldCBvZl9mbG9hdCB4ID0geFxuZW5kXG5cbm1vZHVsZSBPX2RvdCA9IHN0cnVjdFxuICBsZXQgKCAqLiApID0gKCAqIClcbiAgbGV0ICggKy4gKSA9ICggKyApXG4gIGxldCAoIC0uICkgPSAoIC0gKVxuICBsZXQgKCAvLiApID0gKCAvIClcbiAgbGV0ICggJS4gKSA9ICggJSApXG4gIGxldCAoIH4tLiApID0gKCB+LSApXG4gIGxldCAoICoqLiApID0gKCAqKiApXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJveCA9IGJveFxuICBsZXQgY2xhbXBfdW5jaGVja2VkID0gY2xhbXBfdW5jaGVja2VkXG4gIGxldCBsb3dlcl9ib3VuZF9mb3JfaW50ID0gbG93ZXJfYm91bmRfZm9yX2ludFxuICBsZXQgdXBwZXJfYm91bmRfZm9yX2ludCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHNwZWNpYWxpemVkX2hhc2ggPSBoYXNoX2Zsb2F0XG4gIGxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICBsZXQgaXJvdW5kX25lYXJlc3RfZXhuXzY0ID0gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IHJlcGxhY2UgZGVmYXVsdHMgaW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLlxuXG4gICBUaGUgZGVzaXJlZCBiZWhhdmlvciBoZXJlIGlzIHRvIHByb3BhZ2F0ZSBhIG5hbiBpZiBlaXRoZXIgYXJndW1lbnQgaXMgbmFuLiBCZWNhdXNlIHRoZVxuICAgZmlyc3QgY29tcGFyaXNvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbiwgaXQgc3VmZmljZXMgdG9cbiAgIGNoZWNrIGlmIHggaXMgbmFuLiBUaGVuLCB3aGVuIHggaXMgbmFuIG9yIGJvdGggeCBhbmQgeSBhcmUgbmFuLCB3ZSByZXR1cm4geCA9IG5hbjsgYW5kXG4gICB3aGVuIHkgaXMgbmFuIGJ1dCBub3QgeCwgd2UgcmV0dXJuIHkgPSBuYW4uXG5cbiAgIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucy4gIFRoZSBiZW5jaG1hcmsgYmVsb3cgc2hvd3MgYSBmZXdcbiAgIGRpZmZlcmVudCB2ZXJzaW9ucy4gIFRoaXMgYmVuY2htYXJrIHdhcyBydW4gb3ZlciBhbiBhcnJheSBvZiByYW5kb20gZmxvYXRzIChub25lIG9mXG4gICB3aGljaCBhcmUgbmFuKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuNDJ1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDIuMDJ1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuODh1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuXG4gICBUaGUgYmVuY2htYXJrIGJlbG93IHdhcyBydW4gd2hlbiB4ID4geSBpcyBhbHdheXMgdHJ1ZSAoYWdhaW4sIG5vIG5hbiB2YWx1ZXMpLlxuXG4gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBUaW1lL1J1biDilIJcbiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAg4pSCIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHkg4pSCICAgMi44M3VzIOKUglxuICAg4pSCIGlmIGlzX25hbiB4IHx8IHggPCB5IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS45N3VzIOKUglxuICAg4pSCIGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS41NnVzIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4qKVxubGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5sZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCdWZmZXJfaW50ZlxuaW5jbHVkZSBTdGRsaWIuQnVmZmVyXG5cbmxldCBjb250ZW50c19ieXRlcyA9IHRvX2J5dGVzXG5sZXQgYWRkX3N1YnN0cmluZyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YnN0cmluZyB0IHMgcG9zIGxlblxubGV0IGFkZF9zdWJieXRlcyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YmJ5dGVzIHQgcyBwb3MgbGVuXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3N0cmluZyAoY29udGVudHMgdClcblxubGV0IGNhbWxfYnVmZmVyX2xlbmd0aCA9XG4gIChTdGRsaWIuT2JqLm1hZ2ljIChTdGRsaWIuQnVmZmVyLmxlbmd0aCA6IHQgLT4gaW50KSA6ICh0W0Bsb2NhbF0pIC0+IGludClcbjs7XG5cbmxldCBjYW1sX2J1ZmZlcl9ibGl0ID1cbiAgKFN0ZGxpYi5PYmoubWFnaWNcbiAgICAgKFN0ZGxpYi5CdWZmZXIuYmxpdCA6IFN0ZGxpYi5CdWZmZXIudCAtPiBpbnQgLT4gQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQpXG4gICA6IChTdGRsaWIuQnVmZmVyLnRbQGxvY2FsXSkgLT4gaW50IC0+IChCeXRlcy50W0Bsb2NhbF0pIC0+IGludCAtPiBpbnQgLT4gdW5pdClcbjs7XG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBsZW5ndGggPSBjYW1sX2J1ZmZlcl9sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgICAgIGNhbWxfYnVmZmVyX2JsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFN0ZGxpYi5CdWZmZXIpIChUb19ieXRlcylcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN5cyA9IFN5czBcblxudHlwZSB0ID0gU3RkbGliLlByaW50ZXhjLnJhd19iYWNrdHJhY2VcblxubGV0IGVsaWRlID0gcmVmIGZhbHNlXG5sZXQgZWxpZGVkX21lc3NhZ2UgPSBcIjxiYWNrdHJhY2UgZWxpZGVkIGluIHRlc3Q+XCJcblxubGV0IGdldCA/KGF0X21vc3RfbnVtX2ZyYW1lcyA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgU3RkbGliLlByaW50ZXhjLmdldF9jYWxsc3RhY2sgYXRfbW9zdF9udW1fZnJhbWVzXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBpZiAhZWxpZGUgdGhlbiBlbGlkZWRfbWVzc2FnZSBlbHNlIFN0ZGxpYi5QcmludGV4Yy5yYXdfYmFja3RyYWNlX3RvX3N0cmluZyB0XG47O1xuXG5sZXQgdG9fc3RyaW5nX2xpc3QgdCA9IFN0cmluZy5zcGxpdF9saW5lcyAodG9fc3RyaW5nIHQpXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkxpc3QgKExpc3QubWFwICh0b19zdHJpbmdfbGlzdCB0KSB+ZjooZnVuIHggLT4gU2V4cC5BdG9tIHgpKVxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBzZXRfcmVjb3JkaW5nID0gU3RkbGliLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbiAgbGV0IGFtX3JlY29yZGluZyA9IFN0ZGxpYi5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4gIGxldCBtb3N0X3JlY2VudCAoKSA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKVxuXG4gIGxldCBtb3N0X3JlY2VudF9mb3JfZXhuIGV4biA9XG4gICAgaWYgRXhuLmlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuIHRoZW4gU29tZSAobW9zdF9yZWNlbnQgKCkpIGVsc2UgTm9uZVxuICA7O1xuXG4gICgqIFdlIHR1cm4gb24gYmFja3RyYWNlcyBieSBkZWZhdWx0IGlmIE9DQU1MUlVOUEFSQU0gZG9lc24ndCBleHBsaWNpdGx5IG1lbnRpb24gdGhlbS4gKilcbiAgbGV0IG1heWJlX3NldF9yZWNvcmRpbmcgKCkgPVxuICAgIGxldCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgPVxuICAgICAgbWF0Y2ggU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSB4IC0+IExpc3QuZXhpc3RzIChTdHJpbmcuc3BsaXQgeCB+b246JywnKSB+ZjooU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4OlwiYlwiKVxuICAgIGluXG4gICAgaWYgbm90IG9jYW1scnVucGFyYW1fbWVudGlvbnNfYmFja3RyYWNlcyB0aGVuIHNldF9yZWNvcmRpbmcgdHJ1ZVxuICA7O1xuXG4gICgqIHRoZSBjYWxsZXIgc2V0IHNvbWV0aGluZywgdGhleSBhcmUgcmVzcG9uc2libGUgKilcblxuICBsZXQgd2l0aF9yZWNvcmRpbmcgYiB+ZiA9XG4gICAgbGV0IHNhdmVkID0gYW1fcmVjb3JkaW5nICgpIGluXG4gICAgc2V0X3JlY29yZGluZyBiO1xuICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gc2V0X3JlY29yZGluZyBzYXZlZClcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBFeG4ubWF5YmVfc2V0X3JlY29yZGluZyAoKVxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIHRoZSB0b3BsZXZlbCBvZiB0aGUgQmFzZSBsaWJyYXJ5OyBpdCdzIHdoYXQgeW91IGdldCB3aGVuIHlvdSB3cml0ZVxuICAgIFtvcGVuIEJhc2VdLlxuXG4gICAgVGhlIGdvYWwgb2YgQmFzZSBpcyBib3RoIHRvIGJlIGEgbW9yZSBjb21wbGV0ZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIHJpY2hlciBBUElzLFxuICAgIGFuZCB0byBiZSBtb3JlIGNvbnNpc3RlbnQgaW4gaXRzIGRlc2lnbi4gRm9yIGluc3RhbmNlLCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeVxuICAgIHNvbWUgdGhpbmdzIGhhdmUgbW9kdWxlcyBhbmQgb3RoZXJzIGRvbid0OyBpbiBCYXNlLCBldmVyeXRoaW5nIGlzIGEgbW9kdWxlLlxuXG4gICAgQmFzZSBleHRlbmRzIHNvbWUgbW9kdWxlcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIGxpa2UgW0FycmF5XSxcbiAgICBbQnVmZmVyXSwgW0J5dGVzXSwgW0NoYXJdLCBbSGFzaHRibF0sIFtJbnQzMl0sIFtJbnQ2NF0sIFtMYXp5XSwgW0xpc3RdLCBbTWFwXSxcbiAgICBbTmF0aXZlaW50XSwgW1ByaW50Zl0sIFtSYW5kb21dLCBbU2V0XSwgW1N0cmluZ10sIFtTeXNdLCBhbmQgW1VjaGFyXS4gT25lIGtleVxuICAgIGRpZmZlcmVuY2UgaXMgdGhhdCBCYXNlIGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMgYXMgbXVjaCBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeSBhbmRcbiAgICBpbnN0ZWFkIG1ha2VzIGhlYXZ5IHVzZSBvZiB0aGUgW1Jlc3VsdF0gdHlwZSwgYXMgaW46XG5cbiAgICB7WyB0eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYiBdfVxuXG4gICAgQmFzZSBhbHNvIGFkZHMgZW50aXJlbHkgbmV3IG1vZHVsZXMsIG1vc3Qgbm90YWJseTpcblxuICAgIC0gW0NvbXBhcmFibGVdLCBbQ29tcGFyYXRvcl0sIGFuZCBbQ29tcGFyaXNvbnNdIGluIGxpZXUgb2YgcG9seW1vcnBoaWMgY29tcGFyZS5cbiAgICAtIFtDb250YWluZXJdLCB3aGljaCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGFjcm9zcyBjb250YWluZXItbGlrZSBkYXRhXG4gICAgICBzdHJ1Y3R1cmVzIChhcnJheXMsIGxpc3RzLCBzdHJpbmdzKS5cbiAgICAtIFtSZXN1bHRdLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSwgc3VwcG9ydGluZyB0aGUgb3ItZXJyb3IgcGF0dGVybi5cbiopXG5cbigqXyBXZSBoaWRlIHRoaXMgZnJvbSB0aGUgd2ViIGRvY3MgYmVjYXVzZSB0aGUgbGluZSB3cmFwcGluZyBpcyBiYWQsIG1ha2luZyBpdFxuICBwcmV0dHkgbXVjaCBpbnNjcnV0YWJsZS4gKilcbigqKi8qKilcblxuKCogVGhlIGludGVudCBpcyB0byBzaGFkb3cgYWxsIG9mIElOUklBJ3Mgc3RhbmRhcmQgbGlicmFyeS4gIE1vZHVsZXMgYmVsb3cgd291bGQgY2F1c2VcbiAgIGNvbXBpbGF0aW9uIGVycm9ycyB3aXRob3V0IGJlaW5nIHJlbW92ZWQgZnJvbSBbU2hhZG93X3N0ZGxpYl0gYmVmb3JlIGluY2x1c2lvbi4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgKCogTW9kdWxlcyBkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW5fY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLkluX2NoYW5uZWxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBPdXRfY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLk91dF9jaGFubmVsXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0XG4gICgqIFN1cHBvcnQgZm9yIGdlbmVyYXRlZCBsZXhlcnMgKilcbiAgd2l0aCBtb2R1bGUgTGV4aW5nIDo9IFNoYWRvd19zdGRsaWIuTGV4aW5nXG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0IDo9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA6PSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmKVxuICBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiovKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmluYXJ5X3NlYXJjaFxubW9kdWxlIEJpbmFyeV9zZWFyY2hhYmxlID0gQmluYXJ5X3NlYXJjaGFibGVcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQnVmZmVyID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcXVhbCA9IEVxdWFsXG5tb2R1bGUgRXJyb3IgPSBFcnJvclxubW9kdWxlIEV4biA9IEV4blxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGbG9hdCA9IEZsb2F0XG5tb2R1bGUgRmxvYXRhYmxlID0gRmxvYXRhYmxlXG5tb2R1bGUgRm4gPSBGblxubW9kdWxlIEZvcm1hdHRlciA9IEZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVcbm1vZHVsZSBIYXNoZXIgPSBIYXNoZXJcbm1vZHVsZSBIYXNodGJsID0gSGFzaHRibFxubW9kdWxlIElkZW50aWZpYWJsZSA9IElkZW50aWZpYWJsZVxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludGFibGUgPSBJbnRhYmxlXG5tb2R1bGUgSW50X21hdGggPSBJbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE5hdGl2ZWludCA9IE5hdGl2ZWludFxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvclxubW9kdWxlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24gPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5tb2R1bGUgT3JkZXJpbmcgPSBPcmRlcmluZ1xubW9kdWxlIFBvbHkgPSBQb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IFBvcGNvdW50XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiB0aGUgaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIExpbmtlZF9xdWV1ZSA9IExpbmtlZF9xdWV1ZVxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBSYW5kb20gPSBSYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBTeXNcbm1vZHVsZSBUID0gVFxubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IFVuaWZvcm1fYXJyYXlcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxuKCogQXZvaWQgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiBmb3IgdXNlcyBvZiB0aGUgc2lnbmF0dXJlcyBkZWZpbmVkIGluIFtUXS4gKilcbmluY2x1ZGUgVFxuXG4oKiBUaGlzIGlzIGEgaGFjayBzbyB0aGF0IG9kb2MgY3JlYXRlcyBiZXR0ZXIgZG9jdW1lbnRhdGlvbi4gKilcbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cF93aXRoX2NvbXBhcmFibGUgKCoqIEBpbmxpbmUgKilcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcyA9IHN0cnVjdFxuICBtb2R1bGUgRmllbGRzbGliID0gRmllbGRzbGliXG4gIG1vZHVsZSBHbG9iYWxpemUgPSBHbG9iYWxpemVcbiAgbW9kdWxlIE9ial9sb2NhbCA9IE9ial9sb2NhbFxuICBtb2R1bGUgUHB4X2NvbXBhcmVfbGliID0gUHB4X2NvbXBhcmVfbGliXG4gIG1vZHVsZSBQcHhfZW51bWVyYXRlX2xpYiA9IFBweF9lbnVtZXJhdGVfbGliXG4gIG1vZHVsZSBQcHhfaGFzaF9saWIgPSBQcHhfaGFzaF9saWJcbiAgbW9kdWxlIFZhcmlhbnRzbGliID0gVmFyaWFudHNsaWJcblxuICBsZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmdcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCogW2Rlcml2aW5nIGhhc2hdIGlzIG1pc3NpbmcgZm9yIFthcnJheV0gYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZSBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+IGludCA9IEFycmF5LmNvbXBhcmVcbiAgbGV0IGVxdWFsX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBib29sID0gQXJyYXkuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX2FycmF5IDpcbiAgICAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIGFycmF5W0BvY2FtbC5sb2NhbF0pIC0+ICdhIGFycmF5XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfKVxuICAgICAgICA6ICAoKChhX18wMDlfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwOV8pIC0+IChhX18wMDlfIGFycmF5W0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18wMDlfIGFycmF5KSAtPlxuICAgICAgQXJyYXkuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGFycmF5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGFycmF5ID1cbiAgICBBcnJheS50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9hcnJheSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIEFycmF5LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBhcnJheV9zZXhwX2dyYW1tYXIgOlxuICAgICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBhcnJheSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBBcnJheS50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ib29sID0gKEJvb2wuY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQpXG4gIGxldCBlcXVhbF9ib29sID0gKEJvb2wuZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9ib29sIDogKGJvb2xbQG9jYW1sLmxvY2FsXSkgLT4gYm9vbCkgPVxuICAgIChCb29sLmdsb2JhbGl6ZSA6IChib29sW0BvY2FtbC5sb2NhbF0pIC0+IGJvb2wpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfYm9vbCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEJvb2wuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfYm9vbCA6IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEJvb2wuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBib29sX29mX3NleHAgPSAoQm9vbC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYm9vbClcbiAgbGV0IHNleHBfb2ZfYm9vbCA9IChCb29sLnNleHBfb2ZfdCA6IGJvb2wgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCb29sLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9jaGFyID0gKENoYXIuY29tcGFyZSA6IGNoYXIgLT4gY2hhciAtPiBpbnQpXG4gIGxldCBlcXVhbF9jaGFyID0gKENoYXIuZXF1YWwgOiBjaGFyIC0+IGNoYXIgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9jaGFyIDogKGNoYXJbQG9jYW1sLmxvY2FsXSkgLT4gY2hhcikgPVxuICAgIChDaGFyLmdsb2JhbGl6ZSA6IChjaGFyW0BvY2FtbC5sb2NhbF0pIC0+IGNoYXIpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfY2hhciA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIENoYXIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfY2hhciA6IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IENoYXIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBjaGFyX29mX3NleHAgPSAoQ2hhci50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gY2hhcilcbiAgbGV0IHNleHBfb2ZfY2hhciA9IChDaGFyLnNleHBfb2ZfdCA6IGNoYXIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBDaGFyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGV4biA9IEV4bi50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX2V4biA9IChFeG4uc2V4cF9vZl90IDogZXhuIC0+IFNleHBsaWIwLlNleHAudClcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfZmxvYXQgPSAoRmxvYXQuY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludClcbiAgbGV0IGVxdWFsX2Zsb2F0ID0gKEZsb2F0LmVxdWFsIDogZmxvYXQgLT4gZmxvYXQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9mbG9hdCA6IChmbG9hdFtAb2NhbWwubG9jYWxdKSAtPiBmbG9hdCkgPVxuICAgIChGbG9hdC5nbG9iYWxpemUgOiAoZmxvYXRbQG9jYW1sLmxvY2FsXSkgLT4gZmxvYXQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfZmxvYXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgRmxvYXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gRmxvYXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBmbG9hdF9vZl9zZXhwID0gKEZsb2F0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBmbG9hdClcbiAgbGV0IHNleHBfb2ZfZmxvYXQgPSAoRmxvYXQuc2V4cF9vZl90IDogZmxvYXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludCA9IEludC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50ID0gKEludC5jb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQgPSAoSW50LmVxdWFsIDogaW50IC0+IGludCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2ludCA6IChpbnRbQG9jYW1sLmxvY2FsXSkgLT4gaW50KSA9XG4gICAgKEludC5nbG9iYWxpemUgOiAoaW50W0BvY2FtbC5sb2NhbF0pIC0+IGludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIEludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQgOiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludF9vZl9zZXhwID0gKEludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50KVxuICBsZXQgc2V4cF9vZl9pbnQgPSAoSW50LnNleHBfb2ZfdCA6IGludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50MzIgPSAoSW50MzIuY29tcGFyZSA6IGludDMyIC0+IGludDMyIC0+IGludClcbiAgbGV0IGVxdWFsX2ludDMyID0gKEludDMyLmVxdWFsIDogaW50MzIgLT4gaW50MzIgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9pbnQzMiA6IChpbnQzMltAb2NhbWwubG9jYWxdKSAtPiBpbnQzMikgPVxuICAgIChJbnQzMi5nbG9iYWxpemUgOiAoaW50MzJbQG9jYW1sLmxvY2FsXSkgLT4gaW50MzIpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50MzIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50MzIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50MzIgOiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50MzIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQzMl9vZl9zZXhwID0gKEludDMyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQzMilcbiAgbGV0IHNleHBfb2ZfaW50MzIgPSAoSW50MzIuc2V4cF9vZl90IDogaW50MzIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDMyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDY0ID0gKEludDY0LmNvbXBhcmUgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQ2NCA9IChJbnQ2NC5lcXVhbCA6IGludDY0IC0+IGludDY0IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfaW50NjQgOiAoaW50NjRbQG9jYW1sLmxvY2FsXSkgLT4gaW50NjQpID1cbiAgICAoSW50NjQuZ2xvYmFsaXplIDogKGludDY0W0BvY2FtbC5sb2NhbF0pIC0+IGludDY0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2ludDY0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDY0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDY0IDogaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDY0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50NjRfb2Zfc2V4cCA9IChJbnQ2NC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50NjQpXG4gIGxldCBzZXhwX29mX2ludDY0ID0gKEludDY0LnNleHBfb2ZfdCA6IGludDY0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQ2NC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gaW50ID0gTGlzdC5jb21wYXJlXG4gIGxldCBlcXVhbF9saXN0IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gYm9vbCA9IExpc3QuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX2xpc3QgOlxuICAgICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgbGlzdFtAb2NhbWwubG9jYWxdKSAtPiAnYSBsaXN0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNjJfKVxuICAgICAgICA6ICAoKChhX18wNjJfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzA2Ml8pIC0+IChhX18wNjJfIGxpc3RbQG9jYW1sLmxvY2FsXSlcbiAgICAgICAgICAgIC0+IGFfXzA2Ml8gbGlzdCkgLT5cbiAgICAgIExpc3QuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBsaXN0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIExpc3QuaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgbGlzdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBsaXN0ID1cbiAgICBMaXN0LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2xpc3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgbGlzdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIExpc3Quc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGxpc3Rfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgbGlzdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBMaXN0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmNvbXBhcmUgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGludClcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA9IChOYXRpdmVpbnQuZXF1YWwgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfbmF0aXZlaW50IDogKG5hdGl2ZWludFtAb2NhbWwubG9jYWxdKSAtPiBuYXRpdmVpbnQpID1cbiAgICAoTmF0aXZlaW50Lmdsb2JhbGl6ZSA6IChuYXRpdmVpbnRbQG9jYW1sLmxvY2FsXSkgLT4gbmF0aXZlaW50KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX25hdGl2ZWludCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gTmF0aXZlaW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgbmF0aXZlaW50X29mX3NleHAgPSAoTmF0aXZlaW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBuYXRpdmVpbnQpXG4gIGxldCBzZXhwX29mX25hdGl2ZWludCA9IChOYXRpdmVpbnQuc2V4cF9vZl90IDogbmF0aXZlaW50IC0+IFNleHBsaWIwLlNleHAudClcblxuICBsZXQgKG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBOYXRpdmVpbnQudF9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2Egb3B0aW9uID0gJ2EgT3B0aW9uLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBpbnQgPVxuICAgIE9wdGlvbi5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBib29sID1cbiAgICBPcHRpb24uZXF1YWxcbiAgOztcblxuICBsZXQgZ2xvYmFsaXplX29wdGlvbiA6XG4gICAgJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSBvcHRpb25bQG9jYW1sLmxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wODVfKVxuICAgICAgICA6ICAoKChhX18wODVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzA4NV8pIC0+IChhX18wODVfIG9wdGlvbltAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMDg1XyBvcHRpb24pIC0+XG4gICAgICBPcHRpb24uZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIG9wdGlvblxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBPcHRpb24uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgb3B0aW9uX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIG9wdGlvbiA9XG4gICAgT3B0aW9uLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX29wdGlvbiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBvcHRpb24gLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBPcHRpb24uc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgOlxuICAgICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBvcHRpb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gT3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9yZWYgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBpbnQgPSBSZWYuY29tcGFyZVxuICBsZXQgZXF1YWxfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSByZWYgLT4gJ2EgcmVmIC0+IGJvb2wgPSBSZWYuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX3JlZiA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgcmVmW0BvY2FtbC5sb2NhbF0pIC0+ICdhIHJlZiA9XG4gICAgZnVuICh0eXBlIGFfXzEwMl8pXG4gICAgICAgIDogICgoKGFfXzEwMl9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMTAyXykgLT4gKGFfXzEwMl8gcmVmW0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18xMDJfIHJlZikgLT5cbiAgICAgIFJlZi5nbG9iYWxpemVcbiAgOztcblxuICBsZXQgcmVmX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHJlZiA9XG4gICAgUmVmLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3JlZiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSByZWYgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBSZWYuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IHJlZl9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgcmVmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBSZWYudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBzdHJpbmcgPSBTdHJpbmcudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3N0cmluZyA9IChTdHJpbmcuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICBsZXQgZXF1YWxfc3RyaW5nID0gKFN0cmluZy5lcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9zdHJpbmcgOiAoc3RyaW5nW0BvY2FtbC5sb2NhbF0pIC0+IHN0cmluZykgPVxuICAgIChTdHJpbmcuZ2xvYmFsaXplIDogKHN0cmluZ1tAb2NhbWwubG9jYWxdKSAtPiBzdHJpbmcpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfc3RyaW5nIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzdHJpbmcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBTdHJpbmcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfc3RyaW5nIDogc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBTdHJpbmcuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzdHJpbmdfb2Zfc2V4cCA9IChTdHJpbmcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHN0cmluZylcbiAgbGV0IHNleHBfb2Zfc3RyaW5nID0gKFN0cmluZy5zZXhwX29mX3QgOiBzdHJpbmcgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHN0cmluZ19zZXhwX2dyYW1tYXIgOiBzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJ5dGVzID0gQnl0ZXMudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2J5dGVzID0gKEJ5dGVzLmNvbXBhcmUgOiBieXRlcyAtPiBieXRlcyAtPiBpbnQpXG4gIGxldCBlcXVhbF9ieXRlcyA9IChCeXRlcy5lcXVhbCA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfYnl0ZXMgOiAoYnl0ZXNbQG9jYW1sLmxvY2FsXSkgLT4gYnl0ZXMpID1cbiAgICAoQnl0ZXMuZ2xvYmFsaXplIDogKGJ5dGVzW0BvY2FtbC5sb2NhbF0pIC0+IGJ5dGVzKVxuICA7O1xuXG4gIGxldCBieXRlc19vZl9zZXhwID0gKEJ5dGVzLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBieXRlcylcbiAgbGV0IHNleHBfb2ZfYnl0ZXMgPSAoQnl0ZXMuc2V4cF9vZl90IDogYnl0ZXMgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJ5dGVzLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV91bml0ID0gKFVuaXQuY29tcGFyZSA6IHVuaXQgLT4gdW5pdCAtPiBpbnQpXG4gIGxldCBlcXVhbF91bml0ID0gKFVuaXQuZXF1YWwgOiB1bml0IC0+IHVuaXQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV91bml0IDogKHVuaXRbQG9jYW1sLmxvY2FsXSkgLT4gdW5pdCkgPVxuICAgIChVbml0Lmdsb2JhbGl6ZSA6ICh1bml0W0BvY2FtbC5sb2NhbF0pIC0+IHVuaXQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdW5pdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFVuaXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfdW5pdCA6IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFVuaXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB1bml0X29mX3NleHAgPSAoVW5pdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdW5pdClcbiAgbGV0IHNleHBfb2ZfdW5pdCA9IChVbml0LnNleHBfb2ZfdCA6IHVuaXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBVbml0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICAoKiogRm9ybWF0IHN0dWZmICopXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcblxuICAoKiogTGlzdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIExpc3QuSW5maXhcblxuICAoKiogSW50IG9wZXJhdG9ycyBhbmQgY29tcGFyaXNvbnMgKilcblxuICBpbmNsdWRlIEludC5PXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICgqKiBGbG9hdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIEZsb2F0Lk9fZG90XG5cbiAgKCogVGhpcyBpcyBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBiZSBvcHRpbWl6ZWQgYXdheSBpbiBtb3JlIGNvbnRleHRzLiAqKVxuXG4gICgqKiBSZXZlcnNlIGFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbeCB8PiBnIHw+IGZdIGlzIGVxdWl2YWxlbnQgdG8gW2YgKGcgKHgpKV0uICopXG4gIGV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuICAoKiogQXBwbGljYXRpb24gb3BlcmF0b3IuIFtnIEBAIGYgQEAgeF0gaXMgZXF1aXZhbGVudCB0byBbZyAoZiAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCBAQCApIDogKCgnYSAtPiAnYilbQGxvY2FsX29wdF0pIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4gICgqKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuICAoKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuICBleHRlcm5hbCAoICYmICkgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgZXh0ZXJuYWwgKCB8fCApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgZXh0ZXJuYWwgbm90IDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuICAoKiBUaGlzIG11c3QgYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5LiAqKVxuICBleHRlcm5hbCBpZ25vcmUgOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbiAgKCoqIENvbW1vbiBzdHJpbmcgb3BlcmF0aW9ucyAqKVxuICBsZXQgKCBeICkgPSBTdHJpbmcuKCBeIClcblxuICAoKiogUmVmZXJlbmNlIG9wZXJhdGlvbnMgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfbW9kaWZ5IHdoZW4gcG9zc2libGUgYW5kXG4gICAgIHRvIGtlZXAgcmVmZXJlbmNlIHVuYm94aW5nIHdvcmtpbmcgKilcbiAgZXh0ZXJuYWwgKCAhICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIHJlZiA6ICdhIC0+ICgnYSByZWZbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuICBleHRlcm5hbCAoIDo9ICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuICAoKiogUGFpciBvcGVyYXRpb25zICopXG5cbiAgbGV0IGZzdCA9IGZzdFxuICBsZXQgc25kID0gc25kXG5cbiAgKCoqIEV4Y2VwdGlvbnMgc3R1ZmYgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBtYXkgcmV3cml0ZSAnJXJhaXNlJyBhcyAnJXJlcmFpc2UnLiAqKVxuICBleHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG4gIGxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG4gIGxldCBpbnZhbGlkX2FyZyA9IGludmFsaWRfYXJnXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gICgqKiBNaXNjICopXG5cbiAgZXh0ZXJuYWwgcGh5c19lcXVhbCA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXFcIlxuICBleHRlcm5hbCBmb3JjZSA6ICgnYSBMYXp5LnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuaW5jbHVkZSBDb250YWluZXJfaW50Zi5FeHBvcnQgKCoqIEBpbmxpbmUgKilcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gTm90X2ZvdW5kX3NcblxuKCogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgW0Jhc2VdLiAgSWYgdGhpcyB3ZXJlIGluIGFub3RoZXIgbW9kdWxlIGluIFtCYXNlXSB0aGF0IHdhcyBub3QgdXNlZCBpbiBzb21lIHByb2dyYW0sXG4gICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gW0Jhc2VdOyByZWZlcnJpbmcgdG8gdmFsdWVzIGluXG4gICBbQmFzZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gQmFja3RyYWNlLmluaXRpYWxpemVfbW9kdWxlICgpXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuXG5sZXQgc2V0X2lucHV0X25hbWUgbmFtZSA9IGlucHV0X25hbWUgOj0gbmFtZVxubGV0IHNldF9pbnB1dF9sZXhidWYgbGV4YnVmX29wdCA9IGlucHV0X2xleGJ1ZiA6PSBsZXhidWZfb3B0XG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zN1wiXVxuXG4gIHR5cGUgb2xkX3QgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopID0ge1xuICAgIGxvYzogdDtcbiAgICBtc2c6IHN0cmluZztcbiAgICBzdWI6IG9sZF90IGxpc3Q7XG4gICAgaWZfaGlnaGxpZ2h0OiBzdHJpbmc7XG4gIH1cblxuICB0eXBlIGxvY2F0aW9uX3JlcG9ydF9raW5kICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydF9raW5kICopID1cbiAgfCBSZXBvcnRfZXJyb3JcbiAgfCBSZXBvcnRfd2FybmluZyBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfd2FybmluZ19hc19lcnJvciBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfYWxlcnQgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0X2FzX2Vycm9yIG9mIHN0cmluZ1xuXG4gIHR5cGUgbG9jYXRpb25fbXNnID0gKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkgbG9jXG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24ucmVwb3J0ICopID0ge1xuICAgIGtpbmQgOiBsb2NhdGlvbl9yZXBvcnRfa2luZDtcbiAgICBtYWluIDogbG9jYXRpb25fbXNnO1xuICAgIHN1YiA6IGxvY2F0aW9uX21zZyBsaXN0O1xuICB9XG5cbiAgdHlwZSB0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IG9sZF90ICopXG4gICgqKiBPbiBvY2FtbCA+PSA0LjA4OiBbdF0gaXMgYSBbbG9jYXRpb25fcmVwb3J0XSBmb3Igd2hpY2ggW2xvY2F0aW9uX3JlcG9ydF9raW5kXSBtdXN0IGJlIFtSZXBvcnRfZXJyb3JdLiAqKVxuXG4gIHR5cGUgdmVyc2lvbl9zcGVjaWZpY190ID0gW2BOZXdfZXJyb3Igb2YgbG9jYXRpb25fcmVwb3J0IHwgYE9sZF9lcnJvciBvZiBvbGRfdF1cblxuICBsZXQgdmVyc2lvbl9zcGVjaWZpY190X29mX3QgOiB0IC0+IHZlcnNpb25fc3BlY2lmaWNfdCA9IGZ1biB4IC0+XG4gICAgKCpJRl9BVF9MRUFTVCA0MDggYE5ld19lcnJvciB4ICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IGBPbGRfZXJyb3IgeCAqKVxuXG4gIGxldCBpc193ZWxsX2Zvcm1lZCBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IGtpbmQgPSBSZXBvcnRfZXJyb3I7IF8gfSAtPiB0cnVlXG4gICAgfCBgTmV3X2Vycm9yIF8gLT4gZmFsc2VcbiAgICB8IGBPbGRfZXJyb3IgXyAtPiB0cnVlXG5cbiAgbGV0IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgKG1zZyA6IGxvY2F0aW9uX21zZykgPSBGb3JtYXQuYXNwcmludGYgXCIldFwiIG1zZy50eHRcblxuICBsZXQgbWFpbl9tc2cgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgeyB0eHQgPSBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIG1haW47IGxvYyA9IG1haW4ubG9jIH1cbiAgICB8IGBPbGRfZXJyb3IgeyBtc2c7IGxvYzsgXyB9IC0+IHsgdHh0ID0gbXNnOyBsb2MgfVxuXG4gIGxldCBzdWJfbXNncyBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IHN1YjsgXyB9IC0+XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBlcnIgLT4geyB0eHQgPSBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIGVycjsgbG9jID0gZXJyLmxvYyB9KVxuICAgICAgICAgIHN1YlxuICAgIHwgYE9sZF9lcnJvciB7IHN1YjsgXyB9IC0+XG4gICAgICAgIGxldCByZWMgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgICAgfCB7IGxvYzsgbXNnOyBzdWI7IF8gfSA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgKHsgdHh0ID0gbXNnOyBsb2MgfSA6OiBhY2MpIChzdWIgQCB0YWlsKVxuICAgICAgICBpblxuICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzIFtdIHN1YlxuXG4gIGxldCBvZl9leG4gZXhuID1cbiAgICAoKklGX0FUX0xFQVNUIDQwNiBtYXRjaCBlcnJvcl9vZl9leG4gZXhuIHdpdGggfCBTb21lIChgT2sgZSkgLT4gU29tZSBlIHwgTm9uZSB8IFNvbWUgYEFscmVhZHlfZGlzcGxheWVkIC0+IE5vbmUgKilcbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDYgZXJyb3Jfb2ZfZXhuIGV4biopXG5cbiAgbGV0IF9zZXRfbWFpbl9tc2dfb2xkIGVycm9yIG1zZyA9IHsgZXJyb3Igd2l0aCBtc2cgfVxuXG4gIGxldCBfc2V0X21haW5fbXNnX25ldyBlcnJvciBtc2cgPVxuICAgIGxldCB0eHQgcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgbXNnIGluXG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCB0eHQgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbXNnIGVycm9yIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfb2xkIGVycm9yIG1zZyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnKilcblxuICBsZXQgX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiB7IGxvYzsgdHh0IH0gPVxuICAgIGxldCBzdWIgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB7IGxvYzsgdHh0IH0gLT4geyBsb2M7IG1zZyA9IHR4dDsgc3ViID0gW107IGlmX2hpZ2hsaWdodCA9IHR4dCB9KVxuICAgICAgICBzdWJcbiAgICBpblxuICAgIHsgbG9jOyBtc2cgPSB0eHQ7IHN1YjsgaWZfaGlnaGxpZ2h0ID0gdHh0IH1cblxuICBsZXQgX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9uZXcgfnN1YiB7IGxvYzsgdHh0IH0gPVxuICAgIGxldCBta190eHQgeCBwcGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiB4IGluXG4gICAgbGV0IG1rIGxvYyB4ID0geyBsb2M7IHR4dCA9IG1rX3R4dCB4IH0gaW5cbiAgICB7XG4gICAgICBraW5kID0gUmVwb3J0X2Vycm9yO1xuICAgICAgbWFpbiA9IG1rIGxvYyB0eHQ7XG4gICAgICBzdWIgPSBMaXN0Lm1hcCAoZnVuIHsgbG9jOyB0eHQgfSAtPiBtayBsb2MgdHh0KSBzdWI7XG4gICAgfVxuXG4gIGxldCBtYWtlIH5zdWIgbXNnID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgbXNnKilcblxuICBsZXQgX3NldF9tYWluX2xvY19vbGQgZXJyb3IgbG9jID0geyBlcnJvciB3aXRoIGxvYyB9XG5cbiAgbGV0IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyA9XG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCBsb2MgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbG9jIGVycm9yIGxvYyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX2xvY19uZXcgZXJyb3IgbG9jKilcbmVuZFxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgbXNnID0gcmFpc2VfZXJyb3JmID9sb2MgbXNnXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcblxubGV0IHBhcnNlIHMgPVxuICAoKklGX05PVF9BVF9MRUFTVCA0MTEgcGFyc2UgcyAqKVxuICAoKklGX0FUX0xFQVNUIDQxMSBPY2FtbF9jb21tb24uUGFyc2UubG9uZ2lkZW50IEBAIExleGluZy5mcm9tX3N0cmluZyBAQCBzICopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzFcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzFcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICBUaG9tYXMgR2F6YWduYWlyZSwgT0NhbWxQcm8gICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBGYWJyaWNlIExlIEZlc3NhbnQsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIEhvbmdibyBaaGFuZywgVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9yaWdpbmFsIENvZGUgZnJvbSBCZXItbWV0YW9jYW1sLCBtb2RpZmllZCBmb3IgMy4xMi4wIGFuZCBmaXhlZCAqKVxuKCogUHJpbnRpbmcgY29kZSBleHByZXNzaW9ucyAqKVxuKCogQXV0aG9yczogIEVkIFBpenppLCBGYWJyaWNlIExlIEZlc3NhbnQgKilcbigqIEV4dGVuc2l2ZSBSZXdyaXRlOiBIb25nYm8gWmhhbmc6IFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICopXG4oKiBUT0RPIG1vcmUgZmluZS1ncmFpbmVkIHByZWNlZGVuY2UgcHJldHR5LXByaW50aW5nICopXG5cbm9wZW4gQXN0XzQxNFxub3BlbiBBc3R0eXBlc1xub3BlbiBGb3JtYXRcbm9wZW4gTG9jYXRpb25cbm9wZW4gTG9uZ2lkZW50XG5vcGVuIFBhcnNldHJlZVxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG5lbmRcblxubGV0IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgaWYgTGlzdC5tZW0gdiB2bCB0aGVuXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gIGluXG4gIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHZhcl9uYW1lcyBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgbGV0IGRlc2MgPVxuICAgICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2MgeDtcbiAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXNcbiAgICAgICAgLT5cbiAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHN0cmluZztcbiAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgIFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICBpblxuICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+IFJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgaW5cbiAgbG9vcCB0XG5cbmxldCBwcmVmaXhfc3ltYm9scyA9IFsgJyEnOyAnPyc7ICd+JyBdXG5cbmxldCBpbmZpeF9zeW1ib2xzID1cbiAgWyAnPSc7ICc8JzsgJz4nOyAnQCc7ICdeJzsgJ3wnOyAnJic7ICcrJzsgJy0nOyAnKic7ICcvJzsgJyQnOyAnJSc7ICcjJyBdXG5cbigqIHR5cGUgZml4aXR5ID0gSW5maXh8IFByZWZpeCAgKilcbmxldCBzcGVjaWFsX2luZml4X3N0cmluZ3MgPVxuICBbIFwiYXNyXCI7IFwibGFuZFwiOyBcImxvclwiOyBcImxzbFwiOyBcImxzclwiOyBcImx4b3JcIjsgXCJtb2RcIjsgXCJvclwiOyBcIjo9XCI7IFwiIT1cIjsgXCI6OlwiIF1cblxubGV0IGxldG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2wnXG4gICYmIHMuWzFdID0gJ2UnXG4gICYmIHMuWzJdID0gJ3QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxubGV0IGFuZG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2EnXG4gICYmIHMuWzFdID0gJ24nXG4gICYmIHMuWzJdID0gJ2QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxuKCogZGV0ZXJtaW5lcyBpZiB0aGUgc3RyaW5nIGlzIGFuIGluZml4IHN0cmluZy5cbiAgIGNoZWNrcyBiYWNrd2FyZHMsIGZpcnN0IGFsbG93aW5nIGEgcmVuYW1pbmcgcG9zdGZpeCAoXCJfMTAyXCIpIHdoaWNoXG4gICBtYXkgaGF2ZSByZXN1bHRlZCBmcm9tIFBleHAgLT4gVGV4cCAtPiBQZXhwIHRyYW5zbGF0aW9uLCB0aGVuIGNoZWNraW5nXG4gICBpZiBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGFyZSB2YWxpZCBpbmZpeFxuICAgY2hhcmFjdGVycy4gKilcbmxldCBmaXhpdHlfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcIlwiIC0+IGBOb3JtYWxcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcyBzcGVjaWFsX2luZml4X3N0cmluZ3MgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gaW5maXhfc3ltYm9scyAtPiBgSW5maXggc1xuICB8IHMgd2hlbiBMaXN0Lm1lbSBzLlswXSBwcmVmaXhfc3ltYm9scyAtPiBgUHJlZml4IHNcbiAgfCBzIHdoZW4gcy5bMF0gPSAnLicgLT4gYE1peGZpeCBzXG4gIHwgcyB3aGVuIGxldG9wIHMgLT4gYExldG9wIHNcbiAgfCBzIHdoZW4gYW5kb3AgcyAtPiBgQW5kb3Agc1xuICB8IF8gLT4gYE5vcm1hbFxuXG5sZXQgdmlld19maXhpdHlfb2ZfZXhwID0gZnVuY3Rpb25cbiAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICBmaXhpdHlfb2Zfc3RyaW5nIGxcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IGlzX2luZml4ID0gZnVuY3Rpb24gYEluZml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19taXhmaXggPSBmdW5jdGlvbiBgTWl4Zml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19rd2RvcCA9IGZ1bmN0aW9uIGBMZXRvcCBfIHwgYEFuZG9wIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBmaXJzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bMF0gPSBjXG5sZXQgbGFzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bU3RyaW5nLmxlbmd0aCBzdHIgLSAxXSA9IGNcbmxldCBmaXJzdF9pc19pbiBjcyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBMaXN0Lm1lbSBzdHIuWzBdIGNzXG5cbigqIHdoaWNoIGlkZW50aWZpZXJzIGFyZSBpbiBmYWN0IG9wZXJhdG9ycyBuZWVkaW5nIHBhcmVudGhlc2VzICopXG5sZXQgbmVlZHNfcGFyZW5zIHR4dCA9XG4gIGxldCBmaXggPSBmaXhpdHlfb2Zfc3RyaW5nIHR4dCBpblxuICBpc19pbmZpeCBmaXggfHwgaXNfbWl4Zml4IGZpeCB8fCBpc19rd2RvcCBmaXhcbiAgfHwgZmlyc3RfaXNfaW4gcHJlZml4X3N5bWJvbHMgdHh0XG5cbigqIHNvbWUgaW5maXhlcyBuZWVkIHNwYWNlcyBhcm91bmQgcGFyZW5zIHRvIGF2b2lkIGNsYXNoZXMgd2l0aCBjb21tZW50XG4gICBzeW50YXggKilcbmxldCBuZWVkc19zcGFjZXMgdHh0ID0gZmlyc3RfaXMgJyonIHR4dCB8fCBsYXN0X2lzICcqJyB0eHRcbmxldCBzdHJpbmdfbG9jIHBwZiB4ID0gZnByaW50ZiBwcGYgXCIlc1wiIHgudHh0XG5cbigqIGFkZCBwYXJlbnRoZXNlcyB0byBiaW5kZXJzIHdoZW4gdGhleSBhcmUgaW4gZmFjdCBpbmZpeCBvciBwcmVmaXggb3BlcmF0b3JzICopXG5sZXQgcHJvdGVjdF9pZGVudCBwcGYgdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIihAOyVzQDspXCJcbiAgICBlbHNlIFwiKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCB0eHRcblxubGV0IHByb3RlY3RfbG9uZ2lkZW50IHBwZiBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHQgPVxuICBsZXQgZm9ybWF0IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgaWYgbm90IChuZWVkc19wYXJlbnMgdHh0KSB0aGVuIFwiJWEuJXNcIlxuICAgIGVsc2UgaWYgbmVlZHNfc3BhY2VzIHR4dCB0aGVuIFwiJWEuKEA7JXNAOylcIlxuICAgIGVsc2UgXCIlYS4oJXMpXCJcbiAgaW5cbiAgZnByaW50ZiBwcGYgZm9ybWF0IHByaW50X2xvbmdpZGVudCBsb25ncHJlZml4IHR4dFxuXG50eXBlIHNwYWNlX2Zvcm1hdHRlciA9ICh1bml0LCBGb3JtYXQuZm9ybWF0dGVyLCB1bml0KSBmb3JtYXRcblxubGV0IG92ZXJyaWRlID0gZnVuY3Rpb24gT3ZlcnJpZGUgLT4gXCIhXCIgfCBGcmVzaCAtPiBcIlwiXG5cbigqIHZhcmlhbmNlIGVuY29kaW5nOiBuZWVkIHRvIHN5bmMgdXAgd2l0aCB0aGUgW3BhcnNlci5tbHldICopXG5sZXQgdHlwZV92YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgTm9WYXJpYW5jZSAtPiBcIlwiXG4gIHwgQ292YXJpYW50IC0+IFwiK1wiXG4gIHwgQ29udHJhdmFyaWFudCAtPiBcIi1cIlxuXG5sZXQgdHlwZV9pbmplY3Rpdml0eSA9IGZ1bmN0aW9uIE5vSW5qZWN0aXZpdHkgLT4gXCJcIiB8IEluamVjdGl2ZSAtPiBcIiFcIlxuXG50eXBlIGNvbnN0cnVjdCA9XG4gIFsgYGNvbnMgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYGxpc3Qgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYG5pbFxuICB8IGBub3JtYWxcbiAgfCBgc2ltcGxlIG9mIExvbmdpZGVudC50XG4gIHwgYHR1cGxlIF1cblxubGV0IHZpZXdfZXhwciB4ID1cbiAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIigpXCI7IF8gfSwgXykgLT4gYHR1cGxlXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSAtPiBgbmlsXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIF8pIC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZXhwIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cCB3aXRoXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgIFBleHBfY29uc3RydWN0XG4gICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSxcbiAgICAgICAgICAgICAgIFNvbWUgeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgZTE7IGUyIF07IHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgICAgICApO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGxvb3AgZTIgKGUxIDo6IGFjYylcbiAgICAgICAgfCBlIC0+IChMaXN0LnJldiAoZSA6OiBhY2MpLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgbHMsIGIgPSBsb29wIHggW10gaW5cbiAgICAgIGlmIGIgdGhlbiBgbGlzdCBscyBlbHNlIGBjb25zIGxzXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHgsIE5vbmUpIC0+IGBzaW1wbGUgeC50eHRcbiAgfCBfIC0+IGBub3JtYWxcblxubGV0IGlzX3NpbXBsZV9jb25zdHJ1Y3QgOiBjb25zdHJ1Y3QgLT4gYm9vbCA9IGZ1bmN0aW9uXG4gIHwgYG5pbCB8IGB0dXBsZSB8IGBsaXN0IF8gfCBgc2ltcGxlIF8gLT4gdHJ1ZVxuICB8IGBjb25zIF8gfCBgbm9ybWFsIC0+IGZhbHNlXG5cbmxldCBwcCA9IGZwcmludGZcblxudHlwZSBjdHh0ID0geyBwaXBlIDogYm9vbDsgc2VtaSA6IGJvb2w7IGlmdGhlbmVsc2UgOiBib29sIH1cblxubGV0IHJlc2V0X2N0eHQgPSB7IHBpcGUgPSBmYWxzZTsgc2VtaSA9IGZhbHNlOyBpZnRoZW5lbHNlID0gZmFsc2UgfVxubGV0IHVuZGVyX3BpcGUgY3R4dCA9IHsgY3R4dCB3aXRoIHBpcGUgPSB0cnVlIH1cbmxldCB1bmRlcl9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pID0gdHJ1ZSB9XG5sZXQgdW5kZXJfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZSA9IHRydWUgfVxuKCpcbmxldCByZXNldF9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pPWZhbHNlIH1cbmxldCByZXNldF9pZnRoZW5lbHNlIGN0eHQgPSB7IGN0eHQgd2l0aCBpZnRoZW5lbHNlPWZhbHNlIH1cbmxldCByZXNldF9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlPWZhbHNlIH1cbiopXG5cbmxldCBsaXN0IDpcbiAgICAgICdhLlxuICAgICAgP3NlcDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIGxpc3QgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/c2VwID9maXJzdCA/bGFzdCBmdSBmIHhzIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBzZXAgPSBtYXRjaCBzZXAgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiQCBcIiA6IF8gZm9ybWF0NikgaW5cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICB8IHhzIC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFsgeCBdIC0+IGZ1IGYgeFxuICAgICAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgICAgICBmdSBmIHg7XG4gICAgICAgICAgICAgIHBwIGYgc2VwO1xuICAgICAgICAgICAgICBsb29wIGYgeHNcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICAgIGxvb3AgZiB4cztcbiAgICAgICAgcHAgZiBsYXN0XG4gIGluXG4gIGF1eCBmIHhzXG5cbmxldCBvcHRpb24gOlxuICAgICAgJ2EuXG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBvcHRpb24gLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/Zmlyc3QgP2xhc3QgZnUgZiBhIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpIGluXG4gIG1hdGNoIGEgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICBmdSBmIHg7XG4gICAgICBwcCBmIGxhc3RcblxubGV0IHBhcmVuIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICBib29sIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2EgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/KGZpcnN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSA/KGxhc3QgPSAoXCJcIiA6IF8gZm9ybWF0NikpIGIgZnUgZiB4IC0+XG4gIGlmIGIgdGhlbiAoXG4gICAgcHAgZiBcIihcIjtcbiAgICBwcCBmIGZpcnN0O1xuICAgIGZ1IGYgeDtcbiAgICBwcCBmIGxhc3Q7XG4gICAgcHAgZiBcIilcIilcbiAgZWxzZSBmdSBmIHhcblxubGV0IHJlYyBsb25naWRlbnQgZiA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcHJvdGVjdF9pZGVudCBmIHNcbiAgfCBMZG90ICh5LCBzKSAtPiBwcm90ZWN0X2xvbmdpZGVudCBmIGxvbmdpZGVudCB5IHNcbiAgfCBMYXBwbHkgKHksIHMpIC0+IHBwIGYgXCIlYSglYSlcIiBsb25naWRlbnQgeSBsb25naWRlbnQgc1xuXG5sZXQgbG9uZ2lkZW50X2xvYyBmIHggPSBwcCBmIFwiJWFcIiBsb25naWRlbnQgeC50eHRcblxubGV0IGNvbnN0YW50IGYgPSBmdW5jdGlvblxuICB8IFBjb25zdF9jaGFyIGkgLT4gcHAgZiBcIiVDXCIgaVxuICB8IFBjb25zdF9zdHJpbmcgKGksIF8sIE5vbmUpIC0+IHBwIGYgXCIlU1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBTb21lIGRlbGltKSAtPiBwcCBmIFwieyVzfCVzfCVzfVwiIGRlbGltIGkgZGVsaW1cbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9pbnRlZ2VyIChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBOb25lKSAtPiBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAtPiBwcCBmIFwiJXNcIikgZiBpXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG5cbigqIHRyYWlsaW5nIHNwYWNlKilcbmxldCBtdXRhYmxlX2ZsYWcgZiA9IGZ1bmN0aW9uIEltbXV0YWJsZSAtPiAoKSB8IE11dGFibGUgLT4gcHAgZiBcIm11dGFibGVAO1wiXG5sZXQgdmlydHVhbF9mbGFnIGYgPSBmdW5jdGlvbiBDb25jcmV0ZSAtPiAoKSB8IFZpcnR1YWwgLT4gcHAgZiBcInZpcnR1YWxAO1wiXG5cbigqIHRyYWlsaW5nIHNwYWNlIGFkZGVkICopXG5sZXQgcmVjX2ZsYWcgZiByZiA9XG4gIG1hdGNoIHJmIHdpdGggTm9ucmVjdXJzaXZlIC0+ICgpIHwgUmVjdXJzaXZlIC0+IHBwIGYgXCJyZWMgXCJcblxubGV0IG5vbnJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiBwcCBmIFwibm9ucmVjIFwiIHwgUmVjdXJzaXZlIC0+ICgpXG5cbmxldCBkaXJlY3Rpb25fZmxhZyBmID0gZnVuY3Rpb25cbiAgfCBVcHRvIC0+IHBwIGYgXCJ0b0AgXCJcbiAgfCBEb3dudG8gLT4gcHAgZiBcImRvd250b0AgXCJcblxubGV0IHByaXZhdGVfZmxhZyBmID0gZnVuY3Rpb24gUHVibGljIC0+ICgpIHwgUHJpdmF0ZSAtPiBwcCBmIFwicHJpdmF0ZUAgXCJcbmxldCBpdGVyX2xvYyBmIGN0eHQgeyB0eHQ7IGxvYyA9IF8gfSA9IGYgY3R4dCB0eHRcbmxldCBjb25zdGFudF9zdHJpbmcgZiBzID0gcHAgZiBcIiVTXCIgc1xuXG5sZXQgdHl2YXIgcHBmIHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBzLlsxXSA9ICdcXCcnIHRoZW5cbiAgICAoKiB3aXRob3V0IHRoZSBzcGFjZSwgdGhpcyB3b3VsZCBiZSBwYXJzZWQgYXNcbiAgICAgICBhIGNoYXJhY3RlciBsaXRlcmFsICopXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJyAlc1wiIHNcbiAgZWxzZSBGb3JtYXQuZnByaW50ZiBwcGYgXCInJXNcIiBzXG5cbmxldCB0eXZhcl9sb2MgZiBzdHIgPSB0eXZhciBmIHN0ci50eHRcbmxldCBzdHJpbmdfcXVvdCBmIHggPSBwcCBmIFwiYCVzXCIgeFxuXG4oKiBjIFsnYSwnYl0gKilcbmxldCByZWMgY2xhc3NfcGFyYW1zX2RlZiBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiWyVhXSBcIiAoKiBzcGFjZSAqKSAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+c2VwOlwiLFwiKSBsXG5cbmFuZCB0eXBlX3dpdGhfbGFiZWwgY3R4dCBmIChsYWJlbCwgYykgPVxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgTm9sYWJlbCAtPiBjb3JlX3R5cGUxIGN0eHQgZiBjICgqIG90aGVyd2lzZSBwYXJlbnRoZXNpemUgKilcbiAgfCBMYWJlbGxlZCBzIC0+IHBwIGYgXCIlczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuICB8IE9wdGlvbmFsIHMgLT4gcHAgZiBcIj8lczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuXG5hbmQgY29yZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjb3JlX3R5cGUgY3R4dClcbiAgICAgIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHR5cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2Fycm93IChsLCBjdDEsIGN0MikgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAgICh0eXBlX3dpdGhfbGFiZWwgY3R4dCkgKGwsIGN0MSkgKGNvcmVfdHlwZSBjdHh0KSBjdDJcbiAgICB8IFB0eXBfYWxpYXMgKGN0LCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSBjdCB0eXZhciBzXG4gICAgfCBQdHlwX3BvbHkgKFtdLCBjdCkgLT4gY29yZV90eXBlIGN0eHQgZiBjdFxuICAgIHwgUHR5cF9wb2x5IChzbCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAXVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYVwiXG4gICAgICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgXyAtPiBwcCBmIFwiJWFAOy5AO1wiIChsaXN0IHR5dmFyX2xvYyB+c2VwOlwiQDtcIikgbClcbiAgICAgICAgICAgICAgbClcbiAgICAgICAgICBzbCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBfIC0+IHBwIGYgXCJAWzwyPiVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSB4XG5cbmFuZCBjb3JlX3R5cGUxIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFB0eXBfdmFyIHMgLT4gdHl2YXIgZiBzXG4gICAgfCBQdHlwX3R1cGxlIGwgLT4gcHAgZiBcIiglYSlcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgIHwgUHR5cF9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgICBwcCBmICgqIFwiJWElYUA7XCIgKikgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICB8IFsgeCBdIC0+IHBwIGYgXCIlYUA7XCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuICAgICAgICAgICAgfCBfIC0+IGxpc3QgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKUA7XCIgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLEA7XCIgZiBsKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF92YXJpYW50IChsLCBjbG9zZWQsIGxvdykgLT5cbiAgICAgICAgbGV0IGZpcnN0X2lzX2luaGVyaXQgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgeyBQYXJzZXRyZWUucHJmX2Rlc2MgPSBSaW5oZXJpdCBfIH0gOjogXyAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBlX3ZhcmlhbnRfaGVscGVyIGYgeCA9XG4gICAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgfCBSdGFnIChsLCBfLCBjdGwpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAOyVhQF1cIiAoaXRlcl9sb2Mgc3RyaW5nX3F1b3QpIGxcbiAgICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiJlwiKSBjdGwpXG4gICAgICAgICAgICAgICAgY3RsIChhdHRyaWJ1dGVzIGN0eHQpIHgucHJmX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IFJpbmhlcml0IGN0IC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+WyVhJWFdQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBtYXRjaCAobCwgY2xvc2VkKSB3aXRoXG4gICAgICAgICAgICB8IFtdLCBDbG9zZWQgLT4gKClcbiAgICAgICAgICAgIHwgW10sIE9wZW4gLT4gcHAgZiBcIj5cIiAoKiBDZiAjNzIwMDogcHJpbnQgWz5dIGNvcnJlY3RseSAqKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVzQDslYVwiXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggKGNsb3NlZCwgbG93KSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IENsb3NlZCwgTm9uZSAtPiBpZiBmaXJzdF9pc19pbmhlcml0IHRoZW4gXCIgfFwiIGVsc2UgXCJcIlxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIFNvbWUgXyAtPiBcIjxcIiAoKiBGSVhNRSBkZXN1Z2FyIHRoZSBzeW50YXggc3VnYXIqKVxuICAgICAgICAgICAgICAgICAgfCBPcGVuLCBfIC0+IFwiPlwiKVxuICAgICAgICAgICAgICAgICAgKGxpc3QgdHlwZV92YXJpYW50X2hlbHBlciB+c2VwOlwiQDs8MSAtMj58IFwiKVxuICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICBsXG4gICAgICAgICAgKGZ1biBmIGxvdyAtPlxuICAgICAgICAgICAgbWF0Y2ggbG93IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBbXSB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSB4cyAtPiBwcCBmIFwiPkAgJWFcIiAobGlzdCBzdHJpbmdfcXVvdCkgeHMpXG4gICAgICAgICAgbG93XG4gICAgfCBQdHlwX29iamVjdCAobCwgbykgLT5cbiAgICAgICAgbGV0IGNvcmVfZmllbGRfdHlwZSBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgT3RhZyAobCwgY3QpIC0+XG4gICAgICAgICAgICAgICgqIENmICM3MjAwICopXG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVzOiAlYUAgJWFAIEBdXCIgbC50eHQgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgICAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG9mX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IE9pbmhlcml0IGN0IC0+IHBwIGYgXCJAWzxob3YyPiVhQCBAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZpZWxkX3ZhciBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEFzdHR5cGVzLkNsb3NlZCAtPiAoKVxuICAgICAgICAgIHwgQXN0dHlwZXMuT3BlbiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBwcCBmIFwiLi5cIiB8IF8gLT4gcHAgZiBcIiA7Li5cIilcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+PEAgJWElYUAgPiBAXVwiXG4gICAgICAgICAgKGxpc3QgY29yZV9maWVsZF90eXBlIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbCBmaWVsZF92YXIgb1xuICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgIHwgUHR5cF9jbGFzcyAobGksIGwpIC0+XG4gICAgICAgICgqRklYTUUqKVxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYSMlYUBdXCJcbiAgICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF9wYWNrYWdlIChsaWQsIGNzdHJzKSAtPiAoXG4gICAgICAgIGxldCBhdXggZiAocywgY3QpID1cbiAgICAgICAgICBwcCBmIFwidHlwZSAlYUAgPUAgJWFcIiBsb25naWRlbnRfbG9jIHMgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjc3RycyB3aXRoXG4gICAgICAgIHwgW10gLT4gcHAgZiBcIkBbPGhvdjI+KG1vZHVsZUAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhQCB3aXRoQCAlYSlAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgICAgIChsaXN0IGF1eCB+c2VwOlwiQCBhbmRAIFwiKSBjc3RycylcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGNvcmVfdHlwZSBjdHh0KSBmIHhcblxuKCoqKioqKioqKioqKioqKioqKioqcGF0dGVybioqKioqKioqKioqKioqKioqKioqKVxuKCogYmUgY2F1dGlvdXMgd2hlbiB1c2UgW3BhdHRlcm5dLCBbcGF0dGVybjFdIGlzIHByZWZlcnJlZCAqKVxuYW5kIHBhdHRlcm4gY3R4dCBmIHggPVxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKHBhdHRlcm4gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHBhdF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2FsaWFzIChwLCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwIHByb3RlY3RfaWRlbnQgcy50eHRcbiAgICB8IF8gLT4gcGF0dGVybl9vciBjdHh0IGYgeFxuXG5hbmQgcGF0dGVybl9vciBjdHh0IGYgeCA9XG4gIGxldCByZWMgbGVmdF9hc3NvY2lhdGl2ZSB4IGFjYyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfb3IgKHAxLCBwMik7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgbGVmdF9hc3NvY2lhdGl2ZSBwMSAocDIgOjogYWNjKVxuICAgIHwgeCAtPiB4IDo6IGFjY1xuICBpblxuICBtYXRjaCBsZWZ0X2Fzc29jaWF0aXZlIHggW10gd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHBhdHRlcm4xIGN0eHQgZiB4XG4gIHwgb3JwYXRzIC0+IHBwIGYgXCJAWzxob3YwPiVhQF1cIiAobGlzdCB+c2VwOlwiQCB8IFwiIChwYXR0ZXJuMSBjdHh0KSkgb3JwYXRzXG5cbmFuZCBwYXR0ZXJuMSBjdHh0IChmIDogRm9ybWF0LmZvcm1hdHRlcikgKHggOiBwYXR0ZXJuKSA6IHVuaXQgPVxuICBsZXQgcmVjIHBhdHRlcm5fbGlzdF9oZWxwZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCB7XG4gICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgIFNvbWUgKFtdLCB7IHBwYXRfZGVzYyA9IFBwYXRfdHVwbGUgWyBwYXQxOyBwYXQyIF07IF8gfSkgKTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYTo6JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0MSBwYXR0ZXJuX2xpc3RfaGVscGVyIHBhdDIgKCpSQSopXG4gICAgfCBwIC0+IHBhdHRlcm4xIGN0eHQgZiBwXG4gIGluXG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF92YXJpYW50IChsLCBTb21lIHApIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoXCIoKVwiIHwgXCJbXVwiKTsgXyB9LCBfKSAtPlxuICAgICAgICBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKCh7IHR4dDsgXyB9IGFzIGxpKSwgcG8pIC0+IChcbiAgICAgICAgaWYgKCogRklYTUUgVGhlIHRoaXJkIGZpZWxkIGFsd2F5cyBmYWxzZSAqKVxuICAgICAgICAgICB0eHQgPSBMaWRlbnQgXCI6OlwiIHRoZW4gcHAgZiBcIiVhXCIgcGF0dGVybl9saXN0X2hlbHBlciB4XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBwbyB3aXRoXG4gICAgICAgICAgfCBTb21lIChbXSwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDslYVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IFNvbWUgKHZsLCB4KSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAICh0eXBlICVhKUA7JWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAgXCIgc3RyaW5nX2xvYylcbiAgICAgICAgICAgICAgICB2bCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgeFxuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpKVxuICAgIHwgXyAtPiBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX3BhdHRlcm4gY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwYXR0ZXJuIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKChcIigpXCIgfCBcIltdXCIpIGFzIHgpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgIHBwIGYgXCIlc1wiIHhcbiAgICB8IFBwYXRfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gcHJvdGVjdF9pZGVudCBmIHR4dFxuICAgIHwgUHBhdF9hcnJheSBsIC0+IHBwIGYgXCJAWzwyPlt8JWF8XUBdXCIgKGxpc3QgKHBhdHRlcm4xIGN0eHQpIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gTm9uZSB9IC0+IHBwIGYgXCIobW9kdWxlQCBfKUAgXCJcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gU29tZSBzIH0gLT4gcHAgZiBcIihtb2R1bGVAICVzKUAgXCIgc1xuICAgIHwgUHBhdF90eXBlIGxpIC0+IHBwIGYgXCIjJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQcGF0X3JlY29yZCAobCwgY2xvc2VkKSAtPiAoXG4gICAgICAgIGxldCBsb25naWRlbnRfeF9wYXR0ZXJuIGYgKGxpLCBwKSA9XG4gICAgICAgICAgbWF0Y2ggKGxpLCBwKSB3aXRoXG4gICAgICAgICAgfCAoIHsgdHh0ID0gTGlkZW50IHM7IF8gfSxcbiAgICAgICAgICAgICAgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9IClcbiAgICAgICAgICAgIHdoZW4gcyA9IHR4dCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUA7PUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHBhdHRlcm4xIGN0eHQpIHBcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY2xvc2VkIHdpdGhcbiAgICAgICAgfCBDbG9zZWQgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzwyPntAOyVhQDt9QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbFxuICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+e0A7JWE7X31AXVwiIChsaXN0IGxvbmdpZGVudF94X3BhdHRlcm4gfnNlcDpcIjtAO1wiKSBsKVxuICAgIHwgUHBhdF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzwxPiglYSlAXVwiIChsaXN0IH5zZXA6XCIsQDtcIiAocGF0dGVybjEgY3R4dCkpIGwgKCogbGV2ZWwxKilcbiAgICB8IFBwYXRfY29uc3RhbnQgYyAtPiBwcCBmIFwiJWFcIiBjb25zdGFudCBjXG4gICAgfCBQcGF0X2ludGVydmFsIChjMSwgYzIpIC0+IHBwIGYgXCIlYS4uJWFcIiBjb25zdGFudCBjMSBjb25zdGFudCBjMlxuICAgIHwgUHBhdF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+KCVhQDs6QDslYSlAXVwiIChwYXR0ZXJuMSBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBwYXRfbGF6eSBwIC0+IHBwIGYgXCJAWzwyPihsYXp5QDslYSlAXVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBwIC0+IHBwIGYgXCJAWzwyPmV4Y2VwdGlvbkA7JWFAXVwiIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUHBhdF9vcGVuIChsaWQsIHApIC0+XG4gICAgICAgIGxldCB3aXRoX3BhcmVuID1cbiAgICAgICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQcGF0X2FycmF5IF8gfCBQcGF0X3JlY29yZCBfXG4gICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgTm9uZSkgLT5cbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICB8IF8gLT4gdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYSBAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgKHBhcmVuIHdpdGhfcGFyZW4gQEAgcGF0dGVybjEgY3R4dClcbiAgICAgICAgICBwXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKHBhdHRlcm4gY3R4dCkgZiB4XG5cbmFuZCBsYWJlbF9leHAgY3R4dCBmIChsLCBvcHQsIHApID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgTm9sYWJlbCAtPlxuICAgICAgKCogc2luZ2xlIGNhc2UgcGF0dGVybiBwYXJlbnMgbmVlZGVkIGhlcmUgKilcbiAgICAgIHBwIGYgXCIlYUAgXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgfCBPcHRpb25hbCByZXN0IC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgd2hlbiB0eHQgPSByZXN0IC0+IChcbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgU29tZSBvIC0+IHBwIGYgXCI/KCVzPUA7JWEpQDtcIiByZXN0IChleHByZXNzaW9uIGN0eHQpIG9cbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIj8lc0AgXCIgcmVzdClcbiAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiPyVzOiglYT1AOyVhKUA7XCIgcmVzdCAocGF0dGVybjEgY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXM6JWFAO1wiIHJlc3QgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApKVxuICB8IExhYmVsbGVkIGwgLT4gKFxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSB3aGVuIHR4dCA9IGxcbiAgICAgICAgLT5cbiAgICAgICAgICBwcCBmIFwifiVzQDtcIiBsXG4gICAgICB8IF8gLT4gcHAgZiBcIn4lczolYUA7XCIgbCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcClcblxuYW5kIHN1Z2FyX2V4cHIgY3R4dCBmIGUgPVxuICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGZhbHNlXG4gIGVsc2VcbiAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2FwcGx5XG4gICAgICAgICggeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gaWQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSxcbiAgICAgICAgICBhcmdzIClcbiAgICAgIHdoZW4gTGlzdC5mb3JfYWxsIChmdW4gKGxhYiwgXykgLT4gbGFiID0gTm9sYWJlbCkgYXJncyAtPiAoXG4gICAgICAgIGxldCBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgc2VwIHJpZ2h0IHByaW50X2luZGV4XG4gICAgICAgICAgICBpbmRpY2VzIHJlbV9hcmdzID1cbiAgICAgICAgICBsZXQgcHJpbnRfcGF0aCBwcGYgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgbSAtPiBwcCBwcGYgXCIuJWFcIiBsb25naWRlbnQgbVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggKGFzc2lnbiwgcmVtX2FyZ3MpIHdpdGhcbiAgICAgICAgICB8IGZhbHNlLCBbXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgYSBwcmludF9wYXRoIHBhdGhfcHJlZml4XG4gICAgICAgICAgICAgICAgbGVmdCAobGlzdCB+c2VwIHByaW50X2luZGV4KSBpbmRpY2VzIHJpZ2h0O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCB0cnVlLCBbIHYgXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQCA8LUA7PDEgMj4lYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aFxuICAgICAgICAgICAgICAgIHBhdGhfcHJlZml4IGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodFxuICAgICAgICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSB2O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChpZCwgTGlzdC5tYXAgc25kIGFyZ3MpIHdpdGhcbiAgICAgICAgfCBMaWRlbnQgXCIhXCIsIFsgZSBdIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92PiElYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGU7XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIHwgTGRvdCAocGF0aCwgKChcImdldFwiIHwgXCJzZXRcIikgYXMgZnVuYykpLCBhIDo6IG90aGVyX2FyZ3MgLT4gKFxuICAgICAgICAgICAgbGV0IGFzc2lnbiA9IGZ1bmMgPSBcInNldFwiIGluXG4gICAgICAgICAgICBsZXQgcHJpbnQgPSBwcmludF9pbmRleG9wIGEgTm9uZSBhc3NpZ24gaW5cbiAgICAgICAgICAgIG1hdGNoIChwYXRoLCBvdGhlcl9hcmdzKSB3aXRoXG4gICAgICAgICAgICB8IExpZGVudCBcIkFycmF5XCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLihcIiBcIlwiIFwiKVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGlkZW50IFwiU3RyaW5nXCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLltcIiBcIlwiIFwiXVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTFcIiksIGkxIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTEgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkyXCIpLCBpMSA6OiBpMiA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMiBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTNcIiksIGkxIDo6IGkyIDo6IGkzIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTE7IGkyOyBpMyBdIHJlc3RcbiAgICAgICAgICAgIHwgKCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkdlbmFycmF5XCIpLFxuICAgICAgICAgICAgICAgIHsgcGV4cF9kZXNjID0gUGV4cF9hcnJheSBpbmRleGVzOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IDo6IHJlc3RcbiAgICAgICAgICAgICAgKSAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgaW5kZXhlcyByZXN0XG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIHwgKExpZGVudCBzIHwgTGRvdCAoXywgcykpLCBhIDo6IGkgOjogcmVzdCB3aGVuIGZpcnN0X2lzICcuJyBzIC0+XG4gICAgICAgICAgICAoKiBleHRyYWN0IG9wZXJhdG9yOlxuICAgICAgICAgICAgICAgYXNzaWdubWVudCBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXQgXiBcIjwtXCJdLFxuICAgICAgICAgICAgICAgYWNjZXNzIG9wZXJhdG9ycyBlbmQgd2l0aCBbcmlnaHRfYnJhY2tldF0gZGlyZWN0bHlcbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBsZXQgbXVsdGlfaW5kaWNlcyA9IFN0cmluZy5jb250YWlucyBzICc7JyBpblxuICAgICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgICBtYXRjaCBpLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hcnJheSBsIHdoZW4gbXVsdGlfaW5kaWNlcyAtPiBsXG4gICAgICAgICAgICAgIHwgXyAtPiBbIGkgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBsYXN0X2lzICctJyBzIGluXG4gICAgICAgICAgICBsZXQga2luZCA9XG4gICAgICAgICAgICAgICgqIGV4dHJhY3QgdGhlIHJpZ2h0IGVuZCBicmFja2V0ICopXG4gICAgICAgICAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIGlmIGFzc2lnbiB0aGVuIHMuW24gLSAzXSBlbHNlIHMuW24gLSAxXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0LCByaWdodCA9XG4gICAgICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgICB8ICcpJyAtPiAoJygnLCBcIilcIilcbiAgICAgICAgICAgICAgfCAnXScgLT4gKCdbJywgXCJdXCIpXG4gICAgICAgICAgICAgIHwgJ30nIC0+ICgneycsIFwifVwiKVxuICAgICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBhdGhfcHJlZml4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaWQgd2l0aCBMZG90IChtLCBfKSAtPiBTb21lIG0gfCBfIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCA9IFN0cmluZy5zdWIgcyAwICgxICsgU3RyaW5nLmluZGV4IHMgbGVmdCkgaW5cbiAgICAgICAgICAgIHByaW50X2luZGV4b3AgYSBwYXRoX3ByZWZpeCBhc3NpZ24gbGVmdCBcIjtcIiByaWdodFxuICAgICAgICAgICAgICAoaWYgbXVsdGlfaW5kaWNlcyB0aGVuIGV4cHJlc3Npb24gY3R4dCBlbHNlIHNpbXBsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgIGkgcmVzdFxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmFuZCBleHByZXNzaW9uIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKUAsJWEpXCIgKGV4cHJlc3Npb24gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGV4cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2Z1bmN0aW9uIF8gfCBQZXhwX2Z1biBfIHwgUGV4cF9tYXRjaCBfIHwgUGV4cF90cnkgXyB8IFBleHBfc2VxdWVuY2UgX1xuICAgIHwgUGV4cF9uZXd0eXBlIF9cbiAgICAgIHdoZW4gY3R4dC5waXBlIHx8IGN0eHQuc2VtaSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgKFBleHBfaWZ0aGVuZWxzZSBfIHwgUGV4cF9zZXF1ZW5jZSBfKSB3aGVuIGN0eHQuaWZ0aGVuZWxzZSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgUGV4cF9sZXQgXyB8IFBleHBfbGV0bW9kdWxlIF8gfCBQZXhwX29wZW4gXyB8IFBleHBfbGV0ZXhjZXB0aW9uIF9cbiAgICB8IFBleHBfbGV0b3AgX1xuICAgICAgd2hlbiBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfZnVuIChsLCBlMCwgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+ZnVuQDslYS0+QDslYUBdXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZTAsIHApXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9uZXd0eXBlIChsaWQsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7KHR5cGVAOyVzKUA7LT5AOyVhQF1cIiBsaWQudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfZnVuY3Rpb24gbCAtPiBwcCBmIFwiQFs8aHY+ZnVuY3Rpb24lYUBdXCIgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX21hdGNoIChlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2MD5AWzwyPm1hdGNoICVhQF1AIHdpdGhAXSVhQF1cIiAoZXhwcmVzc2lvbiByZXNldF9jdHh0KVxuICAgICAgICAgIGUgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX3RyeSAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8aHYyPnRyeUAgJWFAXUAgQFs8MD53aXRoJWFAXUBdXCJcbiAgICAgICAgICAoKiBcInRyeUA7QFs8Mj4lYUBdQFxcbndpdGhAXFxuJWFcIiopXG4gICAgICAgICAgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9sZXQgKHJmLCBsLCBlKSAtPlxuICAgICAgICAoKiBwcCBmIFwiQFs8Mj5sZXQgJWElYSBpbkA7PDEgLTI+JWFAXVwiXG4gICAgICAgICAgICgqbm8gaW5kZW50YXRpb24gaGVyZSwgYSBuZXcgbGluZSopICopXG4gICAgICAgICgqICAgcmVjX2ZsYWcgcmYgKilcbiAgICAgICAgcHAgZiBcIkBbPDI+JWEgaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ3MgcmVzZXRfY3R4dCkgKHJmLCBsKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXBwbHkgKGUsIGwpIC0+IChcbiAgICAgICAgaWYgbm90IChzdWdhcl9leHByIGN0eHQgZiB4KSB0aGVuXG4gICAgICAgICAgbWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIGUgd2l0aFxuICAgICAgICAgIHwgYEluZml4IHMgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbICgoTm9sYWJlbCwgXykgYXMgYXJnMSk7ICgoTm9sYWJlbCwgXykgYXMgYXJnMikgXSAtPlxuICAgICAgICAgICAgICAgICAgKCogRklYTUUgYXNzb2NpYXRpdml0eSBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gKilcbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhQDslc0A7JWFAXVwiXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMSBzXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgYFByZWZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMaXN0Lm1lbSBzIFsgXCJ+K1wiOyBcIn4tXCI7IFwifisuXCI7IFwifi0uXCIgXVxuICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgKCogU2VlICM3MjAwOiBhdm9pZCB0dXJuaW5nICh+LSAxKSBpbnRvICgtIDEpIHdoaWNoIGlzXG4gICAgICAgICAgICAgICAgICAgICBwYXJzZWQgYXMgYW4gaW50IGxpdGVyYWwgKilcbiAgICAgICAgICAgICAgICAgIHwgWyAoXywgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0YW50IF8gfSkgXSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgICAgICAgICAgICAgIGVsc2Ugc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbIChOb2xhYmVsLCB4KSBdIC0+IHBwIGYgXCJAWzwyPiVzQDslYUBdXCIgcyAoc2ltcGxlX2V4cHIgY3R4dCkgeFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUBdXCJcbiAgICAgICAgICAgICAgICAoZnVuIGYgKGUsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGV4cHJlc3Npb24yIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSByZXNldF9jdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgKCogcmVzZXQgaGVyZSBvbmx5IGJlY2F1c2UgW2Z1bmN0aW9uLG1hdGNoLHRyeSxzZXF1ZW5jZV1cbiAgICAgICAgICAgICAgICAgICAgIGFyZSBsb3dlciBwcmlvcml0eSAqKSlcbiAgICAgICAgICAgICAgICAoZSwgbCkpXG4gICAgfCBQZXhwX2NvbnN0cnVjdCAobGksIFNvbWUgZW8pIHdoZW4gbm90IChpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkpXG4gICAgICAtPiAoXG4gICAgICAgICgqIE5vdCBlZmZpY2llbnQgRklYTUUqKVxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYGNvbnMgbHMgLT4gbGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgZiBscyB+c2VwOlwiQDs6OkA7XCJcbiAgICAgICAgfCBgbm9ybWFsIC0+IHBwIGYgXCJAWzwyPiVhQDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZW9cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfc2V0ZmllbGQgKGUxLCBsaSwgZTIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhLiVhQCA8LUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlMSBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgKHNpbXBsZV9leHByIGN0eHQpIGUyXG4gICAgfCBQZXhwX2lmdGhlbmVsc2UgKGUxLCBlMiwgZW8pIC0+XG4gICAgICAgICgqIEA7QFs8Mj5lbHNlQCAlYUBdQF0gKilcbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPDI+aWZAICVhQF1AO0BbPDI+dGhlbkAgJWFAXSVhQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlID0gZXhwcmVzc2lvbiAodW5kZXJfaWZ0aGVuZWxzZSBjdHh0KSBpblxuICAgICAgICBwcCBmIGZtdCBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgZTEgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUyXG4gICAgICAgICAgKGZ1biBmIGVvIC0+XG4gICAgICAgICAgICBtYXRjaCBlbyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCJAO0BbPDI+ZWxzZUA7JWFAXVwiIChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICgqIHBwIGYgXCIoKVwiICopKVxuICAgICAgICAgIGVvXG4gICAgfCBQZXhwX3NlcXVlbmNlIF8gLT5cbiAgICAgICAgbGV0IHJlYyBzZXF1ZW5jZV9oZWxwZXIgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9zZXF1ZW5jZSAoZTEsIGUyKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBzZXF1ZW5jZV9oZWxwZXIgKGUxIDo6IGFjYykgZTJcbiAgICAgICAgICB8IHYgLT4gTGlzdC5yZXYgKHYgOjogYWNjKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbHN0ID0gc2VxdWVuY2VfaGVscGVyIFtdIHggaW5cbiAgICAgICAgcHAgZiBcIkBbPGh2PiVhQF1cIiAobGlzdCAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtAO1wiKSBsc3RcbiAgICB8IFBleHBfbmV3IGxpIC0+IHBwIGYgXCJAWzxob3YyPm5ld0AgJWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2V0aW5zdHZhciAocywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAIDwtQCAlYUBdXCIgcy50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9vdmVycmlkZSBsIC0+XG4gICAgICAgICgqIEZJWE1FICopXG4gICAgICAgIGxldCBzdHJpbmdfeF9leHByZXNzaW9uIGYgKHMsIGUpID1cbiAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lc0AgPUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+ezwlYT59QF1cIiAobGlzdCBzdHJpbmdfeF9leHByZXNzaW9uIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBleHBfbGV0bW9kdWxlIChzLCBtZSwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBtb2R1bGVAICVzQCA9QCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgKG1vZHVsZV9leHByIHJlc2V0X2N0eHQpIG1lIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChjZCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBleGNlcHRpb25AICVhQCBpbkAgJWFAXVwiXG4gICAgICAgICAgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KVxuICAgICAgICAgIGNkIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXNzZXJ0IGUgLT4gcHAgZiBcIkBbPGhvdjI+YXNzZXJ0QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfbGF6eSBlIC0+IHBwIGYgXCJAWzxob3YyPmxhenlAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICgqIFBleHBfcG9seTogaW1wb3NzaWJsZSBidXQgd2Ugc2hvdWxkIHByaW50IGl0IGFueXdheSwgcmF0aGVyIHRoYW5cbiAgICAgICBhc3NlcnQgZmFsc2UgKilcbiAgICB8IFBleHBfcG9seSAoZSwgTm9uZSkgLT4gcHAgZiBcIkBbPGhvdjI+IXBvbHkhQCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfcG9seSAoZSwgU29tZSBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCFwb2x5IUAgJWFAIDogJWEpQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG8ucG9wZW5fZXhwciAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIFNvbWUgZW8pIC0+IHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgfCBQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPkBbPHY+JWFALCVhQF0gaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ19vcCBjdHh0KSBsZXRfXG4gICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmdfb3AgY3R4dCkpXG4gICAgICAgICAgYW5kcyAoZXhwcmVzc2lvbiBjdHh0KSBib2R5XG4gICAgfCBQZXhwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBwcCBmIFwiLlwiXG4gICAgfCBfIC0+IGV4cHJlc3Npb24xIGN0eHQgZiB4XG5cbmFuZCBleHByZXNzaW9uMSBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9vYmplY3QgY3MgLT4gcHAgZiBcIiVhXCIgKGNsYXNzX3N0cnVjdHVyZSBjdHh0KSBjc1xuICAgIHwgXyAtPiBleHByZXNzaW9uMiBjdHh0IGYgeFxuKCogdXNlZCBpbiBbUGV4cF9hcHBseV0gKilcblxuYW5kIGV4cHJlc3Npb24yIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2ZpZWxkIChlLCBsaSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEuJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2VuZCAoZSwgcykgLT4gcHAgZiBcIkBbPGhvdjI+JWEjJXNAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIHMudHh0XG4gICAgfCBfIC0+IHNpbXBsZV9leHByIGN0eHQgZiB4XG5cbmFuZCBzaW1wbGVfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgXyB3aGVuIGlzX3NpbXBsZV9jb25zdHJ1Y3QgKHZpZXdfZXhwciB4KSAtPiAoXG4gICAgICAgIG1hdGNoIHZpZXdfZXhwciB4IHdpdGhcbiAgICAgICAgfCBgbmlsIC0+IHBwIGYgXCJbXVwiXG4gICAgICAgIHwgYHR1cGxlIC0+IHBwIGYgXCIoKVwiXG4gICAgICAgIHwgYGxpc3QgeHMgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxodjA+WyVhXUBdXCJcbiAgICAgICAgICAgICAgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICAgICAgeHNcbiAgICAgICAgfCBgc2ltcGxlIHggLT4gbG9uZ2lkZW50IGYgeFxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgUGV4cF9pZGVudCBsaSAtPiBsb25naWRlbnRfbG9jIGYgbGlcbiAgICAoKiAobWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIHggd2l0aCAqKVxuICAgICgqIHxgTm9ybWFsIC0+IGxvbmdpZGVudF9sb2MgZiBsaSAqKVxuICAgICgqIHwgYFByZWZpeCBfIHwgYEluZml4IF8gLT4gcHAgZiBcIiggJWEgKVwiIGxvbmdpZGVudF9sb2MgbGkpICopXG4gICAgfCBQZXhwX2NvbnN0YW50IGMgLT4gY29uc3RhbnQgZiBjXG4gICAgfCBQZXhwX3BhY2sgbWUgLT4gcHAgZiBcIihtb2R1bGVAOyVhKVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUGV4cF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYSlAXVwiIChsaXN0IChzaW1wbGVfZXhwciBjdHh0KSB+c2VwOlwiLEA7XCIpIGxcbiAgICB8IFBleHBfY29uc3RyYWludCAoZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWEgOiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfY29lcmNlIChlLCBjdG8xLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYSVhIDo+ICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICAob3B0aW9uIChjb3JlX3R5cGUgY3R4dCkgfmZpcnN0OlwiIDogXCIgfmxhc3Q6XCIgXCIpXG4gICAgICAgICAgY3RvMVxuICAgICAgICAgICgqIG5vIHNlcCBoaW50KikgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICAgIGN0XG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIE5vbmUpIC0+IHBwIGYgXCJgJXNcIiBsXG4gICAgfCBQZXhwX3JlY29yZCAobCwgZW8pIC0+XG4gICAgICAgIGxldCBsb25naWRlbnRfeF9leHByZXNzaW9uIGYgKGxpLCBlKSA9XG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfVxuICAgICAgICAgICAgd2hlbiBsaS50eHQgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPntAOyVhJWFAXUA7fUBdXCIgKCogXCJAWzxob3YyPnslYSVhfUBdXCIgKilcbiAgICAgICAgICAob3B0aW9uIH5sYXN0OlwiIHdpdGhAO1wiIChzaW1wbGVfZXhwciBjdHh0KSlcbiAgICAgICAgICBlb1xuICAgICAgICAgIChsaXN0IGxvbmdpZGVudF94X2V4cHJlc3Npb24gfnNlcDpcIjtAO1wiKVxuICAgICAgICAgIGxcbiAgICB8IFBleHBfYXJyYXkgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MD5AWzwyPlt8JWF8XUBdQF1cIlxuICAgICAgICAgIChsaXN0IChzaW1wbGVfZXhwciAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX3doaWxlIChlMSwgZTIpIC0+XG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID0gXCJAWzwyPndoaWxlQDslYUA7ZG9AOyVhQDtkb25lQF1cIiBpblxuICAgICAgICBwcCBmIGZtdCAoZXhwcmVzc2lvbiBjdHh0KSBlMSAoZXhwcmVzc2lvbiBjdHh0KSBlMlxuICAgIHwgUGV4cF9mb3IgKHMsIGUxLCBlMiwgZGYsIGUzKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgICAgICAgXCJAWzxodjA+QFs8aHYyPkBbPDI+Zm9yICVhID1AOyVhQDslYSVhQDtkb0BdQDslYUBdQDtkb25lQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24gY3R4dCBpblxuICAgICAgICBwcCBmIGZtdCAocGF0dGVybiBjdHh0KSBzIGV4cHJlc3Npb24gZTEgZGlyZWN0aW9uX2ZsYWcgZGYgZXhwcmVzc2lvbiBlMlxuICAgICAgICAgIGV4cHJlc3Npb24gZTNcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiBjdHh0KSBmIHhcblxuYW5kIGF0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGF0dHJpYnV0ZSBjdHh0IGYpIGxcbmFuZCBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGl0ZW1fYXR0cmlidXRlIGN0eHQgZikgbFxuXG5hbmQgYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBpdGVtX2F0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IGYgeCA9XG4gICgqIG5vdGU6IHZhbHVlX2Rlc2NyaXB0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgICAgICAgIGJ1dCB0aGV5J3JlIGFscmVhZHkgcHJpbnRlZCBieSB0aGUgY2FsbGVycyB0aGlzIG1ldGhvZCAqKVxuICBwcCBmIFwiQFs8aG92Mj4lYSVhQF1cIiAoY29yZV90eXBlIGN0eHQpIHgucHZhbF90eXBlXG4gICAgKGZ1biBmIHggLT5cbiAgICAgIGlmIHgucHZhbF9wcmltIDw+IFtdIHRoZW5cbiAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobGlzdCBjb25zdGFudF9zdHJpbmcpIHgucHZhbF9wcmltKVxuICAgIHhcblxuYW5kIGV4dGVuc2lvbiBjdHh0IGYgKHMsIGUpID0gcHAgZiBcIkBbPDI+WyUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgaXRlbV9leHRlbnNpb24gY3R4dCBmIChzLCBlKSA9XG4gIHBwIGYgXCJAWzwyPlslJSUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgcHAgZiBcIkBbPGhvdjI+ZXhjZXB0aW9uQCAlYUBdJWFcIlxuICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICB4LnB0eWV4bl9jb25zdHJ1Y3RvciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXhuX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3R5cGVfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdGZfZGVzYyB3aXRoXG4gIHwgUGN0Zl9pbmhlcml0IGN0IC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlYUBdJWFcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl92YWwgKHMsIG1mLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwgQCAlYSVhJXNAIDpAICVhQF0lYVwiIG11dGFibGVfZmxhZyBtZiB2aXJ0dWFsX2ZsYWcgdmYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9tZXRob2QgKHMsIHBmLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QgJWEgJWElcyA6QDslYUBdJWFcIiBwcml2YXRlX2ZsYWcgcGYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfY29uc3RyYWludCAoY3QxLCBjdDIpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5jb25zdHJhaW50QCAlYUAgPUAgJWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDFcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUGN0Zl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGN0Zl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgY3R4dCBmIHsgcGNzaWdfc2VsZiA9IGN0OyBwY3NpZ19maWVsZHMgPSBsOyBfIH0gPVxuICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5vYmplY3RAWzwxPiVhQF1AICVhQF1AIGVuZEBdXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FueTsgcHR5cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPiAoKVxuICAgICAgfCBjdCAtPiBwcCBmIFwiICglYSlcIiAoY29yZV90eXBlIGN0eHQpIGN0KVxuICAgIGN0XG4gICAgKGxpc3QgKGNsYXNzX3R5cGVfZmllbGQgY3R4dCkgfnNlcDpcIkA7XCIpXG4gICAgbFxuXG4oKiBjYWxsIFtjbGFzc19zaWduYXR1cmVdIGNhbGxlZCBieSBbY2xhc3Nfc2lnbmF0dXJlXSAqKVxuYW5kIGNsYXNzX3R5cGUgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdHlfZGVzYyB3aXRoXG4gIHwgUGN0eV9zaWduYXR1cmUgY3MgLT5cbiAgICAgIGNsYXNzX3NpZ25hdHVyZSBjdHh0IGYgY3M7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgIHBwIGYgXCIlYSVhJWFcIlxuICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpIChhdHRyaWJ1dGVzIGN0eHQpIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9hcnJvdyAobCwgY28sIGNsKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjbykgKGNsYXNzX3R5cGUgY3R4dCkgY2xcbiAgfCBQY3R5X2V4dGVuc2lvbiBlIC0+XG4gICAgICBleHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfb3BlbiAobywgZSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX3R5cGUgY3R4dCkgZVxuXG4oKiBbY2xhc3MgdHlwZSBhID0gb2JqZWN0IGVuZF0gKilcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGwgPVxuICBsZXQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBrd2QgZiB4ID1cbiAgICBsZXQgeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9ID0geCBpblxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0AgPUAgJWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHQgKGNsYXNzX3R5cGUgY3R4dCkgeC5wY2lfZXhwclxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiY2xhc3MgdHlwZVwiKVxuICAgICAgICB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICB4c1xuXG5hbmQgY2xhc3NfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjZl9kZXNjIHdpdGhcbiAgfCBQY2ZfaW5oZXJpdCAob3ZmLCBjZSwgc28pIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlc0AgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgICAgICAoZnVuIGYgc28gLT5cbiAgICAgICAgICBtYXRjaCBzbyB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHMgLT4gcHAgZiBcIkAgYXMgJXNcIiBzLnR4dClcbiAgICAgICAgc28gKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCVzICVhJXMgPUA7JWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kIHZpcnR1YWwgJWEgJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIHZpcnR1YWwgJWElcyA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfbWV0aG9kIChzLCBwZiwgQ2ZrX2NvbmNyZXRlIChvdmYsIGUpKSAtPlxuICAgICAgbGV0IGJpbmQgZSA9XG4gICAgICAgIGJpbmRpbmcgY3R4dCBmXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX3BhdCA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBzO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBlO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QlcyAlYSVhQF0lYVwiIChvdmVycmlkZSBvdmYpIHByaXZhdGVfZmxhZyBwZlxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBTb21lIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJXMgOkA7JWE9QDslYVwiIHMudHh0IChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3BvbHkgKGUsIE5vbmUpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+XG4gICAgICAgICAgICAgIGJpbmQgZVxuICAgICAgICAgIHwgXyAtPiBiaW5kIGUpXG4gICAgICAgIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludCAlYSA9QDslYUBdJWFcIiAoY29yZV90eXBlIGN0eHQpIGN0MSAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgIGN0MiAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgZSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5pdGlhbGl6ZXJAICVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjZl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGNmX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgeyBwY3N0cl9zZWxmID0gcDsgcGNzdHJfZmllbGRzID0gbCB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0JWFAOyVhQF1AO2VuZEBdXCJcbiAgICAoZnVuIGYgcCAtPlxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X2FueSAtPiAoKVxuICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgXyAtPiBwcCBmIFwiICVhXCIgKHBhdHRlcm4gY3R4dCkgcFxuICAgICAgfCBfIC0+IHBwIGYgXCIgKCVhKVwiIChwYXR0ZXJuIGN0eHQpIHApXG4gICAgcFxuICAgIChsaXN0IChjbGFzc19maWVsZCBjdHh0KSlcbiAgICBsXG5cbmFuZCBjbGFzc19leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wY2xfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wY2xfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wY2xfZGVzYyB3aXRoXG4gICAgfCBQY2xfc3RydWN0dXJlIGNzIC0+IGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgY3NcbiAgICB8IFBjbF9mdW4gKGwsIGVvLCBwLCBlKSAtPlxuICAgICAgICBwcCBmIFwiZnVuQCAlYUAgLT5AICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZW8sIHApIChjbGFzc19leHByIGN0eHQpIGVcbiAgICB8IFBjbF9sZXQgKHJmLCBsLCBjZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQCBpbkAgJWFcIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgIHwgUGNsX2FwcGx5IChjZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIigoJWEpQCAlYSlcIlxuICAgICAgICAgICgqIENmOiAjNzIwMCAqKSAoY2xhc3NfZXhwciBjdHh0KVxuICAgICAgICAgIGNlXG4gICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICBsXG4gICAgfCBQY2xfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIiVhJWFcIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBpZiBsIDw+IFtdIHRoZW4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBjbF9jb25zdHJhaW50IChjZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWFAIDpAICVhKVwiIChjbGFzc19leHByIGN0eHQpIGNlIChjbGFzc190eXBlIGN0eHQpIGN0XG4gICAgfCBQY2xfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQY2xfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX2V4cHIgY3R4dCkgZVxuXG5hbmQgbW9kdWxlX3R5cGUgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtdHlfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBtdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3IgKCkgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgfCBQbXR5X2Z1bmN0b3IgKE5hbWVkIChzLCBtdDEpLCBtdDIpIC0+IChcbiAgICAgICAgbWF0Y2ggcy50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCAtPkAgJWFAXVwiIChtb2R1bGVfdHlwZTEgY3R4dCkgbXQxXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDJcbiAgICAgICAgfCBTb21lIG5hbWUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3JAICglc0AgOkAgJWEpQCAtPkAgJWFAXVwiIG5hbWVcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10MSAobW9kdWxlX3R5cGUgY3R4dCkgbXQyKVxuICAgIHwgUG10eV93aXRoIChtdCwgW10pIC0+IG1vZHVsZV90eXBlIGN0eHQgZiBtdFxuICAgIHwgUG10eV93aXRoIChtdCwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAIHdpdGhAICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10XG4gICAgICAgICAgKGxpc3QgKHdpdGhfY29uc3RyYWludCBjdHh0KSB+c2VwOlwiQCBhbmRAIFwiKVxuICAgICAgICAgIGxcbiAgICB8IF8gLT4gbW9kdWxlX3R5cGUxIGN0eHQgZiB4XG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQd2l0aF90eXBlIChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2R1bGUgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGUgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgPUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcbiAgfCBQd2l0aF90eXBlc3Vic3QgKGxpLCAoeyBwdHlwZV9wYXJhbXMgPSBsczsgXyB9IGFzIHRkKSkgLT5cbiAgICAgIGxldCBscyA9IExpc3QubWFwIGZzdCBscyBpblxuICAgICAgcHAgZiBcInR5cGVAICVhICVhIDo9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2RzdWJzdCAobGksIGxpMikgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCAobGksIG10eSkgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgdHlwZSAlYSA6PUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcblxuYW5kIG1vZHVsZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucG10eV9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gbW9kdWxlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfaWRlbnQgbGkgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9hbGlhcyBsaSAtPiBwcCBmIFwiKG1vZHVsZSAlYSlcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBzIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPnNpZ0AgJWFAXUAgZW5kQF1cIiAoKiBcIkBbPGhvdj5zaWdAICVhQCBlbmRAXVwiICopXG4gICAgICAgICAgKGxpc3QgKHNpZ25hdHVyZV9pdGVtIGN0eHQpKVxuICAgICAgICAgIHNcbiAgICAgICAgKCogRklYTUUgd3JvbmcgaW5kZW50YXRpb24qKVxuICAgIHwgUG10eV90eXBlb2YgbWUgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCBvZkAgJWFAXVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG10eV9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAobW9kdWxlX3R5cGUgY3R4dCkgZiB4XG5cbmFuZCBzaWduYXR1cmUgY3R4dCBmIHggPSBsaXN0IH5zZXA6XCJAXFxuXCIgKHNpZ25hdHVyZV9pdGVtIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gY3R4dCBmIHggOiB1bml0ID1cbiAgbWF0Y2ggeC5wc2lnX2Rlc2Mgd2l0aFxuICB8IFBzaWdfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc2lnX3R5cGVzdWJzdCBsIC0+XG4gICAgICAoKiBQc2lnX3R5cGVzdWJzdCBpcyBuZXZlciByZWN1cnNpdmUsIGJ1dCB3ZSBzcGVjaWZ5IFtSZWN1cnNpdmVdIGhlcmUgdG9cbiAgICAgICAgIGF2b2lkIHByaW50aW5nIGEgW25vbnJlY10gZmxhZywgd2hpY2ggd291bGQgYmUgcmVqZWN0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICopXG4gICAgICB0eXBlX2RlZl9saXN0IGN0eHQgZiAoUmVjdXJzaXZlLCBmYWxzZSwgbClcbiAgfCBQc2lnX3ZhbHVlIHZkIC0+XG4gICAgICBsZXQgaW50cm8gPSBpZiB2ZC5wdmFsX3ByaW0gPSBbXSB0aGVuIFwidmFsXCIgZWxzZSBcImV4dGVybmFsXCIgaW5cbiAgICAgIHBwIGYgXCJAWzwyPiVzQCAlYUAgOkAgJWFAXSVhXCIgaW50cm8gcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzaWdfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzaWdfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc2lnX2NsYXNzIGwgLT4gKFxuICAgICAgbGV0IGNsYXNzX2Rlc2NyaXB0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0A7OkA7JWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVzY3JpcHRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZXNjcmlwdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzaWdfbW9kdWxlXG4gICAgICAoe1xuICAgICAgICAgcG1kX3R5cGUgPSB7IHBtdHlfZGVzYyA9IFBtdHlfYWxpYXMgYWxpYXM7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcG1kKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIGxvbmdpZGVudF9sb2MgYWxpYXMgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHVsZSBwbWQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOkAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2RzdWJzdCBwbXMgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOj1AICVhQF0lYVwiIHBtcy5wbXNfbmFtZS50eHQgbG9uZ2lkZW50X2xvY1xuICAgICAgICBwbXMucG1zX21hbmlmZXN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1zLnBtc19hdHRyaWJ1dGVzXG4gIHwgUHNpZ19vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5vcGVuJXNAICVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzaWdfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHR5cGUgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlcyVhQF0lYVwiIHMudHh0XG4gICAgICAgIChmdW4gZiBtZCAtPlxuICAgICAgICAgIG1hdGNoIG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgcHBfcHJpbnRfc3BhY2UgZiAoKTtcbiAgICAgICAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQpXG4gICAgICAgIG1kIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgLT5cbiAgICAgIGxldCBtZCA9XG4gICAgICAgIG1hdGNoIG1kIHdpdGggTm9uZSAtPiBhc3NlcnQgZmFsc2UgKCogYXN0IGludmFyaWFudCAqKSB8IFNvbWUgbXQgLT4gbXRcbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzQCA6PUAgJWFAXSVhXCIgcy50eHQgKG1vZHVsZV90eXBlIGN0eHQpIG1kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX2NsYXNzX3R5cGUgbCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGxcbiAgfCBQc2lnX3JlY21vZHVsZSBkZWNscyAtPlxuICAgICAgbGV0IHJlYyBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgPyhmaXJzdCA9IHRydWUpIGwgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IHBtZCA6OiB0bCAtPlxuICAgICAgICAgICAgaWYgbm90IGZpcnN0IHRoZW5cbiAgICAgICAgICAgICAgcHAgZiBcIkAgQFs8aG92Mj5hbmRAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUxIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmIH5maXJzdDpmYWxzZSB0bFxuICAgICAgaW5cbiAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiBkZWNsc1xuICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHNpZ19leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgbW9kdWxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBtb2RfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtb2RfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYyPnN0cnVjdEA7QFs8MD4lYUBdQDs8MSAtMj5lbmRAXVwiXG4gICAgICAgICAgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIGN0eHQpIH5zZXA6XCJAXFxuXCIpXG4gICAgICAgICAgc1xuICAgIHwgUG1vZF9jb25zdHJhaW50IChtZSwgbXQpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYUAgOkAgJWEpQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUgKG1vZHVsZV90eXBlIGN0eHQpIG10XG4gICAgfCBQbW9kX2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtb2RfZnVuY3RvciAoVW5pdCwgbWUpIC0+IHBwIGYgXCJmdW5jdG9yICgpQDstPkA7JWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKHMsIG10KSwgbWUpIC0+XG4gICAgICAgIHBwIGYgXCJmdW5jdG9yQCAoJXNAIDpAICVhKUA7LT5AOyVhXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfYXBwbHkgKG1lMSwgbWUyKSAtPlxuICAgICAgICBwcCBmIFwiKCVhKSglYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUxIChtb2R1bGVfZXhwciBjdHh0KSBtZTJcbiAgICAgICAgKCogQ2Y6ICM3MjAwICopXG4gICAgfCBQbW9kX3VucGFjayBlIC0+IHBwIGYgXCIodmFsQCAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuXG5hbmQgc3RydWN0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHBheWxvYWQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGUsIGF0dHJzKSB9IF0gLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBTdHIgeCAtPiBzdHJ1Y3R1cmUgY3R4dCBmIHhcbiAgfCBQVHlwIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIGNvcmVfdHlwZSBjdHh0IGYgeFxuICB8IFBTaWcgeCAtPlxuICAgICAgcHAgZiBcIjpAIFwiO1xuICAgICAgc2lnbmF0dXJlIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgTm9uZSkgLT5cbiAgICAgIHBwIGYgXCI/QCBcIjtcbiAgICAgIHBhdHRlcm4gY3R4dCBmIHhcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4O1xuICAgICAgcHAgZiBcIiB3aGVuIFwiO1xuICAgICAgZXhwcmVzc2lvbiBjdHh0IGYgZVxuXG4oKiB0cmFuc2Zvcm0gW2YgPSBmdW4gZyBoIC0+IC4uXSB0byBbZiBnIGggPSAuLi4gXSBjb3VsZCBiZSBpbXByb3ZlZCAqKVxuYW5kIGJpbmRpbmcgY3R4dCBmIHsgcHZiX3BhdCA9IHA7IHB2Yl9leHByID0geDsgXyB9ID1cbiAgKCogLnB2Yl9hdHRyaWJ1dGVzIGhhdmUgYWxyZWFkeSBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciwgI2JpbmRpbmdzICopXG4gIGxldCByZWMgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBmIHggPVxuICAgIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcHAgZiBcIj1AOyVhXCIgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9mdW4gKGxhYmVsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgICBpZiBsYWJlbCA9IE5vbGFiZWwgdGhlblxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAobGFiZWxfZXhwIGN0eHQpIChsYWJlbCwgZW8sIHApIHBwX3ByaW50X3BleHBfZnVuY3Rpb25cbiAgICAgICAgICAgICAgZVxuICAgICAgfCBQZXhwX25ld3R5cGUgKHN0ciwgZSkgLT5cbiAgICAgICAgICBwcCBmIFwiKHR5cGVAICVzKUAgJWFcIiBzdHIudHh0IHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgfCBfIC0+IHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgaW5cbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB0eXZhcnMgaW5cbiAgbGV0IGlzX2Rlc3VnYXJlZF9nYWR0IHAgZSA9XG4gICAgbGV0IGdhZHRfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoYXJnc190eXZhcnMsIHJ0KSB9ICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgU29tZSAocGF0LCBhcmdzX3R5dmFycywgcnQpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyBnYWR0X2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIGdhZHRfZXhwICh0eXZhciA6OiB0eXZhcnMpIGVcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIFNvbWUgKExpc3QucmV2IHR5dmFycywgZSwgY3QpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IGdhZHRfZXhwID0gZ2FkdF9leHAgW10gZSBpblxuICAgIG1hdGNoIChnYWR0X3BhdHRlcm4sIGdhZHRfZXhwKSB3aXRoXG4gICAgfCBTb21lIChwLCBwdF90eXZhcnMsIHB0X2N0KSwgU29tZSAoZV90eXZhcnMsIGUsIGVfY3QpXG4gICAgICB3aGVuIHR5dmFyc19zdHIgcHRfdHl2YXJzID0gdHl2YXJzX3N0ciBlX3R5dmFycyAtPlxuICAgICAgICBsZXQgZXR5ID0gdmFyaWZ5X3R5cGVfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlbiBTb21lIChwLCBwdF90eXZhcnMsIGVfY3QsIGUpIGVsc2UgTm9uZVxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IHtcbiAgICAgcHBhdF9kZXNjID1cbiAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICh7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwKSApO1xuICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgXztcbiAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiAlYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0IChjb3JlX3R5cGUgY3R4dCkgdHlwXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIHwgXyAtPiBwcCBmIFwiJWFAOz1AOyVhXCIgKHBhdHRlcm4gY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGVsc2VcbiAgICBtYXRjaCBpc19kZXN1Z2FyZWRfZ2FkdCBwIHggd2l0aFxuICAgIHwgU29tZSAocCwgW10sIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFNvbWUgKHAsIHR5dmFycywgY3QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiB0eXBlQDslYS5AOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgICAgICAgKGxpc3QgcHBfcHJpbnRfc3RyaW5nIH5zZXA6XCJAO1wiKVxuICAgICAgICAgICh0eXZhcnNfc3RyIHR5dmFycykgKGNvcmVfdHlwZSBjdHh0KSBjdCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cmFpbnQgKHAsIHR5KTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPiAoXG4gICAgICAgICAgICAoKiBzcGVjaWFsIGNhc2UgZm9yIHRoZSBmaXJzdCopXG4gICAgICAgICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICAgICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiJWFAOzpAOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICAgICAgICAgIHR5IChleHByZXNzaW9uIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJWFAOzpAOyVhKUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4KVxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24geFxuICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeClcblxuKCogW2luXSBpcyBub3QgcHJpbnRlZCAqKVxuYW5kIGJpbmRpbmdzIGN0eHQgZiAocmYsIGwpID1cbiAgbGV0IGJpbmRpbmcga3dkIHJmIGYgeCA9XG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYUBdJWFcIiBrd2QgcmVjX2ZsYWcgcmYgKGJpbmRpbmcgY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB2Yl9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gYmluZGluZyBcImxldFwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKGJpbmRpbmcgXCJsZXRcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoYmluZGluZyBcImFuZFwiIE5vbnJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCBiaW5kaW5nX29wIGN0eHQgZiB4ID1cbiAgbWF0Y2ggKHgucGJvcF9wYXQsIHgucGJvcF9leHApIHdpdGhcbiAgfCAoIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQgPSBwdmFyOyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICB7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgZXZhcjsgXyB9O1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgXztcbiAgICAgIH0gKVxuICAgIHdoZW4gcHZhciA9IGV2YXIgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVzQF1cIiB4LnBib3Bfb3AudHh0IGV2YXJcbiAgfCBwYXQsIGV4cCAtPlxuICAgICAgcHAgZiBcIkBbPDI+JXMgJWFAOz1AOyVhQF1cIiB4LnBib3Bfb3AudHh0IChwYXR0ZXJuIGN0eHQpIHBhdFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBleHBcblxuYW5kIHN0cnVjdHVyZV9pdGVtIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wc3RyX2Rlc2Mgd2l0aFxuICB8IFBzdHJfZXZhbCAoZSwgYXR0cnMpIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj47OyVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfdHlwZSAoXywgW10pIC0+IGFzc2VydCBmYWxzZVxuICB8IFBzdHJfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc3RyX3ZhbHVlIChyZiwgbCkgLT5cbiAgICAgICgqIHBwIGYgXCJAWzxob3YyPmxldCAlYSVhQF1cIiAgcmVjX2ZsYWcgcmYgYmluZGluZ3MgbCAqKVxuICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIChiaW5kaW5ncyBjdHh0KSAocmYsIGwpXG4gIHwgUHN0cl90eXBleHQgdGUgLT4gdHlwZV9leHRlbnNpb24gY3R4dCBmIHRlXG4gIHwgUHN0cl9leGNlcHRpb24gZWQgLT4gZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiBlZFxuICB8IFBzdHJfbW9kdWxlIHggLT5cbiAgICAgIGxldCByZWMgbW9kdWxlX2hlbHBlciA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKGFyZ19vcHQsIG1lJyk7IHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIChtYXRjaCBhcmdfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgVW5pdCAtPiBwcCBmIFwiKClcIlxuICAgICAgICAgICAgfCBOYW1lZCAocywgbXQpIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiglczolYSlcIlxuICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCk7XG4gICAgICAgICAgICBtb2R1bGVfaGVscGVyIG1lJ1xuICAgICAgICB8IG1lIC0+IG1lXG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlICVzJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSB4LnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKGZ1biBmIG1lIC0+XG4gICAgICAgICAgbGV0IG1lID0gbW9kdWxlX2hlbHBlciBtZSBpblxuICAgICAgICAgIG1hdGNoIG1lIHdpdGhcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcG1vZF9kZXNjID1cbiAgICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgIChtZScsICh7IHBtdHlfZGVzYyA9IFBtdHlfaWRlbnQgXyB8IFBtdHlfc2lnbmF0dXJlIF87IF8gfSBhcyBtdCkpO1xuICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIgOkA7JWFAOz1AOyVhQDtcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgICAgbWUnXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCIgPUAgJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUpXG4gICAgICAgIHgucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBtYl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5vcGVuJXNAOyVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG9kLnBvcGVuX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICBvZC5wb3Blbl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHN0cl9jbGFzcyBsIC0+IChcbiAgICAgIGxldCBleHRyYWN0X2NsYXNzX2FyZ3MgY2wgPVxuICAgICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGNsX2Rlc2MgPSBQY2xfZnVuIChsLCBlbywgcCwgY2wnKTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIGxvb3AgKChsLCBlbywgcCkgOjogYWNjKSBjbCdcbiAgICAgICAgICB8IGNsIC0+IChMaXN0LnJldiBhY2MsIGNsKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXJncywgY2wgPSBsb29wIFtdIGNsIGluXG4gICAgICAgIGxldCBjb25zdHIsIGNsID1cbiAgICAgICAgICBtYXRjaCBjbCB3aXRoXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2NvbnN0cmFpbnQgKGNsJywgY3QpOyBwY2xfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgKFNvbWUgY3QsIGNsJylcbiAgICAgICAgICB8IF8gLT4gKE5vbmUsIGNsKVxuICAgICAgICBpblxuICAgICAgICAoYXJncywgY29uc3RyLCBjbClcbiAgICAgIGluXG4gICAgICBsZXQgY2xhc3NfY29uc3RyYWludCBmIGN0ID0gcHAgZiBcIjogQFslYUBdIFwiIChjbGFzc190eXBlIGN0eHQpIGN0IGluXG4gICAgICBsZXQgY2xhc3NfZGVjbGFyYXRpb24ga3dkIGZcbiAgICAgICAgICAoeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9IGFzIHgpID1cbiAgICAgICAgbGV0IGFyZ3MsIGNvbnN0ciwgY2wgPSBleHRyYWN0X2NsYXNzX2FyZ3MgeC5wY2lfZXhwciBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMgJWElYT1AOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dFxuICAgICAgICAgIChsaXN0IChsYWJlbF9leHAgY3R4dCkpXG4gICAgICAgICAgYXJncyAob3B0aW9uIGNsYXNzX2NvbnN0cmFpbnQpIGNvbnN0ciAoY2xhc3NfZXhwciBjdHh0KSBjbFxuICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBbIHggXSAtPiBjbGFzc19kZWNsYXJhdGlvbiBcImNsYXNzXCIgZiB4XG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgICAgICAoY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiKVxuICAgICAgICAgICAgeFxuICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICAgICAgeHMpXG4gIHwgUHN0cl9jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHN0cl9wcmltaXRpdmUgdmQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmV4dGVybmFsQCAlYUAgOkAgJWFAXSVhXCIgcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzdHJfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX3JlY21vZHVsZSBkZWNscyAtPiAoXG4gICAgICAoKiAzLjA3ICopXG4gICAgICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1iX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfY29uc3RyYWludCAoZXhwciwgdHlwKSB9IH0gYXMgcG1iIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGFuZEAgJXM6JWFAID1AICVhQF0lYVwiXG4gICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICB8IHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBkZWNscyB3aXRoXG4gICAgICB8ICh7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYilcbiAgICAgICAgOjogbDIgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8aHY+QFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6JWFAID1AICVhQF0lYUAgJWFAXVwiXG4gICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgdHlwIChtb2R1bGVfZXhwciBjdHh0KSBleHByXG4gICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICAgICAgKGZ1biBmIGwyIC0+IExpc3QuaXRlciAoYXV4IGYpIGwyKVxuICAgICAgICAgICAgbDJcbiAgICAgIHwgcG1iIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIHBtYi5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHN0cl9leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgdHlwZV9wYXJhbSBjdHh0IGYgKGN0LCAoYSwgYikpID1cbiAgcHAgZiBcIiVzJXMlYVwiICh0eXBlX3ZhcmlhbmNlIGEpICh0eXBlX2luamVjdGl2aXR5IGIpIChjb3JlX3R5cGUgY3R4dCkgY3RcblxuYW5kIHR5cGVfcGFyYW1zIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBsIC0+IHBwIGYgXCIlYSBcIiAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIgfnNlcDpcIixAO1wiKSBsXG5cbmFuZCB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIGV4cG9ydGVkLCBsKSA9XG4gIGxldCB0eXBlX2RlY2wga3dkIHJmIGYgeCA9XG4gICAgbGV0IGVxID1cbiAgICAgIGlmIHgucHR5cGVfa2luZCA9IFB0eXBlX2Fic3RyYWN0ICYmIHgucHR5cGVfbWFuaWZlc3QgPSBOb25lIHRoZW4gXCJcIlxuICAgICAgZWxzZSBpZiBleHBvcnRlZCB0aGVuIFwiID1cIlxuICAgICAgZWxzZSBcIiA6PVwiXG4gICAgaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMlcyVhQF0lYVwiIGt3ZCBub25yZWNfZmxhZyByZiAodHlwZV9wYXJhbXMgY3R4dClcbiAgICAgIHgucHR5cGVfcGFyYW1zIHgucHR5cGVfbmFtZS50eHQgZXEgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgWyB4IF0gLT4gdHlwZV9kZWNsIFwidHlwZVwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKHR5cGVfZGVjbCBcInR5cGVcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAodHlwZV9kZWNsIFwiYW5kXCIgUmVjdXJzaXZlKSlcbiAgICAgICAgeHNcblxuYW5kIHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0IGYgbGJscyA9XG4gIGxldCB0eXBlX3JlY29yZF9maWVsZCBmIHBsZCA9XG4gICAgcHAgZiBcIkBbPDI+JWElczpAOyVhQDslYUBdXCIgbXV0YWJsZV9mbGFnIHBsZC5wbGRfbXV0YWJsZSBwbGQucGxkX25hbWUudHh0XG4gICAgICAoY29yZV90eXBlIGN0eHQpIHBsZC5wbGRfdHlwZSAoYXR0cmlidXRlcyBjdHh0KSBwbGQucGxkX2F0dHJpYnV0ZXNcbiAgaW5cbiAgcHAgZiBcIntAXFxuJWF9XCIgKGxpc3QgdHlwZV9yZWNvcmRfZmllbGQgfnNlcDpcIjtAXFxuXCIpIGxibHNcblxuYW5kIHR5cGVfZGVjbGFyYXRpb24gY3R4dCBmIHggPVxuICAoKiB0eXBlX2RlY2xhcmF0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgIGJ1dCBpdCdzIGJlZW4gcHJpbnRlZCBieSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kICopXG4gIGxldCBwcml2IGYgPVxuICAgIG1hdGNoIHgucHR5cGVfcHJpdmF0ZSB3aXRoIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcIkA7cHJpdmF0ZVwiXG4gIGluXG4gIGxldCBtYW5pZmVzdCBmID1cbiAgICBtYXRjaCB4LnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeSAtPlxuICAgICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCB0aGVuXG4gICAgICAgICAgcHAgZiBcIiV0QDslYVwiIHByaXYgKGNvcmVfdHlwZSBjdHh0KSB5XG4gICAgICAgIGVsc2UgcHAgZiBcIkA7JWFcIiAoY29yZV90eXBlIGN0eHQpIHlcbiAgaW5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGYgcGNkID1cbiAgICBwcCBmIFwifEA7XCI7XG4gICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAoIHBjZC5wY2RfbmFtZS50eHQsXG4gICAgICAgIHBjZC5wY2RfdmFycyxcbiAgICAgICAgcGNkLnBjZF9hcmdzLFxuICAgICAgICBwY2QucGNkX3JlcyxcbiAgICAgICAgcGNkLnBjZF9hdHRyaWJ1dGVzIClcbiAgaW5cbiAgbGV0IHJlcHIgZiA9XG4gICAgbGV0IGludHJvIGYgPSBpZiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuICgpIGVsc2UgcHAgZiBcIkA7PVwiIGluXG4gICAgbWF0Y2ggeC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgeHMgLT5cbiAgICAgICAgbGV0IHZhcmlhbnRzIGZtdCB4cyA9XG4gICAgICAgICAgaWYgeHMgPSBbXSB0aGVuIHBwIGZtdCBcIiB8XCJcbiAgICAgICAgICBlbHNlIHBwIGZtdCBcIkBcXG4lYVwiIChsaXN0IH5zZXA6XCJAXFxuXCIgY29uc3RydWN0b3JfZGVjbGFyYXRpb24pIHhzXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCIldCV0JWFcIiBpbnRybyBwcml2IHZhcmlhbnRzIHhzXG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoKVxuICAgIHwgUHR5cGVfcmVjb3JkIGwgLT4gcHAgZiBcIiV0JXRAOyVhXCIgaW50cm8gcHJpdiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGxcbiAgICB8IFB0eXBlX29wZW4gLT4gcHAgZiBcIiV0JXRAOy4uXCIgaW50cm8gcHJpdlxuICBpblxuICBsZXQgY29uc3RyYWludHMgZiA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChjdDEsIGN0MiwgXykgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBjb25zdHJhaW50QCAlYUAgPUAgJWFAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIpXG4gICAgICB4LnB0eXBlX2NzdHJzXG4gIGluXG4gIHBwIGYgXCIldCV0JXRcIiBtYW5pZmVzdCByZXByIGNvbnN0cmFpbnRzXG5cbmFuZCB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgeCA9XG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgZiB4ID1cbiAgICBwcCBmIFwiQFxcbnxAOyVhXCIgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KSB4XG4gIGluXG4gIHBwIGYgXCJAWzwyPnR5cGUgJWElYSArPSAlYUAgJWFAXSVhXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIHBwIGYgXCIlYUA7XCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsXCIpIGwpXG4gICAgeC5wdHlleHRfcGFyYW1zIGxvbmdpZGVudF9sb2MgeC5wdHlleHRfcGF0aCBwcml2YXRlX2ZsYWdcbiAgICB4LnB0eWV4dF9wcml2YXRlICgqIENmOiAjNzIwMCAqKVxuICAgIChsaXN0IH5zZXA6XCJcIiBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgeC5wdHlleHRfY29uc3RydWN0b3JzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlleHRfYXR0cmlidXRlc1xuXG5hbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmIChuYW1lLCB2YXJzLCBhcmdzLCByZXMsIGF0dHJzKSA9XG4gIGxldCBuYW1lID0gbWF0Y2ggbmFtZSB3aXRoIFwiOjpcIiAtPiBcIig6OilcIiB8IHMgLT4gcyBpblxuICBsZXQgcHBfdmFycyBmIHZzID1cbiAgICBtYXRjaCB2cyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdnMgLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIHZzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcHAgZiBcIiVzJWFAOyVhXCIgbmFtZVxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIFtdIC0+ICgpXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKSBsXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPiBwcCBmIFwiQDtvZkA7JWFcIiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGwpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBTb21lIHIgLT5cbiAgICAgIHBwIGYgXCIlczpAOyVhJWFAOyVhXCIgbmFtZSBwcF92YXJzIHZhcnNcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiBjb3JlX3R5cGUxIGN0eHQgZiByXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCJcbiAgICAgICAgICAgICAgICAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIilcbiAgICAgICAgICAgICAgICBsIChjb3JlX3R5cGUxIGN0eHQpIHJcbiAgICAgICAgICB8IFBjc3RyX3JlY29yZCBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsIChjb3JlX3R5cGUxIGN0eHQpIHIpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0IGYgeCA9XG4gICgqIENmOiAjNzIwMCAqKVxuICBtYXRjaCB4LnBleHRfa2luZCB3aXRoXG4gIHwgUGV4dF9kZWNsICh2LCBsLCByKSAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAgICh4LnBleHRfbmFtZS50eHQsIHYsIGwsIHIsIHgucGV4dF9hdHRyaWJ1dGVzKVxuICB8IFBleHRfcmViaW5kIGxpIC0+XG4gICAgICBwcCBmIFwiJXNAOz1AOyVhJWFcIiB4LnBleHRfbmFtZS50eHQgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBleHRfYXR0cmlidXRlc1xuXG5hbmQgY2FzZV9saXN0IGN0eHQgZiBsIDogdW5pdCA9XG4gIGxldCBhdXggZiB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9ID1cbiAgICBwcCBmIFwiQDt8IEBbPDI+JWElYUA7LT5AOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwY19saHNcbiAgICAgIChvcHRpb24gKGV4cHJlc3Npb24gY3R4dCkgfmZpcnN0OlwiQDt3aGVuQDtcIilcbiAgICAgIHBjX2d1YXJkXG4gICAgICAoZXhwcmVzc2lvbiAodW5kZXJfcGlwZSBjdHh0KSlcbiAgICAgIHBjX3Joc1xuICBpblxuICBsaXN0IGF1eCBmIGwgfnNlcDpcIlwiXG5cbmFuZCBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCBmIChsLCBlKSA9XG4gIGxldCBzaW1wbGVfbmFtZSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIFNvbWUgbFxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT4gZXhwcmVzc2lvbjIgY3R4dCBmIGUgKCogbGV2ZWwgMiopXG4gIHwgT3B0aW9uYWwgc3RyIC0+XG4gICAgICBpZiBTb21lIHN0ciA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIj8lc1wiIHN0clxuICAgICAgZWxzZSBwcCBmIFwiPyVzOiVhXCIgc3RyIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gIHwgTGFiZWxsZWQgbGJsIC0+XG4gICAgICBpZiBTb21lIGxibCA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIn4lc1wiIGxibFxuICAgICAgZWxzZSBwcCBmIFwifiVzOiVhXCIgbGJsIChzaW1wbGVfZXhwciBjdHh0KSBlXG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnQgZiB4ID1cbiAgbWF0Y2ggeC5wZGlyYV9kZXNjIHdpdGhcbiAgfCBQZGlyX3N0cmluZyBzIC0+IHBwIGYgXCJAICVTXCIgc1xuICB8IFBkaXJfaW50IChuLCBOb25lKSAtPiBwcCBmIFwiQCAlc1wiIG5cbiAgfCBQZGlyX2ludCAobiwgU29tZSBtKSAtPiBwcCBmIFwiQCAlcyVjXCIgbiBtXG4gIHwgUGRpcl9pZGVudCBsaSAtPiBwcCBmIFwiQCAlYVwiIGxvbmdpZGVudCBsaVxuICB8IFBkaXJfYm9vbCBiIC0+IHBwIGYgXCJAICVzXCIgKHN0cmluZ19vZl9ib29sIGIpXG5cbmxldCB0b3BsZXZlbF9waHJhc2UgZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgUHRvcF9kZWYgcyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHQpKSBzXG4gICgqIHBwX29wZW5faHZib3ggZiAwOyAqKVxuICAoKiBwcF9wcmludF9saXN0IHN0cnVjdHVyZV9pdGVtIGYgcyA7ICopXG4gICgqIHBwX2Nsb3NlX2JveCBmICgpOyAqKVxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IE5vbmU7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQF1cIiBwZGlyX25hbWUudHh0XG4gIHwgUHRvcF9kaXIgeyBwZGlyX25hbWU7IHBkaXJfYXJnID0gU29tZSBwZGlyX2FyZzsgXyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj4jJXNAICVhQF1cIiBwZGlyX25hbWUudHh0IGRpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZ1xuXG5sZXQgZXhwcmVzc2lvbiBmIHggPSBwcCBmIFwiQFslYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgeFxuXG5sZXQgc3RyaW5nX29mX2V4cHJlc3Npb24geCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBleHByZXNzaW9uIGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgc3RyaW5nX29mX3N0cnVjdHVyZSB4ID1cbiAgaWdub3JlIChmbHVzaF9zdHJfZm9ybWF0dGVyICgpKTtcbiAgbGV0IGYgPSBzdHJfZm9ybWF0dGVyIGluXG4gIHN0cnVjdHVyZSByZXNldF9jdHh0IGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgdG9wX3BocmFzZSBmIHggPVxuICBwcF9wcmludF9uZXdsaW5lIGYgKCk7XG4gIHRvcGxldmVsX3BocmFzZSBmIHg7XG4gIHBwIGYgXCI7O1wiO1xuICBwcF9wcmludF9uZXdsaW5lIGYgKClcblxubGV0IGNvcmVfdHlwZSA9IGNvcmVfdHlwZSByZXNldF9jdHh0XG5sZXQgcGF0dGVybiA9IHBhdHRlcm4gcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZSA9IHNpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgc3RydWN0dXJlID0gc3RydWN0dXJlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19leHByID0gY2xhc3NfZXhwciByZXNldF9jdHh0XG5sZXQgY2xhc3NfZmllbGQgPSBjbGFzc19maWVsZCByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZSA9IGNsYXNzX3R5cGUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3NpZ25hdHVyZSA9IGNsYXNzX3NpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZV9maWVsZCA9IGNsYXNzX3R5cGVfZmllbGQgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV9leHByID0gbW9kdWxlX2V4cHIgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV90eXBlID0gbW9kdWxlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZV9pdGVtID0gc2lnbmF0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZV9pdGVtID0gc3RydWN0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHR5cGVfZGVjbGFyYXRpb24gPSB0eXBlX2RlY2xhcmF0aW9uIHJlc2V0X2N0eHRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2FwcGx5X3VuaXQgb2YgbW9kdWxlX2V4cHIgKCoqIFtNRTEoKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQdmNfY29uc3RyYWludCBvZiB7XG4gICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM6c3RyaW5nIGxvYyBsaXN0O1xuICAgICAgdHlwOmNvcmVfdHlwZTtcbiAgICAgIH1cbiAgICB8IFB2Y19jb2VyY2lvbiBvZiB7Z3JvdW5kOmNvcmVfdHlwZSBvcHRpb247IGNvZXJjaW9uOmNvcmVfdHlwZSB9XG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9jb25zdHJhaW50OiB2YWx1ZV9jb25zdHJhaW50IG9wdGlvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzM1wiXG5lbmRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nIGxvYyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgKCoqIFtNLihUKV0gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mXG4gICAgICAgIGZ1bmN0aW9uX3BhcmFtIGxpc3QgKiB0eXBlX2NvbnN0cmFpbnQgb3B0aW9uICogZnVuY3Rpb25fYm9keVxuICAgICgqKiBbUGV4cF9mdW5jdGlvbiAoW1AxOyAuLi47IFBuXSwgQywgYm9keSldIHJlcHJlc2VudHMgYW55IGNvbnN0cnVjdFxuICAgICAgICBpbnZvbHZpbmcgW2Z1bl0gb3IgW2Z1bmN0aW9uXSwgaW5jbHVkaW5nOlxuICAgICAgICAtIFtmdW4gUDEgLi4uIFBuIC0+IEVdXG4gICAgICAgICAgd2hlbiBbYm9keSA9IFBmdW5jdGlvbl9ib2R5IEVdXG4gICAgICAgIC0gW2Z1biBQMSAuLi4gUG4gLT4gZnVuY3Rpb24gcDEgLT4gZTEgfCAuLi4gfCBwbSAtPiBlbV1cbiAgICAgICAgICB3aGVuIFtib2R5ID0gUGZ1bmN0aW9uX2Nhc2VzIFsgcDEgLT4gZTE7IC4uLjsgcG0gLT4gZW0gXV1cbiAgICAgICAgW0NdIHJlcHJlc2VudHMgYSB0eXBlIGNvbnN0cmFpbnQgb3IgY29lcmNpb24gcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGVcbiAgICAgICAgYXJyb3csIGUuZy4gW2Z1biBQMSAuLi4gUG4gOiB0eSAtPiAuLi5dIHdoZW4gW0MgPSBTb21lIChQY29uc3RyYWludCB0eSldLlxuICAgICAgICBBIGZ1bmN0aW9uIG11c3QgaGF2ZSBwYXJhbWV0ZXJzLiBbUGV4cF9mdW5jdGlvbiAocGFyYW1zLCBfLCBib2R5KV0gbXVzdFxuICAgICAgICBoYXZlIG5vbi1lbXB0eSBbcGFyYW1zXSBvciBhIFtQZnVuY3Rpb25fY2FzZXMgX10gYm9keS5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBmdW5jdGlvbl9wYXJhbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbV9kZXNjICopID1cbiAgICB8IFBwYXJhbV92YWwgb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuXG4gICAgKCoqIFtQcGFyYW1fdmFsIChsYmwsIGV4cDAsIFApXSByZXByZXNlbnRzIHRoZSBwYXJhbWV0ZXI6XG4gICAgICAgIC0gW1BdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbfmw6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6KFAgPSBFMCldXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgTm90ZTogSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAqKVxuICAgIHwgUHBhcmFtX25ld3R5cGUgb2Ygc3RyaW5nIGxvY1xuICAgICgqKiBbUHBhcmFtX25ld3R5cGUgeF0gcmVwcmVzZW50cyB0aGUgcGFyYW1ldGVyIFsodHlwZSB4KV0uXG4gICAgICAgIFt4XSBjYXJyaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgaWRlbnRpZmllciwgd2hlcmVhcyB0aGUgW3BwYXJhbV9sb2NdXG4gICAgICAgIG9uIHRoZSBlbmNsb3NpbmcgW2Z1bmN0aW9uX3BhcmFtXSBub2RlIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgWyh0eXBlIHgpXVxuICAgICAgICBhcyBhIHdob2xlLlxuXG4gICAgICAgIE11bHRpcGxlIHBhcmFtZXRlcnMgWyh0eXBlIGEgYiBjKV0gYXJlIHJlcHJlc2VudGVkIGFzIG11bHRpcGxlXG4gICAgICAgIFtQcGFyYW1fbmV3dHlwZV0gbm9kZXMsIGxldCdzIHNheTpcblxuICAgICAgICB7WyBbIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBhOyBwcGFyYW1fbG9jID0gbG9jMSB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBiOyBwcGFyYW1fbG9jID0gbG9jMiB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBjOyBwcGFyYW1fbG9jID0gbG9jMyB9O1xuICAgICAgICAgICBdXG4gICAgICAgIF19XG5cbiAgICAgICAgSGVyZSwgdGhlIGZpcnN0IGxvYyBbbG9jMV0gaXMgdGhlIGxvY2F0aW9uIG9mIFsodHlwZSBhIGIgYyldLCBhbmQgdGhlXG4gICAgICAgIHN1YnNlcXVlbnQgbG9jcyBbbG9jMl0gYW5kIFtsb2MzXSBhcmUgdGhlIHNhbWUgYXMgW2xvYzFdLCBleGNlcHQgbWFya2VkIGFzXG4gICAgICAgIGdob3N0IGxvY2F0aW9ucy4gVGhlIGxvY2F0aW9ucyBvbiBbYV0sIFtiXSwgW2NdLCBjb3JyZXNwb25kIHRvIHRoZVxuICAgICAgICB2YXJpYWJsZXMgW2FdLCBbYl0sIGFuZCBbY10gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgICopXG5cbiAgYW5kIGZ1bmN0aW9uX3BhcmFtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbSAqKSA9XG4gICAgeyBwcGFyYW1fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBwYXJhbV9kZXNjIDogZnVuY3Rpb25fcGFyYW1fZGVzYztcbiAgICB9XG5cbiAgYW5kIGZ1bmN0aW9uX2JvZHkgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0aW9uX2JvZHkgKikgPVxuICAgIHwgUGZ1bmN0aW9uX2JvZHkgb2YgZXhwcmVzc2lvblxuICAgIHwgUGZ1bmN0aW9uX2Nhc2VzIG9mIGNhc2UgbGlzdCAqIExvY2F0aW9uLnQgKiBhdHRyaWJ1dGVzXG4gICAgKCoqIEluIFtQZnVuY3Rpb25fY2FzZXMgKF8sIGxvYywgYXR0cnMpXSwgdGhlIGxvY2F0aW9uIGV4dGVuZHMgZnJvbSB0aGVcbiAgICAgICAgc3RhcnQgb2YgdGhlIFtmdW5jdGlvbl0ga2V5d29yZCB0byB0aGUgZW5kIG9mIHRoZSBsYXN0IGNhc2UuIFRoZSBjb21waWxlclxuICAgICAgICB3aWxsIG9ubHkgdXNlIHR5cGVjaGVja2luZy1yZWxhdGVkIGF0dHJpYnV0ZXMgZnJvbSBbYXR0cnNdLCBlLmcuIGVuYWJsaW5nXG4gICAgICAgIG9yIGRpc2FibGluZyBhIHdhcm5pbmcuXG4gICAgKilcbiAgKCoqIFNlZSB0aGUgY29tbWVudCBvbiB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW5jdGlvbn1bUGV4cF9mdW5jdGlvbl19LiAqKVxuXG4gIGFuZCB0eXBlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQY29uc3RyYWludCBvZiBjb3JlX3R5cGVcbiAgICB8IFBjb2VyY2Ugb2YgY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAoKiogU2VlIHRoZSBjb21tZW50IG9uIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bmN0aW9ufVtQZXhwX2Z1bmN0aW9uXX0uICopXG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9hcHBseV91bml0IG9mIG1vZHVsZV9leHByICgqKiBbTUUxKCldICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHZjX2NvbnN0cmFpbnQgb2Yge1xuICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzRcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzRcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMlxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA1LjAyXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCBta19naG9zdF9hdHRyIG5hbWUgPVxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0geyBMb2NhdGlvbi50eHQgPSBuYW1lOyBsb2MgPSBMb2NhdGlvbi5ub25lIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbXTtcbiAgICBhdHRyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gIH1cblxubGV0IHJlYyBjb25jYXRfbGlzdF9saXQgbGVmdCByaWdodCA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIGxldCBvcGVuIEFzdF81MDIuQXN0dHlwZXMgaW5cbiAgbWF0Y2ggKGxlZnQucGV4cF9kZXNjLCByaWdodC5wZXhwX2Rlc2MpIHdpdGhcbiAgfCBfLCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pIC0+IGxlZnRcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pLCBfIC0+IHJpZ2h0XG4gIHwgKCBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgbG9jIH0sXG4gICAgICAgICAgU29tZSAoeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgaGQ7IHRsIF07IF8gfSBhcyBhcmdfZXhwcikgKSxcbiAgICAgIF8gKSAtPlxuICAgICAge1xuICAgICAgICBsZWZ0IHdpdGhcbiAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IGxvYyB9LFxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXJnX2V4cHIgd2l0aFxuICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGhkOyBjb25jYXRfbGlzdF9saXQgdGwgcmlnaHQgXTtcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICB9XG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkludmFsaWQgb2NhbWwucHB4LmNvbnRleHQncyBsb2FkX3BhdGhcIlxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwciA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIGxldCBsb2MgPSBleHByLnBleHBfbG9jIGluXG4gIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX3R1cGxlIFsgdmlzaWJsZTsgaGlkZGVuIF0gLT5cbiAgICAgIGxldCBtaWdyYXRpb25fYXR0ciA9XG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyX25hbWUgPSB7IExvY2F0aW9uLnR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGhcIjsgbG9jIH07XG4gICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgYXR0cl9wYXlsb2FkID1cbiAgICAgICAgICAgIFBTdHIgWyB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGV4cHIsIFtdKSB9IF07XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwcicgPSBjb25jYXRfbGlzdF9saXQgdmlzaWJsZSBoaWRkZW4gaW5cbiAgICAgIHsgZXhwcicgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBtaWdyYXRpb25fYXR0ciA6OiBleHByLnBleHBfYXR0cmlidXRlcyB9XG4gIHwgXyAtPiBleHByXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gKGxpZGVudF9sb2MsIGV4cHIpIC0+XG4gICAgICBtYXRjaCBsaWRlbnRfbG9jLkFzdF81MDIuQXN0dHlwZXMudHh0IHdpdGhcbiAgICAgIHwgTG9uZ2lkZW50LkxpZGVudCBcImxvYWRfcGF0aFwiIC0+XG4gICAgICAgICAgKGxpZGVudF9sb2MsIG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIpXG4gICAgICB8IF8gLT4gKGxpZGVudF9sb2MsIGV4cHIpKVxuICAgIGZpZWxkc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIHBheWxvYWQgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyXG4gICAgICBbXG4gICAgICAgICh7XG4gICAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgICAgUHN0cl9ldmFsXG4gICAgICAgICAgICAgICAoKHsgcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgfSBhcyBleHByKSwgYXR0cmlidXRlcyk7XG4gICAgICAgICB9IGFzIHN0cmkpO1xuICAgICAgXSAtPlxuICAgICAgbGV0IG5ld19maWVsZHMgPSBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgaW5cbiAgICAgIGxldCBuZXdfZXhwciA9IHsgZXhwciB3aXRoIHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChuZXdfZmllbGRzLCBOb25lKSB9IGluXG4gICAgICBQU3RyIFsgeyBzdHJpIHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChuZXdfZXhwciwgYXR0cmlidXRlcykgfSBdXG4gIHwgXyAtPiBwYXlsb2FkXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChwYXJhbXMsIHRjb25zdHJhaW50LCBib2R5KSAtPlxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBQZnVuY3Rpb25fYm9keSBleHByIC0+IChcbiAgICAgICAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUGV4cF9mdW5jdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgKCogV2UgZG9uJ3Qgd2FudCB0aGlzIFtmdW5dIHRvIGJlIG1lcmdlZCB3aXRoIHRoZSBwYXJlbnQgZHVyaW5nXG4gICAgICAgICAgICAgICAgICAgdGhlIHJvdW5kLXRyaXAuIFRoaXMgYXR0cmlidXRlIHNpZ25hbHMgdGhhdCB0aGlzIGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICAgICByZWFsbHkgaXMgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiAqKVxuICAgICAgICAgICAgICAgIGxldCBhdHRyID0gbWtfZ2hvc3RfYXR0ciBcInBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcIiBpblxuICAgICAgICAgICAgICAgIGxldCBleHByID0gY29weV9leHByZXNzaW9uIGV4cHIgaW5cbiAgICAgICAgICAgICAgICB7IGV4cHIgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRyIDo6IGV4cHIucGV4cF9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICAgIHwgXyAtPiBjb3B5X2V4cHJlc3Npb24gZXhwcilcbiAgICAgICAgfCBQZnVuY3Rpb25fY2FzZXMgKGNhc2VzLCBsb2MsIGF0dHJzKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSBjYXNlcyk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gY29weV9sb2NhdGlvbiBsb2M7XG4gICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdHRycztcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIG1hdGNoIHRjb25zdHJhaW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGV4cHJcbiAgICAgICAgfCBTb21lIChQY29uc3RyYWludCBjKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoZXhwciwgY29weV9jb3JlX3R5cGUgYyk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gZXhwci5wZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIHwgU29tZSAoUGNvZXJjZSAoYzEsIGMyKSkgLT5cbiAgICAgICAgICAgIGxldCBjMSA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgYzEgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoZXhwciwgYzEsIGNvcHlfY29yZV90eXBlIGMyKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSBleHByLnBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgIChmdW4gcGFyYW0gZXhwciAtPlxuICAgICAgICAgICAgbWF0Y2ggcGFyYW0gd2l0aFxuICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2Rlc2MgPSBQcGFyYW1fdmFsIChsYmwsIGV4cDAsIHApO1xuICAgICAgICAgICAgIHBwYXJhbV9sb2M7XG4gICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgbGV0IHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAgICAgICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIGxibCxcbiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBleHAwLFxuICAgICAgICAgICAgICAgICAgICAgIGNvcHlfcGF0dGVybiBwLFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHIgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBwcGFyYW1fbG9jO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHwgeyBwcGFyYW1fZGVzYyA9IFBwYXJhbV9uZXd0eXBlIHg7IHBwYXJhbV9sb2MgfSAtPlxuICAgICAgICAgICAgICAgIGxldCBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeCwgZXhwcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gcHBhcmFtX2xvYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIHBhcmFtcyBleHByXG4gICAgICBpblxuICAgICAgZXhwci5wZXhwX2Rlc2NcbiAgICAgICgqIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MCkgKilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLmxldF87IEFzdF81MDIuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50ID1cbiAgICAgIE9wdGlvbi5tYXAgY29weV92YWx1ZV9jb25zdHJhaW50IHB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV92YWx1ZV9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAge1xuICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7XG4gICAgICAgICAgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwO1xuICAgICAgICB9XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9IC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb25cbiAgICAgICAge1xuICAgICAgICAgIGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kO1xuICAgICAgICAgIGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb247XG4gICAgICAgIH1cblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9sb2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyBsb2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MS50eHQpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIG9wZW4gaW4gdHlwZXNcIlxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPVxuICAgICAgKG1hdGNoIGF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLnBweC5jb250ZXh0XCIgLT5cbiAgICAgICAgICBjb3B5X3BheWxvYWQgKG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG4gICAgICB8IF8gLT4gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZCk7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQ7IEFzdF81MDIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDFcbm1vZHVsZSBUbyA9IEFzdF81MDJcblxuKCoqIExvb2sgZm9yIGEgcGFydGljdWxhciBhdHRyaWJ1dGUgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBsaXN0LiBBdHRyaWJ1dGVzIGFyZVxuICAgIHVzZWQgdG8gbWFrZSBjZXJ0YWluIG1pZ3JhdGlvbnMgcm91bmQtdHJpcC4gUmV0dXJucyBbTm9uZV0gaWYgdGhlIHNwZWNpZmllZFxuICAgIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuICopXG5sZXQgZXh0cmFjdF9hdHRyIG5hbWUgKGF0dHJzIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcykgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IChOb25lLCBMaXN0LnJldiBhY2MpXG4gICAgfCB7IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IHsgdHh0OyBfIH07IGF0dHJfcGF5bG9hZDsgXyB9IDo6IHFcbiAgICAgIHdoZW4gdHh0ID0gbmFtZSAtPlxuICAgICAgICAoU29tZSBhdHRyX3BheWxvYWQsIExpc3QucmV2X2FwcGVuZCBhY2MgcSlcbiAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgaW5cbiAgbG9vcCBbXSBhdHRyc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwciA9XG4gIGxldCBvcGVuIEFzdF81MDEuUGFyc2V0cmVlIGluXG4gIGxldCBwYXlsb2FkLCBvdGhlcl9hdHRycyA9XG4gICAgZXh0cmFjdF9hdHRyIFwicHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGhcIiBleHByLnBleHBfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBsZXQgcGV4cF9kZXNjID1cbiAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgbG9jID0gZXhwci5wZXhwX2xvYyB9LCBOb25lKVxuICAgICAgaW5cbiAgICAgIGxldCBoaWRkZW4gPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2M7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgIGxldCB2aXNpYmxlID0gZXhwciBpblxuICAgICAge1xuICAgICAgICBleHByIHdpdGhcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gb3RoZXJfYXR0cnM7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyB2aXNpYmxlOyBoaWRkZW4gXTtcbiAgICAgIH1cbiAgfCBTb21lIChQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGV4cHIsIFtdKTsgXyB9IF0pIC0+IGV4cHJcbiAgfCBTb21lIF8gLT4gaW52YWxpZF9hcmcgXCJJbnZhbGlkIHBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoIHBheWxvYWRcIlxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChsaWRlbnRfbG9jLCBleHByKSAtPlxuICAgICAgbWF0Y2ggbGlkZW50X2xvYy5Bc3RfNTAxLkFzdHR5cGVzLnR4dCB3aXRoXG4gICAgICB8IExvbmdpZGVudC5MaWRlbnQgXCJsb2FkX3BhdGhcIiAtPlxuICAgICAgICAgIChsaWRlbnRfbG9jLCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByKVxuICAgICAgfCBfIC0+IChsaWRlbnRfbG9jLCBleHByKSlcbiAgICBmaWVsZHNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBwYXlsb2FkID1cbiAgbGV0IG9wZW4gQXN0XzUwMS5QYXJzZXRyZWUgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0clxuICAgICAgW1xuICAgICAgICAoe1xuICAgICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICAgIFBzdHJfZXZhbFxuICAgICAgICAgICAgICAgKCh7IHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIH0gYXMgZXhwciksIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgfSBhcyBzdHJpKTtcbiAgICAgIF0gLT5cbiAgICAgIGxldCBuZXdfZmllbGRzID0gbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzIGluXG4gICAgICBsZXQgbmV3X2V4cHIgPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAobmV3X2ZpZWxkcywgTm9uZSkgfSBpblxuICAgICAgUFN0ciBbIHsgc3RyaSB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAobmV3X2V4cHIsIGF0dHJpYnV0ZXMpIH0gXVxuICB8IF8gLT4gcGF5bG9hZFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbGV0IHBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uXG4gICAgICAgICggW10sXG4gICAgICAgICAgTm9uZSxcbiAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXMgKExpc3QubWFwIGNvcHlfY2FzZSB4MCwgbG9jLCBbXSkgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuIChhcmdfbGFiZWwsIG9wdF9kZWZhdWx0LCBwYXQsIGV4cHIpIC0+XG4gICAgICBsZXQgdGFrZV9ib2R5IChlIDogQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbikgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiBjYXNlX2xpc3QgLT5cbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9jYXNlc1xuICAgICAgICAgICAgICAoIExpc3QubWFwIGNvcHlfY2FzZSBjYXNlX2xpc3QsXG4gICAgICAgICAgICAgICAgZS5wZXhwX2xvYyxcbiAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgZS5wZXhwX2F0dHJpYnV0ZXMgKVxuICAgICAgICB8IF8gLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2JvZHkgKGNvcHlfZXhwcmVzc2lvbiBlKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgdGFrZV9hcmd1bWVudHMgYWNjIChlIDogQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbikgPVxuICAgICAgICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgICAgICAgKCogVGhlIGF0dHJpYnV0ZSBsaXN0IGlzIG5vdCBlbXB0eSwgbm9uZSBvZiB0aGVzZSBub2RlcyBjb3VsZCBoYXZlXG4gICAgICAgICAgICAgYmVlbiBjcmVhdGVkIGJ5IHRoZSBkb3dud2FyZCBtaWdyYXRpb24uIEV4Y2VwdCBmb3IgW1BleHBfZnVuXSwgZm9yXG4gICAgICAgICAgICAgd2hpY2ggd2UgYWRkIGEgZ2hvc3QgYXR0cmlidXRlIHRvIGhlbHAgdXMgcm91bmR0cmlwLiAqKVxuICAgICAgICAgIGxldCBfLCBhdHRycyA9XG4gICAgICAgICAgICBleHRyYWN0X2F0dHIgXCJwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXCIgZS5wZXhwX2F0dHJpYnV0ZXNcbiAgICAgICAgICBpblxuICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgTm9uZSxcbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5XG4gICAgICAgICAgICAgIChjb3B5X2V4cHJlc3Npb24geyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfSkgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgYXJlIGxpa2VseSB0byBoYXZlIGJlZW4gc3ludGhldGl6ZWQgZHVyaW5nIHRoZVxuICAgICAgICAgICAgIGRvd253YXJkIG1pZ3JhdGlvbi4gKilcbiAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoYXJnX2xhYmVsLCBvcHRfZGVmYXVsdCwgcGF0LCBleHByKSAtPlxuICAgICAgICAgICAgICB0YWtlX2FyZ3VtZW50c19mdW4gYWNjIGFyZ19sYWJlbCBvcHRfZGVmYXVsdCBwYXQgZXhwclxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh0LCBleHByKSAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGFyYW1fbG9jID0gdC5sb2M7XG4gICAgICAgICAgICAgICAgICBwcGFyYW1fZGVzYyA9IFBwYXJhbV9uZXd0eXBlIHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB0YWtlX2FyZ3VtZW50cyBhY2MgZXhwclxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChleHAsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBUaGVzZSB0d28gZXhwcmVzc2lvbiBhcmUgcmVwcmVzZW50ZWQgdGhlIHNhbWUgb24gNS4xIGJ1dFxuICAgICAgICAgICAgICAgICBkaWZmZXJlbnRseSBvbiA1LjI6XG4gICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICAgbGV0IF8gPSBmdW4geCA6IChfIC0+IGludCkgLT4gZnVuIHkgLT4geCt5XG4gICAgICAgICAgICAgICAgICAgbGV0IF8gPSBmdW4geCAtPiAoKGZ1biB5IC0+IHgreSkgOiBfIC0+IGludClcbiAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgV2Ugbm9ybWFsaXplIHRoZSBzZWNvbmQgaW50byB0aGUgZmlyc3Qgd2hlbiBtaWdyYXRpbmcgdG8gNS4yLFxuICAgICAgICAgICAgICAgICBtYWtpbmcgdGhlIG1pZ3JhdGlvbiA1LjItPjUuMS0+NS4yIG5vdCByb3VuZHRyaXAgYnV0IGhvcGVmdWxseVxuICAgICAgICAgICAgICAgICB3aXRob3V0IGNoYW5nZSBpbiBzZW1hbnRpY3MuICopXG4gICAgICAgICAgICAgIGxldCBjdCA9XG4gICAgICAgICAgICAgICAgU29tZSAoQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0cmFpbnQgKGNvcHlfY29yZV90eXBlIGN0KSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGFjYywgY3QsIHRha2VfYm9keSBleHApXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoZXhwLCBjMSwgYzIpIC0+XG4gICAgICAgICAgICAgICgqIFNhbWUgYXMgYWJvdmUsIG1pZ2h0IG5vdCByb3VuZHRyaXAgYnV0IGhvcGVmdWxseSBPSy4gKilcbiAgICAgICAgICAgICAgbGV0IGMxID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBjMVxuICAgICAgICAgICAgICBhbmQgYzIgPSBjb3B5X2NvcmVfdHlwZSBjMiBpblxuICAgICAgICAgICAgICAoYWNjLCBTb21lIChBc3RfNTAyLlBhcnNldHJlZS5QY29lcmNlIChjMSwgYzIpKSwgdGFrZV9ib2R5IGV4cClcbiAgICAgICAgICB8IF8gLT4gKGFjYywgTm9uZSwgdGFrZV9ib2R5IGUpXG4gICAgICBhbmQgdGFrZV9hcmd1bWVudHNfZnVuIGFjYyBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHIgPVxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBsZXQgcHBhcmFtX2Rlc2MgPVxuICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhcmFtX3ZhbFxuICAgICAgICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIGFyZ19sYWJlbCxcbiAgICAgICAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBvcHRfZGVmYXVsdCxcbiAgICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4gcGF0IClcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIEJlc3QtZWZmb3J0IGxvY2F0aW9uLiAqKVxuICAgICAgICAgIHsgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2xvYyA9IHBhdC5wcGF0X2xvYzsgcHBhcmFtX2Rlc2MgfSA6OiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgdGFrZV9hcmd1bWVudHMgYWNjIGV4cHJcbiAgICAgIGluXG4gICAgICAoKiBUaGUgYXJndW1lbnQgbGlzdCByZXR1cm5lZCBieSBbdGFrZV9hcmd1bWVudHNdIGlzIHJldmVyc2VkICopXG4gICAgICBsZXQgYXJnX2xpc3QsIHR5cGVfY29uc3RyYWludCwgYm9keSA9XG4gICAgICAgIHRha2VfYXJndW1lbnRzX2Z1biBbXSBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHJcbiAgICAgIGluXG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0LnJldiBhcmdfbGlzdCwgdHlwZV9jb25zdHJhaW50LCBib2R5KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMS5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQgPVxuICAgICAgT3B0aW9uLm1hcCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgcHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9IC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID1cbiAgICAgICAgICAgIExpc3QubWFwIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycztcbiAgICAgICAgICB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXA7XG4gICAgICAgIH1cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0gLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb2VyY2lvblxuICAgICAgICB7XG4gICAgICAgICAgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQ7XG4gICAgICAgICAgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbjtcbiAgICAgICAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FsaWFzXG4gICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dCA9IHgxOyBsb2MgPSB4MC5wdHlwX2xvYyB9KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPVxuICAgICAgKG1hdGNoIGF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLnBweC5jb250ZXh0XCIgLT5cbiAgICAgICAgICBjb3B5X3BheWxvYWQgKG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG4gICAgICB8IF8gLT4gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZCk7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCogVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIDQuMTQgYW5kIDUuMCBmcm9tIGEgUGFyc2V0cmVlIHBvaW50IG9mIHZpZXcgYXJlIHRoZSBtYWdpYyBudW1iZXJzICopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuQXN0dHlwZXNcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5QYXJzZXRyZWVcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMlwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAxXG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLmxldF87IEFzdF81MDEuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICBsZXQgbWVyZ2VfbG9jIGxlZnQgcmlnaHQgPVxuICAgIExvY2F0aW9uLlxuICAgICAgeyBsb2Nfc3RhcnQgPSBsZWZ0LmxvY19zdGFydDsgbG9jX2VuZCA9IHJpZ2h0LmxvY19lbmQ7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgaW5cbiAgbGV0IGdob3N0X2xvYyBsb2MgPSB7IGxvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwID1cbiAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgZ2hvc3RfbG9jXG4gICAgICAgIChtZXJnZV9sb2MgcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICBpblxuICAgIHtcbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHBhdCwgdHlwKTtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgfVxuICBpblxuICBsZXQgcHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0IGFuZCBwdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICBsZXQgY29uc3RyYWluX3BhdCBwYXQgdHlwIGV4cHIgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCBpblxuICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByID1cbiAgICBtYXRjaCAocHZiX2NvbnN0cmFpbnQsIHB2Yl9wYXQpIHdpdGhcbiAgICB8ICggU29tZVxuICAgICAgICAgIChQdmNfY29uc3RyYWludFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTtcbiAgICAgICAgICAgICAgdHlwID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiB0aGUgc3VnYXJpbmcgb2YgW2xldCB4OiB1bml2YXJzIC4gdHlwID0gZXhwIF0gd2FzIGRlc3VnYXJlZCB0b1xuICAgICAgICAgICBbbGV0ICh4OnVuaXZhcnMgLiB0eXApID0gZXhwXSBpbiA1LjAgd2hpY2ggZG9lc24ndCBmaXQgdGhlIGNhc2UgYmVsb3cgKilcbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgKCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICAgICAgICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgICAgICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgICAgICAgbGV0IGRlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgICAgICAgICggTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyxcbiAgICAgICAgICAgICAgICAgICAgICBsYmxfbHN0X29wdGlvbiApXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPVxuICAgICAgICAgIG1hdGNoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBnaG9zdF9sb2MgdHlwLnB0eXBfbG9jXG4gICAgICAgICAgfCBfIDo6IF8gLT4gZ2hvc3RfbG9jIHBleHBfbG9jXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBfcG9seSA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwIHdpdGhcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgICAgICAgICAoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyxcbiAgICAgICAgICAgICAgICAgIHZhcmlmeV9jb25zdHJ1Y3RvcnMgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHR5cCApO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgICAgIGdob3N0X2xvY1xuICAgICAgICAgICAgKG1lcmdlX2xvYyBwdmJfcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jXG4gICAgICAgICAgICAgICB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0geyAoZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cF9wb2x5KSB3aXRoIHBwYXRfbG9jIH1cbiAgICAgICAgYW5kIHB2Yl9leHByID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBleHByIHZhciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwciB3aXRoXG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAodmFyLCBleHByKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAocHZiX2V4cHIsIHR5cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAoTGlzdC5yZXYgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzKVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdOyB0eXAgfSksIF8gLT5cbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgU29tZSAoUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KSwgXyAtPlxuICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbiBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBnaG9zdF9sb2MgY29lcmNpb24ucHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHR5cCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29lcmNpb24gd2l0aFxuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoW10sIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cCBpblxuICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHB2Yl9leHByLCBncm91bmQsIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IF8gLT4gKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBsZXQgbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBsb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxID0gY29weV9tb2R1bGVfZXhwciB4MSBpblxuICAgICAgbGV0IHgxID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IGxvYyA9IHsgeDEucG1vZF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID1cbiAgICAgICAgICAgICAgICAgIHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IGxvYyB9O1xuICAgICAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgW107XG4gICAgICAgICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogeDEucG1vZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9XG4gICAgICAgIHwgXyAtPiB4MVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgbGV0IGVtcHR5X3N0cnVjdCA9XG4gICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgZW1wdHlfc3RydWN0KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDEuQXN0dHlwZXMudHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAwLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAxLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAxLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIGxldCBkZXNjID1cbiAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+IFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuICBpblxuICAoKiBNYXRjaCB0aGUgZm9ybSBvZiB0aGUgZXhwciBhbmQgcGF0dGVybiB0byBkZWNpZGUgdGhlIHZhbHVlIG9mXG4gICAgIFtwdmJfY29uc3RyYWludF0uIEFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgUFByaW50ZXIuICopXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdHl2YXJzIGluXG4gIGxldCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHAgZSA9XG4gICAgbGV0IHZhbHVlX3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gYXMgdHlfZXh0KSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGFzc2VydCAobWF0Y2ggcnQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpO1xuICAgICAgICAgIGxldCB0eSA9IG1hdGNoIGFyZ3NfdHl2YXJzIHdpdGggW10gLT4gcnQgfCBfIC0+IHR5X2V4dCBpblxuICAgICAgICAgIGBWYXIgKHBhdCwgYXJnc190eXZhcnMsIHJ0LCB0eSlcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocGF0LCBydCk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYE5vblZhciAocGF0LCBydClcbiAgICAgIHwgXyAtPiBgTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyB2YWx1ZV9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICB2YWx1ZV9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgdmFsdWVfZXhwID0gdmFsdWVfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAodmFsdWVfcGF0dGVybiwgdmFsdWVfZXhwKSB3aXRoXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBTb21lIChlX3R5dmFycywgaW5uZXJfZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlblxuICAgICAgICAgIGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgcHRfdHl2YXJzLCBlX2N0LCBpbm5lcl9lKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogdGhlIGV4cHJlc3Npb24gY29uc3RyYWludCBhbmQgdGhlIHBhdHRlcm4gY29uc3RyYWludCxcbiAgICAgICAgICAgICBkb24ndCBtYXRjaCwgYnV0IHdlIHN0aWxsIGhhdmUgYSBQdHlwX3BvbHkgcGF0dGVybiBjb25zdHJhaW50IHRoYXRcbiAgICAgICAgICAgICBzaG91bGQgYmUgcmVzdWdhcmVkIHRvIGEgdmFsdWUgYmluZGluZyAqKVxuICAgICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIF8gLT5cbiAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYE5vblZhciAocGF0LCBjdCksIF8gLT4gYE5vblZhciAocGF0LCBjdCwgZSlcbiAgICB8IF8gLT4gYE5vbmVcbiAgaW5cbiAgbGV0IHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cCA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIFNvbWVcbiAgICAgIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICAgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSB0eV92YXJzOyB0eXAgfSlcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByLCBwdmJfY29uc3RyYWludCA9XG4gICAgbWF0Y2ggcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwdmJfcGF0IHB2Yl9leHByIHdpdGhcbiAgICB8IGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgdHlfdmFycywgdHlwLCBlKSAtPlxuICAgICAgICAocCwgZSwgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgW10sIGN0LCBleHByKSAtPiAoXG4gICAgICAgICgqIGNoZWNrIGlmIHdlIGFyZSBpbiB0aGUgW2xldCB4IDogdHk/IDo+IGNvZXIgPSBleHByIF0gY2FzZSAqKVxuICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29lcmNlIChleHByLCBnciwgY29lcmNlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBnciBpblxuICAgICAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNlIGluXG4gICAgICAgICAgICBsZXQgcHZiX2NvbnN0cmFpbnQgPVxuICAgICAgICAgICAgICBTb21lIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKHBhdCwgZXhwciwgcHZiX2NvbnN0cmFpbnQpXG4gICAgICAgIHwgXyAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgXywgY3QsIGV4cHIpIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdClcbiAgICB8IGBOb25WYXIgKHAsIHR5cCwgZSkgLT4gKHAsIGUsIHdpdGhfY29uc3RyYWludCBbXSB0eXApXG4gICAgfCBgTm9uZSAtPiAocHZiX3BhdCwgcHZiX2V4cHIsIE5vbmUpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxLCBpc191bml0ID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHIgYWNjIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBfID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IF8gfTtcbiAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IHEgLT5cbiAgICAgICAgICAgICAgICAgIChMaXN0LnJldl9hcHBlbmQgYWNjIHEsIGZhbHNlKVxuICAgICAgICAgICAgICB8IGhkIDo6IHRsIC0+IGV4dHJhY3RfYXR0ciAoaGQgOjogYWNjKSB0bFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMsIGIgPSBleHRyYWN0X2F0dHIgW10geDEucG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICAgICAoeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9LCBiKVxuICAgICAgICB8IF8gLT4gKHgxLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBpZiBpc191bml0IHRoZW4gQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICAgICAgZWxzZVxuICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDAuQXN0dHlwZXMudHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJtb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNTAwLlBhcnNldHJlZS4lcyAtPiBBc3RfNDE0LlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF80MTQuUGFyc2V0cmVlLiVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgKFtdLCBQKVxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICBDICh0eXBlIGEgYikgUCAgIFNvbWUgKFthOyBiXSwgUClcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgOj0gIC4uLiAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZCAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxNC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+IChcbiAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgICAgIHwgaGQgOjogXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJ0eXBlIHBhcmFtZXRlcnMgaW4gZXh0ZW5zaW9uIGNvbnN0cnVjdG9yc1wiKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcGNkX3ZhcnMgd2l0aFxuICB8IFtdIC0+XG4gICAgICB7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgICAgIH1cbiAgfCBoZCA6OiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJwY2RfdmFycyBpbiBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbnNcIlxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTQuQXN0dHlwZXMudHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTQuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKFtdLCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycyA9IFtdO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjlcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChtYXRjaCB4MCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgfCB0eSA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgdHkuQXN0XzQxMy5Bc3R0eXBlcy5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJleGlzdGVudGlhbHMgaW4gcGF0dGVybi1tYXRjaGluZ1wiKTtcbiAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHgxKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgXCJtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvY1xuICAgICAgICBcImRlc3RydWN0aXZlIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jXG4gICAgICAgIFwibG9jYWwgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gKFtdLCBjb3B5X3BhdHRlcm4geCkpIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyN1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyN1wiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBfLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgTG9jYXRpb24ubm9uZSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI2XCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTBcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2NcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFub255bW91cyBsZXQgbW9kdWxlXCJcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvY1xuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFueW55bW91cyB1bnBhY2tcIiB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBMb2NhdGlvbi50IGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtYl9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgYmluZGluZ1wiKVxuICAgICAgICBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+XG4gICAgc3RyaW5nIEFzdF80MDkuQXN0dHlwZXMubG9jICogQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgb3B0aW9uID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+ICh7IGxvYyA9IExvY2F0aW9uLm5vbmU7IHR4dCA9IFwiKlwiIH0sIE5vbmUpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICggY29weV9sb2MgKGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIHggLT4geCkgeDAsXG4gICAgICAgIFNvbWUgKGNvcHlfbW9kdWxlX3R5cGUgeDEpIClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1kX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gVGh1IE1hciAyMSAwOTo1MDo0MiBHTVQgMjAxOVxuICAgT0NhbWwgd2FzOlxuICAgY29tbWl0IDU1YzliYTQ2NjM2MmYzMDNlYjRkNWVkNTExZjZmZGExNDI4NzkxMzcgKEhFQUQgLT4gNC4wOCwgb3JpZ2luLzQuMDgpXG4gICAgIEF1dGhvcjogTmljb2zDoXMgT2plZGEgQsOkciA8bi5vamUuYmFyQGdtYWlsLmNvbT5cbiAgICAgRGF0ZTogICBUdWUgTWFyIDE5IDA4OjExOjAyIDIwMTkgKzAxMDBcblxuICAgICAgICAgTWVyZ2UgcHVsbCByZXF1ZXN0ICM4NTIxIGZyb20gbm9qYi9maXhfdW5peF90ZXN0c180MDhcblxuICAgICAgICAgQWN0dWFsbHkgcnVuIGFsbCBsaWItdW5peCB0ZXN0cyBbNC4wOF1cbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA5LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA5LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA4LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDguUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA4LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOC5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDguQXN0dHlwZXMudHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gV2VkIEFwciAxOCAxMDozMzoyOSBCU1QgMjAxOFxuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgYzBiZDZhMjdlMTM4OTExNTYwZjQzZGM3NWQ1ZmRlMmFkZTRkNmNmZSAoSEVBRCwgdGFnOiA0LjA3LjArYmV0YTIpXG4gICAgIEF1dGhvcjogRGFtaWVuIERvbGlnZXogPGRhbWllbi5kb2xpZ2V6QGlucmlhLmZyPlxuICAgICBEYXRlOiAgIFR1ZSBBcHIgMTAgMTQ6NTA6NDggMjAxOCArMDIwMFxuXG4gICAgICAgICBjaGFuZ2UgVkVSU0lPTiBmb3IgNC4wNy4wK2JldGEyXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIzXCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDhcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9sb2MgPSBfO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgICggcGRpcl9uYW1lLkxvY2F0aW9uLnR4dCxcbiAgICAgICAgICBtYXRjaCBwZGlyX2FyZyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IGFyZyApXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IF9wZGlyYV9sb2MgfSAtPlxuICBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2NcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZCxcbiAgICAgICAgICAgICAgY29weV9leHByZXNzaW9uIHgxIClcbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB7IGxldF87IGFuZHMgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbGV0Xy5wYm9wX29wLmxvYyBcImxldCBvcGVyYXRvcnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcHJmX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MSxcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwb2ZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX2xvYyA9IF87XG4gICAgIH0gLT5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWUsIGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPVxuICAgICAgICAgICAgICAgIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24geDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBsZXQgeDBfbG9jID1cbiAgICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgICB8IFtdIC0+IExvY2F0aW9uLm5vbmVcbiAgICAgICAgfCB7IEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYzsgXyB9IDo6IF8gLT4gcHR5cGVfbG9jXG4gICAgICBpblxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwX2xvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAucG1zX2xvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiBoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG4oKiBhbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICBGcm9tLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuICAgZnVuXG4gICAgIHsgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBwdHlleG5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuICAgICAgLT5cbiAgICAge1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSAoY29weV9sb2NhdGlvbiBwdHlleG5fbG9jKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgKGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcylcbiAgICAgfSopXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX25hbWUgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi50eHQgPSB4MDsgTG9jYXRpb24ubG9jID0gTG9jYXRpb24ubm9uZSB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2FyZyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb25cbiAgICA9XG4gIGxldCB3cmFwIHBkaXJhX2Rlc2MgPVxuICAgIFNvbWUgeyBUby5QYXJzZXRyZWUucGRpcmFfZGVzYzsgVG8uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IExvY2F0aW9uLm5vbmUgfVxuICBpblxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBOb25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MCkgfD4gd3JhcFxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9ib29sIHgyLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4Myk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID0gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4Mik7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID0gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDA7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCB4MTtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQpO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBwb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc3RyX2ZpZWxkc1xuICBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZClcbiAgICAgICAgICAgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzaWdfZmllbGRzXG4gIGluXG5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiBfIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IHB0eWV4dF9wYXRoLkxvY2F0aW9uLmxvYztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIE1vbiBPY3QgIDIgMTE6MjU6NTcgQ0VTVCAyMDE3XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCA2NTk0MGEyYzZiZTQzYzQyZjc1YzZjNmIyNTU5NzRmN2U2ZGUwM2NhIChIRUFEIC0+IDQuMDYsIG9yaWdpbi80LjA2KVxuICAgICBBdXRob3I6IENocmlzdG9waGUgUmFmZmFsbGkgPGNocmlzdG9waGVAcmFmZmFsbGkuZXU+XG4gICAgIERhdGU6ICAgU3VuIE9jdCAxIDE4OjI3OjA3IDIwMTcgKzAyMDBcblxuICAgICAgICAgZml4ZWQgcG9zaXRpb24gb2YgbGFzdCBvcHRpb25hbCBsYXN0IHNlbWljb2x1bW4gaW4gc2VxdWVuY2UgKCMxMzg3KVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyMlwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNlwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgTG9jYXRpb24ubm9uZSBcImluaGVyaXRhbmNlIGluIG9iamVjdCB0eXBlXCIpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAudHh0LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIGV4cHJlc3Npb25cIlxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBfOyBfIH0sIHgwKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgeDA7IGxvYyB9LCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSB4MDsgbG9jIH0sIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyBsb2M7IF8gfSwgX3gwKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgbG9jOyBfIH0sIF94MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgdHlwZVwiXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIHsgdHh0ID0gY29weV9sYWJlbCB4MDsgbG9jID0gTG9jYXRpb24ubm9uZSB9LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lLFxuICAgICAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MS5Gcm9tLkFzdHR5cGVzLnR4dClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbm9sb2MgeCA9IHsgTG9jYXRpb24udHh0ID0geDsgbG9jID0gTG9jYXRpb24ubm9uZSB9XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBub2xvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKG5vbG9jIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAobm9sb2MgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiBub2xvYyB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gbm9sb2MgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDRcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJsb2NhbCBleGNlcHRpb25zXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgb3BlbiBpbiBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBsYWIgbXVzdCBzdGFydCB3aXRoICc/Jy5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcblxuICAgIE5vdGU6IHdoZW4gdXNlZCB1bmRlciBQc3RyX3ByaW1pdGl2ZSwgcHJpbSBjYW5ub3QgYmUgZW1wdHlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb3JlX3R5cGUgbGlzdDtcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUpXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChhcmdzID0gW10sIHJlcyA9IFNvbWUgVDApXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29yZV90eXBlIGxpc3QgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIGludFxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxNVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDJcblxubGV0IGluamVjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIGQgPVxuICBsZXQgb3BlbiBUbyBpblxuICBsZXQgb3BlbiBQYXJzZXRyZWUgaW5cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgXyAtPlxuICAgICAgbGV0IGxvYyA9IHsgZC5wdHlwX2xvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHR4dCA9IExvbmdpZGVudC5MZG90IChMb25naWRlbnQuTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIikgaW5cbiAgICAgIGxldCBpZGVudCA9IHsgTG9jYXRpb24udHh0OyBsb2MgfSBpblxuICAgICAge1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWRlbnQsIFsgZCBdKTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuICB8IF8gLT4gZFxuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjAzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ1bnJlYWNoYWJsZSBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgbG9jIHgwLCBjb3B5X2NvbnN0YW50IGxvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIGxvYyA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJzaWduYXR1cmVzIGluIGF0dHJpYnV0ZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoZnJvbV9sb2MgcGV4dF9uYW1lKSBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKGZyb21fbG9jIHBjZF9uYW1lKSBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlIGxpc3QgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+IExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiaW5saW5lIHJlY29yZHNcIlxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gXCJcIlxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4geDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFwiP1wiIF4geDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IGxvYyA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLkFzdHR5cGVzLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdsJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQzMiAoSW50MzIub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdMJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQ2NCAoSW50NjQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICduJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgKE5hdGl2ZWludC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGludGVnZXIgbGl0ZXJhbHNcIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPiBUby5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGZsb2F0IGxpdGVyYWxzXCIpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHJlY2ZsYWcgdHlwZXMgPVxuICBtYXRjaCAocmVjZmxhZywgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzKSB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzIC0+IHR5cGVzXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIFtdIC0+IFtdXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHggOjogeHMgLT5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiX25vbmVfXCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gLTE7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICAoeyBUby5Bc3R0eXBlcy50eHQgPSBcIm5vbnJlY1wiOyBsb2MgfSwgVG8uUGFyc2V0cmVlLlBTdHIgW10pXG4gICAgICAgIDo6IHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIF94MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDJcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB0eXAgPVxuICBsZXQgb3BlbiBGcm9tIGluXG4gIGxldCBvcGVuIExvbmdpZGVudCBpblxuICBtYXRjaCAobGFiZWwsIHR5cC5QYXJzZXRyZWUucHR5cF9kZXNjKSB3aXRoXG4gIHwgKCBUby5Bc3R0eXBlcy5PcHRpb25hbCBfLFxuICAgICAgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKHsgTG9jYXRpb24udHh0ID0gTGRvdCAoTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIik7IF8gfSwgWyBkIF0pICkgLT5cbiAgICAgIGRcbiAgfCBfIC0+IHR5cFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHBjZF9hcmdzKTtcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuIGZ1biB4IC0+XG4gIGlmIHggPD4gXCJcIiB0aGVuXG4gICAgaWYgeC5bMF0gPSAnPycgdGhlblxuICAgICAgVG8uQXN0dHlwZXMuT3B0aW9uYWwgKFN0cmluZy5zdWIgeCAxIChTdHJpbmcubGVuZ3RoIHggLSAxKSlcbiAgICBlbHNlIFRvLkFzdHR5cGVzLkxhYmVsbGVkIHhcbiAgZWxzZSBUby5Bc3R0eXBlcy5Ob2xhYmVsXG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5Bc3R0eXBlcy5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50MzIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHgwLCBTb21lICdsJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDY0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB4MCwgU29tZSAnTCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB4MCwgU29tZSAnbicpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHR5cGVzID1cbiAgbGV0IGlzX25vbnJlYyAoYXR0ciwgXykgPSBhdHRyLkxvY2F0aW9uLnR4dCA9IFwibm9ucmVjXCIgaW5cbiAgbWF0Y2ggTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzIHdpdGhcbiAgfCB4IDo6IHhzIHdoZW4gTGlzdC5leGlzdHMgaXNfbm9ucmVjIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgLT5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoaXNfbm9ucmVjIHgpKSB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4cylcbiAgfCB0eXBlcyAtPiAoVG8uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcylcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2ludCAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsImxldCBpc19rZXl3b3JkID0gZnVuY3Rpb25cbiAgfCBcImFuZFwiIC0+IHRydWVcbiAgfCBcImFzXCIgLT4gdHJ1ZVxuICB8IFwiYXNzZXJ0XCIgLT4gdHJ1ZVxuICB8IFwiYmVnaW5cIiAtPiB0cnVlXG4gIHwgXCJjbGFzc1wiIC0+IHRydWVcbiAgfCBcImNvbnN0cmFpbnRcIiAtPiB0cnVlXG4gIHwgXCJkb1wiIC0+IHRydWVcbiAgfCBcImRvbmVcIiAtPiB0cnVlXG4gIHwgXCJkb3dudG9cIiAtPiB0cnVlXG4gIHwgXCJlbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZW5kXCIgLT4gdHJ1ZVxuICB8IFwiZXhjZXB0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZXh0ZXJuYWxcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IHRydWVcbiAgfCBcImZvclwiIC0+IHRydWVcbiAgfCBcImZ1blwiIC0+IHRydWVcbiAgfCBcImZ1bmN0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3RvclwiIC0+IHRydWVcbiAgfCBcImlmXCIgLT4gdHJ1ZVxuICB8IFwiaW5cIiAtPiB0cnVlXG4gIHwgXCJpbmNsdWRlXCIgLT4gdHJ1ZVxuICB8IFwiaW5oZXJpdFwiIC0+IHRydWVcbiAgfCBcImluaXRpYWxpemVyXCIgLT4gdHJ1ZVxuICB8IFwibGF6eVwiIC0+IHRydWVcbiAgfCBcImxldFwiIC0+IHRydWVcbiAgfCBcIm1hdGNoXCIgLT4gdHJ1ZVxuICB8IFwibWV0aG9kXCIgLT4gdHJ1ZVxuICB8IFwibW9kdWxlXCIgLT4gdHJ1ZVxuICB8IFwibXV0YWJsZVwiIC0+IHRydWVcbiAgfCBcIm5ld1wiIC0+IHRydWVcbiAgfCBcIm5vbnJlY1wiIC0+IHRydWVcbiAgfCBcIm9iamVjdFwiIC0+IHRydWVcbiAgfCBcIm9mXCIgLT4gdHJ1ZVxuICB8IFwib3BlblwiIC0+IHRydWVcbiAgfCBcIm9yXCIgLT4gdHJ1ZVxuICAoKiB8IFwicGFyc2VyXCIgLT4gdHJ1ZSAqKVxuICB8IFwicHJpdmF0ZVwiIC0+IHRydWVcbiAgfCBcInJlY1wiIC0+IHRydWVcbiAgfCBcInNpZ1wiIC0+IHRydWVcbiAgfCBcInN0cnVjdFwiIC0+IHRydWVcbiAgfCBcInRoZW5cIiAtPiB0cnVlXG4gIHwgXCJ0b1wiIC0+IHRydWVcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJ0cnlcIiAtPiB0cnVlXG4gIHwgXCJ0eXBlXCIgLT4gdHJ1ZVxuICB8IFwidmFsXCIgLT4gdHJ1ZVxuICB8IFwidmlydHVhbFwiIC0+IHRydWVcbiAgfCBcIndoZW5cIiAtPiB0cnVlXG4gIHwgXCJ3aGlsZVwiIC0+IHRydWVcbiAgfCBcIndpdGhcIiAtPiB0cnVlXG4gIHwgXCJsb3JcIiAtPiB0cnVlXG4gIHwgXCJseG9yXCIgLT4gdHJ1ZVxuICB8IFwibW9kXCIgLT4gdHJ1ZVxuICB8IFwibGFuZFwiIC0+IHRydWVcbiAgfCBcImxzbFwiIC0+IHRydWVcbiAgfCBcImxzclwiIC0+IHRydWVcbiAgfCBcImFzclwiIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnNcbiAgICBvcGVuIFByaW50ZiAkKilcblxuKCogQ29weSBvZiBPQ2FtbCBwYXJzZXRyZWVzICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uIChmdW4gc3VmZml4IF8gLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBBc3RfJXMgPSBBc3RfJXNcXG5cIiBzdWZmaXggc3VmZml4KVxuKilcbm1vZHVsZSBBc3RfNDAyID0gQXN0XzQwMlxubW9kdWxlIEFzdF80MDMgPSBBc3RfNDAzXG5tb2R1bGUgQXN0XzQwNCA9IEFzdF80MDRcbm1vZHVsZSBBc3RfNDA1ID0gQXN0XzQwNVxubW9kdWxlIEFzdF80MDYgPSBBc3RfNDA2XG5tb2R1bGUgQXN0XzQwNyA9IEFzdF80MDdcbm1vZHVsZSBBc3RfNDA4ID0gQXN0XzQwOFxubW9kdWxlIEFzdF80MDkgPSBBc3RfNDA5XG5tb2R1bGUgQXN0XzQxMCA9IEFzdF80MTBcbm1vZHVsZSBBc3RfNDExID0gQXN0XzQxMVxubW9kdWxlIEFzdF80MTIgPSBBc3RfNDEyXG5tb2R1bGUgQXN0XzQxMyA9IEFzdF80MTNcbm1vZHVsZSBBc3RfNDE0ID0gQXN0XzQxNFxubW9kdWxlIEFzdF81MDAgPSBBc3RfNTAwXG5tb2R1bGUgQXN0XzUwMSA9IEFzdF81MDFcbm1vZHVsZSBBc3RfNTAyID0gQXN0XzUwMlxuKCokKilcblxuKCogTWFudWFsIG1pZ3JhdGlvbiBiZXR3ZWVuIHZlcnNpb25zICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biB4IHkgLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBNaWdyYXRlXyVzXyVzID0gTWlncmF0ZV8lc18lc1xcblwiIHggeSB4IHk7XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB5IHggeSB4KVxuKilcbm1vZHVsZSBNaWdyYXRlXzQwMl80MDMgPSBNaWdyYXRlXzQwMl80MDNcbm1vZHVsZSBNaWdyYXRlXzQwM180MDIgPSBNaWdyYXRlXzQwM180MDJcbm1vZHVsZSBNaWdyYXRlXzQwM180MDQgPSBNaWdyYXRlXzQwM180MDRcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDMgPSBNaWdyYXRlXzQwNF80MDNcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDUgPSBNaWdyYXRlXzQwNF80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDQgPSBNaWdyYXRlXzQwNV80MDRcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDYgPSBNaWdyYXRlXzQwNV80MDZcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDUgPSBNaWdyYXRlXzQwNl80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDcgPSBNaWdyYXRlXzQwNl80MDdcbm1vZHVsZSBNaWdyYXRlXzQwN180MDYgPSBNaWdyYXRlXzQwN180MDZcbm1vZHVsZSBNaWdyYXRlXzQwN180MDggPSBNaWdyYXRlXzQwN180MDhcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDcgPSBNaWdyYXRlXzQwOF80MDdcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDkgPSBNaWdyYXRlXzQwOF80MDlcbm1vZHVsZSBNaWdyYXRlXzQwOV80MDggPSBNaWdyYXRlXzQwOV80MDhcbm1vZHVsZSBNaWdyYXRlXzQwOV80MTAgPSBNaWdyYXRlXzQwOV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMF80MDkgPSBNaWdyYXRlXzQxMF80MDlcbm1vZHVsZSBNaWdyYXRlXzQxMF80MTEgPSBNaWdyYXRlXzQxMF80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTAgPSBNaWdyYXRlXzQxMV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTIgPSBNaWdyYXRlXzQxMV80MTJcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTEgPSBNaWdyYXRlXzQxMl80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTMgPSBNaWdyYXRlXzQxMl80MTNcbm1vZHVsZSBNaWdyYXRlXzQxM180MTIgPSBNaWdyYXRlXzQxM180MTJcbm1vZHVsZSBNaWdyYXRlXzQxM180MTQgPSBNaWdyYXRlXzQxM180MTRcbm1vZHVsZSBNaWdyYXRlXzQxNF80MTMgPSBNaWdyYXRlXzQxNF80MTNcbm1vZHVsZSBNaWdyYXRlXzQxNF81MDAgPSBNaWdyYXRlXzQxNF81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMF80MTQgPSBNaWdyYXRlXzUwMF80MTRcbm1vZHVsZSBNaWdyYXRlXzUwMF81MDEgPSBNaWdyYXRlXzUwMF81MDFcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDAgPSBNaWdyYXRlXzUwMV81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDIgPSBNaWdyYXRlXzUwMV81MDJcbm1vZHVsZSBNaWdyYXRlXzUwMl81MDEgPSBNaWdyYXRlXzUwMl81MDFcbigqJCopXG5cbigqIENvbXBpbGVyIG1vZHVsZXMgKilcbm1vZHVsZSBBc3RfbWV0YWRhdGEgPSBBc3RfbWV0YWRhdGFcbm1vZHVsZSBDb25maWcgPSBDb25maWdcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBQYXJzZSA9IFBhcnNlXG5tb2R1bGUgUHByaW50YXN0ID0gUHByaW50YXN0XG5cbmxldCBpbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKSA9XG4gICgqSUZfQVRfTEVBU1QgNDA4IE9jYW1sX2NvbW1vbi5Db21wbWlzYy5yZWFkX2NsZmxhZ3NfZnJvbV9lbnYgKCkgKilcbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ICgpICopXG4oKiogQWRqdXN0IHRoZSByZXBvcnRpbmcgc3R5bGUgb2YgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBPQ0FNTF9DT0xPUiBhbmQgT0NBTUxfRVJST1JfU1RZTEUuICopXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRPRE86IHJlbW92ZSB0aGlzIG9wZW4gKilcbm9wZW4gU3RkbGliMFxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxub3BlbiBBc3RsaWIuQXN0XzUwMFxuXG5bQEBAd2FybmluZyBcIi05XCJdXG5cbm9wZW4gQXN0dHlwZXNcbm9wZW4gUGFyc2V0cmVlXG5cbnR5cGUgJ2Egd2l0aF9sb2MgPSAnYSBMb2NhdGlvbi5sb2NcbnR5cGUgbG9jID0gTG9jYXRpb24udFxudHlwZSBsaWQgPSBMb25naWRlbnQudCB3aXRoX2xvY1xudHlwZSBzdHIgPSBzdHJpbmcgd2l0aF9sb2NcbnR5cGUgc3RyX29wdCA9IHN0cmluZyBvcHRpb24gd2l0aF9sb2NcbnR5cGUgYXR0cnMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5sZXQgZGVmYXVsdF9sb2MgPSByZWYgTG9jYXRpb24ubm9uZVxuXG50eXBlIHJlZl9hbmRfdmFsdWUgPSBSIDogJ2EgcmVmICogJ2EgLT4gcmVmX2FuZF92YWx1ZVxuXG5sZXQgcHJvdGVjdF9yZWYgPVxuICBsZXQgc2V0X3JlZiAoUiAociwgdikpID0gciA6PSB2IGluXG4gIGZ1biByZWYgZiAtPlxuICAgIGxldCAoUiAociwgXykpID0gcmVmIGluXG4gICAgbGV0IGJhY2t1cCA9IFIgKHIsICFyKSBpblxuICAgIHNldF9yZWYgcmVmO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgICBzZXRfcmVmIGJhY2t1cDtcbiAgICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfZGVmYXVsdF9sb2MgbCBmID0gcHJvdGVjdF9yZWYgKFIgKGRlZmF1bHRfbG9jLCBsKSkgZlxuXG5tb2R1bGUgQ29uc3QgPSBzdHJ1Y3RcbiAgbGV0IGludGVnZXIgP3N1ZmZpeCBpID0gUGNvbnN0X2ludGVnZXIgKGksIHN1ZmZpeClcbiAgbGV0IGludCA/c3VmZml4IGkgPSBpbnRlZ2VyID9zdWZmaXggKEludC50b19zdHJpbmcgaSlcbiAgbGV0IGludDMyID8oc3VmZml4ID0gJ2wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQzMi50b19zdHJpbmcgaSlcbiAgbGV0IGludDY0ID8oc3VmZml4ID0gJ0wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQ2NC50b19zdHJpbmcgaSlcbiAgbGV0IG5hdGl2ZWludCA/KHN1ZmZpeCA9ICduJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxuICBsZXQgZmxvYXQgP3N1ZmZpeCBmID0gUGNvbnN0X2Zsb2F0IChmLCBzdWZmaXgpXG4gIGxldCBjaGFyIGMgPSBQY29uc3RfY2hhciBjXG5cbiAgbGV0IHN0cmluZyA/cXVvdGF0aW9uX2RlbGltaXRlciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgcyA9XG4gICAgUGNvbnN0X3N0cmluZyAocywgbG9jLCBxdW90YXRpb25fZGVsaW1pdGVyKVxuZW5kXG5cbm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgbmFtZSBwYXlsb2FkID1cbiAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgVHlwID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2MgPSBkO1xuICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGQucHR5cF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHR5cF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdmFyIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF90dXBsZSBhKVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NvbnN0ciAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX29iamVjdCAoYSwgYikpXG4gIGxldCBjbGFzc18gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfY2xhc3MgKGEsIGIpKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfYWxpYXMgKGEsIGIpKVxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9wb2x5IChhLCBiKSlcbiAgbGV0IHBhY2thZ2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcGFja2FnZSAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2V4dGVuc2lvbiBhKVxuXG4gIGxldCBmb3JjZV9wb2x5IHQgPVxuICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gdCB8IF8gLT4gcG9seSB+bG9jOnQucHR5cF9sb2MgW10gdFxuICAoKiAtPiBnaG9zdD8gKilcblxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gICAgaW5cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuZW5kXG5cbm1vZHVsZSBQYXQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYyA9IGQ7XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZC5wcGF0X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBhbnkgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQcGF0X2FueVxuICBsZXQgdmFyID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF92YXIgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2FsaWFzIChhLCBiKSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdGFudCBhKVxuICBsZXQgaW50ZXJ2YWwgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R1cGxlIGEpXG5cbiAgbGV0IGNvbnN0cnVjdCA/bG9jID9hdHRycyBhIGIgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cnVjdCAoYSwgT3B0aW9uLm1hcCAoZnVuIGIgLT4gKFtdLCBiKSkgYikpXG5cbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hcnJheSBhKVxuICBsZXQgb3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29yIChhLCBiKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgdHlwZV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R5cGUgYSlcbiAgbGV0IGxhenlfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9sYXp5IGEpXG4gIGxldCB1bnBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3VucGFjayBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfb3BlbiAoYSwgYikpXG4gIGxldCBleGNlcHRpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9leGNlcHRpb24gYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIEV4cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjID0gZDtcbiAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBkLnBleHBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9pZGVudCBhKVxuICBsZXQgY29uc3RhbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0YW50IGEpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0IChhLCBiLCBjKSlcbiAgbGV0IGZ1bl8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBmdW5jdGlvbl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1bmN0aW9uIGEpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcHBseSAoYSwgYikpXG4gIGxldCBtYXRjaF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbWF0Y2ggKGEsIGIpKVxuICBsZXQgdHJ5XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF90cnkgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3R1cGxlIGEpXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RydWN0IChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGZpZWxkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2ZpZWxkIChhLCBiKSlcbiAgbGV0IHNldGZpZWxkID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpKVxuICBsZXQgYXJyYXkgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2FycmF5IGEpXG4gIGxldCBpZnRoZW5lbHNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykpXG4gIGxldCBzZXF1ZW5jZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXF1ZW5jZSAoYSwgYikpXG4gIGxldCB3aGlsZV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfd2hpbGUgKGEsIGIpKVxuICBsZXQgZm9yXyA/bG9jID9hdHRycyBhIGIgYyBkIGUgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBjb2VyY2UgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb2VyY2UgKGEsIGIsIGMpKVxuICBsZXQgc2VuZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZW5kIChhLCBiKSlcbiAgbGV0IG5ld18gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX25ldyBhKVxuICBsZXQgc2V0aW5zdHZhciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSlcbiAgbGV0IG92ZXJyaWRlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vdmVycmlkZSBhKVxuICBsZXQgbGV0bW9kdWxlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSlcbiAgbGV0IGxldGV4Y2VwdGlvbiA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpKVxuICBsZXQgYXNzZXJ0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXNzZXJ0IGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGF6eSBhKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wb2x5IChhLCBiKSlcbiAgbGV0IG9iamVjdF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29iamVjdCBhKVxuICBsZXQgbmV3dHlwZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXd0eXBlIChhLCBiKSlcbiAgbGV0IHBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3BhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29wZW4gKGEsIGIpKVxuXG4gIGxldCBsZXRvcCA/bG9jID9hdHRycyBsZXRfIGFuZHMgYm9keSA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0pXG5cbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZXh0ZW5zaW9uIGEpXG4gIGxldCB1bnJlYWNoYWJsZSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFBleHBfdW5yZWFjaGFibGVcbiAgbGV0IGNhc2UgbGhzID9ndWFyZCByaHMgPSB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cblxuICBsZXQgYmluZGluZ19vcCBvcCBwYXQgZXhwIGxvYyA9XG4gICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNdHkgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcG10eV9kZXNjID0gZDsgcG10eV9sb2MgPSBsb2M7IHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBkLnBtdHlfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9pZGVudCBhKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2FsaWFzIGEpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3NpZ25hdHVyZSBhKVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZnVuY3RvciAoYSwgYikpXG4gIGxldCB3aXRoXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUG10eV93aXRoIChhLCBiKSlcbiAgbGV0IHR5cGVvZl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3R5cGVvZiBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgTW9kID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtb2RfZGVzYyA9IGQ7IHBtb2RfbG9jID0gbG9jOyBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gZC5wbW9kX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfaWRlbnQgeClcbiAgbGV0IHN0cnVjdHVyZSA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2Rfc3RydWN0dXJlIHgpXG4gIGxldCBmdW5jdG9yXyA/bG9jID9hdHRycyBhcmcgYm9keSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2Z1bmN0b3IgKGFyZywgYm9keSkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBtMSBtMiA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2FwcGx5IChtMSwgbTIpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgbSBtdHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9jb25zdHJhaW50IChtLCBtdHkpKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGUgPSBtayA/bG9jID9hdHRycyAoUG1vZF91bnBhY2sgZSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIFNpZyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIGQgPSB7IHBzaWdfZGVzYyA9IGQ7IHBzaWdfbG9jID0gbG9jIH1cbiAgbGV0IHZhbHVlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdmFsdWUgYSlcbiAgbGV0IHR5cGVfID9sb2MgcmVjX2ZsYWcgYSA9IG1rID9sb2MgKFBzaWdfdHlwZSAocmVjX2ZsYWcsIGEpKVxuICBsZXQgdHlwZV9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3R5cGVzdWJzdCBhKVxuICBsZXQgdHlwZV9leHRlbnNpb24gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBleHQgYSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19leGNlcHRpb24gYSlcbiAgbGV0IG1vZHVsZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2R1bGUgYSlcbiAgbGV0IG1vZF9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHN1YnN0IGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19vcGVuIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2luY2x1ZGUgYSlcbiAgbGV0IGNsYXNzXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzIGEpXG4gIGxldCBjbGFzc190eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfY2xhc3NfdHlwZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHNpZ19leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBTdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc3RyX2Rlc2MgPSBkOyBwc3RyX2xvYyA9IGxvYyB9XG4gIGxldCBldmFsID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9ldmFsIChhLCBhdHRycykpXG4gIGxldCB2YWx1ZSA/bG9jIGEgYiA9IG1rID9sb2MgKFBzdHJfdmFsdWUgKGEsIGIpKVxuICBsZXQgcHJpbWl0aXZlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcHJpbWl0aXZlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc3RyX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdWxlIGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9vcGVuIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGluY2x1ZGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfaW5jbHVkZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBDbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY2xfZGVzYyA9IGQ7IHBjbF9sb2MgPSBsb2M7IHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gZC5wY2xfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0ciAoYSwgYikpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2xfc3RydWN0dXJlIGEpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGNsX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2FwcGx5IChhLCBiKSlcbiAgbGV0IGxldF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNsX2xldCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3R5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdHlfZGVzYyA9IGQ7IHBjdHlfbG9jID0gbG9jOyBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gZC5wY3R5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfY29uc3RyIChhLCBiKSlcbiAgbGV0IHNpZ25hdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfc2lnbmF0dXJlIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfZXh0ZW5zaW9uIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0eV9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3RmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdGZfZGVzYyA9IGQ7IHBjdGZfbG9jID0gbG9jOyBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9pbmhlcml0IGEpXG4gIGxldCB2YWxfID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGN0Zl92YWwgKGEsIGIsIGMsIGQpKVxuICBsZXQgbWV0aG9kXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfbWV0aG9kIChhLCBiLCBjLCBkKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9leHRlbnNpb24gYSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQY3RmX2F0dHJpYnV0ZSBhKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBkLnBjdGZfYXR0cmlidXRlcyBAIFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgQ2YgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNmX2Rlc2MgPSBkOyBwY2ZfbG9jID0gbG9jOyBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgaW5oZXJpdF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaGVyaXQgKGEsIGIsIGMpKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfdmFsIChhLCBiLCBjKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX21ldGhvZCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgaW5pdGlhbGl6ZXJfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaXRpYWxpemVyIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2ZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGNmX2F0dHJpYnV0ZSBhKVxuICBsZXQgdmlydHVhbF8gY3QgPSBDZmtfdmlydHVhbCBjdFxuICBsZXQgY29uY3JldGUgbyBlID0gQ2ZrX2NvbmNyZXRlIChvLCBlKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGQucGNmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIFZhbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwcmltID0gW10pIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgcHZhbF90eXBlID0gdHlwO1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdmFsX2xvYyA9IGxvYztcbiAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSB0eXAgPVxuICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cDsgcG1kX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1kX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE1zID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIHN5biA9XG4gICAge1xuICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgcG1zX21hbmlmZXN0ID0gc3luO1xuICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtc19sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNdGQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID90eXAgbmFtZSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgIHBtdGRfdHlwZSA9IHR5cDtcbiAgICAgIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcG10ZF9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBleHByID1cbiAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IGF0dHJzOyBwbWJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgT3BuID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KG92ZXJyaWRlID0gRnJlc2gpIGV4cHIgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxubW9kdWxlIEluY2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG1leHByID1cbiAgICB7IHBpbmNsX21vZCA9IG1leHByOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5lbmRcblxubW9kdWxlIFZiID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBwYXQgZXhwciA9XG4gICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnM7IHB2Yl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBDaSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2aXJ0ID0gQ29uY3JldGUpID8ocGFyYW1zID0gW10pXG4gICAgICBuYW1lIGV4cHIgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICBwY2lfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8oY3N0cnMgPSBbXSlcbiAgICAgID8oa2luZCA9IFB0eXBlX2Fic3RyYWN0KSA/KHByaXYgPSBQdWJsaWMpID9tYW5pZmVzdCBuYW1lID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHB0eXBlX2xvYyA9IGxvYztcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgZmllbGQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhtdXQgPSBJbW11dGFibGUpIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbGRfbXV0YWJsZSA9IG11dDtcbiAgICAgIHBsZF90eXBlID0gdHlwO1xuICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbigqKiBUeXBlIGV4dGVuc2lvbnMgKilcbm1vZHVsZSBUZSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwYXJhbXMgPSBbXSkgPyhwcml2ID0gUHVibGljKVxuICAgICAgcGF0aCBjb25zdHJ1Y3RvcnMgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBta19leGNlcHRpb24gPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgY29uc3RydWN0b3IgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGtpbmQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGRlY2wgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2YXJzID0gW10pXG4gICAgICA/KGFyZ3MgPSBQY3N0cl90dXBsZSBbXSkgP3JlcyBuYW1lID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0gUGV4dF9kZWNsICh2YXJzLCBhcmdzLCByZXMpO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IHJlYmluZCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGxpZCA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfcmViaW5kIGxpZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBDc2lnID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxubW9kdWxlIENzdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rIHNlbGYgZmllbGRzID0geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbmVuZFxuXG4oKiogUm93IGZpZWxkcyAqKVxubW9kdWxlIFJmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHByZl9kZXNjID0gZGVzYzsgcHJmX2xvYyA9IGxvYzsgcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCBjb25zdCB0eXMgPVxuICAgIG1rID9sb2MgP2F0dHJzIChSdGFnIChsYWJlbCwgY29uc3QsIHR5cykpXG5cbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChSaW5oZXJpdCB0eSlcbmVuZFxuXG4oKiogT2JqZWN0IGZpZWxkcyAqKVxubW9kdWxlIE9mID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHBvZl9kZXNjID0gZGVzYzsgcG9mX2xvYyA9IGxvYzsgcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCB0eSA9IG1rID9sb2MgP2F0dHJzIChPdGFnIChsYWJlbCwgdHkpKVxuICBsZXQgaW5oZXJpdF8gP2xvYyB0eSA9IG1rID9sb2MgKE9pbmhlcml0IHR5KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCRUdJTiBvZiBCTEFDSyBNQUdJQyAqKVxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG50eXBlIF8gd2l0bmVzc2VzID0gLi5cblxudHlwZSBfIG1pZ3JhdGlvbiA9IC4uXG50eXBlIF8gbWlncmF0aW9uICs9IFVuZGVmaW5lZCA6IF8gbWlncmF0aW9uXG5cbnR5cGUgJ2EgbWlncmF0aW9uX2luZm8gPSB7XG4gIG11dGFibGUgbmV4dF92ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xuICBtdXRhYmxlIHByZXZpb3VzX3ZlcnNpb24gOiAnYSBtaWdyYXRpb247XG59XG5cbigqKiBBYnN0cmFjdCB2aWV3IG9mIGEgdmVyc2lvbiBvZiBhbiBPQ2FtbCBBc3QgKilcbm1vZHVsZSB0eXBlIEFzdCA9IHNpZ1xuICAoKiQgZm9yZWFjaF9tb2R1bGUgKGZ1biBtIHR5cGVzIC0+XG4gICAgICBwcmludGYgXCIgIG1vZHVsZSAlcyA6IHNpZ1xcblwiIG07XG4gICAgICBMaXN0Lml0ZXIgdHlwZXMgfmY6KHByaW50ZiBcIiAgICB0eXBlICVzXFxuXCIpO1xuICAgICAgcHJpbnRmIFwiICBlbmRcXG5cIlxuICAgIClcbiAgKilcbiAgbW9kdWxlIFBhcnNldHJlZSA6IHNpZ1xuICAgIHR5cGUgc3RydWN0dXJlXG4gICAgdHlwZSBzaWduYXR1cmVcbiAgICB0eXBlIHRvcGxldmVsX3BocmFzZVxuICAgIHR5cGUgY29yZV90eXBlXG4gICAgdHlwZSBleHByZXNzaW9uXG4gICAgdHlwZSBwYXR0ZXJuXG4gICAgdHlwZSBjYXNlXG4gICAgdHlwZSB0eXBlX2RlY2xhcmF0aW9uXG4gICAgdHlwZSB0eXBlX2V4dGVuc2lvblxuICAgIHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgdHlwZSBjbGFzc19leHByXG4gICAgdHlwZSBjbGFzc19maWVsZFxuICAgIHR5cGUgY2xhc3NfdHlwZVxuICAgIHR5cGUgY2xhc3Nfc2lnbmF0dXJlXG4gICAgdHlwZSBjbGFzc190eXBlX2ZpZWxkXG4gICAgdHlwZSBtb2R1bGVfZXhwclxuICAgIHR5cGUgbW9kdWxlX3R5cGVcbiAgICB0eXBlIHNpZ25hdHVyZV9pdGVtXG4gICAgdHlwZSBzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcbigqJCopXG4gIG1vZHVsZSBDb25maWcgOiBzaWdcbiAgICB2YWwgYXN0X2ltcGxfbWFnaWNfbnVtYmVyIDogc3RyaW5nXG4gICAgdmFsIGFzdF9pbnRmX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICBlbmRcbmVuZFxuXG4oKiBTaG9ydGN1dHMgZm9yIHRhbGtpbmcgYWJvdXQgYXN0IHR5cGVzIG91dHNpZGUgb2YgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG50eXBlICdhIF90eXBlcyA9ICdhIGNvbnN0cmFpbnQgJ2FcbiAgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBfO1xcblwiIHMpICopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBfO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IF87XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogXztcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBfO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IF87XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogXztcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBfO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IF87XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogXztcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IF87XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IF87XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogXztcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBfO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IF87XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogXztcbigqJCopXG4gID5cbjs7XG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICBwcmludGYgXCJ0eXBlICdhIGdldF8lcyA9XFxuXCIgcztcbiAgICBwcmludGYgXCIgICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCAlcyA6ICd4OyAuLiA+XFxuXCIgc1xuICApICopXG50eXBlICdhIGdldF9zdHJ1Y3R1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdG9wbGV2ZWxfcGhyYXNlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHRvcGxldmVsX3BocmFzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jb3JlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY29yZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2V4cHJlc3Npb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXhwcmVzc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9wYXR0ZXJuID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHBhdHRlcm4gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2FzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjYXNlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3R5cGVfZGVjbGFyYXRpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9kZWNsYXJhdGlvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2V4dGVuc2lvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0eXBlX2V4dGVuc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZXhwciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19maWVsZCA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3Nfc2lnbmF0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3NpZ25hdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlX2ZpZWxkID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGVfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc2lnbmF0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlX2l0ZW0gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc3RydWN0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlX2l0ZW0gOiAneDsgLi4gPlxuKCokKilcblxubW9kdWxlIHR5cGUgT0NhbWxfdmVyc2lvbiA9IHNpZ1xuICBtb2R1bGUgQXN0IDogQXN0XG4gIHZhbCB2ZXJzaW9uIDogaW50XG4gIHZhbCBzdHJpbmdfdmVyc2lvbiA6IHN0cmluZ1xuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIHZhbCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0bmVzcyhBc3QgOiBBc3QpID1cbnN0cnVjdFxuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIGxldCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvID1cbiAgICB7IG5leHRfdmVyc2lvbiA9IFVuZGVmaW5lZDsgcHJldmlvdXNfdmVyc2lvbiA9IFVuZGVmaW5lZCB9XG5lbmRcblxudHlwZSAndHlwZXMgb2NhbWxfdmVyc2lvbiA9XG4gIChtb2R1bGUgT0NhbWxfdmVyc2lvblxuICAgICgqJCBsZXQgc2VwID0gd2l0aF90aGVuX2FuZCAoKSBpblxuICAgICAgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICAgICAgcHJpbnRmIFwiICAgICV0IHR5cGUgQXN0LiVzLiVzID0gJ3R5cGVzIGdldF8lc1xcblwiIHNlcCBtIHMgcykgKilcbiAgICB3aXRoIHR5cGUgQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgPSAndHlwZXMgZ2V0X3N0cnVjdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSA9ICd0eXBlcyBnZXRfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gJ3R5cGVzIGdldF90b3BsZXZlbF9waHJhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUgPSAndHlwZXMgZ2V0X2NvcmVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gPSAndHlwZXMgZ2V0X2V4cHJlc3Npb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5wYXR0ZXJuID0gJ3R5cGVzIGdldF9wYXR0ZXJuXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2FzZSA9ICd0eXBlcyBnZXRfY2FzZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSAndHlwZXMgZ2V0X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9ICd0eXBlcyBnZXRfdHlwZV9leHRlbnNpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSAndHlwZXMgZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSAndHlwZXMgZ2V0X2NsYXNzX2V4cHJcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfZmllbGRcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlID0gJ3R5cGVzIGdldF9jbGFzc190eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0gJ3R5cGVzIGdldF9jbGFzc19zaWduYXR1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0gJ3R5cGVzIGdldF9jbGFzc190eXBlX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPSAndHlwZXMgZ2V0X21vZHVsZV9leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPSAndHlwZXMgZ2V0X21vZHVsZV90eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3NpZ25hdHVyZV9pdGVtXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICApXG5cbnR5cGUgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBwcmludGYgXCIgIGNvcHlfJXM6ICdmcm9tIGdldF8lcyAtPiAndG9fIGdldF8lcztcXG5cIiBzIHMgcykgKilcbiAgY29weV9zdHJ1Y3R1cmU6ICdmcm9tIGdldF9zdHJ1Y3R1cmUgLT4gJ3RvXyBnZXRfc3RydWN0dXJlO1xuICBjb3B5X3NpZ25hdHVyZTogJ2Zyb20gZ2V0X3NpZ25hdHVyZSAtPiAndG9fIGdldF9zaWduYXR1cmU7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlOiAnZnJvbSBnZXRfdG9wbGV2ZWxfcGhyYXNlIC0+ICd0b18gZ2V0X3RvcGxldmVsX3BocmFzZTtcbiAgY29weV9jb3JlX3R5cGU6ICdmcm9tIGdldF9jb3JlX3R5cGUgLT4gJ3RvXyBnZXRfY29yZV90eXBlO1xuICBjb3B5X2V4cHJlc3Npb246ICdmcm9tIGdldF9leHByZXNzaW9uIC0+ICd0b18gZ2V0X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybjogJ2Zyb20gZ2V0X3BhdHRlcm4gLT4gJ3RvXyBnZXRfcGF0dGVybjtcbiAgY29weV9jYXNlOiAnZnJvbSBnZXRfY2FzZSAtPiAndG9fIGdldF9jYXNlO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb246ICdmcm9tIGdldF90eXBlX2RlY2xhcmF0aW9uIC0+ICd0b18gZ2V0X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb246ICdmcm9tIGdldF90eXBlX2V4dGVuc2lvbiAtPiAndG9fIGdldF90eXBlX2V4dGVuc2lvbjtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6ICdmcm9tIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ3RvXyBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBjb3B5X2NsYXNzX2V4cHI6ICdmcm9tIGdldF9jbGFzc19leHByIC0+ICd0b18gZ2V0X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQ6ICdmcm9tIGdldF9jbGFzc19maWVsZCAtPiAndG9fIGdldF9jbGFzc19maWVsZDtcbiAgY29weV9jbGFzc190eXBlOiAnZnJvbSBnZXRfY2xhc3NfdHlwZSAtPiAndG9fIGdldF9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZTogJ2Zyb20gZ2V0X2NsYXNzX3NpZ25hdHVyZSAtPiAndG9fIGdldF9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZDogJ2Zyb20gZ2V0X2NsYXNzX3R5cGVfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwcjogJ2Zyb20gZ2V0X21vZHVsZV9leHByIC0+ICd0b18gZ2V0X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlOiAnZnJvbSBnZXRfbW9kdWxlX3R5cGUgLT4gJ3RvXyBnZXRfbW9kdWxlX3R5cGU7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW06ICdmcm9tIGdldF9zaWduYXR1cmVfaXRlbSAtPiAndG9fIGdldF9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbTogJ2Zyb20gZ2V0X3N0cnVjdHVyZV9pdGVtIC0+ICd0b18gZ2V0X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxubGV0IGlkIHggPSB4XG5sZXQgbWlncmF0aW9uX2lkZW50aXR5IDogKCdhLCAnYSkgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgIGNvcHlfJXMgPSBpZDtcXG5cIiBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZSA9IGlkO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSA9IGlkO1xuICBjb3B5X2NvcmVfdHlwZSA9IGlkO1xuICBjb3B5X2V4cHJlc3Npb24gPSBpZDtcbiAgY29weV9wYXR0ZXJuID0gaWQ7XG4gIGNvcHlfY2FzZSA9IGlkO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb24gPSBpZDtcbiAgY29weV90eXBlX2V4dGVuc2lvbiA9IGlkO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGlkO1xuICBjb3B5X2NsYXNzX2V4cHIgPSBpZDtcbiAgY29weV9jbGFzc19maWVsZCA9IGlkO1xuICBjb3B5X2NsYXNzX3R5cGUgPSBpZDtcbiAgY29weV9jbGFzc19zaWduYXR1cmUgPSBpZDtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkID0gaWQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgPSBpZDtcbiAgY29weV9tb2R1bGVfdHlwZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtID0gaWQ7XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gPSBpZDtcbigqJCopXG59XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IG1pZ3JhdGlvbl9jb21wb3NlIChhYiA6ICgnYSwgJ2IpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIChiYyA6ICgnYiwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIDogKCdhLCAnYykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyUtMjFzID0gY29tcG9zZSBiYy5jb3B5XyUtMjFzIGFiLmNvcHlfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgYWIuY29weV90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICBhYi5jb3B5X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgIGFiLmNvcHlfZXhwcmVzc2lvbjtcbiAgY29weV9wYXR0ZXJuICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfcGF0dGVybiAgICAgICAgICAgICAgIGFiLmNvcHlfcGF0dGVybjtcbiAgY29weV9jYXNlICAgICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2FzZSAgICAgICAgICAgICAgICAgIGFiLmNvcHlfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgIGFiLmNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgIGFiLmNvcHlfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gY29tcG9zZSBiYy5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhYi5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZXhwcjtcbiAgY29weV9jbGFzc19maWVsZCAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX3R5cGU7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICBhYi5jb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgIGFiLmNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwciAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgIGFiLmNvcHlfbW9kdWxlX2V4cHI7XG4gIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV90eXBlICAgICAgICAgICBhYi5jb3B5X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgYWIuY29weV9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxufVxuXG50eXBlIF8gbWlncmF0aW9uICs9IE1pZ3JhdGlvbiA6ICdmcm9tIG9jYW1sX3ZlcnNpb24gKiAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb24gLT4gJ2Zyb20gbWlncmF0aW9uXG5cbm1vZHVsZSB0eXBlIE1pZ3JhdGVfbW9kdWxlID0gc2lnXG4gIG1vZHVsZSBGcm9tIDogQXN0XG4gIG1vZHVsZSBUbyA6IEFzdFxuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICBwcmludGYgXCIgIHZhbCBjb3B5XyUtMjFzOiBGcm9tLiVzLiVzIC0+IFRvLiVzLiVzXFxuXCIgcyBtIHMgbSBzKSAqKVxuICB2YWwgY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgdmFsIGNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgOiBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICB2YWwgY29weV9jb3JlX3R5cGUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlXG4gIHZhbCBjb3B5X2V4cHJlc3Npb24gICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICB2YWwgY29weV9wYXR0ZXJuICAgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5cbiAgdmFsIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlXG4gIHZhbCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgIDogRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICB2YWwgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICB2YWwgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIHZhbCBjb3B5X2NsYXNzX2V4cHIgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICB2YWwgY29weV9jbGFzc19maWVsZCAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICB2YWwgY29weV9jbGFzc190eXBlICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgdmFsIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICB2YWwgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgdmFsIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgdmFsIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgdmFsIGNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgdmFsIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbigqJCopXG5lbmRcblxubW9kdWxlIE1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgICAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbilcbiAgICAoQV90b19CIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEEuQXN0IGFuZCBtb2R1bGUgVG8gPSBCLkFzdClcbj1cbnN0cnVjdFxuICBsZXQgbWlncmF0aW9uX2Z1bmN0aW9ucyA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBsZXQgb3BlbiBBX3RvX0IgaW5cbiAgICB7XG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICAgIGNvcHlfc3RydWN0dXJlO1xuICAgICAgY29weV9zaWduYXR1cmU7XG4gICAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICAgIGNvcHlfY29yZV90eXBlO1xuICAgICAgY29weV9leHByZXNzaW9uO1xuICAgICAgY29weV9wYXR0ZXJuO1xuICAgICAgY29weV9jYXNlO1xuICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgY29weV9jbGFzc19leHByO1xuICAgICAgY29weV9jbGFzc19maWVsZDtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZTtcbiAgICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgICAgY29weV9tb2R1bGVfZXhwcjtcbiAgICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgICAgY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9taWdyYXRpb24gKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG4gICAgKEJfdG9fQSA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBCLkFzdCBhbmQgbW9kdWxlIFRvID0gQS5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0ICgpID0gKFxuICAgIGxldCBpc191bmRlZmluZWQgOiB0eXBlIGEuIGEgbWlncmF0aW9uIC0+IGJvb2wgPSBmdW5jdGlvblxuICAgICAgfCBVbmRlZmluZWQgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBhc3NlcnQgKEEudmVyc2lvbiA8IEIudmVyc2lvbik7XG4gICAgYXNzZXJ0IChpc191bmRlZmluZWQgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEIubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvbik7XG4gICAgbGV0IG1vZHVsZSBBX3RvX0JfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhBKShCKShBX3RvX0IpIGluXG4gICAgbGV0IG1vZHVsZSBCX3RvX0FfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhCKShBKShCX3RvX0EpIGluXG4gICAgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBBKSwgQV90b19CX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEIpKTtcbiAgICBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBCKSwgQl90b19BX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEEpKTtcbiAgKVxuZW5kXG5cbnR5cGUgJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvbiA9XG4gIHwgTm9fbWlncmF0aW9uIDogJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvblxuICB8IEltbWVkaWF0ZV9taWdyYXRpb25cbiAgICA6ICAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb25cbiAgICAgIC0+ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cblxubGV0IGltbWVkaWF0ZV9taWdyYXRpb25cbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAodHlwZSAlcylcXG5cIiBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZSlcbiAgICAodHlwZSBzaWduYXR1cmUpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlKVxuICAgICh0eXBlIGNvcmVfdHlwZSlcbiAgICAodHlwZSBleHByZXNzaW9uKVxuICAgICh0eXBlIHBhdHRlcm4pXG4gICAgKHR5cGUgY2FzZSlcbiAgICAodHlwZSB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICAodHlwZSBjbGFzc19leHByKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkKVxuICAgICh0eXBlIGNsYXNzX3R5cGUpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0pXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0pXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiAgXCIgICAgICUtMjFzIDogJXM7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmU7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGU7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb247XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm47XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2U7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb247XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmU7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQ7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW07XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgIGRpcmVjdGlvblxuICA9XG4gIGxldCB2ZXJzaW9uID0gbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBOZXh0IC0+IEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uXG4gICAgfCBgUHJldmlvdXMgLT4gQS5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uXG4gIGluXG4gIG1hdGNoIHZlcnNpb24gd2l0aFxuICB8IFVuZGVmaW5lZCAtPiBOb19taWdyYXRpb25cbiAgfCBNaWdyYXRpb24gKF8sIGZ1bnMsIHRvXykgLT4gSW1tZWRpYXRlX21pZ3JhdGlvbiAoZnVucywgdG9fKVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBtaWdyYXRlXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMxKSAodHlwZSAlczIpXFxuXCIgcyBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZTEpICh0eXBlIHN0cnVjdHVyZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlMSkgKHR5cGUgc2lnbmF0dXJlMilcbiAgICAodHlwZSB0b3BsZXZlbF9waHJhc2UxKSAodHlwZSB0b3BsZXZlbF9waHJhc2UyKVxuICAgICh0eXBlIGNvcmVfdHlwZTEpICh0eXBlIGNvcmVfdHlwZTIpXG4gICAgKHR5cGUgZXhwcmVzc2lvbjEpICh0eXBlIGV4cHJlc3Npb24yKVxuICAgICh0eXBlIHBhdHRlcm4xKSAodHlwZSBwYXR0ZXJuMilcbiAgICAodHlwZSBjYXNlMSkgKHR5cGUgY2FzZTIpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbjEpICh0eXBlIHR5cGVfZGVjbGFyYXRpb24yKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uMSkgKHR5cGUgdHlwZV9leHRlbnNpb24yKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjEpICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjIpXG4gICAgKHR5cGUgY2xhc3NfZXhwcjEpICh0eXBlIGNsYXNzX2V4cHIyKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkMSkgKHR5cGUgY2xhc3NfZmllbGQyKVxuICAgICh0eXBlIGNsYXNzX3R5cGUxKSAodHlwZSBjbGFzc190eXBlMilcbiAgICAodHlwZSBjbGFzc19zaWduYXR1cmUxKSAodHlwZSBjbGFzc19zaWduYXR1cmUyKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQxKSAodHlwZSBjbGFzc190eXBlX2ZpZWxkMilcbiAgICAodHlwZSBtb2R1bGVfZXhwcjEpICh0eXBlIG1vZHVsZV9leHByMilcbiAgICAodHlwZSBtb2R1bGVfdHlwZTEpICh0eXBlIG1vZHVsZV90eXBlMilcbiAgICAodHlwZSBzaWduYXR1cmVfaXRlbTEpICh0eXBlIHNpZ25hdHVyZV9pdGVtMilcbiAgICAodHlwZSBzdHJ1Y3R1cmVfaXRlbTEpICh0eXBlIHN0cnVjdHVyZV9pdGVtMilcbigqJCopXG4gICAgKChtb2R1bGUgQSkgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAlLTIxcyA6ICVzMTtcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTE7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTE7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTE7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTE7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb24xO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuMTtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTE7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb24xO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjE7XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjE7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHIxO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDE7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGUxO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmUxO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkMTtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHIxO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTE7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtMTtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW0xO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgICgobW9kdWxlIEIpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczI7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUyO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUyO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UyO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUyO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMjtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjI7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UyO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMjtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24yO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IyO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMjtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQyO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMjtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMjtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDI7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUyO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTI7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMjtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9uc1xuICA9XG4gIG1hdGNoIEEuVmVyc2lvbiB3aXRoXG4gIHwgQi5WZXJzaW9uIC0+IG1pZ3JhdGlvbl9pZGVudGl0eVxuICB8IF8gLT5cbiAgICBsZXQgZGlyZWN0aW9uID0gaWYgQS52ZXJzaW9uIDwgQi52ZXJzaW9uIHRoZW4gYE5leHQgZWxzZSBgUHJldmlvdXMgaW5cbiAgICBsZXQgcmVjIG1pZ3JhdGUgKG0gOiBBLnR5cGVzIGltbWVkaWF0ZV9taWdyYXRpb24pIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgSW1tZWRpYXRlX21pZ3JhdGlvbiAoZiwgKG1vZHVsZSBUbykpIC0+XG4gICAgICAgIG1hdGNoIFRvLlZlcnNpb24gd2l0aFxuICAgICAgICB8IEIuVmVyc2lvbiAtPiBmXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1hdGNoIGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBUbykgZGlyZWN0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGcsIHRvMikgLT5cbiAgICAgICAgICAgIG1pZ3JhdGUgKEltbWVkaWF0ZV9taWdyYXRpb24gKG1pZ3JhdGlvbl9jb21wb3NlIGYgZywgdG8yKSlcbiAgICBpblxuICAgIG1pZ3JhdGUgKGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBBKSBkaXJlY3Rpb24pXG5cbm1vZHVsZSBDb252ZXJ0IChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKSA9IHN0cnVjdFxuICBsZXQge1xuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICBjb3B5X3NpZ25hdHVyZTtcbiAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICBjb3B5X2V4cHJlc3Npb247XG4gICAgY29weV9wYXR0ZXJuO1xuICAgIGNvcHlfY2FzZTtcbiAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjb3B5X2NsYXNzX2V4cHI7XG4gICAgY29weV9jbGFzc19maWVsZDtcbiAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgY29weV9jbGFzc19zaWduYXR1cmU7XG4gICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgY29weV9tb2R1bGVfdHlwZTtcbiAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICB9IDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgIG1pZ3JhdGUgKG1vZHVsZSBBKSAobW9kdWxlIEIpXG5lbmRcblxuKCokIGZvcmVhY2hfdmVyc2lvbiAoZnVuIG4gdmVyc2lvbiAtPlxuICAgIHByaW50ZiBcIm1vZHVsZSBPQ2FtbF8lZCA9IHN0cnVjdFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF8lZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XyVkKVxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgdmVyc2lvbiA9ICVkXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGxldCBzdHJpbmdfdmVyc2lvbiA9ICVTXFxuXCIgdmVyc2lvbjtcbiAgICBwcmludGYgXCJlbmRcXG5cIjtcbiAgICBwcmludGYgXCJsZXQgb2NhbWxfJWQgOiBPQ2FtbF8lZC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF8lZClcXG5cIlxuICAgICAgbiBuIG47XG4gIClcbiopXG5tb2R1bGUgT0NhbWxfNDAyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMilcbiAgbGV0IHZlcnNpb24gPSA0MDJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAyXCJcbmVuZFxubGV0IG9jYW1sXzQwMiA6IE9DYW1sXzQwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDIpXG5tb2R1bGUgT0NhbWxfNDAzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMylcbiAgbGV0IHZlcnNpb24gPSA0MDNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAzXCJcbmVuZFxubGV0IG9jYW1sXzQwMyA6IE9DYW1sXzQwMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDMpXG5tb2R1bGUgT0NhbWxfNDA0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNClcbiAgbGV0IHZlcnNpb24gPSA0MDRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA0XCJcbmVuZFxubGV0IG9jYW1sXzQwNCA6IE9DYW1sXzQwNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDQpXG5tb2R1bGUgT0NhbWxfNDA1ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNSlcbiAgbGV0IHZlcnNpb24gPSA0MDVcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA1XCJcbmVuZFxubGV0IG9jYW1sXzQwNSA6IE9DYW1sXzQwNS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDUpXG5tb2R1bGUgT0NhbWxfNDA2ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNilcbiAgbGV0IHZlcnNpb24gPSA0MDZcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA2XCJcbmVuZFxubGV0IG9jYW1sXzQwNiA6IE9DYW1sXzQwNi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDYpXG5tb2R1bGUgT0NhbWxfNDA3ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwN1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNylcbiAgbGV0IHZlcnNpb24gPSA0MDdcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA3XCJcbmVuZFxubGV0IG9jYW1sXzQwNyA6IE9DYW1sXzQwNy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDcpXG5tb2R1bGUgT0NhbWxfNDA4ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOClcbiAgbGV0IHZlcnNpb24gPSA0MDhcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA4XCJcbmVuZFxubGV0IG9jYW1sXzQwOCA6IE9DYW1sXzQwOC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDgpXG5tb2R1bGUgT0NhbWxfNDA5ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOSlcbiAgbGV0IHZlcnNpb24gPSA0MDlcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA5XCJcbmVuZFxubGV0IG9jYW1sXzQwOSA6IE9DYW1sXzQwOS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDkpXG5tb2R1bGUgT0NhbWxfNDEwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMClcbiAgbGV0IHZlcnNpb24gPSA0MTBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEwXCJcbmVuZFxubGV0IG9jYW1sXzQxMCA6IE9DYW1sXzQxMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTApXG5tb2R1bGUgT0NhbWxfNDExID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMSlcbiAgbGV0IHZlcnNpb24gPSA0MTFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjExXCJcbmVuZFxubGV0IG9jYW1sXzQxMSA6IE9DYW1sXzQxMS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTEpXG5tb2R1bGUgT0NhbWxfNDEyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMilcbiAgbGV0IHZlcnNpb24gPSA0MTJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEyXCJcbmVuZFxubGV0IG9jYW1sXzQxMiA6IE9DYW1sXzQxMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTIpXG5tb2R1bGUgT0NhbWxfNDEzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMylcbiAgbGV0IHZlcnNpb24gPSA0MTNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEzXCJcbmVuZFxubGV0IG9jYW1sXzQxMyA6IE9DYW1sXzQxMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTMpXG5tb2R1bGUgT0NhbWxfNDE0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxNClcbiAgbGV0IHZlcnNpb24gPSA0MTRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjE0XCJcbmVuZFxubGV0IG9jYW1sXzQxNCA6IE9DYW1sXzQxNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTQpXG5tb2R1bGUgT0NhbWxfNTAwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMClcbiAgbGV0IHZlcnNpb24gPSA1MDBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjBcIlxuZW5kXG5sZXQgb2NhbWxfNTAwIDogT0NhbWxfNTAwLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMClcbm1vZHVsZSBPQ2FtbF81MDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAxXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAxKVxuICBsZXQgdmVyc2lvbiA9IDUwMVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMVwiXG5lbmRcbmxldCBvY2FtbF81MDEgOiBPQ2FtbF81MDEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAxKVxubW9kdWxlIE9DYW1sXzUwMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDIpXG4gIGxldCB2ZXJzaW9uID0gNTAyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4yXCJcbmVuZFxubGV0IG9jYW1sXzUwMiA6IE9DYW1sXzUwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDIpXG4oKiQqKVxuXG5sZXQgYWxsX3ZlcnNpb25zIDogKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSBsaXN0ID0gW1xuICAoKiRmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIF8gLT5cbiAgICAgIHByaW50ZiBcIihtb2R1bGUgT0NhbWxfJWQgOiBPQ2FtbF92ZXJzaW9uKTtcXG5cIiBuKSopXG4obW9kdWxlIE9DYW1sXzQwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDMgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA0IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDYgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA3IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwOCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDkgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDAgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAxIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKCokKilcbl1cblxuKCokZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biBhIGIgLT5cbiAgICBwcmludGYgXCJpbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF8lZCkoT0NhbWxfJWQpXFxuXCIgYSBiO1xuICAgIHByaW50ZiBcIiAgICAoQXN0bGliLk1pZ3JhdGVfJWRfJWQpKEFzdGxpYi5NaWdyYXRlXyVkXyVkKVxcblwiIGEgYiBiIGFcbiAgKVxuKilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMikoT0NhbWxfNDAzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDJfNDAzKShBc3RsaWIuTWlncmF0ZV80MDNfNDAyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDAzKShPQ2FtbF80MDQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwM180MDQpKEFzdGxpYi5NaWdyYXRlXzQwNF80MDMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDQpKE9DYW1sXzQwNSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA0XzQwNSkoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNSkoT0NhbWxfNDA2KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDVfNDA2KShBc3RsaWIuTWlncmF0ZV80MDZfNDA1KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA2KShPQ2FtbF80MDcpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNl80MDcpKEFzdGxpYi5NaWdyYXRlXzQwN180MDYpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDcpKE9DYW1sXzQwOClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA3XzQwOCkoQXN0bGliLk1pZ3JhdGVfNDA4XzQwNylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOCkoT0NhbWxfNDA5KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDhfNDA5KShBc3RsaWIuTWlncmF0ZV80MDlfNDA4KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA5KShPQ2FtbF80MTApXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwOV80MTApKEFzdGxpYi5NaWdyYXRlXzQxMF80MDkpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTApKE9DYW1sXzQxMSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEwXzQxMSkoQXN0bGliLk1pZ3JhdGVfNDExXzQxMClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMSkoT0NhbWxfNDEyKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTFfNDEyKShBc3RsaWIuTWlncmF0ZV80MTJfNDExKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEyKShPQ2FtbF80MTMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMl80MTMpKEFzdGxpYi5NaWdyYXRlXzQxM180MTIpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTMpKE9DYW1sXzQxNClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEzXzQxNCkoQXN0bGliLk1pZ3JhdGVfNDE0XzQxMylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxNCkoT0NhbWxfNTAwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTRfNTAwKShBc3RsaWIuTWlncmF0ZV81MDBfNDE0KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAwKShPQ2FtbF81MDEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMF81MDEpKEFzdGxpYi5NaWdyYXRlXzUwMV81MDApXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF81MDEpKE9DYW1sXzUwMilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNTAxXzUwMikoQXN0bGliLk1pZ3JhdGVfNTAyXzUwMSlcbigqJCopXG5cbm1vZHVsZSBPQ2FtbF9jdXJyZW50ID0gT0NhbWxfT0NBTUxfVkVSU0lPTlxuXG5tb2R1bGUgRmluZF92ZXJzaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEltcGwgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IEludGYgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IFVua25vd25cblxuICBsZXQgZnJvbV9tYWdpYyBtYWdpYyA9XG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gVW5rbm93blxuICAgICAgfCAobW9kdWxlIFZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSA6OiB0YWlsIC0+XG4gICAgICAgICAgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEltcGwgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2UgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEludGYgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvb3AgdGFpbFxuICAgIGluXG4gICAgKCogVHJhdmVyc2UgdGhlIHZlcnNpb25zIGZyb20gbGFzdCB0byBmaXJzdDpcbiAgICAgICBpZiB0aGUgbWFnaWMgbnVtYmVycyBhcmVuJ3QgdW5pcXVlIGFtb25nIHZlcnNpb25zLFxuICAgICAgIHdlIHdhbnQgdGhlIGxhdGVzdCB2ZXJzaW9uIHdpdGggYSBtYWdpYyBudW1iZXIgbWF0Y2guXG4gICAgICAgVGhlIHNpdHVhdGlvbiBpbiBtaW5kIGlzIHRydW5rIHN1cHBvcnQuICopXG4gICAgICBsZXQgYWxsX3ZlcnNpb25zX3RvcF9kb3duID0gTGlzdC5yZXYgYWxsX3ZlcnNpb25zIGluXG4gICAgICBsb29wIGFsbF92ZXJzaW9uc190b3BfZG93blxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgdXNlZCB0byBjb250cm9sIHdoYXQgd2UgdXNlIGZyb20gdGhlIGN1cnJlbnQgY29tcGlsZXIgYW5kIHdoYXQgaXMgZW1iZWQgaW5cbiAgIHRoaXMgbGlicmFyeS5cblxuICAgSXQgbXVzdCBiZSBvcGVuZWQgaW4gYWxsIG1vZHVsZXMsIGVzcGVjaWFsbHkgdGhlIG9uZXMgY29taW5nIGZyb20gdGhlIGNvbXBpbGVyLlxuKilcblxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG5tb2R1bGUgSnMgPSBWZXJzaW9ucy5PQ2FtbF81MDBcbm1vZHVsZSBPY2FtbCA9IFZlcnNpb25zLk9DYW1sX2N1cnJlbnRcblxubW9kdWxlIFNlbGVjdF9hc3QgKE9jYW1sIDogVmVyc2lvbnMuT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc1xuXG4gIG1vZHVsZSBUeXBlID0gc3RydWN0XG4gICAgdHlwZSAoJ2pzLCAnb2NhbWwpIHQgPVxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlc1xcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLiVzLFxcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLiVzIClcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgIHRcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFRvcGxldmVsX3BocmFzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDb3JlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXhwcmVzc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFBhdHRlcm5cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5wYXR0ZXJuLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnBhdHRlcm4gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDYXNlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2FzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBNb2R1bGVfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbigqJCopXG4gICAgICB8IExpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBsaXN0LCAnYiBsaXN0KSB0XG4gICAgICB8IFBhaXIgOiAoJ2EsICdiKSB0ICogKCdjLCAnZCkgdCAtPiAoJ2EgKiAnYywgJ2IgKiAnZCkgdFxuICBlbmRcblxuICBvcGVuIFR5cGVcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcbiAgbW9kdWxlIFRvX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoSnMpIChPY2FtbClcblxuICBsZXQgcmVjIG9mX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IG9jYW1sIC0+IGpzID1cbiAgICBsZXQgb3BlbiBPZl9vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwIChvZl9vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gb2Zfb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gb2Zfb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCByZWMgdG9fb2NhbWwgOiB0eXBlIG9jYW1sIGpzLiAoanMsIG9jYW1sKSBUeXBlLnQgLT4ganMgLT4gb2NhbWwgPVxuICAgIGxldCBvcGVuIFRvX29jYW1sIGluXG4gICAgZnVuIG5vZGUgLT5cbiAgICAgIG1hdGNoIG5vZGUgd2l0aFxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlcyAtPiBjb3B5XyVzXFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZSAtPiBjb3B5X3N0cnVjdHVyZVxuICAgICAgfCBTaWduYXR1cmUgLT4gY29weV9zaWduYXR1cmVcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlIC0+IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gICAgICB8IENvcmVfdHlwZSAtPiBjb3B5X2NvcmVfdHlwZVxuICAgICAgfCBFeHByZXNzaW9uIC0+IGNvcHlfZXhwcmVzc2lvblxuICAgICAgfCBQYXR0ZXJuIC0+IGNvcHlfcGF0dGVyblxuICAgICAgfCBDYXNlIC0+IGNvcHlfY2FzZVxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgfCBDbGFzc19leHByIC0+IGNvcHlfY2xhc3NfZXhwclxuICAgICAgfCBDbGFzc19maWVsZCAtPiBjb3B5X2NsYXNzX2ZpZWxkXG4gICAgICB8IENsYXNzX3R5cGUgLT4gY29weV9jbGFzc190eXBlXG4gICAgICB8IENsYXNzX3NpZ25hdHVyZSAtPiBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICAgICAgfCBNb2R1bGVfZXhwciAtPiBjb3B5X21vZHVsZV9leHByXG4gICAgICB8IE1vZHVsZV90eXBlIC0+IGNvcHlfbW9kdWxlX3R5cGVcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gY29weV9zaWduYXR1cmVfaXRlbVxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBjb3B5X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICAgICAgfCBMaXN0IHQgLT4gTGlzdC5tYXAgKHRvX29jYW1sIHQpXG4gICAgICB8IFBhaXIgKGEsIGIpIC0+XG4gICAgICAgICAgbGV0IGYgPSB0b19vY2FtbCBhIGluXG4gICAgICAgICAgbGV0IGcgPSB0b19vY2FtbCBiIGluXG4gICAgICAgICAgZnVuICh4LCB5KSAtPiAoZiB4LCBnIHkpXG5cbiAgbGV0IG9mX29jYW1sX21hcHBlciBpdGVtIGYgY3R4dCB4ID0gdG9fb2NhbWwgaXRlbSB4IHw+IGYgY3R4dCB8PiBvZl9vY2FtbCBpdGVtXG4gIGxldCB0b19vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IG9mX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gdG9fb2NhbWwgaXRlbVxuZW5kXG5cbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBTZWxlY3RfYXN0IChPY2FtbClcbm1vZHVsZSBBc3RfaGVscGVyID0gQXN0X2hlbHBlcl9saXRlXG5cbigqIE1vZHVsZXMgZnJvbSBBc3RfPG4+IG9mIEFzdGxpYiwgd2hlcmUgPG4+IGlzIHRoZSBjb21waWxlciB2ZXJzaW9uIHRoZSBwcHhsaWIgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGggKilcbm1vZHVsZSBQYXJzZXRyZWUgPSBTZWxlY3RlZF9hc3QuQXN0LlBhcnNldHJlZVxubW9kdWxlIEFzdHR5cGVzID0gU2VsZWN0ZWRfYXN0LkFzdC5Bc3R0eXBlc1xuXG4oKiBPdGhlciBBc3RsaWIgbW9kdWxlcyAqKVxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxuXG5tb2R1bGUgUGFyc2UgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RsaWIuUGFyc2VcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcblxuICBsZXQgaW1wbGVtZW50YXRpb24gbGV4YnVmID0gaW1wbGVtZW50YXRpb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfc3RydWN0dXJlXG4gIGxldCBpbnRlcmZhY2UgbGV4YnVmID0gaW50ZXJmYWNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3NpZ25hdHVyZVxuXG4gIGxldCB0b3BsZXZlbF9waHJhc2UgbGV4YnVmID1cbiAgICB0b3BsZXZlbF9waHJhc2UgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IHVzZV9maWxlIGxleGJ1ZiA9XG4gICAgdXNlX2ZpbGUgbGV4YnVmIHw+IExpc3QubWFwIE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IGNvcmVfdHlwZSBsZXhidWYgPSBjb3JlX3R5cGUgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfY29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uIGxleGJ1ZiA9IGV4cHJlc3Npb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfZXhwcmVzc2lvblxuICBsZXQgcGF0dGVybiBsZXhidWYgPSBwYXR0ZXJuIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3BhdHRlcm5cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBkZWZhdWx0X3ByaW50X3dhcm5pbmcgX2xvYyA9ICgpXG5sZXQgYWJvdXRfaXRlX2JyYW5jaF9yZWYgPSByZWYgZGVmYXVsdF9wcmludF93YXJuaW5nXG5sZXQgY2FyZV9hYm91dF9pdGVfYnJhbmNoID0gcmVmIGZhbHNlXG5sZXQgYWJvdXRfaXRlX2JyYW5jaCBsb2MgPSAhYWJvdXRfaXRlX2JyYW5jaF9yZWYgbG9jXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBEZWZpbml0aW9uIG9mIHRoZSBPQ2FtbCBBU1QgKilcblxub3BlbiBJbXBvcnRcblxuKCogVGhpcyBmaWxlIGlzIG9idGFpbmVkIGJ5OlxuXG4gICAtIGNvcHlpbmcgYSBzdWJzZXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXN0X3h4eC5tbCBmaWxlIGZyb20gQXN0bGliXG4gICAoc3ViLW1vZHVsZXMgQXN0dHlwZXMgYW5kIFBhcnNldHJlZSlcbiAgIC0gYWRkaW5nIHRoZSB0eXBlIGRlZmluaXRpb25zIGZvciBwb3NpdGlvbiwgbG9jYXRpb24sIGxvYyBhbmQgbG9uZ2lkZW50XG4gICAtIGZsYXR0ZW5pbmcgYWxsIHRoZSBtb2R1bGVzXG4gICAtIHJlbW92aW5nIEFzdHR5cGVzLmNvbnN0YW50ICh1bnVzZWQgYW5kIGNvbmZsaWN0cyB3aXRoIFBhcnNldHJlZS5jb25zdGFudClcbiAgIC0gcmVuYW1pbmcgYSBmZXcgdHlwZXM6XG4gICAtIC0gTG9jYXRpb24udCAtPiBsb2NhdGlvblxuICAgLSAtIExvbmdpZGVudC50IC0+IGxvbmdpZGVudFxuICAgLSBhZGRpbmcgYSB0eXBlIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jIGFuZCByZXBsYWNpbmcgYWxsIHRoZSBvY2N1cnJlbmNlcyBvZiB0aGVcbiAgIGxhdHRlciBieSB0aGUgZm9ybWVyLiBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuIG92ZXJyaWRlIGl0ZXJhdGlvbiBhbiB0aGUgbGV2ZWwgb2YgYVxuICAgbG9uZ2lkZW50IGxvY1xuICAgLSBhZGRpbmcgYSB0eXBlIGNhc2VzID0gY2FzZSBsaXN0XG4gICAtIHJlcGxhY2luZyBhbGwgb2NjdXJlbmNlcyBvZiBcImNhc2UgbGlzdFwiIGJ5IFwiY2FzZXNcIlxuICAgLSByZXBsYWNpbmcgYWxsIHRoZSAoKklGX0NVUlJFTlQgPSBGb28uYmFyKikgYnk6ID0gRm9vLmJhclxuICAgLSByZW1vdmluZyB0aGUgZXh0cmEgdmFsdWVzIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGVcbiAgIC0gcmVwbGFjaW5nIGFwcCBbdHlwZSAuLi5dIGJ5IFthbmQgLi4uXSB0byBtYWtlIGV2ZXJ5dGhpbmcgb25lIHJlY3Vyc2l2ZSBibG9ja1xuICAgLSBhZGRpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHRyYXZlcnNlXVtAQEBlbmRdIGF0IHRoZSBlbmRcblxuICAgVG8gdXBkYXRlIGl0IHRvIGEgbmV3ZXIgT0NhbWwgdmVyc2lvbiwgY3JlYXRlIGEgbmV3IG1vZHVsZSB3aXRoIHRoZSBhYm92ZSBmcm9tIHRoZVxuICAgbGF0ZXN0IGNvbXBpbGVyIGFuZCBhZGQgdGhlIGZvbGxvd2luZyBtb2R1bGUgZGVmaW5pdGlvbnMgYW5kIG9wZW5zIHRvIGdldCBpdCB0b1xuICAgY29tcGlsZTpcbiAgIFt7XG4gICAgbW9kdWxlIEFzdCA9IFZlcnNpb25zLk9DYW1sXzR4eFxuICAgIG9wZW4gQXN0LkFzdFxuICAgIG1vZHVsZSBMb2NhdGlvbiAgID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uXG4gICAgbW9kdWxlIExvbmdpZGVudCA9IE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcbiAgIH1dXG5cbiAgIE9uY2UgeW91IGhhdmUgZ2VuZXJhdGVkIHRoZSBpbmxpbmVkIGRlcml2ZWQgdHJhdmVyc2FsIGNsYXNzZXMgYnkgcnVubmluZ1xuICAgW3sgZHVuZSBidWlsZCBAbGludCB9XSB5b3UgY2FuIHJlcGxhY2UgdGhlIGFib3ZlIG1lbnRpb25lZCBtb2R1bGUgZGVmaW5pdGlvbnMgYnkgYVxuICAgW29wZW4gSW1wb3J0XSBhbmQgdXBkYXRlIFtJbXBvcnRdIHNvIHRoYXQgdGhlIFtKc10gbW9kdWxlIHBvaW50cyB0b1xuICAgW1ZlcnNpb25zLk9DYW1sXzR4eF0uXG4qKVxuXG4oKiBTb3VyY2UgY29kZSBsb2NhdGlvbnMgKHJhbmdlcyBvZiBwb3NpdGlvbnMpLCB1c2VkIGluIHBhcnNldHJlZS4gKilcblxudHlwZSBwb3NpdGlvbiA9IExleGluZy5wb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmFuZCBsb2NhdGlvbiA9IExvY2F0aW9uLnQgPSB7XG4gIGxvY19zdGFydCA6IHBvc2l0aW9uO1xuICBsb2NfZW5kIDogcG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmFuZCBsb2NhdGlvbl9zdGFjayA9IGxvY2F0aW9uIGxpc3RcblxuKCogTm90ZSBvbiB0aGUgdXNlIG9mIExleGluZy5wb3NpdGlvbiBpbiB0aGlzIG1vZHVsZS5cbiAgIElmIFtwb3NfZm5hbWUgPSBcIlwiXSwgdGhlbiB1c2UgWyFpbnB1dF9uYW1lXSBpbnN0ZWFkLlxuICAgSWYgW3Bvc19sbnVtID0gLTFdLCB0aGVuIFtwb3NfYm9sID0gMF0uIFVzZSBbcG9zX2NudW1dIGFuZFxuICAgcmUtcGFyc2UgdGhlIGZpbGUgdG8gZ2V0IHRoZSBsaW5lIGFuZCBjaGFyYWN0ZXIgbnVtYmVycy5cbiAgIEVsc2UgYWxsIGZpZWxkcyBhcmUgY29ycmVjdC5cbiopXG5hbmQgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0geyB0eHQgOiAnYTsgbG9jIDogbG9jYXRpb24gfVxuXG4oKiBMb25nIGlkZW50aWZpZXJzLCB1c2VkIGluIHBhcnNldHJlZS4gKilcbmFuZCBsb25naWRlbnQgPSBMb25naWRlbnQudCA9XG4gIHwgTGlkZW50IG9mIHN0cmluZ1xuICB8IExkb3Qgb2YgbG9uZ2lkZW50ICogc3RyaW5nXG4gIHwgTGFwcGx5IG9mIGxvbmdpZGVudCAqIGxvbmdpZGVudFxuXG5hbmQgbG9uZ2lkZW50X2xvYyA9IGxvbmdpZGVudCBsb2NcblxuKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuYW5kIHJlY19mbGFnID0gQXN0dHlwZXMucmVjX2ZsYWcgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuYW5kIGRpcmVjdGlvbl9mbGFnID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBVcHRvIHwgRG93bnRvXG5cbigqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuYW5kIHByaXZhdGVfZmxhZyA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IFByaXZhdGUgfCBQdWJsaWNcbmFuZCBtdXRhYmxlX2ZsYWcgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5hbmQgdmlydHVhbF9mbGFnID0gQXN0dHlwZXMudmlydHVhbF9mbGFnID0gVmlydHVhbCB8IENvbmNyZXRlXG5hbmQgb3ZlcnJpZGVfZmxhZyA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBPdmVycmlkZSB8IEZyZXNoXG5hbmQgY2xvc2VkX2ZsYWcgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyA9IENsb3NlZCB8IE9wZW5cbmFuZCBsYWJlbCA9IHN0cmluZ1xuXG5hbmQgYXJnX2xhYmVsID0gQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgfCBOb2xhYmVsXG4gIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICB8IE9wdGlvbmFsIG9mIHN0cmluZyAgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbmFuZCB2YXJpYW5jZSA9IEFzdHR5cGVzLnZhcmlhbmNlID0gQ292YXJpYW50IHwgQ29udHJhdmFyaWFudCB8IE5vVmFyaWFuY2VcbmFuZCBpbmplY3Rpdml0eSA9IEFzdHR5cGVzLmluamVjdGl2aXR5ID0gSW5qZWN0aXZlIHwgTm9JbmplY3Rpdml0eVxuXG4oKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG5hbmQgY29uc3RhbnQgPSBQYXJzZXRyZWUuY29uc3RhbnQgPVxuICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGV4Y2VwdFxuICAgICAgICAgIFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlciAqKVxuICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIGxvY2F0aW9uICogc3RyaW5nIG9wdGlvblxuICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy4gKilcbiAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGFyZSByZWplY3RlZFxuICAgICAgICAgIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbmFuZCBhdHRyaWJ1dGUgPSBQYXJzZXRyZWUuYXR0cmlidXRlID0ge1xuICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICBhdHRyX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW0BpZCBBUkddXSBhbmQgW1tAQGlkIEFSR11dLlxuXG4gICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULiBUaGUgY29tcGlsZXIgaWdub3Jlc1xuICAgIHVua25vd24gYXR0cmlidXRlcy4gKilcblxuYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4oKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgcGF5bG9hZCA9IFBhcnNldHJlZS5wYXlsb2FkID1cbiAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbPyBQXSBvciBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuYW5kIGNvcmVfdHlwZSA9IFBhcnNldHJlZS5jb3JlX3R5cGUgPSB7XG4gIHB0eXBfZGVzYyA6IGNvcmVfdHlwZV9kZXNjO1xuICBwdHlwX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlwX2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwdHlwX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvcmVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19LFxuICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZF19LFxuICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19LiAqKVxuICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXSByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlXG4gICAgICAgICAgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS4gKilcbiAgfCBQdHlwX2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLiAqKVxuICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19LFxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19LiAqKVxuICB8IFB0eXBfY2xhc3Mgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsjdGNvbnN0cl0gd2hlbiBbbD1bXV0sXG4gICAgICAgICAgLSBbVCAjdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbWyBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWz4gYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfSxcbiAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWzwgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uICopXG4gIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVxuICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZyB0byBhIGNvbnN0cmFpbnQgb24gYVxuICAgICAgICAgICAgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICB7W1xuICAgICAgICAgICAgbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXG4gICAgICAgICAgXX1cbiAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9XG4gICAgICAgICAgICBbUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX0gW1BleHBfcG9seV19XG4gICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9IFtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fSBbUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX0gW3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LiAqKVxuICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuYW5kIHBhY2thZ2VfdHlwZSA9IGxvbmdpZGVudF9sb2MgKiAobG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSkgbGlzdFxuKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG5cbiAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV0gcmVwcmVzZW50c1xuICAgICAgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uICopXG5cbmFuZCByb3dfZmllbGQgPSBQYXJzZXRyZWUucm93X2ZpZWxkID0ge1xuICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICBwcmZfbG9jIDogbG9jYXRpb247XG4gIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIHJvd19maWVsZF9kZXNjID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgIC0gW2BBIG9mIFRdIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYSBjb25zdGFudCAoZW1wdHkpXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvciAoc2VlXG4gICAgICAgICAgICA0LjIgaW4gdGhlIG1hbnVhbCkgKilcbiAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuYW5kIG9iamVjdF9maWVsZCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgPSB7XG4gIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gIHBvZl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbigqKiB7MiBQYXR0ZXJuc30gKilcblxuYW5kIHBhdHRlcm4gPSBQYXJzZXRyZWUucGF0dGVybiA9IHtcbiAgcHBhdF9kZXNjIDogcGF0dGVybl9kZXNjO1xuICBwcGF0X2xvYyA6IGxvY2F0aW9uO1xuICBwcGF0X2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwcGF0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHBhdHRlcm5fZGVzYyA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPVxuICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlciBidXQgcmVqZWN0ZWQgYnlcbiAgICAgICAgICB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBwYXRfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgUF0gd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXSAqKVxuICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdICopXG4gIHwgUHBhdF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19XG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19XG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgfCBQcGF0X3R5cGUgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICB8IFBwYXRfb3BlbiBvZiBsb25naWRlbnRfbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBleHByZXNzaW9uID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gPSB7XG4gIHBleHBfZGVzYyA6IGV4cHJlc3Npb25fZGVzYztcbiAgcGV4cF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcGV4cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBleHByZXNzaW9uX2Rlc2MgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgfCBQZXhwX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF0gKilcbiAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSxcbiAgICAgICAgICBbMW5dICopXG4gIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXMgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF1cblxuICAgICAgICAgIE5vdGVzOlxuXG4gICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5IHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn0gW1BleHBfZnVuXX0uXG4gICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1cbiAgICAgICAgICAgIFtQZXhwX2Z1bl19LiAqKVxuICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICBbbGldIGNhbiBiZSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSAobm9uIGxhYmVsZWRcbiAgICAgICAgICBhcmd1bWVudCksIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH0gW0xhYmVsbGVkXX0gKGxhYmVsbGVkXG4gICAgICAgICAgYXJndW1lbnRzKSBvciB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbF19IChvcHRpb25hbFxuICAgICAgICAgIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBleHBfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbQyBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV0gKilcbiAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0gKilcbiAgfCBQZXhwX3JlY29yZCBvZiAobG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICAoKiogW0UubF0gKilcbiAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdIHdoZW4gW2RpcmVjdGlvbl0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99IFtVcHRvXX1cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99IFtEb3dudG9dfSAqKVxuICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gWyhFIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLiAqKVxuICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICB8IFBleHBfbmV3IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbbmV3IE0uY10gKilcbiAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9IFtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgdmFsdWVzKS4gKilcbiAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG5hbmQgY2FzZSA9IFBhcnNldHJlZS5jYXNlID0ge1xuICBwY19saHMgOiBwYXR0ZXJuO1xuICBwY19ndWFyZCA6IGV4cHJlc3Npb24gb3B0aW9uO1xuICBwY19yaHMgOiBleHByZXNzaW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG5hbmQgbGV0b3AgPSBQYXJzZXRyZWUubGV0b3AgPSB7XG4gIGxldF8gOiBiaW5kaW5nX29wO1xuICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICBib2R5IDogZXhwcmVzc2lvbjtcbn1cblxuYW5kIGJpbmRpbmdfb3AgPSBQYXJzZXRyZWUuYmluZGluZ19vcCA9IHtcbiAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gIHBib3BfcGF0IDogcGF0dGVybjtcbiAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICBwYm9wX2xvYyA6IGxvY2F0aW9uO1xufVxuXG4oKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPSB7XG4gIHB2YWxfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHB2YWxfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcHZhbF9wcmltIDogc3RyaW5nIGxpc3Q7XG4gIHB2YWxfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB2YWxfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcblxuICAgIC0gW3ZhbCB4OiBUXSwgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19IFtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXSB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1cbiAgICAgIFtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXSAqKVxuXG4oKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHB0eXBlX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdHlwZV9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgcHR5cGVfY3N0cnMgOiAoY29yZV90eXBlICogY29yZV90eXBlICogbG9jYXRpb24pIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICBwdHlwZV9raW5kIDogdHlwZV9raW5kO1xuICBwdHlwZV9wcml2YXRlIDogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgcHR5cGVfbWFuaWZlc3QgOiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgcHR5cGVfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB0eXBlX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbiwgZm9yIHZhcmlvdXNcbiAgICB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9IFtwdHlwZV9raW5kXX0gYW5kXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH0gW3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuXG4gICAgLSBbdHlwZSB0XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDBdIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVxuICAgICAgW1B0eXBlX2Fic3RyYWN0XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9XG4gICAgICBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXNcbiAgICAgIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fSBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1cbiAgICAgIFtQdHlwZV9yZWNvcmRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfSBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSAuLl0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn0gW1B0eXBlX29wZW5dfSxcbiAgICAgIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXS4gKilcblxuYW5kIHR5cGVfa2luZCA9IFBhcnNldHJlZS50eXBlX2tpbmQgPVxuICB8IFB0eXBlX2Fic3RyYWN0XG4gIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gIHwgUHR5cGVfb3BlblxuXG5hbmQgbGFiZWxfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPSB7XG4gIHBsZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGxkX211dGFibGUgOiBtdXRhYmxlX2ZsYWc7XG4gIHBsZF90eXBlIDogY29yZV90eXBlO1xuICBwbGRfbG9jIDogbG9jYXRpb247XG4gIHBsZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW0BpZDFdIFtAaWQyXV0gKilcbn1cbigqKiAtIFt7IC4uLjsgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9IFtwbGRfbXV0YWJsZV19XG4gICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0sXG4gICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9XG4gICAgICBbcGxkX211dGFibGVdfSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX0gW011dGFibGVdfS5cblxuICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9IFtQdHlwX3BvbHldfS4gKilcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0ge1xuICBwY2RfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBjZF92YXJzIDogc3RyaW5nIGxvYyBsaXN0O1xuICBwY2RfYXJncyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgcGNkX3JlcyA6IGNvcmVfdHlwZSBvcHRpb247XG4gIHBjZF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY29uc3RydWN0b3JfYXJndW1lbnRzID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259IHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yXG4gICAgICAgICAgYXJndW1lbnRzIG9mOlxuXG4gICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDOiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDIG9mIHsuLi59XSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAgICAgICAtIFtDOiB7Li4ufSAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLiAqKVxuXG5hbmQgdHlwZV9leHRlbnNpb24gPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSB7XG4gIHB0eWV4dF9wYXRoIDogbG9uZ2lkZW50X2xvYztcbiAgcHR5ZXh0X3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHB0eWV4dF9jb25zdHJ1Y3RvcnMgOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgcHR5ZXh0X3ByaXZhdGUgOiBwcml2YXRlX2ZsYWc7XG4gIHB0eWV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbn1cbigqKiBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAoW3R5cGUgdCArPSAuLi5dKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSB7XG4gIHBleHRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICBwZXh0X2xvYyA6IGxvY2F0aW9uO1xuICBwZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgdHlwZV9leGNlcHRpb24gPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPSB7XG4gIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgcHR5ZXhuX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXSBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uXG4gICAgICAgICAgY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcblxuICAgICAgICAgIHt1bFxuICAgICAgICAgICB7LSBbQyBvZiBUMSAqIC4uLiAqIFRuXVxuICAgICAgICAgICAgICB3aGVuOlxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbTm9uZV0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgIH0gKilcbiAgfCBQZXh0X3JlYmluZCBvZiBsb25naWRlbnRfbG9jXG4gICAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX3R5cGUgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSA9IHtcbiAgcGN0eV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjO1xuICBwY3R5X2xvYyA6IGxvY2F0aW9uO1xuICBwY3R5X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICB8IFBjdHlfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbVCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgLSBbP2w6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19LiAqKVxuICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0ge1xuICBwY3NpZ19zZWxmIDogY29yZV90eXBlO1xuICBwY3NpZ19maWVsZHMgOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcblxuICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn0gW3Bjc2lnX3NlbGZdfSBpc1xuICAgICAge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9IFtQdHlwX2FueV19ICopXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPSB7XG4gIHBjdGZfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgcGN0Zl9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0Zl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG4gIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgJ2EgY2xhc3NfaW5mb3MgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgPSB7XG4gIHBjaV92aXJ0IDogdmlydHVhbF9mbGFnO1xuICBwY2lfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgcGNpX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2lfZXhwciA6ICdhO1xuICBwY2lfbG9jIDogbG9jYXRpb247XG4gIHBjaV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcblxuICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uICopXG5cbmFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX2V4cHIgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciA9IHtcbiAgcGNsX2Rlc2MgOiBjbGFzc19leHByX2Rlc2M7XG4gIHBjbF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICB8IFBjbF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmdW4gUCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1cbiAgICAgICAgICAgIFtOb2xhYmVsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXNcbiAgICAgICAgICAgIFtTb21lIEUwXS4gKilcbiAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLiBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yXG4gICAgICAgICAgc3RhcnQgd2l0aCBbP10gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG5hbmQgY2xhc3Nfc3RydWN0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9IHtcbiAgcGNzdHJfc2VsZiA6IHBhdHRlcm47XG4gIHBjc3RyX2ZpZWxkcyA6IGNsYXNzX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn0gW3Bjc3RyX3NlbGZdfSBpc1xuICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fSBbUHBhdF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfZmllbGQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgPSB7XG4gIHBjZl9kZXNjIDogY2xhc3NfZmllbGRfZGVzYztcbiAgcGNmX2xvYyA6IGxvY2F0aW9uO1xuICBwY2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19maWVsZF9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbaW5oZXJpdCBDRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9XG4gICAgICAgICAgICBbT3ZlcnJpZGVdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbU29tZSB4XSAqKVxuICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3ZhbCB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1cbiAgICAgICAgICAgIFtJbW11dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9XG4gICAgICAgICAgICBbTXV0YWJsZV19IGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9XG4gICAgICAgICAgICBbQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX0gKilcbiAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV0gKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVxuICAgICAgICAgICAgW1BleHBfcG9seV19KVxuICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVxuICAgICAgICAgICAgW1B0eXBfcG9seV19KSAqKVxuICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgY2xhc3NfZmllbGRfa2luZCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4oKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbmFuZCBtb2R1bGVfdHlwZSA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSA9IHtcbiAgcG10eV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYztcbiAgcG10eV9sb2MgOiBsb2NhdGlvbjtcbiAgcG10eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBtb2R1bGVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICB8IFBtdHlfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUG10eV9hbGlhcyBvZiBsb25naWRlbnRfbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbmFuZCBmdW5jdG9yX3BhcmFtZXRlciA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbmFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbmFuZCBzaWduYXR1cmVfaXRlbSA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9IHtcbiAgcHNpZ19kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgcHNpZ19sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gKilcbiAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gKilcbiAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICopXG4gIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgbW9kdWxlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG1kX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1kX3R5cGUgOiBtb2R1bGVfdHlwZTtcbiAgcG1kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbWRfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG5hbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID0ge1xuICBwbXNfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtc19tYW5pZmVzdCA6IGxvbmdpZGVudF9sb2M7XG4gIHBtc19hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1zX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbmFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG10ZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcG10ZF90eXBlIDogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICBwbXRkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbXRkX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW1MgPSBNVF0sXG4gICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCB3aGVuXG4gICAgICB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9IFtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uICopXG5cbmFuZCAnYSBvcGVuX2luZm9zID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgPSB7XG4gIHBvcGVuX2V4cHIgOiAnYTtcbiAgcG9wZW5fb3ZlcnJpZGUgOiBvdmVycmlkZV9mbGFnO1xuICBwb3Blbl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9wZW5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfSBbT3ZlcnJpZGVdfSAoc2lsZW5jZXMgdGhlIFwidXNlZFxuICAgICAgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX0gW3BvcGVuX292ZXJyaWRlXX0gaXNcbiAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9IFtGcmVzaF19ICopXG5cbmFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gbG9uZ2lkZW50X2xvYyBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT10gKilcblxuYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT11cbiAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG5hbmQgJ2EgaW5jbHVkZV9pbmZvcyA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zID0ge1xuICBwaW5jbF9tb2QgOiAnYTtcbiAgcGluY2xfbG9jIDogbG9jYXRpb247XG4gIHBpbmNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgfCBQd2l0aF90eXBlIG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIHRoZVxuICAgICAgICAgIHR5cGVfZGVjbGFyYXRpb24uICopXG4gIHwgUHdpdGhfbW9kdWxlIG9mIGxvbmdpZGVudF9sb2MgKiBsb25naWRlbnRfbG9jICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gIHwgUHdpdGhfbW9kdHlwZSBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgfCBQd2l0aF9tb2RzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX2V4cHIgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgPSB7XG4gIHBtb2RfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2M7XG4gIHBtb2RfbG9jIDogbG9jYXRpb247XG4gIHBtb2RfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgfCBQbW9kX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbWF0gKilcbiAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbmFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9IHtcbiAgcHN0cl9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgcHN0cl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgdmFsdWVfYmluZGluZyA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID0ge1xuICBwdmJfcGF0IDogcGF0dGVybjtcbiAgcHZiX2V4cHIgOiBleHByZXNzaW9uO1xuICBwdmJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHB2Yl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIG1vZHVsZV9iaW5kaW5nID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID0ge1xuICBwbWJfbmFtZSA6IHN0cmluZyBvcHRpb24gbG9jO1xuICBwbWJfZXhwciA6IG1vZHVsZV9leHByO1xuICBwbWJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHBtYl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbigqKiB7MSBUb3BsZXZlbH0gKilcbigqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG5hbmQgdG9wbGV2ZWxfcGhyYXNlID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG5hbmQgdG9wbGV2ZWxfZGlyZWN0aXZlID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSA9IHtcbiAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICBwZGlyX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50ID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9IHtcbiAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICBwZGlyYV9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICB8IFBkaXJfaWRlbnQgb2YgbG9uZ2lkZW50XG4gIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuYW5kIGNhc2VzID0gY2FzZSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1cblxuY2xhc3MgdmlydHVhbCBtYXAgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gYm9vbFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gc3RyaW5nXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gbG9jYXRpb24gPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBMYXBwbHkgKGEsIGIpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gbGFiZWwgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBOb2xhYmVsXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IGNvbnN0YW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfaW50ZWdlciAoYSwgYilcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9mbG9hdCAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBpblxuICAgICAgICB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQU3RyIGFcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQdHlwX3ZhciBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgUHR5cF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudCAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUnRhZyAoYSwgYiwgYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBPdGFnIChhLCBiKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHBhdHRlcm4gPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHBhdF92YXIgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUHBhdF9jb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X3R1cGxlIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQcGF0X3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vciAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUHBhdF90eXBlIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUGV4cF9jb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX21hdGNoIChhLCBiKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfdHVwbGUgYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9hcnJheSBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9sYXp5IGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBleHBfb2JqZWN0IGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIFBleHBfcGFjayBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IGNhc2UgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IGxldG9wID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiBiaW5kaW5nX29wID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBQdHlwZV9hYnN0cmFjdFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUGNzdHJfcmVjb3JkIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXh0X2RlY2wgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGN0eV9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIFBjbF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9tZXRob2QgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGNmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBpblxuICAgICAgICAgICAgUG10eV93aXRoIChhLCBiKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2FsaWFzIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gVW5pdFxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGV4dCBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kc3Vic3QgYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzcyBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhIGluY2x1ZGVfaW5mb3MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R1bGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG1vZF9pZGVudCBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBQbW9kX2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdmFsdWUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfb3BlbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9pbmNsdWRlIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kZWYgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBkaXJfaW50IChhLCBiKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBpdGVyID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBsaXN0IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wdGlvbiAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHVuaXRcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBzZWxmI3N0cmluZyBwb3NfZm5hbWU7XG4gICAgICAgIHNlbGYjaW50IHBvc19sbnVtO1xuICAgICAgICBzZWxmI2ludCBwb3NfYm9sO1xuICAgICAgICBzZWxmI2ludCBwb3NfY251bVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgICAgIHNlbGYjYm9vbCBsb2NfZ2hvc3RcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbG9jIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBfYSB0eHQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gbG9jXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBiXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gdW5pdCA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IHVuaXQgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKClcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+IHNlbGYjc3RyaW5nIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGNcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWU7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gYXR0cl9sb2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBUeXAgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKClcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGNcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgIGJcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHByZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNib29sIGI7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFJpbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG9mX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGE7XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGJcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBleHBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBkXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2FzZXMgYlxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjO1xuICAgICAgICAgICAgc2VsZiNkaXJlY3Rpb25fZmxhZyBkO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGVcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYlxuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+ICgpXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNfbGhzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwY19yaHNcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHNlbGYjYmluZGluZ19vcCBsZXRfO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHM7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBib2R5XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcDtcbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBib3BfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGJvcF9sb2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNsb2NhdGlvbiBjKVxuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+ICgpXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWU7XG4gICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbGRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnM7XG4gICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGg7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lO1xuICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXh0X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGJcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBjbGFzc19pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwY2lfcGFyYW1zO1xuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZTtcbiAgICAgICAgX2EgcGNpX2V4cHI7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNpX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBkXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGJcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2ZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXR5X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGJcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+ICgpXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT4gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZTtcbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtZF9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWU7XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXNfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXRkX2xvY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wZW5faW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcG9wZW5fZXhwcjtcbiAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcGluY2xfbW9kO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGJcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHN0cl9sb2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPiBzZWxmI29wZW5fZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2Yl9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWJfbG9jXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGxvY19naG9zdCBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBsb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBhY2NcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGEgYWNjXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IGFjY1xuICAgICAgICB8IFB0eXBfdmFyIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT4gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IGFjY1xuICAgICAgICB8IFBwYXRfdmFyIGEgLT4gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPiBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPiBzZWxmI2Nhc2VzIGEgYWNjXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPiBzZWxmI21vZHVsZV9leHByIGEgYWNjXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+IHNlbGYjbGV0b3AgYSBhY2NcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBhY2NcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IGFjY1xuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBhY2NcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGEgYWNjXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBfYSBwY2lfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwb3Blbl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwaW5jbF9tb2QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjY1xuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYSBhY2NcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPiBzZWxmI2Jvb2wgYSBhY2NcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydhY2NdIGZvbGRfbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gYm9vbCAqICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+IGNoYXIgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdhY2MgLT4gaW50ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdFxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYSBsaXN0ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2Egb3B0aW9uICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gc3RyaW5nICogJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiBwb3NpdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSwgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2xudW0sIGFjYyA9IHNlbGYjaW50IHBvc19sbnVtIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2JvbCwgYWNjID0gc2VsZiNpbnQgcG9zX2JvbCBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgKHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiBsb2NhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZW5kLCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QsIGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgICh7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdhY2MgLT4gbG9jYXRpb25fc3RhY2sgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2EgbG9jICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgdHh0LCBhY2MgPSBfYSB0eHQgYWNjIGluXG4gICAgICAgIGxldCBsb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICAoeyB0eHQ7IGxvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdhY2MgLT4gbG9uZ2lkZW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKExpZGVudCBhLCBhY2MpXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoTGRvdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgKExhcHBseSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAnYWNjIC0+IGxvbmdpZGVudF9sb2MgKiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+IHJlY19mbGFnICogJ2FjYyA9IGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiBkaXJlY3Rpb25fZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gcHJpdmF0ZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiBtdXRhYmxlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAnYWNjIC0+IHZpcnR1YWxfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiBvdmVycmlkZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gY2xvc2VkX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ2FjYyAtPiBsYWJlbCAqICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+IGFyZ19sYWJlbCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIGFjYylcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMYWJlbGxlZCBhLCBhY2MpXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoT3B0aW9uYWwgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiB2YXJpYW5jZSAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gaW5qZWN0aXZpdHkgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ2FjYyAtPiBjb25zdGFudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2ludGVnZXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2hhciBhIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9jaGFyIGEsIGFjYylcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2NhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X3N0cmluZyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfZmxvYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gYXR0cmlidXRlICogJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkLCBhY2MgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgICh7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdhY2MgLT4gZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF5bG9hZCBiIGFjYyBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiBhdHRyaWJ1dGVzICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAnYWNjIC0+IHBheWxvYWQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTdHIgYSwgYWNjKVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFNpZyBhLCBhY2MpXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQVHlwIGEsIGFjYylcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBQYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gY29yZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MsIGFjYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXIgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NsYXNzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYWxpYXMgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXJpYW50IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3BhY2thZ2UgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ2FjYyAtPiBwYWNrYWdlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgICgoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiByb3dfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MsIGFjYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiByb3dfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFJ0YWcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUmluaGVyaXQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+IG9iamVjdF9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYywgYWNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAnYWNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChPdGFnIChhLCBiKSwgYWNjKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKE9pbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+IHBhdHRlcm4gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYywgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdhY2MgLT4gcGF0dGVybl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF92YXIgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9pbnRlcnZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FycmF5IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90eXBlIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAnYWNjIC0+IGV4cHJlc3Npb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYywgYWNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RhbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjYXNlcyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuY3Rpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbWF0Y2ggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdHJ5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9yZWNvcmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZpZWxkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRmaWVsZCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VxdWVuY2UgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3doaWxlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBlLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSksIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29lcmNlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZW5kIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ldyBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NldGluc3R2YXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX292ZXJyaWRlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXNzZXJ0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb2JqZWN0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ld3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGV0b3AgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG9wIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoUGV4cF91bnJlYWNoYWJsZSwgYWNjKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdhY2MgLT4gY2FzZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY19saHMsIGFjYyA9IHNlbGYjcGF0dGVybiBwY19saHMgYWNjIGluXG4gICAgICAgIGxldCBwY19ndWFyZCwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgcGNfcmhzLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGFjYyBpblxuICAgICAgICAoeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiBsZXRvcCAqICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgbGV0XywgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhbmRzLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBib2R5LCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgKHsgbGV0XzsgYW5kczsgYm9keSB9LCBhY2MpXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiBiaW5kaW5nX29wICogJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwYm9wX29wLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IHZhbHVlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9wcmltLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQsIGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QsIGFjYyA9XG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+IHR5cGVfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChQdHlwZV9hYnN0cmFjdCwgYWNjKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cGVfdmFyaWFudCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3JlY29yZCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoUHR5cGVfb3BlbiwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBsYWJlbF9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2RfdmFycywgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBwY2RfYXJncywgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgYWNjIGluXG4gICAgICAgIGxldCBwY2RfcmVzLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjc3RyX3JlY29yZCBhLCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAnYWNjIC0+IHR5cGVfZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gdHlwZV9leGNlcHRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciwgYWNjID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfZGVjbCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4dF9yZWJpbmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gY2xhc3NfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2Fycm93IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGFjYyBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjY1xuICAgICAgICBpblxuICAgICAgICAoeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc190eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9pbmhlcml0IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICBhY2MgLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0LCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2lfZXhwciwgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwY2lfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiBjbGFzc19leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNsX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBkIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjbF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19leHByIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2xldCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3N0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGFjYyBpblxuICAgICAgICAoeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiBjbGFzc19maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2luaGVyaXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9tZXRob2QgYSwgYWNjKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbml0aWFsaXplciBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gY2xhc3NfZmllbGRfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKENma192aXJ0dWFsIGEsIGFjYylcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoQ2ZrX2NvbmNyZXRlIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzY1xuICAgICAgICA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9zaWduYXR1cmUgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfZnVuY3RvciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfd2l0aCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfdHlwZW9mIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9hbGlhcyBhLCBhY2MpXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgYWNjKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoTmFtZWQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdhY2MgLT4gc2lnbmF0dXJlICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiBzaWduYXR1cmVfaXRlbSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjLCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgYWNjIGluXG4gICAgICAgICh7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3ZhbHVlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZXN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2luY2x1ZGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1kX3R5cGUsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1zX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciwgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCwgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgcGluY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiB3aXRoX2NvbnN0cmFpbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHVsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlc3Vic3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kc3Vic3QgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+IG1vZHVsZV9leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2Rfc3RydWN0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAnYWNjIC0+IHN0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gc3RydWN0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYywgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9ldmFsIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3ZhbHVlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9wcmltaXRpdmUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZXh0IGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzX3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAnYWNjIC0+IHZhbHVlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZiX3BhdCwgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwdmJfZXhwciwgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gbW9kdWxlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2V4cHIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiB0b3BsZXZlbF9waHJhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdG9wX2RlZiBhLCBhY2MpXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kaXIgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9hcmcsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ2FjYyAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYywgYWNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX3N0cmluZyBhLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2ludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNib29sIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9ib29sIGEsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gY2FzZXMgKiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogJ2N0eCAtPiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogJ2N0eCAtPiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9XG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiAnY3R4IC0+IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6ICdjdHggLT4gbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyA9XG4gICAgICBmdW4gX2EgY3R4IHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgY3R4IHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggbG9jIGluXG4gICAgICAgIHsgdHh0OyBsb2MgfVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6ICdjdHggLT4gbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIExkb3QgKGEsIGIpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBjdHggYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogJ2N0eCAtPiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbGFiZWwgOiAnY3R4IC0+IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExhYmVsbGVkIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjb25zdF9jaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGN0eCBjIGluXG4gICAgICAgICAgICBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogJ2N0eCAtPiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6ICdjdHggLT4gZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQU2lnIGFcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBQYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgY3R4IHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdHVwbGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogJ2N0eCAtPiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUmluaGVyaXQgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBPaW5oZXJpdCBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biBjdHggeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIGN0eCBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfYXJyYXkgYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2xhenkgYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9mdW5jdGlvbiBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfd2hpbGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VuZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2V0aW5zdHZhciAoYSwgYilcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBQZXhwX3VucmVhY2hhYmxlXG5cbiAgICBtZXRob2QgY2FzZSA6ICdjdHggLT4gY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfVxuXG4gICAgbWV0aG9kIGxldG9wIDogJ2N0eCAtPiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICB7IGxldF87IGFuZHM7IGJvZHkgfVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiAnY3R4IC0+IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiAnY3R4IC0+IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIGN0eCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6ICdjdHggLT4gdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3ZhcmlhbnQgYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXh0X3JlYmluZCBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biBjdHggeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgY3R4IHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjdHlfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGN0eV9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4gY3R4IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBjdHggcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBjdHggcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfaW5oZXJpdCBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX3ZhbCBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX21ldGhvZCBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBjdHggcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjbF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGN0eCBjIGluXG4gICAgICAgICAgICBQY2xfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9leHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIGN0eCBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBjdHggcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBjdHggcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl92YWwgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6ICdjdHggLT4gY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBDZmtfY29uY3JldGUgKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiAnY3R4IC0+IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfaWRlbnQgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG10eV9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfdHlwZW9mIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiAnY3R4IC0+IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHNpZ190eXBlIChhLCBiKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX29wZW4gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zXG4gICAgICAgID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2Rfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4gY3R4IHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgY3R4IHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V2YWwgKGEsIGIpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9wcmltaXRpdmUgYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3R5cGV4dCBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzcyBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RpciBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfaWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3B0aW9uIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIHBvc19mbmFtZSk7XG4gICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBwb3NfbG51bSk7XG4gICAgICAgICAgICAoXCJwb3NfYm9sXCIsIHBvc19ib2wpO1xuICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgcG9zX2NudW0pO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJsb2Nfc3RhcnRcIiwgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgIChcImxvY19lbmRcIiwgbG9jX2VuZCk7XG4gICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgbG9jX2dob3N0KTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxvYyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJ0eHRcIiwgdHh0KTsgKFwibG9jXCIsIGxvYykgXVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGlkZW50XCIgWyBhIF1cbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGRvdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGFwcGx5XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAncmVzID0gc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiTm9ucmVjdXJzaXZlXCIgW11cbiAgICAgICAgfCBSZWN1cnNpdmUgLT4gc2VsZiNjb25zdHIgXCJSZWN1cnNpdmVcIiBbXVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVcHRvIC0+IHNlbGYjY29uc3RyIFwiVXB0b1wiIFtdXG4gICAgICAgIHwgRG93bnRvIC0+IHNlbGYjY29uc3RyIFwiRG93bnRvXCIgW11cblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcml2YXRlIC0+IHNlbGYjY29uc3RyIFwiUHJpdmF0ZVwiIFtdXG4gICAgICAgIHwgUHVibGljIC0+IHNlbGYjY29uc3RyIFwiUHVibGljXCIgW11cblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbW11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJJbW11dGFibGVcIiBbXVxuICAgICAgICB8IE11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJNdXRhYmxlXCIgW11cblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBWaXJ0dWFsIC0+IHNlbGYjY29uc3RyIFwiVmlydHVhbFwiIFtdXG4gICAgICAgIHwgQ29uY3JldGUgLT4gc2VsZiNjb25zdHIgXCJDb25jcmV0ZVwiIFtdXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdmVycmlkZSAtPiBzZWxmI2NvbnN0ciBcIk92ZXJyaWRlXCIgW11cbiAgICAgICAgfCBGcmVzaCAtPiBzZWxmI2NvbnN0ciBcIkZyZXNoXCIgW11cblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+IHNlbGYjY29uc3RyIFwiQ2xvc2VkXCIgW11cbiAgICAgICAgfCBPcGVuIC0+IHNlbGYjY29uc3RyIFwiT3BlblwiIFtdXG5cbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IHNlbGYjY29uc3RyIFwiTm9sYWJlbFwiIFtdXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhYmVsbGVkXCIgWyBhIF1cbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3B0aW9uYWxcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDb3ZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb3ZhcmlhbnRcIiBbXVxuICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb250cmF2YXJpYW50XCIgW11cbiAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IHNlbGYjY29uc3RyIFwiTm9WYXJpYW5jZVwiIFtdXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IEluamVjdGl2ZSAtPiBzZWxmI2NvbnN0ciBcIkluamVjdGl2ZVwiIFtdXG4gICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiBzZWxmI2NvbnN0ciBcIk5vSW5qZWN0aXZpdHlcIiBbXVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfaW50ZWdlclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfY2hhclwiIFsgYSBdXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3Rfc3RyaW5nXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2Zsb2F0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJhdHRyX25hbWVcIiwgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBhdHRyX3BheWxvYWQpO1xuICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgYXR0cl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU3RyXCIgWyBhIF1cbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU2lnXCIgWyBhIF1cbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQVHlwXCIgWyBhIF1cbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQUGF0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBfZGVzY1wiLCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgcHR5cF9sb2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHR5cF9hdHRyaWJ1dGVzXCIsIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBzZWxmI2NvbnN0ciBcIlB0eXBfYW55XCIgW11cbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9vYmplY3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY2xhc3NcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJpYW50XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3BvbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wYWNrYWdlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwcmZfbG9jXCIsIHByZl9sb2MpO1xuICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgcHJmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlJ0YWdcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBwb2ZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIHBvZl9sb2MpO1xuICAgICAgICAgICAgKFwicG9mX2F0dHJpYnV0ZXNcIiwgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3RhZ1wiIFsgYTsgYiBdXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9pbmhlcml0XCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBwcGF0X2Rlc2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgcHBhdF9sb2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2Nfc3RhY2tcIiwgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIHBwYXRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IHNlbGYjY29uc3RyIFwiUHBhdF9hbnlcIiBbXVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhclwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9pbnRlcnZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RydWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhcmlhbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2xhenlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdW5wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBwZXhwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgcGV4cF9sb2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIHBleHBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuY3Rpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX21hdGNoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHJ5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZmllbGRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0ZmllbGRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lmdGhlbmVsc2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VxdWVuY2VcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfd2hpbGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mb3JcIiBbIGE7IGI7IGM7IGQ7IGUgXVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb2VyY2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VuZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld1wiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXRpbnN0dmFyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3ZlcnJpZGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0bW9kdWxlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Fzc2VydFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vYmplY3RcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3BhY2tcIiBbIGEgXVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vcGVuXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0b3BcIiBbIGEgXVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBzZWxmI2NvbnN0ciBcIlBleHBfdW5yZWFjaGFibGVcIiBbXVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY19saHNcIiwgcGNfbGhzKTsgKFwicGNfZ3VhcmRcIiwgcGNfZ3VhcmQpOyAoXCJwY19yaHNcIiwgcGNfcmhzKSBdXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJsZXRfXCIsIGxldF8pOyAoXCJhbmRzXCIsIGFuZHMpOyAoXCJib2R5XCIsIGJvZHkpIF1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGJvcF9vcFwiLCBwYm9wX29wKTtcbiAgICAgICAgICAgIChcInBib3BfcGF0XCIsIHBib3BfcGF0KTtcbiAgICAgICAgICAgIChcInBib3BfZXhwXCIsIHBib3BfZXhwKTtcbiAgICAgICAgICAgIChcInBib3BfbG9jXCIsIHBib3BfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBwdmFsX25hbWUpO1xuICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAoXCJwdmFsX3ByaW1cIiwgcHZhbF9wcmltKTtcbiAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBwdmFsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgcHZhbF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gYyBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgcHR5cGVfbmFtZSk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInB0eXBlX2NzdHJzXCIsIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgcHR5cGVfa2luZCk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5cGVfbWFuaWZlc3RcIiwgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBwdHlwZV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBwdHlwZV9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX2Fic3RyYWN0XCIgW11cbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV92YXJpYW50XCIgWyBhIF1cbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBlX3JlY29yZFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX29wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBsZF9uYW1lXCIsIHBsZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIHBsZF9tdXRhYmxlKTtcbiAgICAgICAgICAgIChcInBsZF90eXBlXCIsIHBsZF90eXBlKTtcbiAgICAgICAgICAgIChcInBsZF9sb2NcIiwgcGxkX2xvYyk7XG4gICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBwbGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2RfbmFtZVwiLCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBwY2RfdmFycyk7XG4gICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBwY2RfYXJncyk7XG4gICAgICAgICAgICAoXCJwY2RfcmVzXCIsIHBjZF9yZXMpO1xuICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBwY2RfbG9jKTtcbiAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl9yZWNvcmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIHB0eWV4dF9wYXRoKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfY29uc3RydWN0b3JzXCIsIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgcHR5ZXh0X3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9hdHRyaWJ1dGVzXCIsIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZXh0X2tpbmRcIiwgcGV4dF9raW5kKTtcbiAgICAgICAgICAgIChcInBleHRfbG9jXCIsIHBleHRfbG9jKTtcbiAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgIChcInB0eWV4bl9sb2NcIiwgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBwdHlleG5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHRfZGVjbFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X3JlYmluZFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdHlfbG9jXCIsIHBjdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBwY3R5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc2lnX3NlbGZcIiwgcGNzaWdfc2VsZik7IChcInBjc2lnX2ZpZWxkc1wiLCBwY3NpZ19maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9sb2NcIiwgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIHBjdGZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfaW5oZXJpdFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX3ZhbFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfY29uc3RyYWludFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIHBjaV92aXJ0KTtcbiAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwY2lfbmFtZVwiLCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBwY2lfZXhwcik7XG4gICAgICAgICAgICAoXCJwY2lfbG9jXCIsIHBjaV9sb2MpO1xuICAgICAgICAgICAgKFwicGNpX2F0dHJpYnV0ZXNcIiwgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBwY2xfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY2xfbG9jXCIsIHBjbF9sb2MpO1xuICAgICAgICAgICAgKFwicGNsX2F0dHJpYnV0ZXNcIiwgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9mdW5cIiBbIGE7IGI7IGM7IGQgXVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNzdHJfc2VsZlwiLCBwY3N0cl9zZWxmKTsgKFwicGNzdHJfZmllbGRzXCIsIHBjc3RyX2ZpZWxkcykgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgcGNmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBwY2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBjZl9hdHRyaWJ1dGVzXCIsIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbmhlcml0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbml0aWFsaXplclwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX3ZpcnR1YWxcIiBbIGEgXVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX2NvbmNyZXRlXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdHlfZGVzY1wiLCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgcG10eV9sb2MpO1xuICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZnVuY3RvclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV93aXRoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3R5cGVvZlwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9hbGlhc1wiIFsgYSBdXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gc2VsZiNjb25zdHIgXCJVbml0XCIgW11cbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJOYW1lZFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzaWdfZGVzY1wiLCBwc2lnX2Rlc2MpOyAoXCJwc2lnX2xvY1wiLCBwc2lnX2xvYykgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3ZhbHVlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgcG1kX25hbWUpO1xuICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgcG1kX3R5cGUpO1xuICAgICAgICAgICAgKFwicG1kX2F0dHJpYnV0ZXNcIiwgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBwbWRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtc19uYW1lXCIsIHBtc19uYW1lKTtcbiAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicG1zX2F0dHJpYnV0ZXNcIiwgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBwbXNfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgKFwicG10ZF90eXBlXCIsIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgcG10ZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIHBtdGRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9wZW5fZXhwclwiLCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIHBvcGVuX292ZXJyaWRlKTtcbiAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgKFwicG9wZW5fYXR0cmlidXRlc1wiLCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgcGluY2xfbW9kKTtcbiAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgKFwicGluY2xfYXR0cmlidXRlc1wiLCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHVsZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVzdWJzdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2RzdWJzdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgIChcInBtb2RfbG9jXCIsIHBtb2RfbG9jKTtcbiAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBwbW9kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9zdHJ1Y3R1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicHN0cl9kZXNjXCIsIHBzdHJfZGVzYyk7IChcInBzdHJfbG9jXCIsIHBzdHJfbG9jKSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ZhbHVlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ByaW1pdGl2ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl90eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX29wZW5cIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfaW5jbHVkZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4dGVuc2lvblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHB2Yl9wYXQpO1xuICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgcHZiX2V4cHIpO1xuICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBwdmJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1iX25hbWVcIiwgcG1iX25hbWUpO1xuICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgcG1iX2V4cHIpO1xuICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1iX2xvY1wiLCBwbWJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGVmXCIgWyBhIF1cbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHRvcF9kaXJcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGRpcl9uYW1lXCIsIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBwZGlyX2FyZyk7XG4gICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBwZGlyX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBkaXJhX2Rlc2NcIiwgcGRpcmFfZGVzYyk7IChcInBkaXJhX2xvY1wiLCBwZGlyYV9sb2MpIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfc3RyaW5nXCIgWyBhIF1cbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2ludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9ib29sXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2wgKiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICdjdHggLT4gaW50IC0+IGludCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZyAqICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBjdHggcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IGN0eCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IGN0eCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IGN0eCBwb3NfY251bSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvc19mbmFtZSA9IFN0ZGxpYi5mc3QgcG9zX2ZuYW1lO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBTdGRsaWIuZnN0IHBvc19sbnVtO1xuICAgICAgICAgICAgcG9zX2JvbCA9IFN0ZGxpYi5mc3QgcG9zX2JvbDtcbiAgICAgICAgICAgIHBvc19jbnVtID0gU3RkbGliLmZzdCBwb3NfY251bTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3NfZm5hbWVcIiwgU3RkbGliLnNuZCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBTdGRsaWIuc25kIHBvc19sbnVtKTtcbiAgICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBTdGRsaWIuc25kIHBvc19ib2wpO1xuICAgICAgICAgICAgICAoXCJwb3NfY251bVwiLCBTdGRsaWIuc25kIHBvc19jbnVtKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBjdHggbG9jX2dob3N0IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbG9jX3N0YXJ0ID0gU3RkbGliLmZzdCBsb2Nfc3RhcnQ7XG4gICAgICAgICAgICBsb2NfZW5kID0gU3RkbGliLmZzdCBsb2NfZW5kO1xuICAgICAgICAgICAgbG9jX2dob3N0ID0gU3RkbGliLmZzdCBsb2NfZ2hvc3Q7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIFN0ZGxpYi5zbmQgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgICAgKFwibG9jX2VuZFwiLCBTdGRsaWIuc25kIGxvY19lbmQpO1xuICAgICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgU3RkbGliLnNuZCBsb2NfZ2hvc3QpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICAoIHsgdHh0ID0gU3RkbGliLmZzdCB0eHQ7IGxvYyA9IFN0ZGxpYi5mc3QgbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4IFsgKFwidHh0XCIsIFN0ZGxpYi5zbmQgdHh0KTsgKFwibG9jXCIsIFN0ZGxpYi5zbmQgbG9jKSBdXG4gICAgICAgIClcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKExpZGVudCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiTGlkZW50XCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBMZG90IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxkb3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGFwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxhcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6ICdjdHggLT4gbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jICogJ3JlcyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6ICdjdHggLT4gcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogJ2N0eCAtPiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCAqICdyZXMgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6ICdjdHggLT4gYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIHNlbGYjY29uc3RyIGN0eCBcIk5vbGFiZWxcIiBbXSlcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIExhYmVsbGVkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYWJlbGxlZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggT3B0aW9uYWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9wdGlvbmFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiAnY3R4IC0+IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiAnY3R4IC0+IGNvbnN0YW50IC0+IGNvbnN0YW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfaW50ZWdlciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfaW50ZWdlclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2NoYXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9jaGFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgKCBQY29uc3Rfc3RyaW5nIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X3N0cmluZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjb25zdF9mbG9hdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfZmxvYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgY3R4IGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBhdHRyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGF0dHJfbmFtZSA9IFN0ZGxpYi5mc3QgYXR0cl9uYW1lO1xuICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gU3RkbGliLmZzdCBhdHRyX3BheWxvYWQ7XG4gICAgICAgICAgICBhdHRyX2xvYyA9IFN0ZGxpYi5mc3QgYXR0cl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIFN0ZGxpYi5zbmQgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9wYXlsb2FkXCIsIFN0ZGxpYi5zbmQgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgU3RkbGliLnNuZCBhdHRyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgY3R4IGIgaW5cbiAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6ICdjdHggLT4gYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU3RyIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU3RyXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU2lnIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU2lnXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQVHlwIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQVHlwXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBQYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUFBhdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gU3RkbGliLmZzdCBwdHlwX2Rlc2M7XG4gICAgICAgICAgICBwdHlwX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgU3RkbGliLnNuZCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwdHlwX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwdHlwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoUHR5cF9hbnksIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYW55XCIgW10pXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9vYmplY3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9jbGFzcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NsYXNzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3ZhcmlhbnRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfcGFja2FnZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wYWNrYWdlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgY3R4IHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHJmX2Rlc2MgPSBTdGRsaWIuZnN0IHByZl9kZXNjO1xuICAgICAgICAgICAgcHJmX2xvYyA9IFN0ZGxpYi5mc3QgcHJmX2xvYztcbiAgICAgICAgICAgIHByZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcmZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBTdGRsaWIuc25kIHByZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBTdGRsaWIuc25kIHByZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcmZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBSdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUnRhZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUmluaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJpbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogJ2N0eCAtPiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb2ZfZGVzYyA9IFN0ZGxpYi5mc3QgcG9mX2Rlc2M7XG4gICAgICAgICAgICBwb2ZfbG9jID0gU3RkbGliLmZzdCBwb2ZfbG9jO1xuICAgICAgICAgICAgcG9mX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIFN0ZGxpYi5zbmQgcG9mX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBPdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk90YWdcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggT2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IFN0ZGxpYi5mc3QgcHBhdF9kZXNjO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBTdGRsaWIuZnN0IHBwYXRfbG9jO1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHBhdF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgU3RkbGliLnNuZCBwcGF0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwcGF0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FueVwiIFtdKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfYWxpYXMgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbGlhc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2ludGVydmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfaW50ZXJ2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfcmVjb3JkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2FycmF5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FycmF5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X29yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF90eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF91bnBhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdW5wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6ICdjdHggLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IFN0ZGxpYi5mc3QgcGV4cF9kZXNjO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBTdGRsaWIuZnN0IHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBleHBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgU3RkbGliLnNuZCBwZXhwX2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwZXhwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogJ2N0eCAtPiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1bmN0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1bmN0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBleHBfZnVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9tYXRjaCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX21hdGNoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF90cnkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF90cnlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cnVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cnVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF92YXJpYW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2ZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZmllbGRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0ZmllbGQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGZpZWxkXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9pZnRoZW5lbHNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZnRoZW5lbHNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlcXVlbmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2VxdWVuY2VcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF93aGlsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3doaWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBjdHggZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGUgaW5cbiAgICAgICAgICAgICggUGV4cF9mb3JcbiAgICAgICAgICAgICAgICAoIFN0ZGxpYi5mc3QgYSxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYixcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYyxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZCxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZSApLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZvclwiXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBhO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBiO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBjO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBkO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBlO1xuICAgICAgICAgICAgICAgIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfY29lcmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb2VyY2VcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2VuZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlbmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXRpbnN0dmFyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2V0aW5zdHZhclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfb3ZlcnJpZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3ZlcnJpZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG1vZHVsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0bW9kdWxlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2xldGV4Y2VwdGlvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXNzZXJ0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Fzc2VydFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xhenkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGF6eVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9uZXd0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbmV3dHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3BhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG9wIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG9wXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICAgICAgICAoUGV4cF91bnJlYWNoYWJsZSwgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF91bnJlYWNoYWJsZVwiIFtdKVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gY3R4IHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX3JocyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjX2xocyA9IFN0ZGxpYi5mc3QgcGNfbGhzO1xuICAgICAgICAgICAgcGNfZ3VhcmQgPSBTdGRsaWIuZnN0IHBjX2d1YXJkO1xuICAgICAgICAgICAgcGNfcmhzID0gU3RkbGliLmZzdCBwY19yaHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNfbGhzXCIsIFN0ZGxpYi5zbmQgcGNfbGhzKTtcbiAgICAgICAgICAgICAgKFwicGNfZ3VhcmRcIiwgU3RkbGliLnNuZCBwY19ndWFyZCk7XG4gICAgICAgICAgICAgIChcInBjX3Joc1wiLCBTdGRsaWIuc25kIHBjX3Jocyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgY3R4IGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGN0eCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGN0eCBib2R5IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbGV0XyA9IFN0ZGxpYi5mc3QgbGV0XztcbiAgICAgICAgICAgIGFuZHMgPSBTdGRsaWIuZnN0IGFuZHM7XG4gICAgICAgICAgICBib2R5ID0gU3RkbGliLmZzdCBib2R5O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxldF9cIiwgU3RkbGliLnNuZCBsZXRfKTtcbiAgICAgICAgICAgICAgKFwiYW5kc1wiLCBTdGRsaWIuc25kIGFuZHMpO1xuICAgICAgICAgICAgICAoXCJib2R5XCIsIFN0ZGxpYi5zbmQgYm9keSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGJvcF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwYm9wX29wID0gU3RkbGliLmZzdCBwYm9wX29wO1xuICAgICAgICAgICAgcGJvcF9wYXQgPSBTdGRsaWIuZnN0IHBib3BfcGF0O1xuICAgICAgICAgICAgcGJvcF9leHAgPSBTdGRsaWIuZnN0IHBib3BfZXhwO1xuICAgICAgICAgICAgcGJvcF9sb2MgPSBTdGRsaWIuZnN0IHBib3BfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBib3Bfb3BcIiwgU3RkbGliLnNuZCBwYm9wX29wKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9wYXRcIiwgU3RkbGliLnNuZCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAgIChcInBib3BfZXhwXCIsIFN0ZGxpYi5zbmQgcGJvcF9leHApO1xuICAgICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBTdGRsaWIuc25kIHBib3BfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIGN0eCBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2YWxfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHZhbF9uYW1lID0gU3RkbGliLmZzdCBwdmFsX25hbWU7XG4gICAgICAgICAgICBwdmFsX3R5cGUgPSBTdGRsaWIuZnN0IHB2YWxfdHlwZTtcbiAgICAgICAgICAgIHB2YWxfcHJpbSA9IFN0ZGxpYi5mc3QgcHZhbF9wcmltO1xuICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmFsX2xvYyA9IFN0ZGxpYi5mc3QgcHZhbF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHZhbF9uYW1lXCIsIFN0ZGxpYi5zbmQgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIFN0ZGxpYi5zbmQgcHZhbF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIFN0ZGxpYi5zbmQgcHZhbF9wcmltKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgU3RkbGliLnNuZCBwdmFsX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZSA9IFN0ZGxpYi5mc3QgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBTdGRsaWIuZnN0IHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZCA9IFN0ZGxpYi5mc3QgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBTdGRsaWIuZnN0IHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IFN0ZGxpYi5mc3QgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jID0gU3RkbGliLmZzdCBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbmFtZVwiLCBTdGRsaWIuc25kIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlwZV9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBTdGRsaWIuc25kIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfa2luZFwiLCBTdGRsaWIuc25kIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIFN0ZGxpYi5zbmQgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBlX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX2Fic3RyYWN0XCIgW10pXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBlX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV9yZWNvcmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX29wZW5cIiBbXSlcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBjdHggcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGxkX25hbWUgPSBTdGRsaWIuZnN0IHBsZF9uYW1lO1xuICAgICAgICAgICAgcGxkX211dGFibGUgPSBTdGRsaWIuZnN0IHBsZF9tdXRhYmxlO1xuICAgICAgICAgICAgcGxkX3R5cGUgPSBTdGRsaWIuZnN0IHBsZF90eXBlO1xuICAgICAgICAgICAgcGxkX2xvYyA9IFN0ZGxpYi5mc3QgcGxkX2xvYztcbiAgICAgICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbGRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBTdGRsaWIuc25kIHBsZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGxkX211dGFibGVcIiwgU3RkbGliLnNuZCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAgIChcInBsZF90eXBlXCIsIFN0ZGxpYi5zbmQgcGxkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfbG9jXCIsIFN0ZGxpYi5zbmQgcGxkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBsZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNkX25hbWUgPSBTdGRsaWIuZnN0IHBjZF9uYW1lO1xuICAgICAgICAgICAgcGNkX3ZhcnMgPSBTdGRsaWIuZnN0IHBjZF92YXJzO1xuICAgICAgICAgICAgcGNkX2FyZ3MgPSBTdGRsaWIuZnN0IHBjZF9hcmdzO1xuICAgICAgICAgICAgcGNkX3JlcyA9IFN0ZGxpYi5mc3QgcGNkX3JlcztcbiAgICAgICAgICAgIHBjZF9sb2MgPSBTdGRsaWIuZnN0IHBjZF9sb2M7XG4gICAgICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgU3RkbGliLnNuZCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjZF92YXJzXCIsIFN0ZGxpYi5zbmQgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBTdGRsaWIuc25kIHBjZF9hcmdzKTtcbiAgICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBTdGRsaWIuc25kIHBjZF9yZXMpO1xuICAgICAgICAgICAgICAoXCJwY2RfbG9jXCIsIFN0ZGxpYi5zbmQgcGNkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjc3RyX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6ICdjdHggLT4gdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aCA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zID0gU3RkbGliLmZzdCBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3BhdGhcIiwgU3RkbGliLnNuZCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlleHRfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXh0X25hbWUgPSBTdGRsaWIuZnN0IHBleHRfbmFtZTtcbiAgICAgICAgICAgIHBleHRfa2luZCA9IFN0ZGxpYi5mc3QgcGV4dF9raW5kO1xuICAgICAgICAgICAgcGV4dF9sb2MgPSBTdGRsaWIuZnN0IHBleHRfbG9jO1xuICAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGV4dF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIFN0ZGxpYi5zbmQgcGV4dF9raW5kKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9sb2NcIiwgU3RkbGliLnNuZCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6ICdjdHggLT4gdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICAgICAgcHR5ZXhuX2xvYyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2xvYztcbiAgICAgICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgU3RkbGliLnNuZCBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eWV4bl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4dF9kZWNsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4dF9kZWNsXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4dF9yZWJpbmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfcmViaW5kXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gU3RkbGliLmZzdCBwY3R5X2Rlc2M7XG4gICAgICAgICAgICBwY3R5X2xvYyA9IFN0ZGxpYi5mc3QgcGN0eV9sb2M7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgU3RkbGliLnNuZCBwY3R5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBTdGRsaWIuc25kIHBjdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQY3R5X2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc2lnX3NlbGYgPSBTdGRsaWIuZnN0IHBjc2lnX3NlbGY7XG4gICAgICAgICAgICBwY3NpZ19maWVsZHMgPSBTdGRsaWIuZnN0IHBjc2lnX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3NpZ19zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzaWdfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc2lnX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc2lnX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjdGZfZGVzYztcbiAgICAgICAgICAgIHBjdGZfbG9jID0gU3RkbGliLmZzdCBwY3RmX2xvYztcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBTdGRsaWIuc25kIHBjdGZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIFN0ZGxpYi5zbmQgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHhcbiAgICAgICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfdmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNpX3ZpcnQgPSBTdGRsaWIuZnN0IHBjaV92aXJ0O1xuICAgICAgICAgICAgcGNpX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcGNpX3BhcmFtcztcbiAgICAgICAgICAgIHBjaV9uYW1lID0gU3RkbGliLmZzdCBwY2lfbmFtZTtcbiAgICAgICAgICAgIHBjaV9leHByID0gU3RkbGliLmZzdCBwY2lfZXhwcjtcbiAgICAgICAgICAgIHBjaV9sb2MgPSBTdGRsaWIuZnN0IHBjaV9sb2M7XG4gICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNpX3ZpcnRcIiwgU3RkbGliLnNuZCBwY2lfdmlydCk7XG4gICAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwY2lfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgU3RkbGliLnNuZCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjaV9leHByXCIsIFN0ZGxpYi5zbmQgcGNpX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwY2lfbG9jXCIsIFN0ZGxpYi5zbmQgcGNpX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogJ2N0eCAtPiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IFN0ZGxpYi5mc3QgcGNsX2Rlc2M7XG4gICAgICAgICAgICBwY2xfbG9jID0gU3RkbGliLmZzdCBwY2xfbG9jO1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjbF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfbG9jXCIsIFN0ZGxpYi5zbmQgcGNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogJ2N0eCAtPiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2xfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGQgaW5cbiAgICAgICAgICAgICggUGNsX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNsX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgKCBQY2xfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2xldFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc3RyX3NlbGYgPSBTdGRsaWIuZnN0IHBjc3RyX3NlbGY7XG4gICAgICAgICAgICBwY3N0cl9maWVsZHMgPSBTdGRsaWIuZnN0IHBjc3RyX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3N0cl9zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzdHJfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc3RyX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc3RyX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjZl9kZXNjO1xuICAgICAgICAgICAgcGNmX2xvYyA9IFN0ZGxpYi5mc3QgcGNmX2xvYztcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBjZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBTdGRsaWIuc25kIHBjZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfaW5oZXJpdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUGNmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX21ldGhvZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9pbml0aWFsaXplciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaXRpYWxpemVyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggQ2ZrX3ZpcnR1YWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkNma192aXJ0dWFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIENma19jb25jcmV0ZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfY29uY3JldGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6ICdjdHggLT4gbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10eV9kZXNjID0gU3RkbGliLmZzdCBwbXR5X2Rlc2M7XG4gICAgICAgICAgICBwbXR5X2xvYyA9IFN0ZGxpYi5mc3QgcG10eV9sb2M7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgU3RkbGliLnNuZCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbXR5X2xvY1wiLCBTdGRsaWIuc25kIHBtdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG10eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9zaWduYXR1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfc2lnbmF0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBjdHggYiBpblxuICAgICAgICAgICAgKCBQbXR5X3dpdGggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV93aXRoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV90eXBlb2YgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfdHlwZW9mXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfYWxpYXMgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlclxuICAgICAgICA6ICdjdHggLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IChVbml0LCBzZWxmI2NvbnN0ciBjdHggXCJVbml0XCIgW10pXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBOYW1lZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJOYW1lZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgKCB7IHBzaWdfZGVzYyA9IFN0ZGxpYi5mc3QgcHNpZ19kZXNjOyBwc2lnX2xvYyA9IFN0ZGxpYi5mc3QgcHNpZ19sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHNpZ19kZXNjXCIsIFN0ZGxpYi5zbmQgcHNpZ19kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHNpZ19sb2NcIiwgU3RkbGliLnNuZCBwc2lnX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3ZhbHVlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3ZhbHVlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3JlY21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19yZWNtb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc2lnX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1kX25hbWUgPSBTdGRsaWIuZnN0IHBtZF9uYW1lO1xuICAgICAgICAgICAgcG1kX3R5cGUgPSBTdGRsaWIuZnN0IHBtZF90eXBlO1xuICAgICAgICAgICAgcG1kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1kX2xvYyA9IFN0ZGxpYi5mc3QgcG1kX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWRfbmFtZVwiLCBTdGRsaWIuc25kIHBtZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgU3RkbGliLnNuZCBwbWRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWRfbG9jXCIsIFN0ZGxpYi5zbmQgcG1kX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXNfbmFtZSA9IFN0ZGxpYi5mc3QgcG1zX25hbWU7XG4gICAgICAgICAgICBwbXNfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHBtc19tYW5pZmVzdDtcbiAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtc19sb2MgPSBTdGRsaWIuZnN0IHBtc19sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1zX25hbWVcIiwgU3RkbGliLnNuZCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHBtc19tYW5pZmVzdCk7XG4gICAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXNfbG9jXCIsIFN0ZGxpYi5zbmQgcG1zX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10ZF9uYW1lID0gU3RkbGliLmZzdCBwbXRkX25hbWU7XG4gICAgICAgICAgICBwbXRkX3R5cGUgPSBTdGRsaWIuZnN0IHBtdGRfdHlwZTtcbiAgICAgICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG10ZF9sb2MgPSBTdGRsaWIuZnN0IHBtdGRfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBTdGRsaWIuc25kIHBtdGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBTdGRsaWIuc25kIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIFN0ZGxpYi5zbmQgcG10ZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3Blbl9leHByID0gU3RkbGliLmZzdCBwb3Blbl9leHByO1xuICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBTdGRsaWIuZnN0IHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgcG9wZW5fbG9jID0gU3RkbGliLmZzdCBwb3Blbl9sb2M7XG4gICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgU3RkbGliLnNuZCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fb3ZlcnJpZGVcIiwgU3RkbGliLnNuZCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBTdGRsaWIuc25kIHBvcGVuX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIGN0eCBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBpbmNsX21vZCA9IFN0ZGxpYi5mc3QgcGluY2xfbW9kO1xuICAgICAgICAgICAgcGluY2xfbG9jID0gU3RkbGliLmZzdCBwaW5jbF9sb2M7XG4gICAgICAgICAgICBwaW5jbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwaW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBpbmNsX21vZFwiLCBTdGRsaWIuc25kIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBTdGRsaWIuc25kIHBpbmNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF90eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVzdWJzdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6ICdjdHggLT4gbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gU3RkbGliLmZzdCBwbW9kX2Rlc2M7XG4gICAgICAgICAgICBwbW9kX2xvYyA9IFN0ZGxpYi5mc3QgcG1vZF9sb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgU3RkbGliLnNuZCBwbW9kX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBTdGRsaWIuc25kIHBtb2RfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9zdHJ1Y3R1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2Rfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogJ2N0eCAtPiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgKCB7IHBzdHJfZGVzYyA9IFN0ZGxpYi5mc3QgcHN0cl9kZXNjOyBwc3RyX2xvYyA9IFN0ZGxpYi5mc3QgcHN0cl9sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHN0cl9kZXNjXCIsIFN0ZGxpYi5zbmQgcHN0cl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHN0cl9sb2NcIiwgU3RkbGliLnNuZCBwc3RyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9ldmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXZhbFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdmFsdWUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl92YWx1ZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcHJpbWl0aXZlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3ByaW1pdGl2ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6ICdjdHggLT4gdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPSBTdGRsaWIuZnN0IHB2Yl9wYXQ7XG4gICAgICAgICAgICBwdmJfZXhwciA9IFN0ZGxpYi5mc3QgcHZiX2V4cHI7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmJfbG9jID0gU3RkbGliLmZzdCBwdmJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgU3RkbGliLnNuZCBwdmJfcGF0KTtcbiAgICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgU3RkbGliLnNuZCBwdmJfZXhwcik7XG4gICAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdmJfbG9jXCIsIFN0ZGxpYi5zbmQgcHZiX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6ICdjdHggLT4gbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbWJfbmFtZSA9IFN0ZGxpYi5mc3QgcG1iX25hbWU7XG4gICAgICAgICAgICBwbWJfZXhwciA9IFN0ZGxpYi5mc3QgcG1iX2V4cHI7XG4gICAgICAgICAgICBwbWJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbWJfbG9jID0gU3RkbGliLmZzdCBwbWJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIFN0ZGxpYi5zbmQgcG1iX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbWJfZXhwclwiLCBTdGRsaWIuc25kIHBtYl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbWJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtYl9sb2NcIiwgU3RkbGliLnNuZCBwbWJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6ICdjdHggLT4gdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kZWYgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGVmXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdG9wX2RpciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHRvcF9kaXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiAnY3R4IC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJfbmFtZSA9IFN0ZGxpYi5mc3QgcGRpcl9uYW1lO1xuICAgICAgICAgICAgcGRpcl9hcmcgPSBTdGRsaWIuZnN0IHBkaXJfYXJnO1xuICAgICAgICAgICAgcGRpcl9sb2MgPSBTdGRsaWIuZnN0IHBkaXJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBTdGRsaWIuc25kIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBkaXJfYXJnXCIsIFN0ZGxpYi5zbmQgcGRpcl9hcmcpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGRpcmFfZGVzYyA9IFN0ZGxpYi5mc3QgcGRpcmFfZGVzYztcbiAgICAgICAgICAgIHBkaXJhX2xvYyA9IFN0ZGxpYi5mc3QgcGRpcmFfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJhX2Rlc2NcIiwgU3RkbGliLnNuZCBwZGlyYV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGRpcmFfbG9jXCIsIFN0ZGxpYi5zbmQgcGRpcmFfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9zdHJpbmcgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfc3RyaW5nXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQZGlyX2ludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2ludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9ib29sIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2Jvb2xcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgKiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuW0BAQGVuZF1cbltAQEBlbmRdXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIHQgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IudFxuXG5sZXQgdG9fZXh0ZW5zaW9uIChlcnJvciA6IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci50KSA9XG4gIGxldCBvcGVuIEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBpblxuICBsZXQgb3BlbiBBc3RfaGVscGVyIGluXG4gIGlmIG5vdCAoaXNfd2VsbF9mb3JtZWQgZXJyb3IpIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcInRvX2V4dGVuc2lvbjogZXhwZWN0ZWQga2luZCBSZXBvcnRfZXJyb3JcIik7XG4gIGxldCBzdWJfbXNncyA9IHN1Yl9tc2dzIGVycm9yIGluXG4gIGxldCBtYWluX21zZyA9IG1haW5fbXNnIGVycm9yIGluXG4gIGxldCBlcnJfZXh0ZW5zaW9uX25hbWUgbG9jID0geyBMb2NhdGlvbi5sb2M7IHR4dCA9IFwib2NhbWwuZXJyb3JcIiB9IGluXG4gIGxldCBta19zdHJpbmdfY29uc3RhbnQgeCA9IFN0ci5ldmFsIChFeHAuY29uc3RhbnQgKENvbnN0LnN0cmluZyB4KSkgaW5cbiAgbGV0IGV4dGVuc2lvbl9vZl9zdWJfbXNnIChzdWJfbXNnIDogc3RyaW5nIExvY2F0aW9uLmxvYykgPVxuICAgIFN0ci5leHRlbnNpb25cbiAgICAgIChlcnJfZXh0ZW5zaW9uX25hbWUgc3ViX21zZy5sb2MsIFBTdHIgWyBta19zdHJpbmdfY29uc3RhbnQgc3ViX21zZy50eHQgXSlcbiAgaW5cbiAgKCBlcnJfZXh0ZW5zaW9uX25hbWUgbWFpbl9tc2cubG9jLFxuICAgIFBhcnNldHJlZS5QU3RyXG4gICAgICAobWtfc3RyaW5nX2NvbnN0YW50IG1haW5fbXNnLnR4dCA6OiBMaXN0Lm1hcCBleHRlbnNpb25fb2Zfc3ViX21zZyBzdWJfbXNncylcbiAgKVxuXG5sZXQgcmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLnJlZ2lzdGVyX2Vycm9yX29mX2V4blxuXG5sZXQgbWVzc2FnZSBlcnJvciA9XG4gIGxldCB7IEFzdGxpYi5Mb2NhdGlvbi50eHQ7IF8gfSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWluX21zZyBlcnJvciBpblxuICB0eHRcblxubGV0IHNldF9tZXNzYWdlID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX21zZ1xuXG5sZXQgbWFrZSB+bG9jIHR4dCB+c3ViID1cbiAgbGV0IHN1YiA9IExpc3QubWFwIChmdW4gKGxvYywgdHh0KSAtPiB7IEFzdGxpYi5Mb2NhdGlvbi5sb2M7IHR4dCB9KSBzdWIgaW5cbiAgQXN0bGliLkxvY2F0aW9uLkVycm9yLm1ha2UgfnN1YiB7IGxvYzsgdHh0IH1cblxubGV0IHVwZGF0ZV9sb2MgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iuc2V0X21haW5fbG9jXG5cbmxldCBnZXRfbG9jYXRpb24gZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24ubG9jOyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgbG9jXG5cbmxldCBvZl9leG4gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iub2ZfZXhuXG5sZXQgcmFpc2UgZXJyb3IgPSByYWlzZSAoQXN0bGliLkxvY2F0aW9uLkVycm9yIGVycm9yKVxuIiwibW9kdWxlIERvX25vdF91c2VfZGlyZWN0bHkgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgQWZsX2luc3RydW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWZsX2luc3RydW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIEFsaWFzX2FuYWx5c2lzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsaWFzX2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBBbGxvY2F0ZWRfY29uc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWxsb2NhdGVkX2NvbnN0IGluc3RlYWRcIl1cbm1vZHVsZSBBbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXJjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BcmNoIGluc3RlYWRcIl1cbm1vZHVsZSBBcmdfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXJnX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saW5rIGluc3RlYWRcIl1cbm1vZHVsZSBBc21wYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21wYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pdGVyYXRvciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdHR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBBdHRyX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkF0dHJfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBdWdtZW50X3NwZWNpYWxpc2VkX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBCYWNrZW5kX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEJhY2tlbmRfdmFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJhY2tlbmRfdmFyIGluc3RlYWRcIl1cbm1vZHVsZSBCaW51dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJpbnV0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBCcmFuY2hfcmVsYXhhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CcmFuY2hfcmVsYXhhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb25faW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQnR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfZXhwb3J0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnVpbGRfZXhwb3J0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX3BhdGhfcHJlZml4X21hcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWxkX3BhdGhfcHJlZml4X21hcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbHRpbl9hdHRyaWJ1dGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbHRpbl9hdHRyaWJ1dGVzIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVwYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlc2VjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CeXRlc2VjdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIENTRSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0UgaW5zdGVhZFwiXVxubW9kdWxlIENTRWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0VnZW4gaW5zdGVhZFwiXVxubW9kdWxlIENhbWxpbnRlcm5hbE1lbmhpckxpYiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNhbWxpbnRlcm5hbE1lbmhpckxpYiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2NvbXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DY29tcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBDbGZsYWdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2xmbGFncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb25fYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbl9hdXggaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfZWxlbWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2VsZW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vZmZzZXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb2Zmc2V0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIENtaV9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbWlfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faGVscGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faGVscGVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW4gaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbl9zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW5fc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIENtb19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENtdDJhbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdDJhbm5vdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ210X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdF9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENteF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENteHNfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb2xvcmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db2xvcmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tYmFsbG9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbWJhbGxvYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGF0aW9uX3VuaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsYXRpb25fdW5pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQ29tcGlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZV9jb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21waWxlX2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcG1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wbWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcHJlc3Npb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wcmVzc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29uZmlnIGluc3RlYWRcIl1cbm1vZHVsZSBDb25maWdfYm9vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29uZmlnX21haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbnNpc3RibCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbnNpc3RibCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29udmVydF9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbnZlcnRfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ3R5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGF0YWZsb3cgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRGF0YWZsb3cgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFyZXByID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGF0YXJlcHIgaW5zdGVhZFwiXVxubW9kdWxlIERlYWRjb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRlYWRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBEZWJ1Z2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZWJ1Z2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIERlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRGlmZmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmcgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmdfd2l0aF9rZXlzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGlmZmluZ193aXRoX2tleXMgaW5zdGVhZFwiXVxubW9kdWxlIERsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgRG9jc3RyaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvY3N0cmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIERvbWFpbnN0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRG9tYWluc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIEVmZmVjdF9hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FZmZlY3RfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FbWl0YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0Y29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuRW1pdGNvZGUgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgRW52YXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRW52YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVycm9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3J0cmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVycm9ydHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaWQgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mb19mb3JfcGFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mb19mb3JfcGFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwdW5nZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgRXh0cmFjdF9wcm9qZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHRyYWN0X3Byb2plY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGaW5kX3JlY3Vyc2l2ZV9mdW5jdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaXRlcmF0b3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfaXRlcmF0b3JzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3RvX2NsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV90b19jbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3V0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEZyZXNoZW5pbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRnJlc2hlbmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgR2VucHJpbnR2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLkdlbnByaW50dmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJZF90eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JZF90eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JZGVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnRpZmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBJbXBvcnRfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkltcG9ydF9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2RfZXJyb3JwcmludGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZW1vZF9lcnJvcnByaW50ZXIgaW5zdGVhZFwiXVxubW9kdWxlIEluY29uc3RhbnRfaWRlbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluY29uc3RhbnRfaWRlbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluaXRpYWxpemVfc3ltYm9sX3RvX2xldF9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2Nvc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfY29zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfZGVjaXNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfZGVjaXNpb24gaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIElubGluaW5nX3N0YXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3N0YXRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0c190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0c190eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfdHJhbnNmb3JtcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ190cmFuc2Zvcm1zIGluc3RlYWRcIl1cbm1vZHVsZSBJbnN0cnVjdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuSW5zdHJ1Y3QgaW5zdGVhZFwiXVxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJmIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcm5hbF92YXJpYWJsZV9uYW1lcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcm5hbF92YXJpYWJsZV9uYW1lcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJ2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJ2YWwgaW5zdGVhZFwiXVxubW9kdWxlIEludmFyaWFudF9wYXJhbXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW52YXJpYW50X3BhcmFtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBMYXp5X2JhY2t0cmFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhenlfYmFja3RyYWNrIGluc3RlYWRcIl1cbm1vZHVsZSBMZXhlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxleGVyIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcl9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyaXplID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcml6ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlua2FnZV9uYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmthZ2VfbmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluc2NhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5zY2FuIGluc3RlYWRcIl1cbm1vZHVsZSBMaXZlbmVzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaXZlbmVzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9hZF9wYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9hZF9wYXRoIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhbF9zdG9yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2FsX3N0b3JlIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2F0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBMb25naWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIE1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTWFjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgTWFpbl9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFpbl9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBNYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5NYWluZHJpdmVyIGluc3RlYWRcIl1cbm1vZHVsZSBNYWtlZGVwZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFrZWRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWF0Y2hpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYXRjaGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWV0YSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ldGEgaW5zdGVhZFwiXVxubW9kdWxlIE1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBNdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk10eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBNdXRhYmxlX3ZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk11dGFibGVfdmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIE51bWJlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5OdW1iZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBPcGNvZGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3Bjb2RlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3ByaW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3ByaW50IGluc3RlYWRcIl1cbm1vZHVsZSBPcHRjb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdGNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIE9wdGVycm9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRlcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIE9wdG1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE9wdG1haW5kcml2ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0bWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgT3V0Y29tZXRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFBhcmFtZXRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QYXJhbWV0ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2V0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXNzX3dyYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFzc193cmFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0dGVybnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXR0ZXJucyBpbnN0ZWFkXCJdXG5tb2R1bGUgUGVyc2lzdGVudF9lbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QZXJzaXN0ZW50X2VudiBpbnN0ZWFkXCJdXG5tb2R1bGUgUG9sbGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qb2xsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBQcGFyc2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBwcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBwcmludGFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJlZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJlZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBQcmltaXRpdmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmltaXRpdmUgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50YXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRpbnN0ciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuUHJpbnRpbnN0ciBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludGxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRsaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bWFjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludG1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIFByaW50cGF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRwYXQgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXAgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHR5cGVkIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2MgaW5zdGVhZFwiXVxubW9kdWxlIFByb2ZpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Qcm9maWxlIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9qZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2plY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFJlZl90b192YXJpYWJsZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVmX3RvX3ZhcmlhYmxlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUnVudGltZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJ1bnRpbWVkZWYgaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZHVsaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkdWxpbmcgaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3RnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFNlbWFudGljc19vZl9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbWFudGljc19vZl9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX2lkIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIFNoYXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2hhcGUgaW5zdGVhZFwiXVxubW9kdWxlIFNoYXBlX3JlZHVjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNoYXBlX3JlZHVjZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcmVfY29uc3RhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNoYXJlX2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2lnbmF0dXJlX2dyb3VwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2lnbmF0dXJlX2dyb3VwIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGVfdmFsdWVfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsZV92YWx1ZV9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaW1wbGlmIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHNfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgU2ltcGxpZnlfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTcGlsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TcGlsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BsaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BsaXQgaW5zdGVhZFwiXVxubW9kdWxlIFN0YWNrZnJhbWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhY2tmcmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RhY2tmcmFtZWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdGFja2ZyYW1lZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTdGF0aWNfZXhjZXB0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YXRpY19leGNlcHRpb24gaW5zdGVhZFwiXVxubW9kdWxlIFN0cm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0cm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBTdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFN1YnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Vic3QgaW5zdGVhZFwiXVxubW9kdWxlIFN3aXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN3aXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltdGFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW10YWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ludGF4ZXJyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ludGF4ZXJyIGluc3RlYWRcIl1cbm1vZHVsZSBUYWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVGFnIGluc3RlYWRcIl1cbm1vZHVsZSBUYXJnZXRpbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXJnZXRpbnQgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X2l0ZXJhdG9yIGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBUZXJtaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRlcm1pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBUaHJlYWRfc2FuaXRpemVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRocmVhZF9zYW5pdGl6ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFRtYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRtYyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bjb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFRvcGRpcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGRpcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGV2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGV2YWwgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGhvb2tzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUb3Bsb29wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bsb29wIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BtYWluIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BwcmludGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wcHJpbnRlcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcHN0YXJ0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUcmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGF0dHJpYnV0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGF0dHJpYnV0ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsb2JqID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsb2JqIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xwcmltID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNscHJpbSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhdmVyc2VfZm9yX2V4cG9ydGVkX3N5bWJvbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVHJhdmVyc2VfZm9yX2V4cG9ydGVkX3N5bWJvbHMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVfaW1tZWRpYWN5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZV9pbW1lZGlhY3kgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfaW1tZWRpYWN5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9wcm9wZXJ0aWVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfcHJvcGVydGllcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfc2VwYXJhYmlsaXR5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfc2VwYXJhYmlsaXR5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF91bmJveGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdW5ib3hlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdmFyaWFuY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF92YXJpYW5jZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWR0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWR0cmVlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZW1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW9wdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVvcHQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGV0ZXhwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZXRleHAgaW5zdGVhZFwiXVxubW9kdWxlIFVuX2FuZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Vbl9hbmYgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2Nsb3N1cmVzIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9mcmVlX3ZhcnNfb2ZfY2xvc3VyZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X3NwZWNpYWxpc2VkX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFVuaXRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlVuaXRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW50eXBlYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVW50eXBlYXN0IGluc3RlYWRcIl1cbm1vZHVsZSBWYWx1ZV9yZWNfY2hlY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5WYWx1ZV9yZWNfY2hlY2sgaW5zdGVhZFwiXVxubW9kdWxlIFZhbHVlX3JlY19jb21waWxlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlZhbHVlX3JlY19jb21waWxlciBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFsdWVfcmVjX3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBWYXJfd2l0aGluX2Nsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyX3dpdGhpbl9jbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBWYXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgV2FybmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5XYXJuaW5ncyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2FzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgWDg2X2RzbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZHNsIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfZ2FzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9nYXMgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9tYXNtID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9tYXNtIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfcHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfcHJvYyBpbnN0ZWFkXCJdXG4iLCJvcGVuIFN0ZExhYmVsc1xuXG5sZXQgcGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzID1cbiAgbGV0IGFyZ3MgPVxuICAgIExpc3QuY29uY2F0XG4gICAgICBbXG4gICAgICAgIFsgXCIta2VlcC13aGl0ZXNwYWNlXCIgXTtcbiAgICAgICAgWyBcIi1sb2NhdGlvbi1zdHlsZSBvbWFrZVwiIF07XG4gICAgICAgIChpZiB1c2VfY29sb3IgdGhlbiBbXSBlbHNlIFsgXCItYXNjaWlcIiBdKTtcbiAgICAgICAgZXh0cmFfcGF0ZGlmZl9hcmdzO1xuICAgICAgXVxuICBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKFwicGF0ZGlmZlwiIDo6IGFyZ3MpXG5cbmxldCBwcmludCA/ZGlmZl9jb21tYW5kID8oZXh0cmFfcGF0ZGlmZl9hcmdzID0gW10pID8odXNlX2NvbG9yID0gZmFsc2UpIH5maWxlMVxuICAgIH5maWxlMiAoKSA9XG4gIGxldCBleGVjIGNtZCA9XG4gICAgbGV0IGNtZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIDE+JjJcIiBjbWQgKEZpbGVuYW1lLnF1b3RlIGZpbGUxKVxuICAgICAgICAoRmlsZW5hbWUucXVvdGUgZmlsZTIpXG4gICAgaW5cbiAgICBtYXRjaCBTeXMuY29tbWFuZCBjbWQgd2l0aFxuICAgIHwgMCAtPiBgU2FtZVxuICAgIHwgMSAtPiBgRGlmZmVyZW50XG4gICAgfCBuIC0+IGBFcnJvciAobiwgY21kKVxuICBpblxuICBtYXRjaCBkaWZmX2NvbW1hbmQgd2l0aFxuICB8IFNvbWUgcyAtPiBpZ25vcmUgKGV4ZWMgcyA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIGV4ZWMgKHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncykgd2l0aFxuICAgICAgfCBgU2FtZSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgcHJvZHVjZWQgbm8gb3V0cHV0LCBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICAgICAgfCBgRGlmZmVyZW50IC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBzdWNjZXNzZnVsbHkgZm91bmQgYSBkaWZmZXJlbmNlICopXG4gICAgICAgICAgKClcbiAgICAgIHwgYEVycm9yIChlcnJfY29kZSwgY21kKSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgdGhyZXcgYW4gZXJyb3IuLi4gcGVyaGFwcyBpdCB3YXNuJ3QgaW5zdGFsbGVkPyBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRXJyb3I6XFxuXFxcbiAgICAgICAgICAgICA+ICVTIGV4aXRlZCB3aXRoIGNvZGUgJWRcXG5cXFxuICAgICAgICAgICAgID4gUGVyaGFwcyBwYXRkaWZmIGlzIG5vdCBpbnN0YWxsZWQ/IEhpbnQsIHRyeTogb3BhbSBpbnN0YWxsIHBhdGRpZmZcXG5cXFxuICAgICAgICAgICAgID4gRmFsbGluZyBiYWNrIHRvIGRpZmYgLXVcXG5cXG5cIlxuICAgICAgICAgICAgY21kIGVycl9jb2RlO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSkpXG4iLCJ0eXBlIGRlcml2ZXIgPSAuLlxuXG5sZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgNDJcblxubGV0IHJlZ2lzdGVyIG5hbWUgZGVyaXZlciA9XG4gIGlmIEhhc2h0YmwubWVtIGFsbCBuYW1lIHRoZW5cbiAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgIFwiUHB4X2Rlcml2aWVycy5yZWdpc3RlcjogJVMgaXMgYWxyZWFkeSByZWdpc3RlcmVkXCIgbmFtZTtcbiAgSGFzaHRibC5hZGQgYWxsIG5hbWUgZGVyaXZlclxuXG5sZXQgbG9va3VwIG5hbWUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgYWxsIG5hbWUgd2l0aFxuICB8IGRydiAtPiBTb21lIGRydlxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG5sZXQgZGVyaXZlcnMgKCkgPVxuICBIYXNodGJsLmZvbGQgKGZ1biBuYW1lIGRydiBhY2MgLT4gKG5hbWUsIGRydikgOjogYWNjKSBhbGwgW11cbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgbWFwID0gJ2EgLT4gJ2FcbiAgdHlwZSAnYSBpdGVyID0gJ2EgLT4gdW5pdFxuICB0eXBlICgnYSwgJ2FjYykgZm9sZCA9ICdhIC0+ICdhY2MgLT4gJ2FjY1xuICB0eXBlICgnYSwgJ2FjYykgZm9sZF9tYXAgPSAnYSAtPiAnYWNjIC0+ICdhICogJ2FjY1xuICB0eXBlICgnY3R4LCAnYSkgbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2FcbiAgdHlwZSAoJ2EsICdyZXMpIGxpZnQgPSAnYSAtPiAncmVzXG4gIHR5cGUgKCdjdHgsICdhLCAncmVzKSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhICogJ3Jlc1xuZW5kXG5cbmNsYXNzIG1hcCA9XG4gIGxldCBhbnkgeCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5tYXAgLT4gJ2Egb3B0aW9uIFQubWFwID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULm1hcCAtPiAnYSBsaXN0IFQubWFwID0gTGlzdC5tYXBcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgYXJyYXkgVC5tYXAgPSBBcnJheS5tYXBcbiAgZW5kXG5cbmNsYXNzIGl0ZXIgPVxuICBsZXQgYW55ID0gaWdub3JlIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQuaXRlciA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULml0ZXIgLT4gJ2Egb3B0aW9uIFQuaXRlciA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGxpc3QgVC5pdGVyID0gTGlzdC5pdGVyXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQuaXRlciAtPiAnYSBhcnJheSBULml0ZXIgPSBBcnJheS5pdGVyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZCA9XG4gIGxldCBhbnkgXyBhY2MgPSBhY2MgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIHggYWNjIC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IGFjYyB8IFNvbWUgeCAtPiBmIHggYWNjXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IGFjYyB8IHggOjogbCAtPiBsb29wIGYgbCAoZiB4IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICByIDo9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhclxuICAgICAgICBkb25lO1xuICAgICAgICAhclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGRfbWFwID1cbiAgbGV0IGFueSB4IGFjYyA9ICh4LCBhY2MpIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBhY2MpXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgKFNvbWUgeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBhY2MpXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgbGV0IGwsIGFjYyA9IGxvb3AgZiBsIGFjYyBpblxuICAgICAgICAgICAgKHggOjogbCwgYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gKGEsIGFjYylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgMCkgYWNjIGluXG4gICAgICAgICAgbGV0IGEnID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyIGluXG4gICAgICAgICAgICBBcnJheS51bnNhZmVfc2V0IGEnIGkgeDtcbiAgICAgICAgICAgIHIgOj0gYWNjXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAoYScsICFyKVxuICBlbmRcblxuY2xhc3MgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBsZXQgYW55IF8geCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2Egb3B0aW9uKSBULm1hcF93aXRoX2NvbnRleHRcbiAgICAgICAgPVxuICAgICAgZnVuIGYgY3R4IHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgbGlzdCkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+IExpc3QubWFwIChmIGN0eCkgbFxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGFycmF5KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGEgLT4gQXJyYXkubWFwIChmIGN0eCkgYVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZWxmI2NvbnN0ciBcIk5vbmVcIiBbXVxuICAgICAgICB8IFNvbWUgeCAtPiBzZWxmI2NvbnN0ciBcIlNvbWVcIiBbIGYgeCBdXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2VsZiNjb25zdHIgXCJbXVwiIFtdXG4gICAgICAgIHwgeCA6OiBsIC0+IHNlbGYjY29uc3RyIFwiOjpcIiBbIGYgeDsgc2VsZiNsaXN0IGYgbCBdXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBzZWxmI2NvbnN0ciBjdHggXCJOb25lXCIgW10pXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzID0gZiBjdHggeCBpblxuICAgICAgICAgICAgKFNvbWUgeCwgc2VsZiNjb25zdHIgY3R4IFwiU29tZVwiIFsgcmVzIF0pXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBzZWxmI2NvbnN0ciBjdHggXCJbXVwiIFtdKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlc19oZWFkID0gZiBjdHggeCBpblxuICAgICAgICAgICAgbGV0IGwsIHJlc190YWlsID0gc2VsZiNsaXN0IGYgY3R4IGwgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIHNlbGYjY29uc3RyIGN0eCBcIjo6XCIgWyByZXNfaGVhZDsgcmVzX3RhaWwgXSlcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydyZXNdIHN0ZF9saWZ0ZXJzID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdFxuICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0XG5lbmRcblxuY2xhc3MgdHlwZSBbJ2N0eCwgJ3Jlc10gc3RkX2xpZnRfbWFwcGVyc193aXRoX2NvbnRleHQgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICBtZXRob2QgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGFycmF5IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIG9wdGlvbiA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGxpc3QgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbmVuZFxuIiwibW9kdWxlIENhbWwgPSBTdGRsaWIgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTA2XSB1c2UgU3RkbGliIGluc3RlYWRcIl1cbm9wZW4gU3RkbGliXG5vcGVuIFN0ZExhYmVsc1xubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIHR5cGUgQ29tcGFyaXNvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPj0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBtaW4gOiB0IC0+IHQgLT4gdFxuICB2YWwgbWF4IDogdCAtPiB0IC0+IHRcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0IG1pbiA9IG1pblxuICBsZXQgbWF4ID0gbWF4XG5lbmRcblxuaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5cbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBib29sKVxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEJ5dGVzXG5cbiAgbGV0IHN1Yl9zdHJpbmcgdCB+cG9zIH5sZW4gPSBTdGRsaWIuQnl0ZXMuc3ViX3N0cmluZyB0IHBvcyBsZW5cblxuICBsZXQgYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIFN0ZGxpYi5CeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGNoYXIpXG5lbmRcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IHkgLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICB5XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgcmFpc2UgZXhuXG5lbmRcblxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfZmxvYXRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gZmxvYXQpXG5lbmRcblxubW9kdWxlIEZuID0gc3RydWN0XG4gIGxldCBpZCB4ID0geFxuZW5kXG5cbm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICB3aGlsZSBtZW0gdCBrZXkgZG9cbiAgICAgIHJlbW92ZSB0IGtleVxuICAgIGRvbmU7XG4gICAgYWRkIHQga2V5IGRhdGFcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgaWYgbWVtIHQga2V5IHRoZW4gRXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLmFkZF9leG5cIilcbiAgICBlbHNlIChcbiAgICAgIGFkZCB0IGtleSBkYXRhO1xuICAgICAgT2sgKCkpXG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGggT2sgKCkgLT4gKCkgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG5cbiAgbGV0IGZpbmRfb3B0IHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGggZGF0YSAtPiBTb21lIGRhdGEgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICAgIG1hdGNoIGZpbmRfb3B0IHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkYXRhID0gZGVmYXVsdCAoKSBpblxuICAgICAgICBhZGRfZXhuIHQgfmtleSB+ZGF0YTtcbiAgICAgICAgZGF0YVxuXG4gIGxldCByZWMgYWRkX2FsaXN0IHQgYWxpc3QgPVxuICAgIG1hdGNoIGFsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE9rICgpXG4gICAgfCAoa2V5LCBkYXRhKSA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gYWRkX2FsaXN0IHQgdGFpbFxuICAgICAgICB8IEVycm9yIChfIDogZXhuKSAtPiBFcnJvciBrZXkpXG5cbiAgbGV0IG9mX2FsaXN0ID9zaXplIGFsaXN0ID1cbiAgICBsZXQgc2l6ZSA9XG4gICAgICBtYXRjaCBzaXplIHdpdGggU29tZSBzaXplIC0+IHNpemUgfCBOb25lIC0+IExpc3QubGVuZ3RoIGFsaXN0XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSBzaXplIGluXG4gICAgbWF0Y2ggYWRkX2FsaXN0IHQgYWxpc3Qgd2l0aCBPayAoKSAtPiBPayB0IHwgRXJyb3IgXyBhcyBlcnJvciAtPiBlcnJvclxuXG4gIGxldCBvZl9hbGlzdF9leG4gP3NpemUgYWxpc3QgPVxuICAgIG1hdGNoIG9mX2FsaXN0ID9zaXplIGFsaXN0IHdpdGhcbiAgICB8IE9rIHQgLT4gdFxuICAgIHwgRXJyb3IgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuXCIpXG5lbmRcblxubW9kdWxlIEluX2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICAgIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGVuYW1lIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5IGZpbGVuYW1lIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2VfaW5cblxuICBsZXQgaW5wdXRfYWxsIHQgPVxuICAgIGxldCByZWMgcmVhZF9hbGxfaW50byB0IGJ1ZiA9XG4gICAgICBtYXRjaCBpbnB1dF9jaGFyIHQgd2l0aFxuICAgICAgfCBjaGFyIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgICAgICAgIHJlYWRfYWxsX2ludG8gdCBidWZcbiAgICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHJlYWRfYWxsX2ludG8gdCBidWY7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCByZWFkX2FsbCBmaWxlbmFtZSA9IHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjppbnB1dF9hbGxcbmVuZFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBtYXhfaW50ID0gbWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5lbmRcblxubW9kdWxlIEVpdGhlciA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcbmVuZFxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgICgqIHNoYWRvdyBub24tdGFpbC1yZWN1cnNpdmUgZnVuY3Rpb25zICopXG4gICAgbGV0IG1lcmdlID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzb2MgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NxID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuXG4gICAgbGV0IHJldl9tYXBpIGxpc3QgfmYgPVxuICAgICAgbGV0IHJlYyByZXZfbWFwaV9hdCBsaXN0IGkgfmYgfmFjYyA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPiByZXZfbWFwaV9hdCB0YWlsIChpICsgMSkgfmYgfmFjYzooZiBpIGhlYWQgOjogYWNjKVxuICAgICAgaW5cbiAgICAgIHJldl9tYXBpX2F0IGxpc3QgMCB+ZiB+YWNjOltdXG5cbiAgICBsZXQgZm9sZF9yaWdodDIgbGlzdDEgbGlzdDIgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0MiAocmV2IGxpc3QxKSAocmV2IGxpc3QyKSB+aW5pdCB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgYWNjKVxuXG4gICAgbGV0IG1hcCBsaXN0IH5mID0gcmV2IChyZXZfbWFwIGxpc3QgfmYpXG4gICAgbGV0IG1hcGkgbGlzdCB+ZiA9IHJldiAocmV2X21hcGkgbGlzdCB+ZilcblxuICAgIGxldCBmb2xkX3JpZ2h0IGxpc3QgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0IChMaXN0LnJldiBsaXN0KSB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+IGYgeCBhY2MpXG5cbiAgICBsZXQgYXBwZW5kIHggeSA9IHJldl9hcHBlbmQgKHJldiB4KSB5XG4gICAgbGV0IGNvbmNhdCBsaXN0ID0gZm9sZF9yaWdodCBsaXN0IH5pbml0OltdIH5mOmFwcGVuZFxuXG4gICAgbGV0IHJldl9jb21iaW5lIGxpc3QxIGxpc3QyID1cbiAgICAgIGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+ICh4LCB5KSA6OiBhY2MpXG5cbiAgICBsZXQgY29tYmluZSBsaXN0MSBsaXN0MiA9IHJldiAocmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIpXG5cbiAgICBsZXQgc3BsaXQgbGlzdCA9XG4gICAgICBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6KFtdLCBbXSkgfmY6KGZ1biAoeCwgeSkgKHhzLCB5cykgLT5cbiAgICAgICAgICAoeCA6OiB4cywgeSA6OiB5cykpXG5cbiAgICBsZXQgbWFwMiBsaXN0MSBsaXN0MiB+ZiA9XG4gICAgICByZXYgKGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IDo6IGFjYykpXG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gICAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBwIHggd2l0aFxuICAgICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbClcbiAgICBpblxuICAgIHBhcnQgW10gW10gbFxuXG4gIGxldCBpbml0IH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCB+bGVuIH5wb3MgfmYgfmFjYyA9XG4gICAgICBpZiBwb3MgPj0gbGVuIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICBlbHNlIGxvb3AgfmxlbiB+cG9zOihwb3MgKyAxKSB+ZiB+YWNjOihmIHBvcyA6OiBhY2MpXG4gICAgaW5cbiAgICBsb29wIH5sZW4gfnBvczowIH5mIH5hY2M6W11cblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBbXSAtPiB0cnVlIHwgXyA6OiBfIC0+IGZhbHNlXG5cbiAgbGV0IHJldl9maWx0ZXJfb3B0IGxpc3QgPVxuICAgIGZvbGRfbGVmdCBsaXN0IH5pbml0OltdIH5mOihmdW4gdGFpbCBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGggTm9uZSAtPiB0YWlsIHwgU29tZSBoZWFkIC0+IGhlYWQgOjogdGFpbClcblxuICBsZXQgZmlsdGVyX29wdCBsaXN0ID0gcmV2IChyZXZfZmlsdGVyX29wdCBsaXN0KVxuICBsZXQgZmlsdGVyX21hcCBsaXN0IH5mID0gcmV2X2ZpbHRlcl9vcHQgKHJldl9tYXAgbGlzdCB+ZilcbiAgbGV0IGNvbmNhdF9tYXAgbGlzdCB+ZiA9IGNvbmNhdCAobWFwIGxpc3QgfmYpXG5cbiAgbGV0IHJlYyBmaW5kX21hcCBsaXN0IH5mID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGhlYWQgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGYgaGVhZCB3aXRoIFNvbWUgXyBhcyBzb21lIC0+IHNvbWUgfCBOb25lIC0+IGZpbmRfbWFwIHRhaWwgfmYpXG5cbiAgbGV0IGZpbmRfbWFwX2V4biBsaXN0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCBsaXN0IH5mIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG4gIGxldCByZWMgbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbIHggXSAtPiBTb21lIHhcbiAgICB8IF8gOjogKF8gOjogXyBhcyByZXN0KSAtPiBsYXN0IHJlc3RcblxuICBsZXQgc3BsaXRfd2hpbGUgbGlzdCB+ZiA9XG4gICAgbGV0IHJlYyBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYyA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gZiBoZWFkIC0+IHNwbGl0X3doaWxlX2ludG8gdGFpbCB+ZiB+YWNjOihoZWFkIDo6IGFjYylcbiAgICAgIHwgXyA6OiBfIHwgW10gLT4gKExpc3QucmV2IGFjYywgbGlzdClcbiAgICBpblxuICAgIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjOltdXG5cbiAgbGV0IGZpbmRfYV9kdXAgKHR5cGUgZWx0KSBsaXN0IH5jb21wYXJlID1cbiAgICBsZXQgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZWx0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGVuZCBpblxuICAgIGxldCBtb2R1bGUgRWx0X3NldCA9IFNldC5NYWtlIChFbHQpIGluXG4gICAgbGV0IHJlYyBmaW5kX2FfZHVwX2luIGxpc3QgfnNldCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICBpZiBFbHRfc2V0Lm1lbSBoZWFkIHNldCB0aGVuIFNvbWUgaGVhZFxuICAgICAgICAgIGVsc2UgZmluZF9hX2R1cF9pbiB0YWlsIH5zZXQ6KEVsdF9zZXQuYWRkIGhlYWQgc2V0KVxuICAgIGluXG4gICAgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQ6RWx0X3NldC5lbXB0eVxuXG4gIGxldCBhc3NvY19vcHQga2V5IGFsaXN0ID1cbiAgICBtYXRjaCBhc3NvYyBrZXkgYWxpc3Qgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gICgqIHJlb3JkZXJzIGFyZ3VtZW50cyB0byBpbXByb3ZlIHR5cGUgaW5mZXJlbmNlICopXG4gIGxldCBpdGVyIGxpc3QgfmYgPSBpdGVyIGxpc3QgfmZcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG4gIGxldCBpdGVyIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG4gIGxldCB0b19saXN0IHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBbXSB8IFNvbWUgeCAtPiBbIHggXVxuZW5kXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGYgYSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGhhbmRsZV9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gYSB8IEVycm9yIGUgLT4gZiBlXG5lbmRcblxubW9kdWxlIE5vbkVtcHR5TGlzdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAqICdhIGxpc3RcblxuICBsZXQgKCBAICkgKHQxLCBxMSkgKHQyLCBxMikgPSAodDEsIHExIEAgKHQyIDo6IHEyKSlcbiAgbGV0IGhkID0gZnN0XG4gIGxldCB0b19saXN0ICh0LCBxKSA9IHQgOjogcVxuICBsZXQgbWFwIH5mICh0LCBxKSA9IChmIHQsIExpc3QubWFwIH5mIHEpXG5lbmRcblxubW9kdWxlIE91dF9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSA/KGFwcGVuZCA9IGZhbHNlKSA/KGZhaWxfaWZfZXhpc3RzID0gZmFsc2UpXG4gICAgICA/KHBlcm0gPSAwbzY2NikgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IGVsc2UgT3Blbl90ZXh0KSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2Vfb3V0XG5cbiAgbGV0IHdyaXRlX2FsbCBmaWxlbmFtZSB+ZGF0YSA9XG4gICAgd2l0aF9maWxlIGZpbGVuYW1lIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGlzX2VtcHR5ICh0IDogdCkgPSBsZW5ndGggdCA9IDBcbiAgbGV0IHByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuXG4gIGxldCBzdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOihsZW5ndGggdCAtIGxlbikgfmxlblxuICBsZXQgZHJvcF9wcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOmxlbiB+bGVuOihsZW5ndGggdCAtIGxlbilcbiAgbGV0IGRyb3Bfc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuXG4gIGxldCBpc19wcmVmaXggdCB+cHJlZml4ID1cbiAgICBsZXQgcmVjIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlblxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgcG9zKSAoZ2V0IHByZWZpeCBwb3MpXG4gICAgICAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczoocG9zICsgMSkgfmxlblxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHByZWZpeFxuICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOjAgfmxlbjoobGVuZ3RoIHByZWZpeClcblxuICBsZXQgaXNfc3VmZml4IHQgfnN1ZmZpeCA9XG4gICAgbGV0IHJlYyBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3MgfnN1ZmZpeF9vZmZzZXQgPVxuICAgICAgcG9zIDwgMFxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgKHN1ZmZpeF9vZmZzZXQgKyBwb3MpKSAoZ2V0IHN1ZmZpeCBwb3MpXG4gICAgICAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3M6KHBvcyAtIDEpIH5zdWZmaXhfb2Zmc2V0XG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggc3VmZml4XG4gICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeFxuICAgICAgICAgfnBvczoobGVuZ3RoIHN1ZmZpeCAtIDEpXG4gICAgICAgICB+c3VmZml4X29mZnNldDoobGVuZ3RoIHQgLSBsZW5ndGggc3VmZml4KVxuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgbGV0IHJlYyBleGlzdHNfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zIDwgbGVuICYmIChmIChnZXQgdCBwb3MpIHx8IGV4aXN0c19hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBleGlzdHNfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgbGV0IHJlYyBmb3JfYWxsX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW4gfHwgKGYgKGdldCB0IHBvcykgJiYgZm9yX2FsbF9hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBmb3JfYWxsX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCBpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCByaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGhcbiAgICB8IGkgLT4gU29tZSBpXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgbHNwbGl0MiB0IH5vbiA9XG4gICAgbWF0Y2ggaW5kZXhfb3B0IHQgb24gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICAgU29tZSAoc3ViIHQgfnBvczowIH5sZW46aSwgc3ViIHQgfnBvczooaSArIDEpIH5sZW46KGxlbmd0aCB0IC0gaSAtIDEpKVxuXG4gIGxldCBjYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBsb3dlcmNhc2VfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdW5jYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IHNwbGl0X29uX2NoYXIgdCB+c2VwID0gU3RkbGliLlN0cmluZy5zcGxpdF9vbl9jaGFyIHNlcCB0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHN0cmluZylcblxuICBtb2R1bGUgTWFwID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgbGV0IGZpbmRfb3B0IGtleSB0ID1cbiAgICAgIG1hdGNoIGZpbmQga2V5IHQgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICBlbmRcblxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFN0cmluZylcbmVuZFxuXG5sZXQgKCBAICkgPSBMaXN0LmFwcGVuZFxubGV0IG91dHB1dCBvYyBieXRlcyB+cG9zIH5sZW4gPSBvdXRwdXQgb2MgYnl0ZXMgcG9zIGxlblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIH5wb3MgfmxlbiA9IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIHBvcyBsZW5cbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTCA9IEFzdGxpYi5Mb2NhdGlvblxuXG50eXBlIHQgPSBsb2NhdGlvbiA9IHtcbiAgbG9jX3N0YXJ0IDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZW5kIDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5sZXQgaW5fZmlsZSBuYW1lID1cbiAgbGV0IGxvYyA9IHsgcG9zX2ZuYW1lID0gbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAtMSB9IGluXG4gIHsgbG9jX3N0YXJ0ID0gbG9jOyBsb2NfZW5kID0gbG9jOyBsb2NfZ2hvc3QgPSB0cnVlIH1cblxubGV0IHNldF9maWxlbmFtZSBsb2MgZm4gPVxuICBsZXQgbG9jX3N0YXJ0ID0geyBsb2MubG9jX3N0YXJ0IHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICBsZXQgbG9jX2VuZCA9IHsgbG9jLmxvY19lbmQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIHsgbG9jIHdpdGggbG9jX3N0YXJ0OyBsb2NfZW5kIH1cblxubGV0IG5vbmUgPSBpbl9maWxlIFwiX25vbmVfXCJcblxubGV0IGluaXQgbGV4YnVmIGZuYW1lID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAwIH1cblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIGZtdCA9IEwucmFpc2VfZXJyb3JmID9sb2MgZm10XG5sZXQgcmVwb3J0X2V4Y2VwdGlvbiA9IEwucmVwb3J0X2V4Y2VwdGlvblxuXG5sZXQgb2ZfbGV4YnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIHtcbiAgICBsb2Nfc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgbG9jX2VuZCA9IGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICB9XG5cbmxldCBwcmludCBwcGYgdCA9XG4gIFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XCJcbiAgICB0LmxvY19zdGFydC5wb3NfZm5hbWUgdC5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAodC5sb2Nfc3RhcnQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuICAgICh0LmxvY19lbmQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuXG50eXBlIG5vbnJlYyAnYSBsb2MgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiB0IH1cblxubGV0IGNvbXBhcmVfcG9zIHAxIHAyID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxldCBjb2x1bW4gcCA9XG4gICAgKCogTWFudWFsIGV4dHJhY3Q6XG4gICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3NfY251bSBhbmQgcG9zX2JvbCBpcyB0aGUgY2hhcmFjdGVyIG9mZnNldFxuICAgICAgIHdpdGhpbiB0aGUgbGluZSAoaS5lLiB0aGUgY29sdW1uIG51bWJlciwgYXNzdW1pbmcgZWFjaCBjaGFyYWN0ZXIgaXNcbiAgICAgICBvbmUgY29sdW1uIHdpZGUpLiAqKVxuICAgIHAucG9zX2NudW0gLSBwLnBvc19ib2xcbiAgaW5cbiAgbWF0Y2ggSW50LmNvbXBhcmUgcDEucG9zX2xudW0gcDIucG9zX2xudW0gd2l0aFxuICB8IDAgLT4gSW50LmNvbXBhcmUgKGNvbHVtbiBwMSkgKGNvbHVtbiBwMilcbiAgfCBuIC0+IG5cblxubGV0IG1pbl9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA8PSAwIHRoZW4gcDEgZWxzZSBwMlxubGV0IG1heF9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA+PSAwIHRoZW4gcDEgZWxzZSBwMlxuXG5sZXQgY29tcGFyZSBsb2MxIGxvYzIgPVxuICBtYXRjaCBjb21wYXJlX3BvcyBsb2MxLmxvY19zdGFydCBsb2MyLmxvY19zdGFydCB3aXRoXG4gIHwgMCAtPiBjb21wYXJlX3BvcyBsb2MxLmxvY19lbmQgbG9jMi5sb2NfZW5kXG4gIHwgbiAtPiBuXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBpbmNsdWRlIFBweGxpYl9hc3QuTG9jYXRpb25fZXJyb3JcblxuICBsZXQgY3JlYXRlZiB+bG9jIGZtdCA9IEZvcm1hdC5rYXNwcmludGYgKGZ1biBzdHIgLT4gbWFrZSB+bG9jIH5zdWI6W10gc3RyKSBmbXRcbmVuZFxuXG5sZXQgZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIGZtdCA9XG4gIEZvcm1hdC5rYXNwcmludGZcbiAgICAoZnVuIHN0ciAtPiBFcnJvci50b19leHRlbnNpb24gQEAgRXJyb3IubWFrZSB+bG9jIH5zdWI6W10gc3RyKVxuICAgIGZtdFxuXG5leGNlcHRpb24gRXJyb3IgPSBMLkVycm9yXG5cbmxldCAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgIHwgRXJyb3IgZSAtPiBTb21lIChFcnJvci5tZXNzYWdlIGUpXG4gICAgfCBfIC0+IE5vbmUpXG4iLCJvcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEV4cGVjdGVkIG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IGZhaWwgbG9jIGV4cGVjdGVkID0gcmFpc2UgKEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSlcblxudHlwZSBjb250ZXh0ID0ge1xuICAoKiBbbWF0Y2hlZF0gY291bnRzIGhvdyBtYW55IGNvbnN0cnVjdG9ycyBoYXZlIGJlZW4gbWF0Y2hlZC4gVGhpcyBpcyB1c2VkIHRvIGZpbmQgd2hhdFxuICAgICBwYXR0ZXJuIG1hdGNoZXMgdGhlIG1vc3Qgc29tZSBwaWVjZSBvZiBhc3QgaW4gW0FzdF9wYXR0ZXJuLmFsdF0uIEluIHRoZSBjYXNlIHdoZXJlXG4gICAgIGFsbCBicmFuY2hlcyBmYWlsIHRvIG1hdGNoLCB3ZSByZXBvcnQgdGhlIGVycm9yIGZyb20gdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlXG4gICAgIG1vc3QuXG5cbiAgICAgVGhpcyBpcyBvbmx5IGluY3JlbWVudGVkIGJ5IGNvbWJpbmF0b3JzIHRoYXQgY2FuIGZhaWwuICopXG4gIG11dGFibGUgbWF0Y2hlZCA6IGludDtcbn1cblxudHlwZSAoJ21hdGNoZWRfdmFsdWUsICdrLCAna19yZXN1bHQpIHQgPVxuICB8IFQgb2YgKGNvbnRleHQgLT4gTG9jYXRpb24udCAtPiAnbWF0Y2hlZF92YWx1ZSAtPiAnayAtPiAna19yZXN1bHQpXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIE0gPVxuICBzdHJ1Y3RcbiAgICBsZXQgYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnBheWxvYWQgLT5cbiAgICAgICAgICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgYmluZGluZ19vcCB+bG9jICA9XG4gICAgICAoKGZ1biB+b3AgLT5cbiAgICAgICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgICAgICgoZnVuIH5leHAgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9vcCA9IG9wO1xuICAgICAgICAgICAgICAgICAgICBwYm9wX3BhdCA9IHBhdDtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9leHAgPSBleHA7XG4gICAgICAgICAgICAgICAgICAgIHBib3BfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjYXNlIH5saHMgID1cbiAgICAgICgoZnVuIH5ndWFyZCAtPlxuICAgICAgICAgICgoZnVuIH5yaHMgLT4geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfc3RydWN0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfZnVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9sZXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9pbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfdmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX21ldGhvZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX21ldGhvZCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX2luZm9zIH5sb2MgID1cbiAgICAgICgoZnVuIH52aXJ0IC0+XG4gICAgICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmICA9XG4gICAgICAoKGZ1biB+ZmllbGRzIC0+IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2NvbnN0ciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfc2lnbmF0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9hcnJvdyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2luaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl92YWwgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9tZXRob2QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfbWV0aG9kIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfY29uc3RyYWludCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnZhcnMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmFyZ3MgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5yZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfYXJyb3cgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF90dXBsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY29uc3RyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX29iamVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FsaWFzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcG9seSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcGFja2FnZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9zdHJpbmcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2ludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2lkZW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2Jvb2wgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29uc3RhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZnVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbWF0Y2ggfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9tYXRjaCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF90cnkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHVwbGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF92YXJpYW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9yZWNvcmQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZmllbGQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FycmF5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3doaWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZm9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKChmdW4geDQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29lcmNlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NlbmQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ldyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX292ZXJyaWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Fzc2VydCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xhenkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcG9seSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb2JqZWN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vYmplY3QgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbmV3dHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcGFjayB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRvcCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgICAgICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgaW5jbHVkZV9pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biBtb2RfIC0+XG4gICAgICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+bXV0YWJsZV8gLT5cbiAgICAgICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgICAgICAgICAgICAgcGxkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbGV0b3AgfmxldF8gID1cbiAgICAgICgoZnVuIH5hbmRzIC0+ICgoZnVuIH5ib2R5IC0+IHsgbGV0XzsgYW5kczsgYm9keSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBsb2NhdGlvbiB+c3RhcnQgID1cbiAgICAgICgoZnVuIH5lbmRfIC0+XG4gICAgICAgICAgKChmdW4gfmdob3N0IC0+XG4gICAgICAgICAgICAgIHsgbG9jX3N0YXJ0ID0gc3RhcnQ7IGxvY19lbmQgPSBlbmRfOyBsb2NfZ2hvc3QgPSBnaG9zdCB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbWJfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG1iX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHBtYl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1iX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbWRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG1kX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwbWRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtZF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9mdW5jdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfYXBwbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX3VucGFjayB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9zaWduYXR1cmUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV93aXRoIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3dpdGggKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfdHlwZW9mIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2FsaWFzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbXRkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3RhZyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBvZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb2luaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE9pbmhlcml0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3Blbl9pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICgoZnVuIH5vdmVycmlkZSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgICAgICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FueSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hbGlhcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FsaWFzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0YW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdGFudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9pbnRlcnZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R1cGxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfcmVjb3JkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FycmF5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9vciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R5cGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfbGF6eSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfbGF6eSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF91bnBhY2sgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3VucGFjayB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9leGNlcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4Y2VwdGlvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICA9XG4gICAgICAoKGZ1biB+bG51bSAtPlxuICAgICAgICAgICgoZnVuIH5ib2wgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNudW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2ZuYW1lID0gZm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gbG51bTtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IGJvbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJ0YWcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwcmZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcmluaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ192YWx1ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXh0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4Y2VwdGlvbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kdWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHVsZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kc3Vic3QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHR5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19pbmNsdWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2NsYXNzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19jbGFzc190eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzX3R5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9ldmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl92YWx1ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGV4dCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX21vZHR5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9pbmNsdWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfmFyZyAtPiB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNzdHJzIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB+bWFuaWZlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIGNvbnN0cnVjdG9yIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+cGF0aCAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNvbnN0cnVjdG9ycyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfYmluZGluZyB+bG9jICA9XG4gICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB2Yl9wYXQgPSBwYXQ7XG4gICAgICAgICAgICAgICAgcHZiX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHZiX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAgKChmdW4gfnByaW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgZW5kXG5tb2R1bGUgTWFrZShMb2M6c2lnIHZhbCBsb2MgOiBMb2NhdGlvbi50IGVuZCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgbG9jID0gTG9jLmxvY1xuICAgIGxldCBhdHRyaWJ1dGUgfm5hbWUgID1cbiAgICAgICgoZnVuIH5wYXlsb2FkIC0+XG4gICAgICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGJpbmRpbmdfb3Agfm9wICA9XG4gICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgKChmdW4gfmV4cCAtPlxuICAgICAgICAgICAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjYXNlIH5saHMgID1cbiAgICAgICgoZnVuIH5ndWFyZCAtPlxuICAgICAgICAgICgoZnVuIH5yaHMgLT4geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfc3RydWN0dXJlIHgwID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX3N0cnVjdHVyZSB4MCkgfVxuICAgIGxldCBwY2xfZnVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfYXBwbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2xldCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfaW5oZXJpdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfdmFsIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX3ZhbCB4MCkgfVxuICAgIGxldCBwY2ZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY2ZfY29uc3RyYWludCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9jb25zdHJhaW50IHgwKSB9XG4gICAgbGV0IHBjZl9pbml0aWFsaXplciB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9pbml0aWFsaXplciB4MCkgfVxuICAgIGxldCBwY2ZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwY2ZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2V4dGVuc2lvbiB4MCkgfVxuICAgIGxldCBjbGFzc19pbmZvcyB+dmlydCAgPVxuICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgICAgICAgICAgICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmICA9XG4gICAgICAoKGZ1biB+ZmllbGRzIC0+IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2NvbnN0ciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfc2lnbmF0dXJlIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfYXJyb3cgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9pbmhlcml0IHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dmFycyAtPlxuICAgICAgICAgICgoZnVuIH5hcmdzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5yZXMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgICAgICAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FueSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY29uc3RyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfb2JqZWN0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY2xhc3MgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FsaWFzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcG9seSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcG9seSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9wYWNrYWdlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wYWNrYWdlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZGlyX3N0cmluZyB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9XG4gICAgbGV0IHBkaXJfaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9pZGVudCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH1cbiAgICBsZXQgcGRpcl9ib29sIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9XG4gICAgbGV0IHBleHBfaWRlbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0YW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Z1bmN0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW5jdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FwcGx5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9tYXRjaCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHJ5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3ZhcmlhbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcmVjb3JkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZmllbGQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZpZWxkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NldGZpZWxkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VxdWVuY2UgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3doaWxlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF93aGlsZSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mb3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4geDQgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29lcmNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZW5kIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ldyB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb3ZlcnJpZGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX292ZXJyaWRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG1vZHVsZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfYXNzZXJ0IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hc3NlcnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGF6eSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wb2x5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX29iamVjdCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ld3R5cGUgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldG9wIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRvcCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF91bnJlYWNoYWJsZVxuICAgICAgfVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3Igfm5hbWUgID1cbiAgICAgICgoZnVuIH5raW5kIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBpbmNsdWRlX2luZm9zIG1vZF8gPVxuICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+bXV0YWJsZV8gLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICAgICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxldG9wIH5sZXRfICA9XG4gICAgICAoKGZ1biB+YW5kcyAtPiAoKGZ1biB+Ym9keSAtPiB7IGxldF87IGFuZHM7IGJvZHkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICA9XG4gICAgICAoKGZ1biB+ZW5kXyAtPlxuICAgICAgICAgICgoZnVuIH5naG9zdCAtPlxuICAgICAgICAgICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWUgID1cbiAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtYl9sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1kX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1kX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbWRfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2lkZW50IHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9pZGVudCB4MCkgfVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2Rfc3RydWN0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2Z1bmN0b3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9hcHBseSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfdW5wYWNrIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApIH1cbiAgICBsZXQgcG1vZF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9pZGVudCB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApIH1cbiAgICBsZXQgcG10eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9mdW5jdG9yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfd2l0aCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3R5cGVvZiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfdHlwZW9mIHgwKSB9XG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfYWxpYXMgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKSB9XG4gICAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdGRfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBvdGFnIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPdGFnICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb2luaGVyaXQgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5leHByICA9XG4gICAgICAoKGZ1biB+b3ZlcnJpZGUgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfYW55ID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3JlY29yZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90eXBlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICA9XG4gICAgICAoKGZ1biB+bG51bSAtPlxuICAgICAgICAgICgoZnVuIH5ib2wgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNudW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2ZuYW1lID0gZm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gbG51bTtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IGJvbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJ0YWcgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcmZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCByaW5oZXJpdCB4MCA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9XG4gICAgbGV0IHBzaWdfdmFsdWUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGUgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZSAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2RzdWJzdCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4geDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzcyB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V2YWwgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfdmFsdWUgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH1cbiAgICBsZXQgcHN0cl90eXBlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGV4dCB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHN0cl9tb2R1bGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9yZWNtb2R1bGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdHlwZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9vcGVuIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH1cbiAgICBsZXQgcHN0cl9jbGFzc190eXBlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9pbmNsdWRlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHN0cl9leHRlbnNpb24geDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lICA9XG4gICAgICAoKGZ1biB+YXJnIC0+IHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICgoZnVuIH5jc3RycyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfnBhdGggID1cbiAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAoKGZ1biB+Y29uc3RydWN0b3JzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfYmluZGluZyB+cGF0ICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPSBwYXQ7XG4gICAgICAgICAgICBwdmJfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHZiX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICgoZnVuIH5wcmltIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgbG9jID0geyB0eHQgOiAnYTsgbG9jIDogTG9jYXRpb24udCB9XG5cbmxldCB0eHQgdCA9IHQudHh0XG5sZXQgbG9jIHQgPSB0LmxvY1xubGV0IG1ha2UgfmxvYyB0eHQgPSB7IGxvYzsgdHh0IH1cbmxldCBtYXAgdCB+ZiA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGxvbmdpZGVudCA9IExpZGVudCBvZiBzdHJpbmcgfCBMZG90IG9mIHQgKiBzdHJpbmcgfCBMYXBwbHkgb2YgdCAqIHRcblxuICBsZXQgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50X2NoYXIgPSBmdW5jdGlvblxuICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJ18nIHwgJ1xcJycgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBpc19ub3JtYWxfaWRlbnQgPSBmdW5jdGlvblxuICAgIHwgXCJhc3JcIiB8IFwibGFuZFwiIHwgXCJsb3JcIiB8IFwibHNsXCIgfCBcImxzclwiIHwgXCJseG9yXCIgfCBcIm1vZFwiIHwgXCJvclwiIC0+IGZhbHNlXG4gICAgfCBzdHJpbmcgLT4gU3RyaW5nLmZvcl9hbGwgc3RyaW5nIH5mOmlzX25vcm1hbF9pZGVudF9jaGFyXG5cbiAgbGV0IHNob3J0X25hbWUgc3RyaW5nID1cbiAgICBpZiBpc19ub3JtYWxfaWRlbnQgc3RyaW5nIHRoZW4gc3RyaW5nIGVsc2UgXCIoIFwiIF4gc3RyaW5nIF4gXCIgKVwiXG5cbiAgbGV0IHJlYyBuYW1lID0gZnVuY3Rpb25cbiAgICB8IExpZGVudCBzIC0+IHNob3J0X25hbWUgc1xuICAgIHwgTGRvdCAoYSwgYikgLT4gbmFtZSBhIF4gXCIuXCIgXiBzaG9ydF9uYW1lIGJcbiAgICB8IExhcHBseSAoYSwgYikgLT4gUHJpbnRmLnNwcmludGYgXCIlcyglcylcIiAobmFtZSBhKSAobmFtZSBiKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAobmFtZSB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgcmVjIGZsYXQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcyA6OiBhY2N1XG4gIHwgTGRvdCAobGlkLCBzKSAtPiBmbGF0IChzIDo6IGFjY3UpIGxpZFxuICB8IExhcHBseSAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuTG9uZ2lkZW50LmZsYXR0ZW5cIlxuXG5sZXQgZmxhdHRlbl9leG4gbGlkID0gZmxhdCBbXSBsaWRcblxubGV0IGxhc3RfZXhuID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBzXG4gIHwgTGRvdCAoXywgcykgLT4gc1xuICB8IExhcHBseSAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuTG9uZ2lkZW50LmZsYXR0ZW5cIlxuXG5sZXQgdW5mbGF0dGVuIH5pbml0IGwgPSBMaXN0LmZvbGRfbGVmdCBsIH5pbml0IH5mOihmdW4gYWNjIHMgLT4gTGRvdCAoYWNjLCBzKSlcblxuKCogZm9yIGNhc2VzIHdpdGhvdXQgZG90dGVkIG9wZXJhdG9ycyAoZS5nLiBbcGFyc2UgXCJBLkIuQ1wiXSkgKilcbmxldCBwYXJzZV9zaW1wbGUgcyA9XG4gIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIHMgfnNlcDonLicgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IHMgOjogbCAtPiB1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsXG5cbigqIGhhbmRsZSBbXCJBLkIuKCsuKylcIl0gb3IgW1wiVmVjLiguJS4oKTwtKVwiXSAqKVxubGV0IHBhcnNlIHMgPVxuICBsZXQgaW52YWxpZCAoKSA9XG4gICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwiUHB4bGliLkxvbmdpZGVudC5wYXJzZTogJVNcIiBzKVxuICBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPCAxIHRoZW4gaW52YWxpZCAoKTtcbiAgbGV0IG9wZW5fcGFyID0gU3RyaW5nLmluZGV4X29wdCBzICcoJyBpblxuICBsZXQgY2xvc2VfcGFyID0gU3RyaW5nLmluZGV4X29wdCBzICcpJyBpblxuICBtYXRjaCAocy5bMF0sIG9wZW5fcGFyLCBjbG9zZV9wYXIpIHdpdGhcbiAgfCAoJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnXycpLCBOb25lLCBOb25lIC0+IHBhcnNlX3NpbXBsZSBzXG4gIHwgXywgTm9uZSwgTm9uZSAtPiBMaWRlbnQgcyAoKiBUaGlzIGlzIGEgcmF3IG9wZXJhdG9yLCBubyBtb2R1bGUgcGF0aCAqKVxuICB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+IGludmFsaWQgKClcbiAgfCBfLCBTb21lIGwsIFNvbWUgciAtPiAoXG4gICAgICBpZiBJbnQuKHIgPD4gU3RyaW5nLmxlbmd0aCBzIC0gMSkgdGhlbiBpbnZhbGlkICgpO1xuICAgICAgbGV0IGdyb3VwID1cbiAgICAgICAgaWYgSW50LihyID0gbCArIDEpIHRoZW4gXCIoKVwiXG4gICAgICAgIGVsc2UgU3RyaW5nLnRyaW0gKFN0cmluZy5zdWIgcyB+cG9zOihsICsgMSkgfmxlbjoociAtIGwgLSAxKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQuKGwgPSAwKSB0aGVuIExpZGVudCBncm91cFxuICAgICAgZWxzZSBpZiBDaGFyLihzLltsIC0gMV0gPD4gJy4nKSB0aGVuIGludmFsaWQgKClcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGJlZm9yZSA9IFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjoobCAtIDEpIGluXG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIGJlZm9yZSB+c2VwOicuJyB3aXRoXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgcyA6OiBsIC0+IExkb3QgKHVuZmxhdHRlbiB+aW5pdDooTGlkZW50IHMpIGwsIGdyb3VwKSlcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlIChUKVxubW9kdWxlIFNldCA9IFNldC5NYWtlIChUKVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBEZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBMb2NhdGVkID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTG9jLnRcblxuICAgIGxldCBsb2MgKHggOiBfIHQpID0geC5sb2NcbiAgICBsZXQgbWsgfmxvYyB4ID0geyBsb2M7IHR4dCA9IHggfVxuICAgIGxldCBtYXAgZiB0ID0geyB0IHdpdGggdHh0ID0gZiB0LnR4dCB9XG4gICAgbGV0IG1hcF9saWRlbnQgeCA9IG1hcCAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4XG4gICAgbGV0IGxpZGVudCB+bG9jIHggPSBtayB+bG9jIChMb25naWRlbnQucGFyc2UgeClcbiAgZW5kXG5cbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTVxuXG4gIG1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgPSBwcGF0X2NvbnN0cnVjdFxuXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnZhcnMgfmFyZ3MgfnJlcyAoKSA9XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLS0gc3RhYmxlIGxheWVyIGFib3ZlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NIC0tLS0tKilcbiAgbGV0IHBwYXRfY29uc3RydWN0IH5sb2MgbGlkIHAgPVxuICAgIHtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJ1Y3QgKGxpZCwgT3B0aW9uLm1hcCBwIH5mOihmdW4gcCAtPiAoW10sIHApKSk7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbiAgbGV0IHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCB2YnMgLT4gWyBwc3RyX3ZhbHVlIH5sb2MgcmVjX2ZsYWcgdmJzIF1cblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfmxvYzpfIH5uYW1lOl8gfnBhcmFtczpfIH5jc3RyczpfIH5raW5kOl9cbiAgICAgIH5wcml2YXRlXzpfIH5tYW5pZmVzdDpfID1cbiAgICBmYWlsd2l0aFxuICAgICAgXCJQcHhsaWIuQXN0X2J1aWxkZXIubm9ucmVjX3R5cGVfZGVjbGFyYXRpb246IGRvbid0IHVzZSB0aGlzIGZ1bmN0aW9uXCJcblxuICBsZXQgZWludCB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQudG9fc3RyaW5nIHQsIE5vbmUpKVxuICBsZXQgZWNoYXIgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfY2hhciB0KVxuICBsZXQgZXN0cmluZyB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9zdHJpbmcgKHQsIGxvYywgTm9uZSkpXG4gIGxldCBlZmxvYXQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfZmxvYXQgKHQsIE5vbmUpKVxuXG4gIGxldCBlaW50MzIgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgdCwgU29tZSAnbCcpKVxuXG4gIGxldCBlaW50NjQgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgdCwgU29tZSAnTCcpKVxuXG4gIGxldCBlbmF0aXZlaW50IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB0LCBTb21lICduJykpXG5cbiAgbGV0IHBpbnQgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IHBjaGFyIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IHBzdHJpbmcgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgcGZsb2F0IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgcGludDMyIH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgcGludDY0IH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgcG5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBlYm9vbCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IHBib29sIH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyAoQm9vbC50b19zdHJpbmcgdCkpIE5vbmVcblxuICBsZXQgZXZhciB+bG9jIHYgPSBwZXhwX2lkZW50IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHYpKVxuICBsZXQgcHZhciB+bG9jIHYgPSBwcGF0X3ZhciB+bG9jIChMb2NhdGVkLm1rIH5sb2MgdilcbiAgbGV0IGV1bml0IH5sb2MgPSBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcHVuaXQgfmxvYyA9IHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiKSBOb25lXG4gIGxldCBwZXhwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHB0eXBfdHVwbGUgfmxvYyBsXG5cbiAgbGV0IHBleHBfdHVwbGVfb3B0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoIFtdIC0+IE5vbmUgfCBfIDo6IF8gLT4gU29tZSAocGV4cF90dXBsZSB+bG9jIGwpXG5cbiAgbGV0IHBwYXRfdHVwbGVfb3B0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoIFtdIC0+IE5vbmUgfCBfIDo6IF8gLT4gU29tZSAocHBhdF90dXBsZSB+bG9jIGwpXG5cbiAgbGV0IHB0eXBfcG9seSB+bG9jIHZhcnMgdHkgPVxuICAgIG1hdGNoIHZhcnMgd2l0aCBbXSAtPiB0eSB8IF8gLT4gcHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuXG4gIGxldCBwZXhwX2FwcGx5IH5sb2MgZSBlbCA9XG4gICAgbWF0Y2ggKGUsIGVsKSB3aXRoXG4gICAgfCBfLCBbXSAtPiBlXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGUsIGFyZ3MpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9LCBfIC0+XG4gICAgICAgIHsgZSB3aXRoIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGUsIGFyZ3MgQCBlbCkgfVxuICAgIHwgXyAtPiBwZXhwX2FwcGx5IH5sb2MgZSBlbFxuXG4gIGxldCBlYXBwbHkgfmxvYyBlIGVsID1cbiAgICBwZXhwX2FwcGx5IH5sb2MgZSAoTGlzdC5tYXAgZWwgfmY6KGZ1biBlIC0+IChBc3R0eXBlcy5Ob2xhYmVsLCBlKSkpXG5cbiAgbGV0IGVhYnN0cmFjdCB+bG9jIHBzIGUgPVxuICAgIExpc3QuZm9sZF9yaWdodCBwcyB+aW5pdDplIH5mOihmdW4gcCBlIC0+XG4gICAgICAgIHBleHBfZnVuIH5sb2MgQXN0dHlwZXMuTm9sYWJlbCBOb25lIHAgZSlcblxuICBsZXQgZXNlcXVlbmNlIH5sb2MgZWwgPVxuICAgIG1hdGNoIExpc3QucmV2IGVsIHdpdGhcbiAgICB8IFtdIC0+IGV1bml0IH5sb2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHRsIH5pbml0OmhkIH5mOihmdW4gYWNjIGUgLT4gcGV4cF9zZXF1ZW5jZSB+bG9jIGUgYWNjKVxuXG4gIGxldCBwY29uc3RydWN0IGNkIGFyZyA9XG4gICAgcHBhdF9jb25zdHJ1Y3QgfmxvYzpjZC5wY2RfbG9jIChMb2NhdGVkLm1hcF9saWRlbnQgY2QucGNkX25hbWUpIGFyZ1xuXG4gIGxldCBlY29uc3RydWN0IGNkIGFyZyA9XG4gICAgcGV4cF9jb25zdHJ1Y3QgfmxvYzpjZC5wY2RfbG9jIChMb2NhdGVkLm1hcF9saWRlbnQgY2QucGNkX25hbWUpIGFyZ1xuXG4gIGxldCByZWMgZWxpc3QgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgcGV4cF9jb25zdHJ1Y3QgfmxvY1xuICAgICAgICAgIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCI6OlwiKSlcbiAgICAgICAgICAoU29tZSAocGV4cF90dXBsZSB+bG9jIFsgeDsgZWxpc3QgfmxvYyBsIF0pKVxuXG4gIGxldCByZWMgcGxpc3QgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvY1xuICAgICAgICAgIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCI6OlwiKSlcbiAgICAgICAgICAoU29tZSAocHBhdF90dXBsZSB+bG9jIFsgeDsgcGxpc3QgfmxvYyBsIF0pKVxuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IH5sb2MgKGlkZW50IDogTG9uZ2lkZW50LnQpIH5mID1cbiAgICBtYXRjaCBpZGVudCB3aXRoXG4gICAgfCBMaWRlbnQgbiAtPiBwZXhwX2lkZW50IH5sb2MgeyB0eHQgPSBMaWRlbnQgKGYgbik7IGxvYyB9XG4gICAgfCBMZG90IChwYXRoLCBuKSAtPiBwZXhwX2lkZW50IH5sb2MgeyB0eHQgPSBMZG90IChwYXRoLCBmIG4pOyBsb2MgfVxuICAgIHwgTGFwcGx5IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bmV4cGVjdGVkIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZVwiXG5cbiAgbGV0IHR5cGVfY29uc3RyX2NvbnYgfmxvYzphcHBseV9sb2MgeyBMb2MubG9jOyB0eHQgPSBsb25naWRlbnQgfSB+ZiBhcmdzID1cbiAgICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCAobG9uZ2lkZW50IDogTG9uZ2lkZW50LnQpIHdpdGhcbiAgICB8IExpZGVudCBfIHwgTGRvdCAoKExpZGVudCBfIHwgTGRvdCBfKSwgXykgfCBMYXBwbHkgXyAtPiAoXG4gICAgICAgIGxldCBpZGVudCA9XG4gICAgICAgICAgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSBsb25naWRlbnQgfmxvYyB+ZlxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpZGVudFxuICAgICAgICB8IF8gOjogXyAtPiBlYXBwbHkgfmxvYzphcHBseV9sb2MgaWRlbnQgYXJncylcbiAgICB8IExkb3QgKChMYXBwbHkgXyBhcyBtb2R1bGVfcGF0aCksIG4pIC0+XG4gICAgICAgIGxldCBzdWZmaXhfbiBmdW5jdG9yXyA9IFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZnVuY3Rvcl8gXiBcIl9fXCIgXiBuIGluXG4gICAgICAgIGxldCByZWMgZ2F0aGVyX2xhcHBseSBmdW5jdG9yX2FyZ3MgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCAqIF8gPVxuICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgfCBMYXBwbHkgKHJlc3QsIGFyZykgLT4gZ2F0aGVyX2xhcHBseSAoYXJnIDo6IGZ1bmN0b3JfYXJncykgcmVzdFxuICAgICAgICAgIHwgTGlkZW50IGZ1bmN0b3JfIC0+IChMaWRlbnQgKHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICAgIHwgTGRvdCAoZnVuY3Rvcl9wYXRoLCBmdW5jdG9yXykgLT5cbiAgICAgICAgICAgICAgKExkb3QgKGZ1bmN0b3JfcGF0aCwgc3VmZml4X24gZnVuY3Rvcl8pLCBmdW5jdG9yX2FyZ3MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpZGVudCwgZnVuY3Rvcl9hcmdzID0gZ2F0aGVyX2xhcHBseSBbXSBtb2R1bGVfcGF0aCBpblxuICAgICAgICBlYXBwbHkgfmxvYzphcHBseV9sb2NcbiAgICAgICAgICAodW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSBpZGVudCB+bG9jIH5mKVxuICAgICAgICAgIChMaXN0Lm1hcCBmdW5jdG9yX2FyZ3MgfmY6KGZ1biBwYXRoIC0+XG4gICAgICAgICAgICAgICBwZXhwX3BhY2sgfmxvYyAocG1vZF9pZGVudCB+bG9jIHsgdHh0ID0gcGF0aDsgbG9jIH0pKVxuICAgICAgICAgIEAgYXJncylcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBsb25naWRlbnQgfmYgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgbG9uZ2lkZW50IH5sb2MgfmYgW11cblxuICBsZXQgZXRhX3JlZHVjZSA9XG4gICAgbGV0IHJlYyBnYXRoZXJfcGFyYW1zIGFjYyBleHByID1cbiAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgfCB7XG4gICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgIFBleHBfZnVuIChsYWJlbCwgTm9uZSAoKiBubyBkZWZhdWx0IGV4cHJlc3Npb24gKiksIHN1YnBhdCwgYm9keSk7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgIH0gLT4gKFxuICAgICAgICAgIG1hdGNoIHN1YnBhdCB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIG5hbWU7XG4gICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgTm9uZSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIHR5ICk7XG4gICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICgqIFdlIHJlZHVjZSBbZnVuICh4IDogdHkpIC0+IGYgeF0gYnkgcmV3cml0aW5nIGl0IFsoZiA6IHR5IC0+IF8pXS4gKilcbiAgICAgICAgICAgICAgZ2F0aGVyX3BhcmFtcyAoKGxhYmVsLCBuYW1lLCBTb21lIHR5KSA6OiBhY2MpIGJvZHlcbiAgICAgICAgICB8IF8gLT4gKExpc3QucmV2IGFjYywgZXhwcikpXG4gICAgICB8IF8gLT4gKExpc3QucmV2IGFjYywgZXhwcilcbiAgICBpblxuICAgIGxldCBhbm5vdGF0ZSB+bG9jIGV4cHIgcGFyYW1zID1cbiAgICAgIGlmIExpc3QuZXhpc3RzIHBhcmFtcyB+ZjooZnVuIChfLCBfLCB0eSkgLT4gT3B0aW9uLmlzX3NvbWUgdHkpIHRoZW5cbiAgICAgICAgbGV0IHR5ID1cbiAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQgcGFyYW1zIH5pbml0OihwdHlwX2FueSB+bG9jKVxuICAgICAgICAgICAgfmY6KGZ1biAocGFyYW1fbGFiZWwsIHBhcmFtLCB0eV9vcHQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgbG9jID0gcGFyYW0ubG9jIGluXG4gICAgICAgICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdHlfb3B0IHdpdGggTm9uZSAtPiBwdHlwX2FueSB+bG9jIHwgU29tZSB0eSAtPiB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwdHlwX2Fycm93IH5sb2MgcGFyYW1fbGFiZWwgdHkgYWNjKVxuICAgICAgICBpblxuICAgICAgICBwZXhwX2NvbnN0cmFpbnQgfmxvYyBleHByIHR5XG4gICAgICBlbHNlIGV4cHJcbiAgICBpblxuICAgIGxldCByZWMgZ2F0aGVyX2FyZ3MgbiB4ID1cbiAgICAgIGlmIG4gPSAwIHRoZW4gU29tZSAoeCwgW10pXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGJvZHksIGFyZ3MpO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGFyZ3MgPD0gbiB0aGVuXG4gICAgICAgICAgICAgIG1hdGNoIGdhdGhlcl9hcmdzIChuIC0gTGlzdC5sZW5ndGggYXJncykgYm9keSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSAoYm9keSwgYXJncycpIC0+IFNvbWUgKGJvZHksIGFyZ3MnIEAgYXJncylcbiAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgZnVuIGV4cHIgLT5cbiAgICAgIGxldCBwYXJhbXMsIGJvZHkgPSBnYXRoZXJfcGFyYW1zIFtdIGV4cHIgaW5cbiAgICAgIG1hdGNoIGdhdGhlcl9hcmdzIChMaXN0Lmxlbmd0aCBwYXJhbXMpIGJvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gYXMgZl9pZGVudCksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsMiBhcmdzIHBhcmFtc1xuICAgICAgICAgICAgICB+ZjooZnVuIChhcmdfbGFiZWwsIGFyZykgKHBhcmFtX2xhYmVsLCBwYXJhbSwgXykgLT5cbiAgICAgICAgICAgICAgICBQb2x5LiggPSApIChhcmdfbGFiZWwgOiBhcmdfbGFiZWwpIHBhcmFtX2xhYmVsXG4gICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IG5hbWUnOyBfIH07XG4gICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAgIFN0cmluZy4oID0gKSBuYW1lJyBwYXJhbS50eHRcbiAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgIHwgdHJ1ZSAtPiBTb21lIChhbm5vdGF0ZSB+bG9jOmV4cHIucGV4cF9sb2MgZl9pZGVudCBwYXJhbXMpKVxuICAgICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSBleHByID0gT3B0aW9uLnZhbHVlIChldGFfcmVkdWNlIGV4cHIpIH5kZWZhdWx0OmV4cHJcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIGV4cHIgfnJlY19mbGFnID1cbiAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgfCBSZWN1cnNpdmUgLT4gZXhwclxuICAgIHwgTm9ucmVjdXJzaXZlIC0+IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwclxuZW5kXG5cbm1vZHVsZSB0eXBlIExvYyA9IEFzdF9idWlsZGVyX2ludGYuTG9jXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9pbnRmLlNcblxuICBtb2R1bGUgTGF0ZXN0IDogc2lnXG4gICAgdmFsIHBwYXRfY29uc3RydWN0IDpcbiAgICAgIGxvbmdpZGVudCBsb2MgLT4gKGxhYmVsIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uIC0+IHBhdHRlcm5cblxuICAgIHZhbCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgICAgdmFyczpsYWJlbCBsb2MgbGlzdCAtPlxuICAgICAgYXJnczpjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICAgIHJlczpjb3JlX3R5cGUgb3B0aW9uIC0+XG4gICAgICB1bml0IC0+XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICBlbmRcblxuICB2YWwgcHBhdF9jb25zdHJ1Y3QgOiBsb25naWRlbnQgbG9jIC0+IHBhdHRlcm4gb3B0aW9uIC0+IHBhdHRlcm5cblxuICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIG5hbWU6bGFiZWwgbG9jIC0+XG4gICAgYXJnczpjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG5lbmRcblxubW9kdWxlIE1ha2UgKExvYyA6IHNpZ1xuICB2YWwgbG9jIDogTG9jYXRpb24udFxuZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTWFrZSAoTG9jKVxuXG4gIG1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgPSBwcGF0X2NvbnN0cnVjdFxuXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfnZhcnMgfmFyZ3MgfnJlc1xuICBlbmRcblxuICAoKi0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTWFrZSAoTG9jKSAtLS0tLSopXG5cbiAgbGV0IHBwYXRfY29uc3RydWN0IGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfmFyZ3MgfnJlcyA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSBbXTtcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgPSBEZWZhdWx0LnBzdHJfdmFsdWVfbGlzdFxuXG4gIGxldCBub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSB+cGFyYW1zIH5jc3RycyB+a2luZCB+cHJpdmF0ZV8gfm1hbmlmZXN0ID1cbiAgICBEZWZhdWx0Lm5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfXG4gICAgICB+bWFuaWZlc3RcblxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVmYXVsdC5Mb2NhdGVkXG5cbiAgICBsZXQgbG9jIF8gPSBMb2MubG9jXG4gICAgbGV0IG1rIHggPSBtayB+bG9jOkxvYy5sb2MgeFxuICAgIGxldCBsaWRlbnQgeCA9IGxpZGVudCB+bG9jOkxvYy5sb2MgeFxuICBlbmRcblxuICBsZXQgcGV4cF90dXBsZSBsID0gRGVmYXVsdC5wZXhwX3R1cGxlIH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZSBsID0gRGVmYXVsdC5wcGF0X3R1cGxlIH5sb2MgbFxuICBsZXQgcHR5cF90dXBsZSBsID0gRGVmYXVsdC5wdHlwX3R1cGxlIH5sb2MgbFxuICBsZXQgcGV4cF90dXBsZV9vcHQgbCA9IERlZmF1bHQucGV4cF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlX29wdCBsID0gRGVmYXVsdC5wcGF0X3R1cGxlX29wdCB+bG9jIGxcbiAgbGV0IHB0eXBfcG9seSB2YXJzIHR5ID0gRGVmYXVsdC5wdHlwX3BvbHkgfmxvYyB2YXJzIHR5XG4gIGxldCBwZXhwX2FwcGx5IGUgZWwgPSBEZWZhdWx0LnBleHBfYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlaW50IHQgPSBEZWZhdWx0LmVpbnQgfmxvYyB0XG4gIGxldCBlY2hhciB0ID0gRGVmYXVsdC5lY2hhciB+bG9jIHRcbiAgbGV0IGVzdHJpbmcgdCA9IERlZmF1bHQuZXN0cmluZyB+bG9jIHRcbiAgbGV0IGVmbG9hdCB0ID0gRGVmYXVsdC5lZmxvYXQgfmxvYyB0XG4gIGxldCBlaW50MzIgdCA9IERlZmF1bHQuZWludDMyIH5sb2MgdFxuICBsZXQgZWludDY0IHQgPSBEZWZhdWx0LmVpbnQ2NCB+bG9jIHRcbiAgbGV0IGVuYXRpdmVpbnQgdCA9IERlZmF1bHQuZW5hdGl2ZWludCB+bG9jIHRcbiAgbGV0IGVib29sIHQgPSBEZWZhdWx0LmVib29sIH5sb2MgdFxuICBsZXQgZXZhciB0ID0gRGVmYXVsdC5ldmFyIH5sb2MgdFxuICBsZXQgcGludCB0ID0gRGVmYXVsdC5waW50IH5sb2MgdFxuICBsZXQgcGNoYXIgdCA9IERlZmF1bHQucGNoYXIgfmxvYyB0XG4gIGxldCBwc3RyaW5nIHQgPSBEZWZhdWx0LnBzdHJpbmcgfmxvYyB0XG4gIGxldCBwZmxvYXQgdCA9IERlZmF1bHQucGZsb2F0IH5sb2MgdFxuICBsZXQgcGludDMyIHQgPSBEZWZhdWx0LnBpbnQzMiB+bG9jIHRcbiAgbGV0IHBpbnQ2NCB0ID0gRGVmYXVsdC5waW50NjQgfmxvYyB0XG4gIGxldCBwbmF0aXZlaW50IHQgPSBEZWZhdWx0LnBuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBwYm9vbCB0ID0gRGVmYXVsdC5wYm9vbCB+bG9jIHRcbiAgbGV0IHB2YXIgdCA9IERlZmF1bHQucHZhciB+bG9jIHRcbiAgbGV0IGV1bml0ID0gRGVmYXVsdC5ldW5pdCB+bG9jXG4gIGxldCBwdW5pdCA9IERlZmF1bHQucHVuaXQgfmxvY1xuICBsZXQgZWNvbnN0cnVjdCA9IERlZmF1bHQuZWNvbnN0cnVjdFxuICBsZXQgcGNvbnN0cnVjdCA9IERlZmF1bHQucGNvbnN0cnVjdFxuICBsZXQgZWFwcGx5IGUgZWwgPSBEZWZhdWx0LmVhcHBseSB+bG9jIGUgZWxcbiAgbGV0IGVhYnN0cmFjdCBwcyBlID0gRGVmYXVsdC5lYWJzdHJhY3QgfmxvYyBwcyBlXG4gIGxldCBlc2VxdWVuY2UgZWwgPSBEZWZhdWx0LmVzZXF1ZW5jZSB+bG9jIGVsXG4gIGxldCBlbGlzdCBsID0gRGVmYXVsdC5lbGlzdCB+bG9jIGxcbiAgbGV0IHBsaXN0IGwgPSBEZWZhdWx0LnBsaXN0IH5sb2MgbFxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IGlkZW50IH5mIGFyZ3MgPVxuICAgIERlZmF1bHQudHlwZV9jb25zdHJfY29udiB+bG9jIGlkZW50IH5mIGFyZ3NcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgaWRlbnQgfmYgPVxuICAgIERlZmF1bHQudW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZlxuXG4gIGxldCBldGFfcmVkdWNlID0gRGVmYXVsdC5ldGFfcmVkdWNlXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlID0gRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyA9XG4gICAgRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbmVuZFxuXG5sZXQgbWFrZSBsb2MgPVxuICAobW9kdWxlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBsb2MgPSBsb2NcbiAgZW5kKSA6IFMpXG4iLCIoKiogU21hbGwgaGVscGVyIHRvIGZpbmQgb3V0IHdobyBpcyB0aGUgY2FsbGVyIG9mIGEgZnVuY3Rpb24gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgUHJpbnRleGMgPSBTdGRsaWIuUHJpbnRleGNcblxudHlwZSB0ID0gUHJpbnRleGMubG9jYXRpb24gb3B0aW9uXG5cbmxldCBnZXQgfnNraXAgPVxuICBsZXQgc2tpcCA9IF9fRklMRV9fIDo6IHNraXAgaW5cbiAgbGV0IHN0YWNrID0gUHJpbnRleGMuZ2V0X2NhbGxzdGFjayAxNiBpblxuICBsZXQgbGVuID0gUHJpbnRleGMucmF3X2JhY2t0cmFjZV9sZW5ndGggc3RhY2sgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID0gbGVuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Qgc3RhY2sgcG9zXG4gICAgICAgIHw+IFByaW50ZXhjLmNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IHw+IFByaW50ZXhjLlNsb3QubG9jYXRpb25cbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgbG9jIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gfnNldDpza2lwIGxvYy5maWxlbmFtZSB0aGVuIGxvb3AgKHBvcyArIDEpIGVsc2UgU29tZSBsb2NcbiAgaW5cbiAgbG9vcCAwXG4iLCIoKiogSGVscGVycyB0byBwcm92aWRlIGhpbnRzIHRvIFBQWCB1c2VycyBmb3IgdHlwb3Mgb3Igc3BlbGxjaGVja3MuICopXG5cbm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gQ3V0b2ZmX21ldFxuXG4oKiBBcyBmb3VuZCBoZXJlIGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9MZXZlbnNodGVpbl9kaXN0YW5jZSNPQ2FtbCAqKVxubGV0IGxldmVuc2h0ZWluX2Rpc3RhbmNlIHMgdCBjdXRvZmYgPVxuICBsZXQgbSA9IFN0cmluZy5sZW5ndGggcyBhbmQgbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICBpZiBjdXRvZmYgPSAwIHx8IGFicyAobSAtIG4pID49IGN1dG9mZiB0aGVuIE5vbmVcbiAgZWxzZVxuICAgICgqIGZvciBhbGwgaSBhbmQgaiwgZC4oaSkuKGopIHdpbGwgaG9sZCB0aGUgTGV2ZW5zaHRlaW4gZGlzdGFuY2UgYmV0d2VlbiB0aGVcbiAgICAgICBmaXJzdCBpIGNoYXJhY3RlcnMgb2YgcyBhbmQgdGhlIGZpcnN0IGogY2hhcmFjdGVycyBvZiB0ICopXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlX21hdHJpeCB+ZGlteDoobSArIDEpIH5kaW15OihuICsgMSkgMCBpblxuICAgIGZvciBpID0gMCB0byBtIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IGZpcnN0IHN0cmluZyB0byBhbiBlbXB0eSBzZWNvbmQgc3RyaW5nICopXG4gICAgICBkLihpKS4oMCkgPC0gaVxuICAgIGRvbmU7XG4gICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICgqIHRoZSBkaXN0YW5jZSBvZiBhbnkgc2Vjb25kIHN0cmluZyB0byBhbiBlbXB0eSBmaXJzdCBzdHJpbmcgKilcbiAgICAgIGQuKDApLihqKSA8LSBqXG4gICAgZG9uZTtcbiAgICAoKiB0aGUgbWluaW11bSBvZiBlYWNoIGxpbmUgdG9nZXRoZXIgd2l0aCB0aGUgY29sdW1uIGluZGV4IHdpbGwgYmUgdXNlZFxuICAgICAgIHRvIG5vdGljZSBjdXRvZmYgZXhjZWVkaW5nIGFuZCByZXR1cm4gZWFybHkgaW4gdGhhdCBjYXNlICopXG4gICAgbGV0IGxpbmVfbWluID0gcmVmIDAgaW5cbiAgICBsZXQgZGlzdGFuY2UgPVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMSB0byBuIGRvXG4gICAgICAgICAgaWYgIWxpbmVfbWluID49IGN1dG9mZiAtIDEgJiYgaiA+PSBjdXRvZmYgLSAxIHRoZW4gcmFpc2UgQ3V0b2ZmX21ldDtcbiAgICAgICAgICBsaW5lX21pbiA6PSBtYXggbSBuO1xuICAgICAgICAgIGZvciBpID0gMSB0byBtIGRvXG4gICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICBpZiBDaGFyLmVxdWFsIHMuW2kgLSAxXSB0LltqIC0gMV0gdGhlbiBkLihpIC0gMSkuKGogLSAxKVxuICAgICAgICAgICAgICAgICgqIG5vIG9wZXJhdGlvbiByZXF1aXJlZCAqKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWluXG4gICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqKSArIDEpICgqIGEgZGVsZXRpb24gKilcbiAgICAgICAgICAgICAgICAgIChtaW5cbiAgICAgICAgICAgICAgICAgICAgIChkLihpKS4oaiAtIDEpICsgMSkgKCogYW4gaW5zZXJ0aW9uICopXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqIC0gMSkgKyAxKSAoKiBhIHN1YnN0aXR1dGlvbiAqKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBkLihpKS4oaikgPC0gdmFsdWU7XG4gICAgICAgICAgICBsaW5lX21pbiA6PSBtaW4gIWxpbmVfbWluIHZhbHVlXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lO1xuICAgICAgICBpZiBkLihtKS4obikgPCBjdXRvZmYgdGhlbiBTb21lIGQuKG0pLihuKSBlbHNlIE5vbmVcbiAgICAgIHdpdGggQ3V0b2ZmX21ldCAtPiBOb25lXG4gICAgaW5cbiAgICBkaXN0YW5jZVxuXG5sZXQgc3BlbGxjaGVjayBuYW1lcyBuYW1lID1cbiAgbGV0IGN1dG9mZiA9XG4gICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBuYW1lIHdpdGhcbiAgICB8IDEgfCAyIC0+IDBcbiAgICB8IDMgfCA0IC0+IDFcbiAgICB8IDUgfCA2IC0+IDJcbiAgICB8IF8gLT4gM1xuICBpblxuICBsZXQgXywgc3VnZ2VzdGlvbnMgPVxuICAgIExpc3QuZm9sZF9sZWZ0IG5hbWVzIH5pbml0OihJbnQubWF4X2ludCwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKChiZXN0X2Rpc3RhbmNlLCBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSBhcyBhY2MpIHJlZ2lzdGVyZWRfbmFtZSAtPlxuICAgICAgICBtYXRjaCBsZXZlbnNodGVpbl9kaXN0YW5jZSBuYW1lIHJlZ2lzdGVyZWRfbmFtZSBjdXRvZmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBkaXN0IC0+XG4gICAgICAgICAgICBpZiBkaXN0IDwgYmVzdF9kaXN0YW5jZSB0aGVuIChkaXN0LCBbIHJlZ2lzdGVyZWRfbmFtZSBdKVxuICAgICAgICAgICAgZWxzZSBpZiBkaXN0ID4gYmVzdF9kaXN0YW5jZSB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoZGlzdCwgcmVnaXN0ZXJlZF9uYW1lIDo6IG5hbWVzX2F0X2Jlc3RfZGlzdGFuY2UpKVxuICBpblxuICBtYXRjaCBMaXN0LnJldiBzdWdnZXN0aW9ucyB8PiBMaXN0LmZpbHRlciB+ZjooU3RyaW5nLiggPD4gKSBuYW1lKSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGxhc3QgOjogcmV2X3Jlc3QgLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiSGludDogRGlkIHlvdSBtZWFuICVzJXMlcz9cIlxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTGlzdC5yZXYgcmV2X3Jlc3QpKVxuICAgICAgICAgICAoaWYgTGlzdC5pc19lbXB0eSByZXZfcmVzdCB0aGVuIFwiXCIgZWxzZSBcIiBvciBcIilcbiAgICAgICAgICAgbGFzdClcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcblxubGV0IGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mID1cbiAgbGV0IHJlYyBjb2xsYXBzZV9hZnRlcl9hdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBpZiAobm90IChTdHJpbmcuaXNfZW1wdHkgcGFydCkpICYmIENoYXIuZXF1YWwgcGFydC5bMF0gJ0AnIHRoZW5cbiAgICAgICAgICBbIFN0cmluZy5jb25jYXQgKFN0cmluZy5kcm9wX3ByZWZpeCBwYXJ0IDEgOjogcGFydHMpIH5zZXA6XCIuXCIgXVxuICAgICAgICBlbHNlIHBhcnQgOjogY29sbGFwc2VfYWZ0ZXJfYXQgcGFydHNcbiAgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBwYXJ0cyA9XG4gICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBwYXJ0IDo6IHBhcnRzIC0+XG4gICAgICAgIGxvb3AgKGYgKFN0cmluZy5jb25jYXQgKHBhcnQgOjogcGFydHMpIH5zZXA6XCIuXCIpIGFjYykgcGFydHNcbiAgaW5cbiAgU3RyaW5nLnNwbGl0X29uX2NoYXIgbmFtZSB+c2VwOicuJyB8PiBjb2xsYXBzZV9hZnRlcl9hdCB8PiBsb29wIGFjY1xuXG5sZXQgZG90X3N1ZmZpeGVzIG5hbWUgPVxuICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OltdIH5mOihmdW4geCBhY2MgLT4geCA6OiBhY2MpXG5cbmxldCBzcGxpdF9wYXRoID1cbiAgbGV0IHJlYyBsb29wIHMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIChzLCBOb25lKVxuICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aCAnLicgLT4gYWZ0ZXJfZG90IHMgKGkgKyAxKSB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgYW5kIGFmdGVyX2RvdCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdBJyAuLiAnWicgLT4gKFN0cmluZy5wcmVmaXggcyAoaSAtIDEpLCBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggcyBpKSlcbiAgICAgIHwgJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSlcbiAgICAgIHwgXyAtPiBsb29wIHMgKGkgKyAxKVxuICBpblxuICBmdW4gcyAtPiBsb29wIHMgMFxuXG5tb2R1bGUgUGF0dGVybiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IG5hbWUgOiBzdHJpbmc7IGRvdF9zdWZmaXhlcyA6IFN0cmluZy5TZXQudCB9XG5cbiAgbGV0IG1ha2UgbmFtZSA9XG4gICAgeyBuYW1lOyBkb3Rfc3VmZml4ZXMgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKGRvdF9zdWZmaXhlcyBuYW1lKSB9XG5cbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgbWF0Y2hlcyB0IG1hdGNoZWQgPSBTdHJpbmcuU2V0Lm1lbSBtYXRjaGVkIHQuZG90X3N1ZmZpeGVzXG5lbmRcblxuKCogT24gdGhlIG5hbWVzcGFjZSBcImEuTkFNRVNQQUNFXCIsIHJldHVybiB0aGUgcGFpciAoXCJhXCIsIE5BTUVTUEFDRSkgKilcbmxldCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbmFtZSA9XG4gIG1hdGNoIFN0cmluZy5pbmRleF9vcHQgbmFtZSAnLicgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaSAtPlxuICAgICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIG5hbWUgaW5cbiAgICAgIGxldCBiZWZvcmVfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6MCB+bGVuOmkgaW5cbiAgICAgIGxldCBhZnRlcl9kb3QgPSBTdHJpbmcuc3ViIG5hbWUgfnBvczooaSArIDEpIH5sZW46KG4gLSBpIC0gMSkgaW5cbiAgICAgIFNvbWUgKGJlZm9yZV9kb3QsIGFmdGVyX2RvdClcblxubW9kdWxlIEFsbG93bGlzdGVkID0gc3RydWN0XG4gICgqIEFsbG93IGxpc3QgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLCBhcyB3ZWxsIGFzIGFsbCB0aGVpciBkb3Qgc3VmZml4ZXMuXG5cbiAgICAgU2luY2UgdGhlc2UgYXR0cmlidXRlcyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuXG4gICAgIFNhZGx5LCB0aGUgY29tcGlsZXIgc2lsZW50bHkgaWdub3JlcyB0aGVtIGlmIHRoZXkgYXJlIG1pc3BsYWNlZC4uLlxuICAqKVxuICBsZXQgY3JlYXRlX3NldCBmdWxseV9xdWFsaWZpZWRfbmFtZXMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICB+ZjooZnVuIGFjYyBuYW1lIC0+XG4gICAgICAgIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mOihmdW4geCBhY2MgLT4gU3RyaW5nLlNldC5hZGQgeCBhY2MpKVxuICAgICAgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSBmdWxseV9xdWFsaWZpZWRfbmFtZXNcblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgY3JlYXRlX3NldFxuICAgICAgW1xuICAgICAgICBcIm9jYW1sLmFsZXJ0XCI7XG4gICAgICAgIFwib2NhbWwuYm94ZWRcIjtcbiAgICAgICAgXCJvY2FtbC5kZXByZWNhdGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZF9tdXRhYmxlXCI7XG4gICAgICAgIFwib2NhbWwuZG9jXCI7XG4gICAgICAgIFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlNjRcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVkXCI7XG4gICAgICAgIFwib2NhbWwubG9jYWxcIjtcbiAgICAgICAgXCJvY2FtbC5ub2FsbG9jXCI7XG4gICAgICAgIFwib2NhbWwucHB3YXJuaW5nXCI7XG4gICAgICAgIFwib2NhbWwucmVtb3ZlX2FsaWFzZXNcIjtcbiAgICAgICAgXCJvY2FtbC5zcGVjaWFsaXNlXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZWRcIjtcbiAgICAgICAgXCJvY2FtbC50YWlsY2FsbFwiO1xuICAgICAgICBcIm9jYW1sLnRleHRcIjtcbiAgICAgICAgXCJvY2FtbC51bmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsZWRcIjtcbiAgICAgICAgXCJvY2FtbC51bnRhZ2dlZFwiO1xuICAgICAgICBcIm9jYW1sLndhcm5fb25fbGl0ZXJhbF9wYXR0ZXJuXCI7XG4gICAgICAgIFwib2NhbWwud2FybmVycm9yXCI7XG4gICAgICAgIFwib2NhbWwud2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICAgIFwidG9wbGV2ZWxfcHJpbnRlclwiICgqSW50ZXJwcmV0ZWQgYnkgdGhlIHRvcGxldmVsL3V0b3AqKTtcbiAgICAgIF1cblxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9ucy5cblxuICAgICBTaW5jZSB0aGVzZSBleHRlbnNpb25zIGFyZSBpbnRlcnByZXRlZCBieSB0aGUgY29tcGlsZXIgaXRzZWxmLCB3ZSBjYW5ub3QgY2hlY2tcbiAgICAgYXQgdGhlIGxldmVsIG9mIGEgcHB4IHJld3JpdGVyIHRoYXQgdGhleSBoYXZlIGJlZW4gcHJvcGVybHkgaW50ZXJwcmV0ZWQsIHNvXG4gICAgIHdlIGp1c3QgYWNjZXB0IHRoZW0gYW55d2hlcmUuXG4gICopXG4gIGxldCBleHRlbnNpb25zID0gY3JlYXRlX3NldCBbIFwib2NhbWwuZXJyb3JcIjsgXCJvY2FtbC5leHRlbnNpb25fY29uc3RydWN0b3JcIiBdXG5cbiAgbGV0IGlzX2FsbG93bGlzdGVkIH5raW5kIG5hbWUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEF0dHJpYnV0ZSAtPiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGF0dHJpYnV0ZXNcbiAgICB8IGBFeHRlbnNpb24gLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBleHRlbnNpb25zXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgYXR0cmlidXRlc1xuICBsZXQgZ2V0X2V4dGVuc2lvbl9saXN0ICgpID0gU3RyaW5nLlNldC5lbGVtZW50cyBleHRlbnNpb25zXG5lbmRcblxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBzdHJ1Y3RcbiAgdHlwZSByZXNlcnZlZCA9IChzdHJpbmcsIHN1Yl9uYW1lc3BhY2VzKSBIYXNodGJsLnRcbiAgYW5kIHN1Yl9uYW1lc3BhY2VzID0gQWxsIHwgU3ViX25hbWVzcGFjZXMgb2YgcmVzZXJ2ZWRcblxuICAoKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbQWxsXSwgdGhlbiBcInhcIiBhbmQgYWxsIHBhdGhzIHRoYXRcbiAgICogc3RhcnQgd2l0aCBcInguXCIgYXJlIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsXVxuICAgKlxuICAgKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbU3ViX25hbWVzcGFjZXMgdGJsJ10sIGFuZCBQIGlzXG4gICAqIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsJ10sIHRoZW4gYWxsIHBhdGhzIFwieC5QXCIgYXJlIHJlc2VydmVkIHdpdGhcbiAgICogcmVzcGVjdCB0byBbdGJsXS5cbiAgICopXG4gIGxldCBjcmVhdGVfcmVzZXJ2ZWQgKCkgOiByZXNlcnZlZCA9IEhhc2h0YmwuY3JlYXRlIDE2XG5cbiAgbGV0IHJlYyByZXNlcnZlIG5zIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5zIHdpdGhcbiAgICB8IE5vbmUgLT4gSGFzaHRibC5hZGRfZXhuIHRibCB+a2V5Om5zIH5kYXRhOkFsbFxuICAgIHwgU29tZSAob3V0ZXJfbnMsIHJlc3RfbnMpIC0+IChcbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBIYXNodGJsLmZpbmRfb3JfYWRkIHRibCBvdXRlcl9ucyB+ZGVmYXVsdDooZnVuICgpIC0+XG4gICAgICAgICAgICAgIFN1Yl9uYW1lc3BhY2VzIChjcmVhdGVfcmVzZXJ2ZWQgKCkpKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU3ViX25hbWVzcGFjZXMgcmVzdF90YmwgLT4gcmVzZXJ2ZSByZXN0X25zIHJlc3RfdGJsXG4gICAgICAgIHwgQWxsIC0+ICgpKVxuXG4gIGxldCByZWMgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgd2l0aFxuICAgIHwgU29tZSAobnMsIHJlc3QpIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbnMgd2l0aFxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsKSAtPlxuICAgICAgICAgICAgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyByZXN0IHJlc3RfdGJsXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IE5vbmUgLT4gZmFsc2UpXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbmFtZSB3aXRoXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIF8pIHwgTm9uZSAtPiBmYWxzZSlcblxuICBsZXQgdGJsID0gY3JlYXRlX3Jlc2VydmVkICgpXG4gIGxldCByZXNlcnZlIG5zID0gcmVzZXJ2ZSBucyB0YmxcbiAgbGV0IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSA9IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmxcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm1lcmxpblwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZWFzb25cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVmbXRcIiAoKiByZWFzb24gKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm5zXCIgKCogcmVzY3JpcHQgKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXRhb2NhbWxcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwib2NhbWxmb3JtYXRcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicHB4bGliLm1pZ3JhdGlvblwiXG5cbiAgbGV0IGNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lID1cbiAgICBsZXQga2luZCwgbGlzdCA9XG4gICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIHwgYEF0dHJpYnV0ZSAtPiAoXCJhdHRyaWJ1dGVcIiwgQWxsb3dsaXN0ZWQuYXR0cmlidXRlcylcbiAgICAgIHwgYEV4dGVuc2lvbiAtPiAoXCJleHRlbnNpb25cIiwgQWxsb3dsaXN0ZWQuZXh0ZW5zaW9ucylcbiAgICBpblxuICAgIGlmIFN0cmluZy5TZXQubWVtIG5hbWUgbGlzdCB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXQgbWF0Y2hlcyBhbiAlcyByZXNlcnZlZCBieSB0aGUgXFxcbiAgICAgICAgIGNvbXBpbGVyXCJcbiAgICAgICAga2luZCBuYW1lIGtpbmRcbiAgICBlbHNlIGlmIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXRzIG5hbWVzcGFjZSBpcyBtYXJrZWQgYXMgXFxcbiAgICAgICAgIHJlc2VydmVkXCJcbiAgICAgICAga2luZCBuYW1lXG5lbmRcblxubGV0IGlnbm9yZV9jaGVja3MgbmFtZSA9XG4gIFJlc2VydmVkX25hbWVzcGFjZXMuaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lXG4gIHx8IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OlwiX1wiXG5cbm1vZHVsZSBSZWdpc3RyYXIgPSBzdHJ1Y3RcbiAgdHlwZSBlbGVtZW50ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA6IHN0cmluZzsgZGVjbGFyZWRfYXQgOiBDYWxsZXJfaWQudCB9XG4gIHR5cGUgYWxsX2Zvcl9jb250ZXh0ID0geyBtdXRhYmxlIGFsbCA6IGVsZW1lbnQgU3RyaW5nLk1hcC50IH1cblxuICB0eXBlICdhIHQgPSB7XG4gICAgYWxsX2J5X2NvbnRleHQgOiAoJ2EsIGFsbF9mb3JfY29udGV4dCkgSGFzaHRibC50O1xuICAgIHNraXAgOiBzdHJpbmcgbGlzdDtcbiAgICBraW5kIDogc3RyaW5nO1xuICAgIHN0cmluZ19vZl9jb250ZXh0IDogJ2EgLT4gc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfmtpbmQgfmN1cnJlbnRfZmlsZSB+c3RyaW5nX29mX2NvbnRleHQgPVxuICAgIHtcbiAgICAgIGFsbF9ieV9jb250ZXh0ID0gSGFzaHRibC5jcmVhdGUgMTY7XG4gICAgICBza2lwID0gWyBjdXJyZW50X2ZpbGU7IF9fRklMRV9fIF07XG4gICAgICBraW5kO1xuICAgICAgc3RyaW5nX29mX2NvbnRleHQ7XG4gICAgfVxuXG4gIGxldCBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCA9XG4gICAgSGFzaHRibC5maW5kX29yX2FkZCB0LmFsbF9ieV9jb250ZXh0IGNvbnRleHQgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICB7IGFsbCA9IFN0cmluZy5NYXAuZW1wdHkgfSlcblxuICBsZXQgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWUgPVxuICAgIG1hdGNoIFN0cmluZy5NYXAuZmluZF9vcHQgbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZSAtPlxuICAgICAgICBsZXQgZGVjbGFyZWRfYXQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIChsb2MgOiBTdGRsaWIuUHJpbnRleGMubG9jYXRpb24pIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiIGRlY2xhcmVkIGF0ICVzOiVkXCIgbG9jLmZpbGVuYW1lIGxvYy5saW5lX251bWJlclxuICAgICAgICBpblxuICAgICAgICBsZXQgY29udGV4dCA9XG4gICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjb250ZXh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBzIC0+IFwiIG9uIFwiIF4gcyBeIFwic1wiXG4gICAgICAgIGluXG4gICAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICAgIFwiU29tZSBwcHgtZXMgdHJpZWQgdG8gcmVnaXN0ZXIgY29uZmxpY3RpbmcgdHJhbnNmb3JtYXRpb25zOiAlcyBcXFxuICAgICAgICAgICAnJXMnJXMlcyBtYXRjaGVzICVzICclcyclc1wiXG4gICAgICAgICAgKFN0cmluZy5jYXBpdGFsaXplX2FzY2lpIHQua2luZClcbiAgICAgICAgICBuYW1lIGNvbnRleHQgKGRlY2xhcmVkX2F0IGNhbGxlcikgdC5raW5kIGUuZnVsbHlfcXVhbGlmaWVkX25hbWVcbiAgICAgICAgICAoZGVjbGFyZWRfYXQgZS5kZWNsYXJlZF9hdClcblxuICBsZXQgY2hlY2tfY29sbGlzaW9ucyB0IGNvbnRleHQgbmFtZSA9XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbF9mb3JfY29udGV4dCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWVcblxuICBsZXQgcmVnaXN0ZXIgfmtpbmQgdCBjb250ZXh0IG5hbWUgPVxuICAgIFJlc2VydmVkX25hbWVzcGFjZXMuY2hlY2tfbm90X3Jlc2VydmVkIH5raW5kIG5hbWU7XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQ6YWxsIHQgY29udGV4dCBuYW1lO1xuICAgIGxldCB0ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA9IG5hbWU7IGRlY2xhcmVkX2F0ID0gY2FsbGVyIH0gaW5cbiAgICBhbGwuYWxsIDwtXG4gICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFsbC5hbGwgfmY6KGZ1biBuYW1lIGFjYyAtPlxuICAgICAgICAgIFN0cmluZy5NYXAuYWRkIG5hbWUgdCBhY2MpXG5cbiAgbGV0IHNwZWxsY2hlY2sgdCBjb250ZXh0ID8oYWxsb3dsaXN0ID0gW10pIG5hbWUgPVxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGxldCBhbGwgPVxuICAgICAgU3RyaW5nLk1hcC5mb2xkIChmdW4ga2V5IF8gYWNjIC0+IGtleSA6OiBhY2MpIGFsbF9mb3JfY29udGV4dC5hbGwgW11cbiAgICBpblxuICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoYWxsIEAgYWxsb3dsaXN0KSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgXyBhcyB4IC0+IHhcbiAgICB8IE5vbmUgd2hlbiBTdHJpbmcuTWFwLm1lbSBuYW1lIGFsbF9mb3JfY29udGV4dC5hbGwgLT4gTm9uZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIGxldCBvdGhlcl9jb250ZXh0cyA9XG4gICAgICAgICAgSGFzaHRibC5mb2xkXG4gICAgICAgICAgICAoZnVuIGN0eCBhbGxfZnJvbV9jb250ZXh0IGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIFBvbHkuKCA8PiApIGNvbnRleHQgY3R4XG4gICAgICAgICAgICAgICAgJiYgU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZnJvbV9jb250ZXh0LmFsbFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjdHggd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPiAocyBeIFwic1wiKSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZSBhY2MpXG4gICAgICAgICAgICB0LmFsbF9ieV9jb250ZXh0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcF90ZXh0ID0gRm9ybWF0LnBwX3ByaW50X3RleHQgaW5cbiAgICAgICAgbGV0IGN1cnJlbnRfY29udGV4dCBwcGYgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgbGV0IGFfb3JfYW4gPVxuICAgICAgICAgICAgICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyB8ICd5JyAtPiBcImFuXCJcbiAgICAgICAgICAgICAgICB8IF8gLT4gXCJhXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgcHBmXG4gICAgICAgICAgICAgICAgXCJAIGJ1dEAgaXNAIHVzZWRAIGhlcmVAIGluQCB0aGVAIGNvbnRleHRAIG9mQCAlc0AgJWFcIiBhX29yX2FuXG4gICAgICAgICAgICAgICAgcHBfdGV4dCBzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5zb3J0IH5jbXA6KGZ1biB4IHkgLT4gLVN0cmluZy5jb21wYXJlIHggeSkgb3RoZXJfY29udGV4dHNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgfCBbIGMgXSAtPlxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiQFtIaW50OkAgYCVzJ0AgaXNAIGF2YWlsYWJsZUAgZm9yQCAlYSV0LkBdQFxcblxcXG4gICAgICAgICAgICAgICAgICBEaWQgeW91IHB1dCBpdCBhdCB0aGUgd3JvbmcgbGV2ZWw/XCIgbmFtZSBwcF90ZXh0IGNcbiAgICAgICAgICAgICAgICAgY3VycmVudF9jb250ZXh0KVxuICAgICAgICB8IGxhc3QgOjogcmV2X290aGVycyAtPlxuICAgICAgICAgICAgbGV0IG90aGVycyA9IExpc3QucmV2IHJldl9vdGhlcnMgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWFAIGFuZEAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWVcbiAgICAgICAgICAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0IHBwX3RleHQgfnBwX3NlcDooZnVuIHBwZiAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKSlcbiAgICAgICAgICAgICAgICAgb3RoZXJzIHBwX3RleHQgbGFzdCBjdXJyZW50X2NvbnRleHQpKVxuXG4gIG1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICAgICgqIFRPRE86IGhpbnQgc3BlbGxpbmcgZXJyb3JzIHJlZ2FyZGluZyByZXNlcnZlZCBuYW1lc3BhY2VzIG5hbWVzIGFuZCBhbGxvd2xpc3RlZFxuICAgICAgIG5hbWVzIGluc3RlYWQgb2YgdGFraW5nIGFuIG9wdGlvbmFsIFthbGxvd2xpc3RdIHBhcmFtZXRlci4gKilcbiAgICBsZXQgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAoZnVuIG1zZyAtPlxuICAgICAgICAgIG1hdGNoIHNwZWxsY2hlY2sgdCBjb250ZXh0IG5hbWUudHh0ID9hbGxvd2xpc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlc1wiIG1zZ1xuICAgICAgICAgIHwgU29tZSBzIC0+IExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIiVzLlxcbiVzXCIgbXNnIHMpXG4gICAgICAgIGZtdCBuYW1lLnR4dFxuXG4gICAgbGV0IHJhaXNlX2Vycm9yZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnJhaXNlIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcblxuICAgIGxldCBlcnJvcl9leHRlbnNpb25mIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcbiAgZW5kXG5cbiAgbGV0IHJhaXNlX2Vycm9yZiA9IEVycm9yLnJhaXNlX2Vycm9yZlxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxubW9kdWxlIEJ1ZmZlciA9IFN0ZGxpYi5CdWZmZXJcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBsaWRlbnQgeCA9IExvbmdpZGVudC5MaWRlbnQgeFxuXG5sZXQgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgPVxuICBsZXQgbG9jID0gdGQucHR5cGVfbmFtZS5sb2MgaW5cbiAgcHR5cF9jb25zdHIgfmxvY1xuICAgIChMb2NhdGVkLm1hcCBsaWRlbnQgdGQucHR5cGVfbmFtZSlcbiAgICAoTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmZzdClcblxubGV0IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4ID1cbiAgbGV0IGNob3AgbiB+b3JfbW9yZSBzdHJpbmcgcG9zIGYgPVxuICAgIGxldCB0YXJnZXQgPSAhcG9zIC0gbiBpblxuICAgIHdoaWxlICFwb3MgPiAwICYmIChvcl9tb3JlIHx8ICFwb3MgPiB0YXJnZXQpICYmIGYgc3RyaW5nLlshcG9zIC0gMV0gZG9cbiAgICAgIHBvcyA6PSAhcG9zIC0gMVxuICAgIGRvbmU7XG4gICAgIXBvcyA8PSB0YXJnZXRcbiAgaW5cbiAgZnVuIHN0cmluZyAtPlxuICAgIGxldCBwb3MgPSByZWYgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGlmXG4gICAgICBjaG9wIDEgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgICAmJiBjaG9wIDMgfm9yX21vcmU6dHJ1ZSBzdHJpbmcgcG9zIChmdW5jdGlvblxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiBjaG9wIDIgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgdGhlbiBTdHJpbmcucHJlZml4IHN0cmluZyAhcG9zXG4gICAgZWxzZSBzdHJpbmdcblxubGV0IGdlbl9zeW1ib2wgPVxuICBsZXQgY250ID0gcmVmIDAgaW5cbiAgZnVuID8ocHJlZml4ID0gXCJfeFwiKSAoKSAtPlxuICAgIGNudCA6PSAhY250ICsgMTtcbiAgICBsZXQgcHJlZml4ID0gc3RyaXBfZ2VuX3N5bWJvbF9zdWZmaXggcHJlZml4IGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlc19fJTAzaV9cIiBwcmVmaXggIWNudFxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMgKHRkIDogdHlwZV9kZWNsYXJhdGlvbikgOlxuICAgICh0eXBlX2RlY2xhcmF0aW9uLCBfKSByZXN1bHQgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IHByZWZpeF9zdHJpbmcgaSA9XG4gICAgKCogYSwgYiwgLi4uLCB5LCB6LCBhYSwgYmIsIC4uLiAqKVxuICAgIFN0cmluZy5tYWtlICgoaSAvIDI2KSArIDEpIChDaGFyLmNociAoQ2hhci5jb2RlICdhJyArIChpIG1vZCAyNikpKVxuICBpblxuICBsZXQgbmFtZV9wYXJhbSBpICh0cCwgdmFyaWFuY2UpID1cbiAgICAobWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IE9rIChQdHlwX3ZhciAoZ2VuX3N5bWJvbCB+cHJlZml4OihwcmVmaXhfc3RyaW5nIGkpICgpKSlcbiAgICB8IFB0eXBfdmFyIF8gYXMgdiAtPiBPayB2XG4gICAgfCBfIC0+XG4gICAgICAgIEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6dHAucHR5cF9sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiKSlcbiAgICA+PnwgZnVuIHB0eXBfZGVzYyAtPiAoeyB0cCB3aXRoIHB0eXBfZGVzYyB9LCB2YXJpYW5jZSlcbiAgaW5cbiAgbGV0IHB0eXBlX3BhcmFtcywgZXJyb3JzID1cbiAgICB0ZC5wdHlwZV9wYXJhbXMgfD4gTGlzdC5tYXBpIH5mOm5hbWVfcGFyYW1cbiAgICB8PiBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE9rIG8gLT4gRWl0aGVyLkxlZnQgb1xuICAgICAgICAgfCBFcnJvciBlIC0+IEVpdGhlci5SaWdodCBlKVxuICBpblxuICBtYXRjaCBlcnJvcnMgd2l0aCBbXSAtPiBPayB7IHRkIHdpdGggcHR5cGVfcGFyYW1zIH0gfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpXG5cbmxldCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDogdHlwZV9kZWNsYXJhdGlvbiA9XG4gIG1hdGNoIG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzIHRkIHdpdGhcbiAgfCBPayByZXMgLT4gcmVzXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+ZiA9XG4gIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgbGV0IHJlc3VsdF90eXBlID1cbiAgICBmIH5sb2M6dGQucHR5cGVfbmFtZS5sb2MgKGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkKVxuICBpblxuICBMaXN0LmZvbGRfcmlnaHQgdGQucHR5cGVfcGFyYW1zIH5pbml0OnJlc3VsdF90eXBlXG4gICAgfmY6KGZ1biAodHAsIF92YXJpYW5jZSkgYWNjIC0+XG4gICAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICAgIHB0eXBfYXJyb3cgfmxvYyBOb2xhYmVsIChmIH5sb2MgdHApIGFjYylcblxubGV0IHN0cmluZ19vZl9jb3JlX3R5cGUgY3QgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBQcHJpbnRhc3QuY29yZV90eXBlIHBwZiBjdDtcbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgKHR5LCBfKSA9XG4gIGxldCBsb2MgPSB0eS5wdHlwX2xvYyBpblxuICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICB8IFB0eXBfdmFyIG5hbWUgLT4gT2sgKExvY2F0ZWQubWsgfmxvYyBuYW1lKVxuICB8IF8gLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIm5vdCBhIHR5cGUgcGFyYW1ldGVyXCIsIFtdKVxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZSB0ID1cbiAgbWF0Y2ggZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgdCB3aXRoXG4gIHwgT2sgZSAtPiBlXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG5jbGFzcyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcbiAgICB2YWwgdHlwZV9uYW1lcyA6IHN0cmluZyBsaXN0ID0gTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT4gdGQucHR5cGVfbmFtZS50eHQpXG4gICAgbWV0aG9kIHJldHVybl90cnVlICgpID0gcmFpc2Vfbm90cmFjZSBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hcnJvdyBfIC0+ICgpXG4gICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgaWQ7IF8gfSwgXylcbiAgICAgICAgd2hlbiBMaXN0Lm1lbSB+c2V0OnR5cGVfbmFtZXMgaWQgLT5cbiAgICAgICAgICBzZWxmI3JldHVybl90cnVlICgpXG4gICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIGN0eXBlXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkID1cbiAgICAgICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBjZC5wY2RfcmVzICopXG4gICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICB8IFBjc3RyX3R1cGxlIGFyZ3MgLT4gTGlzdC5pdGVyIGFyZ3MgfmY6c2VsZiNjb3JlX3R5cGVcbiAgICAgIHwgUGNzdHJfcmVjb3JkIGZpZWxkcyAtPiBMaXN0Lml0ZXIgZmllbGRzIH5mOnNlbGYjbGFiZWxfZGVjbGFyYXRpb25cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlcyBfID0gKCogRG9uJ3QgcmVjdXJzZSB0aHJvdWdoIGF0dHJpYnV0ZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpXG5cbiAgICBtZXRob2QgZ28gKCkgPVxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICB8IFJlY3Vyc2l2ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5pdGVyIHRkcyB+ZjpzZWxmI3R5cGVfZGVjbGFyYXRpb24gd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIFR5cGVfaXNfcmVjdXJzaXZlIC0+IFJlY3Vyc2l2ZVxuICAgICAgICAgIHwgKCkgLT4gTm9ucmVjdXJzaXZlKVxuICBlbmRcblxubGV0IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID0gKG5ldyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMpI2dvICgpXG5sZXQgcmVjIGxhc3QgeCBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHggfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxubGV0IGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZCA9XG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHIgW10gLT4gbmFtZS5sb2NcbiAgfCBQU3RyICh4IDo6IGwpIC0+IHsgeC5wc3RyX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzdHJfbG9jLmxvY19lbmQgfVxuICB8IFBTaWcgW10gLT4gbmFtZS5sb2NcbiAgfCBQU2lnICh4IDo6IGwpIC0+IHsgeC5wc2lnX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzaWdfbG9jLmxvY19lbmQgfVxuICB8IFBUeXAgdCAtPiB0LnB0eXBfbG9jXG4gIHwgUFBhdCAoeCwgTm9uZSkgLT4geC5wcGF0X2xvY1xuICB8IFBQYXQgKHgsIFNvbWUgZSkgLT4geyB4LnBwYXRfbG9jIHdpdGggbG9jX2VuZCA9IGUucGV4cF9sb2MubG9jX2VuZCB9XG5cbmxldCBsb2Nfb2ZfcGF5bG9hZCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyA9IF8gfSA9XG4gIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcblxubGV0IGxvY19vZl9hdHRyaWJ1dGUgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICAoKiBUT0RPOiBmaXggdGhpcyBpbiB0aGUgY29tcGlsZXIsIGFuZCBtb3ZlIHRoZSBsb2dpYyB0byBvbXAgd2hlbiBjb252ZXJ0aW5nXG4gICAgIGZyb20gb2xkZXIgYXN0cy4gKilcbiAgKCogXCJvY2FtbC5kb2NcIiBhdHRyaWJ1dGVzIGFyZSBnZW5lcmF0ZWQgd2l0aCBbTG9jYXRpb24ubm9uZV0sIHdoaWNoIGlzIG5vdCBoZWxwZnVsIGZvclxuICAgICBlcnJvciBtZXNzYWdlcy4gKilcbiAgaWYgUG9seS4oID0gKSBhdHRyX25hbWUubG9jIExvY2F0aW9uLm5vbmUgdGhlblxuICAgIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcbiAgZWxzZVxuICAgIHtcbiAgICAgIGF0dHJfbmFtZS5sb2Mgd2l0aFxuICAgICAgbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkKS5sb2NfZW5kO1xuICAgIH1cblxubGV0IGxvY19vZl9leHRlbnNpb24gKG5hbWUsIHBheWxvYWQpID1cbiAgaWYgUG9seS4oID0gKSBuYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW4gbG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkXG4gIGVsc2VcbiAgICB7IG5hbWUubG9jIHdpdGggbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQpLmxvY19lbmQgfVxuXG5sZXQgY3VycnlfYXBwbGljYXRpb25zIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSBpblxuICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9hcHBseSAoZiwgb3JpZ19mb3J3YXJkX2FyZ3MpIC0+XG4gICAgICBsZXQgbG9jID0gZXhwci5wZXhwX2xvYyBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBmXG4gICAgICAgIHwgbGFzdF9hcmcgOjogcmV2X2Zyb250X2FyZ3MgLT5cbiAgICAgICAgICAgIHBleHBfYXBwbHkgfmxvYyAobG9vcCByZXZfZnJvbnRfYXJncykgWyBsYXN0X2FyZyBdXG4gICAgICBpblxuICAgICAgbG9vcCAoTGlzdC5yZXYgb3JpZ19mb3J3YXJkX2FyZ3MpXG4gIHwgXyAtPiBleHByXG5cbmxldCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIExpc3QuZmlsdGVyX21hcCB+ZjooZnVuY3Rpb25cbiAgICB8IHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9sb2MgPSBfOyBhdHRyX3BheWxvYWQgPSBfIH1cbiAgICAgIHdoZW4gTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUuTG9jYXRpb24udHh0IC0+XG4gICAgICAgIE5vbmVcbiAgICB8IGF0dHIgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgICBTb21lIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGVzIG5vdCBhbGxvd2VkIGhlcmVcIikpXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGRcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSBhIGFjYyA9IGF0dHJpYnV0ZXNfZXJyb3JzIFsgYSBdIEAgYWNjXG4gIGVuZFxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXMgbCA9XG4gIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBhc3NlcnRfbm9fYXR0cmlidXRlc19pbiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSA9IGFzc2VydF9ub19hdHRyaWJ1dGVzIFsgYSBdXG4gIGVuZFxuXG5sZXQgYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMgPVxuICB7XG4gICAgYXR0cl9uYW1lID0geyBsb2M7IHR4dCA9IFwib2NhbWwucHB3YXJuaW5nXCIgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpc19wb2x5bW9ycGhpY192YXJpYW50ID1cbiAgbGV0IHJlYyBjaGVjayA9IGZ1bmN0aW9uXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCBfOyBfIH0gLT4gYERlZmluaXRlbHlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAodHlwLCBfKTsgXyB9IC0+IGNoZWNrIHR5cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciBfOyBfIH0gLT4gYE1heWJlXG4gICAgfCBfIC0+IGBTdXJlbHlfbm90XG4gICAgKCogVHlwZSB2YXJzIGdvIGhlcmUgZXZlbiB0aG91Z2ggdGhleSBjb3VsZCBiZSBwb2x5bW9ycGhpY1xuICAgICAgIHZhcmlhbnRzLCBob3dldmVyIHdlIGRvbid0IGhhbmRsZSBpdCBpZiB0aGV5IGdldCBzdWJzdGl0dXRlZFxuICAgICAgIGJ5IGEgcG9seW1vcnBoaWMgdmFyaWFudCB0aGF0IGlzIHRoZW4gaW5jbHVkZWQuICopXG4gIGluXG4gIGZ1biB0ZCB+c2lnXyAtPlxuICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCBfIHwgUHR5cGVfcmVjb3JkIF8gfCBQdHlwZV9vcGVuIC0+IGBTdXJlbHlfbm90XG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoXG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGlmIHNpZ18gdGhlbiBgTWF5YmUgZWxzZSBgU3VyZWx5X25vdFxuICAgICAgICB8IFNvbWUgdHlwIC0+IGNoZWNrIHR5cClcblxubGV0IG1rX25hbWVkX3NpZyB+bG9jIH5zZ19uYW1lIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgWyB0ZCBdXG4gICAgd2hlbiBTdHJpbmcuZXF1YWwgdGQucHR5cGVfbmFtZS50eHQgXCJ0XCIgJiYgTGlzdC5pc19lbXB0eSB0ZC5wdHlwZV9jc3RycyAtPlxuICAgICAgaWZcbiAgICAgICAgKG5vdCBoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudClcbiAgICAgICAgJiYgUG9seS4oID0gKSAoaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlKSBgRGVmaW5pdGVseVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBhcml0eSA9IExpc3QubGVuZ3RoIHRkLnB0eXBlX3BhcmFtcyBpblxuICAgICAgICBpZiBhcml0eSA+PSA0IHRoZW4gTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG10eSA9XG4gICAgICAgICAgICBpZiBhcml0eSA9IDAgdGhlbiBzZ19uYW1lIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlcyVkXCIgc2dfbmFtZSBhcml0eVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgICAgICAgIGxldCBmb3Jfc3Vic3QgPVxuICAgICAgICAgICAgQXN0X2hlbHBlci5UeXBlLm1rIH5sb2MgdGQucHR5cGVfbmFtZSB+cGFyYW1zOnRkLnB0eXBlX3BhcmFtc1xuICAgICAgICAgICAgICB+bWFuaWZlc3Q6XG4gICAgICAgICAgICAgICAgKHB0eXBfY29uc3RyIH5sb2NcbiAgICAgICAgICAgICAgICAgICAoTG9jYXRlZC5tYXBfbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgICAgICAgICAgKExpc3QubWFwIH5mOmZzdCB0ZC5wdHlwZV9wYXJhbXMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKGluY2x1ZGVfaW5mb3MgfmxvY1xuICAgICAgICAgICAgICAgKHBtdHlfd2l0aCB+bG9jXG4gICAgICAgICAgICAgICAgICAocG10eV9pZGVudCB+bG9jIChMb2NhdGVkLmxpZGVudCBtdHkgfmxvYykpXG4gICAgICAgICAgICAgICAgICBbIFB3aXRoX3R5cGVzdWJzdCAoTG9jYXRlZC5saWRlbnQgfmxvYyBcInRcIiwgZm9yX3N1YnN0KSBdKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGV4bl90b19sb2NfZXJyb3IgZXhuID1cbiAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoIFNvbWUgZXJyb3IgLT4gZXJyb3IgfCBOb25lIC0+IHJhaXNlIGV4blxuXG5tb2R1bGUgV2l0aF9lcnJvcnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgKiBMb2NhdGlvbi5FcnJvci50IGxpc3RcblxuICBsZXQgcmV0dXJuIGUgPSAoZSwgW10pXG5cbiAgbGV0ICggPj49ICkgKHgsIGVycm9yczEpIGYgPVxuICAgIGxldCB5LCBlcnJvcnMyID0gZiB4IGluXG4gICAgKHksIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gIGxldCAoID4+fCApICh4LCBlcnJvcnMpIGYgPSAoZiB4LCBlcnJvcnMpXG5cbiAgbGV0IG9mX3Jlc3VsdCByZXN1bHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBPayB4IC0+ICh4LCBbXSlcbiAgICB8IEVycm9yIGVycm9ycyAtPiAoZGVmYXVsdCwgTm9uRW1wdHlMaXN0LnRvX2xpc3QgZXJyb3JzKVxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyBsaXN0ID0gKExpc3QubWFwIGxpc3QgfmY6ZnN0LCBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjpzbmQpXG5lbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9wYXR0ZXJuMFxubGV0IG5vbGFiZWwgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9sYWJlbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9sYWJlbFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxhYmVsbGVkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBMYWJlbGxlZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFiZWxsZWRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG9wdGlvbmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPcHRpb25hbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3B0aW9uYWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGF0dHJpYnV0ZSB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+cGF5bG9hZDooVCBwYXlsb2FkKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHguYXR0cl9uYW1lKS5sb2MgKHguYXR0cl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBheWxvYWQgY3R4IGxvYyB4LmF0dHJfcGF5bG9hZCBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBiaW5kaW5nX29wIH5vcDooVCBvcCkgID1cbiAgKChmdW4gfnBhdDooVCBwYXQpIC0+XG4gICAgICAoKGZ1biB+ZXhwOihUIGV4cCkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG9wIGN0eCAoeC5wYm9wX29wKS5sb2MgKHgucGJvcF9vcCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcGF0IGN0eCBsb2MgeC5wYm9wX3BhdCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGV4cCBjdHggbG9jIHgucGJvcF9leHAgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgY2FzZSB+bGhzOihUIGxocykgID1cbiAgKChmdW4gfmd1YXJkOihUIGd1YXJkKSAtPlxuICAgICAgKChmdW4gfnJoczooVCByaHMpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsaHMgY3R4IGxvYyB4LnBjX2xocyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGd1YXJkIGN0eCBsb2MgeC5wY19ndWFyZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHJocyBjdHggbG9jIHgucGNfcmhzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9jb25zdHIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RydWN0dXJlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNsX2Z1biAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX2FwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9sZXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9jb25zdHJhaW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY2xfb3BlbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2luaGVyaXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2luaXRpYWxpemVyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaXRpYWxpemVyXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY2ZrX3ZpcnR1YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENma192aXJ0dWFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2aXJ0dWFsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjZmtfY29uY3JldGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25jcmV0ZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjaV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2lfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY2xhc3NfaW5mb3MgfnZpcnQ6KFQgdmlydCkgID1cbiAgKChmdW4gfnBhcmFtczooVCBwYXJhbXMpIC0+XG4gICAgICAoKGZ1biB+bmFtZTooVCBuYW1lKSAtPlxuICAgICAgICAgICgoZnVuIH5leHByOihUIGV4cHIpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gdmlydCBjdHggbG9jIHgucGNpX3ZpcnQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucGNpX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wY2lfbmFtZSkubG9jICh4LnBjaV9uYW1lKS50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wY2lfZXhwciBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZjooVCBzZWxmKSAgPVxuICAoKGZ1biB+ZmllbGRzOihUIGZpZWxkcykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc2lnX3NlbGYgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzaWdfZmllbGRzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZjooVCBzZWxmKSAgPVxuICAoKGZ1biB+ZmllbGRzOihUIGZpZWxkcykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc3RyX3NlbGYgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzdHJfZmllbGRzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfY29uc3RyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3R5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdHlfYXJyb3cgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJvd1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3R5X29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3RmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3RmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtZXRob2RcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjbG9zZWQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDbG9zZWRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBvcGVuXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNvbnN0X2ludGVnZXIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludGVnZXJcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY29uc3RfY2hhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2NoYXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNoYXJcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjb25zdF9zdHJpbmcgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjb25zdF9mbG9hdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZsb2F0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNzdHJfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNzdHJfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+dmFyczooVCB2YXJzKSAtPlxuICAgICAgKChmdW4gfmFyZ3M6KFQgYXJncykgLT5cbiAgICAgICAgICAoKGZ1biB+cmVzOihUIHJlcykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBjZF9uYW1lKS5sb2MgKHgucGNkX25hbWUpLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHZhcnMgY3R4IGxvYyB4LnBjZF92YXJzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBhcmdzIGN0eCBsb2MgeC5wY2RfYXJncyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcmVzIGN0eCBsb2MgeC5wY2RfcmVzIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwX2Fycm93IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9jb25zdHIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfb2JqZWN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfY2xhc3MgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX2FsaWFzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3ZhcmlhbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfcG9seSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfcGFja2FnZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrYWdlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB1cHRvID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVwdG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVwdG9cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBkb3dudG9fID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERvd250byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRG93bnRvXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcmFfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBkaXJfc3RyaW5nIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX3N0cmluZyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZGlyX2ludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZGlyX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcl9ib29sIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX2Jvb2wgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImJvb2xcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9sZXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2Z1bmN0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdGlvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfZnVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgKChmdW4gKFQgZjMpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9hcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9tYXRjaCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWF0Y2hcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF90cnkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2NvbnN0cnVjdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF92YXJpYW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9yZWNvcmQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9maWVsZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZpZWxkXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfc2V0ZmllbGQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2V0ZmllbGRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9pZnRoZW5lbHNlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZnRoZW5lbHNlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3NlcXVlbmNlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXF1ZW5jZVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3doaWxlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aGlsZVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2ZvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICAoKGZ1biAoVCBmNCkgLT5cbiAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjQgY3R4IGxvYyB4NCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZm9yXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2NvZXJjZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb2VyY2VcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfc2VuZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VuZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX25ldyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9uZXcgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXdcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX3NldGluc3R2YXIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGluc3R2YXJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9vdmVycmlkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3ZlcnJpZGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xldG1vZHVsZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0bW9kdWxlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2xldGV4Y2VwdGlvbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldGV4Y2VwdGlvblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2Fzc2VydCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFzc2VydFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9wb2x5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBvbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9vYmplY3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfb2JqZWN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX25ld3R5cGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld3R5cGVcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3BhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2tcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2xldG9wIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldG9wIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRvcFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucmVhY2hhYmxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+a2luZDooVCBraW5kKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucGV4dF9uYW1lKS5sb2MgKHgucGV4dF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wZXh0X2tpbmQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHRfZGVjbCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlY2xcIilcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4dF9yZWJpbmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBleHRfcmViaW5kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmViaW5kXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB1bml0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuaXQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVuaXRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBuYW1lZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5hbWVkXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5waW5jbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5waW5jbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGluY2x1ZGVfaW5mb3Mgfm1vZF86KFQgbW9kXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IG1vZF8gY3R4IGxvYyB4LnBpbmNsX21vZCBrIGluIGspKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGluamVjdGl2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBJbmplY3RpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkluamVjdGl2ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG5vaW5qZWN0aXZpdHkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9JbmplY3Rpdml0eVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBsZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbGFiZWxfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfm11dGFibGVfOihUIG11dGFibGVfKSAtPlxuICAgICAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBsZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBsZF9uYW1lKS5sb2MgKHgucGxkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBtdXRhYmxlXyBjdHggbG9jIHgucGxkX211dGFibGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBsZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBsZXRvcCB+bGV0XzooVCBsZXRfKSAgPVxuICAoKGZ1biB+YW5kczooVCBhbmRzKSAtPlxuICAgICAgKChmdW4gfmJvZHk6KFQgYm9keSkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGxldF8gY3R4IGxvYyB4LmxldF8gayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBhbmRzIGN0eCBsb2MgeC5hbmRzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYm9keSBjdHggbG9jIHguYm9keSBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBsb2NhdGlvbiB+c3RhcnQ6KFQgc3RhcnQpICA9XG4gICgoZnVuIH5lbmRfOihUIGVuZF8pIC0+XG4gICAgICAoKGZ1biB+Z2hvc3Q6KFQgZ2hvc3QpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBzdGFydCBjdHggbG9jIHgubG9jX3N0YXJ0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZW5kXyBjdHggbG9jIHgubG9jX2VuZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGdob3N0IGN0eCBsb2MgeC5sb2NfZ2hvc3QgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGlkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxpZGVudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbGRvdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBMZG90ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMZG90XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGFwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IExhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFwcGx5XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1iX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtYl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfYmluZGluZyB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+ZXhwcjooVCBleHByKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWJfbmFtZSkubG9jICh4LnBtYl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wbWJfZXhwciBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1kX25hbWUpLmxvYyAoeC5wbWRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbW9kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbW9kX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtb2RfZnVuY3RvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfYXBwbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG1vZF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtc19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXNfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtc19hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbXNfbmFtZSkubG9jICh4LnBtc19uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdCBjdHggKHgucG1zX21hbmlmZXN0KS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wbXNfbWFuaWZlc3QpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG10eV9mdW5jdG9yIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG10eV93aXRoIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIndpdGhcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG10eV90eXBlb2YgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlb2ZcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfYWxpYXMgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfYWxpYXMgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG10ZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucG10ZF9uYW1lKS5sb2MgKHgucG10ZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG10ZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBpbW11dGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgSW1tdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbW11dGFibGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtdXRhYmxlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBNdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJNdXRhYmxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG9mX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG9mX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wb2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3RhZyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBPdGFnICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk90YWdcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgb2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE9pbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG9wZW5faW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9wZW5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9wZW5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvcGVuX2luZm9zIH5leHByOihUIGV4cHIpICA9XG4gICgoZnVuIH5vdmVycmlkZTooVCBvdmVycmlkZSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBleHByIGN0eCBsb2MgeC5wb3Blbl9leHByIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gb3ZlcnJpZGUgY3R4IGxvYyB4LnBvcGVuX292ZXJyaWRlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBvdmVycmlkZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPdmVycmlkZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3ZlcnJpZGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBmcmVzaCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBGcmVzaCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRnJlc2hcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcGF0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2FsaWFzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9jb25zdGFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RhbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2ludGVydmFsIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlcnZhbFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfY29uc3RydWN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3ZhcmlhbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3JlY29yZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfb3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF90eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfb3BlbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQU3RyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU3RyXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQU2lnIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU2lnXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQVHlwIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQVHlwXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBQYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBQYXRcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwb3NpdGlvbiB+Zm5hbWU6KFQgZm5hbWUpICA9XG4gICgoZnVuIH5sbnVtOihUIGxudW0pIC0+XG4gICAgICAoKGZ1biB+Ym9sOihUIGJvbCkgLT5cbiAgICAgICAgICAoKGZ1biB+Y251bTooVCBjbnVtKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZm5hbWUgY3R4IGxvYyB4LnBvc19mbmFtZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsbnVtIGN0eCBsb2MgeC5wb3NfbG51bSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBib2wgY3R4IGxvYyB4LnBvc19ib2wgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gY251bSBjdHggbG9jIHgucG9zX2NudW0gayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHByaXZhdGVfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFByaXZhdGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlByaXZhdGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdWJsaWMgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHVibGljIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQdWJsaWNcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBub25yZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25yZWN1cnNpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCByZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSZWN1cnNpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcmZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcmZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnByZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBydGFnIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJ0YWdcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHJpbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBSaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmluaGVyaXRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzaWdfdmFsdWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3ZhbHVlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ190eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzaWdfdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ190eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19tb2RzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19tb2R0eXBlc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZXN1YnN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19leHRlbnNpb24gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHJfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHN0cl9ldmFsIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXZhbFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHJfdmFsdWUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3ByaW1pdGl2ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwcmltaXRpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9tb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfY2xhc3NfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NfdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9pbmNsdWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmNsdWRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfZXh0ZW5zaW9uIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfmFyZzooVCBhcmcpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5wZGlyX25hbWUpLmxvYyAoeC5wZGlyX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYXJnIGN0eCBsb2MgeC5wZGlyX2FyZyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdG9wX2RlZiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHRvcF9kZWYgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlZlwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHRvcF9kaXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0b3BfZGlyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkaXJcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cGVfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cGVfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfmNzdHJzOihUIGNzdHJzKSAtPlxuICAgICAgICAgICgoZnVuIH5raW5kOihUIGtpbmQpIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXzooVCBwcml2YXRlXykgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnB0eXBlX25hbWUpLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wdHlwZV9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyBjdHggbG9jIHgucHR5cGVfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGNzdHJzIGN0eCBsb2MgeC5wdHlwZV9jc3RycyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wdHlwZV9raW5kIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlXyBjdHggbG9jIHgucHR5cGVfcHJpdmF0ZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QgY3R4IGxvYyB4LnB0eXBlX21hbmlmZXN0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4bl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleG5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leGNlcHRpb24gfmNvbnN0cnVjdG9yOihUIGNvbnN0cnVjdG9yKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGNvbnN0cnVjdG9yIGN0eCBsb2MgeC5wdHlleG5fY29uc3RydWN0b3IgayBpbiBrKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoOihUIHBhdGgpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfmNvbnN0cnVjdG9yczooVCBjb25zdHJ1Y3RvcnMpIC0+XG4gICAgICAgICAgKChmdW4gfnByaXZhdGVfOihUIHByaXZhdGVfKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggY3R4ICh4LnB0eWV4dF9wYXRoKS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnB0eWV4dF9wYXRoKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucHR5ZXh0X3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcnMgY3R4IGxvYyB4LnB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwcml2YXRlXyBjdHggbG9jIHgucHR5ZXh0X3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwZV9hYnN0cmFjdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWJzdHJhY3RcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV92YXJpYW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV9vcGVuID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0eXBlX29wZW4gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB2YWx1ZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2Yl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdmJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfYmluZGluZyB+cGF0OihUIHBhdCkgID1cbiAgKChmdW4gfmV4cHI6KFQgZXhwcikgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gcGF0IGN0eCBsb2MgeC5wdmJfcGF0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucHZiX2V4cHIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2YWxfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZhbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgKChmdW4gfnByaW06KFQgcHJpbSkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucHZhbF9uYW1lKS5sb2MgKHgucHZhbF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnB2YWxfdHlwZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwcmltIGN0eCBsb2MgeC5wdmFsX3ByaW0gayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNvdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDb3ZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvdmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNvbnRyYXZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ29udHJhdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29udHJhdmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG5vdmFyaWFuY2UgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9WYXJpYW5jZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9WYXJpYW5jZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHZpcnR1YWxfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFZpcnR1YWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlZpcnR1YWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjb25jcmV0ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDb25jcmV0ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29uY3JldGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwd2l0aF90eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdWxlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF9tb2R0eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdHlwZXN1YnN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX3R5cGVzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF9tb2RzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFzdF9wYXR0ZXJuMFxuXG5sZXQgc2F2ZV9jb250ZXh0IGN0eCA9IGN0eC5tYXRjaGVkXG5sZXQgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXAgPSBjdHgubWF0Y2hlZCA8LSBiYWNrdXBcbmxldCBpbmNyX21hdGNoZWQgYyA9IGMubWF0Y2hlZCA8LSBjLm1hdGNoZWQgKyAxXG5cbmxldCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICB0cnkgT2sgKGYgeyBtYXRjaGVkID0gMCB9IGxvYyB4IGspXG4gIHdpdGggRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpIC0+IChcbiAgICBtYXRjaCBvbl9lcnJvciB3aXRoXG4gICAgfCBOb25lIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCIlcyBleHBlY3RlZFwiIGV4cGVjdGVkLCBbXSlcbiAgICB8IFNvbWUgZiAtPiBPayAoZiAoKSkpXG5cbmxldCBwYXJzZSAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIG1hdGNoIHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayB3aXRoXG4gIHwgT2sgciAtPiByXG4gIHwgRXJyb3IgKHIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIHJcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuMC50ICogJ2IgLT4gKCdhLCAnYykgdFxuXG4gIGxldCBjcmVhdGUgdCBmID0gVCAodCwgZilcbiAgbGV0IHBhcnNlX3JlcyAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2VfcmVzIHQgbG9jIHggZlxuICBsZXQgcGFyc2UgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlIHQgbG9jIHggZlxuZW5kXG5cbmxldCBfXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeClcblxubGV0IF9fJyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB7IGxvYzsgdHh0ID0geCB9KVxuXG5sZXQgZHJvcCA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIF8gayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGspXG5cbmxldCBhc19fIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeCAoayB4KSBpblxuICAgICAgaylcblxubGV0IGNzdCB+dG9fc3RyaW5nID8oZXF1YWwgPSBQb2x5LmVxdWFsKSB2ID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGlmIGVxdWFsIHggdiB0aGVuIChcbiAgICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgICAgaylcbiAgICAgIGVsc2UgZmFpbCBsb2MgKHRvX3N0cmluZyB2KSlcblxubGV0IGludCB2ID0gY3N0IH50b19zdHJpbmc6SW50LnRvX3N0cmluZyB2XG5sZXQgY2hhciB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJUNcIikgdlxubGV0IHN0cmluZyB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJVNcIikgdlxubGV0IGZsb2F0IHYgPSBjc3QgfnRvX3N0cmluZzpGbG9hdC50b19zdHJpbmcgdlxubGV0IGludDMyIHYgPSBjc3QgfnRvX3N0cmluZzpJbnQzMi50b19zdHJpbmcgdlxubGV0IGludDY0IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQ2NC50b19zdHJpbmcgdlxubGV0IG5hdGl2ZWludCB2ID0gY3N0IH50b19zdHJpbmc6TmF0aXZlaW50LnRvX3N0cmluZyB2XG5sZXQgYm9vbCB2ID0gY3N0IH50b19zdHJpbmc6Qm9vbC50b19zdHJpbmcgdlxuXG5sZXQgYm9vbCcgKFQgZnVuYykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFwidHJ1ZVwiIC0+IGZ1bmMgY3R4IGxvYyB0cnVlIGtcbiAgICAgIHwgXCJmYWxzZVwiIC0+IGZ1bmMgY3R4IGxvYyBmYWxzZSBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJCb29sXCIpXG5cbmxldCBmYWxzZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZhbHNlXCIpXG5cbmxldCB0cnVlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnVlXCIpXG5cbmxldCBuaWwgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIltdXCIpXG5cbmxldCAoIF46OiApIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHgwIDo6IHgxIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCI6OlwiKVxuXG5sZXQgbm9uZSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25lXCIpXG5cbmxldCBzb21lIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgU29tZSB4MCAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlNvbWVcIilcblxubGV0IHBhaXIgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MikgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBrKVxuXG5sZXQgKCAqKiApID0gcGFpclxuXG5sZXQgdHJpcGxlIChUIGYxKSAoVCBmMikgKFQgZjMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyLCB4MykgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpblxuICAgICAgaylcblxubGV0IGFsdCAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBiYWNrdXAgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICB0cnkgZjEgY3R4IGxvYyB4IGtcbiAgICAgIHdpdGggZTEgLT4gKFxuICAgICAgICBsZXQgbTEgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwO1xuICAgICAgICB0cnkgZjIgY3R4IGxvYyB4IGtcbiAgICAgICAgd2l0aCBlMiAtPlxuICAgICAgICAgIGxldCBtMiA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgICBpZiBtMSA+PSBtMiB0aGVuIChcbiAgICAgICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggbTE7XG4gICAgICAgICAgICByYWlzZSBlMSlcbiAgICAgICAgICBlbHNlIHJhaXNlIGUyKSlcblxubGV0ICggfHx8ICkgPSBhbHRcbmxldCBtYXAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgaykpXG5sZXQgbWFwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBsb2MgaykpXG5sZXQgbWFwX3Jlc3VsdCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIChmdW5jIGN0eCBsb2MgeCBrKSlcbmxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG5sZXQgbWFwMCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayBmKSlcbmxldCBtYXAxIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGEpKSlcblxubGV0IG1hcDIgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBhIGIpKSlcblxubGV0IG1hcDAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIChmIGxvYykpKVxuXG5sZXQgbWFwMScgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgbG9jIGEpKSlcblxubGV0IG1hcDInIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgbG9jIGEgYikpKVxuXG5sZXQgbWFwX3ZhbHVlIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiB4KSBrKVxubGV0IG1hcF92YWx1ZScgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIGxvYyB4KSBrKVxuXG5sZXQgYWx0X29wdGlvbiBzb21lIG5vbmUgPVxuICBhbHQgKG1hcDEgc29tZSB+ZjooZnVuIHggLT4gU29tZSB4KSkgKG1hcDAgbm9uZSB+ZjpOb25lKVxuXG5sZXQgbWFueSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgbCBrIC0+XG4gICAgICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBrIChMaXN0LnJldiBhY2N1KVxuICAgICAgICB8IHggOjogeHMgLT4gZiBjdHggbG9jIHggKGZ1biB4IC0+IGF1eCAoeCA6OiBhY2N1KSB4cylcbiAgICAgIGluXG4gICAgICBhdXggW10gbClcblxubGV0IGxvYyAoVCBmKSA9IFQgKGZ1biBjdHggX2xvYyAoeCA6IF8gTG9jLnQpIGsgLT4gZiBjdHggeC5sb2MgeC50eHQgaylcbmxldCBwYWNrMCB0ID0gbWFwIHQgfmY6KGZ1biBmIC0+IGYgKCkpXG5sZXQgcGFjazIgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgLT4gZiAoeCwgeSkpXG5sZXQgcGFjazMgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgeiAtPiBmICh4LCB5LCB6KSlcblxuaW5jbHVkZSBBc3RfcGF0dGVybl9nZW5lcmF0ZWRcblxubGV0IGVjaGFyIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IGVzdHJpbmcgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgZWZsb2F0IHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IHBjaGFyIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IHBzdHJpbmcgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgcGZsb2F0IHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IGludCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChpbnRfb2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50MzInIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50MzIub2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50NjQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50NjQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBuYXRpdmVpbnQnIChUIGYpID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoTmF0aXZlaW50Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgY29uc3RfaW50IHQgPSBwY29uc3RfaW50ZWdlciAoaW50JyB0KSBub25lXG5sZXQgY29uc3RfaW50MzIgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQzMicgdCkgKHNvbWUgKGNoYXIgJ2wnKSlcbmxldCBjb25zdF9pbnQ2NCB0ID0gcGNvbnN0X2ludGVnZXIgKGludDY0JyB0KSAoc29tZSAoY2hhciAnTCcpKVxubGV0IGNvbnN0X25hdGl2ZWludCB0ID0gcGNvbnN0X2ludGVnZXIgKG5hdGl2ZWludCcgdCkgKHNvbWUgKGNoYXIgJ24nKSlcbmxldCBlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBlaW50MzIgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgZWludDY0IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IGVuYXRpdmVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHBpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IHBpbnQzMiB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBwaW50NjQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgcG5hdGl2ZWludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgc2luZ2xlX2V4cHJfcGF5bG9hZCB0ID0gcHN0ciAocHN0cl9ldmFsIHQgbmlsIF46OiBuaWwpXG5sZXQgbm9fbGFiZWwgdCA9IGNzdCBBc3R0eXBlcy5Ob2xhYmVsIH50b19zdHJpbmc6KGZ1biBfIC0+IFwiTm9sYWJlbFwiKSAqKiB0XG5sZXQgZWJvb2wgdCA9IHBleHBfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5sZXQgcGJvb2wgdCA9IHBwYXRfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5cbmxldCBleHRlbnNpb24gKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKChuYW1lIDogXyBMb2MudCksIHBheWxvYWQpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IG5hbWUubG9jIG5hbWUudHh0IGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyBwYXlsb2FkIGsgaW5cbiAgICAgIGspXG5cbmxldCByZWMgcGFyc2VfZWxpc3QgKGUgOiBQYXJzZXRyZWUuZXhwcmVzc2lvbikgYWNjID1cbiAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGUucGV4cF9hdHRyaWJ1dGVzO1xuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBOb25lKSAtPiBMaXN0LnJldiBhY2NcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sIFNvbWUgYXJnKSAtPiAoXG4gICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXJnLnBleHBfYXR0cmlidXRlcztcbiAgICAgIG1hdGNoIGFyZy5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX3R1cGxlIFsgaGQ7IHRsIF0gLT4gcGFyc2VfZWxpc3QgdGwgKGhkIDo6IGFjYylcbiAgICAgIHwgXyAtPiBmYWlsIGFyZy5wZXhwX2xvYyBcImxpc3RcIilcbiAgfCBfIC0+IGZhaWwgZS5wZXhwX2xvYyBcImxpc3RcIlxuXG5sZXQgZWxpc3QgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCBsID0gcGFyc2VfZWxpc3QgZSBbXSBpblxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgKExpc3QubWFwIGwgfmY6KGZ1biB4IC0+IGYgY3R4IHguUGFyc2V0cmVlLnBleHBfbG9jIHggKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBlc2VxdWVuY2UgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCByZWMgcGFyc2Vfc2VxIGV4cHIgYWNjID1cbiAgICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGV4cHIsIG5leHQpIC0+IHBhcnNlX3NlcSBuZXh0IChleHByIDo6IGFjYylcbiAgICAgICAgfCBfIC0+IGV4cHIgOjogYWNjXG4gICAgICBpblxuICAgICAga1xuICAgICAgICAoTGlzdC5yZXZfbWFwIChwYXJzZV9zZXEgZSBbXSkgfmY6KGZ1biBleHByIC0+XG4gICAgICAgICAgICAgZiBjdHggZXhwci5wZXhwX2xvYyBleHByIChmdW4geCAtPiB4KSkpKVxuXG5sZXQgb2ZfZnVuYyBmID0gVCBmXG5sZXQgdG9fZnVuYyAoVCBmKSA9IGZcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcG9seV9lcXVhbCBhIGIgPVxuICBsZXQgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIDogXyAtPiB0XG4gIGVuZCBpblxuICBTdGRwcHguUG9seS5lcXVhbCAoUG9seS5UIGEpIChQb2x5LlQgYilcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gdFxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIHRcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gdFxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHRcbiAgICB8IFBhdHRlcm4gOiBwYXR0ZXJuIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENsYXNzX2luZm9zIDogXyBjbGFzc19pbmZvcyB0XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gdFxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gdFxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gdFxuICAgIHwgSW5jbHVkZV9pbmZvcyA6IF8gaW5jbHVkZV9pbmZvcyB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IFZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIHRcbiAgICB8IE1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgdFxuICAgIHwgUHN0cl9ldmFsIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHN0cl9leHRlbnNpb24gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc2lnX2V4dGVuc2lvbiA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFJ0YWcgOiByb3dfZmllbGQgdFxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgOiBvYmplY3RfZmllbGQgdFxuXG4gIGxldCBsYWJlbF9kZWNsYXJhdGlvbiA9IExhYmVsX2RlY2xhcmF0aW9uXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2RlY2xhcmF0aW9uID0gVHlwZV9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9leHRlbnNpb24gPSBUeXBlX2V4dGVuc2lvblxuICBsZXQgdHlwZV9leGNlcHRpb24gPSBUeXBlX2V4Y2VwdGlvblxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBwYXR0ZXJuID0gUGF0dGVyblxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gPSBWYWx1ZV9kZXNjcmlwdGlvblxuICBsZXQgY2xhc3NfdHlwZSA9IENsYXNzX3R5cGVcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG4gIGxldCBjbGFzc19pbmZvcyA9IENsYXNzX2luZm9zXG4gIGxldCBjbGFzc19leHByID0gQ2xhc3NfZXhwclxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uID0gTW9kdWxlX2RlY2xhcmF0aW9uXG4gIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gIGxldCBvcGVuX2Rlc2NyaXB0aW9uID0gT3Blbl9kZXNjcmlwdGlvblxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IEluY2x1ZGVfaW5mb3NcbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IHZhbHVlX2JpbmRpbmcgPSBWYWx1ZV9iaW5kaW5nXG4gIGxldCBtb2R1bGVfYmluZGluZyA9IE1vZHVsZV9iaW5kaW5nXG4gIGxldCBwc3RyX2V2YWwgPSBQc3RyX2V2YWxcbiAgbGV0IHBzdHJfZXh0ZW5zaW9uID0gUHN0cl9leHRlbnNpb25cbiAgbGV0IHBzaWdfZXh0ZW5zaW9uID0gUHNpZ19leHRlbnNpb25cbiAgbGV0IHJ0YWcgPSBSdGFnXG4gIGxldCBvYmplY3RfdHlwZV9maWVsZCA9IE9iamVjdF90eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9wc3RyX2V2YWwgc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V2YWwgKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V2YWxcIlxuXG4gIGxldCBnZXRfcHN0cl9leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X3BzaWdfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc2lnX2Rlc2Mgd2l0aFxuICAgIHwgUHNpZ19leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc2lnX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHgucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHgucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geC5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB4LnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB4LnB0eWV4bl9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geC5wZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFBhdHRlcm4gLT4geC5wcGF0X2F0dHJpYnV0ZXNcbiAgICB8IENvcmVfdHlwZSAtPiB4LnB0eXBfYXR0cmlidXRlc1xuICAgIHwgRXhwcmVzc2lvbiAtPiB4LnBleHBfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geC5wdmFsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGUgLT4geC5wY3R5X2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geC5wY3RmX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2luZm9zIC0+IHgucGNpX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2V4cHIgLT4geC5wY2xfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZmllbGQgLT4geC5wY2ZfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGUgLT4geC5wbXR5X2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB4LnBtZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB4LnBtdGRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB4LnBtc19hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geC5waW5jbF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZXhwciAtPiB4LnBtb2RfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfYmluZGluZyAtPiB4LnB2Yl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB4LnBtYl9hdHRyaWJ1dGVzXG4gICAgfCBQc3RyX2V2YWwgLT4gc25kIChnZXRfcHN0cl9ldmFsIHgpXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc3RyX2V4dGVuc2lvbiB4KVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gc25kIChnZXRfcHNpZ19leHRlbnNpb24geClcbiAgICB8IFJ0YWcgLT4geC5wcmZfYXR0cmlidXRlc1xuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geC5wb2ZfYXR0cmlidXRlc1xuXG4gIGxldCBzZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiBhID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGNkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB7IHggd2l0aCBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHsgeCB3aXRoIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHsgeCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBhdHRlcm4gLT4geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZSAtPiB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2luZm9zIC0+IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZXhwciAtPiB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geyB4IHdpdGggcGluY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBzdHJfZXZhbCAtPlxuICAgICAgICB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGdldF9wc3RyX2V2YWwgeCB8PiBmc3QsIGF0dHJzKSB9XG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGdldF9wc3RyX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGdldF9wc2lnX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBSdGFnIC0+IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4gXCJsYWJlbCBkZWNsYXJhdGlvblwiXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IFwidHlwZSBleHRlbnNpb25cIlxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4gXCJ0eXBlIGV4Y2VwdGlvblwiXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gXCJleHRlbnNpb24gY29uc3RydWN0b3JcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgQ29yZV90eXBlIC0+IFwiY29yZSB0eXBlXCJcbiAgICB8IEV4cHJlc3Npb24gLT4gXCJleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IFwidmFsdWVcIlxuICAgIHwgQ2xhc3NfdHlwZSAtPiBcImNsYXNzIHR5cGVcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuICAgIHwgQ2xhc3NfaW5mb3MgLT4gXCJjbGFzcyBkZWNsYXJhdGlvblwiXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBcIm1vZHVsZSBzdWJzdGl0dXRpb25cIlxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiBcImluY2x1ZGVcIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IFwidmFsdWUgYmluZGluZ1wiXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiBcIm1vZHVsZSBiaW5kaW5nXCJcbiAgICB8IFBzdHJfZXZhbCAtPiBcInRvcGxldmVsIGV4cHJlc3Npb25cIlxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBleHRlbnNpb25cIlxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBzaWduYXR1cmUgZXh0ZW5zaW9uXCJcbiAgICB8IFJ0YWcgLT4gXCJwb2x5bW9ycGhpYyB2YXJpYW50IHRhZ1wiXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiBcIm9iamVjdCB0eXBlIGZpZWxkXCJcblxuICAoKlxuICBsZXQgcGF0dGVybiA6IHR5cGUgYSBiIGMgZC4gYSB0XG4gICAgLT4gKGF0dHJpYnV0ZXMsIGIsIGMpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYywgZCkgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBiLCBkKSBBc3RfcGF0dGVybi50ID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uICAgICAgIC0+IEFzdF9wYXR0ZXJuLnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBBc3RfcGF0dGVybi5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gICAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAgIC0+IEFzdF9wYXR0ZXJuLnBleHRfYXR0cmlidXRlc1xuKilcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxubW9kdWxlIEZsb2F0aW5nX2NvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcblxuICBsZXQgc3RydWN0dXJlX2l0ZW0gPSBTdHJ1Y3R1cmVfaXRlbVxuICBsZXQgc2lnbmF0dXJlX2l0ZW0gPSBTaWduYXR1cmVfaXRlbVxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGUgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIHsgcHN0cl9kZXNjID0gUHN0cl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfZmllbGQsIHsgcGNmX2Rlc2MgPSBQY2ZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGUgdCB4ID1cbiAgICBtYXRjaCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgdCB4IHdpdGhcbiAgICB8IFNvbWUgYSAtPiBhXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZVwiXG5cbiAgbGV0IHJlcGxhY2VfYnlfZHVtbXkgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGEgPVxuICAgIGxldCBkdW1teV9leHQgPSAoeyB0eHQgPSBcIlwiOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sIFBTdHIgW10pIGluXG4gICAgZnVuIHQgeCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiBcInNpZ25hdHVyZSBpdGVtXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG50eXBlIHBhY2tlZF9jb250ZXh0ID1cbiAgfCBPbl9pdGVtIDogXyBDb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcbiAgfCBGbG9hdGluZyA6IF8gRmxvYXRpbmdfY29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG5cbnR5cGUgXyBwYXlsb2FkX3BhcnNlciA9XG4gIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgKHBheWxvYWQsICdhLCAnYikgQXN0X3BhdHRlcm4udFxuICAgICAgKiAoYXR0cl9sb2M6TG9jYXRpb24udCAtPiBuYW1lX2xvYzpMb2NhdGlvbi50IC0+ICdhKVxuICAgICAgLT4gJ2IgcGF5bG9hZF9wYXJzZXJcblxudHlwZSAoJ2EsICdiKSB0ID0ge1xuICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbn1cblxudHlwZSBwYWNrZWQgPSBUIDogKF8sIF8pIHQgLT4gcGFja2VkXG5cbmxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcbmxldCBjb250ZXh0IHQgPSB0LmNvbnRleHRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImF0dHJpYnV0ZVwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1bmN0aW9uXG4gICAgfCBPbl9pdGVtIHQgLT4gU29tZSAoQ29udGV4dC5kZXNjIHQpXG4gICAgfCBGbG9hdGluZyB0IC0+IFNvbWUgKEZsb2F0aW5nX2NvbnRleHQuZGVzYyB0IF4gXCIgKGZsb2F0aW5nKVwiKSlcblxubGV0IGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAge1xuICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgIGNvbnRleHQ7XG4gICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgfVxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gaylcblxubGV0IGRlY2xhcmVfd2l0aF9uYW1lX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jIC0+XG4gICAgICBrIH5uYW1lX2xvYylcblxubGV0IGRlY2xhcmVfd2l0aF9hdHRyX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jIH5uYW1lX2xvYzpfIC0+XG4gICAgICBrIH5hdHRyX2xvYylcblxudHlwZSAnYSBmbGFnID0gKCdhLCB1bml0KSB0XG5cbmxldCBkZWNsYXJlX2ZsYWcgbmFtZSBjb250ZXh0ID1cbiAgbGV0IHBheWxvYWRfcGF0dGVybiA9IEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgaW5cbiAgbGV0IGNvbnRpbnVhdGlvbiB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyA9ICgpIGluXG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF5bG9hZF9wYXR0ZXJuIGNvbnRpbnVhdGlvblxuXG5tb2R1bGUgQXR0cmlidXRlX3RhYmxlID0gU3RkbGliLkhhc2h0YmwuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsb2NcblxuICBsZXQgbm9ybWFsaXplIHQgPSB7IHQgd2l0aCBsb2MgPSB7IHQubG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IH1cbiAgbGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCAobm9ybWFsaXplIHQpXG4gIGxldCBlcXVhbCB4IHkgPSBQb2x5LmVxdWFsIChub3JtYWxpemUgeCkgKG5vcm1hbGl6ZSB5KVxuZW5kKVxuXG5sZXQgbm90X3NlZW4gPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIDEyOFxubGV0IG1hcmtfYXNfc2VlbiB7IGF0dHJfbmFtZTsgXyB9ID0gQXR0cmlidXRlX3RhYmxlLnJlbW92ZSBub3Rfc2VlbiBhdHRyX25hbWVcbmxldCBtYXJrX2FzX2hhbmRsZWRfbWFudWFsbHkgPSBtYXJrX2FzX3NlZW5cblxubGV0IGV4cGxpY2l0bHlfZHJvcCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgPSBtYXJrX2FzX3NlZW5cbiAgZW5kXG5cbmxldCBnZXRfaW50ZXJuYWwgPVxuICBsZXQgcmVjIGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgbG9uZ2VzdF9tYXRjaCA9XG4gICAgbWF0Y2ggYXR0cmlidXRlcyB3aXRoXG4gICAgfCBbXSAtPiBPayBsb25nZXN0X21hdGNoXG4gICAgfCAoeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gYXMgYXR0cikgOjogcmVzdCAtPlxuICAgICAgICBpZiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQgdGhlblxuICAgICAgICAgIG1hdGNoIGxvbmdlc3RfbWF0Y2ggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgfCBTb21lIHsgYXR0cl9uYW1lID0gbmFtZSc7IF8gfSAtPlxuICAgICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBuYW1lLnR4dCBpblxuICAgICAgICAgICAgICBsZXQgbGVuJyA9IFN0cmluZy5sZW5ndGggbmFtZScudHh0IGluXG4gICAgICAgICAgICAgIGlmIGxlbiA+IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgICAgIGVsc2UgaWYgbGVuIDwgbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiRHVwbGljYXRlZCBhdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgW10gKVxuICAgICAgICBlbHNlIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICBpblxuICBmdW4gdCBhdHRyaWJ1dGVzIC0+IGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgTm9uZVxuXG5sZXQgY29udmVydCA/KGRvX21hcmtfYXNfc2VlbiA9IHRydWUpIHBhdHRlcm4gYXR0ciA9XG4gIGlmIGRvX21hcmtfYXNfc2VlbiB0aGVuIG1hcmtfYXNfc2VlbiBhdHRyO1xuICBsZXQgKFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKSkgPSBwYXR0ZXJuIGluXG4gIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuXG4gICAgKENvbW1vbi5sb2Nfb2ZfcGF5bG9hZCBhdHRyKVxuICAgIGF0dHIuYXR0cl9wYXlsb2FkXG4gICAgKGsgfmF0dHJfbG9jOmF0dHIuYXR0cl9sb2Mgfm5hbWVfbG9jOmF0dHIuYXR0cl9uYW1lLmxvYylcblxubGV0IGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgP2RvX21hcmtfYXNfc2VlbiA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcblxubGV0IGdldCB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgbWF0Y2ggZ2V0X3JlcyA/bWFya19hc19zZWVuIHQgeCB3aXRoXG4gIHwgT2sgKFNvbWUgKCkpIC0+IE9rIHRydWVcbiAgfCBPayBOb25lIC0+IE9rIGZhbHNlXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcblxubGV0IGhhc19mbGFnIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBjb25zdW1lX3JlcyB0IHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgbGV0IGF0dHJzID0gTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKGF0dHIgPT0gYXR0cicpKSBpblxuICAgICAgbGV0IHggPSBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGF0dHJzIGluXG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSAoeCwgdmFsdWUpXG5cbmxldCBjb25zdW1lIHQgeCA9XG4gIGNvbnN1bWVfcmVzIHQgeFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcmVtb3ZlX3NlZW5fcmVzICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBpblxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE9rIGFjY1xuICAgIHwgVCB0IDo6IHJlc3QgLT5cbiAgICAgICAgaWYgQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCB0aGVuXG4gICAgICAgICAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgICAgICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgfCBTb21lIGF0dHIgLT5cbiAgICAgICAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICAgICAgICBpZiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWUgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgICAgIGVsc2UgbG9vcCAoYXR0ciA6OiBhY2MpIHJlc3RcbiAgICAgICAgZWxzZSBsb29wIGFjYyByZXN0XG4gIGluXG4gIGxvb3AgW10gcGFja2VkcyA+PnwgZnVuIG1hdGNoZWQgLT5cbiAgbGV0IGF0dHJzID1cbiAgICBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoTGlzdC5tZW1xIH5zZXQ6bWF0Y2hlZCBhdHRyJykpXG4gIGluXG4gIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGF0dHJzXG5cbmxldCByZW1vdmVfc2VlbiAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICByZW1vdmVfc2Vlbl9yZXMgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBwYXR0ZXJuX3JlcyB0IHAgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGYgPSBBc3RfcGF0dGVybi50b19mdW5jIHAgaW5cbiAgQXN0X3BhdHRlcm4ub2ZfZnVuYyAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBjb25zdW1lX3JlcyB0IHggPj58IGZ1biByZXMgLT5cbiAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZiBjdHggbG9jIHggKGsgTm9uZSlcbiAgICAgIHwgU29tZSAoeCwgdikgLT4gZiBjdHggbG9jIHggKGsgKFNvbWUgdikpKVxuXG5sZXQgcGF0dGVybiB0IHAgPVxuICBwYXR0ZXJuX3JlcyB0IHAgfD4gQXN0X3BhdHRlcm4udG9fZnVuY1xuICB8PiAoZnVuIGYgYSBiIGMgZCAtPlxuICAgICAgIGYgYSBiIGMgZFxuICAgICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpKVxuICB8PiBBc3RfcGF0dGVybi5vZl9mdW5jXG5cbm1vZHVsZSBGbG9hdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgQ29udGV4dCA9IEZsb2F0aW5nX2NvbnRleHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xuICB9XG5cbiAgbGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspO1xuICAgIH1cblxuICBsZXQgY29udmVydF9yZXMgdHMgeCA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgbWF0Y2ggdHMgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgeyBjb250ZXh0OyBfIH0gOjogXyAtPiAoXG4gICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIHRzIH5mOihmdW4gdCAtPiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0KSk7XG4gICAgICAgIGxldCBhdHRyID0gQ29udGV4dC5nZXRfYXR0cmlidXRlIGNvbnRleHQgeCBpblxuICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dClcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICAgICAgfCBbIHQgXSAtPiBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICBcIk11bHRpcGxlIG1hdGNoIGZvciBmbG9hdGluZyBhdHRyaWJ1dGVzOiAlc1wiXG4gICAgICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgICAgICBbXSApKVxuXG4gIGxldCBjb252ZXJ0IHRzIHggPVxuICAgIGNvbnZlcnRfcmVzIHRzIHhcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIGlmXG4gICAgKG5vdFxuICAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBBdHRyaWJ1dGUgbmFtZS50eHRcbiAgICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpKVxuICAgICYmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZVxuICB0aGVuXG4gICAgbGV0IGFsbG93bGlzdCA9IE5hbWUuQWxsb3dsaXN0ZWQuZ2V0X2F0dHJpYnV0ZV9saXN0ICgpIGluXG4gICAgW1xuICAgICAgTmFtZS5SZWdpc3RyYXIuRXJyb3IuY3JlYXRlZiByZWdpc3RyYXIgY29udGV4dCB+YWxsb3dsaXN0XG4gICAgICAgIFwiQXR0cmlidXRlIGAlcycgd2FzIG5vdCB1c2VkXCIgbmFtZTtcbiAgICBdXG4gIGVsc2UgW11cblxubGV0IGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBfID1cbiAgICAgIFtcbiAgICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICBdXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLlxuICAgICAgICBhIENvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBhdHRyc1xuICAgICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAgICAgICBjb2xsZWN0ZWRfZXJyb3JzKVxuICAgICAgICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXSwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfZmxvYXRpbmcgOiB0eXBlIGEuXG4gICAgICAgIGEgRmxvYXRpbmcuQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgY29udGV4dCBub2RlXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBTb21lICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgIChGbG9hdGluZy5Db250ZXh0LnJlcGxhY2VfYnlfZHVtbXkgY29udGV4dCBub2RlLCBjb2xsZWN0ZWRfZXJyb3JzKVxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTGFiZWxfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leHRlbnNpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4Y2VwdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4Y2VwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHRlbnNpb25fY29uc3RydWN0b3IgeCBpblxuICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBQYXR0ZXJuIHggaW5cbiAgICAgIHN1cGVyI3BhdHRlcm4gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29yZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXhwcmVzc2lvbiB4IGluXG4gICAgICBzdXBlciNleHByZXNzaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZXhwciB4IGluXG4gICAgICBzdXBlciNjbGFzc19leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9leHByIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4LnByZl9kZXNjIHdpdGggUnRhZyBfIC0+IHNlbGYjY2hlY2tfbm9kZSBSdGFnIHggfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNyb3dfZmllbGQgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpIC0+XG4gICAgICAgICAgICBsZXQgZmllbGRzLCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBmaWVsZHMgfmY6KHNlbGYjY2hlY2tfbm9kZSBPYmplY3RfdHlwZV9maWVsZClcbiAgICAgICAgICAgICAgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZyksIExpc3QuY29uY2F0IGVycm9ycylcbiAgICAgICAgfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFN0cnVjdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V2YWwgaXRlbVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTaWduYXR1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc2lnX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcbiAgZW5kXG5cbmxldCBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIG1hdGNoIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmFpc2VfaWZfbm9uX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY2hlY2tfdW51c2VkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLiBhIENvbnRleHQudCAtPiBhIC0+IGEgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gbm9kZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIExpc3QuaXRlciBhdHRyc1xuICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgICAgICAgICAgICBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyKTtcbiAgICAgICAgICAgIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2xhYmVsX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4dGVuc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXhjZXB0aW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3BhdHRlcm4geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHByZXNzaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZV9maWVsZCB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcm93X2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcbiAgZW5kXG5cbmxldCByZXNldF9jaGVja3MgKCkgPSBBdHRyaWJ1dGVfdGFibGUuY2xlYXIgbm90X3NlZW5cblxubGV0IGNvbGxlY3QgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpXG4gICAgICAgID1cbiAgICAgIGxldCBsb2MgPSBDb21tb24ubG9jX29mX2F0dHJpYnV0ZSBhdHRyIGluXG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUuYWRkIG5vdF9zZWVuIG5hbWUgbG9jXG4gIGVuZFxuXG5sZXQgY29sbGVjdF91bnNlZW5fZXJyb3JzICgpID1cbiAgbGV0IGZhaWwgbmFtZSBsb2MgYWNjID1cbiAgICBsZXQgdHh0ID0gbmFtZS50eHQgaW5cbiAgICBpZiBub3QgKE5hbWUuaWdub3JlX2NoZWNrcyB0eHQpIHRoZW5cbiAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBzaWxlbnRseSBkcm9wcGVkXCIgdHh0XG4gICAgICA6OiBhY2NcbiAgICBlbHNlIGFjY1xuICBpblxuICBBdHRyaWJ1dGVfdGFibGUuZm9sZCBmYWlsIG5vdF9zZWVuIFtdXG5cbmxldCBjaGVja19hbGxfc2VlbiAoKSA9XG4gIG1hdGNoIGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gPVxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLnJlbW92ZSB0YWJsZSBuYW1lXG4gIGVuZFxuXG5sZXQgY29weV9vZl9ub3Rfc2VlbiAoKSA9XG4gIGxldCBjb3B5ID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAoQXR0cmlidXRlX3RhYmxlLmxlbmd0aCBub3Rfc2VlbikgaW5cbiAgQXR0cmlidXRlX3RhYmxlLml0ZXIgKEF0dHJpYnV0ZV90YWJsZS5hZGQgY29weSkgbm90X3NlZW47XG4gIGNvcHlcblxubGV0IGRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSBzdCA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3N0cnVjdHVyZSBzdDtcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cblxubGV0IGRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSBzZyA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3NpZ25hdHVyZSBzZztcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSB7XG4gIGZpbGVfcGF0aCA6IHN0cmluZztcbiAgbWFpbl9tb2R1bGVfbmFtZSA6IHN0cmluZztcbiAgc3VibW9kdWxlX3BhdGggOiBzdHJpbmcgbG9jIGxpc3Q7XG4gIGVuY2xvc2luZ19tb2R1bGUgOiBzdHJpbmc7XG4gIGVuY2xvc2luZ192YWx1ZSA6IHN0cmluZyBvcHRpb247XG4gIHZhbHVlIDogc3RyaW5nIGxvYyBvcHRpb247XG4gIGluX2V4cHIgOiBib29sO1xufVxuXG5sZXQgdG9wX2xldmVsIH5maWxlX3BhdGggPVxuICBsZXQgbWFpbl9tb2R1bGVfbmFtZSA9XG4gICAgZmlsZV9wYXRoIHw+IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSB8PiBTdGRsaWIuRmlsZW5hbWUucmVtb3ZlX2V4dGVuc2lvblxuICAgIHw+IFN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGluXG4gIHtcbiAgICBmaWxlX3BhdGg7XG4gICAgbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBzdWJtb2R1bGVfcGF0aCA9IFtdO1xuICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtYWluX21vZHVsZV9uYW1lO1xuICAgIGVuY2xvc2luZ192YWx1ZSA9IE5vbmU7XG4gICAgdmFsdWUgPSBOb25lO1xuICAgIGluX2V4cHIgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZmlsZV9wYXRoIHQgPSB0LmZpbGVfcGF0aFxubGV0IG1haW5fbW9kdWxlX25hbWUgdCA9IHQubWFpbl9tb2R1bGVfbmFtZVxubGV0IGVuY2xvc2luZ19tb2R1bGUgdCA9IHQuZW5jbG9zaW5nX21vZHVsZVxubGV0IGVuY2xvc2luZ192YWx1ZSB0ID0gdC5lbmNsb3NpbmdfdmFsdWVcblxubGV0IHN1Ym1vZHVsZV9wYXRoIHQgPVxuICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG5cbmxldCB2YWx1ZSB0ID0gT3B0aW9uLm1hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQudmFsdWVcblxubGV0IGZ1bGx5X3F1YWxpZmllZF9wYXRoIHQgPVxuICBsZXQgdmFsdWUgPSB2YWx1ZSB0IGluXG4gIGxldCBzdWJtb2R1bGVfcGF0aCA9XG4gICAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBTb21lIGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG4gIGluXG4gIGxldCBuYW1lcyA9IChTb21lIHQubWFpbl9tb2R1bGVfbmFtZSA6OiBzdWJtb2R1bGVfcGF0aCkgQCBbIHZhbHVlIF0gaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIEBAIExpc3QuZmlsdGVyX29wdCBuYW1lc1xuXG5sZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggaW5fZXhwciA9IHRydWUgfVxuXG5sZXQgZW50ZXJfbW9kdWxlIH5sb2MgbW9kdWxlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHN1Ym1vZHVsZV9wYXRoID0geyB0eHQgPSBtb2R1bGVfbmFtZTsgbG9jIH0gOjogdC5zdWJtb2R1bGVfcGF0aDtcbiAgICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZTtcbiAgICB9XG5cbmxldCBlbnRlcl92YWx1ZSB+bG9jIHZhbHVlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHZhbHVlID0gU29tZSB7IHR4dCA9IHZhbHVlX25hbWU7IGxvYyB9O1xuICAgICAgZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lO1xuICAgIH1cblxubGV0IHRvX3N0cmluZ19wYXRoIHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgKHQuZmlsZV9wYXRoIDo6IHN1Ym1vZHVsZV9wYXRoIHQpXG5sZXQgd2l0aF9zdHJpbmdfcGF0aCBmIH5sb2MgfnBhdGggPSBmIH5sb2MgfnBhdGg6KHRvX3N0cmluZ19wYXRoIHBhdGgpOztcblxubGV0IG1vZHVsZSBNID0gc3RydWN0XG4gIGxldCBhID0gXCJsb2xcIlxuZW5kIGluXG5NLmFcbiIsIm1vZHVsZSBCYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgdG9vbF9uYW1lIDogc3RyaW5nOyBjb2RlX3BhdGggOiBDb2RlX3BhdGgudDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgbGV0IHRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWUgPVxuICAgIGxldCBjb2RlX3BhdGggPSBDb2RlX3BhdGgudG9wX2xldmVsIH5maWxlX3BhdGggaW5cbiAgICB7IHRvb2xfbmFtZTsgY29kZV9wYXRoOyBpbnB1dF9uYW1lIH1cblxuICBsZXQgY29kZV9wYXRoIHQgPSB0LmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQudG9vbF9uYW1lXG4gIGxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfZXhwciB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX21vZHVsZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX21vZHVsZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl92YWx1ZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2MgOiBMb2NhdGlvbi50OyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYyB+YmFzZSAoKSA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYzsgYmFzZSB9XG4gIGxldCBleHRlbnNpb25fcG9pbnRfbG9jIHQgPSB0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBkZXJpdmVkX2l0ZW1fbG9jIDogTG9jYXRpb24udDsgaW5saW5lIDogYm9vbDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmRlcml2ZWRfaXRlbV9sb2MgfmlubGluZSB+YmFzZSAoKSA9XG4gICAgeyBkZXJpdmVkX2l0ZW1fbG9jOyBiYXNlOyBpbmxpbmUgfVxuXG4gIGxldCBkZXJpdmVkX2l0ZW1fbG9jIHQgPSB0LmRlcml2ZWRfaXRlbV9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuICBsZXQgaW5saW5lIHQgPSB0LmlubGluZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5kZXJpdmVkX2l0ZW1fbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb24uV2l0aF9lcnJvcnNcbmluY2x1ZGUgQXN0X3RyYXZlcnNlMFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBQcHhsaWJfdHJhdmVyc2VfYnVpbHRpbnMubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gQXN0LmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBlbmRcblxubGV0IG1vZHVsZV9uYW1lID0gZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgbmFtZSAtPiBuYW1lXG5sZXQgZW50ZXIgbmFtZSBwYXRoID0gaWYgU3RyaW5nLmlzX2VtcHR5IHBhdGggdGhlbiBuYW1lIGVsc2UgcGF0aCBeIFwiLlwiIF4gbmFtZVxubGV0IGVudGVyX29wdCBuYW1lX29wdCBwYXRoID0gZW50ZXIgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBwYXRoXG5cbmNsYXNzIG1hcF93aXRoX3BhdGggPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmddIG1hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgICgqIFdBUzpcbiAgICAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4ID1cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFBzdHJfbW9kdWxlIG1iIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgKGVudGVyIG1iLnBtYl9uYW1lLnR4dCBwYXRoKSB4XG4gICAgICAgfCBfIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4XG5cbiAgICAgICBPdmVycmlkaW5nIFttb2R1bGVfYmluZGluZ10gc2VlbXMgdG8gYmUgT0sgYmVjYXVzZSBpdCBkb2VzIG5vdCBjYXRjaFxuICAgICAgIGxvY2FsIG1vZHVsZSBiaW5kaW5ncyBiZWNhdXNlIGF0IHRoZSBtb21lbnQgdGhlIHBhcnNldHJlZSBkb2Vzbid0IG1ha2VcbiAgICAgICB1c2Ugb2YgW21vZHVsZV9iaW5kaW5nXSBmb3IgbG9jYWwgbW9kdWxlcywgYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGluIHRoZVxuICAgICAgIGZ1dHVyZSwgc28gdGhpcyBtaWdodCBiZSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLlxuXG4gICAgICAgVGhlIGZvbGxvd2luZzpcblxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG5cbiAgICAgICBpcyBkaXNhbGxvd2VkLCBidXRcblxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuXG4gICAgICAgaXNuJ3QsIGFuZCB0aGUgXCJwYXRoXCIgY29uc3RydWN0ZWQgaGVyZSB3b3VsZCBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGVcbiAgICAgICBiZXR3ZWVuIHRoZW0uICopXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBwYXRoIG1iID1cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIChlbnRlcl9vcHQgbWIucG1iX25hbWUudHh0IHBhdGgpIG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBwYXRoIG1kID1cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiAoZW50ZXJfb3B0IG1kLnBtZF9uYW1lLnR4dCBwYXRoKSBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBwYXRoIG10ZCA9XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoZW50ZXIgbXRkLnBtdGRfbmFtZS50eHQgcGF0aCkgbXRkXG4gIGVuZFxuXG5sZXQgdmFyX25hbWVzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIGZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwIGFjYyA9XG4gICAgICBsZXQgYWNjID0gc3VwZXIjcGF0dGVybiBwIGFjYyBpblxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHR4dCA6OiBhY2MgfCBfIC0+IGFjY1xuICBlbmRcblxubGV0IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYyBuYW1lX29wdCBjdHh0ID1cbiAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyAobW9kdWxlX25hbWUgbmFtZV9vcHQpIGN0eHRcblxubGV0IGVudGVyX3ZhbHVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfdmFsdWVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfaWRlbnQgKGxpZGVudCBfXycpKSlcbiAgICBGbi5pZFxuXG5sZXQgZW50ZXJfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2V4cHJcbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9jb25zdHJ1Y3QgKGxpZGVudCBfXycpIG5vbmUpKVxuICAgIEZuLmlkXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxuY2xhc3MgbWFwX3dpdGhfZXhwYW5zaW9uX2NvbnRleHRfYW5kX2Vycm9ycyA9XG4gIGxldCByZXR1cm4gX2N0eCB4ID0gKHgsIFtdKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdFxuICAgICAgW0V4cGFuc2lvbl9jb250ZXh0LkJhc2UudCwgTG9jYXRpb24uRXJyb3IudCBsaXN0XSBsaWZ0X21hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBpbnQgPSByZXR1cm5cbiAgICBtZXRob2Qgc3RyaW5nID0gcmV0dXJuXG4gICAgbWV0aG9kIGJvb2wgPSByZXR1cm5cbiAgICBtZXRob2QgY2hhciA9IHJldHVyblxuICAgIG1ldGhvZCBmbG9hdCA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQzMiA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQ2NCA9IHJldHVyblxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSByZXR1cm5cbiAgICBtZXRob2QgdW5pdCA9IHJldHVyblxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCkgLT5cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgICAgICAnYSBhcnJheSAtPlxuICAgICAgICAgICdhIGFycmF5ICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+XG4gICAgICAgIGxldCBsaXN0LCBlcnJvcnMgPSBzZWxmI2xpc3QgZiBjdHggKEFycmF5LnRvX2xpc3QgYSkgaW5cbiAgICAgICAgKEFycmF5Lm9mX2xpc3QgbGlzdCwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIG90aGVyIDogJ2EuIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIF8gXyAtPiBbXVxuXG4gICAgbWV0aG9kIHJlY29yZCBfY3R4IGZpZWxkcyA9IExpc3QuY29uY2F0X21hcCBmaWVsZHMgfmY6c25kXG4gICAgbWV0aG9kIGNvbnN0ciBfY3R4IF90YWcgYXJncyA9IExpc3QuY29uY2F0IGFyZ3NcbiAgICBtZXRob2QgdHVwbGUgX2N0eCBsID0gTGlzdC5jb25jYXQgbFxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGN0eHRcbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFzIGV4cHIpID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfdmFsdWUgZXhwciB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlID4+PSBmdW4gY3R4dCAtPlxuICAgICAgbGV0IGN0eHQgPSBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX2V4cHIgY3R4dCBpblxuICAgICAgbGV0IHBleHBfZGVzYywgZGVzY19lcnJvcnMgPVxuICAgICAgICBtYXRjaCBwZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSkgLT5cbiAgICAgICAgICAgIGxldCBuYW1lLCBuYW1lX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4dCBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZV9leHByLCBtb2R1bGVfZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgICBsZXQgd2l0aF9sZXRfbW9kdWxlID1cbiAgICAgICAgICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSBleHByXG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bW9kdWxlX2V4cHIucG1vZF9sb2MgbmFtZS50eHQgY3R4dFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB3aXRoX2xldF9tb2R1bGUgPj49IGZ1biBjdHh0IC0+IHNlbGYjbW9kdWxlX2V4cHIgY3R4dCBtb2R1bGVfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBib2R5LCBib2R5X2Vycm9ycyA9IHNlbGYjZXhwcmVzc2lvbiBjdHh0IGJvZHkgaW5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHh0IFwiUGV4cF9sZXRtb2R1bGVcIlxuICAgICAgICAgICAgICAgIFsgbmFtZV9lcnJvcnM7IG1vZHVsZV9leHByX2Vycm9yczsgYm9keV9lcnJvcnMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpLCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHh0IHBleHBfZGVzY1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvYyBpblxuICAgICAgbGV0IHBleHBfbG9jX3N0YWNrLCBsb2Nfc3RhY2tfZXJyb3JzID1cbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvY19zdGFja1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGN0eHQgcGV4cF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBkZXNjX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIGxvY19zdGFja19lcnJvcnMpO1xuICAgICAgICAgICAgKFwiYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgXSApXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGN0eHQgbWUgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2V4cHIgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl9tb2R1bGUgbWUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2V4cHIgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9leHByIGN0eHQgbWVcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgY3R4dCBtYiA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfYmluZGluZyA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyBtYlxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptYi5wbWJfbG9jIG1iLnBtYl9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfYmluZGluZyA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgY3R4dCBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uIG1kXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1kLnBtZF9sb2MgbWQucG1kX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gbXRkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2M6bXRkLnBtdGRfbG9jXG4gICAgICAgICAgICAgIG10ZC5wbXRkX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPlxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGRcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZCA9XG4gICAgICBsZXQgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiB2ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6dmQucHZhbF9sb2MgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAgICAgICBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIGN0eHRcbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYXMgdmIpID1cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIHZiIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSAoKSAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIGN0eHQgdmJcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpbl9iaW5kaW5nX2N0eHQgPVxuICAgICAgICAgICAgbWF0Y2ggdmFyX25hbWVzX29mI3BhdHRlcm4gcHZiX3BhdCBbXSB3aXRoXG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT4gY3R4dFxuICAgICAgICAgICAgfCBbIHZhcl9uYW1lIF0gLT5cbiAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6cHZiX2xvYyB2YXJfbmFtZSBjdHh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX3BhdCwgcGF0X2Vycm9ycyA9IHNlbGYjcGF0dGVybiBjdHh0IHB2Yl9wYXQgaW5cbiAgICAgICAgICBsZXQgcHZiX2V4cHIsIGV4cHJfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBpbl9iaW5kaW5nX2N0eHQgcHZiX2V4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGluX2JpbmRpbmdfY3R4dCBwdmJfYXR0cmlidXRlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcHZiX2xvYyBpblxuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwYXRfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBleHByX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBlcnJvcnMpXG4gIGVuZFxuXG5jbGFzcyBzZXhwX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbU2V4cC50XSBBc3QubGlmdFxuICAgIG1ldGhvZCBpbnQgPSBzZXhwX29mX2ludFxuICAgIG1ldGhvZCBzdHJpbmcgPSBzZXhwX29mX3N0cmluZ1xuICAgIG1ldGhvZCBib29sID0gc2V4cF9vZl9ib29sXG4gICAgbWV0aG9kIGNoYXIgPSBzZXhwX29mX2NoYXJcbiAgICBtZXRob2QgZmxvYXQgPSBzZXhwX29mX2Zsb2F0XG4gICAgbWV0aG9kIGludDMyID0gc2V4cF9vZl9pbnQzMlxuICAgIG1ldGhvZCBpbnQ2NCA9IHNleHBfb2ZfaW50NjRcbiAgICBtZXRob2QgbmF0aXZlaW50ID0gc2V4cF9vZl9uYXRpdmVpbnRcbiAgICBtZXRob2QgdW5pdCA9IHNleHBfb2ZfdW5pdFxuICAgIG1ldGhvZCBvcHRpb24gPSBzZXhwX29mX29wdGlvblxuICAgIG1ldGhvZCBsaXN0ID0gc2V4cF9vZl9saXN0XG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSAtPiBTZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHAudCA9IHNleHBfb2ZfYXJyYXlcbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2EgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiXG5cbiAgICBtZXRob2QgcmVjb3JkIGZpZWxkcyA9XG4gICAgICBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAobGFiZWwsIHNleHApIC0+XG4gICAgICAgICAgICAgU2V4cC5MaXN0IFsgQXRvbSBsYWJlbDsgc2V4cCBdKSlcblxuICAgIG1ldGhvZCBjb25zdHIgdGFnIGFyZ3MgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoIFtdIC0+IEF0b20gdGFnIHwgXyAtPiBMaXN0IChBdG9tIHRhZyA6OiBhcmdzKVxuXG4gICAgbWV0aG9kIHR1cGxlIGwgPSBMaXN0IGxcbiAgZW5kXG5cbmxldCBzZXhwX29mID0gbmV3IHNleHBfb2ZcbiIsIiMgMSBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuIFxub3BlbiBMZXhpbmdcblxubGV0IHVwZGF0ZV9sb2MgbGV4YnVmIGxpbmVzX3RvX3NraXAgPVxuICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0geyBwb3Mgd2l0aFxuICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgbGluZXNfdG9fc2tpcDtcbiAgICBwb3NfYm9sID0gcG9zLnBvc19jbnVtO1xuICB9XG5cbiMgMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgc2tpcF9oYXNoX2JhbmcgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE0IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDMgKVxuIyAxMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMSAtPlxuIyAxNiBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAxIClcbiMgMTE4IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDIgLT5cbiMgMTcgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICAoICgpIClcbiMgMTIzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuIEltcG9ydFxuXG5sZXQgd2l0aF9vdXRwdXQgZm4gfmJpbmFyeSB+ZiA9XG4gIG1hdGNoIGZuIHdpdGhcbiAgfCBOb25lIHwgU29tZSBcIi1cIiAtPlxuICAgICAgKCogRmxpcHBpbmcgYmFjayBhbmQgZm9ydGggZnJvbSBiaW5hcnkgdG8gdGV4dCBpcyBub3RcbiAgICAgICAgIGEgZ29vZCBpZGVhLCBzbyB3ZSdsbCBtYWtlIHR3byBzaW1wbGlmeWluZyBhc3N1bXB0aW9uczpcbiAgICAgICAgIDEuIEFzc3VtZSB0aGF0IG5vdGhpbmcgaXMgYnVmZmVyZWQgb24gc3Rkb3V0IGJlZm9yZVxuICAgICAgICAgICAgZW50ZXJpbmcgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICAgICBmbHVzaCB0aGUgc3Rkb3V0IG9uIGVudHJ5LlxuICAgICAgICAgMi4gQXNzdW1lIHRoYXQgbm90aGluZyBlbHNlIGlzIHNlbnQgdG8gc3Rkb3V0IGFmdGVyXG4gICAgICAgICAgICBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIGl0IGlzIHNhZmUgdG8gbGVhdmUgc3Rkb3V0XG4gICAgICAgICAgICBjaGFubmVsIGluIGJpbmFyeSBtb2RlIChvciB0ZXh0IG1vZGUgaWYgW2JpbmFyeT10cnVlXSlcbiAgICAgICAgICAgIGFmdGVyIHRoZSBmdW5jdGlvbiBpcyBkb25lLiAqKVxuICAgICAgc2V0X2JpbmFyeV9tb2RlX291dCBzdGRvdXQgYmluYXJ5O1xuICAgICAgZiBzdGRvdXRcbiAgfCBTb21lIGZuIC0+IE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+YmluYXJ5IH5mXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgfCBJbXBsXG5cbiAgbGV0IG9mX2ZpbGVuYW1lIGZuIDogdCBvcHRpb24gPVxuICAgIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxcIiB0aGVuIFNvbWUgSW1wbFxuICAgIGVsc2UgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbGlcIiB0aGVuIFNvbWUgSW50ZlxuICAgIGVsc2UgTm9uZVxuXG4gIGxldCBkZXNjcmliZSA9IGZ1bmN0aW9uIEltcGwgLT4gXCJpbXBsZW1lbnRhdGlvblwiIHwgSW50ZiAtPiBcImludGVyZmFjZVwiXG4gIGxldCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gUG9seS5lcXVhbFxuZW5kXG5cbm1vZHVsZSBJbnRmX29yX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuXG4gIGxldCBtYXAgdCAobWFwIDogQXN0X3RyYXZlcnNlLm1hcCkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIHgpXG5cbiAgbGV0IG1hcF93aXRoX2NvbnRleHQgdCAobWFwIDogXyBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dCkgY3R4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIGN0eCB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgY3R4IHgpXG5cbiAgbGV0IGtpbmQgOiBfIC0+IEtpbmQudCA9IGZ1bmN0aW9uIEludGYgXyAtPiBJbnRmIHwgSW1wbCBfIC0+IEltcGxcbmVuZFxuXG5tb2R1bGUgQXN0X2lvID0gc3RydWN0XG4gIHR5cGUgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfdmVyc2lvbilcblxuICBsZXQgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKVxuICAoKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgaW5wdXQgdmVyc2lvbiBjYW4ndCBiZSBkZXRlcm1pbmVkIGR1ZSB0b1xuICAgICAgbG9hZGluZyBvciBwcmVwcm9jZXNzaW5nIGVycm9ycyAqKVxuXG4gIHR5cGUgdCA9IHtcbiAgICBpbnB1dF9uYW1lIDogc3RyaW5nO1xuICAgIGlucHV0X3ZlcnNpb24gOiBpbnB1dF92ZXJzaW9uO1xuICAgIGFzdCA6IEludGZfb3JfaW1wbC50O1xuICB9XG5cbiAgdHlwZSByZWFkX2Vycm9yID1cbiAgICB8IE5vdF9hX2JpbmFyeV9hc3RcbiAgICB8IFVua25vd25fdmVyc2lvbiBvZiBzdHJpbmcgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFN5c3RlbV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuXG4gIHR5cGUgaW5wdXRfc291cmNlID0gU3RkaW4gfCBGaWxlIG9mIHN0cmluZ1xuICB0eXBlIGlucHV0X2tpbmQgPSBQb3NzaWJseV9zb3VyY2Ugb2YgS2luZC50ICogc3RyaW5nIHwgTmVjZXNzYXJpbHlfYmluYXJ5XG5cbiAgbGV0IHJlYWRfZXJyb3JfdG9fc3RyaW5nIChlcnJvciA6IHJlYWRfZXJyb3IpID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0IC0+IFwiRXJyb3I6IE5vdCBhIGJpbmFyeSBhc3RcIlxuICAgIHwgVW5rbm93bl92ZXJzaW9uIChzLCBfKSAtPiBcIkVycm9yOiBVbmtub3duIHZlcnNpb24gXCIgXiBzXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3IgKGxvYywgXykgLT5cbiAgICAgICAgXCJTb3VyY2UgcGFyc2UgZXJyb3I6XCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuICAgIHwgU3lzdGVtX2Vycm9yIChsb2MsIF8pIC0+IFwiU3lzdGVtIGVycm9yOiBcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG5cbiAgbGV0IHBhcnNlX3NvdXJjZV9jb2RlIH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGljXG4gICAgICA9XG4gICAgKCogVGhlIGlucHV0IHZlcnNpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBpbnB1dCB3aWxsIGdldCBwYXJzZWQgYnlcbiAgICAgICB0aGUgY3VycmVudCBjb21waWxlciBQYXJzZSBtb2R1bGUgKilcbiAgICBsZXQgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIGluXG4gICAgdHJ5XG4gICAgICAoKiBUbyB0ZXN0IGlmIGEgZmlsZSBpcyBhbiBBU1QgZmlsZSwgd2UgaGF2ZSB0byByZWFkIHRoZSBmaXJzdCBmZXcgYnl0ZXMgb2YgdGhlXG4gICAgICAgICBmaWxlLiBJZiBpdCBpcyBub3QsIHdlIGhhdmUgdG8gcGFyc2UgdGhlc2UgYnl0ZXMgYW5kIHRoZSByZXN0IG9mIHRoZSBmaWxlIGFzXG4gICAgICAgICBzb3VyY2UgY29kZS5cbiAgICAgICAgIFRoZSBjb21waWxlciBqdXN0IGRvZXMgW3NlZWtfb24gMF0gaW4gdGhpcyBjYXNlLCBob3dldmVyIHRoaXMgZG9lc24ndCB3b3JrXG4gICAgICAgICB3aGVuIHRoZSBpbnB1dCBpcyBhIHBpcGUuXG4gICAgICAgICBXaGF0IHdlIGRvIGlzIHdlIGJ1aWxkIGEgc3RyaW5nIG9mIHRoZSB3aG9sZSBzb3VyY2UsIGFwcGVuZCB0aGUgcHJlZml4XG4gICAgICAgICBhbmQgYnVpbHQgYSBsZXhpbmcgYnVmZmVyIGZyb20gdGhhdC5cbiAgICAgICAgIFdlIGhhdmUgdG8gcHV0IGFsbCB0aGUgc291cmNlIGludG8gdGhlIGxleGluZyBidWZmZXIgYXQgb25jZSB0aGlzIHdheVxuICAgICAgICAgZm9yIHNvdXJjZSBxdW90YXRpb24gdG8gd29yayBpbiBlcnJvciBtZXNzYWdlcy5cbiAgICAgICAgIFNlZSBvY2FtbCMxMjIzOCBhbmQgb2NhbWwvZHJpdmVyL3BwYXJzZS5tbC4gKilcbiAgICAgIGxldCBhbGxfc291cmNlID0gcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgXiBJbl9jaGFubmVsLmlucHV0X2FsbCBpYyBpblxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBhbGxfc291cmNlIGluXG4gICAgICBsZXhidWYubGV4X2N1cnJfcCA8LSB7IGxleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gaW5wdXRfbmFtZSB9O1xuICAgICAgQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9sZXhidWYgKFNvbWUgbGV4YnVmKTtcbiAgICAgIFNraXBfaGFzaF9iYW5nLnNraXBfaGFzaF9iYW5nIGxleGJ1ZjtcbiAgICAgIGxldCBhc3QgOiBJbnRmX29yX2ltcGwudCA9XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IEludGYgLT4gSW50ZiAoUGFyc2UuaW50ZXJmYWNlIGxleGJ1ZilcbiAgICAgICAgfCBJbXBsIC0+IEltcGwgKFBhcnNlLmltcGxlbWVudGF0aW9uIGxleGJ1ZilcbiAgICAgIGluXG4gICAgICBPayB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgbWFnaWNfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG4gIGxldCByZWFkX21hZ2ljIGljID1cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIH5wb3M6MCB+bGVuIGluXG4gICAgaWYgbGVuID0gbWFnaWNfbGVuZ3RoIHRoZW4gT2sgcyBlbHNlIEVycm9yIHNcblxuICBsZXQgc2V0X2lucHV0X2xleGJ1ZiBpbnB1dF9uYW1lID1cbiAgICBsZXQgc2V0X2lucHV0X2xleGJ1ZiBpYyA9XG4gICAgICAoKiBzZXQgaW5wdXQgbGV4YnVmIGZvciBlcnJvciBtZXNzYWdlcy4gKilcbiAgICAgIGxldCBzb3VyY2UgPSBJbl9jaGFubmVsLmlucHV0X2FsbCBpYyBpblxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzb3VyY2UgaW5cbiAgICAgIEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbGV4YnVmIChTb21lIGxleGJ1Zik7XG4gICAgICBsZXhidWZcbiAgICBpblxuICAgIG1hdGNoIEluX2NoYW5uZWwud2l0aF9maWxlIH5iaW5hcnk6dHJ1ZSBpbnB1dF9uYW1lIH5mOnNldF9pbnB1dF9sZXhidWYgd2l0aFxuICAgIHwgKF8gOiBMZXhpbmcubGV4YnVmKSAtPiAoKVxuICAgIHwgZXhjZXB0aW9uIFN5c19lcnJvciBfIC0+ICgpXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBjaCB+aW5wdXRfa2luZCA9XG4gICAgbGV0IGhhbmRsZV9ub25fYmluYXJ5IHByZWZpeF9yZWFkX2Zyb21fc291cmNlID1cbiAgICAgIG1hdGNoIGlucHV0X2tpbmQgd2l0aFxuICAgICAgfCBQb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIC0+XG4gICAgICAgICAgcGFyc2Vfc291cmNlX2NvZGUgfmtpbmQgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGNoXG4gICAgICB8IE5lY2Vzc2FyaWx5X2JpbmFyeSAtPiBFcnJvciBOb3RfYV9iaW5hcnlfYXN0XG4gICAgaW5cbiAgICAoKiBNYXJzaGFsbGVkIEFTVCBtdXN0IGJlIHJlYWQgaW4gYmluYXJ5IG1vZGUuIEV2ZW4gdGhvdWdoIHdlIGRvbid0IGtub3dcbiAgICAgICBiZWZvcmUgcmVhZGluZyB0aGUgbWFnaWMgbnVtYmVyIHdoZW4gdGhlIGZpbGUgaGFzIGEgbWFyc2hhbGxlZCBBU1QsXG4gICAgICAgaXQgaXMgc2FmZSB0byByZWFkIHNvdXJjZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gKilcbiAgICBzZXRfYmluYXJ5X21vZGVfaW4gY2ggdHJ1ZTtcbiAgICBtYXRjaCByZWFkX21hZ2ljIGNoIHdpdGhcbiAgICB8IEVycm9yIHMgLT4gaGFuZGxlX25vbl9iaW5hcnkgc1xuICAgIHwgT2sgcyAtPiAoXG4gICAgICAgIG1hdGNoIEZpbmRfdmVyc2lvbi5mcm9tX21hZ2ljIHMgd2l0aFxuICAgICAgICB8IEludGYgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBzZXRfaW5wdXRfbGV4YnVmIGlucHV0X25hbWU7XG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkludGYgKElucHV0X3RvX3BweGxpYi5jb3B5X3NpZ25hdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgSW1wbCAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSAtPlxuICAgICAgICAgICAgbGV0IGlucHV0X25hbWUgOiBzdHJpbmcgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlIElucHV0X3RvX3BweGxpYiA9IENvbnZlcnQgKElucHV0X3ZlcnNpb24pIChKcykgaW5cbiAgICAgICAgICAgIHNldF9pbnB1dF9sZXhidWYgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGxldCBhc3QgPSBJbnRmX29yX2ltcGwuSW1wbCAoSW5wdXRfdG9fcHB4bGliLmNvcHlfc3RydWN0dXJlIGFzdCkgaW5cbiAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgICAgIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBhc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfCBVbmtub3duIC0+XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBTdHJpbmcuZXF1YWxcbiAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgQXN0bGliLkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgfHwgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICB0aGVuIEVycm9yIChVbmtub3duX3ZlcnNpb24gKHMsIGZhbGxfYmFja19pbnB1dF92ZXJzaW9uKSlcbiAgICAgICAgICAgIGVsc2UgaGFuZGxlX25vbl9iaW5hcnkgcylcblxuICBsZXQgcmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggaW5wdXRfc291cmNlIHdpdGhcbiAgICAgIHwgU3RkaW4gLT5cbiAgICAgICAgICBzZXRfYmluYXJ5X21vZGVfaW4gc3RkaW4gdHJ1ZTtcbiAgICAgICAgICBmcm9tX2NoYW5uZWwgc3RkaW4gfmlucHV0X2tpbmRcbiAgICAgIHwgRmlsZSBmbiAtPiBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kKVxuICAgIHdpdGggZXhuIC0+IChcbiAgICAgIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgfCBTb21lIGVycm9yIC0+IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCB3cml0ZSBvYyB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24pOyBhc3QgfVxuICAgICAgfmFkZF9wcHhfY29udGV4dCA9XG4gICAgbGV0IG1vZHVsZSBQcHhsaWJfdG9faW5wdXQgPSBDb252ZXJ0IChKcykgKElucHV0X3ZlcnNpb24pIGluXG4gICAgbGV0IG1vZHVsZSBPY2FtbF90b19pbnB1dCA9IENvbnZlcnQgKENvbXBpbGVyX3ZlcnNpb24pIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIG1hdGNoIGFzdCB3aXRoXG4gICAgfCBJbnRmIHNnIC0+XG4gICAgICAgIGxldCBzZyA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHNnXG4gICAgfCBJbXBsIHN0IC0+XG4gICAgICAgIGxldCBzdCA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc3RyIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHN0XG5cbiAgbW9kdWxlIFJlYWRfYmluID0gc3RydWN0XG4gICAgdHlwZSBhc3QgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG4gICAgdHlwZSB0ID0geyBhc3QgOiBhc3Q7IGlucHV0X25hbWUgOiBzdHJpbmcgfVxuXG4gICAgbGV0IHJlYWRfYmluYXJ5IGZuID1cbiAgICAgIG1hdGNoXG4gICAgICAgIEluX2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmcm9tX2NoYW5uZWwgfmlucHV0X2tpbmQ6TmVjZXNzYXJpbHlfYmluYXJ5KVxuICAgICAgd2l0aFxuICAgICAgfCBPayB7IGFzdDsgaW5wdXRfbmFtZTsgXyB9IC0+XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgICAgfCBJbXBsIHN0cnVjdHVyZSAtPiBJbXBsIHN0cnVjdHVyZVxuICAgICAgICAgICAgfCBJbnRmIHNpZ25hdHVyZSAtPiBJbnRmIHNpZ25hdHVyZVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgeyBhc3Q7IGlucHV0X25hbWUgfVxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChyZWFkX2Vycm9yX3RvX3N0cmluZyBlKVxuXG4gICAgbGV0IGdldF9hc3QgdCA9IHQuYXN0XG4gICAgbGV0IGdldF9pbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN5c3RlbSA9IHN0cnVjdFxuICBsZXQgcnVuX3ByZXByb2Nlc3NvciB+cHAgfmlucHV0IH5vdXRwdXQgPVxuICAgIGxldCBjb21tYW5kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgPiAlc1wiIHBwXG4gICAgICAgIChpZiBTdHJpbmcuZXF1YWwgaW5wdXQgXCItXCIgdGhlbiBcIlwiIGVsc2UgU3RkbGliLkZpbGVuYW1lLnF1b3RlIGlucHV0KVxuICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIG91dHB1dClcbiAgICBpblxuICAgIGlmIFN0ZGxpYi5TeXMuY29tbWFuZCBjb21tYW5kID0gMCB0aGVuIE9rICgpXG4gICAgZWxzZSBFcnJvciAoY29tbWFuZCwgQXN0X2lvLmZhbGxfYmFja19pbnB1dF92ZXJzaW9uKVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5tb2R1bGUgRmlsZW5hbWUgPSBTdGRsaWIuRmlsZW5hbWVcblxuKCogVE9ETzogbWFrZSB0aGUgXCJkZXJpdmluZy5cIiBkZXBlbmQgb24gdGhlIG1hdGNoaW5nIGF0dHJpYnV0ZSBuYW1lLiAqKVxubGV0IGVuZF9tYXJrZXJfc2lnID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTaWduYXR1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZW5kX21hcmtlcl9zdHIgPVxuICBBdHRyaWJ1dGUuRmxvYXRpbmcuZGVjbGFyZSBcImRlcml2aW5nLmVuZFwiIFN0cnVjdHVyZV9pdGVtXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbm1vZHVsZSB0eXBlIFQxID0gc2lnXG4gIHR5cGUgJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBnZXRfbG9jIDogdCAtPiBMb2NhdGlvbi50XG4gIHZhbCBlbmRfbWFya2VyIDogKHQsIHVuaXQpIEF0dHJpYnV0ZS5GbG9hdGluZy50XG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA6IHNpZ1xuICAgIHZhbCBhcHBseSA6XG4gICAgICA8IHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gVC50XG4gICAgICA7IHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gVC50XG4gICAgICA7IC4uID4gLT5cbiAgICAgIHQgVC50XG4gIGVuZFxuXG4gIHZhbCBwYXJzZSA6IExleGluZy5sZXhidWYgLT4gdCBsaXN0XG4gIHZhbCBwcCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19zZXhwIDogdCAtPiBTZXhwLnRcbmVuZCkgPVxuc3RydWN0XG4gIGxldCBleHRyYWN0X3ByZWZpeCB+cG9zIGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcInBweGxpYjogW0BAQEBAQCVzXSBhdHRyaWJ1dGUgbWlzc2luZ1wiXG4gICAgICAgICAgICAgICAgKEF0dHJpYnV0ZS5GbG9hdGluZy5uYW1lIE0uZW5kX21hcmtlciksXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBBdHRyaWJ1dGUuRmxvYXRpbmcuY29udmVydF9yZXMgWyBNLmVuZF9tYXJrZXIgXSB4IHdpdGhcbiAgICAgICAgICB8IE9rIE5vbmUgLT4gbG9vcCAoeCA6OiBhY2MpIGxcbiAgICAgICAgICB8IE9rIChTb21lICgpKSAtPiBPayAoTGlzdC5yZXYgYWNjLCAoTS5nZXRfbG9jIHgpLmxvY19zdGFydClcbiAgICAgICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgICAgIHwgZXhjZXB0aW9uIEZhaWx1cmUgXyAtPiBsb29wICh4IDo6IGFjYykgbClcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG4gIGxldCByZW1vdmVfbG9jID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgICAgbWV0aG9kISBsb2NhdGlvbiBfID0gTG9jYXRpb24ubm9uZVxuICAgICAgbWV0aG9kISBsb2NhdGlvbl9zdGFjayBfID0gW11cbiAgICBlbmRcblxuICBtb2R1bGUgTV9tYXAgPSBNLlRyYW5zZm9ybSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2FcbiAgZW5kKVxuXG4gIGxldCByZW1vdmVfbG9jIHggPSBNX21hcC5hcHBseSByZW1vdmVfbG9jIHhcbiAgbGV0IHJlYyBsYXN0IHByZXYgPSBmdW5jdGlvbiBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGRpZmZfYXN0cyB+Z2VuZXJhdGVkIH5yb3VuZF90cmlwID1cbiAgICBsZXQgd2l0aF90ZW1wX2ZpbGUgZiA9XG4gICAgICBFeG4ucHJvdGVjdHhcbiAgICAgICAgKEZpbGVuYW1lLnRlbXBfZmlsZSBcInBweGxpYlwiIFwiXCIpXG4gICAgICAgIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mXG4gICAgaW5cbiAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMSAtPlxuICAgICAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMiAtPlxuICAgICAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgZHVtcCBmbiBhc3QgPVxuICAgICAgICAgICAgICAgICAgT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgICAgICAgICAgICAgIFNleHAucHBfaHVtIHBwZiAoTS50b19zZXhwIGFzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGR1bXAgZm4xIGdlbmVyYXRlZDtcbiAgICAgICAgICAgICAgICBkdW1wIGZuMiByb3VuZF90cmlwO1xuICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgXCJwYXRkaWZmIC1hc2NpaSAtYWx0LW9sZCBnZW5lcmF0ZWQgLWFsdC1uZXcgXFxcbiAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgZm4xKSAoRmlsZW5hbWUucXVvdGUgZm4yKVxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9rID1cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgbGV0IGNtZCA9XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaWZmIC0tbGFiZWwgZ2VuZXJhdGVkIC0tbGFiZWwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC0+cHJpbnRlZC0+cGFyc2VkJyAlcyAlcyAmPiAlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBvayB0aGVuIEluX2NoYW5uZWwucmVhZF9hbGwgb3V0XG4gICAgICAgICAgICAgICAgZWxzZSBcIjxubyBkaWZmZXJlbmNlcyBwcm9kdWNlZCBieSBkaWZmPlwiKSkpXG5cbiAgbGV0IHBhcnNlX3N0cmluZyBzID1cbiAgICBtYXRjaCBNLnBhcnNlIChMZXhpbmcuZnJvbV9zdHJpbmcgcykgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgcmVjIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2UgPVxuICAgIG1hdGNoIChleHBlY3RlZCwgc291cmNlKSB3aXRoXG4gICAgfCBbXSwgW10gLT4gKClcbiAgICB8IFtdLCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyAoTS5nZXRfbG9jIHgpIHdpdGggbG9jX2VuZCA9IChNLmdldF9sb2MgKGxhc3QgeCBsKSkubG9jX2VuZCB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFtdXG4gICAgfCBfLCBbXSAtPlxuICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICB7IExvY2F0aW9uLmxvY19naG9zdCA9IGZhbHNlOyBsb2Nfc3RhcnQgPSBlbmRfcG9zOyBsb2NfZW5kID0gZW5kX3BvcyB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIGV4cGVjdGVkXG4gICAgfCB4IDo6IGV4cGVjdGVkLCB5IDo6IHNvdXJjZSAtPlxuICAgICAgICBsZXQgbG9jID0gTS5nZXRfbG9jIHkgaW5cbiAgICAgICAgbGV0IHggPSByZW1vdmVfbG9jIHggaW5cbiAgICAgICAgbGV0IHkgPSByZW1vdmVfbG9jIHkgaW5cbiAgICAgICAgaWYgUG9seS4oIDw+ICkgeCB5IHRoZW4gKFxuICAgICAgICAgIGxldCByb3VuZF90cmlwID1cbiAgICAgICAgICAgIHJlbW92ZV9sb2MgKHBhcnNlX3N0cmluZyAoRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIE0ucHAgeCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBQb2x5LiggPD4gKSB4IHJvdW5kX3RyaXAgdGhlblxuICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICAgICAgICAgICAgXCJwcHhsaWI6IHRoZSBjb3JyZWN0ZWQgY29kZSBkb2Vzbid0IHJvdW5kLXRyaXAuXFxuXFxcbiAgICAgICAgICAgICAgIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIE9DYW1sIHByaW50ZXI6XFxuXFxcbiAgICAgICAgICAgICAgICVzXCJcbiAgICAgICAgICAgICAgKGRpZmZfYXN0cyB+Z2VuZXJhdGVkOnggfnJvdW5kX3RyaXApO1xuICAgICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFsgeCBdKTtcbiAgICAgICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuXG4gIGxldCBkb19tYXRjaCB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBzb3VyY2UgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGV4dHJhY3RfcHJlZml4IH5wb3Mgc291cmNlID4+fCBmdW4gKHNvdXJjZSwgZW5kX3BvcykgLT5cbiAgICBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlXG5lbmRcblxuKCokKilcbm1vZHVsZSBTdHIgPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZ2V0X2xvYyB4ID0geC5wc3RyX2xvY1xuICBsZXQgZW5kX21hcmtlciA9IGVuZF9tYXJrZXJfc3RyXG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA9IHN0cnVjdFxuICAgIGxldCBhcHBseSBvID0gbyNzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcblxuICBsZXQgcGFyc2UgPSBQYXJzZS5pbXBsZW1lbnRhdGlvblxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmVfaXRlbVxuZW5kKVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5tb2R1bGUgU2lnID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHNpZ25hdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHNpZ19sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3NpZ1xuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc2lnbmF0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW50ZXJmYWNlXG4gIGxldCBwcCA9IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICBsZXQgdG9fc2V4cCA9IEFzdF90cmF2ZXJzZS5zZXhwX29mI3NpZ25hdHVyZV9pdGVtXG5lbmQpXG5cbigqJCopXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmVfcmVzID0gU3RyLmRvX21hdGNoXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmUgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbCA9XG4gIG1hdGNoX3N0cnVjdHVyZV9yZXMgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlX3JlcyA9IFNpZy5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zaWduYXR1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cblxudHlwZSAoXywgXykgZXF1YWxpdHkgPSBFcSA6ICgnYSwgJ2EpIGVxdWFsaXR5IHwgTmUgOiAoXywgXykgZXF1YWxpdHlcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHB4X2ltcG9ydCA6IHR5cGVfZGVjbGFyYXRpb24gdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFBweF9pbXBvcnQgLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcblxuICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgZnVuIGEgYiAtPlxuICAgIG1hdGNoIChhLCBiKSB3aXRoXG4gICAgfCBDbGFzc19leHByLCBDbGFzc19leHByIC0+IEVxXG4gICAgfCBDbGFzc19maWVsZCwgQ2xhc3NfZmllbGQgLT4gRXFcbiAgICB8IENsYXNzX3R5cGUsIENsYXNzX3R5cGUgLT4gRXFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIENsYXNzX3R5cGVfZmllbGQgLT4gRXFcbiAgICB8IENvcmVfdHlwZSwgQ29yZV90eXBlIC0+IEVxXG4gICAgfCBFeHByZXNzaW9uLCBFeHByZXNzaW9uIC0+IEVxXG4gICAgfCBNb2R1bGVfZXhwciwgTW9kdWxlX2V4cHIgLT4gRXFcbiAgICB8IE1vZHVsZV90eXBlLCBNb2R1bGVfdHlwZSAtPiBFcVxuICAgIHwgUGF0dGVybiwgUGF0dGVybiAtPiBFcVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIFNpZ25hdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgU3RydWN0dXJlX2l0ZW0gLT4gRXFcbiAgICB8IFBweF9pbXBvcnQsIFBweF9pbXBvcnQgLT4gRXFcbiAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChQb2x5LiggPD4gKSAoVCBhKSAoVCBiKSk7XG4gICAgICAgIE5lXG5cbiAgbGV0IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2wgPVxuICAgIG1hdGNoIHR5cGVfZGVjbCB3aXRoXG4gICAgfCB7IHB0eXBlX21hbmlmZXN0ID0gU29tZSB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIChuYW1lLCBfKTsgXyB9OyBfIH1cbiAgICAgIC0+XG4gICAgICAgIGxldCB2aXJ0dWFsX3BheWxvYWQgPVxuICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl90eXBlIH5sb2M6dHlwZV9kZWNsLnB0eXBlX2xvYyBSZWN1cnNpdmVcbiAgICAgICAgICAgIFsgdHlwZV9kZWNsIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHIgPSBbXSBpblxuICAgICAgICBTb21lICgobmFtZSwgUFN0ciBbIHZpcnR1YWxfcGF5bG9hZCBdKSwgYXR0cilcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfZXh0ZW5zaW9uIDogdHlwZSBhLiBhIHQgLT4gYSAtPiAoZXh0ZW5zaW9uICogYXR0cmlidXRlcykgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgeyBwY2xfZGVzYyA9IFBjbF9leHRlbnNpb24gZTsgcGNsX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBlOyBwY2ZfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfdHlwZSwgeyBwY3R5X2Rlc2MgPSBQY3R5X2V4dGVuc2lvbiBlOyBwY3R5X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZTsgcGN0Zl9hdHRyaWJ1dGVzID0gYTsgXyB9XG4gICAgICAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ29yZV90eXBlLCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIGU7IHB0eXBfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgRXhwcmVzc2lvbiwgeyBwZXhwX2Rlc2MgPSBQZXhwX2V4dGVuc2lvbiBlOyBwZXhwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV9leHByLCB7IHBtb2RfZGVzYyA9IFBtb2RfZXh0ZW5zaW9uIGU7IHBtb2RfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgTW9kdWxlX3R5cGUsIHsgcG10eV9kZXNjID0gUG10eV9leHRlbnNpb24gZTsgcG10eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBQYXR0ZXJuLCB7IHBwYXRfZGVzYyA9IFBwYXRfZXh0ZW5zaW9uIGU7IHBwYXRfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGUsIGEpOyBfIH0gLT4gU29tZSAoZSwgYSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBQcHhfaW1wb3J0LCB0eXBlX2RlY2wgLT4gZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uIHR5cGVfZGVjbFxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXNfcmVzIDpcbiAgICAgIHR5cGUgYS5cbiAgICAgIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gKGEsIExvY2F0aW9uLkVycm9yLnQgTm9uRW1wdHlMaXN0LnQpIHJlc3VsdCA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDbGFzc19leHByIC0+IE9rIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0geC5wY2xfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IE9rIHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0geC5wY2ZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4gT2sgeyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0geC5wY3R5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+XG4gICAgICAgIE9rIHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IHgucGN0Zl9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IE9rIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IHgucHR5cF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiBPayB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSB4LnBleHBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IE9rIHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IHgucG1vZF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4gT2sgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0geC5wbXR5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IE9rIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IHgucHBhdF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgUHB4X2ltcG9ydCAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWVyZ2VfYXR0cmlidXRlc19yZXMgdCB4IGF0dHJzXG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiZXh0ZW5zaW9uXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuIChDb250ZXh0LlQgY3R4KSAtPiBTb21lIChDb250ZXh0LmRlc2MgY3R4KSlcblxubW9kdWxlIE1ha2UgKENhbGxiYWNrIDogc2lnXG4gIHR5cGUgJ2EgdFxuZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSBwYXlsb2FkX3BhcnNlciA9XG4gICAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAgICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50ICogJ2IgQ2FsbGJhY2sudFxuICAgICAgICAtPiAoJ2EsICdjKSBwYXlsb2FkX3BhcnNlclxuXG4gIHR5cGUgKCdjb250ZXh0LCAncGF5bG9hZCkgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdjb250ZXh0IENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogKHBheWxvYWQsICdwYXlsb2FkKSBwYXlsb2FkX3BhcnNlcjtcbiAgICB3aXRoX2FyZyA6IGJvb2w7XG4gIH1cblxuICBsZXQgZGVjbGFyZSA6XG4gICAgICB0eXBlIGEuXG4gICAgICB3aXRoX2FyZzpib29sIC0+XG4gICAgICBzdHJpbmcgLT5cbiAgICAgIGEgQ29udGV4dC50IC0+XG4gICAgICAocGF5bG9hZCwgJ2IsICdwYXlsb2FkKSBBc3RfcGF0dGVybi50IC0+XG4gICAgICAnYiBDYWxsYmFjay50IC0+XG4gICAgICAoYSwgJ3BheWxvYWQpIHQgPVxuICAgZnVuIH53aXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrIC0+XG4gICAgKCogQ2hlY2sgdGhhdCB0aGVyZSBpcyBubyBjb2xsaXNpb25zIGJldHdlZW4gcHB4X2ltcG9ydCBhbmQgY29yZV90eXBlXG4gICAgICAgZXh0ZW5zaW9ucyAqKVxuICAgIChtYXRjaCBjb250ZXh0IHdpdGhcbiAgICB8IENvbnRleHQuUHB4X2ltcG9ydCAtPlxuICAgICAgICBOYW1lLlJlZ2lzdHJhci5jaGVja19jb2xsaXNpb25zIHJlZ2lzdHJhciAoQ29udGV4dC5UIENvcmVfdHlwZSkgbmFtZVxuICAgIHwgQ29udGV4dC5Db3JlX3R5cGUgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBQcHhfaW1wb3J0KSBuYW1lXG4gICAgfCBfIC0+ICgpKTtcbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgRXh0ZW5zaW9uIHJlZ2lzdHJhciAoQ29udGV4dC5UIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgICAgIHdpdGhfYXJnO1xuICAgIH1cblxuICBsZXQgZmluZCB0cyAoZXh0IDogZXh0ZW5zaW9uKSA9XG4gICAgbGV0IHsgdHh0ID0gbmFtZTsgbG9jIH0gPSBmc3QgZXh0IGluXG4gICAgbGV0IG5hbWUsIGFyZyA9IE5hbWUuc3BsaXRfcGF0aCBuYW1lIGluXG4gICAgbWF0Y2ggTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCBfIDo6IF8gOjogXyBhcyBsIC0+XG4gICAgICAgIEVycm9yXG4gICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZXh0ZW5zaW9uczogJXNcIlxuICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgW10gKVxuICAgIHwgWyB0IF0gLT5cbiAgICAgICAgaWYgKG5vdCB0LndpdGhfYXJnKSAmJiBPcHRpb24uaXNfc29tZSBhcmcgdGhlblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICAgICAgICAgIFwiRXh0ZW5zaW9uICVzIGRvZXNuJ3QgZXhwZWN0IGEgcGF0aCBhcmd1bWVudFwiIG5hbWUsXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBhcmcgPVxuICAgICAgICAgICAgT3B0aW9uLm1hcCBhcmcgfmY6KGZ1biBzIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNoaWZ0ID0gU3RyaW5nLmxlbmd0aCBuYW1lICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGxvYy5sb2Nfc3RhcnQgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eHQgPSBMb25naWRlbnQucGFyc2UgcztcbiAgICAgICAgICAgICAgICAgIGxvYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBsb2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXJ0IHdpdGggcG9zX2NudW0gPSBzdGFydC5wb3NfY251bSArIHNoaWZ0IH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIChTb21lICh0LCBhcmcpKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG4gIGVuZClcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY3R4IHBhdHQgZiA9XG4gICAgZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGN0eCBwYXR0IGZcblxuICBsZXQgZGVjbGFyZSBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY3R4IHBhdHQgKGZ1biB+YXJnOl8gLT4gZilcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmxvYyBleHQgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGZpbmQgdHMgZXh0ID4+PSBmdW4gciAtPlxuICAgIG1hdGNoIHIgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPlxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5hcmcpID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBTb21lIHBheWxvYWRcblxuICBsZXQgY29udmVydCB0cyB+bG9jIGV4dCA9XG4gICAgY29udmVydF9yZXMgdHMgfmxvYyBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbm1vZHVsZSBNID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24udCAtPiBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG5lbmQpXG5cbnR5cGUgJ2EgZXhwYW5kZXJfcmVzdWx0ID0gU2ltcGxlIG9mICdhIHwgSW5saW5lIG9mICdhIGxpc3RcblxubW9kdWxlIEZvcl9jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgJ2EgZXhwYW5kZXJfcmVzdWx0KSBNLnRcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aFxuICAgICAgICB8IFNpbXBsZSB4IC0+IFNvbWUgeFxuICAgICAgICB8IElubGluZSBfIC0+IGZhaWx3aXRoIFwiRXh0ZW5zaW9uLmNvbnZlcnRcIilcblxuICBsZXQgY29udmVydCB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHQgPVxuICAgIGxldCBsb2MgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24uZXh0ZW5zaW9uX3BvaW50X2xvYyBjdHh0IGluXG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgTS5maW5kIHRzIGV4dCA+Pj0gZnVuIGZvdW5kIC0+XG4gICAgbWF0Y2ggZm91bmQgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBNLlBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+IChcbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+Y3R4dCB+YXJnKVxuICAgICAgICA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgbWF0Y2ggcGF5bG9hZCB3aXRoIFNpbXBsZSB4IC0+IFNvbWUgWyB4IF0gfCBJbmxpbmUgbCAtPiBTb21lIGwpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lIHRzIH5jdHh0IGV4dCA9XG4gICAgY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxudHlwZSB0ID0gVCA6IF8gRm9yX2NvbnRleHQudCAtPiB0XG5cbmxldCBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgOiB0eXBlIGEuIGZ1bmM6c3RyaW5nIC0+IGEgQ29udGV4dC50IC0+IHVuaXQgPVxuIGZ1biB+ZnVuYyBjdHggLT5cbiAgbWF0Y2ggY3R4IHdpdGhcbiAgfCBDb250ZXh0LkNsYXNzX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5DbGFzc190eXBlX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5TaWduYXR1cmVfaXRlbSAtPiAoKVxuICB8IENvbnRleHQuU3RydWN0dXJlX2l0ZW0gLT4gKClcbiAgfCBjb250ZXh0IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCIlczogJXMgY2FuJ3QgYmUgaW5saW5lZFwiIGZ1bmNcbiAgICAgICAgKENvbnRleHQuZGVzYyBjb250ZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9ieV9jb250ZXh0IDpcbiAgICB0eXBlIGEuIGEgQ29udGV4dC50IC0+IHQgbGlzdCAtPiBhIEZvcl9jb250ZXh0LnQgbGlzdCA9XG4gZnVuIGNvbnRleHQgZXhwYW5kZXJzIC0+XG4gIG1hdGNoIGV4cGFuZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBUIHQgOjogcmVzdCAtPiAoXG4gICAgICBtYXRjaCBDb250ZXh0LmVxIGNvbnRleHQgdC5jb250ZXh0IHdpdGhcbiAgICAgIHwgRXEgLT4gdCA6OiBmaWx0ZXJfYnlfY29udGV4dCBjb250ZXh0IHJlc3RcbiAgICAgIHwgTmUgLT4gZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0KVxuXG5sZXQgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBjdHggKG5hbWUsIF8pID1cbiAgaWZcbiAgICBub3RcbiAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBFeHRlbnNpb24gbmFtZS50eHRcbiAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dClcbiAgdGhlblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIChDb250ZXh0LlQgY3R4KVxuICAgICAgICBcIkV4dGVuc2lvbiBgJXMnIHdhcyBub3QgdHJhbnNsYXRlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBleHRlbnNpb24gKG5hbWUsIF8pIGFjYyA9XG4gICAgICBhY2NcbiAgICAgIEAgW1xuICAgICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICAgIF1cblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENvcmVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFBhdHRlcm4gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgRXhwcmVzc2lvbiBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc190eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdGZfZXh0ZW5zaW9uIGV4dCAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZV9maWVsZCBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2V4cHIgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjZl9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZmllbGRfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbXR5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzaWdfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTaWduYXR1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtb2RfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIE1vZHVsZV9leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHN0cl9leHRlbnNpb24gKGV4dCwgXykgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFN0cnVjdHVyZV9pdGVtIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2NcbiAgZW5kXG5cbmxldCBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImV4dGVuc2lvbiBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkV4dGVuc2lvbiBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNwYXR0ZXJuX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNleHByZXNzaW9uX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc19leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZmllbGRfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNtb2R1bGVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZV9pdGVtX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX2V4cHJfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG4gIGVuZFxuXG5tb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gICAgVFxuICAgICAgKE0uZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+Y3R4dCB+YXJnOl8gLT5cbiAgICAgICAgICAgayB+Y3R4dCkpXG5cbiAgbGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0IH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgICB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuZW5kXG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gZiA9XG4gIFYzLmRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IGRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGxldCBrJyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBrIGluXG4gIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IF9fZGVjbGFyZV9wcHhfaW1wb3J0IG5hbWUgZXhwYW5kID1cbiAgKCogVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gdW53cmFwIHRoZSB0eXBlIGRlY2xhcmF0aW9uIGZyb20gdGhlIHBheWxvYWRcbiAgICAgYXNzZW1ibGVkIGJ5IFtDb250ZXh0LmdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbl0gKilcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl90eXBlIHJlY3Vyc2l2ZSAoX18gXjo6IG5pbCkgXjo6IG5pbCkpIGluXG4gIFYzLmRlY2xhcmUgbmFtZSBDb250ZXh0LlBweF9pbXBvcnQgcGF0dGVybiBleHBhbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgPSBkZWNsYXJlXG4gIGxldCBkZWNsYXJlX2lubGluZSA9IGRlY2xhcmVfaW5saW5lXG5lbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBFID0gRXh0ZW5zaW9uXG5tb2R1bGUgRUMgPSBFeHRlbnNpb24uQ29udGV4dFxubW9kdWxlIEEgPSBBdHRyaWJ1dGVcbm1vZHVsZSBBQyA9IEF0dHJpYnV0ZS5Db250ZXh0XG5cbm1vZHVsZSBSdWxlID0gc3RydWN0XG4gIG1vZHVsZSBBdHRyX2dyb3VwX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDpcbiAgICAgICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICAgICAgQXN0dHlwZXMucmVjX2ZsYWcgLT5cbiAgICAgICAgJ2IgbGlzdCAtPlxuICAgICAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICAgICAnYSBsaXN0O1xuICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCBfKSB1bnBhY2tlZCAtPiAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYXR0cl9uYW1lIChUIHQpID0gQXR0cmlidXRlLm5hbWUgdC5hdHRyaWJ1dGVcblxuICAgIGxldCBzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCBsID1cbiAgICAgIExpc3QucGFydGl0aW9uIGwgfmY6KGZ1biAoVCB0KSAtPiBub3QgdC5leHBlY3QpXG4gIGVuZFxuXG4gIG1vZHVsZSBBdHRyX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2MgLT4gJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgU3BlY2lhbF9mdW5jdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBpZGVudCA6IExvbmdpZGVudC50O1xuICAgICAgZXhwYW5kIDogUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gUGFyc2V0cmVlLmV4cHJlc3Npb24gb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50X2tpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBGbG9hdCB8IEludGVnZXJcbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3VmZml4IDogY2hhcjtcbiAgICAgIGtpbmQgOiBDb25zdGFudF9raW5kLnQ7XG4gICAgICBleHBhbmQgOiBMb2NhdGlvbi50IC0+IHN0cmluZyAtPiBQYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEV4dGVuc2lvbiA6IEV4dGVuc2lvbi50IHRcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiA6IFNwZWNpYWxfZnVuY3Rpb24udCB0XG4gICAgICB8IENvbnN0YW50IDogQ29uc3RhbnQudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZGVjbGFyYXRpb24pIEF0dHJfZ3JvdXBfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc3RydWN0dXJlX2l0ZW0sIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZXh0IDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leGNlcHRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcblxuICAgIHR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbiAgICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgICBmdW4gYSBiIC0+XG4gICAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgICAgfCBFeHRlbnNpb24sIEV4dGVuc2lvbiAtPiBFcVxuICAgICAgfCBTcGVjaWFsX2Z1bmN0aW9uLCBTcGVjaWFsX2Z1bmN0aW9uIC0+IEVxXG4gICAgICB8IENvbnN0YW50LCBDb25zdGFudCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2wsIEF0dHJfc3RyX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ190eXBlX2RlY2wsIEF0dHJfc2lnX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCwgQXR0cl9zdHJfdHlwZV9leHQgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9leHQsIEF0dHJfc2lnX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiwgQXR0cl9zdHJfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX2V4Y2VwdGlvbiwgQXR0cl9zaWdfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBfIC0+IE5lXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFQgOiAnYSBGaWVsZC50ICogJ2EgLT4gdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfZ3JvdXBfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPlxuICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgJ2IgbGlzdCAtPlxuICAgICdjIG9wdGlvbiBsaXN0IC0+XG4gICAgJ2EgbGlzdCkgLT5cbiAgICB0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYXR0cl9pbmxpbmUgPVxuICAgICgnYiwgJ2MpIEF0dHJpYnV0ZS50IC0+XG4gICAgKGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIGxldCByZWMgZmlsdGVyIDogdHlwZSBhLiBhIEZpZWxkLnQgLT4gdCBsaXN0IC0+IGEgbGlzdCA9XG4gICBmdW4gZmllbGQgbCAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IFQgKGZpZWxkJywgeCkgOjogbCAtPiAoXG4gICAgICAgIG1hdGNoIEZpZWxkLmVxIGZpZWxkIGZpZWxkJyB3aXRoXG4gICAgICAgIHwgRmllbGQuRXEgLT4geCA6OiBmaWx0ZXIgZmllbGQgbFxuICAgICAgICB8IEZpZWxkLk5lIC0+IGZpbHRlciBmaWVsZCBsKVxuXG4gIGxldCBleHRlbnNpb24gZXh0ID0gVCAoRXh0ZW5zaW9uLCBleHQpXG5cbiAgbGV0IHNwZWNpYWxfZnVuY3Rpb24gaWQgZiA9XG4gICAgVCAoU3BlY2lhbF9mdW5jdGlvbiwgeyBuYW1lID0gaWQ7IGlkZW50ID0gTG9uZ2lkZW50LnBhcnNlIGlkOyBleHBhbmQgPSBmIH0pXG5cbiAgbGV0IGNvbnN0YW50IGtpbmQgc3VmZml4IGV4cGFuZCA9IFQgKENvbnN0YW50LCB7IHN1ZmZpeDsga2luZDsgZXhwYW5kIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9uIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdGVkX2NvZGVfaG9vayA9IHN0cnVjdFxuICB0eXBlICdhIHNpbmdsZV9vcl9tYW55ID0gU2luZ2xlIG9mICdhIHwgTWFueSBvZiAnYSBsaXN0XG5cbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgRXh0ZW5zaW9uLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIHNpbmdsZV9vcl9tYW55IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuICBsZXQgcmVwbGFjZSB0IGNvbnRleHQgbG9jIHggPSB0LmYgY29udGV4dCBsb2MgeFxuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE1hbnkgW10gLT4gKClcbiAgICB8IF8gLT4gdC5mIGNvbnRleHQgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IHhcbmVuZFxuXG4oKiBVc2VkIHRvIGluc2VydCBlcnJvciBleHRlbnNpb25zICopXG5sZXQgd3JhcF9leHRlbnNpb24gOiB0eXBlIGEuIGxvYzpMb2NhdGlvbi50IC0+IGEgRUMudCAtPiBhIC0+IGV4dGVuc2lvbiAtPiBhID1cbiBmdW4gfmxvYyB0IG9yaWdpbmFsX25vZGUgZXh0ZW5zaW9uIC0+XG4gICgqIFByZWZpeGluZyBjb25zdHJ1Y3RvcnMgd2l0aCB0aGUgbW9kdWxlIHBhdGggaXMgbmVjZXNzYXJ5IGZvciBPQ2FtbCA8IDQuMDcsXG4gICAgIHNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvaXNzdWVzLzY4NTIgKilcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRUMuQ2xhc3NfZXhwciAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjbF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc19maWVsZCAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjZl9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc190eXBlIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGN0eV9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc190eXBlX2ZpZWxkIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGN0Zl9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Db3JlX3R5cGUgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wdHlwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLkV4cHJlc3Npb24gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wZXhwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLk1vZHVsZV9leHByIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucG1vZF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Nb2R1bGVfdHlwZSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBtdHlfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuUGF0dGVybiAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBwYXRfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuU2lnbmF0dXJlX2l0ZW0gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuICB8IEVDLlN0cnVjdHVyZV9pdGVtIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cbiAgfCBFQy5QcHhfaW1wb3J0IC0+XG4gICAgICAoKiBJbnNlcnQgdGhlIGVycm9yIGluIHRoZSB0eXBlIGRlY2wgbWFuaWZlc3QgKilcbiAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9XG4gICAgICAgIFNvbWUgKEFzdF9idWlsZGVyLkRlZmF1bHQucHR5cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb24pXG4gICAgICBpblxuICAgICAgeyBvcmlnaW5hbF9ub2RlIHdpdGggcHR5cGVfbWFuaWZlc3QgfVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gPVxuICBsZXQgZXJyb3IgPSBleG5fdG9fbG9jX2Vycm9yIGV4biBpblxuICBsZXQgbG9jID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yIGluXG4gIGxldCBleHRlbnNpb24gPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgKGV4dGVuc2lvbiwgbG9jKVxuXG5sZXQgZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IG9yaWdpbmFsX25vZGUgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgd3JhcF9leHRlbnNpb24gfmxvYyBjb250ZXh0IG9yaWdpbmFsX25vZGUgZXh0ZW5zaW9uXG5cbmxldCBleG5fdG9fc3RyaSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG5cbmxldCBleG5fdG9fc2lnaSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG5cbmxldCByZWMgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgeCBleG4pKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgRUMubWVyZ2VfYXR0cmlidXRlc19yZXMgY29udGV4dCB4IGF0dHJzXG4gICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzKVxuXG5sZXQgbWFwX25vZGUgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+aG9vayB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICBXaXRoX2Vycm9ycy5yZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCB4IGV4bikpKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHRcbiAgICAgICAgICAgIChFQy5tZXJnZV9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRycylcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICA+PnwgZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBsb2MgKFNpbmdsZSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgZ2VuZXJhdGVkX2NvZGUpXG5cbmxldCByZWMgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rIH5lbWJlZF9lcnJvcnNcbiAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gW11cbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhlc2UgdHdvIGxldHMgZm9yY2UgdGhlIGV2YWx1YXRpb24gb3JkZXIsIHNvIHRoYXQgZXJyb3JzIGFyZSByZXBvcnRlZCBpbiB0aGVcbiAgICAgICAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgZmlsZS4gKilcbiAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGdldF9sb2MgeCBpblxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIFsgZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IHggZXhuIF0pKVxuICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICAgICAgfCBTb21lIGNvbnZlcnRlZCAtPlxuICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgY29udmVydGVkIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICAgICAgICA+Pj0gZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBleHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAoTWFueSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gY29kZSAtPiBnZW5lcmF0ZWRfY29kZSBAIGNvZGUpKVxuXG5sZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG5sZXQgdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnMgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICBtYXRjaFxuICAgIExpc3QubWFwIHNwZWNpYWxfZnVuY3Rpb25zXG4gICAgICB+ZjooZnVuIHsgUnVsZS5TcGVjaWFsX2Z1bmN0aW9uLmlkZW50OyBleHBhbmQ7IF8gfSAtPiAoaWRlbnQsIGV4cGFuZCkpXG4gICAgKCogV2UgZXhwZWN0IHRoZSBsb29rdXAgdG8gZmFpbCBtb3N0IG9mIHRoZSB0aW1lLCBieSBtYWtpbmcgdGhlIHRhYmxlIGJpZyAoYW5kXG4gICAgICAgc3BhcnNlKSwgd2UgbWFrZSBpdCBtb3JlIGxpa2VseSB0byBmYWlsIHF1aWNrbHkgKilcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0IH5zaXplOihtYXggMTAyNCAoTGlzdC5sZW5ndGggc3BlY2lhbF9mdW5jdGlvbnMgKiAyKSlcbiAgd2l0aFxuICB8IE9rIHRhYmxlIC0+IHRhYmxlXG4gIHwgRXJyb3IgaWRlbnQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkNvbnRleHRfZnJlZS5WMS5tYXBfdG9wX2Rvd246ICVzIHByZXNlbnQgdHdpY2UgaW4gbGlzdCBvZiBzcGVjaWFsIFxcXG4gICAgICAgICBmdW5jdGlvbnNcIlxuICAgICAgICAoTGlzdC5maW5kX21hcF9leG4gc3BlY2lhbF9mdW5jdGlvbnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgaWYgUG9seS5lcXVhbCByLmlkZW50IGlkZW50IHRoZW4gU29tZSByLm5hbWUgZWxzZSBOb25lKSlcblxuKCogW2dldF9ncm91cCBhdHRyIGxdIHJldHVybnMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgZm9yIGVhY2hcbiAgIG5vZGUgaW4gW2xdLlxuICAgSWYgW2xdIGlzIGVtcHR5IG9yIGlmIG5vbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXZlIGFuIGF0dHJpYnV0ZSBhdHRhY2hlZCxcbiAgIFtnZXRfZ3JvdXBdIHJldHVybnMgW05vbmVdLlxuICAgSWYgW2xdIGlzIG5vdCBlbXB0eSBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGFzIGFuIGF0dHJpYnVlXG4gICBhdHRhY2hlZCwgW2dldF9ncm91cF0gcmV0dXJucyB0aGUgZXF1aXZhbGVudCBvZlxuICAgW1NvbWUgKExpc3QubWFwIH5mOihBdHRyaWJ1dGUuZ2V0IGF0dHIpIGwpXS4gKilcbmxldCByZWMgZ2V0X2dyb3VwIGF0dHIgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBOb25lXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIGdldF9ncm91cCBhdHRyIGwgPj49IGZ1biBncm91cCAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYXR0ciB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lID4+fCBmdW4gYXR0cjIgLT5cbiAgICAgIG1hdGNoIChhdHRyMiwgZ3JvdXApIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICB8IE5vbmUsIFNvbWUgdmFscyAtPiBTb21lIChOb25lIDo6IHZhbHMpXG4gICAgICB8IFNvbWUgdmFsdWUsIE5vbmUgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiBMaXN0Lm1hcCBsIH5mOihmdW4gXyAtPiBOb25lKSlcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSB2YWxzIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogdmFscykpXG5cbigqIFNhbWUgYXMgW0xpc3QucmV2XSB0aGVuIFtMaXN0LmNvbmNhdF0gYnV0IGV4cGVjdGluZyB0aGUgaW5wdXQgdG8gYmUgb2YgbGVuZ3RoIDw9IDIgKilcbmxldCByZXZfY29uY2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFsgeCBdIC0+IHhcbiAgfCBbIHg7IHkgXSAtPiB5IEAgeFxuICB8IGwgLT4gTGlzdC5jb25jYXQgKExpc3QucmV2IGwpXG5cbmxldCBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgc29ydF9hdHRyX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgPVxuICBFcnJvclxuICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgIFwiQSBjb250ZXh0LWZyZWUgcnVsZSBkZWxldGVkIG9yIGFkZGVkIGF0dHJpYnVlcyBvZiBhIHN0ci9zaWcgaXRlbVwiLFxuICAgICAgW10gKVxuXG4oKiBSZXR1cm5zIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBhdHRyaWJ1dGUgaGFuZGxlcnMuIFdlIGRvbid0IHJlbW92ZSB0aGVzZSBhdHRyaWJ1dGVzLCBhc1xuICAgYW5vdGhlciBwYXNzIG1pZ2h0IGludGVycHJldCB0aGVtIGxhdGVyLiBGb3IgaW5zdGFuY2UgYm90aCBwcHhfZGVyaXZpbmcgYW5kXG4gICBwcHhsaWJfZGVyaXZpbmcgaW50ZXJwcmV0cyBbQEBkZXJpdmluZ10gYXR0cmlidXRlcy5cblxuICAgVGhpcyBjb21wbGV4aXR5IGlzIGhvcnJpYmxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgZG9uJ3QgY2FyZSBhcyBbYXR0cnNdIGlzIGFsd2F5cyBhIGxpc3RcbiAgIG9mIG9uZSBlbGVtZW50OyBpdCBvbmx5IGhhcyBbQEBkZXJpdmluZ10uXG4qKVxubGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRycyByZiB+aXRlbXMgfmV4cGFuZGVkX2l0ZW1zIH5sb2MgfmJhc2VfY3R4dFxuICAgIH5lbWJlZF9lcnJvcnMgfmNvbnZlcnRfZXhuID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSlcbiAgICB+ZjooZnVuIGFjYyAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5UIGdyb3VwKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGl0ZW1zID4+PSBmdW4gZzEgLT5cbiAgICAgIGdldF9ncm91cCBncm91cC5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbXMgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWVzLCBTb21lIF8gLT4gKFxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIubWFrZSB+ZGVyaXZlZF9pdGVtX2xvYzpsb2NcbiAgICAgICAgICAgICAgfmlubGluZTpncm91cC5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBncm91cC5leHBhbmQgfmN0eHQgcmYgZXhwYW5kZWRfaXRlbXMgdmFsdWVzIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvcl9pdGVtID0gWyBjb252ZXJ0X2V4biBleG4gXSBpblxuICAgICAgICAgICAgcmV0dXJuIChlcnJvcl9pdGVtIDo6IGFjYykpKVxuXG5sZXQgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJzIH5jb252ZXJ0X2V4biB+aXRlbSB+ZXhwYW5kZWRfaXRlbSB+bG9jIH5iYXNlX2N0eHRcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSkgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9pbmxpbmUuVCBhKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBpdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcxIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBleHBhbmRlZF9pdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcyIC0+XG4gICAgICBtYXRjaCAoZzEsIGcyKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gcmV0dXJuIGFjY1xuICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDphY2NcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6YS5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBhLmV4cGFuZCB+Y3R4dCBleHBhbmRlZF9pdGVtIHZhbHVlIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvcl9pdGVtID0gWyBjb252ZXJ0X2V4biBleG4gXSBpblxuICAgICAgICAgICAgcmV0dXJuIChlcnJvcl9pdGVtIDo6IGFjYykpKVxuXG5tb2R1bGUgRXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIGxpc3QgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBub3AgPSB7IGYgPSAoZnVuIF8gXyBfIC0+ICgpKSB9XG5lbmRcblxuY2xhc3MgbWFwX3RvcF9kb3duID8oZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBFeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3ApXG4gID8oZ2VuZXJhdGVkX2NvZGVfaG9vayA9IEdlbmVyYXRlZF9jb2RlX2hvb2subm9wKSA/KGVtYmVkX2Vycm9ycyA9IGZhbHNlKSBydWxlc1xuICA9XG4gIGxldCBob29rID0gZ2VuZXJhdGVkX2NvZGVfaG9vayBpblxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9ucyA9XG4gICAgUnVsZS5maWx0ZXIgU3BlY2lhbF9mdW5jdGlvbiBydWxlcyB8PiB0YWJsZV9vZl9zcGVjaWFsX2Z1bmN0aW9uc1xuICBpblxuICBsZXQgY29uc3RhbnRzID1cbiAgICBSdWxlLmZpbHRlciBDb25zdGFudCBydWxlc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gKGMgOiBSdWxlLkNvbnN0YW50LnQpIC0+ICgoYy5zdWZmaXgsIGMua2luZCksIGMuZXhwYW5kKSlcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0X2V4blxuICBpblxuICBsZXQgZXh0ZW5zaW9ucyA9IFJ1bGUuZmlsdGVyIEV4dGVuc2lvbiBydWxlcyBpblxuICBsZXQgY2xhc3NfZXhwciA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZXhwciBleHRlbnNpb25zXG4gIGFuZCBjbGFzc19maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZmllbGQgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc190eXBlX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNvcmVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY29yZV90eXBlIGV4dGVuc2lvbnNcbiAgYW5kIGV4cHJlc3Npb24gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmV4cHJlc3Npb24gZXh0ZW5zaW9uc1xuICBhbmQgbW9kdWxlX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLm1vZHVsZV9leHByIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV90eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBwYXR0ZXJuID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5wYXR0ZXJuIGV4dGVuc2lvbnNcbiAgYW5kIHNpZ25hdHVyZV9pdGVtID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5zaWduYXR1cmVfaXRlbSBleHRlbnNpb25zXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc3RydWN0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgcHB4X2ltcG9ydCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuUHB4X2ltcG9ydCBleHRlbnNpb25zIGluXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbHMsIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbHMsIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dHMsIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dHMsIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbnMsIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl9leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbnMsIGF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ19leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgbWFwX25vZGUgPSBtYXBfbm9kZSB+aG9vayB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBtYXBfbm9kZXMgPSBtYXBfbm9kZXMgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lID0gaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2lubGluZSA9IGhhbmRsZV9hdHRyX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcF93aXRoX2V4cGFuc2lvbl9jb250ZXh0X2FuZF9lcnJvcnMgYXMgc3VwZXJcblxuICAgICgqIE5vIHBvaW50IHJlY3Vyc2luZyBpbnRvIGV2ZXJ5IGxvY2F0aW9uICopXG4gICAgbWV0aG9kISBsb2NhdGlvbiBfIHggPSByZXR1cm4geFxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY29yZV90eXBlIGNvcmVfdHlwZSBzdXBlciNjb3JlX3R5cGUgeC5wdHlwX2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnBhdHRlcm4gcGF0dGVybiBzdXBlciNwYXR0ZXJuIHgucHBhdF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSA9XG4gICAgICBsZXQgd2l0aF9jb250ZXh0ID1cbiAgICAgICAgKCogTWFrZSBzdXJlIGNvZGUtcGF0aCBhdHRyaWJ1dGUgaXMgYXBwbGllZCBiZWZvcmUgZXhwYW5kaW5nLiAqKVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfdmFsdWUgZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+Pj0gZnVuIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIGUpXG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgIEF0dHJpYnV0ZS5yZW1vdmVfc2Vlbl9yZXMgRXhwcmVzc2lvblxuICAgICAgICAgICAgICBbIFQgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIF1cbiAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmVcbiAgICAgICAgICAgID4+fCBmdW4gZSAtPlxuICAgICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgYmFzZV9jdHh0LCBlKVxuICAgICAgaW5cbiAgICAgIHdpdGhfY29udGV4dCA+Pj0gZnVuIChiYXNlX2N0eHQsIGUpIC0+XG4gICAgICBsZXQgZXhwYW5kZWQgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgICAgbWFwX25vZGUgRUMuZXhwcmVzc2lvbiBleHByZXNzaW9uXG4gICAgICAgICAgICAgIChmdW4gXyBlIC0+IHJldHVybiBlKVxuICAgICAgICAgICAgICBlLnBleHBfbG9jIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgXyAtPiByZXR1cm4gZVxuICAgICAgaW5cbiAgICAgIGV4cGFuZGVkID4+PSBmdW4gZSAtPlxuICAgICAgbGV0IGV4cGFuZF9jb25zdGFudCBraW5kIGNoYXIgdGV4dCA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgY29uc3RhbnRzIChjaGFyLCBraW5kKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgU29tZSBleHBhbmQgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCAoZXhwYW5kIGUucGV4cF9sb2MgdGV4dClcbiAgICAgIGluXG4gICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfYXBwbHkgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgaWQ7IF8gfSBhcyBmdW5jKSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgc3BlY2lhbF9mdW5jdGlvbnMgaWQudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jIGFyZ3NcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBzZWxmI3BleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmNcbiAgICAgICAgICAgICAgICAgICAgYXJnc1xuICAgICAgICAgICAgICB8IFNvbWUgZSAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGUpKVxuICAgICAgfCBQZXhwX2lkZW50IGlkIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2ludGVnZXIgKHMsIFNvbWUgYykpIC0+IChcbiAgICAgICAgICB0cnkgZXhwYW5kX2NvbnN0YW50IEludGVnZXIgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIHJldHVybiAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2Zsb2F0IChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBGbG9hdCBjIHNcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgcmV0dXJuIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcblxuICAgICgqIFByZS1jb25kaXRpb25zOlxuICAgICAgIC0gZS5wZXhwX2Rlc2MgPSBQZXhwX2FwcGx5KGZ1bmMsIGFyZ3MpXG4gICAgICAgLSBmdW5jLnBleHBfZGVzYyA9IFBleHBfaWRlbnQgX1xuICAgICopXG4gICAgbWV0aG9kIHByaXZhdGUgcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgID1cbiAgICAgIGxldCB7IHBleHBfZGVzYyA9IF87IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBlIGluXG4gICAgICBsZXQgZnVuYyA9XG4gICAgICAgIGxldCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfYXR0cmlidXRlczsgcGV4cF9sb2Nfc3RhY2sgfSA9IGZ1bmMgaW5cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgICAge1xuICAgICAgICAgIHBleHBfZGVzYztcbiAgICAgICAgICBwZXhwX2xvYyAoKiBsb2NhdGlvbiBkb2Vzbid0IG5lZWQgdG8gYmUgdHJhdmVyc2VkICopO1xuICAgICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGZ1bmMgPj49IGZ1biBmdW5jIC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biAobGFiLCBleHApIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGV4cCA+PnwgZnVuIGV4cCAtPiAobGFiLCBleHApKVxuICAgICAgICB8PiBjb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGFyZ3MgPj49IGZ1biBhcmdzIC0+XG4gICAgICBzZWxmI2F0dHJpYnV0ZXMgYmFzZV9jdHh0IHBleHBfYXR0cmlidXRlcyA+PnwgZnVuIHBleHBfYXR0cmlidXRlcyAtPlxuICAgICAge1xuICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChmdW5jLCBhcmdzKTtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICB9XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfdHlwZSBjbGFzc190eXBlIHN1cGVyI2NsYXNzX3R5cGUgeC5wY3R5X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIHgucGN0Zl9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc19leHByIGNsYXNzX2V4cHIgc3VwZXIjY2xhc3NfZXhwciB4LnBjbF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGQgeC5wY2ZfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV90eXBlIG1vZHVsZV90eXBlIHN1cGVyI21vZHVsZV90eXBlIHgucG10eV9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgKCgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIHgpXG4gICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIE1vZHVsZV9leHByXG4gICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl9tb2R1bGUgXVxuICAgICAgICAgICAgIHhcbiAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICAgPj58IGZ1biB4IC0+XG4gICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBiYXNlX2N0eHQsIHgpKVxuICAgICAgPj49IGZ1biAoYmFzZV9jdHh0LCB4KSAtPlxuICAgICAgbWFwX25vZGUgRUMubW9kdWxlX2V4cHIgbW9kdWxlX2V4cHIgc3VwZXIjbW9kdWxlX2V4cHIgeC5wbW9kX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zdHJ1Y3R1cmVfaXRlbSBzdHJ1Y3R1cmVfaXRlbSBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4LnBzdHJfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnNpZ25hdHVyZV9pdGVtIHNpZ25hdHVyZV9pdGVtIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHgucHNpZ19sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc3RydWN0dXJlIGJhc2VfY3R4dCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjcGF0dGVybiBiYXNlX2N0eHQgcGNzdHJfc2VsZiA+Pj0gZnVuIHBjc3RyX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc19maWVsZCBjbGFzc19maWVsZCBzdXBlciNjbGFzc19maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY2ZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzdHJfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc3RyX2ZpZWxkcyAtPiB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuUHB4X2ltcG9ydCBwcHhfaW1wb3J0IHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geC5wdHlwZV9sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc2lnbmF0dXJlIGJhc2VfY3R4dCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjY29yZV90eXBlIGJhc2VfY3R4dCBwY3NpZ19zZWxmID4+PSBmdW4gcGNzaWdfc2VsZiAtPlxuICAgICAgbWFwX25vZGVzIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIChmdW4geCAtPiB4LnBjdGZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzaWdfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc2lnX2ZpZWxkcyAtPiB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICAoKiBUT0RPOiB0cnkgdG8gZmFjdG9yaXplICNzdHJ1Y3R1cmUgYW5kICNzaWduYXR1cmUgd2l0aG91dCBtZXRhLXByb2dyYW1taW5nICopXG4gICAgKCokKilcbiAgICBtZXRob2QhIHN0cnVjdHVyZSBiYXNlX2N0eHQgc3QgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTdHJ1Y3R1cmVfaXRlbSBpdGVtLnBzdHJfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHN0cl9sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3N0cnVjdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTdHJ1Y3R1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzdHJ1Y3R1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc3RyX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRfZXhuID0gZXhuX3RvX3N0cmkgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCAoaXRlbS5wc3RyX2Rlc2MsIGV4cGFuZGVkX2l0ZW0ucHN0cl9kZXNjKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHJmLCB0ZHMpLCBQc3RyX3R5cGUgKGV4cF9yZiwgZXhwX3RkcykgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogTm8gY29udGV4dC1mcmVlIHJ1bGUgY2FuIHJld3JpdGUgcmVjIGZsYWdzIGF0bSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWN0cyBhcyBhIGZhaWxzYWZlIGluIGNhc2UgaXQgZXZlciBjaGFuZ2VzICopXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoUG9seS4ocmYgPSBleHBfcmYpKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHMgcmYgfml0ZW1zOnRkc1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSBtdGQsIFBzdHJfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW06bXRkIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBleHQgdGUsIFBzdHJfdHlwZXh0IGV4cF90ZSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzIH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzX2V4cGVjdCB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24gZWMsIFBzdHJfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZF9pdGVtIDo6IHJlc3QpKVxuICAgICAgaW5cbiAgICAgIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbiAgICAoKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG4gICAgbWV0aG9kISBzaWduYXR1cmUgYmFzZV9jdHh0IHNnID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU2lnbmF0dXJlX2l0ZW0gaXRlbS5wc2lnX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzaWdfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zaWduYXR1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU2lnbmF0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc2cgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc2cgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc2lnbmF0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc2lnbmF0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU2lnbmF0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHNpZ19sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2V4biA9IGV4bl90b19zaWdpIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHNpZ19kZXNjLCBleHBhbmRlZF9pdGVtLnBzaWdfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlIChyZiwgdGRzKSwgUHNpZ190eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgbXRkLCBQc2lnX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHRlLCBQc2lnX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGVjLCBQc2lnX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokKilcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBVdGlsc1xuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRXh0ZW5zaW9uIG9mICdhIEV4dGVuc2lvbi5Db250ZXh0LnRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBvZiAnYSBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC50XG5cbiAgbGV0IHBhcmVuIHBwIHBwZiB4ID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiglYSlcIiBwcCB4XG5cbiAgbGV0IHByaW50ZXIgOiB0eXBlIGEuIGEgdCAtPiBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlciAtPiBhIC0+IHVuaXQgPVxuICAgIGxldCBvcGVuIEV4dGVuc2lvbi5Db250ZXh0IGluXG4gICAgbGV0IG9wZW4gQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2V4cHIgLT4gUHByaW50YXN0LmNsYXNzX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlIC0+IFBwcmludGFzdC5jbGFzc190eXBlXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENvcmVfdHlwZSAtPiBwYXJlbiBQcHJpbnRhc3QuY29yZV90eXBlXG4gICAgfCBFeHRlbnNpb24gRXhwcmVzc2lvbiAtPiBwYXJlbiBQcHJpbnRhc3QuZXhwcmVzc2lvblxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV9leHByIC0+IFBwcmludGFzdC5tb2R1bGVfZXhwclxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV90eXBlIC0+IFBwcmludGFzdC5tb2R1bGVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIFBhdHRlcm4gLT4gcGFyZW4gUHByaW50YXN0LnBhdHRlcm5cbiAgICB8IEV4dGVuc2lvbiBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBQcHhfaW1wb3J0IC0+IFBwcmludGFzdC50eXBlX2RlY2xhcmF0aW9uXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlbWVudCA9IHN0cnVjdFxuICB0eXBlIGRhdGEgPVxuICAgIHwgVmFsdWVzIDpcbiAgICAgICAgJ2EgQ29udGV4dC50ICogJ2EgQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2suc2luZ2xlX29yX21hbnlcbiAgICAgICAgLT4gZGF0YVxuICAgIHwgVGV4dCBvZiBzdHJpbmdcblxuICB0eXBlIHQgPSB7IHN0YXJ0IDogTGV4aW5nLnBvc2l0aW9uOyBzdG9wIDogTGV4aW5nLnBvc2l0aW9uOyBkYXRhIDogZGF0YSB9XG5cbiAgbGV0IG1ha2UgfmNvbnRleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID1cbiAgICB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVmFsdWVzIChjb250ZXh0LCByZXBsKSB9XG5cbiAgbGV0IG1ha2VfdGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPSB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVGV4dCByZXBsIH1cblxuICBsZXQgdGV4dCBibG9jayA9XG4gICAgbWF0Y2ggYmxvY2suZGF0YSB3aXRoXG4gICAgfCBUZXh0IHMgLT4gc1xuICAgIHwgVmFsdWVzIChjb250ZXh0LCBnZW5lcmF0ZWQpIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgcHJpbnRlciA9IENvbnRleHQucHJpbnRlciBjb250ZXh0IGluXG4gICAgICAgICAgbWF0Y2ggZ2VuZXJhdGVkIHdpdGhcbiAgICAgICAgICB8IFNpbmdsZSB4IC0+IFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiIHByaW50ZXIgeFxuICAgICAgICAgIHwgTWFueSBsIC0+XG4gICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgKGZ1biBwcGYgbCAtPlxuICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRlciBwcGYgeDtcbiAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKSlcbiAgICAgICAgICAgICAgICBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc193cyA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UgaW5cbiAgICAgICAgbGV0IHN0cmlwX3dzIHMgaSBsZW4gPVxuICAgICAgICAgIGxldCBsZW4gPSByZWYgbGVuIGluXG4gICAgICAgICAgd2hpbGUgIWxlbiA+IDAgJiYgaXNfd3Mgcy5baSArICFsZW4gLSAxXSBkb1xuICAgICAgICAgICAgbGVuIDo9ICFsZW4gLSAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBTdHJpbmcuc3ViIHMgfnBvczppIH5sZW46IWxlblxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBwb3MgPVxuICAgICAgICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHMgdGhlbiBbXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBpZHggPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzdHJpcF93cyBzIHBvcyAoaWR4IC0gcG9zKSA6OiBcIlxcblwiIDo6IGxvb3AgcyAoaWR4ICsgMSlcbiAgICAgICAgaW5cbiAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKGxvb3AgcyAwKVxuZW5kXG5cbm9wZW4gUmVwbGFjZW1lbnRcblxubW9kdWxlIFJlcGxhY2VtZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBSZXBsYWNlbWVudC50IGxpc3RcblxuICAoKiBNZXJnZSBsb2NhdGlvbnMgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBPdmVybGFwcGluZyBsb2NhdGlvbnMgYXJlIG1lcmdlZCBpbnRvIG9uZS4gVGhlXG4gICAgIHJlc3VsdCBpcyBzb3J0ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIHRvIHRoZSBlbmQuICopXG4gIGxldCBjaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgPVxuICAgIExpc3QuaXRlciByZXBscyB+ZjooZnVuIHJlcGwgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBTdHJpbmcuKCA8PiApIHJlcGwuc3RhcnQucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgICB8fCBTdHJpbmcuKCA8PiApIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVuYW1lKVxuICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiB0aGUgcmV3cml0aW5nIGNvbnRhaW5zIHBhcnRzIGZyb20gYW5vdGhlciBmaWxlLlxcblxcXG4gICAgICAgICAgICAgSXQgaXMgdG9vIGNvbXBsaWNhdGVkIHRvIHJlY29uY2lsZSBpdCB3aXRoIHRoZSBzb3VyY2U6ICVzIG9yICVzIFxcXG4gICAgICAgICAgICAgYW5kICVzXCJcbiAgICAgICAgICAgIHJlcGwuc3RhcnQucG9zX2ZuYW1lIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgYXNzZXJ0IChyZXBsLnN0YXJ0LnBvc19jbnVtIDw9IHJlcGwuc3RvcC5wb3NfY251bSkpO1xuICAgIGxldCByZXBscyA9XG4gICAgICBMaXN0LnNvcnQgcmVwbHMgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgICAgIGxldCBkID0gY29tcGFyZSBhLnN0YXJ0LnBvc19jbnVtIGIuc3RvcC5wb3NfY251bSBpblxuICAgICAgICAgIGlmIGQgPSAwIHRoZW5cbiAgICAgICAgICAgICgqIFB1dCB0aGUgbGFyZ2VzdCBmaXJzdCwgc28gdGhhdCB0aGUgZm9sbG93aW5nIFtmaWx0ZXJdIGZ1bmN0aW9ucyBhbHdheXMgcGlja3MgdXBcbiAgICAgICAgICAgICAgIHRoZSBsYXJ0ZXN0IGZpcnN0IHdoZW4gc2V2ZXJhbCBnZW5lcmF0ZWQgcmVwbHMgc3RhcnQgYXQgdGhlIHNhbWUgcG9zaXRpb24gKilcbiAgICAgICAgICAgIGNvbXBhcmUgYi5zdG9wLnBvc19jbnVtIGEuc3RvcC5wb3NfY251bVxuICAgICAgICAgIGVsc2UgZClcbiAgICBpblxuICAgIGxldCByZWMgZmlsdGVyIHByZXYgcmVwbHMgfmFjYyA9XG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IChwcmV2IDo6IGFjYylcbiAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID49IHJlcGwuc3RvcC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgICgqIFtyZXBsXSBpcyBpbmNsdWRlZCBpbiBbcHJldl0gPT4gc2tpcCBbcmVwbF0gKilcbiAgICAgICAgICAgICAgZmlsdGVyIHByZXYgcmVwbHMgfmFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IGxvY2F0aW9ucyBvZiBnZW5lcmF0ZWQgY29kZSBhcmUgb3ZlcmxhcHBpbmcsIFxcXG4gICAgICAgICAgICAgICAgIGNhbm5vdCByZWNvbmNpbGVcIlxuICAgICAgICAgICAgICAgIH5sb2M6XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9IHJlcGwuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGxvY19lbmQgPSBwcmV2LnN0b3A7XG4gICAgICAgICAgICAgICAgICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzoocHJldiA6OiBhY2MpXG4gICAgaW5cbiAgICBtYXRjaCByZXBscyB3aXRoIFtdIC0+IFtdIHwgcmVwbCA6OiByZXBscyAtPiBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOltdXG5lbmRcblxubGV0IGNvdW50X25ld2xpbmVzIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIFN0cmluZy5pdGVyIHMgfmY6KGZ1bmN0aW9uICdcXG4nIC0+IG4gOj0gIW4gKyAxIHwgXyAtPiAoKSk7XG4gICFuXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9iZWdpbiA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEJFR0lOIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxubGV0IGdlbmVyYXRlZF9jb2RlX2VuZCA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEVORCAgIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxudHlwZSBtb2RlID0gVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzXG50eXBlIHRhcmdldCA9IE91dHB1dCBvZiBtb2RlIHwgQ29ycmVjdGVkXG5cbmxldCBza2lwX2JsYW5rX2VvbCBjb250ZW50cyAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSA9XG4gIGxldCByZWMgbG9vcCBjbnVtID1cbiAgICBpZiBjbnVtID0gU3RyaW5nLmxlbmd0aCBjb250ZW50cyB0aGVuIHsgcG9zIHdpdGggcG9zX2NudW0gPSBjbnVtIH1cbiAgICBlbHNlXG4gICAgICBtYXRjaCBjb250ZW50cy5bY251bV0gd2l0aFxuICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXHInIC0+IGxvb3AgKGNudW0gKyAxKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvcyB3aXRoXG4gICAgICAgICAgICBwb3NfY251bSA9IGNudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2JvbCA9IGNudW0gKyAxO1xuICAgICAgICAgIH1cbiAgICAgIHwgXyAtPiBwb3NcbiAgaW5cbiAgbG9vcCBwb3MucG9zX2NudW1cblxubGV0IHdpdGhfb3V0cHV0IH5zdHlsZXIgfihraW5kIDogS2luZC50KSBmbiB+ZiA9XG4gIG1hdGNoIHN0eWxlciB3aXRoXG4gIHwgTm9uZSAtPiB3aXRoX291dHB1dCBmbiB+YmluYXJ5OmZhbHNlIH5mXG4gIHwgU29tZSBjbWQgLT5cbiAgICAgIGxldCB0bXBfZm4sIG9jID1cbiAgICAgICAgU3RkbGliLkZpbGVuYW1lLm9wZW5fdGVtcF9maWxlIFwicHB4bGliX2RyaXZlclwiXG4gICAgICAgICAgKG1hdGNoIGtpbmQgd2l0aCBJbXBsIC0+IFwiLm1sXCIgfCBJbnRmIC0+IFwiLm1saVwiKVxuICAgICAgaW5cbiAgICAgIGxldCBjbWQgPVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzJXNcIiBjbWRcbiAgICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIHRtcF9mbilcbiAgICAgICAgICAobWF0Y2ggZm4gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIGZuIC0+IFwiID4gXCIgXiBTdGRsaWIuRmlsZW5hbWUucXVvdGUgZm4pXG4gICAgICBpblxuICAgICAgbGV0IG4gPVxuICAgICAgICBFeG4ucHJvdGVjdHggdG1wX2ZuIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mOihmdW4gXyAtPlxuICAgICAgICAgICAgRXhuLnByb3RlY3R4IG9jIH5maW5hbGx5OmNsb3NlX291dCB+ZjtcbiAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQpXG4gICAgICBpblxuICAgICAgaWYgbiA8PiAwIHRoZW4gKFxuICAgICAgICBQcmludGYuZXByaW50ZiBcImNvbW1hbmQgZXhpdGVkIHdpdGggY29kZSAlZDogJXNcXG5cIiBuIGNtZDtcbiAgICAgICAgU3RkbGliLmV4aXQgMSlcblxubGV0IHJlY29uY2lsZSA/c3R5bGVyIChyZXBscyA6IFJlcGxhY2VtZW50cy50KSB+a2luZCB+Y29udGVudHMgfmlucHV0X2ZpbGVuYW1lXG4gICAgfm91dHB1dCB+aW5wdXRfbmFtZSB+dGFyZ2V0ID1cbiAgbGV0IHJlcGxzID0gUmVwbGFjZW1lbnRzLmNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyBpblxuICBsZXQgb3V0cHV0X25hbWUgPSBtYXRjaCBvdXRwdXQgd2l0aCBOb25lIC0+IFwiPHN0ZG91dD5cIiB8IFNvbWUgZm4gLT4gZm4gaW5cbiAgd2l0aF9vdXRwdXQgb3V0cHV0IH5zdHlsZXIgfmtpbmQgfmY6KGZ1biBvYyAtPlxuICAgICAgbGV0IGNvcHlfaW5wdXQgcG9zIH51cF90byB+bGluZSB+bGFzdF9pc190ZXh0IH5pc190ZXh0ID1cbiAgICAgICAgbGV0IHBvcyA9IGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvcyBpblxuICAgICAgICBpZiBwb3MucG9zX2NudW0gPCB1cF90byB0aGVuIChcbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuJSpzXCIgcG9zLnBvc19sbnVtIGlucHV0X25hbWVcbiAgICAgICAgICAgICAgICAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyB8IENvcnJlY3RlZCAtPiAoKSk7XG4gICAgICAgICAgb3V0cHV0X3N1YnN0cmluZyBvYyBjb250ZW50cyB+cG9zOnBvcy5wb3NfY251bVxuICAgICAgICAgICAgfmxlbjoodXBfdG8gLSBwb3MucG9zX2NudW0pO1xuICAgICAgICAgIGxldCBsaW5lID0gcmVmIChsaW5lICsgMSkgaW5cbiAgICAgICAgICBmb3IgaSA9IHBvcy5wb3NfY251bSB0byB1cF90byAtIDEgZG9cbiAgICAgICAgICAgIGlmIENoYXIuZXF1YWwgY29udGVudHMuW2ldICdcXG4nIHRoZW4gbGluZSA6PSAhbGluZSArIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBsaW5lID0gIWxpbmUgaW5cbiAgICAgICAgICBpZiAobm90IGlzX3RleHQpICYmIENoYXIuKCA8PiApIGNvbnRlbnRzLlt1cF90byAtIDFdICdcXG4nIHRoZW4gKFxuICAgICAgICAgICAgb3V0cHV0X2NoYXIgb2MgJ1xcbic7XG4gICAgICAgICAgICBsaW5lICsgMSlcbiAgICAgICAgICBlbHNlIGxpbmUpXG4gICAgICAgIGVsc2UgbGluZVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoY29weV9pbnB1dCBwb3MgfnVwX3RvOihTdHJpbmcubGVuZ3RoIGNvbnRlbnRzKSB+bGluZVxuICAgICAgICAgICAgICAgICB+bGFzdF9pc190ZXh0IH5pc190ZXh0OmZhbHNlXG4gICAgICAgICAgICAgICAgOiBpbnQpXG4gICAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgICAgbGV0IGlzX3RleHQgPVxuICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBjb3B5X2lucHV0IHBvcyB+dXBfdG86cmVwbC5zdGFydC5wb3NfY251bSB+bGluZSB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICAgICAgfmlzX3RleHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcblwiIChsaW5lICsgMSkgb3V0cHV0X25hbWU7XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbjtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgQ29ycmVjdGVkIC0+IGxpbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzIH5sYXN0X2lzX3RleHQ6aXNfdGV4dFxuICAgICAgYW5kIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBsc1xuICAgICAgICAgIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT4gZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzJyAtPlxuICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgIGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgICAgbGV0IGxhc3RfaXNfdGV4dCA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzJyB+bGFzdF9pc190ZXh0XG4gICAgICBhbmQgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2VuZCk7XG4gICAgICAgIGxvb3AgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IGlucHV0X25hbWU7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgeyBzdGFydCA9IHsgcG9zX2NudW0gPSAwOyBfIH07IF8gfSA6OiBfIC0+XG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbik7XG4gICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlXG4gICAgICB8IF8gLT4gbG9vcCAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlKVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIG5leHRfaWQgOiBpbnQ7XG4gIG11dGFibGUgYmluZGluZ3MgOiBQYXJzZXRyZWUudmFsdWVfYmluZGluZyBsaXN0O1xufVxuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0X2lkID0gMDsgYmluZGluZ3MgPSBbXSB9XG5cbmxldCBzYW5pdGl6ZSB0IGUgPVxuICBtYXRjaCB0LmJpbmRpbmdzIHdpdGhcbiAgfCBbXSAtPiBlXG4gIHwgYmluZGluZ3MgLT5cbiAgICAgIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGUucGV4cF9sb2MgaW5cbiAgICAgIEFzdC5wZXhwX2xldCBOb25yZWN1cnNpdmUgYmluZGluZ3MgZVxuXG5sZXQgcXVvdGUgdCAoZSA6IGV4cHJlc3Npb24pID1cbiAgbGV0IGxvYyA9IGUucGV4cF9sb2MgaW5cbiAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgbG9jIGluXG4gIGxldCBuYW1lID0gXCJfX1wiIF4gSW50LnRvX3N0cmluZyB0Lm5leHRfaWQgaW5cbiAgbGV0IGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgICgqIE9wdGltaXplIGlkZW50aWZpZXIgcXVvdGluZyBieSBhdm9pZGluZyBjbG9zdXJlLlxuICAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtcHB4L3BweF9kZXJpdmluZy9wdWxsLzI1Mi4gKilcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT4gKGUsIEFzdC5ldmFyIG5hbWUpXG4gICAgfCBfIC0+XG4gICAgICAgIGxldCBiaW5kaW5nX2V4cHIgPVxuICAgICAgICAgIEFzdC5wZXhwX2Z1biBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgIChsZXQgdW5pdCA9IEFzdF9idWlsZGVyLkRlZmF1bHQuTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIgaW5cbiAgICAgICAgICAgICBBc3QucHBhdF9jb25zdHJ1Y3QgdW5pdCBOb25lKVxuICAgICAgICAgICAgZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcXVvdGVkX2V4cHIgPSBBc3QuZWFwcGx5IChBc3QuZXZhciBuYW1lKSBbIEFzdC5ldW5pdCBdIGluXG4gICAgICAgIChiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByKVxuICBpblxuICBsZXQgYmluZGluZyA9XG4gICAgbGV0IHBhdCA9IEFzdC5wdmFyIG5hbWUgaW5cbiAgICBBc3QudmFsdWVfYmluZGluZyB+cGF0IH5leHByOmJpbmRpbmdfZXhwclxuICBpblxuICB0LmJpbmRpbmdzIDwtIGJpbmRpbmcgOjogdC5iaW5kaW5ncztcbiAgdC5uZXh0X2lkIDwtIHQubmV4dF9pZCArIDE7XG4gIHF1b3RlZF9leHByXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IG1rX2F0dHJfbm9sb2MgdHh0ID0gQXN0X2hlbHBlci5BdHRyLm1rIExvY2F0aW9uLnsgdHh0OyBsb2MgPSBub25lIH1cbmxldCBoaWRlX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uaGlkZVwiIChQU3RyIFtdKVxubGV0IGZvY3VzX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uZm9jdXNcIiAoUFN0ciBbXSlcblxubGV0IGhpZGVfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBoaWRlX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuIiwib3BlbiBJbXBvcnRcblxubW9kdWxlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGluc2VydCA6IG5vZGVfbmFtZTpzdHJpbmcgLT4gTG9jYXRpb24udCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uIDogdCAtPiB0IC0+IHRcblxuICB2YWwgY292ZXJlZF9ieSA6IHQgLT4gbG9jOkxvY2F0aW9uLnQgLT4gYm9vbFxuICAoKiogW2NvdmVyZWRfYnkgdCB+bG9jID0gdHJ1ZV0gaWZmIFt0XSBpcyBjb3ZlcmVkIGJ5IFtsb2NdICopXG5cbiAgdmFsIGZpbmRfb3V0c2lkZSA6IExvY2F0aW9uLnQgLT4gdCAtPiBzdHJpbmcgKiBMb2NhdGlvbi50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1pbl9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIG1heF9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIHJhbmdlcyA6IChzdHJpbmcgKiBMb2NhdGlvbi50KSBsaXN0O1xuICB9XG5cbiAgbGV0IGVtcHR5ID0geyBtaW5fcG9zID0gTm9uZTsgbWF4X3BvcyA9IE5vbmU7IHJhbmdlcyA9IFtdIH1cblxuICBsZXQgcmVjIGluc2VydCByYW5nZXMgKChub2RlX25hbWUsIG5vZGVfbG9jKSBhcyBub2RlKSA9XG4gICAgbWF0Y2ggcmFuZ2VzIHdpdGhcbiAgICB8IFtdIC0+IFsgbm9kZSBdXG4gICAgfCAoKHhfbmFtZSwgeF9sb2MpIGFzIHgpIDo6IHhzIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uIGluXG4gICAgICAgIGlmIGNvbXBhcmVfcG9zIG5vZGVfbG9jLmxvY19zdGFydCB4X2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIG5vZGUgOjogeCA6OiB4c1xuICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcG9zIHhfbG9jLmxvY19zdGFydCBub2RlX2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIHggOjogaW5zZXJ0IHhzIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICAgICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4LCAlcyBvdmVybGFwcyB3aXRoICVzIGF0IGxvY2F0aW9uOkAuJWFcIlxuICAgICAgICAgICAgbm9kZV9uYW1lIHhfbmFtZSBMb2NhdGlvbi5wcmludCB4X2xvY1xuXG4gIGxldCBtaW5fcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWluX3BvcyBwMSBwMilcblxuICBsZXQgbWF4X3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1heF9wb3MgcDEgcDIpXG5cbiAgbGV0IGxvbmdlc3RfZmlyc3QgbDEgbDIgfnN0b3BfYWZ0ZXIgPVxuICAgIGxldCByZWMgbG9vcCB4cyB5cyBuID1cbiAgICAgIG1hdGNoICh4cywgeXMsIG4pIHdpdGhcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBfLCAwIC0+IChsMiwgbDEpXG4gICAgICB8IF8sIFtdLCBfIC0+IChsMSwgbDIpXG4gICAgICB8IF8gOjogeHMsIF8gOjogeXMsIG4gLT4gbG9vcCB4cyB5cyAobiAtIDEpXG4gICAgaW5cbiAgICBsb29wIGwxIGwyIHN0b3BfYWZ0ZXJcblxuICBsZXQgdW5pb24gdDEgdDIgPVxuICAgIGxldCBpbml0LCBsID0gbG9uZ2VzdF9maXJzdCB0MS5yYW5nZXMgdDIucmFuZ2VzIH5zdG9wX2FmdGVyOjQyIGluXG4gICAgbGV0IHJhbmdlcyA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6aW5zZXJ0IGluXG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgdDEubWluX3BvcyB0Mi5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgdDEubWF4X3BvcyB0Mi5tYXhfcG9zO1xuICAgICAgcmFuZ2VzO1xuICAgIH1cblxuICBsZXQgaW5zZXJ0IH5ub2RlX25hbWUgbG9jIHQgPVxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIChTb21lIGxvYy5sb2Nfc3RhcnQpIHQubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIChTb21lIGxvYy5sb2NfZW5kKSB0Lm1heF9wb3M7XG4gICAgICByYW5nZXMgPSBpbnNlcnQgdC5yYW5nZXMgKG5vZGVfbmFtZSwgbG9jKTtcbiAgICB9XG5cbiAgbGV0IGNvdmVyZWRfYnkgdCB+bG9jID1cbiAgICBtYXRjaCAodC5taW5fcG9zLCB0Lm1heF9wb3MpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBtaW5fcG9zLCBTb21lIG1heF9wb3MgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbWluX3BvcyBsb2MubG9jX3N0YXJ0ID49IDBcbiAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbWF4X3BvcyBsb2MubG9jX2VuZCA8PSAwXG4gICAgfCBfLCBfIC0+XG4gICAgICAgICgqIHRoZXJlIGFyZSBubyBvcGVuIHJhbmdlcyAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuICBsZXQgZmluZF9vdXRzaWRlIGxvYyB0ID1cbiAgICBMaXN0LmZpbmQgdC5yYW5nZXMgfmY6KGZ1biAoXywgbCkgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19zdGFydCBsLmxvY19zdGFydCA+IDBcbiAgICAgICAgfHwgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgbC5sb2NfZW5kIDwgMClcbmVuZFxuXG5sZXQgcmVsb2NfcG10eV9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbXR5X2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtdHlfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG10eV9sb2MgPSB7IHJlcy5wbXR5X2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgcmVsb2NfcG1vZF9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbW9kX2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtb2RfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG1vZF9sb2MgPSB7IHJlcy5wbW9kX2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYyA9XG4gIExpc3QuZm9yX2FsbCB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGF0dHIuYXR0cl9sb2MubG9jX2VuZCA+PSAwKVxuXG5sZXQgZmlsZSA6IHN0cmluZyBvcHRpb24gcmVmID0gcmVmIE5vbmVcbmxldCBzYW1lX2ZpbGVfc29fZmFyID0gcmVmIHRydWVcblxubGV0IHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGZuYW1lID1cbiAgKCogVE9ETzogcmVtb3ZlIHVzZXMgb2YgTG9jYXRpb24ubm9uZSBmcm9tIHRoZSBwcHhlcy4gKilcbiAgaWYgU3RyaW5nLmVxdWFsIGZuYW1lIFwiX25vbmVfXCIgdGhlbiB0cnVlICgqIGRvIG5vdGhpbmcgZm9yIG5vdy4gKilcbiAgZWxzZVxuICAgIG1hdGNoICFmaWxlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgZmlsZSA6PSBTb21lIGZuYW1lO1xuICAgICAgICB0cnVlXG4gICAgfCBTb21lIG9yaWdfZm5hbWUgLT5cbiAgICAgICAgU3RyaW5nLmVxdWFsIG9yaWdfZm5hbWUgZm5hbWVcbiAgICAgICAgfHxcbiAgICAgICAgKHNhbWVfZmlsZV9zb19mYXIgOj0gZmFsc2U7XG4gICAgICAgICBmYWxzZSlcblxubGV0IHNob3VsZF9pZ25vcmUgbG9jIGF0dHJzID1cbiAgKCogSWYgdGhlIGZpbGVuYW1lIGNoYW5nZWQsIHRoZW4gdGhlcmUgd2VyZSBsaW5lIGRpcmVjdGl2ZXMsIGFuZCB0aGUgbG9jYXRpb25zXG4gICAgIGFyZSBhbGwgbWVzc2VkIHVwLiAqKVxuICAobm90IChzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSkpXG4gIHx8ICgqIElnbm9yZSB0aGluZ3MgZXhwbGljaXRseSBtYXJrZWQuICopXG4gIExpc3QuZXhpc3RzXG4gICAgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBTdHJpbmcuZXF1YWwgYXR0ci5hdHRyX25hbWUudHh0XG4gICAgICAgIE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlLmF0dHJfbmFtZS50eHQpXG4gICAgYXR0cnNcblxubGV0IHJlYyBleHRyYWN0X2NvbnN0cmFpbnQgZSA9XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSB8IFBleHBfY29lcmNlIChlLCBfLCBjdCkgLT4gU29tZSAoZSwgY3QpXG4gIHwgUGV4cF9uZXd0eXBlIChuYW1lLCBleHApIC0+XG4gICAgICBPcHRpb24ubWFwIChleHRyYWN0X2NvbnN0cmFpbnQgZXhwKSB+ZjooZnVuIChleHAsIGN0KSAtPlxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlIChuYW1lLCBleHApO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdCApKVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZG9fY2hlY2sgfm5vZGVfbmFtZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzID1cbiAgaWYgbm90ICFzYW1lX2ZpbGVfc29fZmFyIHRoZW4gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgZWxzZSBpZiBub2RlX2xvYy5sb2NfZ2hvc3QgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnVuaW9uIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcbiAgZWxzZSBpZiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5jb3ZlcmVkX2J5IGNoaWxkcmVuc19sb2NzIH5sb2M6bm9kZV9sb2MgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lIG5vZGVfbG9jIHNpYmxpbmdzX2xvY3NcbiAgZWxzZVxuICAgIGxldCBjaGlsZF9uYW1lLCBjaGlsZF9sb2MgPVxuICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZmluZF9vdXRzaWRlIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgaW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweDpAIHRoaXMgJXMgaXMgYnVpbHQgZnJvbSBhJXMgd2hvc2UgbG9jYXRpb24gaXMgXFxcbiAgICAgICBvdXRzaWRlIG9mIHRoaXMgbm9kZSdzLkAuQ2hpbGQgJXMgZm91bmQgYXQ6QCAlYVwiXG4gICAgICBub2RlX25hbWVcbiAgICAgICgobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgY2hpbGRfbmFtZSAwIHdpdGhcbiAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyAtPiBcIm4gXCJcbiAgICAgICB8IF8gLT4gXCIgXCIpXG4gICAgICBeIGNoaWxkX25hbWUpXG4gICAgICBjaGlsZF9uYW1lIExvY2F0aW9uLnByaW50IGNoaWxkX2xvY1xuXG5sZXQgZW5mb3JjZV9pbnZhcmlhbnRzIGZuYW1lID1cbiAgbGV0ICgpID0gZmlsZSA6PSBmbmFtZSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICgqIFRPRE86IHdlIHNob3VsZCBnZW5lcmF0ZSBhIGNsYXNzIHdoaWNoIGVuZm9yY2VzIHRoZSBsb2NhdGlvbiBpbnZhcmlhbnQuXG4gICAgICAgQW5kIHRoZW4gd2Ugc2hvdWxkIG9ubHkgb3ZlcnJpZGUgdGhlIG1ldGhvZHMgd2hlcmUgd2UgbmVlZCBhbiBlc2NhcGVcbiAgICAgICBoYXRjaCBiZWNhdXNlIHRoZSBwYXJzZXIgaXNuJ3QgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLlxuXG4gICAgICAgVGhhdCB3b3VsZCBlbnN1cmUgdGhhdCB3ZSBzdGF5IHVwIHRvIGRhdGUgYXMgdGhlIEFTVCBjaGFuZ2VzLiAqKVxuXG4gICAgbWV0aG9kISBsb25naWRlbnRfbG9jIHggc2libGluZ3MgPVxuICAgICAgaWYgeC5sb2MubG9jX2dob3N0IHRoZW4gc2libGluZ3NcbiAgICAgIGVsc2UgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWU6XCJpZGVudFwiIHgubG9jIHNpYmxpbmdzXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnByZl9sb2MgeC5wcmZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjcm93X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInJvdyBmaWVsZFwiIHgucHJmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9iamVjdF9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvZl9sb2MgeC5wb2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvYmplY3RfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib2JqZWN0IGZpZWxkXCIgeC5wb2ZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBiaW5kaW5nX29wIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNiaW5kaW5nX29wIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJiaW5kaW5nIG9wZXJhdG9yXCIgeC5wYm9wX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZhbF9sb2MgeC5wdmFsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgZGVzY3JpcHRpb25cIiB4LnB2YWxfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cGVfbG9jIHgucHR5cGVfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZGVjbGFyYXRpb25cIiB4LnB0eXBlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbGRfbG9jIHgucGxkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibGFiZWwgZGVjbGFyYXRpb25cIiB4LnBsZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNkX2xvYyB4LnBjZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCIgeC5wY2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4dF9sb2MgeC5wdHlleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGV4dGVuc2lvblwiIHgucHR5ZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4dF9sb2MgeC5wZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiIHgucGV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3R5X2xvYyB4LnBjdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlXCIgeC5wY3R5X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3RmX2xvYyB4LnBjdGZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGUgZmllbGRcIiB4LnBjdGZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNpX2xvYyB4LnBjaV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3NcIiB4LnBjaV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNsX2xvYyB4LnBjbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc19leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGV4cHJlc3Npb25cIiB4LnBjbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNmX2xvYyB4LnBjZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGZpZWxkXCIgeC5wY2ZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc2lnX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzaWduYXR1cmUgaXRlbVwiIHgucHNpZ19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtZF9sb2MgeC5wbWRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGRlY2xhcmF0aW9uXCIgeC5wbWRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1zX2xvYyB4LnBtc19hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9zdWJzdGl0dXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHN1YnN0aXR1dGlvblwiIHgucG1zX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXRkX2xvYyB4LnBtdGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiIHgucG10ZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9wZW5faW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvcGVuX2xvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb3Blbl9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9wZW5cIiB4LnBvcGVuX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBpbmNsX2xvYyB4LnBpbmNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImluY2x1ZGVcIiB4LnBpbmNsX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHN0cl9sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic3RydWN0dXJlIGl0ZW1cIiB4LnBzdHJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtYl9sb2MgeC5wbWJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgYmluZGluZ1wiIHgucG1iX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgKilcbiAgICAoKiB0aGUgdHlwZSBjb25zdHJhaW50IGlzIGR1cGxpY2F0ZWQuICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmJfbG9jIHgucHZiX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgbWF0Y2ggKHgucHZiX3BhdC5wcGF0X2Rlc2MsIGV4dHJhY3RfY29uc3RyYWludCB4LnB2Yl9leHByKSB3aXRoXG4gICAgICAgICAgKCogbGV0IHggOiB0eXBlIGEgYiBjLiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfIDo6IF8sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAoKiBsZXQgeCA6ICBjdCA9IGVcbiAgICAgICAgICAgICBsZXQgeCA6PiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50IChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoW10sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdHAucHR5cF9sb2MgY3RlLnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgX2FjYyA9IHNlbGYjY29yZV90eXBlIGN0cCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjdmFsdWVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBiaW5kaW5nXCIgeC5wdmJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1UIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgdHlwZS4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSB0eXBlLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG10eV9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHgucG10eV9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlXCIgeC5wbXR5X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNRSBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIGV4cHIuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgZXhwci4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHJfZGVzYyB4LnBtb2RfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZXhwcmVzc2lvblwiIHgucG1vZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgeC5wdHlwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29yZSB0eXBlXCIgeC5wdHlwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogQW5kIGFnYWluIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNleHByZXNzaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgeC5wZXhwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhwcmVzc2lvblwiIHgucGV4cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIC4uLiBhbmQgYWdhaW4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjcGF0dGVybiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHgucHBhdF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInBhdHRlcm5cIiB4LnBwYXRfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgICopXG4gICAgKCogdGhlIGNvbnN0cnVjdCBlcXVhbHMgdGhlIGxvY2F0aW9uIG9mIHRoZSB0eXBlX2V4Y2VwdGlvbiAqKVxuICAgICgqIChhbmQgc28gY292ZXJzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYXR0cmlidXRlcykuICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXhuX2xvYyB4LnB0eWV4bl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgaW5pdCA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGxldCBjaGlsZHNfbG9jcyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgeC5wdHlleG5fY29uc3RydWN0b3IgaW5pdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cnNfbG9jcyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzIGluaXQgaW5cbiAgICAgICAgaWdub3JlXG4gICAgICAgICAgKGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgYXR0cnNfbG9jcyBzaWJsaW5nc19sb2NzKTtcbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBjaGlsZHNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgKilcbiAgICAoKiBsaHMgaXMgc29tZXRpbWVzIGluY2x1ZGVkIGluIHRoZSByaHMuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQd2l0aF90eXBlIChfLCB0ZGVjbCkgfCBQd2l0aF90eXBlc3Vic3QgKF8sIHRkZWNsKSAtPlxuICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiB0ZGVjbCBzaWJsaW5nc19sb2NcbiAgICAgIHwgXyAtPiBzdXBlciN3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6KilcbiAgICAoKiAtIEZvby57IGJhcjsgLi4uIH0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLlsgYmFyOyAuLi4gXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uKCBiYXI7IC4uLiApICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIG1ldGhvZCB4IDogdHlwZSBhLiAuLi4gPSAuLi4gICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpIDwtIGJheiAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdIDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9yZWNvcmQgKGxhYmVscywgZXhwcl9vKSAtPlxuICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGxpZCwgZSkgYWNjIC0+XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgZS5wZXhwX2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAoKiBwdW5uaW5nLiAqKVxuICAgICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gZXhwcl9vIGFjY1xuICAgICAgfCBQZXhwX29wZW5cbiAgICAgICAgICAoKHsgcG9wZW5fZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9pZGVudCBsaWQ7IF8gfTsgXyB9IGFzIG9wbiksIGUpXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnQgPSAwXG4gICAgICAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2NfZW5kIGUucGV4cF9sb2MubG9jX2VuZCA8PiAwIC0+XG4gICAgICAgICAgKCogbGV0J3MgcmVsb2NhdGUgLi4uICopXG4gICAgICAgICAgbGV0IGVfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX3N0YXJ0ID0gbGlkLmxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICBzdXBlciNleHByZXNzaW9uX2Rlc2NcbiAgICAgICAgICAgIChQZXhwX29wZW4gKG9wbiwgeyBlIHdpdGggcGV4cF9sb2MgPSBlX2xvYyB9KSlcbiAgICAgICAgICAgIGFjY1xuICAgICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8sIGN0KTsgXyB9KSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZXh0cmFjdF9jb25zdHJhaW50IGUgd2l0aFxuICAgICAgICAgIHwgU29tZSAoZSwgY3RlKSB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RlLnB0eXBfbG9jIGN0LnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgUGV4cF9hcHBseSAoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gbGlkOyBfIH07IF8gfSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIExvbmdpZGVudC5sYXN0X2V4biBsaWQgd2l0aFxuICAgICAgICAgIHwgaWRcbiAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCBpZCB+cHJlZml4OlwiLlwiXG4gICAgICAgICAgICAgICAgICYmIChTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9PC1cIikgLT5cbiAgICAgICAgICAgICAgc2VsZiNsaXN0IChmdW4gKF8sIGUpIC0+IHNlbGYjZXhwcmVzc2lvbiBlKSBhcmdzIGFjY1xuICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiAgICAgICAgICAgICAqKVxuICAgICgqIC0gcHVubmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gcmVjb3JkIGZpZWxkIHdpdGggdHlwZSBjb25zdHJhaW50LiAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gdW5wYWNrIGxvY2F0aW9ucyBiZWluZyBpbmNvcnJlY3Qgd2hlbiBjb25zdHJhaW5lZCAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfcmVjb3JkIChsYWJlbHMsIF8pIC0+XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChsaWQsIHBhdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgcGF0LnBwYXRfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIHBhdC5wcGF0X2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgKCogc2ltcGxlIHB1bm5pbmchICopXG4gICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwIGFjY1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHBhdCBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGF0IGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh7IHBwYXRfZGVzYyA9IFBwYXRfdW5wYWNrIGE7IF8gfSwgYikgLT5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIGZha2Ugc3RydWN0dXJlIGZvciBhIGdlbmVyYXRpdmUgYXJndW1lbnQgY292ZXJzIHRoZSAgICAgKilcbiAgICAoKiBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2FwcGx5IChtLCB7IHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdOyBwbW9kX2xvYzsgXyB9KVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIG0ucG1vZF9sb2MubG9jX3N0YXJ0IHBtb2RfbG9jLmxvY19zdGFydCA9IDAgLT5cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciBtIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogb3Blbl9pbmZvcyBmb3IgUGNsX29wZW4gb25seSBjb3ZlcnMgdGhlIFwib3BlblwiIGtleXdvcmQgICopXG4gICAgKCogYW5kIG5vdCB0aGUgbW9kdWxlIG9wZW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfb3BlbiAob2QsIGNlKSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgY2UgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X29wZW4gKG9kLCBjdCkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGN0IGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgZG9jc3RyaW5ncyBoYXZlICAgICopXG4gICAgKCogdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhlIGl0ZW0gdGhleSBnZXQgYXR0YWNoZWQgdG8uICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB4IGFjYyA9XG4gICAgICBtYXRjaCB4LmF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLmRvY1wiIHwgXCJvY2FtbC50ZXh0XCIgLT4gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjYXR0cmlidXRlIHggYWNjXG4gIGVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgQXJnID0gU3RkbGliLkFyZ1xuXG5sZXQgZXhlX25hbWUgPSBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgU3RkbGliLlN5cy5leGVjdXRhYmxlX25hbWVcbmxldCBhcmdzID0gcmVmIFtdXG5sZXQgYWRkX2FyZyBrZXkgc3BlYyB+ZG9jID0gYXJncyA6PSAoa2V5LCBzcGVjLCBkb2MpIDo6ICFhcmdzXG5sZXQgbG9jX2ZuYW1lID0gcmVmIE5vbmVcbmxldCBwZXJmb3JtX2NoZWNrcyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzXG5sZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnNcbmxldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA9IHJlZiBPcHRpb25zLnBlcmZvcm1fbG9jYXRpb25zX2NoZWNrXG5sZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AgPSByZWYgZmFsc2VcbmxldCBhcHBseV9saXN0ID0gcmVmIE5vbmVcbmxldCBwcmVwcm9jZXNzb3IgPSByZWYgTm9uZVxubGV0IG5vX21lcmdlID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF9wYXNzZXMgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyA9IHJlZiBmYWxzZVxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE9wdGlvbnMuZGlmZl9jb21tYW5kXG5sZXQgcHJldHR5ID0gcmVmIGZhbHNlXG5sZXQgc3R5bGVyID0gcmVmIE5vbmVcbmxldCBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgPSByZWYgTm9uZVxubGV0IGNvcnJlY3RlZF9zdWZmaXggPSByZWYgXCIucHB4LWNvcnJlY3RlZFwiXG5cbmxldCBnaG9zdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgIG1ldGhvZCEgbG9jYXRpb24gbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgZW5kXG5cbmxldCBjaG9wX3ByZWZpeCB+cHJlZml4IHggPVxuICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXggeCB0aGVuXG4gICAgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHggKFN0cmluZy5sZW5ndGggcHJlZml4KSlcbiAgZWxzZSBOb25lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoIChsb2MgOiBMb2NhdGlvbi50KSA9XG4gIGxldCBmbmFtZSA9IGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lIGluXG4gIG1hdGNoIGNob3BfcHJlZml4IH5wcmVmaXg6XCIuL1wiIGZuYW1lIHdpdGhcbiAgfCBTb21lIGZuYW1lIC0+IGZuYW1lXG4gIHwgTm9uZSAtPiBmbmFtZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zdHIgOiBzdHJ1Y3R1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc3RyX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc2lnIDogc2lnbmF0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHNpZ19sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbm1vZHVsZSBMaW50X2Vycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9IExvY2F0aW9uLnQgKiBzdHJpbmdcblxuICBsZXQgb2Zfc3RyaW5nIGxvYyBzID0gKGxvYywgcylcbmVuZFxuXG5tb2R1bGUgQ29va2llcyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUXG5cbiAgbGV0IGdpdmVuX3Rocm91Z2hfY2xpID0gcmVmIFtdXG5cbiAgbGV0IGdldCBUIG5hbWUgcGF0dGVybiA9XG4gICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2UgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG5cbiAgbGV0IGdldF9yZXMgVCBuYW1lIHBhdHRlcm4gPVxuICAgIG1hdGNoXG4gICAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoT2sgZSkgLT4gT2sgKFNvbWUgZSlcbiAgICB8IFNvbWUgKEVycm9yIGUpIC0+IEVycm9yIGVcblxuICBsZXQgc2V0IFQgbmFtZSBleHByID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLnNldF9jb29raWUgbmFtZSAoU2VsZWN0ZWRfYXN0LnRvX29jYW1sIEV4cHJlc3Npb24gZXhwcilcblxuICBsZXQgaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9oYW5kbGVyIGYgPSBoYW5kbGVycyA6PSAhaGFuZGxlcnMgQCBbIGYgXVxuXG4gIGxldCBhZGRfc2ltcGxlX2hhbmRsZXIgbmFtZSBwYXR0ZXJuIH5mID1cbiAgICBhZGRfaGFuZGxlciAoZnVuIFQgLT4gZiAoZ2V0IFQgbmFtZSBwYXR0ZXJuKSlcblxuICBsZXQgYWNrbm93bGVkZ2VfY29va2llcyBUID0gTGlzdC5pdGVyICFoYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuICBsZXQgcG9zdF9oYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX3Bvc3RfaGFuZGxlciBmID0gcG9zdF9oYW5kbGVycyA6PSAhcG9zdF9oYW5kbGVycyBAIFsgZiBdXG4gIGxldCBjYWxsX3Bvc3RfaGFuZGxlcnMgVCA9IExpc3QuaXRlciAhcG9zdF9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuZW5kXG5cbm1vZHVsZSBJbnN0cnVtZW50ID0gc3RydWN0XG4gIHR5cGUgcG9zID0gQmVmb3JlIHwgQWZ0ZXJcblxuICB0eXBlIHQgPSB7XG4gICAgdHJhbnNmb3JtYXRpb24gOlxuICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQ7XG4gICAgcG9zaXRpb24gOiBwb3M7XG4gIH1cblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgICAgbGV0IHRyYW5zZm9ybWF0aW9uIGN0eCBzdCA9IHJldHVybiAodHJhbnNmb3JtYXRpb24gY3R4IHN0KSBpblxuICAgICAgeyB0cmFuc2Zvcm1hdGlvbjsgcG9zaXRpb24gfVxuICBlbmRcblxuICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBfIHN0ID0gdHJhbnNmb3JtYXRpb24gc3QgaW5cbiAgICBWMi5tYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvblxuZW5kXG5cbm1vZHVsZSBUcmFuc2Zvcm0gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgYWxpYXNlcyA6IHN0cmluZyBsaXN0O1xuICAgIGltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlICogUGFyc2V0cmVlLnN0cnVjdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgKiBQYXJzZXRyZWUuc2lnbmF0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGluc3RydW1lbnQgOiBJbnN0cnVtZW50LnQgb3B0aW9uO1xuICAgIHJ1bGVzIDogQ29udGV4dF9mcmVlLlJ1bGUudCBsaXN0O1xuICAgIHJlZ2lzdGVyZWRfYXQgOiBDYWxsZXJfaWQudDtcbiAgfVxuXG4gIGxldCBoYXNfbmFtZSB0IG5hbWUgPVxuICAgIFN0cmluZy5lcXVhbCBuYW1lIHQubmFtZSB8fCBMaXN0LmV4aXN0cyB+ZjooU3RyaW5nLmVxdWFsIG5hbWUpIHQuYWxpYXNlc1xuXG4gIGxldCBhbGwgOiB0IGxpc3QgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHByaW50X2NhbGxlcl9pZCBvYyAoY2FsbGVyX2lkIDogQ2FsbGVyX2lkLnQpID1cbiAgICBtYXRjaCBjYWxsZXJfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRwdXRfc3RyaW5nIG9jIFwiPHVua25vd24gbG9jYXRpb24+XCJcbiAgICB8IFNvbWUgbG9jIC0+IFByaW50Zi5mcHJpbnRmIG9jIFwiJXM6JWRcIiBsb2MuZmlsZW5hbWUgbG9jLmxpbmVfbnVtYmVyXG5cbiAgbGV0IHJlZ2lzdGVyID8oZXh0ZW5zaW9ucyA9IFtdKSA/KHJ1bGVzID0gW10pID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuICAgICAgP2luc3RydW1lbnQgPyhhbGlhc2VzID0gW10pIG5hbWUgPVxuICAgIGxldCBydWxlcyA9IExpc3QubWFwIGV4dGVuc2lvbnMgfmY6Q29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIEAgcnVsZXMgaW5cbiAgICBsZXQgY2FsbGVyX2lkID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbIFN0ZGxpYi5fX0ZJTEVfXyBdIGluXG4gICAgKG1hdGNoIExpc3QuZmlsdGVyICFhbGwgfmY6KGZ1biBjdCAtPiBoYXNfbmFtZSBjdCBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgY3QgOjogXyAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIldhcm5pbmc6IGNvZGUgdHJhbnNmb3JtYXRpb24gJXMgcmVnaXN0ZXJlZCB0d2ljZS5cXG5cIlxuICAgICAgICAgIG5hbWU7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIGZpcnN0IHRpbWUgd2FzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkXG4gICAgICAgICAgY3QucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gc2Vjb25kIHRpbWUgaXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWQgY2FsbGVyX2lkKTtcbiAgICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgY3QgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBhbGlhc2VzO1xuICAgICAgICBydWxlcztcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGltcGw7XG4gICAgICAgIGludGY7XG4gICAgICAgIGxpbnRfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGY7XG4gICAgICAgIGxpbnRfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudDtcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IGNhbGxlcl9pZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGFsbCA6PSBjdCA6OiAhYWxsXG5cbiAgbGV0IHJlYyBsYXN0IHByZXYgbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGxvY19vZl9saXN0IH5nZXRfbG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBmaXJzdCA6IExvY2F0aW9uLnQgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgbGV0IGxhc3QgPSBnZXRfbG9jIChsYXN0IHggbCkgaW5cbiAgICAgICAgU29tZSB7IGZpcnN0IHdpdGggbG9jX2VuZCA9IGxhc3QubG9jX2VuZCB9XG5cbiAgbGV0IG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIHQgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWUgPVxuICAgIGxldCB7IHJ1bGVzOyBlbmNsb3NlX2ltcGw7IGVuY2xvc2VfaW50ZjsgaW1wbDsgaW50ZjsgXyB9ID0gdCBpblxuICAgIGxldCBtYXAgPVxuICAgICAgbmV3IENvbnRleHRfZnJlZS5tYXBfdG9wX2Rvd25cbiAgICAgICAgcnVsZXMgfmVtYmVkX2Vycm9ycyB+Z2VuZXJhdGVkX2NvZGVfaG9vazpob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgIGluXG4gICAgbGV0IGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBjb250ZXh0IHdob2xlX2xvYyBmID1cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9IGYgd2hvbGVfbG9jIGluXG4gICAgICAobWF0Y2ggd2hvbGVfbG9jIHdpdGhcbiAgICAgIHwgU29tZSAobG9jIDogTG9jYXRpb24udCkgLT4gKFxuICAgICAgICAgIGxldCBsb2NfaGVhZGVyID0geyBsb2Mgd2l0aCBsb2NfZW5kID0gbG9jLmxvY19zdGFydCB9IGluXG4gICAgICAgICAgbGV0IGxvY19mb290ZXIgPSB7IGxvYyB3aXRoIGxvY19zdGFydCA9IGxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICAobWF0Y2ggaGVhZGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19oZWFkZXIgKE1hbnkgaGVhZGVyKSk7XG4gICAgICAgICAgbWF0Y2ggZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19mb290ZXIgKE1hbnkgZm9vdGVyKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggaGVhZGVyIEAgZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBob29rLmYgY29udGV4dCBsb2MgKE1hbnkgbCkpKTtcbiAgICAgIChoZWFkZXIsIGZvb3RlcilcbiAgICBpblxuICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZSB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgIGluXG4gICAgbGV0IG1hcF9pbXBsIGN0eHQgc3Rfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHN0ID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzdF93aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ltcGwgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzdCB+Z2V0X2xvYzooZnVuIHN0IC0+IHN0LlBhcnNldHJlZS5wc3RyX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU3RydWN0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc3RydWN0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzdDsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHN0IC0+IG1hdGNoIGltcGwgd2l0aCBOb25lIC0+IHJldHVybiBzdCB8IFNvbWUgZiAtPiBmIGN0eHQgc3RcbiAgICBpblxuICAgIGxldCBtYXBfaW50ZiBjdHh0IHNnX3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzZyA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc2dfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbnRmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc2cgfmdldF9sb2M6KGZ1biBzZyAtPiBzZy5QYXJzZXRyZWUucHNpZ19sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFNpZ25hdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3NpZ25hdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc2c7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzZyAtPiBtYXRjaCBpbnRmIHdpdGggTm9uZSAtPiByZXR1cm4gc2cgfCBTb21lIGYgLT4gZiBjdHh0IHNnXG4gICAgaW5cbiAgICB7IHQgd2l0aCBpbXBsID0gU29tZSBtYXBfaW1wbDsgaW50ZiA9IFNvbWUgbWFwX2ludGYgfVxuXG4gIGxldCBidWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfmhvb2sgfnJ1bGVzIH5lbmNsb3NlX2ltcGwgfmVuY2xvc2VfaW50ZlxuICAgICAgfmlucHV0X25hbWUgPVxuICAgIG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5ob29rIH5pbnB1dF9uYW1lXG4gICAgICB7XG4gICAgICAgIG5hbWUgPSBcIjxidWlsdGluOmNvbnRleHQtZnJlZT5cIjtcbiAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOltdO1xuICAgICAgfVxuXG4gIGxldCBwYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIHRzID1cbiAgICBsZXQgYmVmb3JlX2luc3RycywgYWZ0ZXJfaW5zdHJzLCByZXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IHRzIH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChiZWZfaSwgYWZ0X2ksIHJlc3QpIHQgLT5cbiAgICAgICAgICBsZXQgcmVkdWNlZF90ID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdCB3aXRoXG4gICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZiBpbnN0ciA9XG4gICAgICAgICAgICAoaW5zdHIuSW5zdHJ1bWVudC5wb3NpdGlvbiwgaW5zdHIuSW5zdHJ1bWVudC50cmFuc2Zvcm1hdGlvbilcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIE9wdGlvbi5tYXAgdC5pbnN0cnVtZW50IH5mIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKEJlZm9yZSwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYmVmX2ksXG4gICAgICAgICAgICAgICAgYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgU29tZSAoQWZ0ZXIsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCBiZWZfaSxcbiAgICAgICAgICAgICAgICB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IE5vbmUgLT4gKGJlZl9pLCBhZnRfaSwgcmVkdWNlZF90IDo6IHJlc3QpKVxuICAgIGluXG4gICAgKCBgTGludGVyc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIHQubGludF9pbXBsIHx8IE9wdGlvbi5pc19zb21lIHQubGludF9pbnRmIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxsaW50OiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gdC5saW50X2ltcGw7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gdC5saW50X2ludGY7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBQcmVwcm9jZXNzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbXBsXG4gICAgICAgICAgICAgICB8fCBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW50ZlxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxwcmVwcm9jZXNzOiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IHQucHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSB0LnByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgIGBSZXN0IHJlc3QgKVxuZW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gPSBUcmFuc2Zvcm0ucmVnaXN0ZXJcblxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuICAgICAgPVxuICAgIGxldCBpbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgaW1wbCB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFN0cnVjdHVyZSlcbiAgICBpblxuICAgIGxldCBpbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgaW50ZiB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFNpZ25hdHVyZSlcbiAgICBpblxuICAgIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbmVuZFxuXG5sZXQgYWRkX2N0eHRfYXJnIChmIDogJ2EgLT4gJ2IpIDogRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdiID1cbiBmdW4gXyB4IC0+IGYgeFxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZiA/aW1wbFxuICAgID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ltcGwgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW50ZiA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbXBsID0gT3B0aW9uLm1hcCBsaW50X2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ludGYgPSBPcHRpb24ubWFwIGxpbnRfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW1wbCA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbnRmID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG5cbmxldCByZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIH5uYW1lID8oYWxpYXNlcyA9IFtdKSB+aW1wbCB+aW50ZiA9XG4gIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIG5hbWUgfmltcGwgfmludGYgfmFsaWFzZXNcbltAQHdhcm5pbmcgXCItMTZcIl1cbigqIFRoaXMgZnVuY3Rpb24gdHJpZ2dlcnMgYSB3YXJuaW5nIDE2IGFzIG9mIG9jYW1sIDQuMTIgKilcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZlxuXG5sZXQgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgbmFtZSB+b2xkX2Ryb3BwZWQgfm5ld19kcm9wcGVkID1cbiAgbGV0IHByaW50X2RpZmYgd2hhdCBhIGIgPVxuICAgIGxldCBkaWZmID1cbiAgICAgIExpc3QuZmlsdGVyIGEgfmY6KGZ1biAobmFtZSA6IF8gTG9jLnQpIC0+XG4gICAgICAgICAgbm90XG4gICAgICAgICAgICAoTGlzdC5leGlzdHMgYiB+ZjooZnVuIChuYW1lJyA6IF8gTG9jYXRpb24ubG9jKSAtPlxuICAgICAgICAgICAgICAgICBuYW1lLnR4dCA9PSBuYW1lJy50eHQpKSlcbiAgICBpblxuICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBkaWZmKSB0aGVuIChcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzICVzIGFmdGVyIGFwcGx5aW5nICVzOlxcblwiIHdoYXRcbiAgICAgICAgbmFtZTtcbiAgICAgIExpc3QuaXRlciBkaWZmIH5mOihmdW4geyBMb2NhdGlvbi50eHQ7IGxvYyB9IC0+XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiLSAlYTogJXNcXG5cIiBMb2NhdGlvbi5wcmludCBsb2MgdHh0KTtcbiAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIkAuXCIpXG4gIGluXG4gIHByaW50X2RpZmYgXCJkaXNhcHBlYXJlZFwiIG5ld19kcm9wcGVkIG9sZF9kcm9wcGVkO1xuICBwcmludF9kaWZmIFwicmVhcHBlYXJlZFwiIG9sZF9kcm9wcGVkIG5ld19kcm9wcGVkXG5cbmxldCBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgfmlucHV0X25hbWUgPVxuICBsZXQgY3RzID1cbiAgICBtYXRjaCAhYXBwbHlfbGlzdCB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QucmV2ICFUcmFuc2Zvcm0uYWxsXG4gICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgIExpc3QubWFwIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgICAgTGlzdC5maW5kICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICBpblxuICBsZXQgKCBgTGludGVycyBsaW50ZXJzLFxuICAgICAgICBgUHJlcHJvY2VzcyBwcmVwcm9jZXNzLFxuICAgICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgICAgYFJlc3QgY3RzICkgPVxuICAgIFRyYW5zZm9ybS5wYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIGN0c1xuICBpblxuICAoKiBBbGxvdyBvbmx5IG9uZSBwcmVwcm9jZXNzb3IgdG8gYXNzdXJlIGRldGVybWluaXN0aWMgb3JkZXIgKilcbiAgKGlmIExpc3QubGVuZ3RoIHByZXByb2Nlc3MgPiAxIHRoZW5cbiAgICAgbGV0IHBwID1cbiAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChMaXN0Lm1hcCBwcmVwcm9jZXNzIH5mOihmdW4gdCAtPiB0Lm5hbWUpKVxuICAgICBpblxuICAgICBsZXQgZXJyID1cbiAgICAgICBQcmludGYuc3ByaW50ZiBcIkF0IG1vc3Qgb25lIHByZXByb2Nlc3NvciBpcyBhbGxvd2VkLCB3aGlsZSBnb3Q6ICVzXCIgcHBcbiAgICAgaW5cbiAgICAgZmFpbHdpdGggZXJyKTtcbiAgbGV0IG1ha2VfZ2VuZXJpYyB0cmFuc2Zvcm1zID1cbiAgICBpZiAhbm9fbWVyZ2UgdGhlblxuICAgICAgTGlzdC5tYXAgdHJhbnNmb3Jtc1xuICAgICAgICB+ZjpcbiAgICAgICAgICAoVHJhbnNmb3JtLm1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfnRvb2xfbmFtZVxuICAgICAgICAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSlcbiAgICBlbHNlXG4gICAgICAobGV0IGdldF9lbmNsb3NlcnMgfmYgPVxuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBmIGN0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGN0Lm5hbWUsIHgpKVxuICAgICAgICAgKCogU29ydCB0aGVtIHRvIGVuc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyaW5nICopXG4gICAgICAgICB8PiBMaXN0LnNvcnQgfmNtcDooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKVxuICAgICAgICAgfD4gTGlzdC5tYXAgfmY6c25kXG4gICAgICAgaW5cblxuICAgICAgIGxldCBydWxlcyA9XG4gICAgICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LnJ1bGVzKVxuICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICBhbmQgaW1wbF9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbXBsKVxuICAgICAgIGFuZCBpbnRmX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ludGYpIGluXG4gICAgICAgbWF0Y2ggKHJ1bGVzLCBpbXBsX2VuY2xvc2VycywgaW50Zl9lbmNsb3NlcnMpIHdpdGhcbiAgICAgICB8IFtdLCBbXSwgW10gLT4gdHJhbnNmb3Jtc1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgICBsZXQgbWVyZ2VfZW5jbG9zZXIgPSBmdW5jdGlvblxuICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgIHwgZW5jbG9zZXJzIC0+XG4gICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAoZnVuIGN0eHQgbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycywgZm9vdGVycyA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwIGVuY2xvc2VycyB+ZjooZnVuIGYgLT4gZiBjdHh0IGxvYykgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzID0gTGlzdC5jb25jYXQgaGVhZGVycyBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGZvb3RlcnMgPSBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgZm9vdGVycykgaW5cbiAgICAgICAgICAgICAgICAgICAgIChoZWFkZXJzLCBmb290ZXJzKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgVHJhbnNmb3JtLmJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+cnVsZXMgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgIH5lbmNsb3NlX2ltcGw6KG1lcmdlX2VuY2xvc2VyIGltcGxfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH5lbmNsb3NlX2ludGY6KG1lcmdlX2VuY2xvc2VyIGludGZfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWVcbiAgICAgICAgICAgOjogdHJhbnNmb3JtcylcbiAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggKGN0LmltcGwsIGN0LmludGYpIHdpdGggTm9uZSwgTm9uZSAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgaW5cbiAgbGludGVycyBAIHByZXByb2Nlc3MgQCBiZWZvcmVfaW5zdHJzIEAgbWFrZV9nZW5lcmljIGN0cyBAIGFmdGVyX2luc3Ryc1xuXG5sZXQgYXBwbHlfdHJhbnNmb3JtcyB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmZpZWxkIH5saW50X2ZpZWxkIH5kcm9wcGVkX3NvX2ZhclxuICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzIGFzdCA9XG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH50b29sX25hbWUgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH5pbnB1dF9uYW1lXG4gIGluXG4gIGxldCBmaW5pc2ggKGFzdCwgX2Ryb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpID1cbiAgICAoIGFzdCxcbiAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzIH5mOihmdW4gKGxvYywgcykgLT5cbiAgICAgICAgICBDb21tb24uYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMpLFxuICAgICAgZXJyb3JzIClcbiAgaW5cbiAgbGV0IGFjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgY3RzIH5pbml0Oihhc3QsIFtdLCBbXSwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKGFzdCwgZHJvcHBlZCwgKGxpbnRfZXJyb3JzIDogXyBsaXN0KSwgZXJyb3JzKSAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aFxuICAgICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgICAgICAgIG1hdGNoIGxpbnRfZmllbGQgY3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAobGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSAobGludF9lcnJvcnMgQCBmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKGxpbnRfZXJyb3JzLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmaWVsZCBjdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IChhc3QsIG1vcmVfZXJyb3JzKSwgZXJyb3JzID1cbiAgICAgICAgICAgICAgdHJ5IChmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKChhc3QsIFtdKSwgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkcm9wcGVkID1cbiAgICAgICAgICAgICAgaWYgIWRlYnVnX2F0dHJpYnV0ZV9kcm9wIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBuZXdfZHJvcHBlZCA9IGRyb3BwZWRfc29fZmFyIGFzdCBpblxuICAgICAgICAgICAgICAgIGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIGN0Lm5hbWUgfm9sZF9kcm9wcGVkOmRyb3BwZWRcbiAgICAgICAgICAgICAgICAgIH5uZXdfZHJvcHBlZDtcbiAgICAgICAgICAgICAgICBuZXdfZHJvcHBlZClcbiAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMgQCBtb3JlX2Vycm9ycykpXG4gIGluXG4gIGZpbmlzaCBhY2NcblxuKCokKilcblxubGV0IGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH4oa2luZCA6IEtpbmQudCkgPVxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBJbnRmIC0+IEludGZfb3JfaW1wbC5JbnRmIFsgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciBdXG4gIHwgSW1wbCAtPiBJbnRmX29yX2ltcGwuSW1wbCBbIGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgXVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gfihraW5kIDogS2luZC50KSA9XG4gIGV4bl90b19sb2NfZXJyb3IgZXhuIHw+IGVycm9yX3RvX2V4dGVuc2lvbiB+a2luZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEFjdHVhbCByZXdyaXRpbmcgb2Ygc3RydWN0dXJlL3NpZ25hdHVyZXMgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBwcmludF9wYXNzZXMgKCkgPVxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhsaWJfZHJpdmVyXCIgaW5cbiAgbGV0IGVtYmVkX2Vycm9ycyA9IGZhbHNlIGluXG4gIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgICAgfmlucHV0X25hbWU6Tm9uZVxuICBpblxuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlblxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpmcmVzaGVuLWFuZC1jb2xsZWN0LWF0dHJpYnV0ZXM+XFxuXCI7XG4gIExpc3QuaXRlciBjdHMgfmY6KGZ1biBjdCAtPiBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5UcmFuc2Zvcm0ubmFtZSk7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWF0dHJpYnV0ZXM+XFxuXCI7XG4gICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1leHRlbnNpb25zPlxcblwiKVxuXG5sZXQgc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyA9XG4gIExpc3Quc29ydCBlcnJvcnMgfmNtcDooZnVuIGVycm9yIGVycm9yJyAtPlxuICAgICAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICAgICAgbGV0IGxvYycgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3InIGluXG4gICAgICBMb2NhdGlvbi5jb21wYXJlIGxvYyBsb2MnKVxuXG4oKiQqKVxuXG5sZXQgbWFwX3N0cnVjdHVyZV9nZW4gc3QgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3N0cnVjdHVyZSBzdCk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHN0ID1cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzdFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc3RcbiAgICBpblxuICAgIHN0XG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc3QgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3N0cnVjdHVyZV9pdGVtKVxuICAgIEAgc3RcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHN0ID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc3RydWN0dXJlIHN0XG4gICAgICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9ycylcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzdFxuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgbGV0IHN0LCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHN0IH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmltcGwpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ltcGwpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc3QgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9XG4gIG1hdGNoXG4gICAgbWFwX3N0cnVjdHVyZV9nZW4gc3RcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IG1hcF9zaWduYXR1cmVfZ2VuIHNnIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzaWduYXR1cmUgc2cpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzZyA9XG4gICAgbGV0IHNnID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc2dcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHNnXG4gICAgaW5cbiAgICBzZ1xuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHNnID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzaWduYXR1cmVfaXRlbSlcbiAgICBAIHNnXG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzZyA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnMpXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc2dcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gIGxldCBzZywgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzZyB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbnRmKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbnRmKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHNnIHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zaWduYXR1cmUgc2cgPVxuICBtYXRjaFxuICAgIG1hcF9zaWduYXR1cmVfZ2VuIHNnXG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQqKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEVudHJ5IHBvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzID1cbiAgbGV0IHRlc3QgbWFnaWNfbnVtYmVyID1cbiAgICBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDooU3RyaW5nLnN1YiBtYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgaW5cbiAgdGVzdCBBc3RfbWFnaWMuYXN0X2ludGZfbWFnaWNfbnVtYmVyIHx8IHRlc3QgQXN0X21hZ2ljLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG5sZXQgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGlucHV0X2ZpbGVfbmFtZSA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIG1zZyAtPlxuICAgICAgbGV0IGVyciA9XG4gICAgICAgIExvY2F0aW9uLkVycm9yLm1ha2UgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlX25hbWUpIG1zZyB+c3ViOltdXG4gICAgICBpblxuICAgICAgRXJyb3IgKGVyciwgaW5wdXRfdmVyc2lvbikpXG5cbmxldCByZW1vdmVfbm9fZXJyb3IgZm4gPSB0cnkgU3RkbGliLlN5cy5yZW1vdmUgZm4gd2l0aCBTeXNfZXJyb3IgXyAtPiAoKVxuXG5sZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgdiAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgdlxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICByYWlzZSBlXG5cbmxldCB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mID1cbiAgbWF0Y2ggIXByZXByb2Nlc3NvciB3aXRoXG4gIHwgTm9uZSAtPiBmIGZuXG4gIHwgU29tZSBwcCAtPlxuICAgICAgcHJvdGVjdHggKFN0ZGxpYi5GaWxlbmFtZS50ZW1wX2ZpbGUgXCJvY2FtbHBwXCIgXCJcIikgfmZpbmFsbHk6cmVtb3ZlX25vX2Vycm9yXG4gICAgICAgIH5mOihmdW4gdG1wZmlsZSAtPlxuICAgICAgICAgIG1hdGNoIFN5c3RlbS5ydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQ6Zm4gfm91dHB1dDp0bXBmaWxlIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IGYgdG1wZmlsZVxuICAgICAgICAgIHwgRXJyb3IgKGZhaWxlZF9jb21tYW5kLCBmYWxsX2JhY2tfdmVyc2lvbikgLT5cbiAgICAgICAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICAgICAgICAgIFwiRXJyb3Igd2hpbGUgcnVubmluZyBleHRlcm5hbCBwcmVwcm9jZXNzb3JcXG5Db21tYW5kIGxpbmU6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICBmYWlsZWRfY29tbWFuZClcblxubGV0IHJlbG9jYXRlX21hcHBlciA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyAqIHN0cmluZ10gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCEgcG9zaXRpb24gKG9sZF9mbiwgbmV3X2ZuKSBwb3MgPVxuICAgICAgaWYgU3RyaW5nLmVxdWFsIHBvcy5wb3NfZm5hbWUgb2xkX2ZuIHRoZW4geyBwb3Mgd2l0aCBwb3NfZm5hbWUgPSBuZXdfZm4gfVxuICAgICAgZWxzZSBwb3NcbiAgZW5kXG5cbigqIFNldCB0aGUgaW5wdXQgbmFtZSBnbG9iYWxseS4gVGhpcyBpcyB1c2VkIGJ5IHNvbWUgcHB4IHJld3JpdGVyc1xuICAgc3VjaCBhcyBiaXNlY3RfcHB4LiAqKVxubGV0IHNldF9pbnB1dF9uYW1lID0gQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9uYW1lXG5cbmxldCBsb2FkX2lucHV0IH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnJlbG9jYXRlIGZuID1cbiAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgbGV0IGlucHV0X3NvdXJjZSA9IGlmIFN0cmluZy5lcXVhbCBmbiBcIi1cIiB0aGVuIEFzdF9pby5TdGRpbiBlbHNlIEZpbGUgZm4gaW5cbiAgbGV0IGlucHV0X2tpbmQgPSBBc3RfaW8uUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSBpblxuICBtYXRjaCBBc3RfaW8ucmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdF9raW5kID0gSW50Zl9vcl9pbXBsLmtpbmQgYXN0IGluXG4gICAgICBpZiBub3QgKEtpbmQuZXF1YWwga2luZCBhc3Rfa2luZCkgdGhlblxuICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gZm5cbiAgICAgICAgICBcIkZpbGUgY29udGFpbnMgYSBiaW5hcnkgJXMgQVNUIGJ1dCBhbiAlcyB3YXMgZXhwZWN0ZWRcIlxuICAgICAgICAgIChLaW5kLmRlc2NyaWJlIGFzdF9raW5kKSAoS2luZC5kZXNjcmliZSBraW5kKVxuICAgICAgZWxzZSBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB8fCBub3QgcmVsb2NhdGUgdGhlbiAoXG4gICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICBPayAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIE9rXG4gICAgICAgICAgKCBpbnB1dF9uYW1lLFxuICAgICAgICAgICAgaW5wdXRfdmVyc2lvbixcbiAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKSApXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICBcIkZpbGUgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSlcbiAgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgRXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbilcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGZuID1cbiAgKCogSWYgdGhlcmUncyBhbiBlcnJvciB3aGlsZSBsb2FkaW5nIGluIHJ1bl9hc19wcHggbW9kZSwgdGhlIGtpbmQgb2YgQVNUIChpbXBsL2ludGYpIGlzIHN0aWxsIHVua25vd24uXG4gICAgIFRoYXQncyB3aHksIGFzIG9wcG9zZWQgdG8gbG9hZF9pbnB1dCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgZXJyb3JzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgcmVzdWx0OlxuICAgICBoYW5kbGluZyBhbiBlcnJvciBieSByZXR1cm5pbmcgYW4gQVNUIHdpdGggdGhlIGVycm9yIHBhY2tlZCBhcyBleHRlbnNpb24gbm9kZSB3b3VsZG4ndCBiZSBwb3NzaWJsZS4gKilcbiAgbWF0Y2ggQXN0X2lvLnJlYWQgKEZpbGUgZm4pIH5pbnB1dF9raW5kOkFzdF9pby5OZWNlc3NhcmlseV9iaW5hcnkgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICAgICAgYXN0XG4gICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgdGhlbiBhc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSlcbiAgICAgIGluXG4gICAgICAoKiBXaXRoIGAtLWFzLXBweGAsIG9jYW1sIGNhbGxzIHRoZSBzdGFuZGFsb25lIHNlcGFyYXRlbHkgZm9yIGV2ZXJ5IHN0cnVjdHVyZS9zaWduYXR1cmUgaXRlbVxuICAgICAgICAgd2l0aCB0aGUgZmlsZW5hbWUgYXMgbWV0YWRhdGEgdGhhdCBpdCBnZXRzIGZyb20gdGhlIHByZXZpb3VzIGNhbGwuIHJlbG9jYXRlX21hcHBlciBvbmx5XG4gICAgICAgICByZWxvY2F0ZXMgcG9zaXRpb25zIHdob3NlIHBvc2l0aW9uIGZpbGVuYW1lIGNvaW5jaWRlcyB3aXRoIHRoYXQgbWV0YWRhdGEgZmlsZW5hbWUuXG4gICAgICAgICBTbyBhbHdheXMgcmV0dXJuIHRoZSBtZXRhZGF0YSBmaWxlbmFtZSBpdHNlbGYsIGV2ZW4gaWYgYC1sb2MtZmlsZW5hbWVgIGlzIHByb3ZpZGVkLiAqKVxuICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgXykpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJUaGUgaW5wdXQgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiRXhwZWN0ZWQgYSBiaW5hcnkgQVNUIGFzIGlucHV0XCJcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgXykpIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIF8pKSAtPlxuICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmbiB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG5cbmxldCBsb2FkX3NvdXJjZV9maWxlIGZuID1cbiAgbGV0IHMgPSBJbl9jaGFubmVsLnJlYWRfYWxsIGZuIGluXG4gIGlmIHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgXCJwcHhsaWJfZHJpdmVyOiBjYW5ub3QgdXNlIC1yZWNvbmNpbGUgd2l0aCBiaW5hcnkgQVNUIGZpbGVzXCI7XG4gIHNcblxudHlwZSBvdXRwdXRfbW9kZSA9XG4gIHwgUHJldHR5X3ByaW50XG4gIHwgRHVtcF9hc3RcbiAgfCBEcGFyc2V0cmVlXG4gIHwgUmVjb25jaWxlIG9mIFJlY29uY2lsZS5tb2RlXG4gIHwgTnVsbFxuXG4oKiQqKVxubGV0IGV4dHJhY3RfY29va2llc19zdHIgc3QgPVxuICBsZXQgc3QgPVxuICAgIG1hdGNoIHN0IHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzdCAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU3RydWN0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3N0ciB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzdFxuICAgIHwgXyAtPiBzdFxuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHN0XG5cbmxldCBhZGRfY29va2llc19zdHIgc3QgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFN0cnVjdHVyZVxuICBpblxuICBwcmVmaXggQCBzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5sZXQgZXh0cmFjdF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBzZyA9XG4gICAgbWF0Y2ggc2cgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzaWdfZGVzYyA9XG4gICAgICAgICAgIFBzaWdfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHNnIC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTaWduYXR1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc2lnIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHNnXG4gICAgfCBfIC0+IHNnXG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc2dcblxubGV0IGFkZF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU2lnbmF0dXJlXG4gIGluXG4gIHByZWZpeCBAIHNnXG5cbigqJCopXG5cbmxldCBleHRyYWN0X2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoZXh0cmFjdF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChleHRyYWN0X2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBhZGRfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChhZGRfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoYWRkX2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBjb3JyZWN0aW9ucyA9IHJlZiBbXVxubGV0IGFkZF90b19saXN0IHIgeCA9IHIgOj0geCA6OiAhclxuXG5sZXQgcmVnaXN0ZXJfY29ycmVjdGlvbiB+bG9jIH5yZXBsID1cbiAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2VfdGV4dCAoKSB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZFxuICAgICAgIH5yZXBsKVxuXG5sZXQgcHJvY2Vzc19maWxlX2hvb2tzID0gcmVmIFtdXG5sZXQgcmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2sgZiA9IGFkZF90b19saXN0IHByb2Nlc3NfZmlsZV9ob29rcyBmXG5cbm1vZHVsZSBGaWxlX3Byb3BlcnR5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgICBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnQ7XG4gIH1cblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGFsbCA9IHJlZiBbXVxuICBsZXQgcmVnaXN0ZXIgdCA9IGFkZF90b19saXN0IGFsbCAoVCB0KVxuICBsZXQgcmVzZXRfYWxsICgpID0gTGlzdC5pdGVyICFhbGwgfmY6KGZ1biAoVCB0KSAtPiB0LmRhdGEgPC0gTm9uZSlcblxuICBsZXQgZHVtcF9hbmRfcmVzZXRfYWxsICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKExpc3QucmV2ICFhbGwpIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAgbWF0Y2ggdC5kYXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICAgIHQuZGF0YSA8LSBOb25lO1xuICAgICAgICAgICAgU29tZSAodC5uYW1lLCB0LnNleHBfb2ZfdCB2KSlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRlX2ZpbGVfcHJvcGVydHlcbiAgICAoTmFtZSA6IHNpZ1xuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmQpXG4gICAgKFQgOiBTZXhwYWJsZS5TKSA9XG5zdHJ1Y3RcbiAgbGV0IHQgOiBfIEZpbGVfcHJvcGVydHkudCA9XG4gICAgeyBuYW1lID0gTmFtZS5uYW1lOyBkYXRhID0gTm9uZTsgc2V4cF9vZl90ID0gVC5zZXhwX29mX3QgfVxuXG4gIGxldCAoKSA9IEZpbGVfcHJvcGVydHkucmVnaXN0ZXIgdFxuICBsZXQgc2V0IHggPSB0LmRhdGEgPC0gU29tZSB4XG5lbmRcblxubGV0IHByb2Nlc3NfYXN0IChhc3QgOiBJbnRmX29yX2ltcGwudCkgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9va1xuICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+ZW1iZWRfZXJyb3JzID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zaWduYXR1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW50ZiBhc3RcbiAgfCBJbXBsIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW1wbCBhc3RcblxubGV0IHByb2Nlc3NfZmlsZSAoa2luZCA6IEtpbmQudCkgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZVxuICAgIH5lbWJlZF9lcnJvcnMgfm91dHB1dCA9XG4gIEZpbGVfcHJvcGVydHkucmVzZXRfYWxsICgpO1xuICBMaXN0Lml0ZXIgKExpc3QucmV2ICFwcm9jZXNzX2ZpbGVfaG9va3MpIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgY29ycmVjdGlvbnMgOj0gW107XG4gIGxldCByZXBsYWNlbWVudHMgPSByZWYgW10gaW5cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4X2RyaXZlclwiIGluXG4gIGxldCBob29rIDogQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2sudCA9XG4gICAgbWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICAgIHwgUmVjb25jaWxlIChVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBmID1cbiAgICAgICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgICAgIGFkZF90b19saXN0IHJlcGxhY2VtZW50c1xuICAgICAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRXh0ZW5zaW9uIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6Z2VuZXJhdGVkKSk7XG4gICAgICAgIH1cbiAgICB8IF8gLT4gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA6IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci50ID1cbiAgICB7XG4gICAgICBmID1cbiAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihGbG9hdGluZ19hdHRyaWJ1dGUgY29udGV4dClcbiAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOihNYW55IGdlbmVyYXRlZCkpKTtcbiAgICB9XG4gIGluXG5cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9XG4gICAgbGV0IHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkID1cbiAgICAgIHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmY6KGxvYWRfaW5wdXQgfmtpbmQgfmlucHV0X25hbWUgfnJlbG9jYXRlKVxuICAgIGluXG4gICAgbWF0Y2ggcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgd2l0aFxuICAgIHwgT2sgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpIC0+IChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBleHRyYWN0X2Nvb2tpZXMgYXN0XG4gICAgICAgICAgICB8PiBwcm9jZXNzX2FzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kKSlcbiAgICB8IEVycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikgd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgKGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+a2luZClcbiAgICB8IEVycm9yIChlcnJvciwgXykgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuXG4gICAgICAgIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcbiAgaW5cbiAgT3B0aW9uLml0ZXIgIW91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSB+ZjooZnVuIGZuIC0+XG4gICAgICBsZXQgbWV0YWRhdGEgPSBGaWxlX3Byb3BlcnR5LmR1bXBfYW5kX3Jlc2V0X2FsbCAoKSBpblxuICAgICAgT3V0X2NoYW5uZWwud3JpdGVfYWxsIGZuXG4gICAgICAgIH5kYXRhOlxuICAgICAgICAgIChMaXN0Lm1hcCBtZXRhZGF0YSB+ZjooZnVuIChzLCBzZXhwKSAtPlxuICAgICAgICAgICAgICAgU2V4cC50b19zdHJpbmdfaHVtIChTZXhwLkxpc3QgWyBBdG9tIHM7IHNleHAgXSkgXiBcIlxcblwiKVxuICAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiKSk7XG5cbiAgbGV0IGlucHV0X2NvbnRlbnRzID0gbGF6eSAobG9hZF9zb3VyY2VfZmlsZSBmbikgaW5cbiAgbGV0IGNvcnJlY3RlZCA9IGZuIF4gIWNvcnJlY3RlZF9zdWZmaXggaW5cbiAgbGV0IG1pc21hdGNoZXNfZm91bmQgPVxuICAgIG1hdGNoICFjb3JyZWN0aW9ucyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgICBpZiBTdGRsaWIuU3lzLmZpbGVfZXhpc3RzIGNvcnJlY3RlZCB0aGVuIFN0ZGxpYi5TeXMucmVtb3ZlIGNvcnJlY3RlZDtcbiAgICAgICAgZmFsc2VcbiAgICB8IGNvcnJlY3Rpb25zIC0+XG4gICAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgY29ycmVjdGlvbnNcbiAgICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgICAgfm91dHB1dDooU29tZSBjb3JyZWN0ZWQpIH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZVxuICAgICAgICAgIH50YXJnZXQ6Q29ycmVjdGVkID9zdHlsZXI6IXN0eWxlciB+a2luZDtcbiAgICAgICAgdHJ1ZVxuICBpblxuXG4gIChtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gIHwgTnVsbCAtPiAoKVxuICB8IFByZXR0eV9wcmludCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gUHByaW50YXN0LnNpZ25hdHVyZSBwcGYgYXN0XG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBQcHJpbnRhc3Quc3RydWN0dXJlIHBwZiBhc3QpO1xuICAgICAgICAgIGxldCBudWxsX2FzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aCBJbnRmIFtdIHwgSW1wbCBbXSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IG51bGxfYXN0IHRoZW4gU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBEdW1wX2FzdCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgQXN0X2lvLndyaXRlIG9jXG4gICAgICAgICAgICB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgICAgICAgICB+YWRkX3BweF9jb250ZXh0OnRydWUpXG4gIHwgRHBhcnNldHJlZSAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIGxldCBhc3QgPSBhZGRfY29va2llcyBhc3QgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlIGFzdClcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlIGFzdCkpO1xuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgUmVjb25jaWxlIG1vZGUgLT5cbiAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgIXJlcGxhY2VtZW50c1xuICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgIH5vdXRwdXQgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lIH50YXJnZXQ6KE91dHB1dCBtb2RlKVxuICAgICAgICA/c3R5bGVyOiFzdHlsZXIgfmtpbmQpO1xuXG4gIGlmXG4gICAgbWlzbWF0Y2hlc19mb3VuZCAmJiBtYXRjaCAhZGlmZl9jb21tYW5kIHdpdGggU29tZSBcIi1cIiAtPiBmYWxzZSB8IF8gLT4gdHJ1ZVxuICB0aGVuIChcbiAgICBQcHhsaWJfcHJpbnRfZGlmZi5wcmludCAoKSB+ZmlsZTE6Zm4gfmZpbGUyOmNvcnJlY3RlZCB+dXNlX2NvbG9yOiF1c2VfY29sb3JcbiAgICAgID9kaWZmX2NvbW1hbmQ6IWRpZmZfY29tbWFuZDtcbiAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgb3V0cHV0X21vZGUgPSByZWYgUHJldHR5X3ByaW50XG5sZXQgb3V0cHV0ID0gcmVmIE5vbmVcbmxldCBraW5kID0gcmVmIE5vbmVcbmxldCBpbnB1dCA9IHJlZiBOb25lXG5sZXQgZW1iZWRfZXJyb3JzID0gcmVmIGZhbHNlXG5cbmxldCBzZXRfaW5wdXQgZm4gPVxuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT4gaW5wdXQgOj0gU29tZSBmblxuICB8IFNvbWUgXyAtPiByYWlzZSAoQXJnLkJhZCBcInRvbyBtYW55IGlucHV0IGZpbGVzXCIpXG5cbmxldCBzZXRfa2luZCBrID1cbiAgbWF0Y2ggIWtpbmQgd2l0aFxuICB8IFNvbWUgaycgd2hlbiBub3QgKEtpbmQuZXF1YWwgayBrJykgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwibXVzdCBzcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIC1pbXBsIG9yIC1pbnRmXCIpXG4gIHwgXyAtPiBraW5kIDo9IFNvbWUga1xuXG5sZXQgc2V0X291dHB1dF9tb2RlIG1vZGUgPVxuICBtYXRjaCAoIW91dHB1dF9tb2RlLCBtb2RlKSB3aXRoXG4gIHwgUHJldHR5X3ByaW50LCBfIC0+IG91dHB1dF9tb2RlIDo9IG1vZGVcbiAgfCBfLCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRHVtcF9hc3QsIER1bXBfYXN0IHwgRHBhcnNldHJlZSwgRHBhcnNldHJlZSAtPiAoKVxuICB8IFJlY29uY2lsZSBhLCBSZWNvbmNpbGUgYiB3aGVuIFBvbHkuZXF1YWwgYSBiIC0+ICgpXG4gIHwgeCwgeSAtPlxuICAgICAgbGV0IGFyZ19vZl9vdXRwdXRfbW9kZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IER1bXBfYXN0IC0+IFwiLWR1bXAtYXN0XCJcbiAgICAgICAgfCBEcGFyc2V0cmVlIC0+IFwiLWRwYXJzZXRyZWVcIlxuICAgICAgICB8IFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT4gXCItcmVjb25jaWxlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+IFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCJcbiAgICAgICAgfCBOdWxsIC0+IFwiLW51bGxcIlxuICAgICAgaW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzIGFuZCAlcyBhcmUgaW5jb21wYXRpYmxlXCIgKGFyZ19vZl9vdXRwdXRfbW9kZSB4KVxuICAgICAgICAgICAgICAoYXJnX29mX291dHB1dF9tb2RlIHkpKSlcblxubGV0IHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKSA9XG4gIExpc3QuaXRlciAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QubmFtZSlcblxubGV0IHBhcnNlX2FwcGx5X2xpc3QgcyA9XG4gIGxldCBuYW1lcyA9XG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIiB0aGVuIFtdIGVsc2UgU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicsJ1xuICBpblxuICBMaXN0Lml0ZXIgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICBpZlxuICAgICAgICBub3RcbiAgICAgICAgICAoTGlzdC5leGlzdHMgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoU3RkbGliLkFyZy5CYWRcbiAgICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJjb2RlIHRyYW5zZm9ybWF0aW9uICclcycgZG9lcyBub3QgZXhpc3RcIiBuYW1lKSkpO1xuICBuYW1lc1xuXG50eXBlIG1hc2sgPSB7XG4gIG11dGFibGUgYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG4gIG11dGFibGUgZG9udF9hcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbn1cblxubGV0IG1hc2sgPSB7IGFwcGx5ID0gTm9uZTsgZG9udF9hcHBseSA9IE5vbmUgfVxuXG5sZXQgaGFuZGxlX2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gICgqIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncyBtb3JlIGludHVpdGl2ZSAqKVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IG11c3QgYmUgY2FsbGVkIGJlZm9yZSAtZG9udC1hcHBseVwiKTtcbiAgbWFzay5hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBoYW5kbGVfZG9udF9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gIG1hc2suZG9udF9hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBpbnRlcnByZXRfbWFzayAoKSA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgfHwgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICBsZXQgc2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUgY3QgPVxuICAgICAgbGV0IGlzX2NhbmRpZGF0ZSA9XG4gICAgICAgIG1hdGNoIG1hc2suYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT4gTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdClcbiAgICAgIGluXG4gICAgICBsZXQgaXNfc2VsZWN0ZWQgPVxuICAgICAgICBtYXRjaCBtYXNrLmRvbnRfYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaXNfY2FuZGlkYXRlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICAgICAgaXNfY2FuZGlkYXRlICYmIG5vdCAoTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdCkpXG4gICAgICBpblxuICAgICAgaWYgaXNfc2VsZWN0ZWQgdGhlbiBTb21lIGN0Lm5hbWUgZWxzZSBOb25lXG4gICAgaW5cbiAgICBhcHBseV9saXN0IDo9XG4gICAgICBTb21lIChMaXN0LmZpbHRlcl9tYXAgIVRyYW5zZm9ybS5hbGwgfmY6c2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUpXG5cbmxldCBzZXRfY29va2llIHMgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonPScgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwiaW52YWxpZCBjb29raWUsIG11c3QgYmUgb2YgdGhlIGZvcm0gXFxcIjxuYW1lPj08ZXhwcj5cXFwiXCIpXG4gIHwgU29tZSAobmFtZSwgdmFsdWUpIC0+XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHZhbHVlIGluXG4gICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIjxjb21tYW5kLWxpbmU+XCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfTtcbiAgICAgIGxldCBleHByID0gUGFyc2UuZXhwcmVzc2lvbiBsZXhidWYgaW5cbiAgICAgIENvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgOj0gKG5hbWUsIGV4cHIpIDo6ICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpXG5cbmxldCBzaGFyZWRfYXJncyA9XG4gIFtcbiAgICAoIFwiLWxvYy1maWxlbmFtZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gbG9jX2ZuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIjxzdHJpbmc+IEZpbGUgbmFtZSB0byB1c2UgaW4gbG9jYXRpb25zXCIgKTtcbiAgICAoIFwiLXJlc2VydmUtbmFtZXNwYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlcy5yZXNlcnZlLFxuICAgICAgXCI8c3RyaW5nPiBNYXJrIHRoZSBnaXZlbiBuYW1lc3BhY2UgYXMgcmVzZXJ2ZWRcIiApO1xuICAgIChcIi1uby1jaGVja1wiLCBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3MsIFwiIERpc2FibGUgY2hlY2tzICh1bnNhZmUpXCIpO1xuICAgIChcIi1jaGVja1wiLCBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzLCBcIiBFbmFibGUgY2hlY2tzXCIpO1xuICAgICggXCItbm8tY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBEaXNhYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBFbmFibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLW5vLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRGlzYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBFbmFibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEFwcGx5IHRoZXNlIHRyYW5zZm9ybWF0aW9ucyBpbiBvcmRlciAoY29tbWEtc2VwYXJhdGVkIGxpc3QpXCIgKTtcbiAgICAoIFwiLWRvbnQtYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2RvbnRfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gRXhjbHVkZSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnNcIiApO1xuICAgICggXCItbm8tbWVyZ2VcIixcbiAgICAgIEFyZy5TZXQgbm9fbWVyZ2UsXG4gICAgICBcIiBEbyBub3QgbWVyZ2UgY29udGV4dCBmcmVlIHRyYW5zZm9ybWF0aW9ucyAoYmV0dGVyIGZvciBkZWJ1Z2dpbmcgXFxcbiAgICAgICByZXdyaXRlcnMpLiBBcyBhIHJlc3VsdCwgdGhlIGNvbnRleHQtZnJlZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIG5vdCBhbGwgXFxcbiAgICAgICBhcHBsaWVkIGJlZm9yZSBhbGwgaW1wbCBhbmQgaW50Zi5cIiApO1xuICAgIChcIi1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIk5BTUU9RVhQUiBTZXQgdGhlIGNvb2tpZSBOQU1FIHRvIEVYUFJcIik7XG4gICAgKFwiLS1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIiBTYW1lIGFzIC1jb29raWVcIik7XG4gIF1cblxubGV0ICgpID1cbiAgTGlzdC5pdGVyIHNoYXJlZF9hcmdzIH5mOihmdW4gKGtleSwgc3BlYywgZG9jKSAtPiBhZGRfYXJnIGtleSBzcGVjIH5kb2MpXG5cbmxldCBhc19wcCAoKSA9XG4gIHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdDtcbiAgZW1iZWRfZXJyb3JzIDo9IHRydWVcblxubGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gIFtcbiAgICAoIFwiLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgUnVuIGFzIGEgLXBweCByZXdyaXRlciAobXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnQpXCIgKTtcbiAgICAoIFwiLS1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBTYW1lIGFzIC1hcy1wcHhcIiApO1xuICAgIChcIi1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2hvcnRoYW5kIGZvcjogLWR1bXAtYXN0IC1lbWJlZC1lcnJvcnNcIik7XG4gICAgKFwiLS1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2FtZSBhcyAtYXMtcHBcIik7XG4gICAgKCBcIi1vXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXQgOj0gU29tZSBzKSxcbiAgICAgIFwiPGZpbGVuYW1lPiBPdXRwdXQgZmlsZSAodXNlICctJyBmb3Igc3Rkb3V0KVwiICk7XG4gICAgKFwiLVwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9pbnB1dCBcIi1cIiksIFwiIFJlYWQgaW5wdXQgZnJvbSBzdGRpblwiKTtcbiAgICAoIFwiLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBEdW1wIHRoZSBtYXJzaGFsZWQgYXN0IHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkIG9mIHByZXR0eS1wcmludGluZyBpdFwiXG4gICAgKTtcbiAgICAoIFwiLS1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgU2FtZSBhcyAtZHVtcC1hc3RcIiApO1xuICAgICggXCItZHBhcnNldHJlZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHBhcnNldHJlZSksXG4gICAgICBcIiBQcmludCB0aGUgcGFyc2V0cmVlIChzYW1lIGFzIG9jYW1sYyAtZHBhcnNldHJlZSlcIiApO1xuICAgICggXCItZW1iZWQtZXJyb3JzXCIsXG4gICAgICBBcmcuU2V0IGVtYmVkX2Vycm9ycyxcbiAgICAgIFwiIEVtYmVkIGVycm9ycyBpbiB0aGUgb3V0cHV0IEFTVCAoZGVmYXVsdDogdHJ1ZSB3aGVuIC1hcy1wcCwgZmFsc2UgXFxcbiAgICAgICBvdGhlcndpc2UpXCIgKTtcbiAgICAoIFwiLW51bGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIE51bGwpLFxuICAgICAgXCIgUHJvZHVjZSBubyBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJyb3JzXCIgKTtcbiAgICAoIFwiLWltcGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWwgZmlsZVwiICk7XG4gICAgKFwiLS1pbXBsXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksIFwiPGZpbGU+IFNhbWUgYXMgLWltcGxcIik7XG4gICAgKCBcIi1pbnRmXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1saSBmaWxlXCIgKTtcbiAgICAoXCItLWludGZcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW50ZlwiKTtcbiAgICAoIFwiLWRlYnVnLWF0dHJpYnV0ZS1kcm9wXCIsXG4gICAgICBBcmcuU2V0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wLFxuICAgICAgXCIgRGVidWcgYXR0cmlidXRlIGRyb3BwaW5nXCIgKTtcbiAgICAoIFwiLXByaW50LXRyYW5zZm9ybWF0aW9uc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyxcbiAgICAgIFwiIFByaW50IGxpbmtlZC1pbiBjb2RlIHRyYW5zZm9ybWF0aW9ucywgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGFwcGxpZWRcIiApO1xuICAgICggXCItcHJpbnQtcGFzc2VzXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfcGFzc2VzLFxuICAgICAgXCIgUHJpbnQgdGhlIGFjdHVhbCBwYXNzZXMgb3ZlciB0aGUgd2hvbGUgQVNUIGluIHRoZSBvcmRlciB0aGV5IGFyZSBcXFxuICAgICAgIGFwcGxpZWRcIiApO1xuICAgICggXCItaXRlLWNoZWNrXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiV2FybmluZzogdGhlIC1pdGUtY2hlY2sgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBoYXMgbm8gZWZmZWN0LlxcbiUhXCI7XG4gICAgICAgICAgRXh0cmFfd2FybmluZ3MuY2FyZV9hYm91dF9pdGVfYnJhbmNoIDo9IHRydWUpLFxuICAgICAgXCIgKG5vIGVmZmVjdCAtLSBrZXB0IGZvciBjb21wYXRpYmlsaXR5KVwiICk7XG4gICAgKCBcIi1wcFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gcHJlcHJvY2Vzc29yIDo9IFNvbWUgcyksXG4gICAgICBcIjxjb21tYW5kPiAgUGlwZSBzb3VyY2VzIHRocm91Z2ggcHJlcHJvY2Vzc29yIDxjb21tYW5kPiAoaW5jb21wYXRpYmxlIFxcXG4gICAgICAgd2l0aCAtYXMtcHB4KVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzKSksXG4gICAgICBcIiAoV0lQKSBQcmV0dHkgcHJpbnQgdGhlIG91dHB1dCB1c2luZyBhIG1peCBvZiB0aGUgaW5wdXQgc291cmNlIGFuZCB0aGUgXFxcbiAgICAgICBnZW5lcmF0ZWQgY29kZVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpKSxcbiAgICAgIFwiIChXSVApIHNhbWUgYXMgLXJlY29uY2lsZSBidXQgdXNlcyBjb21tZW50cyB0byBlbmNsb3NlIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgRG9uJ3QgdXNlIGNvbG9ycyB3aGVuIHByaW50aW5nIGVycm9yc1wiKTtcbiAgICAoIFwiLWRpZmYtY21kXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgIFwiIERpZmYgY29tbWFuZCB3aGVuIHVzaW5nIGNvZGUgZXhwZWN0YXRpb25zICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCIgKTtcbiAgICAoIFwiLXByZXR0eVwiLFxuICAgICAgQXJnLlNldCBwcmV0dHksXG4gICAgICBcIiBJbnN0cnVjdCBjb2RlIGdlbmVyYXRvcnMgdG8gaW1wcm92ZSB0aGUgcHJldHRpbmVzcyBvZiB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLXN0eWxlclwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzdHlsZXIgOj0gU29tZSBzKSwgXCIgQ29kZSBzdHlsZXJcIik7XG4gICAgKCBcIi1vdXRwdXQtbWV0YWRhdGFcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCJGSUxFIFdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgbWV0YWRhdGFcIiApO1xuICAgICggXCItY29ycmVjdGVkLXN1ZmZpeFwiLFxuICAgICAgQXJnLlNldF9zdHJpbmcgY29ycmVjdGVkX3N1ZmZpeCxcbiAgICAgIFwiU1VGRklYIFN1ZmZpeCB0byBhcHBlbmQgdG8gY29ycmVjdGVkIGZpbGVzXCIgKTtcbiAgXVxuXG5sZXQgZ2V0X2FyZ3MgPyhzdGFuZGFsb25lX2FyZ3MgPSBzdGFuZGFsb25lX2FyZ3MpICgpID1cbiAgc3RhbmRhbG9uZV9hcmdzIEAgTGlzdC5yZXYgIWFyZ3NcblxubGV0IHN0YW5kYWxvbmVfbWFpbiAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIFs8ZmlsZXM+XVwiIGV4ZV9uYW1lIGluXG4gIGxldCBhcmdzID0gZ2V0X2FyZ3MgKCkgaW5cbiAgQXJnLnBhcnNlIChBcmcuYWxpZ24gYXJncykgc2V0X2lucHV0IHVzYWdlO1xuICBpbnRlcnByZXRfbWFzayAoKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIHRoZW4gKFxuICAgIHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfcGFzc2VzIHRoZW4gKFxuICAgIHByaW50X3Bhc3NlcyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzOiBubyBpbnB1dCBmaWxlIGdpdmVuXFxuJSFcIiBleGVfbmFtZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBTb21lIGZuIC0+XG4gICAgICBsZXQga2luZCA9XG4gICAgICAgIG1hdGNoICFraW5kIHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgbWF0Y2ggS2luZC5vZl9maWxlbmFtZSBmbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgICAgICAgXCIlczogZG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJyVzJywgdXNlIC1pbXBsIG9yIC1pbnRmLlxcblwiXG4gICAgICAgICAgICAgICAgICBleGVfbmFtZSBmbjtcbiAgICAgICAgICAgICAgICBTdGRsaWIuZXhpdCAyKVxuICAgICAgaW5cbiAgICAgIGxldCBpbnB1dF9uYW1lLCByZWxvY2F0ZSA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aCBOb25lIC0+IChmbiwgZmFsc2UpIHwgU29tZSBmbiAtPiAoZm4sIHRydWUpXG4gICAgICBpblxuICAgICAgcHJvY2Vzc19maWxlIGtpbmQgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZTohb3V0cHV0X21vZGVcbiAgICAgICAgfm91dHB1dDohb3V0cHV0IH5lbWJlZF9lcnJvcnM6IWVtYmVkX2Vycm9yc1xuXG5sZXQgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuID1cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBpbnB1dF9mbiBpblxuICBsZXQgYXN0ID1cbiAgICB0cnlcbiAgICAgIGxldCBhc3QgPSBleHRyYWN0X2Nvb2tpZXMgYXN0IGluXG4gICAgICBsZXQgdG9vbF9uYW1lID0gQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkgaW5cbiAgICAgIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gICAgICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gICAgICBwcm9jZXNzX2FzdCBhc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgfmVtYmVkX2Vycm9yczp0cnVlXG4gICAgd2l0aCBleG4gLT4gZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQ6KEludGZfb3JfaW1wbC5raW5kIGFzdClcbiAgaW5cbiAgd2l0aF9vdXRwdXQgKFNvbWUgb3V0cHV0X2ZuKSB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgQXN0X2lvLndyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuXG5sZXQgcGFyc2VfaW5wdXQgcGFzc2VkX2luX2FyZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2cgPVxuICB0cnlcbiAgICBBcmcucGFyc2VfYXJndiBwYXNzZWRfaW5fYXJncyAoQXJnLmFsaWduIHZhbGlkX2FyZ3MpXG4gICAgICAoZnVuIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJhbm9ueW1vdXMgYXJndW1lbnRzIG5vdCBhY2NlcHRlZFwiKSlcbiAgICAgIGluY29ycmVjdF9pbnB1dF9tc2dcbiAgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IEFyZy5IZWxwIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDBcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBpbnB1dCA9XG4gIGxldCB2YWxpZF9hcmdzID0gZ2V0X2FyZ3MgfnN0YW5kYWxvbmVfYXJncyAoKSBpblxuICBtYXRjaCBMaXN0LnJldiBAQCBBcnJheS50b19saXN0IEBAIGlucHV0IHdpdGhcbiAgfCBvdXRwdXRfZm4gOjogaW5wdXRfZm4gOjogZmxhZ3NfYW5kX3Byb2dfbmFtZVxuICAgIHdoZW4gTGlzdC5sZW5ndGggZmxhZ3NfYW5kX3Byb2dfbmFtZSA+IDAgLT5cbiAgICAgIGxldCBwcm9nX25hbWVfYW5kX2ZsYWdzID0gTGlzdC5yZXYgZmxhZ3NfYW5kX3Byb2dfbmFtZSB8PiBBcnJheS5vZl9saXN0IGluXG4gICAgICBwYXJzZV9pbnB1dCBwcm9nX25hbWVfYW5kX2ZsYWdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgaW50ZXJwcmV0X21hc2sgKCk7XG4gICAgICByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm47XG4gICAgICBTdGRsaWIuZXhpdCAwXG4gIHwgWyBoZWxwOyBfIF0gd2hlbiBTdHJpbmcuZXF1YWwgaGVscCBcIi1oZWxwXCIgfHwgU3RyaW5nLmVxdWFsIGhlbHAgXCItLWhlbHBcIiAtPlxuICAgICAgcGFyc2VfaW5wdXQgaW5wdXQgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgfCBfIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIlVzYWdlOiAlc1xcbiUhXCIgdXNhZ2U7XG4gICAgICBTdGRsaWIuZXhpdCAyXG5cbmxldCBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgbGV0IHVzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzIC1hcy1wcHggW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lXG4gIGluXG4gIGxldCBhcmd2ID0gQXJyYXkubWFrZSAobiAtIDEpIFwiXCIgaW5cbiAgYXJndi4oMCkgPC0gU3RkbGliLlN5cy5hcmd2LigwKTtcbiAgZm9yIGkgPSAxIHRvIG4gLSAyIGRvXG4gICAgYXJndi4oaSkgPC0gU3RkbGliLlN5cy5hcmd2LihpICsgMSlcbiAgZG9uZTtcbiAgbGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gICAgTGlzdC5tYXAgc3RhbmRhbG9uZV9hcmdzIH5mOihmdW4gKGFyZywgc3BlYywgX2RvYykgLT5cbiAgICAgICAgKGFyZywgc3BlYywgXCIgVW51c2VkIHdpdGggLWFzLXBweFwiKSlcbiAgaW5cbiAgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGFyZ3ZcblxubGV0IHN0YW5kYWxvbmUgKCkgPVxuICBBc3RsaWIuaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCk7XG4gIHRyeVxuICAgIGlmXG4gICAgICBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2ID49IDJcbiAgICAgICYmXG4gICAgICBtYXRjaCBTdGRsaWIuU3lzLmFyZ3YuKDEpIHdpdGhcbiAgICAgIHwgXCItYXMtcHB4XCIgfCBcIi0tYXMtcHB4XCIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKClcbiAgICBlbHNlIHN0YW5kYWxvbmVfbWFpbiAoKTtcbiAgICBTdGRsaWIuZXhpdCAwXG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZSBpblxuICBsZXQgaW5wdXQgPSBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgdHJ5IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzOltdIH51c2FnZSBpbnB1dFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBwcmV0dHkgKCkgPSAhcHJldHR5XG5cbmxldCBlbmFibGVfY2hlY2tzICgpID1cbiAgKCogV2UgZG8gbm90IGVuYWJsZSB0aGUgbG9jYXRpb25zIGNoZWNrIGhlcmUsIHdlIGN1cnJlbnRseSByZXF1aXJlIHRoYXQgb25lXG4gICAgIHRvIGJlIHNwZWNpZmljYWxseSBlbmFibGVkLiAqKVxuICBwZXJmb3JtX2NoZWNrcyA6PSB0cnVlO1xuICBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIDo9IHRydWVcblxubGV0IGVuYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IHRydWVcbmxldCBkaXNhYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gZmFsc2VcbmxldCBtYXBfc3RydWN0dXJlIHN0ID0gbWFwX3N0cnVjdHVyZSBzdFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG5sZXQgdW5kZXJzY29yZV9iaW5kaW5nIGV4cCA9XG4gIGxldCBsb2MgPSBleHAucGV4cF9sb2MgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpIH5leHByOmV4cFxuXG5sZXQgdmFyc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvbmdpZGVudC50IExvY2F0ZWQudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdHQgYWNjID1cbiAgICAgIG1hdGNoIHBhdHQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF92YXIgdiAtPiBMb2NhdGVkLm1hcCAoZnVuIHZhciAtPiBMb25naWRlbnQuTGlkZW50IHZhcikgdiA6OiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdHQgYWNjXG4gIGVuZFxuXG4oKiBGb3IgZXZlcnkgW2xldCB4ID0gLi4uXSBzdHJ1Y3R1cmUgaXRlbSwgYWRkIGEgW2xldCBfID0geF0gKilcbmxldCBhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZSBzdCA9XG4gICAgICBsZXQgcmVjIGxvb3Agc3QgYWNjID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgICB8ICh7IHBzdHJfZGVzYyA9IFBzdHJfdmFsdWUgKF8sIHZicyk7IHBzdHJfbG9jID0gbG9jIH0gYXMgaXRlbSkgOjogcmVzdFxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgdmFycyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IHZicyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB2YiAtPlxuICAgICAgICAgICAgICAgICAgdmFyc19vZiNwYXR0ZXJuIHZiLnB2Yl9wYXQgYWNjKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpZ24gPVxuICAgICAgICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIHZhcnMgfmY6KGZ1biB2IC0+XG4gICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlX2JpbmRpbmcgKHBleHBfaWRlbnQgfmxvYzp2LmxvYyB2KSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbG9vcCByZXN0IChpZ24gQCAoaXRlbSA6OiBhY2MpKVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiBsb29wIHJlc3QgKGl0ZW0gOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKHN1cGVyI3N0cnVjdHVyZSBzdCkgW11cbiAgZW5kXG5cbmxldCBiaW5kc19tb2R1bGVfbmFtZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtib29sXSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBtYiBhY2MgPVxuICAgICAgbWF0Y2ggbWIucG1iX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIG1iIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjID1cbiAgICAgIG1hdGNoIG1kLnBtZF9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24gbXMgXyA9XG4gICAgICBtYXRjaCBtcy5wbXNfbmFtZS50eHQgd2l0aCAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuXG4gICAgbWV0aG9kISBmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgfCBOYW1lZCAobmFtZSwgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdW5wYWNrIG5hbWUgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGggU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZSB8IE5vbmUgLT4gYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGV4cHIgYWNjID1cbiAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIF8sIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjY1xuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxuKCogW2RvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGVdIC0tIElmIHRydWUsIGdlbmVyYXRlZCBjb2RlXG4gICBjb250YWlucyBjb21waWxlciBhdHRyaWJ1dGUgdG8gZGlzYWJsZSB1bnVzZWQgd2FybmluZ3MsIGluc3RlYWQgb2ZcbiAgIGluc2VydGluZyBbbGV0IF8gPSAuLi4gXS4gKilcbmxldCBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3czMl9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIGxldCBjb252X3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiY29kZVwiOyBcImF0dHJpYnV0ZVwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJjb2RlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSBmYWxzZVxuICAgICAgICB8IFwiYXR0cmlidXRlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgSG93IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmcta2VlcC13MzJcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LXczMlwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCJcblxubGV0IGtlZXBfdzMyX2ltcGwgKCkgPSAha2VlcF93MzJfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93MzJfaW50ZiAoKSA9ICFrZWVwX3czMl9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93NjBfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93NjBfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93NjBfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13NjBcIiBrZWVwX3c2MF9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyA2MCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCJcblxubGV0IGtlZXBfdzYwX2ltcGwgKCkgPSAha2VlcF93NjBfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW50ZiAoKSA9ICFrZWVwX3c2MF9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyA9IHJlZiBPcHRpb25zLmRlZmF1bHRfYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubGV0ICgpID1cbiAgRHJpdmVyLmFkZF9hcmcgXCItdW51c2VkLWNvZGUtd2FybmluZ3NcIlxuICAgIChCb29sICgoIDo9ICkgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MpKVxuICAgIH5kb2M6XCJfIEFsbG93IHBweCBkZXJpdmVycyB0byBlbmFibGUgdW51c2VkIGNvZGUgd2FybmluZ3NcIlxuXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKCkgPSAhYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubW9kdWxlIEFyZ3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgQXN0X3BhdHRlcm4gOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQXN0X3BhdHRlcm5cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50KVxuXG4gIHR5cGUgJ2EgcGFyYW0gPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBwYXR0ZXJuIDogKGV4cHJlc3Npb24sICdhKSBBc3RfcGF0dGVybi5QYWNrZWQudDtcbiAgICBkZWZhdWx0IDogJ2E7XG4gIH1cblxuICBsZXQgYXJnIG5hbWUgcGF0dGVybiA9XG4gICAge1xuICAgICAgbmFtZTtcbiAgICAgIGRlZmF1bHQgPSBOb25lO1xuICAgICAgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiAoZnVuIHggLT4gU29tZSB4KTtcbiAgICB9XG5cbiAgbGV0IGZsYWcgbmFtZSA9XG4gICAgbGV0IHBhdHRlcm4gPSBwZXhwX2lkZW50IChsaWRlbnQgKHN0cmluZyBuYW1lKSkgaW5cbiAgICB7IG5hbWU7IGRlZmF1bHQgPSBmYWxzZTsgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiB0cnVlIH1cblxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IE5pbCA6ICgnbSwgJ20pIHRcbiAgICB8IENvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIHQgKiAnYSBwYXJhbSAtPiAoJ20xLCAnbTIpIHRcblxuICBsZXQgZW1wdHkgPSBOaWxcbiAgbGV0ICggKz4gKSBhIGIgPSBDb25zIChhLCBiKVxuXG4gIGxldCByZWMgbmFtZXMgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gc3RyaW5nIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh0LCBwKSAtPiBwLm5hbWUgOjogbmFtZXMgdFxuXG4gIG1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgKF8sIF8pIGluc3RhbmNlID1cbiAgICAgIHwgSV9uaWwgOiAoJ20sICdtKSBpbnN0YW5jZVxuICAgICAgfCBJX2NvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIGluc3RhbmNlICogJ2EgLT4gKCdtMSwgJ20yKSBpbnN0YW5jZVxuXG4gICAgbGV0IHJlYyBjcmVhdGUgOlxuICAgICAgICB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QgLT4gKGEsIGIpIGluc3RhbmNlID1cbiAgICAgZnVuIHNwZWMgYXJncyAtPlxuICAgICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgICB8IE5pbCAtPiBJX25pbFxuICAgICAgfCBDb25zICh0LCBwKSAtPlxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jX29wdCBwLm5hbWUgYXJncyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcC5kZWZhdWx0XG4gICAgICAgICAgICB8IFNvbWUgZXhwciAtPiBBc3RfcGF0dGVybi5QYWNrZWQucGFyc2UgcC5wYXR0ZXJuIGV4cHIucGV4cF9sb2MgZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgSV9jb25zIChjcmVhdGUgdCBhcmdzLCB2YWx1ZSlcblxuICAgIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYi4gKGEsIGIpIGluc3RhbmNlIC0+IGEgLT4gYiA9XG4gICAgIGZ1biB0IGYgLT4gbWF0Y2ggdCB3aXRoIElfbmlsIC0+IGYgfCBJX2NvbnMgKHQsIHgpIC0+IGFwcGx5IHQgZiB4XG4gIGVuZFxuXG4gIGxldCBhcHBseSB0IGFyZ3MgZiA9IEluc3RhbmNlLmFwcGx5IChJbnN0YW5jZS5jcmVhdGUgdCBhcmdzKSBmXG5lbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBHZW5lcmF0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGlnbm9yZSAoXyA6IHQpID0gKClcblxudHlwZSBwYXJzZWRfYXJncyA9XG4gIHwgQXJncyBvZiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdFxuICB8IFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxudHlwZSAnaXRlbSBkZXJpdmVkX2NvZGUgPSB7IGl0ZW1zIDogJ2l0ZW0gbGlzdDsgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sIH1cblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlIGRlcml2ZXIgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFQgOiB7XG4gICAgICAgIHNwZWMgOiAoJ2MsICdhKSBBcmdzLnQ7XG4gICAgICAgIGdlbiA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjO1xuICAgICAgICBhcmdfbmFtZXMgOiBTdHJpbmcuU2V0LnQ7XG4gICAgICAgIGRlcHMgOiBkZXJpdmVyIGxpc3Q7XG4gICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbDtcbiAgICAgIH1cbiAgICAgICAgLT4gKCdhLCAnYikgdFxuXG4gIGxldCBkZXBzIChUIHQpID0gdC5kZXBzXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgP2F0dHJpYnV0ZXM6KF8gPSBbXSkgPyhkZXBzID0gW10pID8odW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSlcbiAgICAgICAgc3BlYyBnZW4gPVxuICAgICAgbGV0IGFyZ19uYW1lcyA9IFN0cmluZy5TZXQub2ZfbGlzdCAoQXJncy5uYW1lcyBzcGVjKSBpblxuICAgICAgVCB7IHNwZWM7IGdlbjsgYXJnX25hbWVzOyBkZXBzOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9XG5cbiAgICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG4gIGVuZFxuXG4gIGxldCBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjIGdlbiA9XG4gICAgVjIubWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlY1xuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIud2l0aF9sb2NfYW5kX3BhdGggZ2VuKVxuXG4gIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG5cbiAgbGV0IG1lcmdlX2FjY2VwdGVkX2FyZ3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBUIHQgOjogcmVzdCAtPiBsb29wIChTdHJpbmcuU2V0LnVuaW9uIGFjYyB0LmFyZ19uYW1lcykgcmVzdFxuICAgIGluXG4gICAgbG9vcCBTdHJpbmcuU2V0LmVtcHR5IGxcblxuICBsZXQgY2hlY2tfYXJndW1lbnRzIG5hbWUgZ2VuZXJhdG9ycyAoYXJncyA6IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0KSA9XG4gICAgbGV0IGVtcHR5X2xhYmVsX2Vycm9yID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBsYWJlbCB0aGVuXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yIGFyZ3VtZW50cyBtdXN0IGJlIGxhYmVsbGVkXCIpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciA9XG4gICAgICBPcHRpb24ubWFwXG4gICAgICAgIChMaXN0LmZpbmRfYV9kdXAgYXJncyB+Y29tcGFyZTooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbiAgICAgICAgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBhcmd1bWVudCBsYWJlbGxlZCAnJXMnIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2VcIlxuICAgICAgICAgICAgbGFiZWwpXG4gICAgICB8PiBPcHRpb24udG9fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjY2VwdGVkX2FyZ3MgPSBtZXJnZV9hY2NlcHRlZF9hcmdzIGdlbmVyYXRvcnMgaW5cbiAgICBsZXQgdW5hY2NlcHRlZF9hcmd1bWVudCA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5TZXQubWVtIGxhYmVsIGFjY2VwdGVkX2FyZ3MpIHRoZW5cbiAgICAgICAgICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU3BlbGxjaGVjay5zcGVsbGNoZWNrIChTdHJpbmcuU2V0LmVsZW1lbnRzIGFjY2VwdGVkX2FyZ3MpIGxhYmVsXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciAnJXMnIGRvZXNuJ3QgYWNjZXB0IGFyZ3VtZW50IFxcXG4gICAgICAgICAgICAgICAgICAnJXMnJXNcIlxuICAgICAgICAgICAgICAgICBuYW1lIGxhYmVsIHNwZWxsY2hlY2tfbXNnKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBlcnJvcnMgPVxuICAgICAgZW1wdHlfbGFiZWxfZXJyb3IgQCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgQCB1bmFjY2VwdGVkX2FyZ3VtZW50XG4gICAgaW5cbiAgICBpZiBMaXN0Lmxlbmd0aCBlcnJvcnMgPSAwIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvcnNcblxuICBsZXQgYXBwbHkgKFQgdCkgfm5hbWU6XyB+Y3R4dCB4IGFyZ3MgPSBBcmdzLmFwcGx5IHQuc3BlYyBhcmdzICh0LmdlbiB+Y3R4dCB4KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgKG5hbWUsIGdlbmVyYXRvcnMsIGFyZ3MpID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBjaGVja19hcmd1bWVudHMgbmFtZS50eHQgZ2VuZXJhdG9ycyBhcmdzID4+fCBmdW4gKCkgLT5cbiAgICBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIGl0ZW1zID0gYXBwbHkgKFQgdCkgfm5hbWU6bmFtZS50eHQgfmN0eHQgZW50cnkgYXJncztcbiAgICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA9IHQudW51c2VkX2NvZGVfd2FybmluZ3M7XG4gICAgICAgIH0pXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSBnZW5lcmF0b3JzIGV4dF90b19pdGVtID1cbiAgICBsZXQgbCA9IExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSkgaW5cbiAgICBsZXQgbDEsIGxlcnIgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvbiBPayBlIC0+IExlZnQgZSB8IEVycm9yIGUgLT4gUmlnaHQgZSkgbFxuICAgIGluXG4gICAgbGV0IGxlcnIgPVxuICAgICAgTGlzdC5jb25jYXQgbGVyclxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBlcnIgLT4gZXh0X3RvX2l0ZW0gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICBpblxuICAgIExpc3QuY29uY2F0IGwxIEAgWyB7IGl0ZW1zID0gbGVycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9IF1cbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICBtb2R1bGUgQWN0dWFsX2Rlcml2ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgc3RyX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2V4dCA6IChzaWduYXR1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGV4dGVuc2lvbiA6XG4gICAgICAgIChsb2M6TG9jYXRpb24udCAtPiBwYXRoOnN0cmluZyAtPiBjb3JlX3R5cGUgLT4gZXhwcmVzc2lvbikgb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEFsaWFzID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3RyX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSBraW5kID0gU3RyIHwgU2lnXG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAga2luZCA6IGtpbmQ7XG4gICAgICBnZXQgOiBBY3R1YWxfZGVyaXZlci50IC0+ICgnYSwgJ2IpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGdldF9zZXQgOiBBbGlhcy50IC0+IHN0cmluZyBsaXN0O1xuICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcIm1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG4gIGVuZFxuXG4gIHR5cGUgdCA9IEFjdHVhbF9kZXJpdmVyIG9mIEFjdHVhbF9kZXJpdmVyLnQgfCBBbGlhcyBvZiBBbGlhcy50XG4gIHR5cGUgUHB4X2Rlcml2ZXJzLmRlcml2ZXIgKz0gVCBvZiB0XG5cbiAgbGV0IGRlcml2ZXJzICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKFBweF9kZXJpdmVycy5kZXJpdmVycyAoKSkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIFQgdCAtPiBTb21lIChuYW1lLCB0KVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbiAgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBsZXQgcmVjIGxvb3AgbmFtZSBjb2xsZWN0ZWQgPVxuICAgICAgaWZcbiAgICAgICAgTGlzdC5leGlzdHMgY29sbGVjdGVkIH5mOihmdW4gKGQgOiBBY3R1YWxfZGVyaXZlci50KSAtPlxuICAgICAgICAgICAgU3RyaW5nLmVxdWFsIGQubmFtZSBuYW1lKVxuICAgICAgdGhlbiBjb2xsZWN0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lIHdpdGhcbiAgICAgICAgfCBTb21lIChUIChBY3R1YWxfZGVyaXZlciBkcnYpKSAtPiBkcnYgOjogY29sbGVjdGVkXG4gICAgICAgIHwgU29tZSAoVCAoQWxpYXMgYWxpYXMpKSAtPlxuICAgICAgICAgICAgbGV0IHNldCA9IGZpZWxkLmdldF9zZXQgYWxpYXMgaW5cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBzZXQgfmluaXQ6Y29sbGVjdGVkIH5mOmxvb3BcbiAgICAgICAgfCBfIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgaW5cbiAgICBMaXN0LnJldiAobG9vcCBuYW1lIFtdKVxuXG4gIGxldCByZXNvbHZlX2ludGVybmFsIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBMaXN0Lm1hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgbmFtZSkgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgbWF0Y2ggZmllbGQuZ2V0IGRydiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgICAgICB8IFNvbWUgZyAtPiAoZHJ2Lm5hbWUsIGcpKVxuXG4gIGxldCBzdXBwb3J0ZWRfZm9yIGZpZWxkID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZGVyaXZlcnMgKCkpIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIF8pIC0+XG4gICAgICAgIG1hdGNoIHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgIHwgXyAtPiBTdHJpbmcuU2V0LmFkZCBuYW1lIGFjY1xuICAgICAgICB8IGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIF8gLT4gYWNjKVxuICAgIHw+IFN0cmluZy5TZXQuZWxlbWVudHNcblxuICBsZXQgbm90X3N1cHBvcnRlZCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgPyhzcGVsbGNoZWNrID0gdHJ1ZSkgbmFtZSA9XG4gICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgIGlmIHNwZWxsY2hlY2sgdGhlblxuICAgICAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKHN1cHBvcnRlZF9mb3IgZmllbGQpIG5hbWUudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICBlbHNlIFwiXCJcbiAgICBpblxuICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6ICclcycgaXMgbm90IGEgc3VwcG9ydGVkICVzIGRlcml2aW5nIGdlbmVyYXRvciVzXCJcbiAgICAgIG5hbWUudHh0IGZpZWxkLm5hbWUgc3BlbGxjaGVja19tc2dcblxuICBsZXQgcmVzb2x2ZSBmaWVsZCBuYW1lID1cbiAgICB0cnkgT2sgKHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZS50eHQpXG4gICAgd2l0aCBOb3Rfc3VwcG9ydGVkIG5hbWUnIC0+XG4gICAgICBFcnJvciAobm90X3N1cHBvcnRlZCBmaWVsZCB+c3BlbGxjaGVjazooU3RyaW5nLmVxdWFsIG5hbWUudHh0IG5hbWUnKSBuYW1lKVxuXG4gIGxldCByZXNvbHZlX2FsbCBmaWVsZCBkZXJpdmVycyA9XG4gICAgbGV0IGRlcml2ZXJzX2FuZF9hcmdzLCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwXG4gICAgICAgIChmdW4gKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVpdGhlci5SaWdodCAobm90X3N1cHBvcnRlZCBmaWVsZCBuYW1lKVxuICAgICAgICAgIHwgU29tZSAoVCBfKSAtPiAoXG4gICAgICAgICAgICAgICgqIEl0J3Mgb25lIG9mIG91cnMsIHBhcnNlIHRoZSBhcmd1bWVudHMgbm93LiBXZSBjYW4ndCBkbyBpdCBiZWZvcmUgc2luY2VcbiAgICAgICAgICAgICAgICAgcHB4X2Rlcml2aW5nIHVzZXMgYSBkaWZmZXJlbnQgc3ludGF4IGZvciBhcmd1bWVudHMuICopXG4gICAgICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IEFyZ3MgbCAtPiBFaXRoZXIuTGVmdCAoU29tZSAobmFtZSwgbCkpXG4gICAgICAgICAgICAgIHwgVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPlxuICAgICAgICAgICAgICAgICAgRWl0aGVyLlJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2MgXCJQcHhsaWIuRGVyaXZpbmc6ICVzXCIgbXNnKSlcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAoKiBJdCdzIG5vdCBvbmUgb2Ygb3VycywgaWdub3JlIGl0LiAqKVxuICAgICAgICAgICAgICBFaXRoZXIuTGVmdCBOb25lKVxuICAgICAgICBkZXJpdmVyc1xuICAgICAgfD4gZnVuIChsMSwgbDIpIC0+IChMaXN0LmZpbHRlcl9vcHQgbDEsIGwyKVxuICAgIGluXG4gICAgKCogU2V0IG9mIGFjdHVhbCBkZXJpdmVyIG5hbWVzICopXG4gICAgbGV0IHNlZW4gPSBIYXNodGJsLmNyZWF0ZSAxNiBpblxuICAgIGxldCByZXN1bHQsIGRlcF9lcnJvcnMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmluaXQ6KFtdLCBbXSkgZGVyaXZlcnNfYW5kX2FyZ3NcbiAgICAgICAgfmY6KGZ1biAocmVzdWx0LCBlcnJvcnMpIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIHJlc29sdmUgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+IChyZXN1bHQsIGVycm9ycyBAIFsgZSBdKVxuICAgICAgICAgIHwgT2sgbmFtZWRfZ2VuZXJhdG9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCBuYW1lZF9nZW5lcmF0b3JzXG4gICAgICAgICAgICAgICAgICB+ZjooZnVuIChhY3R1YWxfZGVyaXZlcl9uYW1lLCBnZW4pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBkdXBfZXJyb3IgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zLmZhaWxfb25fZHVwbGljYXRlX2Rlcml2ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBIYXNodGJsLm1lbSBzZWVuIGFjdHVhbF9kZXJpdmVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBhcHBlYXJzIHR3aWNlXCIgYWN0dWFsX2Rlcml2ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIChHZW5lcmF0b3IuZGVwcyBnZW4pIH5mOihmdW4gZGVwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgZGVwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwX25hbWUgPSBkcnYubmFtZSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChIYXNodGJsLm1lbSBzZWVuIGRlcF9uYW1lKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGlzIG5lZWRlZCBmb3IgJXMsIHlvdSBuZWVkIHRvIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBpdCBiZWZvcmUgaW4gdGhlIGxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcF9uYW1lIG5hbWUudHh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgSGFzaHRibC5zZXQgc2VlbiB+a2V5OmFjdHVhbF9kZXJpdmVyX25hbWUgfmRhdGE6KCk7XG4gICAgICAgICAgICAgICAgICAgIGR1cF9lcnJvciBAIGxfZXJyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHJlc3VsdCBAIFsgKG5hbWUsIExpc3QubWFwIG5hbWVkX2dlbmVyYXRvcnMgfmY6c25kLCBhcmdzKSBdLFxuICAgICAgICAgICAgICAgIGVycm9ycyBAIGxfZXJyICkpXG4gICAgaW5cbiAgICAocmVzdWx0LCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgQCBkZXBfZXJyb3JzKVxuXG4gIGxldCBhZGQgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvbiA/c3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb24gP3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/ZXh0ZW5zaW9uIG5hbWUgPVxuICAgIGxldCBhY3R1YWxfZGVyaXZlciA6IEFjdHVhbF9kZXJpdmVyLnQgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBleHRlbnNpb247XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWN0dWFsX2Rlcml2ZXIgYWN0dWFsX2Rlcml2ZXIpKTtcbiAgICAobWF0Y2ggZXh0ZW5zaW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPlxuICAgICAgICBsZXQgZXh0ZW5zaW9uID1cbiAgICAgICAgICBFeHRlbnNpb24uZGVjbGFyZSBuYW1lIEV4cHJlc3Npb24gQXN0X3BhdHRlcm4uKHB0eXAgX18pIGZcbiAgICAgICAgaW5cbiAgICAgICAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgKFwiUHB4bGliLkRlcml2aW5nLlwiIF4gbmFtZSlcbiAgICAgICAgICB+cnVsZXM6WyBDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gZXh0ZW5zaW9uIF0pO1xuICAgIG5hbWVcblxuICBsZXQgYWRkX2FsaWFzIG5hbWUgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvblxuICAgICAgP3N0cl9tb2R1bGVfdHlwZV9kZWNsID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb25cbiAgICAgID9zaWdfbW9kdWxlX3R5cGVfZGVjbCBzZXQgPVxuICAgIGxldCBhbGlhcyA6IEFsaWFzLnQgPVxuICAgICAgbGV0IGdldCA9IGZ1bmN0aW9uIE5vbmUgLT4gc2V0IHwgU29tZSBzZXQgLT4gc2V0IGluXG4gICAgICB7XG4gICAgICAgIHN0cl90eXBlX2RlY2wgPSBnZXQgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0ID0gZ2V0IHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbiA9IGdldCBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbCA9IGdldCBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQgPSBnZXQgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uID0gZ2V0IHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFsaWFzIGFsaWFzKSk7XG4gICAgbmFtZVxuZW5kXG5cbmxldCBhZGQgPSBEZXJpdmVyLmFkZFxubGV0IGFkZF9hbGlhcyA9IERlcml2ZXIuYWRkX2FsaWFzXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgW0BAZGVyaXZpbmcgXSBwYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGludmFsaWRfd2l0aCB+bG9jID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJpbnZhbGlkIFtAQGRlcml2aW5nIF0gYXR0cmlidXRlIHN5bnRheFwiXG5cbmxldCBnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQgPVxuICBtYXRjaCBMb25naWRlbnQuZmxhdHRlbl9leG4gaWQgd2l0aFxuICB8IGwgLT4geyBsb2M7IHR4dCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBsIH1cbiAgfCBleGNlcHRpb24gXyAtPiBpbnZhbGlkX3dpdGggfmxvY1xuXG5leGNlcHRpb24gVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgcGFyc2VfYXJndW1lbnRzIGwgPVxuICB0cnlcbiAgICBBcmdzXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IFsgKE5vbGFiZWwsIGUpIF0gLT4gKFxuICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIC0+XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChpZCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggaWQudHh0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgcyAtPiBzXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXggKGlkLmxvYywgXCJzaW1wbGUgaWRlbnRpZmllciBleHBlY3RlZFwiKSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAobmFtZSwgZXhwcikpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAoIGUucGV4cF9sb2MsXG4gICAgICAgICAgICAgICAgICAgICBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBvciByZWNvcmQgZXhwZWN0ZWRcIiApKSlcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIExpc3QubWFwIGwgfmY6KGZ1biAobGFiZWwsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGxhYmVsIHdpdGhcbiAgICAgICAgICAgICAgfCBMYWJlbGxlZCBzIC0+IChzLCBleHByKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgICAgIChleHByLnBleHBfbG9jLCBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBleHBlY3RlZFwiKSkpKVxuICB3aXRoIFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT4gVW5rbm93bl9zeW50YXggKGxvYywgbXNnKVxuXG5sZXQgbWtfZGVyaXZpbmdfYXR0ciBjb250ZXh0IH5wcmVmaXggfnN1ZmZpeCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgKHByZWZpeCBeIFwiZGVyaXZpbmdcIiBeIHN1ZmZpeClcbiAgICBjb250ZXh0XG4gICAgQXN0X3BhdHRlcm4uKFxuICAgICAgbGV0IGdlbmVyYXRvcl9uYW1lICgpID1cbiAgICAgICAgbWFwJyAocGV4cF9pZGVudCBfXykgfmY6KGZ1biBsb2MgZiBpZCAtPlxuICAgICAgICAgICAgZiAoZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9yICgpID1cbiAgICAgICAgbWFwIChnZW5lcmF0b3JfbmFtZSAoKSkgfmY6KGZ1biBmIHggLT4gZiAoeCwgQXJncyBbXSkpXG4gICAgICAgIHx8fCBwYWNrMlxuICAgICAgICAgICAgICAocGV4cF9hcHBseSAoZ2VuZXJhdG9yX25hbWUgKCkpXG4gICAgICAgICAgICAgICAgIChtYXAxIChtYW55IF9fKSB+ZjpwYXJzZV9hcmd1bWVudHMpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3JzID1cbiAgICAgICAgcGV4cF90dXBsZSAobWFueSAoZ2VuZXJhdG9yICgpKSlcbiAgICAgICAgfHx8IG1hcCAoZ2VuZXJhdG9yICgpKSB+ZjooZnVuIGYgeCAtPiBmIFsgeCBdKVxuICAgICAgaW5cbiAgICAgIHBzdHIgKHBzdHJfZXZhbCBnZW5lcmF0b3JzIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBVbnVzZWQgd2FybmluZyBzdHVmZiArIGxvY2F0aW9ucyBjaGVjayBzaWxlbmNpbmcgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgc3RyaW5nID1cbiAgICBMaXN0LnNvcnQgd2FybmluZ3MgfmNtcDpJbnQuY29tcGFyZVxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gd2FybmluZyAtPiBcIi1cIiBeIEludC50b19zdHJpbmcgd2FybmluZylcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIlxuICBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLndhcm5pbmdcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2Mgc3RyaW5nKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpbmxpbmVfZG9jX2F0dHIgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLmRvY1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBcIkBpbmxpbmVcIikgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG4oKiB3cmFwIGEgc3RydWN0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtb2Rfc3RydWN0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc3RyX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc3RydWN0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc3RyXSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHN0ID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgdW51c2VkX2NvZGVfd2FybmluZ3MgJiYgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWYga2VlcF93MzJfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIChbXSwgc3QpXG4gICAgZWxzZSBpZiBub3QgIWRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgdGhlblxuICAgICAgKFtdLCBJZ25vcmVfdW51c2VkX3dhcm5pbmcuYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyNzdHJ1Y3R1cmUgc3QpXG4gICAgZWxzZSAoWyAzMiBdLCBzdClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgIHx8IG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzdHJ1Y3R1cmUgc3QgZmFsc2UpXG4gICAgdGhlbiAod2FybmluZ3MsIHN0KVxuICAgIGVsc2UgKDYwIDo6IHdhcm5pbmdzLCBzdClcbiAgaW5cbiAgbGV0IHdyYXAsIHN0ID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHN0KVxuICAgIGVsc2UgKHRydWUsIHBzdHJfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzdClcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgZWxzZSBzdFxuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3N0cl0gYWJvdmUgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogd3JhcCBhIHNpZ25hdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbXR5X3NpZ25hdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHNpZ19pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHNpZ25hdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3NpZ10gKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzZyA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzICYmIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWYga2VlcF93MzJfaW50ZiAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIFtdIGVsc2UgWyAzMiBdXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ludGYgKClcbiAgICAgIHx8IChub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc2lnbmF0dXJlIHNnIGZhbHNlKSlcbiAgICAgIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgdGhlbiB3YXJuaW5nc1xuICAgIGVsc2UgNjAgOjogd2FybmluZ3NcbiAgaW5cbiAgbGV0IHdyYXAsIHNnID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHNnKVxuICAgIGVsc2UgKHRydWUsIHBzaWdfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzZylcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc2lnIH5sb2MgfmhpZGUgc2cgZWxzZSBzZ1xuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3NpZ10gYWJvdmUgKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBNYWluIGV4cGFuc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgdHlwZXNfdXNlZF9ieV9kZXJpdmluZyAodGRzIDogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSA6IHN0cnVjdHVyZV9pdGVtIGxpc3QgPVxuICBpZiBrZWVwX3czMl9pbXBsICgpIHRoZW4gW11cbiAgZWxzZVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgIGxldCB0eXAgPSBDb21tb24uY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgICBwc3RyX3ZhbHVlIH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpXG4gICAgICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgICAgIChwZXhwX2Z1biB+bG9jIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgICAgICAgIChwcGF0X2NvbnN0cmFpbnQgfmxvYyAocHBhdF9hbnkgfmxvYykgdHlwKVxuICAgICAgICAgICAgICAgICAgIChldW5pdCB+bG9jKSk7XG4gICAgICAgICAgXSlcblxubGV0IG1lcmdlX2dlbmVyYXRvcnMgZmllbGQgbCA9XG4gIExpc3QuZmlsdGVyX21hcCBsIH5mOihmdW4geCAtPiB4KSB8PiBMaXN0LmNvbmNhdCB8PiBEZXJpdmVyLnJlc29sdmVfYWxsIGZpZWxkXG5cbigqIFRoaXMgZnVuY3Rpb24gbWVyZ2VzIFsnYSBkZXJpdmVkXSBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXS4gVGhpc1xuICAgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGFkZCBbaW5jbHVkZSBzdHJ1Y3QgLi4uIGVuZF0gdG8gZGlzYWJsZSB3YXJuaW5ncy4gKilcbmxldCBtZXJnZV9kZXJpdmVkIGxpc3RzID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGxpc3RzIH5pbml0OltdIH5mOihmdW4gZGVyaXZlZCBhY2MgLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IG90aGVyIDo6IG90aGVyc1xuICAgICAgICB3aGVuIEJvb2wuZXF1YWwgZGVyaXZlZC51bnVzZWRfY29kZV93YXJuaW5ncyBvdGhlci51bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgICAtPlxuICAgICAgICAgIHsgb3RoZXIgd2l0aCBpdGVtcyA9IGRlcml2ZWQuaXRlbXMgQCBvdGhlci5pdGVtcyB9IDo6IG90aGVyc1xuICAgICAgfCBfIC0+IGRlcml2ZWQgOjogYWNjKVxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgKCogVE9ETzogaW5zdGVhZCBvZiBkaXNhYmxpbmcgdGhlIHVudXNlZCB3YXJuaW5nIGZvciB0eXBlcyB0aGVtc2VsdmVzLCB3ZVxuICAgICBzaG91bGQgYWRkIGEgdGFnIFtAQHVudXNlZF0uICopXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSB0eXBlc191c2VkX2J5X2Rlcml2aW5nIHRkcyBAIGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgcnVsZXMgfnR5cCB+ZXhwYW5kX3NpZyB+ZXhwYW5kX3N0ciB+cnVsZV9zdHIgfnJ1bGVfc2lnIH5ydWxlX3N0cl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0ID1cbiAgbGV0IHByZWZpeCA9IFwicHB4bGliLlwiIGluXG4gIGxldCBkZXJpdmluZ19hdHRyID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiXCIgfnByZWZpeCB0eXAgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHJfZXhwZWN0ID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiX2lubGluZVwiIH5wcmVmaXggdHlwIGluXG4gIFtcbiAgICBydWxlX3NpZyBkZXJpdmluZ19hdHRyIGV4cGFuZF9zaWc7XG4gICAgcnVsZV9zdHIgZGVyaXZpbmdfYXR0ciBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc3RyX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc2lnX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc2lnO1xuICBdXG5cbmxldCBydWxlc190eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOlR5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2RlY2xzXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2RlY2xzXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3RcblxubGV0IHJ1bGVzX3R5cGVfZXh0ID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4dGVuc2lvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZXh0XG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dF9leHBlY3RcblxubGV0IHJ1bGVzX2V4Y2VwdGlvbiA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leGNlcHRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9leGNlcHRpb25cbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25cbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0XG5cbmxldCBydWxlc19tb2R1bGVfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcblxubGV0ICgpID1cbiAgbGV0IHJ1bGVzID1cbiAgICBbIHJ1bGVzX3R5cGVfZGVjbDsgcnVsZXNfdHlwZV9leHQ7IHJ1bGVzX2V4Y2VwdGlvbjsgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCBdXG4gICAgfD4gTGlzdC5jb25jYXRcbiAgaW5cbiAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIFwiZGVyaXZpbmdcIiB+YWxpYXNlczpbIFwidHlwZV9jb252XCIgXSB+cnVsZXNcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgYWZmaXggPVxuICB8IFByZWZpeCBvZiBzdHJpbmdcbiAgfCBTdWZmaXggb2Ygc3RyaW5nXG4gIHwgUHJlZml4U3VmZml4IG9mIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgbWFuZ2xlID8oZml4cG9pbnQgPSBcInRcIikgYWZmaXggbmFtZSA9XG4gIG1hdGNoIChTdHJpbmcuKG5hbWUgPSBmaXhwb2ludCksIGFmZml4KSB3aXRoXG4gIHwgdHJ1ZSwgKFByZWZpeCB4IHwgU3VmZml4IHgpIC0+IHhcbiAgfCB0cnVlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBuYW1lIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeCB4IC0+IHggXiBcIl9cIiBeIG5hbWVcbiAgfCBmYWxzZSwgU3VmZml4IHggLT4gbmFtZSBeIFwiX1wiIF4geFxuXG5sZXQgbWFuZ2xlX3R5cGVfZGVjbCA/Zml4cG9pbnQgYWZmaXggeyBwdHlwZV9uYW1lID0geyB0eHQgPSBuYW1lOyBfIH07IF8gfSA9XG4gIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggbmFtZVxuXG5sZXQgbWFuZ2xlX2xpZCA/Zml4cG9pbnQgYWZmaXggbGlkID1cbiAgbWF0Y2ggbGlkIHdpdGhcbiAgfCBMaWRlbnQgcyAtPiBMaWRlbnQgKG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMZG90IChwLCBzKSAtPiBMZG90IChwLCBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGFwcGx5IF8gLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuRXhwYW5zaW9uX2hlbHBlcnMubWFuZ2xlX2xpZDogTGFwcGx5XCJcblxubW9kdWxlIFF1b3RlciA9IFF1b3RlclxuIiwiKCoqIFN0YW5kYXJkIGxpYnJhcnkgZm9yIHBweCByZXdyaXRlcnMgKilcblxuKCoqIFtwcHhsaWJdIGlzIG1lYW50IHRvIGJlIG9wZW5lZCBnbG9iYWxseSBpbiB5b3VyIFBQWCBzb3VyY2UgZmlsZXMuXG5cbiAgICBPcGVuaW5nIGl0IGNvbWVzIHdpdGggdHdvIGFkdmFudGFnZXMuIEZpcnN0LCBpdCB3aWxsIHNoYWRvdyB0aGVcbiAgICBbY29tcGlsZXItbGlic10gbW9kdWxlcy4gVGhlIFtjb21waWxlci1saWJzXSBtb2R1bGVzIGFyZSB1bnN0YWJsZSBhbmQgYXJlbid0XG4gICAgbWVhbnQgdG8gYmUgdXNlZCwgc28gc2hhZG93aW5nIHRoZW0gaXMgYSBnb29kIHByb3RlY3Rpb24gbWVjaGFuaXNtLiBJbiBjYXNlXG4gICAgeW91IGRvbid0IHdhbnQgdG8gb3BlbiBbUHB4bGliXSwgeW91IGNhbiBvcGVuIFtPY2FtbF9zaGFkb3ddIHRvIGdldCB0aGUgc2FtZVxuICAgIHByb3RlY3Rpb24uIFNlY29uZCwgaXQgd2lsbCBicmluZyBzZXZlcmFsIG1vZHVsZXMgaW4gc2NvcGUsIHRoYXQgYXJlIHVzZWZ1bFxuICAgIHRvIGhhdmUgd2hlbiB3cml0aW5nIGEgcmV3cml0ZXI6XG5cbiAgICAtIFRoZSBtYWluIFtwcHhsaWJdIG1vZHVsZXMsIHN1Y2ggYXMgbW9kdWxlcyB0byBoZWxwIG1hbmlwdWxhdGUgdGhlIEFTVFxuICAgICAgKHshQXN0X2J1aWxkZXJ9LCB7IUFzdF9wYXR0ZXJufSksIGFuZCBhIGZldyBmdW5jdGlvbnMuXG4gICAgLSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzLCBzdWNoIGFzIHshQXN0X2hlbHBlcn0gb3IgeyFQcHJpbnRhc3R9LFxuICAgIC0gVGhlIHdob2xlIEFTVCB0eXBlcyAoYnkgW2luY2x1ZGluZ10gdGhlIHshQXN0fSBtb2R1bGUpLlxuXG4gICAgezEgVGhlIGNvcmUgW3BweGxpYl0gZW50cmllc30gKilcblxuKCoqIHsyIE1hbmlwdWxhdGluZyB0aGUgQVNUfSAqKVxuXG5tb2R1bGUgQXN0X2J1aWxkZXIgPSBBc3RfYnVpbGRlclxubW9kdWxlIEFzdF9wYXR0ZXJuID0gQXN0X3BhdHRlcm5cbm1vZHVsZSBBc3RfdHJhdmVyc2UgPSBBc3RfdHJhdmVyc2VcblxuKCoqIHsyIENvbnRleHQtZnJlZSByZXdyaXRpbmd9ICopXG5cbm1vZHVsZSBDb250ZXh0X2ZyZWUgPSBDb250ZXh0X2ZyZWVcbm1vZHVsZSBEZXJpdmluZyA9IERlcml2aW5nXG5tb2R1bGUgRXh0ZW5zaW9uID0gRXh0ZW5zaW9uXG5tb2R1bGUgRXhwYW5zaW9uX2NvbnRleHQgPSBFeHBhbnNpb25fY29udGV4dFxubW9kdWxlIENvZGVfcGF0aCA9IENvZGVfcGF0aFxuXG4oKiogezIgT3RoZXIgaGVscGVyc30gKilcblxubW9kdWxlIEV4cGFuc2lvbl9oZWxwZXJzID0gRXhwYW5zaW9uX2hlbHBlcnNcbm1vZHVsZSBNZXJsaW5faGVscGVycyA9IE1lcmxpbl9oZWxwZXJzXG5tb2R1bGUgU3BlbGxjaGVjayA9IFNwZWxsY2hlY2tcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxuXG4oKiogezIgRHJpdmVyLXJlbGF0ZWQgbW9kdWxlc30gKilcblxubW9kdWxlIERyaXZlciA9IERyaXZlclxubW9kdWxlIENhbGxlcl9pZCA9IENhbGxlcl9pZFxubW9kdWxlIEFzdF9pbyA9IFV0aWxzLkFzdF9pby5SZWFkX2JpblxuXG4oKiogezIgQ2hlY2tzfSAqKVxuXG5tb2R1bGUgQXR0cmlidXRlID0gQXR0cmlidXRlXG5tb2R1bGUgUmVzZXJ2ZWRfbmFtZXNwYWNlcyA9IE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlc1xuXG4oKiogezIgQ29tbW9uIGhlbHBlciBmdW5jdGlvbnN9ICopXG5cbmluY2x1ZGUgQ29tbW9uXG5cbigqKiB7MSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzfVxuXG4gICAgRXhwb3NlIHNvbWUgbW9kdWxlcyBmcm9tIHshUHB4bGliX2FzdH0uICopXG5cbm1vZHVsZSBBc3QgPSBQcHhsaWJfYXN0LkFzdFxubW9kdWxlIEFzdF9oZWxwZXIgPSBQcHhsaWJfYXN0LkFzdF9oZWxwZXJcbm1vZHVsZSBBc3R0eXBlcyA9IFBweGxpYl9hc3QuQXN0dHlwZXNcbm1vZHVsZSBQYXJzZSA9IFBweGxpYl9hc3QuUGFyc2Vcbm1vZHVsZSBQYXJzZXRyZWUgPSBQcHhsaWJfYXN0LlBhcnNldHJlZVxubW9kdWxlIFBwcmludGFzdCA9IFBweGxpYl9hc3QuUHByaW50YXN0XG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Rcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgTG9jID0gTG9jXG5cbigqKiB7MSBUaGUgd2hvbGUgQVNUIHR5cGVzfSAqKVxuXG5pbmNsdWRlIEFzdFxuKCoqIEluY2x1ZGUgYWxsIHRoZSBBc3QgZGVmaW5pdGlvbnMgc2luY2Ugd2UgbmVlZCB0aGVtIGluIGV2ZXJ5IHNpbmdsZSBwcHhcblxuICAgIEBjbG9zZWQgKilcblxuKCoqIE1ha2Ugc3VyZSBjb2RlIHVzaW5nIFBweGxpYiBkb2Vzbid0IHJlZmVyIHRvIGNvbXBpbGVyLWxpYnMgd2l0aG91dCBiZWluZ1xuICAgIGV4cGxpY2l0IGFib3V0IGl0OlxuXG4gICAgQGNsb3NlZCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItM1wiXVxuXG4gIG9wZW4gT2NhbWxfc2hhZG93XG5cbiAgaW5jbHVkZSAoXG4gICAgT2NhbWxfc2hhZG93IDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE9jYW1sX3NoYWRvd1xuICAgICAgZW5kXG4gICAgICB3aXRoIG1vZHVsZSBBc3RfaGVscGVyIDo9IEFzdF9oZWxwZXJcbiAgICAgIHdpdGggbW9kdWxlIEFzdHR5cGVzIDo9IEFzdHR5cGVzXG4gICAgICB3aXRoIG1vZHVsZSBEb2NzdHJpbmdzIDo9IERvY3N0cmluZ3NcbiAgICAgIHdpdGggbW9kdWxlIElkZW50aWZpYWJsZSA6PSBJZGVudGlmaWFibGVcbiAgICAgIHdpdGggbW9kdWxlIExleGVyIDo9IExleGVyXG4gICAgICB3aXRoIG1vZHVsZSBMb2NhdGlvbiA6PSBMb2NhdGlvblxuICAgICAgd2l0aCBtb2R1bGUgTG9uZ2lkZW50IDo9IExvbmdpZGVudFxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2UgOj0gUGFyc2VcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNldHJlZSA6PSBQYXJzZXRyZWVcbiAgICAgIHdpdGggbW9kdWxlIFBwcmludGFzdCA6PSBQcHJpbnRhc3RcbiAgICAgIHdpdGggbW9kdWxlIFN5bnRheGVyciA6PSBTeW50YXhlcnIpXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBGb3IgdGVzdHMgYW5kIFBweF9jb3JlIGNvbXBhdGliaWxpdHkgbGF5ZXIgKilcbm1vZHVsZSBQcHhsaWJfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29tbW9uID0gQ29tbW9uXG4gIG1vZHVsZSBOYW1lID0gTmFtZVxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBQcHhsaWJcblxubGV0IGRlZmF1bHQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmRlZmF1bHRcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi55b2pzb25fZHJvcF9kZWZhdWx0XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChhbHRfb3B0aW9uIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpIG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X2VxdWFsID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC5lcXVhbFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfY29tcGFyZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQuY29tcGFyZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfeW9qc29uID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25cIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9pZiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ueW9qc29uX2Ryb3BfaWZcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgb3BhcXVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJ5b2pzb24ub3BhcXVlXCIgQXR0cmlidXRlLkNvbnRleHQuY29yZV90eXBlIEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgKClcbjs7XG5cbmxldCBvcHRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm9wdGlvblwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBhbGxvd19leHRyYV9maWVsZHNfdGQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmFsbG93X2V4dHJhX2ZpZWxkc1wiXG4gICAgQXR0cmlidXRlLkNvbnRleHQudHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGFsbG93X2V4dHJhX2ZpZWxkc19jZCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uYWxsb3dfZXh0cmFfZmllbGRzXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IHlvanNvbl9rZXkgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmtleVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQuY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQucnRhZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIGF0dHIgZGVzY3JpcHRpb24gPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICB+bG9jXG4gICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAJXNdIGlzIG9ubHkgYWxsb3dlZCBvbiB0eXBlIFslc10uXCJcbiAgICAoQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgICBkZXNjcmlwdGlvblxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX2NkIHgpXG4gIHRoZW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgIH5sb2NcbiAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiBpbmxpbmUgcmVjb3Jkcy5cIlxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX3RkIHgpXG4gIHRoZW4gKFxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IGNkc1xuICAgICAgd2hlbiBMaXN0LmV4aXN0cyBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIF8gLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIG9ubHkgd29ya3Mgb24gcmVjb3Jkcy4gRm9yIGlubGluZSBcXFxuICAgICAgICAgcmVjb3JkcywgZG86IHR5cGUgdCA9IEEgb2YgeyBhIDogaW50IH0gW0BAYWxsb3dfZXh0cmFfZmllbGRzXSB8IEIgW0BAQEBkZXJpdmluZyBcXFxuICAgICAgICAgeW9qc29uXVwiXG4gICAgfCBfIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiByZWNvcmRzLlwiKVxuOztcblxubW9kdWxlIFJlY29yZF9maWVsZF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgY29tbW9uID0gWyBgeW9qc29uX29wdGlvbiBvZiBjb3JlX3R5cGUgXVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIGF0dHIgbGQgfmYgPVxuICAgIE9wdGlvbi5tYXAgKEF0dHJpYnV0ZS5nZXQgYXR0ciBsZCkgfmY6KGZ1biB4IC0+IGYgeCwgQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgOztcblxuICBsZXQgY3JlYXRlIH5sb2MgZ2V0dGVycyBsZCA9XG4gICAgbGV0IGNvbW1vbl9nZXR0ZXJzID1cbiAgICAgIFsgKGZ1biBsZCAtPlxuICAgICAgICAgIG1hdGNoIEF0dHJpYnV0ZS5nZXQgb3B0aW9uIGxkIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICAgICAgfCBbJXR5cGU6IFsldD8gdHldIG9wdGlvbl0gLT4gU29tZSAoYHlvanNvbl9vcHRpb24gdHksIFwiW0B5b2pzb24ub3B0aW9uXVwiKVxuICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIG9wdGlvbiBcIl8gb3B0aW9uXCIpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICBdXG4gICAgaW5cbiAgICBtYXRjaCBMaXN0LmZpbHRlcl9tYXAgKGdldHRlcnMgQCBjb21tb25fZ2V0dGVycykgfmY6KGZ1biBmIC0+IGYgbGQpIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgKHYsIF8pIF0gLT4gU29tZSB2XG4gICAgfCBfIDo6IF8gOjogXyBhcyBhdHRyaWJ1dGVzIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlRoZSBmb2xsb3dpbmcgZWxlbWVudHMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZTogJXNcIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChMaXN0Lm1hcCBhdHRyaWJ1dGVzIH5mOnNuZCkpXG4gIDs7XG5cbiAgbW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIGNvbW1vblxuICAgICAgfCBgZGVmYXVsdCBvZiBleHByZXNzaW9uXG4gICAgICBdXG5cbiAgICBsZXQgY3JlYXRlIH5sb2MgbGQgPVxuICAgICAgY3JlYXRlIH5sb2MgWyBnZXRfYXR0cmlidXRlIGRlZmF1bHQgfmY6KGZ1biBkZWZhdWx0IC0+IGBkZWZhdWx0IGRlZmF1bHQpIF0gbGRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgY29tbW9uXG4gICAgICB8IGBkcm9wX2RlZmF1bHQgb2YgWyBgbm9fYXJnIHwgYGNvbXBhcmUgfCBgZXF1YWwgfCBgeW9qc29uIHwgYGZ1bmMgb2YgZXhwcmVzc2lvbiBdXG4gICAgICB8IGBkcm9wX2lmIG9mIGV4cHJlc3Npb25cbiAgICAgIHwgYGtlZXBcbiAgICAgIF1cblxuICAgIGxldCBjcmVhdGUgfmxvYyBsZCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmxvY1xuICAgICAgICBbIGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IGBkcm9wX2RlZmF1bHQgYG5vX2FyZ1xuICAgICAgICAgICAgfCBTb21lIGUgLT4gYGRyb3BfZGVmYXVsdCAoYGZ1bmMgZSkpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfZXF1YWwgfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGBlcXVhbClcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF9jb21wYXJlIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgY29tcGFyZSlcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF95b2pzb24gfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGB5b2pzb24pXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2lmIH5mOihmdW4geCAtPiBgZHJvcF9pZiB4KVxuICAgICAgICBdXG4gICAgICAgIGxkXG4gICAgICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6YGtlZXBcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPVxuICB7IGxhYmVsIDogc3RyaW5nXG4gIDsgbmFtZV9vdmVycmlkZSA6IHN0cmluZyBvcHRpb25cbiAgfVxuXG5sZXQgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZSA9IHsgbGFiZWw7IG5hbWVfb3ZlcnJpZGUgfVxuXG5sZXQgb2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKGNkIDogUHB4bGliLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSA9XG4gIGxldCBsYWJlbCA9IGNkLnBjZF9uYW1lLnR4dCBpblxuICBsZXQgbmFtZV9vdmVycmlkZSA9IFBweGxpYi5BdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl92YXJpYW50X25hbWUgY2QgaW5cbiAgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZVxuOztcblxubGV0IGxhYmVsIHQgPSB0LmxhYmVsXG5sZXQgbmFtZSB0ID0gT3B0aW9uLnZhbHVlIHQubmFtZV9vdmVycmlkZSB+ZGVmYXVsdDp0LmxhYmVsXG4iLCJvcGVuIEJhc2Vcbm9wZW4gUHB4bGliXG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBBdHRycyA9IEF0dHJzXG5cbmxldCAoIC0tPiApIGxocyByaHMgPSBjYXNlIH5ndWFyZDpOb25lIH5saHMgfnJoc1xuXG4oKiBTaW1wbGlmaWVzIG1hdGNoIGNhc2VzLCBmb3IgcmVhZGFiaWxpdHkgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBJdCdzIG5vdCBvYnZpb3VzIHdlIGNhblxuICAgc3RpY2sgdGhpcyBpbiBwcHhfY29yZSwgYXMgKG1hdGNoIGUxIHdpdGggcCAtPiBlMikgYW5kIChsZXQgcCA9IGUxIGluIGUyKSBhcmUgbm90IHR5cGVkXG4gICBleGFjdGx5IHRoZSBzYW1lICh0eXBlIGluZmVyZW5jZSBnb2VzIGluIGRpZmZlcmVudCBvcmRlciwgbWVhbmluZyB0eXBlIGRpc2FtYmlndWF0aW9uXG4gICBkaWZmZXJzKS4gKilcbmxldCBwZXhwX21hdGNoIH5sb2MgZXhwciBjYXNlcyA9XG4gIG1hdGNoIGNhc2VzIHdpdGhcbiAgfCBbIHsgcGNfbGhzOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyB9IF0gLT5cbiAgICAobWF0Y2ggcGNfbGhzLCBleHByIHdpdGhcbiAgICAgfCAoIHsgcHBhdF9hdHRyaWJ1dGVzID0gW107IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gaWRlbnQ7IF8gfTsgXyB9XG4gICAgICAgLCB7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGlkZW50JzsgXyB9OyBfIH0gKVxuICAgICAgIHdoZW4gU3RyaW5nLmVxdWFsIGlkZW50IGlkZW50JyAtPiBwY19yaHNcbiAgICAgfCBfIC0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGNfbGhzIH5leHByIF0gcGNfcmhzKVxuICB8IF8gLT4gcGV4cF9tYXRjaCB+bG9jIGV4cHIgY2FzZXNcbjs7XG5cbm1vZHVsZSBGdW5fb3JfbWF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEZ1biBvZiBleHByZXNzaW9uXG4gICAgfCBNYXRjaCBvZiBjYXNlIGxpc3RcblxuICBsZXQgZXhwciB+bG9jIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRnVuIGYgLT4gZlxuICAgIHwgTWF0Y2ggY2FzZXMgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIGNhc2VzXG4gIDs7XG5cbiAgbGV0IHVucm9sbCB+bG9jIGUgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBGdW4gZiAtPiBlYXBwbHkgfmxvYyBmIFsgZSBdXG4gICAgfCBNYXRjaCBjYXNlcyAtPiBwZXhwX21hdGNoIH5sb2MgZSBjYXNlc1xuICA7O1xuXG4gIGxldCBtYXBfdG1wX3ZhcnMgfmxvYyB0cyA9XG4gICAgbGV0IHZhcnMgPSBMaXN0Lm1hcGkgdHMgfmY6KGZ1biBpIF8gLT4gXCJ2XCIgXiBJbnQudG9fc3RyaW5nIGkpIGluXG4gICAgbGV0IGJpbmRpbmdzID1cbiAgICAgIExpc3QubWFwMl9leG4gdmFycyB0cyB+ZjooZnVuIHZhciB0IC0+XG4gICAgICAgIGxldCBleHByID0gdW5yb2xsIH5sb2MgKGV2YXIgfmxvYyB2YXIpIHQgaW5cbiAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHB2YXIgfmxvYyB2YXIpIH5leHByKVxuICAgIGluXG4gICAgYmluZGluZ3MsIExpc3QubWFwIHZhcnMgfmY6KHB2YXIgfmxvYyksIExpc3QubWFwIHZhcnMgfmY6KGV2YXIgfmxvYylcbiAgOztcbmVuZFxuXG4oKiBBIHJlbmFtaW5nIGlzIGEgbWFwcGluZyBmcm9tIHR5cGUgdmFyaWFibGUgbmFtZSB0byB0eXBlIHZhcmlhYmxlIG5hbWUuXG4gICBJbiBkZWZpbml0aW9ucyBzdWNoIGFzOlxuXG4gICB0eXBlICdhIHQgPVxuICAgfCBBIDogPHR5cGU+IC0+ICdiIHRcbiAgIHwgQiBvZiAnYVxuXG4gICB3ZSBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4geW9qc29uX29mIHBhcmFtZXRlciBuYW1lZCBhZnRlciAnYSwgYnV0ICdhIGlzIG5vdCBpblxuICAgc2NvcGUgaW4gPHR5cGU+IHdoZW4gaGFuZGxpbmcgdGhlIGNvbnN0cnVjdG9yIEEgKGJlY2F1c2UgQSBpcyBhIGdhZHQgY29uc3RydWN0b3IpLlxuICAgSW5zdGVhZCB0aGUgdHlwZSB2YXJpYWJsZXMgaW4gc2NvcGUgYXJlIHRoZSBvbmVzIGRlZmluZWQgaW4gdGhlIHJldHVybiB0eXBlIG9mIEEsXG4gICBuYW1lbHkgJ2IuIFRoZXJlIGNvdWxkIGJlIGxlc3Mgb3IgbW9yZSB0eXBlIHZhcmlhYmxlIGluIGNhc2VzIHN1Y2ggYXM6XG5cbiAgIHR5cGUgXyBsZXNzID0gTGVzcyA6IGludCBsZXNzXG4gICB0eXBlIF8gbW9yZSA9IE1vcmUgOiAoJ2EgKiAnYSkgbW9yZVxuXG4gICBJZiBmb3IgaW5zdGFuY2UsIDx0eXBlPiBpcyBbJ2IgKiAnY10sIHdoZW4gd2UgZmluZCAnYiwgd2Ugd2lsbCBsb29rIGZvciBbJ2JdIGluIHRoZVxuICAgcmVuYW1pbmcgYW5kIGZpbmQgWydhXSAob25seSBpbiB0aGF0IGdhZHQgYnJhbmNoLCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSBpbiBvdGhlclxuICAgYnJhbmNoZXMpLCBhdCB3aGljaCBwb2ludCB3ZSBjYW4gY2FsbCB0aGUgcHJldmlvdXNseSBib3VuZCB5b2pzb25fb2YgcGFyYW1ldGVyIG5hbWVkXG4gICBhZnRlciAnYS5cbiAgIElmIHdlIGNhbid0IGZpbmQgYSByZXN1bHRpbmcgbmFtZSwgbGlrZSB3aGVuIGxvb2tpbmcgdXAgWydjXSBpbiB0aGUgcmVuYW1pbmcsIHRoZW4gd2VcbiAgIGFzc3VtZSB0aGUgdmFyaWFibGUgaXMgZXhpc3RlbnRpYWxseSBxdWFudGlmaWVkIGFuZCB0cmVhdCBpdCBhcyBbX10gKHdoaWNoIGlzIG9rLFxuICAgYXNzdW1pbmcgdGhlcmUgYXJlIG5vIGNvbnN0cmFpbnRzKS4gKilcbm1vZHVsZSBSZW5hbWluZyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgaWRlbnRpdHkgOiB0XG4gIHZhbCBhZGRfdW5pdmVyc2FsbHlfYm91bmQgOiB0IC0+IHN0cmluZyBsb2MgLT4gdFxuXG4gIHR5cGUgYmluZGluZ19raW5kID1cbiAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZFxuXG4gIHZhbCBiaW5kaW5nX2tpbmQgOiB0IC0+IHN0cmluZyAtPiBiaW5kaW5nX2tpbmRcbiAgdmFsIG9mX2dhZHQgOiBzdHJpbmcgbGlzdCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvciA9IHN0cmluZyBMb2MudFxuICB0eXBlIHQgPSAoc3RyaW5nLCBlcnJvcikgUmVzdWx0LnQgTWFwLk0oU3RyaW5nKS50IG9wdGlvblxuXG4gIGxldCBpZGVudGl0eSA9IE5vbmVcblxuICB0eXBlIGJpbmRpbmdfa2luZCA9XG4gICAgfCBVbml2ZXJzYWxseV9ib3VuZCBvZiBzdHJpbmdcbiAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmRcblxuICBsZXQgYWRkX3VuaXZlcnNhbGx5X2JvdW5kICh0IDogdCkgbmFtZSA6IHQgPVxuICAgIGxldCBuYW1lID0gbmFtZS50eHQgaW5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBtYXAgLT4gU29tZSAoTWFwLnNldCB+a2V5Om5hbWUgfmRhdGE6KE9rIG5hbWUpIG1hcClcbiAgOztcblxuICBsZXQgYmluZGluZ19raW5kIHQgdmFyID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFyXG4gICAgfCBTb21lIG1hcCAtPlxuICAgICAgKG1hdGNoIE1hcC5maW5kIG1hcCB2YXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBFeGlzdGVudGlhbGx5X2JvdW5kXG4gICAgICAgfCBTb21lIChPayB2YWx1ZSkgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFsdWVcbiAgICAgICB8IFNvbWUgKEVycm9yIHsgbG9jOyB0eHQgfSkgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCIlc1wiIHR4dClcbiAgOztcblxuICAoKiBSZXR1cm4gYSBtYXAgdHJhbnNsYXRpbmcgdHlwZSB2YXJpYWJsZXMgYXBwZWFyaW5nIGluIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdBRFRcbiAgICAgY29uc3RydWN0b3IgdG8gdGhlaXIgbmFtZSBpbiB0aGUgdHlwZSBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICBGb3IgaW5zdGFuY2U6XG5cbiAgICAge1tcbiAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSBYIDogJ3ggKiAneSAtPiAoJ3gsICd5KSB0XG4gICAgIF19XG5cbiAgICAgd2lsbCBwcm9kdWNlOlxuXG4gICAgIHtbXG4gICAgICAgXCJ4XCIgLT4gT2sgXCJhXCJcbiAgICAgICAgICAgICAgICBcInlcIiAtPiBPayBcImJcIlxuICAgICBdfVxuXG4gICAgIElmIGEgdmFyaWFibGUgYXBwZWFycyB0d2ljZSBpbiB0aGUgcmV0dXJuIHR5cGUgaXQgd2lsbCBtYXAgdG8gW0Vycm9yIF9dLiBJZiBhXG4gICAgIHZhcmlhYmxlIGNhbm5vdCBiZSBtYXBwZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgZGVjbGFyYXRpb24sIGl0IHdpbGwgbWFwIHRvXG4gICAgIFtFcnJvcl0gKGZvciBpbnN0YW5jZSBbQSA6ICdhIC0+ICdhIGxpc3QgdF0pLlxuXG4gICAgIEl0IHJldHVybnMgTm9uZSBvbiB1c2VyIGVycm9yLCB0byBsZXQgdGhlIHR5cGVyIGdpdmUgdGhlIGVycm9yIG1lc3NhZ2UgKilcbiAgbGV0IG9mX2dhZHQgPVxuICAgICgqIEFkZCBhbGwgdHlwZSB2YXJpYWJsZXMgb2YgYSB0eXBlIHRvIGEgbWFwLiAqKVxuICAgIGxldCBhZGRfdHlwZXZhcnMgPVxuICAgICAgb2JqZWN0XG4gICAgICAgIGluaGVyaXQgWyhzdHJpbmcsIGVycm9yKSBSZXN1bHQudCBNYXAuTShTdHJpbmcpLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgICAgbWV0aG9kISBjb3JlX3R5cGUgdHkgbWFwID1cbiAgICAgICAgICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICB7IGxvYyA9IHR5LnB0eXBfbG9jXG4gICAgICAgICAgICAgIDsgdHh0ID1cbiAgICAgICAgICAgICAgICAgIFwicHB4X3lvanNvbl9jb252OiB2YXJpYWJsZSBpcyBub3QgYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgY29uc3RydWN0b3JcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTWFwLnNldCBtYXAgfmtleTp2YXIgfmRhdGE6KEVycm9yIGVycm9yKVxuICAgICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgdHkgbWFwXG4gICAgICBlbmRcbiAgICBpblxuICAgIGxldCBhdXggbWFwIHRwX25hbWUgdHBfaW5fcmV0dXJuX3R5cGUgPVxuICAgICAgbWF0Y2ggdHBfaW5fcmV0dXJuX3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICBpZiBNYXAubWVtIG1hcCB2YXJcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBsb2MgPSB0cF9pbl9yZXR1cm5fdHlwZS5wdHlwX2xvYyBpblxuICAgICAgICAgICAgRXJyb3IgeyBsb2M7IHR4dCA9IFwicHB4X3lvanNvbl9jb252OiBkdXBsaWNhdGUgdmFyaWFibGVcIiB9KVxuICAgICAgICAgIGVsc2UgT2sgdHBfbmFtZVxuICAgICAgICBpblxuICAgICAgICBNYXAuc2V0IG1hcCB+a2V5OnZhciB+ZGF0YVxuICAgICAgfCBfIC0+IGFkZF90eXBldmFycyNjb3JlX3R5cGUgdHBfaW5fcmV0dXJuX3R5cGUgbWFwXG4gICAgaW5cbiAgICBmdW4gdHBzIGNkIC0+XG4gICAgICBtYXRjaCBjZC5wY2RfcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgKG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICB8IFB0eXBfY29uc3RyIChfLCBwYXJhbXMpIC0+XG4gICAgICAgICAgIGlmIExpc3QubGVuZ3RoIHBhcmFtcyA8PiBMaXN0Lmxlbmd0aCB0cHNcbiAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoU3RkbGliLkxpc3RMYWJlbHMuZm9sZF9sZWZ0MlxuICAgICAgICAgICAgICAgICAgdHBzXG4gICAgICAgICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICAgICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpKVxuICAgICAgICAgICAgICAgICAgfmY6YXV4KVxuICAgICAgICAgfCBfIC0+IE5vbmUpXG4gIDs7XG5lbmRcblxuKCogVXRpbGl0eSBmdW5jdGlvbnMgKilcblxubGV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzID1cbiAgbGV0IG1hcCA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgUHR5cF92YXIgXyAtPiBQdHlwX2FueVxuICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgIGVuZFxuICBpblxuICBtYXAjY29yZV90eXBlXG47O1xuXG5sZXQgcmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSB4ID1cbiAgbGV0IHByZWZpeCA9IFwicmlnaWRfXCIgaW5cbiAgaWYgU3RyaW5nLmVxdWFsIHggdHlwZV9uYW1lIHx8IFN0cmluZy5pc19wcmVmaXggeCB+cHJlZml4XG4gIHRoZW4gcHJlZml4IF4geCBeIFwiX29mX3R5cGVfXCIgXiB0eXBlX25hbWVcbiAgZWxzZSB4XG47O1xuXG5sZXQgbWFrZV90eXBlX3JpZ2lkIH50eXBlX25hbWUgPVxuICBsZXQgbWFwID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZSB0eSA9XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPVxuICAgICAgICAgIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3ZhciBzIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoTG9jYXRlZC5saWRlbnQgfmxvYzp0eS5wdHlwX2xvYyAocmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSBzKSwgW10pXG4gICAgICAgICAgfCBkZXNjIC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIGRlc2NcbiAgICAgICAgaW5cbiAgICAgICAgeyB0eSB3aXRoIHB0eXBfZGVzYyB9XG4gICAgZW5kXG4gIGluXG4gIG1hcCNjb3JlX3R5cGVcbjs7XG5cbigqIEdlbmVyYXRlcyB0aGUgcXVhbnRpZmllZCB0eXBlIFsgISAnYSAuLiAneiAuIChtYWtlX21vbm9fdHlwZSB0ICgnYSAuLiAneikpIF0gb3JcbiAgIFt0eXBlIGEgLi4gei4gbWFrZV9tb25vX3R5cGUgdCAoYSAuLiB6KV0gd2hlbiBbdXNlX3JpZ2lkX3ZhcmlhYmxlc10gaXMgdHJ1ZS5cbiAgIEFubm90YXRpb24gYXJlIG5lZWRlZCBmb3Igbm9uIHJlZ3VsYXIgcmVjdXJzaXZlIGRhdGF0eXBlcyBhbmQgZ2FkdCB3aGVuIHRoZSByZXR1cm4gdHlwZVxuICAgb2YgY29uc3RydWN0b3JzIGFyZSBjb25zdHJhaW5lZC4gVW5mb3J0dW5hdGVseSwgcHV0dGluZyByaWdpZCB2YXJpYWJsZXMgZXZlcnl3aGVyZSBkb2VzXG4gICBub3Qgd29yayBiZWNhdXNlIG9mIGNlcnRhaW5zIHR5cGVzIHdpdGggY29uc3RyYWludHMuIFdlIHRodXMgb25seSB1c2UgcmlnaWQgdmFyaWFibGVzXG4gICBmb3Igc3VtIHR5cGVzLCB3aGljaCBpbmNsdWRlcyBhbGwgR0FEVHMuICopXG5cbmxldCB0dmFyc19vZl9jb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gc3RyaW5nIGxpc3QgPVxuICBsZXQgdHZhcnMgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFB0eXBfdmFyIHggLT4gaWYgTGlzdC5tZW0gYWNjIHggfmVxdWFsOlN0cmluZy5lcXVhbCB0aGVuIGFjYyBlbHNlIHggOjogYWNjXG4gICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgeCBhY2NcbiAgICBlbmRcbiAgaW5cbiAgZnVuIHR5cCAtPiBMaXN0LnJldiAodHZhcnMjY29yZV90eXBlIHR5cCBbXSlcbjs7XG5cbmxldCBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nXG4gICAgICAoKiBwbGFjaW5nIGEgc3VpdGFibHkgcG9seW1vcnBoaWMgb3IgcmlnaWQgdHlwZSBjb25zdHJhaW50IG9uIHRoZSBwYXR0ZXJuIG9yIGJvZHkgKilcbiAgICAgIChsb2MgOiBMb2NhdGlvbi50KVxuICAgICAgKHRkIDogdHlwZV9kZWNsYXJhdGlvbilcbiAgICAgICh0eXAgOiBjb3JlX3R5cGUpXG4gICAgICB+KHRwcyA6IHN0cmluZyBsb2MgbGlzdClcbiAgICAgIH4oZnVuY19uYW1lIDogc3RyaW5nKVxuICAgICAgKGJvZHkgOiBleHByZXNzaW9uKVxuICA9XG4gIGxldCB2YXJzID0gdHZhcnNfb2ZfY29yZV90eXBlIHR5cCBpblxuICBsZXQgaGFzX3ZhcnMgPVxuICAgIG1hdGNoIHZhcnMgd2l0aFxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IF8gOjogXyAtPiB0cnVlXG4gIGluXG4gIGxldCBwYXQgPVxuICAgIGxldCBwYXQgPSBwdmFyIH5sb2MgZnVuY19uYW1lIGluXG4gICAgaWYgbm90IGhhc192YXJzXG4gICAgdGhlbiBwYXRcbiAgICBlbHNlIChcbiAgICAgIGxldCB2YXJzID0gTGlzdC5tYXAgfmY6KGZ1biB0eHQgLT4geyB0eHQ7IGxvYyB9KSB2YXJzIGluXG4gICAgICBwcGF0X2NvbnN0cmFpbnQgfmxvYyBwYXQgKHB0eXBfcG9seSB+bG9jIHZhcnMgdHlwKSlcbiAgaW5cbiAgbGV0IGJvZHkgPVxuICAgIGxldCB1c2VfcmlnaWRfdmFyaWFibGVzID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgfCBQdHlwZV92YXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiB1c2VfcmlnaWRfdmFyaWFibGVzXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdHlwZV9uYW1lID0gdGQucHR5cGVfbmFtZS50eHQgaW5cbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICB0cHNcbiAgICAgICAgfmY6KGZ1biB0cCBib2R5IC0+XG4gICAgICAgICAgcGV4cF9uZXd0eXBlIH5sb2MgeyB0eHQgPSByaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHRwLnR4dDsgbG9jID0gdHAubG9jIH0gYm9keSlcbiAgICAgICAgfmluaXQ6KHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgKG1ha2VfdHlwZV9yaWdpZCB+dHlwZV9uYW1lIHR5cCkpKVxuICAgIGVsc2UgaWYgaGFzX3ZhcnNcbiAgICB0aGVuIGJvZHlcbiAgICBlbHNlIHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgdHlwXG4gIGluXG4gIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0IH5leHByOmJvZHlcbjs7XG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9XG4gIChvYmplY3RcbiAgICBpbmhlcml0IHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUgd2l0aFxuICAgICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgfm1hcmtfYXNfc2VlbjpmYWxzZSBBdHRycy5vcGFxdWUgY3R5cGUpIC0+XG4gICAgICAgICgpXG4gICAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSAtPiAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuICBlbmQpXG4gICNnb1xuICAgICgpXG47O1xuXG4oKiBHZW5lcmF0ZXMgdGhlIHNpZ25hdHVyZSBmb3IgdHlwZSBjb252ZXJzaW9uIHRvIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX29mX3lvanNvbl9vZiB+bG9jIHQgPSBbJXR5cGU6IFsldCB0XSAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnRdXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl95b2pzb25fb2ZcblxuICBsZXQgbWtfc2lnIH5sb2M6XyB+cGF0aDpfIChfcmYsIHRkcykgPVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICBsZXQgbG9jID0gdGQucHR5cGVfbG9jIGluXG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwICgoIF4gKSBcInlvanNvbl9vZl9cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgfnR5cGVfOihta190eXBlIHRkKVxuICAgICAgICAgICB+cHJpbTpbXSkpXG4gIDs7XG5lbmRcblxuKCogR2VuZXJhdGVzIHRoZSBzaWduYXR1cmUgZm9yIHR5cGUgY29udmVyc2lvbiBmcm9tIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uID0gc3RydWN0XG4gIGxldCB0eXBlX29mX29mX3lvanNvbiB+bG9jIHQgPSBbJXR5cGU6IFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudCAtPiBbJXQgdF1dXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl9vZl95b2pzb25cblxuICBsZXQgc2lnX29mX3RkIHdpdGhfcG9seSB0ZCA9XG4gICAgbGV0IG9mX3lvanNvbl90eXBlID0gbWtfdHlwZSB0ZCBpblxuICAgIGxldCBsb2MgPSB7IHRkLnB0eXBlX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBvZl95b2pzb25faXRlbSA9XG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwIChmdW4gcyAtPiBzIF4gXCJfb2ZfeW9qc29uXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICB+cHJpbTpbXSlcbiAgICBpblxuICAgIG1hdGNoIHdpdGhfcG9seSwgaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlIHdpdGhcbiAgICB8IHRydWUsIGBTdXJlbHlfbm90IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlNpZ19nZW5lcmF0ZV9vZl95b2pzb24uc2lnX29mX3RkOiB5b2pzb25fcG9seSBhbm5vdGF0aW9uIGJ1dCB0eXBlIGlzIHN1cmVseSBub3QgXFxcbiAgICAgICAgIGEgcG9seW1vcnBoaWMgdmFyaWFudFwiXG4gICAgfCBmYWxzZSwgKGBTdXJlbHlfbm90IHwgYE1heWJlKSAtPiBbIG9mX3lvanNvbl9pdGVtIF1cbiAgICB8ICh0cnVlIHwgZmFsc2UpLCBgRGVmaW5pdGVseSB8IHRydWUsIGBNYXliZSAtPlxuICAgICAgWyBvZl95b2pzb25faXRlbVxuICAgICAgOyBwc2lnX3ZhbHVlXG4gICAgICAgICAgfmxvY1xuICAgICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKGZ1biBzIC0+IFwiX19cIiBeIHMgXiBcIl9vZl95b2pzb25fX1wiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICAgIH5wcmltOltdKVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBta19zaWcgfnBvbHkgfmxvYzpfIH5wYXRoOl8gKF9yZiwgdGRzKSA9IExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KHNpZ19vZl90ZCBwb2x5KVxuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gICgqIEhhbmRsaW5nIG9mIHJlY29yZCBkZWZhdWx0cyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdHlwZV9jb25zdHIgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IH5sb2MgaWQgfmY6KGZ1biBzIC0+IFwieW9qc29uX29mX1wiIF4gcykgYXJnc1xuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB5b2pzb25fb2ZfdHlwZVxuICAgICAgICAgICAgfih0eXBldmFyX2hhbmRsaW5nIDogWyBgb2sgb2YgUmVuYW1pbmcudCB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciBdKVxuICAgICAgICAgICAgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IFsldHlwZTogX10gLT4gRnVuIFslZXhwciBmdW4gXyAtPiBgU3RyaW5nIFwiX1wiXVxuICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF90dXBsZSB0cDsgXyB9IC0+XG4gICAgICBNYXRjaCBbIHlvanNvbl9vZl90dXBsZSB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cCkgXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSV5b2pzb25fb2Y6IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIlxuICAgICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYmluZGluZ19raW5kIHJlbmFtaW5nIHBhcm0gd2l0aFxuICAgICAgICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgcGFybSAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmQgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgWyV0eXBlOiBfXSkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgYXJncyk7IF8gfSAtPlxuICAgICAgRnVuXG4gICAgICAgICh5b2pzb25fb2ZfdHlwZV9jb25zdHJcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBpZFxuICAgICAgICAgICAoTGlzdC5tYXAgYXJncyB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHRwKSkpKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2Fycm93IChfLCBfLCBfKTsgXyB9IC0+XG4gICAgICBGdW5cbiAgICAgICAgWyVleHByXG4gICAgICAgICAgZnVuIF9mIC0+XG4gICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9mdW4gUHB4X3lvanNvbl9jb252X2xpYi5pZ25vcmVdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkcywgXywgXyk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3ZhcmlhbnQgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFt5b2pzb25fb2ZdIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB5b2pzb25fb2ZfdHVwbGUgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOihmdW4gdHAgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHApIHRwcyBpblxuICAgIGxldCBiaW5kaW5ncywgcHZhcnMsIGV2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgIGxldCBpbl9leHByID0gWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIGV2YXJzXV0gaW5cbiAgICBsZXQgZXhwciA9IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGluX2V4cHIgaW5cbiAgICBwcGF0X3R1cGxlIH5sb2MgcHZhcnMgLS0+IGV4cHJcblxuICAoKiBDb252ZXJzaW9uIG9mIHZhcmlhbnQgdHlwZXMgKilcbiAgYW5kIHlvanNvbl9vZl92YXJpYW50XG4gICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICgobG9jLCByb3dfZmllbGRzKSA6IExvY2F0aW9uLnQgKiByb3dfZmllbGQgbGlzdClcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBpdGVtIHJvdyA9XG4gICAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3cgaW5cbiAgICAgIG1hdGNoIHJvdy5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGNuc3RyLCB0cnVlLCBbXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIHBwYXRfdmFyaWFudCB+bG9jIChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIE5vbmVcbiAgICAgICAgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGVzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXSBdXVxuICAgICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBlc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV1dIGluXG4gICAgICAgIGxldCB5b2pzb25fb2ZfYXJncyA9IExpc3QubWFwIH5mOih5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZykgYXJncyBpblxuICAgICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIHlvanNvbl9vZl9hcmdzIGluXG4gICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICBtYXRjaCBwYXR0cyB3aXRoXG4gICAgICAgICAgfCBbIHBhdHQgXSAtPiBwYXR0XG4gICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICBpblxuICAgICAgICBwcGF0X3ZhcmlhbnQgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgfmxvYyAoU29tZSBwYXR0KVxuICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIChjbnN0cl9leHByIDo6IHZhcnMpXV1cbiAgICAgIHwgUmluaGVyaXQgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIFtdKTsgXyB9IC0+XG4gICAgICAgIHBwYXRfYWxpYXMgfmxvYyAocHBhdF90eXBlIH5sb2MgaWQpIChMb2MubWFrZSBcInZcIiB+bG9jKVxuICAgICAgICAtLT4geW9qc29uX29mX3R5cGVfY29uc3RyIH5sb2MgaWQgWyBbJWV4cHIgdl0gXVxuICAgICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUnRhZy8mXCJcbiAgICAgIHwgUmluaGVyaXQgKHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBfIDo6IF8pOyBfIH0gYXMgdHlwKSAtPlxuICAgICAgICBsZXQgY2FsbCA9IEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHR5cCkgaW5cbiAgICAgICAgcHBhdF9hbGlhcyB+bG9jIChwcGF0X3R5cGUgfmxvYyBpZCkgKExvYy5tYWtlIFwidlwiIH5sb2MpIC0tPiBbJWV4cHIgWyVlIGNhbGxdIHZdXG4gICAgICB8IFJpbmhlcml0IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUmluaGVyaXQvbm9uLWlkXCJcbiAgICAgICgqIGltcG9zc2libGU/KilcbiAgICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgICBpblxuICAgIE1hdGNoIChMaXN0Lm1hcCB+ZjppdGVtIHJvd19maWVsZHMpXG5cbiAgKCogUG9seW1vcnBoaWMgcmVjb3JkIGZpZWxkcyAqKVxuICBhbmQgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAoKiBTaG91bGQgYmUgaW1wb3NzaWJsZSBiZWNhdXNlIFt5b2pzb25fb2ZfcG9seV0gaXMgb25seSBjYWxsZWQgb24gcG9seW1vcnBoaWMgcmVjb3JkXG4gICAgICAgICBmaWVsZHMgYW5kIHJlY29yZCB0eXBlIGRlZmluaXRpb25zIGNhbid0IG9jY3VyIGluIHR5cGUgZXhwcmVzc2lvbnMuICopXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBvbHltb3JwaGljIHR5cGUgaW4gYSB0eXBlIGV4cHJlc3Npb25cIlxuICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgICAgfmV4cHI6WyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgICAgaW5cbiAgICAgIGxldCByZW5hbWluZyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHBhcm1zIH5pbml0OnJlbmFtaW5nIH5mOlJlbmFtaW5nLmFkZF91bml2ZXJzYWxseV9ib3VuZFxuICAgICAgaW5cbiAgICAgIChtYXRjaCB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cCB3aXRoXG4gICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gRnVuIChwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBmdW5fZXhwcilcbiAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPlxuICAgICAgICAgTWF0Y2hcbiAgICAgICAgICAgWyBbJXBhdD8gYXJnXVxuICAgICAgICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICAgICAgIChwZXhwX21hdGNoIH5sb2MgWyVleHByIGFyZ10gbWF0Y2hpbmdzKVxuICAgICAgICAgICBdKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgcmVjb3JkIHR5cGVzICopXG5cbiAgbGV0IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgPVxuICAgIGxldCBwID0gTG9jLm1ha2UgKExvbmdpZGVudC5MaWRlbnQgbmFtZSkgfmxvYywgcHZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgIHBhdHQgQCBbIHAgXVxuICA7O1xuXG4gIHR5cGUgaXNfZW1wdHlfZXhwciA9XG4gICAgfCBJbnNwZWN0X3ZhbHVlIG9mIChsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG4gICAgfCBJbnNwZWN0X3lvanNvbiBvZiAoY252X2V4cHI6ZXhwcmVzc2lvbiAtPiBsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG5cbiAgbGV0IHlvanNvbl9vZl9yZWNvcmRfZmllbGQgfnJlbmFtaW5nIHBhdHQgZXhwciBuYW1lIHRwID95b2pzb25fb2YgaXNfZW1wdHlfZXhwciBrZXkgPVxuICAgIGxldCBsb2MgPSB7IHRwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgbGV0IGNudl9leHByID1cbiAgICAgIG1hdGNoIHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwIHdpdGhcbiAgICAgIHwgRnVuIGV4cCAtPiBleHBcbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gZWwgLT4gWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZWxdIG1hdGNoaW5nc11dXG4gICAgaW5cbiAgICBsZXQgY252X2V4cHIgPVxuICAgICAgbWF0Y2ggeW9qc29uX29mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjbnZfZXhwclxuICAgICAgfCBTb21lIHlvanNvbl9vZiAtPiBbJWV4cHIgWyVlIHlvanNvbl9vZl0gWyVlIGNudl9leHByXV1cbiAgICBpblxuICAgIGxldCBleHByID1cbiAgICAgIGxldCB2X25hbWUgPSBcInZfXCIgXiBuYW1lIGluXG4gICAgICBbJWV4cHJcbiAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgIFslZVxuICAgICAgICAgICAgbWF0Y2ggaXNfZW1wdHlfZXhwciB3aXRoXG4gICAgICAgICAgICB8IEluc3BlY3RfdmFsdWUgaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciBsb2MgKGV2YXIgfmxvYyB2X25hbWUpXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gWyVlIGV2YXIgfmxvYyB2X25hbWVdIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzKV1cbiAgICAgICAgICAgIHwgSW5zcGVjdF95b2pzb24gaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBbJWUgZXZhciB+bG9jIHZfbmFtZV0gaW5cbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciB+Y252X2V4cHIgbG9jIFslZXhwciBhcmddXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgICBibmQgOjogYm5kcyldXVxuICAgICAgICBpblxuICAgICAgICBbJWUgZXhwcl1dXG4gICAgaW5cbiAgICBwYXR0LCBleHByXG4gIDs7XG5cbiAgbGV0IGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXMgfnR5cGVzX2JlaW5nX2RlZmluZWQgfmxvYyB+d2h5IHRwID1cbiAgICBsZXQgZGlzYWxsb3dfdmFyaWFibGVzID1cbiAgICAgIGxldCBpdGVyID1cbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgfCBQdHlwX3ZhciB2IC0+XG4gICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgY29udGFpbnMgXFxcbiAgICAgICAgICAgICAgICAgYSB0eXBlIHZhcmlhYmxlOiAnJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgQ29tcGFyaXNvbiBpcyBub3QgYXZhaWFibGUgZm9yIHR5cGUgdmFyaWFibGVzLlxcblxcXG4gICAgICAgICAgICAgICAgIENvbnNpZGVyIHVzaW5nIFtAeW9qc29uX2Ryb3BfaWYgX10gb3IgW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gXFxcbiAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgIChtYXRjaCB3aHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBjb21wYXJlIC0+IFwiY29tcGFyZVwiXG4gICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBpdGVyI2NvcmVfdHlwZVxuICAgIGluXG4gICAgbGV0IGRpc2FsbG93X3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyA9XG4gICAgICBtYXRjaCB0eXBlc19iZWluZ19kZWZpbmVkIHdpdGhcbiAgICAgIHwgYE5vbnJlY3Vyc2l2ZSAtPiBmdW4gXyAtPiAoKVxuICAgICAgfCBgUmVjdXJzaXZlIHR5cGVzX2JlaW5nX2RlZmluZWQgLT5cbiAgICAgICAgbGV0IGl0ZXIgPVxuICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyBsb2MgPSBfOyB0eHQgPSBMaWRlbnQgcyB9LCBfKSBhcyB0IC0+XG4gICAgICAgICAgICAgICAgaWYgU2V0Lm1lbSB0eXBlc19iZWluZ19kZWZpbmVkIHNcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgXFxcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEgdHlwZSBkZWZpbmVkIGluIHRoZSBjdXJyZW50IHJlY3Vyc2l2ZSBibG9jazogJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgbm90IHN1cHBvcnRlZC5cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdXNpbmcgW0B5b2pzb25fZHJvcF9pZiBfXSBvciBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBcXFxuICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggd2h5IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgYGNvbXBhcmUgLT4gXCJjb21wYXJlXCJcbiAgICAgICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIjY29yZV90eXBlXG4gICAgaW5cbiAgICBkaXNhbGxvd192YXJpYWJsZXMgdHA7XG4gICAgZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIHRwXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9kZWZhdWx0X2ZpZWxkXG4gICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgIGhvd1xuICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgcGF0dFxuICAgICAgICBleHByXG4gICAgICAgIG5hbWVcbiAgICAgICAgdHBcbiAgICAgICAgP3lvanNvbl9vZlxuICAgICAgICBkZWZhdWx0XG4gICAgICAgIGtleVxuICAgID1cbiAgICBsZXQgaXNfZW1wdHkgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHlvanNvbiAtPlxuICAgICAgICBJbnNwZWN0X3lvanNvblxuICAgICAgICAgIChmdW4gfmNudl9leHByIGxvYyB5b2pzb25fZXhwciAtPlxuICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIChbJWUgY252X2V4cHJdIFslZSBkZWZhdWx0XSkgWyVlIHlvanNvbl9leHByXV0pXG4gICAgICB8IChgbm9fYXJnIHwgYGZ1bmMgXyB8IGBjb21wYXJlIHwgYGVxdWFsKSBhcyBob3cgLT5cbiAgICAgICAgbGV0IGVxdWFsaXR5X2YgbG9jID1cbiAgICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgIHwgYG5vX2FyZyAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCBbQG9jYW1sLnBwd2FybmluZ1xuICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0XSBpcyBkZXByZWNhdGVkOiBcXFxuICAgICAgICAgICAgICAgICBwbGVhc2UgdXNlIG9uZSBvZjpcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdCBmXSBhbmQgZ2l2ZSBhbiBcXFxuICAgICAgICAgICAgICAgICBleHBsaWNpdCBlcXVhbGl0eSBmdW5jdGlvbiAoW2YgPSBcXFxuICAgICAgICAgICAgICAgICBQb2x5Lig9KV0gY29ycmVzcG9uZHMgdG8gdGhlIG9sZCBcXFxuICAgICAgICAgICAgICAgICBiZWhhdmlvcilcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC5jb21wYXJlXSBpZiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgdHlwZSBzdXBwb3J0cyBbJWNvbXBhcmVdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQuZXF1YWxdIGlmIHRoZSBcXFxuICAgICAgICAgICAgICAgICB0eXBlIHN1cHBvcnRzIFslZXF1YWxdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBpZiB5b3UgXFxcbiAgICAgICAgICAgICAgICAgd2FudCB0byBjb21wYXJlIHRoZSB5b2pzb24gXFxcbiAgICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpb25zXFxuXCJdXVxuICAgICAgICAgIHwgYGZ1bmMgZiAtPiBmXG4gICAgICAgICAgfCBgY29tcGFyZSAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBjb21wYXJlXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgdHA7XG4gICAgICAgICAgICBbJWV4cHIgWyVjb21wYXJlLmVxdWFsOiBbJXQgdHBdXV1cbiAgICAgICAgICB8IGBlcXVhbCAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBlcXVhbFxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIHRwO1xuICAgICAgICAgICAgWyVleHByIFslZXF1YWw6IFsldCB0cF1dXVxuICAgICAgICBpblxuICAgICAgICBJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSBlcXVhbGl0eV9mIGxvY10gWyVlIGRlZmF1bHRdIFslZSBleHByXV0pXG4gICAgaW5cbiAgICB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkIH5yZW5hbWluZyBwYXR0IGV4cHIgbmFtZSB0cCA/eW9qc29uX29mIGlzX2VtcHR5IGtleVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCB+dHlwZXNfYmVpbmdfZGVmaW5lZCB+cmVuYW1pbmcgbG9jIGZsZHMgfndyYXBfZXhwciA9XG4gICAgbGV0IGNvbGwgKChwYXR0IDogKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QpLCBleHByKSBsZCA9XG4gICAgICBsZXQgbmFtZSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpsZC5wbGRfbmFtZS50eHQgKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZClcbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBsZC5wbGRfbmFtZS5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLllvanNvbl9vZi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICB8IGB5b2pzb25fb3B0aW9uIHRwIC0+XG4gICAgICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgICAgICBsZXQgdm5hbWUgPSBbJWV4cHIgdl0gaW5cbiAgICAgICAgbGV0IGNudl9leHByID1cbiAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB2bmFtZVxuICAgICAgICAgICAgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwKVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpXSB3aXRoXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPiBibmRzXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSB2IC0+XG4gICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICBibmQgOjogYm5kc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFslZSBleHByXV1cbiAgICAgICAgaW5cbiAgICAgICAgcGF0dCwgZXhwclxuICAgICAgfCBgZHJvcF9kZWZhdWx0IGhvdyAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICAobWF0Y2ggQXR0cmlidXRlLmdldCBBdHRycy5kZWZhdWx0IGxkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm5vIGRlZmF1bHQgdG8gZHJvcFwiXG4gICAgICAgICB8IFNvbWUgZGVmYXVsdCAtPlxuICAgICAgICAgICB5b2pzb25fb2ZfZGVmYXVsdF9maWVsZFxuICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgaG93XG4gICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgcGF0dFxuICAgICAgICAgICAgIGV4cHJcbiAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgdHBcbiAgICAgICAgICAgICBkZWZhdWx0XG4gICAgICAgICAgICAga2V5KVxuICAgICAgfCBgZHJvcF9pZiB0ZXN0IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIHlvanNvbl9vZl9yZWNvcmRfZmllbGRcbiAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICBwYXR0XG4gICAgICAgICAgZXhwclxuICAgICAgICAgIG5hbWVcbiAgICAgICAgICB0cFxuICAgICAgICAgIChJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSB0ZXN0XSBbJWUgZXhwcl1dKSlcbiAgICAgICAgICBrZXlcbiAgICAgIHwgYGtlZXAgYXMgdGVzdCAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICAgICAgbGV0IHZuYW1lID0gZXZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgICAgICBsZXQgY252X2V4cHIgPVxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIHZuYW1lXG4gICAgICAgICAgICAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IGBrZWVwIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgKFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnKSA6OiBibmRzXVxuICAgICAgICAgIHwgYG9taXRfbmlsIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbWF0Y2ggWyVlIGNudl9leHByXSB3aXRoXG4gICAgICAgICAgICAgIHwgYE51bGwgLT4gYm5kc1xuICAgICAgICAgICAgICB8IGFyZyAtPiAoWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcpIDo6IGJuZHNdXG4gICAgICAgIGluXG4gICAgICAgICggcGF0dFxuICAgICAgICAsIFslZXhwclxuICAgICAgICAgIGxldCBibmRzID0gWyVlIGJuZHNdIGluXG4gICAgICAgICAgWyVlIGV4cHJdXSApXG4gICAgaW5cbiAgICBsZXQgaW5pdF9leHByID0gd3JhcF9leHByIFslZXhwciBibmRzXSBpblxuICAgIGxldCBwYXR0LCBleHByID0gTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDooW10sIGluaXRfZXhwcikgZmxkcyBpblxuICAgICggcHBhdF9yZWNvcmQgfmxvYyBwYXR0IENsb3NlZFxuICAgICwgWyVleHByXG4gICAgICBsZXQgYm5kcyA6IChzdHJpbmcgKiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnQpIGxpc3QgPSBbXSBpblxuICAgICAgWyVlIGV4cHJdXSApXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiBzdW0gdHlwZXMgKilcblxuICBsZXQgYnJhbmNoX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCByZW5hbWluZyB+bG9jIGNvbnN0cl9saWQgY29uc3RyX3N0ciBhcmdzID1cbiAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IFBjc3RyX3JlY29yZCBsZHMgLT5cbiAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdXSBpblxuICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdFxuICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgbG9jXG4gICAgICAgICAgbGRzXG4gICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBMaXN0IFsgWyVlIGNuc3RyX2V4cHJdOyBgQXNzb2MgWyVlIGV4cHJdIF1dKVxuICAgICAgaW5cbiAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KSAtLT4gZXhwclxuICAgIHwgUGNzdHJfdHVwbGUgcGNkX2FyZ3MgLT5cbiAgICAgIChtYXRjaCBwY2RfYXJncyB3aXRoXG4gICAgICAgfCBbXSAtPlxuICAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIE5vbmUgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdIF1dXG4gICAgICAgfCBhcmdzIC0+XG4gICAgICAgICBsZXQgeW9qc29uX29mX2FyZ3MgPVxuICAgICAgICAgICBMaXN0Lm1hcCB+ZjooeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykpIGFyZ3NcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBjb25zdHJfc3RyXV0gaW5cbiAgICAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgeW9qc29uX29mX2FyZ3MgaW5cbiAgICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICAgbWF0Y2ggcGF0dHMgd2l0aFxuICAgICAgICAgICB8IFsgcGF0dCBdIC0+IHBhdHRcbiAgICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICAgaW5cbiAgICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KVxuICAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgICBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgKGNuc3RyX2V4cHIgOjogdmFycyldXSlcbiAgOztcblxuICBsZXQgeW9qc29uX29mX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCB0cHMgY2RzID1cbiAgICBGdW5fb3JfbWF0Y2guTWF0Y2hcbiAgICAgIChMaXN0Lm1hcCBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICAgbGV0IHJlbmFtaW5nID0gUmVuYW1pbmcub2ZfZ2FkdCB0cHMgY2QgaW5cbiAgICAgICAgIGxldCBjb25zdHJfbGlkID0gTG9jYXRlZC5tYXAgbGlkZW50IGNkLnBjZF9uYW1lIGluXG4gICAgICAgICBsZXQgY29uc3RyX25hbWUgPVxuICAgICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QgaW5cbiAgICAgICAgICAgTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgfD4gZXN0cmluZyB+bG9jOmNkLnBjZF9uYW1lLmxvY1xuICAgICAgICAgaW5cbiAgICAgICAgIGJyYW5jaF9zdW1cbiAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgcmVuYW1pbmdcbiAgICAgICAgICAgfmxvYzpjZC5wY2RfbG9jXG4gICAgICAgICAgIGNvbnN0cl9saWRcbiAgICAgICAgICAgY29uc3RyX25hbWVcbiAgICAgICAgICAgY2QucGNkX2FyZ3MpKVxuICA7O1xuXG4gICgqIEVtcHR5IHR5cGUgKilcbiAgbGV0IHlvanNvbl9vZl9uaWwgbG9jID0gRnVuX29yX21hdGNoLkZ1biBbJWV4cHIgZnVuIF92IC0+IGFzc2VydCBmYWxzZV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdGQgfnR5cGVzX2JlaW5nX2RlZmluZWQgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBjZHMgLT5cbiAgICAgICAgICB5b2pzb25fb2Zfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIChMaXN0Lm1hcCB0cHMgfmY6KGZ1biB4IC0+IHgudHh0KSkgY2RzXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPlxuICAgICAgICAgIGxldCByZW5hbWluZyA9IFJlbmFtaW5nLmlkZW50aXR5IGluXG4gICAgICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICAgICAgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3RcbiAgICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICBsZHNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBBc3NvYyBbJWUgZXhwcl1dKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTWF0Y2ggWyBwYXR0IC0tPiBleHByIF1cbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+XG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IG9wZW4gdHlwZXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4geW9qc29uX29mX25pbCBsb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgUmVuYW1pbmcuaWRlbnRpdHkpIHR5KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19wcml2YXRlX2FsaWFzID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCwgdGQucHR5cGVfbWFuaWZlc3QsIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0LCBTb21lIF8sIFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBpc19wcml2YXRlX2FsaWFzXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogUmVwbGFjZSBhbGwgdHlwZSB2YXJpYWJsZSBieSBfIHRvIGF2b2lkIGdlbmVyYWxpemF0aW9uIHByb2JsZW1zICopXG4gICAgICAgIGxldCB0eV9zcmMgPVxuICAgICAgICAgIGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIHw+IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtYW5pZmVzdCA9XG4gICAgICAgICAgbWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgIHwgU29tZSBtYW5pZmVzdCAtPiBtYW5pZmVzdFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInlvanNvbl9vZl90ZC9uby1tYW5pZmVzdFwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eV9kc3QgPSByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBtYW5pZmVzdCBpblxuICAgICAgICBsZXQgY29lcmNpb24gPSBbJWV4cHIgKHYgOiBbJXQgdHlfc3JjXSA6PiBbJXQgdHlfZHN0XSldIGluXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgY29lcmNpb24gXV1dXG4gICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgcGV4cF9tYXRjaCB+bG9jIGNvZXJjaW9uIG1hdGNoaW5nc11dKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAoKiBQcmV2ZW50IHZpb2xhdGlvbiBvZiB2YWx1ZSByZXN0cmljdGlvbiBhbmQgcHJvYmxlbXMgd2l0aCByZWN1cnNpdmUgdHlwZXMgYnlcbiAgICAgICAgICAgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHZdIF1dXVxuICAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgbWF0Y2hpbmdzKVxuICAgIGluXG4gICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfdHlwZSB0ZCBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9vZl9cIiBeIHR5cGVfbmFtZSBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBwYXR0cyA9IExpc3QubWFwIHRwcyB+ZjooZnVuIGlkIC0+IHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBpZC50eHQpKSBpblxuICAgICAgbGV0IHJlY19mbGFnID1cbiAgICAgICAgbWF0Y2ggdHlwZXNfYmVpbmdfZGVmaW5lZCB3aXRoXG4gICAgICAgIHwgYFJlY3Vyc2l2ZSBfIC0+IFJlY3Vyc2l2ZVxuICAgICAgICB8IGBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICBpblxuICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgcGF0dHMgYm9keSlcbiAgICBpblxuICAgIFsgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5IF1cbiAgOztcblxuICBsZXQgeW9qc29uX29mX3RkcyB+bG9jIH5wYXRoOl8gKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgcmVjX2ZsYWcgPSByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBpblxuICAgIGxldCB0eXBlc19iZWluZ19kZWZpbmVkID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IGBOb25yZWN1cnNpdmVcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGBSZWN1cnNpdmVcbiAgICAgICAgICAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpIChMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPiB0ZC5wdHlwZV9uYW1lLnR4dCkpKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzID0gTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooeW9qc29uX29mX3RkIH50eXBlc19iZWluZ19kZWZpbmVkKSBpblxuICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzID0gc3RydWN0XG4gIGxldCB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGZsZHMgPVxuICAgIGxldCBjb2xsIGxkID1cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bGQucGxkX25hbWUudHh0IChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpXG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgZXN0cmluZyB+bG9jIGtleVxuICAgIGluXG4gICAgZWxpc3QgfmxvYyAoTGlzdC5tYXAgfmY6Y29sbCBmbGRzKVxuICA7O1xuXG4gIGxldCB5b2pzb25fZmllbGRzX29mX3RkIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPiB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGxkc1xuICAgICAgfCBQdHlwZV92YXJpYW50IF8gfCBQdHlwZV9vcGVuIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IHlvanNvbl9maWVsZHMgb25seSB3b3JrcyBvbiByZWNvcmRzXCJcbiAgICBpblxuICAgIGxldCB0eXAgPSBbJXR5cGU6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9maWVsZHNfb2ZfXCIgXiB0eXBlX25hbWUgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgcGF0dHMgPSBMaXN0Lm1hcCB0cHMgfmY6KGZ1biBpZCAtPiBwdmFyIH5sb2MgKFwiX2ZpZWxkc19vZl9cIiBeIGlkLnR4dCkpIGluXG4gICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIChlYWJzdHJhY3QgfmxvYyBwYXR0cyBib2R5KVxuICAgIGluXG4gICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gIDs7XG5cbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfdGRzIH5sb2MgfnBhdGg6XyAoXywgdGRzKSA9XG4gICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIChMaXN0Lm1hcCB0ZHMgfmY6eW9qc29uX2ZpZWxkc19vZl90ZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX29mX3lvanNvbiA9IHN0cnVjdFxuICAoKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuICAoKiBIYW5kbGUgYmFja3RyYWNraW5nIHdoZW4gdmFyaWFudHMgZG8gbm90IG1hdGNoICopXG4gIGxldCBoYW5kbGVfbm9fdmFyaWFudF9tYXRjaCBsb2MgZXhwciA9XG4gICAgWyBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoXSAtLT4gZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBkZXBlbmRpbmcgb24gd2hldGhlciB0byBnZW5lcmF0ZSBhIG1hdGNoIGZvciB0aGUgbGFzdFxuICAgICBjYXNlIG9mIG1hdGNoaW5nIGEgdmFyaWFudCAqKVxuICBsZXQgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hlcyA9XG4gICAgbWF0Y2ggbWF0Y2hfbGFzdCwgbWF0Y2hlcyB3aXRoXG4gICAgfCB0cnVlLCBbIHsgcGNfbGhzID0gXzsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXVxuICAgIHwgXywgWyB7IHBjX2xocyA9IFslcGF0PyBfXTsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXSAtPiBleHByXG4gICAgfCBfIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXRvbV0gbWF0Y2hlc1xuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIG1hbGZvcm1lZCBZb2pzb25zICopXG4gIGxldCBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzIGNhbGwgPVxuICAgIGxldCBjb2xsX3N0cnVjdHMgYWNjIChsb2MsIGxhYmVsKSA9XG4gICAgICAocHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbClcbiAgICAgICAtLT5cbiAgICAgICBtYXRjaCBjYWxsIHdpdGhcbiAgICAgICB8IGBwdGFnX25vX2FyZ3MgLT5cbiAgICAgICAgIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfbm9fYXJncyBfdHBfbG9jIF95b2pzb25dXG4gICAgICAgfCBgcHRhZ190YWtlc19hcmdzIC0+XG4gICAgICAgICBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgX3RwX2xvYyBfeW9qc29uXSlcbiAgICAgIDo6IGFjY1xuICAgIGluXG4gICAgbGV0IGV4Y19ub192YXJpYW50X21hdGNoID1cbiAgICAgIFslcGF0PyBfXSAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKV1cbiAgICBpblxuICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGxfc3RydWN0cyB+aW5pdDpbIGV4Y19ub192YXJpYW50X21hdGNoIF0gcmV2X2Vsc1xuICA7O1xuXG4gICgqIFNwbGl0IHRoZSByb3cgZmllbGRzIG9mIGEgdmFyaWFudCB0eXBlIGludG8gbGlzdHMgb2YgYXRvbWljIHZhcmlhbnRzLFxuICAgICBzdHJ1Y3R1cmVkIHZhcmlhbnRzLCBhdG9taWMgdmFyaWFudHMgKyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzLFxuICAgICBhbmQgc3RydWN0dXJlZCB2YXJpYW50cyArIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMuICopXG4gIGxldCBzcGxpdF9yb3dfZmllbGQgfmxvYyAoYXRvbXMsIHN0cnVjdHMsIGFpbmhzLCBzaW5ocykgcm93X2ZpZWxkID1cbiAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3dfZmllbGQgaW5cbiAgICBtYXRjaCByb3dfZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgIHwgUnRhZyAoY25zdHIsIHRydWUsIFtdKSAtPlxuICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICBsZXQgdHBsID0gbG9jLCBsYWJlbCBpblxuICAgICAgdHBsIDo6IGF0b21zLCBzdHJ1Y3RzLCBgQSB0cGwgOjogYWluaHMsIHNpbmhzXG4gICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBhdG9tcywgKGxvYywgbGFiZWwpIDo6IHN0cnVjdHMsIGFpbmhzLCBgUyAobG9jLCBsYWJlbCwgdHAsIHJvd19maWVsZCkgOjogc2luaHNcbiAgICB8IFJpbmhlcml0IGluaCAtPlxuICAgICAgbGV0IGlpbmggPSBgSSBpbmggaW5cbiAgICAgIGF0b21zLCBzdHJ1Y3RzLCBpaW5oIDo6IGFpbmhzLCBpaW5oIDo6IHNpbmhzXG4gICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwic3BsaXRfcm93X2ZpZWxkLyZcIlxuICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgdHlwZV9jb25zdHJfb2ZfeW9qc29uID8oaW50ZXJuYWwgPSBmYWxzZSkgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGlkIGFyZ3MgfmxvYyB+ZjooZnVuIHMgLT5cbiAgICAgIGxldCBzID0gcyBeIFwiX29mX3lvanNvblwiIGluXG4gICAgICBpZiBpbnRlcm5hbCB0aGVuIFwiX19cIiBeIHMgXiBcIl9fXCIgZWxzZSBzKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlID8oaW50ZXJuYWwgPSBmYWxzZSkgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYub3BhcXVlX29mX3lvanNvbl1cbiAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSB8IFsldHlwZTogX10gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5vcGFxdWVfb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3R1cGxlIHRwOyBfIH0gLT5cbiAgICAgIE1hdGNoICh0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHApKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBvayAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSVvZl95b2pzb246IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIilcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBhcmdzKTsgXyB9IC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biBhcmcgLT5cbiAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBhcmcpKVxuICAgICAgaW5cbiAgICAgIEZ1biAodHlwZV9jb25zdHJfb2ZfeW9qc29uIH5sb2MgfmludGVybmFsIGlkIGFyZ3MpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYXJyb3cgKF8sIF8sIF8pOyBfIH0gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5mdW5fb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZHMsIF8sIF8pOyBfIH0gLT5cbiAgICAgIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFtvZl95b2pzb25dIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGZwcyBpblxuICAgIFsgWyVwYXQ/IGBMaXN0IFslcCBwbGlzdCB+bG9jIHBhdHRzXV1cbiAgICAgIC0tPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyAocGV4cF90dXBsZSB+bG9jIHZhcnMpXG4gICAgOyBbJXBhdD8geW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICBbJWUgZWludCB+bG9jIG5dXG4gICAgICAgICAgeW9qc29uXVxuICAgIF1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzICopXG4gIGFuZCBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oID1cbiAgICBsZXQgbG9jID0gaW5oLnB0eXBfbG9jIGluXG4gICAgbGV0IGZ1bmNfZXhwciA9IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5pbnRlcm5hbDp0cnVlIGluaCBpblxuICAgIGxldCBhcHAgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgICBsZXQgZnVuX2V4cHIgPSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jIGZ1bmNfZXhwciBpblxuICAgICAgRnVuIFslZXhwciBbJWUgZnVuX2V4cHJdIF95b2pzb25dXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZXhjID1cbiAgICAgIGhhbmRsZV9ub192YXJpYW50X21hdGNoXG4gICAgICAgIGxvY1xuICAgICAgICAoaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcylcbiAgICBpblxuICAgIGxldCBuZXdfb3RoZXJfbWF0Y2hlcyA9XG4gICAgICBbIFslcGF0PyBfXVxuICAgICAgICAtLT4gcGV4cF90cnlcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICAoWyVlIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgYXBwXVxuICAgICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgICAgIG1hdGNoX2V4Y1xuICAgICAgXVxuICAgIGluXG4gICAgbmV3X290aGVyX21hdGNoZXMsIHRydWVcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBhdG9taWMgdmFyaWFudHMgKilcbiAgYW5kIG1rX3ZhcmlhbnRfbWF0Y2hfYXRvbSB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfYXRvbXNfaW5ocyB+cmV2X3N0cnVjdHMgPVxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBBIChsb2MsIGxhYmVsKSAtPlxuICAgICAgICBsZXQgbmV3X21hdGNoID1cbiAgICAgICAgICBwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKVxuICAgICAgICAgIC0tPiBwZXhwX3ZhcmlhbnQgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSBOb25lXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPVxuICAgICAgbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VsczpyZXZfc3RydWN0cyBgcHRhZ190YWtlc19hcmdzXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfYXRvbXNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X2F0b21zX2luaHNcbiAgICBpblxuICAgIGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoX2F0b21zX2luaHNcblxuICAoKiBWYXJpYW50IGNvbnZlcnNpb25zICopXG5cbiAgKCogTWF0Y2ggYXJndW1lbnRzIG9mIGNvbnN0cnVjdG9ycyAodmFyaWFudHMgb3Igc3VtIHR5cGVzKSAqKVxuICBhbmQgbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50IGxhYmVsIHRwcyA9XG4gICAgbGV0IGNuc3RyX2xhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsIGluXG4gICAgbGV0IGNuc3RyIHZhcnNfZXhwciA9XG4gICAgICBpZiBpc192YXJpYW50XG4gICAgICB0aGVuIHBleHBfdmFyaWFudCB+bG9jIGNuc3RyX2xhYmVsIChTb21lIHZhcnNfZXhwcilcbiAgICAgIGVsc2UgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgKFNvbWUgdmFyc19leHByKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgZ29vZF9hcmdfbWF0Y2ggPVxuICAgICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgICAgbGV0IGdvb2RfYXJnX21hdGNoID1cbiAgICAgICAgbGV0IHZhcnNfZXhwciA9XG4gICAgICAgICAgbWF0Y2ggdmFycyB3aXRoXG4gICAgICAgICAgfCBbIHZhcl9leHByIF0gLT4gdmFyX2V4cHJcbiAgICAgICAgICB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIHZhcnNcbiAgICAgICAgaW5cbiAgICAgICAgY25zdHIgdmFyc19leHByXG4gICAgICBpblxuICAgICAgYmluZGluZ3MsIHBhdHRzLCBnb29kX2FyZ19tYXRjaFxuICAgIGluXG4gICAgWyVleHByXG4gICAgICBtYXRjaCB5b2pzb25fYXJncyB3aXRoXG4gICAgICB8IFslcCBwbGlzdCB+bG9jIHBhdHRzXSAtPiBbJWUgcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZ29vZF9hcmdfbWF0Y2hdXG4gICAgICB8IF8gLT5cbiAgICAgICAgWyVlXG4gICAgICAgICAgaWYgaXNfdmFyaWFudFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICBfdGFnXG4gICAgICAgICAgICAgICAgX3lvanNvbl1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgX3RhZ1xuICAgICAgICAgICAgICAgIF95b2pzb25dXV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBzdHJ1Y3R1cmVkIHZhcmlhbnRzICopXG4gIGFuZCBta192YXJpYW50X21hdGNoX3N0cnVjdCB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfc3RydWN0c19pbmhzIH5yZXZfYXRvbXNcbiAgICA9XG4gICAgbGV0IGhhc19zdHJ1Y3RzX3JlZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBTIChsb2MsIGxhYmVsLCB0cCwgX3JvdykgLT5cbiAgICAgICAgaGFzX3N0cnVjdHNfcmVmIDo9IHRydWU7XG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbWtfY25zdHJfYXJnc19tYXRjaFxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5sb2M6dHAucHR5cF9sb2NcbiAgICAgICAgICAgIH5pc192YXJpYW50OnRydWVcbiAgICAgICAgICAgIGxhYmVsXG4gICAgICAgICAgICBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuZXdfbWF0Y2ggPVxuICAgICAgICAgIFslcGF0PyBbJXAgcHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldIGFzIF90YWddIC0tPiBleHByXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPSBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzOnJldl9hdG9tcyBgcHRhZ19ub19hcmdzIGluXG4gICAgbGV0IG1hdGNoX3N0cnVjdHNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X3N0cnVjdHNfaW5oc1xuICAgIGluXG4gICAgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hfc3RydWN0c19pbmhzLCAhaGFzX3N0cnVjdHNfcmVmXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgaGFuZGxpbmcgYXRvbWljIGFuZCBzdHJ1Y3R1cmVkIHZhcmlhbnRzIChpLmUuIG5vdFxuICAgICBpbmNsdWRlZCB2YXJpYW50IHR5cGVzKSAqKVxuICBhbmQgaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkX2xpc3QgPVxuICAgIGxldCByZXZfYXRvbXMsIHJldl9zdHJ1Y3RzLCByZXZfYXRvbXNfaW5ocywgcmV2X3N0cnVjdHNfaW5ocyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjooc3BsaXRfcm93X2ZpZWxkIH5sb2MpIH5pbml0OihbXSwgW10sIFtdLCBbXSkgcm93X2ZpZWxkX2xpc3RcbiAgICBpblxuICAgIGxldCBtYXRjaF9zdHJ1Y3QsIGhhc19zdHJ1Y3RzID1cbiAgICAgIG1rX3ZhcmlhbnRfbWF0Y2hfc3RydWN0IH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9zdHJ1Y3RzX2luaHMgfnJldl9hdG9tc1xuICAgIGluXG4gICAgbGV0IG1heWJlX3lvanNvbl9hcmdzX3BhdHQgPSBpZiBoYXNfc3RydWN0cyB0aGVuIFslcGF0PyB5b2pzb25fYXJnc10gZWxzZSBbJXBhdD8gX10gaW5cbiAgICBbIFslcGF0PyBgTGlzdCBbIGBTdHJpbmcgYXRvbSBdIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWtfdmFyaWFudF9tYXRjaF9hdG9tXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBmdWxsX3R5cGVcbiAgICAgICAgICAgIH5yZXZfYXRvbXNfaW5oc1xuICAgICAgICAgICAgfnJldl9zdHJ1Y3RzXG4gICAgOyBbJXBhdD8gYExpc3QgKGBTdHJpbmcgYXRvbSA6OiBbJXAgbWF5YmVfeW9qc29uX2FyZ3NfcGF0dF0pIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWF0Y2hfc3RydWN0XG4gICAgOyBbJXBhdD8gYExpc3QgKGBMaXN0IF8gOjogXykgYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IGBMaXN0IFtdIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICBdXG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgdmFyaWFudHMgKilcbiAgYW5kIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcykgPVxuICAgIGxldCBpc19jb250YWluZWQsIGZ1bGxfdHlwZSA9XG4gICAgICBtYXRjaCBmdWxsX3R5cGUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIHB0eXBfdmFyaWFudCB+bG9jIHJvd19maWVsZHMgQ2xvc2VkIE5vbmVcbiAgICAgIHwgU29tZSBmdWxsX3R5cGUgLT4gZmFsc2UsIGZ1bGxfdHlwZVxuICAgIGluXG4gICAgbGV0IHRvcF9tYXRjaCA9XG4gICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgIHwgeyBwcmZfZGVzYyA9IFJpbmhlcml0IGluaDsgXyB9IDo6IHJlc3QgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGluaCByb3dfZmllbGRzID1cbiAgICAgICAgICBsZXQgY2FsbCA9XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgKFslZVxuICAgICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByXG4gICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmludGVybmFsOnRydWUgaW5oKV1cbiAgICAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGNhbGxcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgICAgICBtYXRjaCBoLnByZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCBpbmggLT4gbG9vcCBpbmggdFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcmZ0YWdfbWF0Y2hlcyA9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gcmZ0YWdfbWF0Y2hlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHBleHBfdHJ5IH5sb2MgY2FsbCAoaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2ggbG9jIGV4cHIpXG4gICAgICAgIGluXG4gICAgICAgIFsgWyVwYXQ/IHlvanNvbl0gLS0+IGxvb3AgaW5oIHJlc3QgXVxuICAgICAgfCBfIDo6IF8gLT4gaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkc1xuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIGltcG9zc2libGUgKilcbiAgICBpblxuICAgIGlmIGlzX2NvbnRhaW5lZFxuICAgIHRoZW5cbiAgICAgIEZ1blxuICAgICAgICBbJWV4cHJcbiAgICAgICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgICAgICB0cnkgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSB0b3BfbWF0Y2hdIHdpdGhcbiAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoIC0+XG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgZWxzZSBNYXRjaCB0b3BfbWF0Y2hcblxuICBhbmQgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgIH5sb2NcbiAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlXG4gICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICBpblxuICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgIGluXG4gICAgbWF0Y2ggdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgdHAgd2l0aFxuICAgIHwgRnVuIGZ1bl9leHByIC0+IEZ1biAocGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZnVuX2V4cHIpXG4gICAgfCBNYXRjaCBtYXRjaGluZ3MgLT5cbiAgICAgIE1hdGNoXG4gICAgICAgIFsgWyVwYXQ/IGFyZ11cbiAgICAgICAgICAtLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgKHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXJnXSBtYXRjaGluZ3MpXG4gICAgICAgIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBleHRyYWN0aW5nIHJlY29yZCBmaWVsZHMgKilcbiAgbGV0IG1rX2V4dHJhY3RfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgPVxuICAgIGxldCByZWMgbG9vcCBpbml0cyBub19hcmdzIGFyZ3MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpbml0cywgbm9fYXJncywgYXJnc1xuICAgICAgfCBsZCA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgICBsZXQgbm0gPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgICAgbGV0IGtleSA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpubSAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKSBpblxuICAgICAgICAobWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkLCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGB5b2pzb25fb3B0aW9uIHRwKSwgXyB8IChOb25lIHwgU29tZSAoYGRlZmF1bHQgXykpLCB0cCAtPlxuICAgICAgICAgICBsZXQgaW5pdHMgPSBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZV0gOjogaW5pdHMgaW5cbiAgICAgICAgICAgbGV0IHVucm9sbGVkID1cbiAgICAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBbJWV4cHIgX2ZpZWxkX3lvanNvbl1cbiAgICAgICAgICAgICAgICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB0cClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgICAgIChwc3RyaW5nIH5sb2Mga2V5XG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWUgPSBbJWUgdW5yb2xsZWRdIGluXG4gICAgICAgICAgICAgICAgICBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXVxuICAgICAgICAgICAgICAgICAgOj0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBmdmFsdWVcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgZHVwbGljYXRlcyA6PSBmaWVsZF9uYW1lIDo6IFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlc10pXG4gICAgICAgICAgICAgOjogYXJnc1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsb29wIGluaXRzIG5vX2FyZ3MgYXJncyBtb3JlX2ZsZHMpXG4gICAgaW5cbiAgICBsZXQgaGFuZGxlX2V4dHJhID1cbiAgICAgIFsgKFslcGF0PyBfXVxuICAgICAgICAgLS0+XG4gICAgICAgICBpZiBhbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgIHRoZW4gWyVleHByICgpXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICBpZiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApXG4gICAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICB0aGVuIGV4dHJhIDo9IGZpZWxkX25hbWUgOjogUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYVxuICAgICAgICAgICAgIGVsc2UgKCldKVxuICAgICAgXVxuICAgIGluXG4gICAgbG9vcCBbXSBoYW5kbGVfZXh0cmEgaGFuZGxlX2V4dHJhIChMaXN0LnJldiBmbGRzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGhhbmRsaW5nIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgcmVjb3JkIGZpZWxkcyAqKVxuICBsZXQgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwciA9XG4gICAgbGV0IGhhc19ub25vcHRfZmllbGRzID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHJlc190cGxzLCBiaV9sc3QsIGdvb2RfcGF0dHMgPVxuICAgICAgbGV0IHJlYyBsb29wICgocmVzX3RwbHMsIGJpX2xzdCwgZ29vZF9wYXR0cykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKHsgcGxkX25hbWUgPSB7IHR4dCA9IG5tOyBsb2MgfTsgXyB9IGFzIGxkKSA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgICBsZXQgZmxkID0gWyVleHByIFBweF95b2pzb25fY29udl9saWIuKCAhICkgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV1dIGluXG4gICAgICAgICAgbGV0IG1rX2RlZmF1bHQgbG9jID1cbiAgICAgICAgICAgIGJpX2xzdCwgWyVwYXQ/IFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXSA6OiBnb29kX3BhdHRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbmV3X2JpX2xzdCwgbmV3X2dvb2RfcGF0dHMgPVxuICAgICAgICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoYGRlZmF1bHQgXyB8IGB5b2pzb25fb3B0aW9uIF8pIC0+IG1rX2RlZmF1bHQgbG9jXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaGFzX25vbm9wdF9maWVsZHMgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgKCBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgWyVlIGZsZF0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAsIFslZSBlc3RyaW5nIH5sb2Mgbm1dXVxuICAgICAgICAgICAgICAgIDo6IGJpX2xzdFxuICAgICAgICAgICAgICAsIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXVxuICAgICAgICAgICAgICAgIDo6IGdvb2RfcGF0dHMgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFjYyA9IFslZXhwciBbJWUgZmxkXV0gOjogcmVzX3RwbHMsIG5ld19iaV9sc3QsIG5ld19nb29kX3BhdHRzIGluXG4gICAgICAgICAgbG9vcCBhY2MgbW9yZV9mbGRzXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICBpblxuICAgICAgbG9vcCAoW10sIFtdLCBbXSkgKExpc3QucmV2IGZsZHMpXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZ29vZF9leHByID1cbiAgICAgIGlmIGhhc19wb2x5XG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGNudnQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwbGRfbmFtZSA9IHsgdHh0ID0gbm07IF8gfTsgXyB9IC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMgd2l0aFxuICAgICAgICB8IFsgbWF0Y2hfZ29vZF9leHByIF0gLT4gbWF0Y2hfZ29vZF9leHByXG4gICAgICAgIHwgbWF0Y2hfZ29vZF9leHBycyAtPiBwZXhwX3R1cGxlIH5sb2MgbWF0Y2hfZ29vZF9leHBycylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY252dCBsZCA9XG4gICAgICAgICAgbGV0IG5tID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGBkZWZhdWx0IGRlZmF1bHQpIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT4gWyVlIGRlZmF1bHRdXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIHYgLT4gdl1cbiAgICAgICAgICAgIHwgU29tZSAoYHlvanNvbl9vcHRpb24gXykgfCBOb25lIC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9jYXRlZC5saWRlbnQgfmxvYyBubSwgdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgd3JhcF9leHByIChwZXhwX3JlY29yZCB+bG9jIChMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMpIE5vbmUpKVxuICAgIGluXG4gICAgbGV0IGV4cHIsIHBhdHQgPVxuICAgICAgbWF0Y2ggcmVzX3RwbHMsIGdvb2RfcGF0dHMgd2l0aFxuICAgICAgfCBbIHJlc19leHByIF0sIFsgcmVzX3BhdHQgXSAtPiByZXNfZXhwciwgcmVzX3BhdHRcbiAgICAgIHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgcmVzX3RwbHMsIHBwYXRfdHVwbGUgfmxvYyBnb29kX3BhdHRzXG4gICAgaW5cbiAgICBpZiAhaGFzX25vbm9wdF9maWVsZHNcbiAgICB0aGVuXG4gICAgICBwZXhwX21hdGNoXG4gICAgICAgIH5sb2NcbiAgICAgICAgZXhwclxuICAgICAgICBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwclxuICAgICAgICA7IFslcGF0PyBfXVxuICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50c1xuICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICAgICBbJWUgZWxpc3QgfmxvYyBiaV9sc3RdXVxuICAgICAgICBdXG4gICAgZWxzZSBwZXhwX21hdGNoIH5sb2MgZXhwciBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgY29udmVydGluZyByZWNvcmQgZmllbGRzICopXG5cbiAgbGV0IG1rX2Nudl9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByID1cbiAgICBsZXQgZXhwcl9yZWZfaW5pdHMsIF9tY19ub19hcmdzX2ZpZWxkcywgbWNfZmllbGRzX3dpdGhfYXJncyA9XG4gICAgICBta19leHRyYWN0X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpXG4gICAgaW5cbiAgICBsZXQgZmllbGRfcmVmcyA9XG4gICAgICBMaXN0Lm1hcDJfZXhuXG4gICAgICAgIGZsZHNcbiAgICAgICAgZXhwcl9yZWZfaW5pdHNcbiAgICAgICAgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IGluaXQgLT5cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHZhciB+bG9jIChuYW1lIF4gXCJfZmllbGRcIikpIH5leHByOlslZXhwciByZWYgWyVlIGluaXRdXSlcbiAgICBpblxuICAgIHBleHBfbGV0XG4gICAgICB+bG9jXG4gICAgICBOb25yZWN1cnNpdmVcbiAgICAgIChmaWVsZF9yZWZzXG4gICAgICAgQCBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OlslcGF0PyBkdXBsaWNhdGVzXSB+ZXhwcjpbJWV4cHIgcmVmIFtdXVxuICAgICAgICAgOyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpbJXBhdD8gZXh0cmFdIH5leHByOlslZXhwciByZWYgW11dXG4gICAgICAgICBdKVxuICAgICAgWyVleHByXG4gICAgICAgIGxldCByZWMgaXRlciA9XG4gICAgICAgICAgWyVlXG4gICAgICAgICAgICBwZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgWyBbJXBhdD8gKGZpZWxkX25hbWUsIF9maWVsZF95b2pzb24pIDo6IHRhaWxdXG4gICAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgICAgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZmllbGRfbmFtZV0gbWNfZmllbGRzX3dpdGhfYXJnc107XG4gICAgICAgICAgICAgICAgICBpdGVyIHRhaWxdXG4gICAgICAgICAgICAgIDsgWyVwYXQ/IFtdXSAtLT4gWyVleHByICgpXVxuICAgICAgICAgICAgICBdXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIGZpZWxkX3lvanNvbnM7XG4gICAgICAgIG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcyB3aXRoXG4gICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfZHVwbGljYXRlX2ZpZWxkc1xuICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcylcbiAgICAgICAgICAgIHlvanNvblxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgKG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEgd2l0aFxuICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEpXG4gICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgfCBbXSAtPiBbJWUgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwcl0pXVxuICA7O1xuXG4gIGxldCBpc19wb2x5IChfLCBmbGRzKSA9XG4gICAgTGlzdC5leGlzdHMgZmxkcyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgeyBwbGRfdHlwZSA9IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfTsgXyB9IC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgOztcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICBsb2NcbiAgICAgICAgZmxkc1xuICAgICAgICB+d3JhcF9leHByXG4gICAgPVxuICAgIGxldCBoYXNfcG9seSA9IGlzX3BvbHkgKGxvYywgZmxkcykgaW5cbiAgICBsZXQgY252X2ZpZWxkcyA9XG4gICAgICBta19jbnZfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwclxuICAgIGluXG4gICAgaWYgaGFzX3BvbHlcbiAgICB0aGVuIChcbiAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgbGV0IHBhdHMgPVxuICAgICAgICAgIExpc3QubWFwIGZsZHMgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IC0+IHB2YXIgfmxvYyBuYW1lKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwYXRzIHdpdGhcbiAgICAgICAgfCBbIHBhdCBdIC0+IHBhdFxuICAgICAgICB8IHBhdHMgLT4gcHBhdF90dXBsZSB+bG9jIHBhdHNcbiAgICAgIGluXG4gICAgICBsZXQgcmVjb3JkX2RlZiA9XG4gICAgICAgIHdyYXBfZXhwclxuICAgICAgICAgIChwZXhwX3JlY29yZFxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAoTGlzdC5tYXAgZmxkcyB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gLT5cbiAgICAgICAgICAgICAgICBMb2NhdGVkLmxpZGVudCB+bG9jIG5hbWUsIGV2YXIgfmxvYyBuYW1lKSlcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgaW5cbiAgICAgIHBleHBfbGV0XG4gICAgICAgIH5sb2NcbiAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGF0dCB+ZXhwcjpjbnZfZmllbGRzIF1cbiAgICAgICAgcmVjb3JkX2RlZilcbiAgICBlbHNlIGNudl9maWVsZHNcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciByZWNvcmRzICopXG4gIGxldCByZWNvcmRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgTWF0Y2hcbiAgICAgIFsgWyVwYXQ/IGBBc3NvYyBmaWVsZF95b2pzb25zIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgIGZsZHNcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIHggLT4geClcbiAgICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b21cbiAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgIHlvanNvbl1cbiAgICAgIF1cbiAgOztcblxuICAoKiBTdW0gdHlwZSBjb252ZXJzaW9ucyAqKVxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciB3ZWxsLWZvcm1lZCBZb2pzb25zIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbGFiZWwgPSBMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwgaW5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3JlY29yZCBmaWVsZHM7IF8gfSAtPlxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX2NkIGNkKSlcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICB+d3JhcF9leHByOihmdW4gZSAtPlxuICAgICAgICAgICAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSAoU29tZSBlKSlcbiAgICAgICAgaW5cbiAgICAgICAgWyVwYXQ/XG4gICAgICAgICAgICAgICBgTGlzdCBbIGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZyk7IGBBc3NvYyBmaWVsZF95b2pzb25zIF1cbiAgICAgICAgICBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBleHByXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyBjZDtcbiAgICAgICAgWyVwYXQ/IGBMaXN0IFsgYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIF1dXG4gICAgICAgIC0tPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSBOb25lXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSAoXyA6OiBfIGFzIHRwcyk7IF8gfSAtPlxuICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgY2Q7XG4gICAgICAgIFslcGF0P1xuICAgICAgICAgICAgICAgYExpc3QgKGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZykgOjogeW9qc29uX2FyZ3MpIGFzIF95b2pzb25dXG4gICAgICAgIC0tPiBta19jbnN0cl9hcmdzX21hdGNoIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfmlzX3ZhcmlhbnQ6ZmFsc2UgbGFiZWwgdHBzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIG1hbGZvcm1lZCBZb2pzb25zIHdpdGggZ29vZCB0YWdzXG4gICAgIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19iYWRfc3VtX21hdGNoZXMgKGxvYywgY2RzKSA9XG4gICAgTGlzdC5tYXAgY2RzIH5mOihmdW4gKGNkLCBsYWJlbCkgLT5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIFtdOyBfIH0gLT5cbiAgICAgICAgWyVwYXQ/IGBMaXN0IChgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gOjogXykgYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIF90cF9sb2MgeW9qc29uXVxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgKF8gOjogXykgfCBQY3N0cl9yZWNvcmQgXzsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIF90cF9sb2MgeW9qc29uXSlcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBzdW0gdHlwZXMgKilcbiAgbGV0IHN1bV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgYWx0cykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgbGV0IGFsdHMgPVxuICAgICAgTGlzdC5tYXAgYWx0cyB+ZjooZnVuIGNkIC0+IGNkLCBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QpXG4gICAgaW5cbiAgICBNYXRjaFxuICAgICAgKExpc3QuY29uY2F0XG4gICAgICAgICBbIG1rX2dvb2Rfc3VtX21hdGNoZXMgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgYWx0cylcbiAgICAgICAgIDsgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGFsdHMpXG4gICAgICAgICA7IFsgWyVwYXQ/IGBMaXN0IChgTGlzdCBfIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtXG4gICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICA7IFslcGF0PyBgTGlzdCBbXSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtXG4gICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICAgICAgICAgXVxuICAgICAgICAgXSlcbiAgOztcblxuICAoKiBFbXB0eSB0eXBlICopXG4gIGxldCBuaWxfb2ZfeW9qc29uIGxvYyA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBGdW5cbiAgICAgIFslZXhwclxuICAgICAgICBmdW4geW9qc29uIC0+IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBfdHBfbG9jIHlvanNvbl1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYzpfIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGZ1bGxfdHlwZSA9XG4gICAgICBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB8PiByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3Jlc1xuICAgIGluXG4gICAgbGV0IGlzX3ByaXZhdGUgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfcHJpdmF0ZSB3aXRoXG4gICAgICB8IFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgfCBQdWJsaWMgLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIGlzX3ByaXZhdGVcbiAgICB0aGVuIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwib2ZfeW9qc29uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgdHlwZVwiO1xuICAgIGxldCBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb24gPVxuICAgICAgbWF0Y2ggaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzpmYWxzZSB3aXRoXG4gICAgICB8IGBEZWZpbml0ZWx5IC0+IHRydWVcbiAgICAgIHwgYE1heWJlIC0+IHBvbHlcbiAgICAgIHwgYFN1cmVseV9ub3QgLT5cbiAgICAgICAgaWYgcG9seVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICBcInlvanNvbl9wb2x5IGFubm90YXRpb24gb24gYSB0eXBlIHRoYXQgaXMgc3VyZWx5IG5vdCBhIHBvbHltb3JwaGljIHZhcmlhbnRcIjtcbiAgICAgICAgZmFsc2VcbiAgICBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhbHRzIC0+XG4gICAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHRkO1xuICAgICAgICAgIHN1bV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKHRkLnB0eXBlX2xvYywgYWx0cylcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgbGJscyAtPlxuICAgICAgICAgIHJlY29yZF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX3RkIHRkKSlcbiAgICAgICAgICAgIChsb2MsIGxibHMpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPlxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiBvcGVuIHR5cGVzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHRkO1xuICAgICAgICAgIChtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBuaWxfb2ZfeW9qc29uIHRkLnB0eXBlX2xvY1xuICAgICAgICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgICAgICB0eXBlX29mX3lvanNvblxuICAgICAgICAgICAgICAgfmZ1bGxfdHlwZVxuICAgICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgICAgIH5pbnRlcm5hbDpjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHR5KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgKCogUHJldmVudCB2aW9sYXRpb24gb2YgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHByb2JsZW1zIHdpdGhcbiAgICAgICAgIHJlY3Vyc2l2ZSB0eXBlcyBieSBldGEtZXhwYW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zICopXG4gICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHQgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHRdIF1dXVxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIG1hdGNoaW5nc1xuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX25hbWUgPSB0eXBlX25hbWUgXiBcIl9vZl95b2pzb25cIiBpblxuICAgIGxldCBpbnRlcm5hbF9uYW1lID0gXCJfX1wiIF4gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uX19cIiBpblxuICAgIGxldCBhcmdfcGF0dHMsIGFyZ19leHBycyA9XG4gICAgICBMaXN0LnVuemlwXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgbGV0IG5hbWUgPSBcIl9vZl9cIiBeIHRwLnR4dCBpblxuICAgICAgICAgICAgIHB2YXIgfmxvYyBuYW1lLCBldmFyIH5sb2MgbmFtZSlcbiAgICAgICAgICAgdHBzKVxuICAgIGluXG4gICAgbGV0IGJpbmRfdHBfbG9jX2luID1cbiAgICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMuJXNcIiBwYXRoIHR5cGVfbmFtZSBpblxuICAgICAgZnVuIGUgLT5cbiAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSAtPlxuICAgICAgICAgICgqIHdlIGRlZmluaXRlbHkgZG9uJ3QgdXNlIHRoZSBzdHJpbmcsIHNvIGNsZWFuIHVwIHRoZSBnZW5lcmF0ZWQgY29kZSBhIGJpdCAqKVxuICAgICAgICAgIGVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgX3RwX2xvYyA9IFslZSBlc3RyaW5nIH5sb2MgZnVsbF90eXBlX25hbWVdIGluXG4gICAgICAgICAgICBbJWUgZV1dXG4gICAgaW5cbiAgICBsZXQgaW50ZXJuYWxfZnVuX2JvZHkgPVxuICAgICAgaWYgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICB0aGVuXG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoYmluZF90cF9sb2NfaW5cbiAgICAgICAgICAgICAoZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHkpKSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGxldCBuZWVkX3RwX2xvYywgYm9keV9iZWxvd19sYW1iZGFzID1cbiAgICAgICAgaWYgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBub192YXJpYW50X21hdGNoX21jID1cbiAgICAgICAgICAgIFsgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaF1cbiAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGludGVybmFsX2NhbGwgPVxuICAgICAgICAgICAgbGV0IGludGVybmFsX2V4cHIgPSBldmFyIH5sb2MgaW50ZXJuYWxfbmFtZSBpblxuICAgICAgICAgICAgZWFwcGx5IH5sb2MgaW50ZXJuYWxfZXhwciAoYXJnX2V4cHJzIEAgWyBbJWV4cHIgeW9qc29uXSBdKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyeV93aXRoID0gcGV4cF90cnkgfmxvYyBpbnRlcm5hbF9jYWxsIG5vX3ZhcmlhbnRfbWF0Y2hfbWMgaW5cbiAgICAgICAgICBmYWxzZSwgYmluZF90cF9sb2NfaW4gWyVleHByIGZ1biB5b2pzb24gLT4gWyVlIHRyeV93aXRoXV0pXG4gICAgICAgIGVsc2UgdHJ1ZSwgYm9keVxuICAgICAgaW5cbiAgICAgIGxldCBib2R5X3dpdGhfbGFtYmRhcyA9XG4gICAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlY1xuICAgICAgICAgIH5yZWNfZmxhZ1xuICAgICAgICAgIChlYWJzdHJhY3QgfmxvYyBhcmdfcGF0dHMgYm9keV9iZWxvd19sYW1iZGFzKVxuICAgICAgaW5cbiAgICAgIGlmIG5lZWRfdHBfbG9jIHRoZW4gYmluZF90cF9sb2NfaW4gYm9keV93aXRoX2xhbWJkYXMgZWxzZSBib2R5X3dpdGhfbGFtYmRhc1xuICAgIGluXG4gICAgbGV0IG1rX2JpbmRpbmcgZnVuY19uYW1lIGJvZHkgPVxuICAgICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfdHlwZSB0ZCBpblxuICAgICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gICAgaW5cbiAgICBsZXQgaW50ZXJuYWxfYmluZGluZ3MgPVxuICAgICAgbWF0Y2ggaW50ZXJuYWxfZnVuX2JvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgYm9keSAtPiBbIG1rX2JpbmRpbmcgaW50ZXJuYWxfbmFtZSBib2R5IF1cbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9iaW5kaW5nID0gbWtfYmluZGluZyBleHRlcm5hbF9uYW1lIGV4dGVybmFsX2Z1bl9ib2R5IGluXG4gICAgaW50ZXJuYWxfYmluZGluZ3MsIFsgZXh0ZXJuYWxfYmluZGluZyBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcbiAgbGV0IHRkc19vZl95b2pzb24gfmxvYyB+cG9seSB+cGF0aCAocmVjX2ZsYWcsIHRkcykgPVxuICAgIGxldCB0eXBldmFyX2hhbmRsaW5nID0gYG9rIGluXG4gICAgbGV0IHNpbmdsZXRvbiA9XG4gICAgICBtYXRjaCB0ZHMgd2l0aFxuICAgICAgfCBbIF8gXSAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIHNpbmdsZXRvblxuICAgIHRoZW4gKFxuICAgICAgbGV0IHJlY19mbGFnID0gcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgaW5cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpbnRlcm5hbHMgQCBleHRlcm5hbHMpXG4gICAgICAgIGluXG4gICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIFJlY3Vyc2l2ZSBiaW5kaW5nc1xuICAgICAgfCBOb25yZWN1cnNpdmUgLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIGludGVybmFsc1xuICAgICAgICAgIEAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIGV4dGVybmFscykpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5wb2x5IH5sb2MgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnRlcm5hbHMgQCBleHRlcm5hbHMpXG4gICAgICBpblxuICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgYmluZGluZ3MpXG4gIDs7XG5cbiAgbGV0IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5wYXRoIGN0eXAgPVxuICAgIGxldCBsb2MgPSB7IGN0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgZnAgPSB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBjdHlwIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIFslZSBmdW5fZXhwcl0geW9qc29uXVxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIG1hdGNoaW5nc1xuICAgIGluXG4gICAgbGV0IGZ1bGxfdHlwZV9uYW1lID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgbGluZSAlaTogJXNcIlxuICAgICAgICBwYXRoXG4gICAgICAgIGxvYy5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAgICAgKHN0cmluZ19vZl9jb3JlX3R5cGUgY3R5cClcbiAgICBpblxuICAgIFslZXhwclxuICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICBsZXQgX3RwX2xvYyA9IFslZSBlc3RyaW5nIH5sb2MgZnVsbF90eXBlX25hbWVdIGluXG4gICAgICAgIFslZSBib2R5XV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX2V4dGVuc2lvbiB0eSA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi50eXBlX29mX3lvanNvbl9vZiB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gdHlcbiAgOztcblxuICBsZXQgY29yZV90eXBlIHR5ID1cbiAgICBTdHJfZ2VuZXJhdGVfeW9qc29uX29mLnlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOmBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciB0eVxuICAgIHw+IEZ1bl9vcl9tYXRjaC5leHByIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfVxuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsID0gU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWdcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mLnlvanNvbl9vZl90ZHNcbmVuZFxuXG5tb2R1bGUgWW9qc29uX2ZpZWxkcyA9IHN0cnVjdFxuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzLnlvanNvbl9maWVsZHNfb2ZfdGRzXG5lbmRcblxubW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl9vZl95b2pzb24gfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSA9XG4gICAgU3RyX2dlbmVyYXRlX29mX3lvanNvbi50eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHJcbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX29mX3lvanNvbi50ZHNfb2ZfeW9qc29uXG5lbmRcblxubW9kdWxlIFNpZ195b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IG1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzID1cbiAgICBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzXG4gICAgQCBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZyB+cG9seTpmYWxzZSB+bG9jIH5wYXRoIGRlY2xzXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgfmxvYyB+cGF0aCAoKF9yZiwgdGRzKSBhcyBkZWNscykgPVxuICAgIG1hdGNoXG4gICAgICBta19uYW1lZF9zaWdcbiAgICAgICAgfmxvY1xuICAgICAgICB+c2dfbmFtZTpcIlBweF95b2pzb25fY29udl9saWIuWW9qc29uYWJsZS5TXCJcbiAgICAgICAgfmhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50OmZhbHNlXG4gICAgICAgIHRkc1xuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5jbHVkZV9pbmZvcyAtPiBbIHBzaWdfaW5jbHVkZSB+bG9jIGluY2x1ZGVfaW5mb3MgXVxuICAgIHwgTm9uZSAtPiBta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc29vX3J1bnRpbWUuUnVudGltZV92ZXJzaW9uICopXG5tb2R1bGUgUnVudGltZV92ZXJzaW9uID0gSnNvb19ydW50aW1lX19SdW50aW1lX3ZlcnNpb25cblxubW9kdWxlIEpzb29fcnVudGltZV9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCJtb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgdHlwZSAnYSBqc19hcnJheSA9IHRcblxuICB0eXBlICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2sgPSB0XG5cbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuICBleHRlcm5hbCBib29sIDogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgdG9fYm9vbCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuICBleHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXkgOiB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG4gIGV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgaW50MzJfb2ZfbnVtYmVyIDogdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCBuYXRpdmVpbnRfb2ZfbnVtYmVyIDogdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCB0eXBlb2YgOiB0IC0+IHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuICBleHRlcm5hbCBpbnN0YW5jZW9mIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBleHRlcm5hbCBnZXQgOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICBleHRlcm5hbCBkZWxldGUgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gIGV4dGVybmFsIGNhbGwgOiB0IC0+IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gIGV4dGVybmFsIGZ1bl9jYWxsIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbCA6IHQgLT4gc3RyaW5nIC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gIGV4dGVybmFsIG5ld19vYmogOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuXG4gIGV4dGVybmFsIG5ld19vYmpfYXJyIDogdCAtPiB0IGpzX2FycmF5IC0+IHQgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICh0IGpzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIHQganNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAoJ2IgLT4gdCBqc19hcnJheSAtPiAnYSkgLT4gKCdiLCB0IGpzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5lbmRcblxubW9kdWxlIFN5cyA9IHN0cnVjdFxuICB0eXBlICdhIGNhbGxiYWNrID0gJ2FcblxuICBleHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG4gIGV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6IG91dF9jaGFubmVsIC0+IChqc19zdHJpbmc6SnMudCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG4gIGV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDogc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbiAgZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG4gIHR5cGUgcmVkaXJlY3Rpb25cblxuICBleHRlcm5hbCByZWRpcmVjdF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gaW50bzpvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvblxuICAgID0gXCJjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3RcIlxuXG4gIGV4dGVybmFsIHJlc3RvcmVfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHJlZGlyZWN0aW9uIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmVcIlxuXG4gIG1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgICBleHRlcm5hbCB1c2VfanNfc3RyaW5nIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBlZmZlY3RzIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1wiXG4gIGVuZFxuXG4gIGxldCB2ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLnNcblxuICBsZXQgZ2l0X3ZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbmVuZFxuXG5tb2R1bGUgRXJyb3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHJhaXNlXyA6IHQgLT4gJ2FcblxuICB2YWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4blxuICAoKiogQXR0YWNoIGEgSmF2YXNTY3JpcHQgZXJyb3IgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLiAgaWYgW2ZvcmNlID0gZmFsc2VdIGFuZCBhXG4gICAgSmF2YXNTY3JpcHQgZXJyb3IgaXMgYWxyZWFkeSBhdHRhY2hlZCwgaXQgd2lsbCBkbyBub3RoaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0b1xuICAgIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBKYXZhU2NyaXB0IHN0YWNrIHRyYWNlcy5cblxuICAgIEF0dGFjaGluZyBKYXZhc1NjcmlwdCBlcnJvcnMgd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseSB3aGVuIGNvbXBpbGluZyB3aXRoXG4gICAgWy0tZW5hYmxlIHdpdGgtanMtZXJyb3JdLiAqKVxuXG4gIHZhbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb25cbiAgKCoqIEV4dHJhY3QgYSBKYXZhU2NyaXB0IGVycm9yIGF0dGFjaGVkIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbiwgaWYgYW55LiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgICAgIGluc3BlY3QgYW4gZXZlbnR1YWwgc3RhY2sgc3RyYWNlLCBlc3BlY2lhbGx5IHdoZW4gc291cmNlbWFwIGlzIGVuYWJsZWQuICopXG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG4gICgqKiBUaGUgW0Vycm9yXSBleGNlcHRpb24gd3JhcCBqYXZhc2NyaXB0IGV4Y2VwdGlvbnMgd2hlbiBjYXVnaHQgYnkgT0NhbWwgY29kZS5cbiAgICAgIEluIGNhc2UgdGhlIGphdmFzY3JpcHQgZXhjZXB0aW9uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBqYXZhc2NyaXB0IFtFcnJvcl0sXG4gICAgICBpdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYW5kIHdyYXBwZWQgaW50byBhIFtGYWlsdXJlXSBleGNlcHRpb24uXG4gICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG5cbiAgbGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJqc0Vycm9yXCIgKEV4biAoT2JqLm1hZ2ljIFt8fF0pKVxuXG4gIGxldCByYWlzZV8gOiB0IC0+ICdhID0gSnMuanNfZXhwciBcIihmdW5jdGlvbiAoZXhuKSB7IHRocm93IGV4biB9KVwiXG5cbiAgZXh0ZXJuYWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uID0gXCJjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cIlxuXG4gIGV4dGVybmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG4gPSBcImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXCJcbmVuZFxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMi02MFwiXVxuXG5tb2R1bGUgRm9yX2NvbXBhdGliaWxpdHlfb25seSA9IHN0cnVjdFxuICAoKiBBZGQgcHJpbWl0aXZlcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLiBFeGlzdGluZyB1c2VycyBtaWdodFxuICAgICBkZXBlbmQgb24gaXQgKGUuZy4gZ2VuX2pzX2FwaSksIHdlIGRvbnQgd2FudCB0aGUgb2NhbWwgY29tcGlsZXJcbiAgICAgdG8gY29tcGxhaW4gYWJvdXQgdGhlc2VzIG1pc3NpbmcgcHJpbWl0aXZlcy4gKilcblxuICBleHRlcm5hbCBjYW1sX2pzX2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IEpzLnQgPSBcImNhbWxfanNfZnJvbV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19ieXRlX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF9vZl9qc19hcnJheSA6ICdhIEpzLmpzX2FycmF5IC0+ICdhIGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X3RvX2pzX2FycmF5IDogJ2EgbGlzdCAtPiAnYSBKcy5qc19hcnJheSA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuZW5kXG5cbm1vZHVsZSBUeXBlZF9hcnJheSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHR5cGVkQXJyYXkgPSBKcy50XG5cbiAgdHlwZSBhcnJheUJ1ZmZlciA9IEpzLnRcblxuICB0eXBlIHVpbnQ4QXJyYXkgPSBKcy50XG5cbiAgZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICAgID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXlcbiAgICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICAgIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG4gIGVuZFxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGVfaW50NjRfbG9fbWlfaGkgOiBpbnQgLT4gaW50IC0+IGludCAtPiBJbnQ2NC50XG4gICAgPSBcImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXCJcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuQ1NTICopXG5tb2R1bGUgQ1NTID0gSnNfb2Zfb2NhbWxfX0NTU1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb20gKilcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbF9fRG9tXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9ldmVudHMgKilcbm1vZHVsZSBEb21fZXZlbnRzID0gSnNfb2Zfb2NhbWxfX0RvbV9ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2h0bWwgKilcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sX19Eb21faHRtbFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fc3ZnICopXG5tb2R1bGUgRG9tX3N2ZyA9IEpzX29mX29jYW1sX19Eb21fc3ZnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkV2ZW50U291cmNlICopXG5tb2R1bGUgRXZlbnRTb3VyY2UgPSBKc19vZl9vY2FtbF9fRXZlbnRTb3VyY2VcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlsZSAqKVxubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbF9fRmlsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaXJlYnVnICopXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sX19GaXJlYnVnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZvcm0gKilcbm1vZHVsZSBGb3JtID0gSnNfb2Zfb2NhbWxfX0Zvcm1cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuR2VvbG9jYXRpb24gKilcbm1vZHVsZSBHZW9sb2NhdGlvbiA9IEpzX29mX29jYW1sX19HZW9sb2NhdGlvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGVyc2VjdGlvbk9ic2VydmVyICopXG5tb2R1bGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50bCAqKVxubW9kdWxlIEludGwgPSBKc19vZl9vY2FtbF9fSW50bFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5KcyAqKVxubW9kdWxlIEpzID0gSnNfb2Zfb2NhbWxfX0pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzb24gKilcbm1vZHVsZSBKc29uID0gSnNfb2Zfb2NhbWxfX0pzb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnN0YWJsZSAqKVxubW9kdWxlIEpzdGFibGUgPSBKc19vZl9vY2FtbF9fSnN0YWJsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5MaWJfdmVyc2lvbiAqKVxubW9kdWxlIExpYl92ZXJzaW9uID0gSnNfb2Zfb2NhbWxfX0xpYl92ZXJzaW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLk11dGF0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBNdXRhdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX011dGF0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUGVyZm9ybWFuY2VPYnNlcnZlciAqKVxubW9kdWxlIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZWdleHAgKilcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbF9fUmVnZXhwXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlc2l6ZU9ic2VydmVyICopXG5tb2R1bGUgUmVzaXplT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUmVzaXplT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuU3lzX2pzICopXG5tb2R1bGUgU3lzX2pzID0gSnNfb2Zfb2NhbWxfX1N5c19qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5UeXBlZF9hcnJheSAqKVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWxfX1R5cGVkX2FycmF5XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlVybCAqKVxubW9kdWxlIFVybCA9IEpzX29mX29jYW1sX19VcmxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViR0wgKilcbm1vZHVsZSBXZWJHTCA9IEpzX29mX29jYW1sX19XZWJHTFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJTb2NrZXRzICopXG5tb2R1bGUgV2ViU29ja2V0cyA9IEpzX29mX29jYW1sX19XZWJTb2NrZXRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldvcmtlciAqKVxubW9kdWxlIFdvcmtlciA9IEpzX29mX29jYW1sX19Xb3JrZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuWG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBYbWxIdHRwUmVxdWVzdCA9IEpzX29mX29jYW1sX19YbWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGxvY2FsIG1vZHVsZSBbSnNdIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBwcHhfanMgZXh0ZW5zaW9uIHdvcmsgd2l0aGluIHRoYXQgZmlsZS4gKilcbm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG5cbiAgdHlwZSAoLSdhLCArJ2IpIG1ldGhfY2FsbGJhY2tcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgdHlwZSB0b3BcblxuICAgIHR5cGUgYW55ID0gdG9wIHRcblxuICAgIHR5cGUgYW55X2pzX2FycmF5ID0gYW55XG5cbiAgICBleHRlcm5hbCBpbmplY3QgOiAnYSAtPiBhbnkgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBjb2VyY2UgOiBfIHQgLT4gXyB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgZ2V0IDogJ2EgLT4gJ2IgLT4gJ2MgPSBcImNhbWxfanNfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldCA6ICdhIC0+ICdiIC0+ICdjIC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICAgIGV4dGVybmFsIGRlbGV0ZSA6ICdhIC0+ICdiIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICAgIGV4dGVybmFsIGNhbGwgOiAnYSAtPiAnYiAtPiBhbnkgYXJyYXkgLT4gJ2MgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBmdW5fY2FsbCA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGwgOiAnYSAtPiBzdHJpbmcgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqX2FyciA6ICdhIC0+IGFueV9qc19hcnJheSAtPiAnYiA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogYW55KSBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICAgIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICAgIGxldCBnbG9iYWwgPSBwdXJlX2pzX2V4cHIgXCJnbG9iYWxUaGlzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoYW55X2pzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIGFueV9qc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgICgnYiAtPiBhbnlfanNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgYW55X2pzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgICgqIERFUFJFQ0FURUQgKilcbiAgICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuICBlbmRcblxuICAoKioqKilcblxuICB0eXBlICdhIG9wdCA9ICdhXG5cbiAgdHlwZSAnYSBvcHRkZWYgPSAnYVxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgbGV0IG51bGwgOiAnYSBvcHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG5cbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIG9wdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgdW5kZWZpbmVkIDogJ2Egb3B0ZGVmID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5cbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2Egb3B0ZGVmID0gXCIlaWRlbnRpdHlcIlxuXG4gIG1vZHVsZSB0eXBlIE9QVCA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVtcHR5IDogJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuXG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgICB2YWwgdGVzdCA6ICdhIHQgLT4gYm9vbFxuXG4gICAgdmFsIGl0ZXIgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgY2FzZSA6ICdhIHQgLT4gKHVuaXQgLT4gJ2IpIC0+ICgnYSAtPiAnYikgLT4gJ2JcblxuICAgIHZhbCBnZXQgOiAnYSB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYVxuXG4gICAgdmFsIG9wdGlvbiA6ICdhIG9wdGlvbiAtPiAnYSB0XG5cbiAgICB2YWwgdG9fb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb25cblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdCA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdFxuXG4gICAgbGV0IGVtcHR5ID0gbnVsbFxuXG4gICAgbGV0IHJldHVybiA9IHNvbWVcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChlcXVhbHMgeCBudWxsKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChlcXVhbHMgeCBudWxsKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRkZWYgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHRkZWYgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRkZWZcblxuICAgIGxldCBlbXB0eSA9IHVuZGVmaW5lZFxuXG4gICAgbGV0IHJldHVybiA9IGRlZlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIGxldCBjb2VyY2UgeCBmIGcgPSBPcHQuZ2V0IChmIHgpIChmdW4gKCkgLT4gZyB4KVxuXG4gIGxldCBjb2VyY2Vfb3B0IHggZiBnID0gT3B0LmdldCAoT3B0LmJpbmQgeCBmKSAoZnVuICgpIC0+IGcgeClcblxuICAoKioqKilcblxuICB0eXBlICsnYSBtZXRoXG5cbiAgdHlwZSArJ2EgZ2VuX3Byb3BcblxuICB0eXBlICdhIHJlYWRvbmx5X3Byb3AgPSA8IGdldCA6ICdhID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHdyaXRlb25seV9wcm9wID0gPCBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHByb3AgPSA8IGdldCA6ICdhIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBvcHRkZWZfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSArJ2EgY29uc3RyXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBjYWxsYmFjayA9ICh1bml0LCAnYSkgbWV0aF9jYWxsYmFja1xuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuXG4gICgqKioqKVxuXG4gIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgKCoqKiopXG5cbiAgbGV0IF90cnVlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInRydWVcIlxuXG4gIGxldCBfZmFsc2UgPSBVbnNhZmUucHVyZV9qc19leHByIFwiZmFsc2VcIlxuXG4gIHR5cGUgbWF0Y2hfcmVzdWx0X2hhbmRsZVxuXG4gIHR5cGUgc3RyaW5nX2FycmF5XG5cbiAgdHlwZSBudW1iZXJfdCA9IGZsb2F0XG5cbiAgY2xhc3MgdHlwZSBudW1iZXIgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmdfcmFkaXggOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRml4ZWQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbF9kaWdpdHMgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvUHJlY2lzaW9uIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgZW5kXG5cbiAgYW5kIGpzX3N0cmluZyA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB2YWx1ZU9mIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJBdCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckNvZGVBdCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICAoKiBUaGlzIG1heSByZXR1cm4gTmFOLi4uICopXG4gICAgbWV0aG9kIGNvbmNhdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfNCA6XG4gICAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsb2NhbGVDb21wYXJlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgbWV0aG9kIF9tYXRjaCA6IHJlZ0V4cCB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemVfZm9ybSA6IG5vcm1hbGl6YXRpb24gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZSA6IHJlZ0V4cCB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzZWFyY2ggOiByZWdFeHAgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdCA6IGpzX3N0cmluZyB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9saW1pdGVkIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHAgOiByZWdFeHAgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwTGltaXRlZCA6IHJlZ0V4cCB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nX3RvRW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZUxvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1VwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVVwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0cmltIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGFuZCByZWdFeHAgPSBvYmplY3RcbiAgICBtZXRob2QgZXhlYyA6IGpzX3N0cmluZyB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIHRlc3QgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNvdXJjZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBnbG9iYWwgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZUNhc2UgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG11bHRpbGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbGFzdEluZGV4IDogaW50IHByb3BcbiAgZW5kXG5cbiAgYW5kIG5vcm1hbGl6YXRpb24gPSBqc19zdHJpbmdcblxuICAoKiBzdHJpbmcgaXMgdXNlZCBieSBwcHhfanMsIGl0IG5lZWRzIHRvIGNvbWUgYmVmb3JlIGFueSB1c2Ugb2YgdGhlXG4gICAgIG5ldyBzeW50YXggaW4gdGhpcyBmaWxlICopXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGxldCBuZmMgPSBzdHJpbmcgXCJORkNcIlxuXG4gIGxldCBuZmQgPSBzdHJpbmcgXCJORkRcIlxuXG4gIGxldCBuZmtjID0gc3RyaW5nIFwiTkZLQ1wiXG5cbiAgbGV0IG5ma2QgPSBzdHJpbmcgXCJORktEXCJcbmVuZFxuXG5pbmNsdWRlIEpzXG5cbmNsYXNzIHR5cGUgc3RyaW5nX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgZnJvbUNoYXJDb2RlIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgc3RyaW5nX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fU3RyaW5nXG5cbmxldCByZWdFeHAgPSBVbnNhZmUuZ2xvYmFsIyMuX1JlZ0V4cFxuXG5sZXQgcmVnRXhwX2NvcHkgPSByZWdFeHBcblxubGV0IHJlZ0V4cF93aXRoRmxhZ3MgPSByZWdFeHBcblxuY2xhc3MgdHlwZSBbJ2FdIGpzX2FycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmNhdCA6ICdhIGpzX2FycmF5IHQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGpvaW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHBvcCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHB1c2ggOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCByZXZlcnNlIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNoaWZ0IDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnQgOiAoJ2EgLT4gJ2EgLT4gbnVtYmVyX3QpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0X2FzU3RyaW5ncyA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8yIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzMgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfNCA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnQgOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzb21lIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZXZlcnkgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb3JFYWNoIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtYXAgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBmaWx0ZXIgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgcmVkdWNlX2luaXQgOiAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlIDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0X2luaXQgOlxuICAgICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodCA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuZW5kXG5cbmxldCBvYmplY3RfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgb2JqZWN0X2tleXMgbyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBvYmplY3RfY29uc3RydWN0b3IjI2tleXMgb1xuXG5sZXQgYXJyYXlfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX0FycmF5XG5cbmxldCBhcnJheV9lbXB0eSA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9sZW5ndGggPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfZ2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IFVuc2FmZS5nZXRcblxubGV0IGFycmF5X3NldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gVW5zYWZlLnNldFxuXG5sZXQgYXJyYXlfbWFwX3BvbHkgOlxuICAgICdhICNqc19hcnJheSB0IC0+ICgnYSAtPiBpbnQgLT4gJ2EgI2pzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiICNqc19hcnJheSB0ID1cbiBmdW4gYSBjYiAtPiAoVW5zYWZlLmNvZXJjZSBhKSMjbWFwIGNiXG5cbmxldCBhcnJheV9tYXAgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggX2lkeCBfIC0+IGYgeCkpXG5cbmxldCBhcnJheV9tYXBpIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IGlkeCBfIC0+IGYgaWR4IHgpKVxuXG5jbGFzcyB0eXBlIG1hdGNoX3Jlc3VsdCA9IG9iamVjdFxuICBpbmhlcml0IFtqc19zdHJpbmcgdF0ganNfYXJyYXlcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnB1dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgc3RyX2FycmF5IDogc3RyaW5nX2FycmF5IHQgLT4ganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IFVuc2FmZS5jb2VyY2VcblxubGV0IG1hdGNoX3Jlc3VsdCA6IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCAtPiBtYXRjaF9yZXN1bHQgdCA9IFVuc2FmZS5jb2VyY2VcblxuY2xhc3MgdHlwZSBkYXRlID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1RpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZURhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdmFsdWVPZiA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEhvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDSG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZXpvbmVPZmZzZXQgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0Z1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0U2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ1NlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0b1VUQ1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9JU09TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSlNPTiA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRhdGVfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tb250aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2RheSA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2hvdXIgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21pbiA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX3NlYyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tcyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG5vdyA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgZGF0ZV9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RhdGVcblxubGV0IGRhdGUgOiBkYXRlX2NvbnN0ciB0ID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbm93IDogZGF0ZSB0IGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2Zyb21UaW1lVmFsdWUgOiAobnVtYmVyX3QgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tb250aCA6IChpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZGF5IDogKGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfaG91ciA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9taW4gOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX3NlYyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21zIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9XG4gIGRhdGVfY29uc3RyXG5cbmNsYXNzIHR5cGUgbWF0aCA9IG9iamVjdFxuICBtZXRob2QgX0UgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjEwIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMkUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cxMEUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QSSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQxXzJfIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFicyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYWNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbjIgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNlaWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZXhwIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBmbG9vciA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbG9nIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHBvdyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcmFuZG9tIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByb3VuZCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzcXJ0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IG1hdGggPSBVbnNhZmUuZ2xvYmFsIyMuX01hdGhcblxuY2xhc3MgdHlwZSBlcnJvciA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhY2sgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgZXJyb3JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9FcnJvclxuXG5tb2R1bGUgSnNfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvcl90ID0gZXJyb3IgdFxuXG4gIGluY2x1ZGUgSnNvb19ydW50aW1lLkVycm9yXG5cbiAgZXh0ZXJuYWwgb2ZfZXJyb3IgOiBlcnJvcl90IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgZXh0ZXJuYWwgdG9fZXJyb3IgOiB0IC0+IGVycm9yX3QgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IG5hbWUgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5uYW1lXG5cbiAgbGV0IG1lc3NhZ2UgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5tZXNzYWdlXG5cbiAgbGV0IHN0YWNrIChlIDogdCkgOiBzdHJpbmcgb3B0aW9uID1cbiAgICBPcHQudG9fb3B0aW9uIChPcHQubWFwICh0b19lcnJvciBlKSMjLnN0YWNrIHRvX3N0cmluZylcblxuICBsZXQgdG9fc3RyaW5nIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyN0b1N0cmluZ1xuZW5kXG5cbm1vZHVsZSBNYWdpYyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgZXhjZXB0aW9uIEVycm9yIG9mIGVycm9yIHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdiKSBlcSA9IEVxIDogKCdhLCAnYSkgZXFcblxuICBsZXQgKGVxIDogKGVycm9yIHQsIEpzX2Vycm9yLnQpIGVxKSA9IE9iai5tYWdpYyBFcVxuXG4gIGxldCBtID1cbiAgICBtYXRjaCBlcSB3aXRoXG4gICAgfCBFcSAtPlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIGV4Y2VwdGlvbiBFcnJvciA9IEpzX2Vycm9yLkV4blxuICAgICAgICBlbmQgOiBUKVxuXG4gIG1vZHVsZSBFcnJvciA9ICh2YWwgbSA6IFQpXG5lbmRcblxuaW5jbHVkZSBNYWdpYy5FcnJvclxuXG5sZXQgcmFpc2VfanNfZXJyb3IgZSA9IEpzX2Vycm9yLnJhaXNlXyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IHN0cmluZ19vZl9lcnJvciBlID0gSnNfZXJyb3IudG9fc3RyaW5nIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgZXhuX3dpdGhfanNfYmFja3RyYWNlID0gSnNfZXJyb3IuYXR0YWNoX2pzX2JhY2t0cmFjZVxuXG5leHRlcm5hbCBqc19lcnJvcl9vZl9leG4gOiBleG4gLT4gZXJyb3IgdCBvcHQgPSBcImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXCJcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBfSlNPTiA6IGpzb24gdCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgZGVjb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGRlY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCB1bmVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy51bmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxuZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbmV4dGVybmFsIHRvX2Jvb2wgOiBib29sIHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiAnYSBqc19hcnJheSB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG5leHRlcm5hbCB0b19hcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG5leHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbmV4dGVybmFsIGZsb2F0IDogZmxvYXQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogbnVtYmVyX3QgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiBudW1iZXIgdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogbnVtYmVyIHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBpbnQzMiA6IGludDMyIC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG5leHRlcm5hbCB0b19pbnQzMiA6IG51bWJlcl90IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuZXh0ZXJuYWwgbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogbnVtYmVyX3QgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHR5cGVvZiA6IF8gdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG5leHRlcm5hbCBpbnN0YW5jZW9mIDogXyB0IC0+IF8gY29uc3RyIC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbmxldCBpc05hTiAoaSA6ICdhKSA6IGJvb2wgPVxuICB0b19ib29sIChVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmlzTmFOIFt8IFVuc2FmZS5pbmplY3QgaSB8XSlcblxubGV0IHBhcnNlSW50IChzIDoganNfc3RyaW5nIHQpIDogaW50ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlSW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUludFwiIGVsc2Ugc1xuXG5sZXQgcGFyc2VGbG9hdCAocyA6IGpzX3N0cmluZyB0KSA6IG51bWJlcl90ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlRmxvYXQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlRmxvYXRcIiBlbHNlIHNcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgICAgfCBKc19lcnJvci5FeG4gZSAtPiBTb21lIChKc19lcnJvci50b19zdHJpbmcgZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBlIC0+XG4gICAgICBsZXQgZSA6IDwgLi4gPiB0ID0gT2JqLm1hZ2ljIGUgaW5cbiAgICAgIGlmIGluc3RhbmNlb2YgZSBhcnJheV9jb25zdHJ1Y3RvciB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19zdHJpbmcgZSMjdG9TdHJpbmcpKVxuXG5sZXQgZXhwb3J0X2pzIChmaWVsZCA6IGpzX3N0cmluZyB0KSB4ID1cbiAgVW5zYWZlLnNldFxuICAgIChVbnNhZmUucHVyZV9qc19leHByIFwianNvb19leHBvcnRzXCIpXG4gICAgZmllbGRcbiAgICAoaWYgU3RyaW5nLmVxdWFsIChKcy50b19zdHJpbmcgKHR5cGVvZiAoT2JqLm1hZ2ljIHgpKSkgXCJmdW5jdGlvblwiXG4gICAgICAgICgqIGZ1bmN0aW9uIHdpdGggYXJpdHkvbGVuZ3RoIGVxdWFsIHRvIHplcm8gYXJlIGFscmVhZHkgd3JhcHBlZCAqKVxuICAgICAgICAmJiBVbnNhZmUuZ2V0IChPYmoubWFnaWMgeCkgKEpzLnN0cmluZyBcImxlbmd0aFwiKSA+IDBcbiAgICAgdGhlbiBPYmoubWFnaWMgKHdyYXBfY2FsbGJhY2sgKE9iai5tYWdpYyB4KSlcbiAgICAgZWxzZSB4KVxuXG5sZXQgZXhwb3J0IGZpZWxkIHggPSBleHBvcnRfanMgKHN0cmluZyBmaWVsZCkgeFxuXG5sZXQgZXhwb3J0X2FsbCBvYmogPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG9iaiBpblxuICBrZXlzIyNmb3JFYWNoXG4gICAgKHdyYXBfY2FsbGJhY2sgKGZ1biAoa2V5IDoganNfc3RyaW5nIHQpIF8gXyAtPiBleHBvcnRfanMga2V5IChVbnNhZmUuZ2V0IG9iaiBrZXkpKSlcblxuKCoqKiopXG5cbigqIERFUFJFQ0FURUQgKilcblxudHlwZSBmbG9hdF9wcm9wID0gbnVtYmVyX3QgcHJvcFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gbm9kZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBsaXN0X29mX25vZGVMaXN0IChub2RlTGlzdCA6ICdhIG5vZGVMaXN0IHQpID1cbiAgbGV0IGxlbmd0aCA9IG5vZGVMaXN0IyMubGVuZ3RoIGluXG4gIGxldCByZWMgYWRkX2l0ZW0gYWNjIGkgPVxuICAgIGlmIGkgPCBsZW5ndGhcbiAgICB0aGVuXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChub2RlTGlzdCMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWRkX2l0ZW0gYWNjIChpICsgMSlcbiAgICAgIHwgU29tZSBlIC0+IGFkZF9pdGVtIChlIDo6IGFjYykgKGkgKyAxKVxuICAgIGVsc2UgTGlzdC5yZXYgYWNjXG4gIGluXG4gIGFkZF9pdGVtIFtdIDBcblxudHlwZSBub2RlVHlwZSA9XG4gIHwgT1RIRVJcbiAgKCogV2lsbCBub3QgaGFwcGVuICopXG4gIHwgRUxFTUVOVFxuICB8IEFUVFJJQlVURVxuICB8IFRFWFRcbiAgfCBDREFUQV9TRUNUSU9OXG4gIHwgRU5USVRZX1JFRkVSRU5DRVxuICB8IEVOVElUWVxuICB8IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05cbiAgfCBDT01NRU5UXG4gIHwgRE9DVU1FTlRcbiAgfCBET0NVTUVOVF9UWVBFXG4gIHwgRE9DVU1FTlRfRlJBR01FTlRcbiAgfCBOT1RBVElPTlxuXG5tb2R1bGUgRG9jdW1lbnRQb3NpdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICB0eXBlIG1hc2sgPSBpbnRcblxuICBsZXQgZGlzY29ubmVjdGVkID0gMHgwMVxuXG4gIGxldCBwcmVjZWRpbmcgPSAweDAyXG5cbiAgbGV0IGZvbGxvd2luZyA9IDB4MDRcblxuICBsZXQgY29udGFpbnMgPSAweDA4XG5cbiAgbGV0IGNvbnRhaW5lZF9ieSA9IDB4MTBcblxuICBsZXQgaW1wbGVtZW50YXRpb25fc3BlY2lmaWMgPSAweDIwXG5cbiAgbGV0IGhhcyB0IG1hc2sgPSB0IGxhbmQgbWFzayA9IG1hc2tcblxuICBsZXQgYWRkIHggeSA9IHggbG9yIHlcblxuICBsZXQgKCArICkgPSBhZGRcbmVuZFxuXG5jbGFzcyB0eXBlIG5vZGUgPSBvYmplY3RcbiAgbWV0aG9kIG5vZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVHlwZSA6IG5vZGVUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogbm9kZSBub2RlTGlzdCB0IHByb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydEJlZm9yZSA6IG5vZGUgdCAtPiBub2RlIHQgb3B0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgaGFzQ2hpbGROb2RlcyA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lTm9kZSA6IGJvb2wgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA6IG5vZGUgdCAtPiBEb2N1bWVudFBvc2l0aW9uLnQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBOYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBQcmVmaXggOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBhcHBlbmRDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI2FwcGVuZENoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZW1vdmVDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI3JlbW92ZUNoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZXBsYWNlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCkgPVxuICBpZ25vcmUgKHAjI3JlcGxhY2VDaGlsZCAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCkpXG5cbmxldCBpbnNlcnRCZWZvcmUgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCBvcHQpID1cbiAgaWdub3JlIChwIyNpbnNlcnRCZWZvcmUgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQgb3B0KSlcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0F0dHJdIG9iamVjdHMuICopXG5jbGFzcyB0eXBlIGF0dHIgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWNpZmllZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lckVsZW1lbnQgOiBlbGVtZW50IHQgcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtOYW1lZE5vZGVNYXBdIG9iamVjdHMuICopXG5hbmQgWydub2RlXSBuYW1lZE5vZGVNYXAgPSBvYmplY3RcbiAgbWV0aG9kIGdldE5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0TmFtZWRJdGVtIDogJ25vZGUgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZU5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0VsZW1lbnRdIG9iamVjdHMuICopXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgdGFnTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlTlMgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHIgbmFtZWROb2RlTWFwIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgY2hhcmFjdGVyRGF0YSA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VianNfc3RyaW5nRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmREYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydERhdGEgOiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZURhdGEgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBjb21tZW50ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIHRleHQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnRGcmFnbWVudCA9IG5vZGVcblxuY2xhc3MgdHlwZSBbJ2VsZW1lbnRdIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiAnZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6IGRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudE5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHROb2RlIDoganNfc3RyaW5nIHQgLT4gdGV4dCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ29tbWVudCA6IGpzX3N0cmluZyB0IC0+IGNvbW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBpbXBvcnROb2RlIDogZWxlbWVudCB0IC0+IGJvb2wgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgYWRvcHROb2RlIDogZWxlbWVudCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9kZV90eXBlID1cbiAgfCBFbGVtZW50IG9mIGVsZW1lbnQgdFxuICB8IEF0dHIgb2YgYXR0ciB0XG4gIHwgVGV4dCBvZiB0ZXh0IHRcbiAgfCBPdGhlciBvZiBub2RlIHRcblxubGV0IG5vZGVUeXBlIGUgPVxuICBtYXRjaCBlIyMubm9kZVR5cGUgd2l0aFxuICB8IEVMRU1FTlQgLT4gRWxlbWVudCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IEFUVFJJQlVURSAtPiBBdHRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQ0RBVEFfU0VDVElPTiB8IFRFWFQgLT4gVGV4dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IF8gLT4gT3RoZXIgKGUgOj4gbm9kZSB0KVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGNhc3QgKGUgOiAjbm9kZSBKcy50KSB0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gdCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGVsZW1lbnQgZSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPSBjYXN0IGUgRUxFTUVOVFxuXG4gIGxldCB0ZXh0IGUgOiB0ZXh0IEpzLnQgSnMub3B0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gVEVYVCB8fCBlIyMubm9kZVR5cGUgPT0gQ0RBVEFfU0VDVElPTlxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhdHRyIGUgOiBhdHRyIEpzLnQgSnMub3B0ID0gY2FzdCBlIEFUVFJJQlVURVxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiIC0+IGJvb2wgdCkgbWV0aF9jYWxsYmFjayBvcHRcbigqKiBUaGUgdHlwZSBvZiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbnMuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXJcbiAgICAgIFsnYV0gaXMgdGhlIHR5cGUgb2YgdGhlIHRhcmdldCBvYmplY3Q7IHRoZSBzZWNvbmQgcGFyYW1ldGVyXG4gICAgICBbJ2JdIGlzIHRoZSB0eXBlIG9mIHRoZSBldmVudCBvYmplY3QuICopXG5cbmNsYXNzIHR5cGUgWydhXSBldmVudCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICAoKiBMZWdhY3kgbWV0aG9kcyAqKVxuICBtZXRob2Qgc3JjRWxlbWVudCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiAnYiBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBKcy5udWxsXG5cbmxldCB3aW5kb3dfZXZlbnQgKCkgOiAnYSAjZXZlbnQgdCA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJldmVudFwiXG5cbigqIFRoZSBmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdCBtdXN0IGJlIGNhbGxlZCBleHBsaWNpdGx5IHdoZW5cbiAgIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIuLi4gKilcbmxldCBoYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQuICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBmdWxsX2hhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLm1ldGhfY2FsbGJhY2sgKGZ1biB0aGlzIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQgKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBpbnZva2VfaGFuZGxlciAoZiA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyKSAodGhpcyA6ICdhKSAoZXZlbnQgOiAnYikgOiBib29sIHQgPVxuICBKcy5VbnNhZmUuY2FsbCBmIHRoaXMgW3wgSnMuVW5zYWZlLmluamVjdCBldmVudCB8XVxuXG5sZXQgZXZlbnRUYXJnZXQgKGUgOiAoPCAuLiA+IGFzICdhKSAjZXZlbnQgdCkgOiAnYSB0ID1cbiAgbGV0IHRhcmdldCA9XG4gICAgT3B0LmdldCBlIyMudGFyZ2V0IChmdW4gKCkgLT4gT3B0LmdldCBlIyMuc3JjRWxlbWVudCAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZCkpXG4gIGluXG4gIGlmIEpzLmluc3RhbmNlb2YgdGFyZ2V0IEpzLlVuc2FmZS5nbG9iYWwjIy5fTm9kZVxuICB0aGVuXG4gICAgKCogV29ya2Fyb3VuZCBmb3IgU2FmYXJpIGJ1ZyAqKVxuICAgIGxldCB0YXJnZXQnIDogbm9kZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZSB0YXJnZXQgaW5cbiAgICBpZiB0YXJnZXQnIyMubm9kZVR5cGUgPT0gVEVYVFxuICAgIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoT3B0LmdldCB0YXJnZXQnIyMucGFyZW50Tm9kZSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgZWxzZSB0YXJnZXRcbiAgZWxzZSB0YXJnZXRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQgbWFrZSBzID0gSnMuc3RyaW5nIHNcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gdW5pdCAtPiB1bml0XG5cbmNsYXNzIHR5cGUgZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgY2FwdHVyZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhc3NpdmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGUpIyMuYWRkRXZlbnRMaXN0ZW5lcilcbiAgdGhlblxuICAgIGxldCBldiA9IChKcy5zdHJpbmcgXCJvblwiKSMjY29uY2F0IHR5cCBpblxuICAgIGxldCBjYWxsYmFjayBlID0gSnMuVW5zYWZlLmNhbGwgKGgsIGUsIFt8fF0pIGluXG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2F0dGFjaEV2ZW50IGV2IGNhbGxiYWNrIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNkZXRhY2hFdmVudCBldiBjYWxsYmFja1xuICBlbHNlXG4gICAgbGV0IG9wdHMgOiBldmVudF9saXN0ZW5lcl9vcHRpb25zIHQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBsZXQgaXRlciB0IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBiIC0+IGYgYlxuICAgIGluXG4gICAgaXRlciBjYXB0dXJlIChmdW4gYiAtPiBvcHRzIyMuY2FwdHVyZSA6PSBiKTtcbiAgICBpdGVyIG9uY2UgKGZ1biBiIC0+IG9wdHMjIy5vbmNlIDo9IGIpO1xuICAgIGl0ZXIgcGFzc2l2ZSAoZnVuIGIgLT4gb3B0cyMjLnBhc3NpdmUgOj0gYik7XG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2FkZEV2ZW50TGlzdGVuZXIgdHlwIGggb3B0cyBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcmVtb3ZlRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzXG5cbmxldCBhZGRFdmVudExpc3RlbmVyIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwIGggY2FwdCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlIHR5cCB+Y2FwdHVyZTpjYXB0IGhcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgaWQgPSBpZCAoKVxuXG5sZXQgcHJldmVudERlZmF1bHQgZXYgPVxuICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5wcmV2ZW50RGVmYXVsdCAoKiBJRSBoYWNrICopXG4gIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyNwcmV2ZW50RGVmYXVsdFxuICBlbHNlIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnJldHVyblZhbHVlIDo9IEpzLmJvb2wgZmFsc2VcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID9idWJibGVzID9jYW5jZWxhYmxlID9kZXRhaWwgdHlwID1cbiAgbGV0IG9wdF9pdGVyIGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb3B0cyA9IFVuc2FmZS5vYmogW3x8XSBpblxuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmJ1YmJsZXMgOj0gYm9vbCB4KSBidWJibGVzO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmNhbmNlbGFibGUgOj0gYm9vbCB4KSBjYW5jZWxhYmxlO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmRldGFpbCA6PSBzb21lIHgpIGRldGFpbDtcbiAgbGV0IGNvbnN0ciA6XG4gICAgICAoICAgKCdhLCAnYikgI2N1c3RvbUV2ZW50IEpzLnQgRXZlbnQudHlwXG4gICAgICAgLT4gPCBkZXRhaWwgOiAnYiBvcHQgcHJvcCA+IHRcbiAgICAgICAtPiAoJ2EsICdiKSBjdXN0b21FdmVudCB0KVxuICAgICAgY29uc3RyID1cbiAgICBVbnNhZmUuZ2xvYmFsIyMuX0N1c3RvbUV2ZW50XG4gIGluXG4gIG5ldyVqcyBjb25zdHIgdHlwIG9wdHNcblxuKCogSUUgPCA5ICopXG5cbmNsYXNzIHR5cGUgc3RyaW5nTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5vcGVuIEpzXG5cbnR5cGUgdWludDMyID0gZmxvYXRcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlciA9IG9iamVjdFxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5lbmRcblxubGV0IGFycmF5QnVmZmVyIDogKGludCAtPiBhcnJheUJ1ZmZlciB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0FycmF5QnVmZmVyXG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXJWaWV3ID0gb2JqZWN0XG4gIG1ldGhvZCBidWZmZXIgOiBhcnJheUJ1ZmZlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZU9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gdHlwZWRBcnJheSA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBfQllURVNfUEVSX0VMRU1FTlQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRfZnJvbUFycmF5IDogJ2EganNfYXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldF9mcm9tVHlwZWRBcnJheSA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5IDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICAoKiBUaGlzIGZha2UgbWV0aG9kIGlzIG5lZWRlZCBmb3IgdHlwaW5nIHB1cnBvc2VzLlxuICAgICBXaXRob3V0IGl0LCBbJ2JdIHdvdWxkIG5vdCBiZSBjb25zdHJhaW5lZC4gKilcbiAgbWV0aG9kIF9jb250ZW50X3R5cGVfIDogJ2Igb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG50eXBlIGludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQzMkFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0NjRBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQ2NF9lbHQpIHR5cGVkQXJyYXlcblxuZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0XG4gID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbmxldCBpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21BcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2luQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21BcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2luQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgaW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9pbkJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfaW5CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgaW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9pbkJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfaW5CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9pbkJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9pbkJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgc2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID1cbiBmdW4gYSBpIHYgLT4gYXJyYXlfc2V0IChVbnNhZmUuY29lcmNlIGEpIGkgdlxuXG5sZXQgZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmxldCB1bnNhZmVfZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxuY2xhc3MgdHlwZSBkYXRhVmlldyA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBnZXRJbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyIDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyXyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyIDogaW50IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyXyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NF8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyXyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzJfIDogaW50IC0+IHVpbnQzMiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzJfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NF8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBkYXRhVmlldyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRGF0YVZpZXdcblxubGV0IGRhdGFWaWV3X2luQnVmZmVyID0gZGF0YVZpZXdcblxubW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciBKcy50ID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5IEpzLnQgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5cbiAgbGV0IG9mX2FycmF5QnVmZmVyIGFiID1cbiAgICBsZXQgdWludDggPSBuZXclanMgdWludDhBcnJheV9mcm9tQnVmZmVyIGFiIGluXG4gICAgb2ZfdWludDhBcnJheSB1aW50OFxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IGJ5dGVzID0gXCJjYW1sX2J5dGVzX29mX2FycmF5XCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogYnl0ZXMgLT4gdWludDhBcnJheSBKcy50ID0gXCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXCJcblxuICBsZXQgb2ZfYXJyYXlCdWZmZXIgYWIgPVxuICAgIGxldCB1aW50OCA9IG5ldyVqcyB1aW50OEFycmF5X2Zyb21CdWZmZXIgYWIgaW5cbiAgICBvZl91aW50OEFycmF5IHVpbnQ4XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGJsb2IgPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGJsb2IgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3dpdGhDb250ZW50VHlwZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gYmxvYiB0IG1ldGhcbmVuZFxuXG5sZXQgYmxvYl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Jsb2JcblxudHlwZSAnYSBtYWtlX2Jsb2IgPVxuICA/Y29udGVudFR5cGU6c3RyaW5nIC0+ID9lbmRpbmdzOlsgYFRyYW5zcGFyZW50IHwgYE5hdGl2ZSBdIC0+ICdhIC0+IGJsb2IgdFxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5sZXQgbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyA9XG4gIGxldCBvcHRpb25zID1cbiAgICBmaWx0ZXJfbWFwXG4gICAgICAoZnVuIChuYW1lLCB2KSAtPlxuICAgICAgICBtYXRjaCB2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gU29tZSAobmFtZSwgVW5zYWZlLmluamVjdCAoc3RyaW5nIHYpKSlcbiAgICAgIFsgXCJ0eXBlXCIsIGNvbnRlbnRUeXBlXG4gICAgICA7ICggXCJlbmRpbmdzXCJcbiAgICAgICAgLCBtYXRjaCBlbmRpbmdzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBgVHJhbnNwYXJlbnQgLT4gU29tZSBcInRyYW5zcGFyZW50XCJcbiAgICAgICAgICB8IFNvbWUgYE5hdGl2ZSAtPiBTb21lIFwibmF0aXZlXCIgKVxuICAgICAgXVxuICBpblxuICBtYXRjaCBvcHRpb25zIHdpdGhcbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBsIC0+IFVuc2FmZS5vYmogKEFycmF5Lm9mX2xpc3QgbClcblxubGV0IGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBhID1cbiAgbGV0IG9wdGlvbnMgPSBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzIGluXG4gIG5ldyVqcyBibG9iX2NvbnN0ciAoYXJyYXkgYSkgb3B0aW9uc1xuXG5sZXQgYmxvYl9mcm9tX3N0cmluZyA/Y29udGVudFR5cGUgP2VuZGluZ3MgcyA9XG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBbfCBzdHJpbmcgcyB8XVxuXG5sZXQgYmxvYl9mcm9tX2FueSA/Y29udGVudFR5cGUgP2VuZGluZ3MgbCA9XG4gIGxldCBsID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYGFycmF5QnVmZmVyIGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYGFycmF5QnVmZmVyVmlldyBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBzdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcylcbiAgICAgICAgfCBganNfc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCBzXG4gICAgICAgIHwgYGJsb2IgYiAtPiBVbnNhZmUuaW5qZWN0IGIpXG4gICAgICBsXG4gIGluXG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyAoQXJyYXkub2ZfbGlzdCBsKVxuXG5jbGFzcyB0eXBlIGZpbGUgPSBvYmplY3RcbiAgaW5oZXJpdCBibG9iXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RNb2RpZmllZERhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW4gZmlyZWZveCAzLjAtMy41IGZpbGUubmFtZSBpcyBub3QgYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIG5vbnN0YW5kYXJkIGZpbGVOYW1lIGluc3RlYWQgKilcbmNsYXNzIHR5cGUgZmlsZV9uYW1lX29ubHkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlTmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGZpbGVuYW1lIGZpbGUgPVxuICBsZXQgZmlsZSA6IGZpbGVfbmFtZV9vbmx5IHQgPSBKcy5VbnNhZmUuY29lcmNlIGZpbGUgaW5cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMubmFtZSB3aXRoXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5maWxlTmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW4ndCByZXRyaWV2ZSBmaWxlIG5hbWU6IG5vdCBpbXBsZW1lbnRlZFwiXG4gICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lKVxuICB8IFNvbWUgbmFtZSAtPiBuYW1lXG5cbnR5cGUgZmlsZV9hbnkgPSA8ID4gdFxuXG5sZXQgZG9jX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRG9jdW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGV4dGVybmFsIGpzb24gOiBmaWxlX2FueSAtPiAnYSBPcHQudCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgZG9jdW1lbnQgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBkb2NfY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBlbGVtZW50IGRvY3VtZW50IHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGJsb2IgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBibG9iX2NvbnN0ciB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6ICNibG9iIHQpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBzdHJpbmcgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIGUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGpzX3N0cmluZyB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhcnJheUJ1ZmZlciAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIFR5cGVkX2FycmF5LmFycmF5QnVmZmVyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0KVxuICAgIGVsc2UgSnMubnVsbFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbZmlsZV0gRG9tLm5vZGVMaXN0XG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9ncmVzc0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBsZW5ndGhDb21wdXRhYmxlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9hZGVkIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG90YWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJvZ3Jlc3NFdmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVuZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBFTVBUWVxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbmNsYXNzIHR5cGUgZmlsZVJlYWRlciA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCByZWFkQXNBcnJheUJ1ZmZlciA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0JpbmFyeVN0cmluZyA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHQgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0X3dpdGhFbmNvZGluZyA6ICNibG9iIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0RhdGFVUkwgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3VsdCA6IGZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBmaWxlRXJyb3IgdCByZWFkb25seV9wcm9wXG5cbiAgaW5oZXJpdCBwcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIFJlYWRlckV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0gZmlsZVJlYWRlciBwcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBsb2Fkc3RhcnQgPSBFdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBFdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IEV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IEV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgbG9hZGVuZCA9IEV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5sZXQgZmlsZVJlYWRlciA6IGZpbGVSZWFkZXIgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ZpbGVSZWFkZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjYW1sX2pzX29uX2llIDogdW5pdCAtPiBib29sIHQgPSBcImNhbWxfanNfb25faWVcIlxuXG5sZXQgb25JRSA9IEpzLnRvX2Jvb2wgKGNhbWxfanNfb25faWUgKCkpXG5cbmV4dGVybmFsIGh0bWxfZXNjYXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lc2NhcGVcIlxuXG5leHRlcm5hbCBkZWNvZGVfaHRtbF9lbnRpdGllcyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZW50aXRpZXNcIlxuXG5jbGFzcyB0eXBlIGNzc1N0eWxlRGVjbGFyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIHNldFByb3BlcnR5IDpcbiAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVZhbHVlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVByaW9yaXR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVQcm9wZXJ0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EZWxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EdXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRmlsbE1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25QbGF5U3RhdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQXR0YWNobWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFJlcGVhdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21TdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbGxhcHNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmFkaXVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2FwdGlvblNpZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGlwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlckluY3JlbWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlclJlc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NGbG9hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Vyc29yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc3BsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVtcHR5Q2VsbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRGYW1pbHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTaXplIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRWYXJpYW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250V2VpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxldHRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4SGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3BhY2l0eSA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZU9mZnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0JvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0xlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1RvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQWZ0ZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0JlZm9yZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9pbnRlckV2ZW50cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJsZUxheW91dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QW5jaG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0RGVjb3JhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEluZGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dFRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZlcnRpY2FsQWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpc2liaWxpdHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdoaXRlU3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3b3JkU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgekluZGV4IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiKSBEb20uZXZlbnRfbGlzdGVuZXJcblxudHlwZSBtb3VzZV9idXR0b24gPVxuICB8IE5vX2J1dHRvblxuICB8IExlZnRfYnV0dG9uXG4gIHwgTWlkZGxlX2J1dHRvblxuICB8IFJpZ2h0X2J1dHRvblxuXG50eXBlIGRlbHRhX21vZGUgPVxuICB8IERlbHRhX3BpeGVsXG4gIHwgRGVsdGFfbGluZVxuICB8IERlbHRhX3BhZ2VcblxuY2xhc3MgdHlwZSBldmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZXZlbnRcbmVuZFxuXG5hbmQgWydhXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50LCAnYV0gRG9tLmN1c3RvbUV2ZW50XG5lbmRcblxuYW5kIGZvY3VzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1dHRvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogbW91c2VfYnV0dG9uIG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyb21FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b0VsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGtleWJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhckNvZGUgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5Q29kZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE1vZGlmaWVyU3RhdGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBrZXlJZGVudGlmaWVyIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2V3aGVlbEV2ZW50ID0gb2JqZWN0XG4gICgqIEFsbCBtb2Rlcm4gYnJvd3NlcnMgKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHdoZWVsRGVsdGEgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFaIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YU1vZGUgOiBkZWx0YV9tb2RlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VTY3JvbGxFdmVudCA9IG9iamVjdFxuICAoKiBGaXJlZm94ICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBheGlzIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9IT1JJWk9OVEFMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRJQ0FMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYW5nZWRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IHRvdWNoIHQgb3B0ZGVmIG1ldGhcbmVuZFxuXG5hbmQgdG91Y2ggPSBvYmplY3RcbiAgbWV0aG9kIGlkZW50aWZpZXIgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdWJtaXRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN1Ym1pdHRlciA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkcmFnRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRhdGFUcmFuc2ZlciA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpcGJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBjbGlwYm9hcmREYXRhIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkYXRhVHJhbnNmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGRyb3BFZmZlY3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVmZmVjdEFsbG93ZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHlwZXMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkRWxlbWVudCA6IGVsZW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YV9hbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXREcmFnSW1hZ2UgOiBlbGVtZW50IHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25jbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZGJsY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlZG93biA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2V1cCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdmVyIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW1vdmUgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3V0IDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlwcmVzcyA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5ZG93biA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5dXAgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNjcm9sbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndoZWVsIDogKCdzZWxmIHQsIG1vdXNld2hlZWxFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdzdGFydCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW5kIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbnRlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnb3ZlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnbGVhdmUgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZyA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcm9wIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbnN0YXJ0IDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uZW5kIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uaXRlcmF0aW9uIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uY2FuY2VsIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnJ1biA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmVuZCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uY2FuY2VsIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmdvdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvc3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZW50ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmNhbmNlbCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZG93biA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybGVhdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm1vdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm91dCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3ZlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVydXAgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc3BhdGNoRXZlbnQgOiBldmVudCB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuYW5kIHBvcFN0YXRlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBwb2ludGVyRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHBvaW50ZXJJZCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YW5nZW50aWFsUHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRYIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFkgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0d2lzdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc1ByaW1hcnkgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXJsIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9yYWdlQXJlYSA6IHN0b3JhZ2UgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBoYXNoQ2hhbmdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBvbGRVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgYW5pbWF0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdHJhbnNpdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcHJvcGVydHlOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbWVkaWFFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5lbmRcblxuYW5kIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNvdXJjZSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbm9kZVNlbGVjdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3JBbGwgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcbmVuZFxuXG5hbmQgdG9rZW5MaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgYWRkIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0b2dnbGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZmllciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NMaXN0IDogdG9rZW5MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZXN0IDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHN0eWxlIDogY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHByb3BcblxuICBtZXRob2QgaW5uZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRDb250ZW50IDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5uZXJUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0UGFyZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Nyb2xsTGVmdCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFRvcCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsSGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgZ2V0Q2xpZW50UmVjdHMgOiBjbGllbnRSZWN0TGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IDogY2xpZW50UmVjdCB0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsSW50b1ZpZXcgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuYW5kIGNsaWVudFJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHRvcCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmlnaHQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVmdCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0TGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBjbGllbnRSZWN0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gRG9tLm5vX2hhbmRsZXJcblxubGV0IGhhbmRsZXIgPSBEb20uaGFuZGxlclxuXG5sZXQgZnVsbF9oYW5kbGVyID0gRG9tLmZ1bGxfaGFuZGxlclxuXG5sZXQgaW52b2tlX2hhbmRsZXIgPSBEb20uaW52b2tlX2hhbmRsZXJcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gJ2EgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcImNhbmNlbFwiXG5cbiAgbGV0IGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJjbGlja1wiXG5cbiAgbGV0IGNsb3NlID0gRG9tLkV2ZW50Lm1ha2UgXCJjbG9zZVwiXG5cbiAgbGV0IGNvcHkgPSBEb20uRXZlbnQubWFrZSBcImNvcHlcIlxuXG4gIGxldCBjdXQgPSBEb20uRXZlbnQubWFrZSBcImN1dFwiXG5cbiAgbGV0IHBhc3RlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXN0ZVwiXG5cbiAgbGV0IGRibGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJkYmxjbGlja1wiXG5cbiAgbGV0IG1vdXNlZG93biA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vkb3duXCJcblxuICBsZXQgbW91c2V1cCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V1cFwiXG5cbiAgbGV0IG1vdXNlb3ZlciA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdmVyXCJcblxuICBsZXQgbW91c2Vtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW1vdmVcIlxuXG4gIGxldCBtb3VzZW91dCA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdXRcIlxuXG4gIGxldCBrZXlwcmVzcyA9IERvbS5FdmVudC5tYWtlIFwia2V5cHJlc3NcIlxuXG4gIGxldCBrZXlkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlkb3duXCJcblxuICBsZXQga2V5dXAgPSBEb20uRXZlbnQubWFrZSBcImtleXVwXCJcblxuICBsZXQgbW91c2V3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V3aGVlbFwiXG5cbiAgbGV0IHdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJ3aGVlbFwiXG5cbiAgbGV0IF9ET01Nb3VzZVNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwiRE9NTW91c2VTY3JvbGxcIlxuXG4gIGxldCB0b3VjaHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaHN0YXJ0XCJcblxuICBsZXQgdG91Y2htb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaG1vdmVcIlxuXG4gIGxldCB0b3VjaGVuZCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hlbmRcIlxuXG4gIGxldCB0b3VjaGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hjYW5jZWxcIlxuXG4gIGxldCBkcmFnc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdzdGFydFwiXG5cbiAgbGV0IGRyYWdlbmQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbmRcIlxuXG4gIGxldCBkcmFnZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbnRlclwiXG5cbiAgbGV0IGRyYWdvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnb3ZlclwiXG5cbiAgbGV0IGRyYWdsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2xlYXZlXCJcblxuICBsZXQgZHJhZyA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ1wiXG5cbiAgbGV0IGRyb3AgPSBEb20uRXZlbnQubWFrZSBcImRyb3BcIlxuXG4gIGxldCBoYXNoY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICBsZXQgY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGFuZ2VcIlxuXG4gIGxldCBpbnB1dCA9IERvbS5FdmVudC5tYWtlIFwiaW5wdXRcIlxuXG4gIGxldCB0aW1ldXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1ldXBkYXRlXCJcblxuICBsZXQgc3VibWl0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzdWJtaXRcIlxuXG4gIGxldCBzY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcInNjcm9sbFwiXG5cbiAgbGV0IGZvY3VzID0gRG9tLkV2ZW50Lm1ha2UgXCJmb2N1c1wiXG5cbiAgbGV0IGJsdXIgPSBEb20uRXZlbnQubWFrZSBcImJsdXJcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJ1bmxvYWRcIlxuXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcImJlZm9yZXVubG9hZFwiXG5cbiAgbGV0IHJlc2l6ZSA9IERvbS5FdmVudC5tYWtlIFwicmVzaXplXCJcblxuICBsZXQgb3JpZW50YXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcIm9yaWVudGF0aW9uY2hhbmdlXCJcblxuICBsZXQgcG9wc3RhdGUgPSBEb20uRXZlbnQubWFrZSBcInBvcHN0YXRlXCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgc2VsZWN0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWxlY3RcIlxuXG4gIGxldCBvbmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9ubGluZVwiXG5cbiAgbGV0IG9mZmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9mZmxpbmVcIlxuXG4gIGxldCBjaGVja2luZyA9IERvbS5FdmVudC5tYWtlIFwiY2hlY2tpbmdcIlxuXG4gIGxldCBub3VwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwibm91cGRhdGVcIlxuXG4gIGxldCBkb3dubG9hZGluZyA9IERvbS5FdmVudC5tYWtlIFwiZG93bmxvYWRpbmdcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCB1cGRhdGVyZWFkeSA9IERvbS5FdmVudC5tYWtlIFwidXBkYXRlcmVhZHlcIlxuXG4gIGxldCBjYWNoZWQgPSBEb20uRXZlbnQubWFrZSBcImNhY2hlZFwiXG5cbiAgbGV0IG9ic29sZXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJvYnNvbGV0ZVwiXG5cbiAgbGV0IGRvbUNvbnRlbnRMb2FkZWQgPSBEb20uRXZlbnQubWFrZSBcIkRPTUNvbnRlbnRMb2FkZWRcIlxuXG4gIGxldCBhbmltYXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uc3RhcnRcIlxuXG4gIGxldCBhbmltYXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmVuZFwiXG5cbiAgbGV0IGFuaW1hdGlvbml0ZXJhdGlvbiA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uaXRlcmF0aW9uXCJcblxuICBsZXQgYW5pbWF0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25jYW5jZWxcIlxuXG4gIGxldCB0cmFuc2l0aW9ucnVuID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9ucnVuXCJcblxuICBsZXQgdHJhbnNpdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uc3RhcnRcIlxuXG4gIGxldCB0cmFuc2l0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uZW5kXCJcblxuICBsZXQgdHJhbnNpdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmNhbmNlbFwiXG5cbiAgbGV0IGNhbnBsYXkgPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXlcIlxuXG4gIGxldCBjYW5wbGF5dGhyb3VnaCA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheXRocm91Z2hcIlxuXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiZHVyYXRpb25jaGFuZ2VcIlxuXG4gIGxldCBlbXB0aWVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbXB0aWVkXCJcblxuICBsZXQgZW5kZWQgPSBEb20uRXZlbnQubWFrZSBcImVuZGVkXCJcblxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImdvdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbG9hZGVkZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkZGF0YVwiXG5cbiAgbGV0IGxvYWRlZG1ldGFkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRtZXRhZGF0YVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBtZXNzYWdlID0gRG9tLkV2ZW50Lm1ha2UgXCJtZXNzYWdlXCJcblxuICBsZXQgcGF1c2UgPSBEb20uRXZlbnQubWFrZSBcInBhdXNlXCJcblxuICBsZXQgcGxheSA9IERvbS5FdmVudC5tYWtlIFwicGxheVwiXG5cbiAgbGV0IHBsYXlpbmcgPSBEb20uRXZlbnQubWFrZSBcInBsYXlpbmdcIlxuXG4gIGxldCBwb2ludGVyZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJlbnRlclwiXG5cbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJjYW5jZWxcIlxuXG4gIGxldCBwb2ludGVyZG93biA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmRvd25cIlxuXG4gIGxldCBwb2ludGVybGVhdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJsZWF2ZVwiXG5cbiAgbGV0IHBvaW50ZXJtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybW92ZVwiXG5cbiAgbGV0IHBvaW50ZXJvdXQgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdXRcIlxuXG4gIGxldCBwb2ludGVyb3ZlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm92ZXJcIlxuXG4gIGxldCBwb2ludGVydXAgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJ1cFwiXG5cbiAgbGV0IHJhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJhdGVjaGFuZ2VcIlxuXG4gIGxldCBzZWVrZWQgPSBEb20uRXZlbnQubWFrZSBcInNlZWtlZFwiXG5cbiAgbGV0IHNlZWtpbmcgPSBEb20uRXZlbnQubWFrZSBcInNlZWtpbmdcIlxuXG4gIGxldCBzdGFsbGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJzdGFsbGVkXCJcblxuICBsZXQgc3VzcGVuZCA9IERvbS5FdmVudC5tYWtlIFwic3VzcGVuZFwiXG5cbiAgbGV0IHZvbHVtZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwidm9sdW1lY2hhbmdlXCJcblxuICBsZXQgd2FpdGluZyA9IERvbS5FdmVudC5tYWtlIFwid2FpdGluZ1wiXG5cbiAgbGV0IG1ha2UgPSBEb20uRXZlbnQubWFrZVxuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSBEb20uZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IERvbS5yZW1vdmVFdmVudExpc3RlbmVyXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA9IERvbS5jcmVhdGVDdXN0b21FdmVudFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gY29sbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIG5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGh0bWxFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBwcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGlua0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Jvc3NvcmlnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtZXRhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHR0cEVxdWl2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY2hlbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBiYXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJvZHlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGZvcm1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBlbGVtZW50cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0Q2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbmN0eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfbWV0aG9kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1Ym1pdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXNldCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbnN1Ym1pdCA6ICgnc2VsZiB0LCBzdWJtaXRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0R3JvdXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGxhYmVsIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG9wdEdyb3VwRWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0U2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzZWxlY3RFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZEluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wdGlvbnMgOiBvcHRpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBhZGQgOiAjb3B0R3JvdXBFbGVtZW50IHQgLT4gI29wdEdyb3VwRWxlbWVudCB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW5wdXRFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmYXVsdENoZWNrZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGVja2VkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhMZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRleHRBcmVhRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29scyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJ1dHRvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxhYmVsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodG1sRm9yIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZmllbGRTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGVnZW5kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdUxpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG9MaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbGlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRpYWxvZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3JldHVyblZhbHVlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9wZW5fIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcmV0dXJuVmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNob3cgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hvd01vZGFsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2FuY2VsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jbG9zZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBkaXZFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHBhcmFncmFwaEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZGluZ0VsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcXVvdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJlRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBickVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaHJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG1vZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGVUaW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYW5jaG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvd25sb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbWFnZUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaXNNYXAgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxXaWR0aCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsSGVpZ2h0IDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbXBsZXRlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXJjaGl2ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZUJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWNsYXJlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFuZGJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwYXJhbUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXJlYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vSHJlZiA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1hcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFyZWFzIDogYXJlYUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXN5bmMgOiBib29sIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZW1iZWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDZWxsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2VsbEluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJiciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sU3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlYWRlcnMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd1NwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY29wZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVSb3dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCByb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlY3Rpb25Sb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNlbGxzIDogdGFibGVDZWxsRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydENlbGwgOiBpbnQgLT4gdGFibGVDZWxsRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2VsbCA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ29sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVNlY3Rpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDYXB0aW9uRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSB0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0SGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0Qm9kaWVzIDogdGFibGVTZWN0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsUGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZyYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBydWxlcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VtbWFyeSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZVRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEhlYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVURm9vdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2FwdGlvbiA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0aW1lUmFuZ2VzID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGVuZF8gOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbnR5cGUgbmV0d29ya1N0YXRlID1cbiAgfCBORVRXT1JLX0VNUFRZXG4gIHwgTkVUV09SS19JRExFXG4gIHwgTkVUV09SS19MT0FESU5HXG4gIHwgTkVUV09SS19OT19TT1VSQ0VcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBIQVZFX05PVEhJTkdcbiAgfCBIQVZFX01FVEFEQVRBXG4gIHwgSEFWRV9DVVJSRU5UX0RBVEFcbiAgfCBIQVZFX0ZVVFVSRV9EQVRBXG4gIHwgSEFWRV9FTk9VR0hfREFUQVxuXG4oKiBodHRwOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9yZWZfYXZfZG9tLmFzcCAqKVxuKCogb25seSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXIuIChJRTkrKSAqKVxuY2xhc3MgdHlwZSBtZWRpYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhblBsYXlUeXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBsb2FkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBsYXkgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYXV0b3BsYXkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRyb2xzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY3VycmVudFNyYyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRpbWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvb3AgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYWdyb3VwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtdXRlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGUgOiBuZXR3b3JrU3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXVzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF5YmFja1JhdGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHBsYXllZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVrYWJsZSA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWtpbmcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZvbHVtZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgb25jYW5wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jYW5wbGF5dGhyb3VnaCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHVyYXRpb25jaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVtcHRpZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVuZGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRtZXRhZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wYXVzZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheWluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucmF0ZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2VkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVraW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdGFsbGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdXNwZW5kIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb252b2x1bWVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndhaXRpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXVkaW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxuY2xhc3MgdHlwZSB2aWRlb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG50eXBlIGNvbnRleHQgPSBqc19zdHJpbmcgdFxuXG5sZXQgXzJkXyA9IEpzLnN0cmluZyBcIjJkXCJcblxudHlwZSBjYW52YXNQYXR0ZXJuXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0b0RhdGFVUkwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZV9jb21wcmVzc2lvbiA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEID0gb2JqZWN0XG4gIG1ldGhvZCBjYW52YXMgOiBjYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzYXZlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3RvcmUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnbG9iYWxBbHBoYSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlTGluZWFyR3JhZGllbnQgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYWRpYWxHcmFkaWVudCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm4gOiBpbWFnZUVsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tVmlkZW8gOiB2aWRlb0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVDYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVKb2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaXRlckxpbWl0IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRYIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRZIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dCbHVyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXJSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmVnaW5QYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb3ZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbGluZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHF1YWRyYXRpY0N1cnZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmV6aWVyQ3VydmVUbyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyY1RvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVsbGlwc2UgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaXAgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNQb2ludEluUGF0aCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdGb2N1c1JpbmcgOiAjZWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRCYXNlbGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbFRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFRleHRfd2l0aFdpZHRoIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dF93aXRoV2lkdGggOlxuICAgIGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtZWFzdXJlVGV4dCA6IGpzX3N0cmluZyB0IC0+IHRleHRNZXRyaWNzIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2UgOiBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX3dpdGhTaXplIDpcbiAgICBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGwgOlxuICAgICAgIGltYWdlRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXNXaXRoU2l6ZSA6XG4gICAgY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21DYW52YXMgOlxuICAgICAgIGNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhWaWRlbyA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoU2l6ZSA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbVZpZGVvIDpcbiAgICAgICB2aWRlb0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlSW1hZ2VEYXRhIDogaW50IC0+IGludCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEltYWdlRGF0YSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgcHV0SW1hZ2VEYXRhIDogaW1hZ2VEYXRhIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc0dyYWRpZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBhZGRDb2xvclN0b3AgOiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgdGV4dE1ldHJpY3MgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBpbWFnZURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YSA6IGNhbnZhc1BpeGVsQXJyYXkgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNhbnZhc1BpeGVsQXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuZXh0ZXJuYWwgcGl4ZWxfZ2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfanNfZ2V0XCJcblxuZXh0ZXJuYWwgcGl4ZWxfc2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG5jbGFzcyB0eXBlIHJhbmdlID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0Q29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRTdGFydCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZUNvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lQ29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZXh0cmFjdENvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNvbnRlbnRzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdXJyb3VuZENvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG4oKiogSW5mb3JtYXRpb24gb24gY3VycmVudCBzZWxlY3Rpb24gKilcbmNsYXNzIHR5cGUgc2VsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBhbmNob3JOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvck9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c09mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzQ29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VDb3VudCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJhbmdlQXQgOiBpbnQgLT4gcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleHRlbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbW9kaWZ5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9TdGFydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdEFsbENoaWxkcmVuIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWRkUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUFsbFJhbmdlcyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcm9tRG9jdW1lbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udGFpbnNOb2RlIDogRG9tLm5vZGUgdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWQgOiBoZWFkRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgYm9keSA6IGJvZHlFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiBodG1sRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW1hZ2VzIDogaW1hZ2VFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxldHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmtzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb3JtcyA6IGZvcm1FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvcnMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVzaWduTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3Blbl8gOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgd3JpdGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXhlY0NvbW1hbmQgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGFjdGl2ZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlkZGVuIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25mdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG50eXBlIGludGVydmFsX2lkXG5cbnR5cGUgdGltZW91dF9pZFxuXG50eXBlIGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG5cbmNsYXNzIHR5cGUgbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0bmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9ydCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGF0aG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlYXJjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGFzaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXNzaWduIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2UgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVsb2FkIDogdW5pdCBtZXRoXG5lbmRcblxubGV0IGxvY2F0aW9uX29yaWdpbiAobG9jIDogbG9jYXRpb24gdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGxvYyMjLm9yaWdpblxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCBwcm90b2NvbCA9IGxvYyMjLnByb3RvY29sIGluXG4gICAgICBsZXQgaG9zdG5hbWUgPSBsb2MjIy5ob3N0bmFtZSBpblxuICAgICAgbGV0IHBvcnQgPSBsb2MjIy5wb3J0IGluXG4gICAgICBpZiBwcm90b2NvbCMjLmxlbmd0aCA9IDAgJiYgaG9zdG5hbWUjIy5sZW5ndGggPSAwXG4gICAgICB0aGVuIEpzLnN0cmluZyBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBvcmlnaW4gPSBwcm90b2NvbCMjY29uY2F0XzIgKEpzLnN0cmluZyBcIi8vXCIpIGhvc3RuYW1lIGluXG4gICAgICAgIGlmIHBvcnQjIy5sZW5ndGggPiAwIHRoZW4gb3JpZ2luIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiOlwiKSBsb2MjIy5wb3J0IGVsc2Ugb3JpZ2luKVxuICAgIChmdW4gbyAtPiBvKVxuXG5jbGFzcyB0eXBlIGhpc3RvcnkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdvIDogaW50IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmFjayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3J3YXJkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB1bmRvTWFuYWdlciA9IG9iamVjdCBlbmRcblxuY2xhc3MgdHlwZSBuYXZpZ2F0b3IgPSBvYmplY3RcbiAgbWV0aG9kIGFwcENvZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBWZXJzaW9uIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWVFbmFibGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25MaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhdGZvcm0gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZlbmRvciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckFnZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJMYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heFRvdWNoUG9pbnRzIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmVlbiA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXBwbGljYXRpb25DYWNoZSA9IG9iamVjdFxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXBkYXRlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN3YXBDYWNoZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNoZWNraW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm5vdXBkYXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmRvd25sb2FkaW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVwZGF0ZXJlYWR5IDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNhY2hlZCA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vYnNvbGV0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuY2xhc3MgdHlwZSBfVVJMID0gb2JqZWN0XG4gIG1ldGhvZCBjcmVhdGVPYmplY3RVUkwgOiAjRmlsZS5ibG9iIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXZva2VPYmplY3RVUkwgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHdpbmRvdyA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGRvY3VtZW50IDogZG9jdW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxpY2F0aW9uQ2FjaGUgOiBhcHBsaWNhdGlvbkNhY2hlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaXN0b3J5IDogaGlzdG9yeSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdW5kb01hbmFnZXIgOiB1bmRvTWFuYWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF2aWdhdG9yIDogbmF2aWdhdG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTZWxlY3Rpb24gOiBzZWxlY3Rpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3AgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGwgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxCeSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlc3Npb25TdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2FsU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJhbWVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHdpbmRvdyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGFsZXJ0IDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmZpcm0gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBwcm9tcHQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBwcmludCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnRlcnZhbCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IGludGVydmFsX2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJJbnRlcnZhbCA6IGludGVydmFsX2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lb3V0IDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gdGltZW91dF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyVGltZW91dCA6IHRpbWVvdXRfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVlc3RBbmltYXRpb25GcmFtZSA6XG4gICAgKG51bWJlcl90IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIG1ldGhcblxuICBtZXRob2QgY2FuY2VsQW5pbWF0aW9uRnJhbWUgOiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NyZWVuIDogc2NyZWVuIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlIDogI2VsZW1lbnQgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlX3BzZXVkb0VsdCA6XG4gICAgI2VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBhdG9iIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBidG9hIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25iZWZvcmV1bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucmVzaXplIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub3JpZW50YXRpb25jaGFuZ2UgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wb3BzdGF0ZSA6ICh3aW5kb3cgdCwgcG9wU3RhdGVFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaGFzaGNoYW5nZSA6ICh3aW5kb3cgdCwgaGFzaENoYW5nZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vbmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub2ZmbGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgX1VSTCA6IF9VUkwgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRldmljZVBpeGVsUmF0aW8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdpbmRvdyA6IHdpbmRvdyB0ID0gSnMuVW5zYWZlLmdsb2JhbFxuXG4oKiBUaGUgdG9wbGV2ZWwgb2JqZWN0ICopXG5cbmxldCBkb2N1bWVudCA9IHdpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfZXhuIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiZ2V0RWxlbWVudEJ5SWRfZXhuOiAlUyBub3QgZm91bmRcIiBpZCkpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX29wdCBpZCA9IEpzLk9wdC50b19vcHRpb24gKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2NvZXJjZSBpZCBjb2VyY2UgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBOb25lKVxuICAgIChmdW4gZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2UgZSkpXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGZyYW1lU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29scyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub1Jlc2l6ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpRnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRXaW5kb3cgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqKiopXG5cbigqWFhYIFNob3VsZCBwcm92aWRlIGNyZWF0aW9uIGZ1bmN0aW9ucyBhIGxhIGxhYmxndGsuLi4gKilcblxubGV0IG9wdF9pdGVyIHggZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHYgLT4gZiB2XG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlRWxlbWVudFN5bnRheCA9IHJlZiBgVW5rbm93blxuXG5sZXQgcmVjIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdCA9XG4gIGlmIFBvbHkuKF90eXBlID0gTm9uZSkgJiYgUG9seS4obmFtZSA9IE5vbmUpXG4gIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KVxuICBlbHNlXG4gICAgbWF0Y2ggIWNyZWF0ZUVsZW1lbnRTeW50YXggd2l0aFxuICAgIHwgYFN0YW5kYXJkIC0+XG4gICAgICAgIGxldCByZXMgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpIGluXG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPiByZXMjIy5fdHlwZSA6PSB0KTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT4gcmVzIyMubmFtZSA6PSBuKTtcbiAgICAgICAgcmVzXG4gICAgfCBgRXh0ZW5kZWQgLT5cbiAgICAgICAgbGV0IGEgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgICAgICAgaWdub3JlIChhIyNwdXNoXzIgKEpzLnN0cmluZyBcIjxcIikgKEpzLnN0cmluZyBlbHQpKTtcbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIHR5cGU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgdCkgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgbmFtZT1cXFwiXCIpIChodG1sX2VzY2FwZSBuKSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBpZ25vcmUgKGEjI3B1c2ggKEpzLnN0cmluZyBcIj5cIikpO1xuICAgICAgICBKcy5VbnNhZmUuY29lcmNlIChkb2MjI2NyZWF0ZUVsZW1lbnQgKGEjI2pvaW4gKEpzLnN0cmluZyBcIlwiKSkpXG4gICAgfCBgVW5rbm93biAtPlxuICAgICAgICBjcmVhdGVFbGVtZW50U3ludGF4IDo9XG4gICAgICAgICAgaWYgdHJ5XG4gICAgICAgICAgICAgICBsZXQgZWwgOiBpbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBcIjxpbnB1dCBuYW1lPVxcXCJ4XFxcIj5cIikpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgSnMuZXF1YWxzIGVsIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyBcImlucHV0XCIpXG4gICAgICAgICAgICAgICAmJiBKcy5lcXVhbHMgZWwjIy5uYW1lIChKcy5zdHJpbmcgXCJ4XCIpXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGZhbHNlXG4gICAgICAgICAgdGhlbiBgRXh0ZW5kZWRcbiAgICAgICAgICBlbHNlIGBTdGFuZGFyZDtcbiAgICAgICAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0XG5cbmxldCBjcmVhdGVIdG1sIGRvYyA6IGh0bWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImh0bWxcIlxuXG5sZXQgY3JlYXRlSGVhZCBkb2MgOiBoZWFkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoZWFkXCJcblxubGV0IGNyZWF0ZUxpbmsgZG9jIDogbGlua0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlua1wiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlTWV0YSBkb2MgOiBtZXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhXCJcblxubGV0IGNyZWF0ZUJhc2UgZG9jIDogYmFzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmFzZVwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlQm9keSBkb2MgOiBib2R5RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJib2R5XCJcblxubGV0IGNyZWF0ZUZvcm0gZG9jIDogZm9ybUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9ybVwiXG5cbmxldCBjcmVhdGVPcHRncm91cCBkb2MgOiBvcHRHcm91cEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0Z3JvdXBcIlxuXG5sZXQgY3JlYXRlT3B0aW9uIGRvYyA6IG9wdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0aW9uXCJcblxubGV0IGNyZWF0ZVNlbGVjdCA/X3R5cGUgP25hbWUgZG9jIDogc2VsZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJzZWxlY3RcIlxuXG5sZXQgY3JlYXRlSW5wdXQgP190eXBlID9uYW1lIGRvYyA6IGlucHV0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJpbnB1dFwiXG5cbmxldCBjcmVhdGVUZXh0YXJlYSA/X3R5cGUgP25hbWUgZG9jIDogdGV4dEFyZWFFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInRleHRhcmVhXCJcblxubGV0IGNyZWF0ZUJ1dHRvbiA/X3R5cGUgP25hbWUgZG9jIDogYnV0dG9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJidXR0b25cIlxuXG5sZXQgY3JlYXRlTGFiZWwgZG9jIDogbGFiZWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxhYmVsXCJcblxubGV0IGNyZWF0ZUZpZWxkc2V0IGRvYyA6IGZpZWxkU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWVsZHNldFwiXG5cbmxldCBjcmVhdGVMZWdlbmQgZG9jIDogbGVnZW5kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsZWdlbmRcIlxuXG5sZXQgY3JlYXRlVWwgZG9jIDogdUxpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVsXCJcblxubGV0IGNyZWF0ZU9sIGRvYyA6IG9MaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvbFwiXG5cbmxldCBjcmVhdGVEbCBkb2MgOiBkTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGxcIlxuXG5sZXQgY3JlYXRlTGkgZG9jIDogbGlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpXCJcblxubGV0IGNyZWF0ZURpYWxvZyBkb2MgOiBkaWFsb2dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpYWxvZ1wiXG5cbmxldCBjcmVhdGVEaXYgZG9jIDogZGl2RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkaXZcIlxuXG5sZXQgY3JlYXRlRW1iZWQgZG9jIDogZW1iZWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVtYmVkXCJcblxubGV0IGNyZWF0ZVAgZG9jIDogcGFyYWdyYXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwXCJcblxubGV0IGNyZWF0ZUgxIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgxXCJcblxubGV0IGNyZWF0ZUgyIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgyXCJcblxubGV0IGNyZWF0ZUgzIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgzXCJcblxubGV0IGNyZWF0ZUg0IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg0XCJcblxubGV0IGNyZWF0ZUg1IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg1XCJcblxubGV0IGNyZWF0ZUg2IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg2XCJcblxubGV0IGNyZWF0ZVEgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInFcIlxuXG5sZXQgY3JlYXRlQmxvY2txdW90ZSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmxvY2txdW90ZVwiXG5cbmxldCBjcmVhdGVQcmUgZG9jIDogcHJlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwcmVcIlxuXG5sZXQgY3JlYXRlQnIgZG9jIDogYnJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJyXCJcblxubGV0IGNyZWF0ZUhyIGRvYyA6IGhyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoclwiXG5cbmxldCBjcmVhdGVJbnMgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbnNcIlxuXG5sZXQgY3JlYXRlRGVsIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVsXCJcblxubGV0IGNyZWF0ZUEgZG9jIDogYW5jaG9yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUltZyBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1nXCJcblxubGV0IGNyZWF0ZU9iamVjdCBkb2MgOiBvYmplY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9iamVjdFwiXG5cbmxldCBjcmVhdGVQYXJhbSBkb2MgOiBwYXJhbUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGFyYW1cIlxuXG5sZXQgY3JlYXRlTWFwIGRvYyA6IG1hcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFwXCJcblxubGV0IGNyZWF0ZUFyZWEgZG9jIDogYXJlYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXJlYVwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlVGFibGUgZG9jIDogdGFibGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRhYmxlXCJcblxubGV0IGNyZWF0ZUNhcHRpb24gZG9jIDogdGFibGVDYXB0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYXB0aW9uXCJcblxubGV0IGNyZWF0ZUNvbCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sXCJcblxubGV0IGNyZWF0ZUNvbGdyb3VwIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xncm91cFwiXG5cbmxldCBjcmVhdGVUaGVhZCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoZWFkXCJcblxubGV0IGNyZWF0ZVRmb290IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGZvb3RcIlxuXG5sZXQgY3JlYXRlVGJvZHkgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Ym9keVwiXG5cbmxldCBjcmVhdGVUciBkb2MgOiB0YWJsZVJvd0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJcIlxuXG5sZXQgY3JlYXRlVGggZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aFwiXG5cbmxldCBjcmVhdGVUZCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRkXCJcblxubGV0IGNyZWF0ZVN1YiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1YlwiXG5cbmxldCBjcmVhdGVTdXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdXBcIlxuXG5sZXQgY3JlYXRlU3BhbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNwYW5cIlxuXG5sZXQgY3JlYXRlVHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ0dFwiXG5cbmxldCBjcmVhdGVJIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiaVwiXG5cbmxldCBjcmVhdGVCIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYlwiXG5cbmxldCBjcmVhdGVCaWcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiaWdcIlxuXG5sZXQgY3JlYXRlU21hbGwgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzbWFsbFwiXG5cbmxldCBjcmVhdGVFbSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImVtXCJcblxubGV0IGNyZWF0ZVN0cm9uZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN0cm9uZ1wiXG5cbmxldCBjcmVhdGVDaXRlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY2l0ZVwiXG5cbmxldCBjcmVhdGVEZm4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZm5cIlxuXG5sZXQgY3JlYXRlQ29kZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNvZGVcIlxuXG5sZXQgY3JlYXRlU2FtcCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNhbXBcIlxuXG5sZXQgY3JlYXRlS2JkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwia2JkXCJcblxubGV0IGNyZWF0ZVZhciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInZhclwiXG5cbmxldCBjcmVhdGVBYmJyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWJiclwiXG5cbmxldCBjcmVhdGVEZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRkXCJcblxubGV0IGNyZWF0ZUR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZHRcIlxuXG5sZXQgY3JlYXRlTm9zY3JpcHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJub3NjcmlwdFwiXG5cbmxldCBjcmVhdGVBZGRyZXNzIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWRkcmVzc1wiXG5cbmxldCBjcmVhdGVGcmFtZXNldCBkb2MgOiBmcmFtZVNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVzZXRcIlxuXG5sZXQgY3JlYXRlRnJhbWUgZG9jIDogZnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lXCJcblxubGV0IGNyZWF0ZUlmcmFtZSBkb2MgOiBpRnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImlmcmFtZVwiXG5cbmxldCBjcmVhdGVBdWRpbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXVkaW9cIlxuXG5sZXQgY3JlYXRlVmlkZW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZGVvXCJcblxuZXhjZXB0aW9uIENhbnZhc19ub3RfYXZhaWxhYmxlXG5cbmxldCBjcmVhdGVDYW52YXMgZG9jIDogY2FudmFzRWxlbWVudCB0ID1cbiAgbGV0IGMgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhbnZhc1wiIGluXG4gIGlmIG5vdCAoT3B0LnRlc3QgYyMjLmdldENvbnRleHQpIHRoZW4gcmFpc2UgQ2FudmFzX25vdF9hdmFpbGFibGU7XG4gIGNcblxubGV0IGh0bWxfZWxlbWVudCA6IGh0bWxFbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9IVE1MRWxlbWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgOiAjRG9tLm5vZGUgSnMudCAtPiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgaHRtbF9lbGVtZW50KSlcbiAgICB0aGVuXG4gICAgICAoKiBpZSA8IDkgZG9lcyBub3QgaGF2ZSBIVE1MRWxlbWVudDogd2UgaGF2ZSB0byBjaGVhdCB0byBjaGVja1xuICAgICAgICAgdGhhdCBzb21ldGhpbmcgaXMgYW4gaHRtbCBlbGVtZW50ICopXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIChKcy5VbnNhZmUuY29lcmNlIGUpIyMuaW5uZXJIVE1MKSlcbiAgICAgIHRoZW4gSnMubnVsbFxuICAgICAgZWxzZSBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIEpzLmluc3RhbmNlb2YgZSBodG1sX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgdGFnIChlIDogI2VsZW1lbnQgdCkgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA9IHVuc2FmZUNvZXJjZSBcImFcIiBlXG5cbiAgbGV0IGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcImFyZWFcIiBlXG5cbiAgbGV0IGJhc2UgZSA9IHVuc2FmZUNvZXJjZSBcImJhc2VcIiBlXG5cbiAgbGV0IGJsb2NrcXVvdGUgZSA9IHVuc2FmZUNvZXJjZSBcImJsb2NrcXVvdGVcIiBlXG5cbiAgbGV0IGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcImJvZHlcIiBlXG5cbiAgbGV0IGJyIGUgPSB1bnNhZmVDb2VyY2UgXCJiclwiIGVcblxuICBsZXQgYnV0dG9uIGUgPSB1bnNhZmVDb2VyY2UgXCJidXR0b25cIiBlXG5cbiAgbGV0IGNhbnZhcyBlID0gdW5zYWZlQ29lcmNlIFwiY2FudmFzXCIgZVxuXG4gIGxldCBjYXB0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJjYXB0aW9uXCIgZVxuXG4gIGxldCBjb2wgZSA9IHVuc2FmZUNvZXJjZSBcImNvbFwiIGVcblxuICBsZXQgY29sZ3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcImNvbGdyb3VwXCIgZVxuXG4gIGxldCBkZWwgZSA9IHVuc2FmZUNvZXJjZSBcImRlbFwiIGVcblxuICBsZXQgZGl2IGUgPSB1bnNhZmVDb2VyY2UgXCJkaXZcIiBlXG5cbiAgbGV0IGRsIGUgPSB1bnNhZmVDb2VyY2UgXCJkbFwiIGVcblxuICBsZXQgZmllbGRzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZpZWxkc2V0XCIgZVxuXG4gIGxldCBlbWJlZCBlID0gdW5zYWZlQ29lcmNlIFwiZW1iZWRcIiBlXG5cbiAgbGV0IGZvcm0gZSA9IHVuc2FmZUNvZXJjZSBcImZvcm1cIiBlXG5cbiAgbGV0IGZyYW1lc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZXNldFwiIGVcblxuICBsZXQgZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lXCIgZVxuXG4gIGxldCBoMSBlID0gdW5zYWZlQ29lcmNlIFwiaDFcIiBlXG5cbiAgbGV0IGgyIGUgPSB1bnNhZmVDb2VyY2UgXCJoMlwiIGVcblxuICBsZXQgaDMgZSA9IHVuc2FmZUNvZXJjZSBcImgzXCIgZVxuXG4gIGxldCBoNCBlID0gdW5zYWZlQ29lcmNlIFwiaDRcIiBlXG5cbiAgbGV0IGg1IGUgPSB1bnNhZmVDb2VyY2UgXCJoNVwiIGVcblxuICBsZXQgaDYgZSA9IHVuc2FmZUNvZXJjZSBcImg2XCIgZVxuXG4gIGxldCBoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJoZWFkXCIgZVxuXG4gIGxldCBociBlID0gdW5zYWZlQ29lcmNlIFwiaHJcIiBlXG5cbiAgbGV0IGh0bWwgZSA9IHVuc2FmZUNvZXJjZSBcImh0bWxcIiBlXG5cbiAgbGV0IGlmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiaWZyYW1lXCIgZVxuXG4gIGxldCBpbWcgZSA9IHVuc2FmZUNvZXJjZSBcImltZ1wiIGVcblxuICBsZXQgaW5wdXQgZSA9IHVuc2FmZUNvZXJjZSBcImlucHV0XCIgZVxuXG4gIGxldCBpbnMgZSA9IHVuc2FmZUNvZXJjZSBcImluc1wiIGVcblxuICBsZXQgbGFiZWwgZSA9IHVuc2FmZUNvZXJjZSBcImxhYmVsXCIgZVxuXG4gIGxldCBsZWdlbmQgZSA9IHVuc2FmZUNvZXJjZSBcImxlZ2VuZFwiIGVcblxuICBsZXQgbGkgZSA9IHVuc2FmZUNvZXJjZSBcImxpXCIgZVxuXG4gIGxldCBsaW5rIGUgPSB1bnNhZmVDb2VyY2UgXCJsaW5rXCIgZVxuXG4gIGxldCBtYXAgZSA9IHVuc2FmZUNvZXJjZSBcIm1hcFwiIGVcblxuICBsZXQgbWV0YSBlID0gdW5zYWZlQ29lcmNlIFwibWV0YVwiIGVcblxuICBsZXQgX29iamVjdCBlID0gdW5zYWZlQ29lcmNlIFwib2JqZWN0XCIgZVxuXG4gIGxldCBvbCBlID0gdW5zYWZlQ29lcmNlIFwib2xcIiBlXG5cbiAgbGV0IG9wdGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRncm91cFwiIGVcblxuICBsZXQgb3B0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRpb25cIiBlXG5cbiAgbGV0IHAgZSA9IHVuc2FmZUNvZXJjZSBcInBcIiBlXG5cbiAgbGV0IHBhcmFtIGUgPSB1bnNhZmVDb2VyY2UgXCJwYXJhbVwiIGVcblxuICBsZXQgcHJlIGUgPSB1bnNhZmVDb2VyY2UgXCJwcmVcIiBlXG5cbiAgbGV0IHEgZSA9IHVuc2FmZUNvZXJjZSBcInFcIiBlXG5cbiAgbGV0IHNjcmlwdCBlID0gdW5zYWZlQ29lcmNlIFwic2NyaXB0XCIgZVxuXG4gIGxldCBzZWxlY3QgZSA9IHVuc2FmZUNvZXJjZSBcInNlbGVjdFwiIGVcblxuICBsZXQgc3R5bGUgZSA9IHVuc2FmZUNvZXJjZSBcInN0eWxlXCIgZVxuXG4gIGxldCB0YWJsZSBlID0gdW5zYWZlQ29lcmNlIFwidGFibGVcIiBlXG5cbiAgbGV0IHRib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Ym9keVwiIGVcblxuICBsZXQgdGQgZSA9IHVuc2FmZUNvZXJjZSBcInRkXCIgZVxuXG4gIGxldCB0ZXh0YXJlYSBlID0gdW5zYWZlQ29lcmNlIFwidGV4dGFyZWFcIiBlXG5cbiAgbGV0IHRmb290IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Zm9vdFwiIGVcblxuICBsZXQgdGggZSA9IHVuc2FmZUNvZXJjZSBcInRoXCIgZVxuXG4gIGxldCB0aGVhZCBlID0gdW5zYWZlQ29lcmNlIFwidGhlYWRcIiBlXG5cbiAgbGV0IHRpdGxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aXRsZVwiIGVcblxuICBsZXQgdHIgZSA9IHVuc2FmZUNvZXJjZSBcInRyXCIgZVxuXG4gIGxldCB1bCBlID0gdW5zYWZlQ29lcmNlIFwidWxcIiBlXG5cbiAgbGV0IGF1ZGlvIGUgPSB1bnNhZmVDb2VyY2UgXCJhdWRpb1wiIGVcblxuICBsZXQgdmlkZW8gZSA9IHVuc2FmZUNvZXJjZSBcInZpZGVvXCIgZVxuXG4gIGxldCB1bnNhZmVDb2VyY2VFdmVudCBjb25zdHIgKGV2IDogI2V2ZW50IHQpID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoZGVmIGNvbnN0cikgJiYgSnMuaW5zdGFuY2VvZiBldiBjb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZXYpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IG1vdXNlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlRXZlbnQgZXZcblxuICBsZXQga2V5Ym9hcmRFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fS2V5Ym9hcmRFdmVudCBldlxuXG4gIGxldCB3aGVlbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9XaGVlbEV2ZW50IGV2XG5cbiAgbGV0IG1vdXNlU2Nyb2xsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlU2Nyb2xsRXZlbnQgZXZcblxuICBsZXQgcG9wU3RhdGVFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fUG9wU3RhdGVFdmVudCBldlxuXG4gIGxldCBtZXNzYWdlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01lc3NhZ2VFdmVudCBldlxuZW5kXG5cbigqKioqKVxuXG5sZXQgZXZlbnRUYXJnZXQgPSBEb20uZXZlbnRUYXJnZXRcblxubGV0IGV2ZW50UmVsYXRlZFRhcmdldCAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmdldCBlIyMucmVsYXRlZFRhcmdldCAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBKcy50b19zdHJpbmcgZSMjLl90eXBlIHdpdGhcbiAgICAgIHwgXCJtb3VzZW92ZXJcIiAtPiBPcHRkZWYuZ2V0IGUjIy5mcm9tRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXCJtb3VzZW91dFwiIC0+IE9wdGRlZi5nZXQgZSMjLnRvRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXyAtPiBKcy5udWxsKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIGUjIy5jbGllbnRYICsgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdFxuICAsIGUjIy5jbGllbnRZICsgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3AgKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5wYWdlWFxuICAgIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKVxuICAgIChmdW4geCAtPiBPcHRkZWYuY2FzZSBlIyMucGFnZVkgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpIChmdW4geSAtPiB4LCB5KSlcblxubGV0IGVsZW1lbnRDbGllbnRQb3NpdGlvbiAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHIgPSBlIyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMubGVmdCkgLSBib2R5IyMuY2xpZW50TGVmdCAtIGh0bWwjIy5jbGllbnRMZWZ0XG4gICwgdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy50b3ApIC0gYm9keSMjLmNsaWVudFRvcCAtIGh0bWwjIy5jbGllbnRUb3AgKVxuXG5sZXQgZ2V0RG9jdW1lbnRTY3JvbGwgKCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnQsIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wXG5cbmxldCBidXR0b25QcmVzc2VkIChldiA6ICNtb3VzZUV2ZW50IEpzLnQpID1cbiAgSnMuT3B0ZGVmLmNhc2VcbiAgICBldiMjLndoaWNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggZXYjIy5idXR0b24gd2l0aFxuICAgICAgfCAxIC0+IExlZnRfYnV0dG9uXG4gICAgICB8IDIgLT4gUmlnaHRfYnV0dG9uXG4gICAgICB8IDQgLT4gTWlkZGxlX2J1dHRvblxuICAgICAgfCBfIC0+IE5vX2J1dHRvbilcbiAgICAoZnVuIHggLT4geClcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgP2NhcHR1cmVcbiAgICA/b25jZVxuICAgID9wYXNzaXZlXG4gICAgZVxuICAgIEV2ZW50LndoZWVsXG4gICAgKGhhbmRsZXIgKGZ1biAoZSA6IG1vdXNld2hlZWxFdmVudCB0KSAtPlxuICAgICAgICAgbGV0IGR4ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFYIChmdW4gKCkgLT4gMCkgLyA0MCBpblxuICAgICAgICAgbGV0IGR5ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFZIChmdW4gKCkgLT4gZSMjLndoZWVsRGVsdGEpIC8gNDAgaW5cbiAgICAgICAgIGggKGUgOj4gbW91c2VFdmVudCB0KSB+ZHggfmR5KSlcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIGUgaCBjYXB0ID1cbiAgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyB+Y2FwdHVyZTpjYXB0IGUgaFxuXG4oKioqKiopXG5cbm1vZHVsZSBLZXlib2FyZF9jb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBVbmlkZW50aWZpZWRcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IEtleUFcbiAgICB8IEtleUJcbiAgICB8IEtleUNcbiAgICB8IEtleURcbiAgICB8IEtleUVcbiAgICB8IEtleUZcbiAgICB8IEtleUdcbiAgICB8IEtleUhcbiAgICB8IEtleUlcbiAgICB8IEtleUpcbiAgICB8IEtleUtcbiAgICB8IEtleUxcbiAgICB8IEtleU1cbiAgICB8IEtleU5cbiAgICB8IEtleU9cbiAgICB8IEtleVBcbiAgICB8IEtleVFcbiAgICB8IEtleVJcbiAgICB8IEtleVNcbiAgICB8IEtleVRcbiAgICB8IEtleVVcbiAgICB8IEtleVZcbiAgICB8IEtleVdcbiAgICB8IEtleVhcbiAgICB8IEtleVlcbiAgICB8IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IERpZ2l0MFxuICAgIHwgRGlnaXQxXG4gICAgfCBEaWdpdDJcbiAgICB8IERpZ2l0M1xuICAgIHwgRGlnaXQ0XG4gICAgfCBEaWdpdDVcbiAgICB8IERpZ2l0NlxuICAgIHwgRGlnaXQ3XG4gICAgfCBEaWdpdDhcbiAgICB8IERpZ2l0OVxuICAgIHwgTWludXNcbiAgICB8IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgVGFiXG4gICAgfCBFbnRlclxuICAgIHwgU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBFc2NhcGVcbiAgICB8IEJhY2tzcGFjZVxuICAgIHwgSW5zZXJ0XG4gICAgfCBEZWxldGVcbiAgICB8IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IEJyYWNrZXRMZWZ0XG4gICAgfCBCcmFja2V0UmlnaHRcbiAgICB8IFNlbWljb2xvblxuICAgIHwgUXVvdGVcbiAgICB8IEJhY2txdW90ZVxuICAgIHwgQmFja3NsYXNoXG4gICAgfCBDb21tYVxuICAgIHwgUGVyaW9kXG4gICAgfCBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IEYxXG4gICAgfCBGMlxuICAgIHwgRjNcbiAgICB8IEY0XG4gICAgfCBGNVxuICAgIHwgRjZcbiAgICB8IEY3XG4gICAgfCBGOFxuICAgIHwgRjlcbiAgICB8IEYxMFxuICAgIHwgRjExXG4gICAgfCBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgTnVtcGFkMFxuICAgIHwgTnVtcGFkMVxuICAgIHwgTnVtcGFkMlxuICAgIHwgTnVtcGFkM1xuICAgIHwgTnVtcGFkNFxuICAgIHwgTnVtcGFkNVxuICAgIHwgTnVtcGFkNlxuICAgIHwgTnVtcGFkN1xuICAgIHwgTnVtcGFkOFxuICAgIHwgTnVtcGFkOVxuICAgIHwgTnVtcGFkTXVsdGlwbHlcbiAgICB8IE51bXBhZFN1YnRyYWN0XG4gICAgfCBOdW1wYWRBZGRcbiAgICB8IE51bXBhZERlY2ltYWxcbiAgICB8IE51bXBhZEVxdWFsXG4gICAgfCBOdW1wYWRFbnRlclxuICAgIHwgTnVtcGFkRGl2aWRlXG4gICAgfCBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgQ29udHJvbExlZnRcbiAgICB8IENvbnRyb2xSaWdodFxuICAgIHwgTWV0YUxlZnRcbiAgICB8IE1ldGFSaWdodFxuICAgIHwgU2hpZnRMZWZ0XG4gICAgfCBTaGlmdFJpZ2h0XG4gICAgfCBBbHRMZWZ0XG4gICAgfCBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IEFycm93TGVmdFxuICAgIHwgQXJyb3dSaWdodFxuICAgIHwgQXJyb3dVcFxuICAgIHwgQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgUGFnZVVwXG4gICAgfCBQYWdlRG93blxuICAgIHwgSG9tZVxuICAgIHwgRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFZvbHVtZU11dGVcbiAgICB8IFZvbHVtZURvd25cbiAgICB8IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgTWVkaWFUcmFja05leHRcbiAgICB8IE1lZGlhUGxheVBhdXNlXG4gICAgfCBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IENvbnRleHRNZW51XG4gICAgfCBCcm93c2VyU2VhcmNoXG4gICAgfCBCcm93c2VySG9tZVxuICAgIHwgQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgQnJvd3NlclJlZnJlc2hcbiAgICB8IEJyb3dzZXJTdG9wXG4gICAgfCBCcm93c2VyRm9yd2FyZFxuICAgIHwgQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBPU0xlZnRcbiAgICB8IE9TUmlnaHRcbiAgICB8IFNjcm9sbExvY2tcbiAgICB8IFByaW50U2NyZWVuXG4gICAgfCBJbnRsQmFja3NsYXNoXG4gICAgfCBJbnRsWWVuXG4gICAgfCBQYXVzZVxuXG4gIGxldCB0cnlfY29kZSB2ID1cbiAgICBtYXRjaCBKcy50b19zdHJpbmcgdiB3aXRoXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBcIktleUFcIiAtPiBLZXlBXG4gICAgfCBcIktleUJcIiAtPiBLZXlCXG4gICAgfCBcIktleUNcIiAtPiBLZXlDXG4gICAgfCBcIktleURcIiAtPiBLZXlEXG4gICAgfCBcIktleUVcIiAtPiBLZXlFXG4gICAgfCBcIktleUZcIiAtPiBLZXlGXG4gICAgfCBcIktleUdcIiAtPiBLZXlHXG4gICAgfCBcIktleUhcIiAtPiBLZXlIXG4gICAgfCBcIktleUlcIiAtPiBLZXlJXG4gICAgfCBcIktleUpcIiAtPiBLZXlKXG4gICAgfCBcIktleUtcIiAtPiBLZXlLXG4gICAgfCBcIktleUxcIiAtPiBLZXlMXG4gICAgfCBcIktleU1cIiAtPiBLZXlNXG4gICAgfCBcIktleU5cIiAtPiBLZXlOXG4gICAgfCBcIktleU9cIiAtPiBLZXlPXG4gICAgfCBcIktleVBcIiAtPiBLZXlQXG4gICAgfCBcIktleVFcIiAtPiBLZXlRXG4gICAgfCBcIktleVJcIiAtPiBLZXlSXG4gICAgfCBcIktleVNcIiAtPiBLZXlTXG4gICAgfCBcIktleVRcIiAtPiBLZXlUXG4gICAgfCBcIktleVVcIiAtPiBLZXlVXG4gICAgfCBcIktleVZcIiAtPiBLZXlWXG4gICAgfCBcIktleVdcIiAtPiBLZXlXXG4gICAgfCBcIktleVhcIiAtPiBLZXlYXG4gICAgfCBcIktleVlcIiAtPiBLZXlZXG4gICAgfCBcIktleVpcIiAtPiBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBcIkRpZ2l0MFwiIC0+IERpZ2l0MFxuICAgIHwgXCJEaWdpdDFcIiAtPiBEaWdpdDFcbiAgICB8IFwiRGlnaXQyXCIgLT4gRGlnaXQyXG4gICAgfCBcIkRpZ2l0M1wiIC0+IERpZ2l0M1xuICAgIHwgXCJEaWdpdDRcIiAtPiBEaWdpdDRcbiAgICB8IFwiRGlnaXQ1XCIgLT4gRGlnaXQ1XG4gICAgfCBcIkRpZ2l0NlwiIC0+IERpZ2l0NlxuICAgIHwgXCJEaWdpdDdcIiAtPiBEaWdpdDdcbiAgICB8IFwiRGlnaXQ4XCIgLT4gRGlnaXQ4XG4gICAgfCBcIkRpZ2l0OVwiIC0+IERpZ2l0OVxuICAgIHwgXCJNaW51c1wiIC0+IE1pbnVzXG4gICAgfCBcIkVxdWFsXCIgLT4gRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBcIlRhYlwiIC0+IFRhYlxuICAgIHwgXCJFbnRlclwiIC0+IEVudGVyXG4gICAgfCBcIlNwYWNlXCIgLT4gU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBcIkVzY2FwZVwiIC0+IEVzY2FwZVxuICAgIHwgXCJCYWNrc3BhY2VcIiAtPiBCYWNrc3BhY2VcbiAgICB8IFwiSW5zZXJ0XCIgLT4gSW5zZXJ0XG4gICAgfCBcIkRlbGV0ZVwiIC0+IERlbGV0ZVxuICAgIHwgXCJDYXBzTG9ja1wiIC0+IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IFwiQnJhY2tldExlZnRcIiAtPiBCcmFja2V0TGVmdFxuICAgIHwgXCJCcmFja2V0UmlnaHRcIiAtPiBCcmFja2V0UmlnaHRcbiAgICB8IFwiU2VtaWNvbG9uXCIgLT4gU2VtaWNvbG9uXG4gICAgfCBcIlF1b3RlXCIgLT4gUXVvdGVcbiAgICB8IFwiQmFja3F1b3RlXCIgLT4gQmFja3F1b3RlXG4gICAgfCBcIkJhY2tzbGFzaFwiIC0+IEJhY2tzbGFzaFxuICAgIHwgXCJDb21tYVwiIC0+IENvbW1hXG4gICAgfCBcIlBlcmlvZFwiIC0+IFBlcmlvZFxuICAgIHwgXCJTbGFzaFwiIC0+IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgXCJGMVwiIC0+IEYxXG4gICAgfCBcIkYyXCIgLT4gRjJcbiAgICB8IFwiRjNcIiAtPiBGM1xuICAgIHwgXCJGNFwiIC0+IEY0XG4gICAgfCBcIkY1XCIgLT4gRjVcbiAgICB8IFwiRjZcIiAtPiBGNlxuICAgIHwgXCJGN1wiIC0+IEY3XG4gICAgfCBcIkY4XCIgLT4gRjhcbiAgICB8IFwiRjlcIiAtPiBGOVxuICAgIHwgXCJGMTBcIiAtPiBGMTBcbiAgICB8IFwiRjExXCIgLT4gRjExXG4gICAgfCBcIkYxMlwiIC0+IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBcIk51bXBhZDBcIiAtPiBOdW1wYWQwXG4gICAgfCBcIk51bXBhZDFcIiAtPiBOdW1wYWQxXG4gICAgfCBcIk51bXBhZDJcIiAtPiBOdW1wYWQyXG4gICAgfCBcIk51bXBhZDNcIiAtPiBOdW1wYWQzXG4gICAgfCBcIk51bXBhZDRcIiAtPiBOdW1wYWQ0XG4gICAgfCBcIk51bXBhZDVcIiAtPiBOdW1wYWQ1XG4gICAgfCBcIk51bXBhZDZcIiAtPiBOdW1wYWQ2XG4gICAgfCBcIk51bXBhZDdcIiAtPiBOdW1wYWQ3XG4gICAgfCBcIk51bXBhZDhcIiAtPiBOdW1wYWQ4XG4gICAgfCBcIk51bXBhZDlcIiAtPiBOdW1wYWQ5XG4gICAgfCBcIk51bXBhZE11bHRpcGx5XCIgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IFwiTnVtcGFkU3VidHJhY3RcIiAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgXCJOdW1wYWRBZGRcIiAtPiBOdW1wYWRBZGRcbiAgICB8IFwiTnVtcGFkRGVjaW1hbFwiIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IFwiTnVtcGFkRXF1YWxcIiAtPiBOdW1wYWRFcXVhbFxuICAgIHwgXCJOdW1wYWRFbnRlclwiIC0+IE51bXBhZEVudGVyXG4gICAgfCBcIk51bXBhZERpdmlkZVwiIC0+IE51bXBhZERpdmlkZVxuICAgIHwgXCJOdW1Mb2NrXCIgLT4gTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IFwiQ29udHJvbExlZnRcIiAtPiBDb250cm9sTGVmdFxuICAgIHwgXCJDb250cm9sUmlnaHRcIiAtPiBDb250cm9sUmlnaHRcbiAgICB8IFwiTWV0YUxlZnRcIiAtPiBNZXRhTGVmdFxuICAgIHwgXCJNZXRhUmlnaHRcIiAtPiBNZXRhUmlnaHRcbiAgICB8IFwiU2hpZnRMZWZ0XCIgLT4gU2hpZnRMZWZ0XG4gICAgfCBcIlNoaWZ0UmlnaHRcIiAtPiBTaGlmdFJpZ2h0XG4gICAgfCBcIkFsdExlZnRcIiAtPiBBbHRMZWZ0XG4gICAgfCBcIkFsdFJpZ2h0XCIgLT4gQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBcIkFycm93TGVmdFwiIC0+IEFycm93TGVmdFxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgLT4gQXJyb3dSaWdodFxuICAgIHwgXCJBcnJvd1VwXCIgLT4gQXJyb3dVcFxuICAgIHwgXCJBcnJvd0Rvd25cIiAtPiBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBcIlBhZ2VVcFwiIC0+IFBhZ2VVcFxuICAgIHwgXCJQYWdlRG93blwiIC0+IFBhZ2VEb3duXG4gICAgfCBcIkhvbWVcIiAtPiBIb21lXG4gICAgfCBcIkVuZFwiIC0+IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBcIlZvbHVtZU11dGVcIiAtPiBWb2x1bWVNdXRlXG4gICAgfCBcIlZvbHVtZURvd25cIiAtPiBWb2x1bWVEb3duXG4gICAgfCBcIlZvbHVtZVVwXCIgLT4gVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgXCJNZWRpYVRyYWNrUHJldmlvdXNcIiAtPiBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IFwiTWVkaWFUcmFja05leHRcIiAtPiBNZWRpYVRyYWNrTmV4dFxuICAgIHwgXCJNZWRpYVBsYXlQYXVzZVwiIC0+IE1lZGlhUGxheVBhdXNlXG4gICAgfCBcIk1lZGlhU3RvcFwiIC0+IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgXCJDb250ZXh0TWVudVwiIC0+IENvbnRleHRNZW51XG4gICAgfCBcIkJyb3dzZXJTZWFyY2hcIiAtPiBCcm93c2VyU2VhcmNoXG4gICAgfCBcIkJyb3dzZXJIb21lXCIgLT4gQnJvd3NlckhvbWVcbiAgICB8IFwiQnJvd3NlckZhdm9yaXRlc1wiIC0+IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IFwiQnJvd3NlclJlZnJlc2hcIiAtPiBCcm93c2VyUmVmcmVzaFxuICAgIHwgXCJCcm93c2VyU3RvcFwiIC0+IEJyb3dzZXJTdG9wXG4gICAgfCBcIkJyb3dzZXJGb3J3YXJkXCIgLT4gQnJvd3NlckZvcndhcmRcbiAgICB8IFwiQnJvd3NlckJhY2tcIiAtPiBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IFwiT1NMZWZ0XCIgLT4gT1NMZWZ0XG4gICAgfCBcIk9TUmlnaHRcIiAtPiBPU1JpZ2h0XG4gICAgfCBcIlNjcm9sbExvY2tcIiAtPiBTY3JvbGxMb2NrXG4gICAgfCBcIlByaW50U2NyZWVuXCIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IFwiSW50bEJhY2tzbGFzaFwiIC0+IEludGxCYWNrc2xhc2hcbiAgICB8IFwiSW50bFllblwiIC0+IEludGxZZW5cbiAgICB8IFwiUGF1c2VcIiAtPiBQYXVzZVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX2xlZnQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRMZWZ0XG4gICAgfCAxNyAtPiBDb250cm9sTGVmdFxuICAgIHwgMTggLT4gQWx0TGVmdFxuICAgIHwgOTEgLT4gTWV0YUxlZnRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9yaWdodCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdFJpZ2h0XG4gICAgfCAxNyAtPiBDb250cm9sUmlnaHRcbiAgICB8IDE4IC0+IEFsdFJpZ2h0XG4gICAgfCA5MSAtPiBNZXRhUmlnaHRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9udW1wYWQgPSBmdW5jdGlvblxuICAgIHwgNDYgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgNDUgLT4gTnVtcGFkMFxuICAgIHwgMzUgLT4gTnVtcGFkMVxuICAgIHwgNDAgLT4gTnVtcGFkMlxuICAgIHwgMzQgLT4gTnVtcGFkM1xuICAgIHwgMzcgLT4gTnVtcGFkNFxuICAgIHwgMTIgLT4gTnVtcGFkNVxuICAgIHwgMzkgLT4gTnVtcGFkNlxuICAgIHwgMzYgLT4gTnVtcGFkN1xuICAgIHwgMzggLT4gTnVtcGFkOFxuICAgIHwgMzMgLT4gTnVtcGFkOVxuICAgIHwgMTMgLT4gTnVtcGFkRW50ZXJcbiAgICB8IDExMSAtPiBOdW1wYWREaXZpZGVcbiAgICB8IDEwNyAtPiBOdW1wYWRBZGRcbiAgICB8IDEwOSAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgMTA2IC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCAxMTAgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgOTYgLT4gTnVtcGFkMFxuICAgIHwgOTcgLT4gTnVtcGFkMVxuICAgIHwgOTggLT4gTnVtcGFkMlxuICAgIHwgOTkgLT4gTnVtcGFkM1xuICAgIHwgMTAwIC0+IE51bXBhZDRcbiAgICB8IDEwMSAtPiBOdW1wYWQ1XG4gICAgfCAxMDIgLT4gTnVtcGFkNlxuICAgIHwgMTAzIC0+IE51bXBhZDdcbiAgICB8IDEwNCAtPiBOdW1wYWQ4XG4gICAgfCAxMDUgLT4gTnVtcGFkOVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX25vcm1hbCA9IGZ1bmN0aW9uXG4gICAgfCAyNyAtPiBFc2NhcGVcbiAgICB8IDExMiAtPiBGMVxuICAgIHwgMTEzIC0+IEYyXG4gICAgfCAxMTQgLT4gRjNcbiAgICB8IDExNSAtPiBGNFxuICAgIHwgMTE2IC0+IEY1XG4gICAgfCAxMTcgLT4gRjZcbiAgICB8IDExOCAtPiBGN1xuICAgIHwgMTE5IC0+IEY4XG4gICAgfCAxMjAgLT4gRjlcbiAgICB8IDEyMSAtPiBGMTBcbiAgICB8IDEyMiAtPiBGMTFcbiAgICB8IDEyMyAtPiBGMTJcbiAgICB8IDQyIC0+IFByaW50U2NyZWVuXG4gICAgfCAxNDUgLT4gU2Nyb2xsTG9ja1xuICAgIHwgMTkgLT4gUGF1c2VcbiAgICB8IDE5MiAtPiBCYWNrcXVvdGVcbiAgICB8IDQ5IC0+IERpZ2l0MVxuICAgIHwgNTAgLT4gRGlnaXQyXG4gICAgfCA1MSAtPiBEaWdpdDNcbiAgICB8IDUyIC0+IERpZ2l0NFxuICAgIHwgNTMgLT4gRGlnaXQ1XG4gICAgfCA1NCAtPiBEaWdpdDZcbiAgICB8IDU1IC0+IERpZ2l0N1xuICAgIHwgNTYgLT4gRGlnaXQ4XG4gICAgfCA1NyAtPiBEaWdpdDlcbiAgICB8IDQ4IC0+IERpZ2l0MFxuICAgIHwgMTg5IC0+IE1pbnVzXG4gICAgfCAxODcgLT4gRXF1YWxcbiAgICB8IDggLT4gQmFja3NwYWNlXG4gICAgfCA5IC0+IFRhYlxuICAgIHwgODEgLT4gS2V5UVxuICAgIHwgODcgLT4gS2V5V1xuICAgIHwgNjkgLT4gS2V5RVxuICAgIHwgODIgLT4gS2V5UlxuICAgIHwgODQgLT4gS2V5VFxuICAgIHwgODkgLT4gS2V5WVxuICAgIHwgODUgLT4gS2V5VVxuICAgIHwgNzMgLT4gS2V5SVxuICAgIHwgNzkgLT4gS2V5T1xuICAgIHwgODAgLT4gS2V5UFxuICAgIHwgMjE5IC0+IEJyYWNrZXRMZWZ0XG4gICAgfCAyMjEgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCAyMjAgLT4gQmFja3NsYXNoXG4gICAgfCAyMCAtPiBDYXBzTG9ja1xuICAgIHwgNjUgLT4gS2V5QVxuICAgIHwgODMgLT4gS2V5U1xuICAgIHwgNjggLT4gS2V5RFxuICAgIHwgNzAgLT4gS2V5RlxuICAgIHwgNzEgLT4gS2V5R1xuICAgIHwgNzIgLT4gS2V5SFxuICAgIHwgNzQgLT4gS2V5SlxuICAgIHwgNzUgLT4gS2V5S1xuICAgIHwgNzYgLT4gS2V5TFxuICAgIHwgMTg2IC0+IFNlbWljb2xvblxuICAgIHwgMjIyIC0+IFF1b3RlXG4gICAgfCAxMyAtPiBFbnRlclxuICAgIHwgOTAgLT4gS2V5WlxuICAgIHwgODggLT4gS2V5WFxuICAgIHwgNjcgLT4gS2V5Q1xuICAgIHwgODYgLT4gS2V5VlxuICAgIHwgNjYgLT4gS2V5QlxuICAgIHwgNzggLT4gS2V5TlxuICAgIHwgNzcgLT4gS2V5TVxuICAgIHwgMTg4IC0+IENvbW1hXG4gICAgfCAxOTAgLT4gUGVyaW9kXG4gICAgfCAxOTEgLT4gU2xhc2hcbiAgICB8IDMyIC0+IFNwYWNlXG4gICAgfCA5MyAtPiBDb250ZXh0TWVudVxuICAgIHwgNDUgLT4gSW5zZXJ0XG4gICAgfCAzNiAtPiBIb21lXG4gICAgfCAzMyAtPiBQYWdlVXBcbiAgICB8IDQ2IC0+IERlbGV0ZVxuICAgIHwgMzUgLT4gRW5kXG4gICAgfCAzNCAtPiBQYWdlRG93blxuICAgIHwgMzcgLT4gQXJyb3dMZWZ0XG4gICAgfCA0MCAtPiBBcnJvd0Rvd25cbiAgICB8IDM5IC0+IEFycm93UmlnaHRcbiAgICB8IDM4IC0+IEFycm93VXBcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IG1ha2VfdW5pZGVudGlmaWVkIF8gPSBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gT3B0ZGVmLmNhc2UgdmFsdWUgbWFrZV91bmlkZW50aWZpZWQgZlxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IHJ1bl9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IGYgdmFsdWVcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBnZXRfa2V5X2NvZGUgZXZ0ID0gZXZ0IyMua2V5Q29kZVxuXG4gIGxldCB0cnlfa2V5X2xvY2F0aW9uIGV2dCA9XG4gICAgbWF0Y2ggZXZ0IyMubG9jYXRpb24gd2l0aFxuICAgIHwgMSAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX2xlZnRcbiAgICB8IDIgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9yaWdodFxuICAgIHwgMyAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX251bXBhZFxuICAgIHwgXyAtPiBtYWtlX3VuaWRlbnRpZmllZFxuXG4gIGxldCAoIHw+ICkgeCBmID0gZiB4XG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgVW5pZGVudGlmaWVkXG4gICAgfD4gdHJ5X25leHQgZXZ0IyMuY29kZSB0cnlfY29kZVxuICAgIHw+IHRyeV9rZXlfbG9jYXRpb24gZXZ0XG4gICAgfD4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9ub3JtYWxcblxuICBsZXQgb2Zfa2V5X2NvZGUgPSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5lbmRcblxubW9kdWxlIEtleWJvYXJkX2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBVY2hhci50IG9wdGlvblxuXG4gIGxldCBjaGFyX29mX2ludCB2YWx1ZSA9XG4gICAgaWYgMCA8IHZhbHVlIHRoZW4gdHJ5IFNvbWUgKFVjaGFyLm9mX2ludCB2YWx1ZSkgd2l0aCBfIC0+IE5vbmUgZWxzZSBOb25lXG5cbiAgbGV0IGVtcHR5X3N0cmluZyBfID0gSnMuc3RyaW5nIFwiXCJcblxuICBsZXQgbm9uZSBfID0gTm9uZVxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIGxldCBrZXkgPSBPcHRkZWYuZ2V0IGV2dCMjLmtleSBlbXB0eV9zdHJpbmcgaW5cbiAgICBtYXRjaCBrZXkjIy5sZW5ndGggd2l0aFxuICAgIHwgMCAtPiBPcHRkZWYuY2FzZSBldnQjIy5jaGFyQ29kZSBub25lIGNoYXJfb2ZfaW50XG4gICAgfCAxIC0+IGNoYXJfb2ZfaW50IChpbnRfb2ZfZmxvYXQgKEpzLnRvX2Zsb2F0IChrZXkjI2NoYXJDb2RlQXQgMCkpKVxuICAgIHwgXyAtPiBOb25lXG5lbmRcblxuKCoqKioqKVxuXG5sZXQgZWxlbWVudCA6ICNEb20uZWxlbWVudCB0IC0+IGVsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2VcblxudHlwZSB0YWdnZWRFbGVtZW50ID1cbiAgfCBBIG9mIGFuY2hvckVsZW1lbnQgdFxuICB8IEFyZWEgb2YgYXJlYUVsZW1lbnQgdFxuICB8IEF1ZGlvIG9mIGF1ZGlvRWxlbWVudCB0XG4gIHwgQmFzZSBvZiBiYXNlRWxlbWVudCB0XG4gIHwgQmxvY2txdW90ZSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IEJvZHkgb2YgYm9keUVsZW1lbnQgdFxuICB8IEJyIG9mIGJyRWxlbWVudCB0XG4gIHwgQnV0dG9uIG9mIGJ1dHRvbkVsZW1lbnQgdFxuICB8IENhbnZhcyBvZiBjYW52YXNFbGVtZW50IHRcbiAgfCBDYXB0aW9uIG9mIHRhYmxlQ2FwdGlvbkVsZW1lbnQgdFxuICB8IENvbCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IENvbGdyb3VwIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgRGVsIG9mIG1vZEVsZW1lbnQgdFxuICB8IERpYWxvZyBvZiBkaWFsb2dFbGVtZW50IHRcbiAgfCBEaXYgb2YgZGl2RWxlbWVudCB0XG4gIHwgRGwgb2YgZExpc3RFbGVtZW50IHRcbiAgfCBFbWJlZCBvZiBlbWJlZEVsZW1lbnQgdFxuICB8IEZpZWxkc2V0IG9mIGZpZWxkU2V0RWxlbWVudCB0XG4gIHwgRm9ybSBvZiBmb3JtRWxlbWVudCB0XG4gIHwgRnJhbWVzZXQgb2YgZnJhbWVTZXRFbGVtZW50IHRcbiAgfCBGcmFtZSBvZiBmcmFtZUVsZW1lbnQgdFxuICB8IEgxIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDMgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg0IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDYgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEhlYWQgb2YgaGVhZEVsZW1lbnQgdFxuICB8IEhyIG9mIGhyRWxlbWVudCB0XG4gIHwgSHRtbCBvZiBodG1sRWxlbWVudCB0XG4gIHwgSWZyYW1lIG9mIGlGcmFtZUVsZW1lbnQgdFxuICB8IEltZyBvZiBpbWFnZUVsZW1lbnQgdFxuICB8IElucHV0IG9mIGlucHV0RWxlbWVudCB0XG4gIHwgSW5zIG9mIG1vZEVsZW1lbnQgdFxuICB8IExhYmVsIG9mIGxhYmVsRWxlbWVudCB0XG4gIHwgTGVnZW5kIG9mIGxlZ2VuZEVsZW1lbnQgdFxuICB8IExpIG9mIGxpRWxlbWVudCB0XG4gIHwgTGluayBvZiBsaW5rRWxlbWVudCB0XG4gIHwgTWFwIG9mIG1hcEVsZW1lbnQgdFxuICB8IE1ldGEgb2YgbWV0YUVsZW1lbnQgdFxuICB8IE9iamVjdCBvZiBvYmplY3RFbGVtZW50IHRcbiAgfCBPbCBvZiBvTGlzdEVsZW1lbnQgdFxuICB8IE9wdGdyb3VwIG9mIG9wdEdyb3VwRWxlbWVudCB0XG4gIHwgT3B0aW9uIG9mIG9wdGlvbkVsZW1lbnQgdFxuICB8IFAgb2YgcGFyYWdyYXBoRWxlbWVudCB0XG4gIHwgUGFyYW0gb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQcmUgb2YgcHJlRWxlbWVudCB0XG4gIHwgUSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IFNjcmlwdCBvZiBzY3JpcHRFbGVtZW50IHRcbiAgfCBTZWxlY3Qgb2Ygc2VsZWN0RWxlbWVudCB0XG4gIHwgU3R5bGUgb2Ygc3R5bGVFbGVtZW50IHRcbiAgfCBUYWJsZSBvZiB0YWJsZUVsZW1lbnQgdFxuICB8IFRib2R5IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRkIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRleHRhcmVhIG9mIHRleHRBcmVhRWxlbWVudCB0XG4gIHwgVGZvb3Qgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGggb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGhlYWQgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGl0bGUgb2YgdGl0bGVFbGVtZW50IHRcbiAgfCBUciBvZiB0YWJsZVJvd0VsZW1lbnQgdFxuICB8IFVsIG9mIHVMaXN0RWxlbWVudCB0XG4gIHwgVmlkZW8gb2YgdmlkZW9FbGVtZW50IHRcbiAgfCBPdGhlciBvZiBlbGVtZW50IHRcblxubGV0IG90aGVyIGUgPSBPdGhlciAoZSA6ICNlbGVtZW50IHQgOj4gZWxlbWVudCB0KVxuXG5sZXQgdGFnZ2VkIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgdGFnID0gSnMudG9fYnl0ZXN0cmluZyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwXG4gIHRoZW4gb3RoZXIgZVxuICBlbHNlXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgdGFnIDAgd2l0aFxuICAgIHwgJ2EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImFcIiAtPiBBIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhcmVhXCIgLT4gQXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXVkaW9cIiAtPiBBdWRpbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdiJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJiYXNlXCIgLT4gQmFzZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYmxvY2txdW90ZVwiIC0+IEJsb2NrcXVvdGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJvZHlcIiAtPiBCb2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJiclwiIC0+IEJyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJidXR0b25cIiAtPiBCdXR0b24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiY2FudmFzXCIgLT4gQ2FudmFzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjYXB0aW9uXCIgLT4gQ2FwdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sXCIgLT4gQ29sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xncm91cFwiIC0+IENvbGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImRlbFwiIC0+IERlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGl2XCIgLT4gRGl2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkbFwiIC0+IERsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImVtYmVkXCIgLT4gRW1iZWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZmllbGRzZXRcIiAtPiBGaWVsZHNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZm9ybVwiIC0+IEZvcm0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lc2V0XCIgLT4gRnJhbWVzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lXCIgLT4gRnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaDFcIiAtPiBIMSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDJcIiAtPiBIMiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDNcIiAtPiBIMyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDRcIiAtPiBINCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDVcIiAtPiBINSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDZcIiAtPiBINiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaGVhZFwiIC0+IEhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhyXCIgLT4gSHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImh0bWxcIiAtPiBIdG1sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2knIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImlmcmFtZVwiIC0+IElmcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW1nXCIgLT4gSW1nIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnB1dFwiIC0+IElucHV0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnNcIiAtPiBJbnMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibGFiZWxcIiAtPiBMYWJlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGVnZW5kXCIgLT4gTGVnZW5kIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaVwiIC0+IExpIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaW5rXCIgLT4gTGluayAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdtJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJtYXBcIiAtPiBNYXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm1ldGFcIiAtPiBNZXRhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ28nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm9iamVjdFwiIC0+IE9iamVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib2xcIiAtPiBPbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0Z3JvdXBcIiAtPiBPcHRncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0aW9uXCIgLT4gT3B0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3AnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInBcIiAtPiBQIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwYXJhbVwiIC0+IFBhcmFtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwcmVcIiAtPiBQcmUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicVwiIC0+IFEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwic2NyaXB0XCIgLT4gU2NyaXB0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzZWxlY3RcIiAtPiBTZWxlY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInN0eWxlXCIgLT4gU3R5bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidGFibGVcIiAtPiBUYWJsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGJvZHlcIiAtPiBUYm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGRcIiAtPiBUZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGV4dGFyZWFcIiAtPiBUZXh0YXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGZvb3RcIiAtPiBUZm9vdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhcIiAtPiBUaCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhlYWRcIiAtPiBUaGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGl0bGVcIiAtPiBUaXRsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidHJcIiAtPiBUciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd1JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ1bFwiIC0+IFVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInZpZGVvXCIgLT4gVmlkZW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCBfIC0+IG90aGVyIGVcblxubGV0IG9wdF90YWdnZWQgZSA9IE9wdC5jYXNlIGUgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGUgLT4gU29tZSAodGFnZ2VkIGUpKVxuXG50eXBlIHRhZ2dlZEV2ZW50ID1cbiAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlRXZlbnQgdFxuICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRFdmVudCB0XG4gIHwgTWVzc2FnZUV2ZW50IG9mIG1lc3NhZ2VFdmVudCB0XG4gIHwgTW91c2V3aGVlbEV2ZW50IG9mIG1vdXNld2hlZWxFdmVudCB0XG4gIHwgTW91c2VTY3JvbGxFdmVudCBvZiBtb3VzZVNjcm9sbEV2ZW50IHRcbiAgfCBQb3BTdGF0ZUV2ZW50IG9mIHBvcFN0YXRlRXZlbnQgdFxuICB8IE90aGVyRXZlbnQgb2YgZXZlbnQgdFxuXG5sZXQgdGFnZ2VkRXZlbnQgKGV2IDogI2V2ZW50IEpzLnQpID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoQ29lcmNlVG8ubW91c2VFdmVudCBldilcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoQ29lcmNlVG8ua2V5Ym9hcmRFdmVudCBldilcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoQ29lcmNlVG8ud2hlZWxFdmVudCBldilcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubW91c2VTY3JvbGxFdmVudCBldilcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ucG9wU3RhdGVFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubWVzc2FnZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBPdGhlckV2ZW50IChldiA6PiBldmVudCB0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTWVzc2FnZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBQb3BTdGF0ZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNlU2Nyb2xsRXZlbnQgZXYpKVxuICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZXdoZWVsRXZlbnQgZXYpKVxuICAgICAgICAoZnVuIGV2IC0+IEtleWJvYXJkRXZlbnQgZXYpKVxuICAgIChmdW4gZXYgLT4gTW91c2VFdmVudCBldilcblxubGV0IG9wdF90YWdnZWRFdmVudCBldiA9IE9wdC5jYXNlIGV2IChmdW4gKCkgLT4gTm9uZSkgKGZ1biBldiAtPiBTb21lICh0YWdnZWRFdmVudCBldikpXG5cbmxldCBzdG9wUHJvcGFnYXRpb24gZXYgPVxuICBsZXQgZSA9IEpzLlVuc2FmZS5jb2VyY2UgZXYgaW5cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMuc3RvcFByb3BhZ2F0aW9uXG4gICAgKGZ1biAoKSAtPiBlIyMuY2FuY2VsQnViYmxlIDo9IEpzLl90cnVlKVxuICAgIChmdW4gXyAtPiBlIyNfc3RvcFByb3BhZ2F0aW9uKVxuXG5sZXQgX3JlcXVlc3RBbmltYXRpb25GcmFtZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXQgPVxuICBKcy5VbnNhZmUucHVyZV9leHByIChmdW4gXyAtPlxuICAgICAgbGV0IHcgPSBKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyBpblxuICAgICAgbGV0IGwgPVxuICAgICAgICBbIHcjIy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHJlcSA9IExpc3QuZmluZCAoZnVuIGMgLT4gSnMuT3B0ZGVmLnRlc3QgYykgbCBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIHJlcSBbfCBKcy5VbnNhZmUuaW5qZWN0IGNhbGxiYWNrIHxdXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgbm93ICgpID0gSnMudG9fZmxvYXQgKG5ldyVqcyBKcy5kYXRlX25vdykjI2dldFRpbWUgaW5cbiAgICAgICAgbGV0IGxhc3QgPSByZWYgKG5vdyAoKSkgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+XG4gICAgICAgICAgbGV0IHQgPSBub3cgKCkgaW5cbiAgICAgICAgICBsZXQgZHQgPSAhbGFzdCArLiAoMTAwMC4gLy4gNjAuKSAtLiB0IGluXG4gICAgICAgICAgbGV0IGR0ID0gaWYgUG9seS4oZHQgPCAwLikgdGhlbiAwLiBlbHNlIGR0IGluXG4gICAgICAgICAgbGFzdCA6PSB0O1xuICAgICAgICAgIGlnbm9yZSAod2luZG93IyNzZXRUaW1lb3V0IGNhbGxiYWNrIChKcy5mbG9hdCBkdCkpKVxuXG4oKioqKilcblxubGV0IGhhc1B1c2hTdGF0ZSAoKSA9IEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyMjLmhpc3RvcnkpIyMucHVzaFN0YXRlXG5cbmxldCBoYXNQbGFjZWhvbGRlciAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5wbGFjZWhvbGRlclxuXG5sZXQgaGFzUmVxdWlyZWQgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucmVxdWlyZWRcblxubGV0IG92ZXJmbG93X2xpbWl0ID0gMjE0NzQ4M18wMDAuXG5cbigqIG1zICopXG5cbnR5cGUgdGltZW91dF9pZF9zYWZlID0gdGltZW91dF9pZCBvcHRpb24gcmVmXG5cbmxldCBzZXRUaW1lb3V0IGNhbGxiYWNrIGQgOiB0aW1lb3V0X2lkX3NhZmUgPVxuICBsZXQgaWQgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgZCAoKSA9XG4gICAgbGV0IHN0ZXAsIHJlbWFpbiA9XG4gICAgICBpZiBQb2x5LihkID4gb3ZlcmZsb3dfbGltaXQpIHRoZW4gb3ZlcmZsb3dfbGltaXQsIGQgLS4gb3ZlcmZsb3dfbGltaXQgZWxzZSBkLCAwLlxuICAgIGluXG4gICAgbGV0IGNiID0gaWYgUG9seS4ocmVtYWluID0gMC4pIHRoZW4gY2FsbGJhY2sgZWxzZSBsb29wIHJlbWFpbiBpblxuICAgIGlkIDo9IFNvbWUgKHdpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBjYikgKEpzLmZsb2F0IHN0ZXApKVxuICBpblxuICBsb29wIGQgKCk7XG4gIGlkXG5cbmxldCBjbGVhclRpbWVvdXQgKGlkIDogdGltZW91dF9pZF9zYWZlKSA9XG4gIG1hdGNoICFpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgaWQgOj0gTm9uZTtcbiAgICAgIHdpbmRvdyMjY2xlYXJUaW1lb3V0IHhcblxubGV0IGpzX2FycmF5X29mX2NvbGxlY3Rpb24gKGMgOiAjZWxlbWVudCBjb2xsZWN0aW9uIEpzLnQpIDogI2VsZW1lbnQgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgPVxuICBKcy5VbnNhZmUuKG1ldGhfY2FsbCAoanNfZXhwciBcIltdLnNsaWNlXCIpIFwiY2FsbFwiIFt8IGluamVjdCBjIHxdKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBmb3JtRGF0YSA9IG9iamVjdFxuICBtZXRob2QgYXBwZW5kIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZF9ibG9iIDoganNfc3RyaW5nIHQgLT4gRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGZvcm1EYXRhIDogZm9ybURhdGEgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbmxldCBmb3JtRGF0YV9mb3JtIDogKGZvcm1FbGVtZW50IHQgLT4gZm9ybURhdGEgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG50eXBlIGZvcm1fZWx0ID1cbiAgWyBgU3RyaW5nIG9mIGpzX3N0cmluZyB0XG4gIHwgYEZpbGUgb2YgRmlsZS5maWxlIHRcbiAgXVxuXG50eXBlIGZvcm1fY29udGVudHMgPVxuICBbIGBGaWVsZHMgb2YgKHN0cmluZyAqIGZvcm1fZWx0KSBsaXN0IHJlZlxuICB8IGBGb3JtRGF0YSBvZiBmb3JtRGF0YSB0XG4gIF1cblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxuY2xhc3MgdHlwZSBzdWJtaXR0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxubGV0IGhhdmVfY29udGVudCAoZWx0IDogc3VibWl0dGFibGVFbGVtZW50IHQpID1cbiAgZWx0IyMubmFtZSMjLmxlbmd0aCA+IDAgJiYgbm90IChKcy50b19ib29sIGVsdCMjLmRpc2FibGVkKVxuXG5sZXQgZ2V0X3RleHRhcmVhX3ZhbCAoZWx0IDogdGV4dEFyZWFFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X3NlbGVjdF92YWwgKGVsdCA6IHNlbGVjdEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBpZiB0b19ib29sIGVsdCMjLm11bHRpcGxlXG4gICAgdGhlblxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBBcnJheS5pbml0IGVsdCMjLm9wdGlvbnMjIy5sZW5ndGggKGZ1biBpIC0+IE9wdC50b19vcHRpb24gKGVsdCMjLm9wdGlvbnMjI2l0ZW0gaSkpXG4gICAgICBpblxuICAgICAgZmlsdGVyX21hcFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAgIGlmIEpzLnRvX2Jvb2wgZSMjLnNlbGVjdGVkIHRoZW4gU29tZSAobmFtZSwgYFN0cmluZyBlIyMudmFsdWUpIGVsc2UgTm9uZSlcbiAgICAgICAgKEFycmF5LnRvX2xpc3Qgb3B0aW9ucylcbiAgICBlbHNlIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxuY2xhc3MgdHlwZSBmaWxlX2lucHV0ID0gb2JqZWN0XG4gIGluaGVyaXQgaW5wdXRFbGVtZW50XG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBnZXRfaW5wdXRfdmFsID8oZ2V0ID0gZmFsc2UpIChlbHQgOiBpbnB1dEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBsZXQgdmFsdWUgPSBlbHQjIy52YWx1ZSBpblxuICAgIG1hdGNoIHRvX2J5dGVzdHJpbmcgZWx0IyMuX3R5cGUjI3RvTG93ZXJDYXNlIHdpdGhcbiAgICB8IFwiY2hlY2tib3hcIiB8IFwicmFkaW9cIiAtPlxuICAgICAgICBpZiB0b19ib29sIGVsdCMjLmNoZWNrZWQgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXSBlbHNlIFtdXG4gICAgfCBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIC0+IFtdXG4gICAgfCBcInRleHRcIiB8IFwicGFzc3dvcmRcIiAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgIHwgXCJmaWxlXCIgLT4gKFxuICAgICAgICBpZiBnZXRcbiAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGVsdCA6IGZpbGVfaW5wdXQgdCA9IFVuc2FmZS5jb2VyY2UgZWx0IGluXG4gICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5maWxlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGxpc3QgLT4gKFxuICAgICAgICAgICAgICBpZiBsaXN0IyMubGVuZ3RoID0gMFxuICAgICAgICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyAoSnMuc3RyaW5nIFwiXCIpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMubXVsdGlwbGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChsaXN0IyNpdGVtIDApIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFsgbmFtZSwgYEZpbGUgZmlsZSBdKVxuICAgICAgICAgICAgICAgIHwgU29tZSB0cnVlIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gZiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gU29tZSAobmFtZSwgYEZpbGUgZmlsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgKEFycmF5LnRvX2xpc3QgKEFycmF5LmluaXQgbGlzdCMjLmxlbmd0aCAoZnVuIGkgLT4gbGlzdCMjaXRlbSBpKSkpKSlcbiAgICB8IF8gLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X2Zvcm1fZWxlbWVudHMgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGZvcm0jIy5lbGVtZW50cyMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgKGkgLSBpKVxuICAgICAgfCBTb21lIHggLT4gbG9vcCAoeCA6OiBhY2MpIChpIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSAoZm9ybSMjLmVsZW1lbnRzIyMubGVuZ3RoIC0gMSlcblxubGV0IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2ID1cbiAgbWF0Y2ggdGFnZ2VkIHYgd2l0aFxuICB8IFNlbGVjdCB2IC0+IGdldF9zZWxlY3RfdmFsIHZcbiAgfCBJbnB1dCB2IC0+IGdldF9pbnB1dF92YWwgP2dldCB2XG4gIHwgVGV4dGFyZWEgdiAtPiBnZXRfdGV4dGFyZWFfdmFsIHZcbiAgfCBfIC0+IFtdXG5cbmxldCBmb3JtX2VsZW1lbnRzID9nZXQgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biB2IC0+IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2KSAoZ2V0X2Zvcm1fZWxlbWVudHMgZm9ybSkpXG5cbmxldCBhcHBlbmQgKGZvcm1fY29udGVudHMgOiBmb3JtX2NvbnRlbnRzKSAoZm9ybV9lbHQgOiBzdHJpbmcgKiBmb3JtX2VsdCkgPVxuICBtYXRjaCBmb3JtX2NvbnRlbnRzIHdpdGhcbiAgfCBgRmllbGRzIGxpc3QgLT4gbGlzdCA6PSBmb3JtX2VsdCA6OiAhbGlzdFxuICB8IGBGb3JtRGF0YSBmIC0+IChcbiAgICAgIG1hdGNoIGZvcm1fZWx0IHdpdGhcbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IGYjI2FwcGVuZCAoc3RyaW5nIG5hbWUpIHNcbiAgICAgIHwgbmFtZSwgYEZpbGUgZmlsZSAtPiBmIyNhcHBlbmRfYmxvYiAoc3RyaW5nIG5hbWUpIChmaWxlIDo+IEZpbGUuYmxvYiB0KSlcblxubGV0IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIChKcy5kZWYgZm9ybURhdGEpIHdpdGhcbiAgfCBOb25lIC0+IGBGaWVsZHMgKHJlZiBbXSlcbiAgfCBTb21lIGNvbnN0ciAtPiBgRm9ybURhdGEgKG5ldyVqcyBjb25zdHIpXG5cbmxldCBwb3N0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIGxldCBjb250ZW50cyA9IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgaW5cbiAgTGlzdC5pdGVyIChhcHBlbmQgY29udGVudHMpIChmb3JtX2VsZW1lbnRzIGZvcm0pO1xuICBjb250ZW50c1xuXG5sZXQgZ2V0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBuYW1lLCB0b19zdHJpbmcgc1xuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAoZm9ybV9lbGVtZW50cyB+Z2V0OnRydWUgZm9ybSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBVTlNFTlRcbiAgfCBPUEVORURcbiAgfCBIRUFERVJTX1JFQ0VJVkVEXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxudHlwZSBfIHJlc3BvbnNlID1cbiAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBCbG9iIDogI0ZpbGUuYmxvYiB0IE9wdC50IHJlc3BvbnNlXG4gIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBPcHQudCByZXNwb25zZVxuICB8IEpTT04gOiAnYSBPcHQudCByZXNwb25zZVxuICB8IFRleHQgOiBqc19zdHJpbmcgdCByZXNwb25zZVxuICB8IERlZmF1bHQgOiBzdHJpbmcgcmVzcG9uc2VcblxuY2xhc3MgdHlwZSB4bWxIdHRwUmVxdWVzdCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbnJlYWR5c3RhdGVjaGFuZ2UgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9vcGVuIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBfb3Blbl9mdWxsIDpcbiAgICAgICBqc19zdHJpbmcgdFxuICAgIC0+IGpzX3N0cmluZyB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJlcXVlc3RIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3ZlcnJpZGVNaW1lVHlwZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kIDoganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiAjRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9mb3JtRGF0YSA6IEZvcm0uZm9ybURhdGEgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdHVzVGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmVzcG9uc2VIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3BvbnNlIDogRmlsZS5maWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVGV4dCA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlWE1MIDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbnRpbWVvdXQgOlxuICAgICgnc2VsZiB0LCAnc2VsZiBGaWxlLnByb2dyZXNzRXZlbnQgdCkgRG9tLmV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwbG9hZCA6IHhtbEh0dHBSZXF1ZXN0VXBsb2FkIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IHhtbEh0dHBSZXF1ZXN0IEZpbGUucHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHRpbWVvdXQgPSBEb20uRXZlbnQubWFrZSBcInRpbWVvdXRcIlxuXG4gIGxldCBsb2FkZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5leHRlcm5hbCBjcmVhdGUgOiB1bml0IC0+IHhtbEh0dHBSZXF1ZXN0IEpzLnQgPSBcImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXCJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgT0NhbWxQcm86IEdyw6lnb2lyZSBIZW5yeSwgw4dhxJ9kYcWfIEJvem1hbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd29ya2VyID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGVycm9yRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdiIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3N0TWVzc2FnZSA6ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXJtaW5hdGUgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXJyb3JFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5lbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2xubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6ICdhIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd29ya2VyID0gVW5zYWZlLmdsb2JhbCMjLl9Xb3JrZXJcblxubGV0IGNyZWF0ZSBzY3JpcHQgPSBuZXclanMgd29ya2VyIChzdHJpbmcgc2NyaXB0KVxuXG5sZXQgaW1wb3J0X3NjcmlwdHMgc2NyaXB0cyA6IHVuaXQgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLmltcG9ydF9zY3JpcHRzIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZnVuX2NhbGxcbiAgICBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0c1xuICAgIChBcnJheS5tYXAgKGZ1biBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKSkgKEFycmF5Lm9mX2xpc3Qgc2NyaXB0cykpXG5cbmxldCBzZXRfb25tZXNzYWdlIGhhbmRsZXIgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBsZXQganNfaGFuZGxlciAoZXYgOiAnYSBtZXNzYWdlRXZlbnQgSnMudCkgPSBoYW5kbGVyIGV2IyMuZGF0YSBpblxuICBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlIDo9IHdyYXBfY2FsbGJhY2sganNfaGFuZGxlclxuXG5sZXQgcG9zdF9tZXNzYWdlIG1zZyA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLnBvc3RNZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmdsb2JhbCMjcG9zdE1lc3NhZ2UgbXNnXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIEphY3F1ZXMtUGFzY2FsIERlcGxhaXhcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NJTkdcbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIGNsb3NlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBjb2RlIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3YXNDbGVhbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYmxvYiA6IEZpbGUuYmxvYiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHdlYlNvY2tldCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdXJsIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkQW1vdW50IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jbG9zZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIGNsb3NlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBleHRlbnNpb25zIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGUgOiBpbnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlQW5kUmVhc29uIDogaW50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBtZXNzYWdlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGJpbmFyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIHNlbmQgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgd2ViU29ja2V0ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2wgPSB3ZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2xzID0gd2ViU29ja2V0XG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCB3ZWJTb2NrZXRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuKCoqIDUuMSBUeXBlcyAqKVxuXG50eXBlIHNpemVpID0gaW50XG5cbnR5cGUgc2l6ZWlwdHIgPSBpbnRcblxudHlwZSBpbnRwdHIgPSBpbnRcblxudHlwZSB1aW50ID0gaW50XG5cbnR5cGUgY2xhbXBmID0gbnVtYmVyX3RcblxudHlwZSB2b2lkXG5cbnR5cGUgY2xlYXJCdWZmZXJNYXNrID0gaW50XG5cbnR5cGUgYmVnaW5Nb2RlXG5cbnR5cGUgYmxlbmRpbmdGYWN0b3JcblxudHlwZSBibGVuZE1vZGVcblxudHlwZSBidWZmZXJUYXJnZXRcblxudHlwZSBidWZmZXJVc2FnZVxuXG50eXBlIGN1bGxGYWNlTW9kZVxuXG50eXBlIGRlcHRoRnVuY3Rpb25cblxudHlwZSBlbmFibGVDYXBcblxudHlwZSBlcnJvckNvZGVcblxudHlwZSBmcm9udEZhY2VEaXJcblxudHlwZSBoaW50VGFyZ2V0XG5cbnR5cGUgaGludE1vZGVcblxudHlwZSB0ZXh0dXJlVW5pdCA9IGludFxuXG50eXBlICdhIHBpeGVsU3RvcmVQYXJhbVxuXG50eXBlIHN0ZW5jaWxPcFxuXG50eXBlIGZiVGFyZ2V0XG5cbnR5cGUgYXR0YWNobWVudFBvaW50XG5cbnR5cGUgcmJUYXJnZXRcblxudHlwZSB0ZXhUYXJnZXRcblxudHlwZSAnYSBwYXJhbWV0ZXJcblxudHlwZSAnYSBidWZmZXJQYXJhbWV0ZXJcblxudHlwZSAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbVxuXG50eXBlIHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbVxuXG50eXBlICdhIGF0dGFjaFBhcmFtXG5cbnR5cGUgZnJhbWVidWZmZXJTdGF0dXNcblxudHlwZSAnYSByZW5kZXJidWZmZXJQYXJhbVxuXG50eXBlIGZvcm1hdFxuXG50eXBlIHBpeGVsRm9ybWF0XG5cbnR5cGUgcGl4ZWxUeXBlXG5cbnR5cGUgJ2EgdGV4UGFyYW1cblxudHlwZSBkYXRhVHlwZVxuXG50eXBlIHNoYWRlclR5cGVcblxudHlwZSAnYSBwcm9ncmFtUGFyYW1cblxudHlwZSAnYSBzaGFkZXJQYXJhbVxuXG50eXBlIHRleHR1cmVGaWx0ZXJcblxudHlwZSB3cmFwTW9kZVxuXG50eXBlIHRleEZpbHRlclxuXG50eXBlIHVuaWZvcm1UeXBlXG5cbnR5cGUgY29sb3JzcGFjZUNvbnZlcnNpb25cblxudHlwZSBzaGFkZXJQcmVjaXNpb25UeXBlXG5cbnR5cGUgb2JqZWN0VHlwZVxuXG4oKiogNS4yIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgKilcbmNsYXNzIHR5cGUgY29udGV4dEF0dHJpYnV0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGVwdGggOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGVuY2lsIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYW50aWFsaWFzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlbXVsdGlwbGllZEFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlc2VydmVEcmF3aW5nQnVmZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQgOiBib29sIHQgcHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMgPVxuICBKcy5VbnNhZmUuKFxuICAgIG9ialxuICAgICAgW3wgXCJhbHBoYVwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwiZGVwdGhcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInN0ZW5jaWxcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJhbnRpYWxpYXNcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInByZW11bHRpcGxpZWRBbHBoYVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2VcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCIsIGluamVjdCBfZmFsc2VcbiAgICAgIHxdKVxuXG50eXBlIGJ1ZmZlclxuXG50eXBlIGZyYW1lYnVmZmVyXG5cbnR5cGUgcHJvZ3JhbVxuXG50eXBlIHJlbmRlcmJ1ZmZlclxuXG50eXBlIHNoYWRlclxuXG50eXBlIHRleHR1cmVcblxudHlwZSAnYSB1bmlmb3JtTG9jYXRpb25cblxuY2xhc3MgdHlwZSBhY3RpdmVJbmZvID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBvYmplY3RcbiAgbWV0aG9kIHJhbmdlTWluIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VNYXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVjaXNpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVuZGVyaW5nQ29udGV4dCA9IG9iamVjdFxuICAoKiogNS4xMy4xIEF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgY2FudmFzIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlcldpZHRoIDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVySGVpZ2h0IDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gICgqKiA1LjEzLjIgR2V0dGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCAqKVxuXG4gIG1ldGhvZCBnZXRDb250ZXh0QXR0cmlidXRlcyA6IGNvbnRleHRBdHRyaWJ1dGVzIHQgbWV0aFxuXG4gICgqKiA1LjEzLjMgU2V0dGluZyBhbmQgZ2V0dGluZyBzdGF0ZSAqKVxuXG4gIG1ldGhvZCBhY3RpdmVUZXh0dXJlIDogdGV4dHVyZVVuaXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb24gOiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA6IGJsZW5kTW9kZSAtPiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuYyA6IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmNTZXBhcmF0ZSA6XG4gICAgYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGVwdGggOiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyU3RlbmNpbCA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sb3JNYXNrIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjdWxsRmFjZSA6IGN1bGxGYWNlTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhNYXNrIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aFJhbmdlIDogY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlzYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcm9udEZhY2UgOiBmcm9udEZhY2VEaXIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhcmFtZXRlciA6ICdhLiAnYSBwYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRFcnJvciA6IGVycm9yQ29kZSBtZXRoXG5cbiAgbWV0aG9kIGhpbnQgOiBoaW50VGFyZ2V0IC0+IGhpbnRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc0VuYWJsZWQgOiBlbmFibGVDYXAgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBpeGVsU3RvcmVpIDogJ2EuICdhIHBpeGVsU3RvcmVQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcG9seWdvbk9mZnNldCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzYW1wbGVDb3ZlcmFnZSA6IGNsYW1wZiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFzayA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wIDogc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcFNlcGFyYXRlIDpcbiAgICBjdWxsRmFjZU1vZGUgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNCBWaWV3aW5nIGFuZCBjbGlwcGluZyAqKVxuXG4gIG1ldGhvZCBzY2lzc29yIDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgdmlld3BvcnQgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjUgQnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEJ1ZmZlciA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEJ1ZmZlcl8gOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX2NyZWF0ZSA6IGJ1ZmZlclRhcmdldCAtPiBzaXplaXB0ciAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQnVmZmVyIDogYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVCdWZmZXIgOiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QnVmZmVyUGFyYW1ldGVyIDogJ2EuIGJ1ZmZlclRhcmdldCAtPiAnYSBidWZmZXJQYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0J1ZmZlciA6IGJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNiBGcmFtZWJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlciA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlcl8gOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyU3RhdHVzIG1ldGhcblxuICBtZXRob2QgY3JlYXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgOlxuICAgICdhLiBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gJ2EgYXR0YWNoUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0ZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjcgUmVuZGVyYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlciA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyXyA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIDogJ2EuIHJiVGFyZ2V0IC0+ICdhIHJlbmRlcmJ1ZmZlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCByZW5kZXJidWZmZXJTdG9yYWdlIDogcmJUYXJnZXQgLT4gZm9ybWF0IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjggVGV4dHVyZSBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFRleHR1cmVfIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleFN1YkltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4SW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBwaXhlbEZvcm1hdCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleFN1YkltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0dXJlIDogdGV4dHVyZSB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVGV4dHVyZSA6IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2VuZXJhdGVNaXBtYXAgOiB0ZXhUYXJnZXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRleFBhcmFtZXRlciA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzVGV4dHVyZSA6IHRleHR1cmUgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX25ldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiB2b2lkIG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoge1tcbiAgICAgIG1ldGhvZCB0ZXhQYXJhbWV0ZXJmIDogdGV4VGFyZ2V0IC0+IHRleFBhcmFtIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuICAgICBdfVxuICAqKVxuICBtZXRob2QgdGV4UGFyYW1ldGVyaSA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOSBQcm9ncmFtcyBhbmQgU2hhZGVycyAqKVxuXG4gIG1ldGhvZCBhdHRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21waWxlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTaGFkZXIgOiBzaGFkZXJUeXBlIC0+IHNoYWRlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRldGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0YWNoZWRTaGFkZXJzIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtUGFyYW1ldGVyIDogJ2EuIHByb2dyYW0gdCAtPiAnYSBwcm9ncmFtUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtSW5mb0xvZyA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclBhcmFtZXRlciA6ICdhLiBzaGFkZXIgdCAtPiAnYSBzaGFkZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA6XG4gICAgc2hhZGVyVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25UeXBlIC0+IHNoYWRlclByZWNpc2lvbkZvcm1hdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVySW5mb0xvZyA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgaXNTaGFkZXIgOiBzaGFkZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5rUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVzZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZhbGlkYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMCBVbmlmb3JtcyBhbmQgYXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZUF0dHJpYiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZVVuaWZvcm0gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtIDogJ2EgJ2IuIHByb2dyYW0gdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm1Mb2NhdGlvbiA6ICdhLiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWIgOiAnYS4gdWludCAtPiAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYk9mZnNldCA6IHVpbnQgLT4gdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIC0+IHNpemVpcHRyIG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmIDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnZfdHlwZWQgOlxuICAgIG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2IDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdl90eXBlZCA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXYgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdl90eXBlZCA6XG4gICAgWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2IDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaSA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdiA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2YgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdl90eXBlZCA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2IDogWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaSA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXYgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2X3R5cGVkIDpcbiAgICBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmIDpcbiAgICAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2X3R5cGVkIDpcbiAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnYgOiBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpIDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXYgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2X3R5cGVkIDpcbiAgICBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdiA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2X3R5cGVkIDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2IDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnZfdHlwZWQgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnYgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdl90eXBlZCA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWYgOiB1aW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGYgOlxuICAgIHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliUG9pbnRlciA6XG4gICAgdWludCAtPiBpbnQgLT4gZGF0YVR5cGUgLT4gYm9vbCB0IC0+IHNpemVpIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMSBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqKVxuXG4gIG1ldGhvZCBjbGVhciA6IGNsZWFyQnVmZmVyTWFzayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0FycmF5cyA6IGJlZ2luTW9kZSAtPiBpbnQgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdFbGVtZW50cyA6IGJlZ2luTW9kZSAtPiBzaXplaSAtPiBkYXRhVHlwZSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbmlzaCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmbHVzaCA6IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEyIFJlYWRpbmcgYmFjayBwaXhlbHMgKilcblxuICBtZXRob2QgcmVhZFBpeGVscyA6XG4gICAgICAgaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTMgRGV0ZWN0aW5nIGNvbnRleHQgbG9zdCBldmVudHMgKilcblxuICBtZXRob2QgaXNDb250ZXh0TG9zdCA6IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTQgRGV0ZWN0aW5nIGFuZCBlbmFibGluZyBleHRlbnNpb25zICopXG5cbiAgbWV0aG9kIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW5zaW9uIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIHQgb3B0IG1ldGhcblxuICAoKiBVbnR5cGVkISAqKVxuICAoKiogQ29uc3RhbnRzICopXG5cbiAgbWV0aG9kIF9ERVBUSF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPSU5UUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX0xPT1BfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfRkFOXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBX1NBVFVSQVRFXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfQUREXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUUkVBTV9EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUQVRJQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RZTkFNSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVCA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CQUNLIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0FORF9CQUNLXyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUiA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PX0VSUk9SXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0VOVU1fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfVkFMVUVfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PVVRfT0ZfTUVNT1JZXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05URVhUX0xPU1RfV0VCR0xfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRE9OVF9DQVJFXyA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZBU1RFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OSUNFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF8gOiBoaW50VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fUkdCXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fQUxQSEFfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfQ09MT1JfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUl9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfV0lEVEhfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfTU9ERV8gOiBjdWxsRmFjZU1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0ZBQ0VfIDogZnJvbnRGYWNlRGlyIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfV1JJVEVNQVNLXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ0xFQVJfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0ZVTkNfIDogZGVwdGhGdW5jdGlvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9DTEVBUl9WQUxVRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZJRVdQT1JUIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX0JPWF8gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0NMRUFSX1ZBTFVFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9XUklURU1BU0tfIDogYm9vbCB0IGpzX2FycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfUEFSQU0gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BBQ0tfQUxJR05NRU5UXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WSUVXUE9SVF9ESU1TXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1VCUElYRUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFRF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFRU5fQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMVUVfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfVU5JVFNfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUl8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HXzJEXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR19DVUJFX01BUF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQlVGRkVSU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlRfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBUeXBlZF9hcnJheS51aW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF9QQVJBTV8gOiBoaW50TW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1NJWkVfIDogaW50IGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfVVNBR0VfIDogYnVmZmVyVXNhZ2UgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JZVEUgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFX0RUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hPUlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9JTlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF80XzRfNF80XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzZfNV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0IgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFX0FMUEhBXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVhfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlRfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBR01FTlRfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfQVRUUklCU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZBUllJTkdfVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBREVSX1RZUEVfIDogc2hhZGVyVHlwZSBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QSUxFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU19QUk9HIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5LX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZBTElEQVRFX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FUVEFDSEVEX1NIQURFUlNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVU5JRk9STVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfQVRUUklCVVRFU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTl8gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9QUk9HUkFNXyA6IHByb2dyYW0gdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFTkRPUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJFUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJTSU9OIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVEVYVFVSRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0JJTkRJTkdfIDogZnJhbWVidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CSU5ESU5HXyA6IHJlbmRlcmJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1JFTkRFUkJVRkZFUl9TSVpFIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORVZFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVTUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFQVRFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9URVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxXQVlTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9LRUVQIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUExBQ0UgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkVSVCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVST18gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVCA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVIgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01BR19GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUlOX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1NfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1RfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFXzJEXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUEVBVCA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NMQU1QX1RPX0VER0VfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUlSUk9SRURfUkVQRUFUXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQ0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfMkRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl9DVUJFXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUl8gOiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR18gOlxuICAgIGJ1ZmZlciB0IG9wdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUJfIDpcbiAgICBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSIDogZmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSIDogcmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQTQgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNV9BMV8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNTY1IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVDE2XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYOF8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1dJRFRIXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSEVJR0hUXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUXyA6IGZvcm1hdCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfUkVEX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfIDogb2JqZWN0VHlwZSBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1JFTkRFUkJVRkZFUiA6XG4gICAgcmVuZGVyYnVmZmVyIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9URVhUVVJFIDogdGV4dHVyZSB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTF8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0FUVEFDSE1FTlQwXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQ09NUExFVEVfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU18gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfUEFSQU0gOlxuICAgIGNvbG9yc3BhY2VDb252ZXJzaW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlJPV1NFUl9ERUZBVUxUX1dFQkdMXyA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogNS4xNCBXZWJHTENvbnRleHRFdmVudCAqKVxuXG5jbGFzcyB0eXBlIGNvbnRleHRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50XG5cbiAgbWV0aG9kIHN0YXR1c01lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCB3ZWJnbGNvbnRleHRsb3N0ID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGxvc3RcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvclwiXG5lbmRcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0XyA6IGpzX3N0cmluZyB0IC0+IGNvbnRleHRBdHRyaWJ1dGVzIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGdldENvbnRleHQgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHQgKEpzLnN0cmluZyBcIndlYmdsXCIpIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMgIyMgKGdldENvbnRleHQgKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSlcblxubGV0IGdldENvbnRleHRXaXRoQXR0cmlidXRlcyAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgYXR0cmlicyA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwid2ViZ2xcIikgYXR0cmlicyBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpIGF0dHJpYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0LCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWdleHAgPSBKcy5yZWdFeHAgSnMudFxuXG50eXBlIHJlc3VsdCA9IEpzLm1hdGNoX3Jlc3VsdCBKcy50XG5cbmxldCByZWdleHAgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ2lcIilcblxubGV0IHJlZ2V4cF93aXRoX2ZsYWcgcyBmID1cbiAgbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyAoXCJnXCIgXiBmKSlcblxubGV0IGJsdW50X3N0cl9hcnJheV9nZXQgYSBpID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGEgaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuXG5sZXQgc3RyaW5nX21hdGNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQubWFwIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKSBKcy5tYXRjaF9yZXN1bHQpXG5cbmxldCBzZWFyY2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb25cbiAgICAoSnMuT3B0Lm1hcFxuICAgICAgIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgIChmdW4gcmVzX3ByZSAtPlxuICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCByZXNfcHJlIGluXG4gICAgICAgICByZXMjIy5pbmRleCwgcmVzKSlcblxubGV0IHNlYXJjaF9mb3J3YXJkID0gc2VhcmNoXG5cbmxldCBtYXRjaGVkX3N0cmluZyByID0gYmx1bnRfc3RyX2FycmF5X2dldCByIDBcblxubGV0IG1hdGNoZWRfZ3JvdXAgciBpID1cbiAgSnMuT3B0ZGVmLnRvX29wdGlvbiAoSnMuT3B0ZGVmLm1hcCAoSnMuYXJyYXlfZ2V0IHIgaSkgSnMudG9fYnl0ZXN0cmluZylcblxubGV0IHF1b3RlX3JlcGxfcmUgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiWyRdXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCBxdW90ZV9yZXBsIHMgPSAoSnMuYnl0ZXN0cmluZyBzKSMjcmVwbGFjZSBxdW90ZV9yZXBsX3JlIChKcy5zdHJpbmcgXCIkJCQkXCIpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSByIHMgc19ieSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgcmVwbGFjZV9maXJzdCByIHMgc19ieSA9XG4gIGxldCBmbGFncyA9XG4gICAgbWF0Y2ggSnMudG9fYm9vbCByIyMuaWdub3JlQ2FzZSwgSnMudG9fYm9vbCByIyMubXVsdGlsaW5lIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJcIlxuICAgIHwgZmFsc2UsIHRydWUgLT4gSnMuc3RyaW5nIFwibVwiXG4gICAgfCB0cnVlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJpXCJcbiAgICB8IHRydWUsIHRydWUgLT4gSnMuc3RyaW5nIFwibWlcIlxuICBpblxuICBsZXQgcicgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyByIyMuc291cmNlIGZsYWdzIGluXG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcicgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCBsaXN0X29mX2pzX2FycmF5IGEgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGlkeCA9XG4gICAgaWYgaWR4IDwgMCB0aGVuIGFjY3UgZWxzZSBhdXggKGJsdW50X3N0cl9hcnJheV9nZXQgYSBpZHggOjogYWNjdSkgKGlkeCAtIDEpXG4gIGluXG4gIGF1eCBbXSAoYSMjLmxlbmd0aCAtIDEpXG5cbmxldCBzcGxpdCByIHMgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwIHIpKVxuXG5sZXQgYm91bmRlZF9zcGxpdCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHBMaW1pdGVkIHIgaSkpXG5cbigqIE1vcmUgY29uc3RydWN0b3JzICopXG5cbmxldCBxdW90ZV9yZSA9IHJlZ2V4cCBcIltcXFxcXVsoKVxcXFxcXFxcfCsqLj97fV4kXVwiXG5cbmxldCBxdW90ZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSBxdW90ZV9yZSAoSnMuc3RyaW5nIFwiXFxcXCQmXCIpKVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gcmVnZXhwIChxdW90ZSBzKVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IHJlZ2V4cF9jYXNlX2ZvbGQgKHF1b3RlIHMpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVXJsIHRhbXBlcmluZy4gKilcblxubGV0IHNwbGl0IGMgcyA9IEpzLnN0cl9hcnJheSAocyMjc3BsaXQgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkpXG5cbmxldCBzcGxpdF8yIGMgcyA9XG4gIGxldCBpbmRleCA9IHMjI2luZGV4T2YgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkgaW5cbiAgaWYgaW5kZXggPCAwIHRoZW4gSnMudW5kZWZpbmVkIGVsc2UgSnMuZGVmIChzIyNzbGljZSAwIGluZGV4LCBzIyNzbGljZV9lbmQgKGluZGV4ICsgMSkpXG5cbmV4Y2VwdGlvbiBMb2NhbF9leG5cblxubGV0IGludGVycnVwdCAoKSA9IHJhaXNlIExvY2FsX2V4blxuXG4oKiB1cmwgKEFLQSBwZXJjZW50KSBlbmNvZGluZy9kZWNvZGluZyAqKVxuXG5sZXQgcGx1c19yZSA9IFJlZ2V4cC5yZWdleHBfc3RyaW5nIFwiK1wiXG5cbmxldCBlc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiUyQlwiXG5cbmxldCB1bmVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiIFwiXG5cbmxldCBwbHVzX3JlX2pzX3N0cmluZyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJcXFxcK1wiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgdW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcyA9XG4gIHBsdXNfcmVfanNfc3RyaW5nIyMubGFzdEluZGV4IDo9IDA7XG4gIHMjI3JlcGxhY2UgcGx1c19yZV9qc19zdHJpbmcgKEpzLnN0cmluZyBcIiBcIilcblxubGV0IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAodW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcykpXG5cbmxldCB1cmxkZWNvZGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlIChKcy5ieXRlc3RyaW5nICh1bmVzY2FwZV9wbHVzIHMpKSlcblxuKCpsZXQgdXJsZW5jb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSBzKSopXG5cbmxldCB1cmxlbmNvZGUgPyh3aXRoX3BsdXMgPSB0cnVlKSBzID1cbiAgaWYgd2l0aF9wbHVzXG4gIHRoZW4gZXNjYXBlX3BsdXMgKEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSkpXG4gIGVsc2UgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKVxuXG50eXBlIGh0dHBfdXJsID1cbiAgeyBodV9ob3N0IDogc3RyaW5nICAoKiogVGhlIGhvc3QgcGFydCBvZiB0aGUgdXJsLiAqKVxuICA7IGh1X3BvcnQgOiBpbnQgICgqKiBUaGUgcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb24gaWYgYW55LiAqKVxuICA7IGh1X3BhdGggOiBzdHJpbmcgbGlzdCAgKCoqIFRoZSBwYXRoIHNwbGl0IG9uIFsnLyddIGNoYXJhY3RlcnMuICopXG4gIDsgaHVfcGF0aF9zdHJpbmcgOiBzdHJpbmcgICgqKiBUaGUgb3JpZ2luYWwgZW50aXJlIHBhdGguICopXG4gIDsgaHVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgICAgICAoKiogQXJndW1lbnRzIGFzIGEgZmllbGQtdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0aW9uIGxpc3QuKilcbiAgOyBodV9mcmFnbWVudCA6IHN0cmluZyAgKCoqIFRoZSBmcmFnbWVudCBwYXJ0IChhZnRlciB0aGUgWycjJ10gY2hhcmFjdGVyKS4gKilcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBIVFRQIHVybC4gKilcblxudHlwZSBmaWxlX3VybCA9XG4gIHsgZnVfcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZnVfcGF0aF9zdHJpbmcgOiBzdHJpbmdcbiAgOyBmdV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIDsgZnVfZnJhZ21lbnQgOiBzdHJpbmdcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBsb2NhbCBmaWxlIHVybHMuICopXG5cbnR5cGUgdXJsID1cbiAgfCBIdHRwIG9mIGh0dHBfdXJsXG4gIHwgSHR0cHMgb2YgaHR0cF91cmxcbiAgfCBGaWxlIG9mIGZpbGVfdXJsXG4gICAgICAoKiogVGhlIHR5cGUgZm9yIHVybHMuIFtGaWxlXSBpcyBmb3IgbG9jYWwgZmlsZXMgYW5kIFtFeG90aWMgc10gaXMgZm9yXG4gICAgdW5rbm93bi91bnN1cHBvcnRlZCBwcm90b2NvbHMuICopXG5cbmV4Y2VwdGlvbiBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG5sZXQgaXNfc2VjdXJlIHByb3Rfc3RyaW5nID1cbiAgbWF0Y2ggSnMudG9fYnl0ZXN0cmluZyBwcm90X3N0cmluZyMjdG9Mb3dlckNhc2Ugd2l0aFxuICB8IFwiaHR0cHM6XCIgfCBcImh0dHBzXCIgLT4gdHJ1ZVxuICB8IFwiaHR0cDpcIiB8IFwiaHR0cFwiIC0+IGZhbHNlXG4gIHwgXCJmaWxlOlwiIHwgXCJmaWxlXCIgfCBfIC0+IHJhaXNlIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbigqIHBvcnQgbnVtYmVyICopXG5sZXQgZGVmYXVsdF9odHRwX3BvcnQgPSA4MFxuXG5sZXQgZGVmYXVsdF9odHRwc19wb3J0ID0gNDQzXG5cbigqIHBhdGggKilcbmxldCBwYXRoX29mX3BhdGhfc3RyaW5nIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBsZXQgaiA9IHRyeSBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgJy8nIHdpdGggTm90X2ZvdW5kIC0+IGwgaW5cbiAgICBsZXQgd29yZCA9IFN0cmluZy5zdWIgcyBpIChqIC0gaSkgaW5cbiAgICBpZiBqID49IGwgdGhlbiBbIHdvcmQgXSBlbHNlIHdvcmQgOjogYXV4IChqICsgMSlcbiAgaW5cbiAgbWF0Y2ggYXV4IDAgd2l0aFxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgWyBcIlwiOyBcIlwiIF0gLT4gWyBcIlwiIF1cbiAgfCBhIC0+IGFcblxuKCogQXJndW1lbnRzICopXG5sZXQgZW5jb2RlX2FyZ3VtZW50cyBsID1cbiAgU3RyaW5nLmNvbmNhdCBcIiZcIiAoTGlzdC5tYXAgKGZ1biAobiwgdikgLT4gdXJsZW5jb2RlIG4gXiBcIj1cIiBeIHVybGVuY29kZSB2KSBsKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgcyA9XG4gIGxldCBhcnIgPSBzcGxpdCAnJicgcyBpblxuICBsZXQgbGVuID0gYXJyIyMubGVuZ3RoIGluXG4gIGxldCBuYW1lX3ZhbHVlX3NwbGl0IHMgPSBzcGxpdF8yICc9JyBzIGluXG4gIGxldCByZWMgYXV4IGFjYyBpZHggPVxuICAgIGlmIGlkeCA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBhdXhcbiAgICAgICAgICAoSnMuT3B0ZGVmLmNhc2UgKEpzLmFycmF5X2dldCBhcnIgaWR4KSBpbnRlcnJ1cHQgKGZ1biBzIC0+XG4gICAgICAgICAgICAgICBKcy5PcHRkZWYuY2FzZSAobmFtZV92YWx1ZV9zcGxpdCBzKSBpbnRlcnJ1cHQgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZ2V0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICBnZXQgeCwgZ2V0IHkpKVxuICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAocHJlZCBpZHgpXG4gICAgICB3aXRoIExvY2FsX2V4biAtPiBhdXggYWNjIChwcmVkIGlkeClcbiAgaW5cbiAgYXV4IFtdIChsZW4gLSAxKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50cyBzID0gZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHVybF9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZ1xuICAgICAgIFwiXihbSGhdW1R0XVtUdF1bUHBdW1NzXT8pOi8vKFswLTlhLXpBLVouLV0rfFxcXFxbWzAtOWEtekEtWi4tXStcXFxcXXxcXFxcW1swLTlBLUZhLWY6Ll0rXFxcXF0pPyg6KFswLTldKykpPygvKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8pPyRcIilcblxubGV0IGZpbGVfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmcgXCJeKFtGZl1bSWldW0xsXVtFZV0pOi8vKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8kXCIpXG5cbmxldCB1cmxfb2ZfanNfc3RyaW5nIHMgPVxuICBKcy5PcHQuY2FzZVxuICAgICh1cmxfcmUjI2V4ZWMgcylcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoZmlsZV9yZSMjZXhlYyBzKVxuICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKEZpbGVcbiAgICAgICAgICAgICAgIHsgZnVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICA7IGZ1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgICAgICAgICBKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICB9KSkpXG4gICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICBsZXQgc3NsID0gaXNfc2VjdXJlIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEpIGludGVycnVwdCkgaW5cbiAgICAgIGxldCBwb3J0X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBpZiBzc2wgdGhlbiA0NDMgZWxzZSA4MFxuICAgICAgICB8IHMgLT4gaW50X29mX3N0cmluZyBzXG4gICAgICBpblxuICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICBpblxuICAgICAgbGV0IHVybCA9XG4gICAgICAgIHsgaHVfaG9zdCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgIDsgaHVfcG9ydCA9XG4gICAgICAgICAgICBwb3J0X29mX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpKVxuICAgICAgICA7IGh1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgIDsgaHVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICA7IGh1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA4KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIDsgaHVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMTApIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIFNvbWUgKGlmIHNzbCB0aGVuIEh0dHBzIHVybCBlbHNlIEh0dHAgdXJsKSlcblxubGV0IHVybF9vZl9zdHJpbmcgcyA9IHVybF9vZl9qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHN0cmluZ19vZl91cmwgPSBmdW5jdGlvblxuICB8IEZpbGUgeyBmdV9wYXRoID0gcGF0aDsgZnVfYXJndW1lbnRzID0gYXJnczsgZnVfZnJhZ21lbnQgPSBmcmFnOyBfIH0gLT4gKFxuICAgICAgXCJmaWxlOi8vXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDgwIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBzXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwczovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA0NDMgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG5cbm1vZHVsZSBDdXJyZW50ID0gc3RydWN0XG4gIGxldCBsID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuT3B0ZGVmLnJldHVybiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbilcbiAgICB0aGVuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uXG4gICAgZWxzZVxuICAgICAgbGV0IGVtcHR5ID0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgICAgIG9iamVjdCVqc1xuICAgICAgICB2YWwgbXV0YWJsZSBocmVmID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwcm90b2NvbCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBvcnQgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBhdGhuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBzZWFyY2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhhc2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBvcmlnaW4gPSBKcy51bmRlZmluZWRcblxuICAgICAgICBtZXRob2QgcmVsb2FkID0gKClcblxuICAgICAgICBtZXRob2QgcmVwbGFjZSBfID0gKClcblxuICAgICAgICBtZXRob2QgYXNzaWduIF8gPSAoKVxuICAgICAgZW5kXG5cbiAgbGV0IGhvc3QgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaG9zdG5hbWVcblxuICBsZXQgcHJvdG9jb2wgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucHJvdG9jb2xcblxuICBsZXQgcG9ydCA9XG4gICAgKGZ1biAoKSAtPlxuICAgICAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKEpzLnRvX2J5dGVzdHJpbmcgbCMjLnBvcnQpKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lKVxuICAgICAgKClcblxuICBsZXQgcGF0aF9zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucGF0aG5hbWVcblxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJpbmdcblxuICBsZXQgYXJndW1lbnRzID1cbiAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgKGlmIEpzLmVxdWFscyAobCMjLnNlYXJjaCMjY2hhckF0IDApIChKcy5zdHJpbmcgXCI/XCIpXG4gICAgICAgdGhlbiBsIyMuc2VhcmNoIyNzbGljZV9lbmQgMVxuICAgICAgIGVsc2UgbCMjLnNlYXJjaClcblxuICBsZXQgZ2V0X2ZyYWdtZW50ICgpID1cbiAgICBsZXQgcyA9IEpzLnRvX2J5dGVzdHJpbmcgbCMjLmhhc2ggaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIENoYXIuZXF1YWwgcy5bMF0gJyMnXG4gICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICBlbHNlIHNcblxuICBsZXQgc2V0X2ZyYWdtZW50IHMgPSBsIyMuaGFzaCA6PSBKcy5ieXRlc3RyaW5nIHNcblxuICBsZXQgZ2V0ICgpID0gdXJsX29mX2pzX3N0cmluZyBsIyMuaHJlZlxuXG4gIGxldCBzZXQgdSA9IGwjIy5ocmVmIDo9IEpzLmJ5dGVzdHJpbmcgKHN0cmluZ19vZl91cmwgdSlcblxuICBsZXQgYXNfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhyZWZcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG5leHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG5sZXQgdXBkYXRlX2ZpbGUgfm5hbWUgfmNvbnRlbnQgPVxuICBsZXQgb2MgPSBvcGVuX291dCBuYW1lIGluXG4gIG91dHB1dF9zdHJpbmcgb2MgY29udGVudDtcbiAgY2xvc2Vfb3V0IG9jXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOlxuICBvdXRfY2hhbm5lbCAtPiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG5sZXQgc2V0X2NoYW5uZWxfZmx1c2hlciAob3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCkgKGYgOiBzdHJpbmcgLT4gdW5pdCkgPVxuICBsZXQgZicgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgPVxuICAgIEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzIC0+IGYgKEpzLnRvX2J5dGVzdHJpbmcgcykpXG4gIGluXG4gIHNldF9jaGFubmVsX291dHB1dCcgb3V0X2NoYW5uZWwgZidcblxubGV0IHNldF9jaGFubmVsX2ZpbGxlciAoaW5fY2hhbm5lbCA6IGluX2NoYW5uZWwpIChmIDogdW5pdCAtPiBzdHJpbmcpID1cbiAgbGV0IGYnIDogKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgZiBpblxuICBzZXRfY2hhbm5lbF9pbnB1dCcgaW5fY2hhbm5lbCBmJ1xuXG5leHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbmV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDpcbiAgc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG5leHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbmxldCBtb3VudCB+cGF0aCBmID1cbiAgbW91bnRfYXV0b2xvYWQgcGF0aCAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZWZpeCBwYXRoIC0+IGYgfnByZWZpeCB+cGF0aCkpXG5cbmxldCB1bm1vdW50IH5wYXRoID0gdW5tb3VudCBwYXRoXG5cbmxldCBqc19vZl9vY2FtbF92ZXJzaW9uID1cbiAgaWYgU3RyaW5nLmVxdWFsIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uIFwiXCJcbiAgdGhlbiBMaWJfdmVyc2lvbi5zXG4gIGVsc2UgTGliX3ZlcnNpb24ucyBeIFwiK1wiIF4gTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWxleGFuZGVyIFlhbmluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlclNpemUgPSBvYmplY3RcbiAgbWV0aG9kIGlubGluZVNpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJsb2NrU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudEJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgYm94IDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ic2VydmVfd2l0aE9wdGlvbnMgOlxuICAgICNEb20ubm9kZSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCByZXNpemVPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUmVzaXplT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHJlc2l6ZU9ic2VydmVyXG5cbmxldCByZXNpemVPYnNlcnZlciA6XG4gICAgKCAgIChyZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcmVzaXplT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiByZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhib3ggOiBKcy5qc19zdHJpbmcgSnMudCBvcHRpb24pXG4gICAgKCkgOiByZXNpemVPYnNlcnZlciBKcy50ID1cbiAgbGV0IG9icyA9IG5ldyVqcyByZXNpemVPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICAobWF0Y2ggYm94IHdpdGhcbiAgfCBOb25lIC0+IG9icyMjb2JzZXJ2ZSBub2RlXG4gIHwgU29tZSBib3ggLT5cbiAgICAgIGxldCBvcHRzID0gZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgaW5cbiAgICAgIG9wdHMjIy5ib3ggOj0gYm94O1xuICAgICAgb2JzIyNvYnNlcnZlX3dpdGhPcHRpb25zIG5vZGUgb3B0cyk7XG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAyMSBQaGlsaXAgV2hpdGVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGVudHJ5VHlwZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZUVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbnRyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0VGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRFbnRyaWVzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgOlxuICAgICggICAocGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCBKcy50IC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZSB+ZW50cnlfdHlwZXMgfmYgPVxuICBsZXQgZW50cnlfdHlwZXMgPSBlbnRyeV90eXBlcyB8PiBMaXN0Lm1hcCBKcy5zdHJpbmcgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSBpblxuICBsZXQgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgbGV0ICgpID0gcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCMjLmVudHJ5VHlwZXMgOj0gZW50cnlfdHlwZXMgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBwZXJmb3JtYW5jZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGNoaWxkTGlzdCA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VidHJlZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlRmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25SZWNvcmQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVtb3ZlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZXNwYWNlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIDogbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fTXV0YXRpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA6XG4gICAgKCAgIChtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oY2hpbGRfbGlzdCA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlcyA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGEgOiBib29sIG9wdGlvbilcbiAgICA/KHN1YnRyZWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX2ZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3Qgb3B0aW9uKVxuICAgICgpIDogbXV0YXRpb25PYnNlcnZlciBKcy50ID1cbiAgbGV0IG9wdF9pdGVyIHggZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvYnMgPSBuZXclanMgbXV0YXRpb25PYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgY2ZnID0gZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGlsZF9saXN0IChmdW4gdiAtPiBjZmcjIy5jaGlsZExpc3QgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlcyAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlcyA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBzdWJ0cmVlIChmdW4gdiAtPiBjZmcjIy5zdWJ0cmVlIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZU9sZFZhbHVlIDo9IHYpIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOj0gdilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBhdHRyaWJ1dGVfZmlsdGVyIChmdW4gbCAtPlxuICAgICAgICBjZmcjIy5hdHRyaWJ1dGVGaWx0ZXIgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkpXG4gIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBub2RlIGNmZyBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgUGllcnJlIENoYW1iYXJ0IDIwMTIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gPCA+IEpzLnRcblxubGV0IG9iaiA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgKHYgOiAnYSkgPVxuICAoKiAnXycgaXMgYWRkZWQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb2JqZWN0cyBtZXRob2RzICopXG4gIEpzLlVuc2FmZS5zZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKSB2XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA9XG4gIEpzLlVuc2FmZS5kZWxldGUgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpIDogJ2EgSnMuT3B0ZGVmLnQgPVxuICBKcy5VbnNhZmUuZ2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3QgPVxuICBsZXQga2V5X2FycmF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gICAgSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3QjI2tleXMgdFxuICBpblxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBwcmVkIGtleV9hcnJheSMjLmxlbmd0aCBkb1xuICAgIGxldCBrZXkgPVxuICAgICAgSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGtleV9hcnJheSBpKSAoZnVuICgpIC0+IGZhaWx3aXRoIFwiSnN0YWJsZS5rZXlzXCIpXG4gICAgaW5cbiAgICByZXMgOj0ga2V5IyNzdWJzdHJpbmcgMCAocHJlZCBrZXkjIy5sZW5ndGgpIDo6ICFyZXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXJlc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBHcsOpZ29pcmUgSGVucnkgMjAxMC5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBwYXJzZV8gOlxuICAgICdhICdiICdjICdkLiBqc19zdHJpbmcgdCAtPiAoJ2IgdCwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnlfIDpcbiAgICAnYSAnYiAnYyAnZC4gJ2EgLT4gKCdiLCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGpzb24gOiBqc29uIEpzLnQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGlucHV0X3Jldml2ZXIgPVxuICBsZXQgcmV2aXZlciBfdGhpcyBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIHZhbHVlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBPYmoucmVwciAodG9fYnl0ZXN0cmluZyAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkpXG4gICAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIEpzLmFycmF5X2VtcHR5XG4gICAgICAgICAgICAmJiAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkjIy5sZW5ndGggPT0gNFxuICAgICAgICAgICAgJiYgVW5zYWZlLmdldCB2YWx1ZSAwID09IDI1NVxuICAgIHRoZW5cbiAgICAgIE9iai5yZXByXG4gICAgICAgIChKc29vX3J1bnRpbWUuSW50NjQuY3JlYXRlX2ludDY0X2xvX21pX2hpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDEpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDIpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDMpKVxuICAgIGVsc2UgT2JqLnJlcHIgdmFsdWVcbiAgaW5cbiAgd3JhcF9tZXRoX2NhbGxiYWNrIHJldml2ZXJcblxubGV0IHVuc2FmZV9pbnB1dCBzID0ganNvbiMjcGFyc2VfIHMgaW5wdXRfcmV2aXZlclxuXG5jbGFzcyB0eXBlIG9iaiA9IG9iamVjdFxuICBtZXRob2QgY29uc3RydWN0b3IgOiAnYS4gJ2EgY29uc3RyIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbWxJbnQ2NF9jb25zdHIgPVxuICBsZXQgZHVtbXlfaW50NjQgPSAxTCBpblxuICBsZXQgZHVtbXlfb2JqIDogb2JqIHQgPSBPYmoubWFnaWMgZHVtbXlfaW50NjQgaW5cbiAgZHVtbXlfb2JqIyMuY29uc3RydWN0b3JcblxubGV0IG91dHB1dF9yZXZpdmVyIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gIGlmIE9iai50YWcgKE9iai5yZXByIHZhbHVlKSA9IE9iai5zdHJpbmdfdGFnXG4gIHRoZW4gT2JqLnJlcHIgKGJ5dGVzdHJpbmcgKE9iai5tYWdpYyB2YWx1ZSA6IHN0cmluZykpXG4gIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBtbEludDY0X2NvbnN0clxuICB0aGVuXG4gICAgbGV0IHZhbHVlID0gVW5zYWZlLmNvZXJjZSB2YWx1ZSBpblxuICAgIE9iai5yZXByIChhcnJheSBbfCAyNTU7IHZhbHVlIyMubG87IHZhbHVlIyMubWk7IHZhbHVlIyMuaGkgfF0pXG4gIGVsc2UgT2JqLnJlcHIgdmFsdWVcblxubGV0IG91dHB1dCBvYmogPSBqc29uIyNzdHJpbmdpZnlfIG9iaiAoSnMud3JhcF9jYWxsYmFjayBvdXRwdXRfcmV2aXZlcilcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICAoKiBUaGUgdHlwZSBvZiBDU1MgY29sb3JzLiBGaXJzdCBieSBuYW1lIGFuZCB0aGVuIGJ5IGNvbnN0cnVjdG9yLiAqKVxuICB0eXBlIG5hbWUgPVxuICAgIHwgQWxpY2VibHVlXG4gICAgfCBBbnRpcXVld2hpdGVcbiAgICB8IEFxdWFcbiAgICB8IEFxdWFtYXJpbmVcbiAgICB8IEF6dXJlXG4gICAgfCBCZWlnZVxuICAgIHwgQmlzcXVlXG4gICAgfCBCbGFja1xuICAgIHwgQmxhbmNoZWRhbG1vbmRcbiAgICB8IEJsdWVcbiAgICB8IEJsdWV2aW9sZXRcbiAgICB8IEJyb3duXG4gICAgfCBCdXJseXdvb2RcbiAgICB8IENhZGV0Ymx1ZVxuICAgIHwgQ2hhcnRyZXVzZVxuICAgIHwgQ2hvY29sYXRlXG4gICAgfCBDb3JhbFxuICAgIHwgQ29ybmZsb3dlcmJsdWVcbiAgICB8IENvcm5zaWxrXG4gICAgfCBDcmltc29uXG4gICAgfCBDeWFuXG4gICAgfCBEYXJrYmx1ZVxuICAgIHwgRGFya2N5YW5cbiAgICB8IERhcmtnb2xkZW5yb2RcbiAgICB8IERhcmtncmF5XG4gICAgfCBEYXJrZ3JlZW5cbiAgICB8IERhcmtncmV5XG4gICAgfCBEYXJra2hha2lcbiAgICB8IERhcmttYWdlbnRhXG4gICAgfCBEYXJrb2xpdmVncmVlblxuICAgIHwgRGFya29yYW5nZVxuICAgIHwgRGFya29yY2hpZFxuICAgIHwgRGFya3JlZFxuICAgIHwgRGFya3NhbG1vblxuICAgIHwgRGFya3NlYWdyZWVuXG4gICAgfCBEYXJrc2xhdGVibHVlXG4gICAgfCBEYXJrc2xhdGVncmF5XG4gICAgfCBEYXJrc2xhdGVncmV5XG4gICAgfCBEYXJrdHVycXVvaXNlXG4gICAgfCBEYXJrdmlvbGV0XG4gICAgfCBEZWVwcGlua1xuICAgIHwgRGVlcHNreWJsdWVcbiAgICB8IERpbWdyYXlcbiAgICB8IERpbWdyZXlcbiAgICB8IERvZGdlcmJsdWVcbiAgICB8IEZpcmVicmlja1xuICAgIHwgRmxvcmFsd2hpdGVcbiAgICB8IEZvcmVzdGdyZWVuXG4gICAgfCBGdWNoc2lhXG4gICAgfCBHYWluc2Jvcm9cbiAgICB8IEdob3N0d2hpdGVcbiAgICB8IEdvbGRcbiAgICB8IEdvbGRlbnJvZFxuICAgIHwgR3JheVxuICAgIHwgR3JleVxuICAgIHwgR3JlZW5cbiAgICB8IEdyZWVueWVsbG93XG4gICAgfCBIb25leWRld1xuICAgIHwgSG90cGlua1xuICAgIHwgSW5kaWFucmVkXG4gICAgfCBJbmRpZ29cbiAgICB8IEl2b3J5XG4gICAgfCBLaGFraVxuICAgIHwgTGF2ZW5kZXJcbiAgICB8IExhdmVuZGVyYmx1c2hcbiAgICB8IExhd25ncmVlblxuICAgIHwgTGVtb25jaGlmZm9uXG4gICAgfCBMaWdodGJsdWVcbiAgICB8IExpZ2h0Y29yYWxcbiAgICB8IExpZ2h0Y3lhblxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IExpZ2h0Z3JheVxuICAgIHwgTGlnaHRncmVlblxuICAgIHwgTGlnaHRncmV5XG4gICAgfCBMaWdodHBpbmtcbiAgICB8IExpZ2h0c2FsbW9uXG4gICAgfCBMaWdodHNlYWdyZWVuXG4gICAgfCBMaWdodHNreWJsdWVcbiAgICB8IExpZ2h0c2xhdGVncmF5XG4gICAgfCBMaWdodHNsYXRlZ3JleVxuICAgIHwgTGlnaHRzdGVlbGJsdWVcbiAgICB8IExpZ2h0eWVsbG93XG4gICAgfCBMaW1lXG4gICAgfCBMaW1lZ3JlZW5cbiAgICB8IExpbmVuXG4gICAgfCBNYWdlbnRhXG4gICAgfCBNYXJvb25cbiAgICB8IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IE1lZGl1bWJsdWVcbiAgICB8IE1lZGl1bW9yY2hpZFxuICAgIHwgTWVkaXVtcHVycGxlXG4gICAgfCBNZWRpdW1zZWFncmVlblxuICAgIHwgTWVkaXVtc2xhdGVibHVlXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgTWVkaXVtdHVycXVvaXNlXG4gICAgfCBNZWRpdW12aW9sZXRyZWRcbiAgICB8IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgTWludGNyZWFtXG4gICAgfCBNaXN0eXJvc2VcbiAgICB8IE1vY2Nhc2luXG4gICAgfCBOYXZham93aGl0ZVxuICAgIHwgTmF2eVxuICAgIHwgT2xkbGFjZVxuICAgIHwgT2xpdmVcbiAgICB8IE9saXZlZHJhYlxuICAgIHwgT3JhbmdlXG4gICAgfCBPcmFuZ2VyZWRcbiAgICB8IE9yY2hpZFxuICAgIHwgUGFsZWdvbGRlbnJvZFxuICAgIHwgUGFsZWdyZWVuXG4gICAgfCBQYWxldHVycXVvaXNlXG4gICAgfCBQYWxldmlvbGV0cmVkXG4gICAgfCBQYXBheWF3aGlwXG4gICAgfCBQZWFjaHB1ZmZcbiAgICB8IFBlcnVcbiAgICB8IFBpbmtcbiAgICB8IFBsdW1cbiAgICB8IFBvd2RlcmJsdWVcbiAgICB8IFB1cnBsZVxuICAgIHwgUmVkXG4gICAgfCBSb3N5YnJvd25cbiAgICB8IFJveWFsYmx1ZVxuICAgIHwgU2FkZGxlYnJvd25cbiAgICB8IFNhbG1vblxuICAgIHwgU2FuZHlicm93blxuICAgIHwgU2VhZ3JlZW5cbiAgICB8IFNlYXNoZWxsXG4gICAgfCBTaWVubmFcbiAgICB8IFNpbHZlclxuICAgIHwgU2t5Ymx1ZVxuICAgIHwgU2xhdGVibHVlXG4gICAgfCBTbGF0ZWdyYXlcbiAgICB8IFNsYXRlZ3JleVxuICAgIHwgU25vd1xuICAgIHwgU3ByaW5nZ3JlZW5cbiAgICB8IFN0ZWVsYmx1ZVxuICAgIHwgVGFuXG4gICAgfCBUZWFsXG4gICAgfCBUaGlzdGxlXG4gICAgfCBUb21hdG9cbiAgICB8IFR1cnF1b2lzZVxuICAgIHwgVmlvbGV0XG4gICAgfCBXaGVhdFxuICAgIHwgV2hpdGVcbiAgICB8IFdoaXRlc21va2VcbiAgICB8IFllbGxvd1xuICAgIHwgWWVsbG93Z3JlZW5cblxuICBsZXQgc3RyaW5nX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IFwiYWxpY2VibHVlXCJcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiBcImFudGlxdWV3aGl0ZVwiXG4gICAgfCBBcXVhIC0+IFwiYXF1YVwiXG4gICAgfCBBcXVhbWFyaW5lIC0+IFwiYXF1YW1hcmluZVwiXG4gICAgfCBBenVyZSAtPiBcImF6dXJlXCJcbiAgICB8IEJlaWdlIC0+IFwiYmVpZ2VcIlxuICAgIHwgQmlzcXVlIC0+IFwiYmlzcXVlXCJcbiAgICB8IEJsYWNrIC0+IFwiYmxhY2tcIlxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgfCBCbHVlIC0+IFwiYmx1ZVwiXG4gICAgfCBCbHVldmlvbGV0IC0+IFwiYmx1ZXZpb2xldFwiXG4gICAgfCBCcm93biAtPiBcImJyb3duXCJcbiAgICB8IEJ1cmx5d29vZCAtPiBcImJ1cmx5d29vZFwiXG4gICAgfCBDYWRldGJsdWUgLT4gXCJjYWRldGJsdWVcIlxuICAgIHwgQ2hhcnRyZXVzZSAtPiBcImNoYXJ0cmV1c2VcIlxuICAgIHwgQ2hvY29sYXRlIC0+IFwiY2hvY29sYXRlXCJcbiAgICB8IENvcmFsIC0+IFwiY29yYWxcIlxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgfCBDb3Juc2lsayAtPiBcImNvcm5zaWxrXCJcbiAgICB8IENyaW1zb24gLT4gXCJjcmltc29uXCJcbiAgICB8IEN5YW4gLT4gXCJjeWFuXCJcbiAgICB8IERhcmtibHVlIC0+IFwiZGFya2JsdWVcIlxuICAgIHwgRGFya2N5YW4gLT4gXCJkYXJrY3lhblwiXG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgfCBEYXJrZ3JheSAtPiBcImRhcmtncmF5XCJcbiAgICB8IERhcmtncmVlbiAtPiBcImRhcmtncmVlblwiXG4gICAgfCBEYXJrZ3JleSAtPiBcImRhcmtncmV5XCJcbiAgICB8IERhcmtraGFraSAtPiBcImRhcmtraGFraVwiXG4gICAgfCBEYXJrbWFnZW50YSAtPiBcImRhcmttYWdlbnRhXCJcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IFwiZGFya29saXZlZ3JlZW5cIlxuICAgIHwgRGFya29yYW5nZSAtPiBcImRhcmtvcmFuZ2VcIlxuICAgIHwgRGFya29yY2hpZCAtPiBcImRhcmtvcmNoaWRcIlxuICAgIHwgRGFya3JlZCAtPiBcImRhcmtyZWRcIlxuICAgIHwgRGFya3NhbG1vbiAtPiBcImRhcmtzYWxtb25cIlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IFwiZGFya3NlYWdyZWVuXCJcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gXCJkYXJrc2xhdGVibHVlXCJcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gXCJkYXJrc2xhdGVncmF5XCJcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gXCJkYXJrc2xhdGVncmV5XCJcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gXCJkYXJrdHVycXVvaXNlXCJcbiAgICB8IERhcmt2aW9sZXQgLT4gXCJkYXJrdmlvbGV0XCJcbiAgICB8IERlZXBwaW5rIC0+IFwiZGVlcHBpbmtcIlxuICAgIHwgRGVlcHNreWJsdWUgLT4gXCJkZWVwc2t5Ymx1ZVwiXG4gICAgfCBEaW1ncmF5IC0+IFwiZGltZ3JheVwiXG4gICAgfCBEaW1ncmV5IC0+IFwiZGltZ3JleVwiXG4gICAgfCBEb2RnZXJibHVlIC0+IFwiZG9kZ2VyYmx1ZVwiXG4gICAgfCBGaXJlYnJpY2sgLT4gXCJmaXJlYnJpY2tcIlxuICAgIHwgRmxvcmFsd2hpdGUgLT4gXCJmbG9yYWx3aGl0ZVwiXG4gICAgfCBGb3Jlc3RncmVlbiAtPiBcImZvcmVzdGdyZWVuXCJcbiAgICB8IEZ1Y2hzaWEgLT4gXCJmdWNoc2lhXCJcbiAgICB8IEdhaW5zYm9ybyAtPiBcImdhaW5zYm9yb1wiXG4gICAgfCBHaG9zdHdoaXRlIC0+IFwiZ2hvc3R3aGl0ZVwiXG4gICAgfCBHb2xkIC0+IFwiZ29sZFwiXG4gICAgfCBHb2xkZW5yb2QgLT4gXCJnb2xkZW5yb2RcIlxuICAgIHwgR3JheSAtPiBcImdyYXlcIlxuICAgIHwgR3JlZW4gLT4gXCJncmVlblwiXG4gICAgfCBHcmVlbnllbGxvdyAtPiBcImdyZWVueWVsbG93XCJcbiAgICB8IEdyZXkgLT4gXCJncmV5XCJcbiAgICB8IEhvbmV5ZGV3IC0+IFwiaG9uZXlkZXdcIlxuICAgIHwgSG90cGluayAtPiBcImhvdHBpbmtcIlxuICAgIHwgSW5kaWFucmVkIC0+IFwiaW5kaWFucmVkXCJcbiAgICB8IEluZGlnbyAtPiBcImluZGlnb1wiXG4gICAgfCBJdm9yeSAtPiBcIml2b3J5XCJcbiAgICB8IEtoYWtpIC0+IFwia2hha2lcIlxuICAgIHwgTGF2ZW5kZXIgLT4gXCJsYXZlbmRlclwiXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgfCBMYXduZ3JlZW4gLT4gXCJsYXduZ3JlZW5cIlxuICAgIHwgTGVtb25jaGlmZm9uIC0+IFwibGVtb25jaGlmZm9uXCJcbiAgICB8IExpZ2h0Ymx1ZSAtPiBcImxpZ2h0Ymx1ZVwiXG4gICAgfCBMaWdodGNvcmFsIC0+IFwibGlnaHRjb3JhbFwiXG4gICAgfCBMaWdodGN5YW4gLT4gXCJsaWdodGN5YW5cIlxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgfCBMaWdodGdyYXkgLT4gXCJsaWdodGdyYXlcIlxuICAgIHwgTGlnaHRncmVlbiAtPiBcImxpZ2h0Z3JlZW5cIlxuICAgIHwgTGlnaHRncmV5IC0+IFwibGlnaHRncmV5XCJcbiAgICB8IExpZ2h0cGluayAtPiBcImxpZ2h0cGlua1wiXG4gICAgfCBMaWdodHNhbG1vbiAtPiBcImxpZ2h0c2FsbW9uXCJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gXCJsaWdodHNlYWdyZWVuXCJcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgfCBMaWdodHllbGxvdyAtPiBcImxpZ2h0eWVsbG93XCJcbiAgICB8IExpbWUgLT4gXCJsaW1lXCJcbiAgICB8IExpbWVncmVlbiAtPiBcImxpbWVncmVlblwiXG4gICAgfCBMaW5lbiAtPiBcImxpbmVuXCJcbiAgICB8IE1hZ2VudGEgLT4gXCJtYWdlbnRhXCJcbiAgICB8IE1hcm9vbiAtPiBcIm1hcm9vblwiXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgfCBNZWRpdW1ibHVlIC0+IFwibWVkaXVtYmx1ZVwiXG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gXCJtZWRpdW1vcmNoaWRcIlxuICAgIHwgTWVkaXVtcHVycGxlIC0+IFwibWVkaXVtcHVycGxlXCJcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gXCJtaWRuaWdodGJsdWVcIlxuICAgIHwgTWludGNyZWFtIC0+IFwibWludGNyZWFtXCJcbiAgICB8IE1pc3R5cm9zZSAtPiBcIm1pc3R5cm9zZVwiXG4gICAgfCBNb2NjYXNpbiAtPiBcIm1vY2Nhc2luXCJcbiAgICB8IE5hdmFqb3doaXRlIC0+IFwibmF2YWpvd2hpdGVcIlxuICAgIHwgTmF2eSAtPiBcIm5hdnlcIlxuICAgIHwgT2xkbGFjZSAtPiBcIm9sZGxhY2VcIlxuICAgIHwgT2xpdmUgLT4gXCJvbGl2ZVwiXG4gICAgfCBPbGl2ZWRyYWIgLT4gXCJvbGl2ZWRyYWJcIlxuICAgIHwgT3JhbmdlIC0+IFwib3JhbmdlXCJcbiAgICB8IE9yYW5nZXJlZCAtPiBcIm9yYW5nZXJlZFwiXG4gICAgfCBPcmNoaWQgLT4gXCJvcmNoaWRcIlxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiBcInBhbGVnb2xkZW5yb2RcIlxuICAgIHwgUGFsZWdyZWVuIC0+IFwicGFsZWdyZWVuXCJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gXCJwYWxldHVycXVvaXNlXCJcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gXCJwYWxldmlvbGV0cmVkXCJcbiAgICB8IFBhcGF5YXdoaXAgLT4gXCJwYXBheWF3aGlwXCJcbiAgICB8IFBlYWNocHVmZiAtPiBcInBlYWNocHVmZlwiXG4gICAgfCBQZXJ1IC0+IFwicGVydVwiXG4gICAgfCBQaW5rIC0+IFwicGlua1wiXG4gICAgfCBQbHVtIC0+IFwicGx1bVwiXG4gICAgfCBQb3dkZXJibHVlIC0+IFwicG93ZGVyYmx1ZVwiXG4gICAgfCBQdXJwbGUgLT4gXCJwdXJwbGVcIlxuICAgIHwgUmVkIC0+IFwicmVkXCJcbiAgICB8IFJvc3licm93biAtPiBcInJvc3licm93blwiXG4gICAgfCBSb3lhbGJsdWUgLT4gXCJyb3lhbGJsdWVcIlxuICAgIHwgU2FkZGxlYnJvd24gLT4gXCJzYWRkbGVicm93blwiXG4gICAgfCBTYWxtb24gLT4gXCJzYWxtb25cIlxuICAgIHwgU2FuZHlicm93biAtPiBcInNhbmR5YnJvd25cIlxuICAgIHwgU2VhZ3JlZW4gLT4gXCJzZWFncmVlblwiXG4gICAgfCBTZWFzaGVsbCAtPiBcInNlYXNoZWxsXCJcbiAgICB8IFNpZW5uYSAtPiBcInNpZW5uYVwiXG4gICAgfCBTaWx2ZXIgLT4gXCJzaWx2ZXJcIlxuICAgIHwgU2t5Ymx1ZSAtPiBcInNreWJsdWVcIlxuICAgIHwgU2xhdGVibHVlIC0+IFwic2xhdGVibHVlXCJcbiAgICB8IFNsYXRlZ3JheSAtPiBcInNsYXRlZ3JheVwiXG4gICAgfCBTbGF0ZWdyZXkgLT4gXCJzbGF0ZWdyZXlcIlxuICAgIHwgU25vdyAtPiBcInNub3dcIlxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gXCJzcHJpbmdncmVlblwiXG4gICAgfCBTdGVlbGJsdWUgLT4gXCJzdGVlbGJsdWVcIlxuICAgIHwgVGFuIC0+IFwidGFuXCJcbiAgICB8IFRlYWwgLT4gXCJ0ZWFsXCJcbiAgICB8IFRoaXN0bGUgLT4gXCJ0aGlzdGxlXCJcbiAgICB8IFRvbWF0byAtPiBcInRvbWF0b1wiXG4gICAgfCBUdXJxdW9pc2UgLT4gXCJ0dXJxdW9pc2VcIlxuICAgIHwgVmlvbGV0IC0+IFwidmlvbGV0XCJcbiAgICB8IFdoZWF0IC0+IFwid2hlYXRcIlxuICAgIHwgV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gICAgfCBXaGl0ZXNtb2tlIC0+IFwid2hpdGVzbW9rZVwiXG4gICAgfCBZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICAgIHwgWWVsbG93Z3JlZW4gLT4gXCJ5ZWxsb3dncmVlblwiXG5cbiAgbGV0IG5hbWVfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiYWxpY2VibHVlXCIgLT4gQWxpY2VibHVlXG4gICAgfCBcImFudGlxdWV3aGl0ZVwiIC0+IEFudGlxdWV3aGl0ZVxuICAgIHwgXCJhcXVhXCIgLT4gQXF1YVxuICAgIHwgXCJhcXVhbWFyaW5lXCIgLT4gQXF1YW1hcmluZVxuICAgIHwgXCJhenVyZVwiIC0+IEF6dXJlXG4gICAgfCBcImJlaWdlXCIgLT4gQmVpZ2VcbiAgICB8IFwiYmlzcXVlXCIgLT4gQmlzcXVlXG4gICAgfCBcImJsYWNrXCIgLT4gQmxhY2tcbiAgICB8IFwiYmxhbmNoZWRhbG1vbmRcIiAtPiBCbGFuY2hlZGFsbW9uZFxuICAgIHwgXCJibHVlXCIgLT4gQmx1ZVxuICAgIHwgXCJibHVldmlvbGV0XCIgLT4gQmx1ZXZpb2xldFxuICAgIHwgXCJicm93blwiIC0+IEJyb3duXG4gICAgfCBcImJ1cmx5d29vZFwiIC0+IEJ1cmx5d29vZFxuICAgIHwgXCJjYWRldGJsdWVcIiAtPiBDYWRldGJsdWVcbiAgICB8IFwiY2hhcnRyZXVzZVwiIC0+IENoYXJ0cmV1c2VcbiAgICB8IFwiY2hvY29sYXRlXCIgLT4gQ2hvY29sYXRlXG4gICAgfCBcImNvcmFsXCIgLT4gQ29yYWxcbiAgICB8IFwiY29ybmZsb3dlcmJsdWVcIiAtPiBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgXCJjb3Juc2lsa1wiIC0+IENvcm5zaWxrXG4gICAgfCBcImNyaW1zb25cIiAtPiBDcmltc29uXG4gICAgfCBcImN5YW5cIiAtPiBDeWFuXG4gICAgfCBcImRhcmtibHVlXCIgLT4gRGFya2JsdWVcbiAgICB8IFwiZGFya2N5YW5cIiAtPiBEYXJrY3lhblxuICAgIHwgXCJkYXJrZ29sZGVucm9kXCIgLT4gRGFya2dvbGRlbnJvZFxuICAgIHwgXCJkYXJrZ3JheVwiIC0+IERhcmtncmF5XG4gICAgfCBcImRhcmtncmVlblwiIC0+IERhcmtncmVlblxuICAgIHwgXCJkYXJrZ3JleVwiIC0+IERhcmtncmV5XG4gICAgfCBcImRhcmtraGFraVwiIC0+IERhcmtraGFraVxuICAgIHwgXCJkYXJrbWFnZW50YVwiIC0+IERhcmttYWdlbnRhXG4gICAgfCBcImRhcmtvbGl2ZWdyZWVuXCIgLT4gRGFya29saXZlZ3JlZW5cbiAgICB8IFwiZGFya29yYW5nZVwiIC0+IERhcmtvcmFuZ2VcbiAgICB8IFwiZGFya29yY2hpZFwiIC0+IERhcmtvcmNoaWRcbiAgICB8IFwiZGFya3JlZFwiIC0+IERhcmtyZWRcbiAgICB8IFwiZGFya3NhbG1vblwiIC0+IERhcmtzYWxtb25cbiAgICB8IFwiZGFya3NlYWdyZWVuXCIgLT4gRGFya3NlYWdyZWVuXG4gICAgfCBcImRhcmtzbGF0ZWJsdWVcIiAtPiBEYXJrc2xhdGVibHVlXG4gICAgfCBcImRhcmtzbGF0ZWdyYXlcIiAtPiBEYXJrc2xhdGVncmF5XG4gICAgfCBcImRhcmtzbGF0ZWdyZXlcIiAtPiBEYXJrc2xhdGVncmV5XG4gICAgfCBcImRhcmt0dXJxdW9pc2VcIiAtPiBEYXJrdHVycXVvaXNlXG4gICAgfCBcImRhcmt2aW9sZXRcIiAtPiBEYXJrdmlvbGV0XG4gICAgfCBcImRlZXBwaW5rXCIgLT4gRGVlcHBpbmtcbiAgICB8IFwiZGVlcHNreWJsdWVcIiAtPiBEZWVwc2t5Ymx1ZVxuICAgIHwgXCJkaW1ncmF5XCIgLT4gRGltZ3JheVxuICAgIHwgXCJkaW1ncmV5XCIgLT4gRGltZ3JleVxuICAgIHwgXCJkb2RnZXJibHVlXCIgLT4gRG9kZ2VyYmx1ZVxuICAgIHwgXCJmaXJlYnJpY2tcIiAtPiBGaXJlYnJpY2tcbiAgICB8IFwiZmxvcmFsd2hpdGVcIiAtPiBGbG9yYWx3aGl0ZVxuICAgIHwgXCJmb3Jlc3RncmVlblwiIC0+IEZvcmVzdGdyZWVuXG4gICAgfCBcImZ1Y2hzaWFcIiAtPiBGdWNoc2lhXG4gICAgfCBcImdhaW5zYm9yb1wiIC0+IEdhaW5zYm9yb1xuICAgIHwgXCJnaG9zdHdoaXRlXCIgLT4gR2hvc3R3aGl0ZVxuICAgIHwgXCJnb2xkXCIgLT4gR29sZFxuICAgIHwgXCJnb2xkZW5yb2RcIiAtPiBHb2xkZW5yb2RcbiAgICB8IFwiZ3JheVwiIC0+IEdyYXlcbiAgICB8IFwiZ3JlZW5cIiAtPiBHcmVlblxuICAgIHwgXCJncmVlbnllbGxvd1wiIC0+IEdyZWVueWVsbG93XG4gICAgfCBcImdyZXlcIiAtPiBHcmV5XG4gICAgfCBcImhvbmV5ZGV3XCIgLT4gSG9uZXlkZXdcbiAgICB8IFwiaG90cGlua1wiIC0+IEhvdHBpbmtcbiAgICB8IFwiaW5kaWFucmVkXCIgLT4gSW5kaWFucmVkXG4gICAgfCBcImluZGlnb1wiIC0+IEluZGlnb1xuICAgIHwgXCJpdm9yeVwiIC0+IEl2b3J5XG4gICAgfCBcImtoYWtpXCIgLT4gS2hha2lcbiAgICB8IFwibGF2ZW5kZXJcIiAtPiBMYXZlbmRlclxuICAgIHwgXCJsYXZlbmRlcmJsdXNoXCIgLT4gTGF2ZW5kZXJibHVzaFxuICAgIHwgXCJsYXduZ3JlZW5cIiAtPiBMYXduZ3JlZW5cbiAgICB8IFwibGVtb25jaGlmZm9uXCIgLT4gTGVtb25jaGlmZm9uXG4gICAgfCBcImxpZ2h0Ymx1ZVwiIC0+IExpZ2h0Ymx1ZVxuICAgIHwgXCJsaWdodGNvcmFsXCIgLT4gTGlnaHRjb3JhbFxuICAgIHwgXCJsaWdodGN5YW5cIiAtPiBMaWdodGN5YW5cbiAgICB8IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIiAtPiBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgXCJsaWdodGdyYXlcIiAtPiBMaWdodGdyYXlcbiAgICB8IFwibGlnaHRncmVlblwiIC0+IExpZ2h0Z3JlZW5cbiAgICB8IFwibGlnaHRncmV5XCIgLT4gTGlnaHRncmV5XG4gICAgfCBcImxpZ2h0cGlua1wiIC0+IExpZ2h0cGlua1xuICAgIHwgXCJsaWdodHNhbG1vblwiIC0+IExpZ2h0c2FsbW9uXG4gICAgfCBcImxpZ2h0c2VhZ3JlZW5cIiAtPiBMaWdodHNlYWdyZWVuXG4gICAgfCBcImxpZ2h0c2t5Ymx1ZVwiIC0+IExpZ2h0c2t5Ymx1ZVxuICAgIHwgXCJsaWdodHNsYXRlZ3JheVwiIC0+IExpZ2h0c2xhdGVncmF5XG4gICAgfCBcImxpZ2h0c2xhdGVncmV5XCIgLT4gTGlnaHRzbGF0ZWdyZXlcbiAgICB8IFwibGlnaHRzdGVlbGJsdWVcIiAtPiBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgXCJsaWdodHllbGxvd1wiIC0+IExpZ2h0eWVsbG93XG4gICAgfCBcImxpbWVcIiAtPiBMaW1lXG4gICAgfCBcImxpbWVncmVlblwiIC0+IExpbWVncmVlblxuICAgIHwgXCJsaW5lblwiIC0+IExpbmVuXG4gICAgfCBcIm1hZ2VudGFcIiAtPiBNYWdlbnRhXG4gICAgfCBcIm1hcm9vblwiIC0+IE1hcm9vblxuICAgIHwgXCJtZWRpdW1hcXVhbWFyaW5lXCIgLT4gTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgXCJtZWRpdW1ibHVlXCIgLT4gTWVkaXVtYmx1ZVxuICAgIHwgXCJtZWRpdW1vcmNoaWRcIiAtPiBNZWRpdW1vcmNoaWRcbiAgICB8IFwibWVkaXVtcHVycGxlXCIgLT4gTWVkaXVtcHVycGxlXG4gICAgfCBcIm1lZGl1bXNlYWdyZWVuXCIgLT4gTWVkaXVtc2VhZ3JlZW5cbiAgICB8IFwibWVkaXVtc2xhdGVibHVlXCIgLT4gTWVkaXVtc2xhdGVibHVlXG4gICAgfCBcIm1lZGl1bXNwcmluZ2dyZWVuXCIgLT4gTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IFwibWVkaXVtdHVycXVvaXNlXCIgLT4gTWVkaXVtdHVycXVvaXNlXG4gICAgfCBcIm1lZGl1bXZpb2xldHJlZFwiIC0+IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgXCJtaWRuaWdodGJsdWVcIiAtPiBNaWRuaWdodGJsdWVcbiAgICB8IFwibWludGNyZWFtXCIgLT4gTWludGNyZWFtXG4gICAgfCBcIm1pc3R5cm9zZVwiIC0+IE1pc3R5cm9zZVxuICAgIHwgXCJtb2NjYXNpblwiIC0+IE1vY2Nhc2luXG4gICAgfCBcIm5hdmFqb3doaXRlXCIgLT4gTmF2YWpvd2hpdGVcbiAgICB8IFwibmF2eVwiIC0+IE5hdnlcbiAgICB8IFwib2xkbGFjZVwiIC0+IE9sZGxhY2VcbiAgICB8IFwib2xpdmVcIiAtPiBPbGl2ZVxuICAgIHwgXCJvbGl2ZWRyYWJcIiAtPiBPbGl2ZWRyYWJcbiAgICB8IFwib3JhbmdlXCIgLT4gT3JhbmdlXG4gICAgfCBcIm9yYW5nZXJlZFwiIC0+IE9yYW5nZXJlZFxuICAgIHwgXCJvcmNoaWRcIiAtPiBPcmNoaWRcbiAgICB8IFwicGFsZWdvbGRlbnJvZFwiIC0+IFBhbGVnb2xkZW5yb2RcbiAgICB8IFwicGFsZWdyZWVuXCIgLT4gUGFsZWdyZWVuXG4gICAgfCBcInBhbGV0dXJxdW9pc2VcIiAtPiBQYWxldHVycXVvaXNlXG4gICAgfCBcInBhbGV2aW9sZXRyZWRcIiAtPiBQYWxldmlvbGV0cmVkXG4gICAgfCBcInBhcGF5YXdoaXBcIiAtPiBQYXBheWF3aGlwXG4gICAgfCBcInBlYWNocHVmZlwiIC0+IFBlYWNocHVmZlxuICAgIHwgXCJwZXJ1XCIgLT4gUGVydVxuICAgIHwgXCJwaW5rXCIgLT4gUGlua1xuICAgIHwgXCJwbHVtXCIgLT4gUGx1bVxuICAgIHwgXCJwb3dkZXJibHVlXCIgLT4gUG93ZGVyYmx1ZVxuICAgIHwgXCJwdXJwbGVcIiAtPiBQdXJwbGVcbiAgICB8IFwicmVkXCIgLT4gUmVkXG4gICAgfCBcInJvc3licm93blwiIC0+IFJvc3licm93blxuICAgIHwgXCJyb3lhbGJsdWVcIiAtPiBSb3lhbGJsdWVcbiAgICB8IFwic2FkZGxlYnJvd25cIiAtPiBTYWRkbGVicm93blxuICAgIHwgXCJzYWxtb25cIiAtPiBTYWxtb25cbiAgICB8IFwic2FuZHlicm93blwiIC0+IFNhbmR5YnJvd25cbiAgICB8IFwic2VhZ3JlZW5cIiAtPiBTZWFncmVlblxuICAgIHwgXCJzZWFzaGVsbFwiIC0+IFNlYXNoZWxsXG4gICAgfCBcInNpZW5uYVwiIC0+IFNpZW5uYVxuICAgIHwgXCJzaWx2ZXJcIiAtPiBTaWx2ZXJcbiAgICB8IFwic2t5Ymx1ZVwiIC0+IFNreWJsdWVcbiAgICB8IFwic2xhdGVibHVlXCIgLT4gU2xhdGVibHVlXG4gICAgfCBcInNsYXRlZ3JheVwiIC0+IFNsYXRlZ3JheVxuICAgIHwgXCJzbGF0ZWdyZXlcIiAtPiBTbGF0ZWdyZXlcbiAgICB8IFwic25vd1wiIC0+IFNub3dcbiAgICB8IFwic3ByaW5nZ3JlZW5cIiAtPiBTcHJpbmdncmVlblxuICAgIHwgXCJzdGVlbGJsdWVcIiAtPiBTdGVlbGJsdWVcbiAgICB8IFwidGFuXCIgLT4gVGFuXG4gICAgfCBcInRlYWxcIiAtPiBUZWFsXG4gICAgfCBcInRoaXN0bGVcIiAtPiBUaGlzdGxlXG4gICAgfCBcInRvbWF0b1wiIC0+IFRvbWF0b1xuICAgIHwgXCJ0dXJxdW9pc2VcIiAtPiBUdXJxdW9pc2VcbiAgICB8IFwidmlvbGV0XCIgLT4gVmlvbGV0XG4gICAgfCBcIndoZWF0XCIgLT4gV2hlYXRcbiAgICB8IFwid2hpdGVcIiAtPiBXaGl0ZVxuICAgIHwgXCJ3aGl0ZXNtb2tlXCIgLT4gV2hpdGVzbW9rZVxuICAgIHwgXCJ5ZWxsb3dcIiAtPiBZZWxsb3dcbiAgICB8IFwieWVsbG93Z3JlZW5cIiAtPiBZZWxsb3dncmVlblxuICAgIHwgcyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yIG5hbWVcIikpXG5cbiAgbGV0IHJnYl9vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiAyNDAsIDI0OCwgMjU1XG4gICAgfCBBbnRpcXVld2hpdGUgLT4gMjUwLCAyMzUsIDIxNVxuICAgIHwgQXF1YSAtPiAwLCAyNTUsIDI1NVxuICAgIHwgQXF1YW1hcmluZSAtPiAxMjcsIDI1NSwgMjEyXG4gICAgfCBBenVyZSAtPiAyNDAsIDI1NSwgMjU1XG4gICAgfCBCZWlnZSAtPiAyNDUsIDI0NSwgMjIwXG4gICAgfCBCaXNxdWUgLT4gMjU1LCAyMjgsIDE5NlxuICAgIHwgQmxhY2sgLT4gMCwgMCwgMFxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gMjU1LCAyMzUsIDIwNVxuICAgIHwgQmx1ZSAtPiAwLCAwLCAyNTVcbiAgICB8IEJsdWV2aW9sZXQgLT4gMTM4LCA0MywgMjI2XG4gICAgfCBCcm93biAtPiAxNjUsIDQyLCA0MlxuICAgIHwgQnVybHl3b29kIC0+IDIyMiwgMTg0LCAxMzVcbiAgICB8IENhZGV0Ymx1ZSAtPiA5NSwgMTU4LCAxNjBcbiAgICB8IENoYXJ0cmV1c2UgLT4gMTI3LCAyNTUsIDBcbiAgICB8IENob2NvbGF0ZSAtPiAyMTAsIDEwNSwgMzBcbiAgICB8IENvcmFsIC0+IDI1NSwgMTI3LCA4MFxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gMTAwLCAxNDksIDIzN1xuICAgIHwgQ29ybnNpbGsgLT4gMjU1LCAyNDgsIDIyMFxuICAgIHwgQ3JpbXNvbiAtPiAyMjAsIDIwLCA2MFxuICAgIHwgQ3lhbiAtPiAwLCAyNTUsIDI1NVxuICAgIHwgRGFya2JsdWUgLT4gMCwgMCwgMTM5XG4gICAgfCBEYXJrY3lhbiAtPiAwLCAxMzksIDEzOVxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiAxODQsIDEzNCwgMTFcbiAgICB8IERhcmtncmF5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtncmVlbiAtPiAwLCAxMDAsIDBcbiAgICB8IERhcmtncmV5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtraGFraSAtPiAxODksIDE4MywgMTA3XG4gICAgfCBEYXJrbWFnZW50YSAtPiAxMzksIDAsIDEzOVxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gODUsIDEwNywgNDdcbiAgICB8IERhcmtvcmFuZ2UgLT4gMjU1LCAxNDAsIDBcbiAgICB8IERhcmtvcmNoaWQgLT4gMTUzLCA1MCwgMjA0XG4gICAgfCBEYXJrcmVkIC0+IDEzOSwgMCwgMFxuICAgIHwgRGFya3NhbG1vbiAtPiAyMzMsIDE1MCwgMTIyXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gMTQzLCAxODgsIDE0M1xuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiA3MiwgNjEsIDEzOVxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gMCwgMjA2LCAyMDlcbiAgICB8IERhcmt2aW9sZXQgLT4gMTQ4LCAwLCAyMTFcbiAgICB8IERlZXBwaW5rIC0+IDI1NSwgMjAsIDE0N1xuICAgIHwgRGVlcHNreWJsdWUgLT4gMCwgMTkxLCAyNTVcbiAgICB8IERpbWdyYXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRGltZ3JleSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEb2RnZXJibHVlIC0+IDMwLCAxNDQsIDI1NVxuICAgIHwgRmlyZWJyaWNrIC0+IDE3OCwgMzQsIDM0XG4gICAgfCBGbG9yYWx3aGl0ZSAtPiAyNTUsIDI1MCwgMjQwXG4gICAgfCBGb3Jlc3RncmVlbiAtPiAzNCwgMTM5LCAzNFxuICAgIHwgRnVjaHNpYSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgR2FpbnNib3JvIC0+IDIyMCwgMjIwLCAyMjBcbiAgICB8IEdob3N0d2hpdGUgLT4gMjQ4LCAyNDgsIDI1NVxuICAgIHwgR29sZCAtPiAyNTUsIDIxNSwgMFxuICAgIHwgR29sZGVucm9kIC0+IDIxOCwgMTY1LCAzMlxuICAgIHwgR3JheSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBHcmVlbiAtPiAwLCAxMjgsIDBcbiAgICB8IEdyZWVueWVsbG93IC0+IDE3MywgMjU1LCA0N1xuICAgIHwgR3JleSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBIb25leWRldyAtPiAyNDAsIDI1NSwgMjQwXG4gICAgfCBIb3RwaW5rIC0+IDI1NSwgMTA1LCAxODBcbiAgICB8IEluZGlhbnJlZCAtPiAyMDUsIDkyLCA5MlxuICAgIHwgSW5kaWdvIC0+IDc1LCAwLCAxMzBcbiAgICB8IEl2b3J5IC0+IDI1NSwgMjU1LCAyNDBcbiAgICB8IEtoYWtpIC0+IDI0MCwgMjMwLCAxNDBcbiAgICB8IExhdmVuZGVyIC0+IDIzMCwgMjMwLCAyNTBcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gMjU1LCAyNDAsIDI0NVxuICAgIHwgTGF3bmdyZWVuIC0+IDEyNCwgMjUyLCAwXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gMjU1LCAyNTAsIDIwNVxuICAgIHwgTGlnaHRibHVlIC0+IDE3MywgMjE2LCAyMzBcbiAgICB8IExpZ2h0Y29yYWwgLT4gMjQwLCAxMjgsIDEyOFxuICAgIHwgTGlnaHRjeWFuIC0+IDIyNCwgMjU1LCAyNTVcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IDI1MCwgMjUwLCAyMTBcbiAgICB8IExpZ2h0Z3JheSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodGdyZWVuIC0+IDE0NCwgMjM4LCAxNDRcbiAgICB8IExpZ2h0Z3JleSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodHBpbmsgLT4gMjU1LCAxODIsIDE5M1xuICAgIHwgTGlnaHRzYWxtb24gLT4gMjU1LCAxNjAsIDEyMlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiAzMiwgMTc4LCAxNzBcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjUwXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiAxNzYsIDE5NiwgMjIyXG4gICAgfCBMaWdodHllbGxvdyAtPiAyNTUsIDI1NSwgMjI0XG4gICAgfCBMaW1lIC0+IDAsIDI1NSwgMFxuICAgIHwgTGltZWdyZWVuIC0+IDUwLCAyMDUsIDUwXG4gICAgfCBMaW5lbiAtPiAyNTAsIDI0MCwgMjMwXG4gICAgfCBNYWdlbnRhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBNYXJvb24gLT4gMTI4LCAwLCAwXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IDEwMiwgMjA1LCAxNzBcbiAgICB8IE1lZGl1bWJsdWUgLT4gMCwgMCwgMjA1XG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gMTg2LCA4NSwgMjExXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gMTQ3LCAxMTIsIDIxOVxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gNjAsIDE3OSwgMTEzXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gMTIzLCAxMDQsIDIzOFxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gMCwgMjUwLCAxNTRcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiA3MiwgMjA5LCAyMDRcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiAxOTksIDIxLCAxMzNcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiAyNSwgMjUsIDExMlxuICAgIHwgTWludGNyZWFtIC0+IDI0NSwgMjU1LCAyNTBcbiAgICB8IE1pc3R5cm9zZSAtPiAyNTUsIDIyOCwgMjI1XG4gICAgfCBNb2NjYXNpbiAtPiAyNTUsIDIyOCwgMTgxXG4gICAgfCBOYXZham93aGl0ZSAtPiAyNTUsIDIyMiwgMTczXG4gICAgfCBOYXZ5IC0+IDAsIDAsIDEyOFxuICAgIHwgT2xkbGFjZSAtPiAyNTMsIDI0NSwgMjMwXG4gICAgfCBPbGl2ZSAtPiAxMjgsIDEyOCwgMFxuICAgIHwgT2xpdmVkcmFiIC0+IDEwNywgMTQyLCAzNVxuICAgIHwgT3JhbmdlIC0+IDI1NSwgMTY1LCAwXG4gICAgfCBPcmFuZ2VyZWQgLT4gMjU1LCA2OSwgMFxuICAgIHwgT3JjaGlkIC0+IDIxOCwgMTEyLCAyMTRcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gMjM4LCAyMzIsIDE3MFxuICAgIHwgUGFsZWdyZWVuIC0+IDE1MiwgMjUxLCAxNTJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gMTc1LCAyMzgsIDIzOFxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiAyMTksIDExMiwgMTQ3XG4gICAgfCBQYXBheWF3aGlwIC0+IDI1NSwgMjM5LCAyMTNcbiAgICB8IFBlYWNocHVmZiAtPiAyNTUsIDIxOCwgMTg1XG4gICAgfCBQZXJ1IC0+IDIwNSwgMTMzLCA2M1xuICAgIHwgUGluayAtPiAyNTUsIDE5MiwgMjAzXG4gICAgfCBQbHVtIC0+IDIyMSwgMTYwLCAyMjFcbiAgICB8IFBvd2RlcmJsdWUgLT4gMTc2LCAyMjQsIDIzMFxuICAgIHwgUHVycGxlIC0+IDEyOCwgMCwgMTI4XG4gICAgfCBSZWQgLT4gMjU1LCAwLCAwXG4gICAgfCBSb3N5YnJvd24gLT4gMTg4LCAxNDMsIDE0M1xuICAgIHwgUm95YWxibHVlIC0+IDY1LCAxMDUsIDIyNVxuICAgIHwgU2FkZGxlYnJvd24gLT4gMTM5LCA2OSwgMTlcbiAgICB8IFNhbG1vbiAtPiAyNTAsIDEyOCwgMTE0XG4gICAgfCBTYW5keWJyb3duIC0+IDI0NCwgMTY0LCA5NlxuICAgIHwgU2VhZ3JlZW4gLT4gNDYsIDEzOSwgODdcbiAgICB8IFNlYXNoZWxsIC0+IDI1NSwgMjQ1LCAyMzhcbiAgICB8IFNpZW5uYSAtPiAxNjAsIDgyLCA0NVxuICAgIHwgU2lsdmVyIC0+IDE5MiwgMTkyLCAxOTJcbiAgICB8IFNreWJsdWUgLT4gMTM1LCAyMDYsIDIzNVxuICAgIHwgU2xhdGVibHVlIC0+IDEwNiwgOTAsIDIwNVxuICAgIHwgU2xhdGVncmF5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNsYXRlZ3JleSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbm93IC0+IDI1NSwgMjUwLCAyNTBcbiAgICB8IFNwcmluZ2dyZWVuIC0+IDAsIDI1NSwgMTI3XG4gICAgfCBTdGVlbGJsdWUgLT4gNzAsIDEzMCwgMTgwXG4gICAgfCBUYW4gLT4gMjEwLCAxODAsIDE0MFxuICAgIHwgVGVhbCAtPiAwLCAxMjgsIDEyOFxuICAgIHwgVGhpc3RsZSAtPiAyMTYsIDE5MSwgMjE2XG4gICAgfCBUb21hdG8gLT4gMjU1LCA5OSwgNzFcbiAgICB8IFR1cnF1b2lzZSAtPiA2NCwgMjI0LCAyMDhcbiAgICB8IFZpb2xldCAtPiAyMzgsIDEzMCwgMjM4XG4gICAgfCBXaGVhdCAtPiAyNDUsIDIyMiwgMTc5XG4gICAgfCBXaGl0ZSAtPiAyNTUsIDI1NSwgMjU1XG4gICAgfCBXaGl0ZXNtb2tlIC0+IDI0NSwgMjQ1LCAyNDVcbiAgICB8IFllbGxvdyAtPiAyNTUsIDI1NSwgMFxuICAgIHwgWWVsbG93Z3JlZW4gLT4gMTU0LCAyMDUsIDUwXG5cbiAgdHlwZSB0ID1cbiAgICB8IE5hbWUgb2YgbmFtZVxuICAgIHwgUkdCIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSZWQsIEdyZWVuIGFuZCBCbHVlIHZhbHVlcy4gQ2xpcHBlZCB0byBbWzAuLjI1NV1dIGJ5IG1vc3QgKEFsbD8pXG4gICAgICAgICAgICBicm93c2Vycy4gKilcbiAgICB8IFJHQl9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgYXJlIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gKilcbiAgICB8IFJHQkEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBSR0Igd2l0aCBhZGRpdGlvbmFsIHRyYW5zcGFyZW5jeSBhcmd1bWVudC4gT3BhY2l0eSBzaG91bGQgYmUgaW5cbiAgICAgICAgICAgIFswLl0gKGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQpIGFuZCBbMS5dIChjb21wbGV0ZWx5IG9wYXF1ZSkuICopXG4gICAgfCBSR0JBX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuIEFscGhhXG4gICAgICAgICAgICBjaGFubmVsIChvcGFjaXR5KSBpcyBzdGlsbCBhIFswLl0gdG8gWzEuXSBmbG9hdC4gKilcbiAgICB8IEhTTCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogSHVlLCBTYXR1cmF0aW9uIGFuZCBMaWdodG5lc3MgdmFsdWVzLiBIdWUgaXMgYW4gYW5nbGUgaW4gZGVncmVlIChpblxuICAgICAgICAgICAgaW50ZXJ2YWwgW1swLi4zNjBbXSkuIFNhdHVyYXRpb24gaXMgYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgY29sb3JsZXNzLiBMaWdodG5lc3MgaXMgYWxzbyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBibGFjay4gKilcbiAgICB8IEhTTEEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBIU0wgd2l0aCBhbiBvcGFjaXR5IGFyZ3VtZW50IGJldHdlZW4gWzAuXSBhbmQgWzEuXS4gKilcblxuICBsZXQgcmdiID9hIHIgZyBiID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gUkdCIChyLCBnLCBiKVxuICAgIHwgU29tZSBhIC0+IFJHQkEgKHIsIGcsIGIsIGEpXG5cbiAgbGV0IGhzbCA/YSBoIHMgbCA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IEhTTCAoaCwgcywgbClcbiAgICB8IFNvbWUgYSAtPiBIU0xBIChoLCBzLCBsLCBhKVxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gc3RyaW5nX29mX25hbWUgblxuICAgIHwgUkdCIChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCwlZCwlZClcIiByIGcgYlxuICAgIHwgUkdCX3BlcmNlbnQgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkJSUsJWQlJSwlZCUlKVwiIHIgZyBiXG4gICAgfCBSR0JBIChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQsJWQsJWQsJWYpXCIgciBnIGIgYVxuICAgIHwgUkdCQV9wZXJjZW50IChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQlJSwlZCUlLCVkJSUsJWYpXCIgciBnIGIgYVxuICAgIHwgSFNMIChoLCBzLCBsKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbCglZCwlZCUlLCVkJSUpXCIgaCBzIGxcbiAgICB8IEhTTEEgKGgsIHMsIGwsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsYSglZCwlZCUlLCVkJSUsJWYpXCIgaCBzIGwgYVxuXG4gIGxldCBoZXhfb2ZfcmdiIChyZWQsIGdyZWVuLCBibHVlKSA9XG4gICAgbGV0IGluX3JhbmdlIGkgPVxuICAgICAgaWYgaSA8IDAgfHwgaSA+IDI1NVxuICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoc3RyaW5nX29mX2ludCBpIF4gXCIgaXMgb3V0IG9mIHZhbGlkIHJhbmdlXCIpKVxuICAgIGluXG4gICAgaW5fcmFuZ2UgcmVkO1xuICAgIGluX3JhbmdlIGdyZWVuO1xuICAgIGluX3JhbmdlIGJsdWU7XG4gICAgUHJpbnRmLnNwcmludGYgXCIjJTAyWCUwMlglMDJYXCIgcmVkIGdyZWVuIGJsdWVcblxuICAoKiBPY2FtbCA8LT4gSlMgcmVwcmVzZW50YXRpb24gKilcbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICAoKiBUT0RPPyBiZSBtb3JlIHJlc3RyaWN0aXZlLCBjbGlwIHZhbHVlcyBpbnRvIHN0YW5kYXJkIHJhbmdlICopXG4gIGxldCBqc190X29mX2pzX3N0cmluZyBzID1cbiAgICBsZXQgcmdiX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYl9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXmhzbGFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBpZiBKcy50b19ib29sIChyZ2JfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsYV9yZSMjdGVzdCBzKVxuICAgIHRoZW4gc1xuICAgIGVsc2UgaWYgTGlzdC5tZW1cbiAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBzKVxuICAgICAgICAgICAgICBbIFwiYWxpY2VibHVlXCJcbiAgICAgICAgICAgICAgOyBcImFudGlxdWV3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwiYXp1cmVcIlxuICAgICAgICAgICAgICA7IFwiYmVpZ2VcIlxuICAgICAgICAgICAgICA7IFwiYmlzcXVlXCJcbiAgICAgICAgICAgICAgOyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgOyBcImJsYW5jaGVkYWxtb25kXCJcbiAgICAgICAgICAgICAgOyBcImJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZXZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJicm93blwiXG4gICAgICAgICAgICAgIDsgXCJidXJseXdvb2RcIlxuICAgICAgICAgICAgICA7IFwiY2FkZXRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNoYXJ0cmV1c2VcIlxuICAgICAgICAgICAgICA7IFwiY2hvY29sYXRlXCJcbiAgICAgICAgICAgICAgOyBcImNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5mbG93ZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5zaWxrXCJcbiAgICAgICAgICAgICAgOyBcImNyaW1zb25cIlxuICAgICAgICAgICAgICA7IFwiY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJra2hha2lcIlxuICAgICAgICAgICAgICA7IFwiZGFya21hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwiZGFya29saXZlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya29yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtyZWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImRlZXBwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImRlZXBza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkb2RnZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImZpcmVicmlja1wiXG4gICAgICAgICAgICAgIDsgXCJmbG9yYWx3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJmb3Jlc3RncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJmdWNoc2lhXCJcbiAgICAgICAgICAgICAgOyBcImdhaW5zYm9yb1wiXG4gICAgICAgICAgICAgIDsgXCJnaG9zdHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRcIlxuICAgICAgICAgICAgICA7IFwiZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW55ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwiZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJob25leWRld1wiXG4gICAgICAgICAgICAgIDsgXCJob3RwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImluZGlhbnJlZFwiXG4gICAgICAgICAgICAgIDsgXCJpbmRpZ29cIlxuICAgICAgICAgICAgICA7IFwiaXZvcnlcIlxuICAgICAgICAgICAgICA7IFwia2hha2lcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgICAgICAgICAgIDsgXCJsYXduZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGVtb25jaGlmZm9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y3lhblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0eWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpbWVcIlxuICAgICAgICAgICAgICA7IFwibGltZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpbmVuXCJcbiAgICAgICAgICAgICAgOyBcIm1hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwibWFyb29uXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1vcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtcHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtaW50Y3JlYW1cIlxuICAgICAgICAgICAgICA7IFwibWlzdHlyb3NlXCJcbiAgICAgICAgICAgICAgOyBcIm1vY2Nhc2luXCJcbiAgICAgICAgICAgICAgOyBcIm5hdmFqb3doaXRlXCJcbiAgICAgICAgICAgICAgOyBcIm5hdnlcIlxuICAgICAgICAgICAgICA7IFwib2xkbGFjZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZWRyYWJcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZXJlZFwiXG4gICAgICAgICAgICAgIDsgXCJvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcInBhcGF5YXdoaXBcIlxuICAgICAgICAgICAgICA7IFwicGVhY2hwdWZmXCJcbiAgICAgICAgICAgICAgOyBcInBlcnVcIlxuICAgICAgICAgICAgICA7IFwicGlua1wiXG4gICAgICAgICAgICAgIDsgXCJwbHVtXCJcbiAgICAgICAgICAgICAgOyBcInBvd2RlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwicHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcInJlZFwiXG4gICAgICAgICAgICAgIDsgXCJyb3N5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwicm95YWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNhZGRsZWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJzYW5keWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInNlYXNoZWxsXCJcbiAgICAgICAgICAgICAgOyBcInNpZW5uYVwiXG4gICAgICAgICAgICAgIDsgXCJzaWx2ZXJcIlxuICAgICAgICAgICAgICA7IFwic2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJzbm93XCJcbiAgICAgICAgICAgICAgOyBcInNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJ0YW5cIlxuICAgICAgICAgICAgICA7IFwidGVhbFwiXG4gICAgICAgICAgICAgIDsgXCJ0aGlzdGxlXCJcbiAgICAgICAgICAgICAgOyBcInRvbWF0b1wiXG4gICAgICAgICAgICAgIDsgXCJ0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwidmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcIndoZWF0XCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlXCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlc21va2VcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd2dyZWVuXCJcbiAgICAgICAgICAgICAgXVxuICAgIHRoZW4gc1xuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKEpzLnRvX3N0cmluZyBzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpXG5cbiAgbGV0IG5hbWUgY24gPSBKcy5zdHJpbmcgKHN0cmluZ19vZl9uYW1lIGNuKVxuXG4gIGxldCBqcyA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gbmFtZSBuXG4gICAgfCAoUkdCIF8gfCBSR0JfcGVyY2VudCBfIHwgUkdCQSBfIHwgUkdCQV9wZXJjZW50IF8gfCBIU0wgXyB8IEhTTEEgXykgYXMgYyAtPlxuICAgICAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl90IGMpXG5cbiAgbGV0IG1sIGMgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGMgaW5cbiAgICB0cnkgTmFtZSAobmFtZV9vZl9zdHJpbmcgcylcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiAoXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpIGluXG4gICAgICBsZXQgcmVfcmdiID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopLChcXFxcZCopKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfcmdiX3BjdCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSUsKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX2hzbCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIoaHNsYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgaV9vZl9zX28gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICB8IFNvbWUgaSAtPiAoXG4gICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpXG4gICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGkgXiBcIik6IFwiIF4gcykpKVxuICAgICAgaW5cbiAgICAgIGxldCBmX29mX3MgZiA9XG4gICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gZiBeIFwiKTogXCIgXiBzKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYiBzIDAgd2l0aFxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQiAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBSR0JBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiX3BjdCBzIDAgd2l0aFxuICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0JfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICBSR0JBX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX2hzbCBzIDAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gSFNMIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbGFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSFNMQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpKSkpXG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICAoKiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jbGVuZ3RocyAqKVxuXG4gICgqIFRPRE86XG4gICAgIHtbXG4gICAgICAgdHlwZSBqc190ID0gcHJpdmF0ZSBKcy5zdHJpbmcgSnMudFxuICAgICAgIHZhbCBqc190X29mX3RcbiAgICAgICB2YWwgdF9vZl9qc190XG4gICAgICAgdmFsIHRfb2Zfc3RyaW5nXG4gICAgIF19XG4gICopXG5cbiAgdHlwZSB0ID1cbiAgICB8IFplcm9cbiAgICAoKiByZWxhdGl2ZSAqKVxuICAgIHwgRW0gb2YgZmxvYXRcbiAgICB8IEV4IG9mIGZsb2F0XG4gICAgfCBQeCBvZiBmbG9hdFxuICAgIHwgR2Qgb2YgZmxvYXRcbiAgICB8IFJlbSBvZiBmbG9hdFxuICAgIHwgVncgb2YgZmxvYXRcbiAgICB8IFZoIG9mIGZsb2F0XG4gICAgfCBWbSBvZiBmbG9hdFxuICAgIHwgQ2ggb2YgZmxvYXRcbiAgICAoKiBhYnNvbHV0ZSAqKVxuICAgIHwgTW0gb2YgZmxvYXRcbiAgICB8IENtIG9mIGZsb2F0XG4gICAgfCBJbiBvZiBmbG9hdFxuICAgIHwgUHQgb2YgZmxvYXRcbiAgICB8IFBjIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IFplcm8gLT4gXCIwXCJcbiAgICB8IEVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImVtXCJcbiAgICB8IEV4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImV4XCJcbiAgICB8IFB4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB4XCJcbiAgICB8IEdkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdkXCJcbiAgICB8IFJlbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyZW1cIlxuICAgIHwgVncgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidndcIlxuICAgIHwgVmggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidmhcIlxuICAgIHwgVm0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidm1cIlxuICAgIHwgQ2ggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY2hcIlxuICAgIHwgTW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwibW1cIlxuICAgIHwgQ20gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY21cIlxuICAgIHwgSW4gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiaW5cIlxuICAgIHwgUHQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHRcIlxuICAgIHwgUGMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicGNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIHQgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIHQgaW5cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIjBcIlxuICAgIHRoZW4gWmVyb1xuICAgIGVsc2VcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKik/KVxcXFxzKihcXFxcUyopJFwiIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCBmID1cbiAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIFwiZW1cIiAtPiBFbSBmXG4gICAgICAgICAgfCBTb21lIFwiZXhcIiAtPiBFeCBmXG4gICAgICAgICAgfCBTb21lIFwicHhcIiAtPiBQeCBmXG4gICAgICAgICAgfCBTb21lIFwiZ2RcIiAtPiBHZCBmXG4gICAgICAgICAgfCBTb21lIFwicmVtXCIgLT4gUmVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2d1wiIC0+IFZ3IGZcbiAgICAgICAgICB8IFNvbWUgXCJ2aFwiIC0+IFZoIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2bVwiIC0+IFZtIGZcbiAgICAgICAgICB8IFNvbWUgXCJjaFwiIC0+IENoIGZcbiAgICAgICAgICB8IFNvbWUgXCJtbVwiIC0+IE1tIGZcbiAgICAgICAgICB8IFNvbWUgXCJjbVwiIC0+IENtIGZcbiAgICAgICAgICB8IFNvbWUgXCJpblwiIC0+IEluIGZcbiAgICAgICAgICB8IFNvbWUgXCJwdFwiIC0+IFB0IGZcbiAgICAgICAgICB8IFNvbWUgXCJwY1wiIC0+IFBjIGZcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpKVxuZW5kXG5cbm1vZHVsZSBBbmdsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRGVnIG9mIGZsb2F0XG4gICAgfCBHcmFkIG9mIGZsb2F0XG4gICAgfCBSYWQgb2YgZmxvYXRcbiAgICB8IFR1cm5zIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IERlZyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJkZWdcIlxuICAgIHwgR3JhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJncmFkXCJcbiAgICB8IFJhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyYWRcIlxuICAgIHwgVHVybnMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidHVybnNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIGogPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGogaW5cbiAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKikpKGRlZ3xncmFkfHJhZHx0dXJucykkXCIgaW5cbiAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgfCBTb21lIFwiZGVnXCIgLT4gRGVnIGZcbiAgICAgICAgfCBTb21lIFwiZ3JhZFwiIC0+IEdyYWQgZlxuICAgICAgICB8IFNvbWUgXCJyYWRcIiAtPiBSYWQgZlxuICAgICAgICB8IFNvbWUgXCJ0dXJuc1wiIC0+IFR1cm5zIGZcbiAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiogSmF2YXNjcmlwdCBldmVudHMuICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFR5cCA9IERvbV9odG1sLkV2ZW50XG5cbnR5cGUgbGlzdGVuZXIgPSBEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgbGlzdGVuID8oY2FwdHVyZSA9IGZhbHNlKSB0YXJnZXQgdHlwIGNiID1cbiAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lclxuICAgIHRhcmdldFxuICAgIHR5cFxuICAgIChEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBuIGUgLT4gSnMuYm9vbCAoY2IgbiBlKSkpXG4gICAgKEpzLmJvb2wgY2FwdHVyZSlcblxubGV0IHN0b3BfbGlzdGVuID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxubGV0IHhtbG5zID0gSnMuc3RyaW5nIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXG4oKiB0cmFuc2xhdGUgc3BlYyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pZGwuaHRtbCAqKVxuKCogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1sICopXG5cbnR5cGUgZXJyb3JfY29kZSA9XG4gIHwgV1JPTkdfVFlQRV9FUlJcbiAgfCBJTlZBTElEX1ZBTFVFX0VSUlxuICB8IE1BVFJJWF9OT1RfSU5WRVJUQUJMRVxuXG5jbGFzcyB0eXBlIHN2Z19lcnJvciA9IG9iamVjdFxuICBpbmhlcml0IEpzLmVycm9yXG5cbiAgbWV0aG9kIGNvZGUgOiBlcnJvcl9jb2RlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4Y2VwdGlvbiBTVkdFcnJvciBvZiBzdmdfZXJyb3JcblxudHlwZSBsZW5ndGhVbml0VHlwZSA9XG4gIHwgTEVOR1RIVFlQRV9VTktOT1dOXG4gIHwgTEVOR1RIVFlQRV9OVU1CRVJcbiAgfCBMRU5HVEhUWVBFX1BFUkNFTlRBR0VcbiAgfCBMRU5HVEhUWVBFX0VNU1xuICB8IExFTkdUSFRZUEVfRVhTXG4gIHwgTEVOR1RIVFlQRV9QWFxuICB8IExFTkdUSFRZUEVfQ01cbiAgfCBMRU5HVEhUWVBFX01NXG4gIHwgTEVOR1RIVFlQRV9JTlxuICB8IExFTkdUSFRZUEVfUFRcbiAgfCBMRU5HVEhUWVBFX1BDXG5cbnR5cGUgYW5nbGVVbml0VHlwZSA9XG4gIHwgQU5HTEVUWVBFX1VOS05PV05cbiAgfCBBTkdMRVRZUEVfVU5TUEVDSUZJRURcbiAgfCBBTkdMRVRZUEVfREVHXG4gIHwgQU5HTEVUWVBFX1JBRFxuICB8IEFOR0xFVFlQRV9HUkFEXG5cbnR5cGUgY29sb3JUeXBlID1cbiAgfCBDT0xPUlRZUEVfVU5LTk9XTlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUlxuICB8IENPTE9SVFlQRV9DVVJSRU5UQ09MT1JcblxudHlwZSBhbGlnbm1lbnRUeXBlID1cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV05cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX05PTkVcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVhcblxudHlwZSBtZWV0T3JTbGljZVR5cGUgPVxuICB8IE1FRVRPUlNMSUNFX1VOS05PV05cbiAgfCBNRUVUT1JTTElDRV9NRUVUXG4gIHwgTUVFVE9SU0xJQ0VfU0xJQ0VcblxudHlwZSB0cmFuc2Zvcm1UeXBlID1cbiAgfCBUUkFOU0ZPUk1fVU5LTk9XTlxuICB8IFRSQU5TRk9STV9NQVRSSVhcbiAgfCBUUkFOU0ZPUk1fVFJBTlNMQVRFXG4gIHwgVFJBTlNGT1JNX1NDQUxFXG4gIHwgVFJBTlNGT1JNX1JPVEFURVxuICB8IFRSQU5TRk9STV9TS0VXWFxuICB8IFRSQU5TRk9STV9TS0VXWVxuXG50eXBlIHpvb21BbmRQYW5UeXBlID1cbiAgfCBaT09NQU5EUEFOX1VOS05PV05cbiAgfCBaT09NQU5EUEFOX0RJU0FCTEVcbiAgfCBaT09NQU5EUEFOX01BR05JRllcblxudHlwZSBsZW5ndGhBZGp1c3QgPVxuICB8IExFTkdUSEFESlVTVF9VTktOT1dOXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdcbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIU1xuXG50eXBlIHVuaXRUeXBlID1cbiAgfCBVTklUX1RZUEVfVU5LTk9XTlxuICB8IFVOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRVxuICB8IFVOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVuZGVyaW5nSW50ZW50ICopXG50eXBlIGludGVudFR5cGUgPVxuICB8IFJFTkRFUklOR19JTlRFTlRfVU5LTk9XTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQVVUT1xuICB8IFJFTkRFUklOR19JTlRFTlRfUEVSQ0VQVFVBTFxuICB8IFJFTkRFUklOR19JTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9TQVRVUkFUSU9OXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUNcblxuKCogUGF0aCBTZWdtZW50IFR5cGVzICopXG50eXBlIHBhdGhTZWdtZW50VHlwZSA9XG4gIHwgUEFUSFNFR19VTktOT1dOXG4gIHwgUEFUSFNFR19DTE9TRVBBVEhcbiAgfCBQQVRIU0VHX01PVkVUT19BQlNcbiAgfCBQQVRIU0VHX01PVkVUT19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUxcbiAgfCBQQVRIU0VHX0FSQ19BQlNcbiAgfCBQQVRIU0VHX0FSQ19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTFxuXG4oKiB0ZXh0UGF0aCBNZXRob2QgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhNZXRob2RUeXBlID1cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIXG5cbigqIHRleHRQYXRoIFNwYWNpbmcgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhTcGFjaW5nVHlwZSA9XG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE9cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVFxuXG4oKiBTcHJlYWQgTWV0aG9kIFR5cGVzICopXG50eXBlIHNwcmVhZE1ldGhvZFR5cGUgPVxuICB8IFNQUkVBRE1FVEhPRF9VTktOT1dOXG4gIHwgU1BSRUFETUVUSE9EX1BBRFxuICB8IFNQUkVBRE1FVEhPRF9SRUZMRUNUXG4gIHwgU1BSRUFETUVUSE9EX1JFUEVBVFxuXG50eXBlIHN1c3BlbmRIYW5kbGVJRFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBbJ2FdIGFuaW1hdGVkID0gb2JqZWN0XG4gIG1ldGhvZCBiYXNlVmFsIDogJ2EgcHJvcFxuXG4gIG1ldGhvZCBhbmltVmFsIDogJ2EgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBsaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBudW1iZXJPZkl0ZW1zIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5pdGlhbGl6ZSA6ICdhIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGluc2VydEl0ZW1CZWZvcmUgOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlSXRlbSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRJdGVtIDogJ2EgLT4gJ2EgbWV0aFxuZW5kXG5cbigqKioqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbGJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyU1ZHRWxlbWVudCA6IHN2Z0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkU3RyaW5nICopXG5hbmQgYW5pbWF0ZWRTdHJpbmcgPSBbanNfc3RyaW5nIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEJvb2xlYW4gKilcbmFuZCBhbmltYXRlZEJvb2xlYW4gPSBbYm9vbCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RyaW5nTGlzdCAqKVxuYW5kIHN0cmluZ0xpc3QgPSBbanNfc3RyaW5nIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gKilcbmFuZCBhbmltYXRlZEVudW1lcmF0aW9uID0gW2ludCAoKnNob3J0KildIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEludGVnZXIgKilcbmFuZCBhbmltYXRlZEludGVnZXIgPSBbaW50XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXIgKilcbmFuZCBhbmltYXRlZE51bWJlciA9IFtudW1iZXJfdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR051bWJlckxpc3QgKilcbmFuZCBudW1iZXJMaXN0ID0gW251bWJlciB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlckxpc3QgKilcbmFuZCBhbmltYXRlZE51bWJlckxpc3QgPSBbbnVtYmVyTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoICopXG5hbmQgbGVuZ3RoID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGxlbmd0aFVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoID0gW2xlbmd0aCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCAqKVxuYW5kIGxlbmd0aExpc3QgPSBbbGVuZ3RoIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoTGlzdCA9IFtsZW5ndGhMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmdsZSAqKVxuYW5kIGFuZ2xlID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGFuZ2xlVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEFuZ2xlICopXG5hbmQgYW5pbWF0ZWRBbmdsZSA9IFthbmdsZSB0XSBhbmltYXRlZFxuXG4oKiBYWFhYWCBNb3ZlIGl0ICopXG5hbmQgcmdiQ29sb3IgPSBvYmplY3QgZW5kXG5cbigqIGludGVyZmFjZSBTVkdDb2xvciAqKVxuYW5kIGNvbG9yID0gb2JqZWN0XG4gICgqIFhYWCBpbmhlcml0IGNzc1ZhbHVlICopXG4gIG1ldGhvZCBjb2xvclR5cGUgOiBjb2xvclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZ2JDb2xvciA6IHJnYkNvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpY2NDb2xvciA6IGljY0NvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvciA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvcklDQ0NvbG9yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldENvbG9yIDogY29sb3JUeXBlIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJQ0NDb2xvciAqKVxuYW5kIGljY0NvbG9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xvclByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9ycyA6IG51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3QgKilcbmFuZCByZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFJlY3QgKilcbmFuZCBhbmltYXRlZFJlY3QgPSBbcmVjdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGFibGUgKilcbmFuZCBzdHlsYWJsZSA9IG9iamVjdFxuICBtZXRob2QgY2xhc3NOYW1lIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0eWxlIDogRG9tX2h0bWwuY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHJlYWRvbmx5X3Byb3BcbiAgKCogICBDU1NWYWx1ZSBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMb2NhdGFibGUgKilcbmFuZCBsb2NhdGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEJCb3ggOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNjcmVlbkNUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0VHJhbnNmb3JtVG9FbGVtZW50IDogZWxlbWVudCB0IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtYWJsZSAqKVxuYW5kIHRyYW5zZm9ybWFibGUgPSBvYmplY3RcbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBtZXRob2QgdHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXN0cyAqKVxuYW5kIHRlc3RzID0gb2JqZWN0XG4gIG1ldGhvZCByZXF1aXJlZEZlYXR1cmVzIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVxdWlyZWRFeHRlbnNpb25zIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3lzdGVtTGFuZ3VhZ2UgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoYXNFeHRlbnNpb24gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMYW5nU3BhY2UgKilcbmFuZCBsYW5nU3BhY2UgPSBvYmplY3RcbiAgbWV0aG9kIHhtbGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbHNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICopXG5hbmQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IG9iamVjdFxuICBtZXRob2QgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA6IGFuaW1hdGVkQm9vbGVhbiB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94ICopXG5hbmQgZml0VG9WaWV3Qm94ID0gb2JqZWN0XG4gIG1ldGhvZCB2aWV3Qm94IDogYW5pbWF0ZWRSZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tQW5kUGFuICopXG5hbmQgem9vbUFuZFBhbiA9IG9iamVjdFxuICBtZXRob2Qgem9vbUFuZFBhbiA6IHpvb21BbmRQYW5UeXBlIHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld1NwZWMgKilcbmFuZCB2aWV3U3BlYyA9IG9iamVjdFxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiB0cmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld0JveFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpb1N0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHJhbnNmb3JtU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2UgKilcbmFuZCB1cmlSZWZlcmVuY2UgPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ1NTUnVsZSA6IENTU1J1bGUgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ09MT1JfUFJPRklMRV9SVUxFID0gNzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdEb2N1bWVudCAqKVxuYW5kIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRFdmVudCAqKVxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RFbGVtZW50IDogc3ZnRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG4gICgqIHJvb3RFbGVtZW50IHdpbGwgYmUgbnVsbCBvciB1bmRlZmluZWQgaW4gYW4gaHRtbCBjb250ZXh0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NWR0VsZW1lbnQgKilcbmFuZCBzdmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudGV2ZW50LCB2aWV3Y3NzLCBkb2N1bWVudGNzcyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U2NyaXB0VHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdmlld3BvcnQgOiByZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VDdXJyZW50VmlldyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRWaWV3IDogdmlld1NwZWMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTY2FsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgY3VycmVudFRyYW5zbGF0ZSA6IHBvaW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdXNwZW5kUmVkcmF3IDogaW50IC0+IHN1c3BlbmRIYW5kbGVJRCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhdyA6IHN1c3BlbmRIYW5kbGVJRCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcmNlUmVkcmF3IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb25zUGF1c2VkIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEN1cnJlbnRUaW1lIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnRlcnNlY3Rpb25MaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5jbG9zdXJlTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrSW50ZXJzZWN0aW9uIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgY2hlY2tFbmNsb3N1cmUgOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBkZXNlbGVjdEFsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdOdW1iZXIgOiBudW1iZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0xlbmd0aCA6IGxlbmd0aCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHQW5nbGUgOiBhbmdsZSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUG9pbnQgOiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTWF0cml4IDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdSZWN0IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtIDogdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IHQgLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+IERvbS5lbGVtZW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHRWxlbWVudCAqKVxuYW5kIGdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0RlZnNFbGVtZW50ICopXG5hbmQgZGVmc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZXNjRWxlbWVudCAqKVxuYW5kIGRlc2NFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUaXRsZUVsZW1lbnQgKilcbmFuZCB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N5bWJvbEVsZW1lbnQgKilcbmFuZCBzeW1ib2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVc2VFbGVtZW50ICopXG5hbmQgdXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkSW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50SW5zdGFuY2UgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nRWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IDogdXNlRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IGVsZW1lbnRJbnN0YW5jZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudEluc3RhbmNlTGlzdCAqKVxuYW5kIGVsZW1lbnRJbnN0YW5jZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gZWxlbWVudEluc3RhbmNlIHRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSW1hZ2VFbGVtZW50ICopXG5hbmQgaW1hZ2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG4gICgqIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuZW5kXG5cbmFuZCBzd2l0Y2hFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG4oKiBYWFggZGVwcmVjYXRlZCA9PiBpbnRlcmZhY2UgR2V0U1ZHRG9jdW1lbnQgPT4gU1ZHRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKSAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGVFbGVtZW50ICopXG5hbmQgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50ICopXG5hbmQgcG9pbnQgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeFRyYW5zZm9ybSA6IG1hdHJpeCB0IC0+IHBvaW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludExpc3QgKilcbmFuZCBwb2ludExpc3QgPSBbcG9pbnQgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWF0cml4ICopXG5hbmQgbWF0cml4ID0gb2JqZWN0XG4gIG1ldGhvZCBhIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBseSA6IG1hdHJpeCB0IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgaW52ZXJzZSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGVOb25Vbmlmb3JtIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZUZyb21WZWN0b3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBYIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1ggOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdZIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm0gKilcbmFuZCB0cmFuc2Zvcm0gPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogdHJhbnNmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeCA6IG1hdHJpeCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldE1hdHJpeCA6IG1hdHJpeCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Um90YXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdYIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdZIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybUxpc3QgKilcbmFuZCB0cmFuc2Zvcm1MaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW3RyYW5zZm9ybSB0XSBsaXN0XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25zb2xpZGF0ZSA6IHRyYW5zZm9ybSB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ICopXG5hbmQgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gW3RyYW5zZm9ybUxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvID0gb2JqZWN0XG4gIG1ldGhvZCBhbGlnbiA6IGFsaWdubWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZWV0T3JTbGljZSA6IG1lZXRPclNsaWNlVHlwZSByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFtwcmVzZXJ2ZUFzcGVjdFJhdGlvIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnICopXG5hbmQgcGF0aFNlZyA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ1R5cGUgOiBwYXRoU2VnbWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXRoU2VnVHlwZUFzTGV0dGVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ2xvc2VQYXRoICopXG5hbmQgcGF0aFNlZ0Nsb3NlUGF0aCA9IHBhdGhTZWdcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvUmVsICopXG5hbmQgcGF0aFNlZ01vdmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9SZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNSZWwqKVxuYW5kIHBhdGhTZWdBcmMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxhcmdlQXJjRmxhZyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN3ZWVwRmxhZyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0xpc3QgPSBbcGF0aFNlZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBhdGhEYXRhICopXG5hbmQgYW5pbWF0ZWRQYXRoRGF0YSA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2Qgbm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aEVsZW1lbnQgKilcbmFuZCBwYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBhdGhEYXRhXG5cbiAgbWV0aG9kIHBhdGhMZW5ndGggOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0VG90YWxMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBvaW50QXRMZW5ndGggOiBudW1iZXJfdCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0UGF0aFNlZ0F0TGVuZ3RoIDogbnVtYmVyX3QgLT4gaW50XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGggOiBwYXRoU2VnQ2xvc2VQYXRoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdEVsZW1lbnQgKilcbmFuZCByZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2lyY2xlRWxlbWVudCAqKVxuYW5kIGNpcmNsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsbGlwc2VFbGVtZW50ICopXG5hbmQgZWxsaXBzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBsaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBvaW50cyAqKVxuYW5kIGFuaW1hdGVkUG9pbnRzID0gb2JqZWN0XG4gIG1ldGhvZCBwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5bGluZUVsZW1lbnQgKilcbmFuZCBwb2x5TGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWdvbkVsZW1lbnQgKilcbmFuZCBwb2x5Z29uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0Q29udGVudEVsZW1lbnQgKilcbmFuZCB0ZXh0Q29udGVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGV4dExlbmd0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGhBZGp1c3QgOiBsZW5ndGhBZGp1c3QgYW5pbWF0ZWQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE51bWJlck9mQ2hhcnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFRleHRMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN1YlN0cmluZ0xlbmd0aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW50T2ZDaGFyIDogaW50IC0+IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJvdGF0aW9uT2ZDaGFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q2hhck51bUF0UG9zaXRpb24gOiBwb2ludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RTdWJTdHJpbmcgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50ICopXG5hbmQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IGFuaW1hdGVkTnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dEVsZW1lbnQgKilcbmFuZCB0ZXh0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG5hbmQgdHNwYW5FbGVtZW50ID0gdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG5hbmQgdHJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBhdGhFbGVtZW50ICopXG5hbmQgdGV4dFBhdGhFbGVtZW50TWV0aG9kID0gW3RleHRQYXRoTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudFNwYWNpbmcgPSBbdGV4dFBhdGhTcGFjaW5nVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGhvZF8gOiB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGFjaW5nIDogdGV4dFBhdGhFbGVtZW50U3BhY2luZyByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaERlZkVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaERlZkVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50ICopXG5hbmQgYWx0R2x5cGhJdGVtRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoUmVmRWxlbWVudCAqKVxuYW5kIGdseXBoUmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYWludCA6IFNWR0NvbG9yIHsgKilcblxuKCogICAvLyBQYWludCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfTk9ORSA9IDEwMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IgPSAxMDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgPSAxMDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiA9IDEwNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgPSAxMDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SID0gMTA2OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSSA9IDEwNzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsgKilcblxuKCogICB2b2lkIHNldFVyaShpbiBET01TdHJpbmcgdXJpKTsgKilcbigqICAgdm9pZCBzZXRQYWludChpbiB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGUsIGluIERPTVN0cmluZyB1cmksIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKSByYWlzZXMoU1ZHRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdNYXJrZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdTdHlsYWJsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRml0VG9WaWV3Qm94IHsgKilcblxuKCogICAvLyBNYXJrZXIgVW5pdCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCA9IDI7ICopXG5cbigqICAgLy8gTWFya2VyIE9yaWVudGF0aW9uIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFya2VyVW5pdHM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJXaWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlckhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3JpZW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQW5nbGUgb3JpZW50QW5nbGU7ICopXG5cbigqICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGluIFNWR0FuZ2xlIGFuZ2xlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlUnVsZSA6IFNWR0NTU1J1bGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3JjIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWUgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHR3JhZGllbnRFbGVtZW50ICopXG5hbmQgYW5pbWF0ZWRTcHJlYWRNZXRob2QgPSBbc3ByZWFkTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIGdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGdyYWRpZW50VW5pdHM7ICopXG4gIG1ldGhvZCBncmFkaWVudFRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3ByZWFkTWV0aG9kIDogYW5pbWF0ZWRTcHJlYWRNZXRob2QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCAqKVxuYW5kIGxpbmVhckdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQgKilcbmFuZCByYWRpYWxHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTdG9wRWxlbWVudCAqKVxuYW5kIHN0b3BFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2Qgb2Zmc2V0IDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdHRlcm5FbGVtZW50ICopXG5hbmQgcGF0dGVybkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Vbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgcGF0dGVyblRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDbGlwUGF0aEVsZW1lbnQgKilcbmFuZCBjbGlwUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGNsaXBQYXRoVW5pdHM7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR01hc2tFbGVtZW50ICopXG5hbmQgbWFza0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza1VuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tDb250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlckVsZW1lbnQgKilcbmFuZCBmaWx0ZXJFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBmaWx0ZXJVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwcmltaXRpdmVVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWCA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWSA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0RmlsdGVyUmVzIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogU1ZHU3R5bGFibGUgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB3aWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIGhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIHJlc3VsdDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUJsZW5kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEJsZW5kIE1vZGUgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX01VTFRJUExZID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JFRU4gPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0RBUktFTiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTElHSFRFTiA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbW9kZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbG9yIE1hdHJpeCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB2YWx1ZXM7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuXG4oKiAgIC8vIENvbXBvbmVudCBUcmFuc2ZlciBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JFVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdGFibGVWYWx1ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzbG9wZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGludGVyY2VwdDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGFtcGxpdHVkZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgb2Zmc2V0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY1JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0dFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb21wb3NpdGUgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1AgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SID0gNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGszOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBFZGdlIE1vZGUgVmFsdWVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9XUkFQID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX05PTkUgPSAzOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBrZXJuZWxNYXRyaXg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaXZpc29yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmlhczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGVkZ2VNb2RlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQm9vbGVhbiBwcmVzZXJ2ZUFscGhhOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpZmZ1c2VDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhemltdXRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZWxldmF0aW9uOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwb3RMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBsaW1pdGluZ0NvbmVBbmdsZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ2hhbm5lbCBTZWxlY3RvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9HID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0EgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geENoYW5uZWxTZWxlY3RvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geUNoYW5uZWxTZWxlY3RvcjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblk7ICopXG5cbigqICAgdm9pZCBzZXRTdGREZXZpYXRpb24oaW4gZmxvYXQgc3RkRGV2aWF0aW9uWCwgaW4gZmxvYXQgc3RkRGV2aWF0aW9uWSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVJbWFnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIE1vcnBob2xvZ3kgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU9mZnNldEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR5OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVGlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIFR1cmJ1bGVuY2UgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UgPSAyOyAqKVxuXG4oKiAgIC8vIFN0aXRjaCBPcHRpb25zICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9TVElUQ0ggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgbnVtT2N0YXZlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNlZWQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHN0aXRjaFRpbGVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0N1cnNvckVsZW1lbnQgKilcbmFuZCBjdXJzb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQUVsZW1lbnQgKilcbmFuZCBhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgdGFyZ2V0IDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdFbGVtZW50ICopXG5hbmQgdmlld0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBtZXRob2Qgdmlld1RhcmdldCA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NjcmlwdEVsZW1lbnQgKilcbmFuZCBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdSZWN0IHpvb21SZWN0U2NyZWVuOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcHJldmlvdXNTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgbmV3U2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBuZXdUcmFuc2xhdGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gICgqIGluaGVyaXQgZWxlbWVudFRpbWVDb250cm9sICopXG4gIG1ldGhvZCB0YXJnZXRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U3RhcnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U2ltcGxlRHVyYXRpb24gOiBudW1iZXJfdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTZXRFbGVtZW50ICopXG5hbmQgc2V0RWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0ZU1vdGlvbkVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNUGF0aEVsZW1lbnQgKilcbmFuZCBtUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVDb2xvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEVsZW1lbnQgKilcbmFuZCBmb250RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQqKVxuYW5kIGdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0hLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdWS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VTcmNFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlU3JjRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlVXJpRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVVyaUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VGb3JtYXRFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZU5hbWVFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWV0YWRhdGFFbGVtZW50ICopXG5jbGFzcyB0eXBlIG1ldGFkYXRhRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvcmVpZ25PYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50TlMgeG1sbnMgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGggZG9jIDogYWx0R2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoRGVmIGRvYyA6IGFsdEdseXBoRGVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGRlZlwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaEl0ZW0gZG9jIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGl0ZW1cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZSBkb2MgOiBhbmltYXRlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVDb2xvciBkb2MgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVjb2xvclwiXG5cbmxldCBjcmVhdGVBbmltYXRlTW90aW9uIGRvYyA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVtb3Rpb25cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSBkb2MgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRldHJhbnNmb3JtXCJcblxubGV0IGNyZWF0ZUNpcmNsZSBkb2MgOiBjaXJjbGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNpcmNsZVwiXG5cbmxldCBjcmVhdGVDbGlwUGF0aCBkb2MgOiBjbGlwUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2xpcHBhdGhcIlxuXG4oKiBsZXQgY3JlYXRlQ29sb3JQcm9maWxlIGRvYyA6IGNvbG9yUHJvZmlsZSB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xvci1wcm9maWxlXCIgKilcbmxldCBjcmVhdGVDdXJzb3IgZG9jIDogY3Vyc29yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjdXJzb3JcIlxuXG5sZXQgY3JlYXRlRGVmcyBkb2MgOiBkZWZzRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWZzXCJcblxubGV0IGNyZWF0ZURlc2MgZG9jIDogZGVzY0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVzY1wiXG5cbmxldCBjcmVhdGVFbGxpcHNlIGRvYyA6IGVsbGlwc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVsbGlwc2VcIlxuXG4oKiBsZXQgY3JlYXRlRmUqICopXG5sZXQgY3JlYXRlRmlsdGVyIGRvYyA6IGZpbHRlckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmlsdGVyXCJcblxubGV0IGNyZWF0ZUZvbnQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udFwiXG5cbmxldCBjcmVhdGVGb250RmFjZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2VcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VGb3JtYXQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbmxldCBjcmVhdGVGb250RmFjZU5hbWUgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLW5hbWVcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VTcmMgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXNyY1wiXG5cbmxldCBjcmVhdGVGb250RmFjZVVyaSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtdXJpXCJcblxubGV0IGNyZWF0ZUZvcmVpZ25PYmplY3QgZG9jIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9yZWlnbk9iamVjdFwiXG5cbmxldCBjcmVhdGVHIGRvYyA6IGdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdcIlxuXG5sZXQgY3JlYXRlR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBoXCJcblxubGV0IGNyZWF0ZUdseXBoUmVmIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaHJlZlwiXG5cbmxldCBjcmVhdGVoa2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhrZXJuXCJcblxubGV0IGNyZWF0ZUltYWdlIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWFnZVwiXG5cbmxldCBjcmVhdGVMaW5lRWxlbWVudCBkb2MgOiBsaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lXCJcblxubGV0IGNyZWF0ZUxpbmVhckVsZW1lbnQgZG9jIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVhcmdyYWRpZW50XCJcblxuKCogbGV0IGNyZWF0ZU1hcmtlciBkb2MgOiBtYXJrZXJFbGVtZW50ICopXG5sZXQgY3JlYXRlTWFzayBkb2MgOiBtYXNrRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXNrXCJcblxubGV0IGNyZWF0ZU1ldGFEYXRhIGRvYyA6IG1ldGFkYXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhZGF0YVwiXG5cbmxldCBjcmVhdGVNaXNzaW5nR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1pc3NpbmctZ2x5cGhcIlxuXG5sZXQgY3JlYXRlTVBhdGggZG9jIDogbVBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1wYXRoXCJcblxubGV0IGNyZWF0ZVBhdGggZG9jIDogcGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0aFwiXG5cbmxldCBjcmVhdGVQYXR0ZXJuIGRvYyA6IHBhdHRlcm5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdHRlcm5cIlxuXG5sZXQgY3JlYXRlUG9seWdvbiBkb2MgOiBwb2x5Z29uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5Z29uXCJcblxubGV0IGNyZWF0ZVBvbHlsaW5lIGRvYyA6IHBvbHlMaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5bGluZVwiXG5cbmxldCBjcmVhdGVSYWRpYWxncmFkaWVudCBkb2MgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmFkaWFsZ3JhZGllbnRcIlxuXG5sZXQgY3JlYXRlUmVjdCBkb2MgOiByZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyZWN0XCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVTZXQgZG9jIDogc2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzZXRcIlxuXG5sZXQgY3JlYXRlU3RvcCBkb2MgOiBzdG9wRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdG9wXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVTdmcgZG9jIDogc3ZnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdmdcIlxuXG5sZXQgY3JlYXRlU3dpdGNoIGRvYyA6IHN3aXRjaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3dpdGNoXCJcblxubGV0IGNyZWF0ZVN5bWJvbCBkb2MgOiBzeW1ib2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN5bWJvbFwiXG5cbmxldCBjcmVhdGVUZXh0RWxlbWVudCBkb2MgOiB0ZXh0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0XCJcblxubGV0IGNyZWF0ZVRleHRwYXRoIGRvYyA6IHRleHRQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0cGF0aFwiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlVHJlZiBkb2MgOiB0cmVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0cmVmXCJcblxubGV0IGNyZWF0ZVRzcGFuIGRvYyA6IHRzcGFuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0c3BhblwiXG5cbmxldCBjcmVhdGVVc2UgZG9jIDogdXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1c2VcIlxuXG5sZXQgY3JlYXRlVmlldyBkb2MgOiB2aWV3RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWV3XCJcblxubGV0IGNyZWF0ZXZrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmtlcm5cIlxuXG4oKioqKilcblxubGV0IHN2Z19lbGVtZW50IDogZWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fU1ZHRWxlbWVudFxuXG5sZXQgZG9jdW1lbnQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkIDogZWxlbWVudCB0ID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIGUgLT4gaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gZSBlbHNlIHJhaXNlIE5vdF9mb3VuZClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IChlIDogI0RvbS5ub2RlIEpzLnQpIDogZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIChlIDogI2VsZW1lbnQgdCkgdGFnID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgOiBhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYVwiXG5cbiAgbGV0IGFsdEdseXBoIGUgOiBhbHRHbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgZSA6IGFsdEdseXBoRGVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhkZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gZSA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoaXRlbVwiXG5cbiAgbGV0IGFuaW1hdGUgZSA6IGFuaW1hdGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yIGUgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlY29sb3JcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uIGUgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZW1vdGlvblwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gZSA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgb3B0ID1cbiAgICB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG4gIGxldCBjaXJjbGUgZSA6IGNpcmNsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNpcmNsZVwiXG5cbiAgbGV0IGNsaXBQYXRoIGUgOiBjbGlwUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNsaXBwYXRoXCJcblxuICAoKiBsZXQgQ29sb3JQcm9maWxlIGUgOiBjb2xvclByb2ZpbGUgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNvbG9yLXByb2ZpbGVcIiAqKVxuICBsZXQgY3Vyc29yIGUgOiBjdXJzb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjdXJzb3JcIlxuXG4gIGxldCBkZWZzIGUgOiBkZWZzRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgZSA6IGRlc2NFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZXNjXCJcblxuICBsZXQgZWxsaXBzZSBlIDogZWxsaXBzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImVsbGlwc2VcIlxuXG4gICgqIGxldCBGZSogKilcbiAgbGV0IGZpbHRlciBlIDogZmlsdGVyRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZmlsdGVyXCJcblxuICBsZXQgZm9udCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnRcIlxuXG4gIGxldCBmb250RmFjZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRGYWNlRm9ybWF0IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbiAgbGV0IGZvbnRGYWNlTmFtZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICBsZXQgZm9udEZhY2VTcmMgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udEZhY2VVcmkgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9yZWlnbk9iamVjdCBlIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvcmVpZ25vYmplY3RcIlxuXG4gIGxldCBnIGUgOiBnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ1wiXG5cbiAgbGV0IGdseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBoXCJcblxuICBsZXQgZ2x5cGhSZWYgZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhyZWZcIlxuXG4gIGxldCBoa2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaGtlcm5cIlxuXG4gIGxldCBpbWFnZSBlIDogaW1hZ2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJpbWFnZVwiXG5cbiAgbGV0IGxpbmVFbGVtZW50IGUgOiBsaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZVwiXG5cbiAgbGV0IGxpbmVhckVsZW1lbnQgZSA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZWFyZ3JhZGllbnRcIlxuXG4gICgqIGxldCBNYXJrZXIgZSA6IG1hcmtlckVsZW1lbnQgKilcbiAgbGV0IG1hc2sgZSA6IG1hc2tFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtYXNrXCJcblxuICBsZXQgbWV0YURhdGEgZSA6IG1ldGFkYXRhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWV0YWRhdGFcIlxuXG4gIGxldCBtaXNzaW5nR2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IG1QYXRoIGUgOiBtUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1wYXRoXCJcblxuICBsZXQgcGF0aCBlIDogcGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdGhcIlxuXG4gIGxldCBwYXR0ZXJuIGUgOiBwYXR0ZXJuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0dGVyblwiXG5cbiAgbGV0IHBvbHlnb24gZSA6IHBvbHlnb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5Z29uXCJcblxuICBsZXQgcG9seWxpbmUgZSA6IHBvbHlMaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWxpbmVcIlxuXG4gIGxldCByYWRpYWxncmFkaWVudCBlIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyYWRpYWxncmFkaWVudFwiXG5cbiAgbGV0IHJlY3QgZSA6IHJlY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyZWN0XCJcblxuICBsZXQgc2NyaXB0IGUgOiBzY3JpcHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzY3JpcHRcIlxuXG4gIGxldCBzZXQgZSA6IHNldEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNldFwiXG5cbiAgbGV0IHN0b3AgZSA6IHN0b3BFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdG9wXCJcblxuICBsZXQgc3R5bGUgZSA6IHN0eWxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3R5bGVcIlxuXG4gIGxldCBzdmcgZSA6IHN2Z0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN2Z1wiXG5cbiAgbGV0IHN3aXRjaCBlIDogc3dpdGNoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3dpdGNoXCJcblxuICBsZXQgc3ltYm9sIGUgOiBzeW1ib2xFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzeW1ib2xcIlxuXG4gIGxldCB0ZXh0RWxlbWVudCBlIDogdGV4dEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRcIlxuXG4gIGxldCB0ZXh0cGF0aCBlIDogdGV4dFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0cGF0aFwiXG5cbiAgbGV0IHRpdGxlIGUgOiB0aXRsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRpdGxlXCJcblxuICBsZXQgdHJlZiBlIDogdHJlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRyZWZcIlxuXG4gIGxldCB0c3BhbiBlIDogdHNwYW5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0c3BhblwiXG5cbiAgbGV0IHVzZSBlIDogdXNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidXNlXCJcblxuICBsZXQgdmlldyBlIDogdmlld0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZpZXdcIlxuXG4gIGxldCB2a2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmtlcm5cIlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRTb3VyY2UgKilcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxudHlwZSBzdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdEV2ZW50SWQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG4gICgqIG1ldGhvZCBzb3VyY2UgOiB1bml0ICopXG5lbmRcblxuY2xhc3MgdHlwZSBldmVudFNvdXJjZSA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCB1cmwgOiBzdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBzdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IHdpdGhDcmVkZW50aWFscyBiIDogb3B0aW9ucyB0ID1cbiAgbGV0IGluaXQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgaW5pdCMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGI7XG4gIGluaXRcblxubGV0IGV2ZW50U291cmNlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgZXZlbnRTb3VyY2Vfb3B0aW9ucyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGNvbnNvbGUgPSBvYmplY3RcbiAgbWV0aG9kIGxvZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNiA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNyA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ184IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1ZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm8gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm4gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzEgOiBib29sIHQgLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzIgOiBib29sIHQgLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMyA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzQgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzUgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXIgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXJ4bWwgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFjZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBFbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lRW5kIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuZXh0ZXJuYWwgZ2V0X2NvbnNvbGUgOiB1bml0IC0+IGNvbnNvbGUgdCA9IFwiY2FtbF9qc19nZXRfY29uc29sZVwiXG5cbmxldCBjb25zb2xlID0gZ2V0X2NvbnNvbGUgKClcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvc2l0aW9uRXJyb3JDb2RlXG5cbnR5cGUgd2F0Y2hJZFxuXG5jbGFzcyB0eXBlIGNvb3JkaW5hdGVzID0gb2JqZWN0XG4gIG1ldGhvZCBsYXRpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9uZ2l0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZUFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZGluZyA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWVkIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb29yZHMgOiBjb29yZGluYXRlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZXN0YW1wIDogSnMuZGF0ZSBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbk9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGVuYWJsZUhpZ2hBY2N1cmFjeSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZW91dCA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhpbXVtQWdlIDogaW50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbkVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBfUEVSTUlTU0lPTl9ERU5JRURfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9TSVRJT05fVU5BVkFJTEFCTEVfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVElNRU9VVCA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGdlb2xvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDdXJyZW50UG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHdhdGNoUG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gd2F0Y2hJZCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsZWFyV2F0Y2ggOiB3YXRjaElkIC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9wb3NpdGlvbl9vcHRpb25zICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBnZW9sb2NhdGlvbiA9XG4gIGxldCB4ID0gSnMuVW5zYWZlLmdsb2JhbCMjLm5hdmlnYXRvciBpblxuICBpZiBKcy5PcHRkZWYudGVzdCB4IHRoZW4geCMjLmdlb2xvY2F0aW9uIGVsc2UgeFxuXG4oKiB1bmRlZmluZWQgKilcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGdlb2xvY2F0aW9uXG4iLCJjbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3VuZGluZ0NsaWVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290Qm91bmRzIDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SYXRpbyA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNJbnRlcnNlY3RpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZHMgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcHRpb25zICgpIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPVxuICBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAoICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnRcbiAgICAgICAgIC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50XG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE4IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgU2hhcmVkID0gc2lnXG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgdmFsIG9iamVjdF9vcHRpb25zIDogdW5pdCAtPiBvYmplY3Rfb3B0aW9ucyBKcy50XG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTaGFyZWQgOiBTaGFyZWQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb2JqZWN0X29wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbGxhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY29sbGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdXNhZ2UgPSBKcy5zdHJpbmcgXCJzb3J0XCJcblxuICAgICAgdmFsIG11dGFibGUgc2Vuc2l0aXZpdHkgPSBKcy5zdHJpbmcgXCJ2YXJpYW50XCJcblxuICAgICAgdmFsIG11dGFibGUgaWdub3JlUHVuY3R1YXRpb24gPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgbnVtZXJpYyA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBjYXNlRmlyc3QgPSBKcy5zdHJpbmcgXCJmYWxzZVwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhcmUgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gaW50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRGF0ZVRpbWVGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBkYXRlU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheVBlcmlvZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyQ3ljbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdE1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGRhdGVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY2FsZW5kYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5UGVyaW9kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyMTIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ckN5Y2xlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZvcm1hdE1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHdlZWtkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZXJhID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHllYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbW9udGggPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWludXRlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlY29uZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lTmFtZSA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLmRhdGUgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMuZGF0ZSBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIE51bWJlckZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFjdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5U2lnbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBub3RhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzaWduRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ01vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nUHJpb3JpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nSW5jcmVtZW50IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0cmFpbGluZ1plcm9EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBjb21wYWN0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeURpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lTaWduID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIG5vdGF0aW9uID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzaWduRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzdHlsZSA9IEpzLnN0cmluZyBcImRlY2ltYWxcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXREaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzZUdyb3VwaW5nID0gSnMuX3RydWVcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdNb2RlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nUHJpb3JpdHkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdJbmNyZW1lbnQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdHJhaWxpbmdaZXJvRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGx1cmFsUnVsZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHBsdXJhbENhdGVnb3JpZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgX3R5cGUgPSBKcy5zdHJpbmcgXCJjYXJkaW5hbFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHNlbGVjdCA6IEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50bCA9IG9iamVjdFxuICBtZXRob2QgX0NvbGxhdG9yIDogQ29sbGF0b3IuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RhdGVUaW1lRm9ybWF0IDogRGF0ZVRpbWVGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX051bWJlckZvcm1hdCA6IE51bWJlckZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUGx1cmFsUnVsZXMgOiBQbHVyYWxSdWxlcy5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDYW5vbmljYWxMb2NhbGVzIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBpbnRsID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsXG5cbmxldCBjb2xsYXRvcl9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fQ29sbGF0b3JcblxubGV0IGRhdGVUaW1lRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9EYXRlVGltZUZvcm1hdFxuXG5sZXQgbnVtYmVyRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9OdW1iZXJGb3JtYXRcblxubGV0IHBsdXJhbFJ1bGVzX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9QbHVyYWxSdWxlc1xuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50bFxuIiwiaW5jbHVkZSBKc19vZl9vY2FtbC5Kc1xubW9kdWxlIFVybCA9IEpzX29mX29jYW1sLlVybFxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWwuRmlyZWJ1Z1xubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbC5GaWxlXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWwuRG9tXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbC5UeXBlZF9hcnJheVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sLlJlZ2V4cFxuXG50eXBlICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIFN0ZGxpYi5yZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbnR5cGUgd2luZG93ID0gRG9tX2h0bWwud2luZG93XG5cbmxldCB0b19hcnJheWYgZiBhID0gQXJyYXkubWFwIGYgKHRvX2FycmF5IGEpXG5cbmxldCBvZl9hcnJheWYgZiBhID0gYXJyYXkgKEFycmF5Lm1hcCBmIGEpXG5cbmxldCB0b19saXN0IGEgPSBBcnJheS50b19saXN0IEBAIHRvX2FycmF5IGFcblxubGV0IG9mX2xpc3QgbCA9IGFycmF5IEBAIEFycmF5Lm9mX2xpc3QgQEAgbFxuXG5sZXQgdG9fbGlzdGYgZiBhID0gQXJyYXkudG9fbGlzdCBAQCB0b19hcnJheWYgZiBhXG5cbmxldCBvZl9saXN0ZiBmIGEgPSBvZl9hcnJheWYgZiBAQCBBcnJheS5vZl9saXN0IGFcblxubGV0IG9wdGRlZiBmID0gZnVuY3Rpb24gTm9uZSAtPiB1bmRlZmluZWQgfCBTb21lIHggLT4gZGVmIChmIHgpXG5cbmxldCB0b19vcHRkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHVub3B0ZGVmX2YgZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gZGVmIHwgU29tZSB4IC0+IGYgeFxuXG5sZXQgdW5vcHRkZWYgZGVmIHggPSBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IGRlZiB8IFNvbWUgeCAtPiB4XG5cbmxldCBjb252ZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gdW5kZWZpbmVkIHwgU29tZSB4IC0+IGRlZiAoZiB4KVxuXG5sZXQgdG9fb3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCBvcHQgZiA9IGZ1bmN0aW9uIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBjb252b3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBqc19sb2cgbyA9IEZpcmVidWcuY29uc29sZSMjbG9nIG9cblxubGV0IGxvZ19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChzdHJpbmcgcylcblxubGV0IGxvZyBmbXQgPVxuICBGb3JtYXQua2ZwcmludGZcbiAgICAoZnVuIF9mbXQgLT4ganNfbG9nIChzdHJpbmcgKEZvcm1hdC5mbHVzaF9zdHJfZm9ybWF0dGVyICgpKSkpXG4gICAgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgZm10XG5cbmxldCBlcnJvcl9vZl9zdHJpbmcgcyA9IG5ldyVqcyBlcnJvcl9jb25zdHIgKHN0cmluZyBzKVxubGV0IGNhdGNoX2V4biBmID0gZnVuY3Rpb25cbiAgfCBKc19lcnJvci5FeG4gZSAtPiBmIChKc19lcnJvci50b19lcnJvciBlKVxuICB8IGV4biAtPiBmIEBAIGVycm9yX29mX3N0cmluZyBAQCBQcmludGV4Yy50b19zdHJpbmcgZXhuXG5cbm1vZHVsZSBBT3B0ID0gc3RydWN0XG4gIHR5cGUgKydhIHRcbiAgbGV0IG51bGwgOiAnYSB0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IHVuZGVmaW5lZCA6ICdhIHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgcmV0dXJuIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgY29lcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwganNfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuICBsZXQgaXNfbm9uZSAoeCA6ICdhIHQpIDogYm9vbCA9IHggPT0gdW5kZWZpbmVkIHx8IGpzX2VxdWFscyB4IG51bGxcbiAgbGV0IG1hcCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IpIDogJ2IgdCA9XG4gICAgaWYgaXNfbm9uZSB4IHRoZW4gbm9uZSBlbHNlIHJldHVybiAoZiAoY29lcmNlIHgpKVxuICBsZXQgYmluZCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IgdCkgOiAnYiB0ID1cbiAgICBpZiBpc19ub25lIHggdGhlbiBub25lIGVsc2UgZiAoY29lcmNlIHgpXG4gIGxldCB0ZXN0ICh4IDogJ2EgdCkgOiBib29sID0gbm90IChpc19ub25lIHgpXG4gIGxldCBpdGVyICh4IDogJ2EgdCkgKGYgOiAnYSAtPiB1bml0KSA6IHVuaXQgPSBpZiBub3QgKGlzX25vbmUgeCkgdGhlbiBmIChjb2VyY2UgeClcbiAgbGV0IGNhc2UgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2IpIChnIDogJ2EgLT4gJ2IpIDogJ2IgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgZyAoY29lcmNlIHgpXG4gIGxldCBnZXQgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2EpIDogJ2EgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgKGNvZXJjZSB4KVxuICBsZXQgb3B0aW9uID8obm9uZT11bmRlZmluZWQpICh4IDogJ2Egb3B0aW9uKSA6ICdhIHQgPSBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gIGxldCB0b19vcHRpb24gKHggOiAnYSB0KSA6ICdhIG9wdGlvbiA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGxldCBhb3B0ID8obm9uZT0odW5kZWZpbmVkIDogJ2IgdCkpIChmIDogJ2EgLT4gJ2IpIDogJ2Egb3B0aW9uIC0+ICdiIHQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIChmIHgpXG4gIGxldCB0b19hb3B0IChmIDogJ2EgLT4gJ2IpICh4IDogJ2EgdCkgOiAnYiBvcHRpb24gPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSAoZiB4KSlcbmVuZFxudHlwZSAnYSBhb3B0ID0gJ2EgQU9wdC50XG5cbnR5cGUgJ2EgY2FzZV9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgPiBnZW5fcHJvcFxuXG5sZXQgcmVjIGNob29zZV9jYXNlX29wdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgaCA6OiB0IC0+IG1hdGNoIE9wdGRlZi50b19vcHRpb24gaCB3aXRoIE5vbmUgLT4gY2hvb3NlX2Nhc2Vfb3B0IHQgfCBTb21lIF8gLT4gaFxuXG5sZXQgY2hvb3NlX2Nhc2UgbCA9IGNob29zZV9jYXNlX29wdCAoTGlzdC5tYXAgT3B0ZGVmLnJldHVybiBsKVxuXG5sZXQgb2JqZWN0X2NzID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcbmxldCBhc3NpZ24gKG8xIDogXyB0KSAobzIgOiBfIHQpID0gVW5zYWZlLmNvZXJjZSAob2JqZWN0X2NzIyNhc3NpZ24gbzEgbzIpXG5sZXQgYXNzaWduX2xpc3QgbCA9IFVuc2FmZS5jb2VyY2UgKFVuc2FmZS5tZXRoX2NhbGwgb2JqZWN0X2NzIFwiYXNzaWduXCIgKEFycmF5Lm9mX2xpc3QgbCkpXG5cbmxldCByZW1vdmVfdW5kZWZpbmVkIG8gPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG8gaW5cbiAga2V5cyMjZm9yRWFjaCAod3JhcF9jYWxsYmFjayAoZnVuIGsgXyBfIC0+XG4gICAgICBpZiBub3QgKE9wdGRlZi50ZXN0IChVbnNhZmUuZ2V0IG8gaykpIHRoZW4gVW5zYWZlLmRlbGV0ZSBvIGspKVxuIiwib3BlbiBKc1xuXG50eXBlIG5vbnJlYyAnYSB0ID0gPCA+IHRcblxubGV0IG9iaiA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpICh2IDogJ2EpID0gVW5zYWZlLnNldCB0IChzdHJpbmcgaykgdlxuXG5sZXQgYWRkX2xpc3QgKHQgOiAnYSB0KSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgPVxuICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayB2KSBsXG5cbmxldCBhZGRfbGlzdGYgKHQgOiAnYiB0KSAoZiA6ICgnYSAtPiAnYikpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA9XG4gIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIChmIHYpKSBsXG5cbmxldCBtYWtlIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBhZGRfbGlzdCB0IGw7XG4gIHRcblxubGV0IG1ha2VmIChmIDogKCdhIC0+ICdiKSkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2IgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGFkZF9saXN0ZiB0IGYgbDtcbiAgdFxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpID0gVW5zYWZlLmRlbGV0ZSB0IChzdHJpbmcgaylcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgOiAnYSBvcHRpb24gPVxuICBPcHRkZWYudG9fb3B0aW9uIChVbnNhZmUuZ2V0IHQgKHN0cmluZyBrKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IHN0cmluZyBsaXN0ID1cbiAgdG9fbGlzdGYgdG9fc3RyaW5nIEBAIG9iaiMja2V5cyB0XG5cbmxldCBpdGVtcyAodCA6ICdhIHQpIDogKHN0cmluZyAqICdhKSBsaXN0ID1cbiAgdG9fbGlzdGYgKGZ1biBrIC0+IHRvX3N0cmluZyBrLCBVbnNhZmUuZ2V0IHQgaykgQEAgb2JqIyNrZXlzIHRcblxubGV0IGl0ZW1zZiAoZiA6ICgnYSAtPiAnYikpICh0IDogJ2EgdCkgOiAoc3RyaW5nICogJ2IpIGxpc3QgPVxuICB0b19saXN0ZiAoZnVuIGsgLT4gdG9fc3RyaW5nIGssIGYgQEAgVW5zYWZlLmdldCB0IGspIEBAIG9iaiMja2V5cyB0XG5cbmxldCBsZW5ndGggKHQgOiAnYSB0KSA9IChvYmojI2tleXMgdCkjIy5sZW5ndGhcblxubGV0IG1lcmdlIChsIDogJ2EgdCBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgKGZ1biB4IC0+IExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIHYpIChpdGVtcyB4KSkgbDtcbiAgdFxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHByb21pc2UwID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHRoZW5fIDogKCdhIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQgbWV0aFxuICAgIG1ldGhvZCBjYXRjaCA6ICgnYiAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0IG1ldGhcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9taXNlID0gWydhLCBlcnJvciB0XSBwcm9taXNlMFxuXG50eXBlICgnYSwgJ2IpIHByb21pc2VfY3MgPVxuICAoKCgnYSAtPiB1bml0KSAtPiAoJ2IgLT4gdW5pdCkgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdClcbiAgY29uc3RyXG5cbmxldCBwcm9taXNlIGYgPVxuICBsZXQgY3MgOiAoJ2EsICdiKSBwcm9taXNlX2NzID0gVW5zYWZlLmdsb2JhbCMjLl9Qcm9taXNlIGluXG4gIG5ldyVqcyBjcyAod3JhcF9jYWxsYmFjayBmKVxuXG5sZXQganRoZW4wID9lcnJvciAocHJvbSA6ICgnYSwgJ2IgdCkgcHJvbWlzZTAgdCkgZiA9XG4gIGxldCBjYXRjaF9leG4gZXhuID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biAoZnVuIHggLT4gZWYgKFVuc2FmZS5jb2VyY2UgeCkpIGV4biBpblxuICBsZXQgcCA9IHByb20jI3RoZW5fICh3cmFwX2NhbGxiYWNrIChmdW4geCAtPiB0cnkgZiB4IHdpdGggZXhuIC0+IGNhdGNoX2V4biBleG4pKSBpblxuICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVycm9yIC0+IGlnbm9yZSAocCMjY2F0Y2ggKHdyYXBfY2FsbGJhY2sgZXJyb3IpKVxuXG5sZXQganRoZW4gP2Vycm9yIChwcm9tIDogJ2EgcHJvbWlzZSB0KSBmID1cbiAgbGV0IGNhdGNoX2V4biBleG4gPSBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biBlZiBleG4gaW5cbiAgbGV0IHAgPSBwcm9tIyN0aGVuXyAod3JhcF9jYWxsYmFjayAoZnVuIHggLT4gdHJ5IGYgeCB3aXRoIGV4biAtPiBjYXRjaF9leG4gZXhuKSkgaW5cbiAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlcnJvciAtPiBpZ25vcmUgKHAjI2NhdGNoICh3cmFwX2NhbGxiYWNrIGVycm9yKSlcblxubGV0IGp0aGVuMF9vcHQgcHJvbSA9IGZ1bmN0aW9uIE5vbmUgLT4gaWdub3JlIHByb20gfCBTb21lIGYgLT4ganRoZW4wIHByb20gZlxubGV0IGp0aGVuX29wdCBwcm9tID0gZnVuY3Rpb24gTm9uZSAtPiBpZ25vcmUgcHJvbSB8IFNvbWUgZiAtPiBqdGhlbiBwcm9tIGZcblxubGV0IHJ0aGVuIHByb20gZiA9XG4gIGp0aGVuIH5lcnJvcjooZnVuIGUgLT4gZiBAQCBFcnJvciBlKSBwcm9tIChmdW4geCAtPiBmIChPayB4KSlcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IGxvZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgb1xuXG5sZXQgbG9nMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgbzEgbzJcblxubGV0IGxvZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18zIG8xIG8yIG8zXG5cbmxldCBsb2dfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBsb2dfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGxvZ19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgZGVidWcgbyA9IEZpcmVidWcuY29uc29sZSMjZGVidWcgb1xuXG5sZXQgZGVidWcyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIG8xIG8yXG5cbmxldCBkZWJ1ZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzMgbzEgbzIgbzNcblxubGV0IGRlYnVnX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBkZWJ1Z19zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBkZWJ1Z19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCB3YXJuIG8gPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm4gb1xuXG5sZXQgd2FybjIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiBvMSBvMlxuXG5sZXQgd2FybjMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMyBvMSBvMiBvM1xuXG5sZXQgd2Fybl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjd2FybiAoSnMuc3RyaW5nIHMpXG5cbmxldCB3YXJuX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgd2Fybl9zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IGVycm9yIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIG9cblxubGV0IGVycm9yMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiBvMSBvMlxuXG5sZXQgZXJyb3IzIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIG8xIG8yIG8zXG5cbmxldCBlcnJvcl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBzKVxuXG5sZXQgZXJyb3Jfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgZXJyb3Jfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIGJpZ0ludCA9IG9iamVjdFxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBvcHRkZWYgLT4gXyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbiAgbWV0aG9kIHZhbHVlT2YgOiBiaWdJbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub25yZWMgdCA9IGJpZ0ludCB0XG5cbmxldCBiaWdJbnQgOiAoVW5zYWZlLmFueSAtPiB0KSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJCaWdJbnRcIlxuXG5sZXQgb2Zfc3RyaW5nIHMgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgc3RyaW5nIHMpXG5sZXQgb2ZfaW50IChpIDogaW50KSA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBpKVxubGV0IG9mX2ludDY0IChpIDogaW50NjQpID0gb2Zfc3RyaW5nIChJbnQ2NC50b19zdHJpbmcgaSlcbmxldCBvZl9uYXRpdmUgKGkgOiBuYXRpdmVpbnQpID0gb2Zfc3RyaW5nIChOYXRpdmVpbnQudG9fc3RyaW5nIGkpXG5sZXQgb2ZfZmxvYXQgZiA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBudW1iZXJfb2ZfZmxvYXQgZilcblxubGV0IHRvX2xvY2FsZV9zdHJpbmcgP2ZtdCA/b3B0aW9ucyAobiA6IHQpID1cbiAgdG9fc3RyaW5nIChuIyN0b0xvY2FsZVN0cmluZyAob3B0ZGVmIHN0cmluZyBmbXQpIChPcHRkZWYub3B0aW9uIG9wdGlvbnMpKVxubGV0IHRvX3N0cmluZyAobiA6IHQpID0gdG9fc3RyaW5nIG4jI3RvU3RyaW5nXG4iLCJvcGVuIEpzXG5cbmxldCBzZXRJbm5lckh0bWwgZWx0IHMgPSBlbHQjIy5pbm5lckhUTUwgOj0gc3RyaW5nIHNcblxubGV0IHNldFRleHQgZWx0ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgcyAtPlxuICAgICAgZWx0IyMudGV4dENvbnRlbnQgOj0gc29tZSAoc3RyaW5nIHMpXG5cbmxldCBhZGRDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjYWRkIChzdHJpbmcgcylcblxubGV0IGFkZENsYXNzZXMgZWx0IGwgPSBMaXN0Lml0ZXIgKGFkZENsYXNzIGVsdCkgbFxuXG5sZXQgcmVtb3ZlQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI3JlbW92ZSAoc3RyaW5nIHMpXG5cbmxldCBjb250YWluc0NsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNjb250YWlucyAoc3RyaW5nIHMpXG5cbmxldCBzZXRBdHRyaWJ1dGUgZWx0IGtleSB2YWx1ZSA9IGVsdCMjc2V0QXR0cmlidXRlIChzdHJpbmcga2V5KSAoc3RyaW5nIHZhbHVlKVxuXG5sZXQgcmVtb3ZlQXR0cmlidXRlIGVsdCBrZXkgPSBlbHQjI3JlbW92ZUF0dHJpYnV0ZSAoc3RyaW5nIGtleSlcblxubGV0IGdldEF0dHJpYnV0ZSBlbHQga2V5ID0gT3B0LnRvX29wdGlvbiAoZWx0IyNnZXRBdHRyaWJ1dGUgKHN0cmluZyBrZXkpKVxuXG5sZXQgc2V0Q1NTIGVsdCBzdHlsZXMgPVxuICBsZXQgc3R5bGVzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiOyBcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gayBeIFwiOiBcIiBeIHYpIHN0eWxlcylcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhZGRDU1MgZWx0IHN0eWxlcyA9XG4gIGxldCBzdHlsZXMgPVxuICAgIFN0cmluZy5jb25jYXQgXCI7IFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBrIF4gXCI6IFwiIF4gdikgc3R5bGVzKVxuICBpblxuICBsZXQgc3R5bGVzID1cbiAgICBtYXRjaCBnZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIHN0eWxlc1xuICAgIHwgU29tZSBvbGRfc3R5bGVzIC0+XG4gICAgICAgIG9sZF9zdHlsZXMgXiBcIjsgXCIgXiBzdHlsZXNcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhcHBlbmRDaGlsZCA9IERvbS5hcHBlbmRDaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGQgPSBEb20ucmVtb3ZlQ2hpbGRcblxubGV0IGFwcGVuZENoaWxkcmVuIHBhcmVudCBjaGlsZHJlbiA9IExpc3QuaXRlciAoRG9tLmFwcGVuZENoaWxkIHBhcmVudCkgY2hpbGRyZW5cblxubGV0IGNoaWxkcmVuIHBhcmVudCA9IERvbS5saXN0X29mX25vZGVMaXN0IHBhcmVudCMjLmNoaWxkTm9kZXNcblxubGV0IHJlbW92ZUNoaWxkaSBwYXJlbnQgaSA9XG4gIG1hdGNoIExpc3QubnRoX29wdCAoY2hpbGRyZW4gcGFyZW50KSBpIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgY2hpbGQgLT5cbiAgICAgIHJlbW92ZUNoaWxkIHBhcmVudCBjaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50ID0gTGlzdC5pdGVyIChyZW1vdmVDaGlsZCBwYXJlbnQpIChjaGlsZHJlbiBwYXJlbnQpXG5cbmxldCByZXBsYWNlQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuID1cbiAgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50IDtcbiAgYXBwZW5kQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuXG5cbmxldCBieV9pZCBzID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWQgc1xuXG5sZXQgYWRkTGlzdGVuZXIgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgZWx0IGV2IGYgPVxuICBsZXQgY2FwdHVyZSA9IE9wdGlvbi5tYXAgYm9vbCBjYXB0dXJlIGluXG4gIGxldCBvbmNlID0gT3B0aW9uLm1hcCBib29sIG9uY2UgaW5cbiAgbGV0IHBhc3NpdmUgPSBPcHRpb24ubWFwIGJvb2wgcGFzc2l2ZSBpblxuICBpZ25vcmUgQEBcbiAgRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBlbHQgKERvbS5FdmVudC5tYWtlIGV2KVxuICAgIChEb20uaGFuZGxlciAoZnVuIGUgLT4gYm9vbCAoZiBlKSkpXG5cbm1vZHVsZSBFbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oY2xhc3NlcyA9IFtdKSA/KHN0eWxlcyA9IFtdKSA/KGxpc3RlbiA9IFtdKSA/KGF0dHIgPSBbXSkgP3RleHQgZlxuICAgICAgY2hpbGRyZW4gPVxuICAgIGxldCBlbHQgPSBmIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgTGlzdC5pdGVyIChmdW4gKGV2LCBmKSAtPiBhZGRMaXN0ZW5lciBlbHQgZXYgZikgbGlzdGVuIDtcbiAgICBhZGRDbGFzc2VzIGVsdCBjbGFzc2VzIDtcbiAgICBzZXRDU1MgZWx0IHN0eWxlcyA7XG4gICAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IHNldEF0dHJpYnV0ZSBlbHQgayB2KSBhdHRyIDtcbiAgICBzZXRUZXh0IGVsdCB0ZXh0IDtcbiAgICBhcHBlbmRDaGlsZHJlbiBlbHQgY2hpbGRyZW4gO1xuICAgIGVsdFxuXG4gIGxldCBidXR0b24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUJ1dHRvbiBjaGlsZHJlblxuXG4gIGxldCBkaXYgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZURpdiBjaGlsZHJlblxuXG4gIGxldCBhID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVBIGNoaWxkcmVuXG5cbiAgbGV0IHNwYW4gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNwYW4gY2hpbGRyZW5cblxuICBsZXQgZm9ybSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlRm9ybSBjaGlsZHJlblxuXG4gIGxldCBvcHRpb24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZU9wdGlvbiBjaGlsZHJlblxuXG4gIGxldCBzZWxlY3QgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNlbGVjdCBjaGlsZHJlblxuXG4gIGxldCBpbnB1dCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgKCkgPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSW5wdXQgW11cblxuICBsZXQgaWZyYW1lID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJZnJhbWUgY2hpbGRyZW5cblxuICBsZXQgbGFiZWwgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUxhYmVsIGNoaWxkcmVuXG5cbiAgbGV0IHVsID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVVbCBjaGlsZHJlblxuXG4gIGxldCBsaSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlTGkgY2hpbGRyZW5cblxuICBsZXQgaW1nID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJbWcgY2hpbGRyZW5cblxuICBsZXQgc2NyaXB0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTY3JpcHQgY2hpbGRyZW5cblxuICBsZXQgdGFibGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRhYmxlIGNoaWxkcmVuXG5cbiAgbGV0IHRyID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUciBjaGlsZHJlblxuXG4gIGxldCB0aCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGggY2hpbGRyZW5cblxuICBsZXQgdGQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRkIGNoaWxkcmVuXG5lbmRcblxubGV0IGVuY2Fwc2UgcyA9IFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiXG5cbmxldCBzdHJpbmdzX3RvX2FycmF5IGwgPSBcIltcIiBeIFN0cmluZy5jb25jYXQgXCIsXCIgbCBeIFwiXVwiXG5cbmxldCBzdHJpbmdzX3RvX29iamVjdCBsID1cbiAgbGV0IHMgPVxuICAgIFwie1wiXG4gICAgXiBTdHJpbmcuY29uY2F0IFwiLFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBlbmNhcHNlIGsgXiBcIjpcIiBeIHYpIGwpXG4gICAgXiBcIn1cIlxuICBpblxuICB0cnkgX0pTT04jI3BhcnNlIChzdHJpbmcgcylcbiAgd2l0aCBfIC0+XG4gICAgbG9nX3N0ciAoXCJjYW5ub3QgcGFyc2UganNvbiBcIiBeIHMpIDtcbiAgICBVbnNhZmUub2JqIFt8fF1cbiIsIm9wZW4gRXpqc19taW5cblxubW9kdWxlIFR5cGVzID0gRXpqc19pZGJfdHlwZXNcbm9wZW4gVHlwZXNcblxudHlwZSBtb2RlID0gUkVBRE9OTFkgfCBSRUFEV1JJVEUgfCBWRVJTSU9OQ0hBTkdFXG50eXBlIGRpcmVjdGlvbiA9IE5FWFQgfCBQUkVWIHwgTkVYVFVOSVFVRSB8IFBSRVZVTklRVUVcblxudHlwZSBkYl9vcHRpb25zID0geyBrZXlfcGF0aCA6IHN0cmluZyBvcHRpb247IGF1dG9faW5jcmVtZW50IDogYm9vbCBvcHRpb24gfVxuXG50eXBlIGRiX3VwZ3JhZGUgPSB7IG9sZF92ZXJzaW9uIDogaW50OyBuZXdfdmVyc2lvbiA6IGludCB9XG5cbnR5cGUgaW5kZXhfb3B0aW9ucyA9IHsgdW5pcXVlIDogYm9vbCBvcHRpb247IG11bHRpX2VudHJ5IDogYm9vbCBvcHRpb247IGxvY2FsZSA6IGJvb2wgb3B0aW9uIH1cblxubW9kdWxlIHR5cGUgVHJfc2lnID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGpzXG4gIHZhbCB0b19qcyA6IHQgLT4ganNcbiAgdmFsIG9mX2pzIDoganMgLT4gdFxuZW5kXG5cbmxldCBzdHJfb2ZfbW9kZSA9IGZ1bmN0aW9uXG4gIHwgUkVBRE9OTFkgLT4gc3RyaW5nIFwicmVhZG9ubHlcIlxuICB8IFJFQURXUklURSAtPiBzdHJpbmcgXCJyZWFkd3JpdGVcIlxuICB8IFZFUlNJT05DSEFOR0UgLT4gc3RyaW5nIFwidmVyc2lvbmNoYW5nZVwiXG5cbmxldCBzdHJfb2ZfZGlyZWN0aW9uID0gZnVuY3Rpb25cbiAgfCBORVhUIC0+IHN0cmluZyBcIm5leHRcIlxuICB8IFBSRVYgLT4gc3RyaW5nIFwicHJldlwiXG4gIHwgTkVYVFVOSVFVRSAtPiBzdHJpbmcgXCJuZXh0dW5pcXVlXCJcbiAgfCBQUkVWVU5JUVVFIC0+IHN0cmluZyBcInByZXZ1bmlxdWVcIlxuXG5sZXQgaURCS2V5UmFuZ2UgOiBVbnNhZmUuYW55IGlEQktleVJhbmdlIHQgPSBVbnNhZmUudmFyaWFibGUgXCJJREJLZXlSYW5nZVwiXG5sZXQgaW5kZXhlZERCIDoganNfc3RyaW5nIHQgaURCRmFjdG9yeSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwid2luZG93LmluZGV4ZWREQlwiXG5cbmxldCByZXN1bHQgciA9IHIjIy5yZXN1bHRcblxubGV0IHdyYXAgP2Vycm9yID9jYWxsYmFjayByID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgICByIyMub25zdWNjZXNzIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgKHJlc3VsdCByKSkpIGNhbGxiYWNrO1xuICAgIHIjIy5vbmVycm9yIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgcikpIGVycm9yXG4gIHdpdGggZXhuIC0+XG4gICAgbWF0Y2ggZXJyb3Igd2l0aCBOb25lIC0+IHJhaXNlIGV4biB8IFNvbWUgZiAtPiBjYXRjaF9leG4gKGZ1biBlIC0+IGYgKFVuc2FmZS5jb2VyY2UgZSkpIGV4blxuXG5sZXQgd3JhcGYgP2Vycm9yID9jYWxsYmFjayBnIHIgPVxuICB0cnlcbiAgICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICAgIHIjIy5vbnN1Y2Nlc3MgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiAoZyBAQCByZXN1bHQgcikpKSBjYWxsYmFjaztcbiAgICByIyMub25lcnJvciA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIHIpKSBlcnJvclxuICB3aXRoIGV4biAtPlxuICAgIG1hdGNoIGVycm9yIHdpdGggTm9uZSAtPiByYWlzZSBleG4gfCBTb21lIGYgLT4gY2F0Y2hfZXhuIChmdW4gZSAtPiBmIChVbnNhZmUuY29lcmNlIGUpKSBleG5cblxubGV0IGRiX3VwZ3JhZGVfZXZlbnQgKGUgOiBpREJWZXJzaW9uQ2hhbmdlRXZlbnQgdCkgPSB7XG4gIG9sZF92ZXJzaW9uID0gZSMjLm9sZFZlcnNpb247XG4gIG5ld192ZXJzaW9uID0gZSMjLm5ld1ZlcnNpb247XG59XG5cbmxldCBvcGVuREIgP3VwZ3JhZGUgP2Vycm9yID92ZXJzaW9uIG5hbWUgY2FsbGJhY2sgPVxuICBsZXQgaW5kZXhlZERCIDogXyBpREJGYWN0b3J5IHQgPSBVbnNhZmUudmFyaWFibGUgXCJ3aW5kb3cuaW5kZXhlZERCXCIgaW5cbiAgbGV0IHIgPSBsYXp5IChpbmRleGVkREIjI19vcGVuIChzdHJpbmcgbmFtZSkgKEFPcHQub3B0aW9uIHZlcnNpb24pKSBpblxuICB3cmFwID9lcnJvciB+Y2FsbGJhY2sgcjtcbiAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgciMjLm9udXBncmFkZW5lZWRlZCA6PVxuICAgIEFPcHQuYW9wdCAoZnVuIHUgLT4gd3JhcF9jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgbGV0IHYgPSBkYl91cGdyYWRlX2V2ZW50IGUgaW5cbiAgICAgICAgbGV0IGRiID0gcmVzdWx0IHIgaW5cbiAgICAgICAgdSBkYiB2KSkgdXBncmFkZVxuXG5sZXQgdHJhbnNhY3Rpb24gciA6IGlEQlRyYW5zYWN0aW9uIHQgPSByIyMudHJhbnNhY3Rpb25cblxubGV0IGNyZWF0ZV9kYl9vcHRpb25zIHtrZXlfcGF0aDsgYXV0b19pbmNyZW1lbnR9IDogY3JlYXRlX2RiX29wdGlvbnMgdCA9IG9iamVjdCVqc1xuICB2YWwga2V5UGF0aCA9IEFPcHQuYW9wdCBzdHJpbmcga2V5X3BhdGhcbiAgdmFsIGF1dG9JbmNyZW1lbnQgPSBBT3B0LmFvcHQgYm9vbCBhdXRvX2luY3JlbWVudFxuZW5kXG5cbmxldCBjcmVhdGVfc3RvcmUgP29wdGlvbnMgKGRiIDogaURCRGF0YWJhc2UgdCkgbmFtZSA9XG4gIFVuc2FmZS5jb2VyY2UgQEBcbiAgZGIjI2NyZWF0ZU9iamVjdFN0b3JlIChzdHJpbmcgbmFtZSkgKEFPcHQuYW9wdCBjcmVhdGVfZGJfb3B0aW9ucyBvcHRpb25zKVxuXG5sZXQgZ2V0X3N0b3JlID9tb2RlIChkYiA6IGlEQkRhdGFiYXNlIHQpIG5hbWUgOiAoXywgXykgaURCT2JqZWN0U3RvcmUgdCA9XG4gIGxldCB0ciA9IGRiIyN0cmFuc2FjdGlvbiAoYXJyYXkgW3wgc3RyaW5nIG5hbWUgfF0pIChBT3B0LmFvcHQgc3RyX29mX21vZGUgbW9kZSkgaW5cbiAgVW5zYWZlLmNvZXJjZSBAQCB0ciMjb2JqZWN0U3RvcmUgKHN0cmluZyBuYW1lKVxuXG5tb2R1bGUgU3RvcmUoSyA6IFRyX3NpZykoRCA6IFRyX3NpZykgPSBzdHJ1Y3RcblxuICB0eXBlIHN0b3JlID0gKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHRcbiAgdHlwZSBrZXlzID0gSyBvZiBLLnQgfCBLUiBvZiBLLmpzIGlEQktleVJhbmdlIHRcblxuICBsZXQgY3JlYXRlID9vcHRpb25zIGRiIG5hbWUgOiBzdG9yZSA9XG4gICAgY3JlYXRlX3N0b3JlID9vcHRpb25zIGRiIG5hbWVcblxuICBsZXQgc3RvcmUgP21vZGUgZGIgbmFtZSA6IHN0b3JlID1cbiAgICBnZXRfc3RvcmUgP21vZGUgZGIgbmFtZVxuXG4gIGxldCBhZGQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXBmID9jYWxsYmFjayA/ZXJyb3IgSy5vZl9qcyBAQCBsYXp5IChzdCMjYWRkIChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCBwdXQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXAgP2NhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjcHV0IChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCByYW5nZSA/b2xvd2VyID9vdXBwZXIgP2xvd2VyID91cHBlciAoKSA9XG4gICAgbGV0IGlEQktleVJhbmdlIDogSy5qcyBpREJLZXlSYW5nZSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwiSURCS2V5UmFuZ2VcIiBpblxuICAgIG1hdGNoIGxvd2VyLCB1cHBlciB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBsb3dlciwgTm9uZSAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyNsb3dlckJvdW5kIChLLnRvX2pzIGxvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSlcbiAgICB8IE5vbmUsIFNvbWUgdXBwZXIgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjdXBwZXJCb3VuZCAoSy50b19qcyB1cHBlcikgKEFPcHQuYW9wdCBib29sIG91cHBlcikpXG4gICAgfCBTb21lIGxvd2VyLCBTb21lIHVwcGVyIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI2JvdW5kXG4gICAgICAgICAgICAoSy50b19qcyBsb3dlcikgKEsudG9fanMgdXBwZXIpXG4gICAgICAgICAgICAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb3VwcGVyKSlcblxuICBsZXQgY291bnQgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpIChjYWxsYmFjayA6IGludCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCBBT3B0LnVuZGVmaW5lZClcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCAoQU9wdC5kZWYgKEsudG9fanMgaykpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudF9yYW5nZSAoQU9wdC5kZWYgcikpXG5cbiAgbGV0IGdldCA/ZXJyb3IgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEQudCBvcHRpb24gLT4gdW5pdCkgayA9XG4gICAgbGV0IG9mX2pzIGpzID0gbWF0Y2ggQU9wdC50b19vcHRpb24ganMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBqcyAtPiBTb21lIChELm9mX2pzIGpzKSBpblxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgSyBrZXkgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0IChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGdldF9hbGwgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBELnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbCBBT3B0LnVuZGVmaW5lZCAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGdldF9rZXkgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgb3B0aW9uIC0+IHVuaXQpIGsgPVxuICAgIGxldCBvZl9qcyBqcyA9IG1hdGNoIEFPcHQudG9fb3B0aW9uIGpzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUganMgLT4gU29tZSAoSy5vZl9qcyBqcykgaW5cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEsga2V5IC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldEtleSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0S2V5X3JhbmdlIHJhbmdlKVxuXG4gIGxldCBnZXRfYWxsX2tleXMgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgQU9wdC51bmRlZmluZWQgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXNfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGRlbGV0ZSA/Y2FsbGJhY2sgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSA9IGZ1bmN0aW9uXG4gICAgfCBLIGtleSAtPiB3cmFwID9lcnJvciA/Y2FsbGJhY2sgQEAgbGF6eSAoc3QjI2RlbGV0ZSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIEBAIGxhenkgKHN0IyNkZWxldGVfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGl0ZXIgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IEQudCAtPiB1bml0KSA9XG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGYgayAoRC5vZl9qcyBjIyMudmFsdWUpO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiBELnQgLT4gJ2EgLT4gJ2EpIChzdGFydCA6ICdhKSAoY2FsbGJhY2sgOiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGFjYyA9IHJlZiBzdGFydCBpblxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNhbGxiYWNrICFhY2NcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGFjYyA6PSBmIGsgKEQub2ZfanMgYyMjLnZhbHVlKSAhYWNjO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBpdGVyX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IHVuaXQpID1cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgZiBrO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+ICdhIC0+ICdhKSAoc3RhcnQgOiAnYSkgKGNhbGxiYWNrIDogJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBhY2MgPSByZWYgc3RhcnQgaW5cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjYWxsYmFjayAhYWNjXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBhY2MgOj0gZiBrICFhY2M7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGNsZWFyID9lcnJvciA/Y2FsbGJhY2sgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpID1cbiAgICB3cmFwZiA/Y2FsbGJhY2sgP2Vycm9yIChmdW4gXyAtPiAoKSkgQEAgbGF6eSBzdCMjY2xlYXJcblxuICBsZXQgY3JlYXRlX2luZGV4X29wdGlvbnMge3VuaXF1ZTsgbXVsdGlfZW50cnk7IGxvY2FsZX0gOiBjcmVhdGVfaW5kZXhfb3B0aW9ucyB0ID0gb2JqZWN0JWpzXG4gICAgdmFsIHVuaXF1ZSA9IEFPcHQuYW9wdCBib29sIHVuaXF1ZVxuICAgIHZhbCBtdWx0aUVudHJ5ID0gQU9wdC5hb3B0IGJvb2wgbXVsdGlfZW50cnlcbiAgICB2YWwgbG9jYWxlID0gQU9wdC5hb3B0IGJvb2wgbG9jYWxlXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVfaW5kZXggP29wdGlvbnMgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUga2V5X3BhdGggPVxuICAgIGxldCBvcHRpb25zID0gQU9wdC5hb3B0IGNyZWF0ZV9pbmRleF9vcHRpb25zIG9wdGlvbnMgaW5cbiAgICBzdCMjY3JlYXRlSW5kZXggKHN0cmluZyBuYW1lKSAoc3RyaW5nIGtleV9wYXRoKSBvcHRpb25zXG5cbiAgbGV0IGRlbGV0ZV9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgaWdub3JlIEBAIHN0IyNkZWxldGVJbmRleCAoc3RyaW5nIG5hbWUpXG5cbiAgbGV0IGdldF9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgc3QjI2luZGV4IChzdHJpbmcgbmFtZSlcblxuZW5kXG5cbm1vZHVsZSBOb1RyKFMgOiBzaWcgdHlwZSB0IGVuZCkgOiBUcl9zaWcgd2l0aCB0eXBlIHQgPSBTLnQgYW5kIHR5cGUganMgPSBTLnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUy50XG4gIHR5cGUganMgPSBTLnRcbiAgbGV0IHRvX2pzIHggPSB4XG4gIGxldCBvZl9qcyB4ID0geFxuZW5kXG5cbm1vZHVsZSBJbnRUciA6IChUcl9zaWcgd2l0aCB0eXBlIGpzID0gaW50IGFuZCB0eXBlIHQgPSBpbnQpID0gTm9UcihzdHJ1Y3QgdHlwZSB0ID0gaW50IGVuZClcblxubW9kdWxlIFN0cmluZ1RyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGpzX3N0cmluZyB0IGFuZCB0eXBlIHQgPSBzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IGpzX3N0cmluZyB0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdG9fanMgeCA9IHN0cmluZyB4XG4gIGxldCBvZl9qcyB4ID0gdG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgTnVtYmVyVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0gbnVtYmVyIHQgYW5kIHR5cGUgdCA9IGZsb2F0ID0gc3RydWN0XG4gIHR5cGUganMgPSBudW1iZXIgdFxuICB0eXBlIHQgPSBmbG9hdFxuICBsZXQgdG9fanMgeCA9IG51bWJlcl9vZl9mbG9hdCB4XG4gIGxldCBvZl9qcyB4ID0gZmxvYXRfb2ZfbnVtYmVyIHhcbmVuZFxuXG5tb2R1bGUgRGF0ZVRyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGRhdGUgdCBhbmQgdHlwZSB0ID0gc3RyaW5nID0gc3RydWN0XG4gIHR5cGUganMgPSBkYXRlIHRcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0b19qcyB4ID0gbmV3JWpzIGRhdGVfZnJvbVRpbWVWYWx1ZSAoZGF0ZSMjcGFyc2UgKHN0cmluZyB4KSlcbiAgbGV0IG9mX2pzIHggPSB0b19zdHJpbmcgeCMjdG9Mb2NhbGVTdHJpbmdcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPSBTdGRsaWIuaW5fY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19pblxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZGluID0gU3RkbGliLnN0ZGluXG5cbmxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSBmaWxlID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3Jkb25seSBdIGluXG4gIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgU3RkbGliLm9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcbjs7XG5cbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGUgfmYgPSBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5IGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG5cbmxldCBtYXlfZW9mIGYgPVxuICB0cnkgU29tZSAoZiAoKSkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IE5vbmVcbjs7XG5cbmxldCBpbnB1dCB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLmlucHV0IHQgYnVmIHBvcyBsZW5cbmxldCByZWFsbHlfaW5wdXQgdCB+YnVmIH5wb3MgfmxlbiA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIucmVhbGx5X2lucHV0IHQgYnVmIHBvcyBsZW4pXG5sZXQgcmVhbGx5X2lucHV0X2V4biB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgaW5wdXRfYnl0ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9ieXRlIHQpXG5sZXQgaW5wdXRfY2hhciB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9jaGFyIHQpXG5sZXQgaW5wdXRfYmluYXJ5X2ludCB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9iaW5hcnlfaW50IHQpXG5sZXQgdW5zYWZlX2lucHV0X3ZhbHVlIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X3ZhbHVlIHQpXG5sZXQgaW5wdXRfYnVmZmVyIHQgYnVmIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWYgdCBsZW4pXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9pblxuXG5sZXQgaW5wdXRfYWxsIHQgPVxuICAoKiBXZSB1c2UgNjU1MzYgYmVjYXVzZSB0aGF0IGlzIHRoZSBzaXplIG9mIE9DYW1sJ3MgSU8gYnVmZmVycy4gKilcbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpblxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBjaHVua19zaXplIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgU3RkbGliLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWZmZXIgdCBjaHVua19zaXplO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgdHJ5IGxvb3AgKCkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBidWZmZXJcbjs7XG5cbmxldCB0cmltIH5maXhfd2luX2VvbCBsaW5lID1cbiAgaWYgZml4X3dpbl9lb2xcbiAgdGhlbiAoXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggbGluZSBpblxuICAgIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAoU3RyaW5nLmdldCBsaW5lIChsZW4gLSAxKSkgJ1xccidcbiAgICB0aGVuIFN0cmluZy5zdWIgbGluZSB+cG9zOjAgfmxlbjoobGVuIC0gMSlcbiAgICBlbHNlIGxpbmUpXG4gIGVsc2UgbGluZVxuOztcblxubGV0IGlucHV0X2xpbmUgPyhmaXhfd2luX2VvbCA9IHRydWUpIHQgPVxuICBtYXRjaCBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X2xpbmUgdCkgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgbGluZSAtPiBTb21lICh0cmltIH5maXhfd2luX2VvbCBsaW5lKVxuOztcblxubGV0IGlucHV0X2xpbmVfZXhuID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbGV0IGxpbmUgPSBTdGRsaWIuaW5wdXRfbGluZSB0IGluXG4gIHRyaW0gfmZpeF93aW5fZW9sIGxpbmVcbjs7XG5cbmxldCBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIGFjID1cbiAgICBtYXRjaCBpbnB1dF9saW5lID9maXhfd2luX2VvbCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNcbiAgICB8IFNvbWUgbGluZSAtPiBsb29wIChmIGFjIGxpbmUpXG4gIGluXG4gIGxvb3AgaW5pdFxuOztcblxubGV0IGlucHV0X2xpbmVzID9maXhfd2luX2VvbCB0ID1cbiAgTGlzdC5yZXYgKGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQ6W10gfmY6KGZ1biBsaW5lcyBsaW5lIC0+IGxpbmUgOjogbGluZXMpKVxuOztcblxubGV0IGl0ZXJfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmYgPVxuICBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OigpIH5mOihmdW4gKCkgbGluZSAtPiBmIGxpbmUpXG47O1xuXG5sZXQgcmVhZF9saW5lcyA/Zml4X3dpbl9lb2wgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6KGlucHV0X2xpbmVzID9maXhfd2luX2VvbClcbmxldCByZWFkX2FsbCBmbmFtZSA9IHdpdGhfZmlsZSBmbmFtZSB+ZjppbnB1dF9hbGxcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gU3RkbGliLm91dF9jaGFubmVsXG5cbmxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgc3Rkb3V0ID0gU3RkbGliLnN0ZG91dFxubGV0IHN0ZGVyciA9IFN0ZGxpYi5zdGRlcnJcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgaWYgcGh5c19lcXVhbCB0IHN0ZGVyclxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRlcnI+XCJcbiAgZWxzZSBpZiBwaHlzX2VxdWFsIHQgc3Rkb3V0XG4gIHRoZW4gU2V4cC5BdG9tIFwiPHN0ZG91dD5cIlxuICBlbHNlIFNleHAuQXRvbSBcIjxPdXRfY2hhbm5lbC50PlwiXG47O1xuXG50eXBlICdhIHdpdGhfY3JlYXRlX2FyZ3MgPVxuICA/YmluYXJ5OmJvb2wgLT4gP2FwcGVuZDpib29sIC0+ID9mYWlsX2lmX2V4aXN0czpib29sIC0+ID9wZXJtOmludCAtPiAnYVxuXG5sZXQgY3JlYXRlXG4gICAgICA/KGJpbmFyeSA9IHRydWUpXG4gICAgICA/KGFwcGVuZCA9IGZhbHNlKVxuICAgICAgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpXG4gICAgICBmaWxlXG4gID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICBTdGRsaWIub3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0gZmlsZVxuOztcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfb3V0XG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub19lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgb3V0cHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBTdGRsaWIub3V0cHV0IHQgYnVmIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIHQgfmJ1ZiB+cG9zIH5sZW4gPSBTdGRsaWIub3V0cHV0X3N1YnN0cmluZyB0IGJ1ZiBwb3MgbGVuXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dF9jaGFyID0gU3RkbGliLm91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X2J5dGUgPSBTdGRsaWIub3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IFN0ZGxpYi5vdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF9idWZmZXIgPSBTdGRsaWIuQnVmZmVyLm91dHB1dF9idWZmZXJcbmxldCBvdXRwdXRfdmFsdWUgPSBTdGRsaWIub3V0cHV0X3ZhbHVlXG5sZXQgbmV3bGluZSB0ID0gb3V0cHV0X3N0cmluZyB0IFwiXFxuXCJcblxubGV0IG91dHB1dF9saW5lcyB0IGxpbmVzID1cbiAgTGlzdC5pdGVyIGxpbmVzIH5mOihmdW4gbGluZSAtPlxuICAgIG91dHB1dF9zdHJpbmcgdCBsaW5lO1xuICAgIG5ld2xpbmUgdClcbjs7XG5cbmxldCBwcmludGYgPSBTdGRsaWIuUHJpbnRmLnByaW50ZlxubGV0IGVwcmludGYgPSBTdGRsaWIuUHJpbnRmLmVwcmludGZcbmxldCBmcHJpbnRmID0gU3RkbGliLlByaW50Zi5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBTdGRsaWIuUHJpbnRmLmtmcHJpbnRmXG5sZXQgcHJpbnRfc3RyaW5nID0gU3RkbGliLnByaW50X3N0cmluZ1xubGV0IHByaW50X2VuZGxpbmUgPSBTdGRsaWIucHJpbnRfZW5kbGluZVxubGV0IHByZXJyX2VuZGxpbmUgPSBTdGRsaWIucHJlcnJfZW5kbGluZVxuXG5sZXQgcHJpbnRfcyA/bWFjaCBzZXhwID1cbiAgcHJpbnRfZW5kbGluZVxuICAgIChtYXRjaCBtYWNoIHdpdGhcbiAgICAgfCBTb21lICgpIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cFxuICAgICB8IE5vbmUgLT4gU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG47O1xuXG5sZXQgZXByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByZXJyX2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG47O1xuXG5sZXQgd3JpdGVfbGluZXMgZmlsZSBsaW5lcyA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfbGluZXMgdCBsaW5lcylcbmxldCB3cml0ZV9hbGwgZmlsZSB+ZGF0YSA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbiIsIm1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG5tb2R1bGUgQ29udl9lcnJvciA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvclxubW9kdWxlIFNleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiBCYXNlXG5cbnR5cGUgJ2EgdGVzdF9wcmVkXG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ICgnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9lcVxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiA/ZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gIC0+ICdhXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxudHlwZSAnYSB0ZXN0X3Jlc3VsdFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiA/ZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gIC0+IGV4cGVjdDonYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbmV4Y2VwdGlvbiBFIG9mIHN0cmluZyAqIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnIGJvZHkgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgbWF0Y2ggbWVzc2FnZSB3aXRoXG4gICAgfCBOb25lIC0+IHRhZ1xuICAgIHwgU29tZSBzIC0+IHMgXiBcIjogXCIgXiB0YWdcbiAgaW5cbiAgbGV0IHNleHAgPVxuICAgIFNleHAuTGlzdCAoXG4gICAgICBib2R5XG4gICAgICBAIFsgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiTG9jXCI7IFNleHAuQXRvbSBwb3MgXSBdXG4gICAgICBAIGJlZ2luIG1hdGNoIGhlcmUgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgXyAtPiBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIlN0YWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgWyVzZXhwX29mOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IGxpc3RdIGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gXVxuICAgICAgZW5kXG4gICAgKVxuICBpblxuICAoKiBIZXJlIGFuZCBpbiBvdGhlciBwbGFjZXMgd2UgcmV0dXJuIGV4Y2VwdGlvbnMsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHJhaXNpbmcsIGFuZFxuICAgICBpbnN0ZWFkIHJhaXNlIGF0IHRoZSBsYXRlc3QgbW9tZW50IHBvc3NpYmxlLCBzbyBiYWNrdHJhY2UgZG9uJ3QgaW5jbHVkZSBub2lzZSBmcm9tXG4gICAgIHRoZXNlIGZ1bmN0aW9ucyB0aGF0IGNvbnN0cnVjdCBleGNlcHRpb25zLiAqKVxuICBFIChtZXNzYWdlLCBzZXhwKVxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9wcmVkIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnNleHBpZmllciB0ID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwicHJlZGljYXRlIGZhaWxlZFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcIlZhbHVlXCI7IHNleHBpZmllciB0XVxuICBdXG5cbmxldCB0ZXN0X3ByZWQgfnBvcyB+c2V4cGlmaWVyIH5oZXJlID9tZXNzYWdlIHByZWRpY2F0ZSB0ID1cbiAgaWYgbm90IChwcmVkaWNhdGUgdCkgdGhlblxuICAgIHJhaXNlIChleG5fdGVzdF9wcmVkIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnNleHBpZmllciB0KVxuXG5sZXQgcl9kaWZmIDogKGZyb21fOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHVuaXQpIG9wdGlvbiByZWYgPSByZWYgICBOb25lXG5sZXQgc2V0X2RpZmZfZnVuY3Rpb24gZiA9IHJfZGlmZiA6PSBmXG5cbmxldCBbQGNvbGRdIHRlc3RfcmVzdWx0X29yX2VxX2ZhaWxlZCB+c2V4cGlmaWVyIH5leHBlY3QgfmdvdCA9XG4gIGxldCBnb3QgPSBzZXhwaWZpZXIgZ290IGluXG4gIGxldCBleHBlY3QgPSBzZXhwaWZpZXIgZXhwZWN0IGluXG4gIGJlZ2luIG1hdGNoICFyX2RpZmYgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRpZmYgLT5cbiAgICBsZXQgZnJvbV8gPSBTZXhwLnRvX3N0cmluZ19odW0gZXhwZWN0IGluXG4gICAgbGV0IHRvXyAgID0gU2V4cC50b19zdHJpbmdfaHVtIGdvdCBpblxuICAgIGRpZmYgfmZyb21fIH50b19cbiAgZW5kO1xuICBgRmFpbCAoZXhwZWN0LCBnb3QpXG5cbmxldCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgcGFzcyA9XG4gICAgbWF0Y2ggZXF1YWwgd2l0aFxuICAgIHwgTm9uZSAtPiBjb21wYXJhdG9yIGdvdCBleHBlY3QgPSAwXG4gICAgfCBTb21lIGYgLT4gZiBnb3QgZXhwZWN0XG4gIGluXG4gIGlmIHBhc3NcbiAgdGhlbiBgUGFzc1xuICBlbHNlIHRlc3RfcmVzdWx0X29yX2VxX2ZhaWxlZCB+c2V4cGlmaWVyIH5leHBlY3QgfmdvdFxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJjb21wYXJpc29uIGZhaWxlZFwiIFtcbiAgICB0MTtcbiAgICBTZXhwLkF0b20gXCJ2c1wiO1xuICAgIHQyO1xuICBdXG5cbmxldCB0ZXN0X2VxIH5wb3MgfnNleHBpZmllciB+Y29tcGFyYXRvciB+aGVyZSA/bWVzc2FnZSA/ZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0OnQxIH5nb3Q6dDIgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKHQxLCB0MikgLT4gcmFpc2UgKGV4bl90ZXN0X2VxIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnQxIH50MilcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290ID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiZ290IHVuZXhwZWN0ZWQgcmVzdWx0XCIgW1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiZXhwZWN0ZWRcIjsgZXhwZWN0XTtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImdvdFwiOyBnb3RdO1xuICBdXG5cbmxldFtAd2FybmluZyBcIi0xNlwiXSB0ZXN0X3Jlc3VsdCB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIH5leHBlY3QgfmdvdCA9XG4gIG1hdGNoIHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3QgfmdvdCB3aXRoXG4gIHwgYFBhc3MgLT4gKClcbiAgfCBgRmFpbCAoZXhwZWN0LCBnb3QpIC0+IHJhaXNlIChleG5fdGVzdF9yZXN1bHQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+ZXhwZWN0IH5nb3QpXG4iLCJsZXQgdW5pcXVlX2lkID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG5cbigqIFVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQgbGlibmFtZSBpbiBzdWNoIGEgd2F5IHRoYXQgZm9yIGZ1bmN0b3IgYXBwbGljYXRpb25zLCBpdCBpc1xuICAgdGhlIGNhbGxpbmcgbGlicmFyaWVzIG5hbWUgdGhhdCBnZXRzIHJlZ2lzdGVyZWQuICopXG5tb2R1bGUgQ3VycmVudF9saWJuYW1lID0gc3RydWN0XG4gIGxldCBudWxsID0gXCI8dW5rbm93bj5cIlxuICBsZXQgbGlibmFtZV9yZWYgPSByZWYgbnVsbFxuICBsZXQgc2V0IHN0ciA9IGxpYm5hbWVfcmVmIDo9IHN0clxuICBsZXQgdW5zZXQgKCkgPSBsaWJuYW1lX3JlZiA6PSBudWxsXG4gIGxldCBnZXQgKCkgPSAhbGlibmFtZV9yZWZcbmVuZFxuXG5tb2R1bGUgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sgPSBzdHJ1Y3RcbiAgbGV0IHQgPSByZWYgW11cbiAgbGV0IHB1c2ggcyA9IHQgOj0gcyA6OiAhdFxuICBsZXQgcG9wX2V4biAoKSA9IHQgOj0gTGlzdC50bCAhdFxuXG4gIGxldCB0b19uYW1lICgpID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBtcyAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLlwiIChMaXN0LnJldiBtcykpXG4gIDs7XG5lbmRcblxuKCogVGhpcyBpcyB0aGUgbWFpbiBkYXRhIHN0cnVjdHVyZSBvZiB0aGlzIG1vZHVsZS4gQW4gW0VudHJ5LnRdIHJlcHJlc2VudHMgYSBiZW5jaG1hcmtcbiAgIGFsb25nIHdpdGggc29tZSBtZXRhZGF0YSBhYm91dCBpcyBwb3NpdGlvbiwgYXJndW1lbnRzIGV0Yy4gKilcbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICB0eXBlICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgPVxuICAgIHsgYXJnX25hbWUgOiBzdHJpbmdcbiAgICA7IHBhcmFtcyA6IChzdHJpbmcgKiAncGFyYW0pIGxpc3RcbiAgICA7IHRodW5rIDogJ3BhcmFtIC0+IHVuaXQgLT4gJ2FcbiAgICB9XG5cbiAgdHlwZSB0ZXN0X3NwZWMgPVxuICAgIHwgUmVndWxhcl90aHVuayA6IChbIGBpbml0IF0gLT4gdW5pdCAtPiAnYSkgLT4gdGVzdF9zcGVjXG4gICAgfCBQYXJhbWV0ZXJpc2VkX3RodW5rIDogKCdwYXJhbSwgJ2EpIHBhcmFtZXRlcmlzZWRfc3BlYyAtPiB0ZXN0X3NwZWNcblxuICB0eXBlIHQgPVxuICAgIHsgdW5pcXVlX2lkIDogaW50XG4gICAgOyBjb2RlIDogc3RyaW5nXG4gICAgOyB0eXBlX2NvbnZfcGF0aCA6IHN0cmluZ1xuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgICA7IGxpbmUgOiBpbnRcbiAgICA7IHN0YXJ0cG9zIDogaW50XG4gICAgOyBlbmRwb3MgOiBpbnRcbiAgICA7IHRlc3Rfc3BlYyA6IHRlc3Rfc3BlY1xuICAgIDsgYmVuY2hfbW9kdWxlX25hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZSB0MS51bmlxdWVfaWQgdDIudW5pcXVlX2lkXG5cbiAgKCogRXh0cmFjdHMgbW9kdWxlIG5hbWUgZnJvbSBbXCJmaWxlbmFtZS5tbC5Nb2R1bGVcIl0sIHdoaWNoIGlzIHRoZSBmb3JtYXQgb2YgW2V4dF9uYW1lXVxuICAgICBhcyBzZXQgYnkgW3R5cGVjb252XS4gKilcbiAgbGV0IGdldF9tb2R1bGVfbmFtZV9vcHQgdCA9XG4gICAgbGV0IHN0ciA9IHQudHlwZV9jb252X3BhdGggaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpICsgNCA8PSBsZW5cbiAgICAgIHRoZW5cbiAgICAgICAgaWYgU3RyaW5nLnN1YiBzdHIgaSA0ID0gXCIubWwuXCJcbiAgICAgICAgdGhlbiBTb21lIChTdHJpbmcuc3ViIHN0ciAoaSArIDQpIChsZW4gLSBpIC0gNCkpXG4gICAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCB3aXRoX3Rlc3Rfc3BlYyB0IHRlc3Rfc3BlYyA9IHsgdCB3aXRoIHRlc3Rfc3BlYyB9XG5lbmRcblxuKCogSW5zcGVjdCBzeXN0ZW0gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGRlY2lkZSBpZiBiZW5jaG1hcmtzIGFyZSBiZWluZyBydW4uIFRoaXMgaXNcbiAgIGNhbGxlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIFtwYV9iZW5jaF0gc3ludGF4IHRvIGRlY2lkZSBpZiB0aGUgZ2xvYmFsIGhhc2h0YWJsZVxuICAgc2hvdWxkIGJlIHBvcHVsYXRlZC4gKilcbmxldCBhZGRfZW52aXJvbm1lbnRfdmFyID1cbiAgbGV0IHYgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQkVOQ0hNQVJLU19SVU5ORVJcIiB3aXRoXG4gICAgfCBOb3RfZm91bmQgLT4gXCJcIlxuICBpblxuICB2ID0gXCJUUlVFXCJcbjs7XG5cbigqIFRoaXMgaGFzaHRhYmxlIGNvbnRhaW5zIGFsbCB0aGUgYmVuY2htYXJrcyBmcm9tIGFsbCB0aGUgb2YgbGlicmFyaWVzIHRoYXQgaGF2ZSBiZWVuXG4gICBsb2FkZWQuIEF0IHRoZSB0aW1lIHRoZSBiZW5jaG1hcmtzIGFyZSByZWdpc3RlcmluZyB0aGVtc2VsdmVzIHdpdGggW3BweF9iZW5jaF9saWJdIHdlXG4gICBkb24ndCB5ZXQga25vdyB3aGljaCBsaWJyYXJpZXMgd2lsbCBuZWVkIHRvIGJlIHJ1bi4gICopXG5sZXQgbGlic190b19lbnRyaWVzIDogKHN0cmluZywgRW50cnkudCBsaXN0KSBIYXNodGJsLnQgPSBIYXNodGJsLmNyZWF0ZSAxMFxuXG5sZXQgbG9va3VwX3Jldl9saWIgfmxpYm5hbWUgPVxuICB0cnkgSGFzaHRibC5maW5kIGxpYnNfdG9fZW50cmllcyBsaWJuYW1lIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gW11cbjs7XG5cbmxldCBsb29rdXBfbGliIH5saWJuYW1lID0gTGlzdC5yZXYgKGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuXG5sZXQgZm9yY2VfZHJvcCA9XG4gICgqIFVzZWZ1bCBmb3IganNfb2Zfb2NhbWwgdG8gcGVyZm9ybSBkZWFkY29kZSBlbGltaW5hdGlvbi5cbiAgICAgc2VlIHBweC9wcHhfaW5saW5lX3Rlc3QvcnVudGltZS1saWIvcnVudGltZS5tbCBbQWN0aW9uLmdldF0gZm9yIG1vcmUgZGV0YWlscyAqKVxuICB0cnlcbiAgICBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0JFTkNIXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICB8IE5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxubGV0IGdldF9tb2RlICgpID0gaWYgZm9yY2VfZHJvcCB0aGVuIGBJZ25vcmUgZWxzZSBgQ29sbGVjdFxuXG5sZXRbQGlubGluZSBuZXZlcl0gYWRkX2JlbmNoXG4gICAgICAgICAgICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmNvZGVcbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfnR5cGVfY29udl9wYXRoXG4gICAgICAgICAgICAgICAgICAgICB+bGluZVxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0cG9zXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zXG4gICAgICAgICAgICAgICAgICAgICB0ZXN0X3NwZWNcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgbGV0IGxpYm5hbWUgPSBDdXJyZW50X2xpYm5hbWUuZ2V0ICgpIGluXG4gICAgbGV0IGVudHJ5ID1cbiAgICAgIHsgRW50cnkuY29kZVxuICAgICAgOyB1bmlxdWVfaWQgPSB1bmlxdWVfaWQgKClcbiAgICAgIDsgdHlwZV9jb252X3BhdGhcbiAgICAgIDsgYmVuY2hfbW9kdWxlX25hbWUgPSBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay50b19uYW1lICgpXG4gICAgICA7IG5hbWVcbiAgICAgIDsgZmlsZW5hbWVcbiAgICAgIDsgbGluZVxuICAgICAgOyBzdGFydHBvc1xuICAgICAgOyBlbmRwb3NcbiAgICAgIDsgdGVzdF9zcGVjXG4gICAgICB9XG4gICAgaW5cbiAgICBIYXNodGJsLmFkZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSAoZW50cnkgOjogbG9va3VwX3Jldl9saWIgfmxpYm5hbWUpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gYWRkX2JlbmNoX21vZHVsZVxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlOl9cbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aDpfXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6X1xuICAgICAgICAgICAgICAgICAgICAgfmxpbmU6X1xuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0cG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIH5lbmRwb3M6X1xuICAgICAgICAgICAgICAgICAgICAgZlxuICA9XG4gIG1hdGNoIGdldF9tb2RlICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYENvbGxlY3QgLT5cbiAgICAoKiBSdW5uaW5nIGYgcmVnaXN0ZXJzIHRoZSBiZW5jaG1hcmtzIHVzaW5nIEJFTkNIICopXG4gICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucHVzaCBuYW1lO1xuICAgICh0cnlcbiAgICAgICBmICgpO1xuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKClcbiAgICAgd2l0aFxuICAgICB8IGV4IC0+XG4gICAgICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucG9wX2V4biAoKTtcbiAgICAgICByYWlzZSBleClcbjs7XG4iLCJ0eXBlIHQgPSBzdHJpbmdcblxuKCogU2hhcmUgdGhlIGRpZ2VzdCBvZiB0aGUgZW1wdHkgc3RyaW5nICopXG5sZXQgZW1wdHkgPSBEaWdlc3Quc3RyaW5nIFwiXCJcbmxldCBtYWtlIHMgPVxuICBpZiBzID0gZW1wdHkgdGhlblxuICAgIGVtcHR5XG4gIGVsc2VcbiAgICBzXG5cbmxldCBjb21wYXJlID0gY29tcGFyZVxuXG5sZXQgbGVuZ3RoID0gMTZcblxubGV0IHRvX2JpbmFyeSBzID0gc1xubGV0IG9mX2JpbmFyeV9leG4gcyA9IGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzID0gbGVuZ3RoKTsgbWFrZSBzXG5sZXQgdW5zYWZlX29mX2JpbmFyeSA9IG1ha2VcblxubGV0IHRvX2hleCA9IERpZ2VzdC50b19oZXhcbmxldCBvZl9oZXhfZXhuIHMgPSBtYWtlIChEaWdlc3QuZnJvbV9oZXggcylcblxubGV0IHN0cmluZyBzID0gbWFrZSAoRGlnZXN0LnN0cmluZyBzKVxuXG5sZXQgYnl0ZXMgcyA9IG1ha2UgKERpZ2VzdC5ieXRlcyBzKVxuXG5sZXQgc3ViYnl0ZXMgYnl0ZXMgfnBvcyB+bGVuID0gbWFrZSAoRGlnZXN0LnN1YmJ5dGVzIGJ5dGVzIHBvcyBsZW4pXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBMb2NhdGlvbiA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgVXVpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5sZXQgZXZhbF9mYWlsIGxvYyBmbXQgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBzIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiAhXCIle0xvY2F0aW9ufTogJXNcIiBsb2MgcykpIGZtdFxuOztcblxubGV0IGVxdWFsX29wdGlvbiBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBTb21lIF8sIE5vbmUgfCBOb25lLCBTb21lIF8gLT4gZmFsc2VcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbjs7XG5cbm1vZHVsZSBTb3J0ZWRfdGFibGUgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIGNyZWF0ZSA6IExvY2F0aW9uLnQgLT4gZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+IChzdHJpbmcgKiAnYSkgbGlzdCAtPiAnYSB0XG4gIHZhbCBleHBvc2UgOiAnYSB0IC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHsgc29ydGVkIDogKHN0cmluZyAqICdhKSBsaXN0IH0gW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgbWVyZ2VfY2hlY2tfYWRqYWNlbnRfZHVwc1xuICAgIDogIGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICAgIC0+IFsgYE9rIG9mIChzdHJpbmcgKiAnYSkgbGlzdCB8IGBNaXNtYXRjaCBvZiBzdHJpbmcgXVxuICAgID1cbiAgICBmdW4gfmVxIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjYyB+bGFzdF9rZXkgfmxhc3RfdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBgT2sgKExpc3QucmV2IGFjYylcbiAgICAgIHwgKGtleSwgdmFsdWUpIDo6IHhzIC0+XG4gICAgICAgIGlmIFN0cmluZy4obGFzdF9rZXkgPSBrZXkpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiBlcSBsYXN0X3ZhbHVlIHZhbHVlIHRoZW4gbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlIHhzIGVsc2UgYE1pc21hdGNoIGtleVxuICAgICAgICBlbHNlIGxvb3AgKChrZXksIHZhbHVlKSA6OiBhY2MpIH5sYXN0X2tleTprZXkgfmxhc3RfdmFsdWU6dmFsdWUgeHNcbiAgICBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBgT2sgW11cbiAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPiBsb29wIFsga2V5LCB2YWx1ZSBdIH5sYXN0X2tleTprZXkgfmxhc3RfdmFsdWU6dmFsdWUgeHNcbiAgOztcblxuICBsZXQgY3JlYXRlIGxvYyB+ZXEgeHMgPVxuICAgIGxldCBzb3J0ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biAoczEsIF8pIChzMiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgczEgczIpIHhzIGluXG4gICAgbWF0Y2ggbWVyZ2VfY2hlY2tfYWRqYWNlbnRfZHVwcyB+ZXEgc29ydGVkIHdpdGhcbiAgICB8IGBPayBzb3J0ZWQgLT4geyBzb3J0ZWQgfVxuICAgIHwgYE1pc21hdGNoIHMgLT5cbiAgICAgIGV2YWxfZmFpbCBsb2MgXCJEaWZmZXJlbnQgc2hhcGVzIGZvciBkdXBsaWNhdGVkIHBvbHltb3JwaGljIGNvbnN0cnVjdG9yOiBgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IGV4cG9zZSB0ID0gdC5zb3J0ZWRcbiAgbGV0IG1hcCB0IH5mID0geyBzb3J0ZWQgPSBMaXN0Lm1hcCB0LnNvcnRlZCB+ZjooZnVuIChrLCB2KSAtPiBrLCBmIHYpIH1cbmVuZFxuXG5tb2R1bGUgRGlnZXN0IDogc2lnXG4gIHR5cGUgdCA9IE1kNV9saWIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCB0b19tZDUgOiB0IC0+IE1kNV9saWIudFxuICB2YWwgb2ZfbWQ1IDogTWQ1X2xpYi50IC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBjb25zdHJ1Y3RvciA6IHN0cmluZyAtPiB0IGxpc3QgLT4gdFxuICB2YWwgbGlzdCA6IHQgbGlzdCAtPiB0XG4gIHZhbCBwYWlyIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN0cmluZyA6IHN0cmluZyAtPiB0XG4gIHZhbCB1dWlkIDogVXVpZC50IC0+IHRcbiAgdmFsIGludCA6IGludCAtPiB0XG4gIHZhbCBvcHRpb24gOiB0IG9wdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZDVfbGliXG5cbiAgbGV0IHRvX21kNSB0ID0gdFxuICBsZXQgb2ZfbWQ1IHQgPSB0XG4gIGxldCBzZXhwX29mX3QgdCA9IHQgfD4gdG9faGV4IHw+IHNleHBfb2Zfc3RyaW5nXG4gIGxldCB0X29mX3NleHAgcyA9IHMgfD4gc3RyaW5nX29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdXVpZCB1ID0gc3RyaW5nIChVdWlkLnRvX3N0cmluZyB1KVxuICBsZXQgaW50IHggPSBzdHJpbmcgKEludC50b19zdHJpbmcgeClcbiAgbGV0IHBhaXIgeCB5ID0gc3RyaW5nICh0b19iaW5hcnkgeCBeIHRvX2JpbmFyeSB5KVxuICBsZXQgbGlzdCBsID0gc3RyaW5nIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiAoTGlzdC5tYXAgfmY6dG9fYmluYXJ5IGwpKVxuICBsZXQgY29uc3RydWN0b3IgcyBsID0gc3RyaW5nIChzIF4gdG9fYmluYXJ5IChsaXN0IGwpKVxuXG4gIGxldCBvcHRpb24gPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBjb25zdHJ1Y3RvciBcIm5vbmVcIiBbXVxuICAgIHwgU29tZSB4IC0+IGNvbnN0cnVjdG9yIFwic29tZVwiIFsgeCBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IgPSBzdHJ1Y3RcbiAgKCogWydhIHRdIGlzIGEgbm9uLXJlY3Vyc2l2ZSB0eXBlLCB1c2VkIHRvIHJlcHJlc2VudCAxLWxheWVyIG9mIGV4cHJlc3Npb24uICBUaGVcbiAgICAgcmVjdXJzaXZlIGtub3QgaXMgdGllZCBiZWxvdyBpbiBbQ2Fub25pY2FsX2Z1bGwuRXhwLnRdLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogJ2FcbiAgICB8IEJhc2Ugb2YgVXVpZC50ICogJ2EgbGlzdFxuICAgIHwgVHVwbGUgb2YgJ2EgbGlzdFxuICAgIHwgUmVjb3JkIG9mIChzdHJpbmcgKiAnYSkgbGlzdFxuICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogJ2EgbGlzdCkgbGlzdFxuICAgICgqIFBvbHltb3JwaGljIHZhcmlhbnRzIGFyZSBpbnNlbnNpdGl2ZSB0byB0aGUgb3JkZXIgdGhlIGNvbnN0cnVjdG9ycyBhcmUgbGlzdGVkICopXG4gICAgfCBQb2x5X3ZhcmlhbnQgb2YgJ2Egb3B0aW9uIFNvcnRlZF90YWJsZS50XG4gICAgKCogTGVmdC1oYW5kLXNpZGUgb2YgW0FwcGxpY2F0aW9uXSBpcyBhIHBvdGVudGlhbGx5IHJlY3Vyc2l2ZSBkZWZpbml0aW9uOiBpdFxuICAgICAgIGNhbiByZWZlciB0byBpdHNlbGYgdXNpbmcgW1JlY19hcHAgKGksIF8pXSB3aGVyZSBbaV0gaXMgdGhlIGRlcHRoIG9mIHRoaXNcbiAgICAgICBhcHBsaWNhdGlvbiBub2RlIChob3cgbWFueSBhcHBsaWNhdGlvbiBub2RlcyBhcmUgYWJvdmUgaXQpLlxuICAgICAgIEl0IGFsc28gaGFzIGl0cyBvd24gc2NvcGUgb2YgdHlwZSB2YXJpYWJsZXMgc28gaXQgY2FuIG5vdCByZWZlciB0byB0eXBlIHZhcmlhYmxlc1xuICAgICAgIG9mIHRoZSBlbmNsb3Npbmcgc2NvcGUuXG4gICAgKilcbiAgICB8IEFwcGxpY2F0aW9uIG9mICdhICogJ2EgbGlzdFxuICAgIHwgUmVjX2FwcCBvZiBpbnQgKiAnYSBsaXN0XG4gICAgfCBWYXIgb2YgaW50XG4gIFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG5cbiAgbGV0IG1hcCB4IH5mID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEFubm90YXRlICh1LCB4KSAtPiBBbm5vdGF0ZSAodSwgZiB4KVxuICAgIHwgQmFzZSAocywgeHMpIC0+IEJhc2UgKHMsIExpc3QubWFwIH5mIHhzKVxuICAgIHwgVHVwbGUgeHMgLT4gVHVwbGUgKExpc3QubWFwIH5mIHhzKVxuICAgIHwgUmVjb3JkIGwgLT4gUmVjb3JkIChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHgpIC0+IHMsIGYgeCkpXG4gICAgfCBWYXJpYW50IGwgLT4gVmFyaWFudCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4cykgLT4gcywgTGlzdC5tYXAgfmYgeHMpKVxuICAgIHwgUG9seV92YXJpYW50IHQgLT4gUG9seV92YXJpYW50IChTb3J0ZWRfdGFibGUubWFwIHQgfmY6KE9wdGlvbi5tYXAgfmYpKVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IEFwcGxpY2F0aW9uIChmIHgsIExpc3QubWFwIH5mIGwpXG4gICAgfCBSZWNfYXBwICh0LCBsKSAtPiBSZWNfYXBwICh0LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgVmFyIHYgLT4gVmFyIHZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IChmdW4gXyAtPiBBdG9tIFwiLi4uXCIpIHQpXG5lbmRcblxubW9kdWxlIENyZWF0ZV9kaWdlc3QgOiBzaWdcbiAgKCogRGlnZXN0IHZhcmlvdXMgZXhwcmVzc2lvbiBmb3JtcyAqKVxuXG4gIHZhbCBkaWdlc3RfbGF5ZXIgOiBEaWdlc3QudCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnQgLT4gRGlnZXN0LnRcbmVuZCA9IHN0cnVjdFxuICBsZXQgZGlnZXN0X2xheWVyID0gZnVuY3Rpb25cbiAgICB8IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuQW5ub3RhdGUgKHUsIHgpIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3IgXCJhbm5vdGF0ZVwiIFsgRGlnZXN0LnV1aWQgdTsgeCBdXG4gICAgfCBCYXNlICh1LCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJiYXNlXCIgWyBEaWdlc3QudXVpZCB1OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFR1cGxlIGwgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwidHVwbGVcIiBbIERpZ2VzdC5saXN0IGwgXVxuICAgIHwgUmVjb3JkIGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInJlY29yZFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3QgKExpc3QubWFwIGwgfmY6KGZ1biAocywgdCkgLT4gRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgcykgdCkpIF1cbiAgICB8IFZhcmlhbnQgbCAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwidmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIGwpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIChEaWdlc3QubGlzdCBsKSkpXG4gICAgICAgIF1cbiAgICB8IFBvbHlfdmFyaWFudCB0YWJsZSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwicG9seV92YXJpYW50XCJcbiAgICAgICAgWyBEaWdlc3QubGlzdFxuICAgICAgICAgICAgKExpc3QubWFwIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYmxlKSB+ZjooZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgeCkgKERpZ2VzdC5vcHRpb24geSkpKVxuICAgICAgICBdXG4gICAgfCBBcHBsaWNhdGlvbiAoeCwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYXBwbGljYXRpb25cIiBbIHg7IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgUmVjX2FwcCAobiwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwicmVjX2FwcFwiIFsgRGlnZXN0LmludCBuOyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFZhciBuIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInZhclwiIFsgRGlnZXN0LmludCBuIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgVmlzaWJpbGl0eSA9IHN0cnVjdFxuICB0eXBlIHZpc2libGUgPSBWaXNpYmxlXG4gIHR5cGUgb3BhcXVlID0gT3BhcXVlXG5cbiAgbGV0IF8gPSBWaXNpYmxlXG4gIGxldCBfID0gT3BhcXVlXG5lbmRcblxubW9kdWxlIHR5cGUgQ2Fub25pY2FsID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19kaWdlc3QgOiB0IC0+IERpZ2VzdC50XG5cbiAgbW9kdWxlIEV4cDEgOiBzaWdcbiAgICB0eXBlIF8gdFxuXG4gICAgdmFsIHZhciA6IGludCAtPiBfIHRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIHQgbGlzdCAtPiBfIHRcbiAgICB2YWwgYXBwbHkgOiAnYSB0IC0+ICdhIHQgbGlzdCAtPiBfIHRcbiAgICB2YWwgb3BhcXVlIDogXyB0IC0+IFZpc2liaWxpdHkub3BhcXVlIHRcblxuICAgIHZhbCBnZXRfcG9seV92YXJpYW50XG4gICAgICA6ICBWaXNpYmlsaXR5LnZpc2libGUgdFxuICAgICAgLT4gKFZpc2liaWxpdHkub3BhcXVlIHQgb3B0aW9uIFNvcnRlZF90YWJsZS50LCBzdHJpbmcpIFJlc3VsdC50XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgOiBzaWdcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgOiBzaWdcbiAgICB2YWwgYW5ub3RhdGUgOiBVdWlkLnQgLT4gXyBFeHAxLnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgYmFzZXR5cGUgOiBVdWlkLnQgLT4gXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB0dXBsZSA6IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgcG9seV92YXJpYW50IDogTG9jYXRpb24udCAtPiAoc3RyaW5nICogXyBFeHAxLnQgb3B0aW9uKSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhciA6IGludCAtPiBfIEV4cDEudFxuICAgIHZhbCByZWN1cnNlIDogaW50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgYXBwbHkgOiAnYSBFeHAxLnQgLT4gJ2EgRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgZGVmaW5lIDogVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudCAtPiBEZWYudFxuICAgIHZhbCByZWNvcmQgOiAoc3RyaW5nICogXyBFeHAxLnQpIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdmFyaWFudCA6IChzdHJpbmcgKiBfIEV4cDEudCBsaXN0KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGNyZWF0ZSA6IF8gRXhwMS50IC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9kaWdlc3QgOiBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQ2Fub25pY2FsIG9mIERpZ2VzdC50XG5cbiAgbGV0IHRvX2RpZ2VzdCAoQ2Fub25pY2FsIHgpID0geFxuXG4gIG1vZHVsZSBDRCA9IENyZWF0ZV9kaWdlc3RcblxuICBtb2R1bGUgRXhwMSA9IHN0cnVjdFxuICAgIHR5cGUgb3BhcXVlID0gRGlnZXN0LnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFBvbHlfdmFyaWFudCBvZiBvcGFxdWUgb3B0aW9uIFNvcnRlZF90YWJsZS50XG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgb2YgKHN0cmluZyAqIG9wYXF1ZSlcbiAgICAgIHwgT3BhcXVlIDogb3BhcXVlIC0+IFZpc2liaWxpdHkub3BhcXVlIHRcblxuICAgIGxldCB0b19kaWdlc3QgKHR5cGUgYSkgKHggOiBhIHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPcGFxdWUgeCAtPiB4XG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgKF8sIHgpIC0+IHhcbiAgICAgIHwgUG9seV92YXJpYW50IHggLT4gQ0QuZGlnZXN0X2xheWVyIChQb2x5X3ZhcmlhbnQgeClcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsICh0eXBlIGEpICh4IDogYSB0KSAoeSA6IGEgdCkgPVxuICAgICAgRGlnZXN0LmNvbXBhcmUgKHRvX2RpZ2VzdCB4KSAodG9fZGlnZXN0IHkpID0gMFxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHggPSBPcGFxdWUgKHRvX2RpZ2VzdCB4KVxuXG4gICAgbGV0IGNyZWF0ZSB4ID1cbiAgICAgIGxldCB4ID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IHggaW5cbiAgICAgIGxldCBkZXNjID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50b19zdHJpbmcgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUG9seV92YXJpYW50IGwgLT4gUG9seV92YXJpYW50IGxcbiAgICAgIHwgQmFzZSBfIC0+IE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBBbm5vdGF0ZSBfIC0+XG4gICAgICAgICgqIEl0J3MgdW5zYWZlIHRvIHVzZSBkZXJpdmluZyBiaW5faW8gd2hlbiBpbmhlcml0aW5nIGZyb20gYSBwb2x5bW9ycGhpYyB2YXJpYW50XG4gICAgICAgICAgIHRoYXQgaGFzIGEgY3VzdG9tIGJpbl9pby4gIElmIHdlIGZvcmJpZCB0aGF0LCB3ZSBjYW4gaGFwcGlseSByZWplY3QgaGVyZVxuICAgICAgICAgICBhbnl0aGluZyB0aGF0J3MgYW5ub3RhdGVkLiAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQXBwbGljYXRpb24gXyAtPlxuICAgICAgICAoKiBBcHBsaWNhdGlvbiBjYW4gcmVhbGx5IGJlIGEgcG9seS12YXJpYW50IHlvdSBjYW4gaW5oZXJpdCBmcm9tISAgQnV0IGl0J3MgYVxuICAgICAgICAgICByYXJlIHNpdHVhdGlvbiB0aGF0IG1vc3RseSAob25seT8pIGFyaXNlcyB3aXRoIGluaGVyaXRhbmNlIGZyb20gcmVjdXJzaXZlXG4gICAgICAgICAgIHBvbHltb3JwaWMgdmFyaWFudHMsIHdoaWNoIHdlJ3ZlIG5vdCBzZWVuIGFueXdoZXJlIHlldC4gIFNvIHdlIHJlamVjdCBpdC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFJlY19hcHAgXyAtPlxuICAgICAgICAoKiBZb3UgY2FuIG9ubHkgZ2V0IHRoZSBbUmVjX2FwcF0gY29uc3RydWN0b3IgZm9yIHR5cGUtcmVmZXJlbmNlcyB3aXRoaW4gdGhlXG4gICAgICAgICAgIG11dHVhbCBncm91cCBiZWluZyBkZWZpbmVkLiBSZWZlcmVuY2VzIHdoaWNoXG4gICAgICAgICAgIGZvbGxvdyBhZnRlciB0aGUgY3VycmVudCBncm91cCB3aWxsIGFsd2F5cyBiZSBbQXBwbGljYXRpb25dcy5cblxuICAgICAgICAgICBBbmQgc2luY2Ugb2NhbWwgcmVqZWN0cyByZWZlcmVuY2VzIGluIGBpbmhlcml0YW5jZScgcG9zaXRpb24gdG8gdHlwZXMgd2l0aGluXG4gICAgICAgICAgIHRoZSBjdXJyZW50IGdyb3VwIChzZWUgZXhhbXBsZSkgd2l0aDpcblxuICAgICAgICAgICBFcnJvcjogVGhlIHR5cGUgY29uc3RydWN0b3IgdFxuICAgICAgICAgICBpcyBub3QgeWV0IGNvbXBsZXRlbHkgZGVmaW5lZFxuXG4gICAgICAgICAgIHRoZW4gaXRzIG9rIHRvIHNheSB0aGF0IGEgcmVjLWFwcCBpcyBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBpbmhlcml0ZWQgZnJvbSBhbmRcbiAgICAgICAgICAgcmV0dXJuIFtOb25fcG9seV92YXJpYW50XS5cblxuICAgICAgICAgICBBbmQgdW5saWtlIHRoZSBbQXBwbGljYXRpb25dIGNhc2UsIGl0IHNob3VsZCBuZXZlciBiZSBwb3NzaWJsZSB0byBzZWVcbiAgICAgICAgICAgYW4gZXJyb3IgbWVzc2FnZSB3aXRoIHRoZSBbZGVzY10gPSBbUmVjX2FwcF0uXG5cbiAgICAgICAgICAgRXhhbXBsZTogW3R5cGUgdCA9IFtgYSBvZiBbIHwgdF0gXV1cbiAgICAgICAgICAgSGVyZSwgW3wgdF0gd291bGQgYmUgYW4gZXhhbXBsZSBvZiBpbmhlcml0YW5jZSBmcm9tIGEgUmVjX2FwcCwgd2hpY2hcbiAgICAgICAgICAgaXMgcmVqZWN0ZWQgYnkgdGhlIGNvbXBpbGVyLlxuICAgICAgICAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgVmFyIF8gfCBUdXBsZSBfIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT5cbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgOztcblxuICAgIGxldCB2YXIgeCA9IGNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IGRlZiBsID0gY3JlYXRlIChBcHBsaWNhdGlvbiAoZGVmLCBsKSlcbiAgICBsZXQgcmVjdXJzZSB0aWQgbCA9IGNyZWF0ZSAoUmVjX2FwcCAodGlkLCBsKSlcblxuICAgIGxldCBnZXRfcG9seV92YXJpYW50ICh4IDogVmlzaWJpbGl0eS52aXNpYmxlIHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChkZXNjLCBfKSAtPiBFcnJvciBkZXNjXG4gICAgICB8IFBvbHlfdmFyaWFudCBsIC0+IE9rIChTb3J0ZWRfdGFibGUubWFwIH5mOihPcHRpb24ubWFwIH5mOihmdW4geCAtPiBPcGFxdWUgeCkpIGwpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLmNyZWF0ZSAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IGwgPSBFeHAxLmNyZWF0ZSAoQmFzZSAodSwgbCkpXG4gICAgbGV0IHR1cGxlIGwgPSBFeHAxLmNyZWF0ZSAoVHVwbGUgbClcblxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIGwgPVxuICAgICAgRXhwMS5jcmVhdGUgKFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gRXhwMS5lcXVhbCkgbCkpXG4gICAgOztcblxuICAgIGxldCB2YXIgeCA9IEV4cDEuY3JlYXRlIChWYXIgeClcbiAgICBsZXQgYXBwbHkgeCBsID0gRXhwMS5jcmVhdGUgKEFwcGxpY2F0aW9uICh4LCBsKSlcbiAgICBsZXQgcmVjdXJzZSB0IGwgPSBFeHAxLmNyZWF0ZSAoUmVjX2FwcCAodCwgbCkpXG4gICAgbGV0IGRlZmluZSB4ID0geFxuICAgIGxldCByZWNvcmQgbCA9IEV4cDEuY3JlYXRlIChSZWNvcmQgbClcbiAgICBsZXQgdmFyaWFudCBsID0gRXhwMS5jcmVhdGUgKFZhcmlhbnQgbClcbiAgICBsZXQgY3JlYXRlIGUgPSBDYW5vbmljYWwgKEV4cDEudG9fZGlnZXN0IGUpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZnVsbCA9IHN0cnVjdFxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQwID0gRXhwIG9mIHQwIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsX3QwIHggeSA9IGNvbXBhcmVfdDAgeCB5ID0gMFxuXG4gICAgdHlwZSAnYSB0ID0gdDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB2YXIgeCA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5WYXIgeClcbiAgICBsZXQgYXBwbHkgZCB4cyA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5BcHBsaWNhdGlvbiAoZCwgeHMpKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUmVjX2FwcCAociwgeHMpKVxuXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPVxuICAgICAgRXhwXG4gICAgICAgIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudFxuICAgICAgICAgICAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gZXF1YWxfdDApIHhzKSlcbiAgICA7O1xuXG4gICAgbGV0IGdldF9wb2x5X3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgKFBvbHlfdmFyaWFudCB0YWIpIC0+IE9rIHRhYlxuICAgICAgfCBFeHAgY2MgLT4gRXJyb3IgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIGNjKVxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHQgPSB0XG5cbiAgICBsZXQgcmVjIHRvX2RpZ2VzdCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4cCBlIC0+IENELmRpZ2VzdF9sYXllciAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgICgqIEEgW0RlZi50XSBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG1heSBiZSBhcHBsaWVkICopXG4gICAgdHlwZSB0ID0gRXhwMS50MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICAoKiBBIGNhbm9uaWNhbCBzaGFwZSBbdF0gaXMgYW4gW0V4cDEudF0uICopXG4gIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fZGlnZXN0IGUgPSBFeHAxLnRvX2RpZ2VzdCBlXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLkV4cCAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IHhzID0gRXhwMS5FeHAgKEJhc2UgKHUsIHhzKSlcbiAgICBsZXQgdHVwbGUgeHMgPSBFeHAxLkV4cCAoVHVwbGUgeHMpXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBFeHAxLnBvbHlfdmFyaWFudCBsb2MgeHNcbiAgICBsZXQgdmFyIG4gPSBFeHAxLkV4cCAoVmFyIG4pXG4gICAgbGV0IHJlY3Vyc2UgciB4cyA9IEV4cDEucmVjdXJzZSByIHhzXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAxLmFwcGx5IGQgeHNcbiAgICBsZXQgZGVmaW5lIHggPSB4XG4gICAgbGV0IHJlY29yZCB4cyA9IEV4cDEuRXhwIChSZWNvcmQgeHMpXG4gICAgbGV0IHZhcmlhbnQgeHMgPSBFeHAxLkV4cCAoVmFyaWFudCB4cylcbiAgICBsZXQgY3JlYXRlIGV4cCA9IGV4cFxuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nX2h1bSB0ID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgdClcbmVuZFxuXG5tb2R1bGUgVGlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBWaWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIEdpZCA6IHNpZ1xuICAoKiB1bmlxdWUgZ3JvdXAtaWQsIHVzZWQgYXMga2V5IGZvciBUZW52IGJlbG93ICopXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gIGxldCByID0gcmVmIDBcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgdSA9ICFyIGluXG4gICAgciA6PSAxICsgdTtcbiAgICB1XG4gIDs7XG5lbmRcblxubW9kdWxlIEV4cHJlc3Npb24gPSBzdHJ1Y3RcbiAgdHlwZSAndCBwb2x5X2NvbnN0ciA9XG4gICAgWyBgQ29uc3RyIG9mIHN0cmluZyAqICd0IG9wdGlvblxuICAgIHwgYEluaGVyaXQgb2YgTG9jYXRpb24udCAqICd0XG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgICB2YWwgY3JlYXRlIDogTG9jYXRpb24udCAtPiAoVGlkLnQgKiBWaWQudCBsaXN0ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBpZCA6ICdhIHQgLT4gR2lkLnRcbiAgICB2YWwgbG9va3VwIDogJ2EgdCAtPiBUaWQudCAtPiBWaWQudCBsaXN0ICogJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgZ2lkIDogR2lkLnRcbiAgICAgIDsgbG9jIDogTG9jYXRpb24udFxuICAgICAgOyBtZW1iZXJzIDogKFRpZC50ICogKFZpZC50IGxpc3QgKiAnYSkpIGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICAgIGxldCBjcmVhdGUgbG9jIHRyaXBzID1cbiAgICAgIGxldCBnaWQgPSBHaWQuY3JlYXRlICgpIGluXG4gICAgICBsZXQgbWVtYmVycyA9IExpc3QubWFwIHRyaXBzIH5mOihmdW4gKHgsIHZzLCB0KSAtPiB4LCAodnMsIHQpKSBpblxuICAgICAgeyBnaWQ7IGxvYzsgbWVtYmVycyB9XG4gICAgOztcblxuICAgIGxldCBpZCBnID0gZy5naWRcblxuICAgIGxldCBsb29rdXAgZyB0aWQgPVxuICAgICAgbWF0Y2ggTGlzdC5Bc3NvYy5maW5kIGcubWVtYmVycyB+ZXF1YWw6VGlkLiggPSApIHRpZCB3aXRoXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+IHNjaGVtZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGV2YWxfZmFpbFxuICAgICAgICAgIGcubG9jXG4gICAgICAgICAgIVwiaW1wb3NzaWJsZTogbG9va3VwX2dyb3VwLCB1bmJvdW5kIHR5cGUtaWRlbnRpZmllcjogJXtUaWR9XCJcbiAgICAgICAgICB0aWRcbiAgICAgICAgICAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogdFxuICAgICAgICB8IEJhc2Ugb2YgVXVpZC50ICogdCBsaXN0XG4gICAgICAgIHwgUmVjb3JkIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogdCBsaXN0KSBsaXN0XG4gICAgICAgIHwgVHVwbGUgb2YgdCBsaXN0XG4gICAgICAgIHwgUG9seV92YXJpYW50IG9mIChMb2NhdGlvbi50ICogdCBwb2x5X2NvbnN0ciBsaXN0KVxuICAgICAgICB8IFZhciBvZiAoTG9jYXRpb24udCAqIFZpZC50KVxuICAgICAgICB8IFJlY19hcHAgb2YgVGlkLnQgKiB0IGxpc3RcbiAgICAgICAgfCBUb3BfYXBwIG9mIHQgR3JvdXAudCAqIFRpZC50ICogdCBsaXN0XG4gICAgICBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgdmFyaWFudHNdXG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgdHlwZSBncm91cCA9IHQgR3JvdXAudFxuXG4gIGxldCBncm91cCA9IEdyb3VwLmNyZWF0ZVxuXG4gIHR5cGUgcG9seV92YXJpYW50X3JvdyA9IHQgcG9seV9jb25zdHJcblxuICBsZXQgY29uc3RyIHMgdCA9IGBDb25zdHIgKHMsIHQpXG4gIGxldCBpbmhlcml0XyBsb2MgdCA9IGBJbmhlcml0IChsb2MsIHQpXG4gIGxldCB2YXIgbG9jIHQgPSBWYXIgKGxvYywgdClcbiAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBQb2x5X3ZhcmlhbnQgKGxvYywgeHMpXG4gIGxldCBiYXNldHlwZSA9IGJhc2VcblxuICAoKiBcIlZSXCIgc3RhbmRzIGZvciBcInZhcmlhbnQgb3IgcmVjb3JkXCIgKilcblxuICBsZXQgaXNfY3ljbGljXzAgfih2aWFfVlIgOiBib29sKSA6IGdyb3VwIC0+IFRpZC50IC0+IGJvb2wgPVxuICAgIGZ1biBncm91cCB0aWQgLT5cbiAgICBsZXQgc2V0ID0gcmVmIFtdIGluXG4gICAgbGV0IHZpc2l0ZWQgdGlkID0gTGlzdC5tZW0gIXNldCB0aWQgfmVxdWFsOlRpZC5lcXVhbCBpblxuICAgIGxldCBhZGQgdGlkID0gc2V0IDo9IHRpZCA6OiAhc2V0IGluXG4gICAgbGV0IHJlYyB0cmF2ID0gZnVuY3Rpb25cbiAgICAgICgqIFdlIGxvb2sgZm9yIGN5Y2xlcyBieSB0cmF2ZXJzaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdHlwZS1leHByZXNzaW9ucyAqKVxuICAgICAgfCBBbm5vdGF0ZSAoXywgdCkgLT4gdHJhdiB0XG4gICAgICB8IEJhc2UgKF8sIHRzKSB8IFR1cGxlIHRzIHwgVG9wX2FwcCAoXywgXywgdHMpIC0+IExpc3QuaXRlciB0cyB+Zjp0cmF2XG4gICAgICAoKiAuLmluY2x1ZGluZyBwb2x5LXZhcmlhbnRzICopXG4gICAgICB8IFBvbHlfdmFyaWFudCAoXywgY3MpIC0+XG4gICAgICAgIExpc3QuaXRlciBjcyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IGBDb25zdHIgKF8sIE5vbmUpIC0+ICgpXG4gICAgICAgICAgfCBgQ29uc3RyIChfLCBTb21lIHQpIC0+IHRyYXYgdFxuICAgICAgICAgIHwgYEluaGVyaXQgKF9sb2MsIHQpIC0+IHRyYXYgdClcbiAgICAgICgqIC4uIGFuZCByZWNvcmRzICYgKG5vcm1hbCkgdmFyaWFudHMgKilcbiAgICAgIHwgUmVjb3JkIHhzIC0+IGlmIHZpYV9WUiB0aGVuIExpc3QuaXRlciB4cyB+ZjooZnVuIChfLCB0KSAtPiB0cmF2IHQpIGVsc2UgKClcbiAgICAgIHwgVmFyaWFudCB4cyAtPlxuICAgICAgICBpZiB2aWFfVlIgdGhlbiBMaXN0Lml0ZXIgeHMgfmY6KGZ1biAoXywgdHMpIC0+IExpc3QuaXRlciB+Zjp0cmF2IHRzKSBlbHNlICgpXG4gICAgICAoKiBXZSBkb250IGZvbGxvdyB0eXBlLXZhcnMgKilcbiAgICAgIHwgVmFyIF8gLT4gKClcbiAgICAgICgqIHRyYXZlcnNlIChyZWN1cnNpdmUpIHR5cGUtYXBwcyB3aGVuIGZpcnN0IGVuY291bnRlcmVkICopXG4gICAgICB8IFJlY19hcHAgKHRpZCwgdHMpIC0+XG4gICAgICAgIGlmIHZpc2l0ZWQgdGlkXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYWRkIHRpZDtcbiAgICAgICAgICB0cmF2X3RpZCB0aWQpO1xuICAgICAgICBMaXN0Lml0ZXIgdHMgfmY6dHJhdlxuICAgIGFuZCB0cmF2X3RpZCB0aWQgPVxuICAgICAgbGV0IF8sIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICB0cmF2IGJvZHlcbiAgICBpblxuICAgIHRyYXZfdGlkIHRpZDtcbiAgICBsZXQgcmVzID0gdmlzaXRlZCB0aWQgaW5cbiAgICAoKmxldCBfc3MgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKExpc3QubWFwICghc2V0KSB+Zjooc3ByaW50ZiAhXCIle1RpZH1cIikpIGluKilcbiAgICAoKlByaW50Zi5wcmludGYgIVwiaXNfY3lsaWM6ICV7VGlkfSAtLT4gKCVzKSAlYiAgLS0gJXMlIVwiIHRpZCBfc3MgcmVzIChHcm91cC5sb2MgZ3JvdXApOyopXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGlzX2N5Y2xpYyA9IGlzX2N5Y2xpY18wIH52aWFfVlI6dHJ1ZVxuICBsZXQgaXNfY3ljbGljX3dpdGhfbm9faW50ZXJ2ZW5pbmdfVlIgPSBpc19jeWNsaWNfMCB+dmlhX1ZSOmZhbHNlXG5lbmRcblxuaW5jbHVkZSBFeHByZXNzaW9uXG5cbm1vZHVsZSBFdmFsdWF0aW9uIChDYW5vbmljYWwgOiBDYW5vbmljYWwpID0gc3RydWN0XG4gICgqIFtWZW52LnRdXG4gICAgIEVudmlyb25tZW50IGZvciByZXNvbHZpbmcgdHlwZS12YXJzICopXG4gIG1vZHVsZSBWZW52IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbG9va3VwIDogdCAtPiBWaWQudCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBvcHRpb25cbiAgICB2YWwgY3JlYXRlIDogKFZpZC50ICogVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQpIGxpc3QgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBNYXAuTShWaWQpLnRcblxuICAgIGxldCBjcmVhdGUgPVxuICAgICAgTGlzdC5mb2xkXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBWaWQpKVxuICAgICAgICB+ZjooZnVuIHQgKGssIHYpIC0+IE1hcC5zZXQgfmtleTprIH5kYXRhOnYgdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cCB0IGsgPSBNYXAuZmluZCB0IGtcbiAgZW5kXG5cbiAgbW9kdWxlIEFwcGxpY2FuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnRcbiAgICAgIHwgRGVmaW5pdGlvbiBvZiBDYW5vbmljYWwuRGVmLnRcbiAgZW5kXG5cbiAgKCogW1RlbnYudF1cbiAgICAgRW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyB0eXBlLWRlZmluaXRpb25zICopXG4gIG1vZHVsZSBUZW52IDogc2lnXG4gICAgdHlwZSBrZXkgPSBHaWQudCAqIFRpZC50XG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZmluZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBvcHRpb25cbiAgICB2YWwgZW1wdHkgOiB0XG4gICAgdmFsIGV4dGVuZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEdpZC50ICogVGlkLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZFxuXG4gICAgdHlwZSBrZXkgPSBLZXkudFxuICAgIHR5cGUgdCA9IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBNYXAuTShLZXkpLnRcblxuICAgIGxldCBmaW5kIHQgayA9IE1hcC5maW5kIHQga1xuICAgIGxldCBlbXB0eSA9IE1hcC5lbXB0eSAobW9kdWxlIEtleSlcbiAgICBsZXQgZXh0ZW5kIHQgayB2ID0gTWFwLnNldCB+a2V5OmsgfmRhdGE6diB0XG4gIGVuZFxuXG4gICgqIFtEZWZpbmluZy50XVxuICAgICBNb25hZCBmb3IgbWFuYWdpbmcgdW4tcm9sbGluZyBkZXB0aCwgYW5kIG1haW50YWluZyBhIFtUZW52LnRdICopXG4gIG1vZHVsZSBEZWZpbmluZyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgICB2YWwgbG9va19lbnYgOiBUZW52LmtleSAtPiBBcHBsaWNhbmQudCBvcHRpb24gdFxuICAgIHZhbCBleHRlbmRfbmV3X3RpZCA6IFRlbnYua2V5IC0+IENhbm9uaWNhbC5EZWYudCB0IC0+IEFwcGxpY2FuZC50IHRcbiAgICB2YWwgZXhlYyA6ICdhIHQgLT4gJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gZGVwdGg6aW50IC0+IFRlbnYudCAtPiAnYVxuXG4gICAgbGV0IHJldHVybiB4IH5kZXB0aDpfIF90ZW52ID0geFxuXG4gICAgbGV0IGJpbmQgdCBmIH5kZXB0aCB0ZW52ID1cbiAgICAgIGxldCB4ID0gdCB+ZGVwdGggdGVudiBpblxuICAgICAgKGYgeCkgfmRlcHRoIHRlbnZcbiAgICA7O1xuXG4gICAgbGV0IGxvb2tfZW52IGtleSB+ZGVwdGg6XyB0ZW52ID1cbiAgICAgIGxldCByZXN1bHQgPSBUZW52LmZpbmQgdGVudiBrZXkgaW5cbiAgICAgIE9wdGlvbi5tYXAgfmY6KGZ1biAoYFJlY3Vyc2lvbl9sZXZlbCB4KSAtPiBBcHBsaWNhbmQuUmVjdXJzaW9uX2xldmVsIHgpIHJlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgZXh0ZW5kX25ld190aWQga2V5IGRlZl90IH5kZXB0aCB0ZW52ID1cbiAgICAgIEFwcGxpY2FuZC5EZWZpbml0aW9uXG4gICAgICAgIChsZXQgdmFsdWUgPSBgUmVjdXJzaW9uX2xldmVsIGRlcHRoIGluXG4gICAgICAgICBsZXQgdGVudiA9IFRlbnYuZXh0ZW5kIHRlbnYga2V5IHZhbHVlIGluXG4gICAgICAgICBkZWZfdCB+ZGVwdGg6KGRlcHRoICsgMSkgdGVudilcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgdCA9IHQgfmRlcHRoOjAgVGVudi5lbXB0eVxuICBlbmRcblxuICB0eXBlICdhIGRlZmluaW5nID0gJ2EgRGVmaW5pbmcudFxuXG4gIGxldCAoID4+PSApID0gRGVmaW5pbmcuYmluZFxuICBsZXQgcmV0dXJuID0gRGVmaW5pbmcucmV0dXJuXG5cbiAgbGV0IHNlcXVlbmNlX2RlZmluaW5nIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYiBkZWZpbmluZykgLT4gJ2IgbGlzdCBkZWZpbmluZyA9XG4gICAgZnVuIHhzIH5mIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjY195cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgYWNjX3lzKVxuICAgICAgfCB4IDo6IHhzIC0+IGYgeCA+Pj0gZnVuIHkgLT4gbG9vcCAoeSA6OiBhY2NfeXMpIHhzXG4gICAgaW5cbiAgICBsb29wIFtdIHhzXG4gIDs7XG5cbiAgKCpcbiAgICAgU2hhcGUgZXZhbHVhdGlvbi5cblxuICAgICBTaGFwZXMgYXJlIGV2YWx1YXRlZCB0byBjYW5vbmljYWwtc2hhcGUgKGV4cHJlc3Npb25zKSwgd2l0aCBhZGRpdGlvbmFsIGRlZnMgY29sbGVjdGVkXG4gICAgIGluIHRoZSBbZGVmaW5pbmddIG1vbmFkLCB3aGljaCBhbHNvIG1hbmFnZXMgZ2VuZXJhdGlvbi9tYXBwaW5nIHRvIFtDYW5vbmljYWwuVGlkLnRdXG5cbiAgICAgVGhlcmUgaXMgZG93bndhcmRzIGNvbnRleHQgb2YgW2dyb3VwXSBhbmQgW1ZlbnYudF1cbiAgICAgVGhlIChjdXJyZW50KSBbZ3JvdXBdIGNoYW5nZXMgd2hlbiB0aGUgY2FzZSBmb3IgW1RvcF9hcHBdIGNhbGxzIFtldmFsX2FwcF0uXG5cbiAgICAgVGhlIGN1cnJlbnQgW1ZlbnYudF0gaXMgYWJhbmRvbmVkIHdoZW4gW2V2YWxfYXBwXSBpcyBjYWxsZWQsIGFuZCB0aGVuIHJlLWNyZWF0ZWQgYWZ0ZXJcbiAgICAgdGhlIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgdG8gZWl0aGVyIGlubGluZSB0aGUgdHlwZS1hcHBsaWNhdGlvbiwgb3IgbWFrZSBhIHJlZmVyZW5jZVxuICAgICB0byBhIHR5cGUtZGVmaW5pdGlvbiwgd2hpY2ggaXMgY3JlYXRlZCBhdCBtb3N0IG9uY2UgZm9yIGVhY2ggKEdpZC50ICogVGlkLnQpLlxuXG4gICAgIFdlIG1ha2UgYSB0eXBlLWRlZmluaXRpb24gYWx3YXlzIGZvciBSZWNvcmRzIGFuZCBWYXJpYW50cywgYW5kIGluIGFkZGl0aW9uIGZvciBhbnlcbiAgICAgb3RoZXIgY3ljbGljIHR5cGUtZGVmaW5pdGlvbi5cbiAgKilcblxuICBsZXQgcmVjIGV2YWwgOiBncm91cCAtPiBWZW52LnQgLT4gdCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHZlbnYgdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFJlY29yZCBiaW5kcyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBiaW5kcyB+ZjooZnVuIChzLCB4KSAtPlxuICAgICAgICAgIGV2YWwgZ3JvdXAgdmVudiB4ID4+PSBmdW4geSAtPiByZXR1cm4gKHMsIHkpKVxuICAgICAgICA+Pj0gZnVuIGJpbmRzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5yZWNvcmQgYmluZHMpXG4gICAgICB8IFZhcmlhbnQgYWx0cyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBhbHRzIH5mOihmdW4gKHMsIHhzKSAtPlxuICAgICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IHhzID4+PSBmdW4geXMgLT4gcmV0dXJuIChzLCB5cykpXG4gICAgICAgID4+PSBmdW4gYWx0cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudmFyaWFudCBhbHRzKVxuICAgICAgfCBWYXIgKGxvYywgdmlkKSAtPlxuICAgICAgICAobWF0Y2ggVmVudi5sb29rdXAgdmVudiB2aWQgd2l0aFxuICAgICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICAgICAgIHwgTm9uZSAtPiBldmFsX2ZhaWwgbG9jICFcIkZyZWUgdHlwZSB2YXJpYWJsZTogJyV7VmlkfVwiIHZpZCAoKSlcbiAgICAgIHwgQW5ub3RhdGUgKHMsIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYW5ub3RhdGUgcyB2KVxuICAgICAgfCBCYXNlIChzLCB0cykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYmFzZXR5cGUgcyB2cylcbiAgICAgIHwgVHVwbGUgdHMgLT4gZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudHVwbGUgdnMpXG4gICAgICB8IFRvcF9hcHAgKGluX2dyb3VwLCB0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3NcbiAgICAgICAgPj49IGZ1biBhcmdzIC0+XG4gICAgICAgICgqIGFyZ3MgZXZhbHVhdGVkIGluIGN1cnJlbnQgZ3JvdXAgKilcbiAgICAgICAgZXZhbF9hcHAgaW5fZ3JvdXAgdGlkIGFyZ3NcbiAgICAgICgqIGdyb3VwIGNoYW5nZWQgaGVyZSAqKVxuICAgICAgfCBSZWNfYXBwICh0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3MgPj49IGZ1biBhcmdzIC0+IGV2YWxfYXBwIGdyb3VwIHRpZCBhcmdzXG4gICAgICB8IFBvbHlfdmFyaWFudCAobG9jLCBjcykgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgfmY6KGV2YWxfcG9seV9jb25zdHIgZ3JvdXAgdmVudikgY3NcbiAgICAgICAgPj49IGZ1biB4c3MgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnBvbHlfdmFyaWFudCBsb2MgKExpc3QuY29uY2F0IHhzcykpXG5cbiAgYW5kIGV2YWxfbGlzdCA6IGdyb3VwIC0+IFZlbnYudCAtPiB0IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB2ZW52IHRzIC0+IHNlcXVlbmNlX2RlZmluaW5nIHRzIH5mOihldmFsIGdyb3VwIHZlbnYpXG5cbiAgYW5kIGV2YWxfcG9seV9jb25zdHJcbiAgICA6ICBncm91cCAtPiBWZW52LnQgLT4gdCBwb2x5X2NvbnN0clxuICAgICAgLT4gKHN0cmluZyAqIFZpc2liaWxpdHkub3BhcXVlIENhbm9uaWNhbC5FeHAxLnQgb3B0aW9uKSBsaXN0IGRlZmluaW5nXG4gICAgPVxuICAgIGZ1biBncm91cCB2ZW52IGMgLT5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCBgQ29uc3RyIChzLCBOb25lKSAtPiByZXR1cm4gWyBzLCBOb25lIF1cbiAgICAgIHwgYENvbnN0ciAocywgU29tZSB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdCA+Pj0gZnVuIHYgLT4gcmV0dXJuIFsgcywgU29tZSAoQ2Fub25pY2FsLkV4cDEub3BhcXVlIHYpIF1cbiAgICAgIHwgYEluaGVyaXQgKGxvYywgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHRcbiAgICAgICAgPj49IGZ1biB2IC0+XG4gICAgICAgIChtYXRjaCBDYW5vbmljYWwuRXhwMS5nZXRfcG9seV92YXJpYW50IHYgd2l0aFxuICAgICAgICAgfCBPayB0YWIgLT4gcmV0dXJuIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYilcbiAgICAgICAgIHwgRXJyb3IgZGVzYyAtPlxuICAgICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICBcIlRoZSBzaGFwZSBmb3IgYW4gaW5oZXJpdGVkIHR5cGUgaXMgbm90IGRlc2NyaWJlZCBhcyBhIHBvbHltb3JwaGljLXZhcmlhbnQ6ICVzXCJcbiAgICAgICAgICAgICBkZXNjXG4gICAgICAgICAgICAgKCkpXG5cbiAgYW5kIGV2YWxfZGVmaW5pdGlvbiA6IGdyb3VwIC0+IFZpZC50IGxpc3QgLT4gdCAtPiBDYW5vbmljYWwuRGVmLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCBmb3JtYWxzIGJvZHkgLT5cbiAgICAgIGxldCB2ZW52ID0gVmVudi5jcmVhdGUgKExpc3QubWFwaSBmb3JtYWxzIH5mOihmdW4gaSB4IC0+IHgsIENhbm9uaWNhbC5FeHAxLnZhciBpKSkgaW5cbiAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuZGVmaW5lIHYpXG5cbiAgYW5kIGV2YWxfYXBwIDogZ3JvdXAgLT4gVGlkLnQgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdGlkIGFyZ3MgLT5cbiAgICAgIGxldCBnaWQgPSBHcm91cC5pZCBncm91cCBpblxuICAgICAgbGV0IGZvcm1hbHMsIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICBsZXQgcmVjb3JkX29yX25vcm1hbF92YXJpYW50ID1cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgICB8IFR1cGxlIF8gfCBBbm5vdGF0ZSBfIHwgQmFzZSBfIHwgUG9seV92YXJpYW50IF8gfCBWYXIgXyB8IFJlY19hcHAgXyB8IFRvcF9hcHAgXyAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGN5Y2xpYyA9IGlzX2N5Y2xpYyBncm91cCB0aWQgaW5cbiAgICAgIGxldCBjeWNsaWNfbm9fVlIgPSBpc19jeWNsaWNfd2l0aF9ub19pbnRlcnZlbmluZ19WUiBncm91cCB0aWQgaW5cbiAgICAgIGlmIChyZWNvcmRfb3Jfbm9ybWFsX3ZhcmlhbnQgJiYgY3ljbGljKSB8fCBjeWNsaWNfbm9fVlJcbiAgICAgIHRoZW5cbiAgICAgICAgRGVmaW5pbmcubG9va19lbnYgKGdpZCwgdGlkKVxuICAgICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHJlY3Vyc2UgLT4gcmV0dXJuIHJlY3Vyc2VcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIERlZmluaW5nLmV4dGVuZF9uZXdfdGlkIChnaWQsIHRpZCkgKGV2YWxfZGVmaW5pdGlvbiBncm91cCBmb3JtYWxzIGJvZHkpKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBSZWN1cnNpb25fbGV2ZWwgciAtPiByZXR1cm4gKENhbm9uaWNhbC5FeHAxLnJlY3Vyc2UgciBhcmdzKVxuICAgICAgICB8IERlZmluaXRpb24gZGVmIC0+IHJldHVybiAoQ2Fub25pY2FsLkV4cDEuYXBwbHkgZGVmIGFyZ3MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHZlbnYgPVxuICAgICAgICAgIG1hdGNoIExpc3QuemlwIGZvcm1hbHMgYXJncyB3aXRoXG4gICAgICAgICAgfCBPayB4IC0+IFZlbnYuY3JlYXRlIHhcbiAgICAgICAgICB8IFVuZXF1YWxfbGVuZ3RocyAtPiBmYWlsd2l0aCBcImFwcGx5LCBpbmNvcnJlY3QgdHlwZSBhcHBsaWNhdGlvbiBhcml0eVwiXG4gICAgICAgIGluXG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5KVxuICA7O1xuXG4gICgqIHRvcCBsZXZlbCBlbnRyeSBwb2ludCBmb3IgZXZhbHVhdGlvbiAqKVxuICBsZXQgZXZhbCA6IHQgLT4gQ2Fub25pY2FsLnQgPVxuICAgIGZ1biB0IC0+XG4gICAgICBsZXQgZ3JvdXAgPSBncm91cCAoTG9jYXRpb24ub2Zfc3RyaW5nIFwidG9wLWxldmVsXCIpIFtdIGluXG4gICAgICBsZXQgdmVudiA9IFZlbnYuY3JlYXRlIFtdIGluXG4gICAgICBsZXQgdiA9IERlZmluaW5nLmV4ZWMgKGV2YWwgZ3JvdXAgdmVudiB0KSBpblxuICAgICAgQ2Fub25pY2FsLkNyZWF0ZS5jcmVhdGUgdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDYW5vbmljYWxfZnVsbFxuXG4gIG1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgRXZhbHVhdGlvbiAoQ2Fub25pY2FsX2Z1bGwpXG5tb2R1bGUgQ2Fub25pY2FsX3NlbGVjdGVkID0gQ2Fub25pY2FsX2RpZ2VzdFxubW9kdWxlIEV2YWx1YXRpb25fdG9fZGlnZXN0ID0gRXZhbHVhdGlvbiAoQ2Fub25pY2FsX3NlbGVjdGVkKVxuXG5sZXQgZXZhbF90b19kaWdlc3QgZXhwID0gQ2Fub25pY2FsX3NlbGVjdGVkLnRvX2RpZ2VzdCAoRXZhbHVhdGlvbl90b19kaWdlc3QuZXZhbCBleHApXG5sZXQgZXZhbF90b19kaWdlc3Rfc3RyaW5nIGV4cCA9IERpZ2VzdC50b19oZXggKGV2YWxfdG9fZGlnZXN0IGV4cClcblxubW9kdWxlIEZvcl90eXBlcmVwID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBOb3RfYV90dXBsZSBvZiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGRlY29uc3RydWN0X3R1cGxlX2V4biB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFR1cGxlIHRzIC0+IHRzXG4gICAgfCBfIC0+IHJhaXNlIChOb3RfYV90dXBsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNvcnRlZF90YWJsZSA9IFNvcnRlZF90YWJsZVxuICBtb2R1bGUgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3RvciA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3JcbiAgbW9kdWxlIENhbm9uaWNhbCA9IENhbm9uaWNhbFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMiAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogU2FtZSBhcyB7IUJ5dGVzLmJsaXRfc3RyaW5nfSB3aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cbiAgICBJZiBbc10gaXMgZW1wdHksIHRoZSByZXN1bHQgaXMgdGhlIHNpbmdsZXRvbiBsaXN0IFtbXCJcIl1dLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0ICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYWNjIC0+IGNoYXIgLT4gJ2FjYykgLT4gJ2FjYyAtPiBzdHJpbmcgLT4gJ2FjY1xuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYWNjIC0+ICdhY2MpIC0+IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCJpbmNsdWRlIFN0YWJsZV93aXRuZXNzX2ludGZcblxuKCogVGhlIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24gb2Ygc3RhYmxlIHdpdG5lc3NlcyBkb2VzIG5vdCBtYXR0ZXIuICopXG50eXBlIF8gdCA9IHVuaXRcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYXJyYXkgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYm9vbCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19ieXRlcyA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19jaGFyID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2V4biA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19mbG9hdCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19pbnQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50MzIgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50NjQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbGF6eV90ICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2xpc3QgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbmF0aXZlaW50ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX29wdGlvbiAoKSA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19yZWYgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3Nfc3RyaW5nID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX3VuaXQgPSAoKVxuZW5kXG5cbmxldCBvZl9zZXJpYWxpemFibGUgKCkgXyBfID0gKClcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTEgKF8gOiBUMSkgKF8gOiBUMSkgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyAoKSA9ICgpXG5lbmRcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTIgKF8gOiBUMikgKF8gOiBUMikgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyAoKSAoKSA9ICgpXG5lbmRcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTMgKF8gOiBUMykgKF8gOiBUMykgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyBfICgpICgpID0gKClcbmVuZFxuXG5sZXQgYXNzZXJ0X3N0YWJsZSA9ICgpXG4iLCIoKiBDb21tb246IGNvbW1vbiBkZWZpbml0aW9ucyB1c2VkIGJ5IGJpbmFyeSBwcm90b2NvbCBjb252ZXJ0ZXJzICopXG5cbm9wZW4gQmFzZVxub3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcblxudHlwZSBwb3MgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogRXJyb3JzIGFuZCBleGNlcHRpb25zICopXG5cbmV4Y2VwdGlvbiBCdWZmZXJfc2hvcnRcbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbm1vZHVsZSBSZWFkRXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5lZ19pbnQ4XG4gICAgfCBJbnRfY29kZVxuICAgIHwgSW50X292ZXJmbG93XG4gICAgfCBOYXQwX2NvZGVcbiAgICB8IE5hdDBfb3ZlcmZsb3dcbiAgICB8IEludDMyX2NvZGVcbiAgICB8IEludDY0X2NvZGVcbiAgICB8IE5hdGl2ZWludF9jb2RlXG4gICAgfCBVbml0X2NvZGVcbiAgICB8IEJvb2xfY29kZVxuICAgIHwgT3B0aW9uX2NvZGVcbiAgICB8IFN0cmluZ190b29fbG9uZ1xuICAgIHwgVmFyaWFudF90YWdcbiAgICB8IEFycmF5X3Rvb19sb25nXG4gICAgfCBMaXN0X3Rvb19sb25nIG9mXG4gICAgICAgIHsgbGVuIDogaW50XG4gICAgICAgIDsgbWF4X2xlbiA6IGludFxuICAgICAgICB9XG4gICAgfCBIYXNodGJsX3Rvb19sb25nXG4gICAgfCBTdW1fdGFnIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudCBvZiBzdHJpbmdcbiAgICB8IFBvbHlfcmVjX2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIG9mIHN0cmluZ1xuICAgIHwgU2lsbHlfdHlwZSBvZiBzdHJpbmdcbiAgICB8IEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBOZWdfaW50OCAtPiBcIk5lZ19pbnQ4XCJcbiAgICB8IEludF9jb2RlIC0+IFwiSW50X2NvZGVcIlxuICAgIHwgSW50X292ZXJmbG93IC0+IFwiSW50X292ZXJmbG93XCJcbiAgICB8IE5hdDBfY29kZSAtPiBcIk5hdDBfY29kZVwiXG4gICAgfCBOYXQwX292ZXJmbG93IC0+IFwiTmF0MF9vdmVyZmxvd1wiXG4gICAgfCBJbnQzMl9jb2RlIC0+IFwiSW50MzJfY29kZVwiXG4gICAgfCBJbnQ2NF9jb2RlIC0+IFwiSW50NjRfY29kZVwiXG4gICAgfCBOYXRpdmVpbnRfY29kZSAtPiBcIk5hdGl2ZWludF9jb2RlXCJcbiAgICB8IFVuaXRfY29kZSAtPiBcIlVuaXRfY29kZVwiXG4gICAgfCBCb29sX2NvZGUgLT4gXCJCb29sX2NvZGVcIlxuICAgIHwgT3B0aW9uX2NvZGUgLT4gXCJPcHRpb25fY29kZVwiXG4gICAgfCBTdHJpbmdfdG9vX2xvbmcgLT4gXCJTdHJpbmdfdG9vX2xvbmdcIlxuICAgIHwgVmFyaWFudF90YWcgLT4gXCJWYXJpYW50X3RhZ1wiXG4gICAgfCBBcnJheV90b29fbG9uZyAtPiBcIkFycmF5X3Rvb19sb25nXCJcbiAgICB8IExpc3RfdG9vX2xvbmcgeyBsZW47IG1heF9sZW4gfSAtPiBzcHJpbnRmIFwiTGlzdF90b29fbG9uZyAvICVkIChtYXggJWQpXCIgbGVuIG1heF9sZW5cbiAgICB8IEhhc2h0YmxfdG9vX2xvbmcgLT4gXCJIYXNodGJsX3Rvb19sb25nXCJcbiAgICB8IFN1bV90YWcgbG9jIC0+IFwiU3VtX3RhZyAvIFwiIF4gbG9jXG4gICAgfCBWYXJpYW50IGxvYyAtPiBcIlZhcmlhbnQgLyBcIiBeIGxvY1xuICAgIHwgUG9seV9yZWNfYm91bmQgbG9jIC0+IFwiUG9seV9yZWNfYm91bmQgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIGxvYyAtPiBcIlZhcmlhbnRfd3JvbmdfdHlwZSAvIFwiIF4gbG9jXG4gICAgfCBTaWxseV90eXBlIGxvYyAtPiBcIlNpbGx5X3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgRW1wdHlfdHlwZSBsb2MgLT4gXCJFbXB0eV90eXBlIC8gXCIgXiBsb2NcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmV4Y2VwdGlvbiBSZWFkX2Vycm9yIG9mIFJlYWRFcnJvci50ICogcG9zIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5leGNlcHRpb24gUG9seV9yZWNfd3JpdGUgb2Ygc3RyaW5nXG5leGNlcHRpb24gRW1wdHlfdHlwZSBvZiBzdHJpbmdcblxubGV0IHJhaXNlX3JlYWRfZXJyb3IgZXJyIHBvcyA9IHJhaXNlIChSZWFkX2Vycm9yIChlcnIsIHBvcykpXG5cbmxldCByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSBwb3MgPVxuICByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lLCBwb3MpKVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIGxvYyA9IGZhaWx3aXRoIChsb2MgXiBcIjogY29uY3VycmVudCBtb2RpZmljYXRpb25cIilcbmxldCBhcnJheV9ib3VuZF9lcnJvciAoKSA9IGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiXG5cbigqIEJ1ZmZlcnMgKilcblxudHlwZSBwb3NfcmVmID0gcG9zIHJlZlxudHlwZSBidWYgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5sZXQgY3JlYXRlX2J1ZiBuID0gQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIGNfbGF5b3V0IG5cbmxldCBidWZfbGVuIGJ1ZiA9IEFycmF5MS5kaW0gYnVmXG5sZXQgYXNzZXJ0X3BvcyBwb3MgPSBpZiBwb3MgPCAwIHRoZW4gYXJyYXlfYm91bmRfZXJyb3IgKClcbmxldCBjaGVja19wb3MgKGJ1ZiA6IGJ1ZikgcG9zID0gaWYgcG9zID49IEFycmF5MS5kaW0gYnVmIHRoZW4gcmFpc2UgQnVmZmVyX3Nob3J0XG5cbmxldCBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHBvc1xuOztcblxubGV0IGNoZWNrX25leHQgKGJ1ZiA6IGJ1ZikgbmV4dCA9IGlmIG5leHQgPiBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgZ2V0X29wdF9wb3MgfmxvYyB+dmFyID0gZnVuY3Rpb25cbiAgfCBTb21lIHBvcyAtPlxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpbl9wcm90LkNvbW1vbi4lczogJXMgPCAwXCIgbG9jIHZhcik7XG4gICAgcG9zXG4gIHwgTm9uZSAtPiAwXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gc3JjOmJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBkc3Q6YnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfc3R1YlwiXG5cbmxldCBibGl0X2J1ZiA/c3JjX3BvcyB+c3JjID9kc3RfcG9zIH5kc3QgbGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBBcnJheTEuZGltIHNyY1xuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgPiBzcmNfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gZHN0XG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyA+IGRzdF9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBzcmNcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zjogc3JjX3BvcyArIGxlbiA+IHNyY19sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGRzdFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBkc3RfcG9zICsgbGVuID4gZHN0X2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmIH5zcmNfcG9zIH5zcmMgfmRzdF9wb3MgfmRzdCB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHN0cmluZ1xuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9ieXRlc19idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9zdHJpbmdfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfc3RyaW5nX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gYnVmXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gYnVmXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxubGV0IGJsaXRfYnl0ZXNfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnl0ZXNfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBzdHJfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX3N0cmluZ1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9ieXRlc1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBibGl0X2J1Zl9ieXRlcyA/c3JjX3BvcyBidWYgP2RzdF9wb3Mgc3RyIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J1Zl9zdHJpbmdcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IGJ1Zl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zID4gc3RyX2xlblwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IGJ1Zl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zIGJ1ZiB+ZHN0X3BvcyBzdHIgfmxlblxuOztcblxubGV0IGJsaXRfYnVmX3N0cmluZyA9IGJsaXRfYnVmX2J5dGVzXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxubGV0IHJlYyBjb3B5X2h0YmxfbGlzdCBodGJsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBodGJsXG4gIHwgKGssIHYpIDo6IHJlc3QgLT5cbiAgICBTdGRsaWIuSGFzaHRibC5hZGQgaHRibCBrIHY7XG4gICAgY29weV9odGJsX2xpc3QgaHRibCByZXN0XG47O1xuXG4oKiBCaWdhcnJheXMgKilcblxudHlwZSB2ZWMzMiA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWM2NCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWMgPSB2ZWM2NFxudHlwZSBtYXQzMiA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQ2NCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQgPSBtYXQ2NFxuXG4oKiBGbG9hdCBhcnJheXMgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0IGFycmF5XG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdGFycmF5XG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBmbG9hdGFycmF5XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG4oKioqKVxuXG5sZXQgKCArICkgPSAoICsgKVxuIiwiKCogTmF0MDogbmF0dXJhbCBudW1iZXJzIChpbmNsdWRpbmcgemVybykgKilcblxudHlwZSB0ID0gaW50XG5cbmxldCBvZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHRoZW4gZmFpbHdpdGggXCJCaW5fcHJvdC5OYXQwLm9mX2ludDogbiA8IDBcIjtcbiAgblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuIiwiKCogV3JpdGVfbWw6IHdyaXRpbmcgdmFsdWVzIHRvIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2Egd3JpdGVyID0gYnVmIC0+IHBvczpwb3MgLT4gJ2EgLT4gcG9zXG50eXBlICgnYSwgJ2IpIHdyaXRlcjEgPSAnYSB3cml0ZXIgLT4gJ2Igd3JpdGVyXG50eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIyID0gJ2Egd3JpdGVyIC0+ICgnYiwgJ2MpIHdyaXRlcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSB3cml0ZXIzID0gJ2Egd3JpdGVyIC0+ICgnYiwgJ2MsICdkKSB3cml0ZXIyXG5cbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBidWYgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ4IDogYnVmIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDMyIDogYnVmIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ2NCA6IGJ1ZiAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMgJCopXG5cbmxldCBjb2RlX05FR19JTlQ4ID0gKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSAnXFx4ZmYnICgqJCopXG5sZXQgY29kZV9JTlQxNiA9ICgqJCBDb2RlLmNoYXIgSU5UMTYgKikgJ1xceGZlJyAoKiQqKVxubGV0IGNvZGVfSU5UMzIgPSAoKiQgQ29kZS5jaGFyIElOVDMyICopICdcXHhmZCcgKCokKilcbmxldCBjb2RlX0lOVDY0ID0gKCokIENvZGUuY2hhciBJTlQ2NCAqKSAnXFx4ZmMnICgqJCopXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxuXG5sZXQgdW5zYWZlX3NldDE2YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MTZcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MzJcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0NjRcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDE2bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG4gIGVsc2UgdW5zYWZlX3NldDMyXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG4gIGVsc2UgdW5zYWZlX3NldDY0XG47O1xuXG5sZXQgYmluX3dyaXRlX3VuaXQgYnVmIH5wb3MgKCkgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAnXFwwMDAnO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgYiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIChpZiBiIHRoZW4gJ1xcMDAxJyBlbHNlICdcXDAwMCcpO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuID1cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiBwb3MgbjtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX05FR19JTlQ4O1xuICB1bnNhZmVfc2V0OCBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMyBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQxNjtcbiAgdW5zYWZlX3NldDE2bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMzI7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA5IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDY0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfY2hhciBidWYgfnBvcyBjID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgYztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiBuID49IDBcbiAgdGhlblxuICAgIGlmIG4gPCAweDAwMDAwMDgwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG5cbiAgICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICAgIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAxIGxzbCAzMVxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8IC0oMSBsc2wgMzEpXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIG5hdDAgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA8IDB4MDAwMTAwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzJcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX3N0cmluZyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBuZXdfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IG5ld19wb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgKCogVE9ETzogb3B0aW1pemUgZm9yIHNtYWxsIHN0cmluZ3MgKilcbiAgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3BvczpuZXdfcG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2J5dGVzIGJ1ZiB+cG9zIHN0ciA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBieXRlcyAqKVxuICB1bnNhZmVfYmxpdF9ieXRlc19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5iaXRzX29mX2Zsb2F0IHgpO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFzc2VydF9wb3MgcG9zO1xuICAgICAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgbilcbiAgICAgIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIG4pXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbiAgZWxzZSBpZiBuID49IDB4MDAwMDgwMDBMIHx8IG4gPCAtMHgwMDAwODAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQ2NC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0aXZlaW50IGJ1ZiB+cG9zIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICAmJiAobiA+PSAoKiAweDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMVxuICAgICAgfHwgbiA8ICgqIC0weDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQubmVnIChOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMSkpXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfbmF0aXZlaW50IG4pKVxuICBlbHNlIGlmICgobm90IGFyY2hfc2l4dHlmb3VyKSAmJiBuID49IDB4ODAwMG4pIHx8IG4gPCAtMHg4MDAwblxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKE5hdGl2ZWludC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChOYXRpdmVpbnQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgciA9IGJpbl93cml0ZV9lbCBidWYgfnBvcyAhclxuXG5sZXQgYmluX3dyaXRlX2xhenkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGx2ID1cbiAgbGV0IHYgPSBMYXp5LmZvcmNlIGx2IGluXG4gIGJpbl93cml0ZV9lbCBidWYgfnBvcyB2XG47O1xuXG5sZXQgYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgZmFsc2VcbiAgfCBTb21lIHYgLT5cbiAgICBsZXQgbmV4dCA9IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIHRydWUgaW5cbiAgICBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6bmV4dCB2XG47O1xuXG5sZXQgYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgKGEsIGIpID1cbiAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYSBidWYgfnBvcyBhIGluXG4gIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOm5leHQgYlxuOztcblxubGV0IGJpbl93cml0ZV90cmlwbGUgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3MgKGEsIGIsIGMpID1cbiAgbGV0IG5leHQxID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBsZXQgbmV4dDIgPSBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0MSBiIGluXG4gIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOm5leHQyIGNcbjs7XG5cbmxldCBiaW5fd3JpdGVfbGlzdCA9XG4gIGxldCByZWMgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gZWxzX3Bvc1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9lbCBidWYgfnBvczplbHNfcG9zIGhkIGluXG4gICAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvczpuZXdfZWxzX3BvcyB0bFxuICBpblxuICBmdW4gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGxzdCAtPlxuICAgIGxldCBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKExpc3QubGVuZ3RoIGxzdCkgaW5cbiAgICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIGxlbiBpblxuICAgIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuIH5sZW5ndGggfmJsaXQgYnVmIH5wb3MgYSA9XG4gIGxldCBsZW4gPSBsZW5ndGggYSBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBibGl0IH5zcmNfcG9zOjAgYSB+ZHN0X3Bvczpwb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6RmxvYXQuQXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgICBidWZcbiAgICB+cG9zXG4gICAgYVxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdF9hcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6QXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyID1cbiAgbGV0IGVsc19wb3NfcmVmID0gcmVmIGVsc19wb3MgaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgZWxzX3Bvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFlbHNfcG9zX3JlZiAoQXJyYXkudW5zYWZlX2dldCBhciBpKVxuICBkb25lO1xuICAhZWxzX3Bvc19yZWZcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXkgKHR5cGUgYSkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3dyaXRlX2VsIDogYSB3cml0ZXIpIDogZmxvYXQgd3JpdGVyKSA9PSBiaW5fd3JpdGVfZmxvYXRcbiAgdGhlbiBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCBwbiA9IE5hdDAudW5zYWZlX29mX2ludCBuIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbiBpblxuICAgIGJpbl93cml0ZV9hcnJheV9sb29wIGJpbl93cml0ZV9lbCBidWYgfmVsc19wb3Mgfm4gYXIpXG47O1xuXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlX2tleSBiaW5fd3JpdGVfdmFsIGJ1ZiB+cG9zIGh0YmwgPVxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgZWxzX3BvcyA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9rZXkgYnVmIH5wb3M6ZWxzX3BvcyBrIGluXG4gICAgYmluX3dyaXRlX3ZhbCBidWYgfnBvczpuZXdfZWxzX3BvcyB2XG4gIGluXG4gIGxldCByZXNfcG9zID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIGVsc19wb3MgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fd3JpdGVfaGFzaHRibFwiO1xuICByZXNfcG9zXG47O1xuXG5leHRlcm5hbCBidWZfb2ZfdmVjMzIgOiB2ZWMzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfdmVjNjQgOiB2ZWM2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0MzIgOiBtYXQzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0NjQgOiBtYXQ2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWMzMiB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWM2NCB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmVjID0gYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgYnVmIH5wb3MgbSA9XG4gIGxldCBsZW4xID0gQXJyYXkyLmRpbTEgbSBpblxuICBsZXQgbGVuMiA9IEFycmF5Mi5kaW0yIG0gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMSkgaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMikgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfbWF0MzIgbSkgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDY0IG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9tYXQgPSBiaW5fd3JpdGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgYnVmIH5wb3MgcyA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHMgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV92YXJpYW50X2ludCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJsZSBidWYgcG9zIChJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IHgpIDEpIDFsKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfOGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzE2Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfMzJiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF82NGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50NjRfYml0cyBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazE2X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIChJbnQzMi5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nX2dldDMyIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nX2dldDY0IDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0dVwiXG5cbmxldCBiaW5fd3JpdGVfbWQ1IGJ1ZiB+cG9zIHggPVxuICBsZXQgeCA9IE1kNV9saWIudG9fYmluYXJ5IHggaW5cbiAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHggPSAxNik7XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDE2IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX3N0cmluZ19nZXQ2NCB4IDAgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCA4IGluXG4gICAgdW5zYWZlX3NldDY0IGJ1ZiBwb3MgYTtcbiAgICB1bnNhZmVfc2V0NjQgYnVmIChwb3MgKyA4KSBiKVxuICBlbHNlIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggNCBpblxuICAgIGxldCBjID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDggaW5cbiAgICBsZXQgZCA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCAxMiBpblxuICAgIHVuc2FmZV9zZXQzMiBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgNCkgYjtcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyA4KSBjO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDEyKSBkKTtcbiAgbmV4dFxuOztcbiIsIigqIFJlYWRfbWw6IHJlYWRpbmcgdmFsdWVzIGZyb20gdGhlIGJpbmFyeSBwcm90b2NvbCB1c2luZyAobW9zdGx5KSBPQ2FtbC4gKilcblxuKCogTm90ZTogdGhlIGNvZGUgaXMgdGhpcyBmaWxlIGlzIGNhcmVmdWxseSB3cml0dGVuIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGFsbG9jYXRpb25zLiBXaGVuXG4gICB0b3VjaGluZyB0aGlzIGNvZGUsIGJlIHN1cmUgdG8gcnVuIHRoZSBiZW5jaG1hcmtzIHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4gKilcblxub3BlbiBCaWdhcnJheVxub3BlbiBDb21tb25cblxudHlwZSAnYSByZWFkZXIgPSBidWYgLT4gcG9zX3JlZjpwb3NfcmVmIC0+ICdhXG50eXBlICgnYSwgJ2IpIHJlYWRlcjEgPSAnYSByZWFkZXIgLT4gJ2IgcmVhZGVyXG50eXBlICgnYSwgJ2IsICdjKSByZWFkZXIyID0gJ2EgcmVhZGVyIC0+ICgnYiwgJ2MpIHJlYWRlcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIzID0gJ2EgcmVhZGVyIC0+ICgnYiwgJ2MsICdkKSByZWFkZXIyXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBidWYgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuXG5sZXQgdW5zYWZlX2dldDhfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgYyA9IHVuc2FmZV9nZXQ4IGJ1ZiBwb3MgaW5cbiAgaWYgYyA+PSAxMjggdGhlbiBjIC0gMjU2IGVsc2UgY1xuOztcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxubGV0IG1heF9pbnRfaW50MzIgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIEludDMyLm1heF9pbnQgZWxzZSBJbnQzMi5vZl9pbnQgbWF4X2ludFxubGV0IG1pbl9pbnRfaW50MzIgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIEludDMyLm1heF9pbnQgZWxzZSBJbnQzMi5vZl9pbnQgbWluX2ludFxubGV0IG1heF9pbnRfaW50NjQgPSBJbnQ2NC5vZl9pbnQgbWF4X2ludFxubGV0IG1pbl9pbnRfaW50NjQgPSBJbnQ2NC5vZl9pbnQgbWluX2ludFxuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDMyIHBvcyB4ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBJbnQzMi50b19pbnQgeFxuICBlbHNlIGlmIHggPj0gbWluX2ludF9pbnQzMiAmJiB4IDw9IG1heF9pbnRfaW50MzJcbiAgdGhlbiBJbnQzMi50b19pbnQgeFxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2FmZV9pbnRfb2ZfaW50NjQgcG9zIHggPVxuICBpZiB4ID49IG1pbl9pbnRfaW50NjQgJiYgeCA8PSBtYXhfaW50X2ludDY0XG4gIHRoZW4gSW50NjQudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXQgc2FmZV9uYXRpdmVpbnRfb2ZfaW50NjQgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfcG9zIHggLT4gSW50NjQudG9fbmF0aXZlaW50IHhcbiAgZWxzZVxuICAgIGZ1biBbQGlubGluZSBhbHdheXNdIHBvcyB4IC0+XG4gICAgICBpZiB4ID49IEludDY0Lm9mX25hdGl2ZWludCBOYXRpdmVpbnQubWluX2ludFxuICAgICAgJiYgeCA8PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1heF9pbnRcbiAgICAgIHRoZW4gSW50NjQudG9fbmF0aXZlaW50IHhcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2dldDE2IDogYnVmIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDMyIDogYnVmIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBic3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBic3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0MTZiZV91bnNpZ25lZCA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQxNiBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQxNiBidWYgcG9zIHw+IGJzd2FwMTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MzJiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQzMiBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQzMiBidWYgcG9zIHw+IGJzd2FwMzJcbjs7XG5cbmxldCB1bnNhZmVfZ2V0NjRiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQ2NCBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQ2NCBidWYgcG9zIHw+IGJzd2FwNjRcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQxNiBidWYgcG9zIHw+IGJzd2FwMTYgZWxzZSB1bnNhZmVfZ2V0MTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MzJsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQzMiBidWYgcG9zIHw+IGJzd2FwMzIgZWxzZSB1bnNhZmVfZ2V0MzJcbjs7XG5cbmxldCB1bnNhZmVfZ2V0NjRsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQ2NCBidWYgcG9zIHw+IGJzd2FwNjQgZWxzZSB1bnNhZmVfZ2V0NjRcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MTZsZV9zaWduZWQgYnVmIHBvcyA9XG4gIGxldCB4ID0gdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvcyBpblxuICBpZiB4ID4gMzI3NjcgdGhlbiB4IC0gNjU1MzYgZWxzZSB4XG47O1xuXG5sZXQgYmluX3JlYWRfdW5pdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiB1bnNhZmVfZ2V0IGJ1ZiBwb3MgPSAnXFwwMDAnXG4gIHRoZW4gcG9zX3JlZiA6PSBwb3MgKyAxXG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuVW5pdF9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2Jvb2wgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGZhbHNlXG4gIHwgJ1xcMDAxJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICB0cnVlXG4gIHwgXyAtPiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5Cb29sX2NvZGUgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zIGluXG4gIGlmIG4gPj0gMCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5lZ19pbnQ4ICFwb3NfcmVmO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogQ2FuIGJlIGFib3ZlIG5leHQgbGluZSAobm8gZXJyb3JzIHBvc3NpYmxlIHdpdGggMTZiaXQpLlxuICAgICBUaGlzIHNob3VsZCBpbXByb3ZlIHRoZSBnZW5lcmF0ZWQgY29kZS4gKilcbiAgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDY0bGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDMyICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9pbnRfb2ZfaW50NjQgIXBvc19yZWYgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIEludDY0Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBOYXRpdmVpbnQub2ZfaW50MzIgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfbmF0aXZlaW50X29mX2ludDY0IHBvcyBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF8xNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIE5hdDAudW5zYWZlX29mX2ludCAodW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvcylcbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgbWFza18zMmJpdCA9IEludDY0LnRvX2ludCAweGZmZmZfZmZmZkwgaW5cbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgIGxldCBuID0gSW50MzIudG9faW50ICh1bnNhZmVfZ2V0MzJsZSBidWYgcG9zKSBpblxuICAgICAgaWYgbiA+PSAwXG4gICAgICB0aGVuIE5hdDAudW5zYWZlX29mX2ludCBuXG4gICAgICBlbHNlXG4gICAgICAgICgqIEVyYXNlIHRoZSB1cHBlciBiaXRzIHRoYXQgd2VyZSBzZXQgdG8gMSBkdXJpbmcgdGhlIGludDMyIC0+IGludCBjb252ZXJzaW9uLiAqKVxuICAgICAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKG4gbGFuZCBtYXNrXzMyYml0KSlcbiAgZWxzZVxuICAgIGZ1biBidWYgfnBvc19yZWYgfnBvcyAtPlxuICAgICAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gICAgICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gICAgICBpZiBuID49IDBsICYmIG4gPD0gbWF4X2ludF9pbnQzMlxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBuID0gTmF0MC51bnNhZmVfb2ZfaW50IChJbnQzMi50b19pbnQgbikgaW5cbiAgICAgICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgICAgICBuKVxuICAgICAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93ICFwb3NfcmVmXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBpZiBuID49IDBMICYmIG4gPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIChcbiAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50NjQudG9faW50IG4pIGluXG4gICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgIG4pXG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5hdDAudW5zYWZlX29mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmF0MF8zMiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlblxuICAgICAgc2FmZV9iaW5fcmVhZF9uYXQwXzY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgcG9zXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfYnl0ZXMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHN0YXJ0X3BvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5TdHJpbmdfdG9vX2xvbmcgc3RhcnRfcG9zO1xuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWZfYnl0ZXMgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIHN0ciB+bGVuO1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9zdHJpbmcgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHN0ciA9IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiBpblxuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuOztcblxubGV0IGJpbl9yZWFkX2NoYXIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0IGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIENoYXIuY29kZSBjaFxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlblxuICAgICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gICAgZWxzZVxuICAgICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfZmxvYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICBJbnQ2NC5mbG9hdF9vZl9iaXRzICh1bnNhZmVfZ2V0NjRsZSBidWYgcG9zKVxuOztcblxubGV0IGJpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQzMi5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50MzIub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50MzIub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50MzJfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIEludDY0Lm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBJbnQ2NC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBJbnQ2NC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnQ2NF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5hdGl2ZWludC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIHdoZW4gYXJjaF9zaXh0eWZvdXIgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0aXZlaW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX3JlZiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgcmVmIGVsXG47O1xuXG5sZXQgYmluX3JlYWRfbGF6eSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgTGF6eS5mcm9tX3ZhbCBlbFxuOztcblxubGV0IGJpbl9yZWFkX29wdGlvbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXDAwMCcgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTm9uZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgU29tZSBlbFxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuT3B0aW9uX2NvZGUgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfcGFpciBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYiA9IGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGJcbjs7XG5cbmxldCBiaW5fcmVhZF90cmlwbGUgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYiA9IGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBjID0gYmluX3JlYWRfYyBidWYgfnBvc19yZWYgaW5cbiAgYSwgYiwgY1xuOztcblxubGV0IGJpbl9yZWFkX25fcmV2X2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGxlbiA9XG4gIGxldCByZWMgbG9vcCBuIGFjYyA9XG4gICAgaWYgbiA9IDAgdGhlbiBhY2MgZWxzZSBsb29wIChuIC0gMSkgKGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA6OiBhY2MpXG4gIGluXG4gIGxvb3AgbGVuIFtdXG47O1xuXG5sZXQgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IG1heF9sZW4gdGhlbiByYWlzZV9yZWFkX2Vycm9yIChMaXN0X3Rvb19sb25nIHsgbGVuOyBtYXhfbGVuIH0pICFwb3NfcmVmO1xuICBsZXQgcmV2X2xzdCA9IGJpbl9yZWFkX25fcmV2X2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGxlbiBpblxuICBMaXN0LnJldiByZXZfbHN0XG47O1xuXG5sZXQgYmluX3JlYWRfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbjptYXhfaW50IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZlxuOztcblxubGV0IGR1bW15X2Zsb2F0X2J1ZiA9IGNyZWF0ZV9idWYgOFxubGV0ICgpID0gaWdub3JlIChXcml0ZS5iaW5fd3JpdGVfZmxvYXQgZHVtbXlfZmxvYXRfYnVmIH5wb3M6MCAzLjEpXG5cbmxldCBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoID1cbiAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC8gMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4gfmNyZWF0ZSB+YmxpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IG1heF9mbG9hdF9hcnJheV9sZW5ndGggdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBwb3M7XG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBhcnIgPSBjcmVhdGUgbGVuIGluXG4gIGJsaXQgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIGFyciB+bGVuO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGFyclxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0YXJyYXkgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmNyZWF0ZTpGbG9hdC5BcnJheS5jcmVhdGVcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICAgIGJ1ZlxuICAgIH5wb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXRfYXJyYXkgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmNyZWF0ZTpBcnJheS5jcmVhdGVfZmxvYXRcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9idWZfZmxvYXRfYXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2FycmF5ICh0eXBlIGEpIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl9yZWFkX2VsIDogYSByZWFkZXIpIDogZmxvYXQgcmVhZGVyKSA9PSBiaW5fcmVhZF9mbG9hdFxuICB0aGVuIChPYmoubWFnaWMgKGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA6IGZsb2F0IGFycmF5KSA6IGEgYXJyYXkpXG4gIGVsc2UgKFxuICAgIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICAgIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFt8fF1cbiAgICBlbHNlIChcbiAgICAgIGlmIGFyY2hfc2l4dHlmb3VyXG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpXG4gICAgICBlbHNlIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC8gMlxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBtYXliZV9mbG9hdCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBkdW1teV9mbG9hdF9idWYgfnBvc19yZWY6KHJlZiAwKSBpblxuICAgICAgICAgICAgU29tZSBlbFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBtYXliZV9mbG9hdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3NcbiAgICAgICAgfCBTb21lIGVsIC0+XG4gICAgICAgICAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgZWwpID0gT2JqLmRvdWJsZV90YWcgfHwgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3Bvcyk7XG4gICAgICBsZXQgZmlyc3QgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiBmaXJzdCBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIGkgZWxcbiAgICAgIGRvbmU7XG4gICAgICByZXMpKVxuOztcblxubGV0IGJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRfa2V5IGJpbl9yZWFkX3ZhbCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYWRfa3ZfcGFpciA9IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfa2V5IGJpbl9yZWFkX3ZhbCBpblxuICBsZXQgZWxzID0gYmluX3JlYWRfbl9yZXZfbGlzdCByZWFkX2t2X3BhaXIgYnVmIH5wb3NfcmVmIGxlbiBpblxuICBjb3B5X2h0YmxfbGlzdCBodGJsIGVsc1xuOztcblxuZXh0ZXJuYWwgYnVmX29mX3ZlYzMyIDogdmVjMzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX3ZlYzY0IDogdmVjNjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDMyIDogbWF0MzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDY0IDogbWF0NjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCB2ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXQgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX3ZlYzMyIHZlYykgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdmVjXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCB2ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX3ZlYzY0IHZlYykgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdmVjXG47O1xuXG5sZXQgYmluX3JlYWRfdmVjID0gYmluX3JlYWRfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogNCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDMyIG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbjEgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgbGVuMiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG1hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dCBsZW4xIGxlbjIgaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfbWF0NjQgbWF0KSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBtYXRcbjs7XG5cbmxldCBiaW5fcmVhZF9tYXQgPSBiaW5fcmVhZF9mbG9hdDY0X21hdFxuXG5sZXQgYmluX3JlYWRfYmlnc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHN0ciA9IGNyZWF0ZV9idWYgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDpzdHIgfmRzdF9wb3M6MCB+bGVuO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHN0clxuOztcblxubGV0IGJpbl9yZWFkX3ZhcmlhbnRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAoKiBbbl0gbXVzdCBjb250YWluIGFuIGludGVnZXIgYWxyZWFkeSBlbmNvZGVkLCBpLmUuIFtuID0gMiAqIGsgKyAxXS4gKilcbiAgaWYgSW50MzIubG9nYW5kIG4gMWwgPSAwbFxuICB0aGVuIHJhaXNlIChSZWFkX2Vycm9yIChSZWFkRXJyb3IuVmFyaWFudF90YWcsIHBvcykpXG4gIGVsc2UgKFxuICAgICgqIFdlIHNoaWZ0IGl0IGJ5IG9uZSBiaXQgdG8gdGhlIHJpZ2h0IHNlIHdlIGdldCBiYWNrIFsyICogayArIDFdIGluIHRoZSBlbmQuICopXG4gICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgIEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHQgbiAxKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfOGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gIHVuc2FmZV9nZXQ4IGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfMTZiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzMyYml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzY0Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDY0IHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfaW50NjRfYml0cyBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMTZfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmszMl9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50MzIgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazY0X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0YmUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3Ncbjs7XG5cblslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMDcsIDApXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfc3RyaW5nX3NldDY0dVwiXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5cblslJWVuZGlmXVxuXG5sZXQgYmluX3JlYWRfbWQ1IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IGEgPSB1bnNhZmVfZ2V0NjQgYnVmIHBvcyBpblxuICAgIGxldCBiID0gdW5zYWZlX2dldDY0IGJ1ZiAocG9zICsgOCkgaW5cbiAgICB1bnNhZmVfYnl0ZXNfc2V0NjQgcmVzIDAgYTtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0NjQgcmVzIDggYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfZ2V0MzIgYnVmIHBvcyBpblxuICAgIGxldCBiID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgNCkgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDgpIGluXG4gICAgbGV0IGQgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyAxMikgaW5cbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDAgYTtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDQgYjtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDggYztcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDEyIGQpO1xuICBNZDVfbGliLnVuc2FmZV9vZl9iaW5hcnkgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzKVxuOztcbiIsImluY2x1ZGUgQmluX3NoYXBlXG5cbigqIG5ldyBiYXNlIHNoYXBlcyAqKVxubGV0IGJpbl9zaGFwZV91bml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidW5pdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9ib29sID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYm9vbFwiKSBbXVxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJieXRlc1wiKSBbXVxubGV0IGJpbl9zaGFwZV9jaGFyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiY2hhclwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDMyXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDYzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjNcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXRpdmVpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0MCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5hdDBcIikgW11cbmxldCBiaW5fc2hhcGVfZGlnZXN0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZGlnZXN0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X3ZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDMyX21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0NjRfbWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm1hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJiaWdzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0YXJyYXlcIikgW11cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2YXJpYW50X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF84Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF8xNmJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMzJiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzY0Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NF9iaXRzXCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMTZfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmszMl9pbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrNjRfaW50NjRcIikgW11cblxuKCogbmV3IHNoYXBlIGNvbnN0cnVjdG9ycyAqKVxubGV0IGJpbl9zaGFwZV9yZWYgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInJlZlwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9vcHRpb24geCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm9wdGlvblwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9saXN0IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJsaXN0XCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2FycmF5IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJhcnJheVwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHggeSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImhhc2h0YmxcIikgWyB4OyB5IF1cblxuKCogc2hhcGUtY29uc3RydWN0b3IgYWxpYXNlcyAqKVxubGV0IGJpbl9zaGFwZV9sYXp5IHggPSB4XG5sZXQgYmluX3NoYXBlX3BhaXIgeCB5ID0gdHVwbGUgWyB4OyB5IF1cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHggeSB6ID0gdHVwbGUgWyB4OyB5OyB6IF1cbiIsIigqIFNpemU6IGNvbXB1dGUgc2l6ZSBvZiB2YWx1ZXMgaW4gdGhlIGJpbmFyeSBwcm90b2NvbC4gKilcblxub3BlbiBCaWdhcnJheVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcblxub3BlbiBDb21tb25cblxubW9kdWxlIE1heGltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSAxXG4gIGxldCBiaW5fc2l6ZV9ib29sID0gMVxuICBsZXQgYmluX3NpemVfY2hhciA9IDFcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1heCBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gOFxuICBsZXQgYmluX3NpemVfaW50MzIgPSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NCA9IDlcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IGJpbl9zaXplX2ludF9uYXQwXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gMVxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gMlxuICBsZXQgYmluX3NpemVfaW50XzMyYml0ID0gNFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gOFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSAyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50ID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludCA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IDhcbmVuZFxuXG5tb2R1bGUgTWluaW11bSA9IHN0cnVjdFxuICBsZXQgYmluX3NpemVfdW5pdCA9IE1heGltdW0uYmluX3NpemVfdW5pdFxuICBsZXQgYmluX3NpemVfYm9vbCA9IE1heGltdW0uYmluX3NpemVfYm9vbFxuICBsZXQgYmluX3NpemVfY2hhciA9IE1heGltdW0uYmluX3NpemVfY2hhclxuICBsZXQgYmluX3NpemVfbWQ1ID0gMTZcbiAgbGV0IGJpbl9zaXplX2ludF9uYXQwID0gMVxuICBsZXQgYmluX3NpemVfaW50X25lZ2F0aXZlID0gMlxuICBsZXQgYmluX3NpemVfaW50ID0gbWluIGJpbl9zaXplX2ludF9uYXQwIGJpbl9zaXplX2ludF9uZWdhdGl2ZVxuICBsZXQgYmluX3NpemVfZmxvYXQgPSBNYXhpbXVtLmJpbl9zaXplX2Zsb2F0XG4gIGxldCBiaW5fc2l6ZV9pbnQzMiA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfaW50NjQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX3JlZiA9IDFcbiAgbGV0IGJpbl9zaXplX2xhenlfdCA9IDFcbiAgbGV0IGJpbl9zaXplX29wdGlvbiA9IDFcbiAgbGV0IGJpbl9zaXplX3BhaXIgPSAxICsgMVxuICBsZXQgYmluX3NpemVfdHJpcGxlID0gMSArIDEgKyAxXG4gIGxldCBiaW5fc2l6ZV9sZW4gPSBiaW5fc2l6ZV9uYXQwXG4gIGxldCBiaW5fc2l6ZV9saXN0ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfaGFzaHRibCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9ieXRlcyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDMyX3ZlYyA9IGJpbl9zaXplX3ZlY1xuICBsZXQgYmluX3NpemVfZmxvYXQ2NF92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2xlbiArIGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgPSBiaW5fc2l6ZV9tYXRcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9iaWdzdHJpbmcgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0YXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IE1heGltdW0uYmluX3NpemVfdmFyaWFudF9pbnRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfOGJpdFxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfMTZiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzMyYml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF82NGJpdFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IE1heGltdW0uYmluX3NpemVfaW50NjRfYml0c1xuICBsZXQgYmluX3NpemVfbmV0d29yazE2X2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazE2X2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzJcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazY0X2ludDY0XG5lbmRcblxudHlwZSAnYSBzaXplciA9ICdhIC0+IGludFxudHlwZSAoJ2EsICdiKSBzaXplcjEgPSAnYSBzaXplciAtPiAnYiBzaXplclxudHlwZSAoJ2EsICdiLCAnYykgc2l6ZXIyID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYykgc2l6ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2l6ZXIzID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYywgJ2QpIHNpemVyMlxuXG5sZXQgYmluX3NpemVfdW5pdCAoKSA9IDFcbmxldCBiaW5fc2l6ZV9ib29sIF8gPSAxXG5cbmxldCBiaW5fc2l6ZV9pbnRfbmF0MCBuID1cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgbiA8IDB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAoKiAweDgwMDAwMDAwICopIDEgbHNsIDMxXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgbiA9XG4gIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuIDwgKCogLTB4ODAwMDAwMDAgKikgLSgxIGxzbCAzMSlcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX2NoYXIgXyA9IDFcbmxldCBiaW5fc2l6ZV9pbnQgbiA9IGlmIG4gPj0gMCB0aGVuIGJpbl9zaXplX2ludF9uYXQwIG4gZWxzZSBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgblxuXG5sZXQgYmluX3NpemVfbmF0MCBuYXQwID1cbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHgxMDAwMDAwMDAgKikgMSBsc2wgMzJcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHNpemVfbGVuID0gYmluX3NpemVfbmF0MCBwbGVuIGluXG4gIHNpemVfbGVuICsgbGVuXG47O1xuXG5sZXQgYmluX3NpemVfc3RyaW5nIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoU3RyaW5nLmxlbmd0aCBzdHIpXG5sZXQgYmluX3NpemVfYnl0ZXMgc3RyID0gYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIChCeXRlcy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX21kNSBfID0gMTZcblxubGV0IGJpbl9zaXplX2Zsb2F0IGYgPVxuICAoKiBJZiB3ZSBqdXN0IGlnbm9yZSB0aGUgYXJndW1lbnQgdGhlIGNvbXBpbGVyIHdpbGwgc3RpbGwgcmVxdWlyZSBpdCB0byBleGlzdCBhbmQgYmVcbiAgICAgYm94ZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBmb3IgaW5zdGFuY2Ugd2UgY2FsbCB0aGlzIGZvciBhIGZpZWxkIG9mIGEgZmxvYXQgcmVjb3JkLFxuICAgICB0aGUgY29tcGlsZXIgd2lsbCBhbGxvY2F0ZSB0aGUgZmxvYXQgZm9yIG5vdGhpbmcuXG5cbiAgICAgV2l0aCB0aGlzIGxpbmUgdGhlIGNvbXBpbGVyIHJlYWxseSBpZ25vcmVzIHRoZSBmbG9hdC4gKilcbiAgaWdub3JlICh0cnVuY2F0ZSBmKTtcbiAgOFxuOztcblxubGV0IGJpbl9zaXplX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbCB0aGVuIDUgZWxzZSBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl9zaXplX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50IChJbnQ2NC50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50MzIgKEludDY0LnRvX2ludDMyIG4pXG47O1xuXG5sZXQgYmluX3NpemVfbmF0aXZlaW50ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQ2NCAoSW50NjQub2ZfbmF0aXZlaW50IG4pXG4gIGVsc2UgZnVuIG4gLT4gYmluX3NpemVfaW50MzIgKE5hdGl2ZWludC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX3JlZiBiaW5fc2l6ZV9lbCByID0gYmluX3NpemVfZWwgIXJcbmxldCBiaW5fc2l6ZV9sYXp5X3QgYmluX3NpemVfZWwgbHYgPSBiaW5fc2l6ZV9lbCAoTGF6eS5mb3JjZSBsdilcbmxldCBiaW5fc2l6ZV9sYXp5ID0gYmluX3NpemVfbGF6eV90XG5cbmxldCBiaW5fc2l6ZV9vcHRpb24gYmluX3NpemVfZWwgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMVxuICB8IFNvbWUgdiAtPiAxICsgYmluX3NpemVfZWwgdlxuOztcblxubGV0IGJpbl9zaXplX3BhaXIgYmluX3NpemVfYSBiaW5fc2l6ZV9iIChhLCBiKSA9IGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYlxuXG5sZXQgYmluX3NpemVfdHJpcGxlIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIChhLCBiLCBjKSA9XG4gIGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYiArIGJpbl9zaXplX2MgY1xuOztcblxubGV0IGJpbl9zaXplX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYyB+bGVuX2FjYyBsc3QgPVxuICAgIG1hdGNoIGxzdCB3aXRoXG4gICAgfCBbXSAtPiBzaXplX2FjYyArIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW5fYWNjKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzooc2l6ZV9hY2MgKyBiaW5fc2l6ZV9lbCBoZCkgfmxlbl9hY2M6KGxlbl9hY2MgKyAxKSB0bFxuICBpblxuICBmdW4gYmluX3NpemVfZWwgbHN0IC0+IGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzowIH5sZW5fYWNjOjAgbHN0XG47O1xuXG5sZXQgYmluX3NpemVfbGVuIGxlbiA9XG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBiaW5fc2l6ZV9uYXQwIHBsZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdGFycmF5IGFyID1cbiAgbGV0IGxlbiA9IEZsb2F0LkFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRfYXJyYXkgYXIgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAoOCAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4gPVxuICBsZXQgdG90YWxfbGVuX3JlZiA9IHJlZiB0b3RhbF9sZW4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgbGV0IGVsID0gQXJyYXkudW5zYWZlX2dldCBhciBpIGluXG4gICAgdG90YWxfbGVuX3JlZiA6PSAhdG90YWxfbGVuX3JlZiArIGJpbl9zaXplX2VsIGVsXG4gIGRvbmU7XG4gICF0b3RhbF9sZW5fcmVmXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXkgKHR5cGUgYSkgYmluX3NpemVfZWwgYXIgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fc2l6ZV9lbCA6IGEgc2l6ZXIpIDogZmxvYXQgc2l6ZXIpID09IGJpbl9zaXplX2Zsb2F0XG4gIHRoZW4gYmluX3NpemVfZmxvYXRfYXJyYXkgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCB0b3RhbF9sZW4gPSBiaW5fc2l6ZV9sZW4gbiBpblxuICAgIGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbiB+bilcbjs7XG5cbmxldCBiaW5fc2l6ZV9oYXNodGJsIGJpbl9zaXplX2tleSBiaW5fc2l6ZV92YWwgaHRibCA9XG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgdG90YWxfbGVuID1cbiAgICBpbmNyIGNudF9yZWY7XG4gICAgdG90YWxfbGVuICsgYmluX3NpemVfa2V5IGsgKyBiaW5fc2l6ZV92YWwgdlxuICBpblxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgdG90YWxfbGVuID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIChiaW5fc2l6ZV9sZW4gbGVuKSBpblxuICBpZiAhY250X3JlZiA8PiBsZW4gdGhlbiByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBcImJpbl9zaXplX2hhc2h0YmxcIjtcbiAgdG90YWxfbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZ2VuX3ZlYyB2ZWMgbXVsdGlwbGllciA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHZlYyBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKG11bHRpcGxpZXIgKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgdmVjID0gYmluX3NpemVfZ2VuX3ZlYyB2ZWMgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDhcbmxldCBiaW5fc2l6ZV92ZWMgPSBiaW5fc2l6ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3NpemVfZ2VuX21hdCBtYXQgbXVsdGlwbGllciA9XG4gIGxldCBkaW0xID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBkaW0yID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBzaXplID0gZGltMSAqIGRpbTIgaW5cbiAgYmluX3NpemVfbGVuIGRpbTEgKyBiaW5fc2l6ZV9sZW4gZGltMiArIChtdWx0aXBsaWVyICogc2l6ZSlcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdDMyX21hdCBtYXQgPSBiaW5fc2l6ZV9nZW5fbWF0IG1hdCA0XG5sZXQgYmluX3NpemVfZmxvYXQ2NF9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgOFxubGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NpemVfYmlnc3RyaW5nIGJ1ZiA9IGJpbl9zaXplX2dlbl92ZWMgYnVmIDFcbmxldCBiaW5fc2l6ZV92YXJpYW50X2ludCBfID0gNFxubGV0IGJpbl9zaXplX2ludF84Yml0IF8gPSAxXG5sZXQgYmluX3NpemVfaW50XzE2Yml0IF8gPSAyXG5sZXQgYmluX3NpemVfaW50XzMyYml0IF8gPSA0XG5sZXQgYmluX3NpemVfaW50XzY0Yml0IF8gPSA4XG5sZXQgYmluX3NpemVfaW50NjRfYml0cyBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgXyA9IDJcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50IF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyIF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazY0X2ludCBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCBfID0gOFxuIiwiKCogVHBfY2xhc3M6IHNpemVycywgd3JpdGVycywgYW5kIHJlYWRlcnMgaW4gcmVjb3JkcyAqKVxuXG50eXBlICdhIHdyaXRlciA9XG4gIHsgc2l6ZSA6ICdhIFNpemUuc2l6ZXJcbiAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICB9XG5cbnR5cGUgJ2EgcmVhZGVyID1cbiAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICB9XG5cbnR5cGUgJ2EgdCA9XG4gIHsgc2hhcGUgOiBTaGFwZS50XG4gIDsgd3JpdGVyIDogJ2Egd3JpdGVyXG4gIDsgcmVhZGVyIDogJ2EgcmVhZGVyXG4gIH1cblxudHlwZSAnYSB3cml0ZXIwID0gJ2Egd3JpdGVyXG50eXBlICdhIHJlYWRlcjAgPSAnYSByZWFkZXJcbnR5cGUgJ2EgdDAgPSAnYSB0XG5cbm1vZHVsZSBTMSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gJ2Igd3JpdGVyMFxuICB0eXBlICgnYSwgJ2IpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gJ2IgcmVhZGVyMFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSB0MCAtPiAnYiB0MFxuZW5kXG5cbm1vZHVsZSBTMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICgnYiwgJ2MpIFMxLndyaXRlclxuICB0eXBlICgnYSwgJ2IsICdjKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MpIFMxLnJlYWRlclxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgdDAgLT4gKCdiLCAnYykgUzEudFxuZW5kXG5cbm1vZHVsZSBTMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAoJ2IsICdjLCAnZCkgUzIud3JpdGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MsICdkKSBTMi5yZWFkZXJcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSB0MCAtPiAoJ2IsICdjLCAnZCkgUzIudFxuZW5kXG5cbmxldCB2YXJpYW50X3dyb25nX3R5cGUgbmFtZSBfYnVmIH5wb3NfcmVmIF94ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lICFwb3NfcmVmXG47O1xuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMuU3RyICopXG4oKiQgbWtfYmFzZSBcInVuaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfdW5pdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdW5pdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdCB9XG5sZXQgYmluX3JlYWRlcl91bml0ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF91bml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgfVxubGV0IGJpbl9zaGFwZV91bml0ID0gU2hhcGUuYmluX3NoYXBlX3VuaXRcblxubGV0IGJpbl91bml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV91bml0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3VuaXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfdW5pdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImJvb2xcIiAqKVxubGV0IGJpbl93cml0ZXJfYm9vbCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYm9vbDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYm9vbCB9XG5sZXQgYmluX3JlYWRlcl9ib29sID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9ib29sOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJib29sXCIgfVxubGV0IGJpbl9zaGFwZV9ib29sID0gU2hhcGUuYmluX3NoYXBlX2Jvb2xcblxubGV0IGJpbl9ib29sID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9ib29sOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Jvb2w7IHJlYWRlciA9IGJpbl9yZWFkZXJfYm9vbCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcInN0cmluZ1wiICopXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3N0cmluZzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfc3RyaW5nIH1cblxubGV0IGJpbl9yZWFkZXJfc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9zdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX3N0cmluZ1xuXG5sZXQgYmluX3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfc3RyaW5nOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3N0cmluZzsgcmVhZGVyID0gYmluX3JlYWRlcl9zdHJpbmcgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJieXRlc1wiICopXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYnl0ZXM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2J5dGVzIH1cblxubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2J5dGVzOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBTaGFwZS5iaW5fc2hhcGVfYnl0ZXNcblxubGV0IGJpbl9ieXRlcyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYnl0ZXM7IHdyaXRlciA9IGJpbl93cml0ZXJfYnl0ZXM7IHJlYWRlciA9IGJpbl9yZWFkZXJfYnl0ZXMgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJjaGFyXCIgKilcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2NoYXI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2NoYXIgfVxubGV0IGJpbl9yZWFkZXJfY2hhciA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfY2hhcjsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiIH1cbmxldCBiaW5fc2hhcGVfY2hhciA9IFNoYXBlLmJpbl9zaGFwZV9jaGFyXG5cbmxldCBiaW5fY2hhciA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfY2hhcjsgd3JpdGVyID0gYmluX3dyaXRlcl9jaGFyOyByZWFkZXIgPSBiaW5fcmVhZGVyX2NoYXIgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludCB9XG5sZXQgYmluX3JlYWRlcl9pbnQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XCIgfVxubGV0IGJpbl9zaGFwZV9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XG5sZXQgYmluX2ludCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQgfVxuXG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdFxuXG5sZXQgYmluX2Zsb2F0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDMyID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQzMjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50MzIgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50MzI7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9pbnQzMlxuXG5sZXQgYmluX2ludDMyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQzMjsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQzMjsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQzMiB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDY0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjQgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50NjQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFNoYXBlLmJpbl9zaGFwZV9pbnQ2NFxuXG5sZXQgYmluX2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ2NDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ2NDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQ2NCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5hdGl2ZWludFwiICopXG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdGl2ZWludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0aXZlaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFNoYXBlLmJpbl9zaGFwZV9uYXRpdmVpbnRcblxubGV0IGJpbl9uYXRpdmVpbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25hdGl2ZWludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmF0aXZlaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uYXRpdmVpbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuYXQwXCIgKilcbmxldCBiaW5fd3JpdGVyX25hdDAgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdDA7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25hdDAgfVxubGV0IGJpbl9yZWFkZXJfbmF0MCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0MDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmF0MFwiIH1cbmxldCBiaW5fc2hhcGVfbmF0MCA9IFNoYXBlLmJpbl9zaGFwZV9uYXQwXG5cbmxldCBiaW5fbmF0MCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmF0MDsgd3JpdGVyID0gYmluX3dyaXRlcl9uYXQwOyByZWFkZXIgPSBiaW5fcmVhZGVyX25hdDAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwicmVmXCIgKilcbmxldCBiaW5fd3JpdGVyX3JlZiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfcmVmIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9yZWYgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9yZWYgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfcmVmIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9yZWYgeDEgPSBTaGFwZS5iaW5fc2hhcGVfcmVmIHgxXG5cbmxldCBiaW5fcmVmIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcmVmIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfcmVmIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3JlZiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImxhenlcIiAqKVxubGV0IGJpbl93cml0ZXJfbGF6eSBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfbGF6eSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfbGF6eSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2xhenkgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfbGF6eSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2xhenkgeDEgPSBTaGFwZS5iaW5fc2hhcGVfbGF6eSB4MVxuXG5sZXQgYmluX2xhenkgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9sYXp5IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbGF6eSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9sYXp5IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwib3B0aW9uXCIgKilcbmxldCBiaW5fd3JpdGVyX29wdGlvbiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfb3B0aW9uIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9vcHRpb24gYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfb3B0aW9uIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9vcHRpb24geDEgPSBTaGFwZS5iaW5fc2hhcGVfb3B0aW9uIHgxXG5cbmxldCBiaW5fb3B0aW9uIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfb3B0aW9uIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfb3B0aW9uIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX29wdGlvbiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcInBhaXJcIiAqKVxubGV0IGJpbl93cml0ZXJfcGFpciBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX3BhaXIgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfcGFpciBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9wYWlyIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX3BhaXIgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJwYWlyXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9wYWlyIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX3BhaXIgeDEgeDJcblxubGV0IGJpbl9wYWlyIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcGFpciBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3BhaXIgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3BhaXIgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UzIFwidHJpcGxlXCIgKilcbmxldCBiaW5fd3JpdGVyX3RyaXBsZSBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiBiaW5fd3JpdGVyX2VsMyA9XG4gIHsgc2l6ZSA9XG4gICAgICAoZnVuIHYgLT5cbiAgICAgICAgIFNpemUuYmluX3NpemVfdHJpcGxlIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSBiaW5fd3JpdGVyX2VsMy5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfdHJpcGxlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwxLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwyLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwzLndyaXRlXG4gICAgICAgICAgIGJ1ZlxuICAgICAgICAgICB+cG9zXG4gICAgICAgICAgIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiBiaW5fcmVhZGVyX2VsMyA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF90cmlwbGVcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDEucmVhZFxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMi5yZWFkXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwzLnJlYWRcbiAgICAgICAgICAgYnVmXG4gICAgICAgICAgIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInRyaXBsZVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHgxIHgyIHgzID0gU2hhcGUuYmluX3NoYXBlX3RyaXBsZSB4MSB4MiB4M1xuXG5sZXQgYmluX3RyaXBsZSBiaW5fZWwxIGJpbl9lbDIgYmluX2VsMyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdHJpcGxlIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZSBiaW5fZWwzLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl90cmlwbGUgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXIgYmluX2VsMy53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlciBiaW5fZWwzLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJsaXN0XCIgKilcbmxldCBiaW5fd3JpdGVyX2xpc3QgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2xpc3QgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2xpc3QgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9saXN0IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2xpc3QgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJsaXN0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9saXN0IHgxID0gU2hhcGUuYmluX3NoYXBlX2xpc3QgeDFcblxubGV0IGJpbl9saXN0IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbGlzdCBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2xpc3QgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbGlzdCBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImFycmF5XCIgKilcbmxldCBiaW5fd3JpdGVyX2FycmF5IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9hcnJheSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfYXJyYXkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9hcnJheSBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9hcnJheSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImFycmF5XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9hcnJheSB4MSA9IFNoYXBlLmJpbl9zaGFwZV9hcnJheSB4MVxuXG5sZXQgYmluX2FycmF5IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYXJyYXkgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9hcnJheSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9hcnJheSBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcImhhc2h0YmxcIiAqKVxubGV0IGJpbl93cml0ZXJfaGFzaHRibCBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibCBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX2hhc2h0YmwgeDEgeDJcblxubGV0IGJpbl9oYXNodGJsIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaGFzaHRibCBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2hhc2h0YmwgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2hhc2h0YmwgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDMyX3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQzMl92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG5cbmxldCBiaW5fZmxvYXQzMl92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDMyX3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDY0X3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ2NF92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fZmxvYXQ2NF92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDY0X3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJ2ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfdmVjID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3ZlYyB9XG5sZXQgYmluX3JlYWRlcl92ZWMgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidmVjXCIgfVxubGV0IGJpbl9zaGFwZV92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3ZlYyA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdmVjOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3ZlYzsgcmVhZGVyID0gYmluX3JlYWRlcl92ZWMgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0MzJfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDMyX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcblxubGV0IGJpbl9mbG9hdDMyX21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQzMl9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDMyX21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0NjRfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDY0X21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDY0X21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm1hdFwiICopXG5sZXQgYmluX3dyaXRlcl9tYXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbWF0IH1cbmxldCBiaW5fcmVhZGVyX21hdCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiB9XG5sZXQgYmluX3NoYXBlX21hdCA9IFNoYXBlLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fbWF0ID0geyBzaGFwZSA9IGJpbl9zaGFwZV9tYXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfbWF0OyByZWFkZXIgPSBiaW5fcmVhZGVyX21hdCB9XG5cbigqJCBta19iYXNlIFwiYmlnc3RyaW5nXCIgKilcbmxldCBiaW5fd3JpdGVyX2JpZ3N0cmluZyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYmlnc3RyaW5nOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmcgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfYmlnc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX2JpZ3N0cmluZ1xuXG5sZXQgYmluX2JpZ3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYmlnc3RyaW5nXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9iaWdzdHJpbmdcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2JpZ3N0cmluZ1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0YXJyYXlcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXRhcnJheTsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheSB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0YXJyYXlcblxubGV0IGJpbl9mbG9hdGFycmF5ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdGFycmF5XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdGFycmF5XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdGFycmF5XG4gIH1cbjs7XG5cbigqJCopXG5cbigqJCBta19iYXNlIFwidmFyaWFudF9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfdmFyaWFudF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX3ZhcmlhbnRfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV92YXJpYW50X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl92YXJpYW50X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdmFyaWFudF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInZhcmlhbnRfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV92YXJpYW50X2ludCA9IFNoYXBlLmJpbl9zaGFwZV92YXJpYW50X2ludFxuXG5sZXQgYmluX3ZhcmlhbnRfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV92YXJpYW50X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdmFyaWFudF9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3ZhcmlhbnRfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzhiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzhiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF84Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfOGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfOGJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzhiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF84Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfOGJpdFxuXG5sZXQgYmluX2ludF84Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfOGJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzhiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF84Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzE2Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF8xNmJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzE2Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfMTZiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzE2Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfMTZiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF8xNmJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzE2Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF8xNmJpdFxuXG5sZXQgYmluX2ludF8xNmJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzE2Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfMTZiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF8xNmJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF8zMmJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfMzJiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF8zMmJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzMyYml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF8zMmJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzMyYml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfMzJiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF8zMmJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfMzJiaXRcblxubGV0IGJpbl9pbnRfMzJiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF8zMmJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzMyYml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfMzJiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfNjRiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzY0Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfNjRiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfNjRiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF82NGJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzY0Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfNjRiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzY0Yml0XG5cbmxldCBiaW5faW50XzY0Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfNjRiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF82NGJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzY0Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50NjRfYml0c1wiICopXG5sZXQgYmluX3dyaXRlcl9pbnQ2NF9iaXRzID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NF9iaXRzOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NF9iaXRzIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludDY0X2JpdHMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDY0X2JpdHM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0X2JpdHNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBTaGFwZS5iaW5fc2hhcGVfaW50NjRfYml0c1xuXG5sZXQgYmluX2ludDY0X2JpdHMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDY0X2JpdHNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDY0X2JpdHNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDY0X2JpdHNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMTZfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmsxNl9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmsxNl9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazE2X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazE2X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazE2X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMTZfaW50XG5cbmxldCBiaW5fbmV0d29yazE2X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazE2X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazE2X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmszMl9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazMyX2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazMyX2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmszMl9pbnRcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazMyX2ludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDMyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMzJfaW50MzIgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50MzJcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50MzJcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzJcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMlxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrNjRfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcms2NF9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrNjRfaW50XG5cbmxldCBiaW5fbmV0d29yazY0X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazY0X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazY0X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcms2NF9pbnQ2NFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDY0XG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludDY0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazY0X2ludDY0XG5cbmxldCBiaW5fbmV0d29yazY0X2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0XG4gIH1cbjs7XG5cbigqJCopXG5cbigqIENvbnZlcnNpb24gb2YgYmluYWJsZSB0eXBlcyAqKVxuXG5sZXQgY252X3dyaXRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gdHBfY2xhc3Muc2l6ZSAoY252IHYpKVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IHRwX2NsYXNzLndyaXRlIGJ1ZiB+cG9zIChjbnYgdikpXG4gIH1cbjs7XG5cbmxldCBjbnZfcmVhZGVyIGNudiB0cF9jbGFzcyA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGNudiAodHBfY2xhc3MucmVhZCBidWYgfnBvc19yZWYpKVxuICA7IHZ0YWdfcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIHZ0YWcgLT4gY252ICh0cF9jbGFzcy52dGFnX3JlYWQgYnVmIH5wb3NfcmVmIHZ0YWcpKVxuICB9XG47O1xuXG5sZXQgY252IGZvcl9zaGFwZSBmb3Jfd3JpdGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MgPVxuICB7IHNoYXBlID0gZm9yX3NoYXBlIHRwX2NsYXNzLnNoYXBlXG4gIDsgd3JpdGVyID0gY252X3dyaXRlciBmb3Jfd3JpdGVyIHRwX2NsYXNzLndyaXRlclxuICA7IHJlYWRlciA9IGNudl9yZWFkZXIgZm9yX3JlYWRlciB0cF9jbGFzcy5yZWFkZXJcbiAgfVxuOztcbiIsIigqIEJpbmFibGU6IHNpZ25hdHVyZXMgZGVmaW5pbmcgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBmb3IgdGhlIGJpbmFyeSBwcm90b2NvbC5cbiAgIFtTLCBTMSwgZXRjXSBhcmUgdGhlIHNpZ25hdHVyZXMgc2F0aXNmaWVkIGJ5IHRoZSBnZW5lcmF0ZWQgY29kZSBhbmRcbiAgIFtNaW5pbWFsLlMsIE1pbmltYWwuUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHRoYXQgZ2VuZXJhdGVkIGNvZGUgdXNlcy4gKilcblxuKCogdGhlIHN1YnNldCBvZiBTIGNvbnRhaW5pbmcgb25seSBmdW5jdGlvbnMsIHNvIHRoYXQgb25lIGNhbiByZWN1cnNpdmVseSBkZWZpbmUgbW9kdWxlc1xuICAgaW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlICopXG5tb2R1bGUgdHlwZSBTX29ubHlfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfdCA6IHQgV3JpdGUud3JpdGVyXG4gIHZhbCBiaW5fcmVhZF90IDogdCBSZWFkLnJlYWRlclxuXG4gICgqKlxuICAgICBUaGlzIGZ1bmN0aW9uIG9ubHkgbmVlZHMgaW1wbGVtZW50YXRpb24gaWYgW3RdIGV4cG9zZWQgdG8gYmUgYSBwb2x5bW9ycGhpYyB2YXJpYW50LlxuICAgICBEZXNwaXRlIHdoYXQgdGhlIHR5cGUgcmVhZHMsIHRoaXMgZG9lcyAqbm90KiBwcm9kdWNlIGEgZnVuY3Rpb24gYWZ0ZXIgcmVhZGluZztcbiAgICAgaW5zdGVhZCBpdCB0YWtlcyB0aGUgY29uc3RydWN0b3IgdGFnIChpbnQpIGJlZm9yZSByZWFkaW5nIGFuZCByZWFkcyB0aGUgcmVzdCBvZiB0aGVcbiAgICAgdmFyaWFudCBbdF0gYWZ0ZXJ3YXJkcy5cbiAgKilcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKGludCAtPiB0KSBSZWFkLnJlYWRlclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBTX29ubHlfZnVuY3Rpb25zIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gIHZhbCBiaW5fd3JpdGVyX3QgOiB0IFR5cGVfY2xhc3Mud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiB0IFR5cGVfY2xhc3MucmVhZGVyXG4gIHZhbCBiaW5fdCA6IHQgVHlwZV9jbGFzcy50XG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYSB0KSBTaXplLnNpemVyMVxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdhIHQpIFJlYWQucmVhZGVyMVxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsIGludCAtPiAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFNpemUuc2l6ZXIyXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFdyaXRlLndyaXRlcjJcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgaW50IC0+ICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFdyaXRlLndyaXRlcjNcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLnRcbmVuZFxuXG5tb2R1bGUgTWluaW1hbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiB0IFNpemUuc2l6ZXJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICAgIHZhbCBiaW5fcmVhZF90IDogdCBSZWFkLnJlYWRlclxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYSB0KSBTaXplLnNpemVyMVxuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2EgdCkgV3JpdGUud3JpdGVyMVxuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsIGludCAtPiAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFdyaXRlLndyaXRlcjJcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFNpemUuc2l6ZXIzXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsICdjLCBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICBlbmRcbmVuZFxuIiwiKCogVXRpbHM6IHV0aWxpdHkgZnVuY3Rpb25zIGZvciB1c2VyIGNvbnZlbmllbmNlICopXG5cbm9wZW4gQ29tbW9uXG5vcGVuIFNpemVcbm9wZW4gVHlwZV9jbGFzc1xuaW5jbHVkZSBVdGlsc19pbnRmXG5cbmxldCBzaXplX2hlYWRlcl9sZW5ndGggPSA4XG5sZXQgYmluX3dyaXRlX3NpemVfaGVhZGVyID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdFxubGV0IGJpbl9yZWFkX3NpemVfaGVhZGVyID0gUmVhZC5iaW5fcmVhZF9pbnRfNjRiaXRcblxubGV0IGJpbl9kdW1wID8oaGVhZGVyID0gZmFsc2UpIHdyaXRlciB2ID1cbiAgbGV0IGJ1ZiwgcG9zLCBwb3NfbGVuID1cbiAgICBsZXQgdl9sZW4gPSB3cml0ZXIuc2l6ZSB2IGluXG4gICAgaWYgaGVhZGVyXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdG90X2xlbiA9IHZfbGVuICsgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB0b3RfbGVuIGluXG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zOjAgdl9sZW4gaW5cbiAgICAgIGJ1ZiwgcG9zLCBwb3MgKyB2X2xlbilcbiAgICBlbHNlIChcbiAgICAgIGxldCBidWYgPSBjcmVhdGVfYnVmIHZfbGVuIGluXG4gICAgICBidWYsIDAsIHZfbGVuKVxuICBpblxuICBsZXQgcG9zID0gd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYgaW5cbiAgaWYgcG9zID0gcG9zX2xlblxuICB0aGVuIGJ1ZlxuICBlbHNlIGZhaWx3aXRoIFwiQmluX3Byb3QuVXRpbHMuYmluX2R1bXA6IHNpemUgY2hhbmdlZCBkdXJpbmcgd3JpdGluZ1wiXG47O1xuXG4oKiBSZWFkaW5nIGZyb20gc3RyZWFtcyAqKVxuXG5sZXQgYmluX3JlYWRfc3RyZWFtID9tYXhfc2l6ZSB+cmVhZCByZWFkZXIgPVxuICBsZXQgYnVmID0gY3JlYXRlX2J1ZiBzaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgcmVhZCBidWYgfnBvczowIH5sZW46c2l6ZV9oZWFkZXJfbGVuZ3RoO1xuICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gIGxldCBsZW4gPSBiaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgbWF0Y2ggbWF4X3NpemUgd2l0aFxuICB8IFNvbWUgbWF4X3NpemUgd2hlbiBsZW4gPiBtYXhfc2l6ZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc3RyZWFtOiBzaXplIGV4Y2VlZHMgbWF4X3NpemU6ICVkID4gJWRcIlxuICAgICAgICAgbGVuXG4gICAgICAgICBtYXhfc2l6ZSlcbiAgfCBfIC0+XG4gICAgbGV0IGJ1ZiA9IGlmIGxlbiA+IHNpemVfaGVhZGVyX2xlbmd0aCB0aGVuIGNyZWF0ZV9idWYgbGVuIGVsc2UgYnVmIGluXG4gICAgcmVhZCBidWYgfnBvczowIH5sZW47XG4gICAgcG9zX3JlZiA6PSAwO1xuICAgIGxldCByZXMgPSByZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBpZiAhcG9zX3JlZiA9IGxlblxuICAgIHRoZW4gcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbXNnID1cbiAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogcHJvdG9jb2wgbGllZCBhYm91dCBsZW5ndGggb2YgdmFsdWU6IGV4cGVjdGVkIFxcXG4gICAgICAgICAgICVkLCByZWNlaXZlZCAlZFwiXG4gICAgICAgICAgbGVuXG4gICAgICAgICAgIXBvc19yZWZcbiAgICAgIGluXG4gICAgICBmYWlsd2l0aCBtc2cpXG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubW9kdWxlIE9mX21pbmltYWwgKFMgOiBCaW5hYmxlLk1pbmltYWwuUykgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gUy50ID0gc3RydWN0XG4gIGluY2x1ZGUgU1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgPSB7IHNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgcmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgbGV0IGJpbl90ID0geyBzaGFwZSA9IGJpbl9zaGFwZV90OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3Q7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB9XG5lbmRcblxubGV0IG1heWJlX2Fubm90YXRlX3NoYXBlIG1heWJlX3V1aWQgc2hhcGUgPVxuICBtYXRjaCBtYXliZV91dWlkIHdpdGhcbiAgfCBOb25lIC0+IHNoYXBlXG4gIHwgU29tZSB1dWlkIC0+IFNoYXBlLmFubm90YXRlIHV1aWQgc2hhcGVcbjs7XG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgT2ZfbWluaW1hbCAoc3RydWN0XG4gICAgICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gICAgICB0eXBlIHQgPSBTLnRcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gbWF5YmVfYW5ub3RhdGVfc2hhcGUgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHkgQi5iaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IEIuYmluX3NpemVfdCAoUy50b19iaW5hYmxlIHQpXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9IEIuYmluX3dyaXRlX3QgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID0gUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmKVxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIGJ1ZiB+cG9zX3JlZiBuID0gUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbCA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGUgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHkgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsIHQgPSBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwgKFMudG9fYmluYWJsZSB0KVxuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTEuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzcy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzcy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlXG4gICAgICBTLm1heWJlX2NhbGxlcl9pZGVudGl0eVxuICAgICAgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgdCA9XG4gICAgQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMi5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM19nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiBiaW5fc2hhcGVfZWwzID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiBiaW5fc2hhcGVfZWwzKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgYmluX3NpemVfZWwzIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJpbl93cml0ZV9lbDMgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgdHlwZV9jbGFzczMgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZSB0eXBlX2NsYXNzMy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXIgdHlwZV9jbGFzczMud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlciB0eXBlX2NsYXNzMy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGVfd2l0aF91dWlkX3NwZWMpID0gTWFrZV9iaW5hYmxlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTFfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUyX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTJfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlM193aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUzX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5sZXQgd2l0aF9tb2R1bGVfbmFtZSBmIH5tb2R1bGVfbmFtZSBmdW5jdGlvbl9uYW1lID1cbiAgbWF0Y2ggbW9kdWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gZiBmdW5jdGlvbl9uYW1lXG4gIHwgU29tZSBtb2R1bGVfbmFtZSAtPiBQcmludGYua3NwcmludGYgZiBcIiVzLiVzXCIgbW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uID0gd2l0aF9tb2R1bGVfbmFtZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvblxuXG5sZXQgcmFpc2VfcmVhZF90b29fbXVjaCA9XG4gIHdpdGhfbW9kdWxlX25hbWVcbiAgICAoUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoIFwiJXM6IHRyaWVkIHRvIHJlYWQgbW9yZSBlbGVtZW50cyB0aGFuIGF2YWlsYWJsZVwiKVxuOztcblxubGV0IHJhaXNlX3JlYWRfbm90X2Vub3VnaCA9XG4gIHdpdGhfbW9kdWxlX25hbWUgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiBkaWRuJ3QgcmVhZCBhbGwgZWxlbWVudHNcIilcbjs7XG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGVfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiNjU5MjM3MWEtNDk5NC0xMWU2LTkyM2EtNzc0OGU0MTgyNzY0XCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlMV9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImFjOGE5ZmY0LTQ5OTQtMTFlNi05YTFiLTlmYjRlOTMzYmQ5ZFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0IF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYnVmIH5wb3NfcmVmIF9uID0gcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyLnNpemUgdilcbiAgICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyID1cbiAgICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiBfbiAtPiBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIF9uKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlMl9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdDEgdDIgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJiNGU1NGFkMi00OTk0LTExZTYtYjhkZi04N2MyOTk3ZjlmNTJcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdDEgdDIgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYmluX3NpemVfYiB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2Jpbl9yZWFkX2IgX2J1ZiB+cG9zX3JlZiBfbiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiBuIC0+XG4gICAgICAgICAgIF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYgbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMyAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTNfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyIHQzID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiZjIxMTJlZGEtZTdkNy0xMWU2LWJiMzYtMDcyZTljZTE1OWRiXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIHQzIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2Jpbl9yZWFkX2IgX2Jpbl9yZWFkX2MgX2J1ZiB+cG9zX3JlZiBfbiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiBiaW5fd3JpdGVyMyA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIGJpbl93cml0ZXIzLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAgIGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJpbl93cml0ZXIzLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgYmluX3JlYWRlcjMgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICAgIGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYgbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG4iLCIoKipcbiAgIFRoaXMgbW9kdWxlIGRlZmluZXMgZGVmYXVsdCBjb252ZXJ0ZXJzIGZvciB0aGUgdHlwZXMgZGVmaW5lZCBpbiB0aGUgT0NhbWxcbiAgIHN0YW5kYXJkIGxpYnJhcnkuXG4qKVxuXG5pbmNsdWRlIFNpemVcblxubGV0IGJpbl91bml0ID0gVHlwZV9jbGFzcy5iaW5fdW5pdFxubGV0IGJpbl9zaGFwZV91bml0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfdW5pdFxubGV0IGJpbl93cml0ZXJfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl91bml0XG5sZXQgYmluX3dyaXRlX3VuaXQgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdFxubGV0IGJpbl9yZWFkZXJfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl91bml0XG5sZXQgYmluX3JlYWRfdW5pdCA9IFJlYWQuYmluX3JlYWRfdW5pdFxuXG5sZXQgX19iaW5fcmVhZF91bml0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYm9vbCA9IFR5cGVfY2xhc3MuYmluX2Jvb2xcbmxldCBiaW5fc2hhcGVfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Jvb2xcbmxldCBiaW5fd3JpdGVyX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYm9vbFxubGV0IGJpbl93cml0ZV9ib29sID0gV3JpdGUuYmluX3dyaXRlX2Jvb2xcbmxldCBiaW5fcmVhZGVyX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYm9vbFxubGV0IGJpbl9yZWFkX2Jvb2wgPSBSZWFkLmJpbl9yZWFkX2Jvb2xcblxubGV0IF9fYmluX3JlYWRfYm9vbF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYm9vbFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3N0cmluZ1xubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9zdHJpbmdcbmxldCBiaW5fd3JpdGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9zdHJpbmdcbmxldCBiaW5fd3JpdGVfc3RyaW5nID0gV3JpdGUuYmluX3dyaXRlX3N0cmluZ1xubGV0IGJpbl9yZWFkZXJfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3N0cmluZ1xubGV0IGJpbl9yZWFkX3N0cmluZyA9IFJlYWQuYmluX3JlYWRfc3RyaW5nXG5cbmxldCBfX2Jpbl9yZWFkX3N0cmluZ19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwic3RyaW5nXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9ieXRlc1xubGV0IGJpbl9zaGFwZV9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2J5dGVzXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9ieXRlc1xubGV0IGJpbl93cml0ZV9ieXRlcyA9IFdyaXRlLmJpbl93cml0ZV9ieXRlc1xubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYnl0ZXNcbmxldCBiaW5fcmVhZF9ieXRlcyA9IFJlYWQuYmluX3JlYWRfYnl0ZXNcblxubGV0IF9fYmluX3JlYWRfYnl0ZXNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJ5dGVzXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fY2hhciA9IFR5cGVfY2xhc3MuYmluX2NoYXJcbmxldCBiaW5fc2hhcGVfY2hhciA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2NoYXJcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfY2hhclxubGV0IGJpbl93cml0ZV9jaGFyID0gV3JpdGUuYmluX3dyaXRlX2NoYXJcbmxldCBiaW5fcmVhZGVyX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfY2hhclxubGV0IGJpbl9yZWFkX2NoYXIgPSBSZWFkLmJpbl9yZWFkX2NoYXJcblxubGV0IF9fYmluX3JlYWRfY2hhcl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2ludCA9IFR5cGVfY2xhc3MuYmluX2ludFxubGV0IGJpbl9zaGFwZV9pbnQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9pbnRcbmxldCBiaW5fd3JpdGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnRcbmxldCBiaW5fd3JpdGVfaW50ID0gV3JpdGUuYmluX3dyaXRlX2ludFxubGV0IGJpbl9yZWFkZXJfaW50ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2ludFxubGV0IGJpbl9yZWFkX2ludCA9IFJlYWQuYmluX3JlYWRfaW50XG5sZXQgX19iaW5fcmVhZF9pbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0XG5sZXQgYmluX3JlYWRfZmxvYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdGFycmF5XG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlcl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0YXJyYXlcbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0YXJyYXlcbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5ID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0YXJyYXlfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0YXJyYXlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX2ludDMyXG5sZXQgYmluX3NoYXBlX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50MzJcbmxldCBiaW5fd3JpdGVyX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDMyXG5sZXQgYmluX3dyaXRlX2ludDMyID0gV3JpdGUuYmluX3dyaXRlX2ludDMyXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQzMlxubGV0IGJpbl9yZWFkX2ludDMyID0gUmVhZC5iaW5fcmVhZF9pbnQzMlxuXG5sZXQgX19iaW5fcmVhZF9pbnQzMl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX2ludDY0XG5sZXQgYmluX3NoYXBlX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50NjRcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDY0XG5sZXQgYmluX3dyaXRlX2ludDY0ID0gV3JpdGUuYmluX3dyaXRlX2ludDY0XG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQ2NFxubGV0IGJpbl9yZWFkX2ludDY0ID0gUmVhZC5iaW5fcmVhZF9pbnQ2NFxuXG5sZXQgX19iaW5fcmVhZF9pbnQ2NF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9uYXRpdmVpbnRcbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludFxuXG5sZXQgX19iaW5fcmVhZF9uYXRpdmVpbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlZlxubGV0IGJpbl9zaGFwZV9yZWYgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9yZWZcbmxldCBiaW5fd3JpdGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9yZWZcbmxldCBiaW5fd3JpdGVfcmVmID0gV3JpdGUuYmluX3dyaXRlX3JlZlxubGV0IGJpbl9yZWFkZXJfcmVmID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3JlZlxubGV0IGJpbl9yZWFkX3JlZiA9IFJlYWQuYmluX3JlYWRfcmVmXG5cbmxldCBfX2Jpbl9yZWFkX3JlZl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fbGF6eVxubGV0IGJpbl9zaGFwZV9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5X3QgPSBXcml0ZS5iaW5fd3JpdGVfbGF6eVxubGV0IGJpbl9yZWFkZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5X3QgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV90X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eSA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xhenlcbmxldCBiaW5fd3JpdGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGF6eVxubGV0IGJpbl9yZWFkX2xhenkgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX29wdGlvblxubGV0IGJpbl9zaGFwZV9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9vcHRpb25cbmxldCBiaW5fd3JpdGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9vcHRpb25cbmxldCBiaW5fd3JpdGVfb3B0aW9uID0gV3JpdGUuYmluX3dyaXRlX29wdGlvblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX29wdGlvblxubGV0IGJpbl9yZWFkX29wdGlvbiA9IFJlYWQuYmluX3JlYWRfb3B0aW9uXG5cbmxldCBfX2Jpbl9yZWFkX29wdGlvbl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGlzdCA9IFR5cGVfY2xhc3MuYmluX2xpc3RcbmxldCBiaW5fc2hhcGVfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xpc3RcbmxldCBiaW5fd3JpdGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGlzdFxubGV0IGJpbl93cml0ZV9saXN0ID0gV3JpdGUuYmluX3dyaXRlX2xpc3RcbmxldCBiaW5fcmVhZGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGlzdFxubGV0IGJpbl9yZWFkX2xpc3QgPSBSZWFkLmJpbl9yZWFkX2xpc3RcblxubGV0IF9fYmluX3JlYWRfbGlzdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fYXJyYXlcbmxldCBiaW5fc2hhcGVfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9hcnJheVxubGV0IGJpbl93cml0ZXJfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYXJyYXlcbmxldCBiaW5fd3JpdGVfYXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfYXJyYXlcbmxldCBiaW5fcmVhZGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2FycmF5XG5sZXQgYmluX3JlYWRfYXJyYXkgPSBSZWFkLmJpbl9yZWFkX2FycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2FycmF5X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9oYXNodGJsXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9oYXNodGJsXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2hhc2h0YmxcbmxldCBiaW5fd3JpdGVfaGFzaHRibCA9IFdyaXRlLmJpbl93cml0ZV9oYXNodGJsXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2hhc2h0YmxcbmxldCBiaW5fcmVhZF9oYXNodGJsID0gUmVhZC5iaW5fcmVhZF9oYXNodGJsXG5cbmxldCBfX2Jpbl9yZWFkX2hhc2h0YmxfXyBfZiBfZyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9iaWdzdHJpbmdcbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlX2JpZ3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZF9iaWdzdHJpbmcgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9iaWdzdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX21hdCA9IFR5cGVfY2xhc3MuYmluX21hdFxubGV0IGJpbl9zaGFwZV9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fd3JpdGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9tYXRcbmxldCBiaW5fd3JpdGVfbWF0ID0gV3JpdGUuYmluX3dyaXRlX21hdFxubGV0IGJpbl9yZWFkZXJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX21hdFxubGV0IGJpbl9yZWFkX21hdCA9IFJlYWQuYmluX3JlYWRfbWF0XG5sZXQgX19iaW5fcmVhZF9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQzMl9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3ZlY1xubGV0IGJpbl9zaGFwZV92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl92ZWNcbmxldCBiaW5fd3JpdGVfdmVjID0gV3JpdGUuYmluX3dyaXRlX3ZlY1xubGV0IGJpbl9yZWFkZXJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3ZlY1xubGV0IGJpbl9yZWFkX3ZlYyA9IFJlYWQuYmluX3JlYWRfdmVjXG5sZXQgX19iaW5fcmVhZF92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiICFwb3NfcmVmXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1kNV9saWJcblxuICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICBTaGFwZS5iYXNldHlwZSAoU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJmNmJkY2RkMC05Zjc1LTExZTYtOWE3ZS1kMzAyMDQyOGVmZWRcIikgW11cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX3QgPSBTaXplLmJpbl9zaXplX21kNVxuICAgIGxldCBiaW5fd3JpdGVfdCA9IFdyaXRlLmJpbl93cml0ZV9tZDVcbiAgICBsZXQgYmluX3JlYWRfdCA9IFJlYWQuYmluX3JlYWRfbWQ1XG5cbiAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfdmRpZ2VzdCA9XG4gICAgICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiU2hhcGUuTWQ1LnRcIiAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgKCogd2UgYXNzdW1lIHRoaXMgdHlwZSB0byBoYXZlIGEgc3RhYmxlIGZvcm1hdCAqKVxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG4iLCJvcGVuIENvbW1vblxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBiaW5fc2hhcGVfdCB0ID1cbiAgICBTaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiODVhMjU1N2UtNDkwYS0xMWU2LTk4YWMtNGI4OTUzZDUyNWZlXCIpIFsgdCBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYSA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJpbl9zaXplX2EgYVxuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBidWYgfnBvcyBhID1cbiAgICBsZXQgc3RhcnRfYSA9IHBvcyArIFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgIGxldCBlbmRfYSA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zOnN0YXJ0X2EgYSBpblxuICAgIGxldCBzaXplID0gZW5kX2EgLSBzdGFydF9hIGluXG4gICAgbGV0IHdyaXR0ZW4gPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgIGFzc2VydCAod3JpdHRlbiA9IHN0YXJ0X2EpO1xuICAgIGVuZF9hXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBleHBlY3RlZF9zaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IHN0YXJ0X2EgPSAhcG9zX3JlZiBpblxuICAgIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgZW5kX2EgPSAhcG9zX3JlZiBpblxuICAgIGlmIGVuZF9hIC0gc3RhcnRfYSA8PiBleHBlY3RlZF9zaXplXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgIFwiQmluX3Byb3QuQmxvYi5iaW5fcmVhZF90OiBzaXplICglZCkgPD4gZXhwZWN0ZWQgKCVkKVwiXG4gICAgICAgICAgIChlbmRfYSAtIHN0YXJ0X2EpXG4gICAgICAgICAgIGV4cGVjdGVkX3NpemUpO1xuICAgIGFcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyBfIH5wb3NfcmVmID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLnRcIiAhcG9zX3JlZlxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgaWQgPSAnYVxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBVdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgbW9kdWxlIEJpbmFibGUgPSBUXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBvZl9iaW5hYmxlIHQgPSB0XG4gICAgbGV0IHRvX2JpbmFibGUgdCA9IHRcbiAgZW5kKVxuXG5tb2R1bGUgT3BhcXVlID0gc3RydWN0XG4gICgqIFtCaWdzdHJpbmddIGFuZCBbU3RyaW5nXSBzaGFyZSBbYmluX3NoYXBlX3RdIGJlY2F1c2UgdGhleSBoYXZlIGV4YWN0bHkgdGhlIHNhbWVcbiAgICAgc2VyaWFsaXphdGlvbiBmb3JtYXQgYW5kIHRoZXkgZGVub3RlIHRoZSBzYW1lIHZhbHVlcy5cblxuICAgICBJbiBmYWN0IGFsbW9zdCBjZXJ0YWlubHkgW0Jsb2IudF0gaXRzZWxmIHNob3VsZCBoYXZlIHRoZSBzYW1lIGJpbl9zaGFwZV90IGFzIHdlbGwuICopXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTFmNzZlLTQ5MGEtMTFlNi04NmE5LTViZWY1ODVmMjYwMlwiKSBbXSlcbiAgOztcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgKCogW2J1Zl0gaXMgdGhlIGJpbi1pbyBkYXRhIGV4Y2x1ZGluZyB0aGUgc2l6ZSBoZWFkZXIuIFdoZW4gKGRlLSlzZXJpYWxpemVkLCB0aGUgc2l6ZVxuICAgICAgIGhlYWRlciBpcyBpbmNsdWRlZC4gKilcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYnVmXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IGJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgYnVmX2xlbiB0XG5cbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgbGV0IHNpemUgPSBidWZfbGVuIHQgaW5cbiAgICAgICAgbGV0IHBvcyA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgICAgIGJsaXRfYnVmIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyBzaXplO1xuICAgICAgICBwb3MgKyBzaXplXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBsZXQgdCA9IGNyZWF0ZV9idWYgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3BvczohcG9zX3JlZiB+ZHN0OnQgfmRzdF9wb3M6MCBzaXplO1xuICAgICAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgc2l6ZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLk9wYXF1ZS50XCIgIXBvc19yZWZcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFV0aWxzLk9mX21pbmltYWwgKFQpXG5cbiAgICBsZXQgdG9fb3BhcXVlIGJsb2IgYmluX3dyaXRlciA9IFV0aWxzLmJpbl9kdW1wIGJpbl93cml0ZXIgYmxvYlxuICAgIGxldCBvZl9vcGFxdWVfZXhuICh0IDogdCkgYmluX3JlYWRlciA9IGJpbl9yZWFkZXIuVHlwZV9jbGFzcy5yZWFkIHQgfnBvc19yZWY6KHJlZiAwKVxuXG4gICAgKCogQmlnc3RyaW5ncyBhcmUgYSBwcmltaXRpdmUgdHlwZSB0aGF0IHBvbHltb3JwaGljIGNvbXBhcmUgaGFuZGxlcyB3ZWxsLiAqKVxuICAgIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogYnVmIC0+IGJ1ZiAtPiBpbnQpXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgUHB4X3NleHBfY29udl9saWIuU2V4cC5BdG9tIChvZl9vcGFxdWVfZXhuIHQgVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3N0cmluZylcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIFN0cmluZy5sZW5ndGggdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBDb21tb24uYmxpdF9zdHJpbmdfYnVmIHQgfnNyY19wb3M6MCBidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgIGJsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgIGxldCBsZW4gPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zOiFwb3NfcmVmIH5sZW4gaW5cbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIGxlbjtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLk9wYXF1ZS50XCIgIXBvc19yZWZcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFV0aWxzLk9mX21pbmltYWwgKFQpXG5cbiAgICBsZXQgbGVuZ3RoIHQgPSBTdHJpbmcubGVuZ3RoIHRcblxuICAgIGxldCB0b19vcGFxdWUgfmJ1ZiB2IGJpbl93cml0ZXJfdiA6IHQgPVxuICAgICAgbGV0IHBvcyA9IDAgaW5cbiAgICAgIGxldCBsZW4gPSBiaW5fd3JpdGVyX3YuVHlwZV9jbGFzcy53cml0ZSBidWYgfnBvcyB2IGluXG4gICAgICBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IG9mX29wYXF1ZV9leG4gfmJ1ZiAodCA6IHQpIGJpbl9yZWFkZXJfdiA9XG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gICAgICBDb21tb24uYmxpdF9zdHJpbmdfYnVmIHQgYnVmIH5sZW47XG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVzID0gYmluX3JlYWRlcl92LlR5cGVfY2xhc3MucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgIGlmICFwb3NfcmVmIDw+IGxlblxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgIFwiT3BhcXVlIGJsb2IgaGFzICVkIGJ5dGVzIGJ1dCBbb2Zfb3BhcXVlX2V4bl0gcmVhZCAlZFwiXG4gICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICFwb3NfcmVmXG4gICAgICAgIGluXG4gICAgICAgIGZhaWx3aXRoIGVycm9yKVxuICAgICAgZWxzZSByZXNcbiAgICA7O1xuXG4gICAgKCogU3RyaW5ncyBhcmUgYSBwcmltaXRpdmUgdHlwZSB0aGF0IHBvbHltb3JwaGljIGNvbXBhcmUgaGFuZGxlcyB3ZWxsLiAqKVxuICAgIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBpbnQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IFBweF9zZXhwX2NvbnZfbGliLkNvbnYuc2V4cF9vZl9zdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIElnbm9yZWQgPSBzdHJ1Y3RcbiAgKCogVGhlIHJlcHJlc2VudGF0aW9uIG9mIGFuIGlnbm9yZWQgdmFsdWUgaXMganVzdCB0aGUgc2l6ZSBvZiB0aGUgdmFsdWUgaXQgd2FzIGNyZWF0ZWRcbiAgICAgZnJvbSAoaS5lLiwgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdlcmUgaWdub3JlZCBmcm9tIHRoZSBidWZmZXIgd2Ugd2VyZSByZWFkaW5nXG4gICAgIC0tIHdlIGV4Y2x1ZGUgdGhlIDggYnl0ZSBzaXplIGhlYWRlciBmcm9tIHdoaWNoIHRoZSBzaXplIHdhcyByZWFkKS4gKilcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IGJpbl9zaXplX3Qgc2l6ZSA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIHNpemVcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBzaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgc2l6ZVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLklnbm9yZWQudFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuZW5kXG4iLCJtb2R1bGUgdHlwZSBTID0gc2lnXG4gIHZhbCBwcmVfdGVzdF9ob29rIDogdW5pdCAtPiB1bml0XG5lbmRcblxubGV0IHByZV90ZXN0X2hvb2sgPSBpZ25vcmVcbiIsIlslJWltcG9ydCBcImNvbmZpZy5oXCJdXG5cbm9wZW4hIEJhc2VcblxuWyUlaWZkZWYgSlNDX0FSQ0hfU0lYVFlGT1VSXVxuXG5leHRlcm5hbCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbiAgOiAgdW5pdFxuICAtPiBJbnQ2My50XG4gID0gXCJ0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cIlxuW0BAbm9hbGxvY11cblxuWyUlZWxzZV1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcblxuWyUlZW5kaWZdXG5bJSVpZmRlZiBKU0NfUE9TSVhfVElNRVJTXVxuXG5sZXRbQGNvbGRdIGdldHRpbWVfZmFpbGVkICgpID0gZmFpbHdpdGggXCJjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSBmYWlsZWRcIlxuXG5bJSVlbHNlXVxuXG5sZXRbQGNvbGRdIGdldHRpbWVfZmFpbGVkICgpID0gZmFpbHdpdGggXCJnZXR0aW1lb2ZkYXkgZmFpbGVkXCJcblxuWyUlZW5kaWZdXG5cbmxldCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpID1cbiAgbGV0IHQgPSBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm8gKCkgaW5cbiAgaWYgSW50NjMuKCA8PiApIHQgSW50NjMuemVybyB0aGVuIHQgZWxzZSBnZXR0aW1lX2ZhaWxlZCAoKVxuOztcbiIsIm1vZHVsZSBUZXN0X3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU3VjY2Vzc1xuICAgIHwgRmFpbHVyZVxuICAgIHwgRXJyb3JcblxuICBsZXQgdG9fZXhpdF9jb2RlID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gMFxuICAgIHwgRmFpbHVyZSAtPiAyXG4gICAgfCBFcnJvciAtPiAxXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdWNjZXNzIC0+IFwic3VjY2Vzc1wiXG4gICAgfCBGYWlsdXJlIC0+IFwiZmFpbHVyZVwiXG4gICAgfCBFcnJvciAtPiBcImVycm9yXCJcbiAgOztcblxuICBsZXQgY29tYmluZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFN1Y2Nlc3MsIFN1Y2Nlc3MgLT4gU3VjY2Vzc1xuICAgIHwgRXJyb3IsIF8gfCBfLCBFcnJvciAtPiBFcnJvclxuICAgIHwgRmFpbHVyZSwgXyB8IF8sIEZhaWx1cmUgLT4gRmFpbHVyZVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbCB0cyA9IExpc3QuZm9sZF9sZWZ0IGNvbWJpbmUgU3VjY2VzcyB0c1xuZW5kXG5cbmxldCBwYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZyA9XG4gIHRyeSBBcmcucGFyc2VfYXJndiBhcmd2IGwgZiBtc2cgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICBleGl0IDFcbiAgfCBBcmcuSGVscCBtc2cgLT5cbiAgICBQcmludGYucHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgZXhpdCAwXG47O1xuXG50eXBlIGRlc2NyID0gc3RyaW5nXG5cbmxldCB0ZXN0X21vZHVsZXNfcmFuID0gcmVmIDBcbmxldCB0ZXN0X21vZHVsZXNfZmFpbGVkID0gcmVmIDBcbmxldCB0ZXN0c19yYW4gPSByZWYgMFxubGV0IHRlc3RzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgZHluYW1pY19saWIgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG5cbnR5cGUgZmlsZW5hbWUgPSBzdHJpbmdcbnR5cGUgbGluZV9udW1iZXIgPSBpbnRcbnR5cGUgc3RhcnRfcG9zID0gaW50XG50eXBlIGVuZF9wb3MgPSBpbnRcbnR5cGUgY29uZmlnID0gKG1vZHVsZSBJbmxpbmVfdGVzdF9jb25maWcuUylcblxudHlwZSAnYSB0ZXN0X2Z1bmN0aW9uX2FyZ3MgPVxuICBjb25maWc6Y29uZmlnXG4gIC0+IGRlc2NyOmRlc2NyIExhenkudFxuICAtPiB0YWdzOnN0cmluZyBsaXN0XG4gIC0+IGZpbGVuYW1lOmZpbGVuYW1lXG4gIC0+IGxpbmVfbnVtYmVyOmxpbmVfbnVtYmVyXG4gIC0+IHN0YXJ0X3BvczpzdGFydF9wb3NcbiAgLT4gZW5kX3BvczplbmRfcG9zXG4gIC0+ICdhXG5cbm1vZHVsZSBUYWdfcHJlZGljYXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyByZXF1aXJlZF90YWdzIDogc3RyaW5nIGxpc3RcbiAgICA7IGRyb3BwZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgfVxuXG4gIGxldCBpbml0aWFsID0geyByZXF1aXJlZF90YWdzID0gW107IGRyb3BwZWRfdGFncyA9IFsgXCJkaXNhYmxlZFwiIF0gfVxuXG4gIGxldCBkcm9wIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IHRhZyA6OiB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IExpc3QuZmlsdGVyICgoIDw+ICkgdGFnKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlcXVpcmUgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gTGlzdC5maWx0ZXIgKCggPD4gKSB0YWcpIHQuZHJvcHBlZF90YWdzXG4gICAgOyByZXF1aXJlZF90YWdzID0gdGFnIDo6IHQucmVxdWlyZWRfdGFnc1xuICAgIH1cbiAgOztcblxuICBsZXQgZW50aXJlX21vZHVsZV9kaXNhYmxlZCB0IH5wYXJ0aWFsX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biBkcm9wcGVkIC0+IExpc3QubWVtIGRyb3BwZWQgdGFncykgdC5kcm9wcGVkX3RhZ3NcbiAgOztcblxuICBsZXQgZGlzYWJsZWQgdCB+Y29tcGxldGVfdGFnczp0YWdzID1cbiAgICBMaXN0LmV4aXN0cyAoZnVuIHJlcSAtPiBub3QgKExpc3QubWVtIHJlcSB0YWdzKSkgdC5yZXF1aXJlZF90YWdzXG4gICAgfHwgTGlzdC5leGlzdHMgKGZ1biBkcm9wcGVkIC0+IExpc3QubWVtIGRyb3BwZWQgdGFncykgdC5kcm9wcGVkX3RhZ3NcbiAgOztcbmVuZFxuXG50eXBlIHdoaWNoX3Rlc3RzID1cbiAgeyBsaWJuYW1lIDogc3RyaW5nXG4gIDsgb25seV90ZXN0X2xvY2F0aW9uIDogKGZpbGVuYW1lICogbGluZV9udW1iZXIgb3B0aW9uICogYm9vbCByZWYpIGxpc3RcbiAgOyBuYW1lX2ZpbHRlciA6IHN0cmluZyBsaXN0XG4gIDsgd2hpY2hfdGFncyA6IFRhZ19wcmVkaWNhdGUudFxuICB9XG5cbnR5cGUgdGVzdF9tb2RlID1cbiAgeyB3aGljaF90ZXN0cyA6IHdoaWNoX3Rlc3RzXG4gIDsgd2hhdF90b19kbyA6IFsgYFJ1bl9wYXJ0aXRpb24gb2Ygc3RyaW5nIG9wdGlvbiB8IGBMaXN0X3BhcnRpdGlvbnMgXVxuICB9XG5cbm1vZHVsZSBBY3Rpb24gOiBzaWdcbiAgdHlwZSB0ID1cbiAgICBbIGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gICAgXVxuXG4gIHZhbCBnZXQgOiB1bml0IC0+IHRcbiAgdmFsIHNldCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICAgIF1cblxuICBsZXQgYWN0aW9uIDogdCByZWYgPSByZWYgYElnbm9yZVxuXG4gIGxldCBmb3JjZV9kcm9wID1cbiAgICB0cnlcbiAgICAgIGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIiA6IHN0cmluZyk7XG4gICAgICB0cnVlXG4gICAgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGdldCAoKSA9XG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBjb21waWxpbmcgdG8gamF2YXNjcmlwdC5cbiAgICAgICBKc19vZl9vY2FtbCBjYW4gc3RhdGljYWxseSBldmFsdWF0ZSBbU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIl1cbiAgICAgICBhbmQgaW5saW5lIHRoZSByZXN1bHQgKFtgSWdub3JlXSkgd2hlbmV2ZXIgW2dldCAoKV0gaXMgY2FsbGVkLlxuICAgICAgIFVuaXQgdGVzdHMgY2FuIHRoZW4gYmUgdHJlYXRlZCBhcyBkZWFkY29kZSBzaW5jZSB0aGUgYXJndW1lbnQgW2ZdIG9mIHRoZSBbdGVzdF1cbiAgICAgICBmdW5jdGlvbiBiZWxvdyBpcyBuZXZlciB1c2VkLiAqKVxuICAgIGlmIGZvcmNlX2Ryb3AgdGhlbiBgSWdub3JlIGVsc2UgIWFjdGlvblxuICA7O1xuXG4gIGxldCBzZXQgdiA9IGFjdGlvbiA6PSB2XG5lbmRcblxubW9kdWxlIFBhcnRpdGlvbiA6IHNpZ1xuICB2YWwgZm91bmRfdGVzdCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgc2V0X2N1cnJlbnQgOiBzdHJpbmcgLT4gdW5pdFxuICB2YWwgaXNfY3VycmVudCA6IHN0cmluZyBvcHRpb24gLT4gYm9vbFxuICB2YWwgYWxsIDogdW5pdCAtPiBzdHJpbmcgbGlzdFxuZW5kID0gc3RydWN0XG4gIGxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSAyM1xuICBsZXQgY3VycmVudCA9IHJlZiBcIlwiXG4gIGxldCBzZXRfY3VycmVudCB4ID0gY3VycmVudCA6PSB4XG5cbiAgbGV0IGZvdW5kX3Rlc3QgKCkgPVxuICAgIGlmICFjdXJyZW50IDw+IFwiXCIgJiYgbm90IChIYXNodGJsLm1lbSBhbGwgIWN1cnJlbnQpIHRoZW4gSGFzaHRibC5hZGQgYWxsICFjdXJyZW50ICgpXG4gIDs7XG5cbiAgbGV0IGlzX2N1cnJlbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIHAgLT4gcCA9ICFjdXJyZW50XG4gIDs7XG5cbiAgbGV0IGFsbCAoKSA9IExpc3Quc29ydCBTdHJpbmcuY29tcGFyZSAoSGFzaHRibC5mb2xkIChmdW4gayAoKSBhY2MgLT4gayA6OiBhY2MpIGFsbCBbXSlcbmVuZFxuXG5tb2R1bGUgTW9kdWxlX2NvbnRleHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG9uZV9tb2R1bGUgPVxuICAgICAgeyBkZXNjciA6IHN0cmluZ1xuICAgICAgOyB0YWdzIDogc3RyaW5nIGxpc3RcbiAgICAgIH1cblxuICAgIHR5cGUgdCA9IG9uZV9tb2R1bGUgbGlzdFxuXG4gICAgbGV0IGRlc2NyIHQgPSBMaXN0Lm1hcCAoZnVuIG0gLT4gbS5kZXNjcikgdFxuICAgIGxldCB0YWdzIHQgPSBMaXN0LmNvbmNhdCAoTGlzdC5tYXAgKGZ1biBtIC0+IG0udGFncykgdClcbiAgZW5kXG5cbiAgbGV0IGN1cnJlbnQgOiBULnQgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHdpdGhfIH5kZXNjciB+dGFncyBmID1cbiAgICBsZXQgcHJldiA9ICFjdXJyZW50IGluXG4gICAgY3VycmVudCA6PSB7IFQuZGVzY3I7IHRhZ3MgfSA6OiBwcmV2O1xuICAgIHRyeVxuICAgICAgbGV0IHggPSBmICgpIGluXG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICB4XG4gICAgd2l0aFxuICAgIHwgZSAtPlxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgcmFpc2UgZVxuICA7O1xuXG4gIGxldCBjdXJyZW50X2Rlc2NyICgpID0gVC5kZXNjciAhY3VycmVudFxuICBsZXQgY3VycmVudF90YWdzICgpID0gVC50YWdzICFjdXJyZW50XG5lbmRcblxubGV0IHZlcmJvc2UgPSByZWYgZmFsc2VcbmxldCBzdHJpY3QgPSByZWYgZmFsc2VcbmxldCBzaG93X2NvdW50cyA9IHJlZiBmYWxzZVxubGV0IGxpc3RfdGVzdF9uYW1lcyA9IHJlZiBmYWxzZVxubGV0IGRlbGF5ZWRfZXJyb3JzID0gcmVmIFtdXG5sZXQgc3RvcF9vbl9lcnJvciA9IHJlZiBmYWxzZVxubGV0IGxvZyA9IHJlZiBOb25lXG5sZXQgdGltZV9zZWMgPSByZWYgMC5cbmxldCB1c2VfY29sb3IgPSByZWYgdHJ1ZVxubGV0IGluX3BsYWNlID0gcmVmIGZhbHNlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE5vbmVcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gcmVmIE5vbmVcbmxldCBkaWZmX3BhdGhfcHJlZml4ID0gcmVmIE5vbmVcblxubGV0IGRpc3BsYXllZF9kZXNjciBkZXNjciBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zID1cbiAgbGV0IChsYXp5IGRlc2NyKSA9IGRlc2NyIGluXG4gIFByaW50Zi5zcHJpbnRmXG4gICAgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkJXNcIlxuICAgIGZpbGVuYW1lXG4gICAgbGluZVxuICAgIHN0YXJ0X3Bvc1xuICAgIGVuZF9wb3NcbiAgICAoaWYgZGVzY3IgPSBcIlwiIHRoZW4gXCJcIiBlbHNlIFwiOiBcIiBeIGRlc2NyKVxuOztcblxubGV0IHBhcnNlX2Rlc2NyIHN0ciA9XG4gIHRyeVxuICAgIFNvbWVcbiAgICAgIChTY2FuZi5zc2NhbmZcbiAgICAgICAgIHN0clxuICAgICAgICAgXCIgRmlsZSAlUyAsIGxpbmUgJWQgLCBjaGFyYWN0ZXJzICVkIC0gJWQgJSFcIlxuICAgICAgICAgKGZ1biBmaWxlIGxpbmUgX3N0YXJ0X3BvcyBfZW5kX3BvcyAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoXG4gIHwgXyAtPlxuICAgICh0cnlcbiAgICAgICBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICUhXCIgKGZ1biBmaWxlIGxpbmUgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgICAgd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAlIVwiIChmdW4gZmlsZSAtPiBmaWxlLCBOb25lKSkgd2l0aFxuICAgICAgICB8IF8gLT4gTm9uZSkpXG47O1xuXG5sZXQgKCkgPVxuICBpZiBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLmFtX3Rlc3RpbmdcbiAgdGhlbiAoXG4gICAgbWF0Y2ggQXJyYXkudG9fbGlzdCBTeXMuYXJndiB3aXRoXG4gICAgfCBuYW1lIDo6IFwiaW5saW5lLXRlc3QtcnVubmVyXCIgOjogbGliIDo6IHJlc3QgLT5cbiAgICAgICgqIHdoZW4gd2Ugc2VlIHRoaXMgYXJndW1lbnQsIHdlIHN3aXRjaCB0byB0ZXN0IG1vZGUgKilcbiAgICAgIGxldCB0ZXN0cyA9IHJlZiBbXSBpblxuICAgICAgbGV0IGxpc3RfcGFydGl0aW9ucyA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IHBhcnRpdGlvbiA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgdGFnX3ByZWRpY2F0ZSA9IHJlZiBUYWdfcHJlZGljYXRlLmluaXRpYWwgaW5cbiAgICAgIGxldCBuYW1lX2ZpbHRlciA9IHJlZiBbXSBpblxuICAgICAgcGFyc2VfYXJndlxuICAgICAgICAoQXJyYXkub2ZfbGlzdCAobmFtZSA6OiByZXN0KSlcbiAgICAgICAgKEFyZy5hbGlnblxuICAgICAgICAgICBbICggXCItbGlzdC10ZXN0LW5hbWVzXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0XG4gICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbGlzdF90ZXN0X25hbWVzIDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgOj0gdHJ1ZSlcbiAgICAgICAgICAgICAsIFwiIERvIG5vdCBydW4gdGVzdHMgYnV0IHNob3cgd2hhdCB3b3VsZCBoYXZlIGJlZW4gcnVuXCIgKVxuICAgICAgICAgICA7ICggXCItbGlzdC1wYXJ0aXRpb25zXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF9wYXJ0aXRpb25zIDo9IHRydWUpXG4gICAgICAgICAgICAgLCBcIiBMaXN0cyBhbGwgdGhlIHBhcnRpdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0IG9uZSB0ZXN0IG9yIHRlc3RfbW9kdWxlXCIgKVxuICAgICAgICAgICA7ICggXCItcGFydGl0aW9uXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBpIC0+IHBhcnRpdGlvbiA6PSBTb21lIGkpXG4gICAgICAgICAgICAgLCBcIiBPbmx5IHJ1biB0aGUgdGVzdHMgaW4gdGhlIGdpdmVuIHBhcnRpdGlvblwiIClcbiAgICAgICAgICAgOyBcIi12ZXJib3NlXCIsIEFyZy5TZXQgdmVyYm9zZSwgXCIgU2hvdyB0aGUgdGVzdHMgYXMgdGhleSBydW5cIlxuICAgICAgICAgICA7ICggXCItc3RvcC1vbi1lcnJvclwiXG4gICAgICAgICAgICAgLCBBcmcuU2V0IHN0b3Bfb25fZXJyb3JcbiAgICAgICAgICAgICAsIFwiIFJ1biB0ZXN0cyBvbmx5IHVwIHRvIHRoZSBmaXJzdCBlcnJvciAoZG9lc24ndCB3b3JrIGZvciBleHBlY3QgdGVzdHMpXCIgKVxuICAgICAgICAgICA7IFwiLXN0cmljdFwiLCBBcmcuU2V0IHN0cmljdCwgXCIgRW5kIHdpdGggYW4gZXJyb3IgaWYgbm8gdGVzdHMgd2VyZSBydW5cIlxuICAgICAgICAgICA7IFwiLXNob3ctY291bnRzXCIsIEFyZy5TZXQgc2hvd19jb3VudHMsIFwiIFNob3cgdGhlIG51bWJlciBvZiB0ZXN0cyByYW5cIlxuICAgICAgICAgICA7ICggXCItbG9nXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0XG4gICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKHRyeSBTeXMucmVtb3ZlIFwiaW5saW5lX3Rlc3RzLmxvZ1wiIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICAgICAgICAgICAgICAgIGxvZyA6PSBTb21lIChvcGVuX291dCBcImlubGluZV90ZXN0cy5sb2dcIikpXG4gICAgICAgICAgICAgLCBcIiBMb2cgdGhlIHRlc3RzIHJ1biBpbiBpbmxpbmVfdGVzdHMubG9nXCIgKVxuICAgICAgICAgICA7ICggXCItZHJvcC10YWdcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLmRyb3AgIXRhZ19wcmVkaWNhdGUgcylcbiAgICAgICAgICAgICAsIFwidGFnIE9ubHkgcnVuIHRlc3RzIG5vdCB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIFxcXG4gICAgICAgICAgICAgICAgLXJlcXVpcmUtdGFnKVwiIClcbiAgICAgICAgICAgOyAoIFwiLXJlcXVpcmUtdGFnXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmdcbiAgICAgICAgICAgICAgICAgKGZ1biBzIC0+IHRhZ19wcmVkaWNhdGUgOj0gVGFnX3ByZWRpY2F0ZS5yZXF1aXJlICF0YWdfcHJlZGljYXRlIHMpXG4gICAgICAgICAgICAgLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1kcm9wLXRhZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1tYXRjaGluZ1wiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBuYW1lX2ZpbHRlciA6PSBzIDo6ICFuYW1lX2ZpbHRlcilcbiAgICAgICAgICAgICAsIFwic3Vic3RyaW5nIE9ubHkgcnVuIHRlc3RzIHdob3NlIG5hbWVzIGNvbnRhaW4gdGhlIGdpdmVuIHN1YnN0cmluZ1wiIClcbiAgICAgICAgICAgOyAoIFwiLW9ubHktdGVzdFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUsIGluZGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwYXJzZV9kZXNjciBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKGZpbGUsIGluZGV4KSAtPiBmaWxlLCBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJzonXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnOicgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gU3RyaW5nLnN1YiBzIDAgaSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXhfc3RyaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuc3ViIHMgKGkgKyAxKSAoU3RyaW5nLmxlbmd0aCBzIC0gaSAtIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaW5kZXhfc3RyaW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmd1bWVudCAlcyBkb2Vzbid0IGZpdCB0aGUgZm9ybWF0IGZpbGVuYW1lWzpsaW5lX251bWJlcl1cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBTb21lIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzLCBOb25lXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIHRlc3RzIDo9IChmaWxlbmFtZSwgaW5kZXgsIHJlZiBmYWxzZSkgOjogIXRlc3RzKVxuICAgICAgICAgICAgICwgXCJsb2NhdGlvbiBSdW4gb25seSB0aGUgdGVzdHMgc3BlY2lmaWVkIGJ5IGFsbCB0aGUgLW9ubHktdGVzdCBvcHRpb25zLlxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbnMgY2FuIGJlIG9uZSBvZiB0aGVzZSBmb3JtczpcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLm1sXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbDpsaW5lX251bWJlclxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjNcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyMywgY2hhcmFjdGVycyAyLTNcIiApXG4gICAgICAgICAgIDsgXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgU3VtbWFyaXplIHRlc3RzIHdpdGhvdXQgdXNpbmcgY29sb3JcIlxuICAgICAgICAgICA7IFwiLWluLXBsYWNlXCIsIEFyZy5TZXQgaW5fcGxhY2UsIFwiIFVwZGF0ZSBleHBlY3QgdGVzdHMgaW4gcGxhY2VcIlxuICAgICAgICAgICA7ICggXCItZGlmZi1jbWRcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcylcbiAgICAgICAgICAgICAsIFwiIERpZmYgY29tbWFuZCBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIGRpZmZpbmcgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1zb3VyY2UtdHJlZS1yb290XCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHNvdXJjZV90cmVlX3Jvb3QgOj0gU29tZSBzKVxuICAgICAgICAgICAgICwgXCIgUGF0aCB0byB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWVcIiApXG4gICAgICAgICAgIDsgKCBcIi1kaWZmLXBhdGgtcHJlZml4XCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfcGF0aF9wcmVmaXggOj0gU29tZSBzKVxuICAgICAgICAgICAgICwgXCIgUHJlZml4IHRvIHByZXBlbmQgdG8gZmlsZXBhdGhzIGluIHRlc3Qgb3V0cHV0XCIgKVxuICAgICAgICAgICBdKVxuICAgICAgICAoZnVuIGFub24gLT5cbiAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogdW5leHBlY3RlZCBhbm9ueW1vdXMgYXJndW1lbnQgJXNcXG4lIVwiIG5hbWUgYW5vbjtcbiAgICAgICAgICAgZXhpdCAxKVxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyBbYXJnc11cIiBuYW1lIFwiaW5saW5lLXRlc3QtcnVubmVyXCIgbGliKTtcbiAgICAgIEFjdGlvbi5zZXRcbiAgICAgICAgKGBUZXN0X21vZGVcbiAgICAgICAgICAgeyB3aGljaF90ZXN0cyA9XG4gICAgICAgICAgICAgICB7IGxpYm5hbWUgPSBsaWJcbiAgICAgICAgICAgICAgIDsgb25seV90ZXN0X2xvY2F0aW9uID0gIXRlc3RzXG4gICAgICAgICAgICAgICA7IHdoaWNoX3RhZ3MgPSAhdGFnX3ByZWRpY2F0ZVxuICAgICAgICAgICAgICAgOyBuYW1lX2ZpbHRlciA9ICFuYW1lX2ZpbHRlclxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICA7IHdoYXRfdG9fZG8gPVxuICAgICAgICAgICAgICAgKGlmICFsaXN0X3BhcnRpdGlvbnMgdGhlbiBgTGlzdF9wYXJ0aXRpb25zIGVsc2UgYFJ1bl9wYXJ0aXRpb24gIXBhcnRpdGlvbilcbiAgICAgICAgICAgfSlcbiAgICB8IF8gLT4gKCkpXG47O1xuXG5sZXQgYW1fdGVzdF9ydW5uZXIgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgVGVzdF9tb2RlIF8gLT4gdHJ1ZVxuICB8IGBJZ25vcmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBhbV9ydW5uaW5nX2Vudl92YXIgPVxuICAoKiBmb3IgYXBwcm94aW1hdGUgY29tcGF0aWJpbGl0eSwgZ2l2ZW4gdGhhdCB0aGUgdmFyaWFibGUgaXMgbm90IGV4YWN0bHkgZXF1aXZhbGVudFxuICAgICB0byB3aGF0IFBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVCB1c2VkIHRvIGJlICopXG4gIFwiVEVTVElOR19GUkFNRVdPUktcIlxuOztcblxuKCogVGhpcyB2YWx1ZSBpcyBkZXByZWNhdGVkIGluIHByaW5jaXBsZSwgaW4gZmF2b3Igb2YgQ29yZS5hbV9ydW5uaW5nX3Rlc3QsIHNvXG4gICB3ZSdyZSBnb2luZyB0byBsaXZlIHdpdGggdGhlIHVnbHkgcGF0dGVybiBtYXRjaC4gKilcbmxldCBhbV9ydW5uaW5nID1cbiAgbWF0Y2ggU3lzLmdldGVudiBcIlBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVFwiIHdpdGhcbiAgfCAoXyA6IHN0cmluZykgLT5cbiAgICB0cnVlICgqIGZvciBjb21wYXRpYmlsaXR5IHdpdGggcGVvcGxlIHNldHRpbmcgdGhpcyB2YXJpYWJsZSBkaXJlY3RseSAqKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAobWF0Y2ggU3lzLmdldGVudiBhbV9ydW5uaW5nX2Vudl92YXIgd2l0aFxuICAgICB8IFwiaW5saW5lLXRlc3RcIiAtPiB0cnVlXG4gICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBmYWxzZVxuICAgICB8IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgdGVzdGluZyA9XG4gIGlmIGFtX3Rlc3RfcnVubmVyXG4gIHRoZW4gYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyXG4gIGVsc2UgaWYgYW1fcnVubmluZ1xuICB0aGVuIGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lclxuICBlbHNlIGBOb3RfdGVzdGluZ1xuOztcblxubGV0IHdhbGxfdGltZV9jbG9ja19ucyAoKSA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKClcblxubGV0IHdoZXJlX3RvX2N1dF9iYWNrdHJhY2UgPVxuICBsYXp5XG4gICAgKEJhc2UuU3RyaW5nLlNlYXJjaF9wYXR0ZXJuLmNyZWF0ZVxuICAgICAgIChfX01PRFVMRV9fIF4gXCIuXCIgXiBcInRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXCIpKVxuOztcblxubGV0IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgYmVmb3JlX25zID0gd2FsbF90aW1lX2Nsb2NrX25zICgpIGluXG4gIGxldCByZXMgPVxuICAgICgqIFRvIGF2b2lkIG5vaXNlIGluIGJhY2t0cmFjZXMsIHdlIGRvIHR3byB0aGluZ3MuXG5cbiAgICAgICBXZSB1c2UgW3doZXJlX3RvX2N1dF9iYWNrdHJhY2VdIGFib3ZlIHRvIHJlbW92ZSB0aGUgc3RhY2sgZnJhbWVzIGZvciB0aGUgY3VycmVudFxuICAgICAgIGZ1bmN0aW9uIGFuZCBhbnkgZnVuY3Rpb24gaXQgZ2V0cyBpbmxpbmVkIGludG8sIGFzIGl0J3Mgbm90IG9mIGFueSBpbnRlcmVzdCB0byB0aGVcbiAgICAgICB1c2VyLCBzaW5jZSBpdCdzIG5vdCB0YWxraW5nIGFib3V0IHRoZWlyIHRlc3QgYnV0IGluc3RlYWQgdGFsa2luZyBhYm91dCB0aGVcbiAgICAgICBwcHhfaW5saW5lX3Rlc3QgbWFjaGluZXJ5LlxuXG4gICAgICAgV2UgYWxzbyBhdm9pZCBpbnNlcnRpbmcgYW55IGNvZGUgYmV0d2VlbiB0aGUgW2ZdIHRoYXQgY29tZXMgZnJvbSB0aGUgdXNlcidzIGZpbGVcbiAgICAgICBhbmQgZ3JhYmJpbmcgdGhlIGJhY2t0cmFjZSBmcm9tIGl0cyBleGNlcHRpb25zIChubyB3cmFwcGluZyBvZiBbZl0gd2l0aCBoaWdoIG9yZGVyXG4gICAgICAgZnVuY3Rpb25zIGxpa2UgRXhuLnByb3RlY3QsIG9yIChmdW4gKCkgLT4gZiAoKTsgdHJ1ZSkpLiAqKVxuICAgIHRyeSBPayAoZiAoKSkgd2l0aFxuICAgIHwgZXhuIC0+IEVycm9yIChleG4sIFByaW50ZXhjLmdldF9iYWNrdHJhY2UgKCkpXG4gIGluXG4gIHRpbWVfc2VjIDo9IEJhc2UuSW50NjMuKHdhbGxfdGltZV9jbG9ja19ucyAoKSAtIGJlZm9yZV9ucyB8PiB0b19mbG9hdCkgLy4gMWU5O1xuICByZXNcbjs7XG5cbmxldCBzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSA9IGxhenkgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBbfCAxMDA7IDIwMDsgMzAwIHxdKVxubGV0IHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlID0gbGF6eSAoQmFzZS5SYW5kb20uU3RhdGUubWFrZSBbfCAxMTE7IDIyMjsgMzMzIHxdKVxuXG5sZXQgdGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgY2FtbF9yYW5kb21fc3RhdGUgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICBsZXQgYmFzZV9yYW5kb21fc3RhdGUgPSBCYXNlLlJhbmRvbS5TdGF0ZS5jb3B5IEJhc2UuUmFuZG9tLlN0YXRlLmRlZmF1bHQgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUpO1xuICBCYXNlLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUpO1xuICBsZXQgcmVzdWx0ID0gdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZiBpblxuICBTdGRsaWIuUmFuZG9tLnNldF9zdGF0ZSBjYW1sX3JhbmRvbV9zdGF0ZTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIGJhc2VfcmFuZG9tX3N0YXRlO1xuICByZXN1bHRcbjs7XG5cbmxldCBzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpID1cbiAgU3RyaW5nLmNvbmNhdFxuICAgIFwiXCJcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoZnVuIHMgLT4gXCIgIGluIFRFU1wiIF4gXCJUX01PRFVMRSBhdCBcIiBeIFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgcyBeIFwiXFxuXCIpXG4gICAgICAgKE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfZGVzY3IgKCkpKVxuOztcblxubGV0IHBvc2l0aW9uX21hdGNoIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgbCA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgdXNlZCkgLT5cbiAgICAgICBsZXQgcG9zaXRpb25fc3RhcnQgPSBTdHJpbmcubGVuZ3RoIGRlZl9maWxlbmFtZSAtIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICAgICBsZXQgZm91bmQgPVxuICAgICAgICAgcG9zaXRpb25fc3RhcnQgPj0gMFxuICAgICAgICAgJiZcbiAgICAgICAgIGxldCBlbmRfb2ZfZGVmX2ZpbGVuYW1lID1cbiAgICAgICAgICAgU3RyaW5nLnN1YiBkZWZfZmlsZW5hbWUgcG9zaXRpb25fc3RhcnQgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpXG4gICAgICAgICBpblxuICAgICAgICAgZW5kX29mX2RlZl9maWxlbmFtZSA9IGZpbGVuYW1lXG4gICAgICAgICAmJiAocG9zaXRpb25fc3RhcnQgPSAwIHx8IGRlZl9maWxlbmFtZS5bcG9zaXRpb25fc3RhcnQgLSAxXSA9ICcvJylcbiAgICAgICAgICYmXG4gICAgICAgICBtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgIHwgU29tZSBsaW5lX251bWJlciAtPiBkZWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlclxuICAgICAgIGluXG4gICAgICAgaWYgZm91bmQgdGhlbiB1c2VkIDo9IHRydWU7XG4gICAgICAgZm91bmQpXG4gICAgbFxuOztcblxubGV0IG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciBkZXNjciA9XG4gIG1hdGNoIG5hbWVfZmlsdGVyIHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyA6OiBfIC0+XG4gICAgTGlzdC5leGlzdHMgKGZ1biBzdWJzdHJpbmcgLT4gQmFzZS5TdHJpbmcuaXNfc3Vic3RyaW5nIH5zdWJzdHJpbmcgZGVzY3IpIG5hbWVfZmlsdGVyXG47O1xuXG5sZXQgcHJpbnRfZGVsYXllZF9lcnJvcnMgKCkgPVxuICBtYXRjaCBMaXN0LnJldiAhZGVsYXllZF9lcnJvcnMgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgXyA6OiBfIGFzIGRlbGF5ZWRfZXJyb3JzIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJcXG4lc1xcbiUhXCIgKFN0cmluZy5tYWtlIDcwICc9Jyk7XG4gICAgTGlzdC5pdGVyIChmdW4gbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBtZXNzYWdlKSBkZWxheWVkX2Vycm9yc1xuOztcblxubGV0IGVwcmludGZfb3JfZGVsYXkgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmXG4gICAgKGZ1biBzIC0+XG4gICAgICAgaWYgIXZlcmJvc2UgdGhlbiBkZWxheWVkX2Vycm9ycyA6PSBzIDo6ICFkZWxheWVkX2Vycm9ycyBlbHNlIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHM7XG4gICAgICAgaWYgIXN0b3Bfb25fZXJyb3JcbiAgICAgICB0aGVuIChcbiAgICAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgICAgZXhpdCAyKSlcbiAgICBmbXRcbjs7XG5cbmxldCBhZGRfaG9va3MgKChtb2R1bGUgQykgOiBjb25maWcpIGYgKCkgPVxuICBDLnByZV90ZXN0X2hvb2sgKCk7XG4gIGYgKClcbjs7XG5cbmxldCBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSA9XG4gIGxldCBvcGVuIEJhc2UgaW5cbiAgYmFja3RyYWNlXG4gIHw+IFN0cmluZy5zcGxpdF9saW5lc1xuICB8PiBMaXN0LnRha2Vfd2hpbGUgfmY6KGZ1biBzdHIgLT5cbiAgICBub3QgKFN0cmluZy5TZWFyY2hfcGF0dGVybi5tYXRjaGVzIChmb3JjZSB3aGVyZV90b19jdXRfYmFja3RyYWNlKSBzdHIpKVxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIgXiBcIlxcblwiKVxuICB8PiBTdHJpbmcuY29uY2F0XG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9pbm5lclxuICAgICAgICAgICAgICAgICAgICAgfmNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgfmRlc2NyXG4gICAgICAgICAgICAgICAgICAgICB+dGFnc1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOmRlZl9maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgICAgICAgICAgICAgICAgICAgIGJvb2xfb2ZfZlxuICA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlXG4gICAgICB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb247IHdoaWNoX3RhZ3M7IG5hbWVfZmlsdGVyIH1cbiAgICAgIDsgd2hhdF90b19kb1xuICAgICAgfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyID1cbiAgICAgIGxhenkgKGRpc3BsYXllZF9kZXNjciBkZXNjciBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIHN0YXJ0X3BvcyBlbmRfcG9zKVxuICAgIGluXG4gICAgbGV0IGNvbXBsZXRlX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAmJiAobWF0Y2ggb25seV90ZXN0X2xvY2F0aW9uIHdpdGhcbiAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgIHwgXyA6OiBfIC0+IHBvc2l0aW9uX21hdGNoIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgb25seV90ZXN0X2xvY2F0aW9uKVxuICAgICAgJiYgKG5vdCAoVGFnX3ByZWRpY2F0ZS5kaXNhYmxlZCB3aGljaF90YWdzIH5jb21wbGV0ZV90YWdzKSlcbiAgICAgICYmIG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciAoTGF6eS5mb3JjZSBkZXNjcilcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW5cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGRlc2NyID0gTGF6eS5mb3JjZSBkZXNjciBpblxuICAgICAgICAgIGluY3IgdGVzdHNfcmFuO1xuICAgICAgICAgIChtYXRjaCAhbG9nIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgIHwgU29tZSBjaCAtPiBQcmludGYuZnByaW50ZiBjaCBcIiVzXFxuJXNcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpO1xuICAgICAgICAgIGlmICF2ZXJib3NlIHRoZW4gUHJpbnRmLnByaW50ZiBcIiVzJSFcIiBkZXNjcjtcbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGlmICFsaXN0X3Rlc3RfbmFtZXNcbiAgICAgICAgICAgIHRoZW4gT2sgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBTZWUgW3RpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXSBmb3Igd2h5IHdlIHVzZSBbYm9vbF9vZl9mXVxuICAgICAgICAgICAgICAgICByYXRoZXIgaGF2ZSB0aGUgY2FsbGVyIHdyYXAgW2ZdIHRvIGFkanVzdCBpdHMgcmV0dXJuIHZhbHVlLiAqKVxuICAgICAgICAgICAgICBSZXN1bHQubWFwIGJvb2xfb2ZfZiAodGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBJZiAhbGlzdF90ZXN0X25hbWVzLCB0aGlzIGlzIGlzIGEgaGFybWxlc3MgemVyby4gKilcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIgKCUuM2Ygc2VjKVxcbiUhXCIgIXRpbWVfc2VjO1xuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayB0cnVlIC0+ICgpXG4gICAgICAgICAgfCBPayBmYWxzZSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgaXMgZmFsc2UuXFxuJXNcXG4lIVwiIGRlc2NyIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgaW5cbiAgICAgICAgICAgIGxldCBleG5fc3RyID0gU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biBpblxuICAgICAgICAgICAgbGV0IHNlcCA9IGlmIFN0cmluZy5jb250YWlucyBleG5fc3RyICdcXG4nIHRoZW4gXCJcXG5cIiBlbHNlIFwiIFwiIGluXG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5XG4gICAgICAgICAgICAgIFwiJXMgdGhyZXclcyVzLlxcbiVzJXNcXG4lIVwiXG4gICAgICAgICAgICAgIGRlc2NyXG4gICAgICAgICAgICAgIHNlcFxuICAgICAgICAgICAgICBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpKVxuOztcblxubGV0IHNldF9saWJfYW5kX3BhcnRpdGlvbiBzdGF0aWNfbGliIHBhcnRpdGlvbiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgU29tZSBfIC0+XG4gICAgKCogcG9zc2libGUgaWYgdGhlIGludGVyZmFjZSBpcyB1c2VkIGV4cGxpY2l0bHkgb3IgaWYgd2UgaGFwcGVuIHRvIGR5bmxpbmsgc29tZXRoaW5nXG4gICAgICAgdGhhdCBjb250YWluIHRlc3RzICopXG4gICAgKClcbiAgfCBOb25lIC0+XG4gICAgZHluYW1pY19saWIgOj0gU29tZSBzdGF0aWNfbGliO1xuICAgIChtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgICAgfCBgSWdub3JlIC0+ICgpXG4gICAgIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzOyB3aGF0X3RvX2RvIH0gLT5cbiAgICAgICBpZiB3aGljaF90ZXN0cy5saWJuYW1lID0gc3RhdGljX2xpYlxuICAgICAgIHRoZW4gKFxuICAgICAgICAgbGV0IHJlcXVpcmVzX3BhcnRpdGlvbiA9XG4gICAgICAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgfCBgUnVuX3BhcnRpdGlvbiAoU29tZSBfKSAtPiB0cnVlXG4gICAgICAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gTm9uZSAtPiBmYWxzZVxuICAgICAgICAgaW5cbiAgICAgICAgIGlmIHBhcnRpdGlvbiA9IFwiXCIgJiYgcmVxdWlyZXNfcGFydGl0aW9uXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgXCJwcHhfaW5saW5lX3Rlc3Q6IGNhbm5vdCB1c2UgLWxpc3QtcGFydGl0aW9uIG9yIC1wYXJ0aXRpb24gd2l0aG91dCBcXFxuICAgICAgICAgICAgICBzcGVjaWZ5aW5nIGEgcGFydGl0aW9uIGF0IHByZXByb2Nlc3NpbmcgdGltZVwiXG4gICAgICAgICBlbHNlIFBhcnRpdGlvbi5zZXRfY3VycmVudCBwYXJ0aXRpb24pKVxuOztcblxubGV0IHVuc2V0X2xpYiBzdGF0aWNfbGliID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKCogbm90IGdpdmluZyBhbiBlcnJvciwgYmVjYXVzZSB3aGVuIHNvbWUgYW5ub3lpbmcgcGVvcGxlIHB1dCBwYV9vdW5pdCBpbiB0aGVpciBsaXN0XG4gICAgICAgb2YgcHJlcHJvY2Vzc29ycywgcGFfb3VuaXQgaXMgc2V0IHVwIHR3aWNlIGFuZCB3ZSBoYXZlIHR3byBjYWxscyB0byB1bnNldF9saWIgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBmaWxlLCBhbmQgdGhlIHNlY29uZCBvbmUgY29tZXMgaW4gdGhpcyBicmFuY2ggKilcbiAgICAoKVxuICB8IFNvbWUgbGliIC0+IGlmIGxpYiA9IHN0YXRpY19saWIgdGhlbiBkeW5hbWljX2xpYiA6PSBOb25lXG47O1xuXG5sZXQgdGVzdCB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiA9XG4gIHRlc3RfaW5uZXIgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgKGZ1biBiIC0+XG4gICAgYilcbjs7XG5cbmxldCB0ZXN0X3VuaXQgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIChmdW4gKCkgLT5cbiAgICB0cnVlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfbW9kdWxlXG4gICAgICAgICAgICAgICAgICAgICB+Y29uZmlnXG4gICAgICAgICAgICAgICAgICAgICB+ZGVzY3JcbiAgICAgICAgICAgICAgICAgICAgIH50YWdzXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6ZGVmX2ZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICB+bGluZV9udW1iZXI6ZGVmX2xpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICAgZlxuICA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlXG4gICAgICB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSBfOyBuYW1lX2ZpbHRlciA9IF87IHdoaWNoX3RhZ3MgfVxuICAgICAgOyB3aGF0X3RvX2RvXG4gICAgICB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgKCkgPSBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcyBpblxuICAgIGxldCBwYXJ0aWFsX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAoKiBJZiwgbm8gbWF0dGVyIHdoYXQgdGFncyBhIHRlc3QgZGVmaW5lcywgd2UgY2VydGFpbmx5IHdpbGwgZHJvcCBhbGwgdGVzdHMgd2l0aGluXG4gICAgICAgICB0aGlzIG1vZHVsZSwgdGhlbiBkb24ndCBydW4gdGhlIG1vZHVsZSBhdCBhbGwuIFRoaXMgbWVhbnMgcGVvcGxlIGNhbiB3cml0ZVxuICAgICAgICAgdGhpbmdzIGxpa2UgdGhlIGZvbGxvd2luZyB3aXRob3V0IGJyZWFraW5nIHRoZSAzMi1iaXQgYnVpbGQ6XG4gICAgICAgICBsZXQldGVzdF9tb2R1bGUgW0B0YWdzIFwiNjQtYml0cy1vbmx5XCJdID0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgIGxldCBpID0gSW50NjQudG9faW50X2V4biAuLi4uXG4gICAgICAgICBlbmQpXG4gICAgICAgICBXZSBkb24ndCBzaG9ydGN1dCBiYXNlZCBvbiBwb3NpdGlvbiwgYXMgd2UgY2FuJ3QgdGVsbCB3aGF0IHBvc2l0aW9ucyB0aGVcbiAgICAgICAgIGlubmVyIHRlc3RzIHdpbGwgaGF2ZS4gKilcbiAgICAgICYmIG5vdCAoVGFnX3ByZWRpY2F0ZS5lbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHdoaWNoX3RhZ3MgfnBhcnRpYWxfdGFncylcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW5cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgICAgIGxldCBkZXNjciA9IGRlc2NyICgpIGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1vZHVsZV9jb250ZXh0LndpdGhfIH5kZXNjciB+dGFncyAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICgqIFdlIGRvIG5vdCByZXNldCByYW5kb20gc3RhdGVzIHVwb24gZW50ZXJpbmcgW2xldCV0ZXN0X21vZHVsZV0uXG5cbiAgICAgICAgICAgICAgICAgQ29uOiBDb2RlIGluIHRlc3QgbW9kdWxlcyBjYW4gYWNjaWRlbnRhbGx5IGRlcGVuZCBvbiB0b3AtbGV2ZWwgcmFuZG9tXG4gICAgICAgICAgICAgICAgIHN0YXRlIGVmZmVjdHMuXG5cbiAgICAgICAgICAgICAgICAgUHJvczogKDEpIFdlIGRvbid0IHJlc2V0IHRvIHRoZSBzYW1lIHNlZWQgb24gZW50ZXJpbmcgYSBbbGV0JXRlc3RfbW9kdWxlXVxuICAgICAgICAgICAgICAgICBhbmQgdGhlbiBhIFtsZXQldGVzdF0gaW5zaWRlIHRoYXQgbW9kdWxlLCB3aGljaCBjb3VsZCBsZWFkIHRvXG4gICAgICAgICAgICAgICAgIGFjY2lkZW50YWxseSByYW5kb21seSBnZW5lcmF0aW5nIHRoZSBzYW1lIHZhbHVlcyBpbiBzb21lIHRlc3QuICgyKSBNb3ZpbmdcbiAgICAgICAgICAgICAgICAgY29kZSBpbnRvIGFuZCBvdXQgb2YgW2xldCV0ZXN0X21vZHVsZV0gZG9lcyBub3QgY2hhbmdlIGl0cyByYW5kb20gc2VlZC5cbiAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheVxuICAgICAgICAgICAgICAoXCJURVNcIiBeXiBcIlRfTU9EVUxFIGF0ICVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIilcbiAgICAgICAgICAgICAgKFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZGVzY3IpXG4gICAgICAgICAgICAgIHNlcFxuICAgICAgICAgICAgICBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpKVxuOztcblxubGV0IHN1bW1hcml6ZSAoKSA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT5cbiAgICBpZiBTeXMuYXJndiA8PiBbfHxdICYmIEZpbGVuYW1lLmJhc2VuYW1lIFN5cy5hcmd2LigwKSA9IFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGVcIlxuICAgIHRoZW5cbiAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgIFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGUgaXMgbm90IHN1cHBvc2VkIHRvIGJlIHJ1biBieSBoYW5kLCB5b3UgXFxuXFxcbiAgICAgICAgIHNob3VsZCBydW4gdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IGluc3RlYWQuXFxuXFxcbiAgICAgICAgICUhXCJcbiAgICBlbHNlXG4gICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICBcIllvdSBhcmUgZG9pbmcgc29tZXRoaW5nIHVuZXhwZWN0ZWQgd2l0aCB0aGUgdGVzdHMuIE5vIHRlc3RzIGhhdmUgXFxuXFxcbiAgICAgICAgIGJlZW4gcnVuLiBZb3Ugc2hvdWxkIHVzZSB0aGUgaW5saW5lX3Rlc3RzX3J1bm5lciBzY3JpcHQgdG8gcnVuIFxcblxcXG4gICAgICAgICB0ZXN0cy5cXG5cXFxuICAgICAgICAgJSFcIjtcbiAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IF87IHdoYXRfdG9fZG8gPSBgTGlzdF9wYXJ0aXRpb25zIH0gLT5cbiAgICBMaXN0Lml0ZXIgKFByaW50Zi5wcmludGYgXCIlc1xcblwiKSAoUGFydGl0aW9uLmFsbCAoKSk7XG4gICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICB8IGBUZXN0X21vZGUgeyB3aGF0X3RvX2RvID0gYFJ1bl9wYXJ0aXRpb24gXzsgd2hpY2hfdGVzdHMgfSAtPlxuICAgIChtYXRjaCAhbG9nIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBjaCAtPiBjbG9zZV9vdXQgY2gpO1xuICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgIChtYXRjaCAhdGVzdHNfZmFpbGVkLCAhdGVzdF9tb2R1bGVzX2ZhaWxlZCB3aXRoXG4gICAgIHwgMCwgMCAtPlxuICAgICAgIGlmICFzaG93X2NvdW50c1xuICAgICAgIHRoZW5cbiAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgIFwiJWQgdGVzdHMgcmFuLCAlZCB0ZXN0X21vZHVsZXMgcmFuXFxuJSFcIlxuICAgICAgICAgICAhdGVzdHNfcmFuXG4gICAgICAgICAgICF0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgbGV0IHVudXNlZF90ZXN0cyA9XG4gICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gKF8sIF8sIHVzZWQpIC0+IG5vdCAhdXNlZCkgd2hpY2hfdGVzdHMub25seV90ZXN0X2xvY2F0aW9uXG4gICAgICAgICBpblxuICAgICAgICAgbWF0Y2ggdW51c2VkX3Rlc3RzIHdpdGhcbiAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgfCBfIDo6IF8gLT4gU29tZSB1bnVzZWRfdGVzdHNcbiAgICAgICBpblxuICAgICAgIChtYXRjaCBlcnJvcnMgd2l0aFxuICAgICAgICB8IFNvbWUgdGVzdHMgLT5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IHRoZSBmb2xsb3dpbmcgLW9ubHktdGVzdCBmbGFncyBtYXRjaGVkIG5vdGhpbmc6XCI7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCBfKSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBQcmludGYuZXByaW50ZiBcIiAlc1wiIGZpbGVuYW1lXG4gICAgICAgICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gUHJpbnRmLmVwcmludGYgXCIgJXM6JWRcIiBmaWxlbmFtZSBsaW5lX251bWJlcilcbiAgICAgICAgICAgIHRlc3RzO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiLlxcbiUhXCI7XG4gICAgICAgICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgIXRlc3RzX3JhbiA9IDAgJiYgIXN0cmljdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IG5vIHRlc3RzIGhhdmUgYmVlbiBydW4uXFxuJSFcIjtcbiAgICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yKVxuICAgICAgICAgIGVsc2UgVGVzdF9yZXN1bHQuU3VjY2VzcylcbiAgICAgfCBjb3VudCwgY291bnRfdGVzdF9tb2R1bGVzIC0+XG4gICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgIFwiRkFJTEVEICVkIC8gJWQgdGVzdHMlc1xcbiUhXCJcbiAgICAgICAgIGNvdW50XG4gICAgICAgICAhdGVzdHNfcmFuXG4gICAgICAgICAoaWYgY291bnRfdGVzdF9tb2R1bGVzID0gMFxuICAgICAgICAgIHRoZW4gXCJcIlxuICAgICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgKFwiLCAlZCBURVNcIiBeXiBcIlRfTU9EVUxFU1wiKSBjb3VudF90ZXN0X21vZHVsZXMpO1xuICAgICAgIFRlc3RfcmVzdWx0LkZhaWx1cmUpXG47O1xuXG5sZXQgdXNlX2NvbG9yID0gIXVzZV9jb2xvclxubGV0IGluX3BsYWNlID0gIWluX3BsYWNlXG5sZXQgZGlmZl9jb21tYW5kID0gIWRpZmZfY29tbWFuZFxubGV0IGRpZmZfcGF0aF9wcmVmaXggPSAhZGlmZl9wYXRoX3ByZWZpeFxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSAhc291cmNlX3RyZWVfcm9vdFxubGV0IGV2YWx1YXRvcnMgPSByZWYgWyBzdW1tYXJpemUgXVxubGV0IGFkZF9ldmFsdWF0b3IgfmYgPSBldmFsdWF0b3JzIDo9IGYgOjogIWV2YWx1YXRvcnNcblxubGV0IGV4aXQgKCkgPVxuICBMaXN0Lm1hcCAoZnVuIGYgLT4gZiAoKSkgKExpc3QucmV2ICFldmFsdWF0b3JzKVxuICB8PiBUZXN0X3Jlc3VsdC5jb21iaW5lX2FsbFxuICB8PiBUZXN0X3Jlc3VsdC50b19leGl0X2NvZGVcbiAgfD4gZXhpdFxuOztcbiIsIm9wZW4hIEJhc2Vcbm1vZHVsZSBHYyA9IFN0ZGxpYi5HY1xuXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5cbmxldCBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgPSBcIlBQWF9NT0RVTEVfVElNRVJcIlxuXG5sZXQgZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKSA9XG4gICgqIGF2b2lkIFN0ZGxpYi5TeXMuZ2V0ZW52X29wdCB0byBwcmVzZXJ2ZSA0LjA0LnggY29tcGF0aWJpbGl0eSAqKVxuICBtYXRjaCBTdGRsaWIuU3lzLmdldGVudiBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgd2l0aFxuICB8IHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgYW1fcmVjb3JkaW5nX3ZhbHVlID0gZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKVxubGV0IGFtX3JlY29yZGluZyA9IE9wdGlvbi5pc19zb21lIGFtX3JlY29yZGluZ192YWx1ZVxuXG5tb2R1bGUgRHVyYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudFxuXG4gIGxldCB0b19uYW5vc2Vjb25kcyB0ID0gdFxuICBsZXQgb2ZfbmFub3NlY29uZHMgdCA9IHRcblxuICBtb2R1bGUgdHlwZSBGb3JtYXQgPSBzaWdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IDogdCBsaXN0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA9IHN0cnVjdFxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeDpcIm5zXCIgfD4gSW50NjMub2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyBuYW5vcyA9IEludDYzLnRvX3N0cmluZyBuYW5vcyBeIFwibnNcIlxuICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6dG9fc3RyaW5nXG4gIGVuZFxuXG4gIGxldCBmb3JtYXQgPSByZWYgKG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA6IEZvcm1hdClcblxuICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQub2Zfc3RyaW5nIHN0cmluZ1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nID1cbiAgICBsZXQgKG1vZHVsZSBGb3JtYXQpID0gIWZvcm1hdCBpblxuICAgIEZvcm1hdC50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nXG4gIDs7XG5lbmRcblxubW9kdWxlIEdjX2V2ZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltaW5nX2V2ZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBkZXNjcmlwdGlvbiA6IHN0cmluZ1xuICAgIDsgcnVudGltZSA6IER1cmF0aW9uLnRcbiAgICA7IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50XG4gICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA6IHQgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA6IER1cmF0aW9uLnRcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgOiBHYy5zdGF0XG4gICAgOyBtdXRhYmxlIG5lc3RlZF90aW1lciA6IHQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDogVGltaW5nX2V2ZW50LnQgbGlzdFxuICAgIH1cblxuICBsZXQgY3JlYXRlID9uZXN0ZWRfdGltZXIgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPSBcIlwiXG4gICAgOyBjdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lID0gSW50NjMuemVyb1xuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPSBHYy5xdWlja19zdGF0ICgpXG4gICAgOyBuZXN0ZWRfdGltZXJcbiAgICA7IHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyID0gW11cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgPVxuICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPC0gXCJcIjtcbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gSW50NjMuemVybztcbiAgICBtYXRjaCB0Lm5lc3RlZF90aW1lciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5lc3RlZCAtPiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgPC0gW11cbiAgOztcblxuICBsZXQgcmVjb3JkX3N0YXJ0IHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChTdHJpbmcuaXNfZW1wdHkgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbik7XG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIGRlc2NyaXB0aW9uO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA8LSBHYy5xdWlja19zdGF0ICgpO1xuICAgICAgKCogY2FsbCBbVGltZV9ub3ddIGFzIGxhdGUgYXMgcG9zc2libGUgYmVmb3JlIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSlcbiAgOztcblxuICBsZXQgcmVjb3JkX3VudGlsIHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogY29tcHV0ZSBbVGltZV9ub3ddIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgcnVubmluZyB0aGUgbW9kdWxlIGJvZHkgKilcbiAgICAgIGxldCB1bnRpbCA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgaW5cbiAgICAgIGxldCBzdGFydCA9IHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2FmdGVyID0gR2MucXVpY2tfc3RhdCAoKSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2JlZm9yZSA9IHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgaW5cbiAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAtICkgdW50aWwgc3RhcnQgaW5cbiAgICAgIGFzc2VydCAoU3RyaW5nLmVxdWFsIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gZGVzY3JpcHRpb24pO1xuICAgICAgbGV0IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50ID1cbiAgICAgICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgICAgIGdjX3N0YXRzX2FmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgICAgIDsgY29tcGFjdGlvbnMgPSBnY19zdGF0c19hZnRlci5jb21wYWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5jb21wYWN0aW9uc1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIG5lc3RlZCAtPiBMaXN0LnJldiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXJcbiAgICAgIGluXG4gICAgICBsZXQgdGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQgPVxuICAgICAgICB7IGRlc2NyaXB0aW9uOyBydW50aW1lOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH1cbiAgICAgIGluXG4gICAgICB0LnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICA8LSB0aW1pbmdfZXZlbnQgOjogdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcjtcbiAgICAgIHJlc2V0IHQpXG4gIDs7XG5lbmRcblxubGV0IGRlZmluaXRpb25fdGltZXIgPSBUaW1lci5jcmVhdGUgKClcbmxldCBtb2R1bGVfdGltZXIgPSBUaW1lci5jcmVhdGUgfm5lc3RlZF90aW1lcjpkZWZpbml0aW9uX3RpbWVyICgpXG5sZXQgcmVjb3JkX3N0YXJ0IG1vZHVsZV9uYW1lID0gVGltZXIucmVjb3JkX3N0YXJ0IG1vZHVsZV90aW1lciBtb2R1bGVfbmFtZVxubGV0IHJlY29yZF91bnRpbCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF91bnRpbCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfZGVmaW5pdGlvbl9zdGFydCBsb2MgPSBUaW1lci5yZWNvcmRfc3RhcnQgZGVmaW5pdGlvbl90aW1lciBsb2NcbmxldCByZWNvcmRfZGVmaW5pdGlvbl91bnRpbCBsb2MgPSBUaW1lci5yZWNvcmRfdW50aWwgZGVmaW5pdGlvbl90aW1lciBsb2NcblxubGV0IGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nXG4gICAgICAoeyBtaW5vcl9jb2xsZWN0aW9uczsgbWFqb3JfY29sbGVjdGlvbnM7IGNvbXBhY3Rpb25zIH0gOiBHY19ldmVudHMudClcbiAgPVxuICBsZXQgdG9fbGlzdCBkZXNjcmlwdGlvbiBjb3VudCA9XG4gICAgaWYgY291bnQgPSAwIHRoZW4gW10gZWxzZSBbIEludC50b19zdHJpbmcgY291bnQgXiBcIiBcIiBeIGRlc2NyaXB0aW9uIF1cbiAgaW5cbiAgbGV0IHN0cmluZ3MgPVxuICAgIHRvX2xpc3QgXCJtaW5vciBjb2xsZWN0aW9uc1wiIG1pbm9yX2NvbGxlY3Rpb25zXG4gICAgQCB0b19saXN0IFwibWFqb3IgY29sbGVjdGlvbnNcIiBtYWpvcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcImNvbXBhY3Rpb25zXCIgY29tcGFjdGlvbnNcbiAgaW5cbiAgaWYgTGlzdC5pc19lbXB0eSBzdHJpbmdzIHRoZW4gXCJcIiBlbHNlIFwiOyBHQzogXCIgXiBTdHJpbmcuY29uY2F0IHN0cmluZ3MgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZCBsaXN0ID1cbiAgbGV0IGxlZnRfY29sdW1uX3dpZHRoID1cbiAgICBMaXN0LmZvbGQgbGlzdCB+aW5pdDowIH5mOihmdW4gd2lkdGggKGxlZnQsIF8pIC0+IEludC5tYXggd2lkdGggKFN0cmluZy5sZW5ndGggbGVmdCkpXG4gIGluXG4gIExpc3QubWFwIGxpc3QgfmY6KGZ1biAobGVmdCwgcmlnaHQpIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCIlKnMgJXNcIiBsZWZ0X2NvbHVtbl93aWR0aCBsZWZ0IHJpZ2h0KVxuOztcblxubGV0IHJlYyB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbGlzdCB+aW5kZW50ID1cbiAgbGV0IGR1cmF0aW9uX3N0cmluZ3MgPVxuICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+IHRpbWluZ19ldmVudC5ydW50aW1lKVxuICAgIHw+IER1cmF0aW9uLnRvX3N0cmluZ193aXRoX3NhbWVfdW5pdFxuICBpblxuICBsZXQgcHJlZml4ID0gU3RyaW5nLm1ha2UgaW5kZW50ICcgJyBpblxuICBMaXN0Lm1hcDJfZXhuXG4gICAgZHVyYXRpb25fc3RyaW5nc1xuICAgIGxpc3RcbiAgICB+ZjpcbiAgICAgIChmdW5cbiAgICAgICAgZHVyYXRpb25fc3RyaW5nIHsgcnVudGltZSA9IF87IGRlc2NyaXB0aW9uOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH0gLT5cbiAgICAgICAgKCBkdXJhdGlvbl9zdHJpbmdcbiAgICAgICAgLCBkZXNjcmlwdGlvblxuICAgICAgICAgIF4gZ2NfZXZlbnRzX3N1ZmZpeF9zdHJpbmcgZ2NfZXZlbnRzXG4gICAgICAgICAgXiBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAodGltaW5nX2V2ZW50c190b19zdHJpbmdzIG5lc3RlZF90aW1pbmdfZXZlbnRzIH5pbmRlbnQ6KGluZGVudCArIDQpKVxuICAgICAgICAgICAgICAgICB+ZjooZnVuIGxpbmUgLT4gXCJcXG5cIiBeIGxpbmUpKSApKVxuICB8PiB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZFxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGxpbmUgLT4gcHJlZml4IF4gbGluZSlcbjs7XG5cbmxldCBmYWtlX3RpbWluZ19ldmVudHMgPVxuICBsZXQgZ2NfZXZlbnRzIGkgOiBHY19ldmVudHMudCA9XG4gICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9IChpZiBpICUgMiA9IDEgdGhlbiAxIGVsc2UgMClcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gKGlmIGkgJSA0ID0gMyB0aGVuIDEgZWxzZSAwKVxuICAgIDsgY29tcGFjdGlvbnMgPSAoaWYgaSAlIDggPSA3IHRoZW4gMSBlbHNlIDApXG4gICAgfVxuICBpblxuICBsYXp5XG4gICAgKExpc3QuaW5pdCAxMiB+ZjooZnVuIGkgOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkZha2VfX0RlcGVuZGVuY3lfJWRcIiAoaSArIDEpXG4gICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaSArIDEpKVxuICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGlcbiAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgICAgKGlmIChpICsgMSkgJSA0ID0gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBMaXN0LmluaXQgKGkgKyAxKSB+ZjooZnVuIGogOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkxpbmUgJWRcIiAoaiArIDEpXG4gICAgICAgICAgICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaiArIDEpKVxuICAgICAgICAgICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGpcbiAgICAgICAgICAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID0gW11cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZWxzZSBbXSlcbiAgICAgICB9KSlcbjs7XG5cbmxldCBwcmludF9yZWNvcmRlZF90aW1pbmdfZXZlbnRzIHRpbWluZ19ldmVudHMgPVxuICBsZXQgbm90aWZ5X29mX292ZXJyaWRpbmcgKCkgPVxuICAgIFN0ZGlvLnByaW50X2VuZGxpbmUgXCJwcHhfbW9kdWxlX3RpbWVyOiBvdmVycmlkaW5nIHRpbWUgbWVhc3VyZW1lbnRzIGZvciB0ZXN0aW5nXCJcbiAgaW5cbiAgbGV0IHRpbWluZ19ldmVudHMgPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZV9leG4gYW1fcmVjb3JkaW5nX3ZhbHVlIHdpdGhcbiAgICB8IFwiRkFLRV9NT0RVTEVTXCIgLT5cbiAgICAgIG5vdGlmeV9vZl9vdmVycmlkaW5nICgpO1xuICAgICAgZm9yY2UgZmFrZV90aW1pbmdfZXZlbnRzXG4gICAgfCBzdHJpbmcgLT5cbiAgICAgIChtYXRjaCBEdXJhdGlvbi5vZl9zdHJpbmcgc3RyaW5nIHdpdGhcbiAgICAgICB8IG92ZXJyaWRlIC0+XG4gICAgICAgICBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKTtcbiAgICAgICAgIExpc3QubWFwaSB0aW1pbmdfZXZlbnRzIH5mOihmdW4gaW5kZXggKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPlxuICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgICAgICAgTGlzdC5tYXBpXG4gICAgICAgICAgICAgICB0aW1pbmdfZXZlbnQubmVzdGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgICAgICAgIH5mOihmdW4gaW5kZXggbmVzdGVkX3RpbWluZ19ldmVudCAtPlxuICAgICAgICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgICAgICAgIHsgbmVzdGVkX3RpbWluZ19ldmVudCB3aXRoIHJ1bnRpbWUgfSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgeyB0aW1pbmdfZXZlbnQgd2l0aCBydW50aW1lOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9KVxuICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdGltaW5nX2V2ZW50cylcbiAgaW5cbiAgdGltaW5nX2V2ZW50cyB8PiB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgfmluZGVudDowIHw+IExpc3QuaXRlciB+ZjpTdGRpby5wcmludF9lbmRsaW5lXG47O1xuXG5sZXQgKCkgPVxuICBpZiBhbV9yZWNvcmRpbmdcbiAgdGhlblxuICAgIFN0ZGxpYi5hdF9leGl0IChmdW4gKCkgLT5cbiAgICAgIHByaW50X3JlY29yZGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgKExpc3QucmV2IG1vZHVsZV90aW1lci50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcikpXG47O1xuIiwidHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmFzZS5UeXBlX2VxdWFsLnQgPSBUIDogKCdhLCAnYSkgdFxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgY29udiA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBhIC0+IGIgPSBmdW4gVCB4IC0+IHhcblxubW9kdWxlIExpZnQgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChhIFgudCwgYiBYLnQpIHQgPSBUXG5lbmRcbiIsIigqIHRoaXMgbGliIHNob3VsZCBub3QgZGVwZW5kIG9uIGNvcmUgKilcbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGxldCBjb21wYXJlIGNtcCBhIGIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiAwXG4gICAgICB8IFtdLCBfIC0+IC0xXG4gICAgICB8IF8sIFtdIC0+IDFcbiAgICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgICBsZXQgbiA9IGNtcCB4IHkgaW5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiBsb29wIHhzIHlzIGVsc2UgblxuICAgIGluXG4gICAgbG9vcCBhIGJcbiAgOztcbmVuZFxuXG5tb2R1bGUgVWlkIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgbmV4dCA6IHN0cmluZyAtPiB0XG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgdmFsIG5hbWUgOiB0IC0+IHN0cmluZ1xuICB2YWwgc3RhdGljIDogdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb2RlIDogaW50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIGEgYiA9IGNvbXBhcmUgKGEuY29kZSA6IGludCkgYi5jb2RlXG4gIGxldCBlcXVhbCBhIGIgPSAoYS5jb2RlIDogaW50KSA9IGIuY29kZVxuICBsZXQgdWlkID0gcmVmIDBcblxuICBsZXQgbmV4dCBuYW1lID1cbiAgICBsZXQgY29kZSA9ICF1aWQgaW5cbiAgICBpbmNyIHVpZDtcbiAgICB7IGNvZGU7IG5hbWUgfVxuICA7O1xuXG4gIGxldCBoYXNoIGEgPSBIYXNodGJsLmhhc2ggYS5jb2RlXG4gIGxldCBuYW1lIGEgPSBhLm5hbWVcbiAgbGV0IHN0YXRpYyA9IG5leHQgXCJzdGF0aWNcIlxuZW5kXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHVpZCA6IFVpZC50XG4gICAgOyBwYXJhbXMgOiB0IGxpc3RcbiAgICB9XG5cbiAgbGV0IHJlYyBjb21wYXJlIGsxIGsyID1cbiAgICBpZiBrMSA9PSBrMlxuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNtcCA9IFVpZC5jb21wYXJlIGsxLnVpZCBrMi51aWQgaW5cbiAgICAgIGlmIGNtcCA8PiAwIHRoZW4gY21wIGVsc2UgTGlzdC5jb21wYXJlIGNvbXBhcmUgazEucGFyYW1zIGsyLnBhcmFtcylcbiAgOztcblxuICBsZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG4gIGxldCBoYXNoID0gKEhhc2h0YmwuaGFzaCA6IHQgLT4gaW50KVxuICBsZXQgc3RhdGljID0geyB1aWQgPSBVaWQuc3RhdGljOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxudHlwZSAnYSB0ID0gS2V5LnRcbnR5cGUgJ2EgdHlwZW5hbWUgPSAnYSB0XG5cbmxldCBrZXkgdCA9IHRcbmxldCB1aWQgdCA9IHQuS2V5LnVpZFxubGV0IG5hbWUgdCA9IFVpZC5uYW1lIHQuS2V5LnVpZFxubGV0IHN0YXRpYyA9IEtleS5zdGF0aWNcbmxldCBjcmVhdGUgPyhuYW1lID0gXCJUeXBlbmFtZS5jcmVhdGVcIikgKCkgPSB7IEtleS51aWQgPSBVaWQubmV4dCBuYW1lOyBwYXJhbXMgPSBbXSB9XG5cbmluY2x1ZGUgc3RydWN0XG4gICgqIFRoZSBhcmd1bWVudCBmb3IgT2JqLm1hZ2ljIGhlcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbiBjb3JlL3R5cGVfZXF1YWwgKilcblxuICBsZXQgc2FtZSAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID0gS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcblxuICBsZXQgc2FtZV93aXRuZXNzICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPVxuICAgIGlmIEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG4gICAgdGhlbiBTb21lIChPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIDogKGEsIGIpIFR5cGVfZXF1YWwudClcbiAgICBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID1cbiAgICBpZiBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuICAgIHRoZW4gKE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgOiAoYSwgYikgVHlwZV9lcXVhbC50KVxuICAgIGVsc2UgZmFpbHdpdGggXCJUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuXCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdhIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdiIHR5cGVuYW1lIC0+ICgnYSwgJ2IpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYiB0eXBlbmFtZSAtPiAnYyB0eXBlbmFtZSAtPiAoJ2EsICdiLCAnYykgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3RcbiAgICA6ICAnYSB0eXBlbmFtZVxuICAgIC0+ICdiIHR5cGVuYW1lXG4gICAgLT4gJ2MgdHlwZW5hbWVcbiAgICAtPiAnZCB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90XG4gICAgOiAgJ2EgdHlwZW5hbWVcbiAgICAtPiAnYiB0eXBlbmFtZVxuICAgIC0+ICdjIHR5cGVuYW1lXG4gICAgLT4gJ2QgdHlwZW5hbWVcbiAgICAtPiAnZSB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90ID0geyBLZXkudWlkOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGEgXSB9XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYiBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGMgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGM7IGQgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkIGUgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYzsgZDsgZSBdIH1cbmVuZFxuXG5tb2R1bGUgS2V5X3RhYmxlID0gSGFzaHRibC5NYWtlIChLZXkpXG5cbm1vZHVsZSBUYWJsZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGRhdGEgPSBEYXRhIDogJ2EgdCAqICdhIFgudCAtPiBkYXRhXG4gIHR5cGUgdCA9IGRhdGEgS2V5X3RhYmxlLnRcblxuICBsZXQgY3JlYXRlIGludCA9IEtleV90YWJsZS5jcmVhdGUgaW50XG4gIGxldCBtZW0gdGFibGUgbmFtZSA9IEtleV90YWJsZS5tZW0gdGFibGUgKGtleSBuYW1lKVxuICBsZXQgc2V0IHRhYmxlIG5hbWUgZGF0YSA9IEtleV90YWJsZS5yZXBsYWNlIHRhYmxlIChrZXkgbmFtZSkgKERhdGEgKG5hbWUsIGRhdGEpKVxuXG4gIGxldCBmaW5kICh0eXBlIGEpIHRhYmxlIChuYW1lIDogYSB0eXBlbmFtZSkgPVxuICAgIGxldCBkYXRhID1cbiAgICAgIHRyeSBTb21lIChLZXlfdGFibGUuZmluZCB0YWJsZSAoa2V5IG5hbWUpKSB3aXRoXG4gICAgICB8IEJhc2UuTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKERhdGEgKG5hbWUnLCBkYXRhKSkgLT5cbiAgICAgIChmdW4gKHR5cGUgYikgKG5hbWUnIDogYiB0eXBlbmFtZSkgKGRhdGEgOiBiIFgudCkgLT5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSAoc2FtZV93aXRuZXNzX2V4biBuYW1lJyBuYW1lIDogKGIsIGEpIFR5cGVfZXF1YWwudCkgaW5cbiAgICAgICAgIFNvbWUgKGRhdGEgOiBhIFgudCkpXG4gICAgICAgIG5hbWUnXG4gICAgICAgIGRhdGFcbiAgOztcbmVuZFxuXG5sZXQgZmFpbCB1aWRfYSB1aWRfYiA9XG4gIGxldCBtc2cgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4biAlUyAlU1wiIChVaWQubmFtZSB1aWRfYSkgKFVpZC5uYW1lIHVpZF9iKVxuICBpblxuICBmYWlsd2l0aCBtc2dcbjs7XG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzEgKEEgOiBTMSkgKEIgOiBTMSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhLiAoJ2EgQS50LCAnYSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8yIChBIDogUzIpIChCIDogUzIpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYi4gKCgnYSwgJ2IpIEEudCwgKCdhLCAnYikgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8zIChBIDogUzMpIChCIDogUzMpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYiAnYy4gKCgnYSwgJ2IsICdjKSBBLnQsICgnYSwgJ2IsICdjKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNCAoQSA6IFM0KSAoQiA6IFM0KSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MgJ2QuICgoJ2EsICdiLCAnYywgJ2QpIEEudCwgKCdhLCAnYiwgJ2MsICdkKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl81IChBIDogUzUpIChCIDogUzUpID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBlcSA6XG4gICAgICAgICdhICdiICdjICdkICdlLiAoKCdhLCAnYiwgJ2MsICdkLCAnZSkgQS50LCAoJ2EsICdiLCAnYywgJ2QsICdlKSBCLnQpIFR5cGVfZXF1YWwudFxuICAgIH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcbiIsIigqKlxuICAgUGxhY2UgaG9sZGVyIGZvciBjb21tb24gVmFyaWFudHMgYW5kIEZpZWxkcyBpbnRlcmZhY2VcbiopXG5cbm1vZHVsZSBNIChYIDogc2lnXG4gICAgKCoqXG4gICAgICAgVGhpcyBmdW5jdG9yIGlzIGVzc2VudGlhbGx5IHRoZXJlIGJlY2F1c2Ugd2UgdXNlIHRoaXMgc2FtZSBpbnRlcmZhY2UgaW4gZGlmZmVyZW50XG4gICAgICAgY29udGV4dHMsIHdpdGggZGlmZmVyZW50IHR5cGVzIGZvciBbJ2EgdF0uXG5cbiAgICAgICAxKSBPbmUgdXNlIGNhc2UgZm9yIGl0IGlzIHdoZXJlIFsnYSBYLnQgPSAnYSBUeXBlcmVwLnRdLiAgVGhlc2UgaW50ZXJmYWNlcyBhcmUgdGhlblxuICAgICAgIHBhcnQgb2YgdGhlIHR5cGUgd2l0bmVzcyBidWlsdCBmb3IgYSB0eXBlIGNvbnRhaW5pbmcgYSByZWNvcmQgb3IgYSB2YXJpYW50IGluIGl0c1xuICAgICAgIHN0cnVjdHVyZS4gW3RyYXZlcnNlXSB3aWxsIGdpdmUgYSB3YXkgb2YgYWNjZXNzaW5nIHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIGZvciB0aGVcbiAgICAgICBhcmd1bWVudHMgb2YgYSB2YXJpYW50IG9yIHJlY29yZCB0eXBlLlxuXG4gICAgICAgMikgQW5vdGhlciB1c2UgY2FzZSBpcyBmb3IgYnVpbGRpbmcgXCJzdGFnZWQgZ2VuZXJpYyBjb21wdXRhdGlvbnNcIi4gSW4gdGhhdCBjYXNlLCB0aGVcbiAgICAgICB0eXBlIFsnYSBYLnRdIGlzIHRoZSB0eXBlIG9mIHRoZSBjb21wdXRhdGlvbiB0aGF0IGlzIGJlaW5nIGJ1aWx0LiAgW3RyYXZlcnNlXVxuICAgICAgIHJldHVybnMgdGhlIGNvbXB1dGF0aW9uIGJ1aWx0IGZvciB0aGUgYXJndW1lbnQuIFRoZSBpbnRlcmZhY2Ugbm8gbG9uZ2VyIGV4cG9ydHNcbiAgICAgICB0aGUgdHlwZXJlcCBvZiB0aGUgYXJndW1lbnRzIGluIGhvcGVzIG9mIGVuZm9yY2luZyB0aGF0IG5vIHR5cGVyZXAgdHJhdmVyc2FsXG4gICAgICAgaGFwcGVucyBhdCBydW50aW1lIGlmIHRoZSBjb21wdXRhdGlvbiBoYXBwZW4gdG8gYmUgYSBmdW5jdGlvbi5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgZnVuY3Rpb25zIHByZWZpeGVkIGJ5IFtpbnRlcm5hbF0gYXMgd2VsbCBhcyB0aGUgbW9kdWxlIHN1ZmZpeGVkIGJ5IFtfaW50ZXJuYWxdXG4gICAgIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiBbd2l0aCB0eXBlcmVwXSBhcyB3ZWxsIGFzIHNvbWVcbiAgICAgaW50ZXJuYWxzIG9mIHRoZSB0eXBlcmVwIGxpYnJhcnkuIERvIG5vdCBjb25zaWRlciB1c2luZyB0aGVzZSBzb21ld2hlcmUgZWxzZS4gIFRoZXlcbiAgICAgc2hvdWxkIGlkZWFsbHkgbm90IGJlIGV4cG9ydGVkIG91dHNpZGUgdGhlIHR5cGVyZXAgbGlicmFyeSwgYnV0IHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgICBuZWVkcyBzb21laG93IHRvIGFjY2VzcyB0aGlzLCBldmVuIG91dHNpZGUuICopXG5cbiAgbW9kdWxlIFRhZ19pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHQgPVxuICAgICAgeyBsYWJlbCA6IHN0cmluZ1xuICAgICAgOyByZXAgOiAnYXJncyBYLnRcbiAgICAgIDsgYXJpdHkgOiBpbnRcbiAgICAgIDsgYXJnc19sYWJlbHMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyBvY2FtbF9yZXByIDogaW50XG4gICAgICA7IHR5aWQgOiAnYXJncyBUeXBlbmFtZS50XG4gICAgICA7IGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZVxuICAgICAgfVxuICBlbmRcblxuICAoKipcbiAgICAgV2l0bmVzcyBvZiBhIHRhZywgdGhhdCBpcyBhbiBpdGVtIGluIGEgdmFyaWFudCB0eXBlLCBhbHNvIGNhbGxlZCBhbiBcImFwcGxpZWRcbiAgICAgdmFyaWFudCBDb25zdHJ1Y3RvclwiXG5cbiAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSB0YWdcbiAgICAgcGFyYW1ldGVycy4gIEV4YW1wbGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPVxuICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICB8IEIgb2Ygc3RyaW5nXG4gICAgICAgICB8IEMgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgXX1cblxuICAgICB0aGlzIHR5cGUgaGFzIHRocmVlIGNvbnN0cnVjdG9ycy4gRm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZ1xuICAgICBbVGFnLnRdOlxuXG4gICAgIHtbXG4gICAgICAgdmFsIHRhZ19BIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICAgIHZhbCB0YWdfQiA6ICh0LCBzdHJpbmcgICAgICAgICkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0MgOiAodCwgKGludCAqIHN0cmluZykpIFRhZy50XG4gICAgIF19XG5cbiAgICAgTm90ZSwgaW5saW5lIHJlY29yZCBpbiB2YXJpYW50IGFyZSB0eXBlZCBhcyBpZiB0aGVpciBkZWZpbml0aW9uIHdhcyB1c2luZyB0dXBsZXMsXG4gICAgIHdpdGhvdXQgdGhlIHBhcmVudGhlc2lzLiAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlaXIgcnVudGltZSByZXByZXNlbnRhdGlvbi4gIEJ1dFxuICAgICB0aGUgZGlzdGluY3Rpb24gaXMgY2FycmllZCBhbmQgYXZhaWxhYmxlIGZvciBpbnRyb3NwZWN0aW9uIGFzIHBhcnQgb2YgdGhlIFtUYWcudF0uXG4gICAgIFNlZSBbYXJnc19sYWJlbHNdLiAqKVxuICBtb2R1bGUgVGFnIDogc2lnXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGUgPVxuICAgICAgfCBBcmdzIG9mICgnYXJncyAtPiAndmFyaWFudClcbiAgICAgIHwgQ29uc3Qgb2YgJ3ZhcmlhbnRcblxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIG5hbWUgb2YgdGhlIGNvbnN0cnVjdG9yIGFzIGl0IGlzIGdpdmVuIGluIHRoZSBjb25jcmV0ZSBzeW50YXhcbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHt2XG4gICAgICAgICBDb25zdHJ1Y3RvciAgICAgICAgfCBsYWJlbFxuICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgfCBBIG9mIGludCAgICAgICAgIHwgIFwiQVwiXG4gICAgICAgICB8IGBhIG9mIGludCAgICAgICAgfCAgXCJhXCJcbiAgICAgICAgIHwgYEEgb2YgaW50ICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9IHwgIFwiQVwiXG4gICAgICAgdn1cblxuICAgICAgIGZvciBzdGFuZGFyZCB2YXJpYW50LCB0aGUgb2NhbWwgc3ludGF4IGltcGxpZXMgdGhhdCB0aGlzIGxhYmVsIHdpbGwgYWx3YXlzIHN0YXJ0c1xuICAgICAgIHdpdGggYSBjYXBpdGFsIGxldHRlci4gRm9yIHBvbHltb3JwaGljIHZhcmlhbnRzLCB0aGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIGNoYXIuXG4gICAgICAgRm9yIHBvbHltb3JwaGljIHZhcmlhbnQsIHRoaXMgbGFiZWwgZG9lcyBub3QgaW5jbHVkZSB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIHNpemUgb2YgdGhlIG9jYW1sIGhlYXAgYmxvY2sgY29udGFpbmluZyB0aGUgYXJndW1lbnRzXG5cbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7dlxuICAgICAgICAgIDA6IHwgQSB8ICdBXG4gICAgICAgICAgMTogfCBBIG9mIGludCB8IGBBIG9mIGludCB8IEEgb2YgKGludCAqIGludCkgfCBgQSBvZiAoaW50ICogaW50KVxuICAgICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludH1cbiAgICAgICAgICAyOiB8IEEgb2YgaW50ICogZmxvYXRcbiAgICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICAgICBldGMuXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcml0eSA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqIFRoZSBsYWJlbCBvZiB0aGUgZmllbGRzIGZvciBpbmxpbmUgcmVjb3Jkcy4gIEZvciBvdGhlciBmb3JtcyBvZiB0YWdzLCB0aGlzIGlzIHRoZVxuICAgICAgICBlbXB0eSBsaXN0LiAgV2hlbiB0aGlzIHJldHVybnMgYSBub24gZW1wdHkgbGlzdCwgdGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgbGlzdFxuICAgICAgICBpcyBlcXVhbCB0byB0aGUgYXJpdHkuXG5cbiAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICB7dlxuICAgICAgICAgKDEpIEVtcHR5OlxuXG4gICAgICAgICAgIHwgQSB8ICdBXG4gICAgICAgICAgIHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgfCBgQSBvZiBpbnQgKiBpbnRcbiAgICAgICAgICAgfCBBIG9mIGludCAqIGZsb2F0XG5cbiAgICAgICAgICgyKSBOb24gZW1wdHk6XG5cbiAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9ICAgICAgICAgICAgICAgLT4gWyBcInhcIiBdXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfSAgIC0+IFsgXCJ4XCIgOyBcInlcIiBdXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcmdzX2xhYmVscyA6IChfLCBfKSB0IC0+IHN0cmluZyBsaXN0XG5cbiAgICAoKipcbiAgICAgICBUaGUgaW5kZXggb2YgdGhlIGNvbnN0cnVjdG9yIGluIHRoZSBsaXN0IG9mIGFsbCB0aGUgdmFyaWFudCB0eXBlJ3MgY29uc3RydWN0b3JzXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBDIG9mIGludCAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRCBvZiBjaGFyICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEUgb2YgeyB4IDogaW50IH0gICgqIDQgKilcbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBvY2FtbF9yZXByIGlzIHJlbGF0ZWQgdG8gdGhlIHJ1bnRpbWUgb2Ygb2JqZWN0cy4gdGhpcyBpcyBlc3NlbnRpYWxseSBhIHdheSBvZlxuICAgICAgIGdpdmluZyBvbmUgdGhlIGFiaWxpdHkgdG8gcmVidWlsZCBkeW5hbWljYWxseSBhbiBbT2JqLnRdIHJlcHJlc2VudGluZyBhIHRhZy5cblxuICAgICAgIFBvbHltb3JwaGljIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSBoYXNoIG9mIHRoZSBsYWJlbCwgYXMgZG9uZSBieSB0aGUgY29tcGlsZXIuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyBgYmFyKSAgKCogNDg5NTE4NyAqKVxuICAgICAgIHByaW50X2ludCAoT2JqLm1hZ2ljICdmb28pICAoKiA1MDk3MjIyICopXG5cbiAgICAgICBTdGFuZGFyZHMgdmFyaWFudHM6XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSB0YWcgY29ycmVzcG9uZGluZyB0byB0aGUgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlLlxuICAgICAgIHRoZSB3YXkgaXQgd29ya3MgaW4gdGhlIG9jYW1sIHJ1bnRpbWUgaXMgYnkgcGFydGl0aW9uaW5nIHRoZSBjb25zdHJ1Y3RvcnMgcmVnYXJkaW5nXG4gICAgICAgaWYgdGhleSBoYXZlIHNvbWUgYXJndW1lbnRzIG9yIG5vdCwgcHJlc2VydmluZyB0aGUgb3JkZXIsIHRoZW4gYXNzaWduIGluY3JlYXNpbmdcbiAgICAgICBpbmRleCB3aXRoaW5nIGVhY2ggcGFydGl0aW9uLlxuICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0gICAgICAgICAgICAgICAgICAoKiBubyBhcmcgKikgICgqIGFyZ3MgKilcbiAgICAgICAgICAgfCBBICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQiBvZiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQyAgICAgICAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEQgb2YgKGZsb2F0ICogc3RyaW5nKSAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEUgICAgICAgICAgICAgICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBGICAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgICAgIHwgRyBvZiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgSCBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBvY2FtbF9yZXByIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHaXZlIGJhY2sgYSB3YXkgb2YgY29uc3RydWN0aW5nIGEgdmFsdWUgb2YgdGhhdCBjb25zdHJ1Y3RvciBmcm9tIGl0cyBhcmd1bWVudHMuXG5cbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgKGludCAqIHN0cmluZylcbiAgICAgICAgICAgfCBCIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgIHwgQ1xuICAgICAgICAgICB8IEQgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICBdfVxuXG4gICAgICAgW2NyZWF0ZV0gd2lsbCByZXR1cm4gc29tZXRoaW5nIGVxdWl2YWxlbnQgdG86XG4gICAgICAgdGFnX0EgOiBbQXJncyAoZnVuIChkIDogKGludCAqIHN0cmluZykgLT4gQSBkKV1cbiAgICAgICB0YWdfQiA6IFtBcmdzIChmdW4gKGksIGYpIC0+IEIgKGksIGYpKV1cbiAgICAgICB0YWdfQyA6IFtDb25zdCBDXVxuICAgICAgIHRhZ19EIDogW0FyZ3MgKGZ1biAoeCwgeSkgLT4gRCB7IHg7IHkgfSldXG4gICAgKilcbiAgICB2YWwgY3JlYXRlIDogKCd2YXJpYW50LCAnYXJncykgdCAtPiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiBtaWdodCBiZSB1c2VkIHRvIHBlcmZvcm0gc29tZSBsb29rdXAgYmFzZWRcbiAgICAgICAgb24gaXQgd2hpbGUgYnVpbGRpbmcgYSBjb21wdXRhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFR5cGVuYW1lLnRcblxuICAgICgqKiBnZXQgdGhlIHJlcHJlc2VudGF0aW9uL2NvbXB1dGF0aW9uIG9mIHRoZSBhcmd1bWVudHMgKilcbiAgICB2YWwgdHJhdmVyc2UgOiAoXywgJ2FyZ3MpIHQgLT4gJ2FyZ3MgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBUYWdfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVGFnX2ludGVybmFsXG5cbiAgICBsZXQgbGFiZWwgdCA9IHQubGFiZWxcbiAgICBsZXQgYXJpdHkgdCA9IHQuYXJpdHlcbiAgICBsZXQgYXJnc19sYWJlbHMgdCA9IHQuYXJnc19sYWJlbHNcbiAgICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgICBsZXQgb2NhbWxfcmVwciB0ID0gdC5vY2FtbF9yZXByXG4gICAgbGV0IGNyZWF0ZSB0ID0gdC5jcmVhdGVcbiAgICBsZXQgdHlpZCB0ID0gdC50eWlkXG4gICAgbGV0IHRyYXZlcnNlIHQgPSB0LnJlcFxuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAtPiAndmFyaWFudCB0YWdcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2EpIFRhZy50ICogJ2EgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyB0YWdzIDogJ2EgdGFnIGFycmF5XG4gICAgICA7IHBvbHltb3JwaGljIDogYm9vbFxuICAgICAgOyB2YWx1ZSA6ICdhIC0+ICdhIHZhbHVlXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBWYXJpYW50IDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIHRhZ3MgY29uc3RpdHVpbmcgYSB2YXJpYW50XG4gICAgICAgdHlwZS4gdGhlIFsndmFyaWFudF0gcGFyYW1ldGVyIGlzIHRoZSB2YXJpYW50IHR5cGUsIGl0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhlXG4gICAgICAgY29uc3RydWN0b3JzIG9mIHRoYXQgdmFyaWFudCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVycyBtaWdodCBiZSBkaWZmZXJlbnRcbiAgICAgICBmb3IgZWFjaCBjb25zdHJ1Y3RvciBhbmQgaXMgdGh1cyBleGlzdGVudGlhbFxuICAgICopXG4gICAgdHlwZSBfIHRhZyA9IFRhZyA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50IC0+ICd2YXJpYW50IHRhZ1xuXG4gICAgKCoqXG4gICAgICAgQSBzaW1pbGFyIGV4aXN0ZW50aWFsIGNvbnN0cnVjdG9yIHRvIFtfIHRhZ10gYnV0IHRoaXMgb25lIGhvbGRzIGEgdmFsdWUgd2hvc2UgdHlwZVxuICAgICAgIGlzIHRoZSBhcmd1bWVudHMgb2YgdGhlIHRhZyBjb25zdHJ1Y3Rvci4gIEEgdmFsdWUgb2YgdHlwZSBbJ2EgdmFsdWVdIGlzIGEgcGFpciBvZlxuICAgICAgICgxKSBhIHZhbHVlIG9mIHZhcmlhbnQgdHlwZSBbJ2FdIGFsb25nIHdpdGggKDIpIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAgICAgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlIFsnYV1cbiAgICAqKVxuICAgIHR5cGUgXyB2YWx1ZSA9IFZhbHVlIDogKCd2YXJpYW50LCAnYXJncykgVGFnLnQgKiAnYXJncyAtPiAndmFyaWFudCB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgV2l0bmVzcyBvZiBhIHZhcmlhbnQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgdmFyaWFudCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB0YWdzIG9mIHRoaXMgdmFyaWFudCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIHRhZyBvZiB0aGlzIHZhcmlhbnQgdHlwZSwgaW5kZXhlZCBmcm9tIDAuXG4gICAgKilcbiAgICB2YWwgdGFnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgdGFnXG5cbiAgICAoKipcbiAgICAgICBEaXN0aW5ndWlzaCBwb2x5bW9ycGhpYyB2YXJpYW50cyBhbmQgc3RhbmRhcmQgdmFyaWFudHMuIFR5cGljYWxseSwgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cyB0YWdzIHN0YXJ0cyB3aXRoIHRoZSBbYF0gY2hhcmFjdGVyLlxuICAgICAgIEV4YW1wbGVcbiAgICAgICBwb2x5bW9ycGhpYyB2YXJpYW50OiB0eXBlIHQgPSBbIGBBIHwgYEIgXVxuICAgICAgIHN0YW5kYXJkIHZhcmlhbnQ6ICAgIHR5cGUgdCA9IEEgfCBCXG4gICAgKilcbiAgICB2YWwgaXNfcG9seW1vcnBoaWMgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgUGF0dGVybiBtYXRjaGluZyBvbiBhIHZhbHVlIG9mIHRoaXMgdmFyaWFudCB0eXBlLlxuICAgICopXG4gICAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYSAtPiAnYSB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgdGFnIC0+ICdhY2MpIC0+ICdhY2NcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICdhIFZhcmlhbnRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyaWFudF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC50YWdzXG4gICAgbGV0IHRhZyB0IGluZGV4ID0gdC50YWdzLihpbmRleClcbiAgICBsZXQgaXNfcG9seW1vcnBoaWMgdCA9IHQucG9seW1vcnBoaWNcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gQXJyYXkuZm9sZF9sZWZ0IGYgaW5pdCB0LnRhZ3NcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2ZpZWxkIFgudFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyB0eWlkIDogJ2ZpZWxkIFR5cGVuYW1lLnRcbiAgICAgIDsgZ2V0IDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICAgIDsgKCogc2V0IDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvbjsgKFxcKiBtdXRhYmxlIGZpZWxkICpcXCkgKilcbiAgICAgICAgaXNfbXV0YWJsZSA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSBmaWVsZCwgdGhhdCBpcyBhbiBpdGVtIGluIGEgcmVjb3JkIHR5cGUuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC5cbiAgICAgRXhhbXBsZTpcbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQgOyB5IDogc3RyaW5nIH1cbiAgICAgXX1cbiAgICAgVGhpcyB0eXBlIGhhcyB0d28gZmllbGRzLiBmb3IgZWFjaCBvZiB0aGVtIHdlJ2xsIGhhdmUgYSBjb3JyZXNwb25kaW5nIFtGaWVsZC50XVxuXG4gICAgIHZhbCBmaWVsZF94IDogKHQsIGludCkgRmllbGQudFxuICAgICB2YWwgZmllbGRfeSA6ICh0LCBzdHJpbmcpIEZpZWxkLnRcbiAgKilcbiAgbW9kdWxlIEZpZWxkIDogc2lnXG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0XG5cblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHsgeCAgIDogaW50OyAgICAgKCogXCJ4XCIgKilcbiAgICAgICAgICAgZm9vIDogc3RyaW5nOyAgKCogXCJmb29cIiAqKVxuICAgICAgICAgICBiYXIgOiBmbG9hdDsgICAoKiBcImJhclwiICopXG4gICAgICAgICB9XG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlIGZpZWxkIGluIHRoZSBsaXN0IG9mIGFsbCBmaWVsZHMgZm9yIHRoaXMgcmVjb3JkIHR5cGUuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgICB4ICAgOiBpbnQ7ICAgICAoKiAwICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIDEgKilcbiAgICAgICAgICAgYmFyIDogc3RyaW5nOyAgKCogMiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgaW5kZXggOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEZpZWxkIGFjY2Vzc29ycy4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgZG90IG9wZXJhdGlvbi5cbiAgICAgICBbRmllbGQuZ2V0IGJhcl9maWVsZCB0XSByZXR1cm5zIHRoZSBmaWVsZCBbYmFyXSBvZiB0aGUgcmVjb3JkIHZhbHVlIFt0XSwganVzdCB0aGVcbiAgICAgICBzYW1lIGFzIFt0LmJhcl1cbiAgICAqKVxuICAgIHZhbCBnZXQgOiAoJ3JlY29yZCwgJ2ZpZWxkKSB0IC0+ICdyZWNvcmQgLT4gJ2ZpZWxkXG5cbiAgICAoKiogcmV0dXJuIHdoZXRoZXIgdGhlIGZpZWxkIGlzIG11dGFibGUsIGkuZS4gd2hldGhlciBpdHMgZGVjbGFyYXRpb24gaXMgcHJlZml4ZWQgd2l0aFxuICAgICAgICB0aGUga2V5d29yZCBbbXV0YWJsZV0gKilcbiAgICB2YWwgaXNfbXV0YWJsZSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiAgTWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0ICopXG4gICAgdmFsIHR5aWQgOiAoXywgJ2ZpZWxkKSB0IC0+ICdmaWVsZCBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBGaWVsZF9pbnRlcm5hbC50IC0+ICgnYSwgJ2IpIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBGaWVsZF9pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IGdldCB0ID0gdC5nZXRcbiAgICBsZXQgaXNfbXV0YWJsZSB0ID0gdC5pc19tdXRhYmxlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFJlY29yZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyBmaWVsZCA9IEZpZWxkIDogKCdyZWNvcmQsICdhKSBGaWVsZC50IC0+ICdyZWNvcmQgZmllbGRcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyBmaWVsZHMgOiAnYSBmaWVsZCBhcnJheVxuICAgICAgOyBoYXNfZG91YmxlX2FycmF5X3RhZyA6IGJvb2xcbiAgICAgIDsgY3JlYXRlIDogJ2EgZmllbGRzIC0+ICdhXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmQgOiBzaWdcbiAgICAoKipcbiAgICAgICBBbiBleGlzdGVudGlhbCB0eXBlIHVzZWQgdG8gZ2F0aGVyIGFsbCB0aGUgZmllbGRzIGNvbnN0aXR1aW5nIGEgcmVjb3JkIHR5cGUuIHRoZVxuICAgICAgIFsncmVjb3JkXSBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZSBmaWVsZCBvZiB0aGF0XG4gICAgICAgcmVjb3JkIHR5cGUuIFRoZSB0eXBlIG9mIHRoZSBmaWVsZHMgbWlnaHQgYmUgZGlmZmVyZW50IGZvciBlYWNoIGZpZWxkIGFuZCBpcyB0aHVzXG4gICAgICAgZXhpc3RlbnRpYWwuXG4gICAgKilcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBbJ3JlY29yZCBmaWVsZHNdIGlzIGEgdHlwZSBpc29tb3JwaGljIHRvIFsncmVjb3JkXS4gIFRoaXMgZ2l2ZXMgYSB3YXkgdG8gZ2V0IHRoZVxuICAgICAgIGZpZWxkIHZhbHVlIGZvciBlYWNoIGZpZWxkIG9mIHRoZSByZWNvcmQuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICB0aGF0IGl0IGlzIGNvbnZlbmllbnQgZm9yIHdyaXRpbmcgZ2VuZXJpYyBjb21wdXRhdGlvbnMuXG4gICAgKilcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSByZWNvcmQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgcmVjb3JkIHR5cGUgd2l0bmVzc2VkLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuXG4gICAgKCoqXG4gICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBvZiB0aGlzIHJlY29yZCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIGZpZWxkIG9mIHRoaXMgcmVjb3JkIHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIGZpZWxkIDogJ2EgdCAtPiBpbnQgLT4gJ2EgZmllbGRcblxuICAgICgqKlxuICAgICAgIFRoaXMgaXMgYSBsb3cgbGV2ZWwgbWV0YWRhdGEgcmVnYXJkaW5nIHRoZSB3YXkgdGhlIG9jYW1sIGNvbXBpbGVyIHJlcHJlc2VudCB0aGVcbiAgICAgICBhcnJheSB1bmRlcm5lYXRoIHRoYXQgaXMgdGhlIHJ1bnRpbWUgdmFsdWUgb2YgYSByZWNvcmQgb2YgdHlwZSBbJ2FdIGdpdmVuIGEgd2l0bmVzc1xuICAgICAgIG9mIHR5cGUgWydhIHRdLiBbaGFzX2RvdWJsZV9hcnJheV90YWcgd10gcmV0dXJucyBbdHJ1ZV0gaWYgdGhlIGFycmF5IHRoYXRcbiAgICAgICByZXByZXNlbnRzIHJ1bnRpbWUgdmFsdWVzIG9mIHRoaXMgdHlwZSBpcyBhbiBvcHRpbWl6ZWQgb2NhbWwgZmxvYXQgYXJyYXkuXG4gICAgICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgYmUgdHJ1ZSBmb3IgcmVjb3JkIHdoZXJlIGFsbCBmaWVsZHMgYXJlIHN0YXRpY2FsbHkga25vd24gYXMgdG9cbiAgICAgICBiZSBbZmxvYXRzXS5cblxuICAgICAgIE5vdGUgdGhhdCB5b3UgY2FuJ3QgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZHluYW1pY2FsbHkgYnkgaW5zcGVjdGluZyB0aGUgdHlwZXJlcCBvbmNlXG4gICAgICAgaXQgaXMgYXBwbGllZCwgYmVjYXVzZSB0aGVyZSBpcyBhdCB0aGlzIHBvaW50IG5vIHdheSB0byB0ZWxsIHdoZXRoZXIgb25lIG9mIHRoZVxuICAgICAgIGZpZWxkIGlzIHBvbHltb3JwaGljIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgRXhwb3NlIG9uZSBkaXJlY3Rpb24gb2YgdGhlIGlzb21vcnBoaXNtIGJldHdlZW4gYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYW5kIGEgdmFsdWUgb2ZcbiAgICAgICB0eXBlIFsnYSBmaWVsZHNdLiBCYXNpY2FsbHksIGdpdmVuIGFuIGVuY29kaW5nIHdheSBvZiBhY2Nlc3NpbmcgdGhlIHZhbHVlIG9mIGFsbFxuICAgICAgIHRoZSBmaWVsZHMgb2YgYSByZWNvcmQsIGNyZWF0ZSB0aGF0IHJlY29yZCBhbmQgcmV0dXJuIGl0LlxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICdhIHQgLT4gJ2EgZmllbGRzIC0+ICdhXG5cbiAgICAoKipcbiAgICAgICBmb2xkaW5nIGFsb25nIHRoZSB0YWdzIG9mIHRoZSB2YXJpYW50IHR5cGVcbiAgICAqKVxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooJ2FjYyAtPiAnYSBmaWVsZCAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBSZWNvcmRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUmVjb3JkX2ludGVybmFsXG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCB0ID0gdC50eXBlbmFtZVxuICAgIGxldCBsZW5ndGggdCA9IEFycmF5Lmxlbmd0aCB0LmZpZWxkc1xuICAgIGxldCBmaWVsZCB0IGluZGV4ID0gdC5maWVsZHMuKGluZGV4KVxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyB0ID0gdC5oYXNfZG91YmxlX2FycmF5X3RhZ1xuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC5maWVsZHNcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSBOYW1lX29mID0gc3RydWN0XG4gIGxldCB0eXBlbmFtZV9vZl9pbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDMyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQzMlxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQzMlwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfaW50NjQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludDY0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludDY0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9uYXRpdmVpbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG5hdGl2ZWludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJuYXRpdmVpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2NoYXIgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGNoYXJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiY2hhclwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfZmxvYXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImZsb2F0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9zdHJpbmcgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJzdHJpbmdcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2J5dGVzID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJieXRlc1wiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfYm9vbCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYm9vbFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJib29sXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl91bml0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcInVuaXRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbW9kdWxlIE1fb3B0aW9uID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgICAgIGxldCBuYW1lID0gXCJvcHRpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2Zfb3B0aW9uID0gTV9vcHRpb24udHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xpc3QgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBuYW1lID0gXCJsaXN0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xpc3QgPSBNX2xpc3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2FycmF5ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICAgICAgbGV0IG5hbWUgPSBcImFycmF5XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2FycmF5ID0gTV9hcnJheS50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fbGF6eV90ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbiAgICAgIGxldCBuYW1lID0gXCJsYXp5X3RcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfbGF6eV90ID0gTV9sYXp5X3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3JlZiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlZlxuXG4gICAgICBsZXQgbmFtZSA9IFwicmVmXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3JlZiA9IE1fcmVmLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9mdW5jdGlvbiA9IFR5cGVuYW1lLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIC0+ICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJmdW5jdGlvblwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9mdW5jdGlvbiA9IE1fZnVuY3Rpb24udHlwZW5hbWVfb2ZfdFxuXG4gIHR5cGUgdHVwbGUwID0gdW5pdFxuXG4gIG1vZHVsZSBNX3R1cGxlMCA9IFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHR1cGxlMFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUwXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMCA9IE1fdHVwbGUwLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTIgPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTJcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUyID0gTV90dXBsZTIudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlMyA9IFR5cGVuYW1lLk1ha2UzIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2NcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlM1wiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTMgPSBNX3R1cGxlMy50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU0ID0gVHlwZW5hbWUuTWFrZTQgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSAqICdiICogJ2MgKiAnZFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNCA9IE1fdHVwbGU0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTUgPSBUeXBlbmFtZS5NYWtlNSAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTVcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGU1ID0gTV90dXBsZTUudHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSByZWMgVHlwZXJlcCA6IHNpZ1xuICB0eXBlIF8gdCA9XG4gICAgfCBJbnQgOiBpbnQgdFxuICAgIHwgSW50MzIgOiBpbnQzMiB0XG4gICAgfCBJbnQ2NCA6IGludDY0IHRcbiAgICB8IE5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgfCBDaGFyIDogY2hhciB0XG4gICAgfCBGbG9hdCA6IGZsb2F0IHRcbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCeXRlcyA6IGJ5dGVzIHRcbiAgICB8IEJvb2wgOiBib29sIHRcbiAgICB8IFVuaXQgOiB1bml0IHRcbiAgICB8IE9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB8IExpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHwgQXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgICB8IExhenkgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gICAgfCBSZWYgOiAnYSB0IC0+ICdhIHJlZiB0XG4gICAgfCBGdW5jdGlvbiA6ICgnZG9tIHQgKiAncm5nIHQpIC0+ICgnZG9tIC0+ICdybmcpIHRcbiAgICB8IFR1cGxlIDogJ2EgVHlwZXJlcC5UdXBsZS50IC0+ICdhIHRcbiAgICB8IFJlY29yZCA6ICdhIFR5cGVyZXAuUmVjb3JkLnQgLT4gJ2EgdFxuICAgIHwgVmFyaWFudCA6ICdhIFR5cGVyZXAuVmFyaWFudC50IC0+ICdhIHRcbiAgICB8IE5hbWVkIDogKCdhIFR5cGVyZXAuTmFtZWQudCAqICdhIHQgbGF6eV90IG9wdGlvbikgLT4gJ2EgdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgVDAgPSBzaWdcbiAgICAgIHR5cGUgbmFtZWRcbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgICAgIHR5cGUgJ2EgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdhIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBhIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQyID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYiBUeXBlbmFtZS50IC0+ICgnYSwgJ2IpIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYikgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDMgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYykgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDQgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ1ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGVcblxuICAgICAgdmFsIGUgOiBlIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2UgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCwgZSkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgKCogdGhlcmUgdGhlIG1vZHVsZSBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBhIHR5cGUgW3RdIHdpdGhcbiAgICAgICBwYXJhbWV0ZXJzIHdob3NlIGtpbmQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSB0eXBlIHZhcmlhYmxlOiBbJ2EgJ3RdLCBldmVuIHdpdGhcbiAgICAgICBhIGdhZHQuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVDAgb2YgKG1vZHVsZSBUMCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMSBvZiAobW9kdWxlIFQxIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQyIG9mIChtb2R1bGUgVDIgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDMgb2YgKG1vZHVsZSBUMyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNCBvZiAobW9kdWxlIFQ0IHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ1IG9mIChtb2R1bGUgVDUgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICAgIHZhbCBuYW1lIDogXyB0IC0+IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgVHVwbGUgOiBzaWdcbiAgICAoKiB0aGVzZSBjb25zdHJ1Y3RvcnMgY291bGQgYmUgcGx1bmdlZCBhdCB0b3BsZXZlbCBvZiBUeXBlcmVwLnQsIGhvd2V2ZXIgaXQgaXMgbGVzc1xuICAgICAgIHZlcmJvc2UgdGhhdCB3YXkgKilcbiAgICB0eXBlIF8gdCA9XG4gICAgICB8IFQyIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCkgLT4gKCdhICogJ2IpIHRcbiAgICAgIHwgVDMgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gICAgICB8IFQ0IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICAgICAgfCBUNSA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudCAqICdlIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuXG4gICAgdmFsIGFyaXR5IDogXyB0IC0+IGludFxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBUeXBlcmVwLnRcblxuICB2YWwgc2FtZSA6IF8gdCAtPiBfIHQgLT4gYm9vbFxuICB2YWwgc2FtZV93aXRuZXNzIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbiAgdmFsIHNhbWVfd2l0bmVzc19leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50XG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIHZhbCBoZWFkIDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBUMCBfIC0+IDBcbiAgICAgIHwgVDEgXyAtPiAxXG4gICAgICB8IFQyIF8gLT4gMlxuICAgICAgfCBUMyBfIC0+IDNcbiAgICAgIHwgVDQgXyAtPiA0XG4gICAgICB8IFQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCAodHlwZSBhKSA9IGZ1bmN0aW9uXG4gICAgICB8IFQwIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQwIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQxIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQxIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQyIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQzIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ0IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ1IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ1IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgOztcblxuICAgIGxldCBuYW1lIHJlcCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgKHR5cGVuYW1lX29mX3QgcmVwKSlcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlID0gc3RydWN0XG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoaXMgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIGxldCBhcml0eSA6IHR5cGUgYS4gYSB0IC0+IGludCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgXyAtPiAyXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgXyAtPiAzXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgXyAtPiA0XG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgXyAtPiA1XG4gICAgOztcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICAgIHwgVDIgKGEsIGIpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUyIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSkgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgfCBUMyAoYSwgYiwgYykgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTNcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgIHwgVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU0XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgfCBUNSAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTVcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGQpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlcFxuICAgIGVuZClcblxuICBsZXQgcmVjIHR5cGVuYW1lX29mX3QgOiB0eXBlIGEuIGEgdCAtPiBhIFR5cGVuYW1lLnQgPSBmdW5jdGlvblxuICAgIHwgSW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50XG4gICAgfCBJbnQzMiAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDMyXG4gICAgfCBJbnQ2NCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDY0XG4gICAgfCBOYXRpdmVpbnQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICB8IENoYXIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9jaGFyXG4gICAgfCBGbG9hdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2Zsb2F0XG4gICAgfCBTdHJpbmcgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9zdHJpbmdcbiAgICB8IEJ5dGVzIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICB8IEJvb2wgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9ib29sXG4gICAgfCBVbml0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfdW5pdFxuICAgIHwgT3B0aW9uIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX29wdGlvbiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBMaXN0IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2xpc3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgQXJyYXkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYXJyYXkgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGF6eSByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9sYXp5X3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgUmVmIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3JlZiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBGdW5jdGlvbiAoZG9tLCBybmcpIC0+XG4gICAgICBOYW1lX29mLnR5cGVuYW1lX29mX2Z1bmN0aW9uICh0eXBlbmFtZV9vZl90IGRvbSkgKHR5cGVuYW1lX29mX3Qgcm5nKVxuICAgIHwgVHVwbGUgcmVwIC0+IFR5cGVyZXAuVHVwbGUudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFJlY29yZCByZXAgLT4gVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFZhcmlhbnQgcmVwIC0+IFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZVxuICA7O1xuXG4gIGxldCByZWMgc2FtZV93aXRuZXNzIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIFR5cGVfZXF1YWwudCBvcHRpb24gPVxuICAgIGZ1biB0MSB0MiAtPlxuICAgICAgbGV0IG1vZHVsZSBFID0gVHlwZV9lcXVhbCBpblxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgTmFtZWQgKG5hbWUxLCByMSksIE5hbWVkIChuYW1lMiwgcjIpIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3MgKE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZTEpIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUyKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggcjEsIHIyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBTb21lIChsYXp5IHQxKSwgTm9uZSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgTm9uZSwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZSkpXG4gICAgICB8IE5hbWVkIChfLCByMSksIHQyIC0+XG4gICAgICAgIChtYXRjaCByMSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDEpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IHQxLCBOYW1lZCAoXywgcjIpIC0+XG4gICAgICAgIChtYXRjaCByMiB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IEludCwgSW50IC0+IFNvbWUgRS5UXG4gICAgICB8IEludDMyLCBJbnQzMiAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQ2NCwgSW50NjQgLT4gU29tZSBFLlRcbiAgICAgIHwgTmF0aXZlaW50LCBOYXRpdmVpbnQgLT4gU29tZSBFLlRcbiAgICAgIHwgQ2hhciwgQ2hhciAtPiBTb21lIEUuVFxuICAgICAgfCBGbG9hdCwgRmxvYXQgLT4gU29tZSBFLlRcbiAgICAgIHwgU3RyaW5nLCBTdHJpbmcgLT4gU29tZSBFLlRcbiAgICAgIHwgQnl0ZXMsIEJ5dGVzIC0+IFNvbWUgRS5UXG4gICAgICB8IEJvb2wsIEJvb2wgLT4gU29tZSBFLlRcbiAgICAgIHwgVW5pdCwgVW5pdCAtPiBTb21lIEUuVFxuICAgICAgfCBPcHRpb24gcjEsIE9wdGlvbiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMaXN0IHIxLCBMaXN0IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEFycmF5IHIxLCBBcnJheSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMYXp5IHIxLCBMYXp5IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IFJlZiByMSwgUmVmIHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEZ1bmN0aW9uIChkb20xLCBybmcxKSwgRnVuY3Rpb24gKGRvbTIsIHJuZzIpIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgZG9tMSBkb20yLCBzYW1lX3dpdG5lc3Mgcm5nMSBybmcyIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICB8IFR1cGxlIHQxLCBUdXBsZSB0MiAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSBUeXBlcmVwLlR1cGxlIGluXG4gICAgICAgIChtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgfCBULlQyIChhMSwgYjEpLCBULlQyIChhMiwgYjIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQzIChhMSwgYjEsIGMxKSwgVC5UMyAoYTIsIGIyLCBjMikgLT5cbiAgICAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8gfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQ0IChhMSwgYjEsIGMxLCBkMSksIFQuVDQgKGEyLCBiMiwgYzIsIGQyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIsIHNhbWVfd2l0bmVzcyBjMSBjMiwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8gfCBfLCBOb25lLCBfLCBfIHwgXywgXywgTm9uZSwgXyB8IF8sIF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNSAoYTEsIGIxLCBjMSwgZDEsIGUxKSwgVC5UNSAoYTIsIGIyLCBjMiwgZDIsIGUyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgKCBzYW1lX3dpdG5lc3MgYTEgYTJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYjEgYjJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYzEgYzJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZDEgZDJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZTEgZTIgKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBOb25lLCBfLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIE5vbmUsIF8sIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgTm9uZSwgX1xuICAgICAgICAgICAgfCBfLCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDIgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDMgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDQgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDUgXywgXyAtPiBOb25lKVxuICAgICAgfCBSZWNvcmQgcjEsIFJlY29yZCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMSlcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgVmFyaWFudCByMSwgVmFyaWFudCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIyKVxuICAgICAgfCBJbnQsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQzMiwgXyAtPiBOb25lXG4gICAgICB8IEludDY0LCBfIC0+IE5vbmVcbiAgICAgIHwgTmF0aXZlaW50LCBfIC0+IE5vbmVcbiAgICAgIHwgQ2hhciwgXyAtPiBOb25lXG4gICAgICB8IEZsb2F0LCBfIC0+IE5vbmVcbiAgICAgIHwgU3RyaW5nLCBfIC0+IE5vbmVcbiAgICAgIHwgQnl0ZXMsIF8gLT4gTm9uZVxuICAgICAgfCBCb29sLCBfIC0+IE5vbmVcbiAgICAgIHwgVW5pdCwgXyAtPiBOb25lXG4gICAgICB8IE9wdGlvbiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgTGlzdCBfLCBfIC0+IE5vbmVcbiAgICAgIHwgQXJyYXkgXywgXyAtPiBOb25lXG4gICAgICB8IExhenkgXywgXyAtPiBOb25lXG4gICAgICB8IFJlZiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgRnVuY3Rpb24gXywgXyAtPiBOb25lXG4gICAgICB8IFR1cGxlIF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWNvcmQgXywgXyAtPiBOb25lXG4gICAgICB8IFZhcmlhbnQgXywgXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWUgYSBiID0gc2FtZV93aXRuZXNzIGEgYiA8PiBOb25lXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gYSBiID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgYSBiIHdpdGhcbiAgICB8IFNvbWUgcHJvb2YgLT4gcHJvb2ZcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWFkID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQgKF8sIFNvbWUgKGxhenkgdCkpIC0+IGhlYWQgdFxuICAgIHwgdCAtPiB0XG4gIDs7XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfaW50ID0gVHlwZXJlcC5JbnRcbmxldCB0eXBlcmVwX29mX2ludDMyID0gVHlwZXJlcC5JbnQzMlxubGV0IHR5cGVyZXBfb2ZfaW50NjQgPSBUeXBlcmVwLkludDY0XG5sZXQgdHlwZXJlcF9vZl9uYXRpdmVpbnQgPSBUeXBlcmVwLk5hdGl2ZWludFxubGV0IHR5cGVyZXBfb2ZfY2hhciA9IFR5cGVyZXAuQ2hhclxubGV0IHR5cGVyZXBfb2ZfZmxvYXQgPSBUeXBlcmVwLkZsb2F0XG5sZXQgdHlwZXJlcF9vZl9zdHJpbmcgPSBUeXBlcmVwLlN0cmluZ1xubGV0IHR5cGVyZXBfb2ZfYnl0ZXMgPSBUeXBlcmVwLkJ5dGVzXG5sZXQgdHlwZXJlcF9vZl9ib29sID0gVHlwZXJlcC5Cb29sXG5sZXQgdHlwZXJlcF9vZl91bml0ID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl9vcHRpb24gcmVwID0gVHlwZXJlcC5PcHRpb24gcmVwXG5sZXQgdHlwZXJlcF9vZl9saXN0IHJlcCA9IFR5cGVyZXAuTGlzdCByZXBcbmxldCB0eXBlcmVwX29mX2FycmF5IHJlcCA9IFR5cGVyZXAuQXJyYXkgcmVwXG5sZXQgdHlwZXJlcF9vZl9sYXp5X3QgcmVwID0gVHlwZXJlcC5MYXp5IHJlcFxubGV0IHR5cGVyZXBfb2ZfcmVmIHJlcCA9IFR5cGVyZXAuUmVmIHJlcFxubGV0IHR5cGVyZXBfb2ZfZnVuY3Rpb24gZG9tIHJuZyA9IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUwID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl90dXBsZTIgYSBiID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMiAoYSwgYikpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTMgYSBiIGMgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQzIChhLCBiLCBjKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlNCBhIGIgYyBkID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTUgYSBiIGMgZCBlID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNSAoYSwgYiwgYywgZCwgZSkpXG5cbmluY2x1ZGUgTmFtZV9vZlxuXG5sZXQgdmFsdWVfdHVwbGUwID0gKClcblxubGV0IHR5cGVyZXBfb2ZfaW50NjMsIHR5cGVuYW1lX29mX2ludDYzID1cbiAgbGV0IHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHJcbiAgICA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBhIFR5cGVyZXAudCAqIGEgVHlwZW5hbWUudFxuICAgID0gZnVuY3Rpb25cbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IHR5cGVyZXBfb2ZfaW50LCB0eXBlbmFtZV9vZl9pbnRcbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gdHlwZXJlcF9vZl9pbnQ2NCwgdHlwZW5hbWVfb2ZfaW50NjRcbiAgaW5cbiAgdHlwZXJlcF9hbmRfdHlwZW5hbWVfb2ZfaW50NjNfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuOztcbiIsIigqIHVzaW5nIHRoZSBoYXNoX3ZhcmlhbnQgb2YgcGFfdHlwZV9jb252IGF0IGNvbXBpbGUgdGltZSAqKVxubGV0IHJlcHJfb2ZfcG9seV92YXJpYW50IDogWz4gXSAtPiBpbnQgPVxuICBmdW4gdmFyaWFudCAtPlxuICBsZXQgb2JqID0gT2JqLnJlcHIgdmFyaWFudCBpblxuICBpZiBPYmouaXNfaW50IG9ialxuICB0aGVuIE9iai5vYmogb2JqXG4gIGVsc2UgKFxuICAgIGxldCBzaXplID0gT2JqLnNpemUgb2JqIGluXG4gICAgYXNzZXJ0IChzaXplID0gMik7XG4gICAgbGV0IHJlcHIgPSBPYmouZmllbGQgb2JqIDAgaW5cbiAgICBhc3NlcnQgKE9iai5pc19pbnQgcmVwcik7XG4gICAgT2JqLm9iaiByZXByKVxuOztcblxubGV0IGhhc2hfdmFyaWFudCBzID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gKDIyMyAqICFhY2N1KSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKCgxIGxzbCAzMSkgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdVxuOztcblxuKCogYSBmZXcgdW5pdCB0ZXN0cyBvZiBjYXNlcyB0aGF0IGhhdmUgdHJpZ2dlcmVkIGRpZmZzIGluIHRoZSBwYXN0IG9mIHRoaXNcbiAgIGxpYiAqKVxubGV0ICgpID0gYXNzZXJ0IChyZXByX29mX3BvbHlfdmFyaWFudCBgTGF0ZW5jeV9zdGF0cyA9IGhhc2hfdmFyaWFudCBcIkxhdGVuY3lfc3RhdHNcIilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYHplcm8gPSBoYXNoX3ZhcmlhbnQgXCJ6ZXJvXCIpXG5sZXRbQGlubGluZSBuZXZlcl0gZG91YmxlX2FycmF5X3ZhbHVlICgpID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqLm1hZ2ljIDAuKVxubGV0IGhhc19kb3VibGVfYXJyYXlfdGFnIGEgPSBPYmouZG91YmxlX2FycmF5X3RhZyA9IE9iai50YWcgKE9iai5yZXByIGEpXG5cbmxldCAoKSA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgZG91YmxlID1cbiAgICAgIHsgYSA6IGZsb2F0XG4gICAgICA7IGIgOiBmbG9hdFxuICAgICAgfVxuXG4gICAgdHlwZSBzaW1wbGUgPVxuICAgICAgeyBjIDogZmxvYXRcbiAgICAgIDsgZCA6IGludFxuICAgICAgfVxuXG4gICAgbGV0IGRvdWJsZSA9IHsgYSA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKTsgYiA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKSB9XG4gICAgbGV0IHNpbXBsZSA9IHsgYyA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKTsgZCA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKSB9XG4gIGVuZFxuICBpblxuICBhc3NlcnQgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uZG91YmxlKTtcbiAgYXNzZXJ0IChub3QgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uc2ltcGxlKSlcbjs7XG4iLCJtb2R1bGUgTSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGNvbXB1dGUgOiB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gKCdhLCAnYikgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAoJ2EsICdiLCAnYykgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAnZCBYLnQgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgWC50XG4gICAgICAtPiAnYiBYLnRcbiAgICAgIC0+ICdjIFgudFxuICAgICAgLT4gJ2QgWC50XG4gICAgICAtPiAnZSBYLnRcbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgWC50XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50ZiA9IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmXG5cbm1vZHVsZSBIZWxwZXIgKEEgOiBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TKSAoQiA6IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMpID0gc3RydWN0XG4gIHR5cGUgbWFwID0geyBtYXAgOiAnYS4gJ2EgQS50IC0+ICdhIEIudCB9XG5cbiAgbGV0IG1hcF92YXJpYW50ICh0eXBlIHZhcmlhbnQpIHsgbWFwIH0gKHZhcmlhbnQgOiB2YXJpYW50IEEuVmFyaWFudC50KSA9XG4gICAgbGV0IG1hcF9jcmVhdGUgPSBmdW5jdGlvblxuICAgICAgfCBBLlRhZy5BcmdzIGZjdCAtPiBCLlRhZ19pbnRlcm5hbC5BcmdzIGZjdFxuICAgICAgfCBBLlRhZy5Db25zdCBrIC0+IEIuVGFnX2ludGVybmFsLkNvbnN0IGtcbiAgICBpblxuICAgIGxldCBtYXBfdGFnIHRhZyA9XG4gICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVGFnIHRhZyAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBBLlRhZy5sYWJlbCB0YWcgaW5cbiAgICAgICAgbGV0IHJlcCA9IG1hcCAoQS5UYWcudHJhdmVyc2UgdGFnKSBpblxuICAgICAgICBsZXQgYXJpdHkgPSBBLlRhZy5hcml0eSB0YWcgaW5cbiAgICAgICAgbGV0IGFyZ3NfbGFiZWxzID0gQS5UYWcuYXJnc19sYWJlbHMgdGFnIGluXG4gICAgICAgIGxldCBpbmRleCA9IEEuVGFnLmluZGV4IHRhZyBpblxuICAgICAgICBsZXQgb2NhbWxfcmVwciA9IEEuVGFnLm9jYW1sX3JlcHIgdGFnIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5UYWcudHlpZCB0YWcgaW5cbiAgICAgICAgbGV0IGNyZWF0ZSA9IG1hcF9jcmVhdGUgKEEuVGFnLmNyZWF0ZSB0YWcpIGluXG4gICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5UYWdcbiAgICAgICAgICAoQi5UYWcuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgICAgICAgICB7IEIuVGFnX2ludGVybmFsLmxhYmVsXG4gICAgICAgICAgICAgOyByZXBcbiAgICAgICAgICAgICA7IGFyaXR5XG4gICAgICAgICAgICAgOyBhcmdzX2xhYmVsc1xuICAgICAgICAgICAgIDsgaW5kZXhcbiAgICAgICAgICAgICA7IG9jYW1sX3JlcHJcbiAgICAgICAgICAgICA7IHR5aWRcbiAgICAgICAgICAgICA7IGNyZWF0ZVxuICAgICAgICAgICAgIH0pXG4gICAgaW5cbiAgICBsZXQgdHlwZW5hbWUgPSBBLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50IGluXG4gICAgbGV0IHBvbHltb3JwaGljID0gQS5WYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQgaW5cbiAgICBsZXQgdGFncyA9XG4gICAgICBBcnJheS5pbml0IChBLlZhcmlhbnQubGVuZ3RoIHZhcmlhbnQpIChmdW4gaW5kZXggLT5cbiAgICAgICAgbWFwX3RhZyAoQS5WYXJpYW50LnRhZyB2YXJpYW50IGluZGV4KSlcbiAgICBpblxuICAgIGxldCB2YWx1ZSAoYSA6IHZhcmlhbnQpID1cbiAgICAgIG1hdGNoIEEuVmFyaWFudC52YWx1ZSB2YXJpYW50IGEgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVmFsdWUgKGF0YWcsIGEpIC0+XG4gICAgICAgIChmdW4gKHR5cGUgYXJncykgKGF0YWcgOiAodmFyaWFudCwgYXJncykgQS5UYWcudCkgKGEgOiBhcmdzKSAtPlxuICAgICAgICAgICBsZXQgKEIuVmFyaWFudF9pbnRlcm5hbC5UYWcgYnRhZykgPSB0YWdzLihBLlRhZy5pbmRleCBhdGFnKSBpblxuICAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYnRhZyA6ICh2YXJpYW50LCBleCkgQi5UYWcudCkgLT5cbiAgICAgICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biAoQS5UYWcudHlpZCBhdGFnKSAoQi5UYWcudHlpZCBidGFnKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYnRhZyA9IChidGFnIDogKHZhcmlhbnQsIGFyZ3MpIEIuVGFnLnQpIGluXG4gICAgICAgICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5WYWx1ZSAoYnRhZywgYSkpXG4gICAgICAgICAgICAgYnRhZylcbiAgICAgICAgICBhdGFnXG4gICAgICAgICAgYVxuICAgIGluXG4gICAgQi5WYXJpYW50LmludGVybmFsX3VzZV9vbmx5IHsgQi5WYXJpYW50X2ludGVybmFsLnR5cGVuYW1lOyB0YWdzOyBwb2x5bW9ycGhpYzsgdmFsdWUgfVxuICA7O1xuXG4gIGxldCBtYXBfcmVjb3JkICh0eXBlIHJlY29yZCkgeyBtYXAgfSAocmVjb3JkIDogcmVjb3JkIEEuUmVjb3JkLnQpID1cbiAgICBsZXQgbWFwX2ZpZWxkIGZpZWxkID1cbiAgICAgIG1hdGNoIGZpZWxkIHdpdGhcbiAgICAgIHwgQS5SZWNvcmQuRmllbGQgZmllbGQgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gQS5GaWVsZC5sYWJlbCBmaWVsZCBpblxuICAgICAgICBsZXQgcmVwID0gbWFwIChBLkZpZWxkLnRyYXZlcnNlIGZpZWxkKSBpblxuICAgICAgICBsZXQgaW5kZXggPSBBLkZpZWxkLmluZGV4IGZpZWxkIGluXG4gICAgICAgIGxldCBpc19tdXRhYmxlID0gQS5GaWVsZC5pc19tdXRhYmxlIGZpZWxkIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5GaWVsZC50eWlkIGZpZWxkIGluXG4gICAgICAgIGxldCBnZXQgPSBBLkZpZWxkLmdldCBmaWVsZCBpblxuICAgICAgICBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZFxuICAgICAgICAgIChCLkZpZWxkLmludGVybmFsX3VzZV9vbmx5XG4gICAgICAgICAgICAgeyBCLkZpZWxkX2ludGVybmFsLmxhYmVsOyByZXA7IGluZGV4OyBpc19tdXRhYmxlOyB0eWlkOyBnZXQgfSlcbiAgICBpblxuICAgIGxldCB0eXBlbmFtZSA9IEEuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVjb3JkIGluXG4gICAgbGV0IGhhc19kb3VibGVfYXJyYXlfdGFnID0gQS5SZWNvcmQuaGFzX2RvdWJsZV9hcnJheV90YWcgcmVjb3JkIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBBcnJheS5pbml0IChBLlJlY29yZC5sZW5ndGggcmVjb3JkKSAoZnVuIGluZGV4IC0+XG4gICAgICAgIG1hcF9maWVsZCAoQS5SZWNvcmQuZmllbGQgcmVjb3JkIGluZGV4KSlcbiAgICBpblxuICAgIGxldCBjcmVhdGUgeyBCLlJlY29yZF9pbnRlcm5hbC5nZXQgfSA9XG4gICAgICBsZXQgZ2V0ICh0eXBlIGEpIChhZmllbGQgOiAoXywgYSkgQS5GaWVsZC50KSA9XG4gICAgICAgIG1hdGNoIGZpZWxkcy4oQS5GaWVsZC5pbmRleCBhZmllbGQpIHdpdGhcbiAgICAgICAgfCBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZCBiZmllbGQgLT5cbiAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYmZpZWxkIDogKHJlY29yZCwgZXgpIEIuRmllbGQudCkgLT5cbiAgICAgICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gKEEuRmllbGQudHlpZCBhZmllbGQpIChCLkZpZWxkLnR5aWQgYmZpZWxkKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IGJmaWVsZCA9IChiZmllbGQgOiAocmVjb3JkLCBhKSBCLkZpZWxkLnQpIGluXG4gICAgICAgICAgICAgZ2V0IGJmaWVsZClcbiAgICAgICAgICAgIGJmaWVsZFxuICAgICAgaW5cbiAgICAgIEEuUmVjb3JkLmNyZWF0ZSByZWNvcmQgeyBBLlJlY29yZC5nZXQgfVxuICAgIGluXG4gICAgQi5SZWNvcmQuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgIHsgQi5SZWNvcmRfaW50ZXJuYWwudHlwZW5hbWU7IGZpZWxkczsgaGFzX2RvdWJsZV9hcnJheV90YWc7IGNyZWF0ZSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgTmFtZWQgPSBzaWdcbiAgdHlwZSAnYSBjb21wdXRhdGlvblxuXG4gIG1vZHVsZSBDb250ZXh0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBpbml0IDogQ29udGV4dC50IC0+ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgZ2V0X3dpcF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNldF9maW5hbF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNoYXJlIDogXyBUeXBlcmVwLnQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXB1dGF0aW9uID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIGludCA6IGludCB0XG4gIHZhbCBpbnQzMiA6IGludDMyIHRcbiAgdmFsIGludDY0IDogaW50NjQgdFxuICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgdmFsIGZsb2F0IDogZmxvYXQgdFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICB2YWwgYm9vbCA6IGJvb2wgdFxuICB2YWwgdW5pdCA6IHVuaXQgdFxuICB2YWwgb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICB2YWwgbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gIHZhbCBhcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICB2YWwgbGF6eV90IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICB2YWwgcmVmXyA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgdmFsIGZ1bmN0aW9uXyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgLT4gJ2IpIHRcbiAgdmFsIHR1cGxlMiA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHVwbGUzIDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gKCdhICogJ2IgKiAnYykgdFxuICB2YWwgdHVwbGU0IDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gJ2QgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgdmFsIHR1cGxlNSA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICdkIHQgLT4gJ2UgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuICB2YWwgcmVjb3JkIDogJ2EgUmVjb3JkLnQgLT4gJ2EgdFxuICB2YWwgdmFyaWFudCA6ICdhIFZhcmlhbnQudCAtPiAnYSB0XG5cbiAgbW9kdWxlIE5hbWVkIDogTmFtZWQgd2l0aCB0eXBlICdhIGNvbXB1dGF0aW9uIDo9ICdhIHRcbmVuZFxuXG4oKiBzcGVjaWFsIGZ1bmN0b3IgYXBwbGljYXRpb24gZm9yIGNvbXB1dGF0aW9uIGFzIGNsb3N1cmUgb2YgdGhlIGZvcm0gW2EgLT4gYl0gKilcbm1vZHVsZSBNYWtlX25hbWVkX2Zvcl9jbG9zdXJlIChYIDogc2lnXG4gICAgdHlwZSAnYSBpbnB1dFxuICAgIHR5cGUgJ2Egb3V0cHV0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaW5wdXQgLT4gJ2Egb3V0cHV0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGlnbm9yZVxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcnVudGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudFxuICAgIDsgcnVudGltZV9yZWZlcmVuY2UgOiAnYSBYLnQgcmVmXG4gICAgOyBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudCBvcHRpb24gcmVmXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IGluaXQgKCkgbmFtZSA9XG4gICAgbGV0IHBhdGggPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIG5hbWUpIGluXG4gICAgbGV0IHIgPSByZWYgKGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWQgcGF0aCkpIGluXG4gICAgeyBydW50aW1lX2RlcmVmZXJlbmNlID0gKGZ1biBpbnB1dCAtPiAhciBpbnB1dClcbiAgICA7IHJ1bnRpbWVfcmVmZXJlbmNlID0gclxuICAgIDsgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSByZWYgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWQgPVxuICAgIG1hdGNoIHNoYXJlZC5jb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIGNsb3MgLT4gY2xvc1xuICAgIHwgTm9uZSAtPiBzaGFyZWQucnVudGltZV9kZXJlZmVyZW5jZVxuICA7O1xuXG4gIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uID1cbiAgICBsZXQgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSBzaGFyZWQuY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgaW5cbiAgICBtYXRjaCBjb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBCYXNlLnBoeXNfZXF1YWwgc2hhcmVkLnJ1bnRpbWVfZGVyZWZlcmVuY2UgY29tcHV0YXRpb24gdGhlbiBhc3NlcnQgZmFsc2U7XG4gICAgICBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6PSBTb21lIGNvbXB1dGF0aW9uO1xuICAgICAgc2hhcmVkLnJ1bnRpbWVfcmVmZXJlbmNlIDo9IGNvbXB1dGF0aW9uO1xuICAgICAgY29tcHV0YXRpb25cbiAgOztcblxuICBsZXQgc2hhcmUgXyA9IHRydWVcbmVuZFxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGltcGxlbWVudHMgOiBUeXBlbmFtZS5VaWQudCAtPiBib29sXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBCcm9rZW5fZGVwZW5kZW5jeSBvZiBzdHJpbmdcblxuICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzIG5hbWUgcmVxdWlyZWQgPVxuICAgIG1hdGNoIHJlcXVpcmVkIHdpdGhcbiAgICB8IFtdIC0+IGZ1biBfIC0+ICgpXG4gICAgfCBfIC0+XG4gICAgICBmdW4gdWlkIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4geyBuYW1lID0gbmFtZSc7IGltcGxlbWVudHMgfSAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoaW1wbGVtZW50cyB1aWQpXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAoKiBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgc2V0IHVwLCB0aGlzIGlzIGFuIGVycm9yIGR1cmluZyB0aGVcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwcm9ncmFtLCB3ZSByYXRoZXIgZmFpbCB3aXRoIGEgaHVtYW5cbiAgICAgICAgICAgICAgICAgIHJlYWRhYmxlIG91dHB1dCAqKVxuICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiVHlwZV9nZW5lcmljICVTIHJlcXVpcmVzICVTIGZvciB1aWQgJVNcXG5cIlxuICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgICBuYW1lJ1xuICAgICAgICAgICAgICAgICAgIChUeXBlbmFtZS5VaWQubmFtZSB1aWQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgcHJlcnJfZW5kbGluZSBtZXNzYWdlO1xuICAgICAgICAgICAgICAgcmFpc2UgKEJyb2tlbl9kZXBlbmRlbmN5IG1lc3NhZ2UpKSlcbiAgICAgICAgICByZXF1aXJlZFxuICA7O1xuZW5kXG5cbigqIEV4dGVuZGluZyBhbiBleGlzdGluZyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBFeHRlbmRpbmcgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG5cbiAgdmFsIGlkZW50IDogSWRlbnQudFxuXG4gICgqIGdlbmVyaWNfaWRlbnQgKiB0eXBlbmFtZSBvciBpbmZvICopXG4gIGV4Y2VwdGlvbiBOb3RfaW1wbGVtZW50ZWQgb2Ygc3RyaW5nICogc3RyaW5nXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBjb21wdXRlIDogdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIGNvbXB1dGF0aW9uIC0+ICdhIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBjb21wdXRhdGlvbiAtPiAnYiBjb21wdXRhdGlvbiAtPiAoJ2EsICdiKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICdlIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIHZhbCByZWdpc3RlcjAgOiAobW9kdWxlIFMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMSA6IChtb2R1bGUgUzEpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMiA6IChtb2R1bGUgUzIpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMyA6IChtb2R1bGUgUzMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNCA6IChtb2R1bGUgUzQpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNSA6IChtb2R1bGUgUzUpIC0+IHVuaXRcblxuICAoKiBzcGVjaWFsIGxlc3Mgc2NhcnkgdHlwZSB3aGVuIHRoZSB0eXBlIGhhcyBubyBwYXJhbWV0ZXJzICopXG4gIHZhbCByZWdpc3RlciA6ICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiAtPiB1bml0XG5cbiAgKCpcbiAgICAgRXNzZW50aWFsbHkgYmVjYXVzZSB3ZSBjYW5ub3QgdGFsayBhYm91dCBhIHZhcmlhYmxlIG9mIGtpbmQgKiAtPiBrXG4gICAgIHZhbCByZWdpc3RlcjEgOiAnYSAndCBUeXBlcmVwLnQgLT4gKCdhIGNvbXB1dGF0aW9uIC0+ICdhICd0IGNvbXB1dGF0aW9uKSAtPiB1bml0XG4gICAgIC4uLlxuICAqKVxuZW5kXG5cbigqIEltcGxlbWVudGluZyBhIG5ldyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBTX2ltcGxlbWVudGF0aW9uID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5kaW5nXG5cbiAgKCogcmFpc2UgdXNpbmcgdGhlIGN1cnJlbnQgaWRlbnQgKilcbiAgdmFsIHJhaXNlX25vdF9pbXBsZW1lbnRlZCA6IHN0cmluZyAtPiAnYVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICAoKlxuICAgICBTdGFuZGFyZCBjYXNlLCBmaW5kIGEgZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24sIG9yIGxvb2sgaW4gdGhlIGNvbnRlbnRcbiAgKilcbiAgdmFsIF91c2luZ19leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgVHlwZXJlcC50IGxhenlfdCBvcHRpb25cbiAgICAtPiAnYSBjb21wdXRhdGlvblxuXG4gICgqXG4gICAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSBtb3JlIGNvbnRyb2wgb24gd2hhdCB5b3Ugd2FudCB0byBkb1xuICAqKVxuICB2YWwgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgY29tcHV0YXRpb24gb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuZGluZ1xuXG4gIHZhbCBvZl90eXBlcmVwIDogJ2EgVHlwZXJlcC50IC0+IFsgYGdlbmVyaWMgb2YgJ2EgY29tcHV0YXRpb24gXVxuXG4gIG1vZHVsZSBDb21wdXRhdGlvbiA6IENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfaW1wbGVtZW50YXRpb24gKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG4gIGVuZCkgOiBTX2ltcGxlbWVudGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFgudFxuICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcblxuICAoKiB3ZSBkbyBub3QgdXNlIGNvcmUgc2luY2Ugd2UgYXJlIGVhcmxpZXIgaW4gdGhlIGRlcGVuZGVuY2llcyBncmFwaCAqKVxuICBtb2R1bGUgVWlkX3RhYmxlID0gc3RydWN0XG4gICAgaW5jbHVkZSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLlVpZClcblxuICAgIGxldCBmaW5kIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgdHJ5IFNvbWUgKGZpbmQgdGFibGUga2V5KSB3aXRoXG4gICAgICAgIHwgQmFzZS5Ob3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgZWxzZSBOb25lXG4gICAgOztcblxuICAgIGxldCBjaGVja19kZXBlbmRlbmNpZXMgPSBJZGVudC5jaGVja19kZXBlbmRlbmNpZXMgWC5uYW1lIFgucmVxdWlyZWRcblxuICAgIGxldCByZXBsYWNlIHRhYmxlIGtleSB2YWx1ZSA9XG4gICAgICBjaGVja19kZXBlbmRlbmNpZXMga2V5O1xuICAgICAgcmVwbGFjZSAoTGF6eS5mb3JjZSB0YWJsZSkga2V5IHZhbHVlXG4gICAgOztcblxuICAgIGxldCBtZW0gdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICBtZW0gdGFibGUga2V5KVxuICAgICAgZWxzZSBmYWxzZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzaXplID0gMjU2XG4gIGxldCB0YWJsZTAgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTEgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTIgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTMgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTQgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTUgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG5cbiAgbGV0IGlzX3JlZ2lzdGVyZWQgdWlkID1cbiAgICBVaWRfdGFibGUubWVtIHRhYmxlMCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMSB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMiB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMyB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNSB1aWRcbiAgOztcblxuICBsZXQgaWRlbnQgPSB7IElkZW50Lm5hbWUgPSBYLm5hbWU7IGltcGxlbWVudHMgPSBpc19yZWdpc3RlcmVkIH1cblxuICBtb2R1bGUgRmluZDAgKFQgOiBUeXBlcmVwLk5hbWVkLlQwKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlIDogdW5pdCAtPiBULm5hbWVkIGNvbXB1dGF0aW9uIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTAgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUyA9ICh2YWwgcmVwIDogUykgaW5cbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIFMudHlwZW5hbWVfb2ZfdCBULnR5cGVuYW1lX29mX25hbWVkIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCB3aXRuZXNzKSBTLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQxIChUIDogVHlwZXJlcC5OYW1lZC5UMSkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMSAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgcmVwIDogUzEpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8xXG4gICAgICAgICAgICAoUzEpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gVC5hIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzEuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDIgKFQgOiBUeXBlcmVwLk5hbWVkLlQyKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTIgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIHJlcCA6IFMyKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMlxuICAgICAgICAgICAgKFMyKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMi5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMyAoVCA6IFR5cGVyZXAuTmFtZWQuVDMpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYykgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMyAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgcmVwIDogUzMpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8zXG4gICAgICAgICAgICAoUzMpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+IFQuYyBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMzLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQ0IChUIDogVHlwZXJlcC5OYW1lZC5UNCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTQgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzQgPSAodmFsIHJlcCA6IFM0KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNFxuICAgICAgICAgICAgKFM0KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICgnYSwgJ2IsICdjLCAnZCkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNC5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNSAoVCA6IFR5cGVyZXAuTmFtZWQuVDUpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTUgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIHJlcCA6IFM1KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNVxuICAgICAgICAgICAgKFM1KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAoJ2EsICdiLCAnYywgJ2QsICdlKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNS5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB1bml0ID0gVHlwZW5hbWUuc3RhdGljXG5cbiAgbGV0IHJlZ2lzdGVyMCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMgPSAodmFsIGNvbXB1dGUgOiBTKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgUy50eXBlbmFtZV9vZl90IGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUwIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMxID0gKHZhbCBjb21wdXRlIDogUzEpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzEudHlwZW5hbWVfb2ZfdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjIgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMiA9ICh2YWwgY29tcHV0ZSA6IFMyKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMyLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMiB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjMgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgY29tcHV0ZSA6IFMzKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMzLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUzIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyNCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCBjb21wdXRlIDogUzQpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzQudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjUgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNSA9ICh2YWwgY29tcHV0ZSA6IFM1KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM1LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlciAodHlwZSBhKSB0eXBlcmVwX29mX2EgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IGNvbXB1dGUgPSBjb21wdXRlXG4gICAgZW5kXG4gICAgaW5cbiAgICByZWdpc3RlcjAgKG1vZHVsZSBTIDogUylcbiAgOztcblxuICAoKiBJTVBMRU1FTlRBVElPTiAqKVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICBsZXQgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiAodHlwZSBhKSBhdXggPSBmdW5jdGlvblxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMCByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQwIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQxIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID0gKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSA6IFQuYSBULm5hbWVkIGNvbXB1dGF0aW9uKSBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDIgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDIgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMiAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgOiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDMgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMyAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDQgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDQgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYykgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UNSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQ1IChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5hKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5iKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5jKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5kKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5lKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgOztcblxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIGxldCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgc3RyaW5nID0gcmFpc2UgKE5vdF9pbXBsZW1lbnRlZCAoWC5uYW1lLCBzdHJpbmcpKVxuXG4gIGxldCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gYXV4IHJlcCBjb250ZW50ID1cbiAgICBtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgd2l0aFxuICAgIHwgU29tZSBjb21wdXRhdGlvbiAtPiBjb21wdXRhdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPiBhdXguZ2VuZXJpYyBjb250ZW50XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgcmVwIGluXG4gICAgICAgICBsZXQgbmFtZSA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgdHlwZW5hbWUpIGluXG4gICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgXyA9IEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuS2V5KVxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcblxuICAgIGluY2x1ZGUgQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29tcHV0YXRpb24gPSBYXG4gIGluY2x1ZGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYKVxuXG4gIG1vZHVsZSBNZW1vID0gVHlwZW5hbWUuVGFibGUgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgWC5OYW1lZC50XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZWxwZXIgPSBIZWxwZXIgKFR5cGVyZXApIChDb21wdXRhdGlvbilcblxuICBsZXQgb2ZfdHlwZXJlcCByZXAgPVxuICAgIGxldCBjb250ZXh0ID0gWC5OYW1lZC5Db250ZXh0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBtZW1vX3RhYmxlID0gTWVtby5jcmVhdGUgMzIgaW5cbiAgICBsZXQgcmVjIG9mX3R5cGVyZXAgOiB0eXBlIGEuIGEgVHlwZXJlcC50IC0+IGEgdCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuSW50IC0+IFguaW50XG4gICAgICB8IFR5cGVyZXAuSW50MzIgLT4gWC5pbnQzMlxuICAgICAgfCBUeXBlcmVwLkludDY0IC0+IFguaW50NjRcbiAgICAgIHwgVHlwZXJlcC5OYXRpdmVpbnQgLT4gWC5uYXRpdmVpbnRcbiAgICAgIHwgVHlwZXJlcC5DaGFyIC0+IFguY2hhclxuICAgICAgfCBUeXBlcmVwLkZsb2F0IC0+IFguZmxvYXRcbiAgICAgIHwgVHlwZXJlcC5TdHJpbmcgLT4gWC5zdHJpbmdcbiAgICAgIHwgVHlwZXJlcC5CeXRlcyAtPiBYLmJ5dGVzXG4gICAgICB8IFR5cGVyZXAuQm9vbCAtPiBYLmJvb2xcbiAgICAgIHwgVHlwZXJlcC5Vbml0IC0+IFgudW5pdFxuICAgICAgfCBUeXBlcmVwLk9wdGlvbiByZXAgLT4gWC5vcHRpb24gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxpc3QgcmVwIC0+IFgubGlzdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuQXJyYXkgcmVwIC0+IFguYXJyYXkgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxhenkgcmVwIC0+IFgubGF6eV90IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5SZWYgcmVwIC0+IFgucmVmXyAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKSAtPiBYLmZ1bmN0aW9uXyAob2ZfdHlwZXJlcCBkb20pIChvZl90eXBlcmVwIHJuZylcbiAgICAgIHwgVHlwZXJlcC5UdXBsZSB0dXBsZSAtPlxuICAgICAgICAoKiBkbyBOT1Qgd3JpdGUgW1gudHVwbGUyIChvZl90eXBlcmVwIGEpIChvZl90eXBlcmVwIGIpXVxuICAgICAgICAgICBiZWNhdXNlIG9mX3R5cGVyZXAgY2FuIGNvbnRhaW4gYSBzaWRlIGVmZmVjdCBhbmQgW2FdIHNob3VsZCBiZSBleGVjdXRlZFxuICAgICAgICAgICBiZWZvcmUgW2JdICopXG4gICAgICAgIChtYXRjaCB0dXBsZSB3aXRoXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgWC50dXBsZTIgcmEgcmJcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgWC50dXBsZTMgcmEgcmIgcmNcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgbGV0IHJkID0gb2ZfdHlwZXJlcCBkIGluXG4gICAgICAgICAgIFgudHVwbGU0IHJhIHJiIHJjIHJkXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBsZXQgcmUgPSBvZl90eXBlcmVwIGUgaW5cbiAgICAgICAgICAgWC50dXBsZTUgcmEgcmIgcmMgcmQgcmUpXG4gICAgICB8IFR5cGVyZXAuUmVjb3JkIHJlY29yZCAtPlxuICAgICAgICBYLnJlY29yZCAoSGVscGVyLm1hcF9yZWNvcmQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHJlY29yZClcbiAgICAgIHwgVHlwZXJlcC5WYXJpYW50IHZhcmlhbnQgLT5cbiAgICAgICAgWC52YXJpYW50IChIZWxwZXIubWFwX3ZhcmlhbnQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHZhcmlhbnQpXG4gICAgICB8IFR5cGVyZXAuTmFtZWQgKG5hbWVkLCBjb250ZW50KSAtPlxuICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZWQgaW5cbiAgICAgICAgKG1hdGNoIE1lbW8uZmluZCBtZW1vX3RhYmxlIHR5cGVuYW1lIHdpdGhcbiAgICAgICAgIHwgU29tZSBzaGFyZWQgLT4gWC5OYW1lZC5nZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIChtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIHsgZ2VuZXJpYyA9IG9mX3R5cGVyZXAgfSBuYW1lZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29udGVudCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZVxuICAgICAgICAgICAgICAgfCBTb21lIChsYXp5IGNvbnRlbnQpIC0+XG4gICAgICAgICAgICAgICAgIGlmIFguTmFtZWQuc2hhcmUgY29udGVudFxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgc2hhcmVkID0gWC5OYW1lZC5pbml0IGNvbnRleHQgdHlwZW5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICBNZW1vLnNldCBtZW1vX3RhYmxlIHR5cGVuYW1lIHNoYXJlZDtcbiAgICAgICAgICAgICAgICAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgICAgICBYLk5hbWVkLnNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgICAgICAgIGVsc2Ugb2ZfdHlwZXJlcCBjb250ZW50KSkpXG4gICAgaW5cbiAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIHJlcCBpblxuICAgIGBnZW5lcmljIGNvbXB1dGF0aW9uXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkID1cbiAgICBUeXBlcmVwLk5hbWVkLlQwXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIG5hbWVkID0gWC50XG4gICAgICAgIHR5cGUgdCA9IFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgICB3aXRoIHR5cGUgdCA9IFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTEgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSkgb2ZfcDEgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3QgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSkgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQxXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICdhIG5hbWVkID0gJ2EgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgdCA9IHAxIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgICB3aXRoIHR5cGUgdCA9IHAxIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMikgb2ZfcDEgb2ZfcDIgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQyXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkID0gKCdhLCAnYikgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMykgb2ZfcDEgb2ZfcDIgb2ZfcDMgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQzXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZCA9ICgnYSwgJ2IsICdjKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U0IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSBkID0gcDRcblxuICAgICAgICBsZXQgZCA9IG9mX3A0XG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTUgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMyBwNCBwNSkgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDQpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDUpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQ1XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgZSA9IHA1XG5cbiAgICAgICAgbGV0IGUgPSBvZl9wNVxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudClcbiAgOztcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgOiBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgOiBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpIDogVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgWC50ID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgOlxuICBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgOlxuICBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgOlxuICBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIE5hbWUgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCByZWxhdGl2ZV90byA6IGRpcjpzdHJpbmcgLT4gdCAtPiBzdHJpbmdcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCByZWxhdGl2ZV90byB+ZGlyIHQgPVxuICAgIGlmIG5vdCAoU3RkbGliLkZpbGVuYW1lLmlzX3JlbGF0aXZlIHQpIHRoZW4gdCBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5jb25jYXQgZGlyIHRcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbF9kaXIgPVxuICBsZXQgZGlyX29yX2Vycm9yID1cbiAgICBtYXRjaCBTdGRsaWIuU3lzLmdldGN3ZCAoKSB3aXRoXG4gICAgfCB2IC0+IGBPayB2XG4gICAgfCBleGNlcHRpb24gZXhuIC0+IGBFeG4gZXhuXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoIGRpcl9vcl9lcnJvciB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRXhuIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbm1vZHVsZSBMb2NhdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbGVuYW1lIDogTmFtZS50XG4gICAgICA7IGxpbmVfbnVtYmVyIDogaW50XG4gICAgICA7IGxpbmVfc3RhcnQgOiBpbnRcbiAgICAgIDsgc3RhcnRfcG9zIDogaW50XG4gICAgICA7IGVuZF9wb3MgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcblxuICAgIGxldCB0X29mX3NleHAgPVxuICAgICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwMl8gPSBcImZpbGUubWwuTG9jYXRpb24uVC50XCIgaW5cbiAgICAgICBmdW4geF9fMDAzXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X3JlY29yZC5yZWNvcmRfb2Zfc2V4cFxuICAgICAgICAgICB+Y2FsbGVyOmVycm9yX3NvdXJjZV9fMDAyX1xuICAgICAgICAgICB+ZmllbGRzOlxuICAgICAgICAgICAgIChGaWVsZFxuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiZmlsZW5hbWVcIlxuICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgOyBjb252ID0gTmFtZS50X29mX3NleHBcbiAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwibGluZV9udW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwibGluZV9zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNvbnYgPSBpbnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcmVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJzdGFydF9wb3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiZW5kX3Bvc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNvbnYgPSBpbnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcmVzdCA9IEVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgIH5pbmRleF9vZl9maWVsZDooZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFwiZmlsZW5hbWVcIiAtPiAwXG4gICAgICAgICAgICAgfCBcImxpbmVfbnVtYmVyXCIgLT4gMVxuICAgICAgICAgICAgIHwgXCJsaW5lX3N0YXJ0XCIgLT4gMlxuICAgICAgICAgICAgIHwgXCJzdGFydF9wb3NcIiAtPiAzXG4gICAgICAgICAgICAgfCBcImVuZF9wb3NcIiAtPiA0XG4gICAgICAgICAgICAgfCBfIC0+IC0xKVxuICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOmZhbHNlXG4gICAgICAgICAgIH5jcmVhdGU6XG4gICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgKGZpbGVuYW1lLCAobGluZV9udW1iZXIsIChsaW5lX3N0YXJ0LCAoc3RhcnRfcG9zLCAoZW5kX3BvcywgKCkpKSkpKSA6IHQgLT5cbiAgICAgICAgICAgICAgIHsgZmlsZW5hbWU7IGxpbmVfbnVtYmVyOyBsaW5lX3N0YXJ0OyBzdGFydF9wb3M7IGVuZF9wb3MgfSlcbiAgICAgICAgICAgeF9fMDAzX1xuICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSB0X29mX3NleHBcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IGZpbGVuYW1lID0gZmlsZW5hbWVfXzAwNV9cbiAgICAgICAgICAgOyBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyX18wMDdfXG4gICAgICAgICAgIDsgbGluZV9zdGFydCA9IGxpbmVfc3RhcnRfXzAwOV9cbiAgICAgICAgICAgOyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAxMV9cbiAgICAgICAgICAgOyBlbmRfcG9zID0gZW5kX3Bvc19fMDEzX1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMDRfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDE0XyA9IHNleHBfb2ZfaW50IGVuZF9wb3NfXzAxM18gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZW5kX3Bvc1wiOyBhcmdfXzAxNF8gXSA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfaW50IHN0YXJ0X3Bvc19fMDExXyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGFydF9wb3NcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2ludCBsaW5lX3N0YXJ0X18wMDlfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVfc3RhcnRcIjsgYXJnX18wMTBfIF1cbiAgICAgICAgICAgOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX2ludCBsaW5lX251bWJlcl9fMDA3XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX251bWJlclwiOyBhcmdfXzAwOF8gXVxuICAgICAgICAgICA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDA2XyA9IE5hbWUuc2V4cF9vZl90IGZpbGVuYW1lX18wMDVfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImZpbGVuYW1lXCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDRfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIGxldCBfID0gc2V4cF9vZl90XG5cbiAgICBsZXQgY29tcGFyZSA9XG4gICAgICAoZnVuIGFfXzAxNV8gYl9fMDE2XyAtPlxuICAgICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTVfIGJfXzAxNl9cbiAgICAgICAgIHRoZW4gMFxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIG1hdGNoIE5hbWUuY29tcGFyZSBhX18wMTVfLmZpbGVuYW1lIGJfXzAxNl8uZmlsZW5hbWUgd2l0aFxuICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDE1Xy5saW5lX251bWJlciBiX18wMTZfLmxpbmVfbnVtYmVyIHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAxNV8ubGluZV9zdGFydCBiX18wMTZfLmxpbmVfc3RhcnQgd2l0aFxuICAgICAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDE1Xy5zdGFydF9wb3MgYl9fMDE2Xy5zdGFydF9wb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDE1Xy5lbmRfcG9zIGJfXzAxNl8uZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IGNvbXBhcmVcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuICBsZXQgYmVnaW5uaW5nX29mX2ZpbGUgZmlsZW5hbWUgPVxuICAgIHsgZmlsZW5hbWU7IGxpbmVfbnVtYmVyID0gMTsgbGluZV9zdGFydCA9IDA7IHN0YXJ0X3BvcyA9IDA7IGVuZF9wb3MgPSAwIH1cbiAgOztcblxuICBsZXQgb2Zfc291cmNlX2NvZGVfcG9zaXRpb24gKHBvcyA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpID1cbiAgICB7IGZpbGVuYW1lID0gTmFtZS5vZl9zdHJpbmcgKFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSBwb3MucG9zX2ZuYW1lKVxuICAgIDsgbGluZV9udW1iZXIgPSBwb3MucG9zX2xudW1cbiAgICA7IGxpbmVfc3RhcnQgPSBwb3MucG9zX2JvbFxuICAgIDsgc3RhcnRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgOyBlbmRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaWdlc3QgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfc3RyaW5nIDogdCAtPiB0IC0+IGludClcbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgZXhwZWN0ZWRfbGVuZ3RoID0gMzIgaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gZXhwZWN0ZWRfbGVuZ3RoXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmcsIHVuZXhwZWN0ZWQgbGVuZ3RoXCI7XG4gICAgZm9yIGkgPSAwIHRvIGV4cGVjdGVkX2xlbmd0aCAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gKClcbiAgICAgIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmdcIlxuICAgIGRvbmU7XG4gICAgc1xuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMiAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogU2FtZSBhcyB7IUJ5dGVzLmJsaXRfc3RyaW5nfSB3aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cbiAgICBJZiBbc10gaXMgZW1wdHksIHRoZSByZXN1bHQgaXMgdGhlIHNpbmdsZXRvbiBsaXN0IFtbXCJcIl1dLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0ICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYWNjIC0+IGNoYXIgLT4gJ2FjYykgLT4gJ2FjYyAtPiBzdHJpbmcgLT4gJ2FjY1xuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYWNjIC0+ICdhY2MpIC0+IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCJvcGVuISBCYXNlXG5vcGVuIEltcG9ydFxub3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxub3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIEJvZHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEV4YWN0IG9mIHN0cmluZ1xuICAgIHwgT3V0cHV0XG4gICAgfCBQcmV0dHkgb2YgJ2FcbiAgICB8IFVucmVhY2hhYmxlXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlLCBlcXVhbF1cblxuICBsZXQgXyA9IGZ1biAoXyA6ICdhIHQpIC0+ICgpXG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuICh0eXBlIGFfXzAwNl8pIDogKChhX18wMDZfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDA2XyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRXhhY3QgYXJnMF9fMDAyXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwMl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhhY3RcIjsgcmVzMF9fMDAzXyBdXG4gICAgICB8IE91dHB1dCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJPdXRwdXRcIlxuICAgICAgfCBQcmV0dHkgYXJnMF9fMDA0XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA1XyA9IF9vZl9hX18wMDFfIGFyZzBfXzAwNF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUHJldHR5XCI7IHJlczBfXzAwNV8gXVxuICAgICAgfCBVbnJlYWNoYWJsZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbnJlYWNoYWJsZVwiXG4gIDs7XG5cbiAgbGV0IF8gPSBzZXhwX29mX3RcblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDdfIGJfXzAwOF8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwN18gYl9fMDA4X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDA3XywgYl9fMDA4XyB3aXRoXG4gICAgICB8IEV4YWN0IF9hX18wMDlfLCBFeGFjdCBfYl9fMDEwXyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDA5XyBfYl9fMDEwX1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gMVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiAwXG4gICAgICB8IE91dHB1dCwgXyAtPiAtMVxuICAgICAgfCBfLCBPdXRwdXQgLT4gMVxuICAgICAgfCBQcmV0dHkgX2FfXzAxMV8sIFByZXR0eSBfYl9fMDEyXyAtPiBfY21wX19hIF9hX18wMTFfIF9iX18wMTJfXG4gICAgICB8IFByZXR0eSBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFByZXR0eSBfIC0+IDFcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IDApXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDEzXyBiX18wMTRfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTNfIGJfXzAxNF9cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxM18sIGJfXzAxNF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDE1XywgRXhhY3QgX2JfXzAxNl8gLT4gZXF1YWxfc3RyaW5nIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgRXhhY3QgXyAtPiBmYWxzZVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiB0cnVlXG4gICAgICB8IE91dHB1dCwgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBPdXRwdXQgLT4gZmFsc2VcbiAgICAgIHwgUHJldHR5IF9hX18wMTdfLCBQcmV0dHkgX2JfXzAxOF8gLT4gX2NtcF9fYSBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiBmYWxzZVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gdHJ1ZSlcbiAgOztcblxuICBsZXQgXyA9IGVxdWFsXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWFwX3ByZXR0eSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IChFeGFjdCBfIHwgT3V0cHV0IHwgVW5yZWFjaGFibGUpIGFzIHQgLT4gdFxuICAgIHwgUHJldHR5IHggLT4gUHJldHR5IChmIHgpXG4gIDs7XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyB0YWcgOiBzdHJpbmcgb3B0aW9uXG4gIDsgYm9keSA6ICdhIEJvZHkudFxuICA7IGV4dGlkX2xvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gIDsgYm9keV9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbmxldCBfID0gZnVuIChfIDogJ2EgdCkgLT4gKClcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE5X1xuICAgIHsgdGFnID0gdGFnX18wMjFfXG4gICAgOyBib2R5ID0gYm9keV9fMDIzX1xuICAgIDsgZXh0aWRfbG9jYXRpb24gPSBleHRpZF9sb2NhdGlvbl9fMDI1X1xuICAgIDsgYm9keV9sb2NhdGlvbiA9IGJvZHlfbG9jYXRpb25fXzAyN19cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAyMF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI4XyA9IEZpbGUuTG9jYXRpb24uc2V4cF9vZl90IGJvZHlfbG9jYXRpb25fXzAyN18gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJib2R5X2xvY2F0aW9uXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNl8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBleHRpZF9sb2NhdGlvbl9fMDI1XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4dGlkX2xvY2F0aW9uXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNF8gPSBCb2R5LnNleHBfb2ZfdCBfb2ZfYV9fMDE5XyBib2R5X18wMjNfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYm9keVwiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjJfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9zdHJpbmcgdGFnX18wMjFfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidGFnXCI7IGFyZ19fMDIyXyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMjBfXG47O1xuXG5sZXQgXyA9IHNleHBfb2ZfdFxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgZnVuIF9jbXBfX2EgYV9fMDI5XyBiX18wMzBfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDI5XyBiX18wMzBfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBjb21wYXJlX29wdGlvbiBjb21wYXJlX3N0cmluZyBhX18wMjlfLnRhZyBiX18wMzBfLnRhZyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAobWF0Y2ggQm9keS5jb21wYXJlIF9jbXBfX2EgYV9fMDI5Xy5ib2R5IGJfXzAzMF8uYm9keSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAobWF0Y2ggRmlsZS5Mb2NhdGlvbi5jb21wYXJlIGFfXzAyOV8uZXh0aWRfbG9jYXRpb24gYl9fMDMwXy5leHRpZF9sb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCAwIC0+IEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmJvZHlfbG9jYXRpb24gYl9fMDMwXy5ib2R5X2xvY2F0aW9uXG4gICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgfCBuIC0+IG4pXG4gICAgfCBuIC0+IG4pXG47O1xuXG5sZXQgXyA9IGNvbXBhcmVcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAzNV8gYl9fMDM2XyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAzNV8gYl9fMDM2X1xuICB0aGVuIHRydWVcbiAgZWxzZVxuICAgIFN0ZGxpYi4oICYmIClcbiAgICAgIChlcXVhbF9vcHRpb24gZXF1YWxfc3RyaW5nIGFfXzAzNV8udGFnIGJfXzAzNl8udGFnKVxuICAgICAgKFN0ZGxpYi4oICYmIClcbiAgICAgICAgIChCb2R5LmVxdWFsIF9jbXBfX2EgYV9fMDM1Xy5ib2R5IGJfXzAzNl8uYm9keSlcbiAgICAgICAgIChTdGRsaWIuKCAmJiApXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmV4dGlkX2xvY2F0aW9uIGJfXzAzNl8uZXh0aWRfbG9jYXRpb24pXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmJvZHlfbG9jYXRpb24gYl9fMDM2Xy5ib2R5X2xvY2F0aW9uKSkpXG47O1xuXG5sZXQgXyA9IGVxdWFsXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHN0cmluZyB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChmdW4geF9fMDQxXyAtPiBzZXhwX29mX3Qgc2V4cF9vZl9zdHJpbmcgeF9fMDQxXyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzA0Ml8gYl9fMDQzXyAtPiBjb21wYXJlIGNvbXBhcmVfc3RyaW5nIGFfXzA0Ml8gYl9fMDQzXyA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWFwX3ByZXR0eSB0IH5mID0geyB0IHdpdGggYm9keSA9IEJvZHkubWFwX3ByZXR0eSB0LmJvZHkgfmYgfVxuIiwibW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgRmlsZSA9IEZpbGVcbiAgbW9kdWxlIEV4cGVjdGF0aW9uID0gRXhwZWN0YXRpb25cbmVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSB1c2UgW0V4cGVjdF90ZXN0X2NvbW1vbl0gaW5zdGVhZFwiXVxuXG5pbmNsdWRlIFN0ZCBbQEBhbGVydCBcIi1kZXByZWNhdGVkXCJdXG4iLCJtb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBDUiAoKiogTGVhdmVzIGEgQ1IsIHNvIHRoYXQgZmVhdHVyZXMgY2Fubm90IGJlIHJlbGVhc2VkLiAqKVxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nICgqKiBPbmx5IGZvciBwcHhfZXhwZWN0IHRlc3Rpbmc7IGRvIG5vdCB1c2UuICopXG4gICAgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIElPIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICBlbmRcblxuICAoKiogUnVuIGFuIElPIG9wZXJhdGlvbiB1bnRpbCBjb21wbGV0aW9uICopXG4gIHZhbCBydW4gOiAodW5pdCAtPiB1bml0IElPLnQpIC0+IHVuaXRcblxuICAoKiogW3Nhbml0aXplXSBjYW4gYmUgdXNlZCB0byBtYXAgYWxsIG91dHB1dCBzdHJpbmdzLCBlLmcuIGZvciBjbGVhbnNpbmcuICopXG4gIHZhbCBzYW5pdGl6ZSA6IHN0cmluZyAtPiBzdHJpbmdcblxuXG4gICgqKiBbdXBvbl91bnJlbGVhc2FibGVfaXNzdWVdIHNwZWNpZmllcyBob3cgdG8gZGVhbCB3aXRoIG91dHB1dCB0aGF0IHNob3VsZCBub3QgYmVcbiAgICAgIHJlbGVhc2VkIGV2ZW4gaWYgaXQgaXMgYWNjZXB0ZWQgKGUuZy4gYmFja3RyYWNlcykuIFRoZSBkZWZhdWx0IGlzIFtgQ1JdLiAgKilcbiAgdmFsIHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogVXBvbl91bnJlbGVhc2FibGVfaXNzdWUudFxuZW5kXG5cbigqKiBDb25maWd1cmF0aW9uIGZvciBydW5uaW5nIGV4cGVjdCB0ZXN0cyAqKVxubW9kdWxlIHR5cGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzID0gc2lnXG4gICgqKiBUbyBjb25maWd1cmUgZXhwZWN0X3Rlc3QsIGFkZCB0aGUgZm9sbG93aW5nIGF0IHRoZSB0b3Agb2YgeW91ciAubWwgZmlsZSwgb3IgaW4gc29tZVxuICAgICAgaW1wb3J0Lm1sOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdcbiAgICAgICAgICBsZXQgcHJlX3JlZGlyZWN0X2hvb2sgKCkgPSAuLi5cbiAgICAgICAgZW5kXG4gICAgICBdfVxuXG4gICAgICBOb3RlIHRoYXQgc2luY2UgYWxsIGV4cGVjdCB0ZXN0IGFyZSBhbHNvIGlubGluZSB0ZXN0cywgdGhlIGlubGluZSB0ZXN0IGNvbmZpZ3VyYXRpb25cbiAgICAgIGFsc28gYXBwbGllcyB0byBhbGwgZXhwZWN0IHRlc3QuXG4gICopXG5cbiAgbW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgY29tbWVudF9wcmVmaXggOiB0IC0+IHN0cmluZ1xuXG4gICAgKCoqIE1lc3NhZ2UgdG8gcHJpbnQgd2hlbiBhbiBleHBlY3RhdGlvbiBjb250YWlucyBhIGJhY2t0cmFjZSAqKVxuICAgIHZhbCBtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlIDogdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IFNcbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLlNcblxubW9kdWxlIHR5cGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzID1cbiAgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzXG5cbm1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IHN0cnVjdFxuICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gdDEgPSB0MlxuXG4gIGxldCBjb21tZW50X3ByZWZpeCA9IGZ1bmN0aW9uXG4gICAgfCBgQ1IgLT4gXCJDUiBcIlxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nIC0+IFwiXCJcbiAgOztcblxuICBsZXQgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSB0ID1cbiAgICBQcmludGYuc3ByaW50ZlxuICAgICAge3xcbigqICVzZXhwZWN0X3Rlc3RfY29sbGVjdG9yOiBUaGlzIHRlc3QgZXhwZWN0YXRpb24gYXBwZWFycyB0byBjb250YWluIGEgYmFja3RyYWNlLlxuICAgVGhpcyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBhcyBiYWNrdHJhY2VzIGFyZSBmcmFnaWxlLlxuICAgUGxlYXNlIGNoYW5nZSB0aGlzIHRlc3QgdG8gbm90IGluY2x1ZGUgYSBiYWNrdHJhY2UuICopXG5cbnx9XG4gICAgICAoY29tbWVudF9wcmVmaXggdClcbiAgOztcbmVuZFxuIiwibGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwOVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjhcXDAwMFxcMDA1XFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXDAwNlxcMDAwXFwwODVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA0MFxcMDAwXFwwMzFcXDAwMFxcMDQ2XFwwMDBcXDA0OFxcMDAwXFwwMDdcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDA2MlxcMDAwXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDEwM1xcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDVcXDAwMFxcMDk1XFwwMDBcXDEwN1xcMDAwXFwwOTVcXDAwMFxcMTEzXFwwMDBcXDAxMFxcMDAwXFwxMDRcXDAwMFxcXG4gICAgXFwxMDRcXDAwMFxcMTE2XFwwMDBcXDEwNFxcMDAwXFwxMjJcXDAwMFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMTFcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDExNlxcMDAwXFwxMTdcXDAwMFxcMTI1XFwwMDBcXDEyN1xcMDAwXFwwMTJcXDAwMFxcMTI2XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDExOVxcMDAwXFwxMjJcXDAwMFxcMDEzXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOFxcMDAwXFwwMTJcXDAwMFxcMDE0XFwwMDBcXDAyNFxcMDAwXFwwMTJcXDAwMFxcMDM5XFwwMDBcXDAxMlxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDYxXFwwMDBcXDA3MVxcMDAwXFwwNTlcXDAwMFxcMDg2XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDNcXDAwMFxcMDI5XFwwMDBcXDAwN1xcMDAwXFwwMDZcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDE4XFwwMDBcXDAyN1xcMDAwXFwwMjVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDI2XFwwMDBcXDAxNlxcMDAwXFwwMDVcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjJcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMDMwXFwwMDBcXDAxM1xcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFxcbiAgICBcXDAzOFxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNjBcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTZcXDAwMFxcMDU4XFwwMDBcXDA2MlxcMDAwXFwwNDZcXDAwMFxcMDYzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDIzXFwwMDBcXDAzM1xcMDAwXFwwMzhcXDAwMFxcMDQzXFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNjBcXDAwMFxcMDcwXFwwMDBcXDA4MFxcMDAwXFwwODVcXDAwMFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjhcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDAyMFxcMDAwXFwwMTdcXDAwMFxcMDI2XFwwMDBcXDAyNFxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMjVcXDAwMFxcMDE1XFwwMDBcXDAwNFxcMDAwXFwwMTBcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDA5XFwwMDBcXDAzMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDM3XFwwMDBcXDAzOVxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDYxXFwwMDBcXDA0NFxcMDAwXFwwNjJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDczXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgY2hlY2sgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjMgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAxIC0+XG4jIDUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxNjggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG5vdF9hdF9ib3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiA0NFxuYW5kIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxODAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAxIC0+XG4jIDkgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgKCBub3RfYXRfYm9zIGxleGJ1ZiApXG4jIDE4NSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDIgLT5cbiMgMTAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAoIGZhbHNlIClcbiMgMTkwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMiBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gXG4gIGxldCBjb250YWluc19iYWNrdHJhY2VzIHMgPSBjaGVjayAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiMgMjAxIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuIiwib3BlbiBFeHBlY3RfdGVzdF9jb21tb25cbm1vZHVsZSBMaXN0ID0gTGlzdExhYmVsc1xuXG5tb2R1bGUgVGVzdF9vdXRjb21lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBmaWxlX2RpZ2VzdCA6IEZpbGUuRGlnZXN0LnRcbiAgICA7IGxvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gICAgOyBleHBlY3RhdGlvbnMgOiBFeHBlY3RhdGlvbi5SYXcudCBsaXN0XG4gICAgOyB1bmNhdWdodF9leG5fZXhwZWN0YXRpb24gOiBFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICA7IHNhdmVkX291dHB1dCA6IChGaWxlLkxvY2F0aW9uLnQgKiBzdHJpbmcpIGxpc3RcbiAgICA7IHRyYWlsaW5nX291dHB1dCA6IHN0cmluZ1xuICAgIDsgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuVXBvbl91bnJlbGVhc2FibGVfaXNzdWUudFxuICAgIDsgdW5jYXVnaHRfZXhuIDogKGV4biAqIFByaW50ZXhjLnJhd19iYWNrdHJhY2UpIG9wdGlvblxuICAgIH1cbmVuZFxuXG5sZXQgdGVzdHNfcnVuIDogVGVzdF9vdXRjb21lLnQgbGlzdCByZWYgPSByZWYgW11cblxubGV0IHByb3RlY3QgfmZpbmFsbHkgfmYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+XG4gICAgZmluYWxseSAoKTtcbiAgICB4XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICBmaW5hbGx5ICgpO1xuICAgIHJhaXNlIGVcbjs7XG5cbm1vZHVsZSBDdXJyZW50X2ZpbGUgPSBzdHJ1Y3RcbiAgbGV0IGN1cnJlbnQgPSByZWYgTm9uZVxuXG4gIGxldCBzZXQgfmFic29sdXRlX2ZpbGVuYW1lID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGN1cnJlbnQgOj0gU29tZSBhYnNvbHV0ZV9maWxlbmFtZVxuICAgIHwgU29tZSBfIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLnNldDogYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCB1bnNldCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgU29tZSBfIC0+IGN1cnJlbnQgOj0gTm9uZVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci51bnNldDogbm90IHNldFwiXG4gIDs7XG5cbiAgbGV0IGdldCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgU29tZSBmbiAtPiBmblxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5nZXQ6IG5vdCBzZXRcIlxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzYXZlZCA6IChGaWxlLkxvY2F0aW9uLnQgKiBpbnQpIGxpc3RcbiAgICA7IGNoYW4gOiBvdXRfY2hhbm5lbFxuICAgIDsgZmlsZW5hbWUgOiBGaWxlLk5hbWUudFxuICAgIH1cblxuICBleHRlcm5hbCBiZWZvcmVfdGVzdFxuICAgIDogIG91dHB1dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0XCJcblxuICBleHRlcm5hbCBhZnRlcl90ZXN0XG4gICAgOiAgc3Rkb3V0Om91dF9jaGFubmVsXG4gICAgLT4gc3RkZXJyOm91dF9jaGFubmVsXG4gICAgLT4gdW5pdFxuICAgID0gXCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcIlxuXG4gIGxldCBnZXRfcG9zaXRpb24gKCkgPSBwb3Nfb3V0IHN0ZG91dFxuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIGxldCBmaWxlbmFtZSA9IEZpbGVuYW1lLnRlbXBfZmlsZSBcImV4cGVjdC10ZXN0XCIgXCJvdXRwdXRcIiBpblxuICAgIGxldCBjaGFuID0gb3Blbl9vdXRfYmluIGZpbGVuYW1lIGluXG4gICAgYmVmb3JlX3Rlc3Qgfm91dHB1dDpjaGFuIH5zdGRvdXQgfnN0ZGVycjtcbiAgICB7IGNoYW47IGZpbGVuYW1lID0gRmlsZS5OYW1lLm9mX3N0cmluZyBmaWxlbmFtZTsgc2F2ZWQgPSBbXSB9XG4gIDs7XG5cbiAgbGV0IHJlbGF0aXZlX2ZpbGVuYW1lIHQgPSBGaWxlLk5hbWUucmVsYXRpdmVfdG8gfmRpcjooRmlsZS5pbml0aWFsX2RpciAoKSkgdC5maWxlbmFtZVxuXG4gIGxldCB3aXRoX2ljIGZuYW1lIH5mID1cbiAgICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICAgIHByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBjbG9zZV9pbiBpYykgfmY6KGZ1biAoKSAtPiBmIGljKVxuICA7O1xuXG4gIGxldCBjdXJyZW50X3Rlc3QgOiAoRmlsZS5Mb2NhdGlvbi50ICogdCkgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG4gIGxldCBhbV9ydW5uaW5nX2V4cGVjdF90ZXN0ICgpID0gT3B0aW9uLmlzX3NvbWUgIWN1cnJlbnRfdGVzdFxuXG4gIGxldCBnZXRfY3VycmVudCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnRfdGVzdCB3aXRoXG4gICAgfCBTb21lIChfLCB0KSAtPiB0XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkluc3RhbmNlLmdldF9jdXJyZW50IGNhbGxlZCBvdXRzaWRlIGEgdGVzdC5cIlxuICA7O1xuXG4gIGxldCBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb24gPVxuICAgIGxldCBwb3MgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICB0LnNhdmVkIDwtIChsb2NhdGlvbiwgcG9zKSA6OiB0LnNhdmVkXG4gIDs7XG5cbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgbGV0IHByZXZfcG9zID1cbiAgICAgIG1hdGNoIHQuc2F2ZWQgd2l0aFxuICAgICAgfCBbXSAtPiAwXG4gICAgICB8IChfLCBwcmV2X3BvcykgOjogXyAtPiBwcmV2X3Bvc1xuICAgIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZDtcbiAgICBmbHVzaCB0LmNoYW47XG4gICAgbGV0IGxlbiA9IHBvcyAtIHByZXZfcG9zIGluXG4gICAgd2l0aF9pYyAocmVsYXRpdmVfZmlsZW5hbWUgdCkgfmY6KGZ1biBpYyAtPlxuICAgICAgc2Vla19pbiBpYyBwcmV2X3BvcztcbiAgICAgIHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuKVxuICA7O1xuZW5kXG5cbmxldCBhbV9ydW5uaW5nX2V4cGVjdF90ZXN0ID0gSW5zdGFuY2UuYW1fcnVubmluZ19leHBlY3RfdGVzdFxuXG5sZXQgZmx1c2ggKCkgPVxuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKCk7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuZXJyX2Zvcm1hdHRlciAoKTtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRvdXQ7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3RkZXJyXG47O1xuXG5sZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gIGxldCBpbnN0YW5jZSA9IEluc3RhbmNlLmdldF9jdXJyZW50ICgpIGluXG4gIGZsdXNoICgpO1xuICBJbnN0YW5jZS5zYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggaW5zdGFuY2UgbG9jYXRpb25cbjs7XG5cbm1vZHVsZSBNYWtlIChDIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlMpID0gc3RydWN0XG4gIG1vZHVsZSBJbnN0YW5jZV9pbyA6IHNpZ1xuICAgIHZhbCBzYXZlX291dHB1dCA6IEZpbGUuTG9jYXRpb24udCAtPiB1bml0XG4gICAgdmFsIHNhdmVfYW5kX3JldHVybl9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gc3RyaW5nXG5cbiAgICB2YWwgZXhlY1xuICAgICAgOiAgZmlsZV9kaWdlc3Q6RmlsZS5EaWdlc3QudFxuICAgICAgLT4gbG9jYXRpb246RmlsZS5Mb2NhdGlvbi50XG4gICAgICAtPiBleHBlY3RhdGlvbnM6RXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgICAgLT4gdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uOkV4cGVjdGF0aW9uLlJhdy50IG9wdGlvblxuICAgICAgLT4gZjoodW5pdCAtPiB1bml0IEMuSU8udClcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgb3BlbiBJbnN0YW5jZVxuXG4gICAgbGV0IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyBsZW4gPVxuICAgICAgbGV0IHMgPSByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiB8PiBDLnNhbml0aXplIGluXG4gICAgICBpZiBub3QgKENoZWNrX2JhY2t0cmFjZXMuY29udGFpbnNfYmFja3RyYWNlcyBzKVxuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAubWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZVxuICAgICAgICAgIEMudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgXiBzXG4gICAgOztcblxuICAgIGxldCBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0ID1cbiAgICAgIFN5cy5jaGRpciAoRmlsZS5pbml0aWFsX2RpciAoKSk7XG4gICAgICBsZXQgbGFzdF9vZnMgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICAgIGFmdGVyX3Rlc3QgfnN0ZG91dCB+c3RkZXJyO1xuICAgICAgY2xvc2Vfb3V0IHQuY2hhbjtcbiAgICAgIGxldCBmbmFtZSA9IHJlbGF0aXZlX2ZpbGVuYW1lIHQgaW5cbiAgICAgIHByb3RlY3RcbiAgICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPiBTeXMucmVtb3ZlIGZuYW1lKVxuICAgICAgICB+ZjooZnVuICgpIC0+XG4gICAgICAgICAgd2l0aF9pYyBmbmFtZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICBsZXQgb2ZzLCBvdXRwdXRzID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgdC5zYXZlZClcbiAgICAgICAgICAgICAgICB+aW5pdDooMCwgW10pXG4gICAgICAgICAgICAgICAgfmY6KGZ1biAob2ZzLCBhY2MpIChsb2MsIG5leHRfb2ZzKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgKG5leHRfb2ZzIC0gb2ZzKSBpblxuICAgICAgICAgICAgICAgICAgbmV4dF9vZnMsIChsb2MsIHMpIDo6IGFjYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdHJhaWxpbmdfb3V0cHV0ID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChsYXN0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgIExpc3QucmV2IG91dHB1dHMsIHRyYWlsaW5nX291dHB1dCkpXG4gICAgOztcblxuICAgIGxldCBzYXZlX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBmbHVzaCAoKTtcbiAgICAgIHNhdmVfb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvblxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBmbHVzaCAoKTtcbiAgICAgIHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uXG4gICAgOztcblxuICAgIGxldCAoKSA9XG4gICAgICBTdGRsaWIuYXRfZXhpdCAoZnVuICgpIC0+XG4gICAgICAgIG1hdGNoICFjdXJyZW50X3Rlc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIChsb2MsIHQpIC0+XG4gICAgICAgICAgbGV0IGJsb2NrcywgdHJhaWxpbmcgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICAgICAgICAgIEVycm9yOiBwcm9ncmFtIGV4aXRlZCB3aGlsZSBleHBlY3QgdGVzdCB3YXMgcnVubmluZyFcXG5cXFxuICAgICAgICAgICAgIE91dHB1dCBjYXB0dXJlZCBzbyBmYXI6XFxuXFxcbiAgICAgICAgICAgICAlIVwiXG4gICAgICAgICAgICAoRmlsZS5OYW1lLnRvX3N0cmluZyBsb2MuZmlsZW5hbWUpXG4gICAgICAgICAgICBsb2MubGluZV9udW1iZXJcbiAgICAgICAgICAgIChsb2Muc3RhcnRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpXG4gICAgICAgICAgICAobG9jLmVuZF9wb3MgLSBsb2MubGluZV9zdGFydCk7XG4gICAgICAgICAgTGlzdC5pdGVyIGJsb2NrcyB+ZjooZnVuIChfLCBzKSAtPiBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzKTtcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIiVzJSFcIiB0cmFpbGluZylcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgfmZpbGVfZGlnZXN0IH5sb2NhdGlvbiB+ZXhwZWN0YXRpb25zIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb24gfmYgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgICAgIGN1cnJlbnRfdGVzdCA6PSBTb21lIChsb2NhdGlvbiwgdCk7XG4gICAgICBsZXQgZmluYWxseSB1bmNhdWdodF9leG4gPVxuICAgICAgICBDLnJ1biAoZnVuICgpIC0+XG4gICAgICAgICAgQy5JTy5yZXR1cm5cbiAgICAgICAgICAgIChmbHVzaCAoKTtcbiAgICAgICAgICAgICBjdXJyZW50X3Rlc3QgOj0gTm9uZTtcbiAgICAgICAgICAgICBsZXQgc2F2ZWRfb3V0cHV0LCB0cmFpbGluZ19vdXRwdXQgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgICAgdGVzdHNfcnVuXG4gICAgICAgICAgICAgOj0geyBmaWxlX2RpZ2VzdFxuICAgICAgICAgICAgICAgIDsgbG9jYXRpb25cbiAgICAgICAgICAgICAgICA7IGV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgICAgICAgICAgOyBzYXZlZF9vdXRwdXRcbiAgICAgICAgICAgICAgICA7IHRyYWlsaW5nX291dHB1dFxuICAgICAgICAgICAgICAgIDsgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBDLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgICAgICAgICAgOyB1bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogIXRlc3RzX3J1bikpXG4gICAgICBpblxuICAgICAgbWF0Y2ggQy5ydW4gZiB3aXRoXG4gICAgICB8ICgpIC0+IGZpbmFsbHkgTm9uZVxuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICAgIGZpbmFsbHkgKFNvbWUgKGV4biwgYnQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzYXZlX291dHB1dCA9IEluc3RhbmNlX2lvLnNhdmVfb3V0cHV0XG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0ID0gSW5zdGFuY2VfaW8uc2F2ZV9hbmRfcmV0dXJuX291dHB1dFxuXG4gIGxldCBydW5cbiAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgIH4obG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnQpXG4gICAgICAgIH5hYnNvbHV0ZV9maWxlbmFtZTpkZWZpbmVkX2luXG4gICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICB+dGFnc1xuICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgfmlubGluZV90ZXN0X2NvbmZpZ1xuICAgICAgICBmXG4gICAgPVxuICAgIFBweF9pbmxpbmVfdGVzdF9saWIudGVzdFxuICAgICAgfmNvbmZpZzppbmxpbmVfdGVzdF9jb25maWdcbiAgICAgIH5kZXNjcjpcbiAgICAgICAgKGxhenlcbiAgICAgICAgICAobWF0Y2ggZGVzY3JpcHRpb24gd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgcyAtPiBzKSlcbiAgICAgIH50YWdzXG4gICAgICB+ZmlsZW5hbWU6KEZpbGUuTmFtZS50b19zdHJpbmcgbG9jYXRpb24uZmlsZW5hbWUpXG4gICAgICB+bGluZV9udW1iZXI6bG9jYXRpb24ubGluZV9udW1iZXJcbiAgICAgIH5zdGFydF9wb3M6KGxvY2F0aW9uLnN0YXJ0X3BvcyAtIGxvY2F0aW9uLmxpbmVfc3RhcnQpXG4gICAgICB+ZW5kX3BvczoobG9jYXRpb24uZW5kX3BvcyAtIGxvY2F0aW9uLmxpbmVfc3RhcnQpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQgcmVnaXN0ZXJpbmdfdGVzdHNfZm9yID0gQ3VycmVudF9maWxlLmdldCAoKSBpblxuICAgICAgICAgaWYgZGVmaW5lZF9pbiA8PiByZWdpc3RlcmluZ190ZXN0c19mb3JcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICBcIlRyeWluZyB0byBydW4gYW4gZXhwZWN0IHRlc3QgZnJvbSB0aGUgd3JvbmcgZmlsZS5cXG5cXFxuICAgICAgICAgICAgICAtIHRlc3QgZGVjbGFyZWQgYXQgJXM6JWRcXG5cXFxuICAgICAgICAgICAgICAtIHRyeWluZyB0byBydW4gaXQgZnJvbSAlc1xcblwiXG4gICAgICAgICAgICAgZGVmaW5lZF9pblxuICAgICAgICAgICAgIGxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAgcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgKCogVG8gYXZvaWQgY2FwdHVyaW5nIG5vdC15ZXQgZmx1c2hlZCBkYXRhIG9mIHRoZSBzdGRvdXQgYnVmZmVyICopXG4gICAgICAgICAgIEMucnVuIChmdW4gKCkgLT4gQy5JTy5yZXR1cm4gKGZsdXNoICgpKSk7XG4gICAgICAgICAgIEluc3RhbmNlX2lvLmV4ZWNcbiAgICAgICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICB+bG9jYXRpb25cbiAgICAgICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgIH5mO1xuICAgICAgICAgICB0cnVlKSlcbiAgOztcbmVuZFxuW0BAaW5saW5lIG5ldmVyXVxuXG5sZXQgdGVzdHNfcnVuICgpID1cbiAgKCogV2UgcHJlcGVuZCB0ZXN0cyB3aGVuIHdlIGVuY291bnRlciB0aGVtLCBzbyByZXZlcnNlIHRoZSBsaXN0IHRvIHJlaW5zdGF0ZSBvcmRlciAqKVxuICBMaXN0LnJldiAhdGVzdHNfcnVuXG47O1xuIiwibW9kdWxlIElPID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHJldHVybiB4ID0geFxuZW5kXG5cbmxldCBzYW5pdGl6ZSBzID0gc1xubGV0IHJ1biBmID0gZiAoKVxubGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gYENSXG4iLCJtb2R1bGUgUHB4X3NleHBfY29udl9saWIgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3JcbiAgbW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbiAgbW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5lbmRcblxubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIExpc3QgPSBMaXN0TGFiZWxzXG4iLCIoKiBUaGlzIG1vZHVsZSBidWlsZHMgYSBidWZmZXIgb2YgXCJpbnN0cnVjdGlvbnNcIiwgaW4gb3JkZXIgdG8gcmVwcmVzZW50IGEgY29tcGFjdCBzZXF1ZW5jZVxuICAgb2YgZGVsaW1pdGluZyBwb3NpdGlvbnMgYW5kIG5ld2xpbmVzLiBUaGUgcGFyc2VyIHN0b3JlcyB0aGUgcG9zaXRpb25zIG9mIGVhY2g6XG5cbiAgIC0gbmV3bGluZVxuICAgLSBiZWdpbm5pbmcgb2YgYXRvbVxuICAgLSBlbmQgb2YgYXRvbVxuICAgLSBsZWZ0IHBhcmVudGhlc2lzXG4gICAtIHJpZ2h0IHBhcmVudGhlc2lzXG5cbiAgIEluc3RydWN0aW9ucyBhcmUgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIGJpdHMuIFRoZSBuZXh0IGluc3RydWN0aW9uIGlzIGRldGVybWluZWQgYnlcbiAgIGxvb2tpbmcgYXQgdGhlIG5leHQgZmV3IGJpdHM6XG5cbiAgIC0gYml0IDAgcmVwcmVzZW50cyBhIHNhdmVkIHBvc2l0aW9uIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMCByZXByZXNlbnQgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMCBhcmUgZm9sbG93ZWQgYnkgNSBiaXRzIG9mIHBheWxvYWQuIFRoZSA1LWJpdCBwYXlsb2FkcyBvZiBhbnkgc3Vic2VxdWVudCAxMTAtXG4gICAgIGluc3RydWN0aW9ucyBhcmUgc3F1YXNoZWQgdG8gZm9ybSBhIG51bWJlciAobGVhc3Qgc2lnbmlmaWNhbnQgNS1iaXQgY2h1bmsgZmlyc3QpLlxuICAgICBUaGlzIG51bWJlciArIDUgcmVwcmVzZW50cyBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTExMCBtYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgbmV3IGxpbmUgKHdpdGggb2Zmc2V0IGluY3JlbWVudGVkKVxuICAgLSBiaXRzIDExMTEgcmVwcmVzZW50IGEgcG9zaXRpb24gc2F2ZWQgdHdpY2UgZm9sbG93ZWQgYnkgYW4gb2Zmc2V0IGluY3JlbWVudFxuXG4gICBGb3IgaW5zdGFuY2UgbGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzZXhwOlxuXG4gICB7W1xuICAgICB7fFxuKGFiY1xuICAgICAgXCJmb29cbiBiYXJcIlxuKVxufH1cbiAgIF19XG5cbiAgIHRoZSBzZXF1ZW5jZSBvZiBpbnN0cnVjdGlvbnMgdG8gcmVjb3JkIGluIG9yZGVyIHRvIHJlY29uc3RydWN0IHRoZSBwb3NpdGlvbiBvZiBhbnlcbiAgIHN1Yi1zZXhwIGlzOlxuXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGZpcnN0ICcoJ1xuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImFiY1wiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiYWJjXCJcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAxIGFkdmFuY2UgNlxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImZvb1xcbiAgYmFyXCJcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAwIGFkdmFuY2UgNVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBlbmQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGxhc3QgJyknXG5cbiAgICh3ZSBzYXZlIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgY2xvc2luZyBwYXJlbnRoZXNpcylcblxuICAgVGhlIHRvdGFsIHNlcXVlbmNlIGlzIDQyIGJpdHMsIHNvIHdlIG5lZWQgNiBieXRlcyB0byBzdG9yZSBpdFxuXG4gICBUaGUgc2VxdWVuY2Ugb2YgYml0cyBpcyBlbmNvZGVkIGFzIGEgc2VxdWVuY2Ugb2YgMTYtYml0IHZhbHVlcywgd2hlcmUgdGhlIGVhcmxpZXIgYml0c1xuICAgYXJlIG1vc3Qgc2lnbmlmaWNhbnQuXG5cbiAgIE5vdGUgdGhhdCB0aGUgcGFyc2VyIHN0b3JlcyB0aGUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUuIFRoaXMgd2F5IG9ubHkgc2luZ2xlXG4gICBjaGFyYWN0ZXIgYXRvbXMgcmVxdWlyZSBhIGRvdWJsZSBwb3NpdGlvbnMuIElmIHdlIHdlcmUgc3RvcmluZyBlbmQgcG9zaXRpb25zIGFzXG4gICBleGNsdXNpdmUsIHdlIHdvdWxkIG5lZWQgZG91YmxlIHBvc2l0aW9ucyBmb3IgWykoXSBhbmQgW2EoXSwgd2hpY2ggYXJlIGxpa2VseSB0byBiZVxuICAgZnJlcXVlbnQgaW4gcy1leHByZXNzaW9ucyBwcmludGVkIHdpdGggdGhlIG5vbiBbX2h1bV0gcHJpbnRlci4gV2UgZXhwZWN0IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHRvIGJlIGxlc3MgZnJlcXVlbnQgc28gaXQgbWFrZXMgc2Vuc2UgdG8gcGVuYWxpemUgdGhlbSBpbnN0ZWFkLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zID1cbiAgeyBsaW5lIDogaW50XG4gIDsgY29sIDogaW50XG4gIDsgb2Zmc2V0IDogaW50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9wb3MgPVxuICAoZnVuIHsgbGluZSA9IGxpbmVfXzAwMl87IGNvbCA9IGNvbF9fMDA0Xzsgb2Zmc2V0ID0gb2Zmc2V0X18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgb2Zmc2V0X18wMDZfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mZnNldFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2ZfaW50IGNvbF9fMDA0XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb2xcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2ludCBsaW5lX18wMDJfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMV9cbiAgICAgOiBwb3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcG9zID0gU3RkbGliLmNvbXBhcmVcbmxldCBiZWdpbm5pbmdfb2ZfZmlsZSA9IHsgbGluZSA9IDE7IGNvbCA9IDA7IG9mZnNldCA9IDAgfVxubGV0IHNoaWZ0X3BvcyBwb3MgfmNvbHMgPSB7IHBvcyB3aXRoIGNvbCA9IHBvcy5jb2wgKyBjb2xzOyBvZmZzZXQgPSBwb3Mub2Zmc2V0ICsgY29scyB9XG5cbnR5cGUgcmFuZ2UgPVxuICB7IHN0YXJ0X3BvcyA6IHBvc1xuICA7IGVuZF9wb3MgOiBwb3NcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3JhbmdlID1cbiAgKGZ1biB7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDA5XzsgZW5kX3BvcyA9IGVuZF9wb3NfXzAxMV8gfSAtPlxuICAgICBsZXQgYm5kc19fMDA4XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX3BvcyBlbmRfcG9zX18wMTFfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVuZF9wb3NcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA4X1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX3BvcyBzdGFydF9wb3NfXzAwOV8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDhfXG4gICAgIDogcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcmFuZ2UgPSBTdGRsaWIuY29tcGFyZVxuXG5sZXQgbWFrZV9yYW5nZV9pbmNsIH5zdGFydF9wb3Mgfmxhc3RfcG9zID1cbiAgeyBzdGFydF9wb3M7IGVuZF9wb3MgPSBzaGlmdF9wb3MgbGFzdF9wb3MgfmNvbHM6MSB9XG47O1xuXG5tb2R1bGUgQ2h1bmsgOiBzaWdcbiAgKCoqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgW2xlbmd0aC8yXSBzaWduZWQgMTYtYml0IHZhbHVlcyAqKVxuICB0eXBlIHRcblxuICAoKiogTGVuZ3RoIGluIGJ5dGVzLiAqKVxuICB2YWwgbGVuZ3RoIDogaW50XG5cbiAgdmFsIGFsbG9jIDogdW5pdCAtPiB0XG5cbiAgKCoqIFtnZXQxNiB+cG9zXSBhbmQgW3NldDE2IH5wb3NdIG1hbmlwdWxhdGUgdGhlIFtwb3MvMl10aCBzdG9yZWQgdmFsdWUuXG4gICAgICBbcG9zXSBtdXN0IGJlIGV2ZW4uXG4gICAgICBbc2V0MTYgeF0gb25seSB1c2VzIHRoZSAxNiBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFt4XS4gKilcbiAgdmFsIGdldDE2IDogdCAtPiBwb3M6aW50IC0+IGludFxuXG4gIHZhbCBzZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgKCogT0NhbWwgc3RyaW5ncyBhbHdheXMgd2FzdGUgdHdvIGJ5dGVzIGF0IHRoZSBlbmQsIHNvIHdlIHRha2UgYSBwb3dlciBvZiB0d28gbWludXMgdHdvXG4gICAgIHRvIGJlIHN1cmUgd2UgZG9uJ3Qgd2FzdGUgc3BhY2UuICopXG4gIGxldCBsZW5ndGggPSA2MlxuICBsZXQgYWxsb2MgKCkgPSBCeXRlcy5jcmVhdGUgbGVuZ3RoXG5cbiAgZXh0ZXJuYWwgZ2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuICBleHRlcm5hbCBzZXQxNiA6IGJ5dGVzIC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcblxuICAoKiBJZiB3ZSB3YW50IHRvIG1ha2UgYSBbUG9zaXRpb25zLnRdIHNlcmlhbGl6YWJsZTpcblxuICAgICB7W1xuICAgICAgIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiOztcblxuICAgICAgIGxldCBnZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgLT4gZ2V0MTYgYnVmIH5wb3MgfD4gYnN3YXAxNlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBnZXQxNlxuXG4gICAgICAgbGV0IHNldDE2ID1cbiAgICAgICAgIGlmIENhbWwuU3lzLmFyY2hfYmlnX2VuZGlhbiB0aGVuXG4gICAgICAgICAgIGZ1biBidWYgfnBvcyB4IC0+IHNldDE2IGJ1ZiB+cG9zIChic3dhcDE2IHgpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIHNldDE2XG4gICAgIF19XG5cbiAgKilcbmVuZFxuXG50eXBlIHRfID1cbiAgeyBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2NodW5rc10uXG4gICAgICAgVGhlIGxhc3QgW2V4dHJhX2JpdHNdIGJpdHMgd2lsbCBiZSBzdG9yZWQgYXMgdGhlICpsZWFzdCogc2lnbmlmaWNhbnQgYml0c1xuICAgICAgIG9mIHRoZSBhcHByb3ByaWF0ZSBwYWlyIG9mIGJ5dGVzIG9mIHRoZSBsYXN0IGNodW5rLiAqKVxuICAgIG51bV9ieXRlcyA6IGludFxuICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgOyBpbml0aWFsX3BvcyA6IHBvc1xuICB9XG5cbnR5cGUgdCA9IHRfIExhenkudFxuXG5sZXQgbWVtb3J5X2Zvb3RwcmludF9pbl9ieXRlcyAobGF6eSB0KSA9XG4gIGxldCBudW1fZmllbGRzID0gNCBpblxuICBsZXQgaGVhZGVyX3dvcmRzID0gMSBpblxuICBsZXQgd29yZF9ieXRlcyA9XG4gICAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgfCAzMiAtPiA0XG4gICAgfCA2NCAtPiA4XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsZXQgY2h1bmtfd29yZHMgPVxuICAgIGxldCBkaXZfY2VpbCBhIGIgPSAoYSArIGIgLSAxKSAvIGIgaW5cbiAgICBsZXQgbiA9XG4gICAgICBkaXZfY2VpbFxuICAgICAgICAoQ2h1bmsubGVuZ3RoXG4gICAgICAgICArIDEgKCogTlVMIHRlcm1pbmF0aW5nIGJ5dGVzICopXG4gICAgICAgICArIDEgKCogbnVtYmVyIG9mIHdhc3RlZCBieXRlcyB0byBmaWxsIGEgd29yZCAqKSlcbiAgICAgICAgd29yZF9ieXRlc1xuICAgIGluXG4gICAgbiArIGhlYWRlcl93b3Jkc1xuICBpblxuICBsZXQgcG9zX2ZpZWxkcyA9IDMgaW5cbiAgbGV0IHBvc193b3JkcyA9IGhlYWRlcl93b3JkcyArIHBvc19maWVsZHMgaW5cbiAgbGV0IGxpc3RfY29uc193b3JkcyA9IGhlYWRlcl93b3JkcyArIDIgaW5cbiAgKGhlYWRlcl93b3Jkc1xuICAgKyBudW1fZmllbGRzXG4gICArIHBvc193b3Jkc1xuICAgKyAoTGlzdC5sZW5ndGggdC5jaHVua3MgKiAoY2h1bmtfd29yZHMgKyBsaXN0X2NvbnNfd29yZHMpKSlcbiAgKiB3b3JkX2J5dGVzXG47O1xuXG5tb2R1bGUgQnVpbGRlciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtfcG9zIDogaW50XG4gICAgOyBtdXRhYmxlIGZpbGxlZF9jaHVua3MgOiBDaHVuay50IGxpc3QgKCogRmlsbGVkIGNodW5rcyBpbiByZXZlcnNlIG9yZGVyICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgICgqIE9mZnNldCBvZiB0aGUgbGFzdCBzYXZlZCBwb3NpdGlvbiBvciBuZXdsaW5lIHBsdXNcbiAgICAgICBvbmUsIG9yIFtpbml0aWFsX3Bvc10gKilcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgICgqIHRoZSBbbnVtX2JpdHNdIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgW2ludF9idWZdXG4gICAgICAgYXJlIHRoZSBiaXRzIG5vdCB5ZXQgcHVzaGVkIHRvIFtjaHVua10uICopXG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIG51bWJlciBvZiBiaXRzIHN0b3JlZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgaW5pdGlhbF9wb3MgOiBwb3NcbiAgICB9XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQuY2h1bmtfcG9zID49IDAgJiYgdC5jaHVua19wb3MgPD0gQ2h1bmsubGVuZ3RoKTtcbiAgICBhc3NlcnQgKHQub2Zmc2V0ID49IHQuaW5pdGlhbF9wb3Mub2Zmc2V0KTtcbiAgICBhc3NlcnQgKHQubnVtX2JpdHMgPD0gMTUpXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IGZhbHNlXG4gIGxldCBpbnZhcmlhbnQgdCA9IGlmIGNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0XG5cbiAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gYmVnaW5uaW5nX29mX2ZpbGUpICgpID1cbiAgICB7IGNodW5rID0gQ2h1bmsuYWxsb2MgKClcbiAgICA7IGNodW5rX3BvcyA9IDBcbiAgICA7IGZpbGxlZF9jaHVua3MgPSBbXVxuICAgIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgOyBpbnRfYnVmID0gMFxuICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgOyBpbml0aWFsX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXQgdCAocG9zIDogcG9zKSA9XG4gICAgKCogV2UgbmVlZCBhIG5ldyBjaHVuayBhcyBbY29udGVudHNdIGtlZXBzIHRoZSBjdXJyZW50IGNodW5rIGluIHRoZSBjbG9zdXJlIG9mIHRoZVxuICAgICAgIGxhenkgdmFsdWUuICopXG4gICAgdC5jaHVuayA8LSBDaHVuay5hbGxvYyAoKTtcbiAgICB0LmNodW5rX3BvcyA8LSAwO1xuICAgIHQuZmlsbGVkX2NodW5rcyA8LSBbXTtcbiAgICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICAgIHQuaW50X2J1ZiA8LSAwO1xuICAgIHQubnVtX2JpdHMgPC0gMDtcbiAgICB0LmluaXRpYWxfcG9zIDwtIHBvc1xuICA7O1xuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhbGxvY19uZXdfY2h1bmsgdCA9XG4gICAgdC5maWxsZWRfY2h1bmtzIDwtIHQuY2h1bmsgOjogdC5maWxsZWRfY2h1bmtzO1xuICAgIHQuY2h1bmsgPC0gQ2h1bmsuYWxsb2MgKCk7XG4gICAgdC5jaHVua19wb3MgPC0gMFxuICA7O1xuXG4gIGxldCBhZGRfdWludDE2IHQgbiA9XG4gICAgaWYgdC5jaHVua19wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBhbGxvY19uZXdfY2h1bmsgdDtcbiAgICBDaHVuay5zZXQxNiB0LmNodW5rIH5wb3M6dC5jaHVua19wb3MgblxuICA7O1xuXG4gIGxldCBhZGRfYml0cyB0IG4gfm51bV9iaXRzID1cbiAgICBsZXQgaW50X2J1ZiA9ICh0LmludF9idWYgbHNsIG51bV9iaXRzKSBsb3IgbiBpblxuICAgIGxldCBudW1fYml0cyA9IHQubnVtX2JpdHMgKyBudW1fYml0cyBpblxuICAgIHQuaW50X2J1ZiA8LSBpbnRfYnVmO1xuICAgIGlmIG51bV9iaXRzIDwgMTZcbiAgICB0aGVuIHQubnVtX2JpdHMgPC0gbnVtX2JpdHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBudW1fYml0cyA9IG51bV9iaXRzIC0gMTYgaW5cbiAgICAgIHQubnVtX2JpdHMgPC0gbnVtX2JpdHM7XG4gICAgICBhZGRfdWludDE2IHQgKGludF9idWYgbHNyIG51bV9iaXRzKTtcbiAgICAgIHQuY2h1bmtfcG9zIDwtIHQuY2h1bmtfcG9zICsgMlxuICAgICAgKCogbm8gbmVlZCB0byBjbGVhciB0aGUgYml0cyBvZiBpbnRfYnVmIHdlIGp1c3Qgd3JvdGUsIGFzIGZ1cnRoZXIgc2V0MTYgd2lsbCBpZ25vcmVcbiAgICAgICAgIHRoZXNlIGV4dHJhIGJpdHMuICopKVxuICA7O1xuXG4gIGxldCBjb250ZW50cyB0ID1cbiAgICAoKiBGbHVzaCB0aGUgY3VycmVudCBbdC5pbnRfYnVmXSAqKVxuICAgIGFkZF91aW50MTYgdCB0LmludF9idWY7XG4gICAgbGV0IHJldl9jaHVua3MgPSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcyBpblxuICAgIGxldCBjaHVua19wb3MgPSB0LmNodW5rX3BvcyBpblxuICAgIGxldCBleHRyYV9iaXRzID0gdC5udW1fYml0cyBpblxuICAgIGxldCBpbml0aWFsX3BvcyA9IHQuaW5pdGlhbF9wb3MgaW5cbiAgICBsYXp5XG4gICAgICB7IGNodW5rcyA9IExpc3QucmV2IHJldl9jaHVua3NcbiAgICAgIDsgbnVtX2J5dGVzID0gKChMaXN0Lmxlbmd0aCByZXZfY2h1bmtzIC0gMSkgKiBDaHVuay5sZW5ndGgpICsgY2h1bmtfcG9zXG4gICAgICA7IGV4dHJhX2JpdHNcbiAgICAgIDsgaW5pdGlhbF9wb3NcbiAgICAgIH1cbiAgOztcblxuICBsZXQgbG9uZ19zaGlmdCB0IG4gPVxuICAgIGxldCBuID0gcmVmIChuIC0gNSkgaW5cbiAgICB3aGlsZSAhbiA+IDAgZG9cbiAgICAgIGFkZF9iaXRzIHQgKDBiMTEwMF8wMDAwIGxvciAoIW4gbGFuZCAwYjAwMDFfMTExMSkpIH5udW1fYml0czo4O1xuICAgICAgbiA6PSAhbiBsc3IgNVxuICAgIGRvbmVcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IG4gPj0gNSAqKVxuICBsZXRbQGlubGluZSBuZXZlcl0gYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHMgPVxuICAgIGxvbmdfc2hpZnQgdCBuO1xuICAgIGFkZF9iaXRzIHQgaW5zdHIgfm51bV9iaXRzOmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgc2hpZnQ0ID0gMGIxMF8xMF8xMF8xMFxuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyIH5pbnN0cl9iaXRzID1cbiAgICBpbnZhcmlhbnQgdDtcbiAgICBsZXQgbiA9IG9mZnNldCAtIHQub2Zmc2V0IGluXG4gICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDAgfCAxIHwgMiB8IDMgfCA0IC0+XG4gICAgICBsZXQgbnVtX2JpdHMgPSAobiBsc2wgMSkgKyBpbnN0cl9iaXRzIGluXG4gICAgICBhZGRfYml0cyB0ICgoc2hpZnQ0IGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIgbGFuZCAoKDEgbHNsIG51bV9iaXRzKSAtIDEpKSB+bnVtX2JpdHNcbiAgICB8IDVcbiAgICB8IDZcbiAgICB8IDdcbiAgICB8IDhcbiAgICB8IDlcbiAgICB8IDEwXG4gICAgfCAxMVxuICAgIHwgMTJcbiAgICB8IDEzXG4gICAgfCAxNFxuICAgIHwgMTVcbiAgICB8IDE2XG4gICAgfCAxN1xuICAgIHwgMThcbiAgICB8IDE5XG4gICAgfCAyMFxuICAgIHwgMjFcbiAgICB8IDIyXG4gICAgfCAyM1xuICAgIHwgMjRcbiAgICB8IDI1XG4gICAgfCAyNlxuICAgIHwgMjdcbiAgICB8IDI4XG4gICAgfCAyOVxuICAgIHwgMzBcbiAgICB8IDMxXG4gICAgfCAzMlxuICAgIHwgMzNcbiAgICB8IDM0XG4gICAgfCAzNVxuICAgIHwgMzYgLT5cbiAgICAgIGFkZF9iaXRzXG4gICAgICAgIHRcbiAgICAgICAgKCgoMGIxMTAwXzAwMDAgbG9yIChuIC0gNSkpIGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIpXG4gICAgICAgIH5udW1fYml0czooOCArIGluc3RyX2JpdHMpXG4gICAgfCBfIC0+XG4gICAgICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5Qb3NpdGlvbnMuYWRkX2dlblwiO1xuICAgICAgYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgYWRkIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjAgfmluc3RyX2JpdHM6MVxuICBsZXQgYWRkX3R3aWNlIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjExMTEgfmluc3RyX2JpdHM6NFxuICBsZXQgYWRkX25ld2xpbmUgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMTExMCB+aW5zdHJfYml0czo0XG5lbmRcblxudHlwZSBwb3NpdGlvbnMgPSB0XG5cbm1vZHVsZSBJdGVyYXRvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogcG9zaXRpb25zIC0+IHRcblxuICBleGNlcHRpb24gTm9fbW9yZVxuXG4gICgqIFthZHZhbmNlIHQgfnNraXBdIGlnbm9yZXMgW3NraXBdIHNhdmVkIHBvc2l0aW9ucyBhbmQgcmV0dXJucyB0aGUgbmV4dCBzYXZlZCBwb3NpdGlvbi5cbiAgICAgUmFpc2VzIFtOb19tb3JlXSB3aGVuIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIHBvc2l0aW9uIHNldC4gKilcbiAgdmFsIGFkdmFuY2VfZXhuIDogdCAtPiBza2lwOmludCAtPiBwb3NcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gICAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBhdmFpbGFibGUgZnJvbSBbaW5zdHJfcG9zXSBpblxuICAgICAgICAgW2NodW5rIDo6IGNodW5rc10uICopXG4gICAgICBtdXRhYmxlIG51bV9ieXRlcyA6IGludFxuICAgIDsgZXh0cmFfYml0cyA6IGludFxuICAgIDsgbXV0YWJsZSBpbnN0cl9wb3MgOiBpbnQgKCogcG9zaXRpb24gaW4gW2NodW5rXSAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgbGluZSA6IGludFxuICAgIDsgbXV0YWJsZSBib2wgOiBpbnRcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBOdW1iZXIgb2YgYml0cyBub3QgeWV0IGNvbnN1bWVkIGluIFtpbnRfYnVmXSAqKVxuICAgIDsgbXV0YWJsZSBwZW5kaW5nIDogcG9zIG9wdGlvblxuICAgIH1cblxuICBsZXQgY3JlYXRlICgobGF6eSBwKSA6IHBvc2l0aW9ucykgPVxuICAgIG1hdGNoIHAuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB7IGNodW5rXG4gICAgICA7IGNodW5rc1xuICAgICAgOyBudW1fYnl0ZXMgPSBwLm51bV9ieXRlc1xuICAgICAgOyBleHRyYV9iaXRzID0gcC5leHRyYV9iaXRzXG4gICAgICA7IGluc3RyX3BvcyA9IDBcbiAgICAgIDsgb2Zmc2V0ID0gcC5pbml0aWFsX3Bvcy5vZmZzZXRcbiAgICAgIDsgbGluZSA9IHAuaW5pdGlhbF9wb3MubGluZVxuICAgICAgOyBib2wgPSBwLmluaXRpYWxfcG9zLm9mZnNldCAtIHAuaW5pdGlhbF9wb3MuY29sXG4gICAgICA7IGludF9idWYgPSAwXG4gICAgICA7IG51bV9iaXRzID0gMFxuICAgICAgOyBwZW5kaW5nID0gTm9uZVxuICAgICAgfVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBOb19tb3JlXG5cbiAgbGV0IG5vX21vcmUgKCkgPSByYWlzZV9ub3RyYWNlIE5vX21vcmVcblxuICBsZXRbQGlubGluZSBuZXZlcl0gZmV0Y2hfY2h1bmsgdCA9XG4gICAgbWF0Y2ggdC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHQuaW5zdHJfcG9zIDwtIDA7XG4gICAgICB0Lm51bV9ieXRlcyA8LSB0Lm51bV9ieXRlcyAtIENodW5rLmxlbmd0aDtcbiAgICAgIHQuY2h1bmsgPC0gY2h1bms7XG4gICAgICB0LmNodW5rcyA8LSBjaHVua3NcbiAgOztcblxuICBsZXQgZmV0Y2ggdCA9XG4gICAgaWYgdC5pbnN0cl9wb3MgPiB0Lm51bV9ieXRlcyB0aGVuIG5vX21vcmUgKCk7XG4gICAgaWYgdC5pbnN0cl9wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBmZXRjaF9jaHVuayB0O1xuICAgIGxldCB2ID0gQ2h1bmsuZ2V0MTYgdC5jaHVuayB+cG9zOnQuaW5zdHJfcG9zIGluXG4gICAgbGV0IGFkZGVkX2JpdHMgPSBpZiB0Lmluc3RyX3BvcyA9IHQubnVtX2J5dGVzIHRoZW4gdC5leHRyYV9iaXRzIGVsc2UgMTYgaW5cbiAgICB0LmludF9idWYgPC0gKHQuaW50X2J1ZiBsc2wgYWRkZWRfYml0cykgbG9yICh2IGxhbmQgKCgxIGxzbCBhZGRlZF9iaXRzKSAtIDEpKTtcbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgKyBhZGRlZF9iaXRzO1xuICAgIHQuaW5zdHJfcG9zIDwtIHQuaW5zdHJfcG9zICsgMlxuICA7O1xuXG4gIGxldCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHMgPVxuICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0c1xuICAgIHRoZW4gKFxuICAgICAgZmV0Y2ggdDtcbiAgICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0cyB0aGVuIG5vX21vcmUgKCkpO1xuICAgIGxldCBuID0gKHQuaW50X2J1ZiBsc3IgKHQubnVtX2JpdHMgLSBudW1fYml0cykpIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSBpblxuICAgIHQubnVtX2JpdHMgPC0gdC5udW1fYml0cyAtIG51bV9iaXRzO1xuICAgIG5cbiAgOztcblxuICAoKiBbb2Zmc2V0X3NoaWZ0XSBhbmQgW29mZnNldF9zaGlmdF9udW1fYml0c10gZW5jb2RlIHRoZSBvZmZzZXQgbnVtYmVyXG4gICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIFsxMTBdIGluc3RydWN0aW9ucy4gKilcbiAgbGV0IHJlYyBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzID1cbiAgICBtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAoKiBiaXQgc2VxIDAgLT4gbmV3IGl0ZW0gKilcbiAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9XG4gICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDEpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICB8IF8gLT5cbiAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAoKiBiaXQgc2VxIDEwIC0+IHNoaWZ0ICopXG4gICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgICAgIHwgXyAtPlxuICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICgqIGJpdCBzZXEgMTEwIC0+IGxvbmcgc2hpZnQgKilcbiAgICAgICAgICAgIGxldCBuID0gbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjUgaW5cbiAgICAgICAgICAgIGxldCBvZmZzZXRfc2hpZnQgPSBpZiBvZmZzZXRfc2hpZnRfbnVtX2JpdHMgPSAwIHRoZW4gNSBlbHNlIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgYWR2YW5jZVxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIH5za2lwXG4gICAgICAgICAgICAgIH5vZmZzZXRfc2hpZnQ6KG9mZnNldF9zaGlmdCArIChuIGxzbCBvZmZzZXRfc2hpZnRfbnVtX2JpdHMpKVxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOihvZmZzZXRfc2hpZnRfbnVtX2JpdHMgKyA1KVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMCAtPiBuZXdsaW5lICopXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICAgICAgICB0LmJvbCA8LSB0Lm9mZnNldDtcbiAgICAgICAgICAgICAgIHQubGluZSA8LSB0LmxpbmUgKyAxO1xuICAgICAgICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMSAtPiAyIG5ldyBpdGVtcyAqKVxuICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0IGluXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgaWYgc2tpcCA8PSAxXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9IGluXG4gICAgICAgICAgICAgICAgIGlmIHNraXAgPSAwIHRoZW4gdC5wZW5kaW5nIDwtIFNvbWUgcG9zO1xuICAgICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDIpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjApKSlcbiAgOztcblxuICBsZXQgYWR2YW5jZV9leG4gdCB+c2tpcCA9XG4gICAgbWF0Y2ggdC5wZW5kaW5nIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+XG4gICAgICB0LnBlbmRpbmcgPC0gTm9uZTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHBvc1xuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBOb25lIC0+IGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gIDs7XG5lbmRcblxubGV0IGZpbmQgdCBhIGIgPVxuICBpZiBhIDwgMCB8fCBiIDw9IGEgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmZpbmRcIjtcbiAgbGV0IGl0ZXIgPSBJdGVyYXRvci5jcmVhdGUgdCBpblxuICB0cnlcbiAgICBsZXQgc3RhcnRfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDphIGluXG4gICAgbGV0IGxhc3RfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDooYiAtIGEgLSAxKSBpblxuICAgIG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3Bvc1xuICB3aXRoXG4gIHwgSXRlcmF0b3IuTm9fbW9yZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUG9zaXRpb24uZmluZFwiXG47O1xuXG5sZXQgcmVjIHN1Yl9zZXhwX2NvdW50IChzZXhwIDogU2V4cC50KSA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gXyAtPiAxXG4gIHwgTGlzdCBsIC0+IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQ6MSB+ZjooZnVuIGFjYyB4IC0+IGFjYyArIHN1Yl9zZXhwX2NvdW50IHgpXG47O1xuXG5tb2R1bGUgU2V4cF9zZWFyY2ggPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIEZvdW5kIG9mIGludFxuXG4gIGxldCByZWMgbG9vcCB+c3ViIGluZGV4IChzZXhwIDogU2V4cC50KSA9XG4gICAgaWYgc2V4cCA9PSBzdWJcbiAgICB0aGVuIHJhaXNlX25vdHJhY2UgKEZvdW5kIGluZGV4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IEF0b20gXyAtPiBpbmRleCArIDJcbiAgICAgIHwgTGlzdCBsIC0+XG4gICAgICAgIGxldCBpbmRleCA9IGxvb3BfbGlzdCB+c3ViIChpbmRleCArIDEpIGwgaW5cbiAgICAgICAgaW5kZXggKyAxKVxuXG4gIGFuZCBsb29wX2xpc3QgfnN1YiBpbmRleCAoc2V4cHMgOiBTZXhwLnQgbGlzdCkgPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNleHBzIH5pbml0OmluZGV4IH5mOihsb29wIH5zdWIpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplIHQgfnN1YiBhID1cbiAgICBsZXQgYiA9IGEgKyAoc3ViX3NleHBfY291bnQgc3ViICogMikgLSAxIGluXG4gICAgU29tZSAoZmluZCB0IGEgYilcbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9waHlzIHQgc2V4cCB+c3ViID1cbiAgICBtYXRjaCBsb29wIH5zdWIgMCBzZXhwIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuXG4gIGxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyB0IHNleHBzIH5zdWIgPVxuICAgIG1hdGNoIGxvb3BfbGlzdCB+c3ViIDAgc2V4cHMgd2l0aFxuICAgIHwgKF8gOiBpbnQpIC0+IE5vbmVcbiAgICB8IGV4Y2VwdGlvbiBGb3VuZCBuIC0+IGZpbmFsaXplIHQgfnN1YiBuXG4gIDs7XG5lbmRcblxubGV0IGZpbmRfc3ViX3NleHBfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfcGh5c1xubGV0IGZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzID0gU2V4cF9zZWFyY2guZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBJdGVyYXRvci5Ob19tb3JlIC0+IExpc3QucmV2IGFjY1xuICAgIHwgcG9zIC0+IGxvb3AgKHBvcyA6OiBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gdG9fbGlzdCB0IHw+IEFycmF5Lm9mX2xpc3RcbmxldCBjb21wYXJlIHQxIHQyID0gU3RkbGliLmNvbXBhcmUgKHRvX2FycmF5IHQxKSAodG9fYXJyYXkgdDIpXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX2FycmF5IHNleHBfb2ZfcG9zICh0b19hcnJheSB0KVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgQXRvbSBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgYXRvbSA6IHN0cmluZ1xuICAgICAgOyB1bmVzY2FwZWQgOiBzdHJpbmcgb3B0aW9uXG4gICAgICB9XG4gIHwgTGlzdCBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgZWxlbWVudHMgOiB0X29yX2NvbW1lbnQgbGlzdFxuICAgICAgfVxuXG5hbmQgdF9vcl9jb21tZW50ID1cbiAgfCBTZXhwIG9mIHRcbiAgfCBDb21tZW50IG9mIGNvbW1lbnRcblxuYW5kIGNvbW1lbnQgPVxuICB8IFBsYWluX2NvbW1lbnQgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGNvbW1lbnQgOiBzdHJpbmdcbiAgICAgIH1cbiAgfCBTZXhwX2NvbW1lbnQgb2ZcbiAgICAgIHsgaGFzaF9zZW1pX3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICAgIDsgY29tbWVudHMgOiBjb21tZW50IGxpc3RcbiAgICAgIDsgc2V4cCA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgcmVjIHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgQXRvbSB7IGxvYyA9IGxvY19fMDAyXzsgYXRvbSA9IGF0b21fXzAwNF87IHVuZXNjYXBlZCA9IHVuZXNjYXBlZF9fMDA2XyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDAxXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHVuZXNjYXBlZF9fMDA2XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidW5lc2NhcGVkXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIGF0b21fXzAwNF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImF0b21cIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDNfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMDJfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJBdG9tXCIgOjogYm5kc19fMDAxXylcbiAgICB8IExpc3QgeyBsb2MgPSBsb2NfXzAwOV87IGVsZW1lbnRzID0gZWxlbWVudHNfXzAxMV8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwOF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90X29yX2NvbW1lbnQgZWxlbWVudHNfXzAxMV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsZW1lbnRzXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICAgbGV0IGFyZ19fMDEwXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDA5XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGlzdFwiIDo6IGJuZHNfXzAwOF8pXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5hbmQgc2V4cF9vZl90X29yX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFNleHAgYXJnMF9fMDEzXyAtPlxuICAgICAgbGV0IHJlczBfXzAxNF8gPSBzZXhwX29mX3QgYXJnMF9fMDEzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMTRfIF1cbiAgICB8IENvbW1lbnQgYXJnMF9fMDE1XyAtPlxuICAgICAgbGV0IHJlczBfXzAxNl8gPSBzZXhwX29mX2NvbW1lbnQgYXJnMF9fMDE1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29tbWVudFwiOyByZXMwX18wMTZfIF1cbiAgICAgIDogdF9vcl9jb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfY29tbWVudCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCB7IGxvYyA9IGxvY19fMDE4XzsgY29tbWVudCA9IGNvbW1lbnRfXzAyMF8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAxN18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAyMV8gPSBzZXhwX29mX3N0cmluZyBjb21tZW50X18wMjBfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50XCI7IGFyZ19fMDIxXyBdIDo6IGJuZHNfXzAxN19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMTdfID1cbiAgICAgICAgbGV0IGFyZ19fMDE5XyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDE4XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDE5XyBdIDo6IGJuZHNfXzAxN19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGxhaW5fY29tbWVudFwiIDo6IGJuZHNfXzAxN18pXG4gICAgfCBTZXhwX2NvbW1lbnRcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zID0gaGFzaF9zZW1pX3Bvc19fMDIzX1xuICAgICAgICA7IGNvbW1lbnRzID0gY29tbWVudHNfXzAyNV9cbiAgICAgICAgOyBzZXhwID0gc2V4cF9fMDI3X1xuICAgICAgICB9IC0+XG4gICAgICBsZXQgYm5kc19fMDIyXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI4XyA9IHNleHBfb2ZfdCBzZXhwX18wMjdfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXhwXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI2XyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2NvbW1lbnQgY29tbWVudHNfXzAyNV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNvbW1lbnRzXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI0XyA9IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBoYXNoX3NlbWlfcG9zX18wMjNfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJoYXNoX3NlbWlfcG9zXCI7IGFyZ19fMDI0XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cF9jb21tZW50XCIgOjogYm5kc19fMDIyXylcbiAgICAgIDogY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZSA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgY29tcGFyZV90X29yX2NvbW1lbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGNvbXBhcmVfY29tbWVudCA9IFN0ZGxpYi5jb21wYXJlXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFNleHAudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoU2V4cC50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoU2V4cC50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIHsgYXRvbTsgXyB9IC0+IGsgKFNleHAuQXRvbSBhdG9tKVxuICAgICAgfCBMaXN0IHsgZWxlbWVudHM7IF8gfSAtPiBmb3JnZXRfdG9jcyBlbGVtZW50cyAoZnVuIHhzIC0+IGsgKFNleHAuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEF1dG9tYXRvbl9zdGFja19pbnRmXG5cbm1vZHVsZSBGb3JfY3N0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgVF9vcl9jb21tZW50IG9mIENzdC50X29yX2NvbW1lbnQgKiB0XG4gICAgfCBPcGVuIG9mIFBvc2l0aW9ucy5wb3MgKiB0XG4gICAgfCBJbl9zZXhwX2NvbW1lbnQgb2ZcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgICAgICA7IHJldl9jb21tZW50cyA6IENzdC5jb21tZW50IGxpc3RcbiAgICAgICAgOyBzdGFjayA6IHRcbiAgICAgICAgfVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGdldF9tYW55ID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgICB8IFRfb3JfY29tbWVudCAodCwgc3RhY2spIC0+IGxvb3AgKHQgOjogYWNjKSBzdGFja1xuICAgICAgfCBPcGVuIF8gfCBJbl9zZXhwX2NvbW1lbnQgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55XCJcbiAgICBpblxuICAgIGZ1biBzdGFjayAtPiBsb29wIFtdIHN0YWNrXG4gIDs7XG5lbmRcblxubW9kdWxlIEp1c3RfcG9zaXRpb25zID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXRcblxuICBsZXQgZW1wdHkgPSAoKVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgRW1wdHlcbiAgfCBPcGVuIG9mIHRcbiAgfCBTZXhwIG9mIFNleHAudCAqIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGdldF9zaW5nbGUgPSBmdW5jdGlvblxuICB8IFNleHAgKHNleHAsIEVtcHR5KSAtPiBzZXhwXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlXCJcbjs7XG5cbmxldCBnZXRfbWFueSA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBPcGVuIF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suZ2V0X21hbnlcIlxuICAgIHwgU2V4cCAoc2V4cCwgc3RhY2spIC0+IGxvb3AgKHNleHAgOjogYWNjKSBzdGFja1xuICBpblxuICBmdW4gc3RhY2sgLT4gbG9vcCBbXSBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgfCBTZXhwXG5lbmRcblxubW9kdWxlIEZvcl9jc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRva2VuX2J1ZmZlciA6IEJ1ZmZlci50ICgqKiBTdGFydGluZyBwb3NpdGlvbnMgb2YgdGhlIGN1cnJlbnQgdG9rZW4gKiopXG4gICAgOyBtdXRhYmxlIHRva2VuX3N0YXJ0X3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFBvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCB1bml0KSB0XG4gICAgfCBTZXhwIDogKHVuaXQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBDc3QgOiAoRm9yX2NzdC50LCBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KSB0XG5lbmRcblxubW9kdWxlIHJlYyBTdGF0ZSA6IHNpZ1xuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHsgbXV0YWJsZSBhdXRvbWF0b25fc3RhdGUgOiBpbnRcbiAgICA7IGtpbmQgOiAoJ3UsICdzKSBLaW5kLnRcbiAgICA7IG11dGFibGUgZGVwdGggOiBpbnQgKCoqIE51bWJlciBvZiBvcGVuZWQgI3wgd2hlbiBwYXJzaW5nIGEgYmxvY2sgY29tbWVudCAqKVxuICAgIDsgbXV0YWJsZSBibG9ja19jb21tZW50X2RlcHRoIDogaW50XG4gICAgKCoqIFN0YWNrIG9mIGlnbm9yaW5nIGRlcHRoczsgdGhlIGN1cnJlbnQgZGVwdGggaXMgcHVzaGVkXG4gICAgICAgIGVhY2ggdGltZSBhICM7IGNvbW1lbnQgaXMgZW50ZXJlZC4gKilcbiAgICA7IG11dGFibGUgaWdub3Jpbmdfc3RhY2sgOiBpbnQgbGlzdFxuICAgICgqKiBXaGVuIHBhcnNpbmcgYW4gZXNjYXBlIHNlcXVlbmNlIG9mIHRoZSBmb3JtIFwiXFxcXE5OTlwiIG9yIFwiXFxcXFhYXCIsIHRoaXMgYWNjdW11bGF0ZXNcbiAgICAgICAgdGhlIGNvbXB1dGVkIG51bWJlciAqKVxuICAgIDsgbXV0YWJsZSBlc2NhcGVkX3ZhbHVlIDogaW50ICgqKiBCdWZmZXIgZm9yIGFjY3VtdWxhdGluZyBhdG9tcyAqKVxuICAgIDsgYXRvbV9idWZmZXIgOiBCdWZmZXIudFxuICAgIDsgdXNlcl9zdGF0ZSA6ICd1XG4gICAgOyBtb2RlIDogKCd1LCAncykgTW9kZS50XG4gICAgOyBtdXRhYmxlIGZ1bGxfc2V4cHMgOiBpbnRcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50ICgqKiBnbG9iYWwgb2Zmc2V0ICoqKVxuICAgIDsgbXV0YWJsZSBsaW5lX251bWJlciA6IGludFxuICAgIDsgbXV0YWJsZSBib2xfb2Zmc2V0IDogaW50ICgqKiBvZmZzZXQgb2YgYmVnaW5uaW5nIG9mIGxpbmUgKiopXG4gICAgfVxuZW5kID1cbiAgU3RhdGVcblxuYW5kIE1vZGUgOiBzaWdcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFNpbmdsZVxuICAgIHwgTWFueVxuICAgIHwgRWFnZXIgb2ZcbiAgICAgICAgeyBnb3Rfc2V4cCA6ICgndSwgJ3MpIFN0YXRlLnQgLT4gJ3MgLT4gJ3NcbiAgICAgICAgOyBtdXRhYmxlIG5vX3NleHBfaXNfZXJyb3IgOiBib29sXG4gICAgICAgIH1cbmVuZCA9XG4gIE1vZGVcblxubW9kdWxlIHR5cGUgQXV0b21hdG9uX3N0YXRlID0gc2lnXG4gIG1vZHVsZSBDb250ZXh0ID0gQ29udGV4dFxuICBtb2R1bGUgRm9yX2NzdCA9IEZvcl9jc3RcbiAgbW9kdWxlIEtpbmQgPSBLaW5kXG4gIG1vZHVsZSBNb2RlID0gTW9kZVxuICBtb2R1bGUgU3RhdGUgPSBTdGF0ZVxuXG4gIHR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIFN0YXRlLnRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2luaXRpYWxfcG9zOlBvc2l0aW9ucy5wb3NcbiAgICAtPiAoJ3UsICdzKSBNb2RlLnRcbiAgICAtPiAoJ3UsICdzKSBLaW5kLnRcbiAgICAtPiAoJ3UsICdzKSB0XG5cbiAgdmFsIHJlc2V0IDogP3BvczpQb3NpdGlvbnMucG9zIC0+IF8gdCAtPiB1bml0XG4gIHZhbCBwb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgXykgdCAtPiBQb3NpdGlvbnMudFxuICB2YWwgbW9kZSA6ICgndSwgJ3MpIHQgLT4gKCd1LCAncykgTW9kZS50XG5cbiAgKCoqIE51bWJlciBvZiBjaGFyYWN0ZXJzIGZlZCB0byB0aGUgcGFyc2VyICopXG4gIHZhbCBvZmZzZXQgOiBfIHQgLT4gaW50XG5cbiAgKCoqIFBvc2l0aW9uIGluIHRoZSB0ZXh0ICopXG4gIHZhbCBsaW5lIDogXyB0IC0+IGludFxuXG4gIHZhbCBjb2x1bW4gOiBfIHQgLT4gaW50XG5cbiAgKCoqIFdoZXRoZXIgdGhlcmUgYXJlIHNvbWUgdW5jbG9zZWQgcGFyZW50aGVzZXMgKilcbiAgdmFsIGhhc191bmNsb3NlZF9wYXJlbiA6ICgndSwgJ3MpIHQgLT4gYm9vbFxuXG4gIHZhbCBzZXRfZXJyb3Jfc3RhdGUgOiBfIHQgLT4gdW5pdFxuXG4gICgqKi8qKilcblxuICAoKl8gT25seSBmb3IgY29udmVydGluZyBlcnJvcnMgdG8gdGhlIG9sZCBwYXJzZXIgZXJyb3JzICopXG4gIHZhbCBhdG9tX2J1ZmZlciA6IF8gdCAtPiBCdWZmZXIudFxuXG4gICgqXyBGb3IgY292ZXJhdGUgdGVzdHMgKilcbiAgdmFsIGF1dG9tYXRvbl9zdGF0ZSA6ICgndSwgJ3MpIHQgLT4gaW50XG4gIHZhbCBjb250ZXh0IDogXyB0IC0+IENvbnRleHQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXV0b21hdG9uX3N0YXRlX2ludGZcblxudHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgU3RhdGUudFxuXG5vcGVuIFN0YXRlXG5cbmxldCBpbml0aWFsX3VzZXJfc3RhdGUgOiB0eXBlIHUgcy4gKHUsIHMpIEtpbmQudCAtPiBQb3NpdGlvbnMucG9zIC0+IHUgPVxuICBmdW4ga2luZCBpbml0aWFsX3BvcyAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuY3JlYXRlIH5pbml0aWFsX3BvcyAoKVxuICB8IFNleHAgLT4gKClcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmNyZWF0ZSB+aW5pdGlhbF9wb3MgKClcbiAgfCBDc3QgLT5cbiAgICAoKiBbdG9rZW5fc3RhcnRfcG9zXSBpcyBzZXQgdG8gYSBkdW1teSBsb2NhdGlvbiBoZXJlLiBJdCBpcyBwcm9wZXJseSBzZXQgd2hlbiB3ZVxuICAgICAgIHN0YXJ0IHRvIGNhcHR1cmUgYSB0b2tlbiBmcm9tIHRoZSBpbnB1dCAqKVxuICAgIHsgdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAxMjg7IHRva2VuX3N0YXJ0X3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSB9XG47O1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3N0YXRlLnByaW50X2NvbnN0YW50cyAoKSAqKVxubGV0IGluaXRpYWxfc3RhdGUgPSAwXG5sZXQgZXJyb3Jfc3RhdGUgPSAxXG5cbigqJCopXG5cbmxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSkgbW9kZSBraW5kID1cbiAgeyBraW5kXG4gIDsgZGVwdGggPSAwXG4gIDsgYXV0b21hdG9uX3N0YXRlID0gaW5pdGlhbF9zdGF0ZVxuICA7IGJsb2NrX2NvbW1lbnRfZGVwdGggPSAwXG4gIDsgaWdub3Jpbmdfc3RhY2sgPSBbXVxuICA7IGVzY2FwZWRfdmFsdWUgPSAwXG4gIDsgYXRvbV9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDEyOFxuICA7IHVzZXJfc3RhdGUgPSBpbml0aWFsX3VzZXJfc3RhdGUga2luZCBpbml0aWFsX3Bvc1xuICA7IG1vZGVcbiAgOyBmdWxsX3NleHBzID0gMFxuICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICA7IGxpbmVfbnVtYmVyID0gaW5pdGlhbF9wb3MubGluZVxuICA7IGJvbF9vZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXQgLSBpbml0aWFsX3Bvcy5jb2xcbiAgfVxuOztcblxubGV0IG1vZGUgdCA9IHQubW9kZVxubGV0IHBvc2l0aW9ucyB0ID0gUG9zaXRpb25zLkJ1aWxkZXIuY29udGVudHMgdC51c2VyX3N0YXRlXG5sZXQgYXRvbV9idWZmZXIgdCA9IHQuYXRvbV9idWZmZXJcbmxldCBvZmZzZXQgc3RhdGUgPSBzdGF0ZS5vZmZzZXRcbmxldCBsaW5lIHN0YXRlID0gc3RhdGUubGluZV9udW1iZXJcbmxldCBjb2x1bW4gc3RhdGUgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG5sZXQgcG9zaXRpb24gdCA9IHsgUG9zaXRpb25zLmNvbCA9IGNvbHVtbiB0OyBsaW5lID0gbGluZSB0OyBvZmZzZXQgPSBvZmZzZXQgdCB9XG5cbmxldCByZXNldF91c2VyX3N0YXRlIDogdHlwZSB1IHMuICh1LCBzKSB0IC0+IHVuaXQgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5yZXNldCB0LnVzZXJfc3RhdGUgKHBvc2l0aW9uIHQpXG4gIHwgU2V4cCAtPiAoKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIucmVzZXQgdC51c2VyX3N0YXRlIChwb3NpdGlvbiB0KVxuICB8IENzdCAtPiBCdWZmZXIuY2xlYXIgdC51c2VyX3N0YXRlLnRva2VuX2J1ZmZlclxuOztcblxubGV0IHJlc2V0ID8ocG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlKSB0ID1cbiAgdC5kZXB0aCA8LSAwO1xuICB0LmF1dG9tYXRvbl9zdGF0ZSA8LSBpbml0aWFsX3N0YXRlO1xuICB0LmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gMDtcbiAgdC5pZ25vcmluZ19zdGFjayA8LSBbXTtcbiAgdC5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIHQuZnVsbF9zZXhwcyA8LSAwO1xuICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICB0LmxpbmVfbnVtYmVyIDwtIHBvcy5saW5lO1xuICB0LmJvbF9vZmZzZXQgPC0gcG9zLm9mZnNldCAtIHBvcy5jb2w7XG4gIHJlc2V0X3VzZXJfc3RhdGUgdDtcbiAgQnVmZmVyLmNsZWFyIHQuYXRvbV9idWZmZXJcbjs7XG5cbmxldCBjb250ZXh0IHN0YXRlIDogQ29udGV4dC50ID1cbiAgbWF0Y2ggc3RhdGUuaWdub3Jpbmdfc3RhY2sgd2l0aFxuICB8IF8gOjogXyAtPiBTZXhwX2NvbW1lbnRcbiAgfCBbXSAtPiBTZXhwXG47O1xuXG5sZXQgaGFzX3VuY2xvc2VkX3BhcmVuIHN0YXRlID0gc3RhdGUuZGVwdGggPiAwXG5sZXQgc2V0X2Vycm9yX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIGVycm9yX3N0YXRlXG5sZXQgYXV0b21hdG9uX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFJlYXNvbiA9IHN0cnVjdFxuICAoKl8gU29tZSBvZiB0aGVzZSBjb21lIGZyb20gW1BhcnNleHBfc3ltYm9saWNfYXV0b21hdG9uLlBhcnNlX2Vycm9yX3JlYXNvbl0uICopXG4gIHR5cGUgdCA9XG4gICAgKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX3BhcnNlX2Vycm9yLnByaW50X2NvbnN0cnVjdG9ycyAoKSAqKVxuICAgIHwgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b21cbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG4gICAgfCBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxuICAgIHwgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbiAgICAoKiQqKVxuICAgIHwgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkXG4gICAgfCBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0XG4gICAgfCBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwXG4gICAgfCBUb29fbWFueV9zZXhwc1xuICAgIHwgVW5jbG9zZWRfcGFyZW5cbmVuZFxuXG5tb2R1bGUgdHlwZSBQYXJzZV9lcnJvciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcG9zaXRpb24gOiB0IC0+IFBvc2l0aW9ucy5wb3NcbiAgdmFsIG1lc3NhZ2UgOiB0IC0+IHN0cmluZ1xuXG4gICgqKiBSZXBvcnQgYW4gZXJyb3IgaW4gYSBzdHlsZSBzaW1pbGFyIHRvIE9DYW1sLCBmb3IgaW5zdGFuY2U6XG5cbiAgICAgIEZpbGUgXCJibGFoXCIsIGxpbmUgNDIsIGNoYXJhY3RlciAxMDpcbiAgICAgIEVycm9yOiBzLWV4cHJlc3Npb24gcGFyc2luZyBlcnJvcjtcbiAgICAgIHVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nLlxuICAqKVxuICB2YWwgcmVwb3J0IDogRm9ybWF0LmZvcm1hdHRlciAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdCAtPiB1bml0XG5cbiAgZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHRcblxuICAoKiovKiopXG5cbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgICAoKiogVG8gbWF0Y2ggdGhlIG9sZCBiZWhhdmlvciwgdGhlIG9sZCBwYXJzZXIgc29tZXRpbWVzIHJhaXNlZCBbRmFpbHVyZV0gYW5kIHNvbWV0aW1lc1xuICAgICAgICByYWlzZWQgW1BhcnNlX2Vycm9yXSAqKVxuICAgIHZhbCBvbGRfcGFyc2VyX2V4biA6IHQgLT4gWyBgUGFyc2VfZXJyb3IgfCBgRmFpbHVyZSBdXG5cbiAgICB2YWwgcmFpc2UgOiBSZWFzb24udCAtPiBQb3NpdGlvbnMucG9zIC0+IGF0X2VvZjpib29sIC0+IGF0b21fYnVmZmVyOkJ1ZmZlci50IC0+ICdhXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VfZXJyb3JfaW50ZlxuXG50eXBlIHQgPVxuICB7IHBvc2l0aW9uIDogUG9zaXRpb25zLnBvc1xuICA7IG1lc3NhZ2UgOiBzdHJpbmdcbiAgOyBvbGRfcGFyc2VyX2V4biA6IFsgYFBhcnNlX2Vycm9yIHwgYEZhaWx1cmUgXVxuICB9XG5cbmxldCBzZXhwX29mX3QgeyBwb3NpdGlvbjsgbWVzc2FnZTsgb2xkX3BhcnNlcl9leG4gPSBfIH0gOiBTZXhwLnQgPVxuICBMaXN0XG4gICAgWyBMaXN0IFsgQXRvbSBcInBvc2l0aW9uXCI7IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBwb3NpdGlvbiBdXG4gICAgOyBMaXN0IFsgQXRvbSBcIm1lc3NhZ2VcIjsgc2V4cF9vZl9zdHJpbmcgbWVzc2FnZSBdXG4gICAgXVxuOztcblxubGV0IHBvc2l0aW9uIHQgPSB0LnBvc2l0aW9uXG5sZXQgbWVzc2FnZSB0ID0gdC5tZXNzYWdlXG5sZXQgb2xkX3BhcnNlcl9leG4gdCA9IHQub2xkX3BhcnNlcl9leG5cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgcG9zID0gcG9zaXRpb24gdCBpblxuICBsZXQgbXNnID0gbWVzc2FnZSB0IGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlciAlZDpcXG5FcnJvcjogcy1leHByZXNzaW9uIHBhcnNpbmcgZXJyb3I7XFxuJXNcXG5cIlxuICAgIGZpbGVuYW1lXG4gICAgcG9zLmxpbmVcbiAgICBwb3MuY29sXG4gICAgbXNnXG47O1xuXG5leGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBhcnNlX2Vycm9yLm1sLlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmFpc2UgKHJlYXNvbiA6IFJlYXNvbi50KSBwb3NpdGlvbiB+YXRfZW9mIH5hdG9tX2J1ZmZlciA9XG4gIGxldCBtZXNzYWdlID1cbiAgICAoKiBUaGVzZSBtZXNzYWdlcyB3aGVyZSBjaG9vc2VuIHN1Y2ggdGhhdCB3ZSBjYW4gYnVpbGQgdGhlIHZhcmlvdXMgU2V4cGxpYiBwYXJzaW5nXG4gICAgICAgZnVuY3Rpb25zIG9uIHRvcCBvZiBQYXJzZXhwIGFuZCBrZWVwIHRoZSBzYW1lIGV4Y2VwdGlvbnMuXG5cbiAgICAgICBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMsIGEgc2ltcGxlIGxheWVyIG9uIHRvcCBvZiBwYXJzZXhwIHRvIGltcGxlbWVudCB0aGVcbiAgICAgICBzZXhwbGliIEFQSSBpcyBwYXNzaW5nIGFsbCB0aGUgc2V4cGxpYiB0ZXN0cy5cblxuICAgICAgIE5vdGUgdGhhdCBwYXJzZXhwIG1hdGNoZXMgdGhlIHNlbWFudGljIG9mIFNleHAucGFyc2Ugd2hpY2ggaXMgc2xpZ2h0bHlcbiAgICAgICBkaWZmZXJlbnQgZnJvbSB0aGUgb2NhbWxsZXgvb2NhbWx5YWNjIGJhc2VkIHBhcnNlciBvZiBTZXhwbGliLiBUaGUgbGF0dGVyIG9uZVxuICAgICAgIGlzIGxlc3MgdGVzdGVkIGFuZCBhc3N1bWVkIHRvIGJlIGxlc3MgdXNlZC4gKilcbiAgICBtYXRjaCByZWFzb24gd2l0aFxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2VcIlxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiXG4gICAgfCBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZyAtPiBcInVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nXCJcbiAgICB8IFVudGVybWluYXRlZF9ibG9ja19jb21tZW50IC0+IFwidW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnRcIlxuICAgIHwgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZSAtPiBcImVzY2FwZSBzZXF1ZW5jZSBpbiBxdW90ZWQgc3RyaW5nIG91dCBvZiByYW5nZVwiXG4gICAgfCBVbmNsb3NlZF9wYXJlbiAtPiBcInVuY2xvc2VkIHBhcmVudGhlc2VzIGF0IGVuZCBvZiBpbnB1dFwiXG4gICAgfCBUb29fbWFueV9zZXhwcyAtPiBcInMtZXhwcmVzc2lvbiBmb2xsb3dlZCBieSBkYXRhXCJcbiAgICB8IENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZCAtPiBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyOiAnKSdcIlxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tIC0+XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgKEJ1ZmZlci5jb250ZW50cyBhdG9tX2J1ZmZlcikgXCJ8XCJcbiAgICAgIHRoZW4gXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCJcbiAgICAgIGVsc2UgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCJcbiAgICB8IFNleHBfY29tbWVudF93aXRob3V0X3NleHAgLT4gXCJ1bnRlcm1pbmF0ZWQgc2V4cCBjb21tZW50XCJcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyIC0+XG4gICAgICBpZiBhdF9lb2ZcbiAgICAgIHRoZW4gXCJ1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBhZnRlciBjYXJyaWFnZSByZXR1cm5cIlxuICAgICAgZWxzZSBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyIGFmdGVyIGNhcnJpYWdlIHJldHVyblwiXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0IC0+IFwibm8gcy1leHByZXNzaW9uIGZvdW5kIGluIGlucHV0XCJcbiAgICB8IEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUGFyc2VyX2F1dG9tYXRvbjogcGFyc2VyIGlzIGRlYWRcIlxuICBpblxuICBsZXQgb2xkX3BhcnNlcl9leG4gPVxuICAgIG1hdGNoIHJlYXNvbiwgYXRfZW9mIHdpdGhcbiAgICB8IFRvb19tYW55X3NleHBzLCBfIHwgXywgdHJ1ZSAtPiBgRmFpbHVyZVxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tLCBfXG4gICAgICB3aGVuIFN0cmluZy5lcXVhbCAoQnVmZmVyLmNvbnRlbnRzIGF0b21fYnVmZmVyKSBcInxcIiAtPiBgRmFpbHVyZVxuICAgIHwgXyAtPiBgUGFyc2VfZXJyb3JcbiAgaW5cbiAgcmFpc2UgKFBhcnNlX2Vycm9yIHsgcG9zaXRpb247IG1lc3NhZ2U7IG9sZF9wYXJzZXJfZXhuIH0pXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgbGV0IG9sZF9wYXJzZXJfZXhuID0gb2xkX3BhcnNlcl9leG5cbiAgbGV0IHJhaXNlID0gcmFpc2VcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEF1dG9tYXRvbl9zdGF0ZVxub3BlbiBTdGF0ZVxuXG5sZXQgcmFpc2VfZXJyb3IgOiB0eXBlIGEgYi4gKGEsIGIpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IF8gPVxuICBmdW4gc3RhdGUgfmF0X2VvZiByZWFzb24gLT5cbiAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICBQYXJzZV9lcnJvci5Qcml2YXRlLnJhaXNlXG4gICAgcmVhc29uXG4gICAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXJcbiAgICA7IGNvbCA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbiAgICA7IG9mZnNldCA9IHN0YXRlLm9mZnNldFxuICAgIH1cbiAgICB+YXRfZW9mXG4gICAgfmF0b21fYnVmZmVyOnN0YXRlLmF0b21fYnVmZmVyXG47O1xuXG50eXBlIG5vbnJlYyBjb250ZXh0ID0gQXV0b21hdG9uX3N0YXRlLkNvbnRleHQudCA9XG4gIHwgU2V4cF9jb21tZW50XG4gIHwgU2V4cFxuXG5sZXQgY29udGV4dCA9IEF1dG9tYXRvbl9zdGF0ZS5jb250ZXh0XG5cbnR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gJ3MgLT4gJ3NcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbmVuZFxuXG5tb2R1bGUgRXBzaWxvbiA9IHN0cnVjdFxuICB0eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBBdXRvbWF0b25fc3RhdGUudCAtPiAncyAtPiAnc1xuXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmRcblxubGV0IGN1cnJlbnRfcG9zID8oZGVsdGEgPSAwKSBzdGF0ZSA6IFBvc2l0aW9ucy5wb3MgPVxuICBsZXQgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0ICsgZGVsdGEgaW5cbiAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXI7IGNvbCA9IG9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXQ7IG9mZnNldCB9XG47O1xuXG5sZXQgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSB4ID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIHhcbmxldCBhZHZhbmNlIHN0YXRlID0gc3RhdGUub2Zmc2V0IDwtIHN0YXRlLm9mZnNldCArIDFcblxubGV0IGFkdmFuY2VfZW9sIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIGxldCBuZXdsaW5lX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICBzdGF0ZS5vZmZzZXQgPC0gbmV3bGluZV9vZmZzZXQgKyAxO1xuICBzdGF0ZS5ib2xfb2Zmc2V0IDwtIHN0YXRlLm9mZnNldDtcbiAgc3RhdGUubGluZV9udW1iZXIgPC0gc3RhdGUubGluZV9udW1iZXIgKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuYWRkX25ld2xpbmUgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0Om5ld2xpbmVfb2Zmc2V0XG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIFBvc2l0aW9ucy5CdWlsZGVyLmFkZF9uZXdsaW5lIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDpuZXdsaW5lX29mZnNldFxuICB8IF8gLT4gKClcbjs7XG5cbmxldCBibG9ja19jb21tZW50X2RlcHRoIHN0YXRlID0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aFxuXG5sZXQgYWRkX3Rva2VuX2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBhZGRfYXRvbV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYztcbiAgc3RhY2tcbjs7XG5cbmxldCBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBpc19pZ25vcmluZyBzdGF0ZSA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHAgLT4gZmFsc2VcbiAgfCBTZXhwX2NvbW1lbnQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX25vdF9pZ25vcmluZyBzdGF0ZSA9IG5vdCAoaXNfaWdub3Jpbmcgc3RhdGUpXG5cbmxldCBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlID1cbiAgbGV0IGlzX3NpbmdsZSA9XG4gICAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gICAgfCBTaW5nbGUgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBpc19zaW5nbGUgJiYgc3RhdGUuZnVsbF9zZXhwcyA+IDAgJiYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBUb29fbWFueV9zZXhwc1xuOztcblxubGV0IGFkZF9wb3Mgc3RhdGUgfmRlbHRhID1cbiAgUG9zaXRpb25zLkJ1aWxkZXIuYWRkIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDooc3RhdGUub2Zmc2V0ICsgZGVsdGEpXG47O1xuXG5sZXQgYWRkX2ZpcnN0X2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgY2hhcjtcbiAgKCogRm9yIG5vbi1xdW90ZWQgYXRvbXMsIHdlIHNhdmUgYm90aCBwb3NpdGlvbnMgYXQgdGhlIGVuZC4gV2UgY2FuIGFsd2F5cyBkZXRlcm1pbmUgdGhlXG4gICAgIHN0YXJ0IHBvc2l0aW9uIGZyb20gdGhlIGVuZCBwb3NpdGlvbiBhbmQgdGhlIGF0b20gbGVuZ3RoIGZvciBub24tcXVvdGVkIGF0b21zLlxuXG4gICAgIERvaW5nIGl0IHRoaXMgd2F5IGFsbG93cyB1cyB0byBkZXRlY3Qgc2luZ2xlIGNoYXJhY2F0ZXIgYXRvbXMgZm9yIHdoaWNoIHdlIG5lZWQgdG9cbiAgICAgc2F2ZSB0aGUgcG9zaXRpb24gdHdpY2UuICopXG4gIHN0YWNrXG47O1xuXG5sZXQgZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJyMnO1xuICBzdGFja1xuOztcblxubGV0IHN0YXJ0X3F1b3RlZF9zdHJpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGU7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyICdcIic7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG47O1xuXG5sZXQgYWRkX2VzY2FwZWQgc3RhdGUgYyBzdGFjayA9XG4gIGxldCBjJyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnbicgLT4gJ1xcbidcbiAgICB8ICdyJyAtPiAnXFxyJ1xuICAgIHwgJ2InIC0+ICdcXGInXG4gICAgfCAndCcgLT4gJ1xcdCdcbiAgICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1wiJyAtPiBjXG4gICAgfCBfIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xcXFwnO1xuICAgICAgY1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYyc7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xccic7XG4gIHN0YWNrXG47O1xuXG5sZXQgZGVjX3ZhbCBjID0gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG5cbmxldCBoZXhfdmFsIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICB8ICdhJyAuLiAnZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgfCBfIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG47O1xuXG5sZXQgYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBjb21tZW50X2FkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgbHNsIDQpIGxvciBoZXhfdmFsIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfbGFzdF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlIGxzbCA0KSBsb3IgaGV4X3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBvcGVuaW5nIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBzdGF0ZS5kZXB0aCA8LSBzdGF0ZS5kZXB0aCArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIE9wZW4gc3RhY2sgZWxzZSBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICB0aGVuIChcbiAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICBPcGVuIHN0YWNrKVxuICAgIGVsc2Ugc3RhY2tcbiAgfCBDc3QgLT4gT3BlbiAoY3VycmVudF9wb3Mgc3RhdGUsIHN0YWNrKVxuOztcblxubGV0IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZSA9XG4gIFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0XG4gICAgc3RhdGUudXNlcl9zdGF0ZVxuICAgIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG4gICAgOyBjb2wgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG4gICAgOyBvZmZzZXQgPSBzdGF0ZS5vZmZzZXRcbiAgICB9XG47O1xuXG5sZXQgcmVzZXRfcG9zaXRpb25zIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGVcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZVxuICB8IFNleHAgLT4gKClcbiAgfCBDc3QgLT4gKClcbjs7XG5cbmxldCB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhID1cbiAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gIHwgU2luZ2xlIHwgTWFueSAtPiBzdGFja1xuICB8IEVhZ2VyIHsgZ290X3NleHAgPSBmOyBfIH0gLT5cbiAgICAoKiBNb2RpZnkgdGhlIG9mZnNldCBzbyB0aGF0IFtmXSBnZXQgYSBzdGF0ZSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50XG4gICAgICAgcy1leHByZXNzaW9uICopXG4gICAgbGV0IHNhdmVkX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICAgIHN0YXRlLm9mZnNldCA8LSBzdGF0ZS5vZmZzZXQgKyBkZWx0YTtcbiAgICBsZXQgc2F2ZWRfZnVsbF9zZXhwcyA9IHN0YXRlLmZ1bGxfc2V4cHMgaW5cbiAgICAobWF0Y2ggZiBzdGF0ZSBzdGFjayB3aXRoXG4gICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gICAgICAgcmFpc2UgZVxuICAgICB8IHN0YWNrIC0+XG4gICAgICAgKCogVGhpcyBhc3NlcnQgaXMgbm90IGEgZnVsbCBwcm90ZWN0aW9uIGFnYWluc3QgdGhlIHVzZXIgbXV0YXRpbmcgdGhlIHN0YXRlIGJ1dFxuICAgICAgICAgIGl0IHNob3VsZCBjYXRjaCBtb3N0IGNhc2VzLiAqKVxuICAgICAgIGFzc2VydCAoc3RhdGUub2Zmc2V0ID0gc2F2ZWRfb2Zmc2V0ICsgZGVsdGEgJiYgc3RhdGUuZnVsbF9zZXhwcyA9IHNhdmVkX2Z1bGxfc2V4cHMpO1xuICAgICAgIHN0YXRlLm9mZnNldCA8LSBzYXZlZF9vZmZzZXQ7XG4gICAgICAgcmVzZXRfcG9zaXRpb25zIHN0YXRlO1xuICAgICAgIHN0YWNrKVxuOztcblxubGV0IGlzX3RvcF9sZXZlbCBzdGF0ZSA9IGlzX25vdF9pZ25vcmluZyBzdGF0ZSAmJiBzdGF0ZS5kZXB0aCA9IDBcblxubGV0IGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YSA9XG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZSB0aGVuIHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGEgZWxzZSBzdGFja1xuOztcblxubGV0IG1heWJlX3BvcF9pZ25vcmluZ19zdGFjayBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlLmlnbm9yaW5nX3N0YWNrIHdpdGhcbiAgfCBpbm5lcl9jb21tZW50X2RlcHRoIDo6IF90bCB3aGVuIGlubmVyX2NvbW1lbnRfZGVwdGggPiBzdGF0ZS5kZXB0aCAtPlxuICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cFxuICB8IGlubmVyX2NvbW1lbnRfZGVwdGggOjogdGwgd2hlbiBpbm5lcl9jb21tZW50X2RlcHRoID0gc3RhdGUuZGVwdGggLT5cbiAgICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSB0bDtcbiAgICB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNleHBfYWRkZWQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHMgLT4gZGVsdGE6aW50IC0+IHMgPVxuICBmdW4gc3RhdGUgc3RhY2sgfmRlbHRhIC0+XG4gIGxldCBpc19jb21tZW50ID0gbWF5YmVfcG9wX2lnbm9yaW5nX3N0YWNrIHN0YXRlIGluXG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZVxuICB0aGVuIChcbiAgICBpZiBub3QgaXNfY29tbWVudCB0aGVuIHN0YXRlLmZ1bGxfc2V4cHMgPC0gc3RhdGUuZnVsbF9zZXhwcyArIDE7XG4gICAgaWYgKG5vdCBpc19jb21tZW50KVxuICAgICAgIHx8XG4gICAgICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgICAgfCBDc3QgLT4gdHJ1ZVxuICAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW4gdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YVxuICAgIGVsc2Ugc3RhY2spXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCByZWMgbWFrZV9saXN0IGFjYyA6IEF1dG9tYXRvbl9zdGFjay50IC0+IEF1dG9tYXRvbl9zdGFjay50ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBPcGVuIHN0YWNrIC0+IFNleHAgKExpc3QgYWNjLCBzdGFjaylcbiAgfCBTZXhwIChzZXhwLCBzdGFjaykgLT4gbWFrZV9saXN0IChzZXhwIDo6IGFjYykgc3RhY2tcbjs7XG5cbmxldCBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCAoc3RhY2sgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KVxuICA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPVxuICBtYXRjaCBzdGFjayB3aXRoXG4gIHwgSW5fc2V4cF9jb21tZW50IHIgLT5cbiAgICBJbl9zZXhwX2NvbW1lbnQgeyByIHdpdGggcmV2X2NvbW1lbnRzID0gY29tbWVudCA6OiByLnJldl9jb21tZW50cyB9XG4gIHwgXyAtPiBUX29yX2NvbW1lbnQgKENvbW1lbnQgY29tbWVudCwgc3RhY2spXG47O1xuXG5sZXQgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgSW5fc2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgcmV2X2NvbW1lbnRzOyBzdGFjayB9IC0+XG4gICAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID1cbiAgICAgICAgU2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgY29tbWVudHMgPSBMaXN0LnJldiByZXZfY29tbWVudHM7IHNleHAgfVxuICAgICAgaW5cbiAgICAgIGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrXG4gICAgfCBzdGFjayAtPiBUX29yX2NvbW1lbnQgKFNleHAgc2V4cCwgc3RhY2spXG47O1xuXG5sZXQgcmVjIG1ha2VfbGlzdF9jc3QgZW5kX3BvcyBhY2MgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgVF9vcl9jb21tZW50ICh0LCBzdGFjaykgLT4gbWFrZV9saXN0X2NzdCBlbmRfcG9zICh0IDo6IGFjYykgc3RhY2tcbiAgICB8IE9wZW4gKHN0YXJ0X3Bvcywgc3RhY2spIC0+XG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gTGlzdCB7IGxvYyA9IHsgc3RhcnRfcG9zOyBlbmRfcG9zIH07IGVsZW1lbnRzID0gYWNjIH0gaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gICAgfCBFbXB0eSB8IEluX3NleHBfY29tbWVudCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxubGV0IGNsb3NpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGlmIHN0YXRlLmRlcHRoID4gMFxuICB0aGVuIChcbiAgICBsZXQgc3RhY2sgOiBzID1cbiAgICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgICAgKCogTm90ZSB3ZSBzdG9yZSBlbmQgcG9zaXRpb25zIGFzIGluY2x1c2l2ZSBpbiBbUG9zaXRpb25zLnRdLCBzbyB3ZSB1c2UgW2RlbHRhOjBdLFxuICAgICAgICAgICB3aGlsZSBpbiB0aGUgW0NzdF0gY2FzZSB3ZSBzYXZlIGRpcmVjdGx5IHRoZSBmaW5hbCByYW5nZXMsIHNvIHdlIHVzZVxuICAgICAgICAgICBbZGVsdGE6MV0uICopXG4gICAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgIHN0YWNrXG4gICAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gbWFrZV9saXN0IFtdIHN0YWNrIGVsc2Ugc3RhY2tcbiAgICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgICBtYWtlX2xpc3QgW10gc3RhY2spXG4gICAgICAgIGVsc2Ugc3RhY2tcbiAgICAgIHwgQ3N0IC0+IG1ha2VfbGlzdF9jc3QgKGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YToxKSBbXSBzdGFja1xuICAgIGluXG4gICAgc3RhdGUuZGVwdGggPC0gc3RhdGUuZGVwdGggLSAxO1xuICAgIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gIGVsc2UgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWRcbjs7XG5cbmxldCBtYWtlX2xvYyA/KGRlbHRhID0gMCkgKHN0YXRlIDogKEF1dG9tYXRvbl9zdGF0ZS5Gb3JfY3N0LnQsIF8pIEF1dG9tYXRvbl9zdGF0ZS50KVxuICA6IFBvc2l0aW9ucy5yYW5nZVxuICA9XG4gIHsgc3RhcnRfcG9zID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3M7IGVuZF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGEgfVxuOztcblxuKCogVGhpcyBpcyBhbHdheXMgY2FsbGVkIG9uIHRoZSBwb3NpdGlvbiBleGFjdGx5IGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYVxuICAgbm9uLXF1b3RlZCBhdG9tICopXG5sZXQgYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b20gPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBhdG9tIGluXG4gIGlmIGxlbiA9IDFcbiAgdGhlbiBQb3NpdGlvbnMuQnVpbGRlci5hZGRfdHdpY2Ugc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0OihzdGF0ZS5vZmZzZXQgLSAxKVxuICBlbHNlIChcbiAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTooLWxlbik7XG4gICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKSlcbjs7XG5cbmxldCBlcHNfcHVzaF9hdG9tIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbTpzdHI7XG4gICAgICBzdGFja1xuICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBTZXhwIChBdG9tIHN0ciwgc3RhY2spIGVsc2Ugc3RhY2tcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tOnN0cjtcbiAgICAgICAgU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICB8IENzdCAtPlxuICAgICAgbGV0IGxvYyA6IFBvc2l0aW9ucy5yYW5nZSA9XG4gICAgICAgIHsgc3RhcnRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgICAgIDsgZW5kX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTowXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gQXRvbSB7IGxvYzsgYXRvbSA9IHN0cjsgdW5lc2NhcGVkID0gU29tZSBzdHIgfSBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MFxuOztcblxubGV0IHB1c2hfcXVvdGVkX2F0b20gOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgc3RhY2tcbiAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSBlbHNlIHN0YWNrXG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICBTZXhwIChBdG9tIHN0ciwgc3RhY2spKVxuICAgICAgZWxzZSBzdGFja1xuICAgIHwgQ3N0IC0+XG4gICAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1wiJztcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPVxuICAgICAgICBBdG9tIHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGF0b20gPSBzdHI7IHVuZXNjYXBlZCA9IFNvbWUgcyB9XG4gICAgICBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MVxuOztcblxubGV0IHN0YXJ0X3NleHBfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSBzdGF0ZS5kZXB0aCA6OiBzdGF0ZS5pZ25vcmluZ19zdGFjaztcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgSW5fc2V4cF9jb21tZW50XG4gICAgICB7IGhhc2hfc2VtaV9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTsgcmV2X2NvbW1lbnRzID0gW107IHN0YWNrIH1cbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfYmxvY2tfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIDwtIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGlmIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPSAxXG4gICAgdGhlbiAoXG4gICAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciAnIycpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG47O1xuXG5sZXQgZW5kX2Jsb2NrX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA8LSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIC0gMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgaWYgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA9IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPVxuICAgICAgICBQbGFpbl9jb21tZW50IHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGNvbW1lbnQgPSBzIH1cbiAgICAgIGluXG4gICAgICBsZXQgc3RhY2sgPSBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFjayBpblxuICAgICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gICAgZWxzZSBzdGFja1xuOztcblxubGV0IHN0YXJ0X2xpbmVfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IGVuZF9saW5lX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBtYWtlX2xvYyBzdGF0ZTsgY29tbWVudCA9IHMgfSBpblxuICAgIGxldCBzdGFjayA9IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrIGluXG4gICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjBcbjs7XG5cbmxldCBlcHNfZW9pX2NoZWNrIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgaWYgc3RhdGUuZGVwdGggPiAwIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIFVuY2xvc2VkX3BhcmVuO1xuICBpZiBpc19pZ25vcmluZyBzdGF0ZSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwO1xuICBpZiBzdGF0ZS5mdWxsX3NleHBzID0gMFxuICB0aGVuIChcbiAgICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgICB8IE1hbnkgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZTsgXyB9IC0+ICgpXG4gICAgfCBTaW5nbGUgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSB0cnVlOyBfIH0gLT5cbiAgICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBOb19zZXhwX2ZvdW5kX2luX2lucHV0KTtcbiAgc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgfCBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gIHwgUGFyc2luZ19hdG9tXG4gIHwgUGFyc2luZ19saXN0XG4gIHwgUGFyc2luZ19zZXhwX2NvbW1lbnRcbiAgfCBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXCJcbiAgICB8IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVwiXG4gICAgfCBQYXJzaW5nX2F0b20gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19hdG9tXCJcbiAgICB8IFBhcnNpbmdfbGlzdCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2xpc3RcIlxuICAgIHwgUGFyc2luZ19zZXhwX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19zZXhwX2NvbW1lbnRcIlxuICAgIHwgUGFyc2luZ19ibG9ja19jb21tZW50IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfYmxvY2tfY29tbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIG1hdGNoIHNleHBfb2ZfdCB0IHdpdGhcbiAgfCBBdG9tIHMgLT4gc1xuICB8IExpc3QgXyAtPiBmYWlsd2l0aCBcIkJVRzogW3NleHBfb2ZfdF0gcmV0dXJuZWQgYSBbTGlzdCBfXVwiXG47O1xuIiwib3BlbiBBdXRvbWF0b25fYWN0aW9uXG5cbmxldCByYWlzZSA9IEF1dG9tYXRvbl9hY3Rpb24ucmFpc2VfZXJyb3JcblxudHlwZSB1J1xudHlwZSBzJ1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3RhYmxlcy5wcmludF9jb2RlICgpICopXG5sZXQgdHJfMDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2ZpcnN0X2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAwX2YgfVxuXG5sZXQgdHJfMDFfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDFfZiB9XG5cbmxldCB0cl8wMl9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDJfZiB9XG5cbmxldCB0cl8wM19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wM19mIH1cblxubGV0IHRyXzA0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA0X2YgfVxuXG5sZXQgdHJfMDVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDVfZiB9XG5cbmxldCB0cl8wNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNl9mIH1cblxubGV0IHRyXzA3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA3X2YgfVxuXG5sZXQgdHJfMDhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOF9mIH1cblxubGV0IHRyXzA5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9maXJzdF9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOV9mIH1cbmxldCB0cl8xMF9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPSByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbmxldCB0cl8xMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTBfZiB9XG5sZXQgdHJfMTFfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID0gcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbmxldCB0cl8xMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTFfZiB9XG5cbmxldCB0cl8xMl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzEyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMl9mIH1cblxubGV0IHRyXzEzX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTNfZiB9XG5cbmxldCB0cl8xNF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNF9mIH1cblxubGV0IHRyXzE1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTVfZiB9XG5cbmxldCB0cl8xNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE2X2YgfVxuXG5sZXQgdHJfMTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTdfZiB9XG5cbmxldCB0cl8xOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE4X2YgfVxuXG5sZXQgdHJfMTlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xOV9mIH1cblxubGV0IHRyXzIwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMF9mIH1cblxubGV0IHRyXzIxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIxX2YgfVxuXG5sZXQgdHJfMjJfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tXG47O1xuXG5sZXQgdHJfMjIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIyX2YgfVxuXG5sZXQgdHJfMjNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIzX2YgfVxuXG5sZXQgdHJfMjRfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjRfZiB9XG5cbmxldCB0cl8yNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI1X2YgfVxuXG5sZXQgdHJfMjZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjZfZiB9XG5cbmxldCB0cl8yN19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI3X2YgfVxuXG5sZXQgdHJfMjhfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjhfZiB9XG5cbmxldCB0cl8yOV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI5X2YgfVxuXG5sZXQgdHJfMzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMF9mIH1cblxubGV0IHRyXzMxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMxX2YgfVxuXG5sZXQgdHJfMzJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMl9mIH1cblxubGV0IHRyXzMzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzNfZiB9XG5cbmxldCB0cl8zNF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9zZXhwX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM0X2YgfVxuXG5sZXQgdHJfMzVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM1X2YgfVxuXG5sZXQgdHJfMzZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM2X2YgfVxuXG5sZXQgdHJfMzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zN19mIH1cblxubGV0IHRyXzM4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM4X2YgfVxuXG5sZXQgdHJfMzlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM5X2YgfVxuXG5sZXQgdHJfNDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2VzY2FwZWQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQwX2YgfVxuXG5sZXQgdHJfNDFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE1O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDFfZiB9XG5cbmxldCB0cl80Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQyX2YgfVxuXG5sZXQgdHJfNDNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQzX2YgfVxuXG5sZXQgdHJfNDRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80NF9mIH1cblxubGV0IHRyXzQ1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDVfZiB9XG5cbmxldCB0cl80Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDZfZiB9XG5cbmxldCB0cl80N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ3X2YgfVxuXG5sZXQgdHJfNDhfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZVxuOztcblxubGV0IHRyXzQ4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OF9mIH1cblxubGV0IHRyXzQ5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OV9mIH1cblxubGV0IHRyXzUwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTBfZiB9XG5cbmxldCB0cl81MV9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlXG47O1xuXG5sZXQgdHJfNTEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUxX2YgfVxuXG5sZXQgdHJfNTJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUyX2YgfVxuXG5sZXQgdHJfNTNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2xhc3RfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81M19mIH1cblxubGV0IHRyXzU0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81NF9mIH1cblxubGV0IHRyXzU1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTVfZiB9XG5cbmxldCB0cl81Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU2X2YgfVxuXG5sZXQgdHJfNTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTdfZiB9XG5cbmxldCB0cl81OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNThfZiB9XG5cbmxldCB0cl81OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU5X2YgfVxuXG5sZXQgdHJfNjBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjBfZiB9XG5cbmxldCB0cl82MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYxX2YgfVxuXG5sZXQgdHJfNjJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82Ml9mIH1cblxubGV0IHRyXzYzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjNfZiB9XG5cbmxldCB0cl82NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgKGlmIGJsb2NrX2NvbW1lbnRfZGVwdGggc3RhdGUgPD4gMCB0aGVuIDE2IGVsc2UgMCk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY0X2YgfVxuXG5sZXQgdHJfNjVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjVfZiB9XG5cbmxldCB0cl82Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY2X2YgfVxuXG5sZXQgdHJfNjdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjdfZiB9XG5cbmxldCB0cl82OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY4X2YgfVxuXG5sZXQgdHJfNjlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY5X2YgfVxuXG5sZXQgdHJfNzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83MF9mIH1cblxubGV0IHRyXzcxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzFfZiB9XG5cbmxldCB0cl83Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcyX2YgfVxuXG5sZXQgdHJfNzNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzczIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83M19mIH1cblxubGV0IHRyXzc0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83NF9mIH1cblxubGV0IHRyXzc1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNvbW1lbnRfYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzVfZiB9XG5cbmxldCB0cl83Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc2X2YgfVxuXG5sZXQgdHJfNzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83N19mIH1cblxubGV0IHRyXzc4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc4X2YgfVxubGV0IHRyX2VvaV8wMF9mIHN0YXRlIHN0YWNrID0gZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xubGV0IHRyX2VvaV8wMCA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDBfZiB9XG5sZXQgdHJfZW9pXzAxX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxubGV0IHRyX2VvaV8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDFfZiB9XG5sZXQgdHJfZW9pXzAyX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG5sZXQgdHJfZW9pXzAyIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMl9mIH1cblxubGV0IHRyX2VvaV8wM19mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzAzIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wM19mIH1cblxubGV0IHRyX2VvaV8wNF9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA0IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNF9mIH1cblxubGV0IHRyX2VvaV8wNV9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA1IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNV9mIH1cbmxldCB0cl9lb2lfMDZfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbmxldCB0cl9lb2lfMDYgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA2X2YgfVxubGV0IHRyX2VvaV8wN19mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxubGV0IHRyX2VvaV8wNyA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDdfZiB9XG5cbmxldCB0cmFuc2l0aW9ucyA9XG4gIFt8IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAyXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAzXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAwXG4gICA7IHRyXzA0XG4gICA7IHRyXzA1XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA2XG4gICA7IHRyXzA3XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA4XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA5XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzAyXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI0XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI1XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI4XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI5XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI2XG4gICA7IHRyXzMwXG4gICA7IHRyXzMxXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzMyXG4gICA7IHRyXzMzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM0XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM1XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM3XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM4XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM5XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQxXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQyXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ0XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQxXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ2XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ3XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU2XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU0XG4gICA7IHRyXzU3XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU4XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzY0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzM1XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY1XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY2XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY3XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY4XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcwXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzY3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzc4XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gIHxdXG47O1xuXG5sZXQgdHJhbnNpdGlvbnNfZW9pID1cbiAgW3wgdHJfZW9pXzAwXG4gICA7IHRyX2VvaV8wMVxuICAgOyB0cl9lb2lfMDJcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzA0XG4gICA7IHRyX2VvaV8wNVxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgfF1cbjs7XG5cbmxldCBvbGRfcGFyc2VyX2FwcHJveF9jb250X3N0YXRlcyA6IE9sZF9wYXJzZXJfY29udF9zdGF0ZS50IGFycmF5ID1cbiAgW3wgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gIHxdXG47O1xuKCokKilcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN0YWNrID0gQXV0b21hdG9uX3N0YWNrXG5pbmNsdWRlIEF1dG9tYXRvbl9zdGF0ZVxuXG5sZXQgZmVlZCAodHlwZSB1IHMpIChzdGF0ZSA6ICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCkgY2hhciAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgaWR4ID0gKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSBsc2wgOCkgbG9yIENoYXIuY29kZSBjaGFyIGluXG4gIEF1dG9tYXRvbl90YWJsZXMudHJhbnNpdGlvbnMuKGlkeCkuZiBzdGF0ZSBjaGFyIHN0YWNrXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGZlZWRfZW9pICh0eXBlIHUgcykgKHN0YXRlIDogKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50KSAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgc3RhY2sgPSBBdXRvbWF0b25fdGFibGVzLnRyYW5zaXRpb25zX2VvaS4oYXV0b21hdG9uX3N0YXRlIHN0YXRlKS5mIHN0YXRlIHN0YWNrIGluXG4gIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCBvbGRfcGFyc2VyX2NvbnRfc3RhdGUgc3RhdGUgOiBPbGRfcGFyc2VyX2NvbnRfc3RhdGUudCA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHBfY29tbWVudCAtPiBQYXJzaW5nX3NleHBfY29tbWVudFxuICB8IFNleHAgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIEF1dG9tYXRvbl90YWJsZXMub2xkX3BhcnNlcl9hcHByb3hfY29udF9zdGF0ZXMuKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSlcbiAgICAgICAsIGhhc191bmNsb3NlZF9wYXJlbiBzdGF0ZSApXG4gICAgIHdpdGhcbiAgICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIHRydWUgLT4gUGFyc2luZ19saXN0XG4gICAgIHwgcywgXyAtPiBzKVxuOztcblxubGV0IHJlYyBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIGkgc3RvcCA9XG4gIGlmIGkgPCBzdG9wXG4gIHRoZW4gKFxuICAgIGxldCBjID0gU3RyaW5nLnVuc2FmZV9nZXQgc3RyIGkgaW5cbiAgICBsZXQgc3RhY2sgPSBmZWVkIHN0YXRlIGMgc3RhY2sgaW5cbiAgICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IHJlYyBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgaSBzdG9wID1cbiAgaWYgaSA8IHN0b3BcbiAgdGhlbiAoXG4gICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IHN0ciBpIGluXG4gICAgbGV0IHN0YWNrID0gZmVlZCBzdGF0ZSBjIHN0YWNrIGluXG4gICAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IGZlZWRfc3Vic3RyaW5nIHN0YXRlIHN0ciB+cG9zIH5sZW4gc3RhY2sgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3Vic3RyaW5nXCI7XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgcG9zIChwb3MgKyBsZW4pXG47O1xuXG5sZXQgZmVlZF9zdWJieXRlcyBzdGF0ZSBzdHIgfnBvcyB+bGVuIHN0YWNrID1cbiAgbGV0IHN0cl9sZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3ViYnl0ZXNcIjtcbiAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIHBvcyAocG9zICsgbGVuKVxuOztcblxubGV0IGZlZWRfc3RyaW5nIHN0YXRlIHN0ciBzdGFjayA9XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG47O1xuXG5sZXQgZmVlZF9ieXRlcyBzdGF0ZSBzdHIgc3RhY2sgPSBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoQnl0ZXMubGVuZ3RoIHN0cilcblxubGV0IGVtcHR5X3N0YWNrIDogdHlwZSB1IHMuICh1LCBzKSBLaW5kLnQgLT4gcyA9IGZ1bmN0aW9uXG4gIHwgU2V4cCAtPiBTdGFjay5lbXB0eVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gU3RhY2suZW1wdHlcbiAgfCBQb3NpdGlvbnMgLT4gU3RhY2suSnVzdF9wb3NpdGlvbnMuZW1wdHlcbiAgfCBDc3QgLT4gU3RhY2suRm9yX2NzdC5lbXB0eVxuOztcblxubGV0IG9mX3N1YnN0cmluZyAodHlwZSB1IHMpIChtb2RlIDogKHUsIHMpIE1vZGUudCkgKGtpbmQgOiAodSwgcykgS2luZC50KSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzdGF0ZSA9IGNyZWF0ZSBtb2RlIGtpbmQgaW5cbiAgbGV0IHN0YWNrID0gZmVlZF9zdWJzdHJpbmcgc3RhdGUgcyB+cG9zIH5sZW4gKGVtcHR5X3N0YWNrIGtpbmQpIGluXG4gIHN0YXRlLCBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IHVzZXJfZXhuIDogZXhuXG4gIDsgc3ViX3NleHAgOiBTZXhwLnRcbiAgOyBsb2NhdGlvbiA6IFBvc2l0aW9ucy5yYW5nZSBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuIHsgdXNlcl9leG4gPSB1c2VyX2V4bl9fMDAyXzsgc3ViX3NleHAgPSBzdWJfc2V4cF9fMDA0XzsgbG9jYXRpb24gPSBsb2NhdGlvbl9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY2F0aW9uX18wMDZfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY2F0aW9uXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDVfID0gU2V4cC5zZXhwX29mX3Qgc3ViX3NleHBfXzAwNF8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3ViX3NleHBcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2V4biB1c2VyX2V4bl9fMDAyXyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ1c2VyX2V4blwiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAxX1xuICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHVzZXJfZXhuIHQgPSB0LnVzZXJfZXhuXG5sZXQgc3ViX3NleHAgdCA9IHQuc3ViX3NleHBcbmxldCBsb2NhdGlvbiB0ID0gdC5sb2NhdGlvblxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBsaW5lLCBzdGFydCwgc3RvcCA9XG4gICAgbWF0Y2ggdC5sb2NhdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IDEsIDAsIDBcbiAgICB8IFNvbWUgeyBzdGFydF9wb3M7IGVuZF9wb3MgfSAtPlxuICAgICAgc3RhcnRfcG9zLmxpbmUsIHN0YXJ0X3Bvcy5jb2wsIHN0YXJ0X3Bvcy5jb2wgKyBlbmRfcG9zLm9mZnNldCAtIHN0YXJ0X3Bvcy5vZmZzZXRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICBFcnJvcjogcy1leHByZXNzaW9uIGNvbnZlcnNpb24gZXJyb3I7XFxuXFxcbiAgICAgZXhjZXB0aW9uICVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIGxpbmVcbiAgICBzdGFydFxuICAgIHN0b3BcbiAgICAoU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIHQudXNlcl9leG4pXG47O1xuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwOF8gLT5cbiAgICAgIGxldCByZXMwX18wMDlfID0gc2V4cF9vZl90IGFyZzBfXzAwOF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mX3NleHBfZXJyb3IubWwuT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDlfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIH51c2VyX2V4biB+c3ViX3NleHAgfmxvY2F0aW9uID1cbiAgcmFpc2UgKE9mX3NleHBfZXJyb3IgeyB1c2VyX2V4bjsgc3ViX3NleHA7IGxvY2F0aW9uIH0pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2VfZXJyb3Igb2YgUGFyc2VfZXJyb3IudFxuICB8IE9mX3NleHBfZXJyb3Igb2YgT2Zfc2V4cF9lcnJvci50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBQYXJzZV9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwM18gLT5cbiAgICAgIGxldCByZXMwX18wMDRfID0gT2Zfc2V4cF9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDRfIF1cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFBhcnNlX2Vycm9yIGUgLT4gUGFyc2VfZXJyb3IucmVwb3J0IHBwZiB+ZmlsZW5hbWUgZVxuICB8IE9mX3NleHBfZXJyb3IgZSAtPiBPZl9zZXhwX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VyX2ludGZcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmxldCBraW5kX3RvX3N0YWNrXG4gIDogdHlwZSBzdGFjay5cbiAgICAoJ3N0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLktpbmQudCAtPiAobW9kdWxlIFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gID1cbiAgZnVuICh0eXBlIHN0YXRlKSAoa2luZCA6IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQpIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFNleHAgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFBvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5KdXN0X3Bvc2l0aW9ucyA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjayA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgQ3N0IC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuOztcblxubGV0IG1ha2UgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1vZGUgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgU1xuICAgICAgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuICAgICAgIGFuZCB0eXBlIFN0YXRlLnQgPSAoc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUudFxuICAgICAgIGFuZCB0eXBlIFN0YWNrLnQgPSBzdGFjaylcbiAgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuXG4gICAgbW9kdWxlIFN0YWNrID0gKHZhbCBraW5kX3RvX3N0YWNrIGtpbmQgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyAoKSA9IEEuY3JlYXRlID9pbml0aWFsX3Bvczpwb3MgbW9kZSBraW5kXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgb2Zmc2V0ID0gQS5vZmZzZXRcbiAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgbGV0IHBvc2l0aW9uIHQgOiBQb3NpdGlvbnMucG9zID1cbiAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IHN0b3Agc3RhdGUgPSBBLnNldF9lcnJvcl9zdGF0ZSBzdGF0ZVxuICAgIGVuZFxuXG4gICAgbGV0IGZlZWQgPSBBLmZlZWRcbiAgICBsZXQgZmVlZF9lb2kgc3RhdGUgc3RhY2sgPSBtYWtlX3ZhbHVlIHN0YXRlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrKVxuICAgIGxldCBmZWVkX3N1YnN0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N1YnN0cmluZ1xuICAgIGxldCBmZWVkX3N0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N0cmluZ1xuICAgIGxldCBmZWVkX3N1YmJ5dGVzID0gQXV0b21hdG9uLmZlZWRfc3ViYnl0ZXNcbiAgICBsZXQgZmVlZF9ieXRlcyA9IEF1dG9tYXRvbi5mZWVkX2J5dGVzXG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgPVxuICAgICAgbGV0IHN0YXRlID0gU3RhdGUuY3JlYXRlICgpIGluXG4gICAgICBmZWVkX2VvaSBzdGF0ZSAoZmVlZF9zdHJpbmcgc3RhdGUgc3RyIFN0YWNrLmVtcHR5KVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciA9XG4gICAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciB3aXRoXG4gICAgICB8IHggLT4gT2sgeFxuICAgICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciBlXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IG1ha2VfZWFnZXIgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFNfZWFnZXJcbiAgICAgIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcbiAgICAgICBhbmQgdHlwZSBTdGF0ZS50ID0gKHN0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLnRcbiAgICAgICBhbmQgdHlwZSBTdGFjay50ID0gc3RhY2spXG4gID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcblxuICAgIG1vZHVsZSBTdGFjayA9ICh2YWwga2luZF90b19zdGFjayBraW5kIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IEEub2Zmc2V0XG4gICAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICAgIGxldCBjb2x1bW4gPSBBLmNvbHVtblxuXG4gICAgICAgIGxldCBwb3NpdGlvbiB0IDogUG9zaXRpb25zLnBvcyA9XG4gICAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgUmVhZF9vbmx5XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyA/KG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZSkgZiA9XG4gICAgICAgIGxldCBnb3Rfc2V4cCBzdGF0ZSBzdGFjayA9XG4gICAgICAgICAgbGV0IHBhcnNlZF92YWx1ZSA9IG1ha2VfdmFsdWUgc3RhdGUgc3RhY2sgaW5cbiAgICAgICAgICBmIHN0YXRlIHBhcnNlZF92YWx1ZTtcbiAgICAgICAgICBTdGFjay5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBBLmNyZWF0ZSA/aW5pdGlhbF9wb3M6cG9zIChFYWdlciB7IGdvdF9zZXhwOyBub19zZXhwX2lzX2Vycm9yIH0pIGtpbmRcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZXNldCA9IEEucmVzZXRcbiAgICAgIGxldCBzdG9wIHQgPSBBLnNldF9lcnJvcl9zdGF0ZSB0XG4gICAgICBsZXQgb2xkX3BhcnNlcl9jb250X3N0YXRlIHQgPSBBdXRvbWF0b24ub2xkX3BhcnNlcl9jb250X3N0YXRlIHRcbiAgICBlbmRcblxuICAgIGxldCBmZWVkID0gQS5mZWVkXG4gICAgbGV0IGZlZWRfZW9pIHN0YXRlIHN0YWNrID0gaWdub3JlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrIDogU3RhY2sudClcbiAgICBsZXQgZmVlZF9zdWJzdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdWJzdHJpbmdcbiAgICBsZXQgZmVlZF9zdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdHJpbmdcbiAgICBsZXQgZmVlZF9zdWJieXRlcyA9IEF1dG9tYXRvbi5mZWVkX3N1YmJ5dGVzXG4gICAgbGV0IGZlZWRfYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9ieXRlc1xuXG4gICAgbW9kdWxlIExleGJ1Zl9jb25zdW1lciA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gU3RhdGUudFxuXG4gICAgICBleGNlcHRpb24gR290X3NleHAgb2YgcGFyc2VkX3ZhbHVlICogUG9zaXRpb25zLnBvc1xuXG4gICAgICBsZXQgZ290X3NleHAgc3RhdGUgcGFyc2VkX3ZhbHVlID1cbiAgICAgICAgcmFpc2Vfbm90cmFjZSAoR290X3NleHAgKHBhcnNlZF92YWx1ZSwgU3RhdGUucG9zaXRpb24gc3RhdGUpKVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IFN0YXRlLmNyZWF0ZSBnb3Rfc2V4cFxuXG4gICAgICBsZXQgcG9zX29mX2xleGJ1ZiBsZXhidWYgPVxuICAgICAgICBsZXQgcCA9IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCBpblxuICAgICAgICB7IFBvc2l0aW9ucy5saW5lID0gcC5wb3NfbG51bTsgY29sID0gcC5wb3NfY251bSAtIHAucG9zX2JvbDsgb2Zmc2V0ID0gcC5wb3NfY251bSB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdXBkYXRlX2xleGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgKHBvcyA6IFBvc2l0aW9ucy5wb3MpID1cbiAgICAgICAgbGV0IHAgPSBwb3Mub2Zmc2V0IC0gbGV4YnVmLmxleF9hYnNfcG9zIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gcDtcbiAgICAgICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gcDtcbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BcbiAgICAgICAgPC0geyBsZXhidWYubGV4X2N1cnJfcCB3aXRoXG4gICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MubGluZVxuICAgICAgICAgICA7IHBvc19jbnVtID0gcG9zLm9mZnNldFxuICAgICAgICAgICA7IHBvc19ib2wgPSBwb3Mub2Zmc2V0IC0gcG9zLmNvbFxuICAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIGZlZWRfbGV4YnVmIHQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIHN0YWNrID1cbiAgICAgICAgbGV0IHN0YWNrID1cbiAgICAgICAgICBmZWVkX3N1YmJ5dGVzXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlclxuICAgICAgICAgICAgc3RhY2tcbiAgICAgICAgICAgIH5wb3M6bGV4YnVmLmxleF9jdXJyX3Bvc1xuICAgICAgICAgICAgfmxlbjoobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9jdXJyX3BvcylcbiAgICAgICAgaW5cbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbjtcbiAgICAgICAgaWYgbm90IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV4YnVmLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgICAgICBmZWVkX2xleGJ1ZiB0IGxleGJ1ZiBzdGFjaylcbiAgICAgICAgZWxzZSBmZWVkX2VvaSB0IHN0YWNrXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfZ2VuIHQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICAgICAgQS5yZXNldCB0IH5wb3M6KHBvc19vZl9sZXhidWYgbGV4YnVmKTtcbiAgICAgICAgbWF0Y2ggZmVlZF9sZXhidWYgdCBsZXhidWYgU3RhY2suZW1wdHkgd2l0aFxuICAgICAgICB8ICgpIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIE5vbmVcbiAgICAgICAgfCBleGNlcHRpb24gR290X3NleHAgKHBhcnNlZF92YWx1ZSwgcG9zKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIHBvcztcbiAgICAgICAgICBTb21lIHBhcnNlZF92YWx1ZVxuICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiAoU3RhdGUucG9zaXRpb24gdCk7XG4gICAgICAgICAgcmFpc2UgZXhuXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V0X25vX3NleHBfaXNfZXJyb3IgdCB4ID1cbiAgICAgICAgbWF0Y2ggQS5tb2RlIHQgd2l0aFxuICAgICAgICB8IEVhZ2VyIGUgLT4gZS5ub19zZXhwX2lzX2Vycm9yIDwtIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlIHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCB0cnVlO1xuICAgICAgICBtYXRjaCBwYXJzZV9nZW4gdCBsZXhidWYgd2l0aFxuICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAucGFyc2VfZ2VuOiBOb25lXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9vcHQgdCBsZXhidWYgPVxuICAgICAgICBzZXRfbm9fc2V4cF9pc19lcnJvciB0IGZhbHNlO1xuICAgICAgICBwYXJzZV9nZW4gdCBsZXhidWZcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZClcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29udl9pbnRmXG5cbm1vZHVsZSBNYWtlXG4gICAgKE1vZGUgOiBNb2RlKVxuICAgIChTZXhwX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBNb2RlLnBhcnNlZF9zZXhwKVxuICAgIChQb3NpdGlvbnNfcGFyc2VyIDogUGFyc2VyLlMgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IFBvc2l0aW9ucy50KSA9XG5zdHJ1Y3RcbiAgbGV0IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSB+c3ViIHVzZXJfZXhuID1cbiAgICBsZXQgbG9jYXRpb24gPSBNb2RlLmZpbmQgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSB+c3ViIGluXG4gICAgT2Zfc2V4cF9lcnJvci5yYWlzZSB+dXNlcl9leG4gfnN1Yl9zZXhwOnN1YiB+bG9jYXRpb25cbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgZiA9XG4gICAgbGV0IHBhcnNlZF92YWx1ZSA9IFNleHBfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgbWF0Y2ggTW9kZS5hcHBseV9mIHBhcnNlZF92YWx1ZSB+ZiB3aXRoXG4gICAgfCB4IC0+IHhcbiAgICB8IGV4Y2VwdGlvbiBTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc3ViKSAtPlxuICAgICAgbGV0IHBvc2l0aW9ucyA9IFBvc2l0aW9uc19wYXJzZXIucGFyc2Vfc3RyaW5nX2V4biBzdHIgaW5cbiAgICAgIHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBwYXJzZV9zdHJpbmcgc3RyIGYgOiAoXywgQ29udl9lcnJvci50KSByZXN1bHQgPVxuICAgIG1hdGNoIHBhcnNlX3N0cmluZ19leG4gc3RyIGYgd2l0aFxuICAgIHwgeCAtPiBPayB4XG4gICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKVxuICA7O1xuXG4gIGxldCBjb252X2V4biAocGFyc2VkX3ZhbHVlLCBwb3NpdGlvbnMpIGYgPVxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT4gcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIGV4biB+c3ViXG4gIDs7XG5cbiAgbGV0IGNvbnYgeCBmID1cbiAgICBtYXRjaCBjb252X2V4biB4IGYgd2l0aFxuICAgIHwgeCAtPiBPayB4XG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgZVxuICA7O1xuXG4gIGxldCBjb252X2NvbWJpbmUgcmVzdWx0IGYgOiAoXywgQ29udl9lcnJvci50KSByZXN1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBlIC0+IEVycm9yIChQYXJzZV9lcnJvciBlKVxuICAgIHwgT2sgeCAtPlxuICAgICAgKG1hdGNoIGNvbnYgeCBmIHdpdGhcbiAgICAgICB8IE9rIF8gYXMgciAtPiByXG4gICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChPZl9zZXhwX2Vycm9yIGUpKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQ29udiA9IENvbnYuU1xubW9kdWxlIHR5cGUgUGFyc2VyID0gUGFyc2VyLlNcbm1vZHVsZSB0eXBlIEVhZ2VyX3BhcnNlciA9IFBhcnNlci5TX2VhZ2VyXG5cbm1vZHVsZSBDb252X2Vycm9yID0gQ29udl9lcnJvclxubW9kdWxlIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5tb2R1bGUgT2xkX3BhcnNlcl9jb250X3N0YXRlID0gT2xkX3BhcnNlcl9jb250X3N0YXRlXG5tb2R1bGUgUGFyc2VfZXJyb3IgPSBQYXJzZV9lcnJvclxubW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xubW9kdWxlIENzdCA9IENzdFxubW9kdWxlIEEgPSBBdXRvbWF0b25cblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yXG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbm1vZHVsZSBTaW5nbGUgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgU2luZ2xlIChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSkpXG5tb2R1bGUgTWFueSA9ICh2YWwgUGFyc2VyLm1ha2UgU2V4cCBNYW55IChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X21hbnkpKVxubW9kdWxlIEVhZ2VyID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBTZXhwIChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSkpXG5cbmxldCBhbmRfZ2V0X3Bvc2l0aW9ucyBnZXRfc2V4cCBzdGF0ZSBzdGFjayA9IGdldF9zZXhwIHN0YWNrLCBBLnBvc2l0aW9ucyBzdGF0ZVxuXG5sZXQgYW5kX3Bvc2l0aW9ucyBtb2RlIGdldF9zZXhwID1cbiAgUGFyc2VyLm1ha2UgU2V4cF93aXRoX3Bvc2l0aW9ucyBtb2RlIChhbmRfZ2V0X3Bvc2l0aW9ucyBnZXRfc2V4cClcbjs7XG5cbm1vZHVsZSBTaW5nbGVfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBTaW5nbGUgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpXG5tb2R1bGUgTWFueV9hbmRfcG9zaXRpb25zID0gKHZhbCBhbmRfcG9zaXRpb25zIE1hbnkgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfYW5kX3Bvc2l0aW9ucyA9XG4gICh2YWwgUGFyc2VyLm1ha2VfZWFnZXJcbiAgICAgICAgIFNleHBfd2l0aF9wb3NpdGlvbnNcbiAgICAgICAgIChBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSB8PiBhbmRfZ2V0X3Bvc2l0aW9ucykpXG5cbmxldCBqdXN0X2dldF9wb3NpdGlvbnMgc3RhdGUgKCkgPSBBLnBvc2l0aW9ucyBzdGF0ZVxubGV0IGp1c3RfcG9zaXRpb25zIG1vZGUgPSBQYXJzZXIubWFrZSBQb3NpdGlvbnMgbW9kZSBqdXN0X2dldF9wb3NpdGlvbnNcblxubW9kdWxlIFNpbmdsZV9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwganVzdF9wb3NpdGlvbnMgU2luZ2xlKVxubW9kdWxlIE1hbnlfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIE1hbnkpXG5tb2R1bGUgRWFnZXJfanVzdF9wb3NpdGlvbnMgPSAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIFBvc2l0aW9ucyBqdXN0X2dldF9wb3NpdGlvbnMpXG5cbmxldCBjc3QgbW9kZSBmID0gUGFyc2VyLm1ha2UgQ3N0IG1vZGUgKGNvbnN0IGYpXG5cbm1vZHVsZSBNYW55X2NzdCA9ICh2YWwgY3N0IE1hbnkgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnkpXG5cbm1vZHVsZSBFYWdlcl9jc3QgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIENzdCAoZnVuIF8gc3RhY2sgLT5cbiAgICAgbWF0Y2ggQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnkgc3RhY2sgd2l0aFxuICAgICB8IFsgc2V4cCBdIC0+IHNleHBcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG5cbnR5cGUgJ2EgaWQgPSAnYVxudHlwZSBzZXhwX2xpc3QgPSBTZXhwLnQgbGlzdFxuXG5tb2R1bGUgQ29udl9zaW5nbGUgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhXG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnRcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IGYgeFxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9waHlzXG4gICAgZW5kKVxuICAgIChTaW5nbGUpXG4gICAgKFNpbmdsZV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2EgbGlzdFxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnRcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgeCB+ZilcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG4gICAgZW5kKVxuICAgIChNYW55KVxuICAgIChNYW55X2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgQ29udl9tYW55X2F0X29uY2UgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhXG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50IGxpc3RcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudCBsaXN0XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG4gICAgZW5kKVxuICAgIChNYW55KVxuICAgIChNYW55X2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQXV0b21hdG9uID0gQXV0b21hdG9uXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgPSBBdXRvbWF0b25fc3RhY2tcbiAgbW9kdWxlIEF1dG9tYXRvbl9zdGF0ZSA9IEF1dG9tYXRvbl9zdGF0ZVxuICBtb2R1bGUgUG9zaXRpb25zID0gUG9zaXRpb25zXG5lbmRcbiIsIigqIGZvciBsZXhpbmcgcG9zaXRpb25zOlxuICAgLSBsbnVtIHN0YXJ0cyBmcm9tIDFcbiAgIC0gY251bSBzdGFydHMgZnJvbSAwXG4gICAtIHBvc19ib2wgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGxpbmVcblxuICAgZm9yIGFic29sdXRlIHBvczpcbiAgIC0gcm93IHN0YXJ0cyBmcm9tIDFcbiAgIC0gY29sIHN0YXJ0cyBmcm9tIDFcblxuICAgZm9yIHJlbGF0aXZlIHBvcywgb2J2aW91c2x5IDAgbWVhbnMgc2FtZSBwb3NpdGlvblxuKilcblxuKCogb3BlcmF0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9yIGJvdGggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHBvc2l0aW9ucyAqKVxubW9kdWxlIFBvcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcm93IDogaW50XG4gICAgOyBjb2wgOiBpbnRcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHJvdzsgY29sIH0gPSBUeXBlLkF0b20gKFByaW50Zi5zcHJpbnRmIFwiJWQ6JWRcIiByb3cgY29sKVxuICBsZXQgYWRkIHQxIHQyID0geyByb3cgPSB0MS5yb3cgKyB0Mi5yb3c7IGNvbCA9IHQxLmNvbCArIHQyLmNvbCB9XG4gIGxldCBzdWIgdDEgdDIgPSB7IHJvdyA9IHQxLnJvdyAtIHQyLnJvdzsgY29sID0gdDEuY29sIC0gdDIuY29sIH1cblxuICBsZXQgY29tcGFyZSB7IHJvdyA9IHIxOyBjb2wgPSBjMSB9IHsgcm93ID0gcjI7IGNvbCA9IGMyIH0gPVxuICAgIGlmIHIxID0gcjIgdGhlbiBjMSAtIGMyIGVsc2UgcjEgLSByMlxuICA7O1xuXG4gIGxldCBnZXEgdDEgdDIgPSBjb21wYXJlIHQxIHQyID49IDBcbmVuZFxuXG5tb2R1bGUgUmVsYXRpdmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb3NcblxuICBsZXQgemVybyA9IHsgcm93ID0gMDsgY29sID0gMCB9XG5lbmRcblxubW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IG9yaWdpbiA9IHsgcm93ID0gMTsgY29sID0gMSB9XG5cbiAgbGV0IG9mX2xleGluZyB7IExleGluZy5wb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2w7IHBvc19mbmFtZSA9IF8gfSA9XG4gICAgeyByb3cgPSBwb3NfbG51bTsgY29sID0gcG9zX2NudW0gLSBwb3NfYm9sICsgMSB9XG4gIDs7XG5cbiAgbGV0IGRpZmYgPSBzdWJcbmVuZFxuIiwiKCoqIFR5cGUgb2YgYW5ub3RhdGVkIFMtZXhwcmVzc2lvbnMgKilcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IG1hcCB0IH5mID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBmIHQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFBvcyA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gVHlwZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgKCoqIEluIFtBdG9tIChfLCBzLCBvcHQpXSwgW3NdIGlzIHRoZSB1bmVzY2FwZWQgc3RyaW5nLCB0aGF0IGlzIHRoZSBhcmd1bWVudCBvZlxuICAgICAgICBbVHlwZS5BdG9tXS4gV2hlbiBbb3B0XSBpcyBkZWZpbmVkLCBpdCBpcyB0aGUgc291cmNlIHN5bnRheCBvZiBbc10sIHRoYXQgaXMgYVxuICAgICAgICBzdHJpbmcgdGhhdCBjYW4gYmUgcHJpbnRlZCBhcyBpcyBpZiBvbmUgd2FudHMgdG8gcGFyc2UgYW5kIHByaW50IHByZXNlcnZpbmdcbiAgICAgICAgc3ludGF4LiBUaGlzIGlzIHVzdWFsbHkgc2V0IGZvciBxdW90ZWQgYXRvbXMgKHRvIHByZXNlcnZlIHRoZSBmYWN0IHRoYXQgd2VyZVxuICAgICAgICBxdW90ZWQpLCBidXQgaXQgY2FuIGJlIHVzZWZ1bCB0byBkbyB0aGUgcmV2ZXJzZTogc2V0IGl0IGZvciBhdG9tcyB0aGF0IGNhbiBiZVxuICAgICAgICBwYXJzZWQgdW5xdW90ZWQgYnV0IHdvdWxkIGJlIHByaW50ZWQgd2l0aCBxdW90ZXMsIHRvIHByZXNlcnZlIHRoZSBsYWNrIG9mIHF1b3Rlcy5cbiAgICAgICAgRm9yIGluc3RhbmNlOlxuICAgICAgICBBdG9tIChfLCBcImFcIiwgTm9uZSkgc2hvdWxkIGJlIHByaW50ZWQge3xhfH1cbiAgICAgICAgQXRvbSAoXywgXCJhIGJcIiwgTm9uZSkgc2hvdWxkIGJlIHByaW50ZWQge3xcImEgYlwifH1cbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIFNvbWUgXCJcXFwiYVxcXCJcIikgc2hvdWxkIGJlIHByaW50ZWQge3xcImFcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIFNvbWUgXCJhIGJcIikgc2hvdWxkIGJlIHByaW50ZWQge3xhIGJ8fSBvciBtYXkgcmFpc2UsIGFzIGl0IGlzXG4gICAgICAgIGFuIGVycm9yIHRvIGNvbnN0cnVjdGVkIHN1Y2ggYW4gYXRvbSAoZG9lc24ndCBwYXJzZSBiYWNrKSAqKVxuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0b20gb2YgUG9zLnQgKiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgICB8IExpc3Qgb2YgUG9zLnQgKiB0X29yX2NvbW1lbnQgbGlzdCAqIFBvcy50XG5cbiAgICAoKiBwb3NpdGlvbnMgb2YgbGVmdCBhbmQgcmlnaHQgcGFyZW5zICopXG4gICAgYW5kIHRfb3JfY29tbWVudCA9XG4gICAgICB8IFNleHAgb2YgdFxuICAgICAgfCBDb21tZW50IG9mIGNvbW1lbnRcblxuICAgIGFuZCBjb21tZW50ID1cbiAgICAgIHwgUGxhaW5fY29tbWVudCBvZiBQb3MudCAqIHN0cmluZ1xuICAgICAgfCBTZXhwX2NvbW1lbnQgb2YgUG9zLnQgKiBjb21tZW50IGxpc3QgKiB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIFRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBzZXhwX29mX2NvbW1lbnQgOiBjb21tZW50IC0+IFR5cGUudFxuICAgIHZhbCBzZXhwX29mX3Rfb3JfY29tbWVudCA6IHRfb3JfY29tbWVudCAtPiBUeXBlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFRvX3NleHAgOiBzaWdcbiAgICB2YWwgb2ZfdCA6IHQgLT4gVHlwZS50XG4gICAgdmFsIG9mX2NvbW1lbnQgOiBjb21tZW50IC0+IFR5cGUudFxuICAgIHZhbCBvZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIG1heWJlIHdlIGNhbiBhY3R1YWxseSB1c2UgY29udiBoZXJlLCBpbnN0ZWFkIG9mIGlubGluaW5nIGl0ICopXG5cbiAgICBsZXQgb2ZfcG9zID0gUG9zLnNleHBfb2ZfdFxuICAgIGxldCBvZl9zdHJpbmcgeCA9IFR5cGUuQXRvbSB4XG4gICAgbGV0IG9mX2xpc3Qgb2ZfYSB4cyA9IFR5cGUuTGlzdCAoTGlzdC5tYXAgfmY6b2ZfYSB4cylcblxuICAgIGxldCBvZl9vcHRpb24gb2ZfYSA9IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgeCAtPiBUeXBlLkxpc3QgWyBvZl9hIHggXVxuICAgICAgfCBOb25lIC0+IFR5cGUuTGlzdCBbXVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIG9mX3QgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJBdG9tXCI7IG9mX3BvcyB2MTsgb2Zfc3RyaW5nIHYyOyBvZl9vcHRpb24gb2Zfc3RyaW5nIHYzIF1cbiAgICAgIHwgTGlzdCAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiTGlzdFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfdF9vcl9jb21tZW50IHYyOyBvZl9wb3MgdjMgXVxuXG4gICAgYW5kIG9mX3Rfb3JfY29tbWVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAgdCAtPiBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJTZXhwXCI7IG9mX3QgdCBdXG4gICAgICB8IENvbW1lbnQgYyAtPiBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJDb21tZW50XCI7IG9mX2NvbW1lbnQgYyBdXG5cbiAgICBhbmQgb2ZfY29tbWVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFBsYWluX2NvbW1lbnQgKHYxLCB2MikgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiUGxhaW5fY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2MiBdXG4gICAgICB8IFNleHBfY29tbWVudCAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cF9jb21tZW50XCI7IG9mX3BvcyB2MTsgb2ZfbGlzdCBvZl9jb21tZW50IHYyOyBvZl90IHYzIF1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2V4cF9vZl90ID0gVG9fc2V4cC5vZl90XG4gIGxldCBzZXhwX29mX2NvbW1lbnQgPSBUb19zZXhwLm9mX2NvbW1lbnRcbiAgbGV0IHNleHBfb2ZfdF9vcl9jb21tZW50ID0gVG9fc2V4cC5vZl90X29yX2NvbW1lbnRcbmVuZFxuXG5pbmNsdWRlIE1ha2UgKFNyY19wb3MuUmVsYXRpdmUpXG5tb2R1bGUgUGFyc2VkID0gTWFrZSAoU3JjX3Bvcy5BYnNvbHV0ZSlcblxubGV0IHJlbGF0aXZpemUgPVxuICBsZXQgcmVsIH5vdXRlcl9wIHAgPSBTcmNfcG9zLkFic29sdXRlLmRpZmYgcCBvdXRlcl9wIGluXG4gIGxldCByZWMgYXV4X3Qgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLkF0b20gKHBvcywgcywgc29wdCkgLT4gQXRvbSAocmVsIHBvcyB+b3V0ZXJfcCwgcywgc29wdClcbiAgICB8IFBhcnNlZC5MaXN0IChzdGFydF9wb3MsIHRvY3MsIGVuZF9wb3MpIC0+XG4gICAgICBMaXN0XG4gICAgICAgICggcmVsIHN0YXJ0X3BvcyB+b3V0ZXJfcFxuICAgICAgICAsIExpc3QubWFwIHRvY3MgfmY6KGZ1biB0b2MgLT4gYXV4X3RvYyB+b3V0ZXJfcDpzdGFydF9wb3MgdG9jKVxuICAgICAgICAsIHJlbCBlbmRfcG9zIH5vdXRlcl9wIClcbiAgYW5kIGF1eF90b2Mgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLlNleHAgdCAtPiBTZXhwIChhdXhfdCB0IH5vdXRlcl9wKVxuICAgIHwgUGFyc2VkLkNvbW1lbnQgYyAtPiBDb21tZW50IChhdXhfYyBjIH5vdXRlcl9wKVxuICBhbmQgYXV4X2Mgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLlBsYWluX2NvbW1lbnQgKHBvcywgdHh0KSAtPiBQbGFpbl9jb21tZW50IChyZWwgcG9zIH5vdXRlcl9wLCB0eHQpXG4gICAgfCBQYXJzZWQuU2V4cF9jb21tZW50IChwb3MsIGNzLCB0KSAtPlxuICAgICAgU2V4cF9jb21tZW50XG4gICAgICAgIChyZWwgcG9zIH5vdXRlcl9wLCBMaXN0Lm1hcCBjcyB+ZjooZnVuIGMgLT4gYXV4X2Mgfm91dGVyX3AgYyksIGF1eF90IHQgfm91dGVyX3ApXG4gIGluXG4gIGZ1biB0b2MgLT4gYXV4X3RvYyB0b2Mgfm91dGVyX3A6U3JjX3Bvcy5BYnNvbHV0ZS5vcmlnaW5cbjs7XG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKFxuIyAxNSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgc3RyaW5nXG4jIDYgXCJzcmMvcGFyc2VyLm1sXCJcbilcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nXG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IHBhcnNlX2ZhaWx1cmUgd2hhdCA9XG4gICAgbGV0IHBvcyA9IFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSBpblxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCJTZXhwbGliLlBhcnNlcjogZmFpbGVkIHRvIHBhcnNlIGxpbmUgJWQgY2hhciAlZDogJXNcIlxuICAgICAgICBwb3MucG9zX2xudW0gKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKSB3aGF0IGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiMgMjcgXCJzcmMvcGFyc2VyLm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OCAoKiBMUEFSRU4gKik7XG4gIDI1OSAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MCAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDlcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMjJcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAxMFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDA1XFwwMDBcXDAwOFxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDE1XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDEzXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDQwXFwwMDBcXFxuXFwwMzRcXDI1NVxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwyNTVcXFxuXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMjU1XFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NFxcMjU1XFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAyOVxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjg2XG5sZXQgeXl0YWJsZSA9IFwiXFwwMTZcXDAwMFxcXG5cXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAyOVxcMDAwXFwwMjdcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAzOVxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjJcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcXG5cXDAzMVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjZcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDhcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyOFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDhcXDAwMFxcMDA0XFwwMDFcXDI1NVxcMjU1XFwwMTFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG5cXDAyOFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDE3NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMTgxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgKCBUeXBlLkF0b20gXzEgKVxuIyAxODggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgW10gKVxuIyAxOTQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAzOCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgKExpc3QucmV2IF8yKSApXG4jIDIwMSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjA3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIxNCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyMiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyOSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMzcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfMSApXG4jIDI0NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzIgKVxuIyAyNTIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggTm9uZSApXG4jIDI1OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBPYmoucmVwcihcbiMgNTMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBOb25lIClcbiMgMjY1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDI3MiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggW10gKVxuIyAyNzkgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyODcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjk1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMwMiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMDggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzE1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDMyMSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHJldl9zZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzZXhwIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBUeXBlLnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogVHlwZS50IGxpc3QpXG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKFxuIyA1MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgc3RyaW5nICogKExleGluZy5wb3NpdGlvbiAqIHN0cmluZykgb3B0aW9uXG4jIDYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbilcbiAgfCBDT01NRU5UIG9mIChcbiMgNTQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgIHN0cmluZyAqIExleGluZy5wb3NpdGlvbiBvcHRpb25cbiMgMTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbilcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nXG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuICAoKiBjb21wYXJlIHRvIHBhcnNlci5tbHkgKilcblxuICBvcGVuIExleGluZ1xuXG4gIGxldCBwYXJzZV9mYWlsdXJlIHdoYXQgPVxuICAgIGxldCBwb3MgPSBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiU2V4cGxpYi5QYXJzZXI6IGZhaWxlZCB0byBwYXJzZSBsaW5lICVkIGNoYXIgJWQ6ICVzXCJcbiAgICAgICAgcG9zLnBvc19sbnVtIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbCkgd2hhdCBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIG1vZHVsZSBXaXRoX3BvcyA9IHN0cnVjdFxuXG4gICAgb3BlbiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZFxuXG4gICAgbGV0IGNvZXJjZSA9IFNyY19wb3MuQWJzb2x1dGUub2ZfbGV4aW5nXG5cbiAgICBsZXQgc3RhcnRfcG9zICgpID0gY29lcmNlIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpXG5cbiAgICBsZXQgZW5kX3BvcyAoKSA9XG4gICAgICBsZXQgcCA9IFBhcnNpbmcuc3ltYm9sX2VuZF9wb3MgKCkgaW5cbiAgICAgIGNvZXJjZSB7IHAgd2l0aCBMZXhpbmcucG9zX2NudW0gPSBwLkxleGluZy5wb3NfY251bSAtIDEgfVxuXG4gICAgbGV0IGF0b20gKHgsIHkpID1cbiAgICAgIGxldCAocG9zLCB5KSA9XG4gICAgICAgIG1hdGNoIHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKHN0YXJ0X3BvcyAoKSwgU29tZSB4KVxuICAgICAgICB8IFNvbWUgKHBvcywgeCkgLT4gKGNvZXJjZSBwb3MsIFNvbWUgeClcbiAgICAgIGluXG4gICAgICBBdG9tIChwb3MsIHgsIHkpXG5cbiAgICBsZXQgbGlzdCB0cyA9IExpc3QgKHN0YXJ0X3BvcyAoKSwgdHMsIGVuZF9wb3MgKCkpXG5cbiAgICBsZXQgc2V4cCAgICB4ID0gU2V4cCAgICB4XG4gICAgbGV0IGNvbW1lbnQgeCA9IENvbW1lbnQgeFxuXG4gICAgbGV0IHNleHBfY29tbWVudCBjcyB0ID0gU2V4cF9jb21tZW50IChzdGFydF9wb3MgKCksIGNzLCB0KVxuXG4gICAgbGV0IHBsYWluX2NvbW1lbnQgKHgsIHBvc19vcHQpID1cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBtYXRjaCBwb3Nfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHN0YXJ0X3BvcyAoKVxuICAgICAgICB8IFNvbWUgcG9zIC0+IGNvZXJjZSBwb3NcbiAgICAgIGluXG4gICAgICBQbGFpbl9jb21tZW50IChwb3MsIHgpXG5cbiAgZW5kXG5cbiMgNzAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OSAoKiBMUEFSRU4gKik7XG4gIDI2MCAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MSAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gIDI1OCAoKiBDT01NRU5UICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMTBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAwNlxcMDAwXFwwMjJcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTJcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTNcXDAwMFxcMDIzXFwwMDBcXDAyMFxcMDAwXFwwMTVcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTZcXDAwMFxcMDIxXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDE3XFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDZcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMThcXDAwMFxcMDIxXFwwMDBcXDAyM1xcMDAwXFwwMjZcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMTVcXDAwMFxcMDIyXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDM3XFwwMDBcXFxuXFwwMDlcXDI1NVxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDI1NVxcMDA5XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyN1xcMjU1XFwyNTFcXDI1NVxcMjM1XFwyNTVcXFxuXFwwMDBcXDAwMFxcMjM0XFwyNTVcXDAxMFxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjkyXG5sZXQgeXl0YWJsZSA9IFwiXFwwMzZcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMzNcXDAwMFxcMDEyXFwwMDBcXDAxN1xcMDAwXFwwMjhcXDAwMFxcMDMzXFwwMDBcXDAxOVxcMDAwXFwwMzdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMjVcXDAwMFxcMDExXFwwMDBcXDAyN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAzNVxcMDAwXFwwMTFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDI5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDEwXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwNVxcMDAxXFwwMDVcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBMUEFSRU5cXDAwMFxcXG4gIFJQQVJFTlxcMDAwXFxcbiAgRU9GXFwwMDBcXFxuICBIQVNIX1NFTUlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBTVFJJTkdcXDAwMFxcXG4gIENPTU1FTlRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICggV2l0aF9wb3MuYXRvbSBfMSApXG4jIDIyMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA3NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5saXN0IChMaXN0LnJldiBfMikgKVxuIyAyMjkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3NyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAoIHBhcnNlX2ZhaWx1cmUgXCJzZXhwXCIgKVxuIyAyMzUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA4MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICggV2l0aF9wb3MucGxhaW5fY29tbWVudCBfMSApXG4jIDI0MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfY29tbWVudHNfYWJzKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3Muc2V4cF9jb21tZW50IChMaXN0LnJldiBfMikgXzMgKVxuIyAyNTAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICggW10gKVxuIyAyNTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfY29tbWVudHNfYWJzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI2NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X2NvbW1lbnRzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHAgXzEgKVxuIyAyNzEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICggV2l0aF9wb3MuY29tbWVudCBfMSApXG4jIDI3OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDkyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICggW10gKVxuIyAyODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDkzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI5MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAoIFR5cGVfd2l0aF9sYXlvdXQucmVsYXRpdml6ZSBfMSApXG4jIDI5OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgKCBTb21lIF8xIClcbiMgMzA2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIE5vbmUgKVxuIyAzMTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTAzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgKCBbXzFdIClcbiMgMzE5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDMyNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMzM0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwOCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDM0MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTExIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzNDcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTEyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzUzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDM2MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzX2FicyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSByZXZfc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc2V4cCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbilcbmxldCBzZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdClcbmxldCBzZXhwc19hYnMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkLnRfb3JfY29tbWVudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNSBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdClcbiIsIiMgMSBcInNyYy9sZXhlci5tbGxcIlxuIFxuICAoKiogTGV4ZXI6IExleGVyIFNwZWNpZmljYXRpb24gZm9yIFMtZXhwcmVzc2lvbnMgKilcblxuICBvcGVuIFByaW50ZlxuICBvcGVuIExleGluZ1xuXG4gIGxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICAgIHwgJ24nIC0+ICdcXDAxMCdcbiAgICB8ICdyJyAtPiAnXFwwMTMnXG4gICAgfCAnYicgLT4gJ1xcMDA4J1xuICAgIHwgJ3QnIC0+ICdcXDAwOSdcbiAgICB8IGMgLT4gY1xuXG4gIGxldCBsZiA9ICdcXDAxMCdcblxuICBsZXQgZGVjX2NvZGUgYzEgYzIgYzMgPVxuICAgIDEwMCAqIChDaGFyLmNvZGUgYzEgLSA0OCkgKyAxMCAqIChDaGFyLmNvZGUgYzIgLSA0OCkgKyAoQ2hhci5jb2RlIGMzIC0gNDgpXG5cbiAgbGV0IGhleF9jb2RlIGMxIGMyID1cbiAgICBsZXQgZDEgPSBDaGFyLmNvZGUgYzEgaW5cbiAgICBsZXQgdmFsMSA9XG4gICAgICBpZiBkMSA+PSA5NyB0aGVuIGQxIC0gODdcbiAgICAgIGVsc2UgaWYgZDEgPj0gNjUgdGhlbiBkMSAtIDU1XG4gICAgICBlbHNlIGQxIC0gNDggaW5cbiAgICBsZXQgZDIgPSBDaGFyLmNvZGUgYzIgaW5cbiAgICBsZXQgdmFsMiA9XG4gICAgICBpZiBkMiA+PSA5NyB0aGVuIGQyIC0gODdcbiAgICAgIGVsc2UgaWYgZDIgPj0gNjUgdGhlbiBkMiAtIDU1XG4gICAgICBlbHNlIGQyIC0gNDggaW5cbiAgICB2YWwxICogMTYgKyB2YWwyXG5cbiAgbGV0IGZvdW5kX25ld2xpbmUgbGV4YnVmIGRpZmYgPVxuICAgIGxldCBsZXhfY3Vycl9wID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAge1xuICAgICAgICBsZXhfY3Vycl9wIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsZXhfY3Vycl9wLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxleF9jdXJyX3AucG9zX2NudW0gLSBkaWZmO1xuICAgICAgfVxuXG4gICgqIHNhbWUgbGVuZ3RoIGNvbXB1dGF0aW9uIGFzIGluIFtMZXhpbmcubGV4ZW1lXSAqKVxuICBsZXQgbGV4ZW1lX2xlbiB7IGxleF9zdGFydF9wb3M7IGxleF9jdXJyX3BvczsgXyB9ID0gbGV4X2N1cnJfcG9zIC0gbGV4X3N0YXJ0X3Bvc1xuXG4gIGxldCBtYWluX2ZhaWx1cmUgbGV4YnVmIG1zZyA9XG4gICAgbGV0IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gPSBsZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgXCJTZXhwbGliLkxleGVyLm1haW46ICVzIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgIG1zZyBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgIGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgICAgIHZhbCBhZGRfY2hhciA6IHQgLT4gY2hhciAtPiB1bml0XG4gICAgICB2YWwgYWRkX3N1YmJ5dGVzIDogdCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgIHZhbCBhZGRfbGV4ZW1lIDogdCAtPiBsZXhidWYgLT4gdW5pdFxuICAgICAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gICAgICB2YWwgb2ZfYnVmZmVyIDogQnVmZmVyLnQgLT4gdFxuICAgIGVuZFxuICAgIG1vZHVsZSBUb2tlbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgbHBhcmVuIDogdFxuICAgICAgdmFsIHJwYXJlbiA6IHRcbiAgICAgIHZhbCBlb2YgOiB0XG4gICAgICB2YWwgc2ltcGxlX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICB2YWwgaGFzaF9zZW1pIDogdFxuICAgICAgdmFsIHF1b3RlZF9zdHJpbmcgOiBMZXhpbmcucG9zaXRpb24gLT4gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiB0XG4gICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgdmFsIGNvbW1lbnQgOiBzdHJpbmcgLT4gbWFpbjpzIC0+IHNcbiAgICAgIHZhbCBibG9ja19jb21tZW50IDogTGV4aW5nLnBvc2l0aW9uIC0+IG1haW46cyAtPiBzXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChYIDogVCkgOiBzaWdcbiAgICB2YWwgbWFpbiA6ID9idWY6QnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiBYLlRva2VuLnRcbiAgZW5kID0gc3RydWN0ICgqIEJFR0lOIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG4gICAgb3BlbiBYXG5cbiMgODQgXCJzcmMvbGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjQ0XFwyNTVcXDAxMFxcMDAwXFwwNDNcXDAwMFxcMDUzXFwwMDBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDA4NlxcMDAwXFwyNDhcXDI1NVxcMjQ5XFwyNTVcXDA5NlxcMDAwXFxcbiAgICBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTcyXFwwMDBcXDE4MlxcMDAwXFwyMjBcXDAwMFxcMjMwXFwwMDBcXDAwN1xcMDAxXFwyNDdcXDI1NVxcXG4gICAgXFwwMTdcXDAwMVxcMDUwXFwwMDFcXDA2MFxcMDAxXFwwOTNcXDAwMVxcMTAzXFwwMDFcXDEzNlxcMDAxXFwxNDZcXDAwMVxcMTgxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDIyNFxcMDAxXFwyMzRcXDAwMVxcMDExXFwwMDJcXDAzN1xcMDAwXFwyNDZcXDI1NVxcMDgwXFwwMDBcXDI0OFxcMjU1XFxcbiAgICBcXDAyM1xcMDAyXFwyNTVcXDI1NVxcMjQ5XFwyNTVcXDA1N1xcMDAyXFwwMzNcXDAwMlxcMjUyXFwyNTVcXDAwN1xcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMTdcXDAwMFxcMTEyXFwwMDJcXDI1MVxcMjU1XFwxNDRcXDAwMlxcMjUwXFwyNTVcXDA4MVxcMDAwXFwyNTBcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMTIyXFwwMDBcXDI1NVxcMjU1XFwxNjZcXDAwMFxcMTMwXFwwMDFcXDI1MlxcMjU1XFwyNTFcXDI1NVxcMTczXFwwMDFcXDI1MVxcMDAxXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDAyXFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDIzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTJcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU4XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAxN1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzVcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDQ2XFwwMDBcXDAwOVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMzZcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE3XFwwMDBcXDAzOFxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDUzXFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzZcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDI0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDM4XFwwMDBcXDA1M1xcMDAwXFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAxN1xcMDAwXFwwNTlcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDBcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDE5XFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMjlcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFxcbiAgICBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDI1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDA0MFxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBtYWluIGJ1ZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICggZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgbWFpbiBidWYgbGV4YnVmIClcbiMgMzcwIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgOTcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgKCBtYWluIGJ1ZiBsZXhidWYgKVxuIyAzNzUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRcbiMgMzgxIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA5OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uY29tbWVudCB0ZXh0IH5tYWluIGJ1ZiBsZXhidWYgKVxuIyAzODUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyA5OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmxwYXJlbiApXG4jIDM5MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDEwMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLnJwYXJlbiApXG4jIDM5NSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDEwMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgcG9zID0gTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBwb3MgbGV4YnVmO1xuICAgICAgICBsZXQgdG9rID0gVG9rZW4ucXVvdGVkX3N0cmluZyBwb3MgYnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQwNyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA2IC0+XG4jIDExMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBUb2tlbi5oYXNoX3NlbWkgKVxuIyA0MTIgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxuIyAxMTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIFtwb3NdIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLmJsb2NrX2NvbW1lbnQgcG9zIH5tYWluIGJ1ZiBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICB0b2tcbiAgICAgIClcbiMgNDI0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTIwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCIgKVxuIyA0MjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxMjYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggbWFpbl9mYWlsdXJlIGxleGJ1ZiBcImNvbW1lbnQgdG9rZW5zIGluIHVucXVvdGVkIGF0b21cIiApXG4jIDQzNCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxMCAtPlxubGV0XG4jIDEyNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJcbiMgNDQwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uc2ltcGxlX3N0cmluZyBzdHIgKVxuIyA0NDQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTI4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4uZW9mIClcbiMgNDQ5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiAzNlxuYW5kIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMzEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7ICgpIClcbiMgNDYxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTMzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBsZW4gPSBsZXhlbWVfbGVuIGxleGJ1ZiAtIDIgaW5cbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDcxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMTQwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBsZW4gPSBsZXhlbWVfbGVuIGxleGJ1ZiAtIDMgaW5cbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDgxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbmxldFxuIyAxNDYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDQ4NyBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBpblxuIyAxNDcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChjaGFyX2Zvcl9iYWNrc2xhc2ggYyk7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0OTUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxubGV0XG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgIGMxXG4jIDUwMSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTA2IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTUyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzXG4jIDUxMSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBpblxuIyAxNTMgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHYgPSBkZWNfY29kZSBjMSBjMiBjMyBpblxuICAgICAgICBpZiB2ID4gMjU1IHRoZW4gKFxuICAgICAgICAgIGxldCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9ID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9zdHJpbmc6IFxcXG4gICAgICAgICAgICAgICBpbGxlZ2FsIGVzY2FwZSBhdCBsaW5lICVkIGNoYXIgJWQ6IGBcXFxcJWMlYyVjJ1wiXG4gICAgICAgICAgICAgIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wgLSAzKVxuICAgICAgICAgICAgICBjMSBjMiBjMyBpblxuICAgICAgICAgIGZhaWx3aXRoIG1zZyk7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1MjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxubGV0XG4jIDE2OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMVxuIyA1MzUgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAxNjggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMlxuIyA1NDAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTY5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gaGV4X2NvZGUgYzEgYzIgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociB2KTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU0OSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMTc1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICBjXG4jIDU1NSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBpblxuIyAxNzYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIGM7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NjQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxuIyAxODMgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIGxmO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTc0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTkwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBvZnMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIG9mcyBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIG9mcyBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1ODUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxOTggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiB1bnRlcm1pbmF0ZWQgc3RyaW5nIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgICAgICBzdGFydC5wb3NfbG51bSAoc3RhcnQucG9zX2NudW0gLSBzdGFydC5wb3NfYm9sKVxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBtc2dcbiAgICAgIClcbiMgNTk3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgNTNcbmFuZCBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjA5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgMDsgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiApXG4jIDYxMCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDIxMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MTYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAyMTUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBsZXQgY3VyID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMSB9IGluXG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWZcbiAgICAgIClcbiMgNjI3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgMjIzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgKFxuICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgIGxldCBzdGFydCA9IHsgY3VyIHdpdGggcG9zX2NudW0gPSBjdXIucG9zX2NudW0gLSAyIH0gaW5cbiAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgKHN0YXJ0IDo6IGxvY3MpIGxleGJ1ZlxuICAgIClcbiMgNjM3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgMjMwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbWF0Y2ggbG9jcyB3aXRoXG4gICAgICAgIHwgW19dIC0+ICgpICgqIHRoZSBjb21tZW50IGlzIGZpbmlzaGVkICopXG4gICAgICAgIHwgXyA6OiAoXyA6OiBfIGFzIHQpIC0+IHNjYW5fYmxvY2tfY29tbWVudCBidWYgdCBsZXhidWZcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2UgICgqIGltcG9zc2libGUgKilcbiAgICAgIClcbiMgNjQ4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbiMgMjM4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gOjogXyAtPlxuICAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgIHNwcmludGYgXCJTZXhwbGliLkxleGVyLnNjYW5fYmxvY2tfY29tbWVudDogXFxcbiAgICAgICAgICAgICAgICB1bnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudCBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgICAgIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDY2MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMjUwIFwic3JjL2xleGVyLm1sbFwiXG4gICgqIFJFU1VNRSBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gICAgbGV0IG1haW4gP2J1ZiA9XG4gICAgICBsZXQgYnVmID1cbiAgICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNyZWF0ZSA2NFxuICAgICAgICB8IFNvbWUgYnVmIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5vZl9idWZmZXIgYnVmXG4gICAgICBpblxuICAgICAgbWFpbiBidWZcblxuICBlbmQgKCogRU5EIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG5cbiAgbW9kdWxlIFZhbmlsbGEgPVxuICAgIE1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQnVmZmVyXG4gICAgICAgIGxldCBhZGRfbGV4ZW1lIF8gXyA9ICgpXG4gICAgICAgIGxldCBvZl9idWZmZXIgYiA9IGJcbiAgICAgIGVuZFxuICAgICAgbW9kdWxlIFRva2VuID0gc3RydWN0XG4gICAgICAgIG9wZW4gUGFyc2VyXG4gICAgICAgIHR5cGUgdCA9IHRva2VuXG4gICAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICAgIGxldCBlb2YgPSBFT0ZcbiAgICAgICAgbGV0IGxwYXJlbiA9IExQQVJFTlxuICAgICAgICBsZXQgcnBhcmVuID0gUlBBUkVOXG4gICAgICAgIGxldCBoYXNoX3NlbWkgPSBIQVNIX1NFTUlcbiAgICAgICAgbGV0IHNpbXBsZV9zdHJpbmcgeCA9IFNUUklORyB4XG4gICAgICAgIGxldCBxdW90ZWRfc3RyaW5nIF8gYnVmID0gU1RSSU5HIChCdWZmZXIuY29udGVudHMgYnVmKVxuICAgICAgICBsZXQgYmxvY2tfY29tbWVudCBfcG9zIH5tYWluIGJ1ZiBsZXhidWYgPVxuICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZlxuICAgICAgICBsZXQgY29tbWVudCBfdGV4dCB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWYgKCogc2tpcCBhbmQgY29udGludWUgbGV4aW5nICopXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFdpdGhfbGF5b3V0ID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB7XG4gICAgICAgICAgY29udGVudHMgOiBCdWZmZXIudDtcbiAgICAgICAgICBsZXhlbWUgOiBCdWZmZXIudDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3JlYXRlIG4gPSB7Y29udGVudHMgPSBCdWZmZXIuY3JlYXRlIG47IGxleGVtZSA9IEJ1ZmZlci5jcmVhdGUgbn1cbiAgICAgICAgbGV0IG9mX2J1ZmZlciBjb250ZW50cyA9IHsgY29udGVudHM7IGxleGVtZSA9IEJ1ZmZlci5jcmVhdGUgNjQgfVxuICAgICAgICBsZXQgYWRkX2NoYXIgdCBjaCA9IEJ1ZmZlci5hZGRfY2hhciB0LmNvbnRlbnRzIGNoXG4gICAgICAgIGxldCBhZGRfc3ViYnl0ZXMgdCBzdHIgb2ZzIGxlbiA9IEJ1ZmZlci5hZGRfc3ViYnl0ZXMgdC5jb250ZW50cyBzdHIgb2ZzIGxlblxuICAgICAgICBsZXQgYWRkX2xleGVtZSB0IGxleGJ1ZiA9IEJ1ZmZlci5hZGRfc3RyaW5nIHQubGV4ZW1lIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgbGV0IGNsZWFyIHQgPSBCdWZmZXIuY2xlYXIgdC5sZXhlbWU7IEJ1ZmZlci5jbGVhciB0LmNvbnRlbnRzXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlcl93aXRoX2xheW91dFxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgKHgsIE5vbmUpXG4gICAgICAgIGxldCBxdW90ZWRfc3RyaW5nIHBvcyB7UXVvdGVkX3N0cmluZ19idWZmZXIuY29udGVudHM7IGxleGVtZX0gPVxuICAgICAgICAgIFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGNvbnRlbnRzLCBTb21lIChwb3MsIEJ1ZmZlci5jb250ZW50cyBsZXhlbWUpKVxuICAgICAgICBsZXQgYmxvY2tfY29tbWVudCBwb3Mgfm1haW46XyB7UXVvdGVkX3N0cmluZ19idWZmZXIuY29udGVudHMgPSBfOyBsZXhlbWV9IF9sZXhidWYgPVxuICAgICAgICAgIENPTU1FTlQgKEJ1ZmZlci5jb250ZW50cyBsZXhlbWUsIFNvbWUgcG9zKVxuICAgICAgICBsZXQgY29tbWVudCB0ZXh0IH5tYWluOl8gX2J1ZiBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UICh0ZXh0LCBOb25lKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIGxldCBtYWluID0gVmFuaWxsYS5tYWluXG4gIGxldCBtYWluX3dpdGhfbGF5b3V0ID0gV2l0aF9sYXlvdXQubWFpblxuXG5cbiMgNzQ1IFwic3JjL2xleGVyLm1sXCJcbiIsIigqIFNleHA6IE1vZHVsZSBmb3IgaGFuZGxpbmcgUy1leHByZXNzaW9ucyAoSS9PLCBldGMuKSAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBCaWdhcnJheVxubW9kdWxlIFNleHBsaWIgPSBTZXhwbGliMFxubW9kdWxlIENvbnYgPSBTZXhwbGliLlNleHBfY29udlxuXG4oKiBjb252Lm1sIGRlcGVuZHMgb24gdXMgc28gd2UgY2FuIG9ubHkgdXNlIHRoaXMgbW9kdWxlICopXG5cbmluY2x1ZGUgVHlwZVxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbmluY2x1ZGUgKFxuICBTZXhwbGliLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGxpYi5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByaXZhdGVcblxubGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5cbigqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIEkvTy1jaGFubmVscyAqKVxuXG5sZXQgd2l0aF9uZXdfYnVmZmVyIG9jIGYgPVxuICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gIGYgYnVmO1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBidWZcbjs7XG5cbmxldCBvdXRwdXRfaHVtIG9jIHNleHAgPSB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSBzZXhwIH5idWYpXG5cbmxldCBvdXRwdXRfaHVtX2luZGVudCBpbmRlbnQgb2Mgc2V4cCA9XG4gIHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfaHVtIH5pbmRlbnQgc2V4cCB+YnVmKVxuOztcblxubGV0IG91dHB1dF9tYWNoIG9jIHNleHAgPSB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX21hY2ggc2V4cCB+YnVmKVxubGV0IG91dHB1dCA9IG91dHB1dF9tYWNoXG5cbigqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIGZpbGUgKilcblxuKCogVGhlIHRlbXAgZmlsZSBmdW5jdGlvbnMgaW4gdGhlIE9DYW1sIEZpbGVuYW1lIG1vZHVsZSBkbyBub3Qgc3VwcG9ydFxuICAgcGVybWlzc2lvbnMuICBCdXQgb3BlbmluZyBhIGZpbGUgd2l0aCBnaXZlbiBwZXJtaXNzaW9ucyBpcyBkaWZmZXJlbnRcbiAgIGZyb20gb3BlbmluZyBpdCBhbmQgY2htb2RpbmcgaXQgdG8gdGhlc2UgcGVybWlzc2lvbnMsIGJlY2F1c2UgdGhlIHVtYXNrXG4gICBpcyB0YWtlbiBpbiBhY2NvdW50LiAgVW5kZXIgVW5peCB0aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGdldCB0aGUgdW1hc2sgaW5cbiAgIGEgdGhyZWFkLXNhZmUgd2F5LiAqKVxubW9kdWxlIFRtcF9maWxlID0gc3RydWN0XG4gIGxldCBwcm5nID0gcmVmIE5vbmVcblxuICBsZXQgdGVtcF9maWxlX25hbWUgcHJlZml4IHN1ZmZpeCA9XG4gICAgbGV0IHJhbmRfc3RhdGUgPVxuICAgICAgbWF0Y2ggIXBybmcgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCByZXQgPSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkgaW5cbiAgICAgICAgcHJuZyA6PSBTb21lIHJldDtcbiAgICAgICAgcmV0XG4gICAgaW5cbiAgICBsZXQgcm5kID0gUmFuZG9tLlN0YXRlLmJpdHMgcmFuZF9zdGF0ZSBsYW5kIDB4RkZGRkZGIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4XG4gIDs7XG5cbiAgKCogS2VlcCB0aGUgcGVybWlzc2lvbnMgbG9vc2UuIFNleHBzIGFyZSB1c3VhbGx5IHNoYXJlZCBhbmQgcmFyZWx5IHByaXZhdGUqKVxuICBsZXQgb3Blbl90ZW1wX2ZpbGUgPyhwZXJtID0gMG82NjYpIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgb2MgPVxuICAgICAgICAgIG9wZW5fb3V0X2dlbiBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2w7IE9wZW5fdGV4dCBdIHBlcm0gbmFtZVxuICAgICAgICBpblxuICAgICAgICBuYW1lLCBvY1xuICAgICAgd2l0aFxuICAgICAgfCBTeXNfZXJyb3IgXyBhcyBlIC0+IGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gICAgaW5cbiAgICB0cnlfbmFtZSAwXG4gIDs7XG5lbmRcblxubGV0IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIG91dHB1dF9mdW5jdGlvbiBmaWxlIHNleHAgPVxuICBsZXQgdG1wX25hbWUsIG9jID0gVG1wX2ZpbGUub3Blbl90ZW1wX2ZpbGUgP3Blcm0gZmlsZSBcInRtcFwiIGluXG4gICh0cnlcbiAgICAgb3V0cHV0X2Z1bmN0aW9uIG9jIHNleHA7XG4gICAgIGNsb3NlX291dCBvY1xuICAgd2l0aFxuICAgfCBlIC0+XG4gICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICAgKHRyeSBTeXMucmVtb3ZlIHRtcF9uYW1lIHdpdGhcbiAgICAgIHwgXyAtPiAoKSk7XG4gICAgIHJhaXNlIGUpO1xuICBTeXMucmVuYW1lIHRtcF9uYW1lIGZpbGVcbjs7XG5cbmxldCBvdXRwdXRfc2V4cF9ubCBkb19vdXRwdXQgb2Mgc2V4cCA9XG4gIGRvX291dHB1dCBvYyBzZXhwO1xuICBvdXRwdXRfc3RyaW5nIG9jIFwiXFxuXCJcbjs7XG5cbmxldCBzYXZlX2h1bSA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwXG5sZXQgc2F2ZV9tYWNoID9wZXJtIGZpbGUgc2V4cCA9IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIG91dHB1dF9tYWNoIGZpbGUgc2V4cFxubGV0IHNhdmUgPSBzYXZlX21hY2hcbmxldCBvdXRwdXRfc2V4cHNfbmwgZG9fb3V0cHV0IG9jIHNleHBzID0gTGlzdC5pdGVyIChvdXRwdXRfc2V4cF9ubCBkb19vdXRwdXQgb2MpIHNleHBzXG5cbmxldCBzYXZlX3NleHBzX2h1bSA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfaHVtKSBmaWxlIHNleHBzXG47O1xuXG5sZXQgc2F2ZV9zZXhwc19tYWNoID9wZXJtIGZpbGUgc2V4cHMgPVxuICBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBzX25sIG91dHB1dF9tYWNoKSBmaWxlIHNleHBzXG47O1xuXG5sZXQgc2F2ZV9zZXhwcyA9IHNhdmVfc2V4cHNfbWFjaFxuXG4oKiBTY2FuIGZ1bmN0aW9ucyAqKVxuXG5sZXQgc2Nhbl9zZXhwID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHAgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwX29wdCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwX29wdCAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3NleHBzID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHBzIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fcmV2X3NleHBzID9idWYgbGV4YnVmID0gUGFyc2VyLnJldl9zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcblxubGV0IGdldF9tYWluX2J1ZiBidWYgPVxuICBsZXQgYnVmID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgIHwgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDEyOFxuICAgIHwgU29tZSBidWYgLT4gYnVmXG4gIGluXG4gIExleGVyLm1haW4gfmJ1ZlxuOztcblxubGV0IHNjYW5fZm9sZF9zZXhwcyA/YnVmIH5mIH5pbml0IGxleGJ1ZiA9XG4gIGxldCBtYWluID0gZ2V0X21haW5fYnVmIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBtYXRjaCBQYXJzZXIuc2V4cF9vcHQgbWFpbiBsZXhidWYgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgc2V4cCAtPiBsb29wIChmIGFjYyBzZXhwKVxuICBpblxuICBsb29wIGluaXRcbjs7XG5cbmxldCBzY2FuX2l0ZXJfc2V4cHMgP2J1ZiB+ZiBsZXhidWYgPVxuICBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiBsZXhidWYgfmluaXQ6KCkgfmY6KGZ1biAoKSBzZXhwIC0+IGYgc2V4cClcbjs7XG5cbmxldCBzY2FuX3NleHBzX2NvbnYgP2J1ZiB+ZiBsZXhidWYgPVxuICBsZXQgY29sbCBhY2Mgc2V4cCA9IGYgc2V4cCA6OiBhY2MgaW5cbiAgTGlzdC5yZXYgKHNjYW5fZm9sZF9zZXhwcyA/YnVmIH5mOmNvbGwgfmluaXQ6W10gbGV4YnVmKVxuOztcblxubGV0IHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlID9jb250YWluaW5nX3NleHAgP2xvY2F0aW9uID9pbnZhbGlkX3NleHAgKCkgfmV4biA6IHQgPVxuICBMaXN0XG4gICAgKExpc3QuY29uY2F0XG4gICAgICAgWyBbIEF0b20gXCJPZl9zZXhwX2Vycm9yXCIgXVxuICAgICAgIDsgKG1hdGNoIGxvY2F0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIEF0b20geCBdKVxuICAgICAgIDsgWyAobWF0Y2ggZXhuIHdpdGhcbiAgICAgICAgICAgICB8IEZhaWx1cmUgeCAtPiBBdG9tIHhcbiAgICAgICAgICAgICB8IF8gLT4gQ29udi5zZXhwX29mX2V4biBleG4pXG4gICAgICAgICBdXG4gICAgICAgOyAobWF0Y2ggaW52YWxpZF9zZXhwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIExpc3QgWyBBdG9tIFwiaW52YWxpZF9zZXhwXCI7IHggXSBdKVxuICAgICAgIDsgKG1hdGNoIGNvbnRhaW5pbmdfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImNvbnRhaW5pbmdfc2V4cFwiOyB4IF0gXSlcbiAgICAgICBdKVxuOztcblxuKCogUGFydGlhbCBwYXJzaW5nICopXG5cbm1vZHVsZSBBbm5vdCA9IHN0cnVjdFxuICB0eXBlIHBvcyA9IFBhcnNleHAuUG9zaXRpb25zLnBvcyA9XG4gICAgeyBsaW5lIDogaW50XG4gICAgOyBjb2wgOiBpbnRcbiAgICA7IG9mZnNldCA6IGludFxuICAgIH1cblxuICB0eXBlIHJhbmdlID0gUGFyc2V4cC5Qb3NpdGlvbnMucmFuZ2UgPVxuICAgIHsgc3RhcnRfcG9zIDogcG9zXG4gICAgOyBlbmRfcG9zIDogcG9zXG4gICAgfVxuXG4gIHR5cGUgdCA9XG4gICAgfCBBdG9tIG9mIHJhbmdlICogVHlwZS50XG4gICAgfCBMaXN0IG9mIHJhbmdlICogdCBsaXN0ICogVHlwZS50XG5cbiAgdHlwZSAnYSBjb252ID1cbiAgICBbIGBSZXN1bHQgb2YgJ2FcbiAgICB8IGBFcnJvciBvZiBleG4gKiB0XG4gICAgXVxuXG4gIGV4Y2VwdGlvbiBDb252X2V4biBvZiBzdHJpbmcgKiBleG5cblxuICBsZXQgKCkgPVxuICAgIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENvbnZfZXhuXSAoZnVuY3Rpb25cbiAgICAgIHwgQ29udl9leG4gKGxvY2F0aW9uLCBleG4pIC0+IHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+ZXhuXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIHR5cGUgc3RhY2sgPVxuICAgIHsgbXV0YWJsZSBwb3NpdGlvbnMgOiBwb3MgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGFjayA6IHQgbGlzdCBsaXN0XG4gICAgfVxuXG4gIGxldCBnZXRfc2V4cCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChfLCBzZXhwKSB8IExpc3QgKF8sIF8sIHNleHApIC0+IHNleHBcbiAgOztcblxuICBsZXQgZ2V0X3JhbmdlID0gZnVuY3Rpb25cbiAgICB8IEF0b20gKHJhbmdlLCBfKSB8IExpc3QgKHJhbmdlLCBfLCBfKSAtPiByYW5nZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX2NvbnYgc2V4cF9vZl9hID0gZnVuY3Rpb25cbiAgICB8IGBSZXN1bHQgYSAtPiBUeXBlLkxpc3QgWyBBdG9tIFwiUmVzdWx0XCI7IGEgfD4gc2V4cF9vZl9hIF1cbiAgICB8IGBFcnJvciAoZXhuLCB0KSAtPlxuICAgICAgTGlzdCBbIEF0b20gXCJFcnJvclwiOyBMaXN0IFsgZXhuIHw+IENvbnYuc2V4cF9vZl9leG47IHQgfD4gZ2V0X3NleHAgXSBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIEFubm90X3NleHAgb2YgdFxuXG4gIGxldCBmaW5kX3NleHAgYW5ub3Rfc2V4cCBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgYW5ub3Rfc2V4cCA9XG4gICAgICBtYXRjaCBhbm5vdF9zZXhwIHdpdGhcbiAgICAgIHwgKEF0b20gKF8sIHN1Yl9zZXhwKSB8IExpc3QgKF8sIF8sIHN1Yl9zZXhwKSkgd2hlbiBzZXhwID09IHN1Yl9zZXhwIC0+XG4gICAgICAgIHJhaXNlIChBbm5vdF9zZXhwIGFubm90X3NleHApXG4gICAgICB8IExpc3QgKF8sIGFubm90cywgXykgLT4gTGlzdC5pdGVyIGxvb3AgYW5ub3RzXG4gICAgICB8IEF0b20gXyAtPiAoKVxuICAgIGluXG4gICAgdHJ5XG4gICAgICBsb29wIGFubm90X3NleHA7XG4gICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgQW5ub3Rfc2V4cCByZXMgLT4gU29tZSByZXNcbiAgOztcbmVuZFxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IE9mX3NleHBfZXJyb3IgKEFubm90LkNvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmxvY2F0aW9uIH5pbnZhbGlkX3NleHAgfmV4blxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhuLCBpbnZhbGlkX3NleHApIC0+XG4gICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlX3BvcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSB0ZXh0X2xpbmUgOiBpbnRcbiAgICA7IG11dGFibGUgdGV4dF9jaGFyIDogaW50XG4gICAgOyBtdXRhYmxlIGdsb2JhbF9vZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgYnVmX3BvcyA6IGludFxuICAgIH1cblxuICBsZXQgY3JlYXRlID8odGV4dF9saW5lID0gMSkgPyh0ZXh0X2NoYXIgPSAwKSA/KGJ1Zl9wb3MgPSAwKSA/KGdsb2JhbF9vZmZzZXQgPSAwKSAoKSA9XG4gICAgbGV0IGZhaWwgbXNnID0gZmFpbHdpdGggKFwiU2V4cGxpYi5TZXhwLlBhcnNlX3Bvcy5jcmVhdGU6IFwiIF4gbXNnKSBpblxuICAgIGlmIHRleHRfbGluZSA8IDFcbiAgICB0aGVuIGZhaWwgXCJ0ZXh0X2xpbmUgPCAxXCJcbiAgICBlbHNlIGlmIHRleHRfY2hhciA8IDBcbiAgICB0aGVuIGZhaWwgXCJ0ZXh0X2NoYXIgPCAwXCJcbiAgICBlbHNlIGlmIGdsb2JhbF9vZmZzZXQgPCAwXG4gICAgdGhlbiBmYWlsIFwiZ2xvYmFsX29mZnNldCA8IDBcIlxuICAgIGVsc2UgaWYgYnVmX3BvcyA8IDBcbiAgICB0aGVuIGZhaWwgXCJidWZfcG9zIDwgMFwiXG4gICAgZWxzZSB7IHRleHRfbGluZTsgdGV4dF9jaGFyOyBnbG9iYWxfb2Zmc2V0OyBidWZfcG9zIH1cbiAgOztcblxuICBsZXQgd2l0aF9idWZfcG9zIHQgYnVmX3BvcyA9IHsgdCB3aXRoIGJ1Zl9wb3MgfVxuZW5kXG5cbm1vZHVsZSBDb250X3N0YXRlID0gUGFyc2V4cC5PbGRfcGFyc2VyX2NvbnRfc3RhdGVcblxudHlwZSAoJ2EsICd0KSBwYXJzZV9yZXN1bHQgPVxuICB8IERvbmUgb2YgJ3QgKiBQYXJzZV9wb3MudFxuICB8IENvbnQgb2YgQ29udF9zdGF0ZS50ICogKCdhLCAndCkgcGFyc2VfZnVuXG5cbmFuZCAoJ2EsICd0KSBwYXJzZV9mdW4gPSBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gKCdhLCAndCkgcGFyc2VfcmVzdWx0XG5cbnR5cGUgJ3QgcGFyc2Vfc3RhdGUgPSB7IHBhcnNlX3BvcyA6IFBhcnNlX3Bvcy50IH1cblxudHlwZSBwYXJzZV9lcnJvciA9XG4gIHsgZXJyX21zZyA6IHN0cmluZ1xuICA7IHBhcnNlX3N0YXRlIDogWyBgU2V4cCBvZiB0IGxpc3QgbGlzdCBwYXJzZV9zdGF0ZSB8IGBBbm5vdCBvZiBBbm5vdC5zdGFjayBwYXJzZV9zdGF0ZSBdXG4gIH1cblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHBhcnNlX2Vycm9yXG5cbmxldCAoKSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIHBlIC0+XG4gICAgICBsZXQgcHBvcyA9XG4gICAgICAgIG1hdGNoIHBlLnBhcnNlX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgU2V4cCB7IHBhcnNlX3BvcyB9IHwgYEFubm90IHsgcGFyc2VfcG9zIH0gLT4gcGFyc2VfcG9zXG4gICAgICBpblxuICAgICAgTGlzdFxuICAgICAgICBbIEF0b20gXCJTZXhwbGliLlNleHAuUGFyc2VfZXJyb3JcIlxuICAgICAgICA7IExpc3RcbiAgICAgICAgICAgIFsgTGlzdCBbIEF0b20gXCJlcnJfbXNnXCI7IEF0b20gcGUuZXJyX21zZyBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9saW5lXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9saW5lIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJ0ZXh0X2NoYXJcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy50ZXh0X2NoYXIgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcImdsb2JhbF9vZmZzZXRcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0IF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJidWZfcG9zXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuYnVmX3BvcyBdXG4gICAgICAgICAgICBdXG4gICAgICAgIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlcl9vdXRwdXQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhcmVfc2V4cCA6IFQgd2l0aCB0eXBlIG91dHB1dCA9IFR5cGUudFxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEkgPSBQYXJzZXhwLlBvc2l0aW9ucy5JdGVyYXRvclxuXG4gIGxldCByZWMgYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgVHlwZS5BdG9tIF8gLT5cbiAgICAgIGxldCBzdGFydF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgbGV0IGVuZF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgQW5ub3QuQXRvbSAoeyBzdGFydF9wb3M7IGVuZF9wb3MgfSwgc2V4cClcbiAgICB8IFR5cGUuTGlzdCBsIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHBfbGlzdCBsIGl0ZXIgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90Lkxpc3QgKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIGFubm90LCBzZXhwKVxuXG4gIGFuZCBhbm5vdGF0ZV9zZXhwX2xpc3Qgc2V4cHMgaXRlciA9XG4gICAgTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIpIHNleHBzKVxuICA7O1xuXG4gIG1vZHVsZSBCYXJlX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJcblxuICAgIHR5cGUgb3V0cHV0ID0gVHlwZS50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIHNleHAgPSByYWlzZV9ub3RyYWNlIChGb3VuZCBzZXhwKVxuICBlbmRcblxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJfYW5kX3Bvc2l0aW9uc1xuXG4gICAgdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIChzZXhwLCBwb3NpdGlvbnMpID1cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHAgc2V4cCAoSS5jcmVhdGUgcG9zaXRpb25zKSBpblxuICAgICAgcmFpc2Vfbm90cmFjZSAoRm91bmQgYW5ub3QpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfcGFyc2VyIChUIDogc2lnXG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LlRcblxuICAgIHR5cGUgaW5wdXRcblxuICAgIHZhbCBsZW5ndGggOiBpbnB1dCAtPiBpbnRcblxuICAgIHZhbCB1bnNhZmVfZmVlZF9sb29wXG4gICAgICA6ICBJbXBsLlN0YXRlLnRcbiAgICAgIC0+IEltcGwuU3RhY2sudFxuICAgICAgLT4gaW5wdXRcbiAgICAgIC0+IG1heF9wb3M6aW50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgcGFyc2VcbiAgICA6ICA/cGFyc2VfcG9zOlBhcnNlX3Bvcy50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiBULmlucHV0XG4gICAgLT4gKFQuaW5wdXQsIFQub3V0cHV0KSBwYXJzZV9yZXN1bHRcbmVuZCA9IHN0cnVjdFxuICBsZXQgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIGJ1Zl9wb3MgPVxuICAgIHsgUGFyc2VfcG9zLnRleHRfbGluZSA9IFQuSW1wbC5TdGF0ZS5saW5lIHN0YXRlXG4gICAgOyBQYXJzZV9wb3MudGV4dF9jaGFyID0gVC5JbXBsLlN0YXRlLmNvbHVtbiBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmdsb2JhbF9vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlXG4gICAgOyBQYXJzZV9wb3MuYnVmX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zIDwgMFwiO1xuICAgIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBsZW4gPCAwXCI7XG4gICAgbGV0IHN0cl9sZW4gPSBULmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcG9zX2xlbiA9IHBvcyArIGxlbiBpblxuICAgIGlmIHBvc19sZW4gPiBzdHJfbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zICsgbGVuID4gc3RyX2xlblwiO1xuICAgIHBvc19sZW4gLSAxXG4gIDs7XG5cbiAgbGV0IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2cgPVxuICAgIGxldCBwYXJzZV9zdGF0ZSA9IHsgcGFyc2VfcG9zID0gcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIHBvcyB9IGluXG4gICAgbGV0IHBhcnNlX2Vycm9yID0geyBlcnJfbXNnID0gbXNnOyBwYXJzZV9zdGF0ZSA9IGBTZXhwIHBhcnNlX3N0YXRlIH0gaW5cbiAgICByYWlzZSAoUGFyc2VfZXJyb3IgcGFyc2VfZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9wYXJzZXhwX2Vycm9yIHN0YXRlIHBvcyBlID1cbiAgICBsZXQgbXNnID0gUGFyc2V4cC5QYXJzZV9lcnJvci5tZXNzYWdlIGUgaW5cbiAgICBtYXRjaCBQYXJzZXhwLlBhcnNlX2Vycm9yLlByaXZhdGUub2xkX3BhcnNlcl9leG4gZSB3aXRoXG4gICAgfCBgUGFyc2VfZXJyb3IgLT4gcmFpc2VfcGFyc2VfZXJyb3Igc3RhdGUgcG9zIG1zZ1xuICAgIHwgYEZhaWx1cmUgLT4gZmFpbHdpdGggbXNnXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIH5wb3MgfmxlbiBzdHIgPVxuICAgIGxldCBtYXhfcG9zID0gY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyIGluXG4gICAgbGV0IHByZXZpb3VzX29mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICBtYXRjaCBULnVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3Mgd2l0aFxuICAgIHwgc3RhY2sgLT4gbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFja1xuICAgIHwgZXhjZXB0aW9uIFQuRm91bmQgcmVzdWx0IC0+XG4gICAgICBsZXQgb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSBpblxuICAgICAgbGV0IG5leHRfcG9zID0gcG9zICsgKG9mZnNldCAtIHByZXZpb3VzX29mZnNldCkgaW5cbiAgICAgIERvbmUgKHJlc3VsdCwgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIG5leHRfcG9zKVxuICAgIHwgZXhjZXB0aW9uIFBhcnNleHAuUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZXJyIC0+XG4gICAgICBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSAocG9zICsgKFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgLSBwcmV2aW91c19vZmZzZXQpKSBlcnJcblxuICBhbmQgbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFjayA9XG4gICAgbGV0IHBhcnNlX2Z1biA9XG4gICAgICBsZXQgdXNlZF9yZWYgPSByZWYgZmFsc2UgaW5cbiAgICAgIGZ1biB+cG9zIH5sZW4gc3RyIC0+XG4gICAgICAgIGlmICF1c2VkX3JlZlxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwOiBwYXJzZXIgY29udGludWF0aW9uIGNhbGxlZCB0d2ljZVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHVzZWRfcmVmIDo9IHRydWU7XG4gICAgICAgICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyKVxuICAgIGluXG4gICAgbGV0IGNvbnRfc3RhdGUgPSBULkltcGwuU3RhdGUub2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIGluXG4gICAgQ29udCAoY29udF9zdGF0ZSwgcGFyc2VfZnVuKVxuICA7O1xuXG4gIGxldCBwYXJzZSA/KHBhcnNlX3BvcyA9IFBhcnNlX3Bvcy5jcmVhdGUgKCkpID9sZW4gc3RyID1cbiAgICBsZXQgcG9zLCBidWZfcG9zID1cbiAgICAgIGxldCB7IFBhcnNlX3Bvcy50ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9ID0gcGFyc2VfcG9zIGluXG4gICAgICAoIHsgUGFyc2V4cC5Qb3NpdGlvbnMubGluZSA9IHRleHRfbGluZTsgY29sID0gdGV4dF9jaGFyOyBvZmZzZXQgPSBnbG9iYWxfb2Zmc2V0IH1cbiAgICAgICwgYnVmX3BvcyApXG4gICAgaW5cbiAgICBsZXQgc3RhdGUgPSBULkltcGwuU3RhdGUuY3JlYXRlIH5wb3Mgfm5vX3NleHBfaXNfZXJyb3I6ZmFsc2UgVC5yYWlzZV9mb3VuZCBpblxuICAgIGxldCBzdGFjayA9IFQuSW1wbC5TdGFjay5lbXB0eSBpblxuICAgIGxldCBsZW4gPVxuICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgIHwgTm9uZSAtPiBULmxlbmd0aCBzdHIgLSBidWZfcG9zXG4gICAgaW5cbiAgICBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+cG9zOmJ1Zl9wb3MgfmxlblxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0ciA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxubGV0IHBhcnNlID0gU3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBTdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2Vfc3RyX2Fubm90ID0gU3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG5tb2R1bGUgQmlnc3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBiaWdzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgKHN0ciA6IGlucHV0KSB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChBcnJheTEudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgPSBCaWdzdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkFubm90YXRlZF9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nX2Fubm90ID0gQmlnc3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgKilcblxubGV0IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSA9XG4gICgpO1xuICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgIGxldCBwYXJzZV9wb3MgPVxuICAgICAgbWF0Y2ggcGFyc2VfcG9zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzZV9wb3MuY3JlYXRlIH5idWZfcG9zOnBvcyAoKVxuICAgICAgfCBTb21lIHBhcnNlX3BvcyAtPlxuICAgICAgICBwYXJzZV9wb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgPC0gcG9zO1xuICAgICAgICBwYXJzZV9wb3NcbiAgICBpblxuICAgIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOihTb21lIGxlbikgc3RyXG47O1xuXG4oKiBbd3NfYnVmXSBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyICopXG5sZXQgZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiA9XG4gICgqIFdoZW4gcGFyc2luZyBhdG9tcywgdGhlIGluY3JlbWVudGFsIHBhcnNlciBjYW5ub3QgdGVsbCB3aGV0aGVyXG4gICAgIGl0IGlzIGF0IHRoZSBlbmQgdW50aWwgaXQgaGl0cyB3aGl0ZXNwYWNlLiAgV2UgdGhlcmVmb3JlIGZlZWQgaXRcbiAgICAgb25lIHNwYWNlIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGZpbmlzaGVkLiAqKVxuICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgd3NfYnVmIHdpdGhcbiAgfCBEb25lIChzZXhwLCBfKSAtPiBPayBzZXhwXG4gIHwgQ29udCAoY29udF9zdGF0ZSwgXykgLT4gRXJyb3IgY29udF9zdGF0ZVxuOztcblxubGV0IGdlbl9pbnB1dF9zZXhwIG15X3BhcnNlID9wYXJzZV9wb3MgaWMgPVxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+XG4gICAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgICB8IEVycm9yIF8gLT4gcmFpc2UgRW5kX29mX2ZpbGUpXG4gICAgfCBjIC0+XG4gICAgICBCeXRlcy5zZXQgYnVmIDAgYztcbiAgICAgIChtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIGxvb3AgKG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSlcbjs7XG5cbmxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG5cbmxldCBnZW5faW5wdXRfcmV2X3NleHBzIG15X3BhcnNlIH53c19idWYgP3BhcnNlX3BvcyA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBpYyA9XG4gIGxldCByZXZfc2V4cHNfcmVmID0gcmVmIFtdIGluXG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIC0+XG4gICAgICAgIHJldl9zZXhwc19yZWYgOj0gc2V4cCA6OiAhcmV2X3NleHBzX3JlZjtcbiAgICAgICAgbGV0IG5fcGFyc2VkID0gYnVmX3BvcyAtIHBvcyBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBpZiBuX3BhcnNlZCA9IGxlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV3X2xlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICAgICAgICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46bmV3X2xlbilcbiAgICAgICAgZWxzZSBsb29wIHRoaXNfcGFyc2UgfnBvczpidWZfcG9zIH5sZW46KGxlbiAtIG5fcGFyc2VkKVxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46KGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4pKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cCA6OiAhcmV2X3NleHBzX3JlZlxuICAgICAgfCBFcnJvciBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgIChcIlNleHBsaWIuU2V4cC5pbnB1dF9yZXZfc2V4cHM6IHJlYWNoZWQgRU9GIHdoaWxlIGluIHN0YXRlIFwiXG4gICAgICAgICAgIF4gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSkpXG4gIGluXG4gIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gIGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlblxuOztcblxubGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICBnZW5faW5wdXRfcmV2X3NleHBzIHBhcnNlIH53c19idWY6XCIgXCIgP3BhcnNlX3BvcyA/YnVmIGljXG47O1xuXG5sZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbigqIG9mX3N0cmluZyBhbmQgb2ZfYmlnc3RyaW5nICopXG5cbmxldCBvZl9zdHJpbmdfYmlnc3RyaW5nIGxvYyBteV9wYXJzZSB3c19idWYgZ2V0X2xlbiBnZXRfc3ViIHN0ciA9XG4gIG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6Tm9uZSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgfCBEb25lIChzZXhwLCBwYXJzZV9wb3MpIC0+XG4gICAgKG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgICAgfCBEb25lIChfc2V4cDIsIF8pIC0+XG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogZ290IG11bHRpcGxlIFMtZXhwcmVzc2lvbnMgd2hlcmUgb25seSBvbmUgd2FzIGV4cGVjdGVkLlwiXG4gICAgICAgICAgICBsb2MpXG4gICAgIHwgQ29udCAoQ29udF9zdGF0ZS5QYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIF8pIC0+IHNleHBcbiAgICAgfCBDb250IChfLCBfKSAtPlxuICAgICAgICgqIG5vdCB1c2luZyBbZmVlZF9lbmRfb2ZfaW5wdXRdIGhlcmUgbWVhbnMgXCJhIGJcIiB3aWxsIGVuZCB1cCBoZXJlIGFuZCBub3QgaW5cbiAgICAgICAgICBcIm11bHRpcGxlIFMtZXhwcmVzc2lvbnNcIiBicmFuY2gsIGJ1dCBpdCBkb2Vzbid0IG1hdHRlciB0aGF0IG11Y2ggKilcbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBTLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YSBhdCBwb3NpdGlvbiAlZC4uLlwiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIHBhcnNlX3Bvcy5idWZfcG9zKSlcbiAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPlxuICAgIChtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmIHdpdGhcbiAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgbGV0IGNvbnRfc3RhdGVfc3RyID0gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSBpblxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGluY29tcGxldGUgUy1leHByZXNzaW9uIHdoaWxlIGluIHN0YXRlICVzOiAlc1wiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGNvbnRfc3RhdGVfc3RyXG4gICAgICAgICAgICAoZ2V0X3N1YiBzdHIgMCAoZ2V0X2xlbiBzdHIpKSkpXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHN0ciA9IG9mX3N0cmluZ19iaWdzdHJpbmcgXCJvZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG5sZXQgb2Zfc3RyaW5nX21hbnkgc3RyID0gUGFyc2V4cC5NYW55LnBhcnNlX3N0cmluZ19leG4gc3RyXG5cbmxldCBnZXRfYnN0cl9zdWJfc3RyIGJzdHIgcG9zIGxlbiA9XG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue3BvcyArIGl9XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG47O1xuXG5sZXQgYnN0cl93c19idWYgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgMVxubGV0ICgpID0gYnN0cl93c19idWYuezB9IDwtICcgJ1xuXG5sZXQgb2ZfYmlnc3RyaW5nIGJzdHIgPVxuICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgXCJvZl9iaWdzdHJpbmdcIlxuICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgIGJzdHJfd3NfYnVmXG4gICAgQXJyYXkxLmRpbVxuICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICBic3RyXG47O1xuXG4oKiBMb2FkaW5nICopXG5cbmxldCBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICB0cnlcbiAgICBsZXQgc2V4cHMgPSBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvczpOb25lID9idWYgaWMgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwc1xuICB3aXRoXG4gIHwgZXhjIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZXhjXG47O1xuXG5sZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbmxldCBsb2FkX3NleHBzID9idWYgZmlsZSA9IExpc3QucmV2IChsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUpXG5sZXQgZ2VuX2xvYWRfc2V4cF9sb2MgPSBcIlNleHBsaWIuU2V4cC5nZW5fbG9hZF9zZXhwXCJcblxubGV0IGdlbl9sb2FkX3NleHAgbXlfcGFyc2UgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlID1cbiAgbGV0IGJ1Zl9sZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSA9XG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmOlwiIFwiIHdpdGhcbiAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIFwiJXM6IEVPRiBpbiAlcyB3aGlsZSBpbiBzdGF0ZSAlc1wiXG4gICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICB8IERvbmUgKHNleHAsICh7IFBhcnNlX3Bvcy5idWZfcG9zOyBfIH0gYXMgcGFyc2VfcG9zKSkgd2hlbiBzdHJpY3QgLT5cbiAgICAgICAgbGV0IHJlYyBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3MgfmxlbiA9XG4gICAgICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgICAgfCBEb25lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChzcHJpbnRmIFwiJXM6IG1vcmUgdGhhbiBvbmUgUy1leHByZXNzaW9uIGluIGZpbGUgJXNcIiBnZW5fbG9hZF9zZXhwX2xvYyBmaWxlKVxuICAgICAgICAgIHwgQ29udCAoY29udF9zdGF0ZSwgdGhpc19wYXJzZSkgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgICBpZiBsZW4gPiAwXG4gICAgICAgICAgICB0aGVuIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbiAgICAgICAgICAgIGVsc2UgaWYgY29udF9zdGF0ZSA9IENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICAgICAgICAgICB0aGVuIHNleHBcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiJXM6ICVzIGluIHN0YXRlICVzIGxvYWRpbmcgZmlsZSAlc1wiXG4gICAgICAgICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICAgICAgICBcImFkZGl0aW9uYWwgaW5jb21wbGV0ZSBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAoQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSlcbiAgICAgICAgICAgICAgICAgICBmaWxlKVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBidWZfcG9zKVxuICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHAgPSBsb29wIChta190aGlzX3BhcnNlIG15X3BhcnNlKSBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHNleHBcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxubW9kdWxlIEFubm90YXRlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEFubm90XG5cbiAgbGV0IHBhcnNlID0gcGFyc2Vfc3RyX2Fubm90XG4gIGxldCBwYXJzZV9iaWdzdHJpbmcgPSBwYXJzZV9iaWdzdHJpbmdfYW5ub3RcblxuICBsZXQgaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9XG4gICAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuICA7O1xuXG4gIGxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG4gIGxldCBpbnB1dF9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPSBMaXN0LnJldiAoaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYylcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZyBcIkFubm90YXRlZC5vZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG4gIDs7XG5cbiAgbGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgICBcIkFubm90YXRlZC5vZl9iaWdzdHJpbmdcIlxuICAgICAgcGFyc2VfYmlnc3RyaW5nXG4gICAgICBic3RyX3dzX2J1ZlxuICAgICAgQXJyYXkxLmRpbVxuICAgICAgZ2V0X2JzdHJfc3ViX3N0clxuICAgICAgYnN0clxuICA7O1xuXG4gIGxldCBsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUgPSBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZVxuICBsZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxuICBsZXQgbG9hZF9zZXhwID9zdHJpY3QgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfc2V4cCBwYXJzZSA/c3RyaWN0ID9idWYgZmlsZVxuXG4gIGxldCBjb252IGYgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHNleHAgPSBnZXRfc2V4cCBhbm5vdF9zZXhwIGluXG4gICAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBiYWRfc2V4cCkgYXMgZSAtPlxuICAgICAgKG1hdGNoIGZpbmRfc2V4cCBhbm5vdF9zZXhwIGJhZF9zZXhwIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gcmFpc2UgZVxuICAgICAgIHwgU29tZSBiYWRfYW5ub3Rfc2V4cCAtPiBgRXJyb3IgKGV4YywgYmFkX2Fubm90X3NleHApKVxuICA7O1xuXG4gIGxldCBnZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwID1cbiAgICBsZXQgcmFuZ2UgPSBnZXRfcmFuZ2UgYW5ub3Rfc2V4cCBpblxuICAgIGxldCB7IHN0YXJ0X3BvcyA9IHsgbGluZTsgY29sOyBvZmZzZXQgPSBfIH07IGVuZF9wb3MgPSBfIH0gPSByYW5nZSBpblxuICAgIGxldCBsb2MgPSBzcHJpbnRmIFwiJXM6JWQ6JWRcIiBmaWxlIGxpbmUgY29sIGluXG4gICAgT2Zfc2V4cF9lcnJvciAoQW5ub3QuQ29udl9leG4gKGxvYywgZXhjKSwgZ2V0X3NleHAgYW5ub3Rfc2V4cClcbiAgOztcbmVuZFxuXG5sZXQgbG9hZF9zZXhwX2NvbnYgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgc2V4cCA9IGxvYWRfc2V4cCB+c3RyaWN0IH5idWYgZmlsZSBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKEFubm90YXRlZC5sb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUpXG47O1xuXG5sZXQgcmFpc2VfY29udl9leG4gfmZpbGUgPSBmdW5jdGlvblxuICB8IGBSZXN1bHQgcmVzIC0+IHJlc1xuICB8IGBFcnJvciAoZXhjLCBhbm5vdF9zZXhwKSAtPiByYWlzZSAoQW5ub3RhdGVkLmdldF9jb252X2V4biB+ZmlsZSB+ZXhjIGFubm90X3NleHApXG47O1xuXG5sZXQgbG9hZF9zZXhwX2NvbnZfZXhuID9zdHJpY3QgP2J1ZiBmaWxlIGYgPVxuICByYWlzZV9jb252X2V4biB+ZmlsZSAobG9hZF9zZXhwX2NvbnYgP3N0cmljdCA/YnVmIGZpbGUgZilcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnYgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHJldl9zZXhwcyA9IGxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSBpblxuICB0cnkgTGlzdC5yZXZfbWFwIChmdW4gc2V4cCAtPiBgUmVzdWx0IChmIHNleHApKSByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwIChmdW4gYW5ub3Rfc2V4cCAtPiBBbm5vdGF0ZWQuY29udiBmIGFubm90X3NleHApIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnZfZXhuID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCBmIHJldl9zZXhwcyB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT5cbiAgICAobWF0Y2ggQW5ub3RhdGVkLmxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSB3aXRoXG4gICAgIHwgW10gLT5cbiAgICAgICAoKiBGaWxlIGlzIG5vdyBlbXB0eSAtIHBlcmhhcHMgaXQgd2FzIGEgdGVtcG9yYXJ5IGZpbGUgaGFuZGxlPyAqKVxuICAgICAgIHJhaXNlIGVcbiAgICAgfCByZXZfYW5ub3Rfc2V4cHMgLT5cbiAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgIChmdW4gYW5ub3Rfc2V4cCAtPiByYWlzZV9jb252X2V4biB+ZmlsZSAoQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSlcbiAgICAgICAgIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIGFubm90X29mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKGFubm90X29mX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnYgc3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIEFubm90YXRlZC5vZl9zdHJpbmcgc3RyIGZcblxubGV0IG9mX2JpZ3N0cmluZ19jb252IGJzdHIgZiA9XG4gIGdlbl9vZl9zdHJpbmdfY29udiBvZl9iaWdzdHJpbmcgQW5ub3RhdGVkLm9mX2JpZ3N0cmluZyBic3RyIGZcbjs7XG5cbm1vZHVsZSBPZl9zdHJpbmdfY29udl9leG4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGV4YyA6IGV4blxuICAgIDsgc2V4cCA6IFR5cGUudFxuICAgIDsgc3ViX3NleHAgOiBUeXBlLnRcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEUgb2YgdFxuXG4gIGxldCAoKSA9XG4gICAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRV0gKGZ1bmN0aW9uXG4gICAgICB8IEUgb3NjZSAtPlxuICAgICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZVxuICAgICAgICAgICgpXG4gICAgICAgICAgfmludmFsaWRfc2V4cDpvc2NlLnN1Yl9zZXhwXG4gICAgICAgICAgfmV4bjpvc2NlLmV4Y1xuICAgICAgICAgIH5jb250YWluaW5nX3NleHA6b3NjZS5zZXhwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuZW5kXG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgZiBzZXhwIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHN1Yl9zZXhwKSAtPlxuICAgIHJhaXNlIChPZl9zdHJpbmdfY29udl9leG4uRSB7IE9mX3N0cmluZ19jb252X2V4bi5leGM7IHNleHA7IHN1Yl9zZXhwIH0pXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnZfZXhuIHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGZcbmxldCBvZl9iaWdzdHJpbmdfY29udl9leG4gYnN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9iaWdzdHJpbmcgYnN0ciBmXG5cbmxldCBvZl9zdHJpbmdfbWFueV9jb252X2V4biBzdHIgZiA9XG4gIGxldCBzZXhwcyA9IG9mX3N0cmluZ19tYW55IHN0ciBpblxuICBMaXN0Lm1hcCAoZnVuIHNleHAgLT4gZ2VuX29mX3N0cmluZ19jb252X2V4biAoZnVuIHggLT4geCkgc2V4cCBmKSBzZXhwc1xuOztcblxuKCogVXRpbGl0aWVzIGZvciBhdXRvbWF0ZWQgdHlwZSBjb252ZXJzaW9ucyAqKVxuXG5sZXQgdW5pdCA9IExpc3QgW11cblxubGV0IGlzX3VuaXQgPSBmdW5jdGlvblxuICB8IExpc3QgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmV4dGVybmFsIHNleHBfb2ZfdCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRfb2Zfc2V4cCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuKCogVXRpbGl0aWVzIGZvciBjb252ZXJzaW9uIGVycm9yIGhhbmRsaW5nICopXG5cbnR5cGUgZm91bmQgPVxuICBbIGBGb3VuZFxuICB8IGBQb3Mgb2YgaW50ICogZm91bmRcbiAgXVxuXG50eXBlIHNlYXJjaF9yZXN1bHQgPVxuICBbIGBOb3RfZm91bmRcbiAgfCBmb3VuZFxuICBdXG5cbmxldCByZWMgc2VhcmNoX3BoeXNpY2FsIHNleHAgfmNvbnRhaW5lZCA9XG4gIGlmIHNleHAgPT0gY29udGFpbmVkXG4gIHRoZW4gYEZvdW5kXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSBfIC0+IGBOb3RfZm91bmRcbiAgICB8IExpc3QgbHN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYE5vdF9mb3VuZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCByZXMgPSBzZWFyY2hfcGh5c2ljYWwgaCB+Y29udGFpbmVkIGluXG4gICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgIHwgYE5vdF9mb3VuZCAtPiBsb29wIChpICsgMSkgdFxuICAgICAgICAgICB8ICNmb3VuZCBhcyBmb3VuZCAtPiBgUG9zIChpLCBmb3VuZCkpXG4gICAgICBpblxuICAgICAgbG9vcCAwIGxzdClcbjs7XG5cbmxldCByZWMgc3Vic3RfZm91bmQgc2V4cCB+c3Vic3QgPSBmdW5jdGlvblxuICB8IGBGb3VuZCAtPiBzdWJzdFxuICB8IGBQb3MgKHBvcywgZm91bmQpIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IEF0b20gXyAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogYXRvbSB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgIHwgTGlzdCBsc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgYWNjIHBvcyA9IGZ1bmN0aW9uXG4gICAgICAgICB8IFtdIC0+IGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwLnN1YnN0X2ZvdW5kOiBzaG9ydCBsaXN0IHdoZW4gcG9zaXRpb24gcmVxdWVzdGVkXCJcbiAgICAgICAgIHwgaCA6OiB0IHdoZW4gcG9zIDw+IDAgLT4gbG9vcCAoaCA6OiBhY2MpIChwb3MgLSAxKSB0XG4gICAgICAgICB8IGggOjogdCAtPiBMaXN0IChMaXN0LnJldl9hcHBlbmQgYWNjIChzdWJzdF9mb3VuZCBoIH5zdWJzdCBmb3VuZCA6OiB0KSlcbiAgICAgICBpblxuICAgICAgIGxvb3AgW10gcG9zIGxzdClcbjs7XG4iLCIoKiBwYWNrYWdpbmcgb2YgYW5ub3RhdGVkIHNleHAgZnVuY3Rpb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgZiB0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbmluY2x1ZGUgVHlwZV93aXRoX2xheW91dFxuXG50eXBlIHBvcyA9IFNyY19wb3MuUmVsYXRpdmUudCA9XG4gIHsgcm93IDogaW50XG4gIDsgY29sIDogaW50XG4gIH1cblxubGV0IHNleHBfb2ZfcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZS5zZXhwX29mX3RcblxubW9kdWxlIExleGVyID0gc3RydWN0XG4gIGxldCBtYWluID0gTGV4ZXIubWFpbl93aXRoX2xheW91dFxuZW5kXG5cbm1vZHVsZSBQYXJzZXIgPSBQYXJzZXJfd2l0aF9sYXlvdXRcblxubW9kdWxlIFJlbmRlciA9IHN0cnVjdFxuICBtb2R1bGUgUmVsX3BvcyA9IFNyY19wb3MuUmVsYXRpdmVcbiAgbW9kdWxlIEFic19wb3MgPSBTcmNfcG9zLkFic29sdXRlXG5cbiAgdHlwZSBsYXN0X2F0b20gPVxuICAgIHsgaW1tZWRfYWZ0ZXIgOiBBYnNfcG9zLnRcbiAgICA7IHVuZXNjYXBlZCA6IGJvb2xcbiAgICB9XG5cbiAgdHlwZSBzdGF0ZSA9XG4gICAgeyBtdXRhYmxlIHJvd19zaGlmdCA6IFJlbF9wb3MudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50IDogQWJzX3Bvcy50XG4gICAgOyBtdXRhYmxlIGxhc3RfYXRvbSA6IGxhc3RfYXRvbSBvcHRpb25cbiAgICA7IG11dGFibGUgbGFzdF9jb21tZW50X3JvdyA6IGludFxuICAgIH1cblxuICAoKiB0aGUgcG9pbnQgb2YgW2ltbWVkX2FmdGVyX2xhc3RfYXRvbV0gaXMgdG8gcHJldmVudFxuICAgICAoQSBCIEMpIGZyb20gcmVuZGVyaW5nIGFzIChBIEJCQykgYWZ0ZXIgd2UgcmVwbGFjZSBCIHdpdGggQkIgKilcblxuICB0eXBlICdhIHQgPSAoY2hhciAtPiB1bml0KSAtPiBzdGF0ZSAtPiAnYVxuXG4gIGxldCByZXR1cm4gYSBfcHV0YyBfc3QgPSBhXG4gIGxldCBiaW5kIG0gfmYgcHV0YyBzdCA9IGYgKG0gcHV0YyBzdCkgcHV0YyBzdFxuXG4gIGxldCBydW4gcHV0YyBtID1cbiAgICBtXG4gICAgICBwdXRjXG4gICAgICB7IHJvd19zaGlmdCA9IFJlbF9wb3MuemVyb1xuICAgICAgOyBjdXJyZW50ID0gQWJzX3Bvcy5vcmlnaW5cbiAgICAgIDsgbGFzdF9hdG9tID0gTm9uZVxuICAgICAgOyBsYXN0X2NvbW1lbnRfcm93ID0gMCAoKiBiZWZvcmUgdGhlIGZpbGUgc3RhcnRzICopXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfY2hhciBwdXRjIHN0IGMgPVxuICAgIGxldCB7IEFic19wb3MuY29sOyByb3cgfSA9IHN0LmN1cnJlbnQgaW5cbiAgICBwdXRjIGM7XG4gICAgaWYgYyA9ICdcXG4nXG4gICAgdGhlbiBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3cgPSAxICsgcm93OyBjb2wgPSAxIH1cbiAgICBlbHNlIHN0LmN1cnJlbnQgPC0geyBBYnNfcG9zLnJvdzsgY29sID0gMSArIGNvbCB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfc3RyaW5nIHB1dGMgc3Qgc3RyID1cbiAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCBzdHIuW2ldXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXJzIHB1dGMgc3QgYyB+biA9IGVtaXRfc3RyaW5nIHB1dGMgc3QgKFN0cmluZy5tYWtlIG4gYylcblxuICBsZXQgYWR2YW5jZSBwdXRjIH5hbmNob3Igc3QgfmJ5OmRlbHRhIH51bmVzY2FwZWRfYXRvbSB+bGluZV9jb21tZW50ID1cbiAgICBsZXQgbmV3X3BvcyA9IEFic19wb3MuYWRkIChBYnNfcG9zLmFkZCBhbmNob3IgZGVsdGEpIHN0LnJvd19zaGlmdCBpblxuICAgIGxldCBuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d29fdW5lc2NhcGVkX2F0b21zX2xlc3RfdGhleV9iZWNvbWVfb25lID1cbiAgICAgIHVuZXNjYXBlZF9hdG9tXG4gICAgICAmJlxuICAgICAgbWF0Y2ggc3QubGFzdF9hdG9tIHdpdGhcbiAgICAgIHwgU29tZSB7IGltbWVkX2FmdGVyOyB1bmVzY2FwZWQgPSBwcmV2X3VuZXNjYXBlZCB9IC0+XG4gICAgICAgIG5ld19wb3MgPSBpbW1lZF9hZnRlciAmJiBwcmV2X3VuZXNjYXBlZFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgaW5cbiAgICAoKiBhdm9pZCBqb2luaW5nIHN1YnNlcXVlbnQgaXRlbXMgaW50byBhIHByZWNlZGluZyBsaW5lIGNvbW1lbnQgKilcbiAgICBsZXQgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnQgPSBuZXdfcG9zLnJvdyA9IHN0Lmxhc3RfY29tbWVudF9yb3cgaW5cbiAgICBsZXQgbmVlZF90b19yZXBvc2l0aW9uID1cbiAgICAgIChub3QgKEFic19wb3MuZ2VxIG5ld19wb3Mgc3QuY3VycmVudCkpXG4gICAgICB8fCBuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudFxuICAgICAgfHwgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZVxuICAgIGluXG4gICAgbGV0IHJvd19kZWx0YSwgbmV3X3BvcyA9XG4gICAgICBpZiBuZWVkX3RvX3JlcG9zaXRpb25cbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiByZXBvc2l0aW9uaW5nIGhldXJpc3RpYzoganVzdCBtb3ZlIHRvIHRoZSBuZXh0IGZyZXNoIHJvdyAqKVxuICAgICAgICBsZXQgbmV3X3JvdyA9IDEgKyBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICAgIGxldCByb3dfZGVsdGEgPSBuZXdfcm93IC0gbmV3X3Bvcy5BYnNfcG9zLnJvdyBpblxuICAgICAgICByb3dfZGVsdGEsIHsgQWJzX3Bvcy5yb3cgPSBuZXdfcm93OyBjb2wgPSBuZXdfcG9zLkFic19wb3MuY29sIH0pXG4gICAgICBlbHNlIDAsIG5ld19wb3NcbiAgICBpblxuICAgICgqIGFkdmFuY2UgdG8gbmV3X3BvcyBieSBlbWl0dGluZyB3aGl0ZXNwYWNlICopXG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLnJvdyA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3dcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLnJvdyAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3cgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnXFxuJyB+bik7XG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLmNvbCA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2xcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2wgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnICcgfm4pO1xuICAgIGFzc2VydCAobmV3X3BvcyA9IHN0LmN1cnJlbnQpO1xuICAgIGlmIGxpbmVfY29tbWVudCB0aGVuIHN0Lmxhc3RfY29tbWVudF9yb3cgPC0gc3QuY3VycmVudC5yb3c7XG4gICAgc3Qucm93X3NoaWZ0XG4gICAgPC0geyBzdC5yb3dfc2hpZnQgd2l0aCBSZWxfcG9zLnJvdyA9IHN0LnJvd19zaGlmdC5SZWxfcG9zLnJvdyArIHJvd19kZWx0YSB9XG4gIDs7XG5cbiAgbGV0IHJlYyByZW5kZXJfdCBwdXRjIH5hbmNob3IgKHN0IDogc3RhdGUpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQXRvbSAoZGVsdGEsIHRleHQsIGZtdF90ZXh0KSAtPlxuICAgICAgbGV0IGZtdF90ZXh0ID1cbiAgICAgICAgbWF0Y2ggZm10X3RleHQgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT4gUHJlX3NleHAubWFjaF9tYXliZV9lc2Nfc3RyIHRleHRcbiAgICAgICAgfCBTb21lIHRleHQgLT4gdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCB1bmVzY2FwZWQgPSBmbXRfdGV4dC5bMF0gPD4gJ1wiJyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTp1bmVzY2FwZWQgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgZm10X3RleHQ7XG4gICAgICBzdC5sYXN0X2F0b20gPC0gU29tZSB7IGltbWVkX2FmdGVyID0gc3QuY3VycmVudDsgdW5lc2NhcGVkIH1cbiAgICB8IExpc3QgKHN0YXJ0X2RlbHRhLCB0b2NzLCBlbmRfZGVsdGEpIC0+XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OnN0YXJ0X2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBsZXQgY2hpbGRfYW5jaG9yID0gQWJzX3Bvcy5zdWIgc3QuY3VycmVudCBzdC5yb3dfc2hpZnQgaW5cbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcoJztcbiAgICAgIExpc3QuaXRlciB0b2NzIH5mOihmdW4gdG9jIC0+IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOmNoaWxkX2FuY2hvciBzdCB0b2MpO1xuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTplbmRfZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcpJztcbiAgICAgICgpXG5cbiAgYW5kIHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yIHN0ID0gZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICAgIHwgQ29tbWVudCBjIC0+IHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCBjXG5cbiAgYW5kIHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBQbGFpbl9jb21tZW50IChkZWx0YSwgdGV4dCkgLT5cbiAgICAgIGxldCBsaW5lX2NvbW1lbnQgPSBTdHJpbmcubGVuZ3RoIHRleHQgPiAwICYmIHRleHQuWzBdID0gJzsnIGluXG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IHRleHRcbiAgICB8IFNleHBfY29tbWVudCAoZGVsdGEsIGNzLCB0KSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCBcIiM7XCI7XG4gICAgICBMaXN0Lml0ZXIgY3MgfmY6KHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCk7XG4gICAgICByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICA7O1xuXG4gIGxldCByZW5kZXIgYXNleHAgcHV0YyBzdCA9IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOkFic19wb3Mub3JpZ2luIHN0IGFzZXhwXG4gIGxldCBzZXhwID0gcmVuZGVyXG5lbmRcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoVHlwZS50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChUeXBlLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChUeXBlLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20gKF8sIHgsIF8pIC0+IGsgKFR5cGUuQXRvbSB4KVxuICAgICAgfCBMaXN0IChfLCB0b2NzLCBfKSAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoVHlwZS5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuIFByaW50Zlxub3BlbiBCaWdhcnJheVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm9wZW4gU2V4cFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0MzJfdmVjID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0NjRfdmVjID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYyA9IGZsb2F0NjRfdmVjXG50eXBlIGZsb2F0MzJfbWF0ID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIGZsb2F0NjRfbWF0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdCA9IGZsb2F0NjRfbWF0XG5cbmxldCBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWMgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5MS5kaW0gdmVjIGRvd250byAxIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX2Zsb2F0IHZlYy57aX0gOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfYmlnc3RyaW5nIChic3RyIDogYmlnc3RyaW5nKSA9XG4gIGxldCBuID0gQXJyYXkxLmRpbSBic3RyIGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgc3RyIGkgYnN0ci57aX1cbiAgZG9uZTtcbiAgQXRvbSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgc2V4cF9vZl9mbG9hdDMyX3ZlYyAodmVjIDogZmxvYXQzMl92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl9mbG9hdDY0X3ZlYyAodmVjIDogZmxvYXQ2NF92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl92ZWMgKHZlYyA6IHZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcblxubGV0IHNleHBfb2ZfZmxvYXRfbWF0IG1hdCA9XG4gIGxldCBtID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBuID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gICgqIEl0J3Mgc3VycHJpc2luZyB0aGF0IHdlIHNlcmlhbGl6ZSBbRm9ydHJhbl9sYXlvdXRdIG1hdHJpY2VzIGluIHJvdy1tYWpvciBvcmRlci4gSSBjYW5cbiAgICAgb25seSBzcGVjdWxhdGUgdGhhdCBpdCB3YXMgY2hvc2VuIGZvciByZWFkYWJpbGl0eS4gVGhlIGNhY2hlIHBlcmZvcm1hbmNlIGlzXG4gICAgIGlycmVsZXZhbnQgYmVjYXVzZSBwZW9wbGUgd2hvIGNhcmUgd29uJ3Qgc2VyaWFsaXplIHRvIHNleHAuICopXG4gIGZvciByb3cgPSBuIGRvd250byAxIGRvXG4gICAgZm9yIGNvbCA9IG0gZG93bnRvIDEgZG9cbiAgICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCBtYXQue2NvbCwgcm93fSA6OiAhbHN0X3JlZlxuICAgIGRvbmVcbiAgZG9uZTtcbiAgTGlzdCAoc2V4cF9vZl9pbnQgbSA6OiBzZXhwX29mX2ludCBuIDo6ICFsc3RfcmVmKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl9tYXQgKG1hdCA6IGZsb2F0MzJfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfZmxvYXQ2NF9tYXQgKG1hdCA6IGZsb2F0NjRfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfbWF0IChtYXQgOiBtYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgYmlnc3RyaW5nX3NleHBfZ3JhbW1hciA6IGJpZ3N0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5cbmxldCBiaWdzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgYnN0ciA9IEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCBsZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgYnN0ci57aX0gPC0gc3RyLltpXVxuICAgIGRvbmU7XG4gICAgYnN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0X3ZlYyBjcmVhdGVfZmxvYXRfdmVjIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IGVtcHR5X2Zsb2F0X3ZlY1xuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGxzdCBpblxuICAgIGxldCByZXMgPSBjcmVhdGVfZmxvYXRfdmVjIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMue2l9IDwtIGZsb2F0X29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSBsc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X3ZlY19vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBlbXB0eV9mbG9hdDMyX3ZlYyA9IGNyZWF0ZV9mbG9hdDMyX3ZlYyAwXG5sZXQgZW1wdHlfZmxvYXQ2NF92ZWMgPSBjcmVhdGVfZmxvYXQ2NF92ZWMgMFxubGV0IGZsb2F0MzJfdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDMyX3ZlYyBjcmVhdGVfZmxvYXQzMl92ZWNcbmxldCBmbG9hdDY0X3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDY0X3ZlYyBjcmVhdGVfZmxvYXQ2NF92ZWNcbmxldCB2ZWNfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgKE1hbnkgRmxvYXQpIH1cbmxldCBmbG9hdDMyX3ZlY19zZXhwX2dyYW1tYXIgPSB2ZWNfc2V4cF9ncmFtbWFyXG5sZXQgZmxvYXQ2NF92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxuXG5sZXQgY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzID1cbiAgaWYgZGF0YSA9IFtdIHRoZW4gcmVzIGVsc2Ugb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiB0b28gbXVjaCBkYXRhXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdF9tYXQgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgKHNtIDo6IHNuIDo6IGRhdGEpIC0+XG4gICAgbGV0IG0gPSBpbnRfb2Zfc2V4cCBzbSBpblxuICAgIGxldCBuID0gaW50X29mX3NleHAgc24gaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X21hdCBtIG4gaW5cbiAgICBpZiBtID0gMCB8fCBuID0gMFxuICAgIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3BfY29scyBjb2wgZGF0YSA9XG4gICAgICAgIGxldCB2ZWMgPSBBcnJheTIuc2xpY2VfcmlnaHQgcmVzIGNvbCBpblxuICAgICAgICBsZXQgcmVjIGxvb3Bfcm93cyByb3cgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBub3QgZW5vdWdoIGRhdGFcIiBzZXhwXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIHZlYy57cm93fSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgICAgICBpZiByb3cgPSBtXG4gICAgICAgICAgICB0aGVuIGlmIGNvbCA9IG4gdGhlbiBjaGVja190b29fbXVjaF9kYXRhIHNleHAgdCByZXMgZWxzZSBsb29wX2NvbHMgKGNvbCArIDEpIHRcbiAgICAgICAgICAgIGVsc2UgbG9vcF9yb3dzIChyb3cgKyAxKSB0XG4gICAgICAgIGluXG4gICAgICAgIGxvb3Bfcm93cyAxIGRhdGFcbiAgICAgIGluXG4gICAgICBsb29wX2NvbHMgMSBkYXRhKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgdG9vIHNob3J0XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNyZWF0ZV9mbG9hdDMyX21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dFxubGV0IGNyZWF0ZV9mbG9hdDY0X21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dFxubGV0IGZsb2F0MzJfbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQzMl9tYXRcbmxldCBmbG9hdDY0X21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5sZXQgbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQ2NF9tYXRcblxubGV0IG1hdF9zZXhwX2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoQ29ucyAoSW50ZWdlciwgQ29ucyAoSW50ZWdlciwgTWFueSBGbG9hdCkpKSB9XG47O1xuXG5sZXQgZmxvYXQzMl9tYXRfc2V4cF9ncmFtbWFyID0gbWF0X3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBzdHJpbmdfb2ZfX29mX19zZXhwX29mIHRvX3NleHAgeCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwIHgpXG5cbmxldCBvZl9zdHJpbmdfX29mX19vZl9zZXhwIG9mX3NleHAgcyA9XG4gIHRyeVxuICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgcyBpblxuICAgIG9mX3NleHAgc2V4cFxuICB3aXRoXG4gIHwgZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoc3ByaW50ZiBcIm9mX3N0cmluZyBmYWlsZWQgb24gJXMgd2l0aCAlc1wiIHMgKFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSkpKVxuOztcbiIsIm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXhwX29mX3QgPSBDb252LnNleHBfb2ZfaGFzaHRibFxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5oYXNodGJsX29mX3NleHBcbmVuZFxuXG5tb2R1bGUgTGF6eSA9IHN0cnVjdFxuICBpbmNsdWRlIExhenlcblxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2xhenlfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5sZXQgc2V4cF9vZl91bml0ID0gQ29udi5zZXhwX29mX3VuaXRcbmxldCB1bml0X29mX3NleHAgPSBDb252LnVuaXRfb2Zfc2V4cFxubGV0IHVuaXRfc2V4cF9ncmFtbWFyID0gQ29udi51bml0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYm9vbCA9IENvbnYuc2V4cF9vZl9ib29sXG5sZXQgYm9vbF9vZl9zZXhwID0gQ29udi5ib29sX29mX3NleHBcbmxldCBib29sX3NleHBfZ3JhbW1hciA9IENvbnYuYm9vbF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX3N0cmluZyA9IENvbnYuc2V4cF9vZl9zdHJpbmdcbmxldCBzdHJpbmdfb2Zfc2V4cCA9IENvbnYuc3RyaW5nX29mX3NleHBcbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyID0gQ29udi5zdHJpbmdfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9jaGFyID0gQ29udi5zZXhwX29mX2NoYXJcbmxldCBjaGFyX29mX3NleHAgPSBDb252LmNoYXJfb2Zfc2V4cFxubGV0IGNoYXJfc2V4cF9ncmFtbWFyID0gQ29udi5jaGFyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50ID0gQ29udi5zZXhwX29mX2ludFxubGV0IGludF9vZl9zZXhwID0gQ29udi5pbnRfb2Zfc2V4cFxubGV0IGludF9zZXhwX2dyYW1tYXIgPSBDb252LmludF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Zsb2F0ID0gQ29udi5zZXhwX29mX2Zsb2F0XG5sZXQgZmxvYXRfb2Zfc2V4cCA9IENvbnYuZmxvYXRfb2Zfc2V4cFxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA9IENvbnYuZmxvYXRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQzMiA9IENvbnYuc2V4cF9vZl9pbnQzMlxubGV0IGludDMyX29mX3NleHAgPSBDb252LmludDMyX29mX3NleHBcbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgPSBDb252LmludDMyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50NjQgPSBDb252LnNleHBfb2ZfaW50NjRcbmxldCBpbnQ2NF9vZl9zZXhwID0gQ29udi5pbnQ2NF9vZl9zZXhwXG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQ2NF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX25hdGl2ZWludCA9IENvbnYuc2V4cF9vZl9uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IENvbnYubmF0aXZlaW50X29mX3NleHBcbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5uYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9yZWYgPSBDb252LnNleHBfb2ZfcmVmXG5sZXQgcmVmX29mX3NleHAgPSBDb252LnJlZl9vZl9zZXhwXG5sZXQgcmVmX3NleHBfZ3JhbW1hciA9IENvbnYucmVmX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGF6eV90ID0gQ29udi5zZXhwX29mX2xhenlfdFxubGV0IGxhenlfdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX29wdGlvbiA9IENvbnYuc2V4cF9vZl9vcHRpb25cbmxldCBvcHRpb25fb2Zfc2V4cCA9IENvbnYub3B0aW9uX29mX3NleHBcbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyID0gQ29udi5vcHRpb25fc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9saXN0ID0gQ29udi5zZXhwX29mX2xpc3RcbmxldCBsaXN0X29mX3NleHAgPSBDb252Lmxpc3Rfb2Zfc2V4cFxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyID0gQ29udi5saXN0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYXJyYXkgPSBDb252LnNleHBfb2ZfYXJyYXlcbmxldCBhcnJheV9vZl9zZXhwID0gQ29udi5hcnJheV9vZl9zZXhwXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyID0gQ29udi5hcnJheV9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2V4biA9IENvbnYuc2V4cF9vZl9leG5cbmxldCBleG5fc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG4iLCJpbmNsdWRlIFNleHBfZ3JhbW1hcl9pbnRmXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5sZXQgcmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0aGVyIH50X29mX3NleHAgfnRfc2V4cF9ncmFtbWFyID1cbiAgdF9vZl9zZXhwLCB0X3NleHBfZ3JhbW1hclxuOztcbiIsIigqIFBhdGg6IE1vZHVsZSBmb3IgU3Vic3RpdHV0aW9ucyB3aXRoaW4gUy1leHByZXNzaW9ucyAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBTZXhwXG5cbnR5cGUgZWwgPVxuICB8IFBvcyBvZiBpbnRcbiAgfCBNYXRjaCBvZiBzdHJpbmcgKiBpbnRcbiAgfCBSZWMgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IGVsIGxpc3RcblxubGV0IGlsbGVnYWxfYXRvbSBsb2Mgc2V4cCA9XG4gIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBhdG9tOiAlc1wiIGxvYyAoU2V4cC50b19zdHJpbmcgc2V4cCkpXG47O1xuXG5sZXQgZXh0cmFjdF9wb3NfbHN0IGxvYyBzZXhwIGl4IGxzdCA9XG4gIGxldCByZWMgbG9vcCBhY2MgbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLiVzOiBpbGxlZ2FsIGluZGV4ICVkIGluOiAlc1wiIGxvYyBpeCBzZXhwX3N0cilcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3Vic3QgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgICB8IFNvbWUgeCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjICh4IDo6IHQpXG4gICAgICAgIGluXG4gICAgICAgIHN1YnN0LCBoKVxuICAgICAgZWxzZSBsb29wIChoIDo6IGFjYykgKG4gLSAxKSB0XG4gIGluXG4gIGxvb3AgW10gaXggbHN0XG47O1xuXG5sZXQgZXh0cmFjdF9wb3MgbiA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBsc3QgYXMgc2V4cCAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X3Bvc1wiIHNleHAgbiBsc3QgaW5cbiAgICAoZnVuIHggLT4gTGlzdCAoc3Vic3QgeCkpLCBlbFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcG9zXCIgc2V4cFxuOztcblxubGV0IGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCA9IGZ1bmN0aW9uXG4gIHwgTGlzdCAoKEF0b20gc3RyIGFzIHNleHApIDo6IGFyZ3MpIHdoZW4gc3RyID0gdGFnIC0+XG4gICAgbGV0IHN1YnN0LCBlbCA9IGV4dHJhY3RfcG9zX2xzdCBcImV4dHJhY3RfbWF0Y2hcIiAoTGlzdCBhcmdzKSBhcmdfaXggYXJncyBpblxuICAgIChmdW4gbWF5YmVfeCAtPiBMaXN0IChzZXhwIDo6IHN1YnN0IG1heWJlX3gpKSwgZWxcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICBmYWlsd2l0aCAoXCJQYXRoLmV4dHJhY3RfbWF0Y2g6IHVuZXhwZWN0ZWQgbmVzdGVkIGxpc3QgaW46IFwiIF4gc2V4cF9zdHIpXG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9tYXRjaFwiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguZXh0cmFjdF9yZWM6IGtleSBcXFwiJXNcXFwiIG5vdCBmb3VuZCBpbjogJXNcIiBrZXkgc2V4cF9zdHIpXG4gICAgICB8IExpc3QgWyAoQXRvbSBzdHIgYXMgc2V4cCk7IHYgXSA6OiByZXN0IHdoZW4gc3RyID0ga2V5IC0+XG4gICAgICAgIGxldCBzdWJzdCB4ID0gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoTGlzdCBbIHNleHA7IHggXSA6OiByZXN0KSkgaW5cbiAgICAgICAgc3Vic3QsIHZcbiAgICAgIHwgaCA6OiB0IC0+IGxvb3AgKGggOjogYWNjKSB0XG4gICAgaW5cbiAgICBsb29wIFtdIGxzdFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcmVjXCIgc2V4cFxuOztcblxubGV0IGlkIHggPSB4XG5cbmxldCByZWMgc3Vic3Rfb3B0aW9uIChzdXBfc3Vic3QsIGVsKSByZXN0ID1cbiAgbGV0IHN1Yl9zdWJzdCwgc3ViX2VsID0gc3Vic3RfcGF0aCBlbCByZXN0IGluXG4gIGxldCBzdWJzdCB4ID0gc3VwX3N1YnN0IChTb21lIChzdWJfc3Vic3QgeCkpIGluXG4gIHN1YnN0LCBzdWJfZWxcblxuYW5kIHN1YnN0X3BhdGggc2V4cCA9IGZ1bmN0aW9uXG4gIHwgUG9zIG4gOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfcG9zIG4gc2V4cCkgdFxuICB8IE1hdGNoICh0YWcsIGFyZ19peCkgOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCBzZXhwKSB0XG4gIHwgUmVjIGtleSA6OiByZXN0IC0+XG4gICAgbGV0IHJlY19zdWJzdCwgZWwgPSBleHRyYWN0X3JlYyBrZXkgc2V4cCBpblxuICAgIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICAgIGxldCBzdWJzdCB4ID0gcmVjX3N1YnN0IChzdWJfc3Vic3QgeCkgaW5cbiAgICBzdWJzdCwgc3ViX2VsXG4gIHwgW10gLT4gaWQsIHNleHBcbjs7XG5cbmxldCBpbXBsb2RlIGxzdCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGl4ID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgQnl0ZXMuc2V0IHN0ciBpeCBoO1xuICAgICAgbG9vcCAoaXggKyAxKSB0XG4gICAgfCBbXSAtPiBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuICBpblxuICBsb29wIDAgbHN0XG47O1xuXG5sZXQgZmFpbF9wYXJzZSBtc2cgPSBmYWlsd2l0aCAoXCJQYXRoLnBhcnNlOiBcIiBeIG1zZylcblxubGV0IHBhcnNlIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gZmFpbF9wYXJzZSBcInBhdGggZW1wdHlcIlxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgYWNjIGRvdF9peCA9XG4gICAgICBtYXRjaCBzdHIuW2RvdF9peF0gd2l0aFxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IGRvdF9peDEgPSBkb3RfaXggKyAxIGluXG4gICAgICAgIGlmIGRvdF9peDEgPSBsZW5cbiAgICAgICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBwYXJzZV9kb3QgYWNjIHN0cl9hY2MgaXggPVxuICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIFJlYyAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYykpIF1cbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICAgICAgICAgIHwgJ1snIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBwYXJzZV9pbmRleCBpbmRleF9hY2MgaXggPVxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgICAgICAgIHRoZW4gZmFpbF9wYXJzZSBcIkVPRiByZWFkaW5nIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSwgaW5kZXhfYWNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IChTb21lIChpbnRfb2ZfY2hhciBjIC0gNDgpKSAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICgnMCcgLi4gJzknIGFzIGMpLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfaW5kZXhfYWNjID0gU29tZSAoKDEwICogaW5kZXhfYWNjKSArIGludF9vZl9jaGFyIGMgLSA0OCkgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCBuZXdfaW5kZXhfYWNjIChpeCArIDEpXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBOb25lIC0+IGZhaWxfcGFyc2UgXCJlbXB0eSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBQb3MgaW5kZXhfYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hdGNoIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSwgaW5kZXhfYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGl4MSA9IGl4ICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4MSA9IGxlblxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIHBhdGhfZWwgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbG9vcCAocGF0aF9lbCA6OiBhY2MpIGl4MVxuICAgICAgICAgICAgICAgICAgICB8IGMsIF8gLT4gZmFpbF9wYXJzZSAoc3ByaW50ZiBcImlsbGVnYWwgY2hhcmFjdGVyIGluIGluZGV4OiAlY1wiIGMpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggTm9uZSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICdcXFxcJyAtPlxuICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgYWZ0ZXIgZXNjYXBlXCJcbiAgICAgICAgICAgICAgICBlbHNlIHBhcnNlX2RvdCBhY2MgKHN0ci5baXgxXSA6OiBzdHJfYWNjKSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXSB0aGVuIGZhaWxfcGFyc2UgXCJkb3VibGUgJy4nXCI7XG4gICAgICAgICAgICAgICAgbGV0IHBhdGhfZWwgPSBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2RvdCAocGF0aF9lbCA6OiBhY2MpIFtdIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgYyAtPiBwYXJzZV9kb3QgYWNjIChjIDo6IHN0cl9hY2MpIChpeCArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZG90IGFjYyBbXSBkb3RfaXgxKVxuICAgICAgfCBjIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCInLicgZXhwZWN0ZWQ7IGdvdCAnJWMnXCIgYylcbiAgICBpblxuICAgIGxvb3AgW10gMClcbjs7XG5cbmxldCBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCA9XG4gIGxldCBwYXRoID1cbiAgICBtYXRjaCBwYXRoLCBzdHIgd2l0aFxuICAgIHwgU29tZSBwYXRoLCBfIC0+IHBhdGhcbiAgICB8IE5vbmUsIFNvbWUgc3RyIC0+IHBhcnNlIHN0clxuICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICBpblxuICBzdWJzdF9wYXRoIHNleHAgcGF0aFxuOztcblxubGV0IGdldCA/cGF0aCA/c3RyIHNleHAgPSBzbmQgKGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwKVxuXG5sZXQgcmVwbGFjZSA/cGF0aCA/c3RyIHNleHAgfnN1YnN0ID1cbiAgbGV0IHN1YnN0X2Z1biwgXyA9IGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwIGluXG4gIHN1YnN0X2Z1biBzdWJzdFxuOztcblxubGV0IHJlcGxhY2Vfbm9fcGF0aCB+c3RyIHNleHAgfnN1YnN0ID0gcmVwbGFjZSB+c3RyIHNleHAgfnN1YnN0XG4iLCJsZXQgcmVnaXN0ZXIgZXhjIGV4Y19uYW1lID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIF9leGMgLT5cbiAgICBTZXhwLkF0b20gZXhjX25hbWUpXG47O1xuXG5sZXQgbWFnaWNfZmllbGQgcmVwciBuID0gT2JqLm1hZ2ljIChPYmouZmllbGQgcmVwciBuKVxuXG5sZXQgcmVnaXN0ZXIxIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDEgXSlcbjs7XG5cbmxldCByZWdpc3RlcjIgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDIgXSlcbjs7XG5cbmxldCByZWdpc3RlcjMgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiBzZXhwX29mX2FyZzMgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI0IG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczIHNleHBfb2ZfYXJnNCA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNCBdKVxuOztcblxubGV0IHJlZ2lzdGVyNVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI2XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDYgXSlcbjs7XG5cbmxldCByZWdpc3RlcjdcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNyBdKVxuOztcblxubGV0IHJlZ2lzdGVyOFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDY7IHNleHA3OyBzZXhwOCBdKVxuOztcblxubGV0IHJlZ2lzdGVyOVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgXSlcbjs7XG5cbmxldCByZWdpc3RlcjEwXG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gICAgICBzZXhwX29mX2FyZzlcbiAgICAgIHNleHBfb2ZfYXJnMTBcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBsZXQgc2V4cDkgPSBzZXhwX29mX2FyZzkgKG1hZ2ljX2ZpZWxkIHJlcHIgOSkgaW5cbiAgICBsZXQgc2V4cDEwID0gc2V4cF9vZl9hcmcxMCAobWFnaWNfZmllbGQgcmVwciAxMCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lXG4gICAgICA7IHNleHAxXG4gICAgICA7IHNleHAyXG4gICAgICA7IHNleHAzXG4gICAgICA7IHNleHA0XG4gICAgICA7IHNleHA1XG4gICAgICA7IHNleHA2XG4gICAgICA7IHNleHA3XG4gICAgICA7IHNleHA4XG4gICAgICA7IHNleHA5XG4gICAgICA7IHNleHAxMFxuICAgICAgXSlcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBcIkZhc3QgU3BsaXR0YWJsZSBQc2V1ZG9yYW5kb20gTnVtYmVyIEdlbmVyYXRvcnNcIiBieSBTdGVlbGUgZXQuXG4gICAgYWwuICgxKS4gIFRoZSBwYXBlcidzIGFsZ29yaXRobSBwcm92aWRlcyBkZWNlbnQgcmFuZG9tbmVzcyBmb3IgbW9zdCBwdXJwb3NlcywgYnV0XG4gICAgc2FjcmlmaWNlcyBjcnlwdG9ncmFwaGljLXF1YWxpdHkgcmFuZG9tbmVzcyBpbiBmYXZvciBvZiBwZXJmb3JtYW5jZS4gIFRoZSBvcmlnaW5hbFxuICAgIGltcGxlbWVudGF0aW9uIHdhcyB0ZXN0ZWQgd2l0aCBEaWVIYXJkZXIgYW5kIEJpZ0NydXNoOyBzZWUgdGhlIHBhcGVyIGZvciBkZXRhaWxzLlxuXG4gICAgT3VyIGltcGxlbWVudGF0aW9uIGlzIGEgcG9ydCBmcm9tIEphdmEgdG8gT0NhbWwgb2YgdGhlIHBhcGVyJ3MgYWxnb3JpdGhtLiAgT3RoZXIgdGhhblxuICAgIHRoZSBjaG9pY2Ugb2YgaW5pdGlhbCBzZWVkIGZvciBbY3JlYXRlXSwgb3VyIHBvcnQgc2hvdWxkIGJlIGZhaXRoZnVsLiAgV2UgaGF2ZSBub3RcbiAgICByZS1ydW4gdGhlIERpZUhhcmRlciBvciBCaWdDcnVzaCB0ZXN0cyBvbiBvdXIgaW1wbGVtZW50YXRpb24uICBPdXIgcG9ydCBpcyBhbHNvIG5vdCBhc1xuICAgIHBlcmZvcm1hbnQgYXMgdGhlIG9yaWdpbmFsOyB0d28gZmFjdG9ycyB0aGF0IGh1cnQgdXMgYXJlIGJveGVkIFtpbnQ2NF0gdmFsdWVzIGFuZCBsYWNrXG4gICAgb2YgYSBQT1BDTlQgcHJpbWl0aXZlLlxuXG4gICAgKDEpIGh0dHA6Ly8yMDE0LnNwbGFzaGNvbi5vcmcvZXZlbnQvb29wc2xhMjAxNC1mYXN0LXNwbGl0dGFibGUtcHNldWRvcmFuZG9tLW51bWJlci1nZW5lcmF0b3JzXG4gICAgKGFsc28gbWlycm9yZWQgYXQgaHR0cDovL2dlZS5jcy5vc3dlZ28uZWR1L2RsL3BhcGVycy9vb3BzbGExNC5wZGYpXG5cbiAgICBCZXdhcmUgd2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2U7IGl0IGlzIGVhc3kgdG8gaW1wbGVtZW50IGEgW3NwbGl0XSBvcGVyYXRpb25cbiAgICB3aG9zZSBvdXRwdXQgaXMgbm90IGFzIFwiaW5kZXBlbmRlbnRcIiBhcyBpdCBzZWVtcyAoMikuICBUaGlzIGJ1ZyBjYXVzZWQgcHJvYmxlbXMgZm9yXG4gICAgSGFza2VsbCdzIFF1aWNrY2hlY2sgbGlicmFyeSBmb3IgYSBsb25nIHRpbWUuXG5cbiAgICAoMikgU2NoYWF0aHVuLCBcIkV2YWx1YXRpb24gb2Ygc3BsaXR0YWJsZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnNcIiwgSkZQIDIwMTUuXG4gICAgaHR0cDovL3d3dy5oZy5zY2hhYXRodW4ubmV0L3Jlc2VhcmNoL1BhcGVycy9oZ3MyMDE1amZwLnBkZlxuKilcblxub3BlbiEgQmFzZVxub3BlbiAgSW50NjQuT1xuXG5sZXQgaXNfb2RkIHggPSB4IGxvciAxTCA9IHhcblxubGV0IHBvcGNvdW50ID0gSW50NjQucG9wY291bnRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2VlZCA6IGludDY0XG4gICAgOyBvZGRfZ2FtbWEgICAgOiBpbnQ2NFxuICAgIH1cblxuICBsZXQgZ29sZGVuX2dhbW1hID0gMHg5ZTM3Xzc5YjlfN2Y0YV83YzE1TFxuXG4gIGxldCBvZl9pbnQgc2VlZCA9XG4gICAgeyBzZWVkICAgICAgPSBJbnQ2NC5vZl9pbnQgc2VlZFxuICAgIDsgb2RkX2dhbW1hID0gZ29sZGVuX2dhbW1hXG4gICAgfVxuXG4gIGxldCBjb3B5IHsgc2VlZCA7IG9kZF9nYW1tYSB9ID0geyBzZWVkIDsgb2RkX2dhbW1hIH1cblxuICBsZXQgbWl4X2JpdHMgeiBuID1cbiAgICB6IGx4b3IgKHogbHNyIG4pXG5cbiAgbGV0IG1peDY0IHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhmZjUxX2FmZDdfZWQ1NV84Y2NkTCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhjNGNlX2I5ZmVfMWE4NV9lYzUzTCBpblxuICAgIG1peF9iaXRzIHogMzNcblxuICBsZXQgbWl4NjRfdmFyaWFudDEzIHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzApICogMHhiZjU4XzQ3NmRfMWNlNF9lNWI5TCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMjcpICogMHg5NGQwXzQ5YmJfMTMzMV8xMWViTCBpblxuICAgIG1peF9iaXRzIHogMzFcblxuICBsZXQgbWl4X29kZF9nYW1tYSB6ID1cbiAgICBsZXQgeiA9IChtaXg2NF92YXJpYW50MTMgeikgbG9yIDFMIGluXG4gICAgbGV0IG4gPSBwb3Bjb3VudCAoeiBseG9yICh6IGxzciAxKSkgaW5cbiAgICAoKiBUaGUgb3JpZ2luYWwgcGFwZXIgdXNlcyBbPj1dIGluIHRoZSBjb25kaXRpb25hbCBpbW1lZGlhdGVseSBiZWxvdzsgaG93ZXZlciB0aGlzIGlzXG4gICAgICAgYSB0eXBvLCBhbmQgd2UgY29ycmVjdCBpdCBieSB1c2luZyBbPF0uIFRoaXMgd2FzIGZpeGVkIGluIHJlc3BvbnNlIHRvIFsxXSBhbmQgWzJdLlxuXG4gICAgICAgWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3NwbGl0dGFibGVfcmFuZG9tL2lzc3Vlcy8xXG4gICAgICAgWzJdIGh0dHA6Ly93d3cucGNnLXJhbmRvbS5vcmcvcG9zdHMvYnVncy1pbi1zcGxpdG1peC5odG1sXG4gICAgKilcbiAgICBpZiBJbnQuKCA8ICkgbiAyNFxuICAgIHRoZW4geiBseG9yIDB4YWFhYV9hYWFhX2FhYWFfYWFhYUxcbiAgICBlbHNlIHpcblxuICBsZXQldGVzdF91bml0IFwib2RkIGdhbW1hXCIgPVxuICAgIGZvciBpbnB1dCA9IC0xXzAwMF8wMDAgdG8gMV8wMDBfMDAwIGRvXG4gICAgICBsZXQgb3V0cHV0ID0gbWl4X29kZF9nYW1tYSAoSW50NjQub2ZfaW50IGlucHV0KSBpblxuICAgICAgaWYgbm90IChpc19vZGQgb3V0cHV0KSB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgICAgXCJnYW1tYSB2YWx1ZSBpcyBub3Qgb2RkXCJcbiAgICAgICAgICAgIChpbnB1dCAgOiBpbnQpXG4gICAgICAgICAgICAob3V0cHV0IDogaW50NjQpXVxuICAgIGRvbmVcblxuICBsZXQgbmV4dF9zZWVkIHQgPVxuICAgIGxldCBuZXh0ID0gdC5zZWVkICsgdC5vZGRfZ2FtbWEgaW5cbiAgICB0LnNlZWQgPC0gbmV4dDtcbiAgICBuZXh0XG5cbiAgbGV0IG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYSA9XG4gICAgbGV0IHNlZWQgICAgICA9IG1peDY0ICAgICAgICAgc2VlZCAgaW5cbiAgICBsZXQgb2RkX2dhbW1hID0gbWl4X29kZF9nYW1tYSBnYW1tYSBpblxuICAgIHsgc2VlZDsgb2RkX2dhbW1hIH1cblxuICBsZXQgcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSA9XG4gICAgUmFuZG9tLlN0YXRlLmludDY0X2luY2wgcmFuZG9tX3N0YXRlIEludDY0Lm1pbl92YWx1ZSBJbnQ2NC5tYXhfdmFsdWVcblxuICBsZXQgY3JlYXRlIHJhbmRvbV9zdGF0ZSA9XG4gICAgbGV0IHNlZWQgID0gcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSBpblxuICAgIGxldCBnYW1tYSA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgc3BsaXQgdCA9XG4gICAgbGV0IHNlZWQgID0gbmV4dF9zZWVkIHQgaW5cbiAgICBsZXQgZ2FtbWEgPSBuZXh0X3NlZWQgdCBpblxuICAgIG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYVxuXG4gIGxldCBuZXh0X2ludDY0IHQgPSBtaXg2NCAobmV4dF9zZWVkIHQpXG5cbiAgKCogW3BlcnR1cmJdIGlzIG5vdCBmcm9tIGFueSBleHRlcm5hbCBzb3VyY2UsIGJ1dCBwcm92aWRlcyBhIHdheSB0byBtaXggaW4gZXh0ZXJuYWxcbiAgICAgZW50cm9weSB3aXRoIGEgcHNldWRvLXJhbmRvbSBzdGF0ZS4gKilcbiAgbGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIG1peDY0IChJbnQ2NC5vZl9pbnQgc2FsdCkgaW5cbiAgICB0LnNlZWQgPC0gbmV4dFxuXG5lbmRcblxubGV0IGJvb2wgc3RhdGUgPSBpc19vZGQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIFdlIGFidXNlIHRlcm1pbm9sb2d5IGFuZCByZWZlciB0byBpbmRpdmlkdWFsIHZhbHVlcyBhcyBiaWFzZWQgb3IgdW5iaWFzZWQuICBNb3JlXG4gICBwcm9wZXJseSwgd2hhdCBpcyB1bmJpYXNlZCBpcyB0aGUgc2FtcGxlciB0aGF0IHJlc3VsdHMgaWYgd2Uga2VlcCBvbmx5IHRoZXNlIFwidW5iaWFzZWRcIlxuICAgdmFsdWVzLiAqKVxubGV0IHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgfmRyYXdcbiAgICAgIH5yZW1haW5kZXJcbiAgICAgIH5kcmF3X21heGltdW1cbiAgICAgIH5yZW1haW5kZXJfbWF4aW11bVxuICA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgZHJhdyAtIHJlbWFpbmRlciA8PSBkcmF3X21heGltdW0gLSByZW1haW5kZXJfbWF4aW11bVxuXG5sZXQldGVzdF91bml0IFwicmVtYWluZGVyX2lzX3VuYmlhc2VkXCIgPVxuICAoKiBjaG9vc2luZyBhIHJhbmdlIG9mIDEwIHZhbHVlcyBiYXNlZCBvbiBhIHJhbmdlIG9mIDEwNSB2YWx1ZXMgKilcbiAgbGV0IGRyYXdfbWF4aW11bSA9IDEwNEwgaW5cbiAgbGV0IHJlbWFpbmRlcl9tYXhpbXVtID0gOUwgaW5cbiAgbGV0IGlzX3VuYmlhc2VkIGRyYXcgPVxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyByZW1haW5kZXJfbWF4aW11bSkgaW5cbiAgICByZW1haW5kZXJfaXNfdW5iaWFzZWQgfmRyYXcgfnJlbWFpbmRlciB+ZHJhd19tYXhpbXVtIH5yZW1haW5kZXJfbWF4aW11bVxuICBpblxuICBmb3IgaSA9IDAgdG8gOTkgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OnRydWVcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMTAwIHRvIDEwNCBkb1xuICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAoaXNfdW5iaWFzZWQgKEludDY0Lm9mX2ludCBpKSlcbiAgICAgIH5leHBlY3Q6ZmFsc2VcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmVcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBib3VuZGVkIHJhbmRvbW5lc3MgaXMgYWRhcHRlZCBmcm9tIFtSYW5kb20uU3RhdGUuaW50Kl0gaW4gdGhlXG4gICBPQ2FtbCBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhlIHB1cnBvc2UgaXMgdG8gdXNlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0b1xuICAgW25leHRfaW50NjRdIHRvIHByb2R1Y2UgYSBudW1iZXIgdW5pZm9ybWx5IGNob3NlbiB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLiAqKVxubGV0IGludDY0ID1cbiAgbGV0IG9wZW4gSW50NjQuTyBpblxuICBsZXQgcmVjIGJldHdlZW4gc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGluXG4gICAgaWYgbG8gPD0gZHJhdyAmJiBkcmF3IDw9IGhpXG4gICAgdGhlbiBkcmF3XG4gICAgZWxzZSBiZXR3ZWVuIHN0YXRlIH5sbyB+aGlcbiAgaW5cbiAgbGV0IHJlYyBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGxhbmQgSW50NjQubWF4X3ZhbHVlIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDY0LnJlbSBkcmF3IChJbnQ2NC5zdWNjIG1heGltdW0pIGluXG4gICAgaWYgcmVtYWluZGVyX2lzX3VuYmlhc2VkXG4gICAgICAgICB+ZHJhd1xuICAgICAgICAgfnJlbWFpbmRlclxuICAgICAgICAgfmRyYXdfbWF4aW11bTpJbnQ2NC5tYXhfdmFsdWVcbiAgICAgICAgIH5yZW1haW5kZXJfbWF4aW11bTptYXhpbXVtXG4gICAgdGhlbiByZW1haW5kZXJcbiAgICBlbHNlIG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBtYXhpbXVtXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbG8gPiBoaSB0aGVuIGJlZ2luXG4gICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludDY0OiBjcm9zc2VkIGJvdW5kc1wiIChsbyA6IGludDY0KSAoaGkgOiBpbnQ2NCldXG4gICAgZW5kO1xuICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgIGlmIGRpZmYgPSBJbnQ2NC5tYXhfdmFsdWVcbiAgICB0aGVuICgoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSkgbGFuZCBJbnQ2NC5tYXhfdmFsdWUpICsgbG9cbiAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICB0aGVuIChub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgZGlmZikgKyBsb1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG5cbmxldCBpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9pbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQzMiBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfaW50MzIgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50MzIgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnQzMl90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IG5hdGl2ZWludCBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfbmF0aXZlaW50IGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX25hdGl2ZWludCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX25hdGl2ZWludF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGludDYzIHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2My50b19pbnQ2NCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2My50b19pbnQ2NCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDYzLm9mX2ludDY0X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgZG91YmxlX3VscCA9IDIuICoqLiAtNTMuXG5cbmxldCV0ZXN0X3VuaXQgXCJkb3VibGVfdWxwXCIgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPlxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAxLjApO1xuICAgIGFzc2VydCAoMS4wIC0uIChkb3VibGVfdWxwIC8uIDIuMCkgPSAxLjApXG4gIHwgVzMyIC0+XG4gICAgKCogMzItYml0IE9DYW1sIHVzZXMgYSA2NC1iaXQgZmxvYXQgcmVwcmVzZW50YXRpb24gYnV0IDgwLWJpdCBmbG9hdCBpbnN0cnVjdGlvbnMsIHNvXG4gICAgICAgcm91bmRpbmcgd29ya3MgZGlmZmVyZW50bHkgZHVlIHRvIHRoZSBjb252ZXJzaW9uIGJhY2sgYW5kIGZvcnRoLiAqKVxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApIDw9IDEuMClcblxubGV0IHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCBpbnQ2NCA9XG4gIChJbnQ2NC50b19mbG9hdCAoaW50NjQgbHNyIDExKSkgKi4gZG91YmxlX3VscFxuXG5sZXQldGVzdF91bml0IFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPSBiZWdpblxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4MDAwMF8wMDAwXzAwMDBfMDAwMEwgPSAwLik7XG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZkwgPCAxLjApO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMID0gKDEuMCAtLiBkb3VibGVfdWxwKSk7XG5lbmRcblxubGV0IHVuaXRfZmxvYXQgc3RhdGUgPVxuICB1bml0X2Zsb2F0X2Zyb21faW50NjQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIE5vdGUgYWJvdXQgcm91bmRvZmYgZXJyb3I6XG5cbiAgIEFsdGhvdWdoIFtmbG9hdCBzdGF0ZSB+bG8gfmhpXSBpcyBub21pbmFsbHkgaW5jbHVzaXZlIG9mIGVuZHBvaW50cywgd2UgYXJlIHJlbHlpbmcgb25cbiAgIHRoZSBmYWN0IHRoYXQgW3VuaXRfZmxvYXRdIG5ldmVyIHJldHVybnMgMS4sIGJlY2F1c2UgdGhlcmUgYXJlIHBhaXJzIFsobG8saGkpXSBmb3JcbiAgIHdoaWNoIFtsbyArLiAxLiAqLiAoaGkgLS4gbG8pID4gaGldLiAgVGhlcmUgYXJlIGFsc28gcGFpcnMgWyhsbyxoaSldIGFuZCB2YWx1ZXMgb2YgW3hdXG4gICB3aXRoIFt4IDwgMS5dIHN1Y2ggdGhhdCBbbG8gKy4geCAqLiAoaGkgLS4gbG8pID0gaGldLCBzbyBpdCB3b3VsZCBub3QgYmUgY29ycmVjdCB0b1xuICAgZG9jdW1lbnQgdGhpcyBhcyBiZWluZyBleGNsdXNpdmUgb2YgW2hpXS5cbiopXG5sZXQgZmxvYXQgPVxuICBsZXQgcmVjIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpID1cbiAgICBsZXQgcmFuZ2UgPSBoaSAtLiBsbyBpblxuICAgIGlmIEZsb2F0LmlzX2Zpbml0ZSByYW5nZVxuICAgIHRoZW4gKGxvICsuICh1bml0X2Zsb2F0IHN0YXRlICouIHJhbmdlKSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICAoKiBJZiBbaGkgLSBsb10gaXMgaW5maW5pdGUsIHRoZW4gW2hpICsgbG9dIGlzIGZpbml0ZSBiZWNhdXNlIFtoaV0gYW5kIFtsb10gaGF2ZVxuICAgICAgICAgb3Bwb3NpdGUgc2lnbnMuICopXG4gICAgICBsZXQgbWlkID0gKGhpICsuIGxvKSAvLiAyLiBpblxuICAgICAgaWYgYm9vbCBzdGF0ZVxuICAgICAgKCogRGVwZW5kaW5nIG9uIHJvdW5kaW5nLCB0aGUgcmVjdXJzaW9uIHdpdGggW35oaTptaWRdIG1pZ2h0IGJlIGluY2x1c2l2ZSBvZiBbbWlkXSxcbiAgICAgICAgIHdoaWNoIHdvdWxkIG1lYW4gdGhlIHR3byBjYXNlcyBvdmVybGFwIG9uIFttaWRdLiBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gaW5jcmVtZW50XG4gICAgICAgICBvciBkZWNyZW1lbnQgW21pZF0gdXNpbmcgW29uZV91bHBdIGluIGVpdGhlciBvZiB0aGUgY2FsbHMsIGJ1dCB0aGVuIGlmIHRoZSBmaXJzdFxuICAgICAgICAgY2FzZSBpcyBleGNsdXNpdmUgd2UgbGVhdmUgYSBcImdhcFwiIGJldHdlZW4gdGhlIHR3byByYW5nZXMuIFRoZXJlJ3Mgbm8gcGVyZmVjdGx5XG4gICAgICAgICB1bmlmb3JtIHNvbHV0aW9uLCBzbyB3ZSB1c2UgdGhlIHNpbXBsZXIgY29kZSB0aGF0IGRvZXMgbm90IGNhbGwgW29uZV91bHBdLiAqKVxuICAgICAgdGhlbiBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaTptaWRcbiAgICAgIGVsc2UgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbzptaWQgfmhpXG4gICAgZW5kXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgbG8gJiYgRmxvYXQuaXNfZmluaXRlIGhpKVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgbm90IGZpbml0ZSBudW1iZXJzXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGlmIEZsb2F0LiggPiApIGxvIGhpXG4gICAgdGhlbiBiZWdpblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgXCJmbG9hdDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpXG5cbmxldCViZW5jaF9mdW4gXCJ1bml0X2Zsb2F0X2Zyb21faW50NjRcIiA9XG4gIGxldCBpbnQ2NCA9IDFMIGluXG4gIGZ1biAoKSAtPiB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjRcblxubW9kdWxlIExvZ191bmlmb3JtID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlIChNIDogc2lnIGluY2x1ZGUgSW50LlMgdmFsIHVuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0IGVuZCkgOiBzaWdcbiAgICB2YWwgbG9nX3VuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOk0udCAtPiBoaTpNLnQgLT4gTS50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gTVxuXG4gICAgbGV0IGJpdHNfdG9fcmVwcmVzZW50IHQgPVxuICAgICAgYXNzZXJ0ICh0ID49IHplcm8pO1xuICAgICAgbGV0IHQgPSByZWYgdCBpblxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgd2hpbGUgIXQgPiB6ZXJvIGRvXG4gICAgICAgIHQgOj0gc2hpZnRfcmlnaHQgIXQgMTtcbiAgICAgICAgSW50LmluY3IgbjtcbiAgICAgIGRvbmU7XG4gICAgICAhblxuXG4gICAgbGV0JXRlc3RfdW5pdCBcImJpdHNfdG9fcmVwcmVzZW50XCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBpbnRdIChiaXRzX3RvX3JlcHJlc2VudCBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDApICAgMDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxKSAgIDE7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMikgICAyO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDMpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA0KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNSkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDYpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA3KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gOCkgICA0O1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDEwMCkgNztcbiAgICAgIHRlc3QgTS5tYXhfdmFsdWUgKEludC5wcmVkIE0ubnVtX2JpdHMpO1xuICAgIDs7XG5cbiAgICBsZXQgbWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIGlmIEludC5lcXVhbCBuIDBcbiAgICAgIHRoZW4gemVyb1xuICAgICAgZWxzZSBzaGlmdF9sZWZ0IG9uZSAoSW50LnByZWQgbilcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzXCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBNLnRdIChtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4pIH5leHBlY3QgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAyKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDQpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gOCk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biA2NCk7XG4gICAgICB0ZXN0IChJbnQucHJlZCBNLm51bV9iaXRzKSAoTS5zaGlmdF9yaWdodF9sb2dpY2FsIE0ubWluX3ZhbHVlIDEpO1xuICAgIDs7XG5cbiAgICBsZXQgbWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIHByZWQgKHNoaWZ0X2xlZnQgb25lIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWF4X3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAwIChNLm9mX2ludF9leG4gMCk7XG4gICAgICB0ZXN0IDEgKE0ub2ZfaW50X2V4biAxKTtcbiAgICAgIHRlc3QgMiAoTS5vZl9pbnRfZXhuIDMpO1xuICAgICAgdGVzdCAzIChNLm9mX2ludF9leG4gNyk7XG4gICAgICB0ZXN0IDQgKE0ub2ZfaW50X2V4biAxNSk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biAxMjcpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgTS5tYXhfdmFsdWU7XG4gICAgOztcblxuICAgIGxldCBsb2dfdW5pZm9ybSBzdGF0ZSB+bG8gfmhpID1cbiAgICAgIGxldCBtaW5fYml0cyA9IGJpdHNfdG9fcmVwcmVzZW50IGxvIGluXG4gICAgICBsZXQgbWF4X2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBoaSBpblxuICAgICAgbGV0IGJpdHMgPSBpbnQgc3RhdGUgfmxvOm1pbl9iaXRzIH5oaTptYXhfYml0cyBpblxuICAgICAgdW5pZm9ybSBzdGF0ZVxuICAgICAgICB+bG86KG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtYXggbG8pXG4gICAgICAgIH5oaToobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBiaXRzIHw+IG1pbiBoaSlcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9pbnQgICAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQgICAgICAgbGV0IHVuaWZvcm0gPSBpbnQgICAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDMyICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDMyICAgICBsZXQgdW5pZm9ybSA9IGludDMyICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjMgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjMgICAgIGxldCB1bmlmb3JtID0gaW50NjMgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQ2NCAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQ2NCAgICAgbGV0IHVuaWZvcm0gPSBpbnQ2NCAgICAgZW5kKVxuICBtb2R1bGUgRm9yX25hdGl2ZWludCA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIE5hdGl2ZWludCBsZXQgdW5pZm9ybSA9IG5hdGl2ZWludCBlbmQpXG5cbiAgbGV0IGludCAgICAgICA9IEZvcl9pbnQubG9nX3VuaWZvcm1cbiAgbGV0IGludDMyICAgICA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjMgICAgID0gRm9yX2ludDYzLmxvZ191bmlmb3JtXG4gIGxldCBpbnQ2NCAgICAgPSBGb3JfaW50NjQubG9nX3VuaWZvcm1cbiAgbGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1cbmVuZFxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBzdWNjIDogaW50NjQgLT4gaW50NjRcbigqKiBTdWNjZXNzb3IuICBbSW50NjQuc3VjYyB4XSBpcyBbSW50NjQuYWRkIHggSW50NjQub25lXS4gKilcblxudmFsIHByZWQgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFByZWRlY2Vzc29yLiAgW0ludDY0LnByZWQgeF0gaXMgW0ludDY0LnN1YiB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBhYnMgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFthYnMgeF0gaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIFt4XS4gT24gW21pbl9pbnRdIHRoaXNcbiAgIGlzIFttaW5faW50XSBpdHNlbGYgYW5kIHRodXMgcmVtYWlucyBuZWdhdGl2ZS4gKilcblxudmFsIG1heF9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBncmVhdGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAye142M30gLSAxLiAqKVxuXG52YWwgbWluX2ludCA6IGludDY0XG4oKiogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIC0ye142M30uICopXG5cbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgYW5kLiAqKVxuXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBvci4gKilcblxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBleGNsdXNpdmUgb3IuICopXG5cbnZhbCBsb2dub3QgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIEJpdHdpc2UgbG9naWNhbCBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG4oKiogW0ludDY0LnNoaWZ0X2xlZnQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSBsZWZ0IGJ5IFt5XSBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhbiBhcml0aG1ldGljIHNoaWZ0OiB0aGUgc2lnbiBiaXQgb2YgW3hdIGlzIHJlcGxpY2F0ZWRcbiAgIGFuZCBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYSBsb2dpY2FsIHNoaWZ0OiB6ZXJvZXMgYXJlIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHNcbiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpZ24gb2YgW3hdLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBpbnRlZ2VyICh0eXBlIFtpbnRdKSB0byBhIDY0LWJpdCBpbnRlZ2VyXG4gICAgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYW5cbiAgIGludGVnZXIgKHR5cGUgW2ludF0pLiAgT24gNjQtYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteNjN9LCBpLmUuIHRoZSBoaWdoLW9yZGVyIGJpdCBpcyBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMX0sIGkuZS4gdGhlIHRvcCAzMyBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICopXG5cbnZhbCB1bnNpZ25lZF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgb3B0aW9uXG4oKiogU2FtZSBhcyB7IXRvX2ludH0sIGJ1dCBpbnRlcnByZXRzIHRoZSBhcmd1bWVudCBhcyBhbiB7ZSB1bnNpZ25lZH0gaW50ZWdlci5cbiAgICBSZXR1cm5zIFtOb25lXSBpZiB0aGUgdW5zaWduZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBmaXQgaW50byBhblxuICAgIFtpbnRdLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzICopXG5cbnZhbCBtaW46IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjEgKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMSAqKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTGF5b3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpZ2FycmF5LmxheW91dFxuXG4gIGxldCBvZmZzZXQgOiB0eXBlIGEuIGEgdCAtPiBpbnQgPSBmdW5jdGlvblxuICAgIHwgQmlnYXJyYXkuRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIHwgQmlnYXJyYXkuQ19sYXlvdXQgLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkxLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTEuZGltIHQgLSAxIGRvXG4gICAgICBmIChpICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0fVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbSB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTEuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIChfIDogZWx0KSAtPiB0LntpfSA8LSBmIGkpO1xuICAgIHRcbiAgOztcblxuICBsZXQgZm9sZCAodHlwZSBlbHQpICh0IDogKGVsdCwgXywgXykgdCkgfmluaXQgfmYgPVxuICAgIGxldCBpbml0ID0gcmVmIGluaXQgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gaW5pdCA6PSBmICFpbml0IHQue2l9KTtcbiAgICAhaW5pdFxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkxLmxheW91dCB0KSBpblxuICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgfmY6KGZ1biBpIC0+IHQue2kgKyBvZmZzZXR9KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkxLmRpbSB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIEJpZ2FycmF5LkFycmF5Mi50XG5cbiAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQgLSAxIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCAtIDEgZG9cbiAgICAgICAgZiAoaSArIG9mZnNldCkgKGogKyBvZmZzZXQpIHQue2kgKyBvZmZzZXQsIGogKyBvZmZzZXR9XG4gICAgICBkb25lXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpbml0ICh0eXBlIGVsdCkgKGtpbmQgOiAoZWx0LCBfKSBCaWdhcnJheS5raW5kKSBsYXlvdXQgZGltMSBkaW0yIH5mID1cbiAgICBsZXQgdCA9IEJpZ2FycmF5LkFycmF5Mi5jcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgaiAoXyA6IGVsdCkgLT4gdC57aSwgan0gPC0gZiBpIGopO1xuICAgIHRcbiAgOztcblxuICBsZXQgZm9sZCAodHlwZSBlbHQpICh0IDogKGVsdCwgXywgXykgdCkgfmluaXQgfmYgPVxuICAgIGxldCBpbml0ID0gcmVmIGluaXQgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gKF8gOiBpbnQpIChfIDogaW50KSBlbHQgLT4gaW5pdCA6PSBmICFpbml0IGVsdCk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMSB0KSB+ZjooZnVuIGkgLT5cbiAgICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQpIH5mOihmdW4gaiAtPiB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fSkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBfc2V4cF9vZl9wYWNrIF9zZXhwX29mX2xheW91dCB0ID1cbiAgICBbJXNleHAgKHRvX2FycmF5IHQgOiBlbHQgYXJyYXkgYXJyYXkpXVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGQgaGFzaF9mb2xkX2VsdCBzdGF0ZSB0ID1cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMSB0KSBpblxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQpIGluXG4gICAgZm9sZCB0IH5pbml0OnN0YXRlIH5mOmhhc2hfZm9sZF9lbHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSAtPiBzaXplOmludCAtPiBoYXNoOkhhc2guc3RhdGUgLT4gSGFzaC5zdGF0ZVxuXG5sZXQgY3JlYXRlIGYgOiBfIHQgPSBmXG5cbmxldCBvYnNlcnZlICh0IDogXyB0KSB4IH5zaXplIH5oYXNoID1cbiAgaWYgc2l6ZSA8IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vYnNlcnZlOiBzaXplIDwgMFwiIChzaXplIDogaW50KV1cbiAgZWxzZSB0IHggfnNpemUgfmhhc2hcbjs7XG5cbmxldCBvcGFxdWUgXyB+c2l6ZTpfIH5oYXNoID0gaGFzaFxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICsnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgZ2VuZXJhdGUgOiAnYSB0IC0+IHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhKSBTdGFnZWQudFxuXG4gIGxldCBjcmVhdGUgZiA6IF8gdCA9IFN0YWdlZC5zdGFnZSBmXG5cbiAgbGV0IGdlbmVyYXRlICh0IDogXyB0KSB+c2l6ZSB+cmFuZG9tID1cbiAgICBpZiBzaXplIDwgMFxuICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmdlbmVyYXRlOiBzaXplIDwgMFwiIChzaXplIDogaW50KV1cbiAgICBlbHNlIFN0YWdlZC51bnN0YWdlIHQgfnNpemUgfnJhbmRvbVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgc2l6ZSA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb206XyAtPiBzaXplKVxuXG5sZXQgZm4gZG9tIHJuZyA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuc3BsaXQgcmFuZG9tIGluXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBoYXNoID0gT2JzZXJ2ZXIwLm9ic2VydmUgZG9tIHggfnNpemUgfmhhc2g6KEhhc2guYWxsb2MgKCkpIGluXG4gICAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY29weSByYW5kb20gaW5cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpO1xuICAgICAgZ2VuZXJhdGUgcm5nIH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgd2l0aF9zaXplIHQgfnNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgcGVydHVyYiB0IHNhbHQgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUucGVydHVyYiByYW5kb20gc2FsdDtcbiAgICBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIH5zaXplIH5yYW5kb20gPVxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IFNvbWUgeSAtPiB5XG4gICAgfCBOb25lIC0+IGxvb3AgfnNpemU6KHNpemUgKyAxKSB+cmFuZG9tXG4gIGluXG4gIGNyZWF0ZSBsb29wXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5sZXQgcmV0dXJuIHggPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb206XyAtPiB4KVxubGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBmIChnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pKVxuXG5sZXQgYXBwbHkgdGYgdHggPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGYgPSBnZW5lcmF0ZSB0ZiB+c2l6ZSB+cmFuZG9tIGluXG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0eCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgZiB4KVxuOztcblxubGV0IGJpbmQgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIGdlbmVyYXRlIChmIHgpIH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgYWxsIGxpc3QgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QubWFwIGxpc3QgfmY6KGdlbmVyYXRlIH5zaXplIH5yYW5kb20pKVxuXG5sZXQgYWxsX3VuaXQgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gTGlzdC5pdGVyIGxpc3QgfmY6KGdlbmVyYXRlIH5zaXplIH5yYW5kb20pKVxuOztcblxubW9kdWxlIEZvcl9hcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgYm90aCA9IEZvcl9hcHBsaWNhdGl2ZS5ib3RoXG5sZXQgbWFwMiA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAyXG5sZXQgbWFwMyA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAzXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IEZvcl9hcHBsaWNhdGl2ZS5BcHBsaWNhdGl2ZV9pbmZpeFxuaW5jbHVkZSBBcHBsaWNhdGl2ZV9pbmZpeFxuXG5tb2R1bGUgRm9yX21vbmFkID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgaWdub3JlX20gPSBGb3JfbW9uYWQuaWdub3JlX21cbmxldCBqb2luID0gRm9yX21vbmFkLmpvaW5cblxubW9kdWxlIE1vbmFkX2luZml4ID0gRm9yX21vbmFkLk1vbmFkX2luZml4XG5pbmNsdWRlIE1vbmFkX2luZml4XG5tb2R1bGUgTGV0X3N5bnRheCA9IEZvcl9tb25hZC5MZXRfc3ludGF4XG5vcGVuIExldF9zeW50YXhcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGlmIExpc3QuaXNfZW1wdHkgbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgYXJyYXkgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgbGV0IGxvID0gMCBpblxuICBsZXQgaGkgPSBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBpbmRleCA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvIH5oaSBpblxuICAgIGFycmF5LihpbmRleCkpXG47O1xuXG5sZXQgdW5pb24gbGlzdCA9IGpvaW4gKG9mX2xpc3QgbGlzdClcblxubGV0IG9mX3dlaWdodGVkX2xpc3QgYWxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGFsaXN0XG4gIHRoZW4gRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IGVtcHR5IGxpc3RcIl07XG4gIGxldCB3ZWlnaHRzLCB2YWx1ZXMgPSBMaXN0LnVuemlwIGFsaXN0IGluXG4gIGxldCB2YWx1ZV9hcnJheSA9IEFycmF5Lm9mX2xpc3QgdmFsdWVzIGluXG4gIGxldCB0b3RhbF93ZWlnaHQsIGN1bXVsYXRpdmVfd2VpZ2h0X2FycmF5ID1cbiAgICBsZXQgYXJyYXkgPSBBcnJheS5pbml0IChBcnJheS5sZW5ndGggdmFsdWVfYXJyYXkpIH5mOihmdW4gXyAtPiAwLikgaW5cbiAgICBsZXQgc3VtID1cbiAgICAgIExpc3QuZm9sZGkgd2VpZ2h0cyB+aW5pdDowLiB+ZjooZnVuIGluZGV4IGFjYyB3ZWlnaHQgLT5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgd2VpZ2h0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB3ZWlnaHQgaXMgbm90IGZpbml0ZVwiXG4gICAgICAgICAgICAgICAgKHdlaWdodCA6IGZsb2F0KV07XG4gICAgICAgIGlmIEZsb2F0LiggPCApIHdlaWdodCAwLlxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB3ZWlnaHQgaXMgbmVnYXRpdmVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBsZXQgY3VtdWxhdGl2ZSA9IGFjYyArLiB3ZWlnaHQgaW5cbiAgICAgICAgYXJyYXkuKGluZGV4KSA8LSBjdW11bGF0aXZlO1xuICAgICAgICBjdW11bGF0aXZlKVxuICAgIGluXG4gICAgaWYgRmxvYXQuKCA8PSApIHN1bSAwLlxuICAgIHRoZW5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB0b3RhbCB3ZWlnaHQgaXMgemVyb1wiXTtcbiAgICBzdW0sIGFycmF5XG4gIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBjaG9pY2UgPSBTcGxpdHRhYmxlX3JhbmRvbS5mbG9hdCByYW5kb20gfmxvOjAuIH5oaTp0b3RhbF93ZWlnaHQgaW5cbiAgICBtYXRjaFxuICAgICAgQXJyYXkuYmluYXJ5X3NlYXJjaFxuICAgICAgICBjdW11bGF0aXZlX3dlaWdodF9hcnJheVxuICAgICAgICB+Y29tcGFyZTpGbG9hdC5jb21wYXJlXG4gICAgICAgIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgICAgY2hvaWNlXG4gICAgd2l0aFxuICAgIHwgU29tZSBpbmRleCAtPiB2YWx1ZV9hcnJheS4oaW5kZXgpXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB3ZWlnaHRlZF91bmlvbiBhbGlzdCA9IGpvaW4gKG9mX3dlaWdodGVkX2xpc3QgYWxpc3QpXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGdlbmVyYXRlIChmb3JjZSBsYXp5X3QpIH5zaXplIH5yYW5kb20pXG5cbmxldCBmaXhlZF9wb2ludCBvZl9nZW5lcmF0b3IgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX2dlbmVyYXRvciAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBmb3JjZSBsYXp5X3Rcbjs7XG5cbmxldCB3ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb24gbm9ucmVjX2xpc3QgfmYgPVxuICBmaXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgcmVjX2xpc3QgPVxuICAgICAgTGlzdC5tYXAgKGYgc2VsZikgfmY6KGZ1biAodywgdCkgLT5cbiAgICAgICAgKCB3XG4gICAgICAgICwgbGV0JWJpbmQgbiA9IHNpemUgaW5cbiAgICAgICAgICB3aXRoX3NpemUgfnNpemU6KG4gLSAxKSB0ICkpXG4gICAgaW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IG5vbnJlY19saXN0IHx8IExpc3QuaXNfZW1wdHkgcmVjX2xpc3RcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci53ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb246IGxpc3RzIG11c3QgYmUgbm9uLWVtcHR5XCJdO1xuICAgIGxldCBub25yZWNfZ2VuID0gd2VpZ2h0ZWRfdW5pb24gbm9ucmVjX2xpc3QgaW5cbiAgICBsZXQgcmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIChub25yZWNfbGlzdCBAIHJlY19saXN0KSBpblxuICAgIG1hdGNoJWJpbmQgc2l6ZSB3aXRoXG4gICAgfCAwIC0+IG5vbnJlY19nZW5cbiAgICB8IF8gLT4gcmVjX2dlbilcbjs7XG5cbmxldCByZWN1cnNpdmVfdW5pb24gbm9ucmVjX2xpc3QgfmYgPVxuICBsZXQgd2VpZ2h0ZWQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6KGZ1biB0IC0+IDEuLCB0KSBpblxuICB3ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb24gKHdlaWdodGVkIG5vbnJlY19saXN0KSB+ZjooZnVuIHNlbGYgLT4gd2VpZ2h0ZWQgKGYgc2VsZikpXG47O1xuXG5sZXQgc2l6ZXMgPyhtaW5fbGVuZ3RoID0gMCkgPyhtYXhfbGVuZ3RoID0gSW50Lm1heF92YWx1ZSkgKCkgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgYXNzZXJ0IChtaW5fbGVuZ3RoIDw9IG1heF9sZW5ndGgpO1xuICAgIGxldCB1cHBlcl9ib3VuZCA9IG1pbl9sZW5ndGggKyBzaXplIGluXG4gICAgbGV0IG1heF9sZW5ndGggPVxuICAgICAgaWYgdXBwZXJfYm91bmQgPj0gbWluX2xlbmd0aCAoKiBndWFyZCBhZ2FpbnN0IG92ZXJmbG93ICopXG4gICAgICB0aGVuIG1pbiBtYXhfbGVuZ3RoIHVwcGVyX2JvdW5kXG4gICAgICBlbHNlIG1heF9sZW5ndGhcbiAgICBpblxuICAgICgqIHBpY2sgYSBsZW5ndGgsIHdlaWdodGVkIGxvdyBzbyB0aGF0IG1vc3Qgb2YgdGhlIHNpemUgaXMgc3BlbnQgb24gZWxlbWVudHMgKilcbiAgICBsZXQgbGVuID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86bWluX2xlbmd0aCB+aGk6bWF4X2xlbmd0aCBpblxuICAgICgqIGlmIHRoZXJlIGFyZSBubyBlbGVtZW50cyByZXR1cm4gYW4gZW1wdHkgYXJyYXksIG90aGVyd2lzZSByZXR1cm4gYSBub24tZW1wdHkgYXJyYXlcbiAgICAgICB3aXRoIHRoZSBzaXplIGRpc3RyaWJ1dGVkIGFtb25nIHRoZSBlbGVtZW50cyAqKVxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFtdXG4gICAgZWxzZSAoXG4gICAgICBsZXQgc2l6ZXMgPSBBcnJheS5pbml0IGxlbiB+ZjooZnVuIF8gLT4gMCkgaW5cbiAgICAgIGxldCByZW1haW5pbmcgPSBzaXplIC0gKGxlbiAtIG1pbl9sZW5ndGgpIGluXG4gICAgICBsZXQgbWF4X2luZGV4ID0gbGVuIC0gMSBpblxuICAgICAgZm9yIF8gPSAxIHRvIHJlbWFpbmluZyBkb1xuICAgICAgICAoKiBwaWNrIGFuIGluZGV4LCB3ZWlnaHRlZCBsb3cgc28gdGhhdCB3ZSBzZWUgdW5iYWxhbmNlZCBkaXN0cmlidXRpb25zIG9mdGVuICopXG4gICAgICAgIGxldCBpbmRleCA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOm1heF9pbmRleCBpblxuICAgICAgICBzaXplcy4oaW5kZXgpIDwtIHNpemVzLihpbmRleCkgKyAxXG4gICAgICBkb25lO1xuICAgICAgKCogcGVybXV0ZSB0aGUgYXJyYXkgc28gdGhhdCBubyBpbmRleCBpcyBmYXZvcmVkIG92ZXIgYW5vdGhlciAqKVxuICAgICAgZm9yIGkgPSAwIHRvIG1heF9pbmRleCAtIDEgZG9cbiAgICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgQXJyYXkuc3dhcCBzaXplcyBpIGpcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgKEFycmF5LnN1bSAobW9kdWxlIEludCkgc2l6ZXMgfmY6Rm4uaWQgKyAobGVuIC0gbWluX2xlbmd0aCkgPSBzaXplKTtcbiAgICAgIEFycmF5LnRvX2xpc3Qgc2l6ZXMpKVxuOztcblxubGV0IHVuaXQgPSByZXR1cm4gKClcbmxldCBib29sID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IFNwbGl0dGFibGVfcmFuZG9tLmJvb2wgcmFuZG9tKVxubGV0IG9wdGlvbiB2YWx1ZV90ID0gdW5pb24gWyByZXR1cm4gTm9uZTsgbWFwIHZhbHVlX3QgfmY6T3B0aW9uLnJldHVybiBdXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID0gdW5pb24gWyBtYXAgZnN0X3QgfmY6RWl0aGVyLmZpcnN0OyBtYXAgc25kX3QgfmY6RWl0aGVyLnNlY29uZCBdXG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICB8IFNlY29uZCBlcnIgLT4gRXJyb3IgZXJyKVxuOztcblxubGV0IGxpc3RfZ2VuZXJpYyA/bWluX2xlbmd0aCA/bWF4X2xlbmd0aCBlbHRfZ2VuID1cbiAgbGV0JWJpbmQgc2l6ZXMgPSBzaXplcyA/bWluX2xlbmd0aCA/bWF4X2xlbmd0aCAoKSBpblxuICBMaXN0Lm1hcCBzaXplcyB+ZjooZnVuIHNpemUgLT4gd2l0aF9zaXplIH5zaXplIGVsdF9nZW4pIHw+IGFsbFxuOztcblxubGV0IGxpc3QgZWx0X2dlbiA9IGxpc3RfZ2VuZXJpYyBlbHRfZ2VuXG5sZXQgbGlzdF9ub25fZW1wdHkgZWx0X2dlbiA9IGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDoxIGVsdF9nZW5cblxubGV0IGxpc3Rfd2l0aF9sZW5ndGggZWx0X2dlbiB+bGVuZ3RoID1cbiAgbGlzdF9nZW5lcmljIH5taW5fbGVuZ3RoOmxlbmd0aCB+bWF4X2xlbmd0aDpsZW5ndGggZWx0X2dlblxuOztcblxubGV0IGxpc3RfZmlsdGVyZWQgZWx0cyA9XG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBsZW5ndGhfb2ZfaW5wdXQgPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgbGVuZ3RoX29mX291dHB1dCA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmxlbmd0aF9vZl9pbnB1dCBpblxuICAgIGxldCBpbmRpY2VzID0gQXJyYXkuaW5pdCBsZW5ndGhfb2ZfaW5wdXQgfmY6Rm4uaWQgaW5cbiAgICAoKiBDaG9vc2UgW2xlbmd0aF9vZl9vdXRwdXRdIHJhbmRvbSB2YWx1ZXMgaW4gdGhlIHByZWZpeCBvZiBbaW5kaWNlc10uICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aF9vZl9vdXRwdXQgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOmkgfmhpOihsZW5ndGhfb2ZfaW5wdXQgLSAxKSBpblxuICAgICAgQXJyYXkuc3dhcCBpbmRpY2VzIGkgalxuICAgIGRvbmU7XG4gICAgKCogU29ydCB0aGUgY2hvc2VuIGluZGljZXMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHJlb3JkZXIgdGhlbS4gKilcbiAgICBBcnJheS5zb3J0IGluZGljZXMgfnBvczowIH5sZW46bGVuZ3RoX29mX291dHB1dCB+Y29tcGFyZTpJbnQuY29tcGFyZTtcbiAgICAoKiBSZXR1cm4gdGhlIGNob3NlbiBlbGVtZW50cy4gKilcbiAgICBMaXN0LmluaXQgbGVuZ3RoX29mX291dHB1dCB+ZjooZnVuIGkgLT4gZWx0cy4oaW5kaWNlcy4oaSkpKSlcbjs7XG5cbmxldCBsaXN0X3Blcm11dGF0aW9ucyBsaXN0ID1cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDEgZG9cbiAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86MCB+aGk6aSBpblxuICAgICAgQXJyYXkuc3dhcCBhcnJheSBpIGpcbiAgICBkb25lO1xuICAgIEFycmF5LnRvX2xpc3QgYXJyYXkpXG47O1xuXG5sZXQgYXJyYXkgdCA9IG1hcCAobGlzdCB0KSB+ZjpBcnJheS5vZl9saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsXG5cbmxldCBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86KENoYXIudG9faW50IGxvKSB+aGk6KENoYXIudG9faW50IGhpKVxuICAgIHw+IENoYXIudW5zYWZlX29mX2ludClcbjs7XG5cbmxldCBjaGFyX3VwcGVyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ0EnICdaJ1xubGV0IGNoYXJfbG93ZXJjYXNlID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnYScgJ3onXG5sZXQgY2hhcl9kaWdpdCA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJzAnICc5J1xubGV0IGNoYXJfcHJpbnRfdW5pZm9ybSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJyAnICd+J1xubGV0IGNoYXJfdW5pZm9ybSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgQ2hhci5taW5fdmFsdWUgQ2hhci5tYXhfdmFsdWVcbmxldCBjaGFyX2FscGhhID0gdW5pb24gWyBjaGFyX2xvd2VyY2FzZTsgY2hhcl91cHBlcmNhc2UgXVxuXG5sZXQgY2hhcl9hbHBoYW51bSA9XG4gIHdlaWdodGVkX3VuaW9uXG4gICAgKCogTW9zdCBwZW9wbGUgcHJvYmFibHkgZXhwZWN0IHRoaXMgdG8gYmUgYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiwgbm90IHdlaWdodGVkXG4gICAgICAgdG93YXJkIGRpZ2l0cyBsaWtlIHdlIHdvdWxkIGdldCB3aXRoIFt1bmlvbl0gKHNpbmNlIHRoZXJlIGFyZSBmZXdlciBkaWdpdHMgdGhhblxuICAgICAgIGxldHRlcnMpLiAqKVxuICAgIFsgNTIuLCBjaGFyX2FscGhhOyAxMC4sIGNoYXJfZGlnaXQgXVxuOztcblxubGV0IGNoYXJfd2hpdGVzcGFjZSA9IG9mX2xpc3QgKExpc3QuZmlsdGVyIENoYXIuYWxsIH5mOkNoYXIuaXNfd2hpdGVzcGFjZSlcbmxldCBjaGFyX3ByaW50ID0gd2VpZ2h0ZWRfdW5pb24gWyAxMC4sIGNoYXJfYWxwaGFudW07IDEuLCBjaGFyX3ByaW50X3VuaWZvcm0gXVxuXG5sZXQgY2hhciA9XG4gIHdlaWdodGVkX3VuaW9uXG4gICAgWyAxMDAuLCBjaGFyX3ByaW50XG4gICAgOyAxMC4sIGNoYXJfdW5pZm9ybVxuICAgIDsgMS4sIHJldHVybiBDaGFyLm1pbl92YWx1ZVxuICAgIDsgMS4sIHJldHVybiBDaGFyLm1heF92YWx1ZVxuICAgIF1cbjs7XG5cbigqIFByb2R1Y2VzIGEgbnVtYmVyIGZyb20gMCBvciAxIHRvIHNpemUgKyAxLCB3ZWlnaHRlZCBoaWdoLiBXZSBoYXZlIGZvdW5kIHRoaXNcbiAgIGRpc3RyaWJ1dGlvbiBlbXBpcmljYWxseSB1c2VmdWwgZm9yIHN0cmluZyBsZW5ndGhzLiAqKVxubGV0IHNtYWxsX2ludCB+YWxsb3dfemVybyA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgbG93ZXJfYm91bmQgPSBpZiBhbGxvd196ZXJvIHRoZW4gMCBlbHNlIDEgaW5cbiAgICBsZXQgdXBwZXJfYm91bmQgPSBzaXplICsgMSBpblxuICAgIGxldCB3ZWlnaHRlZF9sb3cgPVxuICAgICAgU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86MCB+aGk6KHVwcGVyX2JvdW5kIC0gbG93ZXJfYm91bmQpXG4gICAgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfaGlnaCA9IHVwcGVyX2JvdW5kIC0gd2VpZ2h0ZWRfbG93IGluXG4gICAgd2VpZ2h0ZWRfaGlnaClcbjs7XG5cbmxldCBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzp0cnVlXG5sZXQgc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50ID0gc21hbGxfaW50IH5hbGxvd196ZXJvOmZhbHNlXG5cbm1vZHVsZSB0eXBlIEludF93aXRoX3JhbmRvbSA9IHNpZ1xuICBpbmNsdWRlIEludC5TXG5cbiAgdmFsIHVuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG4gIHZhbCBsb2dfdW5pZm9ybSA6IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gbG86dCAtPiBoaTp0IC0+IHRcbmVuZFxuXG5tb2R1bGUgRm9yX2ludGVnZXIgKEludGVnZXIgOiBJbnRfd2l0aF9yYW5kb20pID0gc3RydWN0XG4gIGxldCBnZW9tZXRyaWMgbG8gfnAgPVxuICAgIGlmIEZsb2F0LmVxdWFsIHAgMS5cbiAgICB0aGVuIHJldHVybiBsb1xuICAgIGVsc2UgaWYgRmxvYXQuZXF1YWwgcCAwLlxuICAgIHRoZW4gcmV0dXJuIEludGVnZXIubWF4X3ZhbHVlXG4gICAgZWxzZSBpZiBGbG9hdC4oIDwgKSBwIDAuIHx8IEZsb2F0LiggPiApIHAgMS4gfHwgRmxvYXQuaXNfbmFuIHBcbiAgICB0aGVuXG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcImdlb21ldHJpYyBkaXN0cmlidXRpb246IHAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDFcIiAocCA6IGZsb2F0KV1cbiAgICBlbHNlIChcbiAgICAgICgqIFdlIHN0YXJ0IHdpdGggYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbi4gV2UgY29udmVydCB0byBleHBvbmVudGlhbCBkaXN0cmlidXRpb25cbiAgICAgICAgIHVzaW5nIFtsb2ddLiBXZSBjb252ZXJ0IHRvIGdlb21ldHJpYyB3aXRoIFtyb3VuZF9kb3duXS4gVGhlbiB3ZSBib3VuZHMgY2hlY2sgYW5kXG4gICAgICAgICByZXR1cm4uICopXG4gICAgICBsZXQgZGVub21pbmF0b3IgPSBGbG9hdC5sb2cxcCAoLS5wKSBpblxuICAgICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20udW5pdF9mbG9hdCByYW5kb20gaW5cbiAgICAgICAgbGV0IGV4cG9uZW50aWFsID0gRmxvYXQubG9nIHVuaWZvcm0gLy4gZGVub21pbmF0b3IgaW5cbiAgICAgICAgbGV0IGZsb2F0ID0gRmxvYXQucm91bmRfZG93biBleHBvbmVudGlhbCBpblxuICAgICAgICBtYXRjaCBJbnRlZ2VyLm9mX2Zsb2F0IGZsb2F0IHdpdGhcbiAgICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+IEludGVnZXIubWF4X3ZhbHVlXG4gICAgICAgIHwgaW50IC0+XG4gICAgICAgICAgbGV0IGludCA9IEludGVnZXIuKCArICkgbG8gaW50IGluXG4gICAgICAgICAgaWYgSW50ZWdlci4oIDwgKSBpbnQgbG8gdGhlbiBJbnRlZ2VyLm1heF92YWx1ZSBlbHNlIGludCkpXG4gIDs7XG5cbiAgbGV0IHVuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gSW50ZWdlci51bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBsb2dfdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBJbnRlZ2VyLmxvZ191bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBub25fdW5pZm9ybSBmIGxvIGhpID1cbiAgICB3ZWlnaHRlZF91bmlvbiBbIDAuMDUsIHJldHVybiBsbzsgMC4wNSwgcmV0dXJuIGhpOyAwLjksIGYgbG8gaGkgXVxuICA7O1xuXG4gIGxldCBpbmNsdXNpdmUgPSBub25fdW5pZm9ybSB1bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgbG9nX2luY2x1c2l2ZSA9IG5vbl91bmlmb3JtIGxvZ191bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgdW5pZm9ybV9hbGwgPSB1bmlmb3JtX2luY2x1c2l2ZSBJbnRlZ2VyLm1pbl92YWx1ZSBJbnRlZ2VyLm1heF92YWx1ZVxuXG4gIGxldCBhbGwgPVxuICAgIFslbWFwXG4gICAgICBsZXQgbmVnYXRpdmUgPSBib29sXG4gICAgICBhbmQgbWFnbml0dWRlID0gbG9nX2luY2x1c2l2ZSBJbnRlZ2VyLnplcm8gSW50ZWdlci5tYXhfdmFsdWUgaW5cbiAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gSW50ZWdlci5iaXRfbm90IG1hZ25pdHVkZSBlbHNlIG1hZ25pdHVkZV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2ludCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnRcbiAgZW5kKVxuXG5sZXQgaW50ID0gRm9yX2ludC5hbGxcbmxldCBpbnRfdW5pZm9ybSA9IEZvcl9pbnQudW5pZm9ybV9hbGxcbmxldCBpbnRfaW5jbHVzaXZlID0gRm9yX2ludC5pbmNsdXNpdmVcbmxldCBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmVcbmxldCBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnRfZ2VvbWV0cmljID0gRm9yX2ludC5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9pbnQzMiA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDMyXG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDMyXG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50MzJcbiAgZW5kKVxuXG5sZXQgaW50MzIgPSBGb3JfaW50MzIuYWxsXG5sZXQgaW50MzJfdW5pZm9ybSA9IEZvcl9pbnQzMi51bmlmb3JtX2FsbFxubGV0IGludDMyX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5pbmNsdXNpdmVcbmxldCBpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50MzIubG9nX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQzMl9nZW9tZXRyaWMgPSBGb3JfaW50MzIuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfaW50NjMgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQ2M1xuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDYzXG4gIGVuZClcblxubGV0IGludDYzID0gRm9yX2ludDYzLmFsbFxubGV0IGludDYzX3VuaWZvcm0gPSBGb3JfaW50NjMudW5pZm9ybV9hbGxcbmxldCBpbnQ2M19pbmNsdXNpdmUgPSBGb3JfaW50NjMuaW5jbHVzaXZlXG5sZXQgaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjMudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2M19sb2dfaW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ19pbmNsdXNpdmVcbmxldCBpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjMubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjNfZ2VvbWV0cmljID0gRm9yX2ludDYzLmdlb21ldHJpY1xuXG5tb2R1bGUgRm9yX2ludDY0ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2NFxuICBlbmQpXG5cbmxldCBpbnQ2NCA9IEZvcl9pbnQ2NC5hbGxcbmxldCBpbnQ2NF91bmlmb3JtID0gRm9yX2ludDY0LnVuaWZvcm1fYWxsXG5sZXQgaW50NjRfaW5jbHVzaXZlID0gRm9yX2ludDY0LmluY2x1c2l2ZVxubGV0IGludDY0X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDY0X2dlb21ldHJpYyA9IEZvcl9pbnQ2NC5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBOYXRpdmVpbnRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20ubmF0aXZlaW50XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0ubmF0aXZlaW50XG4gIGVuZClcblxubGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQuYWxsXG5sZXQgbmF0aXZlaW50X3VuaWZvcm0gPSBGb3JfbmF0aXZlaW50LnVuaWZvcm1fYWxsXG5sZXQgbmF0aXZlaW50X2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQuaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9sb2dfaW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5sb2dfaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2dlb21ldHJpYyA9IEZvcl9uYXRpdmVpbnQuZ2VvbWV0cmljXG5sZXQgZmxvYXRfemVyb19leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgMC5cbmxldCBmbG9hdF96ZXJvX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSAwLlxuXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9XG4gIEZsb2F0Lm9uZV91bHAgYERvd24gRmxvYXQubWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxuOztcblxubGV0IGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIEZsb2F0Lm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBmbG9hdF9tYXhfcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IEZsb2F0Lm1heF9maW5pdGVfdmFsdWVcbmxldCBmbG9hdF9taW5fbm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5taW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X25vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9pbmZfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0LmluZmluaXR5XG5sZXQgZmxvYXRfaW5mX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBGbG9hdC5pbmZpbml0eVxubGV0IGZsb2F0X25hbl9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubmFuXG5sZXQgZmxvYXRfbWluX25hbl9tYW50aXNzYSA9IEludDYzLnN1Y2MgZmxvYXRfaW5mX21hbnRpc3NhXG5sZXQgZmxvYXRfbWF4X25hbl9tYW50aXNzYSA9IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2FcbmxldCBmbG9hdF9udW1fbWFudGlzc2FfYml0cyA9IDUyXG5cbigqIFdlIHdlaWdodCBtYW50aXNzYXMgc28gdGhhdCBcImludGVnZXItbGlrZVwiIHZhbHVlcywgYW5kIHZhbHVlcyB3aXRoIG9ubHkgYSBmZXcgZGlnaXRzXG4gICBwYXN0IHRoZSBkZWNpbWFsLCBhcmUgcmVhc29uYWJseSBjb21tb24uICopXG5sZXQgZmxvYXRfbm9ybWFsX21hbnRpc3NhID1cbiAgbGV0JWJpbmQgbnVtX2JpdHMgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlIDAgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgaW5cbiAgbGV0JW1hcCBiaXRzID1cbiAgICBGb3JfaW50NjMuaW5jbHVzaXZlIEludDYzLnplcm8gKEludDYzLnByZWQgKEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzKSlcbiAgaW5cbiAgSW50NjMuc2hpZnRfbGVmdCBiaXRzIChJbnQuKCAtICkgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgbnVtX2JpdHMpXG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfbG93IGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0JW1hcCBvZmZzZXQgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmUgMCAoSW50LiggLSApIHVwcGVyX2JvdW5kIGxvd2VyX2JvdW5kKSBpblxuICBJbnQuKCArICkgbG93ZXJfYm91bmQgb2Zmc2V0XG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfaGlnaCBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCVtYXAgb2Zmc2V0ID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlIDAgKEludC4oIC0gKSB1cHBlcl9ib3VuZCBsb3dlcl9ib3VuZCkgaW5cbiAgSW50LiggLSApIHVwcGVyX2JvdW5kIG9mZnNldFxuOztcblxuKCogV2Ugd2VpZ2h0IGV4cG9uZW50cyBzdWNoIHRoYXQgdmFsdWVzIG5lYXIgMSBhcmUgbW9yZSBsaWtlbHkuICopXG5sZXQgZmxvYXRfZXhwb25lbnQgPVxuICBsZXQgbWlkcG9pbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IDEuIGluXG4gIHVuaW9uXG4gICAgWyBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9oaWdoIGZsb2F0X21pbl9ub3JtYWxfZXhwb25lbnQgbWlkcG9pbnRcbiAgICA7IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2xvdyBtaWRwb2ludCBmbG9hdF9tYXhfbm9ybWFsX2V4cG9uZW50XG4gICAgXVxuOztcblxubGV0IGZsb2F0X3plcm8gPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfemVyb19leHBvbmVudFxuICAgIH5tYW50aXNzYTpmbG9hdF96ZXJvX21hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfc3Vibm9ybWFsID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gcmV0dXJuIGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPVxuICAgIEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlIGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgZmxvYXRfbWF4X3N1Ym5vcm1hbF9tYW50aXNzYVxuICBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9ub3JtYWwgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSBmbG9hdF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPSBmbG9hdF9ub3JtYWxfbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfaW5maW5pdGUgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfaW5mX2V4cG9uZW50XG4gICAgfm1hbnRpc3NhOmZsb2F0X2luZl9tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X25hbiA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IHJldHVybiBmbG9hdF9uYW5fZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID0gRm9yX2ludDYzLmluY2x1c2l2ZSBmbG9hdF9taW5fbmFuX21hbnRpc3NhIGZsb2F0X21heF9uYW5fbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfb2ZfY2xhc3MgYyA9XG4gIG1hdGNoIChjIDogRmxvYXQuQ2xhc3MudCkgd2l0aFxuICB8IFplcm8gLT4gZmxvYXRfemVyb1xuICB8IFN1Ym5vcm1hbCAtPiBmbG9hdF9zdWJub3JtYWxcbiAgfCBOb3JtYWwgLT4gZmxvYXRfbm9ybWFsXG4gIHwgSW5maW5pdGUgLT4gZmxvYXRfaW5maW5pdGVcbiAgfCBOYW4gLT4gZmxvYXRfbmFuXG47O1xuXG5sZXQgZmxvYXRfd2VpZ2h0X29mX2NsYXNzIGMgPVxuICBtYXRjaCAoYyA6IEZsb2F0LkNsYXNzLnQpIHdpdGhcbiAgfCBaZXJvIC0+IDEuXG4gIHwgU3Vibm9ybWFsIC0+IDEwLlxuICB8IE5vcm1hbCAtPiAxMDAuXG4gIHwgSW5maW5pdGUgLT4gMS5cbiAgfCBOYW4gLT4gMS5cbjs7XG5cbmxldCBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIGZpbHRlciA9XG4gIExpc3QuZmlsdGVyX21hcCBGbG9hdC5DbGFzcy5hbGwgfmY6KGZ1biBjIC0+XG4gICAgaWYgZmlsdGVyIGMgdGhlbiBTb21lIChmbG9hdF93ZWlnaHRfb2ZfY2xhc3MgYywgZmxvYXRfb2ZfY2xhc3MgYykgZWxzZSBOb25lKVxuICB8PiB3ZWlnaHRlZF91bmlvblxuOztcblxubGV0IGZsb2F0X2Zpbml0ZSA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBaZXJvIHwgU3Vibm9ybWFsIHwgTm9ybWFsIC0+IHRydWVcbiAgICB8IEluZmluaXRlIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0X3dpdGhvdXRfbmFuID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFplcm8gfCBTdWJub3JtYWwgfCBOb3JtYWwgfCBJbmZpbml0ZSAtPiB0cnVlXG4gICAgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXQgPSBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW4gXyAtPiB0cnVlKVxuXG5sZXQgZmxvYXRfZmluaXRlX25vbl96ZXJvID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFN1Ym5vcm1hbCB8IE5vcm1hbCAtPiB0cnVlXG4gICAgfCBaZXJvIHwgSW5maW5pdGUgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUgPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGVfbm9uX3plcm8gaW5cbiAgRmxvYXQuYWJzIHRcbjs7XG5cbmxldCBmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZV9ub25femVybyBpblxuICB+LS4oRmxvYXQuYWJzIHQpXG47O1xuXG5sZXQgZmxvYXRfcG9zaXRpdmVfb3JfemVybyA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZSBpblxuICBGbG9hdC5hYnMgdFxuOztcblxubGV0IGZsb2F0X25lZ2F0aXZlX29yX3plcm8gPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGUgaW5cbiAgfi0uKEZsb2F0LmFicyB0KVxuOztcblxubGV0IGZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBpZiAobm90IChGbG9hdC5pc19maW5pdGUgbG93ZXJfYm91bmQpKSB8fCBub3QgKEZsb2F0LmlzX2Zpbml0ZSB1cHBlcl9ib3VuZClcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiBib3VuZHMgYXJlIG5vdCBmaW5pdGVcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGxldCBsb3dlcl9pbmNsdXNpdmUgPSBGbG9hdC5vbmVfdWxwIGBVcCBsb3dlcl9ib3VuZCBpblxuICBsZXQgdXBwZXJfaW5jbHVzaXZlID0gRmxvYXQub25lX3VscCBgRG93biB1cHBlcl9ib3VuZCBpblxuICBpZiBsb3dlcl9pbmNsdXNpdmUgPiB1cHBlcl9pbmNsdXNpdmVcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiByZXF1ZXN0ZWQgcmFuZ2UgaXMgZW1wdHlcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmZsb2F0IHJhbmRvbSB+bG86bG93ZXJfaW5jbHVzaXZlIH5oaTp1cHBlcl9pbmNsdXNpdmUpXG47O1xuXG5sZXQgZmxvYXRfaW5jbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgaWYgRmxvYXQuZXF1YWwgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgdGhlbiByZXR1cm4gbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBGbG9hdC4oID0gKSAoRmxvYXQub25lX3VscCBgVXAgbG93ZXJfYm91bmQpIHVwcGVyX2JvdW5kXG4gIHRoZW4gdW5pb24gWyByZXR1cm4gbG93ZXJfYm91bmQ7IHJldHVybiB1cHBlcl9ib3VuZCBdXG4gIGVsc2VcbiAgICB3ZWlnaHRlZF91bmlvblxuICAgICAgWyAwLjA1LCByZXR1cm4gbG93ZXJfYm91bmRcbiAgICAgIDsgMC4wNSwgcmV0dXJuIHVwcGVyX2JvdW5kXG4gICAgICA7IDAuOSwgZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgICAgIF1cbjs7XG5cbmxldCBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aCA9XG4gIGxpc3Rfd2l0aF9sZW5ndGggY2hhcl9nZW4gfmxlbmd0aCB8PiBtYXAgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdFxuOztcblxubGV0IHN0cmluZ19vZiBjaGFyX2dlbiA9XG4gIGJpbmQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJfZ2VuID1cbiAgYmluZCBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmcgPSBzdHJpbmdfb2YgY2hhclxubGV0IHN0cmluZ19ub25fZW1wdHkgPSBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJcbmxldCBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aCA9IHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyIH5sZW5ndGhcblxubW9kdWxlIEVkaXRfc3RyaW5nID0gc3RydWN0XG4gIGxldCBlZGl0X2luc2VydCBzdHJpbmcgPVxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfZ2VvbWV0cmljIDEgfnA6MC41IGluXG4gICAgbGV0JWJpbmQgc3RyID0gc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGg6bGVuIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyBwb3M7IHN0cjsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyBwb3MgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9yZW1vdmUgc3RyaW5nID1cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIGxlbikgaW5cbiAgICBbIFN0cmluZy5wcmVmaXggc3RyaW5nIHBvczsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyAocG9zICsgbGVuKSBdXG4gICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIHw+IHJldHVyblxuICA7O1xuXG4gIGxldCBlZGl0X3JlcGxhY2Ugc3RyaW5nID1cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIGxlbikgaW5cbiAgICBsZXQlYmluZCBzdHIgPSBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aDpsZW4gaW5cbiAgICBbIFN0cmluZy5wcmVmaXggc3RyaW5nIHBvczsgc3RyOyBTdHJpbmcuZHJvcF9wcmVmaXggc3RyaW5nIChwb3MgKyBsZW4pIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfZG91YmxlIHN0cmluZyA9XG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSBsZW4pIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyAocG9zICsgbGVuKTsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyBwb3MgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9ub25lbXB0eSBzdHJpbmcgPVxuICAgIFsgZWRpdF9pbnNlcnQgc3RyaW5nOyBlZGl0X3JlbW92ZSBzdHJpbmc7IGVkaXRfcmVwbGFjZSBzdHJpbmc7IGVkaXRfZG91YmxlIHN0cmluZyBdXG4gICAgfD4gdW5pb25cbiAgOztcblxuICBsZXQgcmVjIGVkaXQgc3RyaW5nIG5fdGltZXMgPVxuICAgIGlmIG5fdGltZXMgPD0gMFxuICAgIHRoZW4gcmV0dXJuIHN0cmluZ1xuICAgIGVsc2UgKFxuICAgICAgbGV0JWJpbmQgc3RyaW5nID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZyB0aGVuIGVkaXRfaW5zZXJ0IHN0cmluZyBlbHNlIGVkaXRfbm9uZW1wdHkgc3RyaW5nXG4gICAgICBpblxuICAgICAgZWRpdCBzdHJpbmcgKG5fdGltZXMgLSAxKSlcbiAgOztcbmVuZFxuXG5sZXQgc3RyaW5nX2xpa2Ugc3RyaW5nID1cbiAgbGV0JWJpbmQgbl90aW1lcyA9IGludF9nZW9tZXRyaWMgMCB+cDowLjUgaW5cbiAgRWRpdF9zdHJpbmcuZWRpdCBzdHJpbmcgbl90aW1lc1xuOztcblxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmdcblxubGV0IHNleHBfb2YgYXRvbSA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCViaW5kIHNpemUgPSBzaXplIGluXG4gICAgKCogY2hvb3NlIGEgbnVtYmVyIHdlaWdodGVkIGxvdyBzbyB3ZSBoYXZlIGEgZGVjcmVhc2luZywgYnV0IG5vdCB2YW5pc2hpbmcsIGNoYW5jZVxuICAgICAgIHRvIGdlbmVyYXRlIGF0b21zIGFzIHNpemUgZ3Jvd3MgKilcbiAgICBtYXRjaCViaW5kIEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgKHNpemUgKyAxKSB3aXRoXG4gICAgKCogZ2VuZXJhdGUgYW4gYXRvbSB1c2luZyB0aGUgZ2l2ZW4gc2l6ZSAqKVxuICAgIHwgMCAtPlxuICAgICAgbGV0JW1hcCBhdG9tID0gYXRvbSBpblxuICAgICAgU2V4cC5BdG9tIGF0b21cbiAgICAoKiByZWx5aW5nIG9uIFtMaXN0Lmdlbl0gdG8gZGlzdHJpYnV0ZSBbc2l6ZV0gb3ZlciBzdWItc2V4cHMgKilcbiAgICB8IF8gLT5cbiAgICAgIGxldCVtYXAgbGlzdCA9IGxpc3Qgc2VsZiBpblxuICAgICAgU2V4cC5MaXN0IGxpc3QpXG47O1xuXG5sZXQgc2V4cCA9IHNleHBfb2Ygc3RyaW5nXG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW4gPVxuICBsZXQlYmluZCBrZXlzID0gbGlzdCBrZXlfZ2VuIGluXG4gIGxldCBrZXlzID0gTGlzdC5kZWR1cF9hbmRfc29ydCBrZXlzIH5jb21wYXJlOmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gIGxldCViaW5kIGRhdGEgPSBsaXN0X3dpdGhfbGVuZ3RoIGRhdGFfZ2VuIH5sZW5ndGg6KExpc3QubGVuZ3RoIGtleXMpIGluXG4gIHJldHVybiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgKExpc3QuemlwX2V4biBrZXlzIGRhdGEpKVxuOztcblxubGV0IHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gIG1hcCAobGlzdCBlbHRfZ2VuKSB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9saXN0IH5jb21wYXJhdG9yKVxuOztcblxubGV0IGNvbXBhcmF0b3Jfb2ZfbVxuICAgICAgKHR5cGUgYSBjKVxuICAgICAgKG1vZHVsZSBNIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjKVxuICA9XG4gIE0uY29tcGFyYXRvclxuOztcblxubGV0IG1hcF90X20gbSBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW5cbiAgfD4gbWFwIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IHNldF90X20gbSBlbHRfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgfD4gbWFwIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IGJpZ2FycmF5MSB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JW1hcCBlbHRzID0gbGlzdCB0IGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBkaW0gPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IGRpbSB+ZjooZnVuIGkgLT4gZWx0cy4oaSAtIG9mZnNldCkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gYmlnYXJyYXkxIGNoYXIgQ2hhciBDX2xheW91dFxubGV0IGZsb2F0MzJfdmVjID0gYmlnYXJyYXkxIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbmxldCBiaWdhcnJheTJfZGltID1cbiAgbWF0Y2glYmluZCBzaXplIHdpdGhcbiAgfCAwIC0+IHJldHVybiAoMCwgMClcbiAgfCBtYXhfdG90YWxfc2l6ZSAtPlxuICAgIGxldCViaW5kIGEgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZV0sIHdlaWdodGVkIGxvdyB0byBnaXZlIHRoZSBvdGhlclxuICAgICAgICAgZGltZW5zaW9uIGEgZ29vZCBjaGFuY2Ugb2YgYmVpbmcgY29tcGFyYXRpdmVseSBoaWdoICopXG4gICAgICBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgbWF4X3RvdGFsX3NpemVcbiAgICBpblxuICAgIGxldCViaW5kIGIgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZSAvIGFdLCB3ZWlnaHRlZCBoaWdoIHRvIHJlYWNoIGNsb3NlIHRvXG4gICAgICAgICBbbWF4X3RvdGFsX3NpemVdIG1vc3Qgb2YgdGhlIHRpbWUgKilcbiAgICAgIGxldCBtYXhfYiA9IG1heF90b3RhbF9zaXplIC8gYSBpblxuICAgICAgbGV0JW1hcCBiX3dlaWdodGVkX2xvdyA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMCBtYXhfYiBpblxuICAgICAgbWF4X2IgLSBiX3dlaWdodGVkX2xvd1xuICAgIGluXG4gICAgKCogYXZvaWQgYW55IHNrZXcgb2YgYSB2cyBiIGJ5IHJhbmRvbWx5IHN3YXBwaW5nICopXG4gICAgaWYlbWFwIGJvb2wgdGhlbiBhLCBiIGVsc2UgYiwgYVxuOztcblxubGV0IGJpZ2FycmF5MiB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JWJpbmQgZGltMSwgZGltMiA9IGJpZ2FycmF5Ml9kaW0gaW5cbiAgbGV0JW1hcCBlbHRzID0gbGlzdF93aXRoX2xlbmd0aCB+bGVuZ3RoOmRpbTEgKGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0yIHQpIGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdF9tYXAgfmY6QXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gaSBqIC0+XG4gICAgZWx0cy4oaSAtIG9mZnNldCkuKGogLSBvZmZzZXQpKVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gYmlnYXJyYXkyIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBEZWJ1ZyA9IHN0cnVjdFxuICBsZXQgY292ZXJhZ2VcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgQ21wIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHNhbXBsZVxuICAgID1cbiAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICBzYW1wbGVcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBDbXApKVxuICAgICAgfmY6KGZ1biBjb3VudHMgdmFsdWUgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBjb3VudHMgdmFsdWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2ICsgMSkpXG4gIDs7XG5cbiAgbGV0IG1vbml0b3IgdCB+ZiA9XG4gICAgbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgZiB2YWx1ZTtcbiAgICAgIHZhbHVlKVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBzdWNjIDogaW50NjQgLT4gaW50NjRcbigqKiBTdWNjZXNzb3IuICBbSW50NjQuc3VjYyB4XSBpcyBbSW50NjQuYWRkIHggSW50NjQub25lXS4gKilcblxudmFsIHByZWQgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFByZWRlY2Vzc29yLiAgW0ludDY0LnByZWQgeF0gaXMgW0ludDY0LnN1YiB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBhYnMgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFthYnMgeF0gaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIFt4XS4gT24gW21pbl9pbnRdIHRoaXNcbiAgIGlzIFttaW5faW50XSBpdHNlbGYgYW5kIHRodXMgcmVtYWlucyBuZWdhdGl2ZS4gKilcblxudmFsIG1heF9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBncmVhdGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAye142M30gLSAxLiAqKVxuXG52YWwgbWluX2ludCA6IGludDY0XG4oKiogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIC0ye142M30uICopXG5cbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgYW5kLiAqKVxuXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBvci4gKilcblxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBleGNsdXNpdmUgb3IuICopXG5cbnZhbCBsb2dub3QgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIEJpdHdpc2UgbG9naWNhbCBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG4oKiogW0ludDY0LnNoaWZ0X2xlZnQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSBsZWZ0IGJ5IFt5XSBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhbiBhcml0aG1ldGljIHNoaWZ0OiB0aGUgc2lnbiBiaXQgb2YgW3hdIGlzIHJlcGxpY2F0ZWRcbiAgIGFuZCBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYSBsb2dpY2FsIHNoaWZ0OiB6ZXJvZXMgYXJlIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHNcbiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpZ24gb2YgW3hdLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBpbnRlZ2VyICh0eXBlIFtpbnRdKSB0byBhIDY0LWJpdCBpbnRlZ2VyXG4gICAgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYW5cbiAgIGludGVnZXIgKHR5cGUgW2ludF0pLiAgT24gNjQtYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteNjN9LCBpLmUuIHRoZSBoaWdoLW9yZGVyIGJpdCBpcyBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMX0sIGkuZS4gdGhlIHRvcCAzMyBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICopXG5cbnZhbCB1bnNpZ25lZF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgb3B0aW9uXG4oKiogU2FtZSBhcyB7IXRvX2ludH0sIGJ1dCBpbnRlcnByZXRzIHRoZSBhcmd1bWVudCBhcyBhbiB7ZSB1bnNpZ25lZH0gaW50ZWdlci5cbiAgICBSZXR1cm5zIFtOb25lXSBpZiB0aGUgdW5zaWduZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBmaXQgaW50byBhblxuICAgIFtpbnRdLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzICopXG5cbnZhbCBtaW46IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjEgKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMSAqKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYXRvbWljIDogXyB0XG4gIHZhbCBjcmVhdGUgOiAoJ2EgLT4gJ2EgU2VxdWVuY2UudCkgLT4gJ2EgdFxuICB2YWwgc2hyaW5rIDogJ2EgdCAtPiAnYSAtPiAnYSBTZXF1ZW5jZS50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGxldCBhdG9taWMgXyA9IFNlcXVlbmNlLmVtcHR5XG4gIGxldCBjcmVhdGUgPSBGbi5pZFxuICBsZXQgc2hyaW5rID0gRm4uaWRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG1hcCB0IH5mIH5mX2ludmVyc2UgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLm1hcCB+ZiAoc2hyaW5rIHQgKGZfaW52ZXJzZSB4KSkpXG5sZXQgZmlsdGVyIHQgfmYgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlciB+ZiAoc2hyaW5rIHQgeCkpXG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgfmZfaW52ZXJzZSA9XG4gIGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UuZmlsdGVyX21hcCB+ZiAoc2hyaW5rIHQgKGZfaW52ZXJzZSB4KSkpXG47O1xuXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLm9mX2xhenkgKGxhenkgKHNocmluayAoZm9yY2UgbGF6eV90KSB4KSkpXG5cbmxldCBmaXhlZF9wb2ludCBvZl9zaHJpbmtlciA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAob2Zfc2hyaW5rZXIgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgb2ZfbGF6eSBsYXp5X3Rcbjs7XG5cbmxldCBib3RoIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gKGZzdCwgc25kKSAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICBbIFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6KGZ1biBmc3QgLT4gZnN0LCBzbmQpXG4gICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6KGZ1biBzbmQgLT4gZnN0LCBzbmQpXG4gICAgICBdKVxuOztcblxubGV0IHVuaXQgPSBhdG9taWNcbmxldCBib29sID0gYXRvbWljXG5sZXQgY2hhciA9IGF0b21pY1xubGV0IGludCA9IGF0b21pY1xubGV0IGludDMyID0gYXRvbWljXG5sZXQgaW50NjMgPSBhdG9taWNcbmxldCBpbnQ2NCA9IGF0b21pY1xubGV0IG5hdGl2ZWludCA9IGF0b21pY1xubGV0IGZsb2F0ID0gYXRvbWljXG5cbmxldCBiaWdhcnJheTEgc3JjID1cbiAgbGV0IGRpbSA9IEJpZ2FycmF5LkFycmF5MS5kaW0gc3JjIGluXG4gIG1hdGNoIGRpbSB3aXRoXG4gIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICB8IF8gLT5cbiAgICBsZXQga2luZCA9IEJpZ2FycmF5LkFycmF5MS5raW5kIHNyYyBpblxuICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTEubGF5b3V0IHNyYyBpblxuICAgIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gICAgU2VxdWVuY2UuaW5pdCBkaW0gfmY6KGZ1biB0b19za2lwIC0+XG4gICAgICBsZXQgdG9fc2tpcCA9IHRvX3NraXAgKyBvZmZzZXQgaW5cbiAgICAgIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmluaXQga2luZCBsYXlvdXQgKGRpbSAtIDEpIH5mOihmdW4gaSAtPlxuICAgICAgICBzcmMue2lmIGkgPCB0b19za2lwIHRoZW4gaSBlbHNlIGkgKyAxfSkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gY3JlYXRlIGJpZ2FycmF5MVxubGV0IGZsb2F0MzJfdmVjID0gY3JlYXRlIGJpZ2FycmF5MVxubGV0IGZsb2F0NjRfdmVjID0gY3JlYXRlIGJpZ2FycmF5MVxuXG5sZXQgYmlnYXJyYXkyID1cbiAgbGV0IG1vZHVsZSBEaW1zID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZGltMSA6IGludFxuICAgICAgOyBkaW0yIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSBhID0gQmlnYXJyYXkuQXJyYXkyLnsgZGltMSA9IGRpbTEgYTsgZGltMiA9IGRpbTIgYSB9XG4gIGVuZFxuICBpblxuICBsZXQgc2hyaW5rIGZpZWxkIHNyYyA9XG4gICAgbGV0IGRpbXMgPSBEaW1zLmNyZWF0ZSBzcmMgaW5cbiAgICBtYXRjaCBGaWVsZC5nZXQgZmllbGQgZGltcyB3aXRoXG4gICAgfCAwIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBfIC0+XG4gICAgICBsZXQga2luZCA9IEJpZ2FycmF5LkFycmF5Mi5raW5kIHNyYyBpblxuICAgICAgbGV0IGxheW91dCA9IEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgc3JjIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgICAgbGV0ICh7IGRpbTE7IGRpbTIgfSA6IERpbXMudCkgPSBGaWVsZC5tYXAgZmllbGQgZGltcyB+ZjpJbnQucHJlZCBpblxuICAgICAgU2VxdWVuY2UuaW5pdCAoRmllbGQuZ2V0IGZpZWxkIGRpbXMpIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgICBsZXQgdG9fc2tpcCA9IHRvX3NraXAgKyBvZmZzZXQgaW5cbiAgICAgICAgbGV0IHNraXAgaSA9IGlmIGkgPCB0b19za2lwIHRoZW4gaSBlbHNlIGkgKyAxIGluXG4gICAgICAgIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gZGltMSBkaW0yIC0+XG4gICAgICAgICAgbGV0ICh7IGRpbTE7IGRpbTIgfSA6IERpbXMudCkgPSBGaWVsZC5tYXAgZmllbGQgeyBkaW0xOyBkaW0yIH0gfmY6c2tpcCBpblxuICAgICAgICAgIHNyYy57ZGltMSwgZGltMn0pKVxuICBpblxuICBmdW4gc3JjIC0+XG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMSBzcmM7IHNocmluayBEaW1zLkZpZWxkcy5kaW0yIHNyYyBdXG47O1xuXG5sZXQgZmxvYXQzMl9tYXQgPSBjcmVhdGUgYmlnYXJyYXkyXG5sZXQgZmxvYXQ2NF9tYXQgPSBjcmVhdGUgYmlnYXJyYXkyXG5cbmxldCBvcHRpb24gdmFsdWVfdCA9XG4gIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgIFNlcXVlbmNlLmFwcGVuZFxuICAgICAgICAoU2VxdWVuY2Uuc2luZ2xldG9uIE5vbmUpXG4gICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6T3B0aW9uLnJldHVybiAoc2hyaW5rIHZhbHVlX3QgdmFsdWUpKSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBsaXN0X3QgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIHRhaWxcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGVsdF90IGhlYWQpIH5mOihmdW4gaGVhZCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBsaXN0X3QgdGFpbCkgfmY6KGZ1biB0YWlsIC0+IGhlYWQgOjogdGFpbClcbiAgICAgICAgICBdKSlcbjs7XG5cbmxldCBzdHJpbmcgPSBtYXAgKGxpc3QgY2hhcikgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdCB+Zl9pbnZlcnNlOlN0cmluZy50b19saXN0XG5sZXQgYnl0ZXMgPSBtYXAgc3RyaW5nIH5mOkJ5dGVzLm9mX3N0cmluZyB+Zl9pbnZlcnNlOkJ5dGVzLnRvX3N0cmluZ1xubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdCB+Zl9pbnZlcnNlOkFycmF5LnRvX2xpc3RcbmxldCByZWYgdCA9IG1hcCB0IH5mOlJlZi5jcmVhdGUgfmZfaW52ZXJzZTpSZWYuKCAhIClcbmxldCBsYXp5X3QgdCA9IG1hcCB0IH5mOkxhenkuZnJvbV92YWwgfmZfaW52ZXJzZTpMYXp5LmZvcmNlXG5cbmxldCBzZXhwID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzaHJpbmtlciAtPlxuICAgIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIF8gLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgU2V4cC5MaXN0IGwgLT5cbiAgICAgICAgbGV0IHNocmlua19saXN0ID1cbiAgICAgICAgICBzaHJpbmsgKGxpc3Qgc2hyaW5rZXIpIGwgfD4gU2VxdWVuY2UubWFwIH5mOihmdW4gbCAtPiBTZXhwLkxpc3QgbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNocmlua190cmVlID0gU2VxdWVuY2Uub2ZfbGlzdCBsIGluXG4gICAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rX2xpc3Q7IHNocmlua190cmVlIF0pKVxuOztcblxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIGVpdGhlciAtPlxuICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBmc3QgLT4gU2VxdWVuY2UubWFwIChzaHJpbmsgZnN0X3QgZnN0KSB+ZjpFaXRoZXIuZmlyc3RcbiAgICB8IFNlY29uZCBzbmQgLT4gU2VxdWVuY2UubWFwIChzaHJpbmsgc25kX3Qgc25kKSB+ZjpFaXRoZXIuc2Vjb25kKVxuOztcblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgbWFwXG4gICAgKGVpdGhlciBva190IGVycl90KVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCBvayAtPiBPayBva1xuICAgICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbiAgICB+Zl9pbnZlcnNlOihmdW5jdGlvblxuICAgICAgfCBPayBvayAtPiBGaXJzdCBva1xuICAgICAgfCBFcnJvciBlcnIgLT4gU2Vjb25kIGVycilcbjs7XG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgYWxpc3QgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2FsaXN0IHRyZWUgaW5cbiAgICBsZXQgZHJvcF9rZXlzID1cbiAgICAgIFNlcXVlbmNlLm1hcCAoU2VxdWVuY2Uub2ZfbGlzdCBhbGlzdCkgfmY6KGZ1biAoaywgXykgLT5cbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBrKVxuICAgIGluXG4gICAgbGV0IHNocmlua19rZXlzID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgIGxldCB0cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBrZXkgaW5cbiAgICAgICAgICAgU2VxdWVuY2UuZmlsdGVyX21hcCAoc2hyaW5rIGtleV90IGtleSkgfmY6KGZ1biBzbWFsbGVyX2tleSAtPlxuICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLmFkZCB+Y29tcGFyYXRvciB0cmVlIH5rZXk6c21hbGxlcl9rZXkgfmRhdGFcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBgT2sgdHJlZSAtPiBTb21lIHRyZWVcbiAgICAgICAgICAgICB8IGBEdXBsaWNhdGUgLT4gTm9uZSkpKVxuICAgIGluXG4gICAgbGV0IHNocmlua19kYXRhID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgIFNlcXVlbmNlLm1hcCAoc2hyaW5rIGRhdGFfdCBkYXRhKSB+ZjooZnVuIHNtYWxsZXJfZGF0YSAtPlxuICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuc2V0IH5jb21wYXJhdG9yIHRyZWUgfmtleSB+ZGF0YTpzbWFsbGVyX2RhdGEpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9rZXlzOyBzaHJpbmtfa2V5czsgc2hyaW5rX2RhdGEgXSlcbjs7XG5cbmxldCBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90ID1cbiAgY3JlYXRlIChmdW4gdHJlZSAtPlxuICAgIGxldCBsaXN0ID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0IHRyZWUgaW5cbiAgICBsZXQgZHJvcF9lbHRzID1cbiAgICAgIFNlcXVlbmNlLm1hcCAoU2VxdWVuY2Uub2ZfbGlzdCBsaXN0KSB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdClcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgZWx0IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBlbHRfdCBlbHQpIH5mOihmdW4gc21hbGxlcl9lbHQgLT5cbiAgICAgICAgICAgICBtYXRjaCBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLm1lbSB+Y29tcGFyYXRvciB0cmVlIHNtYWxsZXJfZWx0IHdpdGhcbiAgICAgICAgICAgICB8IHRydWUgLT4gTm9uZVxuICAgICAgICAgICAgIHwgZmFsc2UgLT4gU29tZSAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgdHJlZSB+Y29tcGFyYXRvciBzbWFsbGVyX2VsdCkpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9lbHRzOyBzaHJpbmtfZWx0cyBdKVxuOztcblxubGV0IG1hcF90IGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIG1hcF90IC0+XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBtYXBfdCBpblxuICAgIGxldCB0ID1cbiAgICAgIG1hcFxuICAgICAgICAobWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QpXG4gICAgICAgIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuICAgICAgICB+Zl9pbnZlcnNlOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgICBpblxuICAgIHNocmluayB0IG1hcF90KVxuOztcblxubGV0IHNldF90IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gc2V0X3QgLT5cbiAgICBsZXQgY29tcGFyYXRvciA9IFNldC5jb21wYXJhdG9yIHNldF90IGluXG4gICAgbGV0IHQgPVxuICAgICAgbWFwXG4gICAgICAgIChzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90KVxuICAgICAgICB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbiAgICAgICAgfmZfaW52ZXJzZTpTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gICAgaW5cbiAgICBzaHJpbmsgdCBzZXRfdClcbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFRlc3RfaW50ZlxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIG1vZHVsZSBTZWVkID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9uZGV0ZXJtaW5pc3RpY1xuICAgICAgfCBEZXRlcm1pbmlzdGljIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIG1vZHVsZSBQb3RlbnRpYWxseV9pbmZpbml0ZV9zZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFNlcXVlbmNlLnRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgc2VxdWVuY2UgPVxuICAgICAgbGV0IHByZWZpeCwgc3VmZml4ID0gU2VxdWVuY2Uuc3BsaXRfbiBzZXF1ZW5jZSAxMDAgaW5cbiAgICAgIGxldCBwcmVmaXggPSBMaXN0Lm1hcCBwcmVmaXggfmY6c2V4cF9vZl9lbHQgaW5cbiAgICAgIGxldCBzdWZmaXggPVxuICAgICAgICBtYXRjaCBTZXF1ZW5jZS5pc19lbXB0eSBzdWZmaXggd2l0aFxuICAgICAgICB8IHRydWUgLT4gW11cbiAgICAgICAgfCBmYWxzZSAtPiBbIFslbWVzc2FnZSBcIi4uLlwiXSBdXG4gICAgICBpblxuICAgICAgU2V4cC5MaXN0IChwcmVmaXggQCBzdWZmaXgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHNlZWQgOiBTZWVkLnRcbiAgICA7IHRlc3RfY291bnQgOiBpbnRcbiAgICA7IHNocmlua19jb3VudCA6IGludFxuICAgIDsgc2l6ZXMgOiBpbnQgUG90ZW50aWFsbHlfaW5maW5pdGVfc2VxdWVuY2UudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuZW5kXG5cbmxldCBkZWZhdWx0X2NvbmZpZyA6IENvbmZpZy50ID1cbiAgeyBzZWVkID0gRGV0ZXJtaW5pc3RpYyBcImFuIGFyYml0cmFyeSBidXQgZGV0ZXJtaW5pc3RpYyBzdHJpbmdcIlxuICA7IHRlc3RfY291bnQgPVxuICAgICAgKCogW1NwbGl0dGFibGVfcmFuZG9tXSBpcyBiYXNlZCBvbiA2NC1iaXQgYXJpdGhtZXRpYywgYW5kIHNvIHRlc3RzIHJ1biBtdWNoIHNsb3dlclxuICAgICAgICAgb24gMzItYml0IHRhcmdldHMuIFdlIHJ1biBhbiBvcmRlciBvZiBtYWduaXR1ZGUgZmV3ZXIgdHJpYWxzIHNvIGFzIG5vdCB0b1xuICAgICAgICAgY29tcGxldGVseSBib2cgZG93biBjb250aW51b3VzIGludGVncmF0aW9uIHN5c3RlbXMuICopXG4gICAgICAobWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICAgfCBXNjQgLT4gMTBfMDAwXG4gICAgICAgfCBXMzIgLT4gMV8wMDApXG4gIDsgc2hyaW5rX2NvdW50ID0gMTBfMDAwXG4gIDsgc2l6ZXMgPSBTZXF1ZW5jZS5jeWNsZV9saXN0X2V4biAoTGlzdC5yYW5nZSAwIH5zdGFydDpgaW5jbHVzaXZlIDMwIH5zdG9wOmBpbmNsdXNpdmUpXG4gIH1cbjs7XG5cbmxldCBsYXp5X25vbmRldGVybWluaXN0aWNfc3RhdGUgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCBpbml0aWFsX3JhbmRvbV9zdGF0ZSB+Y29uZmlnID1cbiAgbWF0Y2ggQ29uZmlnLnNlZWQgY29uZmlnIHdpdGhcbiAgfCBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2UgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlKVxuICB8IERldGVybWluaXN0aWMgc3RyaW5nIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoU3RyaW5nLmhhc2ggc3RyaW5nKVxuOztcblxubGV0IG9uZV9zaXplX3Blcl90ZXN0IH4oY29uZmlnIDogQ29uZmlnLnQpID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0Oihjb25maWcuc2l6ZXMsIDApIH5mOihmdW4gKHNpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMpIC0+XG4gICAgbWF0Y2ggbnVtYmVyX29mX3NpemVfdmFsdWVzID49IGNvbmZpZy50ZXN0X2NvdW50IHdpdGhcbiAgICB8IHRydWUgLT4gTm9uZVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChtYXRjaCBTZXF1ZW5jZS5uZXh0IHNpemVzIHdpdGhcbiAgICAgICB8IFNvbWUgKHNpemUsIHJlbWFpbmluZ19zaXplcykgLT5cbiAgICAgICAgIFNvbWUgKHNpemUsIChyZW1haW5pbmdfc2l6ZXMsIG51bWJlcl9vZl9zaXplX3ZhbHVlcyArIDEpKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogaW5zdWZmaWNpZW50IHNpemUgdmFsdWVzIGZvciB0ZXN0IGNvdW50XCJcbiAgICAgICAgICAgICAgIH50ZXN0X2NvdW50Oihjb25maWcudGVzdF9jb3VudCA6IGludClcbiAgICAgICAgICAgICAgIChudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgOiBpbnQpXSkpXG47O1xuXG5sZXQgc2hyaW5rX2Vycm9yIH5zaHJpbmtlciB+Y29uZmlnIH5mIGlucHV0IGVycm9yID1cbiAgbGV0IHJlYyBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3IgPVxuICAgIG1hdGNoIHNocmlua19jb3VudCB3aXRoXG4gICAgfCAwIC0+IGlucHV0LCBlcnJvclxuICAgIHwgXyAtPlxuICAgICAgbGV0IHNocmlua19jb3VudCA9IHNocmlua19jb3VudCAtIDEgaW5cbiAgICAgIChtYXRjaCBTZXF1ZW5jZS5uZXh0IGFsdGVybmF0ZXMgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBpbnB1dCwgZXJyb3JcbiAgICAgICB8IFNvbWUgKGFsdGVybmF0ZSwgYWx0ZXJuYXRlcykgLT5cbiAgICAgICAgIChtYXRjaCBmIGFsdGVybmF0ZSB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3JcbiAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICBsZXQgYWx0ZXJuYXRlcyA9IFNocmlua2VyLnNocmluayBzaHJpbmtlciBhbHRlcm5hdGUgaW5cbiAgICAgICAgICAgIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBhbHRlcm5hdGUgZXJyb3IpKVxuICBpblxuICBsZXQgc2hyaW5rX2NvdW50ID0gQ29uZmlnLnNocmlua19jb3VudCBjb25maWcgaW5cbiAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgaW5wdXQgaW5cbiAgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG47O1xuXG5sZXQgaW5wdXRfc2VxdWVuY2UgfmNvbmZpZyB+ZXhhbXBsZXMgfmdlbmVyYXRvciA9XG4gIGxldCByYW5kb20gPSBpbml0aWFsX3JhbmRvbV9zdGF0ZSB+Y29uZmlnIGluXG4gIFNlcXVlbmNlLmFwcGVuZFxuICAgIChTZXF1ZW5jZS5vZl9saXN0IGV4YW1wbGVzKVxuICAgIChvbmVfc2l6ZV9wZXJfdGVzdCB+Y29uZmlnXG4gICAgIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIHNpemUgLT4gR2VuZXJhdG9yLmdlbmVyYXRlIGdlbmVyYXRvciB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbmxldCB3aXRoX3NhbXBsZSB+ZiA/KGNvbmZpZyA9IGRlZmF1bHRfY29uZmlnKSA/KGV4YW1wbGVzID0gW10pIGdlbmVyYXRvciA9XG4gIGxldCBzZXF1ZW5jZSA9IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgaW5cbiAgZiBzZXF1ZW5jZVxuOztcblxubGV0IHJlc3VsdCAodHlwZSBhKSB+ZiA/KGNvbmZpZyA9IGRlZmF1bHRfY29uZmlnKSA/KGV4YW1wbGVzID0gW10pIG0gPVxuICBsZXQgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID0gbSBpblxuICB3aXRoX3NhbXBsZSBNLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb25maWcgfmV4YW1wbGVzIH5mOihmdW4gc2VxdWVuY2UgLT5cbiAgICBtYXRjaFxuICAgICAgU2VxdWVuY2UuZm9sZF9yZXN1bHQgc2VxdWVuY2UgfmluaXQ6KCkgfmY6KGZ1biAoKSBpbnB1dCAtPlxuICAgICAgICBtYXRjaCBmIGlucHV0IHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChpbnB1dCwgZXJyb3IpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgICAgbGV0IHNocmlua2VyID0gTS5xdWlja2NoZWNrX3Nocmlua2VyIGluXG4gICAgICBsZXQgaW5wdXQsIGVycm9yID0gc2hyaW5rX2Vycm9yIH5zaHJpbmtlciB+Y29uZmlnIH5mIGlucHV0IGVycm9yIGluXG4gICAgICBFcnJvciAoaW5wdXQsIGVycm9yKSlcbjs7XG5cbmxldCBydW4gKHR5cGUgYSkgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGhfam9pbiB+YmFja3RyYWNlOihCYWNrdHJhY2UuRXhuLmFtX3JlY29yZGluZyAoKSkgKGZ1biAoKSAtPiBmIHgpXG4gIGluXG4gIG1hdGNoIHJlc3VsdCB+ZiA/Y29uZmlnID9leGFtcGxlcyAobW9kdWxlIE0pIHdpdGhcbiAgfCBPayAoKSAtPiBPayAoKVxuICB8IEVycm9yIChpbnB1dCwgZXJyb3IpIC0+XG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLlRlc3QucnVuOiB0ZXN0IGZhaWxlZFwiIChpbnB1dCA6IE0udCkgKGVycm9yIDogRXJyb3IudCldXG47O1xuXG5sZXQgd2l0aF9zYW1wbGVfZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciA9XG4gIGxldCBmIHggPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGYgeCkgaW5cbiAgd2l0aF9zYW1wbGUgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgZ2VuZXJhdG9yIHw+IE9yX2Vycm9yLm9rX2V4blxuOztcblxubGV0IHJ1bl9leG4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgPVxuICBsZXQgZiB4ID1cbiAgICBPcl9lcnJvci50cnlfd2l0aCB+YmFja3RyYWNlOihCYWNrdHJhY2UuRXhuLmFtX3JlY29yZGluZyAoKSkgKGZ1biAoKSAtPiBmIHgpXG4gIGluXG4gIHJ1biB+ZiA/Y29uZmlnID9leGFtcGxlcyB0ZXN0YWJsZSB8PiBPcl9lcnJvci5va19leG5cbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIE9ic2VydmVyMFxuXG5sZXQgdW5tYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSB0IChmIHgpIH5zaXplIH5oYXNoKVxubGV0IG9mX2hhc2hfZm9sZCBmID0gY3JlYXRlIChmdW4geCB+c2l6ZTpfIH5oYXNoIC0+IGYgaGFzaCB4KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmb3JjZSBsYXp5X3QpIHggfnNpemUgfmhhc2gpXG5cbmxldCBmaXhlZF9wb2ludCB3cmFwID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5ICh3cmFwIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgdW5pdCA9IG9wYXF1ZVxubGV0IGJvb2wgPSBvZl9oYXNoX2ZvbGQgQm9vbC5oYXNoX2ZvbGRfdFxubGV0IGNoYXIgPSBvZl9oYXNoX2ZvbGQgQ2hhci5oYXNoX2ZvbGRfdFxubGV0IGludCA9IG9mX2hhc2hfZm9sZCBJbnQuaGFzaF9mb2xkX3RcbmxldCBpbnQzMiA9IG9mX2hhc2hfZm9sZCBJbnQzMi5oYXNoX2ZvbGRfdFxubGV0IGludDYzID0gb2ZfaGFzaF9mb2xkIEludDYzLmhhc2hfZm9sZF90XG5sZXQgaW50NjQgPSBvZl9oYXNoX2ZvbGQgSW50NjQuaGFzaF9mb2xkX3RcbmxldCBuYXRpdmVpbnQgPSBvZl9oYXNoX2ZvbGQgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5sZXQgZmxvYXQgPSBvZl9oYXNoX2ZvbGQgRmxvYXQuaGFzaF9mb2xkX3RcbmxldCBzdHJpbmcgPSBvZl9oYXNoX2ZvbGQgU3RyaW5nLmhhc2hfZm9sZF90XG5sZXQgc2V4cCA9IG9mX2hhc2hfZm9sZCBTZXhwLmhhc2hfZm9sZF90XG5sZXQgYmlnc3RyaW5nID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2NoYXIpXG5sZXQgZmxvYXQzMl92ZWMgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQ2NF92ZWMgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQzMl9tYXQgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQ2NF9tYXQgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgYnl0ZXMgPSB1bm1hcCBzdHJpbmcgfmY6Qnl0ZXMudG9fc3RyaW5nXG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgfnNpemUgfmhhc2ggLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IG9ic2VydmUgZnN0X3QgZnN0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSlcbiAgICB8IFNlY29uZCBzbmQgLT4gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAyKSlcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIHVubWFwIChlaXRoZXIgb2tfdCBlcnJfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBPayBvayAtPiBGaXJzdCBva1xuICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgaGFzaCA9IG9ic2VydmUgZnN0X3QgZnN0IH5zaXplIH5oYXNoIGluXG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIHNuZF90IHNuZCB+c2l6ZSB+aGFzaCBpblxuICAgIGhhc2gpXG47O1xuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9wYXF1ZSB2YWx1ZV90KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRmlyc3QgKClcbiAgICB8IFNvbWUgdmFsdWUgLT4gU2Vjb25kIHZhbHVlKVxuOztcblxubGV0IGxpc3QgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biBsaXN0IH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKSBpblxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgbGV0IHNpemVzID1cbiAgICAgIEdlbmVyYXRvci5zaXplcyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoICgpXG4gICAgICB8PiBHZW5lcmF0b3IuZ2VuZXJhdGUgfnNpemUgfnJhbmRvbVxuICAgIGluXG4gICAgTGlzdC5mb2xkMl9leG4gbGlzdCBzaXplcyB+aW5pdDooaGFzaF9mb2xkX2ludCBoYXNoIDApIH5mOihmdW4gaGFzaCBlbHQgc2l6ZSAtPlxuICAgICAgb2JzZXJ2ZSBlbHRfdCBlbHQgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAxKSkpXG47O1xuXG5sZXQgYXJyYXkgdCA9IHVubWFwIChsaXN0IHQpIH5mOkFycmF5LnRvX2xpc3RcbmxldCByZWYgdCA9IHVubWFwIHQgfmY6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSB1bm1hcCB0IH5mOkxhenkuZm9yY2VcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biBmIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKSBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICAoKiBFbXBpcmljYWxseSwgZG91YmxpbmcgdGhlIHNpemUgd2hlbiBnZW5lcmF0aW5nIHRoZSBsaXN0IG9mIGlucHV0cyBnaXZlcyB1cyBtdWNoXG4gICAgICAgICBiZXR0ZXIgY292ZXJhZ2Ugb2YgdGhlIHNwYWNlIG9mIGZ1bmN0aW9ucy4gKilcbiAgICAgIEdlbmVyYXRvci5nZW5lcmF0ZSAoR2VuZXJhdG9yLnNpemVzICgpKSB+c2l6ZTooc2l6ZSAqIDIpIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZCBzaXplcyB+aW5pdDpoYXNoIH5mOihmdW4gaGFzaCBzaXplIC0+XG4gICAgICBsZXQgeCA9IEdlbmVyYXRvci5nZW5lcmF0ZSBkb20gfnNpemUgfnJhbmRvbSBpblxuICAgICAgb2JzZXJ2ZSBybmcgKGYgeCkgfnNpemUgfmhhc2gpKVxuOztcblxubGV0IG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMgPVxuICB1bm1hcCAobGlzdCAoYm90aCBrZXlfb2JzIGRhdGFfb2JzKSkgfmY6TWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdFxuOztcblxubGV0IHNldF90cmVlIGVsdF9vYnMgPSB1bm1hcCAobGlzdCBlbHRfb2JzKSB+ZjpTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2xpc3RcblxubGV0IG1hcF90IGtleV9vYnMgZGF0YV9vYnMgPVxuICB1bm1hcCAobWFwX3RyZWUga2V5X29icyBkYXRhX29icykgfmY6TWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuOztcblxubGV0IHNldF90IGVsdF9vYnMgPSB1bm1hcCAoc2V0X3RyZWUgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuIiwibW9kdWxlIEdlbmVyYXRvciA9IEdlbmVyYXRvclxubW9kdWxlIE9ic2VydmVyID0gT2JzZXJ2ZXJcbm1vZHVsZSBTaHJpbmtlciA9IFNocmlua2VyXG5tb2R1bGUgVGVzdCA9IFRlc3Rcbm1vZHVsZSBFeHBvcnQgPSBFeHBvcnRcbmluY2x1ZGUgRXhwb3J0XG5cbigqKi8qKilcblxuKCpfIFRoaXMgbW9kdWxlIGlzIGV4cG9zZWQgb25seSB0byBtYWtlIG9jYW1sZG9jIG91dHB1dCBtb3JlIHJlYWRhYmxlLiAqKVxubW9kdWxlIFdpdGhfYmFzaWNfdHlwZXMgPSBXaXRoX2Jhc2ljX3R5cGVzXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBCaWdhcnJheV9oZWxwZXJzID0gQmlnYXJyYXlfaGVscGVyc1xuZW5kXG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFVpX2VmZmVjdF9pbnRmXG5cbnR5cGUgJ2EgdCA9IC4uXG50eXBlICdhIHQgKz0gSWdub3JlIDogdW5pdCB0IHwgTWFueSA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuXG4oKiBXZSB1c2UgdGhpcyB0YWJsZSBmb3IgZGlzcGF0Y2hpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgaW4gYW4gZWZmaWNpZW50IHdheS4gICopXG50eXBlIGhpZGRlbiA9IFQgOiAoJ2EgdCAqICgnYSAtPiB1bml0KSkgLT4gaGlkZGVuXG5cbmxldCBoYW5kbGVycyA6IChoaWRkZW4gLT4gdW5pdCkgSGFzaHRibC5NKEludCkudCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KSB+c2l6ZTo4XG5cbm1vZHVsZSBEZWZpbmUgKEhhbmRsZXIgOiBIYW5kbGVyKSA6XG4gIFMgd2l0aCB0eXBlIGFjdGlvbiA6PSBIYW5kbGVyLkFjdGlvbi50IGFuZCB0eXBlICdhIHQgOj0gJ2EgdCA9IHN0cnVjdFxuICB0eXBlIF8gdCArPSBDIDogSGFuZGxlci5BY3Rpb24udCAtPiB1bml0IHRcblxuICBsZXQga2V5ID0gU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ11cblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuYWRkX2V4biBoYW5kbGVycyB+a2V5IH5kYXRhOihmdW4gaW5wIC0+XG4gICAgICBtYXRjaCBpbnAgd2l0aFxuICAgICAgfCBUIChDIHZhbHVlLCBjYWxsYmFjaykgLT5cbiAgICAgICAgSGFuZGxlci5oYW5kbGUgdmFsdWU7XG4gICAgICAgIGNhbGxiYWNrICgpXG4gICAgICB8IF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJVbnJlY29nbml6ZWQgdmFyaWFudFwiXSlcbiAgOztcblxuICBsZXQgaW5qZWN0IHYgPSBDIHZcbmVuZFxuXG5tb2R1bGUgRGVmaW5lMSAoSGFuZGxlciA6IEhhbmRsZXIxKSA6XG4gIFMxIHdpdGggdHlwZSAnYSBhY3Rpb24gOj0gJ2EgSGFuZGxlci5BY3Rpb24udCBhbmQgdHlwZSAnYSB0IDo9ICdhIHQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgKz0gQyA6ICdhIEhhbmRsZXIuQWN0aW9uLnQgLT4gJ2EgdFxuXG4gIGxldCBrZXkgPSBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDXVxuXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5hZGRfZXhuIGhhbmRsZXJzIH5rZXkgfmRhdGE6KGZ1biBpbnAgLT5cbiAgICAgIG1hdGNoIGlucCB3aXRoXG4gICAgICB8IFQgKEMgdmFsdWUsIGNhbGxiYWNrKSAtPlxuICAgICAgICBsZXQgY2FsbGVkID0gcmVmIGZhbHNlIGluXG4gICAgICAgIGxldCBjYWxsYmFjayBhID1cbiAgICAgICAgICBpZiAhY2FsbGVkXG4gICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIm9uX3Jlc3BvbnNlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyFcIlxuICAgICAgICAgIGVsc2UgY2FsbGVkIDo9IHRydWU7XG4gICAgICAgICAgY2FsbGJhY2sgYVxuICAgICAgICBpblxuICAgICAgICBIYW5kbGVyLmhhbmRsZSB2YWx1ZSB+b25fcmVzcG9uc2U6Y2FsbGJhY2tcbiAgICAgIHwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlVucmVjb2duaXplZCB2YXJpYW50XCJdKVxuICA7O1xuXG4gIGxldCBpbmplY3QgdiA9IEMgdlxuZW5kXG5cbmxldCBnZXRfa2V5IHQgPSBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCB0KSlcblxubGV0IGhhbmRsZV9yZWdpc3RlcmVkX2V2ZW50IChUICh0LCBjYikpID1cbiAgSGFzaHRibC5maW5kX2V4biBoYW5kbGVycyAoZ2V0X2tleSB0KSAoVCAodCwgY2IpKVxuOztcblxubW9kdWxlIFByaW50X3MgPSBEZWZpbmUgKHN0cnVjdFxuICAgIG1vZHVsZSBBY3Rpb24gPSBTZXhwXG5cbiAgICBsZXQgaGFuZGxlIHMgPSBTdGRpby5wcmludF9zIHNcbiAgZW5kKVxuXG5sZXQgcHJpbnRfcyA9IFByaW50X3MuaW5qZWN0XG5cbigqIEVmZmVjdGZ1bCB0aGluZ3MgKilcbnR5cGUgJ2EgdCArPVxuICB8IFJldHVybiA6ICdhIC0+ICdhIHRcbiAgfCBMYXp5IDogJ2EgdCBMYXp5LnQgLT4gJ2EgdFxuICB8IEJpbmQgOlxuICAgICAgeyB0IDogJ2EgdFxuICAgICAgOyBmIDogJ2EgLT4gJ2IgdFxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE1hcCA6XG4gICAgICB7IHQgOiAnYSB0XG4gICAgICA7IGYgOiAnYSAtPiAnYlxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE5ldmVyIDogJ2IgdFxuICB8IEZ1biA6IChjYWxsYmFjazooJ2EgLT4gdW5pdCkgLT4gdW5pdCkgLT4gJ2EgdFxuXG5sZXQgcmV0dXJuIGEgPSBSZXR1cm4gYVxubGV0IGJpbmQgKHR5cGUgYSkgKHQgOiBhIHQpIH5mID0gQmluZCB7IHQ7IGYgfVxubGV0IG1hcCAodHlwZSBhIGIpICh0IDogYSB0KSB+ZiA6IGIgdCA9IE1hcCB7IHQ7IGYgfVxubGV0IG5ldmVyID0gTmV2ZXJcbmxldCBvZl9mdW4gfmYgPSBGdW4gZlxubGV0IGxhenlfIGEgPSBMYXp5IGFcblxuaW5jbHVkZSBCYXNlLk1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IHJlYyBldmFsIDogdHlwZSBhLiBhIHQgLT4gY2FsbGJhY2s6KGEgLT4gdW5pdCkgLT4gdW5pdCA9XG4gIGZ1biB0IH5jYWxsYmFjayAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBGdW4gZiAtPiBmIH5jYWxsYmFja1xuICB8IElnbm9yZSAtPiBjYWxsYmFjayAoKVxuICB8IFJldHVybiBhIC0+IGNhbGxiYWNrIGFcbiAgfCBMYXp5IChsYXp5IHQpIC0+IGV2YWwgdCB+Y2FsbGJhY2tcbiAgfCBNYW55IGwgLT5cbiAgICBMaXN0Lml0ZXIgbCB+ZjooZXZhbCB+Y2FsbGJhY2s6aWdub3JlKTtcbiAgICBjYWxsYmFjayAoKVxuICB8IEJpbmQgeyB0OyBmIH0gLT4gZXZhbCB0IH5jYWxsYmFjazooZnVuIGEgLT4gZXZhbCAoZiBhKSB+Y2FsbGJhY2spXG4gIHwgTWFwIHsgdDsgZiB9IC0+IGV2YWwgdCB+Y2FsbGJhY2s6KGZ1biBhIC0+IGNhbGxiYWNrIChmIGEpKVxuICB8IE5ldmVyIC0+ICgpXG4gIHwgdCAtPiBoYW5kbGVfcmVnaXN0ZXJlZF9ldmVudCAoVCAodCwgY2FsbGJhY2spKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlID0gZXZhbCB+Y2FsbGJhY2s6aWdub3JlXG5cbiAgdHlwZSBoaWRlID0gaGlkZGVuID0gVCA6ICgnYSB0ICogKCdhIC0+IHVuaXQpKSAtPiBoaWRlXG5cbiAgbGV0IGhhbmRsZXJzID0gaGFuZGxlcnNcbiAgbGV0IG9mX2Z1biA9IG9mX2Z1blxuZW5kXG5cbm1vZHVsZSBBZHZhbmNlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3luY19mdW5fYXJnID0gc3RydWN0XG4gICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgdHlwZSAnciB0ID0gVCA6ICdhICogKCdhIC0+ICdyKSAtPiAnciB0XG4gICAgZW5kXG5cbiAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IG9uX3Jlc3BvbnNlIChmIGEpXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW5jX2Z1biA9IERlZmluZTEgKFN5bmNfZnVuX2FyZylcblxuICBsZXQgb2Zfc3luY19mdW4gZiBhID0gU3luY19mdW4uaW5qZWN0IChUIChhLCBmKSlcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBDYWxsYmFjayA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9XG4gICAgICAgIHsgcmVxdWVzdCA6ICdhXG4gICAgICAgIDsgb25fcmVzcG9uc2UgOiAnYiAtPiB1bml0IHRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2UgPSB7IHJlcXVlc3Q7IG9uX3Jlc3BvbnNlIH1cbiAgICAgIGxldCByZXF1ZXN0IHsgcmVxdWVzdDsgXyB9ID0gcmVxdWVzdFxuICAgICAgbGV0IHJlc3BvbmRfdG8geyBvbl9yZXNwb25zZTsgXyB9IHJlc3BvbnNlID0gb25fcmVzcG9uc2UgcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIGxldCBtYWtlIDogcmVxdWVzdDonYSAtPiBldmFsdWF0b3I6KCgnYSwgJ2IpIENhbGxiYWNrLnQgLT4gdW5pdCB0KSAtPiAnYiB0ID1cbiAgICAgIGZ1biB+cmVxdWVzdCB+ZXZhbHVhdG9yIC0+XG4gICAgICBFeHBlcnQub2ZfZnVuIH5mOihmdW4gfmNhbGxiYWNrIC0+XG4gICAgICAgIGxldCBjYWxsYmFjayA9XG4gICAgICAgICAgQ2FsbGJhY2subWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2U6KGZ1biByZXNwb25zZSAtPlxuICAgICAgICAgICAgY2FsbGJhY2sgcmVzcG9uc2U7XG4gICAgICAgICAgICBJZ25vcmUpXG4gICAgICAgIGluXG4gICAgICAgIEV4cGVydC5oYW5kbGUgKGV2YWx1YXRvciBjYWxsYmFjaykpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFN2YXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2Egc3RhdGUgPVxuICAgICAgICB8IEVtcHR5IG9mIHsgbXV0YWJsZSBoYW5kbGVycyA6ICgnYSAtPiB1bml0KSBsaXN0IH1cbiAgICAgICAgfCBGdWxsIG9mICdhXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHN0YXRlIHJlZlxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gcmVmIChFbXB0eSB7IGhhbmRsZXJzID0gW10gfSlcblxuICAgICAgbGV0IHVwb24gdCBoYW5kbGVyID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IHQgLT4gdC5oYW5kbGVycyA8LSBoYW5kbGVyIDo6IHQuaGFuZGxlcnNcbiAgICAgICAgfCBGdWxsIHggLT4gaGFuZGxlciB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmlsbF9pZl9lbXB0eSB0IHggPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRnVsbCBfIC0+ICgpXG4gICAgICAgIHwgRW1wdHkgeyBoYW5kbGVycyB9IC0+XG4gICAgICAgICAgTGlzdC5pdGVyIGhhbmRsZXJzIH5mOihmdW4gaGFuZGxlciAtPiBoYW5kbGVyIHgpO1xuICAgICAgICAgIHQgOj0gRnVsbCB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGVlayB0ID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IF8gLT4gTm9uZVxuICAgICAgICB8IEZ1bGwgeCAtPiBTb21lIHhcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3Zhcl9mdW5fYXJnID0gc3RydWN0XG4gICAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICAgIHR5cGUgJ3IgdCA9IFQgOiAnYSAqICgnYSAtPiAnciBTdmFyLnQpIC0+ICdyIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IFN2YXIudXBvbiAoZiBhKSBvbl9yZXNwb25zZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuID0gRGVmaW5lMSAoU3Zhcl9mdW5fYXJnKVxuXG4gICAgbGV0IG9mX3N2YXJfZnVuIGYgYSA9IFN2YXJfZnVuLmluamVjdCAoVCAoYSwgZikpXG5cbiAgICBtb2R1bGUgUXVlcnlfcmVzcG9uc2VfdHJhY2tlciA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ3EsICdyKSBycGMgPVxuICAgICAgICB7IHF1ZXJ5IDogJ3FcbiAgICAgICAgOyByZXNwb25zZSA6ICdyIFN2YXIudFxuICAgICAgICB9XG5cbiAgICAgIHR5cGUgKCdxLCAncikgdCA9ICgncSwgJ3IpIHJwYyBsaXN0IHJlZlxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gcmVmIFtdXG5cbiAgICAgIGxldCBhZGRfcXVlcnkgdCBxdWVyeSA9XG4gICAgICAgIGxldCByZXNwb25zZSA9IFN2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIHQgOj0geyBxdWVyeTsgcmVzcG9uc2UgfSA6OiAhdDtcbiAgICAgICAgcmVzcG9uc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWVyaWVzX3BlbmRpbmdfcmVzcG9uc2UgdCA9XG4gICAgICAgIExpc3QubWFwICF0IH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgPSBfIH0gLT4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICB0eXBlICdyIG1heWJlX3Jlc3BvbmQgPVxuICAgICAgICB8IE5vX3Jlc3BvbnNlX3lldFxuICAgICAgICB8IFJlc3BvbmQgb2YgJ3JcblxuICAgICAgbGV0IG1heWJlX3Jlc3BvbmQgdCB+ZiA9XG4gICAgICAgIHRcbiAgICAgICAgOj0gTGlzdC5maWx0ZXIgIXQgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSB9IC0+XG4gICAgICAgICAgbWF0Y2ggZiBxdWVyeSB3aXRoXG4gICAgICAgICAgfCBOb19yZXNwb25zZV95ZXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgUmVzcG9uZCByZXNwIC0+XG4gICAgICAgICAgICBTdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzcDtcbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIHFydCA9IG9mX3N2YXJfZnVuIChRdWVyeV9yZXNwb25zZV90cmFja2VyLmFkZF9xdWVyeSBxcnQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQWR2YW5jZWRcbiIsIm1vZHVsZSBEb21faHRtbCA9IHN0cnVjdFxuICBvcGVuIEpzX29mX29jYW1sLkRvbV9odG1sXG4gIG9wZW4gSnNfb2Zfb2NhbWwuSnNcblxuICAoKiBObyBqc19vZl9vY2FtbCBQUiB5ZXQuICopXG4gIGNsYXNzIHR5cGUgd2hlZWxFdmVudCA9IG9iamVjdFxuICAgIGluaGVyaXQgbW91c2VFdmVudFxuICAgIG1ldGhvZCBkZWx0YVggOiBmbG9hdCByZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbHRhWSA6IGZsb2F0IHJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVsdGFaIDogZmxvYXQgcmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZWx0YU1vZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHAsIHR5cGVyZXBdXG5cbiAgdmFsIHNpZ25lZCA6IGJvb2xcbiAgdmFsIG51bV9iaXRzIDogaW50XG4gIHZhbCBudW1fYnl0ZXMgOiBpbnRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgTyA6IHNpZ1xuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBtb2R1bGUgV3JhcCA6IHNpZ1xuICAgICAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgICBlbmRcbiAgZW5kXG5cbmVuZFxuXG5sZXQgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIEJhc2UucmFpc2VfcyBbJW1lc3NhZ2UgKG1vZF9uYW1lIF4gXCI6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZFwiKSB+XzoodG9fc3RyaW5nIHgpXVxuW0BAY29sZF1cbjs7XG5cbmxldCB0cnVuY191bnNpZ25lZCA6IHR5cGUgYSBiLiBjb252OihhIC0+IGIpIC0+IGxvZ2FuZDooYSAtPiBhIC0+IGEpIC0+IG1hc2s6YSAtPiBhIC0+IGIgPVxuICBmdW4gfmNvbnYgfmxvZ2FuZCB+bWFzayB4IC0+IGNvbnYgKGxvZ2FuZCB4IG1hc2spXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGV4bl91bnNpZ25lZFxuICA6IHR5cGUgYSBiLlxuICAgIGNvbnY6KGEgLT4gYilcbiAgICAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKVxuICAgIC0+IG1hc2s6YVxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBiXG4gID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIGNvbnYgeSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgdHJ1bmNfc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdDppbnQgLT4gYSAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCAtPiBzaGlmdF9yaWdodCAoc2hpZnRfbGVmdCB4IHNoaWZ0KSBzaGlmdFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnRfcmlnaHQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnQ6aW50XG4gICAgLT4gZXF1YWw6KGEgLT4gYSAtPiBib29sKVxuICAgIC0+IG1vZF9uYW1lOnN0cmluZ1xuICAgIC0+IHRvX3N0cmluZzooYSAtPiBzdHJpbmcpXG4gICAgLT4gYVxuICAgIC0+IGFcbiAgPVxuICBmdW4gfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeCAtPlxuICBsZXQgeSA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggaW5cbiAgaWYgZXF1YWwgeCB5IHRoZW4geSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbjs7XG5cbmxldCBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4ID1cbiAgaWYgZ3JlYXRlcl9lcXVhbCB4IHplcm8gdGhlbiB4IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9XG4gIHJhaXNlIChTZXhwbGliMC5TZXhwX2NvbnYuT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcbjs7XG5cbm1vZHVsZSBSZXByMzIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuU3lzLkltbWVkaWF0ZTY0Lk1ha2UgKEJhc2UuSW50KSAoQmFzZS5JbnQzMilcblxuICBsZXQgdG9faW50MzIgKHggOiB0KSA6IEJhc2UuSW50MzIudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiB4XG4gIDs7XG5cbiAgKCogc2lnbi1leHRlbmRpbmcgY29udmVyc2lvbiB0byBpbnQ2NCAqKVxuICBsZXQgdG9faW50NjQgKHggOiB0KSA6IEJhc2UuSW50NjQudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiBCYXNlLkludDY0Lm9mX2ludDMyIHhcbiAgOztcbmVuZFxuXG4oKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0eXBlcyAqKVxudHlwZSBpbnQ4ID0gaW50XG50eXBlIHVpbnQ4ID0gaW50XG50eXBlIGludDE2ID0gaW50XG50eXBlIHVpbnQxNiA9IGludFxudHlwZSBpbnQzMiA9IFJlcHIzMi50XG50eXBlIHVpbnQzMiA9IFJlcHIzMi50XG50eXBlIGludDYzID0gQmFzZS5JbnQ2My50XG50eXBlIHVpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSBpbnQ2NCA9IEJhc2UuSW50NjQudFxudHlwZSB1aW50NjQgPSBCYXNlLkludDY0LnRcblxubW9kdWxlIEludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMTI4XG4gIGxldCBtYXhfdmFsdWUgPSAxMjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICBsZXQgbW9kX25hbWUgPSBcIkludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfaW50MzJfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDMyLnRvX2ludF90cnVuYyAoUmVwcjMyLnRvX2ludDMyIHgpKVxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfZXhuIChSZXByMzIudG9faW50MzIgeCkpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50OCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IDI1NVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gIGxldCBtYXNrID0gMHhGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50OFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuNjQgeCA9XG4gICAgZXhuX3Vuc2lnbmVkXG4gICAgICB+Y29udlxuICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgfm1hc2s6bWFzazY0XG4gICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgfm1vZF9uYW1lXG4gICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJbnQxNiA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IC0zMjc2OFxuICBsZXQgbWF4X3ZhbHVlID0gMzI3NjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQxNlwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSA2NTUzNVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl90cnVuYyB4ID0gdHJ1bmM2NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfZXhuIHggPSBleG42NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQxNl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYWNrZW5kMzJfUyA9IHNpZ1xuICBtb2R1bGUgU2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMiA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzIgOiB0IC0+IEJhc2UuSW50MzIudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQ4IDogaW50OCAtPiB0XG4gICAgdmFsIG9mX2ludDE2IDogaW50MTYgLT4gdFxuICAgIHZhbCBvZl9pbnQ2M190cnVuYyA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogaW50NjMgLT4gdFxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IGludDY0IC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfZXhuIDogaW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDMyX3dyYXAgOiB1aW50MzIgLT4gdFxuICAgIHZhbCBvZl91aW50MzJfZXhuIDogdWludDMyIC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFVuc2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMl90cnVuYyA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfZXhuIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMl90cnVuYyA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfZXhuIDogdCAtPiBCYXNlLkludDMyLnRcbiAgICB2YWwgb2ZfYmFzZV9pbnQ2NF90cnVuYyA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfZXhuIDogQmFzZS5JbnQ2NC50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQ2NCA6IHQgLT4gQmFzZS5JbnQ2NC50XG4gICAgdmFsIG9mX2Jhc2VfaW50X2V4biA6IEJhc2UuSW50LnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludF9leG4gOiB0IC0+IEJhc2UuSW50LnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDggOiB1aW50OCAtPiB0XG4gICAgdmFsIG9mX3VpbnQxNiA6IHVpbnQxNiAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M190cnVuYyA6IHVpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M19leG4gOiB1aW50NjMgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfdHJ1bmMgOiB1aW50NjQgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfZXhuIDogdWludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2ludDMyX3dyYXAgOiBpbnQzMiAtPiB0XG4gICAgdmFsIG9mX2ludDMyX2V4biA6IGludDMyIC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJhY2tlbmQzMiA6IHNpZ1xuICB2YWwgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICAgICAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgICAgIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyIHggPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50OCB4ID0gKHggOiBJbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDE2IHggPSAoeCA6IEludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0gdHJ1bmMgeFxuICAgICAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4biB4XG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBVbnNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQub2ZfaW50NjRfdHJ1bmMgNDI5NDk2NzI5NUxcbiAgICAgIGxldCBzaWduZWQgPSBmYWxzZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gICAgICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgICAgIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgICAgIGxldCBtYXNrID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgMHhGRkZGRkZGRkxcbiAgICAgIGxldCBtYXNrNjQgPSBCYXNlLkludDY0Lm9mX2ludCBtYXNrXG4gICAgICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICAgICAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gICAgICBsZXQgbW9kX25hbWUgPSBcIlVpbnQzMlwiXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBleG42NCB4ID1cbiAgICAgICAgZXhuX3Vuc2lnbmVkXG4gICAgICAgICAgfmNvbnZcbiAgICAgICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICAgICAgfm1hc2s6bWFzazY0XG4gICAgICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgICAgICB+bW9kX25hbWVcbiAgICAgICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICAgICAgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9XG4gICAgICAgIEJhc2UuSW50NjQudG9faW50X3RydW5jIChsb2dhbmQ2NCAoQmFzZS5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrNjQpXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl90cnVuYyB4ID0gQmFzZS5JbnQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50LiggPD0gKSB4IChCYXNlLkludC5vZl9pbnQ2NF90cnVuYyAyMTQ3NDgzNjQ3TClcbiAgICAgICAgdGhlbiBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4XG4gICAgICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludC50b19pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9ICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50MzJcbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQzMlxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50MzJcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi5taW5fdmFsdWVcbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDMyLm1heF92YWx1ZVxuICAgICAgbGV0IHNpZ25lZCA9IHRydWVcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJJbnQzMlwiXG4gICAgICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQzMi50b19zdHJpbmdcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMiB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBJbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfZXhuIHggPSBCYXNlLkludDYzLnRvX2ludDMyX2V4biB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gQmFzZS5JbnQ2NC50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQzMl93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl91aW50MzJfZXhuIHggOiB0ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQzMi4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQzMi4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludDMyLiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50MzIuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50MzIuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBCYXNlLkludDMyLiggLyApXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVW5zaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50MzIudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgY29tcGFyZSB4IHkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfY29tcGFyZSB4IHkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQzMlxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50MzJcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gLTFsXG4gICAgICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJVaW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50MzIub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMEwgJiYgQmFzZS5JbnQ2NC4oIDw9ICkgeCA0Mjk0OTY3Mjk1TFxuICAgICAgICB0aGVuIEJhc2UuSW50NjQudG9faW50MzJfdHJ1bmMgeFxuICAgICAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50NjQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQzMi50b19pbnQ2NCB4KSAweEZGRkZGRkZGTFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludF9leG4geCA9XG4gICAgICAgIEJhc2UuSW50MzIub2ZfaW50X2V4biB4XG4gICAgICAgIHw+IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgICB8PiBCYXNlLkludDMyLnRvX2ludF9leG5cbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KVxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBvZl9iYXNlX2ludDY0X2V4biAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gb2ZfYmFzZV9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJWx1XCIgeClcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJWx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgICAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICAgICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgICAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICAgICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfZGl2XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpID1cbiAgICBtYXRjaCBSZXByMzIucmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBJIDogQmFja2VuZDMyX1MpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgTiA6IEJhY2tlbmQzMl9TKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnQzMiA9IHN0cnVjdFxuICBtb2R1bGUgTSA9ICh2YWwgQmFja2VuZDMyLmltcGwgOiBCYWNrZW5kMzJfUylcbiAgaW5jbHVkZSBNLlNpZ25lZFxuZW5kXG5cbm1vZHVsZSBVaW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5VbnNpZ25lZFxuZW5kXG5cbm1vZHVsZSBJbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAaW1tZWRpYXRlNjRdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2M1xuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2M1xuICBsZXQgemVybyA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2My5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjNcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjMuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBCYXNlLkludDYzLm9mX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludDYzLiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDYzLiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50NjMuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludDYzLiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQ2My4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDYzLiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50NjMuKCAvIClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICAoKiB4IGFuZCB5IGFyZSBzaWduLWV4dGVuZGVkLCB3aGljaCBwcmVzZXJ2ZXMgdGhlIGhpZ2ggYml0ICopXG4gICAgU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmUgKEJhc2UuSW50NjMudG9faW50NjQgeCkgKEJhc2UuSW50NjMudG9faW50NjQgeSlcbiAgOztcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjNcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2M1wiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyAoVWludDMyLnRvX2Jhc2VfaW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2NF9leG4gKHggOiB1aW50NjQpIDogdCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDYzX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgKHRvX2Jhc2VfaW50NjQgeCkpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2My50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHVcIiBvZl9iYXNlX2ludDY0X2V4biB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjMudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcblxuICAgICAgbGV0ICggLyApIHggeSA9XG4gICAgICAgIG9mX2Jhc2VfaW50NjRfdHJ1bmMgKEJhc2UuSW50NjQuKCAvICkgKHRvX2Jhc2VfaW50NjQgeCkgKHRvX2Jhc2VfaW50NjQgeSkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDY0LnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2NFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2NFxuICBsZXQgemVybyA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2NC5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjQubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDY0XG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjRcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjQuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjMgeCA9IEJhc2UuSW50NjMudG9faW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50NjRfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQ2NC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQ2NC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludDY0LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQ2NC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50NjQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQ2NC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDY0LiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDY0LiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDY0LiggKiApXG4gICAgICBsZXQgKCAvICkgPSBCYXNlLkludDY0LiggLyApXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50NjRcbiAgbGV0IGNvbXBhcmUgPSBTdGRsaWIuSW50NjQudW5zaWduZWRfY29tcGFyZVxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gLTFMXG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjQuKCA+PSApXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDY0XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCBleG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQ2NF90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyIHggPSBVaW50MzIudG9fYmFzZV9pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2MyAoeCA6IHVpbnQ2MykgOiBpbnQ2NCA9XG4gICAgQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSAweDdGRkZGRkZGRkZGRkZGRkZMXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgeClcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDY0LnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVMdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjQudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjQuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjQuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjQuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9kaXZcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZXQgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50OCA6IHQgLT4gcG9zOmludCAtPiBpbnQ4XG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50OCA6IHQgLT4gcG9zOmludCAtPiB1aW50OFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNlxuICB2YWwgZ2V0X2ludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDE2XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNlxuICB2YWwgZ2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTZcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MzJcbiAgdmFsIGdldF9pbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMlxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzJcbiAgdmFsIGdldF91aW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyXG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDY0XG4gIHZhbCBnZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjRcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0XG4gIHZhbCBnZXRfdWludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ4IDogdCAtPiBwb3M6aW50IC0+IGludDggLT4gdW5pdFxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IHBvczppbnQgLT4gdWludDggLT4gdW5pdFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MTYgLT4gdW5pdFxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MzIgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjQgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdldF9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB1c2UgbmF0aXZlIGVuZGlhbm5lc3MgKGhlbmNlIHRoZSBgX25lYCBzdWZmaXgpLiAqKVxuICB2YWwgZ2V0X3VpbnQ4IDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudFxuICB2YWwgZ2V0X3VpbnQxNl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnRcbiAgdmFsIGdldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudFxuICB2YWwgZ2V0X2ludDY0X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQ2NC50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHVzZSBuYXRpdmUgZW5kaWFubmVzcyAoaGVuY2UgdGhlIGBfbmVgIHN1ZmZpeCkuICopXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF91aW50MTZfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDY0LnQgLT4gdW5pdFxuZW5kXG5cbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IFN0ZGxpYi5JbnQzMi50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogU3RkbGliLkludDY0LnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbm1vZHVsZSBNYWtlX2dldCAoRiA6IEdldF9mdW5jdGlvbnMpIDogR2V0IHdpdGggdHlwZSB0IDo9IEYudCA9IHN0cnVjdFxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ4IHQgfnBvcyA9IEludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDggdCB+cG9zID0gVWludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQxNl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgSW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcbiAgOztcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgSW50MzIub2ZfYmFzZV9pbnQzMiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIFVpbnQzMi5vZl9iYXNlX2ludDMyX3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDY0X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4XG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBVaW50NjQub2ZfYmFzZV9pbnQ2NF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgTWFrZV9zZXQgKEYgOiBTZXRfZnVuY3Rpb25zKSA6IFNldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50OCB0IH5wb3MgeCA9IEYuc2V0X3VpbnQ4IHQgcG9zIHhcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ4IHQgfnBvcyB4ID0gc2V0X3VpbnQ4IHQgfnBvcyAoVWludDgub2ZfaW50OF93cmFwIHgpXG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDE2X2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4IGluXG4gICAgRi5zZXRfdWludDE2X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X3VpbnQxNl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDE2X2xlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9sZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG4gIGxldCBzZXRfaW50MTZfYmUgdCB+cG9zIHggPSBzZXRfdWludDE2X2JlIHQgfnBvcyAoVWludDE2Lm9mX2ludDE2X3dyYXAgeClcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50MzJfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gSW50MzIudG9fYmFzZV9pbnQzMiB4IGluXG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDMyX25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDMyX2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDMyX2xlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2xlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcbiAgbGV0IHNldF91aW50MzJfYmUgdCB+cG9zIHggPSBzZXRfaW50MzJfYmUgdCB+cG9zIChJbnQzMi5vZl91aW50MzJfd3JhcCB4KVxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ2NF9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDY0X2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4IGluXG4gICAgRi5zZXRfaW50NjRfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQ2NF9sZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9sZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG4gIGxldCBzZXRfdWludDY0X2JlIHQgfnBvcyB4ID0gc2V0X2ludDY0X2JlIHQgfnBvcyAoSW50NjQub2ZfdWludDY0X3dyYXAgeClcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIEJ5dGVzMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCeXRlcy50XG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9ieXRlc19nZXQzMnVcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjR1XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQxNl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuICBleHRlcm5hbCBzZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuICBleHRlcm5hbCBzZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlcylcbiAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKEJ5dGVzMFVuc2FmZSlcbiAgICBpbmNsdWRlIE1ha2Vfc2V0IChCeXRlczBVbnNhZmUpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdHJpbmcwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gU3RkbGliLkludDMyLnQgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQ2NC50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzApXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzBVbnNhZmUpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBCaWdzdHJpbmcwID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgKCBjaGFyXG4gICAgLCBTdGRsaWIuQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHRcbiAgICAsIFN0ZGxpYi5CaWdhcnJheS5jX2xheW91dCApXG4gICAgICBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLnRcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgU3RkbGliLkJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgoJ2EsICdiLCAnYykgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcblxuICBleHRlcm5hbCBkaW0gOiAoKCdhLCAnYiwgJ2MpIHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuZW5kXG5cbmluY2x1ZGUgQmlnc3RyaW5nMFxuXG5leHRlcm5hbCBhdXhfY3JlYXRlIDogbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzOmludCAtPiBzaXplOmludCAtPiB0ID0gXCJiaWdzdHJpbmdfYWxsb2NcIlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIE9uZSBuZWVkcyB0byB1c2UgW0NhbWwuU3lzLndvcmRfc2l6ZV0gc28gdGhhdCBpdHMgdmFsdWUgaXMga25vd24gYXQgY29tcGlsZS10aW1lLiAqKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3RkbGliLlN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IFN0ZGxpYi5TeXMuYmlnX2VuZGlhblxubGV0IG5vdF9vbl8zMmJpdCA9IFN0ZGxpYi5TeXMud29yZF9zaXplID4gMzJcblxubGV0IGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIHNpemUgPVxuICBsZXQgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzID1cbiAgICBPcHRpb24udmFsdWUgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5kZWZhdWx0OigtMSlcbiAgaW5cbiAgKCogVGhpcyBjaGVjayBpcyBpbXBvcnRhbnQgYmVjYXVzZSBbYXV4X2NyZWF0ZSB+c2l6ZTooLTEpXSByYWlzZXMgW091dF9vZl9tZW1vcnldLCB3aGljaFxuICAgICBjb3VsZCBiZSBjb25mdXNpbmcgZHVyaW5nIGRlYnVnZ2luZy4gKilcbiAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcImNyZWF0ZTogc2l6ZSA9ICVkIDwgMFwiIHNpemUpO1xuICBhdXhfY3JlYXRlIH5tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgfnNpemVcbjs7XG5cbmxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbmV4dGVybmFsIGlzX21tYXBwZWQgOiB0IC0+IGJvb2wgPSBcImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWJcIiBbQEBub2FsbG9jXVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB0LntpfSA8LSBmIGlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGNoZWNrX2FyZ3Nfc2xvdyB+bG9jIH5wb3MgfmxlbiAoYnN0ciA6IHQpID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogcG9zIDwgMFwiKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogbGVuIDwgMFwiKTtcbiAgbGV0IGJzdHJfbGVuID0gbGVuZ3RoIGJzdHIgaW5cbiAgKCogQmUgY2FyZWZ1bCB3aXRoIG92ZXJmbG93ISAgV2UgY291bGQgaGF2ZSBib2dvbnMgbGlrZSBbcG9zID0gSW50Lm1heF92YWx1ZV0gb3IgW2xlbiA9XG4gICAgIEludC5tYXhfdmFsdWVdIHBhc3NlZCBieSB0aGUgdXNlci4gKilcbiAgaWYgYnN0cl9sZW4gLSBwb3MgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpZ3N0cmluZy4lczogbGVuZ3RoKGJzdHIpIDwgcG9zICsgbGVuXCIgbG9jKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBjaGVja19hcmdzIH5sb2MgfnBvcyB+bGVuIChic3RyIDogdCkgPVxuICBsZXQgb3BlbiBCb29sLk5vbl9zaG9ydF9jaXJjdWl0aW5nIGluXG4gIGxldCBic3RyX2xlbiA9IGxlbmd0aCBic3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBic3RyX2xlbiAtIHBvcyA8IGxlbiB0aGVuIGNoZWNrX2FyZ3Nfc2xvdyB+bG9jIH5wb3MgfmxlbiBic3RyXG47O1xuXG5sZXQgZ2V0X29wdF9sZW4gYnN0ciB+cG9zID0gZnVuY3Rpb25cbiAgfCBTb21lIGxlbiAtPiBsZW5cbiAgfCBOb25lIC0+IGxlbmd0aCBic3RyIC0gcG9zXG47O1xuXG4oKiBCbGl0dGluZyAqKVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6KHRbQGxvY2FsX29wdF0pXG4gIC0+IHNyY19wb3M6aW50XG4gIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaWdzdHJpbmdfYmxpdF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbigqIEV4cG9zaW5nIHRoZSBleHRlcm5hbCB2ZXJzaW9uIG9mIGdldC9zZXQgc3VwcG9ydHMgYmV0dGVyIGlubGluaW5nLiAqKVxuZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXNcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbmVuZFxuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubW9kdWxlIEZyb21fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQnl0ZXNfc2VxdWVuY2UpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0W0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQmlnc3RyaW5nX3NlcXVlbmNlKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJ5dGVzX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOihzdHJpbmdbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUb19ieXRlc1xuICBpbmNsdWRlIEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ3N0cmluZzApIChUb19ieXRlcylcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRnJvbV9zdHJpbmcuc3Vib1xubGV0IG9mX2J5dGVzID0gRnJvbV9ieXRlcy5zdWJvXG5sZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnN1Ym9cbmxldCB0b19ieXRlcyA9IFRvX2J5dGVzLnN1Ym9cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbmxldCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdCA9IGZ1bmN0aW9uXG4gIHwgQXRvbSBzdHIgLT4gb2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyBhcyBzZXhwIC0+XG4gICAgU2V4cGxpYjAuU2V4cF9jb252Lm9mX3NleHBfZXJyb3IgXCJiaWdzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY29weSB0IDogdCA9IHN1YiB0IH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxubGV0IGNvbmNhdCA9XG4gIGxldCBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzcmMgaW5cbiAgICBsZXQgc3JjX3BvcyA9IDAgaW5cbiAgICBsZXQgZHN0X3BvcyA9ICFkc3RfcG9zX3JlZiBpblxuICAgIGJsaXQgfmRzdCB+ZHN0X3BvcyB+c3JjIH5zcmNfcG9zIH5sZW47XG4gICAgZHN0X3Bvc19yZWYgOj0gZHN0X3BvcyArIGxlblxuICBpblxuICBmdW4gP3NlcCBsaXN0IC0+XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBjcmVhdGUgMFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBsZXQgaGVhZF9sZW4gPSBsZW5ndGggaGVhZCBpblxuICAgICAgbGV0IHNlcF9sZW4gPSBPcHRpb24udmFsdWVfbWFwIHNlcCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQpIH5kZWZhdWx0OjAgaW5cbiAgICAgIGxldCB0YWlsX2NvdW50ID0gTGlzdC5sZW5ndGggdGFpbCBpblxuICAgICAgbGV0IGxlbiA9XG4gICAgICAgIGhlYWRfbGVuXG4gICAgICAgICsgKHNlcF9sZW4gKiB0YWlsX2NvdW50KVxuICAgICAgICArIExpc3Quc3VtIChtb2R1bGUgSW50KSB0YWlsIH5mOihmdW4gdCAtPiBsZW5ndGggdClcbiAgICAgIGluXG4gICAgICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgbGV0IGRzdF9wb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGFwcGVuZCB+c3JjOmhlYWQgfmRzdCB+ZHN0X3Bvc19yZWY7XG4gICAgICBMaXN0Lml0ZXIgdGFpbCB+ZjooZnVuIHNyYyAtPlxuICAgICAgICAobWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHNlcCAtPiBhcHBlbmQgfnNyYzpzZXAgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgICBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZik7XG4gICAgICBhc3NlcnQgKCFkc3RfcG9zX3JlZiA9IGxlbik7XG4gICAgICBkc3Rcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1zZXQgOiB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBjaGFyIC0+IHVuaXQgPSBcImJpZ3N0cmluZ19tZW1zZXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtc2V0IHQgfnBvcyB+bGVuIGMgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdCk7XG4gIHVuc2FmZV9tZW1zZXQgdCB+cG9zIH5sZW4gY1xuOztcblxuKCogQ29tcGFyaXNvbiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gdFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXAgdDEgfnBvczEgdDIgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczIgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDIpO1xuICB1bnNhZmVfbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBfYnl0ZXNcbiAgOiAgdFxuICAtPiBwb3MxOmludFxuICAtPiBCeXRlcy50XG4gIC0+IHBvczI6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbWNtcF9ieXRlcyB0MSB+cG9zMSBieXRlcyB+cG9zMiB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczEgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDEpO1xuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvczpwb3MyXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJ5dGVzLmxlbmd0aCBieXRlcyk7XG4gIHVuc2FmZV9tZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlblxuOztcblxubGV0IGNvbXBhcmUgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBsZXQgbGVuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBsZW4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IGxlbiA9IEludC5taW4gbGVuMSBsZW4yIGluXG4gICAgbWF0Y2ggdW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbiB3aXRoXG4gICAgfCAwIC0+IGlmIGxlbjEgPCBsZW4yIHRoZW4gLTEgZWxzZSBpZiBsZW4xID4gbGVuMiB0aGVuIDEgZWxzZSAwXG4gICAgfCBuIC0+IG4pXG47O1xuXG5leHRlcm5hbCBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbiAgOiAgSGFzaC5zdGF0ZVxuICAtPiB0XG4gIC0+IEhhc2guc3RhdGVcbiAgPSBcImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgX21ha2luZ19zdXJlX3RoZV9DX2JpbmRpbmdfdGFrZXNfYW5faW50ICh4IDogSGFzaC5zdGF0ZSkgPSAoeCA6PiBpbnQpXG5sZXQgaGFzaF9mb2xkX3QgPSBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbmxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcblxudHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubGV0IGVxdWFsIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIEludC5lcXVhbCBsZW4xIGxlbjIgJiYgSW50LmVxdWFsICh1bnNhZmVfbWVtY21wIHQxIH5wb3MxOjAgdDIgfnBvczI6MCB+bGVuOmxlbjEpIDApXG47O1xuXG4oKiBTZWFyY2ggKilcblxuZXh0ZXJuYWwgdW5zYWZlX2ZpbmQgOiB0IC0+IGNoYXIgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludCA9IFwiYmlnc3RyaW5nX2ZpbmRcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbW1lbVxuICA6ICBoYXlzdGFjazp0XG4gIC0+IG5lZWRsZTp0XG4gIC0+IGhheXN0YWNrX3BvczppbnRcbiAgLT4gaGF5c3RhY2tfbGVuOmludFxuICAtPiBuZWVkbGVfcG9zOmludFxuICAtPiBuZWVkbGVfbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGVcIiBcImJpZ3N0cmluZ19tZW1tZW1cIlxuW0BAbm9hbGxvY11cblxubGV0IGZpbmQgPyhwb3MgPSAwKSA/bGVuIGNociBic3RyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgY2hlY2tfYXJncyB+bG9jOlwiZmluZFwiIH5wb3MgfmxlbiBic3RyO1xuICBsZXQgcmVzID0gdW5zYWZlX2ZpbmQgYnN0ciBjaHIgfnBvcyB+bGVuIGluXG4gIGlmIHJlcyA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSByZXNcbjs7XG5cbmxldCBtZW1tZW1cbiAgICAgIH5oYXlzdGFja1xuICAgICAgfm5lZWRsZVxuICAgICAgPyhoYXlzdGFja19wb3MgPSAwKVxuICAgICAgP2hheXN0YWNrX2xlblxuICAgICAgPyhuZWVkbGVfcG9zID0gMClcbiAgICAgID9uZWVkbGVfbGVuXG4gICAgICAoKVxuICA9XG4gIGxldCBoYXlzdGFja19sZW4gPSBnZXRfb3B0X2xlbiBoYXlzdGFjayB+cG9zOmhheXN0YWNrX3BvcyBoYXlzdGFja19sZW4gaW5cbiAgbGV0IG5lZWRsZV9sZW4gPSBnZXRfb3B0X2xlbiBuZWVkbGUgfnBvczpuZWVkbGVfcG9zIG5lZWRsZV9sZW4gaW5cbiAgbGV0IHJlcyA9XG4gICAgdW5zYWZlX21lbW1lbSB+aGF5c3RhY2sgfm5lZWRsZSB+aGF5c3RhY2tfcG9zIH5oYXlzdGFja19sZW4gfm5lZWRsZV9wb3Mgfm5lZWRsZV9sZW5cbiAgaW5cbiAgaWYgcmVzIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHJlc1xuOztcblxuKCogdmltOiBzZXQgZmlsZXR5cGU9b2NhbWwgOiAqKVxuXG4oKiBCaW5hcnktcGFja2luZyBsaWtlIGFjY2Vzc29ycyAqKVxuXG5leHRlcm5hbCBpbnQzMl9vZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50MzJfdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIGludDY0X29mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBpbnQ2NF90b19pbnQgOiAoaW50NjRbQGxvY2FsXSkgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogKGludDY0W0Bsb2NhbF0pIC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF8xNiA6IHQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzMyIDogdCAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF82NCA6IHQgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfMTYgOiAodFtAbG9jYWxfb3B0XSkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF8zMlxuICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgLT4gaW50XG4gIC0+IGludDMyXG4gIC0+IHVuaXRcbiAgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0XzY0IDogdCAtPiBpbnQgLT4gKGludDY0W0Bsb2NhbF0pIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGdldF8xNiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX2dldF8xNiB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfMzIgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDMyID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzMyXCIgfnBvcyB+bGVuOjQgdDtcbiAgdW5zYWZlX2dldF8zMiB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfNjQgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDY0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzY0XCIgfnBvcyB+bGVuOjggdDtcbiAgdW5zYWZlX2dldF82NCB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfMTZfdHJ1bmMgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludCkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX3NldF8xNiB0IHBvcyB2XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF8zMiAodCA6IHQpIChwb3MgOiBpbnQpICh2IDogaW50MzIpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8zMlwiIH5wb3Mgfmxlbjo0IHQ7XG4gIHVuc2FmZV9zZXRfMzIgdCBwb3MgdlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfNjQgKHQgOiB0KSAocG9zIDogaW50KSAoKHYgOiBpbnQ2NCkgW0Bsb2NhbF0pIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9zZXRfNjQgdCBwb3MgdlxuOztcblxubGV0IHNpZ25fZXh0ZW5kXzE2IHUgPSAodSBsc2wgKEludC5udW1fYml0cyAtIDE2KSkgYXNyIChJbnQubnVtX2JpdHMgLSAxNilcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgLTB4ODAwMCB8fCB4ID4gMHg3RkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50OCB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQ4IHggfmxvYyA9XG4gIGlmIHggPCAtMHg4MCB8fCB4ID4gMHg3RlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQzMiA9XG4gIGlmIG5vdCBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfIH5sb2M6XyAtPiAoKVxuICBlbHNlXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAtMSBsc2wgMzEgJiYgeCA8IDEgbHNsIDMxXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDMyID1cbiAgaWYgbm90IGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IDBcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbiAgZWxzZVxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gMCAmJiB4IDwgMSBsc2wgMzJcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50NjQgeCB+bG9jID1cbiAgaWYgeCA+PSAwXG4gIHRoZW4gKClcbiAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHN3YXAxNiAodW5zYWZlX2dldF8xNiB0IHBvcykpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChnZXRfMTYgdCBwb3MpXG5sZXQgcmVhZF9pbnQxNl9zd2FwIHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChzd2FwMTYgKGdldF8xNiB0IHBvcykpXG5cbmxldCB3cml0ZV9pbnQxNl9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF9pbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIHhcbjs7XG5cbmxldCB3cml0ZV9pbnQxNl9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgKHN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX3VpbnQxNiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzE2IHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgdCB+cG9zID0gc3dhcDE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV93cml0ZV91aW50MTYgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX3VpbnQxNiB0IH5wb3MgPSBnZXRfMTYgdCBwb3NcbmxldCByZWFkX3VpbnQxNl9zd2FwIHQgfnBvcyA9IHN3YXAxNiAoZ2V0XzE2IHQgcG9zKVxuXG5sZXQgd3JpdGVfdWludDE2X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfdWludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyB4XG47O1xuXG5sZXQgd3JpdGVfdWludDE2X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV91aW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIChzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50ICh1bnNhZmVfZ2V0XzMyIHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIHQgfnBvcyA9IGludDMyX3RvX2ludCAoc3dhcDMyICh1bnNhZmVfZ2V0XzMyIHQgcG9zKSlcbmxldCB1bnNhZmVfcmVhZF9pbnQzMiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzMyIHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKHVuc2FmZV9nZXRfMzIgdCBwb3MpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChzd2FwMzIgeClcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoaW50MzJfb2ZfaW50IHgpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoc3dhcDMyIChpbnQzMl9vZl9pbnQgeCkpXG5sZXQgcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50IChnZXRfMzIgdCBwb3MpXG5sZXQgcmVhZF9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHN3YXAzMiAoZ2V0XzMyIHQgcG9zKSlcbmxldCByZWFkX2ludDMyIHQgfnBvcyA9IGdldF8zMiB0IHBvc1xubGV0IHJlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKGdldF8zMiB0IHBvcylcbmxldCB3cml0ZV9pbnQzMiB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyB4XG5sZXQgd3JpdGVfaW50MzJfc3dhcCB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyAoc3dhcDMyIHgpXG5cbmxldCB3cml0ZV9pbnQzMl9pbnRfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfaW50MzIgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDMyX2ludFwiO1xuICBzZXRfMzIgdCBwb3MgKGludDMyX29mX2ludCB4KVxuOztcblxubGV0IHdyaXRlX2ludDMyX2ludF9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDMyIHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQzMl9pbnRcIjtcbiAgc2V0XzMyIHQgcG9zIChzd2FwMzIgKGludDMyX29mX2ludCB4KSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAodW5zYWZlX2dldF82NCB0IHBvcylcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnQgKHN3YXA2NCAodW5zYWZlX2dldF82NCB0IHBvcykpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0IHQgfnBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfc3dhcCB0IH5wb3MgPSBzd2FwNjQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgKHN3YXA2NCB4KVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyAoaW50NjRfb2ZfaW50IHgpXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID1cbiAgdW5zYWZlX3NldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAoZ2V0XzY0IHQgcG9zKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2ludF9zd2FwIHQgfnBvcyA9IGludDY0X3RvX2ludCAoc3dhcDY0IChnZXRfNjQgdCBwb3MpKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0IHQgfnBvcyA9IGdldF82NCB0IHBvc1xubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X3N3YXAgdCB+cG9zID0gc3dhcDY0IChnZXRfNjQgdCBwb3MpXG5sZXQgd3JpdGVfaW50NjQgdCB+cG9zICh4IFtAbG9jYWxdKSA9IHNldF82NCB0IHBvcyB4XG5sZXQgd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgKHggW0Bsb2NhbF0pID0gc2V0XzY0IHQgcG9zIChzd2FwNjQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnQgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgKGludDY0X29mX2ludCB4KVxubGV0IHdyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChzd2FwNjQgKGludDY0X29mX2ludCB4KSlcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQxNiBlbHNlIHVuc2FmZV9yZWFkX2ludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTZfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF91aW50MTYgZWxzZSB1bnNhZmVfcmVhZF91aW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF91aW50MTZcbjs7XG5cbmxldCBnZXRfaW50MTZfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDE2IGVsc2UgcmVhZF9pbnQxNl9zd2FwXG5sZXQgZ2V0X2ludDE2X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNl9zd2FwIGVsc2UgcmVhZF9pbnQxNlxubGV0IGdldF91aW50MTZfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX3VpbnQxNiBlbHNlIHJlYWRfdWludDE2X3N3YXBcbmxldCBnZXRfdWludDE2X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTZfc3dhcCBlbHNlIHJlYWRfdWludDE2XG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDE2IGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MTZcbjs7XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV91aW50MTYgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV91aW50MTZfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV91aW50MTZcbjs7XG5cbmxldCBzZXRfaW50MTZfYmVfZXhuID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MTZfZXhuIGVsc2Ugd3JpdGVfaW50MTZfc3dhcF9leG5cbmxldCBzZXRfaW50MTZfbGVfZXhuID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MTZfc3dhcF9leG4gZWxzZSB3cml0ZV9pbnQxNl9leG5cblxubGV0IHNldF91aW50MTZfYmVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfdWludDE2X2V4biBlbHNlIHdyaXRlX3VpbnQxNl9zd2FwX2V4blxuOztcblxubGV0IHNldF91aW50MTZfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfdWludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfdWludDE2X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMlxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMiBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJcbjs7XG5cbmxldCBnZXRfaW50MzJfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzIgZWxzZSByZWFkX2ludDMyX3N3YXBcbmxldCBnZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfc3dhcCBlbHNlIHJlYWRfaW50MzJcbmxldCBzZXRfaW50MzJfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyIGVsc2Ugd3JpdGVfaW50MzJfc3dhcFxubGV0IHNldF9pbnQzMl90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfc3dhcCBlbHNlIHdyaXRlX2ludDMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfaW50IGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9pbnRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50XG47O1xuXG5sZXQgZ2V0X2ludDMyX2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9pbnQgZWxzZSByZWFkX2ludDMyX2ludF9zd2FwXG5sZXQgZ2V0X2ludDMyX2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9pbnRfc3dhcCBlbHNlIHJlYWRfaW50MzJfaW50XG5cbmxldCBzZXRfaW50MzJfYmVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X2V4biBlbHNlIHdyaXRlX2ludDMyX2ludF9zd2FwX2V4blxuOztcblxubGV0IHNldF9pbnQzMl9sZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfZXhuXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZV90cnVuYyA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZV90cnVuYyA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludFxuOztcblxubGV0IGdldF9pbnQ2NF9iZV90cnVuYyA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfaW50IGVsc2UgcmVhZF9pbnQ2NF9pbnRfc3dhcFxubGV0IGdldF9pbnQ2NF9sZV90cnVuYyA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfaW50X3N3YXAgZWxzZSByZWFkX2ludDY0X2ludFxubGV0IHNldF9pbnQ2NF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludCBlbHNlIHdyaXRlX2ludDY0X2ludF9zd2FwXG5sZXQgc2V0X2ludDY0X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfaW50X3N3YXAgZWxzZSB3cml0ZV9pbnQ2NF9pbnRcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0IGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRcbjs7XG5cbm1vZHVsZSBMb2NhbCA9IHN0cnVjdFxuICBsZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAodW5zYWZlX3JlYWRfaW50NjQgdCB+cG9zKSlcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBfbG9jYWwgdCB+cG9zID1cbiAgICAgKEludDY0LiggKyApIDBMICh1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAocmVhZF9pbnQ2NCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAocmVhZF9pbnQ2NF9zd2FwIHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9nZXRfaW50NjRfdF9iZSA9XG4gICAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfbG9jYWwgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwX2xvY2FsXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9nZXRfaW50NjRfdF9sZSA9XG4gICAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsXG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9sb2NhbCBlbHNlIHJlYWRfaW50NjRfc3dhcF9sb2NhbFxuICBsZXQgZ2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X3N3YXBfbG9jYWwgZWxzZSByZWFkX2ludDY0X2xvY2FsXG5lbmRcblxubGV0IGdldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NCBlbHNlIHJlYWRfaW50NjRfc3dhcFxubGV0IGdldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9zd2FwIGVsc2UgcmVhZF9pbnQ2NFxubGV0IHNldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjQgZWxzZSB3cml0ZV9pbnQ2NF9zd2FwXG5sZXQgc2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRcblxubGV0IGludDY0X2NvbnZfZXJyb3IgKCkgPVxuICBmYWlsd2l0aCBcInVuc2FmZV9yZWFkX2ludDY0OiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdW5ib3hlZCFcIlxuOztcblxubGV0IHVpbnQ2NF9jb252X2Vycm9yICgpID1cbiAgZmFpbHdpdGggXCJ1bnNhZmVfcmVhZF91aW50NjQ6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCB1bmJveGVkIVwiXG47O1xuXG4oKiBbUG9seV0gaXMgcmVxdWlyZWQgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSB1bmJveGVkIFtpbnQ2NF0uICopXG5sZXRbQGlubGluZSBhbHdheXNdIGludDY0X3RvX2ludF9leG4gKG4gW0Bsb2NhbF0pID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gLTB4NDAwMF8wMDAwXzAwMDBfMDAwMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gLTB4MDAwMF8wMDAwXzQwMDBfMDAwMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSBpbnQ2NF9jb252X2Vycm9yICgpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQ2NF90b19pbnRfZXhuIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgaWYgUG9seS4obiA+PSAwTCAmJiBuIDwgMHg0MDAwXzAwMDBfMDAwMF8wMDAwTClcbiAgICB0aGVuIGludDY0X3RvX2ludCBuXG4gICAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgaW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2xlIHQgfnBvcylcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDY0X2JlX2V4biB0IH5wb3MgPVxuICB1aW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2JlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfdWludDY0X2xlX2V4biB0IH5wb3MgPSB1aW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2JlID0gdW5zYWZlX3NldF9pbnQ2NF9iZVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2xlID0gdW5zYWZlX3NldF9pbnQ2NF9sZVxuXG5sZXQgc2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50NjQgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDY0X2JlX2V4blwiIG47XG4gIHNldF9pbnQ2NF9iZSB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50NjRfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9sZV9leG5cIiBuO1xuICBzZXRfaW50NjRfbGUgdCB+cG9zIG5cbjs7XG5cbigqIFR5cGUgYW5ub3RhdGlvbnMgb24gdGhlIFt0XXMgYXJlIGltcG9ydGFudCBoZXJlOiBpbiBvcmRlciBmb3IgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlXG4gICBvcHRpbWl6ZWQgY29kZSwgaXQgbmVlZHMgdG8ga25vdyB0aGUgZnVsbHkgaW5zdGFudGlhdGVkIHR5cGUgb2YgdGhlIGJpZ2FycmF5LiBUaGlzIGlzXG4gICBiZWNhdXNlIHRoZSB0eXBlIG9mIHRoZSBiaWdhcnJheSBlbmNvZGVzIHRoZSBlbGVtZW50IGtpbmQgYW5kIHRoZSBsYXlvdXQgb2YgdGhlXG4gICBiaWdhcnJheS4gV2l0aG91dCB0aGUgYW5ub3RhdGlvbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgQyBjYWxsIHRvIHRoZSBnZW5lcmljIGFjY2Vzc1xuICAgZnVuY3Rpb25zLiAqKVxubGV0IHVuc2FmZV9zZXRfdWludDggKHQgOiB0KSB+cG9zIG4gPSBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG5cbmxldCB1bnNhZmVfc2V0X2ludDggKHQgOiB0KSB+cG9zIG4gPVxuICAoKiBJbiBhbGwgdGhlIHNldCBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgYXJlIHRoZXNlIHRlc3RzLCBpdCBsb29rcyBsaWtlIHRoZSB0ZXN0IGNvdWxkIGJlXG4gICAgIHJlbW92ZWQsIHNpbmNlIHRoZXkgYXJlIG9ubHkgY2hhbmdpbmcgdGhlIHZhbHVlcyBvZiB0aGUgYnl0ZXMgdGhhdCBhcmUgbm90XG4gICAgIHdyaXR0ZW4uICopXG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50OCAodCA6IHQpIH5wb3MgPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpIGluXG4gIGlmIG4gPj0gMTI4IHRoZW4gbiAtIDI1NiBlbHNlIG5cbjs7XG5cbmxldCBzZXRfdWludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDhfZXhuXCIgbjtcbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgc2V0X2ludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfaW50OCB+bG9jOlwiQmlnc3RyaW5nLnNldF9pbnQ4X2V4blwiIG47XG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCBnZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS5nZXQgdCBwb3MpXG5cbmxldCBnZXRfaW50OCAodCA6IHQpIH5wb3MgPVxuICBsZXQgbiA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgbWFzazMyX24gPSBTdGRsaWIuTmF0aXZlaW50LihzdWIgKHNoaWZ0X2xlZnQgMW4gMzIpIDFuKVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQzMl9vZl9pbnQzMl90IG4gPVxuICBpZiBub3Rfb25fMzJiaXRcbiAgdGhlblxuICAgICgqIHVzZSBDYW1sLk5hdGl2ZWludCB0byBlbnN1cmUgaW5saW5pbmcgZXZlbiB3aXRob3V0IHgtbGlicmFyeS1pbmxpbmluZyAqKVxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuKHRvX2ludCAobG9nYW5kIChvZl9pbnQzMiBuKSBtYXNrMzJfbikpXG4gIGVsc2UgaW50MzJfdG9faW50IG5cbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfc2V0X3VpbnQzMl9sZSB0IH5wb3MgbiA9IHVuc2FmZV9zZXRfaW50MzJfdF9sZSB0IH5wb3MgKGludDMyX29mX2ludCBuKVxubGV0W0BpbmxpbmVdIHVuc2FmZV9zZXRfdWludDMyX2JlIHQgfnBvcyBuID0gdW5zYWZlX3NldF9pbnQzMl90X2JlIHQgfnBvcyAoaW50MzJfb2ZfaW50IG4pXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2xlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2JlIHQgfnBvcylcbjs7XG5cbmxldCBzZXRfdWludDMyX2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQzMiB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50MzJfbGVfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBub3Rfb25fMzJiaXQgJiYgbiA+PSAxIGxzbCAzMSB0aGVuIG4gLSAoMSBsc2wgMzIpIGVsc2UgbiBpblxuICBzZXRfaW50MzJfbGVfZXhuIHQgfnBvcyBuXG47O1xuXG5sZXQgc2V0X3VpbnQzMl9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50MzIgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDMyX2JlX2V4blwiIG47XG4gIGxldCBuID0gaWYgbm90X29uXzMyYml0ICYmIG4gPj0gMSBsc2wgMzEgdGhlbiBuIC0gKDEgbHNsIDMyKSBlbHNlIG4gaW5cbiAgc2V0X2ludDMyX2JlX2V4biB0IH5wb3MgblxuOztcblxubGV0IGdldF91aW50MzJfbGUgdCB+cG9zID0gdWludDMyX29mX2ludDMyX3QgKGdldF9pbnQzMl90X2xlIHQgfnBvcylcbmxldCBnZXRfdWludDMyX2JlIHQgfnBvcyA9IHVpbnQzMl9vZl9pbnQzMl90IChnZXRfaW50MzJfdF9iZSB0IH5wb3MpXG5cbm1vZHVsZSBJbnRfcmVwciA9IHN0cnVjdFxuICBtb2R1bGUgRiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHRfZnJvemVuXG5cbiAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gZ2V0X3VpbnQ4IHQgfnBvc1xuICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCB4KVxuICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gZ2V0XzE2IHQgcG9zXG4gICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHNldF8xNl90cnVuYyB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IGdldF8zMiB0IHBvc1xuICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHNldF8zMiB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IGdldF82NCB0IHBvc1xuICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHNldF82NCB0IHBvcyB4XG4gIGVuZFxuXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9nZXQgKEYpXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9zZXQgKEYpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB0X2Zyb3plblxuXG4gICAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gdW5zYWZlX2dldF91aW50OCB0IH5wb3NcbiAgICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IHVuc2FmZV9zZXRfdWludDggdCB+cG9zIHhcbiAgICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gdW5zYWZlX2dldF8xNiB0IHBvc1xuICAgICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfMzIgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX2dldCAoRilcbiAgICBpbmNsdWRlIEludF9yZXByLk1ha2Vfc2V0IChGKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc2lnbl9leHRlbmRfMTYgPSBzaWduX2V4dGVuZF8xNlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBCbGl0XG5pbmNsdWRlIFRlc3RfYmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmxpdFxuXG4gIHR5cGUgJ2Egc3JjXG4gIHR5cGUgJ2EgZHN0XG5cbiAgKCogIHZhbCBibGl0ICAgICAgICA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdCopXG4gIHZhbCBibGl0byA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdG9cblxuICAoKiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHNyYywgJ2EgZHN0KSBibGl0KilcbiAgdmFsIHN1YiA6ICgnYSBzcmMsICdhIGRzdCkgc3ViXG5cbiAgKCp2YWwgc3VibyAgICAgICAgOiAoJ2Egc3JjLCAnYSBkc3QpIHN1Ym8qKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl90ZXN0c19nZW4gPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVxdWFsIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sXG5cbiAgICB2YWwgb2ZfYm9vbCA6IGJvb2wgLT4gYm9vbCB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgelxuXG4gIG1vZHVsZSBTcmMgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiAoXyB0W0Bsb2NhbF0pIC0+IGludFxuICAgIHZhbCBjcmVhdGVfYm9vbCA6IGxlbjppbnQgLT4gYm9vbCB6IHRcbiAgICB2YWwgZ2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudFxuICAgIHZhbCBzZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50IC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIERzdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGxlbmd0aCA6IChfIHRbQGxvY2FsXSkgLT4gaW50XG4gICAgdmFsIGNyZWF0ZV9ib29sIDogbGVuOmludCAtPiBib29sIHogdFxuICAgIHZhbCBnZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50XG4gICAgdmFsIHNldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuICAgIHZhbCBvdmVybGFwcGluZ19zcmNfZHN0IDogWyBgRG9fbm90X2NoZWNrIHwgYENoZWNrIG9mICdhIFNyYy50IC0+ICdhIHQgXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW5cbiAgICAoRm9yX3Rlc3RzIDogRm9yX3Rlc3RzX2dlbilcbiAgICAoVGVzdGVkIDogU19nZW5cbiAgICAgd2l0aCB0eXBlICdhIHNyYyA6PSAnYSBGb3JfdGVzdHMuU3JjLnRcbiAgICAgd2l0aCB0eXBlICdhIGRzdCA6PSAnYSBGb3JfdGVzdHMuRHN0LnQpID1cbnN0cnVjdFxuICBvcGVuIFRlc3RlZFxuICBvcGVuIEZvcl90ZXN0c1xuXG4gIGxldCBpbml0IH5sZW4gfmNyZWF0ZSB+c2V0IH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHNldCB0IGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHRcbiAgOztcblxuICBsZXQgZWx0MSA9IEVsdC5vZl9ib29sIHRydWVcbiAgbGV0IGVsdDIgPSBFbHQub2ZfYm9vbCBmYWxzZVxuICBsZXQgKCkgPSBhc3NlcnQgKG5vdCAoRWx0LmVxdWFsIGVsdDEgZWx0MikpXG4gIGxldCBzcmNfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDEgZWxzZSBlbHQyXG4gIGxldCBkc3RfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDIgZWxzZSBlbHQxXG5cbiAgKCogVGVzdCBbYmxpdF0uICopXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IG4gPSA0IGluXG4gICAgZm9yIHNyY19sZW5ndGggPSAwIHRvIG4gZG9cbiAgICAgIGZvciBkc3RfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICAgIGZvciBzcmNfcG9zID0gMCB0byBzcmNfbGVuZ3RoIGRvXG4gICAgICAgICAgZm9yIGRzdF9wb3MgPSAwIHRvIGRzdF9sZW5ndGggZG9cbiAgICAgICAgICAgIGZvciBzcmNfbGVuID0gMCB0byBtaW4gKHNyY19sZW5ndGggLSBzcmNfcG9zKSAoZHN0X2xlbmd0aCAtIGRzdF9wb3MpIGRvXG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIGxldCBpc19pbl9yYW5nZSBpID0gaSA+PSBkc3RfcG9zICYmIGkgPCBkc3RfcG9zICsgc3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVjayBsZW5ndGggZ2V0IG5hbWUgc2VxdWVuY2UgfmV4cGVjdCA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHNlcXVlbmNlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEVsdC5lcXVhbCAoZ2V0IHNlcXVlbmNlIGkpIChleHBlY3QgaSkpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJidWdcIiAobmFtZSA6IHN0cmluZykgKGkgOiBpbnQpXVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrX3NyYyA9IGNoZWNrIFNyYy5sZW5ndGggU3JjLmdldCBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19kc3QgPSBjaGVjayBEc3QubGVuZ3RoIERzdC5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3JjID1cbiAgICAgICAgICAgICAgICAgIGluaXQgfmxlbjpzcmNfbGVuZ3RoIH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhc3NlcnQgKFNyYy5sZW5ndGggc3JjID0gc3JjX2xlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46ZHN0X2xlbmd0aCB+Y3JlYXRlOkRzdC5jcmVhdGVfYm9vbCB+c2V0OkRzdC5zZXQgfmY6ZHN0X2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChEc3QubGVuZ3RoIGRzdCA9IGRzdF9sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBpbml0X3NyYyAoKSA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gc3JjX2xlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgU3JjLnNldCBzcmMgaSAoc3JjX2JpdCBpKVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcImJsaXQgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdFwiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfaW5fcmFuZ2UgaSB0aGVuIHNyY19iaXQgKHNyY19wb3MgKyBpIC0gZHN0X3BvcykgZWxzZSBkc3RfYml0IGkpO1xuICAgICAgICAgICAgICAgIChtYXRjaCBEc3Qub3ZlcmxhcHBpbmdfc3JjX2RzdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYERvX25vdF9jaGVjayAtPiAoKVxuICAgICAgICAgICAgICAgICB8IGBDaGVjayBzcmNfdG9fZHN0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgZHN0X3BvcyArIHNyY19sZW4gPD0gc3JjX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZHN0ID0gc3JjX3RvX2RzdCBzcmMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdCBvdmVybGFwcGluZ1wiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19iaXQgKGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfcG9zICsgaSAtIGRzdF9wb3MgZWxzZSBpKSkpKSk7XG4gICAgICAgICAgICAgICAgKCogQ2hlY2sgW3N1Yl0uICopXG4gICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9IHN1YiBzcmMgfnBvczpzcmNfcG9zIH5sZW46c3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcInN1YiBzcmNcIiBzcmMgfmV4cGVjdDpzcmNfYml0O1xuICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcInN1YiBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT4gc3JjX2JpdCAoc3JjX3BvcyArIGkpKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIFwiYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfcG9zIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfcG9zIDogaW50KV1cbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgc3JjID0gaW5pdCB+bGVuOjQgfmNyZWF0ZTpTcmMuY3JlYXRlX2Jvb2wgfnNldDpTcmMuc2V0IH5mOnNyY19iaXQgaW5cbiAgICBsZXQgZHN0ID0gaW5pdCB+bGVuOjggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXQgaW5cbiAgICBsZXQgYXNzZXJ0X3JhaXNlcyBmID0gYXNzZXJ0IChFeG4uZG9lc19yYWlzZSBmKSBpblxuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOigtMSkgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOigtMSkgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjUgfnNyY19sZW46MSB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46OCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjUgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjggKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QxXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seSlcbiAgICAoVGVzdGVkIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgICBsZXQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gICAgICAgIGxldCBvZl9ib29sID0gRm4uaWRcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBUZXN0MV9nZW5lcmljXG4gICAgKEVsdCA6IEVsdDEpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICAgIHR5cGUgJ2EgeiA9ICdhIFNlcXVlbmNlLnpcblxuICAgICAgbW9kdWxlIFNyYyA9IFNlcXVlbmNlXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIEVsdF90b19lbHQxIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IEVsdC50XG5cbiAgbGV0IGVxdWFsID0gRWx0LmVxdWFsXG4gIGxldCBvZl9ib29sID0gRWx0Lm9mX2Jvb2xcbmVuZFxuXG5tb2R1bGUgVGVzdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoVGVzdGVkIDogUyB3aXRoIHR5cGUgdCA6PSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU3JjXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdF9kaXN0aW5jdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNyYyA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKERzdCA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBTcmMudCB3aXRoIHR5cGUgZHN0IDo9IERzdC50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNyY1xuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBvcGVuIERzdFxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYERvX25vdF9jaGVja1xuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdCkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlX2Rpc3RpbmN0IChTcmMpIChEc3QpXG4gIGluY2x1ZGUgVGVzdF9kaXN0aW5jdCAoRWx0KSAoU3JjKSAoRHN0KSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0MSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpY19hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQxKSAoU2VxdWVuY2UgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBCbGl0LlNlcXVlbmNlMVxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDFfZ2VuZXJpYyAoRWx0KSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmluYXJ5X3NlYXJjaGFibGVcbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmluYXJ5X3NlYXJjaGFibGVcblxuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSBlbHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EgZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0ID0gc2lnXG4gIGluY2x1ZGUgU19nZW5cblxuICBtb2R1bGUgRm9yX3Rlc3QgOiBzaWdcbiAgICB2YWwgY29tcGFyZSA6IGJvb2wgZWx0IC0+IGJvb2wgZWx0IC0+IGludFxuICAgIHZhbCBzbWFsbCA6IGJvb2wgZWx0XG4gICAgdmFsIGJpZyA6IGJvb2wgZWx0XG4gICAgdmFsIG9mX2FycmF5IDogYm9vbCBlbHQgYXJyYXkgLT4gYm9vbCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUZXN0X2dlbiAoTSA6IEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBvcGVuIE1cblxuICBsZXQldGVzdF9tb2R1bGUgXCJ0ZXN0X2JpbmFyeV9zZWFyY2hhYmxlXCIgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBlbHRfY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBzID0gRm9yX3Rlc3Quc21hbGxcbiAgICAgIGxldCBiID0gRm9yX3Rlc3QuYmlnXG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB+Y29tcGFyZSB0IGhvdyB2ID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgKEZvcl90ZXN0Lm9mX2FycmF5IHQpIGhvdyB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgKCA9ICkgPSBQb2x5LmVxdWFsXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzIHxdIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgTGFzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHMgfF0gYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgMlxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYiB8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiIHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gcyA9IE5vbmVcblxuICAgICAgbGV0IGNyZWF0ZV90ZXN0X2Nhc2UgKG51bV9zLCBudW1fYikgPVxuICAgICAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIGIgfmxlbjoobnVtX3MgKyBudW1fYikgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG51bV9zIC0gMSBkb1xuICAgICAgICAgIGFyci4oaSkgPC0gc1xuICAgICAgICBkb25lO1xuICAgICAgICBhcnJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvbmx5X3NtYWxsID0gMTBfMDAwLCAwXG4gICAgICBsZXQgb25seV9iaWcgPSAwLCAxMF8wMDBcbiAgICAgIGxldCBib3RoID0gMjUzMSwgNDcxN1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCAoY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsKSB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgXyAtPiB0cnVlXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2UgYm90aCBpblxuICAgICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgdiAtPiB2ID0gMjUzMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSA9XG4gICAgICAgIEFycmF5LmluaXQgMTAwXzAwMCB+ZjooZnVuIGkgLT4gaWYgaSA+IDUwXzAwMCB0aGVuIGIgZWxzZSBzKVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgKCogdGVzdHMgYXJvdW5kIGEgZ2FwKilcbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3QgYmVnaW5uaW5nIG9mIGFycmF5ICopXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgKCogdGVzdCBlbmQgb2YgYXJyYXkgKilcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgOV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICAgIGZvciBsZW5ndGggPSAwIHRvIDUgZG9cbiAgICAgICAgICBmb3IgbnVtX3MgPSAwIHRvIGxlbmd0aCBkb1xuICAgICAgICAgICAgbGV0IGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIH5mOihmdW4gaSAtPiBpZiBpIDwgbnVtX3MgdGhlbiBzIGVsc2UgYikgaW5cbiAgICAgICAgICAgIGZvciBwb3MgPSAtMSB0byBsZW5ndGggZG9cbiAgICAgICAgICAgICAgZm9yIGxlbiA9IC0xIHRvIGxlbmd0aCArIDEgZG9cbiAgICAgICAgICAgICAgICAoKnRyeSopXG4gICAgICAgICAgICAgICAgbGV0IHNob3VsZF9yYWlzZSA9XG4gICAgICAgICAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgICAgICAgIH50b3RhbF9sZW5ndGg6bGVuZ3RoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+cG9zIH5sZW4gfmNvbXBhcmU6ZWx0X2NvbXBhcmUgYExhc3RfZXF1YWxfdG8gcylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIHNob3VsZF9yYWlzZSwgcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgICB8IHRydWUsIEVycm9yIF8gLT4gKClcbiAgICAgICAgICAgICAgICB8IHRydWUsIE9rIF8gLT4gZmFpbHdpdGggXCJleHBlY3RlZCBpdCB0byByYWlzZSBidXQgaXQgZGlkbid0XCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBFcnJvciBfIC0+IGZhaWx3aXRoIFwiZXhwZWN0ZWQgaXQgdG8gbm90IHJhaXNlLCBidXQgaXQgcmFpc2VkXCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBPayByZXN1bHQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzZWFyY2hlZCA9IG51bV9zIC0gMSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGNvcnJlY3RfcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICAgaWYgc2VhcmNoZWQgPCBwb3NcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgbGVuID0gMFxuICAgICAgICAgICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBzZWFyY2hlZCA+PSBwb3MgKyBsZW5cbiAgICAgICAgICAgICAgICAgICAgdGhlbiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIFNvbWUgc2VhcmNoZWRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBub3QgKGNvcnJlY3RfcmVzdWx0ID0gcmVzdWx0KSB0aGVuIGZhaWx3aXRoIFwiV3JvbmcgcmVzdWx0XCJcbiAgICAgICAgICAgICAgICAgICgqd2l0aCBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGhzIFwiYmluYXJ5X3NlYXJjaCBidWdcIlxuICAgICAgICAgICAgICAgICAgICAoZXhuLCBgbGVuZ3RoIGxlbmd0aCwgYHNlYXJjaF9rZXkgc2VhcmNoX2tleSwgYHBvcyBwb3MsIGBsZW4gbGVuKVxuICAgICAgICAgICAgICAgICAgICA8OnNleHBfb2Y8IGV4biAqIFsgYGxlbmd0aCBvZiBpbnQgXSAqIFsgYHNlYXJjaF9rZXkgb2YgaW50IF1cbiAgICAgICAgICAgICAgICAgICAqIFsgYHBvcyBvZiBpbnQgXSAqIFsgYGxlbiBvZiBpbnQgXSA+PiopXG4gICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhID0gYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgKEZvcl90ZXN0Lm9mX2FycmF5IGEpXG5cbiAgICAgICgqdGVzdCBmb3IgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQqKVxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIHggPSBpZiB4ID0gYiB0aGVuIGBSaWdodCBlbHNlIGBMZWZ0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gU29tZSA1MF8wMDBcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgXyA9IGBSaWdodCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IE5vbmVcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIF8gPSBgTGVmdCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IFNvbWUgOTlfOTk5XG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBOb25lXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVGVzdCAoTSA6IEJpbmFyeV9zZWFyY2hhYmxlX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gTS50XG4gICAgdHlwZSAnYSBlbHQgPSBNLmVsdFxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gIGVuZClcblxubW9kdWxlIFRlc3QxIChNIDogQmluYXJ5X3NlYXJjaGFibGUxX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTS50XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSA9IE0uRm9yX3Rlc3Qub2ZfYXJyYXlcbiAgICAgIGxldCBjb21wYXJlID0gQm9vbC5jb21wYXJlXG4gICAgICBsZXQgc21hbGwgPSBmYWxzZVxuICAgICAgbGV0IGJpZyA9IHRydWVcbiAgICBlbmRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdCAoTSA6IEluZGV4YWJsZV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZSAoTSlcbiAgaW5jbHVkZSBCXG5cbiAgaW5jbHVkZSBUZXN0IChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IE0udFxuICAgICAgdHlwZSBlbHQgPSBNLmVsdFxuXG4gICAgICBpbmNsdWRlIEJcbiAgICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChNIDogSW5kZXhhYmxlMV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKE0pXG4gIGluY2x1ZGUgQlxuXG4gIGluY2x1ZGUgVGVzdDEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgTS50XG5cbiAgICAgIGluY2x1ZGUgQlxuICAgICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG5pbmNsdWRlIChcbiAgU3RyaW5nIDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZClcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBTdGRsaWIuRmlsZW5hbWVcblxuICBsZXQgY2hlY2tfc3VmZml4ID0gY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX2V4dGVuc2lvbiA9IGNob3BfZXh0ZW5zaW9uXG4gIGxldCBjaG9wX3N1ZmZpeCA9IGNob3Bfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBjaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBpc19pbXBsaWNpdCA9IGlzX2ltcGxpY2l0XG4gIGxldCBpc19yZWxhdGl2ZSA9IGlzX3JlbGF0aXZlXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBwYXJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcl9zZXAgPSBkaXJfc2VwXG4gIGxldCBxdW90ZSA9IHF1b3RlXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gZ2V0X3RlbXBfZGlyX25hbWUgKClcbiAgbGV0IGRpcm5hbWUgPSBkaXJuYW1lXG4gIGxldCBiYXNlbmFtZSA9IGJhc2VuYW1lXG5lbmRcblxubGV0IGlzX2Fic29sdXRlIHAgPSBub3QgKGlzX3JlbGF0aXZlIHApXG5cbmxldCBjb25jYXQgcDEgcDIgPVxuICBpZiBTdHJpbmcuaXNfZW1wdHkgcDFcbiAgdGhlblxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUuY29uY2F0IGNhbGxlZCB3aXRoIGFuIGVtcHR5IHN0cmluZyBhcyBpdHMgZmlyc3QgYXJndW1lbnQgKHNlY29uZCBcXFxuICAgICAgIGFyZ3VtZW50OiAlcylcIlxuICAgICAgcDJcbiAgICAgICgpO1xuICBsZXQgcmVjIGNvbGxhcHNlX3RyYWlsaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lIChcIlwiLCAoXCIuXCIgfCBcIlwiKSkgLT4gXCJcIlxuICAgIHwgU29tZSAocywgKFwiLlwiIHwgXCJcIikpIC0+IGNvbGxhcHNlX3RyYWlsaW5nIHNcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gc1xuICBpblxuICBsZXQgcmVjIGNvbGxhcHNlX2xlYWRpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jy8nIHdpdGhcbiAgICB8IFNvbWUgKChcIi5cIiB8IFwiXCIpLCBzKSAtPiBjb2xsYXBzZV9sZWFkaW5nIHNcbiAgICB8IFNvbWUgXyB8IE5vbmUgLT4gc1xuICBpblxuICBjb2xsYXBzZV90cmFpbGluZyBwMSBeIFwiL1wiIF4gY29sbGFwc2VfbGVhZGluZyBwMlxuOztcblxubGV0IHRvX2Fic29sdXRlX2V4biBwIH5yZWxhdGl2ZV90byA9XG4gIGlmIGlzX3JlbGF0aXZlIHJlbGF0aXZlX3RvXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLnRvX2Fic29sdXRlX2V4biBjYWxsZWQgd2l0aCBhIFtyZWxhdGl2ZV90b10gdGhhdCBpcyBhIHJlbGF0aXZlIHBhdGg6ICVzXCJcbiAgICAgIHJlbGF0aXZlX3RvXG4gICAgICAoKVxuICBlbHNlIGlmIGlzX2Fic29sdXRlIHBcbiAgdGhlbiBwXG4gIGVsc2UgY29uY2F0IHJlbGF0aXZlX3RvIHBcbjs7XG5cbmxldCBzcGxpdCBzID0gZGlybmFtZSBzLCBiYXNlbmFtZSBzXG5cbigqIFttYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemVdIGNvbWVzIGZyb20gZ2V0Y29uZiBfUE9TSVhfTkFNRV9NQVggLyAqKVxubGV0IG1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSA9IDI1NVxuXG5sZXQgaXNfcG9zaXhfcGF0aG5hbWVfY29tcG9uZW50IHMgPVxuICBsZXQgbW9kdWxlIFMgPSBTdHJpbmcgaW5cbiAgcyA8PiBcIi5cIlxuICAmJiBzIDw+IFwiLi5cIlxuICAmJiBJbnQuKDAgPCBTLmxlbmd0aCBzKVxuICAmJiBJbnQuKFMubGVuZ3RoIHMgPD0gbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplKVxuICAmJiAobm90IChTLmNvbnRhaW5zIHMgJy8nKSlcbiAgJiYgbm90IChTLmNvbnRhaW5zIHMgJ1xcMDAwJylcbjs7XG5cbmxldCByb290ID0gXCIvXCJcblxubGV0IHNwbGl0X2V4dGVuc2lvbiBmbiA9XG4gIGxldCBkaXIsIGZuID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy8nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgZm5cbiAgICB8IFNvbWUgKHBhdGgsIGZuKSAtPiBTb21lIHBhdGgsIGZuXG4gIGluXG4gIGxldCBmbiwgZXh0ID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy4nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gZm4sIE5vbmVcbiAgICB8IFNvbWUgKGJhc2VfZm4sIGV4dCkgLT4gYmFzZV9mbiwgU29tZSBleHRcbiAgaW5cbiAgbGV0IGZuID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgTm9uZSAtPiBmblxuICAgIHwgU29tZSBkaXIgLT4gZGlyIF4gXCIvXCIgXiBmblxuICBpblxuICBmbiwgZXh0XG47O1xuXG5sZXQgcGFydHMgZmlsZW5hbWUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGZpbGVuYW1lID1cbiAgICBtYXRjaCBzcGxpdCBmaWxlbmFtZSB3aXRoXG4gICAgfCAoXCIuXCIgYXMgYmFzZSksIFwiLlwiIC0+IGJhc2UgOjogYWNjXG4gICAgfCAoXCIvXCIgYXMgYmFzZSksIFwiL1wiIC0+IGJhc2UgOjogYWNjXG4gICAgfCByZXN0LCBkaXIgLT4gbG9vcCAoZGlyIDo6IGFjYykgcmVzdFxuICBpblxuICBsb29wIFtdIGZpbGVuYW1lXG47O1xuXG5sZXQgb2ZfcGFydHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwiRmlsZW5hbWUub2ZfcGFydHM6IGVtcHR5IHBhcnRzIGxpc3RcIlxuICB8IHJvb3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpyb290IH5mOlN0ZGxpYi5GaWxlbmFtZS5jb25jYXRcbjs7XG5cbmxldCByZWMgc2tpcF9jb21tb25fcHJlZml4IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgd2hlbiBTdHJpbmcuZXF1YWwgaDEgaDIgLT4gc2tpcF9jb21tb25fcHJlZml4IHQxIHQyXG4gIHwgXyAtPiBsMSwgbDJcbjs7XG5cbmxldCBvZl9hYnNvbHV0ZV9leG4gYSB+cmVsYXRpdmVfdG86YiA9XG4gIGlmIGlzX3JlbGF0aXZlIGFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+Zmlyc3RfYXJnOihhIDogc3RyaW5nKV07XG4gIGlmIGlzX3JlbGF0aXZlIGJcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogW35yZWxhdGl2ZV90b10gbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+cmVsYXRpdmVfdG86KGIgOiBzdHJpbmcpXTtcbiAgbGV0IGFfcGFydHMgPSBwYXJ0cyBhIGluXG4gIGxldCBiX3BhcnRzID0gcGFydHMgYiBpblxuICBsZXQgYV9zdWZmaXgsIGJfc3VmZml4ID0gc2tpcF9jb21tb25fcHJlZml4IGFfcGFydHMgYl9wYXJ0cyBpblxuICBsZXQgZ29fdXAgPSBMaXN0Lm1hcCB+ZjooZnVuIF8gLT4gcGFyZW50X2Rpcl9uYW1lKSBiX3N1ZmZpeCBpblxuICBtYXRjaCBnb191cCBAIGFfc3VmZml4IHdpdGhcbiAgfCBbXSAtPiBjdXJyZW50X2Rpcl9uYW1lXG4gIHwgcmVscGF0aCAtPiBvZl9wYXJ0cyByZWxwYXRoXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBjcmVhdGVfYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IG9wZW5fdGVtcF9maWxlX2ZkID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgcmVhbHBhdGggPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2RpciA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHRlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBVbml2X21hcF9pbnRmXG5tb2R1bGUgVWlkID0gVHlwZV9lcXVhbC5JZC5VaWRcblxubW9kdWxlIE1ha2UxXG4gICAgKEtleSA6IEtleSkgKERhdGEgOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICgncywgJ2EpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogQSB3cmFwcGVyIGZvciB0aGUgW0tleV0gbW9kdWxlIHRoYXQgYWRkcyBhIGR5bmFtaWMgY2hlY2sgdG8gW0tleS50eXBlX2lkXS5cblxuICAgICBJdCdzIGEgYnVnIGlmIHRoZSB1c2VyLXByb3ZpZGVkIFtLZXkudHlwZV9pZF0gZ2l2ZXMgZGlmZmVyZW50IHR5cGUgaWRzIG9uIGRpZmZlcmVudFxuICAgICBjYWxscy4gIEJlY2F1c2UgdGhpcyBjaGVjayBzaG91bGQgYmUgZmFpcmx5IGNoZWFwLCB3ZSBkbyBpdCBkeW5hbWljYWxseSB0byBhdm9pZFxuICAgICBzdWJ0bGVyIHByb2JsZW1zIGxhdGVyLlxuXG4gICAgIE9mIGNvdXJzZSwgd2UncmUgbm90IGNoZWNraW5nIHRydWx5IHBhdGhvbG9naWNhbCB0aGluZ3MgbGlrZSB0aGUgcHJvdmlkZWRcbiAgICAgW0tleS50eXBlX2lkXSBvbmx5IGNoYW5nZXMgdGhlIHZhbHVlIGl0IHJldHVybnMgb24gZXZlcnkgdGhpcmQgY2FsbC4uLiAqKVxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgS2V5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIHRlc3QtZnJpZW5kbHkgc2V4cCBjb252ZXJzaW9uICopXG4gICAgbGV0IHNleHBfb2ZfdHlwZV9pZCB0eXBlX2lkID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IG5hbWUgPSAoVHlwZV9lcXVhbC5JZC5uYW1lIHR5cGVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDsgdWlkID1cbiAgICAgICAgICAgIChpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmdcbiAgICAgICAgICAgICB0aGVuIFNleHAuQXRvbSBcIjx1aWQ+XCJcbiAgICAgICAgICAgICBlbHNlIFR5cGVfZXF1YWwuSWQuVWlkLnNleHBfb2ZfdCAoVHlwZV9lcXVhbC5JZC51aWQgdHlwZV9pZClcbiAgICAgICAgICAgICAgICAgIDogU2V4cC50KVxuICAgICAgICB9XVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZV9pZCBrZXkgPVxuICAgICAgbGV0IHR5cGVfaWQxID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBsZXQgdHlwZV9pZDIgPSBLZXkudHlwZV9pZCBrZXkgaW5cbiAgICAgIGlmIFR5cGVfZXF1YWwuSWQuc2FtZSB0eXBlX2lkMSB0eXBlX2lkMlxuICAgICAgdGhlbiB0eXBlX2lkMVxuICAgICAgZWxzZVxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIltLZXkudHlwZV9pZF0gbXVzdCBub3QgcHJvdmlkZSBkaWZmZXJlbnQgdHlwZSBpZHMgd2hlbiBjYWxsZWQgb24gdGhlIHNhbWUgXFxcbiAgICAgICAgICAgICBpbnB1dFwiXG4gICAgICAgICAgICAgIChrZXkgOiBfIEtleS50KVxuICAgICAgICAgICAgICAodHlwZV9pZDEgOiB0eXBlX2lkKVxuICAgICAgICAgICAgICAodHlwZV9pZDIgOiB0eXBlX2lkKV1cbiAgICA7O1xuICBlbmRcblxuICB0eXBlICgncywgJ2EpIGRhdGEgPSAoJ3MsICdhKSBEYXRhLnRcblxuICBsZXQgbmFtZV9vZl9rZXkga2V5ID0gVHlwZV9lcXVhbC5JZC5uYW1lIChLZXkudHlwZV9pZCBrZXkpXG4gIGxldCB1aWRfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQudWlkIChLZXkudHlwZV9pZCBrZXkpXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ3MgdCA9IFQgOiAnYSBLZXkudCAqICgncywgJ2EpIERhdGEudCAtPiAncyB0XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSAoVCAoa2V5LCBkYXRhKSkgPVxuICAgICAgRGF0YS5zZXhwX29mX3Qgc2V4cF9vZl9hIChUeXBlX2VxdWFsLklkLnRvX3NleHAgKEtleS50eXBlX2lkIGtleSkpIGRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWRfbmFtZSAoVCAoa2V5LCBfKSkgPSBuYW1lX29mX2tleSBrZXlcbiAgICBsZXQgdHlwZV9pZF91aWQgKFQgKGtleSwgXykpID0gdWlkX29mX2tleSBrZXlcblxuICAgIGxldCBjb21wYXJlIHQxIHQyID1cbiAgICAgIGxldCBjID0gU3RyaW5nLmNvbXBhcmUgKHR5cGVfaWRfbmFtZSB0MSkgKHR5cGVfaWRfbmFtZSB0MikgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBVaWQuY29tcGFyZSAodHlwZV9pZF91aWQgdDEpICh0eXBlX2lkX3VpZCB0MilcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdzIHQgPSAncyBQYWNrZWQudCBNYXAuTShVaWQpLnRcblxuICBsZXQgdG9fYWxpc3QgdCA9IE1hcC5kYXRhIHQgfD4gTGlzdC5zb3J0IH5jb21wYXJlOlBhY2tlZC5jb21wYXJlXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgdG9fYWxpc3QgdFxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gcGFja2VkIC0+IFBhY2tlZC50eXBlX2lkX25hbWUgcGFja2VkLCBwYWNrZWQpXG4gICAgfD4gWyVzZXhwX29mOiAoc3RyaW5nICogYSBQYWNrZWQudCkgbGlzdF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50ICh0IDogXyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIE1hcC5pdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBhc3NlcnQgKFVpZC5lcXVhbCBrZXkgKFBhY2tlZC50eXBlX2lkX3VpZCBkYXRhKSkpKVxuICA7O1xuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID0gTWFwLnNldCB0IH5rZXk6KHVpZF9vZl9rZXkga2V5KSB+ZGF0YTooUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gIGxldCBtZW1fYnlfaWQgdCBpZCA9IE1hcC5tZW0gdCBpZFxuICBsZXQgbWVtIHQga2V5ID0gbWVtX2J5X2lkIHQgKHVpZF9vZl9rZXkga2V5KVxuICBsZXQgcmVtb3ZlX2J5X2lkIHQgaWQgPSBNYXAucmVtb3ZlIHQgaWRcbiAgbGV0IHJlbW92ZSB0IGtleSA9IHJlbW92ZV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IGVtcHR5ID0gTWFwLmVtcHR5IChtb2R1bGUgVWlkKVxuXG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPVxuICAgIE1hcC5zaW5nbGV0b24gKG1vZHVsZSBVaWQpICh1aWRfb2Zfa2V5IGtleSkgKFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICA7O1xuXG4gIGxldCBpc19lbXB0eSA9IE1hcC5pc19lbXB0eVxuXG4gIGxldCBmaW5kICh0eXBlIGIpIHQgKGtleSA6IGIgS2V5LnQpID1cbiAgICBtYXRjaCBNYXAuZmluZCB0ICh1aWRfb2Zfa2V5IGtleSkgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChQYWNrZWQuVCAoa2V5JywgdmFsdWUpKSAtPlxuICAgICAgKCogY2Fubm90IHJhaXNlIC0tIHNlZSBbaW52YXJpYW50XSAqKVxuICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQga2V5KSAoS2V5LnR5cGVfaWQga2V5JylcbiAgICAgIGluXG4gICAgICBTb21lICh2YWx1ZSA6IChfLCBiKSBEYXRhLnQpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+IFByaW50Zi5mYWlsd2l0aGYgXCJVbml2X21hcC5maW5kX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPSBpZiBtZW0gdCBrZXkgdGhlbiBgRHVwbGljYXRlIGVsc2UgYE9rIChzZXQgdCB+a2V5IH5kYXRhKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBgT2sgdCAtPiB0XG4gICAgfCBgRHVwbGljYXRlIC0+XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuYWRkX2V4biBvbiBleGlzdGluZyBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBjaGFuZ2VfZXhuIHQga2V5IH5mOnVwZGF0ZSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIGRhdGEpXG4gICAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuY2hhbmdlX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIGxldCBvcmlnID0gZmluZCB0IGtleSBpblxuICAgIGxldCBuZXh0ID0gdXBkYXRlIG9yaWcgaW5cbiAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgfCBOb25lIC0+IGlmIE9wdGlvbi5pc19ub25lIG9yaWcgdGhlbiB0IGVsc2UgcmVtb3ZlIHQga2V5XG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiA9IGNoYW5nZSB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSlcblxuICBsZXQgb2ZfYWxpc3RfZXhuIHQgPVxuICAgIE1hcC5vZl9hbGlzdF9leG4gKG1vZHVsZSBVaWQpIChMaXN0Lm1hcCB0IH5mOihmdW4gcCAtPiBQYWNrZWQudHlwZV9pZF91aWQgcCwgcCkpXG4gIDs7XG5cbiAgbGV0IHR5cGVfZXF1YWwgOiAoJ3MgdCwgJ3MgUGFja2VkLnQgTWFwLk0oVHlwZV9lcXVhbC5JZC5VaWQpLnQpIFR5cGVfZXF1YWwudCA9IFRcbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBNID1cbiAgICBNYWtlMVxuICAgICAgKEtleSlcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgJ2EpIHQgPSAnYSBEYXRhLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZClcblxuICB0eXBlIHQgPSB1bml0IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBLZXkgPSBLZXlcblxuICB0eXBlICdhIGRhdGEgPSAnYSBEYXRhLnRcblxuICBsZXQgaW52YXJpYW50ID0gTS5pbnZhcmlhbnRcbiAgbGV0IGVtcHR5ID0gTS5lbXB0eVxuICBsZXQgc2luZ2xldG9uID0gTS5zaW5nbGV0b25cbiAgbGV0IGlzX2VtcHR5ID0gTS5pc19lbXB0eVxuICBsZXQgc2V0ID0gTS5zZXRcbiAgbGV0IG1lbSA9IE0ubWVtXG4gIGxldCBtZW1fYnlfaWQgPSBNLm1lbV9ieV9pZFxuICBsZXQgZmluZCA9IE0uZmluZFxuICBsZXQgZmluZF9leG4gPSBNLmZpbmRfZXhuXG4gIGxldCBhZGQgPSBNLmFkZFxuICBsZXQgYWRkX2V4biA9IE0uYWRkX2V4blxuICBsZXQgY2hhbmdlID0gTS5jaGFuZ2VcbiAgbGV0IGNoYW5nZV9leG4gPSBNLmNoYW5nZV9leG5cbiAgbGV0IHVwZGF0ZSA9IE0udXBkYXRlXG4gIGxldCByZW1vdmUgPSBNLnJlbW92ZVxuICBsZXQgcmVtb3ZlX2J5X2lkID0gTS5yZW1vdmVfYnlfaWRcblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAncyB0MSA9ICdzIE0uUGFja2VkLnQgPSBUIDogJ2EgS2V5LnQgKiAnYSBEYXRhLnQgLT4gJ3MgdDFcbiAgICB0eXBlIHQgPSB1bml0IHQxXG4gIGVuZFxuXG4gIGxldCB0b19hbGlzdCA9IE0udG9fYWxpc3RcbiAgbGV0IG9mX2FsaXN0X2V4biA9IE0ub2ZfYWxpc3RfZXhuXG4gIGxldCB0eXBlX2VxdWFsIDogKHQsIFBhY2tlZC50IE1hcC5NKFR5cGVfZXF1YWwuSWQuVWlkKS50KSBUeXBlX2VxdWFsLnQgPSBUXG5lbmRcblxubW9kdWxlIE1lcmdlIChLZXkgOiBLZXkpIChJbnB1dDFfZGF0YSA6IERhdGEpIChJbnB1dDJfZGF0YSA6IERhdGEpIChPdXRwdXRfZGF0YSA6IERhdGEpID1cbnN0cnVjdFxuICB0eXBlIGYgPVxuICAgIHsgZiA6XG4gICAgICAgICdhLlxuICAgICAgICAgIGtleTonYSBLZXkudFxuICAgICAgICAtPiBbIGBMZWZ0IG9mICdhIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgJ2EgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICB8IGBCb3RoIG9mICdhIElucHV0MV9kYXRhLnQgKiAnYSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gJ2EgT3V0cHV0X2RhdGEudCBvcHRpb25cbiAgICB9XG5cbiAgbW9kdWxlIE91dHB1dCA9IE1ha2UgKEtleSkgKE91dHB1dF9kYXRhKVxuXG4gIGxldCBtZXJnZSAodDEgOiBNYWtlKEtleSkoSW5wdXQxX2RhdGEpLnQpICh0MiA6IE1ha2UoS2V5KShJbnB1dDJfZGF0YSkudCkgfmY6eyBmIH1cbiAgICA6IE1ha2UoS2V5KShPdXRwdXRfZGF0YSkudFxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0Lk0uUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gICAgaW5cbiAgICBNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYExlZnQgZGF0YSlcbiAgICAgIHwgYFJpZ2h0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBSaWdodCBkYXRhKVxuICAgICAgfCBgQm90aCAoVCAobGVmdF9rZXksIGxlZnRfZGF0YSksIFQgKHJpZ2h0X2tleSwgcmlnaHRfZGF0YSkpIC0+XG4gICAgICAgICgqIENhbid0IHJhaXNlIGR1ZSB0byB0aGUgaW52YXJpYW50ICopXG4gICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQgbGVmdF9rZXkpIChLZXkudHlwZV9pZCByaWdodF9rZXkpXG4gICAgICAgIGluXG4gICAgICAgIGYgfmtleTpsZWZ0X2tleSAoYEJvdGggKGxlZnRfZGF0YSwgcmlnaHRfZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNZXJnZTFcbiAgICAoS2V5IDogS2V5KVxuICAgIChJbnB1dDFfZGF0YSA6IERhdGExKVxuICAgIChJbnB1dDJfZGF0YSA6IERhdGExKVxuICAgIChPdXRwdXRfZGF0YSA6IERhdGExKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ3MxLCAnczIsICdzMykgZiA9XG4gICAgeyBmIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICAga2V5OidhIEtleS50XG4gICAgICAgIC0+IFsgYExlZnQgb2YgKCdzMSwgJ2EpIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgKCdzMiwgJ2EpIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgfCBgQm90aCBvZiAoJ3MxLCAnYSkgSW5wdXQxX2RhdGEudCAqICgnczIsICdhKSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gKCdzMywgJ2EpIE91dHB1dF9kYXRhLnQgb3B0aW9uXG4gICAgfVxuXG4gIG1vZHVsZSBPdXRwdXQgPSBNYWtlMSAoS2V5KSAoT3V0cHV0X2RhdGEpXG5cbiAgbGV0IG1lcmdlXG4gICAgICAgICh0eXBlIHMxIHMyKVxuICAgICAgICAodDEgOiBzMSBNYWtlMShLZXkpKElucHV0MV9kYXRhKS50KVxuICAgICAgICAodDIgOiBzMiBNYWtlMShLZXkpKElucHV0Ml9kYXRhKS50KVxuICAgICAgICB+Zjp7IGYgfVxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0LlBhY2tlZC5UIChrZXksIGRhdGEpKVxuICAgIGluXG4gICAgTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBMZWZ0IGRhdGEpXG4gICAgICB8IGBSaWdodCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgUmlnaHQgZGF0YSlcbiAgICAgIHwgYEJvdGggKFQgKGxlZnRfa2V5LCBsZWZ0X2RhdGEpLCBUIChyaWdodF9rZXksIHJpZ2h0X2RhdGEpKSAtPlxuICAgICAgICAoKiBDYW4ndCByYWlzZSBkdWUgdG8gdGhlIGludmFyaWFudCAqKVxuICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGxlZnRfa2V5KSAoS2V5LnR5cGVfaWQgcmlnaHRfa2V5KVxuICAgICAgICBpblxuICAgICAgICBmIH5rZXk6bGVmdF9rZXkgKGBCb3RoIChsZWZ0X2RhdGEsIHJpZ2h0X2RhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgVHlwZV9pZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVHlwZV9lcXVhbC5JZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHR5cGVfaWQgPSBGbi5pZFxuZW5kXG5cbmluY2x1ZGUgKFxuICBNYWtlXG4gICAgKFR5cGVfaWRfa2V5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kKSA6XG4gICAgUyB3aXRoIHR5cGUgJ2EgZGF0YSA9ICdhIGFuZCBtb2R1bGUgS2V5IDo9IFR5cGVfaWRfa2V5KVxuXG5tb2R1bGUgS2V5ID0gVHlwZV9lcXVhbC5JZFxuXG5tb2R1bGUgV2l0aF9kZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBrZXkgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgIDsgZGVmYXVsdCA6ICdhXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5kZWZhdWx0IH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBkZWZhdWx0OyBrZXkgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSBzZXhwX29mIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIHQgPSB0LmtleVxuICBlbmRcblxuICBsZXQgZmluZCB0IHsgS2V5LmtleTsgZGVmYXVsdCB9ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0IChmaW5kIHQga2V5KVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGRlZmF1bHQgPSBfIH0gfmRhdGEgPSBzZXQgdCB+a2V5IH5kYXRhXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmY6dXBkYXRlID0gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIChmaW5kIHQga2V5KSlcbmVuZFxuXG5tb2R1bGUgV2l0aF9mb2xkID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgeyBrZXkgOiAnYiBXaXRoX2RlZmF1bHQuS2V5LnRcbiAgICAgIDsgZiA6ICdiIC0+ICdhIC0+ICdiXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5pbml0IH5mIH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBmOyBrZXkgPSBXaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDppbml0IH5uYW1lIHNleHBfb2YgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgdCA9IFdpdGhfZGVmYXVsdC5LZXkuaWQgdC5rZXlcbiAgZW5kXG5cbiAgbGV0IGZpbmQgdCB7IEtleS5rZXk7IGYgPSBfIH0gPSBXaXRoX2RlZmF1bHQuZmluZCB0IGtleVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGYgPSBfIH0gfmRhdGEgPSBXaXRoX2RlZmF1bHQuc2V0IHQgfmtleSB+ZGF0YVxuICBsZXQgY2hhbmdlIHQgeyBLZXkua2V5OyBmID0gXyB9IH5mOnVwZGF0ZSA9IFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6dXBkYXRlXG5cbiAgbGV0IGFkZCB0IH5rZXk6eyBLZXkua2V5OyBmIH0gfmRhdGEgPVxuICAgIFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6KGZ1biBhY2MgLT4gZiBhY2MgZGF0YSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcbiAgb3BlbiBXaXRoX2ZvbGRcblxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCAnYSBsaXN0KSBLZXkudFxuXG4gICAgbGV0IGNyZWF0ZSB+bmFtZSBzZXhwX29mID1cbiAgICAgIEtleS5jcmVhdGUgfmluaXQ6W10gfmY6KGZ1biB4cyB4IC0+IHggOjogeHMpIH5uYW1lIChMaXN0LnNleHBfb2ZfdCBzZXhwX29mKVxuICAgIDs7XG5cbiAgICBsZXQgaWQgPSBXaXRoX2ZvbGQuS2V5LmlkXG4gIGVuZFxuXG4gIGxldCBzZXQgPSBzZXRcbiAgbGV0IGZpbmQgPSBmaW5kXG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGNoYW5nZSA9IGNoYW5nZVxuZW5kXG4iLCJpbmNsdWRlIHN0cnVjdFxuICBvcGVuIFN0ZGlvXG5cbiAgbGV0IGVwcmludGYgPSBlcHJpbnRmXG4gIGxldCBwcmludGYgPSBwcmludGZcbiAgbGV0IHByaW50X3MgPSBwcmludF9zXG4gIGxldCBwcmludF9zdHJpbmcgPSBwcmludF9zdHJpbmdcbiAgbGV0IHByaW50X2VuZGxpbmUgPSBwcmludF9lbmRsaW5lXG4gIGxldCBwcmVycl9lbmRsaW5lID0gcHJlcnJfZW5kbGluZVxuXG4gIG1vZHVsZSBJbl9jaGFubmVsID0gSW5fY2hhbm5lbFxuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gQmFzZS5QcmludGZcblxuICBsZXQgc3ByaW50ZiA9IHNwcmludGZcbiAgbGV0IGZhaWx3aXRoZiA9IGZhaWx3aXRoZlxuICBsZXQga3NwcmludGYgPSBrc3ByaW50ZlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBDT01NQU5EX09VVFBVVF9JTlNUQUxMQVRJT05fQkFTSFxuICB8IENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuICB8IENPTVBfQ1dPUkRcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF9vZl1cblxubGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCB0KVxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFNleHBsaWIwLlNleHBfY29udlxuICBvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG4gIG9wZW4gUHB4X3N0YWJsZV93aXRuZXNzX3J1bnRpbWUuU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5cbiAgbW9kdWxlIExhenkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3QgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgY29tcGFyZSA9IEJhc2UuTGF6eS5jb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICAgIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB8IFplcm9cbiAgICAgICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgICAgICB8IE1hbnkgb2YgdFxuICAgICAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBsZXQgcmVjIGludmFyaWFudCB0ID1cbiAgICAgICAgICBCYXNlLkludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IFplcm8gLT4gKClcbiAgICAgICAgICAgIHwgT25lIF8gLT4gKClcbiAgICAgICAgICAgIHwgTWFueSBaZXJvIC0+IGZhaWx3aXRoIFwiTWFueSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYW55IHQgLT4gaW52YXJpYW50IHRcbiAgICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcIk1heWJlIFplcm8gc2hvdWxkIGJlIGp1c3QgWmVyb1wiXG4gICAgICAgICAgICB8IE1heWJlIHQgLT4gaW52YXJpYW50IHRcbiAgICAgICAgICAgIHwgQ29uY2F0IFtdIHwgQ29uY2F0IFsgXyBdIC0+IGZhaWx3aXRoIFwiRmxhdHRlbiB6ZXJvIGFuZCBvbmUtZWxlbWVudCBDb25jYXRcIlxuICAgICAgICAgICAgfCBDb25jYXQgdHMgLT4gQmFzZS5MaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50XG4gICAgICAgICAgICB8IEFkX2hvYyBfIC0+ICgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IHQgPSBbJW9mX3NleHA6IHRdIHNleHAgaW5cbiAgICAgICAgICBpbnZhcmlhbnQgdDtcbiAgICAgICAgICB0XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyB1c2FnZSA9XG4gICAgICAgICAgbGV0IG9wZW4gSW1wb3J0IGluXG4gICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IFplcm8gLT4gXCJcIlxuICAgICAgICAgIHwgT25lIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgfCBNYW55IFplcm8gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICAgfCBNYW55IChPbmUgXyBhcyB0KSAtPiBzcHJpbnRmIFwiWyVzIC4uLl1cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IE1hbnkgdCAtPiBzcHJpbnRmIFwiWyglcykgLi4uXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgICB8IE1heWJlIHQgLT4gc3ByaW50ZiBcIlslc11cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IENvbmNhdCB0cyAtPiBCYXNlLlN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoQmFzZS5MaXN0Lm1hcCB0cyB+Zjp1c2FnZSlcbiAgICAgICAgICB8IEFkX2hvYyB1c2FnZSAtPiB1c2FnZVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IGFub25zIDogQW5vbnMuVjIudFxuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgdXNhZ2UgOiBzdHJpbmdcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgeyBzdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFncyB9ID1cbiAgICAgICAgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zID0gVXNhZ2UgdXNhZ2U7IGZsYWdzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zOyBmbGFncyB9ID1cbiAgICAgICAgeyBzdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lXG4gICAgICAgIDsgdXNhZ2UgPVxuICAgICAgICAgICAgKG1hdGNoIGFub25zIHdpdGhcbiAgICAgICAgICAgICB8IFVzYWdlIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgICAgfCBHcmFtbWFyIGdyYW1tYXIgLT4gQW5vbnMuR3JhbW1hci5WMS51c2FnZSBncmFtbWFyKVxuICAgICAgICA7IGZsYWdzXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuICBlbmRcblxuICBtb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICAgIHR5cGUgYSA9IER1bW15X3R5cGVfYmVjYXVzZV93ZV9jYW5ub3RfZGlnZXN0X3R5cGVfY29uc3RydWN0b3JzX29ubHlfY29uY3JldGVfdHlwZXNcbiAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdCBMYXp5LnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICAgeyB0IHdpdGggc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCB0LnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZikgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgb3BlbiEgQmFzZVxuXG4gICAgICBsZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCBzdWJjb21tYW5kcyA9IExpc3QuQXNzb2MubWFwIHQuc3ViY29tbWFuZHMgfmYgfVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0IHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCA9XG4gICAgICAgIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IExhenkuZnJvbV92YWwgc3ViY29tbWFuZHMgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzIH0gOiAnYSBNb2RlbC50KSA6ICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZvcmNlIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgICBsZXQgYWJzX3BhdGggfmRpciBwYXRoID1cbiAgICAgIGlmIEZpbGVuYW1lX2Jhc2UuaXNfYWJzb2x1dGUgcGF0aCB0aGVuIHBhdGggZWxzZSBGaWxlbmFtZV9iYXNlLmNvbmNhdCBkaXIgcGF0aFxuICAgIDs7XG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fdjMgdCA6IFYzLnQgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgPSBbXVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjMgKHQgOiBWMy50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSB0LndvcmtpbmdfZGlyXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIFYzLnRvX2xhdGVzdCB0b192M1xuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBvZl92MyBWMy5vZl9sYXRlc3RcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7ICgqIFtwYXRoX3RvX2V4ZV0gbXVzdCBiZSBhYnNvbHV0ZS4gKilcbiAgICAgICAgICBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX3YyIHQgOiBWMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IFwiL1wiXG4gICAgICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl92MiAodCA6IFYyLnQpID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBCYXNlLkZuLmNvbXBvc2UgVjIudG9fbGF0ZXN0IHRvX3YyXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIG9mX3YyIFYyLm9mX2xhdGVzdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50ICogdFxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudFxuICAgICAgICB8IExhenkgb2YgdCBMYXp5LnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjIudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi50b19sYXRlc3QgZSlcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLnRvX2xhdGVzdCAoR3JvdXBfaW5mby5WMS5tYXAgZyB+Zjp0b19sYXRlc3QpKVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBvZl9sYXRlc3QgOiBNb2RlbC50IC0+IHQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIGJcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYyLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjEudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjEudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSAoQmFzZV9pbmZvLlYxLnRvX2xhdGVzdCBiKVxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjEudG9fbGF0ZXN0IGUpXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS50b19sYXRlc3QgKEdyb3VwX2luZm8uVjEubWFwIGcgfmY6dG9fbGF0ZXN0KSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgb2ZfbGF0ZXN0IDogTW9kZWwudCAtPiB0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSAoQmFzZV9pbmZvLlYxLm9mX2xhdGVzdCBiKVxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjEub2ZfbGF0ZXN0IGUpXG4gICAgICAgIHwgTGF6eSB0aHVuayAtPiBvZl9sYXRlc3QgKEJhc2UuTGF6eS5mb3JjZSB0aHVuaylcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLm1hcCAoR3JvdXBfaW5mby5WMS5vZl9sYXRlc3QgZykgfmY6b2ZfbGF0ZXN0KVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWZXJzaW9uZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVjEgb2YgVjEudFxuICAgICAgICB8IFYyIG9mIFYyLnRcbiAgICAgICAgfCBWMyBvZiBWMy50ICgqIGF2YWlsYWJsZSBhdCBsZWFzdCBzaW5jZSAyMDIwLTA0ICopXG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCB2YXJpYW50cywgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBmdW5jdGlvblxuICAgICAgICB8IFYxIHQgLT4gVjEudG9fbGF0ZXN0IHRcbiAgICAgICAgfCBWMiB0IC0+IFYyLnRvX2xhdGVzdCB0XG4gICAgICAgIHwgVjMgdCAtPiBWMy50b19sYXRlc3QgdFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCB+dmVyc2lvbl90b191c2UgbGF0ZXN0ID1cbiAgICAgICAgbWF0Y2ggdmVyc2lvbl90b191c2Ugd2l0aFxuICAgICAgICB8IDEgLT4gVjEgKFYxLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgMiAtPiBWMiAoVjIub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCAzIC0+IFYzIChWMy5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IG90aGVyIC0+XG4gICAgICAgICAgQmFzZS5FcnJvci5jcmVhdGVcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwidW5zdXBwb3J0ZWQgdmVyc2lvbl90b191c2VcIlxuICAgICAgICAgICAgb3RoZXJcbiAgICAgICAgICAgIFslc2V4cF9vZjogaW50XVxuICAgICAgICAgIHw+IEJhc2UuRXJyb3IucmFpc2VcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEJhc2Vcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEdyYW1tYXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgaW52YXJpYW50ID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwuaW52YXJpYW50XG4gICAgbGV0IHVzYWdlID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwudXNhZ2VcbiAgZW5kXG5cbiAgdHlwZSB0ID0gU3RhYmxlLkFub25zLk1vZGVsLnQgPVxuICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIudFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgbWF5YmVfbWlzc2luZ19wcmVmaXggPSBcIltcIlxuICBsZXQgbWF5YmVfbWlzc2luZ19zdWZmaXggPSBcIl1cIlxuICBsZXQgbWF5YmVfbW9yZV9zdWZmaXggPSBcIiAuLi5cIlxuXG4gIGxldCB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgPVxuICAgIGxldCB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9ID0gdCBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBpZiBhdF9sZWFzdF9vbmNlXG4gICAgICB0aGVuIGZsYWdfbmFtZVxuICAgICAgZWxzZSBTdHJpbmcuY29uY2F0IFsgbWF5YmVfbWlzc2luZ19wcmVmaXg7IGZsYWdfbmFtZTsgbWF5YmVfbWlzc2luZ19zdWZmaXggXVxuICAgIGluXG4gICAgaWYgYXRfbW9zdF9vbmNlIHRoZW4gZGVzY3JpcHRpb24gZWxzZSBTdHJpbmcuY29uY2F0IFsgZGVzY3JpcHRpb247IG1heWJlX21vcmVfc3VmZml4IF1cbiAgOztcblxuICBsZXQgb2ZfaGVscF9zdHJpbmcgbmFtZSA9XG4gICAgbGV0IGF0X21vc3Rfb25jZSwgbmFtZSA9XG4gICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggbmFtZSB+c3VmZml4Om1heWJlX21vcmVfc3VmZml4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBuYW1lXG4gICAgICB8IFNvbWUgbmFtZSAtPiBmYWxzZSwgbmFtZVxuICAgIGluXG4gICAgbGV0IGF0X2xlYXN0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgU3RyaW5nLmNob3BfcHJlZml4IG5hbWUgfnByZWZpeDptYXliZV9taXNzaW5nX3ByZWZpeFxuICAgICAgICB8PiBPcHRpb24uYmluZCB+ZjooU3RyaW5nLmNob3Bfc3VmZml4IH5zdWZmaXg6bWF5YmVfbWlzc2luZ19zdWZmaXgpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlIH0sIG5hbWVcbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJ0b19oZWxwX3N0cmluZ1wiID1cbiAgICBsZXQgZmxhZ19uYW1lID0gXCJuYW1lXCIgaW5cbiAgICBMaXN0Lml0ZXIgWyVhbGw6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgbGV0IHMgPSB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgaW5cbiAgICAgIHByaW50X3MgWyVtZXNzYWdlIFwiXCIgfl86KHQgOiB0KSBzXTtcbiAgICAgIGxldCB0JywgZmxhZ19uYW1lJyA9IG9mX2hlbHBfc3RyaW5nIHMgaW5cbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSB0IHQnKTtcbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiBzdHJpbmddIGZsYWdfbmFtZSBmbGFnX25hbWUnKSk7XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgZmFsc2UpIChhdF9tb3N0X29uY2UgZmFsc2UpKSBcIltuYW1lXSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSB0cnVlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJuYW1lIC4uLlwiKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIHRydWUpKSBbbmFtZV0pXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgbmFtZSkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRmxhZ19pbmZvLk1vZGVsLnQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZG9jIDogc3RyaW5nXG4gICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgcGFyc2VfbmFtZSB0ID1cbiAgICBsZXQgbnVtX29jY3VycmVuY2VzLCBmbGFnX25hbWUgPSBOdW1fb2NjdXJyZW5jZXMub2ZfaGVscF9zdHJpbmcgdC5uYW1lIGluXG4gICAgbWF0Y2ggU3RyaW5nLnNwbGl0IGZsYWdfbmFtZSB+b246JyAnIHdpdGhcbiAgICB8IFsgZmxhZ19uYW1lIF0gLT4gT2sgKG51bV9vY2N1cnJlbmNlcywgZmFsc2UsIGZsYWdfbmFtZSlcbiAgICB8IFsgZmxhZ19uYW1lOyBfYXJnX2RvYyBdIC0+IE9rIChudW1fb2NjdXJyZW5jZXMsIHRydWUsIGZsYWdfbmFtZSlcbiAgICB8IF8gLT4gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuYWJsZSB0byBwYXJzZVwiIGZsYWdfbmFtZV0pXG4gIDs7XG5cbiAgKCogVXNlcnMgYXJlIGxpa2VseSB0byBjYWxsIGFsbCB0aHJlZSBvZiB0aGVzZSBmdW5jdGlvbnMsIGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCByZS1wYXJzZVxuICAgICB0aGUgW25hbWVdIHNldmVyYWwgdGltZXMuIFdlIGRvbid0IGV4cGVjdCB1c2VycyBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gY2FyZSBhYm91dCB0aGVcbiAgICAgaW5lZmZpY2llbmN5LiAqKVxuICBsZXQgZmxhZ19uYW1lIHQgPVxuICAgIHBhcnNlX25hbWUgdFxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICgoXyA6IE51bV9vY2N1cnJlbmNlcy50KSwgKF8gOiBib29sKSwgZmxhZ19uYW1lKSAtPiBmbGFnX25hbWUpXG4gIDs7XG5cbiAgbGV0IG51bV9vY2N1cnJlbmNlcyB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAobnVtX29jY3VycmVuY2VzLCAoXyA6IGJvb2wpLCAoXyA6IHN0cmluZykpIC0+XG4gICAgICBudW1fb2NjdXJyZW5jZXMpXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVzX2FyZyB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoKF8gOiBOdW1fb2NjdXJyZW5jZXMudCksIHJlcXVpcmVzX2FyZywgKF8gOiBzdHJpbmcpKSAtPlxuICAgICAgcmVxdWlyZXNfYXJnKVxuICA7O1xuXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBfLCBcIlstaGVscF1cIiAtPiAtMVxuICAgIHwgXCJbLWhlbHBdXCIsIF8gLT4gMVxuICAgIHwgXywgXCJbLXZlcnNpb25dXCIgLT4gLTFcbiAgICB8IFwiWy12ZXJzaW9uXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiWy1idWlsZC1pbmZvXVwiIC0+IC0xXG4gICAgfCBcIlstYnVpbGQtaW5mb11cIiwgXyAtPiAxXG4gICAgfCBfLCBcImhlbHBcIiAtPiAtMVxuICAgIHwgXCJoZWxwXCIsIF8gLT4gMVxuICAgIHwgXywgXCJ2ZXJzaW9uXCIgLT4gLTFcbiAgICB8IFwidmVyc2lvblwiLCBfIC0+IDFcbiAgICB8IF8gLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2hlbHBfZGlzcGxheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBGbGFnX2luZm8udCBsaXN0XG5cbiAgbGV0IHNvcnQgdCA9XG4gICAgTGlzdC5zdGFibGVfc29ydCB0IH5jb21wYXJlOihmdW4gYSBiIC0+XG4gICAgICBGbGFnX2luZm8uaGVscF9zY3JlZW5fY29tcGFyZSBhLkZsYWdfaW5mby5uYW1lIGIuRmxhZ19pbmZvLm5hbWUpXG4gIDs7XG5cbiAgbGV0IHdvcmRfd3JhcF9hbmRfc3RyaXAgdGV4dCB3aWR0aCA9XG4gICAgbGV0IGNodW5rcyA9IFN0cmluZy5zcGxpdCB0ZXh0IH5vbjonXFxuJyBpblxuICAgIExpc3QuY29uY2F0X21hcCBjaHVua3MgfmY6KGZ1biB0ZXh0IC0+XG4gICAgICBsZXQgd29yZHMgPVxuICAgICAgICBTdHJpbmcuc3BsaXQgdGV4dCB+b246JyAnXG4gICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gd29yZCAtPiBub3QgKFN0cmluZy5pc19lbXB0eSB3b3JkKSlcbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBMaXN0LmZvbGQgd29yZHMgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyB3b3JkIC0+XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKG1hdGNoIGFjYyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IFtdLCB3b3JkXG4gICAgICAgICAgICAgfCBTb21lIChsaW5lcywgbGluZSkgLT5cbiAgICAgICAgICAgICAgICgqIGVmZmljaWVuY3kgaXMgbm90IGEgY29uY2VybiBmb3IgdGhlIHN0cmluZyBsZW5ndGhzIHdlIGV4cGVjdCAqKVxuICAgICAgICAgICAgICAgbGV0IGxpbmVfYW5kX3dvcmQgPSBsaW5lIF4gXCIgXCIgXiB3b3JkIGluXG4gICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGxpbmVfYW5kX3dvcmQgPD0gd2lkdGhcbiAgICAgICAgICAgICAgIHRoZW4gbGluZXMsIGxpbmVfYW5kX3dvcmRcbiAgICAgICAgICAgICAgIGVsc2UgbGluZSA6OiBsaW5lcywgd29yZCkpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSAobGluZXMsIGxpbmUpIC0+IExpc3QucmV2IChsaW5lIDo6IGxpbmVzKSlcbiAgOztcblxuICBtb2R1bGUgRGlzcGxheSA6IHNpZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbnVtX2NvbHMgPSA4MFxuICAgIGxldCBzcGFjZXNfc3RyaW5nIHdpZHRoID0gU3RyaW5nLm1ha2Ugd2lkdGggJyAnXG5cbiAgICBsZXQgcGFkX3NwYWNlc190b19zdWZmaXggeCB+d2lkdGggPVxuICAgICAgbGV0IHNsYWNrID0gd2lkdGggLSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICAgIHggXiBzcGFjZXNfc3RyaW5nIHNsYWNrXG4gICAgOztcblxuICAgIGxldCBpbmRlbnRhdGlvbiA9IFwiICBcIlxuICAgIGxldCBpbmRlbnRfYW5kX25ld2xpbmUgeCA9IExpc3QuY29uY2F0IFsgWyBpbmRlbnRhdGlvbiBdOyB4OyBbIFwiXFxuXCIgXSBdXG4gICAgbGV0IHNwYWNpbmdfZG90ID0gXCIuIFwiXG5cbiAgICBsZXQgZG90X2luZGVudGF0aW9uX29mZnNldCA9XG4gICAgICAyN1xuICAgIDs7XG5cbiAgICBsZXQgZG9jdW1lbnRhdGlvbl9zdGFydF9jb2x1bW4gPSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvblxuICAgIGxldCBsaHNfd2lkdGggPSBkb2N1bWVudGF0aW9uX3N0YXJ0X2NvbHVtblxuICAgIGxldCBsaHNfcGFkX3dpZHRoID0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb25cbiAgICBsZXQgbGhzX3BhZCA9IHNwYWNlc19zdHJpbmcgbGhzX3BhZF93aWR0aFxuXG4gICAgbGV0IGxoc19wYWRfYW5kX25ld2xpbmVfdGVybWluYXRlID1cbiAgICAgIExpc3QubWFwIH5mOihmdW4gdiAtPiBpbmRlbnRfYW5kX25ld2xpbmUgWyBsaHNfcGFkOyB2IF0pXG4gICAgOztcblxuICAgIGxldCByb3dzIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgZG9jdW1lbnRhdGlvbiA9XG4gICAgICBsZXQgZmxhZ19vbl9pdHNfb3duX2xpbmUgPVxuICAgICAgICBsZXQgZmxhZ193aWR0aCA9XG4gICAgICAgICAgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvbiArIFN0cmluZy5sZW5ndGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICBpblxuICAgICAgICBpZiBmbGFnX3dpZHRoID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIHNwYWNpbmdfZG90XG4gICAgICAgIHRoZW4gaW5kZW50X2FuZF9uZXdsaW5lIFsgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbmRlbnRfYW5kX25ld2xpbmVcbiAgICAgICAgICAgIFsgcGFkX3NwYWNlc190b19zdWZmaXggfndpZHRoOmRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICAgICAgOyBzcGFjaW5nX2RvdFxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIGxldCB3cmFwcGVkX2RvY3VtZW50YXRpb24gPVxuICAgICAgICB3b3JkX3dyYXBfYW5kX3N0cmlwXG4gICAgICAgICAgZG9jdW1lbnRhdGlvblxuICAgICAgICAgIChudW1fY29scyAtIGxoc193aWR0aCAtIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb24pXG4gICAgICBpblxuICAgICAgbWF0Y2ggd3JhcHBlZF9kb2N1bWVudGF0aW9uIHdpdGhcbiAgICAgIHwgW10gLT4gWyBmbGFnX29uX2l0c19vd25fbGluZSBdXG4gICAgICB8IGRvY193cmFwcGVkX2ZpcnN0X2xpbmUgOjogZG9jX3dyYXBwZWRfcmVzdF9saW5lcyAtPlxuICAgICAgICBsZXQgd3JhcHBlZF9kb2NfbGluZXMgPSBsaHNfcGFkX2FuZF9uZXdsaW5lX3Rlcm1pbmF0ZSBkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIGluXG4gICAgICAgIGxldCBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIHggPVxuICAgICAgICAgIGluZGVudF9hbmRfbmV3bGluZVxuICAgICAgICAgICAgWyBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB+d2lkdGg6ZG90X2luZGVudGF0aW9uX29mZnNldCB4XG4gICAgICAgICAgICA7IHNwYWNpbmdfZG90XG4gICAgICAgICAgICA7IGRvY193cmFwcGVkX2ZpcnN0X2xpbmVcbiAgICAgICAgICAgIF1cbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXRcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZsYWdfb25faXRzX293bl9saW5lXG4gICAgICAgICAgOjogcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCBcIlwiXG4gICAgICAgICAgOjogd3JhcHBlZF9kb2NfbGluZXNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA6OiB3cmFwcGVkX2RvY19saW5lc1xuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgTGlzdC5jb25jYXRfbWFwIHQgfmY6KGZ1biB0IC0+XG4gICAgICAgIGxldCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID1cbiAgICAgICAgICBsZXQgZmxhZyA9IHQuRmxhZ19pbmZvLm5hbWUgaW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChmbGFnIDo6IHQuYWxpYXNlcylcbiAgICAgICAgaW5cbiAgICAgICAgcm93cyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIHQuZG9jIHw+IExpc3QuY29uY2F0KVxuICAgICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IERpc3BsYXkudG9fc3RyaW5nIHRcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFN1YmNvbW1hbmRcbiAgICB8IEZsYWdcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN1YmNvbW1hbmQgLT4gXCJzdWJjb21tYW5kXCJcbiAgICB8IEZsYWcgLT4gXCJmbGFnXCJcbiAgOztcbmVuZFxuXG5sZXQgbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGUgPVxuICBsZXQgaXNfZGFzaCA9IENoYXIuZXF1YWwgJy0nIGluXG4gIGxldCBhbGlzdCA9XG4gICAgKCogbm8gcGFydGlhbCBtYXRjaGVzIHVubGVzcyBzb21lIG5vbi1kYXNoIGNoYXIgaXMgcHJlc2VudCAqKVxuICAgIGlmIFN0cmluZy5mb3JfYWxsIHByZWZpeCB+Zjppc19kYXNoXG4gICAgdGhlbiBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIChkYXRhLCBfKSkgLT4ga2V5LCAoZGF0YSwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpKVxuICAgIGVsc2UgYWxpc3RcbiAgaW5cbiAgbWF0Y2hcbiAgICBMaXN0LmZpbHRlciBhbGlzdCB+ZjooZnVuY3Rpb25cbiAgICAgIHwga2V5LCAoXywgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpIC0+IFN0cmluZy4oID0gKSBrZXkgcHJlZml4XG4gICAgICB8IGtleSwgKF8sIGBQcmVmaXgpIC0+IFN0cmluZy5pc19wcmVmaXgga2V5IH5wcmVmaXgpXG4gIHdpdGhcbiAgfCBbIChrZXksIChkYXRhLCBfbmFtZV9tYXRjaGluZykpIF0gLT4gT2sgKGtleSwgZGF0YSlcbiAgfCBbXSAtPiBFcnJvciAoc3ByaW50ZiAhXCJ1bmtub3duICV7S2V5X3R5cGV9ICVzXCIga2V5X3R5cGUgcHJlZml4KVxuICB8IG1hdGNoZXMgLT5cbiAgICAobWF0Y2ggTGlzdC5maW5kIG1hdGNoZXMgfmY6KGZ1biAoa2V5LCBfKSAtPiBTdHJpbmcuKCA9ICkga2V5IHByZWZpeCkgd2l0aFxuICAgICB8IFNvbWUgKGtleSwgKGRhdGEsIF9uYW1lX21hdGNoaW5nKSkgLT4gT2sgKGtleSwgZGF0YSlcbiAgICAgfCBOb25lIC0+XG4gICAgICAgbGV0IG1hdGNoaW5nX2tleXMgPSBMaXN0Lm1hcCB+Zjpmc3QgbWF0Y2hlcyBpblxuICAgICAgIEVycm9yXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIVwiJXtLZXlfdHlwZX0gJXMgaXMgYW4gYW1iaWd1b3VzIHByZWZpeDogJXNcIlxuICAgICAgICAgICAga2V5X3R5cGVcbiAgICAgICAgICAgIHByZWZpeFxuICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgbWF0Y2hpbmdfa2V5cykpKVxuOztcblxubW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuQmFzZV9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgYW5vbnMgOiBBbm9ucy50XG4gICAgOyBmbGFncyA6IEZsYWdfaW5mby50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgZmluZF9mbGFnIHQgcHJlZml4ID1cbiAgICBtYXRjaCBTdHJpbmcuaXNfcHJlZml4IHByZWZpeCB+cHJlZml4OlwiLVwiIHdpdGhcbiAgICB8IGZhbHNlIC0+IEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJGbGFncyBtdXN0IGJlZ2luIHdpdGggJy0nXCIgcHJlZml4XSlcbiAgICB8IHRydWUgLT5cbiAgICAgIGxldCViaW5kLk9yX2Vycm9yIGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCB0LmZsYWdzIH5mOihmdW4gKGZsYWdfaW5mbyA6IEZsYWdfaW5mby50KSAtPlxuICAgICAgICAgIGxldCViaW5kLk9yX2Vycm9yIGZsYWdfbmFtZSA9IEZsYWdfaW5mby5mbGFnX25hbWUgZmxhZ19pbmZvIGluXG4gICAgICAgICAgT2tcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoZmxhZ19uYW1lIDo6IGZsYWdfaW5mby5hbGlhc2VzKSB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgICAgICAga2V5LCAoZmxhZ19pbmZvLCBgUHJlZml4KSkpKVxuICAgICAgICB8PiBPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGxvb2t1cF9leHBhbmQgKExpc3QuY29uY2F0IGNob2ljZXMpIHByZWZpeCBGbGFnXG4gICAgICB8PiBSZXN1bHQubWFwX2Vycm9yIH5mOkVycm9yLm9mX3N0cmluZ1xuICAgICAgfD4gT3JfZXJyb3IubWFwIH5mOnNuZFxuICA7O1xuXG4gIGxldCBnZXRfdXNhZ2UgdCA9XG4gICAgbWF0Y2ggdC5hbm9ucyB3aXRoXG4gICAgfCBVc2FnZSB1c2FnZSAtPiB1c2FnZVxuICAgIHwgR3JhbW1hciBncmFtbWFyIC0+IEFub25zLkdyYW1tYXIudXNhZ2UgZ3JhbW1hclxuICA7O1xuZW5kXG5cbm1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QudCBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgZmluZF9zdWJjb21tYW5kIHQgcHJlZml4ID1cbiAgICBtYXRjaCBTdHJpbmcuaXNfcHJlZml4IHByZWZpeCB+cHJlZml4OlwiLVwiIHdpdGhcbiAgICB8IHRydWUgLT5cbiAgICAgIEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJTdWJjb21tYW5kcyBtdXN0IG5vdCBiZWdpbiB3aXRoICctJ1wiIHByZWZpeF0pXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCAoZm9yY2UgdC5zdWJjb21tYW5kcykgfmY6KGZ1biAoa2V5LCBhKSAtPiBrZXksIChhLCBgUHJlZml4KSlcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIGNob2ljZXMgcHJlZml4IFN1YmNvbW1hbmRcbiAgICAgIHw+IFJlc3VsdC5tYXBfZXJyb3IgfmY6RXJyb3Iub2Zfc3RyaW5nXG4gICAgICB8PiBPcl9lcnJvci5tYXAgfmY6c25kXG4gIDs7XG5cbiAgbGV0IG1hcCA9IFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLm1hcFxuZW5kXG5cbm1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkV4ZWNfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5lbmRcblxubW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRnVsbHlfZm9yY2VkLk1vZGVsLnQgPVxuICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gICAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogdFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBleHBhbmRlZF9zdWJjb21tYW5kcyB0ID1cbiAgICBsZXQgcmVjIGV4cGFuZCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4ZWMgKF8sIHQpIC0+IGV4cGFuZCB0XG4gICAgICB8IEJhc2ljIF8gLT4gWyBbXSBdXG4gICAgICB8IEdyb3VwIHsgc3ViY29tbWFuZHM7IF8gfSAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgKExhenkuZm9yY2Ugc3ViY29tbWFuZHMpIH5mOihmdW4gKG5hbWUsIHQpIC0+XG4gICAgICAgICAgTGlzdC5tYXAgfmY6KGZ1biBwYXRoIC0+IG5hbWUgOjogcGF0aCkgKGV4cGFuZCB0KSlcbiAgICBpblxuICAgICgqIFJldmVyc2luZyBzbyB0aGF0IHRoZSBjb21tYW5kcyBzaG93IHVwIGluIHRoZSBzYW1lIG9yZGVyIGFzIGhlbHAgaXMgb3V0cHV0ICopXG4gICAgTGlzdC5yZXYgKGV4cGFuZCB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuU2V4cGFibGUuTW9kZWwudCA9XG4gICAgfCBCYXNlIG9mIEJhc2VfaW5mby50XG4gICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICAgIHwgRXhlYyBvZiBFeGVjX2luZm8udFxuICAgIHwgTGF6eSBvZiB0IExhenkudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBleHRyYWN0aW9uX3ZhciA9IEVudl92YXIudG9fc3RyaW5nIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuXG4gIG1vZHVsZSBWZXJzaW9uZWQgPSBTdGFibGUuU2V4cGFibGUuVmVyc2lvbmVkXG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9XG4gICAgbGV0IGYgaSBzdXBwb3J0ZWQgXyA9IFNldC5hZGQgc3VwcG9ydGVkIGkgaW5cbiAgICBWZXJzaW9uZWQuVmFyaWFudHMuZm9sZCB+aW5pdDooU2V0LmVtcHR5IChtb2R1bGUgSW50KSkgfnYxOihmIDEpIH52MjooZiAyKSB+djM6KGYgMylcbiAgOztcblxuICBsZXQgb2ZfdmVyc2lvbmVkID0gVmVyc2lvbmVkLnRvX2xhdGVzdFxuICBsZXQgdG9fdmVyc2lvbmVkIHQgfnZlcnNpb25fdG9fdXNlID0gVmVyc2lvbmVkLm9mX2xhdGVzdCB0IH52ZXJzaW9uX3RvX3VzZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiAodW5pdCAtPiB0KVxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBmdWxseV9mb3JjZWQgOiB0IC0+IEZ1bGx5X2ZvcmNlZC50ID0gZnVuY3Rpb25cbiAgfCBCYXNpYyBiIC0+IEJhc2ljIGJcbiAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLm1hcCBnIH5mOmZ1bGx5X2ZvcmNlZClcbiAgfCBFeGVjIChlLCBmKSAtPiBFeGVjIChlLCBmdWxseV9mb3JjZWQgKGYgKCkpKVxuICB8IExhenkgdGh1bmsgLT4gZnVsbHlfZm9yY2VkIChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IHJlYyBnZXRfc3VtbWFyeSA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBiLnN1bW1hcnlcbiAgfCBHcm91cCBnIC0+IGcuc3VtbWFyeVxuICB8IEV4ZWMgKGUsIF8pIC0+IGUuc3VtbWFyeVxuICB8IExhenkgdGh1bmsgLT4gZ2V0X3N1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5sZXQgaGVscF90ZXh0ID0gYFVzZV9Db21tYW5kX3VuaXhcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleV90eXBlID0gS2V5X3R5cGVcblxuICBsZXQgYWJzX3BhdGggPSBTdGFibGUuRXhlY19pbmZvLmFic19wYXRoXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlID0gRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmVcbiAgbGV0IHdvcmRfd3JhcCA9IEZsYWdfaGVscF9kaXNwbGF5LndvcmRfd3JhcF9hbmRfc3RyaXBcbiAgbGV0IGxvb2t1cF9leHBhbmQgPSBsb29rdXBfZXhwYW5kXG5lbmRcbiIsIlxub3BlbiEgQmFzZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbW1hbmRfaW50ZlxubW9kdWxlIFNoYXBlID0gU2hhcGVcblxuKCogaW4gb3JkZXIgdG8gZGVmaW5lIGV4cGVjdCB0ZXN0cywgd2Ugd2FudCB0byByYWlzZSByYXRoZXIgdGhhbiBleGl0IGlmIHRoZSBjb2RlIGlzXG4gICBydW5uaW5nIGluIHRoZSB0ZXN0IHJ1bm5lciBwcm9jZXNzICopXG5sZXQgcmFpc2VfaW5zdGVhZF9vZl9leGl0ID1cbiAgbWF0Y2ggUHB4X2lubGluZV90ZXN0X2xpYi50ZXN0aW5nIHdpdGhcbiAgfCBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXIgLT4gdHJ1ZVxuICB8IGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lciB8IGBOb3RfdGVzdGluZyAtPiBmYWxzZVxuOztcblxuZXhjZXB0aW9uIEV4aXRfY2FsbGVkIG9mIHsgc3RhdHVzIDogaW50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogW3JhaXNlX2luc3RlYWRfb2ZfZXhpdF0tcmVzcGVjdGluZyB3cmFwcGVycyBmb3IgW2V4aXRdIGFuZCBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0ICopXG5pbmNsdWRlIHN0cnVjdFxuICBsZXQgZXhpdCBzdGF0dXMgPVxuICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdCB0aGVuIHJhaXNlIChFeGl0X2NhbGxlZCB7IHN0YXR1cyB9KSBlbHNlIFN0ZGxpYi5leGl0IHN0YXR1c1xuICA7O1xuXG4gIG1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgICBsZXQgaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYgPVxuICAgICAgaWYgcmFpc2VfaW5zdGVhZF9vZl9leGl0XG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IGYgKCkgd2l0aFxuICAgICAgICB8IEV4aXRfY2FsbGVkIHsgc3RhdHVzID0gMCB9IGFzIGV4biAtPiBwcmludF9zIFslc2V4cCAoZXhuIDogZXhuKV0pXG4gICAgICBlbHNlIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZlxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCB1bndvcmRzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHhzXG5sZXQgdW5wYXJhZ3JhcGhzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXFxuXCIgeHNcblxuZXhjZXB0aW9uIEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgb2Ygc3RyaW5nXG5cbmxldCBkaWUgZm10ID0ga3NwcmludGYgKGZ1biBtc2cgKCkgLT4gcmFpc2UgKEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnKSkgZm10XG5sZXQgaGVscF9zY3JlZW5fY29tcGFyZSA9IFNoYXBlLlByaXZhdGUuaGVscF9zY3JlZW5fY29tcGFyZVxuXG4oKiB1bml2ZXJzYWwgbWFwcyBhcmUgdXNlZCB0byBwYXNzIGFyb3VuZCB2YWx1ZXMgYmV0d2VlbiBkaWZmZXJlbnQgYml0c1xuICAgb2YgY29tbWFuZCBsaW5lIHBhcnNpbmcgY29kZSB3aXRob3V0IGhhdmluZyBhIGh1Z2UgaW1wYWN0IG9uIHRoZVxuICAgdHlwZXMgaW52b2x2ZWRcblxuICAgMS4gcGFzc2luZyB2YWx1ZXMgZnJvbSBwYXJzZWQgYXJncyB0byBjb21tYW5kLWxpbmUgYXV0b2NvbXBsZXRlIGZ1bmN0aW9uc1xuICAgMi4gcGFzc2luZyBzcGVjaWFsIHZhbHVlcyB0byBhIGJhc2UgY29tbWFuZHMgdGhhdCByZXF1ZXN0IHRoZW0gaW4gdGhlaXIgc3BlY1xuICogZXhwYW5kZWQgc3ViY29tbWFuZCBwYXRoXG4gKiBhcmdzIHBhc3NlZCB0byB0aGUgYmFzZSBjb21tYW5kXG4gKiBoZWxwIHRleHQgZm9yIHRoZSBiYXNlIGNvbW1hbmRcbiopXG5tb2R1bGUgRW52ID0gc3RydWN0XG4gIGluY2x1ZGUgVW5pdl9tYXBcblxuICBsZXQga2V5X2NyZWF0ZSBuYW1lID0gVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZSBTZXhwbGliLkNvbnYuc2V4cF9vZl9vcGFxdWVcbiAgbGV0IG11bHRpX2FkZCA9IFVuaXZfbWFwLk11bHRpLmFkZFxuICBsZXQgc2V0X3dpdGhfZGVmYXVsdCA9IFVuaXZfbWFwLldpdGhfZGVmYXVsdC5zZXRcbmVuZFxuXG5tb2R1bGUgUGFyc2luZ19vdXRjb21lIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyByZXN1bHQgOiAoJ2EsIFsgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb2YgRXJyb3IudCBdKSBSZXN1bHQudFxuICAgIDsgaGFzX2FyZyA6IGJvb2xcbiAgICB9XG5cbiAgdmFsIHJldHVybl9ub19hcmcgOiAnYSAtPiAnYSB0XG4gIHZhbCByZXR1cm5fd2l0aF9hcmcgOiAnYSAtPiAnYSB0XG4gIHZhbCBlcnJvciA6IGhhc19hcmc6Ym9vbCAtPiBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSAtPiAnYSB0XG4gIHZhbCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyA6ICdhIHQgLT4gJ2EgdCB0XG5cbiAgdmFsIGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgOiAgKCdhLCBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSkgUmVzdWx0LnQgdFxuICAgIC0+ICdhIHRcblxuICBpbmNsdWRlIEFwcGxpY2F0aXZlLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyByZXN1bHQgOiAoJ2EsIFsgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb2YgRXJyb3IudCBdKSBSZXN1bHQudFxuICAgIDsgaGFzX2FyZyA6IGJvb2xcbiAgICB9XG5cbiAgbGV0IGFwcGx5IGYgeCA9XG4gICAgeyByZXN1bHQgPVxuICAgICAgICBSZXN1bHQuY29tYmluZVxuICAgICAgICAgIGYucmVzdWx0XG4gICAgICAgICAgeC5yZXN1bHRcbiAgICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICAgIH5lcnI6KGZ1biAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyXzEpIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBfZXJyXzIpIC0+XG4gICAgICAgICAgICBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnJfMSlcbiAgICA7IGhhc19hcmcgPSBmLmhhc19hcmcgfHwgeC5oYXNfYXJnXG4gICAgfVxuICA7O1xuXG4gIGxldCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyB0ID0geyByZXN1bHQgPSBPayB0OyBoYXNfYXJnID0gdC5oYXNfYXJnIH1cblxuICBsZXQgaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9XG4gICAgeyByZXN1bHQgPSBSZXN1bHQuam9pbiB0LnJlc3VsdDsgaGFzX2FyZyA9IHQuaGFzX2FyZyB9XG4gIDs7XG5cbiAgbGV0IG1hcCB7IHJlc3VsdDsgaGFzX2FyZyB9IH5mID0geyByZXN1bHQgPSBSZXN1bHQubWFwIHJlc3VsdCB+ZjsgaGFzX2FyZyB9XG4gIGxldCByZXR1cm5fbm9fYXJnIHYgPSB7IHJlc3VsdCA9IE9rIHY7IGhhc19hcmcgPSBmYWxzZSB9XG4gIGxldCByZXR1cm5fd2l0aF9hcmcgdiA9IHsgcmVzdWx0ID0gT2sgdjsgaGFzX2FyZyA9IHRydWUgfVxuICBsZXQgZXJyb3Igfmhhc19hcmcgZXJyID0geyByZXN1bHQgPSBFcnJvciBlcnI7IGhhc19hcmcgfVxuXG4gIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuX25vX2FyZ1xuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgQXV0b19jb21wbGV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBzdHJpbmcgbGlzdFxuXG4gIG1vZHVsZSBGb3JfZXNjYXBlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRW52LnQgLT4gcGFydDpzdHJpbmcgbGlzdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29tcGxldGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IEF1dG9fY29tcGxldGUudCBvcHRpb25cblxuICBtb2R1bGUgRm9yX2VzY2FwZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEF1dG9fY29tcGxldGUuRm9yX2VzY2FwZS50IG9wdGlvblxuICBlbmRcblxuICBsZXQgcnVuX2FuZF9leGl0IHQgZW52IH5wYXJ0IDogTm90aGluZy50ID1cbiAgICBPcHRpb24uaXRlciB0IH5mOihmdW4gY29tcGxldGlvbnMgLT5cbiAgICAgIExpc3QuaXRlciB+ZjpwcmludF9lbmRsaW5lIChjb21wbGV0aW9ucyBlbnYgfnBhcnQpKTtcbiAgICBleGl0IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJnX3R5cGUgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGV4dHJhX2RvYyA6ICdhIHQgLT4gc3RyaW5nIG9wdGlvbiBsYXp5X3RcbiAgdmFsIGtleSA6ICdhIHQgLT4gJ2EgRW52Lk11bHRpLktleS50IG9wdGlvblxuICB2YWwgY29tcGxldGUgOiAnYSB0IC0+IENvbXBsZXRlci50XG4gIHZhbCBwYXJzZSA6ICdhIHQgLT4gc3RyaW5nIC0+ICdhIE9yX2Vycm9yLnRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAtPiAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG1hcCA6ID9rZXk6J2EgRW52Lk11bHRpLktleS50IC0+ICdiIHQgLT4gZjooJ2IgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX2xhenkgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYSB0IGxhenlfdCAtPiAnYSB0XG5cbiAgdmFsIG9mX21hcFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+ICdhIE1hcC5NKFN0cmluZykudFxuICAgIC0+ICdhIHRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAobW9kdWxlIEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGNvbW1hX3NlcGFyYXRlZFxuICAgIDogID9hbGxvd19lbXB0eTpib29sXG4gICAgLT4gP2tleTonYSBsaXN0IEVudi5NdWx0aS5LZXkudFxuICAgIC0+ID9zdHJpcF93aGl0ZXNwYWNlOmJvb2xcbiAgICAtPiA/dW5pcXVlX3ZhbHVlczpib29sXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIGxpc3QgdFxuXG4gIG1vZHVsZSBFeHBvcnQgOiBzaWdcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgaW50IDogaW50IHRcbiAgICB2YWwgY2hhciA6IGNoYXIgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgYm9vbCA6IGJvb2wgdFxuICAgIHZhbCBzZXhwIDogU2V4cC50IHRcbiAgICB2YWwgc2V4cF9jb252IDogP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudCAtPiAoU2V4cC50IC0+ICdhKSAtPiAnYSB0XG4gIGVuZFxuXG4gIHZhbCBhdXRvX2NvbXBsZXRlIDogXyB0IC0+IEF1dG9fY29tcGxldGUudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwYXJzZSA6IHN0cmluZyAtPiAnYVxuICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgIDsga2V5IDogJ2EgVW5pdl9tYXAuTXVsdGkuS2V5LnQgb3B0aW9uXG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBwYXJzZSB0IHMgPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IHQucGFyc2UgcylcbiAgbGV0IGNyZWF0ZScgP2NvbXBsZXRlID9rZXkgcGFyc2UgfmV4dHJhX2RvYyA9IHsgcGFyc2U7IGtleTsgY29tcGxldGU7IGV4dHJhX2RvYyB9XG5cbiAgbGV0IGNyZWF0ZSA/Y29tcGxldGUgP2tleSBvZl9zdHJpbmcgPVxuICAgIGNyZWF0ZScgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nIH5leHRyYV9kb2M6KExhenkuZnJvbV92YWwgTm9uZSlcbiAgOztcblxuICBsZXQgbWFwID9rZXkgdCB+ZiA9IHsgdCB3aXRoIGtleTsgcGFyc2UgPSAoZnVuIHMgLT4gZiAodC5wYXJzZSBzKSkgfVxuXG4gIGxldCBvZl9sYXp5ID9rZXkgdCA9XG4gICAgbGV0IHBhcnNlIHN0ciA9IChmb3JjZSB0KS5wYXJzZSBzdHIgaW5cbiAgICBsZXQgY29tcGxldGUgZW52IH5wYXJ0ID1cbiAgICAgIG1hdGNoIChmb3JjZSB0KS5jb21wbGV0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogU2VlIFtydW5fYW5kX2V4aXRdIC0gbm8gY29tcGxldGlvbnMgaXMgZXF1aXZhbGVudCB0byBub3QgaGF2aW5nIGFcbiAgICAgICAgICAgW0NvbXBsZXRlXS4gKilcbiAgICAgICAgW11cbiAgICAgIHwgU29tZSBjb21wbGV0ZSAtPiBjb21wbGV0ZSBlbnYgfnBhcnRcbiAgICBpblxuICAgIGxldCBleHRyYV9kb2MgPSBMYXp5LmJpbmQgdCB+ZjpleHRyYV9kb2MgaW5cbiAgICB7IHBhcnNlOyBjb21wbGV0ZSA9IFNvbWUgY29tcGxldGU7IGtleTsgZXh0cmFfZG9jIH1cbiAgOztcblxuICBsZXQgc3RyaW5nID0gY3JlYXRlIEZuLmlkXG4gIGxldCBpbnQgPSBjcmVhdGUgSW50Lm9mX3N0cmluZ1xuICBsZXQgY2hhciA9IGNyZWF0ZSBDaGFyLm9mX3N0cmluZ1xuICBsZXQgZmxvYXQgPSBjcmVhdGUgRmxvYXQub2Zfc3RyaW5nXG4gIGxldCBzZXhwID0gY3JlYXRlIFBhcnNleHAuU2luZ2xlLnBhcnNlX3N0cmluZ19leG5cblxuICBsZXQgc2V4cF9jb252ID9jb21wbGV0ZSBvZl9zZXhwID1cbiAgICBjcmVhdGUgP2NvbXBsZXRlIChmdW4gcyAtPiBvZl9zZXhwIChQYXJzZXhwLlNpbmdsZS5wYXJzZV9zdHJpbmdfZXhuIHMpKVxuICA7O1xuXG4gIGxldCBhc3NvY2lhdGl2ZVxuICAgICAgICA/KGFjY2VwdF91bmlxdWVfcHJlZml4ZXMgPSB0cnVlKVxuICAgICAgICA/KGxpc3RfdmFsdWVzX2luX2hlbHAgPSB0cnVlKVxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIH5jYXNlX3NlbnNpdGl2ZVxuICAgICAgICBhbGlzdFxuICAgID1cbiAgICBsZXQgb3BlbiBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICB2YWwgaXNfcHJlZml4IDogc3RyaW5nIC0+IHByZWZpeDpzdHJpbmcgLT4gYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgVCA6XG4gICAgICAgICAgICB7IGNtcCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAgICAgICAgIDsgbWFwIDogKHN0cmluZywgJ2EsICdjbXApIE1hcC50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAtPiAnYSB0XG4gICAgZW5kIGluXG4gICAgbGV0IChUIHsgY21wID0gKG1vZHVsZSBTKTsgbWFwIH0pID1cbiAgICAgIGxldCBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5XG4gICAgICAgICAgICAodHlwZSBjbXApXG4gICAgICAgICAgICAobW9kdWxlIFMgOiBTIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgICAgICBhbGlzdFxuICAgICAgICA9XG4gICAgICAgIG1hdGNoIE1hcC5vZl9hbGlzdCAobW9kdWxlIFMpIGFsaXN0IHdpdGhcbiAgICAgICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgICAgICB8IGBEdXBsaWNhdGVfa2V5IChfIDogUy50KSAtPlxuICAgICAgICAgIGxldCBkdXBsaWNhdGVfa2V5cyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrLCAoXyA6ICdhKSkgLT4gaywgaylcbiAgICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdF9tdWx0aSAobW9kdWxlIFMpXG4gICAgICAgICAgICB8PiBNYXAuZmlsdGVyIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIHwgWyBfIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyAtPiB0cnVlKVxuICAgICAgICAgICAgfD4gTWFwLmRhdGFcbiAgICAgICAgICBpblxuICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5vZl9hbGlzdF9leG5cIiAoZHVwbGljYXRlX2tleXMgOiBzdHJpbmcgbGlzdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICBsZXQgbWFrZSBjbXAgPSBUIHsgY21wOyBtYXAgPSBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5IGNtcCBhbGlzdCB9IGluXG4gICAgICBpZiBjYXNlX3NlbnNpdGl2ZSB0aGVuIG1ha2UgKG1vZHVsZSBTdHJpbmcpIGVsc2UgbWFrZSAobW9kdWxlIFN0cmluZy5DYXNlbGVzcylcbiAgICBpblxuICAgIGxldCBjb21wbGV0ZSB1bml2X21hcCB+cGFydDpwcmVmaXggPVxuICAgICAgbWF0Y2ggYXV0b19jb21wbGV0ZSB3aXRoXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgdW5pdl9tYXAgfnBhcnQ6cHJlZml4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChNYXAudG9fYWxpc3QgbWFwKSB+ZjooZnVuIChuYW1lLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIFMuaXNfcHJlZml4IG5hbWUgfnByZWZpeCB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAoKiBCYXNoIGNvbXBsZXRpb24gd2lsbCBub3QgYWNjZXB0IFtGb29dIGFzIGEgY29tcGxldGlvbiBmb3IgW2ZdLiBTbyB3ZSBuZWVkXG4gICAgICAgICAgICAgICB0byBtYXRjaCB0aGUgY2FwaXRhbGl6YXRpb24gZ2l2ZW4uICopXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1Ym8gbmFtZSB+cG9zOihTdHJpbmcubGVuZ3RoIHByZWZpeCkgaW5cbiAgICAgICAgICAgIGxldCBuYW1lID0gcHJlZml4IF4gc3VmZml4IGluXG4gICAgICAgICAgICBTb21lIG5hbWUpXG4gICAgaW5cbiAgICBsZXQgZmluZCBhcmcgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgbWFwIGFyZyB3aXRoXG4gICAgICB8IFNvbWUgXyBhcyBzIC0+IHNcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyB3aXRoXG4gICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgTWFwLnRvX2FsaXN0IG1hcFxuICAgICAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIChuYW1lLCBfKSAtPiBTLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6YXJnKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIChfc2luZ2xldG9uX2tleSwgdikgXSAtPiBTb21lIHZcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPlxuICAgICAgICAgICAgICAoKiBJbiB0aGUgdHdvLW9yLW1vcmUgY2FzZSB3ZSBjb3VsZCBwcm92aWRlIGZpbHRlcmVkIGhlbHAgdGV4dCwgYnV0IGl0J3NcbiAgICAgICAgICAgICAgICAgbW9yZSBnZW5lcmFsbHkgdXNlZnVsIHRvIGxpc3QgYWxsIHRoZSBvcHRpb25zLCB3aGljaCB3ZSBkbyBiZWxvdy4gKilcbiAgICAgICAgICAgICAgTm9uZSkpXG4gICAgaW5cbiAgICBjcmVhdGUnXG4gICAgICB+ZXh0cmFfZG9jOlxuICAgICAgICAobGF6eVxuICAgICAgICAgIChpZiBsaXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChNYXAua2V5cyBtYXApIGluXG4gICAgICAgICAgICAgU29tZSBbJXN0cmluZyBcIihjYW4gYmU6ICV7dmFsdWVzfSlcIl0pXG4gICAgICAgICAgIGVsc2UgTm9uZSkpXG4gICAgICA/a2V5XG4gICAgICB+Y29tcGxldGVcbiAgICAgIChmdW4gYXJnIC0+XG4gICAgICAgICBtYXRjaCBmaW5kIGFyZyB3aXRoXG4gICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHZhbGlkX2FyZ3VtZW50c19leHRyYSA9XG4gICAgICAgICAgICAgaWYgY2FzZV9zZW5zaXRpdmUgdGhlbiBcIlwiIGVsc2UgXCIgKGNhc2UgaW5zZW5zaXRpdmUpXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgXCJ2YWxpZCBhcmd1bWVudHMlczogeyVzfVwiXG4gICAgICAgICAgICAgdmFsaWRfYXJndW1lbnRzX2V4dHJhXG4gICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAoTWFwLmtleXMgbWFwKSlcbiAgICAgICAgICAgICAoKSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIGFsaXN0XG4gICAgPVxuICAgIGFzc29jaWF0aXZlXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICB+Y2FzZV9zZW5zaXRpdmVcbiAgICAgIGFsaXN0XG4gIDs7XG5cbiAgbGV0IG9mX21hcFxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICBtYXBcbiAgICA9XG4gICAgb2ZfYWxpc3RfZXhuXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChNYXAudG9fYWxpc3QgbWFwKVxuICA7O1xuXG4gIGxldCBlbnVtZXJhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIChtb2R1bGUgRSA6IEVudW1lcmFibGVfc3RyaW5nYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIG9mX2FsaXN0X2V4blxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAobGV0JW1hcC5MaXN0IHQgPSBFLmFsbCBpblxuICAgICAgIEUudG9fc3RyaW5nIHQsIHQpXG4gIDs7XG5cbiAgbGV0IGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgKG1vZHVsZSBFIDogRW51bWVyYWJsZV9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIGVudW1lcmF0ZWRcbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBFXG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgWyVzZXhwICh0IDogRS50KV1cbiAgICAgIGVuZClcbiAgOztcblxuICBsZXQgYm9vbCA9IGVudW1lcmF0ZWQgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2UgKG1vZHVsZSBCb29sKVxuXG4gIGxldCBjb21tYV9zZXBhcmF0ZWRcbiAgICAgICAgPyhhbGxvd19lbXB0eSA9IGZhbHNlKVxuICAgICAgICA/a2V5XG4gICAgICAgID8oc3RyaXBfd2hpdGVzcGFjZSA9IGZhbHNlKVxuICAgICAgICA/KHVuaXF1ZV92YWx1ZXMgPSBmYWxzZSlcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgc3RyaXAgPSBpZiBzdHJpcF93aGl0ZXNwYWNlIHRoZW4gZnVuIHN0ciAtPiBTdHJpbmcuc3RyaXAgc3RyIGVsc2UgRm4uaWQgaW5cbiAgICBsZXQgY29tcGxldGUgPVxuICAgICAgT3B0aW9uLm1hcCB0LmNvbXBsZXRlIH5mOihmdW4gY29tcGxldGVfZWx0IGVudiB+cGFydCAtPlxuICAgICAgICBsZXQgcHJlZml4ZXMsIHN1ZmZpeCA9XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHBhcnQgfm9uOicsJyB8PiBMaXN0LnJldiB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBbXSwgcGFydFxuICAgICAgICAgIHwgaGQgOjogdGwgLT4gTGlzdC5yZXYgdGwsIGhkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc19hbGxvd2VkID1cbiAgICAgICAgICBpZiBub3QgdW5pcXVlX3ZhbHVlc1xuICAgICAgICAgIHRoZW4gZnVuIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgc2Vlbl9hbHJlYWR5ID1cbiAgICAgICAgICAgICAgcHJlZml4ZXMgfD4gTGlzdC5tYXAgfmY6c3RyaXAgfD4gU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZnVuIGNob2ljZSAtPiBub3QgKFNldC5tZW0gc2Vlbl9hbHJlYWR5IChzdHJpcCBjaG9pY2UpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoY29tcGxldGVfZWx0IGVudiB+cGFydDpzdWZmaXgpIH5mOihmdW4gY2hvaWNlIC0+XG4gICAgICAgICAgICAgIChub3QgKFN0cmluZy5tZW0gY2hvaWNlICcsJykpICYmIGlzX2FsbG93ZWQgY2hvaWNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICAoKiBJZiB0aGVyZSBpcyBleGFjdGx5IG9uZSBjaG9pY2UgdG8gYXV0by1jb21wbGV0ZSwgYWRkIGEgc2Vjb25kIGNob2ljZSB3aXRoXG4gICAgICAgICAgICAgYSB0cmFpbGluZyBjb21tYSBzbyB0aGF0IGF1dG8tY29tcGxldGlvbiB3aWxsIGdvIHRvIHRoZSBlbmQgYnV0IGJhc2hcbiAgICAgICAgICAgICB3b24ndCBhZGQgYSBzcGFjZS4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjaG9pY2VzLCBvciBhIHNpbmdsZSBjaG9pY2VcbiAgICAgICAgICAgICB0aGF0IG11c3QgYmUgZmluYWwsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgZHVtbXkgb3B0aW9uLiAqKVxuICAgICAgICAgIHwgWyBjaG9pY2UgXSAtPiBbIGNob2ljZTsgY2hvaWNlIF4gXCIsXCIgXVxuICAgICAgICAgIHwgY2hvaWNlcyAtPiBjaG9pY2VzXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIGNob2ljZXMgfmY6KGZ1biBjaG9pY2UgLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChwcmVmaXhlcyBAIFsgY2hvaWNlIF0pKSlcbiAgICBpblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBzdHJpbmcgPSBzdHJpcCBzdHJpbmcgaW5cbiAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYWxsb3dfZW1wdHlcbiAgICAgICAgdGhlbiBbXVxuICAgICAgICBlbHNlIGZhaWx3aXRoIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLmNvbW1hX3NlcGFyYXRlZDogZW1wdHkgbGlzdCBub3QgYWxsb3dlZFwiXG4gICAgICBlbHNlIExpc3QubWFwIChTdHJpbmcuc3BsaXQgc3RyaW5nIH5vbjonLCcpIH5mOihmdW4gc3RyIC0+IHQucGFyc2UgKHN0cmlwIHN0cikpXG4gICAgaW5cbiAgICBjcmVhdGUgP2tleSA/Y29tcGxldGUgb2Zfc3RyaW5nXG4gIDs7XG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIGxldCBzdHJpbmcgPSBzdHJpbmdcbiAgICBsZXQgaW50ID0gaW50XG4gICAgbGV0IGNoYXIgPSBjaGFyXG4gICAgbGV0IGZsb2F0ID0gZmxvYXRcbiAgICBsZXQgYm9vbCA9IGJvb2xcbiAgICBsZXQgc2V4cCA9IHNleHBcbiAgICBsZXQgc2V4cF9jb252ID0gc2V4cF9jb252XG4gIGVuZFxuXG4gIGxldCBhdXRvX2NvbXBsZXRlIHQgPVxuICAgIG1hdGNoIHQuY29tcGxldGUgd2l0aFxuICAgIHwgU29tZSBmIC0+IGZcbiAgICB8IE5vbmUgLT4gZnVuIF8gfnBhcnQ6XyAtPiBbXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnID0gc3RydWN0XG4gIG1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudCA9XG4gICAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgICA7IGF0X21vc3Rfb25jZSA6IGJvb2xcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCB0b19oZWxwX3N0cmluZyA9IFNoYXBlLk51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ1xuXG4gICAgbGV0IHRvX2hlbHBfc3RyaW5nX2RlcHJlY2F0ZWQgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgPSBfIH0gZmxhZ19uYW1lID1cbiAgICAgIHRvX2hlbHBfc3RyaW5nIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9IH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbGV0IGFueSA9IHsgYXRfbGVhc3Rfb25jZSA9IGZhbHNlOyBhdF9tb3N0X29uY2UgPSBmYWxzZSB9XG4gICAgbGV0IGF0X2xlYXN0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSB0cnVlOyBhdF9tb3N0X29uY2UgPSBmYWxzZSB9XG4gICAgbGV0IGF0X21vc3Rfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IGZhbHNlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH1cbiAgICBsZXQgZXhhY3RseV9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gIGVuZFxuXG4gIHR5cGUgYWN0aW9uID1cbiAgICB8IE5vX2FyZyBvZiAoRW52LnQgLT4gRW52LnQpXG4gICAgfCBQcmludF9pbmZvX2FuZF9xdWl0IG9mIChFbnYudCAtPiBzdHJpbmcpXG4gICAgfCBBcmcgb2YgKEVudi50IC0+IHN0cmluZyAtPiBFbnYudCkgKiBDb21wbGV0ZXIudFxuICAgIHwgUmVzdCBvZiAoRW52LnQgLT4gc3RyaW5nIGxpc3QgLT4gRW52LnQpICogQ29tcGxldGVyLkZvcl9lc2NhcGUudFxuXG4gIG1vZHVsZSBJbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIDogc3RyaW5nIGxpc3RcbiAgICAgICgqIFthbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscF0gYXJlIGFsaWFzZXMgdGhhdCBkb24ndCBzaG93IHVwIGluIC1oZWxwIG91dHB1dC5cbiAgICAgICAgIEN1cnJlbnRseSB0aGV5J3JlIG9ubHkgdXNlZCBmb3IgZG91YmxlLWRhc2ggYnVpbHQtaW4gZmxhZ3MgbGlrZSAtLWhlbHAgYW5kXG4gICAgICAgICAtLXZlcnNpb24uICopXG4gICAgICA7IGFjdGlvbiA6IGFjdGlvblxuICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICAgIDsgY2hlY2tfYXZhaWxhYmxlIDogRW52LnQgLT4gdW5pdFxuICAgICAgOyBuYW1lX21hdGNoaW5nIDogWyBgUHJlZml4IHwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQgXVxuICAgICAgfVxuXG4gICAgbGV0IHdyYXBfaWZfb3B0aW9uYWwgdCBmbGFnX25hbWUgPVxuICAgICAgTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nIHQubnVtX29jY3VycmVuY2VzIH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbW9kdWxlIERvYyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBhcmdfZG9jIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICB9XG5cbiAgICAgIGxldCBwYXJzZSB+YWN0aW9uIH5kb2MgPVxuICAgICAgICBsZXQgYXJnX2RvYywgZG9jID1cbiAgICAgICAgICBtYXRjaCAoYWN0aW9uIDogYWN0aW9uKSwgU3RyaW5nLmxzcGxpdDIgZG9jIH5vbjonICcgd2l0aFxuICAgICAgICAgIHwgKE5vX2FyZyBfIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBfKSwgXyAtPiBOb25lLCBkb2NcbiAgICAgICAgICB8IEFyZyBfLCAoTm9uZSB8IFNvbWUgKFwiXCIsIF8pKSAtPiBTb21lIFwiX1wiLCBkb2NcbiAgICAgICAgICB8IFJlc3QgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCAoQXJnIF8gfCBSZXN0IF8pLCBTb21lIChhcmcsIGRvYykgLT4gU29tZSBhcmcsIGRvY1xuICAgICAgICBpblxuICAgICAgICB7IGRvYyA9IFN0cmluZy5zdHJpcCBkb2M7IGFyZ19kb2MgfVxuICAgICAgOztcblxuICAgICAgbGV0IGNvbmNhdCB+bmFtZSB+YXJnX2RvYyA9XG4gICAgICAgIG1hdGNoIGFyZ19kb2Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbmFtZVxuICAgICAgICB8IFNvbWUgYXJnX2RvYyAtPiBuYW1lIF4gXCIgXCIgXiBhcmdfZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgeCA9XG4gICAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHQubnVtX29jY3VycmVuY2VzIHhcbiAgICAgIDs7XG5cbiAgICAgICgqIGZsYWcgaGVscCBpbiB0aGUgZm9ybWF0IG9mIHRoZSBvbGQgY29tbWFuZC4gdXNlZCBmb3IgaW5qZWN0aW9uICopXG4gICAgICBsZXQgaGVscFxuICAgICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICAgIDsgZG9jXG4gICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA9IF9cbiAgICAgICAgICAgICB9IGFzIHQpXG4gICAgICAgID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBkb2MgfnByZWZpeDpcIiBcIlxuICAgICAgICB0aGVuXG4gICAgICAgICAgKG5hbWUsIFN0cmluZy5sc3RyaXAgZG9jKVxuICAgICAgICAgIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biB4IC0+IHgsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICAgICAgKHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYyksIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgKCB3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWU6eCB+YXJnX2RvYylcbiAgICAgICAgICAgICwgc3ByaW50ZiBcInNhbWUgYXMgXFxcIiVzXFxcIlwiIG5hbWUgKSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFsaWduXG4gICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgIH0gYXMgdClcbiAgICAgIDogU2hhcGUuRmxhZ19pbmZvLnRcbiAgICAgID1cbiAgICAgIGxldCB7IERvYy5hcmdfZG9jOyBkb2MgfSA9IERvYy5wYXJzZSB+YWN0aW9uIH5kb2MgaW5cbiAgICAgIGxldCBuYW1lID0gd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lIH5hcmdfZG9jKSBpblxuICAgICAgeyBuYW1lOyBkb2M7IGFsaWFzZXMgfVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIGZsYWdzID1cbiAgICAgIG1hdGNoXG4gICAgICAgIE1hcC5vZl9hbGlzdCAobW9kdWxlIFN0cmluZykgKExpc3QubWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUsIGZsYWcpKVxuICAgICAgd2l0aFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBmbGFnIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG5hbWVkICVzXCIgZmxhZyAoKVxuICAgICAgfCBgT2sgbWFwIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lIDo6IGZsYWcuYWxpYXNlcylcbiAgICAgICAgfD4gTGlzdC5maW5kX2FfZHVwIH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXVxuICAgICAgICB8PiBPcHRpb24uaXRlciB+ZjooZnVuIHggLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3Mgb3IgYWxpYXNlcyBuYW1lZCAlc1wiIHggKCkpO1xuICAgICAgICBtYXBcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB7IGFjdGlvbiA6IGFjdGlvblxuICAgIDsgcmVhZCA6IEVudi50IC0+ICdhIFBhcnNpbmdfb3V0Y29tZS50XG4gICAgOyBudW1fb2NjdXJyZW5jZXMgOiBOdW1fb2NjdXJyZW5jZXMudFxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gc3RyaW5nIC0+ICdhIHN0YXRlXG5cbiAgbGV0IGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBudW1fb2NjdXJyZW5jZXMgPVxuICAgIHsgcmVhZFxuICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgOyBhY3Rpb24gPVxuICAgICAgICAobGV0IHVwZGF0ZSBlbnYgYXJnID1cbiAgICAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYXJnIHdpdGhcbiAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVMuXFxuJXNcIlxuICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgYXJnXG4gICAgICAgICAgICAgICAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcilcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIHwgT2sgYXJnIC0+XG4gICAgICAgICAgICAgbGV0IGVudiA9IHdyaXRlIGVudiBhcmcgaW5cbiAgICAgICAgICAgICAobWF0Y2ggQXJnX3R5cGUua2V5IGFyZ190eXBlIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGVudlxuICAgICAgICAgICAgICB8IFNvbWUga2V5IC0+IEVudi5tdWx0aV9hZGQgZW52IH5rZXkgfmRhdGE6YXJnKVxuICAgICAgICAgaW5cbiAgICAgICAgIEFyZyAodXBkYXRlLCBBcmdfdHlwZS5jb21wbGV0ZSBhcmdfdHlwZSkpXG4gICAgOyBleHRyYV9kb2MgPSBBcmdfdHlwZS5leHRyYV9kb2MgYXJnX3R5cGVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1hcF9mbGFnICh0IDogXyB0KSB+ZiBpbnB1dCA9XG4gICAgbGV0IHsgYWN0aW9uOyByZWFkOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gdCBpbnB1dCBpblxuICAgIHsgYWN0aW9uXG4gICAgOyByZWFkID0gKGZ1biBlbnYgLT4gUGFyc2luZ19vdXRjb21lLm1hcCAocmVhZCBlbnYpIH5mKVxuICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgOyBleHRyYV9kb2NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnID1cbiAgICBFbnYudXBkYXRlIGVudiBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYXJnXG4gICAgICB8IFNvbWUgXyAtPiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKCkpXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkX3ZhbHVlID9kZWZhdWx0IGFyZ190eXBlIG5hbWUgbnVtX29jY3VycmVuY2VzID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBfXSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBkZWZhdWx0IHdpdGhcbiAgICAgICAgIHwgU29tZSB2IC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHZcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuZXJyb3JcbiAgICAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgKHNwcmludGYgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSkpKSlcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgbnVtX29jY3VycmVuY2VzXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkIGFyZ190eXBlIG5hbWUgPSByZXF1aXJlZF92YWx1ZSBhcmdfdHlwZSBuYW1lIE51bV9vY2N1cnJlbmNlcy5leGFjdGx5X29uY2VcblxuICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0IGRlZmF1bHQgYXJnX3R5cGUgbmFtZSA9XG4gICAgcmVxdWlyZWRfdmFsdWUgfmRlZmF1bHQgYXJnX3R5cGUgbmFtZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG9wdGlvbmFsIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IF9dIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5maW5kIGVudiBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIE5vbmVcbiAgICAgIHwgU29tZSBfIGFzIHZhbHVlIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdmFsdWVcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICA7O1xuXG4gIGxldCBub19hcmdfZ2VuZXJhbCB+aXNfcmVxdWlyZWQgfmtleV92YWx1ZSB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHVuaXRdIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5tZW0gZW52IGtleSB3aXRoXG4gICAgICB8IHRydWUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB0cnVlXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgIGlmIGlzX3JlcXVpcmVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBQYXJzaW5nX291dGNvbWUuZXJyb3JcbiAgICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgKHNwcmludGYgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSkpKVxuICAgICAgICBlbHNlIFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52ID1cbiAgICAgIGlmIEVudi5tZW0gZW52IGtleVxuICAgICAgdGhlbiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKClcbiAgICAgIGVsc2UgRW52LnNldCBlbnYgfmtleSB+ZGF0YTooKVxuICAgIGluXG4gICAgbGV0IGFjdGlvbiBlbnYgPVxuICAgICAgbGV0IGVudiA9XG4gICAgICAgIE9wdGlvbi5mb2xkIGtleV92YWx1ZSB+aW5pdDplbnYgfmY6KGZ1biBlbnYgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgICAgRW52LnNldF93aXRoX2RlZmF1bHQgZW52IH5rZXkgfmRhdGE6dmFsdWUpXG4gICAgICBpblxuICAgICAgd3JpdGUgZW52XG4gICAgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IC0+XG4gICAgICAgICAgbGV0IGVudiA9IGFjdGlvbiBlbnYgaW5cbiAgICAgICAgICBmICgpO1xuICAgICAgICAgIGVudlxuICAgIGluXG4gICAgeyByZWFkXG4gICAgOyBhY3Rpb24gPSBOb19hcmcgYWN0aW9uXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPVxuICAgICAgICAoaWYgaXNfcmVxdWlyZWRcbiAgICAgICAgIHRoZW4gTnVtX29jY3VycmVuY2VzLmV4YWN0bHlfb25jZVxuICAgICAgICAgZWxzZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlKVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBub19hcmcgbmFtZSA9XG4gICAgbm9fYXJnX2dlbmVyYWwgbmFtZSB+aXNfcmVxdWlyZWQ6ZmFsc2UgfmtleV92YWx1ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfcmVxdWlyZWQgdiBuYW1lID1cbiAgICBtYXBfZmxhZ1xuICAgICAgKG5vX2FyZ19nZW5lcmFsIH5pc19yZXF1aXJlZDp0cnVlIH5rZXlfdmFsdWU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmUpXG4gICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+IHZcbiAgICAgICAgfCBmYWxzZSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICBuYW1lXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19yZWdpc3RlciB+a2V5IH52YWx1ZSBuYW1lID1cbiAgICBub19hcmdfZ2VuZXJhbFxuICAgICAgbmFtZVxuICAgICAgfmlzX3JlcXVpcmVkOmZhbHNlXG4gICAgICB+a2V5X3ZhbHVlOihTb21lIChrZXksIHZhbHVlKSlcbiAgICAgIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfc29tZSB2YWx1ZSA9XG4gICAgbWFwX2ZsYWcgbm9fYXJnIH5mOihmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IFNvbWUgdmFsdWVcbiAgICAgIHwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBsZXQgbGlzdGVkIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6W10gfm5hbWUgWyVzZXhwX29mOiBfIGxpc3RdIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIExpc3QucmV2IChFbnYuV2l0aF9kZWZhdWx0LmZpbmQgZW52IGtleSkgd2l0aFxuICAgICAgfCBbXSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBbXVxuICAgICAgfCBfIDo6IF8gYXMgdmFsdWVfbGlzdCAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlX2xpc3RcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIGxpc3QgLT4gYXJnIDo6IGxpc3QpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hbnlcbiAgOztcblxuICBsZXQgb25lX29yX21vcmVfYXNfcGFpciBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LldpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OltdIH5uYW1lIFslc2V4cF9vZjogXyBsaXN0XSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBMaXN0LnJldiAoRW52LldpdGhfZGVmYXVsdC5maW5kIGVudiBrZXkpIHdpdGhcbiAgICAgIHwgZmlyc3QgOjogcmVzdCAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIChmaXJzdCwgcmVzdClcbiAgICAgIHwgW10gLT5cbiAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgfmhhc19hcmc6ZmFsc2VcbiAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUpKSlcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIHEgLT4gYXJnIDo6IHEpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgYXJnX3R5cGUgPVxuICAgIG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgfD4gbWFwX2ZsYWcgfmY6KGZ1biAoeCwgeHMpIC0+IHggOjogeHMpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZSB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBhY3Rpb24gZW52IGNtZF9saW5lID0gRW52LnNldCBlbnYgfmtleSB+ZGF0YTpjbWRfbGluZSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBOb25lXG4gICAgICB8IFNvbWUgXyBhcyB2YWx1ZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IHggLT5cbiAgICAgICAgICBmIHg7XG4gICAgICAgICAgYWN0aW9uIGVudiB4XG4gICAgaW5cbiAgICB7IGFjdGlvbiA9IFJlc3QgKGFjdGlvbiwgY29tcGxldGUpXG4gICAgOyByZWFkXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19hYm9ydCB+ZXhpdCBfbmFtZSA9XG4gICAgeyBhY3Rpb24gPSBOb19hcmcgKGZ1biBfIC0+IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoZXhpdCAoKSkpXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyByZWFkID1cbiAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICgqIFdlIGtub3cgdGhhdCB0aGUgZmxhZyB3YXNuJ3QgcGFzc2VkIGhlcmUgYmVjYXVzZSBpZiBpdCB3YXMgcGFzc2VkXG4gICAgICAgICAgICAgIHRoZW4gdGhlIFthY3Rpb25dIHdvdWxkIGhhdmUgY2FsbGVkIFtleGl0XS4gKilcbiAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgKCkpXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGVzY2FwZSBuYW1lID0gZXNjYXBlX2dlbmVyYWwgfmNvbXBsZXRlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazpOb25lIG5hbWVcblxuICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIH5jb21wbGV0ZSBuYW1lID1cbiAgICBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGU6KFNvbWUgY29tcGxldGUpIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSBuYW1lXG4gIDs7XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fYXJnIH5ob29rIG5hbWUgPVxuICAgICAgbm9fYXJnX2dlbmVyYWwgfmlzX3JlcXVpcmVkOmZhbHNlIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaykgfmtleV92YWx1ZTpOb25lIG5hbWVcbiAgICA7O1xuXG4gICAgbGV0IGVzY2FwZSB+aG9vayA9IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaylcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBhdGggOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgY3JlYXRlIDogcGF0aF90b19leGU6c3RyaW5nIC0+IHRcbiAgdmFsIG9mX3BhcnRzIDogc3RyaW5nIGxpc3QgLT4gdFxuICB2YWwgYXBwZW5kIDogdCAtPiBzdWJjb21tYW5kOnN0cmluZyAtPiB0XG4gIHZhbCByZXBsYWNlX2ZpcnN0IDogdCAtPiBmcm9tOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHRcbiAgdmFsIHBhcnRzIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgcGFydHNfZXhlX2Jhc2VuYW1lIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19kb3RzIDogdCAtPiBzdHJpbmdcbiAgdmFsIHBvcF9oZWxwIDogdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBlbXB0eSA9IFtdXG4gIGxldCBjcmVhdGUgfnBhdGhfdG9fZXhlID0gWyBwYXRoX3RvX2V4ZSBdXG4gIGxldCBvZl9wYXJ0cyBwYXJ0cyA9IExpc3QucmV2IHBhcnRzXG4gIGxldCBhcHBlbmQgdCB+c3ViY29tbWFuZCA9IHN1YmNvbW1hbmQgOjogdFxuICBsZXQgcGFydHMgPSBMaXN0LnJldlxuXG4gIGxldCBwYXJ0c19leGVfYmFzZW5hbWUgdCA9XG4gICAgbWF0Y2ggTGlzdC5yZXYgdCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGQgOjogdGwgLT4gRmlsZW5hbWVfYmFzZS5iYXNlbmFtZSBoZCA6OiB0bFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9IHVud29yZHMgKHBhcnRzX2V4ZV9iYXNlbmFtZSB0KVxuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGhcblxuICBsZXQgcmVwbGFjZV9maXJzdCB0IH5mcm9tIH50b18gPVxuICAgIGxldCByZWMgYXV4IHBhcnRzIH5hY2MgfmZyb20gfnRvXyA9XG4gICAgICBtYXRjaCBwYXJ0cyB3aXRoXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBTdHJpbmcuKCA9ICkgaGQgZnJvbVxuICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCB0bCAodG9fIDo6IGFjYylcbiAgICAgICAgZWxzZSBhdXggdGwgfmFjYzooaGQgOjogYWNjKSB+ZnJvbSB+dG9fXG4gICAgaW5cbiAgICBhdXggKHBhcnRzIHQpIH5hY2M6W10gfmZyb20gfnRvX1xuICA7O1xuXG4gIGxldCBwb3BfaGVscCA9IGZ1bmN0aW9uXG4gICAgfCBcImhlbHBcIiA6OiB0IC0+IHRcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19kb3RzIHQgPVxuICAgIChtYXRjaCB0IHdpdGhcbiAgICAgfCBbXSAtPiBbXVxuICAgICB8IGxhc3QgOjogaW5pdCAtPiBsYXN0IDo6IExpc3QubWFwIGluaXQgfmY6KEZuLmNvbnN0IFwiLlwiKSlcbiAgICB8PiB0b19zdHJpbmdcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5lbmRcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyIDogc2lnXG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgb25lIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgbWFueSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZV9pZGVtcG90ZW50IDogdCAtPiB0XG4gICAgdmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0XG4gICAgdmFsIGFkX2hvYyA6IHVzYWdlOnN0cmluZyAtPiB0XG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBuYW1lcyA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuXG4gICAgbGV0IGludmFyaWFudCA9IFNoYXBlLkFub25zLkdyYW1tYXIuaW52YXJpYW50XG4gICAgbGV0IHVzYWdlID0gU2hhcGUuQW5vbnMuR3JhbW1hci51c2FnZVxuXG4gICAgbGV0IHJlYyBpc19maXhlZF9hcml0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gdHJ1ZVxuICAgICAgfCBPbmUgXyAtPiB0cnVlXG4gICAgICB8IE1hbnkgXyAtPiBmYWxzZVxuICAgICAgfCBNYXliZSBfIC0+IGZhbHNlXG4gICAgICB8IEFkX2hvYyBfIC0+IGZhbHNlXG4gICAgICB8IENvbmNhdCB0cyAtPlxuICAgICAgICAobWF0Y2ggTGlzdC5yZXYgdHMgd2l0aFxuICAgICAgICAgfCBbXSAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgIHwgbGFzdCA6OiBvdGhlcnMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgb3RoZXJzIH5mOmlzX2ZpeGVkX2FyaXR5KTtcbiAgICAgICAgICAgaXNfZml4ZWRfYXJpdHkgbGFzdClcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBuYW1lcyA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gW11cbiAgICAgIHwgT25lIHMgLT4gWyBzIF1cbiAgICAgIHwgTWFueSB0IC0+IG5hbWVzIHRcbiAgICAgIHwgTWF5YmUgdCAtPiBuYW1lcyB0XG4gICAgICB8IEFkX2hvYyBzIC0+IFsgcyBdXG4gICAgICB8IENvbmNhdCB0cyAtPiBMaXN0LmNvbmNhdF9tYXAgdHMgfmY6bmFtZXNcbiAgICA7O1xuXG4gICAgbGV0IHplcm8gPSBaZXJvXG4gICAgbGV0IG9uZSBuYW1lID0gT25lIG5hbWVcblxuICAgIGxldCBtYW55ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT5cbiAgICAgICAgaWYgbm90IChpc19maXhlZF9hcml0eSB0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICBcIml0ZXJhdGlvbiBvZiB2YXJpYWJsZS1sZW5ndGggZ3JhbW1hcnMgc3VjaCBhcyAlcyBpcyBkaXNhbGxvd2VkXCJcbiAgICAgICAgICAgICh1c2FnZSB0KVxuICAgICAgICAgICAgKCk7XG4gICAgICAgIE1hbnkgdFxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmUgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFplcm8gKCogc3RyYW5nZSwgYnV0IG5vdCBub24tc2Vuc2UgKilcbiAgICAgIHwgdCAtPiBNYXliZSB0XG4gICAgOztcblxuICAgIGxldCBtYXliZV9pZGVtcG90ZW50ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IE1heWJlIHQgLT4gTWF5YmUgdFxuICAgICAgfCBNYW55IHQgLT4gTWFueSB0XG4gICAgICB8IHQgLT4gTWF5YmUgdFxuICAgIDs7XG5cbiAgICBsZXQgY29uY2F0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gWmVyb1xuICAgICAgfCBjYXIgOjogY2RyIC0+XG4gICAgICAgIGxldCBjYXIsIGNkciA9XG4gICAgICAgICAgTGlzdC5mb2xkIGNkciB+aW5pdDooY2FyLCBbXSkgfmY6KGZ1biAodDEsIGFjYykgdDIgLT5cbiAgICAgICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgICAgICB8IFplcm8sIHQgfCB0LCBaZXJvIC0+IHQsIGFjY1xuICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2ZpeGVkX2FyaXR5IHQxXG4gICAgICAgICAgICAgIHRoZW4gdDIsIHQxIDo6IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgICAgICBcInRoZSBncmFtbWFyICVzIGZvciBhbm9ueW1vdXMgYXJndW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSB0aGVyZSBcXFxuICAgICAgICAgICAgICAgICAgIGlzIHRoZSBwb3NzaWJpbGl0eSBmb3IgYXJndW1lbnRzICglcykgZm9sbG93aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgYXJndW1lbnRzICglcykuICBTdXBwb3J0aW5nIHN1Y2ggZ3JhbW1hcnMgd291bGQgY29tcGxpY2F0ZSB0aGUgXFxcbiAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBzaWduaWZpY2FudGx5LlwiXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgKENvbmNhdCAoTGlzdC5yZXYgKHQyIDo6IHQxIDo6IGFjYykpKSlcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MilcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MSlcbiAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggY2RyIHdpdGhcbiAgICAgICAgIHwgW10gLT4gY2FyXG4gICAgICAgICB8IF8gOjogXyAtPiBDb25jYXQgKExpc3QucmV2IChjYXIgOjogY2RyKSkpXG4gICAgOztcblxuICAgIGxldCBhZF9ob2MgfnVzYWdlID0gQWRfaG9jIHVzYWdlXG4gIGVuZFxuXG4gIG1vZHVsZSBQYXJzZXIgOiBzaWdcbiAgICBtb2R1bGUgQmFzaWMgOiBzaWdcbiAgICAgIHR5cGUgKydhIHRcblxuICAgICAgbW9kdWxlIEZvcl9vcGVuaW5nIDogc2lnXG4gICAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICAgIHZhbCAoIDwqPiApIDogKCdhIC0+ICdiKSB0IC0+ICdhIHQgLT4gJ2IgdFxuICAgICAgICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICBlbmRcblxuICAgICAgdmFsIGZyb21fZW52IDogKEVudi50IC0+ICdhKSAtPiAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICsnYSB0ID0gJ2EgUGFyc2luZ19vdXRjb21lLnQgQmFzaWMudFxuXG4gICAgdmFsIG9uZSA6IG5hbWU6c3RyaW5nIC0+ICdhIEFyZ190eXBlLnQgLT4gJ2EgdFxuICAgIHZhbCBtYXliZSA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB2YWwgc2VxdWVuY2UgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHZhbCBzdG9wX3BhcnNpbmcgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmluYWxfdmFsdWUgOiAnYSBCYXNpYy50IC0+IEVudi50IC0+ICdhXG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7ICgqIElmIGVtYWNzIGhpZ2hsaWdodHMgW3BhcnNlcl0gYXMgaWYgaXQgd2VyZSBhIGtleXdvcmQsIHRoYXQncyBvbmx5IGJlY2F1c2VcbiAgICAgICAgICAgICBbcGFyc2VyXSB3YXMgYSBrZXl3b3JkIGluIGNhbWxwNC4gW3BhcnNlcl0gaXMgYSByZWd1bGFyIG5hbWUgaW4gT0NhbWwuICopXG4gICAgICAgICAgcGFyc2VyIDogJ2EgQmFzaWMudFxuICAgICAgICA7IHBhcnNlX2ZsYWdzIDogYm9vbFxuICAgICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB2YWwgY29uc3VtZSA6ICdhIEJhc2ljLnQgLT4gc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgQ29uc3VtZV9yZXN1bHQudFxuICAgIHZhbCBjb21wbGV0ZSA6ICdhIEJhc2ljLnQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gTm90aGluZy50XG5cbiAgICBtb2R1bGUgRm9yX29wZW5pbmcgOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgKCA8Kj4gKSA6ICgnYSAtPiAnYikgdCAtPiAnYSB0IC0+ICdiIHRcbiAgICAgIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICBlbmRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEJhc2ljID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IERvbmUgb2YgKEVudi50IC0+ICdhKVxuICAgICAgICB8IE1vcmUgb2YgJ2EgbW9yZVxuICAgICAgICAoKiBBIFtUZXN0XSB3aWxsIChnZW5lcmFsbHkpIHJldHVybiBhIFtEb25lIF9dIHZhbHVlIGlmIHRoZXJlIGlzIG5vIG1vcmUgaW5wdXQgYW5kXG4gICAgICAgICAgIGEgW01vcmVdIHBhcnNlciB0byB1c2UgaWYgdGhlcmUgaXMgYW55IG1vcmUgaW5wdXQuICopXG4gICAgICAgIHwgVGVzdCBvZiAobW9yZTpib29sIC0+ICdhIHQpXG4gICAgICAgICgqIElmIHdlJ3JlIG9ubHkgY29tcGxldGluZywgd2UgY2FuJ3QgcHVsbCB2YWx1ZXMgb3V0LCBidXQgd2UgY2FuIHN0aWxsIHN0ZXAgdGhyb3VnaFxuICAgICAgICAgICBbdF1zICh3aGljaCBtYXkgaGF2ZSBjb21wbGV0aW9uIHNldCB1cCkuICopXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBvZiBwYWNrZWQgbGlzdFxuICAgICAgICB8IFN0b3BfcGFyc2luZyBvZiAnYSB0XG5cbiAgICAgIGFuZCAnYSBtb3JlID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgcGFyc2UgOiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiAnYSBwYXJzZV9yZXN1bHRcbiAgICAgICAgOyBjb21wbGV0ZSA6IENvbXBsZXRlci50XG4gICAgICAgIH1cblxuICAgICAgYW5kIHBhY2tlZCA9IFBhY2tlZCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgICAgIGFuZCAnYSBwYXJzZV9yZXN1bHQgPVxuICAgICAgICB7IHBhcnNlciA6ICdhIHRcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgcGFyc2VfbW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9IH5mID1cbiAgICAgICAgbGV0IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gPVxuICAgICAgICAgIGxldCB7IHBhcnNlcjsgdXBkYXRlX2VudiB9ID0gcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiBpblxuICAgICAgICAgIHsgcGFyc2VyID0gZiBwYXJzZXI7IHVwZGF0ZV9lbnYgfVxuICAgICAgICBpblxuICAgICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYWNrX2Zvcl9jb21wbGV0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBEb25lIF8gLT4gW10gKCogd29uJ3QgY29tcGxldGUgb3IgY29uc3VtZSBhbnl0aGluZyAqKVxuICAgICAgICB8IChNb3JlIF8gfCBUZXN0IF8gfCBTdG9wX3BhcnNpbmcgXykgYXMgeCAtPiBbIFBhY2tlZCB4IF1cbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBzIC0+IHBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjICggPCo+ICkgdF9sZWZ0IHRfcmlnaHQgPVxuICAgICAgICBtYXRjaCB0X2xlZnQsIHRfcmlnaHQgd2l0aFxuICAgICAgICAoKiBbRG9uZV0gKilcbiAgICAgICAgfCBEb25lIGYsIERvbmUgeCAtPlxuICAgICAgICAgIERvbmVcbiAgICAgICAgICAgIChmdW4gZW52IC0+XG4gICAgICAgICAgICAgICBsZXQgZl9vdXRjb21lID0gZiBlbnYgaW5cbiAgICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4IGVudiBpblxuICAgICAgICAgICAgICAgZl9vdXRjb21lIHhfb3V0Y29tZSlcbiAgICAgICAgKCogbmV4dCBzdGVwIFtNb3JlXSAqKVxuICAgICAgICB8IE1vcmUgbW9yZSwgXyAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0bCAtPiB0bCA8Kj4gdF9yaWdodClcbiAgICAgICAgfCBEb25lIF8sIE1vcmUgbW9yZSAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0ciAtPiB0X2xlZnQgPCo+IHRyKVxuICAgICAgICAoKiBuZXh0IHN0ZXAgW09ubHlfZm9yX2NvbXBsZXRpb25dICopXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfLCBfIHwgRG9uZSBfLCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgICBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHRfbGVmdCBAIHBhY2tfZm9yX2NvbXBsZXRpb24gdF9yaWdodClcbiAgICAgICAgKCogbmV4dCBzdGVwIFtTdG9wX3BhcnNpbmddICopXG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHRsLCB0ciB8IChEb25lIF8gYXMgdGwpLCBTdG9wX3BhcnNpbmcgdHIgLT4gU3RvcF9wYXJzaW5nICh0bCA8Kj4gdHIpXG4gICAgICAgICgqIG5leHQgc3RlcCBbVGVzdF0gKilcbiAgICAgICAgfCBUZXN0IHRlc3QsIF8gLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRlc3Qgfm1vcmUgPCo+IHRfcmlnaHQpXG4gICAgICAgIHwgRG9uZSBfLCBUZXN0IHRlc3QgLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRfbGVmdCA8Kj4gdGVzdCB+bW9yZSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IERvbmUgKGZ1biBfIC0+IGEpXG4gICAgICBsZXQgKCA+PnwgKSB0IGYgPSByZXR1cm4gZiA8Kj4gdFxuICAgICAgbGV0IGZyb21fZW52IGYgPSBEb25lIChmdW4gZW52IC0+IGYgZW52KVxuXG4gICAgICBtb2R1bGUgRm9yX29wZW5pbmcgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG9wZW4gQmFzaWNcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFBhcnNpbmdfb3V0Y29tZS50IEJhc2ljLnRcblxuICAgIGxldCAoID4+fCApIHQgZiA9IHQgPj58IFBhcnNpbmdfb3V0Y29tZS5tYXAgfmZcbiAgICBsZXQgKCA8Kj4gKSB0X2xlZnQgdF9yaWdodCA9IHJldHVybiBQYXJzaW5nX291dGNvbWUuKCA8Kj4gKSA8Kj4gdF9sZWZ0IDwqPiB0X3JpZ2h0XG4gICAgbGV0IHJldHVybiBhID0gcmV0dXJuIChQYXJzaW5nX291dGNvbWUucmV0dXJuIGEpXG4gICAgbGV0IHJldHVybl93aXRoX2FyZyBhID0gRG9uZSAoZnVuIF8gLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyBhKVxuICAgIGxldCBzdG9wX3BhcnNpbmcgdCA9IFN0b3BfcGFyc2luZyB0XG5cbiAgICBsZXQgb25lX21vcmUgfm5hbWUgYXJnX3R5cGUgPVxuICAgICAgbGV0IHBhcnNlIGFub24gfmZvcl9jb21wbGV0aW9uID1cbiAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYW5vbiB3aXRoXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICBpZiBmb3JfY29tcGxldGlvblxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIHdlIGRvbid0ICpyZWFsbHkqIGNhcmUgYWJvdXQgdGhpcyB2YWx1ZSwgc28ganVzdCBwdXQgaW4gYSBkdW1teSB2YWx1ZSBzb1xuICAgICAgICAgICAgICAgY29tcGxldGlvbiBjYW4gY29udGludWUgKilcbiAgICAgICAgICAgIHsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiBbXTsgdXBkYXRlX2VudiA9IEZuLmlkIH1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBkaWUgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVNcXG4lc1wiIG5hbWUgYW5vbiAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcikgKClcbiAgICAgICAgfCBPayB2IC0+XG4gICAgICAgICAgeyBwYXJzZXIgPSByZXR1cm5fd2l0aF9hcmcgdlxuICAgICAgICAgIDsgdXBkYXRlX2VudiA9XG4gICAgICAgICAgICAgIChmdW4gZW52IC0+XG4gICAgICAgICAgICAgICAgIE9wdGlvbi5mb2xkIChBcmdfdHlwZS5rZXkgYXJnX3R5cGUpIH5pbml0OmVudiB+ZjooZnVuIGVudiBrZXkgLT5cbiAgICAgICAgICAgICAgICAgICBFbnYubXVsdGlfYWRkIGVudiB+a2V5IH5kYXRhOnYpKVxuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlID0gQXJnX3R5cGUuY29tcGxldGUgYXJnX3R5cGUgfVxuICAgIDs7XG5cbiAgICBsZXQgb25lIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIFRlc3RcbiAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICBpZiBtb3JlXG4gICAgICAgICAgIHRoZW4gb25lX21vcmUgfm5hbWUgYXJnX3R5cGVcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIERvbmVcbiAgICAgICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyBhbm9ueW1vdXMgYXJndW1lbnQ6ICVzXCIgbmFtZSkpKSkpXG4gICAgOztcblxuICAgIGxldCBtYXliZSB0ID1cbiAgICAgIFRlc3RcbiAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICBpZiBtb3JlIHRoZW4gcmV0dXJuX3dpdGhfYXJnIChmdW4gYSAtPiBTb21lIGEpIDwqPiB0IGVsc2UgcmV0dXJuIE5vbmUpXG4gICAgOztcblxuICAgIGxldCBzZXF1ZW5jZSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCA9XG4gICAgICAgIFRlc3RcbiAgICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgICAgaWYgbW9yZSB0aGVuIHJldHVybiAoZnVuIHYgYWNjIC0+IHYgOjogYWNjKSA8Kj4gdCA8Kj4gbG9vcCBlbHNlIHJldHVybiBbXSlcbiAgICAgIGluXG4gICAgICBsb29wXG4gICAgOztcblxuICAgIGxldCByZWMgZmluYWxfdmFsdWUgdCBlbnYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgYSAtPiBhIGVudlxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiBmaW5hbF92YWx1ZSB0IGVudlxuICAgICAgfCBUZXN0IGYgLT4gZmluYWxfdmFsdWUgKGYgfm1vcmU6ZmFsc2UpIGVudlxuICAgICAgfCBNb3JlIF8gLT5cbiAgICAgICAgKCogdGhpcyBkb2Vzbid0IGhhcHBlbiBiZWNhdXNlIGFsbCBvY2N1cnJlbmNlcyBvZiBbTW9yZV0gYXJlIHByb3RlY3RlZFxuICAgICAgICAgICBieSBbVGVzdF0sIHdoaWNoIG1lYW5zIHRoZXJlIHdpbGwgYWx3YXlzIGJlIGFuIGV4dHJhIGFyZ3VtZW50IHRvIGdpdmVcbiAgICAgICAgICAgYmVmb3JlIHJlcXVlc3RpbmcgdGhlIGZpbmFsIHZhbHVlICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgZmFpbHdpdGggXCJCVUc6IGFza2VkIGZvciBmaW5hbCB2YWx1ZSB3aGVuIGRvaW5nIGNvbXBsZXRpb25cIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7IHBhcnNlciA6ICdhIEJhc2ljLnRcbiAgICAgICAgOyBwYXJzZV9mbGFncyA6IGJvb2xcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgbGV0IHJlYyBjb25zdW1lXG4gICAgICA6IHR5cGUgYS4gYSBCYXNpYy50IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+IGEgQ29uc3VtZV9yZXN1bHQudFxuICAgICAgPVxuICAgICAgZnVuIHQgYXJnIH5mb3JfY29tcGxldGlvbiAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgXyAtPiBkaWUgXCJ0b28gbWFueSBhbm9ueW1vdXMgYXJndW1lbnRzXCIgKClcbiAgICAgIHwgVGVzdCBmIC0+IGNvbnN1bWUgKGYgfm1vcmU6dHJ1ZSkgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgfCBNb3JlIHsgcGFyc2U7IF8gfSAtPlxuICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgeyBwYXJzZXI7IHBhcnNlX2ZsYWdzID0gdHJ1ZTsgdXBkYXRlX2VudiB9XG4gICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IHsgKGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uKSB3aXRoIHBhcnNlX2ZsYWdzID0gZmFsc2UgfVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBhY2tlZCAtPlxuICAgICAgICAobWF0Y2ggcGFja2VkIHdpdGhcbiAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgeyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIFtdOyBwYXJzZV9mbGFncyA9IHRydWU7IHVwZGF0ZV9lbnYgPSBGbi5pZCB9XG4gICAgICAgICB8IFBhY2tlZCB0IDo6IHJlc3QgLT5cbiAgICAgICAgICAgbGV0ICh7IHVwZGF0ZV9lbnY7IHBhcnNlX2ZsYWdzOyBwYXJzZXIgfSA6IF8gQ29uc3VtZV9yZXN1bHQudCkgPVxuICAgICAgICAgICAgIGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHsgdXBkYXRlX2VudlxuICAgICAgICAgICA7IHBhcnNlX2ZsYWdzXG4gICAgICAgICAgIDsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiBwYXJzZXIgQCByZXN0KVxuICAgICAgICAgICB9KVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbXBsZXRlIDogdHlwZSBhLiBhIEJhc2ljLnQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gTm90aGluZy50ID1cbiAgICAgIGZ1biB0IGVudiB+cGFydCAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBEb25lIF8gLT4gZXhpdCAwXG4gICAgICAgIHwgVGVzdCBmIC0+IGNvbXBsZXRlIChmIH5tb3JlOnRydWUpIGVudiB+cGFydFxuICAgICAgICB8IE1vcmUgeyBjb21wbGV0ZTsgXyB9IC0+IENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcGxldGUgZW52IH5wYXJ0XG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gY29tcGxldGUgdCBlbnYgfnBhcnRcbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHQgLT5cbiAgICAgICAgICAobWF0Y2ggdCB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gZXhpdCAwXG4gICAgICAgICAgIHwgUGFja2VkIHQgOjogXyAtPiBjb21wbGV0ZSB0IGVudiB+cGFydClcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIFBhcnNlci5Gb3Jfb3BlbmluZ1xuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwIDogJ2EgUGFyc2VyLnRcbiAgICA7IGdyYW1tYXIgOiBHcmFtbWFyLnRcbiAgICB9XG5cbiAgbGV0IHQyIHQxIHQyID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiAtPiBhMSwgYTIpIDwqPiB0MS5wIDwqPiB0Mi5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHQzIHQxIHQyIHQzID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiBhMyAtPiBhMSwgYTIsIGEzKSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0NCB0MSB0MiB0MyB0NCA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgYTQgLT4gYTEsIGEyLCBhMywgYTQpIDwqPiB0MS5wIDwqPiB0Mi5wIDwqPiB0My5wIDwqPiB0NC5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyOyB0My5ncmFtbWFyOyB0NC5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZSBzdHIgPVxuICAgICgqIFZlcmlmeSB0aGUgc3RyaW5nIGlzIG5vdCBlbXB0eSBvciBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2UgKilcbiAgICBsZXQgc3RybGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBzdHJsZW4gPSAwIHRoZW4gZmFpbHdpdGggXCJFbXB0eSBhbm9ueW1vdXMgYXJndW1lbnQgbmFtZSBwcm92aWRlZFwiO1xuICAgIGlmIFN0cmluZy4oIDw+ICkgKFN0cmluZy5zdHJpcCBzdHIpIHN0clxuICAgIHRoZW4gZmFpbHdpdGhmIFwiYXJndW1lbnQgbmFtZSAlUyBoYXMgc3Vycm91bmRpbmcgd2hpdGVzcGFjZVwiIHN0ciAoKTtcbiAgICAoKiBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIHNwZWNpYWwgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgZG9uJ3QgZG8gYW55dGhpbmcgKilcbiAgICBsZXQgaGFzX3NwZWNpYWxfY2hhcnMgPVxuICAgICAgbGV0IHNwZWNpYWxfY2hhcnMgPVxuICAgICAgICBTZXQub2ZfbGlzdCAobW9kdWxlIENoYXIpIFsgJzwnOyAnPic7ICdbJzsgJ10nOyAnKCc7ICcpJzsgJ3snOyAnfScgXVxuICAgICAgaW5cbiAgICAgIFN0cmluZy5leGlzdHMgc3RyIH5mOihTZXQubWVtIHNwZWNpYWxfY2hhcnMpXG4gICAgaW5cbiAgICBpZiBoYXNfc3BlY2lhbF9jaGFycyB0aGVuIHN0ciBlbHNlIFN0cmluZy51cHBlcmNhc2Ugc3RyXG4gIDs7XG5cbiAgbGV0ICggJTogKSBuYW1lIGFyZ190eXBlID1cbiAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgeyBwID0gUGFyc2VyLm9uZSB+bmFtZSBhcmdfdHlwZTsgZ3JhbW1hciA9IEdyYW1tYXIub25lIG5hbWUgfVxuICA7O1xuXG4gIGxldCBtYXBfYW5vbnMgdCB+ZiA9IHsgcCA9IHQucCA+PnwgZjsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG4gIGxldCBtYXliZSB0ID0geyBwID0gUGFyc2VyLm1heWJlIHQucDsgZ3JhbW1hciA9IEdyYW1tYXIubWF5YmUgdC5ncmFtbWFyIH1cblxuICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0IGRlZmF1bHQgdCA9XG4gICAgbGV0IHQgPSBtYXliZSB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biB2IC0+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdCB2KSB9XG4gIDs7XG5cbiAgbGV0IHNlcXVlbmNlIHQgPSB7IHAgPSBQYXJzZXIuc2VxdWVuY2UgdC5wOyBncmFtbWFyID0gR3JhbW1hci5tYW55IHQuZ3JhbW1hciB9XG4gIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0ID0gdDIgdCAoc2VxdWVuY2UgdClcblxuICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgdCA9XG4gICAgbGV0IHQgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biAoeCwgeHMpIC0+IHggOjogeHMpIH1cbiAgOztcblxuICBsZXQgZXNjYXBlIHQgPSB7IHAgPSBQYXJzZXIuc3RvcF9wYXJzaW5nIHQucDsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgYWRfaG9jIH51c2FnZV9hcmcgPVxuICAgICAgeyBwID1cbiAgICAgICAgICBQYXJzZXIuc2VxdWVuY2VcbiAgICAgICAgICAgIChQYXJzZXIub25lIH5uYW1lOlwiV0lMTCBORVZFUiBCRSBQUklOVEVEXCIgQXJnX3R5cGUuRXhwb3J0LnN0cmluZylcbiAgICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuYWRfaG9jIH51c2FnZTp1c2FnZV9hcmdcbiAgICAgIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ21kbGluZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mIHN0cmluZyAqIHRcbiAgICB8IENvbXBsZXRlIG9mIHN0cmluZ1xuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBvZl9saXN0IGFyZ3MgPSBMaXN0LmZvbGRfcmlnaHQgYXJncyB+aW5pdDpOaWwgfmY6KGZ1biBhcmcgYXJncyAtPiBDb25zIChhcmcsIGFyZ3MpKVxuXG4gIGxldCByZWMgdG9fbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHgsIHhzKSAtPiB4IDo6IHRvX2xpc3QgeHNcbiAgICB8IENvbXBsZXRlIHggLT4gWyB4IF1cbiAgOztcblxuICBsZXQgcmVjIGVuZHNfaW5fY29tcGxldGUgPSBmdW5jdGlvblxuICAgIHwgQ29tcGxldGUgXyAtPiB0cnVlXG4gICAgfCBOaWwgLT4gZmFsc2VcbiAgICB8IENvbnMgKF8sIGFyZ3MpIC0+IGVuZHNfaW5fY29tcGxldGUgYXJnc1xuICA7O1xuXG4gIGxldCBleHRlbmQgdCB+ZXh0ZW5kIH5wYXRoID1cbiAgICBpZiBlbmRzX2luX2NvbXBsZXRlIHRcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBwYXRoX2xpc3QgPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6W10gKExpc3QudGwgKFBhdGgucGFydHMgcGF0aCkpIGluXG4gICAgICBvZl9saXN0ICh0b19saXN0IHQgQCBleHRlbmQgcGF0aF9saXN0KSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBTaGFwZS5Qcml2YXRlLktleV90eXBlXG5cbmxldCBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUgZmxhZ19vcl9zdWJjb21tYW5kID1cbiAgaWYgU3RyaW5nLmV4aXN0cyBmbGFnX29yX3N1YmNvbW1hbmQgfmY6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnXycpXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiJXMgJXMgY29udGFpbnMgYW4gdW5kZXJzY29yZS4gVXNlIGEgZGFzaCBpbnN0ZWFkLlwiXG4gICAgICAoS2V5X3R5cGUudG9fc3RyaW5nIGtleV90eXBlKVxuICAgICAgZmxhZ19vcl9zdWJjb21tYW5kXG4gICAgICAoKVxuOztcblxubGV0IG5vcm1hbGl6ZSBrZXlfdHlwZSBrZXkgPVxuICBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUga2V5O1xuICBtYXRjaCBrZXlfdHlwZSB3aXRoXG4gIHwgS2V5X3R5cGUuRmxhZyAtPlxuICAgIGlmIFN0cmluZy5lcXVhbCBrZXkgXCItXCIgdGhlbiBmYWlsd2l0aGYgIVwiaW52YWxpZCAle0tleV90eXBlfSBuYW1lOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuZXhpc3RzIGtleSB+ZjpDaGFyLmlzX3doaXRlc3BhY2VcbiAgICB0aGVuIGZhaWx3aXRoZiAhXCJpbnZhbGlkICV7S2V5X3R5cGV9IG5hbWUgKGNvbnRhaW5zIHdoaXRlc3BhY2UpOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXg6XCItXCIga2V5IHRoZW4ga2V5IGVsc2UgXCItXCIgXiBrZXlcbiAgfCBLZXlfdHlwZS5TdWJjb21tYW5kIC0+IFN0cmluZy5sb3dlcmNhc2Uga2V5XG47O1xuXG5sZXQgbG9va3VwX2V4cGFuZCA9IFNoYXBlLlByaXZhdGUubG9va3VwX2V4cGFuZFxuXG5sZXQgbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgbWFwIHByZWZpeCBrZXlfdHlwZSA9XG4gIGxldCBhbGlzdCA9XG4gICAgTGlzdC5jb25jYXRfbWFwIChNYXAuZGF0YSBtYXApIH5mOihmdW4gZmxhZyAtPlxuICAgICAgbGV0IHsgRmxhZy5JbnRlcm5hbC5uYW1lXG4gICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgIDsgYWN0aW9uID0gX1xuICAgICAgICAgIDsgZG9jID0gX1xuICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgPVxuICAgICAgICBmbGFnXG4gICAgICBpblxuICAgICAgbGV0IGRhdGEgPSBmbGFnLCBuYW1lX21hdGNoaW5nIGluXG4gICAgICBsZXQgYWxpYXNlcyA9IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIEAgYWxpYXNlcyBpblxuICAgICAgKG5hbWUsIGRhdGEpIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biBhbGlhcyAtPiBhbGlhcywgZGF0YSkpXG4gIGluXG4gIG1hdGNoIExpc3QuZmluZF9hX2R1cCBhbGlzdCB+Y29tcGFyZTooZnVuIChzMSwgXykgKHMyLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBzMSBzMikgd2l0aFxuICB8IE5vbmUgLT4gbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGVcbiAgfCBTb21lIChmbGFnLCBfKSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbjs7XG5cbm1vZHVsZSBDb21tYW5kX2Jhc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBmbGFncyA6IEZsYWcuSW50ZXJuYWwudCBNYXAuTShTdHJpbmcpLnRcbiAgICA7XG4gICAgICBhbm9ucyA6IHVuaXQgLT4gKFsgYFBhcnNlX2FyZ3MgXSAtPiBbIGBSdW5fbWFpbiBdIC0+IHVuaXQpIEFub25zLlBhcnNlci5CYXNpYy50XG4gICAgOyB1c2FnZSA6IEFub25zLkdyYW1tYXIudFxuICAgIH1cblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBzdWJjb21tYW5kX2NtcF9mc3QgKGEsIF8pIChjLCBfKSA9IGhlbHBfc2NyZWVuX2NvbXBhcmUgYSBjXG5cbiAgICBsZXQgZmxhZ3NfaGVscCA/KGRpc3BsYXlfaGVscF9mbGFncyA9IHRydWUpIHQgPVxuICAgICAgbGV0IGZsYWdzID0gTWFwLmRhdGEgdC5mbGFncyBpblxuICAgICAgbGV0IGZsYWdzID1cbiAgICAgICAgaWYgZGlzcGxheV9oZWxwX2ZsYWdzXG4gICAgICAgIHRoZW4gZmxhZ3NcbiAgICAgICAgZWxzZSBMaXN0LmZpbHRlciBmbGFncyB+ZjooZnVuIGYgLT4gU3RyaW5nLiggPD4gKSBmLm5hbWUgXCItaGVscFwiKVxuICAgICAgaW5cbiAgICAgIExpc3QuY29uY2F0X21hcCB+ZjpGbGFnLkludGVybmFsLkRlcHJlY2F0ZWQuaGVscCBmbGFnc1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmb3JtYXR0ZWRfZmxhZ3MgdCA9XG4gICAgTWFwLmRhdGEgdC5mbGFnc1xuICAgIHw+IExpc3QubWFwIH5mOkZsYWcuSW50ZXJuYWwuYWxpZ25cbiAgICAoKiB0aGlzIHNvcnQgcHV0cyBvcHRpb25hbCBmbGFncyBhZnRlciByZXF1aXJlZCBvbmVzICopXG4gICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IFN0cmluZy5jb21wYXJlIGEubmFtZSBiLm5hbWUpXG4gICAgfD4gU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkuc29ydFxuICA7O1xuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuQmFzZV9pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB0LnJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpXG4gICAgOyBhbm9ucyA9IEdyYW1tYXIgdC51c2FnZVxuICAgIDsgZmxhZ3MgPSBmb3JtYXR0ZWRfZmxhZ3MgdFxuICAgIH1cbiAgOztcblxuICBsZXQgcGF0aF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcInBhdGhcIlxuICBsZXQgYXJnc19rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImFyZ3NcIlxuICBsZXQgaGVscF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImhlbHBcIlxuXG4gIGxldCBpbmRlbnRfYnlfMiBzdHIgPVxuICAgIFN0cmluZy5zcGxpdCB+b246J1xcbicgc3RyXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IFwiICBcIiBeIGxpbmUpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgZ2V0X2ZsYWdfYW5kX2FjdGlvbiB0IGFyZyA9XG4gICAgbWF0Y2ggbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgdC5mbGFncyBhcmcgRmxhZyB3aXRoXG4gICAgfCBFcnJvciBtc2cgLT4gZGllIFwiJXNcIiBtc2cgKClcbiAgICB8IE9rIChmbGFnX25hbWUsIGZsYWcpIC0+IGZsYWdfbmFtZSwgZmxhZy5hY3Rpb25cbiAgOztcblxuICBsZXQgcnVuX2ZsYWcgdCBlbnYgYXJnIChhcmdzIDogQ21kbGluZS50KSA9XG4gICAgbGV0IGZsYWcsIGFjdGlvbiA9IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgaW5cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBpbmZvIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICAoKiBJZiB3ZSdyZSBkb2luZyBjb21wbGV0aW9uLCB2ZXJzaW9uL2hlbHAgaW5mbyBhcmVuJ3QgdXNlZnVsIGNvbXBsZXRpb25cbiAgICAgICAgIHJlc3BvbnNlcy4gKilcbiAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgIHRoZW4gZW52LCBhcmdzXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJpbnRfZW5kbGluZSAoaW5mbyBlbnYpO1xuICAgICAgICBleGl0IDApXG4gICAgfCBOb19hcmcgZiAtPiBmIGVudiwgYXJnc1xuICAgIHwgQXJnIChmLCBjb21wKSAtPlxuICAgICAgKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgIHwgTmlsIC0+IGRpZSBcIm1pc3NpbmcgYXJndW1lbnQgZm9yIGZsYWcgJXNcIiBmbGFnICgpXG4gICAgICAgfCBDb25zIChhcmcsIHJlc3QpIC0+XG4gICAgICAgICBsZXQgZW52ID1cbiAgICAgICAgICAgdHJ5IGYgZW52IGFyZyB3aXRoXG4gICAgICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIGFzIGUgLT5cbiAgICAgICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgcmVzdCB0aGVuIGVudiBlbHNlIHJhaXNlIGVcbiAgICAgICAgIGluXG4gICAgICAgICBlbnYsIHJlc3RcbiAgICAgICB8IENvbXBsZXRlIHBhcnQgLT4gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlIChDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXAgZW52IH5wYXJ0KSlcbiAgICB8IFJlc3QgKGYsIGNvbXApIC0+XG4gICAgICBsZXQgYXJnX2xpc3QgPSBDbWRsaW5lLnRvX2xpc3QgYXJncyBpblxuICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3NcbiAgICAgIHRoZW4gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlIChDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXAgZW52IH5wYXJ0OmFyZ19saXN0KTtcbiAgICAgIGYgZW52IGFyZ19saXN0LCBOaWxcbiAgOztcblxuICBsZXQgcmVjIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciAoY21kbGluZSA6IENtZGxpbmUudCkgfmZvcl9jb21wbGV0aW9uIH5wYXJzZV9mbGFncyA9XG4gICAgbWF0Y2ggY21kbGluZSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIExpc3QuaXRlciAoTWFwLmRhdGEgdC5mbGFncykgfmY6KGZ1biBmbGFnIC0+IGZsYWcuY2hlY2tfYXZhaWxhYmxlIGVudik7XG4gICAgICBBbm9ucy5QYXJzZXIuZmluYWxfdmFsdWUgcGFyc2VyIGVudlxuICAgIHwgQ29tcGxldGUgcGFydCAtPlxuICAgICAgaWYgcGFyc2VfZmxhZ3MgJiYgU3RyaW5nLmlzX3ByZWZpeCBwYXJ0IH5wcmVmaXg6XCItXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICBMaXN0Lml0ZXIgKE1hcC5rZXlzIHQuZmxhZ3MpIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQgdGhlbiBwcmludF9lbmRsaW5lIG5hbWUpO1xuICAgICAgICBleGl0IDApXG4gICAgICBlbHNlIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoQW5vbnMuUGFyc2VyLmNvbXBsZXRlIHBhcnNlciBlbnYgfnBhcnQpXG4gICAgfCBDb25zIChhcmcsIGFyZ3MpIC0+XG4gICAgICBsZXQgYXJnLCBhcmdzLCBhcmdfaXNfZmxhZyA9XG4gICAgICAgIG1hdGNoIHBhcnNlX2ZsYWdzIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIChtYXRjaCBhcmcsIGFyZ3Mgd2l0aFxuICAgICAgICAgICAoKiB0aGUgJy1hbm9uJyBmbGFnIGlzIGhlcmUgYXMgYW4gZXNjYXBlIGhhdGNoIGluIGNhc2UgeW91IGhhdmUgYW5cbiAgICAgICAgICAgICAgYW5vbnltb3VzIGFyZ3VtZW50IHRoYXQgc3RhcnRzIHdpdGggYSBoeXBoZW4uICopXG4gICAgICAgICAgIHwgXCItYW5vblwiLCBDb25zIChhcmcsIGFyZ3MpIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgICAgKCogc3VwcG9ydCB0aGUgY29tbW9uIFVuaXggY29udmVudGlvbiB3aGVyZSBcIi1cIiBtZWFucyBzdGRpbiAqKVxuICAgICAgICAgICB8IFwiLVwiLCBfIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgICAgfCBfLCBfIC0+IGFyZywgYXJncywgU3RyaW5nLmlzX3ByZWZpeCBhcmcgfnByZWZpeDpcIi1cIilcbiAgICAgIGluXG4gICAgICAobWF0Y2ggYXJnX2lzX2ZsYWcgd2l0aFxuICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgbGV0IGVudiwgYXJncyA9IHJ1bl9mbGFnIHQgZW52IGFyZyBhcmdzIGluXG4gICAgICAgICBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgYXJncyB+cGFyc2VfZmxhZ3MgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgbGV0IHBhcnNlX2ZsYWdzMSA9IHBhcnNlX2ZsYWdzIGluXG4gICAgICAgICBsZXQgKHsgcGFyc2VyOyBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMjsgdXBkYXRlX2VudiB9XG4gICAgICAgICAgICAgIDogXyBBbm9ucy5QYXJzZXIuQ29uc3VtZV9yZXN1bHQudClcbiAgICAgICAgICAgPVxuICAgICAgICAgICBBbm9ucy5QYXJzZXIuY29uc3VtZSBwYXJzZXIgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBlbnYgPSB1cGRhdGVfZW52IGVudiBpblxuICAgICAgICAgbGV0IHBhcnNlX2ZsYWdzID0gcGFyc2VfZmxhZ3MxICYmIHBhcnNlX2ZsYWdzMiBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIH5wYXJzZV9mbGFncyBhcmdzIH5mb3JfY29tcGxldGlvbilcbiAgOztcblxuICBsZXQgcnVuX2V4biBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIHdoZW4gZm9yX2NvbXBsZXRpb24gLT4gZXhpdCAwXG4gICAgfCBFeGl0X2NhbGxlZCB7IHN0YXR1cyB9IC0+IGV4aXQgc3RhdHVzXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZXhuX3N0ciA9XG4gICAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBtc2cgLT4gbXNnXG4gICAgICAgIHwgXyAtPiBTZXhwLnRvX3N0cmluZ19odW0gWyVzZXhwIChleG4gOiBleG4pXVxuICAgICAgaW5cbiAgICAgIGxldCB2ZXJib3NlID0gT3B0aW9uLnZhbHVlIHZlcmJvc2Vfb25fcGFyc2VfZXJyb3IgfmRlZmF1bHQ6dHJ1ZSBpblxuICAgICAgbGV0IGVycm9yX21zZyA9XG4gICAgICAgIGlmIHZlcmJvc2VcbiAgICAgICAgdGhlblxuICAgICAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgICAgIH5zZXA6XCJcXG5cXG5cIlxuICAgICAgICAgICAgWyBcIkVycm9yIHBhcnNpbmcgY29tbWFuZCBsaW5lOlwiXG4gICAgICAgICAgICA7IGluZGVudF9ieV8yIGV4bl9zdHJcbiAgICAgICAgICAgIDsgXCJGb3IgdXNhZ2UgaW5mb3JtYXRpb24sIHJ1blwiXG4gICAgICAgICAgICA7IFwiICBcIiBeIFBhdGgudG9fc3RyaW5nIHBhdGggXiBcIiAtaGVscFxcblwiXG4gICAgICAgICAgICBdXG4gICAgICAgIGVsc2UgZXhuX3N0clxuICAgICAgaW5cbiAgICAgIHByZXJyX2VuZGxpbmUgZXJyb3JfbXNnO1xuICAgICAgZXhpdCAxXG4gIDs7XG5cbiAgbGV0IHJ1blxuICAgICAgICB0XG4gICAgICAgIGVudlxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH5oZWxwX3RleHRcbiAgICAgICAgfm9uX2ZhaWx1cmVcbiAgICA9XG4gICAgbGV0IGZvcl9jb21wbGV0aW9uID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICBsZXQgZW52ID1cbiAgICAgIGVudlxuICAgICAgfD4gRW52LnNldCB+a2V5OnBhdGhfa2V5IH5kYXRhOnBhdGhcbiAgICAgIHw+IEVudi5zZXQgfmtleTphcmdzX2tleSB+ZGF0YTooQ21kbGluZS50b19saXN0IGFyZ3MpXG4gICAgICB8PiBFbnYuc2V0IH5rZXk6aGVscF9rZXkgfmRhdGE6aGVscF90ZXh0XG4gICAgaW5cbiAgICBtYXRjaFxuICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IG1haW4gPVxuICAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52ICh0LmFub25zICgpKSB+Zm9yX2NvbXBsZXRpb24gfnBhcnNlX2ZsYWdzOnRydWUgYXJnc1xuICAgICAgICBpblxuICAgICAgICBtYWluIGBQYXJzZV9hcmdzKVxuICAgIHdpdGhcbiAgICB8IE9rIHRodW5rIC0+XG4gICAgICB3aGVuX3BhcnNpbmdfc3VjY2VlZHMgKCk7XG4gICAgICB0aHVuayBgUnVuX21haW5cbiAgICB8IEVycm9yIGV4biAtPiBvbl9mYWlsdXJlIGV4biB+Zm9yX2NvbXBsZXRpb24gfnBhdGggfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgOztcblxuICBtb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgICB0eXBlICsnYSB0ID1cbiAgICAgIHsgZiA6IHVuaXQgLT4gKHVuaXQgLT4gJ2EgUGFyc2luZ19vdXRjb21lLnQpIEFub25zLlBhcnNlci5CYXNpYy50XG4gICAgICA7IHVzYWdlIDogdW5pdCAtPiBBbm9ucy5HcmFtbWFyLnRcbiAgICAgIDsgZmxhZ3MgOiB1bml0IC0+IEZsYWcuSW50ZXJuYWwudCBsaXN0XG4gICAgICB9XG5cbiAgICBvcGVuIEFub25zLlBhcnNlci5CYXNpYy5Gb3Jfb3BlbmluZ1xuXG4gICAgbGV0IHdyYXBfdmFsdWUgdiAoKSA9IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHZcblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgeyBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgcmV0dXJuIChmdW4gZiB4ICgpIC0+XG4gICAgICAgICAgICAgICAoKiBvcmRlciBvZiBldmFsdWF0aW9uIGhlcmUgYWZmZWN0cyBpbiB3aGF0IG9yZGVyIHRoZSB1c2VycycgY2FsbGJhY2tzXG4gICAgICAgICAgICAgICAgICBhcmUgZXZhbHVhdGVkLCBzbyBpdCdzIGltcG9ydGFudCB0byBjYWxsIFtmXSBiZWZvcmUgW3hdICopXG4gICAgICAgICAgICAgICBsZXQgZl9vdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgICAgbGV0IHhfb3V0Y29tZSA9IHggKCkgaW5cbiAgICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5hcHBseSBmX291dGNvbWUgeF9vdXRjb21lKVxuICAgICAgICAgICAgIDwqPiBmLmYgKClcbiAgICAgICAgICAgICA8Kj4geC5mICgpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4geC5mbGFncyAoKSBAIGYuZmxhZ3MgKCkpXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLmNvbmNhdCBbIGYudXNhZ2UgKCk7IHgudXNhZ2UgKCkgXSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGVtcHR5X3NwZWMgOiAnbS4gKCdtIC0+ICdtKSB0ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gKCkgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgRm4uaWQpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBtYXBfb3V0Y29tZSB4IH5mID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHguZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4geCAoKSAtPlxuICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4ICgpIGluXG4gICAgICAgICAgICAgZiB4X291dGNvbWUpXG4gICAgICA7IGZsYWdzID0geC5mbGFnc1xuICAgICAgOyB1c2FnZSA9IHgudXNhZ2VcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG1hcCB4IH5mID0gbWFwX291dGNvbWUgeCB+ZjooUGFyc2luZ19vdXRjb21lLm1hcCB+ZilcblxuICAgIGxldCBsb29rdXAga2V5ID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIEFub25zLlBhcnNlci5CYXNpYy5mcm9tX2VudiAoZnVuIGVudiAtPiBFbnYuZmluZF9leG4gZW52IGtleSkgPj58IHdyYXBfdmFsdWUpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHBhdGggOiBQYXRoLnQgdCA9IGxvb2t1cCBwYXRoX2tleVxuICAgIGxldCBhcmdzIDogc3RyaW5nIGxpc3QgdCA9IGxvb2t1cCBhcmdzX2tleVxuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCB0ID0gbG9va3VwIGhlbHBfa2V5XG5cbiAgICAoKiBUaGlzIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LCBmb3IgdGhlIGhlbHAgY29tbWFuZC4gKilcbiAgICBsZXQgZW52ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gQW5vbnMuUGFyc2VyLkJhc2ljLmZyb21fZW52IChmdW4gZW52IC0+IGVudikgPj58IHdyYXBfdmFsdWUpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gICAgICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gQW5vbnNcblxuICAgICAgbGV0ICggJTogKSA9ICggJTogKVxuICAgICAgbGV0IG1hcF9hbm9ucyA9IG1hcF9hbm9uc1xuICAgICAgbGV0IG1heWJlID0gbWF5YmVcbiAgICAgIGxldCBtYXliZV93aXRoX2RlZmF1bHQgPSBtYXliZV93aXRoX2RlZmF1bHRcbiAgICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpclxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICAgIGxldCB0MiA9IHQyXG4gICAgICBsZXQgdDMgPSB0M1xuICAgICAgbGV0IHQ0ID0gdDRcblxuICAgICAgbGV0IGFub24gc3BlYyA9XG4gICAgICAgIEFub25zLkdyYW1tYXIuaW52YXJpYW50IHNwZWMuZ3JhbW1hcjtcbiAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBzcGVjLnAgPj58IGZ1biBvdXRjb21lICgpIC0+IG91dGNvbWUpXG4gICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBzcGVjLmdyYW1tYXIpXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZXNjYXBlX2Fub24gfmZpbmFsX2Fub24gPVxuICAgICAgQW5vbnMuZXNjYXBlICh0MiBmaW5hbF9hbm9uIChzZXF1ZW5jZSAoXCJBUkdcIiAlOiBzdHJpbmcpKSkgfD4gYW5vblxuICAgIDs7XG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBGbGFnXG5cbiAgICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlID0gZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlXG4gICAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfcGFpciA9IG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgICAgbGV0IG5vX2FyZ19yZXF1aXJlZCA9IG5vX2FyZ19yZXF1aXJlZFxuICAgICAgbGV0IG5vX2FyZ19yZWdpc3RlciA9IG5vX2FyZ19yZWdpc3RlclxuICAgICAgbGV0IG5vX2FyZ19hYm9ydCA9IG5vX2FyZ19hYm9ydFxuICAgICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0ID0gb3B0aW9uYWxfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgcmVxdWlyZWQgPSByZXF1aXJlZFxuXG4gICAgICBsZXQgZmxhZ19pbnRlcm5hbFxuICAgICAgICAgICAgPyhhbGlhc2VzID0gW10pXG4gICAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBtb2RlXG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgPVxuICAgICAgICBsZXQgbm9ybWFsaXplIGZsYWcgPSBub3JtYWxpemUgS2V5X3R5cGUuRmxhZyBmbGFnIGluXG4gICAgICAgIGxldCBuYW1lID0gbm9ybWFsaXplIG5hbWUgaW5cbiAgICAgICAgbGV0IGFsaWFzZXMgPSBMaXN0Lm1hcCB+Zjpub3JtYWxpemUgYWxpYXNlcyBpblxuICAgICAgICBsZXQgeyByZWFkOyBhY3Rpb247IG51bV9vY2N1cnJlbmNlczsgZXh0cmFfZG9jIH0gPSBtb2RlIG5hbWUgaW5cbiAgICAgICAgbGV0IGNoZWNrX2F2YWlsYWJsZSA9XG4gICAgICAgICAgbWF0Y2ggbnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2Ugd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gKGlnbm9yZSA6IFVuaXZfbWFwLnQgLT4gdW5pdClcbiAgICAgICAgICB8IHRydWUgLT4gZnVuIGVudiAtPiBpZ25vcmUgKHJlYWQgZW52IDogXylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5hbWVfbWF0Y2hpbmcgPVxuICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIGZ1bGxfZmxhZ19yZXF1aXJlZCB0aGVuIGBGdWxsX21hdGNoX3JlcXVpcmVkIGVsc2UgYFByZWZpeFxuICAgICAgICBpblxuICAgICAgICB7IGYgPVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgQW5vbnMuUGFyc2VyLkJhc2ljLmZyb21fZW52IChmdW4gZW52IC0+IHJlYWQgZW52KSA+PnwgZnVuIHYgKCkgLT4gdilcbiAgICAgICAgOyBmbGFncyA9XG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBbIHsgbmFtZVxuICAgICAgICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgICAgICAgICA7IGRvYyA9XG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZm9yY2UgZXh0cmFfZG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZXh0cmFfZG9jIC0+IFslc3RyaW5nIFwiJXtkb2N9ICV7ZXh0cmFfZG9jfVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBkb2MpXG4gICAgICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBdKVxuICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBmbGFnID0gZmxhZ19pbnRlcm5hbCB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6W11cblxuICAgICAgbGV0IGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuICAgICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIGFyZ190eXBlXG4gICAgICAgICAgICBzZXhwX29mX2RlZmF1bHRcbiAgICAgICAgICAgIH5kZWZhdWx0XG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgID1cbiAgICAgICAgbGV0IGRvYyA9XG4gICAgICAgICAgbWF0Y2ggc2V4cF9vZl9kZWZhdWx0IGRlZmF1bHQgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIFwiX1wiIC0+IGRvY1xuICAgICAgICAgIHwgZGVmYXVsdF9zZXhwIC0+IHNwcmludGYgIVwiJXMgKGRlZmF1bHQ6ICV7U2V4cH0pXCIgZG9jIGRlZmF1bHRfc2V4cFxuICAgICAgICBpblxuICAgICAgICBmbGFnXG4gICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIChvcHRpb25hbF93aXRoX2RlZmF1bHQgZGVmYXVsdCBhcmdfdHlwZSlcbiAgICAgICAgICB+ZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHJldHVybiB2ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gKCkgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgdikpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHJlY292ZXJfZnJvbV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPVxuICAgICAgeyB0IHdpdGhcbiAgICAgICAgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHQuZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4gZiAoKSAtPlxuICAgICAgICAgICAgIGxldCBvdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5yZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyBvdXRjb21lKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9XG4gICAgICB7IHQgd2l0aFxuICAgICAgICBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgdC5mICgpXG4gICAgICAgICAgICAgPj58IGZ1biBmICgpIC0+XG4gICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBmICgpIGluXG4gICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG91dGNvbWUpXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBvcHRpb25hbF90b19yZXF1aXJlZCB0ID1cbiAgICAgIHsgdCB3aXRoXG4gICAgICAgIGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB0LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIGYgKCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgIChQYXJzaW5nX291dGNvbWUubWFwIG91dGNvbWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIFwiW29wdGlvbmFsX3RvX3JlcXVpcmVkXSBnb3QgYSBbTm9uZV0gcmVzdWx0XCIpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gT2sgdikpKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICBlbmQpXG5cbiAgICBsZXQgYXJnX25hbWVzIHQgPVxuICAgICAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgKHQuZmxhZ3MgKCkpIGluXG4gICAgICBsZXQgZmxhZ19uYW1lcyA9IE1hcC5rZXlzIGZsYWdzIGluXG4gICAgICBsZXQgYW5vbl9uYW1lcyA9IEFub25zLkdyYW1tYXIubmFtZXMgKHQudXNhZ2UgKCkpIGluXG4gICAgICBMaXN0LmNvbmNhdCBbIGZsYWdfbmFtZXM7IGFub25fbmFtZXMgXVxuICAgIDs7XG5cbiAgICBsZXQgcmVxdWlyZWRfYXJnX25hbWVzIHQgPVxuICAgICAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgKHQuZmxhZ3MgKCkpIGluXG4gICAgICBMaXN0LmZpbHRlcl9tYXAgKE1hcC50b19hbGlzdCBmbGFncykgfmY6KGZ1biAobmFtZSwgZmxhZykgLT5cbiAgICAgICAgaWYgZmxhZy5udW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZSB0aGVuIFNvbWUgbmFtZSBlbHNlIE5vbmUpXG4gICAgOztcblxuICAgIG1vZHVsZSBDaG9vc2Vfb25lID0gc3RydWN0XG4gICAgICB0eXBlICdhIHBhcmFtID0gJ2EgdFxuXG4gICAgICBtb2R1bGUgQ2hvaWNlX25hbWUgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgbGlzdF90b19zdHJpbmcgOiB0IGxpc3QgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBjcmVhdGVfZXhuIDogJ2EgcGFyYW0gLT4gdFxuICAgICAgICB2YWwgZW51bWVyYXRlX3JlcXVpcmVkX2ZsYWdzIDogdCAtPiBleGNlcHQ6c3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICB7IGFsbF9hcmdzIDogc3RyaW5nIGxpc3RcbiAgICAgICAgICAgIDsgcmVxdWlyZWRfYXJncyA6IHN0cmluZyBsaXN0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodC5hbGxfYXJncyA6IHN0cmluZyBsaXN0KV1cbiAgICAgICAgZW5kXG5cbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4gICAgICAgIGxldCBjcmVhdGVfZXhuIHBhcmFtID1cbiAgICAgICAgICBsZXQgcmVxdWlyZWRfYXJncyA9IHJlcXVpcmVkX2FyZ19uYW1lcyBwYXJhbSBpblxuICAgICAgICAgIGxldCBuYW1lcyA9IGFyZ19uYW1lcyBwYXJhbSBpblxuICAgICAgICAgIGxldCBuYW1lc193aXRoX2NvbW1hcyA9IExpc3QuZmlsdGVyIG5hbWVzIH5mOihmdW4gcyAtPiBTdHJpbmcuY29udGFpbnMgcyAnLCcpIGluXG4gICAgICAgICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IG5hbWVzX3dpdGhfY29tbWFzKVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiRm9yIHNpbXBsaWNpdHksIFtDb21tYW5kLlNwZWMuY2hvb3NlX29uZV0gZG9lcyBub3Qgc3VwcG9ydCBuYW1lcyB3aXRoIFxcXG4gICAgICAgICAgICAgICBjb21tYXMuXCJcbiAgICAgICAgICAgICAgbmFtZXNfd2l0aF9jb21tYXNcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgbGlzdF1cbiAgICAgICAgICAgIHw+IEVycm9yLnJhaXNlO1xuICAgICAgICAgIG1hdGNoIG5hbWVzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZSBcIltjaG9vc2Vfb25lXSBleHBlY3RzIGNob2ljZXMgdG8gcmVhZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlwiXVxuICAgICAgICAgIHwgXyA6OiBfIC0+IHsgYWxsX2FyZ3MgPSBuYW1lczsgcmVxdWlyZWRfYXJncyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgICBtYXRjaCB0LnJlcXVpcmVkX2FyZ3Mgd2l0aFxuICAgICAgICAgIHwgW10gLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIHQuYWxsX2FyZ3NcbiAgICAgICAgICB8IF8gOjogXyAtPiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgdC5yZXF1aXJlZF9hcmdzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGVudW1lcmF0ZV9yZXF1aXJlZF9mbGFncyB0IH5leGNlcHQgPVxuICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIHQucmVxdWlyZWRfYXJncyB+ZjooZnVuIHggLT4gbm90IChTdHJpbmcuZXF1YWwgZXhjZXB0IHgpKSB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgfCBfIDo6IF8gYXMgbCAtPiBTb21lIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgbClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbGlzdF90b19zdHJpbmcgdHMgPSBMaXN0Lm1hcCB0cyB+Zjp0b19zdHJpbmcgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuICBcIlxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IHN0cnVjdFxuICAgICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgICAgICAgICh0eXBlIGEgYilcbiAgICAgICAgICAgID8obmV3X2JlaGF2aW9yID0gdHJ1ZSlcbiAgICAgICAgICAgICh0cyA6IGEgcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBsZXQgZml4X2ZsYWcgdCA9XG4gICAgICAgICAgaWYgbmV3X2JlaGF2aW9yXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmFtZV9vZl90aGVfZ3JvdXAgPSBDaG9pY2VfbmFtZS5jcmVhdGVfZXhuIHQgaW5cbiAgICAgICAgICAgIGxldCBmaXhfbnVtX29jY3VycmVuY2VzIGZsYWcgPVxuICAgICAgICAgICAgICB7IGZsYWcgd2l0aFxuICAgICAgICAgICAgICAgIEZsYWcuSW50ZXJuYWwubnVtX29jY3VycmVuY2VzID1cbiAgICAgICAgICAgICAgICAgIHsgZmxhZy5GbGFnLkludGVybmFsLm51bV9vY2N1cnJlbmNlcyB3aXRoIGF0X2xlYXN0X29uY2UgPSBmYWxzZSB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuZCBmaXhfZG9jIGZsYWcgPVxuICAgICAgICAgICAgICB7IGZsYWcgd2l0aFxuICAgICAgICAgICAgICAgIEZsYWcuSW50ZXJuYWwuZG9jID1cbiAgICAgICAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgXCIlcyVzXCJcbiAgICAgICAgICAgICAgICAgICAgZmxhZy5GbGFnLkludGVybmFsLmRvY1xuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgQ2hvaWNlX25hbWUuZW51bWVyYXRlX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2VwdDpmbGFnLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29mX3RoZV9ncm91cFxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBncm91cCAtPiBzcHJpbnRmIFwiIFtyZXF1aXJlczogXFxcIiVzXFxcIl1cIiBncm91cClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW5kIG1ha2VfYW5vbnNfb3B0aW9uYWwgKGFub24gOiBBbm9ucy5HcmFtbWFyLnQpID1cbiAgICAgICAgICAgICAgQW5vbnMuR3JhbW1hci5tYXliZV9pZGVtcG90ZW50IGFub25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aFxuICAgICAgICAgICAgICB1c2FnZSA9IChmdW4gKCkgLT4gbWFrZV9hbm9uc19vcHRpb25hbCAodC51c2FnZSAoKSkpXG4gICAgICAgICAgICA7IGZsYWdzID1cbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgKHQuZmxhZ3MgKCkpIH5mOihmdW4gZmxhZ19pbnRlcm5hbCAtPlxuICAgICAgICAgICAgICAgICAgICAgZmxhZ19pbnRlcm5hbCB8PiBmaXhfbnVtX29jY3VycmVuY2VzIHw+IGZpeF9kb2MpKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBlbHNlIHRcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gQ2hvaWNlX25hbWUuY3JlYXRlX2V4biB0LCBmaXhfZmxhZyB0KVxuICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdCAobW9kdWxlIENob2ljZV9uYW1lKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPlxuICAgICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGNhbGxlZCB3aXRoIGR1cGxpY2F0ZSBuYW1lXCJcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIFslc2V4cF9vZjogQ2hvaWNlX25hbWUudF1cbiAgICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgICAgICB8IGBPayB0cyAtPlxuICAgICAgICAgIE1hcC5mb2xkIHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOnQgYWNjIC0+XG4gICAgICAgICAgICBtYXAyXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAocmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdClcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgeyByZXN1bHQgPSB2YWx1ZTsgaGFzX2FyZyB9IC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggaGFzX2FyZyB3aXRoXG4gICAgICAgICAgICAgICAgfCBmYWxzZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IHRydWUgLT4gKG5hbWUsIHZhbHVlKSA6OiBhY2MpKVxuICAgICAgICAgIHw+IG1hcCB+ZjooZnVuIHZhbHVlX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCBhcmdfY291bnRlciA9IExpc3QubGVuZ3RoIHZhbHVlX2xpc3QgaW5cbiAgICAgICAgICAgIGxldCBtaXNzaW5nX2ZsYWdfZXJyb3IgZm10ID1cbiAgICAgICAgICAgICAga3NwcmludGZcbiAgICAgICAgICAgICAgICAoZnVuIG1zZyAoKSAtPiBFcnJvciAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgKEVycm9yLm9mX3N0cmluZyBtc2cpKSlcbiAgICAgICAgICAgICAgICBmbXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbW9yZV90aGFuX29uZV9lcnJvciBwYXNzZWQgPVxuICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAhXCJDYW5ub3QgcGFzcyBtb3JlIHRoYW4gb25lIG9mIHRoZXNlOiBcXG5cXFxuICAgICAgICAgICAgICAgICBcXCAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBwYXNzZWQgfmY6ZnN0KVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICBhbmQgc3VjY2Vzc19saXN0LCBlcnJvcl9saXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIHZhbHVlX2xpc3QgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBuYW1lLCBPayB2YWx1ZSAtPiBGaXJzdCAobmFtZSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgfCBuYW1lLCBFcnJvciBlcnIgLT4gU2Vjb25kIChuYW1lLCBlcnIpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIHN1Y2Nlc3NfbGlzdCB3aXRoXG4gICAgICAgICAgICB8IF8gOjogXyA6OiBfIGFzIHBhc3NlZCAtPiBtb3JlX3RoYW5fb25lX2Vycm9yIHBhc3NlZFxuICAgICAgICAgICAgfCBbIChfLCAodmFsdWUgOiBhKSkgXSAtPlxuICAgICAgICAgICAgICBpZiBhcmdfY291bnRlciA+IDFcbiAgICAgICAgICAgICAgdGhlbiBtb3JlX3RoYW5fb25lX2Vycm9yIHZhbHVlX2xpc3RcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgRGVmYXVsdF90byAoXyA6IGEpIC0+ICh2YWx1ZSA6IGIpXG4gICAgICAgICAgICAgICAgICAgfCBSYWlzZSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gKFNvbWUgdmFsdWUgOiBiKSlcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGVycm9yX2xpc3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBbIChuYW1lLCBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnIpIF0gLT5cbiAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk5vdCBhbGwgZmxhZ3MgaW4gZ3JvdXAgXFxcIiVzXFxcIiBhcmUgZ2l2ZW46ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ2hvaWNlX25hbWUudG9fc3RyaW5nIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyKSkpKVxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBpZl9ub3RoaW5nX2Nob3NlbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gdmFsdWUgLT4gT2sgdmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gT2sgTm9uZVxuICAgICAgICAgICAgICAgICAgfCBSYWlzZSAtPlxuICAgICAgICAgICAgICAgICAgICBtaXNzaW5nX2ZsYWdfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAhXCJNdXN0IHBhc3Mgb25lIG9mIHRoZXNlOlxcbiAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgICAgICAgIChNYXAua2V5cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAoKSkpKVxuICAgICAgICAgIHw+IGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICA7O1xuXG4gICAgICBsZXQgY2hvb3NlX29uZVxuICAgICAgICAgICAgKHR5cGUgYSBiKVxuICAgICAgICAgICAgKHRzIDogYSBvcHRpb24gcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBjaG9vc2Vfb25lX25vbl9vcHRpb25hbFxuICAgICAgICAgIH5uZXdfYmVoYXZpb3I6ZmFsc2VcbiAgICAgICAgICB+aWZfbm90aGluZ19jaG9zZW5cbiAgICAgICAgICAoTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgbWFwX291dGNvbWUgdCB+ZjooZnVuIHsgUGFyc2luZ19vdXRjb21lLnJlc3VsdDsgaGFzX2FyZyB9IC0+XG4gICAgICAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBPayAoU29tZSB2YWx1ZSkgLT4geyBQYXJzaW5nX291dGNvbWUucmVzdWx0ID0gT2sgdmFsdWU7IGhhc19hcmcgPSB0cnVlIH1cbiAgICAgICAgICAgICAgIHwgT2sgTm9uZSAtPlxuICAgICAgICAgICAgICAgICB7IGhhc19hcmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgICA7IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgKEVycm9yLm9mX3N0cmluZyBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZ1wiKSlcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgfCBFcnJvciBfIGFzIHJlc3VsdCAtPiB7IGhhc19hcmc7IHJlc3VsdCB9KSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gQ2hvb3NlX29uZS5JZl9ub3RoaW5nX2Nob3NlblxuXG4gICAgbGV0IGNob29zZV9vbmUgPSBDaG9vc2Vfb25lLmNob29zZV9vbmVcblxuICAgIGxldCBjaG9vc2Vfb25lX25vbl9vcHRpb25hbCBsc3QgfmlmX25vdGhpbmdfY2hvc2VuID1cbiAgICAgIENob29zZV9vbmUuY2hvb3NlX29uZV9ub25fb3B0aW9uYWwgbHN0IH5pZl9ub3RoaW5nX2Nob3NlblxuICAgIDs7XG5cbiAgICBsZXQgYW5kX2FyZ19uYW1lcyB0ID0gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgYXJnX25hbWVzIHQpXG5cbiAgICBsZXQgYW5kX2FyZ19uYW1lIHQgPVxuICAgICAgbWF0Y2ggYXJnX25hbWVzIHQgd2l0aFxuICAgICAgfCBbIG5hbWUgXSAtPiBtYXAgdCB+ZjooZnVuIHZhbHVlIC0+IHZhbHVlLCBuYW1lKVxuICAgICAgfCBuYW1lcyAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlthbmRfYXJnX25hbWVdIGV4cGVjdHMgZXhhY3RseSBvbmUgbmFtZSwgZ290XCIgfl86KG5hbWVzIDogc3RyaW5nIGxpc3QpXVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2UgeyBmbGFnczsgdXNhZ2UgPSBfOyBmIH0gYXJncyA9XG4gICAgICBsZXQgY21kbGluZSA9IENtZGxpbmUub2ZfbGlzdCBhcmdzIGluXG4gICAgICBsZXQgcmVzdWx0ID0gcmVmIE5vbmUgaW5cbiAgICAgIHJ1blxuICAgICAgICB7IHN1bW1hcnkgPSBcIlwiXG4gICAgICAgIDsgcmVhZG1lID0gTm9uZVxuICAgICAgICA7IGZsYWdzID0gZmxhZ3MgKCkgfD4gRmxhZy5JbnRlcm5hbC5jcmVhdGVcbiAgICAgICAgOyBhbm9ucyA9XG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgb3BlbiBBbm9ucy5QYXJzZXIuQmFzaWMuRm9yX29wZW5pbmcgaW5cbiAgICAgICAgICAgICAgIGYgKClcbiAgICAgICAgICAgICAgID4+fCBmdW4gcGFyYW1zIGBQYXJzZV9hcmdzIGBSdW5fbWFpbiAtPlxuICAgICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBwYXJhbXMgKCkgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIG91dGNvbWUucmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycikgLT4gcmVzdWx0IDo9IFNvbWUgKEVycm9yIGVycilcbiAgICAgICAgICAgICAgIHwgT2sgeCAtPiByZXN1bHQgOj0gU29tZSAoT2sgeCkpXG4gICAgICAgIDsgdXNhZ2UgPSBBbm9ucy5HcmFtbWFyLnplcm9cbiAgICAgICAgfVxuICAgICAgICBVbml2X21hcC5lbXB0eVxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzOkZuLmlkXG4gICAgICAgIH5hcmdzOmNtZGxpbmVcbiAgICAgICAgfnBhdGg6UGF0aC5lbXB0eVxuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvcjooU29tZSB0cnVlKVxuICAgICAgICB+aGVscF90ZXh0OihsYXp5IFwiTm8gaGVscCBmb3IgcGFyc2luZ1wiKVxuICAgICAgICB+b25fZmFpbHVyZTpcbiAgICAgICAgICAoZnVuXG4gICAgICAgICAgICBleG5cbiAgICAgICAgICAgIH5mb3JfY29tcGxldGlvbjooXyA6IGJvb2wpXG4gICAgICAgICAgICB+cGF0aDooXyA6IFBhdGgudClcbiAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yOihfIDogYm9vbCBvcHRpb24pXG4gICAgICAgICAgICAtPiByZXN1bHQgOj0gU29tZSAoRXJyb3IgKEVycm9yLm9mX2V4biBleG4pKSk7XG4gICAgICBPcHRpb24udmFsdWVfZXhuIH5oZXJlOlslaGVyZV0gIXJlc3VsdFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTcGVjID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhIC0+ICdiKSBQYXJhbS50XG4gICAgdHlwZSAnYSBwYXJhbSA9ICdhIFBhcmFtLnRcblxuICAgIGxldCBhcHBseSA9IFBhcmFtLmFwcGx5XG4gICAgbGV0ICggKysgKSB0MSB0MiA9IFBhcmFtLm1hcDIgdDEgdDIgfmY6KGZ1biBmMSBmMiB4IC0+IGYyIChmMSB4KSlcbiAgICBsZXQgKCArPiApIHQxIHAyID0gUGFyYW0ubWFwMiB0MSBwMiB+ZjooZnVuIGYxIHAyIHggLT4gKGYxIHgpIHAyKVxuICAgIGxldCAoICs8ICkgdDEgcDIgPSBQYXJhbS5tYXAyIHAyIHQxIH5mOihmdW4gcDIgZjEgeCAtPiBmMSAoeCBwMikpXG4gICAgbGV0IHN0ZXAgZiA9IFBhcmFtLnJldHVybiBmXG5cbiAgICAoKiBJZGVhbGx5IHRoaXMgd291bGQgYmUgW2xldCBlbXB0eSA9IFBhcmFtLnJldHVybiBGbi5pZF0sIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoYXRcbiAgICAgICBkb2Vzbid0IGNvbXBpbGUgYmVjYXVzZSBvZiB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gKilcbiAgICBsZXQgZW1wdHkgPSBQYXJhbS5lbXB0eV9zcGVjXG4gICAgbGV0IGNvbnN0IHggPSBQYXJhbS5yZXR1cm4geFxuICAgIGxldCBtYXAgPSBQYXJhbS5tYXBcbiAgICBsZXQgd3JhcCBmIHQgPSBQYXJhbS5tYXAgdCB+ZjooZnVuIHJ1biBtYWluIC0+IGYgfnJ1biB+bWFpbilcbiAgICBsZXQgb2ZfcGFyYW0gcCA9IG1hcCBwIH5mOihmdW4gZiBrIC0+IGsgZilcbiAgICBsZXQgdG9fcGFyYW0gdCBtID0gbWFwIHQgfmY6KGZ1biBmIC0+IGYgbSlcbiAgICBsZXQgcGF0aCA6IFBhdGgudCBwYXJhbSA9IFBhcmFtLnBhdGhcbiAgICBsZXQgYXJncyA6IHN0cmluZyBsaXN0IHBhcmFtID0gUGFyYW0uYXJnc1xuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCBwYXJhbSA9IFBhcmFtLmhlbHBcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICAgICAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEFub25zXG5cbiAgICAgIHR5cGUgJ2EgYW5vbnMgPSAnYSB0XG5cbiAgICAgIGxldCAoICU6ICkgPSAoICU6IClcbiAgICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICAgIGxldCBtYXliZSA9IG1heWJlXG4gICAgICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0ID0gbWF5YmVfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXJcbiAgICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgICBsZXQgdDIgPSB0MlxuICAgICAgbGV0IHQzID0gdDNcbiAgICAgIGxldCB0NCA9IHQ0XG4gICAgICBsZXQgYW5vbiA9IFBhcmFtLmFub25cbiAgICBlbmRcblxuICAgIGxldCBlc2NhcGVfYW5vbiA9IFBhcmFtLmVzY2FwZV9hbm9uXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBGbGFnXG5cbiAgICAgIHR5cGUgJ2EgZmxhZyA9ICdhIHRcblxuICAgICAgbGV0IG1hcF9mbGFnID0gbWFwX2ZsYWdcbiAgICAgIGxldCBlc2NhcGUgPSBlc2NhcGVcbiAgICAgIGxldCBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUgPSBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGVcbiAgICAgIGxldCBsaXN0ZWQgPSBsaXN0ZWRcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyID0gb25lX29yX21vcmVfYXNfcGFpclxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgPSBvbmVfb3JfbW9yZV9hc19saXN0XG4gICAgICBsZXQgbm9fYXJnID0gbm9fYXJnXG4gICAgICBsZXQgbm9fYXJnX3JlcXVpcmVkID0gbm9fYXJnX3JlcXVpcmVkXG4gICAgICBsZXQgbm9fYXJnX3JlZ2lzdGVyID0gbm9fYXJnX3JlZ2lzdGVyXG4gICAgICBsZXQgbm9fYXJnX2Fib3J0ID0gbm9fYXJnX2Fib3J0XG4gICAgICBsZXQgbm9fYXJnX3NvbWUgPSBub19hcmdfc29tZVxuICAgICAgbGV0IG9wdGlvbmFsID0gb3B0aW9uYWxcbiAgICAgIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgPSBvcHRpb25hbF93aXRoX2RlZmF1bHRcbiAgICAgIGxldCByZXF1aXJlZCA9IHJlcXVpcmVkXG4gICAgICBsZXQgZmxhZyA9IFBhcmFtLmZsYWdcbiAgICAgIGxldCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2MgPSBQYXJhbS5mbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcblxuICAgICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgUGFyYW0udFxuXG4gICAgICAgICAgbGV0IHJldHVybiA9IFBhcmFtLnJldHVyblxuICAgICAgICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHBhaXIgPSBQYXJhbS5ib3RoXG4gICAgZW5kXG5cbiAgICBsZXQgZmxhZ3Nfb2ZfYXJnc19leG4gYXJncyA9XG4gICAgICBMaXN0LmZvbGQgYXJncyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjYyAobmFtZSwgc3BlYywgZG9jKSAtPlxuICAgICAgICBsZXQgZ2VuIGYgZmxhZ190eXBlID1cbiAgICAgICAgICBzdGVwIChmdW4gbSB4IC0+XG4gICAgICAgICAgICBmIHg7XG4gICAgICAgICAgICBtKVxuICAgICAgICAgICs+IFBhcmFtLmZsYWcgbmFtZSBmbGFnX3R5cGUgfmRvY1xuICAgICAgICBpblxuICAgICAgICBsZXQgY2FsbCBmIGFyZ190eXBlID0gZ2VuIChmdW4geCAtPiBPcHRpb24uaXRlciB4IH5mKSAoUGFyYW0ub3B0aW9uYWwgYXJnX3R5cGUpIGluXG4gICAgICAgIGxldCBzZXQgciBhcmdfdHlwZSA9IGNhbGwgKGZ1biB4IC0+IHIgOj0geCkgYXJnX3R5cGUgaW5cbiAgICAgICAgbGV0IHNldF9ib29sIHIgYiA9IGdlbiAoZnVuIHBhc3NlZCAtPiBpZiBwYXNzZWQgdGhlbiByIDo9IGIpIFBhcmFtLm5vX2FyZyBpblxuICAgICAgICBhY2NcbiAgICAgICAgKytcbiAgICAgICAgbWF0Y2ggKHNwZWMgOiBTdGRsaWIuQXJnLnNwZWMpIHdpdGhcbiAgICAgICAgfCBVbml0IGYgLT4gZ2VuIChmdW4gcGFzc2VkIC0+IGlmIHBhc3NlZCB0aGVuIGYgKCkpIFBhcmFtLm5vX2FyZ1xuICAgICAgICB8IFNldCByIC0+IHNldF9ib29sIHIgdHJ1ZVxuICAgICAgICB8IENsZWFyIHIgLT4gc2V0X2Jvb2wgciBmYWxzZVxuICAgICAgICB8IFN0cmluZyBmIC0+IGNhbGwgZiBzdHJpbmdcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT4gc2V0IHIgc3RyaW5nXG4gICAgICAgIHwgSW50IGYgLT4gY2FsbCBmIGludFxuICAgICAgICB8IFNldF9pbnQgciAtPiBzZXQgciBpbnRcbiAgICAgICAgfCBGbG9hdCBmIC0+IGNhbGwgZiBmbG9hdFxuICAgICAgICB8IFNldF9mbG9hdCByIC0+IHNldCByIGZsb2F0XG4gICAgICAgIHwgQm9vbCBmIC0+IGNhbGwgZiBib29sXG4gICAgICAgIHwgU3ltYm9sIChzeW1zLCBmKSAtPlxuICAgICAgICAgIGxldCBhcmdfdHlwZSA9XG4gICAgICAgICAgICBBcmdfdHlwZS5vZl9hbGlzdF9leG5cbiAgICAgICAgICAgICAgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2VcbiAgICAgICAgICAgICAgKExpc3QubWFwIHN5bXMgfmY6KGZ1biBzeW0gLT4gc3ltLCBzeW0pKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY2FsbCBmIGFyZ190eXBlXG4gICAgICAgIHwgUmVzdCBmIC0+IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZjooTGlzdC5pdGVyIH5mKSkgUGFyYW0uZXNjYXBlXG4gICAgICAgIHwgVHVwbGUgXyAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlR1cGxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKEV4cGFuZCBfKSBbQGlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDA1LCAwKV0pIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuRXhwYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKFJlc3RfYWxsIF8pIFtAaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMTIsIDApXSkgLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5SZXN0X2FsbCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBGbGFnLkRlcHJlY2F0ZWRcbiAgICAgIGluY2x1ZGUgQW5vbnMuRGVwcmVjYXRlZFxuICAgIGVuZFxuXG4gICAgbGV0IGFyZ19uYW1lcyA9IFBhcmFtLmFyZ19uYW1lc1xuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gUGFyYW0uQ2hvb3NlX29uZS5JZl9ub3RoaW5nX2Nob3NlblxuXG4gICAgbGV0IGNob29zZV9vbmUgPSBQYXJhbS5jaG9vc2Vfb25lXG4gICAgbGV0IGNob29zZV9vbmVfbm9uX29wdGlvbmFsID0gUGFyYW0uY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICBsZXQgYW5kX2FyZ19uYW1lcyA9IFBhcmFtLmFuZF9hcmdfbmFtZXNcbiAgICBsZXQgYW5kX2FyZ19uYW1lID0gUGFyYW0uYW5kX2FyZ19uYW1lXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBsaXN0IExhenkudFxuICAgIDsgYm9keSA6IChwYXRoOnN0cmluZyBsaXN0IC0+IHVuaXQpIG9wdGlvblxuICAgIH1cblxuICBsZXQgc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGUgdCA6IF8gU2hhcGUuR3JvdXBfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSB0LnJlYWRtZVxuICAgIDsgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCB0LnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzdWJjb21tYW5kX3RvX3NoYXBlKVxuICAgIH1cbiAgOztcbmVuZFxuXG5sZXQgYWJzX3BhdGggPSBTaGFwZS5Qcml2YXRlLmFic19wYXRoXG5sZXQgY29tcF9jd29yZCA9IEVudl92YXIuQ09NUF9DV09SRFxuXG5tb2R1bGUgRXhlYyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7ICgqIElmIFtwYXRoX3RvX2V4ZV0gaXMgcmVsYXRpdmUsIGludGVycHJldCB3LnIudC4gW3dvcmtpbmdfZGlyXSAqKVxuICAgICAgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGVudiA6IGVudiBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIHQgOiBTaGFwZS5FeGVjX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kID0gdC5jaGlsZF9zdWJjb21tYW5kXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEEgcHJveHkgY29tbWFuZCBpcyB0aGUgc3RydWN0dXJlIG9mIGFuIEV4ZWMgY29tbWFuZCBvYnRhaW5lZCBieSBydW5uaW5nIGl0IGluIGFcbiAgIHNwZWNpYWwgd2F5ICopXG5tb2R1bGUgUHJveHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBCYXNlIG9mIFNoYXBlLkJhc2VfaW5mby50XG4gICAgICB8IEdyb3VwIG9mICdhIFNoYXBlLkdyb3VwX2luZm8udFxuICAgICAgfCBFeGVjIG9mIFNoYXBlLkV4ZWNfaW5mby50XG4gICAgICB8IExhenkgb2YgJ2EgdCBMYXp5LnRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsga2luZCA6IHQgS2luZC50XG4gICAgfVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzZSBvZiBDb21tYW5kX2Jhc2UudFxuICB8IEdyb3VwIG9mIHQgR3JvdXAudFxuICB8IEV4ZWMgb2YgRXhlYy50XG4gIHwgTGF6eSBvZiB0IExhenkudFxuXG5sZXQgcmVjIHNleHBhYmxlX3NoYXBlIDogdCAtPiBTaGFwZS5TZXhwYWJsZS50ID0gZnVuY3Rpb25cbiAgfCBCYXNlIGJhc2UgLT4gQmFzZSAoQ29tbWFuZF9iYXNlLnNoYXBlIGJhc2UpXG4gIHwgRXhlYyBleGVjIC0+IEV4ZWMgKEV4ZWMuc2hhcGUgZXhlYylcbiAgfCBHcm91cCBncm91cCAtPiBHcm91cCAoR3JvdXAuc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGU6c2V4cGFibGVfc2hhcGUgZ3JvdXApXG4gIHwgTGF6eSB0aHVuayAtPiBMYXp5IChMYXp5Lm1hcCB+ZjpzZXhwYWJsZV9zaGFwZSB0aHVuaylcbjs7XG5cbnR5cGUgKCdtYWluLCAncmVzdWx0KSBiYXNpY19zcGVjX2NvbW1hbmQgPVxuICBzdW1tYXJ5OnN0cmluZ1xuICAtPiA/cmVhZG1lOih1bml0IC0+IHN0cmluZylcbiAgLT4gKCdtYWluLCB1bml0IC0+ICdyZXN1bHQpIENvbW1hbmRfYmFzZS5TcGVjLnRcbiAgLT4gJ21haW5cbiAgLT4gdFxuXG5sZXQgZXh0ZW5kX2V4biB+bWVtIH5hZGQgbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGlmIG1lbSBtYXAga2V5XG4gIHRoZW4gZmFpbHdpdGhmIFwidGhlcmUgaXMgYWxyZWFkeSBhICVzIG5hbWVkICVzXCIgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSkga2V5ICgpO1xuICBhZGQgbWFwIH5rZXkgfmRhdGFcbjs7XG5cbmxldCBleHRlbmRfbWFwX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgZXh0ZW5kX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhIH5tZW06TWFwLm1lbSB+YWRkOk1hcC5zZXRcbjs7XG5cbmxldCBleHRlbmRfYWxpc3RfZXhuIGFsaXN0IGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG5cbiAgICBhbGlzdFxuICAgIGtleV90eXBlXG4gICAgfmtleVxuICAgIGRhdGFcbiAgICB+bWVtOihmdW4gYWxpc3Qga2V5IC0+IExpc3QuQXNzb2MubWVtIGFsaXN0IGtleSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuICAgIH5hZGQ6KGZ1biBhbGlzdCB+a2V5IH5kYXRhIC0+IExpc3QuQXNzb2MuYWRkIGFsaXN0IGtleSBkYXRhIH5lcXVhbDpTdHJpbmcuZXF1YWwpXG47O1xuXG5tb2R1bGUgQmFpbG91dF9kdW1wX2ZsYWcgPSBzdHJ1Y3RcbiAgbGV0IGFkZCBiYXNlIH5uYW1lIH5hbGlhc2VzIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCB+dGV4dCB+dGV4dF9zdW1tYXJ5ID1cbiAgICBsZXQgZmxhZ3MgPSBiYXNlLkNvbW1hbmRfYmFzZS5mbGFncyBpblxuICAgIGxldCBmbGFncyA9XG4gICAgICBleHRlbmRfbWFwX2V4blxuICAgICAgICBmbGFnc1xuICAgICAgICBLZXlfdHlwZS5GbGFnXG4gICAgICAgIH5rZXk6bmFtZVxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBGbGFnLk51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBpZ25vcmVcbiAgICAgICAgOyBhY3Rpb24gPSBQcmludF9pbmZvX2FuZF9xdWl0IChmdW4gZW52IC0+IHRleHQgZW52KVxuICAgICAgICA7IGRvYyA9IHNwcmludGYgXCIgcHJpbnQgJXMgYW5kIGV4aXRcIiB0ZXh0X3N1bW1hcnlcbiAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gYFByZWZpeFxuICAgICAgICB9XG4gICAgaW5cbiAgICB7IGJhc2Ugd2l0aCBmbGFncyB9XG4gIDs7XG5lbmRcblxubGV0IGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgeyBDb21tYW5kX2Jhc2UuUGFyYW0udXNhZ2U7IGZsYWdzOyBmIH0gPVxuICBsZXQgZmxhZ3MgPSBmbGFncyAoKSBpblxuICBsZXQgdXNhZ2UgPSB1c2FnZSAoKSBpblxuICBsZXQgYW5vbnMgKCkgPVxuICAgIGxldCBvcGVuIEFub25zLlBhcnNlci5CYXNpYy5Gb3Jfb3BlbmluZyBpblxuICAgIGYgKClcbiAgICA+PnwgZnVuIHBhcmFtcyBgUGFyc2VfYXJncyAtPlxuICAgIGxldCBvdXRjb21lID0gcGFyYW1zICgpIGluXG4gICAgbWF0Y2ggb3V0Y29tZS5yZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycikgLT4gZGllIFwiJXNcIiAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnIpICgpXG4gICAgfCBPayB0aHVuayAtPiBmdW4gYFJ1bl9tYWluIC0+IHRodW5rICgpXG4gIGluXG4gIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlIGZsYWdzIGluXG4gIGxldCBiYXNlID0geyBDb21tYW5kX2Jhc2Uuc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3M7IGFub25zIH0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgYmFzZVxuICAgICAgfm5hbWU6XCItaGVscFwiXG4gICAgICB+YWxpYXNlczpbIFwiLT9cIiBdXG4gICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0taGVscFwiIF1cbiAgICAgIH50ZXh0X3N1bW1hcnk6XCJ0aGlzIGhlbHAgdGV4dFwiXG4gICAgICB+dGV4dDooZnVuIGVudiAtPiBMYXp5LmZvcmNlIChFbnYuZmluZF9leG4gZW52IENvbW1hbmRfYmFzZS5oZWxwX2tleSkpXG4gIGluXG4gIEJhc2UgYmFzZVxuOztcblxubGV0IGJhc2ljX3NwZWMgfnN1bW1hcnkgP3JlYWRtZSBzcGVjIG1haW4gPVxuICBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIChDb21tYW5kX2Jhc2UuU3BlYy50b19wYXJhbSBzcGVjIG1haW4pXG47O1xuXG5sZXQgc3Vic19rZXkgOiAoc3RyaW5nICogdCkgbGlzdCBFbnYuS2V5LnQgPSBFbnYua2V5X2NyZWF0ZSBcInN1YmNvbW1hbmRzXCJcblxubGV0IGxhenlfZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCBzdWJjb21tYW5kcyA9XG4gICAgTGF6eS5tYXAgYWxpc3QgfmY6KGZ1biBhbGlzdCAtPlxuICAgICAgbGV0IGFsaXN0ID1cbiAgICAgICAgTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAobmFtZSwgdCkgLT4gbm9ybWFsaXplIEtleV90eXBlLlN1YmNvbW1hbmQgbmFtZSwgdClcbiAgICAgIGluXG4gICAgICBtYXRjaCBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTdHJpbmcpIGFsaXN0IHdpdGhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBzdWJjb21tYW5kcyBuYW1lZCAlc1wiIG5hbWUgKClcbiAgICAgIHwgYE9rIG1hcCAtPlxuICAgICAgICAobWF0Y2ggcHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciB3aXRoXG4gICAgICAgICB8IFNvbWUgKCkgLT4gYWxpc3RcbiAgICAgICAgIHwgTm9uZSAtPiBNYXAudG9fYWxpc3QgbWFwKSlcbiAgaW5cbiAgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH1cbjs7XG5cbmxldCBncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IGFsaXN0ID1cbiAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gZiAoKSAtPiBTdHJpbmcuc3RyaXAgKGYgKCkpKSBpblxuICBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgKExhenkuZnJvbV92YWwgYWxpc3QpXG47O1xuXG5sZXQgZXhlYyB+c3VtbWFyeSA/cmVhZG1lID8oY2hpbGRfc3ViY29tbWFuZCA9IFtdKSA/ZW52IH5wYXRoX3RvX2V4ZSAoKSA9XG4gIGxldCB3b3JraW5nX2RpciA9XG4gICAgRmlsZW5hbWVfYmFzZS5kaXJuYW1lXG4gICAgQEBcbiAgICBtYXRjaCBwYXRoX3RvX2V4ZSB3aXRoXG4gICAgfCBgQWJzb2x1dGUgXyB8IGBSZWxhdGl2ZV90b19tZSBfIC0+IFN0ZGxpYi5TeXMuZXhlY3V0YWJsZV9uYW1lXG4gICAgfCBgUmVsYXRpdmVfdG9fYXJndjAgXyAtPiBTdGRsaWIuU3lzLmFyZ3YuKDApXG4gIGluXG4gIGxldCBwYXRoX3RvX2V4ZSA9XG4gICAgbWF0Y2ggcGF0aF90b19leGUgd2l0aFxuICAgIHwgYEFic29sdXRlIHAgLT5cbiAgICAgIGlmIG5vdCAoRmlsZW5hbWVfYmFzZS5pc19hYnNvbHV0ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBBYnNvbHV0ZSBtdXN0IGJlIGFic29sdXRlXCJcbiAgICAgIGVsc2UgcFxuICAgIHwgYFJlbGF0aXZlX3RvX21lIHAgfCBgUmVsYXRpdmVfdG9fYXJndjAgcCAtPlxuICAgICAgaWYgbm90IChGaWxlbmFtZV9iYXNlLmlzX3JlbGF0aXZlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYFJlbGF0aXZlX3RvX21lIG11c3QgYmUgcmVsYXRpdmVcIlxuICAgICAgZWxzZSBwXG4gIGluXG4gIEV4ZWMgeyBzdW1tYXJ5OyByZWFkbWU7IHdvcmtpbmdfZGlyOyBwYXRoX3RvX2V4ZTsgY2hpbGRfc3ViY29tbWFuZDsgZW52IH1cbjs7XG5cbmxldCBvZl9sYXp5IHRodW5rID0gTGF6eSB0aHVua1xuXG5sZXQgcmVjIHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgOiBQcm94eS50XG4gID1cbiAgbGV0IGtpbmQgPVxuICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgIHNleHBhYmxlXG4gICAgICB+d29ya2luZ19kaXJcbiAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgaW5cbiAgeyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IHBhdGhfdG9fc3ViY29tbWFuZDsgY2hpbGRfc3ViY29tbWFuZDsga2luZCB9XG5cbmFuZCBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gID1cbiAgbWF0Y2ggKHNleHBhYmxlIDogU2hhcGUuU2V4cGFibGUudCkgd2l0aFxuICB8IEJhc2UgYiAtPiBQcm94eS5LaW5kLkJhc2UgYlxuICB8IEV4ZWMgZSAtPiBQcm94eS5LaW5kLkV4ZWMgZVxuICB8IExhenkgbCAtPlxuICAgIFByb3h5LktpbmQuTGF6eVxuICAgICAgKExhenkubWFwIGwgfmY6KGZ1biBzZXhwYWJsZSAtPlxuICAgICAgICAga2luZF9vZl9zZXhwYWJsZVxuICAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQpKVxuICB8IEdyb3VwIGcgLT5cbiAgICBQcm94eS5LaW5kLkdyb3VwXG4gICAgICB7IGcgd2l0aFxuICAgICAgICBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgTGF6eS5tYXBcbiAgICAgICAgICAgIGcuc3ViY29tbWFuZHNcbiAgICAgICAgICAgIH5mOlxuICAgICAgICAgICAgICAoTGlzdC5tYXAgfmY6KGZ1biAoc3RyLCBzZXhwYWJsZSkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHBhdGhfdG9fc3ViY29tbWFuZCA9IHBhdGhfdG9fc3ViY29tbWFuZCBAIFsgc3RyIF0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IHByb3h5ID1cbiAgICAgICAgICAgICAgICAgICBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgICAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBzdHIsIHByb3h5KSlcbiAgICAgIH1cbjs7XG5cbm1vZHVsZSBWZXJzaW9uX2luZm8gKFZlcnNpb25fdXRpbCA6IFZlcnNpb25fdXRpbCkgPSBzdHJ1Y3RcbiAgbGV0IHByaW50X3ZlcnNpb24gfnZlcnNpb24gPSBwcmludF9lbmRsaW5lIChmb3JjZSB2ZXJzaW9uKVxuICBsZXQgcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbyA9IHByaW50X2VuZGxpbmUgKGZvcmNlIGJ1aWxkX2luZm8pXG5cbiAgbGV0IGNvbW1hbmQgfnZlcnNpb24gfmJ1aWxkX2luZm8gPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcInByaW50IHZlcnNpb24gaW5mb3JtYXRpb25cIlxuICAgICAgQ29tbWFuZF9iYXNlLlBhcmFtLihcbiAgICAgICAgcmV0dXJuIChmdW4gdmVyc2lvbl9mbGFnIGJ1aWxkX2luZm9fZmxhZyAtPlxuICAgICAgICAgIGlmIGJ1aWxkX2luZm9fZmxhZ1xuICAgICAgICAgIHRoZW4gcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mb1xuICAgICAgICAgIGVsc2UgaWYgdmVyc2lvbl9mbGFnXG4gICAgICAgICAgdGhlbiBwcmludF92ZXJzaW9uIH52ZXJzaW9uXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvO1xuICAgICAgICAgICAgcHJpbnRfdmVyc2lvbiB+dmVyc2lvbik7XG4gICAgICAgICAgZXhpdCAwKVxuICAgICAgICA8Kj4gZmxhZyBcIi12ZXJzaW9uXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgdGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgIDwqPiBmbGFnIFwiLWJ1aWxkLWluZm9cIiBub19hcmcgfmRvYzpcIiBwcmludCBidWlsZCBpbmZvIGZvciB0aGlzIGJ1aWxkXCIpXG4gIDs7XG5cbiAgbGV0IHJlYyBhZGQgfnZlcnNpb24gfmJ1aWxkX2luZm8gdW52ZXJzaW9uZWQgPVxuICAgIG1hdGNoIHVudmVyc2lvbmVkIHdpdGhcbiAgICB8IEJhc2UgYmFzZSAtPlxuICAgICAgbGV0IGJhc2UgPVxuICAgICAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgICAgICBiYXNlXG4gICAgICAgICAgfm5hbWU6XCItdmVyc2lvblwiXG4gICAgICAgICAgfmFsaWFzZXM6W11cbiAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0tdmVyc2lvblwiIF1cbiAgICAgICAgICB+dGV4dF9zdW1tYXJ5OlwidGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIHZlcnNpb24pXG4gICAgICBpblxuICAgICAgbGV0IGJhc2UgPVxuICAgICAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgICAgICBiYXNlXG4gICAgICAgICAgfm5hbWU6XCItYnVpbGQtaW5mb1wiXG4gICAgICAgICAgfmFsaWFzZXM6W11cbiAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0tYnVpbGQtaW5mb1wiIF1cbiAgICAgICAgICB+dGV4dF9zdW1tYXJ5OlwiaW5mbyBhYm91dCB0aGlzIGJ1aWxkXCJcbiAgICAgICAgICB+dGV4dDooZnVuIF8gLT4gZm9yY2UgYnVpbGRfaW5mbylcbiAgICAgIGluXG4gICAgICBCYXNlIGJhc2VcbiAgICB8IEdyb3VwIGdyb3VwIC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBncm91cC5Hcm91cC5zdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgc3ViY29tbWFuZHNcbiAgICAgICAgICAgIEtleV90eXBlLlN1YmNvbW1hbmRcbiAgICAgICAgICAgIH5rZXk6XCJ2ZXJzaW9uXCJcbiAgICAgICAgICAgIChjb21tYW5kIH52ZXJzaW9uIH5idWlsZF9pbmZvKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IGdyb3VwIHdpdGggR3JvdXAuc3ViY29tbWFuZHMgfVxuICAgIHwgRXhlYyBleGVjIC0+IEV4ZWMgZXhlY1xuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGQgfnZlcnNpb24gfmJ1aWxkX2luZm8gKExhenkuZm9yY2UgdGh1bmspKSlcbiAgOztcblxuICBsZXQgbm9ybWFsaXplX3ZlcnNpb25fbGluZXMgbGluZXMgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiIChMaXN0LnNvcnQgbGluZXMgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdmVyc2lvbiA9IGxhenkgKG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIFZlcnNpb25fdXRpbC52ZXJzaW9uX2xpc3QpXG5cbiAgbGV0IGRlZmF1bHRfYnVpbGRfaW5mbyA9XG4gICAgbGF6eVxuICAgICAgKCogbGF6eSB0byBhdm9pZCBsb2FkaW5nIGFsbCB0aGUgdGltZSB6b25lIHN0dWZmIGF0IHRvcGxldmVsICopXG4gICAgICAoVmVyc2lvbl91dGlsLnJlcHJpbnRfYnVpbGRfaW5mbyBWZXJzaW9uX3V0aWwuVGltZS5zZXhwX29mX3QpXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVmVyc2lvbl9pbmZvXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKHN0cnVjdFxuICAgICAgICBsZXQgdmVyc2lvbl9saXN0ID0gWyBcImhnOi8vc29tZS9wYXRoXzB4ZGVhZGJlZWZcIjsgXCJzc2g6Ly9hL3BhdGhfOGJhZGYwMGRcIiBdXG4gICAgICAgIGxldCByZXByaW50X2J1aWxkX2luZm8gdG9fc2V4cCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwICgpKVxuXG4gICAgICAgIG1vZHVsZSBUaW1lID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICBlbmRcbiAgICAgIGVuZClcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IHZlcnNpb24gd2hlcmUgbXVsdGlwbGUgcmVwb3MgYXJlIHVzZWRcIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjpWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAgICAgaGc6Ly9zb21lL3BhdGhfMHhkZWFkYmVlZlxuICAgICAgICBzc2g6Ly9hL3BhdGhfOGJhZGYwMGQgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IGJ1aWxkIGluZm9cIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbzoobGF6eSBcInNvbWUgYnVpbGQgaW5mb1wiKTtcbiAgICAgIFslZXhwZWN0IHt8IHNvbWUgYnVpbGQgaW5mbyB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgcmVjIHN1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2UgeCAtPiB4LnN1bW1hcnlcbiAgfCBHcm91cCB4IC0+IHguc3VtbWFyeVxuICB8IEV4ZWMgeCAtPiB4LnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IHN1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5tb2R1bGUgU3BlYyA9IHN0cnVjdFxuICBpbmNsdWRlIENvbW1hbmRfYmFzZS5TcGVjXG5cbiAgbGV0IHBhdGggPSBtYXAgfmY6UGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gIG1vZHVsZSBTcGVjID0gU3BlYy5EZXByZWNhdGVkXG5cbiAgbGV0IHN1bW1hcnkgPSBzdW1tYXJ5XG5cbiAgbGV0IHJlYyBnZXRfZmxhZ19uYW1lcyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIGJhc2UgLT4gYmFzZS5Db21tYW5kX2Jhc2UuZmxhZ3MgfD4gTWFwLmtleXNcbiAgICB8IExhenkgdGh1bmsgLT4gZ2V0X2ZsYWdfbmFtZXMgKExhenkuZm9yY2UgdGh1bmspXG4gICAgfCBHcm91cCBfIHwgRXhlYyBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBoZWxwX3JlY3Vyc2l2ZSB+Y21kIH53aXRoX2ZsYWdzIH5leHBhbmRfZG90cyB0IHMgPVxuICAgIGxldCByZWMgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzID1cbiAgICAgIGxldCBuZXdfcyA9IHMgXiAoaWYgZXhwYW5kX2RvdHMgdGhlbiBjbWQgZWxzZSBcIi5cIikgXiBcIiBcIiBpblxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IExhenkgdGh1bmsgLT5cbiAgICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICAgICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgICAgbGV0IGJhc2VfaGVscCA9IHMgXiBjbWQsIHN1bW1hcnkgKEJhc2UgYmFzZSkgaW5cbiAgICAgICAgaWYgd2l0aF9mbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYmFzZV9oZWxwXG4gICAgICAgICAgOjogTGlzdC5tYXBcbiAgICAgICAgICAgICAgIH5mOihmdW4gKGZsYWcsIGgpIC0+IG5ld19zIF4gZmxhZywgaClcbiAgICAgICAgICAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgICAgICAgICAgIH5jb21wYXJlOkNvbW1hbmRfYmFzZS5EZXByZWNhdGVkLnN1YmNvbW1hbmRfY21wX2ZzdFxuICAgICAgICAgICAgICAgICAgKENvbW1hbmRfYmFzZS5EZXByZWNhdGVkLmZsYWdzX2hlbHAgfmRpc3BsYXlfaGVscF9mbGFnczpmYWxzZSBiYXNlKSlcbiAgICAgICAgZWxzZSBbIGJhc2VfaGVscCBdXG4gICAgICB8IEdyb3VwIHsgc3VtbWFyeTsgc3ViY29tbWFuZHM7IHJlYWRtZSA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgICAgKHMgXiBjbWQsIHN1bW1hcnkpXG4gICAgICAgIDo6IChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6Q29tbWFuZF9iYXNlLkRlcHJlY2F0ZWQuc3ViY29tbWFuZF9jbXBfZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KGZ1biAoY21kJywgdCkgLT4gaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQ6Y21kJyB0IG5ld19zKVxuICAgICAgICAgICApXG4gICAgICB8IEV4ZWMgXyAtPlxuICAgICAgICAoKiBDb21tYW5kLmV4ZWMgZG9lcyBub3Qgc3VwcG9ydCBkZXByZWNhdGVkIGNvbW1hbmRzICopXG4gICAgICAgIFtdXG4gICAgaW5cbiAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX3VuaXggKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBzdHJpbmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyLlZlcnNpb25fdXRpbClcblxuICBtb2R1bGUgRm9yX3VuaXhfd2l0aF9jb21tYW5kX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBFbnZfdmFyLnQgPSBzdHJ1Y3RcbiAgICAoKiBXZSBmb3JjZSBhY2Nlc3MgdG8gZW52IHZhcnMgdG8gZ28gdGhyb3VnaCBbQ29tbWFuZF9lbnZfdmFyXSBzbyB0aGF0IHdlIGNhbiBrZWVwIGFuXG4gICAgICAgYWNjdXJhdGUgZW51bWVyYXRpb24gb2YgdGhlIHZhcmlhYmxlcyB3ZSB1c2UuICopXG5cbiAgICBpbmNsdWRlIEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXJcblxuICAgIG1vZHVsZSBVbml4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFVuaXhcblxuICAgICAgbGV0IHB1dGVudiB+a2V5IH5kYXRhID0gcHV0ZW52IH5rZXk6KEVudl92YXIudG9fc3RyaW5nIGtleSkgfmRhdGFcbiAgICAgIGxldCB1bnNldGVudiBrZXkgPSB1bnNldGVudiAoRW52X3Zhci50b19zdHJpbmcga2V5KVxuICAgICAgbGV0IHVuc2FmZV9nZXRlbnYga2V5ID0gdW5zYWZlX2dldGVudiAoRW52X3Zhci50b19zdHJpbmcga2V5KVxuXG4gICAgICBsZXQgY29udmVydF9lbnYgZW52ID1cbiAgICAgICAgbGV0IGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0ID1cbiAgICAgICAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGVudl92YXIsIHN0cikgLT4gRW52X3Zhci50b19zdHJpbmcgZW52X3Zhciwgc3RyKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBlbnYgd2l0aFxuICAgICAgICB8IGBSZXBsYWNlIGxpc3QgLT4gYFJlcGxhY2UgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBFeHRlbmQgbGlzdCAtPiBgRXh0ZW5kIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgT3ZlcnJpZGUgbGlzdCAtPiBgT3ZlcnJpZGUgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBSZXBsYWNlX3JhdyBfIGFzIHJlcGxhY2UgLT4gcmVwbGFjZVxuICAgICAgOztcblxuICAgICAgbGV0IGV4ZWMgfnByb2cgfmFyZ3YgP3VzZV9wYXRoID9lbnYgKCkgPVxuICAgICAgICBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52OihPcHRpb24ubWFwIGVudiB+Zjpjb252ZXJ0X2VudikgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGVfcHJvY2Vzc19lbnYgP3dvcmtpbmdfZGlyID9wcm9nX3NlYXJjaF9wYXRoID9hcmd2MCB+cHJvZyB+YXJncyB+ZW52ICgpID1cbiAgICAgICAgY3JlYXRlX3Byb2Nlc3NfZW52XG4gICAgICAgICAgP3dvcmtpbmdfZGlyXG4gICAgICAgICAgP3Byb2dfc2VhcmNoX3BhdGhcbiAgICAgICAgICA/YXJndjBcbiAgICAgICAgICB+cHJvZ1xuICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgfmVudjooY29udmVydF9lbnYgZW52KVxuICAgICAgICAgICgpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyXG5cbiAgKCogQ2xlYXIgdGhlIHNldHRpbmcgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUgYXNzb2NpYXRlZCB3aXRoIGNvbW1hbmQtbGluZVxuICAgICBjb21wbGV0aW9uIGFuZCByZWN1cnNpdmUgaGVscCBzbyB0aGF0IHN1YnByb2Nlc3NlcyBkb24ndCBzZWUgdGhlbS5cblxuICAgICBVc2UgW3Vuc2FmZV9nZXRlbnZdIHNvIHNldHVpZC1yb290IHByb2dyYW1zIGNhbiBzdGlsbCByZWFkIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICAgVGhlcmUgaXMgbm8gc2VjdXJpdHkgcmlzayBoZXJlIGJlY2F1c2UgdGhlIHZhbHVlcyBhcmUgb25seSB1c2VkIGFzIHRyaWdnZXJzIHRvIGR1bXBcbiAgICAgb3V0IGNvbW1hbmQgaW5mb3JtYXRpb24uICopXG4gIGxldCBnZXRlbnZfYW5kX2NsZWFyIHZhciA9XG4gICAgbGV0IHZhbHVlID0gVW5peC51bnNhZmVfZ2V0ZW52IHZhciBpblxuICAgIGlmIE9wdGlvbi5pc19zb21lIHZhbHVlIHRoZW4gVW5peC51bnNldGVudiB2YXI7XG4gICAgdmFsdWVcbiAgOztcblxuICBsZXQgbWF5YmVfY29tcF9jd29yZCAoKSA9IGdldGVudl9hbmRfY2xlYXIgY29tcF9jd29yZCB8PiBPcHRpb24ubWFwIH5mOkludC5vZl9zdHJpbmdcblxuICBsZXQgc2V0X2NvbXBfY3dvcmQgbmV3X3ZhbHVlID1cbiAgICBsZXQgbmV3X3ZhbHVlID0gSW50LnRvX3N0cmluZyBuZXdfdmFsdWUgaW5cbiAgICBVbml4LnB1dGVudiB+a2V5OmNvbXBfY3dvcmQgfmRhdGE6bmV3X3ZhbHVlXG4gIDs7XG5cbiAgbW9kdWxlIEV4ZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4ZWNcblxuICAgIGxldCBleGVjX3dpdGhfYXJncyB0IH5hcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZCA9XG4gICAgICBsZXQgcHJvZyA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlIGluXG4gICAgICBsZXQgYXJncyA9IHQuY2hpbGRfc3ViY29tbWFuZCBAIGFyZ3MgaW5cbiAgICAgIGxldCBlbnYgPSB0LmVudiBpblxuICAgICAgT3B0aW9uLml0ZXIgbWF5YmVfbmV3X2NvbXBfY3dvcmQgfmY6KGZ1biBuIC0+XG4gICAgICAgICgqIFRoZSBsb2dpYyBmb3IgdHJhY2tpbmcgW21heWJlX25ld19jb21wX2N3b3JkXSBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHdoZXRoZXJcbiAgICAgICAgICAgdGhpcyBleGVjIHNwZWNpZmllcyBhIGNoaWxkIHN1YmNvbW1hbmQuIElmIGl0IGRvZXMsIENPTVBfQ1dPUkQgbmVlZHMgdG8gYmUgc2V0XG4gICAgICAgICAgIGhpZ2hlciB0byBhY2NvdW50IGZvciB0aGUgYXJndW1lbnRzIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2hpbGQgc3ViY29tbWFuZC4gKilcbiAgICAgICAgc2V0X2NvbXBfY3dvcmQgKG4gKyBMaXN0Lmxlbmd0aCB0LmNoaWxkX3N1YmNvbW1hbmQpKTtcbiAgICAgIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICAgICAgICAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3Zhci5Vbml4LmV4ZWMgP2VudiB+cHJvZyB+YXJndjoocHJvZyA6OiBhcmdzKSAoKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYXBlLlNleHBhYmxlXG5cbiAgICBsZXQgcmVhZF9zdGRvdXRfYW5kX3N0ZGVyciAocHJvY2Vzc19pbmZvIDogVW5peC5Qcm9jZXNzX2luZm8udCkgPVxuICAgICAgKCogV2UgbmVlZCB0byByZWFkIGVhY2ggb2Ygc3Rkb3V0IGFuZCBzdGRlcnIgaW4gYSBzZXBhcmF0ZSB0aHJlYWQgdG8gYXZvaWQgZGVhZGxvY2tzXG4gICAgICAgICBpZiB0aGUgY2hpbGQgcHJvY2VzcyBkZWNpZGVzIHRvIHdhaXQgZm9yIGEgcmVhZCBvbiBvbmUgYmVmb3JlIGNsb3NpbmcgdGhlIG90aGVyLlxuICAgICAgICAgQnVmZmVyaW5nIG1heSBoaWRlIHRoaXMgcHJvYmxlbSB1bnRpbCBvdXRwdXQgaXMgXCJzdWZmaWNpZW50bHkgbGFyZ2VcIi4gKilcbiAgICAgIGxldCBzdGFydF9yZWFkaW5nIGRlc2NyIGluZm8gPVxuICAgICAgICBsZXQgb3V0cHV0ID0gcmVmIE5vbmUgaW5cbiAgICAgICAgbGV0IHRocmVhZCA9XG4gICAgICAgICAgVGhyZWFkLmNyZWF0ZVxuICAgICAgICAgICAgfm9uX3VuY2F1Z2h0X2V4bjpgUHJpbnRfdG9fc3RkZXJyXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICBkZXNjciB8PiBVbml4LmluX2NoYW5uZWxfb2ZfZGVzY3IgfD4gSW5fY2hhbm5lbC5pbnB1dF9hbGwpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgb3V0cHV0IDo9IFNvbWUgcmVzdWx0KVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgU3RhZ2VkLnN0YWdlIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJlYWQuam9pbiB0aHJlYWQ7XG4gICAgICAgICAgVW5peC5jbG9zZSBkZXNjcjtcbiAgICAgICAgICBtYXRjaCAhb3V0cHV0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUcgZmFpbGVkIHRvIHJlYWRcIiAoaW5mbyA6IEluZm8udCldXG4gICAgICAgICAgfCBTb21lIChPayBvdXRwdXQpIC0+IG91dHB1dFxuICAgICAgICAgIHwgU29tZSAoRXJyb3IgZXhuKSAtPiByYWlzZSBleG4pXG4gICAgICBpblxuICAgICAgKCogV2UgbWlnaHQgaGFuZyBmb3JldmVyIHRyeWluZyB0byBqb2luIHRoZSByZWFkaW5nIHRocmVhZHMgaWYgdGhlIGNoaWxkIHByb2Nlc3Mga2VlcHNcbiAgICAgICAgIHRoZSBmaWxlIGRlc2NyaXB0b3Igb3Blbi4gTm90IGhhbmRsaW5nIHRoaXMgYmVjYXVzZSBJIHRoaW5rIHdlJ3ZlIG5ldmVyIHNlZW4gaXRcbiAgICAgICAgIGluIHRoZSB3aWxkIGRlc3BpdGUgcnVubmluZyB2dWxuZXJhYmxlIGNvZGUgZm9yIHllYXJzLiAqKVxuICAgICAgKCogV2UgaGF2ZSB0byBzdGFydCBib3RoIHRocmVhZHMgYmVmb3JlIGpvaW5pbmcgYW55IG9mIHRoZW0uICopXG4gICAgICBsZXQgZmluaXNoX3N0ZG91dCA9IHN0YXJ0X3JlYWRpbmcgcHJvY2Vzc19pbmZvLnN0ZG91dCAoSW5mby5vZl9zdHJpbmcgXCJzdGRvdXRcIikgaW5cbiAgICAgIGxldCBmaW5pc2hfc3RkZXJyID0gc3RhcnRfcmVhZGluZyBwcm9jZXNzX2luZm8uc3RkZXJyIChJbmZvLm9mX3N0cmluZyBcInN0ZGVyclwiKSBpblxuICAgICAgU3RhZ2VkLnVuc3RhZ2UgZmluaXNoX3N0ZG91dCAoKSwgU3RhZ2VkLnVuc3RhZ2UgZmluaXNoX3N0ZGVyciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCA9XG4gICAgICBsZXQgcHJvY2Vzc19pbmZvID1cbiAgICAgICAgVW5peC5jcmVhdGVfcHJvY2Vzc19lbnZcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5wcm9nOihhYnNfcGF0aCB+ZGlyOndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlKVxuICAgICAgICAgIH5hcmdzOmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+ZW52OlxuICAgICAgICAgICAgKGxldCBoZWxwX3NleHAgPVxuICAgICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zIHw+IFNldC5zZXhwX29mX21fX3QgKG1vZHVsZSBJbnQpIHw+IFNleHAudG9fc3RyaW5nXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBgRXh0ZW5kIFsgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQLCBoZWxwX3NleHAgXSlcbiAgICAgIGluXG4gICAgICBVbml4LmNsb3NlIHByb2Nlc3NfaW5mby5zdGRpbjtcbiAgICAgIGxldCBzdGRvdXQsIHN0ZGVyciA9IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgcHJvY2Vzc19pbmZvIGluXG4gICAgICBVbml4LndhaXQgcHJvY2Vzc19pbmZvLnBpZDtcbiAgICAgICgqIE5vdyB3ZSd2ZSBraWxsZWQgYWxsIHRoZSBwcm9jZXNzZXMgYW5kIHRocmVhZHMgd2UgbWFkZS4gKilcbiAgICAgIG1hdGNoIHN0ZG91dCB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IFZlcnNpb25lZC50X29mX3NleHAgfD4gb2ZfdmVyc2lvbmVkIHdpdGhcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcImNhbm5vdCBwYXJzZSBjb21tYW5kIHNoYXBlXCJcbiAgICAgICAgICAgICAgfl86KGV4biA6IGV4bilcbiAgICAgICAgICAgICAgKHN0ZG91dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgKHN0ZGVyciA6IHN0cmluZyldXG4gICAgICB8IHQgLT4gdFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmQgKHQgOiB0KSB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICAgIG1hdGNoIHBhdGhfdG9fc3ViY29tbWFuZCB3aXRoXG4gICAgICB8IFtdIC0+IHRcbiAgICAgIHwgc3ViIDo6IHN1YnMgLT5cbiAgICAgICAgKG1hdGNoIHQgd2l0aFxuICAgICAgICAgfCBCYXNlIF8gLT4gZmFpbHdpdGhmIFwidW5leHBlY3RlZCBzdWJjb21tYW5kICVTXCIgc3ViICgpXG4gICAgICAgICB8IExhenkgdGh1bmsgLT4gZmluZCAoTGF6eS5mb3JjZSB0aHVuaykgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgfCBFeGVjIHsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBjaGlsZF9zdWJjb21tYW5kOyBfIH0gLT5cbiAgICAgICAgICAgZmluZFxuICAgICAgICAgICAgIChvZl9leHRlcm5hbCB+d29ya2luZ19kaXIgfnBhdGhfdG9fZXhlIH5jaGlsZF9zdWJjb21tYW5kKVxuICAgICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQ6KHN1YiA6OiAoc3VicyBAIGNoaWxkX3N1YmNvbW1hbmQpKVxuICAgICAgICAgfCBHcm91cCBnIC0+XG4gICAgICAgICAgIChtYXRjaCBMaXN0LkFzc29jLmZpbmQgKExhenkuZm9yY2UgZy5zdWJjb21tYW5kcykgfmVxdWFsOlN0cmluZy5lcXVhbCBzdWIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcInVua25vd24gc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgICAgfCBTb21lIHQgLT4gZmluZCB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6c3VicykpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHByb3h5X29mX2V4ZSB+d29ya2luZ19kaXIgcGF0aF90b19leGUgY2hpbGRfc3ViY29tbWFuZCA9XG4gICAgU2V4cGFibGUub2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZFxuICAgIHw+IHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQ6W11cbiAgOztcblxuICBsZXQgcmVjIHNoYXBlX29mX3Byb3h5IHByb3h5IDogU2hhcGUudCA9IHNoYXBlX29mX3Byb3h5X2tpbmQgcHJveHkuUHJveHkua2luZFxuXG4gIGFuZCBzaGFwZV9vZl9leGUgKCkgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpciA9XG4gICAgc2hhcGVfb2ZfcHJveHkgKHByb3h5X29mX2V4ZSB+d29ya2luZ19kaXIgcGF0aF90b19leGUgY2hpbGRfc3ViY29tbWFuZClcblxuICBhbmQgc2hhcGVfb2ZfcHJveHlfa2luZCBraW5kID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IEJhc2UgYiAtPiBCYXNpYyBiXG4gICAgfCBMYXp5IGwgLT4gTGF6eSAoTGF6eS5tYXAgfmY6c2hhcGVfb2ZfcHJveHlfa2luZCBsKVxuICAgIHwgR3JvdXAgZyAtPlxuICAgICAgR3JvdXBcbiAgICAgICAgeyBnIHdpdGhcbiAgICAgICAgICBzdWJjb21tYW5kcyA9IExhenkubWFwIGcuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mOnNoYXBlX29mX3Byb3h5KVxuICAgICAgICB9XG4gICAgfCBFeGVjICh7IGNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChlLCBzaGFwZV9vZl9leGUgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpcilcbiAgOztcblxuICBsZXQgcmVjIHNoYXBlIHQgOiBTaGFwZS50ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJhc2UgYiAtPiBCYXNpYyAoQ29tbWFuZF9iYXNlLnNoYXBlIGIpXG4gICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cC5zaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZTpzaGFwZSBnKVxuICAgIHwgRXhlYyAoeyBFeGVjLmNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChFeGVjLnNoYXBlIGUsIHNoYXBlX29mX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyKVxuICAgIHwgTGF6eSB0aHVuayAtPiBzaGFwZSAoTGF6eS5mb3JjZSB0aHVuaylcbiAgOztcblxuICBsZXQgZ2F0aGVyX2hlbHAgfnJlY3Vyc2l2ZSB+ZmxhZ3MgfmV4cGFuZF9kb3RzIHNoYXBlID1cbiAgICBsZXQgcmVjIGxvb3AgcGF0aCBhY2Mgc2hhcGUgPVxuICAgICAgbGV0IHN0cmluZ19vZl9wYXRoID0gaWYgZXhwYW5kX2RvdHMgdGhlbiBQYXRoLnRvX3N0cmluZyBlbHNlIFBhdGgudG9fc3RyaW5nX2RvdHMgaW5cbiAgICAgIGxldCBnYXRoZXJfZ3JvdXAgcGF0aCBhY2Mgc3ViY29tbWFuZHMgPVxuICAgICAgICBsZXQgZmlsdGVyZWRfc3ViY29tbWFuZHMgPVxuICAgICAgICAgICgqIE9ubHkgc2hvdyB0aGUgW2hlbHBdIHN1YmNvbW1hbmQgYXQgdG9wLWxldmVsLiAqKVxuICAgICAgICAgIGlmIFBhdGguaXNfZW1wdHkgcGF0aFxuICAgICAgICAgIHRoZW4gc3ViY29tbWFuZHNcbiAgICAgICAgICBlbHNlIExpc3QuQXNzb2MucmVtb3ZlIH5lcXVhbDpTdHJpbmcuKCA9ICkgc3ViY29tbWFuZHMgXCJoZWxwXCJcbiAgICAgICAgaW5cbiAgICAgICAgZmlsdGVyZWRfc3ViY29tbWFuZHNcbiAgICAgICAgfD4gTGlzdC5zdGFibGVfc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBoZWxwX3NjcmVlbl9jb21wYXJlIChmc3QgYSkgKGZzdCBiKSlcbiAgICAgICAgfD4gTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyAoc3ViY29tbWFuZCwgc2hhcGUpIC0+XG4gICAgICAgICAgbGV0IHBhdGggPSBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kIGluXG4gICAgICAgICAgbGV0IG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIGluXG4gICAgICAgICAgbGV0IGRvYyA9IFNoYXBlLmdldF9zdW1tYXJ5IHNoYXBlIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHsgU2hhcGUuRmxhZ19pbmZvLm5hbWU7IGRvYzsgYWxpYXNlcyA9IFtdIH0gOjogYWNjIGluXG4gICAgICAgICAgaWYgcmVjdXJzaXZlIHRoZW4gbG9vcCBwYXRoIGFjYyBzaGFwZSBlbHNlIGFjYylcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgICB8IEV4ZWMgKF8sIHNoYXBlKSAtPlxuICAgICAgICAoKiBJZiB0aGUgZXhlY3V0YWJsZSBiZWluZyBjYWxsZWQgZG9lc24ndCB1c2UgW0NvcmUuQ29tbWFuZF0sIHRoZW4gc2V4cCBleHRyYWN0aW9uXG4gICAgICAgICAgIHdpbGwgZmFpbC4gKilcbiAgICAgICAgKHRyeSBsb29wIHBhdGggYWNjIChzaGFwZSAoKSkgd2l0aFxuICAgICAgICAgfCBfIC0+IGFjYylcbiAgICAgIHwgR3JvdXAgZyAtPiBnYXRoZXJfZ3JvdXAgcGF0aCBhY2MgKExhenkuZm9yY2UgZy5zdWJjb21tYW5kcylcbiAgICAgIHwgQmFzaWMgYiAtPlxuICAgICAgICBpZiBmbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYi5mbGFnc1xuICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gZm10IC0+IFN0cmluZy4oIDw+ICkgZm10Lm5hbWUgXCJbLWhlbHBdXCIpXG4gICAgICAgICAgfD4gTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyBmbXQgLT5cbiAgICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZDpmbXQubmFtZSBpblxuICAgICAgICAgICAgbGV0IGZtdCA9IHsgZm10IHdpdGggbmFtZSA9IHN0cmluZ19vZl9wYXRoIHBhdGggfSBpblxuICAgICAgICAgICAgZm10IDo6IGFjYylcbiAgICAgICAgZWxzZSBhY2NcbiAgICAgIHwgTGF6eSB0aHVuayAtPiBsb29wIHBhdGggYWNjIChMYXp5LmZvcmNlIHRodW5rKVxuICAgIGluXG4gICAgbG9vcCBQYXRoLmVtcHR5IFtdIHNoYXBlIHw+IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IH5mbGFncyB+cGF0aCB+c3VtbWFyeSB+cmVhZG1lIH5mb3JtYXRfbGlzdCA9XG4gICAgdW5wYXJhZ3JhcGhzXG4gICAgICAoTGlzdC5maWx0ZXJfb3B0XG4gICAgICAgICBbIFNvbWUgc3VtbWFyeVxuICAgICAgICAgOyBTb21lIChTdHJpbmcuY29uY2F0IFsgXCIgIFwiOyBQYXRoLnRvX3N0cmluZyBwYXRoOyBcIiBTVUJDT01NQU5EXCIgXSlcbiAgICAgICAgIDsgcmVhZG1lXG4gICAgICAgICA7IFNvbWUgKGlmIGZsYWdzIHRoZW4gXCI9PT0gc3ViY29tbWFuZHMgYW5kIGZsYWdzID09PVwiIGVsc2UgXCI9PT0gc3ViY29tbWFuZHMgPT09XCIpXG4gICAgICAgICA7IFNvbWUgKFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnRvX3N0cmluZyBmb3JtYXRfbGlzdClcbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZSA9XG4gICAgbGV0IGZvcm1hdF9saXN0ID0gZ2F0aGVyX2hlbHAgfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlIHNoYXBlIGluXG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgQmFzaWMgYiAtPlxuICAgICAgbGV0IHVzYWdlID0gU2hhcGUuQmFzZV9pbmZvLmdldF91c2FnZSBiIGluXG4gICAgICB1bnBhcmFncmFwaHNcbiAgICAgICAgKExpc3QuZmlsdGVyX29wdFxuICAgICAgICAgICBbIFNvbWUgYi5zdW1tYXJ5XG4gICAgICAgICAgIDsgU29tZSAoXCIgIFwiIF4gUGF0aC50b19zdHJpbmcgcGF0aCBeIFwiIFwiIF4gdXNhZ2UpXG4gICAgICAgICAgIDsgYi5yZWFkbWVcbiAgICAgICAgICAgOyBTb21lIFwiPT09IGZsYWdzID09PVwiXG4gICAgICAgICAgIDsgU29tZSAoU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkudG9fc3RyaW5nIGIuZmxhZ3MpXG4gICAgICAgICAgIF0pXG4gICAgfCBHcm91cCBnIC0+XG4gICAgICBncm91cF9vcl9leGVjX2hlbHBfdGV4dFxuICAgICAgICB+ZmxhZ3NcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfnJlYWRtZTpnLnJlYWRtZVxuICAgICAgICB+c3VtbWFyeTpnLnN1bW1hcnlcbiAgICAgICAgfmZvcm1hdF9saXN0XG4gICAgfCBFeGVjIChlLCBfKSAtPlxuICAgICAgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHRcbiAgICAgICAgfmZsYWdzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5yZWFkbWU6ZS5yZWFkbWVcbiAgICAgICAgfnN1bW1hcnk6ZS5zdW1tYXJ5XG4gICAgICAgIH5mb3JtYXRfbGlzdFxuICAgIHwgTGF6eSB0aHVuayAtPiBoZWxwX2Zvcl9zaGFwZSAoTGF6eS5mb3JjZSB0aHVuaykgcGF0aCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmVcbiAgOztcblxuICBsZXQgaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUgPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcImV4cGxhaW4gYSBnaXZlbiBzdWJjb21tYW5kIChwZXJoYXBzIHJlY3Vyc2l2ZWx5KVwiXG4gICAgICBDb21tYW5kX2Jhc2UuUGFyYW0uKFxuICAgICAgICByZXR1cm4gKGZ1biByZWN1cnNpdmUgZmxhZ3MgZXhwYW5kX2RvdHMgcGF0aCAoZW52IDogRW52LnQpIGNtZF9vcHQgKCkgLT5cbiAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICBtYXRjaCBFbnYuZmluZCBlbnYgc3Vic19rZXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHN1YnMgLT4gc3Vic1xuICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgKCogbWFpbnRhaW5lZCBieSBbZGlzcGF0Y2hdICopXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcGF0aCA9XG4gICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGgucG9wX2hlbHAgcGF0aCBpblxuICAgICAgICAgICAgT3B0aW9uLmZvbGQgY21kX29wdCB+aW5pdDpwYXRoIH5mOihmdW4gcGF0aCBzdWJjb21tYW5kIC0+XG4gICAgICAgICAgICAgIFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcGF0aCwgc2hhcGUgPVxuICAgICAgICAgICAgbWF0Y2ggY21kX29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID0gTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjpzaGFwZSB8PiBMYXp5LmZyb21fdmFsIGluXG4gICAgICAgICAgICAgIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIGluXG4gICAgICAgICAgICAgIHBhdGgsIFNoYXBlLkdyb3VwIHsgcmVhZG1lOyBzdW1tYXJ5OyBzdWJjb21tYW5kcyB9XG4gICAgICAgICAgICB8IFNvbWUgY21kIC0+XG4gICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICBsb29rdXBfZXhwYW5kXG4gICAgICAgICAgICAgICAgICAgKExpc3QuQXNzb2MubWFwIHN1YnMgfmY6KGZ1biB4IC0+IHgsIGBQcmVmaXgpKVxuICAgICAgICAgICAgICAgICAgIGNtZFxuICAgICAgICAgICAgICAgICAgIFN1YmNvbW1hbmRcbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAgICBcInVua25vd24gc3ViY29tbWFuZCAlcyBmb3IgY29tbWFuZCAlczogJXNcIlxuICAgICAgICAgICAgICAgICAgIGNtZFxuICAgICAgICAgICAgICAgICAgIChQYXRoLnRvX3N0cmluZyBwYXRoKVxuICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBPayAocG9zc2libHlfZXhwYW5kZWRfbmFtZSwgdCkgLT5cbiAgICAgICAgICAgICAgICAgKCogRml4IHRoZSB1bmV4cGFuZGVkIHZhbHVlICopXG4gICAgICAgICAgICAgICAgIGxldCBwYXRoID1cbiAgICAgICAgICAgICAgICAgICBQYXRoLnJlcGxhY2VfZmlyc3QgfmZyb206Y21kIH50b186cG9zc2libHlfZXhwYW5kZWRfbmFtZSBwYXRoXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHBhdGgsIHNoYXBlIHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmludF9lbmRsaW5lIChoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cykpXG4gICAgICAgIDwqPiBmbGFnIFwiLXJlY3Vyc2l2ZVwiIG5vX2FyZyB+ZG9jOlwiIHNob3cgc3ViY29tbWFuZHMgb2Ygc3ViY29tbWFuZHMsIGV0Yy5cIlxuICAgICAgICA8Kj4gZmxhZyBcIi1mbGFnc1wiIG5vX2FyZyB+ZG9jOlwiIHNob3cgZmxhZ3MgYXMgd2VsbCBpbiByZWN1cnNpdmUgaGVscFwiXG4gICAgICAgIDwqPiBmbGFnIFwiLWV4cGFuZC1kb3RzXCIgbm9fYXJnIH5kb2M6XCIgZXhwYW5kIHN1YmNvbW1hbmRzIGluIHJlY3Vyc2l2ZSBoZWxwXCJcbiAgICAgICAgPCo+IHBhdGhcbiAgICAgICAgPCo+IGVudlxuICAgICAgICA8Kj4gYW5vbiAobWF5YmUgKFwiU1VCQ09NTUFORFwiICU6IHN0cmluZykpKVxuICA7O1xuXG4gICgqIFRoaXMgc2NyaXB0IHdvcmtzIGluIGJvdGggYmFzaCAodmlhIHJlYWRhcnJheSkgYW5kIHpzaCAodmlhIHJlYWQgLUEpLiAgSWYgeW91IGNoYW5nZVxuICAgICBpdCwgcGxlYXNlIHRlc3QgaW4gYm90aCBiYXNoIGFuZCB6c2guICBJdCBkb2VzIG5vdCB3b3JrIHRjc2ggKGRpZmZlcmVudCBmdW5jdGlvblxuICAgICBzeW50YXgpLiAqKVxuICBsZXQgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCkgPVxuICAgIGxldCBmbmFtZSA9IHNwcmludGYgXCJfanNhdXRvY29tXyVzXCIgKFBpZC50b19zdHJpbmcgKFVuaXguZ2V0cGlkICgpKSkgaW5cbiAgICBsZXQgYXJndl8wID0gU3RkbGliLlN5cy5hcmd2LigwKSBpblxuICAgIHByaW50ZlxuICAgICAgXCJmdW5jdGlvbiAlcyB7XFxuXFxcbiAgICAgIFxcICBleHBvcnQgQ09NUF9DV09SRFxcblxcXG4gICAgICBcXCAgQ09NUF9XT1JEU1swXT0lc1xcblxcXG4gICAgICBcXCAgaWYgdHlwZSByZWFkYXJyYXkgPiAvZGV2L251bGxcXG5cXFxuICAgICAgXFwgIHRoZW4gcmVhZGFycmF5IC10IENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZWxzZSBJRlM9XFxcIlxcblxcXG4gICAgICAgXFxcIiByZWFkIC1kIFxcXCJcXFwiIC1BIENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZmlcXG5cXFxuICAgICAgIH1cXG5cXFxuICAgICAgIGNvbXBsZXRlIC1GICVzICVzXFxuXFxcbiAgICAgICAlIVwiXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gIDs7XG5cbiAgbGV0IGR1bXBfaGVscF9zZXhwIH5zdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICBTZXQuaW50ZXIgU2V4cGFibGUuc3VwcG9ydGVkX3ZlcnNpb25zIHN1cHBvcnRlZF92ZXJzaW9uc1xuICAgIHw+IFNldC5tYXhfZWx0XG4gICAgfD4gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiQ291bGRuJ3QgY2hvb3NlIGEgc3VwcG9ydGVkIGhlbHAgb3V0cHV0IHZlcnNpb24gZm9yIENvbW1hbmQuZXhlYyBmcm9tIHRoZSBnaXZlbiBcXFxuICAgICAgICAgc3VwcG9ydGVkIHZlcnNpb25zLlwiXG4gICAgICAgIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9uc1xuICAgICAgICAoU2V0LnNleHBfb2ZfbV9fdCAobW9kdWxlIEludCkpXG4gICAgICB8PiBFcnJvci5yYWlzZVxuICAgIHwgU29tZSB2ZXJzaW9uX3RvX3VzZSAtPlxuICAgICAgc2V4cGFibGVfc2hhcGUgdFxuICAgICAgfD4gU2V4cGFibGUuZmluZCB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICB8PiBTZXhwYWJsZS50b192ZXJzaW9uZWQgfnZlcnNpb25fdG9fdXNlXG4gICAgICB8PiBTZXhwYWJsZS5WZXJzaW9uZWQuc2V4cF9vZl90XG4gICAgICB8PiBTZXhwLnRvX3N0cmluZ1xuICAgICAgfD4gcHJpbnRfc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2ID1cbiAgICBtYXRjaCBhcmd2IHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibWlzc2luZyBleGVjdXRhYmxlIG5hbWVcIlxuICAgIHwgY21kIDo6IGFyZ3MgLT5cbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCkgfmY6KGZ1biB2ZXJzaW9uIC0+XG4gICAgICAgIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgICAgICAgIFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgdmVyc2lvbiB8PiBTZXQubV9fdF9vZl9zZXhwIChtb2R1bGUgSW50KVxuICAgICAgICBpblxuICAgICAgICBkdW1wX2hlbHBfc2V4cCB+c3VwcG9ydGVkX3ZlcnNpb25zIHQgfnBhdGhfdG9fc3ViY29tbWFuZDphcmdzO1xuICAgICAgICBleGl0IDApO1xuICAgICAgT3B0aW9uLml0ZXIgKGdldGVudl9hbmRfY2xlYXIgQ09NTUFORF9PVVRQVVRfSU5TVEFMTEFUSU9OX0JBU0gpIH5mOihmdW4gXyAtPlxuICAgICAgICBkdW1wX2F1dG9jb21wbGV0ZV9mdW5jdGlvbiAoKTtcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIGNtZCwgYXJnc1xuICA7O1xuXG4gIGxldCBwcm9jZXNzX2FyZ3MgfmNtZCB+YXJncyA9XG4gICAgbGV0IG1heWJlX2NvbXBfY3dvcmQgPSBtYXliZV9jb21wX2N3b3JkICgpIGluXG4gICAgbGV0IGFyZ3MgPVxuICAgICAgbWF0Y2ggbWF5YmVfY29tcF9jd29yZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gQ21kbGluZS5vZl9saXN0IGFyZ3NcbiAgICAgIHwgU29tZSBjb21wX2N3b3JkIC0+XG4gICAgICAgIGxldCBhcmdzID0gTGlzdC50YWtlIChhcmdzIEAgWyBcIlwiIF0pIGNvbXBfY3dvcmQgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IGFyZ3MgfmluaXQ6Q21kbGluZS5OaWwgfmY6KGZ1biBhcmcgYXJncyAtPlxuICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgIHwgQ21kbGluZS5OaWwgLT4gQ21kbGluZS5Db21wbGV0ZSBhcmdcbiAgICAgICAgICB8IF8gLT4gQ21kbGluZS5Db25zIChhcmcsIGFyZ3MpKVxuICAgIGluXG4gICAgUGF0aC5jcmVhdGUgfnBhdGhfdG9fZXhlOmNtZCwgYXJncywgbWF5YmVfY29tcF9jd29yZFxuICA7O1xuXG4gIGxldCByZWMgYWRkX2hlbHBfc3ViY29tbWFuZHMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBfIGFzIHQgLT4gdFxuICAgIHwgRXhlYyBfIGFzIHQgLT4gdFxuICAgIHwgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH0gLT5cbiAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgIExhenkubWFwIHN1YmNvbW1hbmRzIH5mOihmdW4gc3ViY29tbWFuZHMgLT5cbiAgICAgICAgICBleHRlbmRfYWxpc3RfZXhuXG4gICAgICAgICAgICAoTGlzdC5Bc3NvYy5tYXAgc3ViY29tbWFuZHMgfmY6YWRkX2hlbHBfc3ViY29tbWFuZHMpXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwiaGVscFwiXG4gICAgICAgICAgICAoaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUpKVxuICAgICAgaW5cbiAgICAgIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG4gICAgfCBMYXp5IHRodW5rIC0+IExhenkgKGxhenkgKGFkZF9oZWxwX3N1YmNvbW1hbmRzIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggPVxuICAgIE9wdGlvbi52YWx1ZV9tYXAgZXh0ZW5kIH5kZWZhdWx0OmFyZ3MgfmY6KGZ1biBmIC0+XG4gICAgICBDbWRsaW5lLmV4dGVuZCBhcmdzIH5leHRlbmQ6ZiB+cGF0aClcbiAgOztcblxuICBsZXQgcmVjIGRpc3BhdGNoXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBlbnZcbiAgICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgICB+YXJnc1xuICAgICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYXp5IHRodW5rIC0+XG4gICAgICBsZXQgdCA9IExhenkuZm9yY2UgdGh1bmsgaW5cbiAgICAgIGRpc3BhdGNoXG4gICAgICAgIHRcbiAgICAgICAgZW52XG4gICAgICAgIH5leHRlbmRcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfmFyZ3NcbiAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBhcmdzID0gbWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCBpblxuICAgICAgbGV0IGhlbHBfdGV4dCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoaGVscF9mb3Jfc2hhcGUgKHNoYXBlIHQpIHBhdGggfnJlY3Vyc2l2ZTpmYWxzZSB+ZmxhZ3M6dHJ1ZSB+ZXhwYW5kX2RvdHM6ZmFsc2UpXG4gICAgICBpblxuICAgICAgQ29tbWFuZF9iYXNlLnJ1blxuICAgICAgICBiYXNlXG4gICAgICAgIGVudlxuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+aGVscF90ZXh0XG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgfm9uX2ZhaWx1cmU6Q29tbWFuZF9iYXNlLnJ1bl9leG5cbiAgICB8IEV4ZWMgZXhlYyAtPlxuICAgICAgbGV0IGFyZ3MgPSBDbWRsaW5lLnRvX2xpc3QgKG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGgpIGluXG4gICAgICBFeGVjLmV4ZWNfd2l0aF9hcmdzIH5hcmdzIGV4ZWMgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgfCBHcm91cCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9IGFzIGdyb3VwKSAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgbGV0IGVudiA9IEVudi5zZXQgZW52IH5rZXk6c3Vic19rZXkgfmRhdGE6KExhenkuZm9yY2Ugc3VicykgaW5cbiAgICAgIGxldCBkaWVfc2hvd2luZ19oZWxwIG1zZyA9XG4gICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgdGhlbiBleGl0IDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIlc1xcbiUhXCJcbiAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgfnJlY3Vyc2l2ZTpmYWxzZVxuICAgICAgICAgICAgICAgfmZsYWdzOmZhbHNlXG4gICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgIChzaGFwZSAoR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9KSlcbiAgICAgICAgICAgICAgIHBhdGgpO1xuICAgICAgICAgIGRpZSBcIiVzXCIgbXNnICgpKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgcGFyc2VfZ3JvdXAgYXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgICBsZXQgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBPcHRpb24ubWFwIH5mOkludC5wcmVkIG1heWJlX25ld19jb21wX2N3b3JkIGluXG4gICAgICAgIGxldCBza2lwIHJlc3QgPSBwYXJzZV9ncm91cCByZXN0IH5tYXliZV9uZXdfY29tcF9jd29yZCBpblxuICAgICAgICBsZXQgcmVzb2x2ZSBzdWIgcmVzdCA9XG4gICAgICAgICAgbGV0IHN1YnMgPSBMaXN0LkFzc29jLm1hcCAoTGF6eS5mb3JjZSBzdWJzKSB+ZjooZnVuIHggLT4geCwgYFByZWZpeCkgaW5cbiAgICAgICAgICBtYXRjaCBsb29rdXBfZXhwYW5kIHN1YnMgc3ViIFN1YmNvbW1hbmQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgbXNnIC0+IGRpZV9zaG93aW5nX2hlbHAgbXNnXG4gICAgICAgICAgfCBPayAoc3ViLCB0KSAtPlxuICAgICAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICBlbnZcbiAgICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICAgIH5wYXRoOihQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kOnN1YilcbiAgICAgICAgICAgICAgfmFyZ3M6cmVzdFxuICAgICAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChhcmdzIDogQ21kbGluZS50KSB3aXRoXG4gICAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBkaWVfc2hvd2luZ19oZWxwXG4gICAgICAgICAgICAgICAoc3ByaW50ZiBcIm1pc3Npbmcgc3ViY29tbWFuZCBmb3IgY29tbWFuZCAlc1wiIChQYXRoLnRvX3N0cmluZyBwYXRoKSlcbiAgICAgICAgICAgfCBTb21lIGJvZHkgLT4gYm9keSB+cGF0aDooUGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aCkpXG4gICAgICAgIHwgQ29ucyAoc3ViLCByZXN0KSAtPlxuICAgICAgICAgICgqIE1hdGNoIGZvciBmbGFncyByZWNvZ25pemVkIHdoZW4gc3ViY29tbWFuZHMgYXJlIGV4cGVjdGVkIG5leHQgKilcbiAgICAgICAgICAobWF0Y2ggc3ViIHdpdGhcbiAgICAgICAgICAgKCogUmVjb2duaXplZCBhdCB0aGUgdG9wIGxldmVsIGNvbW1hbmQgb25seSAqKVxuICAgICAgICAgICB8IChcIi12ZXJzaW9uXCIgfCBcIi0tdmVyc2lvblwiKSB3aGVuIFBhdGgubGVuZ3RoIHBhdGggPSAxIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjtcbiAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgfCAoXCItYnVpbGQtaW5mb1wiIHwgXCItLWJ1aWxkLWluZm9cIikgd2hlbiBQYXRoLmxlbmd0aCBwYXRoID0gMSAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm87XG4gICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgICgqIFJlY29nbml6ZWQgZXZlcnl3aGVyZSAqKVxuICAgICAgICAgICB8IFwiLWhlbHBcIiB8IFwiLS1oZWxwXCIgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBOaWwgfCBDb21wbGV0ZSAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgICAgICAgIH5yZWN1cnNpdmU6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZmxhZ3M6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoc2hhcGUgKEdyb3VwIHsgZ3JvdXAgd2l0aCBzdWJjb21tYW5kcyA9IHN1YnMgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aCk7XG4gICAgICAgICAgICAgICAgIGV4aXQgMFxuICAgICAgICAgICAgICAgfCBDbWRsaW5lLkNvbnMgKGZpcnN0X29mX3Jlc3QsIHJlc3Rfb2ZfcmVzdCkgLT5cbiAgICAgICAgICAgICAgICAgcmVzb2x2ZSBmaXJzdF9vZl9yZXN0IChDb25zIChzdWIsIHJlc3Rfb2ZfcmVzdCkpKVxuICAgICAgICAgICB8IChfIDogc3RyaW5nKSAtPiByZXNvbHZlIHN1YiByZXN0KVxuICAgICAgICB8IENvbXBsZXRlIHBhcnQgLT5cbiAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICBMYXp5LmZvcmNlIHN1YnNcbiAgICAgICAgICAgIHw+IExpc3QubWFwIH5mOmZzdFxuICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBuYW1lIC0+IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQpXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmVcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBjb21wbGV0ZV9zdWJjb21tYW5kcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgICAgICAgIHNoYXBlIHQgfD4gU2hhcGUuZnVsbHlfZm9yY2VkIHw+IFNoYXBlLkZ1bGx5X2ZvcmNlZC5leHBhbmRlZF9zdWJjb21tYW5kc1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKG1hdGNoIGYgfnBhdGg6KFBhdGgucGFydHMgcGF0aCkgfnBhcnQgc3ViY29tbWFuZHMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZXhpdCAxXG4gICAgICAgICAgICAgIHwgU29tZSB0b19vdXRwdXQgLT5cbiAgICAgICAgICAgICAgICBwcmludF9lbmRsaW5lIChTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgdG9fb3V0cHV0KTtcbiAgICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIExpc3QuaXRlciBzdWJzIH5mOnByaW50X2VuZGxpbmU7XG4gICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgaW5cbiAgICAgIHBhcnNlX2dyb3VwIGFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkXG4gIDs7XG5cbiAgbGV0IHJ1blxuICAgICAgICA/dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICA/dmVyc2lvblxuICAgICAgICA/YnVpbGRfaW5mb1xuICAgICAgICA/KGFyZ3YgPSBBcnJheS50b19saXN0IFN0ZGxpYi5TeXMuYXJndilcbiAgICAgICAgP2V4dGVuZFxuICAgICAgICA/KHdoZW5fcGFyc2luZ19zdWNjZWVkcyA9IEZuLmlkKVxuICAgICAgICA/Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgYnVpbGRfaW5mbyA9XG4gICAgICBtYXRjaCBidWlsZF9pbmZvIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGxhenkgdlxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICBpblxuICAgIGxldCB2ZXJzaW9uID1cbiAgICAgIG1hdGNoIHZlcnNpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICgqIFt2ZXJzaW9uXSB3YXMgc3BhY2UgZGVsaW1pdGVkIGF0IHNvbWUgcG9pbnQgYW5kIG5ld2xpbmUgZGVsaW1pdGVkXG4gICAgICAgICAgIGF0IGFub3RoZXIuICBXZSBhbHdheXMgcHJpbnQgb25lIChyZXBvLCByZXZpc2lvbikgcGFpciBwZXIgbGluZVxuICAgICAgICAgICBhbmQgZW5zdXJlIHNvcnRlZCBvcmRlciAqKVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKFZlcnNpb25faW5mby5ub3JtYWxpemVfdmVyc2lvbl9saW5lc1xuICAgICAgICAgICAgIChTdHJpbmcuc3BsaXQgdiB+b246JyAnIHw+IExpc3QuY29uY2F0X21hcCB+ZjooU3RyaW5nLnNwbGl0IH5vbjonXFxuJykpKVxuICAgIGluXG4gICAgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBsZXQgdCA9IFZlcnNpb25faW5mby5hZGQgdCB+dmVyc2lvbiB+YnVpbGRfaW5mbyBpblxuICAgICAgbGV0IHQgPSBhZGRfaGVscF9zdWJjb21tYW5kcyB0IGluXG4gICAgICBsZXQgY21kLCBhcmdzID0gaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgaW5cbiAgICAgIGxldCBwYXRoLCBhcmdzLCBtYXliZV9uZXdfY29tcF9jd29yZCA9IHByb2Nlc3NfYXJncyB+Y21kIH5hcmdzIGluXG4gICAgICB0cnlcbiAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICB0XG4gICAgICAgICAgRW52LmVtcHR5XG4gICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgfmFyZ3NcbiAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICB3aXRoXG4gICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+XG4gICAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHByZXJyX2VuZGxpbmUgbXNnO1xuICAgICAgICAgIGV4aXQgMSkpXG4gIDs7XG5cbiAgbGV0IGRlcHJlY2F0ZWRfcnVuIHQgfmNtZCB+YXJncyB+aXNfaGVscCB+aXNfaGVscF9yZWMgfmlzX2hlbHBfcmVjX2ZsYWdzIH5pc19leHBhbmRfZG90c1xuICAgID1cbiAgICBsZXQgcGF0aF9zdHJpbmdzID0gU3RyaW5nLnNwbGl0IGNtZCB+b246JyAnIGluXG4gICAgbGV0IHBhdGggPSBQYXRoLm9mX3BhcnRzIHBhdGhfc3RyaW5ncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfZXhwYW5kX2RvdHMgdGhlbiBcIi1leHBhbmQtZG90c1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlY19mbGFncyB0aGVuIFwiLWZsYWdzXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHBfcmVjIHRoZW4gXCItclwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwIHRoZW4gXCItaGVscFwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBDbWRsaW5lLm9mX2xpc3QgYXJncyBpblxuICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgIGRpc3BhdGNoXG4gICAgICB0XG4gICAgICBFbnYuZW1wdHlcbiAgICAgIH5wYXRoXG4gICAgICB+YXJnc1xuICAgICAgfmV4dGVuZDpOb25lXG4gICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmQ6Tm9uZVxuICAgICAgfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvblxuICAgICAgfmJ1aWxkX2luZm86VmVyc2lvbl9pbmZvLmRlZmF1bHRfYnVpbGRfaW5mb1xuICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6Tm9uZVxuICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkczpGbi5pZFxuICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzOk5vbmVcbiAgOztcbmVuZFxuXG5tb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgKydhIHRcblxuICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgaGVscCA6IHN0cmluZyBMYXp5LnQgdFxuICAgIHZhbCBwYXRoIDogc3RyaW5nIGxpc3QgdFxuICAgIHZhbCBhcmdzIDogc3RyaW5nIGxpc3QgdFxuXG4gICAgdmFsIGZsYWdcbiAgICAgIDogID9hbGlhc2VzOnN0cmluZyBsaXN0XG4gICAgICAtPiA/ZnVsbF9mbGFnX3JlcXVpcmVkOnVuaXRcbiAgICAgIC0+IHN0cmluZ1xuICAgICAgLT4gJ2EgRmxhZy50XG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG4gICAgICA6ICA/YWxpYXNlczpzdHJpbmcgbGlzdFxuICAgICAgLT4gP2Z1bGxfZmxhZ19yZXF1aXJlZDp1bml0XG4gICAgICAtPiBzdHJpbmdcbiAgICAgIC0+ICdhIEFyZ190eXBlLnRcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiBkZWZhdWx0OidhXG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgYW5vbiA6ICdhIEFub25zLnQgLT4gJ2EgdFxuICAgIHZhbCBlc2NhcGVfYW5vbiA6IGZpbmFsX2Fub246J2EgQW5vbnMudCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuIDogc2lnXG4gICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICB8IFJhaXNlIDogKCdhLCAnYSkgdFxuICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICBlbmRcblxuICAgIHZhbCBjaG9vc2Vfb25lXG4gICAgICA6ICAnYSBvcHRpb24gdCBsaXN0XG4gICAgICAtPiBpZl9ub3RoaW5nX2Nob3NlbjooJ2EsICdiKSBJZl9ub3RoaW5nX2Nob3Nlbi50XG4gICAgICAtPiAnYiB0XG5cbiAgICB2YWwgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgIDogICdhIHQgbGlzdFxuICAgICAgLT4gaWZfbm90aGluZ19jaG9zZW46KCdhLCAnYikgSWZfbm90aGluZ19jaG9zZW4udFxuICAgICAgLT4gJ2IgdFxuXG4gICAgdmFsIGFuZF9hcmdfbmFtZXMgOiAnYSB0IC0+ICgnYSAqIHN0cmluZyBsaXN0KSB0XG4gICAgdmFsIGFuZF9hcmdfbmFtZSA6ICdhIHQgLT4gKCdhICogc3RyaW5nKSB0XG4gICAgdmFsIGFyZ19uYW1lcyA6ICdhIHQgLT4gc3RyaW5nIGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDb21tYW5kX2Jhc2UuUGFyYW1cblxuICBsZXQgcGF0aCA9IG1hcCB+ZjpQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJhbVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBQYXJhbVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IFBhcmFtXG4gIGVuZFxuZW5kXG5cbnR5cGUgJ3Jlc3VsdCBiYXNpY19jb21tYW5kID1cbiAgc3VtbWFyeTpzdHJpbmcgLT4gP3JlYWRtZToodW5pdCAtPiBzdHJpbmcpIC0+ICh1bml0IC0+ICdyZXN1bHQpIFBhcmFtLnQgLT4gdFxuXG5sZXQgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBwYXJhbSA9XG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBwYXJhbVxuOztcblxubGV0IGJhc2ljX29yX2Vycm9yIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW0gPVxuICBiYXNpY1xuICAgIH5zdW1tYXJ5XG4gICAgP3JlYWRtZVxuICAgIChsZXQlbWFwIHJ1biA9IHBhcmFtIGluXG4gICAgIGZ1biAoKSAtPlxuICAgICAgIG1hdGNoIHJ1biAoKSB3aXRoXG4gICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgU3RkaW8ucHJlcnJfZW5kbGluZSAoRXJyb3IudG9fc3RyaW5nX2h1bSBlKTtcbiAgICAgICAgIGV4aXQgMSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBhYnNfcGF0aCA9IGFic19wYXRoXG4gIGxldCB3b3JkX3dyYXAgPSBTaGFwZS5Qcml2YXRlLndvcmRfd3JhcFxuXG4gIG1vZHVsZSBBbm9ucyA9IEFub25zXG4gIG1vZHVsZSBDbWRsaW5lID0gQ21kbGluZVxuICBtb2R1bGUgRm9yX3VuaXggPSBGb3JfdW5peFxuICBtb2R1bGUgUGF0aCA9IFBhdGhcblxuICBtb2R1bGUgU3BlYyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3BlY1xuXG4gICAgbGV0IHRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSBwYXJhbSA9XG4gICAgICBDb21tYW5kX2Jhc2UuUGFyYW0uQ2hvb3NlX29uZS5DaG9pY2VfbmFtZS4oY3JlYXRlX2V4biBwYXJhbSB8PiB0b19zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHJ1biA9IGBVc2VfQ29tbWFuZF91bml4XG5sZXQgc2hhcGUgPSBgVXNlX0NvbW1hbmRfdW5peFxuIiwib3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5leHRlcm5hbCBpc19oZWFwX2Jsb2NrIDogU3RkbGliLk9iai50IC0+IGJvb2wgPSBcImNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrXCJcbltAQG5vYWxsb2NdXG5cbmxldCBpc19vayB2ID0gaXNfaGVhcF9ibG9jayAoU3RkbGliLk9iai5yZXByIHYpXG5sZXQgY3JlYXRlIHYgPSBpZiBpc19vayB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuXG5sZXQgY3JlYXRlX2V4biB2ID1cbiAgaWYgaXNfb2sgdiB0aGVuIHYgZWxzZSBmYWlsd2l0aCBcIkhlYXBfYmxvY2suY3JlYXRlX2V4biBjYWxsZWQgd2l0aCBub24gaGVhcCBibG9ja1wiXG47O1xuXG5sZXQgdmFsdWUgdCA9IHRcbmxldCBieXRlc19wZXJfd29yZCA9IFdvcmRfc2l6ZS4obnVtX2JpdHMgd29yZF9zaXplKSAvIDhcblxubGV0IGJ5dGVzICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIChTdGRsaWIuT2JqLnNpemUgKFN0ZGxpYi5PYmoucmVwciAodCA6IGEgdCkpICsgMSkgKiBieXRlc19wZXJfd29yZFxuOztcbiIsIm9wZW4gQmFzZVxuXG4oKiogRWFjaCBzaW5nbGVfZXJyb3IgaXMgYSBwYXRoIGluZGljYXRpbmcgdGhlIGxvY2F0aW9uIHdpdGhpbiB0aGUgZGF0YXN0cnVjdHVyZSBpblxuICAgIHF1ZXN0aW9uIHRoYXQgaXMgYmVpbmcgdmFsaWRhdGVkLCBhbG9uZyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuICopXG50eXBlIHNpbmdsZV9lcnJvciA9XG4gIHsgcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZXJyb3IgOiBFcnJvci50XG4gIH1cblxudHlwZSB0ID0gc2luZ2xlX2Vycm9yIGxpc3RcbnR5cGUgJ2EgY2hlY2sgPSAnYSAtPiB0XG5cbmxldCBwYXNzIDogdCA9IFtdXG5cbmxldCBmYWlscyBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSB9IF1cbjs7XG5cbmxldCBmYWlsIG1lc3NhZ2UgPSBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLm9mX3N0cmluZyBtZXNzYWdlIH0gXVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IGZhaWxfcyBzZXhwID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5jcmVhdGVfcyBzZXhwIH0gXVxubGV0IGNvbWJpbmUgdDEgdDIgPSB0MSBAIHQyXG5sZXQgb2ZfbGlzdCA9IExpc3QuY29uY2F0XG5cbmxldCBuYW1lIG5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdICgqIHdoZW4gc3VjY2Vzc2Z1bCwgYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYSBjbG9zdXJlIGZvciBbfmZdLCBiZWxvdyAqKVxuICB8IF8gLT4gTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiB7IHBhdGggPSBuYW1lIDo6IHBhdGg7IGVycm9yIH0pXG47O1xuXG5sZXQgbmFtZV9saXN0IG4gbCA9IG5hbWUgbiAob2ZfbGlzdCBsKVxubGV0IGZhaWxfZm4gbWVzc2FnZSBfID0gZmFpbCBtZXNzYWdlXG5sZXQgcGFzc19ib29sIChfIDogYm9vbCkgPSBwYXNzXG5sZXQgcGFzc191bml0IChfIDogdW5pdCkgPSBwYXNzXG5cbmxldCBwcm90ZWN0IGYgdiA9XG4gIHRyeSBmIHYgd2l0aFxuICB8IGV4biAtPlxuICAgIGZhaWxfcyAoU2V4cC5tZXNzYWdlIFwiRXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcgdmFsaWRhdGlvblwiIFsgXCJcIiwgc2V4cF9vZl9leG4gZXhuIF0pXG47O1xuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIHByb3RlY3RcbiAgICAoZnVuICgpIC0+XG4gICAgICAgZiAoKTtcbiAgICAgICBwYXNzKVxuICAgICgpXG47O1xuXG5sZXQgcGF0aF9zdHJpbmcgcGF0aCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBwYXRoXG5cbmxldCBlcnJvcnMgdCA9XG4gIExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT5cbiAgICBFcnJvci50b19zdHJpbmdfaHVtIChFcnJvci50YWcgZXJyb3IgfnRhZzoocGF0aF9zdHJpbmcgcGF0aCkpKVxuOztcblxubGV0IHJlc3VsdF9mYWlsIHQgPVxuICBPcl9lcnJvci5lcnJvclxuICAgIFwidmFsaWRhdGlvbiBlcnJvcnNcIlxuICAgIChMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+IHBhdGhfc3RyaW5nIHBhdGgsIGVycm9yKSlcbiAgICBbJXNleHBfb2Y6IChzdHJpbmcgKiBFcnJvci50KSBMaXN0LnRdXG5bQEBjb2xkXVxuOztcblxuKCoqIFtyZXN1bHRdIGlzIGNhcmVmdWxseSBpbXBsZW1lbnRlZCBzbyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVkIC0tIGNhbGxpbmcgW3Jlc3VsdF9mYWlsXSxcbiAgICB3aGljaCBpcyBub3QgaW5saW5lYWJsZSwgaXMga2V5IHRvIHRoaXMuICopXG5sZXQgcmVzdWx0IHQgPSBpZiBMaXN0LmlzX2VtcHR5IHQgdGhlbiBPayAoKSBlbHNlIHJlc3VsdF9mYWlsIHRcblxubGV0IG1heWJlX3JhaXNlIHQgPSBPcl9lcnJvci5va19leG4gKHJlc3VsdCB0KVxubGV0IHZhbGlkX29yX2Vycm9yIGNoZWNrIHggPSBPcl9lcnJvci5tYXAgKHJlc3VsdCAocHJvdGVjdCBjaGVjayB4KSkgfmY6KGZ1biAoKSAtPiB4KVxuXG5sZXQgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCBfcmVjb3JkIHYgPVxuICBsZXQgcmVzdWx0ID0gcHJvdGVjdCBjaGVjayB2IGluXG4gIG5hbWUgKEZpZWxkLm5hbWUgZmxkKSByZXN1bHRcbjs7XG5cbmxldCBmaWVsZCBjaGVjayByZWNvcmQgZmxkID1cbiAgbGV0IHYgPSBGaWVsZC5nZXQgZmxkIHJlY29yZCBpblxuICBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIHJlY29yZCB2XG47O1xuXG5sZXQgZmllbGRfZm9sZGVyIGNoZWNrIHJlY29yZCA9XG4gICgpO1xuICBmdW4gYWNjIGZsZCAtPiBmaWVsZCBjaGVjayByZWNvcmQgZmxkIDo6IGFjY1xuOztcblxubGV0IGZpZWxkX2RpcmVjdF9mb2xkZXIgY2hlY2sgPVxuICBTdGFnZWQuc3RhZ2UgKGZ1biBhY2MgZmxkIHJlY29yZCB2IC0+XG4gICAgbWF0Y2ggZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdiB3aXRoXG4gICAgfCBbXSAtPiBhY2MgKCogQXZvaWQgYWxsb2NhdGluZyBhIG5ldyBsaXN0IGluIHRoZSBzdWNjZXNzIGNhc2UgKilcbiAgICB8IHJlc3VsdCAtPiByZXN1bHQgOjogYWNjKVxuOztcblxubGV0IGFsbCBjaGVja3MgdiA9XG4gIGxldCByZWMgbG9vcCBjaGVja3MgdiBlcnJzID1cbiAgICBtYXRjaCBjaGVja3Mgd2l0aFxuICAgIHwgW10gLT4gZXJyc1xuICAgIHwgY2hlY2sgOjogY2hlY2tzIC0+XG4gICAgICAobWF0Y2ggcHJvdGVjdCBjaGVjayB2IHdpdGhcbiAgICAgICB8IFtdIC0+IGxvb3AgY2hlY2tzIHYgZXJyc1xuICAgICAgIHwgZXJyIC0+IGxvb3AgY2hlY2tzIHYgKGVyciA6OiBlcnJzKSlcbiAgaW5cbiAgb2ZfbGlzdCAoTGlzdC5yZXYgKGxvb3AgY2hlY2tzIHYgW10pKVxuOztcblxubGV0IG9mX3Jlc3VsdCBmID1cbiAgcHJvdGVjdCAoZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgT2sgKCkgLT4gcGFzc1xuICAgIHwgRXJyb3IgZXJyb3IgLT4gZmFpbCBlcnJvcilcbjs7XG5cbmxldCBvZl9lcnJvciBmID1cbiAgcHJvdGVjdCAoZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgT2sgKCkgLT4gcGFzc1xuICAgIHwgRXJyb3IgZXJyb3IgLT4gWyB7IHBhdGggPSBbXTsgZXJyb3IgfSBdKVxuOztcblxubGV0IGJvb2x0ZXN0IGYgfmlmX2ZhbHNlID0gcHJvdGVjdCAoZnVuIHYgLT4gaWYgZiB2IHRoZW4gcGFzcyBlbHNlIGZhaWwgaWZfZmFsc2UpXG5cbmxldCBwYWlyIH5mc3QgfnNuZCAoZnN0X3ZhbHVlLCBzbmRfdmFsdWUpID1cbiAgb2ZfbGlzdCBbIG5hbWUgXCJmc3RcIiAocHJvdGVjdCBmc3QgZnN0X3ZhbHVlKTsgbmFtZSBcInNuZFwiIChwcm90ZWN0IHNuZCBzbmRfdmFsdWUpIF1cbjs7XG5cbmxldCBsaXN0X2luZGV4ZWQgY2hlY2sgbGlzdCA9XG4gIExpc3QubWFwaSBsaXN0IH5mOihmdW4gaSBlbCAtPiBuYW1lIChJbnQudG9fc3RyaW5nIChpICsgMSkpIChwcm90ZWN0IGNoZWNrIGVsKSlcbiAgfD4gb2ZfbGlzdFxuOztcblxubGV0IGxpc3Qgfm5hbWU6ZXh0cmFjdF9uYW1lIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gZWwgLT5cbiAgICBtYXRjaCBwcm90ZWN0IGNoZWNrIGVsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCB0IC0+XG4gICAgICAoKiBleHRyYSBsZXZlbCBvZiBwcm90ZWN0aW9uIGluIGNhc2UgZXh0cmFjdF9uYW1lIHRocm93cyBhbiBleGNlcHRpb24gKilcbiAgICAgIHByb3RlY3QgKGZ1biB0IC0+IG5hbWUgKGV4dHJhY3RfbmFtZSBlbCkgdCkgdClcbiAgfD4gb2ZfbGlzdFxuOztcblxubGV0IGFsaXN0IH5uYW1lIGYgbGlzdCcgPSBsaXN0IChmdW4gKF8sIHgpIC0+IGYgeCkgbGlzdCcgfm5hbWU6KGZ1biAoa2V5LCBfKSAtPiBuYW1lIGtleSlcbmxldCBmaXJzdF9mYWlsdXJlIHQxIHQyID0gaWYgTGlzdC5pc19lbXB0eSB0MSB0aGVuIHQyIGVsc2UgdDFcblxubGV0IG9mX2Vycm9yX29wdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBwYXNzXG4gIHwgU29tZSBlcnJvciAtPiBmYWlsIGVycm9yXG47O1xuXG5sZXQgYm91bmRlZCB+bmFtZSB+bG93ZXIgfnVwcGVyIH5jb21wYXJlIHggPVxuICBtYXRjaCBNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlIHggd2l0aFxuICB8IEluX3JhbmdlIC0+IHBhc3NcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPlxuICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IEluY2wgaW5jbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzIDwgYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBpbmNsKSlcbiAgICAgfCBFeGNsIGV4Y2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8PSBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGV4Y2wpKSlcbiAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IEluY2wgaW5jbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzID4gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBpbmNsKSlcbiAgICAgfCBFeGNsIGV4Y2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+PSBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGV4Y2wpKSlcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCArKyApIHQxIHQyID0gY29tYmluZSB0MSB0MlxuZW5kXG4iLCJcbigqIFdlIGRvIG5vdCBbaW5jbHVkZSBCYXNlXSBoZXJlLCBhbmQgaW5zdGVhZCBpbXBvcnQgbW9kdWxlcyB0aGF0IFtDb3JlXSBkb2Vzbid0IGV4dGVuZCxcbiAgIGJlY2F1c2Ugd2Ugd2FudCBjb2RlIGluIFtDb3JlXSB0byBiZSBjbGVhciB3aGVuIGl0IHJlZmVyZW5jZXMgYSBbQmFzZV0gbW9kdWxlIHRoYXRcbiAgIFtDb3JlXSBpcyBvdmVycmlkaW5nLiAqKVxubW9kdWxlIEFwcGxpY2F0aXZlID0gQmFzZS5BcHBsaWNhdGl2ZVxubW9kdWxlIEF2bHRyZWUgPSBCYXNlLkF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYXNlLkJhY2t0cmFjZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCYXNlLkJpbmFyeV9zZWFyY2hcbm1vZHVsZSBDb21wYXJpc29ucyA9IEJhc2UuQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQmFzZS5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRXF1YWwgPSBCYXNlLkVxdWFsXG5tb2R1bGUgRXhuID0gQmFzZS5FeG5cbm1vZHVsZSBGbG9hdGFibGUgPSBCYXNlLkZsb2F0YWJsZVxubW9kdWxlIEZvcm1hdHRlciA9IEJhc2UuRm9ybWF0dGVyXG5tb2R1bGUgSGFzaCA9IEJhc2UuSGFzaFxubW9kdWxlIEhhc2hlciA9IEJhc2UuSGFzaGVyXG5tb2R1bGUgSW50YWJsZSA9IEJhc2UuSW50YWJsZVxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEJhc2UuSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X21hdGggPSBCYXNlLkludF9tYXRoXG5tb2R1bGUgSW52YXJpYW50ID0gQmFzZS5JbnZhcmlhbnRcbm1vZHVsZSBNb25hZCA9IEJhc2UuTW9uYWRcbm1vZHVsZSBQb2x5ID0gQmFzZS5Qb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IEJhc2UuUG9wY291bnRcbltAQHdhcm5pbmcgXCItM1wiXVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBCYXNlLlByZXR0eV9wcmludGVyXG5tb2R1bGUgUmFuZG9tID0gQmFzZS5SYW5kb21cbm1vZHVsZSBTdGFnZWQgPSBCYXNlLlN0YWdlZFxubW9kdWxlIFN0cmluZ2FibGUgPSBCYXNlLlN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBCYXNlLlN5c1xubW9kdWxlIFVjaGFyID0gQmFzZS5VY2hhclxubW9kdWxlIFdpdGhfcmV0dXJuID0gQmFzZS5XaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IEJhc2UuV29yZF9zaXplXG5cbigqIFdlIGRvIGluY2x1ZGUgW0Jhc2VdJ3MgdG9wLWxldmVsIHZhbHVlIGFuZCB0eXBlIGJpbmRpbmdzLCBiZWNhdXNlIHRoZXkgZG9uJ3QgY2F1c2VcbiAgIGFueSBjb25mdXNpb24sIGFuZCBkdXBsaWNhdGluZyB0aGVtIHdvdWxkIGJlIGVycm9yIHByb25lLiAqKVxuaW5jbHVkZSBCYXNlLkV4cG9ydFxuaW5jbHVkZSBTdGRpb1xuaW5jbHVkZSBCYXNlX2Zvcl90ZXN0c1xuaW5jbHVkZSBCaW5fcHJvdC5TdGRcbmluY2x1ZGUgU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5tb2R1bGUgRmllbGQgPSBGaWVsZHNsaWIuRmllbGRcblxubW9kdWxlIEZyb21fc2V4cGxpYiA6IHNpZ1xuICB0eXBlIGJpZ3N0cmluZyA9IFNleHBsaWIuQ29udi5iaWdzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBtYXQgPSBTZXhwbGliLkNvbnYubWF0IFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdmVjID0gU2V4cGxpYi5Db252LnZlYyBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICgqIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0gYXJlIHVzZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGZyb21cbiAgICAgW1tAQGRlcml2aW5nIHNleHBdXSwgW1slc2V4cF9vZjogXV0sIGFuZCBbWyVvZl9zZXhwOiBdXS4gIFRoZSB0eXBlIFtfIHNleHBfb3BhcXVlXVxuICAgICBleHBhbmRzIHRvIHVzZXMgb2YgW3NleHBfb2Zfb3BhcXVlXSBhbmQgW29wYXF1ZV9vZl9zZXhwXS4gKilcblxuICB2YWwgc2V4cF9vZl9vcGFxdWUgOiBfIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBvcGFxdWVfb2Zfc2V4cCA6IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIHNleHBfb2ZfcGFpciA6ICgnYSAtPiBCYXNlLlNleHAudCkgLT4gKCdiIC0+IEJhc2UuU2V4cC50KSAtPiAnYSAqICdiIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBwYWlyX29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EpIC0+IChCYXNlLlNleHAudCAtPiAnYikgLT4gQmFzZS5TZXhwLnQgLT4gJ2EgKiAnYlxuXG4gIGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIEJhc2UuU2V4cC50XG5cbiAgdmFsIG9mX3NleHBfZXJyb3IgOiBzdHJpbmcgLT4gQmFzZS5TZXhwLnQgLT4gX1xuICB2YWwgb2Zfc2V4cF9lcnJvcl9leG4gOiBleG4gLT4gQmFzZS5TZXhwLnQgLT4gX1xuZW5kID1cbiAgU2V4cGxpYi5Db252XG5cbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5cbigqIFtzZXhwX29wYXF1ZV0gaW5kaWNhdGVzIHRvIFtwcHhfc2V4cF9jb252XSB0aGF0IGEgdmFsdWUgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIFtfXSwgaS5lLlxuICAgW1NleHAuQXRvbSBcIl9cIl0uICBIZXJlIHdlIGV4cG9zZSB0aGUgW0BAZGVyaXZpbmddIGFzcGVjdHMgb2YgW3NleHBfb3BhcXVlXSBzbyB0aGF0XG4gICBvdGhlciBwcHgncyB0cmVhdCBbc2V4cF9vcGFxdWVdIGNvcnJlY3RseSwgYnkgaWdub3JpbmcgaXQgYW5kIHByb2Nlc3NpbmcgdGhlIHVuZGVybHlpbmdcbiAgIHR5cGUuICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHNleHBfb3BhcXVlID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHNleHBfb3BhcXVlIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIHNleHBfb3BhcXVlIDo9ICdhKVxuXG5pbmNsdWRlIChcbiAgVHlwZXJlcF9saWIuU3RkIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFR5cGVyZXBfbGliLlN0ZFxuICBlbmRcbiAgd2l0aCBtb2R1bGUgVHlwZV9lcXVhbCA6PSBUeXBlcmVwX2xpYi5TdGQuVHlwZV9lcXVhbClcblxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50c2xpYi5WYXJpYW50XG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmxldCBhbV9ydW5uaW5nX3Rlc3QgPVxuICB0cnlcbiAgICBpZ25vcmUgKFN0ZGxpYi5TeXMuZ2V0ZW52IFwiVEVTVElOR19GUkFNRVdPUktcIiA6IHN0cmluZyk7XG4gICAgdHJ1ZVxuICB3aXRoXG4gICgqIFtDYW1sLipdIG5ldmVyIHJhaXNlcyBbTm90X2ZvdW5kX3NdICopXG4gIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxudHlwZSAnYSBpZGVudGl0eSA9ICdhXG5cbm1vZHVsZSBOb3RfZm91bmQgPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uXG4gICAgTm90X2ZvdW5kID0gTm90X2ZvdW5kXG4gICAgICAgICAgICAgICAgW0BkZXByZWNhdGVkXG4gICAgICAgICAgICAgICAgICB7fFtzaW5jZSAyMDE4LTAyXSBJbnN0ZWFkIG9mIHJhaXNpbmcgW05vdF9mb3VuZF0sIGNvbnNpZGVyIHVzaW5nIFtyYWlzZV9zXSB3aXRoIGFuXG5pbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLiAgSWYgY29kZSBuZWVkcyB0byBkaXN0aW5ndWlzaCBbTm90X2ZvdW5kXSBmcm9tIG90aGVyXG5leGNlcHRpb25zLCBwbGVhc2UgY2hhbmdlIGl0IHRvIGhhbmRsZSBib3RoIFtOb3RfZm91bmRdIGFuZCBbTm90X2ZvdW5kX3NdLiAgVGhlbiwgaW5zdGVhZFxub2YgcmFpc2luZyBbTm90X2ZvdW5kXSwgcmFpc2UgW05vdF9mb3VuZF9zXSB3aXRoIGFuIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UufH1dXG5cbiAgZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gQmFzZS5Ob3RfZm91bmRfc1xuZW5kXG5cbmluY2x1ZGUgTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXhwYWJsZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogU2V4cGFibGUudCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMSkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICdhIFNleHBhYmxlLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICAgICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgdCA9XG4gICAgICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXVxuXG4gICAgICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgU2V4cGxpYi5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgICAgICB8IFNleHBsaWIuU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgICAgIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBsaWIuU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgOiBNLnQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBzdHJpbmdfc2V4cF9ncmFtbWFyXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVG9fc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFMpIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX3N0cmluZyB4ID0gU2V4cGxpYi5Db252Lm9mX3N0cmluZ19fb2ZfX29mX3NleHAgTS50X29mX3NleHAgeFxuICAgICAgbGV0IHRvX3N0cmluZyB4ID0gU2V4cGxpYi5Db252LnN0cmluZ19vZl9fb2ZfX3NleHBfb2YgTS5zZXhwX29mX3QgeFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVG9fc3RyaW5nYWJsZSA9IFN0YWJsZS5Ub19zdHJpbmdhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbl9wcm90LkJpbmFibGVcbm1vZHVsZSBTaGFwZSA9IEJpbl9wcm90LlNoYXBlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX2JpbmFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udl93aXRob3V0X3V1aWQgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udiB3aXRoIHR5cGUgYmluYWJsZSA6PSBCaW5hYmxlLnQpIDpcbiAgICAgIFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMSlcbiAgICAgICAgKE0gOiBDb252MV93aXRob3V0X3V1aWQgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoQmluYWJsZSA6IE1pbmltYWwuUzEpIChNIDogQ29udjEgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252Ml93aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IpIGJpbmFibGUgOj0gKCdhLCAnYikgQmluYWJsZS50KSA6XG4gICAgICBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMyKVxuICAgICAgICAoTSA6IENvbnYyIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYmluYWJsZSA6PSAoJ2EsICdiLCAnYykgQmluYWJsZS50KSA6XG4gICAgICBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU2V4cGFibGUuUykgPVxuICAgICAgT2ZfYmluYWJsZS5WMVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICBlbmQpXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3NleHBhYmxlKSA9XG4gICAgICBPZl9iaW5hYmxlLlYyXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICAgICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gTS5zZXhwX29mX3RcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IE0udF9vZl9zZXhwXG4gICAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3N0cmluZ2FibGUpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4gQmlnYXJyYXlcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5cbnR5cGUgJ2EgbSA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG5sZXQgb2ZfYmlnc3RyaW5nICh0eXBlIGEpIG0gYmlnc3RyaW5nID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgbGV0IHQgPSBNLmJpbl9yZWFkX3QgYmlnc3RyaW5nIH5wb3NfcmVmIGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID0gQXJyYXkxLmRpbSBiaWdzdHJpbmcgaW5cbiAgKG1hdGNoICFwb3NfcmVmID0gYmlnc3RyaW5nX2xlbmd0aCB3aXRoXG4gICB8IHRydWUgLT4gKClcbiAgIHwgZmFsc2UgLT5cbiAgICAgcmFpc2Vfc1xuICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgXCJiaW5fcmVhZF90IGRpZCBub3QgY29uc3VtZSB0aGUgZW50aXJlIGJ1ZmZlclwiXG4gICAgICAgICAgIH5jb25zdW1lZDooIXBvc19yZWYgOiBpbnQpXG4gICAgICAgICAgIChiaWdzdHJpbmdfbGVuZ3RoIDogaW50KV0pO1xuICB0XG47O1xuXG4oKiBVc2luZyB0aGUgW0JpZ3N0cmluZ10gbW9kdWxlIHdvdWxkIGludHJvZHVjZSBhIGN5Y2xpYyBkZXBlbmRlbmN5LiAqKVxubGV0IGNyZWF0ZV9iaWdzdHJpbmcgc2l6ZSA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBzaXplXG5cbmxldCB0b19iaWdzdHJpbmcgPyhwcmVmaXhfd2l0aF9sZW5ndGggPSBmYWxzZSkgKHR5cGUgYSkgbSB0ID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCB0X2xlbmd0aCA9IE0uYmluX3NpemVfdCB0IGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGggdGhlbiB0X2xlbmd0aCArIDggKCogdGhlIHNpemUgb2YgYSA2NC1iaXQgaW50ICopIGVsc2UgdF9sZW5ndGhcbiAgaW5cbiAgbGV0IGJpZ3N0cmluZyA9IGNyZWF0ZV9iaWdzdHJpbmcgYmlnc3RyaW5nX2xlbmd0aCBpblxuICBsZXQgcG9zID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGhcbiAgICB0aGVuIEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgYmlnc3RyaW5nIH5wb3M6MCB0X2xlbmd0aFxuICAgIGVsc2UgMFxuICBpblxuICBsZXQgcG9zID0gTS5iaW5fd3JpdGVfdCBiaWdzdHJpbmcgfnBvcyB0IGluXG4gIGFzc2VydCAocG9zID0gYmlnc3RyaW5nX2xlbmd0aCk7XG4gIGJpZ3N0cmluZ1xuOztcblxubW9kdWxlIE9mX2JpbmFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjJcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjJcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjJcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZS5WMVxubW9kdWxlIE9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMS5WMVxubW9kdWxlIE9mX2JpbmFibGUyX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMi5WMVxubW9kdWxlIE9mX2JpbmFibGUzX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMy5WMVxubW9kdWxlIE9mX3NleHBhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zZXhwYWJsZS5WMVxubW9kdWxlIE9mX3N0cmluZ2FibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX3N0cmluZ2FibGUuVjFcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlID0gc2lnXG4gICAgICBpbmNsdWRlIFNfb25seV9mdW5jdGlvbnNcblxuICAgICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIGVuZFxuXG4gICAgKCogQ2hlY2sgdGhhdCBvbmx5IHRoZSBmdW5jdGlvbnMgJiBzaGFwZSBhcmUgc3VmZmljaWVudCBmb3IgW0BAZGVyaXZpbmcgYmluX2lvXS4gVGhlXG4gICAgICAgZmFjdCB0aGF0IHRoaXMgZnVuY3RvciB0eXBlY2hlY2tzIGlzLCBpdHNlbGYsIHRoZSB0ZXN0LiAqKVxuICAgIG1vZHVsZSBfIChYIDogU19vbmx5X2Z1bmN0aW9uc19hbmRfc2hhcGUpIDogUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gWC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcbiAgZW5kKVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuUHJpbnRmfVtCYXNlLlByaW50Zl19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZSBCYXNlLlByaW50ZiAoKiogQG9wZW4gKilcblxubGV0IGVwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmZwcmludGZcbmxldCBrZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmtmcHJpbnRmXG5sZXQgcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwucHJpbnRmXG5cblxuKCoqIHByaW50IHRvIHN0ZGVycjsgZXhpdCAxICopXG5sZXQgZXhpdGYgZm10ID1cbiAga3NwcmludGZcbiAgICAoZnVuIHMgKCkgLT5cbiAgICAgICBlcHJpbnRmIFwiJXNcXG4lIVwiIHM7XG4gICAgICAgZXhpdCAxKVxuICAgIGZtdFxuOztcblxudHlwZSBwcmludGYgPSB7IHByaW50ZiA6ICdhLiAoJ2EsIEJ1ZmZlci50LCB1bml0KSBmb3JtYXQgLT4gJ2EgfVxuXG5sZXQgY29sbGVjdF90b19zdHJpbmcgZiA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBkb25lXyA9IHJlZiBmYWxzZSBpblxuICBsZXQgcHJpbnRmIGZtdCA9XG4gICAga2JwcmludGZcbiAgICAgIChmdW4gYnVmIC0+XG4gICAgICAgICBpZiAhZG9uZV9cbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBCdWZmZXIucmVzZXQgYnVmO1xuICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIltwcmludGZdIHVzZWQgYWZ0ZXIgW2NvbGxlY3RfdG9fc3RyaW5nXSByZXR1cm5lZFwiXSkpXG4gICAgICBidWZcbiAgICAgIGZtdFxuICBpblxuICBmIHsgcHJpbnRmIH07XG4gIGRvbmVfIDo9IHRydWU7XG4gIGxldCBvdXRwdXQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIG91dHB1dFxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG4oKiBBbGwgdGhlIHR5cGVzIGFzIGV4cG9zZWQgaW4gdGhlIG1saSBhcmUgZGVmaW5lZCBpbiB0aGlzIFtUeXBlc10gbW9kdWxlLiAgVGhlIHJlc3Qgb2ZcbiAgIHRoaXMgZmlsZSBpcyBzaW1wbHkgb3ZlcnJpZGluZyBhbGwgdGhlIGJpbl9pbywgY29tcGFyZSwgYW5kIHNleHAgZnVuY3Rpb25zIHRvIHJhaXNlXG4gICBleGNlcHRpb25zLiAqKVxubW9kdWxlIFR5cGVzID0gc3RydWN0XG4gIG1vZHVsZSBOb2JvZHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk5vYm9keVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBNZSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiTWVcIlxuICBlbmRcblxuICBtb2R1bGUgUmVhZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFJlYWQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBXcml0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFdob19jYW5fd3JpdGUgb2YgTWUudCBdIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJXcml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBJbW11dGFibGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgYFdob19jYW5fd3JpdGUgb2YgTm9ib2R5LnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiSW1tdXRhYmxlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgV3JpdGUudFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJSZWFkX3dyaXRlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFVwcGVyX2JvdW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mICdhXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlVwcGVyX2JvdW5kXCJcbiAgZW5kXG5lbmRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuKCogVGhpcyBpcyBhbiBleHBsaWNpdCBtb2R1bGUgdHlwZSBpbnN0ZWFkIG9mIGp1c3QgZ2l2ZW4gaW5saW5lIGFzIHRoZSByZXR1cm4gc2lnbmF0dXJlIG9mXG4gICBbT25seV91c2VkX2FzX3BoYW50b21fdHlwZTFdIHRvIGF2b2lkIGFuIHVudXNlZCB2YWx1ZSB3YXJuaW5nIHdpdGggYmluX2lvIHZhbHVlcy4gKilcbm1vZHVsZSB0eXBlIFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCBzdGFibGVfd2l0bmVzc11cbmVuZFxuXG4oKiBPdmVycmlkZSBhbGwgYmluX2lvLCBzZXhwLCBjb21wYXJlIGZ1bmN0aW9ucyB0byByYWlzZSBleGNlcHRpb25zICopXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKE5hbWUgOiBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogU2V4cGFibGVfYmluYWJsZV9jb21wYXJhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHNleHBfb2ZfdCBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5zZXhwX29mX3RdXCIgTmFtZS5uYW1lICgpXG4gIGxldCB0X29mX3NleHAgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMudF9vZl9zZXhwXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgY29tcGFyZSBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmNvbXBhcmVdXCIgTmFtZS5uYW1lICgpXG4gIGxldCBoYXNoX2ZvbGRfdCBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmhhc2hfZm9sZF90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLk5vdGhpbmcudF9zZXhwX2dyYW1tYXJcbiAgbGV0IHN0YWJsZV93aXRuZXNzIF8gPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIGxldCBnbG9iYWxpemUgXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmdsb2JhbGl6ZV1cIiBOYW1lLm5hbWUgKClcblxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgZW5kKVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBzZXJpYWxpemF0aW9uXCIgTmFtZS5uYW1lICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgXyA9XG4gICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IHVzZWQgJXMgYmluX2lvIGRlc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogc2lnXG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cF9wb2x5LCBzdGFibGVfd2l0bmVzc11cbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChUKVxuXG4gIHR5cGUgdCA9IFQudCBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gIGxldCBfX3Rfb2Zfc2V4cF9fID0gdF9vZl9zZXhwXG4gIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgbGV0IGdsb2JhbGl6ZSBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuZ2xvYmFsaXplXVwiIFQubmFtZSAoKVxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE5vYm9keSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5Ob2JvZHkpXG4gICAgbW9kdWxlIE1lID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLk1lKVxuICAgIG1vZHVsZSBSZWFkID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWQpXG4gICAgbW9kdWxlIFdyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLldyaXRlKVxuICAgIG1vZHVsZSBSZWFkX3dyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWRfd3JpdGUpXG4gICAgbW9kdWxlIEltbXV0YWJsZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5JbW11dGFibGUpXG5cbiAgICB0eXBlIG5vYm9keSA9IE5vYm9keS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgdHlwZSBtZSA9IE1lLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVHlwZXMuVXBwZXJfYm91bmQpXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFR5cGVzLlVwcGVyX2JvdW5kLnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIF8gPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgICBsZXQgX190X29mX3NleHBfXyA9IHRfb2Zfc2V4cFxuXG4gICAgICBsZXQgZ2xvYmFsaXplIF8gPVxuICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5nbG9iYWxpemVdXCIgVHlwZXMuVXBwZXJfYm91bmQubmFtZSAoKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgcmVhZCA9IFYxLlJlYWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgd3JpdGUgPSBWMS5Xcml0ZS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICB0eXBlIGltbXV0YWJsZSA9IFYxLkltbXV0YWJsZS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSByZWFkX3dyaXRlID0gVjEuUmVhZF93cml0ZS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSAnYSBwZXJtcyA9ICdhIFYxLlVwcGVyX2JvdW5kLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5tb2R1bGUgRXhwb3J0ID0gU3RhYmxlLkV4cG9ydFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ29tcGFyYXRvciA9IEJhc2UuQ29tcGFyYXRvclxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPSAoJ2EsICd3aXRuZXNzKSBDb21wYXJhdG9yLnQgPSBwcml2YXRlXG4gIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICA7IHNleHBfb2ZfdCA6ICdhIC0+IEJhc2UuU2V4cC50XG4gIH1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQ29tcGFyYXRvciB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbmluY2x1ZGUgKENvbXBhcmF0b3IgOiBCYXNlX21hc2spXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnd2l0bmVzcykgdCA9ICgnYSwgJ3dpdG5lc3MpIHQgPSBwcml2YXRlXG4gICAgICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gQmFzZS5TZXhwLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgY29tcGFyYXRvciA9ICgnYSwgJ2IpIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuXG4gICAgbGV0IG1ha2UgPSBtYWtlXG5cbiAgICBtb2R1bGUgTWFrZSA9IE1ha2VcbiAgICBtb2R1bGUgTWFrZTEgPSBNYWtlMVxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnZiwgJ3MpIHQgPSAoJ2YsICdzKSBCYXNlLkVpdGhlci50ID1cbiAgICAgIHwgRmlyc3Qgb2YgJ2ZcbiAgICAgIHwgU2Vjb25kIG9mICdzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBGaXJzdCB4MSAtPiBGaXJzdCAoZjEgeDEpXG4gICAgICB8IFNlY29uZCB4MiAtPiBTZWNvbmQgKGYyIHgyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuRWl0aGVyXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuZWl0aGVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5laXRoZXJcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTMF93aXRob3V0X2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICBpbmNsdWRlIFMwX3dpdGhvdXRfY29tcGFyYXRvclxuICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbigqKiBUaGUgcG9seW1vcnBoaWMgc2lnbmF0dXJlcyByZXF1aXJlIGEgbWFwcGluZyBmdW5jdGlvbiBzbyBwZW9wbGUgY2FuIHdyaXRlIGNvbnZlcnNpb25cbiAgICBmdW5jdGlvbnMgd2l0aG91dCBlaXRoZXIgKDEpIHJlLWltcGxlbWVudGluZyB0aGUgbWFwcGluZyBmdW5jdGlvbiBpbmxpbmUgb3IgKDIpXG4gICAgcmVhY2hpbmcgaW50byB0aGUgdW5zdGFibGUgcGFydCBvZiB0aGUgbW9kdWxlLiAqKVxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwXG4gICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyLCAnYTMsICdhNCkgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIG1hcFxuICAgIDogICgnYTEsICdhMiwgJ2EzLCAnYTQpIHRcbiAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAtPiBmNDooJ2E0IC0+ICdiNClcbiAgICAtPiAoJ2IxLCAnYjIsICdiMywgJ2I0KSB0XG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUzBfd2l0aG91dF9jb21wYXJhdG9yID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5cbiAgICB0eXBlIHQgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgPVxuICAgICAgeyBwb3NfZm5hbWUgOiBzdHJpbmdcbiAgICAgIDsgcG9zX2xudW0gOiBpbnRcbiAgICAgIDsgcG9zX2JvbCA6IGludFxuICAgICAgOyBwb3NfY251bSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IHRvX3N0cmluZyA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nXG5sZXQgc2V4cF9vZl90ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi5zZXhwX29mX3RcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGlzIG1hbnkgcGxhY2VzIHBsYWNlcyBhcyBwb3NzaWJsZS5cbiAgIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuISBJbmZvX2ludGZcblxubW9kdWxlIHR5cGUgUyA9IEJhc2UuSW5mby5TXG5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlX2V4biA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBleG4gW0BAZGVyaXZpbmcgc2V4cF9vZiwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSB0IHw+IFslc2V4cF9vZjogdF1cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gRXhuLmNyZWF0ZV9zXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIFNleHAuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kIChJbmZvIDogQmFzZS5JbmZvLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgSW5mb1xuXG4gIG1vZHVsZSBJbnRlcm5hbF9yZXByID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJpbmFibGVfZXhuID0gQmluYWJsZV9leG4uU3RhYmxlXG5cbiAgICAgIG1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgICAgKCogW3NleHBfb2ZfdF0gYXMgZGVmaW5lZCBoZXJlIGlzIHVuc3RhYmxlOyB0aGlzIGlzIE9LIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgICBbdF9vZl9zZXhwXS4gIFtzZXhwX29mX3RdIGlzIG9ubHkgdXNlZCB0byBwcm9kdWNlIGEgc2V4cCB0aGF0IGlzIG5ldmVyXG4gICAgICAgICAgICAgZGVzZXJpYWxpemVkIGFzIGEgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uXS4gKilcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLkludGVybmFsX3JlcHIudCA9XG4gICAgICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgICAgICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgICAgICAgIHwgRXhuIG9mIEJpbmFibGVfZXhuLlYxLnRcbiAgICAgICAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgICAgICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi5WMS50IG9wdGlvblxuICAgICAgICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgICAgICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgICAgICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICAgICAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZiwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgU3RhYmxlLlYyXG5cbiAgICBsZXQgdG9faW5mbyA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG4gICAgbGV0IG9mX2luZm8gPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IEluZm8uSW50ZXJuYWxfcmVwci5vZl9pbmZvXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnRlcm5hbF9yZXByLlN0YWJsZS5WMilcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgSW50ZXJuYWxfcmVwci5TdGFibGUuVjIuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9iaW5hYmxlXG4gICAgICAgICAgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgICAgKFNleHApXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gSW5mby5zZXhwX29mX3RcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gSW5mby50X29mX3NleHBcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSBzZXhwX29mX3RcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gdF9vZl9zZXhwXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgU2V4cC5zdGFibGVfd2l0bmVzcyBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5WMi50IFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5pbmNsdWRlIEV4dGVuZCAoQmFzZS5JbmZvKVxuXG4iLCJpbmNsdWRlIEJhc2UuRXJyb3JcbmluY2x1ZGUgSW5mby5FeHRlbmQgKEJhc2UuRXJyb3IpXG5cbmxldCBmYWlsd2l0aHMgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgcmFpc2UgKGNyZWF0ZSA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZmFpbHdpdGhwID9zdHJpY3QgaGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgcmFpc2UgKGNyZWF0ZSA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUmVzdWx0ID0gQmFzZS5SZXN1bHRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBSZXN1bHQudCA9XG4gICAgICB8IE9rIG9mICdhXG4gICAgICB8IEVycm9yIG9mICdiXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mMSB+ZjIgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIGVyciAtPiBFcnJvciAoZjIgZXJyKVxuICAgICAgfCBPayB4IC0+IE9rIChmMSB4KVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMV9zdGFibGVfdW5pdF90ZXN0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKHN0cmluZywgaW50KSBWMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICAgIGxldCB0ZXN0cyA9XG4gICAgICBbIFYxLk9rIFwiZm9vXCIsIFwiKE9rIGZvbylcIiwgXCJcXDAwMFxcMDAzZm9vXCI7IFYxLkVycm9yIDcsIFwiKEVycm9yIDcpXCIsIFwiXFwwMDFcXDAwN1wiIF1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBSZXN1bHRcbiIsIigqKiBBbiBpbnRlcmZhY2UgZm9yIGNyZWF0aW5nIHVuaXQgdGVzdHMgdG8gY2hlY2sgc3RhYmlsaXR5IG9mIHNleHAgYW5kIGJpbi1pb1xuICAgIHNlcmlhbGl6YXRpb25zICopXG5cbm9wZW4hIEltcG9ydFxuXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG5cblxuICAoKiogW3Rlc3RzXSBpcyBhIGxpc3Qgb2YgKHZhbHVlLCBzZXhwLXJlcHJlc2VudGF0aW9uLCBiaW4taW8tcmVwcmVzZW50YXRpb24pIHRyaXBsZXMuXG4gICAgICBUaGUgdW5pdCB0ZXN0cyBjaGVjayB0aGF0IHRoZSB0eXBlIHByb3Blcmx5IHNlcmlhbGl6ZXMgYW5kXG4gICAgICBkZS1zZXJpYWxpemVzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gcmVwcmVzZW50YXRpb25zLiAqKVxuICB2YWwgdGVzdHMgOiAodCAqIHN0cmluZyAqIHN0cmluZykgbGlzdFxuZW5kXG5cbigqKiBVbm9yZGVyZWQgY29udGFpbmVyIHRlc3RzIGFyZSBmb3IgdHlwZXMgd2l0aCBzZXJpYWxpemF0aW9ucyB0aGF0IHdpbGwgY29udGFpbiBhXG4gICAgY2VydGFpbiBzZXQgb2YgZWxlbWVudHMgKGVhY2ggcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgc2V4cCBvciBiaW4taW8gc3RyaW5nKSB3aGljaCBtYXlcbiAgICBhcHBlYXIgaW4gYW55IG9yZGVyLCBzdWNoIGFzIGhhc2ggdGFibGVzIGFuZCBoYXNoIHNldHMuICopXG5tb2R1bGUgVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzZXhwcyA6IHN0cmluZyBsaXN0XG4gICAgOyBiaW5faW9faGVhZGVyIDogc3RyaW5nXG4gICAgOyBiaW5faW9fZWxlbWVudHMgOiBzdHJpbmcgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgdHlwZSBVbm9yZGVyZWRfY29udGFpbmVyX2FyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCB0ZXN0cyA6ICh0ICogVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0LnQpIGxpc3RcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuT3JfZXJyb3JcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIElPID0gQmFzZS5Pcl9lcnJvclxuXG4gIGxldCBydW4gZiA9IG9rX2V4biAoZiAoKSlcbiAgbGV0IHNhbml0aXplIHMgPSBzXG4gIGxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEV4cGVjdF90ZXN0X2NvbmZpZy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuZW5kXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWdfd2l0aF91bml0X2V4cGVjdCA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IuU3RhYmxlLlYxLnQpIFJlc3VsdC5TdGFibGUuVjEudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwIHggfmYgPSBSZXN1bHQuU3RhYmxlLlYxLm1hcCB4IH5mMTpmIH5mMjpGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsIEVycm9yLlN0YWJsZS5WMi50KSBSZXN1bHQuU3RhYmxlLlYxLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNlcXVlbmNlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuU2VxdWVuY2UudFxuXG4gICAgbGV0IG9mX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLm9mX2xpc3RcbiAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuU2VxdWVuY2UudG9fbGlzdFxuICBlbmQpXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RlcFxuXG4gIHR5cGUgKCdhLCAncykgdCA9ICgnYSwgJ3MpIFN0ZXAudCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mIHsgc3RhdGUgOiAncyB9XG4gICAgfCBZaWVsZCBvZlxuICAgICAgICB7IHZhbHVlIDogJ2FcbiAgICAgICAgOyBzdGF0ZSA6ICdzXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgfCBMZWZ0IG9mICdhXG4gICAgfCBSaWdodCBvZiAnYlxuICAgIHwgQm90aCBvZiAnYSAqICdiXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgdHlwZSBIZWFwID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgcG9wX21pbiA6ICdhIHQgLT4gKCdhICogJ2EgdCkgb3B0aW9uXG5lbmRcblxubGV0IG1lcmdlX2FsbCAobW9kdWxlIEhlYXAgOiBIZWFwKSBzZXFzIH5jb21wYXJlID1cbiAgbGV0IG1vZHVsZSBNZXJnZV9hbGxfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBoZWFwIDogKCdhICogJ2EgQmFzZS5TZXF1ZW5jZS50KSBIZWFwLnRcbiAgICAgIDsgbm90X3lldF9pbl9oZWFwIDogJ2EgQmFzZS5TZXF1ZW5jZS50IGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgY3JlYXRlID0gRmllbGRzLmNyZWF0ZVxuICBlbmRcbiAgaW5cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDpcbiAgICAgIChNZXJnZV9hbGxfc3RhdGUuY3JlYXRlXG4gICAgICAgICB+aGVhcDooSGVhcC5jcmVhdGUgfmNvbXBhcmU6KGZ1biBhIGIgLT4gQmFzZS5Db21wYXJhYmxlLmxpZnQgY29tcGFyZSB+Zjpmc3QgYSBiKSlcbiAgICAgICAgIH5ub3RfeWV0X2luX2hlYXA6c2VxcylcbiAgICB+ZjooZnVuIHsgaGVhcDsgbm90X3lldF9pbl9oZWFwIH0gLT5cbiAgICAgIG1hdGNoIG5vdF95ZXRfaW5faGVhcCB3aXRoXG4gICAgICB8IHNlcSA6OiBub3RfeWV0X2luX2hlYXAgLT5cbiAgICAgICAgKG1hdGNoIEV4cGVydC5uZXh0X3N0ZXAgc2VxIHdpdGhcbiAgICAgICAgIHwgRG9uZSAtPiBTa2lwIHsgc3RhdGUgPSB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9IH1cbiAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VxIH0gLT5cbiAgICAgICAgICAgU2tpcCB7IHN0YXRlID0geyBub3RfeWV0X2luX2hlYXAgPSBzZXEgOjogbm90X3lldF9pbl9oZWFwOyBoZWFwIH0gfVxuICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gZWx0OyBzdGF0ZSA9IHNlcSB9IC0+XG4gICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IHsgbm90X3lldF9pbl9oZWFwOyBoZWFwID0gSGVhcC5hZGQgaGVhcCAoZWx0LCBzZXEpIH0gfSlcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIEhlYXAucG9wX21pbiBoZWFwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBEb25lXG4gICAgICAgICB8IFNvbWUgKChlbHQsIHNlcSksIGhlYXApIC0+XG4gICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBlbHQ7IHN0YXRlID0geyBoZWFwOyBub3RfeWV0X2luX2hlYXAgPSBbIHNlcSBdIH0gfSkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFF1aWNrY2hlY2tfaW50Zlxub3BlbiBCYXNlX3F1aWNrY2hlY2tcbm1vZHVsZSBGbG9hdCA9IEJhc2UuRmxvYXRcbm1vZHVsZSBJbnQgPSBCYXNlLkludFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBPcHRpb24gPSBCYXNlLk9wdGlvblxubW9kdWxlIFNldCA9IEJhc2UuU2V0XG5tb2R1bGUgU2V4cCA9IEJhc2UuU2V4cFxuXG5tb2R1bGUgUG9seW1vcnBoaWNfdHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB2YXJpYW50MiA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdmFyaWFudDMgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdmFyaWFudDQgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB2YXJpYW50NSA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIHwgYEUgb2YgJ2VcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdmFyaWFudDYgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgfCBgRiBvZiAnZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IpIHR1cGxlMiA9ICdhICogJ2IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYykgdHVwbGUzID0gJ2EgKiAnYiAqICdjIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0dXBsZTQgPSAnYSAqICdiICogJ2MgKiAnZCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHR1cGxlNSA9ICdhICogJ2IgKiAnYyAqICdkICogJ2UgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSB0dXBsZTYgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlICogJ2ZcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgJ3IpIGZuMiA9ICdhIC0+ICdiIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsICdyKSBmbjMgPSAnYSAtPiAnYiAtPiAnYyAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsICdyKSBmbjQgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgLSdlLCAncikgZm41ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ3JcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgLSdmLCAncikgZm42ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ2YgLT4gJ3JcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbmVuZFxuXG5tb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPYnNlcnZlclxuXG4gIGxldCBvZl9oYXNoICh0eXBlIGEpIChtb2R1bGUgTSA6IERlcml2aW5nX2hhc2ggd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgb2ZfaGFzaF9mb2xkIE0uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNlxuICBsZXQgb2ZfcHJlZGljYXRlIGEgYiB+ZiA9IHVubWFwICh2YXJpYW50MiBhIGIpIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBgQSB4IGVsc2UgYEIgeClcbiAgbGV0IHNpbmdsZXRvbiAoKSA9IG9wYXF1ZVxuICBsZXQgZG91YmxldG9uIGYgPSBvZl9wcmVkaWNhdGUgKHNpbmdsZXRvbiAoKSkgKHNpbmdsZXRvbiAoKSkgfmZcbiAgbGV0IGVudW0gXyB+ZiA9IHVubWFwIGludCB+ZlxuXG4gIGxldCBvZl9saXN0IGxpc3QgfmVxdWFsID1cbiAgICBsZXQgZiB4ID1cbiAgICAgIG1hdGNoIExpc3QuZmluZGkgbGlzdCB+ZjooZnVuIF8geSAtPiBlcXVhbCB4IHkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlF1aWNrY2hlY2suT2JzZXJ2ZXIub2ZfbGlzdDogdmFsdWUgbm90IGZvdW5kXCJcbiAgICAgIHwgU29tZSAoaSwgXykgLT4gaVxuICAgIGluXG4gICAgZW51bSAoTGlzdC5sZW5ndGggbGlzdCkgfmZcbiAgOztcblxuICBsZXQgb2ZfZnVuIGYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgKGYgKCkpIHggfnNpemUgfmhhc2gpXG5cbiAgbGV0IGNvbXBhcmlzb24gfmNvbXBhcmUgfmVxIH5sdCB+Z3QgPVxuICAgIHVubWFwXG4gICAgICAodmFyaWFudDMgbHQgKHNpbmdsZXRvbiAoKSkgZ3QpXG4gICAgICB+ZjooZnVuIHggLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlIHggZXEgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBgQSB4IGVsc2UgaWYgYyA+IDAgdGhlbiBgQyB4IGVsc2UgYEIgeClcbiAgOztcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJhdG9yXG4gIG9wZW4gTGV0X3N5bnRheFxuXG4gIGxldCBzaW5nbGV0b24gPSByZXR1cm5cblxuICBsZXQgZG91YmxldG9uIHggeSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGlmIFNwbGl0dGFibGVfcmFuZG9tLmJvb2wgcmFuZG9tIHRoZW4geCBlbHNlIHkpXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZiAoKSkgfnNpemUgfnJhbmRvbSlcblxuICBsZXQgb2Zfc2VxdWVuY2UgfnAgc2VxID1cbiAgICBpZiBGbG9hdC4oIDw9ICkgcCAwLiB8fCBGbG9hdC4oID4gKSBwIDEuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiR2VuZXJhdG9yLm9mX3NlcXVlbmNlOiBwcm9iYWJpbGl0eSBbJWZdIG91dCBvZiBib3VuZHNcIiBwKTtcbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5maW5pc2g6KGZ1biAoKSAtPiBmYWlsd2l0aCBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcmFuIG91dCBvZiB2YWx1ZXNcIilcbiAgICAgIH5mOihmdW4gKCkgeCB+ayAtPiB3ZWlnaHRlZF91bmlvbiBbIHAsIHNpbmdsZXRvbiB4OyAxLiAtLiBwLCBvZl9mdW4gayBdKVxuICA7O1xuXG4gIGxldCBnZW9tZXRyaWMgPSBHZW5lcmF0b3IuaW50X2dlb21ldHJpY1xuICBsZXQgc21hbGxfbm9uX25lZ2F0aXZlX2ludCA9IHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50XG4gIGxldCBzbWFsbF9wb3NpdGl2ZV9pbnQgPSBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnRcbiAgbGV0IGxpc3Rfd2l0aF9sZW5ndGggbGVuZ3RoIHQgPSBsaXN0X3dpdGhfbGVuZ3RoIHQgfmxlbmd0aFxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTZcbiAgbGV0IGZuMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMlxuICBsZXQgZm4zID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm4zXG4gIGxldCBmbjQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjRcbiAgbGV0IGZuNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNVxuICBsZXQgZm42ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm42XG5cbiAgbGV0IGNvbXBhcmVfZm4gZG9tID1cbiAgICBmbiBkb20gaW50ID4+fCBmdW4gZ2V0X2luZGV4IHggeSAtPiBbJWNvbXBhcmU6IGludF0gKGdldF9pbmRleCB4KSAoZ2V0X2luZGV4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsX2ZuIGRvbSA9IGNvbXBhcmVfZm4gZG9tID4+fCBmdW4gY21wIHggeSAtPiBJbnQuKCA9ICkgKGNtcCB4IHkpIDBcbmVuZFxuXG5tb2R1bGUgU2hyaW5rZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaHJpbmtlclxuXG4gIGxldCBlbXB0eSAoKSA9IGF0b21pY1xuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNlxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBHZW5lcmF0b3JcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBHZW5lcmF0b3JcbiAgZW5kXG5cbiAgaW5jbHVkZSBHZW5lcmF0b3IuTW9uYWRfaW5maXhcblxuICBsZXQgcmV0dXJuID0gR2VuZXJhdG9yLnJldHVyblxuZW5kXG5cbm1vZHVsZSBDb25maWd1cmUgKENvbmZpZyA6IFF1aWNrY2hlY2tfY29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIGxldCBub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG4gIGxldCByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2Ugbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0ciAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFslaGFzaDogc3RyaW5nXSBzdHIpXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc2VlZCBzZWVkIDogVGVzdC5Db25maWcuU2VlZC50ID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IE5vbmRldGVybWluaXN0aWNcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBEZXRlcm1pbmlzdGljIHN0cmluZ1xuICA7O1xuXG4gIGxldCBtYWtlX3Nocmlua19jb3VudCA9IGZ1bmN0aW9uXG4gICAgfCBgRXhoYXVzdGl2ZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBgTGltaXQgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgOiBUZXN0LkNvbmZpZy50ID1cbiAgICB7IHNlZWQgPSBtYWtlX3NlZWQgKE9wdGlvbi52YWx1ZSBzZWVkIH5kZWZhdWx0OmRlZmF1bHRfc2VlZClcbiAgICA7IHNpemVzID0gT3B0aW9uLnZhbHVlIHNpemVzIH5kZWZhdWx0OmRlZmF1bHRfc2l6ZXNcbiAgICA7IHRlc3RfY291bnQgPSBPcHRpb24udmFsdWUgdHJpYWxzIH5kZWZhdWx0OmRlZmF1bHRfdHJpYWxfY291bnRcbiAgICA7IHNocmlua19jb3VudCA9XG4gICAgICAgIG1ha2Vfc2hyaW5rX2NvdW50IChPcHRpb24udmFsdWUgc2hyaW5rX2F0dGVtcHRzIH5kZWZhdWx0OmRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzKVxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV90ZXN0X20gKHR5cGUgYSkgfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgOiAobW9kdWxlIFRlc3QuUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IE9wdGlvbi52YWx1ZSBzaHJpbmtlciB+ZGVmYXVsdDpTaHJpbmtlci5hdG9taWNcbiAgICAgIGxldCBzZXhwX29mX3QgPSBPcHRpb24udmFsdWUgc2V4cF9vZiB+ZGVmYXVsdDpbJXNleHBfb2Y6IF9dXG4gICAgZW5kXG4gICAgaW5cbiAgICAobW9kdWxlIE0pXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV92YWx1ZSA/KHNlZWQgPSBkZWZhdWx0X3NlZWQpID8oc2l6ZSA9IDMwKSBnZW4gPVxuICAgIGxldCByYW5kb20gPSByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkIGluXG4gICAgR2VuZXJhdG9yLmdlbmVyYXRlIGdlbiB+c2l6ZSB+cmFuZG9tXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV9zZXF1ZW5jZSA/c2VlZCA/c2l6ZXMgZ2VuID1cbiAgICBsZXQgY29uZmlnID1cbiAgICAgIG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzOihTb21lIEludC5tYXhfdmFsdWUpIH5zaHJpbmtfYXR0ZW1wdHM6Tm9uZVxuICAgIGluXG4gICAgbGV0IHJldHVybiA9IHJlZiBTZXF1ZW5jZS5lbXB0eSBpblxuICAgIFRlc3Qud2l0aF9zYW1wbGVfZXhuIH5jb25maWcgZ2VuIH5mOihmdW4gc2VxdWVuY2UgLT4gcmV0dXJuIDo9IHNlcXVlbmNlKTtcbiAgICAhcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGl0ZXIgP3NlZWQgP3NpemVzID90cmlhbHMgZ2VuIH5mID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0czpOb25lIGluXG4gICAgVGVzdC53aXRoX3NhbXBsZV9leG4gfmNvbmZpZyBnZW4gfmY6KGZ1biBzZXF1ZW5jZSAtPiBTZXF1ZW5jZS5pdGVyIHNlcXVlbmNlIH5mKVxuICA7O1xuXG4gIGxldCB0ZXN0ID9zZWVkID9zaXplcyA/dHJpYWxzID9zaHJpbmtlciA/c2hyaW5rX2F0dGVtcHRzID9zZXhwX29mID9leGFtcGxlcyBnZW4gfmYgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIGluXG4gICAgbGV0IHRlc3RfbSA9IG1ha2VfdGVzdF9tIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIGluXG4gICAgVGVzdC5ydW5fZXhuIH5jb25maWcgP2V4YW1wbGVzIH5mIHRlc3RfbVxuICA7O1xuXG4gIGxldCB0ZXN0X29yX2Vycm9yXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/dHJpYWxzXG4gICAgICAgID9zaHJpbmtlclxuICAgICAgICA/c2hyaW5rX2F0dGVtcHRzXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgID9leGFtcGxlc1xuICAgICAgICBnZW5cbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgaW5cbiAgICBsZXQgdGVzdF9tID0gbWFrZV90ZXN0X20gfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgaW5cbiAgICBUZXN0LnJ1biB+Y29uZmlnID9leGFtcGxlcyB+ZiB0ZXN0X21cbiAgOztcblxuICBsZXQgdGVzdF9kaXN0aW5jdF92YWx1ZXNcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH50cmlhbHNcbiAgICAgICAgfmRpc3RpbmN0X3ZhbHVlc1xuICAgICAgICB+Y29tcGFyZVxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGtleVxuXG4gICAgICBsZXQgKGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KSA9IGNvbXBhcmVcblxuICAgICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAgIG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgICB8IFNvbWUgc2V4cF9vZiAtPiBzZXhwX29mXG4gICAgICAgIHwgTm9uZSAtPiBzZXhwX29mX29wYXF1ZVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuICAgIGluXG4gICAgbGV0IGZhaWwgc2V0ID1cbiAgICAgIGxldCBleHBlY3RfY291bnQgPSBkaXN0aW5jdF92YWx1ZXMgaW5cbiAgICAgIGxldCBhY3R1YWxfY291bnQgPSBTZXQubGVuZ3RoIHNldCBpblxuICAgICAgbGV0IHZhbHVlcyA9XG4gICAgICAgIG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgc2V4cF9vZl9lbHQgLT4gU29tZSBbJXNleHAgKFNldC50b19saXN0IHNldCA6IGVsdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW5zdWZmaWNpZW50IGRpc3RpbmN0IHZhbHVlc1wiXG4gICAgICAgICAgICAodHJpYWxzIDogaW50KVxuICAgICAgICAgICAgKGV4cGVjdF9jb3VudCA6IGludClcbiAgICAgICAgICAgIChhY3R1YWxfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAodmFsdWVzIDogKFNleHAudCBvcHRpb25bQHNleHAub3B0aW9uXSkpXVxuICAgIGluXG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBsZXQgc2V0ID0gcmVmIChTZXQuZW1wdHkgKG1vZHVsZSBNKSkgaW5cbiAgICAgIGl0ZXIgP3NlZWQgP3NpemVzIH50cmlhbHMgZ2VuIH5mOihmdW4gZWx0IC0+XG4gICAgICAgIHNldCA6PSBTZXQuYWRkICFzZXQgZWx0O1xuICAgICAgICBpZiBTZXQubGVuZ3RoICFzZXQgPj0gZGlzdGluY3RfdmFsdWVzIHRoZW4gci5yZXR1cm4gKCkpO1xuICAgICAgZmFpbCAhc2V0KVxuICA7O1xuXG4gIGxldCB0ZXN0X2Nhbl9nZW5lcmF0ZVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgPyh0cmlhbHMgPSBkZWZhdWx0X2Nhbl9nZW5lcmF0ZV90cmlhbF9jb3VudClcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCByID0gcmVmIFtdIGluXG4gICAgbGV0IGZfYW5kX2VucXVldWUgcmV0dXJuIHggPSBpZiBmIHggdGhlbiByZXR1cm4gYENhbl9nZW5lcmF0ZSBlbHNlIHIgOj0geCA6OiAhciBpblxuICAgIG1hdGNoXG4gICAgICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHJldHVybiAtPlxuICAgICAgICBpdGVyID9zZWVkID9zaXplcyB+dHJpYWxzIGdlbiB+ZjooZl9hbmRfZW5xdWV1ZSByZXR1cm4ucmV0dXJuKTtcbiAgICAgICAgYENhbm5vdF9nZW5lcmF0ZSlcbiAgICB3aXRoXG4gICAgfCBgQ2FuX2dlbmVyYXRlIC0+ICgpXG4gICAgfCBgQ2Fubm90X2dlbmVyYXRlIC0+XG4gICAgICAobWF0Y2ggc2V4cF9vZiB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2Fubm90IGdlbmVyYXRlXCJcbiAgICAgICB8IFNvbWUgc2V4cF9vZl92YWx1ZSAtPlxuICAgICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJjYW5ub3QgZ2VuZXJhdGVcIiB+YXR0ZW1wdHM6KCFyIDogdmFsdWUgbGlzdCldKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQ29uZmlndXJlIChzdHJ1Y3RcbiAgICBsZXQgZGVmYXVsdF9zZWVkID0gYERldGVybWluaXN0aWMgXCJhbiBhcmJpdHJhcnkgYnV0IGRldGVybWluaXN0aWMgc3RyaW5nXCJcblxuICAgIGxldCBkZWZhdWx0X3RyaWFsX2NvdW50ID1cbiAgICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgfCBXNjQgLT4gMTBfMDAwXG4gICAgICB8IFczMiAtPiAxXzAwMFxuICAgIDs7XG5cbiAgICBsZXQgZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQgPSAxMF8wMDBcbiAgICBsZXQgZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMgPSBgTGltaXQgMTAwMFxuXG4gICAgbGV0IGRlZmF1bHRfc2l6ZXMgPVxuICAgICAgU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFMxID0gUzFcbm1vZHVsZSB0eXBlIFMyID0gUzJcbm1vZHVsZSB0eXBlIFNfaW50ID0gU19pbnRcbm1vZHVsZSB0eXBlIFNfcmFuZ2UgPSBTX3JhbmdlXG5cbnR5cGUgbm9ucmVjIHNlZWQgPSBzZWVkXG50eXBlIG5vbnJlYyBzaHJpbmtfYXR0ZW1wdHMgPSBzaHJpbmtfYXR0ZW1wdHNcblxubW9kdWxlIHR5cGUgUXVpY2tjaGVja19jb25maWcgPSBRdWlja2NoZWNrX2NvbmZpZ1xubW9kdWxlIHR5cGUgUXVpY2tjaGVja19jb25maWd1cmVkID0gUXVpY2tjaGVja19jb25maWd1cmVkXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gUXVpY2tjaGVja2FibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBDb252ID0gQ29udlxubW9kdWxlIHR5cGUgQ29udl9maWx0ZXJlZCA9IENvbnZfZmlsdGVyZWRcbm1vZHVsZSB0eXBlIENvbnYxID0gQ29udjFcbm1vZHVsZSB0eXBlIENvbnZfZmlsdGVyZWQxID0gQ29udl9maWx0ZXJlZDFcbm1vZHVsZSB0eXBlIFMgPSBRdWlja2NoZWNrLlNcbm1vZHVsZSB0eXBlIFMxID0gUXVpY2tjaGVjay5TMVxubW9kdWxlIHR5cGUgUzIgPSBRdWlja2NoZWNrLlMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFF1aWNrY2hlY2suU19pbnRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnYgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDogUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPVxuc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZTFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnYxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSlcbiAgICAgIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZDFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EpXG4gICAgICB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuIiwiaW5jbHVkZSBCYXNlLk9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cblxubGV0IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IGkgPSBpZiBpIDwgMCB0aGVuIGkgKyBsZW5ndGhfZnVuIHQgZWxzZSBpXG5cbmxldCBzbGljZSB+bGVuZ3RoX2Z1biB+c3ViX2Z1biB0IHN0YXJ0IHN0b3AgPVxuICBsZXQgc3RvcCA9IGlmIHN0b3AgPSAwIHRoZW4gbGVuZ3RoX2Z1biB0IGVsc2Ugc3RvcCBpblxuICBsZXQgcG9zID0gbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgc3RhcnQgaW5cbiAgbGV0IGxlbiA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0b3AgLSBwb3MgaW5cbiAgc3ViX2Z1biB0IH5wb3MgfmxlblxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5vcGVuIFBlcm1zLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQmFzZS5BcnJheVxubW9kdWxlIENvcmVfc2VxdWVuY2UgPSBTZXF1ZW5jZVxuXG5pbmNsdWRlIChcbiAgQmFzZS5BcnJheSA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGdsb2JhbGl6ZSwgc2V4cF9ncmFtbWFyXVxuICBlbmQpXG5cbnR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxubW9kdWxlIFByaXZhdGUgPSBCYXNlLkFycmF5LlByaXZhdGVcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkFycmF5XG5cbiAgbGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbiAgbGV0IHNsaWNlIHQgc3RhcnQgc3RvcCA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIHQgc3RhcnQgc3RvcFxuICA7O1xuXG4gIGxldCBuZ2V0IHQgaSA9IHQuKG5vcm1hbGl6ZSB0IGkpXG4gIGxldCBuc2V0IHQgaSB2ID0gdC4obm9ybWFsaXplIHQgaSkgPC0gdlxuXG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIG9wZW4gQmFzZS5BcnJheVxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgc2V0ID0gc2V0XG4gIGVuZFxuXG4gICgqIFNlZSBPQ2FtbCBwZXJmIG5vdGVzIGZvciB3aHkgdGhlc2UgYXJyYXkgYmxpdHMgYXJlIHNwZWNpYWwgY2FzZWQgLS0gaW4gcGFydGljdWxhcixcbiAgICAgdGhlIHNlY3Rpb24gZW50aXRsZWQgXCJGYXN0LCBTbG93IGFuZCBJbmNvcnJlY3QgQXJyYXkgYmxpdHNcIiBvZlxuICAgICBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMzAyMjAwMDAyMjkvaHR0cDovL2phbmVzdHJlZXQuZ2l0aHViLmNvbS9vY2FtbC1wZXJmLW5vdGVzLmh0bWwgKilcbiAgbW9kdWxlIEludCA9IHN0cnVjdFxuICAgIHR5cGUgdF8gPSBpbnQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSAoID0gKVxuICAgICAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gMSBlbHNlIDBcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDBcblxuICAgICAgICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcIlxuICAgICAgW0BAbm9hbGxvY11cbiAgICBlbmRcblxuICAgIGV4dGVybmFsIGdldCA6ICh0X1tAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldFxuICAgICAgOiAgKHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgICA6ICAodF9bQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICAgIDogICh0X1tAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgICAgIGxldCBlcXVhbCA9IEJhc2UuRmxvYXQuZXF1YWxcbiAgICAgICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuIDEuIGVsc2UgMC5cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDAuXG5cbiAgICAgICAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUGVybWlzc2lvbmVkID0gc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0XG5cbiAgaW5jbHVkZVxuICAgIEluZGV4ZWRfY29udGFpbmVyLlMxX3dpdGhfY3JlYXRvcnNfcGVybWlzc2lvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcblxuICBpbmNsdWRlIEJsaXQuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG4gIGluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCgnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gIGV4dGVybmFsIGdldFxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKCgnYSwgWz4gd3JpdGUgXSkgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgoJ2EsIFs+IHdyaXRlIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIHZhbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gKGZsb2F0LCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNyZWF0ZV9sb2NhbCA6IGxlbjppbnQgLT4gJ2EgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0W0Bsb2NhbF0pXG4gIHZhbCBpbml0IDogaW50IC0+IGY6KChpbnQgLT4gJ2EpW0Bsb2NhbF0pIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvcHlfbWF0cml4XG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBhcHBlbmQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29uY2F0IDogKCdhLCBbPiByZWFkIF0pIHQgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29weSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWxsIDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkaW5nX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG1hcGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgaXRlcmkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgZm9sZGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZGluZ19tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAnYWNjICogKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiAnYWNjXG5cbiAgdmFsIHNvcnRcbiAgICA6ICA/cG9zOmludFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gKCdhLCBbPiByZWFkX3dyaXRlIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICB2YWwgc3RhYmxlX3NvcnQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgdHJhbnNwb3NlXG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cblxuICB2YWwgdHJhbnNwb3NlX2V4blxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgbm9ybWFsaXplIDogKCdhLCBfKSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbmdldCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICgnYSBvcHRpb24sIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICB2YWwgaXRlcjJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGQyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYiAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9yX2FsbDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgZXhpc3RzMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gYm9vbFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHN3YXAgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gZjooKCdhIC0+ICdhKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcbiAgdmFsIGZpbmRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZGlfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYlxuXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSAqICdhKSBvcHRpb25cblxuICB2YWwgcmVkdWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+ICdhXG5cbiAgdmFsIHBlcm11dGVcbiAgICA6ICA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50XG4gICAgLT4gP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gdW5pdFxuXG4gIHZhbCByYW5kb21fZWxlbWVudCA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByYW5kb21fZWxlbWVudF9leG4gOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0IG9wdGlvblxuICB2YWwgemlwX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIHVuemlwIDogKCdhICogJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHNvcnRlZF9jb3B5XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGxhc3QgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gYm9vbFxuICB2YWwgdG9fc2VxdWVuY2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG4gIHZhbCB0b19zZXF1ZW5jZV9tdXRhYmxlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSBQZXJtaXNzaW9uZWQgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIG1vZHVsZSBJbnQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAtJ3Blcm1zIHQgPSAoaW50LCAncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBCbGl0LlNfcGVybWlzc2lvbnMgd2l0aCB0eXBlICdwZXJtcyB0IDo9ICdwZXJtcyB0XG5cbiAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgOiAgc3JjOihbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6KFs+IHdyaXRlIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcIlxuICAgIFtAQG5vYWxsb2NdXG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIC0ncGVybXMgdCA9IChmbG9hdCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgZ2V0XG4gICAgICA6ICAoWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXRcbiAgICAgIDogIChbPiB3cml0ZSBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGZsb2F0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICAgIDogIChbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBmbG9hdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgICAgOiAgKFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICA6ICBzcmM6KFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDooWz4gd3JpdGUgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XCJcbiAgICBbQEBub2FsbG9jXVxuICBlbmRcblxuICB2YWwgb2ZfYXJyYXlfaWQgOiAnYSBhcnJheSAtPiAoJ2EsIFs8IHJlYWRfd3JpdGUgXSkgdFxuICB2YWwgdG9fYXJyYXlfaWQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiAnYSBhcnJheVxuICB2YWwgdG9fc2VxdWVuY2VfaW1tdXRhYmxlIDogKCdhLCBbPiBpbW11dGFibGUgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgaW5jbHVkZSBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHR5cGVyZXBdXG5cbiAgbW9kdWxlIEludCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVC5JbnRcblxuICAgIHR5cGUgLSdwZXJtcyB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuRmxvYXRcblxuICAgIHR5cGUgLSdwZXJtcyB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICBsZXQgdG9fYXJyYXlfaWQgPSBGbi5pZFxuICBsZXQgb2ZfYXJyYXlfaWQgPSBGbi5pZFxuXG4gIGluY2x1ZGUgKFQgOiBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICBsZXQgdG9fYXJyYXkgPSBjb3B5XG4gIGxldCB0b19zZXF1ZW5jZV9pbW11dGFibGUgPSB0b19zZXF1ZW5jZV9tdXRhYmxlXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lci5TMV93aXRoX2NyZWF0b3JzIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBleHRlcm5hbCBsZW5ndGggOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogKCdhIHRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKCdhIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgnYSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfbG9jYWwgOiBsZW46aW50IC0+ICdhIC0+ICgnYSB0W0Bsb2NhbF0pXG4gIHZhbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gZmxvYXQgdFxuICB2YWwgaW5pdCA6IGludCAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICdhIHQgdFxuICB2YWwgY29weV9tYXRyaXggOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBhcHBlbmQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgY29uY2F0IDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGZpbGwgOiAnYSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG5cbiAgaW5jbHVkZSBCbGl0LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZvbGRpbmdfbWFwIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmb2xkX21hcCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSkgLT4gJ2FjYyAqICdiIHRcbiAgdmFsIG1hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGl0ZXJpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KChpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgdmFsIGZvbGRpbmdfbWFwaVxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdiIHRcblxuICB2YWwgZm9sZF9tYXBpXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICdiIHRcblxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSkgLT4gaW5pdDonYWNjIC0+ICdhY2NcbiAgdmFsIHNvcnQgOiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIHN0YWJsZV9zb3J0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBjb25jYXRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgY29uY2F0X21hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHBhcnRpdGlvbmlfdGYgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0IDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB0cmFuc3Bvc2UgOiAnYSB0IHQgLT4gJ2EgdCB0IG9wdGlvblxuICB2YWwgdHJhbnNwb3NlX2V4biA6ICdhIHQgdCAtPiAnYSB0IHRcbiAgdmFsIG5vcm1hbGl6ZSA6ICdhIHQgLT4gaW50IC0+IGludFxuICB2YWwgc2xpY2UgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgbmdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBuc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICdhIG9wdGlvbiB0IC0+ICdhIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBpdGVyMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooKCdhIC0+ICdiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIG1hcDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSkgLT4gJ2MgdFxuXG4gIHZhbCBmb2xkMl9leG5cbiAgICA6ICAnYSB0XG4gICAgLT4gJ2IgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdiIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBmb3JfYWxsMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooKCdhIC0+ICdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0czJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHRcbiAgdmFsIHN3YXAgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgcmV2X2lucGxhY2UgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdF9yZXYgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcbiAgdmFsIGZpbmRpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBmaW5kaV9leG4gOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG5cbiAgdmFsIGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlXG4gICAgOiAgJ2EgdFxuICAgIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIHJlZHVjZSA6ICdhIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAnYSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIHBlcm11dGUgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ID9wb3M6aW50IC0+ID9sZW46aW50IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByYW5kb21fZWxlbWVudF9leG4gOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICdhIHQgLT4gJ2FcbiAgdmFsIHppcCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHVuemlwIDogKCdhICogJ2IpIHQgLT4gJ2EgdCAqICdiIHRcbiAgdmFsIHNvcnRlZF9jb3B5IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBsYXN0IDogJ2EgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbiAgdmFsIHRvX3NlcXVlbmNlX211dGFibGUgOiAnYSB0IC0+ICdhIENvcmVfc2VxdWVuY2UudFxuZW5kXG5cbmluY2x1ZGUgKFQgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIGFycmF5KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuSW50XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuRmxvYXRcblxuICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIF8gKE0gOiBTKSA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtKSB0X1xuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtKSB0IDo9ICgnYSwgJ3Blcm0pIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF8gPSAnYSB0XG5lbmRcblxubW9kdWxlIF8gKE0gOiBQZXJtaXNzaW9uZWQpIDogc2lnXG4gIHR5cGUgJ2EgdF9cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdF9cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlICdhIHRfID0gKCdhLCByZWFkX3dyaXRlKSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVHlwZXJlcF9saWIuU3RkXG5pbmNsdWRlIEJhc2UuTGlzdFxuXG50eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzc29jXG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhICogJ2IpIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCBjb21wYXJlICh0eXBlIGEgYikgY29tcGFyZV9hIGNvbXBhcmVfYiA9IFslY29tcGFyZTogKGEgKiBiKSBsaXN0XVxuZW5kXG5cbmxldCB0b19zdHJpbmcgfmYgdCA9XG4gIFNleHBsaWIuU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIHggLT4gU2V4cGxpYi5TZXhwLkF0b20geCkgKG1hcCB0IH5mKSlcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdFxubGV0IGdlbl9ub25fZW1wdHkgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3Rfbm9uX2VtcHR5XG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuZ3RoIHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X3dpdGhfbGVuZ3RoIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5sZW5ndGhcbjs7XG5cbmxldCBnZW5fZmlsdGVyZWQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RfZmlsdGVyZWRcbmxldCBnZW5fcGVybXV0YXRpb25zID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X3Blcm11dGF0aW9uc1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubGlzdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubGlzdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEhhc2h0YmxfaW50ZlxubW9kdWxlIEhhc2hhYmxlID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBIYXNodGJsX2ludGYuTWVyZ2VfaW50b19hY3Rpb25cbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgQ3JlYXRvcnMgPSBIYXNodGJsLkNyZWF0b3JzXG5cbmluY2x1ZGUgKFxuICBIYXNodGJsIDpcbiAgc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEJhc2UuSGFzaHRibC5TX3dpdGhvdXRfc3VibW9kdWxlcyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZFxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIH5nZXRfZGF0YVxuICAgICAgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXBcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICB+Z2V0X2RhdGFcbiAgICAgIH5jb21iaW5lXG4gICAgICBsXG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZSB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfc3RhYmxlID0gU19zdGFibGUgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBLZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBLZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgS2V5X3N0YWJsZSA9IEtleV9zdGFibGVcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsLlBvbHlcblxuICBsZXQgdmFsaWRhdGUgPSB2YWxpZGF0ZVxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICAgICAgdHlwZSAoJ2EsICdiKSBlbCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZjNlNDQ1Yy00OTkyLTExZTYtYTI3OS0zNzAzYmUzMTFlN2JcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbHdpdGggXCJDb3JlX2hhc2h0YmwuYmluX3JlYWRfdF86IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5cbiAgdHlwZSBrZXkgPSBULktleS50XG4gIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSB0ID0gKFQuS2V5LnQsICdhKSBoYXNodGJsXG4gIHR5cGUgJ2Ega2V5XyA9IFQuS2V5LnRcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuS2V5LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSAoXG4gICAgSGFzaHRibCA6XG4gICAgc2lnXG4gICAgICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBoYXNodGJsXG4gICAgZW5kKVxuXG4gIGxldCBlcXVhbCA9IEhhc2h0YmwuZXF1YWxcbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IHQgPSBpbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9rZXkgdFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gUG9seS5zZXhwX29mX3QgVC5LZXkuc2V4cF9vZl90IHNleHBfb2ZfdiB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFQuS2V5XG4gICAgICAgIGluY2x1ZGUgS2V5J1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gS2V5LnQgKiAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjhmYWJhYjBhLTQ5OTItMTFlNi04Y2NhLTliYTJjNDY4NmQ5ZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNodGJsXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBrZXksIGRhdGEgPSBuZXh0ICgpIGluXG4gICAgICAgICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJIYXNodGJsLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBLZXkudF1cbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gIHN0cnVjdFxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgaGFzaHRibCBpcyByZWxpZWQgb24gYnkgc3RhYmxlIG1vZHVsZXNcbiAgICAgICAoZS5nLiBIYXNodGFibGUuU3RhYmxlKSBhbmQgaXMgdGhlcmVmb3JlIGFzc3VtZWQgdG8gYmUgc3RhYmxlLiAgU28sIGlmIHRoZSBrZXkgYW5kXG4gICAgICAgZGF0YSBjYW4gcHJvdmlkZSBhIHN0YWJsZSB3aXRuZXNzZXMsIHRoZW4gd2UgY2FuIHNhZmVseSB0aGUgaGFzaHRibCBpcyBhbHNvXG4gICAgICAgc3RhYmxlLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAodHlwZSBkYXRhKSAoX2RhdGFfc3RhYmxlX3dpdG5lc3MgOiBkYXRhIFN0YWJsZV93aXRuZXNzLnQpXG4gICAgICA6IGRhdGEgdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICA9XG4gICAgICBsZXQgKF8gOiBrZXkgU3RhYmxlX3dpdG5lc3MudCkgPSBLZXknLnN0YWJsZV93aXRuZXNzIGluXG4gICAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9zdGFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgbGV0IGhhc2hhYmxlID1cbiAgICAgIHsgSGFzaGFibGUuaGFzaCA9IEtleS5oYXNoOyBjb21wYXJlID0gS2V5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IEtleS5zZXhwX29mX3QgfVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKEtleSA6IEtleSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2Vfc3RhYmxlIChLZXkgOiBLZXlfc3RhYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZSAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleSlcbmVuZFxuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTVxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIEZvcl9kZXJpdmluZyA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ID0gc3RydWN0XG4gIGluY2x1ZGUgKEhhc2h0YmwgOiBIYXNodGJsLkZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KVxuXG4gIG1vZHVsZSB0eXBlIE1fcXVpY2tjaGVjayA9IE1fcXVpY2tjaGVja1xuXG4gIGxldCBvZl9hbGlzdF9vcHRpb24gbSBhbGlzdCA9IFJlc3VsdC5vayAob2ZfYWxpc3Rfb3JfZXJyb3IgbSBhbGlzdClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IChLZXkudCAqIGRhdGEpIExpc3QudF1cbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwIH5mOihvZl9hbGlzdF9vcHRpb24gKG1vZHVsZSBLZXkpKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19vYnNlcnZlcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5vYnNlcnZlcjogKEtleS50ICogZGF0YSkgTGlzdC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2FsaXN0XG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX3Nocmlua2VyX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLnNocmlua2VyOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdXG4gICAgfD4gUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICAgICB+Zjoob2ZfYWxpc3Rfb3B0aW9uIChtb2R1bGUgS2V5KSlcbiAgICAgICAgIH5mX2ludmVyc2U6dG9fYWxpc3RcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5sZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoX3NldF9pbnRmXG5pbmNsdWRlIEJhc2UuSGFzaF9zZXRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGUgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFNfc3RhYmxlID0gU19zdGFibGUgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEhhc2h0YmwuS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBFbHQgPSBIYXNodGJsLktleVxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBIYXNodGJsLktleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBFbHRfc3RhYmxlID0gSGFzaHRibC5LZXlfc3RhYmxlXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X3BsYWluXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBlbHQgPSBULkVsdC50XG4gIHR5cGUgbm9ucmVjIHQgPSBlbHQgdFxuXG4gIGxldCBlcXVhbCA9IGVxdWFsXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULkVsdC50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gUG9seS5zZXhwX29mX3QgVC5FbHQuc2V4cF9vZl90IHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gICAgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBULkVsdFxuICAgICAgICBpbmNsdWRlIFhcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgdHlwZSBlbCA9IEVsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYWQzODE2NzItNDk5Mi0xMWU2LTllMzYtYjc2ZGM4Y2Q0NjZmXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2hfc2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCB2ID0gbmV4dCAoKSBpblxuICAgICAgICAgIGFkZCB0IHZcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gIHN0cnVjdFxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgaGFzaF9zZXQgaXMgdXNlZCBpbiB0aGUgc3RhYmxlIG1vZHVsZXMgYmVsb3csIHNvIGl0J3NcbiAgICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGVsdCBpcyBzdGFibGUpIC4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgbGV0IChfIDogZWx0IFN0YWJsZV93aXRuZXNzLnQpID0gWC5zdGFibGVfd2l0bmVzcyBpblxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0XG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULkVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2Vfc3RhYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X3N0YWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEVsdCA6IEVsdF9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBFbHQgPSBFbHRcblxuICAgIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEVsdCA6IEVsdF9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZSAoRWx0IDogRWx0X3N0YWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGUgKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChFbHQpXG5lbmRcblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5lbmRcblxubGV0IGhhc2hhYmxlID0gUHJpdmF0ZS5oYXNoYWJsZVxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+Zjoob2ZfbGlzdCAobW9kdWxlIEtleSkpXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLm9ic2VydmVyOiBLZXkudCBMaXN0MC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2xpc3Rcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2suc2hyaW5rZXI6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suU2hyaW5rZXIubWFwIH5mOihvZl9saXN0IChtb2R1bGUgS2V5KSkgfmZfaW52ZXJzZTp0b19saXN0XG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgaW50ZXJmYWNlcyB1c2VkIGluIHt7IU1hcH1bTWFwXX0uIFNlZSB0aG9zZSBkb2NzIGZvciBhIGRlc2NyaXB0aW9uXG4gICAgb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezEsMiwzLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW01hcF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMzXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5tb2R1bGUgTWFwID0gQmFzZS5NYXBcbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBNYXAuT3JfZHVwbGljYXRlXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gTWFwLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gTWFwLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFRyZWUgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXkgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGVfaGFzaGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgS2V5X2Jpbl9pbyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcbiAgZW5kXG5cbiAgdHlwZSAoJ3QsICdjKSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ3QgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2MpXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzX2dlbmVyaWNcblxuICB2YWwga2V5X3NldFxuICAgIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gKCdrIGtleSwgJ2NtcCBjbXApIEJhc2UuU2V0LnQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAndiBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAoJ2sga2V5ICogJ3YpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2sga2V5IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnayBrZXkgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaHRibF9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YpIEhhc2h0YmwudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbU2V0LnRdLiAqKVxuICB2YWwgb2Zfa2V5X3NldFxuICAgIDogICgnayBrZXksICdjbXAgY21wKSBCYXNlLlNldC50XG4gICAgLT4gZjooKCdrIGtleSAtPiAndilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdhIGNtcFxuICB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX3BsYWluX3RyZWUgKEtleSA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gJ2IgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICdiIHRcbiAgICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gS2V5LnRcbiAgICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChLIDogc2lnXG4gICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgICAgZW5kXG4gICAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICAgIHR5cGUgXyB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSArJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIE1hcC50XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICdiIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKEtleS50LCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gICAgd2l0aCB0eXBlICdrIGtleSA6PSBLZXkudFxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBCaW5hYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChLZXkgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogIEtleS50IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBLZXkudCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFNfcGxhaW4gd2l0aCBtb2R1bGUgS2V5IDo9IEtleVxuICBpbmNsdWRlIFNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgUyB3aXRoIG1vZHVsZSBLZXkgOj0gS2V5XG4gIGluY2x1ZGUgQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5NYXAuRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSBNID0gQmFzZS5NYXAuTVxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFsqYmluKl0gZnVuY3Rpb25zIHN1cHBvcnQgYmluLWlvIG9uIGJhc2Utc3R5bGUgbWFwcyxcbiAgICAgIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IGludCBNYXAuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2MpIEtleV9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50IC0+IEJpbl9wcm90LlNoYXBlLnRcblxuICB2YWwgYmluX3NpemVfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlNpemUuc2l6ZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5TaXplLnNpemVyXG5cbiAgdmFsIGJpbl93cml0ZV9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuV3JpdGUud3JpdGVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuV3JpdGUud3JpdGVyXG5cbiAgdmFsIGJpbl9yZWFkX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5SZWFkLnJlYWRlclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuUmVhZC5yZWFkZXJcbiAgICAtPiAoaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlIG1hcHMsXG4gICAgICBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBpbnQgTWFwLk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZ19zdGFibGUgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIHZhbCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgOiAgKG1vZHVsZSBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBTdGFibGVfd2l0bmVzcy50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBTdGFibGVfd2l0bmVzcy50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBNYXBfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IChpbnQsIHN0cmluZykgdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDAwNjc0YmU5ZmU4ZGZlOWU5YWQ0NzYwNjdkN2Q4MTAxIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IG1hcCAoaywgZGlmZikgfmYxIH5mMiA9XG4gICAgICAgIGxldCBrID0gZjEgayBpblxuICAgICAgICBsZXQgZGlmZiA9XG4gICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgfCBgTGVmdCB2IC0+IGBMZWZ0IChmMiB2KVxuICAgICAgICAgIHwgYFJpZ2h0IHYgLT4gYFJpZ2h0IChmMiB2KVxuICAgICAgICAgIHwgYFVuZXF1YWwgKHYxLCB2MikgLT4gYFVuZXF1YWwgKGYyIHYxLCBmMiB2MilcbiAgICAgICAgaW5cbiAgICAgICAgaywgZGlmZlxuICAgICAgOztcblxuICAgICAgbGV0IG1hcF9kYXRhIHQgfmYgPSBtYXAgdCB+ZjE6Rm4uaWQgfmYyOmZcblxuICAgICAgbGV0IGxlZnQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYExlZnQgeCB8IGBVbmVxdWFsICh4LCBfKSAtPiBTb21lIHhcbiAgICAgICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmlnaHQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gQmFzZS5NYXAuTWVyZ2VfZWxlbWVudFxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBrX2dlbiB2X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikga19nZW4gdl9nZW5cbiAgOztcblxuICBsZXQgb2JzX3RyZWUga19vYnMgdl9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubWFwX3RyZWUga19vYnMgdl9vYnNcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3Iga19zaHIgdl9zaHIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfc2hyIHZfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdF9tXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5tYXBfdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubWFwX3RcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXAuVXNpbmdfY29tcGFyYXRvclxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaTooSGFzaHRibC5pdGVyaSBoYXNodGJsKSB3aXRoXG4gICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5mYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIk1hcC5vZl9oYXNodGJsX2V4bjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgIGtleVxuICAgICAgICBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCB0cmVlX29mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIHRvX3RyZWUgKG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXQgfmNvbXBhcmF0b3IgdCA9XG4gICAgQmFzZS5TZXQuVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKExpc3QudG9fYXJyYXkgKGtleXMgdCkpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0ID0ga2V5X3NldCB+Y29tcGFyYXRvciAob2ZfdHJlZSB+Y29tcGFyYXRvciB0KVxuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPVxuICAgIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICAgIH5jb21wYXJhdG9yOihCYXNlLlNldC5jb21wYXJhdG9yIGtleV9zZXQpXG4gICAgICAoQXJyYXkubWFwIChCYXNlLlNldC50b19hcnJheSBrZXlfc2V0KSB+ZjooZnVuIGtleSAtPiBrZXksIGYga2V5KSlcbiAgOztcblxuICBsZXQgdHJlZV9vZl9rZXlfc2V0IGtleV9zZXQgfmYgPSB0b190cmVlIChvZl9rZXlfc2V0IGtleV9zZXQgfmYpXG5lbmRcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBNYXAuVXNpbmdfY29tcGFyYXRvciA6XG4gICAgICBNYXAuQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTWFwLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjKVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGsgdiA9IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2XG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgdCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpXG5lbmRcblxubGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpIHRcbmxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3IgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3JcbmxldCBjb21wYXJhdG9yX3MgPSBCYXNlLk1hcC5jb21wYXJhdG9yX3NcblxudHlwZSAnayBrZXkgPSAna1xudHlwZSAnYyBjbXAgPSAnY1xuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIE1hcFxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl90cmVlIG0gPSBNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG4gIGxldCB0b190cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbiAgaW5jbHVkZVxuICAgIE1hcC5DcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2EsICdiLCAnYykgTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBNYXAuV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2sga2V5XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYyBjbXBcblxuICB2YWwgdmFsaWRhdGVcbiAgICA6ICBuYW1lOignayAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcbmVuZClcblxubW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cblxubGV0IGZpbmRfb3JfZXJyb3IgdCBrZXkgPVxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBTb21lIGRhdGEgLT4gT2sgZGF0YVxuICB8IE5vbmUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwia2V5IG5vdCBmb3VuZFwiIH5fOihrZXkgOiBrZXkpXVxuOztcblxubGV0IG1lcmdlX3NrZXdlZCA9IE1hcC5tZXJnZV9za2V3ZWRcbmxldCBvZl9oYXNodGJsX2V4biBtIHQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIENyZWF0b3JzIChLZXkgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIHZhbCB0X29mX3NleHBcbiAgICA6ICAoQmFzZS5TZXhwLnQgLT4gJ2EgS2V5LnQpXG4gICAgLT4gKEJhc2UuU2V4cC50IC0+ICdiKVxuICAgIC0+IEJhc2UuU2V4cC50XG4gICAgLT4gKCdhLCAnYiwgXykgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcblxuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoS2V5KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBzaW5nbGV0b24gayB2ID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmZcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9hbGlzdF9leG4gYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfaGFzaHRibF9leG4gaGFzaHRibCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibFxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZlxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmlcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmlcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2tleV9zZXQga2V5X3NldCB+ZlxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gVXNpbmdfY29tcGFyYXRvci50cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvciB0XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbl9rIGdlbl92ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGdlbl9rIGdlbl92XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9TMSAoS2V5IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgb3BlbiBUcmVlXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBLZXkuY29tcGFyYXRvclxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgYSBiIGMgPSB0X29mX3NleHBfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiBhID0gc2luZ2xldG9uIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBvZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBvZl9zZXF1ZW5jZSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzID0gb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBvZl9zZXF1ZW5jZV9leG4gcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IG9mX3NlcXVlbmNlX211bHRpIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3QgYSA9IG9mX2FsaXN0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBvZl9hbGlzdF9vcl9lcnJvciBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IG9mX2FsaXN0X2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNodGJsX2V4biBhID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBvZl9hbGlzdF9tdWx0aSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgPSBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gb2ZfYWxpc3RfcmVkdWNlIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSA9IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGwgfmdldF9rZXkgPVxuICAgIG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsIH5nZXRfa2V5ID0gb2ZfbGlzdF93aXRoX2tleV9leG4gbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5ID0gb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5IH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBvZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2tleV9zZXRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IGludmFyaWFudHMgYSA9IGludmFyaWFudHMgYSB+Y29tcGFyYXRvclxuICBsZXQgaXNfZW1wdHkgYSA9IGlzX2VtcHR5IGFcbiAgbGV0IGxlbmd0aCBhID0gbGVuZ3RoIGFcbiAgbGV0IHNldCBhIH5rZXkgfmRhdGEgPSBzZXQgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGQgYSB+a2V5IH5kYXRhID0gYWRkIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX2V4biBhIH5rZXkgfmRhdGEgPSBhZGRfZXhuIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX211bHRpIGEgfmtleSB+ZGF0YSA9IGFkZF9tdWx0aSBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZV9tdWx0aSBhIGIgPSByZW1vdmVfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kX211bHRpIGEgYiA9IGZpbmRfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBjaGFuZ2UgYSBiIH5mID0gY2hhbmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgdXBkYXRlIGEgYiB+ZiA9IHVwZGF0ZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmRfZXhuIGEgYiA9IGZpbmRfZXhuIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgZmluZCBhIGIgPSBmaW5kIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlIGEgYiA9IHJlbW92ZSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IG1lbSBhIGIgPSBtZW0gYSBiIH5jb21wYXJhdG9yXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBpdGVyaV91bnRpbCA9IGl0ZXJpX3VudGlsXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBpdGVyMiBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBmb2xkX3VudGlsID0gZm9sZF91bnRpbFxuICBsZXQgZm9sZF9yaWdodCA9IGZvbGRfcmlnaHRcbiAgbGV0IGZvbGQyIGEgYiB+aW5pdCB+ZiA9IGZvbGQyIGEgYiB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX2tleXMgYSB+ZiA9IGZpbHRlcl9rZXlzIGEgfmZcbiAgbGV0IGZpbHRlciBhIH5mID0gZmlsdGVyIGEgfmZcbiAgbGV0IGZpbHRlcmkgYSB+ZiA9IGZpbHRlcmkgYSB+ZlxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gZmlsdGVyX21hcCBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwaSBhIH5mID0gZmlsdGVyX21hcGkgYSB+ZlxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXAgdCB+ZlxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbl90ZiB0IH5mXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID0gY29tYmluZV9lcnJvcnMgdCB+Y29tcGFyYXRvclxuICBsZXQgY29tcGFyZV9kaXJlY3QgYSBiIGMgPSBjb21wYXJlX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZXF1YWwgYSBiIGMgPSBlcXVhbCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgPSBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmNvbXBhcmF0b3JcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIGZvbGRfc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5mIH5pbml0IH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG1lcmdlIGEgYiB+ZiA9IG1lcmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWVyZ2Vfc2tld2VkIGEgYiB+Y29tYmluZSA9IG1lcmdlX3NrZXdlZCBhIGIgfmNvbWJpbmUgfmNvbXBhcmF0b3JcbiAgbGV0IG1pbl9lbHQgPSBtaW5fZWx0XG4gIGxldCBtaW5fZWx0X2V4biA9IG1pbl9lbHRfZXhuXG4gIGxldCBtYXhfZWx0ID0gbWF4X2VsdFxuICBsZXQgbWF4X2VsdF9leG4gPSBtYXhfZWx0X2V4blxuICBsZXQgZm9yX2FsbCA9IGZvcl9hbGxcbiAgbGV0IGZvcl9hbGxpID0gZm9yX2FsbGlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGNvdW50ID0gY291bnRcbiAgbGV0IGNvdW50aSA9IGNvdW50aVxuICBsZXQgc3BsaXQgYSBiID0gc3BsaXQgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBzcGxpdF9sZV9ndCBhIGIgPSBzcGxpdF9sZV9ndCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IHNwbGl0X2x0X2dlIGEgYiA9IHNwbGl0X2x0X2dlIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID0gYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJhdG9yXG5cbiAgbGV0IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJhdG9yXG4gIGxldCBjbG9zZXN0X2tleSBhIGIgYyA9IGNsb3Nlc3Rfa2V5IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBudGggPSBudGhcbiAgbGV0IG50aF9leG4gPSBudGhfZXhuXG4gIGxldCByYW5rIGEgYiA9IHJhbmsgYSBiIH5jb21wYXJhdG9yXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3IgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyYXZlcnNhbHMgPSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEpXG5cbiAgICBsZXQgbWFwaSA9IFRyYXZlcnNhbHMubWFwaVxuICAgIGxldCBmaWx0ZXJfbWFwaSA9IFRyYXZlcnNhbHMuZmlsdGVyX21hcGlcbiAgZW5kXG5cbiAgbGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldF9vZl90cmVlIH5jb21wYXJhdG9yIHRcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBtYXBfa2V5cyB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IG1hcF9rZXlzX2V4biB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gdHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3IgfmNvbXBhcmF0b3IgdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoS2V5X1MxKVxuXG4gIHR5cGUgKyd2IHQgPSAoS2V5LnQsICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IG1hcCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvciBpblxuICBpZiBpbnZhcmlhbnRzIG1hcFxuICB0aGVuIG1hcFxuICBlbHNlIChcbiAgICAoKiBUaGUgaW52YXJpYW50cyBhcmUgYnJva2VuLCBidXQgd2UgY2FuIHN0aWxsIHRyYXZlcnNlIHRoZSBzdHJ1Y3R1cmUuICopXG4gICAgbWF0Y2ggVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmk6KGl0ZXJpIG1hcCkgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF9rZXkgLT4gZmFpbHdpdGggXCJNYXAuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gbWFwXCIpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBpbmNsdWRlIENyZWF0b3JzIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgbWFwID0gKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2ssICd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgOztcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjdkN2IxYTAtNDk5Mi0xMWU2LThhMzItYmJiMjIxZmEwMjVjXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgVHJlZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV90cmVlX1MxIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgICB0eXBlICgnaywgKyd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IEtleV9wbGFpblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IEtleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBLZXlfaGFzaGFibGVcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gS2V5X2JpbmFibGVfaGFzaGFibGVcbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBLZXlfYmluX2lvID0gS2V5X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEtleSA6IEtleV9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgJ3YgZWwgPSBLZXkudCAqICd2IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBfID0gYmluX2VsXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZGZiMzAwZjgtNDk5Mi0xMWU2LTljMTUtNzNhMmFjNmI4MTVjXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTWFwXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOktleS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIG1hcCBpcyB1c2VkIGluIHRoZSBzdGFibGUgbW9kdWxlcyBiZWxvdywgc28gaXQnc1xuICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGtleSBhbmQgZGF0YSBhcmUgc3RhYmxlKSAuICopXG4gIGxldCBzdGFibGVfd2l0bmVzcyAodHlwZSBkYXRhKSAoX2RhdGFfc3RhYmxlX3dpdG5lc3MgOiBkYXRhIFN0YWJsZV93aXRuZXNzLnQpXG4gICAgOiAoS2V5LnQsIGRhdGEsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHQgU3RhYmxlX3dpdG5lc3MudFxuICAgID1cbiAgICBsZXQgKF8gOiBLZXkudCBTdGFibGVfd2l0bmVzcy50KSA9IEtleS5zdGFibGVfd2l0bmVzcyBpblxuICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgS2V5X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChLZXkpXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEtleV9TMSlcblxuICB0eXBlIGtleSA9IEtleS50XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgJ3YgdCA9IChrZXksICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBtYXBcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIGNtcHYgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjbXB2IHQxIHQyXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3QgS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG4gIDs7XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEtleScgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3QgKHR5cGUgYSkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgKHQgOiBhIHQpID1cbiAgICAgIFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBLZXknLmhhc2hfZm9sZF90IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcblxuICBtb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzc1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICAgIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5cbiAgbW9kdWxlIF8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWVcbiAgICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFwLk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X2dlbmVyYXRvclxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEtleSkgS2V5LnF1aWNrY2hlY2tfZ2VuZXJhdG9yIHZfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9vYnNlcnZlclxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEtleS5xdWlja2NoZWNrX29ic2VydmVyIHZfb2JzZXJ2ZXJcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X3Nocmlua2VyXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgS2V5LnF1aWNrY2hlY2tfc2hyaW5rZXIgdl9zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IE1hcC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChNYXAgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0KVxuZW5kXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIGxldCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFN0YWJsZV93aXRuZXNzX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5KSBpblxuICAgIE0uc3RhYmxlX3dpdG5lc3NcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfaGFzaHRibF9leG4gPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2ZfaGFzaHRibF9leG5cbiAgbGV0IGtleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZVxuICBsZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSB+Y29tcGFyYXRvciBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2ID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWUgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIH5jb21wYXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlIH5jb21wYXJhdG9yIGsgdlxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUga2V5XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IChrZXksICdhLCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAgICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdfc3RhYmxlXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleSlcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgU1xuXG4gICAgICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6ICdhIFN0YWJsZV93aXRuZXNzLnQgLT4gJ2EgdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEtleV9zdGFibGUgOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTWFrZSAoS2V5X3N0YWJsZSlcbiAgICAgICAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChLZXlfc3RhYmxlKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gU3ltbWV0cmljX2RpZmZfZWxlbWVudC5TdGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgQmFzZS5NYXliZV9ib3VuZC50ID1cbiAgICAgIHwgSW5jbCBvZiAnYVxuICAgICAgfCBFeGNsIG9mICdhXG4gICAgICB8IFVuYm91bmRlZFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBJbmNsIHggLT4gSW5jbCAoZiB4KVxuICAgICAgfCBFeGNsIHggLT4gRXhjbCAoZiB4KVxuICAgICAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBCYXNlLk1heWJlX2JvdW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5WMS50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cF1cblxubGV0IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgVW5ib3VuZGVkLCBVbmJvdW5kZWQgLT4gMFxuICB8IFVuYm91bmRlZCwgXyAtPlxuICAgIChtYXRjaCBzaWRlIHdpdGhcbiAgICAgfCBgTG93ZXIgLT4gLTFcbiAgICAgfCBgVXBwZXIgLT4gMSlcbiAgfCBfLCBVbmJvdW5kZWQgLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IDFcbiAgICAgfCBgVXBwZXIgLT4gLTEpXG4gIHwgSW5jbCBhMSwgSW5jbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBFeGNsIGExLCBFeGNsIGEyIC0+IGNvbXBhcmVfYSBhMSBhMlxuICB8IEluY2wgYTEsIEV4Y2wgYTIgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmVfYSBhMSBhMiBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICAgIHwgYExvd2VyIC0+IC0xXG4gICAgICB8IGBVcHBlciAtPiAxKVxuICAgIGVsc2UgY1xuICB8IEV4Y2wgYTEsIEluY2wgYTIgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmVfYSBhMSBhMiBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICAgIHwgYExvd2VyIC0+IDFcbiAgICAgIHwgYFVwcGVyIC0+IC0xKVxuICAgIGVsc2UgY1xuOztcblxubW9kdWxlIEFzX2xvd2VyX2JvdW5kID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBMb3dlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuXG5tb2R1bGUgQXNfdXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID0gY29tcGFyZV9vbmVfc2lkZWQgfnNpZGU6YFVwcGVyIGNvbXBhcmVfYSB0MSB0MlxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBpbnRlcmZhY2VzIHVzZWQgaW4ge3shQ29yZS5TZXR9W1NldF19LiBTZWUgdGhlXG4gICAgeyFNYXB9IGRvY3MgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezAsMSwyLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW1NldF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMyXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cbigqXG4gICBDUnMgYW5kIGNvbW1lbnRzIGFib3V0IFtTZXRdIGZ1bmN0aW9ucyBkbyBub3QgYmVsb25nIGluIHRoaXMgZmlsZS4gIFRoZXkgYmVsb25nIG5leHRcbiAgIHRvIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiBpbiBzZXQubWxpLlxuKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5tb2R1bGUgU2V0ID0gQmFzZS5TZXRcbm1vZHVsZSBUcmVlID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxubW9kdWxlIENvbnRhaW5lciA9IEJhc2UuQ29udGFpbmVyXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IFNldC5FbHRfcGxhaW5cblxubW9kdWxlIHR5cGUgRWx0ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIEVsdF9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuU2V0LkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuU2V0Lk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIHNldHMsIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IFNldC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5TaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYikgRWx0X2Jpbl9pby50XG4gICAgLT4gKGludCAtPiAoJ2EsICdiKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlXG4gICAgICBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIHZhbCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgOiAgKG1vZHVsZSBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgU3RhYmxlX3dpdG5lc3MudFxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBTZXQuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gU2V0LldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gU2V0LldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIHRvX21hcFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgZWx0IC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2EgZWx0LCAnYiwgJ2NtcCBjbXApIEJhc2UuTWFwLnRcbiAgICAgIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdhIGVsdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnYSBlbHQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNoX3NldCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKCdhLCAnY21wLCAoJ2EgZWx0LCBfKSBIYXNodGJsLnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbTWFwLnRdLiAqKVxuICB2YWwgb2ZfbWFwX2tleXMgOiAoJ2EgZWx0LCBfLCAnY21wIGNtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnYSBlbHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdlbHQsICdjbXApIHRcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdHJlZVxuICB0eXBlICdlbHQgZWx0XG4gIHR5cGUgJ2NtcCBjbXBcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIE1ha2VfU19wbGFpbl90cmVlIChFbHQgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSB0XG4gICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG4gICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgICBlbmRcbiAgICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSBTZXQudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gRWx0LnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEVsdCA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogRWx0LnQgUXVpY2tjaGVjay5PYnNlcnZlci50IC0+IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogRWx0LnQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgU19wbGFpbiB3aXRoIG1vZHVsZSBFbHQgOj0gRWx0XG4gIGluY2x1ZGUgU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFMgd2l0aCBtb2R1bGUgRWx0IDo9IEVsdFxuICBpbmNsdWRlIEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxub3BlbiBTZXRfaW50ZlxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gRWx0XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEVsdF9iaW5hYmxlXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikgZWx0X2dlblxuICA7O1xuXG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3QgZWx0X29ic1xuICBsZXQgb2JzX3RyZWUgZWx0X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXRfdHJlZSBlbHRfb2JzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGVsdF9zaHIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3QgZWx0X3NoclxuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBlbHRfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIG0gZWx0X2dlbiA9XG4gIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGVsdF9nZW5cbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB0b19tYXAgfmNvbXBhcmF0b3IgdCA9IE1hcC5vZl9rZXlfc2V0IChTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIHQgfmNvbXBhcmF0b3IpXG4gIGxldCBvZl9tYXBfa2V5cyBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZSAoTWFwLmtleV9zZXQgbSlcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgSGFzaF9zZXQuZm9sZCBoc2V0IH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIEhhc2h0YmwuZm9sZCBoYXNodGJsIH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB+a2V5OnggfmRhdGE6XyB0IC0+XG4gICAgICBhZGQgdCB4IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWVcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgU2V0LkFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgU2V0LnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50KVxuZW5kXG5cbnR5cGUgJ2EgY21wID0gJ2FcbnR5cGUgJ2EgZWx0ID0gJ2FcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBTZXRcblxuICBsZXQgb2ZfdHJlZSBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgbGV0IHNleHBfb2ZfdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdFxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTZXQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTZXQuQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdhLCAnYiwgJ2MpIFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgU2V0LldpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIG1vZHVsZSBOYW1lZCA9IFNldC5OYW1lZFxuZW5kKVxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIFNldC5Vc2luZ19jb21wYXJhdG9yXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgVHJlZSA6PSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlKVxuXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxuXG4gIGxldCBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoc2V0ID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2hfc2V0IGhzZXQgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsIH5jb21wYXJhdG9yKVxuICA7O1xuZW5kXG5cbmxldCB0b19tYXAgPSBNYXAub2Zfa2V5X3NldFxubGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbmxldCBoYXNoX2ZvbGRfZGlyZWN0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0XG5sZXQgY29tcGFyYXRvcl9zID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yX3NcbmxldCBjb21wYXJhdG9yID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yXG5sZXQgb2ZfaGFzaF9zZXQgbSBoc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNoX3NldCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBoc2V0XG5cbmxldCBvZl9oYXNodGJsX2tleXMgbSBoYXNodGJsID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaGFzaHRibFxuOztcblxubW9kdWxlIENyZWF0b3JzIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICB0eXBlIG5vbnJlYyAoJ2EsICdjb21wYXJhdG9yKSB0XyA9ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWUgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICB0eXBlICdhIGVsdF8gPSAnYSBFbHQudFxuICB0eXBlICdhIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IChCYXNlLlNleHAudCAtPiAnYSBFbHQudCkgLT4gQmFzZS5TZXhwLnQgLT4gKCdhLCAnY29tcGFyYXRvcikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBfXG5lbmQgPSBzdHJ1Y3RcbiAgb3BlbiBVc2luZ19jb21wYXJhdG9yXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnY21wIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0gb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID0gb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSA9IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiBlID0gc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IHVuaW9uX2xpc3QgbCA9IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2ZfbGlzdCBsID0gb2ZfbGlzdCB+Y29tcGFyYXRvciBsXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2FycmF5IGEgPSBvZl9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyA9IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmZcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlIChUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGVsdFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IGVtcHR5ID0gVHJlZS5lbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gZSA9IFRyZWUuc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IG1hcCB0IH5mID0gVHJlZS5tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gVHJlZS5maWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZS5jb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MlxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlLmVxdWFsIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBvZl9saXN0IGwgPSBUcmVlLm9mX2xpc3QgbCB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFRyZWUub2Zfc2VxdWVuY2UgcyB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IFRyZWUub2ZfaGFzaF9zZXQgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGggPSBUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hcnJheSBhID0gVHJlZS5vZl9hcnJheSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPSBUcmVlLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBUcmVlLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBUcmVlLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJhdG9yXG4gIGxldCB1bmlvbl9saXN0IGwgPSBUcmVlLnVuaW9uX2xpc3QgbCB+Y29tcGFyYXRvclxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgPSBUcmVlLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHQgPSB0XG4gIGxldCBvZl9tYXBfa2V5cyA9IFRyZWUub2ZfbWFwX2tleXNcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIGVsdCB+Y29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfcGxhaW4gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgRWx0X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChFbHQpXG4gIGluY2x1ZGUgTWFrZV90cmVlX1MxIChFbHRfUzEpXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IFRyZWUuc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgWC50X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcjpFbHRfUzEuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiBpblxuICBpZiBpbnZhcmlhbnRzIHNldFxuICB0aGVuIHNldFxuICBlbHNlXG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKGZvbGQgc2V0IH5pbml0OihUcmVlLmVtcHR5IH5jb21wYXJhdG9yKSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICAgICAgIGlmIFRyZWUubWVtIGFjYyBlbHQgfmNvbXBhcmF0b3JcbiAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJTZXQuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gc2V0XCJcbiAgICAgICAgIGVsc2UgVHJlZS5hZGQgYWNjIGVsdCB+Y29tcGFyYXRvcikpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gQ29tcGFyYXRvci5Qb2x5XG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEVsdClcblxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgdCA9IHNleHBfb2ZfdCBzZXhwX29mX2sgWyVzZXhwX29mOiBfXSB0XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG4gIDs7XG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OGJjYzQ3OC00OTkyLTExZTYtYTk1ZC1mZjQ4MzFhY2Y0MTBcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuU2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIH5mOihmdW4ga2V5IC0+IGYga2V5KSB0XG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gICAgdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gVHJlZS5zZXhwX29mX3Qgc2V4cF9vZl9lbHQgWyVzZXhwX29mOiBfXSB0XG5cbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPVxuICAgICAgVHJlZS50X29mX3NleHBfZGlyZWN0IGVsdF9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGVcblxubW9kdWxlIEVsdF9iaW5faW8gPSBFbHRfYmluX2lvXG5cbm1vZHVsZSBQcm92aWRlX2Jpbl9pbyAoRWx0IDogRWx0X2Jpbl9pby5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgZWwgPSBFbHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjg5ODkyNzhlLTQ5OTItMTFlNi04ZjRhLTZiODk3NzZiMWU1M1wiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIH5mOihmdW4ga2V5IC0+IGYga2V5KSB0XG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHNldCBpcyB1c2VkIGluIHRoZSBzdGFibGUgbW9kdWxlcyBiZWxvdywgc28gaXQnc1xuICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGVsdCBpcyBzdGFibGUpLiAqKVxuICBsZXQgc3RhYmxlX3dpdG5lc3MgOiAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgbGV0IChfIDogRWx0LnQgU3RhYmxlX3dpdG5lc3MudCkgPSBFbHQuc3RhYmxlX3dpdG5lc3MgaW5cbiAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBFbHRcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHRfUzEpXG5cbiAgdHlwZSAoJ2EsICdiKSBzZXQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgc2V0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBFbHQudF9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoRWx0IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgRWx0Lmhhc2hfZm9sZF90IHN0YXRlIHRcblxuICAgIGxldCBoYXNoIHQgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChoYXNoX2ZvbGRfdCAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSkgdClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQnIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFbHRcbiAgICAgIGluY2x1ZGUgRWx0J1xuICAgIGVuZClcblxuICBtb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzc1xuICAgICAgKEVsdCcgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICAgIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFbHRcbiAgICAgIGluY2x1ZGUgRWx0J1xuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBxdWlja2NoZWNrX3Nocmlua2VyXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEVsdCA6IEVsdF9wbGFpbikgPSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChFbHRfc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHApXG4gIG1vZHVsZSBFbHQgPSBFbHRfc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbHQgOiBFbHQpID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChFbHRfYmluX3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X2Jpbl9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBTZXQuTVxuXG4gIGxldCBiaW5fc2hhcGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NoYXBlX3RcbiAgOztcblxuICBsZXQgYmluX3NpemVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NpemVfdFxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3dyaXRlX3RcbiAgOztcblxuICBsZXQgYmluX3JlYWRfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3JlYWRfdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX21fX3RfXyAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uX19iaW5fcmVhZF90X19cbiAgOztcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgRWx0KSBFbHQucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEVsdC5xdWlja2NoZWNrX29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19zaHJpbmtlciBFbHQucXVpY2tjaGVja19zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IFNldC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChTZXQgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdClcbmVuZFxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdCkgaW5cbiAgICBNLnN0YWJsZV93aXRuZXNzXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPSAoJ2EsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgZWx0XG4gICAgICB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSAoZWx0LCBlbHRfY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ19zdGFibGVcbiAgICBtb2R1bGUgTWFrZSAoRWx0IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0KVxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBTXG5cbiAgICAgICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEVsdF9zdGFibGUgOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zdGFibGUpXG4gICAgICAgIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0X3N0YWJsZSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxubW9kdWxlIEluZml4ID0gQmFzZS5Db21wYXJhYmxlLkluZml4XG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBCYXNlLkNvbXBhcmFibGUuQ29tcGFyaXNvbnNcblxubW9kdWxlIFZhbGlkYXRlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIGVuZCkgOiBWYWxpZGF0ZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYgPSBWYWxpZGF0ZVxuICBvcGVuIE1heWJlX2JvdW5kXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gQmFzZS5TZXhwLnRvX3N0cmluZyAoVC5zZXhwX29mX3QgdClcblxuICBsZXQgdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4IHQgPVxuICAgIFYuYm91bmRlZCB+bmFtZTp0b19zdHJpbmcgfmxvd2VyOm1pbiB+dXBwZXI6bWF4IH5jb21wYXJlOlQuY29tcGFyZSB0XG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPSB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXg6VW5ib3VuZGVkIHRcbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCB+bWF4IHQgPSB2YWxpZGF0ZV9ib3VuZCB+bWF4IH5taW46VW5ib3VuZGVkIHRcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVfd2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFYgPSBWYWxpZGF0ZSAoVClcbiAgaW5jbHVkZSBWXG5cbiAgKCogUHJlYWxsb2NhdGUgdGhlIGludGVyZXN0aW5nIGJvdW5kcyB0byBtaW5pbWl6ZSBhbGxvY2F0aW9uIGluIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgW3ZhbGlkYXRlXypdLiAqKVxuICBsZXQgZXhjbF96ZXJvID0gTWF5YmVfYm91bmQuRXhjbCBULnplcm9cbiAgbGV0IGluY2xfemVybyA9IE1heWJlX2JvdW5kLkluY2wgVC56ZXJvXG4gIGxldCB2YWxpZGF0ZV9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfbGJvdW5kIH5taW46ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfbGJvdW5kIH5taW46aW5jbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25lZ2F0aXZlIHQgPSB2YWxpZGF0ZV91Ym91bmQgfm1heDpleGNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbm9uX3Bvc2l0aXZlIHQgPSB2YWxpZGF0ZV91Ym91bmQgfm1heDppbmNsX3plcm8gdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlX3dpdGhfemVybyAoVClcbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuV2l0aF96ZXJvIChUKVxuZW5kXG5cbm1vZHVsZSBNYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgPVxuICBNYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBQb2x5IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuUG9seSAoVClcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG4gIGluY2x1ZGUgVmFsaWRhdGUgKEMpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gQ1xuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoQylcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpID1cbiAgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBjb21wYXJlID0gVC5jb21wYXJhdG9yLmNvbXBhcmVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBNXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEV4dGVuZF9iaW5hYmxlXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoVClcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEluaGVyaXQgKEMgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cbiAgZW5kKSAoVCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCBjb21wYXJlIHQgdCcgPSBDLmNvbXBhcmUgKFQuY29tcG9uZW50IHQpIChULmNvbXBvbmVudCB0JylcbiAgZW5kKVxuXG5pbmNsdWRlIChCYXNlLkNvbXBhcmFibGUgOiBXaXRoX2NvbXBhcmUpXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjb21wYXJhYmxlXG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBtb2R1bGUgTWFwIDpcbiAgICAgICAgTWFwLlN0YWJsZS5WMS5TXG4gICAgICAgIHdpdGggdHlwZSBrZXkgOj0gY29tcGFyYWJsZVxuICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBtb2R1bGUgU2V0IDpcbiAgICAgICAgU2V0LlN0YWJsZS5WMS5TXG4gICAgICAgIHdpdGggdHlwZSBlbHQgOj0gY29tcGFyYWJsZVxuICAgICAgICB3aXRoIHR5cGUgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChYIDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlLlYxLk1ha2UgKFgpXG4gICAgICBtb2R1bGUgU2V0ID0gU2V0LlN0YWJsZS5WMS5NYWtlIChYKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgdHlwZSBjb21wYXJhYmxlXG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbW9kdWxlIE1hcCA6XG4gICAgICAgICAgTWFwLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcbiAgICAgICAgICB3aXRoIHR5cGUga2V5IDo9IGNvbXBhcmFibGVcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIG1vZHVsZSBTZXQgOlxuICAgICAgICAgIFNldC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICAgICAgd2l0aCB0eXBlIGVsdCA6PSBjb21wYXJhYmxlXG4gICAgICAgICAgd2l0aCB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKFggOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoWClcbiAgICAgICAgbW9kdWxlIFNldCA9IFNldC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChYKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJpbmNsdWRlIExpc3QwICgqKiBAaW5saW5lICopXG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgc3RhZ2VkIHRvIGluZGljYXRlIHRoYXQgcmVhbCB3b3JrICh0aGUgZnVuY3RvciBhcHBsaWNhdGlvbikgdGFrZXNcbiAgIHBsYWNlIGFmdGVyIGEgcGFydGlhbCBhcHBsaWNhdGlvbi4gKilcbmxldCBzdGFibGVfZGVkdXBfc3RhZ2VkICh0eXBlIGEpIH4oY29tcGFyZSA6IGEgLT4gYSAtPiBpbnQpXG4gIDogKGEgbGlzdCAtPiBhIGxpc3QpIEJhc2UuU3RhZ2VkLnRcbiAgPVxuICBsZXQgbW9kdWxlIFNldCA9XG4gICAgU2V0Lk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcblxuICAgICAgKCogW3N0YWJsZV9kZWR1cF9saXN0XSBuZXZlciBjYWxscyB0aGVzZSAqKVxuICAgICAgbGV0IHRfb2Zfc2V4cCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBhc3NlcnQgZmFsc2VcbiAgICBlbmQpXG4gIGluXG4gIEJhc2UuU3RhZ2VkLnN0YWdlIFNldC5zdGFibGVfZGVkdXBfbGlzdFxuOztcblxubGV0IHppcF93aXRoX3JlbWFpbmRlciA9XG4gIGxldCByZWMgemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgYWNjIHhzIHlzID1cbiAgICBtYXRjaCB4cywgeXMgd2l0aFxuICAgIHwgW10sIFtdIC0+IHJldiBhY2MsIE5vbmVcbiAgICB8IGZzdCwgW10gLT4gcmV2IGFjYywgU29tZSAoRWl0aGVyLkZpcnN0IGZzdClcbiAgICB8IFtdLCBzbmQgLT4gcmV2IGFjYywgU29tZSAoRWl0aGVyLlNlY29uZCBzbmQpXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyICgoeCwgeSkgOjogYWNjKSB4cyB5c1xuICBpblxuICBmdW4geHMgeXMgLT4gemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgW10geHMgeXNcbjs7XG5cbnR5cGUgc2V4cF90aHVuayA9IHVuaXQgLT4gQmFzZS5TZXhwLnRcblxubGV0IHNleHBfb2Zfc2V4cF90aHVuayB4ID0geCAoKVxuXG5leGNlcHRpb24gRHVwbGljYXRlX2ZvdW5kIG9mIHNleHBfdGh1bmsgKiBCYXNlLlN0cmluZy50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBleG5faWZfZHVwIH5jb21wYXJlID8oY29udGV4dCA9IFwiZXhuX2lmX2R1cFwiKSB0IH50b19zZXhwID1cbiAgbWF0Y2ggZmluZF9hX2R1cCB+Y29tcGFyZSB0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkdXAgLT4gcmFpc2UgKER1cGxpY2F0ZV9mb3VuZCAoKGZ1biAoKSAtPiB0b19zZXhwIGR1cCksIGNvbnRleHQpKVxuOztcblxubGV0IHNsaWNlIGEgc3RhcnQgc3RvcCA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiBhIHN0YXJ0IHN0b3Bcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPSBMaXN0MC5zdGFibGVfd2l0bmVzcyBbQEBhbGVydCBcIi1mb3JfaW50ZXJuYWxfdXNlX29ubHlcIl1cbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvblxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5ub25lIH5zb21lIHQgPVxuICBsZXQgbW9kdWxlIFYgPSBWYWxpZGF0ZSBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFYubmFtZSBcIm5vbmVcIiAoVi5wcm90ZWN0IG5vbmUgKCkpXG4gIHwgU29tZSB4IC0+IFYubmFtZSBcInNvbWVcIiAoVi5wcm90ZWN0IHNvbWUgeClcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub3B0aW9uXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vcHRpb25cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm9wdGlvblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG5cbiAgICAoKiBbdW5zYWZlX3ZhbHVlXSBpcyBvbmx5IHNhZmUgdG8gY2FsbCB3aGVuIFtpc19ub25lXSByZXR1cm5zIFtmYWxzZV0uIFRvIGF2b2lkXG4gICAgICAgcmVwZWF0aW5nIHRoZSBbaXNfbm9uZV0gY2hlY2ssIHdlIGRlY2xhcmUgW1VuY2hlY2tlZF9zb21lXS4gW1VuY2hlY2tlZF9zb21lIHhdXG4gICAgICAgaGFzIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIGFzIFtTb21lIHhdLCBidXQgdGhlIHR5cGUgaGFzIG5vIFtOb25lXSBjbGF1c2UuXG5cbiAgICAgICBXZSBtYWtlIHN1cmUgYWxsIHRoaXMgd29ya3Mgd2l0aCB0ZXN0cyBvZiBbdW5zYWZlX3ZhbHVlXSBpbiB0ZXN0X29wdGlvbi5tbC5cblxuICAgICAgIFdlIHRyaWVkIHVzaW5nIFtPYmouZmllbGRdIGluc3RlYWQuIEl0IGdlbmVyYXRlcyBtdWNoIHdvcnNlIG5hdGl2ZSBjb2RlIGR1ZSB0b1xuICAgICAgIGZsb2F0IGFycmF5IHJlcHJlc2VudGF0aW9ucy4gKilcblxuICAgIG1vZHVsZSBVbmNoZWNrZWRfc29tZSA9IHN0cnVjdFxuICAgICAgKCogV2FybmluZyAzNyB0ZWxscyB1cyBbVW5jaGVja2VkX3NvbWVdIGlzIG5ldmVyIHVzZWQgYXMgYSBjb25zdHJ1Y3Rvci4gVGhpcyBpc1xuICAgICAgICAgaW50ZW50aW9uYWwsIHNvIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcuICopXG4gICAgICB0eXBlICdhIHQgPSBVbmNoZWNrZWRfc29tZSBvZiAnYSBbQEBvY2FtbC5ib3hlZF0gW0BAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuICAgIGVuZFxuXG4gICAgbGV0IHVuc2FmZV92YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgOiBhID1cbiAgICAgIGxldCAoVW5jaGVja2VkX3NvbWUgdmFsdWUpID0gKE9iai5tYWdpYyB0IDogYSBVbmNoZWNrZWRfc29tZS50KSBpblxuICAgICAgdmFsdWVcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBNTHRvbiBsaWJyYXJ5IHNldC9kaXNqb2ludC5mdW4sIHdoaWNoIGhhcyB0aGVcbiAgIGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlLlxuKilcbigqIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IEhlbnJ5IENlanRpbiwgTWF0dGhldyBGbHVldCwgU3VyZXNoXG4gKiAgICBKYWdhbm5hdGhhbiwgYW5kIFN0ZXBoZW4gV2Vla3MuXG4gKlxuICogTUx0b24gaXMgcmVsZWFzZWQgdW5kZXIgYSBCU0Qtc3R5bGUgbGljZW5zZS5cbiAqIFNlZSB0aGUgZmlsZSBNTHRvbi1MSUNFTlNFIGZvciBkZXRhaWxzLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbigqXG4gICB7dlxuICAgICAgICAgICBSb290XG4gICAgICAgICAgICAgfFxuICAgICAgICAgICBJbm5lclxuICAgICAgICAvIC4uIHwgLi4gXFxcbiAgICAgSW5uZXIgSW5uZXIgSW5uZXJcbiAgICAgIC98XFwgICAvfFxcICAgL3xcXFxuICAgICAgLi4uICAgLi4uICAgLi4uXG4gICB2fVxuXG4gICBXZSBjb25zdHJ1Y3QgdGhlIGBpbnZlcnRlZCcgdHJlZSBpbiB0aGUgTUwgcmVwcmVzZW50YXRpb24uXG4gICBUaGUgZGlyZWN0aW9uIG9mIHRoZSBlZGdlcyBpcyBVUFdBUkRTLlxuICAgU3RhcnRpbmcgd2l0aCBhbnkgWydhIHRdIHdlIGNhbiBzdGVwIGRpcmVjdGx5IHRvIGl0cyBwYXJlbnQuXG4gICBCdXQgd2UgY2FuJ3QgKGFuZCBkb24ndCBuZWVkIHRvKSBzdGFydCBmcm9tIHRoZSByb290IGFuZCBzdGVwIHRvIGl0cyBjaGlsZHJlbi5cbiopXG5cbigqXG4gICBbcmFua10gaXMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGRlcHRoIG9mIGFueSBub2RlIGluIHRoZSB1cC10cmVlLlxuXG4gICBJbWFnaW5lIGFuIHVubHVja3kgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBpbiB3aGljaCB5b3UgY3JlYXRlIE5cbiAgIGluZGl2aWR1YWwgW3RdLXZhbHVlcyBhbmQgdGhlbiB1bmlvbiB0aGVtIHRvZ2V0aGVyIGluIHN1Y2ggYSB3YXlcbiAgIHRoYXQgeW91IGFsd2F5cyBwaWNrIHRoZSByb290IG9mIGVhY2ggdHJlZSB0byB1bmlvbiB0b2dldGhlciwgc28gdGhhdFxuICAgbm8gcGF0aCBjb21wcmVzc2lvbiB0YWtlcyBwbGFjZS4gIElmIHlvdSBkb24ndCB0YWtlIGNhcmUgdG8gc29tZWhvd1xuICAgYmFsYW5jZSB0aGUgcmVzdWx0aW5nIHVwLXRyZWUsIGl0IGlzIHBvc3NpYmxlIHRoYXQgeW91IGVuZCB1cCB3aXRoIG9uZVxuICAgYmlnIGxvbmcgY2hhaW4gb2YgTiBsaW5rcywgYW5kIHRoZW4gY2FsbGluZyBbcmVwcmVzZW50YXRpdmVdIG9uIHRoZVxuICAgZGVlcGVzdCBub2RlIHRha2VzIFRoZXRhKE4pIHRpbWUuICBXaXRoIHRoZSBiYWxhbmNpbmcgc2NoZW1lIG9mIG5ldmVyXG4gICBpbmNyZWFzaW5nIHRoZSByYW5rIG9mIGEgbm9kZSB1bm5lY2Vzc2FyaWx5LCBpdCB3b3VsZCB0YWtlIE8obG9nIE4pLlxuKilcbnR5cGUgJ2Egcm9vdCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgbXV0YWJsZSByYW5rIDogaW50XG4gIH1cblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIG5vZGUgOiAnYSBub2RlIH1cblxuYW5kICdhIG5vZGUgPVxuICB8IElubmVyIG9mICdhIHRcbiAgKCogW0lubmVyIHhdIGlzIGEgbm9kZSB3aG9zZSBwYXJlbnQgaXMgW3hdLiAqKVxuICB8IFJvb3Qgb2YgJ2Egcm9vdFxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIGxldCByZWMgbG9vcCB0IGRlcHRoID1cbiAgICBtYXRjaCB0Lm5vZGUgd2l0aFxuICAgIHwgSW5uZXIgdCAtPiBsb29wIHQgKGRlcHRoICsgMSlcbiAgICB8IFJvb3QgciAtPiBhc3NlcnQgKGRlcHRoIDw9IHIucmFuaylcbiAgaW5cbiAgbG9vcCB0IDBcbjs7XG5cbmxldCBjcmVhdGUgdiA9IHsgbm9kZSA9IFJvb3QgeyB2YWx1ZSA9IHY7IHJhbmsgPSAwIH0gfVxuXG4oKiBpbnZhcmlhbnRzOlxuICAgW2lubmVyLm5vZGVdID0gW2lubmVyX25vZGVdID0gW0lubmVyIHRdLlxuICAgW2Rlc2NlbmRhbnRzXSBhcmUgdGhlIHByb3BlciBkZXNjZW5kYW50cyBvZiBbaW5uZXJdIHdlJ3ZlIHZpc2l0ZWQuXG4qKVxubGV0IHJlYyBjb21wcmVzcyB0IH5pbm5lcl9ub2RlIH5pbm5lciB+ZGVzY2VuZGFudHMgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIHQgaXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gICAgICAgUmUtcG9pbnQgYWxsIGRlc2NlbmRhbnRzIGRpcmVjdGx5IHRvIGl0IGJ5IHNldHRpbmcgdGhlbSB0byBbSW5uZXIgdF0uXG4gICAgICAgTm90ZTogd2UgZG9uJ3QgcmUtcG9pbnQgW2lubmVyXSBhcyBpdCBhbHJlYWR5IHBvaW50cyB0aGVyZS4gKilcbiAgICBMaXN0Lml0ZXIgZGVzY2VuZGFudHMgfmY6KGZ1biB0IC0+IHQubm9kZSA8LSBpbm5lcl9ub2RlKTtcbiAgICB0LCByXG4gIHwgSW5uZXIgdCcgYXMgbm9kZSAtPlxuICAgIGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOihpbm5lciA6OiBkZXNjZW5kYW50cylcbjs7XG5cbmxldCByZXByZXNlbnRhdGl2ZSB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT4gdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT4gY29tcHJlc3MgdCcgfmlubmVyX25vZGU6bm9kZSB+aW5uZXI6dCB+ZGVzY2VuZGFudHM6W11cbjs7XG5cbmxldCByb290IHQgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIGF2b2lkIHR1cGxlIGFsbG9jYXRpb24gaW4gdGhlIGZhc3QgcGF0aCAqKVxuICAgIHJcbiAgfCBfIC0+IHNuZCAocmVwcmVzZW50YXRpdmUgdClcbjs7XG5cbmxldCByYW5rIHQgPSAocm9vdCB0KS5yYW5rXG5sZXQgZ2V0IHQgPSAocm9vdCB0KS52YWx1ZVxubGV0IHNldCB0IHYgPSAocm9vdCB0KS52YWx1ZSA8LSB2XG5sZXQgc2FtZV9jbGFzcyB0MSB0MiA9IHBoeXNfZXF1YWwgKHJvb3QgdDEpIChyb290IHQyKVxuXG5sZXQgdW5pb24gdDEgdDIgPVxuICBsZXQgdDEsIHIxID0gcmVwcmVzZW50YXRpdmUgdDEgaW5cbiAgbGV0IHQyLCByMiA9IHJlcHJlc2VudGF0aXZlIHQyIGluXG4gIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSByMS5yYW5rIGluXG4gICAgbGV0IG4yID0gcjIucmFuayBpblxuICAgIGlmIG4xIDwgbjJcbiAgICB0aGVuIHQxLm5vZGUgPC0gSW5uZXIgdDJcbiAgICBlbHNlIChcbiAgICAgIHQyLm5vZGUgPC0gSW5uZXIgdDE7XG4gICAgICBpZiBuMSA9IG4yIHRoZW4gcjEucmFuayA8LSByMS5yYW5rICsgMSkpXG47O1xuXG5sZXQgaXNfY29tcHJlc3NlZCB0ID1cbiAgaW52YXJpYW50IGlnbm9yZSB0O1xuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgXyAtPiB0cnVlXG4gIHwgSW5uZXIgdCAtPlxuICAgIChtYXRjaCB0Lm5vZGUgd2l0aFxuICAgICB8IFJvb3QgXyAtPiB0cnVlXG4gICAgIHwgSW5uZXIgXyAtPiBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpc19jb21wcmVzc2VkID0gaXNfY29tcHJlc3NlZFxuICBsZXQgcmFuayA9IHJhbmtcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERvdWJseV9saW5rZWRfaW50ZlxuXG4oKiBJTlZBUklBTlQ6IFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhIGxpc3QgaXMgbXV0YXRlZCBkdXJpbmcgYSBwZW5kaW5nIGl0ZXJhdGlvbi5cblxuICAgVGhpcyBpbnZhcmlhbnQgaXMgZ3VhcmFudGVlZCBieSB0aGUgSGVhZGVyIGFuZCBFbHQgbW9kdWxlcyBpbiBjb25qdW5jdGlvbi4gIEFsbFxuICAgZG93bnN0cmVhbSBjb2RlIGluIHRoaXMgbW9kdWxlIG5lZWQgbm90IGJlIGNvbmNlcm5lZCB3aXRoIHRoaXMgaW52YXJpYW50LiAqKVxuZXhjZXB0aW9uIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvblxuXG5sZXQgcGh5c19lcXVhbCA9ICggPT0gKVxuXG5tb2R1bGUgSGVhZGVyIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBpbmNyX2xlbmd0aCA6IGJ5OmludCAtPiB0IC0+IHVuaXRcbiAgdmFsIGNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyA6IHQgLT4gdW5pdFxuXG4gICgqIFVuZm9ydHVuYXRlLCBidXQgYnkgc3BlY2lhbGl6aW5nIFt3aXRoX2l0ZXJhdGlvbl0gZm9yIGRpZmZlcmVudCBhcml0aWVzLCBhIGxhcmdlXG4gICAgIGFtb3VudCBvZiBhbGxvY2F0aW9uIGR1cmluZyBmb2xkcyBhbmQgaXRlcmF0aW9ucyBpcyBhdm9pZGVkLlxuXG4gICAgIFRoZSBvcmlnaW5hbCB0eXBlIG9mIFt3aXRoX2l0ZXJhdGlvbl0gd2FzXG4gICAgIFt2YWwgd2l0aF9pdGVyYXRpb24gOiB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYV1cblxuICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuXG4gICAgIHtbXG4gICAgICAgbGV0IHggPSBlIGluXG4gICAgICAgbGV0IGYgKCkgPSBnIHggaW5cbiAgICAgICBmICgpXG4gICAgIF19XG4gICAgIGFuZFxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmIHggPSBnIHggaW5cbiAgICAgICBmIHhcbiAgICAgXX1cbiAgICAgaXMgdGhhdCBpbiB0aGUgZmlyc3QgY2FzZSB0aGUgY2xvc3VyZSBmb3IgW2ZdIGNvbnRhaW5zIGEgcG9pbnRlciB0byBbeF0sXG4gICAgIGFuZCBpbiB0aGUgc2Vjb25kIGNhc2UgaXQgZG9lc24ndC4gQSBjbG9zdXJlIHdpdGhvdXQgcG9pbnRlcnMgdG8gZW5jbG9zaW5nXG4gICAgIGVudmlyb25tZW50IGlzIGltcGxlbWVudGVkIGFzIGEgbmFrZWQgZnVuY3Rpb24gcG9pbnRlciwgc28gd2UgZG9uJ3RcbiAgICAgYWxsb2NhdGUgYXQgYWxsLlxuXG4gICAgIEZvciB0aGUgc2FtZSByZWFzb24gd2UgbWFrZSBzdXJlIG5vdCB0byBjYWxsIFtSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiAuLi4pXVxuICAgICBpbnNpZGUgW3dpdGhfaXRlcmF0aW9uXSBhbmQgZG8gYW4gZXhwbGljaXQgbWF0Y2ggc3RhdGVtZW50IGluc3RlYWQuICopXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzJsXG4gICAgOiAgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdiW0Bsb2NhbF0pXG4gICAgLT4gKCgnYSAtPiAoJ2JbQGxvY2FsXSkgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgd2l0aF9pdGVyYXRpb25fMyA6IHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkKSAtPiAnZFxuICB2YWwgd2l0aF9pdGVyYXRpb25fNCA6IHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlKSAtPiAnZVxuXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl80bFxuICAgIDogIHRcbiAgICAtPiAoJ2FbQGxvY2FsXSlcbiAgICAtPiAoJ2JbQGxvY2FsXSlcbiAgICAtPiAnY1xuICAgIC0+ICdkXG4gICAgLT4gKCgoJ2FbQGxvY2FsXSkgLT4gKCdiW0Bsb2NhbF0pIC0+ICdjIC0+ICdkIC0+ICdlKVtAbG9jYWxdKVxuICAgIC0+ICdlXG5cbiAgdmFsIG1lcmdlIDogdCAtPiB0IC0+IFsgYFNhbWVfYWxyZWFkeSB8IGBNZXJnZWQgXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgcyA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGVuZGluZ19pdGVyYXRpb25zIDogaW50XG4gICAgfVxuXG4gIHR5cGUgdCA9IHMgVW5pb25fZmluZC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA9IFVuaW9uX2ZpbmQuY3JlYXRlIHsgbGVuZ3RoID0gMTsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9XG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICBsZXQgbGVuZ3RoIHQgPSAoVW5pb25fZmluZC5nZXQgdCkubGVuZ3RoXG5cbiAgbGV0IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaWYgcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPiAwIHRoZW4gcmFpc2UgQXR0ZW1wdF90b19tdXRhdGVfbGlzdF9kdXJpbmdfaXRlcmF0aW9uIGVsc2Ugc1xuICA7O1xuXG4gIGxldCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgaWdub3JlICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgOiBzKVxuICA7O1xuXG4gIGxldCBpbmNyX2xlbmd0aCB+Ynk6biB0ID1cbiAgICBsZXQgcyA9IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCBpblxuICAgIHMubGVuZ3RoIDwtIHMubGVuZ3RoICsgblxuICA7O1xuXG4gICgqIENhcmUgaXMgdGFrZW4gbm90IHRvIGFsbG9jYXRlIGluIFt3aXRoX2l0ZXJhdGlvbl8qXSwgc2luY2UgaXQgaXMgY2FsbGVkIGV2ZXJ5IHNlY29uZFxuICAgICBieSBbZXZlcnlfc2Vjb25kXSBpbiBbd3JpdGVyMC5tbF0gKilcblxuICBsZXQgaW5jcl9wZW5kaW5nX2l0ZXJzIHMgPSBzLnBlbmRpbmdfaXRlcmF0aW9ucyA8LSBzLnBlbmRpbmdfaXRlcmF0aW9ucyArIDFcbiAgbGV0IGRlY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgLSAxXG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzJsIHQgYSAoYiBbQGxvY2FsXSkgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8zIHQgYSBiIGMgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzQgdCBhIGIgYyBkIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgZCB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzRsIHQgKGEgW0Bsb2NhbF0pIChiIFtAbG9jYWxdKSBjIGQgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyBkIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgbWVyZ2UgKHQxIDogdCkgdDIgPVxuICAgIGlmIFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICAgIHRoZW4gYFNhbWVfYWxyZWFkeVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG4xID0gKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEpLmxlbmd0aCBpblxuICAgICAgbGV0IG4yID0gKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIpLmxlbmd0aCBpblxuICAgICAgd2l0aF9pdGVyYXRpb25fNCB0MSB0MSB0MiBuMSBuMiAoZnVuIHQxIHQyIG4xIG4yIC0+XG4gICAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDIgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICAgIFVuaW9uX2ZpbmQudW5pb24gdDEgdDI7XG4gICAgICAgICAgVW5pb25fZmluZC5zZXQgdDEgeyBsZW5ndGggPSBuMSArIG4yOyBwZW5kaW5nX2l0ZXJhdGlvbnMgPSAwIH0pKTtcbiAgICAgIGBNZXJnZWQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEVsdCA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgaGVhZGVyIDogJ2EgdCAtPiBIZWFkZXIudFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgY3JlYXRlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVubGluayA6ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgaW5zZXJ0X2FmdGVyIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBpbnNlcnRfYmVmb3JlIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCB1bmxpbmtfYmVmb3JlIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBuZXh0IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBwcmV2IDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSBwcmV2IDogJ2EgdFxuICAgIDsgbXV0YWJsZSBuZXh0IDogJ2EgdFxuICAgIDsgbXV0YWJsZSBoZWFkZXIgOiBIZWFkZXIudFxuICAgIH1cblxuICBsZXQgZXF1YWwgPSBwaHlzX2VxdWFsXG4gIGxldCBuZXh0IHQgPSB0Lm5leHRcbiAgbGV0IHByZXYgdCA9IHQucHJldlxuICBsZXQgaGVhZGVyIHQgPSB0LmhlYWRlclxuXG4gIGxldCBjcmVhdGVfYXV4IHYgaGVhZGVyID1cbiAgICBsZXQgcmVjIHQgPSB7IHZhbHVlID0gdjsgcHJldiA9IHQ7IG5leHQgPSB0OyBoZWFkZXIgfSBpblxuICAgIHRcbiAgOztcblxuICBsZXQgaXNfc2luZ2xldG9uIHQgPSBlcXVhbCB0IHQucHJldlxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9hIHQudmFsdWVcbiAgbGV0IGNyZWF0ZSB2ID0gY3JlYXRlX2F1eCB2IChIZWFkZXIuY3JlYXRlICgpKVxuICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgbGV0IHNldCB0IHYgPSB0LnZhbHVlIDwtIHZcblxuICAoKlxuICAgICBbc3BsaXRfb3Jfc3BsaWNlXSBpcyBzdWZmaWNpZW50IGFzIHRoZSBsb25lIHByaW1pdGl2ZSBmb3JcbiAgICAgYWNjb21wbGlzaGluZyBhbGwgcG9pbnRlciB1cGRhdGVzIG9uIGN5Y2xpYyBsb29wcyBvZiBsaXN0IG5vZGVzLlxuICAgICBJdCB0YWtlcyB0d28gXCJnYXBzXCIgYmV0d2VlbiBhZGphY2VudCBsaW5rZWQgbGlzdCBub2Rlcy4gIElmIHRoZSBnYXBzXG4gICAgIHBvaW50IGludG8gdGhlIHNhbWUgbGlzdCwgdGhlIHJlc3VsdCBpcyB0aGF0IGl0IHdpbGwgYmUgc3BsaXQgaW50b1xuICAgICB0d28gbGlzdHMgYWZ0ZXJ3YXJkcy4gIElmIHRoZSBnYXBzIHBvaW50IGludG8gZGlmZmVyZW50IGxpc3RzLCB0aGVcbiAgICAgcmVzdWx0IGlzIHRoYXQgdGhleSB3aWxsIGJlIHNwbGljZWQgdG9nZXRoZXIgaW50byBvbmUgbGlzdCBhZnRlcndhcmRzLlxuXG4gICAgIHt2XG4gICAgICAgQmVmb3JlICAgICAgICAgICAgICAgICAgICAgIEFmdGVyXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgIEEgfCAgPC0tPiAgfCBCICAgICAgICAgICAgICAgQSB8ICA8LS0tICAgLS0tPiAgfCBCXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgXFwgLyAgICAgICstLS0tLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgLyBcXCAgICAgICstLS0tLVxuICAgICAgICAgICAgICBDIHwgIDwtLT4gIHwgRCAgICAgICAgICAgICAgIEMgfCAgPC0tLSAgIC0tLT4gIHwgRFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICB2fSAqKVxuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlIH5wcmV2MTphIH5uZXh0MTpiIH5wcmV2MjpjIH5uZXh0MjpkID1cbiAgICBhLm5leHQgPC0gZDtcbiAgICBkLnByZXYgPC0gYTtcbiAgICBjLm5leHQgPC0gYjtcbiAgICBiLnByZXYgPC0gY1xuICA7O1xuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+bmV4dDE6dDEubmV4dFxuICAgICAgfnByZXYxOnQxLm5leHQucHJldlxuICAgICAgfm5leHQyOnQyLm5leHRcbiAgICAgIH5wcmV2Mjp0Mi5uZXh0LnByZXZcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDIgPVxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VcbiAgICAgIH5wcmV2MTp0MS5wcmV2XG4gICAgICB+bmV4dDE6dDEucHJldi5uZXh0XG4gICAgICB+cHJldjI6dDIucHJldlxuICAgICAgfm5leHQyOnQyLnByZXYubmV4dFxuICA7O1xuXG4gIGxldCBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyID1cbiAgICBIZWFkZXIuY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxLmhlYWRlcjtcbiAgICBpZiBub3QgKEhlYWRlci5lcXVhbCB0MS5oZWFkZXIgdDIuaGVhZGVyKVxuICAgIHRoZW4gSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0Mi5oZWFkZXJcbiAgOztcblxuICAoKiBXZSByZWRlZmluZSBzYWZlIHZlcnNpb25zIGZvciBleHBvcnQgKilcbiAgbGV0IHNwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MjtcbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDJcbiAgOztcblxuICBsZXQgaW5zZXJ0X2JlZm9yZSB0IHYgPVxuICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6MTtcbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9hdXggdiB0LmhlYWRlciBpblxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGluc2VydF9hZnRlciB0IHYgPVxuICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6MTtcbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9hdXggdiB0LmhlYWRlciBpblxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdCBub2RlO1xuICAgIG5vZGVcbiAgOztcblxuICBsZXQgZHVtbXlfaGVhZGVyID0gSGVhZGVyLmNyZWF0ZSAoKVxuXG4gIGxldCB1bmxpbmtfYmVmb3JlIHQgPVxuICAgIGxldCBub2RlID0gdC5wcmV2IGluXG4gICAgaWYgaXNfc2luZ2xldG9uIG5vZGVcbiAgICB0aGVuIG5vZGVcbiAgICBlbHNlIChcbiAgICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6KC0xKTtcbiAgICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQgbm9kZTtcbiAgICAgIG5vZGUuaGVhZGVyIDwtIGR1bW15X2hlYWRlcjtcbiAgICAgIG5vZGUpXG4gIDs7XG5cbiAgbGV0IHVubGlua19hZnRlciB0ID1cbiAgICBsZXQgbm9kZSA9IHQubmV4dCBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICAgIG5vZGUuaGVhZGVyIDwtIGR1bW15X2hlYWRlcjtcbiAgICAgIG5vZGUpXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID0gaWdub3JlICh1bmxpbmtfYWZ0ZXIgdC5wcmV2IDogXyB0KVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIEVsdC50IG9wdGlvbiByZWZcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGhlYWQgLT5cbiAgICBsZXQgaGVhZGVyID0gRWx0LmhlYWRlciBoZWFkIGluXG4gICAgbGV0IHJlYyBsb29wIG4gZWx0ID1cbiAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgbGV0IHByZXZfZWx0ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICBhc3NlcnQgKEVsdC5lcXVhbCBlbHQgKEVsdC5wcmV2IG5leHRfZWx0KSk7XG4gICAgICBhc3NlcnQgKEVsdC5lcXVhbCBlbHQgKEVsdC5uZXh0IHByZXZfZWx0KSk7XG4gICAgICBhc3NlcnQgKEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBlbHQpIGhlYWRlcik7XG4gICAgICBpbnZhcmlhbnRfYSAoRWx0LnZhbHVlIGVsdCk7XG4gICAgICBpZiBFbHQuZXF1YWwgbmV4dF9lbHQgaGVhZCB0aGVuIG4gZWxzZSBsb29wIChuICsgMSkgbmV4dF9lbHRcbiAgICBpblxuICAgIGxldCBsZW4gPSBsb29wIDEgaGVhZCBpblxuICAgIGFzc2VydCAobGVuID0gSGVhZGVyLmxlbmd0aCBoZWFkZXIpXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0gcmVmIE5vbmVcbmxldCBlcXVhbCAodCA6IF8gdCkgdCcgPSBwaHlzX2VxdWFsIHQgdCdcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICB8IFtdIC0+IGNyZWF0ZSAoKVxuICB8IHggOjogeHMgLT5cbiAgICBsZXQgZmlyc3QgPSBFbHQuY3JlYXRlIHggaW5cbiAgICBsZXQgX2xhc3QgPSBMaXN0LmZvbGQgeHMgfmluaXQ6Zmlyc3QgfmY6KGZ1biBhIGIgLT4gRWx0Lmluc2VydF9hZnRlciBhIGIpIGluXG4gICAgcmVmIChTb21lIGZpcnN0KVxuOztcblxubGV0IG9mX2FycmF5ID0gZnVuY3Rpb25cbiAgfCBbfHxdIC0+IGNyZWF0ZSAoKVxuICB8IGFyciAtPlxuICAgIGxldCBmaXJzdCA9IEVsdC5jcmVhdGUgYXJyLigwKSBpblxuICAgIGxldCByZWMgbG9vcCBhcnIgZWx0IGkgPVxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBsb29wIGFyciAoRWx0Lmluc2VydF9hZnRlciBlbHQgYXJyLihpKSkgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCBhcnIgZmlyc3QgMTtcbiAgICByZWYgKFNvbWUgZmlyc3QpXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19maXJzdCA9IEVsdC5jcmVhdGUgKGYgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gRWx0Lmluc2VydF9hZnRlciBhY2MgKGYgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X2ZpcnN0IGZpcnN0IG5leHQpO1xuICAgIHJlZiAoU29tZSBuZXdfZmlyc3QpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZmlyc3QgPSBFbHQuY3JlYXRlIChmIDAgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBFbHQuaW5zZXJ0X2FmdGVyIGFjYyAoZiBpIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgMSBuZXdfZmlyc3QgZmlyc3QgbmV4dCk7XG4gICAgcmVmIChTb21lIG5ld19maXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIDAgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzRsIChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBhIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgYSBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRpX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgYSBpbml0IGZpcnN0IChmdW4gZiBhIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIChpICsgMSkgYSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiAwIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBpdGVyX2VsdCB0IH5mID0gZm9sZF9lbHRfMSB0IH5pbml0OigpIH5mOihmdW4gZiAoKSBlbHQgLT4gZiBlbHQpIGZcbmxldCBpdGVyaV9lbHQgdCB+ZiA9IGZvbGRpX2VsdCB0IH5pbml0OigpIH5mOihmdW4gaSAoKSBlbHQgLT4gZiBpIGVsdClcblxub3BlbiBXaXRoX3JldHVyblxuXG5sZXQgZmluZF9lbHQgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGZvbGRfZWx0XzEgdCBmIH5pbml0OigpIH5mOihmdW4gZiAoKSBlbHQgLT5cbiAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgZWx0KSk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCBmaW5kaV9lbHQgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGZvbGRpX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGkgZiAoKSBlbHQgLT5cbiAgICAgIGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiByLnJldHVybiAoU29tZSAoaSwgZWx0KSkpO1xuICAgIE5vbmUpXG47O1xuXG4oKiB0aGlzIGZ1bmN0aW9uIGlzIGxhbWJkYSBsaWZ0ZWQgZm9yIHBlcmZvcm1hbmNlLCB0byBtYWtlIGRpcmVjdCByZWN1cnNpdmUgY2FsbHMgaW5zdGVhZFxuICAgb2YgY2FsbHMgdGhyb3VnaCBpdHMgY2xvc3VyZS4gSXQgYWxzbyBhdm9pZHMgdGhlIGluaXRpYWwgY2xvc3VyZSBhbGxvY2F0aW9uLiAqKVxubGV0IHJlYyBpdGVyX2xvb3AgZmlyc3QgZiBlbHQgPVxuICBmIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcl9sb29wIGZpcnN0IGYgbmV4dFxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8ybCAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJfbG9vcCBmaXJzdCBmIGZpcnN0KVxuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgZmlyc3QgLT4gSGVhZGVyLmxlbmd0aCAoRWx0LmhlYWRlciBmaXJzdClcbjs7XG5cbmxldCByZWMgaXRlcmlfbG9vcCBmaXJzdCBmIGkgZWx0ID1cbiAgZiBpIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcmlfbG9vcCBmaXJzdCBmIChpICsgMSkgbmV4dFxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMmwgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyaV9sb29wIGZpcnN0IGYgMCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgZm9sZGlfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gaSBmIGFjYyBlbHQgLT4gZiBpIGFjYyAoRWx0LnZhbHVlIGVsdCkpXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgciA9IGZvbGRfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gZiBhY2MgZWx0IC0+IGYgYWNjIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgIHJcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkID0gQy5mb2xkXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1lbSA9IEMubWVtXG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCB1bmNoZWNrZWRfaXRlciB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgZiBlbHQgPVxuICAgICAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgKCogdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGJhZyBtYXkgaGF2ZSBiZWVuIGNoYW5nZWQgYnkgW2ZdICopXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZmlyc3QgbmV4dCkgdGhlbiBsb29wIHQgZiBuZXh0XG4gICAgaW5cbiAgICBsb29wIHQgZiBmaXJzdFxuOztcblxubGV0IGlzX2VtcHR5IHQgPSBPcHRpb24uaXNfbm9uZSAhdFxuXG4oKiBtb3JlIGVmZmljaWVudCB0aGFuIHdoYXQgQ29udGFpbmVyLk1ha2UgcmV0dXJucyAqKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZWx0ID1cbiAgICAgICAgbGV0IHByZXYgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgICAgbGV0IGFjYyA9IGYgKEVsdC52YWx1ZSBwcmV2KSBhY2MgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBwcmV2IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBwcmV2XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9yaWdodF9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIHByZXYgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IHRvX2xpc3QgdCA9IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIHggdGwgLT4geCA6OiB0bClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHMgPSBvZl9saXN0IChMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgcylcblxubGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChCYXNlLkxpc3QudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG5sZXQgY29weSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxubGV0IGNsZWFyIHQgPSB0IDo9IE5vbmVcblxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgdDEgdDIgPVxuICBtYXRjaCAhdDEsICF0MiB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiAwXG4gIHwgTm9uZSwgXyAtPiAtMVxuICB8IF8sIE5vbmUgLT4gMVxuICB8IFNvbWUgZjEsIFNvbWUgZjIgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmMSkgY29tcGFyZV9lbHQgZjEgZjIgKGZ1biBjb21wYXJlX2VsdCBmMSBmMiAtPlxuICAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZjIpIGNvbXBhcmVfZWx0IGYxIGYyIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGNvbXBhcmVfZWx0IGVsdDEgZjEgZWx0MiBmMiA9XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgKEVsdC52YWx1ZSBlbHQxKSAoRWx0LnZhbHVlIGVsdDIpIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPD4gMFxuICAgICAgICAgIHRoZW4gY29tcGFyZV9yZXN1bHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0MSA9IEVsdC5uZXh0IGVsdDEgaW5cbiAgICAgICAgICAgIGxldCBuZXh0MiA9IEVsdC5uZXh0IGVsdDIgaW5cbiAgICAgICAgICAgIG1hdGNoIHBoeXNfZXF1YWwgbmV4dDEgZjEsIHBoeXNfZXF1YWwgbmV4dDIgZjIgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT4gLTFcbiAgICAgICAgICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gbG9vcCBjb21wYXJlX2VsdCBuZXh0MSBmMSBuZXh0MiBmMilcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCBjb21wYXJlX2VsdCBmMSBmMSBmMiBmMikpXG47O1xuXG5leGNlcHRpb24gVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdFxuXG5sZXQgdHJhbnNmZXIgfnNyYyB+ZHN0ID1cbiAgaWYgcGh5c19lcXVhbCBzcmMgZHN0IHRoZW4gcmFpc2UgVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdDtcbiAgbWF0Y2ggIXNyYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgc3JjX2hlYWQgLT5cbiAgICAobWF0Y2ggIWRzdCB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGRzdCA6PSBTb21lIHNyY19oZWFkO1xuICAgICAgIGNsZWFyIHNyY1xuICAgICB8IFNvbWUgZHN0X2hlYWQgLT5cbiAgICAgICAobWF0Y2ggSGVhZGVyLm1lcmdlIChFbHQuaGVhZGVyIHNyY19oZWFkKSAoRWx0LmhlYWRlciBkc3RfaGVhZCkgd2l0aFxuICAgICAgICB8IGBTYW1lX2FscmVhZHkgLT4gcmFpc2UgVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdFxuICAgICAgICB8IGBNZXJnZWQgLT5cbiAgICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBkc3RfaGVhZCBzcmNfaGVhZDtcbiAgICAgICAgICBjbGVhciBzcmMpKVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBpdGVyX2VsdCB0IH5mOihmdW4gZWx0IC0+IEVsdC5zZXQgZWx0IChmIChFbHQudmFsdWUgZWx0KSkpXG5sZXQgbWFwaV9pbnBsYWNlIHQgfmYgPSBpdGVyaV9lbHQgdCB+ZjooZnVuIGkgZWx0IC0+IEVsdC5zZXQgZWx0IChmIGkgKEVsdC52YWx1ZSBlbHQpKSlcblxubGV0IHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlID1cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGVsdCAtPlxuICAgIChtYXRjaCAhdCB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgaGVhZCAtPlxuICAgICAgIGlmIEVsdC5lcXVhbCBoZWFkIGVsdFxuICAgICAgIHRoZW4gKFxuICAgICAgICAgbGV0IG5leHRfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICB0IDo9IGlmIEVsdC5lcXVhbCBoZWFkIG5leHRfZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgbmV4dF9lbHQpKTtcbiAgICBFbHQudW5saW5rIGVsdClcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX2VsdCB0IH5pbml0OltdIH5mOihmdW4gZWx0cyBlbHQgLT5cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gZWx0cyBlbHNlIGVsdCA6OiBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gZWx0cyBlbHNlIGVsdCA6OiBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZWx0IDo6IGVsdHNcbiAgICAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICAgICBFbHQuc2V0IGVsdCB2YWx1ZTtcbiAgICAgICAgICAgZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkaV9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGkgZWx0cyBlbHQgLT5cbiAgICAgICAgIG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxuZXhjZXB0aW9uIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuXG5sZXQgZmlyc3RfZWx0IHQgPSAhdFxubGV0IGxhc3RfZWx0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC5wcmV2ICF0XG5sZXQgZmlyc3QgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnZhbHVlIChmaXJzdF9lbHQgdClcbmxldCBsYXN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAobGFzdF9lbHQgdClcbmxldCBmaXJzdF9leG4gKHQgOiAnYSB0KSA9IE9wdGlvbi52YWx1ZV9leG4gIXQgfD4gRWx0LnZhbHVlXG5sZXQgbGFzdF9leG4gKHQgOiAnYSB0KSA9IE9wdGlvbi52YWx1ZV9leG4gIXQgfD4gRWx0LnByZXYgfD4gRWx0LnZhbHVlXG5cbmxldCBpc19maXJzdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGlzX2xhc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgICBFbHQuZXF1YWwgZWx0IGxhc3QpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtZW1fZWx0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuOztcblxubGV0IHByZXYgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBTb21lIChFbHQucHJldiBlbHQpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBuZXh0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGxhc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0Lm5leHQgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2FmdGVyIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2FmdGVyIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfYmVmb3JlIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgICAgIG5ld19lbHQpXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5pbnNlcnRfYmVmb3JlIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfZW1wdHkgdCB2ID1cbiAgbGV0IG5ld19lbHQgPSBFbHQuY3JlYXRlIHYgaW5cbiAgdCA6PSBTb21lIG5ld19lbHQ7XG4gIG5ld19lbHRcbjs7XG5cbmxldCBpbnNlcnRfbGFzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPiBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2XG47O1xuXG5sZXQgaW5zZXJ0X2ZpcnN0IHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluc2VydF9lbXB0eSB0IHZcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgbmV3X2VsdFxuOztcblxubGV0IHJlbW92ZV9sYXN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnVubGlua19iZWZvcmUgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZmlyc3QgbGFzdCB0aGVuIHQgOj0gTm9uZTtcbiAgICBTb21lIChFbHQudmFsdWUgbGFzdClcbjs7XG5cbmxldCByZW1vdmVfZmlyc3QgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHNlY29uZCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgRWx0LnVubGluayBmaXJzdDtcbiAgICB0IDo9IGlmIEVsdC5lcXVhbCBmaXJzdCBzZWNvbmQgdGhlbiBOb25lIGVsc2UgU29tZSBzZWNvbmQ7XG4gICAgU29tZSAoRWx0LnZhbHVlIGZpcnN0KVxuOztcblxubGV0IHJlbW92ZSB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiBpZ25vcmUgKHJlbW92ZV9maXJzdCB0IDogXyBvcHRpb24pXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC51bmxpbmsgZWx0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHZhbHVlIC0+IGluc2VydF9sYXN0IG5ld190IHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICBpbnNlcnRfbGFzdCAoaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgaSAoRWx0LnZhbHVlIGVsdCkgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHZhbHVlIC0+IGluc2VydF9sYXN0IHQxIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG4gICAgICAgICAgfCBTZWNvbmQgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDIgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxuZXhjZXB0aW9uIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3JcblxubGV0IG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdCA6PSBTb21lIGFmdGVyX2VsdDtcbiAgICAgICAgICAgIGFmdGVyX2VsdClcbiAgICAgICAgICBlbHNlIGZpcnN0XG4gICAgICAgIGluXG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBiZWZvcmUgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgYW5jaG9yIGVsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGFuY2hvciB0aGVuIHQgOj0gU29tZSBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2Zyb250IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKEVsdC5lcXVhbCBlbHQgZmlyc3QpIHRoZW4gbW92ZV9iZWZvcmUgdCBlbHQgfmFuY2hvcjpmaXJzdFxuOztcblxubGV0IG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvciA9XG4gIGlmIEVsdC5lcXVhbCBhbmNob3IgZWx0IHRoZW4gcmFpc2UgSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvcjtcbiAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGFuY2hvcikgKEVsdC5oZWFkZXIgZWx0KVxuICB0aGVuIChcbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogdW5saW5rIFtlbHRdICopXG4gICAgICAgIGxldCBhZnRlcl9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZWx0IGFmdGVyX2VsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdCB0aGVuIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBhZnRlciBbYW5jaG9yXSAqKVxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIGFuY2hvciBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2JhY2sgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgIGlmIG5vdCAoRWx0LmVxdWFsIGVsdCBsYXN0KSB0aGVuIG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvcjpsYXN0XG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX2xpc3QgdCB8PiBTZXF1ZW5jZS5vZl9saXN0XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHAudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgdF9vZl9zZXhwID0gU2V4cGxpYi5TZXhwLnRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgPSBTZXhwbGliLlNleHAuc2V4cF9vZl90XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmluY2x1ZGUgKFxuICBCYXNlLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgdHlwZSBzZXhwID0gQmFzZS5TZXhwLnQgPVxuICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICB8IExpc3Qgb2YgdCBsaXN0XG5lbmRcblxubW9kdWxlIFNleHBfbWF5YmUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgdCAqIEVycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFJlc3VsdC5PayBhIC0+IHNleHBfb2ZfYSBhXG4gICAgfCBSZXN1bHQuRXJyb3IgKHNleHAsIGVycikgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwic2V4cF9wYXJzZV9lcnJvclwiOyBzZXhwOyBFcnJvci5zZXhwX29mX3QgZXJyIF1cbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgWyBBdG9tIFwic2V4cF9wYXJzZV9lcnJvclwiOyBzZXhwOyBfIF0gfCBzZXhwIC0+XG4gICAgICAodHJ5IFJlc3VsdC5PayAoYV9vZl9zZXhwIHNleHApIHdpdGhcbiAgICAgICB8IGV4biAtPiBSZXN1bHQuRXJyb3IgKHNleHAsIEVycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciAoZ3JhbW1hciA6IF8gU2V4cGxpYi5TZXhwX2dyYW1tYXIudCkgOiBfIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgeyB1bnR5cGVkID0gVW5pb24gWyBncmFtbWFyLnVudHlwZWQ7IEJhc2UuU2V4cC50X3NleHBfZ3JhbW1hci51bnR5cGVkIF0gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBXaXRoX3RleHQgPSBzdHJ1Y3RcbiAgb3BlbiBSZXN1bHQuRXhwb3J0XG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHZhbHVlIDogJ2FcbiAgICA7IHRleHQgOiBzdHJpbmdcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IEF0b20gdC50ZXh0XG5cbiAgbGV0IG9mX3RleHQgdmFsdWVfb2Zfc2V4cCA/KGZpbGVuYW1lID0gXCJcIikgdGV4dCA9XG4gICAgbWF0Y2ggT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBvZl9zdHJpbmdfY29udiB0ZXh0IHZhbHVlX29mX3NleHApIHdpdGhcbiAgICB8IE9rIChgUmVzdWx0IHZhbHVlKSAtPiBPayB7IHZhbHVlOyB0ZXh0IH1cbiAgICB8IEVycm9yIF8gYXMgZXJyIC0+IGVyclxuICAgIHwgT2sgKGBFcnJvciAoZXhuLCBhbm5vdGF0ZWQpKSAtPlxuICAgICAgRXJyb3IgKEVycm9yLm9mX2V4biAoQW5ub3RhdGVkLmdldF9jb252X2V4biBhbm5vdGF0ZWQgfmZpbGU6ZmlsZW5hbWUgfmV4YzpleG4pKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBfIC0+XG4gICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgIFwiV2l0aF90ZXh0LnQgc2hvdWxkIGJlIHN0b3JlZCBhcyBhbiBhdG9tLCBidXQgaW5zdGVhZCBhIGxpc3Qgd2FzIGZvdW5kLlwiXG4gICAgICAgIHNleHBcbiAgICB8IEF0b20gdGV4dCAtPiBvZl90ZXh0IGFfb2Zfc2V4cCB0ZXh0IHw+IE9yX2Vycm9yLm9rX2V4blxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBfID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIEJhc2UuU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGxldCB0ZXh0IHQgPSB0LnRleHRcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgbGV0IG9mX3ZhbHVlIHNleHBfb2ZfdmFsdWUgdmFsdWUgPVxuICAgIGxldCB0ZXh0ID0gc2V4cF9vZl92YWx1ZSB2YWx1ZSB8PiB0b19zdHJpbmdfaHVtIGluXG4gICAgeyB2YWx1ZTsgdGV4dCB9XG4gIDs7XG5lbmRcblxudHlwZSAnYSBub19yYWlzZSA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxubGV0IHNleHBfb2Zfbm9fcmFpc2Ugc2V4cF9vZl9hIGEgPVxuICB0cnkgc2V4cF9vZl9hIGEgd2l0aFxuICB8IGV4biAtPlxuICAgICh0cnkgTGlzdCBbIEF0b20gXCJmYWlsdXJlIGJ1aWxkaW5nIHNleHBcIjsgc2V4cF9vZl9leG4gZXhuIF0gd2l0aFxuICAgICB8IF8gLT4gQXRvbSBcImNvdWxkIG5vdCBidWlsZCBzZXhwIGZvciBleG4gcmFpc2VkIHdoZW4gYnVpbGRpbmcgc2V4cCBmb3IgdmFsdWVcIilcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmQgKEJhc2UuU2V4cCkgKEJhc2UuU2V4cClcblxubGV0IG9mX3NleHBfYWxsb3dfZXh0cmFfZmllbGRzX3JlY3Vyc2l2ZWx5IG9mX3NleHAgc2V4cCA9XG4gIGxldCByID0gU2V4cGxpYi5Db252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHMgaW5cbiAgbGV0IHByZXYgPSAhciBpblxuICBFeG4ucHJvdGVjdFxuICAgIH5maW5hbGx5OihmdW4gKCkgLT4gciA6PSBwcmV2KVxuICAgIH5mOihmdW4gKCkgLT5cbiAgICAgIHIgOj0gZmFsc2U7XG4gICAgICBvZl9zZXhwIHNleHApXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNleHBcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNleHBcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNleHBcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBIYXNoX3F1ZXVlX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBTX2JhY2tlbmQgPSBTX2JhY2tlbmRcblxubW9kdWxlIE1ha2VfYmFja2VuZCAoVGFibGUgOiBIYXNodGJsX2ludGYuSGFzaHRibCkgOiBTX2JhY2tlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgQmFja2VuZCA9XG4gICAgUzFcbiAgICB3aXRoIHR5cGUgJ2tleSBjcmVhdGVfYXJnIDo9ICdrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2tleSA6PSAna2V5XG5cbiAgbW9kdWxlIEJhY2tlbmQgOiBCYWNrZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEtleV92YWx1ZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2tleSwgJ3ZhbHVlKSB0ID1cbiAgICAgICAgICB7IGtleSA6ICdrZXlcbiAgICAgICAgICA7IG11dGFibGUgdmFsdWUgOiAndmFsdWVcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBrZXkgdCA9IHQua2V5XG4gICAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgeyBrZXk7IHZhbHVlIH0gPVxuICAgICAgICBbJXNleHBfb2Y6IGtleSAqIGRhdGFdIChrZXksIHZhbHVlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG9wZW4gS2V5X3ZhbHVlLlRcbiAgICBtb2R1bGUgRWx0ID0gRG91Ymx5X2xpbmtlZC5FbHRcblxuICAgIHR5cGUgKCdrZXksICdkYXRhKSB0ID1cbiAgICAgIHsgbXV0YWJsZSBudW1fcmVhZGVycyA6IGludFxuICAgICAgOyBxdWV1ZSA6ICgna2V5LCAnZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XG4gICAgICA7IHRhYmxlIDogKCdrZXksICgna2V5LCAnZGF0YSkgS2V5X3ZhbHVlLnQgRWx0LnQpIFRhYmxlLnRcbiAgICAgIH1cblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICAgICAgWyVzZXhwX29mOiAoa2V5LCBkYXRhKSBLZXlfdmFsdWUudCBEb3VibHlfbGlua2VkLnRdIHQucXVldWVcbiAgICA7O1xuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIGFzc2VydCAoRG91Ymx5X2xpbmtlZC5sZW5ndGggdC5xdWV1ZSA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlKTtcbiAgICAgICgqIExvb2sgYXQgZWFjaCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgY2hlY2tpbmc6XG4gICAgICAgKiAgIC0gZXZlcnkgZWxlbWVudCBpbiB0aGUgcXVldWUgaXMgaW4gdGhlIGhhc2ggdGFibGVcbiAgICAgICAqICAgLSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXNcbiAgICAgICopXG4gICAgICBsZXQga2V5cyA9IFRhYmxlLmNyZWF0ZSB+c2l6ZTooVGFibGUubGVuZ3RoIHQudGFibGUpIChUYWJsZS5oYXNoYWJsZV9zIHQudGFibGUpIGluXG4gICAgICBEb3VibHlfbGlua2VkLml0ZXIgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+XG4gICAgICAgIGxldCBrZXkgPSBrdi5rZXkgaW5cbiAgICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICBhc3NlcnQgKG5vdCAoVGFibGUubWVtIGtleXMga2V5KSk7XG4gICAgICAgICAgVGFibGUuc2V0IGtleXMgfmtleSB+ZGF0YTooKSlcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMTYpIGhhc2hhYmxlID1cbiAgICAgIHsgbnVtX3JlYWRlcnMgPSAwXG4gICAgICA7IHF1ZXVlID0gRG91Ymx5X2xpbmtlZC5jcmVhdGUgKClcbiAgICAgIDsgdGFibGUgPSBUYWJsZS5jcmVhdGUgfmdyb3d0aF9hbGxvd2VkIH5zaXplIChUYWJsZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCByZWFkIHQgZiA9XG4gICAgICB0Lm51bV9yZWFkZXJzIDwtIHQubnVtX3JlYWRlcnMgKyAxO1xuICAgICAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiB0Lm51bV9yZWFkZXJzIDwtIHQubnVtX3JlYWRlcnMgLSAxKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBlbnN1cmVfY2FuX21vZGlmeSB0ID1cbiAgICAgIGlmIHQubnVtX3JlYWRlcnMgPiAwXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiSXQgaXMgYW4gZXJyb3IgdG8gbW9kaWZ5IGEgSGFzaF9xdWV1ZS50IHdoaWxlIGl0ZXJhdGluZyBvdmVyIGl0LlwiXG4gICAgOztcblxuICAgIGxldCBjbGVhciB0ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBEb3VibHlfbGlua2VkLmNsZWFyIHQucXVldWU7XG4gICAgICBUYWJsZS5jbGVhciB0LnRhYmxlXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggdCA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlXG4gICAgbGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuICAgIGxldCBsb29rdXAgdCBrID1cbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgZWx0IC0+IFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfZXhuIHQgayA9IChFbHQudmFsdWUgKFRhYmxlLmZpbmRfZXhuIHQudGFibGUgaykpLnZhbHVlXG4gICAgbGV0IG1lbSB0IGsgPSBUYWJsZS5tZW0gdC50YWJsZSBrXG5cbiAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgdGFpbC1yZWN1cnNpdmUgQ29yZV9saXN0Lm1hcCAqKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuICAgIGxldCB0b19hcnJheSB0ID0gQXJyYXkubWFwIChEb3VibHlfbGlua2VkLnRvX2FycmF5IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuXG4gICAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLmZvcl9hbGwgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZXhpc3RzIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSBbQG5vbnRhaWxdKSBcbiAgICAgIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5maW5kX21hcCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAoRG91Ymx5X2xpbmtlZC5maW5kIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICAgICAgICB+ZjpLZXlfdmFsdWUudmFsdWUpIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfdW5jaGVja2VkIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgbGV0IGNvbnRlbnRzID0geyBLZXlfdmFsdWUua2V5OyB2YWx1ZSB9IGluXG4gICAgICBsZXQgZWx0ID1cbiAgICAgICAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gICAgICAgIHwgYGJhY2sgLT4gRG91Ymx5X2xpbmtlZC5pbnNlcnRfbGFzdCB0LnF1ZXVlIGNvbnRlbnRzXG4gICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2ZpcnN0IHQucXVldWUgY29udGVudHNcbiAgICAgIGluXG4gICAgICBUYWJsZS5zZXQgdC50YWJsZSB+a2V5IH5kYXRhOmVsdFxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBpZiBUYWJsZS5tZW0gdC50YWJsZSBrZXlcbiAgICAgIHRoZW4gYEtleV9hbHJlYWR5X3ByZXNlbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBlbnF1ZXVlX3VuY2hlY2tlZCB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlO1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2JhY2sgdCA9IGVucXVldWUgdCBgYmFja1xuICAgIGxldCBlbnF1ZXVlX2Zyb250IHQgPSBlbnF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgcmFpc2VfZW5xdWV1ZV9kdXBsaWNhdGVfa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLmVucXVldWVfZXhuOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIG1hdGNoIGVucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSB3aXRoXG4gICAgICB8IGBLZXlfYWxyZWFkeV9wcmVzZW50IC0+IHJhaXNlX2VucXVldWVfZHVwbGljYXRlX2tleSB0IGtleVxuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfYmFja19leG4gdCA9IGVucXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZW5xdWV1ZV9mcm9udF9leG4gdCA9IGVucXVldWVfZXhuIHQgYGZyb250XG5cbiAgICAoKiBQZXJmb3JtYW5jZSBoYWNrOiB3ZSBpbXBsZW1lbnQgdGhpcyB2ZXJzaW9uIHNlcGFyYXRlbHkgdG8gYXZvaWQgYWxsb2NhdGlvbiBmcm9tIHRoZVxuICAgICAgIG9wdGlvbi4gKilcbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIHQga2V5ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgZWx0ID0gVGFibGUuZmluZF9leG4gdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250X2V4biB0IGtleSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IGVsdCA9IFRhYmxlLmZpbmRfZXhuIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fZnJvbnQgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19mcm9udCB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgbWF5YmVfa3YgPVxuICAgICAgICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgICAgfCBgYmFjayAtPiBEb3VibHlfbGlua2VkLnJlbW92ZV9sYXN0IHQucXVldWVcbiAgICAgICAgfCBgZnJvbnQgLT4gRG91Ymx5X2xpbmtlZC5yZW1vdmVfZmlyc3QgdC5xdWV1ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIG1heWJlX2t2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT5cbiAgICAgICAgVGFibGUucmVtb3ZlIHQudGFibGUga3Yua2V5O1xuICAgICAgICBTb21lIChrdi5rZXksIGt2LnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKSA9XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkhhc2hfcXVldWUuZGVxdWV1ZV93aXRoX2tleTogZW1wdHkgcXVldWVcIl1cbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKVxuICAgICAgfCBTb21lIChrLCB2KSAtPiBrLCB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIHQgPSBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnRfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgZnJvbnRcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4gdCA9IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYGZyb250XG5cbiAgICBsZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoXywgdikgLT4gU29tZSB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2sgdCA9IGRlcXVldWUgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250IHQgPSBkZXF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgbGFzdF93aXRoX2tleSB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQubGFzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGxhc3QgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmxhc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+IFNvbWUga3YudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0X3dpdGhfa2V5IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT4gU29tZSBrdi52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV9lbXB0eSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwiSGFzaF9xdWV1ZS5kZXF1ZXVlX2V4bjogZW1wdHkgcXVldWVcIl1cblxuICAgIGxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlX2RlcXVldWVfZW1wdHkgKClcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFja19leG4gdCA9IGRlcXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9IGRlcXVldWVfZXhuIHQgYGZyb250XG5cbiAgICBsZXQga2V5cyB0ID1cbiAgICAgICgqIFJldHVybiB0aGUga2V5cyBpbiB0aGUgb3JkZXIgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUua2V5XG4gICAgOztcblxuICAgIGxldCB0b19hbGlzdCB0ID1cbiAgICAgIExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6KGZ1biBrdiAtPiBrdi5rZXksIGt2LnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLml0ZXIgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpIFtAbm9udGFpbF0pIFxuICAgICAgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICAgIGxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuZm9sZCB0LnF1ZXVlIH5pbml0IH5mOihmdW4gYWMga3YgLT4gZiBhYyB+a2V5Omt2LmtleSB+ZGF0YTprdi52YWx1ZSkgXG4gICAgICAgIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBhYyB+a2V5Ol8gfmRhdGEgLT4gZiBhYyBkYXRhKSBbQG5vbnRhaWxdXG4gICAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICAgIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSBtIH5mb2xkIHQgfmZcbiAgICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gICAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICAgIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuXG4gICAgbGV0IGRlcXVldWVfYWxsIHQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgbWF0Y2ggZGVxdWV1ZV9mcm9udCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgZiB2O1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgIGluXG4gICAgICBsb29wICgpIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IGBOb19zdWNoX2tleVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgYE9rXG4gICAgOztcblxuICAgIGxldCByYWlzZV9yZW1vdmVfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVtb3ZlX2V4bjogdW5rbm93biBrZXlcIiB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgcmVtb3ZlX2V4biB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIHJlbW92ZSB0IGsgd2l0aFxuICAgICAgfCBgTm9fc3VjaF9rZXkgLT4gcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfcmVtb3ZlIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZF9hbmRfcmVtb3ZlIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2UgdCBrIHYgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHY7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGVucXVldWVfdW5jaGVja2VkIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWVcbiAgICAgIHwgU29tZSBlbHQgLT4gKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHZhbHVlXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlX29yX2VucXVldWVfZnJvbnQgdCBrZXkgdmFsdWUgPSByZXBsYWNlX29yX2VucXVldWUgdCBgZnJvbnQga2V5IHZhbHVlXG4gICAgbGV0IHJlcGxhY2Vfb3JfZW5xdWV1ZV9iYWNrIHQga2V5IHZhbHVlID0gcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYGJhY2sga2V5IHZhbHVlXG5cbiAgICBsZXQgcmFpc2VfcmVwbGFjZV91bmtub3duX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5yZXBsYWNlX2V4bjogdW5rbm93biBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2VfZXhuIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZXBsYWNlIHQgayB2IHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrXG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcCA/KG4gPSAxKSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgaWYgbiA+PSBsZW5ndGggdFxuICAgICAgdGhlbiBjbGVhciB0XG4gICAgICBlbHNlXG4gICAgICAgIGZvciBfID0gMSB0byBuIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA6IF8gb3B0aW9uKVxuICAgICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3AgP24gdCBgYmFja1xuICAgIGxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wID9uIHQgYGZyb250XG5cbiAgICBsZXQgY29weSB0ID1cbiAgICAgIGxldCBjb3BpZWQgPSBjcmVhdGUgfnNpemU6KGxlbmd0aCB0KSAoVGFibGUuaGFzaGFibGUgdC50YWJsZSkgaW5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGVucXVldWVfYmFja19leG4gY29waWVkIGtleSBkYXRhKTtcbiAgICAgIGNvcGllZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTMCB3aXRoIHR5cGUgKCdrZXksICdkYXRhKSBoYXNoX3F1ZXVlIDo9ICgna2V5LCAnZGF0YSkgQmFja2VuZC50XG5cbiAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICBlbmQpIDogUyB3aXRoIHR5cGUga2V5ID0gVC5LZXkudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKEJhY2tlbmQgOiBCYWNrZW5kIHdpdGggdHlwZSAoJ2ssICdkKSB0IDo9ICgnaywgJ2QpIEJhY2tlbmQudClcblxuICAgIHR5cGUga2V5ID0gVC5LZXkudFxuICAgIHR5cGUgJ2RhdGEgdCA9IChULktleS50LCAnZGF0YSkgQmFja2VuZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChLZXkgOiBLZXkpIDogUyB3aXRoIHR5cGUga2V5ID0gS2V5LnQgPSBNYWtlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBUYWJsZS5IYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLZXkpXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQmFja2VuZFxuZW5kXG5cbmluY2x1ZGUgTWFrZV9iYWNrZW5kIChIYXNodGJsKVxuIiwiKCoqIEZ1bmN0b3JzIGFuZCBpbnRlcmZhY2VzIHVzZWQgdG8gbWFrZSBtb2R1bGVzIGhhc2hhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaGFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9wbGFpbikgOlxuICBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfcGxhaW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXkpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuICBpbmNsdWRlIFRcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBULktleVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9iaW5hYmxlKSA6XG4gIFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuXG4gICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0ID0gKGtleSwgJ2EpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0IDogc2lnXG4gICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICAgIGVuZFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfYmluYWJsZSkgOiBTIHdpdGggdHlwZSBrZXkgOj0gS2V5LnQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChLZXkpXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKEtleSlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGVcblxuICAgICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgdHlwZSBrZXlcblxuICAgICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgICB0eXBlICdhIHQgPSAoa2V5LCAnYSkgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBIYXNoX3NldCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHZhbCBoYXNoYWJsZSA6IGtleSBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfc3RhYmxlKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBLZXkudCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2Vfc3RhYmxlIChLZXkpXG4gICAgICAgIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2Vfc3RhYmxlIChLZXkpXG5cbiAgICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X3N0YWJsZVxuXG4gICAgICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICAgICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgICAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2hhciA9IEJhc2UuQ2hhclxubW9kdWxlIEludCA9IEJhc2UuSW50XG5tb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmdcbmluY2x1ZGUgSGV4ZHVtcF9pbnRmXG5cbmxldCBieXRlc19wZXJfbGluZSA9IDE2XG5cbigqIEluaXRpYWxpemUgdG8gZW5vdWdoIGxpbmVzIHRvIGRpc3BsYXkgNDA5NiBieXRlcyAtLSBsYXJnZSBlbm91Z2ggdGhhdCwgZm9yIGV4YW1wbGUsIGFcbiAgIGNvbXBsZXRlIEV0aGVybmV0IHBhY2tldCBjYW4gYWx3YXlzIGJlIGRpc3BsYXllZCAtLSBpbmNsdWRpbmcgdGhlIGxpbmUgY29udGFpbmluZyB0aGVcbiAgIGZpbmFsIGluZGV4LiAqKVxubGV0IGRlZmF1bHRfbWF4X2xpbmVzID0gcmVmICgoNDA5NiAvIGJ5dGVzX3Blcl9saW5lKSArIDEpXG5cbm1vZHVsZSBPZl9pbmRleGFibGUyIChUIDogSW5kZXhhYmxlMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoZXhfb2ZfcG9zIHBvcyA9IFByaW50Zi5zcHJpbnRmIFwiJTA4eFwiIHBvc1xuXG4gICAgbGV0IGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCBvZmZzZXQgPVxuICAgICAgbGV0IHBvcyA9IHN0YXJ0ICsgb2Zmc2V0IGluXG4gICAgICBpZiBwb3MgPj0gdW50aWwgdGhlbiBcIiAgXCIgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUwMnhcIiAoQ2hhci50b19pbnQgKGdldCB0IHBvcykpXG4gICAgOztcblxuICAgIGxldCBoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyAlcyAlcyAlcyAlcyAlcyAlcyAlcyAgJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXNcIlxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA1KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDYpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA4KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDkpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTIpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTUpXG4gICAgOztcblxuICAgIGxldCBwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbCA9XG4gICAgICBTdHJpbmcuaW5pdCAodW50aWwgLSBzdGFydCkgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBjaGFyID0gZ2V0IHQgKHN0YXJ0ICsgaSkgaW5cbiAgICAgICAgaWYgQ2hhci5pc19wcmludCBjaGFyIHRoZW4gY2hhciBlbHNlICcuJylcbiAgICA7O1xuXG4gICAgbGV0IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXggPVxuICAgICAgbGV0IHN0YXJ0ID0gcG9zICsgKGxpbmVfaW5kZXggKiBieXRlc19wZXJfbGluZSkgaW5cbiAgICAgIGxldCB1bnRpbCA9IG1pbiAoc3RhcnQgKyBieXRlc19wZXJfbGluZSkgKHBvcyArIGxlbikgaW5cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgICVzICB8JXN8XCJcbiAgICAgICAgKGhleF9vZl9wb3Mgc3RhcnQpXG4gICAgICAgIChoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwpXG4gICAgICAgIChwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbClcbiAgICA7O1xuXG4gICAgbGV0IHRvX3NlcXVlbmNlID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgbGV0IHBvcywgbGVuID1cbiAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgICAgaW5cbiAgICAgIGxldCBtYXhfbGluZXMgPVxuICAgICAgICBtYXRjaCBtYXhfbGluZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbWF4X2xpbmVzIC0+IG1heF9saW5lc1xuICAgICAgICB8IE5vbmUgLT4gIWRlZmF1bHRfbWF4X2xpbmVzXG4gICAgICBpblxuICAgICAgKCogYWx3YXlzIHByb2R1Y2UgYXQgbGVhc3QgMyBsaW5lczogZmlyc3QgbGluZSBvZiBoZXgsIGVsbGlwc2lzLCBsYXN0IGxpbmUgb2YgaGV4ICopXG4gICAgICBsZXQgbWF4X2xpbmVzID0gbWF4IG1heF9saW5lcyAzIGluXG4gICAgICAoKiB1bmFicmlkZ2VkIGxpbmVzID0gbGluZXMgb2YgaGV4ICsgbGluZSB3aXRoIGZpbmFsIGluZGV4ICopXG4gICAgICBsZXQgdW5hYnJpZGdlZF9saW5lcyA9XG4gICAgICAgIEludC5yb3VuZF91cCBsZW4gfnRvX211bHRpcGxlX29mOmJ5dGVzX3Blcl9saW5lIC8gYnl0ZXNfcGVyX2xpbmVcbiAgICAgIGluXG4gICAgICAoKiBGaWd1cmUgb3V0IHdoZXJlIHdlIG5lZWQgdG8gc2tpcCBmcm9tIGFuZCB0byBpZiBbbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc10uXG4gICAgICAgICBTa2lwIGFmdGVyIGhhbGYgdGhlIGFjdHVhbCBoZXggbGluZXMgKHN1YnRyYWN0aW5nIG9uZSBsaW5lIGZvciB0aGUgZWxsaXBzaXMpLlxuICAgICAgICAgU2tpcCB0byBuZWFyIHRoZSBlbmQsIGxlc3MgdGhlIG51bWJlciBvZiBsaW5lcyByZW1haW5pbmcgdG8gcHJvZHVjZSwgcGx1cyB0aGVcbiAgICAgICAgIGVsbGlwc2lzIGxpbmUuICopXG4gICAgICBsZXQgc2tpcF9mcm9tID0gKG1heF9saW5lcyAtIDEpIC8gMiBpblxuICAgICAgbGV0IHNraXBfdG8gPSB1bmFicmlkZ2VkX2xpbmVzIC0gKG1heF9saW5lcyAtIHNraXBfZnJvbSkgKyAxIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gbGluZV9pbmRleCAtPlxuICAgICAgICBpZiBsaW5lX2luZGV4ID49IHVuYWJyaWRnZWRfbGluZXNcbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgaWYgbGluZV9pbmRleCA9IHNraXBfZnJvbSAmJiBtYXhfbGluZXMgPCB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IFwiLi4uXCI7IHN0YXRlID0gc2tpcF90byB9XG4gICAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXg7IHN0YXRlID0gbGluZV9pbmRleCArIDEgfSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZ19odW0gP21heF9saW5lcyA/cG9zID9sZW4gdCA9XG4gICAgICB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBfIF8gdCA9IHRvX3NlcXVlbmNlIHQgfD4gU2VxdWVuY2UudG9fbGlzdCB8PiBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBwcmludGFibGUgPVxuICAgICAgICBsZXQgcmVjIHByaW50YWJsZV9mcm9tIHQgfnBvcyB+bGVuZ3RoID1cbiAgICAgICAgICBwb3MgPj0gbGVuZ3RoXG4gICAgICAgICAgfHwgKENoYXIuaXNfcHJpbnQgKGdldCB0IHBvcykgJiYgcHJpbnRhYmxlX2Zyb20gdCB+cG9zOihwb3MgKyAxKSB+bGVuZ3RoKVxuICAgICAgICBpblxuICAgICAgICBmdW4gdCAtPiBwcmludGFibGVfZnJvbSB0IH5wb3M6MCB+bGVuZ3RoOihsZW5ndGggdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBwb3MgLT4gZ2V0IHQgcG9zKVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIGlmIHByaW50YWJsZSB0IHRoZW4gWyVzZXhwICh0b19zdHJpbmcgdCA6IHN0cmluZyldIGVsc2UgWyVzZXhwICh0IDogKGEsIGIpIHQpXVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX2luZGV4YWJsZTEgKFQgOiBJbmRleGFibGUxKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgeCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCB4IFslc2V4cF9vZjogX10gdFxuICAgIGxldCB0b19zZXF1ZW5jZSA9IE0uSGV4ZHVtcC50b19zZXF1ZW5jZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID0gTS5IZXhkdW1wLnRvX3N0cmluZ19odW1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0IDogKGEsIF8pIE0uSGV4ZHVtcC5QcmV0dHkudCldXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUgKFQgOiBJbmRleGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT2ZfaW5kZXhhYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIF8gdCA9IFQudFxuXG4gICAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgICAgIGxldCBnZXQgPSBULmdldFxuICAgIGVuZClcblxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IDogXyBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfcGxhaW4gKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3NleHBfZ3JhbW1hciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3JfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBFeHRlbmQgKE0gOiBCYXNlLklkZW50aWZpYWJsZS5TKSAoQiA6IEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSBNLnQpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG4gICAgaW5jbHVkZSAoQiA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZF9iaW5hYmxlIChNKSAoVClcblxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBUXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IE0uaGFzaGFibGVcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFYxID0gc2lnXG4gIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMFxuXG4gIGluY2x1ZGVcbiAgICBDb21wYXJhYmxlLlN0YWJsZS5WMS5TXG4gICAgd2l0aCB0eXBlIGNvbXBhcmFibGUgOj0gdFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVjEgPSBzaWdcbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICB3aXRoIHR5cGUgY29tcGFyYWJsZSA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU3RyaW5nXG5cbigqIFRoZXNlIHR3byBhcmUgbmVlZGVkIGJlY2F1c2UgW2luY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZF0gKHByZXNlbnQgbGF0ZXIgaW4gdGhlIGZpbGUpXG4gICBiaW5kcyBuZXcgW01hcF0gYW5kIFtTZXRdIG1vZHVsZXMuICopXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgIGxldCBvZl9zdHJpbmcgPSBGbi5pZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG5cbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmVuZFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4gICAgICBsZXQgaGFzaGFibGUgPSBTdGFibGUuVjEuaGFzaGFibGVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5TdHJpbmcpXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zdHJpbmdcbmxldCBnZW5fbm9uZW1wdHkgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19ub25fZW1wdHlcbmxldCBnZW4nID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfb2ZcbmxldCBnZW5fbm9uZW1wdHknID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5X29mXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuZ3RoIGNoYXJzID1cbiAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcnMgfmxlbmd0aFxuOztcblxubGV0IHRha2Vfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIGxmaW5kaSB0IH5mOihmdW4gXyBlbHQgLT4gbm90IChmIGVsdCkpIHdpdGhcbiAgfCBOb25lIC0+IHRcbiAgfCBTb21lIGkgLT4gc3ViIHQgfnBvczowIH5sZW46aVxuOztcblxubGV0IHJ0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCByZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6KGkgKyAxKSB+bGVuOihsZW5ndGggdCAtIGkgLSAxKVxuOztcblxuKCoqIFNlZSB7IUFycmF5Lm5vcm1hbGl6ZX0gZm9yIHRoZSBmb2xsb3dpbmcgNCBmdW5jdGlvbnMuICopXG5sZXQgbm9ybWFsaXplIHQgaSA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubm9ybWFsaXplIH5sZW5ndGhfZnVuOmxlbmd0aCB0IGlcblxubGV0IHNsaWNlIHQgc3RhcnQgc3RvcCA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3Bcbjs7XG5cbmxldCBuZ2V0IHggaSA9XG4gIGxldCBtb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmcgaW5cbiAgeC5bbm9ybWFsaXplIHggaV1cbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLlN0cmluZ31bQmFzZS5TdHJpbmddfS4gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5TdHJpbmdcbmVuZFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4oKiogW0Nhc2VsZXNzXSBjb21wYXJlcyBhbmQgaGFzaGVzIHN0cmluZ3MgaWdub3JpbmcgY2FzZSwgc28gdGhhdCBmb3IgZXhhbXBsZVxuICAgIFtDYXNlbGVzcy5lcXVhbCBcIk9DYW1sXCIgXCJvY2FtbFwiXSBhbmQgW0Nhc2VsZXNzLihcImFwcGxlXCIgPCBcIkJhbmFuYVwiKV0gYXJlIFt0cnVlXSwgYW5kXG4gICAgW0Nhc2VsZXNzLk1hcF0sIFtDYXNlbGVzcy5UYWJsZV0gbG9va3VwIGFuZCBbQ2FzZWxlc3MuU2V0XSBtZW1iZXJzaGlwIGlzXG4gICAgY2FzZS1pbnNlbnNpdGl2ZS5cblxuICAgIFtDYXNlbGVzc10gYWxzbyBwcm92aWRlcyBjYXNlLWluc2Vuc2l0aXZlIFtpc19zdWZmaXhdIGFuZCBbaXNfcHJlZml4XSBmdW5jdGlvbnMsIHNvXG4gICAgdGhhdCBmb3IgZXhhbXBsZSBbQ2FzZWxlc3MuaXNfc3VmZml4IFwiT0NhbWxcIiB+c3VmZml4OlwiQW1MXCJdIGFuZCBbQ2FzZWxlc3MuaXNfcHJlZml4XG4gICAgXCJPQ2FtbFwiIH5wcmVmaXg6XCJvY1wiXSBhcmUgW3RydWVdLiAqKVxubW9kdWxlIENhc2VsZXNzIDogc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuICBlbmRcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHNleHBdXG5cblxuICBpbmNsdWRlIENvbXBhcmFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cblxuKCoqIFtzbGljZSB0IHN0YXJ0IHN0b3BdIHJldHVybnMgYSBuZXcgc3RyaW5nIGluY2x1ZGluZyBlbGVtZW50cyBbdC4oc3RhcnQpXSB0aHJvdWdoXG4gICAgW3QuKHN0b3AtMSldLCBub3JtYWxpemVkIFB5dGhvbi1zdHlsZSB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBbc3RvcCA9IDBdIGlzIHRyZWF0ZWQgYXNcbiAgICBbc3RvcCA9IGxlbmd0aCB0XS4gKilcbnZhbCBzbGljZSA6IHQgLT4gaW50IC0+IGludCAtPiB0XG5cbigqKiBbbmdldCBzIGldIGdldHMgdGhlIGNoYXIgYXQgbm9ybWFsaXplZCBwb3NpdGlvbiBbaV0gaW4gW3NdLiAqKVxudmFsIG5nZXQgOiB0IC0+IGludCAtPiBjaGFyXG5cbigqKiBbdGFrZV93aGlsZSBzIH5mXSByZXR1cm5zIHRoZSBsb25nZXN0IHByZWZpeCBvZiBbc10gc2F0aXNmeWluZyBbZm9yX2FsbCBwcmVmaXggfmZdXG4gICAgKFNlZSBbbHN0cmlwXSB0byBkcm9wIHN1Y2ggYSBwcmVmaXgpICopXG52YWwgdGFrZV93aGlsZSA6IHQgLT4gZjooKGNoYXIgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG4oKiogW3J0YWtlX3doaWxlIHMgfmZdIHJldHVybnMgdGhlIGxvbmdlc3Qgc3VmZml4IG9mIFtzXSBzYXRpc2Z5aW5nIFtmb3JfYWxsIHN1ZmZpeCB+Zl1cbiAgICAoU2VlIFtyc3RyaXBdIHRvIGRyb3Agc3VjaCBhIHN1ZmZpeCkgKilcbnZhbCBydGFrZV93aGlsZSA6IHQgLT4gZjooKGNoYXIgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IHdpdGhvdXQgZW1wdHkgc3RyaW5ncy4gKilcbnZhbCBnZW5fbm9uZW1wdHkgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IGdlbmVyYXRlIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gZGlzdHJpYnV0aW9uIG9mXG4gICAgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCB3aXRob3V0IGVtcHR5IHN0cmluZ3MuICopXG52YWwgZ2VuX25vbmVtcHR5JyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgZ2VuZXJhdGUgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbc3RyaW5nXSBpcyBhbHJlYWR5IHN0YWJsZSBieSBpdHNlbGYsIHNpbmNlIGFzIGEgcHJpbWl0aXZlIHR5cGUgaXQgaXMgYW5cbiAgICBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBzZXhwIC8gYmluX2lvIHByb3RvY29sLiBbU3RyaW5nLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gaW50cm9kdWNlXG4gICAgW1N0cmluZy5TdGFibGUuU2V0XSwgW1N0cmluZy5TdGFibGUuTWFwXSwgW1N0cmluZy5TdGFibGUuVGFibGVdLCBhbmQgcHJvdmlkZSBpbnRlcmZhY2VcbiAgICB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBTdGFibGVfY29tcGFyYWJsZS5XaXRoX3N0YWJsZV93aXRuZXNzLlYxXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gIGVuZFxuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxudHlwZSB0ID0gYm9vbCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Cb29sKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkJvb2xcblxuaW5jbHVkZSAoXG4gIEJhc2UuQm9vbCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkJvb2xcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5Cb29sKVxuXG5sZXQgb2Zfc3RyaW5nX2h1bSA9XG4gIGxldCB0YWJsZSA9XG4gICAgbGF6eVxuICAgICAgKGxldCB0YWJsZSA9IFN0cmluZy5DYXNlbGVzcy5UYWJsZS5jcmVhdGUgKCkgaW5cbiAgICAgICBbIGZhbHNlLCBbIFwiZmFsc2VcIjsgXCJub1wiOyBcIjBcIiBdOyB0cnVlLCBbIFwidHJ1ZVwiOyBcInllc1wiOyBcIjFcIiBdIF1cbiAgICAgICB8PiBMaXN0Lml0ZXIgfmY6KGZ1biAoYm9vbCwgc3RyaW5ncykgLT5cbiAgICAgICAgIExpc3QuaXRlciBzdHJpbmdzIH5mOihmdW4gc3RyaW5nIC0+XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6c3RyaW5nIH5kYXRhOmJvb2w7XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy5wcmVmaXggc3RyaW5nIDEpIH5kYXRhOmJvb2wpKTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgbGV0IHJhaXNlX2ludmFsaWQgaW5wdXQgPVxuICAgIGxldCBleHBlY3RlZF9jYXNlX2luc2Vuc2l0aXZlID0gU3RyaW5nLlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgKGZvcmNlIHRhYmxlKSkgaW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJCb29sLm9mX3N0cmluZ19odW06IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgIChpbnB1dCA6IHN0cmluZylcbiAgICAgICAgICAoZXhwZWN0ZWRfY2FzZV9pbnNlbnNpdGl2ZSA6IFN0cmluZy5TZXQudCldXG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBIYXNodGJsLmZpbmRfYW5kX2NhbGwgKGZvcmNlIHRhYmxlKSBzdHJpbmcgfmlmX2ZvdW5kOkZuLmlkIH5pZl9ub3RfZm91bmQ6cmFpc2VfaW52YWxpZFxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5ib29sXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5ib29sXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5ib29sXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5CeXRlc1xuXG4gICAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5CeXRlcylcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IGdlbicgY2hhcl9nZW4gPSBTdHJpbmcuZ2VuJyBjaGFyX2dlbiB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3RyaW5nXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuIGNoYXJfZ2VuID1cbiAgU3RyaW5nLmdlbl93aXRoX2xlbmd0aCBsZW4gY2hhcl9nZW4gfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3N0cmluZ1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkNoYXIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG4oKiBpbmNsdWRlIFtCYXNlLkNoYXJdIGFmdGVyIHRoZSBhcHBsaWNhdGlvbiBvZiBbSWRlbnRpZmlhYmxlLkV4dGVuZF0gdG8gcmVwbGFjZSB0aGVcbiAgIFtDb21wYXJhYmxlXSBmdW5jdGlvbnMgd2l0aCB0aGUgcGVydmFzaXZlIHZlcnNpb25zICopXG5pbmNsdWRlIChcbiAgQmFzZS5DaGFyIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQ2hhclxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkNoYXJcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5jaGFyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5jaGFyXG5sZXQgZ2VuX2RpZ2l0ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2RpZ2l0XG5sZXQgZ2VuX2xvd2VyY2FzZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9sb3dlcmNhc2VcbmxldCBnZW5fdXBwZXJjYXNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3VwcGVyY2FzZVxubGV0IGdlbl9hbHBoYSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYVxubGV0IGdlbl9hbHBoYW51bSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYW51bVxubGV0IGdlbl9wcmludCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9wcmludFxubGV0IGdlbl93aGl0ZXNwYWNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3doaXRlc3BhY2VcbmxldCBnZW5fdW5pZm9ybV9pbmNsdXNpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNpZ24gPSBCYXNlLlNpZ25cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduLnQgPVxuICAgICAgfCBOZWdcbiAgICAgIHwgWmVyb1xuICAgICAgfCBQb3NcbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduKSAoU3RhYmxlLlYxKVxuIiwiZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XSAqKVxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsXG4gICAgdGhlbiBzIF4gXCIuXCJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgXyAtPiBzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkZsb2F0XG5cbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3MsIHR5cGVyZXBdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQxKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IFN0YWJsZS5WMVxuaW5jbHVkZSBUXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChUKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdCA9IFRcblxubGV0IHZhbGlkYXRlX29yZGluYXJ5IHQgPVxuICBWYWxpZGF0ZS5vZl9lcnJvcl9vcHRcbiAgICAobGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgICAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPiBOb25lXG4gICAgIHwgQy5JbmZpbml0ZSAtPiBTb21lIFwidmFsdWUgaXMgaW5maW5pdGVcIlxuICAgICB8IEMuTmFuIC0+IFNvbWUgXCJ2YWx1ZSBpcyBOYU5cIilcbjs7XG5cbm1vZHVsZSBWID0gc3RydWN0XG4gIG1vZHVsZSBaWiA9IENvbXBhcmFibGUuVmFsaWRhdGUgKFQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfYm91bmQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV9sYm91bmQgdCB+bWluKVxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfdWJvdW5kIHQgfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFZcblxubW9kdWxlIFJvYnVzdF9jb21wYXJlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAoKiBpbnRlbmRlZCB0byBiZSBhIHRvbGVyYW5jZSBvbiBodW1hbi1lbnRlcmVkIGZsb2F0cyAqKVxuXG4gICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG5cbiAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSBmbG9hdFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG4gICAgZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgICAoKiBXZSBoYXZlIHRlc3QgaW4gdGhlIHRyZWUgdGhhdCByZWx5IG9uIHRoZXNlIGZ1bmN0aW9ucyBub3QgYWxsb2NhdGluZywgZXZlbiB3aXRob3V0XG4gICAgICAgWF9MSUJSQVJZX0lOTElORy4gVGhlIG9ubHkgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZXNlIGRvbid0IGNyZWF0ZSB0ZW1wb3JhcnkgYm94ZWRcbiAgICAgICBmbG9hdHMgd2l0aG91dCBYX0xJQlJBUllfSU5MSU5HIGlzIGZvciB0aGlzIGNvZGUgdG8gc2VlIHRoZSBmbG9hdCBvcGVyYXRpb25zIGFzXG4gICAgICAgZXh0ZXJuYWxzLCBhcyBkZWZpbmVkIGluIFtQZXJ2YXNpdmVzXS4gVGhhdCdzIHdoeSB3ZSB1c2UgW1BvbHldIGFuZCBmbG9hdFxuICAgICAgIGFyaXRobWV0aWMgZnJvbSBbQ2FtbF0uICopXG4gICAgb3BlbiBQb2x5XG5cbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gVC5yb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA+PS4gKSB4IHkgPSB4ID49IFN0ZGxpYi4oIC0uICkgeSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA8PS4gKSB4IHkgPSB5ID49LiB4XG4gICAgbGV0ICggPS4gKSB4IHkgPSB4ID49LiB5ICYmIHkgPj0uIHhcbiAgICBsZXQgKCA+LiApIHggeSA9IHggPiBTdGRsaWIuKCArLiApIHkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPC4gKSB4IHkgPSB5ID4uIHhcbiAgICBsZXQgKCA8Pi4gKSB4IHkgPSBub3QgKHggPS4geSlcblxuICAgIGxldCByb2J1c3RseV9jb21wYXJlIHggeSA9XG4gICAgICBsZXQgZCA9IFN0ZGxpYi4oIC0uICkgeCB5IGluXG4gICAgICBpZiBkIDwgU3RkbGliLiggfi0uICkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIC0xXG4gICAgICBlbHNlIGlmIGQgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAwXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtN1xuICBlbmQpXG5cbmluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuRmxvYXQuT1xuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcbmVuZFxuXG5tb2R1bGUgVGVyc2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGluY2x1ZGUgKFxuICAgIEJhc2UuRmxvYXQuVGVyc2UgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuRmxvYXQuVGVyc2VcbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmxldCByb2J1c3Rfc2lnbiB0IDogU2lnbi50ID0gaWYgdCA+LiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPC4gMC4gdGhlbiBOZWcgZWxzZSBaZXJvXG5cbigqIFRoZXJlIGFyZSB0d28gaXNzdWVzOlxuICAgLSBGbG9hdC5zaWduIHVzZWQgdG8gdXNlIHJvYnVzdCBjb21wYXJpc29uLCBhbmQgdXNlcnMgb2YgW0NvcmVdIG1pZ2h0IGhhdmUgY29tZSB0b1xuICAgICBkZXBlbmQgb24gdGhpcy5cbiAgIC0gUm9idXN0bmVzcyBhc2lkZSwgd2hhdCB3ZSBnZXQgZnJvbSBDb21wYXJhYmxlLldpdGhfemVybyB3b3VsZCBtYXAgbmFuIHRvIE5lZy5cbiopXG5sZXQgc2lnbiA9IHJvYnVzdF9zaWduXG5cbigqIFN0YW5kYXJkIDEyIHNpZ25pZmljYW50IGRpZ2l0cywgZXhwb25lbnRpYWwgbm90YXRpb24gdXNlZCBhcyBuZWNlc3NhcnksIGd1YXJhbnRlZWQgdG9cbiAgIGJlIGEgdmFsaWQgT0NhbWwgZmxvYXQgbGV4ZW0sIG5vdCB0byBsb29rIGxpa2UgYW4gaW50LiAqKVxubGV0IHRvX3N0cmluZ18xMiB4ID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgeClcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmZsb2F0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5mbG9hdFxubGV0IGdlbl91bmlmb3JtX2V4Y2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X2luY2x1c2l2ZVxubGV0IGdlbl93aXRob3V0X25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfd2l0aG91dF9uYW5cbmxldCBnZW5fZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9maW5pdGVcbmxldCBnZW5fcG9zaXRpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlXG5sZXQgZ2VuX25lZ2F0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9uZWdhdGl2ZVxubGV0IGdlbl96ZXJvID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBaZXJvXG5sZXQgZ2VuX25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTmFuXG5sZXQgZ2VuX3N1Ym5vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgU3Vibm9ybWFsXG5sZXQgZ2VuX25vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTm9ybWFsXG5sZXQgZ2VuX2luZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBJbmZpbml0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5JbnRcblxuICAgICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5JbnRcbmluY2x1ZGUgQmFzZS5JbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50KVxuXG4oKiBUaGlzIGlzIGFscmVhZHkgZGVmaW5lZCBieSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybywgYnV0IFNpZ24ub2ZfaW50IGlzXG4gICBtb3JlIGRpcmVjdC4gKilcbmxldCBzaWduID0gU2lnbi5vZl9pbnRcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50X2ludGZ9W0Jhc2UuSW50X2ludGZdfS4gKilcblxubW9kdWxlIHR5cGUgUm91bmQgPSBCYXNlLkludC5Sb3VuZFxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RhYmxlX2NvbXBhcmFibGUuV2l0aF9zdGFibGVfd2l0bmVzcy5WMSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhleGFibGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgbW9kdWxlIEhleCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nX2h1bSA6ID9kZWxpbWl0ZXI6Y2hhciAtPiB0IC0+IHN0cmluZ1xuICBlbmRcblxuICAoKl8gRW5zdXJlIHRoYXQgdGhpcyBtb2R1bGUgaXMgYW4gZXh0ZW5zaW9uIG9mIFtCYXNlLkludC5IZXhhYmxlXS4gKilcbiAgaW5jbHVkZSBCYXNlLkludC5IZXhhYmxlIHdpdGggdHlwZSB0IDo9IHQgYW5kIG1vZHVsZSBIZXggOj0gSGV4XG5lbmRcblxubW9kdWxlIHR5cGUgRXh0ZW5zaW9uID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbiAgaW5jbHVkZSBIZXhhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIFF1aWNrY2hlY2thYmxlLlNfaW50IHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3VuYm91bmRlZCA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNfdW5ib3VuZGVkXG4gIGluY2x1ZGUgRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5JbnQuU1xuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgRXh0ZW5zaW9uX3dpdGhfc3RhYmxlID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5zaW9uXG5cbiAgbW9kdWxlIFN0YWJsZSA6XG4gICAgU3RhYmxlIHdpdGggdHlwZSBWMS50ID0gdCBhbmQgdHlwZSBWMS5jb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDMyKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQzMlxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQzMilcblxudHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50MzJcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50NjQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLkludDY0XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDY0KVxuXG50eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDY0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2NFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50NjR9W0Jhc2UuSW50NjRdfS4gKilcblxuKCoqIHsyIEludGVyZmFjZSBmcm9tIEJhc2V9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuSW50NjRcbmVuZFxuXG4oKiogezIgRXh0ZW5zaW9uc30gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGVcbiAgSW50X2ludGYuRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBCaW4gOiBCaW5hYmxlMC5TIHdpdGggdHlwZSB0IDo9IEJhc2UuSW50NjMudCA9IHN0cnVjdFxuICBtb2R1bGUgQmluX2VtdWxhdGVkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDY0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwuVy53cmFwX2V4blxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwuVy51bndyYXBcbiAgICAgICAgZW5kKVxuICBlbmRcblxuICB0eXBlICdhIGJpbmFibGUgPSAobW9kdWxlIEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICBsZXQgYmluYWJsZV9vZl9yZXByIDogdHlwZSBhIGIuIChhLCBiKSBCYXNlLkludDYzLlByaXZhdGUuUmVwci50IC0+IGIgYmluYWJsZSA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQgLT4gKG1vZHVsZSBJbnQpXG4gICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQ2NCAtPiAobW9kdWxlIEJpbl9lbXVsYXRlZClcbiAgOztcblxuICBsZXQgYmluYWJsZSA6IEJhc2UuSW50NjMudCBiaW5hYmxlID0gYmluYWJsZV9vZl9yZXByIEJhc2UuSW50NjMuUHJpdmF0ZS5yZXByXG5cbiAgaW5jbHVkZSAodmFsIGJpbmFibGUpXG5cbiAgbGV0IGJpbl9zaGFwZV90ID0gQmluX3Byb3QuU2hhcGUuYmluX3NoYXBlX2ludDYzXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGRlcml2aW5nIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICAgaW5jbHVkZSBCaW5cblxuICAgICAgaW5jbHVkZSAoXG4gICAgICAgIEJhc2UuSW50NjMgOlxuICAgICAgICAgIEJhc2UuQ29tcGFyYWJsZS5TXG4gICAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IEJhc2UuSW50NjMuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgICAoKiBUaGlzIHNlcmlhbGl6YXRpb24gaXMgc3RhYmxlLCBzaW5jZSBpdCBlaXRoZXIgZGVsZWdhdGVzIHRvIFtpbnRdIG9yXG4gICAgICAgICBbSW50NjNfZW11bF0uICopXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuKCogVGhpcyBbaW5jbHVkZSBzdHJ1Y3RdIGlzIHJlcXVpcmVkIGJlY2F1c2UgaXQgbGV0cyB1cyBzaGFkb3cgW3RdIHdoZW4gd2UgaW5jbHVkZVxuICAgW0Jhc2UuSW50NjNdIGxhdGVyIG9uLiAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfaW50NjNcbmxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfaW50NjNcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50NjMpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBCaW5cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJhYmxlLkNvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBCYXNlLkludDYzXG5pbmNsdWRlIEJhc2UuSW50NjNcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50NjMpXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjNcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG5cbiAgKCoqIFt0b19pbnQ2M10gYW5kIFtvZl9pbnQ2M19leG5dIGVuY29kZSBbdF0gZm9yIHVzZSBpbiB3aXJlIHByb3RvY29sczsgdGhleSBhcmVcbiAgICAgIGludGVuZGVkIHRvIGF2b2lkIGFsbG9jYXRpb24gb24gNjQtYml0IG1hY2hpbmVzIGFuZCBzaG91bGQgYmUgaW1wbGVtZW50ZWRcbiAgICAgIGVmZmljaWVudGx5LiAgW29mX2ludDYzX2V4biAodG9faW50NjMgdCkgPSB0XSBmb3IgYWxsIFt0XTsgW29mX2ludDYzX2V4bl0gcmFpc2VzIGZvclxuICAgICAgaW5wdXRzIG5vdCBwcm9kdWNlZCBieSBbdG9faW50NjNdLiAqKVxuICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcblxuICB2YWwgb2ZfaW50NjNfZXhuIDogSW50NjMudCAtPiB0XG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG5cbiAgICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogSW50NjMudCAtPiB0XG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5cbiAgb3BlbiBCYXNlLkV4cG9ydFxuICBvcGVuIEJpbl9wcm90LlN0ZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IFYxLmNvbXBhcmF0b3JcbiAgICBsZXQgYmluX25hbWUgPSBcInVuaXRfdjJcIlxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIChfIDogQmluX3Byb3QuQ29tbW9uLmJ1ZikgfnBvc19yZWYgKF8gOiBpbnQpID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgYmluX25hbWUgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkX3QgKF8gOiBCaW5fcHJvdC5Db21tb24uYnVmKSB+cG9zX3JlZjooXyA6IGludCByZWYpID0gKClcblxuICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2hhcGVfdCA9IEJpbl9wcm90LlNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgYmluX25hbWUpKSBbXVxuICAgIGxldCBiaW5fc2l6ZV90ICgpID0gMFxuICAgIGxldCBiaW5fd3JpdGVfdCAoXyA6IEJpbl9wcm90LkNvbW1vbi5idWYpIH5wb3MgKCkgPSBwb3NcbiAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgIGxldCBiaW5fdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IGZmYmQxYTMwN2E0ZjdlYmU4MDIzMDQwZmVjZWJmNjk3IHx9XVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Vbml0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLlVuaXRcblxudHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnVuaXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVuaXRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnVuaXRcblxubW9kdWxlIHR5cGUgUyA9IHNpZyBlbmRcblxudHlwZSBtID0gKG1vZHVsZSBTKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBvcGVuIFNleHBsaWIuU3RkXG5cbiAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3RcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwID0gQmFzZS5MYXp5Lm1hcFxuICAgIGxldCBjb21wYXJlID0gQmFzZS5MYXp5LmNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIFN0YWJsZS5WMS50XG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIChCYXNlLkxhenkgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuTmF0aXZlaW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuTmF0aXZlaW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLk5hdGl2ZWludClcblxudHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm5hdGl2ZWludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubmF0aXZlaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuTm90aGluZy50ID0gfFxuXG4gICAgbW9kdWxlIFNoYXBlID0gc3RydWN0XG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX3NoYXBlXVxuICAgIGVuZFxuXG4gICAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBCYXNlLk5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBiaW5fc2hhcGVfdCA9IFNoYXBlLmJpbl9zaGFwZV90XG4gICAgbGV0IHRwX2xvYyA9IFslaGVyZV0ucG9zX2ZuYW1lIF4gXCIuU3RhYmxlLlYxLnRcIlxuICAgIGxldCBhbGwgPSBbXVxuICAgIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgICBsZXQgaGFzaCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgICBsZXQgYmluX3NpemVfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgYmluX3dyaXRlX3QgX2J1ZiB+cG9zOl8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgXyA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIHRwX2xvYyAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRfdCBfYnVmIH5wb3NfcmVmID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV9yZWFkX2Vycm9yIChFbXB0eV90eXBlIHRwX2xvYykgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliLkNvbnZfZXJyb3IuZW1wdHlfdHlwZSB0cF9sb2Mgc2V4cFxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQmFzZS5Ob3RoaW5nXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKEJhc2UuTm90aGluZykgKFN0YWJsZS5WMSlcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIG5ldmVyX3JldHVybnMgPSBOb3RoaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5ldmVyX3JldHVybnMgPSBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBCYXNlLk9yZGVyaW5nLnQgPVxuICB8IExlc3NcbiAgfCBFcXVhbFxuICB8IEdyZWF0ZXJcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5PcmRlcmluZyB3aXRoIHR5cGUgdCA6PSB0XG5cbmluY2x1ZGUgKEJhc2UuT3JkZXJpbmcgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuUmVmXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgVC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICBsZXQgcmVhZF9vbmx5ID0gRm4uaWRcbiAgbGV0IG9mX3JlZiA9IEZuLmlkXG4gIGxldCB0b19yZWYgPSBGbi5pZFxuICBsZXQgc2V0ID0gKCA6PSApXG4gIGxldCBnZXQgPSAoICEgKVxuZW5kXG4iLCIoKiBXZSBkb24ndCBqdXN0IGluY2x1ZGUgU2V4cGxpYi5TdGQgYmVjYXVzZSBvbmUgY2FuIG9ubHkgZGVmaW5lIEhhc2h0Ymwgb25jZSBpbiB0aGlzXG4gICBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogW2luY2x1ZGVdZCBmaXJzdCBzbyB0aGF0IGV2ZXJ5dGhpbmcgZWxzZSBzaGFkb3dzIGl0ICopXG5pbmNsdWRlIENvcmVfcGVydmFzaXZlc1xuXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuaW5jbHVkZSBEZXByZWNhdGVfcGlwZV9iYW5nXG5pbmNsdWRlIEVpdGhlci5FeHBvcnRcbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5pbmNsdWRlIEludGVyZmFjZXNcbmluY2x1ZGUgTGlzdC5JbmZpeFxuaW5jbHVkZSBOZXZlcl9yZXR1cm5zXG5pbmNsdWRlIE9yZGVyaW5nLkV4cG9ydFxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcbmluY2x1ZGUgUmVzdWx0LkV4cG9ydFxuXG50eXBlIC0nYSByZXR1cm4gPSAnYSBXaXRoX3JldHVybi5yZXR1cm4gPSBwcml2YXRlIHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxuXG4oKiogUmFpc2VkIGlmIG1hbGxvYyBpbiBDIGJpbmRpbmdzIGZhaWwgKGVycm5vICogc2l6ZSkuICopXG5leGNlcHRpb24gQ19tYWxsb2NfZXhuIG9mIGludCAqIGludFxuXG4oKiBlcnJubywgc2l6ZSAqKVxubGV0ICgpID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiQ19tYWxsb2NfZXhuXCIgKENfbWFsbG9jX2V4biAoMCwgMCkpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5ID0gRXhuLkZpbmFsbHlcblxubGV0IGZzdDMgKHgsIF8sIF8pID0geFxubGV0IHNuZDMgKF8sIHksIF8pID0geVxubGV0IHRyZDMgKF8sIF8sIHopID0gelxuXG4oKiogW3BoeXNfc2FtZV0gaXMgbGlrZSBbcGh5c19lcXVhbF0sIGJ1dCB3aXRoIGEgbW9yZSBnZW5lcmFsIHR5cGUuICBbcGh5c19zYW1lXSBpcyB1c2VmdWxcbiAgICB3aGVuIGRlYWxpbmcgd2l0aCBleGlzdGVudGlhbCB0eXBlcywgd2hlbiBvbmUgaGFzIGEgcGFja2VkIHZhbHVlIGFuZCBhbiB1bnBhY2tlZCB2YWx1ZVxuICAgIHRoYXQgb25lIHdhbnRzIHRvIGNoZWNrIGFyZSBwaHlzaWNhbGx5IGVxdWFsLiAgT25lIGNhbid0IHVzZSBbcGh5c19lcXVhbF0gaW4gc3VjaCBhXG4gICAgc2l0dWF0aW9uIGJlY2F1c2UgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQuICopXG5leHRlcm5hbCBwaHlzX3NhbWUgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYltAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcblxubGV0ICggJSApID0gSW50LiggJSApXG5sZXQgKCAvJSApID0gSW50LiggLyUgKVxubGV0ICggLy8gKSA9IEludC4oIC8vIClcbmxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxubGV0IGJwcmludGYgPSBQcmludGYuYnByaW50ZlxubGV0IGNvbnN0ID0gRm4uY29uc3RcbmxldCBlcHJpbnRmID0gUHJpbnRmLmVwcmludGZcbmxldCBlcnJvciA9IE9yX2Vycm9yLmVycm9yXG5sZXQgZXJyb3JfcyA9IE9yX2Vycm9yLmVycm9yX3NcbmxldCBmYWlsd2l0aGYgPSBCYXNlLlByaW50Zi5mYWlsd2l0aGZcbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcbmxldCBmb3JjZSA9IEJhc2UuTGF6eS5mb3JjZVxubGV0IGZwcmludGYgPSBQcmludGYuZnByaW50ZlxubGV0IGludmFsaWRfYXJnZiA9IEJhc2UuUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IGlmcHJpbnRmID0gUHJpbnRmLmlmcHJpbnRmXG5sZXQgaXNfbm9uZSA9IE9wdGlvbi5pc19ub25lXG5sZXQgaXNfc29tZSA9IE9wdGlvbi5pc19zb21lXG5sZXQga3NwcmludGYgPSBQcmludGYua3NwcmludGZcbmxldCBva19leG4gPSBPcl9lcnJvci5va19leG5cbmxldCBwaHlzX2VxdWFsID0gQmFzZS5waHlzX2VxdWFsXG5sZXQgcHJpbnRfcyA9IFN0ZGlvLnByaW50X3NcbmxldCBlcHJpbnRfcyA9IFN0ZGlvLmVwcmludF9zXG5sZXQgcHJpbnRmID0gUHJpbnRmLnByaW50ZlxubGV0IHByb3RlY3QgPSBFeG4ucHJvdGVjdFxubGV0IHByb3RlY3R4ID0gRXhuLnByb3RlY3R4XG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCByb3VuZCA9IEZsb2F0LnJvdW5kXG5sZXQgKCAqKi4gKSA9IEJhc2UuKCAqKi4gKVxubGV0ICggJS4gKSA9IEJhc2UuKCAlLiApXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxubGV0IHVuc3RhZ2UgPSBTdGFnZWQudW5zdGFnZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gPSBXaXRoX3JldHVybi53aXRoX3JldHVybl9vcHRpb25cblxuKCogV2l0aCB0aGUgZm9sbG93aW5nIGFsaWFzZXMsIHdlIGFyZSBqdXN0IG1ha2luZyBleHRyYSBzdXJlIHRoYXQgdGhlIHRvcGxldmVsIHNleHBcbiAgIGNvbnZlcnRlcnMgbGluZSB1cCB3aXRoIHRoZSBvbmVzIGluIG91ciBtb2R1bGVzLiAqKVxuXG5cbmluY2x1ZGUgVHlwZXJlcF9saWIuU3RkX2ludGVybmFsXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldLCBbYnl0ZXNdLCBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlXG4gICAgIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYm9vbCA9IEJvb2wudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQgPSBJbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDMyID0gSW50MzIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxhenlfdCA9ICdhIExhenkudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxpc3QgPSAnYSBMaXN0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnQgPSBOYXRpdmVpbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgKCogQmluX3Byb3QgaGFzIG9wdGltaXplZCBmdW5jdGlvbnMgZm9yIGZsb2F0IGFycmF5cyAqKVxuICBpbmNsdWRlIHN0cnVjdFxuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IEZsb2F0LnQgYXJyYXkgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlIGZsb2F0X2FycmF5IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgZW5kXG4gIHdpdGggdHlwZSBmbG9hdF9hcnJheSA6PSBmbG9hdF9hcnJheSlcbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBhcnJheVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJvb2xcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBjaGFyXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgZmxvYXRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQzMlxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGF6eV90IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGlzdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvblxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZ1xuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJ5dGVzXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgcmVmXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgdW5pdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIGFycmF5IDo9ICdhIGFycmF5XG53aXRoIHR5cGUgYm9vbCA6PSBib29sXG53aXRoIHR5cGUgY2hhciA6PSBjaGFyXG53aXRoIHR5cGUgZmxvYXQgOj0gZmxvYXRcbndpdGggdHlwZSBpbnQgOj0gaW50XG53aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbndpdGggdHlwZSBpbnQ2NCA6PSBpbnQ2NFxud2l0aCB0eXBlICdhIGxpc3QgOj0gJ2EgbGlzdFxud2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbndpdGggdHlwZSAnYSBvcHRpb24gOj0gJ2Egb3B0aW9uXG53aXRoIHR5cGUgc3RyaW5nIDo9IHN0cmluZ1xud2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG53aXRoIHR5cGUgJ2EgbGF6eV90IDo9ICdhIGxhenlfdFxud2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbndpdGggdHlwZSB1bml0IDo9IHVuaXQpXG5cbmxldCBzZXhwX29mX2V4biA9IEV4bi5zZXhwX29mX3RcblxuXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgUmVwciA9IEludDYzXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXSBbQEBpbW1lZGlhdGU2NF1cblxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX3JlcHIgOiBSZXByLnQgLT4gdFxuICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmVwci50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IG9mX3JlcHIgPSBGbi5pZFxuICBsZXQgdG9fcmVwciA9IEZuLmlkXG5cbiAgbGV0IHRvX3N0cmluZyBuID1cbiAgICBsZXQgb3BlbiBSZXByIGluXG4gICAgbGV0IGtpYiA9IG9mX2ludCAxMDI0IGluXG4gICAgbGV0IG1pYiA9IGtpYiAqIGtpYiBpblxuICAgIGxldCBnaWIgPSBraWIgKiBtaWIgaW5cbiAgICBsZXQgbl9hYnMgPSBhYnMgbiBpblxuICAgIGlmIG5fYWJzIDwga2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWRCXCIgKHRvX2ludF9leG4gbilcbiAgICBlbHNlIGlmIG5fYWJzIDwgbWliXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdLXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQga2liKVxuICAgIGVsc2UgaWYgbl9hYnMgPCBnaWJcbiAgICB0aGVuIHNwcmludGYgXCIlZ01cIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBtaWIpXG4gICAgZWxzZSBzcHJpbnRmIFwiJWdHXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgZ2liKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nIG4pXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBieXRlc19pbnRfZXhuIHQgPSBSZXByLnRvX2ludF9leG4gKHRvX3JlcHIgdClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gQmlnYXJyYXlcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2VfYmlnc3RyaW5nXG5cbiAgICBtb2R1bGUgWiA6IHNpZ1xuICAgICAgdHlwZSB0ID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBiaWdzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAoKiBiaWdzdHJpbmcncyBzZXJpYWxpemF0aW9uIGlzIGludGVuZGVkIHRvIGJlIHN0YWJsZS4gIFdlIGFzc2VydCBpdCBoZXJlIHJhdGhlclxuICAgICAgICAgdGhhbiBhc3NlcnRpbmcgaXQgaW4gdHdvIHNlcGFyYXRlIHBsYWNlcyBmb3IgdGhlIGJpbl9pbyBhbmQgc2V4cCBkZWZpbml0aW9ucy4gKilcbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgWlxuXG4gICAgdHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBTdGFibGUuVjFcbmluY2x1ZGUgVFxubW9kdWxlIFVuc3RhYmxlID0gVFxuXG5sZXQgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2Mgc2l6ZSA9XG4gIGxldCBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgPVxuICAgIE9wdGlvbi5tYXAgbWF4X21lbV93YWl0aW5nX2djIH5mOkJ5dGVfdW5pdHMwLmJ5dGVzX2ludF9leG5cbiAgaW5cbiAgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgc2l6ZVxuOztcblxubGV0IHN1Yl9zaGFyZWQgPyhwb3MgPSAwKSA/bGVuIChic3RyIDogdCkgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gYnN0ciB+cG9zIGxlbiBpblxuICBBcnJheTEuc3ViIGJzdHIgcG9zIGxlblxuOztcblxuKCogRGVzdHJ1Y3Rpb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3kgOiB0IC0+IHVuaXQgPSBcImJpZ3N0cmluZ19kZXN0cm95X3N0dWJcIlxuXG5leHRlcm5hbCB1bnNhZmVfZGVzdHJveV9hbmRfcmVzaXplIDogdCAtPiBsZW46aW50IC0+IHQgPSBcImJpZ3N0cmluZ19yZWFsbG9jXCJcblxuKCogUmVhZGluZyAvIHdyaXRpbmcgYmluLXByb3QgKilcblxubGV0IHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/KHBvcyA9IDApID9sZW4gcmVhZGVyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIHQgbGVuIH5wb3MgaW5cbiAgbGV0IGxpbWl0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnNcIiB0IH5wb3MgfmxlbjtcbiAgbGV0IGludmFsaWRfZGF0YSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgICBgSW52YWxpZF9kYXRhIChFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbiAgaW5cbiAgbGV0IHJlYWQgYmluX3JlYWRlciB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IGxpbWl0IC0gcG9zXG4gICAgdGhlbiBgTm90X2Vub3VnaF9kYXRhXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeSBgT2sgKGJpbl9yZWFkZXIgdCB+cG9zX3JlZikgd2l0aFxuICAgICAgICB8IGV4biAtPiBgSW52YWxpZF9kYXRhIChFcnJvci5vZl9leG4gZXhuKVxuICAgICAgd2l0aFxuICAgICAgfCBgSW52YWxpZF9kYXRhIF8gYXMgeCAtPiB4XG4gICAgICB8IGBPayByZXN1bHQgLT5cbiAgICAgICAgbGV0IGV4cGVjdGVkX3BvcyA9IHBvcyArIGxlbiBpblxuICAgICAgICBpZiAhcG9zX3JlZiA9IGV4cGVjdGVkX3Bvc1xuICAgICAgICB0aGVuIGBPayAocmVzdWx0LCBleHBlY3RlZF9wb3MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX2RhdGFcbiAgICAgICAgICAgIFwicG9zX3JlZiA8PiBleHBlY3RlZF9wb3NcIlxuICAgICAgICAgICAgKCFwb3NfcmVmLCBleHBlY3RlZF9wb3MpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludCAqIGludF0pXG4gIGluXG4gIG1hdGNoXG4gICAgcmVhZCBCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciB+cG9zIH5sZW46QmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoXG4gIHdpdGhcbiAgfCAoYE5vdF9lbm91Z2hfZGF0YSB8IGBJbnZhbGlkX2RhdGEgXykgYXMgeCAtPiB4XG4gIHwgYE9rIChlbGVtZW50X2xlbmd0aCwgcG9zKSAtPlxuICAgIGlmIGVsZW1lbnRfbGVuZ3RoIDwgMFxuICAgIHRoZW4gaW52YWxpZF9kYXRhIFwibmVnYXRpdmUgZWxlbWVudCBsZW5ndGggJWRcIiBlbGVtZW50X2xlbmd0aCBbJXNleHBfb2Y6IGludF1cbiAgICBlbHNlIHJlYWQgcmVhZGVyLkJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCB+cG9zIH5sZW46ZWxlbWVudF9sZW5ndGhcbjs7XG5cbmxldCByZWFkX2Jpbl9wcm90IHQgP3BvcyA/bGVuIHJlYWRlciA9XG4gIG1hdGNoIHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/cG9zID9sZW4gcmVhZGVyIHdpdGhcbiAgfCBgT2sgeCAtPiBPayB4XG4gIHwgYEludmFsaWRfZGF0YSBlIC0+IEVycm9yIChFcnJvci50YWcgZSB+dGFnOlwiSW52YWxpZCBkYXRhXCIpXG4gIHwgYE5vdF9lbm91Z2hfZGF0YSAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJub3QgZW5vdWdoIGRhdGFcIlxuOztcblxubGV0IHdyaXRlX2Jpbl9wcm90X2tub3duX3NpemUgdCA/KHBvcyA9IDApIHdyaXRlIH5zaXplOmRhdGFfbGVuIHYgPVxuICBsZXQgdG90YWxfbGVuID0gZGF0YV9sZW4gKyBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgaWYgcG9zIDwgMFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3Q6IG5lZ2F0aXZlIHBvc1wiIHBvcyBbJXNleHBfb2Y6IGludF07XG4gIGlmIHBvcyArIHRvdGFsX2xlbiA+IGxlbmd0aCB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBub3QgZW5vdWdoIHJvb21cIlxuICAgICAgKGBwb3MgcG9zLCBgcG9zX2FmdGVyX3dyaXRpbmcgKHBvcyArIHRvdGFsX2xlbiksIGBiaWdzdHJpbmdfbGVuZ3RoIChsZW5ndGggdCkpXG4gICAgICBbJXNleHBfb2Y6XG4gICAgICAgIFsgYHBvcyBvZiBpbnQgXSAqIFsgYHBvc19hZnRlcl93cml0aW5nIG9mIGludCBdICogWyBgYmlnc3RyaW5nX2xlbmd0aCBvZiBpbnQgXV07XG4gIGxldCBwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgPSBCaW5fcHJvdC5VdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgdCB+cG9zIGRhdGFfbGVuIGluXG4gIGxldCBwb3NfYWZ0ZXJfZGF0YSA9IHdyaXRlIHQgfnBvczpwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgdiBpblxuICBpZiBwb3NfYWZ0ZXJfZGF0YSAtIHBvcyA8PiB0b3RhbF9sZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3QgYnVnIVwiXG4gICAgICAoIGBwb3NfYWZ0ZXJfZGF0YSBwb3NfYWZ0ZXJfZGF0YVxuICAgICAgLCBgc3RhcnRfcG9zIHBvc1xuICAgICAgLCBgYmluX3Byb3Rfc2l6ZV9oZWFkZXJfbGVuZ3RoIEJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICAgICAgLCBgZGF0YV9sZW4gZGF0YV9sZW5cbiAgICAgICwgYHRvdGFsX2xlbiB0b3RhbF9sZW4gKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3NfYWZ0ZXJfZGF0YSBvZiBpbnQgXVxuICAgICAgICAqIFsgYHN0YXJ0X3BvcyBvZiBpbnQgXVxuICAgICAgICAqIFsgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBvZiBpbnQgXVxuICAgICAgICAqIFsgYGRhdGFfbGVuIG9mIGludCBdXG4gICAgICAgICogWyBgdG90YWxfbGVuIG9mIGludCBdXTtcbiAgcG9zX2FmdGVyX2RhdGFcbjs7XG5cbmxldCB3cml0ZV9iaW5fcHJvdCB0ID9wb3MgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHYgPVxuICBsZXQgc2l6ZSA9IHdyaXRlci5zaXplIHYgaW5cbiAgd3JpdGVfYmluX3Byb3Rfa25vd25fc2l6ZSB0ID9wb3Mgd3JpdGVyLndyaXRlIH5zaXplIHZcbjs7XG5cbigqIEhleCBkdW1wICopXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCByZWMgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmIH5taW5fcG9zIH5wb3MgfmNoYXIgPVxuICBsZXQgcG9zJyA9IHBvcyAtIDEgaW5cbiAgaWYgcG9zJyA+PSBtaW5fcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zJykgY2hhclxuICB0aGVuIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zOnBvcycgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfZW5kID1cbiAgICBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWY6dCB+bWluX3Bvczpwb3MgfnBvczoocG9zICsgbGVuKSB+Y2hhcjpwYWRkaW5nXG4gIGluXG4gIHRvX3N0cmluZyB0IH5wb3MgfmxlbjooZGF0YV9lbmQgLSBwb3MpXG47O1xuXG5sZXQgZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sb2NhbCB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIFxuICAgIChsZXQgZGF0YV9lbmQgPVxuICAgICAgIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1Zjp0IH5taW5fcG9zOnBvcyB+cG9zOihwb3MgKyBsZW4pIH5jaGFyOnBhZGRpbmdcbiAgICAgaW5cbiAgICAgbGV0IGxlbiA9IGRhdGFfZW5kIC0gcG9zIGluXG4gICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGVfbG9jYWwgbGVuIGluXG4gICAgIFRvX2J5dGVzLmJsaXQgfnNyYzp0IH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG47O1xuXG5sZXRbQGNvbGRdIHNldF9wYWRkZWRfZml4ZWRfc3RyaW5nX2ZhaWxlZCB+aGVhZF9vcl90YWlsIH52YWx1ZSB+bGVuID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiQmlnc3RyaW5nLnNldF8lc19wYWRkZWRfZml4ZWRfc3RyaW5nOiAlUyBpcyBsb25nZXIgdGhhbiAlZFwiXG4gICAgaGVhZF9vcl90YWlsXG4gICAgKFslZ2xvYmFsaXplOiBzdHJpbmddIHZhbHVlKVxuICAgIGxlblxuICAgICgpXG47O1xuXG5sZXQgc2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAodmFsdWUgW0Bsb2NhbF0pID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW4gdGhlbiBzZXRfcGFkZGVkX2ZpeGVkX3N0cmluZ19mYWlsZWQgfmhlYWRfb3JfdGFpbDpcInRhaWxcIiB+dmFsdWUgfmxlbjtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOnBvcyB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zICsgc2xlbiB0byBwb3MgKyBsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCByZWMgZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zIH5tYXhfcG9zIH5jaGFyID1cbiAgaWYgcG9zIDw9IG1heF9wb3MgJiYgQ2hhci4oID0gKSAoZ2V0IGJ1ZiBwb3MpIGNoYXJcbiAgdGhlbiBmaXJzdF9ub25tYXRjaCB+YnVmIH5wb3M6KEludC5zdWNjIHBvcykgfm1heF9wb3MgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICh2YWx1ZSBbQGxvY2FsXSkgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggdmFsdWUgaW5cbiAgaWYgc2xlbiA+IGxlbiB0aGVuIHNldF9wYWRkZWRfZml4ZWRfc3RyaW5nX2ZhaWxlZCB+aGVhZF9vcl90YWlsOlwiaGVhZFwiIH52YWx1ZSB+bGVuO1xuICBGcm9tX3N0cmluZy5ibGl0IH5zcmM6dmFsdWUgfmRzdDp0IH5zcmNfcG9zOjAgfmRzdF9wb3M6KHBvcyArIGxlbiAtIHNsZW4pIH5sZW46c2xlbjtcbiAgZm9yIGkgPSBwb3MgdG8gcG9zICsgbGVuIC0gc2xlbiAtIDEgZG9cbiAgICBzZXQgdCBpIHBhZGRpbmdcbiAgZG9uZVxuOztcblxubGV0IGdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gIHRvX3N0cmluZyB0IH5wb3M6ZGF0YV9iZWdpbiB+bGVuOihsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykpXG47O1xuXG5sZXQgZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZ19sb2NhbCB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIFxuICAgIChsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gICAgIGxldCBsZW4gPSBsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykgaW5cbiAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZV9sb2NhbCBsZW4gaW5cbiAgICAgVG9fYnl0ZXMuYmxpdCB+c3JjOnQgfnNyY19wb3M6ZGF0YV9iZWdpbiB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYmlnc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5iaWdzdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gICAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICAgIH1cblxuICBsZXQgdG9fc3RyaW5nIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmIGluXG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICBzdHJcbiAgOztcblxuICBsZXQgdG9fYnl0ZXMgdCB2ID1cbiAgICBsZXQgbGVuID0gdC5zaXplIHYgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcG9zID0gdC53cml0ZSBidWYgfnBvczowIHYgaW5cbiAgICBhc3NlcnQgKHBvcyA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBsZXQgc3RyID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9XG4gICAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gICAgfVxuXG4gIGxldCBvZl9zdHJpbmcgdCBzdHJpbmcgPVxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHN0cmluZyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuXG4gIGxldCBvZl9ieXRlcyB0IGJ5dGVzID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX2J5dGVzIGJ5dGVzIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgIGxldCB2ID0gdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGFzc2VydCAoIXBvc19yZWYgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICB2XG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmluX3Byb3QuTWQ1XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gdCB8PiB0b19oZXggfD4gU3RyaW5nLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IFN0cmluZy50X29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IGhhc2hfZm9sZF90IGFjY3VtIHQgPSBTdHJpbmcuaGFzaF9mb2xkX3QgYWNjdW0gKFQudG9fYmluYXJ5IHQpXG5sZXQgaGFzaCB0ID0gU3RyaW5nLmhhc2ggKFQudG9fYmluYXJ5IHQpXG5cbm1vZHVsZSBBc19iaW5hcnlfc3RyaW5nID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBTdHJpbmcuc2V4cF9vZl90IChULnRvX2JpbmFyeSB4KVxuICAgICAgbGV0IHRfb2Zfc2V4cCB4ID0gVC5vZl9iaW5hcnlfZXhuIChTdHJpbmcudF9vZl9zZXhwIHgpXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IFQudG9fYmluYXJ5XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IFQub2ZfYmluYXJ5X2V4blxuXG4gICAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBCaW5hYmxlID0gU3RyaW5nLlN0YWJsZS5WMVxuXG4gICAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0cmluZy5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9iaW5hYmxlXG4gICAgICAgICAgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgbGV0IG9mX2JpbmFibGUgPSBGbi5pZFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5fcHJvdC5NZDUuU3RhYmxlLlYxXG5cbiAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICBlbmQpXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgIEJpbl9wcm90Lk1kNS5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgb2ZfYmluYWJsZVxuICAgICAgICB0b19iaW5hYmxlXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGRpZ2VzdF9zdHJpbmcgcyA9IE1kNV9saWIuc3RyaW5nIHNcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuXG5sZXQgZGlnZXN0X251bV9ieXRlcyA9IDE2XG5sZXQgdG9faGV4ID0gVC50b19oZXhcbmxldCBmcm9tX2hleCA9IFQub2ZfaGV4X2V4blxubGV0IG9mX2hleF9leG4gPSBULm9mX2hleF9leG5cbmxldCBvZl9iaW5hcnlfZXhuID0gVC5vZl9iaW5hcnlfZXhuXG5sZXQgdG9fYmluYXJ5ID0gVC50b19iaW5hcnlcbmxldCBkaWdlc3Rfc3RyaW5nID0gU3RhYmxlLmRpZ2VzdF9zdHJpbmdcbmxldCBkaWdlc3RfYnl0ZXMgPSBNZDVfbGliLmJ5dGVzXG5cbmV4dGVybmFsIGNhbWxfc3lzX29wZW5cbiAgOiAgc3RyaW5nXG4gIC0+IFN0ZGxpYi5vcGVuX2ZsYWcgbGlzdFxuICAtPiBwZXJtOmludFxuICAtPiBpbnRcbiAgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBjYW1sX3N5c19jbG9zZSA6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5leHRlcm5hbCBkaWdlc3RfZmRfYmxvY2tpbmcgOiBpbnQgLT4gc3RyaW5nID0gXCJjb3JlX21kNV9mZFwiXG5cbmxldCBkaWdlc3RfZmlsZV9ibG9ja2luZyBwYXRoID1cbiAgb2ZfYmluYXJ5X2V4blxuICAgIChCYXNlLkV4bi5wcm90ZWN0eFxuICAgICAgIChjYW1sX3N5c19vcGVuIHBhdGggWyBPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnkgXSB+cGVybTowbzAwMClcbiAgICAgICB+ZjpkaWdlc3RfZmRfYmxvY2tpbmdcbiAgICAgICB+ZmluYWxseTpjYW1sX3N5c19jbG9zZSlcbjs7XG5cbmxldCBmaWxlID0gZGlnZXN0X2ZpbGVfYmxvY2tpbmdcblxubGV0IGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW4gPVxuICBvZl9iaW5hcnlfZXhuIChTdGRsaWIuRGlnZXN0LmNoYW5uZWwgY2hhbm5lbCBsZW4pXG47O1xuXG5sZXQgY2hhbm5lbCBjaGFubmVsIGxlbiA9XG4gIGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW5cbjs7XG5cbmxldCBvdXRwdXRfYmxvY2tpbmcgdCBvYyA9IFN0ZGxpYi5EaWdlc3Qub3V0cHV0IG9jICh0b19iaW5hcnkgdClcbmxldCBvdXRwdXQgb2MgdCA9IG91dHB1dF9ibG9ja2luZyB0IG9jXG5sZXQgaW5wdXRfYmxvY2tpbmcgaWMgPSBvZl9iaW5hcnlfZXhuIChTdGRsaWIuRGlnZXN0LmlucHV0IGljKVxubGV0IGlucHV0ID0gaW5wdXRfYmxvY2tpbmdcbmxldCBkaWdlc3Rfc3ViYnl0ZXMgPSBNZDVfbGliLnN1YmJ5dGVzXG5sZXQgc3RyaW5nID0gZGlnZXN0X3N0cmluZ1xubGV0IGJ5dGVzID0gZGlnZXN0X2J5dGVzXG5sZXQgc3ViYnl0ZXMgcyBwb3MgbGVuID0gZGlnZXN0X3N1YmJ5dGVzIHMgfnBvcyB+bGVuXG5cbmxldCBkaWdlc3RfYmluX3Byb3Qgd3JpdGVyIHZhbHVlID1cbiAgZGlnZXN0X3N0cmluZyAoQ29yZV9iaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nIHdyaXRlciB2YWx1ZSlcbjs7XG5cbmV4dGVybmFsIGNfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuICA6ICBCaWdzdHJpbmcudFxuICAtPiBwb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gcmVzOkJ5dGVzLnRcbiAgLT4gdW5pdFxuICA9IFwiY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1wiXG5cbmxldCB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgKCogSXQncyBtb3JlIGVmZmljaWVudCB0byBhbGxvY2F0ZSB0aGUgcmVzdWx0IG9uIHRoZSBPQ2FtbCBzaWRlIGFuZCBkZWNsYXJlIHRoZSBDXG4gICAgIGZ1bmN0aW9uIGFzIG5vYWxsb2MgdGhhbiB0byBsZXQgdGhlIEMgZnVuY3Rpb24gYWxsb2NhdGUuICopXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgY19kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gfnJlcztcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5XG4gICAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxubGV0IGRpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICB+cG9zXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlblxuOztcblxubGV0IGRpZ2VzdF9iaWdzdHJpbmcgYnVmID1cbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3M6MCB+bGVuOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zilcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbmFibGUwXG5cbigqIFtvZl9zdHJpbmddIGFuZCBbdG9fc3RyaW5nXSBjYW4ndCBnbyBpbiBiaW5hYmxlMC5tbCBkdWUgdG8gYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBvZl9zdHJpbmcgbSBzdHJpbmcgPSBvZl9iaWdzdHJpbmcgbSAoQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nIG0gdCA9IEJpZ3N0cmluZy50b19zdHJpbmcgKHRvX2JpZ3N0cmluZyBtIHQpXG4iLCIoKiBGdW5jdGlvbnMgZm9yIHBhcnNpbmcgdGltZSB6b25lIGRhdGFiYXNlIGZpbGVzICh6aWMgZmlsZXMpLlxuXG4gICBBIHRpbWUgem9uZSBmaWxlIGNvbnNpc3RzIChjb25jZXB0dWFsbHkgLSB0aGUgcmVwcmVzZW50YXRpb24gaXMgbW9yZVxuICAgY29tcGFjdCkgb2YgYW4gb3JkZXJlZCBsaXN0IG9mIChUaW1lLnQgKiBbbG9jYWxfdGltZV90eXBlXSkgdGhhdCBtYXJrXG4gICB0aGUgYm91bmRhcmllcyAobWFya2VkIGZyb20gdGhlIGVwb2NoKSBhdCB3aGljaCB2YXJpb3VzIHRpbWUgYWRqdXN0bWVudFxuICAgcmVnaW1lcyBhcmUgaW4gZWZmZWN0LiAgVGhpcyBjYW4gYWxzbyBiZSB0aG91Z2h0IG9mIGFzIGJyZWFraW5nIGRvd24gYWxsXG4gICB0aW1lIHBhc3QgdGhlIGVwb2NoIGludG8gcmFuZ2VzIHdpdGggYSBbbG9jYWxfdGltZV90eXBlXSB0aGF0IGRlc2NyaWJlcyB0aGVcbiAgIG9mZnNldCBmcm9tIEdNVCB0byBhcHBseSB0byBlYWNoIHJhbmdlIHRvIGdldCBsb2NhbCB0aW1lLlxuKilcblxub3BlbiBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFpvbmVfaW50ZlxuXG5leGNlcHRpb24gSW52YWxpZF9maWxlX2Zvcm1hdCBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgRnVsbF9kYXRhID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgSW5kZXggPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgbGV0IG5leHQgPSBJbnQuc3VjY1xuICAgICAgICBsZXQgcHJldiA9IEludC5wcmVkXG4gICAgICAgIGxldCBiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiA9IC0xXG5cbiAgICAgICAgKCogU29tZSBleGlzdGluZyBjbGllbnRzIGV4cGVjdCBbaW5kZXggPj0gMF0sIHNvIHdlIG5ldmVyIHNlcmlhbGl6ZSBhIG5lZ2F0aXZlXG4gICAgICAgICAgIGluZGV4LiBUaGlzIGNvbnZlcnNpb24gY2FuIGJlIHJlbW92ZWQgaWYgbmV3IHN0YWJsZSB2ZXJzaW9ucyBhcmUgbWludGVkLiAqKVxuICAgICAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IG1heCAwIHRcblxuICAgICAgICAoKiBXaGVuIHRoZSBpbmRleCBvZiBhIHRpbWUgem9uZSB3aXRoIG5vIHRyYW5zaXRpb25zIGlzIGNvbnZlcnRlZCB2aWEgdG9fZXh0ZXJuYWwsXG4gICAgICAgICAgIGl0cyB2YWx1ZSBiZWNvbWVzIDAgZXZlbiB0aG91Z2ggaXRzIHRyYW5zaXRpb24gYXJyYXkgaXMgZW1wdHkgKGFuZCBpdCBzaG91bGRcbiAgICAgICAgICAgaGF2ZSBiZWVuIC0xKS4gV2hlbiB0aGUgY29udmVydGVkIHZhbHVlIGlzIGNoYW5nZWQgYmFjayB0byBhIFpvbmUudCB0aHJvdWdoXG4gICAgICAgICAgIG9mX2V4dGVybmFsLCByZXR1cm5pbmcgdGhpcyB2YWx1ZSBmb3IgaXRzIGluZGV4IGNvdWxkIHJlc3VsdCBpbiB1bnNhZmUgYXJyYXlcbiAgICAgICAgICAgYWNjZXNzZXMgdG8gdGhlIHRyYW5zaXRpb24gYXJyYXkgb2YgdGhlIHpvbmUgKHNpbmNlIHRoZXJlIGlzIG5vIHRyYW5zaXRpb24gYXRcbiAgICAgICAgICAgaW5kZXggMCkuIEFsc28sIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8ga2VlcCB0aGUgY29udmVydGVkIGluZGV4IGJlY2F1c2UgaXRcbiAgICAgICAgICAgaXMgaW50ZW5kZWQgdG8gYmUgYSBtdXRhYmxlIHZhbHVlIHVzZWQgZm9yIGNhY2hpbmcuIFNvIG9mX2V4dGVybmFsIGFsd2F5cyBzZXRzXG4gICAgICAgICAgIHRoZSBpbmRleCB0byAtMSwgd2hpY2ggaXMgYSBzYWZlIHZhbHVlLiAqKVxuICAgICAgICBsZXQgb2ZfZXh0ZXJuYWwgKF8gOiB0KSA9IC0xXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgSW50LlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgICAgb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIHRvX2V4dGVybmFsXG4gICAgICAgIDs7XG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlXG4gICAgICAgICAgICAoSW50KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9leHRlcm5hbFxuICAgICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpbWUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBpc19kc3QgOiBib29sXG4gICAgICAgICAgOyBhYmJydiA6IHN0cmluZ1xuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZFxuXG4gICAgICAoKiBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCB3aGVuIGxlYXAgc2Vjb25kcyBzaG91bGQgYmUgYXBwbGllZCAtIHVudXNlZFxuICAgICAgICAgYmVjYXVzZSB3ZSBhcmUgdHJhbnNsYXRpbmcgYmFzZWQgb24gYSBlcG9jaCBzeXN0ZW0gY2xvY2sgKHNlZSB0aGUgQ29yZV96b25lXG4gICAgICAgICBkb2N1bWVudGF0aW9uKS4gKilcbiAgICAgIG1vZHVsZSBMZWFwX3NlY29uZCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IHNlY29uZHMgOiBpbnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRyYW5zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBuZXdfcmVnaW1lIDogUmVnaW1lLnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDtcbiAgICAgICAgICBkaWdlc3QgOiBNZDUuQXNfYmluYXJ5X3N0cmluZy5TdGFibGUuVjEudCBvcHRpb25cbiAgICAgICAgOyB0cmFuc2l0aW9ucyA6IFRyYW5zaXRpb24udCBhcnJheVxuICAgICAgICA7ICgqIGNhY2hlcyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdHJhbnNpdGlvbiB3ZSB1c2VkIHRvIG1ha2UgbG9va3VwcyBmYXN0ZXIgKilcbiAgICAgICAgICBtdXRhYmxlIGxhc3RfcmVnaW1lX2luZGV4IDogSW5kZXgudFxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlIDogUmVnaW1lLnRcbiAgICAgICAgOyBsZWFwX3NlY29uZHMgOiBMZWFwX3NlY29uZC50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgKCogdGhpcyByZWxpZXMgb24gem9uZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGhhdmluZyB0aGUgc2FtZSB0cmFuc2l0aW9ucyAqKVxuICAgICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBTdHJpbmcuY29tcGFyZSB0MS5uYW1lIHQyLm5hbWVcbiAgICAgIGxldCBvcmlnaW5hbF9maWxlbmFtZSB6b25lID0gem9uZS5vcmlnaW5hbF9maWxlbmFtZVxuICAgICAgbGV0IGRpZ2VzdCB6b25lID0gem9uZS5kaWdlc3RcblxuICAgICAgbW9kdWxlIFpvbmVfZmlsZSA6IHNpZ1xuICAgICAgICB2YWwgaW5wdXRfdHpfZmlsZSA6IHpvbmVuYW1lOnN0cmluZyAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIGxldCBib29sX29mX2ludCBpID0gaSA8PiAwXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50MzIgPVxuICAgICAgICAgIGxldCBsb25nID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgICAgICAgICBsZXQgaW50MzJfb2ZfY2hhciBjaHIgPSBJbnQzMi5vZl9pbnRfZXhuIChpbnRfb2ZfY2hhciBjaHIpIGluXG4gICAgICAgICAgZnVuIGljIC0+XG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nIH5wb3M6MCB+bGVuOjQ7XG4gICAgICAgICAgICBsZXQgc2IxID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMCkpIDI0IGluXG4gICAgICAgICAgICBsZXQgc2IyID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMSkpIDE2IGluXG4gICAgICAgICAgICBsZXQgc2IzID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMikpIDggaW5cbiAgICAgICAgICAgIGxldCBzYjQgPSBpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAzKSBpblxuICAgICAgICAgICAgSW50MzIuYml0X29yIChJbnQzMi5iaXRfb3Igc2IxIHNiMikgKEludDMyLmJpdF9vciBzYjMgc2I0KVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugb24gbnVtYmVycyB0aGF0IHdpbGwgZml0IGludG8gYSAzMS1iaXRcbiAgICAgICAgICAgaW50LiBVTklYIHRpbWVzdGFtcHMgd29uJ3QsIGZvciBleGFtcGxlLiAgSW4gb3VyIGNhc2UgdGhpcyBpcyBvbmx5IHVzZWRcbiAgICAgICAgICAgdG8gaG9sZCBzbWFsbCBudW1iZXJzIHRoYXQgYXJlIG5ldmVyIGludGVycHJldGVkIGFzIHRpbWVzdGFtcHMuICopXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludCBpYyA9IEludDMyLnRvX2ludF9leG4gKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDYzIGljID0gSW50NjMub2ZfaW50MzIgKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfbG9uZ19hc19pbnQ2MyBpYyA9XG4gICAgICAgICAgbGV0IGludDYzX29mX2NoYXIgY2hyID0gSW50NjMub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGxldCBzaGlmdCBjIGJpdHMgPSBJbnQ2My5zaGlmdF9sZWZ0IChpbnQ2M19vZl9jaGFyIGMpIGJpdHMgaW5cbiAgICAgICAgICBsZXQgbG9uZ19sb25nID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nX2xvbmcgfnBvczowIH5sZW46ODtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMCkgNTYgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMSkgNDgpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDIpIDQwKSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAzKSAzMikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNCkgMjQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDUpIDE2KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA2KSA4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChpbnQ2M19vZl9jaGFyIChCeXRlcy5nZXQgbG9uZ19sb25nIDcpKSBpblxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9saXN0IGljIH5sZW4gfmYgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBjIGxzdCA9XG4gICAgICAgICAgICBpZiBjID4gMCB0aGVuIGxvb3AgKGMgLSAxKSAoZiBpYyA6OiBsc3QpIGVsc2UgTGlzdC5yZXYgbHN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIGxlbiBbXVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hcnJheSBpYyB+bGVuIH5mID0gQXJyYXkub2ZfbGlzdCAoaW5wdXRfbGlzdCBpYyB+bGVuIH5mKVxuXG4gICAgICAgIGxldCBpbnB1dF9yZWdpbWUgaWMgPVxuICAgICAgICAgIGxldCB1dGNfb2Zmc2V0X2luX3NlY29uZHMgPSBpbnB1dF9sb25nX2FzX2ludDYzIGljIGluXG4gICAgICAgICAgbGV0IGlzX2RzdCA9IGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSBpblxuICAgICAgICAgIGxldCBhYmJydl9pbmRleCA9IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykgaW5cbiAgICAgICAgICBsZXQgbHQgYWJicnYgPSB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdDsgYWJicnYgfSBpblxuICAgICAgICAgIGx0LCBhYmJydl9pbmRleFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hYmJyZXZpYXRpb25zIGljIH5sZW4gPVxuICAgICAgICAgIGxldCByYXdfYWJicnZzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmxlbiB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBsZXQgXywgaW5kZXhlZF9hYmJydnMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkIHJhd19hYmJydnMgfmluaXQ6KDAsIE1hcC5Qb2x5LmVtcHR5KSB+ZjooZnVuIChpbmRleCwgYWJicnZzKSBjIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICB8ICdcXDAwMCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dF9pbmRleCA9IGluZGV4ICsgU3RyaW5nLmxlbmd0aCBkYXRhICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBhYmJydnMgPSBNYXAuc2V0IGFiYnJ2cyB+a2V5OmluZGV4IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICAgICAgICBuZXh0X2luZGV4LCBhYmJydnNcbiAgICAgICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICAgICAgICAgIGluZGV4LCBhYmJydnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA8PiAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEludmFsaWRfZmlsZV9mb3JtYXRcbiAgICAgICAgICAgICAgICAgXCJtaXNzaW5nIFxcMDAwIHRlcm1pbmF0aW5nIGNoYXJhY3RlciBpbiBpbnB1dF9hYmJyZXZpYXRpb25zXCIpO1xuICAgICAgICAgIGluZGV4ZWRfYWJicnZzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uIH5pbnB1dF9sZWFwX3NlY29uZCBpYyA9XG4gICAgICAgICAgbGV0IHV0Y19sb2NhbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHN0ZF93YWxsX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgbGVhcF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0eXBlX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgYWJicnZfY2hhcl9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fdGltZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF90cmFuc2l0aW9uIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25faW5kaWNlcyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0XG4gICAgICAgICAgICAgIGljXG4gICAgICAgICAgICAgIH5mOihmdW4gaWMgLT4gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSlcbiAgICAgICAgICAgICAgfmxlbjp0cmFuc2l0aW9uX2NvdW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfcmVnaW1lIH5sZW46dHlwZV9jb3VudCBpblxuICAgICAgICAgIGxldCBhYmJyZXZpYXRpb25zID0gaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuOmFiYnJ2X2NoYXJfY291bnQgaW5cbiAgICAgICAgICBsZXQgbGVhcF9zZWNvbmRzID0gaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF9sZWFwX3NlY29uZCB+bGVuOmxlYXBfY291bnQgaW5cbiAgICAgICAgICAoKiBUaGUgZm9sbG93aW5nIHR3byBhcnJheXMgaW5kaWNhdGUgdHdvIGJvb2xlYW4gdmFsdWVzIHBlciByZWdpbWUgdGhhdFxuICAgICAgICAgICAgIHJlcHJlc2VudCBhIHRocmVlLXZhbHVlIHR5cGUgdGhhdCB3b3VsZCB0cmFuc2xhdGUgdG86XG5cbiAgICAgICAgICAgICB0eXBlIHRyYW5zaXRpb25fdHlwZSA9IFVUQyB8IFN0YW5kYXJkIHwgV2FsbF9jbG9ja1xuXG4gICAgICAgICAgICAgSG93ZXZlciwgdGhlc2UgYXJlIG9ubHkgdXNlZCBieSB0aGUgc3lzdGVtIGxpYnJhcnkgd2hlbiBoYW5kbGluZyB0aGUgY2FzZSB3aGVyZSB0aGVcbiAgICAgICAgICAgICBUWiB2YXJpYWJsZSBpcyBzZXQsIG5vdCB0byBhIHRpbWUgem9uZSBuYW1lLCBidXQgaW5zdGVhZCBpcyBvZiB0aGUgZm9ybTpcblxuICAgICAgICAgICAgIFRaID0gXCJzdGQgb2Zmc2V0IGRzdCBvZmZzZXQsIHJ1bGVcIlxuXG4gICAgICAgICAgICAgV2hpY2ggaXMgZGVlcGx5IG9ic2N1cmUsIGFuZCBhbG1vc3QgY2VydGFpbmx5IGEgbWlzdGFrZSB0byB1c2UuICBUaGlzIGxpYnJhcnkgbWFrZXNcbiAgICAgICAgICAgICBubyBwcmV0ZW5zZSBhYm91dCBoYW5kbGluZyB0aGlzIGNhc2UuICBXZSBjb250aW51ZSB0byByZWFkIHRoZW0gaW4gZm9yXG4gICAgICAgICAgICAgY29tcGxldGVuZXNzLCBhbmQgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIHRoYXQgd2Ugd2lsbCBsYXRlciBkaXNjb3ZlciBhIGNhc2Ugd2hlcmVcbiAgICAgICAgICAgICB0aGV5IGFyZSB1c2VkLiAqKVxuICAgICAgICAgIGxldCBfc3RkX3dhbGxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnN0ZF93YWxsX2NvdW50IH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF91dGNfbG9jYWxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnV0Y19sb2NhbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWdpbWVzID1cbiAgICAgICAgICAgIEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgKExpc3QubWFwIHJlZ2ltZXMgfmY6KGZ1biAobHQsIGFiYnJ2X2luZGV4KSAtPlxuICAgICAgICAgICAgICAgICBsZXQgYWJicnYgPSBNYXAuZmluZF9leG4gYWJicmV2aWF0aW9ucyBhYmJydl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBsdCBhYmJydikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmF3X3RyYW5zaXRpb25zID1cbiAgICAgICAgICAgIExpc3QubWFwMl9leG4gdHJhbnNpdGlvbl90aW1lcyB0cmFuc2l0aW9uX2luZGljZXMgfmY6KGZ1biB0aW1lIGluZGV4IC0+XG4gICAgICAgICAgICAgIGxldCByZWdpbWUgPSByZWdpbWVzLihpbmRleCkgaW5cbiAgICAgICAgICAgICAgdGltZSwgcmVnaW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25zID1cbiAgICAgICAgICAgIGxldCByZWMgbWFrZV90cmFuc2l0aW9ucyBhY2MgbCA9XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IEFycmF5Lm9mX2xpc3QgKExpc3QucmV2IGFjYylcbiAgICAgICAgICAgICAgfCAoc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoLCBuZXdfcmVnaW1lKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgICAgICAgKHsgVHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IG5ld19yZWdpbWUgfSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9ucyBbXSByYXdfdHJhbnNpdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICBtYXRjaCBBcnJheS5maW5kIHJlZ2ltZXMgfmY6KGZ1biByIC0+IG5vdCByLlJlZ2ltZS5pc19kc3QpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByZWdpbWVzLigwKVxuICAgICAgICAgICAgfCBTb21lIGx0dCAtPiBsdHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGZ1biBuYW1lIH5vcmlnaW5hbF9maWxlbmFtZSB+ZGlnZXN0IC0+XG4gICAgICAgICAgICB7IG5hbWVcbiAgICAgICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBTb21lIG9yaWdpbmFsX2ZpbGVuYW1lXG4gICAgICAgICAgICA7IGRpZ2VzdCA9IFNvbWUgZGlnZXN0XG4gICAgICAgICAgICA7IHRyYW5zaXRpb25zXG4gICAgICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVcbiAgICAgICAgICAgIDsgbGVhcF9zZWNvbmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggPSBpbnB1dF9sZWFwX3NlY29uZCBpYyBpblxuICAgICAgICAgIGxldCBzZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICB7IExlYXBfc2Vjb25kLnRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaDsgc2Vjb25kcyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYWRfaGVhZGVyIGljID1cbiAgICAgICAgICBsZXQgbWFnaWMgPVxuICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZiB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLmVxdWFsIG1hZ2ljIFwiVFppZlwiKVxuICAgICAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJtYWdpYyBjaGFyYWN0ZXJzIFRaaWYgbm90IHByZXNlbnRcIik7XG4gICAgICAgICAgbGV0IHZlcnNpb24gPVxuICAgICAgICAgICAgbWF0Y2ggSW5fY2hhbm5lbC5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAnXFwwMDAnIC0+IGBWMVxuICAgICAgICAgICAgfCBTb21lICcyJyAtPiBgVjJcbiAgICAgICAgICAgIHwgU29tZSAnMycgLT4gYFYzXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJleHBlY3RlZCB2ZXJzaW9uLCBmb3VuZCBub3RoaW5nXCIpXG4gICAgICAgICAgICB8IFNvbWUgYmFkX3ZlcnNpb24gLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCJ2ZXJzaW9uICglYykgaXMgaW52YWxpZFwiIGJhZF92ZXJzaW9uKSlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHNwYWNlIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGluIHRoZSBmb3JtYXQgKilcbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZjooQnl0ZXMuY3JlYXRlIDE1KSB+cG9zOjAgfmxlbjoxNTtcbiAgICAgICAgICB2ZXJzaW9uXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjEgaWMgPVxuICAgICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZCA9XG4gICAgICAgICAgICBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kOmlucHV0X2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uOmlucHV0X2xvbmdfYXNfaW50NjMgfmlucHV0X2xlYXBfc2Vjb25kIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgKCpcbiAgICAgICAgICAgdmVyc2lvbiAyIHRpbWV6b25lIGZpbGVzIGhhdmUgdGhlIGZvcm1hdDpcblxuICAgICAgICAgICBwYXJ0IDEgLSBleGFjdGx5IHRoZSBzYW1lIGFzIHYxXG5cbiAgICAgICAgICAgcGFydCAyIC0gc2FtZSBmb3JtYXQgYXMgdjEsIGV4Y2VwdCB0aGF0IDggYnl0ZXMgYXJlIHVzZWQgdG8gc3RvcmVcbiAgICAgICAgICAgdHJhbnNpdGlvbiB0aW1lcyBhbmQgbGVhcCBzZWNvbmRzXG5cbiAgICAgICAgICAgcGFydCAzIC0gYSBuZXdsaW5lLWVuY2xvZGVkLCBQT1NJWC1UWi1lbnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZVxuICAgICAgICAgICBzdHJpbmcgZm9yIHVzZSBpbiBoYW5kbGluZyBpbnN0YW50cyBhZnRlciB0aGUgbGFzdCB0cmFuc2l0aW9uIHRpbWVcbiAgICAgICAgICAgc3RvcmVkIGluIHRoZSBmaWxlICh3aXRoIG5vdGhpbmcgYmV0d2VlbiB0aGUgbmV3bGluZXMgaWYgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgUE9TSVggcmVwcmVzZW50YXRpb24gZm9yIHN1Y2ggaW5zdGFudHMpXG5cbiAgICAgICAgICAgV2UgaGFuZGxlIGZpbGVzIGluIHRoaXMgZm9ybWF0IGJ5IHBhcnNpbmcgdGhlIGZpcnN0IHBhcnQgZXhhY3RseSBhcyBhIHYxXG4gICAgICAgICAgIHRpbWV6b25lIGZpbGUgYW5kIHRoZW4gY29udGludWluZyB0byBwYXJzZSB3aXRoIDY0Yml0IHJlYWRpbmcgZnVuY3Rpb25zIGluIHRoZVxuICAgICAgICAgICByaWdodCBwbGFjZXMuXG5cbiAgICAgICAgICAgVmVyc2lvbiAzIHRpbWV6b25lIGZpbGVzIGFyZSB0aGUgc2FtZSBhcyB2ZXJzaW9uIDIsIGV4Y2VwdCB0aGVcbiAgICAgICAgICAgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGUgc3RyaW5nIGluIHBhcnQgMyBtYXkgdXNlIHR3byBtaW5vclxuICAgICAgICAgICBleHRlbnNpb25zIHRvIHRoZSBQT1NJWCBUWiBmb3JtYXQgKHRoZSBob3VycyBwYXJ0IG9mIGl0cyB0cmFuc2l0aW9uXG4gICAgICAgICAgIHRpbWVzIG1heSBiZSBzaWduZWQgYW5kIHJhbmdlIGZyb20gLTE2NyB0aHJvdWdoIDE2NyBpbnN0ZWFkIG9mIHRoZVxuICAgICAgICAgICBQT1NJWC1yZXF1aXJlZCB1bnNpZ25lZCB2YWx1ZXMgZnJvbSAwIHRocm91Z2ggMjQ7IGFuZCBEU1QgaXMgaW4gZWZmZWN0IGFsbFxuICAgICAgICAgICB5ZWFyIGlmIGl0IHN0YXJ0cyBKYW51YXJ5IDEgYXQgMDA6MDAgYW5kIGVuZHMgRGVjZW1iZXIgMzEgYXQgMjQ6MDAgcGx1cyB0aGVcbiAgICAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIGRheWxpZ2h0IHNhdmluZyBhbmQgc3RhbmRhcmQgdGltZSkuXG5cbiAgICAgICAgICAgQXMgd2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgd2l0aCBwYXJ0IDMgYW55d2F5LCB3ZSBjYW4ganVzdCByZWFkIHYzXG4gICAgICAgICAgIGZpbGVzIGFzIHYyLlxuICAgICAgICAqKVxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV92Ml9vcl92MyB+dmVyc2lvbiBpYyA9XG4gICAgICAgICAgbGV0IChfIDogc3RyaW5nIC0+IG9yaWdpbmFsX2ZpbGVuYW1lOnN0cmluZyAtPiBkaWdlc3Q6TWQ1X2xpYi50IC0+IHQpID1cbiAgICAgICAgICAgIGlucHV0X3R6X2ZpbGVfdjEgaWNcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHRoZSBoZWFkZXIgaXMgZnVsbHkgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogWyBgVjEgfCBgVjIgfCBgVjMgXV0gKHJlYWRfaGVhZGVyIGljKSB2ZXJzaW9uKTtcbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuXG4gICAgICAgICAgICB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICAgIH5pbnB1dF9sZWFwX3NlY29uZFxuICAgICAgICAgICAgaWNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZSB+em9uZW5hbWUgfmZpbGVuYW1lID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHByb3RlY3R4IChJbl9jaGFubmVsLmNyZWF0ZSBmaWxlbmFtZSkgfmZpbmFsbHk6SW5fY2hhbm5lbC5jbG9zZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGxldCBtYWtlX3pvbmUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlYWRfaGVhZGVyIGljIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBWMSAtPiBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgICAgICAgfCAoYFYyIHwgYFYzKSBhcyB2ZXJzaW9uIC0+IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2VzdCA9IE1kNS5kaWdlc3RfZmlsZV9ibG9ja2luZyBmaWxlbmFtZSBpblxuICAgICAgICAgICAgICBsZXQgciA9IG1ha2Vfem9uZSB6b25lbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWU6ZmlsZW5hbWUgfmRpZ2VzdCBpblxuICAgICAgICAgICAgICByKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IEludmFsaWRfZmlsZV9mb3JtYXQgcmVhc29uIC0+XG4gICAgICAgICAgICByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCAoc3ByaW50ZiBcIiVzIC0gJXNcIiBmaWxlbmFtZSByZWFzb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGFzc2VydCAob2Zmc2V0ID49IC0yNCAmJiBvZmZzZXQgPD0gMjQpO1xuICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gSW50NjMub2ZfaW50IChvZmZzZXQgKiA2MCAqIDYwKSBpblxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA9IE5vbmVcbiAgICAgICAgOyBkaWdlc3QgPSBOb25lXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgPSBbfHxdXG4gICAgICAgIDsgbGFzdF9yZWdpbWVfaW5kZXggPSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlID1cbiAgICAgICAgICAgIHsgUmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kczsgaXNfZHN0ID0gZmFsc2U7IGFiYnJ2ID0gbmFtZSB9XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3V0Y19vZmZzZXQgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSAwXG4gICAgICAgICAgdGhlbiBcIlVUQ1wiXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiVVRDJXMlZFwiIChpZiBvZmZzZXQgPCAwIHRoZW4gXCItXCIgZWxzZSBcIitcIikgKGFicyBvZmZzZXQpXG4gICAgICAgIGluXG4gICAgICAgIG9mX3V0Y19vZmZzZXRfZXhwbGljaXRfbmFtZSB+bmFtZSB+aG91cnM6b2Zmc2V0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5GdWxsX2RhdGEuVjFcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIHQubmFtZVxuXG5sZXQgbGlrZWx5X21hY2hpbmVfem9uZXMgPVxuICByZWYgWyBcIkFtZXJpY2EvTmV3X1lvcmtcIjsgXCJFdXJvcGUvTG9uZG9uXCI7IFwiQXNpYS9Ib25nX0tvbmdcIjsgXCJBbWVyaWNhL0NoaWNhZ29cIiBdXG47O1xuXG5sZXQgaW5wdXRfdHpfZmlsZSA9IFpvbmVfZmlsZS5pbnB1dF90el9maWxlXG5sZXQgdXRjID0gb2ZfdXRjX29mZnNldCB+aG91cnM6MFxubGV0IG5hbWUgem9uZSA9IHpvbmUubmFtZVxubGV0IHJlc2V0X3RyYW5zaXRpb25fY2FjaGUgdCA9IHQubGFzdF9yZWdpbWVfaW5kZXggPC0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cblxuKCogUmFpc2VzIGlmIFtpbmRleCA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc10gKilcbmxldCBnZXRfcmVnaW1lX2V4biB0IGluZGV4ID1cbiAgaWYgaW5kZXggPCAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4KS5uZXdfcmVnaW1lXG47O1xuXG4oKiBJbiBcImFic29sdXRlIG1vZGVcIiwgYSBudW1iZXIgb2Ygc2Vjb25kcyBpcyBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgb2YgdGhhdCBtYW55XG4gICBzZWNvbmRzIGZyb20gdGhlIFVOSVggZXBvY2gsIGlnbm9yaW5nIGxlYXAgc2Vjb25kcy5cblxuICAgSW4gXCJkYXRlIGFuZCBvZmRheSBtb2RlXCIsIHlvdSBpbnRlcnByZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGFzIGEgbnVtYmVyIG9mIGRheXMgaW5cbiAgIGNvbWJpbmF0aW9uIHdpdGggYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodCwgd2hpY2ggZ2l2ZXMgeW91IGEgY2FsZW5kYXIgZGF5IGFuZFxuICAgYSBjbG9jayBmYWNlIHRpbWUuIFRoZW4geW91IHRha2UgdGhlIHRpbWUgdGhhdCB0aG9zZSByZXByZXNlbnQgaW4gc29tZSByZWxldmFudFxuICAgdGltZXpvbmUuXG5cbiAgIE9mIGNvdXJzZSwgaWYgdGhlIHRpbWV6b25lIGluIHF1ZXN0aW9uIGhhcyBEU1Qgc2hpZnRzLCB0aGUgZGF0ZSBhbmQgb2ZkYXkgbWlnaHRcbiAgIHJlcHJlc2VudCB0d28gb3IgemVybyB0aW1lcy4gVGhlc2UgdGltZXMgd2lsbCBiZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZWl0aGVyIHRoZVxuICAgcHJldmlvdXMgVVRDIG9mZnNldCBvciB0aGUgbmV4dCBvbmUsIGluIGEgd2F5IHdob3NlIHByZWNpc2UgZGV0YWlscyB5b3UgcHJvYmFibHlcbiAgIHNob3VsZG4ndCBkZXBlbmQgb24uXG5cbiAgIChGb3IgdGhlIGN1cmlvdXMsIHdoYXQgd2UgZG8gaXM6IGNvbXB1dGUgdGhlIFwicmVsYXRpdmUgdGltZVwiIG9mIHRoZSBzaGlmdCBhY2NvcmRpbmcgdG9cbiAgIHRoZSBuZXcgcmVnaW1lLCBhbmQgYXNzaWduIHJlbGF0aXZlIHRpbWVzIHRvIHRoZSBvbGQgcmVnaW1lIG9yIG5ldyByZWdpbWUgZGVwZW5kaW5nIG9uXG4gICB3aGljaCBzaWRlIG9mIHRoZSBzaGlmdCB0aW1lIHRoZXkgb2NjdXIuIFNpbmNlIHRoaXMgYW1vdW50cyB0byB1c2luZyB0aGUgb2xkIHJlZ2ltZVxuICAgd2hlbiB0aGUgY2xvY2tzIG1vdmUgZm9yd2FyZCBhbmQgdGhlIG5ldyByZWdpbWUgd2hlbiB0aGUgY2xvY2tzIG1vdmUgYmFjaywgaXQnc1xuICAgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB0aGUgY29ycmVzcG9uZGluZyBUaW1lLnQncyByZWxhdGl2ZSB0byBib3RoIHRoZSBvbGQgYW5kIHRoZVxuICAgbmV3IHJlZ2ltZSBhbmQgcGlja2luZyB0aGUgb25lIHRoYXQgb2NjdXJzIGxhdGVyLiBZZXMsIGxhdGVyLiBJIGhhZCB0byBkcmF3IGEgZGlhZ3JhbVxuICAgdG8gcGVyc3VhZGUgbXlzZWxmIHRoYXQgaXQncyB0aGF0IHdheSByb3VuZCwgYnV0IGl0IGlzLilcbiopXG5tb2R1bGUgTW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWJzb2x1dGVcbiAgICB8IERhdGVfYW5kX29mZGF5XG5lbmRcblxubGV0IGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlICh4IDogVHJhbnNpdGlvbi50KSA9XG4gIGxldCBvcGVuIEludDYzLk8gaW5cbiAgbWF0Y2ggKG1vZGUgOiBNb2RlLnQpIHdpdGhcbiAgfCBBYnNvbHV0ZSAtPiB4LnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaFxuICB8IERhdGVfYW5kX29mZGF5IC0+XG4gICAgeC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggKyB4Lm5ld19yZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCA8IDAgfHwgSW50NjMuKCA+PSApIHNlY29uZHMgKGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlIHQudHJhbnNpdGlvbnMuKGluZGV4KSlcbjs7XG5cbmxldCBpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcyA9XG4gIGluZGV4ICsgMSA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc1xuICB8fCBJbnQ2My4oIDwgKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCArIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgOiBJbmRleC50ID1cbiAgQXJyYXkuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmFuc2l0aW9ucyBgTGFzdF9vbl9sZWZ0IH5zZWdtZW50X29mOihmdW4gdHJhbnNpdGlvbiAtPlxuICAgIGlmIEludDYzLiggPD0gKSAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgdHJhbnNpdGlvbiB+bW9kZSkgc2Vjb25kcyB0aGVuIGBMZWZ0IGVsc2UgYFJpZ2h0KVxuICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbjs7XG5cbmxldCBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kcyA9XG4gIGxldCBpbmRleCA9XG4gICAgbGV0IGluZGV4ID0gdC5sYXN0X3JlZ2ltZV9pbmRleCBpblxuICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBiZWZvcmUgY2FjaGVkIGluZGV4OyB0cnkgcHJldmlvdXMgaW5kZXggKilcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmRleCA9IGluZGV4IC0gMSBpblxuICAgICAgaWYgbm90IChpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAgICgqIHRpbWUgaXMgYmVmb3JlIHByZXZpb3VzIGluZGV4OyBmYWxsIGJhY2sgb24gYmluYXJ5IHNlYXJjaCAqKVxuICAgICAgdGhlblxuICAgICAgICBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzXG4gICAgICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleCBhbmQgbm90IGJlZm9yZSBwcmV2aW91cywgc28gd2l0aGluIHByZXZpb3VzICopXG4gICAgICBlbHNlIGluZGV4KVxuICAgIGVsc2UgaWYgbm90IChpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAoKiB0aW1lIGlzIGFmdGVyIGNhY2hlZCBpbmRleDsgdHJ5IG5leHQgaW5kZXggKilcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmRleCA9IGluZGV4ICsgMSBpblxuICAgICAgaWYgbm90IChpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAgICgqIHRpbWUgaXMgYWZ0ZXIgbmV4dCBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGFmdGVyIGNhY2hlZCBpbmRleCBhbmQgbm90IGFmdGVyIG5leHQsIHNvIHdpdGhpbiBuZXh0ICopXG4gICAgICBlbHNlIGluZGV4ICgqIHRpbWUgaXMgd2l0aGluIGNhY2hlZCBpbmRleCAqKSlcbiAgICBlbHNlIGluZGV4XG4gIGluXG4gIHQubGFzdF9yZWdpbWVfaW5kZXggPC0gaW5kZXg7XG4gIGluZGV4XG47O1xuXG5tb2R1bGUgVGltZV9pbl9zZWNvbmRzIDogc2lnXG4gIGluY2x1ZGUgWm9uZV9pbnRmLlRpbWVfaW5fc2Vjb25kc1xuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBTcGFuID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX2ludDYzX3NlY29uZHMgPSBGbi5pZFxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuID0gRm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICAgIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICBlbmRcblxuICBpbmNsdWRlIEFic29sdXRlXG5lbmRcblxubGV0IGluZGV4IHQgdGltZSA9XG4gIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6QWJzb2x1dGVcbjs7XG5cbmxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gIHw+IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZTpEYXRlX2FuZF9vZmRheVxuOztcblxubGV0IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleCA+PSAwICYmIGluZGV4IDwgQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNcbmxldCBpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggKyAxKVxuXG5sZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgdHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCAoaW5kZXggKyAxKVxuXG5sZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICBsZXQgdHJhbnNpdGlvbiA9IHQudHJhbnNpdGlvbnMuKGluZGV4KSBpblxuICBsZXQgYWZ0ZXIgPSB0cmFuc2l0aW9uLm5ld19yZWdpbWUgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaW5kZXggPSAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4IC0gMSkubmV3X3JlZ2ltZVxuICBpblxuICBJbnQ2My4oIC0gKSBhZnRlci51dGNfb2Zmc2V0X2luX3NlY29uZHMgYmVmb3JlLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCAoaW5kZXggKyAxKVxuOztcblxubGV0IGluZGV4X2FiYnJldmlhdGlvbl9leG4gdCBpbmRleCA9XG4gIGxldCByZWdpbWUgPSBnZXRfcmVnaW1lX2V4biB0IGluZGV4IGluXG4gIHJlZ2ltZS5hYmJydlxuOztcblxubGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gIGxldCByZWdpbWUgPSBnZXRfcmVnaW1lX2V4biB0IGluZGV4IGluXG4gIFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHMgcmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5pbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZCAoQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbikgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uMClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU291cmNlX2NvZGVfcG9zaXRpb24wKVxuIiwiaW5jbHVkZSBCYXNlLlR5cGVfZXF1YWxcblxubW9kdWxlIElkID0gc3RydWN0XG4gIGluY2x1ZGUgSWRcblxuICBtb2R1bGUgVWlkID0gc3RydWN0XG4gICAgbW9kdWxlIFVwc3RyZWFtID0gQmFzZS5UeXBlX2VxdWFsLklkLlVpZFxuICAgIGluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsLklkLlVpZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5FeHRlbmRcbiAgICAgICAgKFVwc3RyZWFtKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5UeXBlX2VxdWFsLklkLlVpZC50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoVXBzdHJlYW0pXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIFZhbGlkYXRlZF9pbnRmXG5cbm1vZHVsZSB0eXBlIFJhdyA9IFJhd1xuXG50eXBlICgncmF3LCAnd2l0bmVzcykgdCA9ICdyYXdcblxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYWxsb3dpbmdfc3Vic3RpdHV0aW9uID1cbiAgU19hbGxvd2luZ19zdWJzdGl0dXRpb24gd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYmluX2lvID0gU19iaW5faW8gd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwID1cbiAgU19iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbmxldCByYXcgdCA9IHRcblxubW9kdWxlIE1ha2UgKFJhdyA6IFJhdykgPSBzdHJ1Y3RcbiAgdHlwZSB3aXRuZXNzXG4gIHR5cGUgdCA9IFJhdy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IgPVxuICAgIEVycm9yLmNyZWF0ZVxuICAgICAgXCJ2YWxpZGF0aW9uIGZhaWxlZFwiXG4gICAgICAodCwgZXJyb3IsIFJhdy5oZXJlKVxuICAgICAgWyVzZXhwX29mOiBSYXcudCAqIEVycm9yLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZXhuIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yLnJhaXNlICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdCA9XG4gICAgbWF0Y2ggVmFsaWRhdGUucmVzdWx0IChSYXcudmFsaWRhdGUgdCkgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgdFxuICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gY3JlYXRlX2V4biAoUmF3LnRfb2Zfc2V4cCBzZXhwKVxuICBsZXQgcmF3IHQgPSB0XG5cbiAgbGV0IGNyZWF0ZV9zdGFibGVfd2l0bmVzcyByYXdfc3RhYmxlX3dpdG5lc3MgPVxuICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSByYXdfc3RhYmxlX3dpdG5lc3MgY3JlYXRlX2V4biByYXdcbiAgOztcblxuICBsZXQgdHlwZV9lcXVhbCA9IFR5cGVfZXF1YWwuVFxuZW5kXG5cbm1vZHVsZSBBZGRfYmluX2lvIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChWYWxpZGF0ZWQgOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgKFJhdylcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gUmF3LnRcblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSByYXcgPVxuICAgICAgICAgIGlmIFJhdy52YWxpZGF0ZV9iaW5pb19kZXNlcmlhbGl6YXRpb24gdGhlbiBWYWxpZGF0ZWQuY3JlYXRlX2V4biByYXcgZWxzZSByYXdcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICBlbmQpXG5lbmRcblxubW9kdWxlIEFkZF9jb21wYXJlIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBbJWNvbXBhcmU6IFJhdy50XSAocmF3IHQxKSAocmF3IHQyKVxuZW5kXG5cbm1vZHVsZSBBZGRfaGFzaCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSYXcuaGFzaF9mb2xkX3Qgc3RhdGUgKFZhbGlkYXRlZC5yYXcgdClcbiAgbGV0IGhhc2ggdCA9IFJhdy5oYXNoIChWYWxpZGF0ZWQucmF3IHQpXG5lbmRcblxubW9kdWxlIEFkZF90eXBlcmVwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChSYXcgOiBSYXdfYmluX2lvKSA9IHN0cnVjdFxuICBtb2R1bGUgVDAgPSBNYWtlIChSYXcpXG4gIGluY2x1ZGUgVDBcbiAgaW5jbHVkZSBBZGRfYmluX2lvIChSYXcpIChUMClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBNYWtlX2JpbmFibGUgKFJhdylcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQWRkX2NvbXBhcmUgKFJhdykgKFQpXG5cbiAgaW5jbHVkZSAoXG4gICAgQWRkX2hhc2ggKFJhdykgKFQpIDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kXG4gIHwgTWludXRlXG4gIHwgSG91clxuICB8IERheVxuW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoXVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBVbmlxdWVfaWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBJZCA9IElkXG5cbigqIE9ubHkgXCJtYWtlXCIgY2FuIGNhdXNlIGEgY29udGV4dC1zd2l0Y2ggdGhhdCBtaWdodCBsZWFkIHRvIGEgcmFjZS5cbiAgIFRodXMgd2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiB0aGUgY2VsbCByZW1haW5lZFxuICAgdW5jaGFuZ2VkIGFjcm9zcyB0aGlzIGNhbGwuICBUaGUgc3Vic2VxdWVudCBjb21wYXJpc29uLCBkZXJlZmVyZW5jaW5nXG4gICBhbmQgYXNzaWdubWVudCBjYW5ub3QgY2F1c2UgY29udGV4dCBzd2l0Y2hlcy4gIElmIHRoZSBjb250ZW50cyBvZiB0aGVcbiAgIGNlbGwgaGFkIGNoYW5nZWQsIHdlIHdpbGwgaGF2ZSB0byB0cnkgYWdhaW4gdG8gb2J0YWluIGEgdW5pcXVlIGlkLlxuICAgVGhpcyBpcyBlc3NlbnRpYWxseSBsaWtlIGEgc3Bpbi1sb2NrIGFuZCBpcyB2aXJ0dWFsbHkgZ3VhcmFudGVlZCB0b1xuICAgc3VjY2VlZCBxdWlja2x5LiAqKVxubGV0IHJlYyByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlID1cbiAgbGV0IHggPSAhY2VsbCBpblxuICBsZXQgbmV3X3ggPSBtYWtlIHggaW5cbiAgaWYgcGh5c19lcXVhbCAhY2VsbCB4XG4gIHRoZW4gKFxuICAgIGNlbGwgOj0gbmV3X3g7XG4gICAgeClcbiAgZWxzZSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlXG47O1xuXG5tb2R1bGUgSW50ICgpID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG5cbm1vZHVsZSBJbnQ2MyAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludDYzXG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB2ZXJ5IG11Y2ggZGVwZW5kZW50IG9uIHRoZSBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcy4gIFNob3VsZCB0aGVcbiAgIHdheSB0aGUgY29tcGlsZXIgcmVwcmVzZW50cyB2YXJpb3VzIHR5cGVzIGNoYW5nZSwgaXQgbmVlZHMgdG8gYmUgcmVmbGVjdGVkIGluIHRoaXNcbiAgIG1vZHVsZSwgb3RoZXJ3aXNlIGJhZCB0aGluZ3MgY291bGQgaGFwcGVuLiAgVGhlcmVmb3JlIHRoZSBjb252ZXJzaW9ucyBhbmRcbiAgIHJlcHJlc2VudGF0aW9ucyBhcmUgdGVzdGVkIHRob3JvdWdobHkgaW4gWy4uL3Rlc3QvdGVzdF93aXRuZXNzLm1sXSBhbmRcbiAgIFsuLi90ZXN0L3Rlc3RfY29udmVyc2lvbnMubWxdXG4qKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgSGFzaF9zZXQgPSBCYXNlLkhhc2hfc2V0XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAoKiBUaGUgaW50ZWdlcnMgaGVyZSBhcmUgdGhlIHZhbHVlcyB1bmRlcmx5aW5nIHRoZSBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhleSBhbHJlYWR5XG4gICAgIGFyZSBoYXNoZXMgb2YgY29uc3RydWN0b3IgbmFtZXMsIGFuZCBoZW5jZSBhcmUgZXhwZWN0ZWQgdG8gYmUgdW5pZm9ybWx5XG4gICAgIGRpc3RyaWJ1dGVkLiAqKVxuICBsZXQgaGFzaCB4ID0geFxuZW5kXG5cbm1vZHVsZSBBbGxvd2VkX2ludHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vbmVcbiAgICB8IEFsbFxuICAgIHwgSGFzaF9zZXQgb2YgSGFzaF9zZXQuTShLZXkpLnRcbiAgICB8IEZyb21femVyb190byBvZiBpbnRcblxuICBsZXQgX2ludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIHwgQWxsIHwgSGFzaF9zZXQgXyAtPiAoKVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gYXNzZXJ0IChuID49IDApXG4gIDs7XG5cbiAgbGV0IGludF9pc192YWx1ZSB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgQWxsIC0+IHRydWVcbiAgICB8IEhhc2hfc2V0IGhhc2hfc2V0IC0+IEhhc2hfc2V0Lm1lbSBoYXNoX3NldCBpXG4gICAgfCBGcm9tX3plcm9fdG8gbiAtPiAwIDw9IGkgJiYgaSA8PSBuXG4gIDs7XG5lbmRcblxubW9kdWxlIEltbWVkaWFjeSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWx3YXlzXG4gICAgfCBTb21ldGltZXNcbiAgICB8IE5ldmVyXG4gICAgfCBVbmtub3duXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQWx3YXlzIC0+IFwiQWx3YXlzXCJcbiAgICB8IFNvbWV0aW1lcyAtPiBcIlNvbWV0aW1lc1wiXG4gICAgfCBOZXZlciAtPiBcIk5ldmVyXCJcbiAgICB8IFVua25vd24gLT4gXCJVbmtub3duXCJcbiAgOztcbmVuZFxuXG5vcGVuIEltbWVkaWFjeVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogJ2EgVHlwZW5hbWUudCAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfd2l0aF9uYW1lIDogc3RyaW5nIC0+IEltbWVkaWFjeS50IC0+IEFsbG93ZWRfaW50cy50IC0+IF8gdFxuICB2YWwgaW1tZWRpYWN5IDogXyB0IC0+IEltbWVkaWFjeS50XG4gIHZhbCBhbGxvd2VkX2ludHMgOiBfIHQgLT4gQWxsb3dlZF9pbnRzLnRcbiAgdmFsIHR5cGVuYW1lIDogXyB0IC0+IHN0cmluZ1xuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgOiBzaWdcbiAgICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gICAgdmFsIGludDY0IDogaW50NjQgdFxuICAgIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gICAgdmFsIGFycmF5IDogXyBhcnJheSB0XG4gICAgdmFsIHJlZl8gOiBfIHJlZiB0XG4gICAgdmFsIHR1cGxlMiA6IChfICogXykgdFxuICAgIHZhbCB0dXBsZTMgOiAoXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNCA6IChfICogXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNSA6IChfICogXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCBmdW5jdGlvbl8gOiAoXyAtPiBfKSB0XG4gIGVuZFxuXG4gIHZhbCBuZXZlciA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgdW5rbm93biA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgb3B0aW9uIDogXyB0XG4gIHZhbCBsaXN0IDogXyB0XG4gIHZhbCBtYWdpYyA6IF8gdCAtPiBfIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRfID1cbiAgICB7IGltbWVkaWFjeSA6IEltbWVkaWFjeS50XG4gICAgOyBhbGxvd2VkX2ludHMgOiBBbGxvd2VkX2ludHMudFxuICAgIDsgdHlwZW5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gdF9cblxuICBsZXQgY3JlYXRlX3dpdGhfbmFtZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICB7IGltbWVkaWFjeTsgYWxsb3dlZF9pbnRzOyB0eXBlbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICBjcmVhdGVfd2l0aF9uYW1lIChUeXBlbmFtZS5uYW1lIHR5cGVuYW1lKSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzXG4gIDs7XG5cbiAgbGV0IGltbWVkaWFjeSB0ID0gdC5pbW1lZGlhY3lcbiAgbGV0IGFsbG93ZWRfaW50cyB0ID0gdC5hbGxvd2VkX2ludHNcbiAgbGV0IHR5cGVuYW1lIHQgPSB0LnR5cGVuYW1lXG4gIGxldCBtYWdpYyB0ID0gdFxuICBsZXQgbmV2ZXJfd2l0aF9uYW1lIG5hbWUgPSBjcmVhdGVfd2l0aF9uYW1lIG5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgbmV2ZXIgdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgdW5rbm93biB0eXBlbmFtZSA9IGNyZWF0ZSB0eXBlbmFtZSBVbmtub3duIE5vbmVcblxuICBsZXQgb3B0aW9uID0gY3JlYXRlX3dpdGhfbmFtZSBcIm9wdGlvblwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuICBsZXQgbGlzdCA9IGNyZWF0ZV93aXRoX25hbWUgXCJsaXN0XCIgU29tZXRpbWVzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5cbiAgbW9kdWxlIE5ldmVyX3ZhbHVlcyA9IHN0cnVjdFxuICAgICgqIGludDMyIGlzIGJveGVkIGV2ZW4gb24gNjRiIHBsYXRmb3JtIGF0IHRoZSBtb21lbnQuICopXG4gICAgbGV0IGludDMyID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50MzJcbiAgICBsZXQgaW50NjQgPSBuZXZlciB0eXBlbmFtZV9vZl9pbnQ2NFxuICAgIGxldCBuYXRpdmVpbnQgPSBuZXZlciB0eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICBsZXQgZmxvYXQgPSBuZXZlciB0eXBlbmFtZV9vZl9mbG9hdFxuICAgIGxldCBzdHJpbmcgPSBuZXZlciB0eXBlbmFtZV9vZl9zdHJpbmdcbiAgICBsZXQgYnl0ZXMgPSBuZXZlciB0eXBlbmFtZV9vZl9ieXRlc1xuICAgIGxldCBhcnJheSA9IG5ldmVyX3dpdGhfbmFtZSBcImFycmF5XCJcbiAgICBsZXQgcmVmXyA9IG5ldmVyX3dpdGhfbmFtZSBcInJlZlwiXG4gICAgbGV0IHR1cGxlMiA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlMlwiXG4gICAgbGV0IHR1cGxlMyA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlM1wiXG4gICAgbGV0IHR1cGxlNCA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNFwiXG4gICAgbGV0IHR1cGxlNSA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNVwiXG5cbiAgICBsZXQgZnVuY3Rpb25fID0gbmV2ZXJfd2l0aF9uYW1lIFwiZnVuY3Rpb25cIlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9pbnQgQWx3YXlzIEFsbG93ZWRfaW50cy5BbGxcbmxldCB1bml0ID0gY3JlYXRlIHR5cGVuYW1lX29mX3VuaXQgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5sZXQgYm9vbCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9ib29sIEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAxKVxubGV0IGNoYXIgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfY2hhciBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMjU1KVxuXG5tb2R1bGUgQ29tcHV0YXRpb25faW1wbCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljLlZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcblxuICBsZXQgcmVmXyBfID0gcmVmX1xuICBsZXQgYXJyYXkgXyA9IGFycmF5XG4gIGxldCB0dXBsZTIgXyBfID0gdHVwbGUyXG4gIGxldCB0dXBsZTMgXyBfIF8gPSB0dXBsZTNcbiAgbGV0IHR1cGxlNCBfIF8gXyBfID0gdHVwbGU0XG4gIGxldCB0dXBsZTUgXyBfIF8gXyBfID0gdHVwbGU1XG4gIGxldCBmdW5jdGlvbl8gXyBfID0gZnVuY3Rpb25fXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbiAgbGV0IG9wdGlvbiBfID0gb3B0aW9uXG4gIGxldCBsaXN0IF8gPSBsaXN0XG5cbiAgKCogQW4gW2EgTGF6eS50XSBtaWdodCBiZSBhIGJveGVkIGNsb3N1cmUsIHNvIG11c3QgaGF2ZSBpbW1lZGlhY3kgZWl0aGVyIFtOZXZlcl0gb3JcbiAgICAgW1NvbWV0aW1lc10uICBBbiBbYSBMYXp5LnRdIHZhbHVlIGNvdWxkIGJlIGltbWVkaWF0ZSBpZiBbYV0gaXMgaW1tZWRpYXRlLiAgQnV0IGlmIFthXVxuICAgICBpcyBuZXZlciBpbW1lZGlhdGUsIHRoZW4gW2EgTGF6eS50XSBjYW5ub3QgYmUuICopXG4gIGxldCBsYXp5X3QgdCA9XG4gICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgICB8IE5ldmVyIC0+IE5ldmVyXG4gICAgICB8IFVua25vd24gLT4gVW5rbm93blxuICAgICAgfCBTb21ldGltZXMgfCBBbHdheXMgLT4gU29tZXRpbWVzXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9uYW1lIFwibGF6eV90XCIgaW1tZWRpYWN5IChhbGxvd2VkX2ludHMgdClcbiAgOztcblxuICBsZXQgcG9zc2libHlfdW5ib3hlZCB0eXBlbmFtZSBjaGlsZF90eXBlID1cbiAgICBtYXRjaCBpbW1lZGlhY3kgY2hpbGRfdHlwZSB3aXRoXG4gICAgfCBOZXZlciAtPiBuZXZlciB0eXBlbmFtZVxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IFNvbWV0aW1lcyAtPiB1bmtub3duIHR5cGVuYW1lXG4gIDs7XG5cbiAgbGV0IHJlY29yZCByID1cbiAgICBpZiBSZWNvcmQubGVuZ3RoIHIgPiAxXG4gICAgdGhlbiBuZXZlciAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcilcbiAgICBlbHNlIChcbiAgICAgIGxldCAoRmllbGQgdGhlX29ubHlfZmllbGQpID0gUmVjb3JkLmZpZWxkIHIgMCBpblxuICAgICAgcG9zc2libHlfdW5ib3hlZCAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcikgKEZpZWxkLnRyYXZlcnNlIHRoZV9vbmx5X2ZpZWxkKSlcbiAgOztcblxuICAoKiBWYXJpYW50cyB3aXRoIGFsbCBjb25zdHJ1Y3RvcnMgaGF2aW5nIG5vIGFyZ3VtZW50cyBhcmUgYWx3YXlzIGltbWVkaWF0ZTsgdmFyaWFudHNcbiAgICAgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBzb21lIGFyZ3VtZW50cyBhcmUgbmV2ZXIgaW1tZWRpYXRlOyBtaXhlZCB2YXJpYW50cyBhcmVcbiAgICAgc29tZXRpbWVzIGltbWVkaWF0ZS5cblxuICAgICBJZiBhIHZhcmlhbnQgaGFzIGEgc2luZ2xlIGNvbnN0cnVjdG9yLCBhbmQgdGhlIGNvbnN0cnVjdG9yIGhhcyBhbiBhcmd1bWVudCwgdGhlXG4gICAgIHZhcmlhbnQgY2FuIGJlIHVuYm94ZWQuIElmIHVuYm94ZWQsIGVpdGhlciBleHBsaWNpdGx5IG9yIGJ5IGRlZmF1bHQgKGRlcGVuZGluZyBvblxuICAgICBjb21waWxlciBzZXR0aW5ncyksIHRoZSByZXByZXNlbnRhdGlvbiBpcyBzaW1wbHkgdGhlIGFyZ3VtZW50LiBPdGhlcndpc2UsIHRoZSBydWxlc1xuICAgICBhYm92ZSBhcHBseSBub3JtYWxseS4gKilcbiAgbGV0IHZhcmlhbnQgdmFyaWFudCA9XG4gICAgbGV0IG5vX2FyZ19saXN0LCBvbmVfYXJnX2xpc3QsIG1vcmVfYXJnX2xpc3QgPVxuICAgICAgVmFyaWFudC5mb2xkIHZhcmlhbnQgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKG5vLCBvbmUsIG1vcmUpIChUYWcgdCBhcyB0YWcpIC0+XG4gICAgICAgIG1hdGNoIFRhZy5hcml0eSB0IHdpdGhcbiAgICAgICAgfCAwIC0+IHRhZyA6OiBubywgb25lLCBtb3JlXG4gICAgICAgIHwgMSAtPiBubywgdGFnIDo6IG9uZSwgbW9yZVxuICAgICAgICB8IF8gLT4gbm8sIG9uZSwgdGFnIDo6IG1vcmUpXG4gICAgaW5cbiAgICBtYXRjaCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0IHdpdGhcbiAgICB8IFtdLCBbIFRhZyB0YWcgXSwgW10gd2hlbiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCkgLT5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KSAoVGFnLnRyYXZlcnNlIHRhZylcbiAgICB8IFtdLCBbXSwgW10gLT5cbiAgICAgICgqIFdlIGRvbid0IGhhdmUgYW4gZXhwbGljdCB3YXkgb2Ygc2F5aW5nIGEgdHlwZSBpcyB1bmluaGFiaXRlZC4gKilcbiAgICAgIHVua25vd24gKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgW10sIF8gOjogXywgXyB8IFtdLCBfLCBfIDo6IF8gLT4gbmV2ZXIgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgXyA6OiBfLCBfLCBfIC0+XG4gICAgICBsZXQgbm9fYXJnX2NvdW50ID0gTGlzdC5sZW5ndGggbm9fYXJnX2xpc3QgaW5cbiAgICAgIGxldCBhbGxvd2VkX2ludHMgPVxuICAgICAgICBpZiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudClcbiAgICAgICAgdGhlbiBBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIChub19hcmdfY291bnQgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgaGFzaF9zZXQgPSBIYXNoX3NldC5jcmVhdGUgKG1vZHVsZSBLZXkpIH5zaXplOihub19hcmdfY291bnQgKiAyKSBpblxuICAgICAgICAgIExpc3QuaXRlciBub19hcmdfbGlzdCB+ZjooZnVuIChUYWcgdGFnKSAtPlxuICAgICAgICAgICAgbWF0Y2ggVGFnLmNyZWF0ZSB0YWcgd2l0aFxuICAgICAgICAgICAgfCBUYWcuQ29uc3QgXyAtPiBIYXNoX3NldC5hZGQgaGFzaF9zZXQgKFRhZy5vY2FtbF9yZXByIHRhZylcbiAgICAgICAgICAgIHwgVGFnLkFyZ3MgXyAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgIEFsbG93ZWRfaW50cy5IYXNoX3NldCBoYXNoX3NldClcbiAgICAgIGluXG4gICAgICBsZXQgaW1tZWRpYWN5ID1cbiAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBvbmVfYXJnX2xpc3QgJiYgTGlzdC5pc19lbXB0eSBtb3JlX2FyZ19saXN0XG4gICAgICAgIHRoZW4gQWx3YXlzXG4gICAgICAgIGVsc2UgU29tZXRpbWVzXG4gICAgICBpblxuICAgICAgY3JlYXRlIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBuYW1lID0gXCJpc19pbW1lZGlhdGVcIlxuICBsZXQgcmVxdWlyZWQgPSBbXVxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSAoKVxuICAgIGVuZFxuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgcmVmXG5cbiAgICAoKiBUaGUgZGVmYXVsdCB3aXRuZXNzIC0gd2hpY2ggaXMgY3JlYXRlZCBieSBjYWxsaW5nIFtpbml0XSBhbmQgcmVjb3ZlcmVkIGF0IGFueSBsYXRlclxuICAgICAgIHBvaW50IGJ5IGNhbGxpbmcgW2dldF93aXBfY29tcHV0YXRpb25dIC0gY2FuIG9ubHkgYmUgdXNlZCBpbiBhIHJlY3Vyc2l2ZSB0eXBlLlxuICAgICAgIE90aGVyIHR5cGVzIHRoYXQgZG9uJ3QgdXNlIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSB3aWxsIGp1c3QgZXZhbHVhdGUgdG8gdGhlIGFjdHVhbFxuICAgICAgIHdpdG5lc3Mgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBpbml0aWFsIGR1bW15IG9uZS4gKilcbiAgICBsZXQgaW5pdCBfIG5hbWUgPSByZWYgKGNyZWF0ZSBuYW1lIFNvbWV0aW1lcyBBbGxvd2VkX2ludHMuTm9uZSlcbiAgICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBjb21wID0gIWNvbXBcblxuICAgIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gciB0ID1cbiAgICAgIHIgOj0gdDtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IHNoYXJlIF8gPSB0cnVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gVHlwZV9nZW5lcmljLk1ha2UgKENvbXB1dGF0aW9uX2ltcGwpXG5cbmxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICBsZXQgKGBnZW5lcmljIHQpID0gR2VuZXJpYy5vZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgdFxuOztcblxubW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVycyAoTSA6IHNpZ1xuICAgIHZhbCBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgd2l0bmVzcyB0eXBlcmVwMSB0eXBlcmVwMiA9XG4gICAgbGV0IHQxID0gb2ZfdHlwZXJlcCB0eXBlcmVwMSBpblxuICAgIGxldCB0MiA9IG9mX3R5cGVyZXAgdHlwZXJlcDIgaW5cbiAgICBsZXQgaTEgPSBpbW1lZGlhY3kgdDEgaW5cbiAgICBsZXQgaTIgPSBpbW1lZGlhY3kgdDIgaW5cbiAgICBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBpMilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgaXMgbm90IGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSkpXG4gICAgZWxzZSBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBNLmltbWVkaWFjeSlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgZG9lcyBub3QgaGF2ZSBkZXNpcmVkIGltbWVkaWFjeTogd2FudGVkICVzIGJ1dCBnb3QgJXNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSlcbiAgICAgICAgICAgKEltbWVkaWFjeS50b19zdHJpbmcgTS5pbW1lZGlhY3kpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIGkxKSlcbiAgICBlbHNlIHQxXG4gIDs7XG5cbiAgKCogYWx3YXlzIGltbWVkaWF0ZSAqKVxuICBsZXQgcmEgPSBUeXBlcmVwLkludFxuXG4gICgqIG5ldmVyIGltbWVkaWF0ZSAqKVxuICBsZXQgcm4gPSBUeXBlcmVwLlN0cmluZ1xuXG4gICgqIEVhY2ggb2YgdGhlIFtGb3JfYWxsX3BhcmFtZXRlcnNfKl0gZnVuY3RvcnMgd29ya3MgYnkgaW5zdGFudGlhdGluZyB0aGUgbi1hcnkgdHlwZVxuICAgICB3aXRoIGFsbCBbQWx3YXlzXSB0eXBlcywgYW5kIHRoZW4gd2l0aCBhbGwgW05ldmVyXSB0eXBlcy4gIElmIHRob3NlIHByb2R1Y2UgdGhlIHNhbWVcbiAgICAgaW1tZWRpYWN5LCB0aGVuIHdlIGNvbmNsdWRlIHRoYXQgdGhlIG4tYXJ5IHR5cGUgaXMgaW5kZXBlbmRlbnQgb2YgaXRzIGFyZ3VtZW50cy4gKilcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MxIChYIDogVHlwZXJlcGFibGUuUzEpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSkgKFgudHlwZXJlcF9vZl90IHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MyIChYIDogVHlwZXJlcGFibGUuUzIpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MzIChYIDogVHlwZXJlcGFibGUuUzMpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M0IChYIDogVHlwZXJlcGFibGUuUzQpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M1IChYIDogVHlwZXJlcGFibGUuUzUpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcbmVuZFxuXG5sZXQgaW50X2lzX3ZhbHVlIHQgaW50ID0gQWxsb3dlZF9pbnRzLmludF9pc192YWx1ZSAoYWxsb3dlZF9pbnRzIHQpIGludFxuXG5sZXQgaW50X2FzX3ZhbHVlICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnQgdGhlbiBTb21lIChPYmoubWFnaWMgKGludCA6IGludCkgOiBhKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfYXNfdmFsdWVfZXhuICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnRcbiAgdGhlbiAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLmludF9hc192YWx1ZV9leG46IHR5cGVuYW1lOiVTIGludDolZFwiIChULnR5cGVuYW1lIHQpIGludClcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnRfZXhuICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcbiAgdGhlbiAoT2JqLm1hZ2ljIChhIDogYSkgOiBpbnQpXG4gIGVsc2UgZmFpbHdpdGggKHNwcmludGYgXCJJbW1lZGlhdGUudmFsdWVfYXNfaW50X2V4bjogdHlwZW5hbWU6JVNcIiAoVC50eXBlbmFtZSB0KSlcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPVxuICBpZiBPYmouaXNfaW50IChPYmoucmVwciBhKSB0aGVuIFNvbWUgKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KSBlbHNlIE5vbmVcbjs7XG5cbmxldCB2YWx1ZV9pc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPSBPYmouaXNfaW50IChPYmoucmVwciBhKVxuXG5tb2R1bGUgQWx3YXlzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IEFsd2F5c1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IEFsd2F5cyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBOZXZlciB8IFNvbWV0aW1lcyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXRbQGlubGluZSBhbHdheXNdIHZhbHVlX2FzX2ludCAodHlwZSBhKSBfIGEgPSBhIHw+IChPYmoubWFnaWMgOiBhIC0+IGludClcbiAgbGV0IGludCA9IGludFxuICBsZXQgY2hhciA9IGNoYXJcbiAgbGV0IGJvb2wgPSBib29sXG4gIGxldCB1bml0ID0gdW5pdFxuZW5kXG5cbm1vZHVsZSBTb21ldGltZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gU29tZXRpbWVzXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgU29tZXRpbWVzIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IE5ldmVyIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuICBsZXQgaW50X2FzX3ZhbHVlID0gaW50X2FzX3ZhbHVlXG4gIGxldCBpbnRfYXNfdmFsdWVfZXhuID0gaW50X2FzX3ZhbHVlX2V4blxuICBsZXQgaW50X2lzX3ZhbHVlID0gaW50X2lzX3ZhbHVlXG4gIGxldCB2YWx1ZV9hc19pbnQgPSB2YWx1ZV9hc19pbnRcbiAgbGV0IHZhbHVlX2FzX2ludF9leG4gPSB2YWx1ZV9hc19pbnRfZXhuXG4gIGxldCB2YWx1ZV9pc19pbnQgPSB2YWx1ZV9pc19pbnRcbiAgbGV0IG9wdGlvbiA9IG9wdGlvblxuICBsZXQgbGlzdCA9IGxpc3RcbmVuZFxuXG5tb2R1bGUgTmV2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gTmV2ZXJcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBOZXZlciAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcbmVuZFxuXG50eXBlICdhIGRlc3QgPVxuICB8IEFsd2F5cyBvZiAnYSBBbHdheXMudFxuICB8IFNvbWV0aW1lcyBvZiAnYSBTb21ldGltZXMudFxuICB8IE5ldmVyIG9mICdhIE5ldmVyLnRcbiAgfCBVbmtub3duXG5cbmxldCBkZXN0IHQgPVxuICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gIHwgQWx3YXlzIC0+IEFsd2F5cyB0XG4gIHwgU29tZXRpbWVzIC0+IFNvbWV0aW1lcyB0XG4gIHwgTmV2ZXIgLT4gTmV2ZXIgdFxuICB8IFVua25vd24gLT4gVW5rbm93blxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUMSA6IFQpIChUMiA6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IFQxLnQgKiBUMi50XG5lbmRcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiA9IGEsIGJcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiAtPiBmIChhLCBiKVxuICA7O1xuXG4gIGxldCB1bmN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biAoYSwgYikgLT4gZiBhIGJcbiAgOztcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSkgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMV9pbW11dFwiXG5cbiAgWyUlZWxzZV1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICBsZXQgbWFwICh4LCB5KSB+ZiA9IGYgeCwgZiB5XG4gIGxldCBtYXBfZnN0ICh4LCB5KSB+ZiA9IGYgeCwgeVxuICBsZXQgbWFwX3NuZCAoeCwgeSkgfmYgPSB4LCBmIHlcbiAgbGV0IG1hcF9ib3RoICh4LCB5KSB+ZjEgfmYyID0gZjEgeCwgZjIgeVxuICBsZXQgbWFwMiAoeDEsIHkxKSAoeDIsIHkyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTJcblxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiAoeCwgeSkgKHgnLCB5JykgPVxuICAgIG1hdGNoIGNtcDEgeCB4JyB3aXRoXG4gICAgfCAwIC0+IGNtcDIgeSB5J1xuICAgIHwgaSAtPiBpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiAoeCwgeSkgKHgnLCB5JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5J1xuICBsZXQgc3dhcCAoYSwgYikgPSBiLCBhXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21wYXJlIGNtcDEgY21wMiA9IGNvbXBhcmUgfmNtcDEgfmNtcDJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFQzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2MgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiBjID0gYSwgYiwgY1xuXG4gIGxldCBjdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gYSBiIGMgLT4gZiAoYSwgYiwgYylcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIsIGMpIC0+IGYgYSBiIGNcbiAgOztcblxuICBsZXQgbWFwICh4LCB5LCB6KSB+ZiA9IGYgeCwgZiB5LCBmIHpcbiAgbGV0IG1hcF9mc3QgKHgsIHksIHopIH5mID0gZiB4LCB5LCB6XG4gIGxldCBtYXBfc25kICh4LCB5LCB6KSB+ZiA9IHgsIGYgeSwgelxuICBsZXQgbWFwX3RyZCAoeCwgeSwgeikgfmYgPSB4LCB5LCBmIHpcbiAgbGV0IG1hcF9hbGwgKHgsIHksIHopIH5mMSB+ZjIgfmYzID0gZjEgeCwgZjIgeSwgZjMgelxuICBsZXQgbWFwMiAoeDEsIHkxLCB6MSkgKHgyLCB5MiwgejIpIH5mID0gZiB4MSB4MiwgZiB5MSB5MiwgZiB6MSB6MlxuXG4gIFslJWlmIGZsYW1iZGFfYmFja2VuZF1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXywgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxX2ltbXV0XCJcblxuICBbJSVlbHNlXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoKCdhLCBfLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgZ2V0MiA6ICgoXywgJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFRoZXJlJ3Mgbm8gJWZpZWxkMi4uLi4qKVxuICBsZXQgZ2V0MyAoXywgXywgYSkgPSBhXG5cbiAgKCogbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uICAqKVxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiB+Y21wMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID1cbiAgICBsZXQgYzEgPSBjbXAxIHggeCcgaW5cbiAgICBpZiBjMSA8PiAwXG4gICAgdGhlbiBjMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMyID0gY21wMiB5IHknIGluXG4gICAgICBpZiBjMiA8PiAwIHRoZW4gYzIgZWxzZSBjbXAzIHogeicpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiB+ZXEzICh4LCB5LCB6KSAoeCcsIHknLCB6JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5JyAmJiBlcTMgeiB6J1xuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmFibGVfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaGVyX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSAoUzEgOiBTZXhwYWJsZS5TKSAoUzIgOiBTZXhwYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTMS50ICogUzIudCBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlIChCMSA6IEJpbmFibGUuUykgKEIyIDogQmluYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCMS50ICogQjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIENvbXBhcmF0b3IgKFMxIDogQ29tcGFyYXRvci5TKSAoUzIgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoUzEpIChTMilcblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9XG4gICAgKFMxLmNvbXBhcmF0b3Jfd2l0bmVzcywgUzIuY29tcGFyYXRvcl93aXRuZXNzKSBUMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQyLmNvbXBhcmF0b3IgUzEuY29tcGFyYXRvciBTMi5jb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIENvbXBhcmFibGVfcGxhaW4gKFMxIDogQ29tcGFyYWJsZS5TX3BsYWluKSAoUzIgOiBDb21wYXJhYmxlLlNfcGxhaW4pID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yIChTMSkgKFMyKVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlIChTMSA6IENvbXBhcmFibGVfc2V4cGFibGUpIChTMiA6IENvbXBhcmFibGVfc2V4cGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwYWJsZSAoUzEpIChTMilcblxuICAgIGxldCBjb21wYXJlIChzMSwgczIpIChzMScsIHMyJykgPVxuICAgICAgbWF0Y2ggUzEuY29tcGFyZSBzMSBzMScgd2l0aFxuICAgICAgfCAwIC0+IFMyLmNvbXBhcmUgczIgczInXG4gICAgICB8IHggLT4geFxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgSGFzaGVyIChIMSA6IEhhc2hlcl9zZXhwYWJsZSkgKEgyIDogSGFzaGVyX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUyA6IEhhc2hhYmxlX3NleHBhYmxlKSA6XG4gIEhhc2hlcl9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGVfdCAoUzEgOiBIYXNoYWJsZV9zZXhwYWJsZSkgKFMyIDogSGFzaGFibGVfc2V4cGFibGUpID1cbiAgSGFzaGVyXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZVxuICAgICAgIChTMSkpXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUzIpKVxuXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZV90XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBTdW5cbiAgICAgICAgfCBNb25cbiAgICAgICAgfCBUdWVcbiAgICAgICAgfCBXZWRcbiAgICAgICAgfCBUaHVcbiAgICAgICAgfCBGcmlcbiAgICAgICAgfCBTYXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoLCBxdWlja2NoZWNrLCBzdGFibGVfd2l0bmVzcywgdHlwZXJlcF1cblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU1VOXCJcbiAgICAgICAgfCBNb24gLT4gXCJNT05cIlxuICAgICAgICB8IFR1ZSAtPiBcIlRVRVwiXG4gICAgICAgIHwgV2VkIC0+IFwiV0VEXCJcbiAgICAgICAgfCBUaHUgLT4gXCJUSFVcIlxuICAgICAgICB8IEZyaSAtPiBcIkZSSVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU0FUXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmdfbG9uZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU3VuZGF5XCJcbiAgICAgICAgfCBNb24gLT4gXCJNb25kYXlcIlxuICAgICAgICB8IFR1ZSAtPiBcIlR1ZXNkYXlcIlxuICAgICAgICB8IFdlZCAtPiBcIldlZG5lc2RheVwiXG4gICAgICAgIHwgVGh1IC0+IFwiVGh1cnNkYXlcIlxuICAgICAgICB8IEZyaSAtPiBcIkZyaWRheVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU2F0dXJkYXlcIlxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19pbnRlcm5hbCBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVwcGVyY2FzZSBzIHdpdGhcbiAgICAgICAgfCBcIlNVTlwiIHwgXCJTVU5EQVlcIiAtPiBTdW5cbiAgICAgICAgfCBcIk1PTlwiIHwgXCJNT05EQVlcIiAtPiBNb25cbiAgICAgICAgfCBcIlRVRVwiIHwgXCJUVUVTREFZXCIgLT4gVHVlXG4gICAgICAgIHwgXCJXRURcIiB8IFwiV0VETkVTREFZXCIgLT4gV2VkXG4gICAgICAgIHwgXCJUSFVcIiB8IFwiVEhVUlNEQVlcIiAtPiBUaHVcbiAgICAgICAgfCBcIkZSSVwiIHwgXCJGUklEQVlcIiAtPiBGcmlcbiAgICAgICAgfCBcIlNBVFwiIHwgXCJTQVRVUkRBWVwiIC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9pbnRfZXhuIGkgPVxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgfCAwIC0+IFN1blxuICAgICAgICB8IDEgLT4gTW9uXG4gICAgICAgIHwgMiAtPiBUdWVcbiAgICAgICAgfCAzIC0+IFdlZFxuICAgICAgICB8IDQgLT4gVGh1XG4gICAgICAgIHwgNSAtPiBGcmlcbiAgICAgICAgfCA2IC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2ZfaW50X2V4bjogJWRcIiBpICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9faW50IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBTdW4gLT4gMFxuICAgICAgICB8IE1vbiAtPiAxXG4gICAgICAgIHwgVHVlIC0+IDJcbiAgICAgICAgfCBXZWQgLT4gM1xuICAgICAgICB8IFRodSAtPiA0XG4gICAgICAgIHwgRnJpIC0+IDVcbiAgICAgICAgfCBTYXQgLT4gNlxuICAgICAgOztcblxuICAgICAgKCogQmUgdmVyeSBnZW5lcm91cyB3aXRoIG9mX3N0cmluZy4gIFdlIGFjY2VwdCBhbGwgcG9zc2libGUgY2FwaXRhbGl6YXRpb25zIGFuZCB0aGVcbiAgICAgICAgIGludGVnZXIgcmVwcmVzZW50YXRpb25zIGFzIHdlbGwuICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nX2ludGVybmFsIHMgd2l0aFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAodHJ5IG9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgcykgd2l0aFxuICAgICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKCkpXG4gICAgICA7O1xuXG4gICAgICAoKiB0aGlzIGlzIGluIFQgcmF0aGVyIHRoYW4gb3V0c2lkZSBzbyB0aGF0IHRoZSBsYXRlciBmdW5jdG9yIGFwcGxpY2F0aW9uIHRvIGJ1aWxkIG1hcHNcbiAgICAgICAgIHVzZXMgdGhpcyBzZXhwIHJlcHJlc2VudGF0aW9uICopXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLlN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICBsZXQgb3BlbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIgaW5cbiAgICAgICAgbGV0IGF0b20gbmFtZSA9IE5vX3RhZyB7IG5hbWU7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfSBpblxuICAgICAgICBsZXQgdW5zdWdnZXN0ZWQgZ3JhbW1hciA9XG4gICAgICAgICAgVGFnIHsga2V5ID0gY29tcGxldGlvbl9zdWdnZXN0ZWQ7IHZhbHVlID0gQXRvbSBcImZhbHNlXCI7IGdyYW1tYXIgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgaW50X2NsYXVzZSB0ID0gdW5zdWdnZXN0ZWQgKGF0b20gKEludC50b19zdHJpbmcgKHRvX2ludCB0KSkpIGluXG4gICAgICAgIGxldCBzaG9ydF9jbGF1c2UgdCA9IGF0b20gKHRvX3N0cmluZyB0KSBpblxuICAgICAgICBsZXQgbG9uZ19jbGF1c2UgdCA9IHVuc3VnZ2VzdGVkIChhdG9tICh0b19zdHJpbmdfbG9uZyB0KSkgaW5cbiAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgIExhenlcbiAgICAgICAgICAgICAgKGxhenlcbiAgICAgICAgICAgICAgICAoVmFyaWFudFxuICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2VfaW5zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIFsgTGlzdC5tYXAgYWxsIH5mOmludF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICA7IExpc3QubWFwIGFsbCB+ZjpzaG9ydF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICA7IExpc3QubWFwIGFsbCB+Zjpsb25nX2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbW9kdWxlIFVuc3RhYmxlID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgKENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKSA6IENvbXBhcmFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChVbnN0YWJsZSlcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFVuc3RhYmxlKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5VbnN0YWJsZVxuXG5sZXQgd2Vla2RheXMgPSBbIE1vbjsgVHVlOyBXZWQ7IFRodTsgRnJpIF1cbmxldCB3ZWVrZW5kcyA9IFsgU2F0OyBTdW4gXVxuXG5sZXQgb2ZfaW50IGkgPVxuICB0cnkgU29tZSAob2ZfaW50X2V4biBpKSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgaXNvXzg2MDFfd2Vla2RheV9udW1iZXIgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE1vbiAtPiAxXG4gIHwgVHVlIC0+IDJcbiAgfCBXZWQgLT4gM1xuICB8IFRodSAtPiA0XG4gIHwgRnJpIC0+IDVcbiAgfCBTYXQgLT4gNlxuICB8IFN1biAtPiA3XG47O1xuXG5sZXQgbnVtX2RheXNfaW5fd2VlayA9IDdcbmxldCBzaGlmdCB0IGkgPSBvZl9pbnRfZXhuIChJbnQuKCAlICkgKHRvX2ludCB0ICsgaSkgbnVtX2RheXNfaW5fd2VlaylcblxubGV0IG51bV9kYXlzIH5mcm9tIH50b18gPVxuICBsZXQgZCA9IHRvX2ludCB0b18gLSB0b19pbnQgZnJvbSBpblxuICBpZiBJbnQuKGQgPCAwKSB0aGVuIGQgKyBudW1fZGF5c19pbl93ZWVrIGVsc2UgZFxuOztcblxubGV0IGlzX3N1bl9vcl9zYXQgdCA9IHQgPSBTdW4gfHwgdCA9IFNhdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBSb3VuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgfCBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkRpZ2l0X3N0cmluZ19oZWxwZXJzXCJcbmxldCBpbnQ2M190d28gPSBJbnQ2My5vZl9pbnQgMlxubGV0IGludDYzX3RlbiA9IEludDYzLm9mX2ludCAxMFxubGV0IGludDYzX3R3ZW50eSA9IEludDYzLm9mX2ludCAyMFxubGV0IGludDYzX2JpbGxpb24gPSBJbnQ2My5vZl9pbnQgMV8wMDBfMDAwXzAwMFxubGV0IG1heF9iaWxsaW9ucyA9IEludDYzLiggLyApIEludDYzLm1heF92YWx1ZSBpbnQ2M19iaWxsaW9uXG5cbmxldCByZWMgZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIG4gPVxuICBpZiBJbnQ2My4oIDwgKSBuIGludDYzX3RlblxuICB0aGVuIDFcbiAgZWxzZSBJbnQuc3VjYyAoZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIChJbnQ2My4oIC8gKSBuIGludDYzX3RlbikpXG47O1xuXG5sZXQgZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSA9IGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyBJbnQ2My5tYXhfdmFsdWVcblxubGV0IHJlYyBtYXhfaW50NjNfd2l0aCB+ZGlnaXRzID1cbiAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgfCAxIC0+IEludDYzLm9mX2ludCA5XG4gIHwgMiAtPiBJbnQ2My5vZl9pbnQgOTlcbiAgfCAzIC0+IEludDYzLm9mX2ludCA5OTlcbiAgfCA0IC0+IEludDYzLm9mX2ludCA5Xzk5OVxuICB8IDUgLT4gSW50NjMub2ZfaW50IDk5Xzk5OVxuICB8IDYgLT4gSW50NjMub2ZfaW50IDk5OV85OTlcbiAgfCA3IC0+IEludDYzLm9mX2ludCA5Xzk5OV85OTlcbiAgfCA4IC0+IEludDYzLm9mX2ludCA5OV85OTlfOTk5XG4gIHwgOSAtPiBJbnQ2My5vZl9pbnQgOTk5Xzk5OV85OTlcbiAgfCBfIC0+XG4gICAgaWYgZGlnaXRzID49IGRpZ2l0c19vZl9pbnQ2M19tYXhfdmFsdWVcbiAgICB0aGVuIEludDYzLm1heF92YWx1ZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbGxpb25zID0gSW50NjMuc3VjYyAobWF4X2ludDYzX3dpdGggfmRpZ2l0czooZGlnaXRzIC0gOSkpIGluXG4gICAgICBJbnQ2My5wcmVkIChJbnQ2My4oICogKSBpbnQ2M19iaWxsaW9uIGJpbGxpb25zKSlcbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHVuc2FmZV9jaGFyX29mX2RpZ2l0IG4gPSBDaGFyLnVuc2FmZV9vZl9pbnQgKENoYXIudG9faW50ICcwJyArIG4pXG4gIGxldCBkaWdpdF9vZl9jaGFyIGNoYXIgPSBDaGFyLmdldF9kaWdpdF9leG4gY2hhclxuXG4gIGxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgQnl0ZXMudW5zYWZlX3NldCBieXRlcyBwb3MgKHVuc2FmZV9jaGFyX29mX2RpZ2l0IGludClcbiAgOztcblxuICBsZXQgcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gaW50IC8gMTAgaW5cbiAgICBsZXQgb25lcyA9IGludCAtICh0ZW5zICogMTApIGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBvbmVzO1xuICAgIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMSkgaW50IGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDIpIGludCBpblxuICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAzKSBpbnQgaW5cbiAgICB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNCkgaW50IGluXG4gICAgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDUpIGludCBpblxuICAgIHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA2KSBpbnQgaW5cbiAgICB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNykgaW50IGluXG4gICAgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDgpIGludCBpblxuICAgIHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCByZXR1cm5fYmlsbGlvbnNfYW5kX3dyaXRlX3JlbWFpbmRlciBieXRlcyB+cG9zIGludDYzID1cbiAgICBsZXQgYmlsbGlvbnMgPSBJbnQ2My4oIC8gKSBpbnQ2MyBpbnQ2M19iaWxsaW9uIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDYzLiggLSApIGludDYzIChJbnQ2My4oICogKSBiaWxsaW9ucyBpbnQ2M19iaWxsaW9uKSBpblxuICAgIHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gcmVtYWluZGVyKTtcbiAgICBiaWxsaW9uc1xuICA7O1xuXG4gIGxldCByZWMgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgICBtYXRjaCBkaWdpdHMgd2l0aFxuICAgIHwgMSAtPiB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMiAtPiB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMyAtPiB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNCAtPiB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNSAtPiB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNiAtPiB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNyAtPiB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOCAtPiB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOSAtPiB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGRpZ2l0c19vZl9iaWxsaW9ucyA9IGRpZ2l0cyAtIDkgaW5cbiAgICAgIGxldCBiaWxsaW9ucyA9XG4gICAgICAgIHJldHVybl9iaWxsaW9uc19hbmRfd3JpdGVfcmVtYWluZGVyIGJ5dGVzIH5wb3M6KHBvcyArIGRpZ2l0c19vZl9iaWxsaW9ucykgaW50NjNcbiAgICAgIGluXG4gICAgICB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2JpbGxpb25zIGJpbGxpb25zXG4gIDs7XG5cbiAgbGV0IHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPSBkaWdpdF9vZl9jaGFyIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgcG9zKVxuXG4gIGxldCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDEpXG4gIDs7XG5cbiAgbGV0IHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMilcbiAgOztcblxuICBsZXQgcmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAzKVxuICA7O1xuXG4gIGxldCByZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDQpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNSlcbiAgOztcblxuICBsZXQgcmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA2KVxuICA7O1xuXG4gIGxldCByZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDcpXG4gIDs7XG5cbiAgbGV0IHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgOClcbiAgOztcblxuICBsZXQgcmFpc2VfaW50NjNfb3ZlcmZsb3cgbmFtZSA9XG4gICAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IG92ZXJmbG93IHJlYWRpbmcgaW50NjNcIiBtb2R1bGVfbmFtZSBuYW1lICgpXG4gIDs7XG5cbiAgbGV0IHJlYyByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICAgIG1hdGNoIGRpZ2l0cyB3aXRoXG4gICAgfCAxIC0+IEludDYzLm9mX2ludCAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDIgLT4gSW50NjMub2ZfaW50IChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgMyAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA0IC0+IEludDYzLm9mX2ludCAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDUgLT4gSW50NjMub2ZfaW50IChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNiAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA3IC0+IEludDYzLm9mX2ludCAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDggLT4gSW50NjMub2ZfaW50IChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgOSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZGlnaXRzX29mX2JpbGxpb25zID0gZGlnaXRzIC0gOSBpblxuICAgICAgbGV0IGJpbGxpb25zID0gcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9iaWxsaW9ucyBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9XG4gICAgICAgIEludDYzLm9mX2ludCAocmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgZGlnaXRzX29mX2JpbGxpb25zKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQ2My4oID4gKSBiaWxsaW9ucyBtYXhfYmlsbGlvbnMgdGhlbiByYWlzZV9pbnQ2M19vdmVyZmxvdyBcInJlYWRfaW50NjNcIjtcbiAgICAgIGxldCBzdW0gPSBJbnQ2My4oICsgKSAoSW50NjMuKCAqICkgYmlsbGlvbnMgaW50NjNfYmlsbGlvbikgcmVtYWluZGVyIGluXG4gICAgICBpZiBJbnQ2My4oIDwgKSBzdW0gSW50NjMuemVybyB0aGVuIHJhaXNlX2ludDYzX292ZXJmbG93IFwicmVhZF9pbnQ2M1wiO1xuICAgICAgc3VtXG4gIDs7XG5cbiAgbGV0IGRpdmlkZV9hbmRfcm91bmRfdXAgfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAobnVtZXJhdG9yICsgZGVub21pbmF0b3IgLSBJbnQ2My5vbmUpIC8lIGRlbm9taW5hdG9yXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBuYW1lID1cbiAgICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogaW52YWxpZCBkZWNpbWFsIGNoYXJhY3RlclwiIG1vZHVsZV9uYW1lIG5hbWUgKClcbiAgOztcblxuICAoKiBSZWFkcyB0aGUgcG9ydGlvbiBvZiBzdHJpbmcgYmV0d2VlbiBbcG9zXSBhbmQgW3BvcytkZWNpbWFscy0xXSwgaW5jbHVzaXZlLCBhbmRcbiAgICAgaW50ZXJwZXJldHMgaXQgYXMgYSBwb3NpdGl2ZSBkZWNpbWFsIHBhcnQgb2YgYSBudW1iZXIsIHdoaWNoIHdlIGNhbGwgW3hdLlxuXG4gICAgIExldCBbaV0gYW5kIFtyXSBiZSB0aGUgaW50ZWdlciBwYXJ0IGFuZCByZW1haW5pbmcgZnJhY3Rpb25hbCBwYXJ0IG9mXG4gICAgIFt4ICogc2NhbGUgLyBkaXZpc29yXS5cblxuICAgICBJZiBbciA8IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpXS5cbiAgICAgSWYgW3IgPSByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaV0gb3IgW2krMV0gYmFzZWQgb24gW3JvdW5kX2V4YWN0XS5cbiAgICAgSWYgW3IgPiByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaSsxXS5cblxuICAgICBBc3N1bWVzIHdpdGhvdXQgY2hlY2tpbmcgdGhhdCBbc2NhbGVdIGFuZCBbZGl2aXNvcl0gYXJlIGJvdGggcG9zaXRpdmUgYW5kXG4gICAgIGxlc3MgdGhhbiBbSW50NjMubWF4X3ZhbHVlIC8gMTBdICh0byBhdm9pZCBpbnRlcm5hbCBvdmVyZmxvdyBkdXJpbmcgdGhlIGFsZ29yaXRobVxuICAgICB3aGVuIG11bHRpcGx5aW5nIGJ5IDEwKSwgYW5kIHRoYXQgW3JvdW5kX2F0ID49IDBdIGFuZCBbcm91bmRfYXQgPCBkaXZpc29yXS4gKilcbiAgbGV0IHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICAgIHN0cmluZ1xuICAgICAgICB+cG9zOnN0YXJ0XG4gICAgICAgIH5kZWNpbWFsc1xuICAgICAgICB+c2NhbGVcbiAgICAgICAgfmRpdmlzb3JcbiAgICAgICAgfnJvdW5kX2F0XG4gICAgICAgIH5yb3VuZF9leGFjdFxuICAgICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICAgID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IHVudGlsID0gSW50LiggKyApIHN0YXJ0IGRlY2ltYWxzIGluXG4gICAgKCogVGhlIGxvb3AgaW52YXJpYW50IGlzIHRoYXQgZWFjaCBpdGVyYXRpb24sIHdlIHN0cmlwIG9mZiB0aGUgbmV4dCBkZWNpbWFsIGRpZ2l0IGFuZFxuICAgICAgIHVwZGF0ZSBbc3VtXSwgW3JvdW5kX2F0XSwgYW5kIFtkaXZpc29yXSBzdWNoIHRoYXQgdGhlIGRlc2lyZWQgcmVzdWx0IGlzOlxuXG4gICAgICAgWyBzdW0gKyByb3VuZChyZW1haW5pbmdfZGlnaXRzX29mX3hfcGFyc2VkX2FzX2RlY2ltYWwgKiBzY2FsZSAvIGRpdmlzb3IpIF1cbiAgICAgICB3aGVyZSBcInJvdW5kXCIgcm91bmRzIGJhc2VkIG9uIHRoZSBuZXcgdmFsdWUgb2YgW3JvdW5kX2F0XS5cbiAgICAqKVxuICAgIGxldCBkaXZpc29yID0gcmVmIGRpdmlzb3IgaW5cbiAgICBsZXQgcm91bmRfYXQgPSByZWYgcm91bmRfYXQgaW5cbiAgICBsZXQgc3VtID0gcmVmIEludDYzLnplcm8gaW5cbiAgICBsZXQgcG9zID0gcmVmIHN0YXJ0IGluXG4gICAgKCogU3RvcCBpZiB3ZSBydW4gb3V0IG9mIGNoYXJhY3RlcnMsIG9yIGlmIGZ1cnRoZXIgZGlnaXRzIGNhbm5vdCBpbmNyZWFzZSBvdXIgc3VtLiAqKVxuICAgIHdoaWxlIEludC4oIDw+ICkgIXBvcyB1bnRpbCAmJiAhcm91bmRfYXQgPCBzY2FsZSBkb1xuICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICB8ICcwJyAuLiAnOScgYXMgY2hhciAtPlxuICAgICAgICAgbGV0IGRpZ2l0ID0gSW50NjMub2ZfaW50IChkaWdpdF9vZl9jaGFyIGNoYXIpIGluXG4gICAgICAgICAoKiBFdmVyeSBuZXcgZGVjaW1hbCBwbGFjZSBpbXBsaWNpdGx5IHNjYWxlcyBvdXIgbnVtZXJhdG9yIGJ5IGEgZmFjdG9yIG9mIHRlbixcbiAgICAgICAgICAgIHNvIG11c3QgYWxzbyBlZmZlY3RpdmVseSBzY2FsZSBvdXIgZGVub21pbmF0b3IuXG5cbiAgICAgICAgICAgIDAuYWJjZGVmICogc2NhbGUvZGl2aXNvciAgICAgICAgW3JvdW5kIGF0IHJvdW5kX2F0XVxuICAgICAgICAgICAgPSBhLmJjZGVmICogc2NhbGUvKGRpdmlzb3IqMTApICBbcm91bmQgYXQgcm91bmRfYXQqMTBdXG5cbiAgICAgICAgICAgIFRoZW4gcmVkZWZpbmUgZGl2aXNvciA6PSBkaXZpc29yKjEwIGFuZCByb3VuZF9hdCA6PSByb3VuZF9hdCoxMCwgc28gd2UgaGF2ZTpcbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF0gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gIWRpdmlzb3IgKiBpbnQ2M190ZW47XG4gICAgICAgICByb3VuZF9hdCA6PSAhcm91bmRfYXQgKiBpbnQ2M190ZW47XG4gICAgICAgICAoKiBOZXh0IHdlIHdvcmsgb3V0IHRoZSBwYXJ0IG9mIHRoZSBzdW0gYmFzZWQgb24gb3VyIGN1cnJlbnQgZGlnaXQ6XG5cbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF1cbiAgICAgICAgICAgID0gYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgLSByb3VuZF9hdCAvIGRpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSAoYSpzY2FsZS1yb3VuZF9hdCkgLyBkaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuXG4gICAgICAgICAgICBEZWNvbXBvc2UgdGhlIGZpcnN0IHRlcm0gaW50byBpbnRlZ2VyIGFuZCByZW1haW5kZXIgcGFydHMuXG4gICAgICAgICAgICBTaW5jZSB3ZSBoYXZlIGFscmVhZHkgc3VidHJhY3RlZCBbcm91bmRfYXRdLCB3ZSBkZWNvbXBvc2UgYmFzZWRcbiAgICAgICAgICAgIG9uIHRoZSBjZWlsaW5nIHJhdGhlciB0aGFuIHRoZSBmbG9vciBvZiB0aGUgZGl2aXNpb24sXG4gICAgICAgICAgICBlLmcuIDUvMyB3b3VsZCBkZWNvbXBvc2UgYXMgMiArICgtMSkvMywgcmF0aGVyIHRoYW4gMSArICgyLzMpLlxuXG4gICAgICAgICAgICA9IGluY3JlbWVudCArIHJlbWFpbmRlci9kaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSBpbmNyZW1lbnQgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdXG4gICAgICAgICAqKVxuICAgICAgICAgbGV0IG51bWVyYXRvciA9IChkaWdpdCAqIHNjYWxlKSAtICFyb3VuZF9hdCBpblxuICAgICAgICAgbGV0IGRlbm9taW5hdG9yID0gIWRpdmlzb3IgaW5cbiAgICAgICAgIGxldCBpbmNyZW1lbnQgPSBkaXZpZGVfYW5kX3JvdW5kX3VwIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICBsZXQgcmVtYWluZGVyID0gbnVtZXJhdG9yIC0gKGluY3JlbWVudCAqIGRlbm9taW5hdG9yKSBpblxuICAgICAgICAgKCogTm93IGp1c3QgYWNjdW11bGF0ZSB0aGUgbmV3IGluY3JlbWVudCBhbmQgaXRlcmF0ZSBvbiB0aGUgcmVtYWluaW5nIHBhcnQ6XG4gICAgICAgICAgICAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdLlxuXG4gICAgICAgICAgICBTaW5jZSBbcmVtYWluZGVyXSBpcyBiZXR3ZWVuIFstKGRpdmlzb3ItMSldIGFuZCBbMF0gaW5jbHVzaXZlLCB0aGUgbmV3XG4gICAgICAgICAgICBbcm91bmRfYXRdIHdpbGwgYmUgd2l0aGluIFswXSBhbmQgW2Rpdmlzb3ItMV0gaW5jbHVzaXZlLiAqKVxuICAgICAgICAgcm91bmRfYXQgOj0gLXJlbWFpbmRlcjtcbiAgICAgICAgIHN1bSA6PSAhc3VtICsgaW5jcmVtZW50O1xuICAgICAgICAgKCogVGhpcyBsaW5lIHByZXZlbnRzIHRoZSBkaXZpc29yIGZyb20gZ3Jvd2luZyB3aXRob3V0IGJvdW5kIGFuZCBvdmVyZmxvd2luZy4gSWZcbiAgICAgICAgICAgIHRoaXMgbGluZSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBkaXZpc29yLCB0aGVuIHRoZSBkaXZpc29yIGlzIGxhcmdlciB0aGFuIHRoZVxuICAgICAgICAgICAgc2NhbGUsIHNvIHRoZSBzdW0gd2lsbCBpbmNyZWFzZSBpZiBhbmQgb25seSBpZiBbcGFyc2VkX3JlbWFpbmluZ19kaWdpdHMgKlxuICAgICAgICAgICAgc2NhbGUgKD4gb3IgPj0pIHJvdW5kX2F0XSwgd2hpY2ggZG9lc24ndCBkZXBlbmQgb24gaG93IG11Y2ggbGFyZ2VyIHRoZVxuICAgICAgICAgICAgZGl2aXNvciBpcy4gU28gdGhpcyBjaGFuZ2UgaXMgc2FmZS4gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gSW50NjMubWluIGRlbm9taW5hdG9yIHNjYWxlXG4gICAgICAgfCAnXycgd2hlbiBhbGxvd191bmRlcnNjb3JlIC0+ICgpXG4gICAgICAgfCBfIC0+IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBcInJlYWRfaW50NjNfZGVjaW1hbFwiKTtcbiAgICAgIHBvcyA6PSBJbnQuc3VjYyAhcG9zXG4gICAgZG9uZTtcbiAgICBpZiAhcm91bmRfYXQgPSB6ZXJvXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByb3VuZF9leGFjdCB3aXRoXG4gICAgICB8IFJvdW5kLlRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eSAtPiAoKVxuICAgICAgfCBSb3VuZC5Ub3dhcmRfcG9zaXRpdmVfaW5maW5pdHkgLT4gc3VtIDo9ICFzdW0gKyBJbnQ2My5vbmUpO1xuICAgICFzdW1cbiAgOztcblxuICBsZXQgcmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmUgPVxuICAgIHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICBzdHJpbmdcbiAgICAgIH5wb3NcbiAgICAgIH5kZWNpbWFsc1xuICAgICAgfnNjYWxlOihJbnQ2My4oICogKSBzY2FsZSBpbnQ2M190d28pXG4gICAgICB+ZGl2aXNvcjppbnQ2M190d29cbiAgICAgIH5yb3VuZF9hdDpJbnQ2My5vbmVcbiAgICAgIH5yb3VuZF9leGFjdDpyb3VuZF90aWVzXG4gICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICA7O1xuZW5kXG5cbmxldCBtaW5fc2NhbGUgPSBJbnQ2My5vbmVcbmxldCBtYXhfc2NhbGUgPSBJbnQ2My4oIC8gKSBJbnQ2My5tYXhfdmFsdWUgaW50NjNfdHdlbnR5XG5cbmxldCByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFscyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkZWNpbWFscz0lZCBpcyBuZWdhdGl2ZVwiIG1vZHVsZV9uYW1lIG5hbWUgZGVjaW1hbHMgKClcbjs7XG5cbmxldCByYWlzZV9ub25fcG9zaXRpdmVfZGlnaXRzIG5hbWUgfmRpZ2l0cyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkaWdpdHM9JWQgaXMgbm90IGEgcG9zaXRpdmUgbnVtYmVyXCIgbW9kdWxlX25hbWUgbmFtZSBkaWdpdHMgKClcbjs7XG5cbmxldCByYWlzZV9zY2FsZV9vdXRfb2ZfYm91bmRzIG5hbWUgfnNjYWxlID1cbiAgaW52YWxpZF9hcmdmXG4gICAgXCIlcy4lczogc2NhbGU9JUxkIG91dCBvZiByYW5nZSBbJUxkLCAlTGRdXCJcbiAgICBtb2R1bGVfbmFtZVxuICAgIG5hbWVcbiAgICAoSW50NjMudG9faW50NjQgc2NhbGUpXG4gICAgKEludDYzLnRvX2ludDY0IG1pbl9zY2FsZSlcbiAgICAoSW50NjMudG9faW50NjQgbWF4X3NjYWxlKVxuICAgICgpXG47O1xuXG5sZXQgcmFpc2VfcG9zX291dF9vZl9ib3VuZHMgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0cyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGxlblxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIiVzLiVzOiBwb3M9JWQgb3V0IG9mIHJhbmdlIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgIG1vZHVsZV9uYW1lXG4gICAgICBuYW1lXG4gICAgICBwb3NcbiAgICAgIGxlblxuICAgICAgKClcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCIlcy4lczogJWQgZGlnaXRzIGRvIG5vdCBmaXQgYXQgcG9zICVkIGluIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgbW9kdWxlX25hbWVcbiAgICAgIG5hbWVcbiAgICAgIGRpZ2l0c1xuICAgICAgcG9zXG4gICAgICBsZW5cbiAgICAgICgpXG47O1xuXG5sZXQgcmFpc2VfaW50X291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludCA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50IG1heCAoKVxuOztcblxubGV0IHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzID1cbiAgaW52YWxpZF9hcmdmICFcIiVzLiVzOiAle0ludDYzfSBvdXQgb2YgcmFuZ2UgWzAsICV7SW50NjN9XVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50NjMgbWF4ICgpXG47O1xuXG5sZXQgY2hlY2tfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHMgPVxuICBpZiBkZWNpbWFscyA8IDAgdGhlbiByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFsc1xuOztcblxubGV0IGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHMgPSBpZiBkaWdpdHMgPCAxIHRoZW4gcmFpc2Vfbm9uX3Bvc2l0aXZlX2RpZ2l0cyBuYW1lIH5kaWdpdHNcblxubGV0IGNoZWNrX3BvcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgKyBkaWdpdHMgPiBsZW4gdGhlbiByYWlzZV9wb3Nfb3V0X29mX2JvdW5kcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzXG47O1xuXG5sZXQgY2hlY2tfaW50IG5hbWUgfm1heCBpbnQgPVxuICBpZiBpbnQgPCAwIHx8IGludCA+IG1heCB0aGVuIHJhaXNlX2ludF9vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnRcbjs7XG5cbmxldCBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjMgPVxuICBpZiBJbnQ2My4oIDwgKSBpbnQ2MyBJbnQ2My56ZXJvIHx8IEludDYzLiggPiApIGludDYzIG1heFxuICB0aGVuIHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzXG47O1xuXG5sZXQgY2hlY2tfc2NhbGUgbmFtZSB+c2NhbGUgPVxuICBpZiBJbnQ2My4oIDwgKSBzY2FsZSBtaW5fc2NhbGUgfHwgSW50NjMuKCA+ICkgc2NhbGUgbWF4X3NjYWxlXG4gIHRoZW4gcmFpc2Vfc2NhbGVfb3V0X29mX2JvdW5kcyBuYW1lIH5zY2FsZVxuOztcblxubGV0IGNoZWNrX3dyaXRlIG5hbWUgfmJ5dGVzIH5wb3MgfmRpZ2l0cyB+bWF4IGludCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnl0ZXMgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3M7XG4gIGNoZWNrX2ludCBuYW1lIH5tYXggaW50XG47O1xuXG5sZXQgY2hlY2tfd3JpdGU2MyBuYW1lIH5ieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbWF4ID0gbWF4X2ludDYzX3dpdGggfmRpZ2l0cyBpblxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ5dGVzIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zO1xuICBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjNcbjs7XG5cbmxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfMV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjEgfm1heDo5IGludDtcbiAgVW5zYWZlLndyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzJfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czoyIH5tYXg6OTkgaW50O1xuICBVbnNhZmUud3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfM19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjMgfm1heDo5OTkgaW50O1xuICBVbnNhZmUud3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjQgfm1heDo5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV81X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NSB+bWF4Ojk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV82X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NiB+bWF4Ojk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfN19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjcgfm1heDo5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfOF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjggfm1heDo5OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzlfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo5IH5tYXg6OTk5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja193cml0ZTYzIFwid3JpdGVfaW50NjNcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzO1xuICBVbnNhZmUud3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzXG47O1xuXG5sZXQgY2hlY2tfcmVhZCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgY2hlY2tfcmVhZDYzIG5hbWUgfnN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3Ncbjs7XG5cbmxldCBjaGVja19yZWFkNjNfZGVjaW1hbCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzO1xuICBjaGVja19zY2FsZSBuYW1lIH5zY2FsZTtcbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0czpkZWNpbWFscyB+bGVuIH5wb3Ncbjs7XG5cbmxldCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfMV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czoxO1xuICBVbnNhZmUucmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8yX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjI7XG4gIFVuc2FmZS5yZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzNfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MztcbiAgVW5zYWZlLnJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNF9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo0O1xuICBVbnNhZmUucmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF81X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjU7XG4gIFVuc2FmZS5yZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzZfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NjtcbiAgVW5zYWZlLnJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfN19kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo3O1xuICBVbnNhZmUucmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF84X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjg7XG4gIFVuc2FmZS5yZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzlfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6OTtcbiAgVW5zYWZlLnJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19yZWFkNjMgXCJyZWFkX2ludDYzXCIgfnN0cmluZyB+cG9zIH5kaWdpdHM7XG4gIFVuc2FmZS5yZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHNcbjs7XG5cbmxldCByZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZSA9XG4gIGNoZWNrX3JlYWQ2M19kZWNpbWFsIFwicmVhZF9pbnQ2M19kZWNpbWFsXCIgfnN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGU7XG4gIFVuc2FmZS5yZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEphblxuICAgICAgfCBGZWJcbiAgICAgIHwgTWFyXG4gICAgICB8IEFwclxuICAgICAgfCBNYXlcbiAgICAgIHwgSnVuXG4gICAgICB8IEp1bFxuICAgICAgfCBBdWdcbiAgICAgIHwgU2VwXG4gICAgICB8IE9jdFxuICAgICAgfCBOb3ZcbiAgICAgIHwgRGVjXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgdmFyaWFudHNdXG5cbiAgICBsZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG4gICAgbGV0IG9mX2ludF9leG4gaSA6IHQgPVxuICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICB8IDEgLT4gSmFuXG4gICAgICB8IDIgLT4gRmViXG4gICAgICB8IDMgLT4gTWFyXG4gICAgICB8IDQgLT4gQXByXG4gICAgICB8IDUgLT4gTWF5XG4gICAgICB8IDYgLT4gSnVuXG4gICAgICB8IDcgLT4gSnVsXG4gICAgICB8IDggLT4gQXVnXG4gICAgICB8IDkgLT4gU2VwXG4gICAgICB8IDEwIC0+IE9jdFxuICAgICAgfCAxMSAtPiBOb3ZcbiAgICAgIHwgMTIgLT4gRGVjXG4gICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiTW9udGgub2ZfaW50X2V4biAlZFwiIGkgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIHRyeSBTb21lIChvZl9pbnRfZXhuIGkpIHdpdGhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcblxuICAgIGxldCB0b19pbnQgKHQgOiB0KSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgSmFuIC0+IDFcbiAgICAgIHwgRmViIC0+IDJcbiAgICAgIHwgTWFyIC0+IDNcbiAgICAgIHwgQXByIC0+IDRcbiAgICAgIHwgTWF5IC0+IDVcbiAgICAgIHwgSnVuIC0+IDZcbiAgICAgIHwgSnVsIC0+IDdcbiAgICAgIHwgQXVnIC0+IDhcbiAgICAgIHwgU2VwIC0+IDlcbiAgICAgIHwgT2N0IC0+IDEwXG4gICAgICB8IE5vdiAtPiAxMVxuICAgICAgfCBEZWMgLT4gMTJcbiAgICA7O1xuXG4gICAgbGV0IHRvX2JpbmFibGUgdCA9IHRvX2ludCB0IC0gMVxuICAgIGxldCBvZl9iaW5hYmxlIGkgPSBvZl9pbnRfZXhuIChpICsgMSlcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIEludC5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IG51bV9tb250aHMgPSAxMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIGxldCBhbGwgPSBbIEphbjsgRmViOyBNYXI7IEFwcjsgTWF5OyBKdW47IEp1bDsgQXVnOyBTZXA7IE9jdDsgTm92OyBEZWMgXVxuICBsZXQgaGFzaCA9IHRvX2ludFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIChcbiAgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgZW5kKSA6XG4gICAgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBtb250aHMgaW4gc2V4cHMgb2YgTWFwcyBhbmQgU2V0cyB3ZXJlIHJhdyBpbnRzLiAgRnJvbSAxMDguMDdcbiAgICAgICB0aHJvdWdoIDEwOS4xMywgdGhlIG91dHB1dCBmb3JtYXQgcmVtYWluZWQgcmF3IGFzIGJlZm9yZSwgYnV0IGJvdGggdGhlIHJhdyBhbmRcbiAgICAgICBwcmV0dHkgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzXG4gICAgICAgY2hhbmdlZCBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZVxuICAgICAgIG1vc3QgcHJvZ3JhbXMgYXJlIGJleW9uZCAxMDkuMTQsIHdlIHdpbGwgc3dpdGNoIHRoZSBpbnB1dCBmb3JtYXQgdG8gbm8gbG9uZ2VyIGFjY2VwdFxuICAgICAgIHJhdy4gKilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gSW50LnRfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICB8IFNvbWUgaSAtPiBvZl9pbnRfZXhuIChpICsgMSlcbiAgICAgIHwgTm9uZSAtPiBULnRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG4oKiBSZXBsYWNlIHRoZSBvdmVycmlkZW4gc2V4cCBjb252ZXJ0ZXJzIGZyb20gW0NvbXBhcmFibGUuTWFrZV9iaW5hYmxlXSB3aXRoIHRoZSBvcmRpbmFyeVxuICAgc3ltYm9saWMgY29udmVydGVycy4gKilcbmxldCBzZXhwX29mX3QgPSBULnNleHBfb2ZfdFxubGV0IHRfb2Zfc2V4cCA9IFQudF9vZl9zZXhwXG5sZXQgc2hpZnQgdCBpID0gb2ZfaW50X2V4biAoMSArIEludC4oICUgKSAodG9faW50IHQgLSAxICsgaSkgbnVtX21vbnRocylcblxubGV0IGFsbF9zdHJpbmdzID1cbiAgbGF6eVxuICAgIChBcnJheS5vZl9saXN0IChMaXN0Lm1hcCBhbGwgfmY6KGZ1biB2YXJpYW50IC0+IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgdmFyaWFudCkpKSlcbjs7XG5cbmxldCB0b19zdHJpbmcgKHQgOiB0KSA9XG4gIGxldCBhbGxfc3RyaW5ncyA9IExhenkuZm9yY2UgYWxsX3N0cmluZ3MgaW5cbiAgYWxsX3N0cmluZ3MuKHRvX2ludCB0IC0gMSlcbjs7XG5cbmxldCBvZl9zdHJpbmcgPVxuICBsZXQgdGFibGUgPVxuICAgIGxhenlcbiAgICAgIChsZXQgbW9kdWxlIFQgPSBTdHJpbmcuVGFibGUgaW5cbiAgICAgICBsZXQgdGFibGUgPSBULmNyZWF0ZSB+c2l6ZTpudW1fbW9udGhzICgpIGluXG4gICAgICAgQXJyYXkuaXRlcmkgKExhenkuZm9yY2UgYWxsX3N0cmluZ3MpIH5mOihmdW4gaSBzIC0+XG4gICAgICAgICBsZXQgdCA9IG9mX2ludF9leG4gKGkgKyAxKSBpblxuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTpzIH5kYXRhOnQ7XG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcubG93ZXJjYXNlIHMpIH5kYXRhOnQ7XG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcudXBwZXJjYXNlIHMpIH5kYXRhOnQpO1xuICAgICAgIHRhYmxlKVxuICBpblxuICBmdW4gc3RyIC0+XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIChMYXp5LmZvcmNlIHRhYmxlKSBzdHIgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiSW52YWxpZCBtb250aDogJXNcIiBzdHIgKClcbjs7XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBtb250aCA9IHQgPVxuICAgIHwgSmFuXG4gICAgfCBGZWJcbiAgICB8IE1hclxuICAgIHwgQXByXG4gICAgfCBNYXlcbiAgICB8IEp1blxuICAgIHwgSnVsXG4gICAgfCBBdWdcbiAgICB8IFNlcFxuICAgIHwgT2N0XG4gICAgfCBOb3ZcbiAgICB8IERlY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5cbmxldCBpc19sZWFwX3llYXIgfnllYXIgPSAoeWVhciBtb2QgNCA9IDAgJiYgbm90ICh5ZWFyIG1vZCAxMDAgPSAwKSkgfHwgeWVhciBtb2QgNDAwID0gMFxuXG4oKiBDcmVhdGUgYSBsb2NhbCBwcml2YXRlIGRhdGUgdHlwZSB0byBlbnN1cmUgdGhhdCBhbGwgZGF0ZXMgYXJlIGNyZWF0ZWQgdmlhXG4gICBEYXRlLmNyZWF0ZV9leG4uXG4qKVxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb21wYXJhYmxlID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICB2YWwgY3JlYXRlX2V4biA6IHk6aW50IC0+IG06TW9udGguU3RhYmxlLlYxLnQgLT4gZDppbnQgLT4gdFxuICAgICAgICB2YWwgeWVhciA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBtb250aCA6IHQgLT4gTW9udGguU3RhYmxlLlYxLnRcbiAgICAgICAgdmFsIGRheSA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBkYXlzX2luX21vbnRoIDogeWVhcjppbnQgLT4gbW9udGg6TW9udGgudCAtPiBpbnRcbiAgICAgICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgICAgICAgdmFsIG9mX2ludF91bmNoZWNrZWQgOiBpbnQgLT4gdFxuICAgICAgICB2YWwgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5IDogdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgICgqIFdlIHVzZWQgdG8gc3RvcmUgZGF0ZXMgbGlrZSB0aGlzOlxuICAgICAgICAgICB0eXBlIHQgPSB7IHk6IGludDsgbTogTW9udGguU3RhYmxlLlYxLnQ7IGQ6IGludDsgfVxuICAgICAgICAgICBJbiB0aGUgYmVsb3cgd2UgbWFrZSBzdXJlIHRoYXQgdGhlIGJpbl9pbyByZXByZXNlbnRhdGlvbiBpc1xuICAgICAgICAgICBpZGVudGljYWwgKGFuZCB0aGUgc3RhYmxlIHVuaXQgdGVzdHMgY2hlY2sgdGhpcylcblxuICAgICAgICAgICBJbiBtZW1vcnkgd2UgdXNlIHRoZSBmb2xsb3dpbmcgbXVjaCBtb3JlIGNvbXBhY3QgcmVwcmVzZW50YXRpb246XG4gICAgICAgICAgIDIgYnl0ZXMgeWVhclxuICAgICAgICAgICAxIGJ5dGUgbW9udGhcbiAgICAgICAgICAgMSBieXRlIGRheVxuXG4gICAgICAgICAgIGFsbCBwYWNrZWQgaW50byBhIHNpbmdsZSBpbW1lZGlhdGUgaW50IChzbyBmcm9tIDQgd29yZHMgZG93biB0byAxKS5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZSB0ID0gaW50XG4gICAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgICAgY29tcGFyZVxuICAgICAgICAsIGVxdWFsXG4gICAgICAgICwgaGFzaFxuICAgICAgICAsIHR5cGVyZXBcbiAgICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZWUzZTAtNDkwYS0xMWU2LWExMGEtYTM3MzRmNzMzNTY2XCJcbiAgICAgICAgLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBsZXQgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgKCogY3JlYXRlX2V4bidzIHZhbGlkYXRpb24gbWFrZSBzdXJlIHRoYXQgZWFjaCB2YWx1ZSBmaXRzICopXG4gICAgICAgICAgKHllYXIgbHNsIDE2KSBsb3IgKE1vbnRoLnRvX2ludCBtb250aCBsc2wgOCkgbG9yIGRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9pbnRfdW5jaGVja2VkIHQgPSB0XG4gICAgICAgIGxldCB5ZWFyIHQgPSB0IGxzciAxNlxuICAgICAgICBsZXQgbW9udGggdCA9IE1vbnRoLm9mX2ludF9leG4gKCh0IGxzciA4KSBsYW5kIDB4ZmYpXG4gICAgICAgIGxldCBkYXkgdCA9IHQgbGFuZCAweGZmXG5cbiAgICAgICAgbGV0IGRheXNfaW5fbW9udGggfnllYXIgfm1vbnRoID1cbiAgICAgICAgICBtYXRjaCAobW9udGggOiBNb250aC50KSB3aXRoXG4gICAgICAgICAgfCBKYW4gfCBNYXIgfCBNYXkgfCBKdWwgfCBBdWcgfCBPY3QgfCBEZWMgLT4gMzFcbiAgICAgICAgICB8IEFwciB8IEp1biB8IFNlcCB8IE5vdiAtPiAzMFxuICAgICAgICAgIHwgRmViIC0+IGlmIGlzX2xlYXBfeWVhciB+eWVhciB0aGVuIDI5IGVsc2UgMjhcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSA9XG4gICAgICAgICAgKCogeWVhciwgbW9udGgsIGFuZCBkYXkgbmVlZCB0byBiZSBwYXNzZWQgYXMgcGFyYW1ldGVycyB0byBhdm9pZCBhbGxvY2F0aW5nXG4gICAgICAgICAgICAgYSBjbG9zdXJlIChzZWUgdW5pdCB0ZXN0IGJlbG93KSAqKVxuICAgICAgICAgIGxldCBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IG1zZyA9XG4gICAgICAgICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgICAgICAgIVwiRGF0ZS5jcmVhdGVfZXhuIH55OiVkIH5tOiV7TW9udGh9IH5kOiVkIGVycm9yOiAlc1wiXG4gICAgICAgICAgICAgIHllYXJcbiAgICAgICAgICAgICAgbW9udGhcbiAgICAgICAgICAgICAgZGF5XG4gICAgICAgICAgICAgIG1zZ1xuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgeWVhciA8IDAgfHwgeWVhciA+IDk5OTlcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgXCJ5ZWFyIG91dHNpZGUgb2YgWzAuLjk5OTldXCI7XG4gICAgICAgICAgaWYgZGF5IDw9IDAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwiZGF5IDw9IDBcIjtcbiAgICAgICAgICBsZXQgZGF5c19pbl9tb250aCA9IGRheXNfaW5fbW9udGggfnllYXIgfm1vbnRoIGluXG4gICAgICAgICAgaWYgZGF5ID4gZGF5c19pbl9tb250aFxuICAgICAgICAgIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSAoc3ByaW50ZiBcIiVkIGRheSBtb250aCB2aW9sYXRpb25cIiBkYXlzX2luX21vbnRoKTtcbiAgICAgICAgICBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgKCogV2UgZG9uJ3QgdXNlIE1ha2VfYmluYWJsZSBoZXJlLCBiZWNhdXNlIHRoYXQgd291bGQgZ28gdmlhIGFuIGltbWVkaWF0ZVxuICAgICAgICAgICB0dXBsZSBvciByZWNvcmQuICBUaGF0IGlzIGV4YWN0bHkgdGhlIDMyIGJ5dGVzIHdlIHdvcmtlZCBzbyBoYXJkIGFib3ZlIHRvXG4gICAgICAgICAgIGdldCByaWQgb2YuICBXZSBhbHNvIGRvbid0IHdhbnQgdG8ganVzdCBiaW5faW8gdGhlIGludGVnZXIgZGlyZWN0bHlcbiAgICAgICAgICAgYmVjYXVzZSB0aGF0IHdvdWxkIG1lYW4gYSBuZXcgYmluX2lvIGZvcm1hdC4gICopXG5cbiAgICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLlN0YWJsZS5WMS5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGxldCBkYXkgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgPVxuICAgICAgICAgICgqIF9fYmluX3JlYWRfdCBpcyBvbmx5IG5lZWRlZCBmb3IgdmFyaWFudHMgKilcbiAgICAgICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiRGF0ZS50XCIgIXBvc19yZWZcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3NpemVfdCB0ID1cbiAgICAgICAgICBJbnQuYmluX3NpemVfdCAoeWVhciB0KSArIE1vbnRoLmJpbl9zaXplX3QgKG1vbnRoIHQpICsgSW50LmJpbl9zaXplX3QgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgICBsZXQgcG9zID0gSW50LmJpbl93cml0ZV90IGJ1ZiB+cG9zICh5ZWFyIHQpIGluXG4gICAgICAgICAgbGV0IHBvcyA9IE1vbnRoLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChtb250aCB0KSBpblxuICAgICAgICAgIEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoZGF5IHQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICAgICAgbGV0IGJpbl90ID1cbiAgICAgICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICAgICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX2ludCB0ID0gdFxuICAgICAgICBsZXQgb2ZfaW50X2V4biBuID0gY3JlYXRlX2V4biB+eTooeWVhciBuKSB+bToobW9udGggbikgfmQ6KGRheSBuKVxuICAgICAgICBsZXQgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5ID0gMFxuXG4gICAgICAgIGxldCV0ZXN0IFwiaW52YWxpZCB2YWx1ZVwiID1cbiAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIDogdCAtPiBvZl9pbnRfZXhuIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcblxuXG4gICAgICAoKiogWVlZWS1NTS1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNCAnLSc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjUgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDcgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo4IChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWRcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgOCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo0IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgKCoqIE1NL0REL1lZWVkgKilcbiAgICAgIGxldCB0b19zdHJpbmdfYW1lcmljYW4gdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgMTAgaW5cbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgMiAnLyc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICcvJztcbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6NiAoeWVhciB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV95ZWFyNCBzdHIgcG9zID0gcmVhZF80X2RpZ2l0X2ludCBzdHIgfnBvc1xuICAgICAgbGV0IHBhcnNlX21vbnRoIHN0ciBwb3MgPSBNb250aC5vZl9pbnRfZXhuIChyZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zKVxuICAgICAgbGV0IHBhcnNlX2RheSBzdHIgcG9zID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvc1xuXG4gICAgICAoKiogWVlZWU1NREQgKilcbiAgICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyBzdHIgfnBvcyA9XG4gICAgICAgIGlmIHBvcyArIDggPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgICB0aGVuIGludmFsaWRfYXJnIFwiRGF0ZS5vZl9zdHJpbmdfaXNvODYwMV9iYXNpYzogcG9zICsgOCA+IHN0cmluZyBsZW5ndGhcIjtcbiAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzdHIgcG9zKVxuICAgICAgICAgIH5tOihwYXJzZV9tb250aCBzdHIgKHBvcyArIDQpKVxuICAgICAgICAgIH5kOihwYXJzZV9kYXkgc3RyIChwb3MgKyA2KSlcbiAgICAgIDs7XG5cbiAgICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYSBtYXRlcmlhbCB3YXksIGJlIHN1cmUgeW91XG4gICAgICAgICB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2Ygd29ya2luZyBpbiBTdGFibGUgKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIGxldCBpbnZhbGlkICgpID0gZmFpbHdpdGggKFwiaW52YWxpZCBkYXRlOiBcIiBeIHMpIGluXG4gICAgICAgIGxldCBlbnN1cmUgYiA9IGlmIG5vdCBiIHRoZW4gaW52YWxpZCAoKSBpblxuICAgICAgICBsZXQgbW9udGhfbnVtIH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICBjcmVhdGVfZXhuIH55OihwYXJzZV95ZWFyNCBzIHllYXIpIH5tOihwYXJzZV9tb250aCBzIG1vbnRoKSB+ZDoocGFyc2VfZGF5IHMgZGF5KVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9udGhfYWJydiB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgICAgfnk6KHBhcnNlX3llYXI0IHMgeWVhcilcbiAgICAgICAgICAgIH5tOihNb250aC5vZl9zdHJpbmcgKFN0cmluZy5zdWIgcyB+cG9zOm1vbnRoIH5sZW46MykpXG4gICAgICAgICAgICB+ZDoocGFyc2VfZGF5IHMgZGF5KVxuICAgICAgICBpblxuICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcyAnLydcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHksIG0sIGQgPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicvJyB3aXRoXG4gICAgICAgICAgICB8IFsgYTsgYjsgYyBdIC0+XG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggYSA9IDQgdGhlbiBhLCBiLCBjICgqIHkvbS9kICopIGVsc2UgYywgYSwgYiAoKiBtL2QveSAqKVxuICAgICAgICAgICAgfCBfIC0+IGludmFsaWQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB5ZWFyID0gSW50Lm9mX3N0cmluZyB5IGluXG4gICAgICAgICAgbGV0IHllYXIgPVxuICAgICAgICAgICAgaWYgeWVhciA+PSAxMDAgdGhlbiB5ZWFyIGVsc2UgaWYgeWVhciA8IDc1IHRoZW4gMjAwMCArIHllYXIgZWxzZSAxOTAwICsgeWVhclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1vbnRoID0gTW9udGgub2ZfaW50X2V4biAoSW50Lm9mX3N0cmluZyBtKSBpblxuICAgICAgICAgIGxldCBkYXkgPSBJbnQub2Zfc3RyaW5nIGQgaW5cbiAgICAgICAgICBjcmVhdGVfZXhuIH55OnllYXIgfm06bW9udGggfmQ6ZGF5KVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBzICctJ1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiB5eXl5LW1tLWRkICopXG4gICAgICAgICAgZW5zdXJlIChTdHJpbmcubGVuZ3RoIHMgPSAxMCAmJiBDaGFyLiggPSApIHMuWzRdICctJyAmJiBDaGFyLiggPSApIHMuWzddICctJyk7XG4gICAgICAgICAgbW9udGhfbnVtIH55ZWFyOjAgfm1vbnRoOjUgfmRheTo4KVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBzICcgJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLlsyXSAnICcgJiYgQ2hhci4oID0gKSBzLls2XSAnICdcbiAgICAgICAgICB0aGVuICgqIEREIE1NTSBZWVlZICopXG4gICAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6MCB+bW9udGg6MyB+eWVhcjo3XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBZWVlZIE1NTSBERCAqKVxuICAgICAgICAgICAgZW5zdXJlIChTdHJpbmcubGVuZ3RoIHMgPSAxMSAmJiBDaGFyLiggPSApIHMuWzRdICcgJyAmJiBDaGFyLiggPSApIHMuWzhdICcgJyk7XG4gICAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6OSB+bW9udGg6NSB+eWVhcjowKVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDlcbiAgICAgICAgdGhlbiAoKiBERE1NTVlZWVkgKilcbiAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6MCB+bW9udGg6MiB+eWVhcjo1XG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBzID0gOFxuICAgICAgICB0aGVuICgqIGFzc3VtZSBZWVlZTU1ERCAqKVxuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo0IH5kYXk6NlxuICAgICAgICBlbHNlIGludmFsaWQgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIkRhdGUub2Zfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9sZF9kYXRlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgIHsgeSA6IGludFxuICAgICAgICAgICAgOyBtIDogaW50XG4gICAgICAgICAgICA7IGQgOiBpbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgICAgbGV0IHRvX2RhdGUgdCA9IFQuY3JlYXRlX2V4biB+eTp0Lnkgfm06KE1vbnRoLm9mX2ludF9leG4gdC5tKSB+ZDp0LmRcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwLkF0b20gcyAtPiBvZl9zdHJpbmcgc1xuICAgICAgICAgIHwgU2V4cC5MaXN0IF8gYXMgc2V4cCAtPiBPbGRfZGF0ZS50b19kYXRlIChPbGRfZGF0ZS50X29mX3NleHAgc2V4cClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHMgPVxuICAgICAgICAgIHRyeSB0X29mX3NleHAgcyB3aXRoXG4gICAgICAgICAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZXhuIC0+IHJhaXNlIGV4blxuICAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBhIC0+IG9mX3NleHBfZXJyb3IgYSBzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICAgIGxldCBvcGVuIFNleHBsaWIgaW5cbiAgICAgICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgICAgICAoU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXIgOiB0IFNleHBfZ3JhbW1hci50KVxuICAgICAgICAgICAgfmtleTpTZXhwX2dyYW1tYXIudHlwZV9uYW1lX3RhZ1xuICAgICAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5EYXRlLnRcIilcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFNleHBhYmxlXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBXaXRob3V0X2NvbXBhcmFibGVcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgIGJpbl9pb1xuICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODI2YTNlNzktMzMyMS00NTFhLTk3MDctZWQ2YzAzYjg0ZTJmXCJcbiAgICAgICwgY29tcGFyZVxuICAgICAgLCBoYXNoXG4gICAgICAsIHR5cGVyZXBcbiAgICAgICwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBub25lID0gVjEuKHRvX2ludCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgXyA9IHRydWVcbiAgICAgIGxldCBzb21lIHQgPSBWMS50b19pbnQgdFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IFYxLm9mX2ludF91bmNoZWNrZWRcbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIkRhdGUuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuY2hlY2tlZF92YWx1ZSB0KVxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMS5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYxLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjEudCBPcHRpb24udF1cblxuICAgICAgbGV0IG9mX2ludF9leG4gdCA9XG4gICAgICAgICgqIERvbid0IGp1c3QgYmxpbmRseSBjb252ZXJ0IGZyb20gYW4gaW50ZWdlci4gVXNlIFtWMS5vZl9pbnRfZXhuXSB0byB2YWxpZGF0ZSB0aGVcbiAgICAgICAgICAgZGF0ZS4gKilcbiAgICAgICAgaWYgdCA9IG5vbmUgdGhlbiBub25lIGVsc2Ugc29tZSAoVjEub2ZfaW50X2V4biB0KVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludCB0ID0gdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhYmxlID0gU3RhYmxlLlYxLldpdGhvdXRfY29tcGFyYWJsZVxuaW5jbHVkZSBXaXRob3V0X2NvbXBhcmFibGVcbm1vZHVsZSBDID0gQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoV2l0aG91dF9jb21wYXJhYmxlKVxuaW5jbHVkZSBDXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgKEMgOiBDb21wYXJhYmxlLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZVxuICAgIGluY2x1ZGUgQmluYWJsZVxuXG4gICAgbGV0IGNvbXBhcmUgKGEgOiB0KSAoYiA6IHQpID0gY29tcGFyZSBhIGJcbiAgZW5kKSA6XG4gICAgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuRGF0ZVwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbmxldCB1bml4X2Vwb2NoID0gY3JlYXRlX2V4biB+eToxOTcwIH5tOkphbiB+ZDoxXG5cbigqIFRoZSBEYXlzIG1vZHVsZSBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbnMgdGhhdCBpbnZvbHZlIGFkZGluZyBvciByZW1vdmluZyBhIGtub3duIG51bWJlclxuICAgb2YgZGF5cyBmcm9tIGEgZGF0ZS4gIEludGVybmFsbHkgdGhlIGRhdGUgaXMgdHJhbnNsYXRlZCB0byBhIGRheSBudW1iZXIsIHRoZSBkYXlzIGFyZVxuICAgYWRkZWQsIGFuZCB0aGUgbmV3IGRhdGUgaXMgcmV0dXJuZWQuICBUaG9zZSBpbnRlcmVzdGVkIGluIHRoZSBtYXRoIGNhbiByZWFkOlxuXG4gICBodHRwOi8vYWxjb3IuY29uY29yZGlhLmNhL35ncGthdGNoL2dkYXRlLW1ldGhvZC5odG1sXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgYXJlIGluIGxpYl90ZXN0L3RpbWVfdGVzdC5tbFxuKilcbm1vZHVsZSBEYXlzIDogc2lnXG4gIHR5cGUgZGF0ZSA9IHRcbiAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cblxuICB2YWwgb2ZfZGF0ZSA6IGRhdGUgLT4gdFxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gZGF0ZVxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGFkZF9kYXlzIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgdW5peF9lcG9jaCA6IHRcbmVuZFxud2l0aCB0eXBlIGRhdGUgOj0gdCA9IHN0cnVjdFxuICBvcGVuIEludFxuXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBvZl95ZWFyIHkgPSAoMzY1ICogeSkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApXG5cbiAgbGV0IG9mX2RhdGUgZGF0ZSA9XG4gICAgbGV0IG0gPSAoTW9udGgudG9faW50IChtb250aCBkYXRlKSArIDkpICUgMTIgaW5cbiAgICBsZXQgeSA9IHllYXIgZGF0ZSAtIChtIC8gMTApIGluXG4gICAgb2ZfeWVhciB5ICsgKCgobSAqIDMwNikgKyA1KSAvIDEwKSArIChkYXkgZGF0ZSAtIDEpXG4gIDs7XG5cbiAgbGV0IGNfMTBfMDAwID0gSW50NjMub2ZfaW50IDEwXzAwMFxuICBsZXQgY18xNF83ODAgPSBJbnQ2My5vZl9pbnQgMTRfNzgwXG4gIGxldCBjXzNfNjUyXzQyNSA9IEludDYzLm9mX2ludCAzXzY1Ml80MjVcblxuICBsZXQgdG9fZGF0ZSBkYXlzID1cbiAgICBsZXQgeSA9XG4gICAgICBsZXQgb3BlbiBJbnQ2MyBpblxuICAgICAgdG9faW50X2V4biAoKChjXzEwXzAwMCAqIG9mX2ludCBkYXlzKSArIGNfMTRfNzgwKSAvIGNfM182NTJfNDI1KVxuICAgIGluXG4gICAgbGV0IGRkZCA9IGRheXMgLSBvZl95ZWFyIHkgaW5cbiAgICBsZXQgeSwgZGRkID1cbiAgICAgIGlmIGRkZCA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgeSA9IHkgLSAxIGluXG4gICAgICAgIHksIGRheXMgLSBvZl95ZWFyIHkpXG4gICAgICBlbHNlIHksIGRkZFxuICAgIGluXG4gICAgbGV0IG1pID0gKCgxMDAgKiBkZGQpICsgNTIpIC8gM18wNjAgaW5cbiAgICBsZXQgeSA9IHkgKyAoKG1pICsgMikgLyAxMikgaW5cbiAgICBsZXQgbSA9ICgobWkgKyAyKSAlIDEyKSArIDEgaW5cbiAgICBsZXQgZCA9IGRkZCAtICgoKG1pICogMzA2KSArIDUpIC8gMTApICsgMSBpblxuICAgIGNyZWF0ZV9leG4gfnkgfm06KE1vbnRoLm9mX2ludF9leG4gbSkgfmRcbiAgOztcblxuICBsZXQgdW5peF9lcG9jaCA9IG9mX2RhdGUgdW5peF9lcG9jaFxuICBsZXQgYWRkX2RheXMgdCBkYXlzID0gdCArIGRheXNcbiAgbGV0IGRpZmYgdDEgdDIgPSB0MSAtIHQyXG5lbmRcblxubGV0IGFkZF9kYXlzIHQgZGF5cyA9IERheXMudG9fZGF0ZSAoRGF5cy5hZGRfZGF5cyAoRGF5cy5vZl9kYXRlIHQpIGRheXMpXG5sZXQgZGlmZiB0MSB0MiA9IERheXMuZGlmZiAoRGF5cy5vZl9kYXRlIHQxKSAoRGF5cy5vZl9kYXRlIHQyKVxuXG5sZXQgYWRkX21vbnRocyB0IG4gPVxuICBsZXQgdG90YWxfbW9udGhzID0gTW9udGgudG9faW50IChtb250aCB0KSArIG4gaW5cbiAgbGV0IHkgPSB5ZWFyIHQgKyAodG90YWxfbW9udGhzIC8lIDEyKSBpblxuICBsZXQgbSA9IHRvdGFsX21vbnRocyAlIDEyIGluXG4gICgqIGNvcnJlY3QgZm9yIGRlY2VtYmVyICopXG4gIGxldCB5LCBtID0gaWYgSW50LiggPSApIG0gMCB0aGVuIHkgLSAxLCBtICsgMTIgZWxzZSB5LCBtIGluXG4gIGxldCBtID0gTW9udGgub2ZfaW50X2V4biBtIGluXG4gICgqIGhhbmRsZSBpbnZhbGlkIGRhdGVzIGZvciBtb250aHMgd2l0aCBmZXdlciBudW1iZXIgb2YgZGF5cyAqKVxuICBsZXQgcmVjIHRyeV9jcmVhdGUgZCA9XG4gICAgdHJ5IGNyZWF0ZV9leG4gfnkgfm0gfmQgd2l0aFxuICAgIHwgX2V4biAtPlxuICAgICAgYXNzZXJ0IChJbnQuKCA+PSApIGQgMSk7XG4gICAgICB0cnlfY3JlYXRlIChkIC0gMSlcbiAgaW5cbiAgdHJ5X2NyZWF0ZSAoZGF5IHQpXG47O1xuXG5sZXQgYWRkX3llYXJzIHQgbiA9IGFkZF9tb250aHMgdCAobiAqIDEyKVxuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RldGVybWluYXRpb25fb2ZfdGhlX2RheV9vZl90aGVfd2VlayNQdXJlbHlfbWF0aGVtYXRpY2FsX21ldGhvZHNcblxuICAgbm90ZTogdW5pdCB0ZXN0cyBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5sZXQgZGF5X29mX3dlZWsgPVxuICBsZXQgdGFibGUgPSBbfCAwOyAzOyAyOyA1OyAwOyAzOyA1OyAxOyA0OyA2OyAyOyA0IHxdIGluXG4gIGZ1biB0IC0+XG4gICAgbGV0IG0gPSBNb250aC50b19pbnQgKG1vbnRoIHQpIGluXG4gICAgbGV0IHkgPSBpZiBJbnQuKCA8ICkgbSAzIHRoZW4geWVhciB0IC0gMSBlbHNlIHllYXIgdCBpblxuICAgIERheV9vZl93ZWVrLm9mX2ludF9leG5cbiAgICAgICgoeSArICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMCkgKyB0YWJsZS4obSAtIDEpICsgZGF5IHQpICUgNylcbjs7XG5cbigqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3JkaW5hbF9kYXRlICopXG5sZXQgbm9uX2xlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA1OTsgOTA7IDEyMDsgMTUxOyAxODE7IDIxMjsgMjQzOyAyNzM7IDMwNDsgMzM0IHxdXG5sZXQgbGVhcF95ZWFyX3RhYmxlID0gW3wgMDsgMzE7IDYwOyA5MTsgMTIxOyAxNTI7IDE4MjsgMjEzOyAyNDQ7IDI3NDsgMzA1OyAzMzUgfF1cblxubGV0IG9yZGluYWxfZGF0ZSB0ID1cbiAgbGV0IHRhYmxlID1cbiAgICBpZiBpc19sZWFwX3llYXIgfnllYXI6KHllYXIgdCkgdGhlbiBsZWFwX3llYXJfdGFibGUgZWxzZSBub25fbGVhcF95ZWFyX3RhYmxlXG4gIGluXG4gIGxldCBvZmZzZXQgPSB0YWJsZS4oTW9udGgudG9faW50IChtb250aCB0KSAtIDEpIGluXG4gIGRheSB0ICsgb2Zmc2V0XG47O1xuXG5sZXQgbGFzdF93ZWVrX29mX3llYXIgeSA9XG4gIGxldCBmaXJzdF9vZl95ZWFyID0gY3JlYXRlX2V4biB+eSB+bTpKYW4gfmQ6MSBpblxuICBsZXQgaXMgdCBkYXkgPSBEYXlfb2Zfd2Vlay5lcXVhbCAoZGF5X29mX3dlZWsgdCkgZGF5IGluXG4gIGlmIGlzIGZpcnN0X29mX3llYXIgVGh1IHx8IChpc19sZWFwX3llYXIgfnllYXI6eSAmJiBpcyBmaXJzdF9vZl95ZWFyIFdlZClcbiAgdGhlbiA1M1xuICBlbHNlIDUyXG47O1xuXG4oKiBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlIG9yIElTTyA4NjAxIGZvciB0aGUgZGV0YWlscyBvZiB0aGlzXG4gICBhbGdvcml0aG0uXG5cbiAgIFVzZXMgYSBbfmZdIGFyZ3VtZW50IHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNhbGxlZCBieSBbd2Vla19udW1iZXJdLlxuKilcbmxldCBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mID1cbiAgbGV0IG9yZGluYWwgPSBvcmRpbmFsX2RhdGUgdCBpblxuICBsZXQgd2Vla2RheSA9IERheV9vZl93ZWVrLmlzb184NjAxX3dlZWtkYXlfbnVtYmVyIChkYXlfb2Zfd2VlayB0KSBpblxuICAoKiBbb3JkaW5hbCAtIHdlZWtkYXkgKyA0XSBpcyB0aGUgb3JkaW5hbCBvZiB0aGlzIHdlZWsncyBUaHVyc2RheSwgdGhlbiAobiArIDYpIC8gNyBpc1xuICAgICBkaXZpc2lvbiBieSA3IHJvdW5kaW5nIHVwICopXG4gIGxldCB3ZWVrID0gKG9yZGluYWwgLSB3ZWVrZGF5ICsgMTApIC8gNyBpblxuICBsZXQgeWVhciA9IHllYXIgdCBpblxuICBpZiBJbnQuKCA8ICkgd2VlayAxXG4gIHRoZW4gZiB+d2VlazoobGFzdF93ZWVrX29mX3llYXIgKHllYXIgLSAxKSkgfnllYXI6KHllYXIgLSAxKVxuICBlbHNlIGlmIEludC4oID4gKSB3ZWVrIChsYXN0X3dlZWtfb2ZfeWVhciB5ZWFyKVxuICB0aGVuIGYgfndlZWs6MSB+eWVhcjooeWVhciArIDEpXG4gIGVsc2UgZiB+d2VlayB+eWVhclxuOztcblxubGV0IHdlZWtfbnVtYmVyX2FuZF95ZWFyIHQgPSBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mOihmdW4gfndlZWsgfnllYXIgLT4gd2VlaywgeWVhcilcbmxldCB3ZWVrX251bWJlciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyOl8gLT4gd2VlaylcbmxldCBpc193ZWVrZW5kIHQgPSBEYXlfb2Zfd2Vlay5pc19zdW5fb3Jfc2F0IChkYXlfb2Zfd2VlayB0KVxubGV0IGlzX3dlZWtkYXkgdCA9IG5vdCAoaXNfd2Vla2VuZCB0KVxubGV0IGlzX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID0gaXNfd2Vla2RheSB0ICYmIG5vdCAoaXNfaG9saWRheSB0KVxuXG5sZXQgcmVjIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyID1cbiAgaWYgdDEgPCB0MlxuICB0aGVuIC1kaWZmX3dlZWtlbmRfZGF5cyB0MiB0MVxuICBlbHNlIChcbiAgICAoKiBCYXNpYyBkYXRlIGRpZmYgKilcbiAgICBsZXQgZGlmZiA9IGRpZmYgdDEgdDIgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgU2F0dXJkYXkgLT4gU3VuZGF5IGNyb3NzaW5ncyAqKVxuICAgIGxldCBkMSA9IGRheV9vZl93ZWVrIHQxIGluXG4gICAgbGV0IGQyID0gZGF5X29mX3dlZWsgdDIgaW5cbiAgICBsZXQgbnVtX3NhdHN1bl9jcm9zc2luZ3MgPVxuICAgICAgaWYgSW50LiggPCApIChEYXlfb2Zfd2Vlay50b19pbnQgZDEpIChEYXlfb2Zfd2Vlay50b19pbnQgZDIpXG4gICAgICB0aGVuIDEgKyAoZGlmZiAvIDcpXG4gICAgICBlbHNlIGRpZmYgLyA3XG4gICAgaW5cbiAgICAobnVtX3NhdHN1bl9jcm9zc2luZ3MgKiAyKVxuICAgICsgKGlmIERheV9vZl93ZWVrLiggPSApIGQyIERheV9vZl93ZWVrLlN1biB0aGVuIDEgZWxzZSAwKVxuICAgICsgaWYgRGF5X29mX3dlZWsuKCA9ICkgZDEgRGF5X29mX3dlZWsuU3VuIHRoZW4gLTEgZWxzZSAwKVxuOztcblxubGV0IGRpZmZfd2Vla2RheXMgdDEgdDIgPSBkaWZmIHQxIHQyIC0gZGlmZl93ZWVrZW5kX2RheXMgdDEgdDJcblxubGV0IGFkZF9kYXlzX3NraXBwaW5nIHQgfnNraXAgbiA9XG4gIGxldCBzdGVwID0gaWYgSW50LiggPj0gKSBuIDAgdGhlbiAxIGVsc2UgLTEgaW5cbiAgbGV0IHJlYyBsb29wIHQgayA9XG4gICAgbGV0IHRfbmV4dCA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICAgIGlmIHNraXAgdCB0aGVuIGxvb3AgdF9uZXh0IGsgZWxzZSBpZiBJbnQuKCA9ICkgayAwIHRoZW4gdCBlbHNlIGxvb3AgdF9uZXh0IChrIC0gMSlcbiAgaW5cbiAgbG9vcCB0IChhYnMgbilcbjs7XG5cbmxldCByZWMgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcCB+Y29uZGl0aW9uID1cbiAgaWYgY29uZGl0aW9uIHQgdGhlbiB0IGVsc2UgZmlyc3RfZGF5X3NhdGlzZnlpbmcgKGFkZF9kYXlzIHQgc3RlcCkgfnN0ZXAgfmNvbmRpdGlvblxuOztcblxubGV0IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcCB+Y29uZGl0aW9uID1cbiAgbGV0IG5leHRfZGF5ID0gYWRkX2RheXMgdCBzdGVwIGluXG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIG5leHRfZGF5IH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBmb2xsb3dpbmdfd2Vla2RheSB0ID0gbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcHJldmlvdXNfd2Vla2RheSB0ID0gbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcm91bmRfZm9yd2FyZF90b193ZWVrZGF5IHQgPSBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcm91bmRfYmFja3dhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxuXG5sZXQgcm91bmRfZm9yd2FyZF90b19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9XG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOihpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkpXG47O1xuXG5sZXQgcm91bmRfYmFja3dhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IGFkZF93ZWVrZGF5cyB0IG4gPSBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwOmlzX3dlZWtlbmQgblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF93ZWVrZGF5c1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2ZvcndhcmQgdCBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0KSB+c2tpcDppc193ZWVrZW5kIG5cbjs7XG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfYmFja3dhcmQgdCBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXMgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgdCBuIH5za2lwOihmdW4gZCAtPiBpc193ZWVrZW5kIGQgfHwgaXNfaG9saWRheSBkKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2luX2RpcmVjdGlvbl9vZl9zdGVwID0gYWRkX2J1c2luZXNzX2RheXNcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2ZvcndhcmQgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IHQpIG4gfnNraXA6KGZ1biBkIC0+XG4gICAgbm90IChpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfYmFja3dhcmQgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGRhdGVzX2JldHdlZW4gfm1pbjp0MSB+bWF4OnQyID1cbiAgbGV0IHJlYyBsb29wIHQgbCA9IGlmIHQgPCB0MSB0aGVuIGwgZWxzZSBsb29wIChhZGRfZGF5cyB0ICgtMSkpICh0IDo6IGwpIGluXG4gIGxvb3AgdDIgW11cbjs7XG5cbmxldCB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCA9XG4gIGxldCBhbGxfZGF0ZXMgPSBkYXRlc19iZXR3ZWVuIH5taW4gfm1heCBpblxuICBPcHRpb24udmFsdWVfbWFwIChMaXN0LmhkIGFsbF9kYXRlcykgfmRlZmF1bHQ6W10gfmY6KGZ1biBmaXJzdF9kYXRlIC0+XG4gICAgKCogdG8gYXZvaWQgYSBzeXN0ZW0gY2FsbCBvbiBldmVyeSBkYXRlLCB3ZSBqdXN0IGdldCB0aGUgd2Vla2RheSBmb3IgdGhlIGZpcnN0XG4gICAgICAgZGF0ZSBhbmQgdXNlIGl0IHRvIGdldCBhbGwgdGhlIG90aGVyIHdlZWtkYXlzICopXG4gICAgbGV0IGZpcnN0X3dlZWtkYXkgPSBkYXlfb2Zfd2VlayBmaXJzdF9kYXRlIGluXG4gICAgbGV0IGRhdGVfYW5kX3dlZWtkYXlzID1cbiAgICAgIExpc3QubWFwaSBhbGxfZGF0ZXMgfmY6KGZ1biBpIGRhdGUgLT4gZGF0ZSwgRGF5X29mX3dlZWsuc2hpZnQgZmlyc3Rfd2Vla2RheSBpKVxuICAgIGluXG4gICAgTGlzdC5maWx0ZXJfbWFwIGRhdGVfYW5kX3dlZWtkYXlzIH5mOihmdW4gKGRhdGUsIHdlZWtkYXkpIC0+XG4gICAgICBpZiBEYXlfb2Zfd2Vlay5pc19zdW5fb3Jfc2F0IHdlZWtkYXkgdGhlbiBOb25lIGVsc2UgU29tZSBkYXRlKSlcbjs7XG5cbmxldCBidXNpbmVzc19kYXRlc19iZXR3ZWVuIH5taW4gfm1heCB+aXNfaG9saWRheSA9XG4gIHdlZWtkYXlzX2JldHdlZW4gfm1pbiB+bWF4IHw+IExpc3QuZmlsdGVyIH5mOihmdW4gZCAtPiBub3QgKGlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIgdCB+b246ZG93ID1cbiAgbGV0IGRvdyA9IERheV9vZl93ZWVrLnRvX2ludCBkb3cgaW5cbiAgbGV0IHRwbHVzMSA9IGFkZF9kYXlzIHQgMSBpblxuICBsZXQgY3VyID0gRGF5X29mX3dlZWsudG9faW50IChkYXlfb2Zfd2VlayB0cGx1czEpIGluXG4gIGxldCBkaWZmID0gKGRvdyArIDcgLSBjdXIpIG1vZCA3IGluXG4gIGFkZF9kYXlzIHRwbHVzMSBkaWZmXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgb3BlbiBRdWlja2NoZWNrXG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgZDEgZDIgPVxuICAgIGlmIGQxID4gZDJcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiRGF0ZS5nZW5fdW5pZm9ybV9pbmNsOiBib3VuZHMgYXJlIGNyb3NzZWRcIlxuICAgICAgICAgICAgfmxvd2VyX2JvdW5kOihkMSA6IHQpXG4gICAgICAgICAgICB+dXBwZXJfYm91bmQ6KGQyIDogdCldO1xuICAgIEdlbmVyYXRvci5tYXAgKEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGRpZmYgZDIgZDEpKSB+ZjooZnVuIGRheXMgLT4gYWRkX2RheXMgZDEgZGF5cylcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgZDEgZDIgPVxuICAgIEdlbmVyYXRvci53ZWlnaHRlZF91bmlvblxuICAgICAgWyAxLiwgR2VuZXJhdG9yLnJldHVybiBkMTsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDI7IDE4LiwgZ2VuX3VuaWZvcm1faW5jbCBkMSBkMiBdXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgKG9mX3N0cmluZyBcIjE5MDAtMDEtMDFcIikgKG9mX3N0cmluZyBcIjIxMDAtMDEtMDFcIilcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBPYnNlcnZlci5jcmVhdGUgKGZ1biB0IH5zaXplOl8gfmhhc2ggLT4gaGFzaF9mb2xkX3QgaGFzaCB0KVxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFNocmlua2VyLmVtcHR5ICgpXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JcbmxldCBnZW5faW5jbCA9IEZvcl9xdWlja2NoZWNrLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEZvcl9xdWlja2NoZWNrLmdlbl91bmlmb3JtX2luY2xcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBsZWFwX3llYXJfdGFibGUgPSBsZWFwX3llYXJfdGFibGVcbiAgbGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBub25fbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBvcmRpbmFsX2RhdGUgPSBvcmRpbmFsX2RhdGVcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUuT3B0aW9uXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcFxuICAgICAgKE9wdGlvbi5xdWlja2NoZWNrX2dlbmVyYXRvciBxdWlja2NoZWNrX2dlbmVyYXRvcilcbiAgICAgIH5mOm9mX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgKE9wdGlvbi5xdWlja2NoZWNrX3Nocmlua2VyIHF1aWNrY2hlY2tfc2hyaW5rZXIpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgICAgIH5mX2ludmVyc2U6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIub2ZfaGFzaFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIGVuZClcbiAgOztcblxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgc3VmZml4ZXMgY2hhciA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgWyBzcHJpbnRmIFwiJWNcIiBjaGFyOyBzcHJpbnRmIFwiJWNNXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk1cIiBjaGFyOyBzcHJpbnRmIFwiJWMuTS5cIiBjaGFyIF1cbiAgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihmdW4gc3VmZml4IC0+XG4gICAgWyBTdHJpbmcubG93ZXJjYXNlIHN1ZmZpeDsgU3RyaW5nLnVwcGVyY2FzZSBzdWZmaXggXSlcbjs7XG5cbmxldCBhbV9zdWZmaXhlcyA9IGxhenkgKHN1ZmZpeGVzICdBJylcbmxldCBwbV9zdWZmaXhlcyA9IGxhenkgKHN1ZmZpeGVzICdQJylcblxuKCogQXZvaWRzIHRoZSBhbGxvY2F0aW9uIHRoYXQgW0xpc3QuZmluZF0gd291bGQgZW50YWlsIGluIGJvdGggYm90aCB0aGUgY2xvc3VyZSBpbnB1dCBhbmRcbiAgIHRoZSBvcHRpb24gb3V0cHV0LiAqKVxubGV0IHJlYyBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXMgPVxuICBtYXRjaCBzdWZmaXhlcyB3aXRoXG4gIHwgc3VmZml4IDo6IHN1ZmZpeGVzIC0+XG4gICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeCB0aGVuIHN1ZmZpeCBlbHNlIGZpbmRfc3VmZml4IHN0cmluZyBzdWZmaXhlc1xuICB8IFtdIC0+IFwiXCJcbjs7XG5cbmxldCBoYXNfY29sb24gc3RyaW5nIHBvcyB+dW50aWwgPSBwb3MgPCB1bnRpbCAmJiBDaGFyLmVxdWFsICc6JyBzdHJpbmcuW3Bvc11cblxuKCogVGhpcyBmdW5jdGlvbiBkZWZpbmVzIHdoYXQgd2UgbWVhbnQgYnkgXCJkZWNpbWFsIHBvaW50XCIsIGJlY2F1c2UgaW4gc29tZSBzdHJpbmcgZm9ybWF0c1xuICAgaXQgbWVhbnMgJy4nIGFuZCBpbiBzb21lIGl0IGNhbiBiZSAnLicgb3IgJywnLiBUaGVyZSdzIG5vIHBhcnRpY3VsYXIgZGVtYW5kIGZvciBzdXBwb3J0XG4gICBmb3IgJywnLCBhbmQgdXNpbmcganVzdCAnLicgbGV0cyB1cyB1c2UgW0Zsb2F0Lm9mX3N0cmluZ10gZm9yIHRoZSBkZWNpbWFsIHN1YnN0cmluZ1xuICAgd2l0aG91dCBhbnkgc3Vic3RpdHV0aW9ucy4gKilcbmxldCBjaGFyX2lzX2RlY2ltYWxfcG9pbnQgc3RyaW5nIHBvcyA9IENoYXIuZXF1YWwgJy4nIHN0cmluZy5bcG9zXVxuXG5sZXQgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyBsZW4gPVxuICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgJyAnIHN0cmluZy5bbGVuIC0gMV0gdGhlbiBsZW4gLSAxIGVsc2UgbGVuXG47O1xuXG5sZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lLk9mZGF5OiBpbnZhbGlkIHN0cmluZ1wiIHN0cmluZyByZWFzb25dXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIHBvcyB+dW50aWwgPVxuICBsZXQgbm9uemVybyA9IHJlZiBmYWxzZSBpblxuICBmb3IgcG9zID0gcG9zIHRvIHVudGlsIC0gMSBkb1xuICAgIG1hdGNoIHN0cmluZy5bcG9zXSB3aXRoXG4gICAgfCAnMCcgfCAnXycgLT4gKClcbiAgICB8ICcxJyAuLiAnOScgLT4gbm9uemVybyA6PSB0cnVlXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICBzdHJpbmdcbiAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhbmQvb3IgdW5kZXJzY29yZXMgYWZ0ZXIgZGVjaW1hbCBwb2ludFwiXG4gIGRvbmU7XG4gICFub256ZXJvXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIHBvcyB+dW50aWwgPVxuICBsZXQgbm9uemVybyA9IHJlZiBmYWxzZSBpblxuICBmb3IgcG9zID0gcG9zIHRvIHVudGlsIC0gMSBkb1xuICAgIG1hdGNoIHN0cmluZy5bcG9zXSB3aXRoXG4gICAgfCAnMCcgLT4gKClcbiAgICB8ICcxJyAuLiAnOScgLT4gbm9uemVybyA6PSB0cnVlXG4gICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IHBhcnNlIHN0cmluZyB+ZiA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBsZXQgYW1fb3JfcG0sIHVudGlsID1cbiAgICAoKiBkaXNjcmltaW5hdGUgYW1vbmcgQU0gKDE6MzBhbSksIFBNICgxMjozMDowMCBQLk0uKSwgb3IgMjQtaHIgKDEzOjAwKS4gKilcbiAgICBtYXRjaFxuICAgICAgKCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgYW1fc3VmZml4ZXMpXG4gICAgICAsIGZpbmRfc3VmZml4IHN0cmluZyAoTGF6eS5mb3JjZSBwbV9zdWZmaXhlcykgKVxuICAgIHdpdGhcbiAgICB8IFwiXCIsIFwiXCIgLT4gYGhyXzI0LCBsZW5cbiAgICB8IGFtLCBcIlwiIC0+IGBocl9BTSwgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyAobGVuIC0gU3RyaW5nLmxlbmd0aCBhbSlcbiAgICB8IFwiXCIsIHBtIC0+IGBocl9QTSwgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyAobGVuIC0gU3RyaW5nLmxlbmd0aCBwbSlcbiAgICB8IF8sIF8gLT4gYGhyXzI0LCBhc3NlcnQgZmFsc2VcbiAgICAoKiBJbW1lZGlhdGVseSBhYm92ZSwgaXQgbWF5IHNlZW0gbm9uc2Vuc2ljYWwgdG8gd3JpdGUgW2Bocl8yNCwgYXNzZXJ0IGZhbHNlXSB3aGVuIHRoZVxuICAgICAgIFtgaHJfMjRdIGNhbiBuZXZlciBiZSByZXR1cm5lZC4gV2UgZG8gdGhpcyB0byBoZWxwIHRoZSBjb21waWxlciBmaWd1cmUgb3V0IG5ldmVyIHRvXG4gICAgICAgYWxsb2NhdGUgYSB0dXBsZSBpbiB0aGlzIGNvZGU6IHRoZSBbbGV0XSBwYXR0ZXJuIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZSBhbmQgZXZlcnlcbiAgICAgICBtYXRjaCBjbGF1c2UgaXMgc3ludGFjdGljYWxseSBhIHR1cGxlLiAqKVxuICBpblxuICBsZXQgcG9zID0gMCBpblxuICBsZXQgcG9zLCBociwgZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgPVxuICAgICgqIGUuZy4gXCIxOjAwXCIgb3IgXCIxOjAwOjAwXCIgKilcbiAgICBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAxKSB+dW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAyLCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyOjAwXCIgb3IgXCIxMjowMDowMFwiICopXG4gICAgZWxzZSBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAyKSB+dW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAzLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjFhbVwiOyBtdXN0IGhhdmUgQU0gb3IgUE0gKGNoZWNrZWQgYmVsb3cpICopXG4gICAgZWxzZSBpZiBwb3MgKyAxID0gdW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAxLCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMTJhbVwiOyBtdXN0IGhhdmUgQU0gb3IgUE0gKGNoZWNrZWQgYmVsb3cpICopXG4gICAgZWxzZSBpZiBwb3MgKyAyID0gdW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMDkzMFwiOyBtdXN0IG5vdCBoYXZlIHNlY29uZHMgKilcbiAgICBlbHNlIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kc1xuICBpblxuICBsZXQgcG9zLCBtaW4sIGV4cGVjdF9zZWNvbmRzID1cbiAgICBtYXRjaCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyB3aXRoXG4gICAgfCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiICopXG4gICAgICBwb3MsIDAsIGZhbHNlXG4gICAgfCAoYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMpIGFzIG1heWJlX3NlY29uZHMgLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAyKSB+dW50aWxcbiAgICAgIHRoZW5cbiAgICAgICAgKCBwb3MgKyAzXG4gICAgICAgICwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuICAgICAgICAsIG1hdGNoIG1heWJlX3NlY29uZHMgd2l0aFxuICAgICAgICB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+IHRydWVcbiAgICAgICAgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMgLT5cbiAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGVuZCBvZiBzdHJpbmcgYWZ0ZXIgbWludXRlc1wiIClcbiAgICAgICAgKCogZS5nLiBcIjEyOjAwXCIgKilcbiAgICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgICB0aGVuIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGNvbG9uIG9yIGFtL3BtIHN1ZmZpeCB3aXRoIG9wdGlvbmFsIHNwYWNlIGFmdGVyIG1pbnV0ZXNcIlxuICBpblxuICBsZXQgc2VjLCBzdWJzZWNfcG9zLCBzdWJzZWNfbGVuLCBzdWJzZWNfbm9uemVybyA9XG4gICAgbWF0Y2ggZXhwZWN0X3NlY29uZHMgd2l0aFxuICAgIHwgZmFsc2UgLT5cbiAgICAgICgqIGUuZy4gXCIxMmFtXCIgb3IgXCIxMjowMFwiICopXG4gICAgICBpZiBwb3MgPSB1bnRpbFxuICAgICAgdGhlbiAwLCBwb3MsIDAsIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBhY3R1YWxseSB1bnJlYWNoYWJsZSwgYmFzZWQgb24gdGhlIHZhcmlvdXMgd2F5cyB0aGF0XG4gICAgICAgICAgIFtleHBlY3Rfc2Vjb25kc10gY2FuIGVuZCB1cCBmYWxzZS4gKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJCVUc6IGRpZCBub3QgZXhwZWN0IHNlY29uZHMsIGJ1dCBmb3VuZCB0aGVtXCJcbiAgICB8IHRydWUgLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICBpZiBwb3MgKyAyID4gdW50aWxcbiAgICAgIHRoZW5cbiAgICAgICAgKCogZS5nLiBcIjEyOjAwOjBcIiAqKVxuICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIHR3byBkaWdpdHMgb2Ygc2Vjb25kc1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgaW5cbiAgICAgICAgbGV0IHBvcyA9IHBvcyArIDIgaW5cbiAgICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgICAgdGhlbiBzZWMsIHBvcywgMCwgZmFsc2UgKCogZS5nLiBcIjEyOjAwOjAwLjEyM1wiICopXG4gICAgICAgIGVsc2UgaWYgcG9zIDwgdW50aWwgJiYgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3NcbiAgICAgICAgdGhlblxuICAgICAgICAgICggc2VjXG4gICAgICAgICAgLCBwb3NcbiAgICAgICAgICAsIHVudGlsIC0gcG9zXG4gICAgICAgICAgLCBjaGVja19kaWdpdHNfd2l0aF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgKHBvcyArIDEpIH51bnRpbCApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgZGVjaW1hbCBwb2ludCBvciBhbS9wbSBzdWZmaXggYWZ0ZXIgc2Vjb25kc1wiKVxuICBpblxuICBsZXQgaHIgPVxuICAgICgqIE5CLiBXZSBhbHJlYWR5IGtub3cgW2hyXSBpcyBub24tbmVnYXRpdmUsIGJlY2F1c2UgaXQncyB0aGUgcmVzdWx0IG9mXG4gICAgICAgW3JlYWRfMl9kaWdpdF9pbnRdLiAqKVxuICAgIG1hdGNoIGFtX29yX3BtIHdpdGhcbiAgICB8IGBocl9BTSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwYW1cIiAqKVxuICAgICAgaWYgaHIgPCAxIHx8IGhyID4gMTJcbiAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgIGVsc2UgaWYgaHIgPSAxMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIGhyXG4gICAgfCBgaHJfUE0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMHBtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMTJcbiAgICAgIGVsc2UgaHIgKyAxMlxuICAgIHwgYGhyXzI0IC0+XG4gICAgICAobWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyB3aXRob3V0IG1pbnV0ZXMgb3IgQU0vUE1cIlxuICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIHwgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgLT5cbiAgICAgICAgIGlmIGhyID4gMjRcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIGVsc2UgaWYgaHIgPSAyNCAmJiAobWluID4gMCB8fCBzZWMgPiAwIHx8IHN1YnNlY19ub256ZXJvKVxuICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInRpbWUgaXMgcGFzdCAyNDowMDowMFwiICgqIGUuZy4gXCIxMzowMDowMFwiICopXG4gICAgICAgICBlbHNlIGhyKVxuICBpblxuICBsZXQgbWluID1cbiAgICBpZiBtaW4gPiA1OSB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibWludXRlcyBvdXQgb2YgYm91bmRzXCIgZWxzZSBtaW5cbiAgaW5cbiAgbGV0IHNlYyA9XG4gICAgaWYgc2VjID4gNjAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNlY29uZHMgb3V0IG9mIGJvdW5kc1wiIGVsc2Ugc2VjXG4gIGluXG4gIGxldCBzdWJzZWNfbGVuID0gaWYgc2VjID0gNjAgfHwgbm90IHN1YnNlY19ub256ZXJvIHRoZW4gMCBlbHNlIHN1YnNlY19sZW4gaW5cbiAgZiBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlblxuOztcblxubGV0IHBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZiA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgbWF0Y2hcbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KFN0cmluZy5sZW5ndGggc3RyKVxuICAgIHdpdGhcbiAgICB8IFJlc3VsdC5PayB6IC0+IHpcbiAgICB8IFJlc3VsdC5FcnJvciBzIC0+XG4gICAgICBmYWlsd2l0aGYgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZDogJXNcIiAoRXJyb3IudG9fc3RyaW5nX21hY2ggcykgKClcbiAgaW5cbiAgaWYgbGVuIDwgMlxuICB0aGVuIGZhaWx3aXRoIFwibGVuIDwgMlwiXG4gIGVsc2UgKFxuICAgIGxldCBociA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3MgaW5cbiAgICBpZiBociA+IDI0IHRoZW4gZmFpbHdpdGggXCJob3VyID4gMjRcIjtcbiAgICBpZiBsZW4gPSAyXG4gICAgdGhlbiBmIHN0ciB+aHIgfm1pbjowIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgZWxzZSBpZiBsZW4gPCA1XG4gICAgdGhlbiBmYWlsd2l0aCBcIjIgPCBsZW4gPCA1XCJcbiAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDJdICc6JylcbiAgICB0aGVuIGZhaWx3aXRoIFwiZmlyc3QgY29sb24gbWlzc2luZ1wiXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbWluID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvczoocG9zICsgMykgaW5cbiAgICAgIGlmIG1pbiA+PSA2MCB0aGVuIGZhaWx3aXRoIFwibWludXRlID4gNjBcIjtcbiAgICAgIGlmIGhyID0gMjQgJiYgbWluIDw+IDAgdGhlbiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBtaW51dGVcIjtcbiAgICAgIGlmIGxlbiA9IDVcbiAgICAgIHRoZW4gZiBzdHIgfmhyIH5taW4gfnNlYzowIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICAgIGVsc2UgaWYgbGVuIDwgOFxuICAgICAgdGhlbiBmYWlsd2l0aCBcIjUgPCBsZW4gPCA4XCJcbiAgICAgIGVsc2UgaWYgbm90IChDaGFyLmVxdWFsIHN0ci5bcG9zICsgNV0gJzonKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcInNlY29uZCBjb2xvbiBtaXNzaW5nXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2VjID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvczoocG9zICsgNikgaW5cbiAgICAgICAgKCogc2Vjb25kIGNhbiBiZSA2MCBpbiB0aGUgY2FzZSBvZiBhIGxlYXAgc2Vjb25kLiBVbmZvcnR1bmF0ZWx5LCB3aGF0IHdpdGhcbiAgICAgICAgICAgbm9uLWhvdXItbXVsdGlwbGUgdGltZXpvbmUgb2Zmc2V0cywgd2UgY2FuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoYXRcbiAgICAgICAgICAgdGhlIGhvdXIgb3IgbWludXRlIG11c3QgYmUgaW4gdGhhdCBjYXNlICopXG4gICAgICAgIGlmIHNlYyA+IDYwIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBzZWNvbmQ6ICVpXCIgc2VjICgpO1xuICAgICAgICBpZiBociA9IDI0ICYmIHNlYyA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gc2Vjb25kc1wiO1xuICAgICAgICBpZiBsZW4gPSA4XG4gICAgICAgIHRoZW4gZiBzdHIgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICAgIGVsc2UgaWYgbGVuID0gOVxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwibGVuZ3RoID0gOVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHN0ci5bcG9zICsgOF0gd2l0aFxuICAgICAgICAgIHwgJy4nIHwgJywnIC0+XG4gICAgICAgICAgICBsZXQgc3Vic2VjX3BvcyA9IHBvcyArIDggaW5cbiAgICAgICAgICAgIGxldCBzdWJzZWNfbGVuID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBjaGVja19kaWdpdHNfd2l0aG91dF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVyb1xuICAgICAgICAgICAgICAgICAgc3RyXG4gICAgICAgICAgICAgICAgICAoc3Vic2VjX3BvcyArIDEpXG4gICAgICAgICAgICAgICAgICB+dW50aWw6KHBvcyArIGxlbilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBzZWMgPSA2MCAtPiAwXG4gICAgICAgICAgICAgIHwgdHJ1ZSB3aGVuIGhyID0gMjQgLT4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gc3Vic2Vjb25kc1wiXG4gICAgICAgICAgICAgIHwgXyAtPiBsZW4gLSA4XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZiBzdHIgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlblxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIm1pc3Npbmcgc3Vic2Vjb25kIHNlcGFyYXRvclwiKSkpKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdC5TdGRcbmluY2x1ZGUgSGFzaC5CdWlsdGluXG5pbmNsdWRlIFN0YWJsZV93aXRuZXNzLkV4cG9ydFxuXG5pbmNsdWRlIChcbiAgQmFzZSA6XG4gIHNpZ1xuICAgIHR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGJvb2wgPSBib29sIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBjaGFyID0gY2hhciBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgZXhuID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50ID0gaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyB1bml0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgYXJyYXkgOj0gJ2EgYXJyYXlcbiAgd2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxuICB3aXRoIHR5cGUgY2hhciA6PSBjaGFyXG4gIHdpdGggdHlwZSBleG4gOj0gZXhuXG4gIHdpdGggdHlwZSBmbG9hdCA6PSBmbG9hdFxuICB3aXRoIHR5cGUgaW50IDo9IGludFxuICB3aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbiAgd2l0aCB0eXBlIGludDY0IDo9IGludDY0XG4gIHdpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbiAgd2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbiAgd2l0aCB0eXBlICdhIG9wdGlvbiA6PSAnYSBvcHRpb25cbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbiAgd2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG4gIHdpdGggdHlwZSB1bml0IDo9IHVuaXQpXG4iLCJvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcbiAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGV4Y2VwdGlvbiBOYW5fb3JfaW5mIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgdmVyaWZ5IHQgPVxuICAgICAgbWF0Y2ggU3RkbGliLmNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICAgICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+ICgpXG4gICAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IHJhaXNlIE5hbl9vcl9pbmZcbiAgICA7O1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZClcblxuICAgIGxldCBzZXhwX29mX3QgPSBGbG9hdC5zZXhwX29mX3RcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gXyBhcyBzZXhwIC0+XG4gICAgICAgIGxldCB0ID0gRmxvYXQudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgKHRyeSB2ZXJpZnkgdCB3aXRoXG4gICAgICAgICB8IGUgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgKEltcG9ydC5FeG4udG9fc3RyaW5nIGUpIHNleHApO1xuICAgICAgICB0XG4gICAgICB8IHMgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgXCJEZWNpbWFsLnRfb2Zfc2V4cDogRXhwZWN0ZWQgQXRvbSwgZm91bmQgTGlzdFwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoZmxvYXRbQHF1aWNrY2hlY2suZ2VuZXJhdG9yIEZsb2F0Lmdlbl9maW5pdGVdKVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgKCogRm9yIFtzXSB3aGljaCBpcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGZpbml0ZSBmbG9hdCwgaW4gZWl0aGVyIGRlY2ltYWwgb3JcbiAgICAgICBzY2llbnRpZmljIG5vdGF0aW9uLCBzaGlmdCB0aGUgZGVjaW1hbCBwb2ludCBvciBhZGp1c3QgdGhlIHNjaWVudGlmaWMgbm90YXRpb25cbiAgICAgICBleHBvbmVudCBieSBbYnldLCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIG11bHRpcGx5aW5nIHRoZSBudW1iZXIgYnkgWzEwKipieV0uXG5cbiAgICAgICBUaGUgb3V0cHV0IHdpbGwgYmUgaW4gc2NpZW50aWZpYyBub3RhdGlvbiBpZmYgdGhlIGlucHV0IHdhcywgZXhjZXB0IHdoZW4gdGhlXG4gICAgICAgcmVzdWx0aW5nIGV4cG9uZW50IGFmdGVyIHRoZSBzaGlmdCBiZWNvbWVzIDAuXG5cbiAgICAgICBObyBlZmZvcnQgaXMgbWFkZSB0byBub3JtYWxpemUgdGhlIHNjaWVudGlmaWMgbm90YXRpb24gaWYgaXQgd2FzIG5vdCBub3JtYWxpemVkLCBvclxuICAgICAgIHRvIHN3aXRjaCB0by9mcm9tIHNjaWVudGlmaWMgbm90YXRpb24gdG8gaGVscCByZWFkYWJpbGl0eSAoZXhjZXB0IGZvciB0aGUgRTAgY2FzZVxuICAgICAgIG1lbnRpb25lZCBhYm92ZSkuICopXG4gICAgbGV0IHJlYyBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5ID1cbiAgICAgIGlmIGJ5ID0gMFxuICAgICAgdGhlbiBzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHMgPSBTdHJpbmcubHN0cmlwIHMgaW5cbiAgICAgICAgbGV0IGQsIGUsIHplcm8sIHVuZGVyc2NvcmUgPVxuICAgICAgICAgICgqIEZpbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZWNpbWFsIHBvaW50IFtkXSwgdGhlIGV4cG9uZW50IHNpZ24gW2VdLCBhbmQgY2hlY2tcbiAgICAgICAgICAgICBpZiB0aGVyZSBhcmUgYW55IG5vbi16ZXJvIHNpZ25pZmljYW50IGRpZ2l0cyAob25seSBiZWZvcmUgdGhlIGV4cG9uZW50IHNpZ24pXG4gICAgICAgICAgICAgdG8gZGV0ZXJtaW5lIGlmIHRoZSBudW1iZXIgaXMgZXF1YWwgdG8gMC4wICopXG4gICAgICAgICAgbGV0IGQgPSByZWYgTm9uZSBpblxuICAgICAgICAgIGxldCBlID0gcmVmIE5vbmUgaW5cbiAgICAgICAgICBsZXQgbm90X3plcm8gPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgdW5kZXJzY29yZSA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSAhZFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmIFwiRXJyb3IgcGFyc2luZyBQZXJjZW50LnQ6IHRvbyBtYW55IGRlY2ltYWwgcG9pbnRzIGluICclcydcIiBzICgpO1xuICAgICAgICAgICAgICBkIDo9IFNvbWUgaVxuICAgICAgICAgICAgfCAnZScgfCAnRScgLT5cbiAgICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgIWVcbiAgICAgICAgICAgICAgdGhlbiBmYWlsd2l0aGYgXCJFcnJvciBwYXJzaW5nIFBlcmNlbnQudDogdG9vIG1hbnkgRXMgaW4gJyVzJ1wiIHMgKCk7XG4gICAgICAgICAgICAgIGUgOj0gU29tZSBpXG4gICAgICAgICAgICB8ICctJyB8ICcrJyB8ICcwJyAtPiAoKVxuICAgICAgICAgICAgfCAnXycgLT4gdW5kZXJzY29yZSA6PSB0cnVlXG4gICAgICAgICAgICB8ICcxJyAuLiAnOScgLT4gaWYgT3B0aW9uLmlzX25vbmUgIWUgdGhlbiBub3RfemVybyA6PSB0cnVlXG4gICAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZCBjaGFyYWN0ZXIgd2hlbiBwYXJzaW5nIFBlcmNlbnQudDogJyVjJyBpbiAnJXMnXCIgYyBzICgpXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAhZCwgIWUsIG5vdCAhbm90X3plcm8sICF1bmRlcnNjb3JlXG4gICAgICAgIGluXG4gICAgICAgIGlmIHVuZGVyc2NvcmVcbiAgICAgICAgdGhlbiBzaGlmdF9kZWNpbWFsX3BvaW50IChTdHJpbmcuZmlsdGVyIHMgfmY6KGZ1biBjIC0+IENoYXIuKGMgPD4gJ18nKSkpIH5ieVxuICAgICAgICBlbHNlIGlmIHplcm9cbiAgICAgICAgdGhlbiBzXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAoKiBbc10gaXMgaW4gc2NpZW50aWZpYyBub3RhdGlvbi4gIFNpbXBseSBhZGp1c3QgdGhlIGV4cG9uZW50IGFmdGVyICdlJy4gKilcbiAgICAgICAgICAgIGxldCBleHAgPSBJbnQub2Zfc3RyaW5nIChTdHJpbmcuZHJvcF9wcmVmaXggcyAoZSArIDEpKSBpblxuICAgICAgICAgICAgbGV0IGV4cCA9IGV4cCArIGJ5IGluXG4gICAgICAgICAgICBpZiBleHAgPSAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFdlIGVuZCB1cCB3aXRoIGV4cG9uZW50IDAsIHNvIHdlIGp1c3Qgc2tpcCB0aGUgXCJlXCIgYWx0b2dldGhlciAqKVxuICAgICAgICAgICAgICBTdHJpbmcucHJlZml4IHMgZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICAgICAgWyBTdHJpbmcucHJlZml4IHMgKGUgKyAxKVxuICAgICAgICAgICAgICAgIDsgKGlmIGV4cCA+IDAgdGhlbiBcIitcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgICAgICAgOyBJbnQudG9fc3RyaW5nIGV4cFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICgqIFtzXSBpcyBpbiBkZWNpbWFsIG5vdGF0aW9uLiAgU3RhcnQgYnkgZHJvcHBpbmcgdGhlIGxlYWRpbmcgc2lnbiBpZiB0aGVyZSBpc1xuICAgICAgICAgICAgICAgb25lLiAgV2UnbGwgcmUtYWRkIGl0IGF0IHRoZSBlbmQgdG8ga2VlcCB0aGUgcmVzdCBvZiB0aGUgY29kZSBzaW1wbGVyLiAqKVxuICAgICAgICAgICAgbGV0IG5lZyA9IENoYXIuKCA9ICkgcy5bMF0gJy0nIGluXG4gICAgICAgICAgICBsZXQgc2lnbmVkID0gbmVnIHx8IENoYXIuKCA9ICkgcy5bMF0gJysnIGluXG4gICAgICAgICAgICBsZXQgcyA9IGlmIHNpZ25lZCB0aGVuIFN0cmluZy5kcm9wX3ByZWZpeCBzIDEgZWxzZSBzIGluXG4gICAgICAgICAgICBsZXQgcywgYnkgPVxuICAgICAgICAgICAgICAoKiBOZXh0LCBzY3JhdGNoIHRoZSBkZWNpbWFsIHBvaW50IGlmIHRoZXJlIGlzIG9uZSwgc28gdGhhdCBbc10gYmVjb21lcyBhblxuICAgICAgICAgICAgICAgICBpbnRlZ2VyLCBhbmQgYWRqdXN0IFtieV0gYWNjb3JkaW5nbHkgdG8ga2VlcCB0aGUgcmVzdWx0IHVuY2hhbmdlZC4gIFdlXG4gICAgICAgICAgICAgICAgIGFsc28ga25vdyB0aGF0IFtzIDw+IDAuMF0gc28gd2UgcmVtb3ZlIGxlYWRpbmcgemVyb3MuICBXZSBtYXkgYmUgd2FzdGluZ1xuICAgICAgICAgICAgICAgICBzb21lIHdvcmsgYmVjYXVzZSB3ZSBtYXkgaGF2ZSB0byBhZGQgdGhlbSBiYWNrIGJlbG93LCBidXQgdGhlIGNvZGUgaXNcbiAgICAgICAgICAgICAgICAgc2ltcGxlciB0aGF0IHdheS4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzLCBieVxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPlxuICAgICAgICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgICAgICAgICgqIFdlIGNhbGN1bGF0ZWQgW2RdIGJlZm9yZSByZW1vdmluZyB0aGUgXCItXCIgc2lnbiwgc28gd2UgbWF5IGhhdmUgdG9cbiAgICAgICAgICAgICAgICAgICAgIGFkanVzdCBpdCBub3cgKilcbiAgICAgICAgICAgICAgICAgIGQgLSBpZiBzaWduZWQgdGhlbiAxIGVsc2UgMFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHN1ZiA9IFN0cmluZy5kcm9wX3ByZWZpeCBzIChkICsgMSkgaW5cbiAgICAgICAgICAgICAgICBsZXQgcHJlZiA9IFN0cmluZy5wcmVmaXggcyBkIGluXG4gICAgICAgICAgICAgICAgbGV0IHMgPSBwcmVmIF4gc3VmIHw+IFN0cmluZy5sc3RyaXAgfmRyb3A6KENoYXIuKCA9ICkgJzAnKSBpblxuICAgICAgICAgICAgICAgIGxldCBieSA9IGJ5IC0gU3RyaW5nLmxlbmd0aCBzdWYgaW5cbiAgICAgICAgICAgICAgICBzLCBieVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIFJlbW92ZSB0cmFpbGluZyB6ZXJvcyB0b28gKilcbiAgICAgICAgICAgIGxldCBzLCBieSA9XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgbGV0IHMgPSBzIHw+IFN0cmluZy5yc3RyaXAgfmRyb3A6KENoYXIuKCA9ICkgJzAnKSBpblxuICAgICAgICAgICAgICBsZXQgYnkgPSBieSArIGxlbiAtIFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBzLCBieVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBpZiBieSA9IDBcbiAgICAgICAgICAgICAgdGhlbiBzXG4gICAgICAgICAgICAgIGVsc2UgaWYgYnkgPiAwXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAoKiBDYXNlIDE6IFtzXSBpcyBhbiBpbnRlZ2VyIHdoaWNoIHdlIG5lZWQgdG8gZnVydGhlciBtdWx0aXBseSBieSBhXG4gICAgICAgICAgICAgICAgICAgcG9zaXRpdmUgcG93ZXIgb2YgMTAsIHNvIHdlIGp1c3QgYWRkIDBzIGF0IHRoZSBlbmQuICopXG4gICAgICAgICAgICAgICAgcyBeIFN0cmluZy5tYWtlIGJ5ICcwJ1xuICAgICAgICAgICAgICBlbHNlIGlmIGJ5ID4gLWxlblxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgKCogQ2FzZSAyOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGRpdmlkZSBieSBhIHBvc2l0aXZlIHBvd2VyXG4gICAgICAgICAgICAgICAgICAgb2YgMTAsIGFuZCBpdCBoYXMgZW5vdWdoIGRpZ2l0cyB0aGF0IHdlIGNhbiBqdXN0IGluc2VydCB0aGUgJy4nIGluXG4gICAgICAgICAgICAgICAgICAgYmV0d2VlbiB0aGVtLiAqKVxuICAgICAgICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBTdHJpbmcuZHJvcF9zdWZmaXggcyAoLWJ5KTsgXCIuXCI7IFN0cmluZy5zdWZmaXggcyAoLWJ5KSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAoKiBDYXNlIDMgKGJ5IDw9IC1sZW4pOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGRpdmlkZSBieSBhXG4gICAgICAgICAgICAgICAgICAgbGFyZ2UgZW5vdWdoIHBvc2l0aXZlIHBvd2VyIG9mIDEwIHRoYXQgd2UgbmVlZCB0byBhZGQgbGVhZGluZyAwcy4gKilcbiAgICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgXCIwLlwiOyBTdHJpbmcubWFrZSAoLWJ5IC0gbGVuKSAnMCc7IHMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIEZpbmFsbHksIHJlc3RvcmUgdGhlIHNpZ24uICBXZSBjYW4ndCBqdXN0IGRyb3AgdGhlICcrJyBzaWduLCB3ZSBuZWVkIHRvXG4gICAgICAgICAgICAgICByZXN0b3JlIGl0IHRvbywgYmVjYXVzZSBpZiB3ZSBkaWRuJ3QsIHdlIHdvdWxkIHNpbGVudGx5IHBhcnNlIG51bWJlcnMgbGlrZVxuICAgICAgICAgICAgICAgXCIrLTEzJVwiIG9yIFwiKysxN2JwXCIgd2l0aG91dCByYWlzaW5nIGFuIGVycm9yLiAqKVxuICAgICAgICAgICAgaWYgc2lnbmVkIHRoZW4gKGlmIG5lZyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpIF4gcyBlbHNlIHMpKVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzaGlmdF9kZWNpbWFsX3BvaW50IDFcIiA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgWyBcIjNcIlxuICAgICAgICA7IFwiNTEuMlwiXG4gICAgICAgIDsgXCItNTBcIlxuICAgICAgICA7IFwiMzEyNzAwMC4wMDBcIlxuICAgICAgICA7IFwiMS43OUUrMzA4XCJcbiAgICAgICAgOyBcIjQuOTQwNjU2RS0zMjRcIlxuICAgICAgICA7IFwiLTAuMDAwZTEzXCJcbiAgICAgICAgOyBcIjEuNDc2NTFFKzEwXCJcbiAgICAgICAgXVxuICAgICAgICB+ZjooZnVuIHMgLT5cbiAgICAgICAgICBwcmludGYgXCI9PSAlcyA9PVxcblwiIHM7XG4gICAgICAgICAgbGV0IHggPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIExpc3QuaXRlciBbIC00MDsgLTEwOyAtMjsgLTE7IDA7IDE7IDI7IDEwOyA0MCBdIH5mOihmdW4gYnkgLT5cbiAgICAgICAgICAgIGxldCBzMSA9IHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+YnkgaW5cbiAgICAgICAgICAgIHByaW50ZiBcIiVzXFxuXCIgczE7XG4gICAgICAgICAgICBsZXQgeDEgPSBGbG9hdC5vZl9zdHJpbmcgczEgaW5cbiAgICAgICAgICAgIGxldCB4MiA9IHggKi4gKDEwLiAqKiBmbG9hdCBieSkgaW5cbiAgICAgICAgICAgIGFzc2VydCAoRmxvYXQuKHgxID0geDIgfHwgYWJzICgoeDEgLSB4MikgLyB4MSkgPCAxZS02KSA6IGJvb2wpKTtcbiAgICAgICAgICBwcmludGYgXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcblwiKTtcbiAgICAgICgqIE5vdGUgXCItMC4wMDBlMTNcIiBpcyBub3QgYWRqdXN0ZWQgKilcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICAgID09IDMgPT1cbiAgICAgICAgMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzXG4gICAgICAgIDAuMDAwMDAwMDAwM1xuICAgICAgICAwLjAzXG4gICAgICAgIDAuM1xuICAgICAgICAzXG4gICAgICAgIDMwXG4gICAgICAgIDMwMFxuICAgICAgICAzMDAwMDAwMDAwMFxuICAgICAgICAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSA1MS4yID09XG4gICAgICAgIDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MTJcbiAgICAgICAgMC4wMDAwMDAwMDUxMlxuICAgICAgICAwLjUxMlxuICAgICAgICA1LjEyXG4gICAgICAgIDUxLjJcbiAgICAgICAgNTEyXG4gICAgICAgIDUxMjBcbiAgICAgICAgNTEyMDAwMDAwMDAwXG4gICAgICAgIDUxMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAtNTAgPT1cbiAgICAgICAgLTAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1XG4gICAgICAgIC0wLjAwMDAwMDAwNVxuICAgICAgICAtMC41XG4gICAgICAgIC01XG4gICAgICAgIC01MFxuICAgICAgICAtNTAwXG4gICAgICAgIC01MDAwXG4gICAgICAgIC01MDAwMDAwMDAwMDBcbiAgICAgICAgLTUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAzMTI3MDAwLjAwMCA9PVxuICAgICAgICAwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMxMjdcbiAgICAgICAgMC4wMDAzMTI3XG4gICAgICAgIDMxMjcwXG4gICAgICAgIDMxMjcwMFxuICAgICAgICAzMTI3MDAwLjAwMFxuICAgICAgICAzMTI3MDAwMFxuICAgICAgICAzMTI3MDAwMDBcbiAgICAgICAgMzEyNzAwMDAwMDAwMDAwMDBcbiAgICAgICAgMzEyNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gMS43OUUrMzA4ID09XG4gICAgICAgIDEuNzlFKzI2OFxuICAgICAgICAxLjc5RSsyOThcbiAgICAgICAgMS43OUUrMzA2XG4gICAgICAgIDEuNzlFKzMwN1xuICAgICAgICAxLjc5RSszMDhcbiAgICAgICAgMS43OUUrMzA5XG4gICAgICAgIDEuNzlFKzMxMFxuICAgICAgICAxLjc5RSszMThcbiAgICAgICAgMS43OUUrMzQ4XG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDQuOTQwNjU2RS0zMjQgPT1cbiAgICAgICAgNC45NDA2NTZFLTM2NFxuICAgICAgICA0Ljk0MDY1NkUtMzM0XG4gICAgICAgIDQuOTQwNjU2RS0zMjZcbiAgICAgICAgNC45NDA2NTZFLTMyNVxuICAgICAgICA0Ljk0MDY1NkUtMzI0XG4gICAgICAgIDQuOTQwNjU2RS0zMjNcbiAgICAgICAgNC45NDA2NTZFLTMyMlxuICAgICAgICA0Ljk0MDY1NkUtMzE0XG4gICAgICAgIDQuOTQwNjU2RS0yODRcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gLTAuMDAwZTEzID09XG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDEuNDc2NTFFKzEwID09XG4gICAgICAgIDEuNDc2NTFFLTMwXG4gICAgICAgIDEuNDc2NTFcbiAgICAgICAgMS40NzY1MUUrOFxuICAgICAgICAxLjQ3NjUxRSs5XG4gICAgICAgIDEuNDc2NTFFKzEwXG4gICAgICAgIDEuNDc2NTFFKzExXG4gICAgICAgIDEuNDc2NTFFKzEyXG4gICAgICAgIDEuNDc2NTFFKzIwXG4gICAgICAgIDEuNDc2NTFFKzUwXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHx9XVxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4gICAgICAoKiBMb2dpYyBzdG9sZW4gZnJvbSBsaWIvYmFzZS9zcmMvZmxvYXQubWwsIGJ1dCB0aGlzIGRvZXMgbm90IGNhbGxcbiAgICAgICAgIFt2YWxpZF9mbG9hdF9sZXhlbV0gc28gbm90IGFkZGluZyBhIHRyYWlsaW5nIFwiLlwiIGFuZCBhbHNvLCB3ZSdyZSB1c2luZ1xuICAgICAgICAgdXBwZXJjYXNlICglRyB2cyAlZykgZm9yIGNvbnNpc3RlbmN5IHdpdGggW1BlcmNlbnQuU3RhYmxlLlYyXS4gKilcbiAgICAgIGxldCBmbG9hdF90b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIChmbG9hdF9vZl9zdHJpbmcgeSkgeCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3R1wiIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcnIGZsb2F0X3RvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgICAgdGhlbiBcIjB4XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHMgPSBmbG9hdF90b19zdHJpbmcgeCBpblxuICAgICAgICAgICgqIFVuaW1wb3J0YW50IG5vdGU6IFYzIHNlcmlhbGl6ZXMgbmFuIGFzIFwiTkFOeFwiLCB3aGlsZSBWMiBzZXJpYWxpemVzIGl0IGFzXG4gICAgICAgICAgICAgXCJOQU5icFwiICopXG4gICAgICAgICAgaWYgRmxvYXQuKGlzX25hbiB4IHx8IGlzX2luZiB4IHx8IHhfYWJzID49IDEuKVxuICAgICAgICAgIHRoZW4gcyBeIFwieFwiXG4gICAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgICAgIHRoZW4gc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICAgICAgICBlbHNlIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6NCBeIFwiYnBcIilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgeCA9IHRvX3N0cmluZycgZmxvYXRfdG9fc3RyaW5nIHhcblxuICAgICAgbGV0IHJlYWxseV9vZl9zdHJpbmcgc3RyIGZsb2F0X29mX3N0cmluZyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcInhcIiB3aXRoXG4gICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciB+Ynk6MFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwiJVwiIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyIH5ieTooLTIpXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJicFwiIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyIH5ieTooLTQpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJQZXJjZW50Lm9mX3N0cmluZzogbXVzdCBlbmQgaW4geCwgJSUsIG9yIGJwOiAlc1wiIHN0ciAoKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHggPVxuICAgICAgICByZWFsbHlfb2Zfc3RyaW5nIHggKGZ1biBzIH5ieSAtPlxuICAgICAgICAgIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+YnlcbiAgICAgICAgICB8PiBTZXhwLkF0b21cbiAgICAgICAgICB8PiBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24udF9vZl9zZXhwKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiB4ID1cbiAgICAgICAgcmVhbGx5X29mX3N0cmluZyB4IChmdW4gcyB+YnkgLT5cbiAgICAgICAgICBtYXRjaCBTdHJpbmcubG93ZXJjYXNlIHMgd2l0aFxuICAgICAgICAgIHwgXCJuYW5cIlxuICAgICAgICAgIHwgXCItbmFuXCJcbiAgICAgICAgICB8IFwiK25hblwiXG4gICAgICAgICAgfCBcImluZlwiXG4gICAgICAgICAgfCBcImluZmluaXR5XCJcbiAgICAgICAgICB8IFwiK2luZlwiXG4gICAgICAgICAgfCBcIitpbmZpbml0eVwiXG4gICAgICAgICAgfCBcIi1pbmZcIlxuICAgICAgICAgIHwgXCItaW5maW5pdHlcIiAtPlxuICAgICAgICAgICAgKCogV2UgcGFyc2UgdGhlc2UgbmFuIG9yIGluZiBzdHJpbmdzIGRpcmVjdGx5LCBiZWNhdXNlXG4gICAgICAgICAgICAgICBbc2hpZnRfZGVjaW1hbF9wb2ludF0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtICopXG4gICAgICAgICAgICBGbG9hdC5vZl9zdHJpbmcgc1xuICAgICAgICAgIHwgXyAtPiBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5IHw+IEZsb2F0Lm9mX3N0cmluZylcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZ2FibGUgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA6IHN0cmluZyAtPiB0XG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAoKiBVc2UgYSBkaWZmZXJlbnQgYmluX3NoYXBlX3QgdGhhbiBQZXJjZW50LlN0YWJsZS5WMiwgZXZlbiB0aG91Z2ggdGhlc2UgdHdvIHZlcnNpb25zXG4gICAgICAgaGF2ZSBjb21wYXRpYmxlIGJpbl9pbyBzZXJpYWxpemF0aW9uLiAgU2luY2UgdGhleSBkbyBkaWZmZXIgaW4gc2V4cCBzZXJpYWxpemF0aW9uLFxuICAgICAgIHdlIGVyciBvbiB0aGUgc2lkZSBvZiBzYWZldHkgYW5kIGNoYW5nZSB0aGUgYmluIHNoYXBlIHRvIHdhcm4gdGhhdCBWMyBpcyBub3QgYWx3YXlzXG4gICAgICAgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBWMi4gKilcbiAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgKEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjMyZjJhMWUtNmI0My0xMWVkLWIzM2ItYWFjMmE1NjNmMTBhXCIpXG4gICAgICAgIFsgYmluX3NoYXBlX3QgXVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCBzID0gU3RyaW5nYWJsZS5mbG9hdF90b19zdHJpbmcgeCBpblxuICAgICAgICBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5OjIgXiBcIiVcIlxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGZsb2F0W0BxdWlja2NoZWNrLmdlbmVyYXRvciBGbG9hdC5nZW5fZmluaXRlXSlcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG9mX211bHQgZiA9IGZcbiAgICBsZXQgdG9fbXVsdCB0ID0gdFxuICAgIGxldCBvZl9wZXJjZW50YWdlIGYgPSBmIC8uIDEwMC5cbiAgICBsZXQgdG9fcGVyY2VudGFnZSB0ID0gdCAqLiAxMDAuXG4gICAgbGV0IG9mX2JwIGYgPSBmIC8uIDEwXzAwMC5cbiAgICBsZXQgdG9fYnAgdCA9IHQgKi4gMTBfMDAwLlxuICAgIGxldCBvZl9icF9pbnQgaSA9IG9mX2JwIChGbG9hdC5vZl9pbnQgaSlcbiAgICBsZXQgdG9fYnBfaW50IHQgPSBGbG9hdC50b19pbnQgKHRvX2JwIHQpXG5cbiAgICAoKiBNdWx0aXBseSB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBmbG9hdCBbZl0gYnkgWzEwKipieV0sIGFuZCBjb252ZXJ0IGJhY2sgdG9cbiAgICAgICB0aGUgbmVhcmVzdCByZXByZXNlbnRhYmxlIGZsb2F0LiAqKVxuICAgIGxldCBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5ID1cbiAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGYpXG4gICAgICB0aGVuIGZcbiAgICAgIGVsc2UgRmxvYXQudG9fc3RyaW5nIGYgfD4gVjMuc2hpZnRfZGVjaW1hbF9wb2ludCB+YnkgfD4gRmxvYXQub2Zfc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBvZl9wZXJjZW50YWdlX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieTooLTIpXG4gICAgbGV0IHRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OjJcbiAgICBsZXQgb2ZfYnBfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OigtNClcbiAgICBsZXQgdG9fYnBfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OjRcblxuICAgIGxldCByb3VuZF9zaWduaWZpY2FudCBwIH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX211bHQgcCB+ZGVjaW1hbF9kaWdpdHMgPSBGbG9hdC5yb3VuZF9kZWNpbWFsIHAgfmRlY2ltYWxfZGlnaXRzXG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwLikgfmRlY2ltYWxfZGlnaXRzIC8uIDEwMC5cbiAgICA7O1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfYnAgcCB+ZGVjaW1hbF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfZGVjaW1hbCAocCAqLiAxMDAwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAwMC5cbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBFeHBvbmVudCBvZiBpbnRcbiAgICAgICAgfCBFeHBvbmVudF9FIG9mIGludFxuICAgICAgICB8IERlY2ltYWwgb2YgaW50XG4gICAgICAgIHwgT2NhbWxcbiAgICAgICAgfCBDb21wYWN0IG9mIGludFxuICAgICAgICB8IENvbXBhY3RfRSBvZiBpbnRcbiAgICAgICAgfCBIZXggb2YgaW50XG4gICAgICAgIHwgSGV4X0Ugb2YgaW50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgZXhwb25lbnQgfnByZWNpc2lvbiA9IEV4cG9uZW50IHByZWNpc2lvblxuICAgICAgbGV0IGV4cG9uZW50X0UgfnByZWNpc2lvbiA9IEV4cG9uZW50X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgZGVjaW1hbCB+cHJlY2lzaW9uID0gRGVjaW1hbCBwcmVjaXNpb25cbiAgICAgIGxldCBvY2FtbCA9IE9jYW1sXG4gICAgICBsZXQgY29tcGFjdCB+cHJlY2lzaW9uID0gQ29tcGFjdCBwcmVjaXNpb25cbiAgICAgIGxldCBjb21wYWN0X0UgfnByZWNpc2lvbiA9IENvbXBhY3RfRSBwcmVjaXNpb25cbiAgICAgIGxldCBoZXggfnByZWNpc2lvbiA9IEhleCBwcmVjaXNpb25cbiAgICAgIGxldCBoZXhfRSB+cHJlY2lzaW9uID0gSGV4X0UgcHJlY2lzaW9uXG5cbiAgICAgIGxldCBmb3JtYXRfZmxvYXQgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEV4cG9uZW50IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZVwiIHByZWNpc2lvblxuICAgICAgICB8IEV4cG9uZW50X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipFXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgRGVjaW1hbCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmZcIiBwcmVjaXNpb25cbiAgICAgICAgfCBPY2FtbCAtPiBzcHJpbnRmIFwiJUZcIlxuICAgICAgICB8IENvbXBhY3QgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipnXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgQ29tcGFjdF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qR1wiIHByZWNpc2lvblxuICAgICAgICB8IEhleCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmhcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXhfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkhcIiBwcmVjaXNpb25cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZm9ybWF0IHggZm9ybWF0ID1cbiAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgZmxvYXQgaW5cbiAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICB0aGVuIFwiMHhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgKCogV0FSTklORyAtIFBMRUFTRSBSRUFEIEJFRk9SRSBFRElUSU5HIFRIRVNFIEZVTkNUSU9OUzpcblxuICAgICAgICAgVGhlIHN0cmluZyBjb252ZXJ0ZXJzIGluIFN0YWJsZS5WMy9WMi9WMSBzaG91bGQgbmV2ZXIgY2hhbmdlLiBJZiB5b3UgYXJlIGNoYW5naW5nXG4gICAgICAgICB0aGUgc2VtYW50aWNzIG9mIGFueXRoaW5nIHRoYXQgYWZmZWN0cyB0aGUgc2V4cCBvciBiaW4taW8gcmVwcmVzZW50YXRpb24gb2ZcbiAgICAgICAgIHZhbHVlcyBvZiB0aGlzIHR5cGUgKHRoaXMgaW5jbHVkZXMgdG9fc3RyaW5nIGFuZCBvZl9zdHJpbmcpIG1ha2UgYSBTdGFibGUuVjQgYW5kXG4gICAgICAgICBtYWtlIHlvdXIgY2hhbmdlcyB0aGVyZS4gVGhhbmtzISAqKVxuICAgICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IHNwcmludGYgXCIlLjZHXCIgZmxvYXQgaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgICAgdGhlbiBcIjB4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMS4pIF4gXCJ4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICAgIGVsc2Ugc3RyaW5nICh4ICouIDEwXzAwMC4pIF4gXCJicFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVjMub2Zfc3RyaW5nXG4gICAgICBsZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mID0gVjMub2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZ2FibGUgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA6IHN0cmluZyAtPiB0XG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAoKiBNaW50IGEgdW5pcXVlIFtiaW5fc2hhcGVfdF0gdGhhdCdzIGRpc3RpbmN0IGZyb20gdGhlIGhpZGRlbiB1bmRlcmx5aW5nXG4gICAgICAgcmVwcmVzZW50YXRpb24gb2YgZmxvYXQuICopXG4gICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjFkMWU3NmJjLWVhNGItMTFlYi1hMTZhLWFhNWIyOGQxZjRkN1wiKVxuICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYzLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gVjMuY29tcGFyYXRvclxuICAgICAgZW5kKVxuXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBWMy5jb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFYyXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IEZsb2F0LmJpbl9zaGFwZV90XG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgYmluX2lvXVxuICAgICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjMuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IFYzLmNvbXBhcmF0b3JcblxuICAgICAgICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdFxuICAgICAgICAgICAgIHNlcmlhbGl6YXRpb24gcmF0aGVyIHRoYW4gcGVyY2VudCBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmdcbiAgICAgICAgICAgICBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlciBzZXJpYWxpemF0aW9uLlxuICAgICAgICAgICopXG4gICAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgICAgICAgIHwgZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICAgICAgICA7O1xuICAgICAgICBlbmQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uX3JlcHIgPSBzdHJ1Y3RcbiAgICAgIGxldCBub25lID0gRmxvYXQubmFuXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gRmxvYXQuaXNfbmFuIHRcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgPSBpc19zb21lXG4gICAgICBsZXQgc29tZSA9IEZuLmlkXG4gICAgICBsZXQgdW5jaGVja2VkX3ZhbHVlID0gRm4uaWRcbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcbiAgICAgIGxldCBhcHBseV93aXRoX25vbmVfYXNfbmFuID0gKCAqLiApXG4gICAgICBsZXQgb2ZfbXVsdF93aXRoX25hbl9hc19ub25lID0gRm4uaWRcbiAgICAgIGxldCB0b19tdWx0X3dpdGhfbm9uZV9hc19uYW4gPSBGbi5pZFxuXG4gICAgICBsZXQgb2Zfb3B0aW9uIG9wdCA9XG4gICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSB2IC0+IHNvbWUgdlxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgaWYgaXNfc29tZSB0XG4gICAgICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICAgICAgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiUGVyY2VudC5PcHRpb24udmFsdWVfZXhuIG5vbmVcIl1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gQm9vbC5zZWxlY3QgKGlzX25vbmUgdCkgZGVmYXVsdCAodW5jaGVja2VkX3ZhbHVlIHQpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFYzLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJlOWI1MjAyOC02YjQ1LTExZWQtYTZiNi1hYWMyYTU2M2YxMGFcIilcbiAgICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgT3B0aW9uX3JlcHJcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMy5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYzLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjMudCBPcHRpb24udF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVjIudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5iYXNldHlwZVxuICAgICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImY3YWEwNGU4LWRhM2UtMTFlYy1iNTQ2LWFhNzMyODQzM2I3MFwiKVxuICAgICAgICAgIFsgYmluX3NoYXBlX3QgXVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSBPcHRpb25fcmVwclxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19vcHRpb24gdCB8PiBPcHRpb24uc2V4cF9vZl90IFYyLnNleHBfb2ZfdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gKE9wdGlvbi50X29mX3NleHAgVjIudF9vZl9zZXhwKSBzZXhwIHw+IG9mX29wdGlvblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFslc2V4cF9ncmFtbWFyOiBWMi50IE9wdGlvbi50XVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgQmluX3NoYXBlX3NhbWVfYXNfZmxvYXQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBWMlxuXG4gICAgICAgIGxldCBiaW5fc2hhcGVfdCA9IEZsb2F0LmJpbl9zaGFwZV90XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5CaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUuT3B0aW9uXG4gIGluY2x1ZGUgU3RhYmxlLlYxLkJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgaXNfemVybyB0ID0gdCA9IDAuXG5sZXQgYXBwbHkgdCBmID0gdCAqLiBmXG5sZXQgc2NhbGUgdCBmID0gdCAqLiBmXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgRmxvYXRcblxuICBsZXQgb25lX2h1bmRyZWRfcGVyY2VudCA9IDEuXG4gIGxldCAoIC8vICkgeCB5ID0gb2ZfbXVsdCB4IC8uIG9mX211bHQgeVxuZW5kIDpcbnNpZ1xuICB2YWwgemVybyA6IHRcbiAgdmFsIG9uZV9odW5kcmVkX3BlcmNlbnQgOiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8vICkgOiB0IC0+IHQgLT4gZmxvYXRcbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBpc19uYW4gOiB0IC0+IGJvb2xcbiAgdmFsIGlzX2luZiA6IHQgLT4gYm9vbFxuICB2YWwgc2lnbl9leG4gOiB0IC0+IFNpZ24udFxuXG4gIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5lbmQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhYmxlLlYxLkJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgPSBGbG9hdC52YWxpZGF0ZV9vcmRpbmFyeVxubGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiBzID0gU3RyaW5nYWJsZS5vZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgc1xubGV0IHRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiBzZXhwID0gb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIChTZXhwLnRvX3N0cmluZyBzZXhwKVxuXG5tb2R1bGUgQWx3YXlzX3BlcmNlbnRhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZm9ybWF0IHggZm9ybWF0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgKHggKi4gMTAwLikgXiBcIiVcIlxuICBsZXQgdG9fc3RyaW5nIHggPSBzcHJpbnRmIFwiJS42RyUlXCIgKHggKiAxMDAuKVxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmxldCB0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlID0gU3RhYmxlLlYzLnRvX3N0cmluZ1xuXG5tb2R1bGUgQWxtb3N0X3JvdW5kX3RyaXBwYWJsZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gU3RhYmxlLlYzLlN0cmluZ2FibGUuKHRvX3N0cmluZycgKGZvcm1hdF9mbG9hdCBcIiUuMTRHXCIpIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IFN0YWJsZS5WMy5TdHJpbmdhYmxlLm9mX3N0cmluZyB4XG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gIGxldCB0X29mX3NleHAgPSBTdGFibGUuVjMudF9vZl9zZXhwXG5cbiAgbW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgIGxldCBvcGVuIFN0YWJsZS5WMyBpblxuICAgICAgbGV0IHMgPSBTdHJpbmdhYmxlLmZvcm1hdF9mbG9hdCBcIiUuMTRHXCIgeCBpblxuICAgICAgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubGV0IHJhbmRvbWl6ZSBzcGFuIHJhbmRvbV9zdGF0ZSB+cGVyY2VudCB+c2NhbGUgPVxuICBsZXQgbXVsdCA9IFBlcmNlbnQudG9fbXVsdCBwZXJjZW50IGluXG4gIGlmIEZsb2F0LiggPCApIG11bHQgMC4gfHwgRmxvYXQuKCA+ICkgbXVsdCAxLlxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiU3Bhbi5yYW5kb21pemU6IHBlcmNlbnQgaXMgb3V0IG9mIHJhbmdlIFsweCwgMXhdXCIgKHBlcmNlbnQgOiBQZXJjZW50LnQpXTtcbiAgbGV0IGZhY3RvciA9XG4gICAgUmFuZG9tLlN0YXRlLmZsb2F0X3JhbmdlIHJhbmRvbV9zdGF0ZSAoMS4gLS4gbXVsdCkgKEZsb2F0Lm9uZV91bHAgYFVwICgxLiArLiBtdWx0KSlcbiAgaW5cbiAgc2NhbGUgc3BhbiBmYWN0b3Jcbjs7XG5cbmxldCBmb3JtYXRfZGVjaW1hbCBuIHRlbnRocyB1bml0cyA9XG4gIGFzc2VydCAodGVudGhzID49IDAgJiYgdGVudGhzIDwgMTApO1xuICBpZiBuIDwgMTAgJiYgdGVudGhzIDw+IDBcbiAgdGhlbiBzcHJpbnRmIFwiJWQuJWQlc1wiIG4gdGVudGhzIHVuaXRzXG4gIGVsc2Ugc3ByaW50ZiBcIiVkJXNcIiBuIHVuaXRzXG47O1xuXG5sZXQgc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnMgPVxuICBsZXQgcyA9XG4gICAgaWYgaHIgPj0gMjRcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIChociAvIDI0KSAoSW50Lm9mX2Zsb2F0IChGbG9hdC5vZl9pbnQgKGhyICUgMjQpIC8uIDIuNCkpIFwiZFwiXG4gICAgZWxzZSBpZiBociA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIGhyIChtaW4gLyA2KSBcImhcIlxuICAgIGVsc2UgaWYgbWluID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgbWluIChzZWMgLyA2KSBcIm1cIlxuICAgIGVsc2UgaWYgc2VjID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgc2VjIChtcyAvIDEwMCkgXCJzXCJcbiAgICBlbHNlIGlmIG1zID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgbXMgKHVzIC8gMTAwKSBcIm1zXCJcbiAgICBlbHNlIGlmIHVzID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgdXMgKG5zIC8gMTAwKSBcInVzXCJcbiAgICBlbHNlIHNwcmludGYgXCIlaW5zXCIgbnNcbiAgaW5cbiAgbWF0Y2ggKHNpZ24gOiBTaWduLnQpIHdpdGhcbiAgfCBOZWcgLT4gXCItXCIgXiBzXG4gIHwgWmVybyB8IFBvcyAtPiBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBQYXJ0cyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzaWduIDogU2lnbi50XG4gICAgICAgIDsgaHIgOiBpbnRcbiAgICAgICAgOyBtaW4gOiBpbnRcbiAgICAgICAgOyBzZWMgOiBpbnRcbiAgICAgICAgOyBtcyA6IGludFxuICAgICAgICA7IHVzIDogaW50XG4gICAgICAgIDsgbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgTGlrZV9hX2Zsb2F0ID0gc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsIHplcm8gOiB0XG4gICAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogdFxuICAgICAgdmFsIGFicyA6IHQgLT4gdFxuICAgICAgdmFsIG5lZyA6IHQgLT4gdFxuICAgICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBpbmNsdWRlIExpa2VfYV9mbG9hdCB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgOiBzaWdcbiAgICAgICAgdmFsIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbmFub3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaW51dGUgOiB0XG4gICAgICAgIHZhbCBob3VyIDogdFxuICAgICAgICB2YWwgZGF5IDogdFxuICAgICAgZW5kXG5cbiAgICAgIHZhbCB0b19wYXJ0cyA6IHQgLT4gUGFydHMudFxuICAgICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdCBbQEBkZXJpdmluZyBoYXNoLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIHR5cGUgdCA9IHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gICAgICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG5cbiAgICAgICgqIElGIFRISVMgUkVQUkVTRU5UQVRJT04gRVZFUiBDSEFOR0VTLCBFTlNVUkUgVEhBVCBFSVRIRVJcbiAgICAgICAgICgxKSBhbGwgdmFsdWVzIHNlcmlhbGl6ZSB0aGUgc2FtZSB3YXkgaW4gYm90aCByZXByZXNlbnRhdGlvbnMsIG9yXG4gICAgICAgICAoMikgeW91IGFkZCBhIG5ldyBUaW1lLlNwYW4gdmVyc2lvbiB0byBzdGFibGUubWwgKilcbiAgICAgIGluY2x1ZGUgKFxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRcblxuICAgICAgICBsZXQgc2lnbiA9IHNpZ25fZXhuXG4gICAgICBlbmQgOlxuICAgICAgICBMaWtlX2FfZmxvYXQgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgICgqIHRoaXMgcHJldmVudHMgYW55IHdvcnJ5IGFib3V0IGhhdmluZyB0aGVzZSB2ZXJ5IGNvbW1vbiBuYW1lcyByZWRlZmluZWQgYmVsb3cgYW5kXG4gICAgICAgICBtYWtlcyB0aGVpciB1c2FnZSB3aXRoaW4gdGhpcyBtb2R1bGUgc2FmZXIuICBDb25zdGFudCBpcyBpbmNsdWRlZCBhdCB0aGUgdmVyeVxuICAgICAgICAgYm90dG9tIHRvIHJlLWV4cG9ydCB0aGVzZSBjb25zdGFudHMgaW4gYSBtb3JlIGNvbnZlbmllbnQgd2F5ICopXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTlcbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kID0gMUU2XG4gICAgICAgIGxldCBtaWxsaXNlY29uZHNfcGVyX3NlY29uZCA9IDFFM1xuXG4gICAgICAgICgqIHNwYW5zIGFyZSBzdG9yZWQgYXMgYSBmbG9hdCBpbiBzZWNvbmRzICopXG4gICAgICAgIGxldCBuYW5vc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWNyb3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgc2Vjb25kID0gb2ZfZmxvYXQgMS5cbiAgICAgICAgbGV0IG1pbnV0ZSA9IG9mX2Zsb2F0IDYwLlxuICAgICAgICBsZXQgaG91ciA9IG9mX2Zsb2F0ICg2MC4gKi4gNjAuKVxuICAgICAgICBsZXQgZGF5ID0gb2ZfZmxvYXQgKDI0LiAqLiA2MC4gKi4gNjAuKVxuICAgICAgZW5kXG5cblxuICAgICAgbGV0IHRvX3BhcnRzIHQgOiBQYXJ0cy50ID1cbiAgICAgICAgbGV0IHNpZ24gPSBGbG9hdC5zaWduX2V4biB0IGluXG4gICAgICAgIGxldCB0ID0gYWJzIHQgaW5cbiAgICAgICAgbGV0IGludGVncmFsID0gRmxvYXQucm91bmRfZG93biB0IGluXG4gICAgICAgIGxldCBmcmFjdGlvbmFsID0gdCAtLiBpbnRlZ3JhbCBpblxuICAgICAgICBsZXQgc2Vjb25kcyA9IEZsb2F0Lmlyb3VuZF9kb3duX2V4biBpbnRlZ3JhbCBpblxuICAgICAgICBsZXQgbmFub3NlY29uZHMgPSBGbG9hdC5pcm91bmRfbmVhcmVzdF9leG4gKGZyYWN0aW9uYWwgKi4gMUU5KSBpblxuICAgICAgICBsZXQgc2Vjb25kcywgbmFub3NlY29uZHMgPVxuICAgICAgICAgIGlmIEludC5lcXVhbCBuYW5vc2Vjb25kcyAxXzAwMF8wMDBfMDAwXG4gICAgICAgICAgdGhlbiBJbnQuc3VjYyBzZWNvbmRzLCAwXG4gICAgICAgICAgZWxzZSBzZWNvbmRzLCBuYW5vc2Vjb25kc1xuICAgICAgICBpblxuICAgICAgICBsZXQgc2VjID0gc2Vjb25kcyBtb2QgNjAgaW5cbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBzZWNvbmRzIC8gNjAgaW5cbiAgICAgICAgbGV0IG1pbiA9IG1pbnV0ZXMgbW9kIDYwIGluXG4gICAgICAgIGxldCBociA9IG1pbnV0ZXMgLyA2MCBpblxuICAgICAgICBsZXQgbnMgPSBuYW5vc2Vjb25kcyBtb2QgMTAwMCBpblxuICAgICAgICBsZXQgbWljcm9zZWNvbmRzID0gbmFub3NlY29uZHMgLyAxMDAwIGluXG4gICAgICAgIGxldCB1cyA9IG1pY3Jvc2Vjb25kcyBtb2QgMTAwMCBpblxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzID0gbWljcm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgbXMgPSBtaWxsaXNlY29uZHMgaW5cbiAgICAgICAgeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCAoIC8gKSB0IGYgPSBULm9mX2Zsb2F0ICgodCA6IFQudCA6PiBmbG9hdCkgLy4gZilcbiAgICBsZXQgKCAvLyApIChmIDogVC50KSAodCA6IFQudCkgPSAoZiA6PiBmbG9hdCkgLy4gKHQgOj4gZmxvYXQpXG5cbiAgICAoKiBNdWx0aXBseWluZyBieSAxRTMgaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIGRpdmlzaW9uIGJ5IDFFLTMgKilcbiAgICBsZXQgdG9fbnMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b191cyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b19tcyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b19zZWMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpXG4gICAgbGV0IHRvX21pbiB4ID0geCAvLyBULkNvbnN0YW50Lm1pbnV0ZVxuICAgIGxldCB0b19ociB4ID0geCAvLyBULkNvbnN0YW50LmhvdXJcbiAgICBsZXQgdG9fZGF5IHggPSB4IC8vIFQuQ29uc3RhbnQuZGF5XG4gICAgbGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4geCA9IEZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuICh0b19zZWMgeClcbiAgICBsZXQgKCAqKiApIGYgKHQgOiBULnQpID0gVC5vZl9mbG9hdCAoZiAqLiAodCA6PiBmbG9hdCkpXG5cbiAgICAoKiBEaXZpc2lvbiBieSAxRTMgaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIG11bHRpcGx5aW5nIGJ5IDFFLTMgKilcbiAgICBsZXQgb2ZfbnMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5uYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl91cyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl9tcyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm1pbGxpc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl9zZWMgeCA9IFQub2ZfZmxvYXQgeFxuICAgIGxldCBvZl9pbnQzMl9zZWNvbmRzIHNlYyA9IG9mX3NlYyAoSW50MzIudG9fZmxvYXQgc2VjKVxuXG4gICAgKCogTm90ZSB0aGF0IFtJbnQ2My50b19mbG9hdF0gY2FuIGxvc2UgcHJlY2lzaW9uLCBidXQgb25seSBvbiBpbnB1dHMgbGFyZ2UgZW5vdWdoIHRoYXRcbiAgICAgICBbb2Zfc2VjXSBpbiBlaXRoZXIgdGhlIFRpbWVfbnMgb3IgVGltZV9mbG9hdCBjYXNlIHdvdWxkIGxvc2UgcHJlY2lzaW9uIChvciBqdXN0IGJlXG4gICAgICAgcGxhaW4gb3V0IG9mIGJvdW5kcykgYW55d2F5LiAqKVxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzIHNlYyA9IG9mX3NlYyAoSW50NjMudG9fZmxvYXQgc2VjKVxuICAgIGxldCBvZl9taW4geCA9IHggKiogVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgb2ZfaHIgeCA9IHggKiogVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IG9mX2RheSB4ID0geCAqKiBULkNvbnN0YW50LmRheVxuICAgIGxldCBvZl9pbnRfbnMgeCA9IG9mX25zIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X3VzIHggPSBvZl91cyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF9tcyB4ID0gb2ZfbXMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfc2VjIHggPSBvZl9zZWMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfbWluIHggPSBvZl9taW4gKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfaHIgeCA9IG9mX2hyIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X2RheSB4ID0gb2ZfZGF5IChGbG9hdC5vZl9pbnQgeClcblxuICAgIGxldCBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHQgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0XG4gICAgICB8IFNlY29uZCAtPiB0b19zZWMgdFxuICAgICAgfCBNaW51dGUgLT4gdG9fbWluIHRcbiAgICAgIHwgSG91ciAtPiB0b19ociB0XG4gICAgICB8IERheSAtPiB0b19kYXkgdFxuICAgIDs7XG5cbiAgICBsZXQgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBvZl9ucyBmbG9hdFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBvZl91cyBmbG9hdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBvZl9tcyBmbG9hdFxuICAgICAgfCBTZWNvbmQgLT4gb2Zfc2VjIGZsb2F0XG4gICAgICB8IE1pbnV0ZSAtPiBvZl9taW4gZmxvYXRcbiAgICAgIHwgSG91ciAtPiBvZl9ociBmbG9hdFxuICAgICAgfCBEYXkgLT4gb2ZfZGF5IGZsb2F0XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICA/KHNpZ24gPSBTaWduLlBvcylcbiAgICAgICAgICA/KGRheSA9IDApXG4gICAgICAgICAgPyhociA9IDApXG4gICAgICAgICAgPyhtaW4gPSAwKVxuICAgICAgICAgID8oc2VjID0gMClcbiAgICAgICAgICA/KG1zID0gMClcbiAgICAgICAgICA/KHVzID0gMClcbiAgICAgICAgICA/KG5zID0gMClcbiAgICAgICAgICAoKVxuICAgICAgPVxuICAgICAgbGV0ICggKyApID0gVC4oICsgKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICBvZl9kYXkgKEZsb2F0Lm9mX2ludCBkYXkpXG4gICAgICAgICsgb2ZfaHIgKEZsb2F0Lm9mX2ludCBocilcbiAgICAgICAgKyBvZl9taW4gKEZsb2F0Lm9mX2ludCBtaW4pXG4gICAgICAgICsgb2Zfc2VjIChGbG9hdC5vZl9pbnQgc2VjKVxuICAgICAgICArIG9mX21zIChGbG9hdC5vZl9pbnQgbXMpXG4gICAgICAgICsgb2ZfdXMgKEZsb2F0Lm9mX2ludCB1cylcbiAgICAgICAgKyBvZl9ucyAoRmxvYXQub2ZfaW50IG5zKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBOZWcgLT4gVC4oIC0gKSBULnplcm8gdFxuICAgICAgfCBQb3MgfCBaZXJvIC0+IHRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb25zdGFudFxuXG4gICAgbGV0IHJhbmRvbWl6ZSA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgfnBlcmNlbnQgPVxuICAgICAgU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IHN0YXRlIH5wZXJjZW50IH5zY2FsZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc2hvcnRfc3RyaW5nIHQgPVxuICAgICAgbGV0ICh7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9IDogUGFydHMudCkgPSB0b19wYXJ0cyB0IGluXG4gICAgICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgIGxldCBvZl9zdHJpbmdfdjFfdjIgKHMgOiBzdHJpbmcpIH5pc192MiA9XG4gICAgICB0cnlcbiAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcImVtcHR5IHN0cmluZ1wiXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBmbG9hdCBuID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5kcm9wX3N1ZmZpeCBzIG4gd2l0aFxuICAgICAgICAgICAgfCBcIlwiIC0+IGZhaWx3aXRoIFwibm8gbnVtYmVyIGdpdmVuXCJcbiAgICAgICAgICAgIHwgcyAtPlxuICAgICAgICAgICAgICBsZXQgdiA9IEZsb2F0Lm9mX3N0cmluZyBzIGluXG4gICAgICAgICAgICAgIFZhbGlkYXRlLm1heWJlX3JhaXNlIChGbG9hdC52YWxpZGF0ZV9vcmRpbmFyeSB2KTtcbiAgICAgICAgICAgICAgdlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgIChtYXRjaCBzLltJbnQuKCAtICkgbGVuIDFdIHdpdGhcbiAgICAgICAgICAgfCAncycgLT5cbiAgICAgICAgICAgICBpZiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbSdcbiAgICAgICAgICAgICB0aGVuIG9mX21zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ3UnXG4gICAgICAgICAgICAgdGhlbiBvZl91cyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICduJ1xuICAgICAgICAgICAgIHRoZW4gb2ZfbnMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBULm9mX2Zsb2F0IChmbG9hdCAxKVxuICAgICAgICAgICB8ICdtJyAtPiBvZl9taW4gKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ2gnIC0+IG9mX2hyIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdkJyAtPiBvZl9kYXkgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIGlmIGlzX3YyXG4gICAgICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlRpbWUgc3BhbnMgbXVzdCBlbmQgaW4gbnMsIHVzLCBtcywgcywgbSwgaCwgb3IgZC5cIlxuICAgICAgICAgICAgIGVsc2UgZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG1zLCBzLCBtLCBoLCBvciBkLlwiKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmIFwiU3Bhbi5vZl9zdHJpbmcgY291bGQgbm90IHBhcnNlICclcyc6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cCA9IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwXG5cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwIG9mIFNleHAudCAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGV4Y2VwdGlvbiBUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IG9mIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgbGV0IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MiA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmdfdjFfdjIgeCB+aXNfdjIgd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gKFRfb2Zfc2V4cCAoc2V4cCwgZXhuKSkgc2V4cClcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvcl9leG4gKFRfb2Zfc2V4cF9leHBlY3RlZF9hdG9tX2J1dF9nb3Qgc2V4cCkgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgc3RyaW5nIH5pc192MiBzdWZmaXggZmxvYXQgPVxuICAgICAgaWYgaXNfdjJcbiAgICAgICgqIFRoaXMgaXMgdGhlIHNhbWUgZmxvYXQtdG8tc3RyaW5nIGNvbnZlcnNpb24gdXNlZCBpbiBbRmxvYXQuc2V4cF9vZl90XS4gIEl0J3MgbGlrZVxuICAgICAgICAgW0Zsb2F0LnRvX3N0cmluZ10sIGJ1dCBtYXkgbGVhdmUgb2ZmIHRyYWlsaW5nIHBlcmlvZC4gKilcbiAgICAgIHRoZW4gIVNleHBsaWIuQ29udi5kZWZhdWx0X3N0cmluZ19vZl9mbG9hdCBmbG9hdCBeIHN1ZmZpeFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJWclc1wiIGZsb2F0IHN1ZmZpeFxuICAgIDs7XG5cbiAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGFueSBtYXRlcmlhbCB3YXksIG1ha2Ugc3VyZVxuICAgICAgIHlvdSB1cGRhdGUgU3RhYmxlIGFwcHJvcHJpYXRlbHkuICopXG4gICAgKCogSSdkIGxpa2UgaXQgdG8gYmUgdGhlIGNhc2UgdGhhdCB5b3UgY291bGQgbmV2ZXIgY29uc3RydWN0IGFuIGluZmluaXRlIHNwYW4sIGJ1dCBJXG4gICAgICAgY2FuJ3QgdGhpbmsgb2YgYSBnb29kIHdheSB0byBlbmZvcmNlIGl0LiAgU28gdGhpcyB0b19zdHJpbmcgZnVuY3Rpb24gY2FuIHByb2R1Y2VcbiAgICAgICBzdHJpbmdzIHRoYXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGV5IGFyZSBmZWQgdG8gb2Zfc3RyaW5nICopXG4gICAgbGV0IHRvX3N0cmluZ192MV92MiAodCA6IFQudCkgfmlzX3YyID1cbiAgICAgICgqIHRoaXMgaXMgYSBzYWQgYnJva2VuIGFic3RyYWN0aW9uLi4uICopXG4gICAgICBsZXQgbW9kdWxlIEMgPSBGbG9hdC5DbGFzcyBpblxuICAgICAgbWF0Y2ggRmxvYXQuY2xhc3NpZnkgKHQgOj4gZmxvYXQpIHdpdGhcbiAgICAgIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT4gXCIwc1wiXG4gICAgICB8IEMuSW5maW5pdGUgLT4gaWYgVC4oID4gKSB0IFQuemVybyB0aGVuIFwiaW5mXCIgZWxzZSBcIi1pbmZcIlxuICAgICAgfCBDLk5hbiAtPiBcIm5hblwiXG4gICAgICB8IEMuTm9ybWFsIC0+XG4gICAgICAgIGxldCAoIDwgKSA9IFQuKCA8ICkgaW5cbiAgICAgICAgbGV0IGFic190ID0gVC5vZl9mbG9hdCAoRmxvYXQuYWJzICh0IDo+IGZsb2F0KSkgaW5cbiAgICAgICAgaWYgaXNfdjIgJiYgYWJzX3QgPCBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm5zXCIgKHRvX25zIHQpXG4gICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgYWJzX3QgPCBULkNvbnN0YW50Lm1pbGxpc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInVzXCIgKHRvX3VzIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LnNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJtc1wiICh0b19tcyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5taW51dGVcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwic1wiICh0b19zZWMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuaG91clxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJtXCIgKHRvX21pbiB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5kYXlcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwiaFwiICh0b19ociB0KVxuICAgICAgICBlbHNlIHN0cmluZyB+aXNfdjIgXCJkXCIgKHRvX2RheSB0KVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyID0gU2V4cC5BdG9tICh0b19zdHJpbmdfdjFfdjIgdCB+aXNfdjIpXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOmZhbHNlXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyOmZhbHNlXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjI6dHJ1ZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192Mjp0cnVlXG4gIGVuZFxuXG4gIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVjFcblxuICAgIGxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgICAgIGxldCBvcGVuIFQgaW5cbiAgICAgIGxldCBvcGVuIENvbnN0YW50IGluXG4gICAgICBsZXQgYWJzX3QgPSBULmFicyB0IGluXG4gICAgICBpZiBhYnNfdCA+PSBkYXlcbiAgICAgIHRoZW4gRGF5XG4gICAgICBlbHNlIGlmIGFic190ID49IGhvdXJcbiAgICAgIHRoZW4gSG91clxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgICAgIHRoZW4gTWludXRlXG4gICAgICBlbHNlIGlmIGFic190ID49IHNlY29uZFxuICAgICAgdGhlbiBTZWNvbmRcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWlsbGlzZWNvbmRcbiAgICAgIHRoZW4gTWlsbGlzZWNvbmRcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgICAgIHRoZW4gTWljcm9zZWNvbmRcbiAgICAgIGVsc2UgTmFub3NlY29uZFxuICAgIDs7XG5cbiAgICBsZXQgb2ZfdW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQgLT4gVC50ID1cbiAgICAgIGxldCBvcGVuIFQuQ29uc3RhbnQgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBtaWNyb3NlY29uZFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBtaWxsaXNlY29uZFxuICAgICAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gICAgICB8IE1pbnV0ZSAtPiBtaW51dGVcbiAgICAgIHwgSG91ciAtPiBob3VyXG4gICAgICB8IERheSAtPiBkYXlcbiAgICA7O1xuXG4gICAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IFwibnNcIlxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBcInVzXCJcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gXCJtc1wiXG4gICAgICB8IFNlY29uZCAtPiBcInNcIlxuICAgICAgfCBNaW51dGUgLT4gXCJtXCJcbiAgICAgIHwgSG91ciAtPiBcImhcIlxuICAgICAgfCBEYXkgLT4gXCJkXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBcIlRpbWUuU3Bhbi5vZl9zdHJpbmc6IFwiIF4gcmVhc29uIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIG1lc3NhZ2Ugc3RyaW5nXVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCB1bml0X29mX3RpbWVfbGlzdCA9XG4gICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZV9saXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImludmFsaWQgc3BhbiBwYXJ0IHN1ZmZpeFwiXG4gICAgICAgIHwgdW5pdF9vZl90aW1lIDo6IHJlc3QgLT5cbiAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHN0cmluZyB+cG9zOmluZGV4IH5zdWJzdHJpbmc6c3VmZml4XG4gICAgICAgICAgdGhlbiB1bml0X29mX3RpbWVcbiAgICAgICAgICBlbHNlIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IHJlc3RcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleCA9XG4gICAgICAgICgqIFdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBcIm1zXCIgY29tZXMgYmVmb3JlIFwibVwiIGluIFtVbml0X29mX3RpbWUuYWxsXSB0byBnZXQgYVxuICAgICAgICAgICBjb3JyZWN0IG1hdGNoIG9uIG1pbGxpc2Vjb25kIHRpbWVzdGFtcHMuIFRoaXMgYXNzdW1wdGlvbiBpcyBkZW1vbnN0cmF0ZWQgaW4gdGhlXG4gICAgICAgICAgIGV4cGVjdCB0ZXN0IGJlbG93LiAqKVxuICAgICAgICBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCBVbml0X29mX3RpbWUuYWxsXG4gICAgICA7O1xuXG4gICAgICAoKiBXZSB2YWxpZGF0ZSBtYWduaXR1ZGUgc3RyaW5ncyBzbyB0aGF0IHdlIGtub3cgd2hlcmUgdGhlIHVuaXQtb2YtdGltZSBzdWZmaXhcbiAgICAgICAgIGJlZ2lucywgYW5kIHNvIHRoYXQgb25seSBzZW5zaWJsZSBzdHJpbmdzIGFyZSBhbGxvd2VkLiBXZSBkbyBub3Qgd2FudCB0byBiZSBhc1xuICAgICAgICAgcGVybWlzc2l2ZSBhcyBbRmxvYXQub2Zfc3RyaW5nXTsgZm9yIGV4YW1wbGUsIGhleGFkZWNpbWFsIHNwYW4gbWFnbml0dWRlcyBhcmUgbm90XG4gICAgICAgICBhbGxvd2VkLiBBZnRlciB2YWxpZGF0aW9uLCB3ZSBzdGlsbCB1c2UgW0Zsb2F0Lm9mX3N0cmluZ10gdG8gcHJvZHVjZSB0aGUgYWN0dWFsXG4gICAgICAgICB2YWx1ZS4gKilcbiAgICAgIG1vZHVsZSBGbG9hdF9wYXJzZXIgPSBzdHJ1Y3RcbiAgICAgICAgKCogW0luX2RlY2ltYWxfaGF2ZV9kaWdpdF0gaW5jbHVkZXMgaGF2aW5nIGEgZGlnaXQgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICB0eXBlIHN0YXRlID1cbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG5cbiAgICAgICAgdHlwZSB0b2tlbiA9XG4gICAgICAgICAgfCBEaWdpdFxuICAgICAgICAgIHwgUG9pbnRcbiAgICAgICAgICB8IFVuZGVyXG4gICAgICAgICAgfCBTaWduXG4gICAgICAgICAgfCBFeHB0XG5cbiAgICAgICAgbGV0IHN0YXRlX2lzX2ZpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCAtPiBmYWxzZVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b2tlbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gU29tZSBEaWdpdFxuICAgICAgICAgIHwgJy4nIC0+IFNvbWUgUG9pbnRcbiAgICAgICAgICB8ICdfJyAtPiBTb21lIFVuZGVyXG4gICAgICAgICAgfCAnLScgfCAnKycgLT4gU29tZSBTaWduXG4gICAgICAgICAgfCAnRScgfCAnZScgLT4gU29tZSBFeHB0XG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW52YWxpZF9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImludmFsaWQgc3BhbiBwYXJ0IG1hZ25pdHVkZVwiXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGUgPVxuICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgaWYgaW5kZXggPSBsZW5cbiAgICAgICAgICB0aGVuIGlmIHN0YXRlX2lzX2ZpbmFsIHN0YXRlIHRoZW4gaW5kZXggZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHRva2VuX29mX2NoYXIgc3RyaW5nLltpbmRleF0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGlmIHN0YXRlX2lzX2ZpbmFsIHN0YXRlIHRoZW4gaW5kZXggZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgIHwgU29tZSB0b2tlbiAtPlxuICAgICAgICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHN0YXRlLCB0b2tlbiB3aXRoXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBQb2ludCAtPiBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgU2lnblxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBFeHB0IC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBQb2ludCAtPiBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRXhwdCAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgRXhwdCAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgUG9pbnQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFNpZ24gLT5cbiAgICAgICAgICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBEaWdpdCAtPiBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFNpZ24gLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBFeHB0IC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleDooaW5kZXggKyAxKSB+bGVuIH5zdGF0ZSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZmluZF9pbmRleF9hZnRlcl9mbG9hdCBzdHJpbmcgfmluZGV4IH5sZW4gPVxuICAgICAgICAgIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleCB+bGVuIH5zdGF0ZTpJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgcmVjIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlIH5pbmRleCB+bGVuID1cbiAgICAgICAgaWYgSW50LmVxdWFsIGluZGV4IGxlblxuICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc3VmZml4X2luZGV4ID0gRmxvYXRfcGFyc2VyLmZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuIGluXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHBhcnNlX3N1ZmZpeCBzdHJpbmcgfmluZGV4OnN1ZmZpeF9pbmRleCBpblxuICAgICAgICAgIGxldCB1bnRpbF9pbmRleCA9XG4gICAgICAgICAgICBJbnQuKCArICkgc3VmZml4X2luZGV4IChTdHJpbmcubGVuZ3RoIChzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID1cbiAgICAgICAgICAgIFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6aW5kZXggfmxlbjooSW50LiggLSApIHN1ZmZpeF9pbmRleCBpbmRleClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmbG9hdCA9IEZsb2F0Lm9mX3N0cmluZyBmbG9hdF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gbWFnbml0dWRlICsgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlIH5pbmRleDp1bnRpbF9pbmRleCB+bGVuKVxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX21hZ25pdHVkZSBzdHJpbmcgfmluZGV4IH5sZW4gPVxuICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZTpULnplcm8gfmluZGV4IH5sZW5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgbWF0Y2ggc3RyaW5nIHdpdGhcbiAgICAgICAgfCBcIk5BTnNcIiAtPiBvZl9zZWMgRmxvYXQubmFuXG4gICAgICAgIHwgXCItSU5Gc1wiIC0+IG9mX3NlYyBGbG9hdC5uZWdfaW5maW5pdHlcbiAgICAgICAgfCBcIklORnNcIiAtPiBvZl9zZWMgRmxvYXQuaW5maW5pdHlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbmVnYXRpdmUsIGluZGV4ID1cbiAgICAgICAgICAgIG1hdGNoIHN0cmluZy5bMF0gd2l0aFxuICAgICAgICAgICAgfCAnLScgLT4gdHJ1ZSwgMVxuICAgICAgICAgICAgfCAnKycgLT4gZmFsc2UsIDFcbiAgICAgICAgICAgIHwgXyAtPiBmYWxzZSwgMFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgaW5kZXggPj0gbGVuIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBpbnB1dFwiO1xuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuIGluXG4gICAgICAgICAgaWYgbmVnYXRpdmUgdGhlbiBULm5lZyBtYWduaXR1ZGUgZWxzZSBtYWduaXR1ZGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuXG4gICAgbW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICAgICAgbGV0IHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgZmxvYXQgPVxuICAgICAgICBsZXQgc3RyaW5nID0gRmxvYXQudG9fc3RyaW5nIGZsb2F0IGluXG4gICAgICAgIGxldCBzdWZmaXggPSBcIi5cIiBpblxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHN0cmluZyB+c3VmZml4XG4gICAgICAgIHRoZW4gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICBlbHNlIHN0cmluZ1xuICAgICAgOztcblxuICAgICAgKCogQXMgd2UgYnVpbGQgdXAgYSBzdHJpbmcsIHdlIGtlZXAgYSBydW5uaW5nIHN1bSBvZiB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHJlYWRcbiAgICAgICAgIGJhY2sgaW4sIHNvIHRoYXQgd2UgY2FuIGNvbXB1dGUgdGhlIHJlbWFpbmRlciB0aGF0IG5lZWRzIHRvIGJlIGdlbmVyYXRlZC4gKilcbiAgICAgIGxldCBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSA9XG4gICAgICAgIHN1bV90ICsgc2NhbGVfYnlfdW5pdF9vZl90aW1lIG1hZ25pdHVkZSB1bml0X29mX3RpbWVcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBzb21lIHVuaXRzICh2ZXJ5IGxhcmdlIG51bWJlcnMgb2YgZGF5cywgb3Igc2Vjb25kcyBhbmQgc21hbGxlcikgd2UganVzdFxuICAgICAgICAgcmVuZGVyIGEgZmxvYXQgZGlyZWN0bHksIHdpdGggYSBmaXggZm9yIHJvdW5kb2ZmIGVycm9yLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lID1cbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9IGRpdmlkZV9ieV91bml0X29mX3RpbWUgYWJzX3QgdW5pdF9vZl90aW1lIGluXG4gICAgICAgIGxldCBzdW1fdCA9IHN1bSB+c3VtX3Q6emVybyB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgaWYgc3VtX3QgPSBhYnNfdFxuICAgICAgICB0aGVuXG4gICAgICAgICAgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBtYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgICAgaWYgc3VtX3QgPCBhYnNfdFxuICAgICAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgICAgIGVsc2UgZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSAocHJldiBhYnNfdCkgdW5pdF9vZl90aW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAgIGxldCBmaXh1cF9tYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHJlbV90IGZpeHVwX3VuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgICgqIFtyZW1fdF0gaXMgYXQgVUxQIHNpemUgb2YgW2Fic190XSwgaXQgbmVlZHMganVzdCBvbmUgYml0IG9mIHByZWNpc2lvbiAqKVxuICAgICAgICAgIF4gc3ByaW50ZiBcIiUuMWdcIiBmaXh1cF9tYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgZml4dXBfdW5pdF9vZl90aW1lKVxuICAgICAgOztcblxuICAgICAgKCogRm9yIG5vbi1kZWNpbWFsIHVuaXRzIChtaW51dGVzIGFuZCBncmVhdGVyKSwgd2UgcmVuZGVyIGFuIGludGVnZXIgbWFnbml0dWRlLCBhbmRcbiAgICAgICAgIHJldHVybiB0aGF0IHdpdGggdGhlIHJ1bm5pbmcgc3VtIHNvIHRoZSByZW1haW5kZXIgY2FuIGJlIHJlbmRlcmVkIGF0IGEgc21hbGxlclxuICAgICAgICAgdW5pdC4gKilcbiAgICAgIGxldCB0b19pbnRfc3RyaW5nX2FuZF9zdW0gdW5pdF9vZl90aW1lIH5hYnNfdCB+c3VtX3QgPVxuICAgICAgICBsZXQgdW5pdF9zcGFuID0gb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICgqIFdlIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgbXVsdGlwbGUgb2YgW3VuaXRfb2ZfdGltZV0gdGhhdCBuZWVkcyB0byBiZVxuICAgICAgICAgICBhZGRlZCB0byBbc3VtX3RdLiBEdWUgdG8gcm91bmRpbmcsIHRoaXMgY2FuIGJlIG9mZiBieSBvbmUgKHdlJ3ZlIG5ldmVyIHNlZW4gYVxuICAgICAgICAgICBjYXNlIG9mZiBieSB0d28gb3IgbW9yZSksIHNvIHdlIHJlLWNvbXB1dGUgdGhlIHJlbWFpbmRlciBhbmQgY29ycmVjdCBpZlxuICAgICAgICAgICBuZWNlc3NhcnkuICopXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBGbG9hdC5yb3VuZF9kb3duIChyZW1fdCAvLyB1bml0X3NwYW4pIGluXG4gICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICBsZXQgbmV3X3JlbV90ID0gYWJzX3QgLSBuZXdfc3VtX3QgaW5cbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9XG4gICAgICAgICAgaWYgbmV3X3JlbV90ID0gemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgZWxzZSBpZiBuZXdfcmVtX3QgPCB6ZXJvXG4gICAgICAgICAgdGhlbiBtYWduaXR1ZGUgLS4gMS5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0X21hZ25pdHVkZSA9IG1hZ25pdHVkZSArLiAxLiBpblxuICAgICAgICAgICAgbGV0IG5leHRfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZTpuZXh0X21hZ25pdHVkZSBpblxuICAgICAgICAgICAgbGV0IG5leHRfcmVtX3QgPSBhYnNfdCAtIG5leHRfc3VtX3QgaW5cbiAgICAgICAgICAgIGlmIG5leHRfcmVtX3QgPCB6ZXJvIHRoZW4gbWFnbml0dWRlIGVsc2UgbmV4dF9tYWduaXR1ZGUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIEZsb2F0LiggPD0gKSBtYWduaXR1ZGUgMC5cbiAgICAgICAgdGhlbiBcIlwiLCBzdW1fdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgc3RyaW5nID1cbiAgICAgICAgICAgIEludDYzLnRvX3N0cmluZyAoSW50NjMub2ZfZmxvYXQgbWFnbml0dWRlKVxuICAgICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgc3RyaW5nLCBuZXdfc3VtX3QpXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgdCA9IEZsb2F0LmxvZzEwICh0b19zZWMgdClcblxuICAgICAgKCogVGhlIGZpbmFsIHNlY29uZHMtb3Itc21hbGxlciB1bml0IG5lZWRzIHRvIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggZGlnaXRzIHRvXG4gICAgICAgICByb3VuZC10cmlwIHRoZSB3aG9sZSBzcGFuICh3aGljaCBpcyBtaW51dGVzIG9yIGdyZWF0ZXIpOyB0aGlzIGNhbiBiZVxuICAgICAgICAgc2lnbmlmaWNhbnRseSBmZXdlciBkaWdpdHMgdGhhbiB3b3VsZCBiZSBuZWVkZWQgZm9yIHRoZSBzZWNvbmRzLW9yLXNtYWxsZXJcbiAgICAgICAgIHJlbWFpbmRlciBpdHNlbGYuICopXG4gICAgICBsZXQgdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5zdW1fdCB+YWJzX3QgPVxuICAgICAgICBpZiBzdW1fdCA+PSBhYnNfdFxuICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgcmVtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9zcGFuID0gb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSByZW1fdCAvLyB1bml0X3NwYW4gaW5cbiAgICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgbmV3X3JlbV90ID0gYWJzX3QgLSBuZXdfc3VtX3QgaW5cbiAgICAgICAgICBpZiBhYnMgcmVtX3QgPD0gYWJzIG5ld19yZW1fdFxuICAgICAgICAgIHRoZW4gXCJcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaWdpdCA9XG4gICAgICAgICAgICAgIEZsb2F0Lmlyb3VuZF9kb3duX2V4biAoZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgcmVtX3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGhhbGZfdWxwID0gKGFic190IC0gcHJldiBhYnNfdCkgLyAyLiBpblxuICAgICAgICAgICAgbGV0IG9yZGVyX29mX21hZ25pdHVkZV9vZl9maW5hbF9kaWdpdCA9XG4gICAgICAgICAgICAgICgqIFRoaXMgd29ya3Mgb3V0IHRvIHJvdW5kaW5nIGRvd24sIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBleGFjdCBpbnRlZ2VycyxcbiAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIGRlY3JlbWVudGVkLiBUaGlzIG1ha2VzIHN1cmUgd2UgYWx3YXlzIHN0b3AgYXQgYSBkaWdpdCB3aXRoXG4gICAgICAgICAgICAgICAgIHN0cmljdGx5IG1vcmUgcHJlY2lzaW9uIHRoYW4gaGFsZiB0aGUgVUxQLiAqKVxuICAgICAgICAgICAgICBJbnQucHJlZCAoRmxvYXQuaXJvdW5kX3VwX2V4biAoZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgaGFsZl91bHApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGlnaXRzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgMSArIG9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaWdpdCAtIG9yZGVyX29mX21hZ25pdHVkZV9vZl9maW5hbF9kaWdpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzdWZmaXggPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgICAgc3ByaW50ZiBcIiUuKmdcIiBudW1iZXJfb2ZfZGlnaXRzIG1hZ25pdHVkZSBeIHN1ZmZpeCkpXG4gICAgICA7O1xuXG4gICAgICAoKiBUaGlzIGhlbHBlciBhdm9pZHMgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbiwgYmVjYXVzZSBmb3Igb3VyIHVzZSBiZWxvdywgaXQgaXNcbiAgICAgICAgIGNvbW1vbiB0byBoYXZlIGVpdGhlciBvciBib3RoIGFyZ3VtZW50cyBiZSBlbXB0eS4gQ3VycmVudGx5ICgyMDE4LTAyKSwgdGhlXG4gICAgICAgICBidWlsdC1pbiBbXl0gYWxsb2NhdGVzIGV2ZW4gd2hlbiBhcHBlbmRpbmcgdG8gYW4gZW1wdHkgc3RyaW5nLiAqKVxuICAgICAgbGV0ICggXj8gKSB4IHkgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgeCB0aGVuIHkgZWxzZSBpZiBTdHJpbmcuaXNfZW1wdHkgeSB0aGVuIHggZWxzZSB4IF4geVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IGZsb2F0ID0gdG9fZmxvYXQgdCBpblxuICAgICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSBmbG9hdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICgqIFdlIHByaW50IHNwZWNpZmljIHNwZWNpYWwgc3RyaW5ncyBmb3Igbm9uLWZpbml0ZSBmbG9hdHMgKilcbiAgICAgICAgICAgIEZsb2F0LmlzX25hbiBmbG9hdFxuICAgICAgICAgIHRoZW4gXCJOQU5zXCJcbiAgICAgICAgICBlbHNlIGlmIEZsb2F0LmlzX25lZ2F0aXZlIGZsb2F0XG4gICAgICAgICAgdGhlbiBcIi1JTkZzXCJcbiAgICAgICAgICBlbHNlIFwiSU5Gc1wiXG4gICAgICAgIGVsc2UgaWYgdCA9IHplcm9cbiAgICAgICAgdGhlbiBcIjBzXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHRvX3VuaXRfb2ZfdGltZSB0IGluXG4gICAgICAgICAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgICAgICAgICBsZXQgc2lnbiA9IGlmIHQgPCB6ZXJvIHRoZW4gXCItXCIgZWxzZSBcIlwiIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZV9zdHJpbmcgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdF9vZl90aW1lIHdpdGhcbiAgICAgICAgICAgICgqIFdlIGNhbiB1c2Ugbm9ybWFsIGZsb2F0IG5vdGF0aW9uIGZvciBzZWNvbmRzIGFuZCBzdWItc2Vjb25kIHVuaXRzLCB0aGV5IGFyZVxuICAgICAgICAgICAgICAgcmVhZGFibGUgd2l0aCBhIGRlY2ltYWwgcG9pbnQuICopXG4gICAgICAgICAgICB8IE5hbm9zZWNvbmQgfCBNaWNyb3NlY29uZCB8IE1pbGxpc2Vjb25kIHwgU2Vjb25kIC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOk5hbm9zZWNvbmRcbiAgICAgICAgICAgICgqIEZvciBsYXJnZSBlbm91Z2ggdmFsdWVzIHRoYXQgdGhlIFVMUCBpcyBhIGRheSBvciBtb3JlLCB3ZSBjYW4gdXNlIGZsb2F0XG4gICAgICAgICAgICAgICBub3RhdGlvbiBiZWNhdXNlIHdlIGFyZSBleHByZXNzaW5nIGEgc2luZ2xlLCB2ZXJ5IGxhcmdlIGludGVnZXIuICopXG4gICAgICAgICAgICB8IERheSB3aGVuIG5leHQgYWJzX3QgLSBhYnNfdCA+PSBkYXkgLT5cbiAgICAgICAgICAgICAgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWU6RGF5XG4gICAgICAgICAgICAoKiBGb3IgZXZlcnl0aGluZyBpbiBiZXR3ZWVuLCB3ZSBuZWVkIHRvIHVzZSBpbnRlZ2VyIHVuaXRzIG9mIGRheXMsIGhvdXJzLFxuICAgICAgICAgICAgICAgYW5kL29yIG1pbnV0ZXMsIGJlY2F1c2UgdGhvc2UgdW5pdHMgYXJlIG5vdCByZWFkYWJsZSBhcyBkZWNpbWFscywgYW5kIHdlXG4gICAgICAgICAgICAgICB0YWNrIG9uIGEgZGVjaW1hbCByZW1haW5kZXIgb2YgYSBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBpZiBuZWNlc3NhcnkuICopXG4gICAgICAgICAgICB8IE1pbnV0ZSB8IEhvdXIgfCBEYXkgLT5cbiAgICAgICAgICAgICAgbGV0IHN1bV90ID0gemVybyBpblxuICAgICAgICAgICAgICBsZXQgZGF5X3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBEYXkgaW5cbiAgICAgICAgICAgICAgbGV0IGhvdXJfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IEhvdXIgaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgTWludXRlIGluXG4gICAgICAgICAgICAgIGxldCBmbG9hdF9zdHJpbmcgPSB0b19mbG9hdF9zdHJpbmdfYWZ0ZXJfaW50X3N0cmluZ3MgfmFic190IH5zdW1fdCBpblxuICAgICAgICAgICAgICBkYXlfc3RyaW5nIF4/IGhvdXJfc3RyaW5nIF4/IG1pbnV0ZV9zdHJpbmcgXj8gZmxvYXRfc3RyaW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzaWduIF4/IG1hZ25pdHVkZV9zdHJpbmcpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy50b19zdHJpbmdcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TcGFuLlN0YWJsZS5WMy50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhbiBBdG9tXCIgc1xuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYzXG5cbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgPSB0b19mbG9hdFxuXG5sZXQgdG9fc3RyaW5nX2h1bVxuICAgICAgPyhkZWxpbWl0ZXIgPSAnXycpXG4gICAgICA/KGRlY2ltYWxzID0gMylcbiAgICAgID8oYWxpZ25fZGVjaW1hbCA9IGZhbHNlKVxuICAgICAgP3VuaXRfb2ZfdGltZVxuICAgICAgdFxuICA9XG4gIGxldCBmbG9hdCwgc3VmZml4ID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWUgdW5pdF9vZl90aW1lIH5kZWZhdWx0Oih0b191bml0X29mX3RpbWUgdCkgd2l0aFxuICAgIHwgRGF5IC0+IHRvX2RheSB0LCBcImRcIlxuICAgIHwgSG91ciAtPiB0b19ociB0LCBcImhcIlxuICAgIHwgTWludXRlIC0+IHRvX21pbiB0LCBcIm1cIlxuICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0LCBcInNcIlxuICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdCwgXCJtc1wiXG4gICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0LCBcInVzXCJcbiAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdCwgXCJuc1wiXG4gIGluXG4gIGxldCBwcmVmaXggPVxuICAgIEZsb2F0LnRvX3N0cmluZ19odW0gZmxvYXQgfmRlbGltaXRlciB+ZGVjaW1hbHMgfnN0cmlwX3plcm86KG5vdCBhbGlnbl9kZWNpbWFsKVxuICBpblxuICBsZXQgc3VmZml4ID1cbiAgICBpZiBhbGlnbl9kZWNpbWFsICYmIEludC4oID0gKSAoU3RyaW5nLmxlbmd0aCBzdWZmaXgpIDEgdGhlbiBzdWZmaXggXiBcIiBcIiBlbHNlIHN1ZmZpeFxuICBpblxuICBwcmVmaXggXiBzdWZmaXhcbjs7XG5cbmxldCBnZW5faW5jbCBsbyBoaSA9XG4gIEZsb2F0Lmdlbl9pbmNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgKCogVGVjaG5pY2FsbHkgZXhjbHVzaXZlIHJhdGhlciB0aGFuIGluY2x1c2l2ZSwgYnV0IG90aGVyd2lzZSBzYXRpc2ZpZXMgdGhlIGNvbnRyYWN0IHRvXG4gICAgIHdpdGhpbiAxdWxwIG9mIHRoZSBnaXZlbiBib3VuZHMuICopXG4gIEZsb2F0Lmdlbl91bmlmb3JtX2V4Y2wgKHRvX3NlYyBsbykgKHRvX3NlYyBoaSkgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NlY1xuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgKCogV2UgZ2VuZXJhdGUgc3BhbnMgdXAgdG8gKHNsaWdodGx5IG1vcmUgdGhhbikgYSBtaWxsZW5pdW0sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLiBUaGlzXG4gICAgIGlzIGJhc2VkIG9uIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIsIGluIHdoaWNoIHllYXJzIGF2ZXJhZ2UgMzY1LjI0MjUgZGF5cyB3aGVuXG4gICAgIGFjY291bnRpbmcgZm9yIGxlYXAgZGF5cy4gQ292ZXJpbmcgYSB0d28tbWlsbGVuaXVtIHNwYW4gaXMgbW9yZSB0aGFuIGVub3VnaCBmb3IgbW9zdFxuICAgICBwcmFjdGljYWwgcHVycG9zZXMsIGNlcnRhaW5seSBtb3JlIHRoYW4gZW5vdWdoIHRvIGNvdmVyIHRoZSByZXByZXNlbnRhYmxlIHJhbmdlIG9mXG4gICAgIFtTcGFuX25zXSwgYW5kIHJlc3VsdHMgaW4gZmluaXRlIHNwYW5zIGFuZCB0aW1lcyB0aGF0IGNhbiBiZSBzZXJpYWxpemVkLlxuXG4gICAgIFdlIGdlbmVyYXRlIGJ5IGZpbHRlcmluZyB0aGUgZGVmYXVsdCBnZW5lcmF0b3Igc28gdGhhdCBzcGFucyBhcmUgc3RpbGwgc2tld2VkIHRvd2FyZFxuICAgICBzbWFsbCB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZSBib3VuZHMgYXJlIGxhcmdlLiAqKVxuICBsZXQgbWlsbGVuaXVtID0gb2ZfZGF5IChGbG9hdC5yb3VuZF91cCAoMzY1LjI0MjUgKi4gMTAwMC4pKSBpblxuICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgcXVpY2tjaGVja19nZW5lcmF0b3IgfmY6KGZ1biB0IC0+XG4gICAgbmVnIG1pbGxlbml1bSA8PSB0ICYmIHQgPD0gbWlsbGVuaXVtKVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZS5TcGFuXCJcbiAgZW5kKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuXG4gICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIHNwYW5zIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbSAxMDguMDdcbiAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kIHByZXR0eVxuICAgICBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZCBmcm9tXG4gICAgIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc3VmZml4X29mX3VuaXRfb2ZfdGltZSA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWVcbiAgbGV0IHBhcnNlX3N1ZmZpeCA9IFN0YWJsZS5WMy5PZl9zdHJpbmcucGFyc2Vfc3VmZml4XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBTcGFuID0gU3Bhbl9mbG9hdFxuXG4oKiBDcmVhdGUgYW4gYWJzdHJhY3QgdHlwZSBmb3IgT2ZkYXkgdG8gcHJldmVudCB1cyBmcm9tIGNvbmZ1c2luZyBpdCB3aXRoXG4gICBvdGhlciBmbG9hdHMuXG4qKVxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXRcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGFkZCA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgc3ViIDogdCAtPiBTcGFuLnQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHByZXYgOiB0IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCA6IFNwYW4udCAtPiB0XG4gICAgICB2YWwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgOiBTcGFuLnQgLT4gYm9vbFxuICAgICAgdmFsIHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBzdGFydF9vZl9kYXkgOiB0XG4gICAgICB2YWwgc3RhcnRfb2ZfbmV4dF9kYXkgOiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICAoKiBOdW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodC4gKilcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICAgICAgaW5jbHVkZSAoXG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdFxuXG4gICAgICAgIGxldCBzaWduID0gc2lnbl9leG5cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLkV4cG9ydC5zdGFibGVfd2l0bmVzc19mbG9hdFxuICAgICAgICA7O1xuICAgICAgZW5kIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGVuZClcblxuICAgICAgKCogSUYgVEhJUyBSRVBSRVNFTlRBVElPTiBFVkVSIENIQU5HRVMsIEVOU1VSRSBUSEFUIEVJVEhFUlxuICAgICAgICAgKDEpIGFsbCB2YWx1ZXMgc2VyaWFsaXplIHRoZSBzYW1lIHdheSBpbiBib3RoIHJlcHJlc2VudGF0aW9ucywgb3JcbiAgICAgICAgICgyKSB5b3UgYWRkIGEgbmV3IFRpbWUuT2ZkYXkgdmVyc2lvbiB0byBzdGFibGUubWwgKilcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gICAgICAoKiBBbm90aGVyIHJlYXNvbmFibGUgY2hvaWNlIHdvdWxkIGJlIG9ubHkgYWxsb3dpbmcgT2ZkYXkudCB0byBiZSA8IDI0aHIsIGJ1dCB0aGlzXG4gICAgICAgICBjaG9pY2Ugd2FzIG1hZGUgZWFybHkgb24gYW5kIHBlb3BsZSBiZWNhbWUgdXNlZCB0byBiZWluZyBhYmxlIHRvIGVhc2lseSBjYWxsIDI0aHJcbiAgICAgICAgIHRoZSBlbmQgb2YgdGhlIGRheS4gIEl0J3MgYSBiaXQgc2FkIGJlY2F1c2UgaXQgc2hhcmVzIHRoYXQgbW9tZW50IHdpdGggdGhlXG4gICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZGF5LCBhbmQgcm91bmQgdHJpcHMgb2RkbHkgaWYgcGFzc2VkIHRocm91Z2hcbiAgICAgICAgIFRpbWUudG9fZGF0ZV9vZmRheS9UaW1lLm9mX2RhdGVfb2ZkYXkuXG5cbiAgICAgICAgIE5vdGU6IFtTY2hlZHVsZS50XSByZXF1aXJlcyB0aGF0IHRoZSBlbmQgb2YgZGF5IGJlIHJlcHJlc2VudGFibGUsIGFzIGl0J3MgdGhlXG4gICAgICAgICBvbmx5IHdheSB0byB3cml0ZSBhIHNjaGVkdWxlIGluIHRlcm1zIG9mIFtPZmRheS50XXMgdGhhdCBzcGFucyB0d28gd2Vla2RheXMuICopXG4gICAgICAoKiBvZmRheSBtdXN0IGJlID49IDAgYW5kIDw9IDI0aCAqKVxuICAgICAgbGV0IGlzX3ZhbGlkICh0IDogdCkgPVxuICAgICAgICBsZXQgdCA9IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgICAgU3Bhbi4oIDw9ICkgU3Bhbi56ZXJvIHQgJiYgU3Bhbi4oIDw9ICkgdCBTcGFuLmRheVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuXG4gICAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgc3BhbiA9XG4gICAgICAgIGlzX3ZhbGlkIChvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gICAgICAgIGxldCBtb2R1bGUgQyA9IEZsb2F0LkNsYXNzIGluXG4gICAgICAgIGxldCBzID0gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBtYXRjaCBGbG9hdC5jbGFzc2lmeSBzIHdpdGhcbiAgICAgICAgfCBDLkluZmluaXRlIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbmZpbml0ZSB2YWx1ZVwiXG4gICAgICAgIHwgQy5OYW4gLT4gaW52YWxpZF9hcmcgXCJPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IE5hTiB2YWx1ZVwiXG4gICAgICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPlxuICAgICAgICAgIGlmIG5vdCAoaXNfdmFsaWQgcylcbiAgICAgICAgICB0aGVuIGludmFsaWRfYXJnZiAhXCJPZmRheSBvdXQgb2YgcmFuZ2U6ICV7U3Bhbn1cIiBzcGFuICgpXG4gICAgICAgICAgZWxzZSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gMC5cbiAgICAgIGxldCBzdGFydF9vZl9uZXh0X2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBTcGFuLmRheVxuXG4gICAgICBsZXQgYWRkICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0ICsuIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWIgKHQgOiB0KSAoc3BhbiA6IFNwYW4udCkgPVxuICAgICAgICBsZXQgdCA9IHQgLS4gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBpZiBpc192YWxpZCB0IHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBVcCB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHByZXYgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHQgaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgY2FuZGlkYXRlIHRoZW4gU29tZSBjYW5kaWRhdGUgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlmZiB0MSB0MiA9XG4gICAgICAgIFNwYW4uKCAtICkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQxKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdDIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPVxuICAgICAgT3B0aW9uLnZhbHVlX2V4biAoVC5zdWIgVC5zdGFydF9vZl9uZXh0X2RheSBTcGFuLm1pY3Jvc2Vjb25kKVxuICAgIDs7XG5cbiAgICAoKiBbY3JlYXRlXSBjaG9wcyBvZmYgYW55IHN1YnNlY29uZCBwYXJ0IHdoZW4gW3NlYyA9IDYwXSB0byBoYW5kbGUgbGVhcCBzZWNvbmRzLiBJblxuICAgICAgIHBhcnRpY3VsYXIgaXQncyB0cnlpbmcgdG8gYmUgZ2VuZXJvdXMgYWJvdXQgcmVhZGluZyBpbiB0aW1lcyBvbiB0aGluZ3MgbGlrZSBmaXhcbiAgICAgICBtZXNzYWdlcyB0aGF0IG1pZ2h0IGluY2x1ZGUgYW4gZXh0cmEgdW5saWtlbHkgc2Vjb25kLlxuXG4gICAgICAgT3RoZXIgd2F5cyBvZiB3cml0aW5nIGEgdGltZSwgbGlrZSAxMDAwbXMsIHdoaWxlIG1hdGhlbWF0aWNhbGx5IHZhbGlkLCBkb24ndCBtYXRjaFxuICAgICAgIHdheXMgdGhhdCBwZW9wbGUgYWN0dWFsbHkgd3JpdGUgdGltZXMgZG93biwgc28gd2UgZGlkbid0IHNlZSB0aGUgbmVlZCB0byBzdXBwb3J0XG4gICAgICAgdGhlbS4gVGhhdCBpcywgYSBjbG9jayBtaWdodCBsZWdpdGltYXRlbHkgcmVhZCAyMzo1OTo2MCAob3IsIHdpdGggNjAgc2Vjb25kcyBhdFxuICAgICAgIHRpbWVzIG9mIGRheSBvdGhlciB0aGFuIDIzOjU5LCBkZXBlbmRpbmcgb24gdGhlIHRpbWUgem9uZSksIGJ1dCBpdCBkb2Vzbid0IHNlZW1cbiAgICAgICByZWFzb25hYmxlIGZvciBhIGNsb2NrIHRvIHJlYWQgXCIyMzo1OTo1OSBhbmQgMTAwMG1zXCIuICopXG4gICAgbGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgICAgIGxldCBtcywgdXMsIG5zID1cbiAgICAgICAgbWF0Y2ggc2VjIHdpdGhcbiAgICAgICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICAgICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgICAgIGluXG4gICAgICBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5jcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQpXG5cbiAgICBsZXQgdG9fc3RyaW5nX2dlbiB+ZHJvcF9tcyB+ZHJvcF91cyB+dHJpbSB0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCAhICkgPSBJbnQ2My5vZl9pbnQgaW5cbiAgICAgIGxldCAoIG1vZCApID0gSW50NjMucmVtIGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGFzc2VydCAoaWYgZHJvcF9tcyB0aGVuIGRyb3BfdXMgZWxzZSB0cnVlKTtcbiAgICAgIGxldCBmbG9hdF9zZWMgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KSBpblxuICAgICAgbGV0IHVzID0gRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9leG4gKGZsb2F0X3NlYyAqLiAxZTYpIGluXG4gICAgICBsZXQgbXMsIHVzID0gdXMgLyAhMTAwMCwgdXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBzZWMsIG1zID0gbXMgLyAhMTAwMCwgbXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBtaW4sIHNlYyA9IHNlYyAvICE2MCwgc2VjIG1vZCAhNjAgfD4gaSBpblxuICAgICAgbGV0IGhyLCBtaW4gPSBtaW4gLyAhNjAsIG1pbiBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociA9IGkgaHIgaW5cbiAgICAgIGxldCBkb250X3ByaW50X3VzID0gZHJvcF91cyB8fCAodHJpbSAmJiB1cyA9IDApIGluXG4gICAgICBsZXQgZG9udF9wcmludF9tcyA9IGRyb3BfbXMgfHwgKHRyaW0gJiYgbXMgPSAwICYmIGRvbnRfcHJpbnRfdXMpIGluXG4gICAgICBsZXQgZG9udF9wcmludF9zID0gdHJpbSAmJiBzZWMgPSAwICYmIGRvbnRfcHJpbnRfbXMgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBpZiBkb250X3ByaW50X3NcbiAgICAgICAgdGhlbiA1XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF9tc1xuICAgICAgICB0aGVuIDhcbiAgICAgICAgZWxzZSBpZiBkb250X3ByaW50X3VzXG4gICAgICAgIHRoZW4gMTJcbiAgICAgICAgZWxzZSAxNVxuICAgICAgaW5cbiAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczowIGhyO1xuICAgICAgQnl0ZXMuc2V0IGJ1ZiAyICc6JztcbiAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgbWluO1xuICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICc6JztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiBzZWM7XG4gICAgICAgIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBCeXRlcy5zZXQgYnVmIDggJy4nO1xuICAgICAgICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjkgbXM7XG4gICAgICAgICAgaWYgZG9udF9wcmludF91cyB0aGVuICgpIGVsc2Ugd3JpdGVfM19kaWdpdF9pbnQgYnVmIH5wb3M6MTIgdXMpKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTp0cnVlIHRcbiAgICBsZXQgdG9fc2VjX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczp0cnVlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuICAgIGxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6dHJ1ZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBsZXQgc21hbGxfZGlmZiA9XG4gICAgICBsZXQgaG91ciA9IDM2MDAuIGluXG4gICAgICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgICAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgICAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgICAgICBsZXQgZGlmZiA9IG9mZGF5MSAtLiBvZmRheTIgaW5cbiAgICAgICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICAgICAgbGV0IGQxID0gRmxvYXQubW9kX2Zsb2F0IGRpZmYgaG91ciBpblxuICAgICAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICAgICAgbGV0IGQyID0gRmxvYXQubW9kX2Zsb2F0IChkMSArLiBob3VyKSBob3VyIGluXG4gICAgICAgIGxldCBkID0gaWYgRmxvYXQuKCA+ICkgZDIgKGhvdXIgLy4gMi4pIHRoZW4gZDIgLS4gaG91ciBlbHNlIGQyIGluXG4gICAgICAgIFNwYW4ub2Zfc2VjIGRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOmZhbHNlIH50cmltOmZhbHNlIHRcblxuICAgIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuT2ZkYXlcIlxuICAgICAgZW5kKVxuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgc3Vic2VjID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDAuXG4gICAgICAgIGVsc2UgRmxvYXQub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnN1YnNlY19wb3MgfmxlbjpzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIEZsb2F0Lm9mX2ludCAoKGhyICogMzYwMCkgKyAobWluICogNjApICsgc2VjKSArLiBzdWJzZWNcbiAgICAgIHw+IFNwYW4ub2Zfc2VjXG4gICAgICB8PiBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHMgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gb2Zfc2V4cF9lcnJvciAoXCJPZmRheS50X29mX3NleHA6IFwiIF4gcykgc2V4cClcbiAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiT2ZkYXkudF9vZl9zZXhwXCIgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHNleHBfb2ZfdCBzcGFuID0gU2V4cC5BdG9tICh0b19zdHJpbmcgc3BhbilcblxuICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgICAgIHRyeSBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpjcmVhdGVfZnJvbV9wYXJzZWQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCglcyk6ICVzXCJcbiAgICAgICAgICAoU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbilcbiAgICAgICAgICAoRXhuLnRvX3N0cmluZyBleG4pXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBsbykgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGhpKVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG5cbiAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgb2ZkYXlzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbVxuICAgICAxMDguMDcgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgIHByZXR0eSBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZFxuICAgICBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEMpXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xuIiwiKCogU2VlIHRpbWVfZmxvYXQubWwgZm9yIHRoZSBwcmltYXJ5IGluc3RhbnRpYXRpb24gb2YgdGhpcyBmdW5jdG9yIHRoYXQgaXMgdmlzaWJsZSBvdXRzaWRlXG4gICBvZiBDb3JlIGFzIFRpbWUgKHNlZSBjb3JlLm1sKS4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgVGltZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUaW1lMCA6IFRpbWUwX2ludGYuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRpbWUwID0gVGltZTBcbiAgaW5jbHVkZSBUaW1lMFxuXG4gIGxldCBlcG9jaCA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi56ZXJvXG4gIGxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPC4gdDJcbiAgbGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPi4gdDJcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgIGluY2x1ZGUgVGltZV9pbnRmLlpvbmUgd2l0aCBtb2R1bGUgVGltZSA6PSBUaW1lMFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZTAuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICBUaW1lMC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGFiYnJldmlhdGlvbiB0IHRpbWUgPVxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgKGluZGV4IHQgdGltZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9XG4gICAgICBtYXRjaCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleFxuICAgICAgICAgICwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChJbmRleC5uZXh0IGluZGV4KVxuICAgIGxldCBwcmV2X2Nsb2NrX3NoaWZ0IHQgfmF0X29yX2JlZm9yZTp0aW1lID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG4gICAgbGV0IG5leHRfY2xvY2tfc2hpZnQgdCB+c3RyaWN0bHlfYWZ0ZXI6dGltZSA9IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuXG4gICAgbGV0IGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgdCB0aW1lID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4IHQgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXldIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYWJzX2RpZmYgdDEgdDIgPSBTcGFuLmFicyAoZGlmZiB0MSB0MilcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgcmVsYXRpdmUgPSBEYXRlX2FuZF9vZmRheS5vZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgaW5cbiAgICBab25lLmFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgem9uZSByZWxhdGl2ZVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX29mZGF5X3ByZWNpc2UgZGF0ZSBvZmRheSB+em9uZSA9XG4gICAgKCogV2UgYXNzdW1lIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB6b25lIHNoaWZ0IHdpdGhpbiBhIGdpdmVuIGxvY2FsIGRheS4gICopXG4gICAgbGV0IHN0YXJ0X29mX2RheSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBPZmRheS5zdGFydF9vZl9kYXkgaW5cbiAgICBsZXQgcHJvcG9zZWRfdGltZSA9IGFkZCBzdGFydF9vZl9kYXkgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KSBpblxuICAgIG1hdGNoIFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjpzdGFydF9vZl9kYXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgfCBTb21lIChzaGlmdF9zdGFydCwgc2hpZnRfYW1vdW50KSAtPlxuICAgICAgbGV0IHNoaWZ0X2JhY2t3YXJkcyA9IFNwYW4uKHNoaWZ0X2Ftb3VudCA8IHplcm8pIGluXG4gICAgICAoKiBzdGFydCBhbmQgZW5kIG9mIHRoZSBcInByb2JsZW1hdGljIHJlZ2lvblwiICopXG4gICAgICBsZXQgcywgZSA9XG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnQsIHNoaWZ0X3N0YXJ0XG4gICAgICAgIGVsc2Ugc2hpZnRfc3RhcnQsIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnRcbiAgICAgIGluXG4gICAgICBpZiBwcm9wb3NlZF90aW1lIDwgc1xuICAgICAgdGhlbiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgICBlbHNlIGlmIHMgPD0gcHJvcG9zZWRfdGltZSAmJiBwcm9wb3NlZF90aW1lIDwgZVxuICAgICAgdGhlblxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBgVHdpY2UgKHByb3Bvc2VkX3RpbWUsIHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgICAgICAgZWxzZSBgTmV2ZXIgc2hpZnRfc3RhcnRcbiAgICAgIGVsc2UgYE9uY2UgKHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgOztcblxuICBtb2R1bGUgRGF0ZV9jYWNoZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgVGltZTAuKCA+PSApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsXG4gICAgJiYgVGltZTAuKCA8ICkgdGltZSBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIFRpbWUwLnN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IFRpbWUwLmFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgICAgfD4gVGltZTAubWF4IChab25lLmluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgY2FjaGVfdW50aWxfZXhjbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgICAgfD4gVGltZTAubWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgZW5kX29mX2RheSA9IE9mZGF5LnByZXYgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgfD4gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdXG5cbiAgbGV0IHRvX29mZGF5IHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgbGV0IG9mX2RheSA9XG4gICAgICBUaW1lMC5kaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICBpblxuICAgIGlmIE9mZGF5LmVxdWFsIG9mX2RheSBPZmRheS5zdGFydF9vZl9uZXh0X2RheSB0aGVuIGVuZF9vZl9kYXkgZWxzZSBvZl9kYXlcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lID0gdG9fZGF0ZSB0aW1lIH56b25lLCB0b19vZmRheSB0aW1lIH56b25lXG5cbiAgKCogVGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgYWxnb3JpdGhtIChpbnRlcmZhY2UsIGV2ZW4pIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhhdFxuICAgICB0aW1lem9uZSBzaGlmdHMgYXJlbid0IHRvbyBjbG9zZSB0b2dldGhlciAoYXMgaW4sIGl0IGNhbid0IHNpbXVsdGFuZW91c2x5IGJlIHRoZVxuICAgICBjYXNlIHRoYXQgYSB0aW1lem9uZSBzaGlmdCBvZiBYIGhvdXJzIG9jY3VycmVkIGxlc3MgdGhhbiBYIGhvdXJzIGFnbywgKmFuZCpcbiAgICAgYSB0aW1lem9uZSBzaGlmdCBvZiBZIGhvdXJzIHdpbGwgb2NjdXIgaW4gbGVzcyB0aGFuIFkgaG91cnMnIHRpbWUpICopXG4gIGxldCB0b19kYXRlX29mZGF5X3ByZWNpc2UgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2FmdGVyID0gWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnRpbWUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0ID0gWm9uZS5wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgfmF0X29yX2JlZm9yZTp0aW1lIGluXG4gICAgbGV0IGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudCA9XG4gICAgICAoKiBVc2luZyBbZGF0ZV0gYW5kIHJhaXNpbmcgb24gW05vbmVdIGhlcmUgaXMgT0sgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjbG9ja1xuICAgICAgICAgc2hpZnRzIGNhbid0IGNyb3NzIGRhdGUgYm91bmRhcmllcy4gVGhpcyBpcyB0cnVlIGluIGFsbCBjYXNlcyBJJ3ZlIGV2ZXIgaGVhcmRcbiAgICAgICAgIG9mIChhbmQgW29mX2RhdGVfb2ZkYXlfcHJlY2lzZV0gd291bGQgbmVlZCByZXZpc2l0aW5nIGlmIGl0IHR1cm5lZCBvdXQgdG8gYmVcbiAgICAgICAgIGZhbHNlKSAqKVxuICAgICAgbWF0Y2ggT2ZkYXkuc3ViIG9mZGF5IGFtb3VudCB3aXRoXG4gICAgICB8IFNvbWUgb2ZkYXkgLT4gYEFsc29fc2tpcHBlZCAoZGF0ZSwgb2ZkYXkpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJUaW1lLnRvX2RhdGVfb2ZkYXlfcHJlY2lzZVwiXG4gICAgICAgICAgICAgIH5zcGFuX3NpbmNlX2Vwb2NoOih0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUgOiBTcGFuLnQpXG4gICAgICAgICAgICAgICh6b25lIDogWm9uZS50KV1cbiAgICBpblxuICAgIGxldCBhbWJpZ3VpdHkgPVxuICAgICAgKCogRWRnZSBjYXNlczogdGhlIGluc3RhbnQgb2YgdHJhbnNpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXcgem9uZSByZWdpbWUuIFNvIGlmIHRoZVxuICAgICAgICAgY2xvY2sgbW92ZWQgYnkgYW4gaG91ciBleGFjdGx5IG9uZSBob3VyIGFnbywgdGhlcmUncyBubyBhbWJpZ3VpdHksIGJlY2F1c2UgdGhlXG4gICAgICAgICBob3VyLWFnbyB0aW1lIGJlbG9uZ3MgdG8gdGhlIHNhbWUgcmVnaW1lIGFzIHlvdSwgYW5kIGNvbnZlcnNlbHksIGlmIHRoZSBjbG9ja1xuICAgICAgICAgd2lsbCBtb3ZlIGJ5IGFuIGhvdXIgaW4gYW4gaG91cnMnIHRpbWUsIHRoZXJlICppcyogYW1iaWd1aXR5LiBIZW5jZSBbPi5dIGZvclxuICAgICAgICAgdGhlIGZpcnN0IGNhc2UgYW5kIFs8PS5dIGZvciB0aGUgc2Vjb25kLiAqKVxuICAgICAgbWF0Y2ggY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0LCBjbG9ja19zaGlmdF9hZnRlciB3aXRoXG4gICAgICB8IFNvbWUgKHN0YXJ0LCBhbW91bnQpLCBfIHdoZW4gYWRkIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpID4uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50ciB+dGFyZ2V0Oic6JyB+cmVwbGFjZW1lbnQ6Jy0nIChPZmRheS50b19zdHJpbmcgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IG9mX2ZpbGVuYW1lX3N0cmluZyBzIH56b25lID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOidfJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZSBpbiBmaWxlbmFtZSBzdHJpbmdcIlxuICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBTdHJpbmcudHIgfnRhcmdldDonLScgfnJlcGxhY2VtZW50Oic6JyBvZmRheSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IH56b25lXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIlRpbWUub2ZfZmlsZW5hbWVfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gIDs7XG5cbiAgbGV0IG9mX2xvY2FsaXplZF9zdHJpbmcgfnpvbmUgc3RyID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0ciB+b246JyAnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIm5vIHNwYWNlIGluIGRhdGVfb2ZkYXkgc3RyaW5nOiAlc1wiIHN0cilcbiAgICAgIHwgU29tZSAoZGF0ZSwgdGltZSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgdGltZSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICB3aXRoXG4gICAgfCBlIC0+IEV4bi5yZXJhaXNlIGUgXCJUaW1lLm9mX2xvY2FsaXplZF9zdHJpbmdcIlxuICA7O1xuXG4gIGxldCBvY2N1cnJlbmNlIGJlZm9yZV9vcl9hZnRlciB0IH5vZmRheSB+em9uZSA9XG4gICAgbGV0IGZpcnN0X2d1ZXNzX2RhdGUgPSB0b19kYXRlIHQgfnpvbmUgaW5cbiAgICBsZXQgZmlyc3RfZ3Vlc3MgPSBvZl9kYXRlX29mZGF5IH56b25lIGZpcnN0X2d1ZXNzX2RhdGUgb2ZkYXkgaW5cbiAgICBsZXQgY21wLCBpbmNyZW1lbnQgPVxuICAgICAgbWF0Y2ggYmVmb3JlX29yX2FmdGVyIHdpdGhcbiAgICAgIHwgYExhc3RfYmVmb3JlX29yX2F0IC0+ICggPD0gKSwgLTFcbiAgICAgIHwgYEZpcnN0X2FmdGVyX29yX2F0IC0+ICggPj0gKSwgMVxuICAgIGluXG4gICAgaWYgY21wIGZpcnN0X2d1ZXNzIHRcbiAgICB0aGVuIGZpcnN0X2d1ZXNzXG4gICAgZWxzZSBvZl9kYXRlX29mZGF5IH56b25lIChEYXRlMC5hZGRfZGF5cyBmaXJzdF9ndWVzc19kYXRlIGluY3JlbWVudCkgb2ZkYXlcbiAgOztcblxuICBsZXQgZW5zdXJlX2NvbG9uX2luX29mZnNldCBvZmZzZXQgPVxuICAgIGxldCBvZmZzZXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBvZmZzZXQgaW5cbiAgICBpZiBJbnQuKCA8PSApIG9mZnNldF9sZW5ndGggMlxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LlswXVxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LltvZmZzZXRfbGVuZ3RoIC0gMV1cbiAgICB0aGVuIG9mZnNldCBeIFwiOjAwXCJcbiAgICBlbHNlIGlmIENoYXIuKCA9ICkgb2Zmc2V0LlsxXSAnOicgfHwgQ2hhci4oID0gKSBvZmZzZXQuWzJdICc6J1xuICAgIHRoZW4gb2Zmc2V0XG4gICAgZWxzZSBpZiBJbnQuKCA8ICkgb2Zmc2V0X2xlbmd0aCAzIHx8IEludC4oID4gKSBvZmZzZXRfbGVuZ3RoIDRcbiAgICB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgb2Zmc2V0ICVzXCIgb2Zmc2V0ICgpXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIFN0cmluZy5zbGljZSBvZmZzZXQgMCAob2Zmc2V0X2xlbmd0aCAtIDIpXG4gICAgICAgIDsgXCI6XCJcbiAgICAgICAgOyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IChvZmZzZXRfbGVuZ3RoIC0gMikgb2Zmc2V0X2xlbmd0aFxuICAgICAgICBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFRpbWVfb2Zfc3RyaW5nIG9mIHN0cmluZyAqIEV4bi50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGRhdGUsIG9mZGF5LCB0eiA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonICcgd2l0aFxuICAgICAgICB8IFsgZGF5OyBtb250aDsgeWVhcjsgb2ZkYXkgXSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBkYXk7IFwiIFwiOyBtb250aDsgXCIgXCI7IHllYXIgXSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5OyB0eiBdIC0+IGRhdGUsIG9mZGF5LCBTb21lIHR6XG4gICAgICAgIHwgWyBkYXRlOyBvZmRheSBdIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBzIF0gLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOidUJyBzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2VzIG9yIFQgZm91bmRcIilcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidG9vIG1hbnkgc3BhY2VzXCJcbiAgICAgIGluXG4gICAgICBsZXQgb2ZkYXlfdG9fc2VjIG9kID0gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9kKSBpblxuICAgICAgbGV0IG9mZGF5LCB1dGNfb2Zmc2V0ID1cbiAgICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBvZmRheSwgTm9uZVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBDaGFyLiggPSApIG9mZGF5LltTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMV0gJ1onXG4gICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIG9mZGF5IH5wb3M6MCB+bGVuOihTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMSksIFNvbWUgMC5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonKycgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICBsLCBTb21lIChvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonLScgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICAgICBsLCBTb21lICgtMS4gKi4gb2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgICAgfCBOb25lIC0+IG9mZGF5LCBOb25lKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgIHwgU29tZSB0eiAtPiBvZl9kYXRlX29mZGF5IH56b25lOihmaW5kX3pvbmUgdHopIGRhdGUgb2ZkYXlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggdXRjX29mZnNldCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHpvbmUgPSBkZWZhdWx0X3pvbmUgKCkgaW5cbiAgICAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICAgICB8IFNvbWUgdXRjX29mZnNldCAtPlxuICAgICAgICAgICBsZXQgdXRjX3QgPSBvZl9kYXRlX29mZGF5IH56b25lOlpvbmUudXRjIGRhdGUgb2ZkYXkgaW5cbiAgICAgICAgICAgc3ViIHV0Y190IChTcGFuLm9mX3NlYyB1dGNfb2Zmc2V0KSlcbiAgICB3aXRoXG4gICAgfCBlIC0+IHJhaXNlIChUaW1lX29mX3N0cmluZyAocywgZSkpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgcyA9XG4gICAgbGV0IGRlZmF1bHRfem9uZSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwidGltZSBoYXMgbm8gdGltZSB6b25lIG9yIFVUQyBvZmZzZXRcIiBzXSBpblxuICAgIGxldCBmaW5kX3pvbmUgem9uZV9uYW1lID1cbiAgICAgIGZhaWx3aXRoZiBcInVuYWJsZSB0byBsb29rdXAgWm9uZSAlcy4gIFRyeSB1c2luZyBDb3JlLlRpbWUub2Zfc3RyaW5nXCIgem9uZV9uYW1lICgpXG4gICAgaW5cbiAgICBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFNwYW4ucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgICAgfmZfaW52ZXJzZTp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBTcGFuLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9lcG9jaCBsbykgKHRvX3NwYW5fc2luY2VfZXBvY2ggaGkpXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFNwYW4gPSBTcGFuX2Zsb2F0XG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9mbG9hdFxuXG5tb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgdHlwZSB1bmRlcmx5aW5nID0gRmxvYXQudFxuXG4gIGluY2x1ZGUgKFxuICAgIEZsb2F0IDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdC5PXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgcHJlY2lzaW9uICopXG4gIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgIGVuZClcblxuICBsZXQgZGlmZiB0MSB0MiA9IFNwYW4ub2Zfc2VjICh0MSAtIHQyKVxuICBsZXQgYWRkIHQgc3BhbiA9IHQgKy4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgc3ViIHQgc3BhbiA9IHQgLS4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG4gIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi5vZl9zZWNcbiAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBTcGFuLnRvX3NlY1xuZW5kXG5cbmluY2x1ZGUgQWJzb2x1dGVcblxubW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHNwYW4gPSBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBkYXlzID1cbiAgICAgIEZsb2F0Lm9mX2ludCAoRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoKVxuICAgIGluXG4gICAgKGRheXMgKi4gODY0MDAuKSArLiBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPSBzdWIgcmVsYXRpdmUgb2Zmc2V0X2Zyb21fdXRjXG4gIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID0gYWRkIGFic29sdXRlIG9mZnNldF9mcm9tX3V0Y1xuXG4gICgqIFllYXJzIG91dCBvZiByYW5nZSBmb3IgW0RhdGUuY3JlYXRlX2V4bl0uICopXG4gIGxldFtAY29sZF0gYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoID1cbiAgICAoKiAkIFRaPVVUQyBkYXRlIC0tZGF0ZT1ALTYyMTY3MjE5MjAwXG4gICAgICAgU2F0IEphbiAgMSAwMDowMDowMCBVVEMgMDAwMCAqKVxuICAgIGxldCBnbXRpbWVfbG93ZXJfYm91bmQgPSAtNjJfMTY3XzIxOV8yMDAuIGluXG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QDI1MzQwMjMwMDc5OVxuICAgICAgIEZyaSBEZWMgMzEgMjM6NTk6NTkgVVRDIDk5OTkgKilcbiAgICBsZXQgZ210aW1lX3VwcGVyX2JvdW5kID0gMjUzXzQwMl8zMDBfNzk5LiBpblxuICAgIGlmIEZsb2F0LiggPj0gKSBzZWNfc2luY2VfZXBvY2ggKGdtdGltZV91cHBlcl9ib3VuZCArLiAxLilcbiAgICB8fCBGbG9hdC4oIDwgKSBzZWNfc2luY2VfZXBvY2ggZ210aW1lX2xvd2VyX2JvdW5kXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJUaW1lLmdtdGltZTogb3V0IG9mIHJhbmdlICglZilcIiBzZWNfc2luY2VfZXBvY2ggKClcbiAgOztcblxuICBsZXQgc2VjX3Blcl9kYXkgPSBJbnQ2My5vZl9pbnQgODZfNDAwXG5cbiAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICBhc3NlcnRfaW5fYm91bmRzIH5zZWNfc2luY2VfZXBvY2g6dDtcbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggPSBJbnQ2My5vZl9mbG9hdCB0IC8gc2VjX3Blcl9kYXkgaW5cbiAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgIHdpbGwgbGVhdmUgdXMgb25lIGRheSBzaG9ydCBiZWNhdXNlIGl0IHRydW5jYXRlcyAoZS5nLiAtMTAwIC8gODZfNDAwID0gMCBhbmQgd2VcbiAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICBpZiBGbG9hdC4oIDwgKSB0IChJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIHNlY19wZXJfZGF5KSlcbiAgICB0aGVuIEludDYzLnByZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICA7O1xuXG4gIGxldCBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgPSBJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoICogc2VjX3Blcl9kYXkpIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IHQgLS4gZGF5c19mcm9tX2Vwb2NoX2luX3NlYyBpblxuICAgIFNwYW4ub2Zfc2VjIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgOztcblxuICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaFxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGxldCBkYXRlID0gZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBvZmRheSA9IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBkYXRlLCBvZmRheVxuICA7O1xuZW5kXG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWUubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogU3Bhbi50XTtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9XG4gICAgICBhZGRcbiAgICAgICAgYmFzZVxuICAgICAgICAoU3Bhbi5zY2FsZVxuICAgICAgICAgICBpbnRlcnZhbFxuICAgICAgICAgICAoRmxvYXQucm91bmQgfmRpcjpgRG93biAoU3Bhbi4oIC8vICkgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpKVxuICAgIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IG5vdyAoKSA9XG4gIGxldCBmbG9hdF9ucyA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gSW50NjMudG9fZmxvYXQgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9zZWMgKGZsb2F0X25zICouIDFFLTkpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgdHlwZSBTX2tlcm5lbF93aXRob3V0X3pvbmUgPSBUaW1lMF9pbnRmLlNcbm1vZHVsZSB0eXBlIFNfa2VybmVsID0gVGltZV9pbnRmLlNcblxubW9kdWxlIFpvbmVfc3RhYmxlID0gWm9uZS5TdGFibGVcbmluY2x1ZGUgVGltZS5NYWtlIChUaW1lX2Zsb2F0MClcbmluY2x1ZGUgVGltZV9mbG9hdDBcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfZmxvYXQwLlN0YWJsZVxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBXaXRoX3Rfb2Zfc2V4cF9hYnMgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBPZmRheVxuICAgIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFdpdGhfdXRjX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0b19zdHJpbmdfYWJzX3BhcnRzIHQgfnpvbmU6Wm9uZS51dGMgOiBzdHJpbmcgbGlzdCldXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGRhdGU7IFNleHAuQXRvbSBvZmRheV9hbmRfcG9zc2libHlfem9uZSBdIC0+XG4gICAgICAgICAgICBvZl9zdHJpbmdfZ2VuXG4gICAgICAgICAgICAgIH5kZWZhdWx0X3pvbmU6KGZ1biAoKSAtPiBab25lLnV0YylcbiAgICAgICAgICAgICAgfmZpbmRfem9uZTooZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiB1bmtub3duIHRpbWUgem9uZVwiIHNleHApXG4gICAgICAgICAgICAgIChkYXRlIF4gXCIgXCIgXiBvZmRheV9hbmRfcG9zc2libHlfem9uZSlcbiAgICAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cFwiIHNleHBcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+IHJhaXNlIGVcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgKHNwcmludGYgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHA6ICVzXCIgKEV4bi50b19zdHJpbmcgZSkpXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV91bml4XG5cbiAgICAgIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gICAgICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgWm9uZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgICBpbmNsdWRlIFpvbmVfc3RhYmxlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICBpbmNsdWRlIE9mZGF5XG5cbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG5vdyA9IGBVc2VfVGltZV91bml4XG5cbiAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuZW5kXG5cbm1vZHVsZSBTcGFuID0gc3RydWN0XG4gIGluY2x1ZGUgU3BhblxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5lbmRcblxubW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBab25lXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcblxuICBsZXQgKCA8ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA8PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID49ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgX19iaW5fcmVhZF90X18gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXNjZW5kaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJldHdlZW4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fcmVhZGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NoYXBlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NpemVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXBfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZGVzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBlcXVhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGZpbmRfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2ggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaF9mb2xkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBpbml0aWFsaXplZF96b25lcyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBsb2NhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBtYXggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWluID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG9mX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBwcCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdG9fc3RyaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2xib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBFeHBvc2VkX2Zvcl90ZXN0cyA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5sZXQgZm9ybWF0ID0gYFVzZV9UaW1lX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBoYXNoYWJsZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV91bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0X29mX3NleHBfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG4iLCJpbmNsdWRlIERhdGUwXG5cbmxldCBvZl90aW1lIHRpbWUgfnpvbmUgPSBUaW1lX2Zsb2F0LnRvX2RhdGUgfnpvbmUgdGltZVxubGV0IHRvZGF5IH56b25lID0gb2ZfdGltZSAoVGltZV9mbG9hdC5ub3cgKCkpIH56b25lXG5sZXQgZm9ybWF0ID0gYFVzZV9EYXRlX3VuaXhcbmxldCBvZl90bSA9IGBVc2VfRGF0ZV91bml4XG5sZXQgcGFyc2UgPSBgVXNlX0RhdGVfdW5peFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50NjMuT1xuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuXCJcblxudHlwZSB1bmRlcmx5aW5nID0gSW50NjMudFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBJbnQuZXF1YWwgU3lzLndvcmRfc2l6ZV9pbl9iaXRzIDY0XG5sZXQgcm91bmRfbmVhcmVzdCA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuXG5sZXQgZmxvYXQgeCA9IEludDYzLnRvX2Zsb2F0IHhcblxuKCogW1NwYW5dIGlzIGJhc2ljYWxseSBhIFtJbnQ2M10uICBJdCBldmVuIHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3cuICopXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnQ2My50ICgqIG5hbm9zZWNvbmRzICopIFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gSW50NjMuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHplcm8gPSBJbnQ2My56ZXJvXG5lbmRcblxuaW5jbHVkZSBUXG5vcGVuIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNpZ24gOiBTaWduLnRcbiAgICA7IGhyIDogaW50XG4gICAgOyBtaW4gOiBpbnRcbiAgICA7IHNlYyA6IGludFxuICAgIDsgbXMgOiBpbnRcbiAgICA7IHVzIDogaW50XG4gICAgOyBucyA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbmxldCBuZXh0IHQgPSBJbnQ2My5zdWNjIHRcbmxldCBwcmV2IHQgPSBJbnQ2My5wcmVkIHRcbmxldCBuYW5vc2Vjb25kID0gSW50NjMub2ZfaW50IDFcbmxldCBtaWNyb3NlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG5hbm9zZWNvbmQpXG5sZXQgbWlsbGlzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWNyb3NlY29uZClcbmxldCBzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWxsaXNlY29uZClcbmxldCBtaW51dGUgPSBJbnQ2My4ob2ZfaW50IDYwICogc2Vjb25kKVxubGV0IGhvdXIgPSBJbnQ2My4ob2ZfaW50IDYwICogbWludXRlKVxubGV0IGRheSA9IEludDYzLihvZl9pbnQgMjQgKiBob3VyKVxuXG4oKiBCZXlvbmQgW21pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nLi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ10sIG5vdCBldmVyeSBtaWNyb3NlY29uZFxuICAgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgW2Zsb2F0XSBudW1iZXIgb2Ygc2Vjb25kcy4gKEluIGZhY3QsIGl0IGlzIGFyb3VuZCAxMzV5LCBidXQgd2VcbiAgIGxlYXZlIGEgc21hbGwgbWFyZ2luLilcblxuICAgSW4gdGhlIHByZXNlbmNlIG9mIHNpbGVudGx5IGlnbm9yZWQgb3ZlcmZsb3csIG5vdGUgdGhhdCBbdF0gaXMgbm90IGFjdHVhbGx5IGJvdW5kIHRvXG4gICBzdGF5IGJldHdlZW4gdGhlc2UgbGltaXRzLiAqKVxubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMuKG9mX2ludCAxMzUgKiBvZl9pbnQgMzY1ICogZGF5KVxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMubmVnIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5cbmxldCBjcmVhdGVcbiAgICAgID9zaWduOihzaWduXyA9IFNpZ24uUG9zICgqIHJlYmluZCBzbyBub3Qgc2hhZG93ZWQgYnkgW29wZW4gSW50NjNdIGJlbG93ICopKVxuICAgICAgP2RheTooZGF5cyA9IDApXG4gICAgICA/KGhyID0gMClcbiAgICAgID9taW46KG1pbnV0ZXMgPSAwKVxuICAgICAgPyhzZWMgPSAwKVxuICAgICAgPyhtcyA9IDApXG4gICAgICA/KHVzID0gMClcbiAgICAgID8obnMgPSAwKVxuICAgICAgKClcbiAgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgdCA9XG4gICAgKG9mX2ludCBkYXlzICogZGF5KVxuICAgICsgKG9mX2ludCBociAqIGhvdXIpXG4gICAgKyAob2ZfaW50IG1pbnV0ZXMgKiBtaW51dGUpXG4gICAgKyAob2ZfaW50IHNlYyAqIHNlY29uZClcbiAgICArIChvZl9pbnQgbXMgKiBtaWxsaXNlY29uZClcbiAgICArIChvZl9pbnQgdXMgKiBtaWNyb3NlY29uZClcbiAgICArIChvZl9pbnQgbnMgKiBuYW5vc2Vjb25kKVxuICBpblxuICBtYXRjaCBzaWduXyB3aXRoXG4gIHwgTmVnIC0+IG5lZyB0XG4gIHwgUG9zIHwgWmVybyAtPiB0XG47O1xuXG5sZXQgdG9fcGFydHMgdCA9XG4gIGxldCBvcGVuIEludDYzIGluXG4gIGxldCBtYWcgPSBhYnMgdCBpblxuICB7IFBhcnRzLnNpZ24gPSAoaWYgdCA8IHplcm8gdGhlbiBOZWcgZWxzZSBpZiB0ID4gemVybyB0aGVuIFBvcyBlbHNlIFplcm8pXG4gIDsgaHIgPSB0b19pbnRfZXhuIChtYWcgLyBob3VyKVxuICA7IG1pbiA9IHRvX2ludF9leG4gKHJlbSBtYWcgaG91ciAvIG1pbnV0ZSlcbiAgOyBzZWMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbnV0ZSAvIHNlY29uZClcbiAgOyBtcyA9IHRvX2ludF9leG4gKHJlbSBtYWcgc2Vjb25kIC8gbWlsbGlzZWNvbmQpXG4gIDsgdXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbGxpc2Vjb25kIC8gbWljcm9zZWNvbmQpXG4gIDsgbnMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pY3Jvc2Vjb25kIC8gbmFub3NlY29uZClcbiAgfVxuOztcblxubGV0IG9mX3BhcnRzIHsgUGFydHMuc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gPVxuICBjcmVhdGUgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5ucyAoKVxuOztcblxubGV0IG9mX25zIGYgPSByb3VuZF9uZWFyZXN0IGZcbmxldCBvZl9pbnQ2M19ucyBpID0gaVxubGV0IG9mX2ludF91cyBpID0gSW50NjMuKG9mX2ludCBpICogbWljcm9zZWNvbmQpXG5sZXQgb2ZfaW50X21zIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBtaWxsaXNlY29uZClcbmxldCBvZl9pbnRfc2VjIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBzZWNvbmQpXG5sZXQgb2ZfaW50X21pbiBpID0gSW50NjMuKG9mX2ludCBpICogbWludXRlKVxubGV0IG9mX2ludF9ociBpID0gSW50NjMuKG9mX2ludCBpICogaG91cilcbmxldCBvZl9pbnRfZGF5IGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBkYXkpXG5sZXQgb2ZfdXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWljcm9zZWNvbmQpXG5sZXQgb2ZfbXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWlsbGlzZWNvbmQpXG5sZXQgb2Zfc2VjIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IHNlY29uZClcbmxldCBvZl9taW4gZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWludXRlKVxubGV0IG9mX2hyIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGhvdXIpXG5sZXQgb2ZfZGF5IGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGRheSlcblxubGV0IG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiBzZWMgPVxuICBsZXQgdXMgPSByb3VuZF9uZWFyZXN0IChzZWMgKi4gMWU2KSBpblxuICBvZl9pbnQ2M19ucyBJbnQ2My4odXMgKiBvZl9pbnQgMTAwMClcbjs7XG5cbmxldCBvZl9pbnQ2M19zZWNvbmRzIHggPSB4ICogc2Vjb25kXG5sZXQgb2ZfaW50MzJfc2Vjb25kcyB4ID0gb2ZfaW50NjNfc2Vjb25kcyAoSW50NjMub2ZfaW50MzIgeClcblxubGV0IHRvX25zIHQgPSBmbG9hdCB0XG5sZXQgdG9faW50NjNfbnMgdCA9IHRcbmxldCB0b191cyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWNyb3NlY29uZFxubGV0IHRvX21zIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjIHQgPSBmbG9hdCB0IC8uIGZsb2F0IHNlY29uZFxubGV0IHRvX21pbiB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaW51dGVcbmxldCB0b19ociB0ID0gZmxvYXQgdCAvLiBmbG9hdCBob3VyXG5sZXQgdG9fZGF5IHQgPSBmbG9hdCB0IC8uIGZsb2F0IGRheVxubGV0IHRvX2ludF91cyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWNyb3NlY29uZCkpXG5sZXQgdG9faW50X21zIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIG1pbGxpc2Vjb25kKSlcbmxldCB0b19pbnRfc2VjIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIHNlY29uZCkpXG5sZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biB0ID0gdCAvJSBzZWNvbmRcbmxldCBvZl9pbnRfbnMgaSA9IG9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX2ludF9ucyA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnMgdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMuU3Bhbi50b19pbnRfbnM6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCAoICsgKSB0IHUgPSBJbnQ2My4oICsgKSB0IHVcbmxldCAoIC0gKSB0IHUgPSBJbnQ2My4oIC0gKSB0IHVcbmxldCBhYnMgPSBJbnQ2My5hYnNcbmxldCBuZWcgPSBJbnQ2My5uZWdcbmxldCBzY2FsZSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0ICouIGYpXG5sZXQgc2NhbGVfaW50NjMgdCBpID0gSW50NjMuKCAqICkgdCBpXG5sZXQgc2NhbGVfaW50IHQgaSA9IHNjYWxlX2ludDYzIHQgKEludDYzLm9mX2ludCBpKVxubGV0IGRpdiA9IEludDYzLiggLyUgKVxubGV0ICggLyApIHQgZiA9IHJvdW5kX25lYXJlc3QgKGZsb2F0IHQgLy4gZilcbmxldCAoIC8vICkgPSBJbnQ2My4oIC8vIClcbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgdCA9IEludDYzLnRvX2Zsb2F0IHRcblxubGV0IG9mX3VuaXRfb2ZfdGltZSB1ID1cbiAgbWF0Y2ggKHUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICB8IE1pY3Jvc2Vjb25kIC0+IG1pY3Jvc2Vjb25kXG4gIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gIHwgTWludXRlIC0+IG1pbnV0ZVxuICB8IEhvdXIgLT4gaG91clxuICB8IERheSAtPiBkYXlcbjs7XG5cbmxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgaWYgYWJzX3QgPj0gZGF5XG4gIHRoZW4gRGF5XG4gIGVsc2UgaWYgYWJzX3QgPj0gaG91clxuICB0aGVuIEhvdXJcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgdGhlbiBNaW51dGVcbiAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgdGhlbiBTZWNvbmRcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaWxsaXNlY29uZFxuICB0aGVuIE1pbGxpc2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgdGhlbiBNaWNyb3NlY29uZFxuICBlbHNlIE5hbm9zZWNvbmRcbjs7XG5cbmxldCB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgdCA9IFNwYW5fZmxvYXQub2Zfc2VjICh0b19zZWMgdClcbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgcyA9IG9mX3NlYyAoU3Bhbl9mbG9hdC50b19zZWMgcylcblxubW9kdWxlIFN0YWJsZTAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICAgVGltZV9mbG9hdC5TdGFibGUuU3Bhbi5WMS5zZXhwX29mX3QgKHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCB0KVxuICAgICAgOztcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgICAgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChUaW1lX2Zsb2F0LlN0YWJsZS5TcGFuLlYxLnRfb2Zfc2V4cCBzKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2ZfaW50NjNfbnMgdFxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0b19pbnQ2M19ucyB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2ZfaW50NjNfbnMgdFxuICAgICAgICBsZXQgdG9faW50NjMgdCA9IHRvX2ludDYzX25zIHRcblxuICAgICAgICBtb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGUgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPSAwXG4gICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwXG4gICAgICAgICAgICB0aGVuIDFcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwMFxuICAgICAgICAgICAgdGhlbiAyXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxXzAwMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMF8wMDBcbiAgICAgICAgICAgIHRoZW4gNFxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTAwXzAwMFxuICAgICAgICAgICAgdGhlbiA1XG4gICAgICAgICAgICBlbHNlIGFzc2VydCBmYWxzZVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICAoKiBzcGFuIHBhcnQgbWFnbml0dWRlcyBhcmUgYWx3YXlzIDwgMTAwXzAwMCAqKVxuXG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kZWNpbWFsX3BsYWNlc190b193cml0ZSB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgYXNzZXJ0IChiaWxsaW9udGhzID49IDAgJiYgYmlsbGlvbnRocyA8PSA5OTlfOTk5Xzk5OSk7XG4gICAgICAgICAgICBpZiBiaWxsaW9udGhzID0gMFxuICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDlcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDhcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gN1xuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNlxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDVcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDRcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDBfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDJcbiAgICAgICAgICAgIGVsc2UgMVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfY2hhciBidWYgfnBvcyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgY2hhcjtcbiAgICAgICAgICAgIHBvcyArIDFcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgY2hhcjEgY2hhcjIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyBjaGFyMTtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIChwb3MgKyAxKSBjaGFyMjtcbiAgICAgICAgICAgIHBvcyArIDJcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjMgYnVmIH5wb3MgfmRpZ2l0cyAoSW50NjMub2ZfaW50IGludCk7XG4gICAgICAgICAgICBwb3MgKyBkaWdpdHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RlY2ltYWxzIGJ1ZiB+cG9zIH5kZWNpbWFscyB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjNcbiAgICAgICAgICAgICAgYnVmXG4gICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgfmRpZ2l0czpkZWNpbWFsc1xuICAgICAgICAgICAgICAoSW50NjMub2ZfaW50IChiaWxsaW9udGhzIC8gSW50LnBvdyAxMCAoOSAtIGRlY2ltYWxzKSkpO1xuICAgICAgICAgICAgcG9zICsgZGVjaW1hbHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzIGludCBzdWZmaXggPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIGRpZ2l0cyA9IDBcbiAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfY2hhciBidWYgfnBvcyBzdWZmaXggaW5cbiAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmFub3Nfb2ZfbWlsbGlzZWNvbmQgPSB0b19pbnQ2M19ucyBtaWxsaXNlY29uZCB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgbGV0IG5hbm9zX29mX21pY3Jvc2Vjb25kID0gdG9faW50NjNfbnMgbWljcm9zZWNvbmQgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgIGxldCBpbnQ2M182MCA9IEludDYzLm9mX2ludCA2MFxuICAgICAgICAgIGxldCBpbnQ2M18yNCA9IEludDYzLm9mX2ludCAyNFxuXG4gICAgICAgICAgKCogVW5pdHMgb2Ygc2Vjb25kcyBhbmQgc21hbGxlciBjYW4gYmUgd3JpdHRlbiBpbiBkZWNpbWFsIG5vdGF0aW9uIHdpdGhvdXRcbiAgICAgICAgICAgICB3b3JyeWluZyBhYm91dCBub24tcG93ZXItb2YtdGVuIGZhY3RvcnMuICopXG4gICAgICAgICAgbW9kdWxlIERlY2ltYWxfdW5pdCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBTZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZFxuICAgICAgICAgICAgICB8IE5vbmVcbiAgICAgICAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgICAgIGxldCBjcmVhdGUgfnMgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgcyA+IDBcbiAgICAgICAgICAgICAgdGhlbiBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSBuYW5vc19vZl9taWxsaXNlY29uZFxuICAgICAgICAgICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gbmFub3Nfb2ZfbWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgdGhlbiBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IDFcbiAgICAgICAgICAgICAgdGhlbiBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGludGVnZXIgdCB+cyB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gc1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG5zIC8gbmFub3Nfb2ZfbWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAvIG5hbm9zX29mX21pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiBuc1xuICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGJpbGxpb250aHMgdCB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gbnNcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBucyAlIG5hbm9zX29mX21pbGxpc2Vjb25kICogMV8wMDBcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAlIG5hbm9zX29mX21pY3Jvc2Vjb25kICogMV8wMDBfMDAwXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiAwXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgbGVuZ3RoIHQgfmRpZ2l0cyB+ZGVjaW1hbHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX2xlbiA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gZGlnaXRzICsgMVxuICAgICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgfCBNaWNyb3NlY29uZCB8IE5hbm9zZWNvbmQgLT4gZGlnaXRzICsgMlxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsc19sZW4gPSBpZiBkZWNpbWFscyA+IDAgdGhlbiBkZWNpbWFscyArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgIGRpZ2l0c19sZW4gKyBkZWNpbWFsc19sZW5cbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZV9zdWZmaXggdCBidWYgfnBvcyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiB3cml0ZV9jaGFyIGJ1ZiB+cG9zICdzJ1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ20nICdzJ1xuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ3UnICdzJ1xuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAnbicgJ3MnXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBwb3NcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZSB0IGJ1ZiB+cG9zIH5pbnRlZ2VyIH5kaWdpdHMgfmJpbGxpb250aHMgfmRlY2ltYWxzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgZGlnaXRzID0gMFxuICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIGludGVnZXIgfmRpZ2l0cyBpblxuICAgICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgICAgaWYgZGVjaW1hbHMgPSAwXG4gICAgICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9jaGFyIGJ1ZiB+cG9zICcuJyBpblxuICAgICAgICAgICAgICAgICAgICB3cml0ZV9kZWNpbWFscyBidWYgfnBvcyB+YmlsbGlvbnRocyB+ZGVjaW1hbHMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB3cml0ZV9zdWZmaXggdCBidWYgfnBvcylcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kXG5cbiAgICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICAgICAgaWYgZXF1YWwgdCB6ZXJvXG4gICAgICAgICAgICB0aGVuIFwiMHNcIlxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9IHQgPCB6ZXJvIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuKCAvICkgKHRvX2ludDYzX25zIHQpICh0b19pbnQ2M19ucyBzZWNvbmQpIGluXG4gICAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgICAgSW50NjMucmVtICh0b19pbnQ2M19ucyB0KSAodG9faW50NjNfbnMgc2Vjb25kKSB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuYWJzIHNlY29uZHMgaW5cbiAgICAgICAgICAgICAgbGV0IG5zID0gSW50LmFicyBucyBpblxuICAgICAgICAgICAgICBsZXQgcyA9IEludDYzLnJlbSBzZWNvbmRzIGludDYzXzYwIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZXMgPSBJbnQ2My4oIC8gKSBzZWNvbmRzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBtID0gSW50NjMucmVtIG1pbnV0ZXMgaW50NjNfNjAgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgaG91cnMgPSBJbnQ2My4oIC8gKSBtaW51dGVzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBoID0gSW50NjMucmVtIGhvdXJzIGludDYzXzI0IHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IGQgPSBJbnQ2My4oIC8gKSBob3VycyBpbnQ2M18yNCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfZCA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZCBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2ggPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmggaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9tID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTptIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXQgPSBEZWNpbWFsX3VuaXQuY3JlYXRlIH5zIH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2ludGVnZXIgPSBEZWNpbWFsX3VuaXQuaW50ZWdlciBkZWNpbWFsX3VuaXQgfnMgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfYmlsbGlvbnRocyA9IERlY2ltYWxfdW5pdC5iaWxsaW9udGhzIGRlY2ltYWxfdW5pdCB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9kZWNpbWFsX3VuaXQgPVxuICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZGVjaW1hbF91bml0X2ludGVnZXJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyX29mX2RlY2ltYWxfcGxhY2VzX3RvX3dyaXRlIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzdHJpbmdfbGVuZ3RoID1cbiAgICAgICAgICAgICAgICBsZXQgc2lnbl9sZW4gPSBpZiBpc19uZWdhdGl2ZSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRfbGVuID0gaWYgZGlnaXRzX29mX2QgPiAwIHRoZW4gZGlnaXRzX29mX2QgKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBoX2xlbiA9IGlmIGRpZ2l0c19vZl9oID4gMCB0aGVuIGRpZ2l0c19vZl9oICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbV9sZW4gPSBpZiBkaWdpdHNfb2ZfbSA+IDAgdGhlbiBkaWdpdHNfb2ZfbSArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9sZW4gPVxuICAgICAgICAgICAgICAgICAgRGVjaW1hbF91bml0Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgfmRpZ2l0czpkaWdpdHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczpkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHNpZ25fbGVuICsgZF9sZW4gKyBoX2xlbiArIG1fbGVuICsgZGVjaW1hbF91bml0X2xlblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhc3NlcnQgKHN0cmluZ19sZW5ndGggPiAwKTtcbiAgICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBzdHJpbmdfbGVuZ3RoIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSBpZiBpc19uZWdhdGl2ZSB0aGVuIHdyaXRlX2NoYXIgYnVmIH5wb3MgJy0nIGVsc2UgcG9zIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfZCBkICdkJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2ggaCAnaCcgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9tIG0gJ20nIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIERlY2ltYWxfdW5pdC53cml0ZVxuICAgICAgICAgICAgICAgICAgZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICBidWZcbiAgICAgICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgICAgIH5pbnRlZ2VyOmRlY2ltYWxfdW5pdF9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICB+ZGlnaXRzOmRpZ2l0c19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6ZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFzc2VydCAocG9zID0gc3RyaW5nX2xlbmd0aCk7XG4gICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmKVxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgICAgICgqIFdlIGRvIGNvbXB1dGF0aW9ucyB1c2luZyBuZWdhdGl2ZSBudW1iZXJzIGV2ZXJ5d2hlcmUgYW5kIHRlc3QgYWdhaW5zdFxuICAgICAgICAgICAgIHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5taW5fdmFsdWVdIHJhdGhlciB0aGFuIHVzaW5nIHBvc2l0aXZlIG51bWJlcnNcbiAgICAgICAgICAgICBhbmQgdGVzdGluZyBhZ2FpbnN0IHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5tYXhfdmFsdWVdIGJlY2F1c2UgdGhlXG4gICAgICAgICAgICAgbmVnYXRpdmUgaW50ZWdlciByYW5nZSBpcyBvbmUgd2lkZXIgdGhhbiB0aGUgcG9zaXRpdmUgaW50ZWdlciByYW5nZVxuICAgICAgICAgICAgICgtMioqNjMgdnMgMioqNjMtMSksIGFuZCB3ZSBuZWVkIHRoYXQgdG8gYmUgYWJsZSB0byBoYW5kbGUgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgbmljZWx5LiAqKVxuXG4gICAgICAgICAgbGV0IGludDYzXzEwID0gSW50NjMub2ZfaW50IDEwXG4gICAgICAgICAgbGV0IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3cgPSBJbnQ2My4obWluX3ZhbHVlIC8gaW50NjNfMTApXG5cbiAgICAgICAgICBsZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJUaW1lX25zLlNwYW4ub2Zfc3RyaW5nOiBpbnZhbGlkIHN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAoc3RyaW5nIDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgKHJlYXNvbiA6IHN0cmluZyldXG4gICAgICAgICAgOztcblxuICAgICAgICAgICgqIEFzc3VtZXMgeCBhbmQgeSBhcmUgYm90aCBub25wb3NpdGl2ZSAqKVxuICAgICAgICAgIGxldCBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyB4IHkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgICAgICAgbGV0IHN1bSA9IHggKyB5IGluXG4gICAgICAgICAgICBpZiBzdW0gPiB4XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBzdW1cbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IGFkZF9uZWdfZGlnaXQgfnN0cmluZyBpbnQ2MyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgICAgICAgIGxldCBkaWdpdCA9IEludDYzLm9mX2ludCAoQ2hhci5nZXRfZGlnaXRfZXhuIGNoYXIpIGluXG4gICAgICAgICAgICBpZiBpbnQ2MyA8IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIChpbnQ2MyAqIGludDYzXzEwKSAoLWRpZ2l0KVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbWluX2ZhY3Rvcl9vZiBzcGFuID0gSW50NjMuKCAvICkgSW50NjMubWluX3ZhbHVlICh0b19pbnQ2M19ucyBzcGFuKVxuICAgICAgICAgIGxldCBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgZGF5XG4gICAgICAgICAgbGV0IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgaG91clxuICAgICAgICAgIGxldCBtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWludXRlXG4gICAgICAgICAgbGV0IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWlsbGlzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWljcm9zZWNvbmRcbiAgICAgICAgICBsZXQgbWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBuYW5vc2Vjb25kXG5cbiAgICAgICAgICBsZXQgbWluX3dpdGhvdXRfdW5kZXJmbG93X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgPVxuICAgICAgICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICAgICAgICB8IERheSAtPiBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBIb3VyIC0+IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaW51dGUgLT4gbWluX21pbnV0ZXNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgU2Vjb25kIC0+IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG1pbl9taWxsaXNlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IG1pbl9uYW5vc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIH5uZWdfaW50ZWdlclxuICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgfnVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGxldCBzY2FsZSA9IHRvX2ludDYzX25zIChvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lKSBpblxuICAgICAgICAgICAgbGV0IG1pbl93aXRob3V0X3VuZGVyZmxvdyA9XG4gICAgICAgICAgICAgIG1pbl93aXRob3V0X3VuZGVyZmxvd19vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgSW50NjMuKCA8ICkgbmVnX2ludGVnZXIgbWluX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBsZXQgbmVnX2ludGVnZXJfbnMgPSBJbnQ2My4oICogKSBuZWdfaW50ZWdlciBzY2FsZSBpblxuICAgICAgICAgICAgbGV0IGZyYWN0aW9uX3BvcyA9IGRlY2ltYWxfcG9zICsgMSBpblxuICAgICAgICAgICAgaWYgZnJhY3Rpb25fcG9zID49IGVuZF9wb3NcbiAgICAgICAgICAgIHRoZW4gbmVnX2ludGVnZXJfbnNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF9ucyA9XG4gICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMucmVhZF9pbnQ2M19kZWNpbWFsXG4gICAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIH5wb3M6ZnJhY3Rpb25fcG9zXG4gICAgICAgICAgICAgICAgICB+c2NhbGVcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczooZW5kX3BvcyAtIGZyYWN0aW9uX3BvcylcbiAgICAgICAgICAgICAgICAgIH5hbGxvd191bmRlcnNjb3JlOnRydWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzOnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIG5lZ19pbnRlZ2VyX25zIChJbnQ2My4oIH4tICkgZGVjaW1hbF9ucykpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBsZXQgbmVnX25zID0gcmVmIEludDYzLnplcm8gaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBzdHJpbmdcIjtcbiAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9XG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgIHwgJysnIC0+XG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nIDogRGlnaXRfc3RyaW5nX2hlbHBlcnMuUm91bmQudCA9XG4gICAgICAgICAgICAgICgqIFVsdGltYXRlbHksIHdlIGFsd2F5cyByb3VuZCBwYXJzZWQgc3BhbnMgdG93YXJkcyBwb3NpdGl2ZSBpbmZpbml0eSB3aGVuXG4gICAgICAgICAgICAgICAgIHRoZSBuZWFyZXN0IHJvdW5kIG5zIGFyZSBlcXVpZGlzdGFudC4gRm9yIGV4YW1wbGUsIFwiMS41bnNcIiBpcyByZWFkIGFzXG4gICAgICAgICAgICAgICAgIDIuMG5zLCBhbmQgXCItMS41bnNcIiBpcyByZWFkIGFzIC0xbnMuIFNpbmNlIHdlIHJlYWQgYWJzb2x1dGUgdmFsdWVzIGJlZm9yZVxuICAgICAgICAgICAgICAgICBhcHBseWluZyB0aGUgc2lnbiwgd2UgbXVzdCBjaG9vc2Ugb3VyIHJvdW5kaW5nIGRpcmVjdGlvbiBiYXNlZCBvbiB0aGVcbiAgICAgICAgICAgICAgICAgc2lnbi4gUm91bmRpbmcgZGVjaW1hbCB2YWx1ZXMgaGFwcGVucyBiZWZvcmUgbmVnYXRpbmcgdGhlaXIgbWFnbml0dWRlLiAqKVxuICAgICAgICAgICAgICBtYXRjaCBpc19uZWdhdGl2ZSB3aXRoXG4gICAgICAgICAgICAgIHwgZmFsc2UgLT4gVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgICAgICAgICAgIHwgdHJ1ZSAtPiBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBMb29wIG92ZXIgcGFydHMsIGxpa2UgXCI1bVwiIGluIFwiMWg1bTMwc1wiICopXG4gICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuIGRvXG4gICAgICAgICAgICAgIGxldCBoYXNfZGlnaXQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgbGV0IG5lZ19pbnRlZ2VyID1cbiAgICAgICAgICAgICAgICBsZXQgaSA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kaWdpdHMgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuICYmIG5vdCAhZW5kX29mX2RpZ2l0cyBkb1xuICAgICAgICAgICAgICAgICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgICAgICAgICAgaSA6PSBhZGRfbmVnX2RpZ2l0IH5zdHJpbmcgIWkgYztcbiAgICAgICAgICAgICAgICAgICAgaGFzX2RpZ2l0IDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8ICdfJyAtPiBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCBfIC0+IGVuZF9vZl9kaWdpdHMgOj0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIWlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfcG9zID0gIXBvcyBpblxuICAgICAgICAgICAgICBpZiAhcG9zIDwgbGVuICYmIENoYXIuZXF1YWwgJy4nIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcylcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kZWNpbWFscyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gJiYgbm90ICFlbmRfb2ZfZGVjaW1hbHMgZG9cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgICAgICAgICBoYXNfZGlnaXQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgJ18nIC0+IGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZW5kX29mX2RlY2ltYWxzIDo9IHRydWVcbiAgICAgICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAgICAgbGV0IGVuZF9wb3MgPSAhcG9zIGluXG4gICAgICAgICAgICAgIGlmIG5vdCAhaGFzX2RpZ2l0XG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJubyBkaWdpdHMgYmVmb3JlIHVuaXQgc3VmZml4XCI7XG4gICAgICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICAgICAgICAgICAgaWYgIXBvcyArIDEgPCBsZW4gJiYgQ2hhci5lcXVhbCAncycgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAoIXBvcyArIDEpKVxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnbScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICAgICAgfCAndScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICAgICAgfCAnbicgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ1bnBhcnNlYWJsZSB1bml0IHN1ZmZpeFwiKVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgIXBvcyA8IGxlblxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnZCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIERheVxuICAgICAgICAgICAgICAgICAgfCAnaCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIEhvdXJcbiAgICAgICAgICAgICAgICAgIHwgJ20nIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBNaW51dGVcbiAgICAgICAgICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBTZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInVucGFyc2VhYmxlIHVuaXQgc3VmZml4XCIpXG4gICAgICAgICAgICAgICAgZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm5vIHVuaXQgc3VmZml4IGFmdGVyIGRpZ2l0c1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZWdfbmFub3Nfb2ZfcGFydCA9XG4gICAgICAgICAgICAgICAgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgICB+bmVnX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgIH51bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBuZWdfbnMgOj0gYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgIW5lZ19ucyBuZWdfbmFub3Nfb2ZfcGFydFxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgIGlmIGlzX25lZ2F0aXZlXG4gICAgICAgICAgICAgIHRoZW4gIW5lZ19uc1xuICAgICAgICAgICAgICBlbHNlIGlmIEludDYzLiggPSApICFuZWdfbnMgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIlxuICAgICAgICAgICAgICBlbHNlIEludDYzLiggfi0gKSAhbmVnX25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb2ZfaW50NjNfbnMgbnNcbiAgICAgICAgICA7O1xuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHNleHApXG4gICAgICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWVfbnMuU3Bhbi5TdGFibGUuVjIudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUMClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5vcGVuIHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlMFxuZW5kXG5cbmxldCB0b19zdHJpbmcgPSBTdGFibGUuVjIudG9fc3RyaW5nXG5sZXQgb2Zfc3RyaW5nID0gU3RhYmxlLlYyLm9mX3N0cmluZ1xubGV0IHNleHBfb2ZfdCA9IFN0YWJsZS5WMi5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBTdGFibGUuVjIudF9vZl9zZXhwXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTdGFibGUuVjIudF9zZXhwX2dyYW1tYXJcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogRnVuY3Rpb25zIHJlcXVpcmVkIGJ5IFtSb2J1c3RseV9jb21wYXJhYmxlXTogYWxsb3dzIGZvciBbcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXVxuICAgZ3JhbnVsYXJpdHkuXG5cbiAgIEEgbWljcm9zZWNvbmQgaXMgYSByZWFzb25hYmxlIGdyYW51bGFyaXR5IGJlY2F1c2UgdGhlcmUgaXMgdmVyeSBsaXR0bGUgbmV0d29ya1xuICAgYWN0aXZpdHkgdGhhdCBjYW4gYmUgbWVhc3VyZWQgdG8gc3ViLW1pY3Jvc2Vjb25kIHJlc29sdXRpb24uICopXG5sZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gbWljcm9zZWNvbmRcbmxldCAoID49LiApIHQgdSA9IHQgPj0gSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8PS4gKSB0IHUgPSB0IDw9IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPS4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpIDw9IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxubGV0ICggPi4gKSB0IHUgPSB0ID4gSW50NjMuKHUgKyByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8LiApIHQgdSA9IHQgPCBJbnQ2My4odSAtIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDw+LiApIHQgdSA9IEludDYzLihhYnMgKHQgLSB1KSkgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCByb2J1c3RseV9jb21wYXJlIHQgdSA9IGlmIHQgPC4gdSB0aGVuIC0xIGVsc2UgaWYgdCA+LiB1IHRoZW4gMSBlbHNlIDBcblxuKCogV2UgZG9uJ3QganVzdCBjb252ZXJ0IHRvIFtUaW1lLlNwYW4udF0gYW5kIHVzZSB0aGUgY29udmVyc2lvbiB0aGVyZSBiZWNhdXNlIG91clxuICAgW3RvX3NwYW5dIGNvbnZlcnNpb24gaXMgbGltaXRlZCB0byBtaWNyb3NlY29uZCBwcmVjaXNpb24uICopXG5sZXQgdG9fc3RyaW5nX2h1bVxuICAgICAgPyhkZWxpbWl0ZXIgPSAnXycpXG4gICAgICA/KGRlY2ltYWxzID0gMylcbiAgICAgID8oYWxpZ25fZGVjaW1hbCA9IGZhbHNlKVxuICAgICAgP3VuaXRfb2ZfdGltZVxuICAgICAgdFxuICA9XG4gIGxldCBmbG9hdCwgc3VmZml4ID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWUgdW5pdF9vZl90aW1lIH5kZWZhdWx0Oih0b191bml0X29mX3RpbWUgdCkgd2l0aFxuICAgIHwgRGF5IC0+IHRvX2RheSB0LCBcImRcIlxuICAgIHwgSG91ciAtPiB0b19ociB0LCBcImhcIlxuICAgIHwgTWludXRlIC0+IHRvX21pbiB0LCBcIm1cIlxuICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0LCBcInNcIlxuICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdCwgXCJtc1wiXG4gICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0LCBcInVzXCJcbiAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdCwgXCJuc1wiXG4gIGluXG4gIGxldCBwcmVmaXggPVxuICAgIEZsb2F0LnRvX3N0cmluZ19odW0gZmxvYXQgfmRlbGltaXRlciB+ZGVjaW1hbHMgfnN0cmlwX3plcm86KG5vdCBhbGlnbl9kZWNpbWFsKVxuICBpblxuICBsZXQgc3VmZml4ID1cbiAgICBpZiBhbGlnbl9kZWNpbWFsICYmIEludC4oID0gKSAoU3RyaW5nLmxlbmd0aCBzdWZmaXgpIDEgdGhlbiBzdWZmaXggXiBcIiBcIiBlbHNlIHN1ZmZpeFxuICBpblxuICBwcmVmaXggXiBzdWZmaXhcbjs7XG5cbmxldCBzaW5jZV91bml4X2Vwb2NoICgpID0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSB8PiBvZl9pbnQ2M19uc1xuXG5sZXQgcmFuZG9tID9zdGF0ZSAoKSA9XG4gIEludDYzLnJhbmRvbSA/c3RhdGUgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICsgSW50NjMub25lKVxuICAtIEludDYzLnJhbmRvbSA/c3RhdGUgKG5lZyBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbjs7XG5cbmxldCByYW5kb21pemUgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0IH5wZXJjZW50ID1cbiAgU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IHN0YXRlIH5wZXJjZW50IH5zY2FsZVxuOztcblxubGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgbGV0ICh7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9IDogUGFydHMudCkgPSB0b19wYXJ0cyB0IGluXG4gIFNwYW5faGVscGVycy5zaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5uc1xuOztcblxubGV0IGdlbl9pbmNsID0gSW50NjMuZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gSW50NjMuZ2VuX3VuaWZvcm1faW5jbFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IG1vZHVsZV9uYW1lXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kKVxuXG50eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IFN0YWJsZS5WMi5jb21wYXJhdG9yXG4gIGVuZClcblxuKCogcmUtaW5jbHVkZSBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhbmQgaXRzIGNvbXBhcmlzb25zIHRvIHNoYWRvdyB0aGVcbiAgIHVuLWlubGluZWFibGUgb25lcyBmcm9tIFtDb21wYXJhYmxlXSAqKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaGFsZl9taWNyb3NlY29uZCA9IEludDYzLm9mX2ludCA1MDBcbmxldCBuZWFyZXN0X21pY3Jvc2Vjb25kIHQgPSBJbnQ2My4oKHRvX2ludDYzX25zIHQgKyBoYWxmX21pY3Jvc2Vjb25kKSAvJSBvZl9pbnQgMTAwMClcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiU3Bhbi50IGV4Y2VlZHMgbGltaXRzXCJcbiAgICAgICAgKHQgOiB0KVxuICAgICAgICAobWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgOiB0KVxuICAgICAgICAobWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgOiB0KV1cbjs7XG5cbmxldCBjaGVja19yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICBpZiB0IDwgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgfHwgdCA+IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW4gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHRcbiAgZWxzZSB0XG47O1xuXG5sZXQgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBTcGFuX2Zsb2F0Lm9mX3VzIChJbnQ2My50b19mbG9hdCAobmVhcmVzdF9taWNyb3NlY29uZCAoY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0KSkpXG47O1xuXG5sZXQgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgcyA9XG4gIGlmIFNwYW5fZmxvYXQuKCA+ICkgcyBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHx8IFNwYW5fZmxvYXQuKCA8ICkgcyBtaW5fc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZV9ucy5TcGFuIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBzcGFuXCJcbiAgICAgIHNcbiAgICAgIFslc2V4cF9vZjogU3Bhbl9mbG9hdC50XTtcbiAgKCogVXNpbmcgW1RpbWUuU3Bhbi50b19zZWNdIChiZWluZyB0aGUgaWRlbnRpdHkpIHNvIHRoYXRcbiAgICAgd2UgbWFrZSBkb24ndCBhcHBseSB0b28gbWFueSBjb252ZXJzaW9uXG4gICAgIC0gVG9vIG1hbnkgOiBgW1NwYW4udF0gLT4gW2FdIC0+IFt0XWBcbiAgICAgLSBPbmx5IE9uZSA6IGBbU3Bhbi50XT09W2FdIC0+IFt0XWAuICopXG4gIG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiAoU3Bhbl9mbG9hdC50b19zZWMgcylcbjs7XG5cbmxldCBtaW5fdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1pbl92YWx1ZVxubGV0IG1heF92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2ZfaW50NjNfbnMgSW50NjMubWF4X3ZhbHVlXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBvZl9wYXJ0cyA9IG9mX3BhcnRzXG4gIGxldCB0b19wYXJ0cyA9IHRvX3BhcnRzXG5lbmRcblxuKCogTGVnYWN5IGRlZmluaXRpb25zIGJhc2VkIG9uIHJvdW5kaW5nIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAqKVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBvZl9zcGFuID0gb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5sZXQgdG9fc3BhbiA9IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIHR5cGUgc3BhbiA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB0ID0gSW50NjMudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG4gICgqIG5hbm9zZWNvbmRzIG9yIG5vbmUgKilcblxuICBsZXQgbm9uZSA9IEludDYzLm1pbl92YWx1ZVxuICBsZXQgaXNfbm9uZSB0ID0gSW50NjMuKHQgPSBub25lKVxuICBsZXQgaXNfc29tZSB0ID0gSW50NjMuKHQgPD4gbm9uZSlcbiAgbGV0IHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuID0gaXNfc29tZSAodG9faW50NjNfbnMgc3BhbilcblxuICBsZXRbQGNvbGRdIHJhaXNlX3NvbWVfZXJyb3Igc3BhbiA9XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlNwYW4uT3B0aW9uLnNvbWUgdmFsdWUgbm90IHJlcHJlc2VudGFibGVcIiAoc3BhbiA6IHNwYW4pXVxuICA7O1xuXG4gIGxldCBzb21lIHNwYW4gPVxuICAgIGlmIHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuIHRoZW4gdG9faW50NjNfbnMgc3BhbiBlbHNlIHJhaXNlX3NvbWVfZXJyb3Igc3BhblxuICA7O1xuXG4gIGxldCB1bmNoZWNrZWRfdmFsdWUgdCA9IG9mX2ludDYzX25zIHRcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bmNoZWNrZWRfdmFsdWUgdClcblxuICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgIGlmIGlzX3NvbWUgdFxuICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJTcGFuLk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICA7O1xuXG4gIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHQgLT4gc29tZSB0XG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG9mX2ludDYzX25zIHQpXG5cbiAgbW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gICAgbW9kdWxlIFNvbWUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHNwYW5cblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOnNvbWVfaXNfcmVwcmVzZW50YWJsZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBxdWlja2NoZWNrX29ic2VydmVyXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBxdWlja2NoZWNrX3Nocmlua2VyIH5mOnNvbWVfaXNfcmVwcmVzZW50YWJsZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IFNvbWUudCBvcHRpb24gW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3IgfmY6b2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOm9mX29wdGlvblxuICAgICAgfmZfaW52ZXJzZTp0b19vcHRpb25cbiAgOztcblxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5jaGVja2VkX3ZhbHVlXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGJpbl9pb11cblxuICAgICAgICBsZXQgdjFfc29tZSBzcGFuID1cbiAgICAgICAgICBhc3NlcnQgKHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuKTtcbiAgICAgICAgICB0b19pbnQ2M19ucyBzcGFuXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwX29mOiBTdGFibGUuVjEudCBvcHRpb25dICh0b19vcHRpb24gdClcbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzID0gb2Zfb3B0aW9uIChbJW9mX3NleHA6IFN0YWJsZS5WMS50IG9wdGlvbl0gcylcbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biBpID0gaWYgaXNfbm9uZSBpIHRoZW4gbm9uZSBlbHNlIHYxX3NvbWUgKG9mX2ludDYzX25zIGkpXG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICAgIG9mX2ludDYzX2V4blxuICAgICAgICAgICAgdG9faW50NjNcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgYmluX2lvXVxuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAgICAgU2V4cC5MaXN0XG4gICAgICAgICAgICAoaWYgaXNfbm9uZSB0IHRoZW4gW10gZWxzZSBbIFN0YWJsZS5WMi5zZXhwX29mX3QgKHVuY2hlY2tlZF92YWx1ZSB0KSBdKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IGZhaWwgKCkgPVxuICAgICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgICBcIlRpbWVfbnMuU3Bhbi5PcHRpb24uU3RhYmxlLlYyLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGEgTGlzdCBvZiAwLTEgQXRvbVwiXG4gICAgICAgICAgICAgIHNleHBcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIF8gLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU2V4cC5MaXN0IGxpc3QgLT5cbiAgICAgICAgICAgIChtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICAgICB8IFtdIC0+IG5vbmVcbiAgICAgICAgICAgICB8IFsgU2V4cC5BdG9tIHggXSAtPlxuICAgICAgICAgICAgICAgc29tZVxuICAgICAgICAgICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsICgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gaSA9IGlcbiAgICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICAgIEludDYzLlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgICAgb2ZfaW50NjNfZXhuXG4gICAgICAgICAgICB0b19pbnQ2M1xuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgc2V4cF9vZl90ID0gU3RhYmxlLlYyLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYyLnRfb2Zfc2V4cFxuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvLCBoYXNoXVxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuLk9wdGlvblwiXG5cbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgZW5kKVxuICAgIGVuZClcblxuICBpbmNsdWRlIChJbnQ2MyA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlMFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBPcHRpb24uU3RhYmxlLlYxXG4gICAgbW9kdWxlIFYyID0gT3B0aW9uLlN0YWJsZS5WMlxuICBlbmRcbmVuZFxuXG5sZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNwYW4gPSBTcGFuX25zXG5cbnR5cGUgdW5kZXJseWluZyA9IEludDYzLnRcbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB3YWxsLWNsb2NrIG1pZG5pZ2h0ICopIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGUgKFNwYW4gOiBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIHRcblxuXG5sZXQgc3RhcnRfb2ZfZGF5IDogdCA9IFNwYW4uemVyb1xubGV0IHN0YXJ0X29mX25leHRfZGF5IDogdCA9IFNwYW4uZGF5XG5sZXQgYXBwcm94aW1hdGVfZW5kX29mX2RheSA9IFNwYW4uKCAtICkgc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5uYW5vc2Vjb25kXG5sZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IHRcblxubGV0W0Bjb2xkXSBpbnB1dF9vdXRfb2ZfYm91bmRzIHNwYW4gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbnB1dCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgfl86KHNwYW4gOiBTcGFuLnQpXVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBpc19pbnZhbGlkIHNwYW4gPVxuICAoKiBXaHkgd2UgdXNlIFtTcGFuLiggPiApXSByYXRoZXIgdGhhbiBbKCA+PSApXSBiZWxvdzpcblxuICAgICBXZSBhbGxvdyB0byByZXByZXNlbnQgdGhlIGVuZC1vZi1kYXkgc2VudGluZWwgdmFsdWUgKFsyNC4wMDAwMDAwMDBoXSksIHdoaWNoIGlzIG5vdFxuICAgICBpdHNlbGYgYSB2YWxpZCBjbG9jayBmYWNlIHRpbWUuICBIb3dldmVyLCBzaW5jZSB2YWxpZCBjbG9jayBmYWNlIHRpbWVzIHJlYWRpbHlcbiAgICAgcm91bmQgdXAgdG8gaXQsIGl0J3MgYmV0dGVyIHRvIGFsbG93IGl0IHRvIGJlIHJlcHJlc2VudGVkLiAqKVxuICBTcGFuLiggPCApIHNwYW4gc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA+ICkgc3BhbiBzdGFydF9vZl9uZXh0X2RheVxuOztcblxubGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPSBub3QgKGlzX2ludmFsaWQgc3BhbilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IHNwYW5cblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBzcGFuID1cbiAgaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuIGVsc2Ugc3BhblxuOztcblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCBzcGFuID0gaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gTm9uZSBlbHNlIFNvbWUgc3BhblxubGV0IGFkZF9leG4gdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLiggKyApIHQgc3BhbilcbmxldCBzdWJfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgYWRkIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgbmV4dCB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLm5leHQgdClcbmxldCBwcmV2IHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4ucHJldiB0KVxubGV0IGRpZmYgdCB1ID0gU3Bhbi4oIC0gKSB0IHVcblxubGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgKCogU2ltaWxhciB0byBbVGltZS5PZmRheS5jcmVhdGVdLCBpZiB3ZSBkZXRlY3QgYSBsZWFwIHNlY29uZCB3ZSBzdHJpcCBvZmYgYWxsXG4gICAgIHN1Yi1zZWNvbmQgZWxlbWVudHMgc28gdGhhdCBISDpNTTo2MC5YWFhYWFhYWFggaXMgYWxsIG1hcHBlZCB0byBISDpNTTo2MC4gKilcbiAgbGV0IG1zLCB1cywgbnMgPVxuICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICB8IF8gLT4gbXMsIHVzLCBuc1xuICBpblxuICBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTcGFuLlN0YWJsZS5WMi50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTcGFuLlN0YWJsZS5WMiA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFNwYW4uU3RhYmxlLlYyLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgIGxldCB0b19zdHJpbmdfd2l0aF91bml0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCBtb2QgKSA9IEludDYzLnJlbSBpblxuICAgICAgbGV0ICggISApID0gSW50NjMub2ZfaW50IGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGZ1biB0IH51bml0IC0+XG4gICAgICAgIGlmIFNwYW4uKCA8ICkgdCBzdGFydF9vZl9kYXkgfHwgU3Bhbi4oIDwgKSBzdGFydF9vZl9uZXh0X2RheSB0XG4gICAgICAgIHRoZW4gXCJJbmNvcnJlY3QgZGF5XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHNpeHR5ID0gITYwIGluXG4gICAgICAgICAgbGV0IHRob3VzYW5kID0gITEwMDAgaW5cbiAgICAgICAgICBsZXQgbnMgPSBTcGFuLnRvX2ludDYzX25zIHQgaW5cbiAgICAgICAgICBsZXQgdXMgPSBucyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG5zID0gbnMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbXMgPSB1cyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IHVzID0gdXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgcyA9IG1zIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgbXMgPSBtcyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBtID0gcyAvIHNpeHR5IGluXG4gICAgICAgICAgbGV0IHMgPSBzIG1vZCBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IGggPSBtIC8gc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBtID0gbSBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCB1bml0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCAoYE5hbm9zZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgU2Vjb25kKSBhcyB1bml0IC0+IHVuaXRcbiAgICAgICAgICAgIHwgYE1pbnV0ZV9vcl9sZXNzIC0+XG4gICAgICAgICAgICAgIGlmIG5zIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTmFub3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHVzIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBtcyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgcyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYFNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGBNaW51dGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICB8IGBNaW51dGUgLT4gNVxuICAgICAgICAgICAgfCBgU2Vjb25kIC0+IDhcbiAgICAgICAgICAgIHwgYE1pbGxpc2Vjb25kIC0+IDEyXG4gICAgICAgICAgICB8IGBNaWNyb3NlY29uZCAtPiAxNVxuICAgICAgICAgICAgfCBgTmFub3NlY29uZCAtPiAxOFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczowIGg7XG4gICAgICAgICAgQnl0ZXMuc2V0IHN0ciAyICc6JztcbiAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczozIG07XG4gICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICB8IGBNaW51dGUgLT4gKClcbiAgICAgICAgICAgfCAoYFNlY29uZCB8IGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA1ICc6JztcbiAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczo2IHM7XG4gICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICB8IGBTZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgfCAoYE1pbGxpc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICBCeXRlcy5zZXQgc3RyIDggJy4nO1xuICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjkgbXM7XG4gICAgICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAoKVxuICAgICAgICAgICAgICAgICB8IChgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjEyIHVzO1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgfCBgTmFub3NlY29uZCAtPiBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxNSBucykpKSk7XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpzdHIpXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9uYW5vc2Vjb25kcyBzdHJpbmcgfnBvcyB+dW50aWwgPVxuICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgIGxldCBkaWdpdHMgPSByZWYgMCBpblxuICAgICAgbGV0IG51bV9kaWdpdHMgPSByZWYgMCBpblxuICAgICAgbGV0IHBvcyA9IHJlZiBwb3MgaW5cbiAgICAgICgqIHJlYWQgdXAgdG8gMTAgZGlnaXRzOyBzdG9yZSB0aGUgZmlyc3QgOSwgdXNlIHRoZSAxMHRoIHRvIHJvdW5kICopXG4gICAgICB3aGlsZSAhcG9zIDwgdW50aWwgJiYgIW51bV9kaWdpdHMgPCAxMCBkb1xuICAgICAgICBsZXQgYyA9IHN0cmluZy5bIXBvc10gaW5cbiAgICAgICAgaWYgQ2hhci5pc19kaWdpdCBjXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGluY3IgbnVtX2RpZ2l0cztcbiAgICAgICAgICBpZiAhbnVtX2RpZ2l0cyA8IDEwXG4gICAgICAgICAgdGhlbiBkaWdpdHMgOj0gKCFkaWdpdHMgKiAxMCkgKyBDaGFyLmdldF9kaWdpdF9leG4gY1xuICAgICAgICAgIGVsc2UgaWYgQ2hhci5nZXRfZGlnaXRfZXhuIGMgPj0gNVxuICAgICAgICAgIHRoZW4gaW5jciBkaWdpdHNcbiAgICAgICAgICBlbHNlICgpKTtcbiAgICAgICAgaW5jciBwb3NcbiAgICAgIGRvbmU7XG4gICAgICAoKiBpZiB0aGVyZSBhcmUgbWlzc2luZyBkaWdpdHMsIGFkZCB6ZXJvZXMgKilcbiAgICAgIGlmICFudW1fZGlnaXRzIDwgOSB0aGVuIGRpZ2l0cyA6PSAhZGlnaXRzICogSW50LnBvdyAxMCAoOSAtICFudW1fZGlnaXRzKTtcbiAgICAgICFkaWdpdHNcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgbmFub3NlY29uZHMgPVxuICAgICAgICBpZiBJbnQuZXF1YWwgc3Vic2VjX2xlbiAwXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlXG4gICAgICAgICAgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3M6KHN1YnNlY19wb3MgKyAxKSB+dW50aWw6KHN1YnNlY19wb3MgKyBzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCBuYW5vc2Vjb25kcylcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4uc2Vjb25kIHNlYylcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4ubWludXRlIG1pbilcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4uaG91ciBocilcbiAgICAgIHw+IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IE9mZGF5X2hlbHBlcnMucGFyc2Ugc3RyaW5nIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwIDogdCA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImV4cGVjdGVkIGFuIGF0b21cIiBzZXhwXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICBsZXQgb3BlbiBTZXhwbGliIGluXG4gICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgIChTZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hciA6IHQgU2V4cF9ncmFtbWFyLnQpXG4gICAgICAgIH5rZXk6U2V4cF9ncmFtbWFyLnR5cGVfbmFtZV90YWdcbiAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5UaW1lX25zLk9mZGF5LnRcIilcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyAodCA6IHQpID0gdG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBOYW5vc2Vjb25kXG4gICAgbGV0IHNleHBfb2ZfdCAodCA6IHQpID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgICBsZXQgdG9faW50NjMgdCA9IFNwYW5fbnMuU3RhYmxlLlYyLnRvX2ludDYzIHRcbiAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW5fbnMuU3RhYmxlLlYyLm9mX2ludDYzX2V4biB0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChcbiAgU3RhYmxlLlYxIDpcbiAgICBDb21wYXJhdG9yLlNcbiAgd2l0aCB0eXBlIHQgOj0gdFxuICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0YWJsZS5WMSA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICBpbmNsdWRlIChTdGFibGUuVjEgOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lX25zLk9mZGF5XCJcbiAgZW5kKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RhYmxlLlYxLnRfc2V4cF9ncmFtbWFyXG5sZXQgdG9fbWljcm9zZWNvbmRfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaWNyb3NlY29uZFxubGV0IHRvX21pbGxpc2Vjb25kX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWlsbGlzZWNvbmRcbmxldCB0b19zZWNfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBTZWNvbmRcbmxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWludXRlX29yX2xlc3NcblxubGV0IG9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgPVxuICB0cnlcbiAgICBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpTdGFibGUuVjEuY3JlYXRlX2Zyb21fcGFyc2VkXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkOiBjYW5ub3QgcGFyc2Ugc3RyaW5nXCJcbiAgICAgICAgICB+XzooU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbiA6IHN0cmluZylcbiAgICAgICAgICB+XzooZXhuIDogZXhuKV1cbjs7XG5cbmxldCBldmVyeSA9XG4gIGxldCByZWMgZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjID1cbiAgICAoKiBBc3N1bWVzIFtzcGFuXSwgW3N0YXJ0XSwgYW5kIFtzdG9wXSBhcmUgdmFsaWQgb2ZkYXlzLiBBc3N1bWVzIFtzdGFydCA8IHN0b3BdLlxuICAgICAgIEFzc3VtZXMgW3NwYW4gPiAwXS4gKilcbiAgICBsZXQgYWNjID0gc3RhcnQgOjogYWNjIGluXG4gICAgbGV0IHN0YXJ0ID0gU3Bhbi4oICsgKSBzdGFydCBzcGFuIGluXG4gICAgaWYgU3Bhbi4oID4gKSBzdGFydCBzdG9wICgqIGNhbm5vdCBvdmVyZmxvdyAqKVxuICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgZWxzZSBldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2NcbiAgaW5cbiAgKCogaW50ZXJuYWwgW2V2ZXJ5XSBuYW1lZCB0byBzaG93IHVwIGluIHN0YWNrIHRyYWNlcyAqKVxuICBsZXQgZXZlcnkgc3BhbiB+c3RhcnQgfnN0b3AgPVxuICAgIGlmIFNwYW4uKCA+ICkgc3RhcnQgc3RvcFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbVGltZV9ucy5PZmRheS5ldmVyeV0gY2FsbGVkIHdpdGggW3N0YXJ0XSA+IFtzdG9wXVwiIChzdGFydCA6IHQpIChzdG9wIDogdCldXG4gICAgZWxzZSBpZiBTcGFuLiggPD0gKSBzcGFuIFNwYW4uemVyb1xuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiW1RpbWVfbnMuT2ZkYXkuZXZlcnldIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIHNwYW5cIiB+Xzooc3BhbiA6IFNwYW4udCldXG4gICAgZWxzZSBpZiBpc19pbnZhbGlkIHNwYW5cbiAgICB0aGVuIE9rIFsgc3RhcnQgXVxuICAgIGVsc2UgT2sgKGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjYzpbXSlcbiAgaW5cbiAgZXZlcnlcbjs7XG5cbmxldCBzbWFsbF9kaWZmID1cbiAgbGV0IGhvdXIgPSBTcGFuLnRvX2ludDYzX25zIFNwYW4uaG91ciBpblxuICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgIGxldCBvZmRheTIgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTIpIGluXG4gICAgbGV0IGRpZmYgPSBvZmRheTEgLSBvZmRheTIgaW5cbiAgICAoKiAgZDEgaXMgaW4gKC1ob3VyOyBob3VyKSAqKVxuICAgIGxldCBkMSA9IEludDYzLnJlbSBkaWZmIGhvdXIgaW5cbiAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICBsZXQgZDIgPSBJbnQ2My5yZW0gKGQxICsgaG91cikgaG91ciBpblxuICAgIGxldCBkID0gaWYgZDIgPiBob3VyIC8gSW50NjMub2ZfaW50IDIgdGhlbiBkMiAtIGhvdXIgZWxzZSBkMiBpblxuICAgIFNwYW4ub2ZfaW50NjNfbnMgZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwic21hbGxfZGlmZlwiID1cbiAgbGV0IHRlc3QgeCB5ID1cbiAgICBsZXQgZGlmZiA9IHNtYWxsX2RpZmYgeCB5IGluXG4gICAgcHJpbnRmICFcInNtYWxsX2RpZmYgJXMgJXMgPSAlc1xcblwiICh0b19zdHJpbmcgeCkgKHRvX3N0cmluZyB5KSAoU3Bhbi50b19zdHJpbmcgZGlmZilcbiAgaW5cbiAgbGV0IGV4YW1wbGVzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biAoeCwgeSkgLT4gb2Zfc3RyaW5nIHgsIG9mX3N0cmluZyB5KVxuICAgICAgWyBcIjEyOjAwXCIsIFwiMTI6MDVcIjsgXCIxMjo1OFwiLCBcIjEzOjAyXCI7IFwiMDA6NTJcIiwgXCIyMzoxOVwiOyBcIjAwOjAwXCIsIFwiMjQ6MDBcIiBdXG4gIGluXG4gIExpc3QuaXRlciBleGFtcGxlcyB+ZjooZnVuICh4LCB5KSAtPlxuICAgIHRlc3QgeCB5O1xuICAgIHRlc3QgeSB4KTtcbiAgWyVleHBlY3RcbiAgICB7fFxuICAgIHNtYWxsX2RpZmYgMTI6MDA6MDAuMDAwMDAwMDAwIDEyOjA1OjAwLjAwMDAwMDAwMCA9IC01bVxuICAgIHNtYWxsX2RpZmYgMTI6MDU6MDAuMDAwMDAwMDAwIDEyOjAwOjAwLjAwMDAwMDAwMCA9IDVtXG4gICAgc21hbGxfZGlmZiAxMjo1ODowMC4wMDAwMDAwMDAgMTM6MDI6MDAuMDAwMDAwMDAwID0gLTRtXG4gICAgc21hbGxfZGlmZiAxMzowMjowMC4wMDAwMDAwMDAgMTI6NTg6MDAuMDAwMDAwMDAwID0gNG1cbiAgICBzbWFsbF9kaWZmIDAwOjUyOjAwLjAwMDAwMDAwMCAyMzoxOTowMC4wMDAwMDAwMDAgPSAtMjdtXG4gICAgc21hbGxfZGlmZiAyMzoxOTowMC4wMDAwMDAwMDAgMDA6NTI6MDAuMDAwMDAwMDAwID0gMjdtXG4gICAgc21hbGxfZGlmZiAwMDowMDowMC4wMDAwMDAwMDAgMjQ6MDA6MDAuMDAwMDAwMDAwID0gMHNcbiAgICBzbWFsbF9kaWZmIDI0OjAwOjAwLjAwMDAwMDAwMCAwMDowMDowMC4wMDAwMDAwMDAgPSAwcyB8fV1cbjs7XG5cbmxldCBnZW5faW5jbCA9IFNwYW4uZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gU3Bhbi5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCBzdGFydF9vZl9kYXkgc3RhcnRfb2ZfbmV4dF9kYXlcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSAoU3BhbiA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5ncyAqKVxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG5sZXQgdG9fbWlsbGlzZWNfc3RyaW5nID0gdG9fbWlsbGlzZWNvbmRfc3RyaW5nXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG5vdyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xubW9kdWxlIE9mZGF5ID0gT2ZkYXlfbnNcblxudHlwZSB0ID0gU3Bhbi50ICgqIHNpbmNlIHRoZSBVbml4IGVwb2NoICgxOTcwLTAxLTAxIDAwOjAwOjAwIFVUQykgKilcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnQgPSBTcGFuLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuaW5jbHVkZSAoU3BhbiA6IFF1aWNrY2hlY2suU19yYW5nZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5sZXQgbm93ID0gU3Bhbi5zaW5jZV91bml4X2Vwb2NoXG5sZXQgZXF1YWwgPSBTcGFuLmVxdWFsXG5sZXQgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgZXBvY2ggPSBTcGFuLnplcm9cbmxldCBhZGQgPSBTcGFuLiggKyApXG5sZXQgc3ViID0gU3Bhbi4oIC0gKVxubGV0IGRpZmYgPSBTcGFuLiggLSApXG5sZXQgYWJzX2RpZmYgdCB1ID0gU3Bhbi5hYnMgKGRpZmYgdCB1KVxubGV0IG1heCA9IFNwYW4ubWF4XG5sZXQgbWluID0gU3Bhbi5taW5cbmxldCBuZXh0ID0gU3Bhbi5uZXh0XG5sZXQgcHJldiA9IFNwYW4ucHJldlxubGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggdCA9IHRcbmxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoIHMgPSBzXG5sZXQgdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCA6IEludDYzLnQgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG5sZXRbQGlubGluZV0gb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggaSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2ZfaW50NjNfbnMgaSlcbmxldFtAY29sZF0gb3ZlcmZsb3cgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfbnM6IG92ZXJmbG93XCJdXG5sZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwgdDJcbmxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4gdDJcblxubGV0IGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA8ICkgc3VtIHggZWxzZSBTcGFuLiggPiApIHN1bSB4XG47O1xuXG5sZXQgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA+ICkgZGlmZiB4IGVsc2UgU3Bhbi4oIDwgKSBkaWZmIHhcbjs7XG5cbmxldCBhZGRfZXhuIHggeSA9XG4gIGxldCBzdW0gPSBhZGQgeCB5IGluXG4gIGlmIGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtIHRoZW4gb3ZlcmZsb3cgKCkgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfZXhuIHggeSA9XG4gIGxldCBkaWZmID0gc3ViIHggeSBpblxuICBpZiBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmYgdGhlbiBvdmVyZmxvdyAoKSBlbHNlIGRpZmZcbjs7XG5cbmxldCBhZGRfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgc3VtID0gYWRkIHggeSBpblxuICBpZiBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bVxuICB0aGVuXG4gICAgaWYgU3Bhbi4oeSA+IHplcm8pIHRoZW4gU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZSBlbHNlIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbiAgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgZGlmZiA9IHN1YiB4IHkgaW5cbiAgaWYgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmXG4gIHRoZW5cbiAgICBpZiBTcGFuLih5ID4gemVybykgdGhlbiBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIGVsc2UgU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuICBlbHNlIGRpZmZcbjs7XG5cbmxldCB0b19pbnRfbnNfc2luY2VfZXBvY2ggPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLnRvX2ludF9uc19zaW5jZV9lcG9jaDogdW5zdXBwb3J0ZWQgb24gMzJiaXQgbWFjaGluZXNcIlxuOztcblxubGV0IG9mX2ludF9uc19zaW5jZV9lcG9jaCBpID0gb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggKEludDYzLm9mX2ludCBpKVxuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWUgPVxuICBpZiBUaW1lX2Zsb2F0LiggPCApIHRpbWUgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBUaW1lX2Zsb2F0LiggPiApIHRpbWUgbWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHRpbWVcIlxuICAgICAgdGltZVxuICAgICAgWyVzZXhwX29mOiBUaW1lX2Zsb2F0LlN0YWJsZS5XaXRoX3V0Y19zZXhwLlYyLnRdXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHRpbWUgPVxuICBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4ub2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChUaW1lX2Zsb2F0LnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSkpXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHRpbWUgPVxuICBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWU7XG4gIG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi5vZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKFRpbWVfZmxvYXQudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lKSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWwgPVxuICBmYWlsd2l0aHNcbiAgICB+aGVyZTpbJWhlcmVdXG4gICAgXCJUaW1lX25zLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICBpbnRlcnZhbFxuICAgIFslc2V4cF9vZjogU3Bhbi50XVxuOztcblxubGV0IG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsID1cbiAgaWYgU3Bhbi4oIDw9ICkgaW50ZXJ2YWwgU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWw7XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPSBhZGQgYmFzZSAoU3Bhbi5zY2FsZV9pbnQ2MyBpbnRlcnZhbCAoU3Bhbi5kaXYgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPSBTcGFuLnJhbmRvbSA/c3RhdGUgKClcblxubW9kdWxlIFV0YyA6IHNpZ1xuICB2YWwgdG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiB0IC0+IERhdGUwLnQgKiBTcGFuLnRcbiAgdmFsIG9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogRGF0ZTAudCAtPiBTcGFuLnQgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIGEgcmVjcmVhdGlvbiBvZiB0aGUgc3lzdGVtIGNhbGwgZ210aW1lIHNwZWNpYWxpemVkIHRvIHRoZSBmaWVsZHMgd2UgbmVlZCB0aGF0IGFsc29cbiAgICAgZG9lc24ndCByZWx5IG9uIFVuaXguICopXG4gIGxldCB0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0ICggITwgKSBpID0gSW50NjMub2ZfaW50X2V4biBpIGluXG4gICAgbGV0ICggIT4gKSB0ID0gSW50NjMudG9faW50X2V4biB0IGluXG4gICAgbGV0IG5zX3NpbmNlX2Vwb2NoID0gdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCBpblxuICAgIGxldCBuc19wZXJfZGF5ID0gITw4Nl80MDAgKiAhPDFfMDAwXzAwMF8wMDAgaW5cbiAgICBsZXQgYXBwcm94X2RheXNfZnJvbV9lcG9jaCA9IG5zX3NpbmNlX2Vwb2NoIC8gbnNfcGVyX2RheSBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgaWYgbnNfc2luY2VfZXBvY2ggPCAhPDAgJiYgYXBwcm94X2RheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgPD4gbnNfc2luY2VfZXBvY2hcbiAgICAgIHRoZW4gYXBwcm94X2RheXNfZnJvbV9lcG9jaCAtICE8MVxuICAgICAgZWxzZSBhcHByb3hfZGF5c19mcm9tX2Vwb2NoXG4gICAgaW5cbiAgICBsZXQgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5ID0gbnNfc2luY2VfZXBvY2ggLSAobnNfcGVyX2RheSAqIGRheXNfZnJvbV9lcG9jaCkgaW5cbiAgICBsZXQgZGF0ZSA9XG4gICAgICBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaCAhPmRheXNfZnJvbV9lcG9jaCB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICBpblxuICAgIGxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IFNwYW4ub2ZfaW50NjNfbnMgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgZGF0ZSwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9XG4gICAgYXNzZXJ0IChcbiAgICAgIFNwYW4uKCA+PSApIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IFNwYW4uemVyb1xuICAgICAgJiYgU3Bhbi4oIDwgKSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBTcGFuLmRheSk7XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICBpblxuICAgIGxldCBzcGFuX2luX2RheXNfc2luY2VfZXBvY2ggPSBTcGFuLnNjYWxlX2ludCBTcGFuLmRheSBkYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4uKCArICkgc3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIG1vZHVsZSBPZmRheV9hc19zcGFuID0gc3RydWN0XG4gICAgICBvcGVuIEludC5PXG5cbiAgICAgIGxldCBzZWNvbmRzX3RvX3N0cmluZyBzZWNvbmRzX3NwYW4gPVxuICAgICAgICBsZXQgc2Vjb25kcyA9IFNwYW4udG9faW50X3NlYyBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgbGV0IGggPSBzZWNvbmRzIC8gMzYwMCBpblxuICAgICAgICBsZXQgbSA9IHNlY29uZHMgLyA2MCAlIDYwIGluXG4gICAgICAgIGxldCBzID0gc2Vjb25kcyAlIDYwIGluXG4gICAgICAgIHNwcmludGYgXCIlMDJkOiUwMmQ6JTAyZFwiIGggbSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHdvX2RpZ2l0X29mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBhc3NlcnQgKFN0cmluZy5sZW5ndGggc3RyaW5nID0gMiAmJiBTdHJpbmcuZm9yX2FsbCBzdHJpbmcgfmY6Q2hhci5pc19kaWdpdCk7XG4gICAgICAgIEludC5vZl9zdHJpbmcgc3RyaW5nXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2Vjb25kc19vZl9zdHJpbmcgc2Vjb25kc19zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgc2Vjb25kc19zdHJpbmcgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBoX3N0cmluZzsgbV9zdHJpbmc7IHNfc3RyaW5nIF0gLT5cbiAgICAgICAgICBsZXQgaCA9IHR3b19kaWdpdF9vZl9zdHJpbmcgaF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbSA9IHR3b19kaWdpdF9vZl9zdHJpbmcgbV9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgcyA9IHR3b19kaWdpdF9vZl9zdHJpbmcgc19zdHJpbmcgaW5cbiAgICAgICAgICBTcGFuLm9mX2ludF9zZWMgKCgoKGggKiA2MCkgKyBtKSAqIDYwKSArIHMpXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuc19vZl8xMDBfbXMgPSAxMDBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwX21zID0gMTBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzFfbXMgPSAxXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfdXMgPSAxMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTBfdXMgPSAxMF8wMDBcbiAgICAgIGxldCBuc19vZl8xX3VzID0gMV8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfbnMgPSAxMDBcbiAgICAgIGxldCBuc19vZl8xMF9ucyA9IDEwXG4gICAgICBsZXQgbnNfb2ZfMV9ucyA9IDFcblxuICAgICAgbGV0IHN1Yl9zZWNvbmRfdG9fc3RyaW5nIHN1Yl9zZWNvbmRfc3BhbiA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIGxldCBucyA9IFNwYW4udG9faW50NjNfbnMgc3ViX3NlY29uZF9zcGFuIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgaWYgbnMgPSAwXG4gICAgICAgIHRoZW4gXCJcIlxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAxZFwiIChucyAvIG5zX29mXzEwMF9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAyZFwiIChucyAvIG5zX29mXzEwX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwM2RcIiAobnMgLyBuc19vZl8xX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA0ZFwiIChucyAvIG5zX29mXzEwMF91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA1ZFwiIChucyAvIG5zX29mXzEwX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNmRcIiAobnMgLyBuc19vZl8xX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA3ZFwiIChucyAvIG5zX29mXzEwMF9ucylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA4ZFwiIChucyAvIG5zX29mXzEwX25zKVxuICAgICAgICBlbHNlIHNwcmludGYgXCIuJTA5ZFwiIG5zXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViX3NlY29uZF9vZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgICAgICB0aGVuIFNwYW4uemVyb1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZGlnaXRzID0gU3RyaW5nLmNob3BfcHJlZml4X2V4biBzdHJpbmcgfnByZWZpeDpcIi5cIiBpblxuICAgICAgICAgIGFzc2VydCAoU3RyaW5nLmZvcl9hbGwgZGlnaXRzIH5mOkNoYXIuaXNfZGlnaXQpO1xuICAgICAgICAgIGxldCBtdWx0aXBsaWVyID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sZW5ndGggZGlnaXRzIHdpdGhcbiAgICAgICAgICAgIHwgMSAtPiBuc19vZl8xMDBfbXNcbiAgICAgICAgICAgIHwgMiAtPiBuc19vZl8xMF9tc1xuICAgICAgICAgICAgfCAzIC0+IG5zX29mXzFfbXNcbiAgICAgICAgICAgIHwgNCAtPiBuc19vZl8xMDBfdXNcbiAgICAgICAgICAgIHwgNSAtPiBuc19vZl8xMF91c1xuICAgICAgICAgICAgfCA2IC0+IG5zX29mXzFfdXNcbiAgICAgICAgICAgIHwgNyAtPiBuc19vZl8xMDBfbnNcbiAgICAgICAgICAgIHwgOCAtPiBuc19vZl8xMF9uc1xuICAgICAgICAgICAgfCA5IC0+IG5zX29mXzFfbnNcbiAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCAoSW50Lm9mX3N0cmluZyBkaWdpdHMgKiBtdWx0aXBsaWVyKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHNwYW4gPVxuICAgICAgICBhc3NlcnQgKFNwYW4uKCA+PSApIHNwYW4gU3Bhbi56ZXJvICYmIFNwYW4uKCA8ICkgc3BhbiBTcGFuLmRheSk7XG4gICAgICAgIGxldCBzZWNvbmRzX3NwYW4gPSBzcGFuIHw+IFNwYW4udG9faW50X3NlYyB8PiBTcGFuLm9mX2ludF9zZWMgaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3BhbiA9IFNwYW4uKCAtICkgc3BhbiBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgc2Vjb25kc190b19zdHJpbmcgc2Vjb25kc19zcGFuIF4gc3ViX3NlY29uZF90b19zdHJpbmcgc3ViX3NlY29uZF9zcGFuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICBsZXQgcHJlZml4X2xlbiA9IDggaW5cbiAgICAgICAgKCogXCJISDpNTTpERFwiICopXG4gICAgICAgIGxldCBzdWZmaXhfbGVuID0gbGVuIC0gcHJlZml4X2xlbiBpblxuICAgICAgICBsZXQgc2Vjb25kc19zdHJpbmcgPSBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOjAgfmxlbjpwcmVmaXhfbGVuIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3N0cmluZyA9IFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6cHJlZml4X2xlbiB+bGVuOnN1ZmZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHNlY29uZHNfc3BhbiA9IHNlY29uZHNfb2Zfc3RyaW5nIHNlY29uZHNfc3RyaW5nIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3NwYW4gPSBzdWJfc2Vjb25kX29mX3N0cmluZyBzdWJfc2Vjb25kX3N0cmluZyBpblxuICAgICAgICBTcGFuLiggKyApIHNlY29uZHNfc3BhbiBzdWJfc2Vjb25kX3NwYW5cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgbGV0IGRhdGUsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gVXRjLnRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheV9hc19zcGFuLnRvX3N0cmluZyBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBeIFwiWlwiXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBkYXRlX3N0cmluZywgb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSA9IFN0cmluZy5sc3BsaXQyX2V4biBzdHJpbmcgfm9uOicgJyBpblxuICAgICAgbGV0IG9mZGF5X3N0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSB+c3VmZml4OlwiWlwiIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlX3N0cmluZyBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXlfYXNfc3Bhbi5vZl9zdHJpbmcgb2ZkYXlfc3RyaW5nIGluXG4gICAgICBVdGMub2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBvZmRheVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgZW5kKVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgIGxldCBvcGVuIFNleHBsaWIgaW5cbiAgICAgIFNleHBfZ3JhbW1hci50YWdcbiAgICAgICAgdF9zZXhwX2dyYW1tYXJcbiAgICAgICAgfmtleTpTZXhwX2dyYW1tYXIudHlwZV9uYW1lX3RhZ1xuICAgICAgICB+dmFsdWU6KEF0b20gXCJDb3JlLlRpbWVfbnMuQWx0ZXJuYXRlX3NleHAudFwiKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgKCogc2VlIHRlc3RzIGluIGxpYi9jb3JlL3Rlc3Qvc3JjL3Rlc3RfdGltZV9ucyB0aGF0IGVuc3VyZSBzdGFiaWxpdHkgb2YgdGhpc1xuICAgICAgICAgICByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IEFsdGVybmF0ZV9zZXhwLlN0YWJsZVxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG5cbigqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZS5tbCBmdW5jdG9yLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldCBUaW1lX25zXG4gICB0by9vZl9zdHJpbmcgd29ya2luZyAqKVxubW9kdWxlIFRvX2FuZF9vZl9zdHJpbmcgOiBzaWdcbiAgdmFsIG9mX2RhdGVfb2ZkYXkgOiB6b25lOlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiB0XG5cbiAgdmFsIG9mX2RhdGVfb2ZkYXlfcHJlY2lzZVxuICAgIDogIERhdGUudFxuICAgIC0+IE9mZGF5LnRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IFsgYE9uY2Ugb2YgdCB8IGBUd2ljZSBvZiB0ICogdCB8IGBOZXZlciBvZiB0IF1cblxuICB2YWwgdG9fZGF0ZV9vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50ICogT2ZkYXkudFxuXG4gIHZhbCB0b19kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICB0XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBEYXRlLnQgKiBPZmRheS50ICogWyBgT25seSB8IGBBbHNvX2F0IG9mIHQgfCBgQWxzb19za2lwcGVkIG9mIERhdGUudCAqIE9mZGF5LnQgXVxuXG4gIHZhbCB0b19kYXRlIDogdCAtPiB6b25lOlpvbmUudCAtPiBEYXRlLnRcbiAgdmFsIHRvX29mZGF5IDogdCAtPiB6b25lOlpvbmUudCAtPiBPZmRheS50XG4gIHZhbCBjb252ZXJ0IDogZnJvbV90ejpab25lLnQgLT4gdG9fdHo6Wm9uZS50IC0+IERhdGUudCAtPiBPZmRheS50IC0+IERhdGUudCAqIE9mZGF5LnRcbiAgdmFsIHJlc2V0X2RhdGVfY2FjaGUgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHV0Y19vZmZzZXQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IFNwYW4udFxuXG4gIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldF1cIl1cblxuICB2YWwgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCA6IHN0cmluZyAtPiB0XG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbdG9fc3RyaW5nX3V0Y11cIl1cbiAgdmFsIHRvX3N0cmluZ191dGMgOiB0IC0+IHN0cmluZ1xuICB2YWwgdG9fZmlsZW5hbWVfc3RyaW5nIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIG9mX2ZpbGVuYW1lX3N0cmluZyA6IHN0cmluZyAtPiB6b25lOlpvbmUudCAtPiB0XG4gIHZhbCB0b19zdHJpbmdfdHJpbW1lZCA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3NlY19zdHJpbmdfd2l0aF96b25lIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIG9mX2xvY2FsaXplZF9zdHJpbmcgOiB6b25lOlpvbmUudCAtPiBzdHJpbmcgLT4gdFxuXG4gIHZhbCBvZl9zdHJpbmdfZ2VuXG4gICAgOiAgZGVmYXVsdF96b25lOih1bml0IC0+IFpvbmUudClcbiAgICAtPiBmaW5kX3pvbmU6KHN0cmluZyAtPiBab25lLnQpXG4gICAgLT4gc3RyaW5nXG4gICAgLT4gdFxuXG4gIHZhbCB0b19zdHJpbmdfYWJzIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19hYnNfdHJpbW1lZCA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3BhcnRzIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuXG4gIHZhbCBvY2N1cnJlbmNlXG4gICAgOiAgWyBgRmlyc3RfYWZ0ZXJfb3JfYXQgfCBgTGFzdF9iZWZvcmVfb3JfYXQgXVxuICAgIC0+IHRcbiAgICAtPiBvZmRheTpPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgKCogdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lX2Zsb2F0MC5tbCwgY29udmVydGVkIGVub3VnaCB0byBnZXRcbiAgICAgVGltZV9ucyB0by9vZl9zdHJpbmcgd29ya2luZyAqKVxuICBtb2R1bGUgRGF0ZV9hbmRfb2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdCA9IFNwYW4ub2ZfaW50NjNfbnMgdFxuXG4gICAgbGV0IG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSA9XG4gICAgICBsZXQgZGF5cyA9XG4gICAgICAgIERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaCB8PiBJbnQ2My5vZl9pbnRcbiAgICAgIGluXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAoZGF5cyAqIFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXkpXG4gICAgICArIFNwYW4udG9faW50NjNfbnMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KVxuICAgIDs7XG5cbiAgICBsZXQgdG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0YyA9XG4gICAgICBzdWJfZXhuIChTcGFuLm9mX2ludDYzX25zIHJlbGF0aXZlKSBvZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IG9mX2Fic29sdXRlIGFic29sdXRlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgU3Bhbi50b19pbnQ2M19ucyAoYWRkX2V4biBhYnNvbHV0ZSBvZmZzZXRfZnJvbV91dGMpXG4gICAgOztcblxuICAgIGxldCBuc19wZXJfZGF5ID0gU3Bhbi50b19pbnQ2M19ucyBTcGFuLmRheVxuXG4gICAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICAgICgqIG5vdGUgVGltZV9ucyByZXByZXNlbnRzIGFib3V0IDE0NiB5ZWFycywgbm90IGVub3VnaCBmb3IgW0RhdGUuY3JlYXRlX2V4bl0gdG8gZXZlclxuICAgICAgICAgcmFpc2UgKilcbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ID0gdCAvIG5zX3Blcl9kYXkgaW5cbiAgICAgICgqIHdoZW4gW3RdIGlzIG5lZ2F0aXZlIHRoZSBpbnRlZ2VyIGRpdmlzaW9uIHRoYXQgY2FsY3VsYXRlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICAgICB3aWxsIGxlYXZlIHVzIG9uZSBkYXkgc2hvcnQgYmVjYXVzZSBpdCB0cnVuY2F0ZXMgKGUuZy4gLTEwMCAvIDg2XzQwMCA9IDAgYW5kIHdlXG4gICAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICAgIGlmIHQgPCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ICogbnNfcGVyX2RheVxuICAgICAgdGhlbiBJbnQ2My5wcmVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIDs7XG5cbiAgICBsZXQgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2luX25zID0gZGF5c19mcm9tX2Vwb2NoICogbnNfcGVyX2RheSBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9IHQgLSBkYXlzX2Zyb21fZXBvY2hfaW5fbnMgaW5cbiAgICAgIFNwYW4ub2ZfaW50NjNfbnMgcmVtYWluZGVyIHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBJbnQ2My50b19pbnRfZXhuIGRheXNfZnJvbV9lcG9jaFxuICAgICAgfD4gRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZSB0ID1cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgICAgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgICgqIFRoaXMgaW50ZXJmYWNlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lX2ludGYuWm9uZSwgY29udmVydGVkIGVub3VnaCB0byBnZXRcbiAgICAgICB0aGlzIHRvIHdvcmsuXG5cbiAgICAgICBUaGUgcHJvYmxlbSBpcyBoYXMgcmVmZXJlbmNlcyB0byBUaW1lMF9pbnRmLlMsIHdoaWNoIGlzIHRoZSBmdW5jdG9yIGlucHV0IGludGVyZmFjZVxuICAgICAgIHRoYXQgVGltZV9ucyBjdXJyZW50bHkgZG9lcyBub3Qgc2F0aXNmeS4gKilcblxuICAgIHR5cGUgdGltZSA9IHRcbiAgICB0eXBlIHQgPSBab25lLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIG1vZHVsZSBJbmRleCA9IFpvbmUuSW5kZXhcblxuICAgICgqIGNvcGllZCBmdW5jdGlvbnMgcmVleHBvcnRlZCBmcm9tIFpvbmUgKilcblxuICAgIHZhbCB1dGMgOiB0XG4gICAgdmFsIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcbiAgICB2YWwgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgOiB0IC0+IEluZGV4LnQgLT4gYm9vbFxuXG4gICAgKCogbmV3IGZ1bmN0aW9ucyBkZWZpbmVkIGJlbG93ICopXG5cbiAgICB2YWwgaW5kZXggOiB0IC0+IHRpbWUgLT4gSW5kZXgudFxuICAgIHZhbCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IDogdCAtPiBEYXRlX2FuZF9vZmRheS50IC0+IHRpbWVcbiAgICB2YWwgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSA6IHQgLT4gdGltZSAtPiBEYXRlX2FuZF9vZmRheS50XG4gICAgdmFsIG5leHRfY2xvY2tfc2hpZnQgOiB0IC0+IHN0cmljdGx5X2FmdGVyOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICAgIHZhbCBwcmV2X2Nsb2NrX3NoaWZ0IDogdCAtPiBhdF9vcl9iZWZvcmU6dGltZSAtPiAodGltZSAqIFNwYW4udCkgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdGltZSA9IHRcblxuICAgIGluY2x1ZGUgWm9uZVxuXG4gICAgbGV0IG9mX3NwYW5faW5fc2Vjb25kcyBzcGFuX2luX3NlY29uZHMgPVxuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHNwYW5faW5fc2Vjb25kc1xuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgOztcblxuICAgIGxldCBvZl90aW1lX2luX3NlY29uZHMgdGltZV9pbl9zZWNvbmRzID1cbiAgICAgIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVfaW5fc2Vjb25kc1xuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBTcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lID1cbiAgICAgIHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICAgICAgfD4gU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSA9XG4gICAgICBEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCByZWxhdGl2ZVxuICAgICAgfD4gU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkub2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4IHQgdGltZSA9IGluZGV4IHQgKHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lKVxuXG4gICAgbGV0IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCAodG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPVxuICAgICAgbWF0Y2ggaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCB3aXRoXG4gICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXhcbiAgICAgICAgICAsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4IClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoSW5kZXgubmV4dCBpbmRleClcbiAgICBsZXQgcHJldl9jbG9ja19zaGlmdCB0IH5hdF9vcl9iZWZvcmU6dGltZSA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuICAgIGxldCBuZXh0X2Nsb2NrX3NoaWZ0IHQgfnN0cmljdGx5X2FmdGVyOnRpbWUgPSBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcblxuICAgIGxldCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHQgdGltZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleCB0IHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4X29mX2RhdGVfYW5kX29mZGF5XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBEYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheSA9XG4gICAgbGV0IHJlbGF0aXZlID0gRGF0ZV9hbmRfb2ZkYXkub2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IGluXG4gICAgWm9uZS5hYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHpvbmUgcmVsYXRpdmVcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlIGRhdGUgb2ZkYXkgfnpvbmUgPVxuICAgICgqIFdlIGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBvbmUgem9uZSBzaGlmdCB3aXRoaW4gYSBnaXZlbiBsb2NhbCBkYXkuICAqKVxuICAgIGxldCBzdGFydF9vZl9kYXkgPSBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgT2ZkYXkuc3RhcnRfb2ZfZGF5IGluXG4gICAgbGV0IHByb3Bvc2VkX3RpbWUgPSBhZGQgc3RhcnRfb2ZfZGF5IChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSkgaW5cbiAgICBtYXRjaCBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6c3RhcnRfb2ZfZGF5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgIHwgU29tZSAoc2hpZnRfc3RhcnQsIHNoaWZ0X2Ftb3VudCkgLT5cbiAgICAgIGxldCBzaGlmdF9iYWNrd2FyZHMgPSBTcGFuLihzaGlmdF9hbW91bnQgPCB6ZXJvKSBpblxuICAgICAgKCogc3RhcnQgYW5kIGVuZCBvZiB0aGUgXCJwcm9ibGVtYXRpYyByZWdpb25cIiAqKVxuICAgICAgbGV0IHMsIGUgPVxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50LCBzaGlmdF9zdGFydFxuICAgICAgICBlbHNlIHNoaWZ0X3N0YXJ0LCBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50XG4gICAgICBpblxuICAgICAgaWYgcHJvcG9zZWRfdGltZSA8IHNcbiAgICAgIHRoZW4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgICAgZWxzZSBpZiBzIDw9IHByb3Bvc2VkX3RpbWUgJiYgcHJvcG9zZWRfdGltZSA8IGVcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYFR3aWNlIChwcm9wb3NlZF90aW1lLCBzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gICAgICAgIGVsc2UgYE5ldmVyIHNoaWZ0X3N0YXJ0XG4gICAgICBlbHNlIGBPbmNlIChzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gIDs7XG5cbiAgbW9kdWxlIERhdGVfY2FjaGUgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID1cbiAgICAgIHsgbXV0YWJsZSB6b25lIDogWm9uZS50XG4gICAgICA7IG11dGFibGUgY2FjaGVfc3RhcnRfaW5jbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV91bnRpbF9leGNsIDogdFxuICAgICAgOyBtdXRhYmxlIGVmZmVjdGl2ZV9kYXlfc3RhcnQgOiB0XG4gICAgICA7IG11dGFibGUgZGF0ZSA6IERhdGUwLnRcbiAgICAgIH1cbiAgZW5kXG5cbiAgbGV0IGRhdGVfY2FjaGUgOiBEYXRlX2NhY2hlLnQgPVxuICAgIHsgem9uZSA9IFpvbmUudXRjXG4gICAgOyBjYWNoZV9zdGFydF9pbmNsID0gZXBvY2hcbiAgICA7IGNhY2hlX3VudGlsX2V4Y2wgPSBlcG9jaFxuICAgIDsgZWZmZWN0aXZlX2RheV9zdGFydCA9IGVwb2NoXG4gICAgOyBkYXRlID0gRGF0ZTAudW5peF9lcG9jaFxuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXRfZGF0ZV9jYWNoZSAoKSA9XG4gICAgZGF0ZV9jYWNoZS56b25lIDwtIFpvbmUudXRjO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBEYXRlMC51bml4X2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIHBoeXNfZXF1YWwgem9uZSBkYXRlX2NhY2hlLnpvbmVcbiAgICAmJiB0aW1lID49IGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbFxuICAgICYmIHRpbWUgPCBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIHN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IGFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IG1heCAoWm9uZS5pbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGNhY2hlX3VudGlsX2V4Y2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV91bnRpbCB8PiBtaW4gKFpvbmUuaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGRhdGVfY2FjaGUuem9uZSA8LSB6b25lO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGNhY2hlX3N0YXJ0X2luY2w7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gY2FjaGVfdW50aWxfZXhjbDtcbiAgICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlZmZlY3RpdmVfZGF5X3N0YXJ0O1xuICAgICAgZGF0ZV9jYWNoZS5kYXRlIDwtIGRhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRhdGVfY2FjaGUuZGF0ZVxuICA7O1xuXG4gIGxldCB0b19vZmRheSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRpZmYgdGltZSBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSA9IHRvX2RhdGUgdGltZSB+em9uZSwgdG9fb2ZkYXkgdGltZSB+em9uZVxuXG4gICgqIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGFsZ29yaXRobSAoaW50ZXJmYWNlLCBldmVuKSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXRcbiAgICAgdGltZXpvbmUgc2hpZnRzIGFyZW4ndCB0b28gY2xvc2UgdG9nZXRoZXIgKGFzIGluLCBpdCBjYW4ndCBzaW11bHRhbmVvdXNseSBiZSB0aGVcbiAgICAgY2FzZSB0aGF0IGEgdGltZXpvbmUgc2hpZnQgb2YgWCBob3VycyBvY2N1cnJlZCBsZXNzIHRoYW4gWCBob3VycyBhZ28sICphbmQqXG4gICAgIGEgdGltZXpvbmUgc2hpZnQgb2YgWSBob3VycyB3aWxsIG9jY3VyIGluIGxlc3MgdGhhbiBZIGhvdXJzJyB0aW1lKSAqKVxuICBsZXQgdG9fZGF0ZV9vZmRheV9wcmVjaXNlIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9hZnRlciA9IFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjp0aW1lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCA9IFpvbmUucHJldl9jbG9ja19zaGlmdCB6b25lIH5hdF9vcl9iZWZvcmU6dGltZSBpblxuICAgIGxldCBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnQgPVxuICAgICAgKCogVXNpbmcgW2RhdGVdIGFuZCByYWlzaW5nIG9uIFtOb25lXSBoZXJlIGlzIE9LIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tcbiAgICAgICAgIHNoaWZ0cyBjYW4ndCBjcm9zcyBkYXRlIGJvdW5kYXJpZXMuIFRoaXMgaXMgdHJ1ZSBpbiBhbGwgY2FzZXMgSSd2ZSBldmVyIGhlYXJkXG4gICAgICAgICBvZiAoYW5kIFtvZl9kYXRlX29mZGF5X3ByZWNpc2VdIHdvdWxkIG5lZWQgcmV2aXNpdGluZyBpZiBpdCB0dXJuZWQgb3V0IHRvIGJlXG4gICAgICAgICBmYWxzZSkgKilcbiAgICAgIG1hdGNoIE9mZGF5LnN1YiBvZmRheSBhbW91bnQgd2l0aFxuICAgICAgfCBTb21lIG9mZGF5IC0+IGBBbHNvX3NraXBwZWQgKGRhdGUsIG9mZGF5KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiVGltZS50b19kYXRlX29mZGF5X3ByZWNpc2VcIlxuICAgICAgICAgICAgICB+c3Bhbl9zaW5jZV9lcG9jaDoodG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lIDogU3Bhbi50KVxuICAgICAgICAgICAgICAoem9uZSA6IFpvbmUudCldXG4gICAgaW5cbiAgICBsZXQgYW1iaWd1aXR5ID1cbiAgICAgICgqIEVkZ2UgY2FzZXM6IHRoZSBpbnN0YW50IG9mIHRyYW5zaXRpb24gYmVsb25ncyB0byB0aGUgbmV3IHpvbmUgcmVnaW1lLiBTbyBpZiB0aGVcbiAgICAgICAgIGNsb2NrIG1vdmVkIGJ5IGFuIGhvdXIgZXhhY3RseSBvbmUgaG91ciBhZ28sIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBiZWNhdXNlIHRoZVxuICAgICAgICAgaG91ci1hZ28gdGltZSBiZWxvbmdzIHRvIHRoZSBzYW1lIHJlZ2ltZSBhcyB5b3UsIGFuZCBjb252ZXJzZWx5LCBpZiB0aGUgY2xvY2tcbiAgICAgICAgIHdpbGwgbW92ZSBieSBhbiBob3VyIGluIGFuIGhvdXJzJyB0aW1lLCB0aGVyZSAqaXMqIGFtYmlndWl0eS4gSGVuY2UgWz4uXSBmb3JcbiAgICAgICAgIHRoZSBmaXJzdCBjYXNlIGFuZCBbPD0uXSBmb3IgdGhlIHNlY29uZC4gKilcbiAgICAgIG1hdGNoIGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCwgY2xvY2tfc2hpZnRfYWZ0ZXIgd2l0aFxuICAgICAgfCBTb21lIChzdGFydCwgYW1vdW50KSwgXyB3aGVuIGFkZCBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA+IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBpcyBhYm91dCB0byBzaGlmdCAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGZvcndhcmQ6IG5vIGVmZmVjdCAqKVxuICAgICAgICAgIGBPbmx5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGJhY2s6IHRoaXMgZGF0ZS9vZmRheSB3aWxsIGJlIHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKGFkZCB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXyAtPiBgT25seVxuICAgIGluXG4gICAgZGF0ZSwgb2ZkYXksIGFtYmlndWl0eVxuICA7O1xuXG4gIGxldCBjb252ZXJ0IH5mcm9tX3R6IH50b190eiBkYXRlIG9mZGF5ID1cbiAgICBsZXQgc3RhcnRfdGltZSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6ZnJvbV90eiBkYXRlIG9mZGF5IGluXG4gICAgdG9fZGF0ZV9vZmRheSB+em9uZTp0b190eiBzdGFydF90aW1lXG4gIDs7XG5cbiAgbGV0IHV0Y19vZmZzZXQgdCB+em9uZSA9XG4gICAgbGV0IHV0Y19lcG9jaCA9IFpvbmUuZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB6b25lIHQgaW5cbiAgICBTcGFuLiggLSApXG4gICAgICAoRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdXRjX2Vwb2NoKVxuICAgICAgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbiAgOztcblxuICBsZXQgb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lID1cbiAgICBsZXQgdXRjX29mZnNldCA9IHV0Y19vZmZzZXQgdGltZSB+em9uZSBpblxuICAgIGxldCBpc191dGMgPSBTcGFuLiggPSApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIGluXG4gICAgaWYgaXNfdXRjXG4gICAgdGhlbiBcIlpcIlxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyAoaWYgU3Bhbi4oIDwgKSB1dGNfb2Zmc2V0IFNwYW4uemVybyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpXG4gICAgICAgIDsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWRcbiAgICAgICAgICAgIChPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uYWJzIHV0Y19vZmZzZXQpKVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfcGFydHMgPVxuICAgIGxldCBhdHRlbXB0IHRpbWUgfnpvbmUgPVxuICAgICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgICAgOyBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIE9mZGF5LnRvX3N0cmluZyBvZmRheTsgb2Zmc2V0X3N0cmluZyBdXG4gICAgICBdXG4gICAgaW5cbiAgICBmdW4gdGltZSB+em9uZSAtPlxuICAgICAgdHJ5IGF0dGVtcHQgdGltZSB+em9uZSB3aXRoXG4gICAgICB8IChfIDogZXhuKSAtPlxuICAgICAgICAoKiBJZiB3ZSBvdmVyZmxvdyBhcHBseWluZyB0aGUgVVRDIG9mZnNldCwgdHJ5IGFnYWluIHdpdGggVVRDIHRpbWUuICopXG4gICAgICAgIGF0dGVtcHQgdGltZSB+em9uZTpab25lLnV0Y1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICBTdHJpbmcuY29uY2F0XG4gICAgICB+c2VwOlwiIFwiXG4gICAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBvZmRheSBeIG9mZnNldF9zdHJpbmcgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzIHRpbWUgfnpvbmUgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgbGV0IHRvX3N0cmluZ191dGMgdCA9IHRvX3N0cmluZ19hYnMgdCB+em9uZTpab25lLnV0Y1xuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX3V0Y1xuXG4gIGxldCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyB0aW1lIH56b25lID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJUXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3NlY19zdHJpbmcgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmdfd2l0aF96b25lIHQgfnpvbmUgPSB0b19zZWNfc3RyaW5nIHQgfnpvbmUgXiBvZmZzZXRfc3RyaW5nIHQgfnpvbmVcblxuICBsZXQgdG9fZmlsZW5hbWVfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgXiBcIl9cIlxuICAgIF4gU3RyaW5nLnRyXG4gICAgICAgIH50YXJnZXQ6JzonXG4gICAgICAgIH5yZXBsYWNlbWVudDonLSdcbiAgICAgICAgKFN0cmluZy5kcm9wX3N1ZmZpeCAoT2ZkYXkudG9fc3RyaW5nIG9mZGF5KSAzKVxuICA7O1xuXG4gIGxldCBvZl9maWxlbmFtZV9zdHJpbmcgcyB+em9uZSA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonXycgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2UgaW4gZmlsZW5hbWUgc3RyaW5nXCJcbiAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gU3RyaW5nLnRyIH50YXJnZXQ6Jy0nIH5yZXBsYWNlbWVudDonOicgb2ZkYXkgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSB+em9uZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJUaW1lLm9mX2ZpbGVuYW1lX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICA7O1xuXG4gIGxldCBvZl9sb2NhbGl6ZWRfc3RyaW5nIH56b25lIHN0ciA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHIgfm9uOicgJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJubyBzcGFjZSBpbiBkYXRlX29mZGF5IHN0cmluZzogJXNcIiBzdHIpXG4gICAgICB8IFNvbWUgKGRhdGUsIHRpbWUpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIHRpbWUgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgd2l0aFxuICAgIHwgZSAtPiBFeG4ucmVyYWlzZSBlIFwiVGltZS5vZl9sb2NhbGl6ZWRfc3RyaW5nXCJcbiAgOztcblxuICBsZXQgb2NjdXJyZW5jZSBiZWZvcmVfb3JfYWZ0ZXIgdCB+b2ZkYXkgfnpvbmUgPVxuICAgIGxldCBmaXJzdF9ndWVzc19kYXRlID0gdG9fZGF0ZSB0IH56b25lIGluXG4gICAgbGV0IGZpcnN0X2d1ZXNzID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBmaXJzdF9ndWVzc19kYXRlIG9mZGF5IGluXG4gICAgbGV0IGNtcCwgaW5jcmVtZW50ID1cbiAgICAgIG1hdGNoIGJlZm9yZV9vcl9hZnRlciB3aXRoXG4gICAgICB8IGBMYXN0X2JlZm9yZV9vcl9hdCAtPiAoIDw9ICksIC0xXG4gICAgICB8IGBGaXJzdF9hZnRlcl9vcl9hdCAtPiAoID49ICksIDFcbiAgICBpblxuICAgIGlmIGNtcCBmaXJzdF9ndWVzcyB0XG4gICAgdGhlbiBmaXJzdF9ndWVzc1xuICAgIGVsc2Ugb2ZfZGF0ZV9vZmRheSB+em9uZSAoRGF0ZTAuYWRkX2RheXMgZmlyc3RfZ3Vlc3NfZGF0ZSBpbmNyZW1lbnQpIG9mZGF5XG4gIDs7XG5cbiAgbGV0IGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgb2Zmc2V0ID1cbiAgICBsZXQgb2Zmc2V0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggb2Zmc2V0IGluXG4gICAgaWYgSW50LiggPD0gKSBvZmZzZXRfbGVuZ3RoIDJcbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bMF1cbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bb2Zmc2V0X2xlbmd0aCAtIDFdXG4gICAgdGhlbiBvZmZzZXQgXiBcIjowMFwiXG4gICAgZWxzZSBpZiBDaGFyLiggPSApIG9mZnNldC5bMV0gJzonIHx8IENoYXIuKCA9ICkgb2Zmc2V0LlsyXSAnOidcbiAgICB0aGVuIG9mZnNldFxuICAgIGVsc2UgaWYgSW50LiggPCApIG9mZnNldF9sZW5ndGggMyB8fCBJbnQuKCA+ICkgb2Zmc2V0X2xlbmd0aCA0XG4gICAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIG9mZnNldCAlc1wiIG9mZnNldCAoKVxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IDAgKG9mZnNldF9sZW5ndGggLSAyKVxuICAgICAgICA7IFwiOlwiXG4gICAgICAgIDsgU3RyaW5nLnNsaWNlIG9mZnNldCAob2Zmc2V0X2xlbmd0aCAtIDIpIG9mZnNldF9sZW5ndGhcbiAgICAgICAgXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBUaW1lX25zX29mX3N0cmluZyBvZiBzdHJpbmcgKiBFeG4udCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBkYXRlLCBvZmRheSwgdHogPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JyAnIHdpdGhcbiAgICAgICAgfCBbIGRheTsgbW9udGg7IHllYXI7IG9mZGF5IF0gLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgZGF5OyBcIiBcIjsgbW9udGg7IFwiIFwiOyB5ZWFyIF0sIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBkYXRlOyBvZmRheTsgdHogXSAtPiBkYXRlLCBvZmRheSwgU29tZSB0elxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXkgXSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgcyBdIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonVCcgcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlcyBvciBUIGZvdW5kXCIpXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInRvbyBtYW55IHNwYWNlc1wiXG4gICAgICBpblxuICAgICAgbGV0IG9mZGF5X3RvX3NlYyBvZCA9IFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZCkgaW5cbiAgICAgIGxldCBvZmRheSwgdXRjX29mZnNldCA9XG4gICAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gb2ZkYXksIE5vbmVcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgQ2hhci4oID0gKSBvZmRheS5bU3RyaW5nLmxlbmd0aCBvZmRheSAtIDFdICdaJ1xuICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBvZmRheSB+cG9zOjAgfmxlbjooU3RyaW5nLmxlbmd0aCBvZmRheSAtIDEpLCBTb21lIDAuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246JysnIG9mZGF5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgbCwgU29tZSAob2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246Jy0nIG9mZGF5IHdpdGhcbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgICAgbCwgU29tZSAoLTEuICouIG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvZmRheSwgTm9uZSkpXG4gICAgICBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICB8IFNvbWUgdHogLT4gb2ZfZGF0ZV9vZmRheSB+em9uZTooZmluZF96b25lIHR6KSBkYXRlIG9mZGF5XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHV0Y19vZmZzZXQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB6b25lID0gZGVmYXVsdF96b25lICgpIGluXG4gICAgICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgICAgfCBTb21lIHV0Y19vZmZzZXQgLT5cbiAgICAgICAgICAgbGV0IHV0Y190ID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpab25lLnV0YyBkYXRlIG9mZGF5IGluXG4gICAgICAgICAgIHN1YiB1dGNfdCAoU3Bhbi5vZl9zZWMgdXRjX29mZnNldCkpXG4gICAgd2l0aFxuICAgIHwgZSAtPiByYWlzZSAoVGltZV9uc19vZl9zdHJpbmcgKHMsIGUpKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IHMgPVxuICAgIGxldCBkZWZhdWx0X3pvbmUgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcInRpbWUgaGFzIG5vIHRpbWUgem9uZSBvciBVVEMgb2Zmc2V0XCIgc10gaW5cbiAgICBsZXQgZmluZF96b25lIHpvbmVfbmFtZSA9XG4gICAgICBmYWlsd2l0aGYgXCJ1bmFibGUgdG8gbG9va3VwIFpvbmUgJXMuICBUcnkgdXNpbmcgQ29yZS5UaW1lLm9mX3N0cmluZ1wiIHpvbmVfbmFtZSAoKVxuICAgIGluXG4gICAgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgc1xuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XG5lbmRcblxuaW5jbHVkZSBUb19hbmRfb2Zfc3RyaW5nXG5cbmxldCBtaW5fdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1heF92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgdG9fdGltZSA9IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IG9mX3RpbWUgPSBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcblxubW9kdWxlIF8gPSBzdHJ1Y3RcbiAgb3BlbiBQcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWVcblxuICBsZXQgKCkgPVxuICAgIER1cmF0aW9uLmZvcm1hdFxuICAgIDo9IChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgZHVyYXRpb25fb2Zfc3BhbiBzID0gcyB8PiBTcGFuLnRvX2ludDYzX25zIHw+IER1cmF0aW9uLm9mX25hbm9zZWNvbmRzXG4gICAgICBsZXQgc3Bhbl9vZl9kdXJhdGlvbiBkID0gZCB8PiBEdXJhdGlvbi50b19uYW5vc2Vjb25kcyB8PiBTcGFuLm9mX2ludDYzX25zXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IHN0cmluZyB8PiBTcGFuLm9mX3N0cmluZyB8PiBkdXJhdGlvbl9vZl9zcGFuXG5cbiAgICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgZHVyYXRpb25zID1cbiAgICAgICAgbGV0IHNwYW5zID0gZHVyYXRpb25zIHw+IExpc3QubWFwIH5mOnNwYW5fb2ZfZHVyYXRpb24gaW5cbiAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9XG4gICAgICAgICAgc3BhbnNcbiAgICAgICAgICB8PiBMaXN0Lm1heF9lbHQgfmNvbXBhcmU6U3Bhbi5jb21wYXJlXG4gICAgICAgICAgfD4gT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAgICAgICAgfmY6U3Bhbi50b191bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgIH5kZWZhdWx0OlVuaXRfb2ZfdGltZS5OYW5vc2Vjb25kXG4gICAgICAgIGluXG4gICAgICAgIHNwYW5zIHw+IExpc3QubWFwIH5mOihTcGFuLnRvX3N0cmluZ19odW0gfnVuaXRfb2ZfdGltZSB+YWxpZ25fZGVjaW1hbDp0cnVlKVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEhhc2hfcXVldWUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgTWFwID0gc3RydWN0IGVuZFxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZSA9IHN0cnVjdCBlbmRcblxubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBpbnRlcnJ1cHRpYmxlX3BhdXNlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9zdHJpbmdfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV9uc191bml4X29yX1RpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmxldCBzZXhwX29mX3RfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfbnNfdW5peF9vcl9UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX3Vib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG4iLCIoKiBBIHN1YnN0cmluZyBpcyBhIGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4gIFdlIHVzZSBhXG4gICBmdW5jdG9yIGJlY2F1c2Ugd2Ugd2FudCBzdWJzdHJpbmdzIG9mIFtzdHJpbmddIGFuZCBbYmlnc3RyaW5nXS5cbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmdfaW50ZlxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZy50XG5cbm1vZHVsZSBCbGl0ID0gc3RydWN0XG4gIHR5cGUgKCdzcmMsICdkc3QpIHQgPSAoJ3NyYywgJ2RzdCkgQmxpdC5ibGl0b1xuXG4gIGxldCBzdHJpbmdfYnl0ZXMgfnNyYyA/c3JjX3BvcyA/c3JjX2xlbiB+ZHN0ID8oZHN0X3BvcyA9IDApICgpID1cbiAgICBsZXQgc3JjX3BvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuXG4gICAgICAgICgpXG4gICAgICAgID9wb3M6c3JjX3Bvc1xuICAgICAgICA/bGVuOnNyY19sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooU3RyaW5nLmxlbmd0aCBzcmMpXG4gICAgaW5cbiAgICBCeXRlcy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgbGV0IHN0cmluZ19zdHJpbmcgPSBzdHJpbmdfYnl0ZXNcbiAgbGV0IGJ5dGVzX2J5dGVzID0gQnl0ZXMuYmxpdG9cbiAgbGV0IHN0cmluZ19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdG9cbiAgbGV0IGJ5dGVzX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfc3RyaW5nID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYnl0ZXMgPSBCaWdzdHJpbmcuVG9fYnl0ZXMuYmxpdG9cbmVuZFxuXG4oKiBXZSBjYW4ndCBjYWxsIHRoZSBiYXNlIG1vZHVsZSBbQmFzZV0gYmVjYXVzZSBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSB3YW50cyB0byBhY2Nlc3NcbiAgIHRoZSBbQmFzZV0gbGlicmFyeSBkaXJlY3RseSwgYW5kIHdlJ2QgYmUgc2hhZG93aW5nIGl0LiAqKVxubW9kdWxlIEYgKFVuZGVybHlpbmcgOiBCYXNlKSA6IFMgd2l0aCB0eXBlIGJhc2UgPSBVbmRlcmx5aW5nLnQgPSBzdHJ1Y3RcbiAgdHlwZSBiYXNlID0gVW5kZXJseWluZy50XG5cbiAgdHlwZSB0ID1cbiAgICB7IGJhc2UgOiBVbmRlcmx5aW5nLnRcbiAgICA7IHBvcyA6IGludFxuICAgIDsgbGVuIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICgqIG5vdGUgd2Ugb3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCBbcXVpY2tjaGVja19nZW5lcmF0b3JdIGJlbG93LCBvbmNlIHdlJ3ZlIGRlZmluZWRcbiAgICAgW2NyZWF0ZV0gKilcblxuICAoKiB7W1xuICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICBhc3NlcnQgKDAgPD0gdC5wb3MpO1xuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQubGVuKTtcbiAgICAgICAgIGFzc2VydCAodC5wb3MgKyB0LmxlbiA8PSBCYXNlLmxlbmd0aCB0LmJhc2UpO1xuICAgICAgIDs7IF19ICopXG5cbiAgbGV0IGJhc2UgdCA9IHQuYmFzZVxuICBsZXQgcG9zIHQgPSB0LnBvc1xuICBsZXQgbGVuZ3RoIHQgPSB0LmxlblxuICBsZXQgaXNfZW1wdHkgdCA9IEludC5lcXVhbCB0LmxlbiAwXG5cbiAgbGV0IGJhc2Vfb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgYmFzZV9vZl9iaWdzdHJpbmcgcyA9XG4gICAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBidWYgPSBVbmRlcmx5aW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmcgfnNyYzpzIH5kc3Q6YnVmICgpO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGUgP3BvcyA/bGVuIGJhc2UgPVxuICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zXG4gICAgICAgID9sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooVW5kZXJseWluZy5sZW5ndGggYmFzZSlcbiAgICBpblxuICAgIHsgYmFzZTsgcG9zOyBsZW4gfVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgbGV0IG9wZW4gUXVpY2tjaGVjay5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgYmFzZSA9IFVuZGVybHlpbmcucXVpY2tjaGVja19nZW5lcmF0b3IgaW5cbiAgICBsZXQgYmFzZV9sZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIGluXG4gICAgbGV0JWJpbmQgbGVuID0gSW50Lmdlbl91bmlmb3JtX2luY2wgMCBiYXNlX2xlbiBpblxuICAgIGxldCViaW5kIHBvcyA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGJhc2VfbGVuIC0gbGVuKSBpblxuICAgIHJldHVybiAoY3JlYXRlIH5wb3MgfmxlbiBiYXNlKVxuICA7O1xuXG4gIGxldCBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSA9IFVuZGVybHlpbmcuZ2V0IChiYXNlIHQpIChwb3MgdCArIGkpXG5cbiAgbGV0IGdldCB0IGkgPVxuICAgIGlmIGkgPj0gMCAmJiBpIDwgbGVuZ3RoIHRcbiAgICB0aGVuIGdldF9ub19ib3VuZHNfY2hlY2sgdCBpXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgOztcblxuICBsZXQgc3ViID9wb3MgP2xlbiB0ID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgIGluXG4gICAgeyBiYXNlID0gdC5iYXNlOyBwb3MgPSB0LnBvcyArIHBvczsgbGVuIH1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcmcgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbW9kdWxlIEVsdCA9IENoYXJcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBnbyBhY2MgaSA9IGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBhY2MgKGdldCB0IGkpKSAoaSArIDEpIGluXG4gICAgICBnbyBpbml0IDAgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICAgICAgZiAoZ2V0IHQgaSlcbiAgICAgICAgICAgZG9uZSlcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRpID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5pbml0IH5mIC0+XG4gICAgICAgICAgIGxldCByZWMgZ28gYWNjIGkgPVxuICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBpIGFjYyAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpKSAoaSArIDEpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGdvIGluaXQgMCBbQG5vbnRhaWxdKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgaSAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmRcblxuICBtb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UwIChNYWtlX2FyZylcblxuICBsZXQgZm9sZCA9IEMuZm9sZFxuICBsZXQgaXRlciA9IEMuaXRlclxuICBsZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG4gIGxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbiAgKCogW0MudG9fbGlzdF0gaGFzIHRvIGNvbnN0cnVjdCB0aGVuIHJldmVyc2UgdGhlIGxpc3QgKilcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihnZXQgdClcbiAgbGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxuICBsZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG4gIGxldCBmaW5kID0gQy5maW5kXG4gIGxldCBleGlzdHMgPSBDLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxuICBsZXQgbWVtID0gQy5tZW1cbiAgbGV0IGNvdW50ID0gQy5jb3VudFxuICBsZXQgc3VtID0gQy5zdW1cbiAgbGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbiAgbGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbiAgbGV0IGZvbGRpID0gQy5mb2xkaVxuICBsZXQgaXRlcmkgPSBDLml0ZXJpXG4gIGxldCBleGlzdHNpID0gQy5leGlzdHNpXG4gIGxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbiAgbGV0IGNvdW50aSA9IEMuY291bnRpXG4gIGxldCBmaW5kaSA9IEMuZmluZGlcbiAgbGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5cbiAgbGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICAgIGlmIG4gPCAwXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgKG5hbWUgXiBcIiBleHBlY3Rpbmcgbm9ubmVnYXRpdmUgYXJndW1lbnRcIilcbiAgICBlbHNlIChcbiAgICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgICAgfCBfIC0+IG9uX2Vycm9yKVxuICA7O1xuXG4gIGxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICAgIHdyYXBfc3ViX25cbiAgICAgIH5uYW1lOlwiZHJvcF9wcmVmaXhcIlxuICAgICAgdFxuICAgICAgblxuICAgICAgfnBvczpuXG4gICAgICB+bGVuOihsZW5ndGggdCAtIG4pXG4gICAgICB+b25fZXJyb3I6eyB0IHdpdGggbGVuID0gMCB9XG4gIDs7XG5cbiAgbGV0IGRyb3Bfc3VmZml4IHQgbiA9XG4gICAgd3JhcF9zdWJfblxuICAgICAgfm5hbWU6XCJkcm9wX3N1ZmZpeFwiXG4gICAgICB0XG4gICAgICBuXG4gICAgICB+cG9zOjBcbiAgICAgIH5sZW46KGxlbmd0aCB0IC0gbilcbiAgICAgIH5vbl9lcnJvcjp7IHQgd2l0aCBsZW4gPSAwIH1cbiAgOztcblxuICBsZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxuICBsZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxuICBsZXQgYmxpdF90byAodHlwZSBhKSAoYmxpdCA6IChVbmRlcmx5aW5nLnQsIGEpIEJsaXQudCkgdCB+ZHN0IH5kc3RfcG9zID1cbiAgICBibGl0IH5zcmM6dC5iYXNlIH5zcmNfcG9zOnQucG9zIH5zcmNfbGVuOnQubGVuIH5kc3QgfmRzdF9wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF90b19zdHJpbmcgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19ieXRlc1xuICBsZXQgYmxpdF90b19ieXRlcyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzXG4gIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2JpZ3N0cmluZ1xuICBsZXQgYmxpdF9iYXNlID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRcblxuICBsZXQgYmxpdF9mcm9tIH5uYW1lICh0eXBlIGEpIChibGl0IDogKGEsIGJhc2UpIEJsaXQudCkgdCB+c3JjIH5zcmNfcG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IHQubGVuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhmXG4gICAgICAgIFwiU3Vic3RyaW5nLmJsaXRfZnJvbV8lcyBsZW4gPiBzdWJzdHJpbmcgbGVuZ3RoIDogJWQgPiAlZFwiXG4gICAgICAgIG5hbWVcbiAgICAgICAgbGVuXG4gICAgICAgIHQubGVuXG4gICAgICAgICgpO1xuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+c3JjX2xlbjpsZW4gfmRzdDp0LmJhc2UgfmRzdF9wb3M6dC5wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcInN0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZ1xuICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcImJpZ3N0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX2JpZ3N0cmluZ1xuICBsZXQgb2ZfYmFzZSBiYXNlID0geyBiYXNlOyBwb3MgPSAwOyBsZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIH1cbiAgbGV0IG9mX3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9zdHJpbmcgeClcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9iaWdzdHJpbmcgeClcblxuICBsZXQgbWFrZSAodHlwZSBhKSBjcmVhdGUgKGJsaXQgOiAoYmFzZSwgYSkgQmxpdC50KSB0ID1cbiAgICBsZXQgZHN0ID0gY3JlYXRlIHQubGVuIGluXG4gICAgYmxpdCB+c3JjOnQuYmFzZSB+c3JjX3Bvczp0LnBvcyB+c3JjX2xlbjp0LmxlbiB+ZHN0IH5kc3RfcG9zOjAgKCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZToobWFrZSBCeXRlcy5jcmVhdGUgVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzIHgpXG4gIDs7XG5cbiAgbGV0IHRvX2JpZ3N0cmluZyA9IG1ha2UgQmlnc3RyaW5nLmNyZWF0ZSBVbmRlcmx5aW5nLmJsaXRfdG9fYmlnc3RyaW5nXG5cbiAgbGV0IGNvbmNhdF9nZW4gY3JlYXRlX2RzdCBibGl0X2RzdCB0cyA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZCB0cyB+aW5pdDowIH5mOihmdW4gbGVuIHQgLT4gbGVuICsgbGVuZ3RoIHQpIGluXG4gICAgbGV0IGRzdCA9IGNyZWF0ZV9kc3QgbGVuIGluXG4gICAgaWdub3JlXG4gICAgICAoTGlzdC5mb2xkIHRzIH5pbml0OjAgfmY6KGZ1biBkc3RfcG9zIHQgLT5cbiAgICAgICAgIGJsaXRfZHN0IHQgfmRzdCB+ZHN0X3BvcztcbiAgICAgICAgIGRzdF9wb3MgKyBsZW5ndGggdClcbiAgICAgICA6IGludCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IGNvbmNhdCB0cyA9IG9mX2Jhc2UgKGNvbmNhdF9nZW4gVW5kZXJseWluZy5jcmVhdGUgYmxpdF9iYXNlIHRzKVxuXG4gIGxldCBjb25jYXRfc3RyaW5nIHRzID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooY29uY2F0X2dlbiBCeXRlcy5jcmVhdGUgYmxpdF90b19zdHJpbmcgdHMpXG4gIDs7XG5cbiAgbGV0IGNvbmNhdF9iaWdzdHJpbmcgdHMgPSBjb25jYXRfZ2VuIEJpZ3N0cmluZy5jcmVhdGUgYmxpdF90b19iaWdzdHJpbmcgdHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBNYWtlX3N1YnN0cmluZy5TXG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQnl0ZXMudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJ5dGVzLmNyZWF0ZVxuICAgIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQnl0ZXMuZ2V0XG5cbiAgICBtb2R1bGUgQmxpdCA9IE1ha2Vfc3Vic3RyaW5nLkJsaXRcblxuICAgIGxldCBibGl0ID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19ieXRlcyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJ5dGVzX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgU3RyaW5nX2lkX2ludGZcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyX3dpdGhfYmluX3NoYXBlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3Byb3QuU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZ1xuICAgICAgICAgIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgbGV0IGNoZWNrX2Zvcl93aGl0ZXNwYWNlID1cbiAgICAgICAgICBsZXQgaW52YWxpZCBzIHJlYXNvbiA9XG4gICAgICAgICAgICBFcnJvciAoc3ByaW50ZiBcIiclcycgaXMgbm90IGEgdmFsaWQgJXMgYmVjYXVzZSAlc1wiIHMgTS5tb2R1bGVfbmFtZSByZWFzb24pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBmdW4gcyAtPlxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgaWYgSW50LiggPSApIGxlbiAwXG4gICAgICAgICAgICB0aGVuIGludmFsaWQgcyBcIml0IGlzIGVtcHR5XCJcbiAgICAgICAgICAgIGVsc2UgaWYgQ2hhci5pc193aGl0ZXNwYWNlIHMuWzBdIHx8IENoYXIuaXNfd2hpdGVzcGFjZSBzLltsZW4gLSAxXVxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBoYXMgd2hpdGVzcGFjZSBvbiB0aGUgZWRnZVwiXG4gICAgICAgICAgICBlbHNlIE9rICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHZhbGlkYXRlIHMgPSBSZXN1bHQubWFwX2Vycm9yIChNLnZhbGlkYXRlIHMpIH5mOkVycm9yLnRvX3N0cmluZ19tYWNoXG5cbiAgICAgICAgbGV0IGNoZWNrIHMgPVxuICAgICAgICAgIGlmIE0uaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb25cbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIGNoZWNrX2Zvcl93aGl0ZXNwYWNlIHMgd2l0aFxuICAgICAgICAgICAgfCBPayAoKSAtPiB2YWxpZGF0ZSBzXG4gICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIGVycm9yKVxuICAgICAgICAgIGVsc2UgdmFsaWRhdGUgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgICAgICBsZXQgcHAgPSBTdHJpbmcucHBcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGludmFsaWRfYXJnIGVyclxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuU3RhYmxlLlYxLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgICAgbWF0Y2ggY2hlY2sgcyB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBzXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cFxuICAgICAgICA7O1xuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoU3RyaW5nKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdHJpbmdcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgICAgIGxldCBvcGVuIEJpbl9wcm90LlNoYXBlIGluXG4gICAgICAgICAgbWF0Y2ggTS5jYWxsZXJfaWRlbnRpdHkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBiaW5fc2hhcGVfdFxuICAgICAgICAgIHwgU29tZSB1dWlkIC0+IGFubm90YXRlIHV1aWQgYmluX3NoYXBlX3RcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVF93aXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRfd2l0aF9jb21wYXJhdG9yXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVF93aXRoX2NvbXBhcmF0b3IpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlX2xhdGVzdCA9IFN0YWJsZS5WMVxuICBpbmNsdWRlIFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTdHJpbmcucXVpY2tjaGVja19vYnNlcnZlclxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgU3RyaW5nLmdlbl9ub25lbXB0eScgQ2hhci5nZW5fcHJpbnRcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgfmY6KGZ1biBzdHJpbmcgLT4gY2hlY2sgc3RyaW5nIHw+IFJlc3VsdC5pc19vaylcbiAgOztcblxuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZVxuICAgICAgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1cblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICAgICAgZW5kKVxuICAgICAgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyXG4gICAgICAoc3RydWN0XG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgICAgbGV0IHZhbGlkYXRlID0gRm4uY29uc3QgKE9rICgpKVxuICAgICAgICBsZXQgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gPSB0cnVlXG4gICAgICBlbmQpXG4gICAgICAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGUgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfZGlzdGluY3RfYmluX3NoYXBlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9wcm90LlNoYXBlLlV1aWQudFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZVxuICAgICAgKHN0cnVjdFxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICAgIGxldCB2YWxpZGF0ZSA9IEZuLmNvbnN0IChPayAoKSlcbiAgICAgICAgbGV0IGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uID0gdHJ1ZVxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gU29tZSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgZW5kKVxuICAgICAgKClcblxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZVxuICBNYWtlXG4gICAgKHN0cnVjdFxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlN0cmluZ19pZFwiXG4gICAgZW5kKVxuICAgICgpXG5cbm1vZHVsZSBTdHJpbmdfd2l0aG91dF92YWxpZGF0aW9uX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZ2xvYmFsaXplID0gZ2xvYmFsaXplX3N0cmluZ1xuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBGbi5pZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIFN0YWJsZV91bml0X3Rlc3RfaW50ZlxuXG5tb2R1bGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcInNleHAgZGVzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHNleHBfYXNfc3RyaW5nIHw+IFNleHAub2Zfc3RyaW5nIHw+IFslb2Zfc2V4cDogVC50XSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPlxuICAgICAgICAgICBPcl9lcnJvci50YWdfYXJnXG4gICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICBcImNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBzZXhwXCJcbiAgICAgICAgICAgICAoc2V4cF9hc19zdHJpbmcsIGBFeHBlY3RlZCB0KVxuICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogWyBgRXhwZWN0ZWQgb2YgVC50IF1dXG4gICAgICAgICB8IE9rIHQnIC0+XG4gICAgICAgICAgIGlmIFQuZXF1YWwgdCB0J1xuICAgICAgICAgICB0aGVuIE9rICgpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgICAgXCJzZXhwIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgICB8PiBva19leG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9zZXhwX3NlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHNlcmlhbGl6YXRpb25cIiA9XG4gICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgKExpc3QubWFwIFQudGVzdHMgfmY6KGZ1biAodCwgc2V4cF9hc19zdHJpbmcsIF8pIC0+XG4gICAgICAgICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgc2V4cF9hc19zdHJpbmcgaW5cbiAgICAgICAgICAgbGV0IHNlcmlhbGl6ZWRfc2V4cCA9IFQuc2V4cF9vZl90IHQgaW5cbiAgICAgICAgICAgaWYgU2V4cC4oIDw+ICkgc2VyaWFsaXplZF9zZXhwIHNleHBcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICAgXCJzZXhwIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCBzZXhwLCBgQnV0X2dvdCBzZXJpYWxpemVkX3NleHApXG4gICAgICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFNleHAudCBdICogWyBgQnV0X2dvdCBvZiBTZXhwLnQgXV0pKSlcbiAgICB8PiBva19leG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJiaW5faW9cIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgXywgZXhwZWN0ZWRfYmluX2lvKSAtPlxuICAgICAgbGV0IGJpbmFibGVfbSA9IChtb2R1bGUgVCA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA9IFQudCkgaW5cbiAgICAgIGxldCB0b19iaW5fc3RyaW5nIHQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfYmluX2lvID0gdG9fYmluX3N0cmluZyB0IGluXG4gICAgICBpZiBTdHJpbmcuKCA8PiApIHNlcmlhbGl6ZWRfYmluX2lvIGV4cGVjdGVkX2Jpbl9pb1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKHQsIGBFeHBlY3RlZCBleHBlY3RlZF9iaW5faW8sIGBCdXRfZ290IHNlcmlhbGl6ZWRfYmluX2lvKVxuICAgICAgICAgIFslc2V4cF9vZjogVC50ICogWyBgRXhwZWN0ZWQgb2Ygc3RyaW5nIF0gKiBbIGBCdXRfZ290IG9mIHN0cmluZyBdXTtcbiAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSBzZXJpYWxpemVkX2Jpbl9pbyBpblxuICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImJpbl9pbyBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3NleHBfZGVzZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9zZXhwX3NlcmlhbGl6YXRpb25fdGVzdCAoVClcbiAgaW5jbHVkZSBNYWtlX2Jpbl9pb190ZXN0IChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3Vub3JkZXJlZF9jb250YWluZXIgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl9hcmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVGVzdCA9IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5Vbm9yZGVyZWRfY29udGFpbmVyX3Rlc3RcblxuICBsZXQldGVzdF91bml0IFwic2V4cFwiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCB7IFRlc3Quc2V4cHM7IF8gfSkgLT5cbiAgICAgIGxldCBzZXhwcyA9IExpc3QubWFwIHNleHBzIH5mOlNleHAub2Zfc3RyaW5nIGluXG4gICAgICBsZXQgc2VyaWFsaXplZF9lbGVtZW50cyA9XG4gICAgICAgIG1hdGNoIFQuc2V4cF9vZl90IHQgd2l0aFxuICAgICAgICB8IFNleHAuTGlzdCBzZXhwcyAtPiBzZXhwc1xuICAgICAgICB8IFNleHAuQXRvbSBfIC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcImV4cGVjdGVkIGxpc3Qgd2hlbiBzZXJpYWxpemluZyB1bm9yZGVyZWQgY29udGFpbmVyXCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFQuc2V4cF9vZl90XG4gICAgICBpblxuICAgICAgbGV0IHNvcnRlZF9zZXhwcyA9IExpc3Quc29ydCB+Y29tcGFyZTpTZXhwLmNvbXBhcmUgc2V4cHMgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2VyaWFsaXplZCA9IExpc3Quc29ydCB+Y29tcGFyZTpTZXhwLmNvbXBhcmUgc2VyaWFsaXplZF9lbGVtZW50cyBpblxuICAgICAgaWYgbm90IChMaXN0LmVxdWFsIFNleHAuKCA9ICkgc29ydGVkX3NleHBzIHNvcnRlZF9zZXJpYWxpemVkKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXhwIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cHMsIGBCdXRfZ290IHNlcmlhbGl6ZWRfZWxlbWVudHMpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBTZXhwLnQgbGlzdCBdXTtcbiAgICAgIGxldCBzZXhwX3Blcm11dGF0aW9ucyA9IExpc3QuaW5pdCAxMCB+ZjooZnVuIF8gLT4gTGlzdC5wZXJtdXRlIHNleHBzKSBpblxuICAgICAgTGlzdC5pdGVyIHNleHBfcGVybXV0YXRpb25zIH5mOihmdW4gc2V4cHMgLT5cbiAgICAgICAgbGV0IHQnID0gVC50X29mX3NleHAgKFNleHAuTGlzdCBzZXhwcykgaW5cbiAgICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbXNpbWF0Y2hcIlxuICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBpc19jb25jYXRlbmF0aW9uIHN0cmluZyBzdHJpbmdzID1cbiAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgdGhlbiBMaXN0LmZvcl9hbGwgc3RyaW5ncyB+ZjpTdHJpbmcuaXNfZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCByZXZfc2tpcHBlZCBzdHJpbmdzID1cbiAgICAgICAgbWF0Y2ggc3RyaW5ncyB3aXRoXG4gICAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgICAgfCBwcmVmaXggOjogc3RyaW5ncyAtPlxuICAgICAgICAgIGxldCBjb250aW51ZSAoKSA9IGxvb3AgKHByZWZpeCA6OiByZXZfc2tpcHBlZCkgc3RyaW5ncyBpblxuICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9wcmVmaXggfnByZWZpeCBzdHJpbmcgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gY29udGludWUgKClcbiAgICAgICAgICAgfCBTb21lIHN0cmluZyAtPlxuICAgICAgICAgICAgIGlzX2NvbmNhdGVuYXRpb24gc3RyaW5nIChMaXN0LnJldl9hcHBlbmQgcmV2X3NraXBwZWQgc3RyaW5ncykgfHwgY29udGludWUgKCkpXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBzdHJpbmdzKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJiaW5faW9cIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LmJpbl9pb19oZWFkZXI7IGJpbl9pb19lbGVtZW50czsgXyB9KSAtPlxuICAgICAgbGV0IGJpbmFibGVfbSA9IChtb2R1bGUgVCA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA9IFQudCkgaW5cbiAgICAgIGxldCBlbGVtZW50cyA9IGJpbl9pb19lbGVtZW50cyBpblxuICAgICAgbGV0IGJpbl9pb19vZl9lbGVtZW50cyBlbGVtZW50cyA9IGJpbl9pb19oZWFkZXIgXiBTdHJpbmcuY29uY2F0IGVsZW1lbnRzIGluXG4gICAgICBsZXQgc2VyaWFsaXplZCA9IEJpbmFibGUudG9fc3RyaW5nIGJpbmFibGVfbSB0IGluXG4gICAgICBsZXQgc2VyaWFsaXphdGlvbl9tYXRjaGVzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXg6YmluX2lvX2hlYWRlciBzZXJpYWxpemVkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBlbGVtZW50c19zdHJpbmcgLT4gaXNfY29uY2F0ZW5hdGlvbiBlbGVtZW50c19zdHJpbmcgZWxlbWVudHNcbiAgICAgIGluXG4gICAgICBpZiBub3Qgc2VyaWFsaXphdGlvbl9tYXRjaGVzXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcInNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgKGJpbl9pb19oZWFkZXIsIGVsZW1lbnRzKSwgYEJ1dF9nb3Qgc2VyaWFsaXplZClcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIHN0cmluZyAqIHN0cmluZyBsaXN0IF0gKiBbIGBCdXRfZ290IG9mIHN0cmluZyBdXTtcbiAgICAgIGxldCBwZXJtdXRhdGF0aW9ucyA9IExpc3QuaW5pdCAxMCB+ZjooZnVuIF8gLT4gTGlzdC5wZXJtdXRlIGVsZW1lbnRzKSBpblxuICAgICAgTGlzdC5pdGVyIHBlcm11dGF0YXRpb25zIH5mOihmdW4gZWxlbWVudHMgLT5cbiAgICAgICAgbGV0IHQnID0gQmluYWJsZS5vZl9zdHJpbmcgYmluYWJsZV9tIChiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcImJpbi1pbyBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gIDs7XG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG4oKiBUaGUgbW9kdWxlIFtUXSBzZXJ2ZXMgdG8gZW5mb3JjZSB0aGUgaW52YXJpYW50IHRoYXQgYWxsIEJsYW5nLnQgdmFsdWVzIGFyZSBpbiBhXG4gICBub3JtYWwgZm9ybSB3aGVyZWJ5IGJvb2xlYW4gY29uc3RhbnRzIFRydWUgYW5kIEZhbHNlIG9ubHkgYXBwZWFyIGFzIHRoZSB0b3Btb3N0XG4gICBjb25zdHJ1Y3RvciAtLSBpbiBhbnkgb3RoZXIgcG9zaXRpb24gdGhleSBhcmUgc2ltcGxpZmllZCBhd2F5IHVzaW5nIGxhd3Mgb2ZcbiAgIGJvb2xlYW4gYWxnZWJyYS5cblxuICAgV2UgYWxzbyBlbmZvcmNlIHRoYXQgbmVzdGVkIFtBbmRdcyBhbmQgW09yXXMgZWFjaCBsZWFuIHRvIHRoZSByaWdodCBzbyB0aGF0IFtldmFsXVxuICAgZG9lc24ndCBuZWVkIHNvIG11Y2ggc3RhY2sgc3BhY2UgYXMgaXQgd291bGQgaWYgdGhleSBsZWFuZWQgdG8gdGhlIGxlZnQuICBUaG91Z2h0XG4gICBleHBlcmltZW50OiBjb21wYXJlIGhvdyBbZXZhbF0gd29ya3Mgb24gcmlnaHQtbGVhbmluZyBbQW5kIChhLCBBbmQgKGIsIEFuZCAoYywgZCkpKV1cbiAgIHZlcnN1cyBsZWZ0LWxlYW5pbmcgW0FuZCAoQW5kIChBbmQgKGEsIGIpLCBjKSwgZCldLiAgVGhlIGZvcm1lciBpcyB0aGUgYmVzdCBjYXNlIGFuZCBpc1xuICAgZW5mb3JjZWQuXG5cbiAgIE5vdGU6IHRoaXMgZmlsZSBkZXZpYXRlcyBmcm9tIHRoZSB1c3VhbCBwYXR0ZXJuIG9mIG1vZHVsZXMgd2l0aCBTdGFibGUgaW50ZXJmYWNlcyBpblxuICAgdGhhdCB0aGUgU3RhYmxlIHN1Yi1tb2R1bGUgaXMgbm90IHRoZSBmaXJzdCB0aGluZyB0byBiZSBkZWZpbmVkIGluIHRoZSBtb2R1bGUuICBUaGVcbiAgIHJlYXNvbiBmb3IgdGhpcyBkZXZpYXRpb24gaXMgc28gdGhhdCBvbmUgY2FuIGNvbnZpbmNlIG9uZXNlbGYgb2YgdGhlIGFmb3JlbWVudGlvbmVkXG4gICBpbnZhcmlhbnQgYWZ0ZXIgcmVhZGluZyBvbmx5IHRoaXMgc21hbGwgYW1vdW50IG9mIGNvZGUuICBBZnRlciBkZWZpbmluZyBUIHdlIHRoZW5cbiAgIGltbWVkaWF0ZWx5IGRlZmluZSBpdHMgU3RhYmxlIGludGVyZmFjZS5cbiopXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICsnYSB0ID0gcHJpdmF0ZVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICB2YWwgaW52YXJpYW50IDogJ2EgdCAtPiB1bml0XG4gIHZhbCB0cnVlXyA6ICdhIHRcbiAgdmFsIGZhbHNlXyA6ICdhIHRcbiAgdmFsIG5vdF8gOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFuZGFsc28gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgb3JlbHNlIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGlmXyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGJhc2UgOiAnYSAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9XG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwXVxuXG4gIGxldCBpbnZhcmlhbnQgPVxuICAgIGxldCBzdWJ0ZXJtcyA9IGZ1bmN0aW9uXG4gICAgICB8IFRydWUgfCBGYWxzZSB8IEJhc2UgXyAtPiBbXVxuICAgICAgfCBOb3QgdDEgLT4gWyB0MSBdXG4gICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IFsgdDE7IHQyIF1cbiAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IFsgdDE7IHQyOyB0MyBdXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvbnRhaW5zX25vX2NvbnN0YW50cyA9IGZ1bmN0aW9uXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgdCAtPiBMaXN0Lml0ZXIgfmY6Y29udGFpbnNfbm9fY29uc3RhbnRzIChzdWJ0ZXJtcyB0KVxuICAgIGluXG4gICAgZnVuIHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgOztcblxuICBsZXQgdHJ1ZV8gPSBUcnVlXG4gIGxldCBmYWxzZV8gPSBGYWxzZVxuICBsZXQgYmFzZSB2ID0gQmFzZSB2XG5cbiAgbGV0IG5vdF8gPSBmdW5jdGlvblxuICAgIHwgVHJ1ZSAtPiBGYWxzZVxuICAgIHwgRmFsc2UgLT4gVHJ1ZVxuICAgIHwgTm90IHQgLT4gdFxuICAgIHwgdCAtPiBOb3QgdFxuICA7O1xuXG4gIGxldCByZWMgYW5kYWxzbyB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IF8sIEZhbHNlIHwgRmFsc2UsIF8gLT4gRmFsc2VcbiAgICB8IG90aGVyLCBUcnVlIHwgVHJ1ZSwgb3RoZXIgLT4gb3RoZXJcbiAgICB8IEFuZCAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW0FuZF1zIGxlYW4gcmlnaHQgLS0gc2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIEFuZCAodDFhLCBhbmRhbHNvIHQxYiB0MilcbiAgICB8IF8gLT4gQW5kICh0MSwgdDIpXG4gIDs7XG5cbiAgbGV0IHJlYyBvcmVsc2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBUcnVlIHwgVHJ1ZSwgXyAtPiBUcnVlXG4gICAgfCBvdGhlciwgRmFsc2UgfCBGYWxzZSwgb3RoZXIgLT4gb3RoZXJcbiAgICB8IE9yICh0MWEsIHQxYiksIF8gLT5cbiAgICAgICgqIG5lc3RlZCBbT3JdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBPciAodDFhLCBvcmVsc2UgdDFiIHQyKVxuICAgIHwgXyAtPiBPciAodDEsIHQyKVxuICA7O1xuXG4gIGxldCBpZl8gYSBiIGMgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgVHJ1ZSAtPiBiXG4gICAgfCBGYWxzZSAtPiBjXG4gICAgfCBfIC0+XG4gICAgICAobWF0Y2ggYiwgYyB3aXRoXG4gICAgICAgfCBUcnVlLCBfIC0+IG9yZWxzZSBhIGNcbiAgICAgICB8IF8sIEZhbHNlIC0+IGFuZGFsc28gYSBiXG4gICAgICAgfCBfLCBUcnVlIC0+IG9yZWxzZSAobm90XyBhKSBiXG4gICAgICAgfCBGYWxzZSwgXyAtPiBhbmRhbHNvIChub3RfIGEpIGNcbiAgICAgICB8IF8gLT4gSWYgKGEsIGIsIGMpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgOiBzaWdcbiAgICAoKiBUSElTIFRZUEUgQU5EIElUUyBTRVJJQUxJWkFUSU9OUyBTSE9VTEQgTkVWRVIgQkUgQ0hBTkdFRCAtIFBMRUFTRSBTUEVBSyBXSVRIXG4gICAgICAgQU5PVEhFUiBERVZFTE9QRVIgSUYgWU9VIE5FRUQgTU9SRSBERVRBSUwgKilcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICAgIHwgVHJ1ZVxuICAgICAgfCBGYWxzZVxuICAgICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgTm90IG9mICdhIHRcbiAgICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgICB8IEJhc2Ugb2YgJ2FcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgKCogdGhlIHJlbWFpbmRlciBvZiB0aGlzIHNpZ25hdHVyZSBjb25zaXN0cyBvZiBmdW5jdGlvbnMgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbnNcbiAgICAgICBvZiBzZXhwIGNvbnZlcnNpb25zIHRoYXQgYXJlIGFsc28gdXNlZnVsIG1vcmUgZ2VuZXJhbGx5ICopXG5cbiAgICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIG9yXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGdhdGhlcl9jb25qdW5jdHMgOiAnYSB0IC0+ICdhIHQgbGlzdFxuICAgIHZhbCBnYXRoZXJfZGlzanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgICAgfCBUcnVlXG4gICAgICB8IEZhbHNlXG4gICAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBOb3Qgb2YgJ2EgdFxuICAgICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICAgIHwgQmFzZSBvZiAnYVxuXG4gICAgKCogVGhpcyB0eXBlIGlzIGFzc3VtZWQgdG8gYmUgc3RhYmxlIGlmIHRoZSAnYSBpcyBzdGFibGUgKHNlZSBiaWcgY29tbWVudCBhYm92ZSkuICopXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIChfIDogJ2EgU3RhYmxlX3dpdG5lc3MudCkgOiAnYSB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFQgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4gICAgdHlwZSBzZXhwID0gU2V4cC50ID1cbiAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgIHwgTGlzdCBvZiBzZXhwIGxpc3RcblxuICAgICgqIGNoZWFwIGltcG9ydCAqKVxuXG4gICAgKCogZmxhdHRlbiBvdXQgbmVzdGVkIGFuZCdzICopXG4gICAgbGV0IGdhdGhlcl9jb25qdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogZmxhdHRlbiBvdXQgbmVzdGVkIG9yJ3MgKilcbiAgICBsZXQgZ2F0aGVyX2Rpc2p1bmN0cyB0ID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgICAgIHwgT3IgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCAodCA6OiBhY2MpIHRzXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBbIHQgXVxuICAgIDs7XG5cbiAgICAoKiBbYW5kX10gYW5kIFtvcl9dIHVzZSBbZm9sZF9yaWdodF0gaW5zdGVhZCBvZiBbZm9sZF9sZWZ0XSB0byBhdm9pZCBxdWFkcmF0aWNcbiAgICAgICBiZWhhdmlvciB3aXRoIFthbmRhbHNvXSBvciBbb3JlbHNlXSwgcmVzcGVjdGl2ZWx5LiAqKVxuICAgIGxldCBhbmRfIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OnRydWVfIH5mOmFuZGFsc29cbiAgICBsZXQgb3JfIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OmZhbHNlXyB+ZjpvcmVsc2VcblxuICAgIGxldCB1bmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4IF0gLT4geFxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyBvbmUgYXJndW1lbnQsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCB0ZXJuYXJ5IG5hbWUgYXJncyBzZXhwID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgfCBbIHg7IHk7IHogXSAtPiB4LCB5LCB6XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBhcmdzIGluXG4gICAgICAgIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlcyBleHBlY3RzIHRocmVlIGFyZ3VtZW50cywgJWQgZm91bmRcIiBuYW1lIG4pIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEJhc2UgeCAtPiBzZXhwX29mX3ZhbHVlIHhcbiAgICAgICAgfCBUcnVlIC0+IEF0b20gXCJ0cnVlXCJcbiAgICAgICAgfCBGYWxzZSAtPiBBdG9tIFwiZmFsc2VcIlxuICAgICAgICB8IE5vdCB0IC0+IExpc3QgWyBBdG9tIFwibm90XCI7IGF1eCB0IF1cbiAgICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gTGlzdCBbIEF0b20gXCJpZlwiOyBhdXggdDE7IGF1eCB0MjsgYXV4IHQzIF1cbiAgICAgICAgfCBBbmQgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Nvbmp1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcImFuZFwiIDo6IExpc3QubWFwIH5mOmF1eCB0cylcbiAgICAgICAgfCBPciBfIGFzIHQgLT5cbiAgICAgICAgICBsZXQgdHMgPSBnYXRoZXJfZGlzanVuY3RzIHQgaW5cbiAgICAgICAgICBMaXN0IChBdG9tIFwib3JcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICBpblxuICAgICAgYXV4IHRcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBiYXNlX29mX3NleHAgc2V4cCA9XG4gICAgICBsZXQgYmFzZSBzZXhwID0gYmFzZSAoYmFzZV9vZl9zZXhwIHNleHApIGluXG4gICAgICBsZXQgcmVjIGF1eCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQXRvbSBrdyAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcInRydWVcIiAtPiB0cnVlX1xuICAgICAgICAgICB8IFwiZmFsc2VcIiAtPiBmYWxzZV9cbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBMaXN0IChBdG9tIGt3IDo6IGFyZ3MpIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5sb3dlcmNhc2Uga3cgd2l0aFxuICAgICAgICAgICB8IFwiYW5kXCIgLT4gYW5kXyAoTGlzdC5tYXAgfmY6YXV4IGFyZ3MpXG4gICAgICAgICAgIHwgXCJvclwiIC0+IG9yXyAoTGlzdC5tYXAgfmY6YXV4IGFyZ3MpXG4gICAgICAgICAgIHwgXCJub3RcIiAtPiBub3RfIChhdXggKHVuYXJ5IFwibm90XCIgYXJncyBzZXhwKSlcbiAgICAgICAgICAgfCBcImlmXCIgLT5cbiAgICAgICAgICAgICBsZXQgeCwgeSwgeiA9IHRlcm5hcnkgXCJpZlwiIGFyZ3Mgc2V4cCBpblxuICAgICAgICAgICAgIGlmXyAoYXV4IHgpIChhdXggeSkgKGF1eCB6KVxuICAgICAgICAgICB8IF8gLT4gYmFzZSBzZXhwKVxuICAgICAgICB8IF8gLT4gYmFzZSBzZXhwXG4gICAgICBpblxuICAgICAgYXV4IHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliLlNleHBfZ3JhbW1hci50ID1cbiAgICAgIGxldCBkZWZucyA6IFNleHBsaWIuU2V4cF9ncmFtbWFyLmRlZm4gbGlzdCA9XG4gICAgICAgIGxldCBibGFuZyA6IFNleHBsaWIuU2V4cF9ncmFtbWFyLmdyYW1tYXIgPSBSZWN1cnNpdmUgKFwiYmxhbmdcIiwgWyBUeXZhciBcImFcIiBdKSBpblxuICAgICAgICBbIHsgdHljb24gPSBcImJsYW5nXCJcbiAgICAgICAgICA7IHR5dmFycyA9IFsgXCJhXCIgXVxuICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyBUeXZhciBcImFcIlxuICAgICAgICAgICAgICAgIDsgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX2luc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcInRydWVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcImZhbHNlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImlmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChibGFuZywgQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm5vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKGJsYW5nLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICBmdW4gYmFzZV9ncmFtbWFyIC0+IHsgdW50eXBlZCA9IFR5Y29uIChcImJsYW5nXCIsIFsgYmFzZV9ncmFtbWFyLnVudHlwZWQgXSwgZGVmbnMpIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubGV0IGNvbnN0YW50IGIgPSBpZiBiIHRoZW4gdHJ1ZV8gZWxzZSBmYWxzZV9cblxubW9kdWxlIHR5cGUgQ29uc3RydWN0b3JzID0gc2lnXG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdHJ1ZV8gOiBfIHRcbiAgdmFsIGZhbHNlXyA6IF8gdFxuICB2YWwgY29uc3RhbnQgOiBib29sIC0+IF8gdFxuICB2YWwgbm90XyA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgaWZfIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIGxldCBub3QgPSBub3RfXG4gIGxldCBhbmRfID0gYW5kX1xuICBsZXQgb3JfID0gb3JfXG4gIGxldCBjb25zdGFudCA9IGNvbnN0YW50XG4gIGxldCAoICYmICkgPSBhbmRhbHNvXG4gIGxldCAoIHx8ICkgPSBvcmVsc2VcbiAgbGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5lbmRcblxubGV0IGNvbnN0YW50X3ZhbHVlID0gZnVuY3Rpb25cbiAgfCBUcnVlIC0+IFNvbWUgdHJ1ZVxuICB8IEZhbHNlIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbigqIFt2YWx1ZXMgdF0gbGlzdHMgdGhlIGJhc2UgcHJlZGljYXRlcyBpbiBbdF0gZnJvbSBsZWZ0IHRvIHJpZ2h0ICopXG5sZXQgdmFsdWVzIHQgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgdiA6OiB0cyAtPiBsb29wICh2IDo6IGFjYykgdHNcbiAgICB8IFRydWUgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBOb3QgdDEgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHRzKVxuICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IElmICh0MSwgdDIsIHQzKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdDMgOjogdHMpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSBbIHQgXVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgdCBwZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgQmFzZSBhIC0+IG5leHQgKGYgYWNjIGEpIHBlbmRpbmdcbiAgICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gbmV4dCBhY2MgcGVuZGluZ1xuICAgICAgICB8IE5vdCB0IC0+IGxvb3AgYWNjIHQgcGVuZGluZ1xuICAgICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IGxvb3AgYWNjIHQxICh0MiA6OiBwZW5kaW5nKVxuICAgICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBsb29wIGFjYyB0MSAodDIgOjogdDMgOjogcGVuZGluZylcbiAgICAgIGFuZCBuZXh0IGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wIGFjYyB0IHRzXG4gICAgICBpblxuICAgICAgbG9vcCBpbml0IHQgW10gW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBsZW5ndGggPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkID0gQy5mb2xkXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGlzX2VtcHR5ID0gQy5pc19lbXB0eVxubGV0IGl0ZXIgPSBDLml0ZXJcbmxldCBsZW5ndGggPSBDLmxlbmd0aFxubGV0IG1lbSA9IEMubWVtXG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgcmVjIGJpbmQgdCB+ZjprID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQmFzZSB2IC0+IGsgdlxuICB8IFRydWUgLT4gdHJ1ZV9cbiAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgfCBOb3QgdDEgLT4gbm90XyAoYmluZCB0MSB+ZjprKVxuICAoKiBVbmZvcnR1bmF0ZWx5IHdlIG5lZWQgdG8gZHVwbGljYXRlIHNvbWUgb2YgdGhlIHNob3J0LWNpcmN1aXRpbmcgZnJvbSBbYW5kYWxzb10gYW5kXG4gICAgIGZyaWVuZHMgaGVyZS4gSW4gcHJpbmNpcGxlIHdlIGNvdWxkIGRvIHNvbWV0aGluZyBpbnZvbHZpbmcgW0xhenkudF0gYnV0IHRoZVxuICAgICBvdmVyaGVhZCBwcm9iYWJseSB3b3VsZG4ndCBiZSB3b3J0aCBpdC4gKilcbiAgfCBBbmQgKHQxLCB0MikgLT5cbiAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgICAgfCBvdGhlciAtPiBhbmRhbHNvIG90aGVyIChiaW5kIHQyIH5mOmspKVxuICB8IE9yICh0MSwgdDIpIC0+XG4gICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgIHwgVHJ1ZSAtPiB0cnVlX1xuICAgICB8IG90aGVyIC0+IG9yZWxzZSBvdGhlciAoYmluZCB0MiB+ZjprKSlcbiAgfCBJZiAodDEsIHQyLCB0MykgLT5cbiAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgfCBUcnVlIC0+IGJpbmQgdDIgfmY6a1xuICAgICB8IEZhbHNlIC0+IGJpbmQgdDMgfmY6a1xuICAgICB8IG90aGVyIC0+IGlmXyBvdGhlciAoYmluZCB0MiB+ZjprKSAoYmluZCB0MyB+ZjprKSlcbjs7XG5cbigqIHNlbWFudGljcyAqKVxuXG5sZXQgcmVjIGV2YWwgdCBiYXNlX2V2YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBUcnVlIC0+IHRydWVcbiAgfCBGYWxzZSAtPiBmYWxzZVxuICB8IEFuZCAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCAmJiBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE9yICh0MSwgdDIpIC0+IGV2YWwgdDEgYmFzZV9ldmFsIHx8IGV2YWwgdDIgYmFzZV9ldmFsXG4gIHwgTm90IHQgLT4gbm90IChldmFsIHQgYmFzZV9ldmFsKVxuICB8IElmICh0MSwgdDIsIHQzKSAtPiBpZiBldmFsIHQxIGJhc2VfZXZhbCB0aGVuIGV2YWwgdDIgYmFzZV9ldmFsIGVsc2UgZXZhbCB0MyBiYXNlX2V2YWxcbiAgfCBCYXNlIHggLT4gYmFzZV9ldmFsIHhcbjs7XG5cbmxldCBzcGVjaWFsaXplIHQgZiA9XG4gIGJpbmQgdCB+ZjooZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgYEtub3duIGMgLT4gY29uc3RhbnQgY1xuICAgIHwgYFVua25vd24gLT4gYmFzZSB2KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXZhbF9zZXQgfnVuaXZlcnNlOmFsbCBzZXRfb2ZfYmFzZSB0ID1cbiAgbGV0IHJlYyBhdXggKGIgOiBfIHQpID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICB8IFRydWUgLT4gZm9yY2UgYWxsXG4gICAgfCBGYWxzZSAtPiBTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooU2V0LmNvbXBhcmF0b3IgKGZvcmNlIGFsbCkpXG4gICAgfCBBbmQgKGEsIGIpIC0+IFNldC5pbnRlciAoYXV4IGEpIChhdXggYilcbiAgICB8IE9yIChhLCBiKSAtPiBTZXQudW5pb24gKGF1eCBhKSAoYXV4IGIpXG4gICAgfCBOb3QgYSAtPiBTZXQuZGlmZiAoZm9yY2UgYWxsKSAoYXV4IGEpXG4gICAgfCBCYXNlIGEgLT4gc2V0X29mX2Jhc2UgYVxuICAgIHwgSWYgKGNvbmQsIGEsIGIpIC0+XG4gICAgICBsZXQgY29uZCA9IGF1eCBjb25kIGluXG4gICAgICBTZXQudW5pb24gKFNldC5pbnRlciBjb25kIChhdXggYSkpIChTZXQuaW50ZXIgKFNldC5kaWZmIChmb3JjZSBhbGwpIGNvbmQpIChhdXggYikpXG4gIGluXG4gIGF1eCB0IFtAbm9udGFpbF1cbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgcmV0dXJuID0gYmFzZVxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgZW5kKVxuXG5tb2R1bGUgdHlwZSBNb25hZGljID0gc2lnXG4gIG1vZHVsZSBNIDogTW9uYWQuU1xuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQgTS50KSAtPiAnYiB0IE0udFxuICB2YWwgZXZhbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBNLnQpIC0+IGJvb2wgTS50XG5lbmRcblxubW9kdWxlIEZvcl9tb25hZCAoTSA6IE1vbmFkLlMpIDogTW9uYWRpYyB3aXRoIG1vZHVsZSBNIDo9IE0gPSBzdHJ1Y3RcbiAgb3BlbiBNLk1vbmFkX2luZml4XG5cbiAgbGV0IHJlYyBiaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQmFzZSB4IC0+IGYgeFxuICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgfCBBbmQgKGEsIGIpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSAtPiBNLnJldHVybiBmYWxzZV9cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBhbmRhbHNvIGEgYilcbiAgICB8IE9yIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBvcmVsc2UgYSBiKVxuICAgIHwgTm90IGEgLT4gYmluZCBhIH5mID4+fCBub3RfXG4gICAgfCBJZiAoYSwgYiwgYykgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgRmFsc2UgLT4gYmluZCBjIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj49IGZ1biBiIC0+IGJpbmQgYyB+ZiA+PnwgZnVuIGMgLT4gaWZfIGEgYiBjKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIHggLT4gZiB4ID4+fCBiYXNlKVxuXG4gIGxldCBldmFsIHQgfmYgPVxuICAgIGJpbmQgdCB+ZjooZnVuIHggLT5cbiAgICAgIGYgeFxuICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gdHJ1ZV9cbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VfKVxuICAgID4+fCBmdW4gdCAtPiBldmFsIHQgTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gIDs7XG5lbmRcblxuKCoqIFdlIGF2b2lkIGRlcml2aW5nIHF1aWNrY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGludmFyaWFudHMgZGVzY3JpYmVkIGluIFtUXSdzIGNvbW1lbnRzXG4gICAgYWJvdmUgYXJlIHByZXNlcnZlZC4gKilcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBhX2dlbmVyYXRvciA9XG4gIFF1aWNrY2hlY2suR2VuZXJhdG9yLnJlY3Vyc2l2ZV91bmlvblxuICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOmJhc2UgYV9nZW5lcmF0b3JcbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiB0cnVlX1xuICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3Iuc2luZ2xldG9uIGZhbHNlX1xuICAgIF1cbiAgICB+ZjooZnVuIHNlbGYgLT5cbiAgICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIHNlbGYgfmY6bm90X1xuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggfHwgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggJiYgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAzIHNlbGYgc2VsZiBzZWxmIH5mOmlmX1xuICAgICAgXSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyICh0eXBlIGEpIChhX3Nocmlua2VyIDogYSBRdWlja2NoZWNrLlNocmlua2VyLnQpID1cbiAgUXVpY2tjaGVjay5TaHJpbmtlci5maXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgYmlub3Agb3BlcmF0b3IgbGVmdCByaWdodCA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBsZWZ0XG4gICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHJpZ2h0XG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGxlZnQpIH5mOihmdW4gbGVmdCAtPlxuICAgICAgICAgICAgb3BlcmF0b3IgbGVmdCByaWdodClcbiAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgcmlnaHQpIH5mOihmdW4gcmlnaHQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIF1cbiAgICBpblxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuY3JlYXRlIChmdW4gdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBCYXNlIGEgLT4gU2VxdWVuY2UubWFwIH5mOmJhc2UgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIGFfc2hyaW5rZXIgYSlcbiAgICAgIHwgT3IgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggfHwgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IEFuZCAobGVmdCwgcmlnaHQpIC0+IGJpbm9wIE8uKCAmJiApIGxlZnQgcmlnaHRcbiAgICAgIHwgTm90IHQgLT5cbiAgICAgICAgU2VxdWVuY2UuYXBwZW5kXG4gICAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiB0KVxuICAgICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6bm90XyAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0KSlcbiAgICAgIHwgSWYgKGlmXywgdGhlbl8sIGVsc2VfKSAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIGlmX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHRoZW5fXG4gICAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gZWxzZV9cbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBpZl8pIH5mOihmdW4gaWZfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0aGVuXykgfmY6KGZ1biB0aGVuXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgZWxzZV8pIH5mOihmdW4gZWxzZV8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIF0pKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgKHR5cGUgYSkgKGFfb2JzZXJ2ZXIgOiBhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCkgPVxuICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGhhc2hfZm9sZF90XG4gICAgICAoZnVuIGhhc2ggYSAtPiBRdWlja2NoZWNrLk9ic2VydmVyLm9ic2VydmUgYV9vYnNlcnZlciBhIH5zaXplIH5oYXNoKVxuICAgICAgaGFzaFxuICAgICAgdClcbjs7XG4iLCIoKiBDb252ZXJzaW9ucyBiZXR3ZWVuIHVuaXRzIG9mIG1lYXN1cmUgYmFzZWQgb24gYnl0ZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBSZXByID0gSW50NjNcbm1vZHVsZSBUID0gQnl0ZV91bml0czBcbmluY2x1ZGUgKFQgOiBtb2R1bGUgdHlwZSBvZiBUIHdpdGggbW9kdWxlIFJlcHIgOj0gUmVwcilcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggLSApIGEgYiA9IG9mX3JlcHIgKFJlcHIuKCAtICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYikpXG4gIGxldCAoICsgKSBhIGIgPSBvZl9yZXByIChSZXByLiggKyApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCAvLyApIGEgYiA9IFJlcHIuKCAvLyApICh0b19yZXByIGEpICh0b19yZXByIGIpXG5cbiAgbGV0ICggLyApIHQgcyA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgKFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdCkgLy4gcykpXG4gIGxldCAoICogKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpICouIHMpKVxuZW5kXG5cbmluY2x1ZGUgSW5maXhcblxubGV0IGFicyB0ID0gb2ZfcmVwciAoUmVwci5hYnMgKHRvX3JlcHIgdCkpXG5sZXQgbmVnIHQgPSBvZl9yZXByIChSZXByLm5lZyAodG9fcmVwciB0KSlcbmxldCBzaWduIHQgPSBSZXByLnNpZ24gKHRvX3JlcHIgdClcbmxldCB6ZXJvID0gb2ZfcmVwciBSZXByLnplcm9cbmxldCBtaW5fdmFsdWUgPSBvZl9yZXByIFJlcHIubWluX3ZhbHVlXG5sZXQgbWF4X3ZhbHVlID0gb2ZfcmVwciBSZXByLm1heF92YWx1ZVxubGV0IHNjYWxlID0gSW5maXguKCAqIClcbmxldCBpc2NhbGUgdCBzID0gb2ZfcmVwciAoUmVwci4oICogKSAodG9fcmVwciB0KSAoUmVwci5vZl9pbnQgcykpXG5sZXQgYnl0ZXNfaW50X2V4biA9IFQuYnl0ZXNfaW50X2V4blxubGV0IGJ5dGVzX2ludDYzID0gdG9fcmVwclxubGV0IGJ5dGVzX2ludDY0IHQgPSBSZXByLnRvX2ludDY0ICh0b19yZXByIHQpXG5sZXQgYnl0ZXNfZmxvYXQgdCA9IFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdClcbmxldCBvZl9ieXRlc19pbnQgYiA9IG9mX3JlcHIgKFJlcHIub2ZfaW50IGIpXG5sZXQgb2ZfYnl0ZXNfaW50NjMgPSBvZl9yZXByXG5sZXQgb2ZfYnl0ZXNfaW50NjRfZXhuIGIgPSBvZl9yZXByIChSZXByLm9mX2ludDY0X2V4biBiKVxubGV0IG9mX2J5dGVzX2Zsb2F0X2V4biBiID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCBiKVxuXG5sZXQgKGJ5dGVzIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbYnl0ZXNfaW50X2V4bl0sIFtieXRlc19pbnQ2M10sIFtieXRlc19pbnQ2NF0gb3IgXFxcbiAgICAgICAgW2J5dGVzX2Zsb2F0XSBhcyBhcHByb3ByaWF0ZS5cIl0pXG4gID1cbiAgYnl0ZXNfZmxvYXRcbjs7XG5cbmxldCAob2ZfYnl0ZXMgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc19pbnRdLCBbb2ZfYnl0ZXNfaW50NjNdLCBcXFxuICAgICAgICBbb2ZfYnl0ZXNfaW50NjRfZXhuXSBvciBbb2ZfYnl0ZXNfZmxvYXRfZXhuXSBhcyBhcHByb3ByaWF0ZS5cIl0pXG4gID1cbiAgb2ZfYnl0ZXNfZmxvYXRfZXhuXG47O1xuXG5sZXQga2lsb2J5dGUgOiB0ID0gb2ZfYnl0ZXNfaW50IDEwMjRcbmxldCBtZWdhYnl0ZSA9IGlzY2FsZSBraWxvYnl0ZSAxMDI0XG5sZXQgZ2lnYWJ5dGUgPSBpc2NhbGUgbWVnYWJ5dGUgMTAyNFxubGV0IHRlcmFieXRlID0gaXNjYWxlIGdpZ2FieXRlIDEwMjRcbmxldCBwZXRhYnl0ZSA9IGlzY2FsZSB0ZXJhYnl0ZSAxMDI0XG5sZXQgZXhhYnl0ZSA9IGlzY2FsZSBwZXRhYnl0ZSAxMDI0XG5cbmxldCB3b3JkID1cbiAgbGV0IG1vZHVsZSBXID0gV29yZF9zaXplIGluXG4gIG1hdGNoIFcud29yZF9zaXplIHdpdGhcbiAgfCBXLlczMiAtPiBvZl9ieXRlc19pbnQgNFxuICB8IFcuVzY0IC0+IG9mX2J5dGVzX2ludCA4XG47O1xuXG5sZXQga2lsb2J5dGVzIHQgOiBmbG9hdCA9IEluZml4LiggLy8gKSB0IGtpbG9ieXRlXG5sZXQgbWVnYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBtZWdhYnl0ZVxubGV0IGdpZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZ2lnYWJ5dGVcbmxldCB0ZXJhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IHRlcmFieXRlXG5sZXQgcGV0YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBwZXRhYnl0ZVxubGV0IGV4YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBleGFieXRlXG5sZXQgd29yZHNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuIChSZXByLiggLyApICh0b19yZXByIHQpICh0b19yZXByIHdvcmQpKVxubGV0IHdvcmRzX2Zsb2F0IHQgPSBJbmZpeC4oIC8vICkgdCB3b3JkXG5sZXQgb2Zfa2lsb2J5dGVzIHQgOiB0ID0gSW5maXguKCAqICkga2lsb2J5dGUgdFxubGV0IG9mX21lZ2FieXRlcyB0ID0gSW5maXguKCAqICkgbWVnYWJ5dGUgdFxubGV0IG9mX2dpZ2FieXRlcyB0ID0gSW5maXguKCAqICkgZ2lnYWJ5dGUgdFxubGV0IG9mX3RlcmFieXRlcyB0ID0gSW5maXguKCAqICkgdGVyYWJ5dGUgdFxubGV0IG9mX3BldGFieXRlcyB0ID0gSW5maXguKCAqICkgcGV0YWJ5dGUgdFxubGV0IG9mX2V4YWJ5dGVzIHQgPSBJbmZpeC4oICogKSBleGFieXRlIHRcbmxldCBvZl93b3Jkc19pbnQgdCA9IGlzY2FsZSB3b3JkIHRcbmxldCBvZl93b3Jkc19mbG9hdF9leG4gdCA9IEluZml4LiggKiApIHdvcmQgdFxuXG5sZXQgKHdvcmRzIFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW3dvcmRzX2ludF9leG5dIG9yIFt3b3Jkc19mbG9hdF1cIl0pID1cbiAgd29yZHNfZmxvYXRcbjs7XG5cbmxldCAob2Zfd29yZHMgW0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2Zfd29yZHNfaW50XSBvciBbb2Zfd29yZHNfZmxvYXRfZXhuXVwiXSkgPVxuICBvZl93b3Jkc19mbG9hdF9leG5cbjs7XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgSW50LiggPCApIGxlbmd0aCAyXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSB0b28gc2hvcnRcIiBzICgpO1xuICBsZXQgYmFzZV9zdHIgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KEludC4oIC0gKSBsZW5ndGggMSkgaW5cbiAgbGV0IGV4dF9jaGFyID0gQ2hhci5sb3dlcmNhc2Ugcy5bSW50LiggLSApIGxlbmd0aCAxXSBpblxuICBsZXQgYmFzZSA9XG4gICAgdHJ5IEZsb2F0Lm9mX3N0cmluZyBiYXNlX3N0ciB3aXRoXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtICVzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gZmxvYXQgXCJcbiAgICAgICAgc1xuICAgICAgICBiYXNlX3N0clxuICAgICAgICAoKVxuICBpblxuICBtYXRjaCBleHRfY2hhciB3aXRoXG4gIHwgJ2InIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biBiYXNlXG4gIHwgJ2snIC0+IG9mX2tpbG9ieXRlcyBiYXNlXG4gIHwgJ20nIC0+IG9mX21lZ2FieXRlcyBiYXNlXG4gIHwgJ2cnIC0+IG9mX2dpZ2FieXRlcyBiYXNlXG4gIHwgJ3QnIC0+IG9mX3RlcmFieXRlcyBiYXNlXG4gIHwgJ3AnIC0+IG9mX3BldGFieXRlcyBiYXNlXG4gIHwgJ2UnIC0+IG9mX2V4YWJ5dGVzIGJhc2VcbiAgfCAndycgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIGJhc2VcbiAgfCBleHQgLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtIGlsbGVnYWwgZXh0ZW5zaW9uICVjXCIgcyBleHQgKClcbjs7XG5cbmxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIG9mX3N0cmluZ1xuXG5sZXQgbGFyZ2VzdF9tZWFzdXJlIHQgPVxuICBsZXQgdF9hYnMgPSBvZl9yZXByIChSZXByLmFicyAodG9fcmVwciB0KSkgaW5cbiAgaWYgdF9hYnMgPj0gZXhhYnl0ZVxuICB0aGVuIGBFeGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHBldGFieXRlXG4gIHRoZW4gYFBldGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHRlcmFieXRlXG4gIHRoZW4gYFRlcmFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGdpZ2FieXRlXG4gIHRoZW4gYEdpZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IG1lZ2FieXRlXG4gIHRoZW4gYE1lZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGtpbG9ieXRlXG4gIHRoZW4gYEtpbG9ieXRlc1xuICBlbHNlIGBCeXRlc1xuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAoKiBTaGFyZSB0aGUgY29tbW9uIFtvZl9zZXhwXSBjb2RlIGZvciBbVjFdIGFuZCBbVjJdLiAqKVxuICBtb2R1bGUgT2Zfc2V4cF92MV92MiA6IHNpZ1xuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fbWF0Y2ggKCkgPSBmYWlsd2l0aCBcIk5vdCBhIHJlY29nbml6ZWQgW0J5dGVfdW5pdHMudF0gcmVwcmVzZW50YXRpb25cIlxuXG4gICAgbGV0IG9mX3ZhbHVlX3NleHBfYW5kX3VuaXRfbmFtZSB2YWxfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiQnl0ZXNcIiAtPlxuICAgICAgICAodHJ5IG9mX2J5dGVzX2ludDYzIChJbnQ2My50X29mX3NleHAgdmFsX3NleHApIHdpdGhcbiAgICAgICAgIHwgXyAtPiBvZl9ieXRlc19mbG9hdF9leG4gKEZsb2F0LnRfb2Zfc2V4cCB2YWxfc2V4cCkpXG4gICAgICB8IFwiS2lsb2J5dGVzXCIgLT4gb2Zfa2lsb2J5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIk1lZ2FieXRlc1wiIC0+IG9mX21lZ2FieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJHaWdhYnl0ZXNcIiAtPiBvZl9naWdhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiVGVyYWJ5dGVzXCIgLT4gb2ZfdGVyYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIlBldGFieXRlc1wiIC0+IG9mX3BldGFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJFeGFieXRlc1wiIC0+IG9mX2V4YWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIldvcmRzXCIgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBfIC0+IG5vX21hdGNoICgpXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gc3RyIC0+IG9mX3N0cmluZyBzdHJcbiAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIHVuaXRfbmFtZTsgdmFsdWUgXSAtPlxuICAgICAgICBvZl92YWx1ZV9zZXhwX2FuZF91bml0X25hbWUgdmFsdWUgdW5pdF9uYW1lXG4gICAgICB8IF8gLT4gbm9fbWF0Y2ggKClcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIHRyeSB0X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGV4biAtPiByYWlzZSAoU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHNleHApKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2Zsb2F0XG4gICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19mbG9hdF9leG5cblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBzdGFibGVfd2l0bmVzc19mbG9hdCBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgKCogVjEgb25seSBnb2VzIHVwIHRvIGdpZ2FieXRlcyAqKVxuICAgICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgICAgfCBgQnl0ZXMgLT4gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfZmxvYXQgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEtpbG9ieXRlcyAtPiBbJXNleHAgYEtpbG9ieXRlcyAoa2lsb2J5dGVzIHQgOiBmbG9hdCldXG4gICAgICB8IGBNZWdhYnl0ZXMgLT4gWyVzZXhwIGBNZWdhYnl0ZXMgKG1lZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgR2lnYWJ5dGVzIHwgYFRlcmFieXRlcyB8IGBQZXRhYnl0ZXMgfCBgRXhhYnl0ZXMgLT5cbiAgICAgICAgWyVzZXhwIGBHaWdhYnl0ZXMgKGdpZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubG93ZXJjYXNlICh0b19zdHJpbmcgdClcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5cbiAgICAoKiBUaGlzIHRlc3QgZG9jdW1lbnRzIHRoZSBvcmlnaW5hbCB0by1zdHJpbmcgcmVwcmVzZW50YXRpb24gYW5kIGZhaWxzIHVuZGVyIGphdmFzY3JpcHRcbiAgICAgICBkdWUgdG8gZGlmZmVyZW5jZXMgaW4gdGhlIHJvdW5kaW5nLiAqKVxuICAgIGxldCVleHBlY3RfdGVzdCAoXyBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDAwYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMjNiIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMWsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjAwMDk4ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxNTAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDEuNDY0ODRrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNzY1NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ny42NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDk3Ni41NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNTM2NzRtIHx9XVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2ludDYzXG4gICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19pbnQ2M1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDYzLlN0YWJsZS5WMSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfaW50NjMgdCA6IEludDYzLnQpXVxuICBlbmRcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IFQudG9fc3RyaW5nXG5cbm1vZHVsZSBTaG9ydCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0b19zdHJpbmcgdCA9XG4gICAgbGV0IHRvX3VuaXRzX3N0ciB0b191bml0IGV4dCA9XG4gICAgICBsZXQgZiA9IHRvX3VuaXQgdCBpblxuICAgICAgbGV0IGZfYWJzID0gRmxvYXQuYWJzIGYgaW5cbiAgICAgIGlmIEZsb2F0LlJvYnVzdGx5X2NvbXBhcmFibGUuKCA+PS4gKSBmX2FicyAxMDAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjBmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBpZiBGbG9hdC5Sb2J1c3RseV9jb21wYXJhYmxlLiggPj0uICkgZl9hYnMgMTAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjFmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJS4yZiVjXCIgZiBleHRcbiAgICBpblxuICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICB8IGBCeXRlcyAtPiBzcHJpbnRmIFwiJWRCXCIgKGJ5dGVzX2ludF9leG4gdClcbiAgICB8IGBLaWxvYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGtpbG9ieXRlcyAnSydcbiAgICB8IGBNZWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIG1lZ2FieXRlcyAnTSdcbiAgICB8IGBHaWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGdpZ2FieXRlcyAnRydcbiAgICB8IGBUZXJhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHRlcmFieXRlcyAnVCdcbiAgICB8IGBQZXRhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHBldGFieXRlcyAnUCdcbiAgICB8IGBFeGFieXRlcyAtPiB0b191bml0c19zdHIgZXhhYnl0ZXMgJ0UnXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgWyVleHBlY3Qge3wgMTAwMEIgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjMpO1xuICAgIFslZXhwZWN0IHt8IDEwMjNCIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICBbJWV4cGVjdCB7fCAxLjAwSyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgWyVleHBlY3Qge3wgMS4wMEsgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ljc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ny43SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOTc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDkuNTRNIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkuMzFHIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTAuOVQgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfZmxvYXRfZXhuIDEwMDAwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDg4LjhQIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAzMDAwMDAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgMi42MEUgfH1dO1xuICAgICgpXG4gIDs7XG5lbmRcblxubGV0IHRvX3N0cmluZ19zaG9ydCA9IFNob3J0LnRvX3N0cmluZ1xuXG5sZXQgKGNyZWF0ZSBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX2J5dGVzXSwgW29mX2tpbG9ieXRlc10sIFtvZl9tZWdhYnl0ZXNdLCBldGMgYXMgXFxcbiAgICAgICAgYXBwcm9wcmlhdGUuXCJdKVxuICA9XG4gIGZ1biB1bml0cyB2YWx1ZSAtPlxuICBtYXRjaCB1bml0cyB3aXRoXG4gIHwgYEJ5dGVzIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biB2YWx1ZVxuICB8IGBLaWxvYnl0ZXMgLT4gb2Zfa2lsb2J5dGVzIHZhbHVlXG4gIHwgYE1lZ2FieXRlcyAtPiBvZl9tZWdhYnl0ZXMgdmFsdWVcbiAgfCBgR2lnYWJ5dGVzIC0+IG9mX2dpZ2FieXRlcyB2YWx1ZVxuICB8IGBXb3JkcyAtPiBvZl93b3Jkc19mbG9hdF9leG4gdmFsdWVcbjs7XG5cbmluY2x1ZGVcbiAgUXVpY2tjaGVja2FibGUuT2ZfcXVpY2tjaGVja2FibGVcbiAgICAoUmVwcilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgb2ZfcXVpY2tjaGVja2FibGUgPSBvZl9yZXByXG4gICAgICBsZXQgdG9fcXVpY2tjaGVja2FibGUgPSB0b19yZXByXG4gICAgZW5kKVxuIiwiKCoqIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHBvbHltb3JwaGljIGZ1bmN0aW9uYWwgZG91YmxlLWVuZGVkIHF1ZXVlLiAqKVxuXG4oKiogSW52YXJpYW50czpcbiAgICAtIHF1ZXVlLmxlbmd0aCA9IExpc3QubGVuZ3RoIHF1ZXVlLmZyb250ICsgTGlzdC5sZW5ndGggcXVldWUuYmFja1xuICAgIC0gaWYgcXVldWUgaGFzID49IDIgZWxlbWVudHMsIG5laXRoZXIgZnJvbnQgbm9yIGJhY2sgYXJlIGVtcHR5XG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmV4Y2VwdGlvbiBFbXB0eSBbQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlICdhIHQgPVxuICB7IGZyb250IDogJ2EgbGlzdFxuICA7IGJhY2sgOiAnYSBsaXN0XG4gIDsgbGVuZ3RoIDogaW50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgZiB0ID1cbiAgbGV0IG5fZnJvbnQgPSBMaXN0Lmxlbmd0aCB0LmZyb250IGluXG4gIGxldCBuX2JhY2sgPSBMaXN0Lmxlbmd0aCB0LmJhY2sgaW5cbiAgYXNzZXJ0ICh0Lmxlbmd0aCA9IG5fZnJvbnQgKyBuX2JhY2spO1xuICBhc3NlcnQgKHQubGVuZ3RoIDwgMiB8fCAobl9mcm9udCA8PiAwICYmIG5fYmFjayA8PiAwKSk7XG4gIExpc3QuaXRlciB0LmZyb250IH5mO1xuICBMaXN0Lml0ZXIgdC5iYWNrIH5mXG47O1xuXG5sZXQgbWFrZSB+bGVuZ3RoIH5mcm9udCB+YmFjayA9XG4gIG1hdGNoIGZyb250LCBiYWNrIHdpdGhcbiAgfCBbXSwgW10gfCBbIF8gXSwgW10gfCBbXSwgWyBfIF0gfCBfIDo6IF8sIF8gOjogXyAtPiB7IGZyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IFtdLCBfIDo6IF8gOjogXyAtPlxuICAgIGxldCBiYWNrLCByZXZfZnJvbnQgPSBMaXN0LnNwbGl0X24gYmFjayAobGVuZ3RoIC8gMikgaW5cbiAgICB7IGZyb250ID0gTGlzdC5yZXYgcmV2X2Zyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IF8gOjogXyA6OiBfLCBbXSAtPlxuICAgIGxldCBmcm9udCwgcmV2X2JhY2sgPSBMaXN0LnNwbGl0X24gZnJvbnQgKGxlbmd0aCAvIDIpIGluXG4gICAgeyBmcm9udDsgYmFjayA9IExpc3QucmV2IHJldl9iYWNrOyBsZW5ndGggfVxuOztcblxubGV0IGVtcHR5ID0geyBmcm9udCA9IFtdOyBiYWNrID0gW107IGxlbmd0aCA9IDAgfVxubGV0IGVucXVldWVfZnJvbnQgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5mcm9udDooeCA6OiB0LmZyb250KSB+YmFjazp0LmJhY2tcbmxldCBlbnF1ZXVlX2JhY2sgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5iYWNrOih4IDo6IHQuYmFjaykgfmZyb250OnQuZnJvbnRcblxubGV0W0Bjb2xkXSByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8ZnJvbnR8ID0gMCwgfGJhY2t8ID49IDJcIl1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8YmFja3wgPSAwLCB8ZnJvbnR8ID49IDJcIl1cbjs7XG5cbmxldCBwZWVrX2Zyb250X2V4biB0ID1cbiAgbWF0Y2ggdC5mcm9udCB3aXRoXG4gIHwgeCA6OiBfIC0+IHhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyB4IF0gLT4geFxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBwZWVrX2JhY2tfZXhuIHQgPVxuICBtYXRjaCB0LmJhY2sgd2l0aFxuICB8IHggOjogXyAtPiB4XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5mcm9udCB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIHggXSAtPiB4XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9mcm9udF9leG4gdCA9XG4gIG1hdGNoIHQuZnJvbnQgd2l0aFxuICB8IF8gOjogeHMgLT4gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCAtIDEpIH5mcm9udDp4cyB+YmFjazp0LmJhY2tcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9iYWNrX2V4biB0ID1cbiAgbWF0Y2ggdC5iYWNrIHdpdGhcbiAgfCBfIDo6IHhzIC0+IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggLSAxKSB+YmFjazp4cyB+ZnJvbnQ6dC5mcm9udFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuZnJvbnQgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9iYWNrX2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID0gcGVla19mcm9udF9leG4gdCwgZHJvcF9mcm9udF9leG4gdFxubGV0IGRlcXVldWVfYmFja19leG4gdCA9IHBlZWtfYmFja19leG4gdCwgZHJvcF9iYWNrX2V4biB0XG5cbmxldCBvcHRpb25hbCBmIHQgPVxuICBtYXRjaCBmIHQgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIEVtcHR5IC0+IE5vbmVcbjs7XG5cbmxldCBwZWVrX2Zyb250IHQgPSBvcHRpb25hbCBwZWVrX2Zyb250X2V4biB0XG5sZXQgcGVla19iYWNrIHQgPSBvcHRpb25hbCBwZWVrX2JhY2tfZXhuIHRcbmxldCBkcm9wX2Zyb250IHQgPSBvcHRpb25hbCBkcm9wX2Zyb250X2V4biB0XG5sZXQgZHJvcF9iYWNrIHQgPSBvcHRpb25hbCBkcm9wX2JhY2tfZXhuIHRcbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBvcHRpb25hbCBkZXF1ZXVlX2Zyb250X2V4biB0XG5sZXQgZGVxdWV1ZV9iYWNrIHQgPSBvcHRpb25hbCBkZXF1ZXVlX2JhY2tfZXhuIHRcblxubGV0IGVucXVldWUgdCBzaWRlIHggPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZW5xdWV1ZV9mcm9udCB0IHhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB4XG47O1xuXG5sZXQgcGVlayB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbjs7XG5cbmxldCBwZWVrX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IHBlZWtfYmFja19leG4gdFxuOztcblxubGV0IGRyb3AgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkZXF1ZXVlIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2sgdFxuOztcblxubGV0IGRlcXVldWVfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgcmV2IHQgPSB7IHQgd2l0aCBmcm9udCA9IHQuYmFjazsgYmFjayA9IHQuZnJvbnQgfVxuXG5tb2R1bGUgQXJiaXRyYXJ5X29yZGVyID0gc3RydWN0XG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2X2FwcGVuZCB0LmZyb250IHQuYmFja1xuICBsZXQgdG9fYXJyYXkgdCA9IEFycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdClcbiAgbGV0IHRvX3NlcXVlbmNlIHQgPSBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5mcm9udCkgKFNlcXVlbmNlLm9mX2xpc3QgdC5iYWNrKVxuXG4gIGxldCBzdW0gKHR5cGUgYSkgKG1vZHVsZSBNIDogQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gICAgbGV0IG9wZW4gTSBpblxuICAgIExpc3Quc3VtIChtb2R1bGUgTSkgdC5mcm9udCB+ZiArIExpc3Quc3VtIChtb2R1bGUgTSkgdC5iYWNrIH5mXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPSBMaXN0LmNvdW50IHQuZnJvbnQgfmYgKyBMaXN0LmNvdW50IHQuYmFjayB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIHQuZnJvbnQgfmYgJiYgTGlzdC5mb3JfYWxsIHQuYmFjayB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyB0LmZyb250IH5mIHx8IExpc3QuZXhpc3RzIHQuYmFjayB+ZlxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgdC5mcm9udCB4IHx8IExpc3QubWVtIH5lcXVhbCB0LmJhY2sgeFxuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIExpc3QuaXRlciB0LmZyb250IH5mO1xuICAgIExpc3QuaXRlciB0LmJhY2sgfmZcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAoTGlzdC5mb2xkIHQuZnJvbnQgfmluaXQgfmYgfD4gZnVuIGluaXQgLT4gTGlzdC5mb2xkIHQuYmFjayB+aW5pdCB+ZikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kIHQuZnJvbnQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LmZpbmQgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kX21hcCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kX21hcCB0LmJhY2sgfmZcbiAgICB8IHNvbWUgLT4gc29tZVxuICA7O1xuXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWF4X2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1heF9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA+PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9XG4gICAgbWF0Y2ggTGlzdC5taW5fZWx0IHQuZnJvbnQgfmNvbXBhcmUsIExpc3QubWluX2VsdCB0LmJhY2sgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSwgb3B0IHwgb3B0LCBOb25lIC0+IG9wdFxuICAgIHwgKFNvbWUgeCBhcyBzb21lX3gpLCAoU29tZSB5IGFzIHNvbWVfeSkgLT5cbiAgICAgIGlmIGNvbXBhcmUgeCB5IDw9IDAgdGhlbiBzb21lX3ggZWxzZSBzb21lX3lcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9jb250YWluZXIgKEYgOiBzaWdcbiAgICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdG9fbGlzdCA9IEYudG9fbGlzdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCAodG9fbGlzdCB0KSB4XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAodG9fbGlzdCB0KSB+aW5pdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsICh0b19saXN0IHQpIH5mXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IExpc3Quc3VtIG0gKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IExpc3QuZmluZF9tYXAgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHRvX2FycmF5IHQgPSBMaXN0LnRvX2FycmF5ICh0b19saXN0IHQpXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1pbl9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IExpc3QubWF4X2VsdCAodG9fbGlzdCB0KSB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuZW5kXG5cbm1vZHVsZSBGcm9udF90b19iYWNrID0gc3RydWN0XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5mcm9udDpsaXN0IH5iYWNrOltdXG4gIGxldCB0b19saXN0IHQgPSB0LmZyb250IEAgTGlzdC5yZXYgdC5iYWNrXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmZyb250KSAoU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgdC5iYWNrKSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGJhY2sgPVxuICAgICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDooMCwgW10pIH5mOihmdW4gKGxlbmd0aCwgYWNjKSBhIC0+XG4gICAgICAgIGxlbmd0aCArIDEsIGEgOjogYWNjKVxuICAgIGluXG4gICAgbWFrZSB+bGVuZ3RoIH5mcm9udDpbXSB+YmFja1xuICA7O1xuXG4gIGluY2x1ZGUgTWFrZV9jb250YWluZXIgKHN0cnVjdFxuICAgICAgbGV0IHRvX2xpc3QgPSB0b19saXN0XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBCYWNrX3RvX2Zyb250ID0gc3RydWN0XG4gIGxldCB0b19saXN0IHQgPSB0LmJhY2sgQCBMaXN0LnJldiB0LmZyb250XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5iYWNrOmxpc3QgfmZyb250OltdXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmJhY2spIChTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiB0LmZyb250KSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGZyb250ID1cbiAgICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6KDAsIFtdKSB+ZjooZnVuIChsZW5ndGgsIGFjYykgYSAtPlxuICAgICAgICBsZW5ndGggKyAxLCBhIDo6IGFjYylcbiAgICBpblxuICAgIG1ha2Ugfmxlbmd0aCB+ZnJvbnQgfmJhY2s6W11cbiAgOztcblxuICBpbmNsdWRlIE1ha2VfY29udGFpbmVyIChzdHJ1Y3RcbiAgICAgIGxldCB0b19saXN0ID0gdG9fbGlzdFxuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlIEZyb250X3RvX2JhY2tcblxubGV0IHNpbmdsZXRvbiB4ID0gb2ZfbGlzdCBbIHggXVxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgZWx0IC0+IGZvbGQgKGYgZWx0KSB+aW5pdDp0IH5mOmVucXVldWVfYmFjaylcbiAgICA7O1xuXG4gICAgbGV0IHJldHVybiA9IHNpbmdsZXRvblxuXG4gICAgbGV0IG1hcCA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICB7IGZyb250ID0gTGlzdC5tYXAgdC5mcm9udCB+ZjsgYmFjayA9IExpc3QubWFwIHQuYmFjayB+ZjsgbGVuZ3RoID0gdC5sZW5ndGggfSlcbiAgICA7O1xuICBlbmQpXG5cbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9IExpc3QuY29tcGFyZSBjbXAgKHRvX2xpc3QgdDEpICh0b19saXN0IHQyKVxubGV0IGVxdWFsIGVxIHQxIHQyID0gTGlzdC5lcXVhbCBlcSAodG9fbGlzdCB0MSkgKHRvX2xpc3QgdDIpXG5cbmxldCBoYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfYSBzdGF0ZSB0ID1cbiAgZm9sZCB+ZjpoYXNoX2ZvbGRfYSB+aW5pdDooWyVoYXNoX2ZvbGQ6IGludF0gc3RhdGUgKGxlbmd0aCB0KSkgdFxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gWyVzZXhwX29mOiBlbHQgbGlzdF0gKHRvX2xpc3QgdClcbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChbJW9mX3NleHA6IGVsdCBsaXN0XSBzZXhwKVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IExpc3QudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgbWFwID0gbWFwXG5cbiAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODNmOTY5ODItNDk5Mi0xMWU2LTkxOWQtZmJkZGNmZGNhNTc2XCJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5GZGVxdWVcIlxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcblxuICAgICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgbmV4dCBhY2MgbiA9XG4gICAgICAgICAgICBpZiBsZW4gPSBuXG4gICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGFzc2VydCAobiA9IGxlbmd0aCBhY2MpO1xuICAgICAgICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgICAgICAgbG9vcCBuZXh0IChlbnF1ZXVlX2JhY2sgYWNjIHgpIChuICsgMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIG5leHQgZW1wdHkgMFxuICAgICAgICA7O1xuICAgICAgZW5kKVxuXG4gICAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBwcm9kdWNlZCBieSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIGlzXG4gICAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSAnYSBpcyBzdGFibGUpLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJ1aWxkIH5mcm9udCB+YmFjayA9XG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGZyb250ICsgTGlzdC5sZW5ndGggYmFjayBpblxuICAgIGxldCB0ID0geyBsZW5ndGg7IGZyb250OyBiYWNrIH0gaW5cbiAgICBpbnZhcmlhbnQgaWdub3JlIHQ7XG4gICAgdFxuICA7O1xuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RyaW5nLlN0YWJsZS5WMSA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLlN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuXG4gICAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuUyB3aXRoIHR5cGUga2V5IDo9IHRcbiAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgRmlsZW5hbWVfYmFzZVxuXG5pbmNsdWRlIChcbiAgU3RyaW5nIDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBGZGVxdWVcblxubGV0IGVucXVldWUgPSBlbnF1ZXVlX2JhY2tcbmxldCBwZWVrX2V4biA9IHBlZWtfZnJvbnRfZXhuXG5sZXQgcGVlayA9IHBlZWtfZnJvbnRcbmxldCBkZXF1ZXVlX2V4biA9IGRlcXVldWVfZnJvbnRfZXhuXG5sZXQgZGVxdWV1ZSA9IGRlcXVldWVfZnJvbnRcbmxldCBkcm9wX2V4biA9IGRyb3BfZnJvbnRfZXhuXG5sZXQgdG9fc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLnRvX3NlcXVlbmNlXG5sZXQgb2Zfc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLm9mX3NlcXVlbmNlXG5cbigqIERlcHJlY2F0ZWQgYWxpYXNlcyAqKVxubGV0IHRvcCA9IHBlZWtcbmxldCB0b3BfZXhuID0gcGVla19leG5cbmxldCBkaXNjYXJkX2V4biA9IGRyb3BfZXhuXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgTmV4dF9maXRcbiAgICAgICAgfCBGaXJzdF9maXRcbiAgICAgICAgfCBCZXN0X2ZpdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnRyb2wgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5jb250cm9sID1cbiAgICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICAgIHsgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IHZlcmJvc2UgOiBpbnRcbiAgICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBzdGFja19saW1pdCA6IGludFxuICAgICAgICA7IGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGRsaWIuR2NcblxubW9kdWxlIFN0YXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgYmluX2lvLCBzZXhwLCBmaWVsZHNdXG5cbiAgICBbJSVlbHNlXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZiwgZmllbGRzXVxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICBsZXQgY29tYmluZSBmaXJzdCBzZWNvbmQgfmZsb2F0X2YgfmludF9mID1cbiAgICB7IG1pbm9yX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5taW5vcl93b3JkcyBzZWNvbmQubWlub3Jfd29yZHNcbiAgICA7IHByb21vdGVkX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5wcm9tb3RlZF93b3JkcyBzZWNvbmQucHJvbW90ZWRfd29yZHNcbiAgICA7IG1ham9yX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5tYWpvcl93b3JkcyBzZWNvbmQubWFqb3Jfd29yZHNcbiAgICA7IG1pbm9yX2NvbGxlY3Rpb25zID0gaW50X2YgZmlyc3QubWlub3JfY29sbGVjdGlvbnMgc2Vjb25kLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1ham9yX2NvbGxlY3Rpb25zIHNlY29uZC5tYWpvcl9jb2xsZWN0aW9uc1xuICAgIDsgaGVhcF93b3JkcyA9IGludF9mIGZpcnN0LmhlYXBfd29yZHMgc2Vjb25kLmhlYXBfd29yZHNcbiAgICA7IGhlYXBfY2h1bmtzID0gaW50X2YgZmlyc3QuaGVhcF9jaHVua3Mgc2Vjb25kLmhlYXBfY2h1bmtzXG4gICAgOyBsaXZlX3dvcmRzID0gaW50X2YgZmlyc3QubGl2ZV93b3JkcyBzZWNvbmQubGl2ZV93b3Jkc1xuICAgIDsgbGl2ZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5saXZlX2Jsb2NrcyBzZWNvbmQubGl2ZV9ibG9ja3NcbiAgICA7IGZyZWVfd29yZHMgPSBpbnRfZiBmaXJzdC5mcmVlX3dvcmRzIHNlY29uZC5mcmVlX3dvcmRzXG4gICAgOyBmcmVlX2Jsb2NrcyA9IGludF9mIGZpcnN0LmZyZWVfYmxvY2tzIHNlY29uZC5mcmVlX2Jsb2Nrc1xuICAgIDsgbGFyZ2VzdF9mcmVlID0gaW50X2YgZmlyc3QubGFyZ2VzdF9mcmVlIHNlY29uZC5sYXJnZXN0X2ZyZWVcbiAgICA7IGZyYWdtZW50cyA9IGludF9mIGZpcnN0LmZyYWdtZW50cyBzZWNvbmQuZnJhZ21lbnRzXG4gICAgOyBjb21wYWN0aW9ucyA9IGludF9mIGZpcnN0LmNvbXBhY3Rpb25zIHNlY29uZC5jb21wYWN0aW9uc1xuICAgIDsgdG9wX2hlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC50b3BfaGVhcF93b3JkcyBzZWNvbmQudG9wX2hlYXBfd29yZHNcbiAgICA7IHN0YWNrX3NpemUgPSBpbnRfZiBmaXJzdC5zdGFja19zaXplIHNlY29uZC5zdGFja19zaXplXG4gICAgfVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IGNvbWJpbmUgZmlyc3Qgc2Vjb25kIH5mbG9hdF9mIH5pbnRfZiA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWlub3Jfd29yZHMgc2Vjb25kLm1pbm9yX3dvcmRzXG4gICAgOyBwcm9tb3RlZF93b3JkcyA9IGZsb2F0X2YgZmlyc3QucHJvbW90ZWRfd29yZHMgc2Vjb25kLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWFqb3Jfd29yZHMgc2Vjb25kLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1pbm9yX2NvbGxlY3Rpb25zIHNlY29uZC5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5tYWpvcl9jb2xsZWN0aW9ucyBzZWNvbmQubWFqb3JfY29sbGVjdGlvbnNcbiAgICA7IGhlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC5oZWFwX3dvcmRzIHNlY29uZC5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGludF9mIGZpcnN0LmhlYXBfY2h1bmtzIHNlY29uZC5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGludF9mIGZpcnN0LmxpdmVfd29yZHMgc2Vjb25kLmxpdmVfd29yZHNcbiAgICA7IGxpdmVfYmxvY2tzID0gaW50X2YgZmlyc3QubGl2ZV9ibG9ja3Mgc2Vjb25kLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gaW50X2YgZmlyc3QuZnJlZV93b3JkcyBzZWNvbmQuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5mcmVlX2Jsb2NrcyBzZWNvbmQuZnJlZV9ibG9ja3NcbiAgICA7IGxhcmdlc3RfZnJlZSA9IGludF9mIGZpcnN0Lmxhcmdlc3RfZnJlZSBzZWNvbmQubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBpbnRfZiBmaXJzdC5mcmFnbWVudHMgc2Vjb25kLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBpbnRfZiBmaXJzdC5jb21wYWN0aW9ucyBzZWNvbmQuY29tcGFjdGlvbnNcbiAgICA7IHRvcF9oZWFwX3dvcmRzID0gaW50X2YgZmlyc3QudG9wX2hlYXBfd29yZHMgc2Vjb25kLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gaW50X2YgZmlyc3Quc3RhY2tfc2l6ZSBzZWNvbmQuc3RhY2tfc2l6ZVxuICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgaW50X2YgZmlyc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIHNlY29uZC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNcbiAgICB9XG4gIDs7XG5cbiAgWyUlZW5kaWZdXG5cbiAgbGV0IGFkZCA9IGNvbWJpbmUgfmZsb2F0X2Y6RmxvYXQuKCArICkgfmludF9mOkludC4oICsgKVxuICBsZXQgZGlmZiA9IGNvbWJpbmUgfmZsb2F0X2Y6RmxvYXQuKCAtICkgfmludF9mOkludC4oIC0gKVxuZW5kXG5cbm1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICB7IG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgOyBtdXRhYmxlIHZlcmJvc2UgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBzdGFja19saW1pdCA6IGludFxuICAgICAgOyBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgZmllbGRzXVxuICBlbmRcblxuICBbJSVlbHNlXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgdmVyYm9zZSA6IGludFxuICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBmaWVsZHNdXG4gIGVuZFxuXG4gIFslJWVuZGlmXVxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbmVuZFxuXG5tb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkFsbG9jYXRpb25fcG9saWN5LlYxLnQgPVxuICAgIHwgTmV4dF9maXRcbiAgICB8IEZpcnN0X2ZpdFxuICAgIHwgQmVzdF9maXRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBfb2ZdXG5cbiAgbGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gICAgfCBOZXh0X2ZpdCAtPiAwXG4gICAgfCBGaXJzdF9maXQgLT4gMVxuICAgIHwgQmVzdF9maXQgLT4gMlxuICA7O1xuZW5kXG5cbmxldCB0dW5lXG4gICAgICA/bG9nZ2VyXG4gICAgICA/bWlub3JfaGVhcF9zaXplXG4gICAgICA/bWFqb3JfaGVhcF9pbmNyZW1lbnRcbiAgICAgID9zcGFjZV9vdmVyaGVhZFxuICAgICAgP3ZlcmJvc2VcbiAgICAgID9tYXhfb3ZlcmhlYWRcbiAgICAgID9zdGFja19saW1pdFxuICAgICAgP2FsbG9jYXRpb25fcG9saWN5XG4gICAgICA/d2luZG93X3NpemVcbiAgICAgID9jdXN0b21fbWFqb3JfcmF0aW9cbiAgICAgID9jdXN0b21fbWlub3JfcmF0aW9cbiAgICAgID9jdXN0b21fbWlub3JfbWF4X3NpemVcbiAgICAgICgpXG4gID1cbiAgbGV0IG9sZF9jb250cm9sX3BhcmFtcyA9IGdldCAoKSBpblxuICBsZXQgZiBvcHQgdG9fc3RyaW5nIGZpZWxkID1cbiAgICBsZXQgb2xkX3ZhbHVlID0gRmllbGQuZ2V0IGZpZWxkIG9sZF9jb250cm9sX3BhcmFtcyBpblxuICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgfCBOb25lIC0+IG9sZF92YWx1ZVxuICAgIHwgU29tZSBuZXdfdmFsdWUgLT5cbiAgICAgIE9wdGlvbi5pdGVyIGxvZ2dlciB+ZjooZnVuIGYgLT5cbiAgICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgICAgZlxuICAgICAgICAgIFwiR2MuQ29udHJvbC4lczogJXMgLT4gJXNcIlxuICAgICAgICAgIChGaWVsZC5uYW1lIGZpZWxkKVxuICAgICAgICAgICh0b19zdHJpbmcgb2xkX3ZhbHVlKVxuICAgICAgICAgICh0b19zdHJpbmcgbmV3X3ZhbHVlKSk7XG4gICAgICBuZXdfdmFsdWVcbiAgaW5cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID0gT3B0aW9uLm1hcCBhbGxvY2F0aW9uX3BvbGljeSB+ZjpBbGxvY2F0aW9uX3BvbGljeS50b19pbnQgaW5cbiAgbGV0IG5ld19jb250cm9sX3BhcmFtcyA9XG4gICAgQ29udHJvbC5GaWVsZHMubWFwXG4gICAgICB+bWlub3JfaGVhcF9zaXplOihmIG1pbm9yX2hlYXBfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfm1ham9yX2hlYXBfaW5jcmVtZW50OihmIG1ham9yX2hlYXBfaW5jcmVtZW50IHN0cmluZ19vZl9pbnQpXG4gICAgICB+c3BhY2Vfb3ZlcmhlYWQ6KGYgc3BhY2Vfb3ZlcmhlYWQgc3RyaW5nX29mX2ludClcbiAgICAgIH52ZXJib3NlOihmIHZlcmJvc2Ugc3RyaW5nX29mX2ludClcbiAgICAgIH5tYXhfb3ZlcmhlYWQ6KGYgbWF4X292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+c3RhY2tfbGltaXQ6KGYgc3RhY2tfbGltaXQgc3RyaW5nX29mX2ludClcbiAgICAgIH5hbGxvY2F0aW9uX3BvbGljeTooZiBhbGxvY2F0aW9uX3BvbGljeSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfndpbmRvd19zaXplOihmIHdpbmRvd19zaXplIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21ham9yX3JhdGlvOihmIGN1c3RvbV9tYWpvcl9yYXRpbyBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9taW5vcl9yYXRpbzooZiBjdXN0b21fbWlub3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfbWF4X3NpemU6KGYgY3VzdG9tX21pbm9yX21heF9zaXplIHN0cmluZ19vZl9pbnQpXG4gIGluXG4gIHNldCBuZXdfY29udHJvbF9wYXJhbXNcbjs7XG5cbmxldCBkaXNhYmxlX2NvbXBhY3Rpb24gP2xvZ2dlciB+YWxsb2NhdGlvbl9wb2xpY3kgKCkgPVxuICBsZXQgYWxsb2NhdGlvbl9wb2xpY3kgPVxuICAgIG1hdGNoIGFsbG9jYXRpb25fcG9saWN5IHdpdGhcbiAgICB8IGBEb24ndF9jaGFuZ2UgLT4gTm9uZVxuICAgIHwgYFNldF90byBwb2xpY3kgLT4gU29tZSBwb2xpY3lcbiAgaW5cbiAgKCogVGhlIHZhbHVlIDFfMDAwXzAwMCwgYWNjb3JkaW5nIHRvXG4gICAgIGh0dHA6Ly9jYW1sLmlucmlhLmZyL3B1Yi9kb2NzL21hbnVhbC1vY2FtbC00LjAyL2xpYnJlZi9HYy5odG1sXG4gICAgIHdpbGwgZGlzYWJsZSBjb21wYWN0aW9ucy5cbiAgKilcbiAgdHVuZSA/bG9nZ2VyID9hbGxvY2F0aW9uX3BvbGljeSB+bWF4X292ZXJoZWFkOjFfMDAwXzAwMCAoKVxuOztcblxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19taW5vcl93b3Jkc1wiXG5leHRlcm5hbCBtYWpvcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHByb21vdGVkX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfcHJvbW90ZWRfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWlub3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtYWpvcl9jb2xsZWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvbXBhY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfY29tcGFjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfcGx1c19taW5vcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgYWxsb2NhdGVkX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfYWxsb2NhdGVkX3dvcmRzXCJcbmV4dGVybmFsIHJ1bl9tZW1wcm9mX2NhbGxiYWNrcyA6IHVuaXQgLT4gdW5pdCA9IFwiY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3NcIlxuXG5bJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG5leHRlcm5hbCBoZWFwX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfaGVhcF93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoZWFwX2NodW5rcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2hlYXBfY2h1bmtzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvcF9oZWFwX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfdG9wX2hlYXBfd29yZHNcIiBbQEBub2FsbG9jXVxuXG5bJSVlbmRpZl1cblxubGV0IHN0YXRfc2l6ZV9sYXp5ID1cbiAgbGF6eSAoT2JqLnJlYWNoYWJsZV93b3JkcyAoT2JqLnJlcHIgKFN0ZGxpYi5HYy5xdWlja19zdGF0ICgpIDogU3RhdC50KSkpXG47O1xuXG5sZXQgc3RhdF9zaXplICgpID0gTGF6eS5mb3JjZSBzdGF0X3NpemVfbGF6eVxubGV0IHplcm8gPSBTeXMub3BhcXVlX2lkZW50aXR5IChpbnRfb2Zfc3RyaW5nIFwiMFwiKVxuXG4oKiBUaGUgY29tcGlsZXIgd29uJ3Qgb3B0aW1pemUgaW50X29mX3N0cmluZyBhd2F5IHNvIGl0IHdvbid0XG4gICBwZXJmb3JtIGNvbnN0YW50IGZvbGRpbmcgYmVsb3cuICopXG5sZXQgcmVjIGtlZXBfYWxpdmUgbyA9IGlmIHplcm8gPD4gMCB0aGVuIGtlZXBfYWxpdmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgbylcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICgqIFdlIGRpc2FibGUgaW5saW5pbmcgZm9yIHRoaXMgZnVuY3Rpb24gc28gdGhlIEdDIHN0YXRzIGFuZCB0aGUgY2FsbCB0byBbZl0gYXJlIG5ldmVyXG4gICAgIHJlYXJyYW5nZWQuICopXG4gIGxldFtAY29sZF0gbWVhc3VyZV9pbnRlcm5hbCB+b25fcmVzdWx0IGYgPVxuICAgIGxldCBtaW5vcl93b3Jkc19iZWZvcmUgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19iZWZvcmUgPSBtYWpvcl93b3JkcyAoKSBpblxuICAgICgqIFdlIHdyYXAgW2YgKCldIHdpdGggW1N5cy5vcGFxdWVfaWRlbnRpdHldIHRvIHByZXZlbnQgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGJlaW5nXG4gICAgICAgb3B0aW1pemVkIGF3YXkuICopXG4gICAgbGV0IHggPSBTeXMub3BhcXVlX2lkZW50aXR5IChmICgpKSBpblxuICAgIGxldCBtaW5vcl93b3Jkc19hZnRlciA9IG1pbm9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FmdGVyID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYWxsb2NhdGVkID0gbWFqb3Jfd29yZHNfYWZ0ZXIgLSBtYWpvcl93b3Jkc19iZWZvcmUgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWxsb2NhdGVkID0gbWlub3Jfd29yZHNfYWZ0ZXIgLSBtaW5vcl93b3Jkc19iZWZvcmUgaW5cbiAgICBvbl9yZXN1bHQgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHhcbiAgOztcblxuICBsZXQgaXNfemVyb19hbGxvYyAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICAgICgqIEluc3RlYWQgb2YgdXNpbmcgW0FsbG9jYXRpb25fcmVwb3J0Lm1lYXN1cmVdLCBhbmQgbWF0Y2hpbmcgb24gdGhlIHJlc3VsdCwgd2UgdXNlXG4gICAgICAgdGhpcyBjb25zdHJ1Y3Rpb24sIGluIG9yZGVyIHRvIGhhdmUgW2lzX3plcm9fYWxsb2NdIG5vdCBhbGxvY2F0ZSBpdHNlbGYuIFRoaXNcbiAgICAgICBlbmFibGVzIFtpc196ZXJvX2FsbG9jXSB0byBiZSB1c2VkIGluIGEgbmVzdGVkIHdheS4gKilcbiAgICBtZWFzdXJlX2ludGVybmFsXG4gICAgICBmXG4gICAgICB+b25fcmVzdWx0OihmdW4gfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHZhbHVlIC0+XG4gICAgICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2YWx1ZSA6IGEpO1xuICAgICAgICBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgPT0gMCAmJiBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgPT0gMClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9yZXBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgOiBpbnRcbiAgICAgIDsgbWlub3Jfd29yZHNfYWxsb2NhdGVkIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkID1cbiAgICAgIHsgbWFqb3Jfd29yZHNfYWxsb2NhdGVkOyBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgfVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZWFzdXJlX2FsbG9jYXRpb24gZiA9XG4gICAgbWVhc3VyZV9pbnRlcm5hbCBmIH5vbl9yZXN1bHQ6KGZ1biB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgeCAtPlxuICAgICAgeCwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9sb2cgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzaXplX2luX3dvcmRzIDogaW50XG4gICAgICA7IGlzX21ham9yIDogYm9vbFxuICAgICAgOyBiYWNrdHJhY2UgOiBzdHJpbmdcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAxMSwgMCldXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCBsb2cgOiBBbGxvY2F0aW9uX2xvZy50IGxpc3QgcmVmID0gcmVmIFtdXG4gICAgYW5kIG1ham9yX2FsbG9jcyA9IHJlZiAwXG4gICAgYW5kIG1pbm9yX2FsbG9jcyA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2FsbG9jIH5pc19tYWpvciAoaW5mbyA6IFN0ZGxpYi5HYy5NZW1wcm9mLmFsbG9jYXRpb24pID1cbiAgICAgIGlmIGlzX21ham9yXG4gICAgICB0aGVuIG1ham9yX2FsbG9jcyA6PSAhbWFqb3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXNcbiAgICAgIGVsc2UgbWlub3JfYWxsb2NzIDo9ICFtaW5vcl9hbGxvY3MgKyBpbmZvLm5fc2FtcGxlcztcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBTdGRsaWIuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgaW5mby5jYWxsc3RhY2sgaW5cbiAgICAgICgqIE1ha2UgYmFja3RyYWNlcyBlYXNpZXIgdG8gcmVhZCBieSBkZWxldGluZyBldmVyeXRoaW5nIGJlbG93IHRoaXMgZnVuY3Rpb24gKilcbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3Vic3RyX2luZGV4IGJhY2t0cmFjZSB+cGF0dGVybjpcIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uXCIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgcG9zc2libGU6IHdlIG1heSBoYXZlIGxvZ2dlZCBhbGxvY2F0aW9ucyBpbiBhbm90aGVyIHRocmVhZCAqKVxuICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgIFN0cmluZy5zdWIgfnBvczowIH5sZW46cCBiYWNrdHJhY2VcbiAgICAgICAgICB8PiBTdHJpbmcucnN0cmlwIH5kcm9wOihmdW5jdGlvblxuICAgICAgICAgICAgfCAnXFxuJyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICBpblxuICAgICAgbGV0IGluZm8gOiBBbGxvY2F0aW9uX2xvZy50ID1cbiAgICAgICAgeyBzaXplX2luX3dvcmRzID0gaW5mby5uX3NhbXBsZXM7IGlzX21ham9yOyBiYWNrdHJhY2UgfVxuICAgICAgaW5cbiAgICAgIGxvZyA6PSBpbmZvIDo6ICFsb2c7XG4gICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgdHJhY2tlciA9XG4gICAgICB7IFN0ZGxpYi5HYy5NZW1wcm9mLm51bGxfdHJhY2tlciB3aXRoXG4gICAgICAgIGFsbG9jX21pbm9yID0gb25fYWxsb2MgfmlzX21ham9yOmZhbHNlXG4gICAgICA7IGFsbG9jX21ham9yID0gb25fYWxsb2MgfmlzX21ham9yOnRydWVcbiAgICAgIH1cbiAgICBpblxuICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0YXJ0IH5zYW1wbGluZ19yYXRlOjEuMCB0cmFja2VyO1xuICAgICgqIEV4bi5wcm90ZWN0LCBtYW51YWxseSBpbmxpbmVkIHRvIGd1YXJhbnRlZSBubyBhbGxvY2F0aW9ucyAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgICB8IHggLT5cbiAgICAgICAgKCogTWVtcHJvZi5zdG9wIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IGFsbCBtZW1wcm9mIGNhbGxiYWNrcyBhcmUgcnVuIChzb21lIG1heSBiZVxuICAgICAgICAgICBkZWxheWVkIGlmIHRoZXkgaGFwcGVuZWQgZHVyaW5nIEMgY29kZSBhbmQgdGhlcmUgaGFzIGJlZW4gbm8gYWxsb2NhdGlvbiBzaW5jZSksXG4gICAgICAgICAgIHNvIHdlIGV4cGxpY3RseSBmbHVzaCB0aGVtICopXG4gICAgICAgIHJ1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKTtcbiAgICAgICAgU3RkbGliLkdjLk1lbXByb2Yuc3RvcCAoKTtcbiAgICAgICAgeFxuICAgICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgICBydW5fbWVtcHJvZl9jYWxsYmFja3MgKCk7XG4gICAgICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0b3AgKCk7XG4gICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgICggcmVzdWx0XG4gICAgLCBBbGxvY2F0aW9uX3JlcG9ydC5jcmVhdGVcbiAgICAgICAgfm1ham9yX3dvcmRzX2FsbG9jYXRlZDohbWFqb3JfYWxsb2NzXG4gICAgICAgIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQ6IW1pbm9yX2FsbG9jc1xuICAgICwgTGlzdC5yZXYgIWxvZyApXG4gIDs7XG5cbiAgWyUlZWxzZV1cblxuICBsZXQgbWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb24gZiA9XG4gICAgbGV0IHgsIHJlcG9ydCA9IG1lYXN1cmVfYWxsb2NhdGlvbiBmIGluXG4gICAgeCwgcmVwb3J0LCBbXVxuICA7O1xuXG4gIFslJWVuZGlmXVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGFkZF9maW5hbGl6ZXIgeCBmID1cbiAgICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlIChmdW4geCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB4KSkgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXIgZW5zdXJlcyB0aGF0IHRoZSBvbmx5IHBvc3NpYmxlIGZhaWx1cmVcbiAgICAgICAgIGlzIGR1ZSB0byBbeF0gYmVpbmcgc3RhdGljIGRhdGEuIEluIHRoaXMgY2FzZSwgd2Ugc2ltcGx5IGRyb3AgdGhlXG4gICAgICAgICBmaW5hbGl6ZXIgc2luY2Ugc3RhdGljIGRhdGEgd291bGQgbmV2ZXIgaGF2ZSBiZWVuIGNvbGxlY3RlZCBieSB0aGVcbiAgICAgICAgIEdDIGFueXdheS4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgKCogW2FkZF9maW5hbGl6ZXJfZXhuXSBpcyB0aGUgc2FtZSBhcyBbYWRkX2ZpbmFsaXplcl0uICBIb3dldmVyLCB0aGVpciB0eXBlcyBpblxuICAgICBjb3JlX2djLm1saSBhcmUgZGlmZmVyZW50LCBhbmQgdGhlIHR5cGUgb2YgW2FkZF9maW5hbGl6ZXJdIGd1YXJhbnRlZXMgdGhhdCBpdCBhbHdheXNcbiAgICAgcmVjZWl2ZXMgYSBoZWFwIGJsb2NrLCB3aGljaCBlbnN1cmVzIHRoYXQgaXQgd2lsbCBub3QgcmFpc2UsIHdoaWxlXG4gICAgIFthZGRfZmluYWxpemVyX2V4bl0gYWNjZXB0cyBhbnkgdHlwZSwgYW5kIHNvIG1heSByYWlzZS4gKilcbiAgbGV0IGFkZF9maW5hbGl6ZXJfZXhuIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgKCogVGhlIHR5cGUgb2YgYWRkX2ZpbmFsaXplcl9sYXN0IGVuc3VyZXMgdGhhdCB0aGUgb25seSBwb3NzaWJsZSBmYWlsdXJlXG4gICAgICAgICBpcyBkdWUgdG8gW3hdIGJlaW5nIHN0YXRpYyBkYXRhLiBJbiB0aGlzIGNhc2UsIHdlIHNpbXBseSBkcm9wIHRoZVxuICAgICAgICAgZmluYWxpemVyIHNpbmNlIHN0YXRpYyBkYXRhIHdvdWxkIG5ldmVyIGhhdmUgYmVlbiBjb2xsZWN0ZWQgYnkgdGhlXG4gICAgICAgICBHQyBhbnl3YXkuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplX3JlbGVhc2UgPSBTdGRsaWIuR2MuZmluYWxpc2VfcmVsZWFzZVxuXG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGFsYXJtXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gPSBcIjxnYyBhbGFybT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBsZXQgY3JlYXRlIGYgPSBjcmVhdGVfYWxhcm0gKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpXG4gICAgbGV0IGRlbGV0ZSA9IGRlbGV0ZV9hbGFybVxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV9pbnRlcm5hbFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTZXJpYWxpemFibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGhvc3QgOiBTdHJpbmcudFxuICAgICAgICA7IHBvcnQgOiBJbnQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVja11cblxuICAgICAgbGV0IHRvX3NlcmlhbGl6YWJsZSB7IGhvc3Q7IHBvcnQgfSA9IGhvc3QsIHBvcnRcbiAgICAgIGxldCBvZl9zZXJpYWxpemFibGUgKGhvc3QsIHBvcnQpID0geyBob3N0OyBwb3J0IH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTZXJpYWxpemFibGUuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICB0b19zZXJpYWxpemFibGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogU2VyaWFsaXphYmxlLnRdO1xuICAgICAgICBbJWV4cGVjdFxuICAgICAgICAgIHt8XG4gICAgICAgICAgICAgICAgICA5NTc5OTBmMGZjNDE2MWZiODc0ZTY2ODcyNTUwZmI0MFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDAgfH1dXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChTZXJpYWxpemFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgb3BlbiEgSW1wb3J0XG4gICAgICBvcGVuISBTdGRfaW50ZXJuYWxcbiAgICAgIG9wZW4hIFQwXG5cbiAgICAgIGxldCB0b19zdHJpbmcgeyBob3N0OyBwb3J0IH0gPSBzcHJpbnRmIFwiJXM6JWRcIiBob3N0IHBvcnRcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBob3N0OyBwb3J0IF0gLT5cbiAgICAgICAgICBsZXQgcG9ydCA9XG4gICAgICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyBwb3J0IHdpdGhcbiAgICAgICAgICAgIHwgX2V4biAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogYmFkIHBvcnQ6ICVzXCIgcyAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgeyBob3N0OyBwb3J0IH1cbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkhvc3RfYW5kX3BvcnQub2Zfc3RyaW5nOiAlc1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICB8IFNleHAuQXRvbSBzIGFzIHNleHAgLT5cbiAgICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICAgfCBGYWlsdXJlIGVyciAtPiBvZl9zZXhwX2Vycm9yIGVyciBzZXhwKVxuICAgICAgICB8IHNleHAgLT4gdF9vZl9zZXhwIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLlxuICAgICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyAoKiBoYW5kbGVzIHRoZSBob3N0OnBvcnQgc3RyaW5nIGNhc2UgKilcbiAgICAgICAgICAgICAgICAgIFN0cmluZ1xuICAgICAgICAgICAgICAgICAgOyAoKiBoYW5kbGVzIHRoZSBsaXN0IChob3N0IHBvcnQpIGNhc2UgICopXG4gICAgICAgICAgICAgICAgICBMaXN0IChDb25zIChTdHJpbmcsIENvbnMgKEludGVnZXIsIEVtcHR5KSkpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQxKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRfb2Zfc2V4cFwiID1cbiAgICAgIFsldGVzdF9yZXN1bHQ6IHRdXG4gICAgICAgICh0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHt8KGxvY2FsaG9zdCA4MDgwKXx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9O1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogdF1cbiAgICAgICAgKHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcge3xsb2NhbGhvc3Q6ODA4MHx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9XG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHJvdW5kdHJpcFwiID1cbiAgICAgIFF1aWNrY2hlY2sudGVzdCBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgICAgWyV0ZXN0X3Jlc3VsdDogdF0gKHRfb2Zfc2V4cCAoc2V4cF9vZl90IHQpKSB+ZXhwZWN0OnQpXG4gICAgOztcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbmluY2x1ZGUgTGF0ZXN0XG5cbmxldCBjcmVhdGUgfmhvc3QgfnBvcnQgPSB7IGhvc3Q7IHBvcnQgfVxubGV0IGhvc3QgdCA9IHQuaG9zdFxubGV0IHBvcnQgdCA9IHQucG9ydFxubGV0IHR1cGxlIHQgPSB0b19zZXJpYWxpemFibGUgdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5Ib3N0X2FuZF9wb3J0XCJcbiAgZW5kKVxuXG5pbmNsdWRlIChIYXNoYWJsZS5NYWtlX2JpbmFibGUgKExhdGVzdCkgOiBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoTGF0ZXN0KVxuXG5sZXQgdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiSG9zdF9hbmRfcG9ydFwiIHNleHBfb2ZfdFxuIiwib3BlbiBTdGFibGVfbW9kdWxlX3R5cGVzXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgZW5kKSA6IFMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQyXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlLlYxIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5WMS5NYWtlIChUMSlcbiAgZW5kXG5cbiAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTVxuXG4gICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMlxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUuVjIgKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuVjEuTWFrZSAoVDEpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMS5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MiA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTIuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMi5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMikgdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTIuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMi5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MyA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcFxuICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSB0IC0+ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgPSAoJ2ExLCAnYTIsICdhMykgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTMuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMy5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgIDogICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgPSAoJ2ExLCAnYTIsICdhMykgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTMuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMy5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0ID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDEuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgYSkgOiBhIFN0YWJsZV93aXRuZXNzLnQgLT4gYSBNLnQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIGZ1biB3aXRuZXNzIC0+XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUxIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDEuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgYSkgOiBhIFN0YWJsZV93aXRuZXNzLnQgLT4gYSBNLnQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIGZ1biB3aXRuZXNzIC0+XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUxIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0Mi5WMSAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTIgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0Mi5WMiAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTIgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9XG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQzLlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIHdpdG5lc3MgPVxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMyAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9XG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQzLlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIHdpdG5lc3MgPVxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMyAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb250YWluZXJzID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBleGNlcHRpb24gUGlkX211c3RfYmVfcG9zaXRpdmUgb2YgSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgIGxldCBlbnN1cmUgaSA9IGlmIGkgPD0gMCB0aGVuIHJhaXNlIChQaWRfbXVzdF9iZV9wb3NpdGl2ZSBpKSBlbHNlIGlcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPSBJbnQuU3RhYmxlLlYxLnRcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gRm4uaWRcbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gZW5zdXJlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFdpdGhvdXRfY29udGFpbmVycylcbiAgICBpbmNsdWRlIFdpdGhvdXRfY29udGFpbmVyc1xuICBlbmRcblxuICBtb2R1bGUgTGF0ZXN0ID0gVjFcbmVuZFxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhYmxlLkxhdGVzdC5XaXRob3V0X2NvbnRhaW5lcnNcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2hdXG5cbmxldCBvZl9pbnQgaSA9IGVuc3VyZSBpXG5sZXQgdG9faW50ID0gRm4uaWRcbmxldCBvZl9zdHJpbmcgc3RyaW5nID0gZW5zdXJlIChJbnQub2Zfc3RyaW5nIHN0cmluZylcbmxldCB0b19zdHJpbmcgPSBJbnQudG9fc3RyaW5nXG5sZXQgaW5pdCA9IG9mX2ludCAxXG5cbmluY2x1ZGVcbiAgUXVpY2tjaGVja2FibGUuT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWRcbiAgICAoSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBvZl9xdWlja2NoZWNrYWJsZSBuID0gT3B0aW9uLnNvbWVfaWYgKG4gPiAwKSBuXG4gICAgICBsZXQgdG9fcXVpY2tjaGVja2FibGUgPSB0b19pbnRcbiAgICBlbmQpXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuUGlkXCJcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuUXVldWVcblxuaW5jbHVkZSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlLk1ha2UxX2FuZF90ZXN0IChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5IGEgPVxuICAgICAgICBsZXQgciA9IGNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBXZSBlbnF1ZXVlIGV2ZXJ5dGhpbmcgdHdpY2UsIGFuZCBkZXF1ZXVlIGl0IG9uY2UgdG8gZW5zdXJlOlxuICAgICAgICAgICAtIHRoYXQgdGhlIHF1ZXVlIGhhcyB0aGUgc2FtZSBjb250ZW50IGFzIHRoZSBhcnJheS5cbiAgICAgICAgICAgLSB0aGF0IGl0IGhhcywgaW4gbW9zdCBjYXNlcywgYW4gaW50ZXJlc3RpbmcgaW50ZXJuYWwgc3RydWN0dXJlKilcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX2V4biByIDogYm9vbCk7XG4gICAgICAgICAgZW5xdWV1ZSByIGEuKGkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHJcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZClcblxubW9kdWxlIFNlcmlhbGl6YXRpb25fdjEgPSBzdHJ1Y3RcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJiNGM4NDI1NC00OTkyLTExZTYtOWJhNy03MzRlMTU0MDI3YmRcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuUXVldWVcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID0gaW5pdCBsZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpXG4gICAgZW5kKVxuXG4gIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAoKiBTZXJpYWxpemF0aW9uX3YxIGRlZmluZXMgYSBzdGFibGUgc2VyaWFsaXphdGlvbiAqKVxuICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFNlcmlhbGl6YXRpb25fdjFcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbiAgICAoKiBXZSBkb24ndCBoYXZlIGEgWyViaW5fZGlnZXN0XSBleHBlY3QgdGVzdCBoZXJlIGJlY2F1c2UgdGhlIGJpbl9pbyBpcyBtb3N0bHkgaGFuZFxuICAgICAgIHdyaXR0ZW4sIGFuZCBbY29yZV9xdWV1ZV91bml0X3Rlc3RzLm1sXSBoYXMgdW5pdCB0ZXN0cyBmb3Igc3BlY2lmaWMgdmFsdWVzLiAqKVxuXG4gICAgbGV0IG1hcCA9IG1hcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFVuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3QuTWFrZVxuXG5cbm1vZHVsZSB0eXBlIFN0YWJsZSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRob3V0X2NvbXBhcmF0b3IgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwX3dpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIHR5cGUgU3RhYmxlMSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzFcbm1vZHVsZSB0eXBlIFN0YWJsZTIgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMyXG5tb2R1bGUgdHlwZSBTdGFibGUzID0gU3RhYmxlX21vZHVsZV90eXBlcy5TM1xubW9kdWxlIHR5cGUgU3RhYmxlNCA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzRcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV9pbnQ2M2FibGVfd2l0aF93aXRuZXNzID0gU3RhYmxlX2ludDYzYWJsZS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcblxubW9kdWxlIHR5cGUgU3RhYmxlX3dpdGhvdXRfY29tcGFyYXRvcl93aXRoX3dpdG5lc3MgPVxuICBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBfd2l0aG91dF9jb21wYXJhdG9yXG5cbm1vZHVsZSB0eXBlIFN0YWJsZTFfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMxXG5tb2R1bGUgdHlwZSBTdGFibGUyX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMlxubW9kdWxlIHR5cGUgU3RhYmxlM193aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzNcbm1vZHVsZSB0eXBlIFN0YWJsZTRfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlM0XG5cbm1vZHVsZSBNYWtlX3N0YWJsZSA9IE1ha2Vfc3RhYmxlXG5pbmNsdWRlIFN0YWJsZV9pbnRlcm5hbFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGUuU3RhYmxlXG5tb2R1bGUgQmlnc3RyaW5nID0gQmlnc3RyaW5nLlN0YWJsZVxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmcuU3RhYmxlXG5tb2R1bGUgQm9vbCA9IEJvb2wuU3RhYmxlXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHMuU3RhYmxlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlcy5TdGFibGVcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZS5TdGFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvci5TdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZS5TdGFibGVcbm1vZHVsZSBEYXlfb2Zfd2VlayA9IERheV9vZl93ZWVrLlN0YWJsZVxubW9kdWxlIE1kNSA9IE1kNS5TdGFibGVcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIuU3RhYmxlXG5tb2R1bGUgRXJyb3IgPSBFcnJvci5TdGFibGVcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWUuU3RhYmxlXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZS5TdGFibGVcbm1vZHVsZSBGbG9hdCA9IEZsb2F0LlN0YWJsZVxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5TdGFibGVcbm1vZHVsZSBGcXVldWUgPSBGcXVldWUuU3RhYmxlXG5tb2R1bGUgR2MgPSBHYy5TdGFibGVcbm1vZHVsZSBIb3N0X2FuZF9wb3J0ID0gSG9zdF9hbmRfcG9ydC5TdGFibGVcbm1vZHVsZSBJbmZvID0gSW5mby5TdGFibGVcbm1vZHVsZSBJbnQgPSBJbnQuU3RhYmxlXG5tb2R1bGUgSW50NjMgPSBJbnQ2My5TdGFibGVcbm1vZHVsZSBMYXp5ID0gTGF6eS5TdGFibGVcbm1vZHVsZSBMaXN0ID0gTGlzdC5TdGFibGVcbm1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZC5TdGFibGVcbm1vZHVsZSBNb250aCA9IE1vbnRoLlN0YWJsZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nLlN0YWJsZVxubW9kdWxlIE9wdGlvbiA9IE9wdGlvbi5TdGFibGVcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yLlN0YWJsZVxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50LlN0YWJsZVxubW9kdWxlIFBlcm1zID0gUGVybXMuU3RhYmxlXG5tb2R1bGUgUGlkID0gUGlkLlN0YWJsZVxubW9kdWxlIFF1ZXVlID0gUXVldWUuU3RhYmxlXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0LlN0YWJsZVxubW9kdWxlIFNldCA9IFNldC5TdGFibGVcbm1vZHVsZSBTZXhwID0gU2V4cC5TdGFibGVcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlLlN0YWJsZVxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nLlN0YWJsZVxubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZC5TdGFibGVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9ucy5TdGFibGVcblxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0LlN0YWJsZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTExXSBVc2UgW1RpbWVfZmxvYXRdIG9yIFtUaW1lX2Zsb2F0X3VuaXhdIGluc3RlYWRcIl1cblxubW9kdWxlIFRpbWVfZmxvYXQgPSBUaW1lX2Zsb2F0LlN0YWJsZVxubW9kdWxlIFVuaXQgPSBVbml0LlN0YWJsZVxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDb3JlX3VuaXguU3RhYmxlXVwiXVxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcblxuaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuaW5jbHVkZSBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLkdsb2JhbGl6ZVxuaW5jbHVkZSBJbXBvcnQuTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG4gIEludCA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuXG5sZXQgb2ZfY2FtbF9pbnQgdCA9IHRcbmxldCB0b19jYW1sX2ludCB0ID0gdFxuXG50eXBlIHN5c19iZWhhdmlvciA9XG4gIFsgYENvbnRpbnVlICgqKiBDb250aW51ZSB0aGUgcHJvY2VzcyBpZiBpdCBpcyBjdXJyZW50bHkgc3RvcHBlZCAqKVxuICB8IGBEdW1wX2NvcmUgKCoqIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyBhbmQgZHVtcCBjb3JlICopXG4gIHwgYElnbm9yZSAoKiogSWdub3JlIHRoZSBzaWduYWwgKilcbiAgfCBgU3RvcCAoKiogU3RvcCB0aGUgcHJvY2VzcyAqKVxuICB8IGBUZXJtaW5hdGUgKCoqIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyAqKVxuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXF1YWwgKHQgOiB0KSB0JyA9IHQgPSB0J1xuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiBQbGVhc2Uga2VlcCBpbiBzeW5jIHdpdGggdGhlIGxpc3QgZm9yIHRvX3N0cmluZy9zeXNfYmVoYXZpb3IgKilcbiAgb3BlbiBTdGRsaWIuU3lzXG5cbiAgbGV0IGFicnQgPSBzaWdhYnJ0XG4gIGxldCBhbHJtID0gc2lnYWxybVxuICBsZXQgYnVzID0gc2lnYnVzXG4gIGxldCBjaGxkID0gc2lnY2hsZFxuICBsZXQgY29udCA9IHNpZ2NvbnRcbiAgbGV0IGZwZSA9IHNpZ2ZwZVxuICBsZXQgaHVwID0gc2lnaHVwXG4gIGxldCBpbGwgPSBzaWdpbGxcbiAgbGV0IGludCA9IHNpZ2ludFxuICBsZXQga2lsbCA9IHNpZ2tpbGxcbiAgbGV0IHBpcGUgPSBzaWdwaXBlXG4gIGxldCBwb2xsID0gc2lncG9sbFxuICBsZXQgcHJvZiA9IHNpZ3Byb2ZcbiAgbGV0IHF1aXQgPSBzaWdxdWl0XG4gIGxldCBzZWd2ID0gc2lnc2VndlxuICBsZXQgc3RvcCA9IHNpZ3N0b3BcbiAgbGV0IHN5cyA9IHNpZ3N5c1xuICBsZXQgdGVybSA9IHNpZ3Rlcm1cbiAgbGV0IHRyYXAgPSBzaWd0cmFwXG4gIGxldCB0c3RwID0gc2lndHN0cFxuICBsZXQgdHRpbiA9IHNpZ3R0aW5cbiAgbGV0IHR0b3UgPSBzaWd0dG91XG4gIGxldCB1cmcgPSBzaWd1cmdcbiAgbGV0IHVzcjEgPSBzaWd1c3IxXG4gIGxldCB1c3IyID0gc2lndXNyMlxuICBsZXQgdnRhbHJtID0gc2lndnRhbHJtXG4gIGxldCB4Y3B1ID0gc2lneGNwdVxuICBsZXQgeGZzeiA9IHNpZ3hmc3pcbiAgbGV0IHplcm8gPSAwXG5lbmRcblxuZXhjZXB0aW9uIEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRvX3N0cmluZ193aXRoX3ZlcnNpb24sIG9mX3N0cmluZywgZGVmYXVsdF9zeXNfYmVoYXZpb3IgPVxuICBsZXQga25vd24gPVxuICAgIFtcbiAgICAgIFwic2lnYWJydFwiLCBhYnJ0LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2Fscm1cIiwgYWxybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdidXNcIiwgYnVzLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ2NobGRcIiwgY2hsZCwgYElnbm9yZSwgMVxuICAgIDsgXCJzaWdjb250XCIsIGNvbnQsIGBDb250aW51ZSwgMVxuICAgIDsgXCJzaWdmcGVcIiwgZnBlLCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2h1cFwiLCBodXAsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lnaWxsXCIsIGlsbCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdpbnRcIiwgaW50LCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2tpbGxcIiwga2lsbCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdwaXBlXCIsIHBpcGUsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncG9sbFwiLCBwb2xsLCBgVGVybWluYXRlLCAyXG4gICAgOyBcInNpZ3Byb2ZcIiwgcHJvZiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdxdWl0XCIsIHF1aXQsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnc2VndlwiLCBzZWd2LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ3N0b3BcIiwgc3RvcCwgYFN0b3AsIDFcbiAgICA7IFwic2lnc3lzXCIsIHN5cywgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd0ZXJtXCIsIHRlcm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndHJhcFwiLCB0cmFwLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3RzdHBcIiwgdHN0cCwgYFN0b3AsIDFcbiAgICA7IFwic2lndHRpblwiLCB0dGluLCBgU3RvcCwgMVxuICAgIDsgXCJzaWd0dG91XCIsIHR0b3UsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3VyZ1wiLCB1cmcsIGBJZ25vcmUsIDJcbiAgICA7IFwic2lndXNyMVwiLCB1c3IxLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3VzcjJcIiwgdXNyMiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd2dGFscm1cIiwgdnRhbHJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3hjcHVcIiwgeGNwdSwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd4ZnN6XCIsIHhmc3osIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lnemVyb1wiLCB6ZXJvLCBgSWdub3JlLCAxXG4gICAgXVxuICBpblxuICBsZXQgbmFtZV9hbmRfdmVyc2lvbl9ieV90ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIGxldCB0X2J5X25hbWUgPSBTdHJpbmcuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgbGV0IGJlaGF2aW9yX2J5X3QgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgTGlzdC5pdGVyIGtub3duIH5mOihmdW4gKG5hbWUsIHQsIGJlaGF2aW9yLCBzdGFibGVfdmVyc2lvbikgLT5cbiAgICBIYXNodGJsLnNldCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgfmtleTp0IH5kYXRhOihuYW1lLCBzdGFibGVfdmVyc2lvbik7XG4gICAgSGFzaHRibC5zZXQgdF9ieV9uYW1lIH5rZXk6bmFtZSB+ZGF0YTp0O1xuICAgIEhhc2h0Ymwuc2V0IGJlaGF2aW9yX2J5X3QgfmtleTp0IH5kYXRhOmJlaGF2aW9yKTtcbiAgKCogRm9yIHVua25vd24gc2lnbmFsIG51bWJlcnMsIFt0b19zdHJpbmddIHJldHVybnMgYSBtZWFuaW5nZnVsXG4gICAgIHN0cmluZywgd2hpbGUgW2RlZmF1bHRfc3lzX2JlaGF2aW9yXSBoYXMgdG8gcmFpc2UgYW4gZXhjZXB0aW9uXG4gICAgIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSByaWdodCBhbnN3ZXIgaXMuICopXG4gIGxldCB0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246cmVxdWVzdGVkX3ZlcnNpb24gPVxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgdCB3aXRoXG4gICAgfCBTb21lIChzdHJpbmcsIG5lZWRlZF92ZXJzaW9uKSB3aGVuIHJlcXVlc3RlZF92ZXJzaW9uID49IG5lZWRlZF92ZXJzaW9uIC0+IHN0cmluZ1xuICAgIHwgXyAtPiBcIjx1bmtub3duIHNpZ25hbCBcIiBeIEludC50b19zdHJpbmcgdCBeIFwiPlwiXG4gIGluXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubG93ZXJjYXNlIChTdHJpbmcuc3RyaXAgcykgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdF9ieV9uYW1lIHMgd2l0aFxuICAgIHwgU29tZSBzbiAtPiBzblxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCI8dW5rbm93biBzaWduYWwgXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyAoU3RyaW5nLnNsaWNlIHMgMTYgfi0xKSB3aXRoXG4gICAgICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpKVxuICAgICAgZWxzZSByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpXG4gIGluXG4gIGxldCBkZWZhdWx0X3N5c19iZWhhdmlvciB0ID1cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgYmVoYXZpb3JfYnlfdCB0IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChJbnZhbGlkX2FyZ3VtZW50XG4gICAgICAgICAgIChcIlNpZ25hbC5kZWZhdWx0X3N5c19iZWhhdmlvcjogdW5rbm93biBzaWduYWwgXCIgXiBJbnQudG9fc3RyaW5nIHQpKVxuICAgIHwgU29tZSBiZWhhdmlvciAtPiBiZWhhdmlvclxuICBpblxuICB0b19zdHJpbmdfd2l0aF92ZXJzaW9uLCBvZl9zdHJpbmcsIGRlZmF1bHRfc3lzX2JlaGF2aW9yXG47O1xuXG5leGNlcHRpb24gRXhwZWN0ZWRfYXRvbSBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uKVxubGV0IHRvX3N0cmluZyBzID0gdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiBzIH52ZXJzaW9uOjJcbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoyXG5cbmxldCB0X29mX3NleHAgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNleHAuQXRvbSBzIC0+IG9mX3N0cmluZyBzXG4gIHwgXyAtPiByYWlzZSAoRXhwZWN0ZWRfYXRvbSBzKVxuOztcblxudHlwZSBwaWRfc3BlYyA9IFsgYFVzZV9TaWduYWxfdW5peCBdXG50eXBlIHNpZ3Byb2NtYXNrX2NvbW1hbmQgPSBbIGBVc2VfU2lnbmFsX3VuaXggXVxuXG5sZXQgY2FuX3NlbmRfdG8gPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgb2Zfc3lzdGVtX2ludCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfZXhuID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfaSA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZXhwX29mX3BpZF9zcGVjID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3BlbmRpbmcgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lncHJvY21hc2sgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lnc3VzcGVuZCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCB0b19zeXN0ZW1faW50ID0gYFVzZV9TaWduYWxfdW5peFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIHR5cGUgYmVoYXZpb3IgPVxuICAgIFsgYERlZmF1bHRcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBIYW5kbGUgb2YgdCAtPiB1bml0XG4gICAgXVxuXG4gIG1vZHVsZSBCZWhhdmlvciA9IHN0cnVjdFxuICAgIGxldCBvZl9jYW1sID0gZnVuY3Rpb25cbiAgICAgIHwgU3RkbGliLlN5cy5TaWduYWxfZGVmYXVsdCAtPiBgRGVmYXVsdFxuICAgICAgfCBTaWduYWxfaWdub3JlIC0+IGBJZ25vcmVcbiAgICAgIHwgU2lnbmFsX2hhbmRsZSBmIC0+IGBIYW5kbGUgZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IGBEZWZhdWx0IC0+IFN0ZGxpYi5TeXMuU2lnbmFsX2RlZmF1bHRcbiAgICAgIHwgYElnbm9yZSAtPiBTaWduYWxfaWdub3JlXG4gICAgICB8IGBIYW5kbGUgZiAtPiBTaWduYWxfaGFuZGxlIChmdW4gdCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2lnbmFsIHQgYmVoYXZpb3IgPVxuICAgIEJlaGF2aW9yLm9mX2NhbWwgKFN0ZGxpYi5TeXMuc2lnbmFsIHQgKEJlaGF2aW9yLnRvX2NhbWwgYmVoYXZpb3IpKVxuICA7O1xuXG4gIGxldCBzZXQgdCBiZWhhdmlvciA9IGlnbm9yZSAoc2lnbmFsIHQgYmVoYXZpb3IgOiBiZWhhdmlvcilcbiAgbGV0IGhhbmRsZSB0IGYgPSBzZXQgdCAoYEhhbmRsZSBmKVxuZW5kXG5cbm9wZW4gRXhwZXJ0XG5cbmxldCBoYW5kbGVfZGVmYXVsdCB0ID0gc2V0IHQgYERlZmF1bHRcbmxldCBpZ25vcmUgdCA9IHNldCB0IGBJZ25vcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjJcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoxXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTaWduX29yX25hbiA9IEJhc2UuU2lnbl9vcl9uYW5cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduX29yX25hbi50ID1cbiAgICAgIHwgTmVnXG4gICAgICB8IFplcm9cbiAgICAgIHwgUG9zXG4gICAgICB8IE5hblxuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgZW51bWVyYXRlXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBTaWduX29yX25hblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduX29yX25hbikgKFN0YWJsZS5WMSlcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgdmFsdWUgOiAnYSBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZS5WMS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgW0Bjb21wYXJlLmlnbm9yZV0gW0BlcXVhbC5pZ25vcmVdXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGZpZWxkc11cbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBvZl9mb3JtYXQgKHYxIDogJ2EgRm9ybWF0LnQpIDogJ2EgdCA9IHsgdmFsdWUgPSAhdjE7IHNldF9hdCA9IFslaGVyZV0gfVxuICAgICAgbGV0IHRvX2Zvcm1hdCAodCA6ICdhIHQpIDogJ2EgRm9ybWF0LnQgPSByZWYgdC52YWx1ZVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRm9ybWF0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2Zvcm1hdFxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGVcbiAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlMVxuICAgICAgICAoRm9ybWF0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19mb3JtYXRcbiAgICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBVbnN0YWJsZSA9IFN0YWJsZS5WMVxub3BlbiBTdGFibGUuVFxuXG50eXBlICdhIHQgPSAnYSBTdGFibGUuVC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsXVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB7IHZhbHVlOyBzZXRfYXQgfSA9XG4gIG1hdGNoIHZhbHVlIHdpdGhcbiAgfCBOb25lIC0+IFslbWVzc2FnZSBcInVuc2V0XCJdXG4gIHwgU29tZSB2YWx1ZSAtPlxuICAgIFslbWVzc2FnZSBcIlwiICh2YWx1ZSA6IGEpIH5zZXRfYXQ6KHNldF9hdCB8PiBTb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmcpXVxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdC52YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IE5vbmU7IHNldF9hdCA9IFslaGVyZV0gfVxuXG5sZXQgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZSA9XG4gIHQudmFsdWUgPC0gU29tZSB2YWx1ZTtcbiAgdC5zZXRfYXQgPC0gaGVyZVxuOztcblxubGV0IHNldF9pZl9ub25lIHQgaGVyZSB2YWx1ZSA9IGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWUgdGhlbiBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlXG5cbmxldCBzZXQgdCBoZXJlIHZhbHVlID1cbiAgaWYgT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxuICB0aGVuIChcbiAgICBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlO1xuICAgIE9rICgpKVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1NldF9vbmNlLnNldF9leG5dIGFscmVhZHkgc2V0XCJcbiAgICAgICAgICB+c2V0dGluZ19hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAgICAgfnByZXZpb3VzbHlfc2V0X2F0Oih0LnNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IHNldF9leG4gdCBoZXJlIHZhbHVlID0gT3JfZXJyb3Iub2tfZXhuIChzZXQgdCBoZXJlIHZhbHVlKVxubGV0IGdldCB0ID0gdC52YWx1ZVxuXG5sZXQgZ2V0X2V4biAodCA6IF8gdCkgaGVyZSA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IFNvbWUgYSAtPiBhXG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1NldF9vbmNlLmdldF9leG5dIHVuc2V0XCIgfmF0OihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgaXNfbm9uZSB0ID0gT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxubGV0IGlzX3NvbWUgdCA9IE9wdGlvbi5pc19zb21lIHQudmFsdWVcbmxldCBpdGVyIHQgfmYgPSBPcHRpb24uaXRlciB0LnZhbHVlIH5mXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgdCA9IGdldF9leG4gdCBbJWhlcmVdXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHRvX3N0cmluZyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IHByaW50IF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX3RvX3N0cmluZ19pbnN0ZWFkXG5sZXQgY2F0Y2ggXyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl9oYW5kbGVfdW5jYXVnaHRfaW5zdGVhZFxubGV0IHByaW50X2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5wcmludF9iYWNrdHJhY2VcbmxldCBnZXRfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLmdldF9iYWNrdHJhY2VcbmxldCByZWNvcmRfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbmxldCBiYWNrdHJhY2Vfc3RhdHVzID0gU3RkbGliLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXNcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvbl9hcnJheVxuXG5pbmNsdWRlXG4gIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19hcnJheVxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuTGF6eX1bQmFzZS5MYXp5XX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBCYXNlLkxhenkudFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgKCoqIEBpbmxpbmUgKilcblxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBjb21wYXJlID1cbiAgWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG4gIC0+IFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cblxubGV0IGNvbXBhcmUgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDwgKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPD0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA+PSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw+ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBlcXVhbCBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IG1pbiBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IG1heCBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG50eXBlICgnYSwgJ2IpIGZuID0gJ2EgLT4gJ2JcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUnZhbCBvZiAnYVxuICAgIHwgRXhwdCBvZiBleG5cblxuICBsZXQgcmV0dXJuID0gZnVuY3Rpb25cbiAgICB8IFJ2YWwgdiAtPiB2XG4gICAgfCBFeHB0IGUgLT4gcmFpc2UgZVxuICA7O1xuXG4gIGxldCBjYXB0dXJlIGYgeCA9XG4gICAgdHJ5IFJ2YWwgKGYgeCkgd2l0aFxuICAgIHwgZSAtPiBFeHB0IGVcbiAgOztcbmVuZFxuXG5sZXQgdW5pdCBmID1cbiAgbGV0IGwgPSBMYXp5LmZyb21fZnVuIGYgaW5cbiAgZnVuICgpIC0+IExhenkuZm9yY2UgbFxuOztcblxubGV0IHVuYm91bmRlZCAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSBmID1cbiAgbGV0IGNhY2hlID1cbiAgICBsZXQgbW9kdWxlIEEgPVxuICAgICAgSGFzaGFibGUuTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgICAgZW5kKVxuICAgIGluXG4gICAgQS5UYWJsZS5jcmVhdGUgKCkgfnNpemU6MFxuICBpblxuICAoKiBBbGxvY2F0ZSB0aGlzIGNsb3N1cmUgYXQgdGhlIGNhbGwgdG8gW3VuYm91bmRlZF0sIG5vdCBhdCBlYWNoIGNhbGwgdG8gdGhlIG1lbW9pemVkXG4gICAgIGZ1bmN0aW9uLiAqKVxuICBsZXQgcmVhbGx5X2NhbGxfZiBhcmcgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICBmdW4gYXJnIC0+IFJlc3VsdC5yZXR1cm4gKEhhc2h0YmwuZmluZGlfb3JfYWRkIGNhY2hlIGFyZyB+ZGVmYXVsdDpyZWFsbHlfY2FsbF9mKVxuOztcblxuKCogdGhlIHNhbWUgYnV0IHdpdGggYSBib3VuZCBvbiBjYWNoZSBzaXplICopXG5sZXQgbHJ1ICh0eXBlIGEpID8oaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLnBvbHkpIH5tYXhfY2FjaGVfc2l6ZSBmID1cbiAgaWYgbWF4X2NhY2hlX3NpemUgPD0gMFxuICB0aGVuIGZhaWx3aXRoZiBcIk1lbW8ubHJ1OiBtYXhfY2FjaGVfc2l6ZSBvZiAlaSA8PSAwXCIgbWF4X2NhY2hlX3NpemUgKCk7XG4gIGxldCBtb2R1bGUgQ2FjaGUgPVxuICAgIEhhc2hfcXVldWUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgIGVuZClcbiAgaW5cbiAgbGV0IGNhY2hlID0gQ2FjaGUuY3JlYXRlICgpIGluXG4gIGZ1biBhcmcgLT5cbiAgICBSZXN1bHQucmV0dXJuXG4gICAgICAobWF0Y2ggQ2FjaGUubG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgY2FjaGUgYXJnIHdpdGhcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHJlc3VsdCA9IFJlc3VsdC5jYXB0dXJlIGYgYXJnIGluXG4gICAgICAgICBDYWNoZS5lbnF1ZXVlX2JhY2tfZXhuIGNhY2hlIGFyZyByZXN1bHQ7XG4gICAgICAgICAoKiBlamVjdCBsZWFzdCByZWNlbnRseSB1c2VkIGNhY2hlIGVudHJ5ICopXG4gICAgICAgICBpZiBDYWNoZS5sZW5ndGggY2FjaGUgPiBtYXhfY2FjaGVfc2l6ZVxuICAgICAgICAgdGhlbiBpZ25vcmUgKENhY2hlLmRlcXVldWVfZnJvbnRfZXhuIGNhY2hlIDogXyBSZXN1bHQudCk7XG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgZ2VuZXJhbCA/aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZiA9XG4gIG1hdGNoIGNhY2hlX3NpemVfYm91bmQgd2l0aFxuICB8IE5vbmUgLT4gdW5ib3VuZGVkID9oYXNoYWJsZSBmXG4gIHwgU29tZSBuIC0+IGxydSA/aGFzaGFibGUgfm1heF9jYWNoZV9zaXplOm4gZlxuOztcblxuKCogV2UgZXhwZWN0IFtmX29uZXN0ZXBdIHRvIGJlIGEgb25lLXN0ZXAgdW5yb2xsZWQgcmVjdXJzaXZlIGZ1bmN0aW9uOyBzZWUgdGhlIG1saS4gSGVuY2UsXG4gICBoZXJlIHdlIGNyZWF0ZSB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gX2FuZF8gcGFzcyBpdCB0byBbZl9vbmVzdGVwXSB0byBiZSB1c2VkIGZvclxuICAgcmVjdXJzaXZlIGNhbGxzLlxuXG4gICBOb3RlIHRoYXQgd2UgaW1tZWRpYXRlbHkgYXBwbHkgW2Zfb25lc3RlcF0gdG8gaXRzIGZpcnN0IGFyZ3VtZW50IGhlcmUgc28gdGhhdCBhbnlcbiAgIHByZWNvbXB1dGF0aW9uIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSB1c2VyIGNhbGxzIFtyZWN1cnNpdmVdLlxuXG4gICBBcyBhbiBleGFtcGxlLCBpZiBzb21lb25lIHdyaXRlcyB0aGlzIG5vbi1tZW1vaXplZCBjb2RlOlxuXG4gICBbIGxldCByZWMgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIF1cblxuICAgYW5kIGNvbnZlcnRzIHRvIG1lbW9pemF0aW9uIGJ5IGRvaW5nOlxuXG4gICB7W1xuICAgICBsZXQgZiA9XG4gICAgICAgbGV0IGZfb25lc3RlcCBmID0gbGV0IGRhdGEgPSBjb21wdXRlX3dpdGhvdXRfdXNpbmdfZiAoKSBpbiBmdW4geCAtPiAuLi4gZiAuLi4gaW5cbiAgICAgICByZWN1cnNpdmUgZl9vbmVzdGVwXG4gICBdfVxuXG4gICB3ZSB3YW50IHRvIGNvbXB1dGUgW2RhdGFdIGltbWVkaWF0ZWx5LiBJZiB3ZSBoYWQgW2Z1biB4IC0+IGZfb25lc3RlcCAoZm9yY2UgbWVtb2l6ZWQpXG4gICB4XSBiZWxvdywgd2UnZCByZWNvbXB1dGUgW2RhdGFdIGVhY2ggdGltZSB0aGUgdXNlciBjYWxscyBbZl0gb24gYW4gYXJndW1lbnQgdGhhdCBoYWRuJ3RcbiAgIHlldCBiZWVuIG1lbW9pemVkLiAqKVxubGV0IHJlY3Vyc2l2ZSB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZl9vbmVzdGVwID1cbiAgbGV0IHJlYyBtZW1vaXplZCA9XG4gICAgbGF6eSAoZ2VuZXJhbCB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgKGZfb25lc3RlcCAoZnVuIHggLT4gKGZvcmNlIG1lbW9pemVkKSB4KSkpXG4gIGluXG4gIGZvcmNlIG1lbW9pemVkXG47O1xuXG5sZXQgb2ZfY29tcGFyYWJsZSAodHlwZSBpbmRleCkgKG1vZHVsZSBNIDogQ29tcGFyYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gaW5kZXgpIGYgPVxuICBsZXQgbSA9IHJlZiBNLk1hcC5lbXB0eSBpblxuICBmdW4gKHggOiBNLnQpIC0+XG4gICAgbGV0IHYgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgIW0geCB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IHYgPSBSZXN1bHQuY2FwdHVyZSBmIHggaW5cbiAgICAgICAgbSA6PSBNYXAuc2V0ICFtIH5rZXk6eCB+ZGF0YTp2O1xuICAgICAgICB2XG4gICAgaW5cbiAgICBSZXN1bHQucmV0dXJuIHZcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBRdWV1ZSA9IEJhc2UuTGlua2VkX3F1ZXVlXG5pbmNsdWRlIFF1ZXVlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgUXVldWUudFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODAwZGY5YTAtNDk5Mi0xMWU2LTg4MWQtZmZlMWE1YzhhY2VkXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTGlua2VkX3F1ZXVlXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAoKiBCaW5fcHJvdCByZWFkcyB0aGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSB3ZXJlIHdyaXR0ZW4gb3V0LCBhcyBkZXRlcm1pbmVkXG4gICAgICAgYnkgW2l0ZXJdLiAgU28sIHdlIGNhbiBpZ25vcmUgdGhlIGluZGV4IGFuZCBqdXN0IGVucXVldWUgZWFjaCBlbGVtZW50IGFzIGl0IGlzIHJlYWRcbiAgICAgICBpbi4gKilcbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgIGVucXVldWUgdCAobmV4dCAoKSlcbiAgICAgIGRvbmU7XG4gICAgICB0XG4gICAgOztcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERlcml2aW5nX2hhc2hfaW50ZlxuXG5tb2R1bGUgT2ZfZGVyaXZpbmdfaGFzaFxuICAgIChSZXByIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG4gICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSZXByLmhhc2hfZm9sZF90IHN0YXRlIChNLnRvX3JlcHIgdClcbiAgbGV0IGhhc2ggPSBQcHhfaGFzaF9saWIuU3RkLkhhc2gub2ZfZm9sZCBoYXNoX2ZvbGRfdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogW2Fycl0gaXMgYSBjeWNsaWMgYnVmZmVyICopXG4gICAgbXV0YWJsZSBhcnIgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7ICgqIFtmcm9udF9pbmRleF0gYW5kIFtiYWNrX2luZGV4XSBhcmUgdGhlIHBvc2l0aW9ucyBpbiB3aGljaCBuZXcgZWxlbWVudHMgbWF5IGJlXG4gICAgICAgZW5xdWV1ZWQuICBUaGlzIG1ha2VzIHRoZSBhY3RpdmUgcGFydCBvZiBbYXJyXSB0aGUgcmFuZ2UgZnJvbSBbZnJvbnRfaW5kZXgrMV0gdG9cbiAgICAgICBbYmFja19pbmRleC0xXSAobW9kdWxvIHRoZSBsZW5ndGggb2YgW2Fycl0gYW5kIHdyYXBwaW5nIGFyb3VuZCBpZiBuZWNlc3NhcnkpLiAgTm90ZVxuICAgICAgIHRoYXQgdGhpcyBtZWFucyB0aGUgYWN0aXZlIHJhbmdlIGlzIG1heGltaXplZCB3aGVuIFtmcm9udF9pbmRleCA9IGJhY2tfaW5kZXhdLCB3aGljaFxuICAgICAgIG9jY3VycyB3aGVuIHRoZXJlIGFyZSBbQXJyYXkubGVuZ3RoIGFyciAtIDFdIGFjdGl2ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIGZyb250X2luZGV4IDogaW50XG4gIDsgbXV0YWJsZSBiYWNrX2luZGV4IDogaW50XG4gIDsgKCogYXBwYXJlbnRfZnJvbnRfaW5kZXggaXMgd2hhdCBpcyBleHBvc2VkIGFzIHRoZSBmcm9udCBpbmRleCBleHRlcm5hbGx5LiAgSXQgaGFzIG5vXG4gICAgICAgcmVhbCByZWxhdGlvbiB0byB0aGUgYXJyYXkgLS0gZXZlcnkgZW5xdWV1ZSB0byB0aGUgZnJvbnQgZGVjcmVtZW50cyBpdCBhbmQgZXZlcnlcbiAgICAgICBkZXF1ZXVlIGZyb20gdGhlIGZyb250IGluY3JlbWVudHMgaXQuICopXG4gICAgbXV0YWJsZSBhcHBhcmVudF9mcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgKCogV2Uga2VlcCBhcnJfbGVuZ3RoIGhlcmUgYXMgYSBzcGVlZCBoYWNrLiAgQ2FsbGluZyBBcnJheS5sZW5ndGggb24gYXJyIGlzIGFjdHVhbGx5XG4gICAgICAgbWVhbmluZ2Z1bGx5IHNsb3dlci4gKilcbiAgICBtdXRhYmxlIGFycl9sZW5ndGggOiBpbnRcbiAgOyBuZXZlcl9zaHJpbmsgOiBib29sXG4gIH1cblxubGV0IGNyZWF0ZSA/aW5pdGlhbF9sZW5ndGggP25ldmVyX3NocmluayAoKSA9XG4gIGxldCBuZXZlcl9zaHJpbmsgPVxuICAgIG1hdGNoIG5ldmVyX3NocmluayB3aXRoXG4gICAgfCBOb25lIC0+IE9wdGlvbi5pc19zb21lIGluaXRpYWxfbGVuZ3RoXG4gICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBsZXQgaW5pdGlhbF9sZW5ndGggPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6NyBpbml0aWFsX2xlbmd0aCBpblxuICBpZiBpbml0aWFsX2xlbmd0aCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwYXNzZWQgbmVnYXRpdmUgaW5pdGlhbF9sZW5ndGggdG8gRGVxdWUuY3JlYXRlOiAlaVwiIGluaXRpYWxfbGVuZ3RoICgpO1xuICAoKiBNYWtlIHRoZSBpbml0aWFsIGFycmF5IGxlbmd0aCBiZSBbaW5pdGlhbF9sZW5ndGggKyAxXSBzbyB3ZSBjYW4gZml0IFtpbml0aWFsX2xlbmd0aF1cbiAgICAgZWxlbWVudHMgd2l0aG91dCBncm93aW5nLiAgV2UgbmV2ZXIgcXVpdGUgdXNlIHRoZSB3aG9sZSBhcnJheS4gKilcbiAgbGV0IGFycl9sZW5ndGggPSBpbml0aWFsX2xlbmd0aCArIDEgaW5cbiAgeyBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46YXJyX2xlbmd0aFxuICA7IGZyb250X2luZGV4ID0gMFxuICA7IGJhY2tfaW5kZXggPSAxXG4gIDsgYXBwYXJlbnRfZnJvbnRfaW5kZXggPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGFycl9sZW5ndGhcbiAgOyBuZXZlcl9zaHJpbmtcbiAgfVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFdlIGtlZXAgdHJhY2sgb2YgdGhlIGxlbmd0aCBpbiBhIG11dGFibGUgZmllbGQgZm9yIHNwZWVkLCBidXQgdGhpcyBjYWxjdWxhdGlvbiBzaG91bGRcbiAgIGJlIGNvcnJlY3QgYnkgY29uc3RydWN0aW9uLCBhbmQgY2FuIGJlIHVzZWQgZm9yIHRlc3RpbmcuICopXG5sZXQgX2ludmFyaWFudF9sZW5ndGggdCA9XG4gIGxldCBjb25zdHJ1Y3RlZF9sZW5ndGggPVxuICAgIGlmIHQuZnJvbnRfaW5kZXggPCB0LmJhY2tfaW5kZXhcbiAgICB0aGVuIHQuYmFja19pbmRleCAtIHQuZnJvbnRfaW5kZXggLSAxXG4gICAgZWxzZSB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMSArIHQuYXJyX2xlbmd0aFxuICBpblxuICBhc3NlcnQgKGxlbmd0aCB0ID0gY29uc3RydWN0ZWRfbGVuZ3RoKVxuOztcblxuKCogVGhlIHZhcmlvdXMgXCJ3aGVuX25vdF9lbXB0eVwiIGZ1bmN0aW9ucyByZXR1cm4gbWlzbGVhZGluZyBudW1iZXJzIHdoZW4gdGhlIGRlcXVldWUgaXNcbiAgIGVtcHR5LiAgVGhleSBhcmUgc2FmZSB0byBjYWxsIGlmIGl0IGlzIGtub3duIHRoYXQgdGhlIGRlcXVldWUgaXMgbm9uLWVtcHR5LiAqKVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPSB0LmFwcGFyZW50X2Zyb250X2luZGV4XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIGxlbmd0aCB0IC0gMVxuXG5sZXQgYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5hcnJfbGVuZ3RoIC0gMSB0aGVuIDAgZWxzZSB0LmZyb250X2luZGV4ICsgMVxuOztcblxubGV0IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmJhY2tfaW5kZXggPSAwIHRoZW4gdC5hcnJfbGVuZ3RoIC0gMSBlbHNlIHQuYmFja19pbmRleCAtIDFcbjs7XG5cbmxldCBjaGVja2VkIHQgZiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB0KVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHlcbmxldCBhcHBhcmVudF9iYWNrX2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eVxuXG5sZXQgZm9sZGknIHQgZGlyIH5pbml0IH5mID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaSB+c3RvcF9wb3MgfnN0ZXAgPVxuICAgICAgaWYgcmVhbF9pID0gc3RvcF9wb3NcbiAgICAgIHRoZW4gYWNjLCBhcHBhcmVudF9pXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoZiBhcHBhcmVudF9pIGFjYyAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciByZWFsX2kpKVxuICAgICAgICAgIH5hcHBhcmVudF9pOihhcHBhcmVudF9pICsgc3RlcClcbiAgICAgICAgICB+cmVhbF9pOihyZWFsX2kgKyBzdGVwKVxuICAgICAgICAgIH5zdG9wX3Bvc1xuICAgICAgICAgIH5zdGVwXG4gICAgaW5cbiAgICAoKiBXZSB3YW50IHRvIGl0ZXJhdGUgZnJvbSBhY3R1YWxfZnJvbnQgdG8gYWN0dWFsX2JhY2sgKG9yIHZpY2UgdmVyc2EpLCBidXQgd2UgbWF5XG4gICAgICAgbmVlZCB0byB3cmFwIGFyb3VuZCB0aGUgYXJyYXkgdG8gZG8gc28uICBUaHVzIHdlIGRvIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgMS4gIElmIHRoZSBhY3RpdmUgcmFuZ2UgaXMgY29udGlndW91cyAoaS5lLiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2spLCB0aGVuIGxvb3BcbiAgICAgICBzdGFydGluZyBhdCB0aGUgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdW50aWwgd2UgcmVhY2ggdGhlIGZpcnN0XG4gICAgICAgZWxlbWVudCBvdXRzaWRlIG9mIGl0LlxuICAgICAgIDIuICBJZiBpdCBpcyBub3QgY29udGlndW91cyAoYWN0dWFsX2Zyb250ID4gYWN0dWFsX2JhY2spLCB0aGVuIGZpcnN0IGxvb3AgZnJvbSB0aGVcbiAgICAgICBhcHByb3ByaWF0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIFRoZW4sIGxvb3AgZnJvbVxuICAgICAgIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFycmF5IHRvIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZS5cbiAgICAqKVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgZnJvbnRfdG9fYmFjayAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfZnJvbnRcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2Zyb250XG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSlcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBhY2MsIGFwcGFyZW50X2kgPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aFxuICAgICAgICAgICAgfnN0ZXA6MVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID0gbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSB+c3RlcDoxIGluXG4gICAgICAgIGFjYylcbiAgICB8IGBiYWNrX3RvX2Zyb250IC0+XG4gICAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9mcm9udCAtIDEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KC0xKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIH5hcHBhcmVudF9pXG4gICAgICAgICAgICB+cmVhbF9pOih0LmFycl9sZW5ndGggLSAxKVxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpKVxuOztcblxubGV0IGZvbGQnIHQgZGlyIH5pbml0IH5mID0gZm9sZGknIHQgZGlyIH5pbml0IH5mOihmdW4gXyBhY2MgdiAtPiBmIGFjYyB2KSBbQG5vbnRhaWxdXG5sZXQgaXRlcmknIHQgZGlyIH5mID0gZm9sZGknIHQgZGlyIH5pbml0OigpIH5mOihmdW4gaSAoKSB2IC0+IGYgaSB2KVxubGV0IGl0ZXInIHQgZGlyIH5mID0gZm9sZGknIHQgZGlyIH5pbml0OigpIH5mOihmdW4gXyAoKSB2IC0+IGYgdilcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkJyB0IGBmcm9udF90b19iYWNrIH5pbml0IH5mXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9IGZvbGRpJyB0IGBmcm9udF90b19iYWNrIH5pbml0IH5mXG5sZXQgaXRlcmkgdCB+ZiA9IGl0ZXJpJyB0IGBmcm9udF90b19iYWNrIH5mXG5cbmxldCBpdGVyaV9pbnRlcm5hbCB0IH5mID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIChcbiAgICBsZXQgYWN0dWFsX2Zyb250ID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IHJlYyBsb29wIH5yZWFsX2kgfnN0b3BfcG9zID1cbiAgICAgIGlmIHJlYWxfaSA8IHN0b3BfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgZiB0LmFyciByZWFsX2k7XG4gICAgICAgIGxvb3AgfnJlYWxfaToocmVhbF9pICsgMSkgfnN0b3BfcG9zKVxuICAgIGluXG4gICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgdGhlbiBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSBbQG5vbnRhaWxdXG4gICAgZWxzZSAoXG4gICAgICBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3Bvczp0LmFycl9sZW5ndGg7XG4gICAgICBsb29wIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgW0Bub250YWlsXSkpXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgaXRlcmlfaW50ZXJuYWwgdCB+ZjooZnVuIGFyciBpIC0+IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gYXJyIGkgfD4gZikgW0Bub250YWlsXVxuOztcblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lm5ldmVyX3Nocmlua1xuICB0aGVuXG4gICAgKCogY2xlYXIgdGhlIGFycmF5IHRvIGFsbG93IGVsZW1lbnRzIHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkICopXG4gICAgaXRlcmlfaW50ZXJuYWwgdCB+ZjpPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lXG4gIGVsc2UgdC5hcnIgPC0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjg7XG4gIHQuZnJvbnRfaW5kZXggPC0gMDtcbiAgdC5iYWNrX2luZGV4IDwtIDE7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuYXJyXG47O1xuXG4oKiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSwgaW1wb3J0aW5nIGFsbCBvZiBDb250YWluZXIuTWFrZSB3b3VsZCBjaGFuZ2UgdGhlIHJ1bnRpbWUgb2ZcbiAgIHNvbWUgZnVuY3Rpb25zIChbbGVuZ3RoXSBtaW5pbWFsbHkpIHNpbGVudGx5IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlbWFudGljcy4gIFdlIGdldFxuICAgYXJvdW5kIHRoYXQgYnkgaW1wb3J0aW5nIHRoaW5ncyBleHBsaWNpdGx5LiAgKilcbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgbWVtID0gQy5tZW1cbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IGJsaXQgbmV3X2FyciB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IG9sZF9hcnIgPSB0LmFyciBpblxuICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgdGhlblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOihsZW5ndGggdClcbiAgZWxzZSAoXG4gICAgbGV0IGJyZWFrX3BvcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggb2xkX2FyciAtIGFjdHVhbF9mcm9udCBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOmJyZWFrX3BvcztcbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOmJyZWFrX3Bvc1xuICAgICAgfmxlbjooYWN0dWFsX2JhY2sgKyAxKSk7XG4gICgqIGxlbmd0aCBkZXBlbmRzIG9uIHQuYXJyIGFuZCB0LmZyb250X2luZGV4LCBzbyB0aGlzIG5lZWRzIHRvIGJlIGZpcnN0ICopXG4gIHQuYmFja19pbmRleCA8LSBsZW5ndGggdDtcbiAgdC5hcnIgPC0gbmV3X2FycjtcbiAgdC5hcnJfbGVuZ3RoIDwtIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FycjtcbiAgdC5mcm9udF9pbmRleCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgLSAxO1xuICAoKiBTaW5jZSB0LmZyb250X2luZGV4ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMSwgdGhpcyBpcyBhc3NlcnRpbmcgdGhhdCB0LmJhY2tfaW5kZXhcbiAgICAgaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkgYW5kIHRoYXQgdGhlIGFycmF5IGNhbiBzdXBwb3J0IGF0IGxlYXN0IG9uZSBtb3JlXG4gICAgIGVsZW1lbnQgLS0gcmVjYWxsLCBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gdGhlIGFycmF5IGlzIGZ1bGwuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgPiBsZW5ndGggdCArIDEuXG4gICopXG4gIGFzc2VydCAodC5mcm9udF9pbmRleCA+IHQuYmFja19pbmRleClcbjs7XG5cbmxldCBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0ID1cbiAgaWYgKG5vdCB0Lm5ldmVyX3NocmluaykgJiYgdC5hcnJfbGVuZ3RoID4gMTAgJiYgdC5hcnJfbGVuZ3RoIC8gMyA+IGxlbmd0aCB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggLyAyKSBpblxuICAgIGJsaXQgbmV3X2FyciB0KVxuOztcblxubGV0IGdyb3dfdW5kZXJseWluZyB0ID1cbiAgbGV0IG5ld19hcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KHQuYXJyX2xlbmd0aCAqIDIpIGluXG4gIGJsaXQgbmV3X2FyciB0XG47O1xuXG5sZXQgZW5xdWV1ZV9iYWNrIHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuYmFja19pbmRleCB2O1xuICB0LmJhY2tfaW5kZXggPC0gKGlmIHQuYmFja19pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5iYWNrX2luZGV4ICsgMSk7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWVfZnJvbnQgdCB2ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIGdyb3dfdW5kZXJseWluZyB0O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgdC5mcm9udF9pbmRleCB2O1xuICB0LmZyb250X2luZGV4IDwtIChpZiB0LmZyb250X2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmZyb250X2luZGV4IC0gMSk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCAtIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IHYgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB2XG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB2XG47O1xuXG5sZXQgcGVla19mcm9udF9ub25lbXB0eSB0ID1cbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAoYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgcGVla19mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBwZWVrX2JhY2tfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUucGVla19iYWNrX2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfYmFja19ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19iYWNrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBlZWtfYmFja19ub25lbXB0eSB0KVxuXG5sZXQgcGVlayB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuZnJvbnRfaW5kZXggPC0gaTtcbiAgdC5hcHBhcmVudF9mcm9udF9pbmRleCA8LSB0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfYmFja19ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuYmFja19pbmRleCA8LSBpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQ7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IGRlcXVldWVfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2dlbiA/KG4gPSAxKSB+ZGVxdWV1ZSB0ID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJEZXF1ZS5kcm9wOiAgbmVnYXRpdmUgaW5wdXQgKCVkKVwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAobiAtIDEpKVxuICBpblxuICBsb29wIG5cbjs7XG5cbmxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2Zyb250IHRcbmxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3BfZ2VuID9uIH5kZXF1ZXVlOmRlcXVldWVfYmFjayB0XG5cbmxldCBkcm9wID9uIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayA/biB0XG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgP24gdFxuOztcblxubGV0IGFzc2VydF9ub3RfZW1wdHkgdCBuYW1lID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZhaWx3aXRoZiBcIiVzOiBEZXF1ZS50IGlzIGVtcHR5XCIgbmFtZSAoKVxuXG5sZXQgdHJ1ZV9pbmRleF9leG4gdCBpID1cbiAgbGV0IGlfZnJvbV96ZXJvID0gaSAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggaW5cbiAgaWYgaV9mcm9tX3plcm8gPCAwIHx8IGxlbmd0aCB0IDw9IGlfZnJvbV96ZXJvXG4gIHRoZW4gKFxuICAgIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLnRydWVfaW5kZXhfZXhuXCI7XG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImludmFsaWQgaW5kZXg6ICVpIGZvciBhcnJheSB3aXRoIGluZGljZXMgKCVpLCVpKVwiXG4gICAgICBpXG4gICAgICBhcHBhcmVudF9mcm9udFxuICAgICAgYXBwYXJlbnRfYmFja1xuICAgICAgKCkpO1xuICBsZXQgdHJ1ZV9pID0gdC5mcm9udF9pbmRleCArIDEgKyBpX2Zyb21femVybyBpblxuICBpZiB0cnVlX2kgPj0gdC5hcnJfbGVuZ3RoIHRoZW4gdHJ1ZV9pIC0gdC5hcnJfbGVuZ3RoIGVsc2UgdHJ1ZV9pXG47O1xuXG5sZXQgZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKHRydWVfaW5kZXhfZXhuIHQgaSlcblxubGV0IGdldF9vcHQgdCBpID1cbiAgdHJ5IFNvbWUgKGdldCB0IGkpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzZXRfZXhuIHQgaSB2ID0gT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpIHZcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBwZWVrX2Zyb250IHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgZnJvbnQgLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBmcm9udCBpblxuICAgIGlnbm9yZVxuICAgICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB2IC0+XG4gICAgICAgICBhcnIuKGkpIDwtIHY7XG4gICAgICAgICBpICsgMSlcbiAgICAgICA6IGludCk7XG4gICAgYXJyXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID1cbiAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOihBcnJheS5sZW5ndGggYXJyICsgMSkgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnIgfmY6KGZ1biB2IC0+IGVucXVldWVfYmFjayB0IHYpO1xuICB0XG47O1xuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIzNGMxZTljYS00OTkyLTExZTYtYTY4Ni04YjRiZDRmODc3OTZcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5EZXF1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIHQgfmZcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOmxlbiAoKSBpblxuICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICBlbnF1ZXVlX2JhY2sgdCB4XG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcblxubGV0IHRfb2Zfc2V4cCBmIHNleHAgPSBvZl9hcnJheSAoQXJyYXkudF9vZl9zZXhwIGYgc2V4cClcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG4oKiByZS1leHBvc2UgdGhlc2UgaGVyZSB1bmRlciBhIGRpZmZlcmVudCBuYW1lIHRvIGF2b2lkIGludGVybmFsIGNvbmZ1c2lvbiAqKVxubGV0IGJhY2tfaW5kZXggPSBhcHBhcmVudF9iYWNrX2luZGV4XG5sZXQgZnJvbnRfaW5kZXggPSBhcHBhcmVudF9mcm9udF9pbmRleFxuXG5sZXQgYmFja19pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmJhY2tfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdFxuOztcblxubGV0IGZyb250X2luZGV4X2V4biB0ID1cbiAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUuZnJvbnRfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IFRlc3RfYmluYXJ5X3NlYXJjaGFibGUuTWFrZTFfYW5kX3Rlc3QgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0IHQgaSA9IGdldCB0IChmcm9udF9pbmRleF9leG4gdCArIGkpXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZFxuICBlbmQpXG5cbigqIFRoZSBcInN0YWJsZVwiIGluZGljZXMgdXNlZCBpbiB0aGlzIG1vZHVsZSBtYWtlIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGVcbiAgIFtCaW5hcnlfc2VhcmNoYWJsZV0gZnVuY3RvciBhd2t3YXJkLiAgV2UgbmVlZCB0byBiZSBzdXJlIHRvIHRyYW5zbGF0ZSBpbmNvbWluZ1xuICAgcG9zaXRpb25zIGZyb20gc3RhYmxlIHNwYWNlIHRvIHRoZSBleHBlY3RlZCAwIC0+IGxlbmd0aCAtIDEgc3BhY2UgYW5kIHRoZW4gd2UgbmVlZCB0b1xuICAgdHJhbnNsYXRlIHRoZW0gYmFjayBvbiByZXR1cm4uICopXG5sZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1bnRyYW5zbGF0ZWRfaSAtPiBTb21lICh0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgdW50cmFuc2xhdGVkX2kpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5cbmxldCBlcHJpbnQgbWVzc2FnZSA9IFByaW50Zi5lcHJpbnRmIFwiJXNcXG4lIVwiIG1lc3NhZ2VcbmxldCBlcHJpbnRfcyBzZXhwID0gZXByaW50IChTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbmxldCBlcHJpbnRzIG1lc3NhZ2UgYSBzZXhwX29mX2EgPSBlcHJpbnRfcyAoWyVzZXhwX29mOiBzdHJpbmcgKiBhXSAobWVzc2FnZSwgYSkpXG5sZXQgZXByaW50ZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXByaW50IGZvcm1hdFxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgTWFrZSAoKSA9IHN0cnVjdFxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBpbnZhcmlhbnQgfm1vZHVsZV9uYW1lIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlbiBlcHJpbnRzIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgaWYgIWNoZWNrX2ludmFyaWFudFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IExpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiaW52YXJpYW50IHByZS1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwb3N0LWNvbmRpdGlvbiBmYWlsZWRcIlxuICAgICAgICAgIChuYW1lLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBleG5dKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIGVwcmludHNcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgbW9kdWxlX25hbWU7IFwiLlwiOyBuYW1lOyBcIi1yZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5lbmRcblxubGV0IHNob3VsZF9wcmludF9iYWNrdHJhY2UgPSByZWYgZmFsc2VcblxubGV0IGFtX2ludGVybmFsIGhlcmUgbWVzc2FnZSA9XG4gICgqIEluIHRoaXMgZnVuY3Rpb24gd2UgdXNlIFtQcmludGYuZXByaW50Zl0gcmF0aGVyIHRoYW4gW0RlYnVnLmVwcmludGZdLCBiZWNhdXNlIHRoZVxuICAgICBmb3JtZXIgZG9lc24ndCBmbHVzaCwgd2hpbGUgdGhlIGxhdHRlciBkb2VzLiAgV2UnZCByYXRoZXIgZmx1c2ggb25jZSBhdCB0aGUgZW5kLFxuICAgICByYXRoZXIgdGhhbiB0aHJlZSB0aW1lcy4gKilcbiAgUHJpbnRmLmVwcmludGYgXCIlczpcXG5cIiAoU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nIGhlcmUpO1xuICBpZiAhc2hvdWxkX3ByaW50X2JhY2t0cmFjZVxuICB0aGVuXG4gICAgUHJpbnRmLmVwcmludGZcbiAgICAgIFwiJXNcXG5cIlxuICAgICAgKEJhY2t0cmFjZS5nZXQgKCkgfD4gWyVzZXhwX29mOiBCYWNrdHJhY2UudF0gfD4gU2V4cC50b19zdHJpbmdfaHVtKTtcbiAgKG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzXFxuXCIgbWVzc2FnZSk7XG4gIFByaW50Zi5lcHJpbnRmIFwiJSFcIlxuOztcblxubGV0IGFtIGhlcmUgPSBhbV9pbnRlcm5hbCBoZXJlIE5vbmVcbmxldCBhbWYgaGVyZSBmbXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHJpbmcgLT4gYW1faW50ZXJuYWwgaGVyZSAoU29tZSBzdHJpbmcpKSBmbXRcblxubGV0IGFtcyBoZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBhbV9pbnRlcm5hbCBoZXJlIChTb21lICgobWVzc2FnZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXSB8PiBTZXhwLnRvX3N0cmluZ19odW0pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN5c1xuXG5sZXQgdW5peF9xdW90ZSB4ID1cbiAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHgpKVxuICAmJiBTdHJpbmcuZm9yX2FsbCB4IH5mOihmdW5jdGlvblxuICAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgIHwgJzAnIC4uICc5J1xuICAgICAgIHwgJ18nIHwgJy0nIHwgJzonIHwgJy4nIHwgJy8nIHwgJywnIHwgJysnIHwgJz0nIHwgJyUnIHwgJ0AnIC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gKFxuICAgICgqIFNoZWxsIGtleXdvcmRzLCBhcyBvdXRwdXQgYnkgW2NvbXBnZW4gLWtdIGZvciBiYXNoLCBbbWFuIGRhc2hdIGZvciBkYXNoLCBhbmQgW1BBVEg9XG4gICAgICAgdHlwZSAtbSAnKicgfCBncmVwIHJlc2VydmVkXSBmb3IgenNoLCBleGNlcHQgZm9yIGtleXdvcmRzIHRoYXQgaGF2ZSBzcGVjaWFsXG4gICAgICAgY2hhcmFjdGVycyBsaWtlIFtbLiBOb3RlIHRoYXQgYnVpbHRpbnMgZG9uJ3QgbWF0dGVyIGJlY2F1c2UgJ2FsaWFzJyBhbmQgYWxpYXNcbiAgICAgICBiZWhhdmUgdGhlIHNhbWUsIHVubGlrZSAnaWYnIGFuZCBpZi4gKilcbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IFwiaWZcIlxuICAgIHwgXCJ0aGVuXCJcbiAgICB8IFwiZWxzZVwiXG4gICAgfCBcImVsaWZcIlxuICAgIHwgXCJmaVwiXG4gICAgfCBcImNhc2VcIlxuICAgIHwgXCJlc2FjXCJcbiAgICB8IFwiZm9yXCJcbiAgICB8IFwic2VsZWN0XCJcbiAgICB8IFwid2hpbGVcIlxuICAgIHwgXCJ1bnRpbFwiXG4gICAgfCBcImRvXCJcbiAgICB8IFwiZG9uZVwiXG4gICAgfCBcImluXCJcbiAgICB8IFwiZnVuY3Rpb25cIlxuICAgIHwgXCJ0aW1lXCJcbiAgICB8IFwiY29wcm9jXCJcbiAgICB8IFwiZm9yZWFjaFwiXG4gICAgfCBcInJlcGVhdFwiXG4gICAgfCBcIm5vY29ycmVjdFwiIC0+IEZpbGVuYW1lLnF1b3RlIHhcbiAgICB8IF8gLT4geClcbiAgZWxzZSBGaWxlbmFtZS5xdW90ZSB4XG47O1xuXG5sZXQgcXVvdGUgPVxuICBtYXRjaCBTdGRsaWIuU3lzLm9zX3R5cGUgd2l0aFxuICB8IFwiVW5peFwiIC0+IHVuaXhfcXVvdGVcbiAgfCBfIC0+IEZpbGVuYW1lLnF1b3RlXG47O1xuXG5sZXQgY29uY2F0X3F1b3RlZCBzcGxpdF9jb21tYW5kID1cbiAgTGlzdC5tYXAgfmY6cXVvdGUgc3BsaXRfY29tbWFuZCB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbjs7XG5cbmxldCBjX2ludF9zaXplID0gYFVzZV9TeXNfdW5peFxubGV0IGNhdGNoX2JyZWFrID0gYFVzZV9TeXNfdW5peFxubGV0IGNoZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmQgPSBgVXNlX1N5c191bml4XG5sZXQgY29tbWFuZF9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZXhlY3V0YWJsZV9uYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGlvbl9tb2RlID0gYFVzZV9TeXNfdW5peFxubGV0IGZpbGVfZXhpc3RzID0gYFVzZV9TeXNfdW5peFxubGV0IGZpbGVfZXhpc3RzX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBmb2xkX2RpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBnZXRjd2QgPSBgVXNlX1N5c191bml4XG5sZXQgaG9tZV9kaXJlY3RvcnkgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19maWxlX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBsc19kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgb3ZlcnJpZGVfYXJndiA9IGBVc2VfU3lzX3VuaXhcbmxldCByZWFkZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IHJlbW92ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW5hbWUgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudiA9IGBVc2VfU3lzX3VuaXhcbmxldCB1bnNhZmVfZ2V0ZW52X2V4biA9IGBVc2VfU3lzX3VuaXhcblxuZXhjZXB0aW9uIEJyZWFrID0gU3RkbGliLlN5cy5CcmVha1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgdW5peF9xdW90ZSA9IHVuaXhfcXVvdGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0ZGxpYi5BcmdcblxudHlwZSB0ID0ga2V5ICogc3BlYyAqIGRvY1xuXG5sZXQgc29ydF9hbmRfYWxpZ24gbHN0ID1cbiAgYWxpZ24gKEJhc2UuTGlzdC5zb3J0IGxzdCB+Y29tcGFyZTooZnVuIChhLCBfLCBfKSAoYiwgXywgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFnX2ludGZcbmluY2x1ZGUgKERvdWJseV9saW5rZWQgOiBEb3VibHlfbGlua2VkLlMpXG5cbmxldCBhZGQgPSBpbnNlcnRfZmlyc3RcbmxldCBhZGRfdW5pdCB0IHYgPSBhZGQgdCB2IHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG5sZXQgZWx0cyB0ID0gZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBlbHQgLT4gZWx0IDo6IGFjYylcbmxldCByZW1vdmVfb25lID0gcmVtb3ZlX2ZpcnN0XG5sZXQgY2hvb3NlID0gZmlyc3RfZWx0XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIE9wdGlvbi5pdGVyIChyZW1vdmVfb25lIHQpIH5mOihmdW4gdiAtPlxuICAgICAgZiB2O1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgYnN0ciA6IEJpZ3N0cmluZy50XG4gIDsgbXV0YWJsZSBwb3MgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludFxuICA7IGluaXQgOiBCaWdzdHJpbmcudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgcmVzaXplIGJ1ZiBtb3JlID1cbiAgbGV0IG1pbl9sZW4gPSBidWYubGVuICsgbW9yZSBpblxuICBsZXQgbmV3X2xlbiA9IG1pbl9sZW4gKyBtaW5fbGVuIGluXG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBuZXdfbGVuIGluXG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zi5ic3RyIH5zcmNfbGVuOmJ1Zi5wb3MgfmRzdDpuZXdfYnVmICgpO1xuICBidWYuYnN0ciA8LSBuZXdfYnVmO1xuICBidWYubGVuIDwtIG5ld19sZW5cbjs7XG4iLCIoKiBTb21lIGNvZGUgdGFrZW4gZnJvbSBJTlJJQSdzIGJ1ZmZlciBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBCaWdzdHJpbmdcbmluY2x1ZGUgQmlnYnVmZmVyX2ludGVybmFsXG5cbmxldCBfX2ludGVybmFsICh0IDogdCkgPSB0XG5sZXQgbGVuZ3RoIHQgPSB0LnBvc1xuXG4oKiB7WyBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQubGVuID09IEJpZ3N0cmluZy5sZW5ndGggdC5ic3RyKSBdfSAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9IG1heCAxIG4gaW5cbiAgbGV0IGJzdHIgPSBCaWdzdHJpbmcuY3JlYXRlIG4gaW5cbiAgeyBic3RyOyBwb3MgPSAwOyBsZW4gPSBuOyBpbml0ID0gYnN0ciB9XG47O1xuXG5sZXQgY29udGVudHMgYnVmID0gQmlnc3RyaW5nLnRvX3N0cmluZyBidWYuYnN0ciB+bGVuOmJ1Zi5wb3NcbmxldCBjb250ZW50c19ieXRlcyBidWYgPSBCaWdzdHJpbmcudG9fYnl0ZXMgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgYmlnX2NvbnRlbnRzIGJ1ZiA9IHN1Ym8gfmxlbjpidWYucG9zIGJ1Zi5ic3RyXG5sZXQgdm9sYXRpbGVfY29udGVudHMgYnVmID0gYnVmLmJzdHJcblxubGV0IGFkZF9jaGFyIGJ1ZiBjID1cbiAgbGV0IHBvcyA9IGJ1Zi5wb3MgaW5cbiAgaWYgcG9zID49IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIDE7XG4gIGJ1Zi5ic3RyLntwb3N9IDwtIGM7XG4gIGJ1Zi5wb3MgPC0gcG9zICsgMVxuOztcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgVGVzdF9ibGl0Lk1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgIGxldCBlcXVhbCA9IENoYXIuZXF1YWxcbiAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gJ2EnIGVsc2UgJ2InXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgICAgYWRkX2NoYXIgdCAnYSdcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHNldCB0IGkgYyA9IEJpZ3N0cmluZy5zZXQgdC5ic3RyIGkgY1xuICAgICAgbGV0IGdldCB0IGkgPSBCaWdzdHJpbmcuZ2V0IHQuYnN0ciBpXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQnl0ZXNcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBCaWdzdHJpbmcuVG9fYnl0ZXMudW5zYWZlX2JsaXQgfnNyYzpzcmMuYnN0ciB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgICAgIDs7XG4gICAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnYnVmZmVyX2ludGVybmFsKSAoVG9fYnl0ZXMpXG5cbmxldCBudGggYnVmIHBvcyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGJ1Zi5wb3MgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5udGhcIiBlbHNlIGJ1Zi5ic3RyLntwb3N9XG47O1xuXG5sZXQgY2xlYXIgYnVmID0gYnVmLnBvcyA8LSAwXG5cbmxldCByZXNldCBidWYgPVxuICBidWYucG9zIDwtIDA7XG4gIGJ1Zi5ic3RyIDwtIGJ1Zi5pbml0O1xuICBidWYubGVuIDwtIEJpZ3N0cmluZy5sZW5ndGggYnVmLmJzdHJcbjs7XG5cbmxldCBhZGRfc3Vic3RyaW5nIGJ1ZiBzcmMgfnBvczpzcmNfcG9zIH5sZW4gPVxuICBpZiBzcmNfcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3M7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdWJieXRlcyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmlnc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdHJpbmcgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J5dGVzIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYnVmZmVyIGJ1Zl9kc3QgYnVmX3NyYyA9XG4gIGxldCBsZW4gPSBidWZfc3JjLnBvcyBpblxuICBsZXQgZHN0X3BvcyA9IGJ1Zl9kc3QucG9zIGluXG4gIGxldCBuZXdfcG9zID0gZHN0X3BvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmX2RzdC5sZW4gdGhlbiByZXNpemUgYnVmX2RzdCBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zl9zcmMuYnN0ciB+c3JjX2xlbjpsZW4gfmRzdDpidWZfZHN0LmJzdHIgfmRzdF9wb3MgKCk7XG4gIGJ1Zl9kc3QucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmluX3Byb3QgdCAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcikgeCA9XG4gIGxldCBuZXdfcG9zID1cbiAgICBtYXRjaCB3cml0ZXIud3JpdGUgdC5ic3RyIH5wb3M6dC5wb3MgeCB3aXRoXG4gICAgfCBwb3MgLT4gcG9zXG4gICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgKCogSXQncyBsaWtla3kgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgaW50ZXJuYWwgYnVmZmVyIGFuZCB0cnkgYWdhaW4uIFRlY2huaWNhbGx5IHdlIGNvdWxkIG1hdGNoIG9uXG4gICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0IGN1c3RvbVxuICAgICAgICAgYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgZG8gcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICBbSW52YWxpZF9hcmd1bWVudF0gb3IgW0ZhaWx1cmVdIGZvciBpbnN0YW5jZS4gKilcbiAgICAgIGxldCBzaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgaWYgdC5wb3MgKyBzaXplID4gdC5sZW4gdGhlbiByZXNpemUgdCBzaXplO1xuICAgICAgd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHhcbiAgaW5cbiAgdC5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKE5vdF9mb3VuZF9zXG4gICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgIFwiQmlnYnVmZmVyLmFkZF9zdWJzdGl0dXRlOiBjYW5ub3QgZmluZCBjbG9zaW5nIGRlbGltaXRlclwiXG4gICAgICAgICAgICAgICAob3BlbmluZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoY2xvc2luZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoc3RhcnQgOiBpbnQpXG4gICAgICAgICAgICAgICBzXSlcbiAgICBlbHNlIGlmIENoYXIuZXF1YWwgcy5baV0gb3BlbmluZ1xuICAgIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIGNsb3NpbmdcbiAgICB0aGVuIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltXG4gIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlbiBsaW1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgfCAnQScgLi4gJ1onXG4gICAgICB8ICcwJyAuLiAnOSdcbiAgICAgIHwgJ18nXG4gICAgICB8ICfpJ1xuICAgICAgfCAn4CdcbiAgICAgIHwgJ+EnXG4gICAgICB8ICfoJ1xuICAgICAgfCAn+SdcbiAgICAgIHwgJ+InXG4gICAgICB8ICfqJ1xuICAgICAgfCAn7idcbiAgICAgIHwgJ/QnXG4gICAgICB8ICf7J1xuICAgICAgfCAn6ydcbiAgICAgIHwgJ+8nXG4gICAgICB8ICf8J1xuICAgICAgfCAn5ydcbiAgICAgIHwgJ8knXG4gICAgICB8ICfAJ1xuICAgICAgfCAnwSdcbiAgICAgIHwgJ8gnXG4gICAgICB8ICfZJ1xuICAgICAgfCAnwidcbiAgICAgIHwgJ8onXG4gICAgICB8ICfOJ1xuICAgICAgfCAn1CdcbiAgICAgIHwgJ9snXG4gICAgICB8ICfLJ1xuICAgICAgfCAnzydcbiAgICAgIHwgJ9wnXG4gICAgICB8ICfHJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgICB8IF8gLT4gaSlcbiAgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgPVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAoJygnIHwgJ3snKSBhcyBjIC0+XG4gICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgIFN0cmluZy5zdWIgcyB+cG9zOm5ld19zdGFydCB+bGVuOihzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpzdGFydCB+bGVuOihzdG9wIC0gc3RhcnQpLCBzdG9wXG47O1xuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBidWYgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW1cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBDaGFyLmVxdWFsIHByZXZpb3VzICdcXFxcJyAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyAoaSArIDEpIGluXG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIChmIGlkZW50KTtcbiAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpKVxuICBpblxuICBzdWJzdCAnICcgMFxuOztcblxubW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICBsZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgPVxuICAgIEZvcm1hdC5tYWtlX2Zvcm1hdHRlciAoZnVuIHMgcG9zIGxlbiAtPiBhZGRfc3Vic3RyaW5nIGJ1ZiBzIH5wb3MgfmxlbikgaWdub3JlXG4gIDs7XG5cbiAgbGV0IGJwcmludGYgYnVmID0gRm9ybWF0LmtmcHJpbnRmIGlnbm9yZSAoZm9ybWF0dGVyX29mX2J1ZmZlciBidWYpXG5lbmRcblxubW9kdWxlIFByaW50ZiA9IHN0cnVjdFxuICBsZXQgYnByaW50ZiBidWYgPSBQcmludGYua3NwcmludGYgKGFkZF9zdHJpbmcgYnVmKVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkJ5dGVzfVtCYXNlLkJ5dGVzXX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuQnl0ZXNcbmVuZFxud2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbZ2VuXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZiBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtieXRlc10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW0J5dGVzLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gcHJvdmlkZVxuICAgIGludGVyZmFjZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZy5GIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJpZ3N0cmluZy5jcmVhdGUgP21heF9tZW1fd2FpdGluZ19nYzpOb25lXG4gICAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQmlnc3RyaW5nLmdldFxuXG4gICAgbW9kdWxlIEJsaXQgPSBNYWtlX3N1YnN0cmluZy5CbGl0XG5cbiAgICBsZXQgYmxpdCA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGFibGVfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgICAgICB2YWwgbGFiZWwgOiBzdHJpbmdcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbmRleCA6IGludFxuICAgICAgICA7IG1pbl9pbmRleCA6IGludFxuICAgICAgICA7IG1heF9pbmRleCA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgY3JlYXRlIGluZGV4IH5taW4gfm1heCA9XG4gICAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgKGluZGV4IDogaW50KSAobWluIDogaW50KSAobWF4IDogaW50KV1cbiAgICAgICAgZWxzZSB7IGluZGV4OyBtaW5faW5kZXggPSBtaW47IG1heF9pbmRleCA9IG1heCB9XG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgRm9yX3NleHBhYmxlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEZvcl9zZXhwYWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgdCA9IE0ubGFiZWwsIHQuaW5kZXgsIFwib2ZcIiwgdC5taW5faW5kZXgsIFwidG9cIiwgdC5tYXhfaW5kZXhcblxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlIChsYWJlbCwgaW5kZXgsIG9mXywgbWluLCB0b18sIG1heCkgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgbGFiZWwgTS5sYWJlbFxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgb2ZfIFwib2ZcIlxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgdG9fIFwidG9cIlxuICAgICAgICAgICAgICB0aGVuIGNyZWF0ZSBpbmRleCB+bWluIH5tYXhcbiAgICAgICAgICAgICAgZWxzZSBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgc2V4cCBmb3IgaW5kZXhcIiB+bGFiZWw6TS5sYWJlbF1cbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgUyA9IEJvdW5kZWRfaW5kZXhfaW50Zi5TXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBTdGFibGUuVjEuTWFrZSAoTSlcbiAgZW5kXG5cbiAgb3BlbiBTdGFibGUuVjFcblxuICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjcmVhdGUgPSBTdGFibGUuVjEuY3JlYXRlXG5cbiAgbGV0IGNyZWF0ZV9hbGwgfm1pbiB+bWF4ID1cbiAgICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6bWluIH5mOihmdW4gaW5kZXggLT5cbiAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNyZWF0ZSBpbmRleCB+bWluIH5tYXgsIGluZGV4ICsgMSkpXG4gICAgfD4gU2VxdWVuY2UudG9fbGlzdFxuICA7O1xuXG4gIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICBsZXQgbWF4X2luZGV4IHQgPSB0Lm1heF9pbmRleFxuICBsZXQgbWluX2luZGV4IHQgPSB0Lm1pbl9pbmRleFxuICBsZXQgemVyb19iYXNlZF9pbmRleCB0ID0gaW5kZXggdCAtIG1pbl9pbmRleCB0XG4gIGxldCBudW1faW5kZXhlcyB0ID0gbWF4X2luZGV4IHQgLSBtaW5faW5kZXggdCArIDFcblxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5pbmNsdWRlIENvbW1hbmRcblxubW9kdWxlIEFyZ190eXBlID0gc3RydWN0XG4gIGluY2x1ZGUgQXJnX3R5cGVcblxuICBtb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeHBvcnRcblxuICAgIGxldCBkYXRlID0gY3JlYXRlIERhdGUub2Zfc3RyaW5nXG4gICAgbGV0IHBlcmNlbnQgPSBjcmVhdGUgUGVyY2VudC5vZl9zdHJpbmdcbiAgICBsZXQgaG9zdF9hbmRfcG9ydCA9IGNyZWF0ZSBIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgUGFyYW0gOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBQYXJhbSB3aXRoIG1vZHVsZSBBcmdfdHlwZSA6PSBQYXJhbS5BcmdfdHlwZVxuICAgIGVuZClcblxuICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuZW5kXG5cbm1vZHVsZSBTcGVjID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNwZWMgOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBTcGVjIHdpdGggbW9kdWxlIEFyZ190eXBlIDo9IFNwZWMuQXJnX3R5cGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIExldF9zeW50YXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IFBhcmFtXG4gIGVuZFxuZW5kXG4iLCIoKiogQ29yZSBncmVhdGx5IGV4cGFuZHMgdGhlIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGluIEJhc2Ugd2hpbGUgc3RpbGwgcmVtYWluaW5nXG4gICAgcGxhdGZvcm0tYWdub3N0aWMuICBDb3JlIGNoYW5nZXMgbW9yZSBmcmVxdWVudGx5IChpLmUuLCBpcyBsZXNzIHN0YWJsZSkgdGhhbiBCYXNlLlxuXG4gICAgU29tZSBtb2R1bGVzIGFyZSBtZXJlIGV4dGVuc2lvbnMgb2YgdGhlaXIgY291bnRlcnBhcnRzIGluIEJhc2UsIHVzdWFsbHkgYWRkaW5nIGdlbmVyaWNcbiAgICBmdW5jdGlvbmFsaXR5IGJ5IGluY2x1ZGluZyBmdW5jdG9ycyB0aGF0IG1ha2UgdGhlbSBiaW5hYmxlLCBjb21wYXJhYmxlLCBzZXhwYWJsZSxcbiAgICBibGl0YWJsZSwgZXRjLiAgVGhlIGJ1bGsgb2YgQ29yZSwgdGhvdWdoLCBpcyBtb2R1bGVzIHByb3ZpZGluZyBlbnRpcmVseSBuZXdcbiAgICBmdW5jdGlvbmFsaXR5LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFyZyA9IEFyZ1xubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJhZyA9IEJhZ1xubW9kdWxlIEJpZ2J1ZmZlciA9IEJpZ2J1ZmZlclxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xubW9kdWxlIEJpZ3N1YnN0cmluZyA9IEJpZ3N1YnN0cmluZ1xubW9kdWxlIEJpbl9wcm90ID0gQ29yZV9iaW5fcHJvdFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZ1xubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCb3VuZGVkX2luZGV4ID0gQm91bmRlZF9pbmRleFxubW9kdWxlIEJ1ZmZlciA9IEJhc2UuQnVmZmVyXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHNcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5tb2R1bGUgQ2FtbCA9IENhbWwgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTAxXSB1c2UgU3RkbGliIGluc3RlYWQgb2YgQ2FtbFwiXVxubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tbWFuZCA9IENvbW1hbmRfaW50ZXJuYWxcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBDb21wYXJpc29uc1xubW9kdWxlIENvbnRhaW5lciA9IENvbnRhaW5lclxubW9kdWxlIENvbnRhaW5lcl9pbnRmID0gQ29udGFpbmVyX2ludGZcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfc3RhYmxlID0gU3RhYmxlXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDVdIFVzZSBbQ29yZV9zdGFibGVdIC0tIFtDb3JlX2tlcm5lbF0gd2FzIHJlbmFtZWQgYXMgW0NvcmVdXCJdXG5cbm1vZHVsZSBDb3JlX3N0YWJsZSA9IFN0YWJsZVxubW9kdWxlIERhdGUgPSBEYXRlXG5tb2R1bGUgRGF5X29mX3dlZWsgPSBEYXlfb2Zfd2Vla1xubW9kdWxlIERlYnVnID0gRGVidWdcbm1vZHVsZSBEZXF1ZSA9IERlcXVlXG5tb2R1bGUgRGVyaXZpbmdfaGFzaCA9IERlcml2aW5nX2hhc2hcbm1vZHVsZSBEaWdlc3QgPSBNZDUgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE3LTA1XSBVc2UgTWQ1IGluc3RlYWQuXCJdXG5tb2R1bGUgRG91Ymx5X2xpbmtlZCA9IERvdWJseV9saW5rZWRcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gPSBTdGRsaWIuRXBoZW1lcm9uXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBCYXNlLkV4blxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZVxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvblxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBGcXVldWUgPSBGcXVldWVcbm1vZHVsZSBHYyA9IEdjXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZVxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBIYXNodGJsX2ludGYgPSBIYXNodGJsX2ludGZcbm1vZHVsZSBIZWFwX2Jsb2NrID0gSGVhcF9ibG9ja1xubW9kdWxlIEhleGR1bXAgPSBIZXhkdW1wXG5tb2R1bGUgSGV4ZHVtcF9pbnRmID0gSGV4ZHVtcF9pbnRmXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnRcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uID0gSW1tZWRpYXRlX29wdGlvblxubW9kdWxlIEltbWVkaWF0ZV9vcHRpb25faW50ZiA9IEltbWVkaWF0ZV9vcHRpb25faW50ZlxubW9kdWxlIEluX2NoYW5uZWwgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X2ludGYgPSBJbnRfaW50ZlxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludGVyZmFjZXMgPSBJbnRlcmZhY2VzXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1hcF9pbnRmID0gTWFwX2ludGZcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTWQ1ID0gTWQ1XG5tb2R1bGUgTWVtbyA9IE1lbW9cbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTW9udGggPSBNb250aFxuXG5tb2R1bGUgTXV0ZXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDJdIFVzZSBbRXJyb3JfY2hlY2tpbmdfbXV0ZXhdIG9yIFtDYW1sX3RocmVhZHMuTXV0ZXhdXCJdXG5cbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb19wb2x5bW9ycGhpY19jb21wYXJlID0gTm9fcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT25seV9pbl90ZXN0ID0gT25seV9pbl90ZXN0XG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gT3B0aW9uYWxfc3ludGF4XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4X2ludGYgPSBPcHRpb25hbF9zeW50YXhfaW50ZlxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBPdXRfY2hhbm5lbCA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGVyY2VudCA9IFBlcmNlbnRcbm1vZHVsZSBQZXJtcyA9IFBlcm1zXG5tb2R1bGUgUGlkID0gUGlkXG5tb2R1bGUgUG9seSA9IFBvbHlcblxubW9kdWxlIFBvcGNvdW50ID0gQmFzZS5Qb3Bjb3VudFxuW0BAd2FybmluZyBcIi0zXCJdXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IFByZXR0eV9wcmludGVyXG5tb2R1bGUgUHJpbnRleGMgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBRdWlja2NoZWNrID0gUXVpY2tjaGVja1xubW9kdWxlIFF1aWNrY2hlY2tfaW50ZiA9IFF1aWNrY2hlY2tfaW50ZlxubW9kdWxlIFF1aWNrY2hlY2thYmxlID0gUXVpY2tjaGVja2FibGVcbm1vZHVsZSBSYW5kb20gPSBCYXNlLlJhbmRvbVxubW9kdWxlIFJlZiA9IFJlZlxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdFxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RseV9jb21wYXJhYmxlXG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNldF9pbnRmID0gU2V0X2ludGZcbm1vZHVsZSBTZXRfb25jZSA9IFNldF9vbmNlXG5tb2R1bGUgU2V4cF9tYXliZSA9IFNleHAuU2V4cF9tYXliZVxuXG5tb2R1bGUgU2V4cCA9IFNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlXG5tb2R1bGUgU2lnbiA9IFNpZ25cbm1vZHVsZSBTaWduYWwgPSBTaWduYWxcbm1vZHVsZSBTaWduX29yX25hbiA9IFNpZ25fb3JfbmFuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvblxubW9kdWxlIFNwbGl0dGFibGVfcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb21cbm1vZHVsZSBTdGFibGVfY29tcGFyYWJsZSA9IFN0YWJsZV9jb21wYXJhYmxlXG5tb2R1bGUgU3RhYmxlX3VuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3Rcbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gU3RyaW5nYWJsZVxubW9kdWxlIFN1YnN0cmluZyA9IFN1YnN0cmluZ1xubW9kdWxlIFN1YnN0cmluZ19pbnRmID0gU3Vic3RyaW5nX2ludGZcbm1vZHVsZSBTeXMgPSBDb3JlX3N5c1xuXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW0NvcmVfdGhyZWFkXSBvciBbQ2FtbF90aHJlYWRzLlRocmVhZF1cIl1cblxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTFdIFVzZSBbVGltZV9mbG9hdF0gb3IgW1RpbWVfZmxvYXRfdW5peF0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgVGltZV9mbG9hdCA9IFRpbWVfZmxvYXRcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc1xubW9kdWxlIFR1cGxlID0gVHVwbGVcbm1vZHVsZSBUdXBsZTIgPSBUdXBsZS5UMlxubW9kdWxlIFR1cGxlMyA9IFR1cGxlLlQzXG5tb2R1bGUgVHlwZV9lcXVhbCA9IFR5cGVfZXF1YWxcbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IFR5cGVfaW1tZWRpYWN5XG5tb2R1bGUgVWNoYXIgPSBVY2hhclxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pb25fZmluZCA9IFVuaW9uX2ZpbmRcbm1vZHVsZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWRcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVuaXRfb2ZfdGltZSA9IFVuaXRfb2ZfdGltZVxubW9kdWxlIFVuaXZfbWFwID0gVW5pdl9tYXBcblxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMjAtMDNdIENvcmUgc2hhZG93cyBVbml4LiBVc2UgQ29yZV91bml4LCB3aGljaCBvdmVycmlkZXMgc29tZSBvZiBVbml4J3MgXFxcbiAgIGJlaGF2aW9yLiBJZiBuZWNlc3NhcnksIFVuaXggaXMgYXZhaWxhYmxlIGFuZCB1bnNoYWRvd2VkIGFzIENhbWxfdW5peC5cIl1cblxubW9kdWxlIFZhbGlkYXRlID0gVmFsaWRhdGVcbm1vZHVsZSBWYWxpZGF0ZWQgPSBWYWxpZGF0ZWRcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdlYWsgPSBXZWFrXG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBXaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IFdvcmRfc2l6ZVxuXG5tb2R1bGUgdHlwZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWQuSWRcblxuaW5jbHVkZSBUICgqKiBAb3BlbiAqKVxuXG5pbmNsdWRlIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBOb3RfZm91bmRcblxuKCoqIHsyIFRvcC1sZXZlbCB2YWx1ZXN9ICopXG5cbmV4dGVybmFsIHBoeXNfZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcblxudHlwZSAnYSBfbWF5YmVfYm91bmQgPSAnYSBNYXliZV9ib3VuZC50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuXG5sZXQgYW1fcnVubmluZ190ZXN0ID0gYW1fcnVubmluZ190ZXN0XG5sZXQgZG9lc19yYWlzZSA9IEV4bi5kb2VzX3JhaXNlXG5sZXQgc2VjID0gVGltZV9mbG9hdC5TcGFuLm9mX3NlY1xubGV0ICggXi8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG4oKiogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgIFtDb3JlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQ29yZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgIHRoZW4gdGhlIHNpZGUgZWZmZWN0cyBtaWdodCBub3QgYmUgcnVuIGluIHRoYXQgcHJvZ3JhbS4gIFRoaXMgd2lsbCBydW4gYXMgbG9uZyBhcyB0aGVcbiAgICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gQ29yZTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgIFtDb3JlLkJvb2xdLCBmb3IgZXhhbXBsZSwgaXMgbm90IHN1ZmZpY2llbnQuICopXG5sZXQgKCkgPSBFeG4uaW5pdGlhbGl6ZV9tb2R1bGUgKClcblxuKCoqIFRvIGJlIHVzZWQgaW4gaW1wbGVtZW50aW5nIENvcmUsIGJ1dCBub3QgYnkgZW5kIHVzZXJzLiAqKVxubW9kdWxlIENvcmVfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGlnaXRfc3RyaW5nX2hlbHBlcnMgPSBEaWdpdF9zdHJpbmdfaGVscGVyc1xuICBtb2R1bGUgVGltZV96b25lID0gWm9uZVxuICBtb2R1bGUgT2ZkYXlfaGVscGVycyA9IE9mZGF5X2hlbHBlcnNcbiAgbW9kdWxlIFNwYW5fZmxvYXQgPSBTcGFuX2Zsb2F0XG5cbiAgbW9kdWxlIEJpZ2J1ZmZlcl9pbnRlcm5hbCA9IEJpZ2J1ZmZlcl9pbnRlcm5hbFxuICBtb2R1bGUgU3RhYmxlX2ludGVybmFsID0gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBTdGRfaW50ZXJuYWwgPSBTdGRfaW50ZXJuYWxcblxuICBtb2R1bGUgVGltZV9uc19hbHRlcm5hdGVfc2V4cCA9IFRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmVuZFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfcHJpdmF0ZSA9IENvcmVfcHJpdmF0ZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfcHJpdmF0ZV0gLS0gW0NvcmVfa2VybmVsXSB3YXMgcmVuYW1lZCBhcyBbQ29yZV1cIl1cbiIsImluY2x1ZGUgQ29tbWFuZC5TaGFwZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4hIFN0YWJsZV9pbnRlcm5hbFxuICBvcGVuISBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuXG4gIG1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICAgIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5HcmFtbWFyLlYxXG5cbiAgICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuQW5vbnMuR3JhbW1hci5WMS50ID1cbiAgICAgICAgICB8IFplcm9cbiAgICAgICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgICAgICB8IE1hbnkgb2YgdFxuICAgICAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgICBbJWV4cGVjdCB7fCBhMTdmZDM0ZWMyMTNlNTA4ZGI0NTBmNjQ2OWY3ZmU5OSB8fV1cbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLlYyXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLlYyLnQgPVxuICAgICAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgICAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci5WMS50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAwODFkOWVjMTY3OTAzZjhmOGM0OWNiZjhlM2ZiM2E2NiB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuRmxhZ19pbmZvLlYxXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkZsYWdfaW5mby5WMS50ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGJkOGQ2ZmI3YTY2MmQyYzBiNWUwZDIwMjZjNmQyZDIxIHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5CYXNlX2luZm8uVjJcblxuICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuQmFzZV9pbmZvLlYyLnQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgYW5vbnMgOiBBbm9ucy5WMi50XG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDhmYWFjMWU4ZDlkZWIwYmFhYTU2YWM4ZWJmODViNDk4IHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIGEgPSBEdW1teV90eXBlX2JlY2F1c2Vfd2VfY2Fubm90X2RpZ2VzdF90eXBlX2NvbnN0cnVjdG9yc19vbmx5X2NvbmNyZXRlX3R5cGVzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkdyb3VwX2luZm8uVjJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgQ29tbWFuZC5TaGFwZS5TdGFibGUuR3JvdXBfaW5mby5WMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LlN0YWJsZS5WMS50IExhenkuU3RhYmxlLlYxLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBhIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAyY2MzZWViNThkMTJkOGZlNDQwMDAwOWU1OTJkNzgyNyB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuRXhlY19pbmZvLlYzXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkV4ZWNfaW5mby5WMy50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgYzBjODI1NmU5MjM4Y2RkOGYyZWMxZjg3ODVlMDJhZTAgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkZ1bGx5X2ZvcmNlZC5WMVxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GdWxseV9mb3JjZWQuVjEudCA9XG4gICAgICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnQgKiB0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA5ODExNTRlZjM5MTk0MzdjNmM4MjI2MTk4ODI4NDFkNCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFRva2VuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJZGVudFxuICAgIHwgRnVuY3Rpb25cbiAgICB8IEF0a2V5d29yZFxuICAgIHwgSGFzaFxuICAgIHwgU3RyaW5nXG4gICAgfCBVcmlcbiAgICB8IERlbGltXG4gICAgfCBOdW1iZXJcbiAgICB8IFBlcmNlbnRhZ2VcbiAgICB8IERpbWVuc2lvblxuICAgIHwgV2hpdGVfc3BhY2VcbiAgICB8IENvbG9uXG4gICAgfCBTZW1pX2NvbG9uXG4gICAgfCBDb21tYVxuICAgIHwgTGJyYWNrZXRcbiAgICB8IFJicmFja2V0XG4gICAgfCBMcGFyZW5cbiAgICB8IFJwYXJlblxuICAgIHwgTGN1cmx5XG4gICAgfCBSY3VybHlcbiAgICB8IENvbW1lbnRcbiAgICB8IEVvZlxuICAgIHwgRXJyb3JcbiAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyAoKiBzdGFydCBvZiB0aGUgY3VycmVudCB0b2tlbiAqKVxuICAgIG11dGFibGUgbGVuIDogaW50XG4gIDsgKCogbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuICopXG4gICAgbXV0YWJsZSBjdXJyZW50IDogVG9rZW4udFxuICB9XG5cbnR5cGUgbWFyayA9IE1hcmsgb2YgaW50IFtAQHVuYm94ZWRdXG5cbmxldCBtYXJrIHQgPSBNYXJrIHQubGVuXG5sZXQgc291cmNlIHQgPSB0LnNcbmxldCBuZXh0X3BvcyB0ID0gdC5vZmYgKyB0LmxlblxubGV0IGlzX25leHRfZW9mIHQgPSBuZXh0X3BvcyB0ID49IFN0cmluZy5sZW5ndGggdC5zXG5sZXQgbmV4dF9jaGFyIHQgPSB0LnMuW25leHRfcG9zIHRdXG5sZXQgcmVzZXQgdCAoTWFyayB2KSA9IHQubGVuIDwtIHZcbmxldCBjb25zdW1lXzEgdCA9IHQubGVuIDwtIHQubGVuICsgMVxubGV0IGNvbnN1bWVfbiB0IG4gPSB0LmxlbiA8LSB0LmxlbiArIG5cblxubGV0IG9uZV9jaGFyX3Rva2VuIHQgdG9rID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBjb25zdW1lXzEgdDtcbiAgdC5jdXJyZW50IDwtIHRva1xuOztcblxuZXhjZXB0aW9uIEVycm9yX2hhcHBlbmVkXG5cbmxldCBlcnJvciB0ID1cbiAgdC5jdXJyZW50IDwtIEVycm9yO1xuICByYWlzZSBFcnJvcl9oYXBwZW5lZFxuOztcblxubGV0IGFjY2VwdCB0IGYgPVxuICBpZiAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpXG4gIHRoZW4gKFxuICAgIGNvbnN1bWVfMSB0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCBhY2NlcHRfY2hhciB0IGNoID0gYWNjZXB0IHQgKENoYXIuZXF1YWwgY2gpXG5cbmxldCBhY2NlcHRfc3RyaW5nIHQgc3RyID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPSAwXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgcG9zID0gbmV4dF9wb3MgdCBpblxuICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBwb3MgKyBzdHJfbGVuID4gU3RyaW5nLmxlbmd0aCB0LnNcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHQucyB+cG9zIH5zdWJzdHJpbmc6c3RyXG4gICAgdGhlbiAoXG4gICAgICBjb25zdW1lX24gdCBzdHJfbGVuO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKVxuOztcblxubGV0IGV4cGVjdCB0IGYgPSBpZiBhY2NlcHQgdCBmIHRoZW4gKCkgZWxzZSBlcnJvciB0XG5sZXQgZXhwZWN0X2NoYXIgdCBjaCA9IGV4cGVjdCB0IChDaGFyLmVxdWFsIGNoKVxuXG5sZXQgbWFueSB0IGYgPVxuICB3aGlsZSAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpIGRvXG4gICAgY29uc3VtZV8xIHRcbiAgZG9uZVxuOztcblxubGV0IG1hbnkxIHQgZiA9XG4gIGV4cGVjdCB0IGY7XG4gIG1hbnkgdCBmXG47O1xuXG5sZXQgcGx1c19vcl9taW51cyA9IGZ1bmN0aW9uXG4gIHwgJy0nIHwgJysnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgbm1zdGFydCA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBubWNoYXIgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyB8ICctJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlkZW50IHQgPVxuICBpZiBhY2NlcHRfY2hhciB0ICctJ1xuICB0aGVuXG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLSdcbiAgICB0aGVuIG1hbnkgdCBubWNoYXJcbiAgICBlbHNlIChcbiAgICAgIGV4cGVjdCB0IG5tc3RhcnQ7XG4gICAgICBtYW55IHQgbm1jaGFyKVxuICBlbHNlIChcbiAgICBleHBlY3QgdCBubXN0YXJ0O1xuICAgIG1hbnkgdCBubWNoYXIpXG47O1xuXG5sZXQgaWRlbnRfb3JfZnVuY3Rpb24gdCA9XG4gIGlkZW50IHQ7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJygnIHRoZW4gdC5jdXJyZW50IDwtIEZ1bmN0aW9uIGVsc2UgdC5jdXJyZW50IDwtIElkZW50XG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXG4nIHwgJ1xceDBjJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHF1b3RlZF9zdHJpbmcnIHQgfnF1b3RlID1cbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgcXVvdGUpO1xuICBjb25zdW1lXzEgdDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICB8ICdcXG4nIHwgJ1xccicgfCAnXFx4MGMnIHwgJ1xcXFwnIC0+IGZhbHNlXG4gICAgICB8IGMgd2hlbiBDaGFyLmVxdWFsIGMgcXVvdGUgLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICBpZiBhY2NlcHRfY2hhciB0ICdcXFxcJ1xuICAgIHRoZW5cbiAgICAgIGlmIGFjY2VwdF9jaGFyIHQgcXVvdGVcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICAgICAgfCAnXFxuJyB8ICdcXHgwYycgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJ1xcbicgOiBib29sKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgX2MgLT5cbiAgICAgICAgICAoKiBIYW5kbGUgdGhlIFwiZXNjYXBlXCIgcnVsZTpcbiAgICAgICAgICAgICB7dlxuICAgICAgICAgICAgICAgIHVuaWNvZGU6IFxcXFxbMC05YS1mXXsxLDZ9KFxcclxcbnxbIFxcblxcclxcdFxcZl0pP1xuICAgICAgICAgICAgICAgIGVzY2FwZSA6IHt1bmljb2RlfXxcXFxcW15cXG5cXHJcXGYwLTlhLWZdXG4gICAgICAgICAgICAgIHZ9XG4gICAgICAgICAgKilcbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpO1xuICBleHBlY3RfY2hhciB0IHF1b3RlXG47O1xuXG5sZXQgc3RhcnRfbnVtIHQgPVxuICBsZXQgY3VyID0gbWFyayB0IGluXG4gIGxldCBiID1cbiAgICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJy4nIDogYm9vbCk7XG4gICAgYWNjZXB0IHQgQ2hhci5pc19kaWdpdFxuICBpblxuICByZXNldCB0IGN1cjtcbiAgYlxuOztcblxubGV0IHN0YXJ0X2lkZW50IH5wcmVmaXggdCA9XG4gIGxldCBjdXIgPSBtYXJrIHQgaW5cbiAgbGV0IGIgPVxuICAgIGFjY2VwdF9zdHJpbmcgdCBwcmVmaXhcbiAgICAmJlxuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy0nIHRoZW4gYWNjZXB0X2NoYXIgdCAnLScgfHwgYWNjZXB0IHQgbm1zdGFydCBlbHNlIGFjY2VwdCB0IG5tc3RhcnRcbiAgaW5cbiAgcmVzZXQgdCBjdXI7XG4gIGJcbjs7XG5cbmxldCBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBxdW90ZWRfc3RyaW5nJyB0IH5xdW90ZTtcbiAgdC5jdXJyZW50IDwtIFN0cmluZ1xuOztcblxubGV0IGV4cG9uZW50aWFsX3BhcnQgdCA9XG4gIGxldCBtYXJrID0gbWFyayB0IGluXG4gIGlmIGFjY2VwdCB0IChmdW5jdGlvblxuICAgIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW5cbiAgICBpZiBhY2NlcHQgdCBwbHVzX29yX21pbnVzXG4gICAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgICBlbHNlIGlmIGFjY2VwdCB0IENoYXIuaXNfZGlnaXRcbiAgICB0aGVuIG1hbnkgdCBDaGFyLmlzX2RpZ2l0XG4gICAgZWxzZVxuICAgICAgKCogQmFja3RyYWNrIGlmIHRoZXJlIGFyZSBubyBkaWdpdHMgb3Igc2lnbnMgYWZ0ZXIgdGhlICdlJyBiZWNhdXNlXG4gICAgICAgICBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSAnZScgd2FzIGFjdHVhbGx5IGEgcGFydCBvZiBzb21ldGhpbmcgZWxzZS4gRm9yXG4gICAgICAgICBleGFtcGxlLCB0aGUgJ2UnIGNvdWxkIGJlIHBhcnQgb2YgYW4gJ2VtJyBvciAnZW4nIGRpbWVuc2lvbiBpbnN0ZWFkXG4gICAgICAgICBvZiBiZWdpbm5pbmcgdGhlIGV4cG9uZW50aWFsIHBhcnQgb2YgYSBzY2llbnRpZmljIG5vdGF0aW9uIG51bWJlci5cblxuICAgICAgICAgRXhhbXBsZTogMS4yZTMgaXMgc2NpZW50aWZpYyBub3RhdGlvbiwgYnV0IDEuMmVtIGlzIGEgbnVtYmVyIHdpdGggYVxuICAgICAgICAgZGltZW5zaW9uLiAqKVxuICAgICAgcmVzZXQgdCBtYXJrXG47O1xuXG5sZXQgbnVtIHQgPVxuICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnLidcbiAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgZWxzZSAoXG4gICAgbWFueTEgdCBDaGFyLmlzX2RpZ2l0O1xuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy4nIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0KTtcbiAgZXhwb25lbnRpYWxfcGFydCB0XG47O1xuXG5sZXQgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIG51bSB0O1xuICBpZiBhY2NlcHRfY2hhciB0ICclJ1xuICB0aGVuIHQuY3VycmVudCA8LSBQZXJjZW50YWdlXG4gIGVsc2UgaWYgc3RhcnRfaWRlbnQgfnByZWZpeDpcIlwiIHRcbiAgdGhlbiAoXG4gICAgaWRlbnQgdDtcbiAgICB0LmN1cnJlbnQgPC0gRGltZW5zaW9uKVxuICBlbHNlIHQuY3VycmVudCA8LSBOdW1iZXJcbjs7XG5cbmxldCBoYXNoX29yX2RlbGltIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICcjJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZiBhY2NlcHQgdCBubWNoYXJcbiAgdGhlbiAoXG4gICAgbWFueTEgdCBubWNoYXI7XG4gICAgdC5jdXJyZW50IDwtIEhhc2gpXG4gIGVsc2UgdC5jdXJyZW50IDwtIERlbGltXG47O1xuXG5sZXQgYXRrZXl3b3JkIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdAJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZGVudCB0O1xuICB0LmN1cnJlbnQgPC0gQXRrZXl3b3JkXG47O1xuXG5sZXQgdXJpX29yX2lkZW50X29yX2Z1bmN0aW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICd1Jyk7XG4gIGlmIGFjY2VwdF9zdHJpbmcgdCBcInVybChcIlxuICB0aGVuIChcbiAgICBsZXQgbSA9IG1hcmsgdCBpblxuICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgIGlmIENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXCInIHx8IENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXFwnJ1xuICAgIHRoZW4gKFxuICAgICAgcmVzZXQgdCBtO1xuICAgICAgdC5jdXJyZW50IDwtIEZ1bmN0aW9uKVxuICAgIGVsc2UgKFxuICAgICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgICB8ICcpJyB8ICcgJyAtPiBmYWxzZVxuICAgICAgICB8ICdcXCcnIHwgJ1wiJyB8ICcoJyAtPiBlcnJvciB0XG4gICAgICAgIHwgYyB3aGVuIENoYXIuaXNfcHJpbnQgYyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBlcnJvciB0KTtcbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgZXhwZWN0X2NoYXIgdCAnKSc7XG4gICAgICB0LmN1cnJlbnQgPC0gVXJpKSlcbiAgZWxzZSBpZGVudF9vcl9mdW5jdGlvbiB0XG47O1xuXG5sZXQgY29tbWVudF9vcl9kZWxpbSB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBpZiBhY2NlcHRfc3RyaW5nIHQgXCIvKlwiXG4gIHRoZW4gKFxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyonIC0+IGZhbHNlXG4gICAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICAgIGlmIGFjY2VwdF9zdHJpbmcgdCBcIiovXCJcbiAgICAgIHRoZW4gdC5jdXJyZW50IDwtIENvbW1lbnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0X2NoYXIgdCAnKidcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSBlcnJvciB0XG4gICAgaW5cbiAgICBsb29wICgpKVxuICBlbHNlIChcbiAgICBleHBlY3RfY2hhciB0ICcvJztcbiAgICB0LmN1cnJlbnQgPC0gRGVsaW0pXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgbGV0IG5ld19vZmYgPSBuZXh0X3BvcyB0IGluXG4gIHQub2ZmIDwtIG5ld19vZmY7XG4gIHQubGVuIDwtIDA7XG4gIGlmIGlzX25leHRfZW9mIHRcbiAgdGhlbiB0LmN1cnJlbnQgPC0gRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICB8IGMgd2hlbiBpc193aGl0ZXNwYWNlIGMgLT5cbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgdC5jdXJyZW50IDwtIFdoaXRlX3NwYWNlXG4gICAgfCAnOicgLT4gb25lX2NoYXJfdG9rZW4gdCBDb2xvblxuICAgIHwgJzsnIC0+IG9uZV9jaGFyX3Rva2VuIHQgU2VtaV9jb2xvblxuICAgIHwgJ3snIC0+IG9uZV9jaGFyX3Rva2VuIHQgTGN1cmx5XG4gICAgfCAnfScgLT4gb25lX2NoYXJfdG9rZW4gdCBSY3VybHlcbiAgICB8ICdbJyAtPiBvbmVfY2hhcl90b2tlbiB0IExicmFja2V0XG4gICAgfCAnXScgLT4gb25lX2NoYXJfdG9rZW4gdCBSYnJhY2tldFxuICAgIHwgJygnIC0+IG9uZV9jaGFyX3Rva2VuIHQgTHBhcmVuXG4gICAgfCAnKScgLT4gb25lX2NoYXJfdG9rZW4gdCBScGFyZW5cbiAgICB8ICcsJyAtPiBvbmVfY2hhcl90b2tlbiB0IENvbW1hXG4gICAgfCAoJ1xcJycgfCAnXCInKSBhcyBxdW90ZSAtPiBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlXG4gICAgfCAoJzAnIC4uICc5JyB8ICcuJyB8ICcrJyB8ICctJykgd2hlbiBzdGFydF9udW0gdCAtPlxuICAgICAgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHRcbiAgICB8ICcvJyAtPiBjb21tZW50X29yX2RlbGltIHRcbiAgICB8ICcjJyAtPiBoYXNoX29yX2RlbGltIHRcbiAgICB8ICdAJyB3aGVuIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJAXCIgdCAtPiBhdGtleXdvcmQgdFxuICAgIHwgJ3UnIC0+IHVyaV9vcl9pZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgfCBfIC0+XG4gICAgICBpZiBzdGFydF9pZGVudCB+cHJlZml4OlwiXCIgdFxuICAgICAgdGhlbiBpZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICgqIHRoaXMgaXMgd2VpcmQgYnV0IHRoZSBzcGVjIGlzIHdlaXJkICopXG4gICAgICAgIHQuY3VycmVudCA8LSBEZWxpbSkpXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgKCogTWFrZSBzdXJlIHdlIGFyZSBpZGVtcG90ZW50IHdoZW4gd2UgZ2V0IGludG8gdGhlIGVycm9yIHN0YXRlICopXG4gIGlmIFRva2VuLmVxdWFsIHQuY3VycmVudCBFcnJvclxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIHRyeSBuZXh0IHQgd2l0aFxuICAgIHwgRXJyb3JfaGFwcGVuZWQgLT4gKCkpXG47O1xuXG5sZXQgY3JlYXRlIHMgPVxuICAoKiBjdXJyZW50IGlzIGR1bW15IGFuZCB3aWxsIGJlIHNldCBieSBjYWxsIHRvIG5leHQgKilcbiAgbGV0IHQgPSB7IHM7IG9mZiA9IDA7IGxlbiA9IDA7IGN1cnJlbnQgPSBXaGl0ZV9zcGFjZSB9IGluXG4gIG5leHQgdDtcbiAgdFxuOztcblxubGV0IHNsaWNlIHQgPSB0Lm9mZiwgdC5sZW5cbmxldCBjdXJyZW50IHQgPSB0LmN1cnJlbnRcblxubGV0IGN1cnJlbnRfdGV4dCB0ID1cbiAgaWYgVG9rZW4uZXF1YWwgdC5jdXJyZW50IEVvZlxuICB0aGVuIFwiXCJcbiAgZWxzZSAoXG4gICAgbGV0IHBvcywgbGVuID0gc2xpY2UgdCBpblxuICAgIFN0cmluZy5zdWIgdC5zIH5wb3Mgfmxlbilcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgdCA9IGNyZWF0ZSBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIGxldCBzdGFydCwgbGVuID0gc2xpY2UgdCBpblxuICAgIGxldCBhY2MgPSAoY3VycmVudCB0LCBzdGFydCwgbGVuKSA6OiBhY2MgaW5cbiAgICBpZiBUb2tlbi5lcXVhbCAoY3VycmVudCB0KSBFb2YgfHwgVG9rZW4uZXF1YWwgKGN1cnJlbnQgdCkgRXJyb3JcbiAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbmV4dCB0O1xuICAgICAgbG9vcCBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCB0ZXN0IHMgPVxuICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAoU2V4cC50b19zdHJpbmdfbWFjaCAoWyVzZXhwX29mOiAoVG9rZW4udCAqIGludCAqIGludCkgbGlzdF0gKHRvX2xpc3QgcykpKVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJlb2ZcIiA9XG4gICAgICB0ZXN0IFwiXCI7XG4gICAgICBbJWV4cGVjdCB7fCgoRW9mIDAgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInNpbXBsZV90b2tlbnNcIiA9XG4gICAgICB0ZXN0IFwiKSh7fVtdOzpcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoUnBhcmVuIDAgMSkoTHBhcmVuIDEgMSkoTGN1cmx5IDIgMSkoUmN1cmx5IDMgMSkoTGJyYWNrZXQgNCAxKShSYnJhY2tldCA1IDEpKFNlbWlfY29sb24gNiAxKShDb2xvbiA3IDEpKEVvZiA4IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaWRlbnRcIiA9XG4gICAgICB0ZXN0IFwiLWZvby1iYXI6IGJhelwiO1xuICAgICAgdGVzdCBcIi1mb28tYmFyKFwiO1xuICAgICAgdGVzdCBcIkBmb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC1mb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC0tZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIi0tdmFyXCI7XG4gICAgICB0ZXN0IFwiUkdCQVwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgOCkoQ29sb24gOCAxKShXaGl0ZV9zcGFjZSA5IDEpKElkZW50IDEwIDMpKEVvZiAxMyAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgOSkoRW9mIDkgMCkpXG4gICAgKChBdGtleXdvcmQgMCA4KShFb2YgOCAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDkpKEVvZiA5IDApKVxuICAgICgoQXRrZXl3b3JkIDAgMTApKEVvZiAxMCAwKSlcbiAgICAoKElkZW50IDAgNSkoRW9mIDUgMCkpXG4gICAgKChJZGVudCAwIDQpKEVvZiA0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwid2hpdGVzcGFjZVwiID1cbiAgICAgIHRlc3QgXCIgIFwiO1xuICAgICAgWyVleHBlY3Qge3woKFdoaXRlX3NwYWNlIDAgMikoRW9mIDIgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIm51bWJlcnNcIiA9XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVlblwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41ZW1cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWluXCI7XG4gICAgICB0ZXN0IFwibGluZS1oZWlnaHQ6IDNjbVwiO1xuICAgICAgdGVzdCBcImxpbmUtaGVpZ2h0OiAxMjAlXCI7XG4gICAgICB0ZXN0IFwiZ3JpZDogMCAxIGZvb1wiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41LWluXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUyMFwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgMTEpKENvbG9uIDExIDEpKFdoaXRlX3NwYWNlIDEyIDEpKERpbWVuc2lvbiAxMyAzKShFb2YgMTYgMCkpXG4gICAgKChJZGVudCAwIDExKShDb2xvbiAxMSAxKShXaGl0ZV9zcGFjZSAxMiAxKShQZXJjZW50YWdlIDEzIDQpKEVvZiAxNyAwKSlcbiAgICAoKElkZW50IDAgNCkoQ29sb24gNCAxKShXaGl0ZV9zcGFjZSA1IDEpKE51bWJlciA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggMSkoV2hpdGVfc3BhY2UgOSAxKShJZGVudCAxMCAzKShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJiYWRseV9xdW90ZWRcIiA9XG4gICAgICB0ZXN0IFwiJ2ZvbyBiYXJcIjtcbiAgICAgIHRlc3QgXCInXCI7XG4gICAgICB0ZXN0IFwiJ1xcXFwnXCI7XG4gICAgICBbJWV4cGVjdCB7fFxuICAgICgoRXJyb3IgMCA4KSlcbiAgICAoKEVycm9yIDAgMSkpXG4gICAgKChFcnJvciAwIDMpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicXVvdGVkXCIgPVxuICAgICAgdGVzdCB7fCdGb28gJ1wiQmFyXCInOycgJ1xcJycgXCJcXFwiXCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoU3RyaW5nIDAgNikoU3RyaW5nIDYgNSkoU3RyaW5nIDExIDMpKFdoaXRlX3NwYWNlIDE0IDEpKFN0cmluZyAxNSA0KShXaGl0ZV9zcGFjZSAxOSAxKShTdHJpbmcgMjAgNCkoRW9mIDI0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiY29sb3JzXCIgPVxuICAgICAgdGVzdCB7fGNvbG9yOiAjZjAwfH07XG4gICAgICB0ZXN0IHt8Y29sb3I6IHJnYigyNTUsMCwwKXx9O1xuICAgICAgdGVzdCB7fGNvbG9yOiByZ2IoMjU1LDAsMCl8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShIYXNoIDcgNCkoRW9mIDExIDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaW1wb3J0XCIgPVxuICAgICAgdGVzdCB7fEBpbXBvcnQgXCJmb28uYmFyXCI7fH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKEF0a2V5d29yZCAwIDcpKFdoaXRlX3NwYWNlIDcgMSkoU3RyaW5nIDggOSkoU2VtaV9jb2xvbiAxNyAxKShFb2YgMTggMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJyZWQgZXhhbXBsZVwiID1cbiAgICAgIHRlc3QgXCJyZWQtLT5cIjtcbiAgICAgIFslZXhwZWN0IHt8ICgoSWRlbnQgMCA1KShEZWxpbSA1IDEpKEVvZiA2IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidXJsXCIgPVxuICAgICAgdGVzdCB7fHVybCggXCJodHRwOi8vd3d3dy5nb29nbGUuY29tXCIpfH07XG4gICAgICB0ZXN0IHt8dXJsKCdodHRwOi8vd3d3dy5nb29nbGUuY29tJyl8fTtcbiAgICAgIHRlc3Qge3x1cmwoJ2h0dHA6Ly93d3d3Lmdvb2dsZS5jb20nICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuY29tICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuXCJjb20gKXx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKEZ1bmN0aW9uIDAgNCkoV2hpdGVfc3BhY2UgNCAxKShTdHJpbmcgNSAyNCkoUnBhcmVuIDI5IDEpKEVvZiAzMCAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgNCkoU3RyaW5nIDQgMjQpKFJwYXJlbiAyOCAxKShFb2YgMjkgMCkpXG4gICAgKChGdW5jdGlvbiAwIDQpKFN0cmluZyA0IDI0KShXaGl0ZV9zcGFjZSAyOCAxKShScGFyZW4gMjkgMSkoRW9mIDMwIDApKVxuICAgICgoVXJpIDAgMzApKEVvZiAzMCAwKSlcbiAgICAoKEVycm9yIDAgMjUpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZXNjYXBlXCIgPVxuICAgICAgdGVzdCB7fFwidGVzdFxcMTlhYmYyXFwyXCJ8fTtcbiAgICAgIHRlc3Qge3xcIlxcMDEwXFx4RkZhXFxvMTIzXFxuXFxcXFxcdXsxMjM0NX1hYfCfkKrwn5Cq8J+QqvCfkKrwn5CqXCJ8fTtcbiAgICAgIHRlc3Qge3xcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChTdHJpbmcgMCAxNSkoRW9mIDE1IDApKVxuICAgICgoU3RyaW5nIDAgNTEpKEVvZiA1MSAwKSlcbiAgICAoKFN0cmluZyAwIDQ5KShFb2YgNDkgMCkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBSZWN1cnNpdmUgZGVzY2VudCBwYXJzZXJzLiAgQSBwYXJzZXIgcmV0dXJucyBmYWxzZSBpZiBiYXNlZCBvbiBhXG4gICBzaW5nbGUgdG9rZW4gbG9va2FoZWFkIGl0IGRlY2lkZXMgdGhhdCB0aGUgZ2l2ZW4gdGV4dCBjYW4gbm90IGJlXG4gICBwYXJzZWQuICBBbnkgb3RoZXIgcGFyc2UgZXJyb3JzIGFyZSBoYW5kbGVkIGJ5IHJhaXNpbmcgZXhjZXB0aW9ucy5cblxuICAgU29tZSBwYXJzZXJzIHJldHVybiB1bml0IGJlY2F1c2Ugd2Ugb25seSBjYWxsIHRoZW0gd2hlbiBhIGZhaWx1cmVcbiAgIHRvIHBhcnNlIGltcGxpZXMgYSBwYXJzZSBlcnJvciAoYW5kIG5vdCB0aGF0IHNvbWUgcGFyc2VyIGhpZ2hlciB1cFxuICAgaW4gdGhlIGNhbGwgY2hhaW4gc2hvdWxkIHRyeSB0byBwYXJzZSBzb21ldGhpbmcgZWxzZSkuXG5cbiAgIEZvciBzaW1wbGljaXR5IHRoZSBwYXJzZXJzIHRoZW1zZWx2ZXMganVzdCB2YWxpZGF0ZSBhbmQgZG9uJ3RcbiAgIHByb2R1Y2UgYW55IHZhbHVlcy4gIFRoYXQgbGVhZHMgdG8gYSBmZXcgdW5lbGVnYW50IGNvbnN0cnVjdHNcbiAgIChwcmltYXJpbHkgaW4gZGVjbGFyYXRpb24pLCBidXQgbWVhbnMgd2Ugb3RoZXJ3aXNlIGhhdmUgcmF0aGVyXG4gICBzaW1wbGUgY29kZSB0aGF0IGFsc28gYWxsb2NhdGVzIHZlcnkgbGl0dGxlLlxuKilcblxub3BlbiBDb3JlXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCByZWMgbmV4dCBjdCA9XG4gIENzc190b2tlbml6ZXIubmV4dCBjdDtcbiAgaWYgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIENvbW1lbnQpIHRoZW4gbmV4dCBjdCBlbHNlICgpXG47O1xuXG5sZXQgc2tpcF93aGl0ZV9zcGFjZSBjdCA9XG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBXaGl0ZV9zcGFjZSkgZG9cbiAgICBuZXh0IGN0XG4gIGRvbmVcbjs7XG5cbmxldCBhY2NlcHQgY3QgZXhwZWN0ZWQgPVxuICBsZXQgZ290ID0gQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IGluXG4gIGlmIENzc190b2tlbml6ZXIuVG9rZW4uZXF1YWwgZ290IGV4cGVjdGVkXG4gIHRoZW4gKFxuICAgIG5leHQgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IGV4cGVjdCBjdCBleHBlY3RlZCA9XG4gIGxldCBnb3QgPSBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QgaW5cbiAgaWYgQ3NzX3Rva2VuaXplci5Ub2tlbi5lcXVhbCBnb3QgZXhwZWN0ZWRcbiAgdGhlbiBuZXh0IGN0XG4gIGVsc2VcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJVbmV4cGVjdGVkIHRva2VuXCJcbiAgICAgICAgICAoZXhwZWN0ZWQgOiBDc3NfdG9rZW5pemVyLlRva2VuLnQpXG4gICAgICAgICAgKGdvdCA6IENzc190b2tlbml6ZXIuVG9rZW4udCldXG47O1xuXG5sZXQgcmVjIG1hbnkgKGN0IDogQ3NzX3Rva2VuaXplci50KSBmID0gaWYgZiBjdCB0aGVuIG1hbnkgY3QgZiBlbHNlICgpXG5cbmxldCBtYW55MSAoY3QgOiBDc3NfdG9rZW5pemVyLnQpIGYgPVxuICBpZiBmIGN0XG4gIHRoZW4gKFxuICAgIG1hbnkgY3QgZjtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgcmVjIGFueSBjdCA6IGJvb2wgPVxuICBsZXQgcmVzID1cbiAgICBtYXRjaCBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3Qgd2l0aFxuICAgIHwgSWRlbnQgfCBOdW1iZXIgfCBQZXJjZW50YWdlIHwgRGltZW5zaW9uIHwgU3RyaW5nIHwgVXJpIHwgRGVsaW0gfCBIYXNoIHwgQ29tbWEgLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICB0cnVlXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBtYW55IGN0IGFueTtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMcGFyZW4gLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgZXhwZWN0X2FueSBjdDtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMYnJhY2tldCAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBleHBlY3RfYW55IGN0O1xuICAgICAgZXhwZWN0IGN0IFJicmFja2V0O1xuICAgICAgdHJ1ZVxuICAgIHwgUmN1cmx5IHwgUnBhcmVuIHwgUmJyYWNrZXQgLT4gZmFsc2VcbiAgICB8IExjdXJseSAtPiBmYWxzZVxuICAgIHwgQXRrZXl3b3JkIHwgQ29sb24gfCBTZW1pX2NvbG9uIC0+IGZhbHNlXG4gICAgfCBDb21tZW50IHwgV2hpdGVfc3BhY2UgfCBFb2YgfCBFcnJvciAtPiBmYWxzZVxuICBpblxuICBpZiByZXMgdGhlbiBza2lwX3doaXRlX3NwYWNlIGN0IGVsc2UgKCk7XG4gIHJlc1xuXG5hbmQgZXhwZWN0X2FueSBjdCA9IGlmIGFueSBjdCB0aGVuICgpIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8YW55PlwiXVxuXG5hbmQgdmFsdWUwIGN0ID1cbiAgYW55IGN0XG4gIHx8IGJsb2NrIGN0XG4gIHx8XG4gIGlmIGFjY2VwdCBjdCBBdGtleXdvcmRcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG5cbmFuZCB2YWx1ZSBjdCA9IG1hbnkxIGN0IHZhbHVlMFxuXG5hbmQgYmxvY2sgY3QgOiBib29sID1cbiAgaWYgYWNjZXB0IGN0IExjdXJseVxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIG1hbnkgY3QgKGZ1biBjdCAtPlxuICAgICAgdmFsdWUwIGN0XG4gICAgICB8fFxuICAgICAgaWYgYWNjZXB0IGN0IFNlbWlfY29sb25cbiAgICAgIHRoZW4gKFxuICAgICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgICB0cnVlKVxuICAgICAgZWxzZSBmYWxzZSk7XG4gICAgZXhwZWN0IGN0IFJjdXJseTtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2VcblxuYW5kIGV4cGVjdF92YWx1ZSBjdCA9IGlmIHZhbHVlIGN0IHRoZW4gKCkgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDx2YWx1ZT5cIl1cblxubGV0IGRlY2xhcmF0aW9uIGN0ID1cbiAgbGV0IGlkZW50X3N0YXJ0LCBpZGVudF9sZW4gPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IGluXG4gIGlmIGFjY2VwdCBjdCBJZGVudFxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGV4cGVjdCBjdCBDb2xvbjtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGxldCB2YWx1ZV9zdGFydCA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgfD4gZnN0IGluXG4gICAgZXhwZWN0X3ZhbHVlIGN0O1xuICAgIGxldCBuZXh0X3Rva2VuX3N0YXJ0ID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCB8PiBmc3QgaW5cbiAgICBsZXQgc291cmNlID0gQ3NzX3Rva2VuaXplci5zb3VyY2UgY3QgaW5cbiAgICBTb21lXG4gICAgICAoIFN0cmluZy5zdWIgc291cmNlIH5wb3M6aWRlbnRfc3RhcnQgfmxlbjppZGVudF9sZW5cbiAgICAgICwgU3RyaW5nLnJzdHJpcFxuICAgICAgICAgIChTdHJpbmcuc3ViIHNvdXJjZSB+cG9zOnZhbHVlX3N0YXJ0IH5sZW46KG5leHRfdG9rZW5fc3RhcnQgLSB2YWx1ZV9zdGFydCkpICkpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGV4cGVjdF9kZWNsYXJhdGlvbiBjdCA9XG4gIG1hdGNoIGRlY2xhcmF0aW9uIGN0IHdpdGhcbiAgfCBTb21lIChmaWVsZCwgdmFsdWUpIC0+IGZpZWxkLCB2YWx1ZVxuICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8ZGVjbGFyYXRpb24+XCJdXG47O1xuXG4oKiBBcyBwZXI6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc3R5bGUtYXR0ci9cbiAgIGRlY2xhcmF0aW9uLWxpc3RcbiAgIDogUyogZGVjbGFyYXRpb24/IFsgJzsnIFMqIGRlY2xhcmF0aW9uPyBdKlxuICAgO1xuKilcbmxldCBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBjdCA9XG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgbGV0IGFkZCBrdiA9XG4gICAgbWF0Y2gga3Ygd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaywgdikgLT4gcmVzIDo9IChrLCB2KSA6OiAhcmVzXG4gIGluXG4gIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICBtYW55IGN0IChmdW4gY3QgLT5cbiAgICBpZiBhY2NlcHQgY3QgU2VtaV9jb2xvblxuICAgIHRoZW4gKFxuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKTtcbiAgTGlzdC5yZXYgIXJlc1xuOztcblxubGV0IHBhcnNlIHBhcnNlcl9mIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBDb21tZW50KSBkb1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lO1xuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgbGV0IHJlcyA9IHBhcnNlcl9mIGN0IGluXG4gICAgZXhwZWN0IGN0IEVvZjtcbiAgICByZXMpXG47O1xuXG5sZXQgcHJpbnRfdG9rZW5zIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKG5vdCAoVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIEVvZikpIGRvXG4gICAgcHJpbnRfcyAoQ3NzX3Rva2VuaXplci5Ub2tlbi5zZXhwX29mX3QgKENzc190b2tlbml6ZXIuY3VycmVudCBjdCkpO1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lXG47O1xuXG5sZXQgdmFsaWRhdGVfdmFsdWUgPSBwYXJzZSBleHBlY3RfdmFsdWVcbmxldCBwYXJzZV9kZWNsYXJhdGlvbl9saXN0IHMgPSBwYXJzZSBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBzXG5cbmxldCB0ZXN0X3BhcnNlciBwIHNleHBfb2ZfYXJnIHMgPVxuICBsZXQgciA9IHBhcnNlIHAgcyBpblxuICBwcmludGYgIVwiJXMgLS0+ICV7c2V4cDphcmcgT3JfZXJyb3IudH1cXG5cIiBzIHJcbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcIlwiID1cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIFwiMCA0cHggOHB4IDAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMTIpLCAwIDJweCA0cHggMCBcXFxuICAgICAgICAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMDgpXCJcbiAgICAgIGluXG4gICAgICBwcmludF90b2tlbnMgdmFsdWU7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRnVuY3Rpb25cbiAgICBGdW5jdGlvblxuICAgIElkZW50XG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIEZ1bmN0aW9uXG4gICAgRnVuY3Rpb25cbiAgICBJZGVudFxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBScGFyZW4gfH1dO1xuICAgICAgcHJpbnRfcyBbJW1lc3NhZ2UgKHZhbGlkYXRlX3ZhbHVlIHZhbHVlIDogdW5pdCBPcl9lcnJvci50KV07XG4gICAgICBbJWV4cGVjdCB7fFxuICAgIChcInZhbGlkYXRlX3ZhbHVlIHZhbHVlXCIgKE9rICgpKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInZhbHVlc1wiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X3ZhbHVlIFVuaXQuc2V4cF9vZl90IGluXG4gICAgICB0ZXN0IFwieFwiO1xuICAgICAgdGVzdCBcIjNcIjtcbiAgICAgIHRlc3QgXCIzaW5cIjtcbiAgICAgIHRlc3QgXCIzJVwiO1xuICAgICAgdGVzdCBcIiNmZmZcIjtcbiAgICAgIHRlc3QgXCIxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcIidIZWxsbyBXb3JsZCdcIjtcbiAgICAgIHRlc3QgXCJyZ2IoMCwwLDApXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgeCAtLT4gKE9rICgpKVxuICAgICAgMyAtLT4gKE9rICgpKVxuICAgICAgM2luIC0tPiAoT2sgKCkpXG4gICAgICAzJSAtLT4gKE9rICgpKVxuICAgICAgI2ZmZiAtLT4gKE9rICgpKVxuICAgICAgMSAwIGF1dG8gLS0+IChPayAoKSlcbiAgICAgICdIZWxsbyBXb3JsZCcgLS0+IChPayAoKSlcbiAgICAgIHJnYigwLDAsMCkgLS0+IChPayAoKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImRlY2xhcmF0aW9uXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJjb250ZW50OiAnSGVsbG8gV29ybGQnXCI7XG4gICAgICB0ZXN0IFwiY29udGVudDogZm9vO1wiO1xuICAgICAgKCogU2VtaSdzIGFyZSBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIGxpc3QgKilcbiAgICAgIHRlc3QgXCJjb250ZW50OiBiYXIgXCI7XG4gICAgICAoKiBidXQgd2hpdGVzcGFjZSBpcyBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIChhbnkgcmVhbGx5KSAqKVxuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgIGZsZXg6IDEgMCBhdXRvIC0tPiAoT2sgKGZsZXggXCIxIDAgYXV0b1wiKSlcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbyBXb3JsZCcgLS0+IChPayAoY29udGVudCBcIidIZWxsbyBXb3JsZCdcIikpXG4gICAgICBjb250ZW50OiBmb287IC0tPiAoRXJyb3IgKFwiVW5leHBlY3RlZCB0b2tlblwiIChleHBlY3RlZCBFb2YpIChnb3QgU2VtaV9jb2xvbikpKVxuICAgICAgY29udGVudDogYmFyICAtLT4gKE9rIChjb250ZW50IGJhcikpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ1bmljb2RlXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2J1wiO1xuICAgICAgcHJpbnRfZW5kbGluZSAoU2V4cC50b19zdHJpbmcgKFNleHAuQXRvbSBcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCIpKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2JyAtLT4gKE9rXG4gICAgIChjb250ZW50XG4gICAgICBcIidcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MidcIikpXG4gICAgXCJcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MlwiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJkZWNsYXJhdGlvbiBsaXN0XCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBbJXNleHBfb2Y6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RdIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0bztcIjtcbiAgICAgIHRlc3RcbiAgICAgICAgXCJiYWNrZ3JvdW5kOiAjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0O21hcmdpbi1sZWZ0OiAyMDBweFwiO1xuICAgICAgdGVzdCBcIjs7Ozs7XCI7XG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG8gOzsgb3RoZXIgOiBzYSBcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgZmxleDogMSAwIGF1dG8gLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSkpXG4gICAgZmxleDogMSAwIGF1dG87IC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikpKVxuICAgIGJhY2tncm91bmQ6ICM1ZDlhYjIgdXJsKFwiaW1nX3RyZWUucG5nXCIpIG5vLXJlcGVhdCB0b3AgbGVmdDttYXJnaW4tbGVmdDogMjAwcHggLS0+IChPa1xuICAgICAoKGJhY2tncm91bmQgXCIjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0XCIpXG4gICAgICAobWFyZ2luLWxlZnQgMjAwcHgpKSlcbiAgICA7Ozs7OyAtLT4gKE9rICgpKVxuICAgIGZsZXg6IDEgMCBhdXRvIDs7IG90aGVyIDogc2EgIC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikgKG90aGVyIHNhKSkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gQ29yZS5Db3JlX3N0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICgqKiAoZmllbGQgKiB2YWx1ZSkgbGlzdC4gIFdoZXJlIHZhbHVlIHNob3VsZCBiZSBlc2NhcGVkIC8gcXVvdGVkXG4gICAgICAgIGFzIG5lY2Vzc2FyeSBhcyBwZXIgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNydWxlLXNldHMuICopXG4gICAgdHlwZSB0ID0gKHN0cmluZyAqIHN0cmluZykgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW9dXG4gIGVuZFxuZW5kXG5cbm9wZW4gQ29yZVxuaW5jbHVkZSBTdGFibGUuVjFcblxudHlwZSBjc3NfZ2xvYmFsX3ZhbHVlcyA9XG4gIFsgYEluaGVyaXRcbiAgfCBgSW5pdGlhbFxuICBdXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA9IHJlZiAoZnVuIGRpZ2l0cyBmIC0+IHNwcmludGYgXCIlLipmXCIgZGlnaXRzIGYpXG5lbmRcblxubGV0IGYycyBkaWdpdHMgZiA9ICFQcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIGRpZ2l0cyBmXG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSR0JBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHIgOiBpbnRcbiAgICAgICAgOyBnIDogaW50XG4gICAgICAgIDsgYiA6IGludFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5yIH5nIH5iID9hICgpID0geyByOyBnOyBiOyBhIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBIU0xBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGggOiBpbnRcbiAgICAgICAgOyBzIDogUGVyY2VudC50XG4gICAgICAgIDsgbCA6IFBlcmNlbnQudFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5oIH5zIH5sID9hICgpID0geyBoOyBzOyBsOyBhIH1cbiAgICBlbmRcblxuICAgIHR5cGUgdCA9XG4gICAgICBbIGBSR0JBIG9mIFJHQkEudFxuICAgICAgfCBgSFNMQSBvZiBIU0xBLnRcbiAgICAgIHwgYE5hbWUgb2Ygc3RyaW5nXG4gICAgICB8IGBIZXggb2Ygc3RyaW5nXG4gICAgICB8IGBWYXIgb2Ygc3RyaW5nXG4gICAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCB0b19zdHJpbmdfY3NzIDogWzwgdCBdIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBSR0JBIHsgUkdCQS5yOyBnOyBiOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gWyVzdHJpbmcgXCJyZ2IoJXtyI0ludH0sJXtnI0ludH0sJXtiI0ludH0pXCJdXG4gICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgIFslc3RyaW5nIFwicmdiYSgle3IjSW50fSwle2cjSW50fSwle2IjSW50fSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBIU0xBIHsgSFNMQS5oOyBzOyBsOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFslc3RyaW5nXG4gICAgICAgICAgIFwiaHNsKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSlcIl1cbiAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgWyVzdHJpbmdcbiAgICAgICAgICAgXCJoc2xhKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBOYW1lIG5hbWUgLT4gbmFtZVxuICAgIHwgYEhleCBoZXggLT4gaGV4XG4gICAgfCBgVmFyIHZhciAtPiBbJXN0cmluZyBcInZhcigle3Zhcn0pXCJdXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsaWdubWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExlZnRcbiAgICB8IGBSaWdodFxuICAgIHwgYENlbnRlciAoKiBob3Jpem9udGFsICopXG4gICAgfCBgVG9wXG4gICAgfCBgQm90dG9tXG4gICAgfCBgTWlkZGxlICgqIHZlcnRpY2FsICopXG4gICAgfCBgSnVzdGlmeSAoKiB0ZXh0LWFsaWduIChpbiBhZGRpdGlvbiB0byBbaG9yaXpvbnRhbF0pICopXG4gICAgfCBgU3VwZXIgKCogdmVydGljYWwgKilcbiAgICB8IGBTdWIgKCogdmVydGljYWwgKilcbiAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYEp1c3RpZnkgLT4gXCJqdXN0aWZ5XCJcbiAgICB8IGBUb3AgLT4gXCJ0b3BcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYEJvdHRvbSAtPiBcImJvdHRvbVwiXG4gICAgfCBgU3VwZXIgLT4gXCJzdXBlclwiXG4gICAgfCBgU3ViIC0+IFwic3ViXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIDs7XG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYFJhdyBvZiBzdHJpbmdcbiAgICB8IGBDaCBvZiBmbG9hdFxuICAgIHwgYFJlbSBvZiBmbG9hdFxuICAgIHwgYEVtIG9mIGludFxuICAgIHwgYEVtX2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgUGVyY2VudCBvZiBQZXJjZW50LnRcbiAgICB8IGBQdCBvZiBmbG9hdFxuICAgIHwgYFB4IG9mIGludFxuICAgIHwgYFB4X2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgVmggb2YgUGVyY2VudC50XG4gICAgfCBgVncgb2YgUGVyY2VudC50XG4gICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBSYXcgcyAtPiBzXG4gICAgfCBgQ2ggYyAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgY31jaFwiXVxuICAgIHwgYFJlbSBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfXJlbVwiXVxuICAgIHwgYEVtIGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fWVtXCJdXG4gICAgfCBgRW1fZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1lbVwiXVxuICAgIHwgYFBlcmNlbnQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX0lXCJdXG4gICAgfCBgUHQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgcH1wdFwiXVxuICAgIHwgYFB4IGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fXB4XCJdXG4gICAgfCBgUHhfZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1weFwiXVxuICAgIHwgYFZoIHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9dmhcIl1cbiAgICB8IGBWdyBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfXZ3XCJdXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgOztcblxuICBsZXQgcGVyY2VudDEwMCA9IGBQZXJjZW50IChQZXJjZW50Lm9mX3BlcmNlbnRhZ2UgMTAwLilcbmVuZFxuXG5tb2R1bGUgQXV0b19vcl9sZW5ndGggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBBdXRvXG4gICAgfCBMZW5ndGgudFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCAjTGVuZ3RoLnQgYXMgbCAtPiBMZW5ndGgudG9fc3RyaW5nX2NzcyBsXG4gIDs7XG5lbmRcblxubGV0IHZhbHVlX21hcCBvIH5mID0gT3B0aW9uLnZhbHVlX21hcCBvIH5kZWZhdWx0OlwiXCIgfmZcbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0ICggQD4gKSA9IGNvbWJpbmVcbmxldCBjb25jYXQgbCA9IExpc3QuY29uY2F0IGxcbmxldCB0b19zdHJpbmdfbGlzdCA9IEZuLmlkXG5cbmxldCB0b19zdHJpbmdfY3NzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4gKGZpZWxkLCB2YWx1ZSkgLT4gWyVzdHJpbmcgXCIle2ZpZWxkfTogJXt2YWx1ZX1cIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIjtcIlxuOztcblxubGV0IG9mX3N0cmluZ19jc3NfZXhuIHMgPSBDc3NfcGFyc2VyLnBhcnNlX2RlY2xhcmF0aW9uX2xpc3QgcyB8PiBPcl9lcnJvci5va19leG5cblxuKCoqIGNyZWF0ZV9yYXcgY3JlYXRlcyBhIHNpbmdsZSBmaWVsZCwgdmFsdWUgcGFpci4gIEl0IGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUgaXMgYSB2YWxpZFxuICAgIGNzcyB2YWx1ZS4gIEFzIHN1Y2ggaXQgaXMgdW5zYWZlIHRvIHVzZSB3aXRoIGFyYml0cmFyeSB2YWx1ZSBzdHJpbmdzLiAgQnV0IGZvciB0aGVcbiAgICB2YXN0IG1ham9yaXR5IG9mIGNvbWJpbmF0b3JzIGluIHRoaXMgbW9kdWxlIGl0IGlzIHRoZSByaWdodCB0aGluZyB0byB1c2UsIGFzIHdlIGtub3dcbiAgICBieSBjb25zdHJ1Y3Rpb24gdGhhdCB0aGUgdmFsdWVzIGRvIG5vdCBuZWVkIHF1b3RpbmcgLyBlc2NhcGluZy4gKilcbmxldCBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWUgPSBbIGZpZWxkLCB2YWx1ZSBdXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHNob3VsZF92YWxpZGF0ZSA9IHJlZiBmYWxzZVxuZW5kXG5cbmxldCBjcmVhdGUgfmZpZWxkIH52YWx1ZSA9XG4gIGlmICFFeHBlcnQuc2hvdWxkX3ZhbGlkYXRlIHRoZW4gQ3NzX3BhcnNlci52YWxpZGF0ZV92YWx1ZSB2YWx1ZSB8PiBPcl9lcnJvci5va19leG47XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IGVtcHR5ID0gW11cbmxldCBpc19lbXB0eSA9IExpc3QuaXNfZW1wdHlcbmxldCBjcmVhdGVfcGxhY2VtZW50IG5hbWUgbGVuZ3RoID0gY3JlYXRlIH5maWVsZDpuYW1lIH52YWx1ZTooTGVuZ3RoLnRvX3N0cmluZ19jc3MgbGVuZ3RoKVxubGV0IGxlZnQgPSBjcmVhdGVfcGxhY2VtZW50IFwibGVmdFwiXG5sZXQgdG9wID0gY3JlYXRlX3BsYWNlbWVudCBcInRvcFwiXG5sZXQgYm90dG9tID0gY3JlYXRlX3BsYWNlbWVudCBcImJvdHRvbVwiXG5sZXQgcmlnaHQgPSBjcmVhdGVfcGxhY2VtZW50IFwicmlnaHRcIlxuXG5sZXQgcG9zaXRpb24gP3RvcDp0cCA/Ym90dG9tOmJ0ID9sZWZ0Omx0ID9yaWdodDpydCBwb3MgPVxuICBsZXQgcG9zID1cbiAgICBsZXQgdmFsdWUgPVxuICAgICAgbWF0Y2ggcG9zIHdpdGhcbiAgICAgIHwgYFN0YXRpYyAtPiBcInN0YXRpY1wiXG4gICAgICB8IGBBYnNvbHV0ZSAtPiBcImFic29sdXRlXCJcbiAgICAgIHwgYFN0aWNreSAtPiBcInN0aWNreVwiXG4gICAgICB8IGBSZWxhdGl2ZSAtPiBcInJlbGF0aXZlXCJcbiAgICAgIHwgYEZpeGVkIC0+IFwiZml4ZWRcIlxuICAgIGluXG4gICAgY3JlYXRlIH5maWVsZDpcInBvc2l0aW9uXCIgfnZhbHVlXG4gIGluXG4gIGxldCBjb252ZXJ0IG9wdF9sIGYgPSBPcHRpb24udmFsdWVfbWFwIG9wdF9sIH5kZWZhdWx0OmVtcHR5IH5mIGluXG4gIGNvbmNhdCBbIHBvczsgY29udmVydCB0cCB0b3A7IGNvbnZlcnQgbHQgbGVmdDsgY29udmVydCBydCByaWdodDsgY29udmVydCBidCBib3R0b20gXVxuOztcblxubGV0IGJveF9zaXppbmcgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgQ29udGVudF9ib3ggLT4gXCJjb250ZW50LWJveFwiXG4gICAgfCBgQm9yZGVyX2JveCAtPiBcImJvcmRlci1ib3hcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm94LXNpemluZ1wiIH52YWx1ZVxuOztcblxubGV0IGRpc3BsYXkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgSW5saW5lIC0+IFwiaW5saW5lXCJcbiAgICB8IGBCbG9jayAtPiBcImJsb2NrXCJcbiAgICB8IGBJbmxpbmVfYmxvY2sgLT4gXCJpbmxpbmUtYmxvY2tcIlxuICAgIHwgYExpc3RfaXRlbSAtPiBcImxpc3QtaXRlbVwiXG4gICAgfCBgVGFibGUgLT4gXCJ0YWJsZVwiXG4gICAgfCBgSW5saW5lX3RhYmxlIC0+IFwiaW5saW5lLXRhYmxlXCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgRmxleCAtPiBcImZsZXhcIlxuICAgIHwgYElubGluZV9mbGV4IC0+IFwiaW5saW5lLWZsZXhcIlxuICAgIHwgYElubGluZV9ncmlkIC0+IFwiaW5saW5lLWdyaWRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZGlzcGxheVwiIH52YWx1ZVxuOztcblxubGV0IHZpc2liaWxpdHkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgVmlzaWJsZSAtPiBcInZpc2libGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ2aXNpYmlsaXR5XCIgfnZhbHVlXG47O1xuXG50eXBlIG92ZXJmbG93ID1cbiAgWyBgVmlzaWJsZVxuICB8IGBIaWRkZW5cbiAgfCBgU2Nyb2xsXG4gIHwgYEF1dG9cbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBtYWtlX292ZXJmbG93IGZpZWxkIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFZpc2libGUgLT4gXCJ2aXNpYmxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYFNjcm9sbCAtPiBcInNjcm9sbFwiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IG92ZXJmbG93ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93XCJcbmxldCBvdmVyZmxvd194ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93LXhcIlxubGV0IG92ZXJmbG93X3kgPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3cteVwiXG5sZXQgel9pbmRleCBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJ6LWluZGV4XCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpXG5sZXQgb3BhY2l0eSBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJvcGFjaXR5XCIgfnZhbHVlOihmMnMgNiBpKVxuXG5sZXQgY3JlYXRlX2xlbmd0aF9maWVsZCBmaWVsZCBsID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGwpXG47O1xuXG5sZXQgd2hpdGVfc3BhY2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBOb3dyYXAgLT4gXCJub3dyYXBcIlxuICAgIHwgYFByZSAtPiBcInByZVwiXG4gICAgfCBgUHJlX2xpbmUgLT4gXCJwcmUtbGluZVwiXG4gICAgfCBgUHJlX3dyYXAgLT4gXCJwcmUtd3JhcFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlIH5maWVsZDpcIndoaXRlLXNwYWNlXCIgfnZhbHVlXG47O1xuXG50eXBlIGZvbnRfc3R5bGUgPVxuICBbIGBOb3JtYWxcbiAgfCBgSXRhbGljXG4gIHwgYE9ibGlxdWVcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbnR5cGUgZm9udF93ZWlnaHQgPVxuICBbIGBOb3JtYWxcbiAgfCBgQm9sZFxuICB8IGBCb2xkZXJcbiAgfCBgTGlnaHRlclxuICB8IGBOdW1iZXIgb2YgaW50XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG50eXBlIGZvbnRfdmFyaWFudCA9XG4gIFsgYE5vcm1hbFxuICB8IGBTbWFsbF9jYXBzXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgZm9udF9zaXplID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImZvbnQtc2l6ZVwiXG5sZXQgZm9udF9mYW1pbHkgbCA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1mYW1pbHlcIiB+dmFsdWU6KFN0cmluZy5jb25jYXQgbCB+c2VwOlwiLFwiKVxuXG5sZXQgZm9udF9zdHlsZSBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYEl0YWxpYyAtPiBcIml0YWxpY1wiXG4gICAgfCBgT2JsaXF1ZSAtPiBcIm9ibGlxdWVcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1zdHlsZVwiIH52YWx1ZVxuOztcblxubGV0IGZvbnRfd2VpZ2h0IHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE51bWJlciBpIC0+IEludC50b19zdHJpbmcgaVxuICAgIHwgYEJvbGQgLT4gXCJib2xkXCJcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYExpZ2h0ZXIgLT4gXCJsaWdodGVyXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgQm9sZGVyIC0+IFwiYm9sZGVyXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC13ZWlnaHRcIiB+dmFsdWVcbjs7XG5cbmxldCBib2xkID0gZm9udF93ZWlnaHQgYEJvbGRcblxubGV0IGZvbnRfdmFyaWFudCBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYFNtYWxsX2NhcHMgLT4gXCJzbWFsbC1jYXBzXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtdmFyaWFudFwiIH52YWx1ZVxuOztcblxubGV0IGZvbnQgfnNpemUgfmZhbWlseSA/c3R5bGUgP3dlaWdodCA/dmFyaWFudCAoKSA9XG4gIFsgU29tZSAoZm9udF9zaXplIHNpemUpXG4gIDsgU29tZSAoZm9udF9mYW1pbHkgZmFtaWx5KVxuICA7IE9wdGlvbi5tYXAgc3R5bGUgfmY6Zm9udF9zdHlsZVxuICA7IE9wdGlvbi5tYXAgd2VpZ2h0IH5mOmZvbnRfd2VpZ2h0XG4gIDsgT3B0aW9uLm1hcCB2YXJpYW50IH5mOmZvbnRfdmFyaWFudFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQgfmNvbG9yID0gY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihDb2xvci50b19zdHJpbmdfY3NzIGNvbG9yKVxubGV0IGNvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiY29sb3JcIiB+Y29sb3JcbmxldCBiYWNrZ3JvdW5kX2NvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiYmFja2dyb3VuZC1jb2xvclwiIH5jb2xvclxubGV0IGZpbGwgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJmaWxsXCIgfmNvbG9yXG5cbnR5cGUgc3RvcHMgPSAoUGVyY2VudC50ICogQ29sb3IudCkgbGlzdFxuXG50eXBlIGxpbmVhcl9ncmFkaWVudCA9XG4gIHsgZGlyZWN0aW9uIDogWyBgRGVnIG9mIGludCBdXG4gIDsgc3RvcHMgOiBzdG9wc1xuICB9XG5cbnR5cGUgcmFkaWFsX2dyYWRpZW50ID0geyBzdG9wcyA6IHN0b3BzIH1cblxudHlwZSBiYWNrZ3JvdW5kX2ltYWdlID1cbiAgWyBgVXJsIG9mIHN0cmluZ1xuICB8IGBMaW5lYXJfZ3JhZGllbnQgb2YgbGluZWFyX2dyYWRpZW50XG4gIHwgYFJhZGlhbF9ncmFkaWVudCBvZiByYWRpYWxfZ3JhZGllbnRcbiAgXVxuXG50eXBlIHRleHRfYWxpZ24gPVxuICBbIGBMZWZ0XG4gIHwgYFJpZ2h0XG4gIHwgYENlbnRlclxuICB8IGBKdXN0aWZ5XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgc3RvcHNfdG9fc3RyaW5nIHN0b3BzID1cbiAgTGlzdC5tYXAgc3RvcHMgfmY6KGZ1biAocGN0LCBjb2xvcikgLT5cbiAgICAoKiBOb3RlOiBQZXJjZW50LnRvX3N0cmluZyBwcm9kdWNlZCBlLmcuIFwiMHhcIiwgXCIxeFwiLCB3b24ndCB3b3JrIGhlcmUuICopXG4gICAgWyVzdHJpbmcgXCIle0NvbG9yLnRvX3N0cmluZ19jc3MgY29sb3J9ICV7ZjJzIDYgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwY3QpfSVcIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCBiYWNrZ3JvdW5kX2ltYWdlIHNwZWMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgYFVybCB1cmwgLT4gWyVzdHJpbmcgXCJ1cmwoJXt1cmx9KVwiXVxuICAgIHwgYExpbmVhcl9ncmFkaWVudCB7IGRpcmVjdGlvbiA9IGBEZWcgZGlyZWN0aW9uOyBzdG9wcyB9IC0+XG4gICAgICBbJXN0cmluZyBcImxpbmVhci1ncmFkaWVudCgle2RpcmVjdGlvbiNJbnR9ZGVnLCAle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gICAgfCBgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgfSAtPiBbJXN0cmluZyBcInJhZGlhbC1ncmFkaWVudCgle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYmFja2dyb3VuZC1pbWFnZVwiIH52YWx1ZVxuOztcblxubGV0IGNyZWF0ZV9hbGlnbm1lbnQgZmllbGQgYSA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQWxpZ25tZW50LnRvX3N0cmluZ19jc3MgKGEgOj4gQWxpZ25tZW50LnQpKVxuOztcblxubGV0IHRleHRfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwidGV4dC1hbGlnblwiXG5sZXQgaG9yaXpvbnRhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJob3Jpem9udGFsLWFsaWduXCJcbmxldCB2ZXJ0aWNhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJ2ZXJ0aWNhbC1hbGlnblwiXG5cbmxldCBmbG9hdCBmID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBmIHdpdGhcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxvYXRcIiB+dmFsdWVcbjs7XG5cbmxldCBsaW5lX2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJsaW5lLWhlaWdodFwiXG5sZXQgd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwid2lkdGhcIlxubGV0IG1pbl93aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtaW4td2lkdGhcIlxubGV0IG1heF93aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXgtd2lkdGhcIlxubGV0IGhlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJoZWlnaHRcIlxubGV0IG1pbl9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLWhlaWdodFwiXG5sZXQgbWF4X2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXgtaGVpZ2h0XCJcbmxldCBwYWRkaW5nX3RvcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLXRvcFwiXG5sZXQgcGFkZGluZ19ib3R0b20gPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1ib3R0b21cIlxubGV0IHBhZGRpbmdfbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLWxlZnRcIlxubGV0IHBhZGRpbmdfcmlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1yaWdodFwiXG5cbmxldCBwYWRkaW5nID90b3AgP2JvdHRvbSA/bGVmdCA/cmlnaHQgKCkgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgWyBtIHRvcCB+ZjpwYWRkaW5nX3RvcFxuICA7IG0gYm90dG9tIH5mOnBhZGRpbmdfYm90dG9tXG4gIDsgbSBsZWZ0IH5mOnBhZGRpbmdfbGVmdFxuICA7IG0gcmlnaHQgfmY6cGFkZGluZ19yaWdodFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCB1bmlmb3JtX3BhZGRpbmcgbCA9IHBhZGRpbmcgfnRvcDpsIH5ib3R0b206bCB+bGVmdDpsIH5yaWdodDpsICgpXG5sZXQgbWFyZ2luX3RvcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tdG9wXCJcbmxldCBtYXJnaW5fYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1ib3R0b21cIlxubGV0IG1hcmdpbl9sZWZ0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1sZWZ0XCJcbmxldCBtYXJnaW5fcmlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXJpZ2h0XCJcblxubGV0IG1hcmdpbiA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6bWFyZ2luX3RvcFxuICA7IG0gYm90dG9tIH5mOm1hcmdpbl9ib3R0b21cbiAgOyBtIGxlZnQgfmY6bWFyZ2luX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOm1hcmdpbl9yaWdodFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCB1bmlmb3JtX21hcmdpbiBsID0gbWFyZ2luIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxubGV0IHJvd19nYXAgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicm93LWdhcFwiXG5sZXQgY29sdW1uX2dhcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJjb2x1bW4tZ2FwXCJcblxudHlwZSBib3JkZXJfc3R5bGUgPVxuICBbIGBOb25lXG4gIHwgYEhpZGRlblxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBHcm9vdmVcbiAgfCBgUmlkZ2VcbiAgfCBgSW5zZXRcbiAgfCBgT3V0c2V0XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG4oKiogQ29uY2F0IDIgdmFsdWVzIHdpdGggYSBzcGFjZSBpbiBiZXR3ZWVuLiAgSWYgZWl0aGVyIGlzIHRoZSBlbXB0eSBzdHJpbmdcbiAgICBkb24ndCBwdXQgaW4gdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZS4gKilcbmxldCBjb25jYXQydiB2MSB2MiA9XG4gIG1hdGNoIHYxLCB2MiB3aXRoXG4gIHwgXCJcIiwgeCAtPiB4XG4gIHwgeCwgXCJcIiAtPiB4XG4gIHwgeCwgeSAtPiB4IF4gXCIgXCIgXiB5XG47O1xuXG4oKiogQ29uY2F0IHVwIHRvIDMgdmFsdWVzIHdpdGggc3BhY2VzIGluIGJldHdlZW4uICopXG5sZXQgY29uY2F0M3YgdjEgdjIgdjMgPSBjb25jYXQydiAoY29uY2F0MnYgdjEgdjIpIHYzXG5cbmxldCBib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+KHN0eWxlIDogYm9yZGVyX3N0eWxlKSAoKSA9XG4gIGxldCBzdHlsZSA9XG4gICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgIHwgYFJpZGdlIC0+IFwicmlkZ2VcIlxuICAgIHwgYE91dHNldCAtPiBcIm91dHNldFwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEdyb292ZSAtPiBcImdyb292ZVwiXG4gICAgfCBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5zZXQgLT4gXCJpbnNldFwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgIHwgYERvdHRlZCAtPiBcImRvdHRlZFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFNvbGlkIC0+IFwic29saWRcIlxuICBpblxuICBsZXQgd2lkdGggPSB2YWx1ZV9tYXAgd2lkdGggfmY6TGVuZ3RoLnRvX3N0cmluZ19jc3MgaW5cbiAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgY29uY2F0M3Ygd2lkdGggc3R5bGUgY29sb3Jcbjs7XG5cbmxldCBjcmVhdGVfYm9yZGVyID9zaWRlICgpID1cbiAgbGV0IGZpZWxkID1cbiAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICB8IFNvbWUgYFRvcCAtPiBcImJvcmRlci10b3BcIlxuICAgIHwgU29tZSBgQm90dG9tIC0+IFwiYm9yZGVyLWJvdHRvbVwiXG4gICAgfCBTb21lIGBSaWdodCAtPiBcImJvcmRlci1yaWdodFwiXG4gICAgfCBTb21lIGBMZWZ0IC0+IFwiYm9yZGVyLWxlZnRcIlxuICAgIHwgTm9uZSAtPiBcImJvcmRlclwiXG4gIGluXG4gIGZ1biA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSAtPlxuICAgIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfnN0eWxlICgpKVxuOztcblxubGV0IGJvcmRlcl90b3AgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBUb3AgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfYm90dG9tID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgQm90dG9tICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2xlZnQgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBMZWZ0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX3JpZ2h0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgUmlnaHQgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXIgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPSBjcmVhdGVfYm9yZGVyID9zaWRlOk5vbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgKClcblxubGV0IG91dGxpbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfcmF3IH5maWVsZDpcIm91dGxpbmVcIiB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfY29sbGFwc2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgU2VwYXJhdGUgLT4gXCJzZXBhcmF0ZVwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3JkZXItY29sbGFwc2VcIiB+dmFsdWVcbjs7XG5cbmxldCBib3JkZXJfc3BhY2luZyA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJib3JkZXItc3BhY2luZ1wiXG5sZXQgYm9yZGVyX3JhZGl1cyBsID0gY3JlYXRlIH5maWVsZDpcImJvcmRlci1yYWRpdXNcIiB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGwpXG5cbnR5cGUgdGV4dF9kZWNvcmF0aW9uX2xpbmUgPVxuICBbIGBOb25lXG4gIHwgYFVuZGVybGluZVxuICB8IGBPdmVybGluZVxuICB8IGBMaW5lX3Rocm91Z2hcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9zdHlsZSA9XG4gIFsgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFdhdnlcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdGV4dF9kZWNvcmF0aW9uID9zdHlsZSA/Y29sb3IgfmxpbmUgKCkgPVxuICBsZXQgdmFsdWUgPVxuICAgIGxldCBsaW5lID1cbiAgICAgIExpc3QubWFwIGxpbmUgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgYExpbmVfdGhyb3VnaCAtPiBcImxpbmUtdGhyb3VnaFwiXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBPdmVybGluZSAtPiBcIm92ZXJsaW5lXCJcbiAgICAgICAgfCBgVW5kZXJsaW5lIC0+IFwidW5kZXJsaW5lXCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIilcbiAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICAgIGluXG4gICAgbGV0IHN0eWxlID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgYFNvbGlkIC0+IFwic29saWRcIlxuICAgICAgfCBTb21lIGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgICAgfCBTb21lIGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgICAgfCBTb21lIGBEYXNoZWQgLT4gXCJkYXNoZWRcIlxuICAgICAgfCBTb21lIGBXYXZ5IC0+IFwid2F2eVwiXG4gICAgICB8IFNvbWUgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgIHwgU29tZSBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIGluXG4gICAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgICBjb25jYXQzdiBsaW5lIHN0eWxlIGNvbG9yXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidGV4dC1kZWNvcmF0aW9uXCIgfnZhbHVlXG47O1xuXG50eXBlIGNvbnRlbnRfYWxpZ25tZW50ID1cbiAgWyBgTm9ybWFsXG4gIHwgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYFNwYWNlX2JldHdlZW5cbiAgfCBgU3BhY2VfYXJvdW5kXG4gIHwgYFNwYWNlX2V2ZW5seVxuICB8IGBTdHJldGNoXG4gIF1cblxubGV0IGNvbnRlbnRfYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICB8IGBGbGV4X3N0YXJ0IC0+IFwiZmxleC1zdGFydFwiXG4gIHwgYEZsZXhfZW5kIC0+IFwiZmxleC1lbmRcIlxuICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICB8IGBTcGFjZV9iZXR3ZWVuIC0+IFwic3BhY2UtYmV0d2VlblwiXG4gIHwgYFNwYWNlX2Fyb3VuZCAtPiBcInNwYWNlLWFyb3VuZFwiXG4gIHwgYFNwYWNlX2V2ZW5seSAtPiBcInNwYWNlLWV2ZW5seVwiXG4gIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbjs7XG5cbnR5cGUgaXRlbV9hbGlnbm1lbnQgPVxuICBbIGBBdXRvXG4gIHwgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYEJhc2VsaW5lXG4gIHwgYFN0cmV0Y2hcbiAgXVxuXG5sZXQgaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgQmFzZWxpbmUgLT4gXCJiYXNlbGluZVwiXG4gIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbjs7XG5cbnR5cGUganVzdGlmeV9jb250ZW50ID1cbiAgWyBgRmxleF9zdGFydFxuICB8IGBGbGV4X2VuZFxuICB8IGBDZW50ZXJcbiAgfCBgU3BhY2VfYmV0d2VlblxuICB8IGBTcGFjZV9hcm91bmRcbiAgfCBgU3BhY2VfZXZlbmx5XG4gIF1cblxubGV0IGp1c3RpZnlfY29udGVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgU3BhY2VfYmV0d2VlbiAtPiBcInNwYWNlLWJldHdlZW5cIlxuICB8IGBTcGFjZV9hcm91bmQgLT4gXCJzcGFjZS1hcm91bmRcIlxuICB8IGBTcGFjZV9ldmVubHkgLT4gXCJzcGFjZS1ldmVubHlcIlxuOztcblxubGV0IGZsZXhfY29udGFpbmVyXG4gICAgICA/KGlubGluZSA9IGZhbHNlKVxuICAgICAgPyhkaXJlY3Rpb24gPSBgUm93KVxuICAgICAgPyh3cmFwID0gYE5vd3JhcClcbiAgICAgID9hbGlnbl9pdGVtc1xuICAgICAgP2FsaWduX2NvbnRlbnRcbiAgICAgID9qdXN0aWZ5X2NvbnRlbnRcbiAgICAgID9yb3dfZ2FwOnJnXG4gICAgICA/Y29sdW1uX2dhcDpjZ1xuICAgICAgKClcbiAgPVxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBsZXQgbWFrZV9kaXIgdiA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC1kaXJlY3Rpb25cIiB+dmFsdWU6diBpblxuICAgIG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgUm93IC0+IG1ha2VfZGlyIFwicm93XCJcbiAgICB8IGBSb3dfcmV2ZXJzZSAtPiBtYWtlX2RpciBcInJvdy1yZXZlcnNlXCJcbiAgICB8IGBDb2x1bW4gLT4gbWFrZV9kaXIgXCJjb2x1bW5cIlxuICAgIHwgYENvbHVtbl9yZXZlcnNlIC0+IG1ha2VfZGlyIFwiY29sdW1uLXJldmVyc2VcIlxuICAgIHwgYERlZmF1bHQgLT4gZW1wdHlcbiAgaW5cbiAgbGV0IHdyYXAgPVxuICAgIGxldCBtYWtlX3dyYXAgdiA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC13cmFwXCIgfnZhbHVlOnYgaW5cbiAgICBtYXRjaCB3cmFwIHdpdGhcbiAgICB8IGBOb3dyYXAgLT4gbWFrZV93cmFwIFwibm93cmFwXCJcbiAgICB8IGBXcmFwIC0+IG1ha2Vfd3JhcCBcIndyYXBcIlxuICAgIHwgYFdyYXBfcmV2ZXJzZSAtPiBtYWtlX3dyYXAgXCJ3cmFwLXJldmVyc2VcIlxuICAgIHwgYERlZmF1bHQgLT4gZW1wdHlcbiAgaW5cbiAgbGV0IGFsaWduX2l0ZW1zID1cbiAgICBtYXRjaCBhbGlnbl9pdGVtcyB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbGlnbi1pdGVtc1wiIH52YWx1ZTooaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQgYWxpZ25fY29udGVudCA9XG4gICAgbWF0Y2ggYWxpZ25fY29udGVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24tY29udGVudFwiIH52YWx1ZTooY29udGVudF9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQganVzdGlmeV9jb250ZW50ID1cbiAgICBtYXRjaCBqdXN0aWZ5X2NvbnRlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImp1c3RpZnktY29udGVudFwiIH52YWx1ZTooanVzdGlmeV9jb250ZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IHJvd19nYXAgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OmVtcHR5IH5mOnJvd19nYXAgcmcgaW5cbiAgbGV0IGNvbHVtbl9nYXAgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OmVtcHR5IH5mOmNvbHVtbl9nYXAgY2cgaW5cbiAgY29uY2F0XG4gICAgWyBkaXNwbGF5IChpZiBpbmxpbmUgdGhlbiBgSW5saW5lX2ZsZXggZWxzZSBgRmxleClcbiAgICA7IGRpcmVjdGlvblxuICAgIDsgd3JhcFxuICAgIDsgYWxpZ25faXRlbXNcbiAgICA7IGFsaWduX2NvbnRlbnRcbiAgICA7IGp1c3RpZnlfY29udGVudFxuICAgIDsgY29sdW1uX2dhcFxuICAgIDsgcm93X2dhcFxuICAgIF1cbjs7XG5cbmxldCBmbGV4X2l0ZW0gP29yZGVyID8oYmFzaXMgPSBgQXV0bykgPyhzaHJpbmsgPSAxLikgfmdyb3cgKCkgPVxuICBsZXQgb3JkZXIgPVxuICAgIE9wdGlvbi5tYXAgb3JkZXIgfmY6KGZ1biBpIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwib3JkZXJcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gICAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgICB8PiBMaXN0LmpvaW5cbiAgaW5cbiAgbGV0IGZsZXggPVxuICAgIGxldCBiYXNpcyA9IEF1dG9fb3JfbGVuZ3RoLnRvX3N0cmluZ19jc3MgYmFzaXMgaW5cbiAgICBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXhcIiB+dmFsdWU6WyVzdHJpbmcgXCIle2YycyA2IGdyb3d9ICV7ZjJzIDYgc2hyaW5rfSAle2Jhc2lzfVwiXVxuICBpblxuICBjb25jYXQgWyBmbGV4OyBvcmRlciBdXG47O1xuXG5sZXQgYWxpZ25fc2VsZiBhID1cbiAgbGV0IHZhbHVlID0gaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24tc2VsZlwiIH52YWx1ZVxuOztcblxubGV0IHJlc2l6ZSAodmFsdWUgOiBbIGBOb25lIHwgYEJvdGggfCBgSG9yaXpvbnRhbCB8IGBWZXJ0aWNhbCB8IGNzc19nbG9iYWxfdmFsdWVzIF0pID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICB8IGBIb3Jpem9udGFsIC0+IFwiaG9yaXpvbnRhbFwiXG4gICAgfCBgVmVydGljYWwgLT4gXCJ2ZXJ0aWNhbFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJyZXNpemVcIiB+dmFsdWVcbjs7XG5cbmxldCBhbmltYXRpb24gfm5hbWUgfmR1cmF0aW9uID9kZWxheSA/ZGlyZWN0aW9uID9maWxsX21vZGUgP2l0ZXJfY291bnQgP3RpbWluZ19mdW5jdGlvbiAoKVxuICA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBsZXQgc3Bhbl90b19zdHJpbmcgcyA9IFslc3RyaW5nIFwiJXtmMnMgMiAoVGltZV9ucy5TcGFuLnRvX3NlYyBzKX1zXCJdIGluXG4gIGxldCBkaXJlY3Rpb24gPVxuICAgIG0gZGlyZWN0aW9uIH5mOihmdW4gZCAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgICAgIHwgYFJldmVyc2UgLT4gXCJyZXZlcnNlXCJcbiAgICAgICAgfCBgQWx0ZXJuYXRlIC0+IFwiYWx0ZXJuYXRlXCJcbiAgICAgICAgfCBgQWx0ZXJuYXRlX3JldmVyc2UgLT4gXCJhbHRlcm5hdGUtcmV2ZXJzZVwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgICAgaW5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRpcmVjdGlvblwiIH52YWx1ZSlcbiAgaW5cbiAgbGV0IGZpbGxfbW9kZSA9XG4gICAgbSBmaWxsX21vZGUgfmY6KGZ1biBmIC0+XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBtYXRjaCBmIHdpdGhcbiAgICAgICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgICAgICB8IGBGb3J3YXJkcyAtPiBcImZvcndhcmRzXCJcbiAgICAgICAgfCBgQmFja3dhcmRzIC0+IFwiYmFja3dhcmRzXCJcbiAgICAgICAgfCBgQm90aCAtPiBcImJvdGhcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1maWxsLW1vZGVcIiB+dmFsdWUpXG4gIGluXG4gIFsgU29tZSAoY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tbmFtZVwiIH52YWx1ZTpuYW1lKVxuICA7IFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWR1cmF0aW9uXCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBkdXJhdGlvbikpXG4gIDsgbSBkZWxheSB+ZjooZnVuIHMgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZGVsYXlcIiB+dmFsdWU6KHNwYW5fdG9fc3RyaW5nIHMpKVxuICA7IG0gaXRlcl9jb3VudCB+ZjooZnVuIGkgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKSlcbiAgOyBtIHRpbWluZ19mdW5jdGlvbiB+ZjooZnVuIHZhbHVlIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIiB+dmFsdWUpXG4gIDsgZGlyZWN0aW9uXG4gIDsgZmlsbF9tb2RlXG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxudHlwZSB1c2VyX3NlbGVjdCA9XG4gIFsgYEFsbFxuICB8IGBBdXRvXG4gIHwgYE5vbmVcbiAgfCBgVGV4dFxuICBdXG5cbmxldCB1c2VyX3NlbGVjdF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgfCBgQXV0byAtPiBcImF1dG9cIlxuICB8IGBOb25lIC0+IFwibm9uZVwiXG4gIHwgYFRleHQgLT4gXCJ0ZXh0XCJcbjs7XG5cbmxldCB1c2VyX3NlbGVjdCBzID1cbiAgbGV0IHZhbHVlID0gdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyBzIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidXNlci1zZWxlY3RcIiB+dmFsdWVcbjs7XG5cblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidG9fc3RyaW5nX2NzcyAtPiBvZl9zdHJpbmdfY3NzX2V4biAtPiB0b19zdHJpbmdfY3NzXCIgPVxuICAgICAgbGV0IHQgY3NzID1cbiAgICAgICAgbGV0IHMgPSB0b19zdHJpbmdfY3NzIGNzcyBpblxuICAgICAgICBsZXQgczIgPSB0b19zdHJpbmdfY3NzIChvZl9zdHJpbmdfY3NzX2V4biBzKSBpblxuICAgICAgICBwcmludF9lbmRsaW5lIHM7XG4gICAgICAgIHByaW50X2VuZGxpbmUgczJcbiAgICAgIGluXG4gICAgICB0IChmbGV4X2l0ZW0gfmdyb3c6MS4wICgpIEA+IG92ZXJmbG93IGBTY3JvbGwpO1xuICAgICAgdCAoZmxleF9jb250YWluZXIgfmlubGluZTp0cnVlIH5kaXJlY3Rpb246YENvbHVtbiAoKSBAPiBib3JkZXIgfnN0eWxlOmBEYXNoZWQgKCkpO1xuICAgICAgdCAoY29sb3IgKGBSR0JBIChDb2xvci5SR0JBLmNyZWF0ZSB+cjoxMDAgfmc6MTAwIH5iOjEwMCAoKSkpKTtcbiAgICAgIHRcbiAgICAgICAgKGNvbG9yXG4gICAgICAgICAgIChgSFNMQVxuICAgICAgICAgICAgICAoQ29sb3IuSFNMQS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgfmg6MTAwXG4gICAgICAgICAgICAgICAgIH5zOihQZXJjZW50Lm9mX211bHQgMC43NSlcbiAgICAgICAgICAgICAgICAgfmw6KFBlcmNlbnQub2ZfbXVsdCAwLjYwKVxuICAgICAgICAgICAgICAgICAoKSkpKTtcbiAgICAgIHQgKGNyZWF0ZSB+ZmllbGQ6XCJjb250ZW50XCIgfnZhbHVlOnt8XCI7XCJ8fSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGZsZXg6IDEuMDAwMDAwIDEuMDAwMDAwIGF1dG87b3ZlcmZsb3c6IHNjcm9sbFxuICAgIGZsZXg6IDEuMDAwMDAwIDEuMDAwMDAwIGF1dG87b3ZlcmZsb3c6IHNjcm9sbFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47ZmxleC13cmFwOiBub3dyYXA7Ym9yZGVyOiBkYXNoZWRcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogcmdiKDEwMCwxMDAsMTAwKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29sb3I6IGhzbCgxMDAsNzUlLDYwJSlcbiAgICBjb250ZW50OiBcIjtcIlxuICAgIGNvbnRlbnQ6IFwiO1wiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJncmFkaWVudHNcIiA9XG4gICAgICBsZXQgcCB4ID0gUGVyY2VudC5vZl9tdWx0IHggaW5cbiAgICAgIGxldCBjIHMgPSBgTmFtZSBzIGluXG4gICAgICBsZXQgdCBjc3MgPSBwcmludF9lbmRsaW5lICh0b19zdHJpbmdfY3NzIGNzcykgaW5cbiAgICAgIHRcbiAgICAgICAgKGJhY2tncm91bmRfaW1hZ2VcbiAgICAgICAgICAgKGBMaW5lYXJfZ3JhZGllbnRcbiAgICAgICAgICAgICAgeyBkaXJlY3Rpb24gPSBgRGVnIDkwXG4gICAgICAgICAgICAgIDsgc3RvcHMgPVxuICAgICAgICAgICAgICAgICAgWyBwIDAuLCBjIFwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgOyBwIDAuMiwgYyBcIiNmZjAwMDBcIlxuICAgICAgICAgICAgICAgICAgOyBwIDAuNCwgYyBcInJlZFwiXG4gICAgICAgICAgICAgICAgICA7ICggcCAxLlxuICAgICAgICAgICAgICAgICAgICAsIGBSR0JBXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjUwIH5iOjMwIH5hOihQZXJjZW50Lm9mX211bHQgMC43NSkgKCkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCBibGFjayAwLjAwMDAwMCUsICNmZjAwMDAgMjAuMDAwMDAwJSwgcmVkIDQwLjAwMDAwMCUsIHJnYmEoMTAwLDUwLDMwLDAuNzUpIDEwMC4wMDAwMDAlKSB8fV07XG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgPSBbIHAgMC4sIGMgXCJibGFja1wiOyBwIDEuLCBjIFwicmVkXCIgXSB9KSk7XG4gICAgICBbJWV4cGVjdCB7fCBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoYmxhY2sgMC4wMDAwMDAlLCByZWQgMTAwLjAwMDAwMCUpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbmxldCB0b19qc19zdHJpbmcgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9TdHJpbmdcbmxldCB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvRml4ZWQgZGlnaXRzXG5sZXQgdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9QcmVjaXNpb24gZGlnaXRzXG5sZXQgdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvRXhwb25lbnRpYWxcbmxldCB0b19zdHJpbmcgdmFsdWUgPSB0b19qc19zdHJpbmcgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IHRvX2pzX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgPSB0b19qc19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG9wZW4gQ29yZSBpblxuICBsZXQgcHJpbnQgZiA9IHByaW50ZiBcIiVzXCIgKHRvX3N0cmluZyBmKSBpblxuICBwcmludCAxLjtcbiAgWyVleHBlY3Qge3wgMSB8fV07XG4gIHByaW50IEZsb2F0Lm5hbjtcbiAgWyVleHBlY3Qge3wgTmFOIHx9XTtcbiAgcHJpbnQgRmxvYXQuaW5maW5pdHk7XG4gIFslZXhwZWN0IHt8IEluZmluaXR5IHx9XTtcbiAgcHJpbnQgRmxvYXQubmVnX2luZmluaXR5O1xuICBbJWV4cGVjdCB7fCAtSW5maW5pdHkgfH1dO1xuICBwcmludCAwLjAwMDAwMDAxO1xuICBbJWV4cGVjdCB7fCAxZS04IHx9XTtcbiAgcHJpbnQgKC0xLik7XG4gIFslZXhwZWN0IHt8IC0xIHx9XTtcbiAgcHJpbnQgMS4wMDAwMDAxO1xuICBbJWV4cGVjdCB7fCAxLjAwMDAwMDEgfH1dXG47O1xuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5pbmNsdWRlIFVpX2VmZmVjdFxuXG4oKiBBbGwgdmlzaWJpbGl0eSBoYW5kbGVycyBzZWUgYWxsIGV2ZW50cywgc28gYSBzaW1wbGUgbGlzdCBpcyBlbm91Z2guICAqKVxubGV0IHZpc2liaWxpdHlfaGFuZGxlcnMgOiAodW5pdCAtPiB1bml0KSBsaXN0IHJlZiA9IHJlZiBbXVxuXG5tb2R1bGUgdHlwZSBWaXNpYmlsaXR5X2hhbmRsZXIgPSBzaWdcbiAgdmFsIGhhbmRsZSA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBEZWZpbmVfdmlzaWJpbGl0eSAoVkggOiBWaXNpYmlsaXR5X2hhbmRsZXIpID0gc3RydWN0XG4gIGxldCAoKSA9IHZpc2liaWxpdHlfaGFuZGxlcnMgOj0gVkguaGFuZGxlIDo6ICF2aXNpYmlsaXR5X2hhbmRsZXJzXG5lbmRcblxudHlwZSBfIHQgKz1cbiAgfCBWaWV3cG9ydF9jaGFuZ2VkXG4gIHwgU3RvcF9wcm9wYWdhdGlvblxuICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uXG4gIHwgUHJldmVudF9kZWZhdWx0XG5cbmxldCBzZXF1ZW5jZV9hc19zaWJsaW5nIGxlZnQgfnVubGVzc19zdG9wcGVkID1cbiAgbGV0IHJlYyBjb250YWluc19zdG9wID0gZnVuY3Rpb25cbiAgICB8IE1hbnkgZXMgLT4gTGlzdC5leGlzdHMgZXMgfmY6Y29udGFpbnNfc3RvcFxuICAgIHwgU3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBjb250YWluc19zdG9wIGxlZnQgdGhlbiBsZWZ0IGVsc2UgVWlfZWZmZWN0Lk1hbnkgWyBsZWZ0OyB1bmxlc3Nfc3RvcHBlZCAoKSBdXG47O1xuXG4oKiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgZG9tIGV2ZW50IGhlcmUgc28gdGhhdFxuICAgbW92ZW1lbnQgYmV0d2VlbiBbVmRvbS5FZmZlY3QuRXhwZXJ0LmhhbmRsZV0gYW5kXG4gICBbVWlfY29uY3JldGUuRWZmZWN0LkV4cGVydC5oYW5kbGVdIGtlZXBzIHRoZSBvcmlnaW5hbFxuICAgZG9tIGV2ZW50IGFyb3VuZC4gKilcbmxldCBjdXJyZW50X2RvbV9ldmVudCA9IHJlZiBOb25lXG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6U3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgVmlld3BvcnRfY2hhbmdlZCkpXG4gICAgfmRhdGE6KGZ1biBfIC0+IExpc3QuaXRlciAhdmlzaWJpbGl0eV9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiAoKSkpXG47O1xuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OlN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFN0b3BfcHJvcGFnYXRpb24pKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBQcmV2ZW50X2RlZmF1bHQpKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tLnByZXZlbnREZWZhdWx0KVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuID0gRXhwZXJ0LmhhbmRsZVxuXG4gIGxldCBoYW5kbGUgZG9tX2V2ZW50IGV2ZW50ID1cbiAgICBsZXQgb2xkID0gIWN1cnJlbnRfZG9tX2V2ZW50IGluXG4gICAgY3VycmVudF9kb21fZXZlbnQgOj0gU29tZSAoZG9tX2V2ZW50IDo+IERvbV9odG1sLmVsZW1lbnQgRG9tLmV2ZW50IEpzLnQpO1xuICAgIEV4cGVydC5oYW5kbGUgZXZlbnQ7XG4gICAgY3VycmVudF9kb21fZXZlbnQgOj0gb2xkXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEpzX29mX29jYW1sXG5cbm1vZHVsZSB0eXBlIFMgPSBIb29rc19pbnRmLlNcbm1vZHVsZSB0eXBlIElucHV0ID0gSG9va3NfaW50Zi5JbnB1dFxuXG5sZXQgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBpZCA9IERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgaWRcblxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGYgPVxuICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSAoSnMud3JhcF9jYWxsYmFjayBmKVxuOztcblxubW9kdWxlIEV4dHJhID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHsgdHlwZV9pZDsgdmFsdWUgfSkgPSBUeXBlX2VxdWFsLklkLnRvX3NleHAgdHlwZV9pZCB2YWx1ZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgVCA6XG4gICAgICB7IGlucHV0IDogJ2lucHV0XG4gICAgICA7IGlucHV0X2lkIDogJ2lucHV0IFR5cGVfZXF1YWwuSWQudFxuICAgICAgOyBjb21iaW5lX2lucHV0cyA6ICdpbnB1dCAtPiAnaW5wdXQgLT4gJ2lucHV0XG4gICAgICA7IGluaXQgOlxuICAgICAgICAgICdpbnB1dFxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICA7IHVwZGF0ZSA6XG4gICAgICAgICAgJ2lucHV0XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgOyBkZXN0cm95IDpcbiAgICAgICAgICAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+IHVuaXRcbiAgICAgIDsgaWQgOiAoJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGUpIENvcmUuVHlwZV9lcXVhbC5JZC50XG4gICAgICB9XG4gICAgICAtPiB0XG5cbmxldCBnZW5lcmljX2hvb2sgPSBsYXp5IEpzLlVuc2FmZS4oZ2V0IGdsb2JhbCAoSnMuc3RyaW5nIFwiR2VuZXJpY0hvb2tcIikpXG5cbmxldCBtYWtlX2hvb2sgfmNvbWJpbmVfaW5wdXRzIH5pbml0IH5leHRyYTooaW5wdXQsIGlucHV0X2lkKSB+dXBkYXRlIH5kZXN0cm95IH5pZCA9XG4gIFQgeyBpbml0OyBjb21iaW5lX2lucHV0czsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkIH1cbjs7XG5cbmxldCBwYWNrIChUIHsgaW5pdDsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkOyBfIH0pID1cbiAgbGV0IHdyYXAgYSA9IGEgfD4gSnMud3JhcF9jYWxsYmFjayB8PiBKcy5VbnNhZmUuaW5qZWN0IGluXG4gIGxldCBpbml0ID0gd3JhcCAoaW5pdCBpbnB1dCkgaW5cbiAgbGV0IHVwZGF0ZSA9IHdyYXAgKHVwZGF0ZSBpbnB1dCkgaW5cbiAgbGV0IGRlc3Ryb3kgPSB3cmFwIGRlc3Ryb3kgaW5cbiAgbGV0IGdlbmVyaWNfaG9vayA9IExhenkuZm9yY2UgZ2VuZXJpY19ob29rIGluXG4gIGxldCBleHRyYSA9IEV4dHJhLlQgeyB0eXBlX2lkID0gaW5wdXRfaWQ7IHZhbHVlID0gaW5wdXQgfSBpblxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICBnZW5lcmljX2hvb2tcbiAgICBbfCBpbml0OyB1cGRhdGU7IGRlc3Ryb3k7IGlkIHw+IEpzLlVuc2FmZS5pbmplY3Q7IGV4dHJhIHw+IEpzLlVuc2FmZS5pbmplY3QgfF1cbjs7XG5cbmxldCBjb21iaW5lIChUIGxlZnQpIChUIHJpZ2h0KSA9XG4gIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzIGxlZnQuaW5wdXRfaWQgcmlnaHQuaW5wdXRfaWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBlcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiaG9va3MgZG8gbm90IGhhdmUgdGhlIHNhbWUgdHlwZSwgc28gdGhleSBjYW5ub3QgYmUgY29tYmluZWQ7IHRha2luZyB0aGUgc2Vjb25kIFxcXG4gICAgICAgICBvZiB0aGUgdHdvXCJdO1xuICAgIFQgcmlnaHRcbiAgfCBTb21lIFQgLT4gVCB7IHJpZ2h0IHdpdGggaW5wdXQgPSByaWdodC5jb21iaW5lX2lucHV0cyBsZWZ0LmlucHV0IHJpZ2h0LmlucHV0IH1cbjs7XG5cbm1vZHVsZSBNYWtlIChTIDogUykgPSBzdHJ1Y3RcbiAgbGV0IGlucHV0X2FuZF9zdGF0ZV9pZCA9XG4gICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiAoZnVuIChpbnB1dCwgX2FuaW1hdGlvbl9pZCwgc3RhdGUpIC0+XG4gICAgICBbJXNleHBfb2Y6IFMuSW5wdXQudCAqIG9wYXF1ZV0gKGlucHV0LCBzdGF0ZSkpXG4gIDs7XG5cbiAgbGV0IGlucHV0X2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiBTLklucHV0LnNleHBfb2ZfdFxuXG4gIGxldCBpbml0IGlucHV0IGVsZW1lbnQgPVxuICAgIGxldCBzdGF0ZSA9IFMuaW5pdCBpbnB1dCBlbGVtZW50IGluXG4gICAgbGV0IGFuaW1hdGlvbl9pZCA9XG4gICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSAoZnVuIF8gLT4gUy5vbl9tb3VudCBpbnB1dCBzdGF0ZSBlbGVtZW50KVxuICAgIGluXG4gICAgaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGVcbiAgOztcblxuICBsZXQgdXBkYXRlIGlucHV0IChvbGRfaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGUpIGVsZW1lbnQgPVxuICAgIFMudXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dDppbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgIGlucHV0LCBhbmltYXRpb25faWQsIHN0YXRlXG4gIDs7XG5cbiAgbGV0IGRlc3Ryb3kgKG9sZF9pbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZSkgZWxlbWVudCA9XG4gICAgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBhbmltYXRpb25faWQ7XG4gICAgUy5kZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBpbnB1dCA9XG4gICAgbWFrZV9ob29rXG4gICAgICB+ZXh0cmE6KGlucHV0LCBpbnB1dF9pZClcbiAgICAgIH5jb21iaW5lX2lucHV0czpTLklucHV0LmNvbWJpbmVcbiAgICAgIH5pZDppbnB1dF9hbmRfc3RhdGVfaWRcbiAgICAgIH5pbml0XG4gICAgICB+dXBkYXRlXG4gICAgICB+ZGVzdHJveVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCB0eXBlX2lkID0gaW5wdXRfaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBFeHRyYSA9IEV4dHJhXG5lbmRcbiIsIm9wZW4hIEpzX29mX29jYW1sXG5vcGVuISBKc1xuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIG1hcCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBzZXQgOiAnYSAtPiAnYiAtPiB1bml0IG1ldGhcbiAgbWV0aG9kIGdldCA6ICdhIC0+ICdiIE9wdGRlZi50IG1ldGhcbiAgbWV0aG9kIGRlbGV0ZSA6ICdhIC0+IHVuaXQgbWV0aFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIG1hcCBKcy50XG5cbmxldCBtYXAgOiB1bml0IC0+ICgnYSwgJ2IpIG1hcCBKcy50IEpzLmNvbnN0ciA9IGZ1biAoKSAtPiBVbnNhZmUuZ2xvYmFsIyMuX01hcFxuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IG1hcCA9IG1hcCAoKSBpblxuICBuZXclanMgbWFwXG47O1xuXG5sZXQgc2V0IHQgYSBiID0gdCMjc2V0IGEgYlxubGV0IGdldCB0IGEgPSBKcy5PcHRkZWYudG9fb3B0aW9uICh0IyNnZXQgYSlcbmxldCBkZWxldGUgdCBhID0gdCMjZGVsZXRlIGFcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgSnNfb2JqZWN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEpzLlVuc2FmZS5hbnlcblxuICBsZXQgZW1wdHlfb2JqICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG4gIGxldCBzZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWUgPSBKcy5VbnNhZmUuc2V0IHQgKEpzLnN0cmluZyBuYW1lKSB2YWx1ZVxuICBsZXQgZ2V0X3Byb3BfYXNjaWkgdCBuYW1lID0gSnMuVW5zYWZlLmdldCB0IChKcy5zdHJpbmcgbmFtZSlcbiAgbGV0IGhhc19wcm9wZXJ0eSB0IG5hbWUgPSBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmdldCB0IChKcy5zdHJpbmcgbmFtZSkpXG4gIGxldCBpc191bmRlZmluZWQgYSA9IG5vdCAoSnMuT3B0ZGVmLnRlc3QgYSlcbmVuZFxuXG5tb2R1bGUgQXR0cnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnNfb2JqZWN0LnRcblxuICBsZXQgY3JlYXRlICgpIDogdCA9IEpzX29iamVjdC5lbXB0eV9vYmogKClcblxuICBsZXQgc2V0X3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+IEpzX29iamVjdC5zZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWVcbiAgOztcblxuICBsZXQgaGFzX3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gYm9vbCA9IEpzX29iamVjdC5oYXNfcHJvcGVydHlcblxuICBsZXQgaGFzX2F0dHJpYnV0ZSB0IG5hbWUgPVxuICAgIEpzX29iamVjdC5oYXNfcHJvcGVydHkgdCBcImF0dHJpYnV0ZXNcIlxuICAgICYmIEpzX29iamVjdC5oYXNfcHJvcGVydHkgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lXG4gIDs7XG5cbiAgbGV0IHNldF9hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPVxuICAgIGZ1biB0IG5hbWUgdmFsdWUgLT5cbiAgICAgIGlmIEpzX29iamVjdC5pc191bmRlZmluZWQgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKVxuICAgICAgdGhlbiBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIiAoSnNfb2JqZWN0LmVtcHR5X29iaiAoKSk7XG4gICAgICBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lIHZhbHVlXG4gIDs7XG5lbmRcblxudHlwZSB2aXJ0dWFsX2RvbV9ub2RlXG50eXBlIHZpcnR1YWxfZG9tX3BhdGNoXG5cbm1vZHVsZSBWaXJ0dWFsX2RvbSA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIHZpcnR1YWxfZG9tID0gb2JqZWN0XG4gICAgbWV0aG9kIF9WTm9kZSA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnRcbiAgICAgICAtPiBBdHRycy50XG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZcbiAgICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpXG4gICAgICAgIEpzLmNvbnN0clxuICAgICAgICBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX1ZUZXh0IDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpIEpzLmNvbnN0ciBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3JlYXRlRWxlbWVudCA6IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIGRpZmYgOlxuICAgICAgdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCBwYXRjaCA6XG4gICAgICBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gdmlydHVhbF9kb21fcGF0Y2ggSnMudCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHN2ZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnRcbiAgICAgICAtPiBBdHRycy50XG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZcbiAgICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpXG4gICAgICAgIEpzLmNvbnN0clxuICAgICAgICBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGxldCB2aXJ0dWFsX2RvbSA6IHZpcnR1YWxfZG9tIEpzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsICMjLiBWaXJ0dWFsRG9tXG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgb3BlbiBWaXJ0dWFsX2RvbVxuXG4gIHR5cGUgdCA9IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuXG4gIGxldCB0b19kb20gOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50ID1cbiAgICBmdW4gdm5vZGUgLT4gdmlydHVhbF9kb20jI2NyZWF0ZUVsZW1lbnQgdm5vZGVcbiAgOztcblxuICBsZXQgbm9kZVxuICAgIDogIHN0cmluZyAtPiBBdHRycy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHN0cmluZyBvcHRpb25cbiAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuICAgID1cbiAgICBmdW4gdGFnIGF0dHJzIGNoaWxkcmVuIGtleSAtPlxuICAgICAgbGV0IHRhZyA9IEpzLnN0cmluZyB0YWcgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBtYXRjaCBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSnMuT3B0ZGVmLmVtcHR5XG4gICAgICAgIHwgU29tZSBrZXkgLT4gSnMuT3B0ZGVmLnJldHVybiAoSnNfb2Zfb2NhbWwuSnMuc3RyaW5nIGtleSlcbiAgICAgIGluXG4gICAgICBsZXQgdm5vZGUgPSB2aXJ0dWFsX2RvbSMjLl9WTm9kZSBpblxuICAgICAgbmV3JWpzIHZub2RlIHRhZyBhdHRycyBjaGlsZHJlbiBrZXlcbiAgOztcblxuICBsZXQgc3ZnXG4gICAgOiAgc3RyaW5nIC0+IEF0dHJzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50XG4gICAgPVxuICAgIGZ1biB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5IC0+XG4gICAgICBsZXQgdGFnID0gSnMuc3RyaW5nIHRhZyBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIG1hdGNoIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBKcy5PcHRkZWYuZW1wdHlcbiAgICAgICAgfCBTb21lIGtleSAtPiBKcy5PcHRkZWYucmV0dXJuIChKcy5zdHJpbmcga2V5KVxuICAgICAgaW5cbiAgICAgIGxldCB2c3ZnID0gdmlydHVhbF9kb20jIy5zdmcgaW5cbiAgICAgIG5ldyVqcyB2c3ZnIHRhZyBhdHRycyBjaGlsZHJlbiBrZXlcbiAgOztcblxuICBsZXQgdGV4dCBzID1cbiAgICBsZXQgdnRleHQgPSB2aXJ0dWFsX2RvbSMjLl9WVGV4dCBpblxuICAgIG5ldyVqcyB2dGV4dCAoSnMuc3RyaW5nIHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIFBhdGNoID0gc3RydWN0XG4gIG9wZW4gVmlydHVhbF9kb21cblxuICB0eXBlIHQgPSB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50XG5cbiAgbGV0IGRpZmYgOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgPVxuICAgIGZ1biBhIGIgLT4gdmlydHVhbF9kb20jI2RpZmYgYSBiXG4gIDs7XG5cbiAgbGV0IHBhdGNoIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50ID1cbiAgICBmdW4gZWxlbWVudCB2bm9kZSAtPiB2aXJ0dWFsX2RvbSMjcGF0Y2ggZWxlbWVudCB2bm9kZVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfnByZXZpb3VzIH5jdXJyZW50ID0gZGlmZiBwcmV2aW91cyBjdXJyZW50XG4gIGxldCBhcHBseSA9IHBhdGNoXG5cbiAgbGV0IGlzX2VtcHR5IDogdCAtPiBib29sID1cbiAgICBsZXQgZiA9XG4gICAgICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAgICAgIHtqc3xcbiAgICAgICAgKGZ1bmN0aW9uIChwYXRjaCkge1xuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwYXRjaCkge1xuICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2EnKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgIHxqc31cbiAgICBpblxuICAgIGZ1biAodCA6IHQpIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCBmIFt8IEpzLlVuc2FmZS5pbmplY3QgdCB8XSB8PiBKcy50b19ib29sXG4gIDs7XG5lbmRcblxubW9kdWxlIFdpZGdldCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIFsncywgJ2VsZW1lbnRdIHdpZGdldCA9IG9iamVjdFxuICAgIGNvbnN0cmFpbnQgJ2VsZW1lbnQgPSAjRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgbWV0aG9kIHR5cGVfIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICgqIHZpcnR1YWwtZG9tIGNvbnNpZGVycyB0d28gd2lkZ2V0cyBvZiBiZWluZyBvZiB0aGUgc2FtZSBcImtpbmRcIiBpZiBlaXRoZXJcbiAgICAgICBvZiB0aGUgZm9sbG93aW5nIGhvbGRzOlxuXG4gICAgICAgMS4gVGhleSBib3RoIGhhdmUgYSBcIm5hbWVcIiBhdHRyaWJ1dGUgYW5kIHRoZWlyIFwiaWRcIiBmaWVsZHMgYXJlIGVxdWFsLlxuICAgICAgIChJIHRoaW5rIHRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdmlydHVhbC1kb20gYW5kIGhhdmUgZmllbGQgYW4gaXNzdWVcbiAgICAgICBvbiBnaXRodWI6IFtodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2lzc3Vlcy8zODBdKVxuXG4gICAgICAgMi4gVGhlaXIgW2luaXRdIG1ldGhvZHMgYXJlIFwiPT09XCIgZXF1YWwuIFRoaXMgaXMgdHJ1ZSB3aGVuIHVzaW5nIHZpcnR1YWwtZG9tXG4gICAgICAgd2lkZ2V0cyBpbiB0aGUgdXN1YWwgc3R5bGUgaW4gSmF2YXNjcmlwdCwgc2luY2UgdGhlIFtpbml0XSBtZXRob2Qgd2lsbCBiZSBkZWZpbmVkXG4gICAgICAgb24gYSBwcm90b3R5cGUsIGJ1dCBpcyBub3QgdHJ1ZSBpbiB0aGlzIGJpbmRpbmcgYXMgaXQgaXMgcmVkZWZpbmVkIGZvciBlYWNoXG4gICAgICAgY2FsbCB0byBbd2lkZ2V0XS5cblxuICAgICAgIFNvLCB3ZSBnbyB3aXRoIG9wdGlvbiAxIGFuZCBtdXN0IGhhdmUgYSB0cml2aWFsIGZpZWxkIGNhbGxlZCBbbmFtZV0uXG4gICAgKilcbiAgICBtZXRob2QgbmFtZSA6IHVuaXQgSnMud3JpdGVvbmx5X3Byb3BcbiAgICBtZXRob2QgaWQgOiAoJ3MgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50IEpzLnByb3BcbiAgICBtZXRob2Qgc3RhdGUgOiAncyBKcy5wcm9wXG4gICAgbWV0aG9kIHZkb21Gb3JUZXN0aW5nIDogTm9kZS50IExhenkudCBvcHRpb24gSnMucHJvcFxuICAgIG1ldGhvZCBpbmZvIDogU2V4cC50IExhenkudCBvcHRpb24gSnMucHJvcFxuICAgIG1ldGhvZCBkZXN0cm95IDogKCdlbGVtZW50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2QgdXBkYXRlIDpcbiAgICAgICgoJ290aGVyX3N0YXRlLCAnb3RoZXJfZWxlbWVudCkgd2lkZ2V0IEpzLnQgLT4gJ2VsZW1lbnQgLT4gJ2VsZW1lbnQpIEpzLmNhbGxiYWNrXG4gICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2QgaW5pdCA6ICh1bml0IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICBlbmRcblxuICAoKiBXZSBtb2RlbCBKUyBsZXZlbCBvYmplY3RzIGhlcmUgc28gdGhlcmUgaXMgYSBsb3Qgb2YgdGhyb3dpbmcgYXdheSBvZiB0eXBlXG4gICAgIGluZm9ybWF0aW9uLiAgV2UgY291bGQgcG9zc2libHkgdHJ5IHRvIHJlZGlzY292ZXIgbW9yZSBvZiBpdC4gIE9yIG1heWJlIHdlXG4gICAgIHNob3VsZCBzZWUgaWYgd2UgY2FuIGdldCByaWQgV2lkZ2V0IGNvbXBsZXRlbHkuXG4gICAgIHRoZSB1bml0IHR5cGUgcGFyYW1ldGVycyBoZXJlIGFyZSBub3QgYWN0dWFsbHkgdW5pdCwgYnV0IHBhcnQgb2ZcbiAgICAgdGhlIHR5cGUgaW5mbyB3ZSBoYXZlIHRocm93biBhd2F5IGludG8gb3VyIGRhbmNlXG4gICAgIHdpdGggSlMgKilcbiAgdHlwZSB0ID0gTm9kZS50XG5cbiAgKCogaGVyZSBpcyBob3cgd2UgdGhyb3cgYXdheSB0eXBlIGluZm9ybWF0aW9uLiAgT3VyIGdvb2Qgb2xkIGZyaWVuZCBPYmoubWFnaWMsXG4gICAgIGJ1dCBjb25zdHJhaW5lZCBhIGxpdHRsZSBiaXQgKilcbiAgbGV0IG5vZGVfb2Zfd2lkZ2V0IDogKF8sIF8pIHdpZGdldCBKcy50IC0+IE5vZGUudCA9IFN0ZGxpYi5PYmoubWFnaWNcblxuICBtb2R1bGUgU3RhdGVfa2VlcGVyID0gc3RydWN0XG4gICAgdHlwZSBib3ggPSBUIDogKCdhICogXykgVHlwZV9lcXVhbC5JZC50ICogJ2EgLT4gYm94XG5cbiAgICBsZXQgdCA6IChKcy5VbnNhZmUuYW55LCBib3gpIEpzX21hcC50ID0gSnNfbWFwLmNyZWF0ZSAoKVxuICAgIGxldCBzZXQgfmlkIGVsZW1lbnQgc3RhdGUgPSBKc19tYXAuc2V0IHQgKEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCkgKFQgKGlkLCBzdGF0ZSkpXG5cbiAgICBsZXQgZ2V0IDogdHlwZSBhIGIuIGlkOihhICogYikgVHlwZV9lcXVhbC5JZC50IC0+IF8gLT4gYSA9XG4gICAgICBmdW4gfmlkIGVsZW1lbnQgLT5cbiAgICAgIGxldCBlbGVtZW50ID0gSnMuVW5zYWZlLmluamVjdCBlbGVtZW50IGluXG4gICAgICBtYXRjaCBKc19tYXAuZ2V0IHQgZWxlbWVudCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGlkX3NleHAgPSBUeXBlX2VxdWFsLklkLnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiPG9wYXF1ZT5cIikgaWQgaW5cbiAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUc6IGVsZW1lbnQgc3RhdGUgbm90IGZvdW5kXCIgKGlkX3NleHAgOiBTZXhwLnQpXVxuICAgICAgfCBTb21lIChUIChmX2lkLCBzdGF0ZSkpIC0+XG4gICAgICAgIGxldCBUID0gVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIGlkIGZfaWQgaW5cbiAgICAgICAgc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGRlbGV0ZSBlbGVtZW50ID0gSnNfbWFwLmRlbGV0ZSB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgKHR5cGUgcylcbiAgICAgICAgPyh2ZG9tX2Zvcl90ZXN0aW5nIDogTm9kZS50IExhenkudCBvcHRpb24pXG4gICAgICAgID8oZGVzdHJveSA6IHMgLT4gJ2VsZW1lbnQgLT4gdW5pdCA9IGZ1biBfIF8gLT4gKCkpXG4gICAgICAgID8odXBkYXRlIDogcyAtPiAnZWxlbWVudCAtPiBzICogJ2VsZW1lbnQgPSBmdW4gcyBlbHQgLT4gcywgZWx0KVxuICAgICAgICB+KGlkIDogKHMgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50KVxuICAgICAgICB+KGluaXQgOiB1bml0IC0+IHMgKiAnZWxlbWVudClcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IG9iaiA6IChzLCBfKSB3aWRnZXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIG9iaiMjLnR5cGVfIDo9IEpzLnN0cmluZyBcIldpZGdldFwiO1xuICAgIG9iaiMjLm5hbWUgOj0gKCk7XG4gICAgb2JqIyMuaWQgOj0gaWQ7XG4gICAgb2JqIyMudmRvbUZvclRlc3RpbmcgOj0gdmRvbV9mb3JfdGVzdGluZztcbiAgICBvYmojIy5pbml0XG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICBsZXQgczAsIGRvbV9ub2RlID0gaW5pdCAoKSBpblxuICAgICAgU3RhdGVfa2VlcGVyLnNldCB+aWQgZG9tX25vZGUgczA7XG4gICAgICBkb21fbm9kZSk7XG4gICAgb2JqIyMudXBkYXRlXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZXYgZG9tX25vZGUgLT5cbiAgICAgICgqIFRoZSBbdXBkYXRlXSBtZXRob2Qgb2YgW29ial0gaXMgb25seSBjYWxsZWQgYnkgdmlydHVhbC1kb20gYWZ0ZXIgaXQgaGFzIGNoZWNrZWRcbiAgICAgICAgIHRoYXQgdGhlIFtpZF1zIG9mIFtwcmV2XSBhbmQgW29ial0gYXJlIFwiPT09XCIgZXF1YWwuIFRodXMgW3NhbWVfd2l0bmVzc19leG5dIHdpbGxcbiAgICAgICAgIG5ldmVyIHJhaXNlLiAqKVxuICAgICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIHByZXYjIy5pZCBpZCB3aXRoXG4gICAgICB8IFR5cGVfZXF1YWwuVCAtPlxuICAgICAgICBsZXQgcHJldl9zdGF0ZSA9IFN0YXRlX2tlZXBlci5nZXQgfmlkIGRvbV9ub2RlIGluXG4gICAgICAgIGxldCBzdGF0ZScsIGRvbV9ub2RlJyA9IHVwZGF0ZSBwcmV2X3N0YXRlIGRvbV9ub2RlIGluXG4gICAgICAgIFN0YXRlX2tlZXBlci5kZWxldGUgZG9tX25vZGU7XG4gICAgICAgIFN0YXRlX2tlZXBlci5zZXQgfmlkIGRvbV9ub2RlJyBzdGF0ZSc7XG4gICAgICAgIGRvbV9ub2RlJyk7XG4gICAgb2JqIyMuZGVzdHJveVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBkb21fbm9kZSAtPlxuICAgICAgbGV0IHByZXZfc3RhdGUgPSBTdGF0ZV9rZWVwZXIuZ2V0IH5pZCBkb21fbm9kZSBpblxuICAgICAgZGVzdHJveSBwcmV2X3N0YXRlIGRvbV9ub2RlO1xuICAgICAgU3RhdGVfa2VlcGVyLmRlbGV0ZSBkb21fbm9kZSk7XG4gICAgbm9kZV9vZl93aWRnZXQgb2JqXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBWZG9tX3JhdyA9IFJhd1xuXG5sZXQgKCkgPVxuICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gIENzc19nZW4uUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA6PSBEb21fZmxvYXQudG9fc3RyaW5nX2ZpeGVkXG47O1xuXG4oKiogVGhpcyBoYXMgMyBraW5kcyBvZiBjb25zdHJ1Y3RvcnMuXG4gICAge3ZcbiAgICAgIC0gY29uc3RydWN0b3JzIGZvciBwcm9wZXJ0aWVzIC8gYXR0cmlidXRlcyBmb3Igd2hpY2ggd2VcbiAgICAgICAgaGF2ZSB3cml0dGVuIGZpcnN0IGNsYXNzIG9jYW1sIHJlcHJlc2VudGF0aW9ucyAoc28gZmFyIG9ubHkgU3R5bGUsXG4gICAgICAgIENsYXNzLCBhbmQgSGFuZGxlcilcblxuICAgICAgLSBUaG9zZSB3aGljaCB3ZSBpbW1lZGlhdGVseSBjb252ZXJ0IGludG8gSnMgY2FsbGVkIFJhdywgd2hpY2hcbiAgICAgICAgaW4gdHVybiBoYXMgdHdvIGNhc2VzOlxuICAgICAgICAtIFByb3BlcnR5IGZvciBwcm9wZXJ0aWVzIG9uIHRoZSBET01cbiAgICAgICAgLSBBdHRyaWJ1dGUgZm9yIGF0dHJpYnV0ZXMgb24gdGhlIERPTVxuXG4gICAgICAtIEhvb2tzLCB3aGljaCByZWdpc3RlciBjYWxsYmFja3Mgb24gcHJvcGVydHkgYWRkaXRpb24gYW5kIHJlbW92YWwuXG4gICAgdn1cblxuICAgIEdlbmVyYWxseSBzcGVha2luZyBvbmUgc2hvdWxkIGF2b2lkIGNyZWF0aW5nIGEgcHJvcGVydHkgb3IgYXR0cmlidXRlXG4gICAgZm9yIHNvbWV0aGluZyBmb3Igd2hpY2ggd2UgaGF2ZSBhIGZpcnN0IGNsYXNzIHJlcHJlc2VudGF0aW9uLlxuKilcblxubW9kdWxlIEV2ZW50X2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyBoYW5kbGVyIDogKCNEb21faHRtbC5ldmVudCBhcyAnYSkgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50XG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBjb21iaW5lXG4gICAgICAgIChUIHsgdHlwZV9pZCA9IGx0aWQ7IGhhbmRsZXIgPSBsaGFuZGxlciB9KVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBydGlkOyBoYW5kbGVyID0gcmhhbmRsZXIgfSBhcyByaWdodClcbiAgICA9XG4gICAgKCogSWYgdGhleSBhcmUgbm90IHRoZSBzYW1lIHdpdG5lc3MsIHRoZW4gaXQgaXMgYSBidWcgaW4gdmlydHVhbF9kb20sIHNpbmNlXG4gICAgICAgd2UgZG8gbm90IGV4cG9zZSBbb25dIGFueW1vcmUgd2hpY2ggbWVhbnMgdGhpcyBsaWJyYXJ5IGNhbiBkZXRlcm1pbmVkIHRoZVxuICAgICAgIFtUeXBlX2VxdWFsLklkXSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZXZlbnQuIHZpcnR1YWxfZG9tIG1haW50YWlucyB0aGVcbiAgICAgICBpbnZhcmlhbnQgdGhhdCBhbnkgdHdvIGV2ZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUgd2lsbCBwcm9kdWNlIGhhbmRsZXJzXG4gICAgICAgdGhhdCBoYXZlIHRoZSBzYW1lIFtUeXBlX2VxdWFsLklkXS4gKilcbiAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsdGlkIHJ0aWQgd2l0aFxuICAgIHwgU29tZSBUIC0+XG4gICAgICBUXG4gICAgICAgIHsgdHlwZV9pZCA9IGx0aWRcbiAgICAgICAgOyBoYW5kbGVyID1cbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgIEVmZmVjdC5zZXF1ZW5jZV9hc19zaWJsaW5nIChsaGFuZGxlciB2YWx1ZSkgfnVubGVzc19zdG9wcGVkOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgcmhhbmRsZXIgdmFsdWUpKVxuICAgICAgICB9XG4gICAgfCBOb25lIC0+XG4gICAgICBlcHJpbnRfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJVRyEgIFR5cGUtaWRzIGZvciBldmVudCBoYW5kbGVycyBkaWZmZXJcIlxuICAgICAgICAgICAgKGx0aWQgOiBfIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgICAgIChydGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXTtcbiAgICAgIHJpZ2h0XG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgfCBQcm9wZXJ0eSBvZlxuICAgICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA6IGJvb2xcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2YWx1ZSA6IEpzLlVuc2FmZS5hbnlcbiAgICAgIH1cbiAgfCBBdHRyaWJ1dGUgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgSGFuZGxlciBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhhbmRsZXIgOiBFdmVudF9oYW5kbGVyLnRcbiAgICAgIH1cbiAgfCBIb29rIG9mXG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgaG9vayA6IEhvb2tzLnRcbiAgICAgIH1cbiAgfCBTdHlsZSBvZiBDc3NfZ2VuLnRcbiAgfCBDbGFzcyBvZiBzdHJpbmcgbGlzdFxuICB8IE1hbnkgb2YgdCBsaXN0XG4gIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyBvZlxuICAgICAgdCBsaXN0ICogKENzc19nZW4udCAtPiBDc3NfZ2VuLnQpICogKHN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0KVxuICB8IE1hbnlfd2l0aG91dF9tZXJnZSBvZiB0IGxpc3RcblxubGV0IGNyZWF0ZSBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2YWx1ZSkgfVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdCBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlXG4gICAgOyBuYW1lXG4gICAgOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKERvbV9mbG9hdC50b19qc19zdHJpbmcgdmFsdWUpXG4gICAgfVxuOztcblxubGV0IHByb3BlcnR5IG5hbWUgdmFsdWUgPSBQcm9wZXJ0eSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlIH1cblxubGV0IHN0cmluZ19wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHZhbHVlKSB9XG47O1xuXG5sZXQgYm9vbF9wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuYm9vbCB2YWx1ZSkgfVxuOztcblxubGV0IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZnVuY3Rpb25cbiAgfCBBdHRyaWJ1dGUgYXR0cmlidXRlIC0+IEF0dHJpYnV0ZSB7IGF0dHJpYnV0ZSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgUHJvcGVydHkgcHJvcGVydHkgLT4gUHJvcGVydHkgeyBwcm9wZXJ0eSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY3JlYXRlX2hvb2sgbmFtZSBob29rID0gSG9vayB7IG5hbWU7IGhvb2sgfVxubGV0IG1hbnkgYXR0cnMgPSBNYW55IGF0dHJzXG5sZXQgbWFueV93aXRob3V0X21lcmdlIGF0dHJzID0gTWFueV93aXRob3V0X21lcmdlIGF0dHJzXG5sZXQgZW1wdHkgPSBNYW55IFtdXG5sZXQgY29tYmluZSBsZWZ0IHJpZ2h0ID0gTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbmxldCAoIEAgKSA9IGNvbWJpbmVcblxubW9kdWxlIFVubWVyZ2VkX3dhcm5pbmdfbW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTm9fd2FybmluZ3NcbiAgICB8IEFsbF93YXJuaW5nc1xuICAgIHwgU3RvcF9hZnRlcl9xdW90YSBvZiBpbnRcblxuICBsZXQgd2FybmluZ19jb3VudCA9IHJlZiAwXG4gIGxldCBjdXJyZW50ID0gcmVmIChTdG9wX2FmdGVyX3F1b3RhIDEwMClcblxuICBsZXQgd2Fybl9zIHMgPVxuICAgIGluY3Igd2FybmluZ19jb3VudDtcbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb193YXJuaW5ncyAtPiAoKVxuICAgIHwgQWxsX3dhcm5pbmdzIC0+IGVwcmludF9zIHNcbiAgICB8IFN0b3BfYWZ0ZXJfcXVvdGEgcXVvdGEgLT5cbiAgICAgIGxldCB3YXJuaW5nX2NvdW50ID0gIXdhcm5pbmdfY291bnQgaW5cbiAgICAgIGlmIHdhcm5pbmdfY291bnQgPD0gcXVvdGFcbiAgICAgIHRoZW4gKFxuICAgICAgICBlcHJpbnRfcyBzO1xuICAgICAgICBpZiB3YXJuaW5nX2NvdW50ID0gcXVvdGFcbiAgICAgICAgdGhlblxuICAgICAgICAgIGVwcmludF9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJXQVJOSU5HOiByZWFjaGVkIHdhcm5pbmcgbWVzc2FnZSBxdW90YTsgbm8gbW9yZSBtZXNzYWdlcyB3aWxsIGJlIHByaW50ZWRcIlxuICAgICAgICAgICAgICAgIChxdW90YSA6IGludCldKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCByZXNldF93YXJuaW5nX2NvdW50ICgpID0gd2FybmluZ19jb3VudCA6PSAwXG4gIGVuZFxuZW5kXG5cbnR5cGUgbWVyZ2UgPVxuICB7IHN0eWxlcyA6IENzc19nZW4udFxuICA7IGNsYXNzZXMgOiBzdHJpbmcgbGlzdFxuICA7IGhhbmRsZXJzIDogRXZlbnRfaGFuZGxlci50IE1hcC5NKFN0cmluZykudFxuICA7IGhvb2tzIDogSG9va3MudCBNYXAuTShTdHJpbmcpLnRcbiAgfVxuXG5sZXQgY29tYmluaW5nX21hcF9hZGQgbWFwIGtleSB2YWx1ZSB+Y29tYmluZSA9XG4gIE1hcC51cGRhdGUgbWFwIGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IFNvbWUgZXhpc3RpbmdfdmFsdWUgLT4gY29tYmluZSB+a2V5IGV4aXN0aW5nX3ZhbHVlIHZhbHVlXG4gICAgfCBOb25lIC0+IHZhbHVlKVxuOztcblxubGV0IGVtcHR5X21lcmdlID1cbiAgeyBzdHlsZXMgPSBDc3NfZ2VuLmVtcHR5XG4gIDsgY2xhc3NlcyA9IFtdXG4gIDsgaGFuZGxlcnMgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIDsgaG9va3MgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIH1cbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIGxldCBhdHRycyA9IFsgYXR0ciBdIGluXG4gICgqIFdoZW4gaW5wdXQgZWxlbWVudHMgaGF2ZSB0aGVpciB2YWx1ZSBzZXQgdG8gd2hhdCBpdCBhbHJlYWR5IGlzXG4gICAgIHRoZSBjdXJzb3IgZ2V0cyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZSBmaWVsZCBldmVuIHdoZW4gdGhlIHVzZXJcbiAgICAgaXMgZWRpdGluZyBpbiB0aGUgbWlkZGxlLiBTb2Z0U2V0SG9vayAoZnJvbSAuL3NvZnQtc2V0LWhvb2suanMpXG4gICAgIGNvbXBhcmVzIGJlZm9yZSBzZXR0aW5nLCBhdm9pZGluZyB0aGUgcHJvYmxlbSBqdXN0IGxpa2UgaW5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9pbmRleC5qcyNMNDMtTDUxXG5cbiAgICAgbm90ZSB0aGF0IEVsbSdzIHZpcnR1YWwtZG9tIGluY2x1ZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhpcyBzb1xuICAgICBpZiB3ZSBzd2l0Y2ggdG8gdGhhdCB0aGUgd29ya2Fyb3VuZCBoZXJlIHdpbGwgYmUgdW5uZWNlc3NhcnkuXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9lbG0tbGFuZy92aXJ0dWFsLWRvbS9ibG9iLzE3YjMwZmI3ZGU0ODY3MjU2NWQ2MjI3ZDMzYzAxNzZmMDc1Nzg2ZGIvc3JjL05hdGl2ZS9WaXJ0dWFsRG9tLmpzI0w0MzQtTDQzOVxuICAqKVxuICBsZXQgYXR0cnNfb2JqIDogVmRvbV9yYXcuQXR0cnMudCA9IFZkb21fcmF3LkF0dHJzLmNyZWF0ZSAoKSBpblxuICAoKiBbdGFrZV9zZWNvbmRfKl0gaXMgdGhlIHRyaXZpYWwgbWVyZ2UgZnVuY3Rpb24gKGkuZS4gbm8gbWVyZ2UgYXQgYWxsKTsgaXRcbiAgICAgdGFrZXMgdHdvIGF0dHJpYnV0ZXMgb2YgdGhlIHNhbWUga2luZCwgaWdub3JlcyBhIGZpcnN0LCBhbmQgZW1pdHNcbiAgICAgYSB3YXJuaW5nIGlmIFt3YXJuX2Fib3V0X3VubWVyZ2VkX2F0dHJpYnV0ZXNdIGlzIGVuYWJsZWQuICopXG4gIGxldCB0YWtlX3NlY29uZF9zdHlsZXMgZmlyc3Qgc2Vjb25kID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgZmlyc3QpXG4gICAgdGhlblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgc3R5bGVzXCIgKGZpcnN0IDogQ3NzX2dlbi50KSAoc2Vjb25kIDogQ3NzX2dlbi50KV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9jbGFzc2VzIGZpcnN0IHNlY29uZCA9XG4gICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IGZpcnN0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGZpcnN0ID0gTGlzdC5zb3J0IH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXSBmaXJzdCBpblxuICAgICAgbGV0IHNlY29uZCA9IExpc3Quc29ydCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ10gc2Vjb25kIGluXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBjbGFzc2VzXCIgKGZpcnN0IDogc3RyaW5nIGxpc3QpIChzZWNvbmQgOiBzdHJpbmcgbGlzdCldKTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hhbmRsZXIgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgaGFuZGxlcnNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfaG9vayB+a2V5Om5hbWUgX2ZpcnN0IHNlY29uZCA9XG4gICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fcyBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhvb2tzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgKCogV2UgbWVyZ2UgYXR0cmlidXRlcyB3aGVuIHRoZXkgYXJlIHdyaXR0ZW4gdG8gdGhlIHJhdyBhdHRyaWJ1dGUgb2JqZWN0LFxuICAgICByYXRoZXIgdGhhbiB3aGVuIHRoZSB1c2VyLWZhY2luZyBtZXJnZSBmdW5jdGlvbnMgKFttYW55XSwgW2NvbWJpbmVdLCBhbmRcbiAgICAgW0BdKSBhcmUgY2FsbGVkLiBUaGlzIHN0cmF0ZWd5IGlzIGJldHRlciBpbiBib3RoIHNwZWVkIGFuZCBtZW1vcnkgdXNhZ2UsXG4gICAgIHNpbmNlIGl0IG1lYW5zIHdlIGRvIG5vdCBuZWVkIHRvIGNvbmNhdGVuYXRlIHRoZSBsaXN0IG9mIFwidW5tZXJnZWFibGVcIlxuICAgICBhdHRyaWJ1dGVzIChQcm9wZXJ0eSBhbmQgQXR0cmlidXRlKTsgaW5zdGVhZCwgd2UgY2FuIGl0ZXJhdGUgdGhyb3VnaCB0aGVcbiAgICAgdHJlZSBvZiBhdHRyaWJ1dGVzIGFuZCBlYWdlcmx5IHdyaXRlIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgdG8gdGhlXG4gICAgIGF0dHJpYnV0ZSBvYmplY3QgYXMgd2UgZmluZCB0aGVtLiBJZiB0d28gdW5tZXJnZWFibGUgYXR0cmlidXRlcyBoYXZlIHRoZVxuICAgICBzYW1lIG5hbWUsIHRoZSBzZWNvbmQgd2lsbCBzaW1wbHkgb3ZlcndyaXRlIHRoZSBmaXJzdCwgYXMgZGVzaXJlZC5cblxuICAgICBJbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgYmVoYXZpb3Igb2YgdGhlIFtNdWx0aV0gbW9kdWxlICh0aGF0IGlzLFxuICAgICBpdCBtdXN0IGJlIHBvc3NpYmxlIHRvIG1lcmdlIGNsYXNzZXMgYW5kIHN0eWxlcywgYnV0IG5vdCBob29rcyBhbmRcbiAgICAgaGFuZGxlcnMpLCB3ZSBpbnRyb2R1Y2UgdGhlIHdvcmthcm91bmQgY29uc3RydWN0b3JcbiAgICAgW01hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNdLlxuXG4gICAgIFRoZXJlIGFyZSB0aHVzIHRocmVlIGNhc2VzIHRoYXQgZWFjaCBoYXZlIGRpZmZlcmVudCBtZXJnZSBiZWhhdmlvcnM6XG4gICAgIC0gU2ltcGxlIGxpc3RzIC0gbm8gbWVyZ2luZ1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV0gLSBtZXJnZXMgY2xhc3Nlcywgc3R5bGVzLCBob29rcywgYW5kIGhhbmRsZXJzXG4gICAgIC0gTGlzdHMgd3JhcHBlZCBpbiBhIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXSAtIG1lcmdlcyBjbGFzc2VzIGFuZCBzdHlsZXNcblxuICAgICBUbyBhdm9pZCBkdXBsaWNhdGluZyB0aGUgbWF0Y2ggZXhwcmVzc2lvbiBsb2dpYywgd2UgcGFyZW1ldGVyaXplIGl0IGJ5IHRoZVxuICAgICBtZXJnaW5nIGJlaGF2aW9yLCBzaW5jZSBcIm5vIG1lcmdlXCIgcmVhbGx5IG1lYW5zIFwibWVyZ2UgYnkgdGFraW5nIHRoZVxuICAgICBzZWNvbmQgb25lXCIuICopXG4gIGxldCByZWMgbWVyZ2UgfmNvbWJpbmVfaG9vayB+Y29tYmluZV9oYW5kbGVyIH5jb21iaW5lX3N0eWxlcyB+Y29tYmluZV9jbGFzc2VzIGFjYyA9XG4gICAgTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyBhdHRyIC0+XG4gICAgICBtYXRjaCBhdHRyIHdpdGhcbiAgICAgIHwgUHJvcGVydHkgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lICYmIG5vdCBzdXBwcmVzc19tZXJnZV93YXJuaW5nc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBwcm9wZXJ0aWVzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICAgICAgKG1hdGNoIG5hbWUgd2l0aFxuICAgICAgICAgfCBcInZhbHVlXCIgLT5cbiAgICAgICAgICAgbGV0IHNvZnRTZXRIb29rIHggOiBKcy5VbnNhZmUuYW55ID0gSnMuVW5zYWZlLmdsb2JhbCAjIyBTb2Z0U2V0SG9vayB4IGluXG4gICAgICAgICAgIGxldCB2YWx1ZSA9IHNvZnRTZXRIb29rIHZhbHVlIGluXG4gICAgICAgICAgIFZkb21fcmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogXCJ2YWx1ZVwiIHZhbHVlXG4gICAgICAgICB8IG5hbWUgLT4gUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSB2YWx1ZSk7XG4gICAgICAgIGFjY1xuICAgICAgfCBBdHRyaWJ1dGUgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX2F0dHJpYnV0ZSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgYXR0cmlidXRlc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlIGF0dHJzX29iaiBuYW1lIHZhbHVlO1xuICAgICAgICBhY2NcbiAgICAgIHwgU3R5bGUgbmV3X3N0eWxlcyAtPiB7IGFjYyB3aXRoIHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgbmV3X3N0eWxlcyB9XG4gICAgICB8IENsYXNzIG5ld19jbGFzc2VzIC0+XG4gICAgICAgIHsgYWNjIHdpdGggY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBuZXdfY2xhc3NlcyB9XG4gICAgICB8IEhvb2sgeyBuYW1lOyBob29rIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aCBob29rcyA9IGNvbWJpbmluZ19tYXBfYWRkIGFjYy5ob29rcyBuYW1lIGhvb2sgfmNvbWJpbmU6Y29tYmluZV9ob29rIH1cbiAgICAgIHwgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgfSAtPlxuICAgICAgICB7IGFjYyB3aXRoXG4gICAgICAgICAgaGFuZGxlcnMgPSBjb21iaW5pbmdfbWFwX2FkZCBhY2MuaGFuZGxlcnMgbmFtZSBoYW5kbGVyIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICB9XG4gICAgICB8IE1hbnkgYXR0cnMgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6KGZ1biB+a2V5Ol8gLT4gSG9va3MuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6KGZ1biB+a2V5Ol8gLT4gRXZlbnRfaGFuZGxlci5jb21iaW5lKVxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOkNzc19nZW4uY29tYmluZVxuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3NlczpDb3JlLiggQCApXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBtYXBfc3R5bGVzLCBtYXBfY2xhc3NlcykgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6Q3NzX2dlbi5jb21iaW5lXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOkNvcmUuKCBAIClcbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IG1hcF9zdHlsZXMgKGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlcylcbiAgICAgICAgOyBjbGFzc2VzID0gbWFwX2NsYXNzZXMgKGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3NlcylcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH1cbiAgICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9KVxuICBpblxuICBsZXQgbWVyZ2UgPVxuICAgIG1lcmdlXG4gICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICBlbXB0eV9tZXJnZVxuICAgICAgYXR0cnNcbiAgaW5cbiAgTWFwLml0ZXJpIG1lcmdlLmhvb2tzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOmhvb2sgLT5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lIChIb29rcy5wYWNrIGhvb2spKTtcbiAgTWFwLml0ZXJpIG1lcmdlLmhhbmRsZXJzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOihFdmVudF9oYW5kbGVyLlQgeyBoYW5kbGVyOyBfIH0pIC0+XG4gICAgbGV0IGYgZSA9XG4gICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZSBlIChoYW5kbGVyIGUpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIChcIm9uXCIgXiBuYW1lKSAoSnMuVW5zYWZlLmluamVjdCAoRG9tLmhhbmRsZXIgZikpKTtcbiAgbGV0ICgpID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgbWVyZ2Uuc3R5bGVzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByb3BzID0gQ3NzX2dlbi50b19zdHJpbmdfbGlzdCBtZXJnZS5zdHlsZXMgaW5cbiAgICAgIGxldCBvYmogPSBSYXcuQXR0cnMuY3JlYXRlICgpIGluXG4gICAgICBMaXN0Lml0ZXIgcHJvcHMgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBvYmogayAoSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHYpKSk7XG4gICAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBcInN0eWxlXCIgKG9iaiA6PiBKcy5VbnNhZmUuYW55KSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IG1lcmdlLmNsYXNzZXNcbiAgICB0aGVuICgpXG4gICAgZWxzZVxuICAgICAgUmF3LkF0dHJzLnNldF9hdHRyaWJ1dGVcbiAgICAgICAgYXR0cnNfb2JqXG4gICAgICAgIFwiY2xhc3NcIlxuICAgICAgICAoSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IG1lcmdlLmNsYXNzZXMgfnNlcDpcIiBcIikpKVxuICBpblxuICBhdHRyc19vYmpcbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIG1hdGNoIGF0dHIgd2l0aFxuICB8IE1hbnkgW10gfCBNYW55X3dpdGhvdXRfbWVyZ2UgW10gLT4gUmF3LkF0dHJzLmNyZWF0ZSAoKVxuICB8IGF0dHIgLT4gdG9fcmF3IGF0dHJcbjs7XG5cbmxldCBzdHlsZSBjc3MgPSBTdHlsZSBjc3NcbmxldCBjbGFzc18gY2xhc3NuYW1lID0gQ2xhc3MgWyBjbGFzc25hbWUgXVxubGV0IGNsYXNzZXMnIGNsYXNzZXMgPSBDbGFzcyAoU2V0LnRvX2xpc3QgY2xhc3NlcylcbmxldCBjbGFzc2VzIGNsYXNzbmFtZXMgPSBDbGFzcyBjbGFzc25hbWVzXG5sZXQgaWQgcyA9IGNyZWF0ZSBcImlkXCIgc1xubGV0IG5hbWUgcyA9IGNyZWF0ZSBcIm5hbWVcIiBzXG5sZXQgaHJlZiByID0gY3JlYXRlIFwiaHJlZlwiIHJcbmxldCBsYWJlbCByID0gY3JlYXRlIFwibGFiZWxcIiByXG5sZXQgdGFyZ2V0IHMgPSBjcmVhdGUgXCJ0YXJnZXRcIiBzXG5sZXQgY2hlY2tlZCA9IGNyZWF0ZSBcImNoZWNrZWRcIiBcIlwiXG5sZXQgc2VsZWN0ZWQgPSBjcmVhdGUgXCJzZWxlY3RlZFwiIFwiXCJcbmxldCBoaWRkZW4gPSBjcmVhdGUgXCJoaWRkZW5cIiBcIlwiXG5sZXQgcmVhZG9ubHkgPSBjcmVhdGUgXCJyZWFkb25seVwiIFwiXCJcbmxldCBkaXNhYmxlZCA9IGNyZWF0ZSBcImRpc2FibGVkXCIgXCJcIlxubGV0IHBsYWNlaG9sZGVyIHggPSBjcmVhdGUgXCJwbGFjZWhvbGRlclwiIHhcblxubGV0IGF1dG9mb2N1cyA9IGZ1bmN0aW9uXG4gIHwgdHJ1ZSAtPiBjcmVhdGUgXCJhdXRvZm9jdXNcIiBcIlwiXG4gIHwgZmFsc2UgLT4gZW1wdHlcbjs7XG5cbmxldCBmb3JfIHggPSBjcmVhdGUgXCJmb3JcIiB4XG5sZXQgdHlwZV8geCA9IGNyZWF0ZSBcInR5cGVcIiB4XG5sZXQgdmFsdWUgeCA9IGNyZWF0ZSBcInZhbHVlXCIgeFxubGV0IHZhbHVlX3Byb3AgeCA9IHN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgeFxubGV0IHRhYmluZGV4IHggPSBjcmVhdGUgXCJ0YWJpbmRleFwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgdGl0bGUgeCA9IGNyZWF0ZSBcInRpdGxlXCIgeFxubGV0IGFsdCB4ID0gY3JlYXRlIFwiYWx0XCIgeFxubGV0IHNyYyB4ID0gY3JlYXRlIFwic3JjXCIgeFxubGV0IG9wZW5fID0gY3JlYXRlIFwib3BlblwiIFwiXCJcbmxldCBzdGFydCB4ID0gY3JlYXRlIFwic3RhcnRcIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IG1pbiB4ID0gY3JlYXRlX2Zsb2F0IFwibWluXCIgeFxubGV0IG1heCB4ID0gY3JlYXRlX2Zsb2F0IFwibWF4XCIgeFxubGV0IG1pbl9kYXRlIHggPSBjcmVhdGUgXCJtaW5cIiAoRGF0ZS50b19zdHJpbmcgeClcbmxldCBtYXhfZGF0ZSB4ID0gY3JlYXRlIFwibWF4XCIgKERhdGUudG9fc3RyaW5nIHgpXG5sZXQgbWluX2RhdGVfdGltZSB4ID0gY3JlYXRlIFwibWluXCIgKERhdGUudG9fc3RyaW5nIHggXiBcIlQwMDowMFwiKVxubGV0IG1heF9kYXRlX3RpbWUgeCA9IGNyZWF0ZSBcIm1heFwiIChEYXRlLnRvX3N0cmluZyB4IF4gXCJUMjM6NTlcIilcbmxldCBjb2xzcGFuIHggPSBjcmVhdGUgXCJjb2xzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCByb3dzcGFuIHggPSBjcmVhdGUgXCJyb3dzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCBkcmFnZ2FibGUgYiA9IGNyZWF0ZSBcImRyYWdnYWJsZVwiIChCb29sLnRvX3N0cmluZyBiKVxuXG5tb2R1bGUgVHlwZV9pZCA9IHN0cnVjdFxuICAoKiBXZSBwcm92aWRlIGEgdHJpdmlhbCBbdG9fc2V4cF0gZnVuY3Rpb24gc2luY2Ugd2Ugb25seSB3YW50XG4gICAgIHRvIHVuaWZ5IHR5cGUgaWRzIGFuZCBub3QgY29udmVydCB0eXBlcyB0byBpZHMgKilcbiAgbGV0IGNyZWF0ZSBuYW1lID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgKGZ1biBfIC0+IFNleHBsaWIuU2V4cC5MaXN0IFtdKVxuICBsZXQgKGV2ZW50IDogRG9tX2h0bWwuZXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImV2ZW50XCJcbiAgbGV0IChmb2N1cyA6IERvbV9odG1sLmZvY3VzRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImZvY3VzRXZlbnRcIlxuICBsZXQgKG1vdXNlIDogRG9tX2h0bWwubW91c2VFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwibW91c2VFdmVudFwiXG4gIGxldCAoa2V5Ym9hcmQgOiBEb21faHRtbC5rZXlib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJrZXlib2FyZEV2ZW50XCJcbiAgbGV0IChzdWJtaXQgOiBEb21faHRtbC5zdWJtaXRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwic3VibWl0RXZlbnRcIlxuICBsZXQgKG1vdXNld2hlZWwgOiBEb21faHRtbC5tb3VzZXdoZWVsRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNld2hlZWxFdmVudFwiXG5cbiAgbGV0ICh3aGVlbCA6IEpzX29mX29jYW1sX3BhdGNoZXMuRG9tX2h0bWwud2hlZWxFdmVudCBUeXBlX2VxdWFsLklkLnQpID1cbiAgICBjcmVhdGUgXCJ3aGVlbHdoZWVsRXZlbnRcIlxuICA7O1xuXG4gIGxldCAoY2xpcGJvYXJkIDogRG9tX2h0bWwuY2xpcGJvYXJkRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImNsaXBib2FyZEV2ZW50XCJcbiAgbGV0IChkcmFnIDogRG9tX2h0bWwuZHJhZ0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJkcmFnRXZlbnRcIlxuICBsZXQgKHBvaW50ZXIgOiBEb21faHRtbC5wb2ludGVyRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInBvaW50ZXJFdmVudFwiXG4gIGxldCAoYW5pbWF0aW9uIDogRG9tX2h0bWwuYW5pbWF0aW9uRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImFuaW1hdGlvbkV2ZW50XCJcbmVuZFxuXG5sZXQgb24gdHlwZV9pZCBuYW1lIChoYW5kbGVyIDogI0RvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCkgOiB0ID1cbiAgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgPSBUIHsgaGFuZGxlcjsgdHlwZV9pZCB9IH1cbjs7XG5cbmxldCBvbl9mb2N1cyA9IG9uIFR5cGVfaWQuZm9jdXMgXCJmb2N1c1wiXG5sZXQgb25fYmx1ciA9IG9uIFR5cGVfaWQuZm9jdXMgXCJibHVyXCJcbmxldCBvbl9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJjbGlja1wiXG5sZXQgb25fY29udGV4dG1lbnUgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY29udGV4dG1lbnVcIlxubGV0IG9uX2RvdWJsZV9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJkYmxjbGlja1wiXG5sZXQgb25fZHJhZyA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdcIlxubGV0IG9uX2RyYWdzdGFydCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdzdGFydFwiXG5sZXQgb25fZHJhZ2VuZCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbmRcIlxubGV0IG9uX2RyYWdlbnRlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbnRlclwiXG5sZXQgb25fZHJhZ2xlYXZlID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2xlYXZlXCJcbmxldCBvbl9kcmFnb3ZlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdvdmVyXCJcbmxldCBvbl9kcm9wID0gb24gVHlwZV9pZC5kcmFnIFwiZHJvcFwiXG5sZXQgb25fbW91c2Vtb3ZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbW92ZVwiXG5sZXQgb25fbW91c2V1cCA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZXVwXCJcbmxldCBvbl9tb3VzZWRvd24gPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2Vkb3duXCJcbmxldCBvbl9tb3VzZWVudGVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZW50ZXJcIlxubGV0IG9uX21vdXNlbGVhdmUgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VsZWF2ZVwiXG5sZXQgb25fbW91c2VvdmVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3ZlclwiXG5sZXQgb25fbW91c2VvdXQgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VvdXRcIlxubGV0IG9uX2tleXVwID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleXVwXCJcbmxldCBvbl9rZXlwcmVzcyA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlwcmVzc1wiXG5sZXQgb25fa2V5ZG93biA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlkb3duXCJcbmxldCBvbl9zY3JvbGwgPSBvbiBUeXBlX2lkLmV2ZW50IFwic2Nyb2xsXCJcbmxldCBvbl9sb2FkID0gb24gVHlwZV9pZC5ldmVudCBcImxvYWRcIlxubGV0IG9uX3N1Ym1pdCA9IG9uIFR5cGVfaWQuc3VibWl0IFwic3VibWl0XCJcbmxldCBvbl9wb2ludGVyZG93biA9IG9uIFR5cGVfaWQucG9pbnRlciBcInBvaW50ZXJkb3duXCJcbmxldCBvbl9wb2ludGVydXAgPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVydXBcIlxubGV0IG9uX21vdXNld2hlZWwgPSBvbiBUeXBlX2lkLm1vdXNld2hlZWwgXCJtb3VzZXdoZWVsXCJcbmxldCBvbl93aGVlbCA9IG9uIFR5cGVfaWQud2hlZWwgXCJ3aGVlbFwiXG5sZXQgb25fY29weSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY29weVwiXG5sZXQgb25fY3V0ID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJjdXRcIlxubGV0IG9uX3Bhc3RlID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJwYXN0ZVwiXG5sZXQgb25fcmVzZXQgPSBvbiBUeXBlX2lkLmV2ZW50IFwicmVzZXRcIlxubGV0IG9uX2FuaW1hdGlvbmVuZCA9IG9uIFR5cGVfaWQuYW5pbWF0aW9uIFwiYW5pbWF0aW9uZW5kXCJcbmxldCBjb25zdF9pZ25vcmUgXyA9IEVmZmVjdC5JZ25vcmVcblxuY2xhc3MgdHlwZSB2YWx1ZV9lbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZWxlbWVudFxuICBtZXRob2QgdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5lbmRcblxudHlwZSB2YWx1ZV9jb2VyY2lvbiA9IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2YWx1ZV9lbGVtZW50IEpzLnQgSnMub3B0XG5cbmxldCBydW5fY29lcmNpb24gY29lcmNpb24gdGFyZ2V0IHByZXYgPVxuICBtYXRjaCBwcmV2IHdpdGhcbiAgfCBTb21lIF8gLT4gcHJldlxuICB8IE5vbmUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNpb24gdGFyZ2V0KVxuOztcblxubGV0IGNvZXJjZV92YWx1ZV9lbGVtZW50IHRhcmdldCA9XG4gIGxldCBvcGVuIERvbV9odG1sLkNvZXJjZVRvIGluXG4gIE5vbmVcbiAgfD4gcnVuX2NvZXJjaW9uIChpbnB1dCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAoc2VsZWN0IDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbiAgfD4gcnVuX2NvZXJjaW9uICh0ZXh0YXJlYSA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG47O1xuXG5sZXQgb25faW5wdXRfZXZlbnQgdHlwZV9pZCBldmVudCBoYW5kbGVyID1cbiAgb24gdHlwZV9pZCBldmVudCAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgIChjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQpXG4gICAgICAgIH5kZWZhdWx0OkVmZmVjdC5JZ25vcmVcbiAgICAgICAgfmY6KGZ1biB0YXJnZXQgLT5cbiAgICAgICAgICBsZXQgdGV4dCA9IEpzLnRvX3N0cmluZyB0YXJnZXQjIy52YWx1ZSBpblxuICAgICAgICAgIGhhbmRsZXIgZXYgdGV4dCkpKVxuOztcblxubGV0IG9uX2NoYW5nZSA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJjaGFuZ2VcIlxubGV0IG9uX2lucHV0ID0gb25faW5wdXRfZXZlbnQgVHlwZV9pZC5ldmVudCBcImlucHV0XCJcbmxldCB0b19yYXcgbCA9IHRvX3JhdyBsXG5cbmxldCBvbl9maWxlX2lucHV0IGhhbmRsZXIgPVxuICBvbiBUeXBlX2lkLmV2ZW50IFwiaW5wdXRcIiAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBKcy5PcHQuY2FzZSAoRG9tX2h0bWwuQ29lcmNlVG8uaW5wdXQgdGFyZ2V0KSBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgICAgSnMuT3B0ZGVmLmNhc2UgdGFyZ2V0IyMuZmlsZXMgY29uc3RfaWdub3JlIChmdW4gZmlsZXMgLT4gaGFuZGxlciBldiBmaWxlcykpKSlcbjs7XG5cbm1vZHVsZSBBbHdheXNfZm9jdXNfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml0XG5cbiAgICAgIGxldCBjb21iaW5lICgpICgpID0gKClcbiAgICBlbmRcblxuICAgIGxldCBpbml0ICgpIF8gPSAoKVxuICAgIGxldCBvbl9tb3VudCAoKSAoKSBlbGVtZW50ID0gZWxlbWVudCMjZm9jdXNcbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6KCkgfm5ld19pbnB1dDooKSAoKSBfID0gKClcbiAgICBsZXQgZGVzdHJveSAoKSAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSA9XG4gICAgKCogQXBwZW5kIHRoZSBpZCB0byB0aGUgbmFtZSBvZiB0aGUgaG9vayB0byBlbnN1cmUgdGhhdCBpdCBpcyBkaXN0aW5jdFxuICAgICAgIGZyb20gYWxsIG90aGVyIGZvY3VzIGhvb2tzLiAqKVxuICAgIGNyZWF0ZV9ob29rIFwiYWx3YXlzLWZvY3VzLWhvb2tcIiAoSG9vay5jcmVhdGUgKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFNpbmdsZV9mb2N1c19ob29rICgpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuXG4gICAgbGV0IGhhc19iZWVuX3VzZWQgPSByZWYgZmFsc2VcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHVuaXQgVWlfZWZmZWN0LnRbQHNleHAub3BhcXVlXSkgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgcmlnaHQgXVxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgXyBfID0gKClcblxuICAgIGxldCBvbl9tb3VudCBldmVudCAoKSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAhaGFzX2JlZW5fdXNlZFxuICAgICAgdGhlbiAoXG4gICAgICAgIGhhc19iZWVuX3VzZWQgOj0gdHJ1ZTtcbiAgICAgICAgZWxlbWVudCMjZm9jdXM7XG4gICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIGV2ZW50KVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6XyB+bmV3X2lucHV0Ol8gKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSB+YWZ0ZXIgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcInNpbmdsZS1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlIGFmdGVyKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBOb19vcF9ob29rIChNIDogc2lnXG4gICAgbW9kdWxlIElucHV0IDogSG9va3NfaW50Zi5JbnB1dFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcbiAgICAgIG1vZHVsZSBJbnB1dCA9IE0uSW5wdXRcblxuICAgICAgbGV0IGluaXQgXyBfID0gKClcbiAgICAgIGxldCBvbl9tb3VudCBfICgpIF8gPSAoKVxuICAgICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0Ol8gfm5ld19pbnB1dDpfICgpIF8gPSAoKVxuICAgICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgICBlbmQpXG5cbiAgbGV0IGF0dHIgaW5wdXQgPSBjcmVhdGVfaG9vayBNLm5hbWUgKEhvb2suY3JlYXRlIGlucHV0KVxuICBsZXQgdHlwZV9pZCA9IEhvb2suRm9yX3Rlc3RpbmcudHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IGxpc3RcblxuICBsZXQgbWFwX3N0eWxlIHQgfmYgPSBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIGYsIEZuLmlkKSBdXG4gIGxldCBhZGRfY2xhc3MgdCBjID0gWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgZnVuIGNzIC0+IGMgOjogY3MpIF1cbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfc3R5bGUgdCB+ZjooZnVuIHNzIC0+IENzc19nZW4uY29tYmluZSBzcyBzKVxuXG4gIGxldCBtZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgdCA9XG4gICAgWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgRm4uaWQpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ3NzX3Zhcl9ob29rID0gSG9va3MuTWFrZSAoc3RydWN0XG4gICAgb3BlbiBKc19vZl9vY2FtbFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHN0cmluZyAqIHN0cmluZykgbGlzdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tYmluZSA9IExpc3QuYXBwZW5kXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCBpbnB1dCAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICAgICAgTGlzdC5pdGVyIGlucHV0IH5mOihmdW4gKGssIHYpIC0+XG4gICAgICAgIGVsZW1lbnQjIy5zdHlsZSMjc2V0UHJvcGVydHkgKEpzLnN0cmluZyBrKSAoSnMuc3RyaW5nIHYpIEpzLnVuZGVmaW5lZFxuICAgICAgICB8PiAoaWdub3JlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkpXG4gICAgOztcblxuICAgIGxldCBvbl9tb3VudCBfICgpIF8gPSAoKVxuXG4gICAgbGV0IGRlc3Ryb3kgaW5wdXQgKCkgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgICAgIExpc3QuaXRlciBpbnB1dCB+ZjooZnVuIChrLCBfKSAtPlxuICAgICAgICBlbGVtZW50IyMuc3R5bGUjI3JlbW92ZVByb3BlcnR5IChKcy5zdHJpbmcgaylcbiAgICAgICAgfD4gKGlnbm9yZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpKVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dCAoKSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICAgICAgaWYgcGh5c19lcXVhbCBvbGRfaW5wdXQgbmV3X2lucHV0XG4gICAgICB8fCBbJWVxdWFsOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XSBvbGRfaW5wdXQgbmV3X2lucHV0XG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVzdHJveSBvbGRfaW5wdXQgKCkgZWxlbWVudDtcbiAgICAgICAgaW5pdCBuZXdfaW5wdXQgZWxlbWVudClcbiAgICA7O1xuICBlbmQpXG5cbmxldCBfX2Nzc192YXJzX25vX2tlYmFicyBhbGlzdCA9IGNyZWF0ZV9ob29rIFwiY3VzdG9tLWNzcy12YXJzXCIgKENzc192YXJfaG9vay5jcmVhdGUgYWxpc3QpXG5sZXQgY3NzX3ZhciB+bmFtZSB2ID0gX19jc3NfdmFyc19ub19rZWJhYnMgWyBcIi0tXCIgXiBuYW1lLCB2IF1cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcmVjIGZpbHRlcl9ieV9raW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgUHJvcGVydHkgXyAtPiBpZiBmIGBQcm9wZXJ0eSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgQXR0cmlidXRlIF8gLT4gaWYgZiBgQXR0cmlidXRlIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBIb29rIF8gLT4gaWYgZiBgSG9vayB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgSGFuZGxlciBfIC0+IGlmIGYgYEhhbmRsZXIgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IFN0eWxlIF8gLT4gaWYgZiBgU3R5bGUgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IENsYXNzIF8gLT4gaWYgZiBgQ2xhc3MgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IE1hbnkgYXR0cnMgLT4gTWFueSAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSlcbiAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBhLCBiKSAtPlxuICAgICAgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSwgYSwgYilcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPlxuICAgICAgTWFueV93aXRob3V0X21lcmdlIChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpKVxuICA7O1xuXG4gIGxldCByZWMgY29udGFpbnNfbmFtZSBsb29raW5nX2ZvciA9IGZ1bmN0aW9uXG4gICAgfCBQcm9wZXJ0eSB7IG5hbWU7IF8gfSB8IEF0dHJpYnV0ZSB7IG5hbWU7IF8gfSB8IEhvb2sgeyBuYW1lOyBfIH0gLT5cbiAgICAgIFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBuYW1lXG4gICAgfCBIYW5kbGVyIHsgbmFtZTsgXyB9IC0+IFN0cmluZy5lcXVhbCAoXCJvblwiIF4gbmFtZSkgbG9va2luZ19mb3JcbiAgICB8IFN0eWxlIF8gLT4gU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIFwic3R5bGVcIlxuICAgIHwgQ2xhc3MgXyAtPiBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgXCJjbGFzc1wiXG4gICAgfCBNYW55IGF0dHJzXG4gICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgXywgXylcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPiBMaXN0LmV4aXN0cyB+ZjooY29udGFpbnNfbmFtZSBsb29raW5nX2ZvcikgYXR0cnNcbiAgOztcbmVuZFxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgZXZlbnQgPSBwcml2YXRlICNEb21faHRtbC5ldmVudFxuXG4gICAgdmFsIGV2ZW50X2tpbmQgOiBldmVudCBKcy50IERvbS5FdmVudC50eXBcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBYLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCBjb21iaW5lIGYgZyBldmVudCA9IFVpX2VmZmVjdC5NYW55IFsgZiBldmVudDsgZyBldmVudCBdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBsaXN0ZW5lciA6IChEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFtAc2V4cC5vcGFxdWVdKSB9XG4gICAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgbGV0IHNldCBmID1cbiAgICAgICAgbGV0IGhhbmRsZXIgPVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlIGV2IChmIGV2KTtcbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgICBpblxuICAgICAgICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIERvbV9odG1sLndpbmRvdyBYLmV2ZW50X2tpbmQgaGFuZGxlciBKcy5fdHJ1ZVxuICAgICAgOztcblxuICAgICAgbGV0IGluaXQgZiBfZWxlbWVudCA9IHsgU3RhdGUubGlzdGVuZXIgPSBzZXQgZiB9XG4gICAgICBsZXQgZGVzdHJveSBfaW5wdXQgc3RhdGUgX2VsZW1lbnQgPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIHN0YXRlLlN0YXRlLmxpc3RlbmVyXG5cbiAgICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0OmYgc3RhdGUgZWxlbWVudCA9XG4gICAgICAgICgqIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBjaGFuZ2VzLCBjYW5jZWwgdGhlIG9sZCBvbmUgYW5kIHJlLWluc3RhbGwgKilcbiAgICAgICAgZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICAgICAgbGV0IG5ld19zdGF0ZSA9IGluaXQgZiBlbGVtZW50IGluXG4gICAgICAgIHN0YXRlLlN0YXRlLmxpc3RlbmVyIDwtIG5ld19zdGF0ZS5saXN0ZW5lclxuICAgICAgOztcblxuICAgICAgbGV0IG9uX21vdW50IF9pbnB1dCBfc3RhdGUgX2VsZW1lbnQgPSAoKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTW91c2V1cCA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1vdXNldXBcbiAgZW5kKVxuXG5tb2R1bGUgTW91c2Vtb3ZlID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubW91c2Vtb3ZlXG4gIGVuZClcblxubW9kdWxlIENsaWNrID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQuY2xpY2tcbiAgZW5kKVxuXG5tb2R1bGUgQ29udGV4dG1lbnUgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwubW91c2VFdmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwiY29udGV4dG1lbnVcIlxuICBlbmQpXG5cbm1vZHVsZSBLZXlkb3duID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmtleWJvYXJkRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQua2V5ZG93blxuICBlbmQpXG5cbm1vZHVsZSBWaXNpYmlsaXR5Y2hhbmdlID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ2aXNpYmlsaXR5Y2hhbmdlXCJcbiAgZW5kKVxuXG5tb2R1bGUgQmVmb3JldW5sb2FkID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuICBlbmQpXG5cbmxldCBtb3VzZXVwIGYgPSBNb3VzZXVwLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2V1cC1saXN0ZW5lclwiXG5sZXQgbW91c2Vtb3ZlIGYgPSBNb3VzZW1vdmUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZW1vdmUtbGlzdGVuZXJcIlxubGV0IGNsaWNrIGYgPSBDbGljay5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWNsaWNrLWxpc3RlbmVyXCJcbmxldCBjb250ZXh0bWVudSBmID0gQ29udGV4dG1lbnUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1jb250ZXh0bWVudS1saXN0ZW5lclwiXG5sZXQga2V5ZG93biBmID0gS2V5ZG93bi5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWtleWRvd24tbGlzdGVuZXJcIlxuXG5jbGFzcyB0eXBlIGV2ZW50X3dpdGhfc3RyaW5nX3JldHVybl92YWx1ZSA9IG9iamVjdFxuICAoKiBFdmVudHMgd2l0aCBbcmV0dXJuVmFsdWVdIGFyZSBpbXBvc3NpYmxlIHRvIHByb3Blcmx5IHR5cGUsIHNvIHdlIG1ha2Ugb25lIHRoYXRcbiAgICAgaXMgc3BlY2lhbGl6ZWQgZm9yIHN0cmluZywgYW5kIGNhc3Qgb3VyIGJlZm9yZV91bmxvYWQgdHlwZSB0byBpdC4gKilcbiAgbWV0aG9kIHJldHVyblZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYmVmb3JldW5sb2FkIGYgPVxuICBsZXQgZiBldmVudCA9XG4gICAgbWF0Y2glYmluZC5FZmZlY3QgZiBldmVudCB3aXRoXG4gICAgfCBgU2hvd193YXJuaW5nIC0+XG4gICAgICBsZXQgZXZlbnQgOiBldmVudF93aXRoX3N0cmluZ19yZXR1cm5fdmFsdWUgSnMudCA9IE9iai5tYWdpYyBldmVudCBpblxuICAgICAgZXZlbnQjIy5yZXR1cm5WYWx1ZSA6PSBKcy5zdHJpbmcgXCJ0aGlzIHN0cmluZyBjYW4gYmUgYW55dGhpbmdcIjtcbiAgICAgIEVmZmVjdC5JZ25vcmVcbiAgICB8IGBEb19ub3RoaW5nIC0+IEVmZmVjdC5JZ25vcmVcbiAgaW5cbiAgQmVmb3JldW5sb2FkLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtYmVmb3JldW5sb2FkLWxpc3RlbmVyXCJcbjs7XG5cbmxldCB2aXNpYmlsaXR5Y2hhbmdlIGYgPVxuICBWaXNpYmlsaXR5Y2hhbmdlLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtdmlzaWJpbGl0eWNoYW5nZS1saXN0ZW5lclwiXG47O1xuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbGV0IG1vdXNldXBfdHlwZV9pZCA9IE1vdXNldXAuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgbW91c2Vtb3ZlX3R5cGVfaWQgPSBNb3VzZW1vdmUuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQga2V5ZG93bl90eXBlX2lkID0gS2V5ZG93bi5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBjbGlja190eXBlX2lkID0gQ2xpY2suRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgY29udGV4dG1lbnVfdHlwZV9pZCA9IENvbnRleHRtZW51LkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IHZpc2liaWxpdHljaGFuZ2VfdHlwZV9pZCA9IFZpc2liaWxpdHljaGFuZ2UuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgYmVmb3JldW5sb2FkX3R5cGVfaWQgPSBCZWZvcmV1bmxvYWQuRm9yX3Rlc3RpbmcudHlwZV9pZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBKc19vZl9vY2FtbFxuXG50eXBlIHQgPSBSYXcuTm9kZS50XG5cbmxldCB2ZG9tX3RodW5rID0gbGF6eSBKcy5VbnNhZmUuKGdldCBnbG9iYWwgKEpzLnN0cmluZyBcIlZkb21UaHVua1wiKSlcblxubGV0IGNyZWF0ZSB+a2V5IGFyZyB+ZiA9XG4gIGxldCBrZXkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBTb21lIGtleSAtPiBKcy5PcHRkZWYucmV0dXJuIChKcy5zdHJpbmcga2V5KVxuICAgIHwgTm9uZSAtPiBKcy5PcHRkZWYuZW1wdHlcbiAgaW5cbiAgbGV0IGtleSA9IEpzLlVuc2FmZS5pbmplY3Qga2V5IGluXG4gIGxldCBmID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGEgLT4gZiBhKSB8PiBKcy5VbnNhZmUuaW5qZWN0IGluXG4gIGxldCBhcmcgPSBKcy5VbnNhZmUuaW5qZWN0IGFyZyBpblxuICAoT2JqLm1hZ2ljIDogXyAtPiBSYXcuTm9kZS50KVxuICAgIChKcy5VbnNhZmUuZnVuX2NhbGwgKExhenkuZm9yY2UgdmRvbV90aHVuaykgW3wgZjsgYXJnOyBrZXkgfF0pXG47O1xuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5cbnR5cGUgZWxlbWVudCA9XG4gIHsgdGFnIDogc3RyaW5nXG4gIDsga2V5IDogc3RyaW5nIG9wdGlvblxuICA7IGF0dHJzIDogQXR0ci50XG4gIDsgcmF3X2F0dHJzIDogUmF3LkF0dHJzLnQgTGF6eS50XG4gIDsgY2hpbGRyZW4gOiBSYXcuTm9kZS50IEpzLmpzX2FycmF5IEpzLnRcbiAgOyBraW5kIDogWyBgVm5vZGUgfCBgU3ZnIF1cbiAgfVxuXG5hbmQgd2lkZ2V0ID0gUmF3LldpZGdldC50XG5cbmFuZCB0ID1cbiAgfCBOb25lXG4gIHwgVGV4dCBvZiBzdHJpbmdcbiAgfCBFbGVtZW50IG9mIGVsZW1lbnRcbiAgfCBXaWRnZXQgb2Ygd2lkZ2V0XG4gIHwgTGF6eSBvZlxuICAgICAgeyBrZXkgOiBzdHJpbmcgb3B0aW9uXG4gICAgICA7IHQgOiB0IExhenkudFxuICAgICAgfVxuXG5tb2R1bGUgQWxpYXNlcyA9IHN0cnVjdFxuICB0eXBlIG5vZGVfY3JlYXRvciA9ID9rZXk6c3RyaW5nIC0+ID9hdHRyczpBdHRyLnQgbGlzdCAtPiB0IGxpc3QgLT4gdFxuICB0eXBlIG5vZGVfY3JlYXRvcl9jaGlsZGxlc3MgPSA/a2V5OnN0cmluZyAtPiA/YXR0cnM6QXR0ci50IGxpc3QgLT4gdW5pdCAtPiB0XG5lbmRcblxubW9kdWxlIEVsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZWxlbWVudFxuXG4gIGxldCB0YWcgdCA9IHQudGFnXG4gIGxldCBhdHRycyB0ID0gdC5hdHRyc1xuICBsZXQga2V5IHQgPSB0LmtleVxuICBsZXQgd2l0aF9rZXkgdCBrZXkgPSB7IHQgd2l0aCBrZXkgPSBTb21lIGtleSB9XG5cbiAgbGV0IG1hcF9hdHRycyB0IH5mID1cbiAgICBsZXQgYXR0cnMgPSBmIHQuYXR0cnMgaW5cbiAgICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gICAgeyB0IHdpdGggYXR0cnM7IHJhd19hdHRycyB9XG4gIDs7XG5cbiAgbGV0IGFkZF9jbGFzcyB0IGMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIGNsYXNzXyBjKSlcbiAgbGV0IGFkZF9jbGFzc2VzIHQgYyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgY2xhc3NlcyBjKSlcbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIHN0eWxlIHMpKVxuZW5kXG5cbmxldCByZWMgdF90b19qcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPlxuICAgICgqIFdlIG5vcm1hbGx5IGZpbHRlciB0aGVzZSBvdXQsIGJ1dCBpZiBbdG9fanNdIGlzIGNhbGxlZCBkaXJlY3RseSBvbiBhIFtOb25lXSBub2RlLFxuICAgICAgIHdlIHVzZSB0aGlzIGhhY2suIEFzaWRlIGZyb20gaGF2aW5nIGEgW1RleHRdIG5vZGUgd2l0aG91dCBhbnkgdGV4dCBwcmVzZW50IGluIHRoZVxuICAgICAgIERvbSwgdGhlcmUgc2hvdWxkIGJlIG5vIHVud2FudGVkIHNpZGUtZWZmZWN0cy4gIEluIGFuIEluY3JfZG9tIGFwcGxpY2F0aW9uLCB0aGlzXG4gICAgICAgY2FuIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHJvb3QgdmlldyBJbmNyZW1lbnRhbCBpcyBpbmhhYml0ZWQgYnkgYSBbTm9uZV0uICopXG4gICAgUmF3Lk5vZGUudGV4dCBcIlwiXG4gIHwgVGV4dCBzIC0+IFJhdy5Ob2RlLnRleHQgc1xuICB8IEVsZW1lbnQgeyB0YWc7IGtleTsgYXR0cnMgPSBfOyByYXdfYXR0cnMgPSAobGF6eSByYXdfYXR0cnMpOyBjaGlsZHJlbjsga2luZCA9IGBWbm9kZSB9XG4gICAgLT4gUmF3Lk5vZGUubm9kZSB0YWcgcmF3X2F0dHJzIGNoaWxkcmVuIGtleVxuICB8IEVsZW1lbnQgeyB0YWc7IGtleTsgYXR0cnMgPSBfOyByYXdfYXR0cnMgPSAobGF6eSByYXdfYXR0cnMpOyBjaGlsZHJlbjsga2luZCA9IGBTdmcgfVxuICAgIC0+IFJhdy5Ob2RlLnN2ZyB0YWcgcmF3X2F0dHJzIGNoaWxkcmVuIGtleVxuICB8IFdpZGdldCB3IC0+IHdcbiAgfCBMYXp5IHsgdDsga2V5IH0gLT4gVGh1bmsuY3JlYXRlIH5rZXkgdCB+Zjp0X3RvX2pzX2xhenlcblxuYW5kIHRfdG9fanNfbGF6eSAobGF6eSB0KSA9IHRfdG9fanMgdFxuXG5sZXQgdGV4dCBzID0gVGV4dCBzXG5cbmxldCBlbGVtZW50IGtpbmQgfnRhZyB+a2V5IGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IGNoaWxkcmVuX3JhdyA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICBMaXN0Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCAoVGV4dCBfIHwgRWxlbWVudCBfIHwgV2lkZ2V0IF8gfCBMYXp5IF8pIGFzIG90aGVyIC0+XG4gICAgICBsZXQgKF8gOiBpbnQpID0gY2hpbGRyZW5fcmF3IyNwdXNoICh0X3RvX2pzIG90aGVyKSBpblxuICAgICAgKCkpO1xuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuID0gY2hpbGRyZW5fcmF3IH1cbjs7XG5cbmxldCBjcmVhdGUgdGFnID9rZXkgPyhhdHRycyA9IFtdKSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFZub2RlIH50YWcgfmtleSAoQXR0ci5tYW55IGF0dHJzKSBjaGlsZHJlbilcbjs7XG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgb3BlbiBKc19vZl9vY2FtbFxuXG4gIGxldCBjcmVhdGVfZWxlbWVudCA9IGNyZWF0ZVxuXG4gIHR5cGUgdmRvbV9ub2RlID0gdFxuXG4gIGluY2x1ZGUgUmF3LldpZGdldFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIGRvbSA9IHByaXZhdGUgI0RvbV9odG1sLmVsZW1lbnRcblxuICAgIG1vZHVsZSBJbnB1dCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgY3JlYXRlIDogSW5wdXQudCAtPiBTdGF0ZS50ICogZG9tIEpzLnRcblxuICAgIHZhbCB1cGRhdGVcbiAgICAgIDogIHByZXZfaW5wdXQ6SW5wdXQudFxuICAgICAgLT4gaW5wdXQ6SW5wdXQudFxuICAgICAgLT4gc3RhdGU6U3RhdGUudFxuICAgICAgLT4gZWxlbWVudDpkb20gSnMudFxuICAgICAgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgZGVzdHJveSA6IHByZXZfaW5wdXQ6SW5wdXQudCAtPiBzdGF0ZTpTdGF0ZS50IC0+IGVsZW1lbnQ6ZG9tIEpzLnQgLT4gdW5pdFxuICAgIHZhbCB0b192ZG9tX2Zvcl90ZXN0aW5nIDogWyBgQ3VzdG9tIG9mIElucHV0LnQgLT4gdmRvbV9ub2RlIHwgYFNleHBfb2ZfaW5wdXQgXVxuICBlbmRcblxuICBsZXQgb2ZfbW9kdWxlICh0eXBlIGlucHV0KSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSBJbnB1dC50ID0gaW5wdXQpID1cbiAgICBsZXQgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGlucHV0IDogTS5JbnB1dC50XG4gICAgICAgIDsgc3RhdGUgOiBNLlN0YXRlLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcbiAgICBpblxuICAgIGxldCBzZXhwX29mX2RvbSA6IE0uZG9tIEpzLnQgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiPG9wYXF1ZT5cIiBpblxuICAgIGxldCBpZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOk0ubmFtZSBbJXNleHBfb2Y6IFN0YXRlLnQgKiBkb21dIGluXG4gICAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpbnB1dCAtPlxuICAgICAgbGV0IHZkb21fZm9yX3Rlc3RpbmcgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKHRfdG9fanNcbiAgICAgICAgICAgICAobWF0Y2ggTS50b192ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICAgICAgICAgfCBgQ3VzdG9tIGYgLT4gZiBpbnB1dFxuICAgICAgICAgICAgICB8IGBTZXhwX29mX2lucHV0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIE0uSW5wdXQuc2V4cF9vZl90IGlucHV0IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQXRvbSBcIjxvcGFxdWU+XCIgLT4gW11cbiAgICAgICAgICAgICAgICAgIHwgb3RoZXIgLT4gWyB0ZXh0IChTZXhwLnRvX3N0cmluZ19odW0gb3RoZXIpIF1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGNyZWF0ZV9lbGVtZW50IChNLm5hbWUgXiBcIi13aWRnZXRcIikgY2hpbGRyZW4pKVxuICAgICAgaW5cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+aWRcbiAgICAgICAgfnZkb21fZm9yX3Rlc3RpbmdcbiAgICAgICAgfmluaXQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBzdGF0ZSwgZWxlbWVudCA9IE0uY3JlYXRlIGlucHV0IGluXG4gICAgICAgICAgeyBpbnB1dDsgc3RhdGUgfSwgZWxlbWVudClcbiAgICAgICAgfnVwZGF0ZTooZnVuIHsgU3RhdGUuaW5wdXQgPSBwcmV2X2lucHV0OyBzdGF0ZSB9IGVsZW1lbnQgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLnVwZGF0ZSB+cHJldl9pbnB1dCB+aW5wdXQgfnN0YXRlIH5lbGVtZW50IGluXG4gICAgICAgICAgeyBpbnB1dDsgc3RhdGUgfSwgZWxlbWVudClcbiAgICAgICAgfmRlc3Ryb3k6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgTS5kZXN0cm95IH5wcmV2X2lucHV0IH5zdGF0ZSB+ZWxlbWVudClcbiAgICAgICAgKCkpXG4gIDs7XG5lbmRcblxubGV0IGxhenlfID9rZXkgdCA9IExhenkgeyBrZXk7IHQgfVxuXG5sZXQgZWxlbWVudF9leHBlcnQga2luZCB+dGFnID9rZXkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuIH1cbjs7XG5cbmxldCB3aWRnZXQgP3Zkb21fZm9yX3Rlc3RpbmcgP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkgPVxuICBsZXQgdmRvbV9mb3JfdGVzdGluZyA9XG4gICAgbGF6eVxuICAgICAgKG1hdGNoIHZkb21fZm9yX3Rlc3Rpbmcgd2l0aFxuICAgICAgIHwgU29tZSB0IC0+IHRfdG9fanMgKExhenkuZm9yY2UgdClcbiAgICAgICB8IE5vbmUgLT4gdF90b19qcyAoY3JlYXRlIChUeXBlX2VxdWFsLklkLm5hbWUgaWQgXiBcIi13aWRnZXRcIikgW10pKVxuICBpblxuICBXaWRnZXQgKFdpZGdldC5jcmVhdGUgfnZkb21fZm9yX3Rlc3RpbmcgP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkpXG47O1xuXG5sZXQgY3JlYXRlX2NoaWxkbGVzcyB0YWcgP2tleSA/YXR0cnMgKCkgPSBjcmVhdGUgdGFnID9rZXkgP2F0dHJzIFtdXG5cbmxldCBjcmVhdGVfc3ZnIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBTdmcgfnRhZyB+a2V5IChBdHRyLm1hbnkgYXR0cnMpIGNoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBTdmcgfnRhZyB+a2V5IChBdHRyLm1hbnkgYXR0cnMpIGNoaWxkcmVuKVxuOztcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgdGV4dGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIHRleHQgZm9ybWF0XG5cbmxldCB3aWRnZXRfb2ZfbW9kdWxlIG0gPVxuICBsZXQgZiA9IEJhc2UuU3RhZ2VkLnVuc3RhZ2UgKFdpZGdldC5vZl9tb2R1bGUgbSkgaW5cbiAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpIC0+IFdpZGdldCAoZiBpKSlcbjs7XG5cbmxldCB0b19yYXcgPSB0X3RvX2pzXG5sZXQgdG9fZG9tIHQgPSBSYXcuTm9kZS50b19kb20gKHRvX3JhdyB0KVxuXG5tb2R1bGUgSW5uZXJfaHRtbCA9IHN0cnVjdFxuICBsZXQgd2lkZ2V0IH5uYW1lIGNyZWF0ZSA9XG4gICAgbGV0IGlkID1cbiAgICAgICgqIHN0YWdlIHRoZSBpZCBnZW5lcmF0aW9uICopXG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSAoZnVuICgoY29udGVudCwgXywgXyksIF8pIC0+IFNleHAuQXRvbSBjb250ZW50KVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlXG4gICAgICAoZnVuXG4gICAgICAgID9vdmVycmlkZV92ZG9tX2Zvcl90ZXN0aW5nXG4gICAgICAgIH50YWdcbiAgICAgICAgfmF0dHJzXG4gICAgICAgIH50aGlzX2h0bWxfaXNfc2FuaXRpemVkX2FuZF9pc190b3RhbGx5X3NhZmVfdHJ1c3RfbWU6Y29udGVudFxuICAgICAgICAoKVxuICAgICAgICAtPlxuICAgICAgICAgIGxldCBlbGVtZW50ID0gY3JlYXRlIHRhZyB+YXR0cnMgW10gaW5cbiAgICAgICAgICBsZXQgaW5pdCAoKSA9XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRvX2RvbSBlbGVtZW50IGluXG4gICAgICAgICAgICBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgICAgICAgKGNvbnRlbnQsIHRhZywgYXR0cnMpLCBlbGVtZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdXBkYXRlIChwcmV2X2NvbnRlbnQsIHByZXZfdGFnLCBwcmV2X2F0dHIpIGVsZW1lbnQgPVxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPVxuICAgICAgICAgICAgICAoKiBpZiB0aGUgdGFnIG9yIHRoZSBhdHRyaWJ1dGVzIGFyZSBkaWZmZXJlbnQsIGRvIGEgZGlmZi9wYXRjaCBjeWNsZSB0b1xuICAgICAgICAgICAgICAgICBnZXQgaXQgdXAgdG8gZGF0ZSAqKVxuICAgICAgICAgICAgICBpZiAobm90IChTdHJpbmcuZXF1YWwgcHJldl90YWcgdGFnKSkgfHwgbm90IChwaHlzX2VxdWFsIHByZXZfYXR0ciBhdHRycylcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIFJhdy5QYXRjaC5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIH5wcmV2aW91czooY3JlYXRlIHByZXZfdGFnIH5hdHRyczpwcmV2X2F0dHIgW10gfD4gdG9fcmF3KVxuICAgICAgICAgICAgICAgICAgfmN1cnJlbnQ6KGNyZWF0ZSB0YWcgfmF0dHJzIFtdIHw+IHRvX3JhdylcbiAgICAgICAgICAgICAgICB8PiBSYXcuUGF0Y2guYXBwbHkgZWxlbWVudFxuICAgICAgICAgICAgICBlbHNlIGVsZW1lbnRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBpZiB0aGUgdGFnIGNoYW5nZWQsIHRoZW4gW2VsZW1lbnRdIHdpbGwgYmUgZW1wdHksIHNvIHdlIG5lZWQgdG8gdXBkYXRlIHRoZVxuICAgICAgICAgICAgICAgaW5uZXJIVE1MLiAgSWYgdGhlIGNvbnRlbnQgY2hhbmdlZCwgdGhlbiB3ZSBuZWVkIHRvIHNldCB0aGUgaW5uZXJIVE1MIGZvclxuICAgICAgICAgICAgICAgb2J2aW91cyByZWFzb25zLiAqKVxuICAgICAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfdGFnIHRhZykpIHx8IG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfY29udGVudCBjb250ZW50KVxuICAgICAgICAgICAgdGhlbiBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgICAgICAgKGNvbnRlbnQsIHRhZywgYXR0cnMpLCBlbGVtZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBXZSB1c2UgdGhlIFt3aWRnZXRdIGZ1bmN0aW9uIGRpcmVjdGx5LCByYXRoZXIgdGhhbiB0aHJvdWdoIHRoZVxuICAgICAgICAgICAgIGVhc2llci10by11c2UgW3dpZGdldF9vZl9tb2R1bGVdIGZ1bmN0aW9uIGJlY2F1c2Ugd2Ugd2FudCB0b1xuICAgICAgICAgICAgIGV4cGxpY2l0bHkgY3JlYXRlIHRoZSBpZCBzdWNoIHRoYXQgaXQgaXMgZGlzdGluY3QgYmV0d2VlblxuICAgICAgICAgICAgIFtpbm5lcl9odG1sXSBhbmQgW2lubmVyX2h0bWxfc3ZnXS4gKilcbiAgICAgICAgICBsZXQgdmRvbV9mb3JfdGVzdGluZyA9XG4gICAgICAgICAgICBtYXRjaCBvdmVycmlkZV92ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBsYXp5IChjcmVhdGUgdGFnIH5hdHRycyBbIHRleHQgY29udGVudCBdKVxuICAgICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgIGluXG4gICAgICAgICAgd2lkZ2V0IH5pZCB+dmRvbV9mb3JfdGVzdGluZyB+aW5pdCB+dXBkYXRlICgpKVxuICA7O1xuZW5kXG5cbmxldCBpbm5lcl9odG1sX3N2ZyA9XG4gIElubmVyX2h0bWwud2lkZ2V0IH5uYW1lOlwiaW5uZXItaHRtbC1zdmctbm9kZVwiIChmdW4gdGFnIH5hdHRycyAtPlxuICAgIGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5Ok5vbmUgfmF0dHJzKVxuICB8PiBTdGFnZWQudW5zdGFnZVxuOztcblxubGV0IGlubmVyX2h0bWwgPVxuICBJbm5lcl9odG1sLndpZGdldCB+bmFtZTpcImlubmVyLWh0bWwtbm9kZVwiIChmdW4gdGFnIH5hdHRycyAtPlxuICAgIGNyZWF0ZSB0YWcgP2tleTpOb25lIH5hdHRycylcbiAgfD4gU3RhZ2VkLnVuc3RhZ2Vcbjs7XG5cbmxldCBhID0gY3JlYXRlIFwiYVwiXG5sZXQgYWJiciA9IGNyZWF0ZSBcImFiYnJcIlxubGV0IGJvZHkgPSBjcmVhdGUgXCJib2R5XCJcbmxldCBidXR0b24gPSBjcmVhdGUgXCJidXR0b25cIlxubGV0IGNvZGUgPSBjcmVhdGUgXCJjb2RlXCJcbmxldCBkYXRhbGlzdCA9IGNyZWF0ZSBcImRhdGFsaXN0XCJcbmxldCBkZXRhaWxzID0gY3JlYXRlIFwiZGV0YWlsc1wiXG5sZXQgZGl2ID0gY3JlYXRlIFwiZGl2XCJcbmxldCBtYWluID0gY3JlYXRlIFwibWFpblwiXG5sZXQgZmllbGRzZXQgPSBjcmVhdGUgXCJmaWVsZHNldFwiXG5sZXQgbGVnZW5kID0gY3JlYXRlIFwibGVnZW5kXCJcbmxldCBmb290ZXIgPSBjcmVhdGUgXCJmb290ZXJcIlxubGV0IGgxID0gY3JlYXRlIFwiaDFcIlxubGV0IGgyID0gY3JlYXRlIFwiaDJcIlxubGV0IGgzID0gY3JlYXRlIFwiaDNcIlxubGV0IGg0ID0gY3JlYXRlIFwiaDRcIlxubGV0IGg1ID0gY3JlYXRlIFwiaDVcIlxubGV0IGg2ID0gY3JlYXRlIFwiaDZcIlxubGV0IGhlYWRlciA9IGNyZWF0ZSBcImhlYWRlclwiXG5sZXQgaHRtbCA9IGNyZWF0ZSBcImh0bWxcIlxubGV0IGlucHV0ID0gY3JlYXRlX2NoaWxkbGVzcyBcImlucHV0XCJcbmxldCBpbWcgPSBjcmVhdGVfY2hpbGRsZXNzIFwiaW1nXCJcbmxldCBpbnB1dF9kZXByZWNhdGVkID0gY3JlYXRlIFwiaW5wdXRcIlxubGV0IHRleHRhcmVhID0gY3JlYXRlIFwidGV4dGFyZWFcIlxubGV0IHNlbGVjdCA9IGNyZWF0ZSBcInNlbGVjdFwiXG5sZXQgb3B0Z3JvdXAgPSBjcmVhdGUgXCJvcHRncm91cFwiXG5sZXQgb3B0aW9uID0gY3JlYXRlIFwib3B0aW9uXCJcbmxldCBsYWJlbCA9IGNyZWF0ZSBcImxhYmVsXCJcbmxldCBsaSA9IGNyZWF0ZSBcImxpXCJcbmxldCBwID0gY3JlYXRlIFwicFwiXG5sZXQgcHJlID0gY3JlYXRlIFwicHJlXCJcbmxldCBzZWN0aW9uID0gY3JlYXRlIFwic2VjdGlvblwiXG5sZXQgc3BhbiA9IGNyZWF0ZSBcInNwYW5cIlxubGV0IHN0cm9uZyA9IGNyZWF0ZSBcInN0cm9uZ1wiXG5sZXQgZW0gPSBjcmVhdGUgXCJlbVwiXG5sZXQgYmxvY2txdW90ZSA9IGNyZWF0ZSBcImJsb2NrcXVvdGVcIlxubGV0IHN1bW1hcnkgPSBjcmVhdGUgXCJzdW1tYXJ5XCJcbmxldCBpZnJhbWUgPSBjcmVhdGUgXCJpZnJhbWVcIlxubGV0IHRhYmxlID0gY3JlYXRlIFwidGFibGVcIlxubGV0IHRib2R5ID0gY3JlYXRlIFwidGJvZHlcIlxubGV0IHRkID0gY3JlYXRlIFwidGRcIlxubGV0IHRoID0gY3JlYXRlIFwidGhcIlxubGV0IHRoZWFkID0gY3JlYXRlIFwidGhlYWRcIlxubGV0IHRyID0gY3JlYXRlIFwidHJcIlxubGV0IHVsID0gY3JlYXRlIFwidWxcIlxubGV0IG9sID0gY3JlYXRlIFwib2xcIlxubGV0IGJyID0gY3JlYXRlX2NoaWxkbGVzcyBcImJyXCJcbmxldCBociA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJoclwiXG5sZXQgZGwgPSBjcmVhdGUgXCJkbFwiXG5sZXQgZHQgPSBjcmVhdGUgXCJkdFwiXG5sZXQgZGQgPSBjcmVhdGUgXCJkZFwiXG5cbmxldCBzZXhwX2Zvcl9kZWJ1Z2dpbmcgP2luZGVudCBzZXhwID1cbiAgc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0gP2luZGVudCB8PiB0ZXh0IHw+IExpc3QucmV0dXJuIHw+IHByZSB+YXR0cnM6W11cbjs7XG5cbm1vZHVsZSBQYXRjaCA9IHN0cnVjdFxuICB0eXBlIHQgPSBSYXcuUGF0Y2gudFxuXG4gIGxldCBjcmVhdGUgfnByZXZpb3VzIH5jdXJyZW50ID1cbiAgICBSYXcuUGF0Y2guY3JlYXRlIH5wcmV2aW91czoodF90b19qcyBwcmV2aW91cykgfmN1cnJlbnQ6KHRfdG9fanMgY3VycmVudClcbiAgOztcblxuICBsZXQgYXBwbHkgdCBlbHQgPSBSYXcuUGF0Y2guYXBwbHkgZWx0IHRcbiAgbGV0IGlzX2VtcHR5IHQgPSBSYXcuUGF0Y2guaXNfZW1wdHkgdFxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/a2V5IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgRWxlbWVudCAoZWxlbWVudF9leHBlcnQgYFZub2RlID9rZXkgfnRhZyBhdHRycyBjaGlsZHJlbilcbiAgOztcblxuICBsZXQgY3JlYXRlX3N2ZyA/a2V5IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgRWxlbWVudCAoZWxlbWVudF9leHBlcnQgYFN2ZyA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGluY2x1ZGUgQXR0clxuICBtb2R1bGUgSG9va3MgPSBIb29rc1xuICBtb2R1bGUgR2xvYmFsX2xpc3RlbmVycyA9IEdsb2JhbF9saXN0ZW5lcnNcbmVuZFxuXG5tb2R1bGUgQXR0cnMgPSBBdHRyLk11bHRpXG5tb2R1bGUgRWZmZWN0ID0gRWZmZWN0XG5tb2R1bGUgTm9kZSA9IE5vZGVcbiIsIm1vZHVsZSBWZG9tID0gVmRvbVxubW9kdWxlIERvbV9mbG9hdCA9IERvbV9mbG9hdFxubW9kdWxlIEpzX21hcCA9IEpzX21hcFxuXG5tb2R1bGUgVG9wX2xldmVsX2VmZmVjdHMgPSBzdHJ1Y3RcbiAgbGV0ICgpID1cbiAgICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgICAgbnVtYmVycyBhZnRlciB0aGUgZGVjaW1hbCBwbGFjZS4gKilcbiAgICBDc3NfZ2VuLlByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgOj0gRG9tX2Zsb2F0LnRvX3N0cmluZ19maXhlZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENwdXNldCA9IHN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEludC5TZXQudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cblxuICAgICAgbGV0IHZhbGlkYXRlIHQgPVxuICAgICAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlXG4gICAgICAgICAgKEludC52YWxpZGF0ZV9sYm91bmQgfm1pbjooSW5jbCAxKSAoU2V0Lmxlbmd0aCB0KSlcbiAgICAgICAgICAoU2V0LnRvX2xpc3QgdFxuICAgICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpJbnQudmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gICAgICAgICAgIHw+IFZhbGlkYXRlLm5hbWVfbGlzdCBcIlRocmVhZF9wb29sX2NwdXNldFwiKVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gSW50LlNldC5lcXVhbCAodDEgfD4gcmF3KSAodDIgfD4gcmF3KVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgSW5oZXJpdFxuICB8IENwdXNldCBvZiBDcHVzZXQudFxuW0BAZGVyaXZpbmcgc2V4cF1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUdXBsZV90eXBlX2ludGZcblxubW9kdWxlIFNsb3RzID0gc3RydWN0XG4gIHR5cGUgdV8gPSB7IHNsb3RzX3Blcl90dXBsZSA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCd0dXBsZSwgJ3ZhcmlhbnQpIHUgPSB1XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHRfID0gWyBgU2xvdHMgb2YgdV8gXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2xvdHNfcGVyX3R1cGxlIChgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSBuIH0pID0gblxuXG4gIHR5cGUgJ2EwIHQxID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEpIHQyID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMikgdDMgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMpIHQ0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQpIHQ1ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSkgdDYgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYpIHQ3ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcpIHQ4ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCkgdDkgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTkpIHQxMCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwKSB0MTEgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSkgdDEyID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEsICdhMTIpIHQxMyA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyLCAnYTEzKSB0MTQgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0MSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEgfVxuICBsZXQgdDIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAyIH1cbiAgbGV0IHQzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMyB9XG4gIGxldCB0NCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDQgfVxuICBsZXQgdDUgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA1IH1cbiAgbGV0IHQ2ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNiB9XG4gIGxldCB0NyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDcgfVxuICBsZXQgdDggPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA4IH1cbiAgbGV0IHQ5ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOSB9XG4gIGxldCB0MTAgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMCB9XG4gIGxldCB0MTEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMSB9XG4gIGxldCB0MTIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMiB9XG4gIGxldCB0MTMgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMyB9XG4gIGxldCB0MTQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxNCB9XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUdXBsZV9wb29sX2ludGZcbm1vZHVsZSBUdXBsZV90eXBlID0gVHVwbGVfdHlwZVxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgcGh5c19lcXVhbCA9IFN0ZGxpYi4oID09IClcbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IG51bV9iaXRzID0gSW50Lm51bV9iaXRzXG4gIGxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBjb25jYXQgbCA9IEJhc2UuU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgbFxuXG5tb2R1bGUgdHlwZSBTID0gU1xuXG5tb2R1bGUgUG9vbCA9IHN0cnVjdFxuICBsZXQgZ3Jvd19jYXBhY2l0eSB+Y2FwYWNpdHkgfm9sZF9jYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiBpZiBvbGRfY2FwYWNpdHkgPSAwIHRoZW4gMSBlbHNlIG9sZF9jYXBhY2l0eSAqIDJcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDw9IG9sZF9jYXBhY2l0eVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb29sLmdyb3cgZ290IHRvbyBzbWFsbCBjYXBhY2l0eVwiXG4gICAgICAgICAgKGBjYXBhY2l0eSBjYXBhY2l0eSwgYG9sZF9jYXBhY2l0eSBvbGRfY2FwYWNpdHkpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBjYXBhY2l0eSBvZiBpbnQgXSAqIFsgYG9sZF9jYXBhY2l0eSBvZiBpbnQgXV07XG4gICAgICBjYXBhY2l0eVxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFR1cGxlX3R5cGUuU2xvdHNcblxuICBsZXQgbWF4X3Nsb3QgPSAxNFxuXG4gICgqIFRoZSBwb29sIGlzIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIFtVbmlmb3JtX2FycmF5LnRdLCB3aGVyZSBpbmRleCB6ZXJvIGhhcyB0aGVcbiAgICAgbWV0YWRhdGEgYWJvdXQgdGhlIHBvb2wgYW5kIHRoZSByZW1haW5pbmcgaW5kaWNlcyBhcmUgdGhlIHR1cGxlcyBsYXllZCBvdXQgb25lIGFmdGVyXG4gICAgIHRoZSBvdGhlci4gIEVhY2ggdHVwbGUgdGFrZXMgWzEgKyBzbG90c19wZXJfdHVwbGVdIGluZGljZXMgaW4gdGhlIHBvb2wsIHdoZXJlIHRoZVxuICAgICBmaXJzdCBpbmRleCBob2xkcyBhIGhlYWRlciBhbmQgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGhvbGQgdGhlIHR1cGxlJ3Mgc2xvdHM6XG5cbiAgICAge3ZcbiAgICAgfCBoZWFkZXIgfCBzMCB8IHMxIHwgLi4uIHwgczxOLTE+IHxcbiAgICAgdn1cblxuICAgICBBIFtQb2ludGVyLnRdIHRvIGEgdHVwbGUgY29udGFpbnMgdGhlIGludGVnZXIgaW5kZXggd2hlcmUgaXRzIGhlYWRlciBpcywgYXMgd2VsbCBhc1xuICAgICAoYSBtYXNrIG9mKSB0aGUgdHVwbGUncyB1bmlxdWUgaWQuXG5cbiAgICAgVGhlIGZyZWUgdHVwbGVzIGFyZSBzaW5nbHkgbGlua2VkIHZpYSB0aGUgaGVhZGVycy5cblxuICAgICBXaGVuIGEgdHVwbGUgaXMgaW4gdXNlLCBpdHMgaGVhZGVyIGlzIG1hcmtlZCB0byBpbmRpY2F0ZSBzbywgYW5kIGFsc28gdG8gaW5jbHVkZSB0aGVcbiAgICAgdHVwbGUncyB1bmlxdWUgaWQuICBUaGlzIGFsbG93cyB1cyB0byBjaGVjayBpbiBjb25zdGFudCB0aW1lIHdoZXRoZXIgYSBwb2ludGVyIGlzXG4gICAgIHZhbGlkLCBieSBjb21wYXJpbmcgdGhlIGlkIGluIHRoZSBwb2ludGVyIHdpdGggdGhlIGlkIGluIHRoZSBoZWFkZXIuXG5cbiAgICAgV2hlbiBhIHR1cGxlIGlzIG5vdCBpbiB1c2UsIGl0cyBoZWFkZXIgaXMgcGFydCBvZiB0aGUgZnJlZSBsaXN0LCBhbmQgaXRzIHR1cGxlIHNsb3RzXG4gICAgIGhhdmUgZHVtbXkgdmFsdWVzIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlcywgZnJvbSB0aGUgW2R1bW15XSB0dXBsZSBzdXBwbGllZCB0b1xuICAgICBbY3JlYXRlXS4gIFdlIG11c3QgaGF2ZSBkdW1teSB2YWx1ZXMgb2YgdGhlIGNvcnJlY3QgdHlwZSB0byBwcmV2ZW50IGEgc2VnZmF1bHQgaW5cbiAgICAgY29kZSB0aGF0IChtaXN0YWtlbmx5KSB1c2VzIGEgcG9pbnRlciB0byBhIGZyZWUgdHVwbGUuXG5cbiAgICAgRm9yIFtQb29sLlVuc2FmZV0sIGEgc2xvdCBpbiBhIGZyZWUgb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgYW4gaW50OyBpdCBtdXN0IG5vdCBiZVxuICAgICBwb2ludGVyIHRvIHByZXZlbnQgYSBzcGFjZSBsZWFrLiAgSG93ZXZlciwgdGhlIGludCBpbiB0aGUgc2xvdCBtYXkgbm90IHJlcHJlc2VudCBhXG4gICAgIHZhbGlkIHZhbHVlIG9mIHRoZSB0eXBlLlxuICAqKVxuXG4gIG1vZHVsZSBTbG90ID0gc3RydWN0XG4gICAgdHlwZSAoJ3Nsb3RzLCAnYSkgdCA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsICh0MSA6IChfLCBfKSB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgdDAgPSAxXG4gICAgbGV0IHQxID0gMlxuICAgIGxldCB0MiA9IDNcbiAgICBsZXQgdDMgPSA0XG4gICAgbGV0IHQ0ID0gNVxuICAgIGxldCB0NSA9IDZcbiAgICBsZXQgdDYgPSA3XG4gICAgbGV0IHQ3ID0gOFxuICAgIGxldCB0OCA9IDlcbiAgICBsZXQgdDkgPSAxMFxuICAgIGxldCB0MTAgPSAxMVxuICAgIGxldCB0MTEgPSAxMlxuICAgIGxldCB0MTIgPSAxM1xuICAgIGxldCB0MTMgPSAxNFxuICAgIGxldCV0ZXN0IF8gPSB0MTMgPSBtYXhfc2xvdFxuICBlbmRcblxuICAoKiBXZSBvbmx5IGhhdmUgW0ludC5udW1fYml0c10gYml0cyBhdmFpbGFibGUgZm9yIHBvb2wgcG9pbnRlcnMuICBUaGUgYml0cyBvZiBhIHBvb2xcbiAgICAgcG9pbnRlciBlbmNvZGUgdHdvIHRoaW5nczpcblxuICAgICAtIHRoZSB0dXBsZSdzIGFycmF5IGluZGV4IGluIHRoZSBwb29sXG4gICAgIC0gdGhlIHR1cGxlJ3MgaWRlbnRpZmllciAobm90IG5lY2Vzc2FyaWx5IHVuaXF1ZSlcblxuICAgICBXZSBjaG9vc2UgW2FycmF5X2luZGV4X251bV9iaXRzXSBhcyBsYXJnZSBhcyBuZWVkZWQgZm9yIHRoZSBtYXhpbXVtIHBvb2wgY2FwYWNpdHlcbiAgICAgdGhhdCB3ZSB3YW50IHRvIHN1cHBvcnQsIGFuZCB1c2UgdGhlIHJlbWFpbmluZyBbbWFza2VkX3R1cGxlX2lkX251bV9iaXRzXSBiaXRzIGZvclxuICAgICB0aGUgaWRlbnRpZmllci4gIDY0LWJpdCBhbmQgMzItYml0IGFyY2hpdGVjdHVyZXMgdHlwaWNhbGx5IGhhdmUgdmVyeSBkaWZmZXJlbnRcbiAgICAgYWRkcmVzcy1zcGFjZSBzaXplcywgc28gd2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gZGlmZmVyZW50bHkuICopXG5cbiAgbGV0IGFycmF5X2luZGV4X251bV9iaXRzID1cbiAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChJbnQubnVtX2JpdHMgPSA2Myk7XG4gICAgICAzMClcbiAgICBlbHNlIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gMzEgfHwgSW50Lm51bV9iaXRzID0gMzIpO1xuICAgICAgMjIpXG4gIDs7XG5cbiAgbGV0IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA9IEludC5udW1fYml0cyAtIGFycmF5X2luZGV4X251bV9iaXRzXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IGFycmF5X2luZGV4X251bV9iaXRzICsgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzIDw9IEludC5udW1fYml0c1xuICBsZXQgbWF4X2FycmF5X2xlbmd0aCA9IDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzXG5cbiAgbW9kdWxlIFR1cGxlX2lkIDogc2lnXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaW5pdCA6IHRcbiAgICB2YWwgbmV4dCA6IHQgLT4gdFxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBleGFtcGxlcyA6IHQgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIFdlIGd1YXJhbnRlZSB0aGF0IHR1cGxlIGlkcyBhcmUgbm9ubmVnYXRpdmUgc28gdGhhdCB0aGV5IGNhbiBiZSBlbmNvZGVkIGluXG4gICAgICAgaGVhZGVycy4gKilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMClcbiAgICBsZXQgdG9fc3RyaW5nID0gSW50LnRvX3N0cmluZ1xuICAgIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgaW5pdCA9IDBcbiAgICBsZXQgbmV4dCB0ID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiB0ICsgMSBlbHNlIGlmIHQgPSBJbnQubWF4X3ZhbHVlIHRoZW4gMCBlbHNlIHQgKyAxXG4gICAgbGV0IHRvX2ludCB0ID0gdFxuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIGlmIGkgPCAwXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiVHVwbGVfaWQub2ZfaW50IGdvdCBuZWdhdGl2ZSBpbnRcIiBpIFslc2V4cF9vZjogaW50XTtcbiAgICAgIGlcbiAgICA7O1xuXG4gICAgbGV0IGV4YW1wbGVzID0gWyAwOyAxOyAweDFGRkZfRkZGRjsgSW50Lm1heF92YWx1ZSBdXG4gIGVuZFxuXG4gIGxldCB0dXBsZV9pZF9tYXNrID0gKDEgbHNsIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cykgLSAxXG5cbiAgbW9kdWxlIFBvaW50ZXIgOiBzaWdcbiAgICAoKiBbUG9pbnRlci50XSBpcyBhbiBlbmNvZGluZyBhcyBhbiBbaW50XSBvZiB0aGUgZm9sbG93aW5nIHN1bSB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBOb3JtYWwgb2YgeyBoZWFkZXJfaW5kZXggOiBpbnQ7IG1hc2tlZF90dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIFRoZSBlbmNvZGluZyBpcyBjaG9zZW4gdG8gb3B0aW1pemUgdGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbiwgbmFtZWx5IHR1cGxlLXNsb3RcbiAgICAgICBhY2Nlc3MsIHRoZSBbc2xvdF9pbmRleF0gZnVuY3Rpb24uICBUaGUgZW5jb2RpbmcgaXMgZGVzaWduZWQgc28gdGhhdCBbc2xvdF9pbmRleF1cbiAgICAgICBwcm9kdWNlcyBhIG5lZ2F0aXZlIG51bWJlciBmb3IgW051bGxdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzdWJzZXF1ZW50IGFycmF5IGJvdW5kc1xuICAgICAgIGNoZWNrIHRvIGZhaWwuICopXG5cbiAgICB0eXBlICdzbG90cyB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBwaHlzX2NvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHBoeXNfZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCogVGhlIG51bGwgcG9pbnRlci4gIFtudWxsXSBpcyBhIGZ1bmN0aW9uIGR1ZSB0byBpc3N1ZXMgd2l0aCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24uICopXG5cbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gXyB0XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCogTm9ybWFsIHBvaW50ZXJzLiAqKVxuXG4gICAgdmFsIGNyZWF0ZSA6IGhlYWRlcl9pbmRleDppbnQgLT4gVHVwbGVfaWQudCAtPiBfIHRcbiAgICB2YWwgaGVhZGVyX2luZGV4IDogXyB0IC0+IGludFxuICAgIHZhbCBtYXNrZWRfdHVwbGVfaWQgOiBfIHQgLT4gaW50XG4gICAgdmFsIHNsb3RfaW5kZXggOiBfIHQgLT4gKF8sIF8pIFNsb3QudCAtPiBpbnRcbiAgICB2YWwgZmlyc3Rfc2xvdF9pbmRleCA6IF8gdCAtPiBpbnRcblxuICAgIG1vZHVsZSBJZCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG4gICAgICB2YWwgb2ZfaW50NjMgOiBJbnQ2My50IC0+IHRcbiAgICBlbmRcblxuICAgIHZhbCB0b19pZCA6IF8gdCAtPiBJZC50XG4gICAgdmFsIG9mX2lkX2V4biA6IElkLnQgLT4gXyB0XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIEEgcG9pbnRlciBpcyBlaXRoZXIgW251bGxdIG9yIHRoZSAocG9zaXRpdmUpIGluZGV4IGluIHRoZSBwb29sIG9mIHRoZSBuZXh0LWZyZWVcbiAgICAgICBmaWVsZCBwcmVjZWVkaW5nIHRoZSB0dXBsZSdzIHNsb3RzLiAqKVxuICAgIHR5cGUgJ3Nsb3RzIHQgPSBpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGxldCBzZXhwX29mX3QgXyB0ID0gU2V4cC5BdG9tIChzcHJpbnRmIFwiPFBvb2wuUG9pbnRlci50OiAweCUwOHg+XCIgdClcbiAgICBsZXQgcGh5c19lcXVhbCAodDEgOiBfIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxuICAgIGxldCBwaHlzX2NvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IG51bGwgKCkgPSAtbWF4X3Nsb3QgLSAxXG4gICAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcblxuICAgICgqIFtudWxsXSBtdXN0IGJlIHN1Y2ggdGhhdCBbbnVsbCArIHNsb3RdIGlzIGFuIGludmFsaWQgYXJyYXkgaW5kZXggZm9yIGFsbCBzbG90cy5cbiAgICAgICBPdGhlcndpc2UgZ2V0L3NldCBvbiB0aGUgbnVsbCBwb2ludGVyIG1heSBsZWFkIHRvIGEgc2VnZmF1bHQuICopXG4gICAgbGV0JXRlc3QgXyA9IG51bGwgKCkgKyBtYXhfc2xvdCA8IDBcblxuICAgIGxldCBjcmVhdGUgfmhlYWRlcl9pbmRleCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9XG4gICAgICBoZWFkZXJfaW5kZXhcbiAgICAgIGxvciAoKFR1cGxlX2lkLnRvX2ludCB0dXBsZV9pZCBsYW5kIHR1cGxlX2lkX21hc2spIGxzbCBhcnJheV9pbmRleF9udW1fYml0cylcbiAgICA7O1xuXG4gICAgbGV0IGhlYWRlcl9pbmRleF9tYXNrID0gKDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzKSAtIDFcbiAgICBsZXQgbWFza2VkX3R1cGxlX2lkIHQgPSB0IGxzciBhcnJheV9pbmRleF9udW1fYml0c1xuICAgIGxldCBoZWFkZXJfaW5kZXggdCA9IHQgbGFuZCBoZWFkZXJfaW5kZXhfbWFza1xuICAgIGxldCBpbnZhcmlhbnQgXyB0ID0gaWYgbm90IChpc19udWxsIHQpIHRoZW4gYXNzZXJ0IChoZWFkZXJfaW5kZXggdCA+IDApXG4gICAgbGV0JXRlc3RfdW5pdCBfID0gaW52YXJpYW50IGlnbm9yZSAobnVsbCAoKSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBMaXN0Lml0ZXIgVHVwbGVfaWQuZXhhbXBsZXMgfmY6KGZ1biB0dXBsZV9pZCAtPlxuICAgICAgICBpbnZhcmlhbnQgaWdub3JlIChjcmVhdGUgfmhlYWRlcl9pbmRleDoxIHR1cGxlX2lkKSlcbiAgICA7O1xuXG4gICAgbGV0IHNsb3RfaW5kZXggdCBzbG90ID0gaGVhZGVyX2luZGV4IHQgKyBzbG90XG4gICAgbGV0IGZpcnN0X3Nsb3RfaW5kZXggdCA9IHNsb3RfaW5kZXggdCBTbG90LnQwXG5cbiAgICBtb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICBlbmRcblxuICAgIGxldCB0b19pZCB0ID0gSWQub2ZfaW50IHRcblxuICAgIGxldCBvZl9pZF9leG4gaWQgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCB0ID0gSWQudG9faW50X2V4biBpZCBpblxuICAgICAgICBpZiBpc19udWxsIHRcbiAgICAgICAgdGhlbiB0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaG91bGRfZXF1YWwgPVxuICAgICAgICAgICAgY3JlYXRlIH5oZWFkZXJfaW5kZXg6KGhlYWRlcl9pbmRleCB0KSAoVHVwbGVfaWQub2ZfaW50IChtYXNrZWRfdHVwbGVfaWQgdCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIHQgc2hvdWxkX2VxdWFsXG4gICAgICAgICAgdGhlbiB0XG4gICAgICAgICAgZWxzZSBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcInNob3VsZCBlcXVhbFwiIHNob3VsZF9lcXVhbCBbJXNleHBfb2Y6IF8gdF0pXG4gICAgICB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb2ludGVyLm9mX2lkX2V4biBnb3Qgc3RyYW5nZSBpZFwiXG4gICAgICAgICAgKGlkLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBJZC50ICogZXhuXVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgICAoKiBBIFtIZWFkZXIudF0gaXMgYW4gZW5jb2RpbmcgYXMgYW4gW2ludF0gb2YgdGhlIGZvbGxvd2luZyB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBGcmVlIG9mIHsgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IGludCB9XG4gICAgICAgICB8IFVzZWQgb2YgeyB0dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIElmIGEgdHVwbGUgaXMgZnJlZSwgaXRzIGhlYWRlciBpcyBzZXQgdG8gZWl0aGVyIFtOdWxsXSBvciBbRnJlZV0gd2l0aFxuICAgICAgIFtuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XSBpbmRpY2F0aW5nIHRoZSBoZWFkZXIgb2YgdGhlIG5leHQgdHVwbGUgb24gdGhlIGZyZWUgbGlzdC5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGluIHVzZSwgaXQgaGVhZGVyIGlzIHNldCB0byBbVXNlZF0uICopXG5cbiAgICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIG51bGwgOiB0XG4gICAgdmFsIGlzX251bGwgOiB0IC0+IGJvb2xcbiAgICB2YWwgZnJlZSA6IG5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aW50IC0+IHRcbiAgICB2YWwgaXNfZnJlZSA6IHQgLT4gYm9vbFxuICAgIHZhbCBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IDogdCAtPiBpbnRcblxuICAgICgqIG9ubHkgdmFsaWQgaWYgW2lzX2ZyZWUgdF0gKilcblxuICAgIHZhbCB1c2VkIDogVHVwbGVfaWQudCAtPiB0XG4gICAgdmFsIGlzX3VzZWQgOiB0IC0+IGJvb2xcbiAgICB2YWwgdHVwbGVfaWQgOiB0IC0+IFR1cGxlX2lkLnRcblxuICAgICgqIG9ubHkgdmFsaWQgaWYgW2lzX3VzZWQgdF0gKilcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50XG5cbiAgICBsZXQgbnVsbCA9IDBcbiAgICBsZXQgaXNfbnVsbCB0ID0gdCA9IDBcblxuICAgICgqIFdlIGtub3cgdGhhdCBoZWFkZXIgaW5kaWNlcyBhcmUgWz4gMF0sIGJlY2F1c2UgaW5kZXggWzBdIGhvbGRzIHRoZSBtZXRhZGF0YS4gKilcbiAgICBsZXQgZnJlZSB+bmV4dF9mcmVlX2hlYWRlcl9pbmRleCA9IG5leHRfZnJlZV9oZWFkZXJfaW5kZXhcbiAgICBsZXQgaXNfZnJlZSB0ID0gdCA+IDBcbiAgICBsZXQgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCB0ID0gdFxuICAgIGxldCB1c2VkICh0dXBsZV9pZCA6IFR1cGxlX2lkLnQpID0gLTEgLSAodHVwbGVfaWQgOj4gaW50KVxuICAgIGxldCBpc191c2VkIHQgPSB0IDwgMFxuICAgIGxldCB0dXBsZV9pZCB0ID0gVHVwbGVfaWQub2ZfaW50ICgtKHQgKyAxKSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBMaXN0Lml0ZXIgVHVwbGVfaWQuZXhhbXBsZXMgfmY6KGZ1biBpZCAtPlxuICAgICAgICBsZXQgdCA9IHVzZWQgaWQgaW5cbiAgICAgICAgYXNzZXJ0IChpc191c2VkIHQpO1xuICAgICAgICBhc3NlcnQgKFR1cGxlX2lkLmVxdWFsICh0dXBsZV9pZCB0KSBpZCkpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBpZiBpc19udWxsIHRcbiAgICAgIHRoZW4gU2V4cC5BdG9tIFwibnVsbFwiXG4gICAgICBlbHNlIGlmIGlzX2ZyZWUgdFxuICAgICAgdGhlbiBTZXhwLihMaXN0IFsgQXRvbSBcIkZyZWVcIjsgQXRvbSAoSW50LnRvX3N0cmluZyAobmV4dF9mcmVlX2hlYWRlcl9pbmRleCB0KSkgXSlcbiAgICAgIGVsc2UgU2V4cC4oTGlzdCBbIEF0b20gXCJVc2VkXCI7IEF0b20gKFR1cGxlX2lkLnRvX3N0cmluZyAodHVwbGVfaWQgdCkpIF0pXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1ldGFkYXRhX2luZGV4ID0gMFxuICBsZXQgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ID0gMVxuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgKG1heF9hcnJheV9sZW5ndGggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpIC8gKDEgKyBzbG90c19wZXJfdHVwbGUpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBmb3Igc2xvdHNfcGVyX3R1cGxlID0gMSB0byBtYXhfc2xvdCBkb1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKCgxICsgc2xvdHNfcGVyX3R1cGxlKSAqIG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICA8PSBtYXhfYXJyYXlfbGVuZ3RoKVxuICAgIGRvbmVcbiAgOztcblxuICBtb2R1bGUgTWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlICdzbG90cyB0ID1cbiAgICAgIHsgKCogW3Nsb3RzX3Blcl90dXBsZV0gaXMgbnVtYmVyIG9mIHNsb3RzIGluIGEgdHVwbGUgYXMgc2VlbiBieSB0aGUgdXNlcjsgaS5lLiBub3RcbiAgICAgICAgICAgY291bnRpbmcgdGhlIG5leHQtZnJlZSBwb2ludGVyLiAqKVxuICAgICAgICBzbG90c19wZXJfdHVwbGUgOiBpbnRcbiAgICAgIDsgY2FwYWNpdHkgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2lkIDogVHVwbGVfaWQudFxuICAgICAgOyBtdXRhYmxlIGZpcnN0X2ZyZWUgOiBIZWFkZXIudFxuICAgICAgKCogW2R1bW15XSBpcyBbTm9uZV0gaW4gYW4gdW5zYWZlIHBvb2wuICBJbiBhIHNhZmUgcG9vbCwgW2R1bW15XSBpcyBbU29tZSBhXSwgd2l0aFxuICAgICAgICAgW1VuaWZvcm1fYXJyYXkubGVuZ3RoIGEgPSBzbG90c19wZXJfdHVwbGVdLiAgW2R1bW15XSBpcyBhY3R1YWxseSBhIHR1cGxlIHZhbHVlXG4gICAgICAgICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUgKGNvcnJlc3BvbmRpbmcgdG8gWydzbG90c10pLCBidXQgd2UgbWFrZSB0aGUgdHlwZSBvZlxuICAgICAgICAgW2R1bW15XSBiZSBbT2JqLnQgVW5pZm9ybV9hcnJheS50XSBiZWNhdXNlIHdlIGNhbid0IHdyaXRlIHRoYXQgdHlwZSBoZXJlLiAgQWxzbyxcbiAgICAgICAgIHRoZSBwdXJwb3NlIG9mIFtkdW1teV0gaXMgdG8gaW5pdGlhbGl6ZSBhIHBvb2wgZWxlbWVudCwgbWFraW5nIFtkdW1teV0gYW4gW09iai50XG4gICAgICAgICBVbmlmb3JtX2FycmF5LnRdIGxldHMgdXMgaW5pdGlhbGl6ZSBhIHBvb2wgZWxlbWVudCB1c2luZyBbVW5pZm9ybV9hcnJheS5ibGl0XVxuICAgICAgICAgZnJvbSBbZHVtbXldIHRvIHRoZSBwb29sLCB3aGljaCBpcyBhbiBbT2JqLnQgVW5pZm9ybV9hcnJheS50XS4gKilcbiAgICAgIDsgZHVtbXkgOiAoT2JqLnQgVW5pZm9ybV9hcnJheS50W0BzZXhwLm9wYXF1ZV0pIG9wdGlvblxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0ID0gMSArIHQuc2xvdHNfcGVyX3R1cGxlXG4gICAgbGV0IGFycmF5X2xlbmd0aCB0ID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHQuY2FwYWNpdHkgKiBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0KVxuXG4gICAgbGV0IGhlYWRlcl9pbmRleF90b190dXBsZV9udW0gdCB+aGVhZGVyX2luZGV4ID1cbiAgICAgIChoZWFkZXJfaW5kZXggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpIC8gYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdFxuICAgIDs7XG5cbiAgICBsZXQgdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAodHVwbGVfbnVtICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IHQgdHVwbGVfbnVtID1cbiAgICAgIHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gKyAxXG4gICAgOztcblxuICAgIGxldCBpc19mdWxsIHQgPSB0Lmxlbmd0aCA9IHQuY2FwYWNpdHlcbiAgZW5kXG5cbiAgb3BlbiBNZXRhZGF0YVxuXG4gICgqIFdlIHVzZSB0eXBlIFtPYmoudF0gYmVjYXVzZSB0aGUgYXJyYXkgaG9sZHMgYSBtaXggb2YgaW50ZWdlcnMgYXMgd2VsbCBhcyBPQ2FtbCB2YWx1ZXNcbiAgICAgb2YgYXJiaXRyYXJ5IHR5cGUuICopXG4gIHR5cGUgJ3Nsb3RzIHQgPSBPYmoudCBVbmlmb3JtX2FycmF5LnRcblxuICBsZXQgbWV0YWRhdGEgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IG1ldGFkYXRhX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBzbG90cyBNZXRhZGF0YS50KVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9IChtZXRhZGF0YSB0KS5sZW5ndGhcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3R5IHQgPSBNZXRhZGF0YS5zZXhwX29mX3Qgc2V4cF9vZl90eSAobWV0YWRhdGEgdClcblxuICAoKiBCZWNhdXNlIFt1bnNhZmVfaGVhZGVyXSBhbmQgW3Vuc2FmZV9zZXRfaGVhZGVyXSBkbyBub3QgZG8gYSBib3VuZHMgY2hlY2ssIG9uZSBtdXN0IGJlXG4gICAgIHN1cmUgdGhhdCBvbmUgaGFzIGEgdmFsaWQgW2hlYWRlcl9pbmRleF0gYmVmb3JlIGNhbGxpbmcgdGhlbS4gKilcbiAgbGV0IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBoZWFkZXJfaW5kZXggfD4gKE9iai5vYmogOiBfIC0+IEhlYWRlci50KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggKGhlYWRlciA6IEhlYWRlci50KSA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaGVhZGVyX2luZGV4IChoZWFkZXIgOj4gaW50KVxuICA7O1xuXG4gIGxldCBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgaGVhZGVyX2luZGV4ID49IHN0YXJ0X29mX3R1cGxlc19pbmRleCAmJiBoZWFkZXJfaW5kZXggPCBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyID1cbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBpblxuICAgIEhlYWRlci5pc191c2VkIGhlYWRlclxuICAgICYmIFR1cGxlX2lkLnRvX2ludCAoSGVhZGVyLnR1cGxlX2lkIGhlYWRlcikgbGFuZCB0dXBsZV9pZF9tYXNrXG4gICAgICAgPSBQb2ludGVyLm1hc2tlZF90dXBsZV9pZCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyID1cbiAgICBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcilcbiAgICAoKiBBdCB0aGlzIHBvaW50LCB3ZSBrbm93IHRoZSBwb2ludGVyIGlzbid0IFtudWxsXSBhbmQgaXMgaW4gYm91bmRzLCBzbyB3ZSBrbm93IGl0IGlzXG4gICAgICAgdGhlIGluZGV4IG9mIGEgaGVhZGVyLCBzaW5jZSB3ZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgYWxsIHBvaW50ZXJzIG90aGVyIHRoYW5cbiAgICAgICBbbnVsbF0gYXJlLiAqKVxuICAgICYmIHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgX3QgcG9pbnRlciA9IFBvaW50ZXIudG9faWQgcG9pbnRlclxuXG4gIGxldCBpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXhcbiAgICAmJiAwXG4gICAgICAgPSAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KVxuICAgICAgICAgbW9kIE1ldGFkYXRhLmFycmF5X2luZGljZXNfcGVyX3R1cGxlIG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIHRyeVxuICAgICAgbGV0IHBvaW50ZXIgPSBQb2ludGVyLm9mX2lkX2V4biBpZCBpblxuICAgICAgaWYgbm90IChQb2ludGVyLmlzX251bGwgcG9pbnRlcilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgICAgICBpZiBub3QgKGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXgpXG4gICAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJpbnZhbGlkIGhlYWRlciBpbmRleFwiIGhlYWRlcl9pbmRleCBbJXNleHBfb2Y6IGludF07XG4gICAgICAgIGlmIG5vdCAodW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXIpIHRoZW4gZmFpbHdpdGggXCJwb2ludGVyIG5vdCBsaXZlXCIpO1xuICAgICAgcG9pbnRlclxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLnBvaW50ZXJfb2ZfaWRfZXhuIGdvdCBpbnZhbGlkIGlkXCJcbiAgICAgICAgKGlkLCB0LCBleG4pXG4gICAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50ICogXyB0ICogZXhuXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIG1ldGFkYXRhKSBpblxuICAgICAgTWV0YWRhdGEuRmllbGRzLml0ZXJcbiAgICAgICAgfnNsb3RzX3Blcl90dXBsZTooY2hlY2sgKGZ1biBzbG90c19wZXJfdHVwbGUgLT4gYXNzZXJ0IChzbG90c19wZXJfdHVwbGUgPiAwKSkpXG4gICAgICAgIH5jYXBhY2l0eTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjYXBhY2l0eSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgPj0gMCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChVbmlmb3JtX2FycmF5Lmxlbmd0aCB0ID0gTWV0YWRhdGEuYXJyYXlfbGVuZ3RoIG1ldGFkYXRhKSkpXG4gICAgICAgIH5sZW5ndGg6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gbWV0YWRhdGEuY2FwYWNpdHkpKSlcbiAgICAgICAgfm5leHRfaWQ6KGNoZWNrIFR1cGxlX2lkLmludmFyaWFudClcbiAgICAgICAgfmZpcnN0X2ZyZWU6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyc3RfZnJlZSAtPlxuICAgICAgICAgICAgIGxldCBmcmVlID0gQXJyYXkuY3JlYXRlIH5sZW46bWV0YWRhdGEuY2FwYWNpdHkgZmFsc2UgaW5cbiAgICAgICAgICAgICBsZXQgciA9IHJlZiBmaXJzdF9mcmVlIGluXG4gICAgICAgICAgICAgd2hpbGUgbm90IChIZWFkZXIuaXNfbnVsbCAhcikgZG9cbiAgICAgICAgICAgICAgIGxldCBoZWFkZXIgPSAhciBpblxuICAgICAgICAgICAgICAgYXNzZXJ0IChIZWFkZXIuaXNfZnJlZSBoZWFkZXIpO1xuICAgICAgICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IEhlYWRlci5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4IGhlYWRlciBpblxuICAgICAgICAgICAgICAgYXNzZXJ0IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KTtcbiAgICAgICAgICAgICAgIGxldCB0dXBsZV9udW0gPSBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgIGlmIGZyZWUuKHR1cGxlX251bSlcbiAgICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJjeWNsZSBpbiBmcmVlIGxpc3RcIiB0dXBsZV9udW0gWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICAgICAgICAgZnJlZS4odHVwbGVfbnVtKSA8LSB0cnVlO1xuICAgICAgICAgICAgICAgciA6PSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleFxuICAgICAgICAgICAgIGRvbmUpKVxuICAgICAgICB+ZHVtbXk6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgU29tZSBkdW1teSAtPiBhc3NlcnQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGR1bW15ID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgaWYgSGVhZGVyLmlzX2ZyZWUgaGVhZGVyXG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdF9zbG90ID0gdHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICAgICAgICAgICAgZm9yIHNsb3QgPSAwIHRvIG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoT2JqLmlzX2ludCAoVW5pZm9ybV9hcnJheS5nZXQgdCAoZmlyc3Rfc2xvdCArIHNsb3QpKSlcbiAgICAgICAgICAgICAgICAgICBkb25lKVxuICAgICAgICAgICAgICAgZG9uZSkpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wuaW52YXJpYW50IGZhaWxlZFwiIChleG4sIHQpIFslc2V4cF9vZjogZXhuICogXyB0XVxuICA7O1xuXG4gIGxldCBjYXBhY2l0eSB0ID0gKG1ldGFkYXRhIHQpLmNhcGFjaXR5XG4gIGxldCBpc19mdWxsIHQgPSBNZXRhZGF0YS5pc19mdWxsIChtZXRhZGF0YSB0KVxuXG4gIGxldCB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0IG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggPVxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBtZXRhZGF0YS5maXJzdF9mcmVlO1xuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gSGVhZGVyLmZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aGVhZGVyX2luZGV4XG4gIDs7XG5cbiAgbGV0IHNldF9tZXRhZGF0YSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSBtZXRhZGF0YSA9XG4gICAgVW5pZm9ybV9hcnJheS5zZXQgdCBtZXRhZGF0YV9pbmRleCAoT2JqLnJlcHIgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hcnJheSAodHlwZSBzbG90cykgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkgOiBzbG90cyB0ID1cbiAgICBsZXQgdCA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlX29ial9hcnJheSB+bGVuOihNZXRhZGF0YS5hcnJheV9sZW5ndGggbWV0YWRhdGEpIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGE7XG4gICAgdFxuICA7O1xuXG4gICgqIEluaXRpYWxpemUgdHVwbGVzIG51bWJlcmVkIGZyb20gW2xvXSAoaW5jbHVzaXZlKSB1cCB0byBbaGldIChleGNsdXNpdmUpLiAgRm9yIGVhY2hcbiAgICAgdHVwbGUsIHRoaXMgcHV0cyBkdW1teSB2YWx1ZXMgaW4gdGhlIHR1cGxlJ3Mgc2xvdHMgYW5kIGFkZHMgdGhlIHR1cGxlIHRvIHRoZSBmcmVlXG4gICAgIGxpc3QuICopXG4gIGxldCB1bnNhZmVfaW5pdF9yYW5nZSB0IG1ldGFkYXRhIH5sbyB+aGkgPVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICBmb3IgdHVwbGVfbnVtID0gbG8gdG8gaGkgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgIH5kc3Q6dFxuICAgICAgICAgICB+ZHN0X3BvczoodHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGZvciB0dXBsZV9udW0gPSBoaSAtIDEgZG93bnRvIGxvIGRvXG4gICAgICB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdFxuICAgICAgICB0XG4gICAgICAgIG1ldGFkYXRhXG4gICAgICAgIH5oZWFkZXJfaW5kZXg6KHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgaWYgY2FwYWNpdHkgPCAwXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLmNyZWF0ZSBnb3QgaW52YWxpZCBjYXBhY2l0eVwiIGNhcGFjaXR5IFslc2V4cF9vZjogaW50XTtcbiAgICBsZXQgc2xvdHNfcGVyX3R1cGxlID0gU2xvdHMuc2xvdHNfcGVyX3R1cGxlIHNsb3RzIGluXG4gICAgbGV0IG1heF9jYXBhY2l0eSA9IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlIGluXG4gICAgaWYgY2FwYWNpdHkgPiBtYXhfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuY3JlYXRlIGdvdCB0b28gbGFyZ2UgY2FwYWNpdHlcIlxuICAgICAgICAoY2FwYWNpdHksIGBtYXggbWF4X2NhcGFjaXR5KVxuICAgICAgICBbJXNleHBfb2Y6IGludCAqIFsgYG1heCBvZiBpbnQgXV07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aCA9IDBcbiAgICAgIDsgbmV4dF9pZCA9IFR1cGxlX2lkLmluaXRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZV9hcnJheSBtZXRhZGF0YSBpblxuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQgbWV0YWRhdGEgfmxvOjAgfmhpOmNhcGFjaXR5O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlICh0eXBlIHR1cGxlKSAoc2xvdHMgOiAodHVwbGUsIF8pIFNsb3RzLnQpIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGxldCBkdW1teSA9XG4gICAgICBpZiBTbG90cy5zbG90c19wZXJfdHVwbGUgc2xvdHMgPSAxXG4gICAgICB0aGVuIFVuaWZvcm1fYXJyYXkuc2luZ2xldG9uIChPYmoucmVwciAoZHVtbXkgOiB0dXBsZSkpXG4gICAgICBlbHNlIChPYmoubWFnaWMgKGR1bW15IDogdHVwbGUpIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teTooU29tZSBkdW1teSlcbiAgOztcblxuICAoKiBQdXJnZSBhIHBvb2wgYW5kIG1ha2UgaXQgdW51c2FibGUuICopXG4gIGxldCBkZXN0cm95IHQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAoKiBXZSBjbGVhciBvdXQgYWxsIHRoZSBwb29sJ3MgZW50cmllcywgd2hpY2ggY2F1c2VzIGFsbCBwb2ludGVycyB0byBiZSBpbnZhbGlkLiAgVGhpc1xuICAgICAgIGFsc28gcHJldmVudHMgdGhlIGRlc3Ryb3llZCBwb29sIGZyb20gdW5uZWNlc3NhcmlseSBrZWVwaW5nIGhlYXAgYmxvY2tzIGFsaXZlLlxuICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byBbZnJlZV1pbmcgYWxsIHRoZSBlbnRyaWVzIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCB3ZSBtYWtlIHRoZVxuICAgICAgIGZyZWUgbGlzdCBlbXB0eSBhcyB3ZWxsLiAqKVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGZvciBpID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4IHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChPYmoucmVwciAwKVxuICAgICAgIGRvbmVcbiAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBIZWFkZXIubnVsbDtcbiAgICAgICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICAgfmRzdDp0XG4gICAgICAgICAgIH5kc3RfcG9zOihoZWFkZXJfaW5kZXggKyAxKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eSA9IDBcbiAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgOyBuZXh0X2lkID0gbWV0YWRhdGEubmV4dF9pZFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXkgPSBtZXRhZGF0YS5kdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGFcbiAgOztcblxuICBsZXRbQGNvbGRdIGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGxldCB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICA7IGNhcGFjaXR5ID0gb2xkX2NhcGFjaXR5XG4gICAgICAgIDsgbGVuZ3RoXG4gICAgICAgIDsgbmV4dF9pZFxuICAgICAgICA7IGZpcnN0X2ZyZWUgPSBfXG4gICAgICAgIDsgZHVtbXlcbiAgICAgICAgfVxuICAgICAgPVxuICAgICAgbWV0YWRhdGEgdFxuICAgIGluXG4gICAgbGV0IGNhcGFjaXR5ID1cbiAgICAgIG1pbiAobWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpIChncm93X2NhcGFjaXR5IH5jYXBhY2l0eSB+b2xkX2NhcGFjaXR5KVxuICAgIGluXG4gICAgaWYgY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuZ3JvdyBjYW5ub3QgZ3JvdyBwb29sOyBjYXBhY2l0eSBhbHJlYWR5IGF0IG1heGltdW1cIlxuICAgICAgICBjYXBhY2l0eVxuICAgICAgICBbJXNleHBfb2Y6IGludF07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aFxuICAgICAgOyBuZXh0X2lkXG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQnID0gY3JlYXRlX2FycmF5IG1ldGFkYXRhIGluXG4gICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICB+c3JjOnRcbiAgICAgIH5zcmNfcG9zOnN0YXJ0X29mX3R1cGxlc19pbmRleFxuICAgICAgfmRzdDp0J1xuICAgICAgfmRzdF9wb3M6c3RhcnRfb2ZfdHVwbGVzX2luZGV4XG4gICAgICB+bGVuOihvbGRfY2FwYWNpdHkgKiBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YSk7XG4gICAgZGVzdHJveSB0O1xuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQnIG1ldGFkYXRhIH5sbzpvbGRfY2FwYWNpdHkgfmhpOmNhcGFjaXR5O1xuICAgIGZvciB0dXBsZV9udW0gPSBvbGRfY2FwYWNpdHkgLSAxIGRvd250byAwIGRvXG4gICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQnIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgIGlmIG5vdCAoSGVhZGVyLmlzX3VzZWQgaGVhZGVyKVxuICAgICAgdGhlbiB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0JyBtZXRhZGF0YSB+aGVhZGVyX2luZGV4XG4gICAgZG9uZTtcbiAgICB0J1xuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfbWFsbG9jX2Z1bGwgdCA9XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLm1hbGxvYyBvZiBmdWxsIHBvb2xcIiB0IFslc2V4cF9vZjogXyB0XVxuICA7O1xuXG4gIGxldCBtYWxsb2MgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgOiBzbG90cyBQb2ludGVyLnQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBsZXQgZmlyc3RfZnJlZSA9IG1ldGFkYXRhLmZpcnN0X2ZyZWUgaW5cbiAgICBpZiBIZWFkZXIuaXNfbnVsbCBmaXJzdF9mcmVlIHRoZW4gcmFpc2VfbWFsbG9jX2Z1bGwgdDtcbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gSGVhZGVyLm5leHRfZnJlZV9oZWFkZXJfaW5kZXggZmlyc3RfZnJlZSBpblxuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXg7XG4gICAgbWV0YWRhdGEubGVuZ3RoIDwtIG1ldGFkYXRhLmxlbmd0aCArIDE7XG4gICAgbGV0IHR1cGxlX2lkID0gbWV0YWRhdGEubmV4dF9pZCBpblxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCAoSGVhZGVyLnVzZWQgdHVwbGVfaWQpO1xuICAgIG1ldGFkYXRhLm5leHRfaWQgPC0gVHVwbGVfaWQubmV4dCB0dXBsZV9pZDtcbiAgICBQb2ludGVyLmNyZWF0ZSB+aGVhZGVyX2luZGV4IHR1cGxlX2lkXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIG1ldGFkYXRhLmxlbmd0aCA8LSBtZXRhZGF0YS5sZW5ndGggLSAxO1xuICAgIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQgbWV0YWRhdGEgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcik7XG4gICAgbWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHBvcyA9IFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIC0gMSBkb1xuICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgKHBvcyArIGkpXG4gICAgICBkb25lXG4gICAgfCBTb21lIGR1bW15IC0+XG4gICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9ibGl0XG4gICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICB+ZHN0OnRcbiAgICAgICAgfmRzdF9wb3M6KFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBmcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgKCogQ2hlY2sgW3BvaW50ZXJfaXNfdmFsaWRdIHRvOlxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIG51bGwgcG9pbnRlclxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIGZyZWUgcG9pbnRlciAodGhpcyB3b3VsZCBsZWFkIHRvIGEgcG9vbCBpbmNvbnNpc3RlbmN5KVxuICAgICAgIC0gYmUgYWJsZSB0byB1c2UgdW5zYWZlIGZ1bmN0aW9ucyBhZnRlci4gKilcbiAgICBpZiBub3QgKHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5mcmVlIG9mIGludmFsaWQgcG9pbnRlclwiXG4gICAgICAgIChwb2ludGVyLCB0KVxuICAgICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50ICogXyB0XTtcbiAgICB1bnNhZmVfZnJlZSB0IHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzIgdCBhMCBhMSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTMpIChPYmoucmVwciBhMTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEzKSAoT2JqLnJlcHIgYTEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTQpIChPYmoucmVwciBhMTMpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgZ2V0IHQgcCBzbG90ID0gT2JqLm9iaiAoVW5pZm9ybV9hcnJheS5nZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkpXG5cbiAgbGV0IHVuc2FmZV9nZXQgdCBwIHNsb3QgPVxuICAgIE9iai5vYmogKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSlcbiAgOztcblxuICBsZXQgc2V0IHQgcCBzbG90IHggPSBVbmlmb3JtX2FycmF5LnNldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSAoT2JqLnJlcHIgeClcblxuICBsZXQgdW5zYWZlX3NldCB0IHAgc2xvdCB4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkgKE9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IGdldF90dXBsZSAodHlwZSB0dXBsZSkgKHQgOiAodHVwbGUsIF8pIFNsb3RzLnQgdCkgcG9pbnRlciA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGxldCBsZW4gPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgaW5cbiAgICBpZiBsZW4gPSAxXG4gICAgdGhlbiBnZXQgdCBwb2ludGVyIFNsb3QudDBcbiAgICBlbHNlXG4gICAgICAoT2JqLm1hZ2ljXG4gICAgICAgICAoVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOihQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlcikgfmxlblxuICAgICAgICAgIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgICAgIDogdHVwbGUpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb29sXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb29sXG5cbiAgbGV0IGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgPSBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15Ok5vbmVcbmVuZFxuXG5tb2R1bGUgRGVidWcgKFBvb2wgOiBTKSA9IHN0cnVjdFxuICBvcGVuIFBvb2xcblxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBsZXQgcHJlZml4ID0gXCJQb29sLlwiIGluXG4gICAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciB0cyB+ZjooaW52YXJpYW50IGlnbm9yZSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXMgdGhlbiBEZWJ1Zy5lcHJpbnRzIChjb25jYXQgWyBwcmVmaXg7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIERlYnVnLmVwcmludHNcbiAgICAgICAgKGNvbmNhdCBbIHByZWZpeDsgbmFtZTsgXCIgcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgb3BlbiBQb2ludGVyXG5cbiAgICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBsZXQgcGh5c19jb21wYXJlIHQxIHQyID1cbiAgICAgIGRlYnVnXG4gICAgICAgIFwiUG9pbnRlci5waHlzX2NvbXBhcmVcIlxuICAgICAgICBbXVxuICAgICAgICAodDEsIHQyKVxuICAgICAgICBbJXNleHBfb2Y6IF8gdCAqIF8gdF1cbiAgICAgICAgWyVzZXhwX29mOiBpbnRdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19jb21wYXJlIHQxIHQyKVxuICAgIDs7XG5cbiAgICBsZXQgcGh5c19lcXVhbCB0MSB0MiA9XG4gICAgICBkZWJ1Z1xuICAgICAgICBcIlBvaW50ZXIucGh5c19lcXVhbFwiXG4gICAgICAgIFtdXG4gICAgICAgICh0MSwgdDIpXG4gICAgICAgIFslc2V4cF9vZjogXyB0ICogXyB0XVxuICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19lcXVhbCB0MSB0MilcbiAgICA7O1xuXG4gICAgbGV0IGlzX251bGwgdCA9XG4gICAgICBkZWJ1ZyBcIlBvaW50ZXIuaXNfbnVsbFwiIFtdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19udWxsIHQpXG4gICAgOztcblxuICAgIGxldCBudWxsID0gbnVsbFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBvcGVuIElkXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgbGV0IG9mX2ludDYzIGkgPVxuICAgICAgICBkZWJ1ZyBcIlBvaW50ZXIuSWQub2ZfaW50NjNcIiBbXSBpIFslc2V4cF9vZjogSW50NjMudF0gWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgb2ZfaW50NjMgaSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID1cbiAgICAgICAgZGVidWcgXCJQb2ludGVyLklkLnRvX2ludDYzXCIgW10gdCBbJXNleHBfb2Y6IHRdIFslc2V4cF9vZjogSW50NjMudF0gKGZ1biAoKSAtPlxuICAgICAgICAgIHRvX2ludDYzIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyID1cbiAgICBkZWJ1Z1xuICAgICAgXCJpZF9vZl9wb2ludGVyXCJcbiAgICAgIFsgdCBdXG4gICAgICBwb2ludGVyXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnRdXG4gICAgICAoZnVuICgpIC0+IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBkZWJ1Z1xuICAgICAgXCJwb2ludGVyX29mX2lkX2V4blwiXG4gICAgICBbIHQgXVxuICAgICAgaWRcbiAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50XVxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIChmdW4gKCkgLT4gcG9pbnRlcl9vZl9pZF9leG4gdCBpZClcbiAgOztcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgPVxuICAgIGRlYnVnXG4gICAgICBcInBvaW50ZXJfaXNfdmFsaWRcIlxuICAgICAgWyB0IF1cbiAgICAgIHBvaW50ZXJcbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAoZnVuICgpIC0+IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgZGVidWcgXCJjcmVhdGVcIiBbXSBjYXBhY2l0eSBbJXNleHBfb2Y6IGludF0gWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15KVxuICA7O1xuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgZGVidWcgXCJtYXhfY2FwYWNpdHlcIiBbXSBzbG90c19wZXJfdHVwbGUgWyVzZXhwX29mOiBpbnRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+XG4gICAgICBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgOztcblxuICBsZXQgY2FwYWNpdHkgdCA9XG4gICAgZGVidWcgXCJjYXBhY2l0eVwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+IGNhcGFjaXR5IHQpXG4gIDs7XG5cbiAgbGV0IGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGRlYnVnXG4gICAgICBcImdyb3dcIlxuICAgICAgWyB0IF1cbiAgICAgIChgY2FwYWNpdHkgY2FwYWNpdHkpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNhcGFjaXR5IG9mIGludCBvcHRpb24gXV1cbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICAgICAgKGZ1biAoKSAtPiBncm93ID9jYXBhY2l0eSB0KVxuICA7O1xuXG4gIGxldCBpc19mdWxsIHQgPVxuICAgIGRlYnVnIFwiaXNfZnVsbFwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19mdWxsIHQpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgZGVidWcgXCJ1bnNhZmVfZnJlZVwiIFsgdCBdIHAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+XG4gICAgICB1bnNhZmVfZnJlZSB0IHApXG4gIDs7XG5cbiAgbGV0IGZyZWUgdCBwID1cbiAgICBkZWJ1ZyBcImZyZWVcIiBbIHQgXSBwIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPiBmcmVlIHQgcClcbiAgOztcblxuICBsZXQgZGVidWdfbmV3IHQgZiA9IGRlYnVnIFwibmV3XCIgWyB0IF0gKCkgWyVzZXhwX29mOiB1bml0XSBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBmXG4gIGxldCBuZXcxIHQgYTAgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEgdCBhMClcbiAgbGV0IG5ldzIgdCBhMCBhMSA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXczIHQgYTAgYTEgYTIpXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzQgdCBhMCBhMSBhMiBhMylcbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUpXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNilcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOClcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5KVxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSlcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyKVxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcblxuICBsZXQgZ2V0X3R1cGxlIHQgcG9pbnRlciA9XG4gICAgZGVidWcgXCJnZXRfdHVwbGVcIiBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogX10gKGZ1biAoKSAtPlxuICAgICAgZ2V0X3R1cGxlIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgZGVidWdfZ2V0IG5hbWUgZiB0IHBvaW50ZXIgPVxuICAgIGRlYnVnIG5hbWUgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IF9dIChmdW4gKCkgLT4gZiB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGdldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcImdldFwiIGdldCB0IHBvaW50ZXIgc2xvdFxuICBsZXQgdW5zYWZlX2dldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcInVuc2FmZV9nZXRcIiB1bnNhZmVfZ2V0IHQgcG9pbnRlciBzbG90XG5cbiAgbGV0IGRlYnVnX3NldCBuYW1lIGYgdCBwb2ludGVyIHNsb3QgYSA9XG4gICAgZGVidWcgbmFtZSBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPlxuICAgICAgZiB0IHBvaW50ZXIgc2xvdCBhKVxuICA7O1xuXG4gIGxldCBzZXQgdCBwb2ludGVyIHNsb3QgYSA9IGRlYnVnX3NldCBcInNldFwiIHNldCB0IHBvaW50ZXIgc2xvdCBhXG4gIGxldCB1bnNhZmVfc2V0IHQgcG9pbnRlciBzbG90IGEgPSBkZWJ1Z19zZXQgXCJ1bnNhZmVfc2V0XCIgdW5zYWZlX3NldCB0IHBvaW50ZXIgc2xvdCBhXG5lbmRcblxubW9kdWxlIEVycm9yX2NoZWNrIChQb29sIDogUykgPSBzdHJ1Y3RcbiAgb3BlbiBQb29sXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7IG11dGFibGUgaXNfdmFsaWQgOiBib29sXG4gICAgICA7IHBvaW50ZXIgOiAnc2xvdHMgUG9pbnRlci50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGxldCBjcmVhdGUgcG9pbnRlciA9IHsgaXNfdmFsaWQgPSB0cnVlOyBwb2ludGVyIH1cbiAgICBsZXQgbnVsbCAoKSA9IHsgaXNfdmFsaWQgPSBmYWxzZTsgcG9pbnRlciA9IFBvaW50ZXIubnVsbCAoKSB9XG4gICAgbGV0IHBoeXNfY29tcGFyZSB0MSB0MiA9IFBvaW50ZXIucGh5c19jb21wYXJlIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBwaHlzX2VxdWFsIHQxIHQyID0gUG9pbnRlci5waHlzX2VxdWFsIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBpc19udWxsIHQgPSBQb2ludGVyLmlzX251bGwgdC5wb2ludGVyXG5cbiAgICBsZXQgZm9sbG93IHQgPVxuICAgICAgaWYgbm90IHQuaXNfdmFsaWRcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIHVzZSBpbnZhbGlkIHBvaW50ZXJcIiB0IFslc2V4cF9vZjogXyB0XTtcbiAgICAgIHQucG9pbnRlclxuICAgIDs7XG5cbiAgICBsZXQgaW52YWxpZGF0ZSB0ID0gdC5pc192YWxpZCA8LSBmYWxzZVxuXG4gICAgbW9kdWxlIElkID0gUG9pbnRlci5JZFxuICBlbmRcblxuICB0eXBlICdzbG90cyB0ID0gJ3Nsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH0gPVxuICAgIGlzX3ZhbGlkICYmIHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyXG4gIDs7XG5cbiAgKCogV2UgZG9uJ3QgZG8gW1BvaW50ZXIuZm9sbG93IHBvaW50ZXJdLCBiZWNhdXNlIHRoYXQgd291bGQgZGlzYWxsb3cgW2lkX29mX3BvaW50ZXIgdFxuICAgICAoUG9pbnRlci5udWxsICgpKV0uICopXG4gIGxldCBpZF9vZl9wb2ludGVyIHQgcG9pbnRlciA9IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyLlBvaW50ZXIucG9pbnRlclxuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBsZXQgcG9pbnRlciA9IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgaW5cbiAgICBsZXQgaXNfdmFsaWQgPSBQb29sLnBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyIGluXG4gICAgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH1cbiAgOztcblxuICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5XG4gIGxldCBtYXhfY2FwYWNpdHkgPSBtYXhfY2FwYWNpdHlcbiAgbGV0IGdyb3cgPSBncm93XG4gIGxldCBpc19mdWxsID0gaXNfZnVsbFxuICBsZXQgZ2V0X3R1cGxlIHQgcCA9IGdldF90dXBsZSB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgZ2V0IHQgcCA9IGdldCB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgdW5zYWZlX2dldCB0IHAgPSB1bnNhZmVfZ2V0IHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCBzZXQgdCBwIHNsb3QgdiA9IHNldCB0IChQb2ludGVyLmZvbGxvdyBwKSBzbG90IHZcbiAgbGV0IHVuc2FmZV9zZXQgdCBwIHNsb3QgdiA9IHVuc2FmZV9zZXQgdCAoUG9pbnRlci5mb2xsb3cgcCkgc2xvdCB2XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgdW5zYWZlX2ZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgZnJlZSB0IHAgPVxuICAgIGZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MSB0IGEwKVxuICBsZXQgbmV3MiB0IGEwIGExID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MyB0IGEwIGExIGEyKVxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NCB0IGEwIGExIGEyIGEzKVxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1KVxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2KVxuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTgpXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkpXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEpXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIpXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcbmVuZFxuIiwiKCogQmUgc3VyZSBhbmQgZmlyc3QgcmVhZCB0aGUgaW1wbGVtZW50YXRpb24gb3ZlcnZpZXcgaW4gdGltaW5nX3doZWVsX2ludGYubWwuXG5cbiAgIEEgdGltaW5nIHdoZWVsIGlzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIFwibGV2ZWxzXCIsIHdoZXJlIGVhY2ggbGV2ZWwgaXMgYW4gYXJyYXkgb2ZcbiAgIFwic2xvdHNcIi4gIEVhY2ggc2xvdCByZXByZXNlbnRzIGEgcmFuZ2Ugb2Yga2V5cywgYW5kIGhvbGRzIGVsZW1lbnRzIGFzc29jaWF0ZWQgd2l0aFxuICAgdGhvc2Uga2V5cy4gIEVhY2ggbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSB0d28gcGFyYW1ldGVyczogW2JpdHNdLCB0aGUgbnVtYmVyIG9mIGtleSBiaXRzXG4gICB0aGF0IHRoYXQgbGV2ZWwgaXMgcmVzcG9uc2libGUgZm9yIGRpc3Rpbmd1aXNoaW5nLCBhbmQgW2JpdHNfcGVyX3Nsb3RdLCB0aGUgc2l6ZSBvZiB0aGVcbiAgIHJhbmdlIG9mIGtleXMgdGhhdCBjb3JyZXNwb25kIHRvIGEgc2luZ2xlIHNsb3QgaW4gdGhlIGFycmF5LiAgQ29uY2VwdHVhbGx5LCBlYWNoIGxldmVsXG4gICBicmVha3MgdXAgYWxsIHBvc3NpYmxlIGtleXMgaW50byByYW5nZXMgb2Ygc2l6ZSBbMl5iaXRzX3Blcl9zbG90XS4gIFRoZSBsZW5ndGggb2YgYVxuICAgbGV2ZWwgYXJyYXkgaXMgWzJeYml0c10sIGFuZCB0aGUgYXJyYXkgaXMgdXNlZCBsaWtlIGEgY2lyY3VsYXIgYnVmZmVyIHRvIHRyYXZlcnNlIHRoZVxuICAgcmFuZ2VzIGFzIHRoZSB0aW1pbmcgd2hlZWwncyBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMuICBBIGtleSBba10sIGlmIHN0b3JlZCBpbiB0aGVcbiAgIGxldmVsLCBpcyBzdG9yZWQgYXQgaW5kZXggWyhrIC8gMl5iaXRzX3Blcl9zbG90KSBtb2QgMl5iaXRzXS5cblxuICAgVGhlIHNldHRpbmdzIG9mIHRoZSBbYml0c10gdmFsdWVzIGFyZSBjb25maWd1cmFibGUgYnkgdXNlciBjb2RlIHVzaW5nIFtMZXZlbF9iaXRzXSxcbiAgIGFsdGhvdWdoIHRoZXJlIGlzIGEgcmVhc29uYWJsZSBkZWZhdWx0IHNldHRpbmcuICBHaXZlbiB0aGUgW2JpdHNdIHZhbHVlcywgdGhlXG4gICBbYml0c19wZXJfc2xvdF0gYXJlIGNob3NlbiBzbyB0aGF0IFtiaXRzX3Blcl9zbG90XSBhdCBsZXZlbCBbaV0gaXMgdGhlIHN1bSBvZiB0aGVcbiAgIFtiaXRzXSBhdCBhbGwgbG93ZXIgbGV2ZWxzLiAgVGh1cywgYSBzbG90J3MgcmFuZ2UgYXQgbGV2ZWwgW2ldIGlzIGFzIGxhcmdlIGFzIHRoZVxuICAgZW50aXJlIHJhbmdlIG9mIHRoZSBhcnJheSBhdCBsZXZlbCBbaSAtIDFdLlxuXG4gICBFYWNoIGxldmVsIGhhcyBhIFttaW5fYWxsb3dlZF9rZXldIGFuZCBhIFttYXhfYWxsb3dlZF9rZXldIHRoYXQgZGV0ZXJtaW5lIHRoZSByYW5nZSBvZlxuICAga2V5cyB0aGF0IGl0IGN1cnJlbnRseSByZXByZXNlbnRzLiAgVGhlIGNydWNpYWwgaW52YXJpYW50IG9mIHRoZSB0aW1pbmcgd2hlZWwgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRoYXQgdGhlIFttaW5fYWxsb3dlZF9rZXldIGF0IGxldmVsIFtpXSBpcyBubyBtb3JlIHRoYW4gdGhlXG4gICBbbWF4X2FsbG93ZWRfa2V5ICsgMV0gb2YgbGV2ZWwgW2kgLSAxXS4gIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBsZXZlbHMgY2FuIHJlcHJlc2VudCBhbGxcbiAgIGtleXMgZnJvbSB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgdGhlIGxvd2VzdCBsZXZlbCB0byB0aGUgW21heF9hbGxvd2VkX2tleV0gb2YgdGhlXG4gICBoaWdoZXN0IGxldmVsLiAgVGhlIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciByZXN0b3JpbmdcbiAgIHRoaXMgaW52YXJpYW50LlxuXG4gICBBdCBsZXZlbCAwLCBbYml0c19wZXJfc2xvdCA9IDBdLCBhbmQgc28gdGhlIHNpemUgb2YgZWFjaCBzbG90IGlzIFsxXS4gIFRoYXQgaXMsIGxldmVsIDBcbiAgIHByZWNpc2VseSBkaXN0aW5ndWlzaGVzIGFsbCB0aGUga2V5cyBiZXR3ZWVuIGl0cyBbbWluX2FsbG93ZWRfa2V5XSAod2hpY2ggaXMgdGhlIHNhbWVcbiAgIGFzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiB0aGUgZW50aXJlIHRpbWluZyB3aGVlbCkgYW5kIFttYXhfYWxsb3dlZF9rZXldLiAgQXMgdGhlXG4gICBsZXZlbHMgaW5jcmVhc2UsIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMsIHRoZSBbYml0c19wZXJfc2xvdF0gaW5jcmVhc2VzLCBhbmRcbiAgIHRoZSByYW5nZSBvZiBrZXlzIHN0b3JlZCBpbiB0aGUgbGV2ZWwgaW5jcmVhc2VzIChkcmFtYXRpY2FsbHkpLlxuXG4gICBUaGUgaWRlYSBvZiB0aGUgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byB0aGUgaGllcmFyY2hpY2FsIGFwcHJvYWNoIGRlc2NyaWJlZCBpbjpcblxuICAge3ZcbiAgICAgSGFzaGVkIGFuZCBIaWVyYXJjaGljYWwgVGltaW5nIFdoZWVsczpcbiAgICAgRWZmaWNpZW50IERhdGEgU3RydWN0dXJlcyBmb3IgSW1wbGVtZW50aW5nIGEgVGltZXIgRmFjaWxpdHlcblxuICAgICBWYXJnaGVzZSAmIExhdWNrLCAxOTk2XG4gICB2fVxuXG4gICBIb3dldmVyLCB0aGUgY29kZSBpcyBjb21wbGV0ZWx5IG5ldy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBUaW1pbmdfd2hlZWxfaW50ZlxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbmxldCBzZXhwX29mX3Rfc3R5bGUgOiBbIGBQcmV0dHkgfCBgSW50ZXJuYWwgXSByZWYgPSByZWYgYFByZXR0eVxuXG4oKiBbe21heCxtaW59X3RpbWVdIGFyZSBib3VuZHMgb24gdGhlIHRpbWVzIHN1cHBvcnRlZCBieSBhIHRpbWluZyB3aGVlbC4gKilcblxubGV0IG1heF90aW1lID0gVGltZV9ucy5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1pbl90aW1lID0gVGltZV9ucy5lcG9jaFxuXG5tb2R1bGUgTnVtX2tleV9iaXRzIDogc2lnXG4gIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHplcm8gOiB0XG5cbiAgKCogdmFsIG1pbl92YWx1ZSA6IHQgKilcblxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cyIDogdCAtPiBJbnQ2My50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRcblxuICBsZXQgbWluX3ZhbHVlID0gMFxuXG4gICgqKiBXZSBzdXBwb3J0IGFsbCBub24tbmVnYXRpdmUgW1RpbWVfbnMudF0gdmFsdWVzLiAqKVxuICBsZXQgbWF4X3ZhbHVlID0gSW50NjMubnVtX2JpdHMgLSAxXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQgPj0gbWluX3ZhbHVlKTtcbiAgICBhc3NlcnQgKHQgPD0gbWF4X3ZhbHVlKVxuICA7O1xuXG4gIGxldCBvZl9pbnQgaSA9XG4gICAgaW52YXJpYW50IGk7XG4gICAgaVxuICA7O1xuXG4gIGxldCAoICsgKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSArIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCAoIC0gKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSAtIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBwb3cyIHQgPSBJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSB0XG5lbmRcblxubW9kdWxlIExldmVsX2JpdHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTnVtX2tleV9iaXRzLnQgbGlzdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBtYXhfbnVtX2JpdHMgPSAoTnVtX2tleV9iaXRzLm1heF92YWx1ZSA6PiBpbnQpXG4gIGxldCBudW1fYml0c19pbnRlcm5hbCB0ID0gTGlzdC5mb2xkIHQgfmluaXQ6TnVtX2tleV9iaXRzLnplcm8gfmY6TnVtX2tleV9iaXRzLiggKyApXG4gIGxldCBudW1fYml0cyB0ID0gKG51bV9iaXRzX2ludGVybmFsIHQgOj4gaW50KVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0IChub3QgKExpc3QuaXNfZW1wdHkgdCkpO1xuICAgIExpc3QuaXRlciB0IH5mOihmdW4gbnVtX2tleV9iaXRzIC0+XG4gICAgICBOdW1fa2V5X2JpdHMuaW52YXJpYW50IG51bV9rZXlfYml0cztcbiAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIG51bV9rZXlfYml0cyBOdW1fa2V5X2JpdHMuemVybykpO1xuICAgIE51bV9rZXlfYml0cy5pbnZhcmlhbnQgKG51bV9iaXRzX2ludGVybmFsIHQpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgdCA9IHNleHAgfD4gWyVvZl9zZXhwOiB0XSBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biA/KGV4dGVuZF90b19tYXhfbnVtX2JpdHMgPSBmYWxzZSkgaW50cyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSBpbnRzIHRoZW4gZmFpbHdpdGggXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gcmVxdWlyZXMgYSBub25lbXB0eSBsaXN0XCI7XG4gICAgaWYgTGlzdC5leGlzdHMgaW50cyB+ZjooZnVuIGJpdHMgLT4gYml0cyA8PSAwKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCBub25wb3NpdGl2ZSBudW0gYml0c1wiIH5fOihpbnRzIDogaW50IGxpc3QpXTtcbiAgICBsZXQgbnVtX2JpdHMgPSBMaXN0LmZvbGQgaW50cyB+aW5pdDowIH5mOiggKyApIGluXG4gICAgaWYgbnVtX2JpdHMgPiBtYXhfbnVtX2JpdHNcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCB0b28gbWFueSBiaXRzXCJcbiAgICAgICAgICAgIH5fOihpbnRzIDogaW50IGxpc3QpXG4gICAgICAgICAgICB+Z290OihudW1fYml0cyA6IGludClcbiAgICAgICAgICAgIChtYXhfbnVtX2JpdHMgOiBpbnQpXTtcbiAgICBsZXQgaW50cyA9XG4gICAgICBpZiBleHRlbmRfdG9fbWF4X251bV9iaXRzXG4gICAgICB0aGVuIGludHMgQCBMaXN0LmluaXQgKG1heF9udW1fYml0cyAtIG51bV9iaXRzKSB+ZjooY29uc3QgMSlcbiAgICAgIGVsc2UgaW50c1xuICAgIGluXG4gICAgTGlzdC5tYXAgaW50cyB+ZjpOdW1fa2V5X2JpdHMub2ZfaW50XG4gIDs7XG5cbiAgbGV0IGRlZmF1bHQgPSBjcmVhdGVfZXhuIFsgMTE7IDEwOyAxMDsgMTA7IDEwOyAxMDsgMSBdXG5cbiAgbGV0IHRyaW0gdCB+bWF4X251bV9iaXRzID1cbiAgICBpZiBOdW1fa2V5X2JpdHMuKCA8PSApIChudW1fYml0c19pbnRlcm5hbCB0KSBtYXhfbnVtX2JpdHNcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCB0IH5yZW1haW5pbmcgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IGIgOjogdCAtPlxuICAgICAgICAgIGlmIE51bV9rZXlfYml0cy4oID49ICkgYiByZW1haW5pbmdcbiAgICAgICAgICB0aGVuIFsgcmVtYWluaW5nIF1cbiAgICAgICAgICBlbHNlIGIgOjogbG9vcCB0IH5yZW1haW5pbmc6KE51bV9rZXlfYml0cy4oIC0gKSByZW1haW5pbmcgYilcbiAgICAgIGluXG4gICAgICBsb29wIHQgfnJlbWFpbmluZzptYXhfbnVtX2JpdHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA6IHNpZ1xuICBpbmNsdWRlIEFsYXJtX3ByZWNpc2lvblxuXG4gIHZhbCBudW1fa2V5X2JpdHMgOiB0IC0+IE51bV9rZXlfYml0cy50XG4gIHZhbCBpbnRlcnZhbF9udW0gOiB0IC0+IFRpbWVfbnMudCAtPiBJbnQ2My50XG4gIHZhbCBpbnRlcnZhbF9udW1fc3RhcnQgOiB0IC0+IEludDYzLnQgLT4gVGltZV9ucy50XG5lbmQgPSBzdHJ1Y3RcbiAgKCoqIFt0XSBpcyByZXByZXNlbnRlZCBhcyB0aGUgbG9nMiBvZiBhIG51bWJlciBvZiBuYW5vc2Vjb25kcy4gKilcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBsZXQgbnVtX2tleV9iaXRzIHQgPSB0IHw+IE51bV9rZXlfYml0cy5vZl9pbnRcblxuICBsZXQgdG9fc3BhbiB0ID1cbiAgICBpZiB0IDwgMFxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbQWxhcm1fcHJlY2lzaW9uLnRvX3NwYW5dIG9mIG5lZ2F0aXZlIHBvd2VyIG9mIHR3byBuYW5vc2Vjb25kc1wiIH5fOih0IDogaW50KV07XG4gICAgSW50NjMuKHNoaWZ0X2xlZnQgb25lKSB0IHw+IFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCB8PiB0b19zcGFuIDogVGltZV9ucy5TcGFuLnQpXVxuICBsZXQgb25lX25hbm9zZWNvbmQgPSAwXG4gIGxldCBhYm91dF9vbmVfbWljcm9zZWNvbmQgPSAxMFxuICBsZXQgYWJvdXRfb25lX21pbGxpc2Vjb25kID0gMjBcbiAgbGV0IGFib3V0X29uZV9zZWNvbmQgPSAzMFxuICBsZXQgYWJvdXRfb25lX2RheSA9IDQ2XG4gIGxldCBtdWwgdCB+cG93MiA9IHQgKyBwb3cyXG4gIGxldCBkaXYgdCB+cG93MiA9IHQgLSBwb3cyXG4gIGxldCBpbnRlcnZhbF9udW0gdCB0aW1lID0gSW50NjMuc2hpZnRfcmlnaHQgKHRpbWUgfD4gVGltZV9ucy50b19pbnQ2M19uc19zaW5jZV9lcG9jaCkgdFxuXG4gIGxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICAgIEludDYzLnNoaWZ0X2xlZnQgaW50ZXJ2YWxfbnVtIHQgfD4gVGltZV9ucy5vZl9pbnQ2M19uc19zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBvZl9zcGFuX2Zsb29yX3BvdzJfbnMgc3BhbiA9XG4gICAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltBbGFybV9wcmVjaXNpb24ub2Zfc3Bhbl9mbG9vcl9wb3cyX25zXSBnb3Qgbm9uLXBvc2l0aXZlIHNwYW5cIlxuICAgICAgICAgICAgKHNwYW4gOiBUaW1lX25zLlNwYW4udCldO1xuICAgIHNwYW4gfD4gVGltZV9ucy5TcGFuLnRvX2ludDYzX25zIHw+IEludDYzLmZsb29yX2xvZzJcbiAgOztcblxuICBsZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuXG4gIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zcGFuXG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3NwYW5cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoVGltZV9ucy5TcGFuKSAoVClcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlIChUaW1lX25zLlNwYW4pIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBsZXZlbF9iaXRzX2RlZmF1bHQgPSBMZXZlbF9iaXRzLmRlZmF1bHRcblxuICB0eXBlIHQgPVxuICAgIHsgYWxhcm1fcHJlY2lzaW9uIDogQWxhcm1fcHJlY2lzaW9uLlVuc3RhYmxlLnRcbiAgICA7IGxldmVsX2JpdHMgOiBMZXZlbF9iaXRzLnQgW0BkZWZhdWx0IGxldmVsX2JpdHNfZGVmYXVsdF1cbiAgICA7IGNhcGFjaXR5IDogaW50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBhbGFybV9wcmVjaXNpb24gdCA9IEFsYXJtX3ByZWNpc2lvbi50b19zcGFuIHQuYWxhcm1fcHJlY2lzaW9uXG5cbiAgKCogW21heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb25dIHJldHVybnMgdGhlIG51bWJlciBvZiBsZXZlbCBiaXRzIG5lZWRlZCBmb3IgYVxuICAgICB0aW1pbmcgd2hlZWwgd2l0aCB0aGUgc3BlY2lmaWVkIFthbGFybV9wcmVjaXNpb25dIHRvIGJlIGFibGUgdG8gcmVwcmVzZW50IGFsbFxuICAgICBwb3NzaWJsZSB0aW1lcyBmcm9tIFtUaW1lX25zLmVwb2NoXSBvbndhcmQuICBTaW5jZSBub24tbmVnYXRpdmUgdGltZXMgaGF2ZSA2MiBiaXRzLFxuICAgICB3ZSByZXF1aXJlIFtMIDw9IDYyIC0gQV0sIHdoZXJlIFtBXSBpcyB0aGUgbnVtYmVyIG9mIGFsYXJtIGJpdHMgYW5kIFtMXSBpcyB0aGVcbiAgICAgbnVtYmVyIG9mIGxldmVsIGJpdHMuICopXG4gIGxldCBtYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uID1cbiAgICBOdW1fa2V5X2JpdHMuKCAtIClcbiAgICAgIE51bV9rZXlfYml0cy5tYXhfdmFsdWVcbiAgICAgIChBbGFybV9wcmVjaXNpb24ubnVtX2tleV9iaXRzIGFsYXJtX3ByZWNpc2lvbilcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgTnVtX2tleV9iaXRzLiggPD0gKVxuICAgICAgICAgIChMZXZlbF9iaXRzLm51bV9iaXRzX2ludGVybmFsIHQubGV2ZWxfYml0cylcbiAgICAgICAgICAobWF4X251bV9sZXZlbF9iaXRzIHQuYWxhcm1fcHJlY2lzaW9uKSk7XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5hbGFybV9wcmVjaXNpb246aWdub3JlXG4gICAgICAgIH5jYXBhY2l0eTppZ25vcmVcbiAgICAgICAgfmxldmVsX2JpdHM6KGNoZWNrIExldmVsX2JpdHMuaW52YXJpYW50KSlcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/KGxldmVsX2JpdHMgPSBsZXZlbF9iaXRzX2RlZmF1bHQpIH5hbGFybV9wcmVjaXNpb24gKCkgPVxuICAgIGxldCBsZXZlbF9iaXRzID1cbiAgICAgIExldmVsX2JpdHMudHJpbSBsZXZlbF9iaXRzIH5tYXhfbnVtX2JpdHM6KG1heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb24pXG4gICAgaW5cbiAgICB7IGFsYXJtX3ByZWNpc2lvbjsgbGV2ZWxfYml0czsgY2FwYWNpdHkgfVxuICA7O1xuXG4gIGxldCBtaWNyb3NlY29uZF9wcmVjaXNpb24gKCkgPVxuICAgIGNyZWF0ZVxuICAgICAgKClcbiAgICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWNyb3NlY29uZFxuICAgICAgfmxldmVsX2JpdHM6KExldmVsX2JpdHMuY3JlYXRlX2V4biBbIDEwOyAxMDsgNjsgNjsgNSBdKVxuICA7O1xuXG4gIGxldCBkdXJhdGlvbnMgdCA9XG4gICAgTGlzdC5mb2xkaW5nX21hcFxuICAgICAgdC5sZXZlbF9iaXRzXG4gICAgICB+aW5pdDooQWxhcm1fcHJlY2lzaW9uLm51bV9rZXlfYml0cyB0LmFsYXJtX3ByZWNpc2lvbiB8PiBOdW1fa2V5X2JpdHMudG9faW50KVxuICAgICAgfmY6KGZ1biBudW1fYml0c19hY2N1bSBsZXZlbF9udW1fYml0cyAtPlxuICAgICAgICBsZXQgbnVtX2JpdHNfYWNjdW0gPSBudW1fYml0c19hY2N1bSArIChsZXZlbF9udW1fYml0cyB8PiBOdW1fa2V5X2JpdHMudG9faW50KSBpblxuICAgICAgICBsZXQgZHVyYXRpb24gPVxuICAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgICAgICAgKGlmIG51bV9iaXRzX2FjY3VtID0gSW50NjMubnVtX2JpdHMgLSAxXG4gICAgICAgICAgICAgdGhlbiBJbnQ2My5tYXhfdmFsdWVcbiAgICAgICAgICAgICBlbHNlIEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzX2FjY3VtKVxuICAgICAgICBpblxuICAgICAgICBudW1fYml0c19hY2N1bSwgZHVyYXRpb24pXG4gIDs7XG5lbmRcblxuXG4oKiogVGltaW5nIHdoZWVsIGlzIGltcGxlbWVudGVkIGFzIGEgcHJpb3JpdHkgcXVldWUgaW4gd2hpY2ggdGhlIGtleXMgYXJlXG4gICAgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVydmFscyBvZiB0aW1lLiAgVGhlIHByaW9yaXR5IHF1ZXVlIGlzXG4gICAgdW5saWtlIGEgdHlwaWNhbCBwcmlvcml0eSBxdWV1ZSBpbiB0aGF0IHJhdGhlciB0aGFuIGhhdmluZyBhIFwiZGVsZXRlIG1pblwiIG9wZXJhdGlvbixcbiAgICBpdCBoYXMgYSBub25kZWNyZWFzaW5nIG1pbmltdW0gYWxsb3dlZCBrZXksIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHRpbWUsXG4gICAgYW5kIGFuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIG9wZXJhdGlvbiwgd2hpY2ggaW1wbGVtZW50cyBbYWR2YW5jZV9jbG9ja10uXG4gICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gYXMgYSBzaWRlIGVmZmVjdCByZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSB0aW1pbmdcbiAgICB3aGVlbCB3aG9zZSBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBuZXcgbWluaW11bSwgd2hpY2ggaW1wbGVtZW50cyBmaXJpbmcgdGhlIGFsYXJtc1xuICAgIHdob3NlIHRpbWUgaGFzIGV4cGlyZWQuXG5cbiAgICBBZGRpbmcgZWxlbWVudHMgdG8gYW5kIHJlbW92aW5nIGVsZW1lbnRzIGZyb20gYSB0aW1pbmcgd2hlZWwgdGFrZXMgY29uc3RhbnQgdGltZSxcbiAgICB1bmxpa2UgYSBoZWFwLWJhc2VkIHByaW9yaXR5IHF1ZXVlIHdoaWNoIHRha2VzIGxvZyhOKSwgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mXG4gICAgZWxlbWVudHMgaW4gdGhlIGhlYXAuICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byB0aGVcbiAgICBhbW91bnQgb2YgaW5jcmVhc2UgaW4gdGhlIG1pbi1hbGxvd2VkIGtleSwgYXMgY29tcGFyZWQgdG8gbG9nKE4pIGZvciBhIGhlYXAuICBJdCBpc1xuICAgIHRoZXNlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2VzIHRoYXQgbW90aXZhdGUgdGhlIGV4aXN0ZW5jZSBvZiB0aW1pbmcgd2hlZWxzIGFuZCBtYWtlXG4gICAgdGhlbSBhIGdvb2QgY2hvaWNlIGZvciBtYWludGFpbmcgYSBzZXQgb2YgYWxhcm1zLiAgV2l0aCBhIHRpbWluZyB3aGVlbCwgb25lIGNhblxuICAgIHN1cHBvcnQgYW55IG51bWJlciBvZiBhbGFybXMgcGF5aW5nIGNvbnN0YW50IG92ZXJoZWFkIHBlciBhbGFybSwgd2hpbGUgcGF5aW5nIGFcbiAgICBzbWFsbCBjb25zdGFudCBvdmVyaGVhZCBwZXIgdW5pdCBvZiB0aW1lIHBhc3NlZC5cblxuICAgIEFzIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGluY3JlYXNlcywgdGhlIHRpbWluZyB3aGVlbCBkb2VzIGEgbGF6eSByYWRpeCBzb3J0IG9mIHRoZVxuICAgIGVsZW1lbnQga2V5cywgd2l0aCBsZXZlbCAwIGhhbmRsaW5nIHRoZSBsZWFzdCBzaWduaWZpY2FudCBbYl8wXSBiaXRzIGluIGEga2V5LCBhbmRcbiAgICBlYWNoIHN1YnNlcXVlbnQgbGV2ZWwgW2ldIGhhbmRsaW5nIHRoZSBuZXh0IG1vc3Qgc2lnbmlmaWNhbnQgW2JfaV0gYml0cy4gIFRoZSBsZXZlbHNcbiAgICBob2xkIGluY3JlYXNpbmdseSBsYXJnZXIgcmFuZ2VzIG9mIGtleXMsIHdoZXJlIHRoZSB1bmlvbiBvZiBhbGwgdGhlIGxldmVscyBjYW4gaG9sZFxuICAgIGFueSBrZXkgZnJvbSBbbWluX2FsbG93ZWRfa2V5IHRdIHRvIFttYXhfYWxsb3dlZF9rZXkgdF0uICBXaGVuIGEga2V5IGlzIGFkZGVkIHRvIHRoZVxuICAgIHRpbWluZyB3aGVlbCwgaXQgaXMgYWRkZWQgYXQgdGhlIGxvd2VzdCBwb3NzaWJsZSBsZXZlbCB0aGF0IGNhbiBzdG9yZSB0aGUga2V5LiAgQXNcbiAgICB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBpbmNyZWFzZXMsIHRpbWluZy13aGVlbCBlbGVtZW50cyBtb3ZlIGRvd24gbGV2ZWxzIHVudGlsIHRoZXlcbiAgICByZWFjaCBsZXZlbCAwLCBhbmQgdGhlbiBhcmUgZXZlbnR1YWxseSByZW1vdmVkLiAgKilcbm1vZHVsZSBQcmlvcml0eV9xdWV1ZSA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgS2V5IDogSW50ZXJ2YWxfbnVtXG5cbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgICgqKiBBbiBbRWx0LnRdIHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IHdhcyBhZGRlZCB0byBhIHRpbWluZyB3aGVlbC4gKilcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBhdCA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gVGltZV9ucy50XG4gICAgdmFsIGtleSA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgdmFsdWUgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIG51bGwgOiB1bml0IC0+ICdhIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEludGVybmFsX2VsdCA6IHNpZ1xuICAgIG1vZHVsZSBQb29sIDogc2lnXG4gICAgICB0eXBlICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGtleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIG1heF9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRWx0LnRcbiAgZW5kXG5cbiAgdmFsIHBvb2wgOiAnYSB0IC0+ICdhIEludGVybmFsX2VsdC5Qb29sLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgKCoqIFtjcmVhdGUgP2xldmVsX2JpdHMgKCldIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdGltaW5nIHdoZWVsLCBbdF0sIHdpdGggW2xlbmd0aCB0ID0gMF1cbiAgICAgIGFuZCBbbWluX2FsbG93ZWRfa2V5IHQgPSAwXS4gKilcbiAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gP2xldmVsX2JpdHM6TGV2ZWxfYml0cy50IC0+IHVuaXQgLT4gJ2EgdFxuXG4gICgqKiBbbGVuZ3RoIHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdGltaW5nIHdoZWVsLiAqKVxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuXG4gICgqKiBbbWluX2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtaW5pbXVtIGtleSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gW3RdLiAgVGhpcyBvbmx5XG4gICAgICBpbmRpY2F0ZXMgdGhlIHBvc3NpYmlsaXR5OyB0aGVyZSBuZWVkIG5vdCBiZSBhbiBlbGVtZW50IFtlbHRdIGluIFt0XSB3aXRoIFtFbHQua2V5XG4gICAgICBlbHQgPSBtaW5fYWxsb3dlZF9rZXkgdF0uICBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgXCJtaW5fa2V5XCIgb3BlcmF0aW9uIGluIGFcbiAgICAgIHR5cGljYWwgcHJpb3JpdHkgcXVldWUuXG5cbiAgICAgIFttaW5fYWxsb3dlZF9rZXkgdF0gY2FuIGluY3JlYXNlIG92ZXIgdGltZSwgdmlhIGNhbGxzIHRvXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XS4gKilcbiAgdmFsIG1pbl9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gICgqKiBbbWF4X2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQga2V5IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBbdF0uICBBc1xuICAgICAgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLCBzbyBkb2VzIFttYXhfYWxsb3dlZF9rZXldOyBob3dldmVyIGl0IGlzIG5vdCB0aGUgY2FzZVxuICAgICAgdGhhdCBbbWF4X2FsbG93ZWRfa2V5IHQgLSBtaW5fYWxsb3dlZF9rZXkgdF0gaXMgYSBjb25zdGFudC4gIEl0IGlzIGd1YXJhbnRlZWQgdGhhdFxuICAgICAgW21heF9hbGxvd2VkX2tleSB0ID49IG1pbl9hbGxvd2VkX2tleSB0ICsgMl5CIC0gMV0sXG4gICAgICB3aGVyZSBbQl0gaXMgdGhlIHN1bSBvZiB0aGUgYl9pIGluIFtsZXZlbF9iaXRzXS4gKilcbiAgdmFsIG1heF9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gIHZhbCBtaW5fZWx0XyA6ICdhIHQgLT4gJ2EgSW50ZXJuYWxfZWx0LnRcbiAgdmFsIGludGVybmFsX2FkZCA6ICdhIHQgLT4ga2V5OktleS50IC0+IGF0OlRpbWVfbnMudCAtPiAnYSAtPiAnYSBJbnRlcm5hbF9lbHQudFxuXG4gICgqKiBbcmVtb3ZlIHQgZWx0XSByZW1vdmVzIFtlbHRdIGZyb20gW3RdLiAgSXQgaXMgYW4gZXJyb3IgaWYgW2VsdF0gaXMgbm90IGN1cnJlbnRseVxuICAgICAgaW4gW3RdLCBhbmQgdGhpcyBlcnJvciBtYXkgb3IgbWF5IG5vdCBiZSBkZXRlY3RlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuXG4gIHZhbCBjaGFuZ2UgOiAnYSB0IC0+ICdhIEVsdC50IC0+IGtleTpLZXkudCAtPiBhdDpUaW1lX25zLnQgLT4gdW5pdFxuXG4gICgqKiBbY2xlYXIgdF0gcmVtb3ZlcyBhbGwgZWx0cyBmcm9tIFt0XS4gKilcbiAgdmFsIGNsZWFyIDogXyB0IC0+IHVuaXRcblxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSBFbHQudCAtPiBib29sXG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgKCoqIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXkgdCB+a2V5IH5oYW5kbGVfcmVtb3ZlZF0gaW5jcmVhc2VzIHRoZSBtaW5pbXVtIGFsbG93ZWRcbiAgICAgIGtleSBpbiBbdF0gdG8gW2tleV0sIGFuZCByZW1vdmVzIGFsbCBlbGVtZW50cyB3aXRoIGtleXMgbGVzcyB0aGFuIFtrZXldLCBhcHBseWluZ1xuICAgICAgW2hhbmRsZV9yZW1vdmVkXSB0byBlYWNoIGVsZW1lbnQgdGhhdCBpcyByZW1vdmVkLiAgSWYgW2tleSA8PSBtaW5fYWxsb3dlZF9rZXkgdF0sXG4gICAgICB0aGVuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGRvZXMgbm90aGluZy4gIE90aGVyd2lzZSwgaWZcbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCBbbWluX2FsbG93ZWRfa2V5IHQgPSBrZXldLlxuXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byBba2V5IC0gbWluX2FsbG93ZWRfa2V5IHRdLFxuICAgICAgYWx0aG91Z2ggcG9zc2libHkgbGVzcyB0aW1lLlxuXG4gICAgICBCZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbaGFuZGxlX3JlbW92ZWRdIGFjY2Vzc2VzIFt0XSBpbiBhbnkgd2F5IG90aGVyIHRoYW5cbiAgICAgIFtFbHRdIGZ1bmN0aW9ucy4gKilcbiAgdmFsIGluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgIDogICdhIHRcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBoYW5kbGVfcmVtb3ZlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0LnRcblxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgRWx0LnQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBmaXJlX3Bhc3RfYWxhcm1zXG4gICAgOiAgJ2EgdFxuICAgIC0+IGhhbmRsZV9maXJlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBub3c6VGltZV9ucy50XG4gICAgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gICgqKiBFYWNoIHNsb3QgaW4gYSBsZXZlbCBpcyBhIChwb3NzaWJseSBudWxsKSBwb2ludGVyIHRvIGEgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICBvZiBlbGVtZW50cy4gIFdlIHBvb2wgdGhlIGVsZW1lbnRzIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZW0gYWZ0ZXIgdGhleSBhcmUgcmVtb3ZlZFxuICAgICAgZnJvbSB0aGUgdGltaW5nIHdoZWVsIChlaXRoZXIgdmlhIFtyZW1vdmVdIG9yIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldKS4gIEluXG4gICAgICBhZGRpdGlvbiB0byBzdG9yaW5nIHRoZSBba2V5XSwgW2F0XSwgYW5kIFt2YWx1ZV0gaW4gdGhlIGVsZW1lbnQsIHdlIHN0b3JlIHRoZVxuICAgICAgW2xldmVsX2luZGV4XSBzbyB0aGF0IHdlIGNhbiBxdWlja2x5IGdldCB0byB0aGUgbGV2ZWwgaG9sZGluZyBhbiBlbGVtZW50IHdoZW4gd2VcbiAgICAgIFtyZW1vdmVdIGl0LlxuXG4gICAgICBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIFtFeHRlcm5hbF9lbHRdIGFuZCBbSW50ZXJuYWxfZWx0XSwgd2hpY2ggYXJlIHRoZSBzYW1lXG4gICAgICB1bmRlcm5lYXRoLiAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFuIFtJbnRlcm5hbF9lbHRdIGlzIGVpdGhlciBbbnVsbF0gb3IgYVxuICAgICAgdmFsaWQgcG9pbnRlci4gIE9uIHRoZSBvdGhlciBoYW5kLCBbRXh0ZXJuYWxfZWx0XXMgYXJlIHJldHVybmVkIHRvIHVzZXIgY29kZSwgc29cbiAgICAgIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvZiB2YWxpZGl0eSAtLSB3ZSBhbHdheXMgdmFsaWRhdGUgYW4gW0V4dGVybmFsX2VsdF0gYmVmb3JlXG4gICAgICBkb2luZyBhbnl0aGluZyB3aXRoIGl0LlxuXG4gICAgICBJdCBpcyB0aGVyZWZvcmUgT0sgdG8gdXNlIFtQb29sLlVuc2FmZV0sIGJlY2F1c2Ugd2Ugd2lsbCBuZXZlciBhdHRlbXB0IHRvIGFjY2VzcyBhXG4gICAgICBzbG90IG9mIGFuIGludmFsaWQgcG9pbnRlci4gKilcbiAgbW9kdWxlIFBvb2wgPSBQb29sLlVuc2FmZVxuXG4gIG1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICgqKiBbSW50ZXJ2YWxfbnVtXSBpcyB0aGUgcHVibGljIEFQSS4gIEV2ZXJ5dGhpbmcgZm9sbG93aW5nIGluIHRoZSBzaWduYXR1cmUgaXNcbiAgICAgICAgZm9yIGludGVybmFsIHVzZS4gKilcbiAgICBpbmNsdWRlIFRpbWluZ193aGVlbF9pbnRmLkludGVydmFsX251bVxuXG4gICAgKCoqIFthZGRfY2xhbXBfdG9fbWF4XSBkb2Vzbid0IHdvcmsgYXQgYWxsIHdpdGggbmVnYXRpdmUgc3BhbnMgKilcbiAgICB2YWwgYWRkX2NsYW1wX3RvX21heCA6IHQgLT4gU3Bhbi50IC0+IHRcblxuICAgIHZhbCBzdWNjX2NsYW1wX3RvX21heCA6IHQgLT4gdFxuXG4gICAgKCoqIFtTbG90c19tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGEga2V5J3Mgc2xvdCBpbiBhIGdpdmVuIGxldmVsLiAqKVxuICAgIG1vZHVsZSBTbG90c19tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgdmFsIGNyZWF0ZSA6IGxldmVsX2JpdHM6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgICAgdmFsIG5leHRfc2xvdCA6IHQgLT4gaW50IC0+IGludFxuICAgIGVuZFxuXG4gICAgKCoqIFtNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBtaW5pbXVtIGtleSBpbiB0aGVcbiAgICAgICAgc2FtZSBzbG90IGFzIGEgZ2l2ZW4ga2V5LiAqKVxuICAgIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgaW5jbHVkZSBFcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGNyZWF0ZSA6IGJpdHNfcGVyX3Nsb3Q6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgIGVuZFxuXG4gICAgdmFsIG51bV9rZXlzIDogTnVtX2tleV9iaXRzLnQgLT4gU3Bhbi50XG4gICAgdmFsIG1pbl9rZXlfaW5fc2FtZV9zbG90IDogdCAtPiBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLnQgLT4gdFxuICAgIHZhbCBzbG90IDogdCAtPiBiaXRzX3Blcl9zbG90Ok51bV9rZXlfYml0cy50IC0+IHNsb3RzX21hc2s6U2xvdHNfbWFzay50IC0+IGludFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2xvdHNfbWFzayA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZXZlbF9iaXRzID0gSW50NjMuKCAtICkgKE51bV9rZXlfYml0cy5wb3cyIGxldmVsX2JpdHMpIEludDYzLm9uZVxuICAgICAgbGV0IG5leHRfc2xvdCB0IHNsb3QgPSAoc2xvdCArIDEpIGxhbmQgSW50NjMudG9faW50X2V4biB0XG4gICAgZW5kXG5cbiAgICBsZXQgbnVtX2tleXMgbnVtX2JpdHMgPSBOdW1fa2V5X2JpdHMucG93MiBudW1fYml0c1xuXG4gICAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IGNyZWF0ZSB+Yml0c19wZXJfc2xvdCA9IGJpdF9ub3QgKE51bV9rZXlfYml0cy5wb3cyIGJpdHNfcGVyX3Nsb3QgLSBvbmUpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgICAgbGV0IHNjYWxlX2ludCB0IGkgPSB0ICogb2ZfaW50IGlcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgIGxldCBhZGQgdCBpID0gdCArIGlcbiAgICBsZXQgYWRkX2NsYW1wX3RvX21heCB0IGkgPSBpZiB0ID4gbWF4X3ZhbHVlIC0gaSB0aGVuIG1heF92YWx1ZSBlbHNlIHQgKyBpXG4gICAgbGV0IHN1Y2NfY2xhbXBfdG9fbWF4IHQgPSBpZiB0ID0gbWF4X3ZhbHVlIHRoZW4gbWF4X3ZhbHVlIGVsc2Ugc3VjYyB0XG4gICAgbGV0IHN1YiB0IGkgPSB0IC0gaVxuICAgIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuXG4gICAgbGV0IHNsb3QgdCB+KGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudCkgfnNsb3RzX21hc2sgPVxuICAgICAgdG9faW50X2V4biAoYml0X2FuZCAoc2hpZnRfcmlnaHQgdCAoYml0c19wZXJfc2xvdCA6PiBpbnQpKSBzbG90c19tYXNrKVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID1cbiAgICAgIGJpdF9hbmQgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBLZXkuTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICBtb2R1bGUgU2xvdHNfbWFzayA9IEtleS5TbG90c19tYXNrXG5cbiAgbW9kdWxlIEV4dGVybmFsX2VsdCA9IHN0cnVjdFxuXG4gICAgKCoqIFRoZSBbcG9vbF9zbG90c10gaGVyZSBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBzbG90cyBpbiBhIGxldmVsIGFycmF5LiAgVGhpcyBpc1xuICAgICAgICBmb3IgdGhlIHNsb3RzIGluIHRoZSBwb29sIHR1cGxlIHJlcHJlc2VudGluZyBhIGxldmVsIGVsZW1lbnQuICopXG4gICAgdHlwZSAnYSBwb29sX3Nsb3RzID1cbiAgICAgICggS2V5LnRcbiAgICAgICwgVGltZV9ucy50XG4gICAgICAsICdhXG4gICAgICAsIGludFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudCApXG4gICAgICAgIFBvb2wuU2xvdHMudDZcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgcG9vbF9zbG90cyBQb2ludGVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gIGVuZFxuXG4gIG1vZHVsZSBJbnRlcm5hbF9lbHQgOiBzaWdcbiAgICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgICAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gdW5pdCAtPiBfIHRcbiAgICAgIHZhbCBpc19mdWxsIDogXyB0IC0+IGJvb2xcbiAgICAgIHZhbCBncm93IDogP2NhcGFjaXR5OmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHByaXZhdGUgJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdW5pdCAtPiBfIHRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG4gICAgdmFsIGlzX3ZhbGlkIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCoqIERlYWxpbmcgd2l0aCBbRXh0ZXJuYWxfZWx0XXMuICopXG5cbiAgICB2YWwgZXh0ZXJuYWxfaXNfdmFsaWQgOiAnYSBQb29sLnQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnRcbiAgICB2YWwgb2ZfZXh0ZXJuYWxfZXhuIDogJ2EgUG9vbC50IC0+ICdhIEV4dGVybmFsX2VsdC50IC0+ICdhIHRcbiAgICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBQb29sLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFtjcmVhdGVdIHJldHVybnMgYW4gZWxlbWVudCB3aG9zZSBbbmV4dF0gYW5kIFtwcmV2XSBhcmUgW251bGxdLiAqKVxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogICdhIFBvb2wudFxuICAgICAgLT4ga2V5OktleS50XG4gICAgICAoKiogW2F0XSBpcyB1c2VkIHdoZW4gdGhlIHByaW9yaXR5IHF1ZXVlIGlzIHVzZWQgdG8gaW1wbGVtZW50IGEgdGltaW5nIHdoZWVsLiAgSWZcbiAgICAgICAgICB1bnVzZWQsIGl0IHdpbGwgYmUgW1RpbWVfbnMuZXBvY2hdLiAqKVxuICAgICAgLT4gYXQ6VGltZV9ucy50XG4gICAgICAtPiB2YWx1ZTonYVxuICAgICAgLT4gbGV2ZWxfaW5kZXg6aW50XG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZnJlZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBhY2Nlc3NvcnMgKilcblxuICAgIHZhbCBrZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCBhdCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IFRpbWVfbnMudFxuICAgIHZhbCBsZXZlbF9pbmRleCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBuZXh0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB2YWx1ZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+ICdhXG5cbiAgICAoKiogbXV0YXRvcnMgKilcblxuICAgIHZhbCBzZXRfa2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfYXQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBUaW1lX25zLnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfbGV2ZWxfaW5kZXggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnQgLT4gdW5pdFxuXG4gICAgKCoqIFtpbnNlcnRfYXRfZW5kIHBvb2wgdCB+dG9fYWRkXSB0cmVhdHMgW3RdIGFzIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGFuZCBhZGRzIFt0b19hZGRdXG4gICAgICAgIHRvIHRoZSBlbmQgb2YgaXQuICopXG4gICAgdmFsIGluc2VydF9hdF9lbmQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB0b19hZGQ6J2EgdCAtPiB1bml0XG5cbiAgICAoKiogW2xpbmtfdG9fc2VsZiBwb29sIHRdIG1ha2VzIFt0XSBiZSBhIHNpbmdsZXRvbiBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3QuICopXG4gICAgdmFsIGxpbmtfdG9fc2VsZiA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBbdW5saW5rIHAgdF0gdW5saW5rcyBbdF0gZnJvbSB0aGUgY2lyY3VsYXJseSBkb3VibHktbGlua2VkIGxpc3QgdGhhdCBpdCBpcyBpbi4gIEl0XG4gICAgICAgIGNoYW5nZXMgdGhlIHBvaW50ZXJzIG9mIFt0XSdzIFtwcmV2XSBhbmQgW25leHRdIGVsdHMsIGJ1dCBub3QgW3RdJ3MgW3ByZXZdIGFuZFxuICAgICAgICBbbmV4dF0gcG9pbnRlcnMuICBbdW5saW5rXSBpcyBtZWFuaW5nbGVzcyBpZiBbdF0gaXMgYSBzaW5nbGV0b24uICopXG4gICAgdmFsIHVubGluayA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBJdGVyYXRvcnMuICBbaXRlciBwIHQgfmluaXQgfmZdIHZpc2l0cyBlYWNoIGVsZW1lbnQgaW4gdGhlIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgICBjb250YWluaW5nIFt0XSwgc3RhcnRpbmcgYXQgW3RdLCBhbmQgZm9sbG93aW5nIFtuZXh0XSBwb2ludGVycy4gIFtsZW5ndGhdIGNvdW50c1xuICAgICAgICBieSB2aXNpdGluZyBlYWNoIGVsZW1lbnQgaW4gdGhlIGxpc3QuICopXG4gICAgdmFsIGl0ZXIgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBmOignYSB0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBsZW5ndGggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnRcblxuICAgICgqKiBbbWF4X2FsYXJtX3RpbWUgdCBlbHQgfndpdGhfa2V5XSBmaW5kcyB0aGUgbWF4IFthdF0gaW4gW2VsdF0ncyBsaXN0IGFtb25nIHRoZSBlbHRzXG4gICAgICAgIHdob3NlIGtleSBpcyBbd2l0aF9rZXldLCByZXR1cm5pbmcgW1RpbWVfbnMuZXBvY2hdIGlmIHRoZSBsaXN0IGlzIGVtcHR5LiAqKVxuICAgIHZhbCBtYXhfYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuXG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgcG9vbF9zbG90cyA9ICdhIEV4dGVybmFsX2VsdC5wb29sX3Nsb3RzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gICAgbGV0IGlzX251bGwgPSBQb2ludGVyLmlzX251bGxcbiAgICBsZXQgZXF1YWwgdDEgdDIgPSBQb2ludGVyLnBoeXNfZXF1YWwgdDEgdDJcblxuICAgIGxldCBjcmVhdGUgcG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4ID1cbiAgICAgIFBvb2wubmV3NiBwb29sIGtleSBhdCB2YWx1ZSBsZXZlbF9pbmRleCAobnVsbCAoKSkgKG51bGwgKCkpXG4gICAgOztcblxuICAgIGxldCBmcmVlID0gUG9vbC5mcmVlXG4gICAgbGV0IGtleSBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQwXG4gICAgbGV0IHNldF9rZXkgcCB0IGsgPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQwIGtcbiAgICBsZXQgYXQgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MVxuICAgIGxldCBzZXRfYXQgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQxIHhcbiAgICBsZXQgdmFsdWUgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MlxuICAgIGxldCBsZXZlbF9pbmRleCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQzXG4gICAgbGV0IHNldF9sZXZlbF9pbmRleCBwIHQgaSA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDMgaVxuICAgIGxldCBwcmV2IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDRcbiAgICBsZXQgc2V0X3ByZXYgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQ0IHhcbiAgICBsZXQgbmV4dCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQ1XG4gICAgbGV0IHNldF9uZXh0IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50NSB4XG4gICAgbGV0IGlzX3ZhbGlkIHAgdCA9IFBvb2wucG9pbnRlcl9pc192YWxpZCBwIHRcbiAgICBsZXQgZXh0ZXJuYWxfaXNfdmFsaWQgPSBpc192YWxpZFxuXG4gICAgbGV0IGludmFyaWFudCBwb29sIGludmFyaWFudF9hIHQgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgICAgYXNzZXJ0IChpc192YWxpZCBwb29sIHQpO1xuICAgICAgICBpbnZhcmlhbnRfYSAodmFsdWUgcG9vbCB0KTtcbiAgICAgICAgbGV0IG4gPSBuZXh0IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgbiB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAocHJldiBwb29sIG4pKTtcbiAgICAgICAgbGV0IHAgPSBwcmV2IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgcCB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAobmV4dCBwb29sIHApKSlcbiAgICA7O1xuXG4gICAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHBvb2xfc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPSBQb29sLmludmFyaWFudCBpZ25vcmUgdFxuICAgICAgbGV0IGNyZWF0ZSA/KGNhcGFjaXR5ID0gMSkgKCkgPSBQb29sLmNyZWF0ZSBQb29sLlNsb3RzLnQ2IH5jYXBhY2l0eVxuICAgICAgbGV0IGdyb3cgPSBQb29sLmdyb3dcbiAgICAgIGxldCBpc19mdWxsID0gUG9vbC5pc19mdWxsXG4gICAgZW5kXG5cbiAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IHRcblxuICAgIGxldCBvZl9leHRlcm5hbF9leG4gcG9vbCB0ID1cbiAgICAgIGlmIGlzX3ZhbGlkIHBvb2wgdCB0aGVuIHQgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbCBnb3QgaW52YWxpZCBhbGFybVwiXVxuICAgIDs7XG5cbiAgICBsZXQgdW5saW5rIHBvb2wgdCA9XG4gICAgICBzZXRfbmV4dCBwb29sIChwcmV2IHBvb2wgdCkgKG5leHQgcG9vbCB0KTtcbiAgICAgIHNldF9wcmV2IHBvb2wgKG5leHQgcG9vbCB0KSAocHJldiBwb29sIHQpXG4gICAgOztcblxuICAgIGxldCBsaW5rIHBvb2wgcHJldiBuZXh0ID1cbiAgICAgIHNldF9uZXh0IHBvb2wgcHJldiBuZXh0O1xuICAgICAgc2V0X3ByZXYgcG9vbCBuZXh0IHByZXZcbiAgICA7O1xuXG4gICAgbGV0IGxpbmtfdG9fc2VsZiBwb29sIHQgPSBsaW5rIHBvb2wgdCB0XG5cbiAgICBsZXQgaW5zZXJ0X2F0X2VuZCBwb29sIHQgfnRvX2FkZCA9XG4gICAgICBsZXQgcHJldiA9IHByZXYgcG9vbCB0IGluXG4gICAgICBsaW5rIHBvb2wgcHJldiB0b19hZGQ7XG4gICAgICBsaW5rIHBvb2wgdG9fYWRkIHRcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgcG9vbCBmaXJzdCB+ZiA9XG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAoKiBXZSBnZXQgW25leHRdIGJlZm9yZSBjYWxsaW5nIFtmXSBzbyB0aGF0IFtmXSBjYW4gbW9kaWZ5IG9yIFtmcmVlXSBbIWN1cnJlbnRdLiAqKVxuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBmICFjdXJyZW50O1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoIHBvb2wgZmlyc3QgPVxuICAgICAgbGV0IHIgPSByZWYgMCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgaW5jciByO1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFyXG4gICAgOztcblxuICAgIGxldCBtYXhfYWxhcm1fdGltZSBwb29sIGZpcnN0IH53aXRoX2tleSA9XG4gICAgICBsZXQgbWF4X2FsYXJtX3RpbWUgPSByZWYgVGltZV9ucy5lcG9jaCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgaWYgS2V5LmVxdWFsIChrZXkgcG9vbCAhY3VycmVudCkgd2l0aF9rZXlcbiAgICAgICAgdGhlbiBtYXhfYWxhcm1fdGltZSA6PSBUaW1lX25zLm1heCAoYXQgcG9vbCAhY3VycmVudCkgIW1heF9hbGFybV90aW1lO1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFtYXhfYWxhcm1fdGltZVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2FsYXJtX3RpbWUgcG9vbCBmaXJzdCB+d2l0aF9rZXkgPVxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gcmVmIFRpbWVfbnMubWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgICgqIFRoZSBba2V5XSBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeSBmb3IgW21heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF0gYmVjYXVzZVxuICAgICAgICAgICBtYXggdGltZSBwZXIgaW50ZXJ2YWwgaXMgbm90IHRoZSBzYW1lIGFzIG1heCB0aW1lIGdsb2JhbGx5LlxuXG4gICAgICAgICAgIFRoaXMgaXMgbm90IHNvIGZvciBbbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsXSwgc28gdGhpcyBjYW4gcG90ZW50aWFsbHlcbiAgICAgICAgICAgYmUgc2ltcGxpZmllZC5cblxuICAgICAgICAgICBQcm9iYWJseSBhIGJldHRlciBjaGFuZ2Ugd291bGQgYmUgdG8gc2ltcGx5IHRyYW5zZmVyIHRoZSBldmVudHMgdG8gdGhlXG4gICAgICAgICAgIFwiZmlyZWRcIiBjb2xsZWN0aW9uIChhbmQgcmVuYW1lIGl0IHRvIFwiYWJvdXQgdG8gZmlyZVwiKSwgd2hpY2ggaXMgc29ydGVkIGJ5IHRpbWUsXG4gICAgICAgICAgIHNvIGdldHRpbmcgdGhlIGZpcnN0IGVsZW1lbnQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gaXMgZWZmaWNpZW50LlxuICAgICAgICAqKVxuICAgICAgICBpZiBLZXkuZXF1YWwgKGtleSBwb29sICFjdXJyZW50KSB3aXRoX2tleVxuICAgICAgICB0aGVuIG1pbl9hbGFybV90aW1lIDo9IFRpbWVfbnMubWluIChhdCBwb29sICFjdXJyZW50KSAhbWluX2FsYXJtX3RpbWU7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIW1pbl9hbGFybV90aW1lXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIExldmVsID0gc3RydWN0XG4gICAgKCoqIEZvciBnaXZlbiBsZXZlbCwgb25lIGNhbiBicmVhayB0aGUgYml0cyBpbnRvIGEga2V5IGludG8gdGhyZWUgcmVnaW9uczpcblxuICAgICAgICB7dlxuICAgICAgICAgfCBoaWdoZXIgbGV2ZWxzIHwgdGhpcyBsZXZlbCB8IGxvd2VyIGxldmVscyB8XG4gICAgICAgIHZ9XG5cbiAgICAgICAgXCJMb3dlciBsZXZlbHNcIiBpcyBbYml0c19wZXJfc2xvdF0gYml0cyB3aWRlLiAgXCJUaGlzIGxldmVsXCIgaXMgW2JpdHNdIHdpZGUuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgKCogVGhlIFtpbmRleF0gaW4gdGhlIHRpbWluZyB3aGVlbCdzIGFycmF5IG9mIGxldmVscyB3aGVyZSB0aGlzIGxldmVsIGlzLiAqKVxuICAgICAgICBpbmRleCA6IGludFxuICAgICAgOyAoKiBIb3cgbWFueSBbYml0c10gdGhpcyBsZXZlbCBpcyByZXNwb25zaWJsZSBmb3IuICopXG4gICAgICAgIGJpdHMgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyAoKiBbc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOnQuYml0c10uICopXG4gICAgICAgIHNsb3RzX21hc2sgOiBTbG90c19tYXNrLnRcbiAgICAgIDsgKCogW2JpdHNfcGVyX3Nsb3RdIGlzIGhvdyBtYW55IGJpdHMgZWFjaCBzbG90IGRpc3Rpbmd1aXNoZXMsIGFuZCBpcyB0aGUgc3VtIG9mIG9mXG4gICAgICAgICAgIHRoZSBbYml0c10gb2YgYWxsIHRoZSBsb3dlciBsZXZlbHMuICopXG4gICAgICAgIGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyBrZXlzX3Blcl9zbG90IDogS2V5LlNwYW4udFxuICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay50XG4gICAgICA7ICgqIFtkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgPSBrZXlzX3Blcl9zbG90ICogQXJyYXkubGVuZ3RoIHNsb3RzIC0gMV0gKilcbiAgICAgICAgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IDogS2V5LlNwYW4udFxuICAgICAgOyAoKiBbbGVuZ3RoXSBpcyB0aGUgbnVtYmVyIG9mIGVsdHMgY3VycmVudGx5IGluIHRoaXMgbGV2ZWwuICopXG4gICAgICAgIG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7ICgqIEFsbCBlbGVtZW50cyBhdCB0aGlzIGxldmVsIGhhdmUgdGhlaXIgW2tleV0gc2F0aXNmeSBbbWluX2FsbG93ZWRfa2V5IDw9IGtleSA8PVxuICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXldLiAgQWxzbywgW21pbl9hbGxvd2VkX2tleV0gaXMgYSBtdWx0aXBsZSBvZiBba2V5c19wZXJfc2xvdF0uICopXG4gICAgICAgIG11dGFibGUgbWluX2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyAoKiBbc2xvdHNdIGhvbGRzIHRoZSAocG9zc2libHkgbnVsbCkgcG9pbnRlcnMgdG8gdGhlIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdHNcbiAgICAgICAgICAgb2YgZWx0cy4gIFtBcnJheS5sZW5ndGggc2xvdHMgPSAxIGxzbCBiaXRzXS4gKilcbiAgICAgICAgc2xvdHMgOiAoJ2EgSW50ZXJuYWxfZWx0LnQgYXJyYXlbQHNleHAub3BhcXVlXSlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2xvdCB0IH5rZXkgPSBLZXkuc2xvdCBrZXkgfmJpdHNfcGVyX3Nsb3Q6dC5iaXRzX3Blcl9zbG90IH5zbG90c19tYXNrOnQuc2xvdHNfbWFza1xuICAgIGxldCBuZXh0X3Nsb3QgdCBzbG90ID0gU2xvdHNfbWFzay5uZXh0X3Nsb3QgdC5zbG90c19tYXNrIHNsb3RcblxuICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXkgPVxuICAgICAgS2V5Lm1pbl9rZXlfaW5fc2FtZV9zbG90IGtleSB0Lm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICA7O1xuXG4gICAgbGV0IGNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IHQgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5ID1cbiAgICAgICgqIFRoaXMgY29tcHV0YXRpb24gZW5zdXJlcyB0aGF0IFt0XSdzIFttaW5fYWxsb3dlZF9rZXldIGlzIGFzIGxhcmdlIGFzIHBvc3NpYmxlXG4gICAgICAgICBzdWJqZWN0IHRvIHRoZSBjb25zdHJhaW50IHRoYXQgdGhlcmUgaXMgbm8gaW50ZXItbGV2ZWwgZ2FwLiAqKVxuICAgICAgaWYgS2V5LmVxdWFsIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgIHRoZW4gS2V5Lm1heF92YWx1ZVxuICAgICAgZWxzZSBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXk6KEtleS5zdWNjIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBwb29sIDogJ2EgSW50ZXJuYWxfZWx0LlBvb2wudFxuICAgIDsgKCogW21pbl9lbHRdIGlzIGVpdGhlciBudWxsIG9yIGFuIGVsZW1lbnQgd2hvc2Uga2V5IGlzIFtlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgbWluX2VsdCA6ICdhIEludGVybmFsX2VsdC50XG4gICAgOyAoKiBBbGwgZWxlbWVudHMgaW4gdGhlIHByaW9yaXR5IHF1ZXVlIGhhdmUgdGhlaXIga2V5IFs+PSBlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgZWx0X2tleV9sb3dlcl9ib3VuZCA6IEtleS50XG4gICAgOyBsZXZlbHMgOiAnYSBMZXZlbC50IGFycmF5XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gRXh0ZXJuYWxfZWx0Lm51bGxcbiAgICBsZXQgYXQgcCB0ID0gSW50ZXJuYWxfZWx0LmF0IHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgICBsZXQga2V5IHAgdCA9IEludGVybmFsX2VsdC5rZXkgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICAgIGxldCB2YWx1ZSBwIHQgPSBJbnRlcm5hbF9lbHQudmFsdWUgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICBlbmRcblxuICBsZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG4gIGxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG4gIGxldCBudW1fbGV2ZWxzIHQgPSBBcnJheS5sZW5ndGggdC5sZXZlbHNcbiAgbGV0IG1pbl9hbGxvd2VkX2tleSB0ID0gTGV2ZWwubWluX2FsbG93ZWRfa2V5IHQubGV2ZWxzLigwKVxuICBsZXQgbWF4X2FsbG93ZWRfa2V5IHQgPSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgdC5sZXZlbHMuKG51bV9sZXZlbHMgdCAtIDEpXG5cbiAgbGV0IGludGVybmFsX2l0ZXIgdCB+ZiA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpIHRoZW4gSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmZcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcblxuICBsZXQgaXRlciB0IH5mID0gaW50ZXJuYWxfaXRlciB0IH5mOihmIDogXyBFbHQudCAtPiB1bml0IDo+IF8gSW50ZXJuYWxfZWx0LnQgLT4gdW5pdClcblxuICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBrZXkgOiBLZXkudFxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG1pbl9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IG1heF9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IGVsdHMgOiAnYSBFbHQudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHByZXR0eSB0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIHsgUHJldHR5Lm1pbl9hbGxvd2VkX2tleSA9IG1pbl9hbGxvd2VkX2tleSB0XG4gICAgOyBtYXhfYWxsb3dlZF9rZXkgPSBtYXhfYWxsb3dlZF9rZXkgdFxuICAgIDsgZWx0cyA9XG4gICAgICAgIChsZXQgciA9IHJlZiBbXSBpblxuICAgICAgICAgaW50ZXJuYWxfaXRlciB0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgIHJcbiAgICAgICAgICAgOj0geyBQcmV0dHkuRWx0LmtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHRcbiAgICAgICAgICAgICAgOyB2YWx1ZSA9IEludGVybmFsX2VsdC52YWx1ZSBwb29sIGVsdFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6ICFyKTtcbiAgICAgICAgIExpc3QucmV2ICFyKVxuICAgIH1cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgICB8IGBJbnRlcm5hbCAtPiBbJXNleHAgKHQgOiBhIHRfaW50ZXJuYWwpXVxuICAgIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG4gIDs7XG5cbiAgbGV0IGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IH5sZXZlbF9iaXRzIH5iaXRzX3Blcl9zbG90ID1cbiAgICBsZXQgYml0cyA9IE51bV9rZXlfYml0cy4oICsgKSBsZXZlbF9iaXRzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICBpZiBOdW1fa2V5X2JpdHMuZXF1YWwgYml0cyBOdW1fa2V5X2JpdHMubWF4X3ZhbHVlXG4gICAgdGhlbiBLZXkuU3Bhbi5tYXhfdmFsdWVcbiAgICBlbHNlIEtleS5TcGFuLnByZWQgKEtleS5udW1fa2V5cyBiaXRzKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGxldmVsX2ludmFyaWFudCBsZXZlbCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gbGV2ZWwgWyVzZXhwX29mOiBfIExldmVsLnRdIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgbGV2ZWwgZiBpblxuICAgICAgICBMZXZlbC5GaWVsZHMuaXRlclxuICAgICAgICAgIH5pbmRleDooY2hlY2sgKGZ1biBpbmRleCAtPiBhc3NlcnQgKGluZGV4ID49IDApKSlcbiAgICAgICAgICB+Yml0czooY2hlY2sgKGZ1biBiaXRzIC0+IGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIGJpdHMgTnVtX2tleV9iaXRzLnplcm8pKSlcbiAgICAgICAgICB+c2xvdHNfbWFzazpcbiAgICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IFNsb3RzX21hc2sudF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6KFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOmxldmVsLmJpdHMpKSlcbiAgICAgICAgICB+Yml0c19wZXJfc2xvdDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGJpdHNfcGVyX3Nsb3QgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPj0gKSBiaXRzX3Blcl9zbG90IE51bV9rZXlfYml0cy56ZXJvKSkpXG4gICAgICAgICAgfmtleXNfcGVyX3Nsb3Q6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBrZXlzX3Blcl9zbG90IC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6KEtleS5udW1fa2V5cyBsZXZlbC5iaXRzX3Blcl9zbG90KSkpXG4gICAgICAgICAgfm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2s6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgICAgIChNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmNyZWF0ZSB+Yml0c19wZXJfc2xvdDpsZXZlbC5iaXRzX3Blcl9zbG90KSkpKVxuICAgICAgICAgIH5kaWZmX21heF9taW5fYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgKGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgIH5sZXZlbF9iaXRzOmxldmVsLmJpdHNcbiAgICAgICAgICAgICAgICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKVxuICAgICAgICAgIH5sZW5ndGg6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIGxlbmd0aFxuICAgICAgICAgICAgICAgICA9IEFycmF5LmZvbGQgbGV2ZWwuc2xvdHMgfmluaXQ6MCB+ZjooZnVuIG4gZWx0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gICAgICAgICAgICAgICAgICAgdGhlbiBuXG4gICAgICAgICAgICAgICAgICAgZWxzZSBuICsgSW50ZXJuYWxfZWx0Lmxlbmd0aCBwb29sIGVsdCkpKSlcbiAgICAgICAgICB+bWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWluX2FsbG93ZWRfa2V5IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgbWluX2FsbG93ZWRfa2V5IEtleS56ZXJvKTtcbiAgICAgICAgICAgICAgIGlmIEtleS4oIDwgKSBtaW5fYWxsb3dlZF9rZXkgS2V5Lm1heF92YWx1ZVxuICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgIChLZXkucmVtIG1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90KVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6S2V5LlNwYW4uemVybykpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1heF9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgIG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgIChLZXkuYWRkX2NsYW1wX3RvX21heFxuICAgICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgIGxldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSkpKVxuICAgICAgICAgIH5zbG90czpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHNsb3RzIC0+XG4gICAgICAgICAgICAgICBBcnJheS5pdGVyIHNsb3RzIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KVxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaW52YXJpYW50IHBvb2wgaW52YXJpYW50X2EgZWx0O1xuICAgICAgICAgICAgICAgICAgIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGxldmVsLm1pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oIDw9ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGxldmVsLm1heF9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIHQuZWx0X2tleV9sb3dlcl9ib3VuZCk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5sZXZlbF9pbmRleCBwb29sIGVsdCA9IGxldmVsLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgIGludmFyaWFudF9hIChJbnRlcm5hbF9lbHQudmFsdWUgcG9vbCBlbHQpKSkpKSkpXG4gICAgaW5cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF9pbnRlcm5hbF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBhc3NlcnQgKEtleS4oID49ICkgKG1pbl9hbGxvd2VkX2tleSB0KSBLZXkuemVybyk7XG4gICAgICBhc3NlcnQgKEtleS4oID49ICkgKG1heF9hbGxvd2VkX2tleSB0KSAobWluX2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgICAgfnBvb2w6KGNoZWNrIChJbnRlcm5hbF9lbHQuUG9vbC5pbnZhcmlhbnQgaWdub3JlKSlcbiAgICAgICAgfm1pbl9lbHQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZWx0XyAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XylcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGFzc2VydCAoSW50ZXJuYWxfZWx0LmlzX3ZhbGlkIHQucG9vbCBlbHRfKTtcbiAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LmVxdWFsIHQuZWx0X2tleV9sb3dlcl9ib3VuZCAoSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0XykpKSkpXG4gICAgICAgIH5lbHRfa2V5X2xvd2VyX2JvdW5kOlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF9rZXlfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgZWx0X2tleV9sb3dlcl9ib3VuZCAobWluX2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgICAgICAgICBhc3NlcnQgKEtleS4oIDw9ICkgZWx0X2tleV9sb3dlcl9ib3VuZCAobWF4X2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIHQubWluX2VsdClcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS5lcXVhbCBlbHRfa2V5X2xvd2VyX2JvdW5kIChJbnRlcm5hbF9lbHQua2V5IHQucG9vbCB0Lm1pbl9lbHQpKSkpXG4gICAgICAgIH5sZXZlbHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGV2ZWxzIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChudW1fbGV2ZWxzIHQgPiAwKTtcbiAgICAgICAgICAgICBBcnJheS5pdGVyaSBsZXZlbHMgfmY6KGZ1biBsZXZlbF9pbmRleCBsZXZlbCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChsZXZlbF9pbmRleCA9IExldmVsLmluZGV4IGxldmVsKTtcbiAgICAgICAgICAgICAgIGxldmVsX2ludmFyaWFudCBsZXZlbDtcbiAgICAgICAgICAgICAgIGlmIGxldmVsX2luZGV4ID4gMFxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwcmV2X2xldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCAtIDEpIGluXG4gICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgTCA9IExldmVsIGluXG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICAgKEwua2V5c19wZXJfc2xvdCBsZXZlbClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OihLZXkuU3Bhbi5zdWNjIHByZXZfbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgIChMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTpwcmV2X2xldmVsLm1heF9hbGxvd2VkX2tleSkpKSkpKVxuICA7O1xuXG4gICgqKiBbbWluX2VsdF9dIHJldHVybnMgW251bGxdIGlmIGl0IGNhbid0IGZpbmQgdGhlIGRlc2lyZWQgZWxlbWVudC4gIFdlIHdyYXAgaXQgdXBcbiAgICAgIGFmdGVyd2FyZHMgdG8gcmV0dXJuIGFuIFtvcHRpb25dLiAqKVxuICBsZXQgbWluX2VsdF8gdCA9XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgdC5taW5fZWx0KVxuICAgIHRoZW4gdC5taW5fZWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IG1pbl9lbHRfYWxyZWFkeV9mb3VuZCA9IHJlZiAoSW50ZXJuYWxfZWx0Lm51bGwgKCkpIGluXG4gICAgICBsZXQgbWluX2tleV9hbHJlYWR5X2ZvdW5kID0gcmVmIEtleS5tYXhfdmFsdWUgaW5cbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICBsZXQgbnVtX2xldmVscyA9IG51bV9sZXZlbHMgdCBpblxuICAgICAgd2hpbGUgIWxldmVsX2luZGV4IDwgbnVtX2xldmVscyBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oIWxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBLZXkuKCA+ICkgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBhbnkgbW9yZSBsZXZlbHMuICBRdWl0IHRoZSBsb29wLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9IG51bV9sZXZlbHNcbiAgICAgICAgZWxzZSBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICAgIHRoZW4gaW5jciBsZXZlbF9pbmRleFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBMb29rIGluIFtsZXZlbF0uICopXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBsZXQgc2xvdF9taW5fa2V5ID1cbiAgICAgICAgICAgIHJlZlxuICAgICAgICAgICAgICAoTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgfmtleTooS2V5Lm1heCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IXNsb3RfbWluX2tleSkgaW5cbiAgICAgICAgICAoKiBGaW5kIHRoZSBmaXJzdCBub25lbXB0eSBzbG90IHdpdGggYSBzbWFsbCBlbm91Z2ggW3Nsb3RfbWluX2tleV0uICopXG4gICAgICAgICAgd2hpbGVcbiAgICAgICAgICAgIEludGVybmFsX2VsdC5pc19udWxsIHNsb3RzLighc2xvdClcbiAgICAgICAgICAgICYmIEtleS4oIDwgKSAhc2xvdF9taW5fa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICBkb1xuICAgICAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgICAgICBzbG90X21pbl9rZXkgOj0gS2V5LmFkZCAhc2xvdF9taW5fa2V5IGxldmVsLmtleXNfcGVyX3Nsb3RcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVmlzaXQgYWxsIG9mIHRoZSBlbHRzIGluIHRoaXMgc2xvdCBhbmQgZmluZCBvbmUgd2l0aCBtaW5pbXVtIGtleS4gKilcbiAgICAgICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICAgICAgIGxldCBjdXJyZW50X2tleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICBpZiBLZXkuKCA8PSApIGN1cnJlbnRfa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWluX2VsdF9hbHJlYWR5X2ZvdW5kIDo9ICFjdXJyZW50O1xuICAgICAgICAgICAgICAgIG1pbl9rZXlfYWxyZWFkeV9mb3VuZCA6PSBjdXJyZW50X2tleSk7XG4gICAgICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICAoKiBJZiBbIWxldmVsX2luZGV4ID0gMF0gdGhlbiBhbGwgZWx0cyBpbiB0aGlzIHNsb3QgaGF2ZSB0aGUgc2FtZSBba2V5XSxcbiAgICAgICAgICAgICAgICAgaS5lLiBbIXNsb3RfbWluX2tleV0uICBTbywgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnkgZWxlbWVudHMgYWZ0ZXJcbiAgICAgICAgICAgICAgICAgW2ZpcnN0XS4gIFRoaXMgaXMgYSB1c2VmdWwgc2hvcnQgY3V0IGluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZXJlIGFyZVxuICAgICAgICAgICAgICAgICBtdWx0aXBsZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBtaW4gc2xvdCBpbiBsZXZlbCAwLiAqKVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgfHwgIWxldmVsX2luZGV4ID0gMFxuICAgICAgICAgICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICAgICAgICAgIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAoKiBGaW5pc2hlZCBsb29raW5nIGluIFtsZXZlbF0uICBNb3ZlIHVwIHRvIHRoZSBuZXh0IGxldmVsLiAqKVxuICAgICAgICAgIGluY3IgbGV2ZWxfaW5kZXgpXG4gICAgICBkb25lO1xuICAgICAgdC5taW5fZWx0IDwtICFtaW5fZWx0X2FscmVhZHlfZm91bmQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gIW1pbl9rZXlfYWxyZWFkeV9mb3VuZDtcbiAgICAgIHQubWluX2VsdClcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXkgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgIChrZXkgOiBLZXkudClcbiAgICAgICAgICAobWluX2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICAobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICB+cHJpb3JpdHlfcXVldWU6KHQgOiBfIHQpXVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWwgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBsZXZlbCBib3VuZHNcIiAoa2V5IDogS2V5LnQpIChsZXZlbCA6IF8gTGV2ZWwudCldXG4gIDs7XG5cbiAgbGV0IGFkZF9lbHQgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQgaW5cbiAgICBpZiBub3QgKEtleS4oID49ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgJiYgS2V5LiggPD0gKSBrZXkgKG1heF9hbGxvd2VkX2tleSB0KSlcbiAgICB0aGVuIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXk7XG4gICAgKCogRmluZCB0aGUgbG93ZXN0IGxldmVsIHRoYXQgd2lsbCBob2xkIFtlbHRdLiAqKVxuICAgIGxldCBsZXZlbF9pbmRleCA9XG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgd2hpbGUgS2V5LiggPiApIGtleSAoTGV2ZWwubWF4X2FsbG93ZWRfa2V5IHQubGV2ZWxzLighbGV2ZWxfaW5kZXgpKSBkb1xuICAgICAgICBpbmNyIGxldmVsX2luZGV4XG4gICAgICBkb25lO1xuICAgICAgIWxldmVsX2luZGV4XG4gICAgaW5cbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgaWYgbm90IChLZXkuKCA+PSApIGtleSBsZXZlbC5taW5fYWxsb3dlZF9rZXkgJiYgS2V5LiggPD0gKSBrZXkgbGV2ZWwubWF4X2FsbG93ZWRfa2V5KVxuICAgIHRoZW4gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWw7XG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCArIDE7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9sZXZlbF9pbmRleCBwb29sIGVsdCBsZXZlbF9pbmRleDtcbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleSBpblxuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgbGV0IGZpcnN0ID0gc2xvdHMuKHNsb3QpIGluXG4gICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICB0aGVuIEludGVybmFsX2VsdC5pbnNlcnRfYXRfZW5kIHBvb2wgZmlyc3QgfnRvX2FkZDplbHRcbiAgICBlbHNlIChcbiAgICAgIHNsb3RzLihzbG90KSA8LSBlbHQ7XG4gICAgICBJbnRlcm5hbF9lbHQubGlua190b19zZWxmIHBvb2wgZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0ID1cbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0IGluXG4gICAgaWYgS2V5LiggPCApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICB0aGVuIChcbiAgICAgIHQubWluX2VsdCA8LSBlbHQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0ga2V5KTtcbiAgICBhZGRfZWx0IHQgZWx0O1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfZ290X2ludmFsaWRfa2V5IHQga2V5ID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwuYWRkX2F0X2ludGVydmFsX251bSBnb3QgaW52YWxpZCBpbnRlcnZhbCBudW1cIlxuICAgICAgICAgIH5pbnRlcnZhbF9udW06KGtleSA6IEtleS50KVxuICAgICAgICAgIH5taW5fYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW06KG1pbl9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bToobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudCldXG4gIDs7XG5cbiAgbGV0IGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5ID1cbiAgICBpZiBLZXkuKCA8ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgfHwgS2V5LiggPiApIGtleSAobWF4X2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiByYWlzZV9nb3RfaW52YWxpZF9rZXkgdCBrZXlcbiAgOztcblxuICBsZXQgaW50ZXJuYWxfYWRkIHQgfmtleSB+YXQgdmFsdWUgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGlmIEludGVybmFsX2VsdC5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIEludGVybmFsX2VsdC5Qb29sLmdyb3cgdC5wb29sO1xuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQuY3JlYXRlIHQucG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4OigtMSkgaW5cbiAgICBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0O1xuICAgIGVsdFxuICA7O1xuXG4gICgqKiBbcmVtb3ZlX29yX3JlX2FkZF9lbHRzXSB2aXNpdHMgZWFjaCBlbGVtZW50IGluIHRoZSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgIFtmaXJzdF0uICBJZiB0aGUgZWxlbWVudCdzIGtleSBpcyBbPj0gdF9taW5fYWxsb3dlZF9rZXldLCB0aGVuIGl0IGFkZHMgdGhlIGVsZW1lbnRcbiAgICAgIGJhY2sgYXQgYSBsb3dlciBsZXZlbC4gIElmIG5vdCwgdGhlbiBpdCBjYWxscyBbaGFuZGxlX3JlbW92ZWRdIGFuZCBbZnJlZV1zIHRoZVxuICAgICAgZWxlbWVudC4gKilcbiAgbGV0IHJlbW92ZV9vcl9yZV9hZGRfZWx0cyB0IChsZXZlbCA6IF8gTGV2ZWwudCkgZmlyc3QgfnRfbWluX2FsbG93ZWRfa2V5IH5oYW5kbGVfcmVtb3ZlZFxuICAgID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICgqIFdlIGV4dHJhY3QgW25leHRdIGZyb20gW2N1cnJlbnRdIGZpcnN0LCBiZWNhdXNlIHdlIHdpbGwgbW9kaWZ5IG9yIFtmcmVlXVxuICAgICAgICAgW2N1cnJlbnRdIGJlZm9yZSBjb250aW51aW5nIHRoZSBsb29wLiAqKVxuICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoIC0gMTtcbiAgICAgIGlmIEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCkgdF9taW5fYWxsb3dlZF9rZXlcbiAgICAgIHRoZW4gYWRkX2VsdCB0ICFjdXJyZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgICAgICBoYW5kbGVfcmVtb3ZlZCAoSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsICFjdXJyZW50KTtcbiAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCAhY3VycmVudCk7XG4gICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgIGRvbmVcbiAgOztcblxuICAoKiogW2luY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBbbGV2ZWxdIHRvIGFzXG4gICAgICBsYXJnZSBhIHZhbHVlIGFzIHBvc3NpYmxlLCBidXQgbm8gbW9yZSB0aGFuIFttYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XS5cbiAgICAgIFt0X21pbl9hbGxvd2VkX2tleV0gaXMgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgZm9yIHRoZSBlbnRpcmUgdGltaW5nIHdoZWVsLiAgQXNcbiAgICAgIGVsZW1lbnRzIGFyZSBlbmNvdW50ZXJlZCwgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSB0aW1pbmcgd2hlZWwgaWYgdGhlaXIga2V5IGlzXG4gICAgICBzbWFsbGVyIHRoYW4gW3RfbWluX2FsbG93ZWRfa2V5XSwgb3IgYWRkZWQgYXQgYSBsb3dlciBsZXZlbCBpZiBub3QuICopXG4gIGxldCBpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdFxuICAgICAgICAobGV2ZWwgOiBfIExldmVsLnQpXG4gICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkXG4gICAgPVxuICAgIGxldCBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSA9XG4gICAgICBMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleSBsZXZlbCB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICBpblxuICAgICgqIFdlIHJlcXVpcmUgdGhhdCBbbW9kIGxldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90ID0gMF0uICBTbyxcbiAgICAgICB3ZSBzdGFydCBbbGV2ZWxfbWluX2FsbG93ZWRfa2V5XSB3aGVyZSB0aGF0IGlzIHRydWUsIGFuZCB0aGVuIGluY3JlYXNlIGl0IGJ5XG4gICAgICAgW2tleXNfcGVyX3Nsb3RdIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBsb29wLiAqKVxuICAgIGxldCBsZXZlbF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgbGV2ZWxcbiAgICAgICAgfmtleTpcbiAgICAgICAgICAoS2V5Lm1pblxuICAgICAgICAgICAgIGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgKEtleS5tYXggbGV2ZWwubWluX2FsbG93ZWRfa2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZCkpXG4gICAgaW5cbiAgICBsZXQgbGV2ZWxfbWluX2FsbG93ZWRfa2V5ID0gcmVmIGxldmVsX21pbl9hbGxvd2VkX2tleSBpblxuICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IWxldmVsX21pbl9hbGxvd2VkX2tleSkgaW5cbiAgICBsZXQga2V5c19wZXJfc2xvdCA9IGxldmVsLmtleXNfcGVyX3Nsb3QgaW5cbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIHdoaWxlIEtleS4oIDwgKSAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IGRvXG4gICAgICBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICB0aGVuXG4gICAgICAgICgqIElmIG5vIGVsZW1lbnRzIHJlbWFpbiBhdCB0aGlzIGxldmVsLCB3ZSBjYW4ganVzdCBzZXQgW21pbl9hbGxvd2VkX2tleV0gdG8gdGhlXG4gICAgICAgICAgIGRlc2lyZWQgdmFsdWUuICopXG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgc2xvdHMuKCFzbG90KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKTtcbiAgICAgICAgICByZW1vdmVfb3JfcmVfYWRkX2VsdHMgdCBsZXZlbCBmaXJzdCB+dF9taW5fYWxsb3dlZF9rZXkgfmhhbmRsZV9yZW1vdmVkKTtcbiAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBLZXkuYWRkX2NsYW1wX3RvX21heCAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGtleXNfcGVyX3Nsb3QpXG4gICAgZG9uZTtcbiAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXkgPC0gZGVzaXJlZF9taW5fYWxsb3dlZF9rZXk7XG4gICAgbGV2ZWwubWF4X2FsbG93ZWRfa2V5XG4gICAgPC0gS2V5LmFkZF9jbGFtcF90b19tYXggZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgbGV0IGluY3JlYXNlX21pbl9hbGxvd2VkX2tleSB0IH5rZXkgfmhhbmRsZV9yZW1vdmVkIDogSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC50ID1cbiAgICBpZiBLZXkuKCA8PSApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICBlbHNlIChcbiAgICAgICgqIFdlIGluY3JlYXNlIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBsZXZlbHMgaW4gb3JkZXIgdG8gcmVzdG9yZSB0aGUgaW52YXJpYW50XG4gICAgICAgICB0aGF0IHRoZXkgaGF2ZSBhcyBsYXJnZSBhcyBwb3NzaWJsZSBhIFttaW5fYWxsb3dlZF9rZXldLCB3aGlsZSBsZWF2aW5nIG5vIGdhcHNcbiAgICAgICAgIGluIGtleXMuICopXG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgbGV0IHJlc3VsdCA9IHJlZiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0Lk1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIGluXG4gICAgICBsZXQgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgPSByZWYgKEtleS5wcmVkIGtleSkgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgbGV0IG51bV9sZXZlbHMgPSBudW1fbGV2ZWxzIHQgaW5cbiAgICAgIHdoaWxlICFsZXZlbF9pbmRleCA8IG51bV9sZXZlbHMgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLighbGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXlfYmVmb3JlID0gbGV2ZWwubWluX2FsbG93ZWRfa2V5IGluXG4gICAgICAgIGluY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgIHRcbiAgICAgICAgICBsZXZlbFxuICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTohcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXk6a2V5XG4gICAgICAgICAgfmhhbmRsZV9yZW1vdmVkO1xuICAgICAgICBpZiBLZXkuZXF1YWwgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgbWluX2FsbG93ZWRfa2V5X2JlZm9yZVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBUaGlzIGxldmVsIGRpZCBub3Qgc2hpZnQuICBEb24ndCBzaGlmdCBhbnkgaGlnaGVyIGxldmVscy4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSBudW1fbGV2ZWxzO1xuICAgICAgICAgIHJlc3VsdCA6PSBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIExldmVsIFtsZXZlbF9pbmRleF0gc2hpZnRlZC4gIENvbnNpZGVyIHNoaWZ0aW5nIGhpZ2hlciBsZXZlbHMuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gIWxldmVsX2luZGV4ICsgMTtcbiAgICAgICAgICBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA6PSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgbGV2ZWwpXG4gICAgICBkb25lO1xuICAgICAgaWYgS2V5LiggPiApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBXZSBoYXZlIHJlbW92ZWQgW3QubWluX2VsdF0gb3IgaXQgd2FzIGFscmVhZHkgbnVsbCwgc28ganVzdCBzZXQgaXQgdG9cbiAgICAgICAgICAgbnVsbC4gKilcbiAgICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpO1xuICAgICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gbWluX2FsbG93ZWRfa2V5IHQpO1xuICAgICAgIXJlc3VsdClcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/bGV2ZWxfYml0cyAoKSA9XG4gICAgbGV0IGxldmVsX2JpdHMgPVxuICAgICAgbWF0Y2ggbGV2ZWxfYml0cyB3aXRoXG4gICAgICB8IFNvbWUgbCAtPiBsXG4gICAgICB8IE5vbmUgLT4gTGV2ZWxfYml0cy5kZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgXywgXywgbGV2ZWxzID1cbiAgICAgIExpc3QuZm9sZGlcbiAgICAgICAgbGV2ZWxfYml0c1xuICAgICAgICB+aW5pdDooTnVtX2tleV9iaXRzLnplcm8sIEtleS56ZXJvLCBbXSlcbiAgICAgICAgfmY6XG4gICAgICAgICAgKGZ1blxuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgIChiaXRzX3Blcl9zbG90LCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5LCBsZXZlbHMpXG4gICAgICAgICAgICAobGV2ZWxfYml0cyA6IE51bV9rZXlfYml0cy50KVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbGV0IGtleXNfcGVyX3Nsb3QgPSBLZXkubnVtX2tleXMgYml0c19wZXJfc2xvdCBpblxuICAgICAgICAgICAgICBsZXQgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suY3JlYXRlIH5iaXRzX3Blcl9zbG90IGluXG4gICAgICAgICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgIEtleS5taW5fa2V5X2luX3NhbWVfc2xvdCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1heF9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgS2V5LmFkZF9jbGFtcF90b19tYXggbWluX2FsbG93ZWRfa2V5IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbGV2ZWwgPVxuICAgICAgICAgICAgICAgIHsgTGV2ZWwuaW5kZXhcbiAgICAgICAgICAgICAgICA7IGJpdHMgPSBsZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgOyBzbG90c19tYXNrID0gU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHNcbiAgICAgICAgICAgICAgICA7IGJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICA7IGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICA7IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgICA7IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgICAgICAgICAgIDsgbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgOyBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICA7IHNsb3RzID1cbiAgICAgICAgICAgICAgICAgICAgQXJyYXkuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbjooSW50NjMudG9faW50X2V4biAoTnVtX2tleV9iaXRzLnBvdzIgbGV2ZWxfYml0cykpXG4gICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICwgS2V5LnN1Y2NfY2xhbXBfdG9fbWF4IG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAsIGxldmVsIDo6IGxldmVscyApKVxuICAgIGluXG4gICAgeyBsZW5ndGggPSAwXG4gICAgOyBwb29sID0gSW50ZXJuYWxfZWx0LlBvb2wuY3JlYXRlID9jYXBhY2l0eSAoKVxuICAgIDsgbWluX2VsdCA9IEludGVybmFsX2VsdC5udWxsICgpXG4gICAgOyBlbHRfa2V5X2xvd2VyX2JvdW5kID0gS2V5Lnplcm9cbiAgICA7IGxldmVscyA9IEFycmF5Lm9mX2xpc3RfcmV2IGxldmVsc1xuICAgIH1cbiAgOztcblxuICBsZXQgbWVtIHQgZWx0ID0gSW50ZXJuYWxfZWx0LmV4dGVybmFsX2lzX3ZhbGlkIHQucG9vbCBlbHRcblxuICBsZXQgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGlmIEludGVybmFsX2VsdC5lcXVhbCBlbHQgdC5taW5fZWx0XG4gICAgdGhlblxuICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgKCogV2Uga2VlcCBbdC5lbHRfbG93ZXJfYm91bmRdIHNpbmNlIGl0IGlzIHZhbGlkIGV2ZW4gdGhvdWdoIFt0Lm1pbl9lbHRdIGlzIGJlaW5nXG4gICAgICAgcmVtb3ZlZC4gKik7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLihJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQpIGluXG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCAtIDE7XG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCkgaW5cbiAgICBsZXQgZmlyc3QgPSBzbG90cy4oc2xvdCkgaW5cbiAgICBpZiBwaHlzX2VxdWFsIGVsdCAoSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQpXG4gICAgdGhlbiAoKiBbZWx0XSBpcyB0aGUgb25seSBlbGVtZW50IGluIHRoZSBzbG90ICopXG4gICAgICBzbG90cy4oc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIChcbiAgICAgIGlmIHBoeXNfZXF1YWwgZWx0IGZpcnN0IHRoZW4gc2xvdHMuKHNsb3QpIDwtIEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0O1xuICAgICAgSW50ZXJuYWxfZWx0LnVubGluayBwb29sIGVsdClcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHBvb2wgZWx0IGluXG4gICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0XG4gIDs7XG5cbiAgbGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkIH5rZXkgfm5vdyA9XG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKDApIGluXG4gICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXkgaW5cbiAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGZpcnN0ID0gcmVmIHNsb3RzLihzbG90KSBpblxuICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCAhZmlyc3QpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGN1cnJlbnQgPSByZWYgIWZpcnN0IGluXG4gICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAgIGxldCBlbHQgPSAhY3VycmVudCBpblxuICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgIWZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHQ7XG4gICAgICAgICAgaWYgVGltZV9ucy4oIDw9ICkgKEludGVybmFsX2VsdC5hdCBwb29sIGVsdCkgbm93XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBoYW5kbGVfZmlyZWQgKEludGVybmFsX2VsdC50b19leHRlcm5hbCBlbHQpO1xuICAgICAgICAgICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHQ7XG4gICAgICAgICAgICAoKiBXZSByZWNvbXB1dGUgW2ZpcnN0XSBiZWNhdXNlIFtpbnRlcm5hbF9yZW1vdmVdIG1heSBoYXZlIGNoYW5nZWQgaXQuICopXG4gICAgICAgICAgICBmaXJzdCA6PSBzbG90cy4oc2xvdCkpXG4gICAgICAgIGRvbmUpKVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgdCBlbHQgfmtleSB+YXQgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcG9vbCBlbHQgaW5cbiAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9rZXkgcG9vbCBlbHQga2V5O1xuICAgIEludGVybmFsX2VsdC5zZXRfYXQgcG9vbCBlbHQgYXQ7XG4gICAgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdFxuICA7O1xuXG4gIGxldCBjbGVhciB0ID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBmcmVlX2VsdCBlbHQgPSBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV2ZWwubGVuZ3RoIDwtIDA7XG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmY6ZnJlZV9lbHQ7XG4gICAgICAgICAgICAgIHNsb3RzLihzbG90X2luZGV4KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxfZWx0ID0gUHJpb3JpdHlfcXVldWUuSW50ZXJuYWxfZWx0XG5tb2R1bGUgS2V5ID0gUHJpb3JpdHlfcXVldWUuS2V5XG5tb2R1bGUgSW50ZXJ2YWxfbnVtID0gS2V5XG5cbmxldCBtaW5faW50ZXJ2YWxfbnVtID0gSW50ZXJ2YWxfbnVtLnplcm9cblxuKCogQWxsIHRpbWUgZnJvbSB0aGUgZXBvY2ggb253YXJkcyBpcyBicm9rZW4gaW50byBoYWxmLW9wZW4gaW50ZXJ2YWxzIG9mIHNpemVcbiAgIFtDb25maWcuYWxhcm1fcHJlY2lzaW9uIGNvbmZpZ10uICBUaGUgaW50ZXJ2YWxzIGFyZSBudW1iZXJlZCBzdGFydGluZyBhdCB6ZXJvLCBhbmQgYVxuICAgdGltZSdzIGludGVydmFsIG51bWJlciBzZXJ2ZXMgYXMgaXRzIGtleSBpbiBbcHJpb3JpdHlfcXVldWVdLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBjb25maWcgOiBDb25maWcudFxuICA7IHN0YXJ0IDogVGltZV9ucy50XG4gIDsgKCogW21heF9pbnRlcnZhbF9udW1dIGlzIHRoZSBpbnRlcnZhbCBudW1iZXIgb2YgW21heF90aW1lXS4gKilcbiAgICBtYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnRcbiAgOyBtdXRhYmxlIG5vdyA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbm93X2ludGVydmFsX251bV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudFxuICA7IHByaW9yaXR5X3F1ZXVlIDogJ2EgUHJpb3JpdHlfcXVldWUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdGltaW5nX3doZWVsID0gJ2EgdFxudHlwZSAnYSB0X25vdyA9ICdhIHRcblxubGV0IHNleHBfb2ZfdF9ub3cgXyB0ID0gWyVzZXhwICh0Lm5vdyA6IFRpbWVfbnMudCldXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBDb25maWcuYWxhcm1fcHJlY2lzaW9uIHQuY29uZmlnXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmlvcml0eV9xdWV1ZS5FbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBudWxsID0gUHJpb3JpdHlfcXVldWUuRWx0Lm51bGxcbiAgbGV0IGF0IHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQuYXQgdHcucHJpb3JpdHlfcXVldWUgdFxuICBsZXQgdmFsdWUgdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC52YWx1ZSB0dy5wcmlvcml0eV9xdWV1ZSB0XG4gIGxldCBpbnRlcnZhbF9udW0gdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5rZXkgdHcucHJpb3JpdHlfcXVldWUgdFxuZW5kXG5cbmxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbmxldCBpdGVyIHQgfmYgPSBQcmlvcml0eV9xdWV1ZS5pdGVyIHQucHJpb3JpdHlfcXVldWUgfmZcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBhdCA6IFRpbWVfbnMudFxuICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSB0IGFsYXJtID0geyBhdCA9IEFsYXJtLmF0IHQgYWxhcm07IHZhbHVlID0gQWxhcm0udmFsdWUgdCBhbGFybSB9XG4gICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBUaW1lX25zLmNvbXBhcmUgKGF0IHQxKSAoYXQgdDIpXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBjb25maWcgOiBDb25maWcudFxuICAgIDsgc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udFxuICAgIDsgbm93IDogVGltZV9ucy50XG4gICAgOyBhbGFybXMgOiAnYSBBbGFybS50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IHByZXR0eVxuICAgICAgKHsgY29uZmlnXG4gICAgICAgOyBzdGFydFxuICAgICAgIDsgbWF4X2ludGVydmFsX251bVxuICAgICAgIDsgbm93XG4gICAgICAgOyBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0ID0gX1xuICAgICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IF9cbiAgICAgICA7IHByaW9yaXR5X3F1ZXVlID0gX1xuICAgICAgIH0gYXMgdClcbiAgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IHIgOj0gUHJldHR5LkFsYXJtLmNyZWF0ZSB0IGEgOjogIXIpO1xuICBsZXQgYWxhcm1zID0gTGlzdC5zb3J0ICFyIH5jb21wYXJlOlByZXR0eS5BbGFybS5jb21wYXJlIGluXG4gIHsgUHJldHR5LmNvbmZpZzsgc3RhcnQ7IG1heF9pbnRlcnZhbF9udW07IG5vdzsgYWxhcm1zIH1cbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgfCBgSW50ZXJuYWwgLT4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2ZfYSB0XG4gIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBQcmlvcml0eV9xdWV1ZS5sZW5ndGggdC5wcmlvcml0eV9xdWV1ZVxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X3dpdGhfYWxsX2FsYXJtc19pbl9tYXhfaW50ZXJ2YWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHdpdGggYWxsIGFsYXJtcyBpbiBtYXggaW50ZXJ2YWxcIlxuICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbjs7XG5cbmxldCBwb29sIHQgPSBQcmlvcml0eV9xdWV1ZS5wb29sIHQucHJpb3JpdHlfcXVldWVcblxubGV0IGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZSB+YWxhcm1fcHJlY2lzaW9uID1cbiAgSW50ZXJ2YWxfbnVtLm9mX2ludDYzIChBbGFybV9wcmVjaXNpb24uaW50ZXJ2YWxfbnVtIGFsYXJtX3ByZWNpc2lvbiB0aW1lKVxuOztcblxubGV0IGludGVydmFsX251bV91bmNoZWNrZWQgdCB0aW1lID1cbiAgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lIH5hbGFybV9wcmVjaXNpb246dC5jb25maWcuYWxhcm1fcHJlY2lzaW9uXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtIHQgdGltZSA9XG4gIGlmIFRpbWVfbnMuKCA8ICkgdGltZSBtaW5fdGltZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bSBnb3QgdGltZSB0b28gZmFyIGluIHRoZSBwYXN0XCIgKHRpbWUgOiBUaW1lX25zLnQpXTtcbiAgaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRpbWVcbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgaW50ZXJ2YWxfbnVtID1cbiAgQWxhcm1fcHJlY2lzaW9uLmludGVydmFsX251bV9zdGFydFxuICAgIHQuY29uZmlnLmFsYXJtX3ByZWNpc2lvblxuICAgIChpbnRlcnZhbF9udW0gfD4gSW50ZXJ2YWxfbnVtLnRvX2ludDYzKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW0gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW1fc3RhcnQgZ290IHRvbyBzbWFsbCBpbnRlcnZhbF9udW1cIlxuICAgICAgICAoaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXG4gICAgICAgIChtaW5faW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19sYXJnZSB0IGludGVydmFsX251bSA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bV9zdGFydCBnb3QgdG9vIGxhcmdlIGludGVydmFsX251bVwiXG4gICAgICAgIChpbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udClcbiAgICAgICAgKHQubWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50KV1cbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICBpZiBJbnRlcnZhbF9udW0uKCA8ICkgaW50ZXJ2YWxfbnVtIG1pbl9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW07XG4gIGlmIEludGVydmFsX251bS4oID4gKSBpbnRlcnZhbF9udW0gdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fbGFyZ2UgdCBpbnRlcnZhbF9udW07XG4gIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBpbnRlcnZhbF9udW1cbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5ID1cbiAgKCogW2ludGVydmFsX251bV9zdGFydCB0IGtleV0gaXMgdGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdGFydCBvZiB0aGUgdGltZSBpbnRlcnZhbFxuICAgICBob2xkaW5nIHRoZSBmaXJzdCBhbGFybSBpbiBbdF0uICBBZHZhbmNpbmcgdG8gdGhhdCB3b3VsZCBub3QgYmUgZW5vdWdoLCBzaW5jZSB0aGVcbiAgICAgYWxhcm1zIGluIHRoYXQgaW50ZXJ2YWwgZG9uJ3QgZmlyZSB1bnRpbCB0aGUgY2xvY2sgaXMgYWR2YW5jZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZVxuICAgICBuZXh0IGludGVydmFsLiAgU28sIHdlIHVzZSBbc3VjYyBrZXldIHRvIGFkdmFuY2UgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgIGludGVydmFsLiAqKVxuICBpbnRlcnZhbF9udW1fc3RhcnQgdCAoS2V5LnN1Y2Mga2V5KVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gICAgaWYgSW50ZXJ2YWxfbnVtLmVxdWFsIGtleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXkpKVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdDtcbiAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gIGlmIEludGVydmFsX251bS5lcXVhbCBrZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF93aXRoX2FsbF9hbGFybXNfaW5fbWF4X2ludGVydmFsIHQ7XG4gIG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXlcbjs7XG5cbmxldCBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9XG4gIGxldCBtYXhfYWxsb3dlZF9rZXkgPSBQcmlvcml0eV9xdWV1ZS5tYXhfYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcnZhbF9udW0uKCA+PSApIG1heF9hbGxvd2VkX2tleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiBtYXhfdGltZVxuICBlbHNlXG4gICAgVGltZV9ucy5hZGRcbiAgICAgIChpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgbWF4X2FsbG93ZWRfa2V5KVxuICAgICAgKFRpbWVfbnMuU3Bhbi4oIC0gKSAoYWxhcm1fcHJlY2lzaW9uIHQpIFRpbWVfbnMuU3Bhbi5uYW5vc2Vjb25kKVxuOztcblxubGV0IG5vd19pbnRlcnZhbF9udW0gdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWluX2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtID0gbm93X2ludGVydmFsX251bVxubGV0IG1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSB0ID0gaW50ZXJ2YWxfbnVtIHQgKG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbmxldCBpbnRlcnZhbF9zdGFydCB0IHRpbWUgPSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgKGludGVydmFsX251bSB0IHRpbWUpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb25maWc6KGNoZWNrIENvbmZpZy5pbnZhcmlhbnQpXG4gICAgICB+c3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuIHN0YXJ0IC0+XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oID49ICkgc3RhcnQgbWluX3RpbWUpO1xuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIHN0YXJ0IG1heF90aW1lKSkpXG4gICAgICB+bWF4X2ludGVydmFsX251bTpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2ludGVydmFsX251bSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgbWF4X3RpbWUpO1xuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgKGludGVydmFsX251bV9zdGFydCB0IG1heF9pbnRlcnZhbF9udW0pKSkpXG4gICAgICB+bm93OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3cgLT5cbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPj0gKSBub3cgdC5zdGFydCk7XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgbm93IG1heF90aW1lKTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCB0Lm5vdylcbiAgICAgICAgICAgICAgIChQcmlvcml0eV9xdWV1ZS5taW5fYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSkpKSlcbiAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gICAgICAgICAgICAgfmV4cGVjdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgKG5vd19pbnRlcnZhbF9udW0gdCkpKSlcbiAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9hbGFybV90aW1lIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBtYXhfYWxsb3dlZF9hbGFybV90aW1lXG4gICAgICAgICAgICAgfmV4cGVjdDooY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKSlcbiAgICAgIH5wcmlvcml0eV9xdWV1ZTooY2hlY2sgKFByaW9yaXR5X3F1ZXVlLmludmFyaWFudCBpbnZhcmlhbnRfYSkpO1xuICAgIGl0ZXIgdCB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAoQWxhcm0uaW50ZXJ2YWxfbnVtIHQgYWxhcm0pXG4gICAgICAgICAgKGludGVydmFsX251bSB0IChBbGFybS5hdCB0IGFsYXJtKSkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgVGltZV9ucy4oID49ICkgKGludGVydmFsX3N0YXJ0IHQgKEFsYXJtLmF0IHQgYWxhcm0pKSAoaW50ZXJ2YWxfc3RhcnQgdCAobm93IHQpKSk7XG4gICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgKEFsYXJtLmF0IHQgYWxhcm0pIChUaW1lX25zLnN1YiAobm93IHQpIChhbGFybV9wcmVjaXNpb24gdCkpKSkpXG47O1xuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfmhhbmRsZV9maXJlZCA9XG4gIGlmIFRpbWVfbnMuKCA+ICkgdG9fIChub3cgdClcbiAgdGhlbiAoXG4gICAgdC5ub3cgPC0gdG9fO1xuICAgIGxldCBrZXkgPSBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdG9fIGluXG4gICAgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDwtIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBrZXk7XG4gICAgbWF0Y2hcbiAgICAgIFByaW9yaXR5X3F1ZXVlLmluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgIH5rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkOmhhbmRsZV9maXJlZFxuICAgIHdpdGhcbiAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZSAtPlxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPSApIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSAoY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKVxuICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWQgLT5cbiAgICAgIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA8LSBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbjs7XG5cbmxldCBjcmVhdGUgfmNvbmZpZyB+c3RhcnQgPVxuICBpZiBUaW1lX25zLiggPCApIHN0YXJ0IFRpbWVfbnMuZXBvY2hcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbC5jcmVhdGUgZ290IHN0YXJ0IGJlZm9yZSB0aGUgZXBvY2hcIiAoc3RhcnQgOiBUaW1lX25zLnQpXTtcbiAgbGV0IHQgPVxuICAgIHsgY29uZmlnXG4gICAgOyBzdGFydFxuICAgIDsgbWF4X2ludGVydmFsX251bSA9XG4gICAgICAgIGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZTptYXhfdGltZSB+YWxhcm1fcHJlY2lzaW9uOmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbiAgICA7IG5vdyA9IFRpbWVfbnMubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgbm93X2ludGVydmFsX251bV9zdGFydCA9XG4gICAgICAgIFRpbWVfbnMubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IG1heF90aW1lICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IHByaW9yaXR5X3F1ZXVlID1cbiAgICAgICAgUHJpb3JpdHlfcXVldWUuY3JlYXRlID9jYXBhY2l0eTpjb25maWcuY2FwYWNpdHkgfmxldmVsX2JpdHM6Y29uZmlnLmxldmVsX2JpdHMgKClcbiAgICB9XG4gIGluXG4gIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA8LSBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdDtcbiAgYWR2YW5jZV9jbG9jayB0IH50b186c3RhcnQgfmhhbmRsZV9maXJlZDooZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgdFxuOztcblxubGV0IGFkZF9hdF9pbnRlcnZhbF9udW0gdCB+YXQgdmFsdWUgPVxuICBJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWxcbiAgICAoUHJpb3JpdHlfcXVldWUuaW50ZXJuYWxfYWRkXG4gICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgIH5rZXk6YXRcbiAgICAgICB+YXQ6KGludGVydmFsX251bV9zdGFydCB0IGF0KVxuICAgICAgIHZhbHVlKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbCBjYW5ub3Qgc2NoZWR1bGUgYWxhcm0gdGhhdCBmYXIgaW4gdGhlIGZ1dHVyZVwiXG4gICAgICAgIChhdCA6IFRpbWVfbnMudClcbiAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX3RpbWU6KHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2JlZm9yZV9zdGFydF9vZl9jdXJyZW50X2ludGVydmFsIHQgYXQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbCBjYW5ub3Qgc2NoZWR1bGUgYWxhcm0gYmVmb3JlIHN0YXJ0IG9mIGN1cnJlbnQgaW50ZXJ2YWxcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Oih0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnQgOiBUaW1lX25zLnQpXVxuOztcblxubGV0IGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQgPVxuICBpZiBUaW1lX25zLiggPiApIGF0IHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0aGVuIHJhaXNlX3RoYXRfZmFyX2luX3RoZV9mdXR1cmUgdCBhdDtcbiAgaWYgVGltZV9ucy4oIDwgKSBhdCB0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnRcbiAgdGhlbiByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0XG47O1xuXG5sZXQgYWRkIHQgfmF0IHZhbHVlID1cbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpXG4gICAgICAgfmF0XG4gICAgICAgdmFsdWUpXG47O1xuXG5sZXQgcmVtb3ZlIHQgYWxhcm0gPSBQcmlvcml0eV9xdWV1ZS5yZW1vdmUgdC5wcmlvcml0eV9xdWV1ZSBhbGFybVxubGV0IGNsZWFyIHQgPSBQcmlvcml0eV9xdWV1ZS5jbGVhciB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWVtIHQgYWxhcm0gPSBQcmlvcml0eV9xdWV1ZS5tZW0gdC5wcmlvcml0eV9xdWV1ZSBhbGFybVxuXG5sZXQgcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5IH5hdCA9XG4gIGlmIG5vdCAobWVtIHQgYWxhcm0pXG4gIHRoZW4gZmFpbHdpdGggXCJUaW1pbmdfd2hlZWwgY2Fubm90IHJlc2NoZWR1bGUgYWxhcm0gbm90IGluIHRpbWluZyB3aGVlbFwiO1xuICBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0O1xuICBQcmlvcml0eV9xdWV1ZS5jaGFuZ2UgdC5wcmlvcml0eV9xdWV1ZSBhbGFybSB+a2V5IH5hdFxuOztcblxubGV0IHJlc2NoZWR1bGUgdCBhbGFybSB+YXQgPSByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6KGludGVydmFsX251bV91bmNoZWNrZWQgdCBhdCkgfmF0XG5cbmxldCByZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSB0IGFsYXJtIH5hdCA9XG4gIHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleTphdCB+YXQ6KGludGVydmFsX251bV9zdGFydCB0IGF0KVxuOztcblxubGV0IG1pbl9hbGFybV9pbnRlcnZhbF9udW0gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWluX2FsYXJtX2ludGVydmFsX251bV9leG4gb2YgZW1wdHkgdGltaW5nX3doZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbiAgZWxzZSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdFxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQgPVxuICBsZXQgcG9vbCA9IHBvb2wgdCBpblxuICBJbnRlcm5hbF9lbHQubWF4X2FsYXJtX3RpbWUgcG9vbCBlbHQgfndpdGhfa2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQgPVxuICBsZXQgcG9vbCA9IHBvb2wgdCBpblxuICBJbnRlcm5hbF9lbHQubWluX2FsYXJtX3RpbWUgcG9vbCBlbHQgfndpdGhfa2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAobWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldO1xuICBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0XG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkID1cbiAgUHJpb3JpdHlfcXVldWUuZmlyZV9wYXN0X2FsYXJtc1xuICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICB+aGFuZGxlX2ZpcmVkXG4gICAgfmtleToobm93X2ludGVydmFsX251bSB0KVxuICAgIH5ub3c6dC5ub3dcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBOdW1fa2V5X2JpdHMgPSBOdW1fa2V5X2JpdHNcblxuICBsZXQgaW50ZXJ2YWxfbnVtX2ludGVybmFsID0gaW50ZXJ2YWxfbnVtX2ludGVybmFsXG4gIGxldCBtYXhfdGltZSA9IG1heF90aW1lXG5lbmRcbiIsIm1vZHVsZSBJbnJpYV9zeXMgPSBTeXNcbm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxub3BlbiBQb2x5XG5cbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxuXG5tb2R1bGUgRXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVGltZV9ucy5TcGFuXG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBUaW1lX25zLlNwYW4udmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gIGVuZClcblxubW9kdWxlIE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVGltZV9ucy5TcGFuXG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBUaW1lX25zLlNwYW4udmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IHN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50XG5cbiAgICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gICAgZW5kKVxuXG4gIGxldCBkZWZhdWx0ID0gY3JlYXRlX2V4biAoMSBsc2wgMTYpXG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbmVuZFxuXG5tb2R1bGUgTWF4X251bV90aHJlYWRzID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBEdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gc3RydWN0XG4gIG1vZHVsZSBIb3dfdG9fZHVtcCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IERlZmF1bHRcbiAgICAgIHwgQ2FsbF9hYm9ydFxuICAgICAgfCBDYWxsX2djb3JlXG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgdHlwZSB3YXRjaCA9XG4gICAgeyBkdW1wX2lmX2RlbGF5ZWRfYnkgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgaG93X3RvX2R1bXAgOiBIb3dfdG9fZHVtcC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIHR5cGUgdCA9XG4gICAgfCBXYXRjaCBvZiB3YXRjaFxuICAgIHwgRG9fbm90X3dhdGNoXG4gIFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubW9kdWxlIERlYnVnX3RhZyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEFsbFxuICAgICAgfCBDbG9ja1xuICAgICAgfCBGZFxuICAgICAgfCBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgICAgIHwgRmluYWxpemVyc1xuICAgICAgfCBJbnRlcnJ1cHRvclxuICAgICAgfCBNb25pdG9yXG4gICAgICB8IE1vbml0b3Jfc2VuZF9leG5cbiAgICAgIHwgUGFyYWxsZWxcbiAgICAgIHwgUmVhZGVyXG4gICAgICB8IFNjaGVkdWxlclxuICAgICAgfCBTaHV0ZG93blxuICAgICAgfCBUaHJlYWRfcG9vbFxuICAgICAgfCBUaHJlYWRfc2FmZVxuICAgICAgfCBXcml0ZXJcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCBsaXN0ID1cbiAgICBbIEFsbFxuICAgIDsgQ2xvY2tcbiAgICA7IEZkXG4gICAgOyBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgICA7IEZpbmFsaXplcnNcbiAgICA7IEludGVycnVwdG9yXG4gICAgOyBNb25pdG9yXG4gICAgOyBNb25pdG9yX3NlbmRfZXhuXG4gICAgOyBQYXJhbGxlbFxuICAgIDsgUmVhZGVyXG4gICAgOyBTY2hlZHVsZXJcbiAgICA7IFNodXRkb3duXG4gICAgOyBUaHJlYWRfcG9vbFxuICAgIDsgVGhyZWFkX3NhZmVcbiAgICA7IFdyaXRlclxuICAgIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9kZXNjcl93YXRjaGVyID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRXBvbGxfaWZfdGltZXJmZFxuICAgICAgfCBFcG9sbFxuICAgICAgfCBTZWxlY3RcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCBsaXN0ID0gWyBFcG9sbF9pZl90aW1lcmZkOyBFcG9sbDsgU2VsZWN0IF1cbmVuZFxuXG50eXBlIHQgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGNoZWNrX2ludmFyaWFudHMgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA6IER1bXBfY29yZV9vbl9qb2JfZGVsYXkudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzIDogRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA6IEZpbGVfZGVzY3Jfd2F0Y2hlci50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0IDogTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgOiBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX3RocmVhZHMgOiBNYXhfbnVtX3RocmVhZHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnQgb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHNleHAub3B0aW9uXVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0IDogTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgOiBEZWJ1Z190YWcudCBsaXN0IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IDogVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA6IFRpbWluZ193aGVlbC5Db25maWcudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG5sZXQgZW1wdHkgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IE5vbmVcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gTm9uZVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IE5vbmVcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gTm9uZVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBOb25lXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gTm9uZVxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IE5vbmVcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBOb25lXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBOb25lXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBOb25lXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gTm9uZVxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gTm9uZVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gTm9uZVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBOb25lXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVcbiAgICAgID9hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgICAgID9jaGVja19pbnZhcmlhbnRzXG4gICAgICA/ZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gICAgICA/ZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICAgICAgP2Vwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgICAgID9maWxlX2Rlc2NyX3dhdGNoZXJcbiAgICAgID9tYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICAgICAgP21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICAgICAgP21heF9udW1fdGhyZWFkc1xuICAgICAgP21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gICAgICA/bWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9wcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgICAgID9yZWNvcmRfYmFja3RyYWNlc1xuICAgICAgP3JlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgICAgID90aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgICAgID90aW1pbmdfd2hlZWxfY29uZmlnXG4gICAgICAoKVxuICA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgY2hlY2tfaW52YXJpYW50c1xuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgOyBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXNcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2Zvcl93b3JkX3NpemUgKHdvcmRfc2l6ZSA6IFdvcmRfc2l6ZS50KSA9XG4gIGxldCBtb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvbiBpblxuICBsZXQgYWxhcm1fcHJlY2lzaW9uLCBsZXZlbF9iaXRzID1cbiAgICBtYXRjaCB3b3JkX3NpemUgd2l0aFxuICAgIHwgVzMyIC0+IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQsIFsgMTA7IDEwOyA5IF1cbiAgICB8IFc2NCAtPiBBbGFybV9wcmVjaXNpb24uKGRpdiBhYm91dF9vbmVfbWlsbGlzZWNvbmQgfnBvdzI6MyksIFsgMTQ7IDE1OyA5OyA2IF1cbiAgaW5cbiAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICB+YWxhcm1fcHJlY2lzaW9uXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gbGV2ZWxfYml0cylcbiAgICAoKVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gIGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplIFdvcmRfc2l6ZS53b3JkX3NpemVcbjs7XG5cbmxldCBkZWZhdWx0ID1cbiAgKCogRm9yIFtmaWxlX2Rlc2NyX3dhdGNoZXJdIGFuZCBbbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXSB3ZSBjaG9vc2UgdGhlIGRlZmF1bHQgZm9yIHRoZVxuICAgICBjb21tb24gY2FzZSB0aGF0IFtlcG9sbF0gaXMgYXZhaWxhYmxlLiAgVGhlcmUgaXMgc29tZSBhZGRpdGlvbmFsIGNvZGUgaW5cbiAgICAgW0FzeW5jX3VuaXguQ29uZmlnXSB0aGF0IGNoZWNrcyB3aGV0aGVyIFtlcG9sbF0gaXMgYWN0dWFsbHkgYXZhaWxhYmxlLCBhbmQgaWYgbm90LFxuICAgICB1c2VzIFtzZWxlY3RdIGFuZCBhIHNtYWxsZXIgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMuICopXG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSAoc2VjIDYwLilcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gU29tZSBmYWxzZVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IFNvbWUgZmFsc2VcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gU29tZSBEb19ub3Rfd2F0Y2hcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gU29tZSAoRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy5jcmVhdGVfZXhuIDI1NilcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIEVwb2xsX2lmX3RpbWVyZmRcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgKE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LmNyZWF0ZV9leG4gKHNlYyAwLjA1KSlcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBTb21lIE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy5kZWZhdWx0XG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSAoTWF4X251bV90aHJlYWRzLmNyZWF0ZV9leG4gNTApXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICAgICAgU29tZSAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biA1MDApXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNaW5faW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4pKVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgW11cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IFNvbWUgZmFsc2VcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSAoc2VjIDEuKVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IFNvbWUgSW5oZXJpdFxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBTb21lIGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgZXhhbXBsZSA9XG4gIHsgZGVmYXVsdCB3aXRoXG4gICAgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gU29tZSBEZWJ1Z190YWcuWyBGZDsgU2NoZWR1bGVyIF1cbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPVxuICAgICAgU29tZVxuICAgICAgICAoQ3B1c2V0XG4gICAgICAgICAgIChbIDA7IDE7IDIgXSB8PiBJbnQuU2V0Lm9mX2xpc3QgfD4gVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LkNwdXNldC5jcmVhdGVfZXhuKSlcbiAgfVxuOztcblxubGV0IGVudmlyb25tZW50X3ZhcmlhYmxlID0gXCJBU1lOQ19DT05GSUdcIlxuXG5sZXQgZmllbGRfZGVzY3JpcHRpb25zICgpIDogc3RyaW5nID1cbiAgbGV0IGZpZWxkIHRvX3NleHAgZGVzY3JpcHRpb24gYWMgZmllbGQgPVxuICAgIChGaWVsZC5uYW1lIGZpZWxkLCB0b19zZXhwIChPcHRpb24udmFsdWVfZXhuIChGaWVsZC5nZXQgZmllbGQgZGVmYXVsdCkpLCBkZXNjcmlwdGlvbilcbiAgICA6OiBhY1xuICBpblxuICBsZXQgZmllbGRzID1cbiAgICBGaWVsZHMuZm9sZFxuICAgICAgfmluaXQ6W11cbiAgICAgIH5hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XVxuICAgICAgICAgICBbIHt8XG4gIEJ5IGRlZmF1bHQsIEFzeW5jIHdpbGwgc2VuZCBhbiBleGNlcHRpb24gdG8gdGhlIHRvcGxldmVsIG1vbml0b3JcbiAgaWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+Y2hlY2tfaW52YXJpYW50czpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgdG8gcmVndWxhcmx5IGNoZWNrIGludmFyaWFudHMgb2YgaXRzIGludGVybmFsXG4gIGRhdGEgc3RydWN0dXJlcy4gIFRoaXMgY2FuIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIHlvdXIgcHJvZ3JhbS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIGNhdXNlcyBBc3luYyByb3V0aW5lcyB0byBjaGVjayBpZiB0aGV5IGFyZSBiZWluZyBhY2Nlc3NlZFxuICBmcm9tIHNvbWUgdGhyZWFkIG90aGVyIHRoYW4gdGhlIHRocmVhZCBjdXJyZW50bHkgaG9sZGluZyB0aGUgQXN5bmNcbiAgbG9jaywgd2hpY2ggaXMgbm90IGFsbG93ZWQgYW5kIGNhbiBsZWFkIHRvIHZlcnkgY29uZnVzaW5nIGJlaGF2aW9yLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5kdW1wX2NvcmVfb25fam9iX2RlbGF5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnRdXG4gICAgICAgICAgIFsge3xcbiAgQ2FuIGJlIHNldCB0byBbRG9fbm90X3dhdGNoXSBvcjpcblxuICAgIChXYXRjaCAoKGR1bXBfaWZfZGVsYXllZF9ieSBTUEFOKSAoaG93X3RvX2R1bXAgSE9XKSkpXG5cbiAgSWYgc2V0IHRvIFtXYXRjaF0sIHRoZW4gb24gcHJvZ3JhbSBzdGFydCB0aGlzIHdpbGwgc3RhcnQgYSByZWd1bGFyXG4gIEFzeW5jIGpvYiB0aGF0IGluY3JlbWVudHMgYSBjb3VudGVyLCBhbmQgYSBDIHRocmVhZCB0aGF0IHdpbGxcbiAgZGV0ZWN0IGlmIHRoYXQgam9iIGlzIGRlbGF5ZWQgYnkgW2R1bXBfaWZfZGVsYXllZF9ieV0sIGFuZCBpZiBzbyxcbiAgd2lsbCBjb3JlIGR1bXAgdGhlIHByb2dyYW0uICBJZiBhdmFpbGFibGUsIFsvdXNyL2Jpbi9nY29yZV0gaXNcbiAgdXNlZCBieSBkZWZhdWx0IHRvIGR1bXAgdGhlIGNvcmUsIHdoaWNoIHNob3VsZCBhbGxvdyB0aGUgcHJvZ3JhbVxuICB0byBjb250aW51ZSBydW5uaW5nLiAgT3RoZXJ3aXNlLCBbYWJvcnRdIHdpbGwgYmUgY2FsbGVkIGZyb20gQyxcbiAgd2hpY2ggd2lsbCBraWxsIHRoZSBwcm9ncmFtIHdoaWxlIGNhdXNpbmcgYSBjb3JlIGR1bXAuICBPbmUgY2FuXG4gIGZvcmNlIFthYm9ydF0gb3IgW2djb3JlXSB2aWEgW2hvd190b19kdW1wXSwgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZjpcbiAgW0NhbGxfYWJvcnRdLCBbQ2FsbF9nY29yZV0sIG9yIFtEZWZhdWx0XS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZXBvbGxfbWF4X3JlYWR5X2V2ZW50czpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZWFkeSBldmVudHMgdGhhdCBBc3luYydzIGNhbGwgdG8gW0Vwb2xsLndhaXRdXG4gIHdpbGwgaGFuZGxlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5maWxlX2Rlc2NyX3dhdGNoZXI6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEZpbGVfZGVzY3Jfd2F0Y2hlci50XVxuICAgICAgICAgICBbIHt8XG4gIFRoaXMgZGV0ZXJtaW5lcyB3aGF0IE9TIHN1YnN5c3RlbSBBc3luYyB1c2VzIHRvIHdhdGNoIGZpbGUgZGVzY3JpcHRvcnMgZm9yIGJlaW5nIHJlYWR5LlxuICBUaGUgZGVmYXVsdCBpcyB0byB1c2UgW2Vwb2xsXSBpZiB0aW1lcmZkJ3MgYXJlIHN1cHBvcnRlZCBhbmQgaWYgbm90LCB1c2UgW3NlbGVjdF0uXG5cbiAgQWxsb3dlZCB2YWx1ZXMgYXJlOnx9XG4gICAgICAgICAgIDsgY29uY2F0XG4gICAgICAgICAgICAgICB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgKExpc3QubWFwIEZpbGVfZGVzY3Jfd2F0Y2hlci5saXN0IH5mOkZpbGVfZGVzY3Jfd2F0Y2hlci50b19zdHJpbmcpXG4gICAgICAgICAgIDsge3wuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fb3Blbl9maWxlX2Rlc2NyczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIChmdW4gZGVmYXVsdCAtPlxuICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgICB+XzpcbiAgICAgICAgICAgICAgICAgICAgKGNvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgICBbIFwibWluIFwiXG4gICAgICAgICAgICAgICAgICAgICAgIDsgZGVmYXVsdCB8PiBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMucmF3IHw+IEludC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAgICAgICAgICAgIDsgXCIgW3VsaW1pdCAtbiAtSF1cIlxuICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICA6IHN0cmluZyldKVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgYWxsb3dlZCBhdCBhbnkgb25lIHRpbWUufH0gXSlcbiAgICAgIH5tYXhfbnVtX3RocmVhZHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9udW1fdGhyZWFkcy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgQXN5bmMgd2lsbCBjcmVhdGUgdG8gZG8gYmxvY2tpbmdcbiAgc3lzdGVtIGNhbGxzIGFuZCBoYW5kbGUgY2FsbHMgdG8gW0luX3RocmVhZC5ydW5dLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfaW50ZXJfY3ljbGVfdGltZW91dDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0aGUgc2NoZWR1bGVyIHdpbGwgcGF1c2UgYmV0d2VlbiBjeWNsZXNcbiAgd2hlbiBpdCBoYXMgbm8gam9icyBhbmQgaXMgZ29pbmcgdG8gd2FpdCBmb3IgSS9PLiAgSW4gcHJpbmNpcGxlIG9uZVxuICBkb2Vzbid0IG5lZWQgdGhpcywgYW5kIHdlIGNvdWxkIHVzZSBhbiBpbmZpbml0ZSB0aW1lb3V0LiAgV2UgaW5zdGVhZFxuICB1c2UgYSBzbWFsbCB0aW1lb3V0IChieSBkZWZhdWx0KSwgdG8gYmUgbW9yZSByb2J1c3QgdG8gYnVncyB0aGF0XG4gIGNvdWxkIHByZXZlbnQgQXN5bmMgZnJvbSB3YWtpbmcgdXAgYW5kIHNlcnZpY2luZyBldmVudHMuICBGb3JcbiAgZXhhbXBsZSwgYXMgb2YgMjAxMy0wMSwgdGhlIE9DYW1sIHJ1bnRpbWUgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIGl0XG4gIHRvIG5vdCBuZWNlc3NhcmlseSBydW4gYW4gT0NhbWwgc2lnbmFsIGhhbmRsZXIgaW4gYSB0aW1lbHkgbWFubmVyLlxuICBUaGlzIGluIHR1cm4gY2FuIGNhdXNlIGEgc2ltcGxlIEFzeW5jIHByb2dyYW0gdGhhdCBpcyB3YWl0aW5nIG9uIGFcbiAgc2lnbmFsIHRvIGhhbmcsIHdoZW4gaW4gZmFjdCBpdCBzaG91bGQgaGFuZGxlIHRoZSBzaWduYWwuXG5cbiAgV2UgdXNlIDUwbXMgYXMgdGhlIGRlZmF1bHQgdGltZW91dCwgYmVjYXVzZSBpdCBpcyBpbmZyZXF1ZW50IGVub3VnaFxuICB0byBoYXZlIGEgbmVnbGlnaWJsZSBwZXJmb3JtYW5jZSBpbXBhY3QsIGFuZCBmcmVxdWVudCBlbm91Z2ggdGhhdFxuICB0aGUgbGF0ZW5jeSB3b3VsZCB0eXBpY2FsbHkgYmUgbm90IG5vdGljZWFibGUuICBBbHNvLCA1MG1zIGlzIHdoYXRcbiAgdGhlIE9DYW1sIHRpY2tlciB0aHJlYWQgdXNlcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGpvYnMgdGhhdCB3aWxsIGJlIGRvbmUgYXQgZWFjaCBwcmlvcml0eSB3aXRoaW5cbiAgZWFjaCBBc3luYyBjeWNsZS4gIFRoaXMgbGltaXRzIGhvdyBtYW55IGpvYnMgdGhlIHNjaGVkdWxlciB3aWxsIHJ1blxuICBiZWZvcmUgcGF1c2luZyB0byBjaGVjayBmb3IgSS9PLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5taW5faW50ZXJfY3ljbGVfdGltZW91dDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWluaW11bSB0aW1lb3V0IHRoZSBzY2hlZHVsZXIgd2lsbCBwYXNzIHRvIHRoZSBPUyB3aGVuIGl0IGNoZWNrc1xuICBmb3IgSS9PIGJldHdlZW4gY3ljbGVzLiAgVGhpcyBpcyB6ZXJvIGJ5IGRlZmF1bHQuICBTZXR0aW5nIGl0IHRvIGFcbiAgbm9uemVybyB2YWx1ZSBpcyB1c2VkIHRvIGluY3JlYXNlIHRocmVhZCBmYWlybmVzcyBiZXR3ZWVuIHRoZSBzY2hlZHVsZXJcbiAgYW5kIG90aGVyIHRocmVhZHMuICBBIHBsYXVzaWJsZSBzZXR0aW5nIGlzIDF1cy4gIFRoaXMgaXMgYWxzb1xuICBjb25maWd1cmFibGUgaW4gT0NhbWwgdmlhIFtTY2hlZHVsZXIuc2V0X21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBEZWJ1Z190YWcudCBsaXN0XVxuICAgICAgICAgICBbIHt8XG4gIEEgbGlzdCBvZiB0YWdzIHNwZWNpZnlpbmcgd2hpY2ggQXN5bmMgZnVuY3Rpb25zIHNob3VsZCBwcmludCBkZWJ1Z1xuICBtZXNzYWdlcyB0byBzdGRlcnIuICBFYWNoIHRhZyBpZGVudGlmaWVzIGEgZ3JvdXAgb2YgcmVsYXRlZCBBc3luY1xuICBmdW5jdGlvbnMuICBUaGUgdGFnIFthbGxdIG1lYW5zIHRvIHByaW50IGRlYnVnIG1lc3NhZ2VzIGZvciBhbGxcbiAgZnVuY3Rpb25zLiAgQWxsb3dlZCB2YWx1ZXMgYXJlOlxuXG58fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgKExpc3QubWFwIERlYnVnX3RhZy5saXN0IH5mOihmdW4gZCAtPlxuICAgICAgICAgICAgICAgICAgY29uY2F0IFsgXCIgICAgXCI7IERlYnVnX3RhZy50b19zdHJpbmcgZDsgXCJcXG5cIiBdKSlcbiAgICAgICAgICAgOyB7fFxuICBUdXJuaW5nIG9uIGRlYnVnIG1lc3NhZ2VzIHdpbGwgc3Vic3RhbnRpYWxseSBzbG93IGRvd24gbW9zdCBwcm9ncmFtcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgdGhpcyB3aWxsIGNhdXNlIEFzeW5jIHRvIGtlZXAgaW4gdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRoZVxuICBoaXN0b3J5IG9mIHN0YWNrIGJhY2t0cmFjZXMgKG9idGFpbmVkIHZpYSBbQmFja3RyYWNlLmdldF0pIHRoYXQgbGVkXG4gIHRvIHRoZSBjdXJyZW50IGpvYi4gIElmIGFuIEFzeW5jIGpvYiBoYXMgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbixcbiAgdGhpcyBiYWNrdHJhY2UgaGlzdG9yeSB3aWxsIGJlIHJlY29yZGVkIGluIHRoZSBleGNlcHRpb24uICBJblxuICBwYXJ0aWN1bGFyIHRoZSBoaXN0b3J5IHdpbGwgYXBwZWFyIGluIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gdGhhdFxuICByZWFjaGVzIHRoZSBtYWluIG1vbml0b3IuICBUaGlzIGNhbiBoYXZlIGEgc3Vic3RhbnRpYWwgcGVyZm9ybWFuY2VcbiAgaW1wYWN0LCBib3RoIGluIHJ1bm5pbmcgdGltZSBhbmQgc3BhY2UgdXNhZ2UuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XVxuICAgICAgICAgICBbIHt8XG4gIEJ5IGRlZmF1bHQsIEFzeW5jIHdpbGwgcHJpbnQgYSBtZXNzYWdlIHRvIHN0ZGVyciBldmVyeSBzZWNvbmQgaWZcbiAgdGhlIHRocmVhZCBwb29sIGlzIHN0dWNrIGZvciBsb25nZXIgdGhhbiB0aGlzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHk6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50XVxuICAgICAgICAgICBbIHt8XG4gICBXaGV0aGVyIGFuZCBob3cgdGhyZWFkcyBpbiB0aGUgdGhyZWFkIHBvb2wgc2hvdWxkIGJlIGFmZmluaXRpemVkIHRvIENQVXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnRpbWluZ193aGVlbF9jb25maWc6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWluZ193aGVlbC5Db25maWcudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGlzIHVzZWQgdG8gYWRqdXN0IHRoZSB0aW1lL3NwYWNlIHRyYWRlb2ZmIGluIHRoZSB0aW1pbmcgd2hlZWxcbiAgdXNlZCB0byBpbXBsZW1lbnQgQXN5bmMncyBjbG9jay4gIFRpbWUgaXMgc3BsaXQgaW50byBpbnRlcnZhbHMgb2ZcbiAgc2l6ZSBbYWxhcm1fcHJlY2lzaW9uXSwgYW5kIGFsYXJtcyB3aXRoIHRpbWVzIGluIHRoZSBzYW1lIGludGVydmFsXG4gIGZpcmUgaW4gdGhlIHNhbWUgY3ljbGUuICBMZXZlbCBbaV0gaW4gdGhlIHRpbWluZyB3aGVlbCBoYXMgYW5cbiAgYXJyYXkgb2Ygc2l6ZSBbMl5iXSwgd2hlcmUgW2JdIGlzIHRoZSBbaV0ndGggZW50cnkgaW4gW2xldmVsX2JpdHNdLlxufH1cbiAgICAgICAgICAgXSlcbiAgaW5cbiAgY29uY2F0XG4gICAgKExpc3QubWFwXG4gICAgICAgKExpc3Quc29ydCBmaWVsZHMgfmNvbXBhcmU6KGZ1biAobmFtZTEsIF8sIF8pIChuYW1lMiwgXywgXykgLT5cbiAgICAgICAgICBTdHJpbmcuY29tcGFyZSBuYW1lMSBuYW1lMikpXG4gICAgICAgfmY6KGZ1biAobmFtZSwgZGVmYXVsdCwgZGVzY3JpcHRpb24pIC0+XG4gICAgICAgICBjb25jYXRcbiAgICAgICAgICAgKFwiXFxuXCIgOjogbmFtZSA6OiBcIiAoZGVmYXVsdCBcIiA6OiBTZXhwLnRvX3N0cmluZyBkZWZhdWx0IDo6IFwiKVwiIDo6IGRlc2NyaXB0aW9uKSkpXG47O1xuXG5sZXQgaGVscF9tZXNzYWdlICgpID1cbiAgY29uY2F0XG4gICAgWyBcIlRoZSBcIlxuICAgIDsgZW52aXJvbm1lbnRfdmFyaWFibGVcbiAgICA7IHt8IGVudmlyb25tZW50IHZhcmlhYmxlIGFmZmVjdHMgQXN5bmNcbmluIHZhcmlvdXMgd2F5cy4gIEl0cyB2YWx1ZSBzaG91bGQgYmUgYSBzZXhwIG9mIHRoZSBmb2xsb3dpbmcgZm9ybSxcbndoZXJlIGFsbCBmaWVsZHMgYXJlIG9wdGlvbmFsOlxuXG58fVxuICAgIDsgU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgZXhhbXBsZSlcbiAgICA7IHt8XG5cbkhlcmUgaXMgYW4gZXhwbGFuYXRpb24gb2YgZWFjaCBmaWVsZC5cbnx9XG4gICAgOyBmaWVsZF9kZXNjcmlwdGlvbnMgKClcbiAgICBdXG47O1xuXG5sZXQgdXNhZ2UgKCkgPVxuICBlcHJpbnRmIFwiJXMlIVwiIChoZWxwX21lc3NhZ2UgKCkpO1xuICBleGl0IDFcbjs7XG5cbmxldCB0ID1cbiAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gSW5yaWFfc3lzLmdldGVudiBlbnZpcm9ubWVudF92YXJpYWJsZSkgd2l0aFxuICB8IE5vbmUgLT4gZW1wdHlcbiAgfCBTb21lIFwiXCIgLT4gdXNhZ2UgKClcbiAgfCBTb21lIHN0cmluZyAtPlxuICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiB0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHN0cmluZykpIHdpdGhcbiAgICAgfCBPayB0IC0+IHRcbiAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICBlcHJpbnRmXG4gICAgICAgICBcIiVzXFxuXFxuXCJcbiAgICAgICAgIChTZXhwLnRvX3N0cmluZ19odW1cbiAgICAgICAgICAgIChFcnJvci5zZXhwX29mX3RcbiAgICAgICAgICAgICAgIChFcnJvci5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICBcImludmFsaWQgdmFsdWUgZm9yICVzIGVudmlyb25tZW50IHZhcmlhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50X3ZhcmlhYmxlKVxuICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICBbJXNleHBfb2Y6IGV4bl0pKSk7XG4gICAgICAgdXNhZ2UgKCkpXG47O1xuXG5tb2R1bGUgUHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gc3RydWN0XG4gIGxldCBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgdGFnID1cbiAgICBtYXRjaCB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGwgLT4gTGlzdC5tZW0gbCB0YWcgfmVxdWFsOkRlYnVnX3RhZy5lcXVhbFxuICA7O1xuXG4gIGxldCBhbGwgPSBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgQWxsXG4gIGxldCBkZWJ1ZyB0YWcgPSBhbGwgfHwgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZ1xuICBsZXQgY2xvY2sgPSBkZWJ1ZyBDbG9ja1xuICBsZXQgZmQgPSBkZWJ1ZyBGZFxuICBsZXQgZmlsZV9kZXNjcl93YXRjaGVyID0gZGVidWcgRmlsZV9kZXNjcl93YXRjaGVyXG4gIGxldCBmaW5hbGl6ZXJzID0gZGVidWcgRmluYWxpemVyc1xuICBsZXQgaW50ZXJydXB0b3IgPSBkZWJ1ZyBJbnRlcnJ1cHRvclxuICBsZXQgbW9uaXRvciA9IGRlYnVnIE1vbml0b3JcbiAgbGV0IG1vbml0b3Jfc2VuZF9leG4gPSBkZWJ1ZyBNb25pdG9yX3NlbmRfZXhuXG4gIGxldCBwYXJhbGxlbCA9IGRlYnVnIFBhcmFsbGVsXG4gIGxldCByZWFkZXIgPSBkZWJ1ZyBSZWFkZXJcbiAgbGV0IHNjaGVkdWxlciA9IGRlYnVnIFNjaGVkdWxlclxuICBsZXQgc2h1dGRvd24gPSBkZWJ1ZyBTaHV0ZG93blxuICBsZXQgdGhyZWFkX3Bvb2wgPSBkZWJ1ZyBUaHJlYWRfcG9vbFxuICBsZXQgdGhyZWFkX3NhZmUgPSBkZWJ1ZyBUaHJlYWRfc2FmZVxuICBsZXQgd3JpdGVyID0gZGVidWcgV3JpdGVyXG5lbmRcblxubGV0ICggISEgKSBmaWVsZCA9XG4gIE9wdGlvbi52YWx1ZSAoRmllbGQuZ2V0IGZpZWxkIHQpIH5kZWZhdWx0OihPcHRpb24udmFsdWVfZXhuIChGaWVsZC5nZXQgZmllbGQgZGVmYXVsdCkpXG47O1xuXG5sZXQgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gISFGaWVsZHMuYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG5sZXQgY2hlY2tfaW52YXJpYW50cyA9ICEhRmllbGRzLmNoZWNrX2ludmFyaWFudHNcbmxldCBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSAhIUZpZWxkcy5kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbmxldCBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gISFGaWVsZHMuZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xubGV0IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9ICEhRmllbGRzLnRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxubGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9ICEhRmllbGRzLmZpbGVfZGVzY3Jfd2F0Y2hlclxubGV0IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSAhIUZpZWxkcy5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbmxldCBtYXhfbnVtX3RocmVhZHMgPSAhIUZpZWxkcy5tYXhfbnVtX3RocmVhZHNcbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9ICEhRmllbGRzLm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5sZXQgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSAhIUZpZWxkcy5taW5faW50ZXJfY3ljbGVfdGltZW91dFxubGV0IHJlY29yZF9iYWNrdHJhY2VzID0gISFGaWVsZHMucmVjb3JkX2JhY2t0cmFjZXNcbmxldCByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gISFGaWVsZHMucmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IHRpbWluZ193aGVlbF9jb25maWcgPSAhIUZpZWxkcy50aW1pbmdfd2hlZWxfY29uZmlnXG5sZXQgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9ICEhRmllbGRzLmR1bXBfY29yZV9vbl9qb2JfZGVsYXlcblxubGV0IHQgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgY2hlY2tfaW52YXJpYW50c1xuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IFNvbWUgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IFNvbWUgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IFNvbWUgZmlsZV9kZXNjcl93YXRjaGVyXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBTb21lIG1heF9udW1fdGhyZWFkc1xuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gU29tZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHQucHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBTb21lIHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IHRhc2tfaWQgPSByZWYgKGZ1biAoKSAtPiBTZXhwLkF0b20gXCI8bm8gdGFzayBpZD5cIilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSByZWZcblxuKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgW3BoeXNfc2FtZV0gYXMgdGhpcyBvbmUuXG5cbiAgIHRoaXMgY29kZSBpcyBkdXBsaWNhdGVkIGluIE9wdGlvbl9hcnJheS5DaGVhcF9vcHRpb24sIGFuZCBpZiB3ZSBmaW5kIHlldCBhbm90aGVyXG4gICBwbGFjZSB3aGVyZSB3ZSB3YW50IGl0IHdlIHNob3VsZCByZWNvbnNpZGVyIG1ha2luZyBpdCBzaGFyZWQuICopXG5sZXQgbm9uZSA9IE9iai5vYmogKE9iai5uZXdfYmxvY2sgT2JqLmFic3RyYWN0X3RhZyAxKVxubGV0IGNyZWF0ZSAoKSA9IHJlZiBub25lXG5sZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCAheCBub25lXG5sZXQgaXNfc29tZSB4ID0gbm90IChpc19ub25lIHgpXG5sZXQgZ2V0X3NvbWVfZXhuIHggPSBpZiBpc19ub25lIHggdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk1vcHRpb24uZ2V0X3NvbWVfZXhuXCJdIGVsc2UgIXhcbmxldCBnZXQgdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lICF0XG5sZXQgdW5zYWZlX2dldCB0ID0gIXRcbmxldCBzZXRfc29tZSB0IHYgPSB0IDo9IHZcbmxldCBzZXRfbm9uZSB0ID0gdCA6PSBub25lXG5cbmxldCBzZXQgdCB2ID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgTm9uZSAtPiBzZXRfbm9uZSB0XG4gIHwgU29tZSB2IC0+IHNldF9zb21lIHQgdlxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIG9wdGlvbildXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgT3B0aW9uLml0ZXIgKGdldCB0KSB+ZjppbnZhcmlhbnRfYSlcbjs7XG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfZ2V0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcbm1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbigqIFRoaXMgcG9vbCBob2xkcyBub2RlcyB0aGF0IHdvdWxkIGJlIHJlcHJlc2VudGVkIG1vcmUgdHJhZGl0aW9uYWxseSBhczpcblxuICAge1tcbiAgICAgdHlwZSAnYSB0ID1cbiAgICAgICB8IEVtcHR5XG4gICAgICAgfCBIZWFwIG9mICdhICogJ2EgdCBsaXN0IF19XG5cbiAgIFdlIHdpbGwgcmVwcmVzZW50IHRoZW0gYXMgYSBsZWZ0LWNoaWxkLCByaWdodC1zaWJsaW5nIHRyZWUgaW4gYSB0cmlwbGV0XG4gICAodmFsdWUgKiBsZWZ0X2NoaWxkICogcmlnaHRfc2libGluZykuICBUaGUgbGVmdCBjaGlsZCBhbmQgYWxsIHJpZ2h0IHNpYmxpbmdzXG4gICBvZiB0aGUgbGVmdCBjaGlsZCBmb3JtIGEgbGlua2VkIGxpc3QgcmVwcmVzZW50aW5nIHRoZSBzdWJoZWFwcyBvZiBhIGdpdmVuIGhlYXA6XG5cbiAgIHt2XG4gICAgICAgICBBXG4gICAgICAgIC9cbiAgICAgICBCIC0+IEMgLT4gRCAtPiBFIC0+IEZcbiAgICAgIC8gICAgICAgICAvICAgICAgICAgL1xuICAgICBHICAgICAgICAgSC0+SS0+SiAgIEstPkxcbiAgIHZ9ICopXG5cbm1vZHVsZSBOb2RlIDogc2lnXG4gICgqIEV4cG9zaW5nIFtwcml2YXRlIGludF0gaXMgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCwgYmVjYXVzZSBpdCBhbGxvd3NcbiAgICAgdGhlIGNvbXBpbGVyIHRvIHNraXAgdGhlIHdyaXRlIGJhcnJpZXIuICopXG5cbiAgdHlwZSAnYSB0ID0gcHJpdmF0ZSBpbnRcblxuICBtb2R1bGUgSWQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIGVuZFxuXG4gIG1vZHVsZSBQb29sIDogc2lnXG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdFxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNyZWF0ZSA6IG1pbl9zaXplOmludCAtPiAnYSB0XG4gICAgdmFsIGlzX2Z1bGwgOiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgZ3JvdyA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSBub2RlIC0+ICdhIG5vZGUgKiAnYSB0XG4gIGVuZFxuXG4gICgqKiBbYWxsb2NhdGUgdiB+cG9vbF0gYWxsb2NhdGVzIGEgbmV3IG5vZGUgZnJvbSB0aGUgcG9vbCB3aXRoIG5vIGNoaWxkIG9yIHNpYmxpbmcgKilcbiAgdmFsIGFsbG9jYXRlIDogJ2EgLT4gcG9vbDonYSBQb29sLnQgLT4gaWQ6SWQudCAtPiAnYSB0XG5cbiAgKCoqIFtmcmVlIHQgfnBvb2xdIGZyZWVzIFt0XSBmb3IgcmV1c2UuICBJdCBpcyBhbiBlcnJvciB0byBhY2Nlc3MgW3RdIGFmdGVyIHRoaXMuICopXG4gIHZhbCBmcmVlIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5cbiAgKCoqIGEgc3BlY2lhbCBbdF0gdGhhdCByZXByZXNlbnRzIHRoZSBlbXB0eSBub2RlICopXG4gIHZhbCBlbXB0eSA6IHVuaXQgLT4gJ2EgdFxuXG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICgqKiBbdmFsdWVfZXhuIHQgfnBvb2xdIHJldHVybiB0aGUgdmFsdWUgb2YgW3RdLCByYWlzZSBpZiBbaXNfZW1wdHkgdF0gKilcbiAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2FcblxuICB2YWwgaWQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IElkLnRcbiAgdmFsIGNoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG4gIHZhbCBzaWJsaW5nIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtwcmV2IHRdIGlzIGVpdGhlciB0aGUgcGFyZW50IG9mIFt0XSBvciB0aGUgc2libGluZyBpbW1lZGlhdGVseSBsZWZ0IG9mIFt0XSAqKVxuICB2YWwgcHJldiA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbYWRkX2NoaWxkIHQgfmNoaWxkIH5wb29sXSBBZGQgYSBjaGlsZCB0byBbdF0sIHByZXNlcnZpbmcgZXhpc3RpbmcgY2hpbGRyZW4gYXNcbiAgICAgIHNpYmxpbmdzIG9mIFtjaGlsZF0uIFt0XSBhbmQgW2NoaWxkXSBzaG91bGQgbm90IGJlIGVtcHR5IGFuZCBbY2hpbGRdIHNob3VsZCBoYXZlIG5vXG4gICAgICBzaWJsaW5nIGFuZCBoYXZlIG5vIHByZXYgbm9kZS4gKilcbiAgdmFsIGFkZF9jaGlsZCA6ICdhIHQgLT4gY2hpbGQ6J2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5cbiAgKCoqIGRpc2Nvbm5lY3QgYW5kIHJldHVybiB0aGUgc2libGluZyAqKVxuICB2YWwgZGlzY29ubmVjdF9zaWJsaW5nIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIGRpc2Nvbm5lY3QgYW5kIHJldHVybiB0aGUgY2hpbGQgKilcbiAgdmFsIGRpc2Nvbm5lY3RfY2hpbGQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2RldGFjaCB0IH5wb29sXSByZW1vdmVzIFt0XSBmcm9tIHRoZSB0cmVlLCBhZGp1c3RpbmcgcG9pbnRlcnMgYXJvdW5kIGl0LiBBZnRlclxuICAgICAgW2RldGFjaF0sIFt0XSBpcyB0aGUgcm9vdCBvZiBhIHN0YW5kYWxvbmUgaGVhcCwgd2hpY2ggaXMgZGV0YWNoZWQgZnJvbSB0aGUgb3JpZ2luYWxcbiAgICAgIGhlYXAuICopXG4gIHZhbCBkZXRhY2ggOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgSWQgPSBJbnRcblxuICBsZXQgZHVtbXlfaWQgOiBJZC50ID0gLTFcblxuICB0eXBlICdhIG5vZGUgPVxuICAgICgnYSwgJ2Egbm9kZSBQb2ludGVyLnQsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgSWQudCkgUG9vbC5TbG90cy50NVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5vZGUgUG9pbnRlci50XG5cbiAgbGV0IGVtcHR5ID0gUG9pbnRlci5udWxsXG4gIGxldCBpc19lbXB0eSA9IFBvaW50ZXIuaXNfbnVsbFxuICBsZXQgZXF1YWwgPSBQb2ludGVyLnBoeXNfZXF1YWxcbiAgbGV0IHZhbHVlIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQwXG4gIGxldCBjaGlsZCB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MVxuICBsZXQgc2libGluZyB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MlxuICBsZXQgcHJldiB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50M1xuICBsZXQgaWQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDRcblxuICAoKiBsZXQgc2V0X3ZhbHVlICAgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MCB2ICopXG4gIGxldCBzZXRfY2hpbGQgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MSB2XG4gIGxldCBzZXRfc2libGluZyB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQyIHZcbiAgbGV0IHNldF9wcmV2IHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDMgdlxuXG4gIGxldCB2YWx1ZV9leG4gdCB+cG9vbCA9XG4gICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgICB2YWx1ZSB0IH5wb29sXG4gIDs7XG5cbiAgbGV0IGFsbG9jYXRlIHZhbHVlIH5wb29sIH5pZCA9IFBvb2wubmV3NSBwb29sIHZhbHVlIChlbXB0eSAoKSkgKGVtcHR5ICgpKSAoZW1wdHkgKCkpIGlkXG4gIGxldCBmcmVlIHQgfnBvb2wgPSBQb29sLnVuc2FmZV9mcmVlIHBvb2wgdFxuXG4gIGxldCBkaXNjb25uZWN0X3NpYmxpbmcgdCB+cG9vbCA9XG4gICAgbGV0IHNpYmxpbmcgPSBzaWJsaW5nIHQgfnBvb2wgaW5cbiAgICBpZiBub3QgKGlzX2VtcHR5IHNpYmxpbmcpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfc2libGluZyB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICBzZXRfcHJldiBzaWJsaW5nIChlbXB0eSAoKSkgfnBvb2wpO1xuICAgIHNpYmxpbmdcbiAgOztcblxuICBsZXQgZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sID1cbiAgICBsZXQgY2hpbGQgPSBjaGlsZCB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBjaGlsZClcbiAgICB0aGVuIChcbiAgICAgIHNldF9jaGlsZCB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICBzZXRfcHJldiBjaGlsZCAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBjaGlsZFxuICA7O1xuXG4gIGxldCBhZGRfY2hpbGQgdCB+Y2hpbGQ6bmV3X2NoaWxkIH5wb29sID1cbiAgICAoKiBhc3NlcnRpb25zIHdlIHdvdWxkIG1ha2UsIGJ1dCBmb3Igc3BlZWQ6XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgICAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgbmV3X2NoaWxkKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAoc2libGluZyBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAgICBhc3NlcnQgKGlzX2VtcHR5IChwcmV2IG5ld19jaGlsZCB+cG9vbCkpO1xuICAgICopXG4gICAgbGV0IGN1cnJlbnRfY2hpbGQgPSBkaXNjb25uZWN0X2NoaWxkIHQgfnBvb2wgaW5cbiAgICAoKiBhZGQgW25ld19jaGlsZF0gdG8gdGhlIGxpc3Qgb2YgW3RdJ3MgY2hpbGRyZW4gKHdoaWNoIG1heSBiZSBlbXB0eSkgKilcbiAgICBzZXRfc2libGluZyBuZXdfY2hpbGQgY3VycmVudF9jaGlsZCB+cG9vbDtcbiAgICBpZiBub3QgKGlzX2VtcHR5IGN1cnJlbnRfY2hpbGQpIHRoZW4gc2V0X3ByZXYgY3VycmVudF9jaGlsZCBuZXdfY2hpbGQgfnBvb2w7XG4gICAgc2V0X2NoaWxkIHQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9wcmV2IG5ld19jaGlsZCB0IH5wb29sXG4gIDs7XG5cbiAgbGV0IGRldGFjaCB0IH5wb29sID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcHJldiA9IHByZXYgdCB+cG9vbCBpblxuICAgICAgaWYgbm90IChpc19lbXB0eSBwcmV2KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCByZWxhdGlvbl90b19wcmV2ID0gaWYgZXF1YWwgdCAoY2hpbGQgcHJldiB+cG9vbCkgdGhlbiBgY2hpbGQgZWxzZSBgc2libGluZyBpblxuICAgICAgICBzZXRfcHJldiB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICAgIGxldCBzaWJsaW5nID0gZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgaW5cbiAgICAgICAgKG1hdGNoIHJlbGF0aW9uX3RvX3ByZXYgd2l0aFxuICAgICAgICAgfCBgY2hpbGQgLT4gc2V0X2NoaWxkIHByZXYgc2libGluZyB+cG9vbFxuICAgICAgICAgfCBgc2libGluZyAtPiBzZXRfc2libGluZyBwcmV2IHNpYmxpbmcgfnBvb2wpO1xuICAgICAgICBpZiBub3QgKGlzX2VtcHR5IHNpYmxpbmcpIHRoZW4gc2V0X3ByZXYgc2libGluZyBwcmV2IH5wb29sKSlcbiAgOztcblxuICBtb2R1bGUgUG9vbCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG5vZGUgUG9vbC50XG4gICAgdHlwZSBub25yZWMgJ2Egbm9kZSA9ICdhIG5vZGUgUG9pbnRlci50XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIGEpIH5taW5fc2l6ZTpjYXBhY2l0eSA6IGEgdCA9XG4gICAgICBQb29sLmNyZWF0ZVxuICAgICAgICBQb29sLlNsb3RzLnQ1XG4gICAgICAgIH5jYXBhY2l0eVxuICAgICAgICB+ZHVtbXk6XG4gICAgICAgICAgKCAoT2JqLm1hZ2ljIE5vbmUgOiBhKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgZHVtbXlfaWQgKVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gUG9vbC5pc19mdWxsIHRcbiAgICBsZXQgbGVuZ3RoIHQgPSBQb29sLmxlbmd0aCB0XG4gICAgbGV0IGdyb3cgdCA9IFBvb2wuZ3JvdyB0XG5cbiAgICBsZXQgY29weSB0IHN0YXJ0ID1cbiAgICAgIGxldCB0JyA9IGNyZWF0ZSB+bWluX3NpemU6KFBvb2wuY2FwYWNpdHkgdCkgaW5cbiAgICAgIGxldCBjb3B5X25vZGUgbm9kZSB0b192aXNpdCA9XG4gICAgICAgIGlmIGlzX2VtcHR5IG5vZGVcbiAgICAgICAgdGhlbiBlbXB0eSAoKSwgdG9fdmlzaXRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogd2UgdXNlIHRoZSBzYW1lIGlkLCBidXQgdGhhdCdzIG9rIHNpbmNlIGlkcyBzaG91bGQgYmUgdW5pcXVlIHBlciBoZWFwICopXG4gICAgICAgICAgbGV0IG5ld19ub2RlID1cbiAgICAgICAgICAgIGFsbG9jYXRlICh2YWx1ZV9leG4gbm9kZSB+cG9vbDp0KSB+cG9vbDp0JyB+aWQ6KGlkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0b192aXNpdCA9XG4gICAgICAgICAgICAobmV3X25vZGUsIGBjaGlsZCwgY2hpbGQgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogKG5ld19ub2RlLCBgc2libGluZywgc2libGluZyBub2RlIH5wb29sOnQpXG4gICAgICAgICAgICA6OiB0b192aXNpdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbmV3X25vZGUsIHRvX3Zpc2l0KVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IChub2RlX3RvX3VwZGF0ZSwgc2xvdCwgbm9kZV90b19jb3B5KSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IG5ld19ub2RlLCB0b192aXNpdCA9IGNvcHlfbm9kZSBub2RlX3RvX2NvcHkgcmVzdCBpblxuICAgICAgICAgIChtYXRjaCBzbG90IHdpdGhcbiAgICAgICAgICAgfCBgY2hpbGQgLT4gc2V0X2NoaWxkIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnXG4gICAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgbm9kZV90b191cGRhdGUgbmV3X25vZGUgfnBvb2w6dCcpO1xuICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgbmV3X25vZGUpIHRoZW4gc2V0X3ByZXYgbmV3X25vZGUgbm9kZV90b191cGRhdGUgfnBvb2w6dCc7XG4gICAgICAgICAgbG9vcCB0b192aXNpdFxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3RhcnQsIHRvX3Zpc2l0ID0gY29weV9ub2RlIHN0YXJ0IFtdIGluXG4gICAgICBsb29wIHRvX3Zpc2l0O1xuICAgICAgbmV3X3N0YXJ0LCB0J1xuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogY21wIGlzIHBsYWNlZCBmaXJzdCB0byBzaG9ydC1jaXJjdWl0IHBvbHltb3JwaGljIGNvbXBhcmUgKilcbiAgICBjbXAgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBtdXRhYmxlIHBvb2wgOiAnYSBOb2RlLlBvb2wudFxuICA7ICgqIGludmFyaWFudDogIFtyb290XSBuZXZlciBoYXMgYSBzaWJsaW5nICopXG4gICAgbXV0YWJsZSByb290IDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIDogaW50XG4gIH1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCAobm9kZSwgZXhwZWN0ZWRfcHJldiwgbWF5YmVfcGFyZW50X3ZhbHVlKSA6OiByZXN0IC0+XG4gICAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgbm9kZSlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGhpc192YWx1ZSA9IE5vZGUudmFsdWVfZXhuIG5vZGUgfnBvb2w6dC5wb29sIGluXG4gICAgICAgIGFzc2VydCAoTm9kZS5lcXVhbCAoTm9kZS5wcmV2IG5vZGUgfnBvb2w6dC5wb29sKSBleHBlY3RlZF9wcmV2KTtcbiAgICAgICAgT3B0aW9uLml0ZXIgbWF5YmVfcGFyZW50X3ZhbHVlIH5mOihmdW4gcGFyZW50X3ZhbHVlIC0+XG4gICAgICAgICAgYXNzZXJ0ICh0LmNtcCBwYXJlbnRfdmFsdWUgdGhpc192YWx1ZSA8PSAwKSk7XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoKE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIFNvbWUgdGhpc192YWx1ZSlcbiAgICAgICAgICAgOjogKE5vZGUuc2libGluZyBub2RlIH5wb29sOnQucG9vbCwgbm9kZSwgbWF5YmVfcGFyZW50X3ZhbHVlKVxuICAgICAgICAgICA6OiByZXN0KSlcbiAgICAgIGVsc2UgbG9vcCByZXN0XG4gIGluXG4gIGFzc2VydCAoTm9kZS5pc19lbXB0eSB0LnJvb3QgfHwgTm9kZS5pc19lbXB0eSAoTm9kZS5zaWJsaW5nIHQucm9vdCB+cG9vbDp0LnBvb2wpKTtcbiAgbG9vcCBbIHQucm9vdCwgTm9kZS5lbXB0eSAoKSwgTm9uZSBdXG47O1xuXG5sZXQgY3JlYXRlID8obWluX3NpemUgPSAxKSB+Y21wICgpID1cbiAgeyBjbXBcbiAgOyBwb29sID0gTm9kZS5Qb29sLmNyZWF0ZSB+bWluX3NpemVcbiAgOyByb290ID0gTm9kZS5lbXB0eSAoKVxuICA7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgPSAwXG4gIH1cbjs7XG5cbmxldCBjb3B5IHsgY21wOyBwb29sOyByb290OyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIH0gPVxuICBsZXQgcm9vdCwgcG9vbCA9IE5vZGUuUG9vbC5jb3B5IHBvb2wgcm9vdCBpblxuICB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9XG47O1xuXG5sZXQgYWxsb2NhdGUgdCB2ID1cbiAgaWYgTm9kZS5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIE5vZGUuUG9vbC5ncm93IHQucG9vbDtcbiAgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzIDwtIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyArIDE7XG4gIE5vZGUuYWxsb2NhdGUgdiB+cG9vbDp0LnBvb2wgfmlkOihOb2RlLklkLm9mX2ludCB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMpXG47O1xuXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIG1hdGNoIHJvb3QxLCByb290MiB3aXRoXG4gICAgIHwgTm9uZSwgaCB8IGgsIE5vbmUgLT4gaFxuICAgICB8IFNvbWUgKE5vZGUgKHYxLCBjaGlsZHJlbjEpKSwgU29tZSAoTm9kZSAodjIsIGNoaWxkcmVuMikpIC0+XG4gICAgICAgaWYgdjEgPCB2MlxuICAgICAgIHRoZW4gU29tZSAoTm9kZSAodjEsIHJvb3QyIDo6IGNoaWxkcmVuMSkpXG4gICAgICAgZWxzZSBTb21lIChOb2RlICh2Miwgcm9vdDEgOjogY2hpbGRyZW4yKSlcbiAgIF19XG5cbiAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBuZWl0aGVyIHJvb3QgaGFzIGEgcHJldiBub2RlICh1c3VhbGx5IGJlY2F1c2UgdGhlIGlucHV0cyBjb21lXG4gICBmcm9tIFtkaXNjb25uZWN0XypdIG9yIGFyZSB0aGUgdG9wIG9mIHRoZSBoZWFwIG9yIGFyZSB0aGUgb3V0cHV0IG9mIHRoaXMgZnVuY3Rpb24pLiAqKVxubGV0IG1lcmdlIHQgcm9vdDEgcm9vdDIgPVxuICBpZiBOb2RlLmlzX2VtcHR5IHJvb3QxXG4gIHRoZW4gcm9vdDJcbiAgZWxzZSBpZiBOb2RlLmlzX2VtcHR5IHJvb3QyXG4gIHRoZW4gcm9vdDFcbiAgZWxzZSAoXG4gICAgbGV0IGFkZF9jaGlsZCB0IG5vZGUgfmNoaWxkID1cbiAgICAgIE5vZGUuYWRkX2NoaWxkIG5vZGUgfnBvb2w6dC5wb29sIH5jaGlsZDtcbiAgICAgIG5vZGVcbiAgICBpblxuICAgIGxldCB2MSA9IE5vZGUudmFsdWVfZXhuIHJvb3QxIH5wb29sOnQucG9vbCBpblxuICAgIGxldCB2MiA9IE5vZGUudmFsdWVfZXhuIHJvb3QyIH5wb29sOnQucG9vbCBpblxuICAgIGlmIHQuY21wIHYxIHYyIDwgMFxuICAgIHRoZW4gYWRkX2NoaWxkIHQgcm9vdDEgfmNoaWxkOnJvb3QyXG4gICAgZWxzZSBhZGRfY2hpbGQgdCByb290MiB+Y2hpbGQ6cm9vdDEpXG47O1xuXG5sZXQgdG9wX2V4biB0ID1cbiAgaWYgTm9kZS5pc19lbXB0eSB0LnJvb3RcbiAgdGhlbiBmYWlsd2l0aCBcIkhlYXAudG9wX2V4biBjYWxsZWQgb24gYW4gZW1wdHkgaGVhcFwiXG4gIGVsc2UgTm9kZS52YWx1ZV9leG4gdC5yb290IH5wb29sOnQucG9vbFxuOztcblxubGV0IHRvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX2V4biB0KVxuXG5sZXQgYWRkX25vZGUgdCB2ID1cbiAgbGV0IG5vZGUgPSBhbGxvY2F0ZSB0IHYgaW5cbiAgdC5yb290IDwtIG1lcmdlIHQgdC5yb290IG5vZGU7XG4gIG5vZGVcbjs7XG5cbmxldCBhZGQgdCB2ID0gaWdub3JlIChhZGRfbm9kZSB0IHYgOiBfIE5vZGUudClcblxuKCogW21lcmdlX3BhaXJzXSB0YWtlcyBhIGxpc3Qgb2YgaGVhcCByb290cyBhbmQgbWVyZ2VzIGNvbnNlY3V0aXZlIHBhaXJzLCByZWR1Y2luZyB0aGVcbiAgIGxpc3Qgb2YgbGVuZ3RoIG4gdG8gbi8yLiAgVGhlbiBpdCBtZXJnZXMgdGhlIG1lcmdlZCBwYWlycyBpbnRvIGEgc2luZ2xlIGhlYXAuICBPbmVcbiAgIGludHVpdGlvbiBpcyB0aGF0IHRoaXMgaXMgc29tZXdoYXQgbGlrZSBidWlsZGluZyBhIHNpbmdsZSBsZXZlbCBvZiBhIGJpbmFyeSB0cmVlLlxuXG4gICBUaGUgb3V0cHV0IGhlYXAgZG9lcyBub3QgY29udGFpbiB0aGUgdmFsdWUgdGhhdCB3YXMgYXQgdGhlIHJvb3Qgb2YgdGhlIGlucHV0IGhlYXAuXG5cbiAgIFdlIGJyZWFrIHRoZSBmdW5jdGlvbiBpbnRvIHR3byBwYXJ0cy4gIEEgZmlyc3Qgc3RhZ2UgdGhhdCBpcyB3aWxsaW5nIHRvIHVzZSBsaW1pdGVkXG4gICBzdGFjayBpbnN0ZWFkIG9mIGhlYXAgYWxsb2NhdGlvbiBmb3IgYm9va2tlZXBpbmcsIGFuZCBhIHNlY29uZCBzdGFnZSB0aGF0IHNoaWZ0cyB0b1xuICAgdXNpbmcgYSBsaXN0IGFzIGFuIGFjY3VtdWxhdG9yIGlmIHdlIGdvIHRvbyBkZWVwLlxuXG4gICBUaGlzIGNhbiBiZSBtYWRlIHRhaWwgcmVjdXJzaXZlIGFuZCBub24tYWxsb2NhdGluZyBieSBzdGFydGluZyB3aXRoIGFuIGVtcHR5IGhlYXAgYW5kXG4gICBtZXJnaW5nIG1lcmdlZCBwYWlycyBpbnRvIGl0LiBVbmZvcnR1bmF0ZWx5IHRoaXMgXCJsZWZ0IGZvbGRcIiB2ZXJzaW9uIGlzIG5vdCB3aGF0IGlzXG4gICBkZXNjcmliZWQgaW4gdGhlIG9yaWdpbmFsIHBhcGVyIGJ5IEZyZWRtYW4gZXQgYWwuOyB0aGV5IHNwZWNpZmljYWxseSBzYXkgdGhhdFxuICAgY2hpbGRyZW4gc2hvdWxkIGJlIG1lcmdlZCB0b2dldGhlciBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3QgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgIGxpc3QuIChbbWVyZ2VdIGlzIG5vdCBhc3NvY2lhdGl2ZSwgc28gb3JkZXIgbWF0dGVycy4pXG4qKVxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgIHwgW2hlYWRdIC0+IGhlYWQgOjogYWNjXG4gICAgICAgfCBoZWFkIDo6IG5leHQxIDo6IG5leHQyIC0+IGxvb3AgKG1lcmdlIGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MlxuICAgICBpblxuICAgICBtYXRjaCBsb29wIFtdIGNoaWxkcmVuIHdpdGhcbiAgICAgfCBbXSAtPiBOb25lXG4gICAgIHwgW2hdIC0+IFNvbWUgaFxuICAgICB8IHggOjogeHMgLT4gU29tZSAoTGlzdC5mb2xkIHhzIH5pbml0OnggfmY6bWVyZ2UpXG4gICBdfVxuKilcbmxldCBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZCA9XG4gIGxldCByZWMgbG9vcCBhY2MgaGVhZCA9XG4gICAgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0MSA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIGhlYWQgfnBvb2w6dC5wb29sIGluXG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5leHQxXG4gICAgICB0aGVuIGhlYWQgOjogYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgIGxvb3AgKG1lcmdlIHQgaGVhZCBuZXh0MSA6OiBhY2MpIG5leHQyKSlcbiAgaW5cbiAgbWF0Y2ggbG9vcCBbXSBoZWFkIHdpdGhcbiAgfCBbXSAtPiBOb2RlLmVtcHR5ICgpXG4gIHwgWyBoIF0gLT4gaFxuICB8IHggOjogeHMgLT4gTGlzdC5mb2xkIHhzIH5pbml0OnggfmY6KGZ1biBhY2MgaGVhcCAtPiBtZXJnZSB0IGFjYyBoZWFwKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCB0LnJvb3Qgd2l0aFxuICAgICB8IE5vZGUgKF8sIGNoaWxkcmVuKSAtPlxuICAgICAgIGxldCByZWMgbG9vcCBkZXB0aCBjaGlsZHJlbiA9XG4gICAgICAgICBpZiBkZXB0aCA+PSBtYXhfc3RhY2tfZGVwdGhcbiAgICAgICAgIHRoZW4gYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGNoaWxkZW5cbiAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgfCBbaGVhZF0gLT4gU29tZSBoZWFkXG4gICAgICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPlxuICAgICAgICAgICAgIG1lcmdlIChtZXJnZSBoZWFkIG5leHQxKSAobG9vcCAoZGVwdGggKyAxKSBuZXh0MilcbiAgICAgICAgIGVuZFxuICAgICAgIGluXG4gICAgICAgbG9vcCAwIGNoaWxkcmVuXG4gICBdfVxuKilcbmxldCBtZXJnZV9wYWlycyA9XG4gIGxldCBtYXhfc3RhY2tfZGVwdGggPSAxXzAwMCBpblxuICBsZXQgcmVjIGxvb3AgdCBkZXB0aCBoZWFkID1cbiAgICBpZiBkZXB0aCA+PSBtYXhfc3RhY2tfZGVwdGhcbiAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBoZWFkXG4gICAgZWxzZSBpZiBOb2RlLmlzX2VtcHR5IGhlYWRcbiAgICB0aGVuIGhlYWRcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0MSA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIGhlYWQgfnBvb2w6dC5wb29sIGluXG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5leHQxXG4gICAgICB0aGVuIGhlYWRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV4dDIgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBuZXh0MSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgKCogbWVyZ2UgdGhlIGZpcnN0IHR3byBub2RlcyBpbiBvdXIgbGlzdCwgYW5kIHRoZW4gbWVyZ2UgdGhlIHJlc3VsdCB3aXRoIHRoZVxuICAgICAgICAgICByZXN1bHQgb2YgcmVjdXJzaXZlbHkgY2FsbGluZyBtZXJnZV9wYWlycyBvbiB0aGUgdGFpbCAqKVxuICAgICAgICBtZXJnZSB0IChtZXJnZSB0IGhlYWQgbmV4dDEpIChsb29wIHQgKGRlcHRoICsgMSkgbmV4dDIpKSlcbiAgaW5cbiAgZnVuIHQgaGVhZCAtPiBsb29wIHQgMCBoZWFkXG47O1xuXG5sZXQgcmVtb3ZlX25vbl9lbXB0eSB0IG5vZGUgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBOb2RlLmRldGFjaCBub2RlIH5wb29sO1xuICBsZXQgbWVyZ2VkX2NoaWxkcmVuID0gbWVyZ2VfcGFpcnMgdCAoTm9kZS5kaXNjb25uZWN0X2NoaWxkIG5vZGUgfnBvb2wpIGluXG4gIGxldCBuZXdfcm9vdCA9XG4gICAgaWYgTm9kZS5lcXVhbCB0LnJvb3Qgbm9kZSB0aGVuIG1lcmdlZF9jaGlsZHJlbiBlbHNlIG1lcmdlIHQgdC5yb290IG1lcmdlZF9jaGlsZHJlblxuICBpblxuICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgdC5yb290IDwtIG5ld19yb290XG47O1xuXG5sZXQgcmVtb3ZlX3RvcCB0ID0gaWYgbm90IChOb2RlLmlzX2VtcHR5IHQucm9vdCkgdGhlbiByZW1vdmVfbm9uX2VtcHR5IHQgdC5yb290XG5cbigqIE5vdGUgdGhhdCB0aGlzIGlzIHRhaWwtcmVjdXJzaXZlIGFuZCB0aGF0IGVhY2ggbm9kZSBpcyB2aXNpdGVkIGF0IG1vc3QgMyB0aW1lcyAob25jZVxuICAgZm9yIGVhY2ggYnJhbmNoIG9mIHRoZSBcImlmXCIpLCBzbyBpdCB0YWtlcyBsaW5lYXIgdGltZSBhbmQgY29uc3RhbnQgc3BhY2UuICopXG5sZXQgcmVjIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IG5vZGUgfnBvb2wgPVxuICBsZXQgY2hpbGQgPSBOb2RlLmNoaWxkIG5vZGUgfnBvb2wgaW5cbiAgbGV0IHNpYmxpbmcgPSBOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbCBpblxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgY2hpbGQpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgY2hpbGQgfnBvb2xcbiAgZWxzZSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgc2libGluZylcbiAgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBzaWJsaW5nIH5wb29sXG4gIGVsc2UgKFxuICAgIGxldCBwcmV2ID0gTm9kZS5wcmV2IG5vZGUgfnBvb2wgaW5cbiAgICBOb2RlLmRldGFjaCBub2RlIH5wb29sO1xuICAgIE5vZGUuZnJlZSBub2RlIH5wb29sO1xuICAgIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBwcmV2KSB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHByZXYgfnBvb2wpXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpXG4gIHRoZW4gKFxuICAgIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHQucm9vdCB+cG9vbDp0LnBvb2w7XG4gICAgdC5yb290IDwtIE5vZGUuZW1wdHkgKCkpXG47O1xuXG5sZXQgcG9wX2V4biB0ID1cbiAgbGV0IHIgPSB0b3BfZXhuIHQgaW5cbiAgcmVtb3ZlX3RvcCB0O1xuICByXG47O1xuXG5sZXQgcG9wIHQgPSBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3BfZXhuIHQpXG5cbmxldCBwb3BfaWYgdCBmID1cbiAgbWF0Y2ggdG9wIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdiAtPlxuICAgIGlmIGYgdlxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX3RvcCB0O1xuICAgICAgU29tZSB2KVxuICAgIGVsc2UgTm9uZVxuOztcblxuKCogcGFpcmluZyBoZWFwcyBhcmUgbm90IGJhbGFuY2VkIHRyZWVzLCBhbmQgdGhlcmVmb3JlIHdlIGNhbid0IHJlbHkgb24gYSBiYWxhbmNlXG4gICBwcm9wZXJ0eSB0byBzdG9wIG91cnNlbHZlcyBmcm9tIG92ZXJmbG93aW5nIHRoZSBzdGFjay4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgYWNjIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgYWNjIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgdG9fdmlzaXQgPSBOb2RlLnNpYmxpbmcgfnBvb2wgbm9kZSA6OiBOb2RlLmNoaWxkIH5wb29sIG5vZGUgOjogcmVzdCBpblxuICAgICAgICBsb29wIChmIGFjYyAoTm9kZS52YWx1ZV9leG4gfnBvb2wgbm9kZSkpIHRvX3Zpc2l0KVxuICBpblxuICBsb29wIGluaXQgWyB0LnJvb3QgXSBbQG5vbnRhaWxdXG47O1xuXG4oKiBhbG1vc3QgaWRlbnRpY2FsIHRvIGZvbGQsIGNvcGllZCBmb3Igc3BlZWQgcHVycG9zZXMgKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBmIChOb2RlLnZhbHVlX2V4biB+cG9vbCBub2RlKTtcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBbIHQucm9vdCBdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBsZW5ndGggdCA9IE5vZGUuUG9vbC5sZW5ndGggdC5wb29sXG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBpc19lbXB0eSB0ID0gTm9kZS5pc19lbXB0eSB0LnJvb3RcbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2FycmF5IGFyciB+Y21wID1cbiAgbGV0IHQgPSBjcmVhdGUgfm1pbl9zaXplOihBcnJheS5sZW5ndGggYXJyKSB+Y21wICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBhZGQgdCB2KTtcbiAgdFxuOztcblxubGV0IG9mX2xpc3QgbCB+Y21wID0gb2ZfYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkgfmNtcFxubGV0IHNleHBfb2ZfdCBmIHQgPSBBcnJheS5zZXhwX29mX3QgZiAodG9fYXJyYXkgdCB8PiBBcnJheS5zb3J0ZWRfY29weSB+Y29tcGFyZTp0LmNtcClcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICB7IG11dGFibGUgbm9kZSA6ICdhIE5vZGUudFxuICAgIDsgbm9kZV9pZCA6IE5vZGUuSWQudFxuICAgIDsgaGVhcCA6ICdhIHRcbiAgICB9XG5cbiAgKCogSWYgaWRzIGFyZSBkaWZmZXJlbnQsIGl0IG1lYW5zIHRoYXQgdGhlIG5vZGUgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVcbiAgICAgb3RoZXIgbWVhbnMgKGFuZCBwb3NzaWJseSByZXVzZWQpLiAqKVxuICBsZXQgaXNfbm9kZV92YWxpZCB0ID0gTm9kZS5JZC5lcXVhbCAoTm9kZS5pZCB+cG9vbDp0LmhlYXAucG9vbCB0Lm5vZGUpIHQubm9kZV9pZFxuXG4gIGxldCB2YWx1ZSB0ID1cbiAgICBpZiBpc19ub2RlX3ZhbGlkIHQgdGhlbiBTb21lIChOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2wpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0XG4gICAgdGhlbiBOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2xcbiAgICBlbHNlIGZhaWx3aXRoIFwiSGVhcC52YWx1ZV9leG46IG5vZGUgd2FzIHJlbW92ZWQgZnJvbSB0aGUgaGVhcFwiXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodmFsdWUgdCA6IGEgb3B0aW9uKV1cbmVuZFxuXG5sZXQgcmVtb3ZlIHQgKHRva2VuIDogXyBFbHQudCkgPVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdCB0b2tlbi5oZWFwKVxuICB0aGVuIGZhaWx3aXRoIFwiY2Fubm90IHJlbW92ZSBmcm9tIGEgZGlmZmVyZW50IGhlYXBcIlxuICBlbHNlIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0b2tlbi5ub2RlKVxuICB0aGVuIChcbiAgICBpZiBFbHQuaXNfbm9kZV92YWxpZCB0b2tlbiB0aGVuIHJlbW92ZV9ub25fZW1wdHkgdCB0b2tlbi5ub2RlO1xuICAgIHRva2VuLm5vZGUgPC0gTm9kZS5lbXB0eSAoKSlcbjs7XG5cbmxldCBhZGRfcmVtb3ZhYmxlIHQgdiA9XG4gIGxldCBub2RlID0gYWRkX25vZGUgdCB2IGluXG4gIHsgRWx0Lm5vZGU7IGhlYXAgPSB0OyBub2RlX2lkID0gTm9kZS5pZCB+cG9vbDp0LnBvb2wgbm9kZSB9XG47O1xuXG5sZXQgdXBkYXRlIHQgdG9rZW4gdiA9XG4gIHJlbW92ZSB0IHRva2VuO1xuICBhZGRfcmVtb3ZhYmxlIHQgdlxuOztcblxubGV0IGZpbmRfZWx0ID1cbiAgbGV0IHJlYyBsb29wIHQgZiBub2RlcyA9XG4gICAgbWF0Y2ggbm9kZXMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCB0IGYgcmVzdFxuICAgICAgZWxzZSBpZiBmIChOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbClcbiAgICAgIHRoZW4gU29tZSB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIHQgZiAoTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2w6dC5wb29sIDo6IE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wgOjogcmVzdClcbiAgaW5cbiAgZnVuIHQgfmYgLT4gbG9vcCB0IGYgWyB0LnJvb3QgXVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSBoZWFwID0gJ2EgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE5vZGUudFxuXG4gICAgbGV0IHZhbHVlIHQgaGVhcCA9IE5vZGUudmFsdWVfZXhuIH5wb29sOmhlYXAucG9vbCB0XG4gIGVuZFxuXG4gIGxldCBhZGRfcmVtb3ZhYmxlID0gYWRkX25vZGVcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZV9ub25fZW1wdHlcblxuICBsZXQgdXBkYXRlIHQgZWx0IHYgPVxuICAgIHJlbW92ZSB0IGVsdDtcbiAgICBhZGRfcmVtb3ZhYmxlIHQgdlxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGFtX3J1bm5pbmdfdGVzdCA6IGJvb2xcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBhID1cbiAgICBpZiBNLmFtX3J1bm5pbmdfdGVzdCB0aGVuIFNleHAuQXRvbSBcIjxoaWRkZW5faW5fdGVzdD5cIiBlbHNlIHNleHBfb2ZfYSBhXG4gIDs7XG5cbiAgbW9kdWxlIFdpdGhfbm9uX3JvdW5kdHJpcHBpbmdfaW5fdGVzdF9vZl9zZXhwID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cbiAgZW5kXG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBUdXJuZWRfb2ZmID0gc3RydWN0XG4gICAgICBtb2R1bGUgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmID0gTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IGZhbHNlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vZmYudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFR1cm5lZF9vbiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29uID0gTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IHRydWVcbiAgICAgICAgZW5kKVxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gaW50IFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29uLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIlR1cm5lZCBvblwiID1cbiAgICAgIHByaW50X3MgWyVzZXhwICgxMDI0IDogVHVybmVkX29uLnQpXTtcbiAgICAgIFslZXhwZWN0IHt8IDxoaWRkZW5faW5fdGVzdD4gfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIlR1cm5lZCBvZmZcIiA9XG4gICAgICBwcmludF9zIChbJXNleHBfb2Y6IFR1cm5lZF9vZmYudF0gMTAyNCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDI0IHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IGFtX3J1bm5pbmdfdGVzdFxuICBlbmQpXG4iLCJvcGVuIEJhc2VcblxudHlwZSArJ2EgdFxuXG4oKiBUaGlzIFtPYmoubWFnaWNdIGlzIE9LIGJlY2F1c2Ugd2UgbmV2ZXIgYWxsb3cgdXNlciBjb2RlIGFjY2VzcyB0byBbbm9uZV0gKGV4Y2VwdCB2aWFcbiAgIFt1bnNhZmVfdmFsdWVdKS4gIFdlIGRpc2FsbG93IFtfIFVvcHQudCBVb3B0LnRdLCBzbyB0aGVyZSBpcyBubyBjaGFuY2Ugb2YgY29uZnVzaW5nXG4gICBbbm9uZV0gd2l0aCBbc29tZSBub25lXS4gIEFuZCBbZmxvYXQgVW9wdC50IGFycmF5XSBpcyBzaW1pbGFybHkgZGlzYWxsb3dlZC4gKilcbmxldCBub25lIDogJ2EgdCA9IFN0ZGxpYi5PYmoubWFnaWMgXCJVb3B0Lm5vbmVcIlxuXG5sZXRbQGlubGluZV0gc29tZSAoeCA6ICdhKSA9XG4gIGxldCByIDogJ2EgdCA9IFN0ZGxpYi5PYmoubWFnaWMgeCBpblxuICBpZiBwaHlzX2VxdWFsIHIgbm9uZSB0aGVuIGZhaWx3aXRoIFwiVW9wdC5zb21lIFVvcHQubm9uZVwiO1xuICByXG47O1xuXG5sZXQgc29tZV9sb2NhbCA9IFN0ZGxpYi5PYmoubWFnaWMgc29tZVxubGV0IHNvbWVfbG9jYWwgOiAnYS4gKCdhW0Bsb2NhbF0pIC0+ICgnYSB0W0Bsb2NhbF0pID0gc29tZV9sb2NhbFxubGV0IHVuc2FmZV92YWx1ZSAoeCA6ICdhIHQpIDogJ2EgPSBTdGRsaWIuT2JqLm1hZ2ljIHhcbmxldCB1bnNhZmVfdmFsdWVfbG9jYWwgPSBTdGRsaWIuT2JqLm1hZ2ljIHVuc2FmZV92YWx1ZVxubGV0IHVuc2FmZV92YWx1ZV9sb2NhbCA6ICdhLiAoJ2EgdFtAbG9jYWxdKSAtPiAoJ2FbQGxvY2FsXSkgPSB1bnNhZmVfdmFsdWVfbG9jYWxcbmxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxubGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaWYgaXNfc29tZSB0IHRoZW4gaW52YXJpYW50X2EgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgaWYgaXNfbm9uZSB0IHRoZW4gWyVzZXhwIE5vbmVdIGVsc2UgWyVzZXhwIFNvbWUgKHVuc2FmZV92YWx1ZSB0IDogYSldXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSBpZiBpc19ub25lIHQgdGhlbiBmYWlsd2l0aCBcIlVvcHQudmFsdWVfZXhuXCIgZWxzZSB1bnNhZmVfdmFsdWUgdFxubGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IG5vbmVcbiAgfCBTb21lIGEgLT4gc29tZSBhXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBMb2NhbCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlX2xvY2FsXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgKFwidXNpbmcgdGhlIHNhbWUgc2VudGluZWwgdmFsdWVcIiBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgbWF0Y2ggc29tZSBcIlVvcHQubm9uZVwiIHdpdGhcbiAgICAgIHwgKF8gOiBzdHJpbmcgdCkgLT4gZmFpbHdpdGggXCJzaG91bGQgbm90IGhhdmUgZ290dGVuIHRvIHRoaXMgcG9pbnRcIlxuICAgICAgfCBleGNlcHRpb24gXyAtPiAoKVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBleHBsb2l0cyB0aGUgZmFjdCB0aGF0IE9DYW1sIGRvZXMgbm90IHBlcmZvcm0gY29udGV4dC1zd2l0Y2hlcyB1bmRlclxuICAgY2VydGFpbiBjb25kaXRpb25zLiAgSXQgY2FuIHRoZXJlZm9yZSBhdm9pZCB1c2luZyBtdXRleGVzLlxuXG4gICBHaXZlbiB0aGUgc2VtYW50aWNzIG9mIHRoZSBjdXJyZW50IE9DYW1sIHJ1bnRpbWUgKGFuZCBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZSksIGNvZGVcbiAgIHNlY3Rpb25zIGRvY3VtZW50ZWQgYXMgYXRvbWljIGJlbG93IHdpbGwgbmV2ZXIgY29udGFpbiBhIGNvbnRleHQtc3dpdGNoLiAgVGhlIGRlY2lkaW5nXG4gICBjcml0ZXJpb24gaXMgd2hldGhlciB0aGV5IGNvbnRhaW4gYWxsb2NhdGlvbnMgb3IgY2FsbHMgdG8gZXh0ZXJuYWwvYnVpbHRpbiBmdW5jdGlvbnMuXG4gICBJZiB0aGVyZSBpcyBub25lLCBhIGNvbnRleHQtc3dpdGNoIGNhbm5vdCBoYXBwZW4uICBBc3NpZ25tZW50cyB3aXRob3V0IGFsbG9jYXRpb25zLFxuICAgZmllbGQgYWNjZXNzLCBwYXR0ZXJuLW1hdGNoaW5nLCBldGMuLCBkbyBub3QgdHJpZ2dlciBjb250ZXh0LXN3aXRjaGVzLlxuXG4gICBDb2RlIHJldmlld2VycyBzaG91bGQgdGhlcmVmb3JlIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvd1xuICAgZG8gbm90IHZpb2xhdGUgdGhlIGFib3ZlIGFzc3VtcHRpb25zLiAgSXQgaXMgcHJ1ZGVudCB0byBkaXNhc3NlbWJsZSB0aGUgLm8gZmlsZSAodXNpbmdcbiAgIFtvYmpkdW1wIC1kcl0pIGFuZCBleGFtaW5lIGl0LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhIHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgKCkgPSB7IHZhbHVlID0gVW9wdC5ub25lOyBuZXh0ID0gVW9wdC5ub25lIH1cbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICgqIFtmcm9udF0gdG8gW2JhY2tdIGhhcyBbbGVuZ3RoICsgMV0gbGlua2VkIGVsZW1lbnRzLCB3aGVyZSB0aGUgZmlyc3QgW2xlbmd0aF0gaG9sZCB0aGVcbiAgICAgdmFsdWVzIGluIHRoZSBxdWV1ZSwgYW5kIHRoZSBsYXN0IGlzIFtiYWNrXSwgaG9sZGluZyBubyB2YWx1ZS4gKilcbiAgOyBtdXRhYmxlIGZyb250IDogJ2EgRWx0LnRcbiAgOyBtdXRhYmxlIGJhY2sgOiAnYSBFbHQudFxuICAoKiBbdW51c2VkX2VsdHNdIGlzIHNpbmdseSBsaW5rZWQgdmlhIFtuZXh0XSwgYW5kIGVuZHMgd2l0aCBbc2VudGluZWxdLiAgQWxsIGVsdHMgaW5cbiAgICAgW3VudXNlZF9lbHRzXSBoYXZlIFtVb3B0LmlzX25vbmUgZWx0LnZhbHVlXS4gKilcbiAgOyBtdXRhYmxlIHVudXNlZF9lbHRzIDogJ2EgRWx0LnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgbGV0IGkgPSByZWYgdC5sZW5ndGggaW5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgZnJvbnQgaW5cbiAgICAgICAgICAgd2hpbGUgIWkgPiAwIGRvXG4gICAgICAgICAgICAgZGVjciBpO1xuICAgICAgICAgICAgIGxldCBlbHQgPSAhciBpblxuICAgICAgICAgICAgIHIgOj0gVW9wdC52YWx1ZV9leG4gZWx0LkVsdC5uZXh0O1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIGVsdC52YWx1ZSlcbiAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsICFyIHQuYmFjaykpKVxuICAgICAgfmJhY2s6KGNoZWNrIChmdW4gYmFjayAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBiYWNrLkVsdC52YWx1ZSkpKVxuICAgICAgfnVudXNlZF9lbHRzOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bnVzZWRfZWx0cyAtPlxuICAgICAgICAgICBsZXQgciA9IHJlZiB1bnVzZWRfZWx0cyBpblxuICAgICAgICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgICAgICBsZXQgZWx0ID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICAgICAgICAgICByIDo9IGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmUpKSlcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgZWx0ID0gRWx0LmNyZWF0ZSAoKSBpblxuICB7IGZyb250ID0gZWx0OyBiYWNrID0gZWx0OyBsZW5ndGggPSAwOyB1bnVzZWRfZWx0cyA9IFVvcHQubm9uZSB9XG47O1xuXG5sZXQgZ2V0X3VudXNlZF9lbHQgdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIFVvcHQuaXNfc29tZSB0LnVudXNlZF9lbHRzXG4gIHRoZW4gKFxuICAgIGxldCBlbHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnVudXNlZF9lbHRzIGluXG4gICAgdC51bnVzZWRfZWx0cyA8LSBlbHQubmV4dDtcbiAgICBlbHQgKCogRU5EIEFUT01JQyBTRUNUSU9OICopKVxuICBlbHNlIEVsdC5jcmVhdGUgKClcbjs7XG5cbmxldCBlbnF1ZXVlICh0eXBlIGEpICh0IDogYSB0KSAoYSA6IGEpID1cbiAgbGV0IG5ld19iYWNrID0gZ2V0X3VudXNlZF9lbHQgdCBpblxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gIHQuYmFjay52YWx1ZSA8LSBVb3B0LnNvbWUgYTtcbiAgdC5iYWNrLm5leHQgPC0gVW9wdC5zb21lIG5ld19iYWNrO1xuICB0LmJhY2sgPC0gbmV3X2JhY2tcbjs7XG5cbigqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuXG5sZXQgcmV0dXJuX3VudXNlZF9lbHQgdCAoZWx0IDogXyBFbHQudCkgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBlbHQudmFsdWUgPC0gVW9wdC5ub25lO1xuICBlbHQubmV4dCA8LSB0LnVudXNlZF9lbHRzO1xuICB0LnVudXNlZF9lbHRzIDwtIFVvcHQuc29tZSBlbHQ7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICAoKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9kZXF1ZXVlX2VtcHR5IHQgPVxuICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIG9mIGVtcHR5IHF1ZXVlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0O1xuICBsZXQgZWx0ID0gdC5mcm9udCBpblxuICBsZXQgYSA9IGVsdC52YWx1ZSBpblxuICB0LmZyb250IDwtIFVvcHQudW5zYWZlX3ZhbHVlIGVsdC5uZXh0O1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICByZXR1cm5fdW51c2VkX2VsdCB0IGVsdDtcbiAgVW9wdC51bnNhZmVfdmFsdWUgYVxuOztcblxubGV0IGNsZWFyX2ludGVybmFsX3Bvb2wgdCA9IHQudW51c2VkX2VsdHMgPC0gVW9wdC5ub25lXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBVb3B0ID0gVW9wdFxuZW5kXG4iLCJpbmNsdWRlIENvcmUuQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxuKCogW2FmdGVyXSBpcyBsaWtlIFthZGRdLCBidXQgZGVhbHMgbmljZWx5IHdpdGggdGhlIGNhc2Ugb2Ygb3ZlcmZsb3cgYnkgaW5zdGVhZCByZXR1cm5pbmdcbiAgIFttYXhfdmFsdWVdLiAgVGltZS1zb3VyY2UgZnVuY3Rpb25zIHVzZSBbYWZ0ZXJdIHRvIGF2b2lkIGltbWVkaWF0ZWx5IGZpcmluZyBldmVudHMgdGhhdFxuICAgc2hvdWxkIG5ldmVyIGZpcmUsIGR1ZSB0byB0aGUgb3ZlcmZsb3cgbGVhZGluZyB0byBhIG5lZ2F0aXZlIHRpbWUgdGhhdCBhcHBlYXJzIHRvIGJlIGluXG4gICB0aGUgcGFzdC4gIFdlIGRvbid0IGNoZWNrIHVuZGVyZmxvdyBiZWNhdXNlIHRoYXQgaXMgdmVyeSB1bmxpa2VseSwgcmVxdWlyaW5nIGJvdGggYVxuICAgbmVnYXRpdmUgdGltZSBhbmQgYSBuZWdhdGl2ZSBzcGFuLiAqKVxubGV0IGFmdGVyIHQgc3BhbiA9XG4gIGxldCByZXN1bHQgPSBhZGQgdCBzcGFuIGluXG4gIGlmIFNwYW4uKCA+ICkgc3BhbiBTcGFuLnplcm8gJiYgcmVzdWx0IDwgdCB0aGVuIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIGVsc2UgcmVzdWx0XG47O1xuIiwibW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeVxuaW5jbHVkZSBBc3luY19rZXJuZWxfY29uZmlnLlByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuXG5sZXQgbG9nIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBlcHJpbnRmXG4gICAgXCIlc1xcbiUhXCJcbiAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgKFslc2V4cF9vZjogU2V4cC50ICogVGltZV9ucy50ICogc3RyaW5nICogYV1cbiAgICAgICAgICAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSwgVGltZV9ucy5ub3cgKCksIG1lc3NhZ2UsIGEpKSlcbjs7XG5cbmxldCBsb2dfc3RyaW5nIG1lc3NhZ2UgPSBsb2cgbWVzc2FnZSAoKSBbJXNleHBfb2Y6IHVuaXRdXG4iLCJtb2R1bGUgRGVidWdfaW5fdGhpc19kaXJlY3RvcnkgPSBEZWJ1Z1xubW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuISBDb3JlXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3Rvcnlcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICBBc3luY19rZXJuZWxfY29uZmlnLk1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgZXByaW50ID0gQ29yZS5EZWJ1Zy5lcHJpbnRcbmxldCBlcHJpbnRfcyA9IENvcmUuRGVidWcuZXByaW50X3NcbmxldCBlcHJpbnRzID0gQ29yZS5EZWJ1Zy5lcHJpbnRzXG5sZXQgcHJpbnRfcyBzZXhwID0gcHJpbnRmIFwiJXNcXG4lIVwiIChzZXhwIHw+IFNleHAudG9fc3RyaW5nX2h1bSlcbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5cbigqIFdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZXNlIG1vZHVsZXMgaW4gQXN5bmNfa2VybmVsLCB0byBhdm9pZCBkaWZmaWN1bHRpZXMgd2l0aFxuICAgdXNpbmcgaXQgb24ganNfb2Zfb2NhbWwuICopXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOb3JtYWxcbiAgfCBMb3dcbltAQGRlcml2aW5nIHNleHBfb2YsIGVudW1lcmF0ZV1cblxubGV0IG5vcm1hbCA9IE5vcm1hbFxubGV0IGxvdyA9IExvd1xuIiwiKCogVGhpcyBmaWxlIGRlZmluZXMgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyBhdCB0aGUgaGVhcnQgb2YgQXN5bmMuICBUaGUgZnVuY3Rpb25zXG4gICBhc3NvY2lhdGVkIHdpdGggdGhlIHR5cGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUocykgZm9yIGVhY2ggbW9kdWxlLlxuICAgVGhpcyBmaWxlIHNob3VsZCBkZWZpbmUgb25seSB0eXBlcywgbm90IGZ1bmN0aW9ucywgc2luY2UgZnVuY3Rpb25zIGRlZmluZWQgaW5zaWRlIHRoZVxuICAgcmVjdXJzaXZlIG1vZHVsZXMgYXJlIG5vdCBpbmxpbmVkLlxuXG4gICBJZiB5b3UgbmVlZCB0byBhZGQgZnVuY3Rpb25hbGl0eSB0byBhIG1vZHVsZSBidXQgZG9pbmcgc28gd291bGQgY3JlYXRlIGEgZGVwZW5kZW5jeVxuICAgY3ljbGUsIHNwbGl0IHRoZSBmaWxlIGludG8gcGllY2VzIGFzIG5lZWRlZCB0byBicmVhayB0aGUgY3ljbGUsIGUuZy4gc2NoZWR1bGVyMC5tbCxcbiAgIHNjaGVkdWxlcjEubWwsIHNjaGVkdWxlci5tbC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSByZWMgQ2VsbCA6IHNpZ1xuICB0eXBlIGFueSA9XG4gICAgWyBgRW1wdHlcbiAgICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICAgIHwgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgfCBgRnVsbFxuICAgIHwgYEluZGlyXG4gICAgXVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyA6XG4gICAgICAgIHsgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgIDsgbXV0YWJsZSBwcmV2IDogJ2EgSGFuZGxlci50XG4gICAgICAgIDsgbXV0YWJsZSBuZXh0IDogJ2EgSGFuZGxlci50XG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgdFxuICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgICAoJ2EgLT4gdW5pdCkgKiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9oYW5kbGVyIF0pIHRcbiAgICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgdFxuICAgIHwgRnVsbCA6ICdhIC0+ICgnYSwgWz4gYEZ1bGwgXSkgdFxuICAgIHwgSW5kaXIgOiAnYSBJdmFyLnQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgdFxuZW5kID1cbiAgQ2VsbFxuXG5hbmQgSGFuZGxlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIENlbGwudFxuZW5kID1cbiAgSGFuZGxlclxuXG5hbmQgSXZhciA6IHNpZ1xuICB0eXBlICdhIHQgPSB7IG11dGFibGUgY2VsbCA6ICgnYSwgQ2VsbC5hbnkpIENlbGwudCB9XG5cbiAgbW9kdWxlIEltbXV0YWJsZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IHsgY2VsbCA6ICgnYSwgQ2VsbC5hbnkpIENlbGwudCB9XG4gIGVuZFxuZW5kID1cbiAgSXZhclxuXG5hbmQgRGVmZXJyZWQgOiBzaWdcbiAgdHlwZSArISdhIHRcbmVuZCA9XG4gIERlZmVycmVkXG5cbmFuZCBFeGVjdXRpb25fY29udGV4dCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gICAgOyBsb2NhbF9zdG9yYWdlIDogVW5pdl9tYXAudFxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgRXhlY3V0aW9uX2NvbnRleHRcblxuYW5kIEZvcndhcmRpbmcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IERldGFjaGVkXG4gICAgfCBQYXJlbnQgb2YgTW9uaXRvci50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuXG5lbmQgPVxuICBGb3J3YXJkaW5nXG5cbmFuZCBNb25pdG9yIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogSW5mby50XG4gICAgOyBoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCBvcHRpb25cbiAgICA7IGlkIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gSXZhci50XG4gICAgOyBtdXRhYmxlIGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIDogKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcudFxuICAgIDsgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUYWlsLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgICA7IG11dGFibGUgZm9yd2FyZGluZyA6IEZvcndhcmRpbmcudFxuICAgIH1cbmVuZCA9XG4gIE1vbml0b3JcblxuYW5kIFRhaWwgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuZW5kID1cbiAgVGFpbFxuXG5hbmQgU3RyZWFtIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiAnYSAqICdhIHRcbmVuZCA9XG4gIFN0cmVhbVxuXG4oKiBXZSBhdm9pZCB1c2luZyBbbW9kdWxlIHJlY10gdG8gZGVmaW5lIFtCdmFyXSwgc28gdGhhdCBbdG9fcmVwcl0gYW5kIFtvZl9yZXByXSBhcmVcbiAgIGlubGluZWQuICopXG5tb2R1bGUgQnZhciA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtaXNzaW9uKSB0XG5cbiAgKCoqIFtyZXByXSBleGlzdHMgc28gdGhhdCB3ZSBtYXkgaGlkZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBbQnZhci50XSwgYW5kIHRoZW4gYWRkIGFcbiAgICAgIHBoYW50b20gdHlwZSB0byBpdCB1cHN0cmVhbS4gIFdpdGhvdXQgdGhpcywgdGhlIHBoYW50b20gdHlwZSB2YXJpYWJsZSB3b3VsZCBhbGxvd1xuICAgICAgZm9yIGFueXRoaW5nIHRvIGJlIGNvZXJjZWQgaW4gYW5kIG91dCwgc2luY2UgaXQgaXMgdW51c2VkLiAqKVxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdmFsIG9mX3JlcHIgOiAnYSByZXByIC0+ICgnYSwgJ3Blcm1pc3Npb24pIHRcbiAgdmFsIHRvX3JlcHIgOiAoJ2EsICdwZXJtaXNzaW9uKSB0IC0+ICdhIHJlcHJcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gJ2EgcmVwclxuXG4gIGxldCB0b19yZXByIHQgPSB0XG4gIGxldCBvZl9yZXByIHQgPSB0XG5lbmRcblxubW9kdWxlIHJlYyBFdmVudCA6IHNpZ1xuICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmlyZWRcbiAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XG4gICAgICB8IFNjaGVkdWxlZFxuICAgICAgfCBVbnNjaGVkdWxlZFxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZCA9XG4gIEV2ZW50XG5cbmFuZCBFeHRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoJ2EgLT4gdW5pdCkgKiAnYSAtPiB0XG5lbmQgPVxuICBFeHRlcm5hbF9qb2JcblxuYW5kIEpvYiA6IHNpZ1xuICB0eXBlIHNsb3RzID0gKEV4ZWN1dGlvbl9jb250ZXh0LnQsIE9iai50IC0+IHVuaXQsIE9iai50KSBQb29sLlNsb3RzLnQzXG4gIHR5cGUgdCA9IHNsb3RzIFBvb2wuUG9pbnRlci50XG5lbmQgPVxuICBKb2JcblxuYW5kIEpvYl9vcl9ldmVudCA6IHNpZ1xuICB0eXBlIHRcbmVuZCA9XG4gIEpvYl9vcl9ldmVudFxuXG5hbmQgSm9iX3Bvb2wgOiBzaWdcbiAgdHlwZSB0ID0gSm9iLnNsb3RzIFBvb2wudFxuZW5kID1cbiAgSm9iX3Bvb2xcblxuYW5kIEpvYl9xdWV1ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgICA7IG11dGFibGUgam9ic19sZWZ0X3RoaXNfY3ljbGUgOiBpbnRcbiAgICA7IG11dGFibGUgam9icyA6IE9iai50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gICAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gICAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIH1cbmVuZCA9XG4gIEpvYl9xdWV1ZVxuXG5hbmQgSm9icyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWwgOiBKb2JfcXVldWUudFxuICAgIDsgbG93IDogSm9iX3F1ZXVlLnRcbiAgICB9XG5lbmQgPVxuICBKb2JzXG5cbmFuZCBTY2hlZHVsZXIgOiBzaWdcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIDogVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgRGVxdWUudFxuICAgIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBjeWNsZV9jb3VudCA6IGludFxuICAgIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDogQ3ljbGVfaG9vay50IGFycmF5XG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IEN5Y2xlX2hvb2sudCBhcnJheVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6IChDeWNsZV9ob29rX2hhbmRsZS50LCBDeWNsZV9ob29rLnQpIEhhc2h0YmwudFxuICAgIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX251bV9qb2JzIDogaW50XG4gICAgOyBtdXRhYmxlIHRvdGFsX2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgVGltZV9zb3VyY2UudDFcbiAgICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDogdW5pdCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBldmVudF9hZGRlZF9ob29rIDogKFRpbWVfbnMudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgeWllbGQgOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gICAgOyBtdXRhYmxlIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRcbiAgICA7IG11dGFibGUgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sXG4gICAgfVxuZW5kID1cbiAgU2NoZWR1bGVyXG5cbmFuZCBDeWNsZV9ob29rIDogc2lnXG4gIHR5cGUgdCA9IHVuaXQgLT4gdW5pdFxuZW5kID1cbiAgQ3ljbGVfaG9va1xuXG5hbmQgQ3ljbGVfaG9va19oYW5kbGUgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcbmFuZCBUaW1lX3NvdXJjZV9pZCA6IFVuaXF1ZV9pZC5JZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5hbmQgVGltZV9zb3VyY2UgOiBzaWdcbiAgdHlwZSAtJ3J3IHQxID1cbiAgICB7IGlkIDogVGltZV9zb3VyY2VfaWQudFxuICAgIDsgbXV0YWJsZSBhZHZhbmNlX2Vycm9ycyA6IEVycm9yLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBhbV9hZHZhbmNpbmcgOiBib29sXG4gICAgOyBldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbXV0YWJsZSBmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udFxuICAgIDsgbXV0YWJsZSBtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50IC0+IHVuaXRcbiAgICA7IGlzX3dhbGxfY2xvY2sgOiBib29sXG4gICAgOyBzY2hlZHVsZXIgOiBTY2hlZHVsZXIudFxuICAgIH1cbmVuZCA9XG4gIFRpbWVfc291cmNlXG5cbmFuZCBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIgOiBzaWdcbiAgbW9kdWxlIEV4ZWNfcmVzdWx0IDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgTm90X2ZpbmlzaGVkXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IGV4ZWMgOiB1bml0IC0+IEV4ZWNfcmVzdWx0LnRcbiAgICB9XG5lbmQgPVxuICBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXJcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubGV0IGRlYnVnID0gRGVidWcubW9uaXRvclxuXG5tb2R1bGUgRm9yd2FyZGluZyA9IFR5cGVzLkZvcndhcmRpbmdcblxudHlwZSB0ID0gVHlwZXMuTW9uaXRvci50ID1cbiAgeyBuYW1lIDogSW5mby50XG4gIDsgaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgb3B0aW9uXG4gIDsgaWQgOiBpbnRcbiAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gVHlwZXMuSXZhci50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIHNjaGVkdWxlcyBhIGpvYiBmb3IgZWFjaCBlbGVtZW50IG9mIFtoYW5kbGVyc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA6IChUeXBlcy5FeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLnRcbiAgOyAoKiBbTW9uaXRvci5zZW5kX2V4bl0gZXh0ZW5kcyBlYWNoIHRhaWwgaW4gW3RhaWxzX2Zvcl9hbGxfZXJyb3JzXS4gKilcbiAgICBtdXRhYmxlIHRhaWxzX2Zvcl9hbGxfZXJyb3JzIDogZXhuIFR5cGVzLlRhaWwudCBsaXN0XG4gIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgOyBtdXRhYmxlIGZvcndhcmRpbmcgOiBGb3J3YXJkaW5nLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9XG4gIG1hdGNoIHQuaGVyZSB3aXRoXG4gIHwgTm9uZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCldXG4gIHwgU29tZSBoZXJlIC0+IFslc2V4cCAodC5uYW1lIDogSW5mby50KSwgKGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBkZXNjcmlwdGlvbnMgPVxuICBsZXQgcmVjIGxvb3AgdCBhYyA9XG4gICAgbGV0IGFjID0gZGVzY3JpcHRpb24gdCA6OiBhYyBpblxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCB8IFJlcG9ydF91bmNhdWdodF9leG4gLT4gTGlzdC5yZXYgYWNcbiAgICB8IFBhcmVudCB0IC0+IGxvb3AgdCBhY1xuICBpblxuICBmdW4gdCAtPiBsb29wIHQgW11cbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAoZGVzY3JpcHRpb25zIHQgOiBTZXhwLnQgbGlzdCldXG5cbmxldCBuZXh0X2lkID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgcGFyZW50ID1cbiAgbGV0IGlkID0gbmV4dF9pZCAoKSBpblxuICBsZXQgbmFtZSA9XG4gICAgbWF0Y2ggaW5mbywgbmFtZSB3aXRoXG4gICAgfCBTb21lIGksIE5vbmUgLT4gaVxuICAgIHwgU29tZSBpLCBTb21lIHMgLT4gSW5mby50YWcgaSB+dGFnOnNcbiAgICB8IE5vbmUsIFNvbWUgcyAtPiBJbmZvLm9mX3N0cmluZyBzXG4gICAgfCBOb25lLCBOb25lIC0+IEluZm8uY3JlYXRlIFwiaWRcIiBpZCBbJXNleHBfb2Y6IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0LnRdXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IG5hbWVcbiAgICA7IGhlcmVcbiAgICA7IGZvcndhcmRpbmcgPVxuICAgICAgICAobWF0Y2ggcGFyZW50IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBSZXBvcnRfdW5jYXVnaHRfZXhuXG4gICAgICAgICB8IFNvbWUgcGFyZW50IC0+IFBhcmVudCBwYXJlbnQpXG4gICAgOyBpZFxuICAgIDsgbmV4dF9lcnJvciA9IHsgY2VsbCA9IEVtcHR5IH1cbiAgICA7IGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzID0gQmFnLmNyZWF0ZSAoKVxuICAgIDsgdGFpbHNfZm9yX2FsbF9lcnJvcnMgPSBbXVxuICAgIDsgaGFzX3NlZW5fZXJyb3IgPSBmYWxzZVxuICAgIH1cbiAgaW5cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJjcmVhdGVkIG1vbml0b3JcIiB0IFslc2V4cF9vZjogdF07XG4gIHRcbjs7XG5cbmxldCBtYWluID0gY3JlYXRlX3dpdGhfcGFyZW50IH5uYW1lOlwibWFpblwiIE5vbmVcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE1vbml0b3IgPSBNb25pdG9yMFxuXG50eXBlIHQgPSBUeXBlcy5FeGVjdXRpb25fY29udGV4dC50ID1cbiAgeyBtb25pdG9yIDogTW9uaXRvci50XG4gIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gIDsgbG9jYWxfc3RvcmFnZSA6IFVuaXZfbWFwLnRcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA6IEJhY2t0cmFjZS50IGxpc3RcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG5sZXQgbWFpbiA9XG4gIHsgbW9uaXRvciA9IE1vbml0b3IubWFpblxuICA7IHByaW9yaXR5ID0gUHJpb3JpdHkubm9ybWFsXG4gIDsgbG9jYWxfc3RvcmFnZSA9IFVuaXZfbWFwLmVtcHR5XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgPSBbXVxuICB9XG47O1xuXG5sZXQgY3JlYXRlX2xpa2UgP21vbml0b3IgP3ByaW9yaXR5ID9sb2NhbF9zdG9yYWdlIHQgPVxuICBtYXRjaCBtb25pdG9yLCBwcmlvcml0eSwgbG9jYWxfc3RvcmFnZSB3aXRoXG4gIHwgTm9uZSwgTm9uZSwgTm9uZSAtPlxuICAgICgqIGF2b2lkIGFsbG9jYXRpbmcgaW4gdGhlIHRyaXZpYWwgY2FzZSwgd2hpY2ggZS5nLiBoYXBwZW5zIHdoZW4gY2FsbGluZ1xuICAgICAgIFtBc3luYy5zY2hlZHVsZV0gd2l0aG91dCBvcHRpb25hbCBhcmdzICopXG4gICAgdFxuICB8IF8gLT5cbiAgICBsZXQgbW9uaXRvciA9IE9wdGlvbi52YWx1ZSBtb25pdG9yIH5kZWZhdWx0OnQubW9uaXRvciBpblxuICAgIHsgbW9uaXRvclxuICAgIDsgcHJpb3JpdHkgPSBPcHRpb24udmFsdWUgcHJpb3JpdHkgfmRlZmF1bHQ6dC5wcmlvcml0eVxuICAgIDsgbG9jYWxfc3RvcmFnZSA9IE9wdGlvbi52YWx1ZSBsb2NhbF9zdG9yYWdlIH5kZWZhdWx0OnQubG9jYWxfc3RvcmFnZVxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgPSB0LmJhY2t0cmFjZV9oaXN0b3J5XG4gICAgfVxuOztcblxubGV0IGZpbmRfbG9jYWwgdCBrZXkgPSBVbml2X21hcC5maW5kIHQubG9jYWxfc3RvcmFnZSBrZXlcblxubGV0IHdpdGhfbG9jYWwgdCBrZXkgZGF0YSA9XG4gIHsgdCB3aXRoIGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5jaGFuZ2UgdC5sb2NhbF9zdG9yYWdlIGtleSB+ZjooZnVuIF8gLT4gZGF0YSkgfVxuOztcblxubGV0IHJlY29yZF9iYWNrdHJhY2UgdCA9XG4gIHsgdCB3aXRoIGJhY2t0cmFjZV9oaXN0b3J5ID0gQmFja3RyYWNlLmdldCAoKSA6OiB0LmJhY2t0cmFjZV9oaXN0b3J5IH1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHlwZXMuRXh0ZXJuYWxfam9iXG5cbmxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIjxqb2I+XCJcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBQb29sXG5cbmxldCBkdW1teV9lID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxubGV0IGR1bW15X2YgOiBPYmoudCAtPiB1bml0ID0gaWdub3JlXG5sZXQgZHVtbXlfYSA6IE9iai50ID0gT2JqLnJlcHIgKClcblxudHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCAoT2JqLnRbQHNleHAub3BhcXVlXSkpIFNsb3RzLnQzXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPSBzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbmxldCBjcmVhdGUgKCkgPSBjcmVhdGUgU2xvdHMudDMgfmNhcGFjaXR5OjEgfmR1bW15OihkdW1teV9lLCBkdW1teV9mLCBkdW1teV9hKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IEpvYl9wb29sLnNsb3RzIFBvb2wuUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBFdmVudCA9IFR5cGVzLkV2ZW50XG5tb2R1bGUgSm9iID0gVHlwZXMuSm9iXG5pbmNsdWRlIFR5cGVzLkpvYl9vcl9ldmVudFxuXG4oKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0IHRvXG4gICBbT2JqLm1hZ2ljXXMuICopXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlc1xuICBvcGVuIEV2ZW50XG5cbiAgdHlwZSBfdCA9IHQgPVxuICAgIHsgKCogbXVzdCBuZXZlciBiZSBpbW1lZGlhdGUgKilcbiAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBfIDogc2lnIGVuZCA9IHN0cnVjdFxuICBtb2R1bGUgRW5zdXJlX3ByaXZhdGVfaW50IChNIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIGludFxuICAgIGVuZCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIF90ID0gTS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgRW5zdXJlX3ByaXZhdGVfaW50IChKb2IpXG5lbmRcblxubGV0IG9mX2V2ZW50IGV2ZW50IDogdCA9IE9iai5tYWdpYyAoZXZlbnQgOiBFdmVudC50KVxubGV0IG9mX2pvYiBqb2IgOiB0ID0gT2JqLm1hZ2ljIChqb2IgOiBKb2IudClcbmxldCBpc19ldmVudCAodCA6IHQpID0gT2JqLmlzX2Jsb2NrIChPYmoucmVwciB0KVxubGV0IGlzX2pvYiAodCA6IHQpID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgdClcblxubW9kdWxlIE1hdGNoID0gc3RydWN0XG4gIHR5cGUgXyBraW5kID1cbiAgICB8IEV2ZW50IDogRXZlbnQudCBraW5kXG4gICAgfCBKb2IgOiBKb2IudCBraW5kXG5cbiAgdHlwZSBwYWNrZWQgPSBLIDogXyBraW5kIC0+IHBhY2tlZCBbQEB1bmJveGVkXVxuXG4gIGxldCBraW5kIHQgPSBpZiBpc19ldmVudCB0IHRoZW4gSyBFdmVudCBlbHNlIEsgSm9iXG4gIGxldCBwcm9qZWN0ICh0eXBlIGEpIChfIDogYSBraW5kKSBqb2Jfb3JfZXZlbnQgPSAoT2JqLm1hZ2ljIDogdCAtPiBhKSBqb2Jfb3JfZXZlbnRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLlNjaGVkdWxlclxuXG5sZXQgZXZlbnRzIHQgPSB0LnRpbWVfc291cmNlLmV2ZW50c1xuXG5sZXQgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAoKiBBdm9pZCBhIGNhbWxfbW9kaWZ5IGluIG1vc3QgY2FzZXMuICopXG4gIGlmIG5vdCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHRoZW4gdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDwtIGV4ZWN1dGlvbl9jb250ZXh0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5sZXQgc2xvdHNfcGVyX2VsdCA9IDNcblxubW9kdWxlIEEgPSBVbmlmb3JtX2FycmF5XG5cbigqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBzcGVjaWFsaXplZCBbRmxhdF9xdWV1ZV0sIGRvbmUgZm9yIHJlYXNvbnMgb2Ygc3BlZWQuICopXG50eXBlIHQgPSBUeXBlcy5Kb2JfcXVldWUudCA9XG4gIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gIDsgKCogW2pvYnNdIGlzIGFuIGFycmF5IG9mIGxlbmd0aCBbY2FwYWNpdHkgdCAqIHNsb3RzX3Blcl9lbHRdLCB3aGVyZSBlYWNoIGVsdCBoYXMgdGhlXG4gICAgICAgdGhyZWUgY29tcG9uZW50cyBvZiBhIGpvYiAoW2V4ZWN1dGlvbl9jb250ZXh0XSwgW2ZdLCBbYV0pIGluIGNvbnNlY3V0aXZlIHNwb3RzIGluXG4gICAgICAgW2pvYnNdLiAgW2VucXVldWVdIGRvdWJsZXMgdGhlIGxlbmd0aCBvZiBbam9ic10gaWYgW2pvYnNdIGlzIGZ1bGwuICBbam9ic10gbmV2ZXJcbiAgICAgICBzaHJpbmtzLiAgW2pvYnNdIGlzIHNvbWV3aGF0IGxpa2UgYSBbQ29yZS5Qb29sXSBzcGVjaWFsaXplZCB0byAzLXR1cGxlczsgd2VcbiAgICAgICBkb24ndCB1c2UgW1Bvb2xdIGJlY2F1c2UgdGhhdCBpbXBsZW1lbnRzIGEgc2V0LCB3aGVyZSBbam9ic10gaXMgYSBxdWV1ZS4gKilcbiAgICBtdXRhYmxlIGpvYnMgOiAoT2JqLnQgQS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogW21hc2tdIGlzIFtjYXBhY2l0eSB0IC0gMV0sIGFuZCBpcyB1c2VkIGZvciBxdWlja2x5IGNvbXB1dGluZyBbaSBtb2QgKGNhcGFjaXR5XG4gICAgICAgdCldLiBBIHNwZWNpYWwgY2FzZSB3aGVuIHRoZSBqb2IgcXVldWUgaGFzIGNhcGFjaXR5IDAgaXMgcmVwcmVzZW50ZWRcbiAgICAgICB3aXRoIFttYXNrID0gLTFdLiBUaGlzIHZhbHVlIGlzIG5vdCB1c2VmdWwgYXMgYSBiaXQtbWFzaywgYnV0IHdlIG9ubHkgdXNlXG4gICAgICAgdGhlIGJpdC1tYXNrIHdoZW4gdGhlcmUncyBjYXBhY2l0eSBpbiB0aGUgYXJyYXksIHNvIHRoYXQgaXMgbm90IGEgcHJvYmxlbS5cbiAgICAqKVxuICAgIG11dGFibGUgbWFzayA6IGludFxuICA7ICgqIFtmcm9udF0gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBqb2IgaW4gdGhlIHF1ZXVlLiAgVGhlIGFycmF5IGluZGV4IG9mIHRoYXQgam9iJ3NcbiAgICAgICBleGVjdXRpb24gY29udGV4dCBpcyBbZnJvbnQgKiBzbG90c19wZXJfZWx0XS4gKilcbiAgICBtdXRhYmxlIGZyb250IDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IG9mZnNldCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrICogc2xvdHNfcGVyX2VsdFxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm51bV9qb2JzX3J1bjooY2hlY2sgKGZ1biBudW1fam9ic19ydW4gLT4gYXNzZXJ0IChudW1fam9ic19ydW4gPj0gMCkpKVxuICAgICAgfmpvYnNfbGVmdF90aGlzX2N5Y2xlOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JzX2xlZnRfdGhpc19jeWNsZSAtPiBhc3NlcnQgKGpvYnNfbGVmdF90aGlzX2N5Y2xlID49IDApKSlcbiAgICAgIH5qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JzIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgIChPYmoub2JqIChBLmdldCBqb2JzIChvZmZzZXQgdCBpKSkgOiBFeGVjdXRpb25fY29udGV4dC50KVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXNrIC0+XG4gICAgICAgICAgIGxldCBjYXBhY2l0eSA9IG1hc2sgKyAxIGluXG4gICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgPSAwIHx8IEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQgPSBBLmxlbmd0aCB0LmpvYnMpKSlcbiAgICAgIH5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZTooZnVuIF8gLT4gKCkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPCBtYXggMSAoY2FwYWNpdHkgdCkpKSlcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkgdCkpKSlcbjs7XG5cbmxldCBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5ID0gQS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KGNhcGFjaXR5ICogc2xvdHNfcGVyX2VsdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gICgqIFdlIHN0YXJ0IHdpdGggW2NhcGFjaXR5ICA9IDBdIHNvIHRoYXQgdGhlIGZpcnN0IGpvYiB0aGF0IGlzIGFkZGVkIGNhbGxzIFtncm93XSBhbmRcbiAgICAgZmlsbHMgaW4gdGhlIFtiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZV0uICopXG4gIGxldCBjYXBhY2l0eSA9IDAgaW5cbiAgeyBudW1fam9ic19ydW4gPSAwXG4gIDsgam9ic19sZWZ0X3RoaXNfY3ljbGUgPSAwXG4gIDsgam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHlcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgZnJvbnQgPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlID0gTm9uZVxuICB9XG47O1xuXG5sZXQgYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgdCA9IHQuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWVcblxubGV0IGNsZWFyIHQgPVxuICB0LmZyb250IDwtIDA7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gMFxuOztcblxubGV0IGdyb3cgdCA9XG4gIChtYXRjaCB0LmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHdpdGhcbiAgIHwgU29tZSBfIC0+IGFzc2VydCAoY2FwYWNpdHkgdCA+IDApXG4gICB8IE5vbmUgLT4gdC5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA8LSBTb21lIChCYWNrdHJhY2UuZ2V0ICgpKSk7XG4gIGxldCBvbGRfY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGxldCBuZXdfY2FwYWNpdHkgPSBtYXggMSAob2xkX2NhcGFjaXR5ICogMikgaW5cbiAgbGV0IG9sZF9qb2JzID0gdC5qb2JzIGluXG4gIGxldCBvbGRfZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCBsZW4xID0gSW50Lm1pbiB0Lmxlbmd0aCAob2xkX2NhcGFjaXR5IC0gb2xkX2Zyb250KSAqIHNsb3RzX3Blcl9lbHQgaW5cbiAgbGV0IGxlbjIgPSAodC5sZW5ndGggKiBzbG90c19wZXJfZWx0KSAtIGxlbjEgaW5cbiAgbGV0IG5ld19qb2JzID0gY3JlYXRlX2FycmF5IH5jYXBhY2l0eTpuZXdfY2FwYWNpdHkgaW5cbiAgQS5ibGl0XG4gICAgfmxlbjpsZW4xXG4gICAgfnNyYzpvbGRfam9ic1xuICAgIH5zcmNfcG9zOihvbGRfZnJvbnQgKiBzbG90c19wZXJfZWx0KVxuICAgIH5kc3Q6bmV3X2pvYnNcbiAgICB+ZHN0X3BvczowO1xuICBBLmJsaXQgfmxlbjpsZW4yIH5zcmM6b2xkX2pvYnMgfnNyY19wb3M6MCB+ZHN0Om5ld19qb2JzIH5kc3RfcG9zOmxlbjE7XG4gIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICB0LmpvYnMgPC0gbmV3X2pvYnM7XG4gIHQuZnJvbnQgPC0gMFxuOztcblxubGV0IHNldCAodHlwZSBhKSB0IGkgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IG9mZnNldCA9IG9mZnNldCB0IGkgaW5cbiAgQS51bnNhZmVfc2V0IHQuam9icyBvZmZzZXQgKE9iai5yZXByIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpKTtcbiAgQS51bnNhZmVfc2V0IHQuam9icyAob2Zmc2V0ICsgMSkgKE9iai5yZXByIChmIDogYSAtPiB1bml0KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDIpIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBncm93IHQ7XG4gIHNldCB0IHQubGVuZ3RoIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJKb2JzLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSBnb3QgbmVnYXRpdmUgbnVtYmVyXCIgKG4gOiBpbnQpICh0IDogdCldO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIG5cbjs7XG5cbmxldCBjYW5fcnVuX2Ffam9iIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA+IDBcblxubGV0IHJ1bl9qb2IgdCAoc2NoZWR1bGVyIDogU2NoZWR1bGVyLnQpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHQubnVtX2pvYnNfcnVuIDwtIHQubnVtX2pvYnNfcnVuICsgMTtcbiAgU2NoZWR1bGVyLnNldF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGYgYVxuOztcblxubGV0IHJ1bl9leHRlcm5hbF9qb2JzIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSA9XG4gIGxldCBleHRlcm5hbF9qb2JzID0gc2NoZWR1bGVyLmV4dGVybmFsX2pvYnMgaW5cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIGV4dGVybmFsX2pvYnMgPiAwIGRvXG4gICAgbGV0IChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKSA9XG4gICAgICBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBleHRlcm5hbF9qb2JzXG4gICAgaW5cbiAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBkb25lXG47O1xuXG5sZXQgcnVuX2pvYnMgKHR5cGUgYSkgdCBzY2hlZHVsZXIgPVxuICAoKiBXZSBkbyB0aGUgW3RyeS13aXRoXSBvdXRzaWRlIG9mIHRoZSBbd2hpbGVdIGJlY2F1c2UgaXQgaXMgY2hlYXBlciB0aGFuIGRvaW5nIGFcbiAgICAgW3RyeS13aXRoXSBmb3IgZWFjaCBqb2IuICopXG4gICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYmVmb3JlIGVudGVyaW5nIHRoZSBsb29wLCBzaW5jZSBpdCBtaWdodCBlbnF1ZXVlIGEgam9iLFxuICAgICBjaGFuZ2luZyBbdC5sZW5ndGhdLiAqKVxuICB0cnlcbiAgICBydW5fZXh0ZXJuYWxfam9icyB0IHNjaGVkdWxlcjtcbiAgICB3aGlsZSBjYW5fcnVuX2Ffam9iIHQgZG9cbiAgICAgIGxldCB0aGlzX2pvYiA9IG9mZnNldCB0IDAgaW5cbiAgICAgIGxldCBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgPVxuICAgICAgICBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzIHRoaXNfam9iKVxuICAgICAgaW5cbiAgICAgIGxldCBmIDogYSAtPiB1bml0ID0gT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyAodGhpc19qb2IgKyAxKSkgaW5cbiAgICAgIGxldCBhIDogYSA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMikpIGluXG4gICAgICAoKiBXZSBjbGVhciBvdXQgdGhlIGpvYiByaWdodCBub3cgc28gdGhhdCBpdCBpc24ndCBsaXZlIGF0IHRoZSBuZXh0IG1pbm9yXG4gICAgICAgICBjb2xsZWN0aW9uLiAgV2UgdHJpZWQgbm90IGRvaW5nIHRoaXMgYW5kIHNhdyBzaWduaWZpY2FudCAoMTUlIG9yIHNvKSBwZXJmb3JtYW5jZVxuICAgICAgICAgaGl0cyBkdWUgdG8gc3B1cmlvdXMgcHJvbW90aW9uLiAqKVxuICAgICAgc2V0IHQgMCBkdW1teV9lIGR1bW15X2YgZHVtbXlfYTtcbiAgICAgIHQuZnJvbnQgPC0gKHQuZnJvbnQgKyAxKSBsYW5kIHQubWFzaztcbiAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gdC5qb2JzX2xlZnRfdGhpc19jeWNsZSAtIDE7XG4gICAgICAoKiBJdCBpcyBPSyBpZiBbcnVuX2pvYl0gb3IgW3J1bl9leHRlcm5hbF9qb2JzXSByYWlzZXMsIGluIHdoaWNoIGNhc2UgdGhlIGV4biBpc1xuICAgICAgICAgaGFuZGxlZCBieSB0aGUgb3V0ZXIgdHJ5LXdpdGguICBUaGUgb25seSBzaWRlIGVmZmVjdHMgd2UgaGF2ZSBkb25lIGFyZSB0byB0YWtlXG4gICAgICAgICB0aGUgam9iIG91dCBvZiB0aGUgcXVldWUgYW5kIGRlY3JlbWVudCBbam9ic19sZWZ0X3RoaXNfY3ljbGVdLiAgW3J1bl9qb2JdIG9yXG4gICAgICAgICBbcnVuX2V4dGVybmFsX2pvYnNdIG1heSBzaWRlIGVmZmVjdCBbdF0sIGVpdGhlciBieSBlbnF1ZXVlaW5nIGpvYnMsIG9yIGJ5XG4gICAgICAgICBjbGVhcmluZyBbdF0uICopXG4gICAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICAgICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYXQgZWFjaCBpdGVyYXRpb24gb2YgdGhlIFt3aGlsZV0gbG9vcCwgZm9yIGZhaXJuZXNzLiAqKVxuICAgICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXJcbiAgICBkb25lO1xuICAgIE9rICgpXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAoKiBXZSBjYWxsIFtFeG4uYmFja3RyYWNlXSBpbW1lZGlhdGVseSBhZnRlciBjYXRjaGluZyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLCB0b1xuICAgICAgIGVuc3VyZSB0aGVyZSBpcyBubyBpbnRlcnZlbmluZyBjb2RlIHRoYXQgaW50ZXJmZXJlcyB3aXRoIHRoZSBnbG9iYWwgYmFja3RyYWNlXG4gICAgICAgc3RhdGUuICopXG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICBFcnJvciAoZXhuLCBiYWNrdHJhY2UpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGV4dGVybmFsIGZvcm1hdCA6IGZsb2F0IC0+IHN0cmluZyAtPiBzdHJpbmcgPSBcImNvcmVfdGltZV9uc19mb3JtYXRcIlxuXG4gICgqIFdlIHVzZSBhIG1vcmUgcGxlYXNhbnQgZm9ybWF0IHRoYW4gW0NvcmUuVGltZV9ucy5zZXhwX29mX3RdLFxuICAgICB3aGljaCBoYXMgdG8gYmUgbWVzc2llciBmb3Igcm91bmQgdHJpcHBhYmlsaXR5LiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIFslc2V4cFxuICAgICAgKGZvcm1hdCAodCB8PiB0b19zcGFuX3NpbmNlX2Vwb2NoIHw+IFNwYW4udG9fc2VjKSBcIiVZLSVtLSVkVCVIOiVNOiVTJXpcIiA6IHN0cmluZyldXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIGluY2x1ZGUgVGltaW5nX3doZWVsLkFsYXJtXG5cbiAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgKCogMS84dGggb2YgYSBtaWxsaXNlY29uZCBhbGFybV9wcmVjaXNpb24gc2VlbXMgc3VmZmljaWVudCB0byBhdm9pZCBoYXZpbmcgbWFueSBhbGFybXNcbiAgICAgaW4gdGhlIHNhbWUgaW50ZXJ2YWwsIHdoaWNoIGF2b2lkcyBxdWFkcmF0aWMgaW5zZXJ0aW9uIHNvcnQgd2hlbiBmaXJpbmcgYWxhcm1zLiAgQW5kXG4gICAgIHRoZSBsZXZlbCBiaXRzIGdpdmUgdXMgbGV2ZWxzIG9mID4xcywgPjFtLCA+MWgsID4xZC4gIFNlZSB0ZXN0IGluXG4gICAgIFsuLi90ZXN0L3Rlc3Rfc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWxdLiAqKVxuICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMzsgNjsgNjsgNSBdKVxuICAgICgpXG47O1xuXG50eXBlIGNhbGxiYWNrID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBJZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5TdGF0dXMudCA9XG4gICAgICAgIHwgRmlyZWQgKCogaW4gW2ZpcmVkX2V2ZW50c10sIHJlYWR5IHRvIHJ1biAqKVxuICAgICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgICAoKiBjdXJyZW50bHkgcnVubmluZyB0aGUgY2FsbGJhY2sgKGZvciBhIHBlcmlvZGljIGV2ZW50KSAqKVxuICAgICAgICB8IFNjaGVkdWxlZCAoKiBpbiB0aGUgdGltaW5nIHdoZWVsICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQgKCogbm90IGluIHRpbWluZyB3aGVlbCBvciBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICAgIGxldCB0cmFuc2l0aW9uX2lzX2FsbG93ZWQgfmZyb20gfnRvXyA9XG4gICAgICAgIG1hdGNoIGZyb20sIHRvXyB3aXRoXG4gICAgICAgIHwgKCBGaXJlZFxuICAgICAgICAgICwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50ICgqIHN0YXJ0ZWQgcnVubmluZyBjYWxsYmFjayAoZm9yIGEgcGVyaW9kaWMgZXZlbnQpICopXG4gICAgICAgICAgKVxuICAgICAgICB8ICggRmlyZWRcbiAgICAgICAgICAsIFVuc2NoZWR1bGVkXG4gICAgICAgICAgICAoKiBhYm9ydGVkLCBvciBzdGFydGVkIHJ1bm5pbmcgY2FsbGJhY2sgKGZvciBhIG5vbi1wZXJpb2RpYyBldmVudCkgKikgKVxuICAgICAgICAoKiBbcmVzY2hlZHVsZV8qXSBnb2VzIHRocm91Z2ggYW4gaW50ZXJtZWRpYXRlIFtGaXJlZCwgVW5zY2hlZHVsZWRdIHN0YXRlLFxuICAgICAgICAgICBzbyB3ZSBuZXZlciB0cmFuc2l0aW9uIGZyb20gW0ZpcmVkXSBkaXJlY3RseSB0byBbU2NoZWR1bGVkXS4gKilcbiAgICAgICAgfCAoIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgICAgICwgU2NoZWR1bGVkICgqIHNjaGVkdWxlZCBuZXh0IGl0ZXJhdGlvbiBvZiBhIHBlcmlvZGljIGV2ZW50ICopIClcbiAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQsIFVuc2NoZWR1bGVkICgqIGFib3J0ZWQgKilcbiAgICAgICAgfCBTY2hlZHVsZWQsIEZpcmVkICgqIG1vdmVkIGZyb20gdGltaW5nIHdoZWVsIHRvIFtmaXJlZF9ldmVudHNdICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBVbnNjaGVkdWxlZCAoKiBhYm9ydGVkICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQsIEZpcmVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgcGFzdCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBTY2hlZHVsZWQgKCogZXZlbnQgc2NoZWR1bGVkIGluIHRoZSBmdXR1cmUgKikgLT4gdHJ1ZVxuICAgICAgICB8IChGaXJlZCB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IFVuc2NoZWR1bGVkKSwgXyAtPiBmYWxzZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgZXZlbnQgPSBUeXBlcy5FdmVudC50XG5cbiAgICBsZXQgc2V4cF9vZl9ldmVudFxuICAgICAgICAgICh7IGFsYXJtID0gX1xuICAgICAgICAgICA7IGF0XG4gICAgICAgICAgIDsgY2FsbGJhY2sgPSBfXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBfXG4gICAgICAgICAgIDsgaW50ZXJ2YWxcbiAgICAgICAgICAgOyBuZXh0X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHByZXZfZmlyZWQgPSBfXG4gICAgICAgICAgIDsgc3RhdHVzXG4gICAgICAgICAgIH0gOlxuICAgICAgICAgICAgIGV2ZW50KVxuICAgICAgPVxuICAgICAgWyVzZXhwXG4gICAgICAgIHsgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgOyBhdCA6IFRpbWVfbnMudFxuICAgICAgICA7IGludGVydmFsIDogKFRpbWVfbnMuU3Bhbi50IG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICB9XVxuICAgIDs7XG5cbiAgICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgICAoKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0XG4gICAgICAgICB0byBbT2JqLm1hZ2ljXXMuICopXG4gICAgICBtb2R1bGUgRXZlbnRfaXNfYmxvY2sgOiBzaWcgZW5kID0gc3RydWN0XG4gICAgICAgIG9wZW4gVHlwZXNcbiAgICAgICAgb3BlbiBFdmVudFxuXG4gICAgICAgIHR5cGUgX3QgPSB0ID1cbiAgICAgICAgICB7ICgqIG11c3QgbmV2ZXIgYmUgaW1tZWRpYXRlICopXG4gICAgICAgICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICAgICAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICAgICAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgICAgICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgICAgIH1cbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5PcHRpb24udFxuXG4gICAgICAoKiBVc2luZyBhbiBpbW1lZGlhdGUgcmF0aGVyIHRoYW4gYSBzdGF0aWNhbGx5LWFsbG9jYXRlZCByZWNvcmQgaGVyZSBzZWVtcyB0b1xuICAgICAgICAgaW1wcm92ZSBwZXJmb3JtYW5jZSBub3RpY2VhYmx5IChbLi4vYmVuY2gvYmluL2JlbmNoX3RpbWVfc291cmNlLmV4ZV0gYmVuY2htYXJrXG4gICAgICAgICBpcyBmYXN0ZXIgYnkgfjEwbnMgcGVyIGFsYXJtKSwgcHJlc3VtYWJseSBiZWNhdXNlIGl0IGF2b2lkcyB0aGUgZXhwZW5zaXZlXG4gICAgICAgICBwYXJ0cyBvZiBjYW1sX21vZGlmeS4gKilcbiAgICAgIGxldCBub25lID0gKE9iai5tYWdpYyBOb25lIDogdCkgKCogYW4gYXJiaXRyYXJ5IGltbWVkaWF0ZSAqKVxuICAgICAgbGV0IHNvbWUgPSAoT2JqLm1hZ2ljIDogVHlwZXMuRXZlbnQudCAtPiB0KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHBoeXNfZXF1YWwgdCBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgZmlyc3Rfc29tZSB0MSB0MiA9IGlmIGlzX3NvbWUgdDEgdGhlbiB0MSBlbHNlIHQyXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gKE9iai5tYWdpYyA6IHQgLT4gVHlwZXMuRXZlbnQudClcblxuICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBvcGVuIE9wdGlvbmFsX3N5bnRheFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFslc2V4cCAoKV1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBldmVudCldXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuc2FmZV92YWx1ZSB0KVxuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50Lk9wdGlvbi52YWx1ZV9leG4gTm9uZV1cIl1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFNvbWUgZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gc29tZSBldmVudFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50LnQgPVxuICAgICAgeyAoKiBbYWxhcm1dIGlzIG5vbi1udWxsIGlmZiB0aGUgZXZlbnQgaXMgaW4gdGhlIHRpbWluZyB3aGVlbC4gKilcbiAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnRcbiAgICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW2ludGVydmFsXSBpcyB0aGUgcGVyaW9kIGZvciB0aGUgcGVyaW9kaWMgZXZlbnRzLiAqKVxuICAgICAgICBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICA7ICgqIFtuZXh0X2ZpcmVkXSBhbmQgW3ByZXZfZmlyZWRdIGNyZWF0ZSBhIGRvdWJseS1saW5rZWQgKG5vbi1jaXJjdWxhcikgbGlzdCBvZlxuICAgICAgICAgICBmaXJlZCBldmVudHMsIGxpbmtlZCB2aWEgdGhlc2UgZmllbGRzLiBBbiBldmVudCBpcyBhZGRlZCB0byB0aGUgbGlzdCB3aGVuXG4gICAgICAgICAgIGl0IGZpcmVzLCBlaXRoZXIgYmVjYXVzZSBpdCBpcyBhZGRlZCB3aXRoIGEgdGltZSBpbiB0aGUgcGFzdCwgb3JcbiAgICAgICAgICAgYmVjYXVzZSB0aW1lIGFkdmFuY2VzLiBbYWR2YW5jZV9ieV9hbGFybXNdIGl0ZXJhdGVzIG92ZXIgdGhlIGV2ZW50c1xuICAgICAgICAgICBpbiBbbmV4dF9maXJlZF0gYW5kIHJ1bnMgdGhlbSwgZW1wdHlpbmcgdGhlIGxpc3QuIFtub25lXSBpcyB1c2VkIHRvXG4gICAgICAgICAgIGluZGljYXRlIHRoZSBlbmQgb2YgdGhlIGxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cy4gKilcbiAgICAgICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBzZXhwX29mX3QgPSBbJXNleHBfb2Y6IGV2ZW50XVxuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgICB+YWxhcm06XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAgICAgKEFsYXJtLmlzX251bGwgYWxhcm0pXG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBGaXJlZCB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFVuc2NoZWR1bGVkIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfCBTY2hlZHVsZWQgLT4gZmFsc2UpKSlcbiAgICAgICAgICB+YXQ6aWdub3JlXG4gICAgICAgICAgfmNhbGxiYWNrOmlnbm9yZVxuICAgICAgICAgIH5leGVjdXRpb25fY29udGV4dDppZ25vcmVcbiAgICAgICAgICB+aW50ZXJ2YWw6aWdub3JlXG4gICAgICAgICAgfm5leHRfZmlyZWQ6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobmV4dF9maXJlZCA6IE9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgKCogW25leHRfZmlyZWRdIGNhbiBiZSBbTm9uZV0gZXZlbiBpZiB0aGUgZXZlbnQgc3RhdHVzIGlzIEZpcmVkLCBhc3N1bWluZ1xuICAgICAgICAgICAgICAgICAgICBpdCdzIGF0IHRoZSBlbmQgb2YgdGhlIGZpcmVkIGV2ZW50cyBsaXN0ICopXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgbmV4dF9maXJlZCAtPlxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBTdGF0dXMudF0gdC5zdGF0dXMgfmV4cGVjdDpGaXJlZDtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChPcHRpb24uc29tZSB0KSBuZXh0X2ZpcmVkLnByZXZfZmlyZWQpKSlcbiAgICAgICAgICB+cHJldl9maXJlZDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHByZXZfZmlyZWQgLT5cbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChwcmV2X2ZpcmVkIDogT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbcHJldl9maXJlZF0gY2FuIGJlIFtOb25lXSBldmVuIGlmIHRoZSBldmVudCBzdGF0dXMgaXMgRmlyZWQsIGFzc3VtaW5nXG4gICAgICAgICAgICAgICAgICAgIGl0J3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyZWQgZXZlbnRzIGxpc3QgKilcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFN0YXR1cy50XSB0LnN0YXR1cyB+ZXhwZWN0OkZpcmVkO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKE9wdGlvbi5zb21lIHQpIHByZXZfZmlyZWQubmV4dF9maXJlZCkpKVxuICAgICAgICAgIH5zdGF0dXM6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biAoc3RhdHVzIDogU3RhdHVzLnQpIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgLT4gYXNzZXJ0IChDb3JlLk9wdGlvbi5pc19zb21lIHQuaW50ZXJ2YWwpXG4gICAgICAgICAgICAgICB8IEZpcmVkIHwgVW5zY2hlZHVsZWQgfCBTY2hlZHVsZWQgLT4gKCkpKSlcbiAgICA7O1xuXG4gICAgbGV0IHNldF9zdGF0dXMgdCB0b18gPVxuICAgICAgbGV0IGZyb20gPSB0LnN0YXR1cyBpblxuICAgICAgaWYgbm90IChTdGF0dXMudHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18pXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFslaGVyZV1cbiAgICAgICAgICAgICAgXCJidWcgLS0gc2V0X3N0YXR1cyB0cmFuc2l0aW9uIG5vdCBhbGxvd2VkXCJcbiAgICAgICAgICAgICAgKGZyb20gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgKHRvXyA6IFN0YXR1cy50KVxuICAgICAgICAgICAgICB+ZXZlbnQ6KHQgOiB0KV07XG4gICAgICB0LnN0YXR1cyA8LSB0b19cbiAgICA7O1xuXG4gICAgbGV0IHNldF9zdGF0dXNfaWYgfmlzIHQgdG9fID0gaWYgU3RhdHVzLmVxdWFsIGlzIHQuc3RhdHVzIHRoZW4gc2V0X3N0YXR1cyB0IHRvX1xuICAgIGxldCBzY2hlZHVsZWRfYXQgPSBhdFxuICBlbmRcblxuICBtb2R1bGUgSm9iX29yX2V2ZW50ID0gc3RydWN0XG4gICAgaW5jbHVkZSBKb2Jfb3JfZXZlbnRcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgIGxldCAoSyBrKSA9IGtpbmQgdCBpblxuICAgICAgbWF0Y2ggaywgcHJvamVjdCBrIHQgd2l0aFxuICAgICAgfCBFdmVudCwgZXZlbnQgLT4gWyVzZXhwIChldmVudCA6IEV2ZW50LnQpXVxuICAgICAgfCBKb2IsIF8gLT5cbiAgICAgICAgKCogV2UgZG9uJ3QgZGlzcGxheSB0aGUgW0pvYi50XXMgaW4gW2V2ZW50c10gYmVjYXVzZSB0aG9zZSBhcmVcbiAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgIFslbWVzc2FnZSBcIjxKb2IudD5cIl1cbiAgICA7O1xuICBlbmRcblxuICB0eXBlIC0ncncgdCA9ICdydyBUeXBlcy5UaW1lX3NvdXJjZS50MSA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7ICgqIFthZHZhbmNlX2Vycm9yc10gYWNjdW11bGF0ZXMgZXJyb3JzIHJhaXNlZCBieSBhbGFybXMgcnVuIGJ5XG4gICAgICAgICBbYWR2YW5jZV9ieV9hbGFybXNdLiAqKVxuICAgICAgbXV0YWJsZSBhZHZhbmNlX2Vycm9ycyA6IEVycm9yLnQgbGlzdFxuICAgIDsgKCogW2FtX2FkdmFuY2luZ10gaXMgdHJ1ZSBvbmx5IGR1cmluZyBbYWR2YW5jZV9ieV9hbGFybXNdLCBhbmQgaXMgdXNlZCB0byBjYXVzZVxuICAgICAgICAgY2FsbGJhY2tzIHRvIHJhaXNlIGlmIHRoZXkgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdLiAqKVxuICAgICAgbXV0YWJsZSBhbV9hZHZhbmNpbmcgOiBib29sXG4gICAgOyBldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgKCogW2ZpcmVkX2V2ZW50c10gaXMgdGhlIGZyb250IG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2YgZmlyZWQgZXZlbnRzLFxuICAgICAgICAgd2hpY2ggaXMgc3RvcmVkIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW0V2ZW50LmF0XS4gKilcbiAgICAgIG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7ICgqIFttb3N0X3JlY2VudGx5X2ZpcmVkXSBpcyB0aGUgZXZlbnQgdGhhdCB3YXMgbW9zdCByZWNlbnRseSBpbnNlcnRlZCBpbnRvXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gSXQgaXMgdXNlZCBhcyBhbiBvcHRpbWl6YXRpb24gdG8gYWxsb3cgaW5zZXJ0aW9uIG9mXG4gICAgICAgICBzdWJzZXF1ZW50IGV2ZW50cyB0byBzdGFydCBsYXRlciBpbiB0aGUgbGlzdCByYXRoZXIgdGhhbiBhdCB0aGUgYmVnaW5uaW5nLlxuICAgICAgICAgSXQgc3BlY2lmaWNhbGx5IGF2b2lkcyBxdWFkcmF0aWMgYmVoYXZpb3Igd2hlbiBpbnNlcnRpbmcgbXVsdGlwbGUgZXZlbnRzXG4gICAgICAgICB0aGF0IGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0aW1lIC0tIHRoZSB0aW1lIHNvdXJjZSBmaXJlcyBzdWNoIGV2ZW50cyBpblxuICAgICAgICAgdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZCwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBpbiB0aGF0IHNhbWUgb3JkZXIgaW5cbiAgICAgICAgIFtmaXJlZF9ldmVudHNdLiAqKVxuICAgICAgbXV0YWJsZSBtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7ICgqIFdlIHN0b3JlIFtoYW5kbGVfZmlyZWRdIGluIFt0XSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IGV2ZXJ5IHRpbWUgd2UgY2FsbFxuICAgICAgICAgW2FkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgaGFuZGxlX2ZpcmVkIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyMC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgKCogV2UgZG9uJ3QgaW5jbHVkZSB0aGUgW2lkXSBpbiB0aGUgc2V4cCBiZWNhdXNlIHRoZSB1c2VyIChyaWdodGx5KSBjYW4ndCBjb250cm9sIGl0LCBzb1xuICAgICBpdCdzIGhhcmQgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljIGluIHRlc3RzLiAqKVxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBpZCA9IF9cbiAgICAgICAgOyBhZHZhbmNlX2Vycm9ycyA9IF9cbiAgICAgICAgOyBhbV9hZHZhbmNpbmcgPSBfXG4gICAgICAgIDsgZXZlbnRzXG4gICAgICAgIDsgZmlyZWRfZXZlbnRzID0gX1xuICAgICAgICA7IGhhbmRsZV9maXJlZCA9IF9cbiAgICAgICAgOyBpc193YWxsX2Nsb2NrXG4gICAgICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IF9cbiAgICAgICAgOyBzY2hlZHVsZXIgPSBfXG4gICAgICAgIH1cbiAgICA9XG4gICAgbGV0IG5vdyA9IFRpbWluZ193aGVlbC5ub3cgZXZlbnRzIGluXG4gICAgaWYgaXNfd2FsbF9jbG9ja1xuICAgIHRoZW4gWyVtZXNzYWdlIFwid2FsbF9jbG9ja1wiIChub3cgOiBUaW1lX25zLnQpXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGFsbF9ldmVudHMgPSByZWYgW10gaW5cbiAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgIGFsbF9ldmVudHMgOj0gKEFsYXJtLmF0IGV2ZW50cyBhbGFybSwgQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSA6OiAhYWxsX2V2ZW50cyk7XG4gICAgICBsZXQgZXZlbnRzID1cbiAgICAgICAgTGlzdC5zb3J0ICFhbGxfZXZlbnRzIH5jb21wYXJlOihmdW4gKGF0MSwgXykgKGF0MiwgXykgLT4gVGltZV9ucy5jb21wYXJlIGF0MSBhdDIpXG4gICAgICAgIHw+IExpc3QubWFwIH5mOnNuZFxuICAgICAgaW5cbiAgICAgIFslbWVzc2FnZSBcIlwiIChub3cgOiBUaW1lX25zLnQpIChldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBsaXN0KV0pXG4gIDs7XG5cbiAgbGV0IHRpbWluZ193aGVlbF9ub3cgdCA9IFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHNcblxuICBsZXQgaXNfaW5fZmlyZWRfZXZlbnRzID1cbiAgICBsZXQgcmVjIHNlYXJjaCBjdXJyZW50IH50YXJnZXRfZXZlbnQgPVxuICAgICAgbWF0Y2glb3B0aW9uYWwgKGN1cnJlbnQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgY3VycmVudCAtPlxuICAgICAgICBwaHlzX2VxdWFsIGN1cnJlbnQgdGFyZ2V0X2V2ZW50IHx8IHNlYXJjaCBjdXJyZW50Lm5leHRfZmlyZWQgfnRhcmdldF9ldmVudFxuICAgIGluXG4gICAgZnVuIHQgdGFyZ2V0X2V2ZW50IC0+IHNlYXJjaCB0LmZpcmVkX2V2ZW50cyB+dGFyZ2V0X2V2ZW50XG4gIDs7XG5cbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgKHR5cGUgcncpIH5qb2I6KGpvYl9pbnZhcmlhbnQgOiBKb2IudCAtPiB1bml0KSAodCA6IHJ3IHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+aWQ6aWdub3JlXG4gICAgICAgIH5hZHZhbmNlX2Vycm9yczppZ25vcmVcbiAgICAgICAgfmFtX2FkdmFuY2luZzppZ25vcmVcbiAgICAgICAgfmV2ZW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBldmVudHMgLT5cbiAgICAgICAgICAgICBUaW1pbmdfd2hlZWwuaW52YXJpYW50IGlnbm9yZSBldmVudHM7XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLml0ZXIgZXZlbnRzIH5mOihmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICAgIGxldCBqb2Jfb3JfZXZlbnQgPSBBbGFybS52YWx1ZSBldmVudHMgYWxhcm0gaW5cbiAgICAgICAgICAgICAgIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgICAgICAgICAgICAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICAgICAgICAgICAgICAgfCBKb2IsIGpvYiAtPiBqb2JfaW52YXJpYW50IGpvYlxuICAgICAgICAgICAgICAgfCBFdmVudCwgZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIGFsYXJtIGV2ZW50LmFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XSBldmVudC5hdCB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgYWxhcm0pO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBFdmVudC5TdGF0dXMudF0gZXZlbnQuc3RhdHVzIH5leHBlY3Q6U2NoZWR1bGVkO1xuICAgICAgICAgICAgICAgICBFdmVudC5pbnZhcmlhbnQgZXZlbnQpKSlcbiAgICAgICAgfmZpcmVkX2V2ZW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAoZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIC0+XG4gICAgICAgICAgICAgbGV0IHJlYyBjaGVja19ldmVudCAoY3VycmVudCA6IEV2ZW50LnQpID1cbiAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCAodGltaW5nX3doZWVsX25vdyB0KSk7XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbC5FdmVudC5PcHRpb24gY3VycmVudC5uZXh0X2ZpcmVkIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgfCBTb21lIG5leHQgLT5cbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBjdXJyZW50LmF0IG5leHQuYXQpO1xuICAgICAgICAgICAgICAgICBjaGVja19ldmVudCBuZXh0XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbC5FdmVudC5PcHRpb24gZmlyZWRfZXZlbnRzIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgZXZlbnQgLT4gY2hlY2tfZXZlbnQgZXZlbnQpKVxuICAgICAgICB+aGFuZGxlX2ZpcmVkOmlnbm9yZVxuICAgICAgICB+aXNfd2FsbF9jbG9jazppZ25vcmVcbiAgICAgICAgfm1vc3RfcmVjZW50bHlfZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbW9zdF9yZWNlbnRseV9maXJlZCAtPlxuICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgZXZlbnQgLT4gYXNzZXJ0IChpc19pbl9maXJlZF9ldmVudHMgdCBldmVudCkpKVxuICAgICAgICB+c2NoZWR1bGVyOmlnbm9yZSlcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPSBpbnZhcmlhbnRfd2l0aF9qb2JzIH5qb2I6KGZ1biBfIC0+ICgpKSB0XG5lbmRcblxub3BlbiBUMVxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlYWRfd3JpdGUgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5lbmRcblxubGV0IGlkIHQgPSB0LmlkXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbGVuZ3RoIHQgPSBUaW1pbmdfd2hlZWwubGVuZ3RoIHQuZXZlbnRzXG5sZXQgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0ID0gVGltaW5nX3doZWVsLm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdC5ldmVudHNcbmxldCByZWFkX29ubHkgKHQgOiBbPiByZWFkIF0gVDEudCkgPSAodCA6PiB0KVxuXG4oKiBbZmlyZSB0IGV2ZW50XSBzZXRzIFtldmVudC5zdGF0dXMgPSBGaXJlZF0gYW5kIGluc2VydHMgW2V2ZW50XSBpbnRvXG4gICBbdC5maXJlZF9ldmVudHNdIGluIHNvcnRlZCB0aW1lIG9yZGVyLiAqKVxubGV0IGZpcmUgdCAoZXZlbnQgOiBFdmVudC50KSA9XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgRmlyZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIEFsYXJtLm51bGwgKCk7XG4gIGxldCAoKSA9XG4gICAgKCogSWYgW2V2ZW50XSBiZWxvbmdzIGFmdGVyIFt0Lm1vc3RfcmVjZW50bHlfZmlyZWRdLCB0aGVuIHdlIHN0YXJ0IHRoZVxuICAgICAgIGluc2VydGlvbiB0aGVyZSByYXRoZXIgdGhhbiBhdCB0aGUgZnJvbnQgb2YgW3QuZmlyZWRfZXZlbnRzXS4gVGhpcyB3b3Jrc1xuICAgICAgIG5pY2VseSBpZiB3ZSdyZSBnZXR0aW5nIHRoZSBhbGFybXMgaW4gbm9uLWRlY3JlYXNpbmcgdGltZSBvcmRlciwgd2hpY2ggaXNcbiAgICAgICBjbG9zZSB0byB3aGF0IFtUaW1pbmdfd2hlZWxdIHByb3ZpZGVzIChhbHRob3VnaCBbVGltaW5nX3doZWVsXSBkb2Vzbid0XG4gICAgICAgZ3VhcmFudGVlIHRpbWUgb3JkZXJpbmcgZm9yIHRpbWVzIGluIHRoZSBzYW1lIGludGVydmFsKS4gKilcbiAgICBtYXRjaCVvcHRpb25hbCAodC5tb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IFNvbWUgbW9zdF9yZWNlbnRseV9maXJlZCB3aGVuIFRpbWVfbnMuKCA8PSApIG1vc3RfcmVjZW50bHlfZmlyZWQuYXQgZXZlbnQuYXQgLT5cbiAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgbW9zdF9yZWNlbnRseV9maXJlZDtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbW9zdF9yZWNlbnRseV9maXJlZC5uZXh0X2ZpcmVkXG4gICAgfCBfIC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSB0LmZpcmVkX2V2ZW50c1xuICBpblxuICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnQ7XG4gICgqIFdlIHVzZSBbVGltZV9ucy4oIDw9ICldIHJhdGhlciB0aGFuIFs8XSBzbyB0aGF0IFtldmVudF0gaXMgYWRkZWQgYWZ0ZXIgb3RoZXJcbiAgICAgZXZlbnRzIGF0IHRoZSBzYW1lIHRpbWUuIFNpbmNlIFtUaW1pbmdfd2hlZWxdIGZpcmVzIGFsYXJtcyBpbiBhIGJ1Y2tldCBpblxuICAgICB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLCB1c2luZyBbPD1dIGtlZXBzIGV2ZW50cyBhdCB0aGUgc2FtZVxuICAgICB0aW1lIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQuICopXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICBsZXQgY29udGludWUgPSBUaW1lX25zLiggPD0gKSBuZXh0LmF0IGV2ZW50LmF0IGluXG4gICAgICBpZiBjb250aW51ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gZXZlbnQubmV4dF9maXJlZDtcbiAgICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSBuZXh0Lm5leHRfZmlyZWQpO1xuICAgICAgY29udGludWVcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmV4dCAtPiBuZXh0LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbiAgaW5cbiAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICB8IE5vbmUgLT4gdC5maXJlZF9ldmVudHMgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbiAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG47O1xuXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcblxubGV0IG5leHRfYWxhcm1fcnVuc19hdCB0ID1cbiAgaWYgRXZlbnQuT3B0aW9uLmlzX3NvbWUgdC5maXJlZF9ldmVudHNcbiAgdGhlbiBTb21lICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gIGVsc2UgVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbjs7XG5cbmxldCBub3cgdCA9IGlmIHQuaXNfd2FsbF9jbG9jayB0aGVuIFRpbWVfbnMubm93ICgpIGVsc2UgdGltaW5nX3doZWVsX25vdyB0XG5sZXQgdGltaW5nX3doZWVsX25vdyA9IHRpbWluZ193aGVlbF9ub3dcblxubGV0IHNjaGVkdWxlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IFNjaGVkdWxlZDtcbiAgZXZlbnQuYWxhcm0gPC0gVGltaW5nX3doZWVsLmFkZCB0LmV2ZW50cyB+YXQ6ZXZlbnQuYXQgKGV2ZW50IHw+IEpvYl9vcl9ldmVudC5vZl9ldmVudClcbjs7XG5cbmxldCByZW1vdmVfZnJvbV9maXJlZCB0IChldmVudCA6IEV2ZW50LnQpIH5uZXdfc3RhdHVzID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAodC5tb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbW9zdF9yZWNlbnRseV9maXJlZCAtPlxuICAgICAgaWYgcGh5c19lcXVhbCBldmVudCBtb3N0X3JlY2VudGx5X2ZpcmVkXG4gICAgICB0aGVuXG4gICAgICAgIHQubW9zdF9yZWNlbnRseV9maXJlZCA8LSBFdmVudC5PcHRpb24uZmlyc3Rfc29tZSBldmVudC5uZXh0X2ZpcmVkIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQucHJldl9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgICB8IFNvbWUgcHJldiAtPiBwcmV2Lm5leHRfZmlyZWQgPC0gZXZlbnQubmV4dF9maXJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmV4dCAtPiBuZXh0LnByZXZfZmlyZWQgPC0gZXZlbnQucHJldl9maXJlZFxuICBpblxuICBldmVudC5uZXh0X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IG5ld19zdGF0dXNcbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBpbmNsdWRlIEV2ZW50XG5cbiAgbGV0IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICB7IGFsYXJtID0gQWxhcm0ubnVsbCAoKVxuICAgIDsgYXRcbiAgICA7IGNhbGxiYWNrXG4gICAgOyBleGVjdXRpb25fY29udGV4dCA9IHQuc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbiAgICA7IGludGVydmFsXG4gICAgOyBuZXh0X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHByZXZfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc3RhdHVzID0gVW5zY2hlZHVsZWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGFkZCB0IGV2ZW50ID1cbiAgICBpZiBUaW1lX25zLiggPD0gKSBldmVudC5hdCAodGltaW5nX3doZWVsX25vdyB0KVxuICAgIHRoZW4gZmlyZSB0IGV2ZW50XG4gICAgZWxzZSBzY2hlZHVsZSB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hbmRfYWRkIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgPVxuICAgIGxldCBldmVudCA9IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrIGluXG4gICAgYWRkIHQgZXZlbnQ7XG4gICAgZXZlbnRcbiAgOztcblxuICBsZXQgYXQgdCBhdCBjYWxsYmFjayA9IGNyZWF0ZV9hbmRfYWRkIHQgfmF0IH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuXG4gIGxldCBhZnRlciB0IHNwYW4gY2FsbGJhY2sgPVxuICAgIGNyZWF0ZV9hbmRfYWRkIHQgfmF0OihUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbikgfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuID1cbiAgICBsZXQgYWxhcm1fcHJlY2lzaW9uID0gYWxhcm1fcHJlY2lzaW9uIHQgaW5cbiAgICBpZiBUaW1lX25zLlNwYW4uKCA8ICkgc3BhbiBhbGFybV9wcmVjaXNpb25cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW50ZXJ2YWwgc3BhbiBzbWFsbGVyIHRoYW4gYWxhcm0gcHJlY2lzaW9uXCJcbiAgICAgICAgICAgIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXG4gICAgICAgICAgICAoYWxhcm1fcHJlY2lzaW9uIDogVGltZV9ucy5TcGFuLnQpXVxuICA7O1xuXG4gIGxldCBhdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgICByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbjtcbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDoobm93IHQpIH5pbnRlcnZhbDooU29tZSBzcGFuKSB+Y2FsbGJhY2tcbiAgOztcblxuICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgT2tcbiAgICAgIHwgUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IChldmVudCA6IHQpIDogQWJvcnRfcmVzdWx0LnQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgLT5cbiAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgU29tZSAoXyA6IFRpbWVfbnMuU3Bhbi50KSAtPlxuICAgICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgICAgIGV2ZW50LnN0YXR1cyA8LSBVbnNjaGVkdWxlZDtcbiAgICAgICAgIE9rKVxuICAgIHwgRmlyZWQgLT5cbiAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM6VW5zY2hlZHVsZWQ7XG4gICAgICBPa1xuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IFVuc2NoZWR1bGVkO1xuICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgIGV2ZW50LmFsYXJtIDwtIEFsYXJtLm51bGwgKCk7XG4gICAgICBPa1xuICAgIHwgVW5zY2hlZHVsZWQgLT4gUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICA7O1xuXG4gIGxldCBhYm9ydF9pZl9wb3NzaWJsZSB0IGV2ZW50ID0gaWdub3JlIChhYm9ydCB0IGV2ZW50IDogQWJvcnRfcmVzdWx0LnQpXG5cbiAgbGV0IGFib3J0X2V4biB0IGV2ZW50ID1cbiAgICBtYXRjaCBhYm9ydCB0IGV2ZW50IHdpdGhcbiAgICB8IE9rIC0+ICgpXG4gICAgfCByZWFzb24gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbU3luY2hyb25vdXNfdGltZV9zb3VyY2UuYWJvcnRfZXhuXSBjYW5ub3QgYWJvcnQgZXZlbnRcIlxuICAgICAgICAgICAgKHJlYXNvbiA6IEFib3J0X3Jlc3VsdC50KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHQgY2FsbGJhY2sgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQ6VGltZV9ucy5lcG9jaCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgaXNfc2NoZWR1bGVkIChldmVudCA6IHQpID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgRmlyZWQgLT4gdHJ1ZVxuICAgIHwgVW5zY2hlZHVsZWQgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCAoZXZlbnQgOiB0KSBhdCB+aW50ZXJ2YWwgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCAoSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgRmlyZWQpIGFzIHN0YXR1cyAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJXNleHAgXCJjYW5ub3Qgc2NoZWR1bGUgYW4gZXZlbnQgd2l0aCBzdGF0dXNcIiwgKHN0YXR1cyA6IEV2ZW50LlN0YXR1cy50KV1cbiAgICB8IFVuc2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGV2ZW50LmludGVydmFsIDwtIGludGVydmFsO1xuICAgICAgYWRkIHQgZXZlbnQ7XG4gICAgICBPayAoKVxuICA7O1xuXG4gIGxldCBzY2hlZHVsZV9hdCB0IGV2ZW50IGF0ID0gc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCBldmVudCBhdCB+aW50ZXJ2YWw6Tm9uZVxuICBsZXQgc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gc2NoZWR1bGVfYXQgdCBldmVudCAoVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pXG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVydmFscyB0IGV2ZW50IHNwYW4gPVxuICAgIHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuO1xuICAgIHNjaGVkdWxlX2F0X2ludGVybmFsIHQgZXZlbnQgKG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbilcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hdCB0IGV2ZW50IGF0IDogdW5pdCA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IC0+XG4gICAgICAoKiBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgZXZlbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSBbZmlyZWRdLiAqKVxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGlmIFRpbWVfbnMuKCA+ICkgYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgIHRoZW4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgdC5ldmVudHMgZXZlbnQuYWxhcm0gfmF0XG4gICAgICBlbHNlIChcbiAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgICAgZmlyZSB0IGV2ZW50KVxuICAgIHwgVW5zY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgIGFkZCB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IGV2ZW50IChUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbilcblxuZW5kXG5cbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hZnRlciB0IHNwYW4gY2FsbGJhY2sgOiBFdmVudC50KVxubGV0IHJ1bl9hdCB0IGF0IGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hdCB0IGF0IGNhbGxiYWNrIDogRXZlbnQudClcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgaWdub3JlIChFdmVudC5hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrIDogRXZlbnQudClcbjs7XG5cbnR5cGUgc2VuZF9leG4gPSBNb25pdG9yMC50IC0+ID9iYWNrdHJhY2U6WyBgR2V0IHwgYFRoaXMgb2YgQmFja3RyYWNlLnQgXSAtPiBleG4gLT4gdW5pdFxuXG5sZXQgcnVuX2ZpcmVkX2V2ZW50cyB0IH4oc2VuZF9leG4gOiBzZW5kX2V4biBvcHRpb24pID1cbiAgbGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGluXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQuZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgZXZlbnQgLT5cbiAgICAgIChtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgVW5zY2hlZHVsZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBGaXJlZCAtPlxuICAgICAgICAgbGV0IG5ld19zdGF0dXMgPVxuICAgICAgICAgICBtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiAoVW5zY2hlZHVsZWQgOiBFdmVudC5TdGF0dXMudClcbiAgICAgICAgICAgfCBTb21lIF8gLT4gKEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCA6IEV2ZW50LlN0YXR1cy50KVxuICAgICAgICAgaW5cbiAgICAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM7XG4gICAgICAgICAoKiBXZSBzZXQgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgW2V2ZW50LmNhbGxiYWNrXSBydW5zIGluIHRoZSBzYW1lIGNvbnRleHRcbiAgICAgICAgICAgIHRoYXQgd2FzIGluIHBsYWNlIHdoZW4gW2V2ZW50XSB3YXMgY3JlYXRlZC4gKilcbiAgICAgICAgIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0O1xuICAgICAgICAgKCogQW55IG1vZGlmaWNhdGlvbiBvZiBbc3RhdHVzXSBiZWxvdyBuZWVkcyB0byBmaXJzdCBjaGVjayB0aGF0IHRoZSBldmVudCBpc1xuICAgICAgICAgICAgc3RpbGwgW0hhcHBlbmluZ19wZXJpb2RpY19ldmVudF0uIElmIHRoZSBldmVudCBzdGF0dXMgaXMgbm90XG4gICAgICAgICAgICBbSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XSB0aGVuIHRoZSBldmVudCdzIGNhbGxiYWNrIG11c3QgaGF2ZSByZXNjaGVkdWxlZCB0aGVcbiAgICAgICAgICAgIGV2ZW50LiBJbiB0aGF0IGNhc2UsIGRvIG5vdCBzZXQgdGhlIHN0YXR1cyBvciBhdHRlbXB0IHRvIHJlc2NoZWR1bGUgYVxuICAgICAgICAgICAgcmVwZWF0aW5nIGV2ZW50LlxuXG4gICAgICAgICAgICBUaGlzIGNvZGUgY291bGQgYmUgbXVjaCBzaW1wbGVyIGlmIHdlIGltbWVkaWF0ZWx5IHJlc2NoZWR1bGVkIHRoZSBldmVudCBiZWZvcmVcbiAgICAgICAgICAgIHJ1bm5pbmcgdGhlIGNhbGxiYWNrIChubyBuZWVkIGZvciB0aGUgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHN0YXRlIHRoZW4pLlxuICAgICAgICAgICAgT25lIHJlYXNvbiB3ZSBkb24ndCBkbyB0aGF0IGlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBhdXRvbWF0aWNhbGx5IHJlc2NoZWR1bGVcbiAgICAgICAgICAgIGEgcGVyaW9kaWMgZXZlbnQgaWYgaXRzIGNhbGxiYWNrIHJhaXNlcy4gKilcbiAgICAgICAgIChtYXRjaCBldmVudC5jYWxsYmFjayAoKSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAobWF0Y2ggc2VuZF9leG4gd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiB0LmFkdmFuY2VfZXJyb3JzIDwtIEVycm9yLm9mX2V4biBleG4gOjogdC5hZHZhbmNlX2Vycm9yc1xuICAgICAgICAgICAgIHwgU29tZSBzZW5kX2V4biAtPlxuICAgICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgICAgICAgIHNlbmRfZXhuIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJhY2t0cmFjZSkpO1xuICAgICAgICAgICAgRXZlbnQuc2V0X3N0YXR1c19pZiB+aXM6SGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50IFVuc2NoZWR1bGVkXG4gICAgICAgICAgfCAoKSAtPlxuICAgICAgICAgICAgKG1hdGNoIGV2ZW50LmludGVydmFsIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gRXZlbnQuc2V0X3N0YXR1c19pZiB+aXM6SGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50IFVuc2NoZWR1bGVkXG4gICAgICAgICAgICAgfCBTb21lIGludGVydmFsIC0+XG4gICAgICAgICAgICAgICBpZiBFdmVudC5TdGF0dXMuZXF1YWwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50LnN0YXR1c1xuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICgqIFRoZSBldmVudCdzIGNhbGxiYWNrIGRpZCBub3QgcmVzY2hlZHVsZSB0aGUgZXZlbnQuIFNvIHJlc2NoZWR1bGUgdGhlXG4gICAgICAgICAgICAgICAgICAgIHJlcGVhdGluZyB0aW1lciBiYXNlZCBvbiB0aGUgbGFzdCBbYXRdIHRpbWUuICopXG4gICAgICAgICAgICAgICAgIGV2ZW50LmF0XG4gICAgICAgICAgICAgICAgIDwtIFRpbWVfbnMubmV4dF9tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICAgICAgfmJhc2U6ZXZlbnQuYXRcbiAgICAgICAgICAgICAgICAgICAgICB+YWZ0ZXI6KHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgICAgICAgICAgICAgICAgICB+aW50ZXJ2YWw7XG4gICAgICAgICAgICAgICAgIHNjaGVkdWxlIHQgZXZlbnQpKSk7XG4gICAgICAgICB0cnVlKVxuICBkb1xuICAgICgpXG4gIGRvbmU7XG4gIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbjs7XG5cbmxldCBhbnlfZmlyZWRfZXZlbnRzX3RvX3J1biB0ID0gRXZlbnQuT3B0aW9uLmlzX3NvbWUgKHQuZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG4gPVxuICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayB0LmV2ZW50cyB+dG9fIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmZpcmVfcGFzdF9hbGFybXMgdC5ldmVudHMgfmhhbmRsZV9maXJlZDp0LmhhbmRsZV9maXJlZDtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4biA9XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4blxuOztcblxubGV0IHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4biA9XG4gIGlmIHQuYW1fYWR2YW5jaW5nXG4gIHRoZW5cbiAgICByYWlzZV9zIFslc2V4cCBcImNhbm5vdCBjYWxsIFthZHZhbmNlX2J5X2FsYXJtc10gb3IgW2FkdmFuY2VfZGlyZWN0bHldIGZyb20gY2FsbGJhY2tcIl07XG4gIHQuYW1fYWR2YW5jaW5nIDwtIHRydWU7XG4gIChtYXRjaCB0LmFkdmFuY2VfZXJyb3JzIHdpdGhcbiAgIHwgW10gLT4gKClcbiAgIHwgXyAtPiB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdKTtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGZpbmlzaF9hZHZhbmNpbmcgdCA9XG4gIHQuYW1fYWR2YW5jaW5nIDwtIGZhbHNlO1xuICBtYXRjaCB0LmFkdmFuY2VfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiBPayAoKVxuICB8IGVycm9ycyAtPlxuICAgIHQuYWR2YW5jZV9lcnJvcnMgPC0gW107XG4gICAgRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJyb3JzKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zIHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhY29udGludWUgZG9cbiAgICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgdC5ldmVudHNcbiAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbWluX2FsYXJtX3RpbWUgPSBUaW1pbmdfd2hlZWwubWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyBpblxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbWluX2FsYXJtX3RpbWUgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXzptaW5fYWxhcm1fdGltZSB+c2VuZF9leG4pXG4gIGRvbmU7XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXNfYnkgdCBieSA9IGFkdmFuY2VfYnlfYWxhcm1zIHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuXG5sZXQgYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfdGltaW5nX3doZWVsX2ludGVydmFsIHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhY29udGludWUgZG9cbiAgICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgdC5ldmVudHNcbiAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dF9hbGFybV9maXJlc19hdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB0LmV2ZW50cyBpblxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbmV4dF9hbGFybV9maXJlc19hdCB0b19cbiAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogV2UgdXNlIHRoZSBhY3R1YWwgYWxhcm0gdGltZSwgcmF0aGVyIHRoYW4gW25leHRfYWxhcm1fZmlyZXNfYXRdLCBzbyBhcyBub3QgdG9cbiAgICAgICAgICAgZXhwb3NlIChvciBhY2N1bXVsYXRlIGVycm9ycyBhc3NvY2lhdGVkIHdpdGgpIHRoZSBwcmVjaXNpb24gb2ZcbiAgICAgICAgICAgW1RpbWluZ193aGVlbF0uICopXG4gICAgICAgIGFkdmFuY2VfaW50ZXJuYWxcbiAgICAgICAgICB0XG4gICAgICAgICAgfnRvXzooVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMpXG4gICAgICAgICAgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9ieSB0IGJ5ID0gYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gIGxldCByZXN1bHQgPSBmICgpIGluXG4gIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gIHJlc3VsdCwgZHVyYXRpb25cbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3doZWVsX2ludGVydmFsIHQgPVxuICBUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzXG47O1xuXG5sZXQgaGFzX2V2ZW50c190b19ydW4gdCA9IEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlcjBcbm1vZHVsZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxubW9kdWxlIEV2ZW50ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIEpvYl9vcl9ldmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLkpvYl9vcl9ldmVudFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5zY2hlZHVsZXJcblxubW9kdWxlIEl2YXIgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlcy5JdmFyXG5cbiAgbGV0IGNyZWF0ZV93aXRoX2NlbGwgY2VsbCA9IHsgY2VsbCB9XG4gIGxldCBjcmVhdGUgKCkgPSBjcmVhdGVfd2l0aF9jZWxsIEVtcHR5XG5cbiAgbGV0IGNyZWF0ZV9mdWxsICh0eXBlIGEpIChhIDogYSkgPVxuICAgICgqIFdlIGFsbG9jYXRlIGFuIGltbXV0YWJsZSBpdmFyIGFuZCB0aGVuIGNhc3QgaXQgdG8gYSBtdXRhYmxlIGl2YXIuICBUaGUgaW1tdXRhYmlsaXR5XG4gICAgICAgYWxsb3dzIE9DYW1sIHRvIHN0YXRpY2FsbHkgYWxsb2NhdGUgdGhlIGl2YXIgaWYgW2FdIGlzIGNvbnN0YW50LiAgVGhpcyBjYXN0IGlzIHNhZmVcbiAgICAgICBiZWNhdXNlIGEgZnVsbCBpdmFyIGlzIG5ldmVyIG11dGF0ZWQuICBXZSBhbHNvIGJlbGlldmUgdGhhdCB3ZSB3aWxsIG5vdCB0cmlnZ2VyXG4gICAgICAgZmxhbWJkYSB0byBzcHVyaW91c2x5IHJlcG9yIHdhcm5pbmcgNTksIG11dGF0aW9uIG9mIGtub3duIGltbXV0YWJsZSBkYXRhLiAgQWxsXG4gICAgICAgbXV0YXRpb25zIG9mIGFuIGl2YXIgY2VsbCwgaS5lLiBbZm9vLmNlbGwgPC0gLi4uXSwgYXJlIGRpcmVjdGx5IHByZWNlZGVkIGJ5IGFcbiAgICAgICBbbWF0Y2ggZm9vLmNlbGxdIHRoYXQgcHJldmVudHMgdGhlIFtGdWxsXSBjYXNlIGZyb20gcmVhY2hpbmcgdGhlIG1vZGlmaWNhdGlvbi4gIFNvXG4gICAgICAgZmxhbWJkYSBzaG91bGQgYWx3YXlzIGVsaW1pbmF0ZSB0aGUgW2Zvby5jZWxsIDwtIC4uLl0gb2YgYSBjb25zdGFudCBbRnVsbF0gaXZhcixcbiAgICAgICBhbmQgbm90IHdhcm4uICopXG4gICAgKE9iai5tYWdpYyA6IGEgSW1tdXRhYmxlLnQgLT4gYSB0KSB7IGNlbGwgPSBGdWxsIGEgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuQnZhclxuXG4gIGxldCBjcmVhdGUgKCkgPSBvZl9yZXByIHsgaGFzX2FueV93YWl0ZXJzID0gZmFsc2U7IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSB9XG5lbmRcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlciA9IHN0cnVjdFxuICBtb2R1bGUgRXhlY19yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFR5cGVzLlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50ID1cbiAgICB7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgZXhlYyA6IHVuaXQgLT4gRXhlY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyIH5leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KSB+ZXhlYzppZ25vcmUpXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gU2NoZWR1bGVyMC50ID1cbiAgeyAoKiBbY2hlY2tfYWNjZXNzXSBvcHRpb25hbGx5IGhvbGRzIGEgZnVuY3Rpb24gdG8gcnVuIHRvIGNoZWNrIHdoZXRoZXIgYWNjZXNzIHRvIFt0XSBpc1xuICAgICAgIGN1cnJlbnRseSBhbGxvd2VkLiAgSXQgaXMgdXNlZCB0byBkZXRlY3QgaW52YWxpZCBhY2Nlc3MgdG8gdGhlIHNjaGVkdWxlciBmcm9tIGFcbiAgICAgICB0aHJlYWQuICopXG4gICAgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgOyBtdXRhYmxlIG1haW5fZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAoKiBUaGUgc2NoZWR1bGVyIGNhbGxzIFtnb3RfdW5jYXVnaHRfZXhuXSB3aGVuIGFuIGV4Y2VwdGlvbiBidWJibGVzIHRvIHRoZSB0b3Agb2YgdGhlXG4gICAgIG1vbml0b3IgdHJlZSB3aXRob3V0IGJlaW5nIGhhbmRsZWQuICBUaGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdG8gbmV2ZXIgcnVuIGFub3RoZXJcbiAgICAgam9iIGFmdGVyIHRoaXMgYnkgY2FsbGluZyBbY2xlYXJdIGFuZCBiZWNhdXNlIFtlbnF1ZXVlX2pvYl0gd2lsbCBuZXZlciBhZGQgYW5vdGhlclxuICAgICBqb2IuICopXG4gIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgOyBtdXRhYmxlIGN5Y2xlX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgYXJyYXlcbiAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOlxuICAgICAgKFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnQsIChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgYXJyYXlcbiAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIDpcbiAgICAgIChUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50LCAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX251bV9qb2JzIDogaW50XG4gIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIHRpbWVfc291cmNlIDogcmVhZF93cml0ZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50XG4gICgqIFtleHRlcm5hbF9qb2JzXSBpcyBhIHF1ZXVlIG9mIGFjdGlvbnMgc2VudCBmcm9tIG91dHNpZGUgb2YgYXN5bmMuICBUaGlzIGlzIGZvciB0aGVcbiAgICAgY2FzZSB3aGVyZSB3ZSB3YW50IHRvIHNjaGVkdWxlIGEgam9iIG9yIGZpbGwgYW4gaXZhciBmcm9tIGEgY29udGV4dCB3aGVyZSBpdCBpcyBub3RcbiAgICAgc2FmZSB0byBydW4gYXN5bmMgY29kZSwgYmVjYXVzZSB0aGUgYXN5bmMgbG9jayBpc24ndCBoZWxkLiAgRm9yIGluc3RhbmNlOiAtIGluIGFuXG4gICAgIE9DYW1sIGZpbmFsaXplciwgYXMgdGhleSBjYW4gcnVuIGF0IGFueSB0aW1lIGluIGFueSB0aHJlYWQuXG5cbiAgICAgVGhlIHdheSB0byBkbyBpdCBpcyB0byBxdWV1ZSBhIHRodW5rIGluIFtleHRlcm5hbF9qb2JzXSBhbmQgY2FsbFxuICAgICBbdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3Igbm90aWZ5aW5nIHRoZSBzY2hlZHVsZXJcbiAgICAgdGhhdCBuZXcgYWN0aW9ucyBhcmUgYXZhaWxhYmxlLlxuXG4gICAgIFdoZW4gdXNpbmcgQXN5bmMgb24gdW5peCwgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSBpcyBzZXQgaW4gW0FzeW5jX3VuaXhdXG4gICAgIHRvIGNhbGwgW0ludGVycnVwdG9yLnRocmVhZF9zYWZlX2ludGVycnVwdF0sIHdoaWNoIHdpbGwgd2FrZSB1cCB0aGVcbiAgICAgW0FzeW5jX3VuaXhdIHNjaGVkdWxlciBhbmQgcnVuIGEgY3ljbGUuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaG9vayBtaWdodCBiZSB1c2VkIGluIG90aGVyIGNvbnRleHQgKGpzX29mX29jYW1sLCBtaXJhZ2UpLlxuXG4gICAgIFdoZW4gcnVubmluZyBhIGN5Y2xlLCB3ZSBwdWxsIGV4dGVybmFsIGFjdGlvbnMgYXQgZXZlcnkgam9iIGFuZCBwZXJmb3JtIHRoZW1cbiAgICAgaW1tZWRpYXRlbHkuICopXG4gIDsgZXh0ZXJuYWxfam9icyA6IEV4dGVybmFsX2pvYi50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDogdW5pdCAtPiB1bml0XG4gICgqIFtqb2JfcXVldWVkX2hvb2tdIGFuZCBbZXZlbnRfYWRkZWRfaG9va10gYWltIHRvIGJlIHVzZWQgYnkganNfb2Zfb2NhbWwuICopXG4gICgqIFdlIHVzZSBbXyBvcHRpb25dIGhlcmUgYmVjYXVzZSB0aG9zZSBob29rcyB3aWxsIG5vdCBiZSBzZXQgaW4gdGhlIGNvbW1vbiBjYXNlXG4gICAgIGFuZCB3ZSB3YW50IHRvIGF2b2lkIGV4dHJhIGZ1bmN0aW9uIGNhbGxzLiAqKVxuICA7IG11dGFibGUgam9iX3F1ZXVlZF9ob29rIDogKFByaW9yaXR5LnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBldmVudF9hZGRlZF9ob29rIDogKFRpbWVfbnMudCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIHlpZWxkIDogKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSlcbiAgOyBtdXRhYmxlXG4gICAgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gOlxuICAgICAgKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSAoKiBjb25maWd1cmF0aW9uKikpXG4gIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gIDsgbXV0YWJsZSByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuX3Vud3JhcHBlZCA9IHVuY2F1Z2h0X2V4blxuXG5sZXQgdW5jYXVnaHRfZXhuIHQgPVxuICBtYXRjaCB0LnVuY2F1Z2h0X2V4biB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoZXhuLCBzZXhwKSAtPlxuICAgIFNvbWUgKEVycm9yLmNyZWF0ZSBcInVuaGFuZGxlZCBleGNlcHRpb25cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XSlcbjs7XG5cbmxldCBudW1fcGVuZGluZ19qb2JzIHQgPVxuICBKb2JfcXVldWUubGVuZ3RoIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgKyBKb2JfcXVldWUubGVuZ3RoIHQubG93X3ByaW9yaXR5X2pvYnNcbjs7XG5cbmxldCBudW1fam9ic19ydW4gdCA9XG4gIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICArIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5sb3dfcHJpb3JpdHlfam9ic1xuOztcblxubGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgdCA9IHQubGFzdF9jeWNsZV9udW1fam9ic1xuXG5sZXQgdW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsIH5zdWJsaXN0OnNtYWxsIGxhcmdlID1cbiAgbGV0IGxhcmdlID0gQXJyYXkudG9fbGlzdCBsYXJnZSBpblxuICBsZXQgcmVtb3ZlIGEgeCA9XG4gICAgbWF0Y2ggTGlzdC5zcGxpdF93aGlsZSBhIH5mOihmdW4geSAtPiBub3QgKGVxdWFsIHkgeCkpIHdpdGhcbiAgICB8IF8sIFtdIC0+IE5vbmVcbiAgICB8IGwsIF8gOjogciAtPiBTb21lIChsIEAgcilcbiAgaW5cbiAgT3B0aW9uLmlzX3NvbWVcbiAgICAoTGlzdC5mb2xkIHNtYWxsIH5pbml0OihTb21lIGxhcmdlKSB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgT3B0aW9uLmJpbmQgYWNjIH5mOihmdW4gbCAtPiByZW1vdmUgbCB4KSkpXG47O1xuXG5sZXQgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgdGFibGUgYXJyYXkgPVxuICAoKiBZb3UgY2FuIGluIGZhY3QgaGF2ZSBob29rcyBpbiB0aGUgbGlzdCBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBlbnRyeSBpblxuICAgICB0aGUgdGFibGUuIFN1Y2ggaG9va3MgY2FuIG5ldmVyIGJlIHJlbW92ZWQuICopXG4gIGFzc2VydCAodW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsOnBoeXNfZXF1YWwgfnN1Ymxpc3Q6KEhhc2h0YmwuZGF0YSB0YWJsZSkgYXJyYXkpXG47O1xuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNoZWNrX2FjY2VzczppZ25vcmVcbiAgICAgIH5qb2JfcG9vbDooY2hlY2sgSm9iX3Bvb2wuaW52YXJpYW50KVxuICAgICAgfm5vcm1hbF9wcmlvcml0eV9qb2JzOihjaGVjayBKb2JfcXVldWUuaW52YXJpYW50KVxuICAgICAgfmxvd19wcmlvcml0eV9qb2JzOihjaGVjayBKb2JfcXVldWUuaW52YXJpYW50KVxuICAgICAgfnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIHEgLT4gRGVxdWUuaXRlciBxIH5mOlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5pbnZhcmlhbnQpKVxuICAgICAgfm1haW5fZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudClcbiAgICAgIH5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+dW5jYXVnaHRfZXhuOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bmNhdWdodF9leG4gLT5cbiAgICAgICAgICAgaWYgaXNfc29tZSB1bmNhdWdodF9leG4gdGhlbiBhc3NlcnQgKG51bV9wZW5kaW5nX2pvYnMgdCA9IDApKSlcbiAgICAgIH5jeWNsZV9jb3VudDooY2hlY2sgKGZ1biBjeWNsZV9jb3VudCAtPiBhc3NlcnQgKGN5Y2xlX2NvdW50ID49IDApKSlcbiAgICAgIH5jeWNsZV9zdGFydDppZ25vcmVcbiAgICAgIH5pbl9jeWNsZTppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0KSlcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfZW5kOmlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGU6XG4gICAgICAgIChjaGVjayAoZnVuIHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQpKVxuICAgICAgfmxhc3RfY3ljbGVfdGltZTppZ25vcmVcbiAgICAgIH50b3RhbF9jeWNsZV90aW1lOmlnbm9yZVxuICAgICAgfmxhc3RfY3ljbGVfbnVtX2pvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIGxhc3RfY3ljbGVfbnVtX2pvYnMgLT4gYXNzZXJ0IChsYXN0X2N5Y2xlX251bV9qb2JzID49IDApKSlcbiAgICAgIH50aW1lX3NvdXJjZTpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChTeW5jaHJvbm91c190aW1lX3NvdXJjZS5SZWFkX3dyaXRlLmludmFyaWFudF93aXRoX2pvYnMgfmpvYjooZnVuIGpvYiAtPlxuICAgICAgICAgICAgICBhc3NlcnQgKFBvb2wucG9pbnRlcl9pc192YWxpZCB0LmpvYl9wb29sIGpvYikpKSlcbiAgICAgIH5leHRlcm5hbF9qb2JzOmlnbm9yZVxuICAgICAgfnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rOmlnbm9yZVxuICAgICAgfmpvYl9xdWV1ZWRfaG9vazppZ25vcmVcbiAgICAgIH5ldmVudF9hZGRlZF9ob29rOmlnbm9yZVxuICAgICAgfnlpZWxkOmlnbm9yZVxuICAgICAgfnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluOmlnbm9yZVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6aWdub3JlXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6aWdub3JlXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pICh0IDogdCldXG47O1xuXG5sZXQgZnJlZV9qb2IgdCBqb2IgPSBQb29sLmZyZWUgdC5qb2JfcG9vbCBqb2JcblxubGV0IGVucXVldWUgdCAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSBmIGEgPVxuICAoKiBJZiB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLCB3ZSBkb24ndCBhZGQgdGhlIGpvYiwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBhbnkgam9ic1xuICAgICB0byBydW4gb25jZSB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLiAqKVxuICBpZiBpc19ub25lIHQudW5jYXVnaHRfZXhuXG4gIHRoZW4gKFxuICAgIGxldCBwcmlvcml0eSA9IGV4ZWN1dGlvbl9jb250ZXh0LnByaW9yaXR5IGluXG4gICAgbGV0IGpvYl9xdWV1ZSA9XG4gICAgICBtYXRjaCBwcmlvcml0eSB3aXRoXG4gICAgICB8IE5vcm1hbCAtPiB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICAgICB8IExvdyAtPiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgaW5cbiAgICBKb2JfcXVldWUuZW5xdWV1ZSBqb2JfcXVldWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgIG1hdGNoIHQuam9iX3F1ZXVlZF9ob29rIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPiBmIHByaW9yaXR5KVxuOztcblxubGV0IGVucXVldWVfam9iIHQgam9iIH5mcmVlX2pvYiA9XG4gIGxldCBqb2JfcG9vbCA9IHQuam9iX3Bvb2wgaW5cbiAgZW5xdWV1ZVxuICAgIHRcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MClcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MSlcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50Mik7XG4gIGlmIGZyZWVfam9iIHRoZW4gUG9vbC5mcmVlIHQuam9iX3Bvb2wgam9iXG47O1xuXG5sZXQgaGFuZGxlX2ZpcmVkICh0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCkgam9iX29yX2V2ZW50ID1cbiAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICB8IEpvYiwgam9iIC0+IGVucXVldWVfam9iIHRpbWVfc291cmNlLnNjaGVkdWxlciBqb2IgfmZyZWVfam9iOnRydWVcbiAgfCBFdmVudCwgZXZlbnQgLT4gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuZmlyZSB0aW1lX3NvdXJjZSBldmVudFxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICBsZXQgcmVjIHQgPVxuICAgIHsgY2hlY2tfYWNjZXNzID0gTm9uZVxuICAgIDsgam9iX3Bvb2wgPSBKb2JfcG9vbC5jcmVhdGUgKClcbiAgICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzID0gSm9iX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgPSBKb2JfcXVldWUuY3JlYXRlICgpXG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzID0gRGVxdWUuY3JlYXRlICgpXG4gICAgOyBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxuICAgIDsgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbiAgICA7IHVuY2F1Z2h0X2V4biA9IE5vbmVcbiAgICA7IGN5Y2xlX3N0YXJ0ID0gbm93XG4gICAgOyBjeWNsZV9jb3VudCA9IDBcbiAgICA7IGluX2N5Y2xlID0gZmFsc2VcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA9IFt8fF1cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kID0gW3x8XVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBsYXN0X2N5Y2xlX3RpbWUgPSBzZWMgMC5cbiAgICA7IGxhc3RfY3ljbGVfbnVtX2pvYnMgPSAwXG4gICAgOyB0b3RhbF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgZXh0ZXJuYWxfam9icyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgPSBpZ25vcmVcbiAgICA7IGpvYl9xdWV1ZWRfaG9vayA9IE5vbmVcbiAgICA7IGV2ZW50X2FkZGVkX2hvb2sgPSBOb25lXG4gICAgOyB5aWVsZCA9IEJ2YXIuY3JlYXRlICgpXG4gICAgOyB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA9IEJ2YXIuY3JlYXRlICgpICgqIGNvbmZpZ3VyYXRpb24gKilcbiAgICA7IGNoZWNrX2ludmFyaWFudHMgPSBBc3luY19rZXJuZWxfY29uZmlnLmNoZWNrX2ludmFyaWFudHNcbiAgICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgICAgQXN5bmNfa2VybmVsX2NvbmZpZy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBBc3luY19rZXJuZWxfY29uZmlnLnJlY29yZF9iYWNrdHJhY2VzXG4gICAgfVxuICBhbmQgZXZlbnRzID1cbiAgICBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6QXN5bmNfa2VybmVsX2NvbmZpZy50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydDpub3dcbiAgYW5kIHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50ID1cbiAgICB7IGlkID0gVHlwZXMuVGltZV9zb3VyY2VfaWQuY3JlYXRlICgpXG4gICAgOyBhZHZhbmNlX2Vycm9ycyA9IFtdXG4gICAgOyBhbV9hZHZhbmNpbmcgPSBmYWxzZVxuICAgIDsgZXZlbnRzXG4gICAgOyBoYW5kbGVfZmlyZWQgPSAoZnVuIGFsYXJtIC0+IGhhbmRsZV9maXJlZCB0aW1lX3NvdXJjZSAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSlcbiAgICA7IGZpcmVkX2V2ZW50cyA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBpc193YWxsX2Nsb2NrID0gdHJ1ZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0XG47O1xuXG5sZXQgaXNfZGVhZCB0ID0gaXNfc29tZSB0LnVuY2F1Z2h0X2V4blxubGV0IHNldF9jaGVja19hY2Nlc3MgdCBmID0gdC5jaGVja19hY2Nlc3MgPC0gZlxuXG5sZXQgYmFja3RyYWNlX29mX2ZpcnN0X2pvYiB0ID1cbiAgT3B0aW9uLmZpcnN0X3NvbWVcbiAgICAoSm9iX3F1ZXVlLmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMpXG4gICAgKEpvYl9xdWV1ZS5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB0Lmxvd19wcmlvcml0eV9qb2JzKVxuOztcblxubGV0IHRfcmVmID1cbiAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIGNyZWF0ZSB3aXRoXG4gIHwgT2sgdCAtPiByZWYgdFxuICB8IEVycm9yIGV4biAtPlxuICAgIERlYnVnLmxvZyBcIkFzeW5jIGNhbm5vdCBjcmVhdGUgaXRzIHJhdyBzY2hlZHVsZXJcIiBleG4gWyVzZXhwX29mOiBleG5dO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGNoZWNrX2FjY2VzcyB0ID1cbiAgbWF0Y2ggdC5jaGVja19hY2Nlc3Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiAoKVxuOztcblxubGV0IHQgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICBjaGVja19hY2Nlc3MgdDtcbiAgdFxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCA9XG4gIGlmIHQucmVjb3JkX2JhY2t0cmFjZXNcbiAgdGhlbiBFeGVjdXRpb25fY29udGV4dC5yZWNvcmRfYmFja3RyYWNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuICBlbHNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgeCA9XG4gIGxldCBvbGRfY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dDtcbiAgcHJvdGVjdHggfmYgeCB+ZmluYWxseTooZnVuIF8gLT4gc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgb2xkX2NvbnRleHQpXG47O1xuXG5sZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCB0IHRtcF9jb250ZXh0IH5mID0gd2l0aF9leGVjdXRpb25fY29udGV4dDEgdCB0bXBfY29udGV4dCB+ZiAoKVxuXG5sZXQgY3JlYXRlX2pvYiAodHlwZSBhKSB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGlmIFBvb2wuaXNfZnVsbCB0LmpvYl9wb29sIHRoZW4gdC5qb2JfcG9vbCA8LSBQb29sLmdyb3cgdC5qb2JfcG9vbDtcbiAgUG9vbC5uZXczXG4gICAgdC5qb2JfcG9vbFxuICAgIGV4ZWN1dGlvbl9jb250ZXh0XG4gICAgKE9iai5tYWdpYyAoZiA6IGEgLT4gdW5pdCkgOiBPYmoudCAtPiB1bml0KVxuICAgIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGdvdF91bmNhdWdodF9leG4gdCBleG4gc2V4cCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiZ290X3VuY2F1Z2h0X2V4blwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdO1xuICBMaXN0Lml0ZXIgWyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzOyB0Lmxvd19wcmlvcml0eV9qb2JzIF0gfmY6Sm9iX3F1ZXVlLmNsZWFyO1xuICB0LnVuY2F1Z2h0X2V4biA8LSBTb21lIChleG4sIHNleHApXG47O1xuXG4oKiBbc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gZW5hYmxlcyBzdWJzZXF1ZW50IGNhbGxzIG9mIFtydW5fam9ic11cbiAgIHRvIHJ1biB1cCB0byBbbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gam9icyBvZiBlYWNoIHByaW9yaXR5IGxldmVsLiAqKVxubGV0IHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkgPVxuICBsZXQgbiA9IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IGluXG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5ub3JtYWxfcHJpb3JpdHlfam9icyBuO1xuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubG93X3ByaW9yaXR5X2pvYnMgblxuOztcblxuKCogW3J1bl9qb2JzIHRdIHJlbW92ZXMgam9icyBmcm9tIFt0XSBvbmUgYXQgYSB0aW1lIGFuZCBydW5zIHRoZW0sIHN0b3BwaW5nIGFzIHNvb25cbiAgIGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gaXMgcmFpc2VkLCBvciB3aGVuIG5vIG1vcmUgam9icyBjYW4gYmUgcnVuIGF0IGFueSBwcmlvcml0eSxcbiAgIGFzIHBlciBbfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldLiAqKVxubGV0IHJlYyBydW5fam9icyB0ID1cbiAgbWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgfCBPayAoKSAtPlxuICAgIChtYXRjaCBKb2JfcXVldWUucnVuX2pvYnMgdC5sb3dfcHJpb3JpdHlfam9icyB0IHdpdGhcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICB8IE9rICgpIC0+XG4gICAgICAgaWYgSm9iX3F1ZXVlLmNhbl9ydW5fYV9qb2IgdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgIHx8IEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICAgICB0aGVuIHJ1bl9qb2JzIHRcbiAgICAgICBlbHNlIE9rICgpKVxuOztcblxubGV0IHN0YWJpbGl6ZSB0ID1cbiAgc3RhcnRfY3ljbGVcbiAgICB0XG4gICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6XG4gICAgICAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBJbnQubWF4X3ZhbHVlKTtcbiAgbWF0Y2ggcnVuX2pvYnMgdCB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoZXhuLCBfYmFja3RyYWNlKSAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBjcmVhdGVfdGltZV9zb3VyY2VcbiAgICAgID8odGltaW5nX3doZWVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZylcbiAgICAgIH5ub3dcbiAgICAgICgpXG4gID1cbiAgbGV0IHQgPSB0ICgpIGluXG4gIGxldCBldmVudHMgPSBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93IGluXG4gIGxldCByZWMgdGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQgPVxuICAgIHsgaWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZC5jcmVhdGUgKClcbiAgICA7IGFkdmFuY2VfZXJyb3JzID0gW11cbiAgICA7IGFtX2FkdmFuY2luZyA9IGZhbHNlXG4gICAgOyBldmVudHNcbiAgICA7IGhhbmRsZV9maXJlZCA9IChmdW4gYWxhcm0gLT4gaGFuZGxlX2ZpcmVkIHRpbWVfc291cmNlIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKVxuICAgIDsgZmlyZWRfZXZlbnRzID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IGlzX3dhbGxfY2xvY2sgPSBmYWxzZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0aW1lX3NvdXJjZVxuOztcblxubGV0IHdhbGxfY2xvY2sgKCkgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5yZWFkX29ubHkgKHQgKCkpLnRpbWVfc291cmNlXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgQ2VsbCA9IFR5cGVzLkNlbGxcblxudHlwZSBhbnkgPVxuICBbIGBFbXB0eVxuICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICB8IGBGdWxsXG4gIHwgYEluZGlyXG4gIF1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSXZhci50ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIGFueSkgY2VsbCB9XG5cbigqIFRoZSBbJ2JdIGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBjb25zdHJ1Y3Rvci4gIFRoaXMgYWxsb3dzIHVzIHRvIHdyaXRlIGZ1bmN0aW9ucyB0aGF0XG4gICB0YWtlIG9ubHkgb25lIG9mIHRoZSBjb25zdHJ1Y3RvcnMsIHdpdGggbm8gcnVudGltZSB0ZXN0LlxuXG4gICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGRpcmVjdGVkIGdyYXBoIHdpdGggaXZhcnMgYXMgbm9kZXMgYW5kIFtJbmRpcl1zIGFzXG4gICBlZGdlcyBpcyBhY3ljbGljLiAgVGhlIG9ubHkgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIGFuIFtJbmRpcl0gYXJlIFtzcXVhc2hdIGFuZFxuICAgW2Nvbm5lY3RdLCBhbmQgZm9yIHRob3NlLCB0aGUgdGFyZ2V0IG9mIHRoZSBbSW5kaXJdIGlzIGFsd2F5cyBhIG5vbi1bSW5kaXJdLiAgVGh1cywgdGhlXG4gICBuZXdseSBhZGRlZCBlZGdlcyBhcmUgbmV2ZXIgcGFydCBvZiBhIGN5Y2xlLiAqKVxuYW5kICgnYSwgJ2IpIGNlbGwgPSAoJ2EsICdiKSBUeXBlcy5DZWxsLnQgPVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIDpcbiAgICAgIHsgKCogW3J1bl0gaXMgbXV0YWJsZSBzbyB3ZSBjYW4gc2V0IGl0IHRvIFtpZ25vcmVdIHdoZW4gdGhlIGhhbmRsZXIgaXMgcmVtb3ZlZC5cbiAgICAgICAgICAgVGhpcyBpcyB1c2VkIHdoZW4gd2UgaW5zdGFsbCBhIGhhbmRsZXIgb24gYSBmdWxsIGl2YXIgc2luY2UgaXQgaXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgYWRkZWQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgICAgICAgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbcHJldl0gYW5kIFtuZXh0XSBjaXJjdWxhcmx5IGRvdWJseSBsaW5rIGFsbCBoYW5kbGVycyBvZiB0aGUgc2FtZSBpdmFyLiAqKVxuICAgICAgICBtdXRhYmxlIHByZXYgOiAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICB9XG4gICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX2hhbmRsZXIgXSkgY2VsbFxuICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgY2VsbFxuICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIGNlbGxcbiAgfCBJbmRpciA6ICdhIHQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgY2VsbFxuXG5tb2R1bGUgSGFuZGxlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcblxuICBsZXQgcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucnVuXG4gIGxldCBleGVjdXRpb25fY29udGV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LmV4ZWN1dGlvbl9jb250ZXh0XG4gIGxldCBwcmV2IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucHJldlxuICBsZXQgbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0Lm5leHRcbiAgbGV0IHNldF9ydW4gKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnJ1biA8LSB4XG4gIGxldCBzZXRfcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQucHJldiA8LSB4XG4gIGxldCBzZXRfbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQubmV4dCA8LSB4XG5cbiAgbGV0IGNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICgqIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZjpcblxuICAgICAgIHtbXG4gICAgICAgICBsZXQgcmVjIHQgPVxuICAgICAgICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICAgICAgIHsgcnVuXG4gICAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dFxuICAgICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0XG4gICAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQgfVxuICAgICAgICAgaW5cbiAgICAgICAgIGgxIF19XG5cbiAgICAgICBIb3dldmVyIHRoZSBjb21waWxhdGlvbiBvZiByZWN1cnNpdmUgdmFsdWUgaW4gT0NhbWwgaXMgbm90IG9wdGltYWw6IHRoZSB2YWx1ZSBpc1xuICAgICAgIGFsbG9jYXRlZCB0d2ljZSBhbmQgY29waWVkIG9uY2UgKHdpdGggYSBsb29wIGNhbGxpbmcgY2FtbF9tb2RpZnkpLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWNlc3NhcnkgZm9yIHNpbXBsZSByZWN1cnNpdmUgZGVmaW5pdGlvbnMgbGlrZSB0aGlzIG9uZS5cblxuICAgICAgIEluc3RlYWQgd2UgYWxsb2NhdGUgdGhlIHZhbHVlIHdpdGggZHVtbXkgZmllbGRzIGFuZCB1cGRhdGUgdGhlbSBhZnRlci4gKilcbiAgICBsZXQgdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBPYmoubWFnaWMgTm9uZTsgbmV4dCA9IE9iai5tYWdpYyBOb25lIH1cbiAgICBpblxuICAgIHNldF9wcmV2IHQgdDtcbiAgICBzZXRfbmV4dCB0IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0MSA9XG4gICAgICAgICAgIHsgcnVuICAgICAgICAgICAgICAgPSBydW4xXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDFcbiAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHQyXG4gICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0MiB9XG4gICAgICAgICBhbmQgdDIgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMlxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MVxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDEgfVxuICAgICAgICAgaW5cbiAgICAgICAgIHQxIF19ICopXG4gICAgbGV0IHQxID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuID0gcnVuMVxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgIDsgcHJldiA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIDsgbmV4dCA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIH1cbiAgICBpblxuICAgIGxldCB0MiA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjI7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyOyBwcmV2ID0gdDE7IG5leHQgPSB0MSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0MSB0MjtcbiAgICBzZXRfbmV4dCB0MSB0MjtcbiAgICB0MVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IChleGVjdXRpb25fY29udGV4dCB0KTtcbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgbGV0IHQxID0gIXIgaW5cbiAgICAgIGFzc2VydCAocGh5c19lcXVhbCAocHJldiAobmV4dCB0MSkpIHQxKTtcbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdDEpO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpc19zaW5nbGV0b24gdCA9IHBoeXNfZXF1YWwgdCAobmV4dCB0KVxuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IG4gPSByZWYgMSBpblxuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBpbmNyIG47XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lO1xuICAgICFuXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgdCBzY2hlZHVsZXIgdiA9IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciAoZXhlY3V0aW9uX2NvbnRleHQgdCkgKHJ1biB0KSB2XG5cbiAgbGV0IHNjaGVkdWxlX2pvYnMgdCB2ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBlbnF1ZXVlIHQgc2NoZWR1bGVyIHY7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGVucXVldWUgIXIgc2NoZWR1bGVyIHY7XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID1cbiAgICBzZXRfcHJldiAobmV4dCB0KSAocHJldiB0KTtcbiAgICBzZXRfbmV4dCAocHJldiB0KSAobmV4dCB0KTtcbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0XG4gIDs7XG5cbiAgbGV0IGFkZCB0IHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBwcmV2IHQ7IG5leHQgPSB0IH1cbiAgICBpblxuICAgIHNldF9uZXh0IChwcmV2IHQpIHJlc3VsdDtcbiAgICBzZXRfcHJldiB0IHJlc3VsdDtcbiAgICByZXN1bHRcbiAgOztcblxuICAoKiBbc3BsaWNlIHQxIHQyXSBjcmVhdGVzOlxuXG4gICAgIHt2XG4gICAgICAgLS0+IHQxIDwtLT4gLi4uIDwtLT4gbGFzdDEgPC0tPiB0MiA8LS0+IC4uLiA8LS0+IGxhc3QyIDwtLVxuICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIHZ9ICopXG4gIGxldCBzcGxpY2UgdDEgdDIgPVxuICAgIGxldCBsYXN0MSA9IHByZXYgdDEgaW5cbiAgICBsZXQgbGFzdDIgPSBwcmV2IHQyIGluXG4gICAgc2V0X25leHQgbGFzdDEgdDI7XG4gICAgc2V0X25leHQgbGFzdDIgdDE7XG4gICAgc2V0X3ByZXYgdDEgbGFzdDI7XG4gICAgc2V0X3ByZXYgdDIgbGFzdDFcbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICBsZXQgZmlyc3QgPSBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgICBsZXQgcmVjIGxvb3AgcHJldiBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2V0X3ByZXYgZmlyc3QgcHJldlxuICAgICAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICAgICAgbGV0IHQgPVxuICAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2OyBuZXh0ID0gZmlyc3QgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgc2V0X25leHQgcHJldiB0O1xuICAgICAgICAgIGxvb3AgdCBsXG4gICAgICBpblxuICAgICAgbG9vcCBmaXJzdCBsO1xuICAgICAgU29tZSBmaXJzdFxuICA7O1xuXG4gIGxldCB0b19saXN0IGZpcnN0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IChydW4gdCwgZXhlY3V0aW9uX2NvbnRleHQgdCkgOjogYWNjIGluXG4gICAgICBpZiBwaHlzX2VxdWFsIHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIChwcmV2IHQpIGFjY1xuICAgIGluXG4gICAgbG9vcCAocHJldiBmaXJzdCkgW11cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IF8gKHQgOiBfIHQpID1cbiAgICBsZXQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuID0gXzsgZXhlY3V0aW9uX2NvbnRleHQ7IG5leHQgPSBfOyBwcmV2ID0gXyB9KSA9XG4gICAgICB0XG4gICAgaW5cbiAgICBbJW1lc3NhZ2UgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCldXG4gIDs7XG5lbmRcblxudHlwZSAnYSBpdmFyID0gJ2EgdFxuXG4oKiBDb21waWxlZCBhcyB0aGUgaWRlbnRpdHkuICopXG5sZXQgY2VsbF9vZl9oYW5kbGVyIDogXyBIYW5kbGVyLnQgLT4gXyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyB4IC0+ICh4IDo+IChfLCBhbnkpIGNlbGwpXG47O1xuXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5sZXQgaW5kaXIgdCA9IHsgY2VsbCA9IEluZGlyIHQgfVxuXG5pbmNsdWRlIFNjaGVkdWxlci5JdmFyXG5cbigqIFtzcXVhc2ggdF0gcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gaXZhciBhdCB0aGUgZW5kIG9mIHRoZSAocG9zc2libHkgZW1wdHkpIGNoYWluIG9mXG4gICBbSW5kaXJdcyBzdGFydGluZyB3aXRoIFt0XSBhbmQgZW5zdXJlcyB0aGF0IGFsbCBbSW5kaXJdcyBhbG9uZyB0aGF0IGNoYWluIGFyZSByZXBsYWNlZFxuICAgd2l0aCBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGNoYWluLiAqKVxubGV0IHNxdWFzaCA9XG4gIGxldCByZWMgZm9sbG93IGluZGlyIHQgPVxuICAgICgqIFtpbmRpciA9IEluZGlyIHRdICopXG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIGFzIGluZGlyJyAtPiBmb2xsb3cgaW5kaXInIHQnXG4gICAgfCBfIC0+IGluZGlyXG4gIGluXG4gIGxldCByZWMgdXBkYXRlIHQgaW5kaXIgPVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyAtPlxuICAgICAgdC5jZWxsIDwtIGluZGlyO1xuICAgICAgdXBkYXRlIHQnIGluZGlyXG4gICAgfCBfIC0+IHRcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIChtYXRjaCB0Jy5jZWxsIHdpdGhcbiAgICAgICB8IEluZGlyIHQnJyBhcyBpbmRpciAtPiB1cGRhdGUgdCAoZm9sbG93IGluZGlyIHQnJylcbiAgICAgICB8IF8gLT4gdCcgKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzIGEgY2hhaW4gd2l0aCBhIHNpbmdsZSBbSW5kaXJdICopKVxuICAgIHwgXyAtPiB0XG47O1xuXG4oKiBub3RoaW5nIHRvIGRvLCBzaW5jZSBbdF0gaXNuJ3QgYW4gW0luZGlyXS4gKilcblxubGV0IGludmFyaWFudCBhX2ludmFyaWFudCB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBhX2ludmFyaWFudCBhXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAoXywgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IGV4ZWN1dGlvbl9jb250ZXh0XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+IEhhbmRsZXIuaW52YXJpYW50IGhhbmRsZXJcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgOiBTZXhwLnQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IExpc3QgWyBBdG9tIFwiRnVsbFwiOyBzZXhwX29mX2EgYSBdXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBBdG9tIFwiRW1wdHlcIlxuOztcblxubGV0IHBlZWsgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gU29tZSBhXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBOb25lXG47O1xuXG5sZXQgdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT5cbiAgICBmYWlsd2l0aCBpZl9lbXB0eV90aGVuX2ZhaWx3aXRoXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSB2YWx1ZSB0IH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoOlwiSXZhci52YWx1ZV9leG4gY2FsbGVkIG9uIGVtcHR5IGl2YXJcIlxuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gZmFsc2VcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbjs7XG5cbmxldCBpc19mdWxsIHQgPSBub3QgKGlzX2VtcHR5IHQpXG5cbmxldCBmaWxsIHQgdiA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJdmFyLmZpbGwgb2YgZnVsbCBpdmFyXCIgKHQgOiBfIHQpXVxuICB8IEVtcHR5IC0+IHQuY2VsbCA8LSBGdWxsIHZcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dCkgLT5cbiAgICB0LmNlbGwgPC0gRnVsbCB2O1xuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG47O1xuXG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCAoaGFuZGxlciA6IF8gSGFuZGxlci50KSA9XG4gIEhhbmRsZXIuc2V0X3J1biBoYW5kbGVyIGlnbm9yZTtcbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyAtPlxuICAgICgqIFRoZXNlIGFyZSBvbmx5IHBvc3NpYmxlIGlmIFtoYW5kbGVyXSB3YXMgYWxyZWFkeSByZW1vdmVkLiAgKilcbiAgICAoKVxuICB8IEZ1bGwgXyAtPlxuICAgICgqIFRoaXMgaXMgcG9zc2libGUgaWYgW3RdIHdhcyBmaWxsZWQgYmVmb3JlIHdlIHRyeSB0byByZW1vdmUgdGhlIGhhbmRsZXIuICBFLmcuXG4gICAgICAgW0RlZmVycmVkLmNob29zZV0gd2lsbCBkbyB0aGlzLiAqKVxuICAgICgpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBjZWxsIC0+XG4gICAgaWYgSGFuZGxlci5pc19zaW5nbGV0b24gaGFuZGxlclxuICAgIHRoZW4gdC5jZWxsIDwtIEVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGhhbmRsZXIgY2VsbCB0aGVuIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIubmV4dCBoYW5kbGVyKTtcbiAgICAgIEhhbmRsZXIudW5saW5rIGhhbmRsZXIpXG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHkgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjtcbiAgICBoYW5kbGVyXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dFxuICB8IEZ1bGwgdiAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgKCogW3J1bl0gY2FsbHMgW2hhbmRsZXIucnVuXSwgd2hpY2gsIGlmIFtoYW5kbGVyXSBoYXMgYmVlbiByZW1vdmVkLCBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICAgdG8gW2lnbm9yZV0uICopXG4gICAgbGV0IHJ1biB2ID0gSGFuZGxlci5ydW4gaGFuZGxlciB2IGluXG4gICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHY7XG4gICAgaGFuZGxlclxuOztcblxubGV0IGhhc19oYW5kbGVycyB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbiAgfCBFbXB0eSB8IEZ1bGwgXyAtPiBmYWxzZVxuOztcblxubGV0IHVwb24nIHQgcnVuID0gYWRkX2hhbmRsZXIgdCBydW4gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcblxuKCogW3Vwb25dIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBhczpcblxuICAge1tcbiAgICAgbGV0IHVwb24gdCBmID0gaWdub3JlICh1cG9uJyB0IHJ1bikgXX1cblxuICAgSG93ZXZlciwgYmVsb3cgaXMgYSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgd29ydGggZG9pbmcgYmVjYXVzZSBbdXBvbl1cbiAgIGlzIHZlcnkgd2lkZWx5IHVzZWQgYW5kIGlzIHNvIG11Y2ggbW9yZSBjb21tb24gdGhhbiBbdXBvbiddLiAgVGhlIGJlbG93IGltcGxlbWVudGF0aW9uXG4gICBhdm9pZHMgdGhlIHVzZSBvZiB0aGUgYmFnIG9mIGhhbmRsZXJzIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugb2Ygb25lIGhhbmRsZXIgZm9yXG4gICB0aGUgZGVmZXJyZWQuICopXG5sZXQgdXBvbiB0IHJ1biA9XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgdiAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICB0LmNlbGxcbiAgICA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dCA6IF8gSGFuZGxlci50KVxuOztcblxuKCogW2Nvbm5lY3RdIHRha2VzIGl2YXJzIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10sIGFuZCBtYWtlcyBbYmluZF9yaHNdXG4gICBiZSBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBub24taW5kaXIgY2VsbCByZWFjaGFibGUgZnJvbSBbYmluZF9yZXN1bHRdLiAgT24gZW50cnlcbiAgIHRvIFtjb25uZWN0XSwgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSBtYXkgYmUgY2hhaW5zLCBzaW5jZSBbYmluZF9yaHNdIGlzIGFuXG4gICBhcmJpdHJhcnkgdXNlci1zdXBwbGllZCBkZWZlcnJlZCwgYW5kIFtiaW5kX3Jlc3VsdF0gaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIgcHJpb3IgdG9cbiAgIGJlaW5nIFtjb25uZWN0XWVkLCBhbmQgbWF5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gYW4gaW5kaXJlY3Rpb24gaW4gdGhlIGNhc2Ugb2ZcbiAgIHJpZ2h0LW5lc3RlZCBiaW5kcy5cblxuICAgVGhlIHB1cnBvc2Ugb2YgW2Nvbm5lY3RdIGlzIHRvIG1ha2UgdGFpbC1yZWN1cnNpdmUgYmluZCBsb29wcyB1c2UgY29uc3RhbnQgc3BhY2UuXG4gICBFLmcuOlxuXG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgaWYgaSA9IDBcbiAgICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBhZnRlciAoc2VjIDEuKSBpblxuICAgICAgICAgbG9vcCAoaSAtIDEpKSBdfVxuXG4gICBbY29ubmVjdF0gbWFrZXMgaW50ZXJtZWRpYXRlIGJpbmQgcmVzdWx0cyBhbGwgYmUgW0luZGlyXXMgcG9pbnRpbmcgYXQgdGhlIG91dGVybW9zdFxuICAgYmluZCwgcmF0aGVyIHRoYW4gYmVpbmcgYSBsaW5lYXItbGVuZ3RoIGNoYWluLCB3aXRoIGVhY2ggcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIG9uZS5cbiAgIFRoZW4sIHNpbmNlIHRoZSBwcm9ncmFtIGlzIG9ubHkgaG9sZGluZyBvbiB0byB0aGUgaW5uZXJtb3N0IGFuZCBvdXRlcm1vc3QgYmluZHMgYWxsIHRoZVxuICAgaW50ZXJtZWRpYXRlIG9uZXMgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkLlxuXG4gICBbY29ubmVjdF0gd29ya3MgYnkgc3F1YXNoaW5nIGl0cyBhcmd1bWVudHMgc28gdGhhdCB0aGUgW2JpbmRfcmhzXSBhbHdheXMgcG9pbnRzIGF0IHRoZVxuICAgdWx0aW1hdGUgcmVzdWx0LiAqKVxubGV0IGNvbm5lY3QgPVxuICAoKiBbcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdF0gcmVwb2ludHMgdG8gW2luZGlyXSBhbGwgdGhlIGl2YXJzIGluIHRoZVxuICAgICBjaGFpbiByZWFjaGFibGUgZnJvbSBbaXZhcl0sIGFuZCByZXR1cm5zIHRoZSBub24tW0luZGlyXSBjZWxsIGF0IHRoZSBlbmQgb2YgdGhlXG4gICAgIGNoYWluLiAgQWZ0ZXIgcmVwb2ludGluZywgd2Ugd2lsbCBtZXJnZSB0aGUgaGFuZGxlcnMgaW4gdGhhdCBjZWxsIHdpdGggdGhlIGhhbmRsZXJzXG4gICAgIGluIFtiaW5kX3Jlc3VsdF0sIGFuZCBwdXQgdGhlIG1lcmdlZCBzZXQgb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XS4gKilcbiAgbGV0IHJlYyByZXBvaW50X2luZGlycyB+aXZhciB+aW5kaXIgfmJpbmRfcmVzdWx0ID1cbiAgICBsZXQgY2VsbCA9IGl2YXIuY2VsbCBpblxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgSW5kaXIgaXZhcicgLT5cbiAgICAgIGl2YXIuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHJlcG9pbnRfaW5kaXJzIH5pdmFyOml2YXInIH5pbmRpciB+YmluZF9yZXN1bHRcbiAgICB8IEZ1bGwgXyAtPiBjZWxsXG4gICAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgICAoKiBJdCBpcyBwb3NzaWJsZSB0aGF0IFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gYXJlIG5vdCBlcXVhbCwgYnV0IHRoZWlyIGNoYWluc1xuICAgICAgICAgb2YgaW5kaXJzIGxlYWQgdG8gdGhlIHNhbWUgbm9uLVtJbmRpcl0gY2VsbCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW5ub3Qgc2V0IHRoYXRcbiAgICAgICAgIGNlbGwgdG8gcG9pbnQgdG8gaXRzZWxmLCBiZWNhdXNlIHRoYXQgd291bGQgaW50cm9kdWNlIGEgY3ljbGUuICopXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgaXZhciBiaW5kX3Jlc3VsdCkgdGhlbiBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICBjZWxsXG4gIGluXG4gIGZ1biB+YmluZF9yZXN1bHQgfmJpbmRfcmhzIC0+XG4gICAgaWYgbm90IChwaHlzX2VxdWFsIGJpbmRfcmVzdWx0IGJpbmRfcmhzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGJpbmRfcmVzdWx0ID0gc3F1YXNoIGJpbmRfcmVzdWx0IGluXG4gICAgICBsZXQgaW5kaXIgPSBJbmRpciBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGJpbmRfcmhzX2NvbnRlbnRzID0gcmVwb2ludF9pbmRpcnMgfml2YXI6YmluZF9yaHMgfmluZGlyIH5iaW5kX3Jlc3VsdCBpblxuICAgICAgKCogdXBkYXRlIFtiaW5kX3Jlc3VsdF0gd2l0aCB0aGUgdW5pb24gb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XSBhbmRcbiAgICAgICAgIFtiaW5kX3Joc10gKilcbiAgICAgIG1hdGNoIGJpbmRfcmVzdWx0LmNlbGwsIGJpbmRfcmhzX2NvbnRlbnRzIHdpdGhcbiAgICAgIHwgSW5kaXIgXywgXyB8IF8sIEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gYW5kIFtyZXBvaW50X2luZGlyc10gKilcbiAgICAgICgqIFtjb25uZWN0XSBpcyBvbmx5IHVzZWQgaW4gYmluZCwgd2hvc2UgaXZhciBpcyBvbmx5IGV2ZXIgZXhwb3J0ZWQgYXMgYSByZWFkLW9ubHlcbiAgICAgICAgIGRlZmVycmVkLiAgVGh1cywgW2JpbmRfcmVzdWx0XSBtdXN0IGJlIGVtcHR5LiAqKVxuICAgICAgfCBGdWxsIF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IF8sIEVtcHR5IC0+ICgpXG4gICAgICB8IEVtcHR5LCBfIC0+IGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHNcbiAgICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgICAgIHwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciksIEZ1bGwgdiAtPlxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzO1xuICAgICAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG4gICAgICB8ICggRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjEsIGV4ZWN1dGlvbl9jb250ZXh0MSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiBpblxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyMVxuICAgICAgfCAoIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIxKVxuICAgICAgICAsIEVtcHR5X29uZV9oYW5kbGVyIChydW4yLCBleGVjdXRpb25fY29udGV4dDIpICkgLT5cbiAgICAgICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyMSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA6IF8gSGFuZGxlci50KVxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIxID0gSGFuZGxlci5hZGQgaGFuZGxlcjIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMikgKSAtPiBIYW5kbGVyLnNwbGljZSBoYW5kbGVyMSBoYW5kbGVyMilcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBJdmFyID0gSXZhcjBcbm1vZHVsZSBIYW5kbGVyID0gSXZhci5IYW5kbGVyXG5cbigqIERlZmVycmVkcyBwcmVzZW50IGEgY292YXJpYW50IHZpZXcgb2YgaXZhcnMuICBXZSBjb3VsZCBhY3R1YWxseSBpbXBsZW1lbnQgZGVmZXJyZWRzXG4gICB1c2luZyBhIHJlY29yZCBvZiBjbG9zdXJlcywgYXMgaW4gdGhlIFtlc3NlbmNlX29mX2RlZmVycmVkXSByZWNvcmQgYmVsb3csIGZvciB3aGljaCB0aGVcbiAgIE9DYW1sIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgY292YXJpYW5jZS4gIEhvd2V2ZXIsIGRvaW5nIHNvIHdvdWxkIG1ha2UgW0l2YXIucmVhZF0gdmVyeVxuICAgY29zdGx5LCBiZWNhdXNlIGl0IHdvdWxkIGhhdmUgdG8gYWxsb2NhdGUgbG90cyBvZiBjbG9zdXJlcyBhbmQgYSByZWNvcmQuICBJbnN0ZWFkIG9mXG4gICBkb2luZyB0aGlzLCB3ZSBtYWtlIGRlZmVycmVkcyBhbiBhYnN0cmFjdCBjb3ZhcmlhbnQgdHlwZSwgd2hpY2ggY29uY3JldGVseSBpcyBqdXN0IHRoZVxuICAgaXZhciwgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBjb252ZXJ0IGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gYSBkZWZlcnJlZCBhbmQgaXRzIGNvbmNyZXRlXG4gICByZXByZXNlbnRhdGlvbiBhcyBhbiBpdmFyLiAgVGhpcyBbT2JqLm1hZ2ljXSBpcyBzYWZlIGJlY2F1c2UgdGhlIHJlcHJlc2VudGF0aW9uIGlzXG4gICBhbHdheXMganVzdCBhbiBpdmFyLCBhbmQgdGhlIGNvdmFyaWFuY2UgZm9sbG93cyBmcm9tIHRoZSBmYWN0IHRoYXQgYWxsIHRoZSBkZWZlcnJlZFxuICAgb3BlcmF0aW9ucyBhcmUgZXF1aXZhbGVudCB0byB0aG9zZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBvbiB0b3Agb2YgdGhlXG4gICBbZXNzZW5jZV9vZl9kZWZlcnJlZF0uXG5cbiAgIHtbXG4gICAgIHR5cGUgKCsnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBlc3NlbmNlX29mX2RlZmVycmVkID1cbiAgICAgICB7IHBlZWsgICAgICAgICAgICAgICAgICAgICAgOiB1bml0IC0+ICdhIG9wdGlvblxuICAgICAgIDsgaXNfZGV0ZXJtaW5lZCAgICAgICAgICAgICA6IHVuaXQgLT4gYm9vbFxuICAgICAgIDsgdXBvbiAgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiB1bml0XG4gICAgICAgOyB1cG9uJyAgICAgICAgICAgICAgICAgICAgIDogKCdhIC0+IHVuaXQpIC0+IFVucmVnaXN0ZXIudFxuICAgICAgIDsgaW5zdGFsbF9yZW1vdmFibGVfaGFuZGxlciA6ICgnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBSYXdfaGFuZGxlci50IC0+IFVucmVnaXN0ZXIudDsgfSBdfSAqKVxuXG50eXBlICsnYSB0ID0gJ2EgVHlwZXMuRGVmZXJyZWQudFxuXG4oKiB0aGUgYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIGVxdWl2YWxlbnQgdG8gaXZhciAqKVxuXG5sZXQgb2ZfaXZhciAodHlwZSBhKSAoaXZhciA6IGEgSXZhci50KSA6IGEgdCA9IE9iai5tYWdpYyBpdmFyXG5sZXQgdG9faXZhciAodHlwZSBhKSB0IDogYSBJdmFyLnQgPSBPYmoubWFnaWMgKHQgOiBhIHQpXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSAodG9faXZhciB0KVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IEl2YXIuc2V4cF9vZl90IHNleHBfb2ZfYSAodG9faXZhciB0KVxubGV0IHBlZWsgdCA9IEl2YXIucGVlayAodG9faXZhciB0KVxubGV0IHJldHVybiBhID0gb2ZfaXZhciAoSXZhci5jcmVhdGVfZnVsbCBhKVxubGV0IGlzX2RldGVybWluZWQgdCA9IEl2YXIuaXNfZnVsbCAodG9faXZhciB0KVxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBJdmFyLnZhbHVlXG4gICAgKHRvX2l2YXIgdClcbiAgICB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkRlZmVycmVkLnZhbHVlX2V4biBjYWxsZWQgb24gdW5kZXRlcm1pbmVkIGRlZmVycmVkXCJcbjs7XG5cbmxldCB1cG9uIHQgZiA9IEl2YXIudXBvbiAodG9faXZhciB0KSBmXG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmIHJlc3VsdDtcbiAgb2ZfaXZhciByZXN1bHRcbjs7XG5cbigqIGRvbid0IHVzZSBbY3JlYXRlXSBoZXJlIGFzIGl0IHdvdWxkIGFsbG9jYXRlIG9uZSBtb3JlIGNsb3N1cmUgKilcbmxldCBiaW5kIHQgfmYgPVxuICBsZXQgYmluZF9yZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuY29ubmVjdCB+YmluZF9yZXN1bHQgfmJpbmRfcmhzOih0b19pdmFyIChmIGEpKSk7XG4gIG9mX2l2YXIgYmluZF9yZXN1bHRcbjs7XG5cbmxldCBhZGRfaGFuZGxlciB0IGYgZXhlY3V0aW9uX2NvbnRleHQgPSBJdmFyLmFkZF9oYW5kbGVyICh0b19pdmFyIHQpIGYgZXhlY3V0aW9uX2NvbnRleHRcbmxldCByZW1vdmVfaGFuZGxlciB0IGggPSBJdmFyLnJlbW92ZV9oYW5kbGVyICh0b19pdmFyIHQpIGhcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQwXG5pbmNsdWRlIEl2YXIwXG5cbmxldCByZWFkID0gRGVmZXJyZWQub2ZfaXZhclxubGV0IGZpbGxfaWZfZW1wdHkgdCB2ID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZpbGwgdCB2XG5cbmluY2x1ZGVcbiAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAoT3B0aW9uKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSBwZWVrIHRcblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gICAgICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9mdWxsIGFcbiAgICAgIDs7XG4gICAgZW5kKVxuIiwiKCoqIFtNb25hZF9zZXF1ZW5jZS5TXSBpcyBhIGdlbmVyaWMgaW50ZXJmYWNlIHNwZWNpZnlpbmcgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGFcbiAgICBjb250YWluZXIgYW5kIGEgbW9uYWQuICBJdCBpcyBzcGVjaWFsaXplZCB0byB0aGUgW0RlZmVycmVkXSBtb25hZCBhbmQgdXNlZCB3aXRoXG4gICAgdmFyaW91cyBjb250YWluZXJzIGluIG1vZHVsZXMgW0RlZmVycmVkLkFycmF5XSwgW0RlZmVycmVkLkxpc3RdLCBbRGVmZXJyZWQuUXVldWVdLCBhbmRcbiAgICBbRGVmZXJyZWQuU2VxdWVuY2VdLiAgVGhlIFtNb25hZF9zZXF1ZW5jZS5ob3ddIHR5cGUgc3BlY2lmaWVzIHRoZSBwYXJhbGxlbGlzbSBvZlxuICAgIGNvbnRhaW5lciBpdGVyYXRvcnMuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIGhvdyA9XG4gIFsgYFBhcmFsbGVsICgqKiBsaWtlIFtgTWF4X2NvbmN1cnJlbnRfam9icyBJbnQubWF4X3ZhbHVlXSAqKVxuICB8IGBTZXF1ZW50aWFsXG4gICgqKiBbYFNlcXVlbnRpYWxdIGlzIG9mdGVuIGJ1dCBub3QgYWx3YXlzIHRoZSBzYW1lIGFzIFtgTWF4X2NvbmN1cnJlbnRfam9icyAxXVxuICAgICAgKGZvciBleGFtcGxlLCB0aGV5IGRpZmZlciBpbiB0aGUgW09yX2Vycm9yXSBtb25hZCkuICopXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgb2YgaW50XG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSBtb25hZFxuICB0eXBlICdhIHRcblxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiBtb25hZFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAoaW50ICogJ2EpIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2Igb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBhbGwgOiAnYSBtb25hZCB0IC0+ICdhIHQgbW9uYWRcbiAgdmFsIGFsbF91bml0IDogdW5pdCBtb25hZCB0IC0+IHVuaXQgbW9uYWRcblxuICAoKiogezIgRGVmZXJyZWQgaXRlcmF0b3JzfVxuXG4gICAgICBJbiB0aGUgZm9sbG93aW5nLCB0aGUgZGVmYXVsdCBbaG93XSBpcyBbYFNlcXVlbnRpYWxdICopXG5cbiAgdmFsIGluaXQgOiBob3c6aG93IC0+IGludCAtPiBmOihpbnQgLT4gJ2EgbW9uYWQpIC0+ICdhIHQgbW9uYWRcbiAgdmFsIGl0ZXIgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCBtb25hZCkgLT4gdW5pdCBtb25hZFxuICB2YWwgaXRlcmkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIG1hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgbWFwaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGZpbHRlciA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJfbWFwIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcGkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiB0IG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBjb25jYXRfbWFwaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuZW5kXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5pbmNsdWRlIERlZmVycmVkMFxuXG4oKiBUbyBhdm9pZCBhIHNwYWNlIGxlYWssIGl0IGlzIG5lY2Vzc2FyeSB0aGF0IFtuZXZlcl0gYWxsb2NhdGVzIGEgbmV3IGl2YXIgd2hlbmV2ZXIgaXQgaXNcbiAgIGNhbGxlZC4gIENvZGUgY2FuIGJpbmQgb24gW25ldmVyICgpXSwgc28gaWYgd2UgcmUtdXNlZCB0aGUgaXZhciwgd2UgY291bGQgZW5kbGVzc2x5XG4gICBhY2N1bXVsYXRlIGhhbmRsZXJzLiAqKVxubGV0IG5ldmVyICgpID0gSXZhci5yZWFkIChJdmFyLmNyZWF0ZSAoKSlcblxubW9kdWxlIE0gPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmVycmVkMFxuXG4gICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICgqIFdlIG1hbnVhbGx5IGlubGluZSBbRGVmZXJyZWQuY3JlYXRlXSBoZXJlLCBiZWNhdXNlIHRoZSBub24tZmxhbWJkYSBjb21waWxlciBpc24ndFxuICAgICAgICAgYWJsZSB0byBvcHRpbWl6ZSBhd2F5IHRoZSBjbG9zdXJlIHRoYXQgd291bGQgYmUgYmUgY3JlYXRlZC4gKilcbiAgICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmZpbGwgcmVzdWx0IChmIGEpKTtcbiAgICAgIG9mX2l2YXIgcmVzdWx0XG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmluY2x1ZGUgTVxuXG4oKiBXZSByZWJpbmQgYWxsIHRoZSB2YXJpb3VzIFtyZXR1cm5dcyBiZWNhdXNlIHRoZSB1c2Ugb2YgdGhlIFtNb25hZC5NYWtlXSBmdW5jdG9yXG4gICBjYXVzZXMgdGhlIGNvbXBpbGVyIHRvIG5vdCBpbmxpbmUgW3JldHVybl0sIGFuZCBoZW5jZSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvXG4gICBzdGF0aWNhbGx5IGFsbG9jYXRlIGNvbnN0YW50cyBsaWtlIFtyZXR1cm4gKCldLiAgQnkgcmViaW5kaW5nIFtyZXR1cm5dIGFzXG4gICBbRGVmZXJyZWQwLnJldHVybl0sIHRoZSBjb21waWxlciBjYW4gc2VlIHRoYXQ6XG5cbiAgIHtbXG4gICAgIHJldHVybiBhID0geyBJdmFyLkltbXV0YWJsZS4gY2VsbCA9IEZ1bGwgYSB9IF19XG5cbiAgIEFuZCBoZW5jZSwgaWYgW2FdIGlzIGNvbnN0YW50LCB0aGVuIHRoZSByZXR1cm4gaXMgY29uc3RhbnQgYW5kIGNhbiBiZSBzdGF0aWNhbGx5XG4gICBhbGxvY2F0ZWQuICBXaGVuIGNvbXBpbGluZyB3aXRoIGZsYW1iZGEsIHRoZSBjb21waWxlciBpbmxpbmVzIFtyZXR1cm5dIGFuZCB0aGlzIG1hbnVhbFxuICAgcmViaW5kaW5nIHdvdWxkIG5vdCBoZWxwOyB3ZSd2ZSBkZWNpZGVkIHRvIGRvIGl0IGFueXdheSBzbyB0aGF0IG5vbi1mbGFtYmRhIGJ1aWxkc1xuICAgZ2V0IHRoZSBvcHRpbWl6YXRpb24uICopXG5sZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIE0uTGV0X3N5bnRheFxuXG4gIGxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE0uTGV0X3N5bnRheC5MZXRfc3ludGF4XG5cbiAgICBsZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxuKCogV2Ugc2hhZG93IFthbGxdIG9uLXB1cnBvc2UgaGVyZSwgc2luY2UgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBpbnRyb2R1Y2VzIGEgY2hhaW4gb2ZcbiAgIGJpbmRzIGFzIGxvbmcgYXMgdGhlIGxpc3QuICopXG5sZXQgYWxsID0gYE1ha2Vfc3VyZV90b19kZWZpbmVfYWxsX2Vsc2V3aGVyZVxubGV0IF8gPSBhbGxcbmxldCB1bml0ID0gcmV0dXJuICgpXG5cbmxldCBib3RoIHQxIHQyID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+IHVwb24gdDEgKGZ1biBhMSAtPiB1cG9uIHQyIChmdW4gYTIgLT4gSXZhci5maWxsIHJlc3VsdCAoYTEsIGEyKSkpKVxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBsZXQgKCA+Pj4gKSA9IHVwb25cbiAgbGV0IHBweF9ib3RoID0gYm90aFxuZW5kXG5cbm9wZW4gSW5maXhcblxubGV0IGRvbid0X3dhaXRfZm9yIChfIDogdW5pdCB0KSA9ICgpXG5cbm1vZHVsZSBDaG9pY2UgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9IFQgOiAnYiBEZWZlcnJlZDAudCAqICgnYiAtPiAnYSkgLT4gJ2EgdFxuXG4gIGxldCBtYXAgKFQgKHQsIGYxKSkgfmY6ZjIgPSBUICh0LCBmdW4geCAtPiBmMiAoZjEgeCkpXG5lbmRcblxubW9kdWxlIFVucmVnaXN0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhpcyByZXByZXNlbnRhdGlvbiBzYXZlcyAybiB3b3JkcyBmb3IgYSBsaXN0IG9mIG4gY2hvaWNlcy4gKilcbiAgdHlwZSAnciB0ID1cbiAgICB8IE5pbCA6ICdyIHRcbiAgICB8IENvbnMgOiAnYSBEZWZlcnJlZDAudCAqICgnYSAtPiAncikgKiAnYSBEZWZlcnJlZDAuSGFuZGxlci50ICogJ3IgdCAtPiAnciB0XG5cbiAgbGV0IHJlYyBwcm9jZXNzID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodCwgX2YsIGhhbmRsZXIsIHJlc3QpIC0+XG4gICAgICByZW1vdmVfaGFuZGxlciB0IGhhbmRsZXI7XG4gICAgICBwcm9jZXNzIHJlc3RcbiAgOztcbmVuZFxuXG5sZXQgY2hvaWNlIHQgZiA9IENob2ljZS5UICh0LCBmKVxuXG5sZXQgZW5hYmxlZCBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCB1bnJlZ2lzdGVycyA9IHJlZiBVbnJlZ2lzdGVyLk5pbCBpblxuICBsZXQgcmVhZHkgXyA9XG4gICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICB0aGVuIChcbiAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyAhdW5yZWdpc3RlcnM7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0IChmdW4gKCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6W10gfmY6KGZ1biBhYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgICAgICAgICAgIG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IGFjXG4gICAgICAgICAgICAgfCBTb21lIHYgLT4gZiB2IDo6IGFjKSkpKVxuICBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICB1bnJlZ2lzdGVyc1xuICA6PSBMaXN0LmZvbGQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIGFjYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgIENvbnMgKHQsIGYsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKTtcbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IHJlYyBjaG9vc2VfcmVzdWx0IGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBVbnJlZ2lzdGVyLk5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBVbnJlZ2lzdGVyLkNvbnMgKHQsIGYsIF8sIHJlc3QpIC0+XG4gICAgKG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgIHwgTm9uZSAtPiBjaG9vc2VfcmVzdWx0IHJlc3RcbiAgICAgfCBTb21lIHYgLT4gZiB2KVxuOztcblxubGV0IGdlbmVyaWNfY2hvb3NlIGNob2ljZXMgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgKCogQSBiYWNrLXBhdGNoZWQgcmVmIGNvdWxkIGJlIHVzZWQgaGVyZSwgYnV0IHVzaW5nIGxhenkgc2F2ZXMgc29tZSBtZW1vcnlcbiAgICAgYmVjYXVzZSB0aGUgR0MgZXZlbnR1YWxseSByZW1vdmVzIHRoZSBleHRyYSBpbmRpcmVjdGlvbi4gKilcbiAgbGV0IHJlYyB1bnJlZ2lzdGVycyA9XG4gICAgbGF6eVxuICAgICAgKExpc3QuZm9sZF9yaWdodCBjaG9pY2VzIH5pbml0OlVucmVnaXN0ZXIuTmlsIH5mOihmdW4gKENob2ljZS5UICh0LCBmKSkgYWNjIC0+XG4gICAgICAgICBVbnJlZ2lzdGVyLkNvbnMgKHQsIGYsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKSlcbiAgYW5kIHJlYWR5IDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biBfIC0+XG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB1bnJlZ2lzdGVycyA9IExhenkuZm9yY2UgdW5yZWdpc3RlcnMgaW5cbiAgICAgICAgVW5yZWdpc3Rlci5wcm9jZXNzIHVucmVnaXN0ZXJzO1xuICAgICAgICBJdmFyLmZpbGwgcmVzdWx0IChjaG9vc2VfcmVzdWx0IHVucmVnaXN0ZXJzKSlcbiAgaW5cbiAgbGV0IChfIDogXykgPSBMYXp5LmZvcmNlIHVucmVnaXN0ZXJzIGluXG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbigqIFtjaG9vc2UyXSBpcyBhIHNwZWNpYWxpemF0aW9uIG9mIFtjaG9vc2VdIHRoYXQgaGFzIGJldHRlciBtZW1vcnkgdXNhZ2UuXG4gICBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCBbY2hvb3NlMl0ga2VlcHMgMjIgZXh0cmEgd29yZHMgYWxpdmVcbiAgIGZvciB0aGUgZHVyYXRpb24gb2YgY2hvaWNlIHN0YXlpbmcgdW5kZXRlcm1pbmVkLCB3aGlsZSB0aGUgZXF1aXZhbGVudCBnZW5lcmljXG4gICBbY2hvb3NlXSBrZWVwcyAyNyAoc2VlIHRoZSBiZW5jaG1hcmsgaW4gLi4vYmVuY2gvYmluL2JlbmNoX2Nob29zZV9tZW1vcnlfdXNhZ2UubWwpLiAqKVxubGV0IGNob29zZTIgYSBmYSBiIGZiID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gIGxldCByZWMgYV9oYW5kbGVyID0gbGF6eSAoRGVmZXJyZWQwLmFkZF9oYW5kbGVyIGEgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQpXG4gIGFuZCBiX2hhbmRsZXIgPSBsYXp5IChEZWZlcnJlZDAuYWRkX2hhbmRsZXIgYiByZWFkeSBleGVjdXRpb25fY29udGV4dClcbiAgYW5kIHJlYWR5IDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biBfIC0+XG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFRoZSBvcmRlciBvZiB0aGVzZSBvcGVyYXRpb25zIG1hdHRlcnM6XG4gICAgICAgICAgIGlmIHdlIGNhbGwgW2ZiXSBvciBbZmFdIGZpcnN0IGFuZCBbcmVtb3ZlX2hhbmRsZXJdIGFmdGVyLCB0aGVuXG4gICAgICAgICAgIGFueSBleGNlcHRpb25zIHJhaXNlZCB3aWxsIGNhdXNlIHRoZSBoYW5kbGVycyB0byByZW1haW4gYW5kIHRoZW5cbiAgICAgICAgICAgdGhlIFwic2Vjb25kIGNob2ljZVwiIGdldHMgYSBjaGFuY2UgdG8gcnVuLlxuICAgICAgICAqKVxuICAgICAgICByZW1vdmVfaGFuZGxlciBhIChMYXp5LmZvcmNlIGFfaGFuZGxlcik7XG4gICAgICAgIHJlbW92ZV9oYW5kbGVyIGIgKExhenkuZm9yY2UgYl9oYW5kbGVyKTtcbiAgICAgICAgbWF0Y2ggcGVlayBhIHdpdGhcbiAgICAgICAgfCBTb21lIGF2IC0+IEl2YXIuZmlsbCByZXN1bHQgKGZhIGF2KVxuICAgICAgICB8IE5vbmUgLT4gSXZhci5maWxsIHJlc3VsdCAoZmIgKHZhbHVlX2V4biBiKSkpXG4gIGluXG4gIGxldCAoXyA6IF8pID0gTGF6eS5mb3JjZSBhX2hhbmRsZXIgaW5cbiAgbGV0IChfIDogXykgPSBMYXp5LmZvcmNlIGJfaGFuZGxlciBpblxuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG5sZXQgY2hvb3NlIGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBbIENob2ljZS5UIChhLCBmYSk7IENob2ljZS5UIChiLCBmYikgXSAtPiBjaG9vc2UyIGEgZmEgYiBmYlxuICB8IGNob2ljZXMgLT4gZ2VuZXJpY19jaG9vc2UgY2hvaWNlc1xuOztcblxubGV0IGFueV9mIHRzIGYgPSBjaG9vc2UgKExpc3QubWFwIHRzIH5mOihmdW4gdCAtPiBjaG9pY2UgdCBmKSlcbmxldCBhbnkgdHMgPSBhbnlfZiB0cyBGbi5pZFxubGV0IGFueV91bml0IHRzID0gYW55X2YgdHMgKEZuLmlnbm9yZSA6IHVuaXQgLT4gdW5pdClcblxubGV0IGZvcl8gc3RhcnQgfnRvXyB+ZG9fID1cbiAgaWYgc3RhcnQgPiB0b19cbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgbGV0JWJpbmQgKCkgPSBkb18gaSBpblxuICAgICAgaWYgaSA+PSB0b18gdGhlbiByZXR1cm4gKCkgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3Agc3RhcnQpXG47O1xuXG5sZXQgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBjcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgICBmIHN0YXRlXG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgYFJlcGVhdCBzdGF0ZSAtPiBsb29wIHN0YXRlXG4gICAgICB8IGBGaW5pc2hlZCByZXN1bHQgLT4gSXZhci5maWxsIGZpbmlzaGVkIHJlc3VsdFxuICAgIGluXG4gICAgbG9vcCBzdGF0ZSlcbjs7XG5cbmxldCBmb3JldmVyIHN0YXRlIGYgPVxuICByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgKGZ1biBzdGF0ZSAtPlxuICAgIGxldCVtYXAgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgYFJlcGVhdCBzdGF0ZSlcbiAgPj4+IG5ldmVyX3JldHVybnNcbjs7XG5cbnR5cGUgaG93ID0gTW9uYWRfc2VxdWVuY2UuaG93IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2UuUyB3aXRoIHR5cGUgJ2EgbW9uYWQgOj0gJ2EgdFxuXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgeCA6OiB4cyAtPiBmIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyBiXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbmxldCBzZXFtYXAgdCB+ZiA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGJzIGEgLT4gZiBhID4+fCBmdW4gYiAtPiBiIDo6IGJzKSA+PnwgTGlzdC5yZXZcbmxldCBhbGwgZHMgPSBzZXFtYXAgZHMgfmY6Rm4uaWRcbmxldCBhbGxfdW5pdCBkcyA9IGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpXG5sZXQgb2sgeCA9IHggPj58IGZ1biB4IC0+IE9rIHhcblxubW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICBsZXQgZ2VuZXJpY19jaG9vc2UgPSBnZW5lcmljX2Nob29zZVxuZW5kXG4iLCJvcGVuIERlZmVycmVkMVxuaW5jbHVkZSBJbmZpeFxuaW5jbHVkZSBMZXRfc3ludGF4XG5cbmxldCBjaG9pY2UgPSBjaG9pY2VcbmxldCBjaG9vc2UgPSBjaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IGRvbid0X3dhaXRfZm9yXG5sZXQgbmV2ZXIgPSBuZXZlclxubGV0IHJldHVybiA9IHJldHVyblxubGV0IHVwb24gPSB1cG9uXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB1ID1cbiAgfCBFbXB0eSBvZiAnYSBJdmFyLnRcbiAgfCBGdWxsXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlICdhIHQgPSAnYSB1IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgRnVsbCAtPiAoKVxuICAgIHwgRW1wdHkgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdCA9IHJlZiAoRW1wdHkgaXZhcikgaW5cbiAgdCwgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IEVtcHR5IF8gLT4gdHJ1ZVxuICB8IEZ1bGwgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaWxsIHQgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBpIC0+XG4gICAgdCA6PSBGdWxsO1xuICAgIEl2YXIuZmlsbCBpIGFcbiAgfCBGdWxsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiYXR0ZW1wdCB0byBmaWxsIGZ1bGwgaXZhclwiXVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBTdHJlYW0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgbmV4dCBEZWZlcnJlZC50XG5cbiAgYW5kICdhIG5leHQgPSAnYSBUeXBlcy5TdHJlYW0ubmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbGV0IHJlYyBsb29wIGQgYWMgOiBTZXhwLnQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMaXN0IChMaXN0LnJldiAoU2V4cC5BdG9tIFwiLi4uXCIgOjogYWMpKVxuICAgICAgfCBTb21lIE5pbCAtPiBMaXN0IChMaXN0LnJldiBhYylcbiAgICAgIHwgU29tZSAoQ29ucyAoYSwgdCkpIC0+IGxvb3AgdCAoc2V4cF9vZl9hIGEgOjogYWMpXG4gICAgaW5cbiAgICBsb29wIHQgW11cbiAgOztcblxuICBsZXQgbmV4dCB0ID0gdFxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlRhaWwudCA9XG4gIHsgKCogW25leHRdIHBvaW50cyBhdCB0aGUgdGFpbCBvZiB0aGUgc3RyZWFtICopIG11dGFibGUgbmV4dCA6ICdhIFN0cmVhbS5uZXh0IEl2YXIudCB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3QgXyB0IDogU2V4cC50ID1cbiAgQXRvbSAoaWYgSXZhci5pc19lbXB0eSB0Lm5leHQgdGhlbiBcIjxvcGVuIHRhaWw+XCIgZWxzZSBcIjxjbG9zZWQgdGFpbD5cIilcbjs7XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSB9XG5sZXQgY29sbGVjdCB0ID0gSXZhci5yZWFkIChuZXh0IHQpXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgKG5leHQgdClcblxubGV0IGZpbGxfZXhuIHQgdiA9XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJzdHJlYW0gaXMgY2xvc2VkXCJdIGVsc2UgSXZhci5maWxsIChuZXh0IHQpIHZcbjs7XG5cbmxldCBjbG9zZV9leG4gdCA9IGZpbGxfZXhuIHQgTmlsXG5sZXQgY2xvc2VfaWZfb3BlbiB0ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiBJdmFyLmZpbGwgKG5leHQgdCkgTmlsXG5cbmxldCBleHRlbmQgdCB2ID1cbiAgbGV0IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmaWxsX2V4biB0IChDb25zICh2LCBJdmFyLnJlYWQgbmV4dCkpO1xuICB0Lm5leHQgPC0gbmV4dFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gVGFpbC5TdHJlYW1cbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcbmluY2x1ZGUgTW9uaXRvclxuXG50eXBlIG1vbml0b3IgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bmFtZTppZ25vcmVcbiAgICAgIH5oZXJlOmlnbm9yZVxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmZvcndhcmRpbmc6aWdub3JlXG4gICAgICB+bmV4dF9lcnJvcjooY2hlY2sgKGZ1biBuZXh0X2Vycm9yIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBuZXh0X2Vycm9yKSkpXG4gICAgICB+aGFuZGxlcnNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+dGFpbHNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+aGFzX3NlZW5fZXJyb3I6aWdub3JlKVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKVxubGV0IGN1cnJlbnQgKCkgPSBFeGVjdXRpb25fY29udGV4dC5tb25pdG9yIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKVxubGV0IGRldGFjaCB0ID0gdC5mb3J3YXJkaW5nIDwtIERldGFjaGVkXG5cbnR5cGUgaGFuZGxlcl9zdGF0ZSA9XG4gIHwgVW5pbml0aWFsaXplZFxuICB8IFJ1bm5pbmcgb2YgKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcuRWx0LnRcbiAgfCBUZXJtaW5hdGVkXG5cbmxldCBkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIHQgfmYgPVxuICBkZXRhY2ggdDtcbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICBsZXQgaGFuZGxlcl9zdGF0ZV9yZWYgPSByZWYgVW5pbml0aWFsaXplZCBpblxuICBsZXQgcnVuX2YgZXhuID1cbiAgICBtYXRjaCAhaGFuZGxlcl9zdGF0ZV9yZWYgd2l0aFxuICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFRlcm1pbmF0ZWQgLT4gKClcbiAgICB8IFJ1bm5pbmcgYmFnX2VsdCAtPlxuICAgICAgKHRyeSBmIGV4biB3aXRoXG4gICAgICAgfCBpbm5lcl9leG4gLT5cbiAgICAgICAgIGhhbmRsZXJfc3RhdGVfcmVmIDo9IFRlcm1pbmF0ZWQ7XG4gICAgICAgICBCYWcucmVtb3ZlIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgYmFnX2VsdDtcbiAgICAgICAgICgqIFtydW5fZl0gYWx3YXlzIHJ1bnMgaW4gW2V4ZWN1dGlvbl9jb250ZXh0XS4gIEhlbmNlLCBbcmFpc2UgaW5uZXJfZXhuXSBzZW5kc1xuICAgICAgICAgICAgW2lubmVyX2V4bl0gdG8gW2V4ZWN1dGlvbl9jb250ZXh0XSdzIG1vbml0b3IsIGkuZS4gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW5cbiAgICAgICAgICAgIFtkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzXSB3YXMgY2FsbGVkLiAqKVxuICAgICAgICAgcmFpc2UgaW5uZXJfZXhuKVxuICBpblxuICBoYW5kbGVyX3N0YXRlX3JlZlxuICA6PSBSdW5uaW5nIChCYWcuYWRkIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgKGV4ZWN1dGlvbl9jb250ZXh0LCBydW5fZikpXG47O1xuXG5sZXQgZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIHQgPVxuICBkZXRhY2ggdDtcbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzIDwtIHRhaWwgOjogdC50YWlsc19mb3JfYWxsX2Vycm9ycztcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBnZXRfbmV4dF9lcnJvciB0ID0gSXZhci5yZWFkIHQubmV4dF9lcnJvclxuXG5sZXQgZGV0YWNoX2FuZF9nZXRfbmV4dF9lcnJvciB0ID1cbiAgZGV0YWNoIHQ7XG4gIGdldF9uZXh0X2Vycm9yIHRcbjs7XG5cbmxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgKCkgPVxuICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgKFNvbWUgcGFyZW50KVxuOztcblxubW9kdWxlIE1vbml0b3JfZXhuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBleG4gOiBleG5cbiAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgOyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgfVxuXG4gIGxldCBiYWNrdHJhY2UgdCA9IHQuYmFja3RyYWNlXG4gIGxldCBleHRyYWN0X2V4biB0ID0gdC5leG5cblxuICBsZXQgYmFja3RyYWNlX3RydW5jYXRpb25faGV1cmlzdGljcyA9XG4gICAgbGV0IGpvYl9xdWV1ZSA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiam9iX3F1ZXVlLm1sXFxcIlwiIGluXG4gICAgbGV0IGRlZmVycmVkMCA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZGVmZXJyZWQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGRlZmVycmVkMSA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZGVmZXJyZWQxLm1sXFxcIlwiIGluXG4gICAgbGV0IG1vbml0b3IgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcIm1vbml0b3IubWxcXFwiXCIgaW5cbiAgICBsZXQgaW1wb3J0MCA9IFwiUmFpc2VkIGF0IGZpbGUgXFxcImltcG9ydDAubWxcXFwiXCIgaW5cbiAgICBsZXQgZXJyb3IgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImVycm9yLm1sXFxcIlwiIGluXG4gICAgZnVuIHRyYWNlcyAtPlxuICAgICAgKCogLi4vdGVzdC90ZXN0X3RyeV93aXRoX2Vycm9yX2Rpc3BsYXkubWwgbWFrZXMgc3VyZSB0aGlzIHN0YXlzIHVwLXRvLWRhdGUuICopXG4gICAgICBsZXQgdHJhY2VzID1cbiAgICAgICAgbWF0Y2ggdHJhY2VzIHdpdGhcbiAgICAgICAgfCB0MSA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MSB+cHJlZml4OmltcG9ydDAgLT5cbiAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDplcnJvciAtPlxuICAgICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgICAgfCB0MyA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MyB+cHJlZml4OmVycm9yIC0+IHJlc3RcbiAgICAgICAgICAgICAgfCBfIC0+IHJlc3QpXG4gICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICB8IF8gLT4gdHJhY2VzXG4gICAgICBpblxuICAgICAgbWF0Y2ggTGlzdC5yZXYgdHJhY2VzIHdpdGhcbiAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgfCB0MiA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmpvYl9xdWV1ZSAtPlxuICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICB8IHQyIDo6IHJlc3RcbiAgICAgICAgICAgICAgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQwXG4gICAgICAgICAgICAgICAgKCogYmluZCAqKVxuICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpkZWZlcnJlZDFcbiAgICAgICAgICAgICAgICAoKiBtYXAgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6bW9uaXRvclxuICAgICAgICAgICAgICAoKiB0cnlfd2l0aCAqKSAtPiBMaXN0LnJldiByZXN0XG4gICAgICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgICAgIHwgXyAtPiBMaXN0LnJldiByZXN0KVxuICAgICAgfCBfIC0+IHRyYWNlc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgeyBleG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgfSA9XG4gICAgbGV0IG1vbml0b3IgPVxuICAgICAgbGV0IG5hbWUgPVxuICAgICAgICBtYXRjaCBJbmZvLnRvX3N0cmluZ19odW0gbW9uaXRvci5uYW1lIHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IE5vbmVcbiAgICAgICAgfCBzIC0+IFNvbWUgc1xuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBtYXRjaCBtb25pdG9yLmhlcmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaGVyZSAtPlxuICAgICAgICAgICgqIFdlIGRpc3BsYXkgdGhlIGZ1bGwgZmlsZW5hbWUsIHdoZXJlYXMgYmFja3RyYWNlcyBvbmx5IGhhdmUgYmFzZW5hbWVzLCBidXRcbiAgICAgICAgICAgICBwZXJoYXBzIHRoYXQncyB3aGF0IHNob3VsZCBjaGFuZ2UuICopXG4gICAgICAgICAgbGV0IGNvbHVtbiA9IGhlcmUucG9zX2NudW0gLSBoZXJlLnBvc19ib2wgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoKiBXZSBoaWRlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIHdoZW4gW2FtX3J1bm5pbmdfdGVzdF0gdG8gbWFrZSB0ZXN0IG91dHB1dFxuICAgICAgICAgICAgICAgbW9yZSByb2J1c3QuICBUaGlzIHNhdmVzIHBlb3BsZSBtYW51YWxseSBoaWRpbmcgdGhlIG51bWJlcnMgb3IgZXZlbiB3b3JzZSxcbiAgICAgICAgICAgICAgIGxlYXZpbmcgdGhlbSBpbiB0ZXN0IG91dHB1dC4gIEhpZGluZyBpbiB0ZXN0IGlzIGRpZmZlcmVudCBjaG9pY2UgZm9yXG4gICAgICAgICAgICAgICBiZWhhdmlvciB0aGFuIG91ciBjb2RlYmFzZSBtYWtlcyBmb3IgW0JhY2t0cmFjZS5lbGlkZV0sIHdoaWNoIGhhcyBkZWZhdWx0XG4gICAgICAgICAgICAgICBbZmFsc2VdLCBhbmQgdGh1cyBzaG93cyBiYWNrdHJhY2VzIGluIHRlc3QuICBUaGVyZSBhcmUgYSBjb3VwbGUgcmVhc29ucyBmb3JcbiAgICAgICAgICAgICAgIHRoaXMgZGlmZmVyZW50IGNob2ljZS4gIEZpcnN0LCBleHBlY3QtdGVzdCBtYWNoaW5lcnkgaGFzIGNoZWNrIHRvIHByZXZlbnRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgZnJvbSBhcHBlYXJpbmcgaW4gdGVzdCBvdXRwdXQuICBJdCBoYXMgbm8gc3VjaCBjaGVja3MgZm9yIGxpbmVcbiAgICAgICAgICAgICAgIGFuZCBjb2x1bW4gbnVtYmVycy4gIFNlY29uZCwgd2hlbiB0aGVyZSBpcyBhIHJlYWwgZXJyb3IgYW5kIHlvdSB3YW50IHRvIHNlZVxuICAgICAgICAgICAgICAgdGhlIGJhY2t0cmFjZSwgdGhyb3dpbmcgYXdheSB0aGUgd2hvbGUgYmFja3RyYWNlIGxvc2VzIGEgbG90IG9mIHBvdGVudGlhbGx5XG4gICAgICAgICAgICAgICB1c2VmdWwgaW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgaGFyZCB0byByZWNvdmVyLiAgV2hlcmVhcyB3ZSdyZSBqdXN0XG4gICAgICAgICAgICAgICB0aHJvd2luZyBhIHdheSBhIGxpbmUgbnVtYmVyIGFuZCBjb2x1bW4sIHdoaWNoIGFyZSBhIG1pbm9yIGNvbnZlbmllbmNlXG4gICAgICAgICAgICAgICBnaXZlbiB0aGF0IHRoZSBmaWxlbmFtZSBoYXMgbW9zdCBvZiB0aGUgaW5mb3JtYXRpb24uICopXG4gICAgICAgICAgICAoaWYgYW1fcnVubmluZ190ZXN0XG4gICAgICAgICAgICAgdGhlbiBzcHJpbnRmIFwiZmlsZSAlUywgbGluZSBMSU5FLCBjaGFyYWN0ZXJzIEMxLUMyXCIgaGVyZS5wb3NfZm5hbWVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiZmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgICAgIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgICAgIGhlcmUucG9zX2xudW1cbiAgICAgICAgICAgICAgICAgY29sdW1uXG4gICAgICAgICAgICAgICAgIGNvbHVtbilcbiAgICAgIGluXG4gICAgICBtYXRjaCBwb3MsIG5hbWUgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgcG9zLCBOb25lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yIGF0ICVzXCIgcG9zIF1cbiAgICAgIHwgTm9uZSwgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzXCIgbmFtZSBdXG4gICAgICB8IFNvbWUgcG9zLCBTb21lIG5hbWUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgJXMgYXQgJXNcIiBuYW1lIHBvcyBdXG4gICAgaW5cbiAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIGJhY2t0cmFjZSAtPiBCYWNrdHJhY2UudG9fc3RyaW5nX2xpc3QgYmFja3RyYWNlXG4gICAgICBpblxuICAgICAgYmFja3RyYWNlX3RydW5jYXRpb25faGV1cmlzdGljcyBiYWNrdHJhY2UgQCBtb25pdG9yXG4gICAgaW5cbiAgICBsZXQgbGlzdF9pZl9ub3RfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IF8gOjogXyBhcyBsIC0+IFNvbWUgbFxuICAgIGluXG4gICAgWyVzZXhwXG4gICAgICAoZXhuIDogZXhuKVxuICAgICwgKGxpc3RfaWZfbm90X2VtcHR5IGJhY2t0cmFjZSA6IChzdHJpbmcgbGlzdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgLCBgYmFja3RyYWNlX2hpc3RvcnlcbiAgICAgICAgKGxpc3RfaWZfbm90X2VtcHR5IGJhY2t0cmFjZV9oaXN0b3J5IDogKEJhY2t0cmFjZS50IGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKV1cbiAgOztcbmVuZFxuXG5leGNlcHRpb24gTW9uaXRvcl9leG4gb2YgTW9uaXRvcl9leG4udFxuXG5sZXQgKCkgPVxuICBTZXhwbGliLkNvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTW9uaXRvcl9leG5dIChmdW5jdGlvblxuICAgIHwgTW9uaXRvcl9leG4gdCAtPiBbJXNleHAgXCJtb25pdG9yLm1sLkVycm9yXCIgOjogKHQgOiBNb25pdG9yX2V4bi50KV1cbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGV4dHJhY3RfZXhuIGV4biA9XG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgTW9uaXRvcl9leG4gZXJyb3IgLT4gZXJyb3IuZXhuXG4gIHwgZXhuIC0+IGV4blxuOztcblxubGV0IHNlbmRfZXhuIHQgPyhiYWNrdHJhY2UgPSBgR2V0KSBleG4gPVxuICBsZXQgZXhuID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgTW9uaXRvcl9leG4gXyAtPiBleG5cbiAgICB8IF8gLT5cbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgICAgICB8IGBHZXQgLT4gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudF9mb3JfZXhuIGV4blxuICAgICAgICB8IGBUaGlzIGIgLT4gU29tZSBiXG4gICAgICBpblxuICAgICAgbGV0IGJhY2t0cmFjZV9oaXN0b3J5ID0gKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkpLmJhY2t0cmFjZV9oaXN0b3J5IGluXG4gICAgICBNb25pdG9yX2V4biB7IE1vbml0b3JfZXhuLmV4bjsgYmFja3RyYWNlOyBiYWNrdHJhY2VfaGlzdG9yeTsgbW9uaXRvciA9IHQgfVxuICBpblxuICBpZiBEZWJ1Zy5tb25pdG9yX3NlbmRfZXhuIHRoZW4gRGVidWcubG9nIFwiTW9uaXRvci5zZW5kX2V4blwiICh0LCBleG4pIFslc2V4cF9vZjogdCAqIGV4bl07XG4gIHQuaGFzX3NlZW5fZXJyb3IgPC0gdHJ1ZTtcbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBJdmFyLmZpbGwgdC5uZXh0X2Vycm9yIGV4bjtcbiAgICB0Lm5leHRfZXJyb3IgPC0gSXZhci5jcmVhdGUgKCk7XG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IERldGFjaGVkIC0+XG4gICAgICBpZiBEZWJ1Zy5tb25pdG9yX3NlbmRfZXhuXG4gICAgICB0aGVuXG4gICAgICAgIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG4gZm91bmQgbGlzdGVuaW5nIG1vbml0b3JcIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICAgICAgQmFnLml0ZXIgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIChleGVjdXRpb25fY29udGV4dCwgZikgLT5cbiAgICAgICAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgZXhuKTtcbiAgICAgIExpc3QuaXRlciB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzIH5mOihmdW4gdGFpbCAtPiBUYWlsLmV4dGVuZCB0YWlsIGV4bilcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gbG9vcCBwYXJlbnRcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG4gLT5cbiAgICAgICgqIERvIG5vdCBjaGFuZ2UgdGhpcyBicmFuY2ggdG8gcHJpbnQgdGhlIGV4Y2VwdGlvbiBvciB0byBleGl0LiAgSGF2aW5nIHRoZVxuICAgICAgICAgc2NoZWR1bGVyIHJhaXNlIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiBpcyB0aGUgbmVjZXNzYXJ5IGJlaGF2aW9yIGZvciBwcm9ncmFtc1xuICAgICAgICAgdGhhdCBjYWxsIFtTY2hlZHVsZXIuZ29dIGFuZCB3YW50IHRvIGhhbmRsZSBpdC4gKilcbiAgICAgIFNjaGVkdWxlci4oZ290X3VuY2F1Z2h0X2V4biAodCAoKSkpIGV4biAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSlcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NjaGVkdWxlciA9IHN0cnVjdFxuICBsZXQgd2l0aGluX2NvbnRleHQgY29udGV4dCBmID1cbiAgICBTY2hlZHVsZXIuKHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBjb250ZXh0IH5mOihmdW4gKCkgLT5cbiAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCBmIHdpdGhcbiAgICAgIHwgT2sgeCAtPiBPayB4XG4gICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICBzZW5kX2V4biAoRXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciBjb250ZXh0KSBleG4gfmJhY2t0cmFjZTpgR2V0O1xuICAgICAgICBFcnJvciAoKSlcbiAgOztcblxuICBsZXQgd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbGV0IHRtcF9jb250ZXh0ID1cbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKSA/bW9uaXRvciA/cHJpb3JpdHlcbiAgICBpblxuICAgIHdpdGhpbl9jb250ZXh0IHRtcF9jb250ZXh0IGZcbiAgOztcblxuICBsZXQgd2l0aGluJyA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgT2sgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IHdpdGhpbl92ID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+IE5vbmVcbiAgICB8IE9rIHggLT4gU29tZSB4XG4gIDs7XG5cbiAgbGV0IHdpdGhpbiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiAoKVxuICAgIHwgT2sgKCkgLT4gKClcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB3b3JrIHggPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIFNjaGVkdWxlci5lbnF1ZXVlXG4gICAgICBzY2hlZHVsZXJcbiAgICAgIChFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZVxuICAgICAgICAgKFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlcilcbiAgICAgICAgID9tb25pdG9yXG4gICAgICAgICA/cHJpb3JpdHkpXG4gICAgICB3b3JrXG4gICAgICB4XG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlID9tb25pdG9yID9wcmlvcml0eSB3b3JrID0gc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB3b3JrICgpXG5cbiAgbGV0IHNjaGVkdWxlJyA9XG4gICAgKCogRm9yIHBlcmZvcm1hbmNlLCB3ZSB1c2UgW3NjaGVkdWxlX3dpdGhfZGF0YV0gd2l0aCBhIGNsb3NlZCBmdW5jdGlvbiwgYW5kIGlubGluZVxuICAgICAgIFtEZWZlcnJlZC5jcmVhdGVdLiAqKVxuICAgIGxldCB1cG9uX3dvcmtfZmlsbF9pICh3b3JrLCBpKSA9IHVwb24gKHdvcmsgKCkpIChmdW4gYSAtPiBJdmFyLmZpbGwgaSBhKSBpblxuICAgIGZ1biA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAtPlxuICAgICAgbGV0IGkgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB1cG9uX3dvcmtfZmlsbF9pICh3b3JrLCBpKTtcbiAgICAgIEl2YXIucmVhZCBpXG4gIDs7XG5cbiAgbGV0IHByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIHN0YWdlIChmdW4gYSAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhKVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCcgZiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gICAgbGV0IGNhbGxfYW5kX2ZpbGwgKGYsIGEsIGkpID0gdXBvbiAoZiBhKSAoZnVuIHIgLT4gSXZhci5maWxsIGkgcikgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT5cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGkgLT5cbiAgICAgICAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGNhbGxfYW5kX2ZpbGwgKGYsIGEsIGkpKSlcbiAgOztcbmVuZFxuXG5vcGVuIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IHN0cmVhbV9pdGVyIHN0cmVhbSB+ZiA9XG4gIGxldCByZWMgbG9vcCBzdHJlYW0gPVxuICAgIFN0cmVhbS5uZXh0IHN0cmVhbVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh2LCBzdHJlYW0pIC0+XG4gICAgICBsb29wIHN0cmVhbTtcbiAgICAgIGYgdlxuICBpblxuICBsb29wIHN0cmVhbVxuOztcblxuKCogQW4gWydhIE9rX2FuZF9leG5zLnRdIHJlcHJlc2VudHMgdGhlIG91dHB1dCBvZiBhIGNvbXB1dGF0aW9uIHJ1bm5pbmcgaW4gYSBkZXRhY2hlZFxuICAgbW9uaXRvci4gKilcbm1vZHVsZSBPa19hbmRfZXhucyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgb2sgOiAnYSBEZWZlcnJlZC50XG4gICAgOyBleG5zIDogZXhuIFN0cmVhbS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuIGYgPVxuICAgICgqIFdlIGNhbGwgW2NyZWF0ZV93aXRoX3BhcmVudCBOb25lXSBiZWNhdXNlIFttb25pdG9yXSBkb2VzIG5vdCBuZWVkIGEgcGFyZW50LiAgSXRcbiAgICAgICBkb2VzIG5vdCBiZWNhdXNlIHdlIGNhbGwgW2RldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSBtb25pdG9yXSBhbmQgZGVhbCB3aXRoIHRoZVxuICAgICAgIGVycm9ycyBleHBsaWNpdGx5LCB0aHVzIFtzZW5kX2V4bl0gd291bGQgbmV2ZXIgcHJvcGFnYXRlIGFuIGV4biBwYXN0IFttb25pdG9yXS4gKilcbiAgICBsZXQgbW9uaXRvciA9IGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSBOb25lIGluXG4gICAgbGV0IGV4bnMgPSBkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvciBpblxuICAgIGxldCBvayA9XG4gICAgICBtYXRjaCBydW4gd2l0aFxuICAgICAgfCBgTm93IC0+IHdpdGhpbicgfm1vbml0b3IgZlxuICAgICAgfCBgU2NoZWR1bGUgLT4gc2NoZWR1bGUnIH5tb25pdG9yIGZcbiAgICBpblxuICAgIHsgb2s7IGV4bnMgfVxuICA7O1xuZW5kXG5cbmxldCBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICByZXN1bHRfZmlsbGVyXG4gICAgICByZXN1bHRcbiAgICAgIGV4bnNcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdFxuICA9XG4gIGlmIEl2YXJfZmlsbGVyLmlzX2VtcHR5IHJlc3VsdF9maWxsZXJcbiAgdGhlbiAoXG4gICAgSXZhcl9maWxsZXIuZmlsbCByZXN1bHRfZmlsbGVyIHJlc3VsdDtcbiAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucylcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoX2xvZ19leG4gOiAoZXhuIC0+IHVuaXQpIHJlZiA9XG4gICAgcmVmIChmdW4gZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcImZhaWxlZCB0byBzZXQgW01vbml0b3IuRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5dXCIgKGV4biA6IEV4bi50KV0pXG4gIDs7XG5lbmRcblxubGV0IG1ha2VfaGFuZGxlX2V4biByZXN0ID1cbiAgbWF0Y2ggcmVzdCB3aXRoXG4gIHwgYExvZyAtPlxuICAgICgqIFdlIGFyZSBjYXJlZnVsIHRvIG5vdCBjbG9zZSBvdmVyIGN1cnJlbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IG5lZWRlZC4gKilcbiAgICAhRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5cbiAgfCBgUmFpc2UgLT5cbiAgICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICAgIGZ1biBleG4gLT4gc2VuZF9leG4gcGFyZW50IGV4biA/YmFja3RyYWNlOk5vbmVcbiAgfCBgQ2FsbCBmIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHdpdGhpbiB+bW9uaXRvcjpwYXJlbnQgKGZ1biAoKSAtPiBmIGV4bilcbjs7XG5cbmxldCB0cnlfd2l0aFxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICA/KG5hbWUgPSBcIlwiKVxuICAgICAgP2V4dHJhY3RfZXhuOihkb19leHRyYWN0X2V4biA9IGZhbHNlKVxuICAgICAgPyhydW4gPSBgTm93KVxuICAgICAgPyhyZXN0ID0gYFJhaXNlKVxuICAgICAgZlxuICA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gfm5hbWUgfnJ1biBmIGluXG4gIGxldCBoYW5kbGVfZXhuID0gbWFrZV9oYW5kbGVfZXhuIHJlc3QgaW5cbiAgbGV0IGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zID0gc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVfZXhuIGluXG4gICgqIFdlIHJ1biBbd2l0aGluJyB+bW9uaXRvcjptYWluXSB0byBhdm9pZCBob2xkaW5nIG9uIHRvIHJlZmVyZW5jZXMgdG8gdGhlIGV2YWx1YXRpb25cbiAgICAgY29udGV4dCBpbiB3aGljaCBbdHJ5X3dpdGhdIHdhcyBjYWxsZWQuICBUaGlzIGF2b2lkcyBhIHNwYWNlIGxlYWsgd2hlbiBhIGNoYWluIG9mXG4gICAgIFt0cnlfd2l0aF0ncyBhcmUgcnVuIGVhY2ggbmVzdGVkIHdpdGhpbiB0aGUgcHJldmlvdXMgb25lLiAgV2l0aG91dCB0aGUgW3dpdGhpbiddLCB0aGVcbiAgICAgZXJyb3IgaGFuZGxpbmcgZm9yIHRoZSBpbm5lcm1vc3QgW3RyeV93aXRoXSB3b3VsZCBrZWVwIGFsaXZlIHRoZSBlbnRpcmUgY2hhaW4uICopXG4gIHdpdGhpbicgfm1vbml0b3I6bWFpbiAoZnVuICgpIC0+XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBva1xuICAgIHRoZW4gKFxuICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnM7XG4gICAgICByZXR1cm4gKE9rIChEZWZlcnJlZC52YWx1ZV9leG4gb2spKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByZXN1bHRfZmlsbGVyLCByZXN1bHQgPSBJdmFyX2ZpbGxlci5jcmVhdGUgKCkgaW5cbiAgICAgIHVwb24gb2sgKGZ1biByZXMgLT5cbiAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgICAgICAoT2sgcmVzKVxuICAgICAgICAgIGV4bnNcbiAgICAgICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQpO1xuICAgICAgdXBvbiAoU3RyZWFtLm5leHQgZXhucykgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IENvbnMgKGV4biwgZXhucykgLT5cbiAgICAgICAgICBsZXQgZXhuID0gaWYgZG9fZXh0cmFjdF9leG4gdGhlbiBleHRyYWN0X2V4biBleG4gZWxzZSBleG4gaW5cbiAgICAgICAgICBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgICAoRXJyb3IgZXhuKVxuICAgICAgICAgICAgZXhuc1xuICAgICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHJlc3VsdCkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfb3JfZXJyb3IgP2hlcmUgP2luZm8gPyhuYW1lID0gXCJ0cnlfd2l0aF9vcl9lcnJvclwiKSA/ZXh0cmFjdF9leG4gP3Jlc3QgZiA9XG4gIHRyeV93aXRoIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuIH5ydW46YE5vdyA/cmVzdCA+PnwgT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxuOztcblxubGV0IHRyeV93aXRoX2pvaW5fb3JfZXJyb3JcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yXCIpXG4gICAgICA/ZXh0cmFjdF9leG5cbiAgICAgID9yZXN0XG4gICAgICBmXG4gID1cbiAgdHJ5X3dpdGhfb3JfZXJyb3IgZiA/aGVyZSA/aW5mbyB+bmFtZSA/ZXh0cmFjdF9leG4gP3Jlc3QgPj58IE9yX2Vycm9yLmpvaW5cbjs7XG5cbmxldCBwcm90ZWN0ID9oZXJlID9pbmZvID8obmFtZSA9IFwiTW9uaXRvci5wcm90ZWN0XCIpID9leHRyYWN0X2V4biA/cnVuID9yZXN0IGYgfmZpbmFsbHkgPVxuICBsZXQlYmluZCByID0gdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9oZXJlID9pbmZvID9ydW4gP3Jlc3Qgfm5hbWUgZiBpblxuICBsZXQlbWFwIGZyID1cbiAgICB0cnlfd2l0aFxuICAgICAgfmV4dHJhY3RfZXhuOmZhbHNlXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgIH5ydW46YFNjaGVkdWxlICgqIGNvbnNpZGVyIFt+cnVuOmBOb3ddICopXG4gICAgICA/cmVzdFxuICAgICAgfm5hbWU6XCJmaW5hbGx5XCJcbiAgICAgIGZpbmFsbHlcbiAgaW5cbiAgbWF0Y2ggciwgZnIgd2l0aFxuICB8IEVycm9yIGV4biwgRXJyb3IgZmluYWxseV9leG4gLT5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIkFzeW5jIGZpbmFsbHlcIiAoZXhuIDogZXhuKSAoZmluYWxseV9leG4gOiBleG4pXVxuICB8IEVycm9yIGUsIE9rICgpIHwgT2sgXywgRXJyb3IgZSAtPiByYWlzZSBlXG4gIHwgT2sgciwgT2sgKCkgLT4gclxuOztcblxubGV0IGhhbmRsZV9lcnJvcnMgP2hlcmUgP2luZm8gP25hbWUgZiBoYW5kbGVyID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMub2s7IGV4bnMgfSA9IE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuOmBOb3cgZiBpblxuICBzdHJlYW1faXRlciBleG5zIH5mOmhhbmRsZXI7XG4gIG9rXG47O1xuXG5sZXQgY2F0Y2hfc3RyZWFtID9oZXJlID9pbmZvID9uYW1lIGYgPVxuICBsZXQgeyBPa19hbmRfZXhucy5leG5zOyBfIH0gPVxuICAgIE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuOmBOb3cgKGZ1biAoKSAtPlxuICAgICAgZiAoKTtcbiAgICAgIHJldHVybiAoKSlcbiAgaW5cbiAgZXhuc1xuOztcblxubGV0IGNhdGNoID9oZXJlID9pbmZvID9uYW1lIGYgPVxuICBtYXRjaCVtYXAgU3RyZWFtLm5leHQgKGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmKSB3aXRoXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuICB8IE5pbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcIk1vbml0b3IuY2F0Y2ggZ290IHVuZXhwZWN0ZWQgZW1wdHkgc3RyZWFtXCJdXG47O1xuXG5sZXQgY2F0Y2hfZXJyb3IgP2hlcmUgP2luZm8gP25hbWUgZiA9IGNhdGNoID9oZXJlID9pbmZvID9uYW1lIGYgPj58IEVycm9yLm9mX2V4blxuXG5tb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gIGxldCBwYXJlbnQgdCA9XG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG4gLT4gTm9uZVxuICAgIHwgUGFyZW50IHBhcmVudCAtPiBTb21lIHBhcmVudFxuICAgIHwgRGV0YWNoZWQgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBkZXB0aCB0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBuID1cbiAgICAgIG1hdGNoIHBhcmVudCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBuXG4gICAgICB8IFNvbWUgdCAtPiBsb29wIHQgKG4gKyAxKVxuICAgIGluXG4gICAgbG9vcCB0IDBcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5pbmNsdWRlIFRhaWwuU3RyZWFtXG5cbmxldCBmaXJzdF9leG4gdCA9XG4gIG1hdGNoJW1hcCBuZXh0IHQgd2l0aFxuICB8IE5pbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlN0cmVhbS5maXJzdCBvZiBlbXB0eSBzdHJlYW1cIl1cbiAgfCBDb25zICh4LCBfKSAtPiB4XG47O1xuXG5sZXQgZm9sZCcgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgdXBvbiAobmV4dCB0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICAgIHwgQ29ucyAodiwgdCkgLT4gdXBvbiAoZiBiIHYpIChsb29wIHQpKVxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG4oKiBbZm9sZF0gaXMgaW1wbGVtZW50ZWQgdG8gYXZvaWQgcGVyLXN0cmVhbS1lbGVtZW50IGRlZmVycmVkIG92ZXJoZWFkIGluIHRoZSBjYXNlIHdoZW5cbiAgIG11bHRpcGxlIHN0cmVhbSBlbGVtZW50cyBhcmUgYXZhaWxhYmxlIHNpbXVsdGFuZW91c2x5LiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdXBvbiAobmV4dCB0KSAoZnVuIG5leHQgLT4gbG9vcF9uZXh0IG5leHQgYilcbiAgICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGJcbiAgICBhbmQgbG9vcF9uZXh0IG5leHQgYiA9XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCBDb25zICh2LCB0KSAtPiBsb29wIHQgKGYgYiB2KVxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gXyAtPiBuICsgMSlcbmxldCBpdGVyJyB0IH5mID0gZm9sZCcgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gZiB2KVxuXG5sZXQgY2xvc2VkIHQgPVxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgfCBTb21lIE5pbCAtPiByZXR1cm4gKClcbiAgfCBfIC0+IGl0ZXInIHQgfmY6KGZ1biBfIC0+IHJldHVybiAoKSlcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBkb24ndF93YWl0X2ZvclxuICAgIChpdGVyJyB0IH5mOihmdW4gYSAtPlxuICAgICAgIGYgYTtcbiAgICAgICByZXR1cm4gKCkpKVxuOztcblxubGV0IGNyZWF0ZSBmID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICAoKiBjb2xsZWN0IGJlZm9yZSBjYWxsaW5nIFtmXSwgaW4gY2FzZSBbZl0gaW1tZWRpYXRlbHkgZXh0ZW5kcy4gKilcbiAgbGV0IHQgPSBUYWlsLmNvbGxlY3QgdGFpbCBpblxuICBmIHRhaWw7XG4gIHRcbjs7XG5cbmxldCB1bmZvbGQgYiB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgYiA9XG4gICAgICB1cG9uIChmIGIpIChmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICB8IFNvbWUgKGEsIGIpIC0+XG4gICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCBhO1xuICAgICAgICAgIGxvb3AgYilcbiAgICBpblxuICAgIGxvb3AgYilcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeCk7XG4gICAgVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbmxldCB0b19saXN0IHMgPSBmb2xkJyBzIH5pbml0OltdIH5mOihmdW4gYiBhIC0+IHJldHVybiAoYSA6OiBiKSkgPj58IExpc3QucmV2XG5sZXQgY29weV90b190YWlsIHQgdGFpbCA9IGl0ZXInIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoVGFpbC5leHRlbmQgdGFpbCBhKSlcblxubGV0IGFwcGVuZCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChjb3B5X3RvX3RhaWwgdDEgdGFpbCkgKGZ1biAoKSAtPlxuICAgICAgdXBvbiAoY29weV90b190YWlsIHQyIHRhaWwpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpKVxuOztcblxubGV0IGNvbmNhdCB0ID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGl0ZXInIHQgfmY6KGZ1biB0IC0+IGNvcHlfdG9fdGFpbCB0IHRhaWwpKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcicgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIHYgLT5cbiAgICAgICAgIG1hdGNoJW1hcCBmIHYgd2l0aFxuICAgICAgICAgfCBmYWxzZSAtPiAoKVxuICAgICAgICAgfCB0cnVlIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9kZXByZWNhdGVkIHQgfmYgPSBmaWx0ZXInIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IGZpbHRlcl9tYXAnIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHYgLT4gVGFpbC5leHRlbmQgdGFpbCB2KSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyX21hcF9kZXByZWNhdGVkIHQgfmYgPSBmaWx0ZXJfbWFwJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBtYXAnIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoaXRlcicgdCB+ZjooZnVuIHYgLT4gZiB2ID4+fCBUYWlsLmV4dGVuZCB0YWlsKSkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgZmlyc3RfbiBzIG4gPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgbiA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICBlbHNlXG4gICAgICAgIHVwb24gKG5leHQgcykgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIG4pXG47O1xuXG5sZXQgYXZhaWxhYmxlX25vdyB0ID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgTmlsIC0+IExpc3QucmV2IGFjLCB0XG4gICAgfCBTb21lIChDb25zICh4LCB0KSkgLT4gbG9vcCB0ICh4IDo6IGFjKVxuICBpblxuICBsb29wIHQgW11cbjs7XG5cbmxldCBzcGxpdCA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSkgPyhmID0gZnVuIF8gLT4gYENvbnRpbnVlKSB0ID1cbiAgbGV0IHJlYXNvbl9mb3Jfc3RvcHBpbmcgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgcHJlZml4ID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IGZpbmlzaCB2ID1cbiAgICBUYWlsLmNsb3NlX2V4biBwcmVmaXg7XG4gICAgSXZhci5maWxsIHJlYXNvbl9mb3Jfc3RvcHBpbmcgdlxuICBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgY2hvb3NlIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcHBlZCk7IGNob2ljZSAobmV4dCB0KSAoZnVuIG8gLT4gYE5leHQgbykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3BwZWQgLT4gZmluaXNoIChgU3RvcHBlZCB0KVxuICAgIHwgYE5leHQgbyAtPlxuICAgICAgKG1hdGNoIG8gd2l0aFxuICAgICAgIHwgTmlsIC0+IGZpbmlzaCBgRW5kX29mX3N0cmVhbVxuICAgICAgIHwgQ29ucyAoYSwgdCkgLT5cbiAgICAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgICAgIHwgYENvbnRpbnVlIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCBwcmVmaXggYTtcbiAgICAgICAgICAgIGxvb3AgdFxuICAgICAgICAgIHwgYEZvdW5kIGIgLT4gZmluaXNoIChgRm91bmQgKGIsIHQpKSkpXG4gIGluXG4gIGxvb3AgdDtcbiAgVGFpbC5jb2xsZWN0IHByZWZpeCwgSXZhci5yZWFkIHJlYXNvbl9mb3Jfc3RvcHBpbmdcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgXywgZm91bmQgPSBzcGxpdCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBgRm91bmQgYSBlbHNlIGBDb250aW51ZSkgaW5cbiAgbWF0Y2glbWFwIGZvdW5kIHdpdGhcbiAgfCBgU3RvcHBlZCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IChgRW5kX29mX3N0cmVhbSB8IGBGb3VuZCBfKSBhcyB4IC0+IHhcbjs7XG5cbmxldCB1bmdyb3VwIHQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biBsIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KTtcbiAgICAgICAgIHJldHVybiAoKSkpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGludGVybGVhdmUgdHMgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgKCogVGhlIGludGVybGVhdmVkIHN0cmVhbSBzaG91bGQgYmUgY2xvc2VkIHdoZW4gdGhlIG91dGVyIHN0cmVhbSBhbmQgYWxsIG9mXG4gICAgICAgdGhlIGlubmVyIHN0cmVhbXMgaGF2ZSBiZWVuIGNsb3NlZC4gIEtlZXAgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIG9wZW5cbiAgICAgICBzdHJlYW1zIGFuZCBjbG9zZSB0aGUgaW50ZXJsZWF2ZWQgc3RyZWFtIHdoZW4gdGhhdCBjb3VudCBiZWNvbWVzXG4gICAgICAgemVyby4gKilcbiAgICBsZXQgbnVtX29wZW4gPSByZWYgMSBpblxuICAgICgqIDEgZm9yIHRoZSBvdXRlciBzdHJlYW0gdGhhdCBpcyBvcGVuICopXG4gICAgbGV0IGNsb3NlICgpID1cbiAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiAtIDE7XG4gICAgICBpZiAhbnVtX29wZW4gPSAwIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIGluXG4gICAgbGV0IG91dGVyX2Nsb3NlZCA9XG4gICAgICBpdGVyJyB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgbnVtX29wZW4gOj0gIW51bV9vcGVuICsgMTtcbiAgICAgICAgdXBvbiAoY29weV90b190YWlsIHQgdGFpbCkgY2xvc2U7XG4gICAgICAgIHJldHVybiAoKSlcbiAgICBpblxuICAgIHVwb24gb3V0ZXJfY2xvc2VkIGNsb3NlKVxuOztcblxubGV0IHRha2VfdW50aWwgdCBkID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIHVwb25cbiAgICAgICAgKGNob29zZSBbIGNob2ljZSBkIChmdW4gKCkgLT4gYFN0b3ApOyBjaG9pY2UgKG5leHQgdCkgKGZ1biB6IC0+IGBOZXh0IHopIF0pXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYFN0b3AgfCBgTmV4dCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgYE5leHQgKENvbnMgKHgsIHQpKSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCB4O1xuICAgICAgICAgICAgbG9vcCB0KVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseScgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICAgIH5yZXN0OmBSYWlzZVxuICAgICAgICAgIChmdW4gKCkgLT4gZiB4KVxuICAgICAgICA+Pj4gZnVuIHogLT5cbiAgICAgICAgbG9vcCB0O1xuICAgICAgICAobWF0Y2ggeiB3aXRoXG4gICAgICAgICB8IE9rICgpIC0+ICgpXG4gICAgICAgICB8IEVycm9yIGUgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlKVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICAoKiBXZSBpbW1lZGlhdGVseSBjYWxsIFtsb29wXSwgdGh1cyBtYWtpbmcgdGhlIGl0ZXIgZHVyYWJsZS4gIEFueSBleGNlcHRpb25zXG4gICAgICAgICAgIHJhaXNlZCBieSBbZl0gd2lsbCBub3QgcHJldmVudCB0aGUgbG9vcCBmcm9tIGNvbnRpbnVpbmcsIGFuZCB3aWxsIGdvIHRvIHRoZVxuICAgICAgICAgICBtb25pdG9yIG9mIHdob21ldmVyIGNhbGxlZCBbaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmRdLiAqKVxuICAgICAgICBsb29wIHQ7XG4gICAgICAgIGYgeFxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseSB0IH5mID0gZG9uJ3Rfd2FpdF9mb3IgKGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYpXG5cbmxldCBvZl9mdW4gZiA9XG4gIHVuZm9sZCAoKSB+ZjooZnVuICgpIC0+XG4gICAgbGV0JW1hcCBhID0gZiAoKSBpblxuICAgIFNvbWUgKGEsICgpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gKCdhLCAncGVybWlzc2lvbikgVHlwZXMuQnZhci50XG5cbnR5cGUgJ2EgcmVwciA9ICdhIFR5cGVzLkJ2YXIucmVwciA9XG4gIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSByZXByIFslc2V4cF9vZjogXyByZXByXSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgcmVwciBmIGluXG4gICAgRmllbGRzX29mX3JlcHIuaXRlclxuICAgICAgfmhhc19hbnlfd2FpdGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gaGFzX2FueV93YWl0ZXJzIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaGFzX2hhbmRsZXJzIHJlcHIuaXZhciB0aGVuIGFzc2VydCBoYXNfYW55X3dhaXRlcnMpKVxuICAgICAgfml2YXI6XG4gICAgICAgIChjaGVjayAoZnVuIGl2YXIgLT5cbiAgICAgICAgICAgSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgaXZhcjtcbiAgICAgICAgICAgYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSkpXG47O1xuXG5sZXQgc2V4cF9vZl90IF8gXyB0ID1cbiAgbGV0IHsgaGFzX2FueV93YWl0ZXJzOyBpdmFyID0gXyB9ID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgKCogV2UgZG9uJ3Qgc2hvdyBbaXZhcl0gYmVjYXVzZSBpdCdzIGFsd2F5cyBlbXB0eS4gKilcbiAgWyVtZXNzYWdlIChoYXNfYW55X3dhaXRlcnMgOiBib29sKV1cbjs7XG5cbmluY2x1ZGUgU2NoZWR1bGVyMS5CdmFyXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICBpZiByZXByLmhhc19hbnlfd2FpdGVyc1xuICB0aGVuIChcbiAgICByZXByLmhhc19hbnlfd2FpdGVycyA8LSBmYWxzZTtcbiAgICBJdmFyLmZpbGwgcmVwci5pdmFyIGE7XG4gICAgcmVwci5pdmFyIDwtIEl2YXIuY3JlYXRlICgpKVxuOztcblxubGV0IHdhaXQgdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgcmVwci5oYXNfYW55X3dhaXRlcnMgPC0gdHJ1ZTtcbiAgSXZhci5yZWFkIHJlcHIuaXZhclxuOztcblxubGV0IGhhc19hbnlfd2FpdGVycyB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICByZXByLmhhc19hbnlfd2FpdGVyc1xuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbmxldCBkZWJ1ZyA9IERlYnVnLmNsb2NrXG5cbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCAoID4+PiApID0gdXBvblxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuVDFcblxuICAoKiBXZSBkb24ndCBpbmNsdWRlIHRoZSBbaWRdIGluIHRoZSBzZXhwIGJlY2F1c2UgdGhlIHVzZXIgKHJpZ2h0bHkpIGNhbid0IGNvbnRyb2wgaXQsIHNvXG4gICAgIGl0J3MgaGFyZCB0byBtYWtlIGl0IGRldGVybWluaXN0aWMgaW4gdGVzdHMuICopXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGlkID0gX1xuICAgICAgICA7IGFkdmFuY2VfZXJyb3JzID0gX1xuICAgICAgICA7IGFtX2FkdmFuY2luZyA9IF9cbiAgICAgICAgOyBldmVudHNcbiAgICAgICAgOyBmaXJlZF9ldmVudHMgPSBfXG4gICAgICAgIDsgaGFuZGxlX2ZpcmVkID0gX1xuICAgICAgICA7IGlzX3dhbGxfY2xvY2tcbiAgICAgICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gX1xuICAgICAgICA7IHNjaGVkdWxlciA9IF9cbiAgICAgICAgfVxuICAgID1cbiAgICBpZiBpc193YWxsX2Nsb2NrXG4gICAgdGhlbiBbJW1lc3NhZ2UgXCI8d2FsbF9jbG9jaz5cIl1cbiAgICBlbHNlXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgKGlzX3dhbGxfY2xvY2sgOiBib29sKVxuICAgICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgICAgKGV2ZW50cyA6IF8gVGltaW5nX3doZWVsLnQpXVxuICA7O1xuZW5kXG5cbm9wZW4gVDFcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVhZF93cml0ZSBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmVuZFxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcbmxldCBjcmVhdGUgPSBTY2hlZHVsZXIuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlci53YWxsX2Nsb2NrXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbmxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5sZXQgaWQgdCA9IHQuaWRcblxubW9kdWxlIElkID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLklkXG5cbmxldCBub3cgdCA9XG4gIGlmIHQuaXNfd2FsbF9jbG9ja1xuICB0aGVuXG4gICAgKCogRm9yIHRoZSB3YWxsLWNsb2NrIHRpbWUtc291cmNlLCB3ZSB1c2UgW1RpbWVfbnMubm93ICgpXSByYXRoZXIgdGhhblxuICAgICAgIFtUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXS4gIFRoZSBsYXR0ZXIgaXMgb25seSB1cGRhdGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoXG4gICAgICAgY3ljbGUuICBUaGVyZSBjYW4gYmUgc3Vic3RhbnRpYWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gd2hlbiBwZW9wbGUgZG8gbG9uZ1xuICAgICAgIHJ1bm5pbmcgY29tcHV0YXRpb25zIG9yIG1peCBibG9ja2luZyBjb2RlIHdpdGggYXN5bmMuICBBbmQgaHVtYW5zIGV4cGVjdCB0aGF0XG4gICAgICAgd2FsbC1jbG9jayB0aW1lIGlzIGJhc2VkIG9uIFtUaW1lLm5vd10sIG5vdCBzb21lIGFydGlmYWN0IG9mIGFzeW5jXG4gICAgICAgaW1wbGVtZW50YXRpb24uICopXG4gICAgVGltZV9ucy5ub3cgKClcbiAgZWxzZSB0aW1pbmdfd2hlZWxfbm93IHRcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseSB0IH50b18gPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9ieSB0IGJ5ID0gYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcbmxldCBhZHZhbmNlID0gYWR2YW5jZV9kaXJlY3RseVxubGV0IGFkdmFuY2VfYnkgPSBhZHZhbmNlX2RpcmVjdGx5X2J5XG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbmxldCB5aWVsZCB0ID0gQnZhci53YWl0IChTY2hlZHVsZXIueWllbGQgdC5zY2hlZHVsZXIpXG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gU2NoZWR1bGVyLm51bV9wZW5kaW5nX2pvYnMgdCA+IDAgfHwgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZFxuXG5tb2R1bGUgRWFnZXJfZGVmZXJyZWQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmRfdW5pdCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIGYgKClcbiAgICBlbHNlIChcbiAgICAgIGxldCViaW5kICgpID0gdCBpblxuICAgICAgZiAoKSlcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgdFxuICAgIHRoZW4gcmV0dXJuIChmIChEZWZlcnJlZC52YWx1ZV9leG4gdCkpXG4gICAgZWxzZSBEZWZlcnJlZC5tYXAgdCB+ZlxuICA7O1xuZW5kXG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3IgdCB+dG9fID1cbiAgbGV0IHJ1bl9xdWV1ZWRfYWxhcm1zICgpID1cbiAgICAoKiBFdmVyeSB0aW1lIHdlIHdhbnQgdG8gcnVuIHF1ZXVlZCBhbGFybXMgd2UgbmVlZCB0byB5aWVsZCBjb250cm9sIGJhY2sgdG8gdGhlXG4gICAgICAgW0FzeW5jLlNjaGVkdWxlcl0gYW5kIFt3YWl0X2Zvcl0gYW55IGxvZ2ljIHRoYXQgaXMgc3VwcG9zZWQgdG8gZmluaXNoIGF0IHRoaXMgdGltZVxuICAgICAgIGJlZm9yZSBhZHZhbmNpbmcuICBJZiBubyBbd2FpdF9mb3JdIGxvZ2ljIGlzIHNwZWNpZmllZCB3ZSBjYW4gc2ltcGx5IHlpZWxkIGNvbnRyb2xcbiAgICAgICBieSBpbnZva2luZyBbeWllbGQgdF0sIHdoaWNoIGVucXVldWVzIGFub3RoZXIgam9iIGF0IHRoZSBlbmQgb2YgdGhlIHNjaGVkdWxlciBqb2JcbiAgICAgICBxdWV1ZSBzbyBhbGFybSBqb2JzIGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIHJ1biBiZWZvcmUgd2UgYWR2YW5jZS4gKilcbiAgICBtYXRjaCB3YWl0X2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IHlpZWxkIHRcbiAgICB8IFNvbWUgZiAtPiBmICgpXG4gIGluXG4gIGxldCBvbmVfc3RlcCAoKSA9XG4gICAgaWYgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFueV9maXJlZF9ldmVudHNfdG9fcnVuIHRcbiAgICB0aGVuIG5vdyB0LCBgY29udGludWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIFRpbWluZ193aGVlbC5taW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdC5ldmVudHMgd2l0aFxuICAgICAgfCBOb25lIC0+IHRvXywgYGZpbmlzaFxuICAgICAgfCBTb21lIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCAtPlxuICAgICAgICBpZiBUaW1lX25zLiggPj0gKSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdG9fXG4gICAgICAgIHRoZW4gdG9fLCBgZmluaXNoXG4gICAgICAgIGVsc2UgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsLCBgY29udGludWUpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIGxldCBhZHZhbmNlX3RvLCBuZXh0ID0gb25lX3N0ZXAgKCkgaW5cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzphZHZhbmNlX3RvO1xuICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICBFYWdlcl9kZWZlcnJlZC5iaW5kX3VuaXQgKHJ1bl9xdWV1ZWRfYWxhcm1zICgpKSB+ZjooZnVuICgpIC0+XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgYGZpbmlzaCAtPiByZXR1cm4gKClcbiAgICAgIHwgYGNvbnRpbnVlIC0+IHdhbGtfYWxhcm1zICgpKVxuICBpblxuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgKCogc28gdGhhdCBhbGFybXMgc2NoZWR1bGVkIGF0IG9yIGJlZm9yZSBbdG9fXSBmaXJlICopXG4gICAgcnVuX3F1ZXVlZF9hbGFybXMgKClcbiAgaW5cbiAgbGV0IHJlYyB3YWxrX2FsYXJtcyAoKSA9XG4gICAgbWF0Y2ggbmV4dF9hbGFybV9maXJlc19hdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmluaXNoICgpXG4gICAgfCBTb21lIG5leHRfYWxhcm1fZmlyZXNfYXQgLT5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGZpbmlzaCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyk7XG4gICAgICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAgICAgbGV0IHF1ZXVlZF9hbGFybXNfcmFuID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgICAgICAgRWFnZXJfZGVmZXJyZWQuYmluZF91bml0IHF1ZXVlZF9hbGFybXNfcmFuIH5mOndhbGtfYWxhcm1zKVxuICBpblxuICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICgqIFRoaXMgZmlyc3QgW3J1bl9xdWV1ZWRfYWxhcm1zXSBjYWxsIGFsbG93cyBbQ2xvY2tfbnMuZXZlcnldIHRoZSBvcHBvcnR1bml0eSB0byBydW5cbiAgICAgaXRzIGNvbnRpbnVhdGlvbiBkZWZlcnJlZHMgc28gdGhhdCB0aGV5IGNhbiByZXNjaGVkdWxlIGFsYXJtcy4gIFRoaXMgaXMgcGFydGljdWxhcmx5XG4gICAgIHVzZWZ1bCBpbiBvdXIgXCJhZHZhbmNlIGhpdHMgaW50ZXJtZWRpYXRlIGFsYXJtc1wiIHVuaXQgdGVzdCBiZWxvdywgYnV0IGxpa2VseSB1c2VmdWxcbiAgICAgaW4gb3RoZXIgY2FzZXMgd2hlcmUgW2V2ZXJ5XSBpcyBzeW5jaHJvbm91c2x5IGZvbGxvd2VkIGJ5IFthZHZhbmNlXS4gKilcbiAgbGV0JWJpbmQgKCkgPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICB3YWxrX2FsYXJtcyAoKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zX2J5ID93YWl0X2ZvciB0IGJ5ID1cbiAgYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yIHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuOztcblxubGV0IHNwYW5fdG9fdGltZSB0IHNwYW4gPSBUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhblxuXG5sZXQgc2NoZWR1bGVfam9iIHQgfmF0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBhbGFybSA9XG4gICAgVGltaW5nX3doZWVsLmFkZFxuICAgICAgdC5ldmVudHNcbiAgICAgIH5hdFxuICAgICAgKEpvYl9vcl9ldmVudC5vZl9qb2IgKFNjaGVkdWxlci5jcmVhdGVfam9iIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSkpXG4gIGluXG4gIChtYXRjaCB0LnNjaGVkdWxlci5ldmVudF9hZGRlZF9ob29rIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGYgLT4gZiBhdCk7XG4gIGFsYXJtXG47O1xuXG5sZXQgcnVuX2F0X2ludGVybmFsIHQgdGltZSBmIGEgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBpblxuICBpZiBUaW1lX25zLiggPiApIHRpbWUgKFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHMpXG4gIHRoZW4gc2NoZWR1bGVfam9iIHQgfmF0OnRpbWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG4gIGVsc2UgKFxuICAgIFNjaGVkdWxlci5lbnF1ZXVlIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICBBbGFybS5udWxsICgpKVxuOztcblxubGV0IHJ1bl9hdCB0IHRpbWUgZiBhID0gaWdub3JlIChydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGYgYSA6IF8gQWxhcm0udClcbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGYgYSA9IHJ1bl9hdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKSBmIGFcblxubGV0IGF0ID1cbiAgbGV0IGZpbGwgcmVzdWx0ID0gSXZhci5maWxsIHJlc3VsdCAoKSBpblxuICBmdW4gdCB0aW1lIC0+XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgdGltZSAoVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50cylcbiAgICB0aGVuIHJldHVybiAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBpZ25vcmUgKHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZmlsbCByZXN1bHQgOiBfIEFsYXJtLnQpO1xuICAgICAgSXZhci5yZWFkIHJlc3VsdClcbjs7XG5cbmxldCBhZnRlciB0IHNwYW4gPSBhdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKVxuXG5sZXQgcmVtb3ZlX2FsYXJtIHQgYWxhcm0gOiB1bml0ID1cbiAgbGV0IGpvYl9vcl9ldmVudCA9IEFsYXJtLnZhbHVlIHQuZXZlbnRzIGFsYXJtIGluXG4gIChsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgIHwgSm9iLCBqb2IgLT4gU2NoZWR1bGVyLmZyZWVfam9iIHQuc2NoZWR1bGVyIGpvYlxuICAgfCBFdmVudCwgXyAtPlxuICAgICAoKiBUaGlzIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgW2FsYXJtXSBvbmx5IGV2ZXIgY29tZXMgZnJvbSBbRXZlbnQuYWxhcm1dIHdoaWNoIG9ubHlcbiAgICAgICAgZXZlciBnZXRzIHBvcHVsYXRlZCBieSBhIGNhbGwgdG8gW3NjaGVkdWxlX2pvYl0uICopXG4gICAgIGFzc2VydCBmYWxzZSk7XG4gIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgYWxhcm1cbjs7XG5cbmxldCByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQgYWxhcm0gPVxuICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzIGFsYXJtIHRoZW4gcmVtb3ZlX2FsYXJtIHQgYWxhcm1cbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBtb2R1bGUgRmlyZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICB7IG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50XG4gICAgOyBtdXRhYmxlIGZpcmUgOiB1bml0IC0+IHVuaXRcbiAgICA7ICgqIEFzIGxvbmcgYXMgW0l2YXIuaXNfZW1wdHkgZmlyZWRdLCB3ZSBoYXZlIG5vdCB5ZXQgY29tbWl0dGVkIHRvIHdoZXRoZXIgdGhlIGV2ZW50XG4gICAgICAgICB3aWxsIGhhcHBlbiBvciBiZSBhYm9ydGVkLiAgV2hlbiBbSXZhci5pc19lbXB0eSBmaXJlZF0sIHRoZSBhbGFybSBtYXkgb3IgbWF5IG5vdFxuICAgICAgICAgYmUgaW4gdGhlIHRpbWluZyB3aGVlbCAtLSBpZiBpdCBpc24ndCwgdGhlbiB0aGVyZSdzIGEgam9iIGluIEFzeW5jJ3Mgam9iIHF1ZXVlXG4gICAgICAgICB0aGF0IHdpbGwgZmlyZSB0aGUgZXZlbnQsIHVubGVzcyBpdCBpcyBhYm9ydGVkIGJlZm9yZSB0aGF0IGpvYiBjYW4gcnVuLiAqKVxuICAgICAgZmlyZWQgOiAoJ2EsICdoKSBGaXJlZC50IEl2YXIudFxuICAgIDsgKCogW251bV9maXJlc190b19za2lwXSBpcyB1c2VkIHRvIHJlc2NoZWR1bGUgZXZlbnRzIHRoYXQgaGF2ZSBmaXJlZCBhbmQgZW50ZXJlZCB0aGVcbiAgICAgICAgIEFzeW5jIGpvYiBxdWV1ZSwgYnV0IGhhdmUgbm90IHlldCBydW4uICBUaG9zZSBqb2JzIG9ubHkgcnVuIGlmIFtudW1fZmlyZXNfdG9fc2tpcFxuICAgICAgICAgPSAwXSwgYW5kIG90aGVyd2lzZSBqdXN0IGRlY3JlbWVudCBpdC4gIFNvLCB0byByZXNjaGVkdWxlIGFuIGV2ZW50IGluIHN1Y2ggYVxuICAgICAgICAgc3RhdGUsIHdlIGluY3JlbWVudCBbbnVtX2ZpcmVzX3RvX3NraXBdIGFuZCBhZGQgYSBuZXcgYWxhcm0gdG8gdGhlIHRpbWluZ1xuICAgICAgICAgd2hlZWwuICopXG4gICAgICBtdXRhYmxlIG51bV9maXJlc190b19za2lwIDogaW50XG4gICAgOyAoKiBbc2NoZWR1bGVkX2F0XSBpcyB0aGUgdGltZSBhdCB3aGljaCBbdF0gaGFzIG1vc3QgcmVjZW50bHkgYmVlbiBzY2hlZHVsZWQgdG8gZmlyZS5cbiAgICAgICAgIFdoaWxlIFt0LmFsYXJtXSBpcyBzdGlsbCBpbiB0aGUgdGltaW5nIHdoZWVsLCB0aGlzIGlzIHRoZSBzYW1lIGFzIFtBbGFybS5hdFxuICAgICAgICAgdC5hbGFybV0uICopXG4gICAgICBtdXRhYmxlIHNjaGVkdWxlZF9hdCA6IFRpbWVfbnMudFxuICAgIDsgdGltZV9zb3VyY2UgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZmlyZWQgdCA9IEl2YXIucmVhZCB0LmZpcmVkXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfaCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmFsYXJtOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuZmlyZWRcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAobm90IChUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybSkpXG4gICAgICAgICAgICAgZWxzZSBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybVxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChKb2Jfb3JfZXZlbnQuaXNfam9iIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKSkpXG4gICAgICAgIH5maXJlOmlnbm9yZVxuICAgICAgICB+ZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkIDogXyBGaXJlZC50IEl2YXIudCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgZmlyZWQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gaW52YXJpYW50X2EgYVxuICAgICAgICAgICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gaW52YXJpYW50X2ggaCkpXG4gICAgICAgIH5udW1fZmlyZXNfdG9fc2tpcDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fZmlyZXNfdG9fc2tpcCAtPiBhc3NlcnQgKG51bV9maXJlc190b19za2lwID49IDApKSlcbiAgICAgICAgfnNjaGVkdWxlZF9hdDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzY2hlZHVsZWRfYXQgLT5cbiAgICAgICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgICAgICAgdGhlbiBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdIHNjaGVkdWxlZF9hdCB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgdC5hbGFybSkpKVxuICAgICAgICB+dGltZV9zb3VyY2U6aWdub3JlKVxuICA7O1xuXG4gIG1vZHVsZSBTdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lX25zLnRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgc3RhdHVzIHQgOiBfIFN0YXR1cy50ID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5maXJlZCkgd2l0aFxuICAgIHwgTm9uZSAtPiBTY2hlZHVsZWRfYXQgdC5zY2hlZHVsZWRfYXRcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gQWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBIYXBwZW5lZCBoXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQuYWJvcnRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKGZpcmVkIHQpIHdpdGhcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gUHJldmlvdXNseV9hYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IFByZXZpb3VzbHlfaGFwcGVuZWQgaFxuICAgIHwgTm9uZSAtPlxuICAgICAgSXZhci5maWxsIHQuZmlyZWQgKEFib3J0ZWQgYSk7XG4gICAgICByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQudGltZV9zb3VyY2UgdC5hbGFybTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IGFib3J0X2V4biB0IGEgPVxuICAgIG1hdGNoIGFib3J0IHQgYSB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBfIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkNsb2NrLkV2ZW50LmFib3J0X2V4biBmYWlsZWQgdG8gYWJvcnQgZXZlbnQgdGhhdCBwcmV2aW91c2x5IGhhcHBlbmVkXCJdXG4gICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBhYm9ydGVkXCJdXG4gIDs7XG5cbiAgbGV0IGFib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhIDogXyBBYm9ydF9yZXN1bHQudClcbiAgbGV0IHNjaGVkdWxlIHQgPSB0LmFsYXJtIDwtIHJ1bl9hdF9pbnRlcm5hbCB0LnRpbWVfc291cmNlIHQuc2NoZWR1bGVkX2F0IHQuZmlyZSAoKVxuXG4gIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBhdCA6IF8gUmVzY2hlZHVsZV9yZXN1bHQudCA9XG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5yZXNjaGVkdWxlX2F0XCIgKHQsIGF0KSBbJXNleHBfb2Y6IChfLCBfKSB0ICogVGltZV9ucy50XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGlzX2luX3RpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm0gaW5cbiAgICAgIGxldCBhbV90cnlpbmdfdG9fcmVzY2hlZHVsZV9pbl90aGVfZnV0dXJlID1cbiAgICAgICAgVGltZV9ucy4oID4gKSBhdCAoVGltaW5nX3doZWVsLm5vdyBldmVudHMpXG4gICAgICBpblxuICAgICAgdC5zY2hlZHVsZWRfYXQgPC0gYXQ7XG4gICAgICAobWF0Y2ggYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSwgaXNfaW5fdGltaW5nX3doZWVsIHdpdGhcbiAgICAgICB8IGZhbHNlLCBmYWxzZSAtPiAoKVxuICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgIHQudGltZV9zb3VyY2UuaGFuZGxlX2ZpcmVkIHQuYWxhcm07XG4gICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwICsgMTtcbiAgICAgICAgIHNjaGVkdWxlIHRcbiAgICAgICB8IHRydWUsIHRydWUgLT4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgZXZlbnRzIHQuYWxhcm0gfmF0KTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IChzcGFuX3RvX3RpbWUgdC50aW1lX3NvdXJjZSBzcGFuKVxuXG4gIGxldCBydW5fYXQgdGltZV9zb3VyY2Ugc2NoZWR1bGVkX2F0IGYgeiA9XG4gICAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5ydW5fYXRcIiBzY2hlZHVsZWRfYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdO1xuICAgIGxldCB0ID1cbiAgICAgIHsgYWxhcm0gPSBBbGFybS5udWxsICgpXG4gICAgICA7IGZpcmUgPSBpZ25vcmUgKCogc2V0IGJlbG93ICopXG4gICAgICA7IGZpcmVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgIDsgbnVtX2ZpcmVzX3RvX3NraXAgPSAwXG4gICAgICA7IHNjaGVkdWxlZF9hdFxuICAgICAgOyB0aW1lX3NvdXJjZSA9IHJlYWRfb25seSB0aW1lX3NvdXJjZVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IGZpcmUgKCkgPVxuICAgICAgKCogW2ZpcmVdIHJ1bnMgaW4gYW4gQXN5bmMgam9iLiAgVGhlIGV2ZW50IG1heSBoYXZlIGJlZW4gYWJvcnRlZCBhZnRlciB0aGUgam9iXG4gICAgICAgICB3YXMgZW5xdWV1ZWQsIHNvIFtmaXJlXSBtdXN0IGNoZWNrIFtmaXJlZF0uICopXG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWRcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgdC5udW1fZmlyZXNfdG9fc2tpcCA+IDBcbiAgICAgICAgdGhlbiB0Lm51bV9maXJlc190b19za2lwIDwtIHQubnVtX2ZpcmVzX3RvX3NraXAgLSAxXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZXN1bHQgPSBmIHogaW5cbiAgICAgICAgICAoKiBbZiB6XSBtYXkgaGF2ZSBhYm9ydGVkIHRoZSBldmVudCwgc28gd2UgbXVzdCBjaGVjayBbZmlyZWRdIGFnYWluLiAqKVxuICAgICAgICAgIGlmIEl2YXIuaXNfZW1wdHkgdC5maXJlZCB0aGVuIEl2YXIuZmlsbCB0LmZpcmVkIChIYXBwZW5lZCByZXN1bHQpKVxuICAgIGluXG4gICAgdC5maXJlIDwtIGZpcmU7XG4gICAgc2NoZWR1bGUgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGF0IHRpbWVfc291cmNlIHRpbWUgPSBydW5fYXQgdGltZV9zb3VyY2UgdGltZSBpZ25vcmUgKClcblxuICBsZXQgcnVuX2FmdGVyIHRpbWVfc291cmNlIHNwYW4gZiBhID1cbiAgICBydW5fYXQgdGltZV9zb3VyY2UgKHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuKSBmIGFcbiAgOztcblxuICBsZXQgYWZ0ZXIgdGltZV9zb3VyY2Ugc3BhbiA9IGF0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbilcbmVuZFxuXG5sZXQgYXRfdGltZXMgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpIHQgbmV4dF90aW1lID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGNob29zZVxuICAgICAgWyBjaG9pY2Ugc3RvcCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChhdCB0IChuZXh0X3RpbWUgKCkpKSAoZnVuICgpIC0+IGBUaWNrKSBdXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBgU3RvcCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgfCBgVGljayAtPlxuICAgICAgVGFpbC5leHRlbmQgdGFpbCAoKTtcbiAgICAgIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCB0IGNvbXB1dGVfc3BhbiA9XG4gIGF0X3RpbWVzIHQgP3N0b3AgKGZ1biAoKSAtPiBUaW1lX25zLmFmdGVyIChub3cgdCkgKGNvbXB1dGVfc3BhbiAoKSkpXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCB0IGludGVydmFsID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBub3cgdFxuICBpblxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT5cbiAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2U6c3RhcnQgfmFmdGVyOihub3cgdCkgfmludGVydmFsICgpKVxuOztcblxubW9kdWxlIENvbnRpbnVlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbW1lZGlhdGVseVxuICAgIHwgQWZ0ZXIgb2YgVGltZV9ucy5TcGFuLnRcbiAgICB8IE5leHRfbXVsdGlwbGUgb2YgVGltZV9ucy50ICogVGltZV9ucy5TcGFuLnRcblxuICBsZXQgaW1tZWRpYXRlbHkgPSBJbW1lZGlhdGVseVxuXG4gIGxldCBhdCB0IHRpbWVfc291cmNlID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltbWVkaWF0ZWx5IC0+IFRpbWluZ193aGVlbC5ub3cgdGltZV9zb3VyY2UuZXZlbnRzXG4gICAgfCBBZnRlciBzcGFuIC0+IHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuXG4gICAgfCBOZXh0X211bHRpcGxlIChiYXNlLCBpbnRlcnZhbCkgLT5cbiAgICAgIFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZSB+YWZ0ZXI6KG5vdyB0aW1lX3NvdXJjZSkgfmludGVydmFsICgpXG4gIDs7XG5lbmRcblxubGV0IHJ1bl9yZXBlYXRlZGx5XG4gICAgICA/KHN0YXJ0ID0gcmV0dXJuICgpKVxuICAgICAgP3N0b3BcbiAgICAgID8oY29udGludWVfb25fZXJyb3IgPSB0cnVlKVxuICAgICAgPyhmaW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpKVxuICAgICAgdFxuICAgICAgfmZcbiAgICAgIH5jb250aW51ZVxuICA9XG4gIHN0YXJ0XG4gID4+PiBmdW4gKCkgLT5cbiAgbGV0IGFsYXJtID0gcmVmIChBbGFybS5udWxsICgpKSBpblxuICBsZXQgc3RvcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBOb25lIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBTb21lIHN0b3AgLT5cbiAgICAgIHVwb24gc3RvcCAoZnVuICgpIC0+XG4gICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgIWFsYXJtXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9hbGFybSB0ICFhbGFybTtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKCkpKTtcbiAgICAgIHN0b3BcbiAgaW5cbiAgKCogW3J1bl9mXSwgW2NvbnRpbnVlX2ZdLCBhbmQgW2NvbnRpbnVlX3RyeV93aXRoXSBhcmUgZGVmaW5lZCBzbyB0aGF0IHdlIGFsbG9jYXRlIHRoZWlyXG4gICAgIGNsb3N1cmVzIG9uY2UsIG5vdCBvbmNlIHBlciBpdGVyYXRpb24uICopXG4gIGxldCByZWMgcnVuX2YgKCkgPVxuICAgICgqIEJlZm9yZSBjYWxsaW5nIFtmXSwgd2Ugc3luY2hyb25vdXNseSBjaGVjayB3aGV0aGVyIFtzdG9wXSBpcyBkZXRlcm1pbmVkLiAqKVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBpZiBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gTW9uaXRvci50cnlfd2l0aCBmIH5ydW46YE5vdyB+cmVzdDpgUmFpc2UgPj4+IGNvbnRpbnVlX3RyeV93aXRoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZCA9IGYgKCkgaW5cbiAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGNvbnRpbnVlX2YgKCkgZWxzZSBkID4+PiBjb250aW51ZV9mKVxuICBhbmQgY29udGludWVfZiAoKSA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKClcbiAgICBlbHNlIGFsYXJtIDo9IHJ1bl9hdF9pbnRlcm5hbCB0IChDb250aW51ZS5hdCBjb250aW51ZSB0KSBydW5fZiAoKVxuICBhbmQgY29udGludWVfdHJ5X3dpdGggb3JfZXJyb3IgPVxuICAgIChtYXRjaCBvcl9lcnJvciB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBlcnJvciAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGVycm9yKTtcbiAgICBjb250aW51ZV9mICgpXG4gIGluXG4gIHJ1bl9mICgpXG47O1xuXG5sZXQgZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIHQgc3BhbiBmID1cbiAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS5ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgc3BhblwiIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgcnVuX3JlcGVhdGVkbHkgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB+ZiB+Y29udGludWU6KEFmdGVyIHNwYW4pXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IHNwYW4gZiA9XG4gIGV2ZXJ5JyB0ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkOk5vbmUgc3BhbiAoZnVuICgpIC0+XG4gICAgZiAoKTtcbiAgICByZXR1cm4gKCkpXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBsZXQgbm93ID0gbm93IHQgaW5cbiAgbGV0IGJhc2UsIHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBOb25lIC0+IG5vdywgTm9uZVxuICAgIHwgU29tZSBzdGFydCAtPlxuICAgICAgKCBzdGFydFxuICAgICAgLCBTb21lXG4gICAgICAgICAgKGF0XG4gICAgICAgICAgICAgdFxuICAgICAgICAgICAgIChUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgIH5iYXNlOnN0YXJ0XG4gICAgICAgICAgICAgICAgfmFmdGVyOm5vd1xuICAgICAgICAgICAgICAgIH5jYW5fZXF1YWxfYWZ0ZXI6dHJ1ZVxuICAgICAgICAgICAgICAgIH5pbnRlcnZhbCkpIClcbiAgaW5cbiAgcnVuX3JlcGVhdGVkbHlcbiAgICB0XG4gICAgP3N0YXJ0XG4gICAgP3N0b3BcbiAgICA/Y29udGludWVfb25fZXJyb3JcbiAgICB+ZlxuICAgIH5jb250aW51ZTooTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHdpdGhfdGltZW91dCB0IHNwYW4gZCA9XG4gIGxldCB0aW1lb3V0ID0gRXZlbnQuYWZ0ZXIgdCBzcGFuIGluXG4gIGNob29zZVxuICAgICgqIFRoZSBjb2RlIGJlbG93IGRvZXMgZXhoYXVzdGl2ZSBjYXNlIGFuYWx5c2lzIGluIGJvdGggW2Nob2ljZV1zLiAgQmVjYXVzZSBbdGltZW91dF1cbiAgICAgICBkb2VzIG5vdCBlc2NhcGUgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIGNlcnRhaW4gY2FzZXMgc2hvdWxkIGJlIGltcG9zc2libGUsIGFuZFxuICAgICAgIGFyZSBtYXJrZWQgYXMgc3VjaCB3aXRoIGV4Y2VwdGlvbnMuICBXZSBkbyBub3QgZXhwZWN0IHRob3NlIGV4Y2VwdGlvbnMgdG8gb2NjdXIsXG4gICAgICAgYnV0IGlmIHRoZXkgZG8sIGl0IGxpa2VseSBpbmRpY2F0ZXMgYSBidWcgaW4gW2Nob29zZV0gcmF0aGVyIHRoYW5cbiAgICAgICBbd2l0aF90aW1lb3V0XS4gKilcbiAgICBbIGNob2ljZSBkIChmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggRXZlbnQuYWJvcnQgdGltZW91dCAoKSB3aXRoXG4gICAgICAgICAoKiBbUHJldmlvdXNseV9oYXBwZW5lZF0gY2FuIG9jY3VyIGlmIGJvdGggW2RdIGFuZCBbd2FpdF0gYmVjb21lIGRldGVybWluZWQgYXRcbiAgICAgICAgICAgIHRoZSBzYW1lIHRpbWUsIGUuZy4gW3dpdGhfdGltZW91dCAoc2VjIDAuKSAocmV0dXJuICgpKV0uICopXG4gICAgICAgICB8IE9rIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiAoKVxuICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT5cbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBzaG91bGQgb25seSBhYm9ydCBvbmNlXCJdKTtcbiAgICAgICAgYFJlc3VsdCB2KVxuICAgIDsgY2hvaWNlIChFdmVudC5maXJlZCB0aW1lb3V0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBgVGltZW91dFxuICAgICAgICB8IEFib3J0ZWQgKCkgLT5cbiAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfc291cmNlLndpdGhfdGltZW91dCBidWc6IGJvdGggY29tcGxldGVkIGFuZCB0aW1lZCBvdXRcIl0pXG4gICAgXVxuOztcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gICgqIEVhZ2VyIG1hcCB0byBwcm92aWRlIG1vcmUgYWNjdXJhdGUgdGltaW5ncyB3aGVuIFtmXSBpcyBzeW5jaHJvbm91cy4gKilcbiAgRWFnZXJfZGVmZXJyZWQubWFwIChmICgpKSB+ZjooZnVuIHJlc3VsdCAtPlxuICAgIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gICAgcmVzdWx0LCBkdXJhdGlvbilcbjs7XG5cbmxldCBvZl9zeW5jaHJvbm91cyB0ID0gdFxubGV0IHRvX3N5bmNocm9ub3VzIHQgPSB0XG5cbmxldCB0aW1pbmdfd2hlZWxfaGFzX2V2ZW50X2F0X29yX2JlZm9yZSB3aGVlbCB0aW1lID1cbiAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHdoZWVsXG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgbGV0IG5leHRfYWxhcm0gPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gd2hlZWwgaW5cbiAgICBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5LihuZXh0X2FsYXJtIDw9IHRpbWUpKVxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IHQgfnRvXyA9XG4gIGxldCBpc19xdWVzY2VudCA9XG4gICAgKCogU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBqdXN0IGEgZmFzdCBjYXNlIG9mIFthZHZhbmNlX2J5X2FsYXJtc10sXG4gICAgICAgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY2FsbCB0byBbU2NoZWR1bGVyLnlpZWxkICgpXSBjYW4gYmUgZWxpZGVkLFxuICAgICAgIGhlbmNlIHRoZSBbY2FuX3J1bl9hX2pvYl0gY2hlY2suXG5cbiAgICAgICBXZSdyZSBub3QgY2hlY2tpbmcgZXBvbGwsIGFuZCB3ZSdyZSBub3QgY2hlY2tpbmcgdGhlIFtleHRlcm5hbF9qb2JzXS4gIFRoYXQgaXMgYW5cbiAgICAgICBvYnNlcnZhYmxlIGRpZmZlcmVuY2UsIGJ1dCBzaW5jZSBbYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yOk5vbmVdIGlzIGFscmVhZHlcbiAgICAgICBwcmV0dHkgYnJva2VuIHdoZW4gd2FpdGluZyBmb3IgZXh0ZXJuYWwgZXZlbnRzLCBpdCdzIG5vdCBnb2luZyB0byBiZSBtZWFuaW5nZnVsLlxuICAgICopXG4gICAgY2FuX3J1bl9hX2pvYiB0LnNjaGVkdWxlclxuICAgIHx8IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5oYXNfZXZlbnRzX3RvX3J1biB0XG4gICAgfHwgdGltaW5nX3doZWVsX2hhc19ldmVudF9hdF9vcl9iZWZvcmUgdC5ldmVudHMgdG9fXG4gIGluXG4gIGlmIGlzX3F1ZXNjZW50XG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgdHJ1ZSlcbjs7XG4iLCJ0eXBlIHQgPSB1bml0IC0+IHVuaXRcblxubW9kdWxlIEhhbmRsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5pbmNsdWRlIChTY2hlZHVsZXIgOiBtb2R1bGUgdHlwZSBvZiBTY2hlZHVsZXIgd2l0aCBtb2R1bGUgQnZhciA6PSBTY2hlZHVsZXIuQnZhcilcblxubGV0IHQgPSBTY2hlZHVsZXIudFxuXG5pbmNsdWRlIE1vbml0b3IuRXhwb3J0ZWRfZm9yX3NjaGVkdWxlclxuXG5sZXQgZmluZF9sb2NhbCBrZXkgPSBFeGVjdXRpb25fY29udGV4dC5maW5kX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkga2V5XG5cbmxldCB3aXRoX2xvY2FsIGtleSB2YWx1ZSB+ZiA9XG4gIGxldCB0ID0gdCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LndpdGhfbG9jYWwgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkga2V5IHZhbHVlXG4gIGluXG4gIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgdCBleGVjdXRpb25fY29udGV4dCB+ZlxuOztcblxubGV0IG1haW5fZXhlY3V0aW9uX2NvbnRleHQgPSAodCAoKSkubWFpbl9leGVjdXRpb25fY29udGV4dFxubGV0IGNhbl9ydW5fYV9qb2IgdCA9IG51bV9wZW5kaW5nX2pvYnMgdCA+IDAgfHwgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZFxubGV0IGhhc191cGNvbWluZ19ldmVudCB0ID0gbm90IChUaW1pbmdfd2hlZWwuaXNfZW1wdHkgKGV2ZW50cyB0KSlcbmxldCBuZXh0X3VwY29taW5nX2V2ZW50IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCAoZXZlbnRzIHQpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudF9leG4gdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biAoZXZlbnRzIHQpXG5sZXQgZXZlbnRfcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIChldmVudHMgdClcbmxldCBjeWNsZV9zdGFydCB0ID0gdC5jeWNsZV9zdGFydFxuXG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmYgPVxuICAoKiBVc2luZyBhbiBhcnJheSByYXRoZXIgdGhhbiBhIGxpc3QgZm9yIGNhY2hlIGVmZmljaWVuY3kuIFRoaXMgYW5kXG4gICAgIFtydW5fZXZlcnlfY3ljbGVfZW5kXSBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIHByb2dyYW0gaW5pdGlhbGl6YXRpb24sIHNvIHRoZVxuICAgICBhbGxvY2F0aW9uIGFuZCBnYXJiYWdlIGNyZWF0aW9uIHNob3VsZCBub3QgYmUgYW4gaXNzdWUuXG5cbiAgICAgTm90ZSB0aGF0IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBOIHRpbWVzIHRha2VzIE8oTl4yKSB0aW1lLCBidXQgdGhpcyBzaG91bGQgYmUgZmluZVxuICAgICBiZWNhdXNlIE4gaXMgc21hbGwuIFNhbWUgZm9yIFtydW5fZXZlcnlfY3ljbGVfZW5kXS4gKilcbiAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRcbjs7XG5cbmxldCBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmYgPVxuICB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5ydW5fZXZlcnlfY3ljbGVfZW5kXG47O1xuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgdCB+ZiA9XG4gIGxldCBoYW5kbGUgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS5jcmVhdGUgKCkgaW5cbiAgSGFzaHRibC5hZGRfZXhuIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIH5rZXk6aGFuZGxlIH5kYXRhOmY7XG4gIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbmxldCBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgdCB+ZiA9XG4gIGxldCBoYW5kbGUgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS5jcmVhdGUgKCkgaW5cbiAgSGFzaHRibC5hZGRfZXhuIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmY7XG4gIGhhbmRsZVxuOztcblxubGV0IGFycmF5X3JlbW92ZV9maXJzdCBhcnIgfmYgPVxuICBtYXRjaCBBcnJheS5maW5kaSBhcnIgfmYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGlkeCwgXykgLT5cbiAgICBTb21lXG4gICAgICAoQXJyYXkuaW5pdFxuICAgICAgICAgKEFycmF5Lmxlbmd0aCBhcnIgLSAxKVxuICAgICAgICAgfmY6KGZ1biBpIC0+IGlmIGkgPCBpZHggdGhlbiBhcnIuKGkpIGVsc2UgYXJyLihpICsgMSkpKVxuOztcblxubGV0IHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayBhcnIgZiA9XG4gICgqIFJlbW92ZSBhIHNpbmdsZSBpbnN0YW5jZSBvZiBbZl0gZnJvbSBbYXJyXS4gTW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBtYXkgYmUgcHJlc2VudCxcbiAgICAgYnV0IHJlbW92YWwgaXMgcmVmZXJlbmNlLWNvdW50ZWQgYnkgW3J1bl9ldmVyeV9jeWNsZV8oc3RhcnR8ZW5kKV9zdGF0ZV0gdGFibGVzLiAqKVxuICBtYXRjaCBhcnJheV9yZW1vdmVfZmlyc3QgfmY6KGZ1biBfIGcgLT4gcGh5c19lcXVhbCBmIGcpIGFyciB3aXRoXG4gIHwgU29tZSBhcnIgLT4gYXJyXG4gIHwgTm9uZSAtPlxuICAgICgqIFRoaXMgc2hvdWxkIGJlIHVucmVhY2hhYmxlLCBzZWUgdGhlIFtpbnZhcmlhbnRdIGluIFtzY2hlZHVsZXIxLm1sXS4gKilcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJTY2hlZHVsZXIucmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIGNhbGxlZCB3aXRoIGEgaG9vayB0aGF0IGlzbid0IHJlZ2lzdGVyZWRcIl1cbjs7XG5cbmxldCByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gdCBoYW5kbGUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBzdGFydCBob29rIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cIlxuICB8IFNvbWUgZiAtPlxuICAgIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCBmXG47O1xuXG5sZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biB0IGhhbmRsZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBlbmQgaG9vayB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuXCJcbiAgfCBTb21lIGYgLT4gdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgZlxuOztcblxubGV0IG1hcF9jeWNsZV90aW1lcyB0IH5mID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgKGYgdC5sYXN0X2N5Y2xlX3RpbWUpKSlcbjs7XG5cbmxldCBsb25nX2N5Y2xlcyB0IH5hdF9sZWFzdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPlxuICAgICAgaWYgVGltZV9ucy5TcGFuLiggPj0gKSB0Lmxhc3RfY3ljbGVfdGltZSBhdF9sZWFzdFxuICAgICAgdGhlbiBUYWlsLmV4dGVuZCB0YWlsIHQubGFzdF9jeWNsZV90aW1lKSlcbjs7XG5cbmxldCBjeWNsZV9udW1fam9icyB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdC5sYXN0X2N5Y2xlX251bV9qb2JzKSlcbjs7XG5cbmxldCBjeWNsZV9jb3VudCB0ID0gdC5jeWNsZV9jb3VudFxuXG5sZXQgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgaW50ID1cbiAgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA8LSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIGludFxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgPVxuICBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuOztcblxubGV0IHNldF90aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayB0IGYgPSB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDwtIGZcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmV4dGVybmFsX2pvYnMgKEV4dGVybmFsX2pvYi5UIChleGVjdXRpb25fY29udGV4dCwgZiwgYSkpO1xuICB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rICgpXG47O1xuXG5sZXQgc2V0X2V2ZW50X2FkZGVkX2hvb2sgdCBmID0gdC5ldmVudF9hZGRlZF9ob29rIDwtIFNvbWUgZlxubGV0IHNldF9qb2JfcXVldWVkX2hvb2sgdCBmID0gdC5qb2JfcXVldWVkX2hvb2sgPC0gU29tZSBmXG5cbmxldCBjcmVhdGVfYWxhcm0gdCBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIEdjLkV4cGVydC5BbGFybS5jcmVhdGUgKGZ1biAoKSAtPlxuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiAoKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyIHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgaGVhcF9ibG9jayA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy5cblxuICAgICAgIEJ5IHB1dHRpbmcgW2hlYXBfYmxvY2tdIGluIFtleHRlcm5hbF9qb2JzXSwgd2UgYXJlIGtlZXBpbmcgaXQgYWxpdmUgdW50aWwgdGhlIG5leHRcbiAgICAgICB0aW1lIHRoZSBhc3luYyBzY2hlZHVsZXIgZ2V0cyBhcm91bmQgdG8gZGVxdWV1ZWluZyBpdC4gIENhbGxpbmdcbiAgICAgICBbdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gZW5zdXJlcyB0aGF0IHdpbGwgaGFwcGVuIGluIHNob3J0IG9yZGVyLiAgVGh1cyxcbiAgICAgICB3ZSBhcmUgbm90IGRyYW1hdGljYWxseSBpbmNyZWFzaW5nIHRoZSBsaWZldGltZSBvZiBbaGVhcF9ibG9ja10sIHNpbmNlIHRoZSBPQ2FtbFxuICAgICAgIHJ1bnRpbWUgYWxyZWFkeSByZXN1cnJlY3RlZCBbaGVhcF9ibG9ja10gc28gdGhhdCB3ZSBjb3VsZCByZWZlciB0byBpdCBoZXJlLiAgVGhlXG4gICAgICAgT0NhbWwgcnVudGltZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGZpbmFsaXplciBmdW5jdGlvbiB3aGVuIGl0IG5vdGljZWQgW2hlYXBfYmxvY2tdXG4gICAgICAgY291bGQgYmUgZmluYWxpemVkLCBzbyB0aGVyZSBpcyBubyBpbmZpbml0ZSBsb29wIGluIHdoaWNoIHdlIGFyZSBjYXVzaW5nIHRoZVxuICAgICAgIGZpbmFsaXplciB0byBydW4gYWdhaW4uICBBbHNvLCBPQ2FtbCBkb2VzIG5vdCBpbXBvc2UgYW55IHJlcXVpcmVtZW50IG9uIGZpbmFsaXplclxuICAgICAgIGZ1bmN0aW9ucyB0aGF0IHRoZXkgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBibG9jaywgc28gaXQncyBmaW5lIHRoYXQgd2Uga2VlcFxuICAgICAgIFtoZWFwX2Jsb2NrXSBhcm91bmQgdW50aWwgbGF0ZXIuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJlbnF1ZXVlaW5nIGZpbmFsaXplclwiO1xuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBoZWFwX2Jsb2NrXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplclwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VdIGluc3RlYWQgb2YgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gYmVjYXVzZSB0aGUgbGF0dGVyXG4gICAgIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlXSB0byBydW4gZmluYWxpemVycyBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlIGZpbmFsaXplciBoZWFwX2Jsb2NrIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAoKiBbSGVhcF9ibG9ja10gZW5zdXJlcyB0aGF0IHRoaXMgd2lsbCBvbmx5IGZhaWwgZm9yIHN0YXRpYyBkYXRhLCBpbiB3aGljaCBjYXNlIHdlXG4gICAgICAgY2FuIGRyb3AgdGhlIGZpbmFsaXplciBzaW5jZSB0aGUgYmxvY2sgd2lsbCBuZXZlciBiZSBjb2xsZWN0ZWQuKilcbiAgICAoKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfZXhuIHQgeCBmID1cbiAgYWRkX2ZpbmFsaXplciB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgKGZ1biBoZWFwX2Jsb2NrIC0+XG4gICAgZiAoSGVhcF9ibG9jay52YWx1ZSBoZWFwX2Jsb2NrKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3QgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciAoKSA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzXG4gICAgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXIgKHVzaW5nICdsYXN0JyBzZW1hbnRpYylcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKClcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJfbGFzdF0gYmVjYXVzZVxuICAgICB0aGUgbGF0dGVyIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlX2xhc3RdIHRvIHJ1biBmaW5hbGl6ZXJzXG4gICAgIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCBmaW5hbGl6ZXIgaGVhcF9ibG9jayB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgKCogW0hlYXBfYmxvY2tdIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgb25seSBmYWlsIGZvciBzdGF0aWMgZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZVxuICAgICAgIGNhbiBkcm9wIHRoZSBmaW5hbGl6ZXIgc2luY2UgdGhlIGJsb2NrIHdpbGwgbmV2ZXIgYmUgY29sbGVjdGVkLiopXG4gICAgKClcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIHQgeCBmID0gYWRkX2ZpbmFsaXplcl9sYXN0IHQgKEhlYXBfYmxvY2suY3JlYXRlX2V4biB4KSBmXG5cbigqKiBbZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmRdIHNldHMgdGhlIG51bWJlciBvZiBub3JtYWwgam9icyBhbGxvd2VkIHRvIHJ1biBpbiB0aGlzXG4gICAgY3ljbGUgdG8gemVyby4gIFRodXMsIGFmdGVyIHRoZSBjdXJyZW50bHkgcnVubmluZyBqb2IgY29tcGxldGVzLCB0aGUgc2NoZWR1bGVyIHdpbGxcbiAgICBzd2l0Y2ggdG8gbG93IHByaW9yaXR5IGpvYnMgYW5kIHRoZW4gZW5kIHRoZSBjdXJyZW50IGN5Y2xlLiAqKVxubGV0IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kIHQgPVxuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgMFxuOztcblxuKCogV2UgcHJlYWxsb2NhdGUgW3NlbmRfZXhuXSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IG9uIGVhY2ggY2FsbCB0byBbYWR2YW5jZV9jbG9ja10uICopXG5sZXQgc2VuZF9leG4gPSBTb21lIE1vbml0b3Iuc2VuZF9leG5cblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+bm93ID1cbiAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFkdmFuY2VfaW50ZXJuYWwgdC50aW1lX3NvdXJjZSB+dG9fOm5vdyB+c2VuZF9leG5cbjs7XG5cbmxldCBydW5fY3ljbGUgdCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwicnVuX2N5Y2xlIHN0YXJ0aW5nXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgdC5jeWNsZV9jb3VudCA8LSB0LmN5Y2xlX2NvdW50ICsgMTtcbiAgdC5jeWNsZV9zdGFydCA8LSBub3c7XG4gIHQuaW5fY3ljbGUgPC0gdHJ1ZTtcbiAgQnZhci5icm9hZGNhc3QgdC55aWVsZCAoKTtcbiAgbGV0IG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSA9IG51bV9qb2JzX3J1biB0IGluXG4gIEFycmF5Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBhZHZhbmNlX2Nsb2NrIHQgfm5vdztcbiAgc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eTp0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlO1xuICBsZXQgcmVjIHJ1bl9qb2JzIHQgPVxuICAgIG1hdGNoIFNjaGVkdWxlci5ydW5fam9icyB0IHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpO1xuICAgICAgKCogW3J1bl9qb2JzXSBzdG9wcGVkIGR1ZSB0byBhbiBleG4uICBUaGVyZSBtYXkgc3RpbGwgYmUgam9icyB0aGF0IGNvdWxkIGJlXG4gICAgICAgICBydW4gdGhpcyBjeWNsZSwgc28gW3J1bl9qb2JzXSBhZ2Fpbi4gKilcbiAgICAgIHJ1bl9qb2JzIHRcbiAgaW5cbiAgcnVuX2pvYnMgdDtcbiAgbGV0IGN5Y2xlX3RpbWUgPSBUaW1lX25zLmRpZmYgKFRpbWVfbnMubm93ICgpKSB0LmN5Y2xlX3N0YXJ0IGluXG4gIHQubGFzdF9jeWNsZV90aW1lIDwtIGN5Y2xlX3RpbWU7XG4gIHQubGFzdF9jeWNsZV9udW1fam9icyA8LSBudW1fam9ic19ydW4gdCAtIG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZTtcbiAgdC50b3RhbF9jeWNsZV90aW1lIDwtIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgY3ljbGVfdGltZSk7XG4gIGlmIEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIEJ2YXIuYnJvYWRjYXN0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gKCk7XG4gIEFycmF5Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgdC5pbl9jeWNsZSA8LSBmYWxzZTtcbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIERlYnVnLmxvZ1xuICAgICAgXCJydW5fY3ljbGUgZmluaXNoZWRcIlxuICAgICAgKHVuY2F1Z2h0X2V4biB0LCBpc19zb21lIChuZXh0X3VwY29taW5nX2V2ZW50IHQpKVxuICAgICAgWyVzZXhwX29mOiBFcnJvci50IG9wdGlvbiAqIGJvb2xdXG47O1xuXG5sZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKSA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gc3RhcnRpbmdcIjtcbiAgbGV0IHQgPSB0ICgpIGluXG4gIGlmIGlzX2RlYWQgdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBjYW5ub3QgcHJvY2VlZCAtLSBzY2hlZHVsZXIgaXMgZGVhZFwiXG4gICAgICAgICAgfnNjaGVkdWxlcjoodCA6IHQpXTtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBydW5fY3ljbGUgdDtcbiAgICBhZHZhbmNlX2Nsb2NrIHQgfm5vdzooVGltZV9ucy5ub3cgKCkpO1xuICAgIGlmIGNhbl9ydW5fYV9qb2IgdCB0aGVuIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgKCogUmVzZXQgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGNvbnRleHQgdG8gbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHdoZW4gd2UncmUgbm90IGluXG4gICAgIGEgam9iLCBbY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IG1haW5fZXhlY3V0aW9uX2NvbnRleHRdLiAqKVxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0Lm1haW5fZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gZmluaXNoZWRcIjtcbiAgT3B0aW9uLml0ZXIgKHVuY2F1Z2h0X2V4biB0KSB+ZjpFcnJvci5yYWlzZVxuOztcblxubGV0IG1ha2VfYXN5bmNfdW51c2FibGUgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICB0LmNoZWNrX2FjY2Vzc1xuICA8LSBTb21lXG4gICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIHJhaXNlX3MgWyVzZXhwIFwiQXN5bmMgc2NoZWR1bGVyIGlzIHVudXNhYmxlIGR1ZSB0byBbbWFrZV9hc3luY191bnVzYWJsZV1cIl0pXG47O1xuXG5sZXQgcmVzZXRfaW5fZm9ya2VkX3Byb2Nlc3MgKCkgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJyZXNldF9pbl9mb3JrZWRfcHJvY2Vzc1wiO1xuICAoKiBUaGVyZSBpcyBubyBuZWVkIHRvIGVtcHR5IFttYWluX21vbml0b3JfaG9sZV0uICopXG4gIFNjaGVkdWxlci4odF9yZWYgOj0gY3JlYXRlICgpKVxuOztcblxubGV0IGNoZWNrX2ludmFyaWFudHMgdCA9IHQuY2hlY2tfaW52YXJpYW50c1xubGV0IHNldF9jaGVja19pbnZhcmlhbnRzIHQgYiA9IHQuY2hlY2tfaW52YXJpYW50cyA8LSBiXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIHQgYiA9IHQucmVjb3JkX2JhY2t0cmFjZXMgPC0gYlxubGV0IHlpZWxkIHQgPSBCdmFyLndhaXQgdC55aWVsZFxuXG5sZXQgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPyhtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ID0gZmFsc2UpIHQgPVxuICBpZiBtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSBCdmFyLndhaXQgdC55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpblxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIueWllbGRfZXZlcnkgZ290IG5vbnBvc2l0aXZlIGNvdW50XCIgKG4gOiBpbnQpXVxuICBlbHNlIGlmIG4gPSAxXG4gIHRoZW4gc3RhZ2UgKGZ1biB0IC0+IHlpZWxkIHQpXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF91bnRpbF95aWVsZCA9IHJlZiBuIGluXG4gICAgc3RhZ2UgKGZ1biB0IC0+XG4gICAgICBkZWNyIGNvdW50X3VudGlsX3lpZWxkO1xuICAgICAgaWYgIWNvdW50X3VudGlsX3lpZWxkID4gMFxuICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBjb3VudF91bnRpbF95aWVsZCA6PSBuO1xuICAgICAgICB5aWVsZCB0KSkpXG47O1xuXG5sZXQgdG90YWxfY3ljbGVfdGltZSB0ID1cbiAgKCogQWRqdXN0IGZvciB0aGUgZmFjdCB0aGUgY2FsbGVyJ3MgcHJvYmFibHkgYW4gQXN5bmMgam9iLiAqKVxuICBpZiB0LmluX2N5Y2xlXG4gIHRoZW4gKFxuICAgIGxldCB0aGlzX2N5Y2xlX3RpbWUgPSBUaW1lX25zLihkaWZmIChub3cgKCkpIHQuY3ljbGVfc3RhcnQpIGluXG4gICAgVGltZV9ucy5TcGFuLih0LnRvdGFsX2N5Y2xlX3RpbWUgKyB0aGlzX2N5Y2xlX3RpbWUpKVxuICBlbHNlIHQudG90YWxfY3ljbGVfdGltZVxuOztcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmsgPSBzdHJ1Y3RcbiAgbW9kdWxlIFdvcmtlcl9yZXN1bHQgPSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHRcblxuXG4gIGxldCByZWMgcnVuIHQgPSBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nOjFfMDAwXG5cbiAgYW5kIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPVxuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiB5aWVsZF90aGVuX3J1biB0XG4gICAgZWxzZSBpZiBub3QgKERlcXVlLmlzX2VtcHR5IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycylcbiAgICB0aGVuIChcbiAgICAgIGxldCB3b3JrZXIgPSBEZXF1ZS5kZXF1ZXVlX2Zyb250X2V4biB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgaW5cbiAgICAgIHNldF9leGVjdXRpb25fY29udGV4dCB0IHdvcmtlci5leGVjdXRpb25fY29udGV4dDtcbiAgICAgIHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG5cbiAgYW5kIHlpZWxkX3RoZW5fcnVuIHQgPVxuICAgIGlmIG5vdCAoRGVxdWUuaXNfZW1wdHkgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzKVxuICAgIHRoZW4gRGVmZXJyZWQudXBvbiAoeWllbGQgdCkgKGZ1biAoKSAtPiBydW4gdClcblxuICBhbmQgcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9XG4gICAgYXNzZXJ0IChwaHlzX2VxdWFsIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB3b3JrZXIuZXhlY3V0aW9uX2NvbnRleHQpO1xuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiAoXG4gICAgICBEZXF1ZS5lbnF1ZXVlX2Zyb250IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyB3b3JrZXI7XG4gICAgICB5aWVsZF90aGVuX3J1biB0KVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nIC0gMSBpblxuICAgICAgbWF0Y2ggd29ya2VyLmV4ZWMgKCkgd2l0aFxuICAgICAgfCBGaW5pc2hlZCAtPiBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IE5vdF9maW5pc2hlZCAtPiBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgbGV0IGJ0ID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBidCk7XG4gICAgICAgIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgfmYgPVxuICAgIGxldCB0ID0gdCAoKSBpblxuICAgIGxldCBxdWV1ZSA9IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyBpblxuICAgIGxldCBydW5uaW5nID0gbm90IChEZXF1ZS5pc19lbXB0eSBxdWV1ZSkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2UgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkgfnByaW9yaXR5Okxvd1xuICAgIGluXG4gICAgRGVxdWUuZW5xdWV1ZV9iYWNrIHF1ZXVlIHsgZXhlY3V0aW9uX2NvbnRleHQ7IGV4ZWMgPSBmIH07XG4gICAgaWYgbm90IHJ1bm5pbmcgdGhlbiBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2JlbmNoID0gc3RydWN0XG4gIGxldCBhZHZhbmNlX2Nsb2NrID0gYWR2YW5jZV9jbG9ja1xuZW5kXG5cbmxldCBpbl9jeWNsZSB0ID0gdC5pbl9jeWNsZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgQ291bnRpbmdfc2VtYXBob3JlIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB3YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIHJlbGVhc2Vfam9iX3Rva2VuIDogdCAtPiB1bml0XG4gIHZhbCBhYm9ydCA6IHQgLT4gdW5pdFxuICB2YWwgY3JlYXRlIDogbWF4X2NvbmN1cnJlbnRfam9iczppbnQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnRcbiAgICA7IG11dGFibGUgd2FpdGVyIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGFib3J0ZWQgOiBib29sXG4gICAgfVxuXG4gIGxldCB3YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuICh7IG1heF9jb25jdXJyZW50X2pvYnM7IHdhaXRlcjsgYWJvcnRlZCB9IGFzIHQpID1cbiAgICBtYXRjaCBhYm9ydGVkIHdpdGhcbiAgICB8IHRydWUgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IGZhbHNlIC0+XG4gICAgICBpZiBtYXhfY29uY3VycmVudF9qb2JzID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHQubWF4X2NvbmN1cnJlbnRfam9icyA8LSBtYXhfY29uY3VycmVudF9qb2JzIC0gMTtcbiAgICAgICAgRGVmZXJyZWQucmV0dXJuICgpKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAoT3B0aW9uLmlzX25vbmUgd2FpdGVyKTtcbiAgICAgICAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICB0LndhaXRlciA8LSBTb21lIGl2YXI7XG4gICAgICAgIEl2YXIucmVhZCBpdmFyKVxuICA7O1xuXG4gIGxldCByZWxlYXNlX2pvYl90b2tlbiAoeyBtYXhfY29uY3VycmVudF9qb2JzOyB3YWl0ZXI7IGFib3J0ZWQgPSBfIH0gYXMgdCkgPVxuICAgIG1hdGNoIHdhaXRlciB3aXRoXG4gICAgfCBTb21lIGl2YXIgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgdC53YWl0ZXIgPC0gTm9uZVxuICAgIHwgTm9uZSAtPiB0Lm1heF9jb25jdXJyZW50X2pvYnMgPC0gbWF4X2NvbmN1cnJlbnRfam9icyArIDFcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9XG4gICAgdC5hYm9ydGVkIDwtIHRydWU7XG4gICAgdC53YWl0ZXIgPC0gTm9uZVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgIHsgbWF4X2NvbmN1cnJlbnRfam9iczsgd2FpdGVyID0gTm9uZTsgYWJvcnRlZCA9IGZhbHNlIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgY29tcHV0ZSA6XG4gICAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LnQgLT4gQ291bnRpbmdfc2VtYXBob3JlLnQgLT4gKCdhIERlZmVycmVkLnQgLT4gdW5pdCkgLT4gdW5pdFxuICAgIH1cbiAgW0BAdW5ib3hlZF1cblxuICBsZXQgcmV0dXJuIHggPSB7IGNvbXB1dGUgPSAoZnVuIF8gXyBrIC0+IGsgKHJldHVybiB4KSkgfVxuXG4gIGxldCBtYXAgPVxuICAgIGBDdXN0b21cbiAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgeyBjb21wdXRlID1cbiAgICAgICAgICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGQgLT5cbiAgICAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgICAgKGxldCVtYXAgcmVzdWx0ID0gZCBpblxuICAgICAgICAgICAgICAgICAgICAgZiByZXN1bHQpKSlcbiAgICAgICAgIH0pXG4gIDs7XG5cbiAgbGV0IGFwcGx5IHRfZiB0ID1cbiAgICB7IGNvbXB1dGUgPVxuICAgICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICAgIHRfZi5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGRmIC0+XG4gICAgICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGR2IC0+XG4gICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgIChsZXQlYmluZCBmID0gZGYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgdiA9IGR2IGluXG4gICAgICAgICAgICAgICAgICBmIHYpKSkpXG4gICAgfVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChUKVxuXG5sZXQgZW5xdWV1ZScgc2NoZWR1bGVyIGN0eCBmID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgY3R4IChmdW4gKCkgLT4gdXBvbiAoZiAoKSkgKEl2YXIuZmlsbCBpdmFyKSkgKCk7XG4gIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgam9iIGYgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgRGVmZXJyZWQudXBvbiAoQ291bnRpbmdfc2VtYXBob3JlLndhaXRfdG9fYWNxdWlyZV9qb2JfdG9rZW4gc2VtYXBob3JlKSAoZnVuICgpIC0+XG4gICAgICAgICAgIGtcbiAgICAgICAgICAgICAoZW5xdWV1ZScgKFNjaGVkdWxlci50ICgpKSBleGVjX2N0eCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgbGV0JW1hcCBhID0gZiAoKSBpblxuICAgICAgICAgICAgICAgIENvdW50aW5nX3NlbWFwaG9yZS5yZWxlYXNlX2pvYl90b2tlbiBzZW1hcGhvcmU7XG4gICAgICAgICAgICAgICAgYSkpKSlcbiAgfVxuOztcblxubGV0IHJ1biB0IH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgbGV0IHNlbWFwaG9yZSA9IENvdW50aW5nX3NlbWFwaG9yZS5jcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgKCogVGhlIG5hbWUgaXMgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gb3JkZXIgdG8gcHJldmVudCBbTW9uaXRvci5zZW5kX2V4bl1cbiAgICAgZnJvbSBhcHBlbmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBtb25pdG9yIHRvIHRoZSBleGNlcHRpb25zIHdlIGZvcndhcmQuXG4gICAgIFRoaXMgbWF0dGVycyBiZWNhdXNlIHdlIHdhbnQgc2ltbGlhciBiZWhhdmlvciB0byBbVGhyb3R0bGVdIGFuZCBub3QgYnJlYWtcbiAgICAgZXhpc3RpbmcgdGVzdHMuICopXG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJcIiAoKSBpblxuICBsZXQgcGFyZW50X21vbml0b3IgPSBNb25pdG9yLmN1cnJlbnQgKCkgaW5cbiAgTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIG1vbml0b3IgfmY6KGZ1biBlcnIgLT5cbiAgICBDb3VudGluZ19zZW1hcGhvcmUuYWJvcnQgc2VtYXBob3JlO1xuICAgIE1vbml0b3Iuc2VuZF9leG4gcGFyZW50X21vbml0b3IgZXJyKTtcbiAgbGV0IGV4ZWNfY3R4ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZVxuICAgICAgfm1vbml0b3JcbiAgICAgIChTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoU2NoZWR1bGVyLnQgKCkpKVxuICBpblxuICBsZXQgaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biByIC0+IERlZmVycmVkLnVwb24gciAoSXZhci5maWxsIGl2YXIpKTtcbiAgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBvZl90aHVuayB0aHVuayA9XG4gIHsgY29tcHV0ZSA9XG4gICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICBsZXQgdCA9IHRodW5rICgpIGluXG4gICAgICAgICB0LmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIGspXG4gIH1cbjs7XG5cbmxldCAoICo+ICkgdDEgdDIgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgdDEuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkMSAtPlxuICAgICAgICAgICB0Mi5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGQyIC0+XG4gICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgKGxldCViaW5kICgpID0gZDEgaW5cbiAgICAgICAgICAgICAgICBkMikpKSlcbiAgfVxuOztcblxubGV0IGJvdGhfdW5pdCA9ICggKj4gKVxuIiwib3BlbiEgQmFzZVxuXG50eXBlIF8gdCA9XG4gIHwgU3RhY2sgOiAnYSBTdGFjay50IC0+ICdhIHRcbiAgfCBDb3VudGVyIDogeyBtdXRhYmxlIGxlbmd0aCA6IGludCB9IC0+IHVuaXQgdFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG9mX2xpc3QgbGlzdCA9IFN0YWNrIChTdGFjay5vZl9saXN0IGxpc3QpXG5cbmxldCBjcmVhdGVfY291bnRlciB+bGVuZ3RoID1cbiAgaWYgbGVuZ3RoIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIuY3JlYXRlX2NvdW50ZXJdIGdvdCBuZWdhdGl2ZSBsZW5ndGhcIiAobGVuZ3RoIDogaW50KV07XG4gIENvdW50ZXIgeyBsZW5ndGggfVxuOztcblxubGV0IGxlbmd0aCAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLmxlbmd0aCBzXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoXG47O1xuXG5sZXQgY2xlYXIgKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5jbGVhciBzXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoIDwtIDBcbjs7XG5cbmxldCBwdXNoICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5wdXNoIHMgYVxuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSByLmxlbmd0aCArIDFcbjs7XG5cbmxldCBwb3BfZXhuICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucG9wX2V4biBzXG4gIHwgQ291bnRlciByIC0+XG4gICAgaWYgci5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJbU3RhY2tfb3JfY291bnRlci5wb3BfZXhuXSBvZiBlbXB0eSBzdGFja1wiXTtcbiAgICByLmxlbmd0aCA8LSByLmxlbmd0aCAtIDFcbjs7XG5cbmxldCBpdGVyICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBhIC0+IHVuaXQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5pdGVyIHMgfmZcbiAgfCBDb3VudGVyIHIgLT5cbiAgICBmb3IgXyA9IDEgdG8gci5sZW5ndGggZG9cbiAgICAgIGYgKClcbiAgICBkb25lXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG50eXBlICdhIG91dGNvbWUgPVxuICBbIGBPayBvZiAnYVxuICB8IGBBYm9ydGVkXG4gIHwgYFJhaXNlZCBvZiBleG5cbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIEludGVybmFsX2pvYiA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdiIERlZmVycmVkLnQpIC0+ICdhIHQgKiAnYiBvdXRjb21lIERlZmVycmVkLnRcblxuICAoKiBFdmVyeSBpbnRlcm5hbCBqb2Igd2lsbCBldmVudHVhbGx5IGJlIGVpdGhlciBbcnVuXSBvciBbYWJvcnRdZWQsIGJ1dCBub3QgYm90aC4gKilcblxuICB2YWwgcnVuIDogJ2EgdCAtPiAnYSAtPiBbIGBPayB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gIHZhbCBhYm9ydCA6IF8gdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogWyBgQWJvcnQgfCBgU3RhcnQgb2YgJ2EgXSBJdmFyLnRcbiAgICA7IG91dGNvbWUgOiBbIGBPayB8IGBBYm9ydGVkIHwgYFJhaXNlZCBdIERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSB3b3JrID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2glYmluZCBJdmFyLnJlYWQgc3RhcnQgd2l0aFxuICAgICAgfCBgQWJvcnQgLT4gcmV0dXJuIGBBYm9ydGVkXG4gICAgICB8IGBTdGFydCBhIC0+XG4gICAgICAgIChtYXRjaCVtYXBcbiAgICAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgICAgIChmdW4gKCkgLT4gd29yayBhKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBPayBhIC0+IGBPayBhXG4gICAgICAgICB8IEVycm9yIGV4biAtPiBgUmFpc2VkIGV4bilcbiAgICBpblxuICAgIGxldCBvdXRjb21lID1cbiAgICAgIG1hdGNoJW1hcCByZXN1bHQgd2l0aFxuICAgICAgfCBgT2sgXyAtPiBgT2tcbiAgICAgIHwgYEFib3J0ZWQgLT4gYEFib3J0ZWRcbiAgICAgIHwgYFJhaXNlZCBfIC0+IGBSYWlzZWRcbiAgICBpblxuICAgIGxldCB0ID0geyBzdGFydDsgb3V0Y29tZSB9IGluXG4gICAgdCwgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHJ1biB0IGEgPVxuICAgIEl2YXIuZmlsbCB0LnN0YXJ0IChgU3RhcnQgYSk7XG4gICAgbWF0Y2glbWFwIHQub3V0Y29tZSB3aXRoXG4gICAgfCBgQWJvcnRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChgT2sgfCBgUmFpc2VkKSBhcyB4IC0+IHhcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9IEl2YXIuZmlsbCB0LnN0YXJ0IGBBYm9ydFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgY29udGludWVfb25fZXJyb3IgOiBib29sXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9icyA6IGludFxuICA7ICgqIFtqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VdIGhvbGRzIHJlc291cmNlcyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGluIHVzZSBieSBhXG4gICAgICAgcnVubmluZyBqb2IuICopXG4gICAgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIDogJ2EgU3RhY2tfb3JfY291bnRlci50XG4gIDtcbiAgICAoKiBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyB0aGUgcXVldWUgb2Ygam9icyB0aGF0IGhhdmVuJ3QgeWV0IHN0YXJ0ZWQuICopXG4gICAgam9ic193YWl0aW5nX3RvX3N0YXJ0IDogJ2EgSW50ZXJuYWxfam9iLnQgUXVldWUudFxuICA7ICgqIFswIDw9IG51bV9qb2JzX3J1bm5pbmcgPD0gbWF4X2NvbmN1cnJlbnRfam9ic10uICopXG4gICAgbXV0YWJsZSBudW1fam9ic19ydW5uaW5nIDogaW50XG4gIDsgKCogW2NhcGFjaXR5X2F2YWlsYWJsZV0gaXMgW1NvbWUgaXZhcl0gaWYgdXNlciBjb2RlIGhhcyBjYWxsZWQgW2NhcGFjaXR5X2F2YWlsYWJsZSB0XVxuICAgICAgIGFuZCBpcyB3YWl0aW5nIHRvIGJlIG5vdGlmaWVkIHdoZW4gY2FwYWNpdHkgaXMgYXZhaWxhYmxlIGluIHRoZSB0aHJvdHRsZS5cbiAgICAgICBbbWF5YmVfc3RhcnRfam9iXSB3aWxsIGZpbGwgW2l2YXJdIHdoZW4gY2FwYWNpdHkgYmVjb21lcyBhdmFpbGFibGUsIGkuZS4gd2hlblxuICAgICAgIFtqb2JzX3dhaXRpbmdfdG9fc3RhcnRdIGlzIGVtcHR5IGFuZCBbbnVtX2pvYnNfcnVubmluZyA8IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgY2FwYWNpdHlfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gIDsgKCogW2lzX2RlYWRdIGlzIHRydWUgaWYgW3RdIHdhcyBraWxsZWQgZHVlIHRvIGEgam9iIHJhaXNpbmcgYW4gZXhjZXB0aW9uIG9yIFtraWxsIHRdXG4gICAgICAgYmVpbmcgY2FsbGVkLiAqKVxuICAgIG11dGFibGUgaXNfZGVhZCA6IGJvb2xcbiAgOyAoKiBbY2xlYW5zXSBob2xkcyBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjbGVhbiBlYWNoIHJlc291cmNlIHdoZW4gW3RdIGlzXG4gICAgICAga2lsbGVkLiAqKVxuICAgIG11dGFibGUgY2xlYW5zIDogKCdhIC0+IHVuaXQgRGVmZXJyZWQudCkgbGlzdFxuICA7ICgqIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBpcyB0aGUgbnVtYmVyIG9mIHJlc291cmNlcyB3aG9zZSBjbGVhbiBmdW5jdGlvbnMgaGF2ZVxuICAgICAgIG5vdCB5ZXQgY29tcGxldGVkLiAgV2hpbGUgW3RdIGlzIGFsaXZlLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9XG4gICAgICAgbWF4X2NvbmN1cnJlbnRfam9ic10uICBPbmNlIFt0XSBpcyBraWxsZWQsIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBkZWNyZWFzZXMgdG9cbiAgICAgICB6ZXJvIG92ZXIgdGltZSBhcyB0aGUgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIG11dGFibGUgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA6IGludFxuICA7ICgqIFtjbGVhbmVkXSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gcmVhY2hlcyB6ZXJvLFxuICAgICAgIGkuZS4gYWZ0ZXIgW3RdIGlzIGtpbGxlZCBhbmQgYWxsIGl0cyBjbGVhbiBmdW5jdGlvbnMgY29tcGxldGUuICopXG4gICAgY2xlYW5lZCA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb250aW51ZV9vbl9lcnJvcjppZ25vcmVcbiAgICAgIH5tYXhfY29uY3VycmVudF9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfY29uY3VycmVudF9qb2JzIC0+IGFzc2VydCAobWF4X2NvbmN1cnJlbnRfam9icyA+IDApKSlcbiAgICAgIH5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2U6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSAtPlxuICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLml0ZXIgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOmludmFyaWFudF9hO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZVxuICAgICAgICAgICAgID0gaWYgdC5pc19kZWFkIHRoZW4gMCBlbHNlIHQubWF4X2NvbmN1cnJlbnRfam9icyAtIHQubnVtX2pvYnNfcnVubmluZykpKVxuICAgICAgfmpvYnNfd2FpdGluZ190b19zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvbiBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgLT5cbiAgICAgICAgICAgaWYgdC5pc19kZWFkIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBqb2JzX3dhaXRpbmdfdG9fc3RhcnQpKSlcbiAgICAgIH5udW1fam9ic19ydW5uaW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fam9ic19ydW5uaW5nIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fam9ic19ydW5uaW5nIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+Y2FwYWNpdHlfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgfmlzX2RlYWQ6aWdub3JlXG4gICAgICB+Y2xlYW5zOmlnbm9yZVxuICAgICAgfm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPD0gdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgICAgICAgICAgaWYgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIGFzc2VydCB0LmlzX2RlYWQpKVxuICAgICAgfmNsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNsZWFuZWQgLT5cbiAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIGNsZWFuZWQgdGhlbiBhc3NlcnQgKHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IDApKSlcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlRocm90dGxlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IF8gdCldXG47O1xuXG5tb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAna2luZCkgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSB0XG5lbmRcblxubGV0IG51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQgdCA9IFF1ZXVlLmxlbmd0aCB0LmpvYnNfd2FpdGluZ190b19zdGFydFxuXG5sZXQgY2xlYW5fcmVzb3VyY2UgdCBhID1cbiAgRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHQuY2xlYW5zIH5mOihmdW4gZiAtPiBmIGEpKVxuICA+Pj4gZnVuICgpIC0+XG4gIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8LSB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLSAxO1xuICBpZiB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwIHRoZW4gSXZhci5maWxsIHQuY2xlYW5lZCAoKVxuOztcblxubGV0IGtpbGwgdCA9XG4gIGlmIG5vdCB0LmlzX2RlYWRcbiAgdGhlbiAoXG4gICAgdC5pc19kZWFkIDwtIHRydWU7XG4gICAgUXVldWUuaXRlciB0LmpvYnNfd2FpdGluZ190b19zdGFydCB+ZjpJbnRlcm5hbF9qb2IuYWJvcnQ7XG4gICAgUXVldWUuY2xlYXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ7XG4gICAgU3RhY2tfb3JfY291bnRlci5pdGVyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOihmdW4gYSAtPiBjbGVhbl9yZXNvdXJjZSB0IGEpO1xuICAgIFN0YWNrX29yX2NvdW50ZXIuY2xlYXIgdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UpXG47O1xuXG5sZXQgYXRfa2lsbCB0IGYgPVxuICAoKiBXZSBwcmVzZXJ2ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBleGNlcHRpb25zIHJhaXNlZCBieSBbZl0gZ28gdG8gdGhlIG1vbml0b3JcbiAgICAgaW4gZWZmZWN0IHdoZW4gW2F0X2tpbGxdIHdhcyBjYWxsZWQuICopXG4gIGxldCBmID0gdW5zdGFnZSAoTW9uaXRvci5FeHBvcnRlZF9mb3Jfc2NoZWR1bGVyLnByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JyBmKSBpblxuICB0LmNsZWFucyA8LSBmIDo6IHQuY2xlYW5zXG47O1xuXG5sZXQgY2xlYW5lZCB0ID0gSXZhci5yZWFkIHQuY2xlYW5lZFxuXG5sZXQgcmVjIHN0YXJ0X2pvYiB0ID1cbiAgYXNzZXJ0IChub3QgdC5pc19kZWFkKTtcbiAgYXNzZXJ0ICh0Lm51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICBhc3NlcnQgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpKTtcbiAgbGV0IGpvYiA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGluXG4gIHQubnVtX2pvYnNfcnVubmluZyA8LSB0Lm51bV9qb2JzX3J1bm5pbmcgKyAxO1xuICBsZXQgam9iX3Jlc291cmNlID0gU3RhY2tfb3JfY291bnRlci5wb3BfZXhuIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGluXG4gIEludGVybmFsX2pvYi5ydW4gam9iIGpvYl9yZXNvdXJjZVxuICA+Pj4gZnVuIHJlcyAtPlxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nIC0gMTtcbiAgKG1hdGNoIHJlcyB3aXRoXG4gICB8IGBPayAtPiAoKVxuICAgfCBgUmFpc2VkIC0+IGlmIG5vdCB0LmNvbnRpbnVlX29uX2Vycm9yIHRoZW4ga2lsbCB0KTtcbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gY2xlYW5fcmVzb3VyY2UgdCBqb2JfcmVzb3VyY2VcbiAgZWxzZSAoXG4gICAgU3RhY2tfb3JfY291bnRlci5wdXNoIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGpvYl9yZXNvdXJjZTtcbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KVxuICAgIHRoZW4gc3RhcnRfam9iIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGl2YXIgLT5cbiAgICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICAgIHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIE5vbmUpKVxuOztcblxubGV0IGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGxldCBtYXhfY29uY3VycmVudF9qb2JzID0gU3RhY2tfb3JfY291bnRlci5sZW5ndGggam9iX3Jlc291cmNlcyBpblxuICB7IGNvbnRpbnVlX29uX2Vycm9yXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA9IGpvYl9yZXNvdXJjZXNcbiAgOyBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgPSBRdWV1ZS5jcmVhdGUgKClcbiAgOyBudW1fam9ic19ydW5uaW5nID0gMFxuICA7IGNhcGFjaXR5X2F2YWlsYWJsZSA9IE5vbmVcbiAgOyBpc19kZWFkID0gZmFsc2VcbiAgOyBjbGVhbnMgPSBbXVxuICA7IG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSBtYXhfY29uY3VycmVudF9qb2JzXG4gIDsgY2xlYW5lZCA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVfd2l0aCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3IgKFN0YWNrX29yX2NvdW50ZXIub2ZfbGlzdCBqb2JfcmVzb3VyY2VzKVxuOztcblxubW9kdWxlIFNlcXVlbmNlciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBhID0gY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIFsgYSBdXG5lbmRcblxubGV0IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3Igfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBpZiBtYXhfY29uY3VycmVudF9qb2JzIDw9IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRocm90dGxlLmNyZWF0ZSByZXF1aXJlcyBwb3NpdGl2ZSBtYXhfY29uY3VycmVudF9qb2JzLCBidXQgZ290XCJcbiAgICAgICAgICAobWF4X2NvbmN1cnJlbnRfam9icyA6IGludCldO1xuICBjcmVhdGVfaW50ZXJuYWxcbiAgICB+Y29udGludWVfb25fZXJyb3JcbiAgICAoU3RhY2tfb3JfY291bnRlci5jcmVhdGVfY291bnRlciB+bGVuZ3RoOm1heF9jb25jdXJyZW50X2pvYnMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBpbnRlcm5hbF9qb2IgOiAnYSBJbnRlcm5hbF9qb2IudFxuICAgIDsgcmVzdWx0IDogWyBgT2sgb2YgJ2IgfCBgQWJvcnRlZCB8IGBSYWlzZWQgb2YgZXhuIF0gRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgcmVzdWx0IHQgPSB0LnJlc3VsdFxuICBsZXQgYWJvcnQgdCA9IEludGVybmFsX2pvYi5hYm9ydCB0LmludGVybmFsX2pvYlxuXG4gIGxldCBjcmVhdGUgZiA9XG4gICAgbGV0IGludGVybmFsX2pvYiwgcmVzdWx0ID0gSW50ZXJuYWxfam9iLmNyZWF0ZSBmIGluXG4gICAgeyBpbnRlcm5hbF9qb2I7IHJlc3VsdCB9XG4gIDs7XG5lbmRcblxubGV0IGVucXVldWUnIHQgZiA9XG4gIGxldCBqb2IgPSBKb2IuY3JlYXRlIGYgaW5cbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gSm9iLmFib3J0IGpvYlxuICBlbHNlIChcbiAgICBRdWV1ZS5lbnF1ZXVlIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGpvYi5pbnRlcm5hbF9qb2I7XG4gICAgaWYgdC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzIHRoZW4gc3RhcnRfam9iIHQpO1xuICBKb2IucmVzdWx0IGpvYlxuOztcblxubGV0IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCByZXN1bHQgPVxuICBtYXRjaCByZXN1bHQgd2l0aFxuICB8IGBPayBhIC0+IGFcbiAgfCBgQWJvcnRlZCAtPiByYWlzZV9zIFslbWVzc2FnZSBcInRocm90dGxlIGFib3J0ZWQgam9iXCJdXG4gIHwgYFJhaXNlZCBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGYgPSBlbnF1ZXVlJyB0IGYgPj58IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdFxuXG5sZXQgZW5xdWV1ZV9leGNsdXNpdmUgdCBmID1cbiAgbGV0IG4gPSB0Lm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgaWYgSW50LiggPj0gKSBuIDFfMDAwXzAwMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiW2VucXVldWVfZXhjbHVzaXZlXSB3YXMgY2FsbGVkIHdpdGggYSB2ZXJ5IGxhcmdlIHZhbHVlIG9mIFxcXG4gICAgICAgICBbbWF4X2NvbmN1cnJlbnRfam9ic10uIFRoaXMgZG9lc24ndCB3b3JrLlwiXTtcbiAgbGV0IGRvbmVfID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgYXNzZXJ0IChuID4gMCk7XG4gIGxldCBmX3BsYWNlaG9sZGVyIF9zbG90ID0gSXZhci5yZWFkIGRvbmVfIGluXG4gIGZvciBfID0gMSB0byBuIC0gMSBkb1xuICAgIGRvbid0X3dhaXRfZm9yIChlbnF1ZXVlIHQgZl9wbGFjZWhvbGRlcilcbiAgZG9uZTtcbiAgbGV0JW1hcCByZXN1bHQgPSBlbnF1ZXVlJyB0IChmdW4gX3Nsb3QgLT4gZiAoKSkgaW5cbiAgSXZhci5maWxsIGRvbmVfICgpO1xuICBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0XG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93IH5ob3cgfmYgPVxuICBzdGFnZVxuICAgIChtYXRjaCBob3cgd2l0aFxuICAgICB8IGBQYXJhbGxlbCAtPiBmXG4gICAgIHwgKGBTZXF1ZW50aWFsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgIHwgYFNlcXVlbnRpYWwgLT4gMVxuICAgICAgICAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+IG1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICBpblxuICAgICAgIGxldCB0ID0gY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSB+bWF4X2NvbmN1cnJlbnRfam9icyBpblxuICAgICAgIGZ1biBhIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYSkpXG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYTEgYTIgLT4gZW5xdWV1ZSB0IChmdW4gKCkgLT4gZiBhMSBhMikpXG47O1xuXG5sZXQgcHJpb3Jfam9ic19kb25lIHQgPVxuICAoKiBXZSBxdWV1ZSBbdC5tYXhfY29uY3VycmVudF9qb2JzXSBkdW1teSBqb2JzIGFuZCB3aGVuIHRoZXkgYXJlIGFsbCBzdGFydGVkIHdlIGtub3dcbiAgICAgdGhhdCBhbGwgcHJpb3Igam9icyBmaW5pc2hlZC4gIFdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBkdW1teSBqb2JzIHdhaXQgZm9yIHRoZSBsYXN0IG9uZVxuICAgICB0byBnZXQgc3RhcnRlZCBiZWZvcmUgZmluaXNoaW5nLiAqKVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBhbGxfZHVtbXlfam9ic19ydW5uaW5nIC0+XG4gICAgbGV0IGR1bW15X2pvYnNfcnVubmluZyA9IHJlZiAwIGluXG4gICAgZm9yIF8gPSAxIHRvIHQubWF4X2NvbmN1cnJlbnRfam9icyBkb1xuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKGVucXVldWUgdCAoZnVuIF8gLT5cbiAgICAgICAgICAgaW5jciBkdW1teV9qb2JzX3J1bm5pbmc7XG4gICAgICAgICAgIGlmICFkdW1teV9qb2JzX3J1bm5pbmcgPSB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBJdmFyLmZpbGwgYWxsX2R1bW15X2pvYnNfcnVubmluZyAoKTtcbiAgICAgICAgICAgSXZhci5yZWFkIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcpKVxuICAgIGRvbmUpXG47O1xuXG5sZXQgY2FwYWNpdHlfYXZhaWxhYmxlIHQgPVxuICBpZiBudW1fam9ic19ydW5uaW5nIHQgPCBtYXhfY29uY3VycmVudF9qb2JzIHRcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggdC5jYXBhY2l0eV9hdmFpbGFibGUgd2l0aFxuICAgIHwgU29tZSBpdmFyIC0+IEl2YXIucmVhZCBpdmFyXG4gICAgfCBOb25lIC0+IERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT4gdC5jYXBhY2l0eV9hdmFpbGFibGUgPC0gU29tZSBpdmFyKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxuXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyMS5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyMS53YWxsX2Nsb2NrXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU2NoZWR1bGVyXG5cbmxldCBlbnF1ZXVlX2pvYiBleGVjdXRpb25fY29udGV4dCBmIGEgPSBlbnF1ZXVlICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfam9iIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSlcbmxldCBjeWNsZV9jb3VudCAoKSA9IGN5Y2xlX2NvdW50ICh0ICgpKVxubGV0IGN5Y2xlX3N0YXJ0X25zICgpID0gY3ljbGVfc3RhcnQgKHQgKCkpXG5sZXQgY3ljbGVfc3RhcnQgKCkgPSBUaW1lX25zLnRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCAoY3ljbGVfc3RhcnRfbnMgKCkpXG5sZXQgY3ljbGVfdGltZXNfbnMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOkZuLmlkXG5sZXQgY3ljbGVfdGltZXMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOlRpbWVfbnMuU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RcbmxldCB0b3RhbF9jeWNsZV90aW1lICgpID0gdG90YWxfY3ljbGVfdGltZSAodCAoKSlcbmxldCBsYXN0X2N5Y2xlX3RpbWUgKCkgPSBsYXN0X2N5Y2xlX3RpbWUgKHQgKCkpXG5sZXQgbG9uZ19jeWNsZXMgfmF0X2xlYXN0ID0gbG9uZ19jeWNsZXMgKHQgKCkpIH5hdF9sZWFzdFxubGV0IGV2ZW50X3ByZWNpc2lvbl9ucyAoKSA9IGV2ZW50X3ByZWNpc2lvbiAodCAoKSlcbmxldCBldmVudF9wcmVjaXNpb24gKCkgPSBUaW1lX25zLlNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChldmVudF9wcmVjaXNpb25fbnMgKCkpXG5cbmxldCBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgaSA9XG4gIHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAodCAoKSkgaVxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICgpID0gbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKHQgKCkpXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIGJvb2wgPSBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgKHQgKCkpIGJvb2xcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCAoKSA9IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kICh0ICgpKVxubGV0IHlpZWxkICgpID0geWllbGQgKHQgKCkpXG5cbmxldCB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/bWF5X3JldHVybl9pbW1lZGlhdGVseSAoKSA9XG4gIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID9tYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICh0ICgpKVxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgbGV0IHlpZWxkX2V2ZXJ5ID0gU3RhZ2VkLnVuc3RhZ2UgKHlpZWxkX2V2ZXJ5IH5uKSBpblxuICBsZXQgdCA9IHQgKCkgaW5cbiAgc3RhZ2UgKGZ1biAoKSAtPiB5aWVsZF9ldmVyeSB0KVxuOztcblxubGV0IG51bV9qb2JzX3J1biAoKSA9IG51bV9qb2JzX3J1biAodCAoKSlcbmxldCBudW1fcGVuZGluZ19qb2JzICgpID0gbnVtX3BlbmRpbmdfam9icyAodCAoKSlcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiA9IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW5cbiAgbGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgKCkgPSBsYXN0X2N5Y2xlX251bV9qb2JzICh0ICgpKVxuICBsZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IGYgPSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgKHQgKCkpIH5mXG4gIGxldCBydW5fZXZlcnlfY3ljbGVfZW5kIGYgPSBydW5fZXZlcnlfY3ljbGVfZW5kICh0ICgpKSB+ZlxuICBsZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgfmYgPSBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayAodCAoKSkgfmZcbiAgbGV0IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayB+ZiA9IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayAodCAoKSkgfmZcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuIGhhbmRsZSA9XG4gICAgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuICh0ICgpKSBoYW5kbGVcbiAgOztcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biBoYW5kbGUgPVxuICAgIHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gKHQgKCkpIGhhbmRsZVxuICA7O1xuXG4gIGxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IH5mXG4gIDs7XG5cbiAgbGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIGV4ZWN1dGlvbl9jb250ZXh0IH5mIHggPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxICh0ICgpKSBleGVjdXRpb25fY29udGV4dCB+ZiB4XG4gIDs7XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBTY2hlZHVsZXJcbiIsIigqKiBTY2hlZHVsZSBqb2JzIHRvIHJ1biBhdCBhIHRpbWUgaW4gdGhlIGZ1dHVyZS5cblxuICAgIFRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIHVzZXMgYSBoZWFwIG9mIGV2ZW50cywgb25lIGZvciBlYWNoIGpvYiB0aGF0IG5lZWRzIHRvXG4gICAgcnVuIGluIHRoZSBmdXR1cmUuICBUaGUgQXN5bmMgc2NoZWR1bGVyIGlzIHJlc3BvbnNpYmxlIGZvciB3YWtpbmcgdXAgYXQgdGhlIHJpZ2h0IHRpbWVcbiAgICB0byBydW4gdGhlIGpvYnMuICopXG5cbm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgVGltZW91dFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDbG9jayA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICAoKiogW3J1bl9hdCB0aW1lIGYgYV0gcnVucyBbZiBhXSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIFt0aW1lXS4gIElmIFt0aW1lXSBpcyBpbiB0aGVcbiAgICAgIHBhc3QsIHRoZW4gW3J1bl9hdF0gd2lsbCBpbW1lZGlhdGVseSBzY2hlZHVsZSBhIGpvYiBbdF0gdGhhdCB3aWxsIHJ1biBbZiBhXS4gIEluIG5vXG4gICAgICBzaXR1YXRpb24gd2lsbCBbcnVuX2F0XSBhY3R1YWxseSBjYWxsIFtmXSBpdHNlbGYuICBUaGUgY2FsbCB0byBbZl0gd2lsbCBhbHdheXMgYmUgaW5cbiAgICAgIGFub3RoZXIgam9iLiAqKVxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCoqIFtydW5fYWZ0ZXJdIGlzIGxpa2UgW3J1bl9hdF0sIGV4Y2VwdCB0aGF0IG9uZSBzcGVjaWZpZXMgYSB0aW1lIHNwYW4gcmF0aGVyIHRoYW4gYW5cbiAgICAgIGFic29sdXRlIHRpbWUuICopXG4gIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqKiBbYXQgdGltZV0gcmV0dXJucyBhIGRlZmVycmVkIFtkXSB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYXMgc29vbiBhcyBwb3NzaWJsZVxuICAgICAgYWZ0ZXIgW3RpbWVdLiAqKVxuICB2YWwgYXQgOiBUaW1lLnQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFthZnRlcl0gaXMgbGlrZSBbYXRdLCBleGNlcHQgdGhhdCBvbmUgc3BlY2lmaWVzIGEgdGltZSBzcGFuIHJhdGhlciB0aGFuIGFuIGFic29sdXRlXG4gICAgICB0aW1lLiAqKVxuICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3dpdGhfdGltZW91dCBzcGFuIGRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYWZ0ZXIgZWl0aGVyXG4gICAgICBbc3Bhbl0gZWxhcHNlcyBvciBbZF0gaXMgZGV0ZXJtaW5lZCwgcmV0dXJuaW5nIGVpdGhlciBbYFRpbWVvdXRdIG9yIFtgUmVzdWx0XVxuICAgICAgZGVwZW5kaW5nIG9uIHdoaWNoIG9uZSBzdWNjZWVkZWQgZmlyc3QuICBBdCB0aGUgdGltZSB0aGUgcmV0dXJuZWQgZGVmZXJyZWQgYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZCwgYm90aCB0aGluZ3MgbWF5IGhhdmUgaGFwcGVuZWQsIGluIHdoaWNoIGNhc2UgW2BSZXN1bHRdIGlzIGdpdmVuXG4gICAgICBwcmVmZXJlbmNlLiAqKVxuICB2YWwgd2l0aF90aW1lb3V0IDogVGltZS5TcGFuLnQgLT4gJ2EgRGVmZXJyZWQudCAtPiAnYSBPcl90aW1lb3V0LnQgRGVmZXJyZWQudFxuXG4gICgqKiBFdmVudHMgcHJvdmlkZSB2YXJpYW50cyBvZiBbcnVuX2F0XSBhbmQgW3J1bl9hZnRlcl0gd2l0aCB0aGUgYWJpbGl0eSB0byBhYm9ydCBvclxuICAgICAgcmVzY2hlZHVsZSBhbiBldmVudCB0aGF0IGhhc24ndCB5ZXQgaGFwcGVuZWQuICBPbmNlIGFuIGV2ZW50IGhhcHBlbnMgb3IgaXMgYWJvcnRlZCxcbiAgICAgIEFzeW5jIGRvZXNuJ3QgdXNlIGFueSBzcGFjZSBmb3IgdHJhY2tpbmcgaXQuICopXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgICgqKiBJZiBbc3RhdHVzXSByZXR1cm5zIFtTY2hlZHVsZWRfYXQgdGltZV0sIGl0IGlzIHBvc3NpYmxlIHRoYXQgW3RpbWUgPCBUaW1lLm5vdyAoKV1cbiAgICAgICAgaWYgQXN5bmMncyBzY2hlZHVsZXIgaGFzbid0IHlldCBnb3R0ZW4gdGhlIGNoYW5jZSB0byB1cGRhdGUgaXRzIGNsb2NrLCBlLmcuLCBkdWVcbiAgICAgICAgdG8gdXNlciBqb2JzIHJ1bm5pbmcuICopXG4gICAgdmFsIHN0YXR1cyA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgU3RhdHVzLnRcblxuICAgICgqKiBMZXQgW3QgPSBydW5fYXQgdGltZSBmIHpdLiAgQXQgW3RpbWVdLCB0aGlzIHJ1bnMgW2Ygel0gYW5kIHRyYW5zaXRpb25zIFtzdGF0dXMgdF1cbiAgICAgICAgdG8gW0hhcHBlbmVkIGhdLCB3aGVyZSBbaF0gaXMgcmVzdWx0IG9mIFtmIHpdLlxuXG4gICAgICAgIE1vcmUgcHJlY2lzZWx5LCBhdCBbdGltZV0sIHByb3ZpZGVkIFthYm9ydCB0IGFdIGhhcyBub3QgcHJldmlvdXNseSBiZWVuIGNhbGxlZCxcbiAgICAgICAgdGhpcyB3aWxsIGNhbGwgW2Ygel0sIHdpdGggdGhlIGd1YXJhbnRlZSB0aGF0IFtzdGF0dXMgdCA9IFNjaGVkdWxlZF9hdCB0aW1lXS4gIElmXG4gICAgICAgIFtmIHpdIHJldHVybnMgW2hdIGFuZCBkaWQgbm90IGNhbGwgW2Fib3J0IHQgYV0sIHRoZW4gW3N0YXR1cyB0XSBiZWNvbWVzIFtIYXBwZW5lZFxuICAgICAgICBoXS4gIElmIFtmIHpdIGNhbGxzIFthYm9ydCB0IGFdLCB0aGVuIHRoZSByZXN1bHQgb2YgW2ZdIGlzIGlnbm9yZWQsIGFuZCBbc3RhdHVzIHRdXG4gICAgICAgIGlzIFtBYm9ydGVkIGFdLlxuXG4gICAgICAgIElmIFtmIHpdIHJhaXNlcywgdGhlbiBbc3RhdHVzIHRdIGRvZXMgbm90IHRyYW5zaXRpb24gYW5kIHJlbWFpbnMgW1NjaGVkdWxlZF9hdFxuICAgICAgICB0aW1lXSwgYW5kIHRoZSBleGNlcHRpb24gaXMgc2VudCB0byB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlbiBbcnVuX2F0XSB3YXNcbiAgICAgICAgY2FsbGVkLiAqKVxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuXG4gICAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LkFib3J0X3Jlc3VsdFxuXG4gICAgKCoqIFthYm9ydCB0XSBjaGFuZ2VzIFtzdGF0dXMgdF0gdG8gW0Fib3J0ZWRdIGFuZCByZXR1cm5zIFtPa10sIHVubGVzcyBbdF1cbiAgICAgICAgcHJldmlvdXNseSBoYXBwZW5lZCBvciB3YXMgcHJldmlvdXNseSBhYm9ydGVkLiAqKVxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcblxuICAgICgqKiBbYWJvcnRfZXhuIHQgYV0gcmV0dXJucyBbdW5pdF0gaWYgW2Fib3J0IHQgYSA9IGBPa10sIGFuZCBvdGhlcndpc2UgcmFpc2VzLiAqKVxuICAgIHZhbCBhYm9ydF9leG4gOiAoJ2EsICdoKSB0IC0+ICdhIC0+IHVuaXRcblxuICAgICgqKiBbYWJvcnRfaWZfcG9zc2libGUgdCBhID0gaWdub3JlIChhYm9ydCB0IGEpXS4gKilcbiAgICB2YWwgYWJvcnRfaWZfcG9zc2libGUgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgKCoqIFtyZXNjaGVkdWxlX2F0IHRdIGFuZCBbcmVzY2hlZHVsZV9hZnRlciB0XSBjaGFuZ2UgdGhlIHRpbWUgdGhhdCBbdF0gd2lsbCBmaXJlLCBpZlxuICAgICAgICBwb3NzaWJsZSwgYW5kIGlmIG5vdCwgZ2l2ZSBhIHJlYXNvbiB3aHkuICBMaWtlIFtydW5fYXRdLCBpZiB0aGUgcmVxdWVzdGVkIHRpbWUgaXNcbiAgICAgICAgaW4gdGhlIHBhc3QsIHRoZSBldmVudCB3aWxsIGJlIHNjaGVkdWxlZCB0byBydW4gaW1tZWRpYXRlbHkuICBJZiBbcmVzY2hlZHVsZV9hdCB0XG4gICAgICAgIHRpbWUgPSBPa10sIHRoZW4gc3Vic2VxdWVudGx5IFtzY2hlZHVsZWRfYXQgdCA9IHRpbWVdLiAgKilcbiAgICB2YWwgcmVzY2hlZHVsZV9hdCA6ICgnYSwgJ2gpIHQgLT4gVGltZS50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG5cbiAgICAoKiogW2F0IHRpbWVdICAgIGlzIFtydW5fYXQgICAgdGltZSBpZ25vcmUgKCldLlxuICAgICAgICBbYWZ0ZXIgdGltZV0gaXMgW3J1bl9hZnRlciB0aW1lIGlnbm9yZSAoKV0uXG5cbiAgICAgICAgWW91IHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSB0aGUgW3J1bl8qXSBmdW5jdGlvbnMsIHdoaWNoIGFsbG93IHlvdSB0b1xuICAgICAgICBzeW5jaHJvbm91c2x5IHVwZGF0ZSBzdGF0ZSB2aWEgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHdoZW4gdGhlIGV2ZW50XG4gICAgICAgIHRyYW5zaXRpb25zIHRvIFtIYXBwZW5lZF0uICBUaGF0IGlzLCB0aGVyZSBpcyBhbiBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBydW5fYXQgdGltZSBmICgpIF19XG5cbiAgICAgICAgYW5kOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBhdCB0aW1lIGluXG4gICAgICAgICAgZmlyZWQgdFxuICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gZiAoKVxuICAgICAgICAgIHwgQWJvcnRlZCAoKSAtPiAoKSBdfVxuXG4gICAgICAgIFdpdGggW3J1bl9hdF0sIGlmIFtzdGF0dXMgdCA9IEhhcHBlbmVkXSwgb25lIGtub3dzIHRoYXQgW2ZdIGhhcyBydW4uICBXaXRoIFthdF1cbiAgICAgICAgYW5kIFtmaXJlZF0sIG9uZSBkb2VzIG5vdCBrbm93IHdoZXRoZXIgW2ZdIGhhcyB5ZXQgcnVuOyBpdCBtYXkgc3RpbGwgYmUgc2NoZWR1bGVkXG4gICAgICAgIHRvIHJ1bi4gIFRodXMsIHdpdGggW2F0XSBhbmQgW2ZpcmVkXSwgaXQgaXMgZWFzeSB0byBpbnRyb2R1Y2UgYSByYWNlLiAgRm9yXG4gICAgICAgIGV4YW1wbGUsIGNvbnNpZGVyIHRoZXNlIHR3byBjb2RlIHNuaXBwZXRzOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5hZnRlciAoc2VjIDIuKSBpblxuICAgICAgICAgIHVwb24gKEV2ZW50LmZpcmVkIHQpIChmdW5jdGlvblxuICAgICAgICAgICAgfCBBYm9ydGVkICgpIC0+ICgpXG4gICAgICAgICAgICB8IEhhcHBlbmVkICgpIC0+IHByaW50ZiBcIlRpbWVyIGZpcmVkXCIpO1xuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5ydW5fYWZ0ZXIgKHNlYyAyLikgcHJpbnRmIFwiVGltZXIgZmlyZWRcIiBpblxuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIEluIGJvdGggc25pcHBldHMsIGlmIFtFdmVudC5hYm9ydF0gcmV0dXJucyBbT2tdLCBcIlRpbWVyIGZpcmVkXCIgaXMgbmV2ZXIgcHJpbnRlZC5cbiAgICAgICAgSG93ZXZlciwgdGhlIGZpcnN0IHNuaXBwZXQgbWlnaHQgcHJpbnQgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiIGFuZCB0aGVuXG4gICAgICAgIFwiVGltZXIgZmlyZWRcIi4gIFRoaXMgY29uZnVzZWQgb3JkZXJpbmcgY2Fubm90IGhhcHBlbiB3aXRoIFtFdmVudC5ydW5fYWZ0ZXJdLiAqKVxuICAgIHZhbCBhdCA6IFRpbWUudCAtPiAoXywgdW5pdCkgdFxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgZW5kXG5cbiAgKCoqIFthdF92YXJ5aW5nX2ludGVydmFscyBmID9zdG9wXSByZXR1cm5zIGEgc3RyZWFtIHdob3NlIG5leHQgZWxlbWVudCBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgW2YgKCldIGFuZCB3YWl0aW5nIGZvciB0aGF0IGFtb3VudCBvZiB0aW1lLCBhbmQgdGhlbiBsb29waW5nXG4gICAgICB0byBkZXRlcm1pbmUgc3Vic2VxdWVudCBlbGVtZW50cy4gIFRoZSBzdHJlYW0gd2lsbCBlbmQgYWZ0ZXIgW3N0b3BdIGJlY29tZXNcbiAgICAgIGRldGVybWluZWQuICopXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcblxuICAoKiogW2F0X2ludGVydmFscyBpbnRlcnZhbCA/c3RhcnQgP3N0b3BdIHJldHVybnMgYSBzdHJlYW0gd2hvc2UgZWxlbWVudHMgd2lsbCBiZWNvbWVcbiAgICAgIGRldGVybWluZWQgYXQgbm9ubmVnYXRpdmUgaW50ZWdlciBtdWx0aXBsZXMgb2YgW2ludGVydmFsXSBhZnRlciB0aGUgW3N0YXJ0XSB0aW1lLFxuICAgICAgdW50aWwgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZDpcblxuICAgICAge3ZcbiAgICAgICAgc3RhcnQgKyAwICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAxICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAyICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAzICogaW50ZXJ2YWxcbiAgICAgICAgLi4uXG4gICAgICB2fVxuXG4gICAgICBOb3RlIHRoYXQgb25seSBlbGVtZW50cyB0aGF0IGFyZSBzdHJpY3RseSBpbiB0aGUgZnV0dXJlIGV2ZXIgYmVjb21lIGRldGVybWluZWQuXG4gICAgICBJbiBwYXJ0aWN1bGFyLCBpZiBbc3RhcnRdIGlzIG5vdCBpbiB0aGUgZnV0dXJlLCBvciBbc3RhcnRdIGlzIG5vdCBwcm92aWRlZCxcbiAgICAgIHRoZW4gdGhlcmUgd2lsbCBiZSBubyBlbGVtZW50IGJlZm9yZSB0aGUgW2ludGVydmFsXSBoYXMgcGFzc2VkLlxuXG4gICAgICBJZiB0aGUgaW50ZXJ2YWwgaXMgdG9vIHNtYWxsIG9yIHRoZSBDUFUgaXMgdG9vIGxvYWRlZCwgW2F0X2ludGVydmFsc10gd2lsbCBza2lwXG4gICAgICB1bnRpbCB0aGUgbmV4dCB1cGNvbWluZyBtdWx0aXBsZSBvZiBbaW50ZXJ2YWxdIGFmdGVyIFtzdGFydF0uICopXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG5cbiAgKCoqIFtldmVyeScgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gcnVucyBbZiAoKV0gZXZlcnkgW3NwYW5dIGFtb3VudCBvZiB0aW1lIHN0YXJ0aW5nIHdoZW5cbiAgICAgIFtzdGFydF0gYmVjb21lcyBkZXRlcm1pbmVkIGFuZCBzdG9wcGluZyB3aGVuIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQuICBbZXZlcnknXVxuICAgICAgd2FpdHMgdW50aWwgdGhlIG91dGNvbWUgb2YgW2YgKCldIGJlY29tZXMgZGV0ZXJtaW5lZCBiZWZvcmUgd2FpdGluZyBmb3IgdGhlIG5leHRcbiAgICAgIFtzcGFuXS5cblxuICAgICAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0IGlmIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQsIGV2ZW4gZHVyaW5nIGV2YWx1YXRpb24gb2YgW2ZdLFxuICAgICAgdGhlbiBbZl0gd2lsbCBub3QgYmUgY2FsbGVkIGFnYWluIGJ5IGEgc3Vic2VxdWVudCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuXG5cbiAgICAgIEl0IGlzIGFuIGVycm9yIGZvciBbc3Bhbl0gdG8gYmUgbm9ucG9zaXRpdmUuXG5cbiAgICAgIFtjb250aW51ZV9vbl9lcnJvcl0gY29udHJvbHMgd2hhdCBzaG91bGQgaGFwcGVuIGlmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlXSwgaXRlcmF0aW9uIG9ubHkgY29udGludWVzIGlmIFtmXSBzdWNjZXNzZnVsbHlcbiAgICAgIHJldHVybnMgYSBkZWZlcnJlZCBhbmQgdGhhdCBkZWZlcnJlZCBpcyBkZXRlcm1pbmVkLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLCBpdGVyYXRpb24gYWxzbyBjb250aW51ZXMgaWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24uXG4gICAgICBJZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbiBhc3luY2hyb25vdXNseSwgdGhpcyBtYXkgY2F1c2UgdXMgdG8gcHJvY2VlZCB3aXRoIHRoZVxuICAgICAgbmV4dCBpdGVyYXRpb24gd2hpbGUgdGhlIHByZXZpb3VzIGNhbGwgdG8gW2ZdIGlzIHN0aWxsIHJ1bm5pbmcuXG5cbiAgICAgIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBhcmUgYWx3YXlzIHNlbnQgdG8gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW4gW2V2ZXJ5J10gd2FzXG4gICAgICBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLlxuXG4gICAgICBJZiBbZmluaXNoZWRdIGlzIHN1cHBsaWVkLCBbZXZlcnknXSB3aWxsIGZpbGwgaXQgb25jZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBiZWNvbWVcbiAgICAgIGRldGVybWluZWQ6IFtzdGFydF0sIFtzdG9wXSwgYW5kIHRoZSBvdXRjb21lIG9mIHRoZSBmaW5hbCBjYWxsIHRvIFtmXS4gKilcbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2V2ZXJ5ID9zdGFydCA/c3RvcCBzcGFuIGZdIGlzXG4gICAgICBbZXZlcnknID9zdGFydCA/c3RvcCBzcGFuIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKV0uICopXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3Agc3BhbiBmXSBydW5zIFtmKCldIGF0IGluY3JlbWVudHMgb2YgW3N0YXJ0ICsgaSAqXG4gICAgICBzcGFuXSBmb3Igbm9ubmVnYXRpdmUgaW50ZWdlcnMgW2ldLCB1bnRpbCBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLlxuICAgICAgSWYgdGhlIHJlc3VsdCBvZiBbZl0gaXMgbm90IGRldGVybWluZWQgZmFzdCBlbm91Z2ggdGhlbiB0aGUgbmV4dCBpbnRlcnZhbChzKVxuICAgICAgYXJlIHNraXBwZWQgc28gdGhhdCB0aGVyZSBhcmUgbmV2ZXIgbXVsdGlwbGUgY29uY3VycmVudCBpbnZvY2F0aW9ucyBvZiBbZl0gaW5cbiAgICAgIGZsaWdodC5cblxuICAgICAgRXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGFyZSBhbHdheXMgc2VudCB0byBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICBbcnVuX2F0X2ludGVydmFscyddIHdhcyBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLiAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW3J1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGZdIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhblxuICAgICAgICAgIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKSBdfSAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2R1cmF0aW9uX29mIGZdIGludm9rZXMgW2YgKCldIGFuZCBtZWFzdXJlcyBob3cgbG9uZyBpdCB0YWtlcyBmcm9tIHRoZSBpbnZvY2F0aW9uXG4gICAgICB0byBhZnRlciB0aGUgZGVmZXJyZWQgaXMgZGV0ZXJtaW5lZC5cblxuICAgICAgTm90ZSB0aGF0IHRoZSBtZWFzdXJlbWVudCBpcyBub3QgZXhhY3Q7IGJlY2F1c2UgaXQgaW52b2x2ZXMgYW4gYWRkaXRpb25hbCBtYXAgb24gdGhlXG4gICAgICBkZWZlcnJlZCwgdGhlIHRpbWluZyBhbHNvIGluY2x1ZGVzIHRoZSBkdXJhdGlvbiBvZiBqb2JzIGluIHRoZSBqb2IgcXVldWUgd2hlbiBbZiAoKV1cbiAgICAgIGlzIGRldGVybWluZWQuICopXG4gIHZhbCBkdXJhdGlvbl9vZiA6ICh1bml0IC0+ICdhIERlZmVycmVkLnQpIC0+ICgnYSAqIFRpbWUuU3Bhbi50KSBEZWZlcnJlZC50XG5lbmRcblxuKCoqIFtDbG9ja19kZXByZWNhdGVkXSBpcyB1c2VkIGluIFtSZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlXSB0byBjcmVhdGUgYSBjbG9ja1xuICAgIG1vZHVsZSBpbiB3aGljaCBhbGwgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkLiAqKVxubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdCA6IFRpbWUudCAtPiB1bml0IERlZmVycmVkLnQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IHVuaXQgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHdpdGhfdGltZW91dCA6IFRpbWUuU3Bhbi50IC0+ICdhIERlZmVycmVkLnQgLT4gJ2EgT3JfdGltZW91dC50IERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBJbnZhcmlhbnQudCAtPiAnYiBJbnZhcmlhbnQudCAtPiAoJ2EsICdiKSB0IEludmFyaWFudC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHNjaGVkdWxlZF9hdCA6IChfLCBfKSB0IC0+IFRpbWUudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBzdGF0dXMgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIFN0YXR1cy50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5BYm9ydF9yZXN1bHRcblxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWJvcnRfZXhuIDogKCdhLCAnaCkgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2lmX3Bvc3NpYmxlIDogKCdhLCBfKSB0IC0+ICdhIC0+IHVuaXRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgRmlyZWQgPSBUaW1lX3NvdXJjZS5FdmVudC5GaXJlZFxuXG4gICAgdmFsIGZpcmVkIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBGaXJlZC50IERlZmVycmVkLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYXQgOiAoJ2EsICdoKSB0IC0+IFRpbWUudCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYWZ0ZXIgOiAoJ2EsICdoKSB0IC0+IFRpbWUuU3Bhbi50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYXQgOiBUaW1lLnQgLT4gKF8sIHVuaXQpIHQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG4gIGVuZFxuXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZXZlcnknXG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gP2ZpbmlzaGVkOnVuaXQgSXZhci50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5XG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzJ1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZHVyYXRpb25fb2YgOiAodW5pdCAtPiAnYSBEZWZlcnJlZC50KSAtPiAoJ2EgKiBUaW1lLlNwYW4udCkgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5lbmRcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgKFxuc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTNcIl1cblxuICBtb2R1bGUgXyAoQyA6IENsb2NrKSA6IENsb2NrX2RlcHJlY2F0ZWQgPSBDXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9ja19kZXByZWNhdGVkKSA6IENsb2NrID0gQ1xuZW5kIDpcbnNpZyBlbmQpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQ2xvY2sgPSBDbG9ja19pbnRmLkNsb2NrXG5tb2R1bGUgdHlwZSBDbG9ja19kZXByZWNhdGVkID0gQ2xvY2tfaW50Zi5DbG9ja19kZXByZWNhdGVkXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gQ2xvY2tfaW50Zi5Pcl90aW1lb3V0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdGltZV9zb3VyY2UgKCkgPSAoU2NoZWR1bGVyLnQgKCkpLnRpbWVfc291cmNlIHw+IFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzXG5sZXQgYWZ0ZXIgc3BhbiA9IFRpbWVfc291cmNlLmFmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhblxubGV0IGF0IHRpbWUgPSBUaW1lX3NvdXJjZS5hdCAodGltZV9zb3VyY2UgKCkpIHRpbWVcblxubGV0IGF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wIGNvbXB1dGVfc3BhbiA9XG4gIFRpbWVfc291cmNlLmF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgY29tcHV0ZV9zcGFuXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCBpbnRlcnZhbCA9XG4gIFRpbWVfc291cmNlLmF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbFxuOztcblxubGV0IGV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgKHRpbWVfc291cmNlICgpKSBzcGFuIGZcbjs7XG5cbmxldCBldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW4gZiA9XG4gIFRpbWVfc291cmNlLmV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBzcGFuIGZcbjs7XG5cbmxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxubGV0IHJ1bl9hdCB0aW1lIGYgYSA9IFRpbWVfc291cmNlLnJ1bl9hdCAodGltZV9zb3VyY2UgKCkpIHRpbWUgZiBhXG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgaW50ZXJ2YWwgZiA9XG4gIFRpbWVfc291cmNlLnJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciAodGltZV9zb3VyY2UgKCkpIGludGVydmFsIGZcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzJ1xuICAgID9zdGFydFxuICAgID9zdG9wXG4gICAgP2NvbnRpbnVlX29uX2Vycm9yXG4gICAgKHRpbWVfc291cmNlICgpKVxuICAgIGludGVydmFsXG4gICAgZlxuOztcblxubGV0IHdpdGhfdGltZW91dCBzcGFuIGQgPSBUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgKHRpbWVfc291cmNlICgpKSBzcGFuIGRcbmxldCBkdXJhdGlvbl9vZiBmID0gVGltZV9zb3VyY2UuZHVyYXRpb25fb2YgKHRpbWVfc291cmNlICgpKSBmXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfc291cmNlLkV2ZW50XG5cbiAgbGV0IGFmdGVyIHNwYW4gPSBhZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbiAgbGV0IHJ1bl9hZnRlciBzcGFuIGYgYSA9IHJ1bl9hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZiBhXG4gIGxldCBhdCB0aW1lID0gYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG4gIGxldCBydW5fYXQgdGltZSBmIHogPSBydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgelxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSBiID1cbiAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgICAgdGhlbiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIGVsc2UgZiBpIGIgdC4oaSkgPj4+IGZ1biBiIC0+IGxvb3AgKGkgKyAxKSBiXG4gICAgaW5cbiAgICBsb29wIDAgaW5pdClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbmxldCBzZXFtYXBpIHQgfmYgPVxuICBsZXQlbWFwIGJzID0gZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPiBmIGkgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgaW5cbiAgQXJyYXkub2ZfbGlzdCAoQ29yZS5MaXN0LnJldiBicylcbjs7XG5cbmxldCBhbGwgZHMgPSBzZXFtYXBpIGRzIH5mOihmdW4gXyB4IC0+IHgpXG5sZXQgYWxsX3VuaXQgZHMgPSBEZWZlcnJlZC5pZ25vcmVfbSAoZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZCkpXG5cbmxldCBpdGVyaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGxfdW5pdCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsIChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuOztcblxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCBib29scyA9IG1hcGkgdCB+aG93IH5mIGluXG4gIEFycmF5Lm9mX2xpc3RfcmV2XG4gICAgKEFycmF5LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBBcnJheS5maWx0ZXJfb3B0XG5cbmxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIHQgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBBcnJheS5jb25jYXQgKEFycmF5LnRvX2xpc3QgdClcbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgIHRoZW4gcmV0dXJuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoJWJpbmQgZiBpIHQuKGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgYXV4IDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKEFycmF5LmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICBpblxuICAgIGxvb3AgdCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgYiA6OiBicylcbiAgPj58IExpc3QucmV2XG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgUGFyYWxsZWwgYXMgaG93IC0+XG4gICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBqb2JfY291bnQgLT5cbiAgICBsZXQgcmVjIGdlbl9jb21wdXRhdGlvbiBpZHggPSBmdW5jdGlvblxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgIFRocm90dGxlZC5vZl90aHVuayAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyb3R0bGVkLmJvdGhfdW5pdFxuICAgICAgICAgICAgKFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIGlkeCB4KSlcbiAgICAgICAgICAgIChnZW5fY29tcHV0YXRpb24gKGlkeCArIDEpIHhzKSlcbiAgICAgIHwgW10gLT4gVGhyb3R0bGVkLnJldHVybiAoKVxuICAgIGluXG4gICAgVGhyb3R0bGVkLnJ1biAoZ2VuX2NvbXB1dGF0aW9uIDAgdCkgfm1heF9jb25jdXJyZW50X2pvYnM6am9iX2NvdW50XG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFBhcmFsbGVsIGFzIGhvdyAtPlxuICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIGpvYl9jb3VudCAtPlxuICAgIGxldCByZWMgZ2VuX2NvbXB1dGF0aW9uIGlkeCA9IGZ1bmN0aW9uXG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgVGhyb3R0bGVkLm9mX3RodW5rIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJvdHRsZWQubWFwMlxuICAgICAgICAgICAgKFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIGlkeCB4KSlcbiAgICAgICAgICAgIChnZW5fY29tcHV0YXRpb24gKGlkeCArIDEpIHhzKVxuICAgICAgICAgICAgfmY6KGZ1biB5IHlzIC0+IHkgOjogeXMpKVxuICAgICAgfCBbXSAtPiBUaHJvdHRsZWQucmV0dXJuIFtdXG4gICAgaW5cbiAgICBUaHJvdHRsZWQucnVuIChnZW5fY29tcHV0YXRpb24gMCB0KSB+bWF4X2NvbmN1cnJlbnRfam9iczpqb2JfY291bnRcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBMaXN0LnJldiAoTGlzdC5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxubW9kdWxlIFRocm90dGxlZF9tYXAgPSBNYXAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChUaHJvdHRsZWQpXG5cbnR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTWFwLnRcblxubGV0IGNoYW5nZSB0IGsgfmYgPVxuICBsZXQlbWFwIG9wdCA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLmNoYW5nZSB0IGsgfmY6KGZ1biBfIC0+IG9wdClcbjs7XG5cbmxldCB1cGRhdGUgdCBrIH5mID1cbiAgbGV0JW1hcCBkYXRhID0gZiAoTWFwLmZpbmQgdCBrKSBpblxuICBNYXAuc2V0IHQgfmtleTprIH5kYXRhXG47O1xuXG5sZXQgaXRlcl9rZXlzIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChNYXAua2V5cyB0KSB+ZlxubGV0IGl0ZXIgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKE1hcC5kYXRhIHQpIH5mXG5sZXQgaXRlcmkgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKE1hcC50b19hbGlzdCB0KSB+ZjooZnVuIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSlcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBhbGlzdF9pbl9pbmNyZWFzaW5nX2tleV9vcmRlciA9XG4gICAgTWFwLmZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWxpc3QgLT4gKGtleSwgZGF0YSkgOjogYWxpc3QpXG4gIGluXG4gIExpc3QuZm9sZCBhbGlzdF9pbl9pbmNyZWFzaW5nX2tleV9vcmRlciB+aW5pdCB+ZjooZnVuIGFjIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSBhYylcbjs7XG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5fZGVjcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5fZGVjcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHsga2V5IDogJ2FcbiAgICA7IGRhdGEgOiAnYlxuICAgIDsgbXV0YWJsZSByZXN1bHQgOiAnYyBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cbmVuZFxuXG5sZXQgZmlsdGVyX21hcGlfc2VxdWVudGlhbCB0IH5mID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciB0IGluXG4gIGxldCBzZXF1ZW5jZSA9IE1hcC50b19zZXF1ZW5jZSB+b3JkZXI6YEluY3JlYXNpbmdfa2V5IHQgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgICAgc2VxdWVuY2VcbiAgICAgIH5pbml0OkJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmVtcHR5XG4gICAgICB+ZjooZnVuIHMgKGtleSwgZGF0YSkgfmsgLT5cbiAgICAgICAgdXBvbiAoZiB+a2V5IH5kYXRhKSAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gayBzXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcuYWRkX2V4blxuICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGsgcykpXG4gICAgICB+ZmluaXNoOihmdW4geCAtPlxuICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICBpdmFyXG4gICAgICAgICAgKE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWVcbiAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgIChCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy50b190cmVlIHgpKSkpXG47O1xuXG5sZXQgZmlsdGVyX21hcGlfbWF4X2NvbmN1cnJlbnQgdCB+ZiB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gIGxldCBjb21wdXRhdGlvbiA9XG4gICAgVGhyb3R0bGVkX21hcC5maWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgVGhyb3R0bGVkLmpvYiAoZnVuICgpIC0+IGYgfmtleSB+ZGF0YSkpXG4gIGluXG4gIFRocm90dGxlZC5ydW4gY29tcHV0YXRpb24gfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZlxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBmaWx0ZXJfbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzXG4gIHwgYFBhcmFsbGVsIC0+XG4gICAgbGV0IGpvYnMgPSByZWYgW10gaW5cbiAgICBsZXQgam9iX21hcCA9XG4gICAgICBNYXAubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBsZXQgam9iID0geyBKb2Iua2V5OyBkYXRhOyByZXN1bHQgPSBOb25lIH0gaW5cbiAgICAgICAgam9icyA6PSBqb2IgOjogIWpvYnM7XG4gICAgICAgIGpvYilcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPVxuICAgICAgTGlzdC5pdGVyIH5ob3cgKEJhc2UuTGlzdC5yZXYgIWpvYnMpIH5mOihmdW5jdGlvblxuICAgICAgICB8IHsgSm9iLmtleTsgZGF0YTsgcmVzdWx0ID0gXyB9IGFzIGpvYiAtPlxuICAgICAgICAgIGxldCVtYXAgeCA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgIGpvYi5yZXN1bHQgPC0geClcbiAgICBpblxuICAgIE1hcC5maWx0ZXJfbWFwIGpvYl9tYXAgfmY6Sm9iLnJlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGZpbHRlcl9rZXlzIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGtleSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlciB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBtYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBsZXQgY29tcHV0YXRpb24gPVxuICAgIFRocm90dGxlZF9tYXAubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiB+a2V5IH5kYXRhKSlcbiAgaW5cbiAgVGhyb3R0bGVkLnJ1biBjb21wdXRhdGlvbiB+bWF4X2NvbmN1cnJlbnRfam9ic1xuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCB8IGBQYXJhbGxlbCAtPlxuICAgIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGxldCVtYXAgeiA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgU29tZSB6KVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBtYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgbWVyZ2UgfmhvdyB0MSB0MiB+ZiA9XG4gIGZpbHRlcl9tYXBcbiAgICB+aG93XG4gICAgKE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXkgeiAtPiBTb21lIChmdW4gKCkgLT4gZiB+a2V5IHopKSlcbiAgICB+ZjooZnVuIHRodW5rIC0+IHRodW5rICgpKVxuOztcblxubGV0IGFsbCB0ID0gbWFwIHQgfmY6Rm4uaWQgfmhvdzpgU2VxdWVudGlhbFxuIiwib3BlbiEgQ29yZVxub3BlbiEgRGVmZXJyZWRfc3RkXG5pbmNsdWRlIERlZmVycmVkX21lbW9faW50ZlxuXG5tb2R1bGUgTWFrZSAoTSA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0ID0gJ2EgRGVmZXJyZWQxLnQpIDpcbiAgUyB3aXRoIHR5cGUgJ2EgZGVmZXJyZWQgOj0gJ2EgTS50ID0gc3RydWN0XG4gIG9wZW4hIE1cblxuICBsZXQgcmVyYWlzZSA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IHhcbiAgICB8IEVycm9yIGV4biAtPiBFeG4ucmVyYWlzZSBleG4gXCJjYXVnaHQgZXhjZXB0aW9uIGluIG1lbW9pemVkIGZ1bmN0aW9uXCJcbiAgOztcblxuICBsZXQgZ2VuZXJhbCcgKHR5cGUgYSkgfnJ1biAoaGFzaGFibGUgOiAobW9kdWxlIEhhc2hhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBhKSkgZiA9XG4gICAgbGV0IG1vZHVsZSBIYXNoYWJsZSA9ICh2YWwgaGFzaGFibGUpIGluXG4gICAgbGV0IGYgPVxuICAgICAgTWVtby5nZW5lcmFsIH5oYXNoYWJsZTpIYXNoYWJsZS5oYXNoYWJsZSAoZnVuIGEgLT5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICB+cnVuXG4gICAgICAgICAgKGZ1biAoKSAtPiBmIGEpKVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlIChmdW4gYSAtPiBmIGEgPj58IHJlcmFpc2UpXG4gIDs7XG5cbiAgbGV0IGdlbmVyYWwgaGFzaGFibGUgZiA9IGdlbmVyYWwnIH5ydW46YE5vdyBoYXNoYWJsZSBmXG5cbiAgbGV0IHJlY3Vyc2l2ZSAodHlwZSBhKSAoaGFzaGFibGUgOiAobW9kdWxlIEhhc2hhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBhKSkgZl9vbmVzdGVwID1cbiAgICBsZXQgcmVjIG1lbW9pemVkID1cbiAgICAgIGxhenlcbiAgICAgICAgKGdlbmVyYWwnXG4gICAgICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgICAgIGhhc2hhYmxlXG4gICAgICAgICAgIChmX29uZXN0ZXAgKGZ1biB4IC0+ICh1bnN0YWdlIChmb3JjZSBtZW1vaXplZCkpIHgpKSlcbiAgICBpblxuICAgIGZvcmNlIG1lbW9pemVkXG4gIDs7XG5cbiAgbGV0IHVuaXQgZiA9XG4gICAgbGV0IGYgPVxuICAgICAgTWVtby51bml0IChmdW4gKCkgLT5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgICBmKVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlIChmdW4gKCkgLT4gZiAoKSA+PnwgcmVyYWlzZSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIE1ha2UgKERlZmVycmVkMSlcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE9wdGlvbi50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoU29tZSBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSBhIC0+IGYgYVxuICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQucmV0dXJuIE5vbmUpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBPcHRpb24ubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2Vycm9yKSB0ID0gKCdhLCAnZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBsZXQlbWFwIHQxID0gdDFcbiAgYW5kIHQyID0gdDIgaW5cbiAgUmVzdWx0LmNvbWJpbmUgdDEgdDIgfm9rIH5lcnJcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChPayBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgYSAtPiBmIGFcbiAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IERlZmVycmVkLnJldHVybiBlcnJvcilcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgZmFpbCB4ID0gRGVmZXJyZWQucmV0dXJuIChFcnJvciB4KVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IG1hcF9lcnJvciB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXBfZXJyb3IgciB+ZilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBNb25pdG9yID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmVuZFxuXG4oKiBDb3BpZWQgdG8gW2VhZ2VyX2RlZmVycmVkX29yX2Vycm9yLm1sXS4gIFRoZXJlIHNob3VsZCBiZSBubyBkaWZmcyBiZWxvdyB0aGlzIGxpbmUuICopXG5cbmluY2x1ZGUgKERlZmVycmVkX3Jlc3VsdCA6IE1vbmFkLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIERlZmVycmVkX3Jlc3VsdC50KVxuXG50eXBlICdhIHQgPSAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBEZWZlcnJlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICBmXG4gICAgICAgIHhcbiAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgZmFpbCBlcnJvciA9IERlZmVycmVkLnJldHVybiAoUmVzdWx0LmZhaWwgZXJyb3IpXG5sZXQgb2tfZXhuIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjpPcl9lcnJvci5va19leG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgdCA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci5vZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UpXG5sZXQgZXJyb3IgbXNnIHYgc2V4cF9vZiA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3IgbXNnIHYgc2V4cF9vZilcbmxldCBlcnJvcl9zIHNleHAgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgbXNnKVxubGV0IGVycm9yZiBmb3JtYXQgPSBrc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIERlZmVycmVkLm1hcCB0IH5mOihmdW4gdCAtPiBPcl9lcnJvci50YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IudW5pbXBsZW1lbnRlZCBtc2cpXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuZmlsdGVyX29rX2F0X2xlYXN0X29uZVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKGwsIFtdKSAoZnVuIChsLCBlcnJvcnMpIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IGVycm9ycyA9IEVycm9yLm9mX2xpc3QgKExpc3QucmV2IGVycm9ycykgaW5cbiAgICAgIERlZmVycmVkLnJldHVybiAoYEZpbmlzaGVkIChFcnJvciBlcnJvcnMpKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIERlZmVycmVkLm1hcCAoZiBoZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgY3VycmVudF9lcnJvciAtPiBgUmVwZWF0ICh0bCwgY3VycmVudF9lcnJvciA6OiBlcnJvcnMpXG4gICAgICAgIHwgT2sgcmVzdWx0IC0+IGBGaW5pc2hlZCAoT2sgcmVzdWx0KSkpXG47O1xuXG5sZXQgb2tfdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAoTW9uaXRvci50cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjooZnVuY3Rpb25cbiAgICB8IEVycm9yIGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IE9rIF8gYXMgb2sgLT4gb2spXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwICh0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjpPcl9lcnJvci5qb2luXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgZm9sZGkgbGlzdCB+aW5pdDphY2MgfmYgPVxuICAgIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0JWJpbmQgYWNjID0gZiBpIGFjYyBoZCBpblxuICAgICAgICBsb29wIChpICsgMSkgYWNjIHRsXG4gICAgaW5cbiAgICBsb29wIDAgYWNjIGxpc3RcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgPSBhbGxcbiAgbGV0IGFsbF91bml0ID0gYWxsX3VuaXRcblxuICBsZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG4gIDs7XG5cbiAgbGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSB4IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIGZpbmRfbWFwIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgcmVjIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbWF0Y2glYmluZCBmIHN0YXRlIHdpdGhcbiAgfCBgUmVwZWF0IHN0YXRlIC0+IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmXG4gIHwgYEZpbmlzaGVkIHN0YXRlIC0+IHJldHVybiBzdGF0ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxuXG4oKiBXZSBpbXBsZW1lbnQgYWxsIG9mIHRoZSBbUXVldWVdIG9wZXJhdGlvbnMgYnkgY29udmVydGluZyB0aGUgcXVldWUgdG8gYSBsaXN0IGFuZCB0aGVuXG4gICB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBbTGlzdF0gb3BlcmF0aW9uLiAgV2UgdXNlIGxpc3RzIHJhdGhlciB0aGFuIGFycmF5cyBiZWNhdXNlXG4gICBhcnJheXMgbG9uZ2VyIHRoYW4gYSBjZXJ0YWluIGxlbmd0aCBhcmUgYWxsb2NhdGVkIGluIHRoZSBtYWpvciBoZWFwLCB3aGljaCBjYW4gY2F1c2VcbiAgIHVubmVjZXNzYXJ5IHByb21vdGlvbiBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiAgQWxzbywgd2hlbiBvbmUgaXMgZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYW4gYXJyYXksIHRoZSBlbnRpcmUgYXJyYXkgbXVzdCBiZSBrZXB0IGFsaXZlLiAgV2hlbiBmb2xkaW5nIG9yXG4gICBpdGVyYXRpbmcgb3ZlciBhIGxpc3QsIG9ubHkgdGhlIHJlbWFpbmluZyB0YWlsIG9mIHRoZSBsaXN0IGlzIGtlcHQgYWxpdmUuICBTbywgdXNpbmdcbiAgIGFycmF5cyByYXRoZXIgdGhhbiBsaXN0cyB3b3VsZCBpbmNyZWFzZSB0aGUgbGl2ZS1zcGFjZSBuZWVkZWQgYnkgdGhlIHByb2dyYW0uICopXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID0gTGlzdC5mb2xkaSAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGFsbCB0ID0gTGlzdC5hbGwgKFF1ZXVlLnRvX2xpc3QgdCkgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBhbGxfdW5pdCB0ID0gTGlzdC5hbGxfdW5pdCAoUXVldWUudG9fbGlzdCB0KVxubGV0IGl0ZXIgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBpdGVyaSB+aG93IHQgfmYgPSBMaXN0Lml0ZXJpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBtYXAgfmhvdyB0IH5mID0gTGlzdC5tYXAgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IG1hcGkgfmhvdyB0IH5mID0gTGlzdC5tYXBpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBpbml0IH5ob3cgbiB+ZiA9IExpc3QuaW5pdCB+aG93IG4gfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXIgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXJpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcCB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXJfbWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5cbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcCB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4geCAtPiBmIHggPj58IFF1ZXVlLnRvX2xpc3QpXG4gID4+fCBRdWV1ZS5vZl9saXN0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID1cbiAgTGlzdC5jb25jYXRfbWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4gaSB4IC0+IGYgaSB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZF9tYXBpIHQgfmYgPSBMaXN0LmZpbmRfbWFwaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRpIHQgfmYgPSBMaXN0LmZpbmRpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IExpc3QuZm9yX2FsbGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gTGlzdC5leGlzdHNpIChRdWV1ZS50b19saXN0IHQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxuKCogW2ZvbGRfbWFwaSB+aG93IHQgfmluaXQgfm1hcGlfZiB+Zm9sZF9mXSBpcyBhIG1vcmUgZWZmaWNpZW50IHZlcnNpb24gb2Y6XG5cbiAgIHtbXG4gICAgIGZvbGQgfmluaXQgfmY6KGZ1biBiIGEgLT4gcmV0dXJuIChmb2xkX2YgYiBhKSkgKG1hcGkgdCB+aG93IH5mOm1hcGlfZikgXX1cblxuICAgSXQgYXZvaWRzIGNyZWF0aW5nIHRoZSBpbnRlcm1lZGlhdGUgc2VxdWVuY2UgdGhhdCB3b3VsZCByZXN1bHQgZnJvbSBbbWFwaV0sIGFuZFxuICAgYWxsb3dzIHRoZSBbZm9sZF0gdG8gcHJvY2VlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgW21hcGldLCBzbyB0aGF0IG9uZSBjYW4gYWNjdW11bGF0ZVxuICAgdGhlIHJlc3VsdCBhcyBzb29uIGFzIHBvc3NpYmxlLCBwb3NzaWJseSBhdm9pZGluZyBjcmVhdGluZyBhbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJlXG4gICAoZS5nLiBbaXRlcmldIGFuZCBbZmlsdGVyX21hcF0gdXNlcyBbZm9sZF9tYXBpXSB0byBkbyB0aGlzKS4gKilcbmxldCBmb2xkX21hcGlcbiAgICAgICh0eXBlIGEgYiBjKVxuICAgICAgPyhob3cgPSBgU2VxdWVudGlhbClcbiAgICAgICh0IDogYSBTZXF1ZW5jZS50KVxuICAgICAgfihpbml0IDogYylcbiAgICAgIH4obWFwaV9mIDogaW50IC0+IGEgLT4gYiBEZWZlcnJlZC50KVxuICAgICAgfihmb2xkX2YgOiBjIC0+IGIgLT4gYylcbiAgOiBjIERlZmVycmVkLnRcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+XG4gICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMpID1cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gSXZhci5maWxsIHJlc3VsdCBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+IHVwb24gKG1hcGlfZiBpIGEpIChmdW4gYiAtPiBsb29wIChpICsgMSkgdCAoZm9sZF9mIGMgYikpXG4gICAgaW5cbiAgICBsb29wIDAgdCBpbml0O1xuICAgIEl2YXIucmVhZCByZXN1bHRcbiAgfCBgUGFyYWxsZWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICB0XG4gICAgICAgICAgKGxldCViaW5kIGIgPSBtYXBpX2YgaSBhIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgbGV0IHRocm90dGxlID0gVGhyb3R0bGUuY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSBpblxuICAgICgqIFtsb29wXSBmb3JjZXMgdGhlIGlucHV0IHNlcXVlbmNlIGFuZCBlbnF1ZXVlcyBhIHRocm90dGxlIGpvYiBvbmx5IGlmIHRoZXJlIGlzXG4gICAgICAgY2FwYWNpdHkgYXZhaWxhYmxlLiAqKVxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjIERlZmVycmVkLnQpID1cbiAgICAgIGxldCViaW5kICgpID0gVGhyb3R0bGUuY2FwYWNpdHlfYXZhaWxhYmxlIHRocm90dGxlIGluXG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICB0XG4gICAgICAgICAgKGxldCViaW5kIGIgPSBUaHJvdHRsZS5lbnF1ZXVlIHRocm90dGxlIChmdW4gKCkgLT4gbWFwaV9mIGkgYSkgaW5cbiAgICAgICAgICAgbGV0JW1hcCBjID0gYyBpblxuICAgICAgICAgICBmb2xkX2YgYyBiKVxuICAgIGluXG4gICAgbG9vcCAwIHQgKHJldHVybiBpbml0KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICB0XG4gICAgfmluaXQ6KDAsIGluaXQpXG4gICAgfmY6KGZ1biAoaSwgYikgYSB+ayAtPlxuICAgICAgbGV0JWJpbmQgYiA9IGYgaSBiIGEgaW5cbiAgICAgIGsgKGkgKyAxLCBiKSlcbiAgICB+ZmluaXNoOihmdW4gKF8sIGIpIC0+IHJldHVybiBiKVxuOztcblxuKCogW2ZvbGRdIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBbZm9sZGldIHRvIHNhdmUgdGhlIGludGVybWVkaWF0ZSBjbG9zdXJlXG4gICBhbGxvY2F0aW9uLiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZCB0IH5pbml0IH5mOihmdW4gYiBhIH5rIC0+IGYgYiBhID4+PSBrKSB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGFsbCB0ID1cbiAgbGV0JW1hcCByZXMgPVxuICAgIGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjY3VtIGQgLT5cbiAgICAgIGxldCVtYXAgYSA9IGQgaW5cbiAgICAgIGEgOjogYWNjdW0pXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHJlcylcbjs7XG5cbmxldCBhbGxfdW5pdCB0ID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgdiAtPiB2KVxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJldHVybiBOb25lXG4gICAgfCBTb21lICh2LCByZXN0KSAtPlxuICAgICAgKG1hdGNoJWJpbmQgZiBpIHYgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgcmVzdCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyaSB+aG93IHQgfmYgOiB1bml0IERlZmVycmVkLnQgPVxuICBmb2xkX21hcGkgfmhvdyB0IH5tYXBpX2Y6ZiB+aW5pdDooKSB+Zm9sZF9mOihmdW4gKCkgKCkgLT4gKCkpXG47O1xuXG5sZXQgbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGkgfmhvdyB0IH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpIH5pbml0OltdIH5mb2xkX2Y6KGZ1biBicyBiIC0+IGIgOjogYnMpXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IGJzKVxuOztcblxuKCogW2ZpbHRlcl9tYXBpXSBpcyBpbXBsZW1lbnRlZCB1c2luZyBbZm9sZF9tYXBpXSByYXRoZXIgdGhhbiBbbWFwXSBzbyB0aGF0IHdlIG5ldmVyIG5lZWRcbiAgIHRvIGtlZXAgYSBsb25nIHN0cmVhbSBvZiBpbnRlcm1lZGlhdGUgW05vbmVdIHJlc3VsdHMgaW4gdGhlIGFjY3VtdWxhdG9yLCBvbmx5IHRvIGxhdGVyXG4gICBmaWx0ZXIgdGhlbSBhbGwgb3V0LiAqKVxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPVxuICAgIGZvbGRfbWFwaVxuICAgICAgdFxuICAgICAgfmhvd1xuICAgICAgfm1hcGlfZjooZnVuIGkgYSAtPiBmIGkgYSlcbiAgICAgIH5pbml0OltdXG4gICAgICB+Zm9sZF9mOihmdW4gYnMgbWF5YmVfdiAtPlxuICAgICAgICBtYXRjaCBtYXliZV92IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGJzXG4gICAgICAgIHwgU29tZSBiIC0+IGIgOjogYnMpXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IGJzKVxuOztcblxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mID4+fCBTZXF1ZW5jZS5jb25jYXRcblxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2glbWFwIGYgaSBhIHdpdGhcbiAgICB8IHRydWUgLT4gU29tZSBhXG4gICAgfCBmYWxzZSAtPiBOb25lKVxuOztcblxubGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChTZXF1ZW5jZS5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNcbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdFxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgRGF0ZSA9IERhdGVcblxubGV0IGFmdGVyID0gQ2xvY2tfbnMuYWZ0ZXJcbmxldCBhdCA9IENsb2NrX25zLmF0XG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBTdHJlYW0gPSBBc3luY19zdHJlYW1cblxubGV0IHNob3dfZGVidWdfbWVzc2FnZXMgPSByZWYgZmFsc2VcbmxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgZmFsc2VcblxubW9kdWxlIEZsdXNoZWRfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgT2tcbiAgICB8IGBSZWFkZXJfY2xvc2VkXG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICBsZXQgY29tYmluZSAobCA6IHQgRGVmZXJyZWQudCBsaXN0KSA9XG4gICAgbGV0JW1hcCBsID0gRGVmZXJyZWQuYWxsIGwgaW5cbiAgICBtYXRjaCBMaXN0Lm1lbSBsIGBSZWFkZXJfY2xvc2VkIH5lcXVhbCB3aXRoXG4gICAgfCB0cnVlIC0+IGBSZWFkZXJfY2xvc2VkXG4gICAgfCBmYWxzZSAtPiBgT2tcbiAgOztcbmVuZFxuXG4oKiBBIFtDb25zdW1lci50XSBhY3RzIGFzIHRoZSBtb25pdG9yIG9mIHNvbWUgcHJvY2VzcyB0aGF0IHJlYWRzIHZhbHVlcyBmcm9tIGEgcGlwZSBhbmRcbiAgIHByb2Nlc3NlcyB0aGVtLCBhbGxvd2luZyB0aGF0IHByb2Nlc3M6XG4gICAtIHRvIGNvbW11bmljYXRlIHRoYXQgaXQgaGFzIHRha2VuIHJlc3BvbnNpYmlsaXR5IGZvciB0aGUgdmFsdWVzXG4gICAtIHRvIHNpZ25hbCB3aGVuIGl0IGhhcyBmaW5pc2hlZCB3aXRoIHRoZSB2YWx1ZXMgdG8gaW50ZXJlc3RlZCBwYXJ0aWVzICh2aWFcbiAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0pXG5cbiAgIEl0IGlzIHVzZWQgaW4gdHdvIHN0ZXBzOlxuXG4gICAxLiBjYWxsaW5nIFtDb25zdW1lci5zdGFydF0gYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBjb25zdW1lciB0YWtlcyB2YWx1ZXMgb3V0IG9mIHRoZVxuICAgUGlwZSB2aWEgW3JlYWRdIG9yIFtyZWFkJ10uXG5cbiAgIDIuIGNhbGxpbmcgW0NvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1dLlxuXG4gICBCeSBjYWxsaW5nIFt2YWx1ZXNfc2VudF9kb3duc3RyZWFtXSBvbmUgYXNzZXJ0cyB0aGF0IHRoZSBbZG93bnN0cmVhbV9mbHVzaGVkXSBmdW5jdGlvblxuICAgc3VwcGxpZWQgdG8gW2NyZWF0ZV0gd2lsbCBub3cgd2FpdCBmb3IgdGhpcyB2YWx1ZS5cblxuICAgSWYgbm8gW0NvbnN1bWVyLnRdIGlzIHN1cHBsaWVkIHdoZW4gYSB2YWx1ZSBpcyByZWFkIHRoZW4gdGhlIHZhbHVlIGlzIGRlZmluZWQgdG8gYmVcbiAgIGZsdXNoZWQgYXQgdGhhdCB0aW1lLiAqKVxubW9kdWxlIENvbnN1bWVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBwaXBlX2lkOmludFxuICAgIC0+IGRvd25zdHJlYW1fZmx1c2hlZDoodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpXG4gICAgLT4gdFxuXG4gIHZhbCBwaXBlX2lkIDogdCAtPiBpbnRcbiAgdmFsIHN0YXJ0IDogdCAtPiB1bml0XG4gIHZhbCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtIDogdCAtPiB1bml0XG4gIHZhbCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIDogdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGlwZV9pZCA6IGludFxuICAgIDsgKCogW3ZhbHVlc19yZWFkXSByZWZsZWN0cyB3aGV0aGVyIHZhbHVlcyB0aGUgY29uc3VtZXIgaGFzIHJlYWQgZnJvbSB0aGUgcGlwZSBoYXZlIGJlZW5cbiAgICAgICAgIHNlbnQgZG93bnN0cmVhbSBvciBpZiBub3QsIGhvbGRzIGFuIGl2YXIgdGhhdCBpcyB0byBiZSBmaWxsZWQgd2hlbiB0aGV5IGFyZS4gKilcbiAgICAgIG11dGFibGVcbiAgICAgICAgdmFsdWVzX3JlYWQgOlxuICAgICAgICBbIGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIG9mIHVuaXQgSXZhci50IF1cbiAgICA7ICgqIFtkb3duc3RyZWFtX2ZsdXNoZWQgKCldIHJldHVybnMgd2hlbiBhbGwgcHJpb3IgdmFsdWVzIHRoYXQgdGhlIGNvbnN1bWVyIGhhc1xuICAgICAgICAgcGFzc2VkIGRvd25zdHJlYW0gaGF2ZSBiZWVuIGZsdXNoZWQgYWxsIHRoZSB3YXkgZG93biB0aGUgY2hhaW4gb2YgcGlwZXMuICopXG4gICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgOiB1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5waXBlX2lkOmlnbm9yZVxuICAgICAgICB+dmFsdWVzX3JlYWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gKClcbiAgICAgICAgICAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBpdmFyIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpXG4gICAgICAgIH5kb3duc3RyZWFtX2ZsdXNoZWQ6aWdub3JlXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5Db25zdW1lci5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiB0KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIH5waXBlX2lkIH5kb3duc3RyZWFtX2ZsdXNoZWQgPVxuICAgIHsgcGlwZV9pZDsgdmFsdWVzX3JlYWQgPSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbTsgZG93bnN0cmVhbV9mbHVzaGVkIH1cbiAgOztcblxuICBsZXQgc3RhcnQgdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gXyAtPiAoKVxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT5cbiAgICAgIHQudmFsdWVzX3JlYWQgPC0gYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIChJdmFyLmNyZWF0ZSAoKSlcbiAgOztcblxuICBsZXQgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiB0LmRvd25zdHJlYW1fZmx1c2hlZCAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIHdoZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB3aGVuX3NlbnRfZG93bnN0cmVhbSBpblxuICAgICAgdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9yZWFkID0gc3RydWN0XG4gICgqIEEgW0Jsb2NrZWRfcmVhZC50XSByZXByZXNlbnRzIGEgYmxvY2tlZCByZWFkIGF0dGVtcHQuICBJZiBzb21lb25lIHJlYWRzIGZyb20gYW4gZW1wdHlcbiAgICAgcGlwZSwgdGhleSBlbnF1ZXVlIGEgW0Jsb2NrZWRfcmVhZC50XSBpbiB0aGUgcXVldWUgb2YgW2Jsb2NrZWRfcmVhZHNdLiAgTGF0ZXIsIHdoZW5cbiAgICAgdmFsdWVzIGFyZSB3cml0dGVuIHRvIGEgcGlwZSwgdGhhdCB3aWxsIGNhdXNlIHNvbWUgbnVtYmVyIG9mIGJsb2NrZWQgcmVhZHMgdG8gYmVcbiAgICAgZmlsbGVkLCBmaXJzdCBjb21lIGZpcnN0IHNlcnZlLiAgVGhlIGJsb2NrZWQtcmVhZCBjb25zdHJ1Y3RvciBzcGVjaWZpZXMgaG93IG1hbnlcbiAgICAgdmFsdWVzIGEgcmVhZCBzaG91bGQgY29uc3VtZSBmcm9tIHRoZSBwaXBlIHdoZW4gaXQgZ2V0cyBpdHMgdHVybi5cblxuICAgICBJZiBhIHBpcGUgaXMgY2xvc2VkLCB0aGVuIGFsbCBibG9ja2VkIHJlYWRzIHdpbGwgYmUgZmlsbGVkIHdpdGggW2BFb2ZdLiAqKVxuICB0eXBlICdhIHdhbnRzID1cbiAgICB8IFplcm8gb2YgWyBgRW9mIHwgYE9rIF0gSXZhci50XG4gICAgfCBPbmUgb2YgWyBgRW9mIHwgYE9rIG9mICdhIF0gSXZhci50XG4gICAgfCBBdF9tb3N0IG9mIGludCAqIFsgYEVvZiB8IGBPayBvZiAnYSBRdWV1ZS50IF0gSXZhci50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHdhbnRzIDogJ2Egd2FudHNcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+d2FudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgWmVybyBfIHwgT25lIF8gLT4gKClcbiAgICAgICAgICAgICB8IEF0X21vc3QgKGksIF8pIC0+IGFzc2VydCAoaSA+IDApKSlcbiAgICAgICAgfmNvbnN1bWVyOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT4gQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyKSlcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5CbG9ja2VkX3JlYWQuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogXyB0KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHdhbnRzIGNvbnN1bWVyID0geyB3YW50czsgY29uc3VtZXIgfVxuXG4gIGxldCBpc19lbXB0eSB0ID1cbiAgICBtYXRjaCB0LndhbnRzIHdpdGhcbiAgICB8IFplcm8gaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IE9uZSBpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICAgIHwgQXRfbW9zdCAoXywgaSkgLT4gSXZhci5pc19lbXB0eSBpXG4gIDs7XG5cbiAgbGV0IGZpbGxfd2l0aF9lb2YgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5maWxsIGkgYEVvZlxuICAgIHwgT25lIGkgLT4gSXZhci5maWxsIGkgYEVvZlxuICAgIHwgQXRfbW9zdCAoXywgaSkgLT4gSXZhci5maWxsIGkgYEVvZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBCbG9ja2VkX2ZsdXNoID0gc3RydWN0XG4gICgqIEEgW0Jsb2NrZWRfZmx1c2gudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgZmx1c2ggb3BlcmF0aW9uLCB3aGljaCBjYW4gYmUgZW5hYmxlZCBieSBhXG4gICAgIGZ1dHVyZSByZWFkLiAgSWYgc29tZW9uZSBkb2VzIFtmbHVzaGVkIHBdIG9uIGEgcGlwZSwgdGhhdCBibG9ja3MgdW50aWwgZXZlcnl0aGluZ1xuICAgICB0aGF0J3MgY3VycmVudGx5IGluIHRoZSBwaXBlIGF0IHRoYXQgcG9pbnQgaGFzIGRyYWluZWQgb3V0IG9mIHRoZSBwaXBlLiAgV2hlbiB3ZSBjYWxsXG4gICAgIFtmbHVzaGVkXSwgaXQgcmVjb3JkcyB0aGUgdG90YWwgYW1vdW50IG9mIGRhdGEgdGhhdCBoYXMgYmVlbiB3cml0dGVuIHNvIGZhciBpblxuICAgICBbZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF0uICBXZSBmaWxsIHRoZSBbRmx1c2gudF0gd2l0aCBbYE9rXSB3aGVuIHRoaXMgYW1vdW50IG9mXG4gICAgIGRhdGEgaGFzIGJlZW4gcmVhZCBmcm9tIHRoZSBwaXBlLlxuXG4gICAgIEEgW0Jsb2NrZWRfZmx1c2gudF0gY2FuIGFsc28gYmUgZmlsbGVkIHdpdGggW2BSZWFkZXJfY2xvc2VkXSwgd2hpY2ggaGFwcGVucyB3aGVuIHRoZVxuICAgICByZWFkZXIgZW5kIG9mIHRoZSBwaXBlIGlzIGNsb3NlZCwgYW5kIHdlIGFyZSB0aHVzIHN1cmUgdGhhdCB0aGUgdW5yZWFkIGVsZW1lbnRzIHByZWNlZGluZyB0aGUgZmx1c2ggd2lsbCBuZXZlciBiZSByZWFkLiAqKVxuICB0eXBlIHQgPVxuICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA6IGludFxuICAgIDsgcmVhZHkgOiBbIGBPayB8IGBSZWFkZXJfY2xvc2VkIF0gSXZhci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGZpbGwgdCB2ID0gSXZhci5maWxsIHQucmVhZHkgdlxuZW5kXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgdCA9XG4gIHsgKCogW2lkXSBpcyBhbiBpbnRlZ2VyIHVzZWQgdG8gZGlzdGluZ3Vpc2ggcGlwZXMgd2hlbiBkZWJ1Z2dpbmcuICopXG4gICAgaWQgOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XG4gIDsgKCogW2luZm9dIGlzIHVzZXItcHJvdmlkZWQgYXJiaXRyYXJ5IHNleHAsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuICopXG4gICAgbXV0YWJsZSBpbmZvIDogU2V4cC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7ICgqIFtidWZmZXJdIGhvbGRzIHZhbHVlcyB3cml0dGVuIHRvIHRoZSBwaXBlIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gcmVhZC4gKilcbiAgICBtdXRhYmxlIGJ1ZmZlciA6ICdhIFF1ZXVlLnRcbiAgOyAoKiBbc2l6ZV9idWRnZXRdIGdvdmVybnMgcHVzaGJhY2sgb24gd3JpdGVycyB0byB0aGUgcGlwZS5cblxuICAgICAgIFRoZXJlIGlzICpubyogaW52YXJpYW50IHRoYXQgW1F1ZXVlLmxlbmd0aCBidWZmZXIgPD0gc2l6ZV9idWRnZXRdLlxuICAgICAgIFRoZXJlIGlzIG5vIGhhcmQgdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGNhbiBiZSBzdHVmZmVkIGludG8gdGhlXG4gICAgICAgW2J1ZmZlcl0uIFRoaXMgaXMgZHVlIHRvIHRoZSB3YXkgd2UgaGFuZGxlIHdyaXRlcy4gV2hlbiB3ZSBkbyBhIHdyaXRlLCBhbGwgb2YgdGhlXG4gICAgICAgdmFsdWVzIHdyaXR0ZW4gYXJlIGltbWVkaWF0ZWx5IGVucXVldWVkIGludG8gW2J1ZmZlcl0uIEFmdGVyIHRoZSB3cml0ZSwgaWZcbiAgICAgICBbUXVldWUubGVuZ3RoIGJ1ZmZlciA8PSB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGVyIHdpbGwgYmUgbm90aWZpZWQgdG9cbiAgICAgICBjb250aW51ZSB3cml0aW5nLiBBZnRlciB0aGUgd3JpdGUsIGlmIFtsZW5ndGggdCA+IHQuc2l6ZV9idWRnZXRdLCB0aGVuIHRoZSB3cml0ZVxuICAgICAgIHdpbGwgYmxvY2sgdW50aWwgdGhlIHBpcGUgaXMgdW5kZXIgYnVkZ2V0LiAqKVxuICAgIG11dGFibGUgc2l6ZV9idWRnZXQgOiBpbnRcbiAgOyAoKiBbcmVzZXJ2ZWRfc3BhY2VdIGNvdW50cyBhZ2FpbnN0IFtzaXplX2J1ZGdldF0gd2l0aG91dCBhY3R1YWxseSBidWZmZXJpbmcgYW55dGhpbmdcbiAgICAgICB5ZXQuIFdoZW4gaXQncyBwb3NpdGl2ZSwgd3JpdGVzIGRlY3JlbWVudCBpdC4gKilcbiAgICBtdXRhYmxlIHJlc2VydmVkX3NwYWNlIDogaW50XG4gIDsgKCogW3B1c2hiYWNrXSBpcyB1c2VkIHRvIGdpdmUgZmVlZGJhY2sgdG8gd3JpdGVycyBhYm91dCB3aGV0aGVyIHRoZXkgc2hvdWxkIHdyaXRlIHRvXG4gICAgICAgdGhlIHBpcGUuIFtwdXNoYmFja10gaXMgZnVsbCBpZmYgW2xlbmd0aCB0ICsgcmVzZXJ2ZWRfc3BhY2UgdCA8PSB0LnNpemVfYnVkZ2V0IHx8XG4gICAgICAgaXNfY2xvc2VkIHRdLiAqKVxuICAgIG11dGFibGUgcHVzaGJhY2sgOiB1bml0IEl2YXIudFxuICA7ICgqIFtudW1fdmFsdWVzX3JlYWRdIGtlZXBzIHRyYWNrIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIHRoYXQgaGF2ZSBiZWVuIHJlYWRcbiAgICAgICBmcm9tIHRoZSBwaXBlLiAgV2UgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgb3ZlcmZsb3cgaW4gW251bV92YWx1ZXNfcmVhZF0uICBZb3UnZFxuICAgICAgIG5lZWQgdG8gd3JpdGUgMl42MiBlbGVtZW50cyB0byB0aGUgcGlwZSwgd2hpY2ggd291bGQgdGFrZSBhYm91dCAxNDYgeWVhcnMsIGF0IGFcbiAgICAgICBmbG93IHJhdGUgb2YgMSBzaXplLXVuaXQvbmFub3NlY29uZC4gKilcbiAgICBtdXRhYmxlIG51bV92YWx1ZXNfcmVhZCA6IGludFxuICAoKiBbYmxvY2tlZF9mbHVzaGVzXSBob2xkcyBmbHVzaGVzIHdob3NlIHByZWNlZGluZyBlbGVtZW50cyBoYXZlIG5vdCBiZWVuIGNvbXBsZXRlbHlcbiAgICAgcmVhZC4gIEZvciBlYWNoIGJsb2NrZWQgZmx1c2gsIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgZnJvbSB0aGVcbiAgICAgcGlwZSBpbiBvcmRlciB0byBmaWxsIHRoZSBmbHVzaCBpcyAgICAgICAgICAgICAgICAgICAgICAgIDpcblxuICAgICBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIC0gbnVtX3ZhbHVlc19yZWFkXG5cbiAgICAgS2VlcGluZyB0aGUgZGF0YSBpbiB0aGlzIGZvcm0gYWxsb3dzIHVzIHRvIGNoYW5nZSBhIHNpbmdsZSBmaWVsZChudW1fdmFsdWVzX3JlYWQpXG4gICAgIHdoZW4gd2UgY29uc3VtZSB2YWx1ZXMgaW5zdGVhZCBvZiBoYXZpbmcgdG8gaXRlcmF0ZSBvdmVyIHRoZSB3aG9sZSBxdWV1ZSBvZlxuICAgICBmbHVzaGVzLiAqKVxuICA7IGJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCBRdWV1ZS50XG4gIDsgKCogW2Jsb2NrZWRfcmVhZHNdIGhvbGRzIHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgb24gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBwaXBlLiAqKVxuICAgIGJsb2NrZWRfcmVhZHMgOiAnYSBCbG9ja2VkX3JlYWQudCBRdWV1ZS50XG4gIDsgKCogW2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICBjbG9zZWQgOiB1bml0IEl2YXIudFxuICA7ICgqIFtyZWFkX2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHJlYWQgZW5kIG9mIHRoZSBwaXBlLiAqKVxuICAgIHJlYWRfY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbY29uc3VtZXJzXSBpcyBhIGxpc3Qgb2YgYWxsIGNvbnN1bWVycyB0aGF0IG1heSBiZSBoYW5kbGluZyB2YWx1ZXMgcmVhZCBmcm9tIHRoZVxuICAgICAgIHBpcGUuICopXG4gICAgbXV0YWJsZSBjb25zdW1lcnMgOiBDb25zdW1lci50IGxpc3RcbiAgOyAoKiBbdXBzdHJlYW1fZmx1c2hlZHNdIGhhcyBhIGZ1bmN0aW9uIGZvciBlYWNoIHBpcGUgaW1tZWRpYXRlbHkgdXBzdHJlYW0gb2YgdGhpcyBvbmUuXG4gICAgICAgVGhhdCBmdW5jdGlvbiB3YWxrcyB0byB0aGUgaGVhZChzKSBvZiB0aGUgdXBzdHJlYW0gcGlwZSwgYW5kIGNhbGxzXG4gICAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0gb24gdGhlIGhlYWQocykuICBTZWUgdGhlIGRlZmluaXRpb24gb2YgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICAgICAgYmVsb3cuICopXG4gICAgdXBzdHJlYW1fZmx1c2hlZHMgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGVmZmVjdGl2ZV9zaXplX2J1ZGdldCB0ID0gdC5zaXplX2J1ZGdldCAtIHQucmVzZXJ2ZWRfc3BhY2VcblxudHlwZSAoJ2EsICdwaGFudG9tKSBwaXBlID0gKCdhLCAncGhhbnRvbSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIHQuaWRcbmxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgY29tcGFyZSB0MSB0MiA9IEludC5jb21wYXJlIHQxLmlkIHQyLmlkXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbmxldCBpc19yZWFkX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQucmVhZF9jbG9zZWRcbmxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxubGV0IHB1c2hiYWNrIHQgPSBJdmFyLnJlYWQgdC5wdXNoYmFja1xubGV0IGxlbmd0aCB0ID0gUXVldWUubGVuZ3RoIHQuYnVmZmVyXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxubGV0IHVwZGF0ZV9udW1fdmFsdWVzX3JlYWQgdCB+ZGVsdGEgPSB0Lm51bV92YWx1ZXNfcmVhZCA8LSB0Lm51bV92YWx1ZXNfcmVhZCArIGRlbHRhXG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aWQ6aWdub3JlXG4gICAgICB+aW5mbzppZ25vcmVcbiAgICAgIH5idWZmZXI6aWdub3JlXG4gICAgICB+c2l6ZV9idWRnZXQ6KGNoZWNrIChmdW4gc2l6ZV9idWRnZXQgLT4gYXNzZXJ0IChzaXplX2J1ZGdldCA+PSAwKSkpXG4gICAgICB+cmVzZXJ2ZWRfc3BhY2U6KGNoZWNrIChmdW4gcmVzZXJ2ZWRfc3BhY2UgLT4gYXNzZXJ0IChyZXNlcnZlZF9zcGFjZSA+PSAwKSkpXG4gICAgICB+cHVzaGJhY2s6XG4gICAgICAgIChjaGVjayAoZnVuIHB1c2hiYWNrIC0+XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgQm9vbC5lcXVhbFxuICAgICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCBwdXNoYmFjaylcbiAgICAgICAgICAgICAgIChsZW5ndGggdCA8PSBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCB8fCBpc19jbG9zZWQgdCkpKSlcbiAgICAgIH5udW1fdmFsdWVzX3JlYWQ6aWdub3JlXG4gICAgICB+YmxvY2tlZF9mbHVzaGVzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX2ZsdXNoZXMgLT5cbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biAoZiA6IEJsb2NrZWRfZmx1c2gudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGYuZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA+IHQubnVtX3ZhbHVlc19yZWFkKSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgTGlzdC5pc19zb3J0ZWRcbiAgICAgICAgICAgICAgIH5jb21wYXJlOkludC5jb21wYXJlXG4gICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChRdWV1ZS50b19saXN0IGJsb2NrZWRfZmx1c2hlcylcbiAgICAgICAgICAgICAgICAgIH5mOkJsb2NrZWRfZmx1c2guZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBpZiBpc19lbXB0eSB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX2ZsdXNoZXMpKSlcbiAgICAgIH5ibG9ja2VkX3JlYWRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX3JlYWRzIC0+XG4gICAgICAgICAgICgqIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBubyBvbmUgaXMgd2FpdGluZyBmb3IgaXQuICBUaGlzIHdvdWxkIG5lZWQgdG8gY2hhbmdlIGlmXG4gICAgICAgICAgICAgIHdlIGV2ZXIgaW1wbGVtZW50IFtyZWFkX2V4YWN0bHldIGFzIGFuIGF0b21pYyBvcGVyYXRpb24uICopXG4gICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgdCkgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfcmVhZHMpO1xuICAgICAgICAgICBRdWV1ZS5pdGVyIGJsb2NrZWRfcmVhZHMgfmY6KGZ1biByZWFkIC0+XG4gICAgICAgICAgICAgQmxvY2tlZF9yZWFkLmludmFyaWFudCByZWFkO1xuICAgICAgICAgICAgIGFzc2VydCAoQmxvY2tlZF9yZWFkLmlzX2VtcHR5IHJlYWQpKTtcbiAgICAgICAgICAgKCogWW91IG5ldmVyIGJsb2NrIHRyeWluZyB0byByZWFkIGEgY2xvc2VkIHBpcGUuICopXG4gICAgICAgICAgIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKSkpXG4gICAgICB+Y2xvc2VkOmlnbm9yZVxuICAgICAgfnJlYWRfY2xvc2VkOmlnbm9yZVxuICAgICAgfmNvbnN1bWVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gbCAtPlxuICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGNvbnN1bWVyIC0+XG4gICAgICAgICAgICAgQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyO1xuICAgICAgICAgICAgIGFzc2VydCAoQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lciA9IHQuaWQpKSkpXG4gICAgICB+dXBzdHJlYW1fZmx1c2hlZHM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IChfLCBfKSB0KV1cbjs7XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSBwaGFudG9tIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgdCA9ICgnYSwgcGhhbnRvbSkgcGlwZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubGV0IGlkX3JlZiA9IHJlZiAwXG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0IH5pbmZvIH5pbml0aWFsX2J1ZmZlciA9XG4gIGluY3IgaWRfcmVmO1xuICBsZXQgdCA9XG4gICAgeyBpZCA9ICFpZF9yZWZcbiAgICA7IGluZm9cbiAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyByZWFkX2Nsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgO1xuICAgICAgc2l6ZV9idWRnZXRcbiAgICA7IHJlc2VydmVkX3NwYWNlID0gMFxuICAgIDsgcHVzaGJhY2sgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgYnVmZmVyID0gaW5pdGlhbF9idWZmZXJcbiAgICA7IG51bV92YWx1ZXNfcmVhZCA9IDBcbiAgICA7IGJsb2NrZWRfZmx1c2hlcyA9IFF1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgYmxvY2tlZF9yZWFkcyA9IFF1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgY29uc3VtZXJzID0gW11cbiAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzID0gQmFnLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHNpemVfYnVkZ2V0ID1cbiAgaWYgc2l6ZV9idWRnZXQgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJuZWdhdGl2ZSBzaXplX2J1ZGdldFwiIChzaXplX2J1ZGdldCA6IGludCldXG4gIGVsc2Ugc2l6ZV9idWRnZXRcbjs7XG5cbmxldCBjcmVhdGUgP3NpemVfYnVkZ2V0ID9pbmZvICgpID1cbiAgbGV0IHNpemVfYnVkZ2V0ID1cbiAgICBtYXRjaCBzaXplX2J1ZGdldCB3aXRoXG4gICAgfCBTb21lIHYgLT4gdmFsaWRhdGVfc2l6ZV9idWRnZXQgdlxuICAgIHwgTm9uZSAtPiAwXG4gIGluXG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldCB+aW5mbyB+aW5pdGlhbF9idWZmZXI6KFF1ZXVlLmNyZWF0ZSAoKSkgaW5cbiAgKCogaW5pdGlhbGx5LCB0aGUgcGlwZSBkb2VzIG5vdCBwdXNoYmFjayAqKVxuICBJdmFyLmZpbGwgdC5wdXNoYmFjayAoKTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICB0LCB0XG47O1xuXG5sZXQgdXBkYXRlX3B1c2hiYWNrIHQgPVxuICBpZiBsZW5ndGggdCA8PSBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCB8fCBpc19jbG9zZWQgdFxuICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnB1c2hiYWNrICgpXG4gIGVsc2UgaWYgSXZhci5pc19mdWxsIHQucHVzaGJhY2tcbiAgdGhlbiB0LnB1c2hiYWNrIDwtIEl2YXIuY3JlYXRlICgpXG47O1xuXG5sZXQgY2xvc2UgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gKFxuICAgICAgUXVldWUuaXRlciB0LmJsb2NrZWRfcmVhZHMgfmY6QmxvY2tlZF9yZWFkLmZpbGxfd2l0aF9lb2Y7XG4gICAgICBRdWV1ZS5jbGVhciB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0KVxuOztcblxubGV0IGNsb3NlX3JlYWQgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlX3JlYWRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIG5vdCAoaXNfcmVhZF9jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQucmVhZF9jbG9zZWQgKCk7XG4gICAgUXVldWUuaXRlciB0LmJsb2NrZWRfZmx1c2hlcyB+ZjooZnVuIGZsdXNoIC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBgUmVhZGVyX2Nsb3NlZCk7XG4gICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX2ZsdXNoZXM7XG4gICAgUXVldWUuY2xlYXIgdC5idWZmZXI7XG4gICAgdC5yZXNlcnZlZF9zcGFjZSA8LSAwO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0O1xuICAgICgqIHdlIGp1c3QgY2xlYXJlZCB0aGUgYnVmZmVyLCBzbyBtYXkgbmVlZCB0byBmaWxsIFt0LnB1c2hiYWNrXSAqKVxuICAgIGNsb3NlIHQpXG47O1xuXG5sZXQgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIHVwb24gKGYgdykgKGZ1biAoKSAtPiBjbG9zZSB3KTtcbiAgclxuOztcblxubGV0IGNyZWF0ZV9yZWFkZXIgP3NpemVfYnVkZ2V0IH5jbG9zZV9vbl9leGNlcHRpb24gZiA9XG4gIGlmIG5vdCBjbG9zZV9vbl9leGNlcHRpb25cbiAgdGhlbiBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gP3NpemVfYnVkZ2V0IGZcbiAgZWxzZSAoXG4gICAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChNb25pdG9yLnByb3RlY3RcbiAgICAgICAgIChmdW4gKCkgLT4gZiB3KVxuICAgICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgICBjbG9zZSB3O1xuICAgICAgICAgICByZXR1cm4gKCkpKTtcbiAgICByKVxuOztcblxubGV0IGNyZWF0ZV93cml0ZXIgP3NpemVfYnVkZ2V0IGYgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoTW9uaXRvci5wcm90ZWN0XG4gICAgICAgKGZ1biAoKSAtPiBmIHIpXG4gICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgY2xvc2VfcmVhZCByO1xuICAgICAgICAgcmV0dXJuICgpKSk7XG4gIHdcbjs7XG5cbmxldCB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXIgPVxuICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci5zdGFydDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCBRdWV1ZS5wZWVrIHQuYmxvY2tlZF9mbHVzaGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZmx1c2ggLT5cbiAgICAgIGlmIHQubnVtX3ZhbHVlc19yZWFkID49IGZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZ25vcmUgKFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9mbHVzaGVzIDogQmxvY2tlZF9mbHVzaC50KTtcbiAgICAgICAgKG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYE9rXG4gICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICAgICAgICAgdXBvblxuICAgICAgICAgICAgIChDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIGNvbnN1bWVyKVxuICAgICAgICAgICAgIChmdW4gZmx1c2hfcmVzdWx0IC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBmbHVzaF9yZXN1bHQpKTtcbiAgICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcblxuKCogW2NvbnN1bWVfYWxsIHRdIHJlYWRzIGFsbCB0aGUgZWxlbWVudHMgaW4gW3RdLiAqKVxubGV0IGNvbnN1bWVfYWxsIHQgY29uc3VtZXIgPVxuICBsZXQgcmVzdWx0ID0gdC5idWZmZXIgaW5cbiAgdC5idWZmZXIgPC0gUXVldWUuY3JlYXRlICgpO1xuICB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhOihRdWV1ZS5sZW5ndGggcmVzdWx0KTtcbiAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgcmVzdWx0XG47O1xuXG5sZXQgY29uc3VtZV9vbmUgdCBjb25zdW1lciA9XG4gIGFzc2VydCAobGVuZ3RoIHQgPj0gMSk7XG4gIGxldCByZXN1bHQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJ1ZmZlciBpblxuICB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhOjE7XG4gIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHJlc3VsdFxuOztcblxubGV0IGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lciA9XG4gIGFzc2VydCAobWF4X3F1ZXVlX2xlbmd0aCA+PSAwKTtcbiAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA+PSBsZW5ndGggdFxuICB0aGVuIGNvbnN1bWVfYWxsIHQgY29uc3VtZXJcbiAgZWxzZSAoXG4gICAgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YTptYXhfcXVldWVfbGVuZ3RoO1xuICAgIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlIH5jYXBhY2l0eTptYXhfcXVldWVfbGVuZ3RoICgpIGluXG4gICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnQuYnVmZmVyIH5kc3Q6cmVzdWx0IH5sZW46bWF4X3F1ZXVlX2xlbmd0aCAoKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgICByZXN1bHQpXG47O1xuXG5sZXQgc2V0X3NpemVfYnVkZ2V0IHQgc2l6ZV9idWRnZXQgPVxuICBsZXQgc2l6ZV9idWRnZXQgPSB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCBpblxuICB0LnNpemVfYnVkZ2V0IDwtIHNpemVfYnVkZ2V0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHJlc2VydmVfc3BhY2UgdCBuID1cbiAgaWYgbiA8IDAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcInJlc2VydmluZyBuZWdhdGl2ZSBzcGFjZVwiIChuIDogaW50KV07XG4gIGxldCByZXNlcnZlZF9zcGFjZSA9IHQucmVzZXJ2ZWRfc3BhY2UgKyBuIGluXG4gIGlmIHJlc2VydmVkX3NwYWNlIDwgMFxuICB0aGVuXG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJvdmVyZmxvdyB3aGVuIHJlc2VydmluZyBzcGFjZVwiICh0LnJlc2VydmVkX3NwYWNlIDogaW50KSAobiA6IGludCldO1xuICB0LnJlc2VydmVkX3NwYWNlIDwtIHJlc2VydmVkX3NwYWNlO1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IGZpbGxfYmxvY2tlZF9yZWFkcyB0ID1cbiAgd2hpbGUgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKSkgJiYgbm90IChpc19lbXB0eSB0KSBkb1xuICAgIGxldCBibG9ja2VkX3JlYWQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfcmVhZHMgaW5cbiAgICBsZXQgY29uc3VtZXIgPSBibG9ja2VkX3JlYWQuY29uc3VtZXIgaW5cbiAgICBtYXRjaCBibG9ja2VkX3JlYWQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGBPa1xuICAgIHwgT25lIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpXG4gICAgfCBBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKSlcbiAgZG9uZVxuOztcblxubGV0IGRlY3JlYXNlX3Jlc2VydmVkX3NwYWNlIHQgbiA9IHQucmVzZXJ2ZWRfc3BhY2UgPC0gSW50Lm1heCAwICh0LnJlc2VydmVkX3NwYWNlIC0gbilcblxuKCogY2hlY2tzIGFsbCBpbnZhcmlhbnRzLCBjYWxscyBhIHBhc3NlZCBpbiBmIHRvIGhhbmRsZSBhIHdyaXRlLCB0aGVuIHVwZGF0ZXMgcmVhZHMgYW5kXG4gICBwdXNoYmFjayAqKVxubGV0IHN0YXJ0X3dyaXRlIHQgfnNpemUgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJ3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIndyaXRlIHRvIGNsb3NlZCBwaXBlXCIgfnBpcGU6KHQgOiAoXywgXykgdCldO1xuICBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB0IHNpemVcbjs7XG5cbmxldCBmaW5pc2hfd3JpdGUgdCA9XG4gIGZpbGxfYmxvY2tlZF9yZWFkcyB0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbSA9XG4gIHN0YXJ0X3dyaXRlIHQgfnNpemU6KFF1ZXVlLmxlbmd0aCBmcm9tKTtcbiAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOmZyb20gfmRzdDp0LmJ1ZmZlciAoKTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB0cmFuc2Zlcl9pbiB0IH5mcm9tID1cbiAgdHJhbnNmZXJfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb20gPVxuICBzdGFydF93cml0ZSB0IH5zaXplOihRdWV1ZS5sZW5ndGggZnJvbSk7XG4gIFF1ZXVlLml0ZXIgZnJvbSB+ZjooZnVuIHggLT4gUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB4KTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbigqIFt3cml0ZSddIGlzIHVzZWQgaW50ZXJuYWxseSAqKVxubGV0IHdyaXRlJyB0IHEgPSB0cmFuc2Zlcl9pbiB0IH5mcm9tOnFcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZSA9XG4gIHN0YXJ0X3dyaXRlIHQgfnNpemU6MTtcbiAgUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB2YWx1ZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZSB0IHZhbHVlID1cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgd3JpdGVfd2hlbl9yZWFkeSB0IH5mID1cbiAgbGV0JW1hcCAoKSA9IHB1c2hiYWNrIHQgaW5cbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiBgQ2xvc2VkIGVsc2UgYE9rIChmIChmdW4geCAtPiB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCkpXG47O1xuXG5sZXQgd3JpdGVfaWZfb3BlbiB0IHggPSBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlIHQgeCBlbHNlIHJldHVybiAoKVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIHQgeCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHhcbjs7XG5cbmxldCBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyA/Y29uc3VtZXIgdCA9XG4gIG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjb25zdW1lciAtPlxuICAgIGlmIHQuaWQgPD4gQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lclxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJBdHRlbXB0IHRvIHVzZSBjb25zdW1lciB3aXRoIHdyb25nIHBpcGVcIlxuICAgICAgICAgICAgKGNvbnN1bWVyIDogQ29uc3VtZXIudClcbiAgICAgICAgICAgIH5waXBlOih0IDogXyBSZWFkZXIudCldXG47O1xuXG5sZXQgc3RhcnRfcmVhZCA/Y29uc3VtZXIgdCBsYWJlbCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBsYWJlbCB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyXG47O1xuXG5sZXQgZ2VuX3JlYWRfbm93ID9jb25zdW1lciB0IGNvbnN1bWUgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkX25vd1wiID9jb25zdW1lcjtcbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYEVvZiBlbHNlIGBOb3RoaW5nX2F2YWlsYWJsZVxuICBlbHNlIChcbiAgICBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgKCogZnJvbSBbaW52YXJpYW50XSBhbmQgW25vdCAoaXNfZW1wdHkgdCldICopXG4gICAgYE9rIChjb25zdW1lIHQgY29uc3VtZXIpKVxuOztcblxubGV0IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoID1cbiAgbWF0Y2ggbWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gIHwgU29tZSBtYXhfcXVldWVfbGVuZ3RoIC0+XG4gICAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA8PSAwXG4gICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIm1heF9xdWV1ZV9sZW5ndGggPD0gMFwiIChtYXhfcXVldWVfbGVuZ3RoIDogaW50KV07XG4gICAgbWF4X3F1ZXVlX2xlbmd0aFxuOztcblxubGV0IHJlYWRfbm93JyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIChmdW4gdCBjb25zdW1lciAtPiBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpXG47O1xuXG5sZXQgcmVhZF9ub3cgP2NvbnN1bWVyIHQgPSBnZW5fcmVhZF9ub3cgdCA/Y29uc3VtZXIgY29uc3VtZV9vbmVcbmxldCBwZWVrIHQgPSBRdWV1ZS5wZWVrIHQuYnVmZmVyXG5cbmxldCBjbGVhciB0ID1cbiAgbWF0Y2ggcmVhZF9ub3cnIHQgd2l0aFxuICB8IGBFb2YgfCBgTm90aGluZ19hdmFpbGFibGUgfCBgT2sgXyAtPiAoKVxuOztcblxubGV0IHJlYWQnID9jb25zdW1lciA/bWF4X3F1ZXVlX2xlbmd0aCB0ID1cbiAgbGV0IG1heF9xdWV1ZV9sZW5ndGggPSBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCBpblxuICBzdGFydF9yZWFkIHQgXCJyZWFkJ1wiID9jb25zdW1lcjtcbiAgbWF0Y2ggcmVhZF9ub3cnIHQgP2NvbnN1bWVyIH5tYXhfcXVldWVfbGVuZ3RoIHdpdGhcbiAgfCAoYE9rIF8gfCBgRW9mKSBhcyByIC0+IHJldHVybiByXG4gIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfcmVhZHNcbiAgICAgICAgKEJsb2NrZWRfcmVhZC5jcmVhdGUgKEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpKSBjb25zdW1lcikpXG47O1xuXG5sZXQgcmVhZCA/Y29uc3VtZXIgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgdGhlbiByZXR1cm4gYEVvZlxuICAgIGVsc2VcbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChPbmUgaXZhcikpIGNvbnN1bWVyKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHJldHVybiAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSkpXG47O1xuXG5sZXQgcmVhZF9leG4gP2NvbnN1bWVyIHQgPVxuICBtYXRjaCVtYXAgcmVhZCA/Y29uc3VtZXIgdCB3aXRoXG4gIHwgYE9rIHZhbHVlIC0+IHZhbHVlXG4gIHwgYEVvZiAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leG46IHJlY2VpdmVkIEVPRlwiXVxuOztcblxubGV0IHZhbHVlc19hdmFpbGFibGUgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInZhbHVlc19hdmFpbGFibGVcIjtcbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiBgT2tcbiAgZWxzZSBpZiBpc19jbG9zZWQgdFxuICB0aGVuIHJldHVybiBgRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIFF1ZXVlLmxhc3QgdC5ibG9ja2VkX3JlYWRzIHdpdGhcbiAgICB8IFNvbWUgeyBjb25zdW1lciA9IE5vbmU7IHdhbnRzID0gWmVybyBpdmFyIH0gLT5cbiAgICAgICgqIFRoaXMgY2FzZSBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIG11bHRpcGxlIGNhbGxzIHRvIFt2YWx1ZXNfYXZhaWxhYmxlXSBpblxuICAgICAgICAgc2VxdWVuY2UuICBJdCBjYXVzZXMgdGhlbSB0byBhbGwgc2hhcmUgdGhlIHNhbWUgaXZhciwgcmF0aGVyIHRoYW4gYWxsb2NhdGVcbiAgICAgICAgIGFuIGl2YXIgcGVyIGNhbGwuICopXG4gICAgICBJdmFyLnJlYWQgaXZhclxuICAgIHwgXyAtPlxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBRdWV1ZS5lbnF1ZXVlIHQuYmxvY2tlZF9yZWFkcyAoQmxvY2tlZF9yZWFkLihjcmVhdGUgKFplcm8gaXZhcikpIE5vbmUpKSlcbjs7XG5cbmxldCByZWFkX2Nob2ljZSB0ID0gY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIHQpIChmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT4gcmVhZF9ub3cgdClcblxubGV0IHJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG4gdCBoZXJlID1cbiAgRGVmZXJyZWQuQ2hvaWNlLm1hcCAocmVhZF9jaG9pY2UgdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCAoYE9rIF8gfCBgRW9mKSBhcyB4IC0+IHhcbiAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIlBpcGUucmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4bjogY2hvaWNlIHdhcyBlbmFibGVkIGJ1dCBwaXBlIGlzIGVtcHR5OyBcXFxuICAgICAgICAgICB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbiB3aXRoIG9uZSBvciBtb3JlIG90aGVyIGNvbnN1bWVyc1wiXG4gICAgICAgICAgICAoaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXSlcbjs7XG5cbigqIFtyZWFkX2V4YWN0bHkgdCB+bnVtX3ZhbHVlc10gbG9vcHMsIGdldHRpbmcgeW91IGFsbCBbbnVtX3ZhbHVlc10gaXRlbXMsIHVwXG4gICB0byBFT0YuICopXG5sZXQgcmVhZF9leGFjdGx5ID9jb25zdW1lciB0IH5udW1fdmFsdWVzID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9leGFjdGx5XCIgP2NvbnN1bWVyO1xuICBpZiBudW1fdmFsdWVzIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leGFjdGx5IGdvdCBudW1fdmFsdWVzIDw9IDBcIiAobnVtX3ZhbHVlcyA6IGludCldO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2ggLT5cbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBRdWV1ZS5sZW5ndGggcmVzdWx0IGluXG4gICAgICBhc3NlcnQgKGFscmVhZHlfcmVhZCA8PSBudW1fdmFsdWVzKTtcbiAgICAgIGlmIGFscmVhZHlfcmVhZCA9IG51bV92YWx1ZXNcbiAgICAgIHRoZW4gSXZhci5maWxsIGZpbmlzaCAoYEV4YWN0bHkgcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICByZWFkJyA/Y29uc3VtZXIgdCB+bWF4X3F1ZXVlX2xlbmd0aDoobnVtX3ZhbHVlcyAtIGFscmVhZHlfcmVhZClcbiAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoIChpZiBhbHJlYWR5X3JlYWQgPSAwIHRoZW4gYEVvZiBlbHNlIGBGZXdlciByZXN1bHQpXG4gICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgaW5cbiAgICBsb29wICgpKVxuOztcblxubGV0IGRvd25zdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgaWYgTGlzdC5pc19lbXB0eSB0LmNvbnN1bWVyc1xuICAgIHRoZW4gcmV0dXJuIGBPa1xuICAgIGVsc2VcbiAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgKExpc3QubWFwIHQuY29uc3VtZXJzIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQpXG4gIGVsc2VcbiAgICAoKiBbdF0gbWlnaHQgYmUgY2xvc2VkLiAgQnV0IHRoZSByZWFkIGVuZCBjYW4ndCBiZSBjbG9zZWQsIGJlY2F1c2UgaWYgaXQgd2VyZSwgdGhlblxuICAgICAgIFt0XSB3b3VsZCBiZSBlbXB0eS4gIElmIHRoZSB3cml0ZSBlbmQgaXMgY2xvc2VkIGJ1dCBub3QgdGhlIHJlYWQgZW5kLCB0aGVuIHdlIHdhbnRcbiAgICAgICB0byBlbnF1ZXVlIGEgYmxvY2tlZCBmbHVzaCBiZWNhdXNlIHRoZSBlbnF1ZXVlZCB2YWx1ZXMgbWF5IGdldCByZWFkLiAqKVxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlYWR5IC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlXG4gICAgICAgIHQuYmxvY2tlZF9mbHVzaGVzXG4gICAgICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA9IHQubnVtX3ZhbHVlc19yZWFkICsgbGVuZ3RoIHQ7IHJlYWR5IH0pXG47O1xuXG4oKiBJbiBwcmFjdGljZSwgYWxvbmcgd2l0aCBbTGluay5jcmVhdGVdIGFuZCBbYWRkX3Vwc3RyZWFtX2ZsdXNoZWRdLCBbdXBzdHJlYW1fZmx1c2hlZF1cbiAgIHRyYXZlcnNlcyB0aGUgZ3JhcGggb2YgbGlua2VkIHBpcGVzIHVwIHRvIHRoZSBoZWFkcyBhbmQgdGhlbiBjYWxscyBbZG93bnN0cmVhbV9mbHVzaGVkXVxuICAgb24gdGhlbS4gKilcbmxldCB1cHN0cmVhbV9mbHVzaGVkIHQgPVxuICBpZiBCYWcuaXNfZW1wdHkgdC51cHN0cmVhbV9mbHVzaGVkc1xuICB0aGVuIGRvd25zdHJlYW1fZmx1c2hlZCB0XG4gIGVsc2VcbiAgICBCYWcudG9fbGlzdCB0LnVwc3RyZWFtX2ZsdXNoZWRzXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBmIC0+IGYgKCkpXG4gICAgfD4gRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuOztcblxubGV0IGFkZF91cHN0cmVhbV9mbHVzaGVkIHQgdXBzdHJlYW1fZmx1c2hlZCA9IEJhZy5hZGQgdC51cHN0cmVhbV9mbHVzaGVkcyB1cHN0cmVhbV9mbHVzaGVkXG5cbmxldCBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgbGV0IGNvbnN1bWVyID0gQ29uc3VtZXIuY3JlYXRlIH5waXBlX2lkOnQuaWQgfmRvd25zdHJlYW1fZmx1c2hlZCBpblxuICB0LmNvbnN1bWVycyA8LSBjb25zdW1lciA6OiB0LmNvbnN1bWVycztcbiAgY29uc3VtZXJcbjs7XG5cbigqIEEgW0xpbmsudF0gbGlua3MgZmx1c2hpbmcgb2YgdHdvIHBpcGVzIHRvZ2V0aGVyLiAqKVxubW9kdWxlIExpbmsgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVwc3RyZWFtOihfLCBfKSBwaXBlIC0+IGRvd25zdHJlYW06KF8sIF8pIHBpcGUgLT4gdFxuICB2YWwgY29uc3VtZXIgOiB0IC0+IENvbnN1bWVyLnRcblxuICAoKiBbdW5saW5rX3Vwc3RyZWFtXSByZW1vdmVzIGRvd25zdHJlYW0ncyByZWZlcmVuY2UgdG8gdXBzdHJlYW0uICopXG5cbiAgdmFsIHVubGlua191cHN0cmVhbSA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdW5wYWNrZWQgPVxuICAgIHsgZG93bnN0cmVhbSA6ICgnYSwgJ2IpIHRcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudFxuICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA6ICh1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudCkgQmFnLkVsdC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBjb25zdW1lciAoVCB0KSA9IHQuY29uc3VtZXJcblxuICBsZXQgY3JlYXRlIH51cHN0cmVhbSB+ZG93bnN0cmVhbSA9XG4gICAgVFxuICAgICAgeyBkb3duc3RyZWFtXG4gICAgICA7IGNvbnN1bWVyID1cbiAgICAgICAgICBhZGRfY29uc3VtZXIgdXBzdHJlYW0gfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSlcbiAgICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA9XG4gICAgICAgICAgYWRkX3Vwc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSAoZnVuICgpIC0+IHVwc3RyZWFtX2ZsdXNoZWQgdXBzdHJlYW0pXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IHVubGlua191cHN0cmVhbSAoVCB0KSA9XG4gICAgQmFnLnJlbW92ZSB0LmRvd25zdHJlYW0udXBzdHJlYW1fZmx1c2hlZHMgdC51cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZsdXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnN1bWVyIG9mIENvbnN1bWVyLnRcbiAgICB8IFdoZW5fdmFsdWVfcHJvY2Vzc2VkXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZm9sZF9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgID8oZmx1c2hlZCA9IEZsdXNoZWQuV2hlbl92YWx1ZV9yZWFkKVxuICAgICAgdFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gID1cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBtYXRjaCBmbHVzaGVkIHdpdGhcbiAgICB8IFdoZW5fdmFsdWVfcmVhZCAtPiBOb25lXG4gICAgfCBDb25zdW1lciBjb25zdW1lciAtPiBTb21lIGNvbnN1bWVyXG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZCAtPlxuICAgICAgKCogVGhlIGZhY3QgdGhhdCBcIm5vIGNvbnN1bWVyXCIgYmVoYXZlcyBkaWZmZXJlbnQgZnJvbSBcInRyaXZpYWwgY29uc3VtZXJcIiBpcyB3ZWlyZCxcbiAgICAgICAgIGJ1dCB0aGF0J3MgaG93IHRoZSBjb25zdW1lciBtYWNoaW5lcnkgd29ya3MuICopXG4gICAgICBTb21lIChhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT4gcmV0dXJuIGBPaykpXG4gIGluXG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3ZhbHVlc19hdmFpbGFibGUgdCA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS5cbiAgICAgICBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgKCogWzFdIEZvciBuZXcgZW1wdHkgcGlwZXMgY3JlYXRlZCBhdCB0b3AtbGV2ZWwgd2Ugd2FudCB0byBhdm9pZCBpbW1lZGlhdGVseVxuICAgICAgIHNjaGVkdWxpbmcgYSBqb2Igb24gdGhlIHNjaGVkdWxlciAoc2VlIFtTY2hlZHVsZXIucmFpc2VfaWZfYW55X2pvYnNfd2VyZV9zY2hlZHVsZWRdKS5cbiAgICAgICBKdXN0IFtyZXR1cm4gKCkgPj4+XSBkb2Vzbid0IHdvcms6IFtyZXR1cm4gKCldIGNyZWF0ZXMgYSBmdWxsIGl2YXIgdGhhdCBjYXVzZXNcbiAgICAgICBbPj4+XSB0byBzY2hlZHVsZSBhIGpvYi4gKilcbiAgICB2YWx1ZXNfYXZhaWxhYmxlIHRcbiAgICA+Pj4gZnVuIChfIDogWyBgT2sgfCBgRW9mIF0pIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCBiXG4gICAgICB8IGBPayB2IC0+IGYgYiB2IGNvbnRpbnVlXG4gICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IGxvb3AgYlxuICAgIGFuZCBjb250aW51ZSBiID1cbiAgICAgIE9wdGlvbi5pdGVyIGNvbnN1bWVyIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW07XG4gICAgICBsb29wIGJcbiAgICBpblxuICAgIGxvb3AgaW5pdClcbjs7XG5cbmxldCBmb2xkJyA/Zmx1c2hlZCA/bWF4X3F1ZXVlX2xlbmd0aCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgcSBsb29wIC0+XG4gICAgZiBiIHEgPj4+IGxvb3ApXG47O1xuXG5sZXQgZm9sZCA/Zmx1c2hlZCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgYSBsb29wIC0+IGYgYiBhID4+PiBsb29wKVxuOztcblxubGV0IGZvbGRfd2l0aG91dF9wdXNoYmFjayA/Y29uc3VtZXIgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuXG4gICAgcmVhZF9ub3dcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGIgYSBsb29wIC0+IGxvb3AgKGYgYiBhKSlcbiAgICA/Zmx1c2hlZDpcbiAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgYyAtPiBTb21lIChDb25zdW1lciBjKSlcbjs7XG5cbmxldCB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpIGYgYSA9XG4gIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICB0aGVuIGYgYVxuICBlbHNlIChcbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAoZnVuICgpIC0+IGYgYSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgKE1vbml0b3IuZXh0cmFjdF9leG4gZXhuKSlcbjs7XG5cbmxldCBpdGVyJyA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+ZiA9XG4gIGZvbGQnID9tYXhfcXVldWVfbGVuZ3RoID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBxIC0+XG4gICAgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgP2NvbnRpbnVlX29uX2Vycm9yIGYgcSlcbjs7XG5cbmxldCBpdGVyID9jb250aW51ZV9vbl9lcnJvciA/Zmx1c2hlZCB0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgbG9vcCAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIGEgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuOztcblxuKCogW2l0ZXJfd2l0aG91dF9wdXNoYmFja10gaXMgYSBjb21tb24gY2FzZSwgc28gd2UgaW1wbGVtZW50IGl0IGluIGFuIG9wdGltaXplZCBtYW5uZXIsXG4gICByYXRoZXIgdGhhbiB2aWEgW2l0ZXJdLiAgVGhlIGltcGxlbWVudGF0aW9uIHJlYWRzIG9ubHkgb25lIGVsZW1lbnQgYXQgYSB0aW1lLCBzbyB0aGF0XG4gICBpZiBbZl0gY2xvc2VzIFt0XSBvciByYWlzZXMsIG5vIG1vcmUgZWxlbWVudHMgd2lsbCBiZSByZWFkLiAqKVxubGV0IGl0ZXJfd2l0aG91dF9wdXNoYmFja1xuICAgICAgP2NvbnN1bWVyXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpXG4gICAgICA/bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgICAgdFxuICAgICAgfmZcbiAgPVxuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lcjtcbiAgbGV0IG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPVxuICAgIG1hdGNoIG1heF9pdGVyYXRpb25zX3Blcl9qb2Igd2l0aFxuICAgIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBTb21lIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgLT5cbiAgICAgIGlmIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPD0gMFxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIml0ZXJfd2l0aG91dF9wdXNoYmFjayBnb3Qgbm9uLXBvc2l0aXZlIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcIlxuICAgICAgICAgICAgICAobWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA6IGludCldO1xuICAgICAgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICBpblxuICBsZXQgZiA9XG4gICAgaWYgbm90IGNvbnRpbnVlX29uX2Vycm9yXG4gICAgdGhlbiBmXG4gICAgZWxzZVxuICAgICAgZnVuIGEgLT5cbiAgICAgICAgdHJ5IGYgYSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuXG4gIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3ZhbHVlc19hdmFpbGFibGUgdCA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS5cbiAgICAgICBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgdmFsdWVzX2F2YWlsYWJsZSB0XG4gICAgPj4+IGZ1biAoXyA6IFsgYE9rIHwgYEVvZiBdKSAtPlxuICAgIGxldCByZWMgc3RhcnQgKCkgPSBsb29wIH5yZW1haW5pbmc6bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgIGFuZCBsb29wIH5yZW1haW5pbmcgPVxuICAgICAgaWYgcmVtYWluaW5nID0gMFxuICAgICAgdGhlbiByZXR1cm4gKCkgPj4+IGZ1biAoKSAtPiBzdGFydCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCAoKVxuICAgICAgICB8IGBPayBhIC0+XG4gICAgICAgICAgZiBhO1xuICAgICAgICAgIGxvb3AgfnJlbWFpbmluZzoocmVtYWluaW5nIC0gMSlcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBzdGFydCAoKSlcbiAgICBpblxuICAgIHN0YXJ0ICgpKVxuOztcblxubGV0IGRyYWluIHQgPSBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG5sZXQgZHJhaW5fYW5kX2NvdW50IHQgPSBmb2xkJyB0IH5pbml0OjAgfmY6KGZ1biBzdW0gcSAtPiByZXR1cm4gKHN1bSArIFF1ZXVlLmxlbmd0aCBxKSlcblxubGV0IHJlYWRfYWxsIGlucHV0ID1cbiAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQlbWFwICgpID1cbiAgICBpdGVyJyBpbnB1dCB+ZjooZnVuIHEgLT5cbiAgICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpxIH5kc3Q6cmVzdWx0ICgpO1xuICAgICAgcmV0dXJuICgpKVxuICBpblxuICByZXN1bHRcbjs7XG5cbmxldCB0b19saXN0IHIgPSByZWFkX2FsbCByID4+fCBRdWV1ZS50b19saXN0XG5cbmxldCB0b19zdHJlYW1fZGVwcmVjYXRlZCB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KVxuICAgID4+PiBmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbigqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBbb2Zfc3RyZWFtX2RlcHJlY2F0ZWRdIGRvZXMgYXMgbXVjaCBiYXRjaGluZyBhcyBwb3NzaWJsZS4gIEl0XG4gICBncmFicyBhcyBtYW55IGl0ZW1zIGFzIGFyZSBhdmFpbGFibGUgaW50byBhbiBpbnRlcm5hbCBxdWV1ZS4gIE9uY2UgaXQgaGFzIGdyYWJiZWRcbiAgIGV2ZXJ5dGhpbmcsIGl0IHdyaXRlcyBpdCB0byB0aGUgcGlwZSBhbmQgdGhlbiBibG9ja3Mgd2FpdGluZyBmb3IgdGhlIG5leHQgZWxlbWVudCBmcm9tXG4gICB0aGUgc3RyZWFtLlxuXG4gICBUaGVyZSdzIG5vIHBvc3NpYmlsaXR5IHRoYXQgd2UnbGwgc3RhcnZlIHRoZSBwaXBlIHJlYWRpbmcgYW4gZW5kbGVzcyBzdHJlYW0sIGp1c3RcbiAgIGFjY3VtdWxhdGluZyB0aGUgZWxlbWVudHMgaW50byBvdXIgcHJpdmF0ZSBxdWV1ZSBmb3JldmVyIHdpdGhvdXQgZXZlciB3cml0aW5nIHRoZW1cbiAgIGRvd25zdHJlYW0gdG8gdGhlIHBpcGUuICBXaHk/IGJlY2F1c2Ugd2hpbGUgd2UncmUgcnVubmluZywgdGhlIHN0cmVhbS1wcm9kdWNlciAqaXNuJ3QqXG4gICBydW5uaW5nIC0tIHRoZXJlIGFyZSBubyBBc3luYyBibG9jayBwb2ludHMgaW4gdGhlIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3AuICBTbyB0aGVcbiAgIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3Agd2lsbCBldmVudHVhbGx5IGNhdGNoIHVwIHRvIHRoZSBjdXJyZW50IHN0cmVhbSB0YWlsLCBhdCB3aGljaFxuICAgcG9pbnQgd2UnbGwgZG8gdGhlIHBpcGUtd3JpdGUgYW5kIHRoZW4gYmxvY2sgb24gdGhlIHN0cmVhbS4uLiB0aHVzIGdpdmluZyB0aGVcbiAgIHN0cmVhbS1wcm9kdWNlciBhIGNoYW5jZSB0byBtYWtlIG1vcmUgZWxlbWVudHMuXG5cbiAgIE9uZSBjYW4ndCBpbXBsZW1lbnQgW29mX3N0cmVhbV0gdXNpbmcgW1N0cmVhbS5pdGVyXSBvciBbU3RyZWFtLml0ZXInXSBiZWNhdXNlIHlvdVxuICAgbmVlZCB0byBiZSBhYmxlIHRvIHN0b3AgZWFybHkgd2hlbiB0aGUgY29uc3VtZXIgY2xvc2VzIHRoZSBwaXBlLiAgQWxzbywgdXNpbmcgZWl0aGVyXG4gICBvZiB0aG9zZSB3b3VsZCBlbnRhaWwgc2lnbmlmaWNhbnRseSBtb3JlIGRlZmVycmVkIG92ZXJoZWFkLCB3aGVyZWFzIHRoZSBiZWxvd1xuICAgaW1wbGVtZW50YXRpb24gdXNlcyBhIGRlZmVycmVkIG9ubHkgd2hlbiBpdCBuZWVkcyB0byB3YWl0IGZvciBkYXRhIGZyb20gdGhlIHN0cmVhbS4gKilcbmxldCBvZl9zdHJlYW1fZGVwcmVjYXRlZCBzID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHEgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHRyYW5zZmVyICgpID1cbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHEpXG4gICAgdGhlblxuICAgICAgKCogQ2FuIG5vdCBwdXNoYmFjayBvbiB0aGUgc3RyZWFtLCBzbyBpZ25vcmUgdGhlIHB1c2hiYWNrIG9uIHRoZSBwaXBlLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKHdyaXRlJyB3IHEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzID1cbiAgICBhc3NlcnQgKG5vdCAoaXNfY2xvc2VkIHcpKTtcbiAgICBsZXQgbmV4dF9kZWZlcnJlZCA9IFN0cmVhbS5uZXh0IHMgaW5cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIG5leHRfZGVmZXJyZWQgd2l0aFxuICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0XG4gICAgfCBOb25lIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIHVwb24gbmV4dF9kZWZlcnJlZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0XG4gIGFuZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0IG5leHQgPSBpZiBub3QgKGlzX2Nsb3NlZCB3KSB0aGVuIGxvb3BfbmV4dCBuZXh0XG4gIGFuZCBsb29wX25leHQgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIGNsb3NlIHdcbiAgICB8IENvbnMgKHgsIHMpIC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlIHEgeDtcbiAgICAgIGxvb3Agc1xuICBpblxuICBsb29wIHM7XG4gIHJcbjs7XG5cbmxldCB0cmFuc2Zlcl9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgIHdyaXRlXG4gICAgICBpbnB1dFxuICAgICAgb3V0cHV0XG4gICAgICB+ZlxuICA9XG4gIGlmICFjaGVja19pbnZhcmlhbnRcbiAgdGhlbiAoXG4gICAgaW52YXJpYW50IGlucHV0O1xuICAgIGludmFyaWFudCBvdXRwdXQpO1xuICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dCB+ZG93bnN0cmVhbTpvdXRwdXQgaW5cbiAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICgqIFdoZW4gd2UncmUgZG9uZSB3aXRoIFtpbnB1dF0sIHdlIHVubGluayB0byByZW1vdmUgcG9pbnRlcnMgZnJvbVxuICAgICBbb3V0cHV0XSB0byBbaW5wdXRdLCB3aGljaCB3b3VsZCBjYXVzZSBhIHNwYWNlIGxlYWsgaWYgd2UgaGFkIHNpbmdsZSBsb25nLWxpdmVkXG4gICAgIG91dHB1dCBpbnRvIHdoaWNoIHdlIHRyYW5zZmVyIGxvdHMgb2Ygc2hvcnQtbGl2ZWQgaW5wdXRzLiAqKVxuICBsZXQgdW5saW5rICgpID0gTGluay51bmxpbmtfdXBzdHJlYW0gbGluayBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKCkgPVxuICAgICAgY2hvb3NlIFsgY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIGlucHV0KSBpZ25vcmU7IGNob2ljZSAoY2xvc2VkIG91dHB1dCkgaWdub3JlIF1cbiAgICBpblxuICAgICgqIFdlIGRvIFtpbnB1dF9hdmFpbGFibGVfb3Jfb3V0cHV0X2Nsb3NlZCAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZFxuICAgICAgIGFzeW5jaHJvbm91c2x5LiBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IG91dHB1dF9jbG9zZWQgKCkgPVxuICAgICAgY2xvc2VfcmVhZCBpbnB1dDtcbiAgICAgIHVubGluayAoKTtcbiAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBpZiBpc19jbG9zZWQgb3V0cHV0XG4gICAgICB0aGVuIG91dHB1dF9jbG9zZWQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCByZWFkX25vdyBpbnB1dCB+Y29uc3VtZXIgd2l0aFxuICAgICAgICB8IGBFb2YgLT5cbiAgICAgICAgICB1bmxpbmsgKCk7XG4gICAgICAgICAgSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgICB8IGBPayB4IC0+IGYgeCBjb250aW51ZVxuICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBpbnB1dF9hdmFpbGFibGVfb3Jfb3V0cHV0X2Nsb3NlZCAoKSA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgYW5kIGNvbnRpbnVlIHkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHB1c2hiYWNrID0gd3JpdGUgb3V0cHV0IHkgaW5cbiAgICAgICAgQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgcHVzaGJhY2sgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCB0cmFuc2ZlcicgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0IH5mID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IHRyYW5zZmVyIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiByZWFkX25vdyB3cml0ZSBpbnB1dCBvdXRwdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcbjs7XG5cbmxldCB0cmFuc2Zlcl9pZCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCBvdXRwdXQgPVxuICB0cmFuc2Zlcl9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IG91dHB1dCB+ZjooZnVuIHEgayAtPiBrIHEpXG47O1xuXG5sZXQgbWFwX2dlbiByZWFkIHdyaXRlIGlucHV0IH5mID1cbiAgbGV0IGluZm8gPSBPcHRpb24ubWFwIGlucHV0LmluZm8gfmY6KGZ1biBpbmZvIC0+IFslc2V4cCBNYXBwZWQgKGluZm8gOiBTZXhwLnQpXSkgaW5cbiAgbGV0IHJlc3VsdCwgb3V0cHV0ID0gY3JlYXRlID9pbmZvICgpIGluXG4gIHVwb24gKHRyYW5zZmVyX2dlbiByZWFkIHdyaXRlIGlucHV0IG91dHB1dCB+ZikgKGZ1biAoKSAtPiBjbG9zZSBvdXRwdXQpO1xuICByZXN1bHRcbjs7XG5cbmxldCBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcF9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcblxubGV0IGNvbmNhdF9tYXBfbGlzdCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuY29uY2F0X21hcCBxIH5mKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biBxIC0+XG4gICAgRGVmZXJyZWQuUXVldWUuZmlsdGVyX21hcCB+aG93OmBTZXF1ZW50aWFsIHEgfmYpXG47O1xuXG5sZXQgZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuZmlsdGVyX21hcCBxIH5mOihmdW4geCAtPiBpZiBpc19yZWFkX2Nsb3NlZCBpbnB1dCB0aGVuIE5vbmUgZWxzZSBmIHgpKSlcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjY3VtID0gcmVmIGluaXQgaW5cbiAgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biB4IC0+XG4gICAgbGV0JW1hcCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjdW0gPSByZWYgaW5pdCBpblxuICBmaWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4geCAtPlxuICAgIGxldCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGZvbGRpbmdfZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZjooZnVuIGFjY3VtIGEgLT5cbiAgICBsZXQgYWNjdW0sIGIgPSBmIGFjY3VtIGEgaW5cbiAgICBhY2N1bSwgU29tZSBiKVxuOztcblxubGV0IGZpbHRlciBpbnB1dCB+ZiA9IGZpbHRlcl9tYXAgaW5wdXQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5cbmxldCBvZl9xdWV1ZV9pbnRlcm5hbCBxdWV1ZSA9XG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldDowIH5pbmZvOk5vbmUgfmluaXRpYWxfYnVmZmVyOnF1ZXVlIGluXG4gIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9xdWV1ZSBxdWV1ZSA9IG9mX3F1ZXVlX2ludGVybmFsIChRdWV1ZS5jb3B5IHF1ZXVlKVxubGV0IG9mX2xpc3QgbCA9IG9mX3F1ZXVlX2ludGVybmFsIChRdWV1ZS5vZl9saXN0IGwpXG5sZXQgZW1wdHkgKCkgPSBvZl9saXN0IFtdXG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCByZWFkZXIsIHdyaXRlciA9IGNyZWF0ZSAoKSBpblxuICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciB4O1xuICBjbG9zZSB3cml0ZXI7XG4gIHJlYWRlclxuOztcblxubGV0IHVuZm9sZCB+aW5pdDpzIH5mID1cbiAgKCogVG8gZ2V0IHNvbWUgYmF0Y2hpbmcsIHdlIHJ1biB0aGUgY29udGludWF0aW9uIGltbWVkaWF0ZWx5IGlmIHRoZSBkZWZlcnJlZCBpc1xuICAgICBkZXRlcm1pbmVkLiAgSG93ZXZlciwgd2UgYWx3YXlzIGNoZWNrIGZvciBwdXNoYmFjay4gIEJlY2F1c2Ugc2l6ZSBidWRnZXQgY2FuJ3QgYmVcbiAgICAgaW5maW5pdGUsIHRoZSBiZWxvdyBsb29wIGlzIGd1YXJhbnRlZWQgdG8gZXZlbnR1YWxseSB5aWVsZCB0byB0aGUgc2NoZWR1bGVyLiAqKVxuICBsZXQgKCA+Pj1+ICkgZCBmID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgIHwgTm9uZSAtPiBkID4+PSBmXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGNyZWF0ZV9yZWFkZXIgfmNsb3NlX29uX2V4Y2VwdGlvbjpmYWxzZSAoZnVuIHdyaXRlciAtPlxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgIGYgc1xuICAgICAgPj49fiBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IHJldHVybiAoKVxuICAgICAgfCBTb21lIChhLCBzKSAtPlxuICAgICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHRoZW4gcmV0dXJuICgpIGVsc2Ugd3JpdGUgd3JpdGVyIGEgPj49fiBmdW4gKCkgLT4gbG9vcCBzXG4gICAgaW5cbiAgICBsb29wIHMpXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICBjcmVhdGVfcmVhZGVyIH5jbG9zZV9vbl9leGNlcHRpb246ZmFsc2UgKGZ1biB3cml0ZXIgLT5cbiAgICBsZXQgcmVjIGVucXVldWVfbiBzZXF1ZW5jZSBpID1cbiAgICAgIGlmIGkgPD0gMFxuICAgICAgdGhlbiBzZXF1ZW5jZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgc2VxdWVuY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2VxdWVuY2VcbiAgICAgICAgfCBTb21lIChhLCBzZXF1ZW5jZSkgLT5cbiAgICAgICAgICBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB3cml0ZXIgMTtcbiAgICAgICAgICBRdWV1ZS5lbnF1ZXVlIHdyaXRlci5idWZmZXIgYTtcbiAgICAgICAgICBlbnF1ZXVlX24gc2VxdWVuY2UgKGkgLSAxKSlcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBzZXF1ZW5jZSA9XG4gICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHx8IFNlcXVlbmNlLmlzX2VtcHR5IHNlcXVlbmNlXG4gICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtzaXplOjBdIGhlcmUgYXMgd2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc2VxdWVuY2Ugc3RhdGljYWxseS4gV2UnbGxcbiAgICAgICAgICAgY2FsbCBbZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2VdIGFzIHdlIGdvLlxuICAgICAgICAgICAoYWx0aG91Z2ggcmVhbGlzdGljYWxseSwgaXQncyBpbXBvc3NpYmxlIGZvciB0aGUgdXNlciB0byByZXNlcnZlIHNwYWNlIGluXG4gICAgICAgICAgIHRoaXMgcGlwZSBiZWNhdXNlIHlvdSBuZWVkIGEgcGlwZSB3cml0ZXIgZm9yIHRoYXQsIGJ1dCBbb2Zfc2VxdWVuY2VdIHJldHVybnNcbiAgICAgICAgICAgYSByZWFkZXIpICopXG4gICAgICAgIHN0YXJ0X3dyaXRlIHdyaXRlciB+c2l6ZTowO1xuICAgICAgICBsZXQgc2VxdWVuY2UgPSBlbnF1ZXVlX24gc2VxdWVuY2UgKDEgKyB3cml0ZXIuc2l6ZV9idWRnZXQgLSBsZW5ndGggd3JpdGVyKSBpblxuICAgICAgICBmaW5pc2hfd3JpdGUgd3JpdGVyO1xuICAgICAgICBsZXQlYmluZCAoKSA9IHB1c2hiYWNrIHdyaXRlciBpblxuICAgICAgICBsb29wIHNlcXVlbmNlKVxuICAgIGluXG4gICAgbG9vcCBzZXF1ZW5jZSlcbjs7XG5cbnR5cGUgJ2EgdG9fc2VxdWVuY2VfZWx0ID1cbiAgfCBWYWx1ZSBvZiAnYVxuICB8IFdhaXRfZm9yIDogXyBEZWZlcnJlZC50IC0+IF8gdG9fc2VxdWVuY2VfZWx0XG5cbmxldCB0b19zZXF1ZW5jZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0OigpIH5mOihmdW4gKCkgLT5cbiAgICBtYXRjaCByZWFkX25vdyB0IHdpdGhcbiAgICB8IGBFb2YgLT4gTm9uZVxuICAgIHwgYE9rIGEgLT4gU29tZSAoVmFsdWUgYSwgKCkpXG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gU29tZSAoV2FpdF9mb3IgKHZhbHVlc19hdmFpbGFibGUgdCksICgpKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlX3BpcGUgaW5wdXRzID1cbiAgbGV0IG91dHB1dCwgb3V0cHV0X3dyaXRlciA9IGNyZWF0ZSB+aW5mbzpbJXNleHAgXCJQaXBlLmludGVybGVhdmVcIl0gKCkgaW5cbiAgKCogV2Uga2VlcCBhIHJlZmVyZW5jZSBjb3VudCBvZiBhbGwgdGhlIHBpcGVzIHRoYXQgW2ludGVybGVhdmVfcGlwZV0gaXMgbWFuYWdpbmc7XG4gICAgIFtpbnB1dHNdIGNvdW50cyBhcyBvbmUuICBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVybywgd2Uga25vdyB0aGF0IGFsbFxuICAgICBwaXBlcyBhcmUgY2xvc2VkIGFuZCB3ZSBjYW4gY2xvc2UgW291dHB1dF93cml0ZXJdLiAqKVxuICBsZXQgbnVtX3BpcGVzX3JlbWFpbmluZyA9IHJlZiAxIGluXG4gIGxldCBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkgPVxuICAgIGRlY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICBpZiAhbnVtX3BpcGVzX3JlbWFpbmluZyA9IDAgdGhlbiBjbG9zZSBvdXRwdXRfd3JpdGVyXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCVtYXAgKCkgPVxuICAgICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPlxuICAgICAgICAgaW5jciBudW1fcGlwZXNfcmVtYWluaW5nO1xuICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgKGxldCVtYXAgKCkgPSB0cmFuc2Zlcl9pZCBpbnB1dCBvdXRwdXRfd3JpdGVyIGluXG4gICAgICAgICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpKVxuICAgICBpblxuICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpO1xuICAoKiBmb3IgW2lucHV0c10gKilcbiAgb3V0cHV0XG47O1xuXG5sZXQgaW50ZXJsZWF2ZSBpbnB1dHMgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIGlucHV0cyB+ZjppbnZhcmlhbnQ7XG4gIGludGVybGVhdmVfcGlwZSAob2ZfbGlzdCBpbnB1dHMpXG47O1xuXG5sZXQgbWVyZ2UgaW5wdXRzIH5jb21wYXJlID1cbiAgbWF0Y2ggaW5wdXRzIHdpdGhcbiAgfCBbXSAtPiBlbXB0eSAoKVxuICB8IFsgaW5wdXQgXSAtPiBpbnB1dFxuICB8IGlucHV0cyAtPlxuICAgIGxldCBtb2R1bGUgSGVhcCA9IFBhaXJpbmdfaGVhcCBpblxuICAgIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gICAgdXBvbiAoY2xvc2VkIHcpIChmdW4gKCkgLT4gTGlzdC5pdGVyIGlucHV0cyB+ZjpjbG9zZV9yZWFkKTtcbiAgICBsZXQgaGVhcCA9IEhlYXAuY3JlYXRlIH5jbXA6KGZ1biAoYTEsIF8pIChhMiwgXykgLT4gY29tcGFyZSBhMSBhMikgKCkgaW5cbiAgICBsZXQgaGFuZGxlX3JlYWQgaW5wdXQgZW9mX29yX29rID1cbiAgICAgIG1hdGNoIGVvZl9vcl9vayB3aXRoXG4gICAgICB8IGBFb2YgLT4gKClcbiAgICAgIHwgYE9rIHYgLT4gSGVhcC5hZGQgaGVhcCAodiwgaW5wdXQpXG4gICAgaW5cbiAgICBsZXQgcmVjIHBvcF9oZWFwX2FuZF9sb29wICgpID1cbiAgICAgICgqIEF0IHRoaXMgcG9pbnQsIGFsbCBpbnB1dHMgbm90IGF0IEVvZiBvY2N1ciBpbiBbaGVhcF0gZXhhY3RseSBvbmNlLCBzbyB3ZSBrbm93XG4gICAgICAgICB3aGF0IHRoZSBuZXh0IG91dHB1dCBlbGVtZW50IGlzLiAgW3BvcF9oZWFwX2FuZF9sb29wXSByZXBlYXRlZGx5IHRha2VzIGVsZW1lbnRzXG4gICAgICAgICBmcm9tIHRoZSBpbnB1dHMgYXMgbG9uZyBhcyBpdCBoYXMgb25lIGZyb20gZWFjaCBpbnB1dC4gIFRoaXMgaXMgZG9uZVxuICAgICAgICAgc3luY2hyb25vdXNseSB0byBhdm9pZCB0aGUgY29zdCBvZiBhIGRlZmVycmVkIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIG91dHB1dCAtLVxuICAgICAgICAgdGhlcmUncyBubyBuZWVkIHRvIHB1c2hiYWNrIHNpbmNlIHRoYXQgaXMgb25seSBtb3ZpbmcgZWxlbWVudHMgZnJvbSBvbmUgcGlwZSB0b1xuICAgICAgICAgYW5vdGhlci4gIEFzIHNvb24gYXMgW3BvcF9oZWFwX2FuZF9sb29wXSBjYW4ndCBnZXQgYW4gZWxlbWVudCBmcm9tIHNvbWUgaW5wdXQsIGl0XG4gICAgICAgICB3YWl0cyBvbiBwdXNoYmFjayBmcm9tIHRoZSBvdXRwdXQsIHNpbmNlIGl0IGhhcyB0byB3YWl0IG9uIHRoZSBpbnB1dCBhbnl3YXkuXG4gICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgW21lcmdlXSBmcm9tIGNvbnN1bWluZyBpbnB1dHMgYXQgYSByYXRlIGZhc3RlciB0aGFuIGl0cyBvdXRwdXRcbiAgICAgICAgIGlzIGNvbnN1bWVkLiAqKVxuICAgICAgbWF0Y2ggSGVhcC5wb3AgaGVhcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2xvc2Ugd1xuICAgICAgfCBTb21lICh2LCBpbnB1dCkgLT5cbiAgICAgICAgaWYgbm90IChpc19jbG9zZWQgdylcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3IHY7XG4gICAgICAgICAgaWYgSGVhcC5sZW5ndGggaGVhcCA9IDBcbiAgICAgICAgICB0aGVuIHVwb24gKHRyYW5zZmVyX2lkIGlucHV0IHcpIChmdW4gKCkgLT4gY2xvc2UgdylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJlYWRfbm93IGlucHV0IHdpdGhcbiAgICAgICAgICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgeCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKVxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgcHVzaGJhY2sgd1xuICAgICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgICAgIHJlYWQgaW5wdXRcbiAgICAgICAgICAgICAgPj4+IGZ1biB4IC0+XG4gICAgICAgICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHg7XG4gICAgICAgICAgICAgIHBvcF9oZWFwX2FuZF9sb29wICgpKSlcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3B1c2ggPVxuICAgICAgRGVmZXJyZWQuTGlzdC5pdGVyIH5ob3c6YFNlcXVlbnRpYWwgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT5cbiAgICAgICAgbGV0JW1hcCB4ID0gcmVhZCBpbnB1dCBpblxuICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4KVxuICAgIGluXG4gICAgdXBvbiBpbml0aWFsX3B1c2ggcG9wX2hlYXBfYW5kX2xvb3A7XG4gICAgclxuOztcblxubGV0IGNvbmNhdF9waXBlIGlucHV0cyA9XG4gIGxldCByID1cbiAgICBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gKGZ1biB3IC0+XG4gICAgICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dHMgfmRvd25zdHJlYW06dyBpblxuICAgICAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICAgICBpdGVyIH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT4gdHJhbnNmZXJfaWQgaW5wdXQgdykpXG4gIGluXG4gIHVwb24gKGNsb3NlZCByKSAoZnVuICgpIC0+IGNsb3NlIGlucHV0cyk7XG4gIHJcbjs7XG5cbmxldCBjb25jYXQgaW5wdXRzID1cbiAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgIERlZmVycmVkLkxpc3QuaXRlciB+aG93OmBTZXF1ZW50aWFsIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuOztcblxubGV0IGZvcmsgdCB+cHVzaGJhY2tfdXNlcyA9XG4gIGxldCByZWFkZXIwLCB3cml0ZXIwID0gY3JlYXRlICgpIGluXG4gIGxldCByZWFkZXIxLCB3cml0ZXIxID0gY3JlYXRlICgpIGluXG4gIGxldCBzb21lX3JlYWRlcl93YXNfY2xvc2VkID0gcmVmIGZhbHNlIGluXG4gIGxldCBjb25zdW1lciA9XG4gICAgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICBsZXQgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA9ICFzb21lX3JlYWRlcl93YXNfY2xvc2VkIGluXG4gICAgICBtYXRjaCVtYXBcbiAgICAgICAgRmx1c2hlZF9yZXN1bHQuY29tYmluZSBbIGRvd25zdHJlYW1fZmx1c2hlZCB3cml0ZXIwOyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMSBdXG4gICAgICB3aXRoXG4gICAgICB8IGBSZWFkZXJfY2xvc2VkIC0+IGBSZWFkZXJfY2xvc2VkXG4gICAgICB8IGBPayAtPlxuICAgICAgICAoKiBJbiB0aGlzIGNhc2UsIHRoZXJlIGNvdWxkIGhhdmUgYmVlbiBubyBwZW5kaW5nIGl0ZW1zIGluIFt3cml0ZXIwXSBub3IgaW5cbiAgICAgICAgICAgW3dyaXRlcjFdLCBpbiB3aGljaCBjYXNlIHdlIGNvdWxkIGhhdmUgaGFkIGEgY2xvc2VkIHBpcGUgdGhhdCBtaXNzZWQgc29tZVxuICAgICAgICAgICB3cml0ZXMsIGJ1dCBbRmx1c2hlZF9yZXN1bHQuY29tYmluZV0gd291bGQgc3RpbGwgaGF2ZSByZXR1cm5lZCBbYE9rXSAqKVxuICAgICAgICBpZiBzb21lX3JlYWRlcl93YXNfY2xvc2VkIHRoZW4gYFJlYWRlcl9jbG9zZWQgZWxzZSBgT2spXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCBzdGlsbF9vcGVuID0gWyB3cml0ZXIwOyB3cml0ZXIxIF0gaW5cbiAgICAgbGV0IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gPVxuICAgICAgICgqIE9ubHkgY2FsbCBbZmlsdGVyXSBhbmQgcmVhbGxvY2F0ZSBsaXN0IGlmIHNvbWV0aGluZyB3aWxsIGdldCBmaWx0ZXJlZCAqKVxuICAgICAgIGlmIG5vdCAoTGlzdC5leGlzdHMgc3RpbGxfb3BlbiB+Zjppc19jbG9zZWQpXG4gICAgICAgdGhlbiBzdGlsbF9vcGVuXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBzb21lX3JlYWRlcl93YXNfY2xvc2VkIDo9IHRydWU7XG4gICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IExpc3QuZmlsdGVyIHN0aWxsX29wZW4gfmY6KGZ1biB3IC0+IG5vdCAoaXNfY2xvc2VkIHcpKSBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuIHRoZW4gY2xvc2UgdDtcbiAgICAgICAgIHN0aWxsX29wZW4pXG4gICAgIGluXG4gICAgIGxldCViaW5kIHN0aWxsX29wZW4gPVxuICAgICAgIGZvbGQnIHQgfmZsdXNoZWQ6KENvbnN1bWVyIGNvbnN1bWVyKSB+aW5pdDpzdGlsbF9vcGVuIH5mOihmdW4gc3RpbGxfb3BlbiBxdWV1ZSAtPlxuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuIGluXG4gICAgICAgICBpZiBMaXN0LmlzX2VtcHR5IHN0aWxsX29wZW5cbiAgICAgICAgIHRoZW4gcmV0dXJuIFtdXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgICAgbWF0Y2ggcHVzaGJhY2tfdXNlcyB3aXRoXG4gICAgICAgICAgICAgfCBgRmFzdF9jb25zdW1lcl9vbmx5IC0+IERlZmVycmVkLmFueSAoTGlzdC5tYXAgc3RpbGxfb3BlbiB+ZjpwdXNoYmFjaylcbiAgICAgICAgICAgICB8IGBCb3RoX2NvbnN1bWVycyAtPiBEZWZlcnJlZC5hbGxfdW5pdCAoTGlzdC5tYXAgc3RpbGxfb3BlbiB+ZjpwdXNoYmFjaylcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuIGluXG4gICAgICAgICAgIExpc3QuaXRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBjb3B5X2luX3dpdGhvdXRfcHVzaGJhY2sgdyB+ZnJvbTpxdWV1ZSk7XG4gICAgICAgICAgIHN0aWxsX29wZW4pKVxuICAgICBpblxuICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjpjbG9zZTtcbiAgICAgcmV0dXJuICgpKTtcbiAgcmVhZGVyMCwgcmVhZGVyMVxuOztcblxubGV0IHNldF9pbmZvIHQgaW5mbyA9IHNldF9pbmZvIHQgKFNvbWUgaW5mbylcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgdCA9XG4gIHsgY3VycmVudF92YWx1ZSA6ICdhIE1vcHRpb24udFxuICA7IHRha2VuIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICA7IG11dGFibGUgdmFsdWVfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdmFsdWVfYXZhaWxhYmxlIHQgPSBJdmFyLnJlYWQgdC52YWx1ZV9hdmFpbGFibGVcbmxldCBpc19lbXB0eSB0ID0gTW9wdGlvbi5pc19ub25lIHQuY3VycmVudF92YWx1ZVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gKHQgOiBfIHQpID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y3VycmVudF92YWx1ZTooY2hlY2sgKE1vcHRpb24uaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH50YWtlbjooY2hlY2sgKEJ2YXIuaW52YXJpYW50IFVuaXQuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICB+dmFsdWVfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1biB2YWx1ZV9hdmFpbGFibGUgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAoSXZhci5pc19mdWxsIHZhbHVlX2F2YWlsYWJsZSlcbiAgICAgICAgICAgICB+ZXhwZWN0OihNb3B0aW9uLmlzX3NvbWUgdC5jdXJyZW50X3ZhbHVlKSkpKVxuOztcblxubGV0IHBlZWsgdCA9IE1vcHRpb24uZ2V0IHQuY3VycmVudF92YWx1ZVxuXG5sZXQgcGVla19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk12YXIucGVla19leG4gY2FsbGVkIG9uIGVtcHR5IG12YXJcIl07XG4gIE1vcHRpb24uZ2V0X3NvbWVfZXhuIHQuY3VycmVudF92YWx1ZVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gWyVzZXhwIChwZWVrIHQgOiBhIG9wdGlvbildXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHJlYWRfd3JpdGUpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5tb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHJlYWQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5sZXQgcmVhZF9vbmx5ICh0IDogKCdhLCBbPiByZWFkIF0pIHQpID0gKHQgOj4gKCdhLCByZWFkKSB0KVxubGV0IHdyaXRlX29ubHkgKHQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQpID0gKHQgOj4gKCdhLCB3cml0ZSkgdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gIHsgY3VycmVudF92YWx1ZSA9IE1vcHRpb24uY3JlYXRlICgpXG4gIDsgdGFrZW4gPSBCdmFyLmNyZWF0ZSAoKVxuICA7IHZhbHVlX2F2YWlsYWJsZSA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCB0YWtlX25vbmVtcHR5IHQgPVxuICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgciA9IE1vcHRpb24uZ2V0X3NvbWVfZXhuIHQuY3VycmVudF92YWx1ZSBpblxuICBNb3B0aW9uLnNldF9ub25lIHQuY3VycmVudF92YWx1ZTtcbiAgQnZhci5icm9hZGNhc3QgdC50YWtlbiAoKTtcbiAgdC52YWx1ZV9hdmFpbGFibGUgPC0gSXZhci5jcmVhdGUgKCk7XG4gIHJcbjs7XG5cbmxldCB0YWtlX25vd19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk12YXIudGFrZV9leG4gY2FsbGVkIG9uIGVtcHR5IG12YXJcIl07XG4gIHRha2Vfbm9uZW1wdHkgdFxuOztcblxubGV0IHRha2Vfbm93IHQgPSBpZiBub3QgKGlzX2VtcHR5IHQpIHRoZW4gU29tZSAodGFrZV9ub25lbXB0eSB0KSBlbHNlIE5vbmVcblxubGV0IHJlYyB0YWtlIHQgPVxuICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gIHRoZW4gcmV0dXJuICh0YWtlX25vbmVtcHR5IHQpXG4gIGVsc2UgKFxuICAgIGxldCViaW5kICgpID0gdmFsdWVfYXZhaWxhYmxlIHQgaW5cbiAgICB0YWtlIHQpXG47O1xuXG5sZXQgc2V0IHQgdiA9XG4gIE1vcHRpb24uc2V0X3NvbWUgdC5jdXJyZW50X3ZhbHVlIHY7XG4gIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnZhbHVlX2F2YWlsYWJsZSAoKVxuOztcblxubGV0IHVwZGF0ZSB0IH5mID0gc2V0IHQgKGYgKHBlZWsgdCkpXG5sZXQgdXBkYXRlX2V4biB0IH5mID0gc2V0IHQgKGYgKHBlZWtfZXhuIHQpKVxubGV0IHRha2VuIHQgPSBCdmFyLndhaXQgdC50YWtlblxuXG5sZXQgcmVjIHB1dCB0IHYgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gKFxuICAgIHNldCB0IHY7XG4gICAgcmV0dXJuICgpKVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHRha2VuIHQgaW5cbiAgICBwdXQgdCB2KVxuOztcblxubGV0IHBpcGVfd2hlbl9yZWFkeSB0ID1cbiAgbGV0IHIsIHcgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCViaW5kICgpID0gdmFsdWVfYXZhaWxhYmxlIHQgaW5cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHcpXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB0YWtlX25vdyB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wICgpXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBsZXQlYmluZCAoKSA9IFBpcGUud3JpdGUgdyB4IGluXG4gICAgICAgIGxvb3AgKCkpXG4gICAgZWxzZSByZXR1cm4gKClcbiAgaW5cbiAgZG9uJ3Rfd2FpdF9mb3IgKGxvb3AgKCkpO1xuICByXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3RhcnQgOiB1bml0IEl2YXIudFxuICAgIDsgcmVzdWx0IDogJ2EgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgPyhyZXN0X2V4biA9IGBMb2cpIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OnJlc3RfZXhuXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfb3JfZXJyb3IgPyhyZXN0X2V4biA9IGBMb2cpIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX2pvaW5fb3JfZXJyb3JcbiAgICAgICAgICAgfnJlc3Q6cmVzdF9leG5cbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdhaXQgdCA9IHQucmVzdWx0XG4gIGxldCB3YWl0X2V4biB0ID0gd2FpdCB0ID4+fCBva19leG5cbiAgbGV0IHN0YXJ0IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC5zdGFydCAoKVxuXG4gIGxldCBmb3JjZSB0ID1cbiAgICBzdGFydCB0O1xuICAgIHdhaXQgdFxuICA7O1xuXG4gIGxldCBmb3JjZV9leG4gdCA9IGZvcmNlIHQgPj58IG9rX2V4blxuICBsZXQgcmV0dXJuIGEgPSBjcmVhdGUgKGZ1biAoKSAtPiByZXR1cm4gYSlcblxuICBsZXQgYmluZCB0IH5mID1cbiAgICBjcmVhdGUgKGZ1biAoKSAtPlxuICAgICAgbGV0JWJpbmQgYSA9IGZvcmNlX2V4biB0IGluXG4gICAgICBmb3JjZV9leG4gKGYgYSkpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gKCkgLT4gZm9yY2VfZXhuIHQgPj58IGYpXG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBNb25hZC5NYWtlIChUKVxuXG5sZXQgYmluZCcgdCBmID0gYmluZCB0IH5mOihmdW4gYSAtPiBjcmVhdGUgKGZ1biAoKSAtPiBmIGEpKVxubGV0IGlzX2ZvcmNlZCB0ID0gSXZhci5pc19mdWxsIHQuc3RhcnRcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHQucmVzdWx0XG5sZXQgcGVlayB0ID0gRGVmZXJyZWQucGVlayB0LnJlc3VsdFxubGV0IHBlZWtfZXhuIHQgPSBPcHRpb24ubWFwIChwZWVrIHQpIH5mOm9rX2V4blxuIiwib3BlbiBDb3JlXG5cbnR5cGUgJ2EgdCA9IHsgd2FpdHMgOiAnYSBJdmFyLnQgUXVldWUudCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgKCkgPSB7IHdhaXRzID0gUXVldWUuY3JlYXRlICgpIH1cbmxldCB3YWl0IHQgPSBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IFF1ZXVlLmVucXVldWUgdC53YWl0cyBpdmFyKVxubGV0IHNpZ25hbCB0IGEgPSBPcHRpb24uaXRlciAoUXVldWUuZGVxdWV1ZSB0LndhaXRzKSB+ZjooZnVuIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYSlcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBRdWV1ZS5pdGVyIHQud2FpdHMgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpO1xuICBRdWV1ZS5jbGVhciB0LndhaXRzXG47O1xuIiwib3BlbiBDb3JlXG5pbmNsdWRlIEdjXG5cbigqKiBbYWRkX2ZpbmFsaXplciBmIHhdIGlzIGxpa2UgW0djLmZpbmFsaXNlIGYgeF0sIGV4Y2VwdCB0aGF0IHRoZSBmaW5hbGl6ZXIgaXMgZ3VhcmFudGVlZFxuICAgIHRvIHJ1biBhcyBhbiBBc3luYyBqb2IgKGkuZS4gd2l0aG91dCBpbnRlcnJ1cHRpbmcgb3RoZXIgQXN5bmMgam9icykuICBVbnByb3RlY3RlZCB1c2VcbiAgICBvZiBbQ2FtbC5HYy5maW5hbGlzZV0gb3IgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gaW4gQXN5bmMgcHJvZ3JhbXMgaXMgd3JvbmcsIGJlY2F1c2VcbiAgICB0aGUgZmluYWxpemVycyB3b24ndCBob2xkIHRoZSBhc3luYyBsb2NrLCBhbmQgdGh1cyBjb3VsZCBpbnRlcmxlYXZlIGFyYml0cmFyaWx5IHdpdGhcbiAgICBhc3luYyBqb2JzLiAqKVxubGV0IGFkZF9maW5hbGl6ZXIgaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2V4biBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfZXhuICh0ICgpKSkgaGVhcF9ibG9jayBmXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0ICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIGhlYXBfYmxvY2sgZiA9XG4gIFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0X2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxuOztcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IEdjLkV4cGVydC5BbGFybVxuXG4gIHR5cGUgdCA9IEFsYXJtLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIGYgPSBTY2hlZHVsZXIuKGNyZWF0ZV9hbGFybSAodCAoKSkpIGZcbiAgbGV0IGRlbGV0ZSA9IEFsYXJtLmRlbGV0ZVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBzaWduYXR1cmVzIHRoYXQgZXh0ZW5kIFtDb3JlLkludmFyaWFudF0gd2l0aCBhbiBbQXN5bmNdXG4gICAgc3VibW9kdWxlIGZvciBpbnZhcmlhbnRzIHRoYXQgdXNlIGFzeW5jIGNvbXB1dGF0aW9uIGFuZCByZXR1cm4gW3VuaXQgRGVmZXJyZWQudF0uICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHR5cGUgJ2EgaW52ID0gJ2EgdFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYSB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gKCdhLCAnYikgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdiIGludiAtPiAnYyBpbnYgLT4gKCdhLCAnYiwgJ2MpIHQgaW52XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFzeW5jX2ludmFyaWFudCA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIENvcmUuSW52YXJpYW50XG5cbiAgbW9kdWxlIEFzeW5jIDogc2lnXG4gICAgb3BlbiBBc3luY1xuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIEFzeW5jLnRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICAgIG1vZHVsZSB0eXBlIFMyID0gUzJcbiAgICBtb2R1bGUgdHlwZSBTMyA9IFMzXG5cbiAgICB2YWwgaW52YXJpYW50XG4gICAgICA6ICBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgICAtPiAnYVxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICAgKCoqIFtjaGVja19maWVsZF0gY2FuIGJlIHVzZWQgdG8gY2hlY2sgcmVjb3JkIGZpZWxkcyB3aGVuIHVzaW5nIFtbQEBkZXJpdmluZyBmaWVsZHNdXS5cbiAgICAgICAgSWRpb21hdGljIHVzYWdlIGxvb2tzIGxpa2U6XG5cbiAgICAgICAge1tcbiAgICAgICAgICB0eXBlIHQgPSB7IGZvbyA6IEZvby50IDsgYmFyIDogQmFyLnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286IChjaGVjayBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6IChjaGVjayBCYXIuaW52YXJpYW50KSBdfVxuXG4gICAgICAgIFdoZW4gc29tZSBmaWVsZHMgaGF2ZSBzeW5jaHJvbm91cyBpbnZhcmlhbnRzLCBvciBkbyBub3QgbmVlZCB0byBiZSBjaGVja2VkLCBpdFxuICAgICAgICBtYXkgYmUgdXNlZnVsIHRvIGRlZmluZSBhIHNlY29uZCB3cmFwcGVyIGFyb3VuZCBbY2hlY2tfZmllbGRdOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IDsgcXV1eCA6IFF1dXgudCB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgICAgIEludmFyaWFudC5Bc3luYy5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgY2hlY2snIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBsZXQgY2hlY2sgaW52ID0gY2hlY2snIChmdW4geCAtPiBpbnYgeDsgcmV0dXJuICgpKSBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286ICAoY2hlY2snIEZvby5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfmJhcjogIChjaGVjayAgQmFyLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+cXV1eDogKGNoZWNrICBpZ25vcmUpIF19ICopXG4gICAgdmFsIGNoZWNrX2ZpZWxkIDogJ2EgLT4gJ2IgdCAtPiB1bml0IERlZmVycmVkLnQgLT4gKCdhLCAnYikgRmllbGQudCAtPiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIERlZmVycmVkLkxldF9zeW50YXhcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb3JlLkludmFyaWFudFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3luY19pbnZhcmlhbnRfaW50Zi5Bc3luY1xuXG4gIGxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICBmXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIiB+XzooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpIChleG4gOiBleG4pIH5fOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ZpZWxkIHQgZiB3YWl0X2Zvcl9wcmV2aW91cyBmaWVsZCA9XG4gICAgbGV0JWJpbmQgKCkgPSB3YWl0X2Zvcl9wcmV2aW91cyBpblxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgICAgIChmdW4gKCkgLT4gZiAoRmllbGQuZ2V0IGZpZWxkIHQpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwicHJvYmxlbSB3aXRoIGZpZWxkXCIgfmZpZWxkOihGaWVsZC5uYW1lIGZpZWxkIDogc3RyaW5nKSAoZXhuIDogZXhuKV1cbiAgOztcbmVuZFxuIiwiKCoqIENvbnRhaW5zIEFzeW5jJ3MgY29yZSBkYXRhIHN0cnVjdHVyZXMsIGxpa2Uge3shQXN5bmNfa2VybmVsLkRlZmVycmVkfVtEZWZlcnJlZF19LFxuICAgIHt7IUFzeW5jX2tlcm5lbC5JdmFyfVtJdmFyXX0sIGFuZCB7eyFBc3luY19rZXJuZWwuQ2xvY2tfaW50Zi5DbG9ja31bQ2xvY2tdfS5cblxuICAgIFtBc3luY19rZXJuZWxdIGlzIGRlc2lnbmVkIHRvIGRlcGVuZCBvbmx5IG9uIHt7IUNvcmV9W0NvcmVdfSBhbmQgc28gaXMgbW9yZVxuICAgIHBsYXRmb3JtLWluZGVwZW5kZW50LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBc3luY19rZXJuZWxfY29uZmlnID0gQXN5bmNfa2VybmVsX2NvbmZpZ1xubW9kdWxlIEFzeW5jX2tlcm5lbF9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlID0gUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgQnZhciA9IEJ2YXJcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgQ29uZGl0aW9uID0gQXN5bmNfY29uZGl0aW9uXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZFxubW9kdWxlIEV4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHRcbm1vZHVsZSBHYyA9IEFzeW5jX2djXG5tb2R1bGUgSW52YXJpYW50ID0gQXN5bmNfaW52YXJpYW50XG5tb2R1bGUgSXZhciA9IEl2YXJcbm1vZHVsZSBMYXp5X2RlZmVycmVkID0gTGF6eV9kZWZlcnJlZFxubW9kdWxlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2Vcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvclxubW9kdWxlIE12YXIgPSBNdmFyXG5tb2R1bGUgUGlwZSA9IFBpcGVcbm1vZHVsZSBQcmlvcml0eSA9IFByaW9yaXR5XG5tb2R1bGUgU2VxdWVuY2VyID0gVGhyb3R0bGUuU2VxdWVuY2VyXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZVxubW9kdWxlIFRhaWwgPSBUYWlsXG5tb2R1bGUgVGhyb3R0bGUgPSBUaHJvdHRsZVxubW9kdWxlIFRocm90dGxlZCA9IFRocm90dGxlZFxubW9kdWxlIFRpbWVfc291cmNlID0gVGltZV9zb3VyY2VcblxuXG4oKiogezIgVG9wbGV2ZWwgZnVuY3Rpb25zIH1cblxuICAgIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGJyb2FkbHkgdXNlZnVsIHdoZW4gd3JpdGluZyBBc3luYyBwcm9ncmFtcywgYW5kIHNvIGFyZSBtYWRlXG4gICAgYXZhaWxhYmxlIGF0IHRoZSB0b3BsZXZlbC4gKilcblxuXG5sZXQgYWZ0ZXIgPSBDbG9ja19ucy5hZnRlclxubGV0IGF0ID0gQ2xvY2tfbnMuYXRcbmxldCBjYXRjaCA9IE1vbml0b3IuY2F0Y2hcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IERlZmVycmVkLmRvbid0X3dhaXRfZm9yXG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBzY2hlZHVsZSA9IFNjaGVkdWxlci5zY2hlZHVsZVxubGV0IHNjaGVkdWxlJyA9IFNjaGVkdWxlci5zY2hlZHVsZSdcbmxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxubGV0IHdpdGhpbiA9IFNjaGVkdWxlci53aXRoaW5cbmxldCB3aXRoaW4nID0gU2NoZWR1bGVyLndpdGhpbidcblxuKCoqIHsyIEluZml4IG9wZXJhdG9ycyBhbmQgW0xldF9zeW50YXhdIHN1cHBvcnR9ICopXG5cbmluY2x1ZGUgKERlZmVycmVkIDogTW9uYWQuSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgRGVmZXJyZWQudClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC51cG9ufS4gKilcbmxldCAoID4+PiApID0gRGVmZXJyZWQuSW5maXguKCA+Pj4gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5iaW5kfS4gKilcbmxldCAoID4+PT8gKSA9IERlZmVycmVkLlJlc3VsdC4oID4+PSApXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQuUmVzdWx0Lm1hcH0uICopXG5sZXQgKCA+Pnw/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+PnwgKVxuXG5pbmNsdWRlIERlZmVycmVkLkxldF9zeW50YXhcblxuKCoqLyoqKVxuXG4oKiogVGhlIG1vZHVsZXMgaW4gW0FzeW5jX2tlcm5lbF9wcml2YXRlXSBhcmUgdXNlZCBmb3IgY29uc3RydWN0aW5nIGFuZCB0ZXN0aW5nIEFzeW5jLCBhbmRcbiAgICBzaG91bGQgbm90IG90aGVyd2lzZSBiZSB1c2VkLiAqKVxubW9kdWxlIEFzeW5jX2tlcm5lbF9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBEZWJ1ZyA9IERlYnVnXG4gIG1vZHVsZSBJdmFyMCA9IEl2YXIwXG4gIG1vZHVsZSBJdmFyX2ZpbGxlciA9IEl2YXJfZmlsbGVyXG4gIG1vZHVsZSBKb2IgPSBKb2JcbiAgbW9kdWxlIFN0YWNrX29yX2NvdW50ZXIgPSBTdGFja19vcl9jb3VudGVyXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBUaGlzIHRlc3QgbXVzdCBiZSBpbiB0aGlzIGxpYnJhcnksIGJlY2F1c2UgaXQgcmVxdWlyZXMgW3JldHVybl0gdG8gYmUgaW5saW5lZC4gIE1vdmluZ1xuICAgaXQgdG8gYW5vdGhlciBsaWJyYXJ5IHdpbGwgY2F1c2UgaXQgdG8gYnJlYWsgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlXS4gKilcbmxldCV0ZXN0X3VuaXQgXCJbcmV0dXJuICgpXSBkb2VzIG5vdCBhbGxvY2F0ZVwiID1cbiAgbGV0IHcxID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChyZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLkxldF9zeW50YXguTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgbGV0IHcyID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgWyV0ZXN0X3Jlc3VsdDogaW50XSB3MiB+ZXhwZWN0OncxXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9ICdhIERlZmVycmVkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgcmV0dXJuID0gRGVmZXJyZWQucmV0dXJuXG5cbiAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0IHRoZW4gZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpIGVsc2UgRGVmZXJyZWQuYmluZCB0IH5mXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIHJldHVybiAoZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpKVxuICAgIGVsc2UgRGVmZXJyZWQubWFwIHQgfmZcbiAgOztcblxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgTW9uYWQuTWFrZSAoVClcblxubGV0IGNyZWF0ZSA9IERlZmVycmVkLmNyZWF0ZVxubGV0IGRvbid0X3dhaXRfZm9yID0gRGVmZXJyZWQuZG9uJ3Rfd2FpdF9mb3JcbmxldCBpbnZhcmlhbnQgPSBEZWZlcnJlZC5pbnZhcmlhbnRcbmxldCBpc19kZXRlcm1pbmVkID0gRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZFxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBwZWVrID0gRGVmZXJyZWQucGVla1xubGV0IHVuaXQgPSBEZWZlcnJlZC51bml0XG5sZXQgdmFsdWVfZXhuID0gRGVmZXJyZWQudmFsdWVfZXhuXG5sZXQgdXBvbiB0IGYgPSBpZiBpc19kZXRlcm1pbmVkIHQgdGhlbiBmICh2YWx1ZV9leG4gdCkgZWxzZSBEZWZlcnJlZC51cG9uIHQgZlxuXG5sZXQgYm90aCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPiB1cG9uIHQxIChmdW4gYTEgLT4gdXBvbiB0MiAoZnVuIGEyIC0+IEl2YXIuZmlsbCByZXN1bHQgKGExLCBhMikpKSlcbjs7XG5cbmxldCBvayB0ID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gcmV0dXJuIChPayAodmFsdWVfZXhuIHQpKSBlbHNlIERlZmVycmVkLm9rIHRcbmxldCBpZ25vcmVfbSB0ID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gdW5pdCBlbHNlIERlZmVycmVkLmlnbm9yZV9tIHRcblxubGV0IGFueSB0cyA9XG4gIG1hdGNoIExpc3QuZmluZCB0cyB+Zjppc19kZXRlcm1pbmVkIHdpdGhcbiAgfCBTb21lIHggLT4gcmV0dXJuICh2YWx1ZV9leG4geClcbiAgfCBOb25lIC0+IERlZmVycmVkLmFueSB0c1xuOztcblxubGV0IGFueV91bml0IHRzID1cbiAgaWYgTGlzdC5leGlzdHMgdHMgfmY6KGlzX2RldGVybWluZWQgOiB1bml0IHQgLT4gYm9vbClcbiAgdGhlbiB1bml0XG4gIGVsc2UgRGVmZXJyZWQuYW55X3VuaXQgdHNcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbGV0ICggPj4+ICkgPSB1cG9uXG5lbmRcblxubGV0IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbGV0IG9wZW4gSW5maXggaW5cbiAgY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgICAgZiBzdGF0ZVxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IGBSZXBlYXQgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgICAgfCBgRmluaXNoZWQgcmVzdWx0IC0+IEl2YXIuZmlsbCBmaW5pc2hlZCByZXN1bHRcbiAgICBpblxuICAgIGxvb3Agc3RhdGUpXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBvcGVuIEluZml4XG4gIG9wZW4gTGV0X3N5bnRheFxuXG4gIGxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgICBjcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICAgIGluXG4gICAgICBsb29wIHQgMCBpbml0KVxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbiAgbGV0IGFsbF91bml0IGRzID0gaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpIDogdW5pdCBULnQpXG5cbiAgbGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuICA7O1xuXG4gIGxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgICBMaXN0LnJldlxuICAgICAgKExpc3QuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbiAgbGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9XG4gICAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICAgIGluXG4gICAgZmluZF9tYXBpIHQgfmYgMFxuICA7O1xuXG4gIGxldCBmaW5kaSB0IH5mID1cbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT4gaWYlbWFwIGYgZWx0IHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgYWxsX3VuaXQgPSBMaXN0LmFsbF91bml0XG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRWFnZXJfZGVmZXJyZWQwXG5vcGVuIERlZmVycmVkLkxldF9zeW50YXhcblxuKCogQ29waWVkIGZyb20gW2RlZmVycmVkX3Jlc3VsdC5tbF0uICBUaGVyZSBzaG91bGQgYmUgbm8gZGlmZnMgYmVsb3cgdGhpcyBsaW5lLiAqKVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2Vycm9yKSB0ID0gKCdhLCAnZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBsZXQlbWFwIHQxID0gdDFcbiAgYW5kIHQyID0gdDIgaW5cbiAgUmVzdWx0LmNvbWJpbmUgdDEgdDIgfm9rIH5lcnJcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChPayBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgYSAtPiBmIGFcbiAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IERlZmVycmVkLnJldHVybiBlcnJvcilcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgZmFpbCB4ID0gRGVmZXJyZWQucmV0dXJuIChFcnJvciB4KVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IG1hcF9lcnJvciB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXBfZXJyb3IgciB+ZilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBFYWdlcl9kZWZlcnJlZDBcbm1vZHVsZSBEZWZlcnJlZF9yZXN1bHQgPSBFYWdlcl9kZWZlcnJlZF9yZXN1bHRcblxubW9kdWxlIE1vbml0b3IgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoID8ocnVuID0gYE5vdykgPSBNb25pdG9yLnRyeV93aXRoIH5ydW5cbmVuZFxuXG4oKiBDb3BpZWQgZnJvbSBbZGVmZXJyZWRfb3JfZXJyb3IubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxuaW5jbHVkZSAoRGVmZXJyZWRfcmVzdWx0IDogTW9uYWQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgRGVmZXJyZWRfcmVzdWx0LnQpXG5cbnR5cGUgJ2EgdCA9ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIERlZmVycmVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIGZcbiAgICAgICAgeFxuICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBmYWlsIGVycm9yID0gRGVmZXJyZWQucmV0dXJuIChSZXN1bHQuZmFpbCBlcnJvcilcbmxldCBva19leG4gdCA9IERlZmVycmVkLm1hcCB0IH5mOk9yX2Vycm9yLm9rX2V4blxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSB0ID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLm9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSlcbmxldCBlcnJvciBtc2cgdiBzZXhwX29mID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvciBtc2cgdiBzZXhwX29mKVxubGV0IGVycm9yX3Mgc2V4cCA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3JfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBtc2cpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IGtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRGVmZXJyZWQubWFwIHQgfmY6KGZ1biB0IC0+IE9yX2Vycm9yLnRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci51bmltcGxlbWVudGVkIG1zZylcbmxldCBjb21iaW5lX2Vycm9ycyBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG5cbmxldCBmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIGwgPVxuICBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5maWx0ZXJfb2tfYXRfbGVhc3Rfb25lXG47O1xuXG5sZXQgZmluZF9tYXBfb2sgbCB+ZiA9XG4gIERlZmVycmVkLnJlcGVhdF91bnRpbF9maW5pc2hlZCAobCwgW10pIChmdW4gKGwsIGVycm9ycykgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgZXJyb3JzID0gRXJyb3Iub2ZfbGlzdCAoTGlzdC5yZXYgZXJyb3JzKSBpblxuICAgICAgRGVmZXJyZWQucmV0dXJuIChgRmluaXNoZWQgKEVycm9yIGVycm9ycykpXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgRGVmZXJyZWQubWFwIChmIGhkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBjdXJyZW50X2Vycm9yIC0+IGBSZXBlYXQgKHRsLCBjdXJyZW50X2Vycm9yIDo6IGVycm9ycylcbiAgICAgICAgfCBPayByZXN1bHQgLT4gYEZpbmlzaGVkIChPayByZXN1bHQpKSlcbjs7XG5cbmxldCBva191bml0ID0gcmV0dXJuICgpXG5cbmxldCB0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwIChNb25pdG9yLnRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOihmdW5jdGlvblxuICAgIHwgRXJyb3IgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuICAgIHwgT2sgXyBhcyBvayAtPiBvaylcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOk9yX2Vycm9yLmpvaW5cbjs7XG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBmb2xkaSBsaXN0IH5pbml0OmFjYyB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQlYmluZCBhY2MgPSBmIGkgYWNjIGhkIGluXG4gICAgICAgIGxvb3AgKGkgKyAxKSBhY2MgdGxcbiAgICBpblxuICAgIGxvb3AgMCBhY2MgbGlzdFxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCA9IGFsbFxuICBsZXQgYWxsX3VuaXQgPSBhbGxfdW5pdFxuXG4gIGxldCBpdGVyaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG4gIGxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxuICBsZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICAgIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIHggaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIHggZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9XG4gICAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICAgIGluXG4gICAgZmluZF9tYXBpIHQgfmYgMFxuICA7O1xuXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuXG4gIGxldCBmaW5kaSB0IH5mID1cbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgZmluZF9tYXAgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICA7O1xuXG4gIGxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuZW5kXG5cbmxldCByZWMgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBtYXRjaCViaW5kIGYgc3RhdGUgd2l0aFxuICB8IGBSZXBlYXQgc3RhdGUgLT4gcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGZcbiAgfCBgRmluaXNoZWQgc3RhdGUgLT4gcmV0dXJuIHN0YXRlXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUyA9IEVhZ2VyX2RlZmVycmVkX2ludGYuU1xuXG5pbmNsdWRlIEVhZ2VyX2RlZmVycmVkMVxuXG5tb2R1bGUgVXNlID0gc3RydWN0XG4gIG1vZHVsZSBEZWZlcnJlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIERlZmVycmVkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgRWFnZXJfZGVmZXJyZWQxXG4gIGVuZFxuXG4gIGluY2x1ZGUgKEVhZ2VyX2RlZmVycmVkMSA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIERlZmVycmVkLnQpXG4gIGluY2x1ZGUgRWFnZXJfZGVmZXJyZWQxLkxldF9zeW50YXhcblxuICBsZXQgdXBvbiA9IEVhZ2VyX2RlZmVycmVkMS51cG9uXG4gIGxldCAoID4+PiApID0gRWFnZXJfZGVmZXJyZWQxLkluZml4LiggPj4+IClcblxuICBsZXQgKCA+Pj0/ICkgeCBmID1cbiAgICB4XG4gICAgPj49IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IHJldHVybiBlcnJvclxuICAgIHwgT2sgdiAtPiBmIHZcbiAgOztcblxuICBsZXQgKCA+Pnw/ICkgeCBmID1cbiAgICB4XG4gICAgPj58IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IGVycm9yXG4gICAgfCBPayB2IC0+IE9rIChmIHYpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDbG9zZWRcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzXG4gICAgfCBPa190b193cml0ZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpc19jbG9zZWQgPSBmdW5jdGlvblxuICAgIHwgQ2xvc2VkIC0+IHRydWVcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IGZhbHNlXG4gICAgfCBPa190b193cml0ZSAtPiBmYWxzZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYWxsYmFja19hcml0eSA9IHN0cnVjdFxuICB0eXBlIF8gdCA9XG4gICAgfCBBcml0eTEgOiAoJ2EgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkxX2xvY2FsIDogKCgnYVtAbG9jYWxdKSAtPiB1bml0KSB0XG4gICAgfCBBcml0eTIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkzIDogKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5NCA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0KSB0XG4gICAgfCBBcml0eTUgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB1c2VzX2xvY2FsX2FyZ3MgOiB0eXBlIGEuIGEgdCAtPiBib29sID0gZnVuY3Rpb25cbiAgICB8IEFyaXR5MSAtPiBmYWxzZVxuICAgIHwgQXJpdHkxX2xvY2FsIC0+IHRydWVcbiAgICB8IEFyaXR5MiAtPiBmYWxzZVxuICAgIHwgQXJpdHkzIC0+IGZhbHNlXG4gICAgfCBBcml0eTQgLT4gZmFsc2VcbiAgICB8IEFyaXR5NSAtPiBmYWxzZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBMYXN0X3ZhbHVlIDogc2lnXG4gIHR5cGUgJ2NhbGxiYWNrIHRcblxuICB2YWwgY3JlYXRlX2V4biA6ICdjYWxsYmFjayBDYWxsYmFja19hcml0eS50IC0+ICdjYWxsYmFjayB0XG4gIHZhbCBzZXQxIDogKCdhIC0+IHVuaXQpIHQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0MiA6ICgnYSAtPiAnYiAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+IHVuaXRcbiAgdmFsIHNldDMgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0XG4gIHZhbCBzZXQ0IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQpIHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdFxuICB2YWwgc2V0NSA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXRcbiAgdmFsIHNlbmQgOiAnY2FsbGJhY2sgdCAtPiAnY2FsbGJhY2sgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgXyB0dXBsZSA9XG4gICAgfCBUdXBsZTEgOiB7IG11dGFibGUgYXJnMSA6ICdhIH0gLT4gKCdhIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTIgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdHVwbGVcbiAgICB8IFR1cGxlMyA6XG4gICAgICAgIHsgbXV0YWJsZSBhcmcxIDogJ2FcbiAgICAgICAgOyBtdXRhYmxlIGFyZzIgOiAnYlxuICAgICAgICA7IG11dGFibGUgYXJnMyA6ICdjXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTQgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICA7IG11dGFibGUgYXJnNCA6ICdkXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTUgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICA7IG11dGFibGUgYXJnNCA6ICdkXG4gICAgICAgIDsgbXV0YWJsZSBhcmc1IDogJ2VcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdHVwbGVcblxuICB0eXBlICdjYWxsYmFjayB0ID0gJ2NhbGxiYWNrIHR1cGxlIG9wdGlvbiByZWZcblxuICBsZXQgY3JlYXRlX2V4biAodHlwZSBjYWxsYmFjaykgKGFyaXR5IDogY2FsbGJhY2sgQ2FsbGJhY2tfYXJpdHkudCkgOiBjYWxsYmFjayB0ID1cbiAgICBpZiBDYWxsYmFja19hcml0eS51c2VzX2xvY2FsX2FyZ3MgYXJpdHlcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQ2Fubm90IHNhdmUgbGFzdCB2YWx1ZSB3aGVuIHVzaW5nIGxvY2FsIGFyZ3NcIiAoYXJpdHkgOiBfIENhbGxiYWNrX2FyaXR5LnQpXTtcbiAgICByZWYgTm9uZVxuICA7O1xuXG4gIGxldCBzZXQxIHQgYSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMSB7IGFyZzEgPSBhIH0pXG4gICAgfCBTb21lIChUdXBsZTEgYXJncykgLT4gYXJncy5hcmcxIDwtIGFcbiAgOztcblxuICBsZXQgc2V0MiB0IGEgYiA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMiB7IGFyZzEgPSBhOyBhcmcyID0gYiB9KVxuICAgIHwgU29tZSAoVHVwbGUyIGFyZ3MpIC0+XG4gICAgICBhcmdzLmFyZzEgPC0gYTtcbiAgICAgIGFyZ3MuYXJnMiA8LSBiXG4gIDs7XG5cbiAgbGV0IHNldDMgdCBhIGIgYyA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMyB7IGFyZzEgPSBhOyBhcmcyID0gYjsgYXJnMyA9IGMgfSlcbiAgICB8IFNvbWUgKFR1cGxlMyBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBjXG4gIDs7XG5cbiAgbGV0IHNldDQgdCBhIGIgYyBkID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHQgOj0gU29tZSAoVHVwbGU0IHsgYXJnMSA9IGE7IGFyZzIgPSBiOyBhcmczID0gYzsgYXJnNCA9IGQgfSlcbiAgICB8IFNvbWUgKFR1cGxlNCBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBjO1xuICAgICAgYXJncy5hcmc0IDwtIGRcbiAgOztcblxuICBsZXQgc2V0NSB0IGFyZzEgYXJnMiBhcmczIGFyZzQgYXJnNSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlNSB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQ7IGFyZzUgfSlcbiAgICB8IFNvbWUgKFR1cGxlNSBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGFyZzE7XG4gICAgICBhcmdzLmFyZzIgPC0gYXJnMjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBhcmczO1xuICAgICAgYXJncy5hcmc0IDwtIGFyZzQ7XG4gICAgICBhcmdzLmFyZzUgPC0gYXJnNVxuICA7O1xuXG4gIGxldCBzZW5kICh0eXBlIGNhbGxiYWNrKSAodCA6IGNhbGxiYWNrIHQpIChjYWxsYmFjayA6IGNhbGxiYWNrKSA6IHVuaXQgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKFR1cGxlMSB7IGFyZzEgfSkgLT4gY2FsbGJhY2sgYXJnMVxuICAgIHwgU29tZSAoVHVwbGUyIHsgYXJnMTsgYXJnMiB9KSAtPiBjYWxsYmFjayBhcmcxIGFyZzJcbiAgICB8IFNvbWUgKFR1cGxlMyB7IGFyZzE7IGFyZzI7IGFyZzMgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzNcbiAgICB8IFNvbWUgKFR1cGxlNCB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzMgYXJnNFxuICAgIHwgU29tZSAoVHVwbGU1IHsgYXJnMTsgYXJnMjsgYXJnMzsgYXJnNDsgYXJnNSB9KSAtPiBjYWxsYmFjayBhcmcxIGFyZzIgYXJnMyBhcmc0IGFyZzVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBBbGxvd1xuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZVxuICAgIHwgUmFpc2VcbiAgW0BAZGVyaXZpbmcgZW51bWVyYXRlLCBzZXhwX29mXVxuXG4gIGxldCBhbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgPSBmdW5jdGlvblxuICAgIHwgQWxsb3cgLT4gdHJ1ZVxuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZSAtPiB0cnVlXG4gICAgfCBSYWlzZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBzYXZlX2xhc3RfdmFsdWVfZXhuIHQgY2FsbGJhY2tfYXJpdHkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZSAtPiBTb21lIChMYXN0X3ZhbHVlLmNyZWF0ZV9leG4gY2FsbGJhY2tfYXJpdHkpXG4gICAgfCBBbGxvdyAtPiBOb25lXG4gICAgfCBSYWlzZSAtPiBOb25lXG4gIDs7XG5lbmRcblxubW9kdWxlIEJ1c19pZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5tb2R1bGUgU3Vic2NyaWJlciA9IHN0cnVjdFxuICB0eXBlICdjYWxsYmFjayB0ID1cbiAgICB7IGJ1c19pZCA6IEJ1c19pZC50XG4gICAgOyBjYWxsYmFjayA6ICdjYWxsYmFja1xuICAgIDsgZXh0cmFjdF9leG4gOiBib29sXG4gICAgOyAoKiBbc3Vic2NyaWJlcnNfaW5kZXhdIGlzIHRoZSBpbmRleCBvZiB0aGlzIHN1YnNjcmliZXIgaW4gdGhlIGJ1cydzIFtzdWJzY3JpYmVyc11cbiAgICAgICAgIGFycmF5LiAgWy0xXSBpbmRpY2F0ZXMgdGhhdCB0aGlzIHN1YnNjcmliZXIgaXMgbm90IHN1YnNjcmliZWQuICopXG4gICAgICBtdXRhYmxlIHN1YnNjcmliZXJzX2luZGV4IDogaW50XG4gICAgOyBvbl9jYWxsYmFja19yYWlzZSA6IChFcnJvci50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgb25fY2xvc2UgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IHN1YnNjcmliZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgaXNfc3Vic2NyaWJlZCB0IH50b18gPSB0LnN1YnNjcmliZXJzX2luZGV4ID49IDAgJiYgQnVzX2lkLmVxdWFsIHQuYnVzX2lkIHRvX1xuXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGNhbGxiYWNrID0gX1xuICAgICAgICA7IGJ1c19pZCA9IF9cbiAgICAgICAgOyBleHRyYWN0X2V4blxuICAgICAgICA7IHN1YnNjcmliZXJzX2luZGV4XG4gICAgICAgIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgICAgICAgOyBvbl9jbG9zZSA9IF9cbiAgICAgICAgOyBzdWJzY3JpYmVkX2Zyb21cbiAgICAgICAgfVxuICAgIDogU2V4cC50XG4gICAgPVxuICAgIExpc3RcbiAgICAgIFsgQXRvbSBcIkJ1cy5TdWJzY3JpYmVyLnRcIlxuICAgICAgOyBbJW1lc3NhZ2VcbiAgICAgICAgXCJcIlxuICAgICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDpcbiAgICAgICAgICAgIChpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmcgdGhlbiBOb25lIGVsc2UgU29tZSBzdWJzY3JpYmVyc19pbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChpbnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIChvbl9jYWxsYmFja19yYWlzZSA6ICgoRXJyb3IudCAtPiB1bml0KSBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgfmV4dHJhY3RfZXhuOlxuICAgICAgICAgICAgKGlmIGV4dHJhY3RfZXhuIHRoZW4gU29tZSB0cnVlIGVsc2UgTm9uZSA6IChib29sIG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICAoc3Vic2NyaWJlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YnVzX2lkOmlnbm9yZVxuICAgICAgICB+Y2FsbGJhY2s6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgICB+ZXh0cmFjdF9leG46aWdub3JlXG4gICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDppZ25vcmVcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlOmlnbm9yZVxuICAgICAgICB+b25fY2xvc2U6aWdub3JlXG4gICAgICAgIH5zdWJzY3JpYmVkX2Zyb206aWdub3JlKVxuICA7O1xuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAgIH5jYWxsYmFja1xuICAgICAgICB+YnVzX2lkXG4gICAgICAgIH5leHRyYWN0X2V4blxuICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXhcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgIH5vbl9jbG9zZVxuICAgID1cbiAgICB7IGJ1c19pZFxuICAgIDsgY2FsbGJhY2tcbiAgICA7IGV4dHJhY3RfZXhuXG4gICAgOyBzdWJzY3JpYmVyc19pbmRleFxuICAgIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgICA7IG9uX2Nsb3NlXG4gICAgOyBzdWJzY3JpYmVkX2Zyb21cbiAgICB9XG4gIDs7XG5lbmRcblxudHlwZSAoJ2NhbGxiYWNrLCAncGhhbnRvbSkgdCA9XG4gIHsgYnVzX2lkIDogQnVzX2lkLnRcbiAgOyBuYW1lIDogSW5mby50IG9wdGlvblxuICA7IGNhbGxiYWNrX2FyaXR5IDogJ2NhbGxiYWNrIENhbGxiYWNrX2FyaXR5LnRcbiAgOyBjcmVhdGVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gIDsgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIDogT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLnRcbiAgOyBvbl9jYWxsYmFja19yYWlzZSA6IEVycm9yLnQgLT4gdW5pdFxuICA7IGxhc3RfdmFsdWUgOiAnY2FsbGJhY2sgTGFzdF92YWx1ZS50IG9wdGlvblxuICA7IG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gIDsgbXV0YWJsZSB3cml0ZV9ldmVyX2NhbGxlZCA6IGJvb2xcbiAgOyBtdXRhYmxlIG51bV9zdWJzY3JpYmVycyA6IGludFxuICA7ICgqIFtzdWJzY3JpYmVyc10gY29udGFpbnMgYWxsIHN1YnNjcmliZXJzIHRvIHRoZSBidXMsIGluIGEgY29udGlndW91cyBwcmVmaXggZnJvbVxuICAgICAgIGluZGV4IFswXSB0byBbbnVtX3N1YnNjcmliZXJzIC0gMV0uICopXG4gICAgbXV0YWJsZSBzdWJzY3JpYmVycyA6ICdjYWxsYmFjayBTdWJzY3JpYmVyLnQgT3B0aW9uX2FycmF5LnRcbiAgOyAoKiBbY2FsbGJhY2tzXSBob2xkcyB0aGUgY2FsbGJhY2tzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGVudHJpZXMgb2YgW3N1YnNjcmliZXJzXS4gKilcbiAgICBtdXRhYmxlIGNhbGxiYWNrcyA6ICdjYWxsYmFjayBPcHRpb25fYXJyYXkudFxuICA7IG11dGFibGUgdW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA6ICdjYWxsYmFjayBTdWJzY3JpYmVyLnQgbGlzdFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3RcbiAgICAgIF9cbiAgICAgIF9cbiAgICAgIHsgYnVzX2lkID0gX1xuICAgICAgOyBjYWxsYmFja19hcml0eVxuICAgICAgOyBjYWxsYmFja3MgPSBfXG4gICAgICA7IGNyZWF0ZWRfZnJvbVxuICAgICAgOyBsYXN0X3ZhbHVlID0gX1xuICAgICAgOyBuYW1lXG4gICAgICA7IG51bV9zdWJzY3JpYmVyc1xuICAgICAgOyBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICAgIDsgb25fY2FsbGJhY2tfcmFpc2UgPSBfXG4gICAgICA7IHN0YXRlXG4gICAgICA7IHN1YnNjcmliZXJzXG4gICAgICA7IHdyaXRlX2V2ZXJfY2FsbGVkXG4gICAgICA7IHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPSBfXG4gICAgICB9XG4gID1cbiAgbGV0IHN1YnNjcmliZXJzID1cbiAgICBBcnJheS5pbml0IG51bV9zdWJzY3JpYmVycyB+ZjooZnVuIGkgLT4gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBzdWJzY3JpYmVycyBpKVxuICBpblxuICBbJW1lc3NhZ2VcbiAgICBcIlwiXG4gICAgICAobmFtZSA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgKGNhbGxiYWNrX2FyaXR5IDogXyBDYWxsYmFja19hcml0eS50KVxuICAgICAgKGNyZWF0ZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAob25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIDogT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLnQpXG4gICAgICAoc3RhdGUgOiBTdGF0ZS50KVxuICAgICAgKHdyaXRlX2V2ZXJfY2FsbGVkIDogYm9vbClcbiAgICAgIChzdWJzY3JpYmVycyA6IF8gU3Vic2NyaWJlci50IEFycmF5LnQpXVxuOztcblxudHlwZSAoJ2NhbGxiYWNrLCAncGhhbnRvbSkgYnVzID0gKCdjYWxsYmFjaywgJ3BoYW50b20pIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHJlYWRfb25seSB0ID0gKHQgOj4gKF8sIHJlYWQpIHQpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+YnVzX2lkOmlnbm9yZVxuICAgICAgfm5hbWU6aWdub3JlXG4gICAgICB+Y2FsbGJhY2tzOlxuICAgICAgICAoY2hlY2sgKGZ1biBjYWxsYmFja3MgLT5cbiAgICAgICAgICAgYXNzZXJ0IChPcHRpb25fYXJyYXkubGVuZ3RoIGNhbGxiYWNrcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5zdWJzY3JpYmVycyk7XG4gICAgICAgICAgIGZvciBpID0gMCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIGNhbGxiYWNrcyAtIDEgZG9cbiAgICAgICAgICAgICBpZiBpIDwgdC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgICAgICB0aGVuIGludmFyaWFudF9hIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGNhbGxiYWNrcyBpKVxuICAgICAgICAgICAgIGVsc2UgYXNzZXJ0IChPcHRpb25fYXJyYXkuaXNfbm9uZSBjYWxsYmFja3MgaSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+Y2FsbGJhY2tfYXJpdHk6aWdub3JlXG4gICAgICB+Y3JlYXRlZF9mcm9tOmlnbm9yZVxuICAgICAgfm51bV9zdWJzY3JpYmVyczooY2hlY2sgKGZ1biBudW1fc3Vic2NyaWJlcnMgLT4gYXNzZXJ0IChudW1fc3Vic2NyaWJlcnMgPj0gMCkpKVxuICAgICAgfm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZTppZ25vcmVcbiAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgIH5sYXN0X3ZhbHVlOmlnbm9yZVxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfndyaXRlX2V2ZXJfY2FsbGVkOmlnbm9yZVxuICAgICAgfnN1YnNjcmliZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBzdWJzY3JpYmVycyAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBzdWJzY3JpYmVycyAtIDEgZG9cbiAgICAgICAgICAgICBpZiBpIDwgdC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCBzdWJzY3JpYmVyID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBzdWJzY3JpYmVycyBpIGluXG4gICAgICAgICAgICAgICBTdWJzY3JpYmVyLmludmFyaWFudCBpbnZhcmlhbnRfYSBzdWJzY3JpYmVyO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChpID0gc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCkpXG4gICAgICAgICAgICAgZWxzZSBhc3NlcnQgKE9wdGlvbl9hcnJheS5pc19ub25lIHN1YnNjcmliZXJzIGkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGU6aWdub3JlKVxuOztcblxubGV0IGlzX2Nsb3NlZCB0ID0gU3RhdGUuaXNfY2xvc2VkIHQuc3RhdGVcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICgnY2FsbGJhY2ssIHJlYWRfd3JpdGUpIGJ1cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbm1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICgnY2FsbGJhY2ssIHJlYWQpIGJ1cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbmxldFtAY29sZF0gc3RhcnRfd3JpdGVfZmFpbGluZyB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJbQnVzLndyaXRlXSBjYWxsZWQgb24gY2xvc2VkIGJ1c1wiIHQgWyVzZXhwX29mOiAoXywgXykgdF1cbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJbQnVzLndyaXRlXSBjYWxsZWQgZnJvbSBjYWxsYmFjayBvbiB0aGUgc2FtZSBidXNcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiAoXywgXykgdF1cbiAgfCBPa190b193cml0ZSAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCBjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LnN1YnNjcmliZXJzXG5cbmxldCBtYXliZV9zaHJpbmtfY2FwYWNpdHkgdCA9XG4gIGlmIHQubnVtX3N1YnNjcmliZXJzICogNCA8PSBjYXBhY2l0eSB0XG4gIHRoZW4gKFxuICAgIGxldCBkZXNpcmVkX2NhcGFjaXR5ID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgICBsZXQgY29weV9hbmRfc2hyaW5rIGFycmF5ID1cbiAgICAgIGxldCBuZXdfYXJyYXkgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46ZGVzaXJlZF9jYXBhY2l0eSBpblxuICAgICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgICAgfnNyYzphcnJheVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5kc3Q6bmV3X2FycmF5XG4gICAgICAgIH5kc3RfcG9zOjBcbiAgICAgICAgfmxlbjp0Lm51bV9zdWJzY3JpYmVycztcbiAgICAgIG5ld19hcnJheVxuICAgIGluXG4gICAgdC5zdWJzY3JpYmVycyA8LSBjb3B5X2FuZF9zaHJpbmsgdC5zdWJzY3JpYmVycztcbiAgICB0LmNhbGxiYWNrcyA8LSBjb3B5X2FuZF9zaHJpbmsgdC5jYWxsYmFja3MpXG47O1xuXG5sZXQgYWRkX3N1YnNjcmliZXIgdCAoc3Vic2NyaWJlciA6IF8gU3Vic2NyaWJlci50KSB+YXRfc3Vic2NyaWJlcnNfaW5kZXggPVxuICBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IDwtIGF0X3N1YnNjcmliZXJzX2luZGV4O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5zdWJzY3JpYmVycyBhdF9zdWJzY3JpYmVyc19pbmRleCBzdWJzY3JpYmVyO1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5jYWxsYmFja3MgYXRfc3Vic2NyaWJlcnNfaW5kZXggc3Vic2NyaWJlci5jYWxsYmFja1xuOztcblxubGV0IHJlbW92ZV9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgPVxuICBsZXQgc3Vic2NyaWJlcnNfaW5kZXggPSBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IGluXG4gIHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXggPC0gLTE7XG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LnN1YnNjcmliZXJzIHN1YnNjcmliZXJzX2luZGV4O1xuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5jYWxsYmFja3Mgc3Vic2NyaWJlcnNfaW5kZXhcbjs7XG5cbmxldCB1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgPVxuICBsZXQgc3Vic2NyaWJlcl9pbmRleCA9IHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXggaW5cbiAgbGV0IGxhc3Rfc3Vic2NyaWJlcl9pbmRleCA9IHQubnVtX3N1YnNjcmliZXJzIC0gMSBpblxuICByZW1vdmVfc3Vic2NyaWJlciB0IHN1YnNjcmliZXI7XG4gIGlmIHN1YnNjcmliZXJfaW5kZXggPCBsYXN0X3N1YnNjcmliZXJfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IGxhc3Rfc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyBsYXN0X3N1YnNjcmliZXJfaW5kZXggaW5cbiAgICByZW1vdmVfc3Vic2NyaWJlciB0IGxhc3Rfc3Vic2NyaWJlcjtcbiAgICBhZGRfc3Vic2NyaWJlciB0IGxhc3Rfc3Vic2NyaWJlciB+YXRfc3Vic2NyaWJlcnNfaW5kZXg6c3Vic2NyaWJlcl9pbmRleCk7XG4gIHQubnVtX3N1YnNjcmliZXJzIDwtIHQubnVtX3N1YnNjcmliZXJzIC0gMTtcbiAgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHRcbjs7XG5cbmxldCB1bnN1YnNjcmliZSB0IHN1YnNjcmliZXIgPVxuICBpZiBTdWJzY3JpYmVyLmlzX3N1YnNjcmliZWQgc3Vic2NyaWJlciB+dG9fOnQuYnVzX2lkXG4gIHRoZW4gKFxuICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT5cbiAgICAgIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA8LSBzdWJzY3JpYmVyIDo6IHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZVxuICAgIHwgQ2xvc2VkIC0+XG4gICAgICAoKiBUaGlzIGNhbiBoYXBwZW4gaWYgZHVyaW5nIFt3cml0ZV0sIFt1bnN1YnNjcmliZV0gaXMgY2FsbGVkIGFmdGVyIFtjbG9zZV0uICBXZVxuICAgICAgICAgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBiZWNhdXNlIGFsbCBzdWJzY3JpYmVycyB3aWxsIGJlIHVuc3Vic2NyaWJlZCBhZnRlciB0aGVcbiAgICAgICAgIFt3cml0ZV0gZmluaXNoZXMuICopXG4gICAgICAoKVxuICAgIHwgT2tfdG9fd3JpdGUgLT4gdW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0IHN1YnNjcmliZXIpXG47O1xuXG5sZXRbQGNvbGRdIHVuc3Vic2NyaWJlX2FmdGVyX2ZpbmlzaF93cml0ZSB0ID1cbiAgTGlzdC5pdGVyIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSB+ZjoodW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0KTtcbiAgdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlIDwtIFtdXG47O1xuXG5sZXRbQGNvbGRdIHVuc3Vic2NyaWJlX2FsbCB0ID1cbiAgYXNzZXJ0IChpc19jbG9zZWQgdCk7XG4gIGZvciBpID0gMCB0byB0Lm51bV9zdWJzY3JpYmVycyAtIDEgZG9cbiAgICBsZXQgc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyBpIGluXG4gICAgT3B0aW9uLml0ZXIgc3Vic2NyaWJlci5vbl9jbG9zZSB+ZjooZnVuIG9uX2Nsb3NlIC0+IG9uX2Nsb3NlICgpKTtcbiAgICByZW1vdmVfc3Vic2NyaWJlciB0IHN1YnNjcmliZXJcbiAgZG9uZTtcbiAgdC5udW1fc3Vic2NyaWJlcnMgPC0gMDtcbiAgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHRcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZmluaXNoX3dyaXRlIHQgPVxuICBpZiBub3QgKExpc3QuaXNfZW1wdHkgdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlKSB0aGVuIHVuc3Vic2NyaWJlX2FmdGVyX2ZpbmlzaF93cml0ZSB0O1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT4gdW5zdWJzY3JpYmVfYWxsIHRcbiAgfCBPa190b193cml0ZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiB0LnN0YXRlIDwtIE9rX3RvX3dyaXRlXG47O1xuXG5sZXRbQGNvbGRdIGNsb3NlIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT4gKClcbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiB0LnN0YXRlIDwtIENsb3NlZFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgdC5zdGF0ZSA8LSBDbG9zZWQ7XG4gICAgdW5zdWJzY3JpYmVfYWxsIHRcbjs7XG5cbmxldCBjYWxsX29uX2NhbGxiYWNrX3JhaXNlIHQgZXJyb3IgPVxuICB0cnkgdC5vbl9jYWxsYmFja19yYWlzZSBlcnJvciB3aXRoXG4gIHwgZXhuIC0+XG4gICAgY2xvc2UgdDtcbiAgICByYWlzZSBleG5cbjs7XG5cbmxldCBjYWxsYmFja19yYWlzZWQgdCBpIGV4biA9XG4gICgqIFtpXSB3YXMgaW5jcmVtZW50ZWQgYmVmb3JlIHRoZSBjYWxsYmFjayB3YXMgY2FsbGVkLCBzbyB3ZSBoYXZlIHRvIHN1YnRyYWN0IG9uZVxuICAgICBoZXJlLiAgV2UgZG8gdGhpcyBoZXJlLCByYXRoZXIgdGhhbiBhdCB0aGUgY2FsbCBzaXRlLCBiZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgICBjYWxsIHNpdGVzIGR1ZSB0byB0aGUgb3B0aW1pemF0aW9ucyBuZWVkZWQgdG8ga2VlcCB0aGlzIHplcm8tYWxsb2MuICopXG4gIGxldCBzdWJzY3JpYmVyID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LnN1YnNjcmliZXJzIChpIC0gMSkgaW5cbiAgbGV0IGVycm9yID1cbiAgICBtYXRjaCBzdWJzY3JpYmVyLmV4dHJhY3RfZXhuIHdpdGhcbiAgICB8IHRydWUgLT4gRXJyb3Iub2ZfZXhuIGV4blxuICAgIHwgZmFsc2UgLT5cbiAgICAgICgqIFRoaXMgW0JhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCldIGlzIGludGVuZGVkIHRvIGdyYWIgdGhlIGJhY2t0cmFjZSBvZiB0aGUgW3RyeVxuICAgICAgICAgLi4uIHdpdGhdJ3MgdGhhdCBjYWxsIFtjYWxsYmFja19yYWlzZWRdLiAgVGhlIGNhbGwgaXMgaGVyZSByYXRoZXIgdGhhbiBlYXJsaWVyIHNvXG4gICAgICAgICB0aGF0IHdlIG9ubHkgZG8gaXQgd2hlbiBbc3Vic2NyaWJlci5leHRyYWN0X2V4biA9IGZhbHNlXS4gKilcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJCdXMgc3Vic2NyaWJlciByYWlzZWRcIlxuICAgICAgICAgIChleG4gOiBleG4pXG4gICAgICAgICAgKGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50KVxuICAgICAgICAgIChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpXVxuICAgICAgfD4gWyVvZl9zZXhwOiBFcnJvci50XVxuICBpblxuICBtYXRjaCBzdWJzY3JpYmVyLm9uX2NhbGxiYWNrX3JhaXNlIHdpdGhcbiAgfCBOb25lIC0+IGNhbGxfb25fY2FsbGJhY2tfcmFpc2UgdCBlcnJvclxuICB8IFNvbWUgZiAtPlxuICAgICh0cnkgZiBlcnJvciB3aXRoXG4gICAgIHwgZXhuIC0+XG4gICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICBjYWxsX29uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgICB0XG4gICAgICAgICAobGV0IG9yaWdpbmFsX2Vycm9yID0gZXJyb3IgaW5cbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiQnVzIHN1YnNjcmliZXIncyBbb25fY2FsbGJhY2tfcmFpc2VdIHJhaXNlZFwiXG4gICAgICAgICAgICAgIChleG4gOiBleG4pXG4gICAgICAgICAgICAgIChiYWNrdHJhY2UgOiBCYWNrdHJhY2UudClcbiAgICAgICAgICAgICAgKG9yaWdpbmFsX2Vycm9yIDogRXJyb3IudCldXG4gICAgICAgICAgfD4gWyVvZl9zZXhwOiBFcnJvci50XSkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXRfY2FsbGJhY2sgYSBpID1cbiAgKCogV2UgY29uc2lkZXJlZCB1c2luZyBbT3B0aW9uX2FycmF5LmdldF9zb21lX2V4bl0gYW5kXG4gICAgIFtPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4bl0gaGVyZSwgYnV0IGJvdGggYXJlIHNpZ25pZmljYW50bHkgc2xvd2VyLiAgQ2hlY2tcbiAgICAgdGhlIHdyaXRlIGJlbmNobWFya3MgaW4gW2JlbmNoX2J1cy5tbF0gYmVmb3JlIGNoYW5naW5nIHRoaXMuICopXG4gIE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSBhIGlcbjs7XG5cbmxldCB3cml0ZV9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZV9sb2NhbF9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIChhMSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlMl9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMlxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTNfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiBhMyA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTIgYTNcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGU0X25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExIGEyIGEzIGE0XG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlNV9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyIGEzIGE0IGE1ID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMiBhMyBhNCBhNVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbigqIFRoZSBbd3JpdGVfTl0gZnVuY3Rpb25zIGFyZSB3cml0dGVuIHRvIG1pbmltaXNlIHJlZ2lzdGVycyBsaXZlIGFjcm9zcyBmdW5jdGlvbiBjYWxsc1xuICAgKHRoZXNlIGhhdmUgdG8gYmUgc3BpbGxlZCkuICBUaGV5IGFyZSBhbHNvIGFubm90YXRlZCBmb3IgcGFydGlhbCBpbmxpbmluZyAodGhlXG4gICBvbmUtY2FsbGJhY2sgY2FzZSBiZWNvbWVzIGlubGluZWQgd2hlcmVhcyB0aGUgPjEtY2FsbGJhY2stY2FzZSByZXF1aXJlcyBhIGZ1cnRoZXJcbiAgIGRpcmVjdCBjYWxsKS4gKilcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB3cml0ZSB0IGExID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGVfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDEgbGFzdF92YWx1ZSBhMSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGVfbG9jYWwgdCAoYTEgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGVfbG9jYWxfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUyIHQgYTEgYTIgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTJfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMik7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDIgbGFzdF92YWx1ZSBhMSBhMilcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUzIHQgYTEgYTIgYTMgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTNfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDMgbGFzdF92YWx1ZSBhMSBhMiBhMylcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGU0IHQgYTEgYTIgYTMgYTQgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIGE0IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTRfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDQgbGFzdF92YWx1ZSBhMSBhMiBhMyBhNClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGU1IHQgYTEgYTIgYTMgYTQgYTUgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIGE0IGE1IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTVfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCBhNSk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDUgbGFzdF92YWx1ZSBhMSBhMiBhMyBhNCBhNSlcbjs7XG5cbmxldCBhbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgdCA9XG4gIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS5hbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICB0Lm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZVxuOztcblxubGV0IGNyZWF0ZV9leG5cbiAgICAgID9uYW1lXG4gICAgICBjcmVhdGVkX2Zyb21cbiAgICAgIGNhbGxiYWNrX2FyaXR5XG4gICAgICB+KG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA6IE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS50KVxuICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gID1cbiAgbGV0IGxhc3RfdmFsdWUgPVxuICAgIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS5zYXZlX2xhc3RfdmFsdWVfZXhuXG4gICAgICBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICAgIGNhbGxiYWNrX2FyaXR5XG4gIGluXG4gIHsgYnVzX2lkID0gQnVzX2lkLmNyZWF0ZSAoKVxuICA7IG5hbWVcbiAgOyBjYWxsYmFja19hcml0eVxuICA7IGNyZWF0ZWRfZnJvbVxuICA7IG51bV9zdWJzY3JpYmVycyA9IDBcbiAgOyBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgOyBvbl9jYWxsYmFja19yYWlzZVxuICA7IGxhc3RfdmFsdWVcbiAgOyBzdWJzY3JpYmVycyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjowXG4gIDsgY2FsbGJhY2tzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjBcbiAgOyBzdGF0ZSA9IE9rX3RvX3dyaXRlXG4gIDsgd3JpdGVfZXZlcl9jYWxsZWQgPSBmYWxzZVxuICA7IHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPSBbXVxuICB9XG47O1xuXG5sZXQgY2FuX3N1YnNjcmliZSB0ID0gYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIHQgfHwgbm90IHQud3JpdGVfZXZlcl9jYWxsZWRcblxubGV0IGVubGFyZ2VfY2FwYWNpdHkgdCA9XG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgbGV0IG5ld19jYXBhY2l0eSA9IEludC5tYXggMSAoY2FwYWNpdHkgKiAyKSBpblxuICBsZXQgY29weV9hbmRfZG91YmxlIGFycmF5ID1cbiAgICBsZXQgbmV3X2FycmF5ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0IH5zcmM6YXJyYXkgfnNyY19wb3M6MCB+ZHN0Om5ld19hcnJheSB+ZHN0X3BvczowIH5sZW46Y2FwYWNpdHk7XG4gICAgbmV3X2FycmF5XG4gIGluXG4gIHQuc3Vic2NyaWJlcnMgPC0gY29weV9hbmRfZG91YmxlIHQuc3Vic2NyaWJlcnM7XG4gIHQuY2FsbGJhY2tzIDwtIGNvcHlfYW5kX2RvdWJsZSB0LmNhbGxiYWNrc1xuOztcblxubGV0IHN1YnNjcmliZV9leG5cbiAgICAgID8oZXh0cmFjdF9leG4gPSBmYWxzZSlcbiAgICAgID9vbl9jYWxsYmFja19yYWlzZVxuICAgICAgP29uX2Nsb3NlXG4gICAgICB0XG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIH5mOmNhbGxiYWNrXG4gID1cbiAgaWYgbm90IChjYW5fc3Vic2NyaWJlIHQpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQnVzLnN1YnNjcmliZV9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCJcbiAgICAgIFslc2V4cCB+fihzdWJzY3JpYmVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSwgeyBidXMgPSAodCA6IChfLCBfKSB0KSB9XVxuICAgICAgWyVzZXhwX29mOiBTZXhwLnRdO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT5cbiAgICAoKiBBbnl0aGluZyB0aGF0IHNhdGlzZmllcyB0aGUgcmV0dXJuIHR5cGUgd2lsbCBkby4gIFNpbmNlIHRoZSBzdWJzY3JpYmVyIGlzIG5ldmVyXG4gICAgICAgc3RvcmVkIGluIHRoZSBhcnJheXMsIHRoZSBbb25fY2xvc2VdIGNhbGxiYWNrIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiAqKVxuICAgIFN1YnNjcmliZXIuY3JlYXRlXG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIH5idXNfaWQ6dC5idXNfaWRcbiAgICAgIH5jYWxsYmFja1xuICAgICAgfmV4dHJhY3RfZXhuXG4gICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6KC0xKVxuICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICB+b25fY2xvc2VcbiAgfCBPa190b193cml0ZSB8IFdyaXRlX2luX3Byb2dyZXNzIC0+XG4gICAgKCogVGhlIGNvZGUgYmVsb3cgc2lkZSBlZmZlY3RzIFt0XSwgd2hpY2ggcG90ZW50aWFsbHkgY291bGQgaW50ZXJmZXJlIHdpdGggYSB3cml0ZSBpblxuICAgICAgIHByb2dyZXNzLiAgSG93ZXZlciwgdGhlIHNpZGUgZWZmZWN0cyBkb24ndCBjaGFuZ2UgdGhlIHByZWZpeCBvZiBbdC5jYWxsYmFja3NdIHRoYXRcbiAgICAgICB3cml0ZSB1c2VzOyB0aGV5IG9ubHkgY2hhbmdlIFt0LmNhbGxiYWNrc10gYmV5b25kIHRoYXQgcHJlZml4LiAgQW5kIGFsbCB3cml0ZXNcbiAgICAgICBleHRyYWN0IFt0Lm51bV9zdWJzY3JpYmVyc10gYXQgdGhlIHN0YXJ0LCBzbyB0aGF0IHRoZXkgd2lsbCBub3Qgc2VlIGFueSBzdWJzZXF1ZW50XG4gICAgICAgY2hhbmdlcyB0byBpdC4gKilcbiAgICBsZXQgc3Vic2NyaWJlciA9XG4gICAgICBTdWJzY3JpYmVyLmNyZWF0ZVxuICAgICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgICAgfmJ1c19pZDp0LmJ1c19pZFxuICAgICAgICB+Y2FsbGJhY2tcbiAgICAgICAgfmV4dHJhY3RfZXhuXG4gICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDp0Lm51bV9zdWJzY3JpYmVyc1xuICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2VcbiAgICAgICAgfm9uX2Nsb3NlXG4gICAgaW5cbiAgICBpZiBjYXBhY2l0eSB0ID0gdC5udW1fc3Vic2NyaWJlcnMgdGhlbiBlbmxhcmdlX2NhcGFjaXR5IHQ7XG4gICAgYWRkX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyIH5hdF9zdWJzY3JpYmVyc19pbmRleDp0Lm51bV9zdWJzY3JpYmVycztcbiAgICB0Lm51bV9zdWJzY3JpYmVycyA8LSB0Lm51bV9zdWJzY3JpYmVycyArIDE7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNlbmQgbGFzdF92YWx1ZSBjYWxsYmFjayk7XG4gICAgc3Vic2NyaWJlclxuOztcblxubGV0IGl0ZXJfZXhuID9leHRyYWN0X2V4biB0IHN1YnNjcmliZWRfZnJvbSB+ZiA9XG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCdXMuaXRlcl9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWdub3JlIChzdWJzY3JpYmVfZXhuID9leHRyYWN0X2V4biB0IHN1YnNjcmliZWRfZnJvbSB+ZiA6IF8gU3Vic2NyaWJlci50KVxuOztcblxubW9kdWxlIEZvbGRfYXJpdHkgPSBzdHJ1Y3RcbiAgdHlwZSAoXywgXywgXykgdCA9XG4gICAgfCBBcml0eTEgOiAoJ2EgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTMgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTQgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTVcbiAgICAgIDogKCAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0XG4gICAgICAgICwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ3NcbiAgICAgICAgLCAncyApXG4gICAgICAgICAgdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBmb2xkX2V4blxuICAgICAgP2V4dHJhY3RfZXhuXG4gICAgICAodHlwZSBjIGYgcylcbiAgICAgICh0IDogKGMsIF8pIHQpXG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIChmb2xkX2FyaXR5IDogKGMsIGYsIHMpIEZvbGRfYXJpdHkudClcbiAgICAgIH4oaW5pdCA6IHMpXG4gICAgICB+KGYgOiBmKVxuICA9XG4gIGxldCBzdGF0ZSA9IHJlZiBpbml0IGluXG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCdXMuZm9sZF9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaXRlcl9leG5cbiAgICA/ZXh0cmFjdF9leG5cbiAgICB0XG4gICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgfmY6XG4gICAgICAobWF0Y2ggZm9sZF9hcml0eSB3aXRoXG4gICAgICAgfCBBcml0eTEgLT4gZnVuIGExIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExXG4gICAgICAgfCBBcml0eTIgLT4gZnVuIGExIGEyIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyXG4gICAgICAgfCBBcml0eTMgLT4gZnVuIGExIGEyIGEzIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzXG4gICAgICAgfCBBcml0eTQgLT4gZnVuIGExIGEyIGEzIGE0IC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzIGE0XG4gICAgICAgfCBBcml0eTUgLT4gZnVuIGExIGEyIGEzIGE0IGE1IC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzIGE0IGE1KVxuOztcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMgY2FsbGJhY2sgd3JpdGUgPVxuICAgICAgbGV0IGJ1c19yID0gcmVhZF9vbmx5IGJ1cyBpblxuICAgICAgaWdub3JlIChzdWJzY3JpYmVfZXhuIGJ1c19yIFslaGVyZV0gfmY6Y2FsbGJhY2sgOiBfIFN1YnNjcmliZXIudCk7XG4gICAgICBsZXQgc3RhcnRpbmdfbWlub3Jfd29yZHMgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICAgICAgbGV0IHN0YXJ0aW5nX21ham9yX3dvcmRzID0gR2MubWFqb3Jfd29yZHMgKCkgaW5cbiAgICAgIHdyaXRlICgpO1xuICAgICAgbGV0IGVuZGluZ19taW5vcl93b3JkcyA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gICAgICBsZXQgZW5kaW5nX21ham9yX3dvcmRzID0gR2MubWFqb3Jfd29yZHMgKCkgaW5cbiAgICAgIFsldGVzdF9yZXN1bHQ6IGludF0gKGVuZGluZ19taW5vcl93b3JkcyAtIHN0YXJ0aW5nX21pbm9yX3dvcmRzKSB+ZXhwZWN0OjA7XG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChlbmRpbmdfbWFqb3Jfd29yZHMgLSBzdGFydGluZ19tYWpvcl93b3JkcykgfmV4cGVjdDowXG4gICAgOztcblxuICAgICgqIFRoaXMgdGVzdCBvbmx5IHdvcmtzIHdoZW4gW3dyaXRlXSBpcyBwcm9wZXJseSBpbmxpbmVkLiAgSXQgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXRcbiAgICAgICBbd3JpdGVdIG5ldmVyIGFsbG9jYXRlcyBpbiBhbnkgc2l0dWF0aW9uLiAgRm9yIGV4YW1wbGUsIGlmIHRoaXMgdGVzdCBpcyBtb3ZlZCB0b1xuICAgICAgIGFub3RoZXIgbGlicmFyeSBhbmQgcnVuIHdpdGggWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlLCBpdCBmYWlscy4gKilcbiAgICBsZXQldGVzdF91bml0IFwid3JpdGUgZG9lc24ndCBhbGxvY2F0ZSB3aGVuIGlubGluZWRcIiA9XG4gICAgICBsZXQgY3JlYXRlIGNyZWF0ZWRfZnJvbSBhcml0eSA9XG4gICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICBjcmVhdGVkX2Zyb21cbiAgICAgICAgICBhcml0eVxuICAgICAgICAgIH5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGU6UmFpc2VcbiAgICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2U6RXJyb3IucmFpc2VcbiAgICAgIGluXG4gICAgICBsZXQgYnVzMSA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5MSBpblxuICAgICAgbGV0IGJ1czIgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTIgaW5cbiAgICAgIGxldCBidXMzID0gY3JlYXRlIFslaGVyZV0gQXJpdHkzIGluXG4gICAgICBsZXQgYnVzNCA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5NCBpblxuICAgICAgbGV0IGJ1czUgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTUgaW5cbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uIGJ1czEgKGZ1biAoKSAtPiAoKSkgKGZ1biAoKSAtPiB3cml0ZSBidXMxICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uIGJ1czIgKGZ1biAoKSAoKSAtPiAoKSkgKGZ1biAoKSAtPiB3cml0ZTIgYnVzMiAoKSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMzIChmdW4gKCkgKCkgKCkgLT4gKCkpIChmdW4gKCkgLT4gd3JpdGUzIGJ1czMgKCkgKCkgKCkpO1xuICAgICAgYXNzZXJ0X25vX2FsbG9jYXRpb25cbiAgICAgICAgYnVzNFxuICAgICAgICAoZnVuICgpICgpICgpICgpIC0+ICgpKVxuICAgICAgICAoZnVuICgpIC0+IHdyaXRlNCBidXM0ICgpICgpICgpICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uXG4gICAgICAgIGJ1czVcbiAgICAgICAgKGZ1biAoKSAoKSAoKSAoKSAoKSAtPiAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiB3cml0ZTUgYnVzNSAoKSAoKSAoKSAoKSAoKSlcbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsX2ludGZcblxuKCogVGhpcyBwb3NpdGlvbiBzaG93cyB1cCBpbiB0ZXN0cyBpbiBhIHdheSB0aGF0IGlzIGRpZmZpY3VsdCB0byBzdXBwcmVzcywgc28gd2UgZGVmaW5lIGl0XG4gICBoZXJlIGluIGEgcGxhY2UgdGhhdCBpcyB1bmxpa2VseSB0byBjaGFuZ2UgdmVyeSBvZnRlbiAqKVxubGV0IGR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbl90ZXN0cyA9IFslaGVyZV1cblxubW9kdWxlIE1ha2UgKENvbm4gOiBDbG9zYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm4gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENvbm5cblxuICAgIGxldCBzZXhwX29mX3QgKF8gOiB0KSA6IFNleHAudCA9IEF0b20gXCI8Q29ubi50PlwiXG4gIGVuZFxuXG4gIHR5cGUgY29ubiA9IENvbm4udFxuXG4gIG1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdFxuICAgICAgfCBPYnRhaW5lZF9hZGRyZXNzIG9mICdhZGRyZXNzXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IG9mIEVycm9yLnRcbiAgICAgIHwgQ29ubmVjdGVkIG9mIChjb25uW0BzZXhwLm9wYXF1ZV0pXG4gICAgICB8IERpc2Nvbm5lY3RlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhZGRyZXNzIGV2ZW50ID0gJ2FkZHJlc3MgdFxuXG4gICAgbW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICAgIHsgc2VydmVyX25hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvbl9ldmVudCA6ICdhZGRyZXNzIGV2ZW50IC0+IHVuaXQgRGVmZXJyZWQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IGxvZ19sZXZlbCA9IGZ1bmN0aW9uXG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCB8IENvbm5lY3RlZCBfIHwgRGlzY29ubmVjdGVkIHwgT2J0YWluZWRfYWRkcmVzcyBfIC0+IGBJbmZvXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IF8gLT4gYEVycm9yXG4gICAgOztcblxuICAgIGxldCBoYW5kbGUgdCB7IEhhbmRsZXIuc2VydmVyX25hbWUgPSBfOyBvbl9ldmVudCB9ID0gb25fZXZlbnQgdFxuICBlbmRcblxuICAoKiBBIHBlcnNpc3RlbnQgY29ubmVjdGlvbiB0aGF0IGlzIHBvbHltb3JwaGljIGluIHRoZSBhZGRyZXNzIHR5cGUuICBXZSBoaWRlIGF3YXkgdGhpc1xuICAgICB0eXBlIGxhdGVyIHNpbmNlIGl0IG9ubHkgYXBwZWFycyBpbiB0aGUgdHlwZSBvZiBbY3JlYXRlXS4gKilcbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgeyBnZXRfYWRkcmVzcyA6IHVuaXQgLT4gJ2FkZHJlc3MgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IGNvbm5lY3QgOiAnYWRkcmVzcyAtPiBDb25uLnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IHJldHJ5X2RlbGF5IDogdW5pdCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZSBjb25uIDogWyBgT2sgb2YgQ29ubi50IHwgYENsb3NlX3N0YXJ0ZWQgXSBJdmFyLnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2Nvbm5lY3RfcmVzdWx0IDogQ29ubi50IE9yX2Vycm9yLnQgSXZhci50XG4gICAgICA7IGV2ZW50X2hhbmRsZXIgOiAnYWRkcmVzcyBFdmVudC5IYW5kbGVyLnRcbiAgICAgIDsgZXZlbnRfYnVzIDogKHVuaXQgRXZlbnQudCAtPiB1bml0LCByZWFkX3dyaXRlKSBCdXMudFxuICAgICAgOyBjbG9zZV9zdGFydGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBkb24ndF9yZWNvbm5lY3QgOiB1bml0IEl2YXIudFxuICAgICAgOyBhZGRyZXNzX2VxdWFsIDogJ2FkZHJlc3MgLT4gJ2FkZHJlc3MgLT4gYm9vbFxuICAgICAgOyBzZXhwX29mX2FkZHJlc3MgOiAnYWRkcmVzcyAtPiBTZXhwLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2VydmVyX25hbWUgdCA9IHQuZXZlbnRfaGFuZGxlci5zZXJ2ZXJfbmFtZVxuXG4gICAgbGV0IGhhbmRsZV9ldmVudCAodHlwZSBhZGRyZXNzKSB0IChldmVudCA6IGFkZHJlc3MgRXZlbnQudCkgPVxuICAgICAgQnVzLndyaXRlXG4gICAgICAgIHQuZXZlbnRfYnVzXG4gICAgICAgIChtYXRjaCBldmVudCB3aXRoXG4gICAgICAgICB8IE9idGFpbmVkX2FkZHJlc3MgKF8gOiBhZGRyZXNzKSAtPiBPYnRhaW5lZF9hZGRyZXNzICgpXG4gICAgICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCAtPiBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgICAgIHwgRmFpbGVkX3RvX2Nvbm5lY3QgZSAtPiBGYWlsZWRfdG9fY29ubmVjdCBlXG4gICAgICAgICB8IENvbm5lY3RlZCBjb25uIC0+IENvbm5lY3RlZCBjb25uXG4gICAgICAgICB8IERpc2Nvbm5lY3RlZCAtPiBEaXNjb25uZWN0ZWQpO1xuICAgICAgRXZlbnQuaGFuZGxlIGV2ZW50IHQuZXZlbnRfaGFuZGxlclxuICAgIDs7XG5cbiAgICAoKiBUaGlzIGZ1bmN0aW9uIGZvY3VzZXMgaW4gb24gdGhlIHRoZSBlcnJvciBpdHNlbGYsIGRpc2NhcmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2hcbiAgICAgICBtb25pdG9yIGNhdWdodCB0aGUgZXJyb3IsIGlmIGFueS5cblxuICAgICAgIElmIHdlIGRvbid0IGRvIHRoaXMsIHdlIHNvbWV0aW1lcyBlbmQgdXAgd2l0aCBub2lzeSBsb2dzIHdoaWNoIHJlcG9ydCB0aGUgc2FtZSBlcnJvclxuICAgICAgIGFnYWluIGFuZCBhZ2FpbiwgZGlmZmVyaW5nIG9ubHkgYXMgdG8gd2hhdCBtb25pdG9yIGNhdWdodCB0aGVtLiAqKVxuICAgIGxldCBzYW1lX2Vycm9yIGUxIGUyID1cbiAgICAgIGxldCB0b19zZXhwIGUgPSBFeG4uc2V4cF9vZl90IChNb25pdG9yLmV4dHJhY3RfZXhuIChFcnJvci50b19leG4gZSkpIGluXG4gICAgICBTZXhwLmVxdWFsICh0b19zZXhwIGUxKSAodG9fc2V4cCBlMilcbiAgICA7O1xuXG4gICAgKCogQ29udGludWUgdHJ5aW5nIHRvIGNvbm5lY3QgdW50aWwgd2UgYXJlIGFibGUgdG8gZG8gc28sIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGJvdGhcbiAgICAgICB0aGUgbmV3IGNvbm5lY3Rpb24gYW5kIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIG9uY2Ugd2UgYXJlIHJlYWR5IGZvclxuICAgICAgIHRoZSBuZXh0IHJlY29ubmVjdGlvbiBhdHRlbXB0LiAqKVxuICAgIGxldCB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHQgPVxuICAgICAgKCogV2UgdGFrZSBjYXJlIG5vdCB0byBzcGFtIGxvZ3Mgd2l0aCB0aGUgc2FtZSBtZXNzYWdlIG92ZXIgYW5kIG92ZXIgYnkgY29tcGFyaW5nXG4gICAgICAgICBlYWNoIGxvZyBtZXNzYWdlIHRoZSB0aGUgcHJldmlvdXMgb25lIG9mIHRoZSBzYW1lIHR5cGUuICopXG4gICAgICBsZXQgcHJldmlvdXNfYWRkcmVzcyA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgcHJldmlvdXNfZXJyb3IgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICB0LmdldF9hZGRyZXNzICgpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIGFkZHIgLT5cbiAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19hZGRyZXNzID1cbiAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2FkZHJlc3MgLT4gdC5hZGRyZXNzX2VxdWFsIGFkZHIgcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgcHJldmlvdXNfYWRkcmVzcyA6PSBTb21lIGFkZHI7XG4gICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoT2J0YWluZWRfYWRkcmVzcyBhZGRyKSlcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+IHQuY29ubmVjdCBhZGRyXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICAoKiBDYXRjaCBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgdXNlci1wcm92aWRlZCBbdC5nZXRfYWRkcmVzc10gb3IgW3QuY29ubmVjdF0gKilcbiAgICAgICAgRGVmZXJyZWQuT3JfZXJyb3IudHJ5X3dpdGhfam9pbiB+ZXh0cmFjdF9leG46YW1fcnVubmluZ190ZXN0IGNvbm5lY3RcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWQ7XG4gICAgICAgICAgcmV0dXJuIGBDbG9zZV9zdGFydGVkKVxuICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICB0aGVuIHJldHVybiBgRG9uJ3RfcmVjb25uZWN0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nID0gdC5yZXRyeV9kZWxheSAoKSBpblxuICAgICAgICAgIGxldCViaW5kIGNvbm5lY3RfcmVzdWx0ID0gY29ubmVjdCAoKSBpblxuICAgICAgICAgIEl2YXIuZmlsbCB0Lm5leHRfY29ubmVjdF9yZXN1bHQgY29ubmVjdF9yZXN1bHQ7XG4gICAgICAgICAgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIG1hdGNoIGNvbm5lY3RfcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIGNvbm4gLT5cbiAgICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gKGBPayBjb25uKTtcbiAgICAgICAgICAgIHJldHVybiAoYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSlcbiAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfZXJyb3IgPVxuICAgICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfZXJyb3Igd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2VyciAtPiBzYW1lX2Vycm9yIGVyciBwcmV2aW91c19lcnJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwcmV2aW91c19lcnJvciA6PSBTb21lIGVycjtcbiAgICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2Vycm9yXG4gICAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoRmFpbGVkX3RvX2Nvbm5lY3QgZXJyKSlcbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgIERlZmVycmVkLmFueVxuICAgICAgICAgICAgICBbIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmdcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0ID1cbiAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgKCk7XG4gICAgICBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKTtcbiAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWRcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgICh0eXBlIGFkZHJlc3MpXG4gICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICAgPyhvbl9ldmVudCA9IGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gICAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgICAgPyhyYW5kb21fc3RhdGUgPSBgU3RhdGUgUmFuZG9tLlN0YXRlLmRlZmF1bHQpXG4gICAgICAgICAgPyh0aW1lX3NvdXJjZSA9IFRpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgICB+YWRkcmVzczoobW9kdWxlIEFkZHJlc3MgOiBBZGRyZXNzIHdpdGggdHlwZSB0ID0gYWRkcmVzcylcbiAgICAgICAgICBnZXRfYWRkcmVzc1xuICAgICAgPVxuICAgICAgbGV0IGV2ZW50X2hhbmRsZXIgPSB7IEV2ZW50LkhhbmRsZXIuc2VydmVyX25hbWU7IG9uX2V2ZW50IH0gaW5cbiAgICAgIGxldCBkZWZhdWx0X3JldHJ5X2RlbGF5ID1cbiAgICAgICAgRm4uY29uc3QgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgKGlmIGFtX3J1bm5pbmdfdGVzdCB0aGVuIDAuMSBlbHNlIDEwLikpXG4gICAgICBpblxuICAgICAgbGV0IG5vbl9yYW5kb21pemVkX2RlbGF5ID0gT3B0aW9uLnZhbHVlIHJldHJ5X2RlbGF5IH5kZWZhdWx0OmRlZmF1bHRfcmV0cnlfZGVsYXkgaW5cbiAgICAgIGxldCByZXRyeV9kZWxheV9zcGFuID1cbiAgICAgICAgbWF0Y2ggcmFuZG9tX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgTm9uX3JhbmRvbSAtPiBub25fcmFuZG9taXplZF9kZWxheVxuICAgICAgICB8IGBTdGF0ZSByYW5kb21fc3RhdGUgLT5cbiAgICAgICAgICBmdW4gKCkgLT5cbiAgICAgICAgICAgIGxldCBzcGFuID0gbm9uX3JhbmRvbWl6ZWRfZGVsYXkgKCkgaW5cbiAgICAgICAgICAgIGxldCBzcGFuID0gVGltZV9ucy5TcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBSYW5kb20uU3RhdGUuZmxvYXQgcmFuZG9tX3N0YXRlIChzcGFuICouIDAuMykgaW5cbiAgICAgICAgICAgIGxldCB3YWl0ID1cbiAgICAgICAgICAgICAgaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlXG4gICAgICAgICAgICAgIHRoZW4gc3BhbiArLiBkaXN0YW5jZVxuICAgICAgICAgICAgICBlbHNlIHNwYW4gLS4gZGlzdGFuY2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBUaW1lX25zLlNwYW4ub2Zfc2VjIHdhaXRcbiAgICAgIGluXG4gICAgICBsZXQgcmV0cnlfZGVsYXkgKCkgPSBUaW1lX3NvdXJjZS5hZnRlciB0aW1lX3NvdXJjZSAocmV0cnlfZGVsYXlfc3BhbiAoKSkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgeyBldmVudF9oYW5kbGVyXG4gICAgICAgIDsgZXZlbnRfYnVzID1cbiAgICAgICAgICAgIEJ1cy5jcmVhdGVfZXhuXG4gICAgICAgICAgICAgIChpZiBhbV9ydW5uaW5nX3Rlc3QgdGhlbiBkdW1teV9zcmNfcG9zX3RoYXRfc2hvd3NfdXBfaW5fdGVzdHMgZWxzZSBbJWhlcmVdKVxuICAgICAgICAgICAgICBBcml0eTFcbiAgICAgICAgICAgICAgfm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZTpBbGxvd19hbmRfc2VuZF9sYXN0X3ZhbHVlXG4gICAgICAgICAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgICAgOyBnZXRfYWRkcmVzc1xuICAgICAgICA7IGNvbm5lY3RcbiAgICAgICAgOyBuZXh0X2Nvbm5lY3RfcmVzdWx0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyByZXRyeV9kZWxheVxuICAgICAgICA7IGNvbm4gPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX2ZpbmlzaGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBkb24ndF9yZWNvbm5lY3QgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGFkZHJlc3NfZXF1YWwgPSBBZGRyZXNzLmVxdWFsXG4gICAgICAgIDsgc2V4cF9vZl9hZGRyZXNzID0gQWRkcmVzcy5zZXhwX29mX3RcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgICgqIHRoaXMgbG9vcCBmaW5pc2hlcyBvbmNlIFtjbG9zZSB0XSBoYXMgYmVlbiBjYWxsZWQsIGluIHdoaWNoIGNhc2UgaXQgbWFrZXMgc3VyZSB0b1xuICAgICAgICAgbGVhdmUgW3QuY29ubl0gZmlsbGVkIHdpdGggW2BDbG9zZV9zdGFydGVkXS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICBAQCBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKCkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQlYmluZCAoKSA9IGhhbmRsZV9ldmVudCB0IEF0dGVtcHRpbmdfdG9fY29ubmVjdCBpblxuICAgICAgICBtYXRjaCViaW5kIHRyeV9jb25uZWN0aW5nX3VudGlsX3N1Y2Nlc3NmdWwgdCB3aXRoXG4gICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gcmV0dXJuIChgRmluaXNoZWQgKCkpXG4gICAgICAgIHwgYERvbid0X3JlY29ubmVjdCAtPlxuICAgICAgICAgIGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQ7XG4gICAgICAgICAgcmV0dXJuIChgRmluaXNoZWQgKCkpXG4gICAgICAgIHwgYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSAtPlxuICAgICAgICAgIGxldCViaW5kICgpID0gaGFuZGxlX2V2ZW50IHQgKENvbm5lY3RlZCBjb25uKSBpblxuICAgICAgICAgIGxldCViaW5kICgpID0gQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uIGluXG4gICAgICAgICAgdC5jb25uIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIGxldCViaW5kICgpID0gaGFuZGxlX2V2ZW50IHQgRGlzY29ubmVjdGVkIGluXG4gICAgICAgICAgKCogd2FpdHMgdW50aWwgW3JldHJ5X2RlbGF5ICgpXSB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIHRpbWUganVzdCBiZWZvcmUgd2UgbGFzdFxuICAgICAgICAgICAgIHRyaWVkIHRvIGNvbm5lY3QgcmF0aGVyIHRoYW4gdGhlIHRpbWUgd2Ugbm90aWNlZCBiZWluZyBkaXNjb25uZWN0ZWQsIHNvIHRoYXQgaWZcbiAgICAgICAgICAgICBhIGxvbmctbGl2ZWQgY29ubmVjdGlvbiBkaWVzLCB3ZSB3aWxsIGF0dGVtcHQgdG8gcmVjb25uZWN0IGltbWVkaWF0ZWx5LiAqKVxuICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgRGVmZXJyZWQuYW55XG4gICAgICAgICAgICAgIFsgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZ1xuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGBSZXBlYXQgKCkpO1xuICAgICAgdFxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkIHQgPVxuICAgICAgKCogVGFrZSBjYXJlIG5vdCB0byByZXR1cm4gYSBjb25uZWN0aW9uIHRoYXQgaXMga25vd24gdG8gYmUgY2xvc2VkIGF0IHRoZSB0aW1lXG4gICAgICAgICBbY29ubmVjdGVkXSB3YXMgY2FsbGVkLiAgVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2xpZW50IGNvZGUgdGhhdCBiZWhhdmVzIGxpa2VcbiAgICAgICAgIHtbXG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgPj49IGZ1biBjMSAtPlxuICAgICAgICAgICAuLi5cbiAgICAgICAgICAgICBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCBjMVxuICAgICAgICAgICAoKiBhdCB0aGlzIHBvaW50IHdlIGFyZSBpbiBhIHJhY2Ugd2l0aCB0aGUgc2FtZSBjYWxsIGluc2lkZVxuICAgICAgICAgICAgICBwZXJzaXN0ZW50X2NsaWVudC5tbCAqKVxuICAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgKCogZGVwZW5kaW5nIG9uIGhvdyB0aGUgcmFjZSB0dXJucyBvdXQsIHdlIGRvbid0IHdhbnQgdG8gZ2V0IGEgY2xvc2VkIGNvbm5lY3Rpb25cbiAgICAgICAgICAgICAgaGVyZSAqKVxuICAgICAgICAgICA+Pj0gZnVuIGMyIC0+XG4gICAgICAgICAgIC4uLlxuICAgICAgICAgXX1cbiAgICAgICAgIFRoaXMgZG9lc24ndCByZW1vdmUgdGhlIHJhY2UgY29uZGl0aW9uLCBidXQgaXQgbWFrZXMgaXQgbGVzcyBsaWtlbHkgdG8gaGFwcGVuLlxuICAgICAgKilcbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGxldCBkID0gSXZhci5yZWFkIHQuY29ubiBpblxuICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBkXG4gICAgICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgICAgICAgICAgfCBgT2sgY29ubiAtPiByZXR1cm4gY29ubilcbiAgICAgICAgfCBTb21lIGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgICAgIHwgU29tZSAoYE9rIGNvbm4pIC0+XG4gICAgICAgICAgaWYgQ29ubi5pc19jbG9zZWQgY29ublxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIGdpdmUgdGhlIHJlY29ubmVjdGlvbiBsb29wIGEgY2hhbmNlIHRvIG92ZXJ3cml0ZSB0aGUgaXZhciAqKVxuICAgICAgICAgICAgQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uID4+PSBsb29wXG4gICAgICAgICAgZWxzZSByZXR1cm4gY29ublxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiB0ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCB0LmNvbm4pIHdpdGhcbiAgICAgIHwgTm9uZSB8IFNvbWUgYENsb3NlX3N0YXJ0ZWQgLT4gTm9uZVxuICAgICAgfCBTb21lIChgT2sgY29ubikgLT4gU29tZSBjb25uXG4gICAgOztcblxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbiAgICBsZXQgY2xvc2UgdCA9XG4gICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICB0aGVuXG4gICAgICAgICgqIEFub3RoZXIgY2FsbCB0byBjbG9zZSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLiAgV2FpdCBmb3IgaXQgdG8gZmluaXNoLiAqKVxuICAgICAgICBjbG9zZV9maW5pc2hlZCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCAoKTtcbiAgICAgICAgSXZhci5yZWFkIHQuY29ublxuICAgICAgICA+Pj0gZnVuIGNvbm5fb3B0IC0+XG4gICAgICAgIChtYXRjaCBjb25uX29wdCB3aXRoXG4gICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgIHwgYE9rIGNvbm4gLT4gQ29ubi5jbG9zZSBjb25uKVxuICAgICAgICA+PnwgZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkID1cbiAgICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwiUGVyc2lzdGVudCBjb25uZWN0aW9uIGNsb3NlZFwiXVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHQgPVxuICAgICAgaWYgaXNfY2xvc2VkIHRcbiAgICAgIHRoZW4gcmV0dXJuIGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGN1cnJlbnRfY29ubmVjdGlvbiB0IHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiBub3QgKENvbm4uaXNfY2xvc2VkIHgpIC0+IHJldHVybiAoT2sgeClcbiAgICAgICAgfCBTb21lIChfIDogQ29ubi50KSB8IE5vbmUgLT5cbiAgICAgICAgICBEZWZlcnJlZC5jaG9vc2VcbiAgICAgICAgICAgIFsgY2hvaWNlIChJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkKVxuICAgICAgICAgICAgOyBjaG9pY2UgKEl2YXIucmVhZCB0Lm5leHRfY29ubmVjdF9yZXN1bHQpIEZuLmlkXG4gICAgICAgICAgICBdKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIHQgPVxuICAgICAgSXZhci5maWxsX2lmX2VtcHR5IHQuZG9uJ3RfcmVjb25uZWN0ICgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID0gVCA6ICdhZGRyZXNzIFBvbHkudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IFBvbHkuc2V4cF9vZl90IHQuc2V4cF9vZl9hZGRyZXNzIHRcblxuICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIChUIHQpID1cbiAgICBQb2x5LmNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCB0XG4gIDs7XG5cbiAgbGV0IGNsb3NlX2ZpbmlzaGVkIChUIHQpID0gUG9seS5jbG9zZV9maW5pc2hlZCB0XG4gIGxldCBpc19jbG9zZWQgKFQgdCkgPSBQb2x5LmlzX2Nsb3NlZCB0XG4gIGxldCBldmVudF9idXMgKFQgdCkgPSBCdXMucmVhZF9vbmx5IHQuZXZlbnRfYnVzXG4gIGxldCBjbG9zZSAoVCB0KSA9IFBvbHkuY2xvc2UgdFxuICBsZXQgc2VydmVyX25hbWUgKFQgdCkgPSBQb2x5LnNlcnZlcl9uYW1lIHRcbiAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiAoVCB0KSA9IFBvbHkuY3VycmVudF9jb25uZWN0aW9uIHRcbiAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHRcbiAgbGV0IGNvbm5lY3RlZCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkIHRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgID9yYW5kb21fc3RhdGVcbiAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgIH5jb25uZWN0XG4gICAgICAgIH5hZGRyZXNzXG4gICAgICAgIGdldF9hZGRyZXNzXG4gICAgPVxuICAgIFRcbiAgICAgIChQb2x5LmNyZWF0ZVxuICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICAgP3JhbmRvbV9zdGF0ZVxuICAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgICB+Y29ubmVjdFxuICAgICAgICAgfmFkZHJlc3NcbiAgICAgICAgIGdldF9hZGRyZXNzKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbnR5cGUgdCA9XG4gIHwgS3JiXG4gIHwgS3JiX3Rlc3RfbW9kZVxuICB8IFJwY1xuW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBiaW5faW9dXG5cbmxldCBtYWdpY193b3JkID0gZnVuY3Rpb25cbiAgfCBLcmIgLT4gXCJLUkIyXCJcbiAgfCBLcmJfdGVzdF9tb2RlIC0+IFwiS0JUXCJcbiAgfCBScGMgLT4gXCJSUENcIlxuOztcblxubGV0IGdlbl9tYWdpY19udW1iZXIgd29yZCA9XG4gIFN0cmluZy50b19saXN0X3JldiB3b3JkXG4gIHw+IExpc3QuZm9sZCB+aW5pdDowIH5mOihmdW4gYWNjIGMgLT4gKGFjYyAqIDI1NikgKyBDaGFyLnRvX2ludCBjKVxuOztcblxubGV0IG1hZ2ljX251bWJlciB0ID0gZ2VuX21hZ2ljX251bWJlciAobWFnaWNfd29yZCB0KVxubGV0IGJ5X21hZ2ljX251bWJlciA9IEludC5NYXAub2ZfYWxpc3RfZXhuIChMaXN0Lm1hcCBhbGwgfmY6KGZ1biBwIC0+IG1hZ2ljX251bWJlciBwLCBwKSlcblxuKCogV2Ugb25jZSBtaW50ZWQgYSBuZXcgbWFnaWMgbnVtYmVyIGZvciBLcmIgaW4gb3JkZXIgdG8gY2hhbmdlIHRoZSBwcm90b2NvbFxuICAgbmVnb3RpYXRpb24uICBMZXQncyBiZSBjYXJlZnVsIHRoYXQgd2UgZG9uJ3QgcmV1c2UgdGhlIG9sZCBtYWdpYyBudW1iZXIgKilcbmxldCByZXRpcmVkX2tyYl93b3JkID0gXCJLUkJcIlxuXG4oKiBFbnN1cmUgdGVzdHMgYnJlYWsgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlIGNoYW5nZWQgKilcbmxldCV0ZXN0X3VuaXQgXCJtYWdpYyBudW1iZXJzXCIgPVxuICBhc3NlcnQgKGdlbl9tYWdpY19udW1iZXIgcmV0aXJlZF9rcmJfd29yZCA9IDRfMzQ2XzQ0Myk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIEtyYiA9IDg0M18yMDdfMjQzKTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgS3JiX3Rlc3RfbW9kZSA9IDVfNTIxXzk5NSk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIFJwYyA9IDRfNDExXzQ3NClcbjs7XG5cbm1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICBsZXQgYWxsX21hZ2ljX251bWJlcnNfaW5jbHVkaW5nX3JldGlyZWQgPVxuICAgIGxhenkgKHJldGlyZWRfa3JiX3dvcmQgOjogTGlzdC5tYXAgYWxsIH5mOm1hZ2ljX3dvcmQgfD4gTGlzdC5tYXAgfmY6Z2VuX21hZ2ljX251bWJlcilcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBMaXN0X3dpdGhfbWF4X2xlbl9pbnRmXG5cbm1vZHVsZSBNYWtlIChDb25maWcgOiBDb25maWcpID0gc3RydWN0XG4gIGluY2x1ZGUgQ29uZmlnXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICBsZXQgX19iaW5fcmVhZF90X18gPSBMaXN0Ll9fYmluX3JlYWRfdF9fXG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgICB0cnkgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgd2l0aFxuICAgIHwgZXhuIC0+IEV4bi5yZXJhaXNlIGV4biAoSW5mby50b19zdHJpbmdfaHVtIGNvbnRleHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCAoYmluX3JlYWRlcl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3QgYmluX3JlYWRlcl9hLnJlYWRcbiAgICA7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCAoYmluX2EgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2hhcGUgPSBiaW5fc2hhcGVfdCBiaW5fYS5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IGJpbl9hLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IGJpbl9hLnJlYWRlclxuICAgIH1cbiAgOztcblxuICBsZXQgb2ZfbGlzdF9leG4gbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBpZiBsZW4gPiBtYXhfbGVuXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJMaXN0IGlzIHRvbyBsYXJnZVwiIChjb250ZXh0IDogSW5mby50KSAobGVuIDogaW50KSAobWF4X2xlbiA6IGludCldO1xuICAgIGxcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID0gTGlzdC5zZXhwX29mX3RcblxuICBsZXQgdF9vZl9zZXhwIHRfb2ZfYSBzZXhwID1cbiAgICBsZXQgdCA9IExpc3QudF9vZl9zZXhwIHRfb2ZfYSBzZXhwIGluXG4gICAgb2ZfbGlzdF9leG4gdFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgS25vd25fcHJvdG9jb2wgPSBLbm93bl9wcm90b2NvbFxuXG5sZXQgbWF4X3N1cHBvcnRlZF92ZXJzaW9uID0gMV8wMDBfMDAwXG5sZXQgb3V0c2lkZV9tYXhfc3VwcG9ydGVkX3ZlcnNpb25fcmFuZ2UgbnVtID0gbnVtID4gbWF4X3N1cHBvcnRlZF92ZXJzaW9uXG5cbm1vZHVsZSBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUgPVxuICBMaXN0X3dpdGhfbWF4X2xlbi5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgbWF4X2xlbiA9IDEwMFxuICAgIGxldCBjb250ZXh0ID0gSW5mby5vZl9zdHJpbmcgXCJQcm90b2NvbF92ZXJzaW9uX2hlYWRlclwiXG4gIGVuZClcblxudHlwZSB0ID0gaW50IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS50XG5bQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzID0gbGF6eSAoTWFwLmtleV9zZXQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyKVxuXG5sZXQgY3JlYXRlX2V4biA/KGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA9IFtdKSB+cHJvdG9jb2wgfnN1cHBvcnRlZF92ZXJzaW9ucyAoKSA9XG4gIGxldCBwcm90b2NvbF9tYWdpY19udW1iZXIgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgaW5cbiAgaWYgTGlzdC5leGlzdHMgc3VwcG9ydGVkX3ZlcnNpb25zIH5mOm91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJVbmFibGUgdG8gYWR2ZXJ0aXNlIHZlcnNpb25zIGxhcmdlciB0aGFuIG1heCBzdXBwb3J0ZWQgdmVyc2lvblwiXG4gICAgICAgICAgKG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA6IGludClcbiAgICAgICAgICAoc3VwcG9ydGVkX3ZlcnNpb25zIDogaW50IGxpc3QpXTtcbiAgaWYgTGlzdC5leGlzdHMgYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIH5mOihGbi5ub24gb3V0c2lkZV9tYXhfc3VwcG9ydGVkX3ZlcnNpb25fcmFuZ2UpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbYWRkaXRpb25hbF9tYWdpY19udW1iZXJzXSBzaG91bGRuJ3QgYmUgd2l0aGluIFttYXhfc3VwcG9ydGVkX3ZlcnNpb25dIHJhbmdlXCJcbiAgICAgICAgICAobWF4X3N1cHBvcnRlZF92ZXJzaW9uIDogaW50KVxuICAgICAgICAgIChhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgOiBpbnQgbGlzdCldO1xuICBpZiBMaXN0LmV4aXN0c1xuICAgICAgIGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVyc1xuICAgICAgIH5mOihTZXQubWVtIChmb3JjZSBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzKSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlthZGRpdGlvbmFsX21hZ2ljX251bWJlcnNdIHNob3VsZG4ndCBiZSBvdmVybGFwcGluZyB3aXRoIHBvdGVudGlhbCBcXFxuICAgICAgICAgW3Byb3RvY29sX21hZ2ljX251bWJlcl1zXCJcbiAgICAgICAgICAoYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIDogaW50IGxpc3QpXG4gICAgICAgICAgfmtub3duX3Byb3RvY29sX21hZ2ljX251bWJlcnM6KGZvcmNlIGtub3duX3Byb3RvY29sX21hZ2ljX251bWJlcnMgOiBJbnQuU2V0LnQpXTtcbiAgcHJvdG9jb2xfbWFnaWNfbnVtYmVyIDo6IChhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgQCBzdXBwb3J0ZWRfdmVyc2lvbnMpXG4gIHw+IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5vZl9saXN0X2V4blxuOztcblxubGV0IHJhd192ZXJzaW9uX2xpc3QgKHQgOiB0KSA9ICh0IDo+IGludCBsaXN0KVxuXG5sZXQgZ2V0X3Byb3RvY29sICh0IDogdCkgPVxuICBsZXQgcHJvdG9jb2xzLCB2ZXJzaW9ucywgX2FkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA9XG4gICAgTGlzdC5wYXJ0aXRpb24zX21hcFxuICAgICAgKHQgOj4gaW50IGxpc3QpXG4gICAgICB+ZjooZnVuIHYgLT5cbiAgICAgICAgbWF0Y2ggTWFwLmZpbmQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyIHYgd2l0aFxuICAgICAgICB8IFNvbWUgcCAtPiBgRnN0IHBcbiAgICAgICAgfCBOb25lIC0+IGlmIG91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlIHYgdGhlbiBgVHJkIHYgZWxzZSBgU25kIHYpXG4gIGluXG4gIG1hdGNoIHByb3RvY29scyB3aXRoXG4gIHwgW10gLT4gT2sgKE5vbmUsIEludC5TZXQub2ZfbGlzdCB2ZXJzaW9ucylcbiAgfCBbIHAgXSAtPiBPayAoU29tZSBwLCBJbnQuU2V0Lm9mX2xpc3QgdmVyc2lvbnMpXG4gIHwgXyAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBtdWx0aXBsZSBtYWdpYyBudW1iZXJzIHNlZW4uXCJcbiAgICAgICAgICAocHJvdG9jb2xzIDogS25vd25fcHJvdG9jb2wudCBsaXN0KVxuICAgICAgICAgICh2ZXJzaW9ucyA6IGludCBsaXN0KV1cbjs7XG5cbmxldCBuZWdvdGlhdGUgfmFsbG93X2xlZ2FjeV9wZWVyIH4odXMgOiB0KSB+KHBlZXIgOiB0KSA9XG4gIGxldCBvcGVuIE9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgbGV0JWJpbmQgdXNfcHJvdG9jb2wsIHVzX3ZlcnNpb25zID0gZ2V0X3Byb3RvY29sIHVzIGluXG4gIGxldCViaW5kIHBlZXJfcHJvdG9jb2wsIHBlZXJfdmVyc2lvbnMgPSBnZXRfcHJvdG9jb2wgcGVlciBpblxuICBsZXQlYmluZCB1c19wcm90b2NvbCA9XG4gICAgbWF0Y2ggdXNfcHJvdG9jb2wgd2l0aFxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgfCBOb25lIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiTm8gbWFnaWMgbnVtYmVycyBzZWVuXCIgKHVzX3ZlcnNpb25zIDogSW50LlNldC50KV1cbiAgaW5cbiAgbGV0JWJpbmQgcGVlcl9wcm90b2NvbCA9XG4gICAgbWF0Y2ggcGVlcl9wcm90b2NvbCB3aXRoXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGFzc3VtZSBwZWVyIGlzIHNwZWFraW5nIG91ciBwcm90b2NvbCBpZiBbYWxsb3dfbGVnYWN5X3BlZXJdICopXG4gICAgICBpZiBhbGxvd19sZWdhY3lfcGVlclxuICAgICAgdGhlbiByZXR1cm4gdXNfcHJvdG9jb2xcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcGVlcl9wcm90b2NvbCA9IGBVbmtub3duIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IGNvbmZsaWN0aW5nIG1hZ2ljIHByb3RvY29sIG51bWJlcnNcIlxuICAgICAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgICAgICAocGVlcl9wcm90b2NvbCA6IFsgYFVua25vd24gXSldKVxuICBpblxuICBpZiBub3QgKFslY29tcGFyZS5lcXVhbDogS25vd25fcHJvdG9jb2wudF0gdXNfcHJvdG9jb2wgcGVlcl9wcm90b2NvbClcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBjb25mbGljdGluZyBtYWdpYyBwcm90b2NvbCBudW1iZXJzXCJcbiAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgIChwZWVyX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldXG4gIGVsc2UgKFxuICAgIGxldCBwcm90b2NvbCA9IHVzX3Byb3RvY29sIGluXG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciB1c192ZXJzaW9ucyBwZWVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBubyBzaGFyZWQgdmVyc2lvbiBudW1iZXJzXCJcbiAgICAgICAgICAgICh1c192ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChwZWVyX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKHByb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldKVxuOztcblxubGV0IG1hdGNoZXNfbWFnaWNfcHJlZml4ICh0IDogdCkgfnByb3RvY29sID1cbiAgbGV0IG1hZ2ljX251bWJlciA9IEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlciBwcm90b2NvbCBpblxuICBMaXN0Lm1lbSB+ZXF1YWw6SW50LmVxdWFsIChyYXdfdmVyc2lvbl9saXN0IHQpIG1hZ2ljX251bWJlclxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgPVxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXIgKG1hdGNoZXNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCkgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeCA9XG4gIGxldCBmIHQgPVxuICAgIExpc3QuZmluZCBLbm93bl9wcm90b2NvbC5hbGwgfmY6KGZ1biBwcm90b2NvbCAtPiBtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgdClcbiAgaW5cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIGYgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyX2Jpbl9zaXplID0gNVxuXG5tb2R1bGUgTWFnaWNfcHJlZml4X2Jpbl9yZXByID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICAoKiBUaGUgYmluIHByb3QgcmVwcmVzZW50YXRpb24gb2YgYSBwcm90b2NvbCB2ZXJzaW9uIGhlYWRlciBpcyB0aGUgc3RhbmRhcmRcbiAgICAgcmVwcmVzZW50YXRpb24gZm9yIGFuIGludCBsaXN0OlxuXG4gICAgIHwgbmF0MCBpbmRpY2F0aW5nIHNpemUgfCBlbGVtZW50IDAgfCBlbGVtZW50IDEgfCAuLi5cblxuICAgICBbY3JlYXRlX2V4bl0gd2lsbCBhbHdheXMgcHV0IHRoZSBrbm93biBwcm90b2NvbCBtYWdpYyBudW1iZXIgYXMgXCJlbGVtZW50IDBcIi5cblxuICAgICBUaGUgYmluIHNpemUgb2YgXCJuYXQwIGluZGljYXRpbmcgc2l6ZVwiIGFuZCBcImVsZW1lbnQgMFwiIGlzIGZpeGVkICh0aGVyZSBhcmUgZXhwZWN0XG4gICAgIHRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBuZXZlciBjaGFuZ2UgdGhlbSkuICopXG4gIGxldCBiaW5fc2l6ZSA9XG4gICAgYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICsgbWFnaWNfbnVtYmVyX2Jpbl9zaXplXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgKF9saXN0X2xlbmd0aCA6IEJpbl9wcm90Lk5hdDAudCkgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIGluXG4gICAgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBJbnQuX19iaW5fcmVhZF90X18gfVxuICA7O1xuZW5kXG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyXG4gICAgKGZ1biBtYWdpY19udW1iZXIgLT4gKE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlcikgbWFnaWNfbnVtYmVyKVxuICAgIE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fcmVhZGVyX3Rcbjs7XG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplID0gTWFnaWNfcHJlZml4X2Jpbl9yZXByLmJpbl9zaXplXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJhd192ZXJzaW9uX2xpc3QgPSByYXdfdmVyc2lvbl9saXN0XG5lbmRcblxubW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlX2xpc3Rfd2l0aF9tYXhfbGVuID0gTGlzdF93aXRoX21heF9sZW4uTWFrZVxuXG4gIGxldCBtYWdpY19udW1iZXJfYmluX3NpemUgPSBtYWdpY19udW1iZXJfYmluX3NpemVcbiAgbGV0IG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA9IG1heF9zdXBwb3J0ZWRfdmVyc2lvblxuZW5kXG5cbmxldCV0ZXN0X3VuaXQgXCJiaW4gc2l6ZXMgYXJlIG5vdCBjaGFuZ2VkIGJ5IGFjY2lkZW50XCIgPVxuICAoKiBFbnN1cmUgdGhlIGJpbl9zaXplIG9mIEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5tYXhfbGVuXG4gICAgIGlzIGFsd2F5cyAxLiBUaGlzIG1lYW5zIHRoYXQgcmVnYXJkbGVzcyBvZiBob3cgbG9uZyB0aGUgbGlzdCBvZiB2ZXJzaW9ucyBpbiB0aGVcbiAgICAgcHJvdG9jb2wgaGVhZGVyIGlzLCB0aGUgcmVwcmVzZW50YXRpb24gd2lsbCBiZSB0aGUgc2FtZSBudW1iZXIgb2YgYnl0ZXMuIFRoZVxuICAgICByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnQganVtcHMgdG8gMyBieXRlcyBhdCB0aGUgdmFsdWUgMTI4LiAqKVxuICBsZXQgYm91bmRlZF9saXN0X2Jpbl9zaXplID1cbiAgICBJbnQuYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICBpblxuICBhc3NlcnQgKGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9IDEpO1xuICBhc3NlcnQgKDYgPSBtYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpO1xuICBhc3NlcnQgKFxuICAgIGFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZXNfYmluX3NpemVcbiAgICA9IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSArIGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSlcbjs7XG4iLCJ0eXBlIHQgPSBCaW5fcHJvdC5OYXQwLnRcbltAQGRlcml2aW5nIGJpbl9zaGFwZSB+YmFzZXR5cGU6XCI4OTllMmY0YS00OTBhLTExZTYtYjY4Zi1iYmQ2MjQ3MjUxNmNcIl1cblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gIFslZXhwZWN0IHt8IDU5NWYyYTYwZjExODE2YjI5YTcyZGRhYjE3MDAyYjU2IHx9XVxuOztcblxubGV0IGJpbl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fbmF0MFxubGV0IGJpbl9zaXplX3QgPSBCaW5fcHJvdC5TaXplLmJpbl9zaXplX25hdDBcbmxldCBiaW5fd3JpdGVyX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0MFxubGV0IGJpbl93cml0ZV90ID0gQmluX3Byb3QuV3JpdGUuYmluX3dyaXRlX25hdDBcbmxldCBiaW5fcmVhZGVyX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl9yZWFkZXJfbmF0MFxubGV0IGJpbl9yZWFkX3QgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDBcblxubGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX3ZuYXQwID1cbiAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuOztcblxubGV0IG9mX2ludF9leG4gPSBCaW5fcHJvdC5OYXQwLm9mX2ludFxuIiwib3BlbiBDb3JlXG5vcGVuIFBvbHlcblxubGV0IG9mX3dyaXRlciB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9XG4gIGxldCB3cml0ZSBidWYgfnBvcyBhID1cbiAgICBsZXQgbGVuID0gTmF0MC5vZl9pbnRfZXhuIChzaXplIGEpIGluXG4gICAgbGV0IHBvcyA9IE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3MgbGVuIGluXG4gICAgd3JpdGUgYnVmIH5wb3MgYVxuICBpblxuICBsZXQgc2l6ZSBhID1cbiAgICBsZXQgbGVuID0gTmF0MC5vZl9pbnRfZXhuIChzaXplIGEpIGluXG4gICAgTmF0MC5iaW5fc2l6ZV90IGxlbiArICgobGVuIDogQmluX3Byb3QuTmF0MC50KSA6PiBpbnQpXG4gIGluXG4gIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZTsgc2l6ZSB9XG47O1xuXG5sZXQgb2ZfdHlwZV9jbGFzcyAoYmluX2EgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MudCkgPSBvZl93cml0ZXIgYmluX2Eud3JpdGVyXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgYmlnc3RyaW5nX2Jpbl9wcm90IHMgPVxuICAgICAgbGV0IGJpZ3N0cmluZyA9IEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIEJ5dGVzLmJpbl93cml0ZXJfdCBzIGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCaWdzdHJpbmcuU3RhYmxlLlYxLmJpbl93cml0ZXJfdCBiaWdzdHJpbmdcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9wcm90X3dpdGhfbGVuZ3RoIHMgPVxuICAgICAgbGV0IHdyaXRlcl93aXRoX2xlbmd0aCA9IG9mX3dyaXRlciBCeXRlcy5iaW5fd3JpdGVyX3QgaW5cbiAgICAgIEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIHdyaXRlcl93aXRoX2xlbmd0aCBzXG4gICAgOztcblxuICAgIGxldCB0ZXN0IGxlbiA9XG4gICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgIGxldCBiaWdzdHJpbmdfdmVyc2lvbiA9IGJpZ3N0cmluZ19iaW5fcHJvdCBzIGluXG4gICAgICBsZXQgd2l0aF9sZW5ndGhfdmVyc2lvbiA9IGJpbl9wcm90X3dpdGhfbGVuZ3RoIHMgaW5cbiAgICAgIGlmIEJpZ3N0cmluZy50b19zdHJpbmcgYmlnc3RyaW5nX3ZlcnNpb24gPD4gQmlnc3RyaW5nLnRvX3N0cmluZyB3aXRoX2xlbmd0aF92ZXJzaW9uXG4gICAgICB0aGVuIGZhaWx3aXRoZiBcIm1pc21hdGNoIGZvciBsZW5ndGggJWRcIiBsZW4gKClcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIGZvciBsZW4gPSAwIHRvIEludC5wb3cgMiAxMCBkb1xuICAgICAgICB0ZXN0IGxlblxuICAgICAgZG9uZTtcbiAgICAgIGZvciBwb3cgPSAxMCB0byAyMCBkb1xuICAgICAgICBsZXQgeCA9IEludC5wb3cgMiBwb3cgaW5cbiAgICAgICAgdGVzdCAoeCAtIDEpO1xuICAgICAgICB0ZXN0IHg7XG4gICAgICAgIHRlc3QgKHggKyAxKVxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJvcGVuIENvcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZlcnNpb24gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGVxdWFsLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgNDUyMWY0NGRiYzYwOThjMGFmYzI3NzBjYzg0NTUyYjEgfH1dXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcblxubGV0IHN1bW1hcml6ZSB0cyA9XG4gIExpc3QubWFwIHRzIH5mOihmdW4geyBuYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgfD4gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkIH5pbml0OkludC5TZXQuZW1wdHkgfmY6Q29yZS5TZXQuYWRkXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBkZXNjcmlwdGlvbnMgPVxuICAgIFsgeyBuYW1lID0gXCJmb29cIjsgdmVyc2lvbiA9IDEgfVxuICAgIDsgeyBuYW1lID0gXCJmb29cIjsgdmVyc2lvbiA9IDIgfVxuICAgIDsgeyBuYW1lID0gXCJiYXJcIjsgdmVyc2lvbiA9IDUgfVxuICAgIF1cbiAgaW5cbiAgbGV0IHN1bW1hcnkgPSBzdW1tYXJpemUgZGVzY3JpcHRpb25zIGluXG4gIHByaW50X3MgWyVzZXhwIChzdW1tYXJ5IDogSW50LlNldC50IFN0cmluZy5NYXAudCldO1xuICBbJWV4cGVjdCB7fCAoKGJhciAoNSkpIChmb28gKDEgMikpKSB8fV1cbjs7XG4iLCJvcGVuISBDb3JlXG5cbnR5cGUgJ2EgdCA9XG4gIHwgQXV0aG9yaXplZCBvZiAnYVxuICB8IE5vdF9hdXRob3JpemVkIG9mIEVycm9yLnRcblxubGV0IGJpbmQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF1dGhvcml6ZWQgYSAtPiBmIGFcbiAgfCBOb3RfYXV0aG9yaXplZCBfIGFzIHQgLT4gdFxuOztcblxubGV0IGJpbmRfZGVmZXJyZWQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF1dGhvcml6ZWQgYSAtPiBmIGFcbiAgfCBOb3RfYXV0aG9yaXplZCBfIGFzIHQgLT4gRWFnZXJfZGVmZXJyZWQucmV0dXJuIHRcbjs7XG5cbmxldCBtYXBfZGVmZXJyZWQgdCB+ZiA9XG4gIGJpbmRfZGVmZXJyZWQgdCB+ZjooZnVuIGEgLT4gRWFnZXJfZGVmZXJyZWQubWFwIChmIGEpIH5mOihmdW4gYSAtPiBBdXRob3JpemVkIGEpKVxuOztcblxubGV0IGxpZnRfZGVmZXJyZWQgPSBtYXBfZGVmZXJyZWQgfmY6Rm4uaWRcbiIsIigqKiBBc3luY19ycGMgcHJvdG9jb2wgdHlwZXMsIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqKVxuXG4oKiBXQVJOSU5HOiBkbyBub3QgY2hhbmdlIGFueSBvZiB0aGVzZSB0eXBlcyB3aXRob3V0IGdvb2QgcmVhc29uICopXG5cbm9wZW4gQmluX3Byb3QuU3RkXG5vcGVuIFNleHBsaWIuU3RkXG5tb2R1bGUgQ29yZV9mb3JfdGVzdGluZyA9IENvcmVcbm1vZHVsZSBScGNfdGFnIDogQ29yZS5JZGVudGlmaWFibGUgPSBDb3JlLlN0cmluZ1xubW9kdWxlIFF1ZXJ5X2lkID0gQ29yZS5VbmlxdWVfaWQuSW50NjMgKHN0cnVjdCBlbmQpXG5cbm1vZHVsZSBVbnVzZWRfcXVlcnlfaWQgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB2YWwgdCA6IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBRdWVyeV9pZC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgIFslZXhwZWN0IHt8IDJiNTI4ZjRiMjJmMDhlMjg4NzZmZmUwMjM5MzE1YWMyIHx9XVxuICA7O1xuXG4gIGxldCB0ID0gUXVlcnlfaWQuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIFJwY19lcnJvciA6IHNpZ1xuICBvcGVuIENvcmVcblxuICB0eXBlIHQgPVxuICAgIHwgQmluX2lvX2V4biBvZiBTZXhwLnRcbiAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgfCBXcml0ZV9lcnJvciBvZiBTZXhwLnRcbiAgICB8IFVuY2F1Z2h0X2V4biBvZiBTZXhwLnRcbiAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgaW50IF1cbiAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQmluX2lvX2V4biBvZiBDb3JlLlNleHAudFxuICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBXcml0ZV9lcnJvciBvZiBDb3JlLlNleHAudFxuICAgICAgfCBVbmNhdWdodF9leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgb2YgUnBjX3RhZy50ICogWyBgVmVyc2lvbiBvZiBDb3JlLkludC5TdGFibGUuVjEudCBdXG4gICAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDhjYzc2NmJlZmEyY2Y1NjVlYTE0N2Q5ZmNkNWVhYWFiIHx9XVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvcmUuQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBScGNfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIENvcmUuUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCB0XTtcbiAgICBbJWV4cGVjdCB7fCA1ODczNGE2M2E1YzgzYzFiN2NiZmMzZmVkZmEzYWU4MiB8fV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgSGVhZGVyID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXJcblxubW9kdWxlIFF1ZXJ5X3YxID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBiZTU4ODg2OTFkNzM0MjdiM2FjOGVhMzAwYzE2OTQyMiB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5lbmRcblxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBtZXRhZGF0YSA6IHN0cmluZyBvcHRpb25cbiAgICA7IGRhdGEgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGVmNzBlYTJkZDBiYjgxMmE2MDFkMjg4MTBlNjYzN2Q0IHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cblxuICBsZXQgdG9fdjEgeyB0YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YSA9IChfIDogc3RyaW5nIG9wdGlvbik7IGRhdGEgfSA6IF8gUXVlcnlfdjEudCA9XG4gICAgeyB0YWc7IHZlcnNpb247IGlkOyBkYXRhIH1cbiAgOztcblxuICBsZXQgb2ZfdjEgP21ldGFkYXRhIHsgUXVlcnlfdjEudGFnOyB2ZXJzaW9uOyBpZDsgZGF0YSB9ID1cbiAgICB7IHRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhOyBkYXRhIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2EgUnBjX3Jlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgYTIyYTc2ZjE5MmIzYTRlYzFjMzcxMTdjNmJiMjUyZjUgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIFsgYFF1ZXJ5IG9mICdhXG4gICAgfCBgQWJvcnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCAyYzM3ODY4NzYxOTcxYzc4Y2MzNTVkNDNmMDg1NDg2MCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1faW5pdGlhbF9tZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgKCdyZXNwb25zZSwgJ2Vycm9yKSB0ID1cbiAgICB7IHVudXNlZF9xdWVyeV9pZCA6IFVudXNlZF9xdWVyeV9pZC50XG4gICAgOyBpbml0aWFsIDogKCdyZXNwb25zZSwgJ2Vycm9yKSBDb3JlLlJlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiAodW5pdCwgdW5pdCkgdF07XG4gICAgWyVleHBlY3Qge3wgNDZmMjMxZGRiN2ZhNTlkYTljMjc3NTlkNTBhZTAxYTkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cmVhbV9yZXNwb25zZV9kYXRhID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYEVvZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGMxZGJjZGNmZTJiMTJlNzk3ZWM2NGYwZDc0ZGYxODExIHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHwgSGVhcnRiZWF0XG4gICAgfCBRdWVyeV92MSBvZiAnYSBRdWVyeV92MS5uZWVkc19sZW5ndGhcbiAgICB8IFJlc3BvbnNlIG9mICdhIFJlc3BvbnNlLm5lZWRzX2xlbmd0aFxuICAgIHwgUXVlcnkgb2YgJ2EgUXVlcnkubmVlZHNfbGVuZ3RoXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBmNjBjZTJkMTA0ZTJmMGQ5MjcxZjYyMmVjZDk3Y2VhOCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIHNleHBfb2ZdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbmxldCV0ZXN0IFwidjEgbWVzc2FnZSBjb21wYXRpYmlsaXR5XCIgPVxuICBsZXQgbW9kdWxlIE1lc3NhZ2VfdjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgICB8IEhlYXJ0YmVhdFxuICAgICAgfCBRdWVyeSBvZiAnYSBRdWVyeV92MS5uZWVkc19sZW5ndGhcbiAgICAgIHwgUmVzcG9uc2Ugb2YgJ2EgUmVzcG9uc2UubmVlZHNfbGVuZ3RoXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICAgIFslZXhwZWN0IHt8IDE0OTY1YjBkYjk4NDRlNmIzNzYxNTFkZDg5MDgwOGU4IHx9XVxuICAgIDs7XG4gIGVuZFxuICBpblxuICBsZXQgdGFnID0gUnBjX3RhZy5vZl9zdHJpbmcgXCJycGNcIiBpblxuICBsZXQgcXVlcnlfaWQgPSBRdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgbGV0IHYxX3F1ZXJ5ID0geyBRdWVyeV92MS50YWc7IHZlcnNpb24gPSAxOyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gKCkgfSBpblxuICBsZXQgcmVzcG9uc2UgPSB7IFJlc3BvbnNlLmlkID0gcXVlcnlfaWQ7IGRhdGEgPSBPayAoKSB9IGluXG4gIGxldCB2MSA9IE1lc3NhZ2VfdjEuWyBIZWFydGJlYXQ7IFF1ZXJ5IHYxX3F1ZXJ5OyBSZXNwb25zZSByZXNwb25zZSBdIGluXG4gIGxldCB2MiA9IE1lc3NhZ2UuWyBIZWFydGJlYXQ7IFF1ZXJ5X3YxIHYxX3F1ZXJ5OyBSZXNwb25zZSByZXNwb25zZSBdIGluXG4gIGxldCB2MV9zdHIgPVxuICAgIENvcmVfZm9yX3Rlc3RpbmcuQmluX3Byb3QuV3JpdGVyLnRvX3N0cmluZ1xuICAgICAgWyViaW5fd3JpdGVyOiB1bml0IE1lc3NhZ2VfdjEubmVlZHNfbGVuZ3RoIGxpc3RdXG4gICAgICB2MVxuICBpblxuICBsZXQgdjJfc3RyID1cbiAgICBDb3JlX2Zvcl90ZXN0aW5nLkJpbl9wcm90LldyaXRlci50b19zdHJpbmdcbiAgICAgIFslYmluX3dyaXRlcjogdW5pdCBNZXNzYWdlLm5lZWRzX2xlbmd0aCBsaXN0XVxuICAgICAgdjJcbiAgaW5cbiAgU3RyaW5nLmVxdWFsIHYxX3N0ciB2Ml9zdHJcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4hIENvcmUuQ29yZV9zdGFibGVcblxuICAoKiBXZSBjYW4ndCBtYWtlIFtCaW5fcHJvdC5TaGFwZS50XSBiaW5hYmxlIGRpcmVjdGx5IGJlY2F1c2UgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgYVxuICAgICBjaXJjdWxhciBkZXBlbmRlbmN5LCBzbyB3ZSBtYWtlIGl0IFtCaW5hYmxlLk9mX3NleHBhYmxlX3dpdGhfdXVpZF0gaGVyZSBpbnN0ZWFkLiBUaGlzXG4gICAgIGFsbG93cyB1cyB0byBzZW5kIHRoZSBzaGFwZSBvdmVyIHRoZSB3aXJlIGFzIHBhcnQgb2YgdGhlXG4gICAgIFtWZXJzaW9uZWRfcnBjLlNoYXBlX21lbnUudF0uIFtCaW5fcHJvdC5TaGFwZS5DYW5vbmljYWwudF0sIHRob3VnaCBleHBvc2VkIGFuZFxuICAgICB0aGVyZWZvcmUgYmluYWJsZSwgaXMgbm90IGEgc3VpdGFibGUgYWx0ZXJuYXRpdmUgYmVjYXVzZSBpdCBoYXMgYW4gZXhwb25lbnRpYWxcbiAgICAgZXhwYW5zaW9uLiAqKVxuICBtb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQmluX3Byb3QuU2hhcGUuU3RhYmxlLlYxXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIwYWE1MzU0OS1hZDg4LTRiNGYtYWJjNy0xZjg0NTNlN2FhMTFcIlxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX3NleHBhYmxlLlYyIChUKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBScGMgb2ZcbiAgICAgICAgICB7IHF1ZXJ5IDogU2hhcGUuVjEudFxuICAgICAgICAgIDsgcmVzcG9uc2UgOiBTaGFwZS5WMS50XG4gICAgICAgICAgfVxuICAgICAgfCBPbmVfd2F5IG9mIHsgbXNnIDogU2hhcGUuVjEudCB9XG4gICAgICB8IFN0cmVhbWluZ19ycGMgb2ZcbiAgICAgICAgICB7IHF1ZXJ5IDogU2hhcGUuVjEudFxuICAgICAgICAgIDsgaW5pdGlhbF9yZXNwb25zZSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IHVwZGF0ZV9yZXNwb25zZSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IGVycm9yIDogU2hhcGUuVjEudFxuICAgICAgICAgIH1cbiAgICAgIHwgVW5rbm93blxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgZW5kXG5lbmRcblxub3BlbiEgQ29yZVxuXG5tb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmluX3Byb3QuU2hhcGUudFxuXG4gICgqIEFuIHVuc3RhYmxlIHNleHBlciB0aGF0J3MgdXNlZnVsIGZvciBleHBlY3QgdGVzdHMsIHByaW50aW5nIG91dCB0aGUgc2hhcGUgZGlnZXN0c1xuICAgICBpbnN0ZWFkIG9mIHRoZSBzaGFwZXMgdGhlbXNlbHZlcy4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIChCaW5fcHJvdC5TaGFwZS5ldmFsX3RvX2RpZ2VzdF9zdHJpbmcgdCA6IHN0cmluZyldXG5lbmRcblxudHlwZSB0ID0gU3RhYmxlLlYxLnQgPVxuICB8IFJwYyBvZlxuICAgICAgeyBxdWVyeSA6IFNoYXBlLnRcbiAgICAgIDsgcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICB9XG4gIHwgT25lX3dheSBvZiB7IG1zZyA6IFNoYXBlLnQgfVxuICB8IFN0cmVhbWluZ19ycGMgb2ZcbiAgICAgIHsgcXVlcnkgOiBTaGFwZS50XG4gICAgICA7IGluaXRpYWxfcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICA7IHVwZGF0ZV9yZXNwb25zZSA6IFNoYXBlLnRcbiAgICAgIDsgZXJyb3IgOiBTaGFwZS50XG4gICAgICB9XG4gIHwgVW5rbm93blxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSBtZXNzYWdlX2hhbmRsZXIgPSBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2FcblxubW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gc3RydWN0XG4gICgqKiBSZXN1bHQgb2YgYW4gW29uX21lc3NhZ2VdIGNhbGxiYWNrLiAgV2Ugc3BsaXQgdGhlIFtDb250aW51ZV0gYW5kIFtXYWl0IF9dIGNhc2VzIHRvXG4gICAgICBtYWtlIGl0IGNsZWFyIHRoYXQgW0NvbnRpbnVlXSBpcyB0aGUgZXhwZWN0ZWQgY2FzZS4gIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmVcbiAgICAgIG9wdGltaXplZCBmb3IgdGhpcyBjYXNlLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RvcCBvZiAnYVxuICAgIHwgQ29udGludWVcbiAgICB8IFdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG5lbmRcblxuXG5tb2R1bGUgdHlwZSBSZWFkZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuICB2YWwgYnl0ZXNfcmVhZCA6IHQgLT4gSW50NjMudFxuXG4gICgqKiBTdGFydCByZWFkaW5nIGluY29taW5nIG1lc3NhZ2VzIGFuZCBwYXNzIHRoZW0gdG8gW29uX21lc3NhZ2VdLCB1bnRpbCBpdCByZXR1cm5zXG4gICAgICBbU3RvcCBfXS5cblxuICAgICAgW29uX2VuZF9vZl9iYXRjaF0gaXMgY2FsbGVkIGFmdGVyIHByb2Nlc3NpbmcgYSBiYXRjaCBvZiBtZXNzYWdlcywgYmVmb3JlIHdhaXRpbmcgZm9yXG4gICAgICB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIGJlY29tZSByZWFkYWJsZSBhZ2Fpbi4gKilcbiAgdmFsIHJlYWRfZm9yZXZlclxuICAgIDogIHRcbiAgICAtPiBvbl9tZXNzYWdlOihCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgSGFuZGxlcl9yZXN1bHQudClcbiAgICAtPiBvbl9lbmRfb2ZfYmF0Y2g6KHVuaXQgLT4gdW5pdClcbiAgICAtPiAoJ2EsIFsgYEVvZiB8IGBDbG9zZWQgXSkgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIG1lc3NhZ2VfdG9vX2JpZyA9XG4gICAgeyBzaXplIDogaW50XG4gICAgOyBtYXhfbWVzc2FnZV9zaXplIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTZW50IG9mICdhXG4gICAgfCBDbG9zZWRcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBvZiBtZXNzYWdlX3Rvb19iaWdcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBXcml0ZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuICB2YWwgbW9uaXRvciA6IHQgLT4gTW9uaXRvci50XG4gIHZhbCBieXRlc190b193cml0ZSA6IHQgLT4gaW50XG4gIHZhbCBieXRlc193cml0dGVuIDogdCAtPiBJbnQ2My50XG5cbiAgKCoqIEJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byBzZW5kIG1lc3NhZ2UgdXNpbmcgdGhpcyB3cml0ZXIsXG4gICAgICBmb3IgaW5zdGFuY2Ugd2hlbiB0aGUgd3JpdGVyIGlzIGNsb3NlZCBvciB0aGUgY29uc3VtZXIgbGVhdmVzLlxuXG4gICAgICBUaGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gaXMgY2FjaGVkIGJ5IFtScGMuVHJhbnNwb3J0XSAqKVxuICB2YWwgc3RvcHBlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFtmbHVzaGVkIHRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IG11c3QgYmVjb21lIGRldGVybWluZWQgd2hlbiBhbGwgcHJpb3Igc2VudFxuICAgICAgbWVzc2FnZXMgYXJlIGRlbGl2ZXJlZC5cblxuICAgICAgSXQgbXVzdCBiZSBPSyB0byBjYWxsIFtmbHVzaGVkIHRdIGFmdGVyIFt0XSBoYXMgYmVlbiBjbG9zZWQuICopXG4gIHZhbCBmbHVzaGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3JlYWR5X3RvX3dyaXRlIHRdIGJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIGEgZ29vZCB0aW1lIHRvIHNlbmQgbWVzc2FnZXNcbiAgICAgIGFnYWluLiBBc3luYyBSUEMgY2FsbHMgdGhpcyBmdW5jdGlvbiBhZnRlciBzZW5kaW5nIGEgYmF0Y2ggb2YgbWVzc2FnZXMsIHRvIGF2b2lkXG4gICAgICBmbG9vZGluZyB0aGUgdHJhbnNwb3J0LlxuXG4gICAgICBVc2luZyBbbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZF0gaXMgYW4gYWNjZXB0YWJsZSBpbXBsZW1lbnRhdGlvbi4gKilcbiAgdmFsIHJlYWR5X3RvX3dyaXRlIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogQWxsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHNlbmQgZXhhY3RseSBvbmUgbWVzc2FnZS4gKilcblxuICB2YWwgc2VuZF9iaW5fcHJvdCA6IHQgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgLT4gdW5pdCBTZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IFNlbmRfcmVzdWx0LnRcblxuICAoKiogU2FtZSBhcyBbc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXSBidXQgdGhlIGJpZ3N0cmluZyBjYW4ndCBiZSBtb2RpZmllZCB1bnRpbCB0aGVcbiAgICAgIHJldHVybmVkIGRlZmVycmVkIGJlY29tZXMgZGV0ZXJtaW5lZC4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQgY29weWluZyB0aGVcbiAgICAgIGJpZ3N0cmluZy4gKilcbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IERlZmVycmVkLnQgU2VuZF9yZXN1bHQudFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbm1vZHVsZSBIZWFkZXIgPSBzdHJ1Y3RcbiAgbGV0IGxlbmd0aCA9IDhcbiAgbGV0IHVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3MgPSBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gYnVmIH5wb3NcblxuICBsZXQgdW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvcyBwYXlsb2FkX2xlbiA9XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50NjRfbGUgYnVmIH5wb3MgcGF5bG9hZF9sZW5cbiAgOztcbmVuZFxuXG5tb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5IYW5kbGVyX3Jlc3VsdFxuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5SZWFkZXJcblxuICB0eXBlIHQgPSBUIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpICogJ2EgLT4gdFxuXG4gIGxldCBwYWNrIG0gdCA9IFQgKG0sIHQpXG5cbiAgKCogV2UgcHV0IHR5cGUgYW5ub3RhdGlvbnMgdG8gYmUgc3VyZSB0aGUgdHlwZSBpcyBub3QgYSBmdW5jdGlvbiB0eXBlLCBpLmUuIHRvIGF2b2lkXG4gICAgIGNyZWF0aW5nIGNsb3N1cmVzICopXG4gIGxldCBzZXhwX29mX3QgKFQgKChtb2R1bGUgTSksIHQpKSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUICgobW9kdWxlIE0pLCB0KSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcbiAgbGV0IGJ5dGVzX3JlYWQgKFQgKChtb2R1bGUgTSksIHQpKSA6IEludDYzLnQgPSBNLmJ5dGVzX3JlYWQgdFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKFQgKChtb2R1bGUgTSksIHQpKSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogXyBEZWZlcnJlZC50ID1cbiAgICBNLnJlYWRfZm9yZXZlciB0IH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgOztcblxuICBsZXQgcmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0IChiaW5fcmVhZGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcikgPVxuICAgIHJlYWRfZm9yZXZlclxuICAgICAgdFxuICAgICAgfm9uX21lc3NhZ2U6KGZ1biBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgICAgICBsZXQgeCA9IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPD4gcG9zICsgbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgICAgICghcG9zX3JlZiAtIHBvcylcbiAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgKClcbiAgICAgICAgZWxzZSBTdG9wIHgpXG4gICAgICB+b25fZW5kX29mX2JhdGNoOmlnbm9yZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLlNlbmRfcmVzdWx0XG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLldyaXRlclxuXG4gIHR5cGUgJ2Egd3JpdGVyID1cbiAgICB7IGltcGwgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICA7IHQgOiAnYVxuICAgICgqIFdlIGNhY2hlIHRoZSByZXN1bHQgb2YgW3N0b3BwZWRdIGJlY2F1c2UgaXQgaXMgb2Z0ZW4gdGhlIFtEZWZlcnJlZC5hbnldIG9mIHNldmVyYWxcbiAgICAgICBvdGhlciBkZWZlcnJlZHMgYW5kIHdlIHdhbnQgW2Nhbl9zZW5kXSB0byBiZSBzaW1wbGUuICopXG4gICAgOyBzdG9wcGVkIDogdW5pdCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAnYSB3cml0ZXIgLT4gdFxuXG4gIGxldCBwYWNrICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSB0ID1cbiAgICBUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgPSBNLnN0b3BwZWQgdCB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuICBsZXQgbW9uaXRvciAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogTW9uaXRvci50ID0gTS5tb25pdG9yIHRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBpbnQgPSBNLmJ5dGVzX3RvX3dyaXRlIHRcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IEludDYzLnQgPSBNLmJ5dGVzX3dyaXR0ZW4gdFxuICBsZXQgZmx1c2hlZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogdW5pdCBEZWZlcnJlZC50ID0gTS5mbHVzaGVkIHRcblxuICBsZXQgcmVhZHlfdG9fd3JpdGUgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9XG4gICAgTS5yZWFkeV90b193cml0ZSB0XG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3QgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSBiaW5fd3JpdGVyIHggOiBfIFNlbmRfcmVzdWx0LnQgPVxuICAgIE0uc2VuZF9iaW5fcHJvdCB0IGJpbl93cml0ZXIgeFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KVxuICAgICAgICBiaW5fd3JpdGVyXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA6IF8gU2VuZF9yZXN1bHQudFxuICAgID1cbiAgICBNLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KVxuICAgICAgICBiaW5fd3JpdGVyXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA6IF8gU2VuZF9yZXN1bHQudFxuICAgID1cbiAgICBNLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzdG9wcGVkIChUIHsgc3RvcHBlZDsgXyB9KSA9IHN0b3BwZWRcblxuICBsZXQgY2FuX3NlbmQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgc3RvcHBlZCB9KSA9XG4gICAgbm90IChNLmlzX2Nsb3NlZCB0IHx8IERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcHBlZClcbiAgOztcblxuICBsZXQgdHJhbnNmZXIgdCA/KG1heF9udW1fdmFsdWVzX3Blcl9yZWFkID0gMV8wMDApIHBpcGUgZiA9XG4gICAgbGV0IGNvbnN1bWVyID1cbiAgICAgIFBpcGUuYWRkX2NvbnN1bWVyIHBpcGUgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgIGxldCVtYXAgKCkgPSBmbHVzaGVkIHQgaW5cbiAgICAgICAgYE9rKVxuICAgIGluXG4gICAgbGV0IGVuZF9vZl9waXBlID1cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgbGV0IHJlYyBpdGVyICgpID1cbiAgICAgICAgICBpZiBjYW5fc2VuZCB0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBQaXBlLnJlYWRfbm93JyBwaXBlIH5jb25zdW1lciB+bWF4X3F1ZXVlX2xlbmd0aDptYXhfbnVtX3ZhbHVlc19wZXJfcmVhZFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBgT2sgcSAtPlxuICAgICAgICAgICAgICBRdWV1ZS5pdGVyIHEgfmY7XG4gICAgICAgICAgICAgIFBpcGUuQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgICAgICAgcmVhZHlfdG9fd3JpdGUgdCA+Pj4gaXRlclxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHBpcGUgPj4+IGZ1biAoYE9rIHwgYEVvZikgLT4gaXRlciAoKVxuICAgICAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBpdmFyICgpKVxuICAgICAgICBpblxuICAgICAgICBpdGVyICgpKVxuICAgIGluXG4gICAgbGV0JW1hcCAoKSA9IERlZmVycmVkLmFueSBbIGVuZF9vZl9waXBlOyBzdG9wcGVkIHQgXSBpblxuICAgIFBpcGUuY2xvc2VfcmVhZCBwaXBlXG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgeyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFdyaXRlci50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZSB0ID1cbiAgbGV0JWJpbmQgKCkgPSBXcml0ZXIuY2xvc2UgdC53cml0ZXIgaW5cbiAgUmVhZGVyLmNsb3NlIHQucmVhZGVyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxuXG4oKiogVGhlIHR5cGVzIG9mIHRoZSBbSW1wbGVtZW50YXRpb25dIGFuZCBbSW1wbGVtZW50YXRpb25zXSBtb2R1bGVzLCB3aGljaCBoYXZlXG4gICAgYSBkZXBlbmRlbmN5IGN5bGU6IFtJbXBsZW1lbnRhdGlvbl0gLT4gW0RpcmVjdF9zdHJlYW1fd3JpdGVyXSAtPlxuICAgIFtJbXBsZW1lbnRhdGlvbnNdIC0+IFtJbXBsZW1lbnRhdGlvbl0uICopXG5cbm1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5tb2R1bGUgT25fZXhjZXB0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjYWxsYmFjayA6IChleG4gLT4gdW5pdCkgb3B0aW9uIFtAc2V4cC5vbWl0X25pbF1cbiAgICA7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIDogYm9vbFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgcmVjIEltcGxlbWVudGF0aW9uIDogc2lnXG4gIG1vZHVsZSBFeHBlcnQgOiBzaWdcbiAgICBtb2R1bGUgUmVzcG9uZGVyIDogc2lnXG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIEYgOiBzaWdcbiAgICB0eXBlIChfLCBfKSByZXN1bHRfbW9kZSA9XG4gICAgICB8IEJsb2NraW5nIDogKCdhLCAnYSBPcl9ub3RfYXV0aG9yaXplZC50KSByZXN1bHRfbW9kZVxuICAgICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gICAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgT3Jfbm90X2F1dGhvcml6ZWQudFxuICAgICAgICAgICAgICAgIERlZmVycmVkLnQpXG4gICAgICB8IERpcmVjdCBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gJ3VwZGF0ZSBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcblxuICAgIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfcnBjID1cbiAgICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgOyBiaW5faW5pdF93cml0ZXIgOiAnaW5pdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgOyBiaW5fdXBkYXRlX3dyaXRlciA6ICd1cGRhdGUgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICgqICdpbml0IGNhbiBiZSBhbiBlcnJvciBvciBhbiBpbml0aWFsIHN0YXRlICopXG4gICAgICA7IGltcGwgOiAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsXG4gICAgICB9XG5cbiAgICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgICAgfCBPbmVfd2F5IDpcbiAgICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IE9uZV93YXlfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgIC0+IHVuaXQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgUnBjIDpcbiAgICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgICAqICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAgICogKCdyZXNwb25zZSwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiBFeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICAgKiAoRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwY1xuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgZW5kXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICAgIDsgc2hhcGVzIDogUnBjX3NoYXBlcy50IExhenkudFxuICAgIDsgb25fZXhjZXB0aW9uIDogT25fZXhjZXB0aW9uLnRcbiAgICB9XG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvblxuXG5hbmQgSW1wbGVtZW50YXRpb25zIDogc2lnXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICAgIFsgYFJhaXNlXG4gICAgfCBgQ29udGludWVcbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gICAgfCBgQ2FsbCBvZlxuICAgICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgICB8IGBFeHBlcnQgb2ZcbiAgICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgICBdXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICAgIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICAgIH1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBtb2R1bGUgcmVjIEluc3RhbmNlIDogc2lnXG4gICAgdHlwZSBzdHJlYW1pbmdfcmVzcG9uc2UgPVxuICAgICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgICAgfCBEaXJlY3QgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG5cbiAgICB0eXBlICdhIHVucGFja2VkID1cbiAgICAgIHsgaW1wbGVtZW50YXRpb25zIDogJ2EgaW1wbGVtZW50YXRpb25zXG4gICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiAoUXVlcnlfaWQudCwgc3RyZWFtaW5nX3Jlc3BvbnNlKSBIYXNodGJsLnRcbiAgICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgICAgOyBtdXRhYmxlXG4gICAgICAgIGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA6XG4gICAgICAgICAgKERlc2NyaXB0aW9uLnQgKiAnYSBJbXBsZW1lbnRhdGlvbi50KSBvcHRpb25cbiAgICAgIDsgcGFja2VkX3NlbGYgOiB0XG4gICAgICB9XG5cbiAgICBhbmQgdCA9IFQgOiBfIHVucGFja2VkIC0+IHRcbiAgZW5kXG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvbnNcblxuYW5kIERpcmVjdF9zdHJlYW1fd3JpdGVyIDogc2lnXG4gIG1vZHVsZSBQZW5kaW5nX3Jlc3BvbnNlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm9ybWFsIG9mICdhXG4gICAgICB8IEV4cGVydCBvZiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm90X3N0YXJ0ZWQgb2YgJ2EgUGVuZGluZ19yZXNwb25zZS50IFF1ZXVlLnRcbiAgICAgIHwgU3RhcnRlZFxuICBlbmRcblxuICBtb2R1bGUgSWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50XG4gICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgIDsgaW5zdGFuY2UgOiBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UudFxuICAgIDsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgOyBzdHJlYW1fd3JpdGVyIDogJ2EgQ2FjaGVkX2Jpbl93cml0ZXIudFxuICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICB9XG5cbiAgYW5kICdhIGdyb3VwX2VudHJ5ID1cbiAgICB7IGdyb3VwIDogJ2EgRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAudFxuICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgfVxuXG4gIG1vZHVsZSBHcm91cCA6IHNpZ1xuICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyAoKiBbY29tcG9uZW50c10gaXMgb25seSB0cmFja2VkIHNlcGFyYXRlbHkgZnJvbSBbY29tcG9uZW50c19ieV9pZF0gc28gd2UgY2FuIGl0ZXJhdGVcbiAgICAgICAgICAgb3ZlciBpdHMgZWxlbWVudHMgbW9yZSBxdWlja2x5IHRoYW4gd2UgY291bGQgaXRlcmF0ZSBvdmVyIHRoZSB2YWx1ZXMgb2ZcbiAgICAgICAgICAgW2NvbXBvbmVudHNfYnlfaWRdLiAqKVxuICAgICAgICBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgIDsgYnVmZmVyIDogQmlnc3RyaW5nLnQgcmVmXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgY29tcG9uZW50ID1cbiAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBncm91cF9lbnRyeSBCYWcuRWx0LnRcbiAgICAgIH1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA6PSAnYSB0XG5lbmQgPVxuICBEaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5hbmQgQ2FjaGVkX2Jpbl93cml0ZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhlYWRlcl9wcmVmaXggOiBzdHJpbmcgKCogQmluX3Byb3R0ZWQgY29uc3RhbnQgcHJlZml4IG9mIHRoZSBtZXNzYWdlICopXG4gICAgOyBtdXRhYmxlIGRhdGFfbGVuIDogTmF0MC50XG4gICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICB9XG5lbmQgPVxuICBDYWNoZWRfYmluX3dyaXRlclxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlIHQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5Pbl9leGNlcHRpb24udCA9XG4gIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gIDsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZV9jb25uZWN0aW9uID0geyBjYWxsYmFjayA9IE5vbmU7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlID0gdHJ1ZSB9XG5sZXQgY29udGludWUgPSB7IGNhbGxiYWNrID0gTm9uZTsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgPSBmYWxzZSB9XG5cbmxldCBoYW5kbGVfZXhuXG4gICAgICB7IGNhbGxiYWNrOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSB9XG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICBleG5cbiAgPVxuICBPcHRpb24uaXRlciBjYWxsYmFjayB+ZjooZnVuIGNhbGxiYWNrIC0+IGNhbGxiYWNrIGV4bik7XG4gIGlmIGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gIHRoZW4gTW9uaXRvci5zZW5kX2V4biBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvblxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBFeHBlcnQuUmVzcG9uZGVyLnQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIHF1ZXJ5X2lkIHdyaXRlciA9IHsgcXVlcnlfaWQ7IHdyaXRlcjsgcmVzcG9uZGVkID0gZmFsc2UgfVxuICBlbmRcblxuICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgIHwgUmVwbGllZFxuICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbmVuZFxuXG5tb2R1bGUgRiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHJlc3VsdF9tb2RlID0gKCdhLCAnYikgRi5yZXN1bHRfbW9kZSA9XG4gICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCkgcmVzdWx0X21vZGVcbiAgICB8IERlZmVycmVkIDogKCdhLCAnYSBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpIHJlc3VsdF9tb2RlXG5cbiAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIEYuc3RyZWFtaW5nX2ltcGwgPVxuICAgIHwgUGlwZSBvZlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAtPiAndXBkYXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcblxuICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwYyA9XG4gICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBGLnN0cmVhbWluZ19ycGMgPVxuICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgIDsgYmluX2luaXRfd3JpdGVyIDogJ2luaXQgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IGJpbl91cGRhdGVfd3JpdGVyIDogJ3VwZGF0ZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICgqICdpbml0IGNhbiBiZSBhbiBlcnJvciBvciBhbiBpbml0aWFsIHN0YXRlICopXG4gICAgOyBpbXBsIDogKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbFxuICAgIH1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBGLnQgPVxuICAgIHwgT25lX3dheSA6XG4gICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgT25lX3dheV9leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgUnBjIDpcbiAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGNcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIGxldCBzZXhwX29mX3QgXyA9IGZ1bmN0aW9uXG4gICAgfCBPbmVfd2F5X2V4cGVydCBfIHwgT25lX3dheSBfIC0+IFslbWVzc2FnZSBcIm9uZS13YXlcIl1cbiAgICB8IFJwY19leHBlcnQgXyB8IFJwYyBfIC0+IFslbWVzc2FnZSBcInJwY1wiXVxuICAgIHwgU3RyZWFtaW5nX3JwYyBfIC0+IFslbWVzc2FnZSBcInN0cmVhbWluZy1ycGNcIl1cbiAgOztcblxuICBsZXQgbGlmdCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE9uZV93YXkgKGJpbl9tc2csIGltcGwpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBzdHIgPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgc3RyKVxuICAgICAgaW5cbiAgICAgIE9uZV93YXkgKGJpbl9tc2csIGltcGwpXG4gICAgfCBPbmVfd2F5X2V4cGVydCBpbXBsIC0+XG4gICAgICBPbmVfd2F5X2V4cGVydFxuICAgICAgICAoZnVuIHN0YXRlIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIGJ1ZiB+cG9zIH5sZW4pKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBxID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpXG4gICAgICBpblxuICAgICAgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHEgPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcSlcbiAgICAgIGluXG4gICAgICBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZClcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgIGluXG4gICAgICBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZylcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIERlZmVycmVkKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgIGluXG4gICAgICBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZClcbiAgICB8IFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH0gLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+XG4gICAgICAgICAgUGlwZVxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpKVxuICAgICAgICB8IERpcmVjdCBpbXBsIC0+XG4gICAgICAgICAgRGlyZWN0XG4gICAgICAgICAgICAoZnVuIHN0YXRlIHEgdyAtPlxuICAgICAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxIHcpKVxuICAgICAgaW5cbiAgICAgIFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH1cbiAgOztcblxuICBsZXQgbGlmdF9kZWZlcnJlZCAodHlwZSBhIGIpICh0IDogYiB0KSB+KGYgOiBhIC0+IGIgRGVmZXJyZWQudCkgOiBhIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgT25lX3dheSAoYmluX21zZywgaW1wbCkgLT5cbiAgICAgIE9uZV93YXlcbiAgICAgICAgKCBiaW5fbXNnXG4gICAgICAgICwgZnVuIHN0YXRlIHN0ciAtPiBFYWdlcl9kZWZlcnJlZC5iaW5kIChmIHN0YXRlKSB+ZjooZnVuIHN0YXRlIC0+IGltcGwgc3RhdGUgc3RyKVxuICAgICAgICApXG4gICAgfCBPbmVfd2F5X2V4cGVydCBpbXBsIC0+XG4gICAgICBPbmVfd2F5X2V4cGVydFxuICAgICAgICAoZnVuIHN0YXRlIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgRWFnZXJfZGVmZXJyZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBzdGF0ZSAtPiBpbXBsIHN0YXRlIGJ1ZiB+cG9zIH5sZW4pKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBScGNcbiAgICAgICAgKCBiaW5fcXVlcnlcbiAgICAgICAgLCBiaW5fcmVzcG9uc2VcbiAgICAgICAgLCAoZnVuIHN0YXRlIHEgLT5cbiAgICAgICAgICAgICBsZXQlbWFwLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIFJwY1xuICAgICAgICAoIGJpbl9xdWVyeVxuICAgICAgICAsIGJpbl9yZXNwb25zZVxuICAgICAgICAsIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKCAoZnVuIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICAgICAgbGV0JWJpbmQuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZykgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKCAoZnVuIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICAgICAgbGV0JW1hcC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgIGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuKVxuICAgICAgICAsIERlZmVycmVkIClcbiAgICB8IFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH0gLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+XG4gICAgICAgICAgUGlwZVxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgfCBEaXJlY3QgaW1wbCAtPlxuICAgICAgICAgIERpcmVjdFxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIHcgLT5cbiAgICAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgICAgaW1wbCBzdGF0ZSBxIHcpXG4gICAgICBpblxuICAgICAgU3RyZWFtaW5nX3JwYyB7IGJpbl9xdWVyeV9yZWFkZXI7IGJpbl9pbml0X3dyaXRlcjsgYmluX3VwZGF0ZV93cml0ZXI7IGltcGwgfVxuICA7O1xuZW5kXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uLnQgPVxuICB7IHRhZyA6IFJwY190YWcudFxuICA7IHZlcnNpb24gOiBpbnRcbiAgOyBmIDogJ2Nvbm5lY3Rpb25fc3RhdGUgRi50XG4gIDsgc2hhcGVzIDogUnBjX3NoYXBlcy50IExhenkudFxuICA7IG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gUnBjX3RhZy50b19zdHJpbmcgdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb24gfVxubGV0IHNoYXBlcyB0ID0gZm9yY2UgdC5zaGFwZXNcblxubGV0IGxpZnQgKHR5cGUgYSBiKSAodCA6IGEgdCkgfihmIDogYiAtPiBhKSA6IGIgdCA9XG4gIHsgdCB3aXRoIGYgPSBGLmxpZnQgdC5mIH5mOihmdW4gYiAtPiBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIGIpKSB9XG47O1xuXG5sZXQgd2l0aF9hdXRob3JpemF0aW9uIHQgfmYgPSB7IHQgd2l0aCBmID0gRi5saWZ0IHQuZiB+ZiB9XG5sZXQgbGlmdF9kZWZlcnJlZCB0IH5mID0geyB0IHdpdGggZiA9IEYubGlmdF9kZWZlcnJlZCB0LmYgfmYgfVxubGV0IHVwZGF0ZV9vbl9leGNlcHRpb24gdCB+ZiA9IHsgdCB3aXRoIG9uX2V4Y2VwdGlvbiA9IGYgdC5vbl9leGNlcHRpb24gfVxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuaW5jbHVkZSBQcm90b2NvbC5ScGNfZXJyb3JcbmluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoUHJvdG9jb2wuUnBjX2Vycm9yKVxuXG5leGNlcHRpb24gUnBjIG9mIHQgKiBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHJhaXNlIHQgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA9IHJhaXNlIChScGMgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pKVxuXG5sZXQgc2V4cF9vZl90IHQgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IENvbm5lY3Rpb25fY2xvc2VkIC0+XG4gICAgWyVzZXhwIGBDb25uZWN0aW9uX2Nsb3NlZCAoZ2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uICgpIDogU2V4cC50KV1cbiAgfCBCaW5faW9fZXhuIF9cbiAgfCBXcml0ZV9lcnJvciBfXG4gIHwgVW5jYXVnaHRfZXhuIF9cbiAgfCBVbmltcGxlbWVudGVkX3JwYyBfXG4gIHwgVW5rbm93bl9xdWVyeV9pZCBfIC0+IHNleHBfb2ZfdCB0XG47O1xuXG4oKiBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGp1c3QgdGFrZSBhIFtDb25uZWN0aW9uLnRdLCBidXQgd2UgdGFrZSBpdHMgcGllY2VzIGluc3RlYWQgdG9cbiAgIGF2b2lkIGEgZGVwZW5kZW5jeSBjeWNsZSAqKVxubGV0IHRvX2Vycm9yXG4gICAgICB0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgRGVzY3JpcHRpb24ubmFtZSA9IHJwY19uYW1lOyB2ZXJzaW9uID0gcnBjX3ZlcnNpb24gfVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgPVxuICBsZXQgcnBjX2Vycm9yID1cbiAgICBzZXhwX29mX3QgdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgIGxldCBjbG9zZV9yZWFzb24gPVxuICAgICAgICAoKiBVc3VhbGx5IChhbHdheXM/KSBoZXJlIHdlIHdpbGwgaGF2ZSB0aGUgZGVmZXJyZWQgYWxyZWFkeSBmdWxsXG4gICAgICAgICAgIGJlY2F1c2UgQ29ubmVjdGlvbl9jbG9zZWQgZXJyb3IgbWVhbnMgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeVxuICAgICAgICAgICBjbG9zZWQgKilcbiAgICAgICAgRGVmZXJyZWQucGVlayBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIGluXG4gICAgICBbJXNleHAgKGNsb3NlX3JlYXNvbiA6IEluZm8udCBvcHRpb24pXSlcbiAgaW5cbiAgRXJyb3IuY3JlYXRlX3NcbiAgICBbJXNleHBcbiAgICAgIHsgcnBjX2Vycm9yIDogU2V4cC50XG4gICAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICAgIDsgcnBjX25hbWUgOiBzdHJpbmdcbiAgICAgIDsgcnBjX3ZlcnNpb24gOiBpbnRcbiAgICAgIH1dXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5cbnR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbG9jYWxfc3RvcmFnZV9rZXkgPVxuICBVbml2X21hcC5LZXkuY3JlYXRlIH5uYW1lOlwiYXN5bmNfcnBjX2tlcm5lbF9tZXRhZGF0YVwiIFslc2V4cF9vZjogdF1cbjs7XG5cbmxldCBnZXQgKCkgPSBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci5maW5kX2xvY2FsIGxvY2FsX3N0b3JhZ2Vfa2V5XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCB3aXRoX21ldGFkYXRhIG1ldGFkYXRhIH5mID1cbiAgICBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoX2xvY2FsIGxvY2FsX3N0b3JhZ2Vfa2V5IG1ldGFkYXRhIH5mXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSB0ID0gKCdhLCBScGNfZXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IHRdO1xuICBbJWV4cGVjdCB7fCA1ODczNGE2M2E1YzgzYzFiN2NiZmMzZmVkZmEzYWU4MiB8fV1cbjs7XG5cbnR5cGUgbG9jYXRlZF9lcnJvciA9XG4gIHsgbG9jYXRpb24gOiBzdHJpbmdcbiAgOyBleG4gOiBFeG4udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biAoc2V4cF9vZl9sb2NhdGVkX2Vycm9yIHsgbG9jYXRpb247IGV4biB9KSlcbjs7XG5cbmxldCBiaW5faW9fZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLkJpbl9pb19leG4gKHNleHBfb2ZfbG9jYXRlZF9lcnJvciB7IGxvY2F0aW9uOyBleG4gfSkpXG47O1xuXG5sZXQgdHJ5X3dpdGggP29uX2JhY2tncm91bmRfZXhjZXB0aW9uID9ydW4gfmxvY2F0aW9uIGYgPVxuICBsZXQgeCA9XG4gICAgbGV0IHJlc3QgPVxuICAgICAgbWF0Y2ggb25fYmFja2dyb3VuZF9leGNlcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGBMb2dcbiAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgIGluXG4gICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgfnJlc3RcbiAgICAgIH5ydW46KE9wdGlvbi52YWx1ZSBydW4gfmRlZmF1bHQ6YFNjaGVkdWxlKVxuICAgICAgZlxuICBpblxuICBsZXQgam9pbiA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IHhcbiAgICB8IEVycm9yIGV4biAtPiB1bmNhdWdodF9leG4gfmxvY2F0aW9uIGV4blxuICBpblxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIHggd2l0aFxuICB8IE5vbmUgLT4geCA+Pnwgam9pblxuICB8IFNvbWUgeCAtPiByZXR1cm4gKGpvaW4geClcbjs7XG5cbmxldCBvcl9lcnJvciB+cnBjX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgPVxuICBSZXN1bHQubWFwX2Vycm9yXG4gICAgfmY6XG4gICAgICAoUnBjX2Vycm9yLnRvX2Vycm9yXG4gICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uXG4gICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZClcbjs7XG4iLCJvcGVuIENvcmVcblxuKCogdXRpbGl0eSBmdW5jdGlvbiBmb3IgYmluLWlvJ2luZyBvdXQgb2YgYSBCaWdzdHJpbmcudCAqKVxubGV0IGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAoYmluX3JlYWRlcl90IDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcilcbiAgICAgID9hZGRfbGVuXG4gICAgICBidWZcbiAgICAgIH5wb3NfcmVmXG4gICAgICB+KGxlbiA6IE5hdDAudClcbiAgICAgIH5sb2NhdGlvblxuICA9XG4gIHRyeVxuICAgIGxldCBpbml0X3BvcyA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGRhdGEgPSBiaW5fcmVhZGVyX3QucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgYWRkX2xlbiA9XG4gICAgICBtYXRjaCBhZGRfbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAwXG4gICAgICB8IFNvbWUgYWRkX2xlbiAtPiBhZGRfbGVuIGRhdGFcbiAgICBpblxuICAgIGlmICFwb3NfcmVmIC0gaW5pdF9wb3MgKyBhZGRfbGVuIDw+IChsZW4gOj4gaW50KVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoZlxuICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICghcG9zX3JlZiAtIGluaXRfcG9zKVxuICAgICAgICAobGVuIDogTmF0MC50IDo+IGludClcbiAgICAgICAgKCk7XG4gICAgT2sgZGF0YVxuICB3aXRoXG4gIHwgZSAtPiBScGNfcmVzdWx0LmJpbl9pb19leG4gfmxvY2F0aW9uIGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gUG9seVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gVXRpbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj58fiApID0gUmVzdWx0LiggPj58IClcblxuKCogQ29tbXV0ZSBSZXN1bHQgYW5kIERlZmVycmVkLiAqKVxubGV0IGRlZmVyX3Jlc3VsdCA6ICdhICdiLiAoJ2EgRGVmZXJyZWQudCwgJ2IpIFJlc3VsdC50IC0+ICgnYSwgJ2IpIFJlc3VsdC50IERlZmVycmVkLnRcbiAgPSBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gcmV0dXJuIGVyclxuICAgIHwgT2sgZCAtPlxuICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQlbWFwIHggPSBkIGluXG4gICAgICAgICBPayB4XG4gICAgICAgfCBTb21lIGQgLT4gcmV0dXJuIChPayBkKSlcbjs7XG5cbm1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICBbIGBSYWlzZVxuICB8IGBDb250aW51ZVxuICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gIHwgYENhbGwgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICBdXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgPVxuICBbICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gIHwgYEV4cGVydCBvZlxuICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgLT4gUmVzcG9uZGVyLnRcbiAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnMudCA9XG4gIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY193aXRoX2V4cGVydFxuICB9XG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG5sZXQgZGVzY3JpcHRpb25zIHQgPSBIYXNodGJsLmtleXMgdC5pbXBsZW1lbnRhdGlvbnNcblxubW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID0gSW5zdGFuY2Uuc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgfCBEaXJlY3QgOlxuICAgICAgICAoXyBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50W0BzZXhwLm9wYXF1ZV0pXG4gICAgICAgIC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IChQLlF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB1bnBhY2tlZCA9ICdhIEluc3RhbmNlLnVucGFja2VkID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICgnYSBpbXBsZW1lbnRhdGlvbnNbQHNleHAub3BhcXVlXSlcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiBzdHJlYW1pbmdfcmVzcG9uc2VzXG4gICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgOyBtdXRhYmxlXG4gICAgICBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gOlxuICAgICAgICAoRGVzY3JpcHRpb24udCAqICgnYSBJbXBsZW1lbnRhdGlvbi50W0BzZXhwLm9wYXF1ZV0pKSBvcHRpb25cbiAgICAoKiBbcGFja2VkX3NlbGZdIGlzIGhlcmUgc28gd2UgY2FuIGVzc2VudGlhbGx5IHBhY2sgYW4gdW5wYWNrZWQgaW5zdGFuY2Ugd2l0aG91dCBkb2luZ1xuICAgICAgIGFueSBhZGRpdGlvbmFsIGFsbG9jYXRpb24uICopXG4gICAgOyBwYWNrZWRfc2VsZiA6ICh0W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGFuZCB0ID0gSW5zdGFuY2UudCA9IFQgOiBfIHVucGFja2VkIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gWyVzZXhwX29mOiBfIHVucGFja2VkXSB0XG5cbiAgbGV0IHNlbmRfd3JpdGVfZXJyb3IgdCBpZCBzZXhwID1cbiAgICBsZXQgZGF0YSA6IF8gUC5NZXNzYWdlLnQgPSBSZXNwb25zZSB7IGlkOyBkYXRhID0gRXJyb3IgKFdyaXRlX2Vycm9yIHNleHApIH0gaW5cbiAgICBtYXRjaCBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgZGF0YSB3aXRoXG4gICAgfCBTZW50ICgpIHwgQ2xvc2VkIC0+ICgpXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIFwiRmFpbGVkIHRvIHNlbmQgd3JpdGUgZXJyb3IgdG8gY2xpZW50XCJcbiAgICAgICAgLCB7IGVycm9yID0gKHNleHAgOiBTZXhwLnQpOyByZWFzb24gPSAociA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpIH1dXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkIChyZXN1bHQgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KSA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IFNlbnQgKCkgLT4gKClcbiAgICB8IENsb3NlZCAtPiAoKVxuICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPlxuICAgICAgc2VuZF93cml0ZV9lcnJvciB0IGlkIChbJXNleHBfb2Y6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdIHIpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX21lc3NhZ2UgdCBiaW5fd3JpdGVyIHggfmlkID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlbiBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBiaW5fd3JpdGVyIHggfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWRcbiAgOztcblxuICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gfmlkID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0LndyaXRlciBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl9kYXRhIGRhdGEgPVxuICAgIGxldCBiaW5fd3JpdGVyID1cbiAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2RhdGEpXG4gICAgaW5cbiAgICB3cml0ZV9tZXNzYWdlIHQgfmlkIGJpbl93cml0ZXIgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgfSlcbiAgOztcblxuICBtb2R1bGUgQ2FjaGVkX2Jpbl93cml0ZXIgOiBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfYmluX3dyaXRlci50XG5cbiAgICB2YWwgY3JlYXRlIDogaWQ6UC5RdWVyeV9pZC50IC0+IGJpbl93cml0ZXI6J2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgdFxuICAgIHZhbCBwcmVwX3dyaXRlIDogJ2EgdCAtPiAnYSAtPiAoJ2EgdCAqICdhKSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIHZhbCBwcmVwX3dyaXRlX2V4cGVydCA6ICdhIHQgLT4gbGVuOmludCAtPiAnYSB0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgdmFsIHByZXBfd3JpdGVfc3RyaW5nIDogJ2EgdCAtPiBzdHJpbmcgLT4gKCdhIHQgKiBzdHJpbmcpIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEltcGxlbWVudGF0aW9uX3R5cGVzLkNhY2hlZF9iaW5fd3JpdGVyLnQgPVxuICAgICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgICAgOyAoKiBMZW5ndGggb2YgdGhlIHVzZXIgZGF0YSBwYXJ0LiBXZSBzZXQgdGhpcyBmaWVsZCB3aGVuIHNlbmRpbmcgYSBtZXNzYWdlLiBUaGlzXG4gICAgICAgICAgIHJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIHRoZVxuICAgICAgICAgICBvbmx5IGFjY2VwdGFibGUgc2VtYW50aWNzIGZvciB0aGUgdHJhbnNwb3J0IGxheWVyIGFueXdheSwgYXMgaXQgZG9lc24ndCBrbm93IGlmXG4gICAgICAgICAgIHRoZSB2YWx1ZSBpcyBtdXRhYmxlIG9yIG5vdCkuXG5cbiAgICAgICAgICAgW2RhdGFfbGVuXSBpcyBwYXNzZWQgdG8gYmluLXByb3Qgd3JpdGVycyBieSBtdXRhdGluZyBbZGF0YV9sZW5dIGluc3RlYWQgb2YgYnlcbiAgICAgICAgICAgcGFzc2luZyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIGF2b2lkIHNvbWUgYWxsb2NhdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgIH1cblxuXG4gICAgdHlwZSB2b2lkID0gVm9pZFxuXG4gICAgbGV0IGJpbl9zaXplX3ZvaWQgVm9pZCA9IDBcbiAgICBsZXQgYmluX3dyaXRlX3ZvaWQgX2J1ZiB+cG9zIFZvaWQgPSBwb3NcblxuICAgIHR5cGUgdm9pZF9tZXNzYWdlID0gdm9pZCBQLk1lc3NhZ2UubmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl93cml0ZV1cblxuICAgIHR5cGUgdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHZvaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5uZWVkc19sZW5ndGhcbiAgICBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICAoKiBUaGlzIGlzIG5vdCByZS1lbnRyYW50IGJ1dCBBc3luYyBjb2RlIGFsd2F5cyBydW5zIG9uIG9uZSB0aHJlYWQgYXQgYSB0aW1lICopXG4gICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMzJcblxuICAgIGxldCBjYWNoZV9iaW5fcHJvdHRlZCAoYmluX3dyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICAgICAgbGV0IGxlbiA9IGJpbl93cml0ZXIud3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICBCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWZmZXIgfnBvczowIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+aWQgfmJpbl93cml0ZXIgOiBhIHQgPVxuICAgICAgbGV0IGhlYWRlcl9wcmVmaXggPVxuICAgICAgICBjYWNoZV9iaW5fcHJvdHRlZCBiaW5fd3JpdGVyX3ZvaWRfbWVzc2FnZSAoUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIFZvaWQgfSlcbiAgICAgIGluXG4gICAgICB7IGhlYWRlcl9wcmVmaXg7IGJpbl93cml0ZXI7IGRhdGFfbGVuID0gTmF0MC5vZl9pbnRfZXhuIDAgfVxuICAgIDs7XG5cbiAgICAoKiBUaGlzIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaGVhZGVyIGlzIGEgY29uc3RhbnQsIG1ha2UgaXQgYSBsaXRlcmFsIHRvIG1ha2UgdGhlXG4gICAgICAgd3JpdGluZyBjb2RlIHNsaWdodGx5IGZhc3Rlci4gKilcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiA9IDRcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyID0gMHg4YTc5bFxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInN0cmVhbV9yZXNwb25zZV8qIGNvbnN0YW50cyBhcmUgY29ycmVjdFwiID1cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBiaW5fd3JpdGVyX3ZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEud3JpdGVcbiAgICAgICAgICBidWZmZXJcbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICAoYE9rIFZvaWQgOiB2b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhKVxuICAgICAgaW5cbiAgICAgIGFzc2VydCAobGVuID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbik7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQzMl90X2xlIGJ1ZmZlciB+cG9zOjBcbiAgICAgICAgPSBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzIpXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBzdHIgPVxuICAgICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgICAgKCogVmVyeSBsb3ctbGV2ZWwgYmluX3Byb3Qgc3R1ZmYuLi4gKilcbiAgICAgIEJpbl9wcm90LkNvbW1vbi5hc3NlcnRfcG9zIHBvcztcbiAgICAgIGxldCBuZXh0ID0gcG9zICsgc3RyX2xlbiBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaW5fcHJvdC5Db21tb24udW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3Bvczpwb3MgYnVmIH5sZW46c3RyX2xlbjtcbiAgICAgIG5leHRcbiAgICA7O1xuXG4gICAgKCogVGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSAzIHZhcmlhbnRzIGV4cG9zZWQgYnkgdGhpcyBtb2R1bGUuIFRoZXlcbiAgICAgICBzZXJpYWxpemUgYSBbUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIChgT2sgZGF0YV9sZW4pIH1dIHZhbHVlLCB0YWtpbmcgY2FyZSBvZlxuICAgICAgIHdyaXRpbmcgdGhlIFtOYXQwLnRdIGxlbmd0aCBwcmVmaXggd2hlcmUgYXBwcm9yaWF0ZS5cblxuICAgICAgIEJlYXIgaW4gbWluZCB0aGF0IHRoZXJlIGFyZSB0d28gbGV2ZWxzIG9mIGxlbmd0aCBwcmVmaXhlcyBmb3Igc3RyZWFtIHJlc3BvbnNlIGRhdGFcbiAgICAgICBtZXNzYWdlOiBvbmUgZm9yIHRoZSB1c2VyIGRhdGEgKHVuZGVyIHRoZSBgT2ssIGJlZm9yZSB0aGUgYWN0dWFsIGRhdGEpLCBhbmQgb25lIGZvclxuICAgICAgIHRoZSByZXNwb25zZSBkYXRhICh1bmRlciB0aGUgLmRhdGEgZmllbGQsIGJlZm9yZSB0aGUgT2spLiAqKVxuICAgIGxldCBiaW5fc2l6ZV9uYXQwX2hlYWRlciB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgU3RyaW5nLmxlbmd0aCBoZWFkZXJfcHJlZml4XG4gICAgICArIE5hdDAuYmluX3NpemVfdCAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbilcbiAgICAgICsgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIGhlYWRlcl9wcmVmaXggaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuXG4gICAgICAgICsgTmF0MC5iaW5fc2l6ZV90IGRhdGFfbGVuXG4gICAgICAgICsgKGRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID0gTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbikgaW5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQzMl90X2xlIGJ1ZiB+cG9zIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMjtcbiAgICAgIE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3M6bmV4dCBkYXRhX2xlblxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9uYXQwX2hlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbmF0MF9oZWFkZXI7IHdyaXRlID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2UgKHQsIF8pID0gYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcblxuICAgIGxldCBiaW5fd3JpdGVfbWVzc2FnZSBidWYgfnBvcyAodCwgZGF0YSkgPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB0IGluXG4gICAgICB0LmJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlOyB3cml0ZSA9IGJpbl93cml0ZV9tZXNzYWdlIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nICh0LCBfKSA9XG4gICAgICBiaW5fc2l6ZV9uYXQwX2hlYWRlciB0ICsgKHQuZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIGJ1ZiB+cG9zICh0LCBzdHIpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZzsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZV9hc19zdHJpbmcgfVxuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZSB0IGRhdGEgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKHQuYmluX3dyaXRlci5zaXplIGRhdGEpO1xuICAgICAgYmluX3dyaXRlcl9tZXNzYWdlXG4gICAgOztcblxuICAgIGxldCBwcmVwX3dyaXRlX3N0cmluZyB0IHN0ciA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biAoU3RyaW5nLmxlbmd0aCBzdHIpO1xuICAgICAgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZ1xuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZV9leHBlcnQgdCB+bGVuID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuIGxlbjtcbiAgICAgIGJpbl93cml0ZXJfbmF0MF9oZWFkZXJcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG4gICAgbW9kdWxlIFN0YXRlID0gVC5TdGF0ZVxuICAgIG1vZHVsZSBJZCA9IFQuSWRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9XG4gICAgICB7IGlkIDogSWQudFxuICAgICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBpbnN0YW5jZSA6IEluc3RhbmNlLnRcbiAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9iaW5fd3JpdGVyLnRcbiAgICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICAgIH1cblxuICAgIGFuZCAnYSBncm91cF9lbnRyeSA9ICdhIFQuZ3JvdXBfZW50cnkgPVxuICAgICAgeyBncm91cCA6ICdhIFQuR3JvdXAudFxuICAgICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICAgIH1cblxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgIGxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxuXG4gICAgbGV0IGZsdXNoZWQgdCA9XG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgVHJhbnNwb3J0LldyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlclxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlciB0ID0gdC5zdHJlYW1fd3JpdGVyLmJpbl93cml0ZXJcblxuICAgIGxldCB3cml0ZV9lb2YgeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gPVxuICAgICAgd3JpdGVfcmVzcG9uc2UgaW5zdGFuY2UgcXVlcnlfaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZilcbiAgICA7O1xuXG4gICAgKCogW3dyaXRlX21lc3NhZ2Vfc3RyaW5nXSBhbmQgW3dyaXRlX21lc3NhZ2VdIGJvdGggYWxsb2NhdGUgMyB3b3JkcyBmb3IgdGhlIHR1cGxlcy5cbiAgICAgICBbd3JpdGVfbWVzc2FnZV9leHBlcnRdIGRvZXMgbm90IGFsbG9jYXRlLiAqKVxuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHQgeCA9XG4gICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyA9XG4gICAgICAgIENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGVfc3RyaW5nIHQuc3RyZWFtX3dyaXRlciB4XG4gICAgICBpblxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIHdyaXRlX21lc3NhZ2VcbiAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgfmlkOnQucXVlcnlfaWRcbiAgICAgICAgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZ1xuICAgICAgICAodC5zdHJlYW1fd3JpdGVyLCB4KVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZSB0IHggPVxuICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA9IENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGUgdC5zdHJlYW1fd3JpdGVyIHggaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlIGluc3RhbmNlIH5pZDp0LnF1ZXJ5X2lkIGJpbl93cml0ZXJfbWVzc2FnZSAodC5zdHJlYW1fd3JpdGVyLCB4KVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlID0gQ2FjaGVkX2Jpbl93cml0ZXIucHJlcF93cml0ZV9leHBlcnQgdC5zdHJlYW1fd3JpdGVyIH5sZW4gaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlX2V4cGVydFxuICAgICAgICBpbnN0YW5jZVxuICAgICAgICB+aWQ6dC5xdWVyeV9pZFxuICAgICAgICBiaW5fd3JpdGVyX21lc3NhZ2VcbiAgICAgICAgdC5zdHJlYW1fd3JpdGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOztcblxuICAgIGxldCBjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2UgdCA9XG4gICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCB0LmNsb3NlZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgICAgIGxldCBncm91cHMgPSB0Lmdyb3VwcyBpblxuICAgICAgICBpZiBub3QgKEJhZy5pc19lbXB0eSBncm91cHMpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGUuVmVyeV9sb3dfcHJpb3JpdHlfd29yay5lbnF1ZXVlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEJhZy5yZW1vdmVfb25lIGdyb3VwcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gRmluaXNoZWRcbiAgICAgICAgICAgIHwgU29tZSB7IGdyb3VwOyBlbGVtZW50X2luX2dyb3VwIH0gLT5cbiAgICAgICAgICAgICAgQmFnLnJlbW92ZSBncm91cC5jb21wb25lbnRzIGVsZW1lbnRfaW5fZ3JvdXA7XG4gICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIGdyb3VwLmNvbXBvbmVudHNfYnlfaWQgdC5pZDtcbiAgICAgICAgICAgICAgTm90X2ZpbmlzaGVkKTtcbiAgICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgIHwgTm90X3N0YXJ0ZWQgXyAtPiAoKVxuICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfZW9mIHQpXG4gICAgOztcblxuICAgIGxldCBjbG9zZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gYXMgdCkgPVxuICAgICAgY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHQ7XG4gICAgICBIYXNodGJsLnJlbW92ZSBpbnN0YW5jZS5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnlfaWRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgICAgdGhlbiBgQ2xvc2VkXG4gICAgICBlbHNlIChcbiAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+IFF1ZXVlLmVucXVldWUgcSAoTm9ybWFsIHgpXG4gICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfbWVzc2FnZSB0IHgpO1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB4ID1cbiAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4IHdpdGhcbiAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICB8IGBPayAtPiBgRmx1c2hlZCAoV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgICAgIHRoZW4gYENsb3NlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPlxuICAgICAgICAgICAgIFF1ZXVlLmVucXVldWUgcSAoRXhwZXJ0IChCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWYgfnBvcyB+bGVuKSlcbiAgICAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgfmJ1ZiB+cG9zIH5sZW4pO1xuICAgICAgICAgIGBPaylcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICAgIHwgYE9rIC0+IGBGbHVzaGVkIChXcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHN0YXJ0IHQgPVxuICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICB8IFN0YXJ0ZWQgLT4gZmFpbHdpdGggXCJhdHRlbXB0ZWQgdG8gc3RhcnQgd3JpdGVyIHdoaWNoIHdhcyBhbHJlYWR5IHN0YXJ0ZWRcIlxuICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+XG4gICAgICAgIHQuc3RhdGUgPC0gU3RhcnRlZDtcbiAgICAgICAgUXVldWUuaXRlciBxIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9ybWFsIHggLT4gd3JpdGVfbWVzc2FnZSB0IHhcbiAgICAgICAgICB8IEV4cGVydCB4IC0+IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHQgeCk7XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZCB0aGVuIHdyaXRlX2VvZiB0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvblxuICAgICAgICAocmVzdWx0IDogKF8sIFJwY19lcnJvci50KSBSZXN1bHQudClcbiAgICAgICAgb25fZXhjZXB0aW9uXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIChVbmNhdWdodF9leG4gc2V4cCkgLT5cbiAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIChFeG4uY3JlYXRlX3Mgc2V4cClcbiAgICB8IEVycm9yIF8gfCBPayBfIC0+ICgpXG4gIDs7XG5cbiAgbGV0IGF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQgZXJyb3IgfnJwY19raW5kID1cbiAgICBsZXQgZXhuID0gRXJyb3IudG9fZXhuIGVycm9yIGluXG4gICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgIGV4blxuICAgICAgfmxvY2F0aW9uOlslc3RyaW5nIFwic2VydmVyLXNpZGUgJXtycGNfa2luZH0gYXV0aG9yaXphdGlvblwiXVxuICA7O1xuXG4gIGxldCBhcHBseV9zdHJlYW1pbmdfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICB7IEltcGxlbWVudGF0aW9uLkYuYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9XG4gICAgICAgIH5sZW5cbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5pZFxuICAgICAgICB+KG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50KVxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGxldCBkYXRhID1cbiAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+bGVuXG4gICAgICAgIH5sb2NhdGlvbjpcInN0cmVhbWluZ19ycGMgc2VydmVyLXNpZGUgcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgaW5cbiAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5wYWNrZWRfc2VsZiBpblxuICAgIGxldCBzdHJlYW1fd3JpdGVyID0gQ2FjaGVkX2Jpbl93cml0ZXIuY3JlYXRlIH5pZCB+YmluX3dyaXRlcjpiaW5fdXBkYXRlX3dyaXRlciBpblxuICAgIGxldCBpbXBsX3dpdGhfc3RhdGUgPVxuICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICB8IFBpcGUgZiAtPiBgUGlwZSBmXG4gICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgIGxldCB3cml0ZXIgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgPVxuICAgICAgICAgIHsgaWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5JZC5jcmVhdGUgKClcbiAgICAgICAgICA7IHN0YXRlID0gTm90X3N0YXJ0ZWQgKFF1ZXVlLmNyZWF0ZSAoKSlcbiAgICAgICAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgICAgOyBpbnN0YW5jZSA9IHQucGFja2VkX3NlbGZcbiAgICAgICAgICA7IHF1ZXJ5X2lkID0gaWRcbiAgICAgICAgICA7IGdyb3VwcyA9IEJhZy5jcmVhdGUgKClcbiAgICAgICAgICA7IHN0cmVhbV93cml0ZXJcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5rZXk6aWQgfmRhdGE6KERpcmVjdCB3cml0ZXIpO1xuICAgICAgICBgRGlyZWN0IChmLCB3cml0ZXIpXG4gICAgaW5cbiAgICBsZXQgcnVuX2ltcGwgaW1wbCBzcGxpdF9vayBoYW5kbGVfb2sgPVxuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIFJwY19yZXN1bHQudHJ5X3dpdGhcbiAgICAgICAgICA/b25fYmFja2dyb3VuZF9leGNlcHRpb246b25fZXhjZXB0aW9uLmNhbGxiYWNrXG4gICAgICAgICAgKGZ1biAoKSAtPiBkZWZlcl9yZXN1bHQgKGRhdGEgPj58fiBpbXBsKSlcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBwaXBlX3JwYyBjb21wdXRhdGlvblwiXG4gICAgICBpblxuICAgICAgRWFnZXJfZGVmZXJyZWQudXBvbiByZXN1bHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgKFJwY19lcnJvci5VbmNhdWdodF9leG4gc2V4cCBhcyBlcnIpIC0+XG4gICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKEVycm9yIGVycik7XG4gICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG5cbiAgICAgICAgICAgIG9uX2V4Y2VwdGlvblxuICAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgICAgKEV4bi5jcmVhdGVfcyBzZXhwKVxuICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChFcnJvciBlcnIpXG4gICAgICAgIHwgT2sgKE9yX25vdF9hdXRob3JpemVkLk5vdF9hdXRob3JpemVkIGVycm9yKSAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgYmluX2luaXRfd3JpdGVyXG4gICAgICAgICAgICAoYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQ6XCJwaXBlX3JwY1wiKVxuICAgICAgICB8IE9rIChBdXRob3JpemVkIChFcnJvciBlcnJvcikpIC0+XG4gICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKE9rIGVycm9yKVxuICAgICAgICB8IE9rIChBdXRob3JpemVkIChPayBvaykpIC0+XG4gICAgICAgICAgbGV0IGluaXRpYWwsIHJlc3QgPSBzcGxpdF9vayBvayBpblxuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBpbml0aWFsKTtcbiAgICAgICAgICBoYW5kbGVfb2sgcmVzdClcbiAgICBpblxuICAgIG1hdGNoIGltcGxfd2l0aF9zdGF0ZSB3aXRoXG4gICAgfCBgUGlwZSBmIC0+XG4gICAgICBydW5faW1wbFxuICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSlcbiAgICAgICAgRm4uaWRcbiAgICAgICAgKGZ1biBwaXBlX3IgLT5cbiAgICAgICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmtleTppZCB+ZGF0YTooUGlwZSBwaXBlX3IpO1xuICAgICAgICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAgICAgIChXcml0ZXIudHJhbnNmZXIgdC53cml0ZXIgcGlwZV9yIChmdW4gZGF0YSAtPlxuICAgICAgICAgICAgICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2UgPSBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlIHN0cmVhbV93cml0ZXIgZGF0YSBpblxuICAgICAgICAgICAgICAgIHdyaXRlX21lc3NhZ2UgaW5zdGFuY2UgfmlkIGJpbl93cml0ZXJfbWVzc2FnZSAoc3RyZWFtX3dyaXRlciwgZGF0YSkpKTtcbiAgICAgICAgICAgUGlwZS5jbG9zZWQgcGlwZV9yXG4gICAgICAgICAgID4+PiBmdW4gKCkgLT5cbiAgICAgICAgICAgUGlwZS51cHN0cmVhbV9mbHVzaGVkIHBpcGVfclxuICAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICAgfCBgT2sgfCBgUmVhZGVyX2Nsb3NlZCAtPlxuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZik7XG4gICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQpXG4gICAgfCBgRGlyZWN0IChmLCB3cml0ZXIpIC0+XG4gICAgICBydW5faW1wbFxuICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSB3cml0ZXIpXG4gICAgICAgIChmdW4geCAtPiB4LCAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5zdGFydCB3cml0ZXIpXG4gIDs7XG5cbiAgbGV0IGFwcGx5X2ltcGxlbWVudGF0aW9uJ1xuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gICAgPVxuICAgIGxldCBpZCA9IHF1ZXJ5LmlkIGluXG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb24gd2l0aFxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5IChiaW5fcXVlcnlfcmVhZGVyLCBmKSAtPlxuICAgICAgbGV0IHF1ZXJ5X2NvbnRlbnRzID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgbWVzc2FnZSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcXVlcnlfY29udGVudHMgd2l0aFxuICAgICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gU3RvcCBlcnJcbiAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgICgqIFdlIGRvbid0IGNsb3NlIGNvbm5lY3Rpb25zIG9uIHVuYXV0aG9yaXplZCBSUENzLiBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG9cbiAgICAgICAgICAgICAgIGNvbW11bmljYXRlIGZhaWx1cmUgYmFjayB0byB0aGUgc2VuZGVyIGluIG9uZS13YXkgcnBjcywgd2UgZG8gbm90aGluZy4gVGhlXG4gICAgICAgICAgICAgICBkZWZlcnJlZCAoYW5kIGFueSBkZWZlcnJlZCBleGNlcHRpb25zKSBhcmUgZHJvcHBlZCBoZXJlIGFzIGEgY29uc2VxdWVuY2Ugb2ZcbiAgICAgICAgICAgICAgIFtsaWZ0X2RlZmVycmVkXSBleGlzdGluZyBmb3Igb25lLXdheSBycGNzLiBXZSB1c2UgW0VhZ2VyX2RlZmVycmVkXSBzbyBpblxuICAgICAgICAgICAgICAgdGhlIG5vbi1ibG9ja2luZyBjYXNlcyB0aGlzIHdpbGwgc3RpbGwgcnVuIHN5bmNocm9ub3VzbHkuICopXG4gICAgICAgICAgICBsZXQgKF8gOiBfIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgPSBmIHQuY29ubmVjdGlvbl9zdGF0ZSBxIGluXG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuO1xuICAgICAgICAgICAgaWYgb25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIFN0b3BcbiAgICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBjb21wdXRhdGlvblwiKVxuICAgICAgICAgICAgZWxzZSBDb250aW51ZSkpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLk9uZV93YXlfZXhwZXJ0IGYgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBsZW4gPSAocXVlcnkuZGF0YSA6PiBpbnQpIGluXG4gICAgICAgICBsZXQgKF8gOiBfIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgPVxuICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgIGluXG4gICAgICAgICByZWFkX2J1ZmZlcl9wb3NfcmVmIDo9ICFyZWFkX2J1ZmZlcl9wb3NfcmVmICsgbGVuO1xuICAgICAgICAgQ29udGludWVcbiAgICAgICB3aXRoXG4gICAgICAgfCBleG4gLT5cbiAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgdGhlblxuICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgZXhwZXJ0IGNvbXB1dGF0aW9uXCIpXG4gICAgICAgICBlbHNlIENvbnRpbnVlKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGMgKGJpbl9xdWVyeV9yZWFkZXIsIGJpbl9yZXNwb25zZV93cml0ZXIsIGYsIHJlc3VsdF9tb2RlKSAtPlxuICAgICAgbGV0IHF1ZXJ5X2NvbnRlbnRzID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIGxldCBvcl9ub3RfYXV0aG9yaXplZF90b19ycGNfcmVzdWx0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIHJlc3VsdCAtPiBPayByZXN1bHRcbiAgICAgICAgfCBOb3RfYXV0aG9yaXplZCBlcnJvciAtPiBhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZDpcInJwY1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuQmxvY2tpbmcgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgIFJlc3VsdC5iaW5kIHF1ZXJ5X2NvbnRlbnRzIH5mOihmdW4gcXVlcnkgLT5cbiAgICAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcXVlcnkgfD4gb3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsdClcbiAgICAgICAgICAgIHw+IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlclxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgKCogSW4gdGhlIFtEZWZlcnJlZF0gYnJhbmNoIHdlIHVzZSBbTW9uaXRvci50cnlfd2l0aF0sIHdoaWNoIGluY2x1ZGVzXG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIHdoZW4gaXQgY2F0Y2hlcyBhbiBleGNlcHRpb24uIEZvciBjb25zaXN0ZW5jeSwgd2UgYWxzbyBnZXRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgaGVyZS4gKilcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICBsZXQgc2V4cCA9XG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsgbG9jYXRpb24gPSBcInNlcnZlci1zaWRlIGJsb2NraW5nIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgICAgOyBleG4gOiBleG5cbiAgICAgICAgICAgICAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgKEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIHNleHApKTtcbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bilcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT5cbiAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgKCogV2UgZ2VuZXJhbGx5IHRyeSB0byB3cml0ZSBhIHJlc3BvbnNlIGJlZm9yZSBoYW5kbGluZyBbb25fZXhjZXB0aW9uXSBzbyBpZiB3ZVxuICAgICAgICAgICAgICBhcmUgY2xvc2luZyB0aGUgY29ubmVjdGlvbiB3ZSBzdGlsbCBhY3R1YWxseSBzZW5kIHRoZSByZXNwb25zZSBiYWNrLiBXaGVuIHdlXG4gICAgICAgICAgICAgIHBhc3MgW29uX2V4Y2VwdGlvbi5jYWxsYmFja10gaGVyZSwgd2UgYXJlIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgcmFpc2VkXG4gICAgICAgICAgICAgIGV4Y2VwdGlvbnMgbm90IHRvIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgY2xpZW50IChlLmcuIGlmIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICAgICByYWlzZXMgYm90aCBhc3luY2hyb25vdXNseSBhbmQgc3luY2hyb25vdXNseSkuIFRoaXMgd291bGQgYmUgaGFyZCB0byBoYW5kbGVcbiAgICAgICAgICAgICAgaW4gYSBtb3JlIHByaW5jaXBsZWQgd2F5LiAqKVxuICAgICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgICAgIH5ydW46YE5vd1xuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIHF1ZXJ5X2NvbnRlbnRzIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPiBEZWZlcnJlZC5yZXR1cm4gKEVycm9yIGVycilcbiAgICAgICAgICAgICAgICB8IE9rIHF1ZXJ5IC0+XG4gICAgICAgICAgICAgICAgICBFYWdlcl9kZWZlcnJlZC5tYXBcbiAgICAgICAgICAgICAgICAgICAgKGYgdC5jb25uZWN0aW9uX3N0YXRlIHF1ZXJ5KVxuICAgICAgICAgICAgICAgICAgICB+Zjpvcl9ub3RfYXV0aG9yaXplZF90b19ycGNfcmVzdWx0KVxuICAgICAgICAgaW5cbiAgICAgICAgICgqIEluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGEgdmFsdWUgaW1tZWRpYXRlbHksIHdlIHdpbGxcbiAgICAgICAgICAgIHdyaXRlIHRoZSByZXNwb25zZSBpbW1lZGlhdGVseSBhcyB3ZWxsICh0aGlzIGlzIGFsc28gd2h5IHRoZSBhYm92ZSBbdHJ5X3dpdGhdXG4gICAgICAgICAgICBoYXMgW35ydW46YE5vd10pLiAgVGhpcyBjYW4gYmUgYSBiaWcgcGVyZm9ybWFuY2Ugd2luIGZvciBzZXJ2ZXJzIHRoYXQgZ2V0IG1hbnlcbiAgICAgICAgICAgIHF1ZXJpZXMgaW4gYSBzaW5nbGUgQXN5bmMgY3ljbGUuICopXG4gICAgICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgID4+PiBmdW4gZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgZGF0YTtcbiAgICAgICAgICAgIG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiBkYXRhIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSk7XG4gICAgICBDb250aW51ZVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGNfZXhwZXJ0IChmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCByZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLmNyZWF0ZSBxdWVyeS5pZCB0LndyaXRlciBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICAoKiBXZSBuZWVkIHRoZSBbTW9uaXRvci50cnlfd2l0aF0gZXZlbiBmb3IgdGhlIGJsb2NraW5nIG1vZGUgYXMgdGhlIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIG1pZ2h0IHJldHVybiBbRGVsYXllZF9yZXBvbnNlXSwgc28gd2UgZG9uJ3QgYm90aGVyIG9wdGltaXppbmcgdGhlIGJsb2NraW5nXG4gICAgICAgICAgIG1vZGUuICopXG4gICAgICAgIGxldCByZXN0ID1cbiAgICAgICAgICBtYXRjaCBvbl9leGNlcHRpb24uY2FsbGJhY2sgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYExvZ1xuICAgICAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgICAgICBpblxuICAgICAgICBNb25pdG9yLnRyeV93aXRoIH5yZXN0IH5ydW46YE5vdyAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IChxdWVyeS5kYXRhIDo+IGludCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHJlc3BvbmRlciByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT4gcmVzdWx0XG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+IERlZmVycmVkLnJldHVybiByZXN1bHQpXG4gICAgICBpblxuICAgICAgbGV0IGNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IGV4biA9XG4gICAgICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuIGV4biB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgZXhwZXJ0IGNvbXB1dGF0aW9uXCJcbiAgICAgIGluXG4gICAgICBsZXQgaGFuZGxlX2V4biByZXN1bHQgPVxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICBpZiByZXNwb25kZXIucmVzcG9uZGVkXG4gICAgICAgICAgdGhlbiByZXN1bHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl91bml0IHJlc3VsdDtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICBpblxuICAgICAgICByZXN1bHRcbiAgICAgIGluXG4gICAgICBsZXQgY2hlY2tfcmVzcG9uZGVkICgpID1cbiAgICAgICAgaWYgcmVzcG9uZGVyLnJlc3BvbmRlZFxuICAgICAgICB0aGVuIE9rICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBoYW5kbGVfZXhuXG4gICAgICAgICAgICAoY29tcHV0YXRpb25fZmFpbHVyZV9yZXN1bHQgKEZhaWx1cmUgXCJFeHBlcnQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCByZXBseVwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgZCA9XG4gICAgICAgIGxldCBvcGVuIEVhZ2VyX2RlZmVycmVkLkxldF9zeW50YXggaW5cbiAgICAgICAgbWF0Y2glbWFwIGQgd2l0aFxuICAgICAgICB8IE9rIChBdXRob3JpemVkIHJlc3VsdCkgLT5cbiAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgfCBSZXBsaWVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBkIC0+IGRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZFxuICAgICAgICAgIHRoZW4gY2hlY2tfcmVzcG9uZGVkICgpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICB1cG9uIGQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBjaGVja19yZXNwb25kZWQgKClcbiAgICAgICAgICAgICAgfD4gUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6dC5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgfD4gb2tfZXhuKTtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICB8IE9rIChOb3RfYXV0aG9yaXplZCBlcnJvcikgLT5cbiAgICAgICAgICBoYW5kbGVfZXhuIChhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZDpcInJwYyBleHBlcnRcIilcbiAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gaGFuZGxlX2V4biAoY29tcHV0YXRpb25fZmFpbHVyZV9yZXN1bHQgZXhuKSBpblxuICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgICByZXN1bHRcbiAgICAgIGluXG4gICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFdhaXRcbiAgICAgICAgICAgKGxldCVtYXAgciA9IGQgaW5cbiAgICAgICAgICAgIG9rX2V4blxuICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOnQuY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgICAgIHIpKVxuICAgICAgIHwgU29tZSByZXN1bHQgLT5cbiAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gQ29udGludWVcbiAgICAgICAgICB8IEVycm9yIF8gLT4gU3RvcCByZXN1bHQpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5TdHJlYW1pbmdfcnBjIHN0cmVhbWluZ19ycGMgLT5cbiAgICAgIGxldCBzdHJlYW1fcXVlcnkgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIFAuU3RyZWFtX3F1ZXJ5LmJpbl9yZWFkZXJfbmF0MF90XG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcGlwZV9ycGMgc3RyZWFtX3F1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgIH5hZGRfbGVuOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgQWJvcnQgLT4gMFxuICAgICAgICAgICAgfCBgUXVlcnkgKGxlbiA6IE5hdDAudCkgLT4gKGxlbiA6PiBpbnQpKVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBzdHJlYW1fcXVlcnkgd2l0aFxuICAgICAgIHwgRXJyb3IgX2VyciAtPiAoKVxuICAgICAgIHwgT2sgYEFib3J0IC0+XG4gICAgICAgICAoKiBOb3RlIHRoYXQgdGhlcmUncyBzb21lIGRlbGF5IGJldHdlZW4gd2hlbiB3ZSByZWNlaXZlIGEgcGlwZSBSUEMgcXVlcnkgYW5kXG4gICAgICAgICAgICB3aGVuIHdlIHB1dCBzb21ldGhpbmcgaW4gW29wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc10gKHdlIHdhaXQgZm9yXG4gICAgICAgICAgICBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gdG8gcmV0dXJuKS4gRHVyaW5nIHRoaXMgdGltZSwgYW4gYWJvcnQgbWVzc2FnZSB3b3VsZFxuICAgICAgICAgICAganVzdCBiZSBpZ25vcmVkLiBUaGUgZGlzcGF0Y2hlciBjYW4ndCBhYm9ydCB0aGUgcXVlcnkgd2hpbGUgdGhpcyBpc1xuICAgICAgICAgICAgaGFwcGVuaW5nLCB0aG91Z2gsIHNpbmNlIHRoZSBpbnRlcmZhY2UgZG9lc24ndCBleHBvc2UgdGhlIElEIHJlcXVpcmVkIHRvXG4gICAgICAgICAgICBhYm9ydCB0aGUgcXVlcnkgdW50aWwgYWZ0ZXIgYSByZXNwb25zZSBoYXMgYmVlbiByZXR1cm5lZC4gKilcbiAgICAgICAgIE9wdGlvbi5pdGVyIChIYXNodGJsLmZpbmQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnkuaWQpIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IFBpcGUgcGlwZSAtPiBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICAgICAgICAgICB8IERpcmVjdCB3IC0+IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlIHcpXG4gICAgICAgfCBPayAoYFF1ZXJ5IGxlbikgLT5cbiAgICAgICAgIGFwcGx5X3N0cmVhbWluZ19pbXBsZW1lbnRhdGlvblxuICAgICAgICAgICB0XG4gICAgICAgICAgIHN0cmVhbWluZ19ycGNcbiAgICAgICAgICAgfmxlblxuICAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgfmlkXG4gICAgICAgICAgIH5vbl9leGNlcHRpb25cbiAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcik7XG4gICAgICBDb250aW51ZVxuICA7O1xuXG4gIGxldCBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gICAgPVxuICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uJ1xuICAgICAgdFxuICAgICAgaW1wbGVtZW50YXRpb25cbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfm9uX2V4Y2VwdGlvblxuICA7O1xuXG4gIGxldCBmbHVzaCAoVCB0KSA9XG4gICAgYXNzZXJ0IChub3QgdC5zdG9wcGVkKTtcbiAgICBsZXQgcHJvZHVjZXJzX2ZsdXNoZWQgPVxuICAgICAgSGFzaHRibC5mb2xkIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5pbml0OltdIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPlxuICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgfCBEaXJlY3QgXyAtPiBhY2NcbiAgICAgICAgfCBQaXBlIHBpcGUgLT4gRGVmZXJyZWQuaWdub3JlX20gKFBpcGUudXBzdHJlYW1fZmx1c2hlZCBwaXBlKSA6OiBhY2MpXG4gICAgaW5cbiAgICBEZWZlcnJlZC5hbGxfdW5pdCBwcm9kdWNlcnNfZmx1c2hlZFxuICA7O1xuXG4gIGxldCBzdG9wIChUIHQpID1cbiAgICB0LnN0b3BwZWQgPC0gdHJ1ZTtcbiAgICBIYXNodGJsLml0ZXIgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmY6KGZ1bmN0aW9uXG4gICAgICB8IERpcmVjdCB3cml0ZXIgLT5cbiAgICAgICAgKCogRG9uJ3QgcmVtb3ZlIHRoZSB3cml0ZXIgZnJvbSB0aGUgaW5zdGFuY2UsIGFzIHRoYXQgd291bGQgbW9kaWZ5IHRoZSBoYXNodGFibGVcbiAgICAgICAgICAgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGl0ZXJhdGluZyBvdmVyLiAqKVxuICAgICAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2Ugd3JpdGVyXG4gICAgICB8IFBpcGUgXyAtPiAoKSk7XG4gICAgSGFzaHRibC5jbGVhciB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICA7O1xuXG4gIGxldCBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnQgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IGBDb250aW51ZSAtPiBDb250aW51ZVxuICAgIHwgYFJhaXNlIC0+IFJwY19lcnJvci5yYWlzZSBlcnJvciB0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgIHwgYENhbGwgZiAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBmXG4gICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICB+cnBjX3RhZzooUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS5QLlF1ZXJ5LnRhZylcbiAgICAgICAgICAgfnZlcnNpb246cXVlcnkudmVyc2lvblxuICAgICAgIHdpdGhcbiAgICAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgICAgIHwgYENvbnRpbnVlIC0+IENvbnRpbnVlKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcXVlcnlfaW50ZXJuYWxcbiAgICAgICAgdFxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbGV0IHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyB9ID0gdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gOiBEZXNjcmlwdGlvbi50ID1cbiAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCB0Lmxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiB3aXRoXG4gICAgfCBTb21lIChsYXN0X2Rlc2MsIGltcGxlbWVudGF0aW9uKSB3aGVuIERlc2NyaXB0aW9uLmVxdWFsIGxhc3RfZGVzYyBkZXNjcmlwdGlvbiAtPlxuICAgICAgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvbi5mXG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPlxuICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBpbXBsZW1lbnRhdGlvbnMgZGVzY3JpcHRpb24gd2l0aFxuICAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbiAtPlxuICAgICAgICAgdC5sYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPC0gU29tZSAoZGVzY3JpcHRpb24sIGltcGxlbWVudGF0aW9uKTtcbiAgICAgICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIHRcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb24uZlxuICAgICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgICAgICAgICB+cXVlcnlcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgICAgICAgfCBgRXhwZXJ0IGltcGwgLT5cbiAgICAgICAgICAgIGxldCB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZDsgbWV0YWRhdGEgPSAoXyA6IHN0cmluZyBvcHRpb24pOyBkYXRhID0gbGVuIH0gPVxuICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbmRlciA9IFJlc3BvbmRlci5jcmVhdGUgaWQgdC53cml0ZXIgaW5cbiAgICAgICAgICAgICAgaW1wbFxuICAgICAgICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgICAgIH5ycGNfdGFnOihQLlJwY190YWcudG9fc3RyaW5nIHRhZylcbiAgICAgICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgICAgIHJlc3BvbmRlclxuICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgIH5sZW46KGxlbiA6PiBpbnQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkIHRoZW4gQ29udGludWUgZWxzZSBXYWl0IGRcbiAgICAgICAgICB8IChgQ29udGludWUgfCBgUmFpc2UgfCBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDYWxsIF8pIGFzIG9uX3Vua25vd25fcnBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBScGNfZXJyb3IuVW5pbXBsZW1lbnRlZF9ycGMgKHF1ZXJ5LnRhZywgYFZlcnNpb24gcXVlcnkudmVyc2lvbikgaW5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgcXVlcnkuaWQgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IChFcnJvciBlcnJvcik7XG4gICAgICAgICAgICBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSkpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9xdWVyeVxuICAgICAgICAoVCB0KVxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgaWYgdC5zdG9wcGVkIHx8IFdyaXRlci5pc19jbG9zZWQgdC53cml0ZXJcbiAgICB0aGVuIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC5TdG9wIChPayAoKSlcbiAgICBlbHNlXG4gICAgICBScGNfbWV0YWRhdGEuUHJpdmF0ZS53aXRoX21ldGFkYXRhIHF1ZXJ5Lm1ldGFkYXRhIH5mOihmdW4gKCkgLT5cbiAgICAgICAgaGFuZGxlX3F1ZXJ5X2ludGVybmFsXG4gICAgICAgICAgdFxuICAgICAgICAgIH5xdWVyeVxuICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcilcbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBJbnN0YW5jZS5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5sZXQgY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnM6aSdzIH5vbl91bmtub3duX3JwYyA9XG4gICgqIE1ha2Ugc3VyZSB0aGUgdGFncyBhcmUgdW5pcXVlLiAqKVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gRGVzY3JpcHRpb24uVGFibGUuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIGxldCBkdXBzID0gRGVzY3JpcHRpb24uSGFzaF9zZXQuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIExpc3QuaXRlciBpJ3MgfmY6KGZ1biAoaSA6IF8gSW1wbGVtZW50YXRpb24udCkgLT5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgeyBEZXNjcmlwdGlvbi5uYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBpLnRhZzsgdmVyc2lvbiA9IGkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCBIYXNodGJsLmFkZCBpbXBsZW1lbnRhdGlvbnMgfmtleTpkZXNjcmlwdGlvbiB+ZGF0YTppIHdpdGhcbiAgICB8IGBPayAtPiAoKVxuICAgIHwgYER1cGxpY2F0ZSAtPiBIYXNoX3NldC5hZGQgZHVwcyBkZXNjcmlwdGlvbik7XG4gIGlmIG5vdCAoSGFzaF9zZXQuaXNfZW1wdHkgZHVwcylcbiAgdGhlbiBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgKEhhc2hfc2V0LnRvX2xpc3QgZHVwcykpXG4gIGVsc2UgT2sgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIDo+IF8gb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgfVxuOztcblxubGV0IGluc3RhbnRpYXRlXG4gICAgICB0XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJcbiAgPVxuICBsZXQgcmVjIHVucGFja2VkIDogXyBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgPSB0XG4gICAgOyB3cml0ZXJcbiAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNvbm5lY3Rpb25fc3RhdGVcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgIDsgc3RvcHBlZCA9IGZhbHNlXG4gICAgOyBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPSBOb25lXG4gICAgOyBwYWNrZWRfc2VsZiA9IEluc3RhbmNlLlQgdW5wYWNrZWRcbiAgICB9XG4gIGluXG4gIHVucGFja2VkLnBhY2tlZF9zZWxmXG47O1xuXG5leGNlcHRpb24gRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBvZiBEZXNjcmlwdGlvbi50IGxpc3QgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGNyZWF0ZV9leG4gfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgPVxuICBtYXRjaCBjcmVhdGUgfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgd2l0aFxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKVxuOztcblxubGV0IG51bGwgKCkgPSBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnM6W10gfm9uX3Vua25vd25fcnBjOmBSYWlzZVxuXG5sZXQgYWRkX2V4biB0IChpbXBsZW1lbnRhdGlvbiA6IF8gSW1wbGVtZW50YXRpb24udCkgPVxuICBsZXQgZGVzYyA6IERlc2NyaXB0aW9uLnQgPVxuICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaW1wbGVtZW50YXRpb24udGFnOyB2ZXJzaW9uID0gaW1wbGVtZW50YXRpb24udmVyc2lvbiB9XG4gIGluXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLmNvcHkgdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzYyB+ZGF0YTppbXBsZW1lbnRhdGlvbiB3aXRoXG4gIHwgYER1cGxpY2F0ZSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBbIGRlc2MgXSlcbiAgfCBgT2sgLT4geyB0IHdpdGggaW1wbGVtZW50YXRpb25zIH1cbjs7XG5cbmxldCBhZGQgdCBpbXBsZW1lbnRhdGlvbiA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gYWRkX2V4biB0IGltcGxlbWVudGF0aW9uKVxuXG5sZXQgbGlmdCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSB+ZiA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLm1hcCBpbXBsZW1lbnRhdGlvbnMgfmY6KEltcGxlbWVudGF0aW9uLmxpZnQgfmYpIGluXG4gIGxldCBvbl91bmtub3duX3JwYyA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgKGBSYWlzZSB8IGBDb250aW51ZSB8IGBDbG9zZV9jb25uZWN0aW9uKSBhcyB4IC0+IHhcbiAgICB8IGBDYWxsIGNhbGwgLT4gYENhbGwgKGZ1biBzdGF0ZSAtPiBjYWxsIChmIHN0YXRlKSlcbiAgICB8IGBFeHBlcnQgZXhwZXJ0IC0+IGBFeHBlcnQgKGZ1biBzdGF0ZSAtPiBleHBlcnQgKGYgc3RhdGUpKVxuICBpblxuICB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gUmVzcG9uZGVyXG5cbiAgbW9kdWxlIFJwY19yZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBSZXNwb25kZXIudFxuXG4gICAgbGV0IGNhbm5vdF9zZW5kIHIgPVxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICAgclxuICAgICAgICBbJXNleHBfb2Y6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdXG4gICAgOztcblxuICAgIGxldCBtYXJrX3Jlc3BvbmRlZCAodCA6IHQpID1cbiAgICAgIGlmIHQucmVzcG9uZGVkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWxyZWFkeSByZXNwb25kZWRcIiB0IFslc2V4cF9vZjogUmVzcG9uZGVyLnRdO1xuICAgICAgdC5yZXNwb25kZWQgPC0gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGUgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgICB0LndyaXRlclxuICAgICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAgIGhlYWRlclxuICAgICAgICAgIH5idWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgd2l0aFxuICAgICAgfCBTZW50IGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT4gY2Fubm90X3NlbmQgclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2JpZ3N0cmluZyAodCA6IHQpIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgICBSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIChOYXQwLm9mX2ludF9leG4gbGVuKSB9XG4gICAgICBpblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgaGVhZGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Vycm9yICh0IDogdCkgZXJyb3IgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBkYXRhID1cbiAgICAgICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSByYXcgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAoRXJyb3IudG9fZXhuIGVycm9yKVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgfSlcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfYmluX3Byb3QgKHQgOiB0KSBiaW5fd3JpdGVyX2EgYSA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2EpKVxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayBhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgY3JlYXRlX2V4biA9IGNyZWF0ZV9leG5cbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFJlYWRlciA9IFRyYW5zcG9ydC5SZWFkZXJcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbm1vZHVsZSBIYW5kc2hha2VfZXJyb3IgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBFb2ZcbiAgICAgIHwgVHJhbnNwb3J0X2Nsb3NlZFxuICAgICAgfCBUaW1lb3V0XG4gICAgICB8IFJlYWRpbmdfaGVhZGVyX2ZhaWxlZCBvZiBFcnJvci50XG4gICAgICB8IE5lZ290aWF0aW9uX2ZhaWxlZCBvZiBFcnJvci50XG4gICAgICB8IE5lZ290aWF0ZWRfdW5leHBlY3RlZF92ZXJzaW9uIG9mIGludFxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgZXhjZXB0aW9uIEhhbmRzaGFrZV9lcnJvciBvZiAodCAqIEluZm8udCkgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgdG9fZXhuIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIHQgPSBIYW5kc2hha2VfZXJyb3IgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pXG5lbmRcblxubW9kdWxlIEhlYWRlciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHZhbCB2MSA6IHRcbiAgdmFsIHYyIDogdFxuICB2YWwgbmVnb3RpYXRlIDogdXM6dCAtPiBwZWVyOnQgLT4gKGludCwgSGFuZHNoYWtlX2Vycm9yLnQpIHJlc3VsdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgUC5IZWFkZXJcblxuICBsZXQgY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgIFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNyZWF0ZV9leG4gKCkgfnByb3RvY29sOlJwYyB+c3VwcG9ydGVkX3ZlcnNpb25zXG4gIDs7XG5cbiAgbGV0IHYyID0gY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxOyAyIF1cbiAgbGV0IHYxID0gY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxIF1cblxuICBsZXQgbmVnb3RpYXRlIH51cyB+cGVlciA9XG4gICAgbWF0Y2ggbmVnb3RpYXRlIH5hbGxvd19sZWdhY3lfcGVlcjp0cnVlIH51cyB+cGVlciB3aXRoXG4gICAgfCBFcnJvciBlIC0+IEVycm9yIChIYW5kc2hha2VfZXJyb3IuTmVnb3RpYXRpb25fZmFpbGVkIGUpXG4gICAgfCBPayBpIC0+IE9rIGlcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJvdG9jb2xfd3JpdGVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3dyaXRlciA6IHQgLT4gU2V4cC50XG4gIHZhbCBjcmVhdGVfYmVmb3JlX25lZ290aWF0aW9uIDogV3JpdGVyLnQgLT4gdFxuICB2YWwgc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IHQgLT4gaW50IC0+IHVuaXRcblxuICB2YWwgc2VuZF9xdWVyeVxuICAgIDogIHRcbiAgICAtPiAncXVlcnkgUC5RdWVyeS50XG4gICAgLT4gYmluX3dyaXRlcl9xdWVyeToncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfZXhwZXJ0X3F1ZXJ5XG4gICAgOiAgdFxuICAgIC0+IHVuaXQgUC5RdWVyeS50XG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmc6XG4gICAgICAgICAoV3JpdGVyLnRcbiAgICAgICAgICAtPiBQLk1lc3NhZ2UubmF0MF90IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgLT4gUC5NZXNzYWdlLm5hdDBfdFxuICAgICAgICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgLT4gJ3Jlc3VsdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudClcbiAgICAtPiAncmVzdWx0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfaGVhcnRiZWF0IDogdCAtPiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG4gIHZhbCBjYW5fc2VuZCA6IHQgLT4gYm9vbFxuICB2YWwgYnl0ZXNfdG9fd3JpdGUgOiB0IC0+IGludFxuICB2YWwgYnl0ZXNfd3JpdHRlbiA6IHQgLT4gSW50NjMudFxuICB2YWwgZmx1c2hlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBzdG9wcGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIDogaW50IFNldF9vbmNlLnRcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX3dyaXRlciB0ID0gWyVzZXhwX29mOiBXcml0ZXIudF0gdC53cml0ZXJcblxuICBsZXQgY3JlYXRlX2JlZm9yZV9uZWdvdGlhdGlvbiB3cml0ZXIgPVxuICAgIHsgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uID0gU2V0X29uY2UuY3JlYXRlICgpOyB3cml0ZXIgfVxuICA7O1xuXG4gIGxldCBzZXRfbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIHQgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uID1cbiAgICBTZXRfb25jZS5zZXRfZXhuIHQubmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIFslaGVyZV0gbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gIDs7XG5cbiAgbGV0IHF1ZXJ5X21lc3NhZ2UgdCBxdWVyeSA6IF8gUC5NZXNzYWdlLnQgPVxuICAgIG1hdGNoIFNldF9vbmNlLmdldF9leG4gdC5uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gWyVoZXJlXSB3aXRoXG4gICAgfCAxIC0+IFF1ZXJ5X3YxIChQLlF1ZXJ5LnRvX3YxIHF1ZXJ5KVxuICAgIHwgXyAtPiBRdWVyeSBxdWVyeVxuICA7O1xuXG4gIGxldCBzZW5kX3F1ZXJ5IHQgcXVlcnkgfmJpbl93cml0ZXJfcXVlcnkgPVxuICAgIGxldCBtZXNzYWdlID0gcXVlcnlfbWVzc2FnZSB0IHF1ZXJ5IGluXG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgIHQud3JpdGVyXG4gICAgICAoUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfcXVlcnkpKVxuICAgICAgbWVzc2FnZVxuICA7O1xuXG4gIGxldCBzZW5kX2V4cGVydF9xdWVyeSB0IHF1ZXJ5IH5idWYgfnBvcyB+bGVuIH5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgPVxuICAgIGxldCBoZWFkZXIgPSBxdWVyeV9tZXNzYWdlIHQgeyBxdWVyeSB3aXRoIGRhdGEgPSBOYXQwLm9mX2ludF9leG4gbGVuIH0gaW5cbiAgICBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGhlYWRlciB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzZW5kX2hlYXJ0YmVhdCB0ID1cbiAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgSGVhcnRiZWF0XG4gIDs7XG5cbiAgbGV0IG9mX3dyaXRlciBmIHQgPSBmIHQud3JpdGVyXG4gIGxldCBjYW5fc2VuZCA9IG9mX3dyaXRlciBXcml0ZXIuY2FuX3NlbmRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlID0gb2Zfd3JpdGVyIFdyaXRlci5ieXRlc190b193cml0ZVxuICBsZXQgYnl0ZXNfd3JpdHRlbiA9IG9mX3dyaXRlciBXcml0ZXIuYnl0ZXNfd3JpdHRlblxuICBsZXQgZmx1c2hlZCA9IG9mX3dyaXRlciBXcml0ZXIuZmx1c2hlZFxuICBsZXQgc3RvcHBlZCA9IG9mX3dyaXRlciBXcml0ZXIuc3RvcHBlZFxuICBsZXQgY2xvc2UgPSBvZl93cml0ZXIgV3JpdGVyLmNsb3NlXG5lbmRcblxubW9kdWxlIEhlYXJ0YmVhdF9jb25maWcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWVvdXQgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGZpZWxkc11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgIFslZXhwZWN0IHt8IDc0YTFmNDc1YmZiMmVlZDVhNTA5YmE3MWNkNzg5MWQyIHx9XVxuICA7O1xuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyh0aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAzMC4pXG4gICAgICAgID8oc2VuZF9ldmVyeSA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMTAuKVxuICAgICAgICAoKVxuICAgID1cbiAgICB7IHRpbWVvdXQ7IHNlbmRfZXZlcnkgfVxuICA7O1xuXG4gIG1vZHVsZSBSdW50aW1lID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbXV0YWJsZSB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHRvX3J1bnRpbWUgeyB0aW1lb3V0OyBzZW5kX2V2ZXJ5IH0gPSB7IFJ1bnRpbWUudGltZW91dDsgc2VuZF9ldmVyeSB9XG5lbmRcblxudHlwZSByZXNwb25zZV9oYW5kbGVyID1cbiAgTmF0MC50IFAuUmVzcG9uc2UudFxuICAtPiByZWFkX2J1ZmZlcjpCaWdzdHJpbmcudFxuICAtPiByZWFkX2J1ZmZlcl9wb3NfcmVmOmludCByZWZcbiAgLT4gWyBga2VlcFxuICAgICB8IGB3YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICB8IGByZW1vdmUgb2YgdW5pdCBScGNfcmVzdWx0LnRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICBdXG5cbnR5cGUgdCA9XG4gIHsgZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgOyBoZWFydGJlYXRfY29uZmlnIDogSGVhcnRiZWF0X2NvbmZpZy5SdW50aW1lLnRcbiAgOyBtdXRhYmxlIGhlYXJ0YmVhdF9jYWxsYmFja3MgOiAodW5pdCAtPiB1bml0KSBhcnJheVxuICA7IG11dGFibGUgbGFzdF9zZWVuX2FsaXZlIDogVGltZV9ucy50XG4gIDsgbWF4X21ldGFkYXRhX3NpemUgOiBCeXRlX3VuaXRzLnRcbiAgOyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFByb3RvY29sX3dyaXRlci50XG4gIDsgb3Blbl9xdWVyaWVzIDogKFAuUXVlcnlfaWQudCwgKHJlc3BvbnNlX2hhbmRsZXJbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IGNsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgSXZhci50XG4gIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAoKiBUaGVyZSdzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvbm5lY3Rpb25zIGFuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBpbnN0YW5jZXNcbiAgICAgKHRoZSBsYXR0ZXIgZGVwZW5kcyBvbiB0aGUgY29ubmVjdGlvbiBzdGF0ZSwgd2hpY2ggaXMgZ2l2ZW4gYWNjZXNzIHRvIHRoZSBjb25uZWN0aW9uXG4gICAgIHdoZW4gaXQgaXMgY3JlYXRlZCkuICopXG4gIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnQgU2V0X29uY2UudFxuICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UudFxuICA7IGhlYXJ0YmVhdF9ldmVudCA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LnQgU2V0X29uY2UudFxuICA7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IGludCBTZXRfb25jZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3RfaHVtX3dyaXRlciB0ID1cbiAgWyVzZXhwXG4gICAgeyBkZXNjcmlwdGlvbiA6IEluZm8udCA9IHQuZGVzY3JpcHRpb247IHdyaXRlciA6IFByb3RvY29sX3dyaXRlci53cml0ZXIgPSB0LndyaXRlciB9XVxuOztcblxubGV0IGRlc2NyaXB0aW9uIHQgPSB0LmRlc2NyaXB0aW9uXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbmxldCB3cml0ZXIgdCA9XG4gIGlmIGlzX2Nsb3NlZCB0IHx8IG5vdCAoUHJvdG9jb2xfd3JpdGVyLmNhbl9zZW5kIHQud3JpdGVyKVxuICB0aGVuIEVycm9yIGBDbG9zZWRcbiAgZWxzZSBPayB0LndyaXRlclxuOztcblxubGV0IGJ5dGVzX3RvX3dyaXRlIHQgPSBQcm90b2NvbF93cml0ZXIuYnl0ZXNfdG9fd3JpdGUgdC53cml0ZXJcbmxldCBieXRlc193cml0dGVuIHQgPSBQcm90b2NvbF93cml0ZXIuYnl0ZXNfd3JpdHRlbiB0LndyaXRlclxubGV0IGJ5dGVzX3JlYWQgdCA9IFJlYWRlci5ieXRlc19yZWFkIHQucmVhZGVyXG5sZXQgZmx1c2hlZCB0ID0gUHJvdG9jb2xfd3JpdGVyLmZsdXNoZWQgdC53cml0ZXJcblxubGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHQgLT4gJ2EgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gJ2EgPVxuICBmdW4gdCByIC0+XG4gIG1hdGNoIHIgd2l0aFxuICB8IFNlbnQgeCAtPiB4XG4gIHwgQ2xvc2VkIC0+XG4gICAgKCogQWxsIG9mIHRoZSBwbGFjZXMgd2UgY2FsbCBbaGFuZGxlX3NlbmRfcmVzdWx0XSBjaGVjayB3aGV0aGVyIFt0XSBpcyBjbG9zZWRcbiAgICAgICAodXN1YWxseSB2aWEgdGhlIFt3cml0ZXJdIGZ1bmN0aW9uIGFib3ZlKS4gVGhpcyBjaGVja3Mgd2hldGhlciBbdC53cml0ZXJdIGlzXG4gICAgICAgY2xvc2VkLCB3aGljaCBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgW3RdIGlzIGNsb3NlZC4gKilcbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlJQQyBjb25uZWN0aW9uIGdvdCBjbG9zZWQgd3JpdGVyXCIgdCBzZXhwX29mX3RfaHVtX3dyaXRlclxuICB8IE1lc3NhZ2VfdG9vX2JpZyBfIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAsIHsgcmVhc29uID0gKHIgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KTsgY29ubmVjdGlvbiA9ICh0IDogdF9odW1fd3JpdGVyKSB9XVxuOztcblxubGV0IGRpc3BhdGNoIHQgfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfihxdWVyeSA6IF8gUC5RdWVyeS50KSA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIGFzIHIgLT4gclxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBxdWVyeSA9XG4gICAgICBtYXRjaCBxdWVyeS5tZXRhZGF0YSB3aXRoXG4gICAgICB8IFNvbWUgbWV0YWRhdGEgLT5cbiAgICAgICAgeyBxdWVyeSB3aXRoXG4gICAgICAgICAgbWV0YWRhdGEgPVxuICAgICAgICAgICAgU29tZSAoU3RyaW5nLnByZWZpeCBtZXRhZGF0YSAoQnl0ZV91bml0cy5ieXRlc19pbnRfZXhuIHQubWF4X21ldGFkYXRhX3NpemUpKVxuICAgICAgICB9XG4gICAgICB8IE5vbmUgLT4gcXVlcnlcbiAgICBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OnF1ZXJ5LmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIFByb3RvY29sX3dyaXRlci5zZW5kX3F1ZXJ5IHdyaXRlciBxdWVyeSB+YmluX3dyaXRlcl9xdWVyeSB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICBPayAoKVxuOztcblxubGV0IG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICBkb19zZW5kXG4gICAgICA/bWV0YWRhdGFcbiAgICAgIHRcbiAgICAgIH50YWdcbiAgICAgIH52ZXJzaW9uXG4gICAgICBidWZcbiAgICAgIH5wb3NcbiAgICAgIH5sZW5cbiAgICAgIH5yZXNwb25zZV9oYW5kbGVyXG4gID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgYENsb3NlZFxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBpZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgbGV0IHF1ZXJ5IDogdW5pdCBQLlF1ZXJ5LnQgPSB7IHRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhOyBkYXRhID0gKCkgfSBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIGxldCByZXN1bHQgPVxuICAgICAgUHJvdG9jb2xfd3JpdGVyLnNlbmRfZXhwZXJ0X3F1ZXJ5XG4gICAgICAgIHdyaXRlclxuICAgICAgICBxdWVyeVxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgICB+c2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nOmRvX3NlbmRcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0XG4gICAgaW5cbiAgICBPayByZXN1bHRcbjs7XG5cbmxldCBkaXNwYXRjaF9iaWdzdHJpbmcgPSBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG5cbmxldCBzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmcgPVxuICBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG47O1xuXG5sZXQgaGFuZGxlX3Jlc3BvbnNlIHQgKHJlc3BvbnNlIDogXyBQLlJlc3BvbnNlLnQpIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQgd2l0aFxuICB8IE5vbmUgLT4gU3RvcCAoRXJyb3IgKFJwY19lcnJvci5Vbmtub3duX3F1ZXJ5X2lkIHJlc3BvbnNlLmlkKSlcbiAgfCBTb21lIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAobWF0Y2ggcmVzcG9uc2VfaGFuZGxlciByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgd2l0aFxuICAgICB8IGBrZWVwIC0+IENvbnRpbnVlXG4gICAgIHwgYHdhaXQgd2FpdCAtPiBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IHdhaXQgLT5cbiAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZDtcbiAgICAgICBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlIHJlbW92YWxfY2lyY3Vtc3RhbmNlcyAtPlxuICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkO1xuICAgICAgIChtYXRjaCByZW1vdmFsX2NpcmN1bXN0YW5jZXMgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IENvbnRpbnVlXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgfCBVbmltcGxlbWVudGVkX3JwYyBfIC0+IENvbnRpbnVlXG4gICAgICAgICAgIHwgQmluX2lvX2V4biBfXG4gICAgICAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgICAgICAgfCBXcml0ZV9lcnJvciBfXG4gICAgICAgICAgIHwgVW5jYXVnaHRfZXhuIF9cbiAgICAgICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIF8gLT4gU3RvcCAoRXJyb3IgZSkpKSlcbjs7XG5cbmxldCBoYW5kbGVfbXNnXG4gICAgICB0XG4gICAgICAobXNnIDogXyBQLk1lc3NhZ2UudClcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gID1cbiAgbWF0Y2ggbXNnIHdpdGhcbiAgfCBIZWFydGJlYXQgLT5cbiAgICBBcnJheS5pdGVyIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gICAgQ29udGludWVcbiAgfCBSZXNwb25zZSByZXNwb25zZSAtPiBoYW5kbGVfcmVzcG9uc2UgdCByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgfCBRdWVyeSBxdWVyeSAtPlxuICAgIGxldCBpbnN0YW5jZSA9IFNldF9vbmNlLmdldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpblxuICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5oYW5kbGVfcXVlcnlcbiAgICAgIGluc3RhbmNlXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICB+cXVlcnlcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgfCBRdWVyeV92MSBxdWVyeSAtPlxuICAgIGxldCBpbnN0YW5jZSA9IFNldF9vbmNlLmdldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpblxuICAgIGxldCBxdWVyeSA9IFAuUXVlcnkub2ZfdjEgcXVlcnkgaW5cbiAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuaGFuZGxlX3F1ZXJ5XG4gICAgICBpbnN0YW5jZVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG47O1xuXG5sZXQgY2xvc2VfcmVhc29uIHQgfm9uX2Nsb3NlID1cbiAgbGV0IHJlYXNvbiA9IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQgaW5cbiAgbWF0Y2ggb25fY2xvc2Ugd2l0aFxuICB8IGBzdGFydGVkIC0+IHJlYXNvblxuICB8IGBmaW5pc2hlZCAtPlxuICAgIGxldCViaW5kICgpID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWQgaW5cbiAgICByZWFzb25cbjs7XG5cbmxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcblxubGV0IGFkZF9oZWFydGJlYXRfY2FsbGJhY2sgdCBmID1cbiAgKCogQWRkaW5nIGhlYXJ0YmVhdCBjYWxsYmFja3MgaXMgcmVsYXRpdmVseSByYXJlLCBidXQgdGhlIGNhbGxiYWNrcyBhcmUgdHJpZ2dlcmVkIGEgbG90LlxuICAgICBUaGUgYXJyYXkgcmVwcmVzZW50YXRpb24gbWFrZXMgdGhlIGFkZGl0aW9uIHF1YWRyYXRpYyBmb3IgdGhlIHNha2Ugb2Yga2VlcGluZyB0aGVcbiAgICAgdHJpZ2dlcmluZyBjaGVhcC4gKilcbiAgdC5oZWFydGJlYXRfY2FsbGJhY2tzIDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQuaGVhcnRiZWF0X2NhbGxiYWNrc1xuOztcblxubGV0IHJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IHQgdGltZW91dCA9XG4gIHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0IDwtIHRpbWVvdXQ7XG4gIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlXG47O1xuXG5sZXQgbGFzdF9zZWVuX2FsaXZlIHQgPSB0Lmxhc3Rfc2Vlbl9hbGl2ZVxuXG5sZXQgYWJvcnRfaGVhcnRiZWF0aW5nIHQgPVxuICBPcHRpb24uaXRlciAoU2V0X29uY2UuZ2V0IHQuaGVhcnRiZWF0X2V2ZW50KSB+ZjooZnVuIGV2ZW50IC0+XG4gICAgbWF0Y2ggU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuYWJvcnQgdC50aW1lX3NvdXJjZSBldmVudCB3aXRoXG4gICAgfCBPayB8IFByZXZpb3VzbHlfdW5zY2hlZHVsZWQgLT4gKCkpXG47O1xuXG5sZXQgY2xvc2UgPyhzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2ZfaW50X3NlYyA1KSB+cmVhc29uIHQgPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBhYm9ydF9oZWFydGJlYXRpbmcgdDtcbiAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkIHJlYXNvbjtcbiAgICAobWF0Y2ggU2V0X29uY2UuZ2V0IHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIHdpdGhcbiAgICAgfCBOb25lIC0+IERlZmVycmVkLnVuaXRcbiAgICAgfCBTb21lIGluc3RhbmNlIC0+XG4gICAgICAgbGV0IGZsdXNoZWQgPSBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuZmx1c2ggaW5zdGFuY2UgaW5cbiAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGZsdXNoZWRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5zdG9wIGluc3RhbmNlO1xuICAgICAgICAgZmx1c2hlZClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdFxuICAgICAgICAgICAgIFsgZmx1c2hlZFxuICAgICAgICAgICAgIDsgUHJvdG9jb2xfd3JpdGVyLnN0b3BwZWQgdC53cml0ZXJcbiAgICAgICAgICAgICA7IFRpbWVfc291cmNlLmFmdGVyXG4gICAgICAgICAgICAgICAgIChUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91cyB0LnRpbWVfc291cmNlKVxuICAgICAgICAgICAgICAgICBzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXRcbiAgICAgICAgICAgICBdXG4gICAgICAgICBpblxuICAgICAgICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnN0b3AgaW5zdGFuY2UpKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBQcm90b2NvbF93cml0ZXIuY2xvc2UgdC53cml0ZXJcbiAgICA+Pj4gZnVuICgpIC0+IFJlYWRlci5jbG9zZSB0LnJlYWRlciA+Pj4gZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKTtcbiAgY2xvc2VfZmluaXNoZWQgdFxuOztcblxubGV0IG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID1cbiAgbGV0IGYgYnVmIH5wb3MgfmxlbjpfIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudCA9XG4gICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgbGV0IG5hdDBfbXNnID0gUC5NZXNzYWdlLmJpbl9yZWFkX25hdDBfdCBidWYgfnBvc19yZWYgaW5cbiAgICBtYXRjaFxuICAgICAgaGFuZGxlX21zZ1xuICAgICAgICB0XG4gICAgICAgIG5hdDBfbXNnXG4gICAgICAgIH5yZWFkX2J1ZmZlcjpidWZcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6cG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgd2l0aFxuICAgIHwgQ29udGludWUgLT4gQ29udGludWVcbiAgICB8IFdhaXQgXyBhcyByZXMgLT4gcmVzXG4gICAgfCBTdG9wIHJlc3VsdCAtPlxuICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgIGxldCBtc2cgPSBcIlJwYyBtZXNzYWdlIGhhbmRsaW5nIGxvb3Agc3RvcHBlZFwiIGluXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gSW5mby5vZl9zdHJpbmcgbXNnXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIEluZm8uY3JlYXRlXG4gICAgICAgICAgICBtc2dcbiAgICAgICAgICAgIGVcbiAgICAgICAgICAgIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgIFwiQ29ubmVjdGlvbi5vbl9tZXNzYWdlIHJlc3VsdGVkIGluIENvbm5lY3Rpb25fY2xvc2VkIGVycm9yLiBUaGlzIGlzIFxcXG4gICAgICAgICAgICAgICAgICB3ZWlyZC5cIl0pKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb24pO1xuICAgICAgU3RvcCByZWFzb25cbiAgaW5cbiAgU3RhZ2VkLnN0YWdlIGZcbjs7XG5cbmxldCBoZWFydGJlYXRfbm93IHQgPVxuICBsZXQgc2luY2VfbGFzdF9oZWFydGJlYXQgPVxuICAgIFRpbWVfbnMuZGlmZiAoU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2UpIHQubGFzdF9zZWVuX2FsaXZlXG4gIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oID4gKSBzaW5jZV9sYXN0X2hlYXJ0YmVhdCB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICB0aGVuIChcbiAgICBsZXQgcmVhc29uICgpID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgIVwiTm8gaGVhcnRiZWF0cyByZWNlaXZlZCBmb3IgJXtzZXhwOlRpbWVfbnMuU3Bhbi50fS5cIlxuICAgICAgICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl90aHVuayByZWFzb24pKSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICAgIHwgRXJyb3IgYENsb3NlZCAtPiAoKVxuICAgIHwgT2sgd3JpdGVyIC0+IFByb3RvY29sX3dyaXRlci5zZW5kX2hlYXJ0YmVhdCB3cml0ZXIgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQpXG47O1xuXG5sZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMzAuXG5cbmxldCBjbGVhbnVwIHQgfnJlYXNvbiBleG4gPVxuICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KTtcbiAgaWYgbm90IChIYXNodGJsLmlzX2VtcHR5IHQub3Blbl9xdWVyaWVzKVxuICB0aGVuIChcbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIHwgUnBjX2Vycm9yLlJwYyAoZXJyb3IsIChfIDogSW5mby50KSkgLT4gZXJyb3JcbiAgICAgIHwgZXhuIC0+IFVuY2F1Z2h0X2V4biAoRXhuLnNleHBfb2ZfdCBleG4pXG4gICAgaW5cbiAgICAoKiBjbGVhbiB1cCBvcGVuIHN0cmVhbWluZyByZXNwb25zZXMgKilcbiAgICAoKiBhbiB1bmZvcnR1bmF0ZSBoYWNrOyBvayBiZWNhdXNlIHRoZSByZXNwb25zZSBoYW5kbGVyIHdpbGwgaGF2ZSBub3RoaW5nXG4gICAgICAgdG8gcmVhZCBmb2xsb3dpbmcgYSByZXNwb25zZSB3aGVyZSBbZGF0YV0gaXMgYW4gZXJyb3IgKilcbiAgICBsZXQgZHVtbXlfYnVmZmVyID0gQmlnc3RyaW5nLmNyZWF0ZSAxIGluXG4gICAgbGV0IGR1bW15X3JlZiA9IHJlZiAwIGluXG4gICAgSGFzaHRibC5pdGVyaSB0Lm9wZW5fcXVlcmllcyB+ZjooZnVuIH5rZXk6cXVlcnlfaWQgfmRhdGE6cmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChyZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcjpkdW1teV9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6ZHVtbXlfcmVmXG4gICAgICAgICAgIHsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9IEVycm9yIGVycm9yIH0pKTtcbiAgICBIYXNodGJsLmNsZWFyIHQub3Blbl9xdWVyaWVzO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBkdW1teV9idWZmZXIpXG47O1xuXG5sZXQgc2NoZWR1bGVfaGVhcnRiZWF0cyB0ID1cbiAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2U7XG4gIGxldCBoZWFydGJlYXRfZnJvbV9ub3dfb24gPVxuICAgICgqIFthdF9pbnRlcnZhbHNdIHdpbGwgc2NoZWR1bGUgdGhlIGZpcnN0IGhlYXJ0YmVhdCB0aGUgZmlyc3QgdGltZSB0aGUgdGltZV9zb3VyY2UgaXNcbiAgICAgICBhZHZhbmNlZCAqKVxuICAgIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmF0X2ludGVydmFsc1xuICAgICAgdC50aW1lX3NvdXJjZVxuICAgICAgdC5oZWFydGJlYXRfY29uZmlnLnNlbmRfZXZlcnlcbiAgICAgIChmdW4gKCkgLT4gaGVhcnRiZWF0X25vdyB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaGVhcnRiZWF0X2V2ZW50IFslaGVyZV0gaGVhcnRiZWF0X2Zyb21fbm93X29uXG47O1xuXG5sZXQgcnVuX2FmdGVyX2hhbmRzaGFrZVxuICAgICAgdFxuICAgICAgd3JpdGVyXG4gICAgICB+bmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfndyaXRlcl9tb25pdG9yX2V4bnNcbiAgPVxuICBQcm90b2NvbF93cml0ZXIuc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiB0LndyaXRlciBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb247XG4gIGxldCBpbnN0YW5jZSA9XG4gICAgSW1wbGVtZW50YXRpb25zLmluc3RhbnRpYXRlXG4gICAgICBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIH53cml0ZXJcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZTooY29ubmVjdGlvbl9zdGF0ZSB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5zdGFuY2U7XG4gIGxldCBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSB+bmFtZTpcIlJQQyBjbG9zZSBjb25uZWN0aW9uIG1vbml0b3JcIiAoKSBpblxuICBNb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnMgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIH5mOihmdW4gZXhuIC0+XG4gICAgbGV0IHJlYXNvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBpbXBsZW1lbnRhdGlvblwiIChleG4gOiBFeG4udCldXG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KSk7XG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY29ubmVjdGlvbiBsb29wXCIgKCkgaW5cbiAgbGV0IHJlYXNvbiBuYW1lIGV4biA9XG4gICAgZXhuLCBJbmZvLnRhZyAoSW5mby5vZl9leG4gZXhuKSB+dGFnOihcImV4biByYWlzZWQgaW4gUlBDIGNvbm5lY3Rpb24gXCIgXiBuYW1lKVxuICBpblxuICBTdHJlYW0uaXRlclxuICAgIChTdHJlYW0uaW50ZXJsZWF2ZVxuICAgICAgIChTdHJlYW0ub2ZfbGlzdFxuICAgICAgICAgIFsgU3RyZWFtLm1hcCB+ZjoocmVhc29uIFwibG9vcFwiKSAoTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcilcbiAgICAgICAgICA7IFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcIldyaXRlci50XCIpIHdyaXRlcl9tb25pdG9yX2V4bnNcbiAgICAgICAgICBdKSlcbiAgICB+ZjooZnVuIChleG4sIHJlYXNvbikgLT4gY2xlYW51cCB0IGV4biB+cmVhc29uKTtcbiAgd2l0aGluIH5tb25pdG9yIChmdW4gKCkgLT5cbiAgICBzY2hlZHVsZV9oZWFydGJlYXRzIHQ7XG4gICAgUmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgdC5yZWFkZXJcbiAgICAgIH5vbl9tZXNzYWdlOihTdGFnZWQudW5zdGFnZSAob25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpKVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDooZnVuICgpIC0+XG4gICAgICAgIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgT2sgcmVhc29uIC0+IGNsZWFudXAgdCB+cmVhc29uIChScGNfZXJyb3IuUnBjIChDb25uZWN0aW9uX2Nsb3NlZCwgdC5kZXNjcmlwdGlvbikpXG4gICAgKCogVGhlIHByb3RvY29sIGlzIHN1Y2ggdGhhdCByaWdodCBub3csIHRoZSBvbmx5IG91dGNvbWUgb2YgdGhlIG90aGVyIHNpZGUgY2xvc2luZyB0aGVcbiAgICAgICBjb25uZWN0aW9uIG5vcm1hbGx5IGlzIHRoYXQgd2UgZ2V0IGFuIGVvZi4gKilcbiAgICB8IEVycm9yIChgRW9mIHwgYENsb3NlZCkgLT5cbiAgICAgIGNsZWFudXBcbiAgICAgICAgdFxuICAgICAgICB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkVPRiBvciBjb25uZWN0aW9uIGNsb3NlZFwiKVxuICAgICAgICAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKSlcbjs7XG5cbmxldCBkb19oYW5kc2hha2UgdCB3cml0ZXIgfmhhbmRzaGFrZV90aW1lb3V0IH5oZWFkZXIgPVxuICBpZiBub3QgKFdyaXRlci5jYW5fc2VuZCB3cml0ZXIpXG4gIHRoZW4gcmV0dXJuIChFcnJvciBIYW5kc2hha2VfZXJyb3IuVHJhbnNwb3J0X2Nsb3NlZClcbiAgZWxzZSAoXG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3Qgd3JpdGVyIEhlYWRlci5iaW5fdC53cml0ZXIgaGVhZGVyIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0O1xuICAgICgqIElmIHdlIHVzZSBbbWF4X2Nvbm5lY3Rpb25zXSBpbiB0aGUgc2VydmVyLCB0aGVuIHRoaXMgcmVhZCBtYXkganVzdCBoYW5nIHVudGlsIHRoZVxuICAgICAgIHNlcnZlciBzdGFydHMgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyAod2hpY2ggY291bGQgYmUgbmV2ZXIpLiAgVGhhdCBpcyB3aHkgYVxuICAgICAgIHRpbWVvdXQgaXMgdXNlZCAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5ydW46YE5vd1xuICAgICAgICAoZnVuICgpIC0+IFJlYWRlci5yZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90IHQucmVhZGVyIEhlYWRlci5iaW5fdC5yZWFkZXIpXG4gICAgaW5cbiAgICBtYXRjaCVtYXBcbiAgICAgIFRpbWVfc291cmNlLndpdGhfdGltZW91dFxuICAgICAgICAoVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXMgdC50aW1lX3NvdXJjZSlcbiAgICAgICAgaGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgICAgcmVzdWx0XG4gICAgd2l0aFxuICAgIHwgYFRpbWVvdXQgLT5cbiAgICAgICgqIFRoZXJlJ3MgYSBwZW5kaW5nIHJlYWQsIHRoZSByZWFkZXIgaXMgYmFzaWNhbGx5IHVzZWxlc3Mgbm93LCBzbyB3ZSBjbGVhbiBpdFxuICAgICAgICAgdXAuICopXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkhhbmRzaGFrZSB0aW1lb3V0XCIpKTtcbiAgICAgIEVycm9yIEhhbmRzaGFrZV9lcnJvci5UaW1lb3V0XG4gICAgfCBgUmVzdWx0IChFcnJvciBleG4pIC0+XG4gICAgICBsZXQgcmVhc29uID0gSW5mby5vZl9zdHJpbmcgXCJbUmVhZGVyLnJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3RdIHJhaXNlZFwiIGluXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgIEVycm9yIChSZWFkaW5nX2hlYWRlcl9mYWlsZWQgKEVycm9yLm9mX2V4biBleG4pKVxuICAgIHwgYFJlc3VsdCAoT2sgKEVycm9yIGBFb2YpKSAtPiBFcnJvciBFb2ZcbiAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgQ2xvc2VkKSkgLT4gRXJyb3IgVHJhbnNwb3J0X2Nsb3NlZFxuICAgIHwgYFJlc3VsdCAoT2sgKE9rIHBlZXIpKSAtPiBIZWFkZXIubmVnb3RpYXRlIH51czpoZWFkZXIgfnBlZXIpXG47O1xuXG5sZXQgY29udGFpbnNfbWFnaWNfcHJlZml4ID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIuY29udGFpbnNfbWFnaWNfcHJlZml4IH5wcm90b2NvbDpScGNcbmxldCBkZWZhdWx0X2hhbmRzaGFrZV9oZWFkZXIgPSBIZWFkZXIudjJcblxubGV0IGhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5ID1cbiAgVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZTpcImFzeW5jIHJwYyBoYW5kc2hha2UgaGVhZGVyIG92ZXJyaWRlXCIgWyVzZXhwX29mOiBIZWFkZXIudF1cbjs7XG5cbmxldCBnZXRfaGFuZHNoYWtlX2hlYWRlciAoKSA9XG4gIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuZmluZF9sb2NhbCBoYW5kc2hha2VfaGVhZGVyX292ZXJyaWRlX2tleVxuICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6ZGVmYXVsdF9oYW5kc2hha2VfaGVhZGVyXG47O1xuXG5sZXQgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgPyhoYW5kc2hha2VfdGltZW91dCA9IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQpXG4gICAgICA/KGhlYXJ0YmVhdF9jb25maWcgPSBIZWFydGJlYXRfY29uZmlnLmNyZWF0ZSAoKSlcbiAgICAgID8obWF4X21ldGFkYXRhX3NpemUgPSBCeXRlX3VuaXRzLm9mX2tpbG9ieXRlcyAxLilcbiAgICAgID8oZGVzY3JpcHRpb24gPSBJbmZvLm9mX3N0cmluZyBcIjxjcmVhdGVkLWRpcmVjdGx5PlwiKVxuICAgICAgPyh0aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAoeyByZWFkZXI7IHdyaXRlciB9IDogVHJhbnNwb3J0LnQpXG4gID1cbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9XG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICB8IE5vbmUgLT4gSW1wbGVtZW50YXRpb25zLm51bGwgKClcbiAgICB8IFNvbWUgcyAtPiBzXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IGRlc2NyaXB0aW9uXG4gICAgOyBoZWFydGJlYXRfY29uZmlnID0gSGVhcnRiZWF0X2NvbmZpZy50b19ydW50aW1lIGhlYXJ0YmVhdF9jb25maWdcbiAgICA7IGhlYXJ0YmVhdF9jYWxsYmFja3MgPSBbfHxdXG4gICAgOyBsYXN0X3NlZW5fYWxpdmUgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdGltZV9zb3VyY2VcbiAgICA7IG1heF9tZXRhZGF0YV9zaXplXG4gICAgOyByZWFkZXJcbiAgICA7IHdyaXRlciA9IFByb3RvY29sX3dyaXRlci5jcmVhdGVfYmVmb3JlX25lZ290aWF0aW9uIHdyaXRlclxuICAgIDsgb3Blbl9xdWVyaWVzID0gSGFzaHRibC5Qb2x5LmNyZWF0ZSB+c2l6ZToxMCAoKVxuICAgIDsgY2xvc2Vfc3RhcnRlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBjbG9zZV9maW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBpbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICA7IHRpbWVfc291cmNlXG4gICAgOyBoZWFydGJlYXRfZXZlbnQgPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICA7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA9IFNldF9vbmNlLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgbGV0IHdyaXRlcl9tb25pdG9yX2V4bnMgPSBNb25pdG9yLmRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSAoV3JpdGVyLm1vbml0b3Igd3JpdGVyKSBpblxuICB1cG9uIChXcml0ZXIuc3RvcHBlZCB3cml0ZXIpIChmdW4gKCkgLT5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJQQyB0cmFuc3BvcnQgc3RvcHBlZFwiKSkpO1xuICBsZXQgaGVhZGVyID0gZ2V0X2hhbmRzaGFrZV9oZWFkZXIgKCkgaW5cbiAgbWF0Y2glbWFwIGRvX2hhbmRzaGFrZSB0IHdyaXRlciB+aGFuZHNoYWtlX3RpbWVvdXQgfmhlYWRlciB3aXRoXG4gIHwgT2sgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIC0+XG4gICAgcnVuX2FmdGVyX2hhbmRzaGFrZVxuICAgICAgdFxuICAgICAgd3JpdGVyXG4gICAgICB+bmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfndyaXRlcl9tb25pdG9yX2V4bnM7XG4gICAgT2sgdFxuICB8IEVycm9yIGVycm9yIC0+XG4gICAgRXJyb3IgKEhhbmRzaGFrZV9lcnJvci50b19leG4gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246ZGVzY3JpcHRpb24gZXJyb3IpXG47O1xuXG5sZXQgd2l0aF9jbG9zZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5kaXNwYXRjaF9xdWVyaWVzXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IGhhbmRsZV9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGZcbiAgICB8IGBSYWlzZSAtPiByYWlzZVxuICBpblxuICBsZXQlYmluZCB0ID1cbiAgICBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVycm9yIGUgLT5cbiAgICBsZXQlYmluZCAoKSA9IFRyYW5zcG9ydC5jbG9zZSB0cmFuc3BvcnQgaW5cbiAgICBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIGVcbiAgfCBPayB0IC0+XG4gICAgTW9uaXRvci5wcm90ZWN0XG4gICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgfnJlc3Q6YExvZ1xuICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICBjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiUnBjLkNvbm5lY3Rpb24ud2l0aF9jbG9zZSBmaW5pc2hlZFwiKSlcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIGxldCViaW5kIHJlc3VsdCA9IGRpc3BhdGNoX3F1ZXJpZXMgdCBpblxuICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgIHwgU29tZSBfIC0+IGNsb3NlX2ZpbmlzaGVkIHRcbiAgICAgICAgIGluXG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgc2VydmVyX3dpdGhfY2xvc2VcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IG9uX2hhbmRzaGFrZV9lcnJvciA9XG4gICAgbWF0Y2ggb25faGFuZHNoYWtlX2Vycm9yIHdpdGhcbiAgICB8IGBDYWxsIGYgLT4gYENhbGwgZlxuICAgIHwgYFJhaXNlIC0+IGBSYWlzZVxuICAgIHwgYElnbm9yZSAtPiBgQ2FsbCAoZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbiAgaW5cbiAgd2l0aF9jbG9zZVxuICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgP2Rlc2NyaXB0aW9uXG4gICAgP3RpbWVfc291cmNlXG4gICAgdHJhbnNwb3J0XG4gICAgfmltcGxlbWVudGF0aW9uc1xuICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICAgIH5kaXNwYXRjaF9xdWVyaWVzOihmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuOztcblxubGV0IGNsb3NlXG4gICAgICA/c3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0XG4gICAgICA/KHJlYXNvbiA9IEluZm8ub2Zfc3RyaW5nIFwiUnBjLkNvbm5lY3Rpb24uY2xvc2VcIilcbiAgICAgIHRcbiAgPVxuICBjbG9zZSA/c3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0IH5yZWFzb24gdFxuOztcblxubW9kdWxlIENsaWVudF9pbXBsZW1lbnRhdGlvbnMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3MgdCA9XG4gICAgeyBjb25uZWN0aW9uX3N0YXRlIDogdCAtPiAnc1xuICAgIDsgaW1wbGVtZW50YXRpb25zIDogJ3MgSW1wbGVtZW50YXRpb25zLnRcbiAgICB9XG5cbiAgbGV0IG51bGwgKCkgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA9IChmdW4gXyAtPiAoKSk7IGltcGxlbWVudGF0aW9ucyA9IEltcGxlbWVudGF0aW9ucy5udWxsICgpIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhlYWRlciA9IEhlYWRlclxuXG4gIGxldCB3aXRoX2FzeW5jX2V4ZWN1dGlvbl9jb250ZXh0IH5jb250ZXh0IH5mID1cbiAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLndpdGhfbG9jYWwgaGFuZHNoYWtlX2hlYWRlcl9vdmVycmlkZV9rZXkgKFNvbWUgY29udGV4dCkgfmZcbiAgOztcbmVuZFxuIiwiXG5vcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFV0aWxcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uXG5tb2R1bGUgT25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uXG5tb2R1bGUgSW1wbGVtZW50YXRpb24gPSBJbXBsZW1lbnRhdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9ucyA9IEltcGxlbWVudGF0aW9uc1xubW9kdWxlIFRyYW5zcG9ydCA9IFRyYW5zcG9ydFxubW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj49fiApID0gUmVzdWx0LiggPj49IClcbmxldCAoID4+fH4gKSA9IFJlc3VsdC4oID4+fCApXG5cbm1vZHVsZSBScGNfY29tbW9uID0gc3RydWN0XG4gIGxldCBkaXNwYXRjaF9yYXcnXG4gICAgICAgID9tZXRhZGF0YVxuICAgICAgICBjb25uXG4gICAgICAgIH50YWdcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5xdWVyeV9pZFxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgcXVlcnkgPSB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZCA9IHF1ZXJ5X2lkOyBtZXRhZGF0YTsgZGF0YSA9IHF1ZXJ5IH0gaW5cbiAgICBtYXRjaCBDb25uZWN0aW9uLmRpc3BhdGNoIGNvbm4gfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIFJwY19lcnJvci5Db25uZWN0aW9uX2Nsb3NlZFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9yYXcgP21ldGFkYXRhIGNvbm4gfnRhZyB+dmVyc2lvbiB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgfnF1ZXJ5X2lkIH5mID1cbiAgICBsZXQgcmVzcG9uc2VfaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgKG1hdGNoXG4gICAgICAgZGlzcGF0Y2hfcmF3J1xuICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICBjb25uXG4gICAgICAgICB+dGFnXG4gICAgICAgICB+dmVyc2lvblxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnF1ZXJ5X2lkXG4gICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSAoZiByZXNwb25zZV9pdmFyKSlcbiAgICAgd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IEl2YXIuZmlsbCByZXNwb25zZV9pdmFyIGUpO1xuICAgIEl2YXIucmVhZCByZXNwb25zZV9pdmFyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3Jlc3BvbnNlIDogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHJlc3BvbnNlX3R5cGVfaWQgOiAncmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlID1cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCByZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpyZXNwb25zZVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX3Jlc3BvbnNlXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyByZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5xdWVyeV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LnJlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5iaW5fcmVzcG9uc2VcblxuICBsZXQgc2hhcGVzIHQgPVxuICAgIFJwY19zaGFwZXMuUnBjIHsgcXVlcnkgPSB0LmJpbl9xdWVyeS5zaGFwZTsgcmVzcG9uc2UgPSB0LmJpbl9yZXNwb25zZS5zaGFwZSB9XG4gIDs7XG5cbiAgbGV0IGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBxdWVyeSlcbiAgOztcblxuICBsZXQgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHF1ZXJ5ID1cbiAgICBFYWdlcl9kZWZlcnJlZC5tYXAgKGYgc3RhdGUgcXVlcnkpIH5mOihmdW4gYSAtPiBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIGEpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgUnBjXG4gICAgICAgICAgKCB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICAsIHQuYmluX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICAgICwgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmXG4gICAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50JyA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgUnBjXG4gICAgICAgICAgKCB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICAsIHQuYmluX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICAgICwgYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmXG4gICAgICAgICAgLCBCbG9ja2luZyApXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCByZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChyZXNwb25zZSA6IF8gUC5SZXNwb25zZS50KVxuICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICA9XG4gICAgICBsZXQgcmVzcG9uc2UgPVxuICAgICAgICByZXNwb25zZS5kYXRhXG4gICAgICAgID4+PX4gZnVuIGxlbiAtPlxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIHQuYmluX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgSXZhci5maWxsIGl2YXIgcmVzcG9uc2U7XG4gICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICBpblxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXdcbiAgICAgID9tZXRhZGF0YVxuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9xdWVyeS53cml0ZXJcbiAgICAgIH5xdWVyeVxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+ZjpyZXNwb25zZV9oYW5kbGVyXG4gIDs7XG5cbiAgbGV0IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdCA9XG4gICAgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgcmVzdWx0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOihkZXNjcmlwdGlvbiB0KVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2V4biA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbW9kdWxlIFJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9ucy5FeHBlcnQuUnBjX3Jlc3BvbmRlclxuXG4gICAgbGV0IG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBkb19kaXNwYXRjaFxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlX2hhbmRsZXIgOiBDb25uZWN0aW9uLnJlc3BvbnNlX2hhbmRsZXIgPVxuICAgICAgICBmdW4gcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICBoYW5kbGVfZXJyb3JcbiAgICAgICAgICAgICAgKEVycm9yLnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdFxuICAgICAgICAgICAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICAgICAgICAgICAgZSkpO1xuICAgICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSAobGVuIDogTmF0MC50IDo+IGludCkgaW5cbiAgICAgICAgICAgIGxldCBkID0gaGFuZGxlX3Jlc3BvbnNlIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlbiBpblxuICAgICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGByZW1vdmUgKE9rICgpKSBlbHNlIGByZW1vdmVfYW5kX3dhaXQgZFxuICAgICAgaW5cbiAgICAgIGRvX2Rpc3BhdGNoXG4gICAgICAgID9tZXRhZGF0YVxuICAgICAgICBjb25uXG4gICAgICAgIH50YWc6KFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZylcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgYnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSByZXNwb25zZV9oYW5kbGVyKVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2hcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgZCAtPiBgRmx1c2hlZCBkXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcblxuICAgIGxldCBkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcmVzcG9uZGVyIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgRWFnZXJfZGVmZXJyZWQubWFwIChmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuKSB+ZjooZnVuIGEgLT5cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCBhKVxuICAgIDs7XG5cbiAgICBsZXQgYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuID1cbiAgICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgcmVzcG9uZGVyIGJ1ZiB+cG9zIH5sZW4pXG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudCcgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgUnBjX3NoYXBlcy5Vbmtub3duXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24nXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgUnBjX3NoYXBlcy5Vbmtub3duXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gIHR5cGUgJ21zZyB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fbXNnIDogJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IG1zZ190eXBlX2lkIDogJ21zZyBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2cgPVxuICAgIGxldCBtc2dfdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTptc2dcIl0gc2V4cF9vZl9vcGFxdWUgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZTsgdmVyc2lvbjsgYmluX21zZzsgbXNnX3R5cGVfaWQgfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9IFJwY19zaGFwZXMuT25lX3dheSB7IG1zZyA9IHQuYmluX21zZy5zaGFwZSB9XG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IG1zZ190eXBlX2lkIHQgPSB0Lm1zZ190eXBlX2lkXG5cbiAgbGV0IG5vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgRWFnZXJfZGVmZXJyZWQucmV0dXJuIChPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIHN0YXRlIHF1ZXJ5KSlcbiAgOztcblxuICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb24pIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IE9uZV93YXkgKHQuYmluX21zZy5yZWFkZXIsIG5vX2F1dGhvcml6YXRpb24gZilcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCcgP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3JhdydcbiAgICAgID9tZXRhZGF0YVxuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9tc2cud3JpdGVyXG4gICAgICB+cXVlcnlcbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICA7O1xuXG4gIGxldCBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHQgPVxuICAgIFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgIHJlc3VsdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjooZGVzY3JpcHRpb24gdClcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfD4gZnVuIHJlc3VsdCAtPiBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZXhuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAoZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSlcbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbGV0IG5vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBidWYgfnBvcyB+bGVuID1cbiAgICAgIEVhZ2VyX2RlZmVycmVkLnJldHVybiAoT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBidWYgfnBvcyB+bGVuKSlcbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBPbmVfd2F5X2V4cGVydCAobm9fYXV0aG9yaXphdGlvbiBmKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH1cbiAgICAgICAgICBjb25uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgeyB0YWc7IHZlcnNpb247IGJpbl9tc2cgPSBfOyBtc2dfdHlwZV9pZCA9IF8gfVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnRhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICB3aXRoXG4gICAgICB8IE9rIGZsdXNoZWQgLT4gYEZsdXNoZWQgZmx1c2hlZFxuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICB8IENsb3NlZF9yZW1vdGVseVxuICAgIHwgRXJyb3Igb2YgRXJyb3IudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICBbJWV4cGVjdCB7fCA3NDhjOGJmNDUwMmQwOTc4ZDAwN2JmN2Y5NmE3ZWY3ZiB8fV1cbiAgOztcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCA9XG4gICAgICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICAgICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICAgICAgfCBFcnJvciBvZiBFcnJvci5TdGFibGUuVjIudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgNzQ4YzhiZjQ1MDJkMDk3OGQwMDdiZjdmOTZhN2VmN2YgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG4oKiB0aGUgYmFzaXMgb2YgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBQaXBlX3JwYyBhbmQgU3RhdGVfcnBjICopXG5tb2R1bGUgU3RyZWFtaW5nX3JwYyA9IHN0cnVjdFxuICBtb2R1bGUgSW5pdGlhbF9tZXNzYWdlID0gUC5TdHJlYW1faW5pdGlhbF9tZXNzYWdlXG5cbiAgdHlwZSAoJ3F1ZXJ5LCAnaW5pdGlhbF9yZXNwb25zZSwgJ3VwZGF0ZV9yZXNwb25zZSwgJ2Vycm9yX3Jlc3BvbnNlKSB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fcXVlcnkgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5faW5pdGlhbF9yZXNwb25zZSA6ICdpbml0aWFsX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3VwZGF0ZV9yZXNwb25zZSA6ICd1cGRhdGVfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgOiAnZXJyb3JfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgOyBxdWVyeV90eXBlX2lkIDogJ3F1ZXJ5IFR5cGVfZXF1YWwuSWQudFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIDogJ2luaXRpYWxfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCA6ICd1cGRhdGVfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyBlcnJvcl9yZXNwb25zZV90eXBlX2lkIDogJ2Vycm9yX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlXG4gICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayA9XG4gICAgICBtYXRjaCBjbGllbnRfcHVzaGVzX2JhY2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlfVwiXVxuICAgICAgICBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2V9XCJdXG4gICAgICAgIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06ZXJyb3JcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgOyBiaW5fdXBkYXRlX3Jlc3BvbnNlXG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgPSBiaW5fZXJyb3JcbiAgICA7IGNsaWVudF9wdXNoZXNfYmFja1xuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkXG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICAgIDsgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV9pbml0aWFsX21lc3NhZ2UgeCA9XG4gICAgeyBJbml0aWFsX21lc3NhZ2UudW51c2VkX3F1ZXJ5X2lkID0gUC5VbnVzZWRfcXVlcnlfaWQudDsgaW5pdGlhbCA9IHggfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9XG4gICAgUnBjX3NoYXBlcy5TdHJlYW1pbmdfcnBjXG4gICAgICB7IHF1ZXJ5ID0gdC5iaW5fcXVlcnkuc2hhcGVcbiAgICAgIDsgaW5pdGlhbF9yZXNwb25zZSA9IHQuYmluX2luaXRpYWxfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIDsgdXBkYXRlX3Jlc3BvbnNlID0gdC5iaW5fdXBkYXRlX3Jlc3BvbnNlLnNoYXBlXG4gICAgICA7IGVycm9yID0gdC5iaW5fZXJyb3JfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2dlbiB0ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSBpbXBsID1cbiAgICBsZXQgYmluX2luaXRfd3JpdGVyID1cbiAgICAgIEluaXRpYWxfbWVzc2FnZS5iaW5fd3JpdGVyX3RcbiAgICAgICAgdC5iaW5faW5pdGlhbF9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgdC5iaW5fZXJyb3JfcmVzcG9uc2Uud3JpdGVyXG4gICAgaW5cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgU3RyZWFtaW5nX3JwY1xuICAgICAgICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA9IHQuYmluX3F1ZXJ5LnJlYWRlclxuICAgICAgICAgIDsgYmluX2luaXRfd3JpdGVyXG4gICAgICAgICAgOyBiaW5fdXBkYXRlX3dyaXRlciA9IHQuYmluX3VwZGF0ZV9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgICA7IGltcGxcbiAgICAgICAgICB9XG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBsZXQgZiBjIHF1ZXJ5ID1cbiAgICAgIG1hdGNoJW1hcCBmIGMgcXVlcnkgd2l0aFxuICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIChFcnJvciBlcnIpKSlcbiAgICAgIHwgT2sgKGluaXRpYWwsIHBpcGUpIC0+IEF1dGhvcml6ZWQgKE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoT2sgaW5pdGlhbCksIHBpcGUpKVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiB0ID9vbl9leGNlcHRpb24gKFBpcGUgZilcbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSB3cml0ZXIgPVxuICAgICAgbWF0Y2glbWFwIGYgYyBxdWVyeSB3cml0ZXIgd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4gT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpKVxuICAgICAgfCBPayBfIGFzIHggLT4gQXV0aG9yaXplZCAoT2sgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpKVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiA/b25fZXhjZXB0aW9uIHQgKERpcmVjdCBmKVxuICA7O1xuXG4gIGxldCBhYm9ydCB0IGNvbm4gaWQgPVxuICAgIGxldCBxdWVyeSA9XG4gICAgICB7IFAuUXVlcnkudGFnID0gdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb247IGlkOyBtZXRhZGF0YSA9IE5vbmU7IGRhdGEgPSBgQWJvcnQgfVxuICAgIGluXG4gICAgaWdub3JlXG4gICAgICAoQ29ubmVjdGlvbi5kaXNwYXRjaFxuICAgICAgICAgY29ublxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnk6UC5TdHJlYW1fcXVlcnkuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgIDogKHVuaXQsIFsgYENsb3NlZCBdKSBSZXN1bHQudClcbiAgOztcblxuICBtb2R1bGUgUGlwZV9tZXNzYWdlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVXBkYXRlIG9mICdhXG4gICAgICB8IENsb3NlZCBvZiBbIGBCeV9yZW1vdGVfc2lkZSB8IGBFcnJvciBvZiBFcnJvci50IF1cbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcmVzcG9uc2UgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBDb250aW51ZVxuICAgICAgfCBXYWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9tZXRhZGF0YSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICA7IGNsb3NlX3JlYXNvbiA6IFBpcGVfY2xvc2VfcmVhc29uLnQgRGVmZXJyZWQudFxuICAgICAgfVxuXG4gICAgbGV0IGlkIHQgPSB0LnF1ZXJ5X2lkXG4gICAgbGV0IGNsb3NlX3JlYXNvbiB0ID0gdC5jbG9zZV9yZWFzb25cbiAgZW5kXG5cbiAgbW9kdWxlIFJlc3BvbnNlX3N0YXRlID0gc3RydWN0XG4gICAgbW9kdWxlIFVwZGF0ZV9oYW5kbGVyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBQaXBlX21lc3NhZ2UudCAtPiBQaXBlX3Jlc3BvbnNlLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbml0aWFsID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ3EsICdpLCAndSwgJ2UsICdleHRyYSkgdCA9XG4gICAgICAgIHsgcnBjIDogKCdxLCAnaSwgJ3UsICdlKSB0XG4gICAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgICAgOyBtYWtlX3VwZGF0ZV9oYW5kbGVyIDogdW5pdCAtPiAnZXh0cmEgKiAndSBVcGRhdGVfaGFuZGxlci50XG4gICAgICAgIDsgaXZhciA6IChQLlF1ZXJ5X2lkLnQgKiAnaSAqICdleHRyYSwgJ2UpIFJlc3VsdC50IFJwY19yZXN1bHQudCBJdmFyLnRcbiAgICAgICAgOyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIDogKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIEluaXRpYWwudCAtPiAndSB0XG4gICAgICAgIHwgV3JpdGluZ191cGRhdGVzIG9mICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyICogJ2EgVXBkYXRlX2hhbmRsZXIudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudCB9XG4gIGVuZFxuXG4gIGxldCByZWFkX2Vycm9yXG4gICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb25cbiAgICAgICAgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpXG4gICAgICAgIGVyclxuICAgID1cbiAgICBsZXQgY29yZV9lcnIgPVxuICAgICAgRXJyb3IudF9vZl9zZXhwIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gZXJyKVxuICAgIGluXG4gICAgaWdub3JlIChoYW5kbGVyIChDbG9zZWQgKGBFcnJvciBjb3JlX2VycikpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChFcnJvciBlcnIpXG4gIDs7XG5cbiAgbGV0IGVvZiAoaGFuZGxlciA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudCkgPVxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIGBCeV9yZW1vdGVfc2lkZSkgOiBQaXBlX3Jlc3BvbnNlLnQpO1xuICAgIGByZW1vdmUgKE9rICgpKVxuICA7O1xuXG4gIGxldCByZXNwb25zZV9oYW5kbGVyIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaW5pdGlhbF9zdGF0ZVxuICAgIDogQ29ubmVjdGlvbi5yZXNwb25zZV9oYW5kbGVyXG4gICAgPVxuICAgIGxldCBvcGVuIFJlc3BvbnNlX3N0YXRlIGluXG4gICAgbGV0IHN0YXRlID0geyBzdGF0ZSA9IFdhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9zdGF0ZSB9IGluXG4gICAgZnVuIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiAtPlxuICAgICAgbWF0Y2ggc3RhdGUuc3RhdGUgd2l0aFxuICAgICAgfCBXcml0aW5nX3VwZGF0ZXMgKGJpbl9yZWFkZXJfdXBkYXRlLCBoYW5kbGVyKSAtPlxuICAgICAgICAobWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBgRW9mIC0+IDBcbiAgICAgICAgICAgICAgICAgfCBgT2sgKGxlbiA6IE5hdDAudCkgLT4gKGxlbiA6PiBpbnQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgIHwgT2sgYEVvZiAtPiBlb2YgaGFuZGxlclxuICAgICAgICAgICAgfCBPayAoYE9rIGxlbikgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICAgICBiaW5fcmVhZGVyX3VwZGF0ZVxuICAgICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgICAgICAgfCBPayBkYXRhIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBoYW5kbGVyIChVcGRhdGUgZGF0YSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDb250aW51ZSAtPiBga2VlcFxuICAgICAgICAgICAgICAgICAgfCBXYWl0IGQgLT4gYHdhaXQgZCkpKSlcbiAgICAgIHwgU3RhdGUuV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSBpbml0aWFsX2hhbmRsZXIgLT5cbiAgICAgICAgKCogV2UgbmV2ZXIgdXNlIFtgcmVtb3ZlIChFcnJvciBfKV0gaGVyZSwgc2luY2UgdGhhdCBpbmRpY2F0ZXMgdGhhdCB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBzaG91bGQgYmUgY2xvc2VkLCBhbmQgdGhlc2UgYXJlIFwibm9ybWFsXCIgZXJyb3JzLiAoSW4gY29udHJhc3QsIHRoZVxuICAgICAgICAgICBlcnJvcnMgd2UgZ2V0IGluIHRoZSBbV3JpdGluZ191cGRhdGVzX3RvX3BpcGVdIGNhc2UgaW5kaWNhdGUgbW9yZSBzZXJpb3VzXG4gICAgICAgICAgIHByb2JsZW1zLikgSW5zdGVhZCwgd2UganVzdCBwdXQgZXJyb3JzIGluIFtpdmFyXS4gKilcbiAgICAgICAgbGV0IGVycm9yIGVyciA9XG4gICAgICAgICAgSXZhci5maWxsIGluaXRpYWxfaGFuZGxlci5pdmFyIChFcnJvciBlcnIpO1xuICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICB8IEVycm9yIGVyciAtPiBlcnJvciBlcnJcbiAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgIGxldCBpbml0aWFsID1cbiAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgKEluaXRpYWxfbWVzc2FnZS5iaW5fcmVhZGVyX3RcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5ycGMuYmluX2luaXRpYWxfcmVzcG9uc2UucmVhZGVyXG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9lcnJvcl9yZXNwb25zZS5yZWFkZXIpXG4gICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyBpbml0aWFsX3Jlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggaW5pdGlhbCB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnJvciBlcnJcbiAgICAgICAgICAgIHwgT2sgaW5pdGlhbF9tc2cgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGluaXRpYWxfbXNnLmluaXRpYWwgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgICAgICAgSXZhci5maWxsIGluaXRpYWxfaGFuZGxlci5pdmFyIChPayAoRXJyb3IgZXJyKSk7XG4gICAgICAgICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICAgICAgICAgfCBPayBpbml0aWFsIC0+XG4gICAgICAgICAgICAgICAgIGxldCBleHRyYSwgaGFuZGxlciA9IGluaXRpYWxfaGFuZGxlci5tYWtlX3VwZGF0ZV9oYW5kbGVyICgpIGluXG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbFxuICAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5pdmFyXG4gICAgICAgICAgICAgICAgICAgKE9rIChPayAoaW5pdGlhbF9oYW5kbGVyLnF1ZXJ5X2lkLCBpbml0aWFsLCBleHRyYSkpKTtcbiAgICAgICAgICAgICAgICAgc3RhdGUuc3RhdGVcbiAgICAgICAgICAgICAgICAgPC0gV3JpdGluZ191cGRhdGVzXG4gICAgICAgICAgICAgICAgICAgICAgKGluaXRpYWxfaGFuZGxlci5ycGMuYmluX3VwZGF0ZV9yZXNwb25zZS5yZWFkZXIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICBga2VlcCkpKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9nZW4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSBtYWtlX3VwZGF0ZV9oYW5kbGVyID1cbiAgICBsZXQgYmluX3dyaXRlcl9xdWVyeSA9XG4gICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aFxuICAgICAgICAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3R5cGVfY2xhc3MgdC5iaW5fcXVlcnkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnkgPSBgUXVlcnkgcXVlcnkgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICA/bWV0YWRhdGFcbiAgICAgIGNvbm5cbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgfnF1ZXJ5XG4gICAgICB+ZjooZnVuIGl2YXIgLT5cbiAgICAgICAgcmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgIDogSW5mby50IG9wdGlvbildKVxuICAgICAgICAgIHsgcnBjID0gdDsgcXVlcnlfaWQ7IGNvbm5lY3Rpb24gPSBjb25uOyBpdmFyOyBtYWtlX3VwZGF0ZV9oYW5kbGVyIH0pXG4gICAgPj58IFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb24gfVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbWF0Y2glbWFwIGRpc3BhdGNoX2dlbiA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT4gKCksIGYpIHdpdGhcbiAgICB8IChFcnJvciBfIHwgT2sgKEVycm9yIF8pKSBhcyBlIC0+IGVcbiAgICB8IE9rIChPayAoaWQsIGluaXQsICgpKSkgLT4gT2sgKE9rIChpZCwgaW5pdCkpXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZGlzcGF0Y2hfZ2VuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgcGlwZV9yLCBwaXBlX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBTZXQgYSBzbWFsbCBidWZmZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVzaGJhY2sgZXZlbnRzICopXG4gICAgICAgIFBpcGUuc2V0X3NpemVfYnVkZ2V0IHBpcGVfdyAxMDA7XG4gICAgICAgIGxldCBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIGxldCBmIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFVwZGF0ZSBkYXRhIC0+XG4gICAgICAgICAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHBpcGVfdylcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgcGlwZV93IGRhdGE7XG4gICAgICAgICAgICAgIGlmIHQuY2xpZW50X3B1c2hlc19iYWNrICYmIFBpcGUubGVuZ3RoIHBpcGVfdyA+PSBQaXBlLnNpemVfYnVkZ2V0IHBpcGVfd1xuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgV2FpdFxuICAgICAgICAgICAgICAgICAgKG1hdGNoJW1hcCBQaXBlLmRvd25zdHJlYW1fZmx1c2hlZCBwaXBlX3cgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT4gKCkpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUpXG4gICAgICAgICAgICBlbHNlIENvbnRpbnVlXG4gICAgICAgICAgfCBDbG9zZWQgcmVhc29uIC0+XG4gICAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHlcbiAgICAgICAgICAgICAgY2xvc2VfcmVhc29uXG4gICAgICAgICAgICAgIChtYXRjaCByZWFzb24gd2l0aFxuICAgICAgICAgICAgICAgfCBgQnlfcmVtb3RlX3NpZGUgLT4gQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgICAgICAgICB8IGBFcnJvciBlcnIgLT4gRXJyb3IgZXJyKTtcbiAgICAgICAgICAgIFBpcGUuY2xvc2UgcGlwZV93O1xuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgKHBpcGVfciwgY2xvc2VfcmVhc29uKSwgZilcbiAgICB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAocGlwZV9yLCBjbG9zZV9yZWFzb24pKSkgLT5cbiAgICAgIHVwb24gKFBpcGUuY2xvc2VkIHBpcGVfcikgKGZ1biAoKSAtPlxuICAgICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCBjbG9zZV9yZWFzb24pXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFib3J0IHQgY29ubiBpZDtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY2xvc2VfcmVhc29uIENsb3NlZF9sb2NhbGx5KSk7XG4gICAgICBsZXQgcGlwZV9tZXRhZGF0YSA6IFBpcGVfbWV0YWRhdGEudCA9XG4gICAgICAgIHsgcXVlcnlfaWQgPSBpZDsgY2xvc2VfcmVhc29uID0gSXZhci5yZWFkIGNsb3NlX3JlYXNvbiB9XG4gICAgICBpblxuICAgICAgT2sgKE9rIChwaXBlX21ldGFkYXRhLCBpbml0LCBwaXBlX3IpKVxuICA7O1xuZW5kXG5cbigqIEEgUGlwZV9ycGMgaXMgbGlrZSBhIFN0cmVhbWluZ19ycGMsIGV4Y2VwdCB3ZSBkb24ndCBjYXJlIGFib3V0IGluaXRpYWwgc3RhdGUgLSB0aHVzXG4gICBpdCBpcyByZXN0cmljdGVkIHRvIHVuaXQgYW5kIHVsdGltYXRlbHkgaWdub3JlZCAqKVxubW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlLCAnZXJyb3IpIHQgPSAoJ3F1ZXJ5LCB1bml0LCAncmVzcG9uc2UsICdlcnJvcikgU3RyZWFtaW5nX3JwYy50XG5cbiAgbW9kdWxlIElkID0gUC5RdWVyeV9pZFxuICBtb2R1bGUgTWV0YWRhdGEgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGFcblxuICBsZXQgY3JlYXRlID9jbGllbnRfcHVzaGVzX2JhY2sgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIH5iaW5fZXJyb3IgKCkgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpVbml0LmJpbl90XG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fcmVzcG9uc2VcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgICgqIFtpbml0aWFsX3Jlc3BvbnNlXSBkb2Vzbid0IHNob3cgdXAgaW4gW1BpcGVfcnBjXSdzIHNpZ25hdHVyZSxcbiAgICAgICAgIHNvIHRoZSB0eXBlLWlkIGNyZWF0ZWQgdXNpbmcgW2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXSBpc1xuICAgICAgICAgdW5yZWFjaGFibGUuICopXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJcIlxuICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2U6XCJyZXNwb25zZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgbGV0IGJpbl9lcnJvciB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9lcnJvcl9yZXNwb25zZVxuICBsZXQgY2xpZW50X3B1c2hlc19iYWNrIHQgPSB0LlN0cmVhbWluZ19ycGMuY2xpZW50X3B1c2hlc19iYWNrXG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IChmdW4gYSBxdWVyeSAtPlxuICAgICAgbGV0JW1hcCB4ID0gZiBhIHF1ZXJ5IGluXG4gICAgICB4ID4+fH4gZnVuIHggLT4gKCksIHgpXG4gIDs7XG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgIG1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJ1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCByZWZcblxuICAgICAgICBsZXQgY3JlYXRlID8oaW5pdGlhbF9zaXplID0gNDA5NikgKCkgPVxuICAgICAgICAgIGlmIGluaXRpYWxfc2l6ZSA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5CdWZmZXIuY3JlYXRlIGdvdCBuZWdhdGl2ZSBidWZmZXIgXFxcbiAgICAgICAgICAgICAgIHNpemVcIlxuICAgICAgICAgICAgICBpbml0aWFsX3NpemVcbiAgICAgICAgICAgICAgSW50LnNleHBfb2ZfdDtcbiAgICAgICAgICByZWYgKEJpZ3N0cmluZy5jcmVhdGUgaW5pdGlhbF9zaXplKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICAgIG1vZHVsZSBUID0gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC5Hcm91cC50ID1cbiAgICAgICAgeyBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgICB9XG5cbiAgICAgIGFuZCAnYSBjb21wb25lbnQgPSAnYSBULkdyb3VwLmNvbXBvbmVudCA9XG4gICAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIFQuZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZSA/YnVmZmVyICgpID1cbiAgICAgICAgbGV0IGJ1ZmZlciA9XG4gICAgICAgICAgbWF0Y2ggYnVmZmVyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgaW5cbiAgICAgICAgeyBjb21wb25lbnRzID0gQmFnLmNyZWF0ZSAoKTsgY29tcG9uZW50c19ieV9pZCA9IElkLlRhYmxlLmNyZWF0ZSAoKTsgYnVmZmVyIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggdCA9IEJhZy5sZW5ndGggdC5jb21wb25lbnRzXG5cbiAgICAgIGxldCBhZGRfZXhuIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlclxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IGNhbm5vdCBhZGQgYSBjbG9zZWQgZGlyZWN0IFxcXG4gICAgICAgICAgICAgc3RyZWFtIHdyaXRlclwiO1xuICAgICAgICBpZiBIYXNodGJsLm1lbSB0LmNvbXBvbmVudHNfYnlfaWQgd3JpdGVyLmlkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkX2V4bjogdHJ5aW5nIHRvIGFkZCBhIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXIgdGhhdCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGdyb3VwXCI7XG4gICAgICAgIChtYXRjaCBCYWcuY2hvb3NlIHQuY29tcG9uZW50cyB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICAgbGV0IG9uZSA9IEJhZy5FbHQudmFsdWUgb25lIGluXG4gICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAoYmluX3dyaXRlciBvbmUpIChiaW5fd3JpdGVyIHdyaXRlcikpXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkOiBjYW5ub3QgYWRkIGEgZGlyZWN0IHN0cmVhbSBcXFxuICAgICAgICAgICAgICAgIHdyaXRlciB3aXRoIGEgZGlmZmVyZW50IGJpbl93cml0ZXJcIik7XG4gICAgICAgIGxldCB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA9IEJhZy5hZGQgdC5jb21wb25lbnRzIHdyaXRlciBpblxuICAgICAgICBsZXQgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgPVxuICAgICAgICAgIEJhZy5hZGQgd3JpdGVyLmdyb3VwcyB7IGdyb3VwID0gdDsgZWxlbWVudF9pbl9ncm91cCA9IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIH1cbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5hZGRfZXhuXG4gICAgICAgICAgdC5jb21wb25lbnRzX2J5X2lkXG4gICAgICAgICAgfmtleTp3cml0ZXIuaWRcbiAgICAgICAgICB+ZGF0YTp7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwOyBncm91cF9lbGVtZW50X2luX3dyaXRlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVtb3ZlIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfSAtPlxuICAgICAgICAgIEJhZy5yZW1vdmUgdC5jb21wb25lbnRzIHdyaXRlcl9lbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgIEJhZy5yZW1vdmUgd3JpdGVyLmdyb3VwcyBncm91cF9lbGVtZW50X2luX3dyaXRlclxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xpc3QgdCA9IEJhZy50b19saXN0IHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgZmx1c2hlZF9vcl9jbG9zZWQgdCA9XG4gICAgICAgIHRvX2xpc3QgdFxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHQgLT4gRGVmZXJyZWQuYW55X3VuaXQgWyBmbHVzaGVkIHQ7IGNsb3NlZCB0IF0pXG4gICAgICAgIHw+IERlZmVycmVkLmFsbF91bml0XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmx1c2hlZCB0ID0gZmx1c2hlZF9vcl9jbG9zZWQgdFxuXG4gICAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIEJhZy5pdGVyIHQuY29tcG9uZW50cyB+ZjooZnVuIGRpcmVjdF9zdHJlYW1fd3JpdGVyIC0+XG4gICAgICAgICAgICAoKiBXcml0ZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlaXIgZ3JvdXBzIHdoZW5cbiAgICAgICAgICAgICAgIGNsb3NlZCwgc28gW2BDbG9zZWRdIGhlcmUganVzdCBtZWFucyB0aGF0IHRoZSByZW1vdmFsIGRpZG4ndCBoYXBwZW4geWV0LiAqKVxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayBkaXJlY3Rfc3RyZWFtX3dyaXRlciB+YnVmIH5wb3MgfmxlblxuICAgICAgICAgICAgICAgOiBbIGBPayB8IGBDbG9zZWQgXSkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyaXRlIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbjtcbiAgICAgICAgICBmbHVzaGVkX29yX2Nsb3NlZCB0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgICAgbWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG9uZSAtPlxuICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgIGxldCB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9IGJpbl93cml0ZXIgb25lIGluXG4gICAgICAgICAgbGV0IGJ1ZmZlciA9ICEodC5idWZmZXIpIGluXG4gICAgICAgICAgKCogT3B0aW1pc3RpYyBmaXJzdCB0cnkgKilcbiAgICAgICAgICAobWF0Y2ggd3JpdGUgYnVmZmVyIH5wb3M6MCB4IHdpdGhcbiAgICAgICAgICAgfCBsZW4gLT4gRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlblxuICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgICAgKCogSXQncyBsaWtlbHkgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgICAgICAgIFtCaW5fcHJvdC5Db21tb24uQnVmZmVyX3Nob3J0XSBvbmx5LCBob3dldmVyIHdlIGNhbid0IGVhc2lseSBlbmZvcmNlIHRoYXRcbiAgICAgICAgICAgICAgICBjdXN0b20gYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICAgICAgICAgbGV0IGxlbiA9IHNpemUgeCBpblxuICAgICAgICAgICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgKEludC5jZWlsX3BvdzIgbGVuKSBpblxuICAgICAgICAgICAgIHQuYnVmZmVyIDo9IGJ1ZmZlcjtcbiAgICAgICAgICAgICBsZXQgbGVuID0gd3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICAgICAgICAgRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSB0IHggPVxuICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeDtcbiAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIFN0cmVhbWluZ19ycGMuaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZlxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChtZXRhZGF0YSwgKCksIHBpcGVfcikgLT4gcGlwZV9yLCBtZXRhZGF0YVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBQaXBlX3JwY19mYWlsZWRcblxuICBsZXQgZGlzcGF0Y2hfZXhuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBycGNfZXJyb3IgLT4gcmFpc2UgKEVycm9yLnRvX2V4biBycGNfZXJyb3IpXG4gICAgfCBPayAoRXJyb3IgXykgLT4gcmFpc2UgUGlwZV9ycGNfZmFpbGVkXG4gICAgfCBPayAoT2sgcGlwZV9hbmRfaWQpIC0+IHBpcGVfYW5kX2lkXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXNzYWdlXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5QaXBlX3Jlc3BvbnNlXG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2hfaXRlciA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IH5mIGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChpZCwgKCkpIC0+IGlkXG4gIDs7XG5cbiAgbGV0IGFib3J0ID0gU3RyZWFtaW5nX3JwYy5hYm9ydFxuICBsZXQgY2xvc2VfcmVhc29uID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhLmNsb3NlX3JlYXNvblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAnc3RhdGUsICd1cGRhdGUsICdlcnJvcikgdCA9XG4gICAgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICgpXG4gICAgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpiaW5fc3RhdGVcbiAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlOmJpbl91cGRhdGVcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZTpcInN0YXRlXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwidXBkYXRlXCJcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9xdWVyeVxuICBsZXQgYmluX3N0YXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgbGV0IGJpbl91cGRhdGUgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGltcGxlbWVudCA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50XG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID0gU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnRfZGlyZWN0XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgaW5cbiAgICByZXNwb25zZVxuICAgID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsIHN0YXRlLCB1cGRhdGVfcikgLT4gc3RhdGUsIHVwZGF0ZV9yLCBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBhYm9ydCA9IFN0cmVhbWluZ19ycGMuYWJvcnRcbiAgbGV0IGNsb3NlX3JlYXNvbiA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YS5jbG9zZV9yZWFzb25cbiAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayB0ID0gdC5TdHJlYW1pbmdfcnBjLmNsaWVudF9wdXNoZXNfYmFja1xuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgc3RhdGVfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgdXBkYXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbmVuZFxuXG5tb2R1bGUgQW55ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBScGMgOiAoJ3EsICdyKSBScGMudCAtPiB0XG4gICAgfCBQaXBlIDogKCdxLCAnciwgJ2UpIFBpcGVfcnBjLnQgLT4gdFxuICAgIHwgU3RhdGUgOiAoJ3EsICdzLCAndSwgJ2UpIFN0YXRlX3JwYy50IC0+IHRcbiAgICB8IE9uZV93YXkgOiAnbSBPbmVfd2F5LnQgLT4gdFxuXG4gIGxldCBkZXNjcmlwdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBScGMgcnBjIC0+IFJwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFBpcGUgcnBjIC0+IFBpcGVfcnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgU3RhdGUgcnBjIC0+IFN0YXRlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IE9uZV93YXkgcnBjIC0+IE9uZV93YXkuZGVzY3JpcHRpb24gcnBjXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvbi5TdGFibGVcbiAgbW9kdWxlIFBpcGVfY2xvc2VfcmVhc29uID0gUGlwZV9jbG9zZV9yZWFzb24uU3RhYmxlXG4gIG1vZHVsZSBScGMgPSBScGNcbiAgbW9kdWxlIFBpcGVfcnBjID0gUGlwZV9ycGNcbiAgbW9kdWxlIFN0YXRlX3JwYyA9IFN0YXRlX3JwY1xuICBtb2R1bGUgT25lX3dheSA9IE9uZV93YXlcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBScGNcblxubW9kdWxlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBQaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG4gIHR5cGUgJ2lucHV0IHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgY29udmVydCA6ICdpbnB1dCAtPiAnb3V0cHV0XG4gICAgICAgIDsgd3JpdGVyIDogJ291dHB1dCBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgIH1cbiAgICAgICAgLT4gJ2lucHV0IHRcblxuICBsZXQgY3JlYXRlIH5jb252ZXJ0IH53cml0ZXIgPSBUIHsgY29udmVydDsgd3JpdGVyIH1cblxuICBsZXQgd3JpdGUgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlIHdyaXRlciAoY29udmVydCBpbnB1dClcbiAgOztcblxuICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayAoVCB7IGNvbnZlcnQ7IHdyaXRlciB9KSBpbnB1dCA9XG4gICAgRGlyZWN0X3N0cmVhbV93cml0ZXIud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IGNsb3NlIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlIHdyaXRlclxuICBsZXQgaXNfY2xvc2VkIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmlzX2Nsb3NlZCB3cml0ZXJcbiAgbGV0IGNsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZWQgd3JpdGVyXG5lbmRcblxubGV0IGZhaWxlZF9jb252ZXJzaW9uIHggPVxuICBFcnJvci5jcmVhdGVcbiAgICBcInR5cGUgY29udmVyc2lvbiBmYWlsdXJlXCJcbiAgICB4XG4gICAgWyVzZXhwX29mOlxuICAgICAgWyBgTXNnIHwgYFF1ZXJ5IHwgYFJlc3BvbnNlIHwgYEVycm9yIHwgYFN0YXRlIHwgYFVwZGF0ZSBdXG4gICAgICAqIFsgYFJwYyBvZiBzdHJpbmcgXVxuICAgICAgKiBbIGBWZXJzaW9uIG9mIGludCBdXG4gICAgICAqIGV4bl1cbjs7XG5cbmxldCBtdWx0aXBsZV9yZWdpc3RyYXRpb25zIHggPVxuICBFcnJvci5jcmVhdGVcbiAgICBcIm11bHRpcGxlIHJwYyByZWdpc3RyYXRpb25zXCJcbiAgICB4XG4gICAgWyVzZXhwX29mOiBbIGBScGMgb2Ygc3RyaW5nIF0gKiBbIGBWZXJzaW9uIG9mIGludCBdXVxuOztcblxubGV0IHVua25vd25fdmVyc2lvbiB4ID0gRXJyb3IuY3JlYXRlIFwidW5rbm93biBycGMgdmVyc2lvblwiIHggWyVzZXhwX29mOiBzdHJpbmcgKiBpbnRdXG5cbm1vZHVsZSBDYWxsZWVfY29udmVydHMgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaW1wbGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyID1cbiAgICAgICAgeyBhZGFwdCA6XG4gICAgICAgICAgICAnc3RhdGUuICgnc3RhdGUgLT4gJ3F1ZXJ5IC0+ICdyZXNwb25zZSBEZWZlcnJlZC50KSAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udFxuICAgICAgICB9XG5cbiAgICAgIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgYWRhcHRlcnMgOiAoJ3F1ZXJ5LCAncmVzcG9uc2UpIGFkYXB0ZXIgSW50Lk1hcC50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+bmFtZSA9IHsgbmFtZTsgYWRhcHRlcnMgPSBJbnQuTWFwLmVtcHR5IH1cblxuICAgICAgbGV0IHdyYXBfZXJyb3IgZm4gc3RhdGUgcXVlcnkgPVxuICAgICAgICBtYXRjaCVtYXAgZm4gc3RhdGUgcXVlcnkgd2l0aFxuICAgICAgICB8IE9rIHZhbHVlIC0+IE9rIHZhbHVlXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkIHsgbmFtZTsgYWRhcHRlcnMgfSBycGMgYWRhcHRlciA9XG4gICAgICAgIGlmIFN0cmluZy4oIDw+ICkgbmFtZSAoUnBjLm5hbWUgcnBjKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgIFwiUnBjIG5hbWVzIGRvbid0IGFncmVlXCJcbiAgICAgICAgICAgIChuYW1lLCBScGMubmFtZSBycGMpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ11cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHZlcnNpb24gPSBScGMudmVyc2lvbiBycGMgaW5cbiAgICAgICAgICBtYXRjaCBNYXAuZmluZCBhZGFwdGVycyB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgXCJWZXJzaW9uIGFscmVhZHkgZXhpc3RzXCJcbiAgICAgICAgICAgICAgKG5hbWUsIHZlcnNpb24pXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGFkYXB0ZXJzID0gTWFwLnNldCBhZGFwdGVycyB+a2V5OnZlcnNpb24gfmRhdGE6YWRhcHRlciBpblxuICAgICAgICAgICAgT2sgeyBuYW1lOyBhZGFwdGVycyB9KVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbiB0IG9sZF9ycGMgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgYWRhcHQgZm4gPVxuICAgICAgICAgIGxldCBhZGFwdGVkIHN0YXRlIG9sZF9xdWVyeSA9XG4gICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IGZuIHN0YXRlICh1cGdyYWRlIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGRvd25ncmFkZSByZXN1bHRcbiAgICAgICAgICBpblxuICAgICAgICAgIFJwYy5pbXBsZW1lbnQgb2xkX3JwYyBhZGFwdGVkXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IG9sZF9ycGMgdXBncmFkZV9vcl9lcnJvciBkb3duZ3JhZGVfb3JfZXJyb3IgPVxuICAgICAgICBsZXQgYWRhcHQgZm4gPVxuICAgICAgICAgIGxldCBhZGFwdGVkIHN0YXRlIG9sZF9xdWVyeSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBEZWZlcnJlZC5SZXN1bHQuTGV0X3N5bnRheCBpblxuICAgICAgICAgICAgbGV0JWJpbmQgcXVlcnkgPSBEZWZlcnJlZC5yZXR1cm4gKHVwZ3JhZGVfb3JfZXJyb3Igb2xkX3F1ZXJ5KSBpblxuICAgICAgICAgICAgbGV0JWJpbmQgcmVzcG9uc2UgPSBmbiBzdGF0ZSBxdWVyeSBpblxuICAgICAgICAgICAgRGVmZXJyZWQucmV0dXJuIChkb3duZ3JhZGVfb3JfZXJyb3IgcmVzcG9uc2UpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgKHdyYXBfZXJyb3IgYWRhcHRlZClcbiAgICAgICAgaW5cbiAgICAgICAgYWRkIHQgb2xkX3JwYyB7IGFkYXB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfdmVyc2lvbiB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uIHQgcnBjIHVwZ3JhZGUgZG93bmdyYWRlXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWU6dC5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSBpblxuICAgICAgICBhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgcnBjIHVwZ3JhZGUgZG93bmdyYWRlXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50IHQgZm4gPSBNYXAuZGF0YSB0LmFkYXB0ZXJzIHw+IExpc3QubWFwIH5mOihmdW4geyBhZGFwdCB9IC0+IGFkYXB0IGZuKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBxdWVyeSAtPiByZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwucXVlcnkgLT4gTW9kZWwucmVzcG9uc2UgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoaW50LCBpbXBsZW1lbnRlciAqIEFueS50KSBIYXNodGJsLnQgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgX3JwYykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2VcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgUnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgICBsZXQlbWFwIHIgPSBmIHMgfnZlcnNpb24gcSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWwgcikgd2l0aFxuICAgICAgICAgICAgICAgICB8IE9rIHIgLT4gclxuICAgICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAocmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIGltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICAgKCdzXG4gICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgIC0+IChNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgICAgICgnc1xuICAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgIC0+ICh1bml0LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGltcGwgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gKFBpcGUgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIChEaXJlY3QgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfbW9kZWwgOiBNb2RlbC5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kgOiBWZXJzaW9uX3NoYXJlZCkgKENvbnZlcnQgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X2VsdCA6IChNb2RlbC5yZXNwb25zZSAtPiBWZXJzaW9uX2kucmVzcG9uc2UpIE9yX2Vycm9yLnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfcGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICBNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcbiAgICAgICAgb3BlbiBDb252ZXJ0XG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgUGlwZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fcmVzcG9uc2VcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICB8IHEgLT4gcVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kuZXJyb3Jfb2ZfbW9kZWwgZXJyb3Igd2l0aFxuICAgICAgICAgIHwgZXJyb3IgLT4gRXJyb3IgZXJyb3JcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbCA9XG4gICAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgICAgfCBQaXBlIGYgLT5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2glYmluZCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd2l0aFxuICAgICAgICAgICAgICB8IE9rIHBpcGUgLT5cbiAgICAgICAgICAgICAgICBNb25pdG9yLmhhbmRsZV9lcnJvcnNcbiAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gcmV0dXJuIChPayAoY29udmVydF9waXBlIHBpcGUpKSlcbiAgICAgICAgICAgICAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiByZXR1cm4gKHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpKVxuICAgICAgICAgIHwgRGlyZWN0IGYgLT5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgICAgUGlwZV9ycGMuaW1wbGVtZW50X2RpcmVjdCBycGMgKGZ1biBzIHEgZHN3IC0+XG4gICAgICAgICAgICAgIGxldCB3cml0ZXIgPVxuICAgICAgICAgICAgICAgIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci5jcmVhdGUgfmNvbnZlcnQ6Y29udmVydF9lbHQgfndyaXRlcjpkc3dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2glbWFwIGYgcyB+dmVyc2lvbiAod3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxKSB3cml0ZXIgd2l0aFxuICAgICAgICAgICAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvcilcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuUGlwZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudCAtPiByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID1cbiAgICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiY2Fubm90IHVzZSBkaXJlY3QgaW50ZXJmYWNlIHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgcGlwZSA9IFBpcGUubWFwIHBpcGUgfmY6VmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSBzdGF0ZVxuICAgICAgdHlwZSB1cGRhdGVcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAoc3RhdGUgKiB1cGRhdGUgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID1cbiAgICAgICAgJ3NcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgLT4gKE1vZGVsLnN0YXRlICogTW9kZWwudXBkYXRlIFBpcGUuUmVhZGVyLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIHZhbCBzdGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnN0YXRlIC0+IHN0YXRlXG4gICAgICAgIHZhbCBlcnJvcl9vZl9tb2RlbCA6IE1vZGVsLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuc3RhdGVcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFN0YXRlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFN0YXRlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCViaW5kIGYgcyB+dmVyc2lvbiBxIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayAobW9kZWxfc3RhdGUsIHBpcGUpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5zdGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IHN0YXRlIC0+IHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE9rIChzdGF0ZSwgVmVyc2lvbl9pLnVwZGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgVXBkYXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5TdGF0ZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX21vZGVsIDogTW9kZWwudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsIF9zdGF0ZSBwaXBlID0gUGlwZS5tYXAgfmY6dXBkYXRlX29mX21vZGVsIHBpcGVcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIG1zZ1xuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBtc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwubXNnIC0+IHVuaXRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1vZGVsX29mX21zZyA6IG1zZyAtPiBNb2RlbC5tc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgT25lX3dheS5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9tc2cgcSkgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYE1zZywgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT4gZiBzIH52ZXJzaW9uIHEpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWVudSA9IHN0cnVjdFxuICAoKioqKioqKioqKioqKioqKiogc29tZSBwcm9oaWJpdGlvbnMgZm9yIHRoaXMgbW9kdWxlICoqKioqKioqKioqKioqKioqKlxuXG4gICAgICAgICAgICAgICAgICAgICAoMSkgISEhIG5ldmVyIHBydW5lIG9sZCB2ZXJzaW9ucyBvZiB0aGlzIHJwYyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgSXQgaXMgdG9vIGZ1bmRhbWVudGFsIHRvIHRoZSB3b3JraW5ncyBvZiB2YXJpb3VzIHZlcnNpb25pbmdcbiAgICAgICAgICAgICAgICAgICAgIHNjaGVtZXMgYW5kIGl0IHByb2JhYmx5IHdvbid0IGNoYW5nZSB2ZXJ5IG11Y2ggYW55d2F5LlxuXG4gICAgICAgICAgICAgICAgICAgICAoMikgISEhIG9ubHkgZXZlciBzYXkgXCJ3aXRoIGJpbl9pb1wiIG9uIGJ1aWx0LWluIG9jYW1sIHR5cGVzICEhIVxuXG4gICAgICAgICAgICAgICAgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiB0eXBlcyBhcmUgaW50LCBsaXN0LCBzdHJpbmcsIGV0Yy5cblxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0byBwcm90ZWN0IG91cnNlbHZlcyBhZ2FpbnN0IGNoYW5nZXMgdG8gQ29yZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLCBmb3IgZXhhbXBsZS5cblxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgIGxldCBuYW1lID0gXCJfX1ZlcnNpb25lZF9ycGMuTWVudVwiXG5cbiAgICB0eXBlIHF1ZXJ5ID0gdW5pdFxuICAgIHR5cGUgcmVzcG9uc2UgPSBEZXNjcmlwdGlvbi50IGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gIGxldCBycGNfbmFtZSA9IE1vZGVsLm5hbWVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbGV0IHZlcnNpb24gPSAxXG5cbiAgICAgIHR5cGUgcXVlcnkgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcXVlcnldO1xuICAgICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoc3RyaW5nICogaW50KSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcmVzcG9uc2VdO1xuICAgICAgICBbJWV4cGVjdCB7fCA0YzFlNTBjOTNiMzhjMmFkMDU1NGNiZDkyOWJlZjNhYyB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSBxID0gcVxuXG4gICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPVxuICAgICAgICBMaXN0Lm1hcCB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBSZWdpc3RlciAoVClcbiAgZW5kXG5cbiAgbW9kdWxlIEN1cnJlbnRfdmVyc2lvbiA9IFYxXG5cbiAgbGV0IGFkZCBpbXBscyA9XG4gICAgbGV0IG1lbnUgPSBMaXN0Lm1hcCBpbXBscyB+ZjpJbXBsZW1lbnRhdGlvbi5kZXNjcmlwdGlvbiBpblxuICAgIGxldCBtZW51X2ltcGxzID0gaW1wbGVtZW50X211bHRpIChmdW4gXyB+dmVyc2lvbjpfICgpIC0+IHJldHVybiBtZW51KSBpblxuICAgIGltcGxzIEAgbWVudV9pbXBsc1xuICA7O1xuXG4gIHR5cGUgdCA9IEludC5TZXQudCBTdHJpbmcuVGFibGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzdXBwb3J0ZWRfcnBjcyB0ID1cbiAgICBsZXQgb3BlbiBMaXN0LkxldF9zeW50YXggaW5cbiAgICBsZXQlYmluZCBuYW1lLCB2ZXJzaW9ucyA9IEhhc2h0YmwudG9fYWxpc3QgdCBpblxuICAgIGxldCVtYXAgdmVyc2lvbiA9IFNldC50b19saXN0IHZlcnNpb25zIGluXG4gICAgeyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH1cbiAgOztcblxuICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zIHQgfnJwY19uYW1lID1cbiAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW50LlNldC5lbXB0eSAoSGFzaHRibC5maW5kIHQgcnBjX25hbWUpXG4gIDs7XG5cbiAgbGV0IG9mX2VudHJpZXMgZW50cmllcyA9XG4gICAgSGFzaHRibC5tYXAgfmY6SW50LlNldC5vZl9saXN0IChTdHJpbmcuVGFibGUub2ZfYWxpc3RfbXVsdGkgZW50cmllcylcbiAgOztcblxuICBsZXQgYXV4X3JlcXVlc3QgZGlzcGF0Y2ggY29ubiA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBkaXNwYXRjaCBDdXJyZW50X3ZlcnNpb24ucnBjIGNvbm4gKCkgaW5cbiAgICBSZXN1bHQubWFwIHJlc3VsdCB+ZjpvZl9lbnRyaWVzXG4gIDs7XG5cbiAgbGV0IHJlcXVlc3QgY29ubiA9IGF1eF9yZXF1ZXN0IFJwYy5kaXNwYXRjaCBjb25uXG4gIGxldCByZXF1ZXN0JyBjb25uID0gYXV4X3JlcXVlc3QgUnBjLmRpc3BhdGNoJyBjb25uXG5cbiAgbGV0IGNyZWF0ZSBkZXNjcmlwdGlvbnMgPVxuICAgIExpc3QubWFwIGRlc2NyaXB0aW9ucyB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgfD4gb2ZfZW50cmllc1xuICA7O1xuXG4gIG1vZHVsZSBXaXRoX3NoYXBlcyA9IHN0cnVjdFxuICAgIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcIl9fVmVyc2lvbmVkX3JwYy5TaGFwZV9tZW51XCJcblxuICAgICAgdHlwZSBxdWVyeSA9IHVuaXRcbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoRGVzY3JpcHRpb24udCAqIFJwY19zaGFwZXMudCkgbGlzdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICBsZXQgdmVyc2lvbiA9IDFcblxuICAgICAgICB0eXBlIHF1ZXJ5ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBxdWVyeV07XG4gICAgICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgICAgIDs7XG5cbiAgICAgICAgdHlwZSByZXNwb25zZSA9IChEZXNjcmlwdGlvbi5TdGFibGUuVjEudCAqIFJwY19zaGFwZXMuU3RhYmxlLlYxLnQpIGxpc3RcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcmVzcG9uc2VdO1xuICAgICAgICAgIFslZXhwZWN0IHt8IGI0YmRjMDFiN2VhZDkwN2U2ZDBkM2YzZDg5NzAwZjFiIHx9XVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IEZuLmlkXG4gICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IEZuLmlkXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIFJlZ2lzdGVyIChUKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEN1cnJlbnRfdmVyc2lvbiA9IFYxXG5cbiAgICB0eXBlIHQgPSAoRGVzY3JpcHRpb24udCAqIFJwY19zaGFwZXMudCkgbGlzdFxuXG4gICAgbGV0IGFkZCBpbXBscyA9XG4gICAgICBsZXQgc2hhcGVfbWVudSA9XG4gICAgICAgIExpc3QubWFwIGltcGxzIH5mOihmdW4gaW1wbCAtPlxuICAgICAgICAgIEltcGxlbWVudGF0aW9uLmRlc2NyaXB0aW9uIGltcGwsIEltcGxlbWVudGF0aW9uLnNoYXBlcyBpbXBsKVxuICAgICAgaW5cbiAgICAgIGxldCBzaGFwZV9tZW51X2ltcGxzID0gaW1wbGVtZW50X211bHRpIChmdW4gXyB+dmVyc2lvbjpfICgpIC0+IHJldHVybiBzaGFwZV9tZW51KSBpblxuICAgICAgYWRkIGltcGxzIEAgc2hhcGVfbWVudV9pbXBsc1xuICAgIDs7XG5cbiAgICBsZXQgcmVxdWVzdCBjb25uID0gUnBjLmRpc3BhdGNoIEN1cnJlbnRfdmVyc2lvbi5ycGMgY29ubiAoKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29ubmVjdGlvbl93aXRoX21lbnUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNvbm5lY3Rpb24gOiBDb25uZWN0aW9uLnRcbiAgICA7IG1lbnUgOiBNZW51LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgY3JlYXRlIGNvbm5lY3Rpb24gPVxuICAgIGxldCBvcGVuIERlZmVycmVkLk9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgICBsZXQlbWFwIG1lbnUgPSBNZW51LnJlcXVlc3QgY29ubmVjdGlvbiBpblxuICAgIHsgY29ubmVjdGlvbjsgbWVudSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9kaXJlY3RseSBjb25uZWN0aW9uIG1lbnUgPSB7IGNvbm5lY3Rpb247IG1lbnUgfVxuZW5kXG5cbm1vZHVsZSBDYWxsZXJfY29udmVydHMgPSBzdHJ1Y3RcbiAgbGV0IG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIH5ycGNfbmFtZSB+Y2FsbGVyX3ZlcnNpb25zIH5jYWxsZWVfdmVyc2lvbnMgfmNhbGxlZV9tZW51ID1cbiAgICBtYXRjaCBTZXQubWF4X2VsdCAoU2V0LmludGVyIGNhbGxlZV92ZXJzaW9ucyBjYWxsZXJfdmVyc2lvbnMpIHdpdGhcbiAgICB8IFNvbWUgdmVyc2lvbiAtPiBPayB2ZXJzaW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBlcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiY2FsbGVyIGFuZCBjYWxsZWUgc2hhcmUgbm8gY29tbW9uIHZlcnNpb25zIGZvciBycGNcIlxuICAgICAgICAgICAgKHJwY19uYW1lIDogc3RyaW5nKVxuICAgICAgICAgICAgKGNhbGxlcl92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChjYWxsZWVfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX21lbnUgOiBNZW51LnQpXVxuICA7O1xuXG4gIGxldCVleHBlY3RfdGVzdCBcImhpZ2hlc3QgdmVyc2lvbiBudW1iZXIgaXMgdGFrZW4gaW4gbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cIiA9XG4gICAgbGV0IHJwY19uYW1lID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbWVudSA9IE1lbnUub2ZfZW50cmllcyBbIHJwY19uYW1lLCAyIF0gaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgIH5ycGNfbmFtZVxuICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAxOyAyOyAzIF0pXG4gICAgICAgIH5jYWxsZWVfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDIgXSlcbiAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICBpblxuICAgIHByaW50X3MgWyVzZXhwIChyZXN1bHQgOiBpbnQgT3JfZXJyb3IudCldO1xuICAgIFslZXhwZWN0IHt8IChPayAyKSB8fV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJlcnJvciBmcm9tIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIGxvb2tzIHJlYXNvbmFibGVcIiA9XG4gICAgbGV0IHRoZV9ycGMgPSBcInRoZS1ycGNcIiBpblxuICAgIGxldCBub3RfdGhlX3JwYyA9IFwib3RoZXItcnBjXCIgaW5cbiAgICBsZXQgbWVudSA9IE1lbnUub2ZfZW50cmllcyBbIG5vdF90aGVfcnBjLCAxOyBub3RfdGhlX3JwYywgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWU6dGhlX3JwY1xuICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAxOyAyOyAzIF0pXG4gICAgICAgIH5jYWxsZWVfdmVyc2lvbnM6KE1lbnUuc3VwcG9ydGVkX3ZlcnNpb25zIG1lbnUgfnJwY19uYW1lOnRoZV9ycGMpXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdFxuICAgICAge3xcbiAgICAgIChFcnJvclxuICAgICAgIChcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCIgKHJwY19uYW1lIHRoZS1ycGMpXG4gICAgICAgIChjYWxsZXJfdmVyc2lvbnMgKDEgMiAzKSkgKGNhbGxlZV92ZXJzaW9ucyAoKSlcbiAgICAgICAgKGNhbGxlZV9tZW51ICgob3RoZXItcnBjICgxIDIpKSkpKSl8fV1cbiAgOztcblxuICBtb2R1bGUgRGlzcGF0Y2ggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTWFrZSAoTSA6IE1vbmFkKSA9IHN0cnVjdFxuICAgICAgb3BlbiBNXG5cbiAgICAgIGxldCB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5kaXNwYXRjaGVyIH5yZWdpc3RyeSA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoRXJyb3IgKHVua25vd25fdmVyc2lvbiAobmFtZSwgdmVyc2lvbikpKVxuICAgICAgICB8IFNvbWUgKGRpc3BhdGNoLCBfcnBjKSAtPiBkaXNwYXRjaGVyIGRpc3BhdGNoIGNvbm5lY3Rpb24gcXVlcnlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgICAgeyBDb25uZWN0aW9uX3dpdGhfbWVudS5jb25uZWN0aW9uOyBtZW51IH1cbiAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICAgIH5kaXNwYXRjaGVyXG4gICAgICAgID1cbiAgICAgICAgbGV0IGNhbGxlZV92ZXJzaW9ucyA9IE1lbnUuc3VwcG9ydGVkX3ZlcnNpb25zIG1lbnUgfnJwY19uYW1lOm5hbWUgaW5cbiAgICAgICAgbGV0IGNhbGxlcl92ZXJzaW9ucyA9IHZlcnNpb25zICgpIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgICAgIH5ycGNfbmFtZTpuYW1lXG4gICAgICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zXG4gICAgICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zXG4gICAgICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgRXJyb3IgZSAtPiByZXR1cm4gKEVycm9yIGUpXG4gICAgICAgIHwgT2sgdmVyc2lvbiAtPlxuICAgICAgICAgIHdpdGhfc3BlY2lmaWNfdmVyc2lvbiB+dmVyc2lvbiB+Y29ubmVjdGlvbiB+bmFtZSB+cXVlcnkgfnJlZ2lzdHJ5IH5kaXNwYXRjaGVyXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIEFzeW5jID0gTWFrZSAoRGVmZXJyZWQpXG4gICAgbW9kdWxlIERpcmVjdCA9IE1ha2UgKE1vbmFkLklkZW50KVxuICBlbmRcblxuICBtb2R1bGUgUnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiByZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlcicgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IE1vZGVsLnF1ZXJ5IC0+IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBtcSA9XG4gICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgbXEpIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFJwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIFJlc3VsdC5iaW5kIHJlc3VsdCB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgbXEgcikgd2l0aFxuICAgICAgICAgICAgICAgIHwgT2sgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBSZWdpc3RlcicgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgXyByID0gbW9kZWxfb2ZfcmVzcG9uc2UgclxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKHJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnQsIGVycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gZjoocmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpc3BhdGNoZXIgPVxuICAgICAgICB7IGFib3J0IDogQ29ubmVjdGlvbi50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdFxuICAgICAgICA7IGRpc3BhdGNoIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+ICggTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAgICAgLCBNb2RlbC5lcnJvciApXG4gICAgICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudFxuICAgICAgICA7IGRpc3BhdGNoX2l0ZXIgOlxuICAgICAgICAgICAgQ29ubmVjdGlvbi50XG4gICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgLT4gZjooTW9kZWwucmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA6IChkaXNwYXRjaGVyICogQW55LnQpIEludC5UYWJsZS50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5IH5mID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2hfaXRlcjsgXyB9IGNvbm4gcXVlcnkgLT4gZGlzcGF0Y2hfaXRlciBjb25uIHF1ZXJ5IH5mKVxuICAgICAgOztcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2g7IF8gfSBjb25uIHF1ZXJ5IC0+IGRpc3BhdGNoIGNvbm4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgY29ubl93aXRoX21lbnUgaWQgPVxuICAgICAgICBEaXNwYXRjaC5EaXJlY3Qud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIGlkXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgYWJvcnQ7IF8gfSBjb25uIGlkIC0+XG4gICAgICAgICAgICBhYm9ydCBjb25uIGlkO1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSA6IFZlcnNpb25fc2hhcmVkKSAoQ29udmVydCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfZWx0IDogKFZlcnNpb25faS5yZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZSkgT3JfZXJyb3IudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9waXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIHJldHVybiAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgfCBxIC0+IHJldHVybiAoT2sgcSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rID1cbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9lcnJvciBlIHdpdGhcbiAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIHwgT2sgKE9rIG9rKSAtPiBPayAoT2sgKGNvbnZlcnRfb2sgb2spKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFBpcGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6KGZ1biAocGlwZSwgaWQpIC0+IGNvbnZlcnRfcGlwZSBwaXBlLCBpZClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZGlzcGF0Y2hfaXRlciBjb25uIHEgfmYgPVxuICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQgY29udmVydF9tZXNzYWdlIChtIDogXyBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCkgPVxuICAgICAgICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgICAgICB8IENsb3NlZCBfIGFzIGNsb3NlZCAtPiBjbG9zZWRcbiAgICAgICAgICAgIHwgVXBkYXRlIHUgLT4gVXBkYXRlIChjb252ZXJ0X2VsdCB1KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0JW1hcCByZXN1bHQgPVxuICAgICAgICAgICAgUGlwZV9ycGMuZGlzcGF0Y2hfaXRlciBycGMgY29ubiBxIH5mOihmdW4gbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBmIChjb252ZXJ0X21lc3NhZ2UgbWVzc2FnZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6Rm4uaWRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYWJvcnQgY29ubiBpZCA9IFBpcGVfcnBjLmFib3J0IHJwYyBjb25uIGlkXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldFxuICAgICAgICAgICAgICByZWdpc3RyeVxuICAgICAgICAgICAgICB+a2V5OnZlcnNpb25cbiAgICAgICAgICAgICAgfmRhdGE6KHsgYWJvcnQ7IGRpc3BhdGNoOyBkaXNwYXRjaF9pdGVyIH0sIEFueS5QaXBlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIkNhbm5vdCB1c2UgRGlyZWN0IHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcblxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZSByIHdpdGhcbiAgICAgICAgICAgICAgICB8IHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gVmVyc2lvbl9pLnZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHN0YXRlXG4gICAgICB0eXBlIHVwZGF0ZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiAoIHN0YXRlICogdXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFN0YXRlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9zdGF0ZSA6IHN0YXRlIC0+IE1vZGVsLnN0YXRlXG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBTdGF0ZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgcSB3aXRoXG4gICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgfCBxIC0+XG4gICAgICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gU3RhdGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPiBFcnJvciBleG5cbiAgICAgICAgICAgICAgIHwgT2sgKEVycm9yIGUpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfZXJyb3IgZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgIHwgT2sgKE9rIChzdGF0ZSwgcGlwZSwgaWQpKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3N0YXRlIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgfCBzdGF0ZSAtPiBPayAoT2sgKHN0YXRlLCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHBpcGUsIGlkKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuU3RhdGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3VwZGF0ZSA6IHVwZGF0ZSAtPiBNb2RlbC51cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBSZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl91cGRhdGUgciB3aXRoXG4gICAgICAgICAgICAgICAgfCByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFVwZGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBtc2dcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBtc2cgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgbXNnID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBtc2dcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1zZ19vZl9tb2RlbCA6IE1vZGVsLm1zZyAtPiBtc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1zZ19vZl9tb2RlbCBxKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPiBPbmVfd2F5LmRpc3BhdGNoIHJwYyBjb25uIHFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55Lk9uZV93YXkgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCb3RoX2NvbnZlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBsYWluID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZWVfcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gY2FsbGVlX3F1ZXJ5IC0+IGNhbGxlZV9yZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBDYWxsZWUucXVlcnlcbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IENhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3Jlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gZjooY2FsbGVyX3Jlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGNhbGxlcl9lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBhYm9ydF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfcmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gY2FsbGVlX3Jlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5DYWxsZXIuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5DYWxsZWUucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgIGxldCBhYm9ydF9tdWx0aSA9IENhbGxlci5hYm9ydF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9zdGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVyX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfdXBkYXRlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3N0YXRlICogY2FsbGVyX3VwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGNhbGxlcl9lcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gKGNhbGxlZV9zdGF0ZSAqIGNhbGxlZV91cGRhdGUgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuU3RhdGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IE1vZGVsLkNhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwuQ2FsbGVlLnF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5DYWxsZXIuc3RhdGVcbiAgICAgICAgdmFsIHN0YXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBlcnJvcl9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZWUudXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS51cGRhdGUgLT4gdXBkYXRlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwuQ2FsbGVyLnVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9zdGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl9zdGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9tc2dcbiAgICAgIHR5cGUgY2FsbGVlX21zZ1xuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IGNhbGxlcl9tc2cgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9tc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2dcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuT25lX3dheS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBtc2dfb2ZfY2FsbGVyX21vZGVsIDogQ2FsbGVyLm1zZyAtPiBtc2dcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX21zZyA6IG1zZyAtPiBDYWxsZWUubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfbXNnID0gY2FsbGVlX21vZGVsX29mX21zZ1xuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1zZ19vZl9tb2RlbCA9IG1zZ19vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG5cbiAgICAgICgqIE5vdGU6IENhbGxlci52ZXJzaW9ucyBpcyB0aGUgc2FtZSBhcyBDYWxsZWUudmVyc2lvbnMsIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoXG4gICAgICAgICBvbmUgd2UgY2FsbCBoZXJlLiBTYW1lIGZvciBbcnBjc10uICopXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydFxuICBtb2R1bGUgSGVhZGVyID0gSGVhZGVyXG4gIG1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IEhhbmRsZXJfcmVzdWx0XG4gIG1vZHVsZSBTZW5kX3Jlc3VsdCA9IFNlbmRfcmVzdWx0XG4gIG1vZHVsZSBSZWFkZXIgPSBSZWFkZXJcbiAgbW9kdWxlIFdyaXRlciA9IFdyaXRlclxuZW5kXG5cbmxldCByZWMgcGlwZV9yZWFkIHQgZiA9XG4gIG1hdGNoJWJpbmQgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHQgd2l0aFxuICB8IGBFb2YgLT4gZiBgRW9mXG4gIHwgYE9rIC0+XG4gICAgKG1hdGNoIFBpcGUucmVhZF9ub3cnIHQgd2l0aFxuICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBwaXBlX3JlYWQgdCBmXG4gICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgcmVzIC0+IGYgcmVzKVxuOztcblxubW9kdWxlIHR5cGUgREFUQSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGFkZF90b19iaWdidWZmZXIgOiBCaWdidWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX2JpZ3N0cmluZyA6IHQgLT4gQmlnc3RyaW5nLnRcbiAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfYnVmZmVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwaXBlIDogJ2EgUGlwZS5SZWFkZXIudFxuICAgIDsgYnVmZmVyIDogQmlnYnVmZmVyLnRcbiAgICA7IG11dGFibGUgYnl0ZXNfcmVhZCA6IEludDYzLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID1cbiAgICB7IHBpcGU7IGJ1ZmZlciA9IEJpZ2J1ZmZlci5jcmVhdGUgSGVhZGVyLmxlbmd0aDsgYnl0ZXNfcmVhZCA9IEludDYzLnplcm8gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQaXBlX3JlYWRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9idWZmZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlX3JlYWQgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcbiAgbGV0IGJ5dGVzX3JlYWQgKHQgOiB0KSA9IHQuYnl0ZXNfcmVhZFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKHQgOiB0KSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogKF8sIF8pIERlZmVycmVkLlJlc3VsdC50ID1cbiAgICBsZXQgYnVmZmVyID0gdC5idWZmZXIgaW5cbiAgICAoKiBEZXF1ZXVlIHVudGlsIGVub3VnaCBkYXRhIChbbmVlZF0pIGlzIGF2YWlsYWJsZSBhbmQgdHJ5IHJlYWQgbWVzc2FnZXMgKilcbiAgICBsZXQgcmVjIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPVxuICAgICAgbWF0Y2ggUXVldWUuZGVxdWV1ZSBxdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogUXVldWUgaXMgZW1wdHkgLSB3ZSBuZWVkIHRvIHdhaXQgZm9yIG1vcmUgZGF0YSAqKVxuICAgICAgICByZXR1cm4gKFNlY29uZCBuZWVkKVxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgbGV0IGJ1ZmZfbGVuID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgbGV0IGRhdGFfbGVuID0gRGF0YS5sZW5ndGggZGF0YSBpblxuICAgICAgICBpZiBidWZmX2xlbiA9IDAgJiYgZGF0YV9sZW4gPj0gbmVlZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgaGF2ZSBlbm91Z2ggZGF0YSBhbmQgYnVmZmVyIGlzIGVtcHR5LlxuICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIGV2ZXJ5IGJpbl9wcm90IG1lc3NhZ2UgaXMgc2VudCBpbiBpdHMgb3duXG4gICAgICAgICAgICAgd2Vic29ja2V0IGZyYW1lICopXG4gICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YTooRGF0YS50b19iaWdzdHJpbmcgZGF0YSkgfmxlbmd0aDpkYXRhX2xlbiBxdWV1ZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBTbG93IHBhdGguIFdlIGhhdmUgdG8gYWNjdW11bGF0ZSBbQmlnc3RyaW5nLnRdcyAqKVxuICAgICAgICAgIERhdGEuYWRkX3RvX2JpZ2J1ZmZlciBidWZmZXIgZGF0YTtcbiAgICAgICAgICBpZiBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciA+PSBuZWVkXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBUaGVyZSBpcyBlbm91Z2ggZGF0YSBpbiB0aGUgYnVmZmVyICopXG4gICAgICAgICAgICBsZXQgZGF0YSA9IEJpZ2J1ZmZlci52b2xhdGlsZV9jb250ZW50cyBidWZmZXIgaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIHF1ZXVlKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqIFdlIG5lZWQgbW9yZSBkYXRhIC0ga2VlcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZSAqKVxuICAgICAgICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZSlcbiAgICAoKiBSZWFkIGFzIG1hbnkgbWVzc2FnZXMgYXMgcG9zc2libGUgZnJvbSB0aGUgY3VycmVudCBkYXRhICopXG4gICAgYW5kIHByb2Nlc3NfZGF0YSB+cG9zIH5kYXRhIH5sZW5ndGggcXVldWUgPVxuICAgICAgaWYgbGVuZ3RoID49IEhlYWRlci5sZW5ndGhcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcGF5bG9hZF9sZW4gPSBIZWFkZXIudW5zYWZlX2dldF9wYXlsb2FkX2xlbmd0aCBkYXRhIH5wb3MgaW5cbiAgICAgICAgbGV0IHRvdGFsX2xlbiA9IEhlYWRlci5sZW5ndGggKyBwYXlsb2FkX2xlbiBpblxuICAgICAgICBpZiBsZW5ndGggPj0gdG90YWxfbGVuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHQuYnl0ZXNfcmVhZCA8LSBJbnQ2My4odC5ieXRlc19yZWFkICsgb2ZfaW50IHBheWxvYWRfbGVuKTtcbiAgICAgICAgICBtYXRjaCBvbl9tZXNzYWdlIGRhdGEgfnBvczoocG9zICsgSGVhZGVyLmxlbmd0aCkgfmxlbjpwYXlsb2FkX2xlbiB3aXRoXG4gICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIHggLT5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgICgqIE1ha2Ugc3VyZSB0aGF0IGFsbCBkYXRhIHdlJ3ZlIHJlYWQgKGFuZCBub3QgXCJjb25zdW1lZFwiKSBmcm9tIHRoZSBwaXBlXG4gICAgICAgICAgICAgICBpcyBrZXB0IGluIHRoZSBidWZmZXIuXG4gICAgICAgICAgICAgICBUaGF0IGlzIHRoZSByZW1haW5pbmcgYml0cyBpbiBbZGF0YV0gYW5kIGFsbCBjb250ZW50cyBpbiBbcXVldWVdLlxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgICAgICAgUXVldWUuaXRlciBxdWV1ZSB+ZjooZnVuIGRhdGEgLT4gRGF0YS5hZGRfdG9fYmlnYnVmZmVyIGJ1ZmZlciBkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiAoRmlyc3QgeClcbiAgICAgICAgICB8IChDb250aW51ZSB8IFdhaXQgXykgYXMgY29udGludWVfb3Jfd2FpdCAtPlxuICAgICAgICAgICAgbGV0JWJpbmQgKCkgPVxuICAgICAgICAgICAgICBtYXRjaCBjb250aW51ZV9vcl93YWl0IHdpdGhcbiAgICAgICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIF8gLT5cbiAgICAgICAgICAgICAgICAoKiBJbXBvc3NpYmxlOiB0aGlzIGJyYW5jaCBkb2VzIG5vdCBjb250YWluIFtTdG9wIF9dICopXG4gICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgQ29udGludWUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgICB8IFdhaXQgZCAtPiBkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHBvcyArIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aCAtIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICBpZiBsZW5ndGggPiAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFByb2Nlc3MgdGhlIHJlc3Qgb2YgdGhlIGRhdGEuXG4gICAgICAgICAgICAgICAgIE1vcmUgdGhhbiBvbmUgYmluX3Byb3QgbWVzc2FnZSB3YXMgc2VudCBpbnNpZGUgdGhlIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgqIGxlbmd0aCA9IDAgKilcbiAgICAgICAgICAgICAgKCogQWxsIGRhdGEgd2FzIHJlYWQgLSBrZWVwIHByb2Nlc3NpbmcgdGhlIHF1ZXVlICopXG4gICAgICAgICAgICAgIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGg6MCB+cXVldWUgfmRhdGEpXG4gICAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDp0b3RhbF9sZW4gfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSlcbiAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDpIZWFkZXIubGVuZ3RoIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGFcbiAgICBhbmQgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGEgPVxuICAgICAgaWYgbGVuZ3RoID0gMFxuICAgICAgdGhlbiBCaWdidWZmZXIuY2xlYXIgYnVmZmVyXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuc3ViIGRhdGEgfnBvcyB+bGVuOmxlbmd0aCBpblxuICAgICAgICBCaWdidWZmZXIuY2xlYXIgYnVmZmVyO1xuICAgICAgICBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZyBidWZmZXIgZGF0YSlcbiAgICBhbmQgc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhID1cbiAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZVxuICAgIGluXG4gICAgbGV0IHJlYyB3YWl0X2Zvcl9yZWFkIH5uZWVkID1cbiAgICAgIHBpcGVfcmVhZCB0LnBpcGUgKGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiByZXR1cm4gKEVycm9yIGBFb2YpXG4gICAgICAgIHwgYE9rIHF1ZXVlIC0+IHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPj49IGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUpXG4gICAgYW5kIGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUgbmV4dCA9XG4gICAgICBvbl9lbmRfb2ZfYmF0Y2ggKCk7XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgRmlyc3QgcmVzdWx0IC0+IHJldHVybiAoT2sgcmVzdWx0KVxuICAgICAgfCBTZWNvbmQgbmVlZCAtPiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5kYXRhIH5sZW5ndGggPVxuICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIChRdWV1ZS5jcmVhdGUgKCkpID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlXG4gICAgaW5cbiAgICAoKiBXZSBlaXRoZXIgc3RhcnQgYnlcbiAgICAgICAtIHByb2Nlc3NpbmcgcmVtYWluaW5nIGJpdHMgaW4gdGhlIGJ1ZmZlclxuICAgICAgIC0gb3Igd2FpdGluZyBmb3IgbW9yZSBkYXRhIGluIHRoZSBwaXBlICopXG4gICAgbGV0IG5lZWQgPSBIZWFkZXIubGVuZ3RoIGluXG4gICAgbGV0IGxlbmd0aCA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgaWYgSW50LiggPCApIGxlbmd0aCBuZWVkXG4gICAgdGhlbiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgZWxzZSBzdGFydF9wcm9jZXNzaW5nX2V4aXN0aW5nX2RhdGEgfmxlbmd0aCB+ZGF0YTooQmlnYnVmZmVyLnZvbGF0aWxlX2NvbnRlbnRzIGJ1ZmZlcilcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBEYXRhLnRcblxuICAgIGxldCBvZl9iaWdzdHJpbmcgPSBEYXRhLm9mX2JpZ3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfbW9uaXRvciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuV3JpdGVyLnRcbiAgICA7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICA7IG11dGFibGUgYnl0ZXNfd3JpdHRlbiA6IEludDYzLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID0geyBwaXBlOyBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgKCk7IGJ5dGVzX3dyaXR0ZW4gPSBJbnQ2My56ZXJvIH1cbmVuZFxuXG4oKiBXZSBkb24ndCBwZXJmb3JtIGFueSBidWZmZXJpbmcgaGVyZS5cbiAgIEEgbWVzc2FnZSBpcyBjb25zaWRlciB0byBiZSBmbHVzaGVkIGFzIHNvb24gYXMgaXQgZW50ZXJzIHRoZSBwaXBlLiAqKVxubW9kdWxlIFBpcGVfd3JpdGVyIChEYXRhIDogREFUQSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRGF0YS50IFBpcGVfYW5kX21vbml0b3IudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG4gIGxldCBtb25pdG9yICh0IDogdCkgPSB0Lm1vbml0b3JcblxuICAoKiBCZWNhdXNlIHdlIGRvbid0IG1haW50YWluIGFueSBidWZmZXIsIHRoZXJlIGFyZSBubyBwZW5kaW5nIHdyaXRlcyAqKVxuICBsZXQgYnl0ZXNfdG9fd3JpdGUgKF8gOiB0KSA9IDBcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gKHQgOiB0KSA9IHQuYnl0ZXNfd3JpdHRlblxuICBsZXQgc3RvcHBlZCAodCA6IHQpID0gUGlwZS5jbG9zZWQgdC5waXBlXG5cbiAgKCogV2UgY29uc2lkZXIgdGhhdCBhIG1lc3NhZ2UgaXMgZmx1c2hlZCBhcyBzb29uIGFzIGl0IHJlYWNoZXMgdGhlIHVuZGVybGluaW5nXG4gICAgIHRyYW5zcG9ydC4gKilcbiAgbGV0IGZsdXNoZWQgKF8gOiB0KSA9IERlZmVycmVkLnVuaXRcbiAgbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZFxuICBsZXQgc2VudF9yZXN1bHQgeCA6IF8gU2VuZF9yZXN1bHQudCA9IFNlbnQgeFxuXG4gIGxldCBjaGVja19jbG9zZWQgKHQgOiB0KSBmID1cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHQucGlwZSkgdGhlbiBmICgpIGVsc2UgU2VuZF9yZXN1bHQuQ2xvc2VkXG4gIDs7XG5cbiAgbGV0IGluY3JfYnl0ZXNfd3JpdHRlbiAodCA6IHQpIG51bV9ieXRlcyA9XG4gICAgdC5ieXRlc193cml0dGVuIDwtIEludDYzLih0LmJ5dGVzX3dyaXR0ZW4gKyBvZl9pbnQgbnVtX2J5dGVzKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IHQgd3JpdGVyIHggPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgIGxldCBidWYgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB+aGVhZGVyOnRydWUgd3JpdGVyIHggaW5cbiAgICAgIGxldCBkYXRhID0gRGF0YS5vZl9iaWdzdHJpbmcgYnVmIGluXG4gICAgICBpbmNyX2J5dGVzX3dyaXR0ZW4gdCAoRGF0YS5sZW5ndGggZGF0YSk7XG4gICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdC5waXBlIGRhdGE7XG4gICAgICBzZW50X3Jlc3VsdCAoKSlcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIHRcbiAgICAgICAgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW46cGF5bG9hZF9zaXplXG4gICAgPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgICgqIFdyaXRlIHRoZSBzaXplIGhlYWRlciBtYW51YWxseSBhbmQgY29uY2F0ZW5hdGUgdGhlIHR3byAqKVxuICAgICAgbGV0IGRhdGFfc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLmNyZWF0ZSAoZGF0YV9zaXplICsgSGVhZGVyLmxlbmd0aCArIHBheWxvYWRfc2l6ZSkgaW5cbiAgICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGRhdGEgfnBvczowIChkYXRhX3NpemUgKyBwYXlsb2FkX3NpemUpO1xuICAgICAgbGV0IGRzdF9wb3MgPSB3cml0ZXIud3JpdGUgZGF0YSB+cG9zOkhlYWRlci5sZW5ndGggeCBpblxuICAgICAgQmlnc3RyaW5nLmJsaXQgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6ZGF0YSB+ZHN0X3BvcyB+bGVuOnBheWxvYWRfc2l6ZTtcbiAgICAgIGxldCBkYXRhID0gRGF0YS5vZl9iaWdzdHJpbmcgZGF0YSBpblxuICAgICAgaW5jcl9ieXRlc193cml0dGVuIHQgKERhdGEubGVuZ3RoIGRhdGEpO1xuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSBkYXRhO1xuICAgICAgc2VudF9yZXN1bHQgKCkpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IHdyaXRlciB4IH5idWYgfnBvcyB+bGVuID1cbiAgICBtYXRjaCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCB3cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgfCBTZW50ICgpIC0+IHNlbnRfcmVzdWx0IERlZmVycmVkLnVuaXRcbiAgICB8IChDbG9zZWQgfCBNZXNzYWdlX3Rvb19iaWcgXykgYXMgciAtPiByXG4gIDs7XG5lbmRcblxubW9kdWxlIEJpZ3N0cmluZ19kYXRhID0gc3RydWN0XG4gIHR5cGUgdCA9IEJpZ3N0cmluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgbGV0IGFkZF90b19iaWdidWZmZXIgPSBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZ1xuICBsZXQgdG9fYmlnc3RyaW5nIHggPSB4XG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IHhcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICBsZXQgYWRkX3RvX2JpZ2J1ZmZlciA9IEJpZ2J1ZmZlci5hZGRfc3RyaW5nXG4gIGxldCB0b19iaWdzdHJpbmcgeCA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgeFxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSBCaWdzdHJpbmcudG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgQmlnc3RyaW5nX3BpcGVfcmVhZGVyID0gUGlwZV9yZWFkZXIgKEJpZ3N0cmluZ19kYXRhKVxubW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlciA9IFBpcGVfd3JpdGVyIChCaWdzdHJpbmdfZGF0YSlcbm1vZHVsZSBTdHJpbmdfcGlwZV9yZWFkZXIgPSBQaXBlX3JlYWRlciAoU3RyaW5nX2RhdGEpXG5tb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyID0gUGlwZV93cml0ZXIgKFN0cmluZ19kYXRhKVxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJpZ3N0cmluZyA6IGJpZ3N0cmluZyB0XG5cbiAgbGV0IHN0cmluZyA9IFN0cmluZ1xuICBsZXQgYmlnc3RyaW5nID0gQmlnc3RyaW5nXG5lbmRcblxubGV0IG1ha2VfcmVhZGVyICh0eXBlIGEpICh4IDogYSBLaW5kLnQpIChyZWFkZXIgOiBhIFBpcGUuUmVhZGVyLnQpID1cbiAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFJlYWRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfcmVhZGVyKSByZWFkZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBSZWFkZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3JlYWRlcikgcmVhZGVyXG47O1xuXG5sZXQgbWFrZV93cml0ZXIgKHR5cGUgYSkgKHggOiBhIEtpbmQudCkgKHdyaXRlciA6IGEgUGlwZS5Xcml0ZXIudCkgPVxuICBsZXQgd3JpdGVyID0gUGlwZV9hbmRfbW9uaXRvci5jcmVhdGUgd3JpdGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFdyaXRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyKSB3cml0ZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBXcml0ZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlcikgd3JpdGVyXG47O1xuXG5sZXQgY3JlYXRlIGtpbmQgcmVhZGVyIHdyaXRlciA9XG4gIHsgVHJhbnNwb3J0LnJlYWRlciA9IG1ha2VfcmVhZGVyIGtpbmQgcmVhZGVyOyB3cml0ZXIgPSBtYWtlX3dyaXRlciBraW5kIHdyaXRlciB9XG47O1xuXG4oKiBUZXN0aW5nICopXG5cbm1vZHVsZSB0eXBlIFRyYW5zcG9ydF9yZWFkZXIgPSBzaWdcbiAgbW9kdWxlIEZvcl90ZXN0aW5nIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfYmlnc3RyaW5nIDogQmlnc3RyaW5nLnQgLT4gdFxuICBlbmRcblxuICBpbmNsdWRlIFRyYW5zcG9ydC5SZWFkZXIuUyB3aXRoIHR5cGUgdCA9IEZvcl90ZXN0aW5nLnQgUGlwZV9hbmRfYnVmZmVyLnRcbmVuZFxuXG5tb2R1bGUgVGVzdF9yZWFkZXIgKFRyYW5zcG9ydF9yZWFkZXIgOiBUcmFuc3BvcnRfcmVhZGVyKSA9IHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydF9yZWFkZXIuRm9yX3Rlc3RpbmdcblxuICBsZXQgZGVmYXVsdF9tZXNzYWdlID0gQmlnc3RyaW5nLm9mX3N0cmluZyBcIkZPT0JBUjEyM1wiXG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlX2J1ZiAobWVzc2FnZSA6IEJpZ3N0cmluZy50KSA6IEJpZ3N0cmluZy50ID1cbiAgICBsZXQgbWVzc2FnZV9sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2UgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSAoSGVhZGVyLmxlbmd0aCArIG1lc3NhZ2VfbGVuKSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgbWVzc2FnZV9sZW47XG4gICAgQmlnc3RyaW5nLmJsaXRcbiAgICAgIH5zcmM6bWVzc2FnZVxuICAgICAgfmRzdDpidWZcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOkhlYWRlci5sZW5ndGhcbiAgICAgIH5sZW46bWVzc2FnZV9sZW47XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlICgpID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZVxuXG4gIGxldCBvbl9tZXNzYWdlID8obWVzc2FnZSA9IGRlZmF1bHRfbWVzc2FnZSkgb25fbWVzc2FnZV9jb3VudCBidWZmZXIgfnBvcyB+bGVuID1cbiAgICBvbl9tZXNzYWdlX2NvdW50IDo9ICFvbl9tZXNzYWdlX2NvdW50ICsgMTtcbiAgICBbJXRlc3RfcmVzdWx0OiBCaWdzdHJpbmcudF0gKEJpZ3N0cmluZy5zdWIgYnVmZmVyIH5wb3MgfmxlbikgfmV4cGVjdDptZXNzYWdlO1xuICAgIEhhbmRsZXJfcmVzdWx0LkNvbnRpbnVlXG4gIDs7XG5cbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgKCkgPSBpbmNyIG9uX2VuZF9vZl9iYXRjaF9jb3VudFxuICBsZXQgd2FpdCAoKSA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuRXhwZXJ0LnJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKClcblxuICBsZXQgcnVuX3Rlc3QgcnVuIHZlcmlmeSA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fbWVzc2FnZV9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaF9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIG9uX21lc3NhZ2VfY291bnQgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoID0gb25fZW5kX29mX2JhdGNoIG9uX2VuZF9vZl9iYXRjaF9jb3VudCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpO1xuICAgIHdhaXQgKCk7XG4gICAgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnQgbWVzc2FnZV9jb3VudCBiYXRjaF9jb3VudCA9XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fbWVzc2FnZV9jb3VudCB+ZXhwZWN0Om1lc3NhZ2VfY291bnQ7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fZW5kX29mX2JhdGNoX2NvdW50IH5leHBlY3Q6YmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcblxuICAoKiBOb3QgZW5vdWdoIGRhdGEsIHdlIG5lZWQgdG8gYWNjdW11bGF0ZSAqKVxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgbGV0IGJ1ZiA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiAoQmlnc3RyaW5nLm9mX3N0cmluZyBcIlwiKSBpblxuICAgIGxldCBtZXNzYWdlX3JhdyA9IGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgKEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZV9yYXcpO1xuICAgIHdyaXRlIGJ1ZjtcbiAgICB3YWl0ICgpO1xuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlX3JhdyBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBtZXNzYWdlX3JhdyB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgbWVzc2FnZV9yYXcgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgd3JpdGUgcGFydDE7XG4gICAgd2FpdCAoKTtcbiAgICB3cml0ZSBwYXJ0MlxuICA7O1xuXG4gICgqIFRvbyBtdWNoIGRhdGEsIHdlIG5lZWQgdG8gbG9vcCB3aXRoaW5nIHRoZSBzYW1lIGJhdGNoICopXG4gIGxldCB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlID1cbiAgICBsZXQgb25lX21zZyA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBsZXQgdHdvX21zZyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbXNnOyBvbmVfbXNnIF0gaW5cbiAgICB3cml0ZSB0d29fbXNnXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZSA9XG4gICAgbGV0IG9uZV9tc2cgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgbGV0IHR3b19tc2cgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21zZzsgb25lX21zZyBdIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ3N0cmluZy5sZW5ndGggdHdvX21zZyAtIDEgZG9cbiAgICAgIHdyaXRlIChCaWdzdHJpbmcuc3ViIHR3b19tc2cgfnBvczppIH5sZW46MSk7XG4gICAgICB3YWl0ICgpXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzFfY2h1bmsgKHZlcmlmeSAxIDEpXG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZiAodmVyaWZ5IDIgMSlcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rICh2ZXJpZnkgMSAzKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ18xX2NodW5rICh2ZXJpZnkgMiAxKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgKHZlcmlmeSAyIDM0KVxuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGYgKHZlcmlmeSA3IDQwKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJjYW4gY2FsbCByZWFkX2ZvcmV2ZXIgbXVsdGlwbGUgdGltZXNcIiA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoICgpID0gKCkgaW5cbiAgICBsZXQgd3JpdGUgeCA9IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSBpblxuICAgIGxldCBudW0gPSByZWYgMCBpblxuICAgIGxldCBzdG9wX2FmdGVyX29uX21lc3NhZ2UgYnVmZmVyIH5wb3MgfmxlbiA9XG4gICAgICBpbmNyIG51bTtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IEJpZ3N0cmluZy50XSAoQmlnc3RyaW5nLnN1YiBidWZmZXIgfnBvcyB+bGVuKSB+ZXhwZWN0OmRlZmF1bHRfbWVzc2FnZTtcbiAgICAgIEhhbmRsZXJfcmVzdWx0LlN0b3AgKClcbiAgICBpblxuICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgUGlwZS5jbG9zZSB3cml0ZXI7XG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChsZXQlYmluZCB4ID1cbiAgICAgICAgIFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICAgICAgIHJlYWRlclxuICAgICAgICAgICB+b25fbWVzc2FnZTpzdG9wX2FmdGVyX29uX21lc3NhZ2VcbiAgICAgICAgICAgfm9uX2VuZF9vZl9iYXRjaFxuICAgICAgIGluXG4gICAgICAgYXNzZXJ0IChSZXN1bHQuaXNfb2sgeCk7XG4gICAgICAgbGV0JWJpbmQgeCA9XG4gICAgICAgICBUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgICAgICByZWFkZXJcbiAgICAgICAgICAgfm9uX21lc3NhZ2U6c3RvcF9hZnRlcl9vbl9tZXNzYWdlXG4gICAgICAgICAgIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgICAgICBpblxuICAgICAgIGFzc2VydCAoUmVzdWx0LmlzX29rIHgpO1xuICAgICAgIERlZmVycmVkLnVuaXQpO1xuICAgIHdhaXQgKCk7XG4gICAgWyV0ZXN0X3Jlc3VsdDogSW50LnRdIH5leHBlY3Q6MiAhbnVtXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChTdHJpbmdfcGlwZV9yZWFkZXIpKVxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfYmlnc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuXG5tb2R1bGUgQmVuY2hfcmVhZGVyIChUcmFuc3BvcnRfcmVhZGVyIDogVHJhbnNwb3J0X3JlYWRlcikgPSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRfcmVhZGVyLkZvcl90ZXN0aW5nXG5cbiAgbGV0IGRlZmF1bHRfbWVzc2FnZSA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJGT09CQVIxMjNcIlxuXG4gIGxldCBjcmVhdGVfbWVzc2FnZV9idWYgKG1lc3NhZ2UgOiBCaWdzdHJpbmcudCkgOiBCaWdzdHJpbmcudCA9XG4gICAgbGV0IG1lc3NhZ2VfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlIGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgKEhlYWRlci5sZW5ndGggKyBtZXNzYWdlX2xlbikgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIG1lc3NhZ2VfbGVuO1xuICAgIEJpZ3N0cmluZy5ibGl0XG4gICAgICB+c3JjOm1lc3NhZ2VcbiAgICAgIH5kc3Q6YnVmXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpIZWFkZXIubGVuZ3RoXG4gICAgICB+bGVuOm1lc3NhZ2VfbGVuO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWVzc2FnZSAoKSA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2VcbiAgbGV0IG9uZV9tZXNzYWdlID0gY3JlYXRlX21lc3NhZ2UgKClcbiAgbGV0IHR3b19tZXNzYWdlcyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbWVzc2FnZTsgb25lX21lc3NhZ2UgXVxuXG4gIGxldCBvbmVfbWVzc2FnZV9wMSwgb25lX21lc3NhZ2VfcDIgPVxuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBvbmVfbWVzc2FnZSB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgb25lX21lc3NhZ2UgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgcGFydDEsIHBhcnQyXG4gIDs7XG5cbiAgbGV0IG9uX21lc3NhZ2UgX2J1ZmZlciB+cG9zOl8gfmxlbjpfID0gSGFuZGxlcl9yZXN1bHQuQ29udGludWVcbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCAoKSA9ICgpXG4gIGxldCB3YWl0ICgpID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5FeHBlcnQucnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKVxuXG4gIGxldCBydW5fdGVzdCBydW4gPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCA9IG9uX2VuZF9vZl9iYXRjaCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgZm9yIF8gPSAwIHRvIDEwMCBkb1xuICAgICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpXG4gICAgZG9uZTtcbiAgICB3YWl0ICgpXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSBvbmVfbWVzc2FnZVxuXG4gICgqIE5vdCBlbm91Z2ggZGF0YSwgd2UgbmVlZCB0byBhY2N1bXVsYXRlICopXG4gIGxldCBidWYgPSBjcmVhdGVfbWVzc2FnZV9idWYgKEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJcIilcblxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCAoQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSk7XG4gICAgd3JpdGUgYnVmO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AxO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AyXG4gIDs7XG5cbiAgKCogVG9vIG11Y2ggZGF0YSwgd2UgbmVlZCB0byBsb29wIHdpdGhpbmcgdGhlIHNhbWUgYmF0Y2ggKilcbiAgbGV0IHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSB0d29fbWVzc2FnZXNcblxuICBsZXQgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlID1cbiAgICBmb3IgaSA9IDAgdG8gQmlnc3RyaW5nLmxlbmd0aCB0d29fbWVzc2FnZXMgLSAxIGRvXG4gICAgICB3cml0ZSAoQmlnc3RyaW5nLnN1YiB0d29fbWVzc2FnZXMgfnBvczppIH5sZW46MSlcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMV9tc2dfMV9jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfMV9jaHVua1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGVcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8xX21zZ18zX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnXzFfY2h1bmtcbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfb25lX2J5dGVcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVua1xuXG4gIGxldCViZW5jaCBcIm11bHRpXCIgPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcbmVuZFxuXG5sZXQlYmVuY2hfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIEJlbmNoX3JlYWRlciAoU3RyaW5nX3BpcGVfcmVhZGVyKSlcbmxldCViZW5jaF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9iaWdzdHJpbmdcIiA9IChtb2R1bGUgQmVuY2hfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5pbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWxcblxubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWZXJzaW9uZWRfcnBjLkNvbm5lY3Rpb25fd2l0aF9tZW51LnRcblxuICAgIGxldCBycGNfY29ubmVjdGlvbiA9IFZlcnNpb25lZF9ycGMuQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgKHJwY19jb25uZWN0aW9uIHQpXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gUnBjLkNvbm5lY3Rpb24uaXNfY2xvc2VkIChycGNfY29ubmVjdGlvbiB0KVxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgKHJwY19jb25uZWN0aW9uIHQpXG4gIGVuZClcblxubW9kdWxlIFJwYyA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFJwYy5Db25uZWN0aW9uLnRcblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgdFxuICAgIGxldCBpc19jbG9zZWQgdCA9IFJwYy5Db25uZWN0aW9uLmlzX2Nsb3NlZCB0XG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCB0XG4gIGVuZClcbiIsIm1vZHVsZSBScGMgPSBScGNcbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gVmVyc2lvbmVkX3JwY1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxubW9kdWxlIFBpcGVfdHJhbnNwb3J0ID0gUGlwZV90cmFuc3BvcnRcbm1vZHVsZSBScGNfZXJyb3IgPSBScGNfZXJyb3Jcbm1vZHVsZSBScGNfcmVzdWx0ID0gUnBjX3Jlc3VsdFxubW9kdWxlIFJwY19zaGFwZXMgPSBScGNfc2hhcGVzXG5tb2R1bGUgT3Jfbm90X2F1dGhvcml6ZWQgPSBPcl9ub3RfYXV0aG9yaXplZFxuXG5tb2R1bGUgUnBjX21ldGFkYXRhIDpcbiAgbW9kdWxlIHR5cGUgb2YgUnBjX21ldGFkYXRhIHdpdGggbW9kdWxlIFByaXZhdGUgOj0gUnBjX21ldGFkYXRhLlByaXZhdGUgPVxuICBScGNfbWV0YWRhdGFcblxubW9kdWxlIEFzeW5jX3JwY19rZXJuZWxfc3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBScGMuU3RhYmxlXG5lbmRcblxubW9kdWxlIEFzeW5jX3JwY19rZXJuZWxfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29ubmVjdGlvbiA9IENvbm5lY3Rpb25cbiAgbW9kdWxlIFByb3RvY29sID0gUHJvdG9jb2xcbiAgbW9kdWxlIFRyYW5zcG9ydCA9IFRyYW5zcG9ydFxuXG4gIGxldCBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0ID0gQ29ubmVjdGlvbi5kZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0XG5lbmRcbiIsIm9wZW4gU3RyaW5nXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxuXG4oKiBOb3QgdGFpbCByZWN1cnNpdmUgZm9yIFwicGVyZm9ybWFuY2VcIiwgcGxlYXNlIGNob29zZSBsb3cgdmFsdWVzIGZvclxuICAgW21heF0uIFRoZSBpZGVhIGlzIHRoYXQgbWF4IGlzIGFsd2F5cyBzbWFsbCBiZWNhdXNlIGl0J3MgaGFyZFxuICAgY29kZSAqKVxubGV0IHNwbGl0X2NoYXJfYm91bmRlZCBzdHIgfm9uIH5tYXggPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW3N0cl1cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBvZmZzZXQgdG9rZW5zID1cbiAgICAgIGlmIHRva2VucyA9IG1heCAtIDFcbiAgICAgIHRoZW4gW3N1YiBzdHIgb2Zmc2V0IChsZW5ndGggc3RyIC0gb2Zmc2V0KV1cbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgICAgXCJcIjo6KGxvb3AgKG9mZnNldCArIDEpICh0b2tlbnMgKyAxKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgdG9rZW4gPSBTdHJpbmcuc3ViIHN0ciBvZmZzZXQgKGluZGV4IC0gb2Zmc2V0KSBpblxuICAgICAgICAgICAgdG9rZW46Oihsb29wIChpbmRleCArIDEpICh0b2tlbnMgKyAxKSlcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gW3N1YiBzdHIgb2Zmc2V0IChsZW5ndGggc3RyIC0gb2Zmc2V0KV1cbiAgICBpbiBsb29wIDAgMFxuXG5sZXQgc3BsaXRfY2hhcl91bmJvdW5kZWQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKFwiXCI6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHN1YiBzdHIgKGluZGV4ICsgMSkgKG9mZnNldCAtIGluZGV4KSBpblxuICAgICAgICAgIGxvb3AgKHRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IChzdWIgc3RyIDAgKG9mZnNldCArIDEpKTo6YWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbmxldCBvZl9jaGFyID0gU3RyaW5nLm1ha2UgMVxuXG5sZXQgZnVsbF9zcGxpdCBzdHIgfm9uID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgc2VwID0gb2ZfY2hhciBvbiBpblxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChzZXA6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHN1YiBzdHIgKGluZGV4ICsgMSkgKG9mZnNldCAtIGluZGV4KSBpblxuICAgICAgICAgIGxvb3AgKHNlcDo6dG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgICAgdGhlbiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgICAgICBlbHNlIGFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG4oKiBjb3B5aW5nIGNvcmUncyBjb252ZW50aW9uIGZvciBTdHJpbmcuc3BsaXQgYnV0IHdpdGggYW4gb3B0aW9uYWwgbWF4XG4gICBhcmd1bWVudCAqKVxubGV0IHNwbGl0ID9tYXggcyB+b24gPVxuICBtYXRjaCBtYXggd2l0aFxuICB8IE5vbmUgLT4gc3BsaXRfY2hhcl91bmJvdW5kZWQgcyB+b25cbiAgfCBTb21lIG1heCAtPiAgICAgICAgICAgICAgICAgKCogYXNzZXJ0IChtYXggPCAxMDApOyAqKVxuICAgIHNwbGl0X2NoYXJfYm91bmRlZCBzIH5vbiB+bWF4XG5cbmxldCByaW5kZXhfZnJvbV9vbiBzIH5vZmZzZXQgfm9uID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgb24gcy5baV0gdGhlbiBpXG4gICAgZWxzZSBsb29wIChpIC0gMSlcbiAgaW4gbG9vcCBvZmZzZXRcblxubGV0IHRyaW1fbGVmdF9zdWIgcyB+cG9zIH5sZW4gfmNoYXJzID1cbiAgbGV0IHN0YXJ0X3BvcyA9XG4gICAgbGV0IGZpbmFsID0gcG9zICsgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGxhc3RfY2hhciBpID1cbiAgICAgIGlmIGkgPSBmaW5hbCB0aGVuIGxhc3RfY2hhclxuICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgY2hhcnMgcy5baV0gdGhlbiBsb29wIChpICsgMSkgKGkgKyAxKVxuICAgICAgZWxzZSBsYXN0X2NoYXJcbiAgICBpbiBsb29wIHBvcyBwb3NcbiAgaW5cbiAgbGV0IG5ld19sZW4gPSBsZW4gLSAoc3RhcnRfcG9zIC0gcG9zKSBpblxuICBTdHJpbmcuc3ViIHMgc3RhcnRfcG9zIG5ld19sZW5cblxubGV0IHNwbGl0X3RyaW1fbGVmdCBzdHIgfm9uIH50cmltID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb21fb24gc3RyIH5vZmZzZXQgfm9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSB0cmltX2xlZnRfc3ViIHN0ciB+cG9zOihpbmRleCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB+bGVuOihvZmZzZXQgLSBpbmRleCkgfmNoYXJzOnRyaW0gaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAodHJpbV9sZWZ0X3N1YiBzdHIgfnBvczowIH5sZW46KG9mZnNldCArIDEpIH5jaGFyczp0cmltKTo6YWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbmV4Y2VwdGlvbiBGb3VuZF9pbnQgb2YgaW50XG5cbmxldCBmaXJzdF9jaGFyX25lIHMgYyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgcy5bMF0gPD4gY1xuXG5sZXQgdHJpbV9sZWZ0IHMgPVxuICBpZiBmaXJzdF9jaGFyX25lIHMgJyAnIHRoZW4gc1xuICBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIHRyeVxuICAgICAgZm9yIGk9MCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGlmIHMuW2ldIDw+ICcgJyB0aGVuIHJhaXNlIChGb3VuZF9pbnQgaSlcbiAgICAgIGRvbmU7XG4gICAgICBcIlwiXG4gICAgd2l0aCBGb3VuZF9pbnQgbm9uX3NwYWNlIC0+XG4gICAgICBzdWIgcyBub25fc3BhY2UgKGxlbiAtIG5vbl9zcGFjZSlcblxubGV0IHN1YnN0cl9lcSA/KHN0YXJ0PTApIHMgfnBhdHRlcm4gPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIC0gMSBkb1xuICAgICAgaWYgcy5baSArIHN0YXJ0XSA8PiBwYXR0ZXJuLltpXSB0aGVuIHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBfIC0+IGZhbHNlXG5cbmxldCBmaW5kX2Zyb20gPyhzdGFydD0wKSBzdHIgfnBhdHRlcm4gPVxuICB0cnlcbiAgICBmb3IgaSA9IHN0YXJ0IHRvIChTdHJpbmcubGVuZ3RoIHN0cikgLSAoU3RyaW5nLmxlbmd0aCBwYXR0ZXJuKSBkb1xuICAgICAgaWYgc3Vic3RyX2VxIH5zdGFydDppIHN0ciB+cGF0dGVybiB0aGVuXG4gICAgICAgIHJhaXNlIChGb3VuZF9pbnQgaSlcbiAgICBkb25lO1xuICAgIE5vbmVcbiAgd2l0aFxuICB8IEZvdW5kX2ludCBpIC0+IFNvbWUgaVxuICB8ICBfIC0+IE5vbmVcblxubGV0IGZpbmRfbWluIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgeCBmeCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBTb21lICh4LCBmeClcbiAgICB8IHgnOjp4cyAtPlxuICAgICAgbGV0IGZ4JyA9IGYgeCcgaW5cbiAgICAgIGlmIGZ4JyA8IGZ4IHRoZW4gbG9vcCB4JyBmeCcgeHNcbiAgICAgIGVsc2UgbG9vcCB4IGZ4IHhzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4Ojp4cyAtPiBsb29wIHggKGYgeCkgeHNcblxubGV0IHJlcGxhY2VfYWxsIHN0ciB+cGF0dGVybiB+d2l0aF8gPVxuICBsZXQgKHNsZW4sIHBsZW4pID0gU3RyaW5nLihsZW5ndGggc3RyLCBsZW5ndGggcGF0dGVybikgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgc2xlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKHNsZW4gLSBpKTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICB8IFNvbWUgaiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChqIC0gaSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICBsb29wIChqICsgcGxlbilcbiAgaW4gbG9vcCAwXG5cbmV4Y2VwdGlvbiBGb3VuZF9yZXBsYWNlIG9mIGludCAqIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgcmVwbGFjZV9hbGxfYXNzb2Mgc3RyIHRibCA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgc2xlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBzbGVuIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgIGVsc2VcbiAgICAgIGxldCByID1cbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IGUgPVxuICAgICAgICAgICAgZmluZF9taW4gdGJsIH5mOihmdW4gKHBhdHRlcm4sIHdpdGhfKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBmaW5kX2Zyb20gfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lICAgLT4gbWF4X2ludFxuICAgICAgICAgICAgICB8IFNvbWUgaiB3aGVuIGogPSBpIC0+IHJhaXNlIChGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykpXG4gICAgICAgICAgICAgIHwgU29tZSBqIC0+IGZvdW5kIDo9IHRydWU7IGopXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSAoKHBhdHRlcm4sIHdpdGhfKSwgaikgd2hlbiAhZm91bmQgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICB3aXRoIEZvdW5kX3JlcGxhY2UgKGosIHBhdHRlcm4sIHdpdGhfKSAtPiBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXylcbiAgICAgIGluXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKHNsZW4gLSBpKTtcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgICAgfCBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChqIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiB3aXRoXztcbiAgICAgICAgbG9vcCAoaiArIFN0cmluZy5sZW5ndGggcGF0dGVybilcbiAgaW4gbG9vcCAwXG5cbmxldCBpdGVyaSBmIGwgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeDo6eHMgLT4gKGYgaSB4KTsgbG9vcCAoc3VjYyBpKSB4c1xuICBpbiBsb29wIDAgbFxuXG5sZXQgb2ZfbGlzdCB4cyA9XG4gIGxldCBsID0gTGlzdC5sZW5ndGggeHMgaW5cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBpdGVyaSAoZnVuIGkgYyAtPiBCeXRlcy5zZXQgcyBpIGMpIHhzO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA9IC0xIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbG9vcCAocy5baV0gOjogYWNjKSAocHJlZCBpKVxuICBpbiBsb29wIFtdIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IGJ5dGVzIGkgYS4oaSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBieXRlc1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKFN0cmluZy5sZW5ndGggcykgKFN0cmluZy5nZXQgcylcblxuKCogcmlwcGVkIG9mZiBmcm9tIG9uZSBvZiBkYnVlbnpsaSdzIGxpYnMgKilcbmxldCBjdXQgcyB+b24gPVxuICBsZXQgc2VwX21heCA9IGxlbmd0aCBvbiAtIDEgaW5cbiAgaWYgc2VwX21heCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZ2V4dC5jdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICAgICgqIFdlIHJ1biBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gZW5kIHdpdGggW2ldIHRyeWluZyB0byBtYXRjaCB0aGVcbiAgICAgICAgIGZpcnN0IGNoYXJhY3RlciBvZiBbb25dIGluIFtzXS4gSWYgdGhpcyBtYXRjaGVzLCB3ZSB2ZXJpZnkgdGhhdFxuICAgICAgICAgdGhlIHdob2xlIFtvbl0gaXMgbWF0Y2hlZCB1c2luZyBba10uIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2VcbiAgICAgICAgIGNvbnRpbnVlIHRvIGxvb2sgZm9yIFtvbl0gd2l0aCBbaV0uIElmIGl0IG1hdGNoZXMgd2UgZXhpdCB0aGVcbiAgICAgICAgIGxvb3AgYW5kIGV4dHJhY3QgYSBzdWJzdHJpbmcgZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIHRoZVxuICAgICAgICAgcG9zaXRpb24gYmVmb3JlIHRoZSBbb25dIHdlIGZvdW5kIGFuZCBhbm90aGVyIGZyb20gdGhlIHBvc2l0aW9uXG4gICAgICAgICBhZnRlciB0aGUgW29uXSB3ZSBmb3VuZCB0byBlbmQgb2Ygc3RyaW5nLiBJZiBbaV0gaXMgc3VjaCB0aGF0IG5vXG4gICAgICAgICBzZXBhcmF0b3IgY2FuIGJlIGZvdW5kIHdlIGV4aXQgdGhlIGxvb3AgYW5kIHJldHVybiB0aGUgbm8gbWF0Y2hcbiAgICAgICAgIGNhc2UuICopXG4gICAgICB0cnlcbiAgICAgICAgd2hpbGUgKCFpICsgc2VwX21heCA8PSBzX21heCkgZG9cbiAgICAgICAgICAoKiBDaGVjayByZW1haW5pbmcgW29uXSBjaGFycyBtYXRjaCwgYWNjZXNzIHRvIHVuc2FmZSBzICghaSArICFrKSBpc1xuICAgICAgICAgICAgIGd1YXJhbnRlZWQgYnkgbG9vcCBpbnZhcmlhbnQuICopXG4gICAgICAgICAgaWYgdW5zYWZlX2dldCBzICFpIDw+IHVuc2FmZV9nZXQgb24gMCB0aGVuIGluY3IgaSBlbHNlIGJlZ2luXG4gICAgICAgICAgICBrIDo9IDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPD0gc2VwX21heCAmJiB1bnNhZmVfZ2V0IHMgKCFpICsgIWspID0gdW5zYWZlX2dldCBvbiAhaylcbiAgICAgICAgICAgIGRvIGluY3IgayBkb25lO1xuICAgICAgICAgICAgaWYgIWsgPD0gc2VwX21heCB0aGVuICgqIG5vIG1hdGNoICopIGluY3IgaSBlbHNlIHJhaXNlIEV4aXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgTm9uZSAoKiBubyBtYXRjaCBpbiB0aGUgd2hvbGUgc3RyaW5nLiAqKVxuICAgICAgd2l0aFxuICAgICAgfCBFeGl0IC0+ICgqIGkgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VwYXJhdG9yICopXG4gICAgICAgIGxldCBsZWZ0X2VuZCA9ICFpIC0gMSBpblxuICAgICAgICBsZXQgcmlnaHRfc3RhcnQgPSAhaSArIHNlcF9tYXggKyAxIGluXG4gICAgICAgIFNvbWUgKHN1YiBzIDAgKGxlZnRfZW5kICsgMSksXG4gICAgICAgICAgICAgIHN1YiBzIHJpZ2h0X3N0YXJ0IChzX21heCAtIHJpZ2h0X3N0YXJ0ICsgMSkpXG5cbmxldCByY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQucmN1dDogZW1wdHkgc2VwYXJhdG9yXCIgZWxzZVxuICAgIGxldCBzX21heCA9IGxlbmd0aCBzIC0gMSBpblxuICAgIGlmIHNfbWF4IDwgMCB0aGVuIE5vbmUgZWxzZVxuICAgICAgbGV0IGsgPSByZWYgMCBpblxuICAgICAgbGV0IGkgPSByZWYgc19tYXggaW5cbiAgICAgICgqIFdlIHJ1biBmcm9tIHRoZSBlbmQgb2YgW3NdIHRvIHRoZSBiZWdpbm5pbmcgd2l0aCBbaV0gdHJ5aW5nIHRvXG4gICAgICAgICBtYXRjaCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2VcbiAgICAgICAgIHZlcmlmeSB0aGF0IHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdICh3ZSBkbyB0aGF0XG4gICAgICAgICBiYWNrd2FyZHMpLiAgSWYgaXQgZG9lc24ndCBtYXRjaCB3ZSBjb250aW51ZSB0byBsb29rIGZvciBbb25dXG4gICAgICAgICB3aXRoIFtpXS4gIElmIGl0IG1hdGNoZXMgd2UgZXhpdCB0aGUgbG9vcCBhbmQgZXh0cmFjdCBhXG4gICAgICAgICBzdWJzdHJpbmcgZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlXG4gICAgICAgICBbb25dIHdlIGZvdW5kIGFuZCBhbm90aGVyIGZyb20gdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBbb25dIHdlXG4gICAgICAgICBmb3VuZCB0byBlbmQgb2Ygc3RyaW5nLiAgSWYgW2ldIGlzIHN1Y2ggdGhhdCBubyBzZXBhcmF0b3IgY2FuXG4gICAgICAgICBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoIGNhc2UuICopXG4gICAgICB0cnlcbiAgICAgICAgd2hpbGUgKCFpID49IHNlcF9tYXgpIGRvXG4gICAgICAgICAgaWYgdW5zYWZlX2dldCBzICFpIDw+IHVuc2FmZV9nZXQgb24gc2VwX21heCB0aGVuIGRlY3IgaSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAoKiBDaGVjayByZW1haW5pbmcgW29uXSBjaGFycyBtYXRjaCwgYWNjZXNzIHRvIHVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgIHMgKHNlcF9zdGFydCArICFrKSBpcyBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgICAgbGV0IHNlcF9zdGFydCA9ICFpIC0gc2VwX21heCBpblxuICAgICAgICAgICAgayA6PSBzZXBfbWF4IC0gMTtcbiAgICAgICAgICAgIHdoaWxlICghayA+PSAwICYmIHVuc2FmZV9nZXQgcyAoc2VwX3N0YXJ0ICsgIWspID0gdW5zYWZlX2dldCBvbiAhaylcbiAgICAgICAgICAgIGRvIGRlY3IgayBkb25lO1xuICAgICAgICAgICAgaWYgIWsgPj0gMCB0aGVuICgqIG5vIG1hdGNoICopIGRlY3IgaSBlbHNlIHJhaXNlIEV4aXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgTm9uZSAoKiBubyBtYXRjaCBpbiB0aGUgd2hvbGUgc3RyaW5nLiAqKVxuICAgICAgd2l0aFxuICAgICAgfCBFeGl0IC0+ICgqIGkgaXMgYXQgdGhlIGVuZCBvZiB0aGUgc2VwYXJhdG9yICopXG4gICAgICAgIGxldCBsZWZ0X2VuZCA9ICFpIC0gc2VwX21heCAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyAxIGluXG4gICAgICAgIFNvbWUgKHN1YiBzIDAgKGxlZnRfZW5kICsgMSksXG4gICAgICAgICAgICAgIHN1YiBzIHJpZ2h0X3N0YXJ0IChzX21heCAtIHJpZ2h0X3N0YXJ0ICsgMSkpXG5cbmxldCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggPVxuICBsZXQgcHJlZml4X2wgPSBTdHJpbmcubGVuZ3RoIHByZWZpeCBpblxuICBsZXQgc3RyaW5nX2wgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgcHJlZml4X2wgPiBzdHJpbmdfbCB0aGVuIE5vbmVcbiAgZWxzZVxuICAgIHRyeVxuICAgICAgZm9yIGkgPSAwIHRvIHByZWZpeF9sIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiBwcmVmaXguW2ldIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGRvbmU7XG4gICAgICBTb21lIChTdHJpbmcuc3ViIHMgcHJlZml4X2wgKHN0cmluZ19sIC0gcHJlZml4X2wpKVxuICAgIHdpdGggXyAtPiBOb25lXG5cbmxldCBkcm9wIHMgbiA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIG4gPj0gbFxuICB0aGVuIFwiXCJcbiAgZWxzZSBTdHJpbmcuc3ViIHMgbiAobCAtIG4pXG5cbmxldCB0YWtlIHMgbiA9XG4gIGlmIG4gPj0gU3RyaW5nLmxlbmd0aCBzXG4gIHRoZW4gc1xuICBlbHNlIFN0cmluZy5zdWIgcyAwIG5cbiIsInR5cGUgYmlnc3RyaW5nID1cbiAgKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxudHlwZSB0ID0gYmlnc3RyaW5nXG5cbmxldCBjcmVhdGUgc2l6ZSA9IEJpZ2FycmF5LihBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgc2l6ZSlcbmxldCBlbXB0eSAgICAgICA9IGNyZWF0ZSAwXG5cbm1vZHVsZSBCQTEgPSBCaWdhcnJheS5BcnJheTFcblxubGV0IGxlbmd0aCB0ID0gQkExLmRpbSB0XG5cbmV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbmV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gY2hhciAgICAgICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgICAgICAgICAgICA6IHQgICAgICAgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgICA6IHQgICAgICAgLT4gc3JjX29mZjppbnQgLT4gQnl0ZXMudCAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXNcIiAgICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZnJvbV9ieXRlcyA6IEJ5dGVzLnQgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1wiICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1wiICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcCA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wX3N0cmluZyA6IHQgLT4gaW50IC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jaHIgOiB0IC0+IGludCAtPiBjaGFyIC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNoclwiIFtAQG5vYWxsb2NdXG5cbmxldCBzdWIgdCB+b2ZmIH5sZW4gPVxuICBCQTEuc3ViIHQgb2ZmIGxlblxuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHMgb3AgYnVmZmVyX2xlbiBvZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWZmZXJfbGVuOiAlZCwgb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBidWZmZXJfbGVuIG9mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19ibGl0IG9wIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBzcmNfbGVuOiAlZCwgc3JjX29mZjogJWQsIGRzdF9sZW46ICVkLCBkc3Rfb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzX21lbWNtcCBvcCBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IGJ1ZjFfbGVuOiAlZCwgYnVmMV9vZmY6ICVkLCBidWYyX2xlbjogJWQsIGJ1ZjJfb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbigqIEEgbm90ZSBvbiBib3VuZHMgY2hlY2tpbmcuXG4gKlxuICogVGhlIGNvZGUgc2hvdWxkIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgYmxpdCBkb2Vzbid0XG4gKiBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlcjpcbiAqXG4gKiAgIHtbb2ZmICsgbGVuIDw9IGJ1ZmZlcl9sZW5dfVxuICpcbiAqIEhvd2V2ZXIsIHRoaXMgbWF5IGxlYWQgdG8gYW4gaW50ZWdlciBvdmVyZmxvdyBmb3IgbGFyZ2UgdmFsdWVzIG9mIFtvZmZdLFxuICogZS5nLiwgW21heF9pbnRdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBjb21wYXJpc29uIHRvIHJldHVybiBbdHJ1ZV0gd2hlbiBpdFxuICogc2hvdWxkIHJlYWxseSByZXR1cm4gW2ZhbHNlXS5cbiAqXG4gKiBBbiBlcXVpdmFsZW50IGNvbXBhcmlzb24gdGhhdCBkb2VzIG5vdCBydW4gaW50byB0aGlzIGludGVnZXIgb3ZlcmZsb3dcbiAqIHByb2JsZW0gaXM6XG4gKlxuICogICB7W2J1ZmZlcl9sZW4gLSBvZmYgPT4gbGVuXX1cbiAqXG4gKiBUaGlzIGlzIGNoZWNraW5nIHRoYXQgdGhlIGlucHV0IGJ1ZmZlciwgbGVzcyB0aGUgb2Zmc2V0LCBpcyBzdWZmaWNpZW50bHlcbiAqIGxvbmcgdG8gcGVyZm9ybSB0aGUgYmxpdC4gU2luY2UgdGhlIGV4cHJlc3Npb24gaXMgc3VidHJhY3RpbmcgW29mZl0gcmF0aGVyXG4gKiB0aGFuIGFkZGluZyBpdCwgaXQgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGUgb3ZlcmZsb3cgdGhhdCB0aGUgcHJldmlvdXNcbiAqIGluZXF1YWxpdHkgZGlkLiBBcyBsb25nIGFzIHRoZXJlIGlzIGEgY2hlY2sgdG8gZW5zdXJlIHRoYXQgW29mZl0gaXMgbm90XG4gKiBuZWdhdGl2ZSwgaXQgd29uJ3QgdW5kZXJmbG93IGVpdGhlci4gKilcblxubGV0IGNvcHkgdCB+b2ZmIH5sZW4gPVxuICBsZXQgYnVmZmVyX2xlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJjb3B5XCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCB0IH5zcmNfb2ZmOm9mZiBkc3QgfmRzdF9vZmY6MCB+bGVuO1xuICBkc3Rcbjs7XG5cbmxldCBzdWJzdHJpbmcgdCB+b2ZmIH5sZW4gPVxuICBsZXQgYnVmZmVyX2xlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJzdWJzdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHQgfnNyY19vZmY6MCBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiXG47O1xuXG5sZXQgb2Zfc3RyaW5nIH5vZmYgfmxlbiBzID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm9mX3N0cmluZ1wiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHMgfnNyY19vZmY6b2ZmIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBiXG47O1xuXG5sZXQgYmxpdCBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IFN0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IEJ5dGVzLmxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfZnJvbV9ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X3RvX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IEJ5dGVzLmxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBtZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IGxlbmd0aCBidWYyIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjFfb2ZmIDwgMCB8fCBidWYxX2xlbiAtIGJ1ZjFfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNtcCBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuXG47O1xuXG5sZXQgbWVtY21wX3N0cmluZyBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuID1cbiAgbGV0IGJ1ZjFfbGVuID0gbGVuZ3RoIGJ1ZjEgaW5cbiAgbGV0IGJ1ZjJfbGVuID0gU3RyaW5nLmxlbmd0aCBidWYyIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjJfb2ZmIDwgMCB8fCBidWYyX2xlbiAtIGJ1ZjJfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNociBidWYgYnVmX29mZiBjaHIgbGVuID1cbiAgbGV0IGJ1Zl9sZW4gPSBsZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm1lbWNoclwiIGJ1Zl9sZW4gYnVmX29mZiBsZW47XG4gIGlmIGJ1Zl9vZmYgPCAwIHx8IGJ1Zl9sZW4gLSBidWZfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY2hyIGJ1ZiBidWZfb2ZmIGNociBsZW5cblxuKCogU2FmZSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMyXCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0XCJcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjRcIlxuXG5tb2R1bGUgU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF8xNiBicyBvZmYgKGJzd2FwMTYgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgYnMgb2ZmIChic3dhcF9pbnQzMiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF8xNiBicyBvZmYgPVxuICAgIGJzd2FwMTYgKGNhbWxfYmlnc3RyaW5nX2dldF8xNiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQ2NCAoY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZilcblxuICBsZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgeCBvZmYgPVxuICAgICgoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcbmVuZFxuXG5sZXQgc2V0X2ludDE2X2xlLCBzZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2LCBjYW1sX2JpZ3N0cmluZ19zZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMTZcblxubGV0IHNldF9pbnQzMl9sZSwgc2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMiwgY2FtbF9iaWdzdHJpbmdfc2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzMyICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzMyXG5cbmxldCBzZXRfaW50NjRfbGUsIHNldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3NldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF82NCAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF82NFxuXG5sZXQgZ2V0X2ludDE2X2xlLCBnZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2LCBjYW1sX2JpZ3N0cmluZ19nZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMTZcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCB4IG9mZiA9XG4gICgoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUsIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlICA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5nZXRfaW50MTZfc2lnbl9leHRlbmRlZCAgLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXBcbiAgZWxzZSBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAsIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRcblxubGV0IGdldF9pbnQzMl9sZSwgZ2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzMyXG5cbmxldCBnZXRfaW50NjRfbGUsIGdldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjQsIGNhbWxfYmlnc3RyaW5nX2dldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF82NCAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF82NFxuXG4oKiBVbnNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcblxubW9kdWxlIFVTd2FwID0gc3RydWN0XG4gIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgYnMgb2ZmIChic3dhcF9pbnQzMiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IGJzIG9mZiAoYnN3YXBfaW50NjQgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiBicyBvZmYgPVxuICAgIGJzd2FwMTYgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZiA9XG4gICAgYnN3YXBfaW50MzIgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgYnMgb2ZmKVxuZW5kXG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2xlLCB1bnNhZmVfc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9sZSwgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfbGUsIHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlLCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlIHggb2ZmID1cbiAgKCh1bnNhZmVfZ2V0X2ludDE2X2xlIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9iZSB4IG9mZiApIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSwgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGUsIHVuc2FmZV9nZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4iLCJ0eXBlICdhIHN0YXRlID1cbiAgfCBQYXJ0aWFsIG9mICdhIHBhcnRpYWxcbiAgfCBEb25lICAgIG9mIGludCAqICdhXG4gIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG5hbmQgJ2EgcGFydGlhbCA9XG4gIHsgY29tbWl0dGVkIDogaW50XG4gIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHN0YXRlIH1cblxuXG5sZXQgc3RhdGVfdG9fb3B0aW9uIHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpIC0+IFNvbWUgdlxuICB8IEZhaWwgXyAgICAgLT4gTm9uZVxuICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuXG5sZXQgZmFpbF90b19zdHJpbmcgbWFya3MgZXJyID1cbiAgU3RyaW5nLmNvbmNhdCBcIiA+IFwiIG1hcmtzIF4gXCI6IFwiIF4gZXJyXG5cbmxldCBzdGF0ZV90b19yZXN1bHQgeCA9IG1hdGNoIHggd2l0aFxuICB8IERvbmUoXywgdikgICAgICAgICAgLT4gT2sgdlxuICB8IFBhcnRpYWwgXyAgICAgICAgICAgLT4gRXJyb3IgXCJpbmNvbXBsZXRlIGlucHV0XCJcbiAgfCBGYWlsKF8sIG1hcmtzLCBlcnIpIC0+IEVycm9yIChmYWlsX3RvX3N0cmluZyBtYXJrcyBlcnIpXG4iLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbnR5cGUgdCA9XG4gIHsgbXV0YWJsZSBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDogaW50XG4gIDsgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyAgICAgICAgIDogaW50XG4gIDsgb2ZmICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50XG4gIDsgbGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50XG4gIDsgYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDogQmlnc3RyaW5nYWYudFxuICB9XG5cbmxldCBjcmVhdGUgYnVmZmVyIH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzID1cbiAgeyBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gY29tbWl0dGVkX2J5dGVzXG4gIDsgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IG9mZlxuICA7IGxlblxuICA7IGJ1ZmZlciB9XG5cbmxldCBsZW5ndGggICAgICAgICAgICAgICAgIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgKyB0LmxlblxubGV0IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgdCA9IHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xubGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCA9IHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgY29tbWl0dGVkX2J5dGVzX2Rpc2NyZXBhbmN5IHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgLSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCAgdCA9IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0XG5cbmxldCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IHQubGVuIC0gYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgdFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCArIHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0ID0gbGVuZ3RoIHQpO1xuICBhc3NlcnQgKHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCAtIGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICB0ID0gYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgdCk7XG47O1xuXG5sZXQgb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyA9XG4gIHQub2ZmICsgcG9zIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5cbmxldCBhcHBseSB0IHBvcyBsZW4gfmYgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBmIHQuYnVmZmVyIH5vZmYgfmxlblxuXG5sZXQgdW5zYWZlX2dldF9jaGFyIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldCB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IGNvdW50X3doaWxlIHQgcG9zIH5mID1cbiAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gIGxldCBvZmYgICAgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIGxldCBpICAgICAgPSByZWYgb2ZmIGluXG4gIGxldCBsaW1pdCAgPSB0Lm9mZiArIHQubGVuIGluXG4gIHdoaWxlICFpIDwgbGltaXQgJiYgZiAoQmlnc3RyaW5nYWYudW5zYWZlX2dldCBidWZmZXIgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gICFpIC0gb2ZmXG47O1xuXG5sZXQgY29tbWl0IHQgcG9zID1cbiAgdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIDwtIHBvc1xuOztcbiIsIm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gICAgfCBMYXp5ICAgIG9mICdhIHQgTGF6eS50XG4gICAgfCBEb25lICAgIG9mIGludCAqICdhXG4gICAgfCBGYWlsICAgIG9mIGludCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgYW5kICdhIHBhcnRpYWwgPVxuICAgIHsgY29tbWl0dGVkIDogaW50XG4gICAgOyBjb250aW51ZSAgOiBCaWdzdHJpbmdhZi50IC0+IG9mZjppbnQgLT4gbGVuOmludCAtPiBNb3JlLnQgLT4gJ2EgdCB9XG5cbmVuZFxudHlwZSAnYSB3aXRoX3N0YXRlID0gSW5wdXQudCAtPiAgaW50IC0+IE1vcmUudCAtPiAnYVxuXG50eXBlICdhIGZhaWx1cmUgPSAoc3RyaW5nIGxpc3QgLT4gc3RyaW5nIC0+ICdhIFN0YXRlLnQpIHdpdGhfc3RhdGVcbnR5cGUgKCdhLCAncikgc3VjY2VzcyA9ICgnYSAtPiAnciBTdGF0ZS50KSB3aXRoX3N0YXRlXG5cbnR5cGUgJ2EgdCA9XG4gIHsgcnVuIDogJ3IuICgnciBmYWlsdXJlIC0+ICgnYSwgJ3IpIHN1Y2Nlc3MgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZSB9XG5cbmxldCBmYWlsX2sgICAgaW5wdXQgcG9zIF8gbWFya3MgbXNnID1cbiAgU3RhdGUuRmFpbChwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCBtYXJrcywgbXNnKVxubGV0IHN1Y2NlZWRfayBpbnB1dCBwb3MgXyAgICAgICB2ICAgPVxuICBTdGF0ZS5Eb25lKHBvcyAtIElucHV0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgaW5wdXQsIHYpXG5cbmxldCByZWMgdG9fZXhwb3J0ZWRfc3RhdGUgPSBmdW5jdGlvblxuICB8IFN0YXRlLlBhcnRpYWwge2NvbW1pdHRlZDtjb250aW51ZX0gLT5cbiAgICAgRXhwb3J0ZWRfc3RhdGUuUGFydGlhbFxuICAgICAgIHsgY29tbWl0dGVkXG4gICAgICAgOyBjb250aW51ZSA9XG4gICAgICAgICAgIGZ1biBicyB+b2ZmIH5sZW4gbW9yZSAtPlxuICAgICAgICAgICB0b19leHBvcnRlZF9zdGF0ZSAoY29udGludWUgYnMgfm9mZiB+bGVuIG1vcmUpfVxuICB8IFN0YXRlLkRvbmUgKGkseCkgLT4gRXhwb3J0ZWRfc3RhdGUuRG9uZSAoaSx4KVxuICB8IFN0YXRlLkZhaWwgKGksIHNsLCBzKSAtPiBFeHBvcnRlZF9zdGF0ZS5GYWlsIChpLCBzbCwgcylcbiAgfCBTdGF0ZS5MYXp5IHggLT4gdG9fZXhwb3J0ZWRfc3RhdGUgKExhenkuZm9yY2UgeClcblxubGV0IHBhcnNlIHAgPVxuICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgQmlnc3RyaW5nYWYuZW1wdHkgfmNvbW1pdHRlZF9ieXRlczowIH5vZmY6MCB+bGVuOjAgaW5cbiAgdG9fZXhwb3J0ZWRfc3RhdGUgKHAucnVuIGlucHV0IDAgSW5jb21wbGV0ZSBmYWlsX2sgc3VjY2VlZF9rKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nIHAgaW5wdXQgPVxuICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgaW5wdXQgfmNvbW1pdHRlZF9ieXRlczowIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggaW5wdXQpIGluXG4gIEV4cG9ydGVkX3N0YXRlLnN0YXRlX3RvX3Jlc3VsdCAodG9fZXhwb3J0ZWRfc3RhdGUgKHAucnVuIGlucHV0IDAgQ29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaykpXG5cbm1vZHVsZSBNb25hZCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuIHYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgdlxuICAgIH1cblxuICBsZXQgZmFpbCBtc2cgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgX3N1Y2MgLT5cbiAgICAgIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gbXNnXG4gICAgfVxuXG4gIGxldCAoPj49KSBwIGYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIHYgPSAoZiB2KS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPj58KSBwIGYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIHYgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIChmIHYpIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPCQ+KSBmIG0gPVxuICAgIG0gPj58IGZcblxuICBsZXQgKDwqPikgZiBtID1cbiAgICAoKiBmID4+PSBmdW4gZiAtPiBtID4+fCBmICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzAgaW5wdXQwIHBvczAgbW9yZTAgZiA9XG4gICAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtID0gc3VjYyBpbnB1dDEgcG9zMSBtb3JlMSAoZiBtKSBpblxuICAgICAgICBtLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgZi5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5cbiAgbGV0IGxpZnQgZiBtID1cbiAgICBmIDwkPiBtXG5cbiAgbGV0IGxpZnQyIGYgbTEgbTIgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID0gc3VjYyBpbnB1dDIgcG9zMiBtb3JlMiAoZiBtMSBtMikgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgc3VjYyBpbnB1dDMgcG9zMyBtb3JlMyAoZiBtMSBtMiBtMykgaW5cbiAgICAgICAgICBtMy5ydW4gaW5wdXQyIHBvczIgbW9yZTIgZmFpbCBzdWNjMyBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgbGlmdDQgZiBtMSBtMiBtMyBtNCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPVxuICAgICAgICAgIGxldCBzdWNjMyBpbnB1dDMgcG9zMyBtb3JlMyBtMyA9XG4gICAgICAgICAgICBsZXQgc3VjYzQgaW5wdXQ0IHBvczQgbW9yZTQgbTQgPVxuICAgICAgICAgICAgICBzdWNjIGlucHV0NCBwb3M0IG1vcmU0IChmIG0xIG0yIG0zIG00KSBpblxuICAgICAgICAgICAgbTQucnVuIGlucHV0MyBwb3MzIG1vcmUzIGZhaWwgc3VjYzQgaW5cbiAgICAgICAgICBtMy5ydW4gaW5wdXQyIHBvczIgbW9yZTIgZmFpbCBzdWNjMyBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgKCAqPikgYSBiID1cbiAgICAoKiBhID4+PSBmdW4gXyAtPiBiICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9IGIucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwqICkgYSBiID1cbiAgICAoKiBhID4+PSBmdW4geCAtPiBiID4+fCBmdW4gXyAtPiB4ICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzAgaW5wdXQwIHBvczAgbW9yZTAgeCA9XG4gICAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBfID0gc3VjYyBpbnB1dDEgcG9zMSBtb3JlMSB4IGluXG4gICAgICAgIGIucnVuIGlucHV0MCBwb3MwIG1vcmUwIGZhaWwgc3VjYzFcbiAgICAgIGluXG4gICAgICBhLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MwIH1cbmVuZFxuXG5tb2R1bGUgQ2hvaWNlID0gc3RydWN0XG4gIGxldCAoPD8+KSBwIG1hcmsgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgKG1hcms6Om1hcmtzKSBtc2cgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5cbiAgbGV0ICg8fD4pIHAgcSA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgbWFya3MgbXNnID1cbiAgICAgICAgKCogVGhlIG9ubHkgdHdvIGNvbnN0cnVjdG9ycyB0aGF0IGludHJvZHVjZSBuZXcgZmFpbHVyZSBjb250aW51YXRpb25zIGFyZVxuICAgICAgICAgKiBbPD8+XSBhbmQgWzx8Pl0uIElmIHRoZSBpbml0aWFsIGlucHV0IHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB0aGUgbGVuZ3RoXG4gICAgICAgICAqIG9mIHRoZSBjb21taXR0ZWQgaW5wdXQsIHRoZW4gY2FsbGluZyB0aGUgZmFpbHVyZSBjb250aW51YXRpb24gd2lsbFxuICAgICAgICAgKiBoYXZlIHRoZSBlZmZlY3Qgb2YgdW53aW5kaW5nIGFsbCBjaG9pY2VzIGFuZCBjb2xsZWN0aW5nIG1hcmtzIGFsb25nXG4gICAgICAgICAqIHRoZSB3YXkuICopXG4gICAgICAgIGlmIHBvcyA8IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnIHRoZW5cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUgbWFya3MgbXNnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBxLnJ1biBpbnB1dCcgcG9zIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCcgc3VjY1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTW9uYWRfdXNlX2Zvcl9kZWJ1Z2dpbmcgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IE1vbmFkLnJldHVyblxuICBsZXQgZmFpbCAgID0gTW9uYWQuZmFpbFxuICBsZXQgKD4+PSkgID0gTW9uYWQuKD4+PSlcblxuICBsZXQgKD4+fCkgbSBmID0gbSA+Pj0gZnVuIHggLT4gcmV0dXJuIChmIHgpXG5cbiAgbGV0ICg8JD4pIGYgbSA9IG0gPj58IGZcbiAgbGV0ICg8Kj4pIGYgbSA9IGYgPj49IGZ1biBmIC0+IG0gPj58IGZcblxuICBsZXQgbGlmdCAgPSAoPj58KVxuICBsZXQgbGlmdDIgZiBtMSBtMiAgICAgICA9IGYgPCQ+IG0xIDwqPiBtMlxuICBsZXQgbGlmdDMgZiBtMSBtMiBtMyAgICA9IGYgPCQ+IG0xIDwqPiBtMiA8Kj4gbTNcbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zIDwqPiBtNFxuXG4gIGxldCAoICo+KSBhIGIgPSBhID4+PSBmdW4gXyAtPiBiXG4gIGxldCAoPCogKSBhIGIgPSBhID4+PSBmdW4geCAtPiBiID4+fCBmdW4gXyAtPiB4XG5lbmRcbiIsInR5cGUgdCA9XG4gIHsgbXV0YWJsZSBidWYgOiBCaWdzdHJpbmdhZi50XG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludCB9XG5cbmxldCBvZl9iaWdzdHJpbmcgfm9mZiB+bGVuIGJ1ZiA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKEJpZ3N0cmluZ2FmLmxlbmd0aCBidWYgPj0gbGVuIC0gb2ZmKTtcbiAgeyBidWY7IG9mZjsgbGVuIH1cblxubGV0IGNyZWF0ZSBsZW4gPVxuICBvZl9iaWdzdHJpbmcgfm9mZjowIH5sZW46MCAoQmlnc3RyaW5nYWYuY3JlYXRlIGxlbilcblxubGV0IHdyaXRhYmxlX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSB0LmxlblxuXG5sZXQgdHJhaWxpbmdfc3BhY2UgdCA9XG4gIEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiAtICh0Lm9mZiArIHQubGVuKVxuXG5sZXQgY29tcHJlc3MgdCA9XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIHQuYnVmIH5kc3Rfb2ZmOjAgfmxlbjp0LmxlbjtcbiAgdC5vZmYgPC0gMFxuXG5sZXQgZ3JvdyB0IHRvX2NvcHkgPVxuICBsZXQgb2xkX2xlbiA9IEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIGxldCBzcGFjZSA9IHdyaXRhYmxlX3NwYWNlIHQgaW5cbiAgd2hpbGUgc3BhY2UgKyAhbmV3X2xlbiAtIG9sZF9sZW4gPCB0b19jb3B5IGRvXG4gICAgbmV3X2xlbiA6PSAoMyAqICFuZXdfbGVuKSAvIDJcbiAgZG9uZTtcbiAgbGV0IG5ld19idWYgPSBCaWdzdHJpbmdhZi5jcmVhdGUgIW5ld19sZW4gaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgdC5idWYgfnNyY19vZmY6dC5vZmYgbmV3X2J1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQuYnVmIDwtIG5ld19idWY7XG4gIHQub2ZmIDwtIDBcblxubGV0IGVuc3VyZSB0IHRvX2NvcHkgPVxuICBpZiB0cmFpbGluZ19zcGFjZSB0IDwgdG9fY29weSB0aGVuXG4gICAgaWYgd3JpdGFibGVfc3BhY2UgdCA+PSB0b19jb3B5XG4gICAgdGhlbiBjb21wcmVzcyB0XG4gICAgZWxzZSBncm93IHQgdG9fY29weVxuXG5sZXQgd3JpdGVfcG9zIHQgPVxuICB0Lm9mZiArIHQubGVuXG5cbmxldCBmZWVkX3N0cmluZyB0IH5vZmYgfmxlbiBzdHIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHN0ciA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHN0ciB+c3JjX29mZjpvZmYgdC5idWYgfmRzdF9vZmY6KHdyaXRlX3BvcyB0KSB+bGVuO1xuICB0LmxlbiA8LSB0LmxlbiArIGxlblxuXG5sZXQgZmVlZF9iaWdzdHJpbmcgdCB+b2ZmIH5sZW4gYiA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKEJpZ3N0cmluZ2FmLmxlbmd0aCBiID49IGxlbiAtIG9mZik7XG4gIGVuc3VyZSB0IGxlbjtcbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgYiB+c3JjX29mZjpvZmYgdC5idWYgfmRzdF9vZmY6KHdyaXRlX3BvcyB0KSB+bGVuO1xuICB0LmxlbiA8LSB0LmxlbiArIGxlblxuXG5sZXQgZmVlZF9pbnB1dCB0ID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nICAgIHMgLT4gZmVlZF9zdHJpbmcgICAgdCB+b2ZmOjAgfmxlbjooU3RyaW5nICAgICAubGVuZ3RoIHMpIHNcbiAgfCBgQmlnc3RyaW5nIGIgLT4gZmVlZF9iaWdzdHJpbmcgdCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGIpIGJcblxubGV0IHNoaWZ0IHQgbiA9XG4gIGFzc2VydCAodC5sZW4gPj0gbik7XG4gIHQub2ZmIDwtIHQub2ZmICsgbjtcbiAgdC5sZW4gPC0gdC5sZW4gLSBuXG5cbmxldCBmb3JfcmVhZGluZyB7IGJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIEJpZ3N0cmluZ2FmLnN1YiB+b2ZmIH5sZW4gYnVmXG5cbm1vZHVsZSBVbmNvbnN1bWVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBidWYgOiBCaWdzdHJpbmdhZi50XG4gICAgOyBvZmYgOiBpbnRcbiAgICA7IGxlbiA6IGludCB9XG5lbmRcblxubGV0IHVuY29uc3VtZWQgPyhzaGlmdD0wKSB7IGJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIGFzc2VydCAobGVuID49IHNoaWZ0KTtcbiAgeyBVbmNvbnN1bWVkLmJ1Zjsgb2ZmID0gb2ZmICsgc2hpZnQ7IGxlbiA9IGxlbiAtIHNoaWZ0IH1cblxubGV0IG9mX3VuY29uc3VtZWQgeyBVbmNvbnN1bWVkLmJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbnR5cGUgdW5jb25zdW1lZCA9IFVuY29uc3VtZWQudCA9XG4gIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG9mZiA6IGludFxuICA7IGxlbiA6IGludCB9XG4iLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbm1vZHVsZSBCaWdhcnJheSA9IHN0cnVjdFxuICAoKiBEbyBub3QgYWNjZXNzIEJpZ2FycmF5IG9wZXJhdGlvbnMgZGlyZWN0bHkuIElmIGFueXRoaW5nJ3MgbmVlZGVkLCByZWZlciB0b1xuICAgKiB0aGUgaW50ZXJuYWwgQmlnc3RyaW5nIG1vZHVsZS4gKilcbmVuZFxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZ2FmLnRcblxuXG5tb2R1bGUgVW5idWZmZXJlZCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhcnNlclxuXG4gIGluY2x1ZGUgRXhwb3J0ZWRfc3RhdGVcblxuICB0eXBlIG1vcmUgPSBNb3JlLnQgPVxuICAgIHwgQ29tcGxldGVcbiAgICB8IEluY29tcGxldGVcbmVuZFxuXG5pbmNsdWRlIFVuYnVmZmVyZWRcbmluY2x1ZGUgUGFyc2VyLk1vbmFkXG5pbmNsdWRlIFBhcnNlci5DaG9pY2VcblxubW9kdWxlIEJ1ZmZlcmVkID0gc3RydWN0XG4gIHR5cGUgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkID1cbiAgICB7IGJ1ZiA6IGJpZ3N0cmluZ1xuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuXG4gIHR5cGUgaW5wdXQgPVxuICAgIFsgYEJpZ3N0cmluZyBvZiBiaWdzdHJpbmdcbiAgICB8IGBTdHJpbmcgICAgb2Ygc3RyaW5nIF1cblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFBhcnRpYWwgb2YgKFsgaW5wdXQgfCBgRW9mIF0gLT4gJ2Egc3RhdGUpXG4gICAgfCBEb25lICAgIG9mIHVuY29uc3VtZWQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiB1bmNvbnN1bWVkICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuICBsZXQgZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIH5mIGJ1ZmZlcmluZyA9IGZ1bmN0aW9uXG4gICAgfCBVbmJ1ZmZlcmVkLlBhcnRpYWwgcCAgICAgICAgIC0+IFBhcnRpYWwgKGYgcClcbiAgICB8IFVuYnVmZmVyZWQuRG9uZShjb25zdW1lZCwgdikgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRG9uZSh1bmNvbnN1bWVkLCB2KVxuICAgIHwgVW5idWZmZXJlZC5GYWlsKGNvbnN1bWVkLCBtYXJrcywgbXNnKSAtPlxuICAgICAgbGV0IHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCB+c2hpZnQ6Y29uc3VtZWQgYnVmZmVyaW5nIGluXG4gICAgICBGYWlsKHVuY29uc3VtZWQsIG1hcmtzLCBtc2cpXG5cbiAgbGV0IHBhcnNlID8oaW5pdGlhbF9idWZmZXJfc2l6ZT0weDEwMDApIHAgPVxuICAgIGlmIGluaXRpYWxfYnVmZmVyX3NpemUgPCAxIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicGFyc2U6IGludmFsaWQgYXJndW1lbnQsIGluaXRpYWxfYnVmZmVyX3NpemUgPCAxXCI7XG4gICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5jcmVhdGUgaW5pdGlhbF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCByZWMgZiBwIGlucHV0ID1cbiAgICAgIEJ1ZmZlcmluZy5zaGlmdCBidWZmZXJpbmcgcC5jb21taXR0ZWQ7XG4gICAgICBsZXQgbW9yZSA6IE1vcmUudCA9XG4gICAgICAgIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgfCBgRW9mICAgICAgICAgICAgLT4gQ29tcGxldGVcbiAgICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgICAgSW5jb21wbGV0ZVxuICAgICAgaW5cbiAgICAgIGxldCBmb3JfcmVhZGluZyA9IEJ1ZmZlcmluZy5mb3JfcmVhZGluZyBidWZmZXJpbmcgaW5cbiAgICAgIHAuY29udGludWUgZm9yX3JlYWRpbmcgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBmb3JfcmVhZGluZykgbW9yZVxuICAgICAgfD4gZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIGJ1ZmZlcmluZyB+ZlxuICAgIGluXG4gICAgVW5idWZmZXJlZC5wYXJzZSBwXG4gICAgfD4gZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIGJ1ZmZlcmluZyB+ZlxuXG4gIGxldCBmZWVkIHN0YXRlIGlucHV0ID1cbiAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgfCBQYXJ0aWFsIGsgLT4gayBpbnB1dFxuICAgIHwgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgfCBgRW9mICAgLT4gc3RhdGVcbiAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcub2ZfdW5jb25zdW1lZCB1bmNvbnN1bWVkIGluXG4gICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgRmFpbChCdWZmZXJpbmcudW5jb25zdW1lZCBidWZmZXJpbmcsIG1hcmtzLCBtc2cpXG4gICAgICBlbmRcbiAgICB8IERvbmUodW5jb25zdW1lZCwgdikgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIERvbmUoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCB2KVxuICAgICAgZW5kXG5cbiAgbGV0IHN0YXRlX3RvX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBEb25lKF8sIHYpIC0+IFNvbWUgdlxuICAgIHwgUGFydGlhbCBfICAtPiBOb25lXG4gICAgfCBGYWlsIF8gICAgIC0+IE5vbmVcblxuICBsZXQgc3RhdGVfdG9fcmVzdWx0ID0gZnVuY3Rpb25cbiAgICB8IFBhcnRpYWwgXyAgICAgICAgICAgLT4gRXJyb3IgXCJpbmNvbXBsZXRlIGlucHV0XCJcbiAgICB8IERvbmUoXywgdikgICAgICAgICAgLT4gT2sgdlxuICAgIHwgRmFpbChfLCBtYXJrcywgbXNnKSAtPiBFcnJvciAoVW5idWZmZXJlZC5mYWlsX3RvX3N0cmluZyBtYXJrcyBtc2cpXG5cbiAgbGV0IHN0YXRlX3RvX3VuY29uc3VtZWQgPSBmdW5jdGlvblxuICAgIHwgRG9uZSh1bmNvbnN1bWVkLCBfKVxuICAgIHwgRmFpbCh1bmNvbnN1bWVkLCBfLCBfKSAtPiBTb21lIHVuY29uc3VtZWRcbiAgICB8IFBhcnRpYWwgXyAgICAgICAgICAgICAgLT4gTm9uZVxuXG5lbmRcblxuKCoqIEJFR0lOOiBnZXR0aW5nIGlucHV0ICopXG5cbmxldCByZWMgcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2MgPVxuICAoKiBbcHJvbXB0XSBzaG91bGQgb25seSBjYWxsIFtzdWNjXSBpZiBpdCBoYXMgcmVjZWl2ZWQgbW9yZSBpbnB1dC4gSWYgdGhlcmVcbiAgICogaXMgbm8gY2hhbmNlIHRoYXQgdGhlIGlucHV0IHdpbGwgZ3JvdywgaS5lLiwgW21vcmUgPSBDb21wbGV0ZV0sIHRoZW5cbiAgICogW3Byb21wdF0gc2hvdWxkIGNhbGwgW2ZhaWxdLiBPdGhlcndpc2UgKGluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbnB1dFxuICAgKiBoYXNuJ3QgZ3Jvd24gYnV0IFttb3JlID0gSW5jb21wbGV0ZV0ganVzdCBwcm9tcHQgYWdhaW4uICopXG4gIGxldCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgPSBJbnB1dC5wYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgaW5wdXQgaW5cbiAgbGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgICA9IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgICBpbnB1dCBpblxuICAoKiBUaGUgY29udGludWF0aW9uIHNob3VsZCBub3QgaG9sZCBhbnkgcmVmZXJlbmNlcyB0byBpbnB1dCBhYm92ZS4gKilcbiAgbGV0IGNvbnRpbnVlIGlucHV0IH5vZmYgfmxlbiBtb3JlID1cbiAgICBpZiBsZW4gPCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgZmFpbHdpdGggXCJwcm9tcHQ6IGlucHV0IHNocnVuayFcIjtcbiAgICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgaW5wdXQgfm9mZiB+bGVuIH5jb21taXR0ZWRfYnl0ZXM6cGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpblxuICAgIGlmIGxlbiA9IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0aGVuXG4gICAgICBtYXRjaCAobW9yZSA6IE1vcmUudCkgd2l0aFxuICAgICAgfCBDb21wbGV0ZSAgIC0+IGZhaWwgaW5wdXQgcG9zIE1vcmUuQ29tcGxldGVcbiAgICAgIHwgSW5jb21wbGV0ZSAtPiBwcm9tcHQgaW5wdXQgcG9zIGZhaWwgc3VjY1xuICAgIGVsc2VcbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmVcbiAgaW5cbiAgU3RhdGUuUGFydGlhbCB7IGNvbW1pdHRlZCA9IElucHV0LmJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IGlucHV0OyBjb250aW51ZSB9XG5cbmxldCBkZW1hbmRfaW5wdXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBtYXRjaCAobW9yZSA6IE1vcmUudCkgd2l0aFxuICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwibm90IGVub3VnaCBpbnB1dFwiXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnICgpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwibm90IGVub3VnaCBpbnB1dFwiIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgPVxuICBsZXQgcmVjIGdvID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsJyBzdWNjJyAtPlxuICAgICAgaWYgcG9zJyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0JyB0aGVuXG4gICAgICAgIHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpXG4gICAgICBlbHNlXG4gICAgICAgIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsJyBzdWNjJ1xuICAgIH1cbiAgaW5cbiAgKGRlbWFuZF9pbnB1dCAqPiBnbykucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjY1xuXG5sZXQgdW5zYWZlX2FwcGx5IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYpXG4gIH1cblxubGV0IHVuc2FmZV9hcHBseV9vcHQgbGVuIH5mID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+ZiB3aXRoXG4gICAgfCBFcnJvciBlIC0+IGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gZVxuICAgIHwgT2sgICAgeCAtPiBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgeFxuICB9XG5cbmxldCBlbnN1cmUgbiBwID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zICsgbiA8PSBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjY1xuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9IHAucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCBuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG4oKiogRU5EOiBnZXR0aW5nIGlucHV0ICopXG5cbmxldCBhdF9lbmRfb2ZfaW5wdXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSBmYWxzZVxuICAgIGVsc2UgbWF0Y2ggbW9yZSB3aXRoXG4gICAgfCBDb21wbGV0ZSAtPiBzdWNjIGlucHV0IHBvcyBtb3JlIHRydWVcbiAgICB8IEluY29tcGxldGUgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgZmFsc2VcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgdHJ1ZSBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbmRfb2ZfaW5wdXQgPVxuICBhdF9lbmRfb2ZfaW5wdXRcbiAgPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlICAtPiByZXR1cm4gKClcbiAgICB8IGZhbHNlIC0+IGZhaWwgXCJlbmRfb2ZfaW5wdXRcIlxuXG5sZXQgYWR2YW5jZSBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwiYWR2YW5jZVwiXG4gIGVsc2VcbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+IHN1Y2MgaW5wdXQgKHBvcyArIG4pIG1vcmUgKCkgfVxuICAgIGluXG4gICAgZW5zdXJlIG4gcFxuXG5sZXQgcG9zID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IHBvcyBtb3JlIHBvcyB9XG5cbmxldCBhdmFpbGFibGUgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoSW5wdXQubGVuZ3RoIGlucHV0IC0gcG9zKVxuICB9XG5cbmxldCBjb21taXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgSW5wdXQuY29tbWl0IGlucHV0IHBvcztcbiAgICBzdWNjIGlucHV0IHBvcyBtb3JlICgpIH1cblxuKCogRG8gbm90IHVzZSB0aGlzIGlmIFtwXSBjb250YWlucyBhIFtjb21taXRdLiAqKVxubGV0IHVuc2FmZV9sb29rYWhlYWQgcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdWNjJyBpbnB1dCcgXyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zIG1vcmUnIHYgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IHBlZWtfY2hhciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoU29tZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykpXG4gICAgZWxzZSBpZiBtb3JlID0gQ29tcGxldGUgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoU29tZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0JyBwb3MnKSlcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgTm9uZSBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbigqIFRoaXMgcGFyc2VyIGlzIHRvbyBpbXBvcnRhbnQgdG8gbm90IGJlIG9wdGltaXplZC4gRG8gYSBjdXN0b20gam9iLiAqKVxubGV0IHJlYyBwZWVrX2NoYXJfZmFpbCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dFxuICAgIHRoZW4gc3VjYyBpbnB1dCBwb3MgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcylcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPVxuICAgICAgICBwZWVrX2NoYXJfZmFpbC5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIDEgaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBzYXRpc2Z5IGYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIFByaW50Zi5rc3ByaW50ZiAoZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSkgXCJzYXRpc2Z5OiAlQ1wiIGNcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPVxuICAgICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJyBpblxuICAgICAgICBpZiBmIGNcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0JyAocG9zJyArIDEpIG1vcmUnIGNcbiAgICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgICBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgY2hhciBjID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyA9IGNcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgbm90X2NoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjJyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIGlmIGMgPD4gYydcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjJ1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcIm5vdCBjaGFyICVDXCIgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfY2hhciA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSAgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBpbnQ4IGkgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IENoYXIuY29kZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgaW5cbiAgICAgIGlmIGMgPSBpIGxhbmQgMHhmZlxuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJpbnQ4ICVkXCIgaSkgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfdWludDggPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIChDaGFyLmNvZGUgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfaW50OCA9XG4gICgqIGh0dHBzOi8vZ3JhcGhpY3Muc3RhbmZvcmQuZWR1L35zZWFuZGVyL2JpdGhhY2tzLmh0bWwjVmFyaWFibGVTaWduRXh0ZW5kUmlza3kgKilcbiAgbGV0IHMgPSBTeXMuaW50X3NpemUgLSA4IGluXG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKChDaGFyLmNvZGUgYyBsc2wgcykgYXNyIHMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgc2tpcCBmID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgaWYgZiAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcylcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoKVxuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwic2tpcFwiIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgcmVjIGNvdW50X3doaWxlIH5pbml0IH5mIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBsZW4gICAgICAgICA9IElucHV0LmNvdW50X3doaWxlIGlucHV0IChwb3MgKyBpbml0KSB+ZiBpblxuICAgIGxldCBpbnB1dF9sZW4gICA9IElucHV0Lmxlbmd0aCBpbnB1dCBpblxuICAgIGxldCBpbml0JyAgICAgICA9IGluaXQgKyBsZW4gaW5cbiAgICAoKiBDaGVjayBpZiB0aGUgbG9vcCB0ZXJtaW5hdGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICAgICAqIGJ1ZmZlci4gSWYgc28sIHRoZW4gcHJvbXB0IGZvciBhZGRpdGlvbmFsIGlucHV0IGFuZCBjb250aW51ZS4gKilcbiAgICBpZiBwb3MgKyBpbml0JyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGluaXQnKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgaW5pdCcgfmY6d2l0aF9idWZmZXIpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgKGNvdW50X3doaWxlIH5pbml0OmluaXQnIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgKHBvcycgKyBpbml0JykgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgICAgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgcmVjIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCBwb3MgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICAoKiBDaGVjayBpZiB0aGUgbG9vcCB0ZXJtaW5hdGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICAgICAqIGJ1ZmZlci4gSWYgc28sIHRoZW4gcHJvbXB0IGZvciBhZGRpdGlvbmFsIGlucHV0IGFuZCBjb250aW51ZS4gKilcbiAgICBpZiBsZW4gPCAxXG4gICAgdGhlblxuICAgICAgaWYgcG9zIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgICAgdGhlbiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICAoY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb3VudF93aGlsZTFcIlxuICAgICAgICBpblxuICAgICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gICAgZWxzZSBpZiBwb3MgKyBsZW4gPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmY6d2l0aF9idWZmZXIpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgKGNvdW50X3doaWxlIH5pbml0OmxlbiB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgbGVuKSBtb3JlJyAoSW5wdXQuYXBwbHkgaW5wdXQnIHBvcycgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgICAgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgc3RyaW5nXyBmIHMgPVxuICAoKiBYWFgoc2VsaW9wb3UpOiBJbmVmZmljaWVudC4gQ291bGQgY2hlY2sgcHJlZml4IGVxdWFsaXR5IHRvIHNob3J0LWNpcmN1aXRcbiAgICogdGhlIGlvLiAqKVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGVuc3VyZSAgbGVuICh1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZjooZnVuIGJ1ZmZlciB+b2ZmIH5sZW4gLT5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgd2hpbGUgIWkgPCBsZW4gJiYgQ2hhci5lcXVhbCAoZiAoQmlnc3RyaW5nYWYudW5zYWZlX2dldCBidWZmZXIgKG9mZiArICFpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZiAoU3RyaW5nLnVuc2FmZV9nZXQgcyAhaSkpXG4gICAgZG9cbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgbGVuID0gIWlcbiAgICB0aGVuIE9rIChCaWdzdHJpbmdhZi5zdWJzdHJpbmcgYnVmZmVyIH5vZmYgfmxlbilcbiAgICBlbHNlIEVycm9yIFwic3RyaW5nXCIpKVxuXG5sZXQgc3RyaW5nIHMgICAgPSBzdHJpbmdfIChmdW4geCAtPiB4KSBzXG5sZXQgc3RyaW5nX2NpIHMgPSBzdHJpbmdfIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IHNraXBfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOihmdW4gXyB+b2ZmOl8gfmxlbjpfIC0+ICgpKVxuXG5sZXQgdGFrZSBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZTogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mOkJpZ3N0cmluZ2FmLnN1YnN0cmluZylcblxubGV0IHRha2VfYmlnc3RyaW5nIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJ0YWtlX2JpZ3N0cmluZzogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mOkJpZ3N0cmluZ2FmLmNvcHkpXG5cbmxldCB0YWtlX2JpZ3N0cmluZ193aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuY29weVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUxIGYgPVxuICBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3RpbGwgZiA9XG4gIHRha2VfYmlnc3RyaW5nX3doaWxlIChmdW4gYyAtPiBub3QgKGYgYykpXG5cbmxldCBwZWVrX3N0cmluZyBuID1cbiAgdW5zYWZlX2xvb2thaGVhZCAodGFrZSBuKVxuXG5sZXQgdGFrZV93aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHRha2VfdGlsbCBmID1cbiAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgY2hvaWNlID8oZmFpbHVyZV9tc2c9XCJubyBtb3JlIGNob2ljZXNcIikgcHMgPVxuICBMaXN0LmZvbGRfcmlnaHQgKDx8PikgcHMgKGZhaWwgZmFpbHVyZV9tc2cpXG5cbmxldCBmaXhfZGlyZWN0IGYgPVxuICBsZXQgcmVjIHAgPSBsYXp5IChmIHIpXG4gIGFuZCByID0geyBydW4gPSBmdW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIH1cbiAgaW5cbiAgclxuXG5sZXQgZml4X2xhenkgfm1heF9zdGVwcyBmID1cbiAgbGV0IHN0ZXBzID0gcmVmIG1heF9zdGVwcyBpblxuICBsZXQgcmVjIHAgPSBsYXp5IChmIHIpXG4gIGFuZCByID0geyBydW4gPSBmdW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGRlY3Igc3RlcHM7XG4gICAgaWYgIXN0ZXBzIDwgMFxuICAgIHRoZW4gKFxuICAgICAgc3RlcHMgOj0gbWF4X3N0ZXBzO1xuICAgICAgU3RhdGUuTGF6eSAobGF6eSAoKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MpKSlcbiAgICBlbHNlXG4gICAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjY1xuICAgICAgICAgIH1cbiAgaW5cbiAgclxuXG5sZXQgZml4ID0gbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgTmF0aXZlIC0+IGZpeF9kaXJlY3RcbiAgfCBCeXRlY29kZSAtPiBmaXhfZGlyZWN0XG4gIHwgT3RoZXIgXyAtPiBmdW4gZiAtPiBmaXhfbGF6eSB+bWF4X3N0ZXBzOjIwIGZcblxubGV0IG9wdGlvbiB4IHAgPVxuICBwIDx8PiByZXR1cm4geFxuXG5sZXQgY29ucyB4IHhzID0geCA6OiB4c1xuXG5sZXQgcmVjIGxpc3QgcHMgPVxuICBtYXRjaCBwcyB3aXRoXG4gIHwgW10gICAgLT4gcmV0dXJuIFtdXG4gIHwgcDo6cHMgLT4gbGlmdDIgY29ucyBwIChsaXN0IHBzKVxuXG5sZXQgY291bnQgbiBwID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwiY291bnQ6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IDAgLT4gcmV0dXJuIFtdXG4gICAgICB8IG4gLT4gbGlmdDIgY29ucyBwIChsb29wIChuIC0gMSkpXG4gICAgaW5cbiAgICBsb29wIG5cblxubGV0IG1hbnkgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAobGlmdDIgY29ucyBwIG0pIDx8PiByZXR1cm4gW10pXG5cbmxldCBtYW55MSBwID1cbiAgbGlmdDIgY29ucyBwIChtYW55IHApXG5cbmxldCBtYW55X3RpbGwgcCB0ID1cbiAgZml4IChmdW4gbSAtPlxuICAgICh0ICo+IHJldHVybiBbXSkgPHw+IChsaWZ0MiBjb25zIHAgbSkpXG5cbmxldCBzZXBfYnkxIHMgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICBsaWZ0MiBjb25zIHAgKChzICo+IG0pIDx8PiByZXR1cm4gW10pKVxuXG5sZXQgc2VwX2J5IHMgcCA9XG4gIChsaWZ0MiBjb25zIHAgKChzICo+IHNlcF9ieTEgcyBwKSA8fD4gcmV0dXJuIFtdKSkgPHw+IHJldHVybiBbXVxuXG5sZXQgc2tpcF9tYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgICAoKHAgPj58IGZ1biBfIC0+IHRydWUpIDx8PiByZXR1cm4gZmFsc2UpID4+PSBmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IG1cbiAgICAgIHwgZmFsc2UgLT4gcmV0dXJuICgpXG4gICAgKVxuXG5sZXQgc2tpcF9tYW55MSBwID1cbiAgcCAqPiBza2lwX21hbnkgcFxuXG5sZXQgZW5kX29mX2xpbmUgPVxuICAoY2hhciAnXFxuJyAqPiByZXR1cm4gKCkpIDx8PiAoc3RyaW5nIFwiXFxyXFxuXCIgKj4gcmV0dXJuICgpKSA8Pz4gXCJlbmRfb2ZfbGluZVwiXG5cbmxldCBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGF0ZSA9IHJlZiBzdGF0ZSBpblxuICAgIGxldCBwYXJzZXIgPVxuICAgICAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZjooZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggZiAhc3RhdGUgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgc3RhdGUnIC0+IHN0YXRlIDo9IHN0YXRlJzsgdHJ1ZSlcbiAgICAgIH53aXRoX2J1ZmZlclxuICAgICAgPj58IGZ1biB4IC0+IHgsICFzdGF0ZVxuICAgIGluXG4gICAgcGFyc2VyLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgfVxuXG5sZXQgc2NhbiBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCBzY2FuX3N0YXRlIHN0YXRlIGYgPVxuICBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcbiAgPj58IGZ1biAoKCksIHN0YXRlKSAtPiBzdGF0ZVxuXG5sZXQgc2Nhbl9zdHJpbmcgc3RhdGUgZiA9XG4gIHNjYW4gc3RhdGUgZiA+PnwgZnN0XG5cbmxldCBjb25zdW1lX3dpdGggcCBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN0YXJ0ID0gcG9zIGluXG4gICAgbGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0ICBpblxuICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyBfID1cbiAgICAgIGlmIHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPD4gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCdcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcImNvbnN1bWVkOiBwYXJzZXIgY29tbWl0dGVkXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbGVuID0gcG9zJyAtIHN0YXJ0IGluXG4gICAgICAgIGxldCBjb25zdW1lZCA9IElucHV0LmFwcGx5IGlucHV0JyBzdGFydCBsZW4gfmYgaW5cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBjb25zdW1lZClcbiAgICBpblxuICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgfVxuXG5sZXQgY29uc3VtZWQgICAgICAgICAgIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5zdWJzdHJpbmdcbmxldCBjb25zdW1lZF9iaWdzdHJpbmcgcCA9IGNvbnN1bWVfd2l0aCBwIEJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IGJvdGggYSBiID0gbGlmdDIgKGZ1biBhIGIgLT4gYSwgYikgYSBiXG5sZXQgbWFwIHQgfmYgPSB0ID4+fCBmXG5sZXQgYmluZCB0IH5mID0gdCA+Pj0gZlxubGV0IG1hcDIgYSBiIH5mID0gbGlmdDIgZiBhIGJcbmxldCBtYXAzIGEgYiBjIH5mID0gbGlmdDMgZiBhIGIgY1xubGV0IG1hcDQgYSBiIGMgZCB+ZiA9IGxpZnQ0IGYgYSBiIGMgZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG4gICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgbGV0IG1hcDMgPSBtYXAzXG4gICAgbGV0IG1hcDQgPSBtYXA0XG4gIGVuZFxuZW5kXG5cbmxldCAoIGxldCsgKSA9ICggPj58IClcbmxldCAoIGxldCogKSA9ICggPj49IClcbmxldCAoIGFuZCsgKSA9IGJvdGhcblxubW9kdWxlIEJFID0gc3RydWN0XG4gICgqIFhYWChzZWxpb3BvdSk6IFRoZSBwYXR0ZXJuIGluIGJvdGggdGhpcyBtb2R1bGUgYW5kIFtMRV0gYXJlIGEgY29tcHJvbWlzZVxuICAgKiBiZXR3ZWVuIGVmZmljaWVuY3kgYW5kIGNvZGUgcmV1c2UuIEJ5IGlubGluaW5nIFtlbnN1cmVdIHlvdSBjYW4gcmVjb3ZlclxuICAgKiBhYm91dCAyIG5hbm9zZWNvbmRzIG9uIGF2ZXJhZ2UuIFRoYXQgbWF5IGFkZCB1cCBpbiBjZXJ0YWluIGFwcGxpY2F0aW9ucy5cbiAgICpcbiAgICogVGhpcyBwYXR0ZXJuIGRvZXMgbm90IGFsbG9jYXRlIGluIHRoZSBmYXN0IChzdWNjZXNzKSBwYXRoLlxuICAgKiAqKVxuICBsZXQgaW50MTYgbiA9XG4gICAgbGV0IGJ5dGVzID0gMiBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2ludDE2X2JlIGlucHV0IHBvcyA9IChuIGxhbmQgMHhmZmZmKVxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDE2XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50MzIgbiA9XG4gICAgbGV0IGJ5dGVzID0gNCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQzMi5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQzMl9iZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQzMlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDY0IG4gPVxuICAgIGxldCBieXRlcyA9IDggaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50NjQuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50NjRfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50NjRcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBMRSA9IHN0cnVjdFxuICBsZXQgaW50MTYgbiA9XG4gICAgbGV0IGJ5dGVzID0gMiBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2ludDE2X2xlIGlucHV0IHBvcyA9IChuIGxhbmQgMHhmZmZmKVxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDE2XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50MzIgbiA9XG4gICAgbGV0IGJ5dGVzID0gNCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQzMi5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQzMl9sZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQzMlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDY0IG4gPVxuICAgIGxldCBieXRlcyA9IDggaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50NjQuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50NjRfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50NjRcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG5cbiAgbGV0IGFueV91aW50MTYgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDE2ICA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlICBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MzIgID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQ2NCA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfZmxvYXQgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDMyLmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgYnMgb2ZmKSkpXG5cbiAgbGV0IGFueV9kb3VibGUgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDY0LmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSkpXG5lbmRcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBsZXQgdGFrZSBuIGYgPVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZilcblxuICBsZXQgcGVlayBuIGYgPVxuICAgIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbiBmKVxuXG4gIGxldCB0YWtlX3doaWxlIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6Y2hlY2sgfndpdGhfYnVmZmVyOmZcblxuICBsZXQgdGFrZV93aGlsZTEgY2hlY2sgZiA9XG4gICAgY291bnRfd2hpbGUxIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2VfdGlsbCBjaGVjayBmID1cbiAgICB0YWtlX3doaWxlIChmdW4gYyAtPiBub3QgKGNoZWNrIGMpKSBmXG5lbmRcblxubW9kdWxlIENvbnN1bWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFByZWZpeFxuICAgIHwgQWxsXG5lbmRcblxubGV0IHBhcnNlX2JpZ3N0cmluZyB+Y29uc3VtZSBwIGJzID1cbiAgbGV0IHAgPVxuICAgIG1hdGNoIChjb25zdW1lIDogQ29uc3VtZS50KSB3aXRoXG4gICAgfCBQcmVmaXggLT4gcFxuICAgIHwgQWxsIC0+IHAgPCogZW5kX29mX2lucHV0XG4gIGluXG4gIFVuYnVmZmVyZWQucGFyc2VfYmlnc3RyaW5nIHAgYnNcblxubGV0IHBhcnNlX3N0cmluZyB+Y29uc3VtZSBwIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBicyAgPSBCaWdzdHJpbmdhZi5jcmVhdGUgbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHMgfnNyY19vZmY6MCBicyB+ZHN0X29mZjowIH5sZW47XG4gIHBhcnNlX2JpZ3N0cmluZyB+Y29uc3VtZSBwIGJzXG4iLCIoKlxuICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQW5pbCBNYWRoYXZhcGVkZHkgPGFuaWxAcmVjb2lsLm9yZz5cbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IERhdmlkIFNoZWV0cyA8c2hlZXRzQGFsdW0ubWl0LmVkdT5cbiAqXG4gKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbiAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmVcbiAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVNcbiAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SXG4gKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTXG4gKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU5cbiAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GXG4gKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuICpcbiAqKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG50eXBlIGNvbXBvbmVudCA9IFtcbiAgfCBgU2NoZW1lXG4gIHwgYEF1dGhvcml0eVxuICB8IGBVc2VyaW5mbyAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG4gIHwgYFBhdGhcbiAgfCBgUXVlcnlcbiAgfCBgUXVlcnlfa2V5XG4gIHwgYFF1ZXJ5X3ZhbHVlXG4gIHwgYEZyYWdtZW50XG4gIHwgYEdlbmVyaWNcbiAgfCBgQ3VzdG9tIG9mIChjb21wb25lbnQgKiBzdHJpbmcgKiBzdHJpbmcpICgqIChjb21wb25lbnQgKiBzYWZlIGNoYXJzICogdW5zYWZlIGNoYXJzKSAqKVxuXVxuXG50eXBlIHBjdF9lbmNvZGVyID0ge1xuICAgIHNjaGVtZTogY29tcG9uZW50O1xuICAgIHVzZXJpbmZvOiBjb21wb25lbnQ7XG4gICAgaG9zdDogY29tcG9uZW50O1xuICAgIHBhdGg6IGNvbXBvbmVudDtcbiAgICBxdWVyeV9rZXk6IGNvbXBvbmVudDtcbiAgICBxdWVyeV92YWx1ZTogY29tcG9uZW50O1xuICAgIGZyYWdtZW50OiBjb21wb25lbnQ7XG4gIH1cblxubGV0IHJlYyBpdGVyX2NvbmNhdCBmbiBzZXAgYnVmID0gZnVuY3Rpb25cbiAgfCBsYXN0OjpbXSAtPiBmbiBidWYgbGFzdFxuICB8IGVsOjpyZXN0IC0+XG4gICAgZm4gYnVmIGVsO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzZXA7XG4gICAgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiByZXN0XG4gIHwgW10gLT4gKClcblxubGV0IHJldl9pbnRlcmplY3QgZSBsc3QgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gIC0+IGFjY1xuICAgIHwgeDo6eHMgLT4gYXV4ICh4OjplOjphY2MpIHhzXG4gIGluIG1hdGNoIGxzdCB3aXRoXG4gIHwgW10gIC0+IFtdXG4gIHwgaDo6dCAtPiBhdXggW2hdIHRcblxubGV0IGNvbXBhcmVfb3B0IGMgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCAgIE5vbmUgICAtPiAwXG4gIHwgU29tZSBfLCBOb25lICAgLT4gMVxuICB8IE5vbmUsICAgU29tZSBfIC0+IC0xXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gYyBhIGJcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgZiB0IHQnID0gbWF0Y2ggdCwgdCcgd2l0aFxuICB8IFtdLCAgICBbXSAgICAtPiAgMFxuICB8IF86Ol8sICBbXSAgICAtPiAgMVxuICB8IFtdLCAgICBfOjpfICAtPiAtMVxuICB8IHg6OnhzLCB5Ojp5cyAtPlxuICAgIG1hdGNoIGYgeCB5IHdpdGggMCAtPiBjb21wYXJlX2xpc3QgZiB4cyB5cyB8IGMgLT4gY1xuXG4oKiogU2FmZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsd2F5cyBhbGxvd2VkIGluIGEgVVJJXG4gICogVW5mb3J0dW5hdGVseSwgdGhpcyB2YXJpZXMgZGVwZW5kaW5nIG9uIHdoaWNoIGJpdCBvZiB0aGUgVVJJXG4gICogaXMgYmVpbmcgcGFyc2VkLCBzbyB0aGVyZSBhcmUgbXVsdGlwbGUgdmFyaWFudHMgKGFuZCB0aGlzXG4gICogc2V0IGlzIHByb2JhYmx5IG5vdCBleGhhdXN0aXZlLiBUT0RPOiBjaGVjay5cbiopXG50eXBlIHNhZmVfY2hhcnMgPSBib29sIGFycmF5XG5cbm1vZHVsZSB0eXBlIFNjaGVtZSA9IHNpZ1xuICB2YWwgc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IDogY29tcG9uZW50IC0+IHNhZmVfY2hhcnNcbiAgdmFsIG5vcm1hbGl6ZV9ob3N0IDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgY2Fub25pY2FsaXplX3BvcnQgOiBpbnQgb3B0aW9uIC0+IGludCBvcHRpb25cbiAgdmFsIGNhbm9uaWNhbGl6ZV9wYXRoIDogc3RyaW5nIGxpc3QgLT4gc3RyaW5nIGxpc3RcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSA9IHN0cnVjdFxuICBsZXQgc3ViX2RlbGltcyBhID1cbiAgICBsZXQgc3ViZCA9IFwiISQmJygpKissOz1cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN1YmQgLSAxIGRvXG4gICAgICBsZXQgYyA9IENoYXIuY29kZSBzdWJkLltpXSBpblxuICAgICAgYS4oYykgPC0gdHJ1ZVxuICAgIGRvbmU7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIDI1NiBmYWxzZSBpblxuICAgIGxldCBhbHdheXNfc2FmZSA9XG4gICAgICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Xy4tflwiIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggYWx3YXlzX3NhZmUgLSAxIGRvXG4gICAgICBsZXQgYyA9IENoYXIuY29kZSBhbHdheXNfc2FmZS5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgcGNoYXIgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgc2FmZV9jaGFycykgaW5cbiAgICBhLihDaGFyLmNvZGUgJzonKSA8LSB0cnVlO1xuICAgIGEuKENoYXIuY29kZSAnQCcpIDwtIHRydWU7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9zY2hlbWUgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgIGEuKENoYXIuY29kZSAnKycpIDwtIHRydWU7XG4gICAgYVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSBwYXRoIGNvbXBvbmVudCBvZiBhIFVSSSAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfcGF0aCA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gc3ViX2RlbGltcyAoQXJyYXkuY29weSBwY2hhcikgaW5cbiAgICAoKiBkZWxpbWl0ZXI6IG5vbi1zZWdtZW50IGRlbGltaXRpbmcgdXNlcyBzaG91bGQgYmUgcGN0IGVuY29kZWQgKilcbiAgICBhLihDaGFyLmNvZGUgJy8nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IDogc2FmZV9jaGFycyA9XG4gICAgKCogVE9ETzogV2hhdCBhYm91dCB7XCIhXCIsXCIkXCIsXCIsXCJ9PyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9hdnNtL29jYW1sLXVyaS9jb21taXQvMWVmM2YxZGZiNDFiZGI0ZjMzZjIyM2ZmZTE2ZTYyYTMzOTc1NjYxYSNkaWZmLTc0MGYyZGU1M2M5ZWIzNmU5NjcwZGRmYmRiOWJhOTE0UjE3MT4gKilcbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgcGNoYXIgaW5cbiAgICBhLihDaGFyLmNvZGUgJy8nKSA8LSB0cnVlO1xuICAgIGEuKENoYXIuY29kZSAnPycpIDwtIHRydWU7XG4gICAgKCogJyYnIGlzIHNhZmUgYnV0IHdlIHNob3VsZCBlbmNvZGUgbGl0ZXJhbHMgdG8gYXZvaWQgYW1iaWd1aXR5XG4gICAgICAgd2l0aCB0aGUgYWxyZWFkeSBwYXJzZWQgcXMgcGFyYW1zICopXG4gICAgYS4oQ2hhci5jb2RlICcmJykgPC0gZmFsc2U7XG4gICAgKCogJzsnIGlzIHNhZmUgYnV0IHNvbWUgc3lzdGVtcyB0cmVhdCBpdCBsaWtlICcmJy4gKilcbiAgICBhLihDaGFyLmNvZGUgJzsnKSA8LSBmYWxzZTtcbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzX2Zvcl9xdWVyeSBpblxuICAgIGEuKENoYXIuY29kZSAnPScpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnlfdmFsdWUgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJywnKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50IDogc2FmZV9jaGFycyA9IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5XG5cbiAgKCoqIFNhZmUgY2hhcmFjdGVycyBmb3IgdGhlIHVzZXJpbmZvIHN1YmNvbXBvbmVudCBvZiBhIFVSSS5cbiAgICAgIFRPRE86IHRoaXMgbmVlZHMgbW9yZSByZXNlcnZlZCBjaGFyYWN0ZXJzIGFkZGVkICopXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl91c2VyaW5mbyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCByZWMgc2FmZV9jaGFyc19mb3JfY29tcG9uZW50ID0gZnVuY3Rpb25cbiAgICB8IGBQYXRoIC0+IHNhZmVfY2hhcnNfZm9yX3BhdGhcbiAgICB8IGBVc2VyaW5mbyAtPiBzYWZlX2NoYXJzX2Zvcl91c2VyaW5mb1xuICAgIHwgYFF1ZXJ5IC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5XG4gICAgfCBgUXVlcnlfa2V5IC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleVxuICAgIHwgYFF1ZXJ5X3ZhbHVlIC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlXG4gICAgfCBgRnJhZ21lbnQgLT4gc2FmZV9jaGFyc19mb3JfZnJhZ21lbnRcbiAgICB8IGBTY2hlbWUgLT4gc2FmZV9jaGFyc19mb3Jfc2NoZW1lXG4gICAgfCBgQ3VzdG9tICgoY29tcG9uZW50IDogY29tcG9uZW50KSwgc2FmZSwgdW5zYWZlKSAtPlxuICAgICAgIGxldCBzYWZlX2NoYXJzID0gQXJyYXkuY29weSAoc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IGNvbXBvbmVudCkgaW5cbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzYWZlIC0gMSBkb1xuICAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc2FmZS5baV0gaW5cbiAgICAgICAgIHNhZmVfY2hhcnMuKGMpIDwtIHRydWVcbiAgICAgICBkb25lO1xuICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHVuc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHVuc2FmZS5baV0gaW5cbiAgICAgICAgIHNhZmVfY2hhcnMuKGMpIDwtIGZhbHNlXG4gICAgICAgZG9uZTtcbiAgICAgICBzYWZlX2NoYXJzXG4gICAgfCBgR2VuZXJpY1xuICAgIHwgXyAtPiBzYWZlX2NoYXJzXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzbyA9IGhzb1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCBwb3J0ID0gcG9ydFxuICBsZXQgY2Fub25pY2FsaXplX3BhdGggcGF0aCA9IHBhdGhcbmVuZFxuXG5tb2R1bGUgSHR0cCA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhzXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSA4MCAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSB4XG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtcIi9cIl1cbiAgICB8IHggIC0+IHhcbmVuZFxuXG5tb2R1bGUgSHR0cHMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIdHRwXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSA0NDMgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuZW5kXG5cbm1vZHVsZSBGaWxlIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBocyA9XG4gICAgbGV0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBocyBpblxuICAgIGlmIGhzPVwibG9jYWxob3N0XCIgdGhlbiBcIlwiIGVsc2UgaHNcbmVuZFxuXG5tb2R1bGUgVXJuIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG5lbmRcblxubGV0IG1vZHVsZV9vZl9zY2hlbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgcyAtPiBiZWdpbiBtYXRjaCBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgd2l0aFxuICAgICAgfCBcImh0dHBcIiAtPiAobW9kdWxlIEh0dHAgOiBTY2hlbWUpXG4gICAgICB8IFwiaHR0cHNcIiAgLT4gKG1vZHVsZSBIdHRwcyA6IFNjaGVtZSlcbiAgICAgIHwgXCJmaWxlXCIgLT4gKG1vZHVsZSBGaWxlIDogU2NoZW1lKVxuICAgICAgfCBcInVyblwiICAtPiAobW9kdWxlIFVybiA6IFNjaGVtZSlcbiAgICAgIHwgXyAtPiAobW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUpXG4gICAgZW5kXG4gIHwgTm9uZSAtPiAobW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUpXG5cbigqKiBQb3J0aW9ucyBvZiB0aGUgVVJMIG11c3QgYmUgY29udmVydGVkIHRvLWFuZC1mcm9tIHBlcmNlbnQtZW5jb2RpbmdcbiAgKiBhbmQgdGhpcyByZWFsbHksIHJlYWxseSBzaG91bGRuJ3QgYmUgbWl4ZWQgdXAuIFNvIHRoaXMgUGN0IG1vZHVsZVxuICAqIGRlZmluZXMgYWJzdHJhY3QgUGN0LmVuY29kZWQgYW5kIFBjdC5kZWNvZGVkIHR5cGVzIHdoaWNoIHNldHMgdGhlXG4gICogc3RhdGUgb2YgdGhlIHVuZGVybHlpbmcgc3RyaW5nLiAgVGhlcmUgYXJlIGZ1bmN0aW9ucyB0byBcImNhc3RcIiB0b1xuICAqIGFuZCBmcm9tIHRoZXNlIGFuZCBub3JtYWwgc3RyaW5ncywgYW5kIHRoaXMgcHJvbW90ZXMgYSBiaXQgb2ZcbiAgKiBpbnRlcm5hbCBzYWZldHkuICBUaGVzZSB0eXBlcyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIGV4dGVybmFsXG4gICogaW50ZXJmYWNlLCBhcyBjYXN0aW5nIHRvLWFuZC1mcm9tIGlzIHF1aXRlIGEgYml0IG9mIGhhc3NsZSBhbmRcbiAgKiBwcm9iYWJseSBub3QgYSBsb3Qgb2YgdXNlIHRvIHRoZSBhdmVyYWdlIGNvbnN1bWVyIG9mIHRoaXMgbGlicmFyeVxuKilcbm1vZHVsZSBQY3QgOiBzaWdcbiAgdHlwZSBlbmNvZGVkXG4gIHR5cGUgZGVjb2RlZFxuXG4gIHZhbCBlbmNvZGUgOiA/c2NoZW1lOnN0cmluZyAtPiA/Y29tcG9uZW50OmNvbXBvbmVudCAtPiBkZWNvZGVkIC0+IGVuY29kZWRcbiAgdmFsIGRlY29kZSA6IGVuY29kZWQgLT4gZGVjb2RlZFxuXG4gICgqIFRoZSBlbXB0eSBkZWNvZGVkIHN0cmluZyAqKVxuICB2YWwgZW1wdHlfZGVjb2RlZCA6IGRlY29kZWRcbiAgKCogSWRlbnRpdHkgZnVuY3Rpb25zIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBjYXN0IHdoZW4gdXNpbmcgdGhlbSBiZWxvdyAqKVxuICB2YWwgY2FzdF9lbmNvZGVkIDogc3RyaW5nIC0+IGVuY29kZWRcbiAgdmFsIGNhc3RfZGVjb2RlZCA6IHN0cmluZyAtPiBkZWNvZGVkXG4gIHZhbCB1bmNhc3RfZW5jb2RlZCA6IGVuY29kZWQgLT4gc3RyaW5nXG4gIHZhbCB1bmNhc3RfZGVjb2RlZCA6IGRlY29kZWQgLT4gc3RyaW5nXG4gICgqIExpZnQgSE9GcyBmb3IgbWFwcyBvdmVyIGVuY29kaW5ncywgZGVjb2RpbmdzLCBhbmQgc3RyaW5ncyAqKVxuICB2YWwgbGlmdF9lbmNvZGVkIDogKGVuY29kZWQgLT4gZW5jb2RlZCkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgbGlmdF9kZWNvZGVkIDogKGRlY29kZWQgLT4gZGVjb2RlZCkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgdW5saWZ0X2VuY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZW5jb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZCA6IChzdHJpbmcgLT4gc3RyaW5nKSAtPiBkZWNvZGVkIC0+IGRlY29kZWRcbiAgdmFsIHVubGlmdF9kZWNvZGVkMiA6IChzdHJpbmcgLT4gc3RyaW5nIC0+ICdhKSAtPiBkZWNvZGVkIC0+IGRlY29kZWQgLT4gJ2FcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGVuY29kZWQgPSBzdHJpbmdcbiAgdHlwZSBkZWNvZGVkID0gc3RyaW5nXG4gIGxldCBjYXN0X2VuY29kZWQgeCA9IHhcbiAgbGV0IGNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgZW1wdHlfZGVjb2RlZCA9IFwiXCJcbiAgbGV0IHVuY2FzdF9kZWNvZGVkIHggPSB4XG4gIGxldCB1bmNhc3RfZW5jb2RlZCB4ID0geFxuXG4gIGxldCBsaWZ0X2VuY29kZWQgZiA9IGZcbiAgbGV0IGxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2VuY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9kZWNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZDIgZiA9IGZcblxuICAoKiogU2NhbiBmb3IgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhbmQgcmVwbGFjZSB0aGVtIHdpdGhcbiAgICAgIHBlcmNlbnQtZW5jb2RlZCBlcXVpdmFsZW50cy5cbiAgICAgIEByZXR1cm4gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBlbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgYiA9XG4gICAgbGV0IG1vZHVsZSBTY2hlbWUgPSAodmFsIChtb2R1bGVfb2Zfc2NoZW1lIHNjaGVtZSkgOiBTY2hlbWUpIGluXG4gICAgbGV0IHNhZmVfY2hhcnMgPSBTY2hlbWUuc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IGNvbXBvbmVudCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIHNjYW4gc3RhcnQgY3VyID1cbiAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBjID0gQ2hhci5jb2RlIGIuW2N1cl0gaW5cbiAgICAgICAgaWYgc2FmZV9jaGFycy4oYykgdGhlblxuICAgICAgICAgIHNjYW4gc3RhcnQgKGN1cisxKVxuICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgaWYgY3VyID4gc3RhcnQgdGhlbiBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFByaW50Zi5zcHJpbnRmIFwiJSUlMDJYXCIgYyk7XG4gICAgICAgICAgc2NhbiAoY3VyKzEpIChjdXIrMSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgaW50X29mX2hleF9jaGFyIGMgPVxuICAgIGxldCBjID0gaW50X29mX2NoYXIgKENoYXIudXBwZXJjYXNlX2FzY2lpIGMpIC0gNDggaW5cbiAgICBpZiBjID4gOVxuICAgIHRoZW4gaWYgYyA+IDE2ICYmIGMgPCAyM1xuICAgICAgdGhlbiBjIC0gN1xuICAgICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG4gICAgZWxzZSBpZiBjID49IDBcbiAgICB0aGVuIGNcbiAgICBlbHNlIGZhaWx3aXRoIFwiaW50X29mX2hleF9jaGFyXCJcblxuICAoKiogU2NhbiBmb3IgcGVyY2VudC1lbmNvZGluZyBhbmQgY29udmVydCB0aGVtIGludG8gQVNDSUkuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1kZWNvZGVkIHN0cmluZyAqKVxuICBsZXQgZGVjb2RlIGIgPVxuICAgICgqIFRPRE86IFNob3VsZCBib3RoIHN0cmljdCBhbmQgbm9uLXN0cmljdCB2ZXJzaW9ucyBiZSBleHBvc2VkPyAqKVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIHNjYW4gc3RhcnQgY3VyID1cbiAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KVxuICAgICAgZWxzZSBpZiBiLltjdXJdID0gJyUnIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICclJ1xuICAgICAgICBlbHNlIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgIHNjYW4gY3VyIGN1clxuICAgICAgICB8IGhpZ2hiaXRzIC0+IGJlZ2luXG4gICAgICAgICAgbGV0IGN1ciA9IGN1ciArIDEgaW5cbiAgICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBiLltjdXItMV1cbiAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgbGV0IHN0YXJ0X2F0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaW50X29mX2hleF9jaGFyIGIuW2N1cl0gd2l0aFxuICAgICAgICAgICAgICB8IGxvd2JpdHMgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociAoaGlnaGJpdHMgbHNsIDQgKyBsb3diaXRzKSk7XG4gICAgICAgICAgICAgICAgY3VyKzFcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdO1xuICAgICAgICAgICAgICAgIGN1clxuICAgICAgICAgICAgaW4gc2NhbiBzdGFydF9hdCBzdGFydF9hdFxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIHNjYW4gc3RhcnQgKGN1cisxKVxuICAgIGluXG4gICAgc2NhbiAwIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuZW5kXG5cbigqIFBlcmNlbnQgZW5jb2RlIGEgc3RyaW5nICopXG5sZXQgcGN0X2VuY29kZSA/c2NoZW1lID8oY29tcG9uZW50PWBQYXRoKSBzID1cbiAgUGN0Lih1bmNhc3RfZW5jb2RlZCAoZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCAoY2FzdF9kZWNvZGVkIHMpKSlcblxubGV0IHBjdF9lbmNvZGVyXG4gICAgICA/KHNjaGVtZT1gU2NoZW1lKVxuICAgICAgPyh1c2VyaW5mbz1gVXNlcmluZm8pXG4gICAgICA/KGhvc3Q9YEhvc3QpXG4gICAgICA/KHBhdGg9YFBhdGgpXG4gICAgICA/KHF1ZXJ5X2tleT1gUXVlcnlfa2V5KVxuICAgICAgPyhxdWVyeV92YWx1ZT1gUXVlcnlfdmFsdWUpXG4gICAgICA/KGZyYWdtZW50PWBGcmFnbWVudClcbiAgICAgICgpID1cbiAgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwYXRoOyBxdWVyeV9rZXk7IHF1ZXJ5X3ZhbHVlOyBmcmFnbWVudCB9XG5cbigqIFBlcmNlbnQgZGVjb2RlIGEgc3RyaW5nICopXG5sZXQgcGN0X2RlY29kZSBzID0gUGN0Lih1bmNhc3RfZGVjb2RlZCAoZGVjb2RlIChjYXN0X2VuY29kZWQgcykpKVxuXG4oKiBVc2VyaW5mbyBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGlkICogY3JlZGVudGlhbCBwYWlyICopXG5tb2R1bGUgVXNlcmluZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG4gIGxldCBjb21wYXJlICh1LHApICh1JyxwJykgPVxuICAgIG1hdGNoIFN0cmluZy5jb21wYXJlIHUgdScgd2l0aFxuICAgIHwgMCAtPiBjb21wYXJlX29wdCBTdHJpbmcuY29tcGFyZSBwIHAnXG4gICAgfCBjIC0+IGNcblxuICBsZXQgdXNlcmluZm9fb2ZfZW5jb2RlZCB1cyA9XG4gICAgbWF0Y2ggU3RyaW5nZXh0LnNwbGl0IH5tYXg6MiB+b246JzonIHVzIHdpdGhcbiAgICB8IFtdIC0+IChcIlwiLE5vbmUpXG4gICAgfCBbdV0gLT4gKHBjdF9kZWNvZGUgdSxOb25lKVxuICAgIHwgdTo6cDo6XyAtPiAocGN0X2RlY29kZSB1LFNvbWUgKHBjdF9kZWNvZGUgcCkpXG5cbiAgbGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ICh1LHBvKSA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy4oXG4gICAgICAxICsgKGxlbmd0aCB1KSArIChtYXRjaCBwbyB3aXRoIE5vbmUgLT4gMCB8IFNvbWUgcCAtPiBsZW5ndGggcCkpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHUpO1xuICAgIGJlZ2luIG1hdGNoIHBvIHdpdGggTm9uZSAtPiAoKTtcbiAgICB8IFNvbWUgcCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHApXG4gICAgZW5kO1xuICAgIFBjdC5jYXN0X2VuY29kZWQgKEJ1ZmZlci5jb250ZW50cyBidWYpXG5lbmRcblxubGV0IHVzZXJpbmZvX29mX2VuY29kZWQgPSBVc2VyaW5mby51c2VyaW5mb19vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQgPSBVc2VyaW5mby5lbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBQYXRoIHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYSBsaXN0IG9mIHBhdGggdG9rZW5zICopXG5tb2R1bGUgUGF0aCA9IHN0cnVjdFxuICAoKiBJbnZhcmlhbnQ6IGV2ZXJ5IGVsZW1lbnQgaXMgbm9uLXplcm8sIHNsYXNoZXMgKC8pIG9ubHkgb2NjdXIgYWxvbmUuICopXG4gICgqIFllcywgaXQncyBiZXR0ZXIgdGhpcyB3YXkuIFRoaXMgbWVhbnMgeW91IGNhbiByZXRhaW4gc2VwYXJhdG9yXG4gICAgIGNvbnRleHQgaW4gcmVjdXJzaW9uIChlLmcuIHJlbW92ZV9kb3Rfc2VnbWVudHMgZm9yIHJlbGF0aXZlIHJlc29sdXRpb24pLiAqKVxuXG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0XG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmVcblxuICAoKiBNYWtlIGEgcGF0aCB0b2tlbiBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBwYXRoX29mX2VuY29kZWQgcHMgPVxuICAgIGxldCB0b2tsID0gU3RyaW5nZXh0LmZ1bGxfc3BsaXQgcHMgfm9uOicvJyBpblxuICAgIExpc3QubWFwIHBjdF9kZWNvZGUgdG9rbFxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuND4gKilcbiAgbGV0IHJlbW92ZV9kb3Rfc2VnbWVudHMgcCA9XG4gICAgbGV0IHJldnAgPSBMaXN0LnJldiBwIGluXG4gICAgbGV0IHJlYyBsb29wIGFzY2Vuc2lvbiBvdXRwID0gZnVuY3Rpb25cbiAgICAgIHwgXCIvXCI6OlwiLi5cIjo6ciB8IFwiLi5cIjo6ciAtPiBsb29wIChhc2NlbnNpb24gKyAxKSBvdXRwIHJcbiAgICAgIHwgXCIvXCI6OlwiLlwiOjpyICB8IFwiLlwiOjpyICAtPiBsb29wIGFzY2Vuc2lvbiBvdXRwIHJcbiAgICAgIHwgXCIvXCI6OltdIHwgW10gd2hlbiBMaXN0LihsZW5ndGggcCA+IDAgJiYgaGQgcCA9IFwiL1wiKSAtPiBcIi9cIjo6b3V0cFxuICAgICAgfCBbXSB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gTGlzdC5yZXZfYXBwZW5kXG4gICAgICAgIChcIi9cIjo6KHJldl9pbnRlcmplY3QgXCIvXCIgQXJyYXkuKHRvX2xpc3QgKG1ha2UgYXNjZW5zaW9uIFwiLi5cIikpKSkgb3V0cFxuICAgICAgfCBbXSAtPiBMaXN0LihpZiBsZW5ndGggb3V0cCA+IDAgJiYgaGQgb3V0cCA9IFwiL1wiIHRoZW4gdGwgb3V0cCBlbHNlIG91dHApXG4gICAgICB8IFwiL1wiOjpcIi9cIjo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCAoXCIvXCI6OnIpXG4gICAgICB8IFwiL1wiOjpfOjpyIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBsb29wIChhc2NlbnNpb24gLSAxKSBvdXRwIHJcbiAgICAgIHwgczo6ciAtPiBsb29wIDAgKHM6Om91dHApIHJcbiAgICBpbiBsb29wIDAgW10gcmV2cFxuXG4gIGxldCBlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50IHAgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGMgdG9rIC0+IFN0cmluZy5sZW5ndGggdG9rICsgYykgMCBwIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgLT4gZnVuY3Rpb25cbiAgICB8IFwiL1wiIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJy8nXG4gICAgfCBzZWcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBzZWcpXG4gICAgKSBcIlwiIGJ1ZiBwO1xuICAgIFBjdC5jYXN0X2VuY29kZWQgKEJ1ZmZlci5jb250ZW50cyBidWYpXG5cbiAgKCogU3Vicm91dGluZSBmb3IgcmVzb2x2ZSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi4zPiAqKVxuICBsZXQgbWVyZ2UgYmhvc3QgYnBhdGggcmVscGF0aCA9XG4gICAgbWF0Y2ggYmhvc3QsIExpc3QucmV2IGJwYXRoIHdpdGhcbiAgICB8IFNvbWUgXywgW10gLT4gXCIvXCI6OnJlbHBhdGhcbiAgICB8IF8sIChcIi9cIjo6cmJwYXRoIHwgXzo6XCIvXCI6OnJicGF0aCkgLT4gTGlzdC5yZXZfYXBwZW5kIChcIi9cIjo6cmJwYXRoKSByZWxwYXRoXG4gICAgfCBfLCBfIC0+IHJlbHBhdGhcbmVuZFxuXG5sZXQgcGF0aF9vZl9lbmNvZGVkID0gUGF0aC5wYXRoX29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50ID0gUGF0aC5lbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50XG5cbigqIFF1ZXJ5IHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYW4gYXNzb2MgbGlzdCBvZiBrZXkvdmFsdWVzICopXG5tb2R1bGUgUXVlcnkgPSBzdHJ1Y3RcblxuICB0eXBlIGt2ID0gKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEtWIG9mIGt2XG4gICAgfCBSYXcgb2Ygc3RyaW5nIG9wdGlvbiAqIGt2IExhenkudFxuXG4gIGxldCBjb21wYXJlIHggeSA9IG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgS1Yga3ZsLCBLViBrdmwnXG4gICAgfCBSYXcgKF8sIGxhenkga3ZsKSwgS1Yga3ZsJ1xuICAgIHwgS1Yga3ZsLCBSYXcgKF8sIGxhenkga3ZsJykgLT5cbiAgICAgIGNvbXBhcmVfbGlzdCAoZnVuIChrLHZsKSAoaycsdmwnKSAtPlxuICAgICAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSBrIGsnIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbGlzdCBTdHJpbmcuY29tcGFyZSB2bCB2bCdcbiAgICAgICAgfCBjIC0+IGNcbiAgICAgICkga3ZsIGt2bCdcbiAgICB8IFJhdyAocmF3LF8pLCBSYXcgKHJhdycsXykgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcmF3IHJhdydcblxuICBsZXQgZmluZCBxIGsgPSB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIHEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgc3BsaXRfcXVlcnkgcXMgPVxuICAgIGxldCBlbHMgPSBTdHJpbmdleHQuc3BsaXQgfm9uOicmJyBxcyBpblxuICAgICgqIFJlcGxhY2UgYSArIGluIGEgcXVlcnkgc3RyaW5nIHdpdGggYSBzcGFjZSBpbi1wbGFjZSAqKVxuICAgIGxldCBwbHVzX3RvX3NwYWNlIHMgPVxuICAgICAgbGV0IHMgPSBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIGZvciBpID0gMCB0byBCeXRlcy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgaWYgQnl0ZXMuZ2V0IHMgaSA9ICcrJyB0aGVuIEJ5dGVzLnNldCBzIGkgJyAnXG4gICAgICBkb25lO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgKGs6OnY6Ol8pOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgayxcbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nZXh0LnNwbGl0IH5vbjonLCcgKHBsdXNfdG9fc3BhY2Ugdikgd2l0aFxuICAgICAgICAgICAgICAgICB8IFtdIC0+IFtcIlwiXSB8IGwgLT4gbCkgaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBba106OnRsIC0+XG4gICAgICAgIGxldCBuID0gcGx1c190b19zcGFjZSBrLCBbXSBpblxuICAgICAgICBsb29wIChuOjphY2MpIHRsXG4gICAgICB8IFtdOjp0bCAtPiBsb29wICgoXCJcIiwgW10pOjphY2MpIHRsXG4gICAgICB8IFtdIC0+IGFjY1xuICAgIGluXG4gICAgbWF0Y2ggZWxzIHdpdGhcbiAgICB8IFtdICAtPiBbXCJcIixbXV1cbiAgICB8IGVscyAtPiBsb29wIFtdXG4gICAgICAoTGlzdC5yZXZfbWFwIChmdW4gZWwgLT4gU3RyaW5nZXh0LnNwbGl0IH5vbjonPScgZWwgfm1heDoyKSBlbHMpXG5cbiAgKCogTWFrZSBhIHF1ZXJ5IHR1cGxlIGxpc3QgZnJvbSBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IHF1ZXJ5X29mX2VuY29kZWQgcXMgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChrLCB2KSAtPiAocGN0X2RlY29kZSBrLCBMaXN0Lm1hcCBwY3RfZGVjb2RlIHYpKVxuICAgICAgKHNwbGl0X3F1ZXJ5IHFzKVxuXG4gICgqIEFzc2VtYmxlIGEgcXVlcnkgc3RyaW5nIHN1aXRhYmxlIGZvciBwdXR0aW5nIGludG8gYSBVUkkuXG4gICAqIFR1cGxlIGlucHV0cyBhcmUgcGVyY2VudCBkZWNvZGVkIGFuZCB3aWxsIGJlIGVuY29kZWQgYnlcbiAgICogdGhpcyBmdW5jdGlvbi5cbiAgKilcbiAgbGV0IGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhIChrLHYpIC0+XG4gICAgICAgIGEgKyAoU3RyaW5nLmxlbmd0aCBrKVxuICAgICAgICArIChMaXN0LmZvbGRfbGVmdCAoZnVuIGEgcyAtPiBhKyhTdHJpbmcubGVuZ3RoIHMpKzEpIDAgdikgKyAyKSAoLTEpIGwgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiAoayx2KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnF1ZXJ5X2tleSBrKTtcbiAgICAgICAgaWYgdiA8PiBbXSB0aGVuIChcbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc9JztcbiAgICAgICAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiBzIC0+XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgICAgICAgICAgIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV92YWx1ZSBzKVxuICAgICAgICAgICAgKSBcIixcIiBidWYgdilcbiAgICAgICkgXCImXCIgYnVmIGw7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCBvZl9yYXcgcXMgPVxuICAgIGxldCBsYXp5X3F1ZXJ5ID0gTGF6eS5mcm9tX2Z1biAoZnVuICgpIC0+IHF1ZXJ5X29mX2VuY29kZWQgcXMpIGluXG4gICAgUmF3IChTb21lIHFzLCBsYXp5X3F1ZXJ5KVxuXG4gIGxldCBrdiA9IGZ1bmN0aW9uIFJhdyAoXywgbGF6eSBrdikgfCBLViBrdiAtPiBrdlxuZW5kXG5cbmxldCBxdWVyeV9vZl9lbmNvZGVkID0gUXVlcnkucXVlcnlfb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSA9IFF1ZXJ5LmVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZVxuXG4oKiBUeXBlIG9mIHRoZSBVUkksIHdpdGggbW9zdCBiaXRzIGJlaW5nIG9wdGlvbmFsICopXG50eXBlIHQgPSB7XG4gIHNjaGVtZTogUGN0LmRlY29kZWQgb3B0aW9uO1xuICB1c2VyaW5mbzogVXNlcmluZm8udCBvcHRpb247XG4gIGhvc3Q6IFsgYElwdjRfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICB8IGBIb3N0IG9mIFBjdC5kZWNvZGVkXSBvcHRpb24gO1xuICBwb3J0OiBpbnQgb3B0aW9uO1xuICBwYXRoOiBQYXRoLnQ7XG4gIHF1ZXJ5OiBRdWVyeS50O1xuICBmcmFnbWVudDogUGN0LmRlY29kZWQgb3B0aW9uO1xufVxuXG5sZXQgZW1wdHkgPSB7XG4gIHNjaGVtZSA9IE5vbmU7XG4gIHVzZXJpbmZvID0gTm9uZTtcbiAgaG9zdCA9IE5vbmU7XG4gIHBvcnQgPSBOb25lO1xuICBwYXRoID0gW107XG4gIHF1ZXJ5ID0gUXVlcnkuUmF3IChOb25lLCBMYXp5LmZyb21fdmFsIFtdKTtcbiAgZnJhZ21lbnQgPSBOb25lO1xufVxuXG5sZXQgY29tcGFyZV9kZWNvZGVkID0gUGN0LnVubGlmdF9kZWNvZGVkMiBTdHJpbmcuY29tcGFyZVxubGV0IGNvbXBhcmVfZGVjb2RlZF9vcHQgPSBjb21wYXJlX29wdCBjb21wYXJlX2RlY29kZWRcbmxldCBjb21wYXJlX2hvc3QgaDEgaDIgPVxuICBtYXRjaCBoMSwgaDIgd2l0aFxuICB8IGBJcHY0X2xpdGVyYWwgaXAxLCBgSXB2NF9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYElwdjZfbGl0ZXJhbCBpcDEsIGBJcHY2X2xpdGVyYWwgaXAyIC0+IFN0cmluZy5jb21wYXJlIGlwMSBpcDJcbiAgfCBgSG9zdCBoMSwgYEhvc3QgaDIgLT4gY29tcGFyZV9kZWNvZGVkIGgxIGgyXG4gIHwgXyAtPiAtMVxubGV0IGNvbXBhcmVfaG9zdF9vcHQgPSBjb21wYXJlX29wdCBjb21wYXJlX2hvc3RcblxubGV0IGNvbXBhcmUgdCB0JyA9XG4gIChtYXRjaCBjb21wYXJlX2hvc3Rfb3B0IHQuaG9zdCB0Jy5ob3N0IHdpdGhcbiAgfCAwIC0+IChtYXRjaCBjb21wYXJlX2RlY29kZWRfb3B0IHQuc2NoZW1lIHQnLnNjaGVtZSB3aXRoXG4gICAgfCAwIC0+IChtYXRjaCBjb21wYXJlX29wdCAoZnVuIHAgcCcgLT5cbiAgICAgIGlmIHAgPCBwJyB0aGVuIC0xIGVsc2UgaWYgcCA+IHAnIHRoZW4gMSBlbHNlIDBcbiAgICApIHQucG9ydCB0Jy5wb3J0IHdpdGhcbiAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgVXNlcmluZm8uY29tcGFyZSB0LnVzZXJpbmZvIHQnLnVzZXJpbmZvIHdpdGhcbiAgICAgICAgfCAwIC0+IChtYXRjaCBQYXRoLmNvbXBhcmUgdC5wYXRoIHQnLnBhdGggd2l0aFxuICAgICAgICAgIHwgMCAtPiAobWF0Y2ggUXVlcnkuY29tcGFyZSB0LnF1ZXJ5IHQnLnF1ZXJ5IHdpdGhcbiAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2RlY29kZWRfb3B0IHQuZnJhZ21lbnQgdCcuZnJhZ21lbnRcbiAgICAgICAgICAgIHwgYyAtPiBjKVxuICAgICAgICAgIHwgYyAtPiBjKVxuICAgICAgICB8IGMgLT4gYylcbiAgICAgIHwgYyAtPiBjKVxuICAgIHwgYyAtPiBjKVxuICB8IGMgLT4gYylcblxubGV0IGVxdWFsIHQgdCcgPSBjb21wYXJlIHQgdCcgPSAwXG5cbmxldCB1bmNhc3Rfb3B0ID0gZnVuY3Rpb25cbiAgfCBTb21lIGggLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG4gIHwgTm9uZSAtPiBOb25lXG5cbmxldCBub3JtYWxpemUgc2NoZW0gdXJpID1cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgc2NoZW0pKSA6IFNjaGVtZSkgaW5cbiAgbGV0IGRvYiBmID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBTb21lIChQY3QudW5saWZ0X2RlY29kZWQgZiB4KVxuICAgIHwgTm9uZSAtPiBOb25lXG4gIGluIHt1cmkgd2l0aFxuICAgICAgc2NoZW1lPWRvYiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHVyaS5zY2hlbWU7XG4gICAgICBob3N0PSBtYXRjaCB1cmkuaG9zdCB3aXRoXG4gICAgICAgfCBTb21lIChgSXB2NF9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSXB2NF9saXRlcmFsIChTY2hlbWUubm9ybWFsaXplX2hvc3QgaG9zdCkpXG4gICAgICAgfCBTb21lIChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSXB2Nl9saXRlcmFsIChTY2hlbWUubm9ybWFsaXplX2hvc3QgaG9zdCkpXG4gICAgICAgfCBTb21lIChgSG9zdCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCAoUGN0LnVuY2FzdF9kZWNvZGVkIGhvc3QpKSkpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfVxuXG4oKiogQ29udmVydCBhIFVSSSBzdHJ1Y3R1cmUgaW50byBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmdcbiAgICA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMz5cbiopXG5sZXQgdG9fc3RyaW5nID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9XG4gIGxldCBzY2hlbWUgPSBtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgcylcbiAgICB8IE5vbmUgLT4gTm9uZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgKCogUGVyY2VudCBlbmNvZGUgYSBkZWNvZGVkIHN0cmluZyBhbmQgYWRkIGl0IHRvIHRoZSBidWZmZXIgKilcbiAgbGV0IGFkZF9wY3Rfc3RyaW5nID8oY29tcG9uZW50PWBQYXRoKSB4ID1cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFBjdC51bmNhc3RfZW5jb2RlZCAoUGN0LmVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgeCkpXG4gIGluXG4gIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSB4IC0+XG4gICAgIGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuc2NoZW1lIHg7XG4gICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonXG4gICk7XG4gICgqIFVSSSBoYXMgYSBob3N0IGlmIGFueSBob3N0LXJlbGF0ZWQgY29tcG9uZW50IGlzIHNldC4gRGVmYXVsdHMgdG8gXCJcIi4gKilcbiAgaWYgKG1hdGNoIHVyaS51c2VyaW5mbywgdXJpLmhvc3QsIHVyaS5wb3J0IHdpdGhcbiAgfCBTb21lIF8sIF8sIF8gfCBfLCBTb21lIF8sIF8gfCBfLCBfLCBTb21lIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiLy9cIjtcbiAgKG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIHVzZXJpbmZvIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAoUGN0LnVuY2FzdF9lbmNvZGVkIChlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mbykpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ0AnXG4gICk7XG4gIChtYXRjaCB1cmkuaG9zdCB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIChgSG9zdCBob3N0KSAtPlxuICAgIGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuaG9zdCBob3N0O1xuICB8U29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgaG9zdFxuICB8U29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnWyc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgaG9zdDtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ10nXG4gICk7XG4gIChtYXRjaCB1cmkucG9ydCB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIHBvcnQgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6JztcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHN0cmluZ19vZl9pbnQgcG9ydClcbiAgKTtcbiAgKG1hdGNoIHVyaS5wYXRoIHdpdGggKCogSGFuZGxlIHJlbGF0aXZlIHBhdGhzIGNvcnJlY3RseSAqKVxuICB8IFtdIC0+ICgpXG4gIHwgXCIvXCI6Ol8gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFBjdC51bmNhc3RfZW5jb2RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gIHwgZmlyc3Rfc2VnbWVudDo6XyAtPlxuICAgIChtYXRjaCB1cmkuaG9zdCB3aXRoXG4gICAgIHwgU29tZSBfIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJy8nXG4gICAgIHwgTm9uZSAtPlxuICAgICAgICgqIGVuc3VyZSByb3VuZHRyaXAgYnkgZm9yY2luZyByZWxhdGl2ZSBwYXRoIGludGVycHJldGF0aW9uIG5vdCBzY2hlbWUgKilcbiAgICAgICBtYXRjaCBTdHJpbmdleHQuZmluZF9mcm9tIGZpcnN0X3NlZ21lbnQgfnBhdHRlcm46XCI6XCIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBfIC0+IG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgfCBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi4vXCJcbiAgICApO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKSlcbiAgKTtcbiAgUXVlcnkuKG1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gICAgfCBSYXcgKE5vbmUsXykgfCBLViBbXSAtPiAoKVxuICAgIHwgUmF3IChfLGxhenkgcSkgfCBLViBxIC0+ICgqIG5vcm1hbGl6ZSBlLmcuIHBlcmNlbnQgY2FwaXRhbGl6YXRpb24gKilcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJz8nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgfnBjdF9lbmNvZGVyIHEpXG4gICk7XG4gIChtYXRjaCB1cmkuZnJhZ21lbnQgd2l0aFxuICAgfE5vbmUgLT4gKClcbiAgIHxTb21lIGYgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnIyc7IGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuZnJhZ21lbnQgZlxuICApO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbigqIFZhcmlvdXMgYWNjZXNzb3IgZnVuY3Rpb25zLCBhcyB0aGUgZXh0ZXJuYWwgdXJpIHR5cGUgaXMgYWJzdHJhY3QgICopXG5sZXQgZ2V0X2RlY29kZWRfb3B0ID0gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHxTb21lIHggLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHgpXG5sZXQgc2NoZW1lIHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuc2NoZW1lXG5sZXQgd2l0aF9zY2hlbWUgdXJpID1cbiAgZnVuY3Rpb25cbiAgfFNvbWUgc2NoZW1lIC0+IHsgdXJpIHdpdGggc2NoZW1lPVNvbWUgKFBjdC5jYXN0X2RlY29kZWQgc2NoZW1lKSB9XG4gIHxOb25lIC0+IHsgdXJpIHdpdGggc2NoZW1lPU5vbmUgfVxuXG5sZXQgaG9zdCB1cmkgPVxuICBtYXRjaCB1cmkuaG9zdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBTb21lIGhcbiAgfCBTb21lIChgSG9zdCBoKSAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgaClcblxubGV0IGhvc3Rfd2l0aF9kZWZhdWx0ID8oZGVmYXVsdD1cImxvY2FsaG9zdFwiKSB1cmkgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHxOb25lIC0+IGRlZmF1bHRcbiAgfFNvbWUgaCAtPiBoXG5cbmxldCB1c2VyaW5mbyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdXNlcmluZm8gLT4gU29tZSAoUGN0LnVuY2FzdF9lbmNvZGVkIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgICB8IE5vbmUgLT4gZW5jb2RlZF9vZl91c2VyaW5mbyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvXG4gICAgfCBTb21lIHMgLT4gZW5jb2RlZF9vZl91c2VyaW5mbyB+c2NoZW1lOihQY3QudW5jYXN0X2RlY29kZWQgcykgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mbykpXG5sZXQgd2l0aF91c2VyaW5mbyB1cmkgdXNlcmluZm8gPVxuICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KVxuICAgIHwgTm9uZSAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG5cbmxldCB1c2VyIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAodXNlciwgXykgLT4gU29tZSB1c2VyXG5cbmxldCBwYXNzd29yZCB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgfCBTb21lIChfLCBOb25lKSAtPiBOb25lXG4gIHwgU29tZSAoXywgU29tZSBwYXNzKSAtPiBTb21lIHBhc3NcbmxldCB3aXRoX3Bhc3N3b3JkIHVyaSBwYXNzd29yZCA9XG4gIGxldCByZXN1bHQgdXNlcmluZm8gPSBtYXRjaCBob3N0IHVyaSB3aXRoXG4gICAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgaW5cbiAgbWF0Y2ggdXJpLnVzZXJpbmZvLCBwYXNzd29yZCB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB1cmlcbiAgfCBOb25lLCBTb21lIF8gLT4gcmVzdWx0IChTb21lIChcIlwiLHBhc3N3b3JkKSlcbiAgfCBTb21lICh1c2VyLF8pLCBfIC0+IHJlc3VsdCAoU29tZSAodXNlciwgcGFzc3dvcmQpKVxuXG5sZXQgcG9ydCB1cmkgPSB1cmkucG9ydFxubGV0IHdpdGhfcG9ydCB1cmkgcG9ydCA9XG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCBwb3J0PXBvcnQgfVxuICB8IE5vbmUgLT4gYmVnaW5cbiAgICAgbWF0Y2ggcG9ydCB3aXRoXG4gICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9Tm9uZTsgcG9ydD1Ob25lIH1cbiAgICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgcG9ydD1wb3J0IH1cbiAgZW5kXG5cbigqIFJldHVybiB0aGUgcGF0aCBjb21wb25lbnQgKilcbmxldCBwYXRoID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gIHwgTm9uZSAtPiBlbmNvZGVkX29mX3BhdGggfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoXG4gIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfcGF0aCB+c2NoZW1lOihQY3QudW5jYXN0X2RlY29kZWQgcykgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKVxubGV0IHdpdGhfcGF0aCB1cmkgcGF0aCA9XG4gIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHBhdGggaW5cbiAgbWF0Y2ggaG9zdCB1cmksIHBhdGggd2l0aFxuICB8IE5vbmUsIF8gfCBTb21lIF8sIFwiL1wiOjpfIHwgU29tZSBfLCBbXSAtPiB7IHVyaSB3aXRoIHBhdGg9cGF0aCB9XG4gIHwgU29tZSBfLCBfICAtPiB7IHVyaSB3aXRoIHBhdGg9XCIvXCI6OnBhdGggfVxuXG5sZXQgZnJhZ21lbnQgdXJpID0gZ2V0X2RlY29kZWRfb3B0IHVyaS5mcmFnbWVudFxubGV0IHdpdGhfZnJhZ21lbnQgdXJpID1cbiAgZnVuY3Rpb25cbiAgfE5vbmUgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Ob25lIH1cbiAgfFNvbWUgZnJhZyAtPiB7IHVyaSB3aXRoIGZyYWdtZW50PVNvbWUgKFBjdC5jYXN0X2RlY29kZWQgZnJhZykgfVxuXG5sZXQgcXVlcnkgdXJpID0gUXVlcnkua3YgdXJpLnF1ZXJ5XG5sZXQgdmVyYmF0aW1fcXVlcnkgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gUXVlcnkuKG1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gIHwgUmF3IChxcyxfKSAtPiBxc1xuICB8IEtWIFtdIC0+IE5vbmVcbiAgfCBLViBrdiAtPiBTb21lIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWU6KHNjaGVtZSB1cmkpIH5wY3RfZW5jb2RlciBrdilcbilcbmxldCBnZXRfcXVlcnlfcGFyYW0nIHVyaSBrID0gUXVlcnkuKGZpbmQgKGt2IHVyaS5xdWVyeSkgaylcbmxldCBnZXRfcXVlcnlfcGFyYW0gdXJpIGsgPVxuICBtYXRjaCBnZXRfcXVlcnlfcGFyYW0nIHVyaSBrIHdpdGhcbiAgfE5vbmUgLT4gTm9uZVxuICB8U29tZSB2IC0+IFNvbWUgKFN0cmluZy5jb25jYXQgXCIsXCIgdilcblxubGV0IHdpdGhfcXVlcnkgdXJpIHF1ZXJ5ID0geyB1cmkgd2l0aCBxdWVyeT1RdWVyeS5LViBxdWVyeSB9XG5sZXQgcV9zIHEgPSBMaXN0Lm1hcCAoZnVuIChrLHYpIC0+IGssW3ZdKSBxXG5sZXQgd2l0aF9xdWVyeScgdXJpIHF1ZXJ5ID0gd2l0aF9xdWVyeSB1cmkgKHFfcyBxdWVyeSlcbmxldCBhZGRfcXVlcnlfcGFyYW0gdXJpIHAgPSBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAocDo6KGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtJyB1cmkgKGssdikgPVxuICBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAoKGssW3ZdKTo6KGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtcyB1cmkgcHMgPSBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAocHNAKGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtcycgdXJpIHBzID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChxX3MgcHMpQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IHJlbW92ZV9xdWVyeV9wYXJhbSB1cmkgayA9IFF1ZXJ5LihcbiAgeyB1cmkgd2l0aCBxdWVyeT1LViAoTGlzdC5maWx0ZXIgKGZ1biAoaycsXykgLT4gazw+aycpIChrdiB1cmkucXVlcnkpKSB9XG4pXG5cbigqIENvbnN0cnVjdCBlbmNvZGVkIHBhdGggYW5kIHF1ZXJ5IGNvbXBvbmVudHMgKilcbmxldCBwYXRoX2FuZF9xdWVyeSB1cmkgPVxuICBtYXRjaCAocGF0aCB1cmkpLCAocXVlcnkgdXJpKSB3aXRoXG4gIHxcIlwiLCBbXSAtPiBcIi9cIiAoKiBUT0RPOiBXaGF0IGFib3V0IHNhbWUgZG9jdW1lbnQ/ICgvKSAqKVxuICB8XCJcIiwgcSAtPiAoKiBUT0RPOiBXaGF0IGFib3V0IHNhbWUgZG9jdW1lbnQ/ICgvKSAqKVxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIi8/JXNcIiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG4gIHxwLCBbXSAtPiBwXG4gIHxwLCBxIC0+XG4gICAgbGV0IHNjaGVtZSA9IHVuY2FzdF9vcHQgdXJpLnNjaGVtZSBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXM/JXNcIiBwIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgcSlcblxuKCogVE9ETzogZnVuY3Rpb25zIHRvIGFkZCBhbmQgcmVtb3ZlIGZyb20gYSBVUkkgKilcblxuKCogUmVzb2x2ZSBhIFVSSSB3cnQgYSBiYXNlIFVSSSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMj4gKilcbmxldCByZXNvbHZlIHNjaGVtIGJhc2UgdXJpID1cbiAgbGV0IHNjaGVtID0gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCAobWF0Y2ggc2NoZW1lIGJhc2Ugd2l0aFxuICAgICAgfCBOb25lIC0+ICBzY2hlbVxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICApKSBpblxuICBub3JtYWxpemUgc2NoZW1cbiAgICBQYXRoLihtYXRjaCBzY2hlbWUgdXJpLCB1c2VyaW5mbyB1cmksIGhvc3QgdXJpIHdpdGhcbiAgICB8IFNvbWUgXywgXywgXyAtPlxuICAgICAge3VyaSB3aXRoIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICB8IE5vbmUsIFNvbWUgXywgX1xuICAgIHwgTm9uZSwgXywgU29tZSBfIC0+XG4gICAgICB7dXJpIHdpdGggc2NoZW1lPWJhc2Uuc2NoZW1lOyBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBOb25lLCBOb25lIC0+XG4gICAgICBsZXQgdXJpID0ge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgdXNlcmluZm89YmFzZS51c2VyaW5mbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdD1iYXNlLmhvc3Q7IHBvcnQ9YmFzZS5wb3J0fSBpblxuICAgICAgbGV0IHBhdGhfc3RyID0gcGF0aCB1cmkgaW5cbiAgICAgIGlmIHBhdGhfc3RyPVwiXCJcbiAgICAgIHRoZW4geyB1cmkgd2l0aFxuICAgICAgICAgICAgIHBhdGg9YmFzZS5wYXRoO1xuICAgICAgICAgICAgIHF1ZXJ5PW1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gICAgICAgICAgICAgICB8IFF1ZXJ5LlJhdyAoTm9uZSxfKSB8IFF1ZXJ5LktWIFtdIC0+IGJhc2UucXVlcnlcbiAgICAgICAgICAgICAgIHwgXyAtPiB1cmkucXVlcnlcbiAgICAgICAgICAgfVxuICAgICAgZWxzZSBpZiBwYXRoX3N0ci5bMF09Jy8nXG4gICAgICB0aGVuIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgICBlbHNlIHt1cmkgd2l0aFxuICAgICAgICBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgKG1lcmdlIGJhc2UuaG9zdCBiYXNlLnBhdGggdXJpLnBhdGgpO1xuICAgICAgfVxuICAgIClcblxubGV0IGNhbm9uaWNhbGl6ZSB1cmkgPVxuICBsZXQgdXJpID0gcmVzb2x2ZSBcIlwiIGVtcHR5IHVyaSBpblxuICBsZXQgbW9kdWxlIFNjaGVtZSA9XG4gICAgKHZhbCAobW9kdWxlX29mX3NjaGVtZSAodW5jYXN0X29wdCB1cmkuc2NoZW1lKSkgOiBTY2hlbWUpIGluXG4gIHsgdXJpIHdpdGhcbiAgICBwb3J0PVNjaGVtZS5jYW5vbmljYWxpemVfcG9ydCB1cmkucG9ydDtcbiAgICBwYXRoPVNjaGVtZS5jYW5vbmljYWxpemVfcGF0aCB1cmkucGF0aDtcbiAgfVxuXG5sZXQgcHAgcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxubGV0IHBwX2h1bSBwcGYgdXJpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZyB1cmkpXG5cbm1vZHVsZSBQYXJzZXIgPSBzdHJ1Y3RcbiAgb3BlbiBBbmdzdHJvbVxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxuICBsZXQgc3RyaW5nX29mX2NoYXJfbGlzdCBjaGFycyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfY2hhciBjaGFycylcblxuICBsZXQgc2NoZW1lID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHMgLT4gU29tZSAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAodGFrZV93aGlsZSAoZnVuIGMgLT4gYyA8PiAnOicgJiYgYyA8PiAnLycgJiYgYyA8PiAnPycgJiYgYyA8PiAnIycpXG4gICAgICA8KiBjaGFyICc6JylcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgaXNfZGlnaXQgPSBmdW5jdGlvbiAnMCcgLi4gJzknIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGhleF9kaWdpdCA9XG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCBoZXhhZGVjaW1hbCA9IGxpZnQgc3RyaW5nX29mX2NoYXJfbGlzdCAobWFueSBoZXhfZGlnaXQpXG5cbiAgbGV0IGNfZG90ID0gY2hhciAnLidcblxuICBsZXQgY19hdCA9IGNoYXIgJ0AnXG5cbiAgbGV0IGNfY29sb24gPSBjaGFyICc6J1xuXG4gIGxldCBkZWNfb2N0ZXQgPVxuICAgIHRha2Vfd2hpbGUxIChmdW5jdGlvbiAnMCcgLi4gJzknIC0+IHRydWUgfCBfIC0+IGZhbHNlKSA+Pj0gZnVuIG51bSAtPlxuICAgIGlmIGludF9vZl9zdHJpbmcgbnVtIDwgMjU2IHRoZW5cbiAgICAgIHJldHVybiBudW1cbiAgICBlbHNlXG4gICAgICBmYWlsIFwiaW52YWxpZCBvY3RlY3RcIlxuXG4gIGxldCBpcHY0X2FkZHJlc3MgPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHRocmVlIG9uZSAtPiBTdHJpbmcuY29uY2F0IFwiLlwiIHRocmVlIF4gXCIuXCIgXiBvbmUpXG4gICAgICAoY291bnQgMyAoZGVjX29jdGV0IDwqIGNfZG90KSlcbiAgICAgIGRlY19vY3RldFxuXG4gICgqIC0tIGFmdGVyIGRvdWJsZSBjb2xvbiwgSVB2NCBkb3R0ZWQgbm90YXRpb24gY291bGQgYXBwZWFyIGFueXdoZXJlICopXG4gIGxldCBhZnRlcl9kb3VibGVfY29sb24gPVxuICAgIGZpeCAoZnVuIGYgLT5cbiAgICAgICAgbGlzdCBbIGlwdjRfYWRkcmVzcyBdXG4gICAgICAgIDx8PiBsaWZ0MiAoZnVuIHggeSAtPiB4IDo6IHkpIGhleGFkZWNpbWFsIChjX2NvbG9uICo+IGYgPHw+IHJldHVybiBbXSkpXG5cbiAgbGV0IGRvdWJsZV9jb2xvbiBjb3VudCA9XG4gICAgYWZ0ZXJfZG91YmxlX2NvbG9uID4+PSAoZnVuIHJlc3QgLT5cbiAgICBsZXQgZmlsbGVyX2xlbmd0aCA9IDggLSBjb3VudCAtIExpc3QubGVuZ3RoIHJlc3QgaW5cbiAgICBpZiBmaWxsZXJfbGVuZ3RoIDw9IDAgdGhlblxuICAgICAgZmFpbCBcInRvbyBtYW55IHBhcnRzIGluIElQdjYgYWRkcmVzc1wiXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIChcIlwiIDo6IHJlc3QpKVxuICAgIDx8PiByZXR1cm4gW1wiXCJdXG5cbiAgbGV0IHJlYyBwYXJ0ID0gZnVuY3Rpb25cbiAgICB8IDcgLT5cbiAgICAgICgqIG1heCA4IHBhcnRzIGluIGFuIElQdjYgYWRkcmVzcyAqKVxuICAgICAgbGlmdCAoZnVuIHggLT4gWyB4IF0pIGhleGFkZWNpbWFsXG4gICAgfCA2IC0+XG4gICAgICAoKiBhZnRlciA2IHBhcnRzIGl0IGNvdWxkIGVuZCBpbiBJUHY0IGRvdHRlZCBub3RhdGlvbiAqKVxuICAgICAgbGlzdCBbIGlwdjRfYWRkcmVzcyBdIDx8PiBoZXhfcGFydCA2XG4gICAgfCBuIC0+XG4gICAgICBoZXhfcGFydCBuXG5cbiAgYW5kIGhleF9wYXJ0IG4gPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHggeSAtPiB4IDo6IHkpXG4gICAgICBoZXhhZGVjaW1hbFxuICAgICAgKGNfY29sb24gKj4gKGNfY29sb24gKj4gZG91YmxlX2NvbG9uIChuICsgMSkgPHw+IHBhcnQgKG4gKyAxKSkpXG5cbiAgbGV0IHJlYyBzcGxpdF93aXRoIGYgeHMgPVxuICAgIG1hdGNoIHhzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBbXSwgW11cbiAgICB8IHkgOjogeXMgLT5cbiAgICAgIGlmIGYgeSB0aGVuXG4gICAgICAgIGxldCB6cywgdHMgPSBzcGxpdF93aXRoIGYgeXMgaW5cbiAgICAgICAgeSA6OiB6cywgdHNcbiAgICAgIGVsc2VcbiAgICAgICAgW10sIHhzXG5cbiAgbGV0IGlwdjYgPVxuICAgIGxldCBmb3JtYXRfYWRkciBzZWdtZW50cyA9XG4gICAgICBsZXQgYmVmb3JlX2RvdWJsZV9jb2xvbiwgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICAgICAgc3BsaXRfd2l0aCAoZnVuIHNlZ21lbnQgLT4gc2VnbWVudCA8PiBcIlwiKSBzZWdtZW50c1xuICAgICAgaW5cbiAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuY29uY2F0IFwiOlwiIGJlZm9yZV9kb3VibGVfY29sb24gaW5cbiAgICAgIGxldCByZXMgPVxuICAgICAgICBtYXRjaCBhZnRlcl9kb3VibGVfY29sb24gd2l0aFxuICAgICAgICB8IFwiXCIgOjogeHMgLT5cbiAgICAgICAgICBiZWZvcmUgXiBcIjo6XCIgXiBTdHJpbmcuY29uY2F0IFwiOlwiIHhzXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGJlZm9yZVxuICAgICAgaW5cbiAgICAgIHJlc1xuICAgIGluXG4gICAgbGlmdCBmb3JtYXRfYWRkciAoY19jb2xvbiAqPiBjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAwIDx8PiBwYXJ0IDApXG5cbiAgbGV0IGlwdjZfYWRkcmVzcyA9XG4gICAgKGNoYXIgJ1snKSAqPiBpcHY2IDwqIChjaGFyICddJylcblxuICBsZXQgcGN0X2VuY29kZWQgPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHBjdCBkaWdpdHMgLT4gc3RyaW5nX29mX2NoYXJfbGlzdCAocGN0IDo6IGRpZ2l0cykpXG4gICAgICAoY2hhciAnJScpXG4gICAgICAoY291bnQgMiBoZXhfZGlnaXQpXG5cbiAgbGV0IHN1Yl9kZWxpbXMgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyEnIHwgJyQnIHwgJyYnIHwgJ1xcJycgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnLCcgfCAnOycgfCAnPScgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCB1bnJlc2VydmVkID1cbiAgICAoKiBcIltBLVphLXowLTktLl9+XVwiICopXG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICcwJyAuLiAnOScgfCAnLScgfCAnLicgfCAnXycgfCAnficgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCByZWdfbmFtZSA9XG4gICAgbGlmdFxuICAgICAgKFN0cmluZy5jb25jYXQgXCJcIilcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICBdKSlcblxuICBsZXQgaG9zdCA9XG4gICAgY2hvaWNlXG4gICAgICBbIGlwdjRfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY0X2xpdGVyYWwgaClcbiAgICAgIDsgaXB2Nl9hZGRyZXNzID4+fCAoZnVuIGggLT4gYElwdjZfbGl0ZXJhbCBoKVxuICAgICAgOyByZWdfbmFtZSA+PnwgKGZ1biBzIC0+IGBIb3N0IChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgICgqIFRPRE8oZGlub3NhdXJlKTogQWNjb3JkaW5nIHRvIFJGQzM5ODY6XG5cbiAgICAgICAgIGhvc3QgICAgICAgID0gSVAtbGl0ZXJhbCAvIElQdjRhZGRyZXNzIC8gcmVnLW5hbWVcbiAgICAgICAgIElQLWxpdGVyYWwgID0gXCJbXCIgKCBJUHY2YWRkcmVzcyAvIElQdkZ1dHVyZSAgKSBcIl1cIlxuICAgICAgICAgSVB2RnV0dXJlICAgPSBcInZcIiAxKkhFWERJRyBcIi5cIiAxKiggdW5yZXNlcnZlZCAvIHN1Yi1kZWxpbXMgLyBcIjpcIiApXG5cbiAgICAgICAgIElQdkZ1dHVyZSBpcyBub3QgaW1wbGVtZW50ZWQuIFdlIHNob3VsZCBoYW5kbGUgaXQ6XG5cbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuICAgICAgICopXG4gICAgICBdXG5cbiAgbGV0IHVzZXJpbmZvID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHMgPSBTdHJpbmcuY29uY2F0IFwiXCIgeCBpblxuICAgICAgICBTb21lIChVc2VyaW5mby51c2VyaW5mb19vZl9lbmNvZGVkIHMpKVxuICAgICAgKG1hbnlcbiAgICAgICAgIChjaG9pY2VcbiAgICAgICAgICAgIFsgc3RyaW5nX29mX2NoYXIgPCQ+IHVucmVzZXJ2ZWRcbiAgICAgICAgICAgIDsgcGN0X2VuY29kZWRcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IHN1Yl9kZWxpbXNcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IGNfY29sb25cbiAgICAgICAgICAgIF0pXG4gICAgICA8KiBjX2F0KVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBwb3J0ID1cbiAgICBwZWVrX2NoYXIgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lICc6JyAtPlxuICAgICAgY19jb2xvbiAqPiB0YWtlX3doaWxlIGlzX2RpZ2l0ID4+fCBmdW4gcG9ydCAtPlxuICAgICAgbGV0IGRlY29kZWQgPSBQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHBvcnQpIGluXG4gICAgICAodHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKFBjdC51bmNhc3RfZGVjb2RlZCBkZWNvZGVkKSkgd2l0aCBfIC0+IE5vbmUpXG4gICAgfCBTb21lIF8gfCBOb25lIC0+XG4gICAgICByZXR1cm4gTm9uZVxuXG4gIGxldCBhdXRob3JpdHkgPVxuICAgIHN0cmluZyBcIi8vXCJcbiAgICAqPiBsaWZ0M1xuICAgICAgICAgKGZ1biB1c2VyaW5mbyBob3N0IHBvcnQgLT5cbiAgICAgICAgICAgdXNlcmluZm8sIFNvbWUgaG9zdCwgcG9ydClcbiAgICAgICAgIHVzZXJpbmZvXG4gICAgICAgICBob3N0XG4gICAgICAgICBwb3J0XG4gICAgPHw+IHJldHVybiAoTm9uZSwgTm9uZSwgTm9uZSlcblxuICBsZXQgcGF0aCA9XG4gICAgbGlmdFxuICAgICAgUGF0aC5wYXRoX29mX2VuY29kZWRcbiAgICAgICh0YWtlX3doaWxlIChmdW5jdGlvbiAnPycgfCAnIycgLT4gZmFsc2UgfCBfIC0+IHRydWUpKVxuXG4gIGxldCBxdWVyeSA9XG4gICAgbGlmdFxuICAgICAgUXVlcnkub2ZfcmF3XG4gICAgICAoY2hhciAnPycgKj4gdGFrZV90aWxsIChmdW5jdGlvbiAnIycgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpKVxuICAgIDx8PiByZXR1cm4gKFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSkpXG5cbiAgbGV0IGZyYWdtZW50ID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHMgLT4gU29tZSAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoY2hhciAnIycgKj4gdGFrZV93aGlsZSAoZnVuIF8gLT4gdHJ1ZSkpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IF91cmlfcmVmZXJlbmNlID1cbiAgICBsaWZ0NFxuICAgICAgKGZ1biBzY2hlbWUgKHVzZXJpbmZvLCBob3N0LCBwb3J0KSBwYXRoIHF1ZXJ5IGZyYWdtZW50IC0+XG4gICAgICAgIG5vcm1hbGl6ZSBzY2hlbWUgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSlcbiAgICAgIHNjaGVtZVxuICAgICAgYXV0aG9yaXR5XG4gICAgICBwYXRoXG4gICAgICBxdWVyeVxuICAgIDwqPiBmcmFnbWVudFxuXG4gICgqIFhYWChhbm1vbnRlaXJvKTogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3aXRoIHRoZSBvbGQgcmVnZXggcGFyc2VyLCB3ZVxuICAgKiBvbmx5IHBhcnNlIHVudGlsIHRoZSBmaXJzdCBuZXdsaW5lIGNoYXJhY3RlciBhbmQgZHJvcCBldmVyeXRoaW5nIGVsc2VcbiAgICogYWZ0ZXIgdGhhdCAqKVxuICBsZXQgdXJpX3JlZmVyZW5jZSA9XG4gICAgdGFrZV93aGlsZSAoZnVuY3Rpb24gfCAnXFxuJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSkgPj58IGZ1biBzIC0+XG4gICAgICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIF91cmlfcmVmZXJlbmNlIHMgd2l0aFxuICAgICAgfCBPayB0IC0+IHRcbiAgICAgIHwgRXJyb3IgXyAtPlxuICAgICAgICAoKiBTaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiBpZiB0aGUgcGFyc2VyIGlzIGZvcmdpdmluZy4gKilcbiAgICAgICAgZW1wdHlcbmVuZFxuXG5sZXQgZGVjb2RlX2hvc3QgaG9zdCA9XG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgUGFyc2VyLmhvc3QgaG9zdCB3aXRoXG4gIHwgT2sgcGFyc2VkIC0+IHBhcnNlZFxuICB8IEVycm9yIF8gLT5cbiAgICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5pcHY2IGhvc3Qgd2l0aFxuICAgIHwgT2sgcGFyc2VkIC0+IChgSXB2Nl9saXRlcmFsIHBhcnNlZClcbiAgICB8IEVycm9yIF8gLT4gKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIGhvc3QpKVxuXG4oKiBNYWtlIGEgVVJJIHJlY29yZC4gVGhpcyBpcyBhIGJpdCBtb3JlIGluZWZmaWNpZW50IHRoYW4gaXQgbmVlZHMgdG8gYmUgZHVlIHRvIHRoZVxuICogY2FzdGluZy91bmNhc3RpbmcgKHdoaWNoIGlzbid0IGZ1bGx5IGlkZW50aXR5IGR1ZSB0byB0aGUgb3B0aW9uIGJveCksIGJ1dCBpdCBpc1xuICogbm8gYmlnIGRlYWwgZm9yIG5vdy5cbiopXG5sZXQgbWFrZSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgbGV0IGRlY29kZSA9IGZ1bmN0aW9uXG4gICAgfFNvbWUgeCAtPiBTb21lIChQY3QuY2FzdF9kZWNvZGVkIHgpIHxOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGhvc3QgPSBtYXRjaCB1c2VyaW5mbywgaG9zdCwgcG9ydCB3aXRoXG4gICAgfCBfLCBTb21lIF8sIF8gfCBOb25lLCBOb25lLCBOb25lIC0+IGhvc3RcbiAgICB8IFNvbWUgXywgTm9uZSwgXyB8IF8sIE5vbmUsIFNvbWUgXyAtPiBTb21lIFwiXCJcbiAgaW5cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSkgaW5cbiAgbGV0IHBhdGggPSBtYXRjaCBwYXRoIHdpdGhcbiAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcCBpblxuICAgICAgbWF0Y2ggaG9zdCwgcGF0aCB3aXRoXG4gICAgICB8IE5vbmUsIF8gfCBTb21lIF8sIFwiL1wiOjpfIHwgU29tZSBfLCBbXSAtPiBwYXRoXG4gICAgICB8IFNvbWUgXywgXyAgLT4gXCIvXCI6OnBhdGhcbiAgaW5cbiAgbGV0IHF1ZXJ5ID0gbWF0Y2ggcXVlcnkgd2l0aFxuICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgIHwgU29tZSBwIC0+IFF1ZXJ5LktWIHBcbiAgaW5cbiAgbGV0IHNjaGVtZSA9IGRlY29kZSBzY2hlbWUgaW5cbiAgbm9ybWFsaXplIHNjaGVtZVxuICAgIHsgc2NoZW1lOyB1c2VyaW5mbztcbiAgICAgIGhvc3QgPVxuICAgICAgICAobWF0Y2ggaG9zdCB3aXRoXG4gICAgICAgIHwgU29tZSBob3N0IC0+IFNvbWUgKGRlY29kZV9ob3N0IGhvc3QpXG4gICAgICAgIHwgTm9uZSAtPiBOb25lKTtcbiAgICAgIHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG5sZXQgd2l0aF9ob3N0IHVyaSBob3N0ID1cbiAgeyB1cmkgd2l0aFxuICAgIGhvc3QgPSAobWF0Y2ggaG9zdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gIH1cblxubGV0IHdpdGhfdXJpID9zY2hlbWUgP3VzZXJpbmZvID9ob3N0ID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgdXJpID1cbiAgbGV0IHdpdGhfcGF0aF9vcHQgdSBvID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gd2l0aF9wYXRoIHUgXCJcIlxuICAgIHwgU29tZSBwIC0+IHdpdGhfcGF0aCB1IHBcbiAgaW5cbiAgbGV0IHdpdGhfcXVlcnlfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcXVlcnkgdSBbXVxuICAgIHwgU29tZSBxIC0+IHdpdGhfcXVlcnkgdSBxXG4gIGluXG4gIGxldCB3aXRoXyBmIG8gdSA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHVcbiAgICB8IFNvbWUgeCAtPiBmIHUgeFxuICBpblxuICB3aXRoXyB3aXRoX3NjaGVtZSBzY2hlbWUgdXJpXG4gIHw+IHdpdGhfIHdpdGhfdXNlcmluZm8gdXNlcmluZm9cbiAgfD4gd2l0aF8gd2l0aF9ob3N0IGhvc3RcbiAgfD4gd2l0aF8gd2l0aF9wb3J0IHBvcnRcbiAgfD4gd2l0aF8gd2l0aF9wYXRoX29wdCBwYXRoXG4gIHw+IHdpdGhfIHdpdGhfcXVlcnlfb3B0IHF1ZXJ5XG4gIHw+IHdpdGhfIHdpdGhfZnJhZ21lbnQgZnJhZ21lbnRcblxubGV0IG9mX3N0cmluZyBzID1cbiAgKCogVG8gcHJlc2VydmUgdGhlIG9sZCByZWdleCBwYXJzZXIncyBiZWhhdmlvciwgd2Ugb25seSBwYXJzZSBhIHByZWZpeCwgYW5kXG4gICAqIHN0b3Agd2hlbmV2ZXIgd2UgY2FuJ3QgcGFyc2UgbW9yZS4gKilcbiAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOlByZWZpeCBQYXJzZXIudXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgfCBPayB0IC0+IHRcbiAgfCBFcnJvciBfIC0+XG4gICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgZW1wdHlcblxubW9kdWxlIEFic29sdXRlX2h0dHAgPSBzdHJ1Y3RcbiAgdHlwZSB1cmkgPSB0XG4gIHR5cGUgdCA9XG4gICAgeyBzY2hlbWUgOiBbIGBIdHRwIHwgYEh0dHBzIF07XG4gICAgICB1c2VyaW5mbzogVXNlcmluZm8udCBvcHRpb247XG4gICAgICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IGBJcHY2X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IGBIb3N0IG9mIFBjdC5kZWNvZGVkXTtcbiAgICAgIHBvcnQgOiBpbnQgb3B0aW9uO1xuICAgICAgcGF0aCA6IFBhdGgudDtcbiAgICAgIHF1ZXJ5IDogUXVlcnkudDtcbiAgICAgIGZyYWdtZW50IDogUGN0LmRlY29kZWQgb3B0aW9uXG4gICAgfVxuXG4gIGxldCAoIGxldCogKSA9IFJlc3VsdC5iaW5kXG5cbiAgbGV0IHRvX3VyaSB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9ID1cbiAgICBsZXQgc2NoZW1lID1cbiAgICAgIG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICB8IGBIdHRwIC0+IFBjdC5jYXN0X2RlY29kZWQgXCJodHRwXCJcbiAgICAgIHwgYEh0dHBzIC0+IFBjdC5jYXN0X2RlY29kZWQgXCJodHRwc1wiXG4gICAgaW5cbiAgICAoeyBzY2hlbWUgPSBTb21lIHNjaGVtZTtcbiAgICAgICB1c2VyaW5mbztcbiAgICAgICBob3N0ID0gU29tZSBob3N0O1xuICAgICAgIHBvcnQ7XG4gICAgICAgcGF0aDtcbiAgICAgICBxdWVyeTtcbiAgICAgICBmcmFnbWVudCB9IDogdXJpKVxuICA7O1xuXG4gIGxldCBvZl91cmkgKHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH06IHVyaSkgPVxuICAgIGxldCogc2NoZW1lID1cbiAgICAgIG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRXJyb3IgKGBNc2cgXCJObyBzY2hlbWUgcHJlc2VudCBpbiBVUklcIilcbiAgICAgIHwgU29tZSBzY2hlbWUgLT5cbiAgICAgICAgKG1hdGNoIFBjdC51bmNhc3RfZGVjb2RlZCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBcImh0dHBcIiAtPiBPayBgSHR0cFxuICAgICAgICAgfCBcImh0dHBzXCIgLT4gT2sgYEh0dHBzXG4gICAgICAgICB8IHVuc3VwcG9ydGVkX3NjaGVtZSAtPlxuICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgIChgTXNnXG4gICAgICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJPbmx5IGh0dHAgYW5kIGh0dHBzIFVSSXMgYXJlIHN1cHBvcnRlZC4gJXMgaXMgaW52YWxpZC5cIlxuICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkX3NjaGVtZSkpKVxuICAgIGluXG4gICAgbGV0KiBob3N0ID0gT3B0aW9uLnRvX3Jlc3VsdCB+bm9uZTooYE1zZyBcImhvc3QgaXMgcmVxdWlyZWQgZm9yIEhUVFAoUykgdXJpc1wiKSBob3N0IGluXG4gICAgT2sgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9IG1hdGNoIG9mX3N0cmluZyBzIHw+IG9mX3VyaSB3aXRoXG4gICAgfCBPayB0IC0+IHRcbiAgICB8IEVycm9yIChgTXNnIGVycm9yKSAtPiBmYWlsd2l0aCBlcnJvclxuXG4gIGxldCB0b19zdHJpbmcgP3BjdF9lbmNvZGVyIHQgPSB0b191cmkgdCB8PiB0b19zdHJpbmcgP3BjdF9lbmNvZGVyXG5cbiAgbGV0IG5vcm1hbGl6ZSB0ID1cbiAgICB7IHQgd2l0aFxuICAgICAgaG9zdCA9IG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgICAgfCAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgKGBJcHY0X2xpdGVyYWwgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaG9zdCkpXG4gICAgICAgfCAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgKGBJcHY2X2xpdGVyYWwgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaG9zdCkpXG4gICAgICAgfCAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSAoUGN0LnVuY2FzdF9kZWNvZGVkIGhvc3QpKSkpXG4gICAgfVxuXG4gIGxldCBtYWtlIH5zY2hlbWUgfmhvc3QgP3VzZXJpbmZvID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgKCkgPVxuICAgIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgICAgfFNvbWUgeCAtPiBTb21lIChQY3QuY2FzdF9kZWNvZGVkIHgpIHxOb25lIC0+IE5vbmUgaW5cbiAgICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gICAgbGV0IHBhdGggPSBtYXRjaCBwYXRoIHdpdGhcbiAgICAgIHxOb25lIC0+IFtdIHwgU29tZSBwIC0+XG4gICAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICAgIHwgIFwiL1wiOjpfIHwgIFtdIC0+IHBhdGhcbiAgICAgICAgfCBfICAtPiBcIi9cIjo6cGF0aFxuICAgIGluXG4gICAgbGV0IHF1ZXJ5ID0gbWF0Y2ggcXVlcnkgd2l0aFxuICAgICAgfCBOb25lIC0+IFF1ZXJ5LktWIFtdXG4gICAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gICAgaW5cbiAgICBub3JtYWxpemVcbiAgICAgIHsgc2NoZW1lO1xuICAgICAgICB1c2VyaW5mbztcbiAgICAgICAgaG9zdD0gZGVjb2RlX2hvc3QgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50PWRlY29kZSBmcmFnbWVudCB9XG5cbiAgbGV0IGhvc3QgdCA9XG4gICAgbWF0Y2ggdC5ob3N0IHdpdGhcbiAgICB8IChgSXB2NF9saXRlcmFsIGggfCBgSXB2Nl9saXRlcmFsIGgpIC0+IGhcbiAgICB8IChgSG9zdCBoKSAtPiAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbiAgbGV0IHNjaGVtZSB0ID0gdC5zY2hlbWVcbmVuZFxuIiwib3BlbiBVcmlcblxubW9kdWxlIERlcml2ZWQgPVxuc3RydWN0XG5cblx0b3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcblxuXHR0eXBlIGNvbXBvbmVudCA9IFtcblx0ICB8IGBTY2hlbWVcblx0ICB8IGBBdXRob3JpdHlcblx0ICB8IGBVc2VyaW5mbyAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuXHQgIHwgYEhvc3QgKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBQYXRoXG5cdCAgfCBgUXVlcnlcblx0ICB8IGBRdWVyeV9rZXlcblx0ICB8IGBRdWVyeV92YWx1ZVxuXHQgIHwgYEZyYWdtZW50XG4gICAgICAgICAgfCBgR2VuZXJpY1xuICAgICAgICAgIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKVxuXHRdIFtAQGRlcml2aW5nIHNleHBdXG5cblx0dHlwZSB0ID0ge1xuICAgICAgICAgIHNjaGVtZTogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICB1c2VyaW5mbzogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBob3N0OiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBvcnQ6IGludCBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcGF0aDogc3RyaW5nIFtAZGVmYXVsdCBcIlwiXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHF1ZXJ5OiAoc3RyaW5nICogc3RyaW5nIGxpc3QpIGxpc3QgW0BzZXhwLmxpc3RdO1xuICAgICAgICAgIGZyYWdtZW50OiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdXG5cdH0gW0BAZGVyaXZpbmcgc2V4cF1cblxuZW5kXG5cbm9wZW4gRGVyaXZlZFxuXG5sZXQgY29tcG9uZW50X29mX3NleHAgPSBjb21wb25lbnRfb2Zfc2V4cFxubGV0IHNleHBfb2ZfY29tcG9uZW50ID0gc2V4cF9vZl9jb21wb25lbnRcblxubGV0IHRfb2Zfc2V4cCBzZXhwID1cblx0bGV0IHQgPSB0X29mX3NleHAgc2V4cCBpblxuXHRVcmkubWFrZVxuXHRcdD9zY2hlbWU6dC5zY2hlbWVcblx0XHQ/dXNlcmluZm86dC51c2VyaW5mb1xuXHRcdD9ob3N0OnQuaG9zdFxuXHRcdD9wb3J0OnQucG9ydFxuXHRcdH5wYXRoOnQucGF0aFxuXHRcdH5xdWVyeTp0LnF1ZXJ5XG5cdFx0P2ZyYWdtZW50OnQuZnJhZ21lbnRcblx0XHQoKVxuXG5sZXQgc2V4cF9vZl90IHQgPVxuXHRzZXhwX29mX3Qge1xuXHRcdHNjaGVtZSA9IHNjaGVtZSB0O1xuXHRcdHVzZXJpbmZvID0gdXNlcmluZm8gdDtcblx0XHRob3N0ID0gaG9zdCB0O1xuXHRcdHBvcnQgPSBwb3J0IHQ7XG5cdFx0cGF0aCA9IHBhdGggdDtcblx0XHRxdWVyeSA9IHF1ZXJ5IHQ7XG5cdFx0ZnJhZ21lbnQgPSBmcmFnbWVudCB0XG5cdH1cblxudHlwZSBjb21wb25lbnQgPSBVcmkuY29tcG9uZW50XG5sZXQgY29tcGFyZSBhIGIgPSBVcmkuY29tcGFyZSBhIGJcbmxldCBlcXVhbCBhIGIgPSBVcmkuZXF1YWwgYSBiXG50eXBlIHQgPSBVcmkudFxuIiwib3BlbiBKc19vZl9vY2FtbFxub3BlbiBDb3JlXG5cbmxldCBpc192YWxpZF9pZCBzID1cbiAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIlxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gZmFsc2VcbiAgICB8IF8gLT5cbiAgICAgIFN0cmluZy5mb3JfYWxsIHMgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKSlcbjs7XG5cbmxldCBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgPSBpc192YWxpZF9pZCBuYW1lICYmIG5vdCAoU2V0Lm1lbSBzZWVuIG5hbWUpXG5cbmxldCByZWMga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIGxpc3QgPVxuICBtYXRjaCAobGlzdCA6IFNleHAudCBsaXN0KSB3aXRoXG4gIHwgW10gLT4gU29tZSAoTGlzdC5yZXYgcmV2X2FjYylcbiAgfCBBdG9tIG5hbWUgOjogcmVzdCB3aGVuIGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSAtPlxuICAgIGxldCByZXZfYWNjID0gKG5hbWUsIE5vbmUpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBMaXN0IFsgQXRvbSBuYW1lOyB2IF0gOjogcmVzdCB3aGVuIGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSAtPlxuICAgIGxldCByZXZfYWNjID0gKG5hbWUsIFNvbWUgdikgOjogcmV2X2FjYyBpblxuICAgIGxldCBzZWVuID0gU2V0LmFkZCBzZWVuIG5hbWUgaW5cbiAgICBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgcmVzdFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHJlYyBhbnlfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gIHwgU2V4cC5BdG9tIHMgLT4gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHMpXG4gIHwgU2V4cC5MaXN0IFsgQXRvbSBuYW1lOyB2IF0gLT4gSnMuVW5zYWZlLm9iaiBbfCBuYW1lLCBhbnlfb2Zfc2V4cCB2IHxdXG4gIHwgU2V4cC5MaXN0IGwgLT5cbiAgICAobWF0Y2gga2V5X3ZhbHVlX3NoYXBlIH5zZWVuOlN0cmluZy5TZXQuZW1wdHkgfnJldl9hY2M6W10gbCB3aXRoXG4gICAgIHwgTm9uZSAtPiBMaXN0Lm1hcCBsIH5mOmFueV9vZl9zZXhwIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgW10gLT4gSnMuYXJyYXkgW3x8XSB8PiBKcy5VbnNhZmUuaW5qZWN0XG4gICAgIHwgU29tZSBsIC0+XG4gICAgICAgSnMuVW5zYWZlLm9ialxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IG5hbWUsIFNvbWUgdiAtPiBuYW1lLCBhbnlfb2Zfc2V4cCB2XG4gICAgICAgICAgICB8IG5hbWUsIE5vbmUgLT4gbmFtZSwgSnMuVW5zYWZlLmluamVjdCBKcy5udWxsKVxuICAgICAgICAgIHw+IEFycmF5Lm9mX2xpc3QpKVxuOztcblxubGV0IGxvZ19zIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoYW55X29mX3NleHAgc2V4cClcbmxldCBsb2dfc19hc19zdHJpbmcgc2V4cCA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKSlcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHUgPSB7IHNvbWVfbmFtZSA6IHN0cmluZyB9IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPVxuICAgICAgfCBGb29cbiAgICAgIHwgQmFyIG9mXG4gICAgICAgICAgeyBmaWVsZDEgOiB1XG4gICAgICAgICAgOyBmaWVsZDIgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuICBpblxuICBsZXQgdG9fc3RyaW5nIDogSnMuVW5zYWZlLmFueSAtPiBzdHJpbmcgPVxuICAgIGZ1biBhbnkgLT4gSnMudG9fc3RyaW5nIChKcy5fSlNPTiMjc3RyaW5naWZ5IGFueSA6IEpzLmpzX3N0cmluZyBKcy50KVxuICBpblxuICBsZXQgb3BlbiBNIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgKHNleHBfb2ZfdCBGb28pKSk7XG4gIFslZXhwZWN0IHt8IFwiRm9vXCIgfH1dO1xuICBwcmludF9lbmRsaW5lXG4gICAgKHRvX3N0cmluZ1xuICAgICAgIChhbnlfb2Zfc2V4cFxuICAgICAgICAgIChzZXhwX29mX3RcbiAgICAgICAgICAgICAoQmFyIHsgZmllbGQxID0geyBzb21lX25hbWUgPSBcImRlYnVnXCIgfTsgZmllbGQyID0gU29tZSBcIm90aGVyIHN0cmluZ1wiIH0pKSkpO1xuICBbJWV4cGVjdCB7fCB7XCJCYXJcIjpudWxsLFwiZmllbGQxXCI6e1wic29tZV9uYW1lXCI6XCJkZWJ1Z1wifSxcImZpZWxkMlwiOltcIm90aGVyIHN0cmluZ1wiXX0gfH1dXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJkdXBsaWNhdGUga2V5cyBhcmUgZGlzcGxheWVkIGNvcnJlY3RseVwiID1cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IHNleHBfd2l0aF9kdXBsaWNhdGVfa2V5cyA9IHt8ICgoQSBCKSAoQSBDKSkgfH0gfD4gU2V4cC5vZl9zdHJpbmcgaW5cbiAgcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nIChhbnlfb2Zfc2V4cCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMpKTtcbiAgWyVleHBlY3Qge3wgW3tcIkFcIjpcIkJcIn0se1wiQVwiOlwiQ1wifV0gfH1dXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJubyBzdGFjayBvdmVyZmxvd1wiID1cbiAgbGV0IGEgPSBBcnJheS5pbml0IDEwMDAwIH5mOihmdW4gaSAtPiBzcHJpbnRmIFwiZiVkXCIgaSwgaSkgaW5cbiAgbGV0IHNleHAgPSBbJXNleHBfb2Y6IChzdHJpbmcgKiBpbnQpIGFycmF5XSBhIGluXG4gIGxldCB4ID0gYW55X29mX3NleHAgc2V4cCBpblxuICBwcmludGYgXCIlZFwiIChKcy5VbnNhZmUuY29lcmNlIHgpIyMuZjk5OTtcbiAgWyVleHBlY3Qge3wgOTk5IHx9XVxuOztcbiIsIm1vZHVsZSBBc3luY19qc19kZWJ1ZyA9IERlYnVnXG5vcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVcmlcblxuICBsZXQgc2V4cF9vZl90ID0gVXJpX3NleHAuc2V4cF9vZl90XG5lbmRcblxubW9kdWxlIFdlYnNvY2tldF9jb25uZWN0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBUID0gQXN5bmNfcnBjX2tlcm5lbC5ScGMuQ29ubmVjdGlvblxuXG4gIHR5cGUgKCdyZXN0LCAnaW1wbGVtZW50YXRpb25zKSBjbGllbnRfdCA9XG4gICAgP3VyaTpVcmkudFxuICAgIC0+ID9oZWFydGJlYXRfY29uZmlnOlQuSGVhcnRiZWF0X2NvbmZpZy50XG4gICAgLT4gP2Rlc2NyaXB0aW9uOkluZm8udFxuICAgIC0+ID9pbXBsZW1lbnRhdGlvbnM6J2ltcGxlbWVudGF0aW9ucyBULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMudFxuICAgIC0+ICdyZXN0XG5cbiAgbW9kdWxlIENsb3NlX2NvZGUgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBvZl9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQgLT4gdFxuICAgIHZhbCBub3JtYWxfY2xvc3VyZSA6IHRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSBjbG9zZV9ldmVudF9jb2RlID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgYWxsX29mX2Nsb3NlX2V2ZW50X2NvZGUgPSBbXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgR29pbmdfYXdheVxuICAgICAgfCBQcm90b2NvbF9lcnJvclxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IE5vX3N0YXR1c19SZWNlaXZlZFxuICAgICAgfCBBYm5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IFBvbGljeV92aW9sYXRpb25cbiAgICAgIHwgTWVzc2FnZV90b29fYmlnXG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IEludGVybmFsX2Vycm9yXG4gICAgICB8IFNlcnZpY2VfcmVzdGFydFxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgQmFkX2dhdGV3YXlcbiAgICAgIHwgVExTX2hhbmRzaGFrZVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgb2YgY2xvc2VfZXZlbnRfY29kZVxuICAgICAgfCBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgb2YgY2xvc2VfZXZlbnRfY29kZVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF1cblxuICAgIGxldCBub3JtYWxfY2xvc3VyZSA9IE5vcm1hbF9jbG9zdXJlXG5cbiAgICBsZXQgb2ZfaW50ID0gZnVuY3Rpb25cbiAgICAgIHwgMTAwMCAtPiBOb3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDAxIC0+IEdvaW5nX2F3YXlcbiAgICAgIHwgMTAwMiAtPiBQcm90b2NvbF9lcnJvclxuICAgICAgfCAxMDAzIC0+IFVuc3VwcG9ydGVkX2RhdGFcbiAgICAgIHwgMTAwNSAtPiBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgMTAwNiAtPiBBYm5vcm1hbF9jbG9zdXJlXG4gICAgICB8IDEwMDcgLT4gSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGFcbiAgICAgIHwgMTAwOCAtPiBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IDEwMDkgLT4gTWVzc2FnZV90b29fYmlnXG4gICAgICB8IDEwMTAgLT4gTWlzc2luZ19leHRlbnNpb25cbiAgICAgIHwgMTAxMSAtPiBJbnRlcm5hbF9lcnJvclxuICAgICAgfCAxMDEyIC0+IFNlcnZpY2VfcmVzdGFydFxuICAgICAgfCAxMDEzIC0+IFRyeV9hZ2Fpbl9sYXRlclxuICAgICAgfCAxMDE0IC0+IEJhZF9nYXRld2F5XG4gICAgICB8IDEwMTUgLT4gVExTX2hhbmRzaGFrZVxuICAgICAgfCBjb2RlIC0+XG4gICAgICAgIGlmIGNvZGUgPj0gMzAwMCAmJiBjb2RlIDw9IDQ5OTlcbiAgICAgICAgdGhlbiBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgICAgICBlbHNlIEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlXG4gICAgOztcblxuICAgIGxldCBvZl9ldmVudCBjbG9zZV9ldmVudCA9IG9mX2ludCBjbG9zZV9ldmVudCMjLmNvZGVcblxuICAgIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgICAgfCBOb3JtYWxfY2xvc3VyZSAtPiAxMDAwXG4gICAgICB8IEdvaW5nX2F3YXkgLT4gMTAwMVxuICAgICAgfCBQcm90b2NvbF9lcnJvciAtPiAxMDAyXG4gICAgICB8IFVuc3VwcG9ydGVkX2RhdGEgLT4gMTAwM1xuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWQgLT4gMTAwNVxuICAgICAgfCBBYm5vcm1hbF9jbG9zdXJlIC0+IDEwMDZcbiAgICAgIHwgSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGEgLT4gMTAwN1xuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uIC0+IDEwMDhcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIC0+IDEwMDlcbiAgICAgIHwgTWlzc2luZ19leHRlbnNpb24gLT4gMTAxMFxuICAgICAgfCBJbnRlcm5hbF9lcnJvciAtPiAxMDExXG4gICAgICB8IFNlcnZpY2VfcmVzdGFydCAtPiAxMDEyXG4gICAgICB8IFRyeV9hZ2Fpbl9sYXRlciAtPiAxMDEzXG4gICAgICB8IEJhZF9nYXRld2F5IC0+IDEwMTRcbiAgICAgIHwgVExTX2hhbmRzaGFrZSAtPiAxMDE1XG4gICAgICB8IFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIGNvZGUgLT4gY29kZVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IFwidG9faW50IC0+IG9mX2ludCByb3VuZC10cmlwXCIgPVxuICAgICAgTGlzdC5pdGVyIGFsbCB+ZjooZnVuIHQgLT4gYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IHRdIChvZl9pbnQgKHRvX2ludCB0KSkgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGNsb3NlX3dlYnNvY2tldCAod2Vic29ja2V0IDogV2ViU29ja2V0cy53ZWJTb2NrZXQgSnMudCkgcmVhc29uID1cbiAgICAoKiBbY2xvc2Vfd2l0aENvZGVBbmRSZWFzb25dIGRvZXMgbm90aGluZyBpZiB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IENsb3NlZC4gKilcbiAgICBsZXQgY2xvc2UgcmVhc29uID1cbiAgICAgICgqIFRoZSBjb2RlIG11c3QgYmUgZWl0aGVyIDEwMDAgKE5vcm1hbF9jbG9zdXJlKSwgb3IgYmV0d2VlbiAzMDAwIGFuZCA0OTk5XG4gICAgICAgICAoVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlKS4gKilcbiAgICAgIHdlYnNvY2tldCMjY2xvc2Vfd2l0aENvZGVBbmRSZWFzb25cbiAgICAgICAgQ2xvc2VfY29kZS4odG9faW50IG5vcm1hbF9jbG9zdXJlKVxuICAgICAgICAoSnMuc3RyaW5nIHJlYXNvbilcbiAgICBpblxuICAgIG1hdGNoIGNsb3NlIHJlYXNvbiB3aXRoXG4gICAgfCAoKSAtPiAoKVxuICAgIHwgZXhjZXB0aW9uIChfIDogRXhuLnQpIC0+XG4gICAgICAoKiB0aGlzIGNhbiBmYWlsIGlmIFtyZWFzb25dIGlzIHRvbyBsb25nIG9yIGNvbnRhaW5zIGludmFsaWQgVVRGOCAqKVxuICAgICAgY2xvc2UgXCJjbG9zZS1yZWFzb24td2FzLXRvby1sb25nLW9yLWNvbnRhaW5zLWludmFsaWQtdXRmOFwiXG4gIDs7XG5cbiAgbGV0IGNvbm5lY3Rfd2Vic29ja2V0IHVybCB+ZnJvbV9zZXJ2ZXIgfnRvX3NlcnZlciA9XG4gICAgbWF0Y2ggbmV3JWpzIFdlYlNvY2tldHMud2ViU29ja2V0IChKcy5zdHJpbmcgKFVyaS50b19zdHJpbmcgdXJsKSkgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEpzX2Vycm9yLkV4biBleG4gLT5cbiAgICAgICgqIGUuZy4gU0VDVVJJVFlfRVJSLCB0aG91Z2ggbm90ZSB0aGF0IGUuZy4gY29ubmVjdGluZyB0byB3czovLyBmcm9tIGEgaHR0cHM6Ly8gcGFnZVxuICAgICAgICAgaW4gY2hyb21lIHNlZW1zIHRvIG1hbmlmZXN0IGFzIHN1Y2Nlc3NmdWwgY29uc3RydWN0aW9uIGJ1dCBpbW1lZGlhdGUgY2xvc3VyZVxuICAgICAgICAgKHNlZSBiZWxvdykuICAqKVxuICAgICAgcmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgKEpzX2Vycm9yLm1lc3NhZ2UgZXhuKSlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT4gcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKVxuICAgIHwgd2Vic29ja2V0IC0+XG4gICAgICBsZXQgY29ubmVjdGVkX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IGNsZWFudXAgfnJlYXNvbiA9XG4gICAgICAgICgqIElmIHdlIGhhdmVuJ3QgY29ubmVjdGVkIHlldCwgdGhlbiBjb25uZWN0aW5nIGp1c3QgZmFpbGVkLiBPdGhlcndpc2UgaXQgd2FzIHRoZVxuICAgICAgICAgICBjbG9zdXJlIG9mIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24uICopXG4gICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoRXJyb3IgcmVhc29uKTtcbiAgICAgICAgKCogW1BpcGUuY2xvc2VdIGFuZCBbV2ViU29ja2V0LmNsb3NlXSBhcmUgYWxsIGlkZW1wb3RlbnQuICopXG4gICAgICAgIFBpcGUuY2xvc2UgZnJvbV9zZXJ2ZXI7XG4gICAgICAgIFBpcGUuY2xvc2VfcmVhZCB0b19zZXJ2ZXI7XG4gICAgICAgIGNsb3NlX3dlYnNvY2tldCB3ZWJzb2NrZXQgKEVycm9yLnRvX3N0cmluZ19odW0gcmVhc29uKVxuICAgICAgaW5cbiAgICAgIGxldCBvbmNsb3NlIChjbG9zZV9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQpID1cbiAgICAgICAgKCogVGhlIFJQQyBBUEkgZG9lc24ndCBnaXZlIHVzIGEgZ29vZCBwbGFjZSB0byBwdXQgZGV0YWlscyBhYm91dCBfd2h5XyB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBjbG9zZWQuXG5cbiAgICAgICAgICAgTm90ZSB0aGF0IGluIENocm9tZSBbY2xvc2VfZXZlbnQjIy5yZWFzb25dIGlzIHR5cGljYWxseSBlbXB0eSBhbmRcbiAgICAgICAgICAgW2Nsb3NlX2V2ZW50IyMuY29kZV0gZG9lc24ndCBhY3R1YWxseSBwcm92aWRlIHRoYXQgbXVjaCBpbnNpZ2h0IGludG8gd2h5IHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIGZhaWxlZCAoaXQncyBhdmFpbGFibGUgaW4gdGhlIGluc3BlY3RvciBjb25zb2xlLCBidXQgYXMgZmFyIGFzIEkgY2FuXG4gICAgICAgICAgIHRlbGwsIG5vdCBhdmFpbGFibGUgdG8gdXMpLiBTbyBpdCdzIG5vdCBsaWtlIHdlJ3JlIGxvc2luZyBtdWNoIGFueXdheS4gKilcbiAgICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgICAgbGV0IHdoYXRfaGFwcGVuZWQgPVxuICAgICAgICAgICAgbWF0Y2ggSXZhci5pc19mdWxsIGNvbm5lY3RlZF9pdmFyIHdpdGhcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gXCJjb25uZWN0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgICB8IHRydWUgLT4gXCJjbG9zZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgIVwiV2ViU29ja2V0ICVzICgle3NleHA6Q2xvc2VfY29kZS50fSlcIlxuICAgICAgICAgICAgd2hhdF9oYXBwZW5lZFxuICAgICAgICAgICAgKENsb3NlX2NvZGUub2ZfZXZlbnQgY2xvc2VfZXZlbnQpXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIHJlYXNvbik7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBvbm1lc3NhZ2UgKGV2ZW50IDogXyBXZWJTb2NrZXRzLm1lc3NhZ2VFdmVudCBKcy50KSA9XG4gICAgICAgIGxldCBkYXRhID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLm9mX2FycmF5QnVmZmVyIGV2ZW50IyMuZGF0YV9idWZmZXIgaW5cbiAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4gZnJvbV9zZXJ2ZXIgZGF0YTtcbiAgICAgICAgSnMuX2ZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3RlZCAoKSA9IEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoT2sgKCkpIGluXG4gICAgICB3ZWJzb2NrZXQjIy5iaW5hcnlUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCI7XG4gICAgICAoKiBpZiB0aGUgd2Vic29ja2V0IGlzIGFscmVhZHkgY2xvc2VkLCBbb25jbG9zZV0gd29uJ3QgYmUgcmUtZmlyZWQgd2hlbiB3ZSBhZGQgb3VyXG4gICAgICAgICBoYW5kbGVyLiAqKVxuICAgICAgKG1hdGNoIHdlYnNvY2tldCMjLnJlYWR5U3RhdGUgd2l0aFxuICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgd2Vic29ja2V0IyMub25vcGVuXG4gICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgY29ubmVjdGVkICgpO1xuICAgICAgICAgICBKcy5fZmFsc2UpXG4gICAgICAgfCBPUEVOIC0+IGNvbm5lY3RlZCAoKVxuICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPlxuICAgICAgICAgKCogZS5nLiwgUmVmdXNlZCB0byBjb25uZWN0IHRvIHdzOiBiZWNhdXNlIGl0IHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5ICopXG4gICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIldlYlNvY2tldCBmYWlsZWQgaW1tZWRpYXRlbHkgKGlsbGVnYWwgVVJJPylcIikpO1xuICAgICAgKCogVXBvbiBhbiBlcnJvciwgW29uZXJyb3JdIGZpcmVzIGFuZCB0aGVuIFtvbmNsb3NlXSBmaXJlcyAoaXQncyBwb3NzaWJsZSBmb3IgYVxuICAgICAgICAgZ3JhY2VmdWwgY2xvc3VyZSB0byBjYWxsIFtvbmNsb3NlXSBvbmx5KS4gU2luY2UgQXN5bmNfUlBDIGhhcyBubyBub3Rpb24gb2ZcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUsIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgW29uY2xvc2VdIGFueXdheS4gRnVydGhlciwgdGhlIGV2ZW50XG4gICAgICAgICBwYXNzZWQgdG8gW29uZXJyb3JdIGNvbnRhaW5zIG5vIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4gIE5vdGUgdGhhdCB3ZVxuICAgICAgICAgc3RpbGwgbGlzdGVuIHRvIFtvbmVycm9yXSB0byBwcmV2ZW50IHRoZSBlcnJvciBmcm9tIGxlYWtpbmcgdG8gdW5jb250cm9sbGVkXG4gICAgICAgICBjb250ZXh0ICopXG4gICAgICB3ZWJzb2NrZXQjIy5vbmVycm9yXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgQXN5bmNfanNfZGVidWcubG9nX3MgWyVtZXNzYWdlIFwid2Vic29ja2V0IGVuY291bnRlcmVkIHVuZXhwZWN0ZWQgZXJyb3JcIl07XG4gICAgICAgIEpzLl9mYWxzZSk7XG4gICAgICB3ZWJzb2NrZXQjIy5vbm1lc3NhZ2UgOj0gRG9tLmhhbmRsZXIgb25tZXNzYWdlO1xuICAgICAgd2Vic29ja2V0IyMub25jbG9zZSA6PSBEb20uaGFuZGxlciBvbmNsb3NlO1xuICAgICAgbGV0IGNvbm5lY3RlZF9kZWZlcnJlZCA9IEl2YXIucmVhZCBjb25uZWN0ZWRfaXZhciBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKG1hdGNoJWJpbmQgY29ubmVjdGVkX2RlZmVycmVkIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgKF8gOiBFcnJvci50KSAtPiByZXR1cm4gKClcbiAgICAgICAgIHwgT2sgKCkgLT5cbiAgICAgICAgICAgUGlwZS5pdGVyX3dpdGhvdXRfcHVzaGJhY2sgdG9fc2VydmVyIH5mOihmdW4gZGF0YSAtPlxuICAgICAgICAgICAgIG1hdGNoICh3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIDogV2ViU29ja2V0cy5yZWFkeVN0YXRlKSB3aXRoXG4gICAgICAgICAgICAgfCBDT05ORUNUSU5HIC0+XG4gICAgICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkJVRzogb25vcGVuIGNhbGxlZCBidXQgcmVhZHlTdGF0ZSBpcyBDT05ORUNUSU5HXCJdXG4gICAgICAgICAgICAgfCBDTE9TSU5HIHwgQ0xPU0VEIC0+ICgpXG4gICAgICAgICAgICAgfCBPUEVOIC0+XG4gICAgICAgICAgICAgICBsZXQgYnVmZmVyID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIGRhdGEgaW5cbiAgICAgICAgICAgICAgICh0cnkgd2Vic29ja2V0IyNzZW5kX2J1ZmZlciBidWZmZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoRXJyb3IudGFnIH50YWc6XCJ3ZWJzb2NrZXQjI3NlbmRfYnVmZmVyXCIgKEVycm9yLm9mX2V4biBleG4pKSkpKTtcbiAgICAgIGxldCBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCA9XG4gICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgIERlZmVycmVkLmFueV91bml0IFsgUGlwZS5jbG9zZWQgdG9fc2VydmVyOyBQaXBlLmNsb3NlZCBmcm9tX3NlcnZlciBdXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIFwiUlBDIGNvbm5lY3Rpb24gY2xvc2VkIGJ5IGNsaWVudFwiKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIGNsZWFudXBfd2hlbl9hX3BpcGVfaXNfY2xvc2VkO1xuICAgICAgY29ubmVjdGVkX2RlZmVycmVkXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdXJpICgpID1cbiAgICBsZXQgc2NoZW1lID0gaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCIgdGhlbiBcIndzc1wiIGVsc2UgXCJ3c1wiIGluXG4gICAgbGV0IHBvcnQgPVxuICAgICAgbWF0Y2ggVXJsLkN1cnJlbnQucG9ydCB3aXRoXG4gICAgICB8IFNvbWUgcG9ydCAtPiBwb3J0XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCJcbiAgICAgICAgdGhlbiBVcmwuZGVmYXVsdF9odHRwc19wb3J0XG4gICAgICAgIGVsc2UgVXJsLmRlZmF1bHRfaHR0cF9wb3J0XG4gICAgaW5cbiAgICBsZXQgaG9zdCA9IFVybC5DdXJyZW50Lmhvc3QgaW5cbiAgICBVcmkubWFrZSB+c2NoZW1lIH5ob3N0IH5wb3J0ICgpXG4gIDs7XG5cbiAgbGV0IGNsaWVudCA/KHVyaSA9IGRlZmF1bHRfdXJpICgpKSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA9XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIEluZm8uY3JlYXRlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwid2Vic29ja2V0XCIgKGRlc2NyaXB0aW9uIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpICh1cmkgOiBVcmkudCldXG4gICAgaW5cbiAgICBsZXQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCA9XG4gICAgICBsZXQgY3JlYXRlIHsgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLmNvbm5lY3Rpb25fc3RhdGU7IGltcGxlbWVudGF0aW9ucyB9ID1cbiAgICAgICAgVC5jcmVhdGVcbiAgICAgICAgICB0cmFuc3BvcnRcbiAgICAgICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY3JlYXRlIChULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMubnVsbCAoKSlcbiAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbnMgLT4gY3JlYXRlIGltcGxlbWVudGF0aW9uc1xuICAgIGluXG4gICAgbGV0IGZyb21fc2VydmVyX3IsIGZyb21fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCB0b19zZXJ2ZXJfciwgdG9fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIG1hdGNoJWJpbmRcbiAgICAgIGNvbm5lY3Rfd2Vic29ja2V0IHVyaSB+ZnJvbV9zZXJ2ZXI6ZnJvbV9zZXJ2ZXJfdyB+dG9fc2VydmVyOnRvX3NlcnZlcl9yXG4gICAgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiByZXR1cm4gZXJyb3JcbiAgICB8IE9rICgpIC0+XG4gICAgICBsZXQgdHJhbnNwb3J0ID1cbiAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5jcmVhdGVcbiAgICAgICAgICBBc3luY19ycGNfa2VybmVsLlBpcGVfdHJhbnNwb3J0LktpbmQuYmlnc3RyaW5nXG4gICAgICAgICAgZnJvbV9zZXJ2ZXJfclxuICAgICAgICAgIHRvX3NlcnZlcl93XG4gICAgICBpblxuICAgICAgKG1hdGNoJWJpbmQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCB3aXRoXG4gICAgICAgfCBPayBjb25uZWN0aW9uIC0+IHJldHVybiAoT2sgY29ubmVjdGlvbilcbiAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBBc3luY19ycGNfa2VybmVsLlJwYy5UcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgICAgICByZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCBjbGllbnRfZXhuID91cmkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGNsaWVudCA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFzeW5jX3JwY19rZXJuZWwuUnBjXG5cbm1vZHVsZSBDb25uZWN0aW9uID0gc3RydWN0XG4gIGluY2x1ZGUgQ29ubmVjdGlvblxuICBpbmNsdWRlIFdlYnNvY2tldF9jb25uZWN0aW9uXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX3JwY19rZXJuZWxcblxubW9kdWxlIFVyaSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVXJpXG5cbiAgICBsZXQgdG9fc3RyaW5nIHMgPSBVcmkudG9fc3RyaW5nIHNcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjID0gc3RydWN0XG4gIGluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwY1xuXG4gIGxldCBjcmVhdGVfZnJvbV91cmkgPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNyZWF0ZSB+YWRkcmVzczoobW9kdWxlIFVyaSlcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpX29wdGlvbiA9XG4gICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGVcbiAgICAgIH5hZGRyZXNzOlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFVyaS50IG9wdGlvbiBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cF1cbiAgICAgICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gQXN5bmNfcnBjX2tlcm5lbC5QZXJzaXN0ZW50X2Nvbm5lY3Rpb24uVmVyc2lvbmVkX3JwY1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIE9wdCA9IEpzLk9wdFxubW9kdWxlIE9wdGRlZiA9IEpzLk9wdGRlZlxuXG5tb2R1bGUgUmVzcG9uc2VfdHlwZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYbWxIdHRwUmVxdWVzdC5yZXNwb25zZSA9XG4gICAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgT3B0LnQgdFxuICAgIHwgQmxvYiA6ICNGaWxlLmJsb2IgSnMudCBKcy5PcHQudCB0XG4gICAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50IE9wdC50IHRcbiAgICB8IEpTT04gOiAnYSBPcHQudCB0XG4gICAgfCBUZXh0IDogSnMuanNfc3RyaW5nIEpzLnQgdFxuICAgIHwgRGVmYXVsdCA6IHN0cmluZyB0XG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ3Jlc3BvbnNlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgZ2V0X2hlYWRlciA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgOyBjb250ZW50IDogJ3Jlc3BvbnNlXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBQb3N0X2JvZHkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEJsb2Igb2YgRmlsZS5ibG9iIEpzLnRcbiAgICB8IERvY3VtZW50IG9mIERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBGb3JtX2RhdGEgb2YgRm9ybS5mb3JtRGF0YSBKcy50XG5lbmRcblxubW9kdWxlIE1ldGhvZF93aXRoX2FyZ3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEdldCBvZiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgfCBQb3N0IG9mIFBvc3RfYm9keS50IG9wdGlvblxuZW5kXG5cbnR5cGUgJ2sgd2l0aF9yZXF1ZXN0X2FyZ3MgPVxuICA/aGVhZGVyczooc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIC0+ID9vbl9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gP29uX3VwbG9hZF9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gdXJsOnN0cmluZ1xuICAtPiAna1xuXG5sZXQgaGFzX2dldF9hcmdzIHVybCA9IE9wdGlvbi5pc19zb21lIChTdHJpbmcuaW5kZXggdXJsICc/JylcblxubGV0IHJlcXVlc3RcbiAgICAgID8oaGVhZGVycyA9IFtdKVxuICAgICAgP29uX3Byb2dyZXNzXG4gICAgICA/b25fdXBsb2FkX3Byb2dyZXNzXG4gICAgICB+dXJsXG4gICAgICAodHlwZSByZXNwKVxuICAgICAgfihyZXNwb25zZV90eXBlIDogcmVzcCBSZXNwb25zZV90eXBlLnQpXG4gICAgICAobWV0aG9kX3dpdGhfYXJncyA6IE1ldGhvZF93aXRoX2FyZ3MudClcbiAgPVxuICBsZXQgdXJsLCBtZXRob2Rfc3RyaW5nID1cbiAgICBtYXRjaCBtZXRob2Rfd2l0aF9hcmdzIHdpdGhcbiAgICB8IEdldCBhcmdzIC0+XG4gICAgICB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgYXJncywgXCJHRVRcIlxuICAgIHwgUG9zdCBfYm9keSAtPiB1cmwsIFwiUE9TVFwiXG4gIGluXG4gIGxldCByZXEgPSBYbWxIdHRwUmVxdWVzdC5jcmVhdGUgKCkgaW5cbiAgcmVxIyNfb3BlbiAoSnMuc3RyaW5nIG1ldGhvZF9zdHJpbmcpIChKcy5zdHJpbmcgdXJsKSBKcy5fdHJ1ZTtcbiAgKGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICAgfCBCbG9iIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJibG9iXCJcbiAgIHwgRG9jdW1lbnQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImRvY3VtZW50XCJcbiAgIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gICB8IFRleHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcInRleHRcIlxuICAgfCBEZWZhdWx0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJcIik7XG4gIExpc3QuaXRlciBoZWFkZXJzIH5mOihmdW4gKG5hbWUsIHZhbHVlKSAtPlxuICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgdmFsdWUpKTtcbiAgbGV0IHJlc3BvbnNlIDogcmVzcCBSZXNwb25zZS50IE9yX2Vycm9yLnQgSXZhci50ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgcmVxIyMub25lcnJvclxuICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIk5ldHdvcmsgZXJyb3JcIik7XG4gICAgSnMuX3RydWUpO1xuICByZXEjIy5vbnRpbWVvdXRcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJUaW1lb3V0XCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlXG4gIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+XG4gICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgfCBET05FIC0+XG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgaWYgcmVxIyMuc3RhdHVzID49IDIwMCAmJiByZXEjIy5zdGF0dXMgPCAzMDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgY29udGVudCA6IHJlc3AgT3JfZXJyb3IudCA9XG4gICAgICAgICAgICBsZXQgZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKCkgPVxuICAgICAgICAgICAgICBPcHQuY2FzZVxuICAgICAgICAgICAgICAgIHJlcSMjLnJlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIG5vdCBiZSBlbnRlcmVkIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBvZlxuICAgICAgICAgICAgICAgICAgICAgIFhNTEh0dHBSZXF1ZXN0IGF0IE1ETiB3ZWIgZG9jcywgYmVjYXVzZSBpZiBhIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCxcbiAgICAgICAgICAgICAgICAgICAgICBpbiBzdGF0ZSBbRE9ORV0gYW5kIHJlc3BvbnNlX3R5cGUgW1RleHRdIG9yIFtEZWZhdWx0XSxcbiAgICAgICAgICAgICAgICAgICAgICBbcmVzcG9uc2VUZXh0XSBzaG91bGQgbm90IGJlIFtudWxsXS5cbiAgICAgICAgICAgICAgICAgICAgICBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICAgICAgZXJyb3Jfc1xuICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgIFwiTm8gcmVzcG9uc2UgcmV0dXJuZWQgZGVzcGl0ZSBzdWNjZXNzZnVsIHJlcXVlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgICAgICAgICBSZXN1bHQucmV0dXJuXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG9wZW4gUmVzcG9uc2VfdHlwZSBpblxuICAgICAgICAgICAgbWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IE9rIChGaWxlLkNvZXJjZVRvLmFycmF5QnVmZmVyIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBCbG9iIC0+IE9rIChGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IERvY3VtZW50IC0+IE9rIChGaWxlLkNvZXJjZVRvLmRvY3VtZW50IHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBKU09OIC0+IE9rIChGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IFRleHQgLT4gZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKClcbiAgICAgICAgICAgIHwgRGVmYXVsdCAtPiBPcl9lcnJvci5tYXAgKGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpKSB+ZjpKcy50b19zdHJpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBnZXRfaGVhZGVyIHMgPVxuICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgKHJlcSMjZ2V0UmVzcG9uc2VIZWFkZXIgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgUmVzcG9uc2UuY29udGVudDsgY29kZSA9IHJlcSMjLnN0YXR1czsgZ2V0X2hlYWRlciB9KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIFwiUmVxdWVzdCBmYWlsZWRcIlxuICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICB9XVxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSByZXNcbiAgICB8IF8gLT4gKCkpO1xuICBPcHRpb24uaXRlciBvbl9wcm9ncmVzcyB+ZjooZnVuIG9uX3Byb2dyZXNzIC0+XG4gICAgcmVxIyMub25wcm9ncmVzc1xuICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgb25fcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICBKcy5fdHJ1ZSkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICBPcHRpb24uaXRlciBvbl91cGxvYWRfcHJvZ3Jlc3MgfmY6KGZ1biBvbl91cGxvYWRfcHJvZ3Jlc3MgLT5cbiAgICAgIHVwbG9hZCMjLm9ucHJvZ3Jlc3NcbiAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICBvbl91cGxvYWRfcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICAgIEpzLl90cnVlKSkpO1xuICAobWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICB8IEdldCBfIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICB8IFBvc3QgYm9keSAtPlxuICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgICAgIHwgU29tZSBib2R5IC0+XG4gICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgIHwgQmxvYiBiIC0+IHJlcSMjc2VuZF9ibG9iIGJcbiAgICAgICAgIHwgRG9jdW1lbnQgZCAtPiByZXEjI3NlbmRfZG9jdW1lbnQgZFxuICAgICAgICAgfCBTdHJpbmcgcyAtPiByZXEjI3NlbmQgKEpzLnNvbWUgKEpzLnN0cmluZyBzKSlcbiAgICAgICAgIHwgRm9ybV9kYXRhIGZkIC0+IHJlcSMjc2VuZF9mb3JtRGF0YSBmZCkpKTtcbiAgSXZhci5yZWFkIHJlc3BvbnNlXG47O1xuXG5sZXQgZ2V0ID8oYXJndW1lbnRzID0gW10pIHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChHZXQgYXJndW1lbnRzKSlcbjs7XG5cbmxldCBwb3N0ID9ib2R5IHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChQb3N0IGJvZHkpKVxuOztcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlLlRpbWVfbnNcbm1vZHVsZSBDbG9ja19ucyA9IEFzeW5jX2tlcm5lbC5DbG9ja19uc1xubW9kdWxlIFNjaGVkdWxlciA9IEFzeW5jX2tlcm5lbC5Bc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGVcbm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IHNsZWVwIGQgPSBDbG9ja19ucy5hZnRlciAoVGltZV9ucy5TcGFuLm9mX3NlYyBkKVxubGV0IHlpZWxkICgpID0gU2NoZWR1bGVyLnlpZWxkIChTY2hlZHVsZXIudCAoKSlcblxubGV0IHJlYyBleHRyYWN0X2pzX2Vycm9yIChleG4gOiBleG4pIDogKHN0cmluZyBsaXN0ICogSnNfZXJyb3IudCkgb3B0aW9uID1cbiAgbWF0Y2ggZXhuIHdpdGhcbiAgfCBFeG4uUmVyYWlzZWQgKG1zZywgZXhuKSAtPlxuICAgIChtYXRjaCBleHRyYWN0X2pzX2Vycm9yIGV4biB3aXRoXG4gICAgIHwgU29tZSAobWVzc2FnZXMsIGpzX2Vycm9yKSAtPiBTb21lIChtc2cgOjogbWVzc2FnZXMsIGpzX2Vycm9yKVxuICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgfCBleG4gLT5cbiAgICAobWF0Y2ggSnNfZXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgIHwgU29tZSBqc19lcnJvciAtPiBTb21lIChbXSwganNfZXJyb3IpXG4gICAgIHwgTm9uZSAtPiBOb25lKVxuOztcblxubGV0IHByZXR0eV9wcmludF9leGNlcHRpb24gbmFtZSBleG4gPVxuICBsZXQgZXhuID0gQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIGluXG4gIGxldCBjbGFzc2lmaWNhdGlvbiA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IEpzX2Vycm9yLkV4biBlcnIgLT4gYEpzIGVyclxuICAgIHwgZXhuIC0+XG4gICAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICAgIHwgTm9uZSAtPiBgRXhuIGV4blxuICAgICAgIHwgU29tZSBlcnIgLT4gYEpzX2FuZF9leG4gKGV4biwgZXJyKSlcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZmljYXRpb24gd2l0aFxuICB8IGBKcyBlcnIgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgZXJyXG4gIHwgYEV4biBleG4gLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKVxuICB8IGBKc19hbmRfZXhuIChleG4sIChtZXNzYWdlcywgZXJyKSkgLT5cbiAgICAobWF0Y2ggbWVzc2FnZXMgd2l0aFxuICAgICB8IFtdIC0+IEZpcmVidWcuY29uc29sZSMjZ3JvdXAgKEpzLnN0cmluZyBuYW1lKVxuICAgICB8IGhkIDo6IHJlc3QgLT5cbiAgICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwIChKcy5zdHJpbmcgaGQpO1xuICAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgbmFtZSk7XG4gICAgICAgTGlzdC5pdGVyIHJlc3QgfmY6KGZ1biBtZXNzYWdlIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBtZXNzYWdlKSkpO1xuICAgICgqIFdlIGZpcnN0IG91dHB1dCB0aGUgc3RyaW5naWZpZWQgb2NhbWwgZXhjZXB0aW9uICopXG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cENvbGxhcHNlZCAoSnMuc3RyaW5nIFwiT0NhbWwgRXhjZXB0aW9uXCIpO1xuICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSk7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cEVuZDtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIGVycjtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwRW5kXG47O1xuXG5sZXQgcnVuID1cbiAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IElkbGVcbiAgICAgIHwgUnVubmluZ1xuICAgICAgfCBXaWxsX3J1bl9zb29uXG4gIGVuZFxuICBpblxuICBsZXQgbW9kdWxlIE5leHRfd2FrZXVwID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgVGltZV9ucy50ICogZmxvYXRcbiAgICAgIHwgTm9fd2FrZXVwXG4gICAgICB8IFNvb25cbiAgZW5kXG4gIGluXG4gIGxldCBzdGF0ZSA9IHJlZiBTdGF0ZS5JZGxlIGluXG4gIGxldCB0aW1lb3V0cyA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBsZXQgcnVuX2FmdGVyIH5mIH5tcyA9IGlnbm9yZSAoRG9tX2h0bWwuc2V0VGltZW91dCBmIG1zIDogRG9tX2h0bWwudGltZW91dF9pZF9zYWZlKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBtYXRjaCAhc3RhdGUsIFNjaGVkdWxlci51bmNhdWdodF9leG4gdCB3aXRoXG4gICAgfCBfLCBTb21lIF8gfCBTdGF0ZS5SdW5uaW5nLCBOb25lIC0+ICgpXG4gICAgfCAoU3RhdGUuSWRsZSB8IFN0YXRlLldpbGxfcnVuX3Nvb24pLCBOb25lIC0+XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5SdW5uaW5nO1xuICAgICAgU2NoZWR1bGVyLnJ1bl9jeWNsZSB0O1xuICAgICAgbGV0IG5leHRfd2FrZXVwIDogTmV4dF93YWtldXAudCA9XG4gICAgICAgIGlmIFNjaGVkdWxlci5jYW5fcnVuX2Ffam9iIHRcbiAgICAgICAgdGhlbiBTb29uXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIFNjaGVkdWxlci5uZXh0X3VwY29taW5nX2V2ZW50IHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb193YWtldXBcbiAgICAgICAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgICAgICAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gICAgICAgICAgICBsZXQgZCA9IFRpbWVfbnMuZGlmZiBuZXh0IG5vdyBpblxuICAgICAgICAgICAgbGV0IGRfbXMgPSBUaW1lX25zLlNwYW4udG9fbXMgZCBpblxuICAgICAgICAgICAgaWYgRmxvYXQuKCA8PSApIGRfbXMgMC4gdGhlbiBTb29uIGVsc2UgQXQgKG5leHQsIGRfbXMpKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChTY2hlZHVsZXIudW5jYXVnaHRfZXhuX3Vud3JhcHBlZCB0KSB+ZjooZnVuIChleG4sIF9zZXhwKSAtPlxuICAgICAgICBtYXRjaCBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gd2l0aFxuICAgICAgICB8IEpzX2Vycm9yLkV4biBlcnIgLT4gSnNfZXJyb3IucmFpc2VfIGVyclxuICAgICAgICB8IGV4biAtPlxuICAgICAgICAgIChtYXRjaCBKc19lcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgICAgICB8IFNvbWUgZXJyIC0+XG4gICAgICAgICAgICAgKCogSGFjayB0byBnZXQgYSBiZXR0ZXIgYmFja3RyYWNlICopXG4gICAgICAgICAgICAgcHJldHR5X3ByaW50X2V4Y2VwdGlvbiBcIkVycm9yOlwiIGV4bjtcbiAgICAgICAgICAgICAoKiBBbmQgdGhlbiByYWlzZSB0aGUgZW1iZWRkZWQgamF2YXNjcmlwdCBlcnJvciB0aGF0IHByb3ZpZGVzIGEgcHJvcGVyXG4gICAgICAgICAgICAgICAgYmFja3RyYWNlIHdpdGggZ29vZCBzb3VyY2VtYXAgc3VwcG9ydC5cbiAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGlzIGphdmFzY3JpcHQgZXJyb3IgaXMgcHJvYmFibHkgbm90IG1lYW5pbmdmdWwgd2hpY2ggaXMgd2h5XG4gICAgICAgICAgICAgICAgd2UgZmlyc3Qgb3V0cHV0IHRoZSBzZXJpYWxpemF0aW9uIG9mIG9jYW1sIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICBKc19lcnJvci5yYWlzZV8gZXJyKSk7XG4gICAgICAobWF0Y2ggbmV4dF93YWtldXAgd2l0aFxuICAgICAgIHwgTm9fd2FrZXVwIC0+IHN0YXRlIDo9IElkbGVcbiAgICAgICB8IFNvb24gLT5cbiAgICAgICAgIHN0YXRlIDo9IFdpbGxfcnVuX3Nvb247XG4gICAgICAgICBydW5fYWZ0ZXIgfmY6bG9vcCB+bXM6MC5cbiAgICAgICB8IEF0IChhdCwgZF9tcykgLT5cbiAgICAgICAgIHN0YXRlIDo9IElkbGU7XG4gICAgICAgICBpZiBTdGFjay5pc19lbXB0eSB0aW1lb3V0cyB8fCBUaW1lX25zLiggPCApIGF0IChTdGFjay50b3BfZXhuIHRpbWVvdXRzKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIFN0YWNrLnB1c2ggdGltZW91dHMgYXQ7XG4gICAgICAgICAgIHJ1bl9hZnRlciB+ZjpydW5fdGltZW91dCB+bXM6ZF9tcykpXG4gIGFuZCBydW5fdGltZW91dCAoKSA9XG4gICAgKCogRWFjaCBjYWxsIHRvIFtydW5fdGltZW91dF0gcmVtb3ZlcyBleGFjdGx5IG9uZSBlbGVtZW50IGZyb20gW3RpbWVvdXRzXS4gIFRoaXNcbiAgICAgICBtYWludGFpbnMgdGhlIGludmFyaWFudCB0aGF0IFtTdGFjay5sZW5ndGggdGltZW91dHNdIGlzIGV4YWN0bHkgdGhlIG51bWJlciBvZlxuICAgICAgIG91dHN0YW5kaW5nIHRpbWVvdXRzIHdlIGhhdmUgcmVnaXN0ZXJlZC4gKilcbiAgICBpZ25vcmUgKFN0YWNrLnBvcF9leG4gdGltZW91dHMgOiBUaW1lX25zLnQpO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IFN0YXRlLklkbGUgLT5cbiAgICAgIHJ1bl9hZnRlciB+Zjpsb29wIH5tczowLjtcbiAgICAgIHN0YXRlIDo9IFN0YXRlLldpbGxfcnVuX3Nvb25cbiAgICB8IFN0YXRlLlJ1bm5pbmcgfCBTdGF0ZS5XaWxsX3J1bl9zb29uIC0+ICgpXG47O1xuXG5sZXQgaW5pdGlhbGl6ZWRfcmVmID0gcmVmIGZhbHNlXG5cbmxldCBpbml0aWFsaXphdGlvbiA9XG4gIGxhenlcbiAgICAobGV0IHQgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgICBpbml0aWFsaXplZF9yZWYgOj0gdHJ1ZTtcbiAgICAgU2NoZWR1bGVyLnNldF9qb2JfcXVldWVkX2hvb2sgdCAoZnVuIF8gLT4gcnVuICgpKTtcbiAgICAgU2NoZWR1bGVyLnNldF9ldmVudF9hZGRlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBydW47XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuXG4gICAgIDo9IHByZXR0eV9wcmludF9leGNlcHRpb24gXCJBc3luY19rZXJuZWw6IE1vbml0b3IudHJ5X3dpdGhcIjtcbiAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9yc1xuICAgICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLm1haW5cbiAgICAgICB+ZjoocHJldHR5X3ByaW50X2V4Y2VwdGlvbiBcIkFzeW5jX2tlcm5lbDogVW5oYW5kbGVkIGV4Y2VwdGlvblwiKTtcbiAgICAgcnVuICgpKVxuOztcblxubGV0IGluaXQgKCkgPSBmb3JjZSBpbml0aWFsaXphdGlvblxubGV0IGluaXRpYWxpemVkICgpID0gIWluaXRpYWxpemVkX3JlZlxuXG5sZXQgZG9jdW1lbnRfbG9hZGVkID1cbiAgbGV0IGpzX3N0cmluZ19jb21wYXJlIHMgPVxuICAgIGxldCBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzID0gcGh5c19lcXVhbCBpblxuICAgIGNvbXBhcmVfdXNpbmdfamF2YXNjcmlwdF90cmlwbGVfZXF1YWxfZm9yX3N0cmluZ3MgKEpzLnN0cmluZyBzKVxuICBpblxuICBsZXQgcmVhZHlfc3RhdGVfY2hhbmdlID0gXCJyZWFkeXN0YXRlY2hhbmdlXCIgaW5cbiAgbGV0IGNvbXBsZXRlID0gXCJjb21wbGV0ZVwiIGluXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlX2V2ID0gRG9tLkV2ZW50Lm1ha2UgcmVhZHlfc3RhdGVfY2hhbmdlIGluXG4gIGxldCBhZGRfZXZlbnQgdGFyZ2V0IGV2dCBoYW5kbGVyID1cbiAgICBpZ25vcmVcbiAgICAgIChEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIHRhcmdldCBldnQgaGFuZGxlciBKcy5fZmFsc2UgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIGlmIGpzX3N0cmluZ19jb21wYXJlIGNvbXBsZXRlIERvbV9odG1sLmRvY3VtZW50IyMucmVhZHlTdGF0ZVxuICAgIHRoZW4gQXN5bmNfa2VybmVsLkRlZmVycmVkLnVuaXRcbiAgICBlbHNlIChcbiAgICAgIGxldCBsb2FkZWQgPSBBc3luY19rZXJuZWwuSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBoYW5kbGVyIGV2dCA9XG4gICAgICAgIGlmIChub3QgKGpzX3N0cmluZ19jb21wYXJlIHJlYWR5X3N0YXRlX2NoYW5nZSBldnQjIy5fdHlwZSkpXG4gICAgICAgIHx8IGpzX3N0cmluZ19jb21wYXJlIGNvbXBsZXRlIERvbV9odG1sLmRvY3VtZW50IyMucmVhZHlTdGF0ZVxuICAgICAgICB0aGVuIEFzeW5jX2tlcm5lbC5JdmFyLmZpbGxfaWZfZW1wdHkgbG9hZGVkICgpO1xuICAgICAgICBKcy5fdHJ1ZVxuICAgICAgaW5cbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC5kb2N1bWVudCBEb21faHRtbC5FdmVudC5kb21Db250ZW50TG9hZGVkIChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC5kb2N1bWVudCByZWFkeXN0YXRlY2hhbmdlX2V2IChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC53aW5kb3cgRG9tX2h0bWwuRXZlbnQubG9hZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBBc3luY19rZXJuZWwuSXZhci5yZWFkIGxvYWRlZClcbjs7XG4iLCJtb2R1bGUgUnBjID0gUnBjXG5tb2R1bGUgSHR0cCA9IEh0dHBcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgUGVyc2lzdGVudF9jb25uZWN0aW9uID0gUGVyc2lzdGVudF9jb25uZWN0aW9uXG5pbmNsdWRlIEFzeW5jX2pzMFxuXG5sZXQgbG9nX3MgPSBEZWJ1Zy5sb2dfc1xubGV0IGxvZ19zX2FzX3N0cmluZyA9IERlYnVnLmxvZ19zX2FzX3N0cmluZ1xuIiwib3BlbiEgQmFzZVxuXG4oKiBUaGUgW2RhdGFdIGFycmF5IGlzIGFuIGltcGxpY2l0IGJpbmFyeSB0cmVlIHdpdGggW2NoaWxkcmVuX2xlbmd0aCAqIDIgLSAxXSBub2RlcyxcbiAgIHdpdGggZWFjaCBub2RlIGJlaW5nIHRoZSBzdW0gb2YgdGhlIHR3byBjaGlsZCBub2RlcyBhbmQgdGhlIHJvb3Qgbm9kZSBiZWluZyB0aGUgMHRoXG4gICBub2RlLiAgVGhlIGxlYXZlcyBvZiB0aGUgdHJlZSBhcmUgdGhlIGxhc3QgW251bV9sZWF2ZXNdIG5vZGVzLlxuXG4gICBUaGUgY2hpbGRyZW4gYXJlIG5vdCBuZWNlc3NhcmlseSBhbGwgYXQgdGhlIHNhbWUgbGV2ZWwgb2YgdGhlIHRyZWUuIEZvciBpbnN0YW5jZSBpZlxuICAgeW91IGhhdmUgMyBjaGlsZHJlbiBbfCBhOyBiOyBjIHxdOlxuXG4gICB7dlxuICAgICAgICAgIG9cbiAgICAgICAgIC8gXFxcbiAgICAgICAgbyAgIGNcbiAgICAgICAvIFxcXG4gICAgICBhICAgYlxuICAgdn1cblxuICAgV2Ugd2FudCB0aGlzIHRyZWUgdG8gYmUgcmVwcmVzZW50YXRlZCBhcyBbfCBvOyBvOyBjOyBhOyBiIHxdLCBpLmUuIHdlIG5lZWQgdG8gYXBwbHlcbiAgIGZpcnN0IGEgcm90YXRpb24gdGhlbiBhIHRyYW5zbGF0aW9uIHRvIGNvbnZlcnQgYW4gaW5kZXggaW4gW3wgYTsgYjsgYyB8XSB0byBhIChsZWFmKVxuICAgaW5kZXggaW4gW3wgbzsgbzsgYzsgYTsgYiB8XS4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgZGF0YSA6ICdhIE9wdGlvbl9hcnJheS50XG4gIDsgbnVtX2xlYXZlcyA6IGludFxuICA7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCA6IGludFxuICA7IHJlZHVjZSA6ICdhIC0+ICdhIC0+ICdhXG4gIDsgc2V4cF9vZl9hIDogJ2EgLT4gU2V4cC50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5udW1fbGVhdmVzXG5cbigqIHt2XG4gICAgIHBhcmVudDogICAgICAwICAxICAyICAzICA0ICA1ICA2ICA3ICA4ICA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IC4uLlxuICAgICBsZWZ0IGNoaWxkOiAgMSAgMyAgNSAgNyAgOSAxMSAxMyAxNSAxNyAxOSAyMSAyMyAyNSAyNyAyOSAzMSAzMyAzNSAzNyAzOSAuLi5cbiAgICAgcmlnaHQgY2hpbGQ6IDIgIDQgIDYgIDggMTAgMTIgMTQgMTYgMTggMjAgMjIgMjQgMjYgMjggMzAgMzIgMzQgMzYgMzggNDAgLi4uIHZ9ICopXG5sZXQgcGFyZW50X2luZGV4IH5jaGlsZF9pbmRleCA9IChjaGlsZF9pbmRleCAtIDEpIC8gMlxubGV0IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleCA9IChwYXJlbnRfaW5kZXggKiAyKSArIDFcbmxldCByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleCA9IGxlZnRfY2hpbGRfaW5kZXggKyAxXG5cbigqIFRoZSBmaXJzdCBbbnVtX2xlYXZlcy0xXSBlbGVtZW50cyBhcmUgaW50ZXJuYWwgbm9kZXMgb2YgdGhlIHRyZWUuICBUaGUgbmV4dFxuICAgW251bV9sZWF2ZXNdIGVsZW1lbnRzIGFyZSB0aGUgbGVhdmVzLiAqKVxubGV0IG51bV9icmFuY2hlcyB0ID0gdC5udW1fbGVhdmVzIC0gMVxubGV0IGluZGV4X2lzX2xlYWYgdCBpID0gaSA+PSBudW1fYnJhbmNoZXMgdFxuXG4oKiBUaGUgdHJlZSBpcyBjb21wbGV0ZSwgYnV0IG5vdCBuZWNlc3NhcmlseSBwZXJmZWN0LCBzbyB3ZSBwZXJmb3JtIHNvbWUgcm90YXRpb24gb2YgdGhlXG4gICBsZWF2ZXMgdG8gZW5zdXJlIHRoYXQgb3VyIHJlZHVjdGlvbnMgcHJlc2VydmUgb3JkZXJpbmcuICopXG5sZXQgbGVhZl9pbmRleCB0IGkgPVxuICAoKiBUaGUgdHJlZSBsYXlvdXQgaXMgbGV2ZWwgb3JkZXIuICBBbnkgbGVhdmVzIGluIHRoZSBzZWNvbmQgdG8gbGFzdCBsZXZlbCBuZWVkIHRvIG9jY3VyXG4gICAgIGluIHRoZSBhcnJheSBiZWZvcmUgdGhlIGxlYXZlcyBpbiB0aGUgYm90dG9tIGxldmVsLiAqKVxuICBsZXQgcm90YXRlZF9pbmRleCA9XG4gICAgbGV0IG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSA9IGkgKyB0Lm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCBpblxuICAgIGlmIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSA8IHQubnVtX2xlYXZlc1xuICAgIHRoZW4gb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5XG4gICAgZWxzZSBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgLSB0Lm51bV9sZWF2ZXNcbiAgaW5cbiAgKCogVGhlIGxlYXZlcyBvY2N1ciBhZnRlciB0aGUgYnJhbmNoZXMgaW4gdGhlIGFycmF5LiAqKVxuICByb3RhdGVkX2luZGV4ICsgbnVtX2JyYW5jaGVzIHRcbjs7XG5cbmxldCBnZXRfbGVhZiB0IGkgPSBPcHRpb25fYXJyYXkuZ2V0IHQuZGF0YSAobGVhZl9pbmRleCB0IGkpXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IGdldF9sZWFmIHQgaSlcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHRvX2xpc3QgdCA6IGEgb3B0aW9uIGxpc3QpXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgZGF0YSA9IHQuZGF0YSBpblxuICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBkYXRhIC0gMSBkb1xuICAgIG1hdGNoIE9wdGlvbl9hcnJheS5nZXQgZGF0YSBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudW1fYnJhbmNoZXMgdCAtIDEgZG9cbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGxldCBsZWZ0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIGxlZnQgaW5cbiAgICBsZXQgcmlnaHRfaXNfbm9uZSA9IE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgcmlnaHQgaW5cbiAgICBpZiBPcHRpb25fYXJyYXkuaXNfc29tZSBkYXRhIGlcbiAgICB0aGVuIGFzc2VydCAobm90IChsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSkpXG4gICAgZWxzZVxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgaW5kZXhfaXNfbGVhZiB0IGxlZnQgfHwgaW5kZXhfaXNfbGVhZiB0IHJpZ2h0IHx8IGxlZnRfaXNfbm9uZSB8fCByaWdodF9pc19ub25lKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlX2V4biA/KHNleHBfb2ZfYSA9IFslc2V4cF9vZjogX10pICgpIH5sZW46bnVtX2xlYXZlcyB+cmVkdWNlID1cbiAgaWYgbnVtX2xlYXZlcyA8IDFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIm5vbi1wb3NpdGl2ZSBudW1iZXIgb2YgbGVhdmVzIGluIGJhbGFuY2VkIHJlZHVjZXJcIiAobnVtX2xlYXZlcyA6IGludCldO1xuICBsZXQgbnVtX2JyYW5jaGVzID0gbnVtX2xlYXZlcyAtIDEgaW5cbiAgbGV0IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCA9IEludC5jZWlsX3BvdzIgbnVtX2xlYXZlcyAtIG51bV9sZWF2ZXMgaW5cbiAgbGV0IGRhdGEgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KG51bV9icmFuY2hlcyArIG51bV9sZWF2ZXMpIGluXG4gIHsgZGF0YTsgbnVtX2xlYXZlczsgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsOyByZWR1Y2U7IHNleHBfb2ZfYSB9XG47O1xuXG5sZXQgdmFsaWRhdGVfaW5kZXggdCBpID1cbiAgaWYgaSA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcImF0dGVtcHQgdG8gYWNjZXNzIG5lZ2F0aXZlIGluZGV4IGluIGJhbGFuY2VkIHJlZHVjZXJcIiB+aW5kZXg6KGkgOiBpbnQpXTtcbiAgbGV0IGxlbmd0aCA9IHQubnVtX2xlYXZlcyBpblxuICBpZiBpID49IGxlbmd0aFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCJcbiAgICAgICAgICB+aW5kZXg6KGkgOiBpbnQpXG4gICAgICAgICAgKGxlbmd0aCA6IGludCldXG47O1xuXG5sZXQgc2V0X2V4biB0IGkgYSA9XG4gIHZhbGlkYXRlX2luZGV4IHQgaTtcbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgbGV0IGkgPSByZWYgKGxlYWZfaW5kZXggdCBpKSBpblxuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgZGF0YSAhaSBhO1xuICB3aGlsZSAhaSA8PiAwIGRvXG4gICAgbGV0IHBhcmVudCA9IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXg6IWkgaW5cbiAgICBpZiBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHBhcmVudFxuICAgIHRoZW4gaSA6PSAwXG4gICAgZWxzZSAoXG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIGRhdGEgcGFyZW50O1xuICAgICAgaSA6PSBwYXJlbnQpXG4gIGRvbmVcbjs7XG5cbmxldCBnZXRfZXhuIHQgaSA9XG4gIHZhbGlkYXRlX2luZGV4IHQgaTtcbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxuOztcblxubGV0IHJlYyBjb21wdXRlX2V4biB0IGkgPVxuICBpZiBPcHRpb25fYXJyYXkuaXNfc29tZSB0LmRhdGEgaVxuICB0aGVuIE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZGF0YSBpXG4gIGVsc2UgKFxuICAgIGxldCBsZWZ0ID0gbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4OmkgaW5cbiAgICBsZXQgcmlnaHQgPSByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleDpsZWZ0IGluXG4gICAgaWYgbGVmdCA+PSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZGF0YVxuICAgIHRoZW4gKFxuICAgICAgKCogSWYgd2UgZ2V0IGhlcmUsIHRoZSBwYXJlbnQgd2FzIGFuIHVuc2V0IGxlYWYuICopXG4gICAgICBsZXQgc2V4cF9vZl9hID0gdC5zZXhwX29mX2EgaW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJhdHRlbXB0IHRvIGNvbXB1dGUgYmFsYW5jZWQgcmVkdWNlciB3aXRoIHVuc2V0IGVsZW1lbnRzXCJcbiAgICAgICAgICAgIH5iYWxhbmNlZF9yZWR1Y2VyOih0IDogYSB0KV0pO1xuICAgIGxldCBhID0gdC5yZWR1Y2UgKGNvbXB1dGVfZXhuIHQgbGVmdCkgKGNvbXB1dGVfZXhuIHQgcmlnaHQpIGluXG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmRhdGEgaSBhO1xuICAgIGEpXG47O1xuXG5sZXQgY29tcHV0ZV9leG4gdCA9IGNvbXB1dGVfZXhuIHQgMFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGluaXQgOiAnYVxuICA7IHN0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB7IGluaXQ7IHN0ZXBzID0gXyB9ID0gaW52YXJpYW50X2EgaW5pdFxuXG5sZXQgcmVjIHZhbHVlX2ludGVybmFsIGluaXQgc3RlcHMgfmF0ID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSAoKHQsIGEpLCBzdGVwcykgLT5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IHQgdGhlbiBpbml0IGVsc2UgdmFsdWVfaW50ZXJuYWwgYSBzdGVwcyB+YXRcbjs7XG5cbmxldCB2YWx1ZSB0IH5hdCA9IHZhbHVlX2ludGVybmFsIHQuaW5pdCB0LnN0ZXBzIH5hdFxubGV0IGNvbnN0YW50IGluaXQgPSB7IGluaXQ7IHN0ZXBzID0gU2VxdWVuY2UuZW1wdHkgfVxuXG5sZXQgY3JlYXRlX2V4biB+aW5pdCB+c3RlcHMgPVxuICBpZiBub3RcbiAgICAgICAoTGlzdC5pc19zb3J0ZWQgc3RlcHMgfmNvbXBhcmU6KGZ1biAodGltZTEsIF8pICh0aW1lMiwgXykgLT5cbiAgICAgICAgICBUaW1lX25zLmNvbXBhcmUgdGltZTEgdGltZTIpKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1N0ZXBfZnVuY3Rpb24uY3JlYXRlX2V4bl0gZ290IHVuc29ydGVkIHRpbWVzXCJcbiAgICAgICAgICB+c3RlcHM6KHN0ZXBzIHw+IExpc3QubWFwIH5mOmZzdCA6IFRpbWVfbnMudCBsaXN0KV07XG4gIHsgaW5pdDsgc3RlcHMgPSBzdGVwcyB8PiBTZXF1ZW5jZS5vZl9saXN0IH1cbjs7XG5cbmxldCBjcmVhdGVfZnJvbV9zZXF1ZW5jZSB+aW5pdCB+c3RlcHMgPSB7IGluaXQ7IHN0ZXBzIH1cbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFdlYWsgPSBTdGRsaWIuV2Vha1xuXG50eXBlICdhIHQgPSAnYSBIZWFwX2Jsb2NrLnQgV2Vhay50XG5cbmxldCBjcmVhdGUgfmxlbiA9IFdlYWsuY3JlYXRlIGxlblxubGV0IGxlbmd0aCB0ID0gV2Vhay5sZW5ndGggdFxubGV0IHNldCA9IFdlYWsuc2V0XG5cbmxldCBzZXRfZXhuIHQgaSB4ID0gc2V0IHQgaSAoT3B0aW9uLm1hcCB4IH5mOkhlYXBfYmxvY2suY3JlYXRlX2V4bilcblxubGV0IGdldCA9IFdlYWsuZ2V0XG5sZXQgaXNfc29tZSB0IGkgPSBXZWFrLmNoZWNrIHQgaVxubGV0IGlzX25vbmUgdCBpID0gbm90IChpc19zb21lIHQgaSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXQgdCBpKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cF9vZjogYSBIZWFwX2Jsb2NrLnQgb3B0aW9uIGFycmF5XSAodG9fYXJyYXkgdClcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBnZXQgdCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBmIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZ2V0IHQgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gZiBpIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICBXZWFrLmJsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4iLCIoKiBXZSBpbXBsZW1lbnQgYSB3ZWFrIHBvaW50ZXIgdXNpbmcgYSBbV2Vha19hcnJheS50XS4gKilcblxub3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSBXZWFrX2FycmF5LnRcblxubGV0IGNyZWF0ZSAoKSA9IFdlYWtfYXJyYXkuY3JlYXRlIH5sZW46MVxuXG4oKiBXZSB1c2UgYSB3ZWFrIGFycmF5IG9mIGxlbmd0aCAxLCBzbyB0aGUgd2VhayBwb2ludGVyIGlzIGF0IGluZGV4IDAuICopXG5sZXQgaW5kZXggPSAwXG5cbmxldCBnZXQgdCA9IFdlYWtfYXJyYXkuZ2V0IHQgaW5kZXhcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIEhlYXBfYmxvY2sudCBvcHRpb24pXVxuXG5sZXQgaXNfbm9uZSB0ID0gV2Vha19hcnJheS5pc19ub25lIHQgaW5kZXhcbmxldCBpc19zb21lIHQgPSBXZWFrX2FycmF5LmlzX3NvbWUgdCBpbmRleFxuXG5sZXQgc2V0IHQgYmxvY2sgPSBXZWFrX2FycmF5LnNldCB0IGluZGV4IChTb21lIGJsb2NrKVxuIiwib3BlbiEgQmFzZVxuXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgZW50cnlfYnlfa2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgnYSwgJ2IgV2Vha19wb2ludGVyLnQpIEhhc2h0YmwudFxuICA7IGtleXNfd2l0aF91bnVzZWRfZGF0YSAgICAgICAgICAgICAgICAgICAgOiAnYSBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA6IHVuaXQgLT4gdW5pdFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgaGFzaGFibGUgPVxuICAgIHsgZW50cnlfYnlfa2V5ICAgICAgICAgICAgICAgICAgICAgPVxuICAgICAgICBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemVcbiAgICAgICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG5cbiAgICA7IGtleXNfd2l0aF91bnVzZWRfZGF0YSAgICAgICAgICAgID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyB0aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA9IGlnbm9yZVxuICAgIH1cbiAgOztcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgVXNpbmdfaGFzaGFibGUuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUub2Zfa2V5IG0pXG47O1xuXG5sZXQgc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHQgfnRocmVhZF9zYWZlX2YgPVxuICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhIDwtIHRocmVhZF9zYWZlX2Y7XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID0gSGFzaHRibC5yZW1vdmUgdC5lbnRyeV9ieV9rZXkga2V5XG5cbigqIEluIG9yZGVyIGZvciBhIGNhbGwgdG8gW3JlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YV0gdG8gcmVjbGFpbSBhIGtleSB0aGF0XG4gICB3YXMgcHJldmlvdXNseSBmaW5hbGl6ZWQsIHRoZSB3ZWFrIHBvaW50ZXIgbXVzdCBoYXZlIGJlZW4gY2xlYXJlZC4gIFRoaXMgcmVsaWVzIG9uIHRoZVxuICAgZmFjdCB0aGF0IHRoZSBPQ2FtbCBnYXJiYWdlIGNvbGxlY3RvciBjbGVhcnMgd2Vha3MgYW5kIHRoZW4gcnVucyBmaW5hbGl6ZXJzLiAqKVxubGV0IHJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQua2V5c193aXRoX3VudXNlZF9kYXRhID4gMCBkb1xuICAgIGxldCBrZXkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlbnRyeSAtPiBpZiBXZWFrX3BvaW50ZXIuaXNfbm9uZSBlbnRyeSB0aGVuIHJlbW92ZSB0IGtleVxuICBkb25lO1xuOztcblxubGV0IGdldF9lbnRyeSB0IGtleSA9XG4gIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5lbnRyeV9ieV9rZXkga2V5XG4gICAgfmRlZmF1bHQ6KGZ1biAoKSAtPiBXZWFrX3BvaW50ZXIuY3JlYXRlICgpKTtcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuOztcblxubGV0IGtleV9pc191c2luZ19zcGFjZSB0IGtleSA9IEhhc2h0YmwubWVtIHQuZW50cnlfYnlfa2V5IGtleVxuXG5sZXQgc2V0X2RhdGEgdCBrZXkgZW50cnkgKGRhdGEgOiBfIEhlYXBfYmxvY2sudCkgPVxuICBXZWFrX3BvaW50ZXIuc2V0IGVudHJ5IGRhdGE7XG4gIGxldCBjbGVhbnVwICgpID1cbiAgICBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT5cbiAgICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEga2V5O1xuICAgICAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSAoKSlcbiAgaW5cbiAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IGNsZWFudXAgZGF0YSB3aXRoXG4gICgqIEluIHRoaXMgY2FzZSwgW3hdIGlzIGtub3duIHRvIGJlIHN0YXRpYyBkYXRhLCB3aGljaCB3aWxsXG4gICAgIG5ldmVyIGJlIGNvbGxlY3RlZCBieSB0aGUgR0MgYW55d2F5LCBzbyBpdCdzIHNhZmUgdG8gZHJvcCAqKVxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiAoKVxuXG47O1xuXG5sZXQgcmVwbGFjZSB0IH5rZXkgfmRhdGEgPSBzZXRfZGF0YSB0IGtleSAoZ2V0X2VudHJ5IHQga2V5KSBkYXRhXG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBpZiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiV2Vha19oYXNodGJsLmFkZF9leG4gb2Yga2V5IGluIHVzZVwiIH5fOih0IDogKF8sIF8pIHQpIFslaGVyZV1dO1xuICBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhO1xuOztcblxubGV0IGZpbmQgdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGVudHJ5IC0+IFdlYWtfcG9pbnRlci5nZXQgZW50cnlcbjs7XG5cbmxldCBmaW5kX29yX2FkZCB0IGtleSB+ZGVmYXVsdCA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBtYXRjaCBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5IHdpdGhcbiAgfCBTb21lIHYgLT4gdlxuICB8IE5vbmUgLT5cbiAgICBsZXQgZGF0YSA9IGRlZmF1bHQgKCkgaW5cbiAgICBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhO1xuICAgIGRhdGFcbjs7XG4iLCJ0eXBlIHQgPVxuICB8IEJlZm9yZVxuICB8IEFmdGVyXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuIiwiWyUlaW1wb3J0IFwiZGVidWcubWxoXCJdXG5cbm9wZW4gQ29yZVxuXG4oKiBBbGwgW2Fzc2VydF1zIGFuZCBvdGhlciBjaGVja3MgdGhyb3VnaG91dCB0aGUgY29kZSBhcmUgZ3VhcmRlZCBieSBbaWYgZGVidWddLiAgVGhlXG4gICBERUJVRyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIGxpYiBbaW5jcmVtZW50YWxdIGFuZCB1bnNldCBpbiB0aGUgbGliXG4gICBbaW5jcmVtZW50YWxfZGVidWddLCBidXQgYXBhcnQgZnJvbSB0aGF0IHRoZXkgYXJlIGlkZW50aWNhbC4gIFRlc3RzIGFyZSBydW4gd2l0aCBib3RoXG4gICB0aGUgcHJvZHVjdGlvbiBhbmQgZGVidWcgbGliLCBhbmQgdXNlcnMgY2FuIGNob29zZSB0byBidWlsZCB3aXRoIHRoZSBkZWJ1ZyBsaWJyYXJ5LCBpZlxuICAgdGhleSBzdXNwZWN0IHRoZXkgZm91bmQgYSBidWcgaW4gaW5jcmVtZW50YWwuICopXG5cblslJWlmIEpTQ19ERUJVR11cblxubGV0IGRlYnVnID0gdHJ1ZVxuXG5bJSVlbHNlXVxuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5bJSVlbmRpZl1cblxubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcbmxldCB0YWcgbmFtZSBhIHNleHBfb2ZfYSA9IChuYW1lLCBhKSB8PiBbJXNleHBfb2Y6IHN0cmluZyAqIGFdXG5cbm1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gSW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBcnJheVxuXG4gICgqIE5vdCBkZWZpbmluZyBhbGlhc2VzIGluIHByb2R1Y3Rpb24gbW9kZSwgc2luY2UgdGhleSBicmVhayB0eXBlIHNwZWNpYWxpemF0aW9uIG9mXG4gICAgIGFycmF5IGFjY2Vzc2VzLiAqKVxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuIGEgPVxuICAgIGxldCBuZXdfdCA9IGNyZWF0ZSB+bGVuIGEgaW5cbiAgICBBcnJheS5ibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgVW9wdCA9IHN0cnVjdFxuICBpbmNsdWRlIFVvcHRcblxuICBsZXQgdW5zYWZlX3ZhbHVlID0gaWYgZGVidWcgdGhlbiB2YWx1ZV9leG4gZWxzZSB1bnNhZmVfdmFsdWVcbmVuZFxuXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaWZvcm1fYXJyYXlcblxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRfd2l0aF9jYW1sX21vZGlmeVxuXG4gIFslJWVsc2VdXG5cbiAgKCogVW5pZm9ybV9hcnJheSBpcyBiZWluZyBcInNtYXJ0XCIgYnkgY2hlY2tpbmcgaWYgZWxlbWVudHMgYXJlIGludGVnZXJzLCBidXQgVW9wdC50XG4gICAgIGFsbW9zdCBuZXZlciBjb250YWluIGludGVnZXJzLCBzbyB0aGUgZXh0cmEgY2hlY2sgdG8gbWFrZSBnZW5lcmF0ZWQgY29kZSBoYXJkZXIgdG9cbiAgICAgcmVhZCBhbmQgcG90ZW50aWFsbHkgc2xvd2VyLiAqKVxuICBsZXQgdW5zYWZlX3NldCA9IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeVxuICBsZXQgc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBVb3B0Lm5vbmUgaW5cbiAgICBibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgKCogV2Ugc3BlY2lhbGl6ZSBzb21lIGN1dG9mZnMgdG8gYXZvaWQgYW4gaW5kaXJlY3QgZnVuY3Rpb24gY2FsbDsgaW4gcGFydGljdWxhciB3ZVxuICAgICBzcGVjaWFsaXplIHRoZSBkZWZhdWx0IChhbmQgaGVuY2Ugb3ZlcndoZWxtaW5nbHkgY29tbW9uKSBjYXNlIG9mIHBoeXNpY2FsXG4gICAgIGVxdWFsaXR5LiAqKVxuICB8IEFsd2F5c1xuICB8IE5ldmVyXG4gIHwgUGh5c19lcXVhbFxuICB8IENvbXBhcmUgb2YgKCdhIC0+ICdhIC0+IGludClcbiAgfCBFcXVhbCBvZiAoJ2EgLT4gJ2EgLT4gYm9vbClcbiAgfCBGIG9mIChvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+IGJvb2wpXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBBbHdheXMgfCBOZXZlciB8IFBoeXNfZXF1YWwgfCBDb21wYXJlIF8gfCBFcXVhbCBfIHwgRiBfIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBmID0gRiBmXG5sZXQgb2ZfY29tcGFyZSBmID0gQ29tcGFyZSBmXG5sZXQgb2ZfZXF1YWwgZiA9IEVxdWFsIGZcbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgYWx3YXlzID0gQWx3YXlzXG5sZXQgcG9seV9lcXVhbCA9IEVxdWFsIFBvbHkuZXF1YWxcblxubGV0IHNob3VsZF9jdXRvZmYgdCB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQaHlzX2VxdWFsIC0+IHBoeXNfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IE5ldmVyIC0+IGZhbHNlXG4gIHwgQWx3YXlzIC0+IHRydWVcbiAgfCBDb21wYXJlIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlID0gMFxuICB8IEVxdWFsIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlXG4gIHwgRiBmIC0+IGYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG47O1xuXG5sZXQgZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEFsd2F5cywgQWx3YXlzIC0+IHRydWVcbiAgfCBBbHdheXMsIF8gLT4gZmFsc2VcbiAgfCBOZXZlciwgTmV2ZXIgLT4gdHJ1ZVxuICB8IE5ldmVyLCBfIC0+IGZhbHNlXG4gIHwgUGh5c19lcXVhbCwgUGh5c19lcXVhbCAtPiB0cnVlXG4gIHwgUGh5c19lcXVhbCwgXyAtPiBmYWxzZVxuICB8IENvbXBhcmUgZjEsIENvbXBhcmUgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IENvbXBhcmUgXywgXyAtPiBmYWxzZVxuICB8IEVxdWFsIGYxLCBFcXVhbCBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgRXF1YWwgXywgXyAtPiBmYWxzZVxuICB8IEYgZjEsIEYgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEYgXywgXyAtPiBmYWxzZVxuOztcblxubGV0IHBoeXNfZXF1YWwgPSBQaHlzX2VxdWFsXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RyaW5nX2xpc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5tYWtlIH5zZXhwX29mX3QgfmNvbXBhcmUpXG5lbmRcblxudHlwZSBkb3QgPVxuICB7IGxhYmVsIDogU2V0Lk0oU3RyaW5nX2xpc3QpLnRcbiAgOyBhdHRyaWJ1dGVzIDogc3RyaW5nIFN0cmluZy5NYXAudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPVxuICB8IERvdCBvZiBkb3RcbiAgfCBJbmZvIG9mIEluZm8udFxuICB8IEFwcGVuZCBvZlxuICAgICAgeyBwcmlvciA6IHRcbiAgICAgIDsgbmV3XyA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmZvIGluZm8gPSBJbmZvIGluZm9cbmxldCBhcHBlbmQgcHJpb3IgbmV3XyA9IEFwcGVuZCB7IHByaW9yOyBuZXdfIH1cblxubGV0IGRvdCB+bGFiZWwgfmF0dHJpYnV0ZXMgPVxuICBsZXQgbGFiZWwgPSBTZXQuc2luZ2xldG9uIChtb2R1bGUgU3RyaW5nX2xpc3QpIGxhYmVsIGluXG4gIERvdCB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCByZWMgdG9fZG90ID0gZnVuY3Rpb25cbiAgfCBJbmZvIGkgLT5cbiAgICB7IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBbIEluZm8udG9fc3RyaW5nX2h1bSBpIF1cbiAgICA7IGF0dHJpYnV0ZXMgPSBTdHJpbmcuTWFwLmVtcHR5XG4gICAgfVxuICB8IERvdCBkb3QgLT4gZG90XG4gIHwgQXBwZW5kIHsgcHJpb3I7IG5ld18gfSAtPlxuICAgIGxldCBwcmlvciA9IHRvX2RvdCBwcmlvciBpblxuICAgIGxldCBuZXdfID0gdG9fZG90IG5ld18gaW5cbiAgICBsZXQgbGFiZWwgPSBTZXQudW5pb24gcHJpb3IubGFiZWwgbmV3Xy5sYWJlbCBpblxuICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgIE1hcC5tZXJnZV9za2V3ZWRcbiAgICAgICAgcHJpb3IuYXR0cmlidXRlc1xuICAgICAgICBuZXdfLmF0dHJpYnV0ZXNcbiAgICAgICAgfmNvbWJpbmU6KGZ1biB+a2V5Ol8gX2xlZnQgcmlnaHQgLT4gcmlnaHQpXG4gICAgaW5cbiAgICB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCBlc2NhcGVfZG90X3N0cmluZyBzID1cbiAgKCogaHR0cHM6Ly9ncmFwaHZpei5vcmcvZG9jL2luZm8vbGFuZy5odG1sICopXG4gIFwiXFxcIlwiIF4gU3RyaW5nLnN1YnN0cl9yZXBsYWNlX2FsbCBzIH5wYXR0ZXJuOlwiXFxcIlwiIH53aXRoXzpcIlxcXFxcXFwiXCIgXiBcIlxcXCJcIlxuOztcblxubGV0IGVzY2FwZV9yZWNvcmRfbGFiZWwgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL3NoYXBlcy5odG1sICopXG4gIFN0cmluZy5jb25jYXRfbWFwIHMgfmY6KGZ1bmN0aW9uXG4gICAgfCAoJzwnIHwgJz4nIHwgJ3snIHwgJ30nIHwgJ3wnIHwgJ1xcXFwnIHwgJyAnKSBhcyBjIC0+IFwiXFxcXFwiIF4gU3RyaW5nLm9mX2NoYXIgY1xuICAgIHwgYyAtPiBTdHJpbmcub2ZfY2hhciBjKVxuOztcblxubGV0IHRvX3N0cmluZyB+bmFtZSB7IGxhYmVsOyBhdHRyaWJ1dGVzIH0gPVxuICBsZXQgbGFiZWwgPVxuICAgIGxhYmVsXG4gICAgfD4gU2V0LnRvX2xpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGNvbHMgLT5cbiAgICAgIFwie1wiIF4gU3RyaW5nLmNvbmNhdCAoTGlzdC5tYXAgY29scyB+Zjplc2NhcGVfcmVjb3JkX2xhYmVsKSB+c2VwOlwifFwiIF4gXCJ9XCIpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwifFwiXG4gICAgfD4gZnVuIHMgLT4gXCJ7XCIgXiBzIF4gXCJ9XCJcbiAgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGF0dHJpYnV0ZXNcbiAgICB8PiBNYXAudG9fYWxpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgc3ByaW50ZiB7fCAlcz0lc3x9IChlc2NhcGVfZG90X3N0cmluZyBrKSAoZXNjYXBlX2RvdF9zdHJpbmcgdikpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG4gIGluXG4gIHNwcmludGYge3wgICVzIFtzaGFwZT1NcmVjb3JkIGxhYmVsPSVzICVzXXx9IG5hbWUgKGVzY2FwZV9kb3Rfc3RyaW5nIGxhYmVsKSBhdHRyaWJ1dGVzXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAxKVxuXG5sZXQgbmV4dCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAtMSlcbmxldCBub25lID0gLTFcbmxldCBpc19ub25lIHQgPSB0ID0gbm9uZVxubGV0IGlzX3NvbWUgdCA9IHQgPj0gMFxubGV0IGFkZDEgdCA9IHQgKyAxXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFByZXZpb3VzX3VwZGF0ZV9raW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWRcbiAgICB8IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIE5vZGVfdXBkYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBOZWNlc3Nhcnkgb2YgJ2FcbiAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBmIDogJ2EgTm9kZV91cGRhdGUudCAtPiB1bml0XG4gIDsgbXV0YWJsZSBwcmV2aW91c191cGRhdGVfa2luZCA6IFByZXZpb3VzX3VwZGF0ZV9raW5kLnRcbiAgOyBjcmVhdGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGYgfmF0OmNyZWF0ZWRfYXQgPSB7IGY7IHByZXZpb3VzX3VwZGF0ZV9raW5kID0gTmV2ZXJfYmVlbl91cGRhdGVkOyBjcmVhdGVkX2F0IH1cblxubGV0IHJlYWxseV9ydW4gdCAobm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQpID1cbiAgdC5wcmV2aW91c191cGRhdGVfa2luZFxuICA8LSAobWF0Y2ggbm9kZV91cGRhdGUgd2l0aFxuICAgIHwgTmVjZXNzYXJ5IF8gLT4gTmVjZXNzYXJ5XG4gICAgfCBDaGFuZ2VkIF8gLT4gQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWQgLT4gSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5IC0+IFVubmVjZXNzYXJ5KTtcbiAgdC5mIG5vZGVfdXBkYXRlXG47O1xuXG5sZXQgcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSB+bm93ID1cbiAgKCogV2Ugb25seSBydW4gdGhlIGhhbmRsZXIgaWYgd2FzIGNyZWF0ZWQgaW4gYW4gZWFybGllciBzdGFiaWxpemF0aW9uIGN5Y2xlLiAgSWYgdGhlXG4gICAgIGhhbmRsZXIgd2FzIGNyZWF0ZWQgYnkgYW5vdGhlciBvbi11cGRhdGUgaGFuZGxlciBkdXJpbmcgdGhlIHJ1bm5pbmcgb2Ygb24tdXBkYXRlXG4gICAgIGhhbmRsZXJzIGluIHRoZSBjdXJyZW50IHN0YWJpbGl6YXRpb24sIHdlIHRyZWF0IHRoZSBhZGRlZCBoYW5kbGVyIGFzIGlmIGl0IHdlcmUgYWRkZWRcbiAgICAgYWZ0ZXIgdGhpcyBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgV2Ugd2lsbCBydW4gaXQgYXQgdGhlIG5leHQgc3RhYmlsaXphdGlvbiwgYmVjYXVzZVxuICAgICB0aGUgbm9kZSB3aXRoIHRoZSBoYW5kbGVyIHdhcyBwdXNoZWQgb24gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB0LmNyZWF0ZWRfYXQgbm93IDwgMFxuICB0aGVuIChcbiAgICBtYXRjaCB0LnByZXZpb3VzX3VwZGF0ZV9raW5kLCBub2RlX3VwZGF0ZSB3aXRoXG4gICAgKCogT25jZSBhIG5vZGUgaXMgaW52YWxpZGF0ZWQsIHRoZXJlIHdpbGwgbmV2ZXIgYmUgZnVydGhlciBpbmZvcm1hdGlvbiB0byBwcm92aWRlLFxuICAgICAgIHNpbmNlIGluY3JlbWVudGFsIGRvZXMgbm90IGFsbG93IGFuIGludmFsaWQgbm9kZSB0byBiZWNvbWUgdmFsaWQuICopXG4gICAgfCBJbnZhbGlkYXRlZCwgXyAtPiAoKVxuICAgICgqIFRoZXNlIGNhc2VzIGNhbiBoYXBwZW4gaWYgYSBub2RlIGlzIGhhbmRsZWQgYWZ0ZXIgc3RhYmlsaXphdGlvbiBkdWUgdG8gYW5vdGhlclxuICAgICAgIGhhbmRsZXIuICBCdXQgZm9yIHRoZSBjdXJyZW50IGhhbmRsZXIsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gYmVjYXVzZSB0aGVyZSBpcyBub1xuICAgICAgIG5ldyBpbmZvcm1hdGlvbiB0byBwcm92aWRlLiAqKVxuICAgIHwgQ2hhbmdlZCwgTmVjZXNzYXJ5IF8gfCBOZWNlc3NhcnksIE5lY2Vzc2FyeSBfIHwgVW5uZWNlc3NhcnksIFVubmVjZXNzYXJ5IC0+ICgpXG4gICAgKCogSWYgdGhpcyBoYW5kbGVyIGhhc24ndCBzZWVuIGEgbm9kZSB0aGF0IGlzIGNoYW5naW5nLCB3ZSB0cmVhdCB0aGUgdXBkYXRlIGFzIGFuXG4gICAgICAgaW5pdGlhbGl6YXRpb24uICopXG4gICAgfCAoTmV2ZXJfYmVlbl91cGRhdGVkIHwgVW5uZWNlc3NhcnkpLCBDaGFuZ2VkIChfLCBhKSAtPiByZWFsbHlfcnVuIHQgKE5lY2Vzc2FyeSBhKVxuICAgICgqIEFsbCBvdGhlciB1cGRhdGVzIGFyZSBydW4gYXMgaXMuICopXG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWQsIChOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpXG4gICAgfCBVbm5lY2Vzc2FyeSwgKE5lY2Vzc2FyeSBfIHwgSW52YWxpZGF0ZWQpXG4gICAgfCBOZWNlc3NhcnksIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgQ2hhbmdlZCwgKENoYW5nZWQgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpIC0+IHJlYWxseV9ydW4gdCBub2RlX3VwZGF0ZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IGV4biA6IGV4blxuICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgZXhuID0geyBleG47IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgfVxuXG5sZXQgcmVyYWlzZV93aXRoX21lc3NhZ2UgeyBleG47IGJhY2t0cmFjZSB9IG1zZyA9XG4gIEV4bi5yYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoRXhuLlJlcmFpc2VkIChtc2csIGV4bikpIGJhY2t0cmFjZVxuOztcblxubGV0IHJlcmFpc2UgeyBleG47IGJhY2t0cmFjZSB9ID0gRXhuLnJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4biBiYWNrdHJhY2VcbiIsIigqIFRoaXMgbW9kdWxlIGhhcyBhIGdpYW50IFttb2R1bGUgcmVjXSBkZWZpbmluZyBhbGwgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyB1c2VkXG4gICBpbiB0aGUgaW1wbGVtZW50YXRpb24uICBUaGUgZGVmaW5pdGlvbiBvZiBlYWNoIHR5cGUgaXMgdGhlbiByZXBlYXRlZCBpbiBpdHMgZmlsZTtcbiAgIGNvbW1lbnRzIGJlbG9uZyB0aGVyZSwgbm90IGhlcmUuXG5cbiAgIFdlIHB1dCBqdXN0IGVub3VnaCBzZXhwIGNvbnZlcnRlcnMgaGVyZSB0byBkaXNwbGF5IG5vZGUgaWRzLiAgVGhlIGRldGFpbGVkIHNleHBcbiAgIGNvbnZlcnRlcnMgYXJlIGdlbmVyYXRlZCB2aWEgW3dpdGggc2V4cF0gaW4gdGhlIGluZGl2aWR1YWwgZmlsZXMuICBEZWZpbmluZyB0aGUgc2V4cFxuICAgY29udmVydGVycyBvdXRzaWRlIG9mIHRoZSBbbW9kdWxlIHJlY10gbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFcbiAgIHNleHAgY29udmVydGVyIHRoYXQgd291bGQgdHJ5IHRvIHByb2R1Y2UgYW4gaW5maW5pdGUgc2V4cC5cbiopXG5cbm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIHJlYyBBZGp1c3RfaGVpZ2h0c19oZWFwIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgICA7IG11dGFibGUgbWF4X2hlaWdodF9zZWVuIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIEFkanVzdF9oZWlnaHRzX2hlYXBcblxuYW5kIEFsYXJtIDogc2lnXG4gIHR5cGUgdCA9IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbmVuZCA9XG4gIEFsYXJtXG5cbmFuZCBBbGFybV92YWx1ZSA6IHNpZ1xuICBtb2R1bGUgQWN0aW9uIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgQXQudFxuICAgICAgfCBBdF9pbnRlcnZhbHMgb2YgQXRfaW50ZXJ2YWxzLnRcbiAgICAgIHwgU25hcHNob3QgOiBfIFNuYXBzaG90LnQgLT4gdFxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogdCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBBbGFybV92YWx1ZVxuXG5hbmQgQXJyYXlfZm9sZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2FjYykgdCA9XG4gICAgeyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgICB9XG5lbmQgPVxuICBBcnJheV9mb2xkXG5cbmFuZCBBdCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdFxuXG5hbmQgQXRfaW50ZXJ2YWxzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgICA7IGludGVydmFsIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdF9pbnRlcnZhbHNcblxuYW5kIEJpbmQgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB7IG1haW4gOiAnYiBOb2RlLnRcbiAgICA7IG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICAgIDsgbGhzIDogJ2EgTm9kZS50XG4gICAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICAgIDsgbXV0YWJsZSByaHNfc2NvcGUgOiBTY29wZS50XG4gICAgOyBtdXRhYmxlIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQmluZFxuXG5hbmQgQ2xvY2sgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWluZ193aGVlbCA6IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudCBWYXIudFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogQWxhcm0udCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGZpcmVkX2FsYXJtX3ZhbHVlcyA6IEFsYXJtX3ZhbHVlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQ2xvY2tcblxuYW5kIEV4cGVydCA6IHNpZ1xuICB0eXBlICdhIGVkZ2UgPVxuICAgIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgICA7IG9uX2NoYW5nZSA6ICdhIC0+IHVuaXRcbiAgICA7IG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gICAgfVxuXG4gIHR5cGUgcGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZSBbQEB1bmJveGVkXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBmIDogdW5pdCAtPiAnYVxuICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgICA7IG11dGFibGUgY2hpbGRyZW4gOiBwYWNrZWRfZWRnZSBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICAgIDsgbXV0YWJsZSBmb3JjZV9zdGFsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgICA7IG11dGFibGUgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgOiBib29sXG4gICAgfVxuZW5kID1cbiAgRXhwZXJ0XG5cbmFuZCBGcmVlemUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gICAgOyBvbmx5X2ZyZWV6ZV93aGVuIDogJ2EgLT4gYm9vbFxuICAgIH1cbmVuZCA9XG4gIEZyZWV6ZVxuXG5hbmQgSWZfdGhlbl9lbHNlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgY3VycmVudF9icmFuY2ggOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICAgIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgICB9XG5lbmQgPVxuICBJZl90aGVuX2Vsc2VcblxuYW5kIEludGVybmFsX29ic2VydmVyIDogc2lnXG4gIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IENyZWF0ZWRcbiAgICAgIHwgSW5fdXNlXG4gICAgICB8IERpc2FsbG93ZWRcbiAgICAgIHwgVW5saW5rZWRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fb2JzZXJ2aW5nIDogJ2EgdCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9vYnNlcnZpbmcgOiAnYSB0IFVvcHQudFxuICAgIH1cblxuICB0eXBlICdhIGludGVybmFsX29ic2VydmVyID0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyBpbnRlcm5hbF9vYnNlcnZlciAtPiB0IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXJcblxuYW5kIEpvaW4gOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSByaHMgOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgSm9pblxuXG5hbmQgS2luZCA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gICAgfCBBdF9pbnRlcnZhbHMgOiBBdF9pbnRlcnZhbHMudCAtPiB1bml0IHRcbiAgICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gICAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gICAgfCBDb25zdCBvZiAnYVxuICAgIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gICAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgICB8IElmX3Rlc3RfY2hhbmdlIDogXyBJZl90aGVuX2Vsc2UudCAtPiB1bml0IHRcbiAgICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICAgIHwgSW52YWxpZFxuICAgIHwgSm9pbl9saHNfY2hhbmdlIDogXyBKb2luLnQgLT4gdW5pdCB0XG4gICAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gICAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgU25hcHNob3Qgb2YgJ2EgU25hcHNob3QudFxuICAgIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICAgIHwgVW5pbml0aWFsaXplZFxuICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiAoXywgJ2EpIFVub3JkZXJlZF9hcnJheV9mb2xkLnQgLT4gJ2EgdFxuICAgIHwgVmFyIG9mICdhIFZhci50XG4gICAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwMyA6ICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwNCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA1IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNiA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNyA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA4IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwOSA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTAgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMSA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEyIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMyA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxNCA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYTE0XG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAqICdhMTQgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDE1IDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhMTRcbiAgICAgICAgIC0+ICdhMTVcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG5lbmQgPVxuICBLaW5kXG5cbmFuZCBOb2RlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IE5vZGVfaWQudFxuICAgIDsgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBraW5kIDogJ2EgS2luZC50XG4gICAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gICAgOyBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBwYXJlbnQwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgICA7IG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBvYnNlcnZlcnMgOiAnYSBJbnRlcm5hbF9vYnNlcnZlci50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IGJvb2xcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA6IGludCBhcnJheVxuICAgIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICAgIDsgbXV0YWJsZSB1c2VyX2luZm8gOiBEb3RfdXNlcl9pbmZvLnQgb3B0aW9uXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl0gW0BAdW5ib3hlZF1cbiAgZW5kXG5cbiAgdmFsIGlzX3ZhbGlkIDogXyB0IC0+IGJvb2xcbiAgdmFsIGlzX25lY2Vzc2FyeSA6IF8gdCAtPiBib29sXG4gIHZhbCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgTm9kZSA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFBhY2tlZCA6PSBOb2RlLlBhY2tlZClcblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IGNvbmNhdCBbIFwiblwiOyBOb2RlX2lkLnRvX3N0cmluZyB0LmlkIF0gfD4gWyVzZXhwX29mOiBzdHJpbmddXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAdW5ib3hlZF1cblxuICAgIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyBub2RlXVxuICBlbmRcblxuICBsZXQgaXNfdmFsaWQgdCA9XG4gICAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgICB8IEludmFsaWQgLT4gZmFsc2VcbiAgICB8IF8gLT4gdHJ1ZVxuICA7O1xuXG4gICgqIFtpc19uZWNlc3NhcnldIGlzIGRlZmluZWQgaGVyZSBiZWNhdXNlIHdlIG5lZWQgaXQgYmVmb3JlIG5vZGUubWwgaXMgYXZhaWxhYmxlLiAgSXQgaXNcbiAgICAgdXNlZCBkdXJpbmcgZ3JhcGggbWFuaXB1bGF0aW9uLCBhbmQgc28gaXMgd3JpdHRlbiB3aXRoIHNvbWUgY2FyZSB0byBiZSBmYXN0LiAqKVxuICBsZXQgaXNfbmVjZXNzYXJ5IHQgPVxuICAgIHQubnVtX3BhcmVudHMgPiAwXG4gICAgfHwgVW9wdC5pc19zb21lIHQub2JzZXJ2ZXJzXG4gICAgfHwgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICB8IEZyZWV6ZSBfIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8fCB0LmZvcmNlX25lY2Vzc2FyeVxuICA7O1xuXG4gIGxldCB0X2lzX2luamVjdGl2ZSAodHlwZSBhIGIpIChUIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpIDogKGEsIGIpIFR5cGVfZXF1YWwudCA9IFRcblxuICBsZXQgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgKHR5cGUgYSBiKSAodDEgOiBhIHQpICh0MiA6IGIgdCkgPVxuICAgICgqIFRoaXMgaXMgdHlwZS1zYWZlIGFzc3VtaW5nIG5vIG9uZSBjYW4gZ2l2ZSB0aGUgc2FtZSBpbmNyZW1lbnRhbCBub2RlIHR3byBkaWZmZXJlbnRcbiAgICAgICB0eXBlcy4gIFRoaXMgaXMgdHJ1ZSBiZWNhdXNlIHRoZSBmaWVsZCBbbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2Egb3B0aW9uXSBwcmV2ZW50c1xuICAgICAgIGJvdGggc3VidHlwaW5nIGFuZCBwYXJhbWV0ZXJpYyBwb2x5bW9ycGhpc20uICBCdXQgdGhpcyBhbGxvd3MgdG8gYnJlYWtcbiAgICAgICBhYnN0cmFjdGlvbnMsIGFzIGluIHNvbWVvbmUgY291bGQgd3JpdGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0XG4gICAgICAgICB0eXBlIHUgKCogPSB0IHVuZGVybmVhdGggKilcbiAgICAgICAgIHZhbCBjcmVhdGUgOiB1bml0IC0+IHQgSW5jci50ICogdSBJbmNyLnQgKCogdGhlIHR3byBpbmNyZW1lbnRhbHMgYXJlIHBoeXNfZXF1YWwgKilcbiAgICAgICBdfVxuXG4gICAgICAgYW5kIHdlIHdvdWxkIGZpZ3VyZSBvdXQgdGhhdCB0eXBlIHQgPSB1LiAgSG93ZXZlciwgd2UgY291bGQgYWRkIGEgVHlwZV9lcXVhbC5JZCB0b1xuICAgICAgIG5vZGVzIGFuZCBkbyB0aGUgc2FtZSwgc28gaXQgc2VlbXMgdG8gYmUgYSBtb3JlIGdlbmVyYWwgaXNzdWUuICopXG4gICAgaWYgcGh5c19zYW1lIHQxIHQyXG4gICAgdGhlbiBTb21lICh0X2lzX2luamVjdGl2ZSAoT2JqLm1hZ2ljIChUIDogXyBUeXBlX2VxdWFsLnQpIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpKVxuICAgIGVsc2UgTm9uZVxuICA7O1xuZW5kXG5cbmFuZCBPYnNlcnZlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZlxuZW5kID1cbiAgT2JzZXJ2ZXJcblxuYW5kIE9ubHlfaW5fZGVidWcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIE9ubHlfaW5fZGVidWdcblxuYW5kIFBhY2tlZF93ZWFrX2hhc2h0YmwgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IChfLCBfKSBXZWFrX2hhc2h0YmwudCAtPiB0XG5lbmQgPVxuICBQYWNrZWRfd2Vha19oYXNodGJsXG5cbmFuZCBSZWNvbXB1dGVfaGVhcCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIFJlY29tcHV0ZV9oZWFwXG5cbmFuZCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzIDogc2lnXG4gIHR5cGUgdCA9IFQgOiAnYSBOb2RlLnQgKiAnYSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZS50IC0+IHRcbmVuZCA9XG4gIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnNcblxuYW5kIFNjb3BlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBUb3BcbiAgICB8IEJpbmQgOiAoXywgXykgQmluZC50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG9wXG4gICAgfCBCaW5kIDogKF8sIF8pIEJpbmQudCAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBUb3AgLT4gXCJUb3BcIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICB8IEJpbmQgYmluZCAtPiBiaW5kLm1haW4gfD4gWyVzZXhwX29mOiBfIE5vZGUudF1cbiAgOztcbmVuZFxuXG5hbmQgU25hcHNob3QgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGF0IDogVGltZV9ucy50XG4gICAgOyBiZWZvcmUgOiAnYVxuICAgIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFNuYXBzaG90XG5cbmFuZCBTdGF0ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgICA7IG11dGFibGUgc3RhYmlsaXphdGlvbl9udW0gOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfc2NvcGUgOiBTY29wZS50XG4gICAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXAgOiBBZGp1c3RfaGVpZ2h0c19oZWFwLnRcbiAgICA7IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gICAgOyBtdXRhYmxlIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIDogaW50XG4gICAgOyBtdXRhYmxlIGFsbF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBuZXdfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgU3RhY2sudFxuICAgIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gICAgOyB3ZWFrX2hhc2h0YmxzIDogUGFja2VkX3dlYWtfaGFzaHRibC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG11dGFibGUga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY3JlYXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfaW52YWxpZGF0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICAgIH1cbmVuZCA9XG4gIFN0YXRlXG5cbmFuZCBTdGF0dXMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IFN0YWJpbGl6aW5nXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgIHwgTm90X3N0YWJpbGl6aW5nXG4gICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5lbmQgPVxuICBTdGF0dXNcblxuYW5kIFN0ZXBfZnVuY3Rpb25fbm9kZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFN0ZXBfZnVuY3Rpb25fbm9kZVxuXG5hbmQgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiBzaWdcbiAgdHlwZSAoJ2EsICdhY2MpIHQgPVxuICAgIHsgbWFpbiA6ICdhY2MgTm9kZS50XG4gICAgOyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgdXBkYXRlIDogJ2FjYyAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdhY2NcbiAgICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgOiBpbnRcbiAgICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gICAgOyBtdXRhYmxlIGZvbGRfdmFsdWUgOiAnYWNjIFVvcHQudFxuICAgIDsgbXV0YWJsZSBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA6IGludFxuICAgIH1cbmVuZCA9XG4gIFVub3JkZXJlZF9hcnJheV9mb2xkXG5cbmFuZCBWYXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgd2F0Y2ggOiAnYSBOb2RlLnRcbiAgICB9XG5cbiAgdHlwZSAnYSB2YXIgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyB2YXIgLT4gdCBbQEB1bmJveGVkXVxuICBlbmRcbmVuZCA9XG4gIFZhclxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5WYXIudCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgKCogW3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0gaXMgb25seSBzZXQgdG8gW1VvcHQuc29tZV0gaWYgdGhlIHVzZXIgY2FsbHNcbiAgICAgICBbVmFyLnNldF0gZHVyaW5nIHN0YWJpbGl6YXRpb24sIGluIHdoaWNoIGNhc2UgaXQgaG9sZHMgdGhlIChsYXN0KSB2YWx1ZSBzZXQuICBBdFxuICAgICAgIHRoZSBlbmQgb2Ygc3RhYmlsaXphdGlvbiwgYWxsIHN1Y2ggdmFyaWFibGVzIGFyZSBwcm9jZXNzZWQgdG8gZG8gW3QudmFsdWUgPC1cbiAgICAgICB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0uICopXG4gICAgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgOyAoKiBbc2V0X2F0XSB0aGUgc3RhYmlsaXphdGlvbiBudW1iZXIgaW4gZWZmZWN0IHRoZSBtb3N0IHJlY2VudCB0aW1lIFt0LnZhbHVlXSBjaGFuZ2VkLlxuICAgICAgIFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBzdGFiaWxpemF0aW9uIG51bWJlciBpbiBlZmZlY3QgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgdGltZSBbVmFyLnNldCB0XSB3YXMgY2FsbGVkLCBkdWUgdG8gdGhlIGVmZmVjdCBvZiBbVmFyLnNldF0gZHVyaW5nXG4gICAgICAgc3RhYmlsaXphdGlvbiBiZWluZyBkZWxheWVkIHVudGlsIGFmdGVyIHRoZSBzdGFiaWxpemF0aW9uLiAqKVxuICAgIG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IHdhdGNoIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfnZhbHVlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+c2V0X2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+d2F0Y2g6XG4gICAgICAgIChjaGVjayAoZnVuICh3YXRjaCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB3YXRjaC5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIHBvc3NpYmxlIHdpdGggW351c2VfY3VycmVudF9zY29wZTp0cnVlXSAqKVxuICAgICAgICAgICB8IFZhciB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpKVxuOztcblxubGV0IGluY3Jfc3RhdGUgdCA9IHQud2F0Y2guc3RhdGVcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICdhIHZhciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0ID0gVHlwZXMuVmFyLlBhY2tlZC50ID0gVCA6IF8gdmFyIC0+IHQgW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbGF0ZXN0X3ZhbHVlIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICBlbHNlIHQudmFsdWVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG5tb2R1bGUgVXBkYXRlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBGX2ludmVyc2Ugb2YgKCdiIC0+ICdhIC0+ICdiKVxuICAgIHwgVXBkYXRlIG9mICgnYiAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdiKVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB1cGRhdGUgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBVcGRhdGUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgIHwgRl9pbnZlcnNlIGZfaW52ZXJzZSAtPlxuICAgICAgZnVuIGZvbGRfdmFsdWUgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlIC0+IGYgKGZfaW52ZXJzZSBmb2xkX3ZhbHVlIG9sZF92YWx1ZSkgbmV3X3ZhbHVlXG4gIDs7XG5lbmRcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLlVub3JkZXJlZF9hcnJheV9mb2xkLnQgPVxuICB7IG1haW4gOiAnYWNjIE5vZGUudFxuICA7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IHVwZGF0ZSA6ICdhY2MgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYWNjXG4gIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA6IGludFxuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIDsgbXV0YWJsZSBmb2xkX3ZhbHVlIDogJ2FjYyBVb3B0LnRcbiAgOyBtdXRhYmxlIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogKF8sIF8pIHQpICh0MiA6IChfLCBfKSB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+dXBkYXRlOmlnbm9yZVxuICAgICAgfmNoaWxkcmVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGlsZHJlbiAtPlxuICAgICAgICAgICBBcnJheS5pdGVyIGNoaWxkcmVuIH5mOihmdW4gKGNoaWxkIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgY2hpbGQudmFsdWVfb3B0O1xuICAgICAgICAgICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIGNoaWxkLnZhbHVlX29wdCkpKSlcbiAgICAgIH5mb2xkX3ZhbHVlOlxuICAgICAgICAoY2hlY2sgKGZ1biBmb2xkX3ZhbHVlIC0+XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hY2MgZm9sZF92YWx1ZTtcbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAoVW9wdC5pc19zb21lIGZvbGRfdmFsdWUpXG4gICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICh0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKSkpXG4gICAgICB+bnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGU6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPD0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKSkpXG4gICAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczpcbiAgICAgICAgKGNoZWNrIChmdW4gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyAtPlxuICAgICAgICAgICBhc3NlcnQgKGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPiAwKSkpKVxuOztcblxubGV0IGNyZWF0ZSB+aW5pdCB+ZiB+dXBkYXRlIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIH5jaGlsZHJlbiB+bWFpbiA9XG4gIHsgaW5pdFxuICA7IGZcbiAgOyB1cGRhdGUgPSBVcGRhdGUudXBkYXRlIHVwZGF0ZSB+ZlxuICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgOyBjaGlsZHJlblxuICA7IG1haW5cbiAgOyBmb2xkX3ZhbHVlID1cbiAgICAgIFVvcHQubm9uZVxuICAoKiBXZSBtYWtlIFtudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNdXG4gICAgIHNvIHRoYXQgdGhlcmUgd2lsbCBiZSBhIGZ1bGwgY29tcHV0YXRpb24gdGhlIG5leHQgdGltZSB0aGUgbm9kZSBpcyBjb21wdXRlZC4gKilcbiAgOyBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgfVxuOztcblxubGV0IGZ1bGxfY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuOyBfIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBjb21wdXRlIHQgPVxuICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIHRoZW4gKFxuICAgIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gMDtcbiAgICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5zb21lIChmdWxsX2NvbXB1dGUgdCkpO1xuICBVb3B0LnZhbHVlX2V4biB0LmZvbGRfdmFsdWVcbjs7XG5cbmxldCBmb3JjZV9mdWxsX2NvbXB1dGUgdCA9XG4gIHQuZm9sZF92YWx1ZSA8LSBVb3B0Lm5vbmU7XG4gIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgY2hpbGRfY2hhbmdlZFxuICAgICAgKHR5cGUgYSBiKVxuICAgICAgKHQgOiAoYSwgXykgdClcbiAgICAgIH4oY2hpbGQgOiBiIE5vZGUudClcbiAgICAgIH5jaGlsZF9pbmRleFxuICAgICAgfihvbGRfdmFsdWVfb3B0IDogYiBVb3B0LnQpXG4gICAgICB+KG5ld192YWx1ZSA6IGIpXG4gID1cbiAgbGV0IGNoaWxkX2F0X2luZGV4ID0gdC5jaGlsZHJlbi4oY2hpbGRfaW5kZXgpIGluXG4gIG1hdGNoIE5vZGUudHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgY2hpbGQgY2hpbGRfYXRfaW5kZXggd2l0aFxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZF0gbWlzbWF0Y2hcIlxuICAgICAgICAgIH51bm9yZGVyZWRfYXJyYXlfZm9sZDoodCA6IChfLCBfKSB0KVxuICAgICAgICAgIChjaGlsZF9pbmRleCA6IGludClcbiAgICAgICAgICAoY2hpbGQgOiBfIE5vZGUudCldXG4gIHwgU29tZSBUIC0+XG4gICAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyAtIDFcbiAgICB0aGVuIChcbiAgICAgIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSArIDE7XG4gICAgICAoKiBXZSBvbmx5IHJlYWNoIHRoaXMgY2FzZSBpZiB3ZSBoYXZlIGFscmVhZHkgZG9uZSBhIGZ1bGwgY29tcHV0ZSwgaW4gd2hpY2ggY2FzZVxuICAgICAgICAgW1VvcHQuaXNfc29tZSB0LmZvbGRfdmFsdWVdIGFuZCBbVW9wdC5pc19zb21lIG9sZF92YWx1ZV9vcHRdLiAqKVxuICAgICAgdC5mb2xkX3ZhbHVlXG4gICAgICA8LSBVb3B0LnNvbWVcbiAgICAgICAgICAgKHQudXBkYXRlXG4gICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biB0LmZvbGRfdmFsdWUpXG4gICAgICAgICAgICAgIH5vbGRfdmFsdWU6KFVvcHQudmFsdWVfZXhuIG9sZF92YWx1ZV9vcHQpXG4gICAgICAgICAgICAgIH5uZXdfdmFsdWUpKVxuICAgIGVsc2UgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgIHRoZW4gZm9yY2VfZnVsbF9jb21wdXRlIHRcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxuXG50eXBlIHQgPSAoVHlwZXMuQWxhcm1fdmFsdWUudFtAc2V4cC5vcGFxdWVdKSBBbGFybS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgbnVsbCA9IEFsYXJtLm51bGwgKClcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBBbGFybV92YWx1ZSA9IFR5cGVzLkFsYXJtX3ZhbHVlXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuU3RlcF9mdW5jdGlvbl9ub2RlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIGNoaWxkIDogJ2EgU3RlcF9mdW5jdGlvbi50IE5vZGUudCBVb3B0LnRcbiAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICA7IG11dGFibGUgdXBjb21pbmdfc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IG11dGFibGUgYWxhcm1fdmFsdWUgOiAoQWxhcm1fdmFsdWUudFtAc2V4cC5vcGFxdWVdKVxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgcGh5c19zYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gW3VwY29taW5nX3N0ZXBzXSBiZWNvbWVzIGVtcHR5LiAqKVxuICAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNoaWxkOmlnbm9yZVxuICAgICAgfmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQ6aWdub3JlXG4gICAgICB+dmFsdWU6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dXBjb21pbmdfc3RlcHM6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5hbGFybV92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGFsYXJtX3ZhbHVlIDogQWxhcm1fdmFsdWUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQyIC0+IGFzc2VydCAocGh5c19zYW1lIHQgdDIpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG5cbmxldCByZWMgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTEgc3RlcHMgPVxuICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHN0ZXBzIHdpdGhcbiAgfCBTb21lICgoc3RlcF9hdCwgYTIpLCBzdGVwczIpIHdoZW4gVGltZV9ucy4oID49ICkgdG9fIHN0ZXBfYXQgLT5cbiAgICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyBhMiBzdGVwczJcbiAgfCBfIC0+XG4gICAgdC52YWx1ZSA8LSBVb3B0LnNvbWUgYTE7XG4gICAgdC51cGNvbWluZ19zdGVwcyA8LSBzdGVwc1xuOztcblxubGV0IGFkdmFuY2UgdCB+dG9fID0gYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gKFVvcHQudmFsdWVfZXhuIHQudmFsdWUpIHQudXBjb21pbmdfc3RlcHNcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLkFycmF5X2ZvbGQudCA9XG4gIHsgaW5pdCA6ICdhY2NcbiAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmluaXQ6KGNoZWNrIGludmFyaWFudF9hY2MpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH5jaGlsZHJlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hpbGRyZW4gLT5cbiAgICAgICAgICAgQXJyYXkuaXRlciBjaGlsZHJlbiB+ZjooZnVuIChjaGlsZCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIGNoaWxkLnZhbHVlX29wdCkpKSlcbjs7XG5cbmxldCBjb21wdXRlIHsgaW5pdDsgZjsgY2hpbGRyZW4gfSA9XG4gIGxldCByZXN1bHQgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgIHJlc3VsdCA6PSBmICFyZXN1bHQgKFVvcHQudmFsdWVfZXhuIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpLnZhbHVlX29wdClcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlIHQgPSBUeXBlcy5BdC50ID1cbiAgeyBtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50XG4gIDsgYXQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBDb25zdCBBZnRlciAtPiAoKSAoKiBoYXBwZW5zIG9uY2UgdGhlIGN1cnJlbnQgdGltZSBwYXNzZXMgW3QuYXRdLiAqKVxuICAgICAgICAgICB8IEF0IHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5hdDppZ25vcmVcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXRfaW50ZXJ2YWxzLnQgPVxuICB7IG1haW4gOiB1bml0IE5vZGUudFxuICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgOyBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBBdF9pbnRlcnZhbHMgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmJhc2U6aWdub3JlXG4gICAgICB+aW50ZXJ2YWw6KGNoZWNrIChmdW4gaW50ZXJ2YWwgLT4gYXNzZXJ0IChUaW1lX25zLlNwYW4uaXNfcG9zaXRpdmUgaW50ZXJ2YWwpKSlcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQmluZCA9IFR5cGVzLkJpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxubW9kdWxlIFNjb3BlID0gVHlwZXMuU2NvcGVcblxudHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmluZC50ID1cbiAgeyBtYWluIDogJ2IgTm9kZS50XG4gIDsgKCogW2ZdIGlzIHRoZSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRoYXQgd2UgcnVuIGVhY2ggdGltZSBbdC5saHNdIGNoYW5nZXMuICBJdCBpc1xuICAgICAgIG11dGFibGUgb25seSBzbyB3ZSBjYW4gY2xlYXIgaXQgd2hlbiBbdF0gaXMgaW52YWxpZGF0ZWQuICopXG4gICAgbXV0YWJsZSBmIDogJ2EgLT4gJ2IgTm9kZS50XG4gIDsgbGhzIDogJ2EgTm9kZS50XG4gIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgKCogW3Joc10gaXMgaW5pdGlhbGx5IFtub25lXSwgYW5kIGFmdGVyIHRoYXQgaXMgW3NvbWVdIG9mIHRoZSByZXN1bHQgb2YgdGhlIG1vc3QgcmVjZW50XG4gICAgICAgY2FsbCB0byBbZl0uICopXG4gICAgbXV0YWJsZSByaHMgOiAnYiBOb2RlLnQgVW9wdC50XG4gIDsgKCogW3Joc19zY29wZV0gaXMgdGhlIHNjb3BlIGluIHdoaWNoIFt0LmZdIGlzIHJ1biwgaS5lLiBpdCBpcyBbU2NvcGUuQmluZCB0XS4gIEl0IGlzXG4gICAgICAgW211dGFibGVdIG9ubHkgdG8gYXZvaWQgYSBbbGV0IHJlY10gZHVyaW5nIGNyZWF0aW9uLiAqKVxuICAgIG11dGFibGUgcmhzX3Njb3BlIDogU2NvcGUudFxuICA7ICgqIFthbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNdIGlzIHRoZSBoZWFkIG9mIHRoZSBzaW5nbHktbGlua2VkIGxpc3Qgb2Ygbm9kZXMgY3JlYXRlZCBvblxuICAgICAgIHRoZSByaWdodC1oYW5kIHNpZGUgb2YgW3RdLCBpLmUuIGluIFt0LnJoc19zY29wZV0uICopXG4gICAgbXV0YWJsZSBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IChfLCBfKSB0KSAodDIgOiAoXywgXykgdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGlzX3ZhbGlkIHQgPVxuICBtYXRjaCB0Lm1haW4ua2luZCB3aXRoXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICB8IF8gLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgdCB+KGYgOiBOb2RlLlBhY2tlZC50IC0+IHVuaXQpID1cbiAgbGV0IHIgPSByZWYgdC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBmIChUIG5vZGVfb25fcmhzKVxuICBkb25lXG47O1xuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSBfaW52YXJpYW50X2IgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEJpbmRfbWFpbiB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH5saHM6aWdub3JlXG4gICAgICB+bGhzX2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGxoc19jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIGxoc19jaGFuZ2UuY3JlYXRlZF9pbiB0Lm1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIGxoc19jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+cmhzOmlnbm9yZVxuICAgICAgfnJoc19zY29wZTpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICB8IFNjb3BlLlRvcCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgfCBCaW5kIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKSkpXG4gICAgICB+YWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0LnJoc19zY29wZSk7XG4gICAgICAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSB0aGVuIGFzc2VydCAodC5saHNfY2hhbmdlLmhlaWdodCA8IG5vZGUuaGVpZ2h0KSkpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIGVkZ2UgPSAnYSBUeXBlcy5FeHBlcnQuZWRnZSA9XG4gIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gIDsgKCogW2luZGV4XSBpcyBkZWZpbmVkIHdoZW5ldmVyIHRoZSBbZWRnZV0gaXMgaW4gdGhlIFtjaGlsZHJlbl0gb2Ygc29tZSBbdF0uIFRoZW4gaXQgaXNcbiAgICAgICB0aGUgaW5kZXggb2YgdGhpcyBbZWRnZV0gaW4gdGhhdCBbY2hpbGRyZW5dIGFycmF5LiBJdCBtaWdodCBzZWVtIHJlZHVuZGFudCB3aXRoIGFsbFxuICAgICAgIHRoZSBvdGhlciBpbmRleGVzIHdlIGhhdmUsIGJ1dCBpdCBpcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIGNoaWxkcmVuLiAgVGhlIGluZGV4IG1heVxuICAgICAgIGNoYW5nZSBhcyBzaWJsaW5nIGNoaWxkcmVuIGFyZSByZW1vdmVkLiAqKVxuICAgIG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgcGFja2VkX2VkZ2UgPSBUeXBlcy5FeHBlcnQucGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZVxuW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRXhwZXJ0LnQgPVxuICB7IGYgOiB1bml0IC0+ICdhXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hlbiBzZXQsIG1ha2VzIHRoZSBub2RlIG9mIFt0XSBzdGFsZS4gIEl0IGlzIHNldCB3aGVuIHRoZSBzZXQgb2YgY2hpbGRyZW4gY2hhbmdlcy5cbiAgICAgICBPdGhlcndpc2UgdGhlIG5vcm1hbCBjaGVjayBvZiBzdGFsZW5lc3MgKGNvbXBhcmluZyB0aGUgW2NoYW5nZWRfYXRdIGZpZWxkIG9mXG4gICAgICAgY2hpbGRyZW4gYW5kIHRoZSBbcmVjb21wdXRlZF9hdF0gZmllbGQgZm9yIHRoZSBub2RlIG9mIFt0XSkgd291bGQgbm90IGJlIGVub3VnaC5cbiAgICAgICBUaGlzIHBsYXlzIGEgcm9sZSBzaW1pbGFyIHRvIHRoZSBjdXRvZmYgb2YgW05ldmVyXSBmb3IgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZHMsIGJ1dFxuICAgICAgIHdlIGRvbid0IGhhdmUgYSBzcGVjaWFsIGNoaWxkLiAqKVxuICAgIG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gIDsgKCogVGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgcG9pbnQgdG8gdXMuICBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBub2RlXG4gICAgICAgb2YgW3RdIG5lZWRzIHRvIGludmFsaWRhdGVkLCB3aXRob3V0IGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4uICBUaGlzIGlzIG5vdFxuICAgICAgIG5lZWRlZCBmb3Igb3RoZXIgbm9kZXMsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG90aGVyIG5vZGVzIHRoYXQgaGF2ZSBhIHBvdGVudGlhbGx5XG4gICAgICAgbGFyZ2UgYW5kIGR5bmFtaWMgc2V0IG9mIGNoaWxkcmVuLiAqKVxuICAgIG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgOyAoKiBXaGV0aGVyIHdlIHdpbGwgZmlyZSB0aGUgW29uX2NoYW5nZV0gY2FsbGJhY2tzIGZvciBhbGwgY2hpbGRyZW4gd2hlbiB0aGUgbm9kZSBvZiBbdF1cbiAgICAgICBpdHNlbGYgcnVucy4gIFVzZWQgdG8gbWFrZSBzdXJlIHdlIHJlcnVuIGV2ZXJ5dGhpbmcgYWZ0ZXIgW3RdIHN3aXRjaGVzIGZyb21cbiAgICAgICB1bm9ic2VydmFibGUgYW5kIGJhY2sgdG8gb2JzZXJ2YWJsZS4gKilcbiAgICBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50XG4gICAgICBfaW52YXJpYW50X2FcbiAgICAgIHsgZiA9IF9cbiAgICAgIDsgY2hpbGRyZW5cbiAgICAgIDsgbnVtX2NoaWxkcmVuXG4gICAgICA7IGZvcmNlX3N0YWxlID0gX1xuICAgICAgOyBudW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IF9cbiAgICAgIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSBfXG4gICAgICB9XG4gID1cbiAgYXNzZXJ0IChudW1fY2hpbGRyZW4gPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggY2hpbGRyZW4pO1xuICBpZ25vcmUgbnVtX2ludmFsaWRfY2hpbGRyZW47XG4gICgqIGludmFyaWFudCBpcyBiZWxvdywgYmVjYXVzZSB3ZSBuZWVkIHNvbWUgY29udGV4dCAqKVxuICBVbmlmb3JtX2FycmF5Lml0ZXJpIGNoaWxkcmVuIH5mOihmdW4gaSB1b3B0IC0+XG4gICAgbWF0Y2ggaSA8IG51bV9jaGlsZHJlbiB3aXRoXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biB1b3B0IGluXG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChVb3B0LnZhbHVlX2V4biByLmluZGV4KSB+ZXhwZWN0OmlcbiAgICB8IGZhbHNlIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHVvcHQpKVxuOztcblxubGV0IGludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlbiB0IH5pc19uZWNlc3NhcnkgPVxuICBsZXQgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBudW1faW52YWxpZF9jaGlsZHJlbjsgXyB9ID0gdCBpblxuICBpZiBub3QgaXNfbmVjZXNzYXJ5XG4gIHRoZW4gWyV0ZXN0X3Jlc3VsdDogaW50XSBudW1faW52YWxpZF9jaGlsZHJlbiB+ZXhwZWN0OjBcbiAgZWxzZSAoXG4gICAgbGV0IGNvdW50X2ludmFsaWRfY2hpbGRyZW4gPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBudW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGRyZW4gaSkgaW5cbiAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCByLmNoaWxkKSB0aGVuIGluY3IgY291bnRfaW52YWxpZF9jaGlsZHJlblxuICAgIGRvbmU7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSBudW1faW52YWxpZF9jaGlsZHJlbiB+ZXhwZWN0OiFjb3VudF9pbnZhbGlkX2NoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZSB+ZiB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPVxuICB7IGZcbiAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZVxuICA7IGNoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5lbXB0eVxuICA7IG51bV9jaGlsZHJlbiA9IDBcbiAgOyBmb3JjZV9zdGFsZSA9IGZhbHNlXG4gIDsgbnVtX2ludmFsaWRfY2hpbGRyZW4gPSAwXG4gIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSB0cnVlXG4gIH1cbjs7XG5cbmxldCBtYWtlX3N0YWxlIHQgPVxuICBpZiB0LmZvcmNlX3N0YWxlXG4gIHRoZW4gYEFscmVhZHlfc3RhbGVcbiAgZWxzZSAoXG4gICAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICAgIGBPaylcbjs7XG5cbmxldCBpbmNyX2ludmFsaWRfY2hpbGRyZW4gdCA9IHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gdC5udW1faW52YWxpZF9jaGlsZHJlbiArIDFcbmxldCBkZWNyX2ludmFsaWRfY2hpbGRyZW4gdCA9IHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gdC5udW1faW52YWxpZF9jaGlsZHJlbiAtIDFcblxubGV0IG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fY2hpbGRyZW4gPj0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAodC5udW1fY2hpbGRyZW4gPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heCA9IEludC5tYXggMiAoMiAqIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW4pIGluXG4gICAgdC5jaGlsZHJlbiA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5jaGlsZHJlbiB+bGVuOm5ld19tYXgpXG47O1xuXG5sZXQgYWRkX2NoaWxkX2VkZ2UgdCBwYWNrZWRfZWRnZSA9XG4gIGxldCAoRSBlZGdlKSA9IHBhY2tlZF9lZGdlIGluXG4gIGFzc2VydCAoVW9wdC5pc19ub25lIGVkZ2UuaW5kZXgpO1xuICBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdDtcbiAgbGV0IG5ld19jaGlsZF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIGluXG4gIGVkZ2UuaW5kZXggPC0gVW9wdC5zb21lIG5ld19jaGlsZF9pbmRleDtcbiAgVW5pZm9ybV9hcnJheS5zZXQgdC5jaGlsZHJlbiBuZXdfY2hpbGRfaW5kZXggKFVvcHQuc29tZSBwYWNrZWRfZWRnZSk7XG4gIHQubnVtX2NoaWxkcmVuIDwtIHQubnVtX2NoaWxkcmVuICsgMTtcbiAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICAoKiBXZSB3aWxsIGJ1bXAgdGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIGlmIG5lY2Vzc2FyeSB3aGVuIGNvbm5lY3RpbmcgY2hpbGQgYW5kXG4gICAgIHBhcmVudC4gIFNhbWUgdGhpbmcgZm9yIHJ1bm5pbmcgdGhlIFtvbl9jaGFuZ2VdIGNhbGxiYWNrcy4gKilcbiAgbmV3X2NoaWxkX2luZGV4XG47O1xuXG5sZXQgc3dhcF9jaGlsZHJlbiB0IH5jaGlsZF9pbmRleDEgfmNoaWxkX2luZGV4MiA9XG4gIGxldCAoRSBlZGdlMSkgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEpIGluXG4gIGxldCAoRSBlZGdlMikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDIpIGluXG4gIGVkZ2UxLmluZGV4IDwtIFVvcHQuc29tZSBjaGlsZF9pbmRleDI7XG4gIGVkZ2UyLmluZGV4IDwtIFVvcHQuc29tZSBjaGlsZF9pbmRleDE7XG4gIFVuaWZvcm1fYXJyYXkuc3dhcCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MSBjaGlsZF9pbmRleDJcbjs7XG5cbmxldCBsYXN0X2NoaWxkX2VkZ2VfZXhuIHQgPVxuICBsZXQgbGFzdF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIC0gMSBpblxuICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4KVxuOztcblxubGV0IHJlbW92ZV9sYXN0X2NoaWxkX2VkZ2VfZXhuIHQgPVxuICBsZXQgbGFzdF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIC0gMSBpblxuICBsZXQgcGFja2VkX2VkZ2Vfb3B0ID0gVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4IGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBVb3B0Lm5vbmU7XG4gIHQubnVtX2NoaWxkcmVuIDwtIGxhc3RfaW5kZXg7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgcGFja2VkX2VkZ2Vfb3B0KTtcbiAgbGV0IChFIGVkZ2UpID0gVW9wdC51bnNhZmVfdmFsdWUgcGFja2VkX2VkZ2Vfb3B0IGluXG4gIGVkZ2UuaW5kZXggPC0gVW9wdC5ub25lXG47O1xuXG5sZXQgYmVmb3JlX21haW5fY29tcHV0YXRpb24gdCA9XG4gIGlmIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPiAwXG4gIHRoZW4gYEludmFsaWRcbiAgZWxzZSAoXG4gICAgdC5mb3JjZV9zdGFsZSA8LSBmYWxzZTtcbiAgICBsZXQgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIGluXG4gICAgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA8LSBmYWxzZTtcbiAgICBpZiB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrc1xuICAgIHRoZW5cbiAgICAgIGZvciBpID0gMCB0byB0Lm51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gaSkgaW5cbiAgICAgICAgci5vbl9jaGFuZ2UgKFVvcHQudmFsdWVfZXhuIHIuY2hpbGQudmFsdWVfb3B0KVxuICAgICAgZG9uZTtcbiAgICBgT2spXG47O1xuXG5sZXQgb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgdCB+aXNfbm93X29ic2VydmFibGUgPVxuICB0Lm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIH5pc19ub3dfb2JzZXJ2YWJsZTtcbiAgaWYgbm90IGlzX25vd19vYnNlcnZhYmxlXG4gIHRoZW4gKFxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gdHJ1ZTtcbiAgICAoKiBJZiB3ZSBkb24ndCByZXNldCBudW1faW52YWxpZF9jaGlsZHJlbiwgd2Ugd291bGQgZG91YmxlIGNvdW50IHRoZW06IGp1c3QgaW1hZ2luZVxuICAgICAgIHdoYXQgaGFwcGVucyB3ZSBpZiByZWNvbm5lY3QvZGlzY29ubmVjdC9yZWNvbm5lY3QvZGlzY29ubmVjdCB3aXRoIGFuIGludmFsaWRcbiAgICAgICBjaGlsZC4gKilcbiAgICB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIDApXG47O1xuXG5sZXQgcnVuX2VkZ2VfY2FsbGJhY2sgdCB+Y2hpbGRfaW5kZXggPVxuICBpZiBub3QgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrc1xuICB0aGVuIChcbiAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleCkgaW5cbiAgICAoKiBUaGlzIHZhbHVlIGlzIG5vdCBuZWNlc3NhcmlseSBzZXQsIGJlY2F1c2Ugd2UgdHJ5IHRvIHJ1biB0aGlzIHdoZW4gY29ubmVjdGluZyB0aGVcbiAgICAgICBub2RlIHRvIGl0cyBjaGlsZHJlbiwgd2hpY2ggY291bGQgYmUgYmVmb3JlIHRoZXkgaGF2ZSBydW4gZXZlbiBvbmNlLiAgQWxzbyB0aGUgbm9kZVxuICAgICAgIGNvdWxkIGJlIGludmFsaWQuICopXG4gICAgaWYgVW9wdC5pc19zb21lIHIuY2hpbGQudmFsdWVfb3B0XG4gICAgdGhlbiByLm9uX2NoYW5nZSAoVW9wdC51bnNhZmVfdmFsdWUgci5jaGlsZC52YWx1ZV9vcHQpKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbmluY2x1ZGUgVHlwZXMuU2NvcGVcblxubGV0IHRvcCA9IFRvcFxuXG5sZXQgaXNfdG9wID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpZ25vcmUgYmluZFxuOztcblxuKCogVW5saWtlIGZvciBub2RlcywgdGhlcmUgaXMgbm8gaW52YXJpYW50IFtpc19uZWNlc3NhcnkgdCA8PT4gaGVpZ2h0ID4gLTFdIChkb2Vzbid0IHdvcmtcbiAgIGJlY2F1c2Ugb2YgW1RvcF0pLiAgVGhpcyBpcyBmaW5lIHNpbmNlIHRoZSBoZWlnaHQgb2YgYSBzY29wZSBpcyBvbmx5IHVzZWQgdG8gY29uc3RyYWluXG4gICBvdGhlciBoZWlnaHRzLCBub3QgdG8gc2NoZWR1bGUgaXQuICopXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gLTFcbiAgfCBCaW5kIGJpbmQgLT4gYmluZC5saHNfY2hhbmdlLmhlaWdodFxuOztcblxubGV0IGlzX3ZhbGlkID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmlzX3ZhbGlkIGJpbmRcbjs7XG5cbmxldCBpc19uZWNlc3NhcnkgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBiaW5kIC0+IE5vZGUuaXNfbmVjZXNzYXJ5IGJpbmQubWFpblxuOztcblxubGV0IGFkZF9ub2RlIHQgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBhc3NlcnQgKHBoeXNfZXF1YWwgbm9kZS5jcmVhdGVkX2luIHQpO1xuICBtYXRjaCB0IHdpdGhcbiAgfCBUb3AgLT4gKClcbiAgfCBCaW5kIGJpbmQgLT5cbiAgICBub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzO1xuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQuc29tZSAoVHlwZXMuTm9kZS5QYWNrZWQuVCBub2RlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5GcmVlemUudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gIDsgb25seV9mcmVlemVfd2hlbiA6ICdhIC0+IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gZnJlZXppbmcgYW4gaW52YWxpZCB2YWx1ZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBvbiBiZWNvbWluZyBmcm96ZW4gKilcbiAgICAgICAgICAgfCBGcmVlemUgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNoaWxkOmlnbm9yZVxuICAgICAgfm9ubHlfZnJlZXplX3doZW46aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JZl90aGVuX2Vsc2UudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IHRlc3QgOiBib29sIE5vZGUudFxuICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfYnJhbmNoIDogJ2EgTm9kZS50IFVvcHQudFxuICA7IHRoZW5fIDogJ2EgTm9kZS50XG4gIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBJZl90aGVuX2Vsc2UgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiAoKSkpXG4gICAgICB+dGVzdDppZ25vcmVcbiAgICAgIH50ZXN0X2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKHRlc3RfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIHRlc3RfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBJZl90ZXN0X2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y3VycmVudF9icmFuY2g6XG4gICAgICAgIChjaGVjayAoZnVuIGN1cnJlbnRfYnJhbmNoIC0+XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgY3VycmVudF9icmFuY2ggPSBVb3B0LnZhbHVlX2V4biBjdXJyZW50X2JyYW5jaCBpblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsIGN1cnJlbnRfYnJhbmNoIHQudGhlbl8gfHwgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LmVsc2VfKSkpKVxuICAgICAgfnRoZW5fOmlnbm9yZVxuICAgICAgfmVsc2VfOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSm9pbi50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbGhzIDogJ2EgTm9kZS50IE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7IG11dGFibGUgcmhzIDogJ2EgTm9kZS50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEpvaW5fbWFpbiB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGxoc19jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+cmhzOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuU25hcHNob3QudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgYmVmb3JlIDogJ2FcbiAgOyB2YWx1ZV9hdCA6ICdhIE5vZGUudFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChTY29wZS5pc190b3AgbWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBzbmFwc2hvdHRpbmcgYW4gaW52YWxpZCBub2RlICopXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIGFmdGVyIHRoZSBzbmFwc2hvdCAqKVxuICAgICAgICAgICB8IFNuYXBzaG90IHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5hdDppZ25vcmVcbiAgICAgIH5iZWZvcmU6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgfnZhbHVlX2F0Omlnbm9yZVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuS2luZC50ID1cbiAgfCBBcnJheV9mb2xkIDogKF8sICdhKSBBcnJheV9mb2xkLnQgLT4gJ2EgdFxuICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gIHwgQXRfaW50ZXJ2YWxzIDogQXRfaW50ZXJ2YWxzLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9saHNfY2hhbmdlIDogKF8sIF8pIEJpbmQudCAtPiB1bml0IHRcbiAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gIHwgQ29uc3Qgb2YgJ2FcbiAgfCBFeHBlcnQgb2YgJ2EgRXhwZXJ0LnRcbiAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgfCBJZl90ZXN0X2NoYW5nZSA6IF8gSWZfdGhlbl9lbHNlLnQgLT4gdW5pdCB0XG4gIHwgSWZfdGhlbl9lbHNlIG9mICdhIElmX3RoZW5fZWxzZS50XG4gIHwgSW52YWxpZFxuICB8IEpvaW5fbGhzX2NoYW5nZSA6IF8gSm9pbi50IC0+IHVuaXQgdFxuICB8IEpvaW5fbWFpbiBvZiAnYSBKb2luLnRcbiAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICB8IFNuYXBzaG90IG9mICdhIFNuYXBzaG90LnRcbiAgfCBTdGVwX2Z1bmN0aW9uIG9mICdhIFN0ZXBfZnVuY3Rpb25fbm9kZS50XG4gIHwgVW5pbml0aWFsaXplZFxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIDogKF8sICdhKSBVbm9yZGVyZWRfYXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBWYXIgb2YgJ2EgVmFyLnRcbiAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICB8IE1hcDMgOiAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXA0IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50ICogJ2E0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDUgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDYgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDcgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDggOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDkgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEwIDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDExIDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhMTEgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTIgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEzIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTQgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYTE0XG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAqICdhMTQgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTUgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYTE0XG4gICAgICAgLT4gJ2ExNVxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5hbWUgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IEFycmF5X2ZvbGQgXyAtPiBcIkFycmF5X2ZvbGRcIlxuICB8IEF0IF8gLT4gXCJBdFwiXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gXCJBdF9pbnRlcnZhbHNcIlxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IFwiQmluZF9saHNfY2hhbmdlXCJcbiAgfCBCaW5kX21haW4gXyAtPiBcIkJpbmRfbWFpblwiXG4gIHwgQ29uc3QgXyAtPiBcIkNvbnN0XCJcbiAgfCBFeHBlcnQgXyAtPiBcIkV4cGVydFwiXG4gIHwgRnJlZXplIF8gLT4gXCJGcmVlemVcIlxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gXCJJZl90ZXN0X2NoYW5nZVwiXG4gIHwgSWZfdGhlbl9lbHNlIF8gLT4gXCJJZl90aGVuX2Vsc2VcIlxuICB8IEludmFsaWQgLT4gXCJJbnZhbGlkXCJcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiBcIkpvaW5fbGhzX2NoYW5nZVwiXG4gIHwgSm9pbl9tYWluIF8gLT4gXCJKb2luX21haW5cIlxuICB8IE1hcCBfIC0+IFwiTWFwXCJcbiAgfCBNYXAyIF8gLT4gXCJNYXAyXCJcbiAgfCBNYXAzIF8gLT4gXCJNYXAzXCJcbiAgfCBNYXA0IF8gLT4gXCJNYXA0XCJcbiAgfCBNYXA1IF8gLT4gXCJNYXA1XCJcbiAgfCBNYXA2IF8gLT4gXCJNYXA2XCJcbiAgfCBNYXA3IF8gLT4gXCJNYXA3XCJcbiAgfCBNYXA4IF8gLT4gXCJNYXA4XCJcbiAgfCBNYXA5IF8gLT4gXCJNYXA5XCJcbiAgfCBNYXAxMCBfIC0+IFwiTWFwMTBcIlxuICB8IE1hcDExIF8gLT4gXCJNYXAxMVwiXG4gIHwgTWFwMTIgXyAtPiBcIk1hcDEyXCJcbiAgfCBNYXAxMyBfIC0+IFwiTWFwMTNcIlxuICB8IE1hcDE0IF8gLT4gXCJNYXAxNFwiXG4gIHwgTWFwMTUgXyAtPiBcIk1hcDE1XCJcbiAgfCBTbmFwc2hvdCBfIC0+IFwiU25hcHNob3RcIlxuICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiBcIlN0ZXBfZnVuY3Rpb25cIlxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gXCJVbmluaXRpYWxpemVkXCJcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+IFwiVW5vcmRlcmVkX2FycmF5X2ZvbGRcIlxuICB8IFZhciBfIC0+IFwiVmFyXCJcbjs7XG5cbmxldCBpbnZhcmlhbnQgOiB0eXBlIGEuIGEgSW52YXJpYW50LnQgLT4gYSB0IEludmFyaWFudC50ID1cbiAgZnVuIGludmFyaWFudF9hIHQgLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCBhcnJheV9mb2xkIC0+IEFycmF5X2ZvbGQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSBhcnJheV9mb2xkXG4gIHwgQXQgYXQgLT4gQXQuaW52YXJpYW50IGF0XG4gIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiBBdF9pbnRlcnZhbHMuaW52YXJpYW50IGF0X2ludGVydmFsc1xuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpZ25vcmUgYmluZFxuICB8IEJpbmRfbWFpbiBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSBiaW5kXG4gIHwgQ29uc3QgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LmludmFyaWFudCBpbnZhcmlhbnRfYSBlXG4gIHwgRnJlZXplIGZyZWV6ZSAtPiBGcmVlemUuaW52YXJpYW50IGludmFyaWFudF9hIGZyZWV6ZVxuICB8IElmX3Rlc3RfY2hhbmdlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGlnbm9yZSBpZl90aGVuX2Vsc2VcbiAgfCBJZl90aGVuX2Vsc2UgaWZfdGhlbl9lbHNlIC0+IElmX3RoZW5fZWxzZS5pbnZhcmlhbnQgaW52YXJpYW50X2EgaWZfdGhlbl9lbHNlXG4gIHwgSW52YWxpZCAtPiAoKVxuICB8IEpvaW5fbGhzX2NoYW5nZSBqb2luIC0+IEpvaW4uaW52YXJpYW50IGlnbm9yZSBqb2luXG4gIHwgSm9pbl9tYWluIGpvaW4gLT4gSm9pbi5pbnZhcmlhbnQgaW52YXJpYW50X2Egam9pblxuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfIC0+ICgpXG4gIHwgU25hcHNob3Qgc25hcHNob3QgLT4gU25hcHNob3QuaW52YXJpYW50IGludmFyaWFudF9hIHNuYXBzaG90XG4gIHwgU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUgLT5cbiAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGludmFyaWFudF9hIHN0ZXBfZnVuY3Rpb25fbm9kZVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gKClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1bm9yZGVyZWRfYXJyYXlfZm9sZCAtPlxuICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgfCBWYXIgdmFyIC0+IFZhci5pbnZhcmlhbnQgaWdub3JlIHZhclxuOztcblxubGV0IGluaXRpYWxfbnVtX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF0IF8gLT4gMFxuICB8IEF0X2ludGVydmFscyBfIC0+IDBcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgQmluZF9tYWluIF8gLT4gMlxuICB8IENvbnN0IF8gLT4gMFxuICB8IEV4cGVydCBfIC0+IDBcbiAgfCBGcmVlemUgXyAtPiAxXG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiAxXG4gIHwgSWZfdGhlbl9lbHNlIF8gLT4gMlxuICB8IEludmFsaWQgLT4gMFxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IDFcbiAgfCBKb2luX21haW4gXyAtPiAyXG4gIHwgTWFwIF8gLT4gMVxuICB8IE1hcDIgXyAtPiAyXG4gIHwgTWFwMyBfIC0+IDNcbiAgfCBNYXA0IF8gLT4gNFxuICB8IE1hcDUgXyAtPiA1XG4gIHwgTWFwNiBfIC0+IDZcbiAgfCBNYXA3IF8gLT4gN1xuICB8IE1hcDggXyAtPiA4XG4gIHwgTWFwOSBfIC0+IDlcbiAgfCBNYXAxMCBfIC0+IDEwXG4gIHwgTWFwMTEgXyAtPiAxMVxuICB8IE1hcDEyIF8gLT4gMTJcbiAgfCBNYXAxMyBfIC0+IDEzXG4gIHwgTWFwMTQgXyAtPiAxNFxuICB8IE1hcDE1IF8gLT4gMTVcbiAgfCBTbmFwc2hvdCBfIC0+IDBcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gMVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gMFxuICB8IFZhciBfIC0+IDBcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBBcnJheS5sZW5ndGggY2hpbGRyZW5cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG47O1xuXG5sZXQgYmluZF9yaHNfY2hpbGRfaW5kZXggPSAxXG5sZXQgZnJlZXplX2NoaWxkX2luZGV4ID0gMFxubGV0IGlmX2JyYW5jaF9jaGlsZF9pbmRleCA9IDFcbmxldCBqb2luX3Joc19jaGlsZF9pbmRleCA9IDFcblxuKCogV2UgZG8gbm90IGltcGxlbWVudCB0aGUgdGltZS1iYXNlZCBub2RlcyAoW0F0XSwgW0F0X2ludGVydmFsc10sIFtTbmFwc2hvdF0sXG4gICBbU3RlcF9mdW5jdGlvbl0pIGFzIHBhcmVudHMgb2YgdGhlIGN1cnJlbnQtdGltZSBub2RlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgV2UgZG9uJ3RcbiAgIHdhbnQgYWxsIHN1Y2ggbm9kZXMgdG8gYmUgcmVjb21wdXRlZCB3aGVuZXZlciB0aGUgdGltZSBjaGFuZ2VzLCB3aGljaCB3b3VsZCBiZSBob3JyaWJseVxuICAgaW5uZWZpY2llbnQuICBJbnN0ZWFkLCB3ZSBvbmx5IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGF0IHRoZSBcInJpZ2h0XCIgdGltZSxcbiAgIGkuZS4gd2hlbiB0aW1lIHBhc3NlcyBzb21lIHRocmVzaG9sZCByZWxldmFudCB0byB0aGVtLiAgV2UgZG8gdGhpcyB2aWEgc2NoZWR1bGluZ1xuICAgYWxhcm1zIGF0IHRob3NlIHRocmVzaG9sZHMuICopXG5sZXQgaXRlcmlfY2hpbGRyZW4gKHR5cGUgYSkgKHQgOiBhIHQpIH4oZiA6IGludCAtPiBOb2RlLlBhY2tlZC50IC0+IHVuaXQpIDogdW5pdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICAgIGYgaSAoVCAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSlcbiAgICBkb25lXG4gIHwgQXQgXyAtPiAoKVxuICB8IEF0X2ludGVydmFscyBfIC0+ICgpXG4gIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT4gZiAwIChUIGJpbmQubGhzKVxuICB8IEJpbmRfbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgKCogVmFyaW91cyBjb2RlLCBlLmcuIFtzdGF0ZS5iZWNhbWVfbmVjZXNzYXJ5XSwgcmVsaWVzIG9uIHByb2Nlc3NpbmcgW2xoc19jaGFuZ2VdXG4gICAgICAgYmVmb3JlIFtyaHNdLiAqKVxuICAgIGYgMCAoVCBsaHNfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgcmhzIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSByaHMpKVxuICB8IENvbnN0IF8gLT4gKClcbiAgfCBFeHBlcnQgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFeHBlcnQuRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkgaW5cbiAgICAgIGYgaSAoVCByLmNoaWxkKVxuICAgIGRvbmVcbiAgfCBGcmVlemUgeyBjaGlsZDsgXyB9IC0+IGYgMCAoVCBjaGlsZClcbiAgfCBJZl90ZXN0X2NoYW5nZSB7IHRlc3Q7IF8gfSAtPiBmIDAgKFQgdGVzdClcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgY3VycmVudF9icmFuY2g7IF8gfSAtPlxuICAgIGYgMCAoVCB0ZXN0X2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIGN1cnJlbnRfYnJhbmNoIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjdXJyZW50X2JyYW5jaCkpXG4gIHwgSW52YWxpZCAtPiAoKVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IGYgMCAoVCBsaHMpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgcmhzOyBfIH0gLT5cbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBTbmFwc2hvdCBfIC0+ICgpXG4gIHwgU3RlcF9mdW5jdGlvbiB7IGNoaWxkOyBfIH0gLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGQgdGhlbiBmIDAgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIGNoaWxkKSlcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICAgIGYgaSAoVCAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSlcbiAgICBkb25lXG4gIHwgVmFyIF8gLT4gKClcbiAgfCBNYXAgKF8sIG5vZGUwKSAtPiBmIDAgKFQgbm9kZTApXG4gIHwgTWFwMiAoXywgbm9kZTAsIG5vZGUxKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKVxuICB8IE1hcDMgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMilcbiAgfCBNYXA0IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpXG4gIHwgTWFwNSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KVxuICB8IE1hcDYgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSlcbiAgfCBNYXA3IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNikgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpXG4gIHwgTWFwOCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KVxuICB8IE1hcDkgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOClcbiAgfCBNYXAxMCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTkpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KVxuICB8IE1hcDExIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4LCBub2RlOSwgbm9kZTEwKVxuICAgIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMClcbiAgfCBNYXAxMlxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTEgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKVxuICB8IE1hcDEzXG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTIgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMilcbiAgfCBNYXAxNFxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyXG4gICAgICAsIG5vZGUxMyApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKTtcbiAgICBmIDEzIChUIG5vZGUxMylcbiAgfCBNYXAxNVxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyXG4gICAgICAsIG5vZGUxM1xuICAgICAgLCBub2RlMTQgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpO1xuICAgIGYgMTQgKFQgbm9kZTE0KVxuOztcblxuKCogW3Nsb3dfZ2V0X2NoaWxkXSBpcyBvbmx5IHVzZWQgYnkgW05vZGUuaW52YXJpYW50XSwgc28gd2UgZG9uJ3QgbWluZCB1c2luZyBbd2l0aF9yZXR1cm5dXG4gICBhbmQgW2l0ZXJpX2NoaWxkcmVuXS4gIElmIHdlIGV2ZXIgbmVlZCBhIGZhc3QgW2dldF9jaGlsZF0sIHdlIGNvZGVkIGl0IGluIHJldlxuICAgNDhkYmZkMDNjOWM1LiAqKVxubGV0IHNsb3dfZ2V0X2NoaWxkIDogdHlwZSBhLiBhIHQgLT4gaW5kZXg6XyAtPiBOb2RlLlBhY2tlZC50ID1cbiAgZnVuIHQgfmluZGV4IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IFQgY2hpbGRyZW4uKGluZGV4KVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBFeHBlcnQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgbGV0IChFIGVkZ2UpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGluZGV4KSBpblxuICAgIFQgZWRnZS5jaGlsZFxuICB8IF8gLT5cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBpIGNoaWxkIC0+IGlmIGkgPSBpbmRleCB0aGVuIHIucmV0dXJuIGNoaWxkKTtcbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiS2luZC5zbG93X2dldF9jaGlsZCBnb3QgaW52YWxpZCBpbmRleFwiXG4gICAgICAgIChpbmRleCwgdClcbiAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBfIHRdKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gS2luZFxubW9kdWxlIEludGVybmFsX29ic2VydmVyID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXJcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxub3BlbiBOb2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLk5vZGUudCA9XG4gIHsgKCogW2lkXSBpcyBhIHVuaXF1ZSBpZCBmb3IgdGhlIG5vZGUuICopXG4gICAgaWQgOiBOb2RlX2lkLnRcbiAgOyBzdGF0ZSA6IChUeXBlcy5TdGF0ZS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogVGhlIGZpZWxkcyBmcm9tIFtyZWNvbXB1dGVkX2F0XSB0byBbY3JlYXRlZF9pbl0gYXJlIGdyb3VwZWQgdG9nZXRoZXIgYW5kIGFyZSBpbiB0aGVcbiAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXJlIHVzZWQgYnkgW1N0YXRlLnJlY29tcHV0ZV0gVGhpcyBoYXMgYSBwb3NpdGl2ZSBwZXJmb3JtYW5jZVxuICAgICAgIGltcGFjdCBkdWUgdG8gY2FjaGUgZWZmZWN0cy4gIERvbid0IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlc2Ugbm9kZXMgd2l0aG91dFxuICAgICAgIHBlcmZvcm1hbmNlIHRlc3RpbmcuICopXG4gICAgKCogW3JlY29tcHV0ZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiBbdF0ncyB2YWx1ZSB3YXMgcmVjb21wdXRlZCwgZXZlbiBpZlxuICAgICAgIGl0IHdhcyBjdXQgb2ZmLiAqKVxuICAgIG11dGFibGUgcmVjb21wdXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyAoKiBbdmFsdWVfb3B0XSBzdGFydHMgYXMgW25vbmVdLCBhbmQgdGhlIGZpcnN0IHRpbWUgW3RdIGlzIGNvbXB1dGVkIGl0IGlzIHNldCB0b1xuICAgICAgIFtzb21lXSwgYW5kIHJlbWFpbnMgW3NvbWVdIHRoZXJlYWZ0ZXIsIHVudGlsIFt0XSBpcyBpbnZhbGlkYXRlZCwgaWYgZXZlci4gKilcbiAgICBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtraW5kXSBpcyB0aGUga2luZCBvZiBEQUcgbm9kZSBbdF0gaXMuICBba2luZF0gaXMgbXV0YWJsZSBib3RoIGZvciBpbml0aWFsaXphdGlvblxuICAgICAgIGFuZCBiZWNhdXNlIGl0IGNhbiBjaGFuZ2UsIGUuZy4gaWYgW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUga2luZCA6ICdhIEtpbmQudFxuICA7IG11dGFibGUgY3V0b2ZmIDogJ2EgQ3V0b2ZmLnRcbiAgOyAoKiBbY2hhbmdlZF9hdF0gaXMgdGhlIGxhc3Qgc3RhYmlsaXphdGlvbiB3aGVuIHRoaXMgbm9kZSB3YXMgY29tcHV0ZWQgYW5kIG5vdCBjdXQgb2ZmLlxuICAgICAgIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IHdoZW4gW3RdJ3MgcGFyZW50cyBhcmUgc3RhbGUgYW5kIChiZWNhdXNlIGFsbCBwYXJlbnRzIGFyZVxuICAgICAgIG5lY2Vzc2FyeSkgbmVlZCB0byBiZSByZWNvbXB1dGVkLiAqKVxuICAgIG11dGFibGUgY2hhbmdlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyAoKiBbbnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gaXMgW0xpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzXSBwbHVzIHRoZSBudW1iZXIgb2ZcbiAgICAgICBvbi11cGRhdGUgaGFuZGxlcnMgc3VtbWVkIG92ZXIgYWxsIG9ic2VydmVycyBpbiBbdC5vYnNlcnZlcnNdLiAgSXQgaXMgdXNlZCB0b1xuICAgICAgIHF1aWNrbHkgZGVjaWRlIHdoZXRoZXIgW3RdIG5lZWRzIHRvIGJlIGFkZGVkIHRvIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl1cbiAgICAgICB3aGVuIFt0XSBjaGFuZ2VzLiAgW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIHdpbGwgZGVjcmVhc2Ugd2hlbiBhbiBvYnNlcnZlciBpc1xuICAgICAgIHJlbW92ZWQgZnJvbSBbdC5vYnNlcnZlcnNdLCBpZiB0aGUgb2JzZXJ2ZXIgaGFzIG9uLXVwZGF0ZSBoYW5kbGVycy4gKilcbiAgICBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgOyAoKiBUaGUgcGFyZW50cyBvZiBbdF0gYXJlIHRoZSBub2RlcyB0aGF0IGRlcGVuZCBvbiBpdCwgYW5kIHNob3VsZCBiZSBjb21wdXRlZCB3aGVuIFt0XVxuICAgICAgIGNoYW5nZXMsIG9uY2UgYWxsIG9mIHRoZWlyIG90aGVyIGNoaWxkcmVuIGFyZSB1cCB0byBkYXRlLiAgW251bV9wYXJlbnRzXSBpcyB0aGVcbiAgICAgICBudW1iZXIgb2YgcGFyZW50cy4gIElmIFtudW1fcGFyZW50cyA+PSAxXSwgdGhlbiBbcGFyZW50MF0gaXMgdGhlIGZpcnN0IHBhcmVudC5cbiAgICAgICBbcGFyZW50MV9hbmRfYmV5b25kXSBob2xkcyB0aGUgcmVtYWluaW5nIHBhcmVudHMuICBUaGUgb3JkZXIgb2YgdGhlIHBhcmVudHMgZG9lc24ndFxuICAgICAgIG1hdHRlci4gIE9uZSBub2RlIG1heSBvY2N1ciBtdWx0aXBsZSB0aW1lcyBhcyBhIHBhcmVudCBvZiBhbm90aGVyIChlLmcuIGNvbnNpZGVyXG4gICAgICAgW21hcDIgbjEgbjEgfmZdKS5cblxuICAgICAgIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgb3B0aW1pemVkIGZvciB0aGUgb3ZlcndoZWxtaW5nbHkgY29tbW9uIGNhc2UgdGhhdCBhIG5vZGUgaGFzXG4gICAgICAgb25seSBvbmUgcGFyZW50LiAqKVxuICAgIG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgOyBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IFBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgOyBtdXRhYmxlIHBhcmVudDAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbY3JlYXRlZF9pbl0gaXMgaW5pdGlhbGx5IHRoZSBzY29wZSB0aGF0IHRoZSBub2RlIGlzIGNyZWF0ZWQgaW4uICBJZiBhIG5vZGUgaXNcbiAgICAgICBsYXRlciBcInJlc2NvcGVkXCIsIHRoZW4gY3JlYXRlZF9pbiB3aWxsIGJlIGFkanVzdGVkIHRvIHRoZSBuZXcgc2NvcGUgdGhhdCB0aGUgbm9kZVxuICAgICAgIGlzIHBhcnQgb2YuICopXG4gICAgbXV0YWJsZSBjcmVhdGVkX2luIDogU2NvcGUudFxuICA7ICgqIFtuZXh0X25vZGVfaW5fc2FtZV9zY29wZV0gc2luZ2x5IGxpbmtzIGFsbCBub2RlcyBjcmVhdGVkIGluIFt0LmNyZWF0ZWRfaW5dLiAqKVxuICAgIG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbaGVpZ2h0XSBpcyB1c2VkIHRvIHZpc2l0IG5vZGVzIGluIHRvcG9sb2dpY2FsIG9yZGVyLiAgSWYgW2lzX25lY2Vzc2FyeSB0XSwgdGhlblxuICAgICAgIFtoZWlnaHQgPiBjLmhlaWdodF0gZm9yIGFsbCBjaGlsZHJlbiBbY10gb2YgW3RdLCBhbmQgW2hlaWdodCA+IFNjb3BlLmhlaWdodFxuICAgICAgIHQuY3JlYXRlZF9pbl0uICBJZiBbbm90IChpc19uZWNlc3NhcnkgdCldLCB0aGVuIFtoZWlnaHQgPSAtMV0uICopXG4gICAgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgOyAoKiBbaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSBpcyB0aGUgaGVpZ2h0IGF0IHdoaWNoIFt0XSBpcyBzdG9yZWQgaW4gdGhlIHJlY29tcHV0ZVxuICAgICAgIGhlYXAsIGFuZCBpcyBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICBJZiBbdF0gaXMgdGhlXG4gICAgICAgcmVjb21wdXRlIGhlYXAsIHRoZW4gdHlwaWNhbGx5IFt0LmhlaWdodCA9IHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXTsgaG93ZXZlcixcbiAgICAgICB3aGlsZSBoZWlnaHQgaXMgYmVpbmcgYWRqdXN0ZWQsIG9uZSBjYW4gdGVtcG9yYXJpbHkgaGF2ZSBbdC5oZWlnaHQgPlxuICAgICAgIHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXS4gIFdoZW4gaGVpZ2h0IGFkanVzdG1lbnQgZmluaXNoZXMsIGVxdWFsaXR5IGlzIHJlc3RvcmVkXG4gICAgICAgYnkgaW5jcmVhc2luZyBbdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdIHRvIFt0LmhlaWdodF0gYW5kIHNoaWZ0aW5nIFt0XSdzXG4gICAgICAgcG9zaXRpb24gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gIDsgKCogW3ByZXZfaW5fcmVjb21wdXRlX2hlYXBdIGFuZCBbbmV4dF9pbl9yZWNvbXB1dGVfaGVhcF0gZG91Ymx5IGxpbmsgYWxsIG5vZGVzIG9mIHRoZVxuICAgICAgIHNhbWUgaGVpZ2h0IGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBdIGlzIHVzZWQgb25seSBkdXJpbmcgaGVpZ2h0IGFkanVzdG1lbnQsIGFuZCBpc1xuICAgICAgIG5vbi1uZWdhdGl2ZSBpZmYgW3RdIGlzIGluIHRoZSBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAgSXQgaG9sZHMgdGhlIHByZS1hZGp1c3RlZFxuICAgICAgIGhlaWdodCBvZiBbdF0uICopXG4gICAgbXV0YWJsZSBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IGludFxuICA7ICgqIFtuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgb2YgdGhlIHNhbWUgaGVpZ2h0IGluIHRoZVxuICAgICAgIGFkanVzdC1oZWlnaHRzIGhlYXAuICopXG4gICAgbXV0YWJsZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbb2xkX3ZhbHVlX29wdF0gaXMgdXNlZCBvbmx5IGR1cmluZyBzdGFiaWxpemF0aW9uLCBhbmQgb25seSBpZlxuICAgICAgIFt0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXS4gIEl0IGhvbGRzIHRoZSBwcmUtc3RhYmlsaXphdGlvbiB2YWx1ZSBvZiBbdF0uICBJdFxuICAgICAgIGlzIGNsZWFyZWQgd2hlbiBydW5uaW5nIFt0XSdzIG9uLXVwZGF0ZSBoYW5kbGVycywgYW5kIHNvIGlzIGFsd2F5cyBbVW9wdC5ub25lXVxuICAgICAgIGJldHdlZW4gc3RhYmlsaXphdGlvbnMuICopXG4gICAgbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gIDsgKCogW29ic2VydmVyc10gaXMgdGhlIGhlYWQgb2YgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBvYnNlcnZlcnMgb2YgW3RdLCBvclxuICAgICAgIFtVb3B0Lm5vbmVdIGlmIHRoZXJlIGFyZSBubyBvYnNlcnZlcnMuICopXG4gICAgbXV0YWJsZSBvYnNlcnZlcnMgOiAoJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyAoKiBbaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dIGlzIHVzZWQgdG8gYXZvaWQgcHVzaGluZyB0aGUgc2FtZSBub2RlIG11bHRpcGxlXG4gICAgICAgdGltZXMgb250byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAqKVxuICAgIG11dGFibGUgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBib29sXG4gIDsgKCogW29uX3VwZGF0ZV9oYW5kbGVyc10gaXMgdGhlIGZ1bmN0aW9ucyBzdXBwbGllZCB0byBbSW5jcmVtZW50YWwub25fdXBkYXRlXSB0byBiZSBydW5cbiAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlIG1vZHVsZSBbT25fdXBkYXRlX2hhbmRsZXJdLiAgW29uX3VwZGF0ZV9oYW5kbGVyc10gZG9lcyBub3RcbiAgICAgICBjb250YWluIHRoZSBvbi11cGRhdGUgaGFuZGxlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIG9ubHkgZXZlclxuICAgICAgIGdldHMgbG9uZ2VyOyB0aGVyZSBpcyBubyB3YXkgdG8gcmVtb3ZlIGVsZW1lbnRzLiAqKVxuICAgIG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gIDsgbXV0YWJsZSBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA6IGludCBhcnJheVxuICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICA7IG11dGFibGUgdXNlcl9pbmZvIDogRG90X3VzZXJfaW5mby50IG9wdGlvblxuICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxubGV0IHBhY2tlZF9zYW1lIChQYWNrZWQuVCB0MSkgKFBhY2tlZC5UIHQyKSA9IHNhbWUgdDEgdDJcbmxldCBpc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeVxubGV0IGluaXRpYWxfbnVtX2NoaWxkcmVuIHQgPSBLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIHQua2luZFxubGV0IGl0ZXJpX2NoaWxkcmVuIHQgfmYgPSBLaW5kLml0ZXJpX2NoaWxkcmVuIHQua2luZCB+ZlxubGV0IGlzX3ZhbGlkID0gTm9kZS5pc192YWxpZFxubGV0IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lID0gdHlwZV9lcXVhbF9pZl9waHlzX3NhbWVcblxubGV0IHVzZXJfaW5mbyB0ID1cbiAgbWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKEluZm8gaSkgLT4gU29tZSBpXG4gIHwgU29tZSBvdGhlciAtPiBTb21lIChJbmZvLmNyZWF0ZV9zIChEb3RfdXNlcl9pbmZvLnNleHBfb2ZfdCBvdGhlcikpXG47O1xuXG5sZXQgc2V0X3VzZXJfaW5mbyB0IGluZm8gPVxuICB0LnVzZXJfaW5mb1xuICA8LSAobWF0Y2ggaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgaSAtPiBTb21lIChJbmZvIGkpKVxuOztcblxubGV0IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogdCB+bGFiZWwgfmF0dHJzID1cbiAgbGV0IG5ld18gPSBEb3RfdXNlcl9pbmZvLmRvdCB+bGFiZWwgfmF0dHJpYnV0ZXM6YXR0cnMgaW5cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBuZXdfXG4gICAgfCBTb21lIG90aGVyIC0+IFNvbWUgKERvdF91c2VyX2luZm8uYXBwZW5kIG90aGVyIG5ld18pKVxuOztcblxubGV0IGVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQgPVxuICBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoaWxkLmNoYW5nZWRfYXQgcGFyZW50LnJlY29tcHV0ZWRfYXQgPiAwXG47O1xuXG5sZXQgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdCA9XG4gIGxldCBpc19zdGFsZSA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT5cbiAgICBpZiBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50OnQgdGhlbiBpc19zdGFsZSA6PSB0cnVlKTtcbiAgIWlzX3N0YWxlXG47O1xuXG5sZXQgaXNfc3RhbGUgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuICh0IDogYSB0KSAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICgqIEEgY29uc3Qgbm9kZSBpcyBzdGFsZSBvbmx5IGF0IGluaXRpYWxpemF0aW9uLiAqKVxuICB8IENvbnN0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogVGltZS1iYXNlZCBub2RlcyBhcmUgY29uc2lkZXJlZCBzdGFsZSB3aGVuIFt0LnJlY29tcHV0ZWRfYXRdIGlzIG5vbmUsIHdoaWNoIGhhcHBlbnNcbiAgICAgYXQgaW5pdGlhbGl6YXRpb24gYW5kIHdoZW4gdGhlIGFsYXJtIG1lY2hhbmlzbSBtYWtlcyBhIG5vZGUgc3RhbGUgKGl0IHNldHMgdGhlXG4gICAgIFt0LnJlY29tcHV0ZWRfYXRdIHRvIFtTdGFiaWxpemF0aW9uX251bS5ub25lXSkuICopXG4gIHwgQXQgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IEF0X2ludGVydmFscyBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gIHwgU25hcHNob3QgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAoKiBXZSBuZXZlciBjb25zaWRlciBhbiBpbnZhbGlkYXRlZCBub2RlIHRvIGJlIHN0YWxlIC0tIHdoZW4gd2UgaW52YWxpZGF0ZSBhIG5vZGUsIHdlXG4gICAgIGltbWVkaWF0ZWx5IHByb3BhZ2F0ZSBpbnZhbGlkaXR5IHRvIGl0cyBhbmNlc3RvcnMuICopXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICAoKiBBIFtWYXJdIG5vZGUgaXMgc3RhbGUgaWYgaXQgd2FzIHNldCBzaW5jZSBpdCB3YXMgcmVjb21wdXRlZC4gKilcbiAgfCBWYXIgeyBzZXRfYXQ7IF8gfSAtPiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHNldF9hdCB0LnJlY29tcHV0ZWRfYXQgPiAwXG4gICgqIE5vZGVzIHRoYXQgaGF2ZSBjaGlsZHJlbi4gKilcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEFycmF5X2ZvbGQgX1xuICB8IEJpbmRfbWFpbiBfXG4gIHwgRnJlZXplIF9cbiAgfCBJZl90aGVuX2Vsc2UgX1xuICB8IEpvaW5fbWFpbiBfXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF9cbiAgfCBTdGVwX2Z1bmN0aW9uIF9cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEV4cGVydCB7IGZvcmNlX3N0YWxlOyBfIH0gLT5cbiAgICBmb3JjZV9zdGFsZVxuICAgIHx8IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICAgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuOztcblxubGV0IG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQgPSBpc19uZWNlc3NhcnkgdCAmJiBpc19zdGFsZSB0XG5sZXQgaXNfaW5fcmVjb21wdXRlX2hlYXAgdCA9IHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID49IDBcbmxldCBpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIHQgPSB0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID49IDBcblxubGV0IGdldF9wYXJlbnQgdCB+aW5kZXggPVxuICBVb3B0LnZhbHVlX2V4blxuICAgIChpZiBpbmRleCA9IDAgdGhlbiB0LnBhcmVudDAgZWxzZSBVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSlcbjs7XG5cbmxldCBpdGVyaV9wYXJlbnRzIHQgfmYgPVxuICBpZiB0Lm51bV9wYXJlbnRzID4gMFxuICB0aGVuIChcbiAgICBmIDAgKFVvcHQudmFsdWVfZXhuIHQucGFyZW50MCk7XG4gICAgZm9yIGluZGV4ID0gMSB0byB0Lm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgZiBpbmRleCAoVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQucGFyZW50MV9hbmRfYmV5b25kIChpbmRleCAtIDEpKSlcbiAgICBkb25lKVxuOztcblxubGV0IGhhc19jaGlsZCB0IH5jaGlsZCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQnKSAtPiBoYXMgOj0gIWhhcyB8fCBzYW1lIGNoaWxkIGNoaWxkJyk7XG4gICFoYXNcbjs7XG5cbmxldCBoYXNfaW52YWxpZF9jaGlsZCB0ID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT4gaGFzIDo9ICFoYXMgfHwgbm90IChpc192YWxpZCBjaGlsZCkpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX3BhcmVudCAodCA6IF8gdCkgfnBhcmVudCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQnKSAtPiBoYXMgOj0gIWhhcyB8fCBzYW1lIHBhcmVudCBwYXJlbnQnKTtcbiAgIWhhc1xuOztcblxubGV0IHNob3VsZF9iZV9pbnZhbGlkYXRlZCA6IHR5cGUgYS4gYSB0IC0+IGJvb2wgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICAoKiBub2RlcyB3aXRoIG5vIGNoaWxkcmVuICopXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBBdCBfIC0+IGZhbHNlXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gZmFsc2VcbiAgfCBDb25zdCBfIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGZhbHNlXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICAoKiBOb2RlcyB3aXRoIGEgZml4ZWQgc2V0IG9mIGNoaWxkcmVuIGFyZSBpbnZhbGlkIGlmIGFueSBjaGlsZCBpcyBpbnZhbGlkLiAqKVxuICB8IEFycmF5X2ZvbGQgX1xuICB8IEZyZWV6ZSBfXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF9cbiAgfCBTdGVwX2Z1bmN0aW9uIF9cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+IGhhc19pbnZhbGlkX2NoaWxkIHRcbiAgKCogQSAqX2NoYW5nZSBub2RlIGlzIGludmFsaWQgaWYgdGhlIG5vZGUgaXQgaXMgd2F0Y2hpbmcgZm9yIGNoYW5nZXMgaXMgaW52YWxpZCAoc2FtZVxuICAgICByZWFzb24gYXMgYWJvdmUpLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIFtoYXNfaW52YWxpZF9jaGlsZCB0XS4gKilcbiAgfCBCaW5kX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxocylcbiAgfCBJZl90ZXN0X2NoYW5nZSB7IHRlc3Q7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIHRlc3QpXG4gIHwgSm9pbl9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gICgqIFtCaW5kX21haW5dLCBbSWZfdGhlbl9lbHNlXSwgYW5kIFtKb2luX21haW5dIGFyZSBpbnZhbGlkIGlmIHRoZWlyICpfY2hhbmdlIGNoaWxkIGlzLFxuICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IGlmIHRoZWlyIG90aGVyIGNoaWxkcmVuIGFyZSAtLSB0aGUgZ3JhcGggbWF5IGJlIHJlc3RydWN0dXJlZCB0b1xuICAgICBhdm9pZCB0aGUgaW52YWxpZGl0eSBvZiB0aG9zZS4gKilcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHNfY2hhbmdlKVxuICB8IElmX3RoZW5fZWxzZSB7IHRlc3RfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0X2NoYW5nZSlcbiAgfCBKb2luX21haW4geyBsaHNfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHNfY2hhbmdlKVxuICB8IEV4cGVydCBfIC0+XG4gICAgKCogVGhpcyBpcyBzaW1pbGFyIHRvIHdoYXQgd2UgZG8gZm9yIGJpbmQgYWJvdmUsIGV4Y2VwdCB0aGF0IGFueSBpbnZhbGlkIGNoaWxkIGNhbiBiZVxuICAgICAgIHJlbW92ZWQsIHNvIHdlIGNhbiBvbmx5IHRlbGwgaWYgYW4gZXhwZXJ0IG5vZGUgYmVjb21lcyBpbnZhbGlkIHdoZW4gYWxsIGl0c1xuICAgICAgIGRlcGVuZGVuY2llcyBoYXZlIGZpcmVkICh3aGljaCBpbiBwcmFjdGljZSBtZWFucyB3aGVuIHdlIGFyZSBhYm91dCB0byBydW4gaXQpLiAqKVxuICAgIGZhbHNlXG47O1xuXG5sZXQgZm9sZF9vYnNlcnZlcnMgKHQgOiBfIHQpIH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgbGV0IGFjID0gcmVmIGluaXQgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGFjIDo9IGYgIWFjIG9ic2VydmVyXG4gIGRvbmU7XG4gICFhY1xuOztcblxubGV0IGl0ZXJfb2JzZXJ2ZXJzIHQgfmYgPSBmb2xkX29ic2VydmVycyB0IH5pbml0OigpIH5mOihmdW4gKCkgb2JzZXJ2ZXIgLT4gZiBvYnNlcnZlcilcblxubGV0IGludmFyaWFudCAodHlwZSBhKSAoaW52YXJpYW50X2EgOiBhIC0+IHVuaXQpICh0IDogYSB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgWyV0ZXN0X2VxOiBib29sXSAobmVlZHNfdG9fYmVfY29tcHV0ZWQgdCkgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpO1xuICAgIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgdGhlbiAoXG4gICAgICBhc3NlcnQgKHQuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHQuY3JlYXRlZF9pbik7XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT5cbiAgICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IGNoaWxkLmhlaWdodCk7XG4gICAgICAgIGFzc2VydCAoaGFzX3BhcmVudCBjaGlsZCB+cGFyZW50OnQpKTtcbiAgICAgIGFzc2VydCAobm90IChzaG91bGRfYmVfaW52YWxpZGF0ZWQgdCkpKTtcbiAgICBpdGVyaV9wYXJlbnRzIHQgfmY6KGZ1biBfIChUIHBhcmVudCkgLT5cbiAgICAgIGFzc2VydCAoaGFzX2NoaWxkIHBhcmVudCB+Y2hpbGQ6dCk7XG4gICAgICBhc3NlcnQgKGlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA8IHBhcmVudC5oZWlnaHQpKTtcbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOihjaGVjayBOb2RlX2lkLmludmFyaWFudClcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH5yZWNvbXB1dGVkX2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+dmFsdWVfb3B0OlxuICAgICAgICAoY2hlY2sgKGZ1biB2YWx1ZV9vcHQgLT5cbiAgICAgICAgICAgaWYgaXNfdmFsaWQgdCAmJiBub3QgKGlzX3N0YWxlIHQpIHRoZW4gYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFsdWVfb3B0KTtcbiAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgdmFsdWVfb3B0KSlcbiAgICAgIH5raW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBraW5kIC0+XG4gICAgICAgICAgIEtpbmQuaW52YXJpYW50IGludmFyaWFudF9hIGtpbmQ7XG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICB8IEV4cGVydCBlIC0+XG4gICAgICAgICAgICAgRXhwZXJ0LmludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlbiBlIH5pc19uZWNlc3Nhcnk6KGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfmN1dG9mZjooY2hlY2sgKEN1dG9mZi5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfmNoYW5nZWRfYXQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNoYW5nZWRfYXQgLT5cbiAgICAgICAgICAgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50IGNoYW5nZWRfYXQ7XG4gICAgICAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmlzX3NvbWUgdC5yZWNvbXB1dGVkX2F0XG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoYW5nZWRfYXQgdC5yZWNvbXB1dGVkX2F0IDw9IDApKSlcbiAgICAgIH5udW1fb25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAoTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgKyBmb2xkX29ic2VydmVycyB0IH5pbml0OjAgfmY6KGZ1biBuIHsgb25fdXBkYXRlX2hhbmRsZXJzOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgICBuICsgTGlzdC5sZW5ndGggb25fdXBkYXRlX2hhbmRsZXJzKSkpKVxuICAgICAgfm51bV9wYXJlbnRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcGFyZW50cyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzIDw9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZCkpKVxuICAgICAgfnBhcmVudDFfYW5kX2JleW9uZDpcbiAgICAgICAgKGNoZWNrIChmdW4gcGFyZW50MV9hbmRfYmV5b25kIC0+XG4gICAgICAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHBhcmVudDFfYW5kX2JleW9uZCBkb1xuICAgICAgICAgICAgIFsldGVzdF9lcTogYm9vbF1cbiAgICAgICAgICAgICAgIChwYXJlbnRfaW5kZXggPCB0Lm51bV9wYXJlbnRzKVxuICAgICAgICAgICAgICAgKFVvcHQuaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgcGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfnBhcmVudDA6XG4gICAgICAgIChjaGVjayAoZnVuIHBhcmVudDAgLT5cbiAgICAgICAgICAgWyV0ZXN0X2VxOiBib29sXSAodC5udW1fcGFyZW50cyA+IDApIChVb3B0LmlzX3NvbWUgcGFyZW50MCkpKVxuICAgICAgfmNyZWF0ZWRfaW46KGNoZWNrIFNjb3BlLmludmFyaWFudClcbiAgICAgIH5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgLT5cbiAgICAgICAgICAgaWYgU2NvcGUuaXNfdG9wIHQuY3JlYXRlZF9pbiB8fCBub3QgKGlzX3ZhbGlkIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUpKSlcbiAgICAgIH5oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodCAtPlxuICAgICAgICAgICBpZiBpc19uZWNlc3NhcnkgdCB0aGVuIGFzc2VydCAoaGVpZ2h0ID49IDApIGVsc2UgYXNzZXJ0IChoZWlnaHQgPSAtMSkpKVxuICAgICAgfmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID49IC0xKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPD0gdC5oZWlnaHQpKSlcbiAgICAgIH5wcmV2X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAocHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgcHJldikgPSBVb3B0LnZhbHVlX2V4biBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gcHJldi5uZXh0X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IHByZXYuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfm5leHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudmFsdWVfZXhuIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHQpIChVb3B0LnZhbHVlX2V4biBuZXh0LnByZXZfaW5fcmVjb21wdXRlX2hlYXApKTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbmV4dC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApKSkpXG4gICAgICB+aGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIC0+XG4gICAgICAgICAgIGlmIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID49IDBcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwgdC5oZWlnaHQpKSlcbiAgICAgIH5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcClcbiAgICAgICAgICAgZWxzZSBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudmFsdWVfZXhuIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAoaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCBuZXh0KTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBuZXh0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICAgICAgfm9sZF92YWx1ZV9vcHQ6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b2JzZXJ2ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biB7IHN0YXRlOyBvYnNlcnZpbmc7IF8gfSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCB0IG9ic2VydmluZyk7XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgfmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uOmlnbm9yZVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczppZ25vcmVcbiAgICAgIH51c2VyX2luZm86aWdub3JlXG4gICAgICB+bXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgICAgICB8IEV4cGVydCBfIC0+ICgpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuICAgICAgICAgICAgICAgIH5leHBlY3Q6KGluaXRpYWxfbnVtX2NoaWxkcmVuIHQpKTtcbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgICAoZ2V0X3BhcmVudFxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkXG4gICAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpKSkpO1xuICAgICAgICAgICBpZiBkZWJ1ZyAmJiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB0aGVuIEFycmF5Lml0ZXIgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IH5mOihmdW4geCAtPiBhc3NlcnQgKHggPSAtMSkpKSlcbiAgICAgIH5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXg6XG4gICAgICAgIChjaGVjayAoZnVuIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgKEFycmF5Lmxlbmd0aCBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXgpXG4gICAgICAgICAgICAgfmV4cGVjdDooVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQgKyAxKTtcbiAgICAgICAgICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gcGFyZW50X2luZGV4IChUIHBhcmVudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGFja2VkX3NhbWVcbiAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgKEtpbmQuc2xvd19nZXRfY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LmtpbmRcbiAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlbiBBcnJheS5pdGVyIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+ZjooZnVuIHggLT4gYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+Zm9yY2VfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgfmNyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmUpXG47O1xuXG5sZXQgdW5zYWZlX3ZhbHVlIHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9vcHRcbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuICBlbHNlIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBnZXRfY3V0b2ZmIHQgPSB0LmN1dG9mZlxubGV0IHNldF9jdXRvZmYgdCBjdXRvZmYgPSB0LmN1dG9mZiA8LSBjdXRvZmZcblxubGV0IGlzX2NvbnN0IHQgPVxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IENvbnN0IF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBvbl91cGRhdGUgdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMVxuOztcblxubGV0IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgdCBub2RlX3VwZGF0ZSB+bm93ID1cbiAgbGV0IHIgPSByZWYgdC5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgd2hpbGUgbm90IChMaXN0LmlzX2VtcHR5ICFyKSBkb1xuICAgIG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgb25fdXBkYXRlX2hhbmRsZXIgOjogcmVzdCAtPlxuICAgICAgciA6PSByZXN0O1xuICAgICAgT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGxldCByID0gcmVmIG9ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgICAgciA6PSByZXN0O1xuICAgICAgICAoKiBXZSBoYXZlIHRvIHRlc3QgW3N0YXRlXSBiZWZvcmUgZWFjaCBvbi11cGRhdGUgaGFuZGxlciwgYmVjYXVzZSBhbiBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlciBtaWdodCBkaXNhYmxlIGl0cyBvd24gb2JzZXJ2ZXIsIHdoaWNoIHNob3VsZCBwcmV2ZW50IG90aGVyIG9uLXVwZGF0ZVxuICAgICAgICAgICBoYW5kbGVycyBpbiB0aGUgc2FtZSBvYnNlcnZlciBmcm9tIHJ1bm5pbmcuICopXG4gICAgICAgIChtYXRjaCBvYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBJbl91c2UgLT4gT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3cpXG4gICAgZG9uZVxuICBkb25lXG47O1xuXG5sZXQgc2V0X2tpbmQgdCBraW5kID1cbiAgdC5raW5kIDwtIGtpbmQ7XG4gIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gIDwtIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbjs7XG5cbmxldCBjcmVhdGUgc3RhdGUgY3JlYXRlZF9pbiBraW5kID1cbiAgbGV0IHQgPVxuICAgIHsgaWQgPSBOb2RlX2lkLm5leHQgKClcbiAgICA7IHN0YXRlXG4gICAgOyByZWNvbXB1dGVkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdmFsdWVfb3B0ID0gVW9wdC5ub25lXG4gICAgOyBraW5kXG4gICAgOyBjdXRvZmYgPSBDdXRvZmYucGh5c19lcXVhbFxuICAgIDsgY2hhbmdlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IG51bV9vbl91cGRhdGVfaGFuZGxlcnMgPSAwXG4gICAgOyBudW1fcGFyZW50cyA9IDBcbiAgICA7IHBhcmVudDFfYW5kX2JleW9uZCA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgICA7IHBhcmVudDAgPSBVb3B0Lm5vbmVcbiAgICA7IGNyZWF0ZWRfaW5cbiAgICA7IG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHQgPSAtMVxuICAgIDsgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gLTFcbiAgICA7IHByZXZfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgICA7IG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgb2xkX3ZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsgb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IGZhbHNlXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4ID1cbiAgICAgICAgQXJyYXkuY3JlYXRlIH5sZW46KEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4ga2luZCkgKC0xKVxuICAgICgqIFtteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXhdIGhhcyBvbmUgZWxlbWVudCBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGhvbGRcbiAgICAgICB0aGUgY2hpbGQgaW5kZXggb2YgW3BhcmVudDBdLiAqKVxuICAgIDsgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4ID0gW3wgLTEgfF1cbiAgICA7IGZvcmNlX25lY2Vzc2FyeSA9IGZhbHNlXG4gICAgOyB1c2VyX2luZm8gPSBOb25lXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgPVxuICAgICAgICAoaWYgc3RhdGUua2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSB0aGVuIFNvbWUgKEJhY2t0cmFjZS5nZXQgKCkpIGVsc2UgTm9uZSlcbiAgICB9XG4gIGluXG4gIFNjb3BlLmFkZF9ub2RlIGNyZWF0ZWRfaW4gdDtcbiAgKCogW2ludmFyaWFudF0gZG9lcyBub3QgeWV0IGhvbGQgaGVyZSBiZWNhdXNlIG1hbnkgdXNlcyBvZiBbTm9kZS5jcmVhdGVdIHVzZSBba2luZCA9XG4gICAgIFVuaW5pdGlhbGl6ZWRdLCBhbmQgdGhlbiBtdXRhdGUgW3Qua2luZF0gbGF0ZXIuICopXG4gIHRcbjs7XG5cbmxldCBtYXhfbnVtX3BhcmVudHMgdCA9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZFxuXG5sZXQgbWFrZV9zcGFjZV9mb3JfcGFyZW50X2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fcGFyZW50cyA9IG1heF9udW1fcGFyZW50cyB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfbWF4X251bV9wYXJlbnRzID0gMiAqIG1heF9udW1fcGFyZW50cyB0IGluXG4gICAgdC5wYXJlbnQxX2FuZF9iZXlvbmRcbiAgICA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5wYXJlbnQxX2FuZF9iZXlvbmQgfmxlbjoobmV3X21heF9udW1fcGFyZW50cyAtIDEpO1xuICAgIHQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX3BhcmVudHMgKC0xKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0ICh0Lm51bV9wYXJlbnRzIDwgbWF4X251bV9wYXJlbnRzIHQpXG47O1xuXG5sZXQgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQgfmNoaWxkX2luZGV4ID1cbiAgbGV0IG1heF9udW1fY2hpbGRyZW4gPSBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggaW5cbiAgaWYgY2hpbGRfaW5kZXggPj0gbWF4X251bV9jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPSBtYXhfbnVtX2NoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heF9udW1fY2hpbGRyZW4gPSBJbnQubWF4IDIgKDIgKiBtYXhfbnVtX2NoaWxkcmVuKSBpblxuICAgIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX2NoaWxkcmVuICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPCBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXgpXG47O1xuXG5sZXQgc2V0X3BhcmVudCA6IHR5cGUgYS4gY2hpbGQ6YSB0IC0+IHBhcmVudDpQYWNrZWQudCBVb3B0LnQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgaWYgcGFyZW50X2luZGV4ID0gMFxuICB0aGVuIGNoaWxkLnBhcmVudDAgPC0gcGFyZW50XG4gIGVsc2UgVW5pZm9ybV9hcnJheS5zZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSBwYXJlbnRcbjs7XG5cbmxldCBsaW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDooVW9wdC5zb21lIChQYWNrZWQuVCBwYXJlbnQpKSB+cGFyZW50X2luZGV4O1xuICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gY2hpbGRfaW5kZXg7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSBwYXJlbnRfaW5kZXhcbjs7XG5cbmxldCB1bmxpbmtcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IGNoaWxkX2luZGV4OmludCAtPiBwYXJlbnQ6YiB0IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBzZXRfcGFyZW50IH5jaGlsZCB+cGFyZW50OlVvcHQubm9uZSB+cGFyZW50X2luZGV4O1xuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gLTE7XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIDwtIC0xKVxuOztcblxubGV0IGFkZF9wYXJlbnQgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IHBhcmVudDpiIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSBwYXJlbnQgfmNoaWxkX2luZGV4O1xuICBsaW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4OmNoaWxkLm51bV9wYXJlbnRzO1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyArIDFcbjs7XG5cbmxldCByZW1vdmVfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQubnVtX3BhcmVudHMgPj0gMSk7XG4gIGxldCBwYXJlbnRfaW5kZXggPSBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHBhcmVudCkgKGdldF9wYXJlbnQgY2hpbGQgfmluZGV4OnBhcmVudF9pbmRleCkpO1xuICBsZXQgbGFzdF9wYXJlbnRfaW5kZXggPSBjaGlsZC5udW1fcGFyZW50cyAtIDEgaW5cbiAgaWYgcGFyZW50X2luZGV4IDwgbGFzdF9wYXJlbnRfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAobGFzdF9wYXJlbnRfaW5kZXggLSAxKSlcbiAgICBpblxuICAgIGxpbmtcbiAgICAgIH5jaGlsZFxuICAgICAgfmNoaWxkX2luZGV4OmNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4obGFzdF9wYXJlbnRfaW5kZXgpXG4gICAgICB+cGFyZW50XG4gICAgICB+cGFyZW50X2luZGV4KTtcbiAgdW5saW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4Omxhc3RfcGFyZW50X2luZGV4O1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyAtIDFcbjs7XG5cbmxldCBzd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kIHBhcmVudCB+Y2hpbGQxIH5jaGlsZF9pbmRleDEgfmNoaWxkMiB+Y2hpbGRfaW5kZXgyID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDEpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDEpKTtcbiAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIGNoaWxkMikgKEtpbmQuc2xvd19nZXRfY2hpbGQgcGFyZW50LmtpbmQgfmluZGV4OmNoaWxkX2luZGV4MikpKTtcbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MSlcbiAgaW5cbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MilcbiAgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpID0gY2hpbGRfaW5kZXgxKTtcbiAgICBhc3NlcnQgKFxuICAgICAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPSBjaGlsZF9pbmRleDIpKTtcbiAgKCogbm93IHN0YXJ0IHN3YXBwaW5nICopXG4gIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpIDwtIGNoaWxkX2luZGV4MjtcbiAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPC0gY2hpbGRfaW5kZXgxO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDI7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MikgPC0gaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMVxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBQYWNrZWQudCA9IFQgOiBfIFR5cGVzLk5vZGUudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIHRdXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcblxuICBtb2R1bGUgQXNfbGlzdCAoTSA6IHNpZ1xuICAgICAgdmFsIG5leHQgOiBQYWNrZWQudCAtPiBQYWNrZWQudCBVb3B0LnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gUGFja2VkLnQgVW9wdC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCBhYyA9IHJlZiBpbml0IGluXG4gICAgICBsZXQgciA9IHJlZiB0IGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IHBhY2tlZF9ub2RlID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBNLm5leHQgcGFja2VkX25vZGU7XG4gICAgICAgIGFjIDo9IGYgIWFjIHBhY2tlZF9ub2RlXG4gICAgICBkb25lO1xuICAgICAgIWFjXG4gICAgOztcblxuICAgIGxldCBpdGVyIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBuIC0+IGYgbilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBpdGVyIHQgfmY6aW52YXJpYW50XG4gICAgbGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2IChmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyBuIC0+IG4gOjogYWMpKVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX2xpc3QgdCB8PiBbJXNleHBfb2Y6IFBhY2tlZC50IGxpc3RdXG4gIGVuZFxuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mID1cbiAgICBsZXQgc2VlbiA9IE5vZGVfaWQuSGFzaF9zZXQuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBpdGVyX2Rlc2NlbmRhbnRzIChUIHQpID1cbiAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlZW4gdC5pZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBIYXNoX3NldC5hZGQgc2VlbiB0LmlkO1xuICAgICAgICBmIChUIHQpO1xuICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyB0IC0+IGl0ZXJfZGVzY2VuZGFudHMgdCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgdHMgfmY6aXRlcl9kZXNjZW5kYW50cztcbiAgICBzZWVuXG4gIDs7XG5cbiAgbGV0IGl0ZXJfZGVzY2VuZGFudHMgdHMgfmYgPSBpZ25vcmUgKGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmYgOiBfIEhhc2hfc2V0LnQpXG5cbiAgbW9kdWxlIERvdF91c2VyX2luZm8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERvdF91c2VyX2luZm9cblxuICAgIGxldCBkZWZhdWx0IH5uYW1lIHQgPVxuICAgICAgRG90X3VzZXJfaW5mby5kb3RcbiAgICAgICAgfmxhYmVsOlsgbmFtZTsgS2luZC5uYW1lIHQua2luZDsgc3ByaW50ZiBcImhlaWdodD0lZFwiIHQuaGVpZ2h0IF1cbiAgICAgICAgfmF0dHJpYnV0ZXM6U3RyaW5nLk1hcC5lbXB0eVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IChUIHQpID0gYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiB0XG5cbiAgbGV0IHByaW50X25vZGUgb3V0IH5uYW1lIHQgPVxuICAgIGxldCBkZWZhdWx0ID0gRG90X3VzZXJfaW5mby5kZWZhdWx0IH5uYW1lIHQgaW5cbiAgICBsZXQgaW5mbyA9XG4gICAgICBtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIHVzZXJfaW5mbyAtPiBEb3RfdXNlcl9pbmZvLmFwcGVuZCBkZWZhdWx0IHVzZXJfaW5mb1xuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCIlc1xcblwiIChEb3RfdXNlcl9pbmZvLnRvX3N0cmluZyB+bmFtZSAoRG90X3VzZXJfaW5mby50b19kb3QgaW5mbykpXG4gIDs7XG5cbiAgbGV0IHNhdmVfZG90IG91dCB0cyA9XG4gICAgbGV0IG5vZGVfbmFtZSA9XG4gICAgICBpZiBhbV9ydW5uaW5nX3Rlc3RcbiAgICAgIHRoZW4gZnVuIF8gLT4gXCJuIyMjXCJcbiAgICAgIGVsc2UgZnVuIG5vZGUgLT4gXCJuXCIgXiBOb2RlX2lkLnRvX3N0cmluZyBub2RlLmlkXG4gICAgaW5cbiAgICBmcHJpbnRmIG91dCBcImRpZ3JhcGggRyB7XFxuXCI7XG4gICAgZnByaW50ZiBvdXQgXCIgIHJhbmtkaXIgPSBCVFxcblwiO1xuICAgIGxldCBiaW5kX2VkZ2VzID0gcmVmIFtdIGluXG4gICAgbGV0IHNlZW4gPVxuICAgICAgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIGxldCBuYW1lID0gbm9kZV9uYW1lIHQgaW5cbiAgICAgICAgcHJpbnRfbm9kZSBvdXQgfm5hbWUgdDtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgZnJvbV8pIC0+XG4gICAgICAgICAgZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzXFxuXCIgKG5vZGVfbmFtZSBmcm9tXykgbmFtZSk7XG4gICAgICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT5cbiAgICAgICAgICBCaW5kLml0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZCB+ZjooZnVuIHRvXyAtPlxuICAgICAgICAgICAgYmluZF9lZGdlcyA6PSAoVCB0LCB0b18pIDo6ICFiaW5kX2VkZ2VzKVxuICAgICAgICB8IF8gLT4gKCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgIWJpbmRfZWRnZXMgfmY6KGZ1biAoVCBmcm9tLCBUIHRvXykgLT5cbiAgICAgIGlmIEhhc2hfc2V0Lm1lbSBzZWVuIHRvXy5pZFxuICAgICAgdGhlbiBmcHJpbnRmIG91dCBcIiAgJXMgLT4gJXMgW3N0eWxlPWRhc2hlZF1cXG5cIiAobm9kZV9uYW1lIGZyb20pIChub2RlX25hbWUgdG9fKSk7XG4gICAgZnByaW50ZiBvdXQgXCJ9XFxuJSFcIlxuICA7O1xuXG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgdHMgPVxuICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOihmdW4gb3V0IC0+IHNhdmVfZG90IG91dCB0cylcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgQXNfcmVjb21wdXRlX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICBlbmQpXG5cbm1vZHVsZSBOb2Rlc19ieV9oZWlnaHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXNfcmVjb21wdXRlX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAoKiBXZSBkaXNwbGF5IHRoZSBzbWFsbGVzdCBwcmVmaXggb2YgW25vZGVzX2J5X2hlaWdodF0gdGhhdCBpbmNsdWRlcyBhbGwgbm9kZXMuICopXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IG1heF9ub25lbXB0eV9pbmRleCA9IHJlZiAoLTEpIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaSBsIC0+IGlmIFVvcHQuaXNfc29tZSBsIHRoZW4gbWF4X25vbmVtcHR5X2luZGV4IDo9IGkpO1xuICAgIFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczowIH5sZW46KCFtYXhfbm9uZW1wdHlfaW5kZXggKyAxKSB8PiBbJXNleHBfb2Y6IHRdXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuUmVjb21wdXRlX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgbGV0IGFjdHVhbF9sZW5ndGggPSByZWYgMCBpblxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdC5ub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBub2RlIC0+XG4gICAgICAgICAgICAgYWN0dWFsX2xlbmd0aCA6PSAhYWN0dWFsX2xlbmd0aCArIEFzX3JlY29tcHV0ZV9saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAgICAgICAgWyV0ZXN0X2VxOiBpbnRdIGxlbmd0aCAhYWN0dWFsX2xlbmd0aCkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vZGVzX2J5X2hlaWdodCAtPlxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIG5vZGVzX2J5X2hlaWdodCB+ZjooZnVuIGhlaWdodCBub2RlIC0+XG4gICAgICAgICAgICAgQXNfcmVjb21wdXRlX2xpc3QuaXRlciBub2RlIH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKSkpKSlcbjs7XG5cbmxldCBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIGZvciBpID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDEgZG9cbiAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBpKSlcbiAgICBkb25lO1xuICBsZXQgc3JjID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IGRzdCA9IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICB+c3JjXG4gICAgfnNyY19wb3M6MFxuICAgIH5kc3RcbiAgICB+ZHN0X3BvczowXG4gICAgfmxlbjoobWluIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBzcmMpIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpKTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gZHN0O1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBtaW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGRzdClcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9uZXh0IChwcmV2IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXh0ID1cbiAgaWYgVW9wdC5pc19zb21lIHByZXZcbiAgdGhlbiAoXG4gICAgbGV0IChUIHByZXYpID0gVW9wdC51bnNhZmVfdmFsdWUgcHJldiBpblxuICAgIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBuZXh0KVxuOztcblxubGV0IHNldF9wcmV2IChuZXh0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5wcmV2ID1cbiAgaWYgVW9wdC5pc19zb21lIG5leHRcbiAgdGhlbiAoXG4gICAgbGV0IChUIG5leHQpID0gVW9wdC51bnNhZmVfdmFsdWUgbmV4dCBpblxuICAgIG5leHQucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBwcmV2KVxuOztcblxubGV0IGxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gaGVpZ2h0O1xuICBsZXQgbmV4dCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBpblxuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjooVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKVxuOztcblxubGV0IHVubGluayAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgbGV0IHByZXYgPSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgbGV0IG5leHQgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgaWYgcGh5c19zYW1lXG4gICAgICAgKFVvcHQuc29tZSBub2RlKVxuICAgICAgIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcClcbiAgdGhlbiBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjtcbiAgc2V0X25leHQgcHJldiB+bmV4dDtcbiAgbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZVxuOztcblxuKCogV2UgZG9uJ3Qgc2V0IFtub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBdIGhlcmUsIGJ1dCByYXRoZXIgYWZ0ZXIgY2FsbGluZyBbdW5saW5rXS4gKilcblxubGV0IGFkZCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB8fCBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IGF0dGVtcHQgdG8gYWRkIG5vZGUgdG8gcmVjb21wdXRlIGhlYXBcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub2RlLmhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBoZWlnaHQgPCB0LmhlaWdodF9sb3dlcl9ib3VuZCB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGluayB0IG5vZGU7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHJlbW92ZSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpIHx8IE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJpbmNvcnJlY3QgW3JlbW92ZV0gb2Ygbm9kZSBmcm9tIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICB1bmxpbmsgdCBub2RlO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxXG47O1xuXG5sZXQgaW5jcmVhc2VfaGVpZ2h0ICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIGFzc2VydCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIHVubGluayB0IG5vZGU7XG4gIGxpbmsgdCBub2RlXG47O1xuXG5sZXQgbWluX2hlaWdodCB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHRcbiAgZWxzZSAoXG4gICAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gICAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGRvXG4gICAgICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSB0LmhlaWdodF9sb3dlcl9ib3VuZCArIDFcbiAgICBkb25lKTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmRcbjs7XG5cbmxldCByZW1vdmVfbWluIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgbm9kZXNfYnlfaGVpZ2h0ID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IG5vZGUgPSByZWYgKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCkgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lICFub2RlIGRvXG4gICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxO1xuICAgIGlmIGRlYnVnICYmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHVuZXhwZWN0ZWRseSByZWFjaGVkIGVuZCBvZiBoZWFwXCJcbiAgICAgICAgdFxuICAgICAgICBbJXNleHBfb2Y6IHRdO1xuICAgIG5vZGUgOj0gVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG4gIGRvbmU7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFub2RlIGluXG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQubm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6VW9wdC5ub25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG5tb2R1bGUgQXNfYWRqdXN0X2hlaWdodHNfbGlzdCA9IE5vZGUuUGFja2VkLkFzX2xpc3QgKHN0cnVjdFxuICAgIGxldCBuZXh0IChOb2RlLlBhY2tlZC5UIG5vZGUpID0gbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX2FkanVzdF9oZWlnaHRzX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBoZWlnaHQgbm9kZXMgLT5cbiAgICAgICAgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5pbnZhcmlhbnQgbm9kZXM7XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaXRlciBub2RlcyB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCk7XG4gICAgICAgICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlXG4gICAgICAgICAgdGhlbiBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgOztcblxuICBsZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICAgIFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW46KG1heF9oZWlnaHRfYWxsb3dlZCArIDEpIFVvcHQubm9uZVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlciB0IH5mOihmdW4gbm9kZSAtPiByIDo9ICFyICsgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgIXJcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BZGp1c3RfaGVpZ2h0c19oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG1heF9oZWlnaHRfc2VlbiA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT4gYXNzZXJ0IChsZW5ndGggPSBOb2Rlc19ieV9oZWlnaHQubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KSkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXhfaGVpZ2h0X3NlZW46XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9oZWlnaHRfc2VlbiAtPlxuICAgICAgICAgICBhc3NlcnQgKG1heF9oZWlnaHRfc2VlbiA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChtYXhfaGVpZ2h0X3NlZW4gPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6KGNoZWNrIE5vZGVzX2J5X2hlaWdodC5pbnZhcmlhbnQpKVxuOztcblxubGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgeyBsZW5ndGggPSAwXG4gIDsgaGVpZ2h0X2xvd2VyX2JvdW5kID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMVxuICA7IG1heF9oZWlnaHRfc2VlbiA9IDBcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBtYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBpZiBtYXhfaGVpZ2h0X2FsbG93ZWQgPCB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImNhbm5vdCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIGxlc3MgdGhhbiB0aGUgbWF4IGhlaWdodCBhbHJlYWR5IHNlZW5cIlxuICAgICAgKG1heF9oZWlnaHRfYWxsb3dlZCwgYG1heF9oZWlnaHRfc2VlbiB0Lm1heF9oZWlnaHRfc2VlbilcbiAgICAgIFslc2V4cF9vZjogaW50ICogWyBgbWF4X2hlaWdodF9zZWVuIG9mIGludCBdXTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICB0Lm5vZGVzX2J5X2hlaWdodCA8LSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbjs7XG5cbmxldCBhZGRfdW5sZXNzX21lbSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gIHRoZW4gKFxuICAgIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICAgICgqIFdlIHByb2Nlc3Mgbm9kZXMgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBwcmUtYWRqdXN0ZWQgaGVpZ2h0LCBzbyBpdCBpcyBhIGJ1ZyBpZiB3ZVxuICAgICAgIGV2ZXIgdHJ5IHRvIGFkZCBhIG5vZGUgdGhhdCB3b3VsZCB2aW9sYXRlIHRoYXQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSB0LmhlaWdodF9sb3dlcl9ib3VuZCk7XG4gICAgKCogV2hlbmV2ZXIgd2Ugc2V0IGEgbm9kZSdzIGhlaWdodCwgd2UgdXNlIFtzZXRfaGVpZ2h0XSwgd2hpY2ggZW5mb3JjZXMgdGhpcy4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIGhlaWdodDtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICAgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0O1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSkpXG47O1xuXG5sZXQgcmVtb3ZlX21pbl9leG4gdCA6IE5vZGUuUGFja2VkLnQgPVxuICBpZiBkZWJ1ZyAmJiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFkanVzdF9oZWlnaHRzX2hlYXAucmVtb3ZlX21pbiBvZiBlbXB0eSBoZWFwXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgciA9IHJlZiB0LmhlaWdodF9sb3dlcl9ib3VuZCBpblxuICB3aGlsZSBVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0ICFyKSBkb1xuICAgIGluY3IgclxuICBkb25lO1xuICBsZXQgaGVpZ2h0ID0gIXIgaW5cbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gaGVpZ2h0O1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkgaW5cbiAgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwO1xuICBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcblxubGV0IHNldF9oZWlnaHQgdCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBpZiBoZWlnaHQgPiB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuIChcbiAgICB0Lm1heF9oZWlnaHRfc2VlbiA8LSBoZWlnaHQ7XG4gICAgaWYgaGVpZ2h0ID4gbWF4X2hlaWdodF9hbGxvd2VkIHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIm5vZGUgd2l0aCB0b28gbGFyZ2UgaGVpZ2h0XCJcbiAgICAgICAgKGBIZWlnaHQgaGVpZ2h0LCBgTWF4IChtYXhfaGVpZ2h0X2FsbG93ZWQgdCkpXG4gICAgICAgIFslc2V4cF9vZjogWyBgSGVpZ2h0IG9mIGludCBdICogWyBgTWF4IG9mIGludCBdXSk7XG4gIG5vZGUuaGVpZ2h0IDwtIGhlaWdodFxuOztcblxubGV0IGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBjaGlsZCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBpZiBOb2RlLnNhbWUgcGFyZW50IG9yaWdpbmFsX2NoaWxkXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYWRkaW5nIGVkZ2UgbWFkZSBncmFwaCBjeWNsaWNcIlxuICAgICAgKGBjaGlsZCBvcmlnaW5hbF9jaGlsZCwgYHBhcmVudCBvcmlnaW5hbF9wYXJlbnQpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNoaWxkIG9mIF8gTm9kZS50IF0gKiBbIGBwYXJlbnQgb2YgXyBOb2RlLnQgXV07XG4gIGlmIGNoaWxkLmhlaWdodCA+PSBwYXJlbnQuaGVpZ2h0XG4gIHRoZW4gKFxuICAgIGFkZF91bmxlc3NfbWVtIHQgcGFyZW50O1xuICAgICgqIFdlIHNldCBbcGFyZW50LmhlaWdodF0gYWZ0ZXIgYWRkaW5nIFtwYXJlbnRdIHRvIHRoZSBoZWFwLCBzbyB0aGF0IFtwYXJlbnRdIGdvZXNcbiAgICAgICBpbiB0aGUgaGVhcCB3aXRoIGl0cyBwcmUtYWRqdXN0ZWQgaGVpZ2h0LiAqKVxuICAgIHNldF9oZWlnaHQgdCBwYXJlbnQgKGNoaWxkLmhlaWdodCArIDEpKVxuOztcblxubGV0IGFkanVzdF9oZWlnaHRzXG4gICAgICAodHlwZSBhIGIpXG4gICAgICB0XG4gICAgICByZWNvbXB1dGVfaGVhcFxuICAgICAgfmNoaWxkOihvcmlnaW5hbF9jaGlsZCA6IGEgTm9kZS50KVxuICAgICAgfnBhcmVudDoob3JpZ2luYWxfcGFyZW50IDogYiBOb2RlLnQpXG4gID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAob3JpZ2luYWxfY2hpbGQuaGVpZ2h0ID49IG9yaWdpbmFsX3BhcmVudC5oZWlnaHQpO1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0O1xuICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgdFxuICAgIH5vcmlnaW5hbF9jaGlsZFxuICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICB+Y2hpbGQ6b3JpZ2luYWxfY2hpbGRcbiAgICB+cGFyZW50Om9yaWdpbmFsX3BhcmVudDtcbiAgd2hpbGUgbGVuZ3RoIHQgPiAwIGRvXG4gICAgbGV0IChUIGNoaWxkKSA9IHJlbW92ZV9taW5fZXhuIHQgaW5cbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIGNoaWxkXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5pbmNyZWFzZV9oZWlnaHQgcmVjb21wdXRlX2hlYXAgY2hpbGQ7XG4gICAgaWYgY2hpbGQubnVtX3BhcmVudHMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgKFQgcGFyZW50KSA9IFVvcHQudmFsdWVfZXhuIGNoaWxkLnBhcmVudDAgaW5cbiAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudDtcbiAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIGNoaWxkLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudFxuICAgICAgZG9uZSk7XG4gICAgbWF0Y2ggY2hpbGQua2luZCB3aXRoXG4gICAgfCBCaW5kX2xoc19jaGFuZ2UgeyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM7IF8gfSAtPlxuICAgICAgbGV0IHIgPSByZWYgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVfb25fcmhzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+b3JpZ2luYWxfY2hpbGRcbiAgICAgICAgICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICAgICAgICAgIH5jaGlsZFxuICAgICAgICAgICAgfnBhcmVudDpub2RlX29uX3Joc1xuICAgICAgZG9uZVxuICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChvcmlnaW5hbF9jaGlsZC5oZWlnaHQgPCBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0KVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQWxhcm1fdmFsdWUuQWN0aW9uLnQgPVxuICAgIHwgQXQgb2YgQXQudFxuICAgIHwgQXRfaW50ZXJ2YWxzIG9mIEF0X2ludGVydmFscy50XG4gICAgfCBTbmFwc2hvdCA6IF8gU25hcHNob3QudCAtPiB0XG4gICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBBdCBhdCAtPiBBdC5pbnZhcmlhbnQgYXRcbiAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpZ25vcmUgc25hcHNob3RcbiAgICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGlnbm9yZSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BbGFybV92YWx1ZS50ID1cbiAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICA7ICgqIFtuZXh0X2ZpcmVkXSBzaW5nbHkgbGlua3MgYWxsIGFsYXJtIHZhbHVlcyB0aGF0IGZpcmUgZHVyaW5nIGEgc2luZ2xlIGNhbGwgdG9cbiAgICAgICBbYWR2YW5jZV9jbG9ja10uICopXG4gICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogKHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXIgfmFjdGlvbjooY2hlY2sgQWN0aW9uLmludmFyaWFudCkgfm5leHRfZmlyZWQ6aWdub3JlKVxuOztcblxubGV0IGNyZWF0ZSBhY3Rpb24gPSB7IGFjdGlvbjsgbmV4dF9maXJlZCA9IFVvcHQubm9uZSB9XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29uZmlnX2ludGZcblxubW9kdWxlIERlZmF1bHQgKCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSB0cnVlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLkludGVybmFsX29ic2VydmVyXG5cbm1vZHVsZSBQYWNrZWRfID0gc3RydWN0XG4gIGluY2x1ZGUgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPVxuICAgIGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyB8PiBbJXNleHBfb2Y6IF8gVHlwZXMuTm9kZS50XVxuICA7O1xuXG4gIGxldCBwcmV2X2luX2FsbCAoVCB0KSA9IHQucHJldl9pbl9hbGxcbiAgbGV0IG5leHRfaW5fYWxsIChUIHQpID0gdC5uZXh0X2luX2FsbFxuICBsZXQgc2V0X3ByZXZfaW5fYWxsIChUIHQxKSB0MiA9IHQxLnByZXZfaW5fYWxsIDwtIHQyXG4gIGxldCBzZXRfbmV4dF9pbl9hbGwgKFQgdDEpIHQyID0gdDEubmV4dF9pbl9hbGwgPC0gdDJcbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuU3RhdGUudCA9XG4gICAgfCBDcmVhdGVkXG4gICAgfCBJbl91c2VcbiAgICB8IERpc2FsbG93ZWRcbiAgICB8IFVubGlua2VkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gIHsgKCogU3RhdGUgdHJhbnNpdGlvbnM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ3JlYXRlZCAtLT4gSW5fdXNlIC0tPiBEaXNhbGxvd2VkIC0tPiBVbmxpbmtlZFxuICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICAgICAgICAgXFwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL1xuICAgICAgIHZ9ICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7ICgqIFt7cHJldixuZXh0fV9pbl9hbGxdIGRvdWJseSBsaW5rIGFsbCBvYnNlcnZlcnMgaW4gW3N0YXRlLmFsbF9vYnNlcnZlcnNdLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9hbGwgOiBQYWNrZWRfLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX2FsbCA6IFBhY2tlZF8udCBVb3B0LnRcbiAgOyAoKiBbe3ByZXYsbmV4dH1faW5fb2JzZXJ2aW5nXSBkb3VibHkgbGluayBhbGwgb2JzZXJ2ZXJzIG9mIFtvYnNlcnZpbmddLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9vYnNlcnZpbmcgOiAoJ2EgdFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fb2JzZXJ2aW5nIDogKCdhIHRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAnYSBpbnRlcm5hbF9vYnNlcnZlciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGluY3Jfc3RhdGUgdCA9IHQub2JzZXJ2aW5nLnN0YXRlXG5cbmxldCB1c2VfaXNfYWxsb3dlZCB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ3JlYXRlZCB8IEluX3VzZSAtPiB0cnVlXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGZhbHNlXG47O1xuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBzYW1lX2FzX3BhY2tlZCAodDEgOiBfIHQpIChQYWNrZWRfLlQgdDIpID0gc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+b2JzZXJ2aW5nOihjaGVjayAoTm9kZS5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgICAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChMaXN0LmlzX2VtcHR5IG9uX3VwZGF0ZV9oYW5kbGVycykpKVxuICAgICAgfnByZXZfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLm5leHRfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX2FsbCkpKSkpKVxuICAgICAgfm5leHRfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLnByZXZfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FsbCkpKSkpKVxuICAgICAgfnByZXZfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKG5leHRfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX29ic2VydmluZykpKSkpKVxuICAgICAgfm5leHRfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKHByZXZfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX29ic2VydmluZykpKSkpKSlcbjs7XG5cbmxldCB2YWx1ZV9leG4gdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENyZWF0ZWQgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCB3aXRob3V0IHN0YWJpbGl6aW5nXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIGRpc2FsbG93X2Z1dHVyZV91c2VcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gIHwgSW5fdXNlIC0+XG4gICAgbGV0IHVvcHQgPSB0Lm9ic2VydmluZy52YWx1ZV9vcHQgaW5cbiAgICBpZiBVb3B0LmlzX25vbmUgdW9wdFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF07XG4gICAgVW9wdC51bnNhZmVfdmFsdWUgdW9wdFxuOztcblxubGV0IG9uX3VwZGF0ZV9leG4gdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwib25fdXBkYXRlIGRpc2FsbG93ZWRcIiB0IFslc2V4cF9vZjogXyB0XVxuICB8IENyZWF0ZWQgfCBJbl91c2UgLT5cbiAgICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IENyZWF0ZWQgLT5cbiAgICAgICAoKiBXZSdsbCBidW1wIFtvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gd2hlbiBbdF0gaXMgYWN0dWFsbHkgYWRkZWQgdG9cbiAgICAgICAgICBbb2JzZXJ2aW5nLm9ic2VydmVyc10gYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgKClcbiAgICAgfCBJbl91c2UgLT5cbiAgICAgICBsZXQgb2JzZXJ2aW5nID0gdC5vYnNlcnZpbmcgaW5cbiAgICAgICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDEpXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9vYnNlcnZpbmcgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fb2JzZXJ2aW5nIGluXG4gIHQucHJldl9pbl9vYnNlcnZpbmcgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fb2JzZXJ2aW5nIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkucHJldl9pbl9vYnNlcnZpbmcgPC0gcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikubmV4dF9pbl9vYnNlcnZpbmcgPC0gbmV4dDtcbiAgbGV0IG9ic2VydmluZyA9IHQub2JzZXJ2aW5nIGluXG4gIGlmIHBoeXNfZXF1YWwgdCAoVW9wdC52YWx1ZV9leG4gb2JzZXJ2aW5nLm9ic2VydmVycykgdGhlbiBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIG5leHQ7XG4gIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzIC0gTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIFtdXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fYWxsIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9hbGwgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fYWxsIGluXG4gIHQucHJldl9pbl9hbGwgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fYWxsIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiBQYWNrZWRfLnNldF9wcmV2X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkgcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiBQYWNrZWRfLnNldF9uZXh0X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikgbmV4dFxuOztcblxubGV0IHVubGluayB0ID1cbiAgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQ7XG4gIHVubGlua19mcm9tX2FsbCB0XG47O1xuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIGluY2x1ZGUgUGFja2VkX1xuXG4gIGxldCBzZXhwX29mX3QgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID1cbiAgICBpbnRlcm5hbF9vYnNlcnZlciB8PiBbJXNleHBfb2Y6IF8gaW50ZXJuYWxfb2JzZXJ2ZXJdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAoVCB0KSA9IGludmFyaWFudCBpZ25vcmUgdFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaW52YXJpYW50X2EgIXRcbmxldCBvYnNlcnZpbmcgdCA9IEludGVybmFsX29ic2VydmVyLm9ic2VydmluZyAhdFxubGV0IHVzZV9pc19hbGxvd2VkIHQgPSBJbnRlcm5hbF9vYnNlcnZlci51c2VfaXNfYWxsb3dlZCAhdFxubGV0IHZhbHVlX2V4biB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIudmFsdWVfZXhuICF0XG5sZXQgaW5jcl9zdGF0ZSB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW5jcl9zdGF0ZSAhdFxuXG5sZXQgb25fdXBkYXRlX2V4biB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2V4biAhdCBvbl91cGRhdGVfaGFuZGxlclxuOztcbiIsIigqIFtTdGF0ZV0gZGVmaW5lcyB0aGUgZ2xvYmFsIHN0YXRlIG9mIHdoaWNoIHRoZXJlIGlzIG9uZSBpbnN0YW5jZSBmb3IgZWFjaCBjYWxsIHRvXG4gICBbSW5jcmVtZW50YWwuTWFrZV0uXG5cbiAgIFRoaXMgbW9kdWxlIGRvZXMgbm90IGhhdmUgYW4gbWxpIGJlY2F1c2UgaXQgd291bGQgZXNzZW50aWFsbHkgZHVwbGljYXRlXG4gICBbSW5jcmVtZW50YWwuU10sIGV4Y2VwdCBhZGRpbmcgYW4gZXh0cmEgW1N0YXRlLnRdIGFyZ3VtZW50IHRvIGZ1bmN0aW9ucy4gKilcblxub3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5cbnR5cGUgc3RhdHVzID0gVHlwZXMuU3RhdHVzLnQgPVxuICB8IFN0YWJpbGl6aW5nXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnNcbiAgfCBOb3Rfc3RhYmlsaXppbmdcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgTm9kZV91cGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG5tb2R1bGUgUnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5SdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgPSBUIDogJ2EgTm9kZS50ICogJ2EgTm9kZV91cGRhdGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCAoVCAobm9kZSwgX25vZGVfdXBkYXRlKSBhcyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+IE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPbmx5X2luX2RlYnVnID0gc3RydWN0XG4gICgqIEV4dHJhIHN0YXRlIGtlcHQgb25seSB3aGVuIFtkZWJ1Z10gZm9yIHRoZSBwdXJwb3NlIG9mIHdyaXRpbmcgYXNzZXJ0aW9ucy4gKilcbiAgdHlwZSB0ID0gVHlwZXMuT25seV9pbl9kZWJ1Zy50ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+Y3VycmVudGx5X3J1bm5pbmdfbm9kZTppZ25vcmVcbiAgICAgICAgfmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgeyBjdXJyZW50bHlfcnVubmluZ19ub2RlID0gTm9uZTsgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlID0gW10gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQYWNrZWRfd2Vha19oYXNodGJsID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLlBhY2tlZF93ZWFrX2hhc2h0YmwudCA9IFQgOiAoXywgXykgV2Vha19oYXNodGJsLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlN0YXRlLnQgPVxuICB7IG11dGFibGUgc3RhdHVzIDogc3RhdHVzXG4gIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgOyAoKiBbc3RhYmlsaXphdGlvbl9udW1dIHN0YXJ0cyBhdCB6ZXJvLCBhbmQgaXMgaW5jcmVtZW50ZWQgYXQgdGhlIGVuZCBvZiBlYWNoXG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBtdXRhYmxlIHN0YWJpbGl6YXRpb25fbnVtIDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgY3VycmVudF9zY29wZSA6IFNjb3BlLnRcbiAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwIDogQWRqdXN0X2hlaWdodHNfaGVhcC50XG4gIDsgKCogW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSBob2xkcyBub2RlcyB0aGF0IGhhdmUgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHNob3VsZCBiZVxuICAgICAgIGNvbnNpZGVyZWQgZm9yIGludmFsaWRhdGlvbi4gIEl0IGlzIG9ubHkgdXNlZCBkdXJpbmcgZ3JhcGggcmVzdHJ1Y3R1cmluZzpcbiAgICAgICBbaW52YWxpZGF0ZV9ub2RlXSBhbmQgW2FkZF9wYXJlbnRdLiAgT25jZSBhbiBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSBzdGFjaywgd2UgdGhlblxuICAgICAgIGl0ZXJhdGUgdW50aWwgaW52YWxpZGl0eSBoYXMgcHJvcGFnYXRlZCB0byBhbGwgYW5jZXN0b3JzIGFzIG5lY2Vzc2FyeSwgYWNjb3JkaW5nIHRvXG4gICAgICAgW05vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkXS4gKilcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtudW1fYWN0aXZlX29ic2VydmVyc10gaXMgdGhlIG51bWJlciBvZiBvYnNlcnZlcnMgd2hvc2Ugc3RhdGUgaXMgW0NyZWF0ZWRdIG9yXG4gICAgICAgW0luX3VzZV0uICopXG4gICAgbXV0YWJsZSBudW1fYWN0aXZlX29ic2VydmVycyA6IGludFxuICA7ICgqIFthbGxfb2JzZXJ2ZXJzXSBpcyB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGFsbCBvYnNlcnZlcnMgaW4gZWZmZWN0LCBvciB0aGF0IGhhdmVcbiAgICAgICBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3QgcmVjZW50IHN0YXJ0IG9mIGEgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlXG4gICAgICAgW3N0YXRlXSBhcyBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgbXV0YWJsZSBhbGxfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gIDsgKCogV2UgZW5xdWV1ZSBmaW5hbGl6ZWQgb2JzZXJ2ZXJzIGluIGEgdGhyZWFkLXNhZmUgcXVldWUsIGZvciBoYW5kbGluZyBkdXJpbmdcbiAgICAgICBzdGFiaWxpemF0aW9uLiAgV2UgdXNlIGEgdGhyZWFkLXNhZmUgcXVldWUgYmVjYXVzZSBPQ2FtbCBmaW5hbGl6ZXJzIGNhbiBydW4gaW4gYW55XG4gICAgICAgdGhyZWFkLiAqKVxuICAgIGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgKCogW25ld19vYnNlcnZlcnNdIGhvbGRzIG9ic2VydmVycyBjcmVhdGVkIHNpbmNlIHRoZSBtb3N0IHJlY2VudCBzdGFydCBvZiBhXG4gICAgICAgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlIFtzdGF0ZV0gYXMgW0NyZWF0ZWRdIG9yIFtVbmxpbmtlZF0uICBBdCB0aGUgc3RhcnQgb2ZcbiAgICAgICBzdGFiaWxpemF0aW9uLCB3ZSBsaW5rIGludG8gW2FsbF9vYnNlcnZlcnNdIGFsbCBvYnNlcnZlcnMgaW4gW25ld19vYnNlcnZlcnNdIHdob3NlXG4gICAgICAgc3RhdGUgaXMgW0NyZWF0ZWRdIGFuZCBhZGQgdGhlbSB0byB0aGUgW29ic2VydmVyc10gb2YgdGhlIG5vZGUgdGhleSBhcmUgb2JzZXJ2aW5nLlxuICAgICAgIFdlIHN0cnVjdHVyZSB0aGluZ3MgdGhpcyB3YXkgdG8gYWxsb3cgb2JzZXJ2ZXJzIHRvIGJlIGNyZWF0ZWQgZHVyaW5nIHN0YWJpbGl6YXRpb25cbiAgICAgICB3aGlsZSBydW5uaW5nIHVzZXIgY29kZSAoW21hcF0sIFtiaW5kXSwgZXRjKSwgYnV0IHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aCBub2Rlc1xuICAgICAgIGJlY29taW5nIG5lY2Vzc2FyeSBhbmQgdGhlIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIG5ld19vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzXSBob2xkcyBhbGwgb2JzZXJ2ZXJzIHRoYXQgaGF2ZSBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgc3RhcnQgb2YgYSBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmUgW3N0YXRlID0gRGlzYWxsb3dlZF0uICBBdCB0aGUgc3RhcnRcbiAgICAgICBvZiBzdGFiaWxpemF0aW9uLCB0aGVzZSBhcmUgdW5saW5rZWQgZnJvbSBbYWxsX29ic2VydmVyc10gYW5kIHRoZWlyIHN0YXRlIGlzXG4gICAgICAgY2hhbmdlZCB0byBbVW5saW5rZWRdLiAgV2Ugc3RydWN0dXJlIHRoaW5ncyB0aGlzIHdheSB0byBhbGxvdyB1c2VyIGNvZGUgcnVubmluZ1xuICAgICAgIGR1cmluZyBzdGFiaWxpemF0aW9uIHRvIGNhbGwgW2Rpc2FsbG93X2Z1dHVyZV91c2VdLCBidXQgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoXG4gICAgICAgbm9kZXMgYmVjb21pbmcgdW5uZWNlc3NhcnkgYW5kIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIGRpc2FsbG93ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFdlIGRlbGF5IGFsbCBbVmFyLnNldF0gY2FsbHMgdGhhdCBoYXBwZW4gZHVyaW5nIHN0YWJpbGl6YXRpb24gc28gdGhhdCB0aGV5IHRha2VcbiAgICAgICBlZmZlY3QgYWZ0ZXIgc3RhYmlsaXphdGlvbi4gIEFsbCB2YXJpYWJsZXMgc2V0IGR1cmluZyBzdGFiaWxpemF0aW9uIGFyZSBwdXNoZWQgb25cbiAgICAgICBbc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXSByYXRoZXIgdGhhbiBzZXR0aW5nIHRoZW0uICBUaGVuLCBhZnRlciB0aGUgZ3JhcGggaGFzXG4gICAgICAgc3RhYmlsaXplZCwgd2UgZG8gYWxsIHRoZSBzZXRzLCBzbyB0aGF0IHRoZXkgdGFrZSBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0gaGFzIGFsbCBub2RlcyB3aXRoIGhhbmRsZXJzIHRvIGNvbnNpZGVyIHJ1bm5pbmcgYXQgdGhlXG4gICAgICAgZW5kIG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICBBdCB0aGUgZW5kIG9mIHN0YWJpbGl6YXRpb24sIHdlIGNvbnNpZGVyIGVhY2ggbm9kZVxuICAgICAgIGluIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0sIGFuZCBpZiB3ZSBkZWNpZGUgdG8gcnVuIGl0cyBvbi11cGRhdGUgaGFuZGxlcnMsXG4gICAgICAgcHVzaCBpdCBvbiBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10uICBUaGVuLCBvbmNlIHdlJ3ZlIGNvbnNpZGVyZWQgYWxsIG5vZGVzIGluXG4gICAgICAgW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSwgd2UgaXRlcmF0ZSB0aHJvdWdoIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXSBhbmRcbiAgICAgICBhY3R1YWxseSBydW4gdGhlIGhhbmRsZXJzLlxuXG4gICAgICAgVGhlc2UgdHdvIHBhc3NlcyBhcmUgZXNzZW50aWFsIGZvciBjb3JyZWN0bmVzcy4gIER1cmluZyB0aGUgZmlyc3QgcGFzcywgd2UgaGF2ZW4ndFxuICAgICAgIHJ1biBhbnkgdXNlciBoYW5kbGVycywgc28gd2Uga25vdyB0aGF0IHRoZSBzdGF0ZSBpcyBleGFjdGx5IGFzIGl0IHdhcyB3aGVuXG4gICAgICAgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIEluIHBhcnRpY3VsYXIsIHdlIGtub3cgdGhhdCBpZiBhIG5vZGUgaXMgbmVjZXNzYXJ5LCB0aGVuXG4gICAgICAgaXQgaGFzIGEgc3RhYmxlIHZhbHVlOyBvbmNlIHVzZXIgaGFuZGxlcnMgcnVuLCB3ZSBkb24ndCBrbm93IHRoaXMuICBEdXJpbmcgdGhlXG4gICAgICAgc2Vjb25kIHBhc3MsIHVzZXIgaGFuZGxlcnMgY2FuIG1ha2UgY2FsbHMgdG8gYW55IGluY3JlbWVudGFsIGZ1bmN0aW9uIGV4Y2VwdCBmb3JcbiAgICAgICBbc3RhYmlsaXplXS4gIEluIHBhcnRpY3VsYXIsIHNvbWUgZnVuY3Rpb25zIHB1c2ggbm9kZXMgb25cbiAgICAgICBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAgQnV0IG5vIGZ1bmN0aW9ucyAoZXhjZXB0IGZvciBbc3RhYmlsaXplXSkgbW9kaWZ5XG4gICAgICAgW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdLiAqKVxuICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCBTdGFjay50XG4gIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gIDsgd2Vha19oYXNodGJscyA6IFBhY2tlZF93ZWFrX2hhc2h0YmwudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIDogYm9vbFxuICA7ICgqIFN0YXRzLiAgVGhlc2UgYXJlIGFsbCBpbmNyZW1lbnRlZCBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2UsIGFuZCBuZXZlciBkZWNyZW1lbnRlZC4gKilcbiAgICBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2NyZWF0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19pbnZhbGlkYXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbm1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DbG9jay50ID1cbiAgICB7ICgqIFdlIHVzZSBbdGltaW5nX3doZWVsXSBmb3IgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMuICBbbm93XSBpcyBhIHZhcmlhYmxlIGhvbGRpbmdcbiAgICAgICAgIHRoZSBjdXJyZW50IHRpbWUuICBbaGFuZGxlX2ZpcmVkXSBpcyB0aGUgY2xvc3VyZSBwYXNzZWQgdG9cbiAgICAgICAgIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10uICBJdCBsaW5rcyBhbGwgdGhlIGZpcmVkIGFsYXJtIHZhbHVlcyBpbnRvXG4gICAgICAgICBbZmlyZWRfYWxhcm1fdmFsdWVzXS4gIEFmdGVyIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10gcmV0dXJucywgaXQgdGhlblxuICAgICAgICAgd2Fsa3MgdGhyb3VnaCB0aGUgbGlua2VkIGxpc3QgYW5kIGFjdHVhbGx5IGZpcmVzIHRoZW0uICBUaGlzIHR3by1wYXNzIGFwcHJvYWNoIGlzXG4gICAgICAgICBuZWNlc3NhcnkgYmVjYXVzZSBvbmUgaXMgbm90IGFsbG93ZWQgdG8gY2FsbCBbVGltaW5nX3doZWVsXSBmdW5jdGlvbnMgZnJvbSB0aGVcbiAgICAgICAgIFtoYW5kbGVfZmlyZWRdIHRoYXQgb25lIHBhc3NlcyB0byBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgdGltaW5nX3doZWVsIDogQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbm93IDogVGltZV9ucy50IFZhci50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBBbGFybS50IC0+IHVuaXRcbiAgICA7IG11dGFibGUgZmlyZWRfYWxhcm1fdmFsdWVzIDogQWxhcm1fdmFsdWUudCBVb3B0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bm93OlxuICAgICAgICAgIChjaGVjayAoZnVuIChub3cgOiBfIFZhci50KSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy5lcXVhbCBub3cudmFsdWUgKFRpbWluZ193aGVlbC5ub3cgdC50aW1pbmdfd2hlZWwpKSkpXG4gICAgICAgIH5oYW5kbGVfZmlyZWQ6aWdub3JlXG4gICAgICAgIH5maXJlZF9hbGFybV92YWx1ZXM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyZWRfYWxhcm1fdmFsdWVzIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIGZpcmVkX2FsYXJtX3ZhbHVlcykpKVxuICAgICAgICB+dGltaW5nX3doZWVsOihjaGVjayAoVGltaW5nX3doZWVsLmludmFyaWFudCBBbGFybV92YWx1ZS5pbnZhcmlhbnQpKSlcbiAgOztcblxuICBsZXQgaW5jcl9zdGF0ZSB0ID0gVmFyLmluY3Jfc3RhdGUgdC5ub3dcbmVuZFxuXG5sZXQgbm93IChjbG9jayA6IENsb2NrLnQpID0gY2xvY2subm93LnZhbHVlXG5sZXQgdGltaW5nX3doZWVsX2xlbmd0aCAoY2xvY2sgOiBDbG9jay50KSA9IFRpbWluZ193aGVlbC5sZW5ndGggY2xvY2sudGltaW5nX3doZWVsXG5sZXQgbnVtX3N0YWJpbGl6ZXMgdCA9IFN0YWJpbGl6YXRpb25fbnVtLnRvX2ludCB0LnN0YWJpbGl6YXRpb25fbnVtXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbmxldCBtYXhfaGVpZ2h0X3NlZW4gdCA9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuXG5sZXQgaXRlcl9vYnNlcnZlcnMgdCB+ZiA9XG4gIGxldCByID0gcmVmIHQuYWxsX29ic2VydmVycyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLm5leHRfaW5fYWxsIG9ic2VydmVyO1xuICAgIGYgb2JzZXJ2ZXJcbiAgZG9uZVxuOztcblxubGV0IGRpcmVjdGx5X29ic2VydmVkIHQgPVxuICBsZXQgciA6IE5vZGUuUGFja2VkLnQgbGlzdCByZWYgPSByZWYgW10gaW5cbiAgaXRlcl9vYnNlcnZlcnMgdCB+ZjooZnVuIChUIGludGVybmFsX29ic2VydmVyKSAtPlxuICAgIHIgOj0gVCBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgOjogIXIpO1xuICAhclxuOztcblxubGV0IHNhdmVfZG90IHQgb3V0ID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3Qgb3V0IChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IHNhdmVfZG90X3RvX2ZpbGUgdCBmaWxlID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZiA9IE5vZGUuUGFja2VkLml0ZXJfZGVzY2VuZGFudHMgKGRpcmVjdGx5X29ic2VydmVkIHQpIH5mXG5cbm1vZHVsZSBTdGF0cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWF4X251bV9wYXJlbnRzIDogaW50XG4gICAgOyBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzIDogKGludCAqIFBlcmNlbnQudCkgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5sZXQgc3RhdHMgdCA9XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSByZWYgKC0xKSBpblxuICBsZXQgbnVtX25lY2Vzc2FyeV9ub2RlcyA9IHJlZiAwIGluXG4gIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgaW5jciBudW1fbmVjZXNzYXJ5X25vZGVzO1xuICAgIG1heF9udW1fcGFyZW50cyA6PSBJbnQubWF4ICFtYXhfbnVtX3BhcmVudHMgbm9kZS5udW1fcGFyZW50cyk7XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSAhbWF4X251bV9wYXJlbnRzIGluXG4gIGxldCBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMgPSBBcnJheS5jcmVhdGUgfmxlbjoobWF4X251bV9wYXJlbnRzICsgMSkgMCBpblxuICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgIGxldCBudW1fcGFyZW50cyA9IG5vZGUubnVtX3BhcmVudHMgaW5cbiAgICBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSA8LSBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSArIDEpO1xuICBsZXQgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyA9XG4gICAgQXJyYXkuZm9sZGkgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzIH5pbml0OltdIH5mOihmdW4gaSBhYyBudW1fbm9kZXMgLT5cbiAgICAgIGlmIG51bV9ub2RlcyA9IDBcbiAgICAgIHRoZW4gYWNcbiAgICAgIGVsc2UgKGksIFBlcmNlbnQub2ZfbXVsdCAoZmxvYXQgbnVtX25vZGVzIC8uIGZsb2F0ICFudW1fbmVjZXNzYXJ5X25vZGVzKSkgOjogYWMpXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgeyBTdGF0cy5tYXhfbnVtX3BhcmVudHM7IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgfVxuOztcblxubGV0IGFtX3N0YWJpbGl6aW5nIHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyAtPiB0cnVlXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+IGZhbHNlXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBSYWlzZWRfZXhuLnJlcmFpc2Vfd2l0aF9tZXNzYWdlXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBcImNhbm5vdCBjYWxsIGFtX3N0YWJpbGl6aW5nIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG47O1xuXG5sZXQgaW52YXJpYW50IHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gKClcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICAgICAgKG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT5cbiAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgIFwibWVtYmVyIG9mIGFsbF9vYnNlcnZlcnMgd2l0aCB1bmV4cGVjdGVkIHN0YXRlXCJcbiAgICAgICAgICAgICBpbnRlcm5hbF9vYnNlcnZlclxuICAgICAgICAgICAgIFslc2V4cF9vZjogXyBJbnRlcm5hbF9vYnNlcnZlci50XSk7XG4gICAgICAgIEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpZ25vcmUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoYW1fc3RhYmlsaXppbmcgdCkgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLm9sZF92YWx1ZV9vcHQpO1xuICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcCkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgID0gUmVjb21wdXRlX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXApO1xuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfnN0YXR1czppZ25vcmVcbiAgICAgICAgfmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHM6aWdub3JlXG4gICAgICAgIH5zdGFiaWxpemF0aW9uX251bTooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgICB+Y3VycmVudF9zY29wZTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X3Njb3BlIC0+IGFzc2VydCAocGh5c19lcXVhbCBjdXJyZW50X3Njb3BlIFNjb3BlLnRvcCkpKVxuICAgICAgICB+cmVjb21wdXRlX2hlYXA6KGNoZWNrIFJlY29tcHV0ZV9oZWFwLmludmFyaWFudClcbiAgICAgICAgfmFkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICAgIGFzc2VydCAoQWRqdXN0X2hlaWdodHNfaGVhcC5sZW5ndGggYWRqdXN0X2hlaWdodHNfaGVhcCA9IDApO1xuICAgICAgICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuaW52YXJpYW50IGFkanVzdF9oZWlnaHRzX2hlYXApKVxuICAgICAgICB+cHJvcGFnYXRlX2ludmFsaWRpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gcHJvcGFnYXRlX2ludmFsaWRpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHByb3BhZ2F0ZV9pbnZhbGlkaXR5KSkpXG4gICAgICAgIH5udW1fYWN0aXZlX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fYWN0aXZlX29ic2VydmVycyAtPiBhc3NlcnQgKG51bV9hY3RpdmVfb2JzZXJ2ZXJzID49IDApKSlcbiAgICAgICAgfmFsbF9vYnNlcnZlcnM6aWdub3JlXG4gICAgICAgIH5maW5hbGl6ZWRfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+bmV3X29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgICgqIFdoZW4gYW4gb2JzZXJ2ZXIgaXMgYWRkZWQgdG8gW25ld19vYnNlcnZlcnNdLCBpdCBoYXMgW3N0YXRlID0gQ3JlYXRlZF0uXG4gICAgICAgICAgICAgICAgICAgVGhlIG9ubHkgcG9zc2libGUgdHJhbnNpdGlvbnMgZnJvbSB0aGVyZSBhcmUgdG8gW1VubGlua2VkXSBvciB0b1xuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdLCB3aGljaCBhbHNvIHJlbW92ZXMgaXQgZnJvbSBbbmV3X29ic2VydmVyc10sIG5ldmVyIHRvIGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgICAgYWdhaW4uICBUaHVzIGl0IGlzIGltcG9zc2libGUgZm9yIGFuIG9ic2VydmVyIGluIFtuZXdfb2JzZXJ2ZXJzXSB0byBiZVxuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5kaXNhbGxvd2VkX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgICAgfnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbjpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gLT5cbiAgICAgICAgICAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbilcbiAgICAgICAgICAgICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBTdGFjay5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgICAgKGZ1biAoVmFyLlBhY2tlZC5UIHZhcikgLT5cbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgICAgICAgICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgIH5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjooY2hlY2sgKFN0YWNrLmludmFyaWFudCBOb2RlLlBhY2tlZC5pbnZhcmlhbnQpKVxuICAgICAgICB+cnVuX29uX3VwZGF0ZV9oYW5kbGVyczooY2hlY2sgKFN0YWNrLmludmFyaWFudCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLmludmFyaWFudCkpXG4gICAgICAgIH5vbmx5X2luX2RlYnVnOihjaGVjayBPbmx5X2luX2RlYnVnLmludmFyaWFudClcbiAgICAgICAgfndlYWtfaGFzaHRibHM6aWdub3JlXG4gICAgICAgIH5rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV9uZWNlc3Nhcnk6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NoYW5nZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfY3JlYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19pbnZhbGlkYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQ6aWdub3JlXG4gICAgICAgIH5udW1fdmFyX3NldHM6aWdub3JlKVxuOztcblxubGV0IGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZSB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICBpZiBub3QgYWxsb3dfaW5fdXBkYXRlX2hhbmRsZXJcbiAgICB0aGVuIChcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgb24tdXBkYXRlIGhhbmRsZXJzXCIgbmFtZSlcbiAgICAgICAgYmFja3RyYWNlXG4gICAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdKVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgLS0gc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCIgbmFtZSlcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgc3RhYmlsaXphdGlvblwiIG5hbWUpXG4gICAgICBiYWNrdHJhY2VcbiAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdXG47O1xuXG5sZXQgc2V0X2hlaWdodCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgQWRqdXN0X2hlaWdodHNfaGVhcC5zZXRfaGVpZ2h0IHQuYWRqdXN0X2hlaWdodHNfaGVhcCBub2RlIGhlaWdodFxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBoZWlnaHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgaGVpZ2h0O1xuICBSZWNvbXB1dGVfaGVhcC5zZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXAgaGVpZ2h0XG47O1xuXG5sZXQgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBub3Qgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvblxuICB0aGVuIChcbiAgICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIHRydWU7XG4gICAgU3RhY2sucHVzaCB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIChUIG5vZGUpKVxuOztcblxubGV0IHJlYyByZW1vdmVfY2hpbGRyZW4gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gcGFyZW50IC0+XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gcGFyZW50IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgcmVtb3ZlX2NoaWxkIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleClcblxuYW5kIHJlbW92ZV9jaGlsZCA6IHR5cGUgYSBiLiBjaGlsZDpiIE5vZGUudCAtPiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGNoaWxkXG5cbmFuZCBjaGVja19pZl91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+IGlmIG5vdCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSkgdGhlbiBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZVxuXG5hbmQgYmVjYW1lX3VubmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgbm9kZS5oZWlnaHQgPC0gLTE7XG4gIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBVbm9yZGVyZWRfYXJyYXlfZm9sZC5mb3JjZV9mdWxsX2NvbXB1dGUgdVxuICAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6ZmFsc2VcbiAgIHwgXyAtPiAoKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpO1xuICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtIChjbG9jayA6IENsb2NrLnQpIGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbiAgdGhlbiBUaW1pbmdfd2hlZWwucmVtb3ZlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybVxuOztcblxuKCogQW4gaW52YWxpZCBub2RlIGlzIG5vZGUgd2hvc2Uga2luZCBpcyBbSW52YWxpZF0uICBBIG5vZGUncyBraW5kIGlzIHNldCB0byBbSW52YWxpZF1cbiAgIHdoZW4gdGhlIGxocyBvZiBpdHMgc2NvcGUgY2hhbmdlcywgb3Igb25lIGlmIGl0cyBjaGlsZHJlbiBwcm9wYWdhdGUgdGhlIGludmFsaWRpdHlcbiAgIHVwd2FyZCAoc2VlIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0gdG8gc2VlIGluIHdoaWNoIGNhc2UgaW52YWxpZGl0eSBwcm9wYWdhdGlvblxuICAgc3RvcHMpLiAgSW52YWxpZGF0aW5nIGEgbm9kZSBkaXNjb25uZWN0cyBpdCBmcm9tIGl0cyBjaGlsZHJlbiwgd2hpY2ggbWVhbnM6XG5cbiAgIDEuIGFuIGludmFsaWQgbm9kZSBjYW5ub3QgZW5kIHVwIG9uIHRoZSBzY2hlZHVsZXIgKGlmIGl0IGlzIG9uIHRoZSBzY2hlZHVsZXIgd2hlblxuICAgaXQgaXMgaW52YWxpZGF0ZWQsIGl0IGlzIHJlbW92ZWQpXG4gICAyLiBhbiBpbnZhbGlkIG5vZGUgZG9lc24ndCBtYWtlIGl0cyBjaGlsZHJlbiBuZWNlc3NhcnkgYW55bW9yZS5cblxuICAgSW52YWxpZCBub2RlcyB1c3VhbGx5IGhhdmUgbm8gcGFyZW50cywgYmVjYXVzZSB0aGUgdXB3YXJkIGludmFsaWRpdHkgcHJvcGFnYXRpb24gbWVhbnNcbiAgIHRoYXQgdGhlaXIgcGFyZW50cyB3aWxsIHRoZW1zZWx2ZXMgYmVjb21lIGludmFsaWQgYW5kIGRpc2Nvbm5lY3QgZnJvbSB0aGVpciBjaGlsZHJlbi5cbiAgIEhvd2V2ZXIsIFtpZl0sIFtqb2luXSBvciBbYmluZF0gYXJlIG5vdCBpbnZhbGlkYXRlZCBieSB0aGUgdXB3YXJkIHByb3BhZ2F0aW9uLCBzbyBhblxuICAgaW52YWxpZCBub2RlIGNhbiBzdGlsbCBoYXZlIHBhcmVudHMuICBJbnZhbGlkIG5vZGVzIGNhbiBiZSBuZWNlc3NhcnksIGluIHRoZSBjYXNlIHdoZXJlXG4gICB0aGV5IGhhdmUgcGFyZW50cywgYW5kIGFsc28gd2hlbiB0aGV5IGFyZSBvYnNlcnZlZC5cblxuICAgVGhlIHVwd2FyZCBwcm9wYWdhdGlvbiBvZiBpbnZhbGlkaXR5IGhhcHBlbnMgYm90aCB3aGVuIGEgbm9kZSBiZWNvbWVzIGludmFsaWQsIGFuZCB3aGVuXG4gICB0cnlpbmcgdG8gYWRkIGFuIGVkZ2UgZnJvbSBhbiBpbnZhbGlkIGNoaWxkIG5vZGUgdG8gYW5vdGhlciBub2RlLiAgQmVjYXVzZSBpbnZhbGlkaXR5XG4gICBpcyBvbmx5IHByb3BhZ2F0ZWQgdXB3YXJkLCBhbmQgYmVjYXVzZSB0aGUgcmhzIG9mIGEgYmluZCBpcyBpbnZhbGlkYXRlZCBiZWZvcmUgaXRcbiAgIGV4ZWN1dGVzLCBhIG5vZGUgY2Fubm90IGJlIGJvdGggY29tcHV0ZWQgYW5kIGludmFsaWRhdGVkIGluIHRoZSBzYW1lIHN0YWJpbGl6YXRpb24uXG5cbiAgIFdoZW4gaW52YWxpZGF0aW5nLCB3ZSBjYW4ndCBhc3N1bWUgbXVjaCBhYm91dCB0aGUgbm9kZXMgd2UgdmlzaXQuICBXZSBjYW5ub3QgYXNzdW1lXG4gICB0aGF0IG5vZGVzIGFyZSB2YWxpZCAodGhlIHJocyBjYW4gY29udGFpbiBwcmV2aW91c2x5IGludmFsaWRhdGVkIG5vZGVzKSwgb3IgdGhhdCBub2Rlc1xuICAgYXJlIHVubmVjZXNzYXJ5IChub2RlcyBjYW4gYmUgbWFkZSBuZWNlc3Nhcnkgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZWlyIGNvbnRhaW5pbmdcbiAgIGJpbmRzKS4gKilcblxubGV0IHJlYyBpbnZhbGlkYXRlX25vZGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGVcbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCA8LSB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCArIDE7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAoKiBUaGUgbm9kZSBkb2Vzbid0IGhhdmUgY2hpbGRyZW4gYW55bW9yZSwgc28gd2UgY2FuIGxvd2VyIGl0cyBoZWlnaHQgYXMgbXVjaCBhc1xuICAgICAgICAgcG9zc2libGUsIHRvIG9uZSBncmVhdGVyIHRoYW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgQWxzbywgYmVjYXVzZSB3ZVxuICAgICAgICAgYXJlIGxvd2VyaW5nIHRoZSBoZWlnaHQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0IGFueSBvZiBpdHMgYW5jZXN0b3JzJyBoZWlnaHRzLlxuICAgICAgICAgV2UgY291bGQgbGVhdmUgdGhlIGhlaWdodCBhbG9uZSwgYnV0IHdlIG1heSBhcyB3ZWxsIGxvd2VyIGl0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlIHRvIGF2b2lkIG1ha2luZyB0aGUgaGVpZ2h0cyBvZiBhbnkgZnV0dXJlIGFuY2VzdG9ycyB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICBsYXJnZS4gKilcbiAgICAgIG5vZGUuaGVpZ2h0IDwtIFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgICAoKiBXZSBkb24ndCBzZXQgW25vZGUuY3JlYXRlZF9pbl0gb3IgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdOyB3ZSBsZWF2ZSBbbm9kZV1cbiAgICAgICBpbiB0aGUgc2NvcGUgaXQgd2FzIGNyZWF0ZWQgaW4uICBJZiB0aGF0IHNjb3BlIGlzIGV2ZXIgaW52YWxpZGF0ZWQsIHRoZW4gdGhhdFxuICAgICAgIHdpbGwgY2xlYXIgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdICopXG4gICAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgIHwgQXQgYXQgLT4gcmVtb3ZlX2FsYXJtIGF0LmNsb2NrIGF0LmFsYXJtXG4gICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiByZW1vdmVfYWxhcm0gYXRfaW50ZXJ2YWxzLmNsb2NrIGF0X2ludGVydmFscy5hbGFybVxuICAgICB8IEJpbmRfbWFpbiBiaW5kIC0+IGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgYWxhcm07IGNsb2NrOyBfIH0gLT4gcmVtb3ZlX2FsYXJtIGNsb2NrIGFsYXJtXG4gICAgIHwgXyAtPiAoKSk7XG4gICAgTm9kZS5zZXRfa2luZCBub2RlIEludmFsaWQ7XG4gICAgKCogSWYgd2UgY2FsbGVkIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gcmlnaHQgYXdheSBvbiB0aGUgcGFyZW50cywgd2Ugd291bGQgZ2V0IGludG9cbiAgICAgICB0cm91YmxlLiAgVGhlIHBhcmVudCB3b3VsZCBkaXNjb25uZWN0IGl0c2VsZiBmcm9tIHRoZSBjdXJyZW50IG5vZGUsIHRodXNcbiAgICAgICBtb2RpZnlpbmcgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgRXZlbiBpZiB3ZSBtYWRlIGEgc3BlY2lhbCBjYXNlLCBpdFxuICAgICAgIHN0aWxsIHdvdWxkbid0IGJlIGVub3VnaCB0byBoYW5kbGUgb3RoZXIgY2FzZXMgd2hlcmUgdGhlIGxpc3Qgb2YgcGFyZW50cyBpc1xuICAgICAgIG1vZGlmaWVkIChlLmcuIHdoZW4gW2xoc10gaXMgaW52YWxpZGF0ZWQgaW4gdGhlIGV4YW1wbGUgaW4gdGhlIGNvbW1lbnQgYWJvdXRcbiAgICAgICBbY2FuX3JlY29tcHV0ZV9ub3ddIGZhciBiZWxvdykuICopXG4gICAgZm9yIGluZGV4ID0gMCB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChOb2RlLmdldF9wYXJlbnQgbm9kZSB+aW5kZXgpXG4gICAgZG9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuXG5hbmQgaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBub2RlID1cbiAgbGV0IHIgPSByZWYgbm9kZSBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxuKCogV2hlbiBbbm90IHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc10gYW5kIGEgYmluZCdzIGxocyBjaGFuZ2VzLCB3ZSBtb3ZlXG4gICBub2RlcyBjcmVhdGVkIG9uIHRoZSBiaW5kJ3MgcmhzIHVwIHRvIGl0cyBwYXJlbnQgYmluZCwgYXMgb3Bwb3NlZCB0byBbU2NvcGUuVG9wXS4gIFRoaXNcbiAgIG1haW50YWlucyB0aGVpciBkZXBlbmRlbmNlIG9uIHZhbGlkIGJpbmQgbGVmdC1oYW5kIHNpZGVzLCBhbmQga2VlcHMgdGhlbSBoaWdoZXIgaW4gdGhlXG4gICBncmFwaC4gIFRoaXMgaW4gdHVybiBtZWFucyB0aGF0IHdlIHdpbGwgY29udGludWUgdG8gY29tcHV0ZSB0aG9zZSBub2RlcyBhZnRlciB0aGVcbiAgIHBhcmVudCBiaW5kJ3MgbGhzLCB3aGljaCBnaXZlcyB0aGVtIG1vcmUgb2YgYSBjaGFuY2UgdG8gYmVjb21lIHVubmVjZXNzYXJ5IGFuZCBub3QgYmVcbiAgIGNvbXB1dGVkIHNob3VsZCB0aGUgcGFyZW50IGJpbmQncyBsaHMgY2hhbmdlLiAqKVxubGV0IHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgX3QgKGZpcnN0X25vZGVfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXdfc2NvcGUgPVxuICBsZXQgciA9IHJlZiBmaXJzdF9ub2RlX29uX3JocyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBub2RlX29uX3Jocy5jcmVhdGVkX2luIDwtIG5ld19zY29wZTtcbiAgICBTY29wZS5hZGRfbm9kZSBuZXdfc2NvcGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxubGV0IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQgPVxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucHJvcGFnYXRlX2ludmFsaWRpdHkpIGRvXG4gICAgbGV0IChUIG5vZGUpID0gU3RhY2sucG9wX2V4biB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IGluXG4gICAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gICAgdGhlblxuICAgICAgaWYgTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWQgbm9kZVxuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGUgbm9kZVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIG5vZGUgaXMgbmVjZXNzYXJ5LiBUaGlzIGlzIGJlY2F1c2UgY2hpbGRyZW4gY2FuIG9ubHkgcG9pbnQgdG8gbmVjZXNzYXJ5XG4gICAgICAgICAgICAgcGFyZW50c1xuICAgICAgICAgICAtIG5vZGUgaXMgc3RhbGUuIFRoaXMgaXMgYmVjYXVzZTogRm9yIGJpbmQsIGlmLCBqb2luLCB0aGlzIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIGVpdGhlciB0aGUgaW52YWxpZGF0aW9uIGlzIGNhdXNlZCBieSB0aGUgbGhzIGNoYW5naW5nIChpbiB3aGljaCBjYXNlIHRoZVxuICAgICAgICAgICAgIGxocy1jaGFuZ2Ugbm9kZSBiZWluZyBuZXdlciBtYWtlcyB1cyBzdGFsZSkuXG4gICAgICAgICAgIC0gb3IgYSBjaGlsZCBiZWNhbWUgaW52YWxpZCB0aGlzIHN0YWJpbGl6YXRpb24gY3ljbGUsIGluIHdoaWNoIGNhc2UgaXQgaGFzXG4gICAgICAgICAgICAgdC5jaGFuZ2VkX2F0IG9mIFt0LnN0YWJpbGl6YXRpb25fbnVtXSwgYW5kIHNvIFtub2RlXSBpcyBzdGFsZVxuICAgICAgICAgICAtIG9yIFtub2RlXSBqdXN0IGJlY2FtZSBuZWNlc3NhcnkgYW5kIHRyaWVkIGNvbm5lY3RpbmcgdG8gYW4gYWxyZWFkeSBpbnZhbGlkXG4gICAgICAgICAgICAgY2hpbGQuIEluIHRoYXQgY2FzZSwgW2NoaWxkLmNoYW5nZWRfYXQgPiBub2RlLnJlY29tcHV0ZWRfYXRdIGZvciB0aGF0IGNoaWxkLFxuICAgICAgICAgICAgIGJlY2F1c2UgaWYgd2UgaGFkIGJlZW4gcmVjb21wdXRlZCB3aGVuIHRoYXQgY2hpbGQgY2hhbmdlZCwgd2Ugd291bGQgaGF2ZSBiZWVuXG4gICAgICAgICAgICAgbWFkZSBpbnZhbGlkIGJhY2sgdGhlbi4gIEZvciBleHBlcnQgbm9kZXMsIHRoZSBhcmd1bWVudCBpcyB0aGUgc2FtZSwgZXhjZXB0XG4gICAgICAgICAgICAgdGhhdCBpbnN0ZWFkIG9mIGxocy1jaGFuZ2Ugbm9kZXMgbWFrZSB0aGUgZXhwZXJ0IG5vZGVzIHN0YWxlLCBpdCdzIG1hZGUgc3RhbGVcbiAgICAgICAgICAgICBleHBsaWNpdGVseSB3aGVuIGFkZGluZyBvciByZW1vdmluZyBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgICgqIElmIG11bHRpcGxlIGNoaWxkcmVuIGFyZSBpbnZhbGlkLCB0aGV5IHdpbGwgcHVzaCB1cyBhcyBtYW55IHRpbWVzIG9uIHRoZVxuICAgICAgICAgICAgICBwcm9wYWdhdGlvbiBzdGFjaywgc28gd2UgY291bnQgdGhlbSByaWdodC4gKilcbiAgICAgICAgICAgRXhwZXJ0LmluY3JfaW52YWxpZF9jaGlsZHJlbiBleHBlcnRcbiAgICAgICAgIHwga2luZCAtPlxuICAgICAgICAgICBpZiBkZWJ1Z1xuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICB8IEJpbmRfbWFpbiBfIHwgSWZfdGhlbl9lbHNlIF8gfCBKb2luX21haW4gXyAtPiAoKVxuICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlICgqIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gYXJlIG5ldmVyIHB1c2hlZCBvbiB0aGUgc3RhY2sgKikpKTtcbiAgICAgICAgKCogV2UgZG8gbm90IGNoZWNrIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGhlcmUsIGJlY2F1c2UgaXQgc2hvdWxkIGJlXG4gICAgICAgICAgIHRydWUsIGFuZCBiZWNhdXNlIGNvbXB1dGluZyBpdCB0YWtlcyBPKG51bWJlciBvZiBjaGlsZHJlbiksIG5vZGUgY2FuIGJlIHB1c2hlZFxuICAgICAgICAgICBvbiB0aGUgc3RhY2sgb25jZSBwZXIgY2hpbGQsIGFuZCBleHBlcnQgbm9kZXMgY2FuIGhhdmUgbG90cyBvZiBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgZG9uZVxuOztcblxuKCogW2FkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB0IH5jaGlsZCB+cGFyZW50XSBhZGRzIFtwYXJlbnRdIGFzIGEgcGFyZW50IG9mXG4gICBbY2hpbGRdLCBhbmQgbWFrZXMgW2NoaWxkXSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBuZWNlc3NhcnksIGVuc3VyaW5nIHRoZWlyIGhlaWdodHNcbiAgIGFyZSBhY2N1cmF0ZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSBhYm91dCB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBbY2hpbGRdIGFuZCBbcGFyZW50XVxuICAgdGhvdWdoLiAqKVxubGV0IHJlYyBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHNcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSBOb2RlLnQgLT4gcGFyZW50OmIgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgbGV0IHQgPSBjaGlsZC5zdGF0ZSBpblxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IGNoaWxkIGluXG4gIE5vZGUuYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGlmIG5vdCAoTm9kZS5pc192YWxpZCBjaGlsZCkgdGhlbiBTdGFjay5wdXNoIHQucHJvcGFnYXRlX2ludmFsaWRpdHkgKFQgcGFyZW50KTtcbiAgaWYgbm90IHdhc19uZWNlc3NhcnkgdGhlbiBiZWNhbWVfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIGUgfmNoaWxkX2luZGV4XG4gIHwgXyAtPiAoKVxuXG5hbmQgYmVjYW1lX25lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gICgqIFtTY29wZS5pc19uZWNlc3Nhcnkgbm9kZS5jcmVhdGVkX2luXSBpcyB0cnVlIChhc3N1bWluZyB0aGUgc2NvcGUgaXRzZWxmIGlzIHZhbGlkKVxuICAgICBiZWNhdXNlIFtOb2RlLml0ZXJfY2hpbGRyZW5dIGJlbG93IGZpcnN0IHZpc2l0cyB0aGUgbGhzLWNoYW5nZSBvZiBiaW5kIG5vZGVzIGFuZFxuICAgICB0aGVuIHRoZSByaHMuICopXG4gIGlmIE5vZGUuaXNfdmFsaWQgbm9kZSAmJiBub3QgKFNjb3BlLmlzX25lY2Vzc2FyeSBub2RlLmNyZWF0ZWRfaW4pXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVHJ5aW5nIHRvIG1ha2UgYSBub2RlIG5lY2Vzc2FyeSB3aG9zZSBkZWZpbmluZyBiaW5kIGlzIG5vdCBuZWNlc3NhcnlcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDwtIHQubnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgKCogU2luY2UgW25vZGVdIGJlY2FtZSBuZWNlc3NhcnksIHRvIHJlc3RvcmUgdGhlIGludmFyaWFudCwgd2UgbmVlZCB0bzpcblxuICAgICAtIGFkZCBwYXJlbnQgcG9pbnRlcnMgdG8gW25vZGVdIGZyb20gaXRzIGNoaWxkcmVuLlxuICAgICAtIHNldCBbbm9kZV0ncyBoZWlnaHQuXG4gICAgIC0gYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAsIGlmIG5lY2Vzc2FyeS4gKilcbiAgc2V0X2hlaWdodCBub2RlIChTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gbm9kZSB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDtcbiAgICAoKiBOb3cgdGhhdCBjaGlsZCBpcyBuZWNlc3NhcnksIGl0IHNob3VsZCBoYXZlIGEgdmFsaWQgaGVpZ2h0LiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZC5oZWlnaHQgPj0gMCk7XG4gICAgaWYgY2hpbGQuaGVpZ2h0ID49IG5vZGUuaGVpZ2h0IHRoZW4gc2V0X2hlaWdodCBub2RlIChjaGlsZC5oZWlnaHQgKyAxKSk7XG4gICgqIE5vdyB0aGF0IHRoZSBoZWlnaHQgaXMgY29ycmVjdCwgbWF5YmUgYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAuICBbbm9kZV1cbiAgICAganVzdCBiZWNhbWUgbmVjZXNzYXJ5LCBzbyBpdCBjYW4ndCBoYXZlIGJlZW4gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgU2luY2UgW25vZGVdXG4gICAgIGlzIG5lY2Vzc2FyeSwgd2Ugc2hvdWxkIGFkZCBpdCB0byB0aGUgcmVjb21wdXRlIGhlYXAgaWZmIGl0IGlzIHN0YWxlLiAqKVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpO1xuICBpZiBOb2RlLmlzX3N0YWxlIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEV4cGVydCBwIC0+IEV4cGVydC5vYnNlcnZhYmlsaXR5X2NoYW5nZSBwIH5pc19ub3dfb2JzZXJ2YWJsZTp0cnVlXG4gIHwgXyAtPiAoKVxuOztcblxubGV0IGJlY2FtZV9uZWNlc3Nhcnkgbm9kZSA9XG4gIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZTtcbiAgcHJvcGFnYXRlX2ludmFsaWRpdHkgbm9kZS5zdGF0ZVxuOztcblxubGV0IGFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGxldCB0ID0gcGFyZW50LnN0YXRlIGluXG4gICgqIEluIHRoZSBjYXNlIHdoZW4gdGhlIGVkZ2UgYmVpbmcgYWRkZWQgY3JlYXRlcyBhIGN5Y2xlLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlXG4gICAgIHJlY3Vyc2lvbiBpbiBbYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzXSB0byByZWFjaCBbcGFyZW50XSBhcyBhIGRlc2NlbmRhbnRcbiAgICAgb2YgW2NoaWxkXS4gIEluIHRoYXQgY2FzZSwgdGhlIHJlY3Vyc2lvbiB0ZXJtaW5hdGVzLCBiZWNhdXNlIFtOb2RlLmlzX25lY2Vzc2FyeVxuICAgICBwYXJlbnRdLiAgV2UgdGhlbiByZXR1cm4gaGVyZSBhbmQgc3Vic2VxdWVudGx5IGRldGVjdCB0aGUgY3ljbGUgaW5cbiAgICAgW2FkanVzdF9oZWlnaHRzXS4gKilcbiAgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgKCogV2UgYWRqdXN0IGhlaWdodHMgc28gdGhhdCB3ZSBlbnN1cmUgdGhlcmUgYXJlIG5vIGN5Y2xlcyBiZWZvcmUgY2FsbGluZ1xuICAgICBbcHJvcGFnYXRlX2ludmFsaWRpdHldLiAqKVxuICBpZiBjaGlsZC5oZWlnaHQgPj0gcGFyZW50LmhlaWdodFxuICB0aGVuXG4gICAgQWRqdXN0X2hlaWdodHNfaGVhcC5hZGp1c3RfaGVpZ2h0c1xuICAgICAgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICB0LnJlY29tcHV0ZV9oZWFwXG4gICAgICB+Y2hpbGRcbiAgICAgIH5wYXJlbnQ7XG4gIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQ7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAoKiB3ZSBvbmx5IGFkZCBuZWNlc3NhcnkgcGFyZW50cyAqKVxuICBpZiAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpXG4gICYmIChTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHBhcmVudC5yZWNvbXB1dGVkX2F0XG4gICAgICB8fCBOb2RlLmVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50XG47O1xuXG5sZXQgcnVuX3dpdGhfc2NvcGUgdCBzY29wZSB+ZiA9XG4gIGxldCBzYXZlZCA9IHQuY3VycmVudF9zY29wZSBpblxuICB0LmN1cnJlbnRfc2NvcGUgPC0gc2NvcGU7XG4gIHRyeVxuICAgIGxldCB2ID0gZiAoKSBpblxuICAgIHQuY3VycmVudF9zY29wZSA8LSBzYXZlZDtcbiAgICB2XG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICB0LmN1cnJlbnRfc2NvcGUgPC0gc2F2ZWQ7XG4gICAgcmFpc2UgZXhuXG47O1xuXG5sZXQgd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYgPVxuICBpZiBub3QgKFNjb3BlLmlzX3ZhbGlkIHNjb3BlKVxuICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBydW4gd2l0aGluIGFuIGludmFsaWQgc2NvcGVcIiB0IFslc2V4cF9vZjogdF07XG4gIHJ1bl93aXRoX3Njb3BlIHQgc2NvcGUgfmZcbjs7XG5cbmxldCBjaGFuZ2VfY2hpbGRcbiAgOiB0eXBlIGEgYi5cbiAgICBwYXJlbnQ6YSBOb2RlLnRcbiAgICAtPiBvbGRfY2hpbGQ6YiBOb2RlLnQgVW9wdC50XG4gICAgLT4gbmV3X2NoaWxkOmIgTm9kZS50XG4gICAgLT4gY2hpbGRfaW5kZXg6aW50XG4gICAgLT4gdW5pdFxuICA9XG4gIGZ1biB+cGFyZW50IH5vbGRfY2hpbGQgfm5ld19jaGlsZCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF9jaGlsZFxuICB0aGVuIGFkZF9wYXJlbnQgfmNoaWxkOm5ld19jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleFxuICBlbHNlIChcbiAgICBsZXQgb2xkX2NoaWxkID0gVW9wdC51bnNhZmVfdmFsdWUgb2xkX2NoaWxkIGluXG4gICAgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9jaGlsZCBuZXdfY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSByZW1vdmUgW29sZF9jaGlsZF0gYmVmb3JlIGFkZGluZyBbbmV3X2NoaWxkXSwgYmVjYXVzZSB0aGV5IHNoYXJlIHRoZSBzYW1lXG4gICAgICAgICBjaGlsZCBpbmRleC4gKilcbiAgICAgIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQ6b2xkX2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAgICAgKCogV2UgZm9yY2UgW29sZF9jaGlsZF0gdG8gdGVtcG9yYXJpbHkgYmUgbmVjZXNzYXJ5IHNvIHRoYXQgW2FkZF9wYXJlbnRdIGNhbid0XG4gICAgICAgICBtaXN0YWtlbmx5IHRoaW5rIGl0IGlzIHVubmVjZXNzYXJ5IGFuZCB0cmFuc2l0aW9uIGl0IHRvIG5lY2Vzc2FyeSAod2hpY2ggd291bGRcbiAgICAgICAgIGFkZCBkdXBsaWNhdGUgZWRnZXMgYW5kIGJyZWFrIHRoaW5ncyBob3JyaWJseSkuICopXG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIHRydWU7XG4gICAgICBhZGRfcGFyZW50IH5jaGlsZDpuZXdfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIGZhbHNlO1xuICAgICAgKCogV2UgW2NoZWNrX2lmX3VubmVjZXNzYXJ5XSBhZnRlciBbYWRkX3BhcmVudF0sIHNvIHRoYXQgd2UgZG9uJ3QgdW5uZWNlc3NhcmlseVxuICAgICAgICAgdHJhbnNpdGlvbiBub2RlcyBmcm9tIG5lY2Vzc2FyeSB0byB1bm5lY2Vzc2FyeSBhbmQgdGhlbiBiYWNrIGFnYWluLiAqKVxuICAgICAgY2hlY2tfaWZfdW5uZWNlc3Nhcnkgb2xkX2NoaWxkKSlcbjs7XG5cbmxldCBhZGRfYWxhcm0gY2xvY2sgfmF0IGFsYXJtX3ZhbHVlID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICBUaW1pbmdfd2hlZWwuYWRkIGNsb2NrLnRpbWluZ193aGVlbCB+YXQgYWxhcm1fdmFsdWVcbjs7XG5cbmxldCByZWMgcmVjb21wdXRlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIFNvbWUgKFQgbm9kZSk7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gIHQubnVtX25vZGVzX3JlY29tcHV0ZWQgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZCArIDE7XG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoQXJyYXlfZm9sZC5jb21wdXRlIGFycmF5X2ZvbGQpXG4gIHwgQXQgeyBhdDsgY2xvY2s7IF8gfSAtPlxuICAgICgqIEl0IGlzIGEgYnVnIGlmIHdlIHRyeSB0byBjb21wdXRlIGFuIFtBdF0gbm9kZSBhZnRlciBbYXRdLiAgW2FkdmFuY2VfY2xvY2tdIHdhc1xuICAgICAgIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbQ29uc3RdIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBCZWZvcmVcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZVxuICAgICAgKHsgbWFpblxuICAgICAgIDsgZlxuICAgICAgIDsgbGhzXG4gICAgICAgOyByaHNfc2NvcGVcbiAgICAgICA7IHJocyA9IG9sZF9yaHNcbiAgICAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICA7IF9cbiAgICAgICB9IGFzIGJpbmQpIC0+XG4gICAgKCogV2UgY2xlYXIgW2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc10gc28gaXQgd2lsbCBob2xkIGp1c3QgdGhlIG5vZGVzIGNyZWF0ZWQgYnlcbiAgICAgICB0aGlzIGNhbGwgdG8gW2ZdLiAqKVxuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQubm9uZTtcbiAgICBsZXQgcmhzID0gcnVuX3dpdGhfc2NvcGUgdCByaHNfc2NvcGUgfmY6KGZ1biAoKSAtPiBmIChOb2RlLnZhbHVlX2V4biBsaHMpKSBpblxuICAgIGJpbmQucmhzIDwtIFVvcHQuc29tZSByaHM7XG4gICAgKCogQW50aWNpcGF0ZSB3aGF0IFttYXliZV9jaGFuZ2VfdmFsdWVdIHdpbGwgZG8sIHRvIG1ha2Ugc3VyZSBCaW5kX21haW4gaXMgc3RhbGVcbiAgICAgICByaWdodCBhd2F5LiBUaGlzIHdheSwgaWYgdGhlIG5ldyBjaGlsZCBpcyBpbnZhbGlkLCB3ZSdsbCBzYXRpc2Z5IHRoZSBpbnZhcmlhbnRcbiAgICAgICBzYXlpbmcgdGhhdCBbbmVlZHNfdG9fYmVfY29tcHV0ZWQgYmluZF9tYWluXSBpbiBbcHJvcGFnYXRlX2ludmFsaWRpdHldICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmJpbmRfcmhzX2NoaWxkX2luZGV4O1xuICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfcmhzXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSBpbnZhbGlkYXRlIGFmdGVyIFtjaGFuZ2VfY2hpbGRdLCBiZWNhdXNlIGludmFsaWRhdGlvbiBjaGFuZ2VzIHRoZSBba2luZF0gb2ZcbiAgICAgICAgIG5vZGVzIHRvIFtJbnZhbGlkXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBjYW4gbm8gbG9uZ2VyIHZpc2l0IHRoZWlyIGNoaWxkcmVuLlxuICAgICAgICAgQWxzbywgdGhlIFtvbGRfcmhzXSBub2RlcyBhcmUgdHlwaWNhbGx5IG1hZGUgdW5uZWNlc3NhcnkgYnkgW2NoYW5nZV9jaGlsZF0sIGFuZFxuICAgICAgICAgc28gYnkgaW52YWxpZGF0aW5nIGFmdGVyd2FyZHMsIHdlIHdpbGwgbm90IHdhc3RlIHRpbWUgYWRkaW5nIHRoZW0gdG8gdGhlXG4gICAgICAgICByZWNvbXB1dGUgaGVhcCBhbmQgdGhlbiByZW1vdmluZyB0aGVtLiAqKVxuICAgICAgaWYgdC5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgICB0aGVuIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgZWxzZVxuICAgICAgICByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgICAgdFxuICAgICAgICAgIG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICAgICB+bmV3X3Njb3BlOm1haW4uY3JlYXRlZF9pbjtcbiAgICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQpO1xuICAgICgqIFtub2RlXSB3YXMgdmFsaWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBbQmluZF9saHNfY2hhbmdlXSBicmFuY2gsIGFuZCBpbnZhbGlkYXRpb25cbiAgICAgICBvbmx5IHZpc2l0cyBoaWdoZXIgbm9kZXMsIHNvIFtub2RlXSBpcyBzdGlsbCB2YWxpZC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBub2RlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbWFpbiB7IHJoczsgXyB9IC0+IGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gcmhzKVxuICB8IENvbnN0IGEgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgYVxuICB8IEZyZWV6ZSB7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuOyBfIH0gLT5cbiAgICBsZXQgdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBjaGlsZCBpblxuICAgIGlmIG9ubHlfZnJlZXplX3doZW4gdmFsdWVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgTm9kZS5zZXRfa2luZCBub2RlIChDb25zdCB2YWx1ZSk7XG4gICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIHRoZW4gc2V0X2hlaWdodCBub2RlIDAgZWxzZSBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgdmFsdWVcbiAgfCBJZl90ZXN0X2NoYW5nZSAoeyBtYWluOyBjdXJyZW50X2JyYW5jaDsgdGVzdDsgdGhlbl87IGVsc2VfOyBfIH0gYXMgaWZfdGhlbl9lbHNlKSAtPlxuICAgIGxldCBkZXNpcmVkX2JyYW5jaCA9IGlmIE5vZGUudmFsdWVfZXhuIHRlc3QgdGhlbiB0aGVuXyBlbHNlIGVsc2VfIGluXG4gICAgaWZfdGhlbl9lbHNlLmN1cnJlbnRfYnJhbmNoIDwtIFVvcHQuc29tZSBkZXNpcmVkX2JyYW5jaDtcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6Y3VycmVudF9icmFuY2hcbiAgICAgIH5uZXdfY2hpbGQ6ZGVzaXJlZF9icmFuY2hcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmlmX2JyYW5jaF9jaGlsZF9pbmRleDtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IElmX3RoZW5fZWxzZSB7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIGN1cnJlbnRfYnJhbmNoKVxuICB8IEludmFsaWQgLT5cbiAgICAoKiBXZSBuZXZlciBoYXZlIGludmFsaWQgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwOyB0aGV5IGFyZSBuZXZlciBzdGFsZS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBKb2luX2xoc19jaGFuZ2UgKHsgbGhzOyBtYWluOyByaHMgPSBvbGRfcmhzOyBfIH0gYXMgam9pbikgLT5cbiAgICBsZXQgcmhzID0gTm9kZS52YWx1ZV9leG4gbGhzIGluXG4gICAgam9pbi5yaHMgPC0gVW9wdC5zb21lIHJocztcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmpvaW5fcmhzX2NoaWxkX2luZGV4O1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgSm9pbl9tYWluIHsgcmhzOyBfIH0gLT4gY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biByaHMpXG4gIHwgTWFwIChmLCBuMSkgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSlcbiAgfCBTbmFwc2hvdCB7IGF0OyBiZWZvcmU7IGNsb2NrOyBfIH0gLT5cbiAgICAoKiBJdCBpcyBhIGJ1ZyBpZiB3ZSB0cnkgdG8gY29tcHV0ZSBhIFtTbmFwc2hvdF0gYW5kIHRoZSBhbGFybSBzaG91bGQgaGF2ZSBmaXJlZC5cbiAgICAgICBbYWR2YW5jZV9jbG9ja10gd2FzIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbRnJlZXplXSBhdCB0aGUgYXBwcm9wcmlhdGVcbiAgICAgICB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBiZWZvcmVcbiAgfCBTdGVwX2Z1bmN0aW9uICh7IGNoaWxkOyBjbG9jazsgXyB9IGFzIHN0ZXBfZnVuY3Rpb25fbm9kZSkgLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGRcbiAgICB0aGVuIChcbiAgICAgIGxldCBjaGlsZCA9IFVvcHQudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlXG4gICAgICAgICAgIGNoaWxkLmNoYW5nZWRfYXRcbiAgICAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXRcbiAgICAgICAgID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDwtIGNoaWxkLmNoYW5nZWRfYXQ7XG4gICAgICAgIHJlbW92ZV9hbGFybSBjbG9jayBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm07XG4gICAgICAgIGxldCBzdGVwX2Z1bmN0aW9uID0gTm9kZS52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIDwtIFVvcHQuc29tZSAoU3RlcF9mdW5jdGlvbi5pbml0IHN0ZXBfZnVuY3Rpb24pO1xuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUudXBjb21pbmdfc3RlcHMgPC0gU3RlcF9mdW5jdGlvbi5zdGVwcyBzdGVwX2Z1bmN0aW9uO1xuICAgICAgICAoKiBJZiB0aGUgY2hpbGQgaXMgYSBjb25zdGFudCwgd2UgZHJvcCBvdXIgcmVmZXJlbmNlIHRvIGl0LCB0byBhdm9pZCBob2xkaW5nIG9uIHRvXG4gICAgICAgICAgIHRoZSBlbnRpcmUgc3RlcCBmdW5jdGlvbi4gKilcbiAgICAgICAgaWYgTm9kZS5pc19jb25zdCBjaGlsZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuY2hpbGQgPC0gVW9wdC5ub25lO1xuICAgICAgICAgIHNldF9oZWlnaHQgbm9kZSAoU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpKSkpO1xuICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5hZHZhbmNlIHN0ZXBfZnVuY3Rpb25fbm9kZSB+dG9fOihub3cgY2xvY2spO1xuICAgIGxldCBzdGVwX2Z1bmN0aW9uX3ZhbHVlID0gVW9wdC52YWx1ZV9leG4gc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIGluXG4gICAgKG1hdGNoIFNlcXVlbmNlLmhkIHN0ZXBfZnVuY3Rpb25fbm9kZS51cGNvbWluZ19zdGVwcyB3aXRoXG4gICAgIHwgTm9uZSAtPiBpZiBVb3B0LmlzX25vbmUgY2hpbGQgdGhlbiBOb2RlLnNldF9raW5kIG5vZGUgKENvbnN0IHN0ZXBfZnVuY3Rpb25fdmFsdWUpXG4gICAgIHwgU29tZSAoYXQsIF8pIC0+XG4gICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtIDwtIGFkZF9hbGFybSBjbG9jayB+YXQgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBzdGVwX2Z1bmN0aW9uX3ZhbHVlXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY29tcHV0ZSB1KVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgVmFyIHZhciAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSB2YXIudmFsdWVcbiAgfCBNYXAyIChmLCBuMSwgbjIpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpKVxuICB8IE1hcDMgKGYsIG4xLCBuMiwgbjMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikgKE5vZGUudmFsdWVfZXhuIG4zKSlcbiAgfCBNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSAoTm9kZS52YWx1ZV9leG4gbjMpIChOb2RlLnZhbHVlX2V4biBuNCkpXG4gIHwgTWFwNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSkpXG4gIHwgTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpKVxuICB8IE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNykpXG4gIHwgTWFwOCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOCkpXG4gIHwgTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpKVxuICB8IE1hcDEwIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTApIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMCkpXG4gIHwgTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKSlcbiAgfCBNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpKVxuICB8IE1hcDEzIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMykpXG4gIHwgTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE0KSlcbiAgfCBNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTUpKVxuICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAobWF0Y2ggRXhwZXJ0LmJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIGV4cGVydCB3aXRoXG4gICAgIHwgYEludmFsaWQgLT5cbiAgICAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0XG4gICAgIHwgYE9rIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChleHBlcnQuZiAoKSkpXG5cbmFuZCBjb3B5X2NoaWxkIDogdHlwZSBhLiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGQ6YSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biB+cGFyZW50IH5jaGlsZCAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIGNoaWxkXG4gIHRoZW4gbWF5YmVfY2hhbmdlX3ZhbHVlIHBhcmVudCAoTm9kZS52YWx1ZV9leG4gY2hpbGQpXG4gIGVsc2UgKFxuICAgIGludmFsaWRhdGVfbm9kZSBwYXJlbnQ7XG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgcGFyZW50LnN0YXRlKVxuXG5hbmQgbWF5YmVfY2hhbmdlX3ZhbHVlIDogdHlwZSBhLiBhIE5vZGUudCAtPiBhIC0+IHVuaXQgPVxuICBmdW4gbm9kZSBuZXdfdmFsdWUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGxldCBvbGRfdmFsdWVfb3B0ID0gbm9kZS52YWx1ZV9vcHQgaW5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF92YWx1ZV9vcHRcbiAgfHwgbm90XG4gICAgICAgKEN1dG9mZi5zaG91bGRfY3V0b2ZmXG4gICAgICAgICAgbm9kZS5jdXRvZmZcbiAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnVuc2FmZV92YWx1ZSBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgIH5uZXdfdmFsdWUpXG4gIHRoZW4gKFxuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQuc29tZSBuZXdfdmFsdWU7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfY2hhbmdlZCA8LSB0Lm51bV9ub2Rlc19jaGFuZ2VkICsgMTtcbiAgICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gb2xkX3ZhbHVlX29wdDtcbiAgICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGUpO1xuICAgIGlmIG5vZGUubnVtX3BhcmVudHMgPj0gMVxuICAgIHRoZW4gKFxuICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBub2RlLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAgICAgICAgbGV0IGNoaWxkX2luZGV4ID0gbm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgaW5cbiAgICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBleHBlcnRcbiAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPlxuICAgICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgICAgdVxuICAgICAgICAgICAgIH5jaGlsZDpub2RlXG4gICAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpXG4gICAgICAgICAgICAgfm9sZF92YWx1ZV9vcHRcbiAgICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgICAoKiBXZSBkb24ndCBkbyB0aGUgW2Nhbl9yZWNvbXB1dGVfbm93XSBvcHRpbWl6YXRpb24uICBTaW5jZSBtb3N0IG5vZGVzIG9ubHkgaGF2ZVxuICAgICAgICAgICBvbmUgcGFyZW50LCBpdCBpcyBub3QgcHJvYmFibHkgbm90IGEgYmlnIGxvc3MuICBJZiB3ZSBkaWQgaXQgYW55d2F5LCB3ZSdkXG4gICAgICAgICAgIGhhdmUgdG8gYmUgY2FyZWZ1bCwgYmVjYXVzZSB3aGlsZSB3ZSBpdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcGFyZW50cywgd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGVtLCBhbmQgaW4gcGFydGljdWxhciB3ZSBjYW4gZXhlY3V0ZSBsaHMtY2hhbmdlIG5vZGVzIHdobyBjYW5cbiAgICAgICAgICAgY2hhbmdlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgVGhpbmsgYWJvdXQ6XG5cbiAgICAgICAgICAge1tcbiAgICAgICAgICAgICBsaHMgPj49IGZ1biBiIC0+IGlmIGIgdGhlbiBsaHMgPj58IEZuLmlkIGVsc2UgY29uc3QgYlxuICAgICAgICAgICBdfVxuXG4gICAgICAgICAgIElmIHRoZSBvcHRpbWl6YXRpb24ga2lja3MgaW4gd2hlbiB3ZSBwcm9wYWdhdGUgY2hhbmdlIHRvIHRoZSBwYXJlbnRzIG9mIFtsaHNdXG4gICAgICAgICAgICh3aGljaCBjaGFuZ2VzIGZyb20gW3RydWVdIHRvIFtmYWxzZV0pLCB3ZSBjb3VsZCBleGVjdXRlIHRoZSBbbGhzLWNoYW5nZV1cbiAgICAgICAgICAgZmlyc3QsIHdoaWNoIHdvdWxkIG1ha2UgZGlzY29ubmVjdCB0aGUgW21hcF0gbm9kZSBmcm9tIFtsaHNdLiAgQW5kIHRoZW4gd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGUgc2Vjb25kIGNoaWxkIG9mIHRoZSBbbGhzXSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnltb3JlIGFuZFxuICAgICAgICAgICBpbmNyZW1lbnRhbCB3b3VsZCBzZWdmYXVsdCAodGhlcmUgbWF5IGJlIGEgbGVzcyBuYWl2ZSB3YXkgb2YgbWFraW5nIHRoaXMgd29ya1xuICAgICAgICAgICB0aG91Z2gpLiAqKVxuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudFxuICAgICAgZG9uZTtcbiAgICAgIGxldCAoVCBwYXJlbnQpID0gVW9wdC52YWx1ZV9leG4gbm9kZS5wYXJlbnQwIGluXG4gICAgICAobWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgIHwgRXhwZXJ0IHAgLT5cbiAgICAgICAgIGxldCBjaGlsZF9pbmRleCA9IG5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKSBpblxuICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBwXG4gICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+XG4gICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgIHVcbiAgICAgICAgICAgfmNoaWxkOm5vZGVcbiAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKVxuICAgICAgICAgICB+b2xkX3ZhbHVlX29wdFxuICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgfCBfIC0+ICgpKTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjYW5fcmVjb21wdXRlX25vdyA9XG4gICAgICAgICAgbWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBhcmVuJ3QgcGFyZW50cy4gKilcbiAgICAgICAgICB8IEF0IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBBdF9pbnRlcnZhbHMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IENvbnN0IF8gfCBJbnZhbGlkIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGlsZC4gKilcbiAgICAgICAgICB8IEFycmF5X2ZvbGQgX1xuICAgICAgICAgIHwgTWFwMiBfXG4gICAgICAgICAgfCBNYXAzIF9cbiAgICAgICAgICB8IE1hcDQgX1xuICAgICAgICAgIHwgTWFwNSBfXG4gICAgICAgICAgfCBNYXA2IF9cbiAgICAgICAgICB8IE1hcDcgX1xuICAgICAgICAgIHwgTWFwOCBfXG4gICAgICAgICAgfCBNYXA5IF9cbiAgICAgICAgICB8IE1hcDEwIF9cbiAgICAgICAgICB8IE1hcDExIF9cbiAgICAgICAgICB8IE1hcDEyIF9cbiAgICAgICAgICB8IE1hcDEzIF9cbiAgICAgICAgICB8IE1hcDE0IF9cbiAgICAgICAgICB8IE1hcDE1IF9cbiAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF9cbiAgICAgICAgICB8IEV4cGVydCBfIC0+IGZhbHNlXG4gICAgICAgICAgKCogV2UgY2FuIGltbWVkaWF0ZWx5IHJlY29tcHV0ZSBbcGFyZW50XSBpZiBubyBvdGhlciBub2RlIG5lZWRzIHRvIGJlIHN0YWJsZVxuICAgICAgICAgICAgIGJlZm9yZSBjb21wdXRpbmcgaXQuICBJZiBbcGFyZW50XSBoYXMgYSBzaW5nbGUgY2hpbGQgKGkuZS4gW25vZGVdKSwgdGhlblxuICAgICAgICAgICAgIHRoaXMgYW1vdW50cyB0byBjaGVja2luZyB0aGF0IFtwYXJlbnRdIHdvbid0IGJlIGludmFsaWRhdGVkLCBpLmUuIHRoYXRcbiAgICAgICAgICAgICBbcGFyZW50XSdzIHNjb3BlIGhhcyBhbHJlYWR5IHN0YWJpbGl6ZWQuICopXG4gICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgRnJlZXplIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBNYXAgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgKCogRm9yIHRoZXNlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIFwiX2NoYW5nZVwiIGNoaWxkIGhhcyBhbHJlYWR5IGJlZW5cbiAgICAgICAgICAgICBldmFsdWF0ZWQgKGlmIG5lZWRlZCkuICBJZiBzbywgdGhpcyBhbHNvIGltcGxpZXM6XG5cbiAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICAgICBdfSAqKVxuICAgICAgICAgIHwgQmluZF9tYWluIGIgLT4gbm9kZS5oZWlnaHQgPiBiLmxoc19jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBJZl90aGVuX2Vsc2UgaSAtPiBub2RlLmhlaWdodCA+IGkudGVzdF9jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBKb2luX21haW4gaiAtPiBub2RlLmhlaWdodCA+IGoubGhzX2NoYW5nZS5oZWlnaHRcbiAgICAgICAgaW5cbiAgICAgICAgaWYgY2FuX3JlY29tcHV0ZV9ub3dcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZFxuICAgICAgICAgIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgKyAxO1xuICAgICAgICAgIHJlY29tcHV0ZSBwYXJlbnQpXG4gICAgICAgIGVsc2UgaWYgcGFyZW50LmhlaWdodCA8PSBSZWNvbXB1dGVfaGVhcC5taW5faGVpZ2h0IHQucmVjb21wdXRlX2hlYXBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogSWYgW3BhcmVudC5oZWlnaHRdIGlzIFs8PV0gdGhlIGhlaWdodCBvZiBhbGwgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwXG4gICAgICAgICAgICAgKHBvc3NpYmx5IGJlY2F1c2UgdGhlIHJlY29tcHV0ZSBoZWFwIGlzIGVtcHR5KSwgdGhlbiB3ZSBjYW4gcmVjb21wdXRlXG4gICAgICAgICAgICAgW3BhcmVudF0gaW1tZWRpYXRlbHkgYW5kIHNhdmUgYWRkaW5nIGl0IHRvIGFuZCB0aGVuIHJlbW92aW5nIGl0IGZyb20gdGhlXG4gICAgICAgICAgICAgcmVjb21wdXRlIGhlYXAuICopXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHRcbiAgICAgICAgICA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCArIDE7XG4gICAgICAgICAgcmVjb21wdXRlIHBhcmVudClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpO1xuICAgICAgICAgIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudCkpKSk7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHRcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgciA9XG4gIGxldCAoVCBub2RlKSA9IFJlY29tcHV0ZV9oZWFwLnJlbW92ZV9taW4gciBpblxuICBpZiBkZWJ1ZyAmJiBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJub2RlIHVuZXhwZWN0ZWRseSBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbXB1dGVkXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICByZWNvbXB1dGUgbm9kZVxuOztcblxubGV0IHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0ID1cbiAgd2hpbGUgU3RhY2subGVuZ3RoIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5kaXNhbGxvd2VkX29ic2VydmVycyBpblxuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgfCBEaXNhbGxvd2VkIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBsZXQgKFQgYWxsX29ic2VydmVycykgPSBVb3B0LnZhbHVlX2V4biB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICBpZiBJbnRlcm5hbF9vYnNlcnZlci5zYW1lIGludGVybmFsX29ic2VydmVyIGFsbF9vYnNlcnZlcnNcbiAgICB0aGVuIHQuYWxsX29ic2VydmVycyA8LSBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX2FsbDtcbiAgICBJbnRlcm5hbF9vYnNlcnZlci51bmxpbmsgaW50ZXJuYWxfb2JzZXJ2ZXI7XG4gICAgY2hlY2tfaWZfdW5uZWNlc3NhcnkgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nXG4gIGRvbmVcbjs7XG5cbmxldCBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyID1cbiAgbGV0IHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbmNyX3N0YXRlIGludGVybmFsX29ic2VydmVyIGluXG4gIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gKClcbiAgfCBDcmVhdGVkIC0+XG4gICAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0gMTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgPC0gW11cbiAgfCBJbl91c2UgLT5cbiAgICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgLSAxO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIERpc2FsbG93ZWQ7XG4gICAgU3RhY2sucHVzaCB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKVxuOztcblxubGV0IGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmZpbmFsaXplZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQuZmluYWxpemVkX29ic2VydmVycyBpblxuICAgIGlmIExpc3QuaXNfZW1wdHkgaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgdGhlbiBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyXG4gIGRvbmVcbjs7XG5cbmxldCBvYnNlcnZlcl9maW5hbGl6ZXIgdCA9XG4gIHN0YWdlIChmdW4gb2JzZXJ2ZXIgLT5cbiAgICBsZXQgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAhb2JzZXJ2ZXIgaW5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQuZmluYWxpemVkX29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcikpXG47O1xuXG5sZXQgY3JlYXRlX29ic2VydmVyID8oc2hvdWxkX2ZpbmFsaXplID0gdHJ1ZSkgKG9ic2VydmluZyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gb2JzZXJ2aW5nLnN0YXRlIGluXG4gIGxldCBpbnRlcm5hbF9vYnNlcnZlciA6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gICAgeyBzdGF0ZSA9IENyZWF0ZWRcbiAgICA7IG9ic2VydmluZ1xuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IHByZXZfaW5fYWxsID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX2FsbCA9IFVvcHQubm9uZVxuICAgIDsgcHJldl9pbl9vYnNlcnZpbmcgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fb2JzZXJ2aW5nID0gVW9wdC5ub25lXG4gICAgfVxuICBpblxuICBTdGFjay5wdXNoIHQubmV3X29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcik7XG4gIGxldCBvYnNlcnZlciA9IHJlZiBpbnRlcm5hbF9vYnNlcnZlciBpblxuICBpZiBzaG91bGRfZmluYWxpemVcbiAgdGhlbiBHYy5FeHBlcnQuYWRkX2ZpbmFsaXplcl9leG4gb2JzZXJ2ZXIgKHVuc3RhZ2UgKG9ic2VydmVyX2ZpbmFsaXplciB0KSk7XG4gIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyArIDE7XG4gIG9ic2VydmVyXG47O1xuXG5sZXQgYWRkX25ld19vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFN0YWNrLmxlbmd0aCB0Lm5ld19vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5uZXdfb2JzZXJ2ZXJzIGluXG4gICAgbGV0IG1vZHVsZSBQYWNrZWQgPSBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQgaW5cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFVubGlua2VkIC0+ICgpXG4gICAgfCBDcmVhdGVkIC0+XG4gICAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBJbl91c2U7XG4gICAgICBsZXQgb2xkX2FsbF9vYnNlcnZlcnMgPSB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfYWxsX29ic2VydmVyc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fYWxsIDwtIG9sZF9hbGxfb2JzZXJ2ZXJzO1xuICAgICAgICBQYWNrZWQuc2V0X3ByZXZfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfYWxsX29ic2VydmVycykgKFVvcHQuc29tZSBwYWNrZWQpKTtcbiAgICAgIHQuYWxsX29ic2VydmVycyA8LSBVb3B0LnNvbWUgcGFja2VkO1xuICAgICAgbGV0IG9ic2VydmluZyA9IGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyBpblxuICAgICAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBvYnNlcnZpbmcgaW5cbiAgICAgIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgICAgKyBMaXN0Lmxlbmd0aCBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnM7XG4gICAgICBsZXQgb2xkX29ic2VydmVycyA9IG9ic2VydmluZy5vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfb2JzZXJ2ZXJzXG4gICAgICB0aGVuIChcbiAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmcgPC0gb2xkX29ic2VydmVycztcbiAgICAgICAgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9vYnNlcnZlcnMpLnByZXZfaW5fb2JzZXJ2aW5nIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcik7XG4gICAgICBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcjtcbiAgICAgICgqIEJ5IGFkZGluZyBbaW50ZXJuYWxfb2JzZXJ2ZXJdIHRvIFtvYnNlcnZpbmcub2JzZXJ2ZXJzXSwgd2UgbWF5IGhhdmUgYWRkZWRcbiAgICAgICAgIG9uLXVwZGF0ZSBoYW5kbGVycyB0byBbb2JzZXJ2aW5nXS4gIFdlIG5lZWQgdG8gaGFuZGxlIFtvYnNlcnZpbmddIGFmdGVyIHRoaXNcbiAgICAgICAgIHN0YWJpbGl6YXRpb24gdG8gZ2l2ZSB0aG9zZSBoYW5kbGVycyBhIGNoYW5jZSB0byBydW4uICopXG4gICAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBvYnNlcnZpbmc7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3Nhcnkgb2JzZXJ2aW5nKTtcbiAgICAgIGlmIG5vdCB3YXNfbmVjZXNzYXJ5IHRoZW4gYmVjYW1lX25lY2Vzc2FyeSBvYnNlcnZpbmdcbiAgZG9uZVxuOztcblxubGV0IG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlciA9XG4gIGxldCB0ID0gT2JzZXJ2ZXIuaW5jcl9zdGF0ZSBvYnNlcnZlciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT4gT2JzZXJ2ZXIudmFsdWVfZXhuIG9ic2VydmVyXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBSYWlzZWRfZXhuLnJlcmFpc2Vfd2l0aF9tZXNzYWdlXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgYWZ0ZXIgc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXCJcbiAgICAgIG9ic2VydmVyXG4gICAgICBbJXNleHBfb2Y6IF8gT2JzZXJ2ZXIudF1cbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZSBvYnNlcnZlciA9XG4gIHRyeSBPayAob2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuOztcblxubGV0IG5vZGVfb25fdXBkYXRlICh0eXBlIGEpIChub2RlIDogYSBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIE5vZGUub25fdXBkYXRlIG5vZGUgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZVxuOztcblxubGV0IG9ic2VydmVyX29uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgfmYgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgT2JzZXJ2ZXIub25fdXBkYXRlX2V4biBvYnNlcnZlciAoT25fdXBkYXRlX2hhbmRsZXIuY3JlYXRlIGYgfmF0OnQuc3RhYmlsaXphdGlvbl9udW0pO1xuICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoT2JzZXJ2ZXIub2JzZXJ2aW5nIG9ic2VydmVyKVxuOztcblxubGV0IHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIHQubnVtX3Zhcl9zZXRzIDwtIHQubnVtX3Zhcl9zZXRzICsgMTtcbiAgdmFyLnZhbHVlIDwtIHZhbHVlO1xuICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHZhci5zZXRfYXQgdC5zdGFiaWxpemF0aW9uX251bSA8IDBcbiAgdGhlbiAoXG4gICAgdmFyLnNldF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGxldCB3YXRjaCA9IHZhci53YXRjaCBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIHdhdGNoKTtcbiAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSB3YXRjaCAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgd2F0Y2gpXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCB3YXRjaClcbjs7XG5cbmxldCBzZXRfdmFyIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgXCJjYW5ub3Qgc2V0IHZhciAtLSBzdGFiaWxpemF0aW9uIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGlmIFVvcHQuaXNfbm9uZSB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gICAgdGhlbiBTdGFjay5wdXNoIHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIChUIHZhcik7XG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0LnNvbWUgdmFsdWVcbjs7XG5cbmxldCByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LndlYWtfaGFzaHRibHMgPiAwIGRvXG4gICAgbGV0IChUIHdlYWtfaGFzaHRibCkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LndlYWtfaGFzaHRibHMgaW5cbiAgICBXZWFrX2hhc2h0YmwucmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VudXNlZF9kYXRhIHdlYWtfaGFzaHRibFxuICBkb25lXG47O1xuXG5sZXQgc3RhYmlsaXplX3N0YXJ0IHQgPVxuICB0LnN0YXR1cyA8LSBTdGFiaWxpemluZztcbiAgZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyB0O1xuICAoKiBKdXN0IGxpa2UgZm9yIGJpbmRzLCB3ZSBhZGQgbmV3IG9ic2VydmVycyBiZWZvcmUgcmVtb3ZpbmcgZGlzYWxsb3dlZCBvYnNlcnZlcnMgdG9cbiAgICAgcG90ZW50aWFsbHkgYXZvaWQgc3dpdGNoaW5nIHRoZSBvYnNlcnZhYmlsaXR5IG9mIHNvbWUgbm9kZXMgYmFjayBhbmQgZm9ydGguICopXG4gIGFkZF9uZXdfb2JzZXJ2ZXJzIHQ7XG4gIHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0O1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0XG47O1xuXG5sZXQgc3RhYmlsaXplX2VuZCB0ID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgdC5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgPC0gTm9uZTtcbiAgICB0Lm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDwtIFtdKTtcbiAgKCogV2UgaW5jcmVtZW50IFt0LnN0YWJpbGl6YXRpb25fbnVtXSBiZWZvcmUgaGFuZGxpbmcgdmFyaWFibGVzIHNldCBkdXJpbmdcbiAgICAgc3RhYmlsaXphdGlvbiwgc28gdGhhdCB0aGV5IGFyZSB0cmVhdGVkIGFzIHNldCBkdXJpbmcgdGhlIG5ldyBzdGFiaWxpemF0aW9uIGN5Y2xlLlxuICAgICBBbHNvLCB3ZSBpbmNyZW1lbnQgYmVmb3JlIHJ1bm5pbmcgb24tdXBkYXRlIGhhbmRsZXJzLCB0byBhdm9pZCBydW5uaW5nIG9uIHVwZGF0ZVxuICAgICBoYW5kbGVycyBjcmVhdGVkIGR1cmluZyBvbiB1cGRhdGUgaGFuZGxlcnMuICopXG4gIHQuc3RhYmlsaXphdGlvbl9udW0gPC0gU3RhYmlsaXphdGlvbl9udW0uYWRkMSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKSBkb1xuICAgIGxldCAoVCB2YXIpID0gU3RhY2sucG9wX2V4biB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiBpblxuICAgIGxldCB2YWx1ZSA9IFVvcHQudmFsdWVfZXhuIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDwtIFVvcHQubm9uZTtcbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWVcbiAgZG9uZTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uKSBkb1xuICAgIGxldCAoVCBub2RlKSA9IFN0YWNrLnBvcF9leG4gdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBpblxuICAgIG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPC0gZmFsc2U7XG4gICAgbGV0IG9sZF92YWx1ZSA9IG5vZGUub2xkX3ZhbHVlX29wdCBpblxuICAgIG5vZGUub2xkX3ZhbHVlX29wdCA8LSBVb3B0Lm5vbmU7XG4gICAgbGV0IG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50ID1cbiAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBub2RlKVxuICAgICAgdGhlbiBJbnZhbGlkYXRlZFxuICAgICAgZWxzZSBpZiBub3QgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpXG4gICAgICB0aGVuIFVubmVjZXNzYXJ5XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5ld192YWx1ZSA9IFVvcHQudmFsdWVfZXhuIG5vZGUudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSBvbGRfdmFsdWVcbiAgICAgICAgdGhlbiBOZWNlc3NhcnkgbmV3X3ZhbHVlXG4gICAgICAgIGVsc2UgQ2hhbmdlZCAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX3ZhbHVlLCBuZXdfdmFsdWUpKVxuICAgIGluXG4gICAgU3RhY2sucHVzaCB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSlcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnM7XG4gIGxldCBub3cgPSB0LnN0YWJpbGl6YXRpb25fbnVtIGluXG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzKSBkb1xuICAgIGxldCAoVCAobm9kZSwgbm9kZV91cGRhdGUpKSA9IFN0YWNrLnBvcF9leG4gdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIGluXG4gICAgTm9kZS5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIG5vZGUgbm9kZV91cGRhdGUgfm5vd1xuICBkb25lO1xuICB0LnN0YXR1cyA8LSBOb3Rfc3RhYmlsaXppbmc7XG4gIHJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyB0XG47O1xuXG5sZXQgcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG4gPVxuICBsZXQgcmFpc2VkID0gUmFpc2VkX2V4bi5jcmVhdGUgZXhuIGluXG4gIHQuc3RhdHVzIDwtIFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWQ7XG4gIFJhaXNlZF9leG4ucmVyYWlzZSByYWlzZWRcbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0YWJpbGl6ZVwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjpmYWxzZTtcbiAgdHJ5XG4gICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgd2hpbGUgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwIGRvXG4gICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByXG4gICAgZG9uZTtcbiAgICBzdGFiaWxpemVfZW5kIHRcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4blxuOztcblxubW9kdWxlIFN0ZXBfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBLZWVwX2dvaW5nXG4gICAgfCBEb25lXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSB0IDogU3RlcF9yZXN1bHQudCA9XG4gIHRyeVxuICAgIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgICBLZWVwX2dvaW5nXG4gICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgICBpZiBSZWNvbXB1dGVfaGVhcC5sZW5ndGggciA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByO1xuICAgICAgICBLZWVwX2dvaW5nKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHN0YWJpbGl6ZV9lbmQgdDtcbiAgICAgICAgRG9uZSlcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0ZXBcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgICAoKiBJZiBzdGFiaWxpemF0aW9uIGhhcyBhbHJlYWR5IHJhaXNlZCwgdGhlbiBbZXhuXSBpcyBtZXJlbHkgYSBub3RpZmljYXRpb24gb2YgdGhpc1xuICAgICAgICAgIGZhY3QsIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gaXRzZWxmLiAgV2Ugc2hvdWxkIGp1c3QgcHJvcGFnYXRlIFtleG5dXG4gICAgICAgICAgZm9yd2FyZDsgY2FsbGluZyBbcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHdvdWxkIHN0b3JlIFtleG5dIGFzIHRoZSBleGNlcHRpb25cbiAgICAgICAgICB0aGF0IGluaXRpYWxseSByYWlzZWQgZHVyaW5nIHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgcmFpc2UgZXhuXG4gICAgIHwgXyAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4bilcbjs7XG5cbmxldCBjcmVhdGVfbm9kZV9pbiB0IGNyZWF0ZWRfaW4ga2luZCA9XG4gIHQubnVtX25vZGVzX2NyZWF0ZWQgPC0gdC5udW1fbm9kZXNfY3JlYXRlZCArIDE7XG4gIE5vZGUuY3JlYXRlIHQgY3JlYXRlZF9pbiBraW5kXG47O1xuXG5sZXQgY3JlYXRlX25vZGUgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCB0LmN1cnJlbnRfc2NvcGUga2luZFxubGV0IGNyZWF0ZV9ub2RlX3RvcCB0IGtpbmQgPSBjcmVhdGVfbm9kZV9pbiB0IFNjb3BlLnRvcCBraW5kXG5cbmxldCBjcmVhdGVfdmFyIHQgPyh1c2VfY3VycmVudF9zY29wZSA9IGZhbHNlKSB2YWx1ZSA9XG4gIGxldCBzY29wZSA9IGlmIHVzZV9jdXJyZW50X3Njb3BlIHRoZW4gdC5jdXJyZW50X3Njb3BlIGVsc2UgU2NvcGUudG9wIGluXG4gIGxldCB3YXRjaCA9IGNyZWF0ZV9ub2RlX2luIHQgc2NvcGUgVW5pbml0aWFsaXplZCBpblxuICBsZXQgdmFyID1cbiAgICB7IFZhci52YWx1ZVxuICAgIDsgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gVW9wdC5ub25lXG4gICAgOyBzZXRfYXQgPSB0LnN0YWJpbGl6YXRpb25fbnVtXG4gICAgOyB3YXRjaFxuICAgIH1cbiAgaW5cbiAgTm9kZS5zZXRfa2luZCB3YXRjaCAoVmFyIHZhcik7XG4gIHZhclxuOztcblxuKCogQSBbY29uc3RdIHZhbHVlIGNvdWxkIGNvbWUgZnJvbSB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG91dGVyIGJpbmQuICBTbywgd2UgY3JlYXRlIGFcbiAgIFtjb25zdF0gbm9kZSBpbiB0aGUgY3VycmVudCBzY29wZSwgbm90IGluIFtTY29wZS50b3BdLiAqKVxubGV0IGNvbnN0IHQgYSA9IGNyZWF0ZV9ub2RlIHQgKENvbnN0IGEpXG5sZXQgbWFwIChuIDogXyBOb2RlLnQpIH5mID0gY3JlYXRlX25vZGUgbi5zdGF0ZSAoTWFwIChmLCBuKSlcbmxldCBtYXAyIChuMSA6IF8gTm9kZS50KSBuMiB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAyIChmLCBuMSwgbjIpKVxuXG5sZXQgYm90aCAobjEgOiBfIE5vZGUudCkgKG4yIDogXyBOb2RlLnQpID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCB7IGtpbmQgPSBDb25zdCBhOyBfIH0sIHsga2luZCA9IENvbnN0IGI7IF8gfSAtPiBjb25zdCBuMS5zdGF0ZSAoYSwgYilcbiAgfCBfIC0+IG1hcDIgbjEgbjIgfmY6VHVwbGUyLmNyZWF0ZVxuOztcblxubGV0IG1hcDMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDMgKGYsIG4xLCBuMiwgbjMpKVxubGV0IG1hcDQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSlcblxubGV0IG1hcDUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkpXG47O1xuXG5sZXQgbWFwNiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikpXG47O1xuXG5sZXQgbWFwNyAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpKVxuOztcblxubGV0IG1hcDggKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkpXG47O1xuXG5sZXQgbWFwOSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkpXG47O1xuXG5sZXQgbWFwMTAgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSlcbjs7XG5cbmxldCBtYXAxMSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpKVxuOztcblxubGV0IG1hcDEyIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikpXG47O1xuXG5sZXQgbWFwMTMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSlcbjs7XG5cbmxldCBtYXAxNCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCB+ZiA9XG4gIGNyZWF0ZV9ub2RlXG4gICAgbjEuc3RhdGVcbiAgICAoTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSlcbjs7XG5cbmxldCBtYXAxNSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCBuMTUgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSlcbjs7XG5cbmxldCBwcmVzZXJ2ZV9jdXRvZmYgfihpbnB1dCA6IF8gTm9kZS50KSB+b3V0cHV0ID1cbiAgTm9kZS5zZXRfY3V0b2ZmXG4gICAgb3V0cHV0XG4gICAgKEN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlOl8gfm5ld192YWx1ZTpfIC0+XG4gICAgICAgU3RhYmlsaXphdGlvbl9udW0uZXF1YWwgaW5wdXQuY2hhbmdlZF9hdCBvdXRwdXQuY2hhbmdlZF9hdCkpXG47O1xuXG5sZXQgZGVwZW5kX29uIGlucHV0IH5kZXBlbmRfb24gPVxuICBsZXQgb3V0cHV0ID0gbWFwMiBpbnB1dCBkZXBlbmRfb24gfmY6KGZ1biBhIF8gLT4gYSkgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBuZWNlc3NhcnlfaWZfYWxpdmUgaW5wdXQgPVxuICAoKiBJZiBbb3V0cHV0XSBpcyBhbGl2ZSwgdGhlbiBbb2JzZXJ2ZXJdIGlzIGFsaXZlLCB0aGVuIFtpbnB1dF0gaXMgbmVjZXNzYXJ5LiAgSWZcbiAgICAgW291dHB1dF0gaXMgdW5uZWNlc3NhcnksIHRoZW4gW291dHB1dF0gaXMgbm90IGEgcGFyZW50IG9mIFtpbnB1dF0sIGFuZCB0aHVzXG4gICAgIFtvdXRwdXRdJ3MgbGl2ZW5lc3MgaXMgZGVwZW5kZW50IHNvbGVseSBvbiB1c2VyIGNvZGUuICBBbmQgaW4gcGFydGljdWxhciwgaWYgW291dHB1dF1cbiAgICAgZGllcywgdGhlbiBbb2JzZXJ2ZXJdIHdpbGwgYmUgZmluYWxpemVkLCBhbmQgdGhlbiB1cG9uIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sXG4gICAgIFtpbnB1dF0gd2lsbCBiZWNvbWUgdW5uZWNlc3NhcnkgKGF0IGxlYXN0IHdpdGggcmVzcGVjdCB0byBbb3V0cHV0XSkuICopXG4gIGxldCBvYnNlcnZlciA9IGNyZWF0ZV9vYnNlcnZlciBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBtYXAgaW5wdXQgfmY6KGZ1biBhIC0+XG4gICAgICBHYy5rZWVwX2FsaXZlIG9ic2VydmVyO1xuICAgICAgYSlcbiAgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBiaW5kIChsaHMgOiBfIE5vZGUudCkgfmYgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmluZCA9XG4gICAgeyBCaW5kLm1haW5cbiAgICA7IGZcbiAgICA7IGxoc1xuICAgIDsgbGhzX2NoYW5nZVxuICAgIDsgcmhzID0gVW9wdC5ub25lXG4gICAgOyByaHNfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgKCogV2Ugc2V0IFtsaHNfY2hhbmdlXSB0byBuZXZlciBjdXRvZmYgc28gdGhhdCB3aGVuZXZlciBbbGhzXSBjaGFuZ2VzLCBbbWFpbl0gaXNcbiAgICAgcmVjb21wdXRlZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBbZl0gcmV0dXJucyBhbiBleGlzdGluZyBzdGFibGVcbiAgICAgbm9kZSwgaW4gd2hpY2ggY2FzZSB0aGUgW2xoc19jaGFuZ2VdIHdvdWxkIGJlIHRoZSBvbmx5IHRoaW5nIGNhdXNpbmcgW21haW5dIHRvIGJlXG4gICAgIHN0YWxlLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbGhzX2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIGJpbmQucmhzX3Njb3BlIDwtIEJpbmQgYmluZDtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChCaW5kX2xoc19jaGFuZ2UgYmluZCk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQmluZF9tYWluIGJpbmQpO1xuICBtYWluXG47O1xuXG5sZXQgYmluZDIgbjEgbjIgfmYgPVxuICBiaW5kIChtYXAyIG4xIG4yIH5mOihmdW4gdjEgdjIgLT4gdjEsIHYyKSkgfmY6KGZ1biAodjEsIHYyKSAtPiBmIHYxIHYyKVxuOztcblxubGV0IGJpbmQzIG4xIG4yIG4zIH5mID1cbiAgYmluZCAobWFwMyBuMSBuMiBuMyB+ZjooZnVuIHYxIHYyIHYzIC0+IHYxLCB2MiwgdjMpKSB+ZjooZnVuICh2MSwgdjIsIHYzKSAtPiBmIHYxIHYyIHYzKVxuOztcblxubGV0IGJpbmQ0IG4xIG4yIG4zIG40IH5mID1cbiAgYmluZFxuICAgIChtYXA0IG4xIG4yIG4zIG40IH5mOihmdW4gdjEgdjIgdjMgdjQgLT4gdjEsIHYyLCB2MywgdjQpKVxuICAgIH5mOihmdW4gKHYxLCB2MiwgdjMsIHY0KSAtPiBmIHYxIHYyIHYzIHY0KVxuOztcblxubGV0IGpvaW4gKGxocyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gbGhzLnN0YXRlIGluXG4gIGxldCBsaHNfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBqb2luID0geyBKb2luLmxoczsgbGhzX2NoYW5nZTsgcmhzID0gVW9wdC5ub25lOyBtYWluIH0gaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIGxoc19jaGFuZ2UgKEpvaW5fbGhzX2NoYW5nZSBqb2luKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChKb2luX21haW4gam9pbik7XG4gIG1haW5cbjs7XG5cbmxldCBpZl8gKHRlc3QgOiBfIE5vZGUudCkgfnRoZW5fIH5lbHNlXyA9XG4gIGxldCB0ID0gdGVzdC5zdGF0ZSBpblxuICBsZXQgdGVzdF9jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGlmX3RoZW5fZWxzZSA9XG4gICAgeyBJZl90aGVuX2Vsc2UudGVzdDsgdGhlbl87IGVsc2VfOyB0ZXN0X2NoYW5nZTsgbWFpbjsgY3VycmVudF9icmFuY2ggPSBVb3B0Lm5vbmUgfVxuICBpblxuICBOb2RlLnNldF9jdXRvZmYgdGVzdF9jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIHRlc3RfY2hhbmdlIChJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKElmX3RoZW5fZWxzZSBpZl90aGVuX2Vsc2UpO1xuICBtYWluXG47O1xuXG5sZXQgbGF6eV9mcm9tX2Z1biB0IH5mID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiB3aXRoaW5fc2NvcGUgdCBzY29wZSB+Zilcbjs7XG5cbmxldCBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplID0gNFxuXG5sZXQgbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICAoKiBIZXJlJ3MgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHdlIGdldCBbdC5jdXJyZW50X3Njb3BlXSBoZXJlLCBhbmQgdGhlbiBjYWxsXG4gICAgIFt3aXRoaW5fc2NvcGVdIGJlbG93LiAgQ29uc2lkZXIgdGhpcyAoaW1wb3NzaWJsZSkgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgIFttZW1vaXplX2Z1bl9ieV9rZXldOlxuXG4gICAgIHtbXG4gICAgICAgbGV0IHRhYmxlID1cbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfZXhuIGhhc2hhYmxlXG4gICAgICAgICAgIChMaXN0Lm1hcCBhbGxfcG9zc2libGVfYV92YWx1ZXMgfmY6KGZ1biBhIC0+IChwcm9qZWN0X2tleSBhLCBmIGEpKVxuICAgICAgIGluXG4gICAgICAgc3RhZ2UgKGZ1biBrZXkgLT4gSGFzaHRibC5maW5kX2V4biB0YWJsZSAocHJvamVjdF9rZXkgYSkpXG4gICAgIF19XG5cbiAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHVzZSBbY3VycmVudF9zY29wZV0gb3IgW3dpdGhpbl9zY29wZV0uICBBbGwgY2FsbHMgdG8gW2ZdXG4gICAgIG5hdHVyYWxseSBvY2N1ciBpbiBbdC5jdXJyZW50X3Njb3BlXS5cblxuICAgICBTdWNoIGFuIGltcGxlbWVudGF0aW9uIGlzIGltcG9zc2libGUgYmVjYXVzZSB3ZSBkbyBub3QgaGF2ZSBbYWxsX3Bvc3NpYmxlX2FfdmFsdWVzXS5cbiAgICAgVGhlIGltcGxlbWVudGF0aW9uIGJlbG93IHVzZXMgW3dpdGhpbl9zY29wZV0gdG8gY2FsbCBbZiBhXSBpbiB0aGUgc2NvcGUgdGhhdCB3YXNcbiAgICAgY3VycmVudCBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwgdG8gW21lbW9pemVfZnVuX2J5X2tleV0gc28gdGhhdCB3ZSBjYW4gdGhpbmsgb2YgdGhlXG4gICAgIFt0YWJsZV0gYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCB0aGVuLCB3aGVuIGl0IGluIHJlYWxpdHkgaXMgY3JlYXRlZCBvbi1kZW1hbmQuICopXG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBsZXQgdGFibGUgPSBIYXNodGJsLmNyZWF0ZSBoYXNoYWJsZSB+c2l6ZTppbml0aWFsX3NpemUgaW5cbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdGFibGUga2V5IHdpdGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgYiA9IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mOihmdW4gKCkgLT4gZiBhKSBpblxuICAgICAgSGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5sZXQgYXJyYXlfZm9sZCB0IGNoaWxkcmVuIH5pbml0IH5mID1cbiAgaWYgQXJyYXkubGVuZ3RoIGNoaWxkcmVuID0gMFxuICB0aGVuIGNvbnN0IHQgaW5pdFxuICBlbHNlIGNyZWF0ZV9ub2RlIHQgKEFycmF5X2ZvbGQgeyBpbml0OyBmOyBjaGlsZHJlbiB9KVxuOztcblxubGV0IGFsbCB0IHRzID0gYXJyYXlfZm9sZCB0IChBcnJheS5vZl9saXN0X3JldiB0cykgfmluaXQ6W10gfmY6KGZ1biBhYyBhIC0+IGEgOjogYWMpXG5cbm1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBVbm9yZGVyZWRfYXJyYXlfZm9sZC5VcGRhdGVcblxubGV0IHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICB0XG4gICAgICA/KGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPSBJbnQubWF4X3ZhbHVlKVxuICAgICAgY2hpbGRyZW5cbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfnVwZGF0ZVxuICA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBpZiBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDw9IDBcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCBnb3Qgbm9uLXBvc2l0aXZlIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcIlxuICAgICAgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgWyVzZXhwX29mOiBpbnRdXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gICAgTm9kZS5zZXRfa2luZFxuICAgICAgbWFpblxuICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgICAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY3JlYXRlXG4gICAgICAgICAgICB+aW5pdFxuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICB+Y2hpbGRyZW5cbiAgICAgICAgICAgIH5tYWluKSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgbGV0IGYgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCArIDFcbiAgICB8IFNvbWUgeCAtPiBmIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIGxldCBmX2ludmVyc2UgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCAtIDFcbiAgICB8IFNvbWUgeCAtPiBmX2ludmVyc2UgYWNjdW0geCwgbnVtX2ludmFsaWRcbiAgaW5cbiAgbWFwXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIHRzXG4gICAgICAgfmluaXQ6KGluaXQsIDApXG4gICAgICAgfmZcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgZl9pbnZlcnNlKVxuICAgICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKVxuICAgIH5mOihmdW4gKGFjY3VtLCBudW1faW52YWxpZCkgLT4gaWYgbnVtX2ludmFsaWQgPSAwIHRoZW4gU29tZSBhY2N1bSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rID1cbiAgbGV0IGJvb2xfdG9faW50IGIgPSBpZiBiIHRoZW4gMSBlbHNlIDAgaW5cbiAgbWFwXG4gICAgfmY6KGZ1biBpIC0+IGkgPj0gaylcbiAgICAodW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICB0XG4gICAgICAgbm9kZXNcbiAgICAgICB+aW5pdDowXG4gICAgICAgfmY6KGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlICsgYm9vbF90b19pbnQgYilcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgKGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlIC0gYm9vbF90b19pbnQgYikpKVxuOztcblxubGV0IGV4aXN0cyB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOjFcbmxldCBmb3JfYWxsIHQgbm9kZXMgPSBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfms6KEFycmF5Lmxlbmd0aCBub2RlcylcblxubGV0IHN1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH51cGRhdGU6KEZfaW52ZXJzZSBzdWIpXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBvcHRfc3VtIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgbm9kZXMgfnplcm8gfmFkZCB+c3ViID1cbiAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH5mX2ludmVyc2U6c3ViXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBzdW1faW50IHQgbm9kZXMgPSBzdW0gdCBub2RlcyB+emVybzowIH5hZGQ6KCArICkgfnN1YjooIC0gKVxuXG5sZXQgc3VtX2Zsb2F0IHQgbm9kZXMgPVxuICBzdW1cbiAgICB0XG4gICAgbm9kZXNcbiAgICB+emVybzowLlxuICAgIH5hZGQ6KCArLiApXG4gICAgfnN1YjooIC0uIClcbiAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczooQXJyYXkubGVuZ3RoIG5vZGVzKVxuOztcblxubGV0IHNldF9mcmVlemUgKG5vZGUgOiBfIE5vZGUudCkgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFNjb3BlLmlzX3RvcCBub2RlLmNyZWF0ZWRfaW4pO1xuICAoKiBCeSBtYWtpbmcgW25vZGUua2luZF0gYmUgW0ZyZWV6ZV0sIHdlIGFyZSBtYWtpbmcgW05vZGUuaXNfbmVjZXNzYXJ5IG5vZGVdLiAqKVxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgaW5cbiAgTm9kZS5zZXRfa2luZCBub2RlIChGcmVlemUgeyBtYWluID0gbm9kZTsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW4gfSk7XG4gIGlmIHdhc19uZWNlc3NhcnlcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4OktpbmQuZnJlZXplX2NoaWxkX2luZGV4XG4gIGVsc2UgYmVjYW1lX25lY2Vzc2FyeSBub2RlXG47O1xuXG5sZXQgZnJlZXplIChjaGlsZCA6IF8gTm9kZS50KSB+b25seV9mcmVlemVfd2hlbiA9XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IG5vZGUgPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gIHNldF9mcmVlemUgbm9kZSB+Y2hpbGQgfm9ubHlfZnJlZXplX3doZW47XG4gIG5vZGVcbjs7XG5cbmxldCBhdCBjbG9jayB0aW1lID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKG5vdyBjbG9jaylcbiAgdGhlbiBjb25zdCB0IEJlZm9yZV9vcl9hZnRlci5BZnRlclxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBhdCA9IHsgQXQuYXQgPSB0aW1lOyBtYWluOyBhbGFybSA9IEFsYXJtLm51bGw7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKEF0IGF0KTtcbiAgICBhdC5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0OnRpbWUgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoQXQgYXQpKTtcbiAgICBtYWluKVxuOztcblxubGV0IGFmdGVyIGNsb2NrIHNwYW4gPSBhdCBjbG9jayAoVGltZV9ucy5hZGQgKG5vdyBjbG9jaykgc3BhbilcblxubGV0IG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IChjbG9jayA6IENsb2NrLnQpIH5iYXNlIH5pbnRlcnZhbCA9XG4gIGxldCBhZnRlciA9IG5vdyBjbG9jayBpblxuICBsZXQgYXQgPSBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCB+Y2FuX2VxdWFsX2FmdGVyOmZhbHNlICgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IGFmdGVyKTtcbiAgYXRcbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgKGNsb2NrIDogQ2xvY2sudCkgaW50ZXJ2YWwgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPCApIGludGVydmFsIChUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIGNsb2NrLnRpbWluZ193aGVlbClcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhdF9pbnRlcnZhbHMgZ290IHRvbyBzbWFsbCBpbnRlcnZhbFwiXG4gICAgICBpbnRlcnZhbFxuICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF07XG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBiYXNlID0gbm93IGNsb2NrIGluXG4gIGxldCBhdF9pbnRlcnZhbHMgPSB7IEF0X2ludGVydmFscy5tYWluOyBiYXNlOyBpbnRlcnZhbDsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyk7XG4gICgqIFttYWluIDogdW5pdCBOb2RlLnRdLCBzbyB3ZSBtYWtlIGl0IG5ldmVyIGN1dG9mZiBzbyBpdCBjaGFuZ2VzIGVhY2ggdGltZSBpdCBpc1xuICAgICByZWNvbXB1dGVkLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbWFpbiBDdXRvZmYubmV2ZXI7XG4gIGF0X2ludGVydmFscy5hbGFybVxuICA8LSBhZGRfYWxhcm1cbiAgICAgICBjbG9ja1xuICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpKTtcbiAgbWFpblxuOztcblxubGV0IHNuYXBzaG90IGNsb2NrIHZhbHVlX2F0IH5hdCB+YmVmb3JlID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIGF0IChub3cgY2xvY2spXG4gIHRoZW5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IChub3cgY2xvY2spXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvciBcImNhbm5vdCB0YWtlIHNuYXBzaG90IGluIHRoZSBwYXN0XCIgYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdXG4gICAgZWxzZSBPayAoZnJlZXplIHZhbHVlX2F0IH5vbmx5X2ZyZWV6ZV93aGVuOihGbi5jb25zdCB0cnVlKSlcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gICAgbGV0IHNuYXBzaG90ID0geyBTbmFwc2hvdC5tYWluOyBhdDsgYmVmb3JlOyB2YWx1ZV9hdDsgY2xvY2sgfSBpblxuICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoU25hcHNob3Qgc25hcHNob3QpO1xuICAgICgqIFVubGlrZSBvdGhlciB0aW1lLWJhc2VkIGluY3JlbWVudGFscywgYSBzbmFwc2hvdCBpcyBjcmVhdGVkIGluIFtTY29wZS50b3BdIGFuZFxuICAgICAgIGNhbm5vdCBiZSBpbnZhbGlkYXRlZCBieSBpdHMgc2NvcGUuICBUaHVzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gICAgICAgYWxhcm0gdGhhdCBpcyBhZGRlZCwgYmVjYXVzZSBpdCB3aWxsIG5ldmVyIG5lZWQgdG8gYmUgcmVtb3ZlZCBlYXJseS4gKilcbiAgICBpZ25vcmUgKGFkZF9hbGFybSBjbG9jayB+YXQgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU25hcHNob3Qgc25hcHNob3QpKSA6IEFsYXJtLnQpO1xuICAgIE9rIG1haW4pXG47O1xuXG5sZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiBjbG9jayBjaGlsZCA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgc3RlcF9mdW5jdGlvbl9ub2RlID1cbiAgICB7IFN0ZXBfZnVuY3Rpb25fbm9kZS5tYWluXG4gICAgOyB2YWx1ZSA9IFVvcHQubm9uZVxuICAgIDsgY2hpbGQgPSBVb3B0LnNvbWUgY2hpbGRcbiAgICA7IGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyB1cGNvbWluZ19zdGVwcyA9IFNlcXVlbmNlLmVtcHR5XG4gICAgOyBhbGFybSA9IEFsYXJtLm51bGxcbiAgICA7IGFsYXJtX3ZhbHVlID0gT2JqLm1hZ2ljIE5vbmUgKCogc2V0IGJlbG93ICopXG4gICAgOyBjbG9ja1xuICAgIH1cbiAgaW5cbiAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlIDwtIEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgbWFpblxuOztcblxubGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIFN0YWJpbGl6YXRpb25fbnVtLm5vbmU7XG4gICgqIGZvcmNlIHRoZSBub2RlIHRvIGJlIHN0YWxlICopXG4gIGlmIE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgYWR2YW5jZV9jbG9jayAoY2xvY2sgOiBDbG9jay50KSB+dG9fID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcImFkdmFuY2VfY2xvY2tcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6dHJ1ZTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgVGltZV9ucy4oID4gKSB0b18gKG5vdyBjbG9jaylcbiAgdGhlbiAoXG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgY2xvY2subm93IHRvXztcbiAgICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayBjbG9jay50aW1pbmdfd2hlZWwgfnRvXyB+aGFuZGxlX2ZpcmVkOmNsb2NrLmhhbmRsZV9maXJlZDtcbiAgICBUaW1pbmdfd2hlZWwuZmlyZV9wYXN0X2FsYXJtcyBjbG9jay50aW1pbmdfd2hlZWwgfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgd2hpbGUgVW9wdC5pc19zb21lIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBkb1xuICAgICAgbGV0IGFsYXJtX3ZhbHVlID0gVW9wdC51bnNhZmVfdmFsdWUgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIGluXG4gICAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gYWxhcm1fdmFsdWUubmV4dF9maXJlZDtcbiAgICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gVW9wdC5ub25lO1xuICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgIHwgQXQgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoQ29uc3QgQWZ0ZXIpO1xuICAgICAgICAgIG1ha2Vfc3RhbGUgbWFpbilcbiAgICAgIHwgQXRfaW50ZXJ2YWxzICh7IG1haW47IGJhc2U7IGludGVydmFsOyBfIH0gYXMgYXRfaW50ZXJ2YWxzKSAtPlxuICAgICAgICBpZiBOb2RlLmlzX3ZhbGlkIG1haW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gICAgICAgICAgPC0gYWRkX2FsYXJtXG4gICAgICAgICAgICAgICBjbG9ja1xuICAgICAgICAgICAgICAgfmF0OihuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCBjbG9jayB+YmFzZSB+aW50ZXJ2YWwpXG4gICAgICAgICAgICAgICBhbGFybV92YWx1ZTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IFNuYXBzaG90IHsgbWFpbjsgdmFsdWVfYXQ7IF8gfSAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBtYWluKTtcbiAgICAgICAgc2V0X2ZyZWV6ZSBtYWluIH5jaGlsZDp2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooZnVuIF8gLT4gdHJ1ZSk7XG4gICAgICAgIG1ha2Vfc3RhbGUgbWFpblxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgbWFpbjsgXyB9IC0+IGlmIE5vZGUuaXNfdmFsaWQgbWFpbiB0aGVuIG1ha2Vfc3RhbGUgbWFpblxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdClcbjs7XG5cbmxldCBjcmVhdGVfY2xvY2sgdCB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgPVxuICBsZXQgdGltaW5nX3doZWVsID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0IGluXG4gIGxldCByZWMgY2xvY2sgOiBDbG9jay50ID1cbiAgICB7IG5vdyA9IGNyZWF0ZV92YXIgdCBzdGFydFxuICAgIDsgaGFuZGxlX2ZpcmVkXG4gICAgOyBmaXJlZF9hbGFybV92YWx1ZXMgPSBVb3B0Lm5vbmVcbiAgICA7IHRpbWluZ193aGVlbFxuICAgIH1cbiAgYW5kIGhhbmRsZV9maXJlZCBhbGFybSA9XG4gICAgbGV0IGFsYXJtX3ZhbHVlID0gVGltaW5nX3doZWVsLkFsYXJtLnZhbHVlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybSBpblxuICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzO1xuICAgIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyA8LSBVb3B0LnNvbWUgYWxhcm1fdmFsdWVcbiAgaW5cbiAgY2xvY2tcbjs7XG5cbmxldCBjcmVhdGUgKG1vZHVsZSBDb25maWcgOiBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgbGV0IGFkanVzdF9oZWlnaHRzX2hlYXAgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCByZWNvbXB1dGVfaGVhcCA9IFJlY29tcHV0ZV9oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCB0ID1cbiAgICB7IHN0YXR1cyA9IE5vdF9zdGFiaWxpemluZ1xuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IENvbmZpZy5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgOyBzdGFiaWxpemF0aW9uX251bSA9IFN0YWJpbGl6YXRpb25fbnVtLnplcm9cbiAgICA7IGN1cnJlbnRfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICA7IHJlY29tcHV0ZV9oZWFwXG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgPSAwXG4gICAgOyBhbGxfb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbmV3X29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgb25seV9pbl9kZWJ1ZyA9IE9ubHlfaW5fZGVidWcuY3JlYXRlICgpXG4gICAgOyB3ZWFrX2hhc2h0YmxzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlID0gZmFsc2VcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ID0gMFxuICAgIDsgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19jaGFuZ2VkID0gMFxuICAgIDsgbnVtX25vZGVzX2ludmFsaWRhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX2NyZWF0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ID0gMFxuICAgIDsgbnVtX3Zhcl9zZXRzID0gMFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gV2Vha19oYXNodGJsLmNyZWF0ZSB+c2l6ZTppbml0aWFsX3NpemUgaGFzaGFibGUgaW5cbiAgbGV0IHBhY2tlZCA9IFBhY2tlZF93ZWFrX2hhc2h0YmwuVCB0YWJsZSBpblxuICBXZWFrX2hhc2h0Ymwuc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHRhYmxlIH50aHJlYWRfc2FmZV9mOihmdW4gKCkgLT5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQud2Vha19oYXNodGJscyBwYWNrZWQpO1xuICBzdGFnZSAoZnVuIGEgLT5cbiAgICBsZXQga2V5ID0gcHJvamVjdF9rZXkgYSBpblxuICAgIG1hdGNoIFdlYWtfaGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIFdlYWtfaGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICgqIEdpdmVuIHRoYXQgaW52YWxpZCBub2RlIGFyZSBhdCBhdHRlbXB0IGF0IGF2b2lkaW5nIGJyZWFraW5nIHRoZSBlbnRpcmUgaW5jcmVtZW50YWxcbiAgICAgY29tcHV0YXRpb24gb24gcHJvYmxlbXMsIGxldCdzIGp1c3QgaWdub3JlIGFueSBvcGVyYXRpb24gb24gYW4gaW52YWxpZCBpbmNyZW1lbnRhbFxuICAgICByYXRoZXIgdGhhbiByYWlzaW5nLiAqKVxuICBsZXQgZXhwZXJ0X2tpbmRfb2Zfbm9kZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICB8IEV4cGVydCBlIC0+IFVvcHQuc29tZSBlXG4gICAgfCBJbnZhbGlkIC0+IFVvcHQubm9uZVxuICAgIHwga2luZCAtPiByYWlzZV9zIFslc2V4cCBcInVuZXhwZWN0ZWQga2luZCBmb3IgZXhwZXJ0IG5vZGVcIiwgKGtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9XG4gICAgbGV0IGUgPSBFeHBlcnQuY3JlYXRlIH5mIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBpblxuICAgIGxldCBub2RlID0gY3JlYXRlX25vZGUgc3RhdGUgKEV4cGVydCBlKSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgc3RhdGUub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlXG4gICAgICB0aGVuXG4gICAgICAgIHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlXG4gICAgICAgIDwtIFQgbm9kZSA6OiBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgPVxuICAgIG1hdGNoIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiA6IHN0cmluZyldXG4gICAgfCBTb21lIGN1cnJlbnQgLT4gY3VycmVudFxuICA7O1xuXG4gICgqIE5vdGUgdGhhdCB0aGUgdHdvIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBzeW1tZXRyaWMgb2Ygb25lIGFub3RoZXI6IGluIFtsZXQgeSA9XG4gICAgIG1hcCB4XSwgW3hdIGlzIGFsd2F5cyBhIGNoaWxkIG9mIFt5XSAoYXNzdW1pbmcgW3hdIGRvZXNuJ3QgYmVjb21lIGludmFsaWQpIGJ1dCBbeV0gaW5cbiAgICAgb25seSBhIHBhcmVudCBvZiBbeF0gaWYgeSBpcyBuZWNlc3NhcnkuICopXG4gIGxldCBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX2NoaWxkIG5vZGUgfmNoaWxkOmN1cnJlbnQpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIG9uIHBhcmVudCBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfcGFyZW50IHN0YXRlIG5vZGUgbmFtZSA9XG4gICAgbGV0IChUIGN1cnJlbnQpID0gY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSBpblxuICAgIGlmIG5vdCAoTm9kZS5oYXNfcGFyZW50IH5wYXJlbnQ6Y3VycmVudCBub2RlKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBjaGlsZHJlbiBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwibWFrZV9zdGFsZVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbWF0Y2ggRXhwZXJ0Lm1ha2Vfc3RhbGUgZSB3aXRoXG4gICAgICB8IGBBbHJlYWR5X3N0YWxlIC0+ICgpXG4gICAgICB8IGBPayAtPlxuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICA7O1xuXG4gIGxldCBpbnZhbGlkYXRlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiaW52YWxpZGF0ZVwiO1xuICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChkZXAgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgKExpc3QubWVtXG4gICAgICAgICAgICAgICAgfmVxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICAgICAgICAgIChUIG5vZGUpKVxuICAgICAgICB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJhZGRfZGVwZW5kZW5jeVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbGV0IG5ld19jaGlsZF9pbmRleCA9IEV4cGVydC5hZGRfY2hpbGRfZWRnZSBlIChFIGRlcCkgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGV2ZW4gaWYgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBvZlxuICAgICAgICAgW25vZGVdLCBiZWNhdXNlIHdlIGNvdWxkIGJlIHJ1bm5pbmcgZHVlIHRvIGEgcGFyZW50IG90aGVyIHRoYW4gW25vZGVdIG1ha2luZyB1c1xuICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOmRlcC5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Om5ld19jaGlsZF9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKSlcbiAgOztcblxuICBsZXQgcmVtb3ZlX2RlcGVuZGVuY3kgKG5vZGUgOiBfIE5vZGUudCkgKGVkZ2UgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwicmVtb3ZlX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGZvciB0aGUgcmVhc29uIHN0YXRlZCBpblxuICAgICAgICAgW2FkZF9kZXBlbmRlbmN5XSAqKVxuICAgICAgbGV0IGVkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBlZGdlLmluZGV4IGluXG4gICAgICBsZXQgKEUgbGFzdF9lZGdlKSA9IEV4cGVydC5sYXN0X2NoaWxkX2VkZ2VfZXhuIGUgaW5cbiAgICAgIGxldCBsYXN0X2VkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBsYXN0X2VkZ2UuaW5kZXggaW5cbiAgICAgIGlmIGVkZ2VfaW5kZXggPD4gbGFzdF9lZGdlX2luZGV4XG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9kZS5zd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB+Y2hpbGQxOmVkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleFxuICAgICAgICAgICAgfmNoaWxkMjpsYXN0X2VkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDI6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBFeHBlcnQuc3dhcF9jaGlsZHJlbiBlIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleCB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSk7XG4gICAgICBFeHBlcnQucmVtb3ZlX2xhc3RfY2hpbGRfZWRnZV9leG4gZTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIG5vZGUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQ6ZWRnZS5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Omxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBlZGdlLmNoaWxkKSB0aGVuIEV4cGVydC5kZWNyX2ludmFsaWRfY2hpbGRyZW4gZSkpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBFeHBlcnQuZWRnZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhvbl9jaGFuZ2UgPSBpZ25vcmUpIGNoaWxkIDogXyB0ID0geyBjaGlsZDsgb25fY2hhbmdlOyBpbmRleCA9IFVvcHQubm9uZSB9XG5cbiAgbGV0IHZhbHVlICh0IDogXyB0KSA9XG4gICAgbGV0IHN0YXRlID0gdC5jaGlsZC5zdGF0ZSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgU3RhdGUuRXhwZXJ0LmFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudFxuICAgICAgICBzdGF0ZVxuICAgICAgICB0LmNoaWxkXG4gICAgICAgIFwiRGVwZW5kZW5jeS52YWx1ZVwiO1xuICAgICgqIE5vdCBleHBvc2luZyB0aGUgX2V4biwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFkdmVydGlzZWQgYXMgYmVpbmcgdXNhYmxlIG9ubHlcbiAgICAgICBpbnNpZGUgdGhlIGNhbGxiYWNrcyBvZiBwYXJlbnRzLCB3aGVyZSBpdCB3aWxsIG5vdCByYWlzZS4gKilcbiAgICBOb2RlLnZhbHVlX2V4biB0LmNoaWxkXG4gIDs7XG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgc3RhdGUgPyhvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IGZ1biB+aXNfbm93X29ic2VydmFibGU6XyAtPiAoKSkgZiA9XG4gICAgU3RhdGUuRXhwZXJ0LmNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICA7O1xuXG4gIGxldCBtYWtlX3N0YWxlID0gU3RhdGUuRXhwZXJ0Lm1ha2Vfc3RhbGVcbiAgbGV0IHdhdGNoID0gRm4uaWRcbiAgbGV0IGludmFsaWRhdGUgPSBTdGF0ZS5FeHBlcnQuaW52YWxpZGF0ZVxuICBsZXQgYWRkX2RlcGVuZGVuY3kgPSBTdGF0ZS5FeHBlcnQuYWRkX2RlcGVuZGVuY3lcbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LnJlbW92ZV9kZXBlbmRlbmN5XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5sZXQgY3JlYXRlIHN0YXRlIGNoaWxkcmVuIH5mIH5yZWR1Y2UgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWR1Y2VyID0gQmFsYW5jZWRfcmVkdWNlci5jcmVhdGVfZXhuICgpIH5sZW4gfnJlZHVjZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyO1xuICAgIGxldCBub2RlID1cbiAgICAgIEV4cGVydDEuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgYSA9IEJhbGFuY2VkX3JlZHVjZXIuY29tcHV0ZV9leG4gcmVkdWNlciBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICAgICAgYSlcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBFeHBlcnQxLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRXhwZXJ0MS5EZXBlbmRlbmN5LmNyZWF0ZSBjaGlsZHJlbi4oaSkgfm9uX2NoYW5nZTooZnVuIGEgLT5cbiAgICAgICAgICAgQmFsYW5jZWRfcmVkdWNlci5zZXRfZXhuIHJlZHVjZXIgaSAoZiBhKTtcbiAgICAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXIpKVxuICAgIGRvbmU7XG4gICAgU29tZSAoRXhwZXJ0MS5Ob2RlLndhdGNoIG5vZGUpKVxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIG1vc3RseSBhIHdyYXBwZXIgYXJvdW5kIFtTdGF0ZV0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5jcmVtZW50YWxfaW50ZlxuXG5tb2R1bGUgdHlwZSBJbmNyZW1lbnRhbF9jb25maWcgPSBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnXG5cbm1vZHVsZSBDb25maWcgPSBDb25maWdcblxubGV0IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkID0gMTI4XG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIG1vZHVsZSBDdXRvZmYgPSBDdXRvZmZcbiAgbW9kdWxlIFN0ZXBfZnVuY3Rpb24gPSBTdGVwX2Z1bmN0aW9uXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIHZhbCB0IDogdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZV9pbnRlcm5hbCA9IGNyZWF0ZVxuXG4gICAgbGV0IGNyZWF0ZSA/KG1heF9oZWlnaHRfYWxsb3dlZCA9IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkKSAoKSA6IChtb2R1bGUgUykgPVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgKG1vZHVsZSBDb25maWcuRGVmYXVsdCAoKSkgfm1heF9oZWlnaHRfYWxsb3dlZFxuICAgICAgZW5kKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50IChzdGF0ZSA6IFN0YXRlLnQpICgpID0gc3RhdGUuY3VycmVudF9zY29wZVxuICAgIGxldCB3aXRoaW4gc3RhdGUgdCB+ZiA9IFN0YXRlLndpdGhpbl9zY29wZSBzdGF0ZSB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTm9kZVxuXG4gIGxldCBzdGF0ZSB0ID0gdC5zdGF0ZVxuICBsZXQgcGFjayB0ID0gUGFja2VkLlQgdFxuICBsZXQgY29uc3Qgc3RhdGUgYSA9IFN0YXRlLmNvbnN0IHN0YXRlIGFcbiAgbGV0IHJldHVybiA9IGNvbnN0XG4gIGxldCBvYnNlcnZlID0gU3RhdGUuY3JlYXRlX29ic2VydmVyXG4gIGxldCBtYXAgPSBTdGF0ZS5tYXBcbiAgbGV0IGJpbmQgPSBTdGF0ZS5iaW5kXG5cbiAgbW9kdWxlIE5fYXJ5X21hcF9hbmRfYmluZCA9IHN0cnVjdFxuICAgIGxldCBtYXAyID0gU3RhdGUubWFwMlxuICAgIGxldCBtYXAzID0gU3RhdGUubWFwM1xuICAgIGxldCBtYXA0ID0gU3RhdGUubWFwNFxuICAgIGxldCBtYXA1ID0gU3RhdGUubWFwNVxuICAgIGxldCBtYXA2ID0gU3RhdGUubWFwNlxuICAgIGxldCBtYXA3ID0gU3RhdGUubWFwN1xuICAgIGxldCBtYXA4ID0gU3RhdGUubWFwOFxuICAgIGxldCBtYXA5ID0gU3RhdGUubWFwOVxuICAgIGxldCBtYXAxMCA9IFN0YXRlLm1hcDEwXG4gICAgbGV0IG1hcDExID0gU3RhdGUubWFwMTFcbiAgICBsZXQgbWFwMTIgPSBTdGF0ZS5tYXAxMlxuICAgIGxldCBtYXAxMyA9IFN0YXRlLm1hcDEzXG4gICAgbGV0IG1hcDE0ID0gU3RhdGUubWFwMTRcbiAgICBsZXQgbWFwMTUgPSBTdGF0ZS5tYXAxNVxuICAgIGxldCBiaW5kMiA9IFN0YXRlLmJpbmQyXG4gICAgbGV0IGJpbmQzID0gU3RhdGUuYmluZDNcbiAgICBsZXQgYmluZDQgPSBTdGF0ZS5iaW5kNFxuICBlbmRcblxuICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gIG1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgSW5maXhcblxuICBsZXQgam9pbiA9IFN0YXRlLmpvaW5cbiAgbGV0IGlmXyA9IFN0YXRlLmlmX1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuICBsZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IFN0YXRlLmRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemVcbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLm1lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSBzdGF0ZSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcblxuICBsZXQgYXJyYXlfZm9sZCBzdGF0ZSB0cyB+aW5pdCB+ZiA9IFN0YXRlLmFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCBzdGF0ZSB0cyB+ZiB+cmVkdWNlID0gUmVkdWNlX2JhbGFuY2VkLmNyZWF0ZSBzdGF0ZSB0cyB+ZiB+cmVkdWNlXG5cbiAgbW9kdWxlIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZSA9IFN0YXRlLlVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA9IFN0YXRlLnVub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS5vcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgbGV0IGFsbCA9IFN0YXRlLmFsbFxuICBsZXQgZXhpc3RzID0gU3RhdGUuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gU3RhdGUuZm9yX2FsbFxuICBsZXQgYm90aCA9IFN0YXRlLmJvdGhcbiAgbGV0IHN1bSA9IFN0YXRlLnN1bVxuICBsZXQgb3B0X3N1bSA9IFN0YXRlLm9wdF9zdW1cbiAgbGV0IHN1bV9pbnQgPSBTdGF0ZS5zdW1faW50XG4gIGxldCBzdW1fZmxvYXQgPSBTdGF0ZS5zdW1fZmxvYXRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgPSBTdGF0ZS5jcmVhdGVfdmFyXG4gICAgbGV0IHNldCA9IFN0YXRlLnNldF92YXJcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgd2F0Y2ggdCA9IHQud2F0Y2hcblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0LnZhbHVlIHw+IFslc2V4cF9vZjogYV1cbiAgICBsZXQgcmVwbGFjZSB0IH5mID0gc2V0IHQgKGYgKGxhdGVzdF92YWx1ZSB0KSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBPYnNlcnZlclxuXG4gICAgbW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBJbml0aWFsaXplZCBvZiAnYVxuICAgICAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgICAgICB8IEludmFsaWRhdGVkXG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IG9uX3VwZGF0ZV9leG4gdCB+KGYgOiBfIFVwZGF0ZS50IC0+IHVuaXQpID1cbiAgICAgIFN0YXRlLm9ic2VydmVyX29uX3VwZGF0ZV9leG4gdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOZWNlc3NhcnkgYSAtPiBmIChJbml0aWFsaXplZCBhKVxuICAgICAgICB8IENoYW5nZWQgKGExLCBhMikgLT4gZiAoQ2hhbmdlZCAoYTEsIGEyKSlcbiAgICAgICAgfCBJbnZhbGlkYXRlZCAtPiBmIEludmFsaWRhdGVkXG4gICAgICAgIHwgVW5uZWNlc3NhcnkgLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiSW5jcmVtZW50YWwgYnVnIC0tIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gZ290IHVuZXhwZWN0ZWQgdXBkYXRlIFVubmVjZXNzYXJ5XCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFslc2V4cF9vZjogXyB0XSlcbiAgICA7O1xuXG4gICAgbGV0IGRpc2FsbG93X2Z1dHVyZV91c2UgdCA9IFN0YXRlLmRpc2FsbG93X2Z1dHVyZV91c2UgIXRcbiAgICBsZXQgdmFsdWUgPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZVxuICAgIGxldCB2YWx1ZV9leG4gPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZV9leG5cblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hICh0IDogXyB0KSA9XG4gICAgICBtYXRjaCAhdC5zdGF0ZSB3aXRoXG4gICAgICB8IENyZWF0ZWQgLT4gWyVtZXNzYWdlIFwiPHVuc3RhYmlsaXplZD5cIl1cbiAgICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IFslbWVzc2FnZSBcIjxkaXNhbGxvd2VkPlwiXVxuICAgICAgfCBJbl91c2UgLT5cbiAgICAgICAgbGV0IHVvcHQgPSAhdC5vYnNlcnZpbmcudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSB1b3B0XG4gICAgICAgIHRoZW4gWyVtZXNzYWdlIFwiPGludmFsaWQ+XCJdXG4gICAgICAgIGVsc2UgWyVzZXhwIChVb3B0LnVuc2FmZV92YWx1ZSB1b3B0IDogYSldXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEJlZm9yZV9vcl9hZnRlciA9IEJlZm9yZV9vcl9hZnRlclxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGUuQ2xvY2tcblxuICAgIGxldCBzdGF0ZSA9IGluY3Jfc3RhdGVcblxuICAgIGxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICAgICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQgaW5cbiAgICAgIGxldCBsZXZlbF9iaXRzID0gWyAxNDsgMTM7IDUgXSBpblxuICAgICAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICAgICAgfmFsYXJtX3ByZWNpc2lvblxuICAgICAgICB+bGV2ZWxfYml0czpcbiAgICAgICAgICAoVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBsZXZlbF9iaXRzIH5leHRlbmRfdG9fbWF4X251bV9iaXRzOnRydWUpXG4gICAgICAgICgpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgc3RhdGUgPyh0aW1pbmdfd2hlZWxfY29uZmlnID0gZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnKSB+c3RhcnQgKCkgPVxuICAgICAgKCogTWFrZSBzdXJlIFtzdGFydF0gaXMgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gIE90aGVyd2lzZSwgaWYgeW91XG4gICAgICAgICBmZWVkIFtDbG9jay5ub3cgKCldIHRvIGEgdGltZSBmdW5jdGlvbiwgaXQgY2FuIGJlIHJvdW5kZWQgZG93biB0byBhIHRpbWUgaW5cbiAgICAgICAgIHRoZSBwYXN0LCBjYXVzaW5nIGVycm9ycy4gKilcbiAgICAgIGxldCBzdGFydCA9XG4gICAgICAgIFRpbWVfbnMub2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG4gICAgICAgICAgKFRpbWVfbnMudG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHN0YXJ0KVxuICAgICAgaW5cbiAgICAgIFN0YXRlLmNyZWF0ZV9jbG9jayBzdGF0ZSB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnRcbiAgICA7O1xuXG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LnRpbWluZ193aGVlbFxuICAgIGxldCB0aW1pbmdfd2hlZWxfbGVuZ3RoID0gU3RhdGUudGltaW5nX3doZWVsX2xlbmd0aFxuICAgIGxldCBub3cgPSBTdGF0ZS5ub3dcbiAgICBsZXQgd2F0Y2hfbm93IHQgPSB0Lm5vdy53YXRjaFxuICAgIGxldCBhdCA9IFN0YXRlLmF0XG4gICAgbGV0IGFmdGVyID0gU3RhdGUuYWZ0ZXJcbiAgICBsZXQgYXRfaW50ZXJ2YWxzID0gU3RhdGUuYXRfaW50ZXJ2YWxzXG4gICAgbGV0IGFkdmFuY2VfY2xvY2sgPSBTdGF0ZS5hZHZhbmNlX2Nsb2NrXG4gICAgbGV0IGFkdmFuY2VfY2xvY2tfYnkgdCBzcGFuID0gYWR2YW5jZV9jbG9jayB0IH50b186KFRpbWVfbnMuYWRkIChub3cgdCkgc3BhbilcbiAgICBsZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiA9IFN0YXRlLmluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxuICAgIGxldCBzdGVwX2Z1bmN0aW9uIHQgfmluaXQgc3RlcHMgPVxuICAgICAgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuICAgICAgICB0XG4gICAgICAgIChjb25zdCAoaW5jcl9zdGF0ZSB0KSAoU3RlcF9mdW5jdGlvbi5jcmVhdGVfZXhuIH5pbml0IH5zdGVwcykpXG4gICAgOztcblxuICAgIGxldCBzbmFwc2hvdCA9IFN0YXRlLnNuYXBzaG90XG4gIGVuZFxuXG4gIGxldCBmcmVlemUgPyh3aGVuXyA9IGZ1biBfIC0+IHRydWUpIHQgPSBTdGF0ZS5mcmVlemUgdCB+b25seV9mcmVlemVfd2hlbjp3aGVuX1xuICBsZXQgZGVwZW5kX29uIHQgfmRlcGVuZF9vbiA9IFN0YXRlLmRlcGVuZF9vbiB0IH5kZXBlbmRfb25cbiAgbGV0IG5lY2Vzc2FyeV9pZl9hbGl2ZSA9IFN0YXRlLm5lY2Vzc2FyeV9pZl9hbGl2ZVxuXG4gIG1vZHVsZSBVcGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG4gIGxldCBvbl91cGRhdGUgPSBTdGF0ZS5ub2RlX29uX3VwZGF0ZVxuICBsZXQgc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuc3RhYmlsaXplIHN0YXRlXG4gIGxldCBhbV9zdGFiaWxpemluZyBzdGF0ZSA9IFN0YXRlLmFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gIGxldCBzYXZlX2RvdCA9IFN0YXRlLnNhdmVfZG90XG4gIGxldCBzYXZlX2RvdF90b19maWxlID0gU3RhdGUuc2F2ZV9kb3RfdG9fZmlsZVxuXG4gIG1vZHVsZSBOb2RlX3ZhbHVlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgSW52YWxpZFxuICAgICAgfCBOZWNlc3NhcnlfbWF5YmVfc3RhbGUgb2YgJ2Egb3B0aW9uXG4gICAgICB8IFVubmVjZXNzYXJ5X21heWJlX3N0YWxlIG9mICdhIG9wdGlvblxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBub2RlX3ZhbHVlIHQgOiBfIE5vZGVfdmFsdWUudCA9XG4gICAgaWYgbm90IChpc192YWxpZCB0KVxuICAgIHRoZW4gSW52YWxpZFxuICAgIGVsc2UgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICB0aGVuIE5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gICAgZWxzZSBVbm5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gIDs7XG5cbiAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8gc2hvdyBqdXN0IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgIHJlcHJlc2VudGF0aW9uLiAgV2Ugb25seSBzaG93IHRoZSB2YWx1ZSBpZiBpdCBpcyBuZWNlc3NhcnkgYW5kIHZhbGlkLiAqKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBub3QgKGlzX3ZhbGlkIHQpXG4gICAgdGhlbiBcIjxpbnZhbGlkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICB0aGVuIFwiPHVubmVjZXNzYXJ5PlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgVW9wdC5pc19ub25lIHQudmFsdWVfb3B0XG4gICAgdGhlbiBcIjx1bmNvbXB1dGVkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgdW5zYWZlX3ZhbHVlIHQgfD4gWyVzZXhwX29mOiBhXVxuICA7O1xuXG4gIG1vZHVsZSBFeHBlcnQgPSBFeHBlcnQxXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCB0MSB0MiA9IG1hcDIgdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpXG5cbiAgICAgIGluY2x1ZGUgTl9hcnlfbWFwX2FuZF9iaW5kXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdFxuICAgICAgICBsZXQgd2F0Y2ggPSBWYXIud2F0Y2hcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS53ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9jb25maWcgKEluY3JlbWVudGFsX2NvbmZpZyA6IEluY3JlbWVudGFsX2NvbmZpZykgKCkgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgKG1vZHVsZSBJbmNyZW1lbnRhbF9jb25maWcpIH5tYXhfaGVpZ2h0X2FsbG93ZWQ6MTI4XG4gIGVuZFxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2xvY2tcblxuICAgIGxldCBjcmVhdGUgP3RpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ICgpID1cbiAgICAgIGNyZWF0ZSA/dGltaW5nX3doZWVsX2NvbmZpZyBTdGF0ZS50IH5zdGFydCAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cGVydFxuXG4gICAgbW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICBsZXQgY3JlYXRlID9vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmID0gY3JlYXRlIFN0YXRlLnQgP29uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGVwX3Jlc3VsdCA9IFN0YXRlLlN0ZXBfcmVzdWx0XG5cbiAgICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplICgpID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIFN0YXRlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgIGxldCByZXR1cm4gYSA9IHJldHVybiBTdGF0ZS50IGFcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoKSA9IGN1cnJlbnQgU3RhdGUudCAoKVxuICAgIGxldCB3aXRoaW4gdCB+ZiA9IHdpdGhpbiBTdGF0ZS50IHQgfmZcbiAgZW5kXG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID91c2VfY3VycmVudF9zY29wZSB2YWx1ZSA9IGNyZWF0ZSA/dXNlX2N1cnJlbnRfc2NvcGUgU3RhdGUudCB2YWx1ZVxuICBlbmRcblxuICBsZXQgY29uc3QgYSA9IGNvbnN0IFN0YXRlLnQgYVxuICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gU3RhdGUudCBhXG4gIGxldCBhbGwgdHMgPSBhbGwgU3RhdGUudCB0c1xuICBsZXQgZXhpc3RzIHRzID0gZXhpc3RzIFN0YXRlLnQgdHNcbiAgbGV0IGZvcl9hbGwgdHMgPSBmb3JfYWxsIFN0YXRlLnQgdHNcbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcblxuICBsZXQgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgaGFzaGFibGUgcHJvamVjdF9rZXkgZiA9XG4gICAgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgaGFzaGFibGUgZiA9IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIGxldCBhcnJheV9mb2xkIHRzIH5pbml0IH5mID0gYXJyYXlfZm9sZCBTdGF0ZS50IHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgdHMgfmYgfnJlZHVjZSA9IHJlZHVjZV9iYWxhbmNlZCBTdGF0ZS50IHRzIH5mIH5yZWR1Y2VcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfnVwZGF0ZSA9XG4gICAgdW5vcmRlcmVkX2FycmF5X2ZvbGQgU3RhdGUudCB0cyB+aW5pdCB+ZiB+dXBkYXRlID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDs7XG5cbiAgbGV0IG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgICBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlXG4gIDs7XG5cbiAgbGV0IHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+emVybyB+YWRkIH5zdWIgPVxuICAgIHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBvcHRfc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH56ZXJvIH5hZGQgfnN1YiA9XG4gICAgb3B0X3N1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBzdW1faW50IHRzID0gc3VtX2ludCBTdGF0ZS50IHRzXG4gIGxldCBzdW1fZmxvYXQgdHMgPSBzdW1fZmxvYXQgU3RhdGUudCB0c1xuICBsZXQgc3RhYmlsaXplICgpID0gc3RhYmlsaXplIFN0YXRlLnRcbiAgbGV0IGFtX3N0YWJpbGl6aW5nICgpID0gYW1fc3RhYmlsaXppbmcgU3RhdGUudFxuICBsZXQgc2F2ZV9kb3Qgb3V0ID0gc2F2ZV9kb3QgU3RhdGUudCBvdXRcbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgZmlsZSA9IE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOnNhdmVfZG90XG4gIGxldCBsYXp5X2Zyb21fZnVuIGYgPSBsYXp5X2Zyb21fZnVuIFN0YXRlLnQgZlxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIHByb2plY3Rfa2V5IGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKCkgPSBNYWtlX3dpdGhfY29uZmlnIChDb25maWcuRGVmYXVsdCAoKSkgKClcbmluY2x1ZGUgR2VuZXJpY1xuXG5tb2R1bGUgQWRkX3dpdG5lc3MwIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICd3IHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAndyB0ID0gTS50XG5cbiAgbGV0IGludmFyaWFudCBfIHQgPSBNLmludmFyaWFudCB0XG4gIGxldCBzZXhwX29mX3QgXyB0ID0gTS5zZXhwX29mX3QgdFxuZW5kXG5cbm1vZHVsZSBBZGRfd2l0bmVzczEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ3cpIHQgPSAnYSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICd3KSB0ID0gJ2EgTS50XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBNLmludmFyaWFudCBpbnZhcmlhbnRfYSB0XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IE0uc2V4cF9vZl90IHNleHBfb2ZfYSB0XG5lbmRcblxubW9kdWxlIENsb2NrID0gc3RydWN0XG4gIGluY2x1ZGUgQ2xvY2tcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKENsb2NrKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlcnRcblxuICBtb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVwZW5kZW5jeVxuXG4gICAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIERlcGVuZGVuY3lcblxuICAgICAgICBsZXQgaW52YXJpYW50IF8gXyA9ICgpXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBOb2RlID0gc3RydWN0XG4gICAgaW5jbHVkZSBOb2RlXG5cbiAgICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICAgIGxldCBpbnZhcmlhbnQgXyBfID0gKClcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIFN0ZXBfcmVzdWx0ID0gU3RhdGUuU3RlcF9yZXN1bHRcblxuICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlXG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBOb2RlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChOb2RlKVxuZW5kXG5cbnR5cGUgKCdhLCAndykgdCA9ICgnYSwgJ3cpIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxudHlwZSAoJ2EsICd3KSBpbmNyZW1lbnRhbCA9ICgnYSwgJ3cpIHRcblxubGV0IGludmFyaWFudCA9IE5vZGUuaW52YXJpYW50XG5cbm1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICBpbmNsdWRlIE9ic2VydmVyXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChPYnNlcnZlcilcbmVuZFxuXG5tb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTY29wZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoU2NvcGUpXG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhdGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKFN0YXRlKVxuZW5kXG5cbm1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYXJcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKFZhcilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSB0ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBpbmNyZW1lbnRhbFxuICAgIHdpdGggdHlwZSBCZWZvcmVfb3JfYWZ0ZXIudCA9IEJlZm9yZV9vcl9hZnRlci50XG4gICAgd2l0aCB0eXBlIENsb2NrLnQgPSBzdGF0ZV93aXRuZXNzIENsb2NrLnRcbiAgICB3aXRoIHR5cGUgJ2EgQ3V0b2ZmLnQgPSAnYSBDdXRvZmYudFxuICAgIHdpdGggdHlwZSAnYSBFeHBlcnQuRGVwZW5kZW5jeS50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBFeHBlcnQuRGVwZW5kZW5jeS50XG4gICAgd2l0aCB0eXBlICdhIEV4cGVydC5Ob2RlLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEV4cGVydC5Ob2RlLnRcbiAgICB3aXRoIHR5cGUgRXhwZXJ0LlN0ZXBfcmVzdWx0LnQgPSBFeHBlcnQuU3RlcF9yZXN1bHQudFxuICAgIHdpdGggdHlwZSAnYSBPYnNlcnZlci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBPYnNlcnZlci50XG4gICAgd2l0aCB0eXBlICdhIE9ic2VydmVyLlVwZGF0ZS50ID0gJ2EgT2JzZXJ2ZXIuVXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgUGFja2VkLnQgPSBQYWNrZWQudFxuICAgIHdpdGggdHlwZSBTY29wZS50ID0gc3RhdGVfd2l0bmVzcyBTY29wZS50XG4gICAgd2l0aCB0eXBlIFN0YXRlLnQgPSBzdGF0ZV93aXRuZXNzIFN0YXRlLnRcbiAgICB3aXRoIHR5cGUgU3RhdGUuU3RhdHMudCA9IFN0YXRlLlN0YXRzLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlLnQgPVxuICAgICAgICAgICAoJ2EsICdiKSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUudFxuICAgIHdpdGggdHlwZSAnYSBVcGRhdGUudCA9ICdhIFVwZGF0ZS50XG4gICAgd2l0aCB0eXBlICdhIFZhci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBWYXIudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBkZWJ1ZyA9IGRlYnVnXG5lbmRcbiIsIlxub3BlbiBCYXNlXG5cbm1vZHVsZSBDb21tdXRhdGl2ZV9ncm91cCA9IHN0cnVjdFxuICAoKiogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2Ugc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuXG4gICAgICArIGFzc29jaWF0aXZpdHk6IFsoYSArIGIpICsgYyA9IGEgKyAoYiArIGMpXVxuICAgICAgKyBpZGVudGl0eTogW3plcm8gKyBhID0gYSArIHplcm8gPSBhXVxuICAgICAgKyBpbnZlcnNlczogZ2l2ZW4gYW55IFthXSB0aGVyZSBleGlzdHMgYSAodW5pcXVlKSBlbHQgW2JdIHN1Y2ggdGhhdCBbYSArIGIgPSBiICsgYSA9XG4gICAgICB6ZXJvXVxuICAgICAgKyBjb21tdXRhdGl2aXR5OiBbYSArIGIgPSBiICsgYV1cbiAgKilcblxuICBtb2R1bGUgdHlwZSBXaXRob3V0X3NleHAgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCAoKykgIDogdCAtPiB0IC0+IHRcbiAgICB2YWwgKC0pICA6IHQgLT4gdCAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBpbmNsdWRlIFdpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBWZWN0b3Jfc3BhY2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuICAgIGluY2x1ZGUgQ29tbXV0YXRpdmVfZ3JvdXAuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBzdHJ1Y3RcbiAgKCoqIEFsbCBbSW5jcl9tYXBdIGZ1bmN0aW9ucyB0YWtlIGFuIG9wdGlvbmFsIFtpbnN0cnVtZW50YXRpb25dIHBhcmFtZXRlciB0aGF0IGhhcyB0eXBlXG4gICAgICBbSW5zdHJ1bWVudGF0aW9uLnRdLiAgQSB2YWx1ZSBvZiB0aGlzIHR5cGUgaXMgYSByZWNvcmQgY29udGFpbmluZyBhIGZ1bmN0aW9uIHdoaWNoXG4gICAgICBpcyBwb2x5bW9ycGhpYyBvdmVyIGEgdW5pdmVyc2FsbHktcXVhbnRpZmllZCB0eXBlIFsnYV0uIFRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkXG4gICAgICBhIFt1bml0IC0+ICdhXSBmdW5jdGlvbiwgd2hpY2ggbXVzdCBiZSBpbW1lZGlhdGVseSBleGVjdXRlZCwgYW5kIHRoZSByZXN1bHQgb2ZcbiAgICAgIHdoaWNoIG11c3QgYmUgcmV0dXJuZWQuXG5cbiAgICAgIFRoZSBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlIGluc3RydW1lbnRvciB3aWxsIGJlIGRvaW5nIHRoZSBidWxrIG9mIHRoZSB3b3JrIGZvciB0aGVcbiAgICAgIFtJbmNyX21hcF0gZnVuY3Rpb24gaW4gcXVlc3Rpb24gKHVzdWFsbHkgYSBbTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZdKS5cblxuICAgICAgWW91IG1heSB3YW50IHRvIHVzZSB0aGUgSW5zdHJ1bWVudGF0aW9uIEFQSSB0byBhc3Npc3QgaW4gcGVyZm9ybWFuY2UgcHJvZmlsaW5nIGxpa2VcbiAgICAgIHNvOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgcHJvZmlsZSBuYW1lID1cbiAgICAgICAgICB7IEluY3JfbWFwLkluc3RydW1lbnRhdGlvbi5mID0gZnVuIGYgLT5cbiAgICAgICAgICAgICAgbGV0IGJlZm9yZSA9IFRpbWUubm93ICgpIGluXG4gICAgICAgICAgICAgIGxldCByID0gZiAoKSBpblxuICAgICAgICAgICAgICBsZXQgYWZ0ZXIgPSBUaW1lLm5vdyAoKSBpblxuICAgICAgICAgICAgICBsZXQgZGVsdGEgPSBUaW1lLnN1YiBhZnRlciBiZWZvcmUgaW5cbiAgICAgICAgICAgICAgcHJpbnRmIFwiJXMgdG9vayAlc1wiIG5hbWUgKFRpbWUuU3Bhbi50b19zdHJpbmdfaHVtIGRlbHRhKTtcbiAgICAgICAgICAgICAgclxuICAgICAgICAgIH1cbiAgICAgICAgOztcblxuICAgICAgICBJbmNyX21hcC5tYXAgfmluc3RydW1lbnRhdGlvbjoocHJvZmlsZSBcImZvb1wiKSB+ZjptYXBfZm9vXG4gICAgICBdfSAqKVxuXG4gIHR5cGUgdCA9IHsgZiA6ICdhLiAodW5pdCAtPiAnYSkgLT4gJ2EgfSBbQEB1bmJveGVkXVxuZW5kXG5cbigqKiBbU19nZW5dIGlzIHRoZSB0eXBlIG9mIHRoZSBtb2R1bGUgcmV0dXJuZWQgYnkgW0luY3JfbWFwLk1ha2VdLiAgSXQgaXMgYSBzcGVjaWFsaXphdGlvblxuICAgIG9mIHRoZSBpbnRlcmZhY2Ugb2YgW0luY3JfbWFwXSwgd2l0aDpcblxuICAgIC0gdGhlIFsnd10gc3RhdGVfd2l0bmVzcyB0eXBlIHBhcmFtZXRlciByZW1vdmVkXG4gICAgLSB0aGUgW0luY3JlbWVudGFsLlN0YXRlLnRdIGFyZ3VtZW50IHJlbW92ZWRcblxuICAgIFRoZSBjb21tZW50cyBmb3IgY29tcG9uZW50cyBvZiBbU19nZW5dIGFyZSBpbiBbbW9kdWxlIHR5cGUgSW5jcl9tYXBdIGJlbG93LiAqKVxubW9kdWxlIHR5cGUgU19nZW4gPSBzaWdcbiAgbW9kdWxlIEluY3IgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIG1vZHVsZSBDdXRvZmYgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gSW5zdHJ1bWVudGF0aW9uXG5cbiAgdmFsIG9mX3NldFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICdjbXApIFNldC50IEluY3IudFxuICAgIC0+ICgnaywgdW5pdCwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmlsdGVyX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgSW5jci50IC0+ICd2MiBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSBJbmNyLnQgLT4gJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgSW5jci50IC0+ICd2MiBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIEluY3IudCAtPiAndjIgSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCkgSW5jci50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIEluY3IudCAtPiAoJ3YyLCAndjMpIEVpdGhlci50IEluY3IudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50KSBJbmNyLnRcblxuICB2YWwgdW5vcmRlcmVkX2ZvbGRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+ICdhY2MgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2V4dHJhX2VxdWFsOignZXh0cmEgLT4gJ2V4dHJhIC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnZSkgTWFwLnQgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgnaywgJ3YsICdlKSBNYXAudCBJbmNyLnRcbiAgICAtPiAnZXh0cmEgSW5jci50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiBleHRyYV9jaGFuZ2VkOlxuICAgICAgICAgKG9sZF9leHRyYTonZXh0cmFcbiAgICAgICAgICAtPiBuZXdfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gaW5wdXQ6KCdrLCAndiwgJ2UpIE1hcC50XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gJ2FjYyBJbmNyLnRcblxuICB2YWwgY3V0b2ZmXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGN1dG9mZjondiBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBpX2NvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonazEgLT4gZGF0YTondiAtPiAnazIpXG4gICAgLT4gKCdrMiwgaW50LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcF9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAnazIpXG4gICAgLT4gKCdrMiwgaW50LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGlfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gJ3Igb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXBpX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWluX3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3Ygb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXhfdmFsdWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcGlfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gKCdyICogJ3IpIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciAqICdyKSBvcHRpb24gSW5jci50XG5cbiAgdmFsIHZhbHVlX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiAqICd2KSBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWVyZ2VfYm90aF9zb21lXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ID9vdXRfZXF1YWw6KCd2MyAtPiAndjMgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiAndjEgLT4gJ3YyIC0+ICd2MylcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9yaWdodF9yZXN1bHRfZXF1YWw6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSAqICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudCAqICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgdW56aXBfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3YxICogJ3YyKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnQgKiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IEluY3IudCAtPiAndjEgSW5jci50ICogJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50ICogKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtZXJnZSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjooJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCBJbmNyLnQgLT4gJ3YzIG9wdGlvbiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjMsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmbGF0dGVuIDogKCdrLCAndiBJbmNyLnQsICdjbXApIE1hcC50IC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBqb2luXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YgSW5jci50LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgc2VwYXJhdGVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2IEluY3IudCwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGtleXNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiwgJ2MpIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ2MpIFNldC50IEluY3IudFxuXG4gIHZhbCByYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIEJhc2UuTWFwLnQgSW5jci50XG4gICAgLT4gJ2sgSW5jci50XG4gICAgLT4gaW50IG9wdGlvbiBJbmNyLnRcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrIE1heWJlX2JvdW5kLkFzX2xvd2VyX2JvdW5kLnQgKiAnayBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50KSBvcHRpb24gSW5jci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHN1YnJhbmdlX2J5X3JhbmtcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKGludCBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnQpIEluY3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCByZWtleVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIGluZGV4X2J5aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnb3V0ZXJfa2V5IG9wdGlvbilcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGluZGV4X2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGluZGV4OigndiAtPiAnb3V0ZXJfa2V5IG9wdGlvbilcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiA/dXBkYXRlOlxuICAgICAgICAgKG91dGVyX2tleTonb3V0ZXJfa2V5XG4gICAgICAgICAgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXlcbiAgICAgICAgICAtPiBvbGRfZGF0YTondlxuICAgICAgICAgIC0+IG5ld19kYXRhOid2XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDoob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihvdXRlcl9rZXk6J291dGVyX2tleSAtPiBpbm5lcl9rZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAnYWNjIEluY3IudFxuXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMiwgJ2syX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICgnazIsICd2LCAnazJfY21wKSBNYXAudCwgJ2sxX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrMiwgKCdrMSwgJ3YsICdrMV9jbXApIE1hcC50LCAnazJfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgY29sbGFwc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoICdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5XG4gICAgICAgLCAndlxuICAgICAgICwgKCdvdXRlcl9jbXAsICdpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3MgKVxuICAgICAgICAgTWFwLnRcbiAgICAgICAgIEluY3IudFxuXG4gIHZhbCBjb2xsYXBzZV9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gbWVyZ2Vfa2V5czooJ291dGVyX2tleSAtPiAnaW5uZXJfa2V5IC0+ICdjb21iaW5lZF9rZXkpXG4gICAgLT4gY29tcGFyYXRvcjooJ2NvbWJpbmVkX2tleSwgJ2NvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnY29tYmluZWRfa2V5LCAndiwgJ2NvbWJpbmVkX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGV4cGFuZFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ291dGVyX2tleSAqICdpbm5lcl9rZXksICd2LCAndHVwbGVfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBvdXRlcl9jb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5uZXJfY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgY291bnRpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gaW50IEluY3IudFxuXG4gIHZhbCBjb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoXywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gaW50IEluY3IudFxuXG4gIHZhbCBmb3JfYWxsaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIGZvcl9hbGxcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIGV4aXN0c2lcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBleGlzdHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIHN1bVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoXywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IChtb2R1bGUgQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSAndSlcbiAgICAtPiBmOigndiAtPiAndSlcbiAgICAtPiAndSBJbmNyLnRcblxuICBtb2R1bGUgTG9va3VwIDogc2lnXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgdmFsIGZpbmQgOiAoJ2ssICd2LCBfKSB0IC0+ICdrIC0+ICd2IG9wdGlvbiBJbmNyLnRcblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA6IHNpZ1xuICAgICAgdmFsIHNleHBfb2ZfdCA6ICgnayAtPiBTZXhwLnQpIC0+ICgndiAtPiBTZXhwLnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gU2V4cC50XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgICAgIDogIGZyb206aW50XG4gICAgICAtPiB0b186aW50XG4gICAgICAtPiAoJ2EsICdiLCAnYykgQmFzZS5NYXAudFxuICAgICAgLT4gKCdhICogJ2Egb3B0aW9uKSBvcHRpb25cbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgSW5jcl9tYXAgPSBzaWdcbiAgKCoqIEZ1bmN0aW9ucyBmb3IgdXNpbmcgbWFwcyBlZmZpY2llbnRseSB3aXRoaW4gSW5jcmVtZW50YWwuICBUaGUgZ29hbCBvZiB0aGUgYWxnb3JpdGhtc1xuICAgICAgaGVyZSBpcyB0byBkbyB3b3JrIG9uIHRoZSBvdXRwdXQgb2YgdGhlIGNvbXB1dGF0aW9uIHByb3BvcnRpb25hbCB0byB0aGUgYW1vdW50IG9mXG4gICAgICB3b3JrIGRvbmUgb24gdGhlIGlucHV0LiAgaS5lLiwgW2tdIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGlucHV0IG1hcCBmb3Igc29tZVxuICAgICAgY29tcHV0YXRpb24gd2lsbCByZXN1bHQgaW4gW2tdIG1vZGlmaWNhdGlvbnMgdG8gdGhlIG91dHB1dCBtYXAuICBUaGUgY2hhbmdlcyB0byB0aGVcbiAgICAgIGlucHV0IG1hcCBhcmUgdHlwaWNhbGx5IGNvbXB1dGVkIHVzaW5nIFtNYXAuc3ltbWV0cmljX2RpZmZdLlxuXG4gICAgICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgdGhlIG5vbi1pbmNyZW1lbnRhbCBzZW1hbnRpY3Mgb2YgdGhlc2UgZnVuY3Rpb25zIChpLmUuLixcbiAgICAgIGlnbm9yaW5nIHBlcmZvcm1hbmNlKSBpcyB0aGUgc2FtZSBhcyB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBpbiBDb3JlJ3MgW01hcF1cbiAgICAgIG1vZHVsZS4gICopXG5cbiAgbW9kdWxlIEluc3RydW1lbnRhdGlvbiA9IEluc3RydW1lbnRhdGlvblxuXG4gIHZhbCBvZl9zZXRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ2NtcCkgU2V0LnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgdW5pdCwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YxIC0+ICd2MilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiwgJ3cpIEluY3JlbWVudGFsLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZmlsdGVyX21hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCgndjIsICd2MykgRWl0aGVyLnQsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgKiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bm9yZGVyZWRfZm9sZCBpIH5pbml0IH5hZGQgfnJlbW92ZV0gY29uc3RydWN0cyBhIG1vcmUgaW5jcmVtZW50YWwgdmVyc2lvbiBvZjpcblxuICAgICAge1tcbiAgICAgICAgbGV0JW1hcCBtID0gaSBpblxuICAgICAgICBNYXAuZm9sZCBtIH5pbml0IH5mOmFkZFxuICAgICAgXX1cblxuICAgICAgYXNzdW1pbmcgdGhhdCBbcmVtb3ZlXSBpcyB0aGUgaW52ZXJzZSBvZiBbYWRkXSwgYW5kIHRoYXQgdGhlIG9wZXJhdGlvbnMgZm9yXG4gICAgICBkaWZmZXJlbnQga2V5cyBjYW4gYmUgcGVyZm9ybWVkIGluIGFueSBvcmRlci4gTm90ZSB0aGF0IFtkYXRhX2VxdWFsXSBkZWZhdWx0c1xuICAgICAgdG8gW3BoeXNfZXF1YWxdLCBidXQgYSBtb3JlIHByZWNpc2UgZXF1YWxpdHkgY2FuIGJlIHByb3ZpZGVkIGluc3RlYWQuXG5cbiAgICAgIFdoZW4gdGhlIGRhdGEgZm9yIGEga2V5IHVwZGF0ZXMsIGJ5IGRlZmF1bHQgW3JlbW92ZV0gaXMgY2FsbGVkIG9uIHRoZSBvbGQgZGF0YVxuICAgICAgYW5kIHRoZW4gW2FkZF0gaXMgY2FsbGVkIG9uIHRoZSBuZXcgZGF0YS5cbiAgICAgIFt1cGRhdGVdIHByb3ZpZGVzIGFuIGFsdGVybmF0aXZlIHNpbmdsZSBmdW5jdGlvbiB0byBjYWxsIGVhY2ggdGltZSBhIGtleSdzIGRhdGFcbiAgICAgIHVwZGF0ZXMsIGFuZCBjYW4gYmUgdXNlZCB0byBpbXByb3ZlIGVmZmljaWVuY3kuXG5cbiAgICAgIEZvciB0aGUgaW5pdGlhbCBjb21wdXRhdGlvbiwgYnkgZGVmYXVsdCBbYWRkXSBpcyBjYWxsZWQgb24gYWxsIHRoZSBlbGVtZW50cyBpbiB0aGVcbiAgICAgIG1hcC4gQXMgdGhpcyBjYW4gYmUgaW5lZmZpY2llbnQsIFtzcGVjaWFsaXplZF9pbml0aWFsXSBjYW4gYmUgcHJvdmlkZWQgdG8gcGVyZm9ybVxuICAgICAgdGhlIGNvbXB1dGF0aW9uIGluIGEgbW9yZSBlZmZlY3RpdmUgd2F5LlxuXG4gICAgICBJZiBbcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eV0gaXMgdHJ1ZSwgdGhlbiBpZiB0aGUgaW5wdXQgbWFwIHRyYW5zaXRpb25zIGZyb21cbiAgICAgIGJlaW5nIGZ1bGwgdG8gZW1wdHksIHRoZW4gaW5zdGVhZCBvZiBjYWxsaW5nIFtyZW1vdmVdIG9uIGV2ZXJ5IGt2LXBhaXIsIGl0IHdpbGxcbiAgICAgIGluc3RlYWQganVzdCBzZXQgdGhlIG91dHB1dCB0byB3aGF0ZXZlciB5b3UndmUgcGFzc2VkIGFzIFtpbml0XS5cbiAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mIFtyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XSBpcyBbZmFsc2VdLCBzbyB0aGlzIG9wdGltaXphdGlvblxuICAgICAgZG9lcyBub3QgYXBwbHkgYXV0b21hdGljYWxseS5cblxuICAgICAgW2ZpbmFsaXplXSBkZWZhdWx0cyB0byBbRm4uaWRdIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGFjY3VtdWxhdG9yIHZhbHVlXG4gICAgICBpcyBzdG9yZWQgYW5kIHJldHVybmVkIGR1cmluZyBzdGFiaWxpemF0aW9uLiAgWW91IGNhbiB1c2UgaXQgdG8gZS5nLiBwcm9jZXNzIHRoZVxuICAgICAgZm9sZCBvcGVyYXRpb25zIGluIGEgZGlmZmVyZW50IG9yZGVyLiAqKVxuICB2YWwgdW5vcmRlcmVkX2ZvbGRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3Vub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFdIGlzIHNpbWlsYXIgdG8gW3Vub3JkZXJlZF9mb2xkXSwgYnV0IGl0IGFsc29cbiAgICAgIGRlcGVuZHMgb24gYW5vdGhlciBhcmJpdHJhcnkgaW5jcmVtZW50YWwgdmFsdWUgd2hpY2ggY2FuIGJlIGZhY3RvcmVkIGludG9cbiAgICAgIHRoZSBmb2xkaW5nIGNvbXB1dGF0aW9uLiAqKVxuICB2YWwgdW5vcmRlcmVkX2ZvbGRfd2l0aF9leHRyYVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/ZXh0cmFfZXF1YWw6KCdleHRyYSAtPiAnZXh0cmEgLT4gYm9vbClcbiAgICAtPiA/dXBkYXRlOihrZXk6J2sgLT4gb2xkX2RhdGE6J3YgLT4gbmV3X2RhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdlKSBNYXAudCAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiA/ZmluYWxpemU6KCdhY2MgLT4gJ2FjYylcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gKCgnaywgJ3YsICdlKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoJ2V4dHJhLCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gZXh0cmFfY2hhbmdlZDpcbiAgICAgICAgIChvbGRfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gbmV3X2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IGlucHV0OignaywgJ3YsICdlKSBNYXAudFxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICgnYWNjLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbY3V0b2ZmXSBhcHBsaWVzIGEgY3V0b2ZmIHRvIHZhbHVlcyBpbiB0aGUgbWFwIGFzIHRoZXkgcGFzcyB0aHJvdWdoIHRoZVxuICAgICAgZnVuY3Rpb24uICBJdCBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgY2FsbGluZyBbSW5jcl9tYXAubWFwJ10gd2l0aCBhblxuICAgICAgW0luY3Iuc2V0X2N1dG9mZl0gaW5zaWRlLCBidXQgd2l0aCBjb25zaWRlcmFibHkgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZFxuICAgICAgbWVtb3J5IHVzYWdlLiAqKVxuICB2YWwgY3V0b2ZmXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIEdpdmVuIGFuIGlucHV0IG1hcCBhbmQgYSBmdW5jdGlvbiBtYXBwaW5nIGEga3YtcGFpciB0byBhIG5ld1xuICAgICAgdmFsdWUsIFttYXBpX2NvdW50XSB3aWxsIGNvbXB1dGUgYSBtdWx0aS1zZXQga2V5ZWQgb24gdGhhdFxuICAgICAgbmV3IHZhbHVlLlxuXG4gICAgICBBbnkgdmFsdWUgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBhIGNvdW50IG9mIFwiMFwiIGlzIGluc3RlYWRcbiAgICAgIHJlbW92ZWQgZnJvbSB0aGUgbWFwLlxuXG4gICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgW2ZdIGlzIHF1aXRlIGZhc3QgYXMgdGhlIGZ1bmN0aW9uIHdpbGwgYmVcbiAgICAgIGNhbGxlZCBtb3JlIG9mdGVuIHRoYW4gc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgaXQgZG9lcyB0aGlzXG4gICAgICBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW5nIGFuIGV4dHJhIG1hcC4gIElmIFtmXSBpcyB2ZXJ5IHNsb3dcbiAgICAgIGFuZCB5b3UgZG9uJ3QgbWluZCB0aGUgZXh0cmEgYWxsb2NhdGlvbnMsIHVzZVxuICAgICAgW0luY3JfbWFwLmluZGV4X2J5aV0gY29tcG9zZWQgd2l0aCBbSW5jcl9tYXAubWFwIH5mOk1hcC5sZW5ndGhdICopXG4gIHZhbCBtYXBpX2NvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2sxLCAndiwgJ2NtcDEpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCBpbnQsICdjbXAyKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogVGhlIHNhbWUgYXMgW21hcGlfY291bnRdIGJ1dCB0aGUgW2ZdIGZ1bmN0aW9uIG9ubHkgZ2V0cyB0byBzZWUgdGhlXG4gICAgICBkYXRhIGluc3RlYWQgb2YgYm90aCB0aGUga2V5IGFuZCB0aGUgZGF0YS4gKilcbiAgdmFsIG1hcF9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrMSwgJ3YsICdjbXAxKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCBpbnQsICdjbXAyKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIHNtYWxsZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcGlfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcGlfbWF4XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcF9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gKCdyIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIHNtYWxsZXN0IGRhdGEgdmFsdWUgZnJvbSB0aGUgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWluX3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IGRhdGEgdmFsdWUgZnJvbSB0aGUgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWF4X3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIFttaW4gKiBtYXhdIHdoZXJlIHRoZSB2YWx1ZSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyXG4gICAgICBpbiB0aGUgaW5wdXQgbWFwICopXG4gIHZhbCBtYXBpX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoKCdyICogJ3IpIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgW21pbiAqIG1heF0gd2hlcmUgdGhlIHZhbHVlIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXJcbiAgICAgIGluIHRoZSBpbnB1dCBtYXAgKilcbiAgdmFsIG1hcF9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gKCgnciAqICdyKSBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBhbmQgbGFyZ2VzdCBkYXRhIHZhbHVlIGZyb20gdGhlIGlucHV0IG1hcC4gKilcbiAgdmFsIHZhbHVlX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoKCd2ICogJ3YpIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuXG4gICgqKiBMaWtlIFttZXJnZV0gaW4gW0Jhc2UuTWFwLm1lcmdlXS4gTm90ZSB0aGF0IFtmXSBpcyBjYWxsZWQgYXQgbW9zdCBvbmNlIHBlciBrZXkgaW5cbiAgICAgIGFueSBnaXZlbiBzdGFiaWxpemF0aW9uLiAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbbWVyZ2VfYm90aF9zYW1lXSBpcyBsaWtlIFttZXJnZV0sIGJ1dCBvcHRpbWl6ZWQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBvbmx5IGNhcmVcbiAgICAgIGFib3V0IHRoZSBjYXNlIHdoZXJlIGJvdGggbWFwcyBjb250YWluIGEgcGFydGljdWxhciBrZXkuICopXG4gIHZhbCBtZXJnZV9ib3RoX3NvbWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gP291dF9lcXVhbDooJ3YzIC0+ICd2MyAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gJ3YxIC0+ICd2MiAtPiAndjMpXG4gICAgLT4gKCgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogTGlrZSBbbWVyZ2VdLCBidXQgb3BlcmF0aW5nIHVzaW5nIGluY3JlbWVudGFsIG5vZGVzLiBUaGlzIGlzIGEgZ29vZCB1c2UgY2FzZSBmb3JcbiAgICAgIFtwcHhfcGF0dGVybl9iaW5kXS4gKilcbiAgdmFsIG1lcmdlJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOigndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOlxuICAgICAgICAgKGtleTona1xuICAgICAgICAgIC0+ICgoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCd2MyBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHVuemlwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICdhICogJ2IsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICdhLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnQgKiAoKCdrLCAnYiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bnppcF9tYXBpXSBpcyBzaW1pbGFyIHRvIFtMaXN0LnVuemlwXSwgYnV0IGZvciBpbmNyZW1lbnRhbCBtYXBzLiBOb3RlIHRoYXQgW2ZdIG1heVxuICAgICAgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIGEgc2luZ2xlIGVsZW1lbnQuICopXG4gIHZhbCB1bnppcF9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9yaWdodF9yZXN1bHRfZXF1YWw6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3YxICogJ3YyKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgKiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW56aXBfbWFwaSddIGlzIGxpa2UgW3VuemlwX21hcGldLCBidXQgYWxsb3dzIHlvdSB0byBkZWZpbmUgdGhlIG1hcHBpbmcgZnJvbSB0aGVcbiAgICAgIGlucHV0IG1hcCdzIGVsZW1lbnRzIHRvIHRoZSBvdXRwdXQgbWFwcycgZWxlbWVudHMgaW5jcmVtZW50YWxseS5cblxuICAgICAgVGhlIG5haXZlIGltcGxlbWVudGF0aW9uIChzZWUgYmVsb3cpIHByb2R1Y2VzIHdvcnNlIEluY3JlbWVudGFsIGdyYXBocy5cblxuICAgICAge1tcbiAgICAgICAgbGV0IHRlbXAgPVxuICAgICAgICAgIEluY3JfbWFwLm1hcGknIGlucHV0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgZiB+a2V5IH5kYXRhIHw+IFR1cGxlMi51bmN1cnJ5IEluY3IuYm90aClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBJbmNyX21hcC5tYXAgdGVtcCB+ZjpUdXBsZTIuZ2V0MSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBJbmNyX21hcC5tYXAgdGVtcCB+ZjpUdXBsZTIuZ2V0MiBpblxuICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgXX0gKilcbiAgdmFsIHVuemlwX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOigndiwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAoJ3YxLCAndykgSW5jcmVtZW50YWwudCAqICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgKiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBUaGlzIGlzIHRoZSBcImVhc3lcIiB2ZXJzaW9uIG9mIFtqb2luXSAqKVxuICB2YWwgZmxhdHRlblxuICAgIDogICd3IEluY3JlbWVudGFsLlN0YXRlLnRcbiAgICAtPiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBUaGUgbm9uLWluY3JlbWVudGFsIHNlbWFudGljcyBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBmdW5jdGlvbi4gIEl0c1xuICAgICAgcHVycG9zZSBpcyB0byBjb2xsYXBzZSB0aGUgZXh0cmEgbGV2ZWwgb2YgaW5jcmVtZW50YWxpdHkgYXQgdGhlIGxldmVsIG9mIHRoZSBkYXRhIG9mXG4gICAgICB0aGUgbWFwLiopXG4gIHZhbCBqb2luXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgc2VwYXJhdGVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGtleXNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAnYykgU2V0LnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBbcmFua10gb2YgYSBrZXkgKGdpdmVuIGluY3JlbWVudGFsbHkpIGluc2lkZSBvZiBhIG1hcCAoYWxzb1xuICAgICAgaW5jcmVtZW50YWwpLiAgVGhlIHRyYWRpdGlvbmFsIFtNYXAucmFua10gZnVuY3Rpb24gaXMgTyhuKSwgYW5kIHRoaXMgaW5jcmVtZW50YWxcbiAgICAgIHJhbmsgZnVuY3Rpb24gaGFzIHRoZSBmb2xsb3dpbmcgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzOlxuXG4gICAgICBkZWZpbml0aW9uczpcbiAgICAgIG4gOiB0aGUgc2l6ZSBvZiB0aGUgbWFwXG4gICAgICByIDogdGhlIHRpbWUgdG8gY29tcHV0ZSBbTWFwLnN5bW1ldHJpY19kaWZmXSBiZXR3ZWVuIHRoZSB0d28gbWFwc1xuICAgICAgayA6IHRoZSBjaGFuZ2UgaW4gcmFuayBvZiB0aGUga2V5IGJldHdlZW4gdHdvIHN0YWJpbGl6YXRpb25zXG5cbiAgICAgIG5vdGUgdGhhdCBbcl0gYW5kIFtrXSBhcmUgX211Y2hfIHNtYWxsZXIgdGhhbiBbbl0gZm9yIG1vc3QgcHJhY3RpY2FsIHB1cnBvc2VzXG5cbiAgICAgIC0gTyhsb2cgbikgd2hlbiB0aGUga2V5IGlzIG5vdCBpbiB0aGUgbWFwLlxuICAgICAgICBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvdGhlciBldmVyeSBvdGhlciBzY2VuYXJpby5cbiAgICAgIC0gTyhuKSBvbiB0aGUgaW5pdGlhbCBzdGFiaWxpemF0aW9uXG4gICAgICAtIE8obikgd2hlbiB0aGUga2V5IHRyYW5zaXRpb25zIGZyb20gbm90IGJlaW5nIGluIHRoZSBtYXAgdG8gYmVpbmcgaW4gdGhlIG1hcFxuICAgICAgLSBPKGxvZyBuICsgcikgd2hlbiB0aGUgbWFwIGNoYW5nZXNcbiAgICAgIC0gTyhsb2cgbiArIGspIHdoZW4gdGhlIGtleSBjaGFuZ2VzXG4gICAgICAtIE8obG9nIG4gKyByICsgaykgd2hlbiBib3RoIGtleSBhbmQgbWFwIGNoYW5nZSAqKVxuICB2YWwgcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgQmFzZS5NYXAudCwgJ3N0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoJ2ssICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKGludCBvcHRpb24sICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtzdWJyYW5nZSBtYXAgKG1pbiwgbWF4KV0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBzdWJtYXAgdGhhdCBpbmNsdWRlcyBhbGwgb2YgdGhlXG4gICAgICBrZXlzIGFuZCBkYXRhIGZyb20gW21hcF0gYmV0d2VlbiBbbWluXSBhbmQgW21heF0sIGFuZCBub25lIG9mIHRoZSBrZXlzIG91dHNpZGUgdGhlXG4gICAgICByYW5nZS5cblxuICAgICAgW3N1YnJhbmdlIG1hcCBOb25lXSBpcyB0aGUgZW1wdHkgbWFwLiBbcmFuZ2VdIGJlaW5nIFtOb25lXSBtZWFucyBubyBlbGVtZW50cyBhcmVcbiAgICAgIGNob3Nlbi5cblxuICAgICAgTm90ZSB0aGF0IGluY3JlbWVudGFsIGNoYW5nZXMgaGF2ZSBhIHJ1bnRpbWUgb2YgTygoayArIG0pIGxvZyBuKSB3aGVyZSBrIGlzIHRoZSBzaXplXG4gICAgICBvZiB0aGUgY2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2YgdGhlIGNoYW5nZXMgdG8gdGhlXG4gICAgICBlbGVtZW50cyBjb250YWluZWQgYnkgdGhlIHJhbmdlLiBUaGUgY29tcGxleGl0eSBvZiB0aGUgaW5pdGlhbCBjb21wdXRhdGlvbiBpcyB0aGVcbiAgICAgIHNhbWUgYXMgdGhlIGluY3JlbWVudGFsIGNvbXB1dGF0aW9uLCB3aXRoIHNvbWUgc2ltcGxpZmljYXRpb24uIGsgPSAwIGJlY2F1c2Ugd2UgaGF2ZVxuICAgICAgbm90IG1hZGUgYW55IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgbWFwIHlldCwgYW5kIG0gZXF1YWxzIHRoZSBzaXplIG9mIHRoZSByYW5nZSxcbiAgICAgIGJlY2F1c2UgdGhlIGluaXRpYWwgcmFuZ2UgaXMgZW1wdHkuICopXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCAoJ2sgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqICdrIE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnQpIG9wdGlvblxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3N1YnJhbmdlX2J5X3JhbmsgbWFwIChzLCBlKV0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBzdWJtYXAgdGhhdCBpbmNsdWRlcyAoZS1zKzEpXG4gICAgICBrZXlzIGJldHdlZW4gcy10aCBhbmQgZS10aCwgaW5jbHVzaXZlLlxuXG4gICAgICBJZiBzIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gbWFwIGxlbmd0aCwgdGhlIHJlc3VsdCBpcyBlbXB0eS5cbiAgICAgIElmIGUgaXMgZ3JlYXRlciBvciBlcXVhbCB0byBtYXAgbGVuZ3RoLCB0aGUgcmVzdWx0IGNvbnRhaW5zIGtleXMgZnJvbSBzLXRoIHRvIHRoZVxuICAgICAgbGFzdCBvbmUuXG5cbiAgICAgIFJhaXNlcyBmb3IgaW52YWxpZCBpbmRpY2VzIC0gcyA8IDAgb3IgZSA8IHMuXG5cbiAgICAgIFJ1bnRpbWUgb2YgdGhlIGluaXRpYWwgY29tcHV0YXRpb24gaXMgTyhtaW4oZSwgbi1zKSArIGxvZyhuKSksIGkuZS4gbGluZWFyLFxuICAgICAgYnV0IG9wdGltaXplZCBmb3IgcmFuZ2VzIGNsb3NlIHRvIGJlZ2lubmluZyBvciBlbmQuXG5cbiAgICAgIFJ1bnRpbWUgb2YgdGhlIGluY3JlbWVudGFsIGNvbXB1dGF0aW9uIGlzIE8obG9nKG4pICsgayArIChtK20nKSAqIGxvZyhuKSkgd2hlcmU6XG4gICAgICAtIGsgaXMgdGhlIHNpemUgb2YgdGhlIGRpZmZcbiAgICAgIC0gbSBpcyB0aGUgdG90YWwgaW1wYWN0IG9mIG1hcCBjaGFuZ2VzIG9uIHRoZSByYW5nZSwgYm91bmRlZCBieSBrIChlLmcuIGlmIHdlIGFkZFxuICAgICAgICAxMDAxIGtleXMgYW5kIHJlbW92ZSAxMDAwIGJlbG93IHMsIHRoZW4gbSA9IDEpXG4gICAgICAtIG0nID0gTyggfG5ldyBzIC0gb2xkIHN8ICsgfG5ldyBlIC0gb2xkIGV8ICkuXG4gICopXG4gIHZhbCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoIGludCBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtyZWtleV0gdHJhbnNmb3JtcyBhIG1hcCBieSBtb2RpZnlpbmcgdGhlIHR5cGUgb2YgdGhlIGtleS4gIFRoZSB1c2VyIGlzXG4gICAgICByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBbZl0gZG9lc24ndCByZXR1cm4gdGhlIHNhbWUgb3V0cHV0IGtleSBmb3JcbiAgICAgIG11bHRpcGxlIGlucHV0IGtleXMuXG5cbiAgICAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBbZl0gaXMgY2hlYXAgdG8gY29tcHV0ZSBhbmQgYWNjb3JkaW5nbHkgbWF5IGNhbGxcbiAgICAgIGl0IG11bHRpcGxlIHRpbWVzLiAqKVxuICB2YWwgcmVrZXlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnazEsICd2LCAnY21wMSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonazEgLT4gZGF0YTondiAtPiAnazIpXG4gICAgLT4gKCgnazIsICd2LCAnY21wMikgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtpbmRleF9ieWkgbWFwIH5jb21wYXJhdG9yIH5pbmRleF0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBtYXAtb2YtbWFwcyB3aGVyZSBlYWNoXG4gICAgICBrZXktZGF0YSBwYWlyIG9mIHRoZSBpbnB1dCBtYXAgaXMgcHJlc2VudCBpbiBvbmUgKG9yIG5vbmUpIG9mIHRoZSBpbm5lciBtYXBzLlxuICAgICAgW2luZGV4XSBzcGVjaWZpZXMgdGhlIG91dGVyIG1hcCBrZXkgdW5kZXIgd2hpY2ggZWFjaCBvcmlnaW5hbCBrZXktZGF0YSBwYWlyIGlzXG4gICAgICBmb3VuZC5cblxuICAgICAgQWxsIG9mIHRoZSByZXN1bHRpbmcgaW5uZXIgbWFwcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBub24tZW1wdHk7IGlmIHRoZSBpbm5lciBtYXBcbiAgICAgIHdvdWxkIG90aGVyd2lzZSBiZSBlbXB0eSwgdGhlbiB0aGUga2V5IGZvciB0aGF0IG1hcCBpcyBpbnN0ZWFkIHJlbW92ZWQgZnJvbSB0aGVcbiAgICAgIG91dGVyIG1hcC5cblxuICAgICAgQW4gYWxsLWF0LW9uY2UgdmVyc2lvbiBvZiBbaW5kZXhfYnldIHdvdWxkIGxvb2sgbGlrZTpcblxuICAgICAge1tcbiAgICAgICAgbGV0IGluZGV4X2J5aSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4ID1cbiAgICAgICAgICBNYXAudG9fYWxpc3QgbWFwXG4gICAgICAgICAgfD4gTGlzdC5maWx0ZXJfbWFwIH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSBpbmRleCAtPiBTb21lIChpbmRleCwgKGtleSwgZGF0YSkpKVxuICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdF9tdWx0aSBjb21wYXJhdG9yXG4gICAgICAgICAgfD4gTWFwLm1hcCB+ZjooTWFwLm9mX2FsaXN0X2V4biAoTWFwLmNvbXBhcmF0b3JfcyBtYXApKVxuICAgICAgICA7O1xuICAgICAgXX0gKilcbiAgdmFsIGluZGV4X2J5aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KGtleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcblxuICAoKiogW2luZGV4X2J5IG1hcCB+Y29tcGFyYXRvciB+aW5kZXhdIGlzIGxpa2UgW2luZGV4X2J5aSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4XSwgYnV0XG4gICAgICB0aGUgW2luZGV4XSBmdW5jdGlvbiBkb2VzIG5vdCB0YWtlIHRoZSBpbm5lciBtYXAncyBba2V5XS4gKilcbiAgdmFsIGluZGV4X2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooJ3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcblxuICB2YWwgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ID91cGRhdGU6XG4gICAgICAgICAob3V0ZXJfa2V5OidvdXRlcl9rZXlcbiAgICAgICAgICAtPiBpbm5lcl9rZXk6J2lubmVyX2tleVxuICAgICAgICAgIC0+IG9sZF9kYXRhOid2XG4gICAgICAgICAgLT4gbmV3X2RhdGE6J3ZcbiAgICAgICAgICAtPiAnYWNjXG4gICAgICAgICAgLT4gJ2FjYylcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDoob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihvdXRlcl9rZXk6J291dGVyX2tleSAtPiBpbm5lcl9rZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3RyYW5zcG9zZV0gZmxpcHMgdGhlIG9yZGVyIG9mIGEgZG91Ymx5IG5lc3RlZCBpbmNyZW1lbnRhbCBtYXAuXG5cbiAgICAgIEFsbCBpbm5lciBtYXAgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhdCBsZWFzdCBvbmUgZWxlbWVudC4gKilcbiAgdmFsIHRyYW5zcG9zZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2syLCAnazJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCgnazEsICgnazIsICd2LCAnazJfY21wKSBNYXAudCwgJ2sxX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnazIsICgnazEsICd2LCAnazFfY21wKSBNYXAudCwgJ2syX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGNvbGxhcHNlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICggKCAnb3V0ZXJfa2V5ICogJ2lubmVyX2tleVxuICAgICAgICAgLCAndlxuICAgICAgICAgLCAoJ291dGVyX2NtcCwgJ2lubmVyX2NtcCkgVHVwbGUyLmNvbXBhcmF0b3Jfd2l0bmVzcyApXG4gICAgICAgICAgIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtjb2xsYXBzZV9ieV0gaXMgc2ltaWxhciB0byBbY29sbGFwc2VdLCBidXQgaXQgYWxsb3dzIHRoZSB1c2VyIHRvXG4gICAgICBjaG9vc2UgaG93IHRvIGNvbWJpbmUgdGhlIHR3byBrZXlzIGZyb20gdGhlIG91dGVyIGFuZCBpbm5lciBtYXBzLlxuICAgICAgVGhpcyBkb2VzIG1lYW4gdGhhdCBpdCdzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgaW1wbGVtZW50b3Igb2YgdGhlXG4gICAgICBbbWVyZ2Vfa2V5c10gZnVuY3Rpb24gdG8gdXBob2xkIHRoaXMgaW52YXJpYW50OlxuXG4gICAgICA+IGEgbWVyZ2VkLWtleSBiZWluZyBlcXVhbCB0byBhbm90aGVyIG1lcmdlZC1rZXkgaW1wbGllcyB0aGF0IHRoZVxuICAgICAgPiBvdXRlci1rZXlzIGFuZCBpbm5lci1rZXlzIHdoaWNoIHdlcmUgdXNlZCB0byBidWlsZCB0aGUgbWVyZ2VkIGtleXMgYWxzb1xuICAgICAgPiBjb21wYXJlIHRvIGJlIGVxdWFsIHRvIG9uZSBhbm90aGVyXG5cbiAgICAgIFRoZSBbfmNvbXBhcmF0b3JdIGFyZ3VtZW50IHRoZSBmaXJzdC1jbGFzcyBtb2R1bGUgb2YgdGhlIG91dHB1dCBrZXksIGl0XG4gICAgICB1c3VhbGx5IGxvb2tzIGxpa2UgdGhpczpcbiAgICAgIFsgfmNvbXBhcmF0b3I6KG1vZHVsZSBDb21iaW5lZF9rZXkpIF1cbiAgICAgIGJ1dCBtYWtlIHN1cmUgdGhhdCB0aGUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFtDb21wYXJhdG9yLlNdIHNpZ25hdHVyZS4gKilcbiAgdmFsIGNvbGxhcHNlX2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gbWVyZ2Vfa2V5czooJ291dGVyX2tleSAtPiAnaW5uZXJfa2V5IC0+ICdjb21iaW5lZF9rZXkpXG4gICAgLT4gY29tcGFyYXRvcjooJ2NvbWJpbmVkX2tleSwgJ2NvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgoJ2NvbWJpbmVkX2tleSwgJ3YsICdjb21iaW5lZF9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb252ZXJ0IGEgbWFwIHdpdGggdHVwbGVzIGZvciBrZXlzIGludG8gYSBuZXN0ZWQgbWFwLiBUaGlzIG9wZXJhdGlvbiBpcyByb3VnaGx5IHRoZVxuICAgICAgaW52ZXJzZSBvZiBbY29sbGFwc2VdLCB0aG91Z2ggaWYgdGhlcmUgYXJlIG91dGVyIGtleXMgaW4gdGhlIHVuY29sbGFwc2VkIG1hcCB0aGF0XG4gICAgICBjb3JyZXNwb25kIHRvIGVtcHR5IGlubmVyIG1hcHMsIHRoZSBvdXRlciBrZXlzIHdpbGwgYmUgZHJvcHBlZCBmcm9tIHRoZSBleHBhbmRlZFxuICAgICAgbWFwLiAqKVxuICB2YWwgZXhwYW5kXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ291dGVyX2tleSAqICdpbm5lcl9rZXksICd2LCAndHVwbGVfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBvdXRlcl9jb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5uZXJfY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGNvdW50aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiAoaW50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBjb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChpbnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZvcl9hbGxpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmb3JfYWxsXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoXywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gKGJvb2wsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGV4aXN0c2lcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKGJvb2wsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGV4aXN0c1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBJbmNyZW1lbnRhbGx5IGNvbXB1dGUgdGhlIHN1bSBvZiBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGUgbWFwLlxuXG4gICAgICBCZXdhcmUgb2YgZmxvYXQncyBuZWdhdGl2ZSBpbmZpbml0aWVzLiBUaGV5IGFyZW4ndCBjb21tdXRhdGl2ZSBhbmQgd2lsbCBtaXNiZWhhdmVcbiAgICAgIGhlcmUuXG4gICopXG4gIHZhbCBzdW1cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKG1vZHVsZSBBYnN0cmFjdF9hbGdlYnJhLkNvbW11dGF0aXZlX2dyb3VwLldpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA9ICd1KVxuICAgIC0+IGY6KCd2IC0+ICd1KVxuICAgIC0+ICgndSwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogWygnaywgJ3YpIExvb2t1cC50XSBwcm92aWRlcyBhIHdheSB0byBsb29rdXAga2V5cyBpbiBhIG1hcCB3aGljaCB1c2VzIHN5bW1ldHJpY1xuICAgICAgZGlmZnMgdG8gdHJpZ2dlciB1cGRhdGVzIG9mIHRoZSBsb29rdXBzLlxuXG4gICAgICBUaGUgY29tcGxleGl0eSBvZiBhbiB1cGRhdGUgZGVwZW5kcyBvbjpcbiAgICAgIC0gW25dOiB0aGUgbnVtYmVyIG9mIGtleXMgaW4gdGhlIGxhcmdlciBvZiB0aGUgb2xkL3VwZGF0ZWQgaW5wdXQgbWFwXG4gICAgICAtIFtrXTogdGhlIG51bWJlciBvZiBsb29rdXAgbm9kZXMgY3JlYXRlZCB1c2luZyBbZmluZF1cbiAgICAgIC0gW21dOiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzeW1kaWZmIG9mIHRoZSBtYXBzXG4gICAgICAtIFtzeW1kaWZmKG4pXTogdGhlIGNvc3Qgb2YgcGVyZm9ybWluZyB0aGUgc3ltZGlmZiBvbiB0aGUgbWFwIChtIDw9IHN5bWRpZmYobikgPD0gbilcblxuICAgICAgRWFjaCB1cGRhdGUgc2hvdWxkIGNvc3QgW08oc3ltZGlmZihuKSArIG0gKiBsb2cgayldLCBzbyB0aGlzIHdpbGwgYmUgZWZmaWNpZW50IHdoZW5cbiAgICAgIHRoZXJlIGFyZSBhIGxvdCBvZiBsb29rdXBzIChjbG9zZSB0byBuKSBpbnRvIGEgbWFwIHdoaWNoIGNhbiBiZSBlZmZpY2llbnRseVxuICAgICAgc3ltZGlmZmVkIChhbmQgdGhlcmVmb3JlIGhhcyBhIHNtYWxsIG51bWJlciBvZiBjaGFuZ2VzIGFsc28pLiBUaGUgY29zdCBvZiB1cGRhdGluZ1xuICAgICAgd2hlbiBwZXJmb3JtaW5nIHRoZSBzYW1lIGxvb2t1cHMgYnkgbWVhbnMgb2YgW0luY3IubWFwIH5mOihmdW4gbSAtPiBNYXAuZmluZCBtIGtleSldXG4gICAgICBpcyBbTyhrICogbG9nIG4pXS5cbiAgKilcbiAgbW9kdWxlIExvb2t1cCA6IHNpZ1xuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHRcblxuICAgICgqKiBDcmVhdGUgdGhlIGxvb2t1cCBzdHJ1Y3R1cmUgb24gYW4gaW5jcmVtZW50YWwgbWFwLiAqKVxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCwgJ3cpIHRcblxuICAgICgqKiBDcmVhdGUgYSBub2RlIHdoaWNoIHBlcmZvcm1zIFtNYXAuZmluZF0gb24gdGhlIGlucHV0IG1hcC5cblxuICAgICAgICBbZmluZCAoY3JlYXRlIGluY3JfbWFwKSBrZXldIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIFtJbmNyLm1hcCB+ZjooZnVuIG0gLT5cbiAgICAgICAgTWFwLmZpbmQgbSBrZXkpIGluY3JfbWFwXSwgYnV0IHdoZW4geW91IGNhbGwgW2ZpbmRdIG1hbnkgdGltZXMgZm9yIGEgc2luZ2xlXG4gICAgICAgIFtjcmVhdGVdIHRoZSBub2RlcyBzaG91bGQgdXBkYXRlIG1vcmUgZWZmaWNpZW50bHkgaW4gc3RhYmlsaXNhdGlvbiB3aGVuIFtpbmNyX21hcF1cbiAgICAgICAgY2hhbmdlcyBpbiBhIHdheSB3aGljaCBjYW4gYmUgZWZmaWNpZW50bHkgZGlmZmVkLlxuXG4gICAgICAgIFRoaXMgd2lsbCByZS11c2UgZXhpc3Rpbmcgbm9kZXMgd2hlbiBpdCBjYW4sIGJ1dCB3aWxsIG5vdCBhbHdheXMgZG8gc28uXG4gICAgKilcbiAgICB2YWwgZmluZCA6ICgnaywgJ3YsIF8sICd3KSB0IC0+ICdrIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgICAoKiogQSBjb252ZW5pZW50IHdheSB0byByZWZlciB0byB0aGUgdHlwZSBmb3IgYSBnaXZlbiBrZXkuICopXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAoJ3YsICd3KSB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzLCAndykgdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA6IHNpZ1xuICAgICAgdmFsIHNleHBfb2ZfdCA6ICgnayAtPiBTZXhwLnQpIC0+ICgndiAtPiBTZXhwLnQpIC0+ICgnaywgJ3YsICdjbXAsIF8pIHQgLT4gU2V4cC50XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgICAgIDogIGZyb206aW50XG4gICAgICAtPiB0b186aW50XG4gICAgICAtPiAoJ2EsICdiLCAnYykgQmFzZS5NYXAudFxuICAgICAgLT4gKCdhICogJ2Egb3B0aW9uKSBvcHRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgU19nZW4gPSBTX2dlblxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHN0YXRlX3dpdG5lc3NcblxuICAgIGluY2x1ZGVcbiAgICAgIFNfZ2VuXG4gICAgICB3aXRoIHR5cGUgJ2EgSW5jci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgYW5kIHR5cGUgJ2EgSW5jci5DdXRvZmYudCA9ICdhIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgICAgYW5kIHR5cGUgKCdrLCAndiwgJ2NtcCkgTG9va3VwLnQgPSAoJ2ssICd2LCAnY21wLCBzdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlMpIDpcbiAgICBTIHdpdGggdHlwZSBzdGF0ZV93aXRuZXNzIDo9IEluY3Iuc3RhdGVfd2l0bmVzcyBhbmQgbW9kdWxlIEluY3IgOj0gSW5jclxuZW5kXG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIEluY3JfbWFwX2ludGZcblxubGV0IG5vX2luc3RydW1lbnRhdGlvbiA9IHsgSW5zdHJ1bWVudGF0aW9uLmYgPSAoZnVuIGYgLT4gZiAoKSkgfVxuXG4oKiogVGhpcyB0eXBlIGxldHMgdXMgY2FwdHVyZSB0aGUga2luZCBvZiBtYXAgZnVuY3Rpb24gYmVpbmcgcGVyZm9ybWVkLCBzbyB3ZSBjYW4gd2l0aFxuICAgIG9uZSBpbXBsZW1lbnRhdGlvbiBwZXJmb3JtIG1hcCBhbmQgZmlsdGVyLW1hcCBvcGVyYXRpb25zLlxuXG4gICAgSGVyZSwgWydpbnB1dF9kYXRhXSBpcyB0aGUgdHlwZSBvZiBkYXRhIGluIHRoZSBpbnB1dCBtYXAsIFsnb3V0cHV0X2RhdGFdIGlzIHRoZSB0eXBlXG4gICAgb2YgZGF0YSBpbiB0aGUgb3V0cHV0IG1hcCwgYW5kIFsnZl9vdXRwdXRdIGlzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgW35mXSBmdW5jdGlvblxuICAgIHBhc3NlZCB0byB0aGUgbWFwcGluZyBmdW5jdGlvbi4gKilcbm1vZHVsZSBNYXBfdHlwZSA9IHN0cnVjdFxuICB0eXBlICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnZl9vdXRwdXQpIHQgPVxuICAgIHwgTWFwIDogKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSkgdFxuICAgIHwgRmlsdGVyX21hcCA6ICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEgb3B0aW9uKSB0XG5cbiAgKCogVGhlIGV4dHJhIHR5cGUgdmFyaWFibGUgJ2EgaXMgdG8gYWxsb3cgaW4gZnV0dXJlOlxuICAgICB8IEZpbHRlciA6ICgnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgYm9vbCkgdCAqKVxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIGxldCB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIGkgfmYgPVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQlbWFwIGEgPSBpIGluXG4gICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYSBpblxuICAgICAgb2xkIDo9IFNvbWUgKGEsIGIpO1xuICAgICAgYilcbiAgOztcblxuICBsZXQgY3V0b2ZmID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgfmN1dG9mZiA9XG4gICAgbGV0IGRhdGFfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZSA9XG4gICAgICBJbmNyZW1lbnRhbC5DdXRvZmYuc2hvdWxkX2N1dG9mZiBjdXRvZmYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG4gICAgaW5cbiAgICB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+ZjooZnVuIH5vbGQgY3VyIC0+XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+IGN1clxuICAgICAgfCBTb21lIChfb2xkX2luLCBvbGQpIC0+XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsIH5pbml0Om9sZCBvbGQgY3VyIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgIHwgYExlZnQgX29sZCAtPiBNYXAucmVtb3ZlIGFjYyBrZXlcbiAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IE1hcC5hZGRfZXhuIGFjYyB+a2V5IH5kYXRhOm5ld19cbiAgICAgICAgICB8IGBVbmVxdWFsIChfb2xkLCBuZXdfdmFsdWUpIC0+IE1hcC5zZXQgYWNjIH5rZXkgfmRhdGE6bmV3X3ZhbHVlKSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID8oZmluYWxpemUgPSBGbi5pZClcbiAgICAgICAgPyhyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ID0gZmFsc2UpXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBsZXQgZGVmYXVsdCB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjID1cbiAgICAgICAgYWRkIH5rZXkgfmRhdGE6bmV3X2RhdGEgKHJlbW92ZSB+a2V5IH5kYXRhOm9sZF9kYXRhIGFjYylcbiAgICAgIGluXG4gICAgICBPcHRpb24udmFsdWUgdXBkYXRlIH5kZWZhdWx0XG4gICAgaW5cbiAgICB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+ZjooZnVuIH5vbGQgbmV3X2luIC0+XG4gICAgICBsZXQgYWNjID1cbiAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNwZWNpYWxpemVkX2luaXRpYWwgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTWFwLmZvbGQgfmluaXQgfmY6YWRkIG5ld19pblxuICAgICAgICAgICB8IFNvbWUgaW5pdGlhbCAtPiBpbml0aWFsIH5pbml0IG5ld19pbilcbiAgICAgICAgfCBTb21lIChvbGRfaW4sIG9sZF9vdXQpIC0+XG4gICAgICAgICAgaWYgcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSAmJiBNYXAubGVuZ3RoIG5ld19pbiA9IDBcbiAgICAgICAgICB0aGVuIGluaXRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICB+aW5pdDpvbGRfb3V0XG4gICAgICAgICAgICAgIG9sZF9pblxuICAgICAgICAgICAgICBuZXdfaW5cbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjY1xuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IG5ld18gLT4gYWRkIH5rZXkgfmRhdGE6bmV3XyBhY2NcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChvbGQsIG5ld18pIC0+IHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpvbGQgfm5ld19kYXRhOm5ld18gYWNjKVxuICAgICAgaW5cbiAgICAgIGZpbmFsaXplIGFjYylcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgIGluY3JfbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIG1hdGNoIHVwZGF0ZSB3aXRoXG4gICAgICB8IFNvbWUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgICBhZGRcbiAgICAgICAgICAgIH5vdXRlcl9rZXlcbiAgICAgICAgICAgIH5pbm5lcl9rZXlcbiAgICAgICAgICAgIH5kYXRhOm5ld19kYXRhXG4gICAgICAgICAgICAocmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgaW5jcl9tYXBcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5vbGRfZGF0YTpvbGRfaW5uZXJfbWFwIH5uZXdfZGF0YTpuZXdfaW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICAoTWFwLmZvbGRfc3ltbWV0cmljX2RpZmYgb2xkX2lubmVyX21hcCBuZXdfaW5uZXJfbWFwIH5kYXRhX2VxdWFsKVxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gYWNjIChpbm5lcl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgZGF0YV9yZW1vdmVkIC0+IHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6ZGF0YV9yZW1vdmVkIGFjY1xuICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9hZGRlZCAtPiBhZGQgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfYWRkZWQgYWNjXG4gICAgICAgICAgICB8IGBVbmVxdWFsIChvbGRfZGF0YSwgbmV3X2RhdGEpIC0+XG4gICAgICAgICAgICAgIHVwZGF0ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MpIFtAbm9udGFpbF0pXG4gICAgICB+YWRkOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICBNYXAuZm9sZCBpbm5lcl9tYXAgfmluaXQ6YWNjIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgICAgYWRkIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgOztcblxuICBsZXQgd2l0aF9jb21wYXJhdG9yJyBnZXRfY29tcGFyYXRvciB4IGYgPVxuICAgIEluY3JlbWVudGFsLmJpbmQgKEluY3JlbWVudGFsLmZyZWV6ZSAoSW5jcmVtZW50YWwubWFwIHggfmY6Z2V0X2NvbXBhcmF0b3IpKSB+ZlxuICA7O1xuXG4gICgqKiBDYXB0dXJlcyB0aGUgY29tcGFyYXRvciAod2hpY2ggY2FuJ3QgY2hhbmdlIGFueXdheSwgc2luY2UgdGhlIHR5cGUgZGV0ZXJtaW5lcyB0aGVcbiAgICAgIGNvbXBhcmF0b3IpIGJ5IGZyZWV6aW5nIHRoZSBjb3JyZXNwb25kaW5nIG1hcC4gIE5vdGUgdGhhdCBieSBmaXJzdCB1c2luZyBJbmNyZW1lbnRhbC5tYXAgdG9cbiAgICAgIGdldCB0aGUgY29tcGFyYXRvciBvdXQgb2YgdGhlIG1hcCwgd2UgYWxsb3cgdGhlIGluaXRpYWwgbWFwIGl0c2VsZiB0byBiZSBnYXJiYWdlXG4gICAgICBjb2xsZWN0ZWQgKilcbiAgbGV0IHdpdGhfY29tcGFyYXRvciBtYXAgZiA9IHdpdGhfY29tcGFyYXRvcicgTWFwLmNvbXBhcmF0b3IgbWFwIGZcblxuICBsZXQgb2Zfc2V0ID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBzZXQgPVxuICAgIHdpdGhfY29tcGFyYXRvcicgU2V0LmNvbXBhcmF0b3Igc2V0IChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IG9sZF9pbnB1dCA9IHJlZiAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBsZXQgb2xkX291dHB1dCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBJbmNyZW1lbnRhbC5tYXAgc2V0IH5mOihmdW4gbmV3X2lucHV0IC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IG5ld19vdXRwdXQgPVxuICAgICAgICAgICAgU2VxdWVuY2UuZm9sZFxuICAgICAgICAgICAgICAoU2V0LnN5bW1ldHJpY19kaWZmICFvbGRfaW5wdXQgbmV3X2lucHV0KVxuICAgICAgICAgICAgICB+aW5pdDohb2xkX291dHB1dFxuICAgICAgICAgICAgICB+ZjooZnVuIG91dHB1dCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRmlyc3QgayAtPiBNYXAucmVtb3ZlIG91dHB1dCBrXG4gICAgICAgICAgICAgICAgfCBTZWNvbmQgayAtPiBNYXAuYWRkX2V4biBvdXRwdXQgfmtleTprIH5kYXRhOigpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgb2xkX2lucHV0IDo9IG5ld19pbnB1dDtcbiAgICAgICAgICBvbGRfb3V0cHV0IDo9IG5ld19vdXRwdXQ7XG4gICAgICAgICAgbmV3X291dHB1dCkpKVxuICA7O1xuXG4gIGxldCBnZW5lcmljX21hcGlcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKG1hcCA6ICgoJ2tleSwgaW5wdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6aW5wdXRfZGF0YSAtPiBmX291dHB1dClcbiAgICA9XG4gICAgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBtYXAgfmY6KGZ1biB+b2xkIGlucHV0IC0+XG4gICAgICBtYXRjaCBvbGQsIE1hcC5sZW5ndGggaW5wdXQgd2l0aFxuICAgICAgfCBfLCAwIHwgTm9uZSwgXyAtPlxuICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiAoTWFwLm1hcGkgaW5wdXQgfmYgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50KVxuICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+IE1hcC5maWx0ZXJfbWFwaSBpbnB1dCB+ZilcbiAgICAgIHwgU29tZSAob2xkX2lucHV0LCBvbGRfb3V0cHV0KSwgXyAtPlxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgIG9sZF9pbnB1dFxuICAgICAgICAgIGlucHV0XG4gICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICB+aW5pdDpvbGRfb3V0cHV0XG4gICAgICAgICAgfmY6KGZ1biBvdXRwdXQgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgYFJpZ2h0IG5ld19kYXRhIHwgYFVuZXF1YWwgKF8sIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgICAgICAgIChtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6cmVzXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICAgICAgICB8IFNvbWUgb3V0cHV0X2RhdGEgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YTpvdXRwdXRfZGF0YSkpKSlcbiAgOztcblxuICBsZXQgbWFwaSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBnZW5lcmljX21hcGkgTWFwIH5pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGdlbmVyaWNfbWFwaSBGaWx0ZXJfbWFwIH5pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mXG4gIDs7XG5cbiAgbGV0IG1hcCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gaTEgaTIgfmYgPVxuICAgIGxldCBvbGQgPSByZWYgTm9uZSBpblxuICAgIEluY3JlbWVudGFsLm1hcDIgaTEgaTIgfmY6KGZ1biBhMSBhMiAtPlxuICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGIgPSBmIH5vbGQ6IW9sZCBhMSBhMiBpblxuICAgICAgICBvbGQgOj0gU29tZSAoYTEsIGEyLCBiKTtcbiAgICAgICAgYikpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZXh0cmFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID8oZmluYWxpemUgPSBGbi5pZClcbiAgICAgICAgPyhyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ID0gZmFsc2UpXG4gICAgICAgIG1hcFxuICAgICAgICBleHRyYVxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICAgICAgfmV4dHJhX2NoYW5nZWRcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBsZXQgZGVmYXVsdCB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIGV4dHJhID1cbiAgICAgICAgYWRkIH5rZXkgfmRhdGE6bmV3X2RhdGEgKHJlbW92ZSB+a2V5IH5kYXRhOm9sZF9kYXRhIGFjYyBleHRyYSkgZXh0cmFcbiAgICAgIGluXG4gICAgICBPcHRpb24udmFsdWUgdXBkYXRlIH5kZWZhdWx0XG4gICAgaW5cbiAgICB3aXRoX29sZDIgfmluc3RydW1lbnRhdGlvbiBtYXAgZXh0cmEgfmY6KGZ1biB+b2xkIG5ld19pbiBuZXdfZXh0cmEgLT5cbiAgICAgIGxldCBhY2MgPVxuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggc3BlY2lhbGl6ZWRfaW5pdGlhbCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIE1hcC5mb2xkIG5ld19pbiB+aW5pdCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCB+a2V5IH5kYXRhIGFjYyBuZXdfZXh0cmEpXG4gICAgICAgICAgIHwgU29tZSBpbml0aWFsIC0+IGluaXRpYWwgfmluaXQgbmV3X2luIG5ld19leHRyYSlcbiAgICAgICAgfCBTb21lIChvbGRfaW4sIG9sZF9leHRyYSwgb2xkX291dCkgLT5cbiAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgIGlmIGV4dHJhX2VxdWFsIG9sZF9leHRyYSBuZXdfZXh0cmFcbiAgICAgICAgICAgIHRoZW4gb2xkX291dFxuICAgICAgICAgICAgZWxzZSBleHRyYV9jaGFuZ2VkIH5vbGRfZXh0cmEgfm5ld19leHRyYSB+aW5wdXQ6b2xkX2luIG9sZF9vdXRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHJldmVydF90b19pbml0X3doZW5fZW1wdHkgJiYgTWFwLmxlbmd0aCBuZXdfaW4gPSAwXG4gICAgICAgICAgdGhlbiBpbml0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgIG9sZF9pblxuICAgICAgICAgICAgICBuZXdfaW5cbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjYyBuZXdfZXh0cmFcbiAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IGFkZCB+a2V5IH5kYXRhOm5ld18gYWNjIG5ld19leHRyYVxuICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKG9sZCwgbmV3XykgLT5cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpvbGQgfm5ld19kYXRhOm5ld18gYWNjIG5ld19leHRyYSlcbiAgICAgIGluXG4gICAgICBmaW5hbGl6ZSBhY2MpXG4gIDs7XG5cbiAgbGV0IG1hcGlfY291bnRcbiAgICAgICAgKHR5cGUgYSBjbXApXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICBpbnB1dFxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKSlcbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gKHZhbCBjb21wYXJhdG9yKSBpblxuICAgIGxldCBhZGQgbmV3X2tleSBhY2MgPVxuICAgICAgTWFwLnVwZGF0ZSBhY2MgbmV3X2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgfCBTb21lIG4gLT4gbiArIDEpXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlIG5ld19rZXkgYWNjID1cbiAgICAgIE1hcC5jaGFuZ2UgYWNjIG5ld19rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAxIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIG4gLT4gU29tZSAobiAtIDEpKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICBpbnB1dFxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIE0pKVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCAoZiB+a2V5IH5kYXRhKSBhY2MpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIChmIH5rZXkgfmRhdGEpIGFjYylcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIGxldCBwcmV2X2tleSA9IGYgfmtleSB+ZGF0YTpvbGRfZGF0YSBpblxuICAgICAgICBsZXQgbmV3X2tleSA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICBpZiBNLmNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIGFjY1xuICAgICAgICBlbHNlIGFjYyB8PiByZW1vdmUgcHJldl9rZXkgfD4gYWRkIG5ld19rZXkpXG4gIDs7XG5cbiAgbGV0IG1hcF9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXykgLT4gU29tZSBtaW5cbiAgOztcblxuICBsZXQgbWF4X2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1heCwgXykgLT4gU29tZSBtYXhcbiAgOztcblxuICBsZXQgYm91bmRzX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCwgTWFwLm1heF9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWluLCBfKSwgU29tZSAobWF4LCBfKSAtPiBTb21lIChtaW4sIG1heClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcFxuICAgICAgfmY6bWluX2hlbHBlclxuICAgICAgKG1hcGlfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9tYXggP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICB+ZjptYXhfaGVscGVyXG4gICAgICAobWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIH5mOmJvdW5kc19oZWxwZXJcbiAgICAgIChtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcF9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtYXBfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX3ZhbHVlID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtYXhfdmFsdWUgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1hcF9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgZiBkYXRhKVxuICA7O1xuXG4gIGxldCB2YWx1ZV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgIH5vbGRcbiAgICAgICAgfm5ld19sZWZ0X21hcFxuICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICB+ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICAgIH5kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbmV3X2xlZnRfbWFwIGluXG4gICAgbGV0IG9sZF9sZWZ0X21hcCwgb2xkX3JpZ2h0X21hcCwgb2xkX291dHB1dCA9XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZWZ0X2RpZmYgPVxuICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9sZWZ0X21hcCBuZXdfbGVmdF9tYXAgfmRhdGFfZXF1YWw6ZGF0YV9lcXVhbF9sZWZ0XG4gICAgaW5cbiAgICBsZXQgcmlnaHRfZGlmZiA9XG4gICAgICBNYXAuc3ltbWV0cmljX2RpZmYgb2xkX3JpZ2h0X21hcCBuZXdfcmlnaHRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfcmlnaHRcbiAgICBpblxuICAgICgqIFdlIG1lcmdlIHRoZSB0d28gc2lkZXMgb2YgdGhlIGRpZmZzIHRvZ2V0aGVyIHNvIHdlIGNhbiBtYWtlIHN1cmUgdG8gaGFuZGxlIGVhY2hcbiAgICAgICBrZXkgZXhhY3RseSBvbmNlLiBUaGlzIHJlbGllcyBvbiBzeW1tZXRyaWMgZGlmZiBnaXZpbmcgc29ydGVkIG91dHB1dC4gKilcbiAgICBTZXF1ZW5jZS5tZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgIGxlZnRfZGlmZlxuICAgICAgcmlnaHRfZGlmZlxuICAgICAgfmNvbXBhcmU6KGZ1biAobGVmdF9rZXksIF8pIChyaWdodF9rZXksIF8pIC0+IGNvbXBhcmF0b3IuY29tcGFyZSBsZWZ0X2tleSByaWdodF9rZXkpXG4gICAgfD4gU2VxdWVuY2UuZm9sZCB+aW5pdDpvbGRfb3V0cHV0IH5mOihmdW4gb3V0cHV0IGRpZmZfZWxlbWVudCAtPlxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgIHwgTGVmdCAoa2V5LCBfKSB8IFJpZ2h0IChrZXksIF8pIC0+IGtleVxuICAgICAgICB8IEJvdGggKChsZWZ0X2tleSwgXyksIChfcmlnaHRfa2V5LCBfKSkgLT5cbiAgICAgICAgICAoKiBjb21wYXJpc29uIGZ1bmN0aW9ucyBjYW4gYmUgZXhwZW5zaXZlISAqKVxuICAgICAgICAgICgqIGFzc2VydCAoY29tcGFyYXRvci5jb21wYXJlIGxlZnRfa2V5IHJpZ2h0X2tleSA9IDApOyAqKVxuICAgICAgICAgIGxlZnRfa2V5XG4gICAgICBpblxuICAgICAgZiB+b2xkX291dHB1dCB+a2V5IH5vdXRwdXQgfmRpZmZfZWxlbWVudClcbiAgOztcblxuICBsZXQgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgPSBmdW5jdGlvblxuICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgOztcblxuICBsZXQgbWVyZ2VcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgbGVmdF9tYXBcbiAgICAgICAgcmlnaHRfbWFwXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHdpdGhfb2xkMlxuICAgICAgbGVmdF9tYXBcbiAgICAgIHJpZ2h0X21hcFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmY6KGZ1biB+b2xkIG5ld19sZWZ0X21hcCBuZXdfcmlnaHRfbWFwIC0+XG4gICAgICAgIG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgICAgfm9sZFxuICAgICAgICAgIH5uZXdfbGVmdF9tYXBcbiAgICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICAgIH5kYXRhX2VxdWFsX2xlZnRcbiAgICAgICAgICB+ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgICAgIH5mOihmdW4gfm9sZF9vdXRwdXQ6XyB+a2V5IH5vdXRwdXQgfmRpZmZfZWxlbWVudCAtPlxuICAgICAgICAgICAgKCogVGhlc2UgdmFsdWVzIHJlcHJlc2VudCB3aGV0aGVyIHRoZXJlIGlzIGRhdGEgZm9yIHRoZSBnaXZlbiBrZXkgaW4gdGhlIG5ld1xuICAgICAgICAgICAgICAgaW5wdXQgaW4gdGhlIGxlZnQgYW5kIHJpZ2h0IG1hcC4gKilcbiAgICAgICAgICAgIGxldCBsZWZ0X2RhdGFfb3B0LCByaWdodF9kYXRhX29wdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgICAgIHwgQm90aCAoKF8sIGxlZnRfZGlmZiksIChfLCByaWdodF9kaWZmKSkgLT5cbiAgICAgICAgICAgICAgICBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCBsZWZ0X2RpZmYsIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmZcbiAgICAgICAgICAgICAgfCBMZWZ0IChfLCBsZWZ0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmLCBNYXAuZmluZCBuZXdfcmlnaHRfbWFwIGtleVxuICAgICAgICAgICAgICB8IFJpZ2h0IChfLCByaWdodF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgIE1hcC5maW5kIG5ld19sZWZ0X21hcCBrZXksIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmZcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgb3V0cHV0X2RhdGFfb3B0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgeCwgTm9uZSAtPiBmIH5rZXkgKGBMZWZ0IHgpXG4gICAgICAgICAgICAgIHwgTm9uZSwgU29tZSB5IC0+IGYgfmtleSAoYFJpZ2h0IHkpXG4gICAgICAgICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZiB+a2V5IChgQm90aCAoeCwgeSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggb3V0cHV0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGEpKVxuICA7O1xuXG4gIGxldCBtZXJnZV9ib3RoX3NvbWVcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhvdXRfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICBsZWZ0X21hcFxuICAgICAgICByaWdodF9tYXBcbiAgICAgICAgfmZcbiAgICA9XG4gICAgd2l0aF9vbGQyXG4gICAgICBsZWZ0X21hcFxuICAgICAgcmlnaHRfbWFwXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICB+ZjooZnVuIH5vbGQgbmV3X2xlZnRfbWFwIG5ld19yaWdodF9tYXAgLT5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBuZXdfbGVmdF9tYXAgaW5cbiAgICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgbWF0Y2ggTWFwLmxlbmd0aCBuZXdfbGVmdF9tYXAsIE1hcC5sZW5ndGggbmV3X3JpZ2h0X21hcCB3aXRoXG4gICAgICAgICgqIEJlY2F1c2Ugd2Ugb25seSBjYXJlIGFib3V0IGtleXMgdGhhdCBhcmUgaW4gYm90aCBtYXBzLCBpZiBlaXRoZXIgbWFwIGlzXG4gICAgICAgICAgIGVtcHR5LCBiYWlsIGVhcmx5LiAqKVxuICAgICAgICB8IDAsIF8gfCBfLCAwIC0+IGVtcHR5XG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgICAgICB+b2xkXG4gICAgICAgICAgICB+bmV3X2xlZnRfbWFwXG4gICAgICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICAgICAgfmRhdGFfZXF1YWxfbGVmdFxuICAgICAgICAgICAgfmRhdGFfZXF1YWxfcmlnaHRcbiAgICAgICAgICAgIH5mOihmdW4gfm9sZF9vdXRwdXQgfmtleSB+b3V0cHV0IH5kaWZmX2VsZW1lbnQgLT5cbiAgICAgICAgICAgICAgbGV0IGxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0ID1cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgICAgICAgfCBCb3RoICgoXywgbGVmdF9kaWZmKSwgKF8sIHJpZ2h0X2RpZmYpKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0JWJpbmQgbGVmdF9kYXRhID0gbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIHJpZ2h0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZWZ0X2RhdGEsIHJpZ2h0X2RhdGFcbiAgICAgICAgICAgICAgICB8IExlZnQgKF8sIGxlZnRfZGlmZikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCViaW5kIGxlZnRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGV0JW1hcCByaWdodF9kYXRhID0gTWFwLmZpbmQgbmV3X3JpZ2h0X21hcCBrZXkgaW5cbiAgICAgICAgICAgICAgICAgIGxlZnRfZGF0YSwgcmlnaHRfZGF0YVxuICAgICAgICAgICAgICAgIHwgUmlnaHQgKF8sIHJpZ2h0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIG1hdGNoIGFybSBiaW5kcyBbcmlnaHRfZGF0YV0gZmlyc3QgYmVjYXVzZSB0aGUgbWFwIGxvb2t1cFxuICAgICAgICAgICAgICAgICAgICAgaXMgc2xvd2VyIHRoYW4gY2FsbGluZyBbbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnRdLiAqKVxuICAgICAgICAgICAgICAgICAgbGV0JWJpbmQgcmlnaHRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgbGVmdF9kYXRhID0gTWFwLmZpbmQgbmV3X2xlZnRfbWFwIGtleSBpblxuICAgICAgICAgICAgICAgICAgbGVmdF9kYXRhLCByaWdodF9kYXRhXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIGxvb2sgZm9yIHRoZSBwcmV2aW91c2x5IGNvbXB1dGVkIHZhbHVlIHRvIHNlZSBpZiB3ZSBhY3R1YWxseSBuZWVkIHRvXG4gICAgICAgICAgICAgICAgIGFkZCBvciByZW1vdmUgdGhlIGtleS4gKilcbiAgICAgICAgICAgICAgbGV0IHByZXZfb3V0ID0gTWFwLmZpbmQgb2xkX291dHB1dCBrZXkgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbGVmdF9hbmRfcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBmIH5rZXkgeCB5IGluXG4gICAgICAgICAgICAgICAgKG1hdGNoIHByZXZfb3V0IHdpdGhcbiAgICAgICAgICAgICAgICAgKCogaWYgdGhlIG5ldyByZXN1bHQgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCwgZG9uJ3QgY2hhbmdlIHRoZSBtYXAgKilcbiAgICAgICAgICAgICAgICAgfCBTb21lIHByZXZfb3V0IHdoZW4gb3V0X2VxdWFsIGRhdGEgcHJldl9vdXQgLT4gb3V0cHV0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggcHJldl9vdXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gb3V0cHV0XG4gICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleSkpKVxuICA7O1xuXG4gIGxldCBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSBpbnB1dF9kYXRhIG91dHB1dF9kYXRhIGZfb3V0cHV0IHN0YXRlX3dpdG5lc3MpXG4gICAgICAgICh3aXRuZXNzIDogKGlucHV0X2RhdGEsIG91dHB1dF9kYXRhLCBmX291dHB1dCkgTWFwX3R5cGUudClcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChsaHMgOiAoKCdrZXksIGlucHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOihpbnB1dF9kYXRhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKGZfb3V0cHV0LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgbGhzIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBhY2MgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFhY2MpIGluXG4gICAgbGV0IChvbl9pbm5lcl9jaGFuZ2UgOiBrZXk6J2tleSAtPiBmX291dHB1dCAtPiB1bml0KSA9XG4gICAgICBtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IGZ1biB+a2V5IGRhdGEgLT4gYWNjIDo9IE1hcC5zZXQgIWFjYyB+a2V5IH5kYXRhXG4gICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgZnVuIH5rZXkgb3B0IC0+XG4gICAgICAgICAgbGV0IG9sZCA9ICFhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgICAgICA6PSAobWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG9sZCBrZXlcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb2xkIH5rZXkgfmRhdGEpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxoc19jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGxocyB+ZjooZnVuIG1hcCAtPlxuICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgICB+aW5pdDohcHJldl9ub2Rlc1xuICAgICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGRlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hcC5yZW1vdmUgbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSBNYXAucmVtb3ZlICFhY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmludmFsaWRhdGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBNYXAuZmluZF9leG4gIXByZXZfbWFwIGtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBPcHRpb24uaXRlciBjdXRvZmYgfmY6KGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLnNldF9jdXRvZmYgKEUuTm9kZS53YXRjaCBub2RlKSBjKTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBsaHNfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KG9uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc2V0IG5vZGVzIH5rZXkgfmRhdGE6KG5vZGUsIHVzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHByZXZfbm9kZXMgOj0gbmV3X25vZGVzO1xuICAgICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgbGhzX2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGknID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgIE1hcF90eXBlLkZpbHRlcl9tYXBcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcFxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwaScgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgTWFwX3R5cGUuTWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcCcgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWVyZ2UnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbF9sZWZ0ID9kYXRhX2VxdWFsX3JpZ2h0IG1hcDEgbWFwMiB+ZiA9XG4gICAgbWVyZ2VcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsX2xlZnRcbiAgICAgID9kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICBtYXAxXG4gICAgICBtYXAyXG4gICAgICB+ZjooZnVuIH5rZXk6XyBkaWZmIC0+IFNvbWUgZGlmZilcbiAgICB8PiBmaWx0ZXJfbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmIH5mOihmdW4gfmtleSB+ZGF0YTpkaWZmIC0+IGYgfmtleSBkaWZmKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvclxuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsIDogdiAtPiB2IC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGxlZnRfcmVzdWx0X2VxdWFsIDogdjEgLT4gdjEgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8ocmlnaHRfcmVzdWx0X2VxdWFsIDogdjIgLT4gdjIgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChpbnB1dCA6ICgoJ2tleSwgdiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6diAtPiB2MSAqIHYyKVxuICAgIDogKCgna2V5LCB2MSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICogKCgna2V5LCB2MiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXQgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgbGVmdF9hY2MgOiAoJ2tleSwgdjEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWxlZnRfYWNjKSBpblxuICAgIGxldCByaWdodF9hY2MgOiAoJ2tleSwgdjIsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmlnaHRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyaWdodF9hY2MpIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBpbnB1dF9jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlZnQsIHJpZ2h0ID1cbiAgICAgICAgICAgIG1hdGNoIE1hcC5pc19lbXB0eSAhcHJldl9tYXAsIE1hcC5pc19lbXB0eSBtYXAgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIHwgZmFsc2UsIHRydWUgLT4gZW1wdHlfbWFwLCBlbXB0eV9tYXBcbiAgICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgKCogTWFwcGluZyBvbiBhIG1hcCBpcyB3YXkgZmFzdGVyIHRoYW4gc3ltbWV0cmljIGRpZmZpbmcgYW5kIHRoZW5cbiAgICAgICAgICAgICAgICAgYnVpbGRpbmcgdGhlIG1hcHMgdXAgcGllY2UgYnkgcGllY2UsIHNvIHdlIGRvIHRoaXMgd2hlbmV2ZXIgd2VcbiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbiBmcm9tIFwiZW1wdHlcIiB0byBcInNvbWV0aGluZ1wiLCB3aGljaCB3aWxsIGFsbW9zdCBhbHdheXNcbiAgICAgICAgICAgICAgICAgaGFwcGVuIG9uIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICAgICAgICBsZXQgbGVmdCA9XG4gICAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGwsIF8gPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICAgIHIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxlZnQsIHJpZ2h0XG4gICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgfmluaXQ6KCFsZWZ0X2FjYywgIXJpZ2h0X2FjYylcbiAgICAgICAgICAgICAgICB+ZjooZnVuIChsZWZ0LCByaWdodCkgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAocHJldiwgbmV3XykgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfYSwgcHJldl9iID0gZiB+a2V5IH5kYXRhOnByZXYgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19hLCBuZXdfYiA9IGYgfmtleSB+ZGF0YTpuZXdfIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBsZWZ0X3Jlc3VsdF9lcXVhbCBwcmV2X2EgbmV3X2FcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOm5ld19hXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgcmlnaHRfcmVzdWx0X2VxdWFsIHByZXZfYiBuZXdfYlxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpuZXdfYlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE1hcC5yZW1vdmUgbGVmdCBrZXksIE1hcC5yZW1vdmUgcmlnaHQga2V5XG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCBlbGVtZW50IC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gZiB+a2V5IH5kYXRhOmVsZW1lbnQgaW5cbiAgICAgICAgICAgICAgICAgICAgTWFwLnNldCBsZWZ0IH5rZXkgfmRhdGE6YSwgTWFwLnNldCByaWdodCB+a2V5IH5kYXRhOmIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgIWxlZnRfYWNjIGxlZnQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgbGVmdF9yZXN1bHQ7XG4gICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsICFyaWdodF9hY2MgcmlnaHQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgcmlnaHRfcmVzdWx0O1xuICAgICAgICAgIGxlZnRfYWNjIDo9IGxlZnQ7XG4gICAgICAgICAgcmlnaHRfYWNjIDo9IHJpZ2h0O1xuICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfY2hhbmdlKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICAgIGlucHV0XG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgICAgaW5wdXRcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgICAgICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICB+ZlxuICAgICAgICB8PiBUdXBsZTIudW5jdXJyeSBJbmNyZW1lbnRhbC5ib3RoKVxuICAgIGluXG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmZzdCBwYWlyLCBJbmNyZW1lbnRhbC5tYXAgfmY6c25kIHBhaXJcbiAgOztcblxuICBsZXQgdW56aXAgP2luc3RydW1lbnRhdGlvbiA/bGVmdF9yZXN1bHRfZXF1YWwgP3JpZ2h0X3Jlc3VsdF9lcXVhbCBpbnB1dCA9XG4gICAgbGV0IGRhdGFfZXF1YWwgPVxuICAgICAgT3B0aW9uLm1hcDIgbGVmdF9yZXN1bHRfZXF1YWwgcmlnaHRfcmVzdWx0X2VxdWFsIH5mOihmdW4gbCByIC0+XG4gICAgICAgIFR1cGxlMi5lcXVhbCB+ZXExOmwgfmVxMjpyKVxuICAgIGluXG4gICAgdW56aXBfbWFwaVxuICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGRhdGEpXG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOih2LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKHYxLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50ICogKHYyLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCB2MSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICogKCgna2V5LCB2MiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXQgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHByZXZfbm9kZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBsZWZ0X29uX2lubmVyX2NoYW5nZSB+a2V5IGRhdGEgPSBsZWZ0X2FjYyA6PSBNYXAuc2V0ICFsZWZ0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5IGRhdGEgPSByaWdodF9hY2MgOj0gTWFwLnNldCAhcmlnaHRfYWNjIH5rZXkgfmRhdGEgaW5cbiAgICBsZXQgcmVjIGlucHV0X2NoYW5nZSA9XG4gICAgICBsYXp5XG4gICAgICAgIChJbmNyZW1lbnRhbC5tYXAgaW5wdXQgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgICAgfmluaXQ6IXByZXZfbm9kZXNcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9sZWZ0X2RlcCwgX3JpZ2h0X2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGxlZnRfZGVwLCByaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXAucmVtb3ZlIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IGxlZnRfZGVwO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBsZWZ0X2FjYyA6PSBNYXAucmVtb3ZlICFsZWZ0X2FjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgICByaWdodF9hY2MgOj0gTWFwLnJlbW92ZSAhcmlnaHRfYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLml0ZXIgY3V0b2ZmIH5mOihmdW4gYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdF9pbmNyLCByaWdodF9pbmNyID0gZiB+a2V5IH5kYXRhOihFLk5vZGUud2F0Y2ggbm9kZSkgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZSBsZWZ0X2luY3Igfm9uX2NoYW5nZToobGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRfaW5jclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zZXRcbiAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICB+ZGF0YToobm9kZSwgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCwgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXApKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgcHJldl9ub2RlcyA6PSBuZXdfbm9kZXM7XG4gICAgICAgICAgICAgcHJldl9tYXAgOj0gbWFwKSkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpJyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICAgIG1hcFxuICAgICAgICB8PiB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvcicgfmluc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIH5jb21wYXJhdG9yIH5mXG4gICAgICAgIHw+IFR1cGxlMi51bmN1cnJ5IEluY3JlbWVudGFsLmJvdGgpXG4gICAgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0IHBhaXIsIEluY3JlbWVudGFsLm1hcCB+ZjpzbmQgcGFpclxuICA7O1xuXG4gIGxldCBrZXlzID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgYWRkIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQuYWRkIGFjYyBrZXkgaW5cbiAgICAgIGxldCByZW1vdmUgfmtleSB+ZGF0YTpfIGFjYyA9IFNldC5yZW1vdmUgYWNjIGtleSBpblxuICAgICAgbGV0IGRhdGFfZXF1YWwgXyBfID0gdHJ1ZSBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgfmluaXQ6KFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICB+aW5pdDooZW1wdHksIGVtcHR5KVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YTpfIH5uZXdfZGF0YTpkYXRhIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCBkYXRhIC0+IE1hcC5zZXQgZmlyc3QgfmtleSB+ZGF0YSwgTWFwLnJlbW92ZSBzZWNvbmQga2V5XG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBNYXAucmVtb3ZlIGZpcnN0IGtleSwgTWFwLnNldCBzZWNvbmQgfmtleSB+ZGF0YSlcbiAgICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IGRhdGEgLT4gTWFwLmFkZF9leG4gZmlyc3QgfmtleSB+ZGF0YSwgc2Vjb25kXG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBmaXJzdCwgTWFwLmFkZF9leG4gc2Vjb25kIH5rZXkgfmRhdGEpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhOl8gKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgTWFwLnJlbW92ZSBmaXJzdCBrZXksIE1hcC5yZW1vdmUgc2Vjb25kIGtleSkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBtYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mXG4gICAgfD4gcGFydGl0aW9uX21hcGkgP2luc3RydW1lbnRhdGlvbiB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBkYXRhKVxuICA7O1xuXG4gIGxldCBmbGF0dGVuIHN0YXRlIG1hcCA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IHJlc3VsdCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcCkpIGluXG4gICAgbGV0IG5vZGUgPSBFLk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT4gIXJlc3VsdCkgaW5cbiAgICBNYXAuaXRlcmkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YTppbmNyIC0+XG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbmNyIH5vbl9jaGFuZ2U6KGZ1biBhIC0+XG4gICAgICAgICAgIHJlc3VsdCA6PSBNYXAuc2V0ICFyZXN1bHQgfmtleSB+ZGF0YTphKSkpO1xuICAgIEUuTm9kZS53YXRjaCBub2RlXG4gIDs7XG5cbiAgbGV0IGpvaW5fd2l0aF9jb21wYXJhdG9yIH5pbnN0cnVtZW50YXRpb24gbWFwX2luY3IgfmNvbXBhcmF0b3IgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIG1hcF9pbmNyIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHJlc3VsdF9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IG9sZF9tYXBfb2ZfaW5jcnMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGN1cnJlbnRfZGVwZW5kZW5jaWVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJlc3VsdF9tYXApIGluXG4gICAgbGV0IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZSA9XG4gICAgICBsZXQgbmV3X2RlcCA9XG4gICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGUgZGF0YV9ub2RlIH5vbl9jaGFuZ2U6KGZ1biBkYXRhIC0+XG4gICAgICAgICAgcmVzdWx0X21hcCA6PSBNYXAuc2V0ICFyZXN1bHRfbWFwIH5rZXkgfmRhdGEpXG4gICAgICBpblxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCBuZXdfZGVwO1xuICAgICAgTWFwLnNldCBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhOm5ld19kZXBcbiAgICBpblxuICAgIGxldCByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5ID1cbiAgICAgIGxldCBkZXAgPSBNYXAuZmluZF9leG4gY3VycmVudF9kZXBlbmRlbmNpZXMga2V5IGluXG4gICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgIHJlc3VsdF9tYXAgOj0gTWFwLnJlbW92ZSAhcmVzdWx0X21hcCBrZXk7XG4gICAgICBNYXAucmVtb3ZlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIGtleVxuICAgIGluXG4gICAgbGV0IGxoc19jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIG1hcF9pbmNyIH5mOihmdW4gbWFwX29mX2luY3JzIC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IG5ld19kZXBlbmRlbmN5X21hcCA9XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICFvbGRfbWFwX29mX2luY3JzXG4gICAgICAgICAgICAgIG1hcF9vZl9pbmNyc1xuICAgICAgICAgICAgICB+aW5pdDohY3VycmVudF9kZXBlbmRlbmNpZXNcbiAgICAgICAgICAgICAgfmY6KGZ1biBjdXJyZW50X2RlcGVuZGVuY2llcyAoa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5XG4gICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9ub2RlIC0+IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZVxuICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF8sIGRhdGFfbm9kZSkgLT5cbiAgICAgICAgICAgICAgICAgIHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfD4gYWRkX3N1Ym5vZGUgfmtleSB+ZGF0YV9ub2RlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY3VycmVudF9kZXBlbmRlbmNpZXMgOj0gbmV3X2RlcGVuZGVuY3lfbWFwO1xuICAgICAgICAgIG9sZF9tYXBfb2ZfaW5jcnMgOj0gbWFwX29mX2luY3JzKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgbGhzX2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIHJlc3VsdFxuICA7O1xuXG4gIGxldCBqb2luID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBqb2luX3dpdGhfY29tcGFyYXRvciB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBtb2R1bGUgU2VwYXJhdGVfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBpbnB1dF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgOyBtdXRhYmxlIGV4cGVydF9ub2RlcyA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBvdXRwdXRfbWFwIDogKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudFxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSBjb21wYXJhdG9yID1cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB7IGlucHV0X21hcCA9IGVtcHR5OyBleHBlcnRfbm9kZXMgPSBlbXB0eTsgb3V0cHV0X21hcCA9IGVtcHR5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9sb29rdXBfbm9kZSBzdGF0ZSB0IGtleSA9XG4gICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPiBNYXAuZmluZF9leG4gdC5pbnB1dF9tYXAga2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzZXBhcmF0ZSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgaW5wdXRfbWFwIH5kYXRhX2VxdWFsID1cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dF9tYXAgaW5cbiAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXRfbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IHN0YXRlID0gU2VwYXJhdGVfc3RhdGUuY3JlYXRlIGNvbXBhcmF0b3IgaW5cbiAgICAgIGxldCBvdXRwdXRfbWFwX25vZGUgPVxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgaW5cbiAgICAgIGxldCBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkID1cbiAgICAgICAgbGV0IGRlcGVuZGVuY3kgPVxuICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5EZXBlbmRlbmN5LmNyZWF0ZSAoTGF6eS5mb3JjZV92YWwgaW5wdXRfbWFwX2NoYW5nZWQpXG4gICAgICAgIGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgZGVwZW5kZW5jeVxuICAgICAgaW5cbiAgICAgICgqIFdlIHdhbnQgdG8gbWFrZSBub2RlcyBkZXBlbmQgb24gW2lucHV0X21hcF9jaGFuZ2VkXSBzbyB0aGF0IFtpbnB1dF9tYXBfY2hhbmdlZF1cbiAgICAgICAgIGlzIGFsbG93ZWQgdG8gbWFrZSB0aGVtIHN0YWxlLCBidXQgd2UgZG8gbm90IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGZvciBhbnlcbiAgICAgICAgIG90aGVyIHJlYXNvbi4gU28gd2UgbWFrZSBbaW5wdXRfbWFwX2NoYW5nZWRdIGEgdW5pdCBpbmNyZW1lbnRhbCAodGhhdCB0aGVyZWZvcmVcbiAgICAgICAgIG5ldmVyIGNoYW5nZXMpIGFuZCB0aGlzIHdheSBbb3V0cHV0X21hcF9ub2RlXSBhbmQgdGhlIGxvb2t1cCBub2RlcyB3aWxsIG9ubHkgYmVcbiAgICAgICAgIHJlY29tcHV0ZWQgd2hlbiB0aGV5IGFyZSBleHBsaWNpdGx5IG1hZGUgc3RhbGUuXG4gICAgICAqKVxuICAgICAgbGV0IHJlYyBpbnB1dF9tYXBfY2hhbmdlZCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgcHJldl9pbnB1dF9tYXAgPSBzdGF0ZS5pbnB1dF9tYXAgaW5cbiAgICAgICAgICAgICAgIGxldCBleHBlcnRfbm9kZXMsIG91dHB1dF9tYXAgPVxuICAgICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICAgIHByZXZfaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgICB+aW5pdDooc3RhdGUuZXhwZXJ0X25vZGVzLCBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgICAgICAgICAgICAgIH5mOihmdW4gKGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcCkgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgYExlZnQgX29sZF92YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2xkX25vZGUgPSBNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5pbnZhbGlkYXRlIG9sZF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIG91dHB1dF9tYXBfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgTWFwLnJlbW92ZSBleHBlcnRfbm9kZXMga2V5LCBNYXAucmVtb3ZlIG91dHB1dF9tYXAga2V5XG4gICAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfbmV3X3ZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZV9zdGF0ZS5jcmVhdGVfbG9va3VwX25vZGUgaW5jcmVtZW50YWxfc3RhdGUgc3RhdGUga2V5XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgb3V0cHV0X21hcF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAoIE1hcC5hZGRfZXhuIGV4cGVydF9ub2RlcyB+a2V5IH5kYXRhOm5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgLCBNYXAuYWRkX2V4blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfmRhdGE6KEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG5vZGUpIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF9vbGRfdmFsdWUsIF9uZXdfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgKE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHN0YXRlLmlucHV0X21hcCA8LSBpbnB1dF9tYXA7XG4gICAgICAgICAgICAgICBzdGF0ZS5leHBlcnRfbm9kZXMgPC0gZXhwZXJ0X25vZGVzO1xuICAgICAgICAgICAgICAgc3RhdGUub3V0cHV0X21hcCA8LSBvdXRwdXRfbWFwKSkpXG4gICAgICBpblxuICAgICAgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBvdXRwdXRfbWFwX25vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggb3V0cHV0X21hcF9ub2RlKVxuICA7O1xuXG4gICgqIEp1c3QgZm9yIGRlcml2aW5nIHN0cnVjdHVyYWwgZXF1YWxpdHkuICopXG4gIHR5cGUgJ2EgbWF5YmVfYm91bmRfc3RydWN0dXJhbGx5ID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gICAgfCBJbmNsIG9mICdhXG4gICAgfCBFeGNsIG9mICdhXG4gICAgfCBVbmJvdW5kZWRcbiAgW0BAZGVyaXZpbmcgZXF1YWxdXG5cbiAgbGV0IHN1YnJhbmdlXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXBfaW5jciA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgcmFuZ2VcbiAgICA9XG4gICAgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gbWFwX2luY3IgcmFuZ2UgfmY6KGZ1biB+b2xkIG1hcCByYW5nZSAtPlxuICAgICAgbGV0IGNvbXBhcmUgPSAoTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICBsZXQgZXF1YWwgbCByID0gY29tcGFyZSBsIHIgPSAwIGluXG4gICAgICBsZXQgKCA+ICkgYSBiID0gY29tcGFyZSBhIGIgPiAwXG4gICAgICBhbmQgKCA+PSApIGEgYiA9IGNvbXBhcmUgYSBiID49IDAgaW5cbiAgICAgIGxldCBtYXliZV9ib3VuZF9lcXVhbCBhIGIgOiBib29sID0gZXF1YWxfbWF5YmVfYm91bmRfc3RydWN0dXJhbGx5IGVxdWFsIGEgYiBpblxuICAgICAgbGV0IHJhbmdlX2lzX2VtcHR5IH5taW4gfm1heCA6IGJvb2wgPVxuICAgICAgICBtYXRjaCBtaW4sIG1heCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkLCAoVW5ib3VuZGVkIHwgRXhjbCBfIHwgSW5jbCBfKSB8IChFeGNsIF8gfCBJbmNsIF8pLCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgICAgICAgfCBJbmNsIG1pbiwgSW5jbCBtYXggLT4gbWluID4gbWF4XG4gICAgICAgIHwgRXhjbCBtaW4sIEV4Y2wgbWF4IHwgSW5jbCBtaW4sIEV4Y2wgbWF4IHwgRXhjbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+PSBtYXhcbiAgICAgIGluXG4gICAgICBsZXQgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleSA6IGJvb2wgPVxuICAgICAgICBNYXliZV9ib3VuZC5pc19sb3dlcl9ib3VuZCBtaW4gfm9mXzprZXkgfmNvbXBhcmVcbiAgICAgICAgJiYgTWF5YmVfYm91bmQuaXNfdXBwZXJfYm91bmQgbWF4IH5vZl86a2V5IH5jb21wYXJlXG4gICAgICBpblxuICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIEVtcHR5IG5ldyByYW5nZSBtZWFucyBlbXB0eSBtYXAgKilcbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgIHwgU29tZSAoKG1pbiwgbWF4KSBhcyByYW5nZSkgLT5cbiAgICAgICAgbGV0IGZyb21fc2NyYXRjaCAoKSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6bWF4IGluXG4gICAgICAgIChtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgfCBOb25lIHwgU29tZSAoXywgTm9uZSwgXykgLT5cbiAgICAgICAgICAgKCogbm8gb2xkIHJhbmdlICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChfLCBTb21lIChvbGRfbWluLCBvbGRfbWF4KSwgXylcbiAgICAgICAgICAgd2hlbiByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbiB+bWF4Om9sZF9tYXhcbiAgICAgICAgICAgICB8fCByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heCAtPlxuICAgICAgICAgICAoKiBlbXB0eSBvbGQgcmFuZ2Ugb3Igb2xkIHJhbmdlIGRpc2pvaW50IHdpdGggbmV3ICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBTb21lICgob2xkX21pbiwgb2xkX21heCkgYXMgb2xkX3JhbmdlKSwgb2xkX3JlcykgLT5cbiAgICAgICAgICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICAgICAgICAgKCogUmV0dXJucyB0cnVlIGlmZiB0aGUga2V5IGlzIGluIGJvdGggbmV3IGFuZCBvbGQgcmFuZ2VzICopXG4gICAgICAgICAgICAgbGV0IGluX3JhbmdlX2ludGVyc2VjdGlvbiBrZXkgPVxuICAgICAgICAgICAgICAgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleVxuICAgICAgICAgICAgICAgJiYgcmFuZ2VfaW5jbHVkZXMgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heCBrZXlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEFwcGx5IGNoYW5nZXMgdG8ga2V5cyB3aGljaCBhcmUgaW4gdGhlIGludGVyc2VjdGlvbiBvZiBib3RoIHJhbmdlcy5cblxuICAgICAgICAgICAgICAgIFtvdXRzaWRlXSBpcyB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgb3V0c2lkZSB0aGUgcmFuZ2UgaW50ZXJzZWN0aW9uIHRoYXQgd2VcbiAgICAgICAgICAgICAgICB0b2xlcmF0ZSBiZWZvcmUgZ2l2aW5nIHVwIGFuZCByZWNvbnN0cnVjdGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlLiBUaGlzXG4gICAgICAgICAgICAgICAgaXMgYW4gb3B0aW1pc2F0aW9uIGluIHRoZSBjYXNlIHRoYXQgdGhlIG1hcCBjaGFuZ2VzIGluIGEgdmVyeSBiaWcgd2F5LCBhdFxuICAgICAgICAgICAgICAgIHdoaWNoIHBvaW50IGNvbXB1dGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlIGlzIGNoZWFwZXIuICAqKVxuICAgICAgICAgICAgIGxldCBhcHBseV9kaWZmX2luX2ludGVyc2VjdGlvbiAob3V0c2lkZSwgbWFwKSAoa2V5LCBkYXRhKSA9XG4gICAgICAgICAgICAgICBpZiBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5XG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXlcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YSB8IGBVbmVxdWFsIChfLCBkYXRhKSAtPiBvdXRzaWRlLCBNYXAuc2V0IG1hcCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIGxldCBvdXRzaWRlID0gb3V0c2lkZSAtIDEgaW5cbiAgICAgICAgICAgICAgICAgaWYgSW50Lk8uKG91dHNpZGUgPCAwKVxuICAgICAgICAgICAgICAgICB0aGVuIHJldHVybiAoZnJvbV9zY3JhdGNoICgpKVxuICAgICAgICAgICAgICAgICBlbHNlIG91dHNpZGUsIE1hcC5yZW1vdmUgbWFwIGtleSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEZpcnN0IHVwZGF0ZSB0aGUga2V5cyBpbiAvYm90aC8gdGhlIG9sZCBhbmQgdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICBsZXQgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb24gPVxuICAgICAgICAgICAgICAgKCogQ3V0b2ZmIHRoZSBiaWcgZGlmZiBjb21wdXRhdGlvbiBpZiB3ZSByZWFjaCBPKHxzdWJtYXB8KSBudW1iZXIgb2ZcbiAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgcmFuZ2UgKilcbiAgICAgICAgICAgICAgIGxldCBvdXRzaWRlX2N1dG9mZiA9IE1hcC5sZW5ndGggb2xkX3JlcyAvIDQgaW5cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OihvdXRzaWRlX2N1dG9mZiwgb2xkX3JlcylcbiAgICAgICAgICAgICAgICAgfmY6YXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgIHw+IHNuZFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgVHVwbGUyLmVxdWFsIH5lcTE6bWF5YmVfYm91bmRfZXF1YWwgfmVxMjptYXliZV9ib3VuZF9lcXVhbCBvbGRfcmFuZ2UgcmFuZ2VcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBUaGVyZSBhcmUgbm8ga2V5cyB0byByZW1vdmUgYW5kIGV2ZXJ5dGhpbmcgaW4gcmFuZ2UgaXMgdXBkYXRlZC4gKilcbiAgICAgICAgICAgICAgIHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAoKiBSZW1vdmUgYW55IGtleXMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgbmV3IHJhbmdlLiAqKVxuICAgICAgICAgICAgICAgbGV0IHdpdGhvdXRfa2V5c19vdXRfb2ZfcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2VcbiAgICAgICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgICAgICAgIH5sb3dlcl9ib3VuZDptaW5cbiAgICAgICAgICAgICAgICAgICB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCogQWRkIGluIGFueSBrZXlzIHdoaWNoIGFyZSBpbiB0aGUgbmV3IHJhbmdlIGJ1dCBub3QgdGhlIG9sZCByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSA9XG4gICAgICAgICAgICAgICAgIGxldCBtYXBfYXBwZW5kX2V4biBsb3dlcl9wYXJ0IHVwcGVyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICAgICAgICAgICAgICAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+XG4gICAgICAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImltcG9zc2libGUgY2FzZTogQlVHIGluIGluY3JfbWFwLm1sIHN1YnJhbmdlXCJcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbGV0IGxvd2VyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIG9sZF9taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgICAgICAgICAgICAgIHwgRXhjbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihJbmNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgICAgfCBJbmNsIG9sZF9taW4gLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6KEV4Y2wgb2xkX21pbilcbiAgICAgICAgICAgICAgICAgYW5kIHVwcGVyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIG9sZF9tYXggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgICAgICAgICAgICAgIHwgRXhjbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooSW5jbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgICAgfCBJbmNsIG9sZF9tYXggLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOihFeGNsIG9sZF9tYXgpIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbWFwX2FwcGVuZF9leG5cbiAgICAgICAgICAgICAgICAgICBsb3dlcl9wYXJ0XG4gICAgICAgICAgICAgICAgICAgKG1hcF9hcHBlbmRfZXhuIHdpdGhvdXRfa2V5c19vdXRfb2ZfcmFuZ2UgdXBwZXJfcGFydClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICB3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSkpKSlcbiAgOztcblxuICBsZXQgcmVrZXlcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3JcbiAgICAgICAgfmZcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIG1hcF9pbmNyXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yLCBbXSlcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIChvdXRwdXQsIGFkZHMpIC0+XG4gICAgICAgIGxldCBuZXdfZW50cnkgPSBmIH5rZXkgfmRhdGEsIGRhdGEgaW5cbiAgICAgICAgb3V0cHV0LCBuZXdfZW50cnkgOjogYWRkcylcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIChvdXRwdXQsIGFkZHMpIC0+IE1hcC5yZW1vdmUgb3V0cHV0IChmIH5rZXkgfmRhdGEpLCBhZGRzKVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgcHJldl9rZXkgPSBmIH5rZXkgfmRhdGE6b2xkX2RhdGEgaW5cbiAgICAgICAgbGV0IG5ld19rZXkgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgaWYgKE1hcC5jb21wYXJhdG9yIG91dHB1dCkuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIE1hcC5zZXQgb3V0cHV0IH5rZXk6bmV3X2tleSB+ZGF0YTpuZXdfZGF0YSwgYWRkc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgb3V0cHV0ID0gTWFwLnJlbW92ZSBvdXRwdXQgcHJldl9rZXkgaW5cbiAgICAgICAgICBvdXRwdXQsIChuZXdfa2V5LCBuZXdfZGF0YSkgOjogYWRkcykpXG4gICAgICB+ZmluYWxpemU6KGZ1biAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgICBMaXN0LmZvbGQgYWRkcyB+aW5pdDpvdXRwdXQgfmY6KGZ1biBvdXRwdXQgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIE1hcC5hZGRfZXhuIG91dHB1dCB+a2V5IH5kYXRhKVxuICAgICAgICBpblxuICAgICAgICBvdXRwdXQsIFtdKVxuICAgIHw+IEluY3JlbWVudGFsLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgaW5kZXhfYnlpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yXG4gICAgICAgIH5pbmRleFxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBpbm5lcl9jb21wYXJhdG9yIC0+XG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+YWRkOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgb3V0ZXJfbWFwIC0+XG4gICAgICAgICAgbWF0Y2ggaW5kZXggfmtleTppbm5lcl9rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBvdXRlcl9tYXBcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfa2V5IC0+XG4gICAgICAgICAgICBNYXAudXBkYXRlIG91dGVyX21hcCBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiBpbm5lcl9rZXkgZGF0YSB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT4gTWFwLmFkZF9leG4gaW5uZXJfbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLmNoYW5nZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcIkJVRzogSGl0IHN1cHBvc2VkbHkgaW1wb3NzaWJsZSBjYXNlIGluIEluY3JfbWFwLmluZGV4X2J5XCJcbiAgICAgICAgICAgICAgfCBTb21lIGlubmVyX21hcCAtPlxuICAgICAgICAgICAgICAgIGxldCBpbm5lcl9tYXAgPSBNYXAucmVtb3ZlIGlubmVyX21hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgaW5uZXJfbWFwIHRoZW4gTm9uZSBlbHNlIFNvbWUgaW5uZXJfbWFwKSkpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmNvbXBhcmF0b3IgfmluZGV4ID1cbiAgICBpbmRleF9ieWlcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIH5pbmRleDooZnVuIH5rZXk6XyB+ZGF0YSAtPiBpbmRleCBkYXRhKVxuICA7O1xuXG5cbiAgKCoqIEZpbmQgdHdvIGtleXMgaW4gbWFwIGJ5IGluZGV4LCBPKG4pLiBXZSB1c2UganVzdCBvbmUgZm9sZCAodHdvIE1hcC5udGggd291bGQgdXNlIHR3bylcbiAgICAgIGFuZCBvcHRpbWl6ZSBmb3Iga2V5cyBjbG9zZSB0byBlaXRoZXIgYmVnaW5uaW5nIG9yIGVuZCBieSB1c2luZyBlaXRoZXIgZm9sZCBvclxuICAgICAgZm9sZF9yaWdodC5cbiAgKilcbiAgbW9kdWxlIEtleV9zdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICdrIHQgPVxuICAgICAgfCBLbm93biBvZiAna1xuICAgICAgfCBLbm93bl9ub25lXG4gICAgICB8IFVua25vd25cblxuICAgIGxldCBpc19rbm93biA9IGZ1bmN0aW9uXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlXG4gICAgOztcblxuICAgIGxldCB0b19vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIHwgS25vd25fbm9uZSAtPiBOb25lXG4gICAgICB8IEtub3duIGsgLT4gU29tZSBrXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciAodHlwZSBrKSB+ZnJvbSB+dG9fIChtYXAgOiAoaywgXywgXykgTWFwLnQpXG4gICAgOiAoayAqIGsgb3B0aW9uKSBvcHRpb25cbiAgICA9XG4gICAgbGV0IG9wZW4gS2V5X3N0YXR1cyBpblxuICAgIGxldCBsZW4gPSBNYXAubGVuZ3RoIG1hcCBpblxuICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA+PSApIGZyb20gbGVuIHRoZW4gS25vd25fbm9uZSBlbHNlIFVua25vd24gaW5cbiAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID49ICkgdG9fIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGZpbmRfa2V5cyBmb2xkIH5zdGFydF9wb3MgfmFkdmFuY2VfcG9zID1cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgbWFwXG4gICAgICAgICAgfmluaXQ6KGJlZ2luX2tleSwgZW5kX2tleSwgc3RhcnRfcG9zKVxuICAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YTpfIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcykgLT5cbiAgICAgICAgICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA9ICkgcG9zIGZyb20gdGhlbiBLbm93biBrZXkgZWxzZSBiZWdpbl9rZXkgaW5cbiAgICAgICAgICAgIGxldCBlbmRfa2V5ID0gaWYgSW50LiggPSApIHBvcyB0b18gdGhlbiBLbm93biBrZXkgZWxzZSBlbmRfa2V5IGluXG4gICAgICAgICAgICBpZiBpc19rbm93biBiZWdpbl9rZXkgJiYgaXNfa25vd24gZW5kX2tleVxuICAgICAgICAgICAgdGhlbiByZXR1cm4gKGJlZ2luX2tleSwgZW5kX2tleSwgcG9zKVxuICAgICAgICAgICAgZWxzZSBiZWdpbl9rZXksIGVuZF9rZXksIGFkdmFuY2VfcG9zIHBvcykpXG4gICAgaW5cbiAgICBsZXQgYmVnaW5fa2V5LCBlbmRfa2V5LCBfID1cbiAgICAgICgqIFNlYXJjaGluZyBmcm9tIGxlZnQgdGFrZXMgTyh0b18pLCBmcm9tIHJpZ2h0IC0gTyhsZW4gLSBmcm9tKSwgc28gc2VsZWN0IHRoZVxuICAgICAgICAgc21hbGxlciBvbmUuICopXG4gICAgICBpZiB0b18gPCBsZW4gLSBmcm9tXG4gICAgICB0aGVuIGZpbmRfa2V5cyBNYXAuZm9sZCB+c3RhcnRfcG9zOjAgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyArIDEpXG4gICAgICBlbHNlIGZpbmRfa2V5cyBNYXAuZm9sZF9yaWdodCB+c3RhcnRfcG9zOihsZW4gLSAxKSB+YWR2YW5jZV9wb3M6KGZ1biBwb3MgLT4gcG9zIC0gMSlcbiAgICBpblxuICAgIE9wdGlvbi5tYXAgKEtleV9zdGF0dXMudG9fb3B0aW9uIGJlZ2luX2tleSkgfmY6KGZ1biBiZWdpbl9rZXkgLT5cbiAgICAgIGJlZ2luX2tleSwgS2V5X3N0YXR1cy50b19vcHRpb24gZW5kX2tleSlcbiAgOztcblxuICBsZXQgbnRoX2Zyb21fZWl0aGVyX3NpZGUgKHR5cGUgaykgbiAobWFwIDogKGssIF8sIF8pIE1hcC50KSA6IGsgb3B0aW9uID1cbiAgICBPcHRpb24ubWFwIH5mOmZzdCAoZmluZF9rZXlfcmFuZ2VfbGluZWFyIH5mcm9tOm4gfnRvXzpuIG1hcClcbiAgOztcblxuICAoKiogRmluZCBrZXkgW2J5XSBwb3NpdGlvbnMgZWFybGllci9sYXRlciBpbiBhIG1hcC4gUmV0dXJucyBub25lIGlmIG91dCBvZiBib3VuZHMuICopXG4gIGxldCByZWMgb2Zmc2V0IChrZXkgOiAnaykgKG1hcCA6ICgnaywgXywgXykgTWFwLnQpIH5ieSA6ICdrIG9wdGlvbiA9XG4gICAgaWYgSW50LiggPSApIGJ5IDBcbiAgICB0aGVuIFNvbWUga2V5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2xvc2VzdF9kaXIsIGFkZCA9XG4gICAgICAgIGlmIEludC4oIDwgKSBieSAwIHRoZW4gYExlc3NfdGhhbiwgMSBlbHNlIGBHcmVhdGVyX3RoYW4sIC0xXG4gICAgICBpblxuICAgICAgbWF0Y2ggTWFwLmNsb3Nlc3Rfa2V5IG1hcCBjbG9zZXN0X2RpciBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBvZmZzZXQga2V5IG1hcCB+Ynk6KGJ5ICsgYWRkKSlcbiAgOztcblxuICAoKiogRmluZCBob3cgd2UgbmVlZCB0byBtb3ZlIFtrZXldIGlmIFtjaGFuZ2VkX2tleV0gY2hhbmdlZCBpbiB0aGUgZ2l2ZW5cbiAgICAgIHdheSAqKVxuICBsZXQgZmluZF9vZmZzZXQgfmNvbXBhcmUgfmtleSB+Y2hhbmdlZF9rZXkgY2hhbmdlID1cbiAgICBpZiBJbnQuKCA8ICkgKGNvbXBhcmUgY2hhbmdlZF9rZXkga2V5KSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgfCBgTGVmdCBfIC0+IDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gLTFcbiAgICAgIHwgXyAtPiAwKVxuICAgIGVsc2UgMFxuICA7O1xuXG4gIGxldCByYW5rXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgIChtYXAgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChrZXkgOiAoaywgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IHNhbWVfa2V5IGEgYiA9IGNvbXBhcmVfa2V5IGEgYiA9IDAgaW5cbiAgICAgIGxldCB3aGVuX2tleV9jaGFuZ2VkIH5tYXAgfm9sZF9rZXkgfm5ld19rZXkgfm9sZF9yYW5rID1cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgbmV3X2tleSBvbGRfa2V5IDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBJZiB0aGUgbmV3IGtleSBpcyBzbWFsbGVyIHRoYW4gdGhlIG9sZCBrZXksIGZpbmQgdGhlIHNpemUgb2YgdGhlIG1hcCBzdWJyYW5nZVxuICAgICAgICAgICAgIGJldHdlZW4gdGhlbSBhbmQgc3VidHJhY3QgaXQgZnJvbSB0aGUgcHJldmlvdXMgcmFuayAqKVxuICAgICAgICAgIGxldCBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQgPSBFeGNsIG5ld19rZXksIEV4Y2wgb2xkX2tleSBpblxuICAgICAgICAgIGxldCBzdWJyYW5nZSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCBpblxuICAgICAgICAgIG9sZF9yYW5rIC0gTWFwLmxlbmd0aCBzdWJyYW5nZSAtIDEpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIE90aGVyd2lzZSwgdGhlIG5ldyBrZXkgaXMgbGFyZ2VyIHRoYW4gdGhlIG9sZCBrZXksIHNvIGZpbmQgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgICAgICAgbWFwIHN1YnJhbmdlIGJldHdlZW4gdGhlbSBhbmQgYWRkIGl0IHRvIHRoZSBwcmV2aW91cyByYW5rICopXG4gICAgICAgICAgbGV0IGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCA9IEV4Y2wgb2xkX2tleSwgRXhjbCBuZXdfa2V5IGluXG4gICAgICAgICAgbGV0IHN1YnJhbmdlID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIGluXG4gICAgICAgICAgb2xkX3JhbmsgKyBNYXAubGVuZ3RoIHN1YnJhbmdlICsgMSlcbiAgICAgIGluXG4gICAgICBsZXQgd2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5IH5vbGRfcmFuayA9XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgKCogV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZGF0YSwgc28gb3B0aW1pemUgdGhlc2UgY2hlY2tzICopXG4gICAgICAgICAgfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gdHJ1ZSlcbiAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgbmV3X21hcFxuICAgICAgICAgIH5pbml0Om9sZF9yYW5rXG4gICAgICAgICAgfmY6KGZ1biBhY2MgKGRpZmZfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyAtIDFcbiAgICAgICAgICAgIHwgYFJpZ2h0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyArIDFcbiAgICAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBwcm9jZXNzIH4ob2xkIDogKChrLCB2LCBfKSBNYXAudCAqIF8gKiBfKSBvcHRpb24pIG5ld19tYXAgKG5ld19rZXkgOiBrKSA9XG4gICAgICAgIGlmIG5vdCAoTWFwLm1lbSBuZXdfbWFwIG5ld19rZXkpXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgICgqIElmIHRoZSBtYXAgYW5kIGtleSBhcmUgdGhlIHNhbWUsIGp1c3QgcmV1c2UgdGhlIG9sZCByYW5rICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBvbGRfcmFuaylcbiAgICAgICAgICAgIHdoZW4gcGh5c19lcXVhbCBuZXdfbWFwIG9sZF9tYXAgJiYgc2FtZV9rZXkgb2xkX2tleSBuZXdfa2V5IC0+IG9sZF9yYW5rXG4gICAgICAgICAgKCogSWYgdGhlIG1hcCBpcyB0aGUgc2FtZSBidXQgdGhlIGtleSBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHBoeXNfZXF1YWwgbmV3X21hcCBvbGRfbWFwIC0+XG4gICAgICAgICAgICBTb21lICh3aGVuX2tleV9jaGFuZ2VkIH5tYXA6bmV3X21hcCB+b2xkX2tleSB+bmV3X2tleSB+b2xkX3JhbmspXG4gICAgICAgICAgKCogSWYgdGhlIGtleSBpcyB0aGUgc2FtZSBidXQgdGhlIG1hcCBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHNhbWVfa2V5IG5ld19rZXkgb2xkX2tleSAtPlxuICAgICAgICAgICAgU29tZSAod2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5Om5ld19rZXkgfm9sZF9yYW5rKVxuICAgICAgICAgICgqIElmIGJvdGggdGhlIG1hcCBhbmQgdGhlIGtleSBjaGFuZ2VkLCB0aGlzIGNhbiBiZSBzaW11bGF0ZWQgYXMgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5naW5nIGZvbGxvd2VkIGJ5IHRoZSBrZXkgY2hhbmdpbmcgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIC0+XG4gICAgICAgICAgICAoKiBXZSBjYWxsIFtwcm9jZXNzXSByZWN1cnNpdmVseSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNhbGxpbmdcbiAgICAgICAgICAgICAgIFt3aGVuX21hcF9jaGFuZ2VkXSBmb2xsb3dlZCBieSBbd2hlbl9rZXlfY2hhbmdlZF0gc2luY2UgaXQgbWlnaHQgYmUgdGhlXG4gICAgICAgICAgICAgICBjYXNlIHRoYXQgW29sZF9rZXldIGlzIGluIFtvbGRfbWFwXSBhbmQgW25ld19rZXldIGlzIGluIFtuZXdfbWFwXSwgYnV0XG4gICAgICAgICAgICAgICBbb2xkX2tleV0gaXMgbm90IGluIFtuZXdfbWFwXS4gKilcbiAgICAgICAgICAgIGxldCBvbGRfcmFuayA9XG4gICAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykpIG5ld19tYXAgb2xkX2tleVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAobmV3X21hcCwgb2xkX2tleSwgb2xkX3JhbmspKSBuZXdfbWFwIG5ld19rZXlcbiAgICAgICAgICAoKiBJZiB0aGUgcHJldmlvdXMga2V5IHdhcyBub3QgaW4gdGhlIG1hcCBvciB0aGlzIGlzIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLFxuICAgICAgICAgICAgIGNvbXB1dGUgdGhlIHJhbmsgZnJvbSBzY3JhdGNoICopXG4gICAgICAgICAgfCBTb21lIChfLCBfLCBOb25lKSB8IE5vbmUgLT4gTWFwLnJhbmsgbmV3X21hcCBuZXdfa2V5KVxuICAgICAgaW5cbiAgICAgIHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIG1hcCBrZXkgfmY6cHJvY2VzcylcbiAgOztcblxuICAoKiogUmFuZ2UgbWFwIGJ5IGluZGljZXMgKilcbiAgbGV0IHN1YnJhbmdlX2J5X3JhbmtcbiAgICAgICAgKHR5cGUgayBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcCA6ICgoaywgXywgXykgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChyYW5nZSA6IChpbnQgTWF5YmVfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgID1cbiAgICBsZXQgZmluZF9rZXlfcmFuZ2UgKHJhbmdlIDogKGludCAqIGludCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgIDogKChrICogayBvcHRpb24pIG9wdGlvbiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgPVxuICAgICAgd2l0aF9vbGQyIG1hcCByYW5nZSB+aW5zdHJ1bWVudGF0aW9uIH5mOihmdW4gfm9sZCBtYXAgKGZyb20sIHRvXykgLT5cbiAgICAgICAgKCogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vIGtleXMsIG9ubHkgYmVnaW4ga2V5LCBvciBiZWdpbiBhbmQgZW5kIGtleXMuXG4gICAgICAgICAgIFRoZXNlIGFyZSB0aGUga2V5cyBhdCBbZnJvbV0gYW5kIFt0b19dIHBvc2l0aW9ucyBpbiB0aGUgbWFwLCBvciBOb25lIGlmIHRoZVxuICAgICAgICAgICBpbmRpY2VzIGFyZSB0b28gYmlnLiBBcyBhbHdheXMgWzAgPD0gZnJvbSAmJiBmcm9tIDw9IHRvX10sIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIHBvc3NpYmlsaXR5IG9mIG9ubHkgW3RvX10gYmVpbmcgYSB2YWxpZCBwb3NpdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgaWYgSW50LiggPCApIHRvXyBmcm9tIHx8IEludC4oIDwgKSBmcm9tIDBcbiAgICAgICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkludmFsaWQgaW5kaWNlc1wiIChmcm9tIDogaW50KSAodG9fIDogaW50KV07XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgU29tZSAob2xkX21hcCwgKG9sZF9mcm9tLCBvbGRfdG8pLCBTb21lIChiZWdpbl9rZXksIGVuZF9rZXlfb3B0KSkgLT5cbiAgICAgICAgICBsZXQgZmluZF9vZmZzZXQgPSBmaW5kX29mZnNldCB+Y29tcGFyZTooTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICAgICAgbGV0IHJhbmdlX29mZnNldF9iZWdpbiA9IGZyb20gLSBvbGRfZnJvbSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfZW5kID0gdG9fIC0gb2xkX3RvIGluXG4gICAgICAgICAgbGV0IGFkanVzdF9hbmRfb2Zmc2V0IH5ieSBrZXkgPVxuICAgICAgICAgICAgbGV0IGJ5ID0gYnkgKyBpZiBieSA+PSAwICYmIG5vdCAoTWFwLm1lbSBtYXAga2V5KSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICBvZmZzZXQga2V5IG1hcCB+YnlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUga2V5cyBjaGFuZ2luZyBhbmQgbm90IHRoZSBkYXRhLCBzbyBbZGF0YV9lcXVhbF0gaGVyZVxuICAgICAgICAgICAgIGNhbiBiZSBhbHdheXMgdHJ1ZSAqKVxuICAgICAgICAgIGxldCBkaWZmIH5pbml0IH5mID1cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpIG9sZF9tYXAgbWFwIH5pbml0IH5mXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmVnaW5fa2V5X29wdCwgZW5kX2tleV9vcHQgPVxuICAgICAgICAgICAgbWF0Y2ggZW5kX2tleV9vcHQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGVuZF9rZXkgLT5cbiAgICAgICAgICAgICAgbGV0IG1hcF9vZmZzZXRfYmVnaW4sIG1hcF9vZmZzZXRfZW5kID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OigwLCAwKSB+ZjooZnVuIChvZmZzZXRfYmVnaW4sIG9mZnNldF9lbmQpIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICggb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICwgb2Zmc2V0X2VuZCArIGZpbmRfb2Zmc2V0IH5rZXk6ZW5kX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZSApKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgYWRqdXN0X2FuZF9vZmZzZXQgZW5kX2tleSB+Ynk6KG1hcF9vZmZzZXRfZW5kICsgcmFuZ2Vfb2Zmc2V0X2VuZCkgKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OjAgfmY6KGZ1biBvZmZzZXRfYmVnaW4gKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggYWRqdXN0X2FuZF9vZmZzZXQgYmVnaW5fa2V5IH5ieToobWFwX29mZnNldF9iZWdpbiArIHJhbmdlX29mZnNldF9iZWdpbilcbiAgICAgICAgICAgICAgLCBudGhfZnJvbV9laXRoZXJfc2lkZSB0b18gbWFwIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFzc2VydCAoT3B0aW9uLmZvcl9hbGwgfmY6KE1hcC5tZW0gbWFwKSBiZWdpbl9rZXlfb3B0KTtcbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgZW5kX2tleV9vcHQpO1xuICAgICAgICAgIE9wdGlvbi5tYXAgYmVnaW5fa2V5X29wdCB+ZjooZnVuIGJlZ2luX2tleSAtPiBiZWdpbl9rZXksIGVuZF9rZXlfb3B0KVxuICAgICAgICB8IE5vbmUgfCBTb21lIChfLCBfLCBOb25lKSAtPlxuICAgICAgICAgICgqIE9uIGZpcnN0IHJ1biAod2hlbiB3ZSBoYXZlIHRvKSBvciB3aGVuIGJvdGggdGhlIGtleXMgYXJlIG5vbmUsIHJ1biBPKG4pXG4gICAgICAgICAgICAgc2Nhbi4gVGhpcyBpcyBmaW5lIGZvciBrZXlzLWFyZS1ub25lIGNhc2UgYXMgaXQgaGFwcGVucyB3aGVuIHRoZSBwb3NpdGlvbnNcbiAgICAgICAgICAgICBhcmUgcGFzdCBlbmQgb2YgdGhlIG1hcCwgc28gdGhleSBzaG91bGRuJ3QgYmUgdG9vIGZhciBmcm9tIGVuZCBhZnRlciB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdlcywgYW5kIFtmaW5kX2tleV9yYW5nZV9saW5lYXJdIGlzIGZhc3QgaW4gc3VjaCBjYXNlLiAqKVxuICAgICAgICAgIGZpbmRfa2V5X3JhbmdlX2xpbmVhciBtYXAgfmZyb20gfnRvXylcbiAgICBpblxuICAgICgqIEhhbmRsZSBkaWZmZXJlbnQgTWF5YmVfYm91bmQgY2FzZXMgYW5kIGNhbGwgZmluZF9rZXlfcmFuZ2UgaWYgbmVjZXNzYXJ5LiBJdCdzXG4gICAgICAgbmljZXIgdG8gZG8gdGhpcyBoZXJlIGFzIG9wcG9zZWQgdG8gbWFraW5nIGZpbmRfa2V5X3JhbmdlIGV2ZW4gbW9yZSBjb21wbGljYXRlZCAqKVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgKCA+Pj4gKSBuZXdfIGJvdW5kID0gTWF5YmVfYm91bmQubWFwIH5mOihmdW4gXyAtPiBuZXdfKSBib3VuZCBpblxuICAgIGxldCByZXR1cm4gPSBJbmNyZW1lbnRhbC5yZXR1cm4gKEluY3JlbWVudGFsLnN0YXRlIG1hcCkgaW5cbiAgICBsZXQga2V5X3JhbmdlID1cbiAgICAgIG1hdGNoJXBhdHRlcm5fYmluZCByYW5nZSB3aXRoXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkIC0+XG4gICAgICAgIHJldHVybiAoU29tZSAoTWF5YmVfYm91bmQuVW5ib3VuZGVkLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQpKVxuICAgICAgfCAoICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYilcbiAgICAgICAgLCAoKE1heWJlX2JvdW5kLkluY2wgdSB8IE1heWJlX2JvdW5kLkV4Y2wgdSkgYXMgdWIpICkgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIHUpXG4gICAgICAgIGFuZCBsYiA9IGxiXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIFNvbWUgZW5kX2tleSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgZW5kX2tleSA+Pj4gdWIpXG4gICAgICAgICB8IFNvbWUgKGJlZ2luX2tleSwgTm9uZSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8ICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYiksIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIGwgbClcbiAgICAgICAgYW5kIGxiID0gbGIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIHUgdSlcbiAgICAgICAgYW5kIHViID0gdWIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoVW5ib3VuZGVkLCBrZXkgPj4+IHViKVxuICAgICAgICAgKCogSW4gdGhpcyBjYXNlLCB0aGUgdXBwZXIgYm91bmQgd2FzIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlXG4gICAgICAgICAgICBtYXAsIHNvIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIGtleSByYW5nZSBpcyBbVW5ib3VuZGVkXS5cbiAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgZGVtb25zdHJhdGVkIGluIGEgdGVzdCBpbiBbLi4vdGVzdC90ZXN0X3N1YnJhbmdlLm1sXS4gKilcbiAgICAgICAgIHwgTm9uZSAtPiBTb21lIChVbmJvdW5kZWQsIFVuYm91bmRlZCkpXG4gICAgaW5cbiAgICBzdWJyYW5nZSA/ZGF0YV9lcXVhbCBtYXAga2V5X3JhbmdlXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZVxuICAgIDogdHlwZSBrMSBrMiB2IGsxX2NtcCBrMl9jbXAgc3RhdGVfd2l0bmVzcy5cbiAgICAgID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAgIC0+ID9kYXRhX2VxdWFsOih2IC0+IHYgLT4gYm9vbClcbiAgICAgIC0+IChrMiwgazJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgICAtPiAoKGsxLCAoazIsIHYsIGsyX2NtcCkgTWFwLnQsIGsxX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgIC0+ICgoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBmdW4gPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpIGsyX2NvbXBhcmF0b3IgbSAtPlxuICAgICAgd2l0aF9jb21wYXJhdG9yIG0gKGZ1biBrMV9jb21wYXJhdG9yIC0+XG4gICAgICAgIGxldCB1cGRhdGVcbiAgICAgICAgICA6ICBrZXk6azEgLT4gb2xkX2RhdGE6KGsyLCB2LCBrMl9jbXApIE1hcC50IC0+IG5ld19kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudFxuICAgICAgICAgICAgLT4gKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgPVxuICAgICAgICAgIGZ1biB+a2V5OmsxIH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICBvbGRfZGF0YVxuICAgICAgICAgICAgICBuZXdfZGF0YVxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGsyLCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTWFwLmNoYW5nZSBhY2MgazIgfmY6KGZ1biBhY2NfaW5uZXIgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2NfaW5uZXIgPVxuICAgICAgICAgICAgICAgICAgICBNYXAuY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19pbm5lclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5kZWZhdWx0OihNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjprMV9jb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICAgICAgICBrMVxuICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gXyAtPiB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgYWNjX2lubmVyIHRoZW4gTm9uZSBlbHNlIFNvbWUgYWNjX2lubmVyKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKSB+bmV3X2RhdGE6ZGF0YVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGEgPVxuICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpkYXRhIH5uZXdfZGF0YTooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgIGluXG4gICAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgICAgbVxuICAgICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgICB+aW5pdDooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICB+YWRkXG4gICAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgY29sbGFwc2VfYnlcbiAgICAgICAgKHR5cGUgb3V0ZXJfa2V5IG91dGVyX2NtcCBpbm5lcl9rZXkgaW5uZXJfY21wIGNvbWJpbmVkX2tleSBjb21iaW5lZF9jbXApXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihtZXJnZV9rZXlzIDogb3V0ZXJfa2V5IC0+IGlubmVyX2tleSAtPiBjb21iaW5lZF9rZXkpXG4gICAgICAgIH4oY29tcGFyYXRvciA6IChjb21iaW5lZF9rZXksIGNvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudClcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBjb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfnVwZGF0ZTooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+b2xkX2RhdGE6XyB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIE1hcC5zZXQgYWNjIH5rZXk6KG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkgfmRhdGE6bmV3X2RhdGEpXG4gICAgICB+YWRkOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAuYWRkX2V4biBhY2MgfmtleToobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSB+ZGF0YSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLnJlbW92ZSBhY2MgKG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkpXG4gIDs7XG5cbiAgbGV0IGNvbGxhcHNlXG4gICAgICAgICh0eXBlIG91dGVyX2tleSBvdXRlcl9jbXAgaW5uZXJfa2V5IGlubmVyX2NtcClcbiAgICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfmNvbXBhcmF0b3I6KGlubmVyX2NvbXBhcmF0b3IgOiAoaW5uZXJfa2V5LCBpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpXG4gICAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXBfaW5jciAoZnVuIG91dGVyX2NvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBtb2R1bGUgQ21wID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG91dGVyX2tleSAqIGlubmVyX2tleVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IChvdXRlcl9jbXAsIGlubmVyX2NtcCkgVHVwbGUyLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID1cbiAgICAgICAgICBsZXQgaW5uZXJfY29tcGFyYXRvciA9XG4gICAgICAgICAgICBsZXQgbW9kdWxlIE0gPSAodmFsIGlubmVyX2NvbXBhcmF0b3IpIGluXG4gICAgICAgICAgICBNLmNvbXBhcmF0b3JcbiAgICAgICAgICBpblxuICAgICAgICAgIFR1cGxlMi5jb21wYXJhdG9yIG91dGVyX2NvbXBhcmF0b3IgaW5uZXJfY29tcGFyYXRvclxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgY29sbGFwc2VfYnlcbiAgICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+bWVyZ2Vfa2V5czpUdXBsZTIuY3JlYXRlXG4gICAgICAgIH5jb21wYXJhdG9yOihtb2R1bGUgQ21wKSlcbiAgOztcblxuICBsZXQgZXhwYW5kXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+b3V0ZXJfY29tcGFyYXRvclxuICAgICAgICB+aW5uZXJfY29tcGFyYXRvclxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+dXBkYXRlOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5vbGRfZGF0YTpfIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBNYXAuc2luZ2xldG9uIGlubmVyX2NvbXBhcmF0b3IgaW5uZXJfa2V5IG5ld19kYXRhXG4gICAgICAgICAgfCBTb21lIG1hcCAtPiBNYXAuc2V0IG1hcCB+a2V5OmlubmVyX2tleSB+ZGF0YTpuZXdfZGF0YSkpXG4gICAgICB+YWRkOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAudXBkYXRlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE1hcC5zaW5nbGV0b24gaW5uZXJfY29tcGFyYXRvciBpbm5lcl9rZXkgZGF0YVxuICAgICAgICAgIHwgU29tZSBtYXAgLT4gTWFwLmFkZF9leG4gbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLmNoYW5nZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIG1hcCAtPlxuICAgICAgICAgICAgbGV0IG1hcCA9IE1hcC5yZW1vdmUgbWFwIGlubmVyX2tleSBpblxuICAgICAgICAgICAgT3B0aW9uLnNvbWVfaWYgKG5vdCAoTWFwLmlzX2VtcHR5IG1hcCkpIG1hcCkpXG4gIDs7XG5cbiAgbGV0IGNvdW50aSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OjBcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgY291bnQgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gY291bnQgLSAxIGVsc2UgY291bnQpXG4gIDs7XG5cbiAgbGV0IGNvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGNvdW50aSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgKGNvdW50aSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mKSB+ZjooZnVuIGNvdW50IC0+XG4gICAgICBjb3VudCA8PiAwKVxuICA7O1xuXG4gIGxldCBleGlzdHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZXhpc3RzaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgc3VtXG4gICAgICAgICh0eXBlIHUpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOiAoKF8sIF8sIF8pIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAobW9kdWxlIEdyb3VwIDogQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSB1KVxuICAgICAgICB+ZlxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDpHcm91cC56ZXJvXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleTpfIH5kYXRhOnYgYWNjIC0+IEdyb3VwLiggKyApIGFjYyAoZiB2KSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Ol8gfmRhdGE6diBhY2MgLT4gR3JvdXAuKCAtICkgYWNjIChmIHYpKVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIChjb3VudGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgIG5vdCAoZiB+a2V5IH5kYXRhKSkpXG4gICAgICB+ZjooZnVuIGNvdW50IC0+IGNvdW50ID0gMClcbiAgOztcblxuICBsZXQgZm9yX2FsbCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBmb3JfYWxsaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID91cGRhdGVcbiAgICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgICAgP2ZpbmFsaXplXG4gICAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICA/dXBkYXRlXG4gICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgP2ZpbmFsaXplXG4gICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgbWFwXG4gICAgICB+aW5pdFxuICAgICAgfmFkZFxuICAgICAgfnJlbW92ZVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgID91cGRhdGVcbiAgICAgIG1hcFxuICAgICAgfmluaXRcbiAgICAgIH5hZGRcbiAgICAgIH5yZW1vdmVcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgZmluZF9rZXlfcmFuZ2VfbGluZWFyID0gZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gIGVuZFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICB0eXBlICgndiwgJ3cpIGVudHJ5ID1cbiAgICAgIHsgbXV0YWJsZSBzYXZlZF92YWx1ZSA6ICd2IG9wdGlvblxuICAgICAgOyBub2RlIDogKCd2IG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHQgPVxuICAgICAgeyBtdXRhYmxlIHNhdmVkX21hcCA6ICgnaywgJ3YsICdjbXApIE1hcC50XG4gICAgICAoKiBXZSBtYXkgaGF2ZSBtdWx0aXBsZSBlbnRyaWVzIHBlciBrZXkgaWYgbm9kZXMgYmVjb21lIG5lY2Vzc2FyeSBhZ2FpbiBhZnRlciBiZWluZ1xuICAgICAgICAgcmVtb3ZlZC4gKilcbiAgICAgIDsgbXV0YWJsZSBsb29rdXBfZW50cmllcyA6ICgnaywgKCd2LCAndykgZW50cnkgbGlzdCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgdXBkYXRlcl9ub2RlIDogKHVuaXQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICA7IHNjb3BlIDogJ3cgSW5jcmVtZW50YWwuU2NvcGUudFxuICAgICAgfVxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgndiwgJ3cpIHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MsICd3KSB0XG4gICAgZW5kXG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgPVxuICAgICAgbGV0IHJlYyBzZWxmID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChsZXQgdXBkYXRlcl9ub2RlID1cbiAgICAgICAgICAgICBJbmNyZW1lbnRhbC5tYXAgaW5wdXRfbWFwIH5mOihmdW4gaW5wdXRfbWFwIC0+XG4gICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgKGxhenkgc2VsZikgPSBzZWxmIGluXG4gICAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXBcbiAgICAgICAgICAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICAgIH5pbml0OigpXG4gICAgICAgICAgICAgICAgICAgfmY6KGZ1biAoKSAoa2V5LCBjaGFuZ2VkX3ZhbHVlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBNYXAuZmluZF9tdWx0aSBzZWxmLmxvb2t1cF9lbnRyaWVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGVudHJpZXMgfmY6KGZ1biBlbnRyeSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICA8LSAobWF0Y2ggY2hhbmdlZF92YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfdmFsdWUgfCBgVW5lcXVhbCAoXywgbmV3X3ZhbHVlKSAtPiBTb21lIG5ld192YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgZW50cnkubm9kZSkpO1xuICAgICAgICAgICAgICAgICBzZWxmLnNhdmVkX21hcCA8LSBpbnB1dF9tYXApKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgICAgeyBzYXZlZF9tYXAgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyBsb29rdXBfZW50cmllcyA9IGVtcHR5X21hcFxuICAgICAgICAgICA7IHVwZGF0ZXJfbm9kZVxuICAgICAgICAgICA7IHNjb3BlID0gSW5jcmVtZW50YWwuU2NvcGUuY3VycmVudCAoSW5jcmVtZW50YWwuc3RhdGUgaW5wdXRfbWFwKSAoKVxuICAgICAgICAgICB9KVxuICAgICAgaW5cbiAgICAgIExhenkuZm9yY2Ugc2VsZlxuICAgIDs7XG5cbiAgICBsZXRbQGNvbGRdIHNsb3dfcGF0aF9saW5rX2VudHJ5IHQgZW50cnkgfmtleSB+aXNfbm93X29ic2VydmFibGUgPVxuICAgICAgbGV0IChsYXp5IGVudHJ5KSA9IGVudHJ5IGluXG4gICAgICBsZXQgY3VycmVudF9lbnRyaWVzID0gTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgaW5cbiAgICAgIGxldCBpc19saW5rZWQgPSBMaXN0LmV4aXN0cyBjdXJyZW50X2VudHJpZXMgfmY6KHBoeXNfZXF1YWwgZW50cnkpIGluXG4gICAgICBpZiBCb29sLmVxdWFsIGlzX2xpbmtlZCBpc19ub3dfb2JzZXJ2YWJsZVxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpZiBpc19ub3dfb2JzZXJ2YWJsZVxuICAgICAgdGhlblxuICAgICAgICB0Lmxvb2t1cF9lbnRyaWVzXG4gICAgICAgIDwtIE1hcC51cGRhdGUgdC5sb29rdXBfZW50cmllcyBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIChvdGhlcl9lbnRyeSA6OiBfIGFzIG90aGVyX2VudHJpZXMpIC0+XG4gICAgICAgICAgICAoKiBVcGRhdGUgdGhpcyBlbnRyeSdzIHZhbHVlIHRvIGJlIGN1cnJlbnQuICopXG4gICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZSA8LSBvdGhlcl9lbnRyeS5zYXZlZF92YWx1ZTtcbiAgICAgICAgICAgIGVudHJ5IDo6IG90aGVyX2VudHJpZXNcbiAgICAgICAgICB8IE5vbmUgfCBTb21lIFtdIC0+XG4gICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZSA8LSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXk7XG4gICAgICAgICAgICBbIGVudHJ5IF0pXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5ld19lbnRyaWVzID1cbiAgICAgICAgICBMaXN0LmZpbHRlciBjdXJyZW50X2VudHJpZXMgfmY6KGZ1biB4IC0+IG5vdCAocGh5c19lcXVhbCBlbnRyeSB4KSlcbiAgICAgICAgaW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSAoaWYgTGlzdC5pc19lbXB0eSBuZXdfZW50cmllc1xuICAgICAgICAgICAgdGhlbiBNYXAucmVtb3ZlIHQubG9va3VwX2VudHJpZXMga2V5XG4gICAgICAgICAgICBlbHNlIE1hcC5zZXQgdC5sb29rdXBfZW50cmllcyB+a2V5IH5kYXRhOm5ld19lbnRyaWVzKSlcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfY3JlYXRlX25vZGUgdCBrZXkgPVxuICAgICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgdC51cGRhdGVyX25vZGUgaW5cbiAgICAgIEluY3JlbWVudGFsLlNjb3BlLndpdGhpbiBpbmNyZW1lbnRhbF9zdGF0ZSB0LnNjb3BlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbGV0IHJlYyBlbnRyeSA9XG4gICAgICAgICAgbGF6eVxuICAgICAgICAgICAgeyBzYXZlZF92YWx1ZSA9IE1hcC5maW5kIHQuc2F2ZWRfbWFwIGtleVxuICAgICAgICAgICAgOyBub2RlID1cbiAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsX3N0YXRlXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IChmb3JjZSBlbnRyeSkuc2F2ZWRfdmFsdWUpXG4gICAgICAgICAgICAgICAgICB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2U6KHNsb3dfcGF0aF9saW5rX2VudHJ5IHQgZW50cnkgfmtleSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IChsYXp5IGVudHJ5KSA9IGVudHJ5IGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgICAgZW50cnkubm9kZVxuICAgICAgICAgIChJbmNyZW1lbnRhbC5FeHBlcnQuRGVwZW5kZW5jeS5jcmVhdGUgdC51cGRhdGVyX25vZGUpO1xuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBlbnRyeS5ub2RlKVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IGtleSA9XG4gICAgICBtYXRjaCBNYXAuZmluZF9tdWx0aSB0Lmxvb2t1cF9lbnRyaWVzIGtleSB3aXRoXG4gICAgICB8IGVudHJ5IDo6IF8gLT4gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZVxuICAgICAgfCBbXSAtPiBzbG93X3BhdGhfY3JlYXRlX25vZGUgdCBrZXlcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA9IHN0cnVjdFxuICAgICAgbGV0W0Bjb2xkXSBzZXhwX29mX2VudHJ5IHNleHBfb2ZfdmFsdWUgZW50cnkgPVxuICAgICAgICBsZXQgeyBzYXZlZF92YWx1ZTsgbm9kZSB9ID0gZW50cnkgaW5cbiAgICAgICAgbGV0IG5vZGUgPSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlIGluXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgOiB2YWx1ZSBvcHRpb25cbiAgICAgICAgICA7IG5vZGVfaW5mbyA9IChJbmNyZW1lbnRhbC51c2VyX2luZm8gbm9kZSA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19jb25zdCA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAoSW5jcmVtZW50YWwuaXNfY29uc3Qgbm9kZSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19pbnZhbGlkID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX3ZhbGlkIG5vZGUpKSAoKVxuICAgICAgICAgICAgICAgOiAodW5pdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX3VubmVjZXNzYXJ5ID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX25lY2Vzc2FyeSBub2RlKSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIH1dXG4gICAgICA7O1xuXG4gICAgICBsZXRbQGNvbGRdIHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgICBsZXQgaW5mb19wZXJfa2V5ID1cbiAgICAgICAgICBNYXAubWVyZ2UgdC5zYXZlZF9tYXAgdC5sb29rdXBfZW50cmllcyB+ZjooZnVuIH5rZXkgZGF0YSAtPlxuICAgICAgICAgICAgbGV0IGFjdHVhbF92YWx1ZSwgZW50cmllcyA9XG4gICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSB4LCBbXVxuICAgICAgICAgICAgICB8IGBSaWdodCB5IC0+IE5vbmUsIHlcbiAgICAgICAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gU29tZSB4LCB5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGtleSA6IGtleVxuICAgICAgICAgICAgICAgIDsgYWN0dWFsX3ZhbHVlIDogKHZhbHVlIG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICAgICAgICAgIDsgZW50cmllcyA6IHZhbHVlIGVudHJ5IGxpc3RcbiAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgaW5cbiAgICAgICAgU2V4cC5MaXN0IChNYXAuZGF0YSBpbmZvX3Blcl9rZXkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzc1xuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSBJbmNyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgYW5kIHR5cGUgJ2EgSW5jci5DdXRvZmYudCA9ICdhIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgIGFuZCB0eXBlICgnaywgJ3YsICdjbXApIExvb2t1cC50ID0gKCdrLCAndiwgJ2NtcCwgc3RhdGVfd2l0bmVzcykgR2VuZXJpYy5Mb29rdXAudFxuZW5kXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG4gIG1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBJbnN0cnVtZW50YXRpb25cblxuICBsZXQgZmxhdHRlbiB4ID0gZmxhdHRlbiBJbmNyLlN0YXRlLnQgeFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExvb2t1cFxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCwgSW5jci5zdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgR2VuZXJpY1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuU19nZW4pID0gc3RydWN0XG4gIG1vZHVsZSBFID0gSW5jci5FeHBlcnRcblxuICAoKiBIYXNodGJsIHN0YXJ0cyBvdXQgYXQgYSByaWRpY3Vsb3VzIHNpemUgb2YgMTI4LiBUaGlzIGlzIGEgbW9yZSByZWFzb25hYmxlIG51bWJlclxuICAgICBvZiBiaW5zIHRvIGhhdmUuICopXG4gIGxldCBoYXNodGJsX3NpemUgPSAxMFxuXG4gICgqKiBbc2V0dXBfZ2VuZXJhdG9yXSBzZXRzIHVwIHRoZSBzdGFnZWQgY29udmVyc2lvbi5cblxuICAgICAgW2hhc2hhYmxlXSBpcyB1c2VkIHRvIGJ1aWxkIGEgdGFibGUgb2YgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcy4gV2UgZHJvcCB1bm5lY2Vzc2FyeVxuICAgICAgZGVwZW5kZW5jaWVzIHRvIGFsbG93IHRoZW0gdG8gYmUgY29sbGVjdGVkLlxuXG4gICAgICBbY29tcHV0ZV9vdXRwdXQga2V5XSByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgb3V0cHV0IG5vZGUgY29ycmVzcG9uZGluZyB0byBba2V5XS5cbiAgICAgIFtjb21wdXRlX291dHB1dF0gaXMgY2xvc2VkIG92ZXIgdGhlIG11dGFibGUgc3RhdGUgZGV0ZXJtaW5pbmcgdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIHRoZSBzZWxlY3RvcidzIGlucHV0LlxuXG4gICAgICBbbWFrZV9pbnB1dF9ub2RlXSBtYWtlcyBzdXJlIHRoYXQgd2hlbiB0aGUgbXV0YWJsZSBzdGF0ZSBpbnNpZGUgW2NvbXB1dGVfb3V0cHV0XSBpc1xuICAgICAgdXBkYXRlZCwgdGhlIGNvcnJlc3BvbmRpbmcgbm9kZXMgaW4gdGhlIFtuZWNlc3NhcnlfZGVwZW5kZW5jaWVzXSB0YWJsZSBhcmUgbWFkZVxuICAgICAgc3RhbGUuICAqKVxuICBsZXQgc2V0dXBfZ2VuZXJhdG9yXG4gICAgICAgIChoYXNoYWJsZSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KVxuICAgICAgICB+KGNvbXB1dGVfb3V0cHV0IDogJ2EgLT4gJ2IpXG4gICAgICAgIH4obWFrZV9pbnB1dF9ub2RlIDogbWFrZV9rZXlfc3RhbGU6KCdhIC0+IHVuaXQpIC0+IHVuaXQgSW5jci50KVxuICAgIDogKCdhIC0+ICdiIEluY3IudCkgU3RhZ2VkLnRcbiAgICA9XG4gICAgbGV0IG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IChpbnB1dF9ub2RlIDogdW5pdCBJbmNyLnQpID1cbiAgICAgIGxldCBtYWtlX2tleV9zdGFsZSBrZXkgPVxuICAgICAgICBIYXNodGJsLmZpbmQgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyBrZXlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdXG4gICAgICAgIHw+IExpc3QuaXRlciB+ZjpFLk5vZGUubWFrZV9zdGFsZVxuICAgICAgaW5cbiAgICAgIG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGVcbiAgICBpblxuICAgICgqIFNldCB0aGUgY3V0b2ZmIHNvIHRoYXQgd2UgbmV2ZXIgcGFzcyBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHVwZGF0ZSB0byB0aGUgbm9kZXMuIFdlXG4gICAgICAgd2FudCBldmVyeXRoaW5nIHRvIGdvIHRocm91Z2ggW21ha2Vfa2V5X3N0YWxlXSAqKVxuICAgIEluY3Iuc2V0X2N1dG9mZiBpbnB1dF9ub2RlIEluY3IuQ3V0b2ZmLmFsd2F5cztcbiAgICBzdGFnZSAoZnVuIGtleSAtPlxuICAgICAgbGV0IGlucHV0X2RlcCA9IEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfbm9kZSBpblxuICAgICAgbGV0IHJlYyBvdXRwdXRfbm9kZSA9IGxhenkgKFxuICAgICAgICBFLk5vZGUuY3JlYXRlXG4gICAgICAgICAgKGZ1biAoKSAtPiBjb21wdXRlX291dHB1dCBrZXkpXG4gICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihmdW4gfmlzX25vd19vYnNlcnZhYmxlIC0+XG4gICAgICAgICAgICBpZiBpc19ub3dfb2JzZXJ2YWJsZSB0aGVuXG4gICAgICAgICAgICAgIEhhc2h0YmwuYWRkX211bHRpIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTooZm9yY2Ugb3V0cHV0X25vZGUpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEhhc2h0YmwuY2hhbmdlIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIGwgfmY6KEZuLm5vbiAocGh5c19lcXVhbCAoZm9yY2Ugb3V0cHV0X25vZGUpKSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGwnIC0+IFNvbWUgbCdcbiAgICAgICAgICAgICAgKSkpXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dF9ub2RlID0gZm9yY2Ugb3V0cHV0X25vZGUgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBvdXRwdXRfbm9kZSBpbnB1dF9kZXA7XG4gICAgICBFLk5vZGUud2F0Y2ggb3V0cHV0X25vZGVcbiAgICApXG5cbiAgKCoqIFRoaXMgY3JlYXRlcyBhIHVuaXQgaW5jcmVtZW50YWwgdGhhdCBmaXJlcyB3aGVuZXZlciB0aGUgaW5wdXQgaW5jcmVtZW50YWxcbiAgICAgIGZpcmVzLiBXaGVuIHRoYXQgb2NjdXJzLCBpdCB1cGRhdGVzIFtzZWxlY3RlZF0gdG8gbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIFtpbnB1dF0sIGFuZCBjYWxscyBbbWFrZV9rZXlfc3RhbGVdIGZvciBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZSBvZiB0aGVcbiAgICAgIGluY3JlbWVudGFsLiAqKVxuICBsZXQgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlID1cbiAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgT3B0aW9uLml0ZXIgaW5wIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBPcHRpb24uaXRlciAhc2VsZWN0ZWQgfmY6bWFrZV9zdGFsZTtcbiAgICAgIHNlbGVjdGVkIDo9IGlucFxuICAgIClcblxuICBsZXQgc2VsZWN0X29uZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgKGlucHV0IDogYSBvcHRpb24gSW5jci50KVxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGtleScgLT4gSC5jb21wYXJlIGtleSBrZXknID0gMFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlOm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgSC5oYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3Rfb25lIGggaW5wdXQgPVxuICAgIHNlbGVjdF9vbmUnIGggKEluY3IubWFwIH5mOk9wdGlvbi5zb21lIGlucHV0KVxuXG4gIGxldCBzZWxlY3Rfb25lX3ZhbHVlJ1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkZWZhdWx0XG4gICAgICB8IFNvbWUgKGtleScsIGRhdGEpIC0+IGlmIEguY29tcGFyZSBrZXkga2V5JyA9IDAgdGhlbiBkYXRhIGVsc2UgZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+c2VsZWN0ZWQgfmlucHV0IH5tYWtlX3N0YWxlOihmdW4gKGtleSwgXykgLT4gbWFrZV9rZXlfc3RhbGUga2V5KVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSBoIH5kZWZhdWx0IGlucHV0ID1cbiAgICBzZWxlY3Rfb25lX3ZhbHVlJyBoIH5kZWZhdWx0IChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X21hbnlfdmFsdWVzXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIH5kZWZhdWx0XG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBIYXNodGJsLmZpbmQgc2VsZWN0ZWQga2V5IHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgSGFzaHRibC5pdGVyX2tleXMgc2VsZWN0ZWQgfmY6bWFrZV9rZXlfc3RhbGU7XG4gICAgICAgIEhhc2h0YmwuY2xlYXIgc2VsZWN0ZWQ7XG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgICBIYXNodGJsLnNldCBzZWxlY3RlZCB+a2V5IH5kYXRhXG4gICAgICAgICkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X21hbnlcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IGhhc2hhYmxlID0gSC5oYXNoYWJsZSBpblxuICAgIGxldCBzZWxlY3RlZCA9IEhhc2hfc2V0LlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9IEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgICBsZXQgb2xkX3NldCA9IEhhc2hfc2V0LmNvcHkgc2VsZWN0ZWQgaW5cbiAgICAgICAgSGFzaF9zZXQuY2xlYXIgc2VsZWN0ZWQ7XG5cbiAgICAgICAgTGlzdC5pdGVyIGlucCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIG9sZF9zZXQga2V5KSB0aGVuXG4gICAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaF9zZXQuYWRkIHNlbGVjdGVkIGtleVxuICAgICAgICApO1xuXG4gICAgICAgIEhhc2hfc2V0Lml0ZXIgb2xkX3NldCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlbGVjdGVkIGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5lbmRcblxuIiwiZXh0ZXJuYWwganNfcHJvZl9tYXJrIDogc3RyaW5nIC0+IHVuaXQgPSBcImpzX3Byb2ZfbWFya1wiXG5leHRlcm5hbCBqc19wcm9mX21lYXN1cmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21lYXN1cmVcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tYXJrcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tYXJrc1wiXG5leHRlcm5hbCBqc19wcm9mX2NsZWFyX21lYXN1cmVzIDogdW5pdCAtPiB1bml0ID0gXCJqc19wcm9mX2NsZWFyX21lYXN1cmVzXCJcblxubGV0IG1hcmsgbmFtZSA9IGpzX3Byb2ZfbWFyayBuYW1lXG5sZXQgbWVhc3VyZSB+bmFtZSB+c3RhcnQgfmVuZF8gPSBqc19wcm9mX21lYXN1cmUgbmFtZSBzdGFydCBlbmRfXG5cbmxldCByZWNvcmQgbmFtZSB+ZiA9XG4gIGxldCBiZWZvcmVfbmFtZSA9IG5hbWUgXiBcIl9iZWZvcmVcIiBpblxuICBsZXQgYWZ0ZXJfbmFtZSA9IG5hbWUgXiBcIl9hZnRlclwiIGluXG4gIGxldCAoKSA9IG1hcmsgYmVmb3JlX25hbWUgaW5cbiAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgbGV0ICgpID0gbWFyayBhZnRlcl9uYW1lIGluXG4gIG1lYXN1cmUgfm5hbWUgfnN0YXJ0OmJlZm9yZV9uYW1lIH5lbmRfOmFmdGVyX25hbWU7XG4gIHJlc1xuOztcblxubGV0IGNsZWFyX21hcmtzICgpID0ganNfcHJvZl9jbGVhcl9tYXJrcyAoKVxubGV0IGNsZWFyX21lYXN1cmVzICgpID0ganNfcHJvZl9jbGVhcl9tZWFzdXJlcyAoKVxuXG5tb2R1bGUgTWFudWFsID0gc3RydWN0XG4gIGxldCBtYXJrID0gbWFya1xuICBsZXQgbWVhc3VyZSA9IG1lYXN1cmVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5cbnR5cGUgdCA9XG4gIHsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgOyBtaW1ldHlwZSA6IHN0cmluZ1xuICA7IGNvbnRlbnRzIDogc3RyaW5nXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxkb3dubG9hZGVyOiAlcz5cIiB0LmZpbGVuYW1lKVxuXG5sZXQgdHJpZ2dlciB7IGZpbGVuYW1lOyBtaW1ldHlwZTsgY29udGVudHMgfSA9XG4gIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gIGlmIFBweF9pbmxpbmVfdGVzdF9saWIuYW1fcnVubmluZ1xuICB0aGVuXG4gICAgcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlIFwiRG93bmxvYWQgdHJpZ2dlcmVkXCIgKGZpbGVuYW1lIDogc3RyaW5nKSAobWltZXR5cGUgOiBzdHJpbmcpIGNvbnRlbnRzXVxuICBlbHNlIChcbiAgICAoKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTkzMjg4OTEvNTU4NTkyICopXG4gICAgbGV0IGEgPSBEb21faHRtbC5jcmVhdGVBIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgbGV0IGNvbnRlbnRzX2JpZ3N0ciA9XG4gICAgICBUeXBlZF9hcnJheS5CaWdzdHJpbmcudG9fYXJyYXlCdWZmZXIgKEJpZ3N0cmluZy5vZl9zdHJpbmcgY29udGVudHMpXG4gICAgaW5cbiAgICBsZXQgYmxvYiA9XG4gICAgICAoKiBEb24ndCB1c2UgW2Jsb2JfZnJvbV9zdHJpbmddLiBUaGF0IGhhcyBhbiBhdHRyYWN0aXZlIHR5cGUgYnV0IHdvcmtzIGJ5IGZpcnN0XG4gICAgICAgICBjb252ZXJ0aW5nIG91ciBPQ2FtbCBzdHJpbmcgdG8gYSBKYXZhc2NyaXB0IHN0cmluZywgd2hpY2ggY29udmVydHMgdG9cbiAgICAgICAgIFVURi0xNi4gSWYgdGhlIHN0cmluZyBjb250YWlucyByYW5kb20gYmluYXJ5IGRhdGEgdGhhdCB3aWxsIGRpc3RvcnQgaXQuICopXG4gICAgICBGaWxlLmJsb2JfZnJvbV9hbnkgWyBgYXJyYXlCdWZmZXIgY29udGVudHNfYmlnc3RyIF0gfmNvbnRlbnRUeXBlOm1pbWV0eXBlXG4gICAgaW5cbiAgICBsZXQgdXJsID0gRG9tX2h0bWwud2luZG93IyMuX1VSTCMjY3JlYXRlT2JqZWN0VVJMIGJsb2IgaW5cbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImhyZWZcIikgdXJsO1xuICAgIGEjI3NldEF0dHJpYnV0ZSAoSnMuc3RyaW5nIFwiZG93bmxvYWRcIikgKEpzLnN0cmluZyBmaWxlbmFtZSk7XG4gICAgYSMjY2xpY2s7XG4gICAgRG9tX2h0bWwud2luZG93IyMuX1VSTCMjcmV2b2tlT2JqZWN0VVJMIHVybClcbjs7XG5cbm1vZHVsZSBCdXR0b24gPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/KGVuYWJsZWQgPSB0cnVlKVxuICAgICAgICA/KG9uX2NsaWNrID0gZnVuIF8gLT4gVmRvbS5FZmZlY3QuSWdub3JlKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgIH5nZXRfZG93bmxvYWRcbiAgICAgICAgfmJ1dHRvbl90ZXh0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBvcGVuIFZkb20gaW5cbiAgICBsZXQgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgZXYgPVxuICAgICAgdHJpZ2dlciAoZ2V0X2Rvd25sb2FkICgpKTtcbiAgICAgIG9uX2NsaWNrIGV2XG4gICAgaW5cbiAgICBsZXQgZW5hYmxlZF9kaXNhYmxlZCA9XG4gICAgICBpZiBlbmFibGVkIHRoZW4gW10gZWxzZSBbIEF0dHIuZGlzYWJsZWQ7IEF0dHIuc3R5bGUgKENzc19nZW4uY29sb3IgKGBOYW1lIFwiZ3JleVwiKSkgXVxuICAgIGluXG4gICAgbGV0IGF0dHJzID1cbiAgICAgIFsgZXh0cmFfYXR0cnM7IGVuYWJsZWRfZGlzYWJsZWQ7IFsgQXR0ci5vbl9jbGljayB0cmlnZ2VyX2Nzdl9kb3dubG9hZCBdIF1cbiAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgaW5cbiAgICBOb2RlLmJ1dHRvbiB+YXR0cnM6WyBBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyBdIFsgTm9kZS50ZXh0IGJ1dHRvbl90ZXh0IF1cbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEluY3IgPSBJbmNyZW1lbnRhbC5NYWtlICgpXG5cbigqIFRoaXMgaXMgdGhlIGRlZmF1bHQgY2xvY2sgZm9yIHJ1bm5pbmcgY2xpZW50cywgYnV0IGJvbnNhaSB0ZXN0cyBoYXZlIHRoZWlyXG4gICBvd24gc2VwYXJhdGUgY2xvY2tzICopXG5sZXQgY2xvY2sgPSBJbmNyLkNsb2NrLmNyZWF0ZSB+c3RhcnQ6KFRpbWVfbnMubm93ICgpKSAoKVxuXG5pbmNsdWRlIEluY3Jcbm1vZHVsZSBNYXAgPSBJbmNyX21hcC5NYWtlIChJbmNyKVxubW9kdWxlIFNlbGVjdCA9IEluY3Jfc2VsZWN0Lk1ha2UgKEluY3IpXG4iLCJvcGVuIFZpcnR1YWxfZG9tXG5vcGVuIENvcmVcblxudHlwZSAoJ2FjdGlvbiwgJ21vZGVsLCAnc3RhdGUsICdleHRyYSkgd2l0aF9leHRyYSA9XG4gIHsgYXBwbHlfYWN0aW9uIDogJ2FjdGlvbiAtPiAnc3RhdGUgLT4gc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+ICdtb2RlbFxuICA7IHVwZGF0ZV92aXNpYmlsaXR5IDogc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+ICdtb2RlbFxuICA7IHZpZXcgOiBWZG9tLk5vZGUudFxuICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+IHVuaXRcbiAgOyBleHRyYSA6ICdleHRyYVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbnR5cGUgKCdhY3Rpb24sICdzdGF0ZSwgJ21vZGVsKSB0ID0gKCdhY3Rpb24sICdzdGF0ZSwgJ21vZGVsLCB1bml0KSB3aXRoX2V4dHJhXG5cbmxldCBjcmVhdGVfd2l0aF9leHRyYSA/YXBwbHlfYWN0aW9uID91cGRhdGVfdmlzaWJpbGl0eSA/b25fZGlzcGxheSB+ZXh0cmEgbW9kZWwgdmlldyA9XG4gIGxldCBhcHBseV9hY3Rpb24gPVxuICAgIE9wdGlvbi52YWx1ZSBhcHBseV9hY3Rpb24gfmRlZmF1bHQ6KGZ1biBfIF8gfnNjaGVkdWxlX2FjdGlvbjpfIC0+IG1vZGVsKVxuICBpblxuICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgPVxuICAgIE9wdGlvbi52YWx1ZSB1cGRhdGVfdmlzaWJpbGl0eSB+ZGVmYXVsdDooZnVuIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IG9uX2Rpc3BsYXkgPSBPcHRpb24udmFsdWUgb25fZGlzcGxheSB+ZGVmYXVsdDooZnVuIF8gfnNjaGVkdWxlX2FjdGlvbjpfIC0+ICgpKSBpblxuICB7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXk7IGV4dHJhOyB2aWV3IH1cbjs7XG5cbmxldCBjcmVhdGUgPSBjcmVhdGVfd2l0aF9leHRyYSB+ZXh0cmE6KClcbiIsIm9wZW4hIENvcmVcbm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQXN5bmNfa2VybmVsXG5cbigqKiBDb21tb24gbW9kdWxlIHR5cGVzICopXG5tb2R1bGUgdHlwZSBNb2RlbCA9IHNpZ1xuICB0eXBlIHRcblxuXG4gICgqKiBBIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIHdoZXRoZXIgdGhlIG1vZGVsIGhhcyBjaGFuZ2VkIGVub3VnaCB0byByZXF1aXJlIHJlZmlyaW5nXG4gICAgICB0aGUgaW5jcmVtZW50YWwgZ3JhcGguXG5cbiAgICAgIEl0J3MgYmVzdCBpZiB0aGUgdmFsdWVzIGluIHRoZSBtb2RlbCBzdXBwb3J0IGEgc2VtYW50aWNhbGx5IHJlYXNvbmFibGUgY3V0b2ZmXG4gICAgICBmdW5jdGlvbiB3aGljaCBsZXRzIHlvdSBhdm9pZCBpbmZpbml0ZSByZWNvbXB1dGF0aW9uIGxvb3BzIHRoYXQgY2FuIG90aGVyd2lzZSBiZVxuICAgICAgdHJpZ2dlcmVkIGJ5IHRoZSB2aXNpYmlsaXR5IGNoZWNrcy4gRm9yIHRoaXMgcmVhc29uLCBpdCdzIHR5cGljYWxseSBhIGdvb2QgaWRlYSB0b1xuICAgICAgYXZvaWQgaGF2aW5nIHNpbXBsZSBjbG9zdXJlcyBzdG9yZWQgaW4gdGhlIG1vZGVsLlxuXG4gICAgICBUaGF0IHNhaWQsIGl0IGRvZXMgd29yayBpZiB5b3UgcHV0IHBoeXNfZXF1YWwgaW4gZm9yIHRoZSBjdXRvZmYuICopXG4gIHZhbCBjdXRvZmYgOiB0IC0+IHQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjdGlvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTdGF0ZSA9IHNpZ1xuICAoKiogUmVwcmVzZW50cyB0aGUgaW1wZXJhdGl2ZSBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggYW4gYXBwbGljYXRpb24sIHR5cGljYWxseSB1c2VkIGZvclxuICAgICAgaG91c2luZyB0aGluZ3MgbGlrZSBjb21tdW5pY2F0aW9uIEFzeW5jLVJQQyBjb25uZWN0aW9ucy4gKilcbiAgdHlwZSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICBtb2R1bGUgQWN0aW9uIDogQWN0aW9uXG4gIG1vZHVsZSBTdGF0ZSA6IFN0YXRlXG5cbiAgKCoqIFtvbl9zdGFydHVwXSBpcyBjYWxsZWQgb25jZSwgcmlnaHQgYWZ0ZXIgdGhlIGluaXRpYWwgRE9NIGlzIHNldCB0byB0aGUgdmlldyB0aGF0XG4gICAgICBjb3JyZXNwb25kcyB0byB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGRvaW5nIHRoaW5ncyBsaWtlIHN0YXJ0aW5nIHVwXG4gICAgICBhc3luYyBwcm9jZXNzZXMuICBOb3RlIHRoYXQgdGhpcyBwYXJ0IG9mIHRoZSBjb21wdXRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGFueVxuICAgICAgaW5jcmVtZW50YWxpdHksIHNpbmNlIGl0J3Mgb25seSBydW4gb25jZS4gKilcbiAgdmFsIG9uX3N0YXJ0dXAgOiBzY2hlZHVsZV9hY3Rpb246KEFjdGlvbi50IC0+IHVuaXQpIC0+IE1vZGVsLnQgLT4gU3RhdGUudCBEZWZlcnJlZC50XG5cbiAgKCoqIFtjcmVhdGVdIGlzIGEgZnVuY3Rpb24gdGhhdCBpbmNyZW1lbnRhbGx5IGNvbnN0cnVjdHMgYSB7IUNvbXBvbmVudH0uIE5vdGUgdGhhdCBhXG4gICAgICBbQ29tcG9uZW50XSBzdXBwb3J0cyBmdW5jdGlvbnMgbGlrZSBbYXBwbHlfYWN0aW9uXSwgd2hpY2ggcmV0dXJuIGEgbmV3IFtNb2RlbC50XSxcbiAgICAgIHdpdGhvdXQgdGFraW5nIGEgbW9kZWwgYXMgYW4gZXhwbGljaXQgaW5wdXQuICBUaGUgaW50ZW50IGlzIGZvciBbYXBwbHlfYWN0aW9uXSB0b1xuICAgICAgaGF2ZSBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgbW9kZWwgdmlhIGl0cyBjb25zdHJ1Y3Rpb25cblxuICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgbWlnaHQgbG9vayBpbiBwcmFjdGljZS5cblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIE1vZGVsID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0geyBjb3VudGVyIDogaW50IH0gW0BAZGVyaXZpbmcgZmllbGRzLCBjb21wYXJlXVxuXG4gICAgICAgICAgbGV0IGN1dG9mZiB0MSB0MiA9IGNvbXBhcmUgdDEgdDIgPSAwXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHVuaXRcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEluY3JlbWVudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgICAgbGV0IHNob3VsZF9sb2cgXyA9IGZhbHNlXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCBpbml0aWFsX21vZGVsID0geyBNb2RlbC5jb3VudGVyID0gMCB9XG5cbiAgICAgICAgbGV0IG9uX3N0YXJ0dXAgfnNjaGVkdWxlX2FjdGlvbnMgX21vZGVsID1cbiAgICAgICAgICBldmVyeSAoVGltZV9ucy5TcGFuLm9mX3NlYyAxLikgKGZ1biAoKSAtPlxuICAgICAgICAgICAgc2NoZWR1bGVfYWN0aW9ucyBbIEFjdGlvbi5JbmNyZW1lbnQgXSk7XG4gICAgICAgICAgRGVmZXJyZWQudW5pdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbDpfIH5pbmplY3Q6XyA9XG4gICAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgICAgbGV0JW1hcCBhcHBseV9hY3Rpb24gPVxuICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID0gbW9kZWwgPj58IE1vZGVsLmNvdW50ZXIgaW5cbiAgICAgICAgICAgIGZ1biAoSW5jcmVtZW50IDogQWN0aW9uLnQpIF8gfnNjaGVkdWxlX2FjdGlvbnM6XyAtPlxuICAgICAgICAgICAgICB7IE1vZGVsLmNvdW50ZXIgPSBjb3VudGVyICsgMSB9XG4gICAgICAgICAgYW5kIHZpZXcgPVxuICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID1cbiAgICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID0gbW9kZWwgPj58IE1vZGVsLmNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgVmRvbS5Ob2RlLmRpdiBbXSBbIFZkb20uTm9kZS50ZXh0IChJbnQudG9fc3RyaW5nIGNvdW50ZXIpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBWZG9tLk5vZGUuYm9keSBbXSBbIGNvdW50ZXIgXVxuICAgICAgICAgIGFuZCBtb2RlbCA9IG1vZGVsIGluXG4gICAgICAgICAgKCogTm90ZSB0aGF0IHdlIGRvbid0IGluY2x1ZGUgW29uX2Rpc3BsYXldIG9yIFt1cGRhdGVfdmlzaWJpbGl0eV0sIHNpbmNlXG4gICAgICAgICAgICAgdGhlc2UgYXJlIG9wdGlvbmFsIGFyZ3VtZW50cyAqKVxuICAgICAgICAgIENvbXBvbmVudC5jcmVhdGUgfmFwcGx5X2FjdGlvbiBtb2RlbCB2aWV3XG4gICAgICAgIDs7IF19XG5cbiAgICAgIFRoZSBmdWxsIGNvZGUgZm9yIHRoaXMgZXhhbXBsZSBjYW4gYmUgZm91bmQgaW4gZXhhbXBsZXMvY291bnRlci5cbiAgKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogIE1vZGVsLnQgSW5jci50XG4gICAgLT4gb2xkX21vZGVsOk1vZGVsLnQgSW5jci50XG4gICAgKCoqIFtvbGRfbW9kZWxdIGNvbnRhaW5zIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSBtb2RlbCAqKVxuICAgIC0+IGluamVjdDooQWN0aW9uLnQgLT4gdW5pdCBWZG9tLkVmZmVjdC50KVxuICAgICgqKiBbaW5qZWN0XSBnaXZlcyB5b3UgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGV2ZW50IGhhbmRsZXJzIGluIHRoZSB2aXJ0dWFsIERPTS4gSW5cbiAgICAgICAgeW91ciBldmVudCBoYW5kbGVyLCBjYWxsIHRoaXMgZnVuY3Rpb24gb24gdGhlIGFjdGlvbiB5b3Ugd291bGQgbGlrZSB0b1xuICAgICAgICBzY2hlZHVsZS4gVmlydHVhbCBET00gd2lsbCBhdXRvbWF0aWNhbGx5IGRlbGVnYXRlIHRoYXQgYWN0aW9uIGJhY2sgdG8gdGhlXG4gICAgICAgIFtTdGFydF9hcHBdIG1haW4gbG9vcC4gKilcbiAgICAtPiAoQWN0aW9uLnQsIE1vZGVsLnQsIFN0YXRlLnQpIENvbXBvbmVudC50IEluY3IudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIHR5cGUgKCdzdGF0ZSwgJ21vZGVsLCAnYWN0aW9uKSBzbmFwc2hvdCA9XG4gICAgeyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgICA7IGFwcGx5X2FjdGlvbiA6XG4gICAgICAgICdzdGF0ZSAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWwgLT4gJ2FjdGlvbiAtPiAnbW9kZWxcbiAgICA7IHVwZGF0ZV92aXNpYmlsaXR5IDogJ21vZGVsIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+ICdtb2RlbFxuICAgIDsgb25fZGlzcGxheSA6ICdzdGF0ZSAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiB1bml0XG4gICAgfVxuXG4gIG1vZHVsZSB0eXBlIFNfZm9yX2JvbnNhaSA9IHNpZ1xuICAgIG1vZHVsZSBNb2RlbCA6IE1vZGVsXG4gICAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICAgIG1vZHVsZSBTdGF0ZSA6IFN0YXRlXG5cbiAgICB2YWwgYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gOiBBY3Rpb24udCAtPiBib29sXG4gICAgdmFsIG9uX3N0YXJ0dXAgOiBzY2hlZHVsZV9hY3Rpb246KEFjdGlvbi50IC0+IHVuaXQpIC0+IE1vZGVsLnQgLT4gU3RhdGUudCBEZWZlcnJlZC50XG5cbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICBNb2RlbC50IEluY3IudFxuICAgICAgLT4gb2xkX21vZGVsOk1vZGVsLnQgSW5jci50XG4gICAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAgIC0+IChTdGF0ZS50LCBNb2RlbC50LCBBY3Rpb24udCkgc25hcHNob3QgSW5jci50XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBSZWN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB0b3AgOiAnYVxuICAgIDsgbGVmdCA6ICdhXG4gICAgOyBib3R0b20gOiAnYVxuICAgIDsgcmlnaHQgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICB7IHRvcCA9IGYgdC50b3A7IGxlZnQgPSBmIHQubGVmdDsgYm90dG9tID0gZiB0LmJvdHRvbTsgcmlnaHQgPSBmIHQucmlnaHQgfVxuICA7O1xuXG4gIGxldCBpbnRfaGVpZ2h0IHQgPSB0LmJvdHRvbSAtIHQudG9wXG4gIGxldCBpbnRfd2lkdGggdCA9IHQucmlnaHQgLSB0LmxlZnRcbiAgbGV0IGZsb2F0X2hlaWdodCB0ID0gdC5ib3R0b20gLS4gdC50b3BcbiAgbGV0IGZsb2F0X3dpZHRoIHQgPSB0LnJpZ2h0IC0uIHQubGVmdFxuZW5kXG5cbmxldCByb3VuZF9mbG9hdF9yZWN0ID8ocm91bmQgPSBGbG9hdC5pcm91bmRfbmVhcmVzdF9leG4pID0gUmVjdC5tYXAgfmY6cm91bmRcblxudHlwZSByb3dzX29yX2NvbHVtbnMgPVxuICB8IFJvd3NcbiAgfCBDb2x1bW5zXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHZhcmlhbnRzLCBjb21wYXJlXVxuXG5sZXQgaW5uZXJIZWlnaHQgKCkgPSBEb21faHRtbC53aW5kb3cjIy5pbm5lckhlaWdodFxubGV0IGlubmVyV2lkdGggKCkgPSBEb21faHRtbC53aW5kb3cjIy5pbm5lcldpZHRoXG5cbmxldCBlbGVtZW50X2lzX2luX3ZpZXdwb3J0IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgbGV0IHJlY3QgPSBlbHQjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBGbG9hdC4oID49ICkgcmVjdCMjLnRvcCAwLlxuICAmJiBGbG9hdC4oID49ICkgcmVjdCMjLmxlZnQgMC5cbiAgJiYgRmxvYXQuKCA8PSApIHJlY3QjIy5ib3R0b20gKEZsb2F0Lm9mX2ludCAoaW5uZXJIZWlnaHQgKCkpKVxuICAmJiBGbG9hdC4oIDw9ICkgcmVjdCMjLnJpZ2h0IChGbG9hdC5vZl9pbnQgKGlubmVyV2lkdGggKCkpKVxuOztcblxuKCoqIFNjcm9sbHMgdG8gdGhlIGl0ZW0gbWFya2VkIGFzIFwia2VlcC1pbi12aWV3XCIgKilcbmxldCBzY3JvbGwgPyhpZCA9IFwia2VlcC1pbi12aWV3XCIpICgpID1cbiAgbWF0Y2ggRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfb3B0IGlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBlbHQgLT4gaWYgbm90IChlbGVtZW50X2lzX2luX3ZpZXdwb3J0IGVsdCkgdGhlbiBlbHQjI3Njcm9sbEludG9WaWV3IEpzLl90cnVlXG47O1xuXG4oKiBOb3QgeWV0IHN1cHBvcnRlZCBvbiBDaHJvbWUuICBNYXliZSB3ZSBzaG91bGQgdXNlIGpRdWVyeT9cbiAgIHtbXG4gICAgIGxldCBzY3JvbGxfaW50b192aWV3IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogdW5pdCA9XG4gICAgICAgZWx0IyNzY3JvbGxJbnRvVmlldyAob2JqZWN0JWpzXG4gICAgICAgICB2YWwgYmxvY2sgPSBKcy5zdHJpbmcgXCJzdGFydFwiXG4gICAgICAgICB2YWwgYmVoYXZpb3IgPSBKcy5zdHJpbmcgXCJzbW9vdGhcIlxuICAgICAgIGVuZClcbiAgIF19XG4qKVxuKCogW3ZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbF0gZ2V0cyBib3VuZGluZyByZWN0IG9mIFtlbHRdLiBUaGUgYm91bmRpbmcgcmVjdCBpc1xuICAgcmVsYXRpdmUgdG8gdGhlIHZpZXcgcG9ydCAqKVxubGV0IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IGZsb2F0IFJlY3QudCA9XG4gIGxldCByZWN0ID0gZWx0IyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgeyBSZWN0LnRvcCA9IHJlY3QjIy50b3BcbiAgOyBsZWZ0ID0gcmVjdCMjLmxlZnRcbiAgOyBib3R0b20gPSByZWN0IyMuYm90dG9tXG4gIDsgcmlnaHQgPSByZWN0IyMucmlnaHRcbiAgfVxuOztcblxubGV0IHZpZXdwb3J0X3JlY3QgKCkgPVxuICB7IFJlY3QudG9wID0gMDsgbGVmdCA9IDA7IGJvdHRvbSA9IGlubmVySGVpZ2h0ICgpOyByaWdodCA9IGlubmVyV2lkdGggKCkgfVxuOztcblxubGV0IGNsaWVudF9yZWN0X29mX2VsZW1lbnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiBmbG9hdCBSZWN0LnQgPVxuICBsZXQgYm91bmRpbmdfcmVjdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbHQgaW5cbiAgeyBib3VuZGluZ19yZWN0IHdpdGhcbiAgICBib3R0b20gPSBib3VuZGluZ19yZWN0LnRvcCArLiBGbG9hdC5vZl9pbnQgZWx0IyMuY2xpZW50SGVpZ2h0XG4gIDsgcmlnaHQgPSBib3VuZGluZ19yZWN0LmxlZnQgKy4gRmxvYXQub2ZfaW50IGVsdCMjLmNsaWVudFdpZHRoXG4gIH1cbjs7XG5cbmxldCBjbGllbnRfcmVjdCAoKSA9XG4gIHsgUmVjdC50b3AgPSAwXG4gIDsgbGVmdCA9IDBcbiAgOyBib3R0b20gPSBEb21faHRtbC5kb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCMjLmNsaWVudEhlaWdodFxuICA7IHJpZ2h0ID0gRG9tX2h0bWwuZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQjIy5jbGllbnRXaWR0aFxuICB9XG47O1xuXG5cbigqKiBTaW1wbGUgd3JhcHBlciBmb3IgdGhlIGJpbmFyeS1zZWFyY2ggZnVuY3RvciAgICopXG5sZXQgYmluYXJ5X3NlYXJjaCAodHlwZSBlbHQpIH5sZW5ndGggfmdldCB+Y29tcGFyZSBtb2RlIHggPVxuICBsZXQgbW9kdWxlIEJzID1cbiAgICBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIGVsdCA9IGVsdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHVuaXRcblxuICAgICAgbGV0IGdldCAoKSBuID0gZ2V0IG5cbiAgICAgIGxldCBsZW5ndGggKCkgPSBsZW5ndGhcbiAgICBlbmQpXG4gIGluXG4gIEJzLmJpbmFyeV9zZWFyY2ggKCkgfmNvbXBhcmUgbW9kZSB4XG47O1xuXG4oKiogU2VhcmNoZXMgdGhyb3VnaCBlbGVtZW50cyBpbmRleGVkIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXS4gKilcbmxldCBlbGVtZW50X3NlYXJjaCB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCB+c2VhcmNoX2J5IG1vZGUgbGF5b3V0IHggPVxuICBsZXQgZ2V0ID1cbiAgICBsZXQgbnRoX2VsZW1lbnQgbiA9XG4gICAgICBsZXQgaWQgPSBudGhfZWxlbWVudF9pZCBuIGluXG4gICAgICBtYXRjaCBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9vcHQgaWQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkVsZW1lbnQgJXMgbm90IGZvdW5kXCIgaWQgKClcbiAgICAgIHwgU29tZSBlbHQgLT4gZWx0XG4gICAgaW5cbiAgICBsZXQgZmlyc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IDApIGluXG4gICAgbGV0IGxhc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IChsZW5ndGggLSAxKSkgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBuJ3RoIGVsZW1lbnQgaW4gYSBub3JtYWxpemVkIHdheSwgYXMgaWYgdGhlIGluZGV4aW5nIGFsd2F5cyBnb2VzIGluXG4gICAgICAgaW5jcmVhc2luZyBvcmRlciBmcm9tIHRvcCB0b3AgYm90dG9tICopXG4gICAgbGV0IG50aF9lbGVtZW50X25vcm1hbGl6ZWQgbiA9XG4gICAgICBsZXQgaXNfYXNjZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IEZsb2F0LiggPD0gKSBmaXJzdC50b3AgbGFzdC50b3BcbiAgICAgICAgfCBDb2x1bW5zIC0+IEZsb2F0LiggPD0gKSBmaXJzdC5sZWZ0IGxhc3QubGVmdFxuICAgICAgaW5cbiAgICAgIG50aF9lbGVtZW50IChpZiBpc19hc2NlbmRpbmcgdGhlbiBuIGVsc2UgbGVuZ3RoIC0gbiAtIDEpXG4gICAgaW5cbiAgICBmdW4gbiAtPiBzZWFyY2hfYnkgKHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnRfbm9ybWFsaXplZCBuKSlcbiAgaW5cbiAgYmluYXJ5X3NlYXJjaCB+bGVuZ3RoIH5nZXQgfmNvbXBhcmU6RmxvYXQuY29tcGFyZSBtb2RlIHhcbjs7XG5cbmxldCBmaW5kX3Zpc2libGVfcmFuZ2Ugfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgbGF5b3V0ID1cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGVsZW1lbnRfc2VhcmNoID0gZWxlbWVudF9zZWFyY2ggfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgaW5cbiAgICBsZXQgdmlld3BvcnRfcmVjdCA9IHZpZXdwb3J0X3JlY3QgKCkgaW5cbiAgICBsZXQgZmlyc3QgPVxuICAgICAgbGV0IHNlYXJjaF9ieSwgdGFyZ2V0ID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IFJlY3QuYm90dG9tLCB2aWV3cG9ydF9yZWN0LnRvcFxuICAgICAgICB8IENvbHVtbnMgLT4gUmVjdC5yaWdodCwgdmlld3BvcnRfcmVjdC5sZWZ0XG4gICAgICBpblxuICAgICAgZWxlbWVudF9zZWFyY2ggfnNlYXJjaF9ieSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgIGxldCBsYXN0ID1cbiAgICAgIGxldCBzZWFyY2hfYnksIHRhcmdldCA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBSZWN0LnRvcCwgdmlld3BvcnRfcmVjdC5ib3R0b21cbiAgICAgICAgfCBDb2x1bW5zIC0+IFJlY3QubGVmdCwgdmlld3BvcnRfcmVjdC5yaWdodFxuICAgICAgaW5cbiAgICAgIGVsZW1lbnRfc2VhcmNoIH5zZWFyY2hfYnkgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgICgqIEJvdGggW2ZpcnN0XSBhbmQgW2xhc3RdIG5lZWQgdG8gYmUgW1NvbWVdLiBPdGhlcndpc2UsIGZvciBleGFtcGxlIGlmIHRoZSB3aG9sZVxuICAgICAgIHRhYmxlIGlzIGJlbG93IHZpZXcgcG9ydCwgdGhlbiBbZmlyc3RdIHdpbGwgYmUgW1NvbWVdLCBbbGFzdF0gd2lsbCBiZSBbTm9uZV0gKilcbiAgICBPcHRpb24uYm90aCBmaXJzdCBsYXN0KVxuOztcblxubGV0IGdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAge2pzfFxuICAgICAgKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG4gICAgICAgIHZhciB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICAgICAgICB2YXIgcmUgPSAvKGF1dG98c2Nyb2xsKS87XG5cbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IGRvYykge1xuICAgICAgICAgIHJldHVybiBkb2M7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY3VyID0gZWxlbWVudC5wYXJlbnROb2RlO1xuXG4gICAgICAgIHdoaWxlIChjdXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgIHZhciBzdHlsZSA9IHdpbi5nZXRDb21wdXRlZFN0eWxlKGN1cik7XG5cbiAgICAgICAgICBpZiAocmUudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VyID0gY3VyLnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgfSlcbiAgICB8anN9XG47O1xuXG5sZXQgZ2V0X3Njcm9sbF9jb250YWluZXIgKGVsIDogI0RvbS5ub2RlIEpzLnQpIDogRG9tLm5vZGUgSnMudCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCBnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIFt8IEpzLlVuc2FmZS5pbmplY3QgZWwgfF1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIFBlcmZvcm1hbmNlID0gSmF2YXNjcmlwdF9wcm9maWxpbmdcblxubGV0IHRpbWVyX3N0YXJ0IHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZSB0aGVuIFBlcmZvcm1hbmNlLk1hbnVhbC5tYXJrIChzIF4gXCJiZWZvcmVcIik7XG4gIGlmIGRlYnVnIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyN0aW1lIChKcy5zdHJpbmcgcylcbjs7XG5cbmxldCB0aW1lcl9zdG9wIHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZVxuICB0aGVuIChcbiAgICBsZXQgYmVmb3JlID0gcyBeIFwiYmVmb3JlXCIgaW5cbiAgICBsZXQgYWZ0ZXIgPSBzIF4gXCJhZnRlclwiIGluXG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1hcmsgYWZ0ZXI7XG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1lYXN1cmUgfm5hbWU6cyB+c3RhcnQ6YmVmb3JlIH5lbmRfOmFmdGVyKTtcbiAgaWYgZGVidWcgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI3RpbWVFbmQgKEpzLnN0cmluZyBzKVxuOztcblxubGV0IHByaW50X2Vycm9yZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIHMpKSBmbXRcblxubW9kdWxlIFJlcXVlc3RfaWRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcblxuICB2YWwgc2V0X29uY2VfZXhuXG4gICAgOiAgdFxuICAgIC0+IGFuaW1hdGlvbl9mcmFtZV9pZDpEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuICAgIC0+IHNldF90aW1lb3V0X2lkOkRvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAtPiB1bml0XG5cbiAgdmFsIGNhbmNlbGxlZCA6IHQgLT4gYm9vbFxuICB2YWwgY2FuY2VsIDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBpZHMgPVxuICAgIHwgRW1wdHlcbiAgICB8IENhbmNlbGxlZFxuICAgIHwgSWRzIG9mXG4gICAgICAgIHsgYW5pbWF0aW9uX2ZyYW1lX2lkIDogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcbiAgICAgICAgOyBzZXRfdGltZW91dF9pZCA6IERvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAgICAgfVxuXG4gIHR5cGUgdCA9IGlkcyByZWZcblxuICBsZXQgY3JlYXRlICgpIDogdCA9IHJlZiBFbXB0eVxuXG4gIGxldCBzZXRfb25jZV9leG4gKHQgOiB0KSB+YW5pbWF0aW9uX2ZyYW1lX2lkIH5zZXRfdGltZW91dF9pZCA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+XG4gICAgICAoKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgbGV0J3MgYmUgZGVmZW5zaXZlLiAqKVxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZFxuICAgIHwgRW1wdHkgLT4gdCA6PSBJZHMgeyBhbmltYXRpb25fZnJhbWVfaWQ7IHNldF90aW1lb3V0X2lkIH1cbiAgICB8IElkcyBfIC0+IGludmFsaWRfYXJnIFwicmVxdWVzdF9pZHMgYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCBjYW5jZWxsZWQgeCA9XG4gICAgbWF0Y2ggIXggd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+IHRydWVcbiAgICB8IEVtcHR5IHwgSWRzIF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgY2FuY2VsICh0IDogdCkgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPiAoKVxuICAgIHwgRW1wdHkgLT4gdCA6PSBDYW5jZWxsZWRcbiAgICB8IElkcyB7IGFuaW1hdGlvbl9mcmFtZV9pZDsgc2V0X3RpbWVvdXRfaWQgfSAtPlxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZDtcbiAgICAgIHQgOj0gQ2FuY2VsbGVkXG4gIDs7XG5lbmRcblxuKCoqIFtyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV0gbm90aWZpZXMgdGhlIGJyb3dzZXIgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBkbyBzb21lXG4gICAgY29tcHV0YXRpb24gYmVmb3JlIHRoZSBuZXh0IHJlcGFpbnQuIEJlY2F1c2UgdGhpcyBuZWVkcyB0byBvY2N1ciBpbiB0aGUgc2FtZVxuICAgIHN5bmNocm9ub3VzIGNhbGwgKGNhbGxlZCBiZWZvcmUgdGhlIG5leHQgcmVwYWludCksIHJldHVybmluZyBhIERlZmVycmVkLnQgd2lsbCBub3RcbiAgICB3b3JrLiBJbnN0ZWFkLCB5b3UgcGFzcyBpbiBhIGpvYiB0byBiZSBydW4gYmVmb3JlIHRoZSByZXBhaW50LlxuXG4gICAgTm90ZSB0aGF0IGlmIFtjYWxsYmFja10gY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyB3b3JrIGJlZm9yZSBkb2luZyBET00gY2hhbmdlcywgdGhvc2VcbiAgICBjaGFuZ2VzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXBhaW50IGFuZCB3aWxsIGJlIHNhdmVkIHVudGlsIHRoZSBmb2xsb3dpbmcgb25lLlxuXG4gICAgV2hlbiB0aGUgdGFiIGlzIGluIHRoZSBiYWNrZ3JvdW5kLCB0aGUgYnJvd3NlcnMgbmF0aXZlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmdW5jdGlvblxuICAgIHdpbGwgbmV2ZXIgY2FsbCB0aGUgY2FsbGJhY2ssIHNvIGluIG9yZGVyIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcgZXZlbnRzLCB3ZSBzZXQgYW5cbiAgICBhbHRlcm5hdGUgc2V0VGltZW91dCBhdCAxIHNlY29uZC5cbiopXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2sgPVxuICAoKiBXZSBjYXB0dXJlIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gdXNlIGl0IGxhdGVyIHdoZW4gaGFuZGxpbmcgY2FsbGJhY2tzIGZyb21cbiAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBzaW5jZSBleGNlcHRpb25zIHJhaXNlZCB0byB0aGF0IHdvdWxkIG90aGVyd2lzZSBub3QgZ28gdGhyb3VnaFxuICAgICBvdXIgb3JkaW5hcnkgQXN5bmMgbW9uaXRvci4gKilcbiAgbGV0IGN1cnJlbnRfY29udGV4dCA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSBpblxuICBsZXQgcmVxdWVzdF9pZHMgPSBSZXF1ZXN0X2lkcy5jcmVhdGUgKCkgaW5cbiAgbGV0IGNhbGxiYWNrICgpID1cbiAgICBpZiBSZXF1ZXN0X2lkcy5jYW5jZWxsZWQgcmVxdWVzdF9pZHNcbiAgICB0aGVuICgpXG4gICAgZWxzZSAoXG4gICAgICBSZXF1ZXN0X2lkcy5jYW5jZWwgcmVxdWVzdF9pZHM7XG4gICAgICBsZXQgY2FsbGJhY2tfcmVzdWx0ID1cbiAgICAgICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoaW5fY29udGV4dCBjdXJyZW50X2NvbnRleHQgY2FsbGJhY2tcbiAgICAgIGluXG4gICAgICBpZ25vcmUgKGNhbGxiYWNrX3Jlc3VsdCA6ICh1bml0LCB1bml0KSBSZXN1bHQudCkpXG4gIGluXG4gIGxldCBhbmltYXRpb25fZnJhbWVfaWQgPVxuICAgIGxldCBhbmltYXRpb25fY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBjYWxsYmFjayAoKSkgaW5cbiAgICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSBhbmltYXRpb25fY2FsbGJhY2tcbiAgaW5cbiAgbGV0IHNldF90aW1lb3V0X2lkID1cbiAgICBsZXQgdGltZW91dF9jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGNhbGxiYWNrICgpKSBpblxuICAgICgqIDEwMDAgbXMgPSAxczsgIENob3NlbiBiZWNhdXNlIGJhY2tncm91bmRlZCB0YW5nbGUgc2VuZHMgcmVxdWVzdHNcbiAgICAgICBhdCBhcHByb3hpbWF0ZWx5IHRoaXMgcmF0ZS4gKilcbiAgICBsZXQgdGltZW91dCA9IDEwMDAuMCBpblxuICAgIERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dCB0aW1lb3V0X2NhbGxiYWNrIHRpbWVvdXRcbiAgaW5cbiAgUmVxdWVzdF9pZHMuc2V0X29uY2VfZXhuIHJlcXVlc3RfaWRzIH5hbmltYXRpb25fZnJhbWVfaWQgfnNldF90aW1lb3V0X2lkXG47O1xuXG4oKiogVGhlIEpzX29mX29jYW1sIHR5cGUgRG9tX2h0bWwuZWxlbWVudCBkb2Vzbid0IGhhdmUgdGhlIGNvcnJlY3Qgb3B0aW9ucyBmb3JcbiAgICB0aGVpciBgZm9jdXNgIG1ldGhvZC4gQ2FzdCB0byB0aGlzIGluIG9yZGVyIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLiAgKilcbnR5cGUgZm9jdXNhYmxlID1cbiAgPCBmb2N1cyA6IDwgcHJldmVudFNjcm9sbCA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wID4gSnMudCAtPiB1bml0IEpzLm1ldGggPlxuXG5sZXQgYXNfZm9jdXNhYmxlIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IGZvY3VzYWJsZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG4oKiogW1Zpc2liaWxpdHldIGVuY2Fwc3VsYXRlcyB0aGUgZGlydHlpbmcgYW5kIGNsZWFuaW5nIG9mIHRoZSB2aXNpYmlsaXR5IGZsYWdcblxuICAgIFRoZSB2aWV3cG9ydCBzdGFydHMgb3V0IGRpcnR5LiBXaGVuIHdlIGxvb2sgYXQgdGhlIERPTSB0byBjb21wdXRlIHdoYXQgaXMgdmlzaWJsZSBieVxuICAgIGNhbGxpbmcgW3VwZGF0ZV92aXNpYmlsaXR5XSwgdGhlIHZpZXdwb3J0IHRoZW4gYmVjb21lcyBjbGVhbi4gQW55IHRpbWUgdGhlIHVzZXJcbiAgICBzY3JvbGxzIG91ciBwYWdlIG9yIHJlc2l6ZXMgdGhlIHdpbmRvdywgdGhlIHZpZXdwb3J0IGJlY29tZXMgZGlydHkgYWdhaW4uIElmIHdlIHVwZGF0ZVxuICAgIHRoZSBET00sIHRoZSB2aWV3cG9ydCBiZWNvbWVzIGRpcnR5IGFnYWluIGJlY2F1c2UgYSBET00gdXBkYXRlIGNvdWxkIGNhdXNlIGEgcmVmbG93LFxuICAgIG1vdmluZyB0aGUgZWxlbWVudHMgdGhhdCBhcmUgdmlzaWJsZS5cblxuICAgIFdlIGhhdmUgaW1wbGVtZW50ZWQgdGhpcyBhcyBhIGZsYWcgaW5zdGVhZCBvZiByZXF1aXJpbmcgdGhlIHVzZXJzIHRvIHNlbmQgYW4gYWN0aW9uIG9uXG4gICAgc2Nyb2xsIGJlY2F1c2UgaXQgd291bGQgbWFrZSBubyBzZW5zZSB0byBjb21wdXRlIHRoZSB2aXNpYmlsaXR5IG9uIHRoZSB2aXJ0dWFsLWRvbVxuICAgIHdoZW4gdGhlIHZpcnR1YWwtZG9tIGRvZXMgbm90IG1hdGNoIHRoZSBhY3R1YWwgZG9tIChhcyBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mXG4gICAgW2FwcGx5X2FjdGlvbnNdKS4gKilcbm1vZHVsZSBWaXNpYmlsaXR5IDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGVfYXNfZGlydHkgOiB1bml0IC0+IHRcbiAgdmFsIG1hcmtfY2xlYW4gOiB0IC0+IHVuaXRcbiAgdmFsIG1hcmtfZGlydHkgOiB0IC0+IHVuaXRcbiAgdmFsIGlzX2RpcnR5IDogdCAtPiBib29sXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBtdXRhYmxlIHdoZW5fZGlydHkgOiB1bml0IEl2YXIudCB9XG5cbiAgbGV0IGNyZWF0ZV9hc19kaXJ0eSAoKSA9IHsgd2hlbl9kaXJ0eSA9IEl2YXIuY3JlYXRlX2Z1bGwgKCkgfVxuICBsZXQgbWFya19kaXJ0eSB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQud2hlbl9kaXJ0eSAoKVxuICBsZXQgaXNfZGlydHkgdCA9IEl2YXIuaXNfZnVsbCB0LndoZW5fZGlydHlcbiAgbGV0IG1hcmtfY2xlYW4gdCA9IGlmIGlzX2RpcnR5IHQgdGhlbiB0LndoZW5fZGlydHkgPC0gSXZhci5jcmVhdGUgKClcbmVuZFxuXG5tb2R1bGUgTG9nZ2luZ19maWx0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0cmluZ19ibGFuZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgQmxhbmcudCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBbGxcbiAgICB8IE5vbmVcbiAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBvZiBTdHJpbmdfYmxhbmcudFxuICAgIHwgQ3VzdG9tX2ZpbHRlciBvZiAoU2V4cC50IC0+IGJvb2wpXG5lbmRcblxubW9kdWxlIERlYnVnX2ZsYWdzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA6IHVuaXQgLT4gTG9nZ2luZ19maWx0ZXIudFxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiB1bml0IC0+IGJvb2xcbiAgICA7IHNob3VsZF9kZWJ1ZyA6IHVuaXQgLT4gYm9vbFxuICAgIH1cblxuICB2YWwgaW5pdF9hcHBcbiAgICA6ICBhcHBfaWQ6c3RyaW5nXG4gICAgLT4gZmlsdGVyX25hbWVzOlN0cmluZy5TZXQudFxuICAgIC0+IGRlYnVnOmJvb2xcbiAgICAtPiBzdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbG9nZ2luZ19maWx0ZXIgOiB1bml0IC0+IExvZ2dpbmdfZmlsdGVyLnRcbiAgICA7IHNob3VsZF9wcm9maWxlIDogdW5pdCAtPiBib29sXG4gICAgOyBzaG91bGRfZGVidWcgOiB1bml0IC0+IGJvb2xcbiAgICB9XG5cbiAgbW9kdWxlIEFwcF9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbHRlcl9uYW1lcyA6IFN0cmluZy5TZXQudFxuICAgICAgOyBsb2dnaW5nX2ZpbHRlciA6IExvZ2dpbmdfZmlsdGVyLnQgcmVmXG4gICAgICA7IHNob3VsZF9wcm9maWxlIDogYm9vbCByZWZcbiAgICAgIDsgc2hvdWxkX2RlYnVnIDogYm9vbCByZWZcbiAgICAgIH1cblxuICAgIGxldCBzZXRfbG9nZ2luZ19maWx0ZXIgdCB+bG9nZ2luZ19maWx0ZXIgPSB0LmxvZ2dpbmdfZmlsdGVyIDo9IGxvZ2dpbmdfZmlsdGVyXG4gICAgbGV0IHNldF9zaG91bGRfcHJvZmlsZSB0IH5zaG91bGRfcHJvZmlsZSA9IHQuc2hvdWxkX3Byb2ZpbGUgOj0gc2hvdWxkX3Byb2ZpbGVcbiAgICBsZXQgc2V0X3Nob3VsZF9kZWJ1ZyB0IH5zaG91bGRfZGVidWcgPSB0LnNob3VsZF9kZWJ1ZyA6PSBzaG91bGRfZGVidWdcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBnbG9iYWwgPSBvYmplY3RcbiAgICBtZXRob2Qgc3RhcnRMb2dnaW5nQWxsIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydExvZ2dpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0TG9nZ2luZ0N1c3RvbSA6XG4gICAgICAoKEpzLmpzX3N0cmluZyBKcy50IC0+IGJvb2wgSnMudCkgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RvcExvZ2dpbmcgOiAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RhcnRQcm9maWxpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0b3BQcm9maWxpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0RGVidWdnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdG9wRGVidWdnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzYXZlSW5jcmVtZW50YWxHcmFwaCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG4gIGVuZFxuXG4gIGxldCBnbG9iYWwgOiBnbG9iYWwgSnMudCA9IEpzLlVuc2FmZS5nbG9iYWxcbiAgbGV0IGdsb2JhbF9pc19pbml0aWFsaXplZCA9IHJlZiBmYWxzZVxuICBsZXQgYXBwX3N0YXRlcyA6IEFwcF9zdGF0ZS50IFN0cmluZy5UYWJsZS50ID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSAoKVxuXG4gIGxldCBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiXFxcIlwiIF4gc3RyIF4gXCJcXFwiXCIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgOztcblxuICBsZXQgbXVsdGlfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiICBcIiBeIHN0cikgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgaW5pdF9nbG9iYWwgfmFwcF9maWx0ZXJzICgpID1cbiAgICBsZXQgd2l0aF9hcHBfaWRfb3B0IHVwZGF0ZV9zdGF0ZSBhcHBfaWRfb3B0ID1cbiAgICAgIGxldCBhcHBfaWRfb3B0ID0gSnMuT3B0LnRvX29wdGlvbiBhcHBfaWRfb3B0IHw+IE9wdGlvbi5tYXAgfmY6SnMudG9fc3RyaW5nIGluXG4gICAgICBtYXRjaCBhcHBfaWRfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBIYXNodGJsLml0ZXIgYXBwX3N0YXRlcyB+Zjp1cGRhdGVfc3RhdGVcbiAgICAgIHwgU29tZSBhcHBfaWQgLT5cbiAgICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBhcHBfc3RhdGVzIGFwcF9pZCB3aXRoXG4gICAgICAgICB8IFNvbWUgc3RhdGUgLT4gdXBkYXRlX3N0YXRlIHN0YXRlXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICAgXCJVbmFibGUgdG8gZmluZCBhcHAgd2l0aCBpZCBcXFwiJXNcXFwiLiBWYWxpZCBhcHAgaWRzIGFyZTogJXNcIlxuICAgICAgICAgICAgIGFwcF9pZFxuICAgICAgICAgICAgIChIYXNodGJsLmtleXMgYXBwX3N0YXRlcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCkpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIGxvZ2dpbmdfZmlsdGVyID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9sb2dnaW5nX2ZpbHRlciB+bG9nZ2luZ19maWx0ZXIpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9wcm9maWxlIHNob3VsZF9wcm9maWxlID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9zaG91bGRfcHJvZmlsZSB+c2hvdWxkX3Byb2ZpbGUpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9kZWJ1ZyBzaG91bGRfZGVidWcgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X3Nob3VsZF9kZWJ1ZyB+c2hvdWxkX2RlYnVnKVxuICAgIGluXG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQWxsIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBBbGwpO1xuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ1xuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBibGFuZ19zdHIgLT5cbiAgICAgIGxldCBibGFuZ19zdHIgPSBKcy50b19zdHJpbmcgYmxhbmdfc3RyIGluXG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKGZ1biBhcHBfc3RhdGUgLT5cbiAgICAgICAgbGV0IGJsYW5nID0gQmxhbmcudF9vZl9zZXhwIFN0cmluZy50X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIGJsYW5nX3N0cikgaW5cbiAgICAgICAgbGV0IGludmFsaWRfbmFtZXMgPVxuICAgICAgICAgIEJsYW5nLmZvbGQgYmxhbmcgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSB+ZjooZnVuIGludmFsaWRfbmFtZXMgbmFtZSAtPlxuICAgICAgICAgICAgaWYgU2V0Lm1lbSBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIG5hbWVcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9uYW1lc1xuICAgICAgICAgICAgZWxzZSBTZXQuYWRkIGludmFsaWRfbmFtZXMgbmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU2V0LmlzX2VtcHR5IGludmFsaWRfbmFtZXNcbiAgICAgICAgdGhlblxuICAgICAgICAgIEFwcF9zdGF0ZS5zZXRfbG9nZ2luZ19maWx0ZXJcbiAgICAgICAgICAgIGFwcF9zdGF0ZVxuICAgICAgICAgICAgfmxvZ2dpbmdfZmlsdGVyOihOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwcmludF9lcnJvcmZcbiAgICAgICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgbmFtZWQgZmlsdGVyKHMpOiAlcy4gVmFsaWQgbmFtZXMgYXJlOlxcbiVzXCJcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBpbnZhbGlkX25hbWVzIHw+IHNpbmdsZV9saW5lX3N0cmluZ19saXN0KVxuICAgICAgICAgICAgKFNldC50b19saXN0IGFwcF9zdGF0ZS5maWx0ZXJfbmFtZXMgfD4gbXVsdGlfbGluZV9zdHJpbmdfbGlzdCkpKTtcbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdDdXN0b21cbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gZmlsdGVyIC0+XG4gICAgICBsZXQgZmlsdGVyIGFjdGlvbl9zZXhwID1cbiAgICAgICAgYWN0aW9uX3NleHAgfD4gU2V4cC50b19zdHJpbmcgfD4gSnMuc3RyaW5nIHw+IGZpbHRlciB8PiBKcy50b19ib29sXG4gICAgICBpblxuICAgICAgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIChDdXN0b21fZmlsdGVyIGZpbHRlcikpO1xuICAgIGdsb2JhbCMjLnN0b3BMb2dnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBOb25lKTtcbiAgICBnbG9iYWwjIy5zdGFydFByb2ZpbGluZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgdHJ1ZSk7XG4gICAgZ2xvYmFsIyMuc3RvcFByb2ZpbGluZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgZmFsc2UpO1xuICAgIGdsb2JhbCMjLnN0YXJ0RGVidWdnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfZGVidWcgdHJ1ZSk7XG4gICAgZ2xvYmFsIyMuc3RvcERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zYXZlSW5jcmVtZW50YWxHcmFwaFxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgbGV0IGZpbGVuYW1lID0gXCJjdXJyZW50X2luY3JfZG9tX2RvdF9ncmFwaC5kb3RcIiBpblxuICAgICAgVWlfaW5jci5zYXZlX2RvdF90b19maWxlIGZpbGVuYW1lO1xuICAgICAgbGV0IGNvbnRlbnRzID0gSW5fY2hhbm5lbC5yZWFkX2FsbCBmaWxlbmFtZSBpblxuICAgICAgVmRvbV9maWxlX2Rvd25sb2FkLmNyZWF0ZSB+ZmlsZW5hbWUgfm1pbWV0eXBlOlwicGxhaW4vdGV4dFwiIH5jb250ZW50c1xuICAgICAgfD4gVmRvbV9maWxlX2Rvd25sb2FkLnRyaWdnZXIpO1xuICAgIGxldCBncm91cCBzIH5mID1cbiAgICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBDb2xsYXBzZWQgKEpzLnN0cmluZyBzKTtcbiAgICAgIGYgKCk7XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwRW5kXG4gICAgaW5cbiAgICBsZXQgbG9nIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpIGluXG4gICAgZ3JvdXAgXCJJbmNyX2RvbSAvIEJvbnNhaSBDb25zb2xlXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgZ3JvdXAgXCJBY3Rpb24gTG9nZ2luZ1wiIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbG9nXG4gICAgICAgICAge3xMb2dnaW5nIHByaW50cyBhY3Rpb24gaW5mbyB0byB0aGUgY29uc29sZS4gSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gVG8gc3RhcnQgbG9nZ2luZywgdHlwZSBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbnN0YXJ0TG9nZ2luZ0FsbChbYXBwX2lkXSkgLSBsb2cgYWxsIGFjdGlvbnNcbnN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZSBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgcHJlLWRlZmluZWQgbmFtZWQgZmlsdGVyIFtmaWx0ZXJfbmFtZV1cbnN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZV9ibGFuZyBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgYmxhbmcgb2YgbmFtZWQgZmlsdGVycyBbZmlsdGVyX25hbWVfYmxhbmddXG5zdGFydExvZ2dpbmdDdXN0b20oZmlsdGVyIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBjdXN0b20gZnVuY3Rpb24gW2ZpbHRlcl0gZnJvbSBhIHN0cmluZyAodGhlIGFjdGlvbiBzZXhwKSB0byBhIGJvb2xcblRvIHN0b3AgbG9nZ2luZywgdHlwZTogc3RvcExvZ2dpbmcoW2FwcF9pZF0pfH0pO1xuICAgICAgZ3JvdXAgXCJBY3Rpb24gUHJvZmlsaW5nXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsb2dcbiAgICAgICAgICB7fFByb2ZpbGluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LlxuVG8gc3RhcnQgcHJvZmlsaW5nLCB0eXBlOiBzdGFydFByb2ZpbGluZyhbYXBwX2lkXSlcblRvIHN0b3AgcHJvZmlsaW5nLCB0eXBlOiBzdG9wUHJvZmlsaW5nKFthcHBfaWRdKXx9KTtcbiAgICAgIGdyb3VwIFwiRGVidWdnaW5nXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsb2dcbiAgICAgICAgICB7fERlYnVnZ2luZyBwcmludHMgdGltaW5nIGluZm8gdG8gdGhlIGNvbnNvbGUuIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgYnkgdGhlIGFwcC5cblRvIHN0YXJ0IGRlYnVnZ2luZywgdHlwZTogc3RhcnREZWJ1Z2dpbmcoW2FwcF9pZF0pXG5UbyBzdG9wIGRlYnVnZ2luZywgdHlwZTogc3RvcERlYnVnZ2luZyhbYXBwX2lkXSlcblxuW2FwcF9pZF0gaXMgZXF1YWwgdG8gdGhlIGlkIG9mIHRoZSBlbGVtZW50IHRoYXQgdGhlIGluY3ItZG9tIGFwcCBpcyBib3VuZCB0by4gSWYgdGhlIHBhZ2Ugb25seSBoYXMgb25lIGFwcCBvciB5b3Ugd2FudCB0byBhcHBseSB0aGUgYWN0aW9uIHRvIGFsbCBhcHBzLCB5b3UgY2FuIHBhc3MgaW4gW251bGxdIChvciBmb3Igc2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9ucywgb21pdCBpdCBhbHRvZ2V0aGVyKS58fSk7XG4gICAgICBsb2cgYXBwX2ZpbHRlcnMpXG4gIDs7XG5cbiAgbGV0IGluaXRfYXBwIH5hcHBfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3AgPVxuICAgIGxldCBhcHBfaW5pdF9tZXNzYWdlID1cbiAgICAgIHNwcmludGZcbiAgICAgICAge3xBdmFpbGFibGUgbG9nZ2luZyBmaWx0ZXJzIGZvciBcIiVzXCI6XG4lc3x9XG4gICAgICAgIGFwcF9pZFxuICAgICAgICAoU2V0LnRvX2xpc3QgZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpXG4gICAgaW5cbiAgICBpZiBub3QgIWdsb2JhbF9pc19pbml0aWFsaXplZFxuICAgIHRoZW4gKFxuICAgICAgaW5pdF9nbG9iYWwgfmFwcF9maWx0ZXJzOmFwcF9pbml0X21lc3NhZ2UgKCk7XG4gICAgICBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgOj0gdHJ1ZSlcbiAgICBlbHNlIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgYXBwX2luaXRfbWVzc2FnZSk7XG4gICAgbGV0IGxvZ2dpbmdfZmlsdGVyID0gcmVmIExvZ2dpbmdfZmlsdGVyLk5vbmUgaW5cbiAgICBsZXQgc2hvdWxkX3Byb2ZpbGUgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2hvdWxkX2RlYnVnID0gcmVmIGRlYnVnIGluXG4gICAgSGFzaHRibC5zZXRcbiAgICAgIGFwcF9zdGF0ZXNcbiAgICAgIH5rZXk6YXBwX2lkXG4gICAgICB+ZGF0YTp7IGZpbHRlcl9uYW1lczsgbG9nZ2luZ19maWx0ZXI7IHNob3VsZF9wcm9maWxlOyBzaG91bGRfZGVidWcgfTtcbiAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPiBIYXNodGJsLnJlbW92ZSBhcHBfc3RhdGVzIGFwcF9pZCk7XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA9IChmdW4gKCkgLT4gIWxvZ2dpbmdfZmlsdGVyKVxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgPSAoZnVuICgpIC0+ICFzaG91bGRfcHJvZmlsZSlcbiAgICA7IHNob3VsZF9kZWJ1ZyA9IChmdW4gKCkgLT4gIXNob3VsZF9kZWJ1ZylcbiAgICB9XG4gIDs7XG5lbmRcblxuKCogQWRkcyB0aGUgbmVjZXNzYXJ5IGF0dHJpYnV0ZSB0byB0aGUgcm9vdCBub2RlIHNvIHRoYXQgaXQgY2FuIGludGVyY2VwdFxuICAga2V5Ym9hcmQgZXZlbnRzLlxuICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90YWJpbmRleCAqKVxubGV0IG92ZXJyaWRlX3Jvb3RfZWxlbWVudCByb290ID1cbiAgbGV0IG9wZW4gVmRvbSBpblxuICBsZXQgc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCA9XG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQuYXR0cnMgfD4gQXR0ci5FeHBlcnQuY29udGFpbnNfbmFtZSBcImRpc2FibGVfdGFiX2luZGV4XCIgfD4gbm90XG4gIGluXG4gIG1hdGNoIChyb290IDogTm9kZS50KSB3aXRoXG4gIHwgRWxlbWVudCBlbGVtZW50IHdoZW4gc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCAtPlxuICAgIGxldCBhZGRfbmV3X2F0dHJzIGF0dHJzID1cbiAgICAgIFZkb20uQXR0ci4oc3R5bGUgKENzc19nZW4ub3V0bGluZSB+c3R5bGU6YE5vbmUgKCkpIEAgdGFiaW5kZXggMCBAIGF0dHJzKVxuICAgIGluXG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQubWFwX2F0dHJzIH5mOmFkZF9uZXdfYXR0cnMgfD4gTm9kZS5FbGVtZW50XG4gIHwgXyAtPiByb290XG47O1xuXG5sZXQgcmVjIGdldF90YWdfbmFtZSAobm9kZSA6IFZkb20uTm9kZS50KSA9XG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IEVsZW1lbnQgZSAtPiBTb21lIChWZG9tLk5vZGUuRWxlbWVudC50YWcgZSlcbiAgfCBMYXp5IHsgdDsgXyB9IC0+IGdldF90YWdfbmFtZSAoTGF6eS5mb3JjZSB0KVxuICB8IE5vbmUgfCBUZXh0IF8gfCBXaWRnZXQgXyAtPiBOb25lXG47O1xuXG5sZXQgc3RhcnRfYm9uc2FpXG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlByaXZhdGUuU19mb3JfYm9uc2FpXG4gICAgICAgIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWxcbiAgICAgICAgIGFuZCB0eXBlIEFjdGlvbi50ID0gYWN0aW9uKVxuICA9XG4gICgqIFRoaXMgaXMgaWRlbXBvdGVudCBhbmQgc28gZmluZSB0byBkby4gKilcbiAgQXN5bmNfanMuaW5pdCAoKTtcbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0JWJpbmQgKCkgPSBBc3luY19qcy5kb2N1bWVudF9sb2FkZWQgKCkgaW5cbiAgICAgbGV0IG1vZGVsX3YgPSBJbmNyLlZhci5jcmVhdGUgaW5pdGlhbF9tb2RlbCBpblxuICAgICBsZXQgbW9kZWwgPSBJbmNyLlZhci53YXRjaCBtb2RlbF92IGluXG4gICAgIGxldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92ID0gSW5jci5WYXIuY3JlYXRlIGluaXRpYWxfbW9kZWwgaW5cbiAgICAgbGV0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5ID0gSW5jci5WYXIud2F0Y2ggbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiBpblxuICAgICBsZXQgY3V0b2ZmID1cbiAgICAgICBJbmNyLkN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgLT5cbiAgICAgICAgIEFwcC5Nb2RlbC5jdXRvZmYgb2xkX3ZhbHVlIG5ld192YWx1ZSlcbiAgICAgaW5cbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsIGN1dG9mZjtcbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5IGN1dG9mZjtcbiAgICAgbGV0IGFjdGlvbl9xdWV1ZSA9IERlcXVlLmNyZWF0ZSAoKSBpblxuICAgICBsZXQgbW9kdWxlIEV2ZW50ID1cbiAgICAgICBWZG9tLkVmZmVjdC5EZWZpbmUgKHN0cnVjdFxuICAgICAgICAgbW9kdWxlIEFjdGlvbiA9IEFwcC5BY3Rpb25cblxuICAgICAgICAgbGV0IGhhbmRsZSBhY3Rpb24gPSBEZXF1ZS5lbnF1ZXVlX2JhY2sgYWN0aW9uX3F1ZXVlIGFjdGlvblxuICAgICAgIGVuZClcbiAgICAgaW5cbiAgICAgbGV0IHZpc2liaWxpdHkgPSBWaXNpYmlsaXR5LmNyZWF0ZV9hc19kaXJ0eSAoKSBpblxuICAgICBsZXQgdmlld3BvcnRfY2hhbmdlZCAoKSA9IFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5IGluXG4gICAgICgqIFRoaXMgcmVnaXN0ZXJzIHRoZSBbdmlld3BvcnRfY2hhbmdlZF0gaGFuZGxlciB3aXRoIFZpcnR1YWxfZG9tLiBJZiBldmVudCBoYW5kbGVyc1xuICAgICAgICB1c2UgdGhlIFtWZG9tLkVmZmVjdC5WaWV3cG9ydF9jaGFuZ2VkXSBldmVudCwgd2UgYXJlIG5vdGlmaWVkLiAqKVxuICAgICBsZXQgbW9kdWxlIF8gPVxuICAgICAgIFZkb20uRWZmZWN0LkRlZmluZV92aXNpYmlsaXR5IChzdHJ1Y3RcbiAgICAgICAgIGxldCBoYW5kbGUgPSB2aWV3cG9ydF9jaGFuZ2VkXG4gICAgICAgZW5kKVxuICAgICBpblxuICAgICBsZXQgZ2V0X3ZpZXcsIGdldF9hcHBseV9hY3Rpb24sIGdldF91cGRhdGVfdmlzaWJpbGl0eSwgZ2V0X29uX2Rpc3BsYXkgPVxuICAgICAgIGxldCBvYnMgPVxuICAgICAgICAgSW5jci5vYnNlcnZlXG4gICAgICAgICAgIChBcHAuY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6bW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgfmluamVjdDpFdmVudC5pbmplY3QpXG4gICAgICAgaW5cbiAgICAgICBsZXQgZmV0Y2ggKGYgOiBfIEFwcF9pbnRmLlByaXZhdGUuc25hcHNob3QgLT4gXykgKCkgPVxuICAgICAgICAgZiAoSW5jci5PYnNlcnZlci52YWx1ZV9leG4gb2JzKVxuICAgICAgIGluXG4gICAgICAgKCBmZXRjaCAoZnVuIHsgdmlldzsgXyB9IC0+IHZpZXcpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgYXBwbHlfYWN0aW9uOyBfIH0gLT4gYXBwbHlfYWN0aW9uKVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IHVwZGF0ZV92aXNpYmlsaXR5OyBfIH0gLT4gdXBkYXRlX3Zpc2liaWxpdHkpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgb25fZGlzcGxheTsgXyB9IC0+IG9uX2Rpc3BsYXkpIClcbiAgICAgaW5cbiAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgIGxldCBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPVxuICAgICAgIChcImFsbFwiLCBGbi5jb25zdCB0cnVlKSA6OiAoXCJub25lXCIsIEZuLmNvbnN0IGZhbHNlKSA6OiBuYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICAgICB8PiBTdHJpbmcuVGFibGUub2ZfYWxpc3RfZXhuXG4gICAgIGluXG4gICAgIGxldCB7IERlYnVnX2ZsYWdzLmxvZ2dpbmdfZmlsdGVyOyBzaG91bGRfcHJvZmlsZTsgc2hvdWxkX2RlYnVnIH0gPVxuICAgICAgIGxldCBmaWx0ZXJfbmFtZXMgPSBIYXNodGJsLmtleXMgbmFtZWRfbG9nZ2luZ19maWx0ZXJzIHw+IFN0cmluZy5TZXQub2ZfbGlzdCBpblxuICAgICAgIERlYnVnX2ZsYWdzLmluaXRfYXBwIH5hcHBfaWQ6YmluZF90b19lbGVtZW50X3dpdGhfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3BcbiAgICAgaW5cbiAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICBsZXQgaHRtbF9kb20gPSBWZG9tLk5vZGUudG9fZG9tIGh0bWwgaW5cbiAgICAgbGV0IGVsZW0gPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9leG4gYmluZF90b19lbGVtZW50X3dpdGhfaWQgaW5cbiAgICAgbGV0IHBhcmVudCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXSAoSnMuT3B0LnRvX29wdGlvbiBlbGVtIyMucGFyZW50Tm9kZSkgaW5cbiAgICAgRG9tLnJlcGxhY2VDaGlsZCBwYXJlbnQgaHRtbF9kb20gZWxlbTtcbiAgICAgKCogd2UgbWFrZSBzdXJlIHRvIGNhbGwgW3ZpZXdwb3J0X2NoYW5nZWRdIHdoZW5ldmVyIHRoZSB3aW5kb3cgcmVzaXplcyBvciB0aGUgc2Nyb2xsXG4gICAgICAgIGNvbnRhaW5lciBpbiB3aGljaCBvdXIgSFRNTCBpcyBsb2NhdGVkIGlzIHNjcm9sbGVkLiAqKVxuICAgICBsZXQgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IGV2ZW50X25hbWUgd2hlcmUgPVxuICAgICAgIGlnbm9yZVxuICAgICAgICAgKERvbS5hZGRFdmVudExpc3RlbmVyXG4gICAgICAgICAgICB3aGVyZVxuICAgICAgICAgICAgKERvbS5FdmVudC5tYWtlIGV2ZW50X25hbWUpXG4gICAgICAgICAgICAoRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICB2aWV3cG9ydF9jaGFuZ2VkICgpO1xuICAgICAgICAgICAgICAgSnMuX3RydWUpKVxuICAgICAgICAgICAgSnMuX2ZhbHNlXG4gICAgICAgICAgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gICAgIGluXG4gICAgIGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBcInNjcm9sbFwiIChKc19taXNjLmdldF9zY3JvbGxfY29udGFpbmVyIGh0bWxfZG9tKTtcbiAgICAgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IFwicmVzaXplXCIgRG9tX2h0bWwud2luZG93O1xuICAgICBsZXQlYmluZCBzdGF0ZSA9XG4gICAgICAgQXBwLm9uX3N0YXJ0dXBcbiAgICAgICAgIH5zY2hlZHVsZV9hY3Rpb246KGZ1biBhIC0+IFVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlIChFdmVudC5pbmplY3QgYSkpXG4gICAgICAgICAoSW5jci5WYXIudmFsdWUgbW9kZWxfdilcbiAgICAgaW5cbiAgICAgbGV0IHByZXZfaHRtbCA9IHJlZiBodG1sIGluXG4gICAgIGxldCBwcmV2X2VsdCA9IHJlZiBodG1sX2RvbSBpblxuICAgICBsZXQgcmVmb2N1c19yb290X2VsZW1lbnQgKCkgPVxuICAgICAgIGxldCBlbGVtZW50ID0gIXByZXZfZWx0IGluXG4gICAgICAgKCogSWYgdGhlIGVsZW1lbnQgdG8gZm9jdXMgaXMgYW4gZWxlbWVudCwgY2FzdCBpdCBpbnRvIHRoZVxuICAgICAgICAgIG1vcmUgcGVybWlzc2l2ZSBcImZvY3VzYWJsZVwiIHR5cGUgZGVmaW5lZCBhdCB0aGUgdG9wIG9mXG4gICAgICAgICAgdGhpcyBmaWxlLCBhbmQgdGhlbiBmb2N1cyB0aGF0LiAqKVxuICAgICAgIERvbV9odG1sLkNvZXJjZVRvLmVsZW1lbnQgZWxlbWVudFxuICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICB8PiBPcHRpb24ubWFwIH5mOmFzX2ZvY3VzYWJsZVxuICAgICAgIHw+IE9wdGlvbi5pdGVyIH5mOihmdW4gZWxlbWVudCAtPlxuICAgICAgICAgZWxlbWVudCMjZm9jdXNcbiAgICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgIHZhbCBwcmV2ZW50U2Nyb2xsID0gSnMuX3RydWVcbiAgICAgICAgICAgZW5kKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0YXJ0IHMgPVxuICAgICAgIHRpbWVyX3N0YXJ0IHMgfmRlYnVnOihzaG91bGRfZGVidWcgKCkpIH5wcm9maWxlOihzaG91bGRfcHJvZmlsZSAoKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0b3AgcyA9XG4gICAgICAgdGltZXJfc3RvcCBzIH5kZWJ1Zzooc2hvdWxkX2RlYnVnICgpKSB+cHJvZmlsZTooc2hvdWxkX3Byb2ZpbGUgKCkpXG4gICAgIGluXG4gICAgICgqXG4gICAgICAgIFRha2UgYWN0aW9uIG9uIGFueSBibHVyIGV2ZW50LCByZWZvY3VzaW5nIHRvIHRoZSByb290IG5vZGUgaWYgdGhlIHJlbGF0ZWRUYXJnZXQgaXNcbiAgICAgICAgbnVsbCBvciB1bmRlZmluZWQsIHNpZ25pZnlpbmcgdGhhdCBmb2N1cyB3YXMgbG9zdCBhbmQgd291bGQgb3RoZXJ3aXNlIGJlIHJlc2V0IHRvXG4gICAgICAgIHRoZSBib2R5IG5vZGUuXG5cbiAgICAgICAgVGhlIEpzLl90cnVlIHBhcmFtZXRlciBwcm92aWRlZCB0byBEb20uYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgdXNlQ2FwdHVyZVxuICAgICAgICBwYXJhbWV0ZXIgZGVzY3JpYmVkIGhlcmU6XG4gICAgICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyXG4gICAgICopXG4gICAgIGlnbm9yZVxuICAgICBAQCBEb20uYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgIERvbV9odG1sLndpbmRvd1xuICAgICAgICAgIERvbV9odG1sLkV2ZW50LmJsdXJcbiAgICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgICAoKiBbSnMuVW5zYWZlLipdIGlzIGxpa2UgW09iai5tYWdpY10uIFdlIHNob3VsZCBiZSBleHBsaWNpdCBhYm91dCB3aGF0IHdlXG4gICAgICAgICAgICAgICAgZXhwZWN0LiAqKVxuICAgICAgICAgICAgIGxldCBlXG4gICAgICAgICAgICAgICA6IDwgcmVsYXRlZFRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcCA+IEpzLnRcbiAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IHJlbGF0ZWRfdGFyZ2V0ID0gZSMjLnJlbGF0ZWRUYXJnZXQgaW5cbiAgICAgICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IHJlbGF0ZWRfdGFyZ2V0KSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpO1xuICAgICAgICAgICAgIEpzLl90cnVlKSlcbiAgICAgICAgICBKcy5fdHJ1ZTtcbiAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ICgpID1cbiAgICAgICBWaXNpYmlsaXR5Lm1hcmtfY2xlYW4gdmlzaWJpbGl0eTtcbiAgICAgICBsZXQgbmV3X21vZGVsID1cbiAgICAgICAgIChnZXRfdXBkYXRlX3Zpc2liaWxpdHkgKCkpXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgaW5cbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfdiBuZXdfbW9kZWw7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCJcbiAgICAgaW5cbiAgICAgbGV0IG1heWJlX2xvZ19hY3Rpb24gPVxuICAgICAgIGxldCBzYWZlX2ZpbHRlciB+bmFtZSBmaWx0ZXIgYWN0aW9uID1cbiAgICAgICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gZmlsdGVyIGFjdGlvbikgd2l0aFxuICAgICAgICAgfCBPayBzaG91bGRfbG9nIC0+IHNob3VsZF9sb2dcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgIHByaW50X2Vycm9yZiAhXCJFeGNlcHRpb24gcmFpc2VkIGJ5ICVzOiAle0Vycm9yI2h1bX1cIiBuYW1lIGVycjtcbiAgICAgICAgICAgZmFsc2VcbiAgICAgICBpblxuICAgICAgIGxldCBuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUgPVxuICAgICAgICAgQ29yZS5NZW1vLm9mX2NvbXBhcmFibGVcbiAgICAgICAgICAgKG1vZHVsZSBMb2dnaW5nX2ZpbHRlci5TdHJpbmdfYmxhbmcpXG4gICAgICAgICAgIChmdW4gYmxhbmcgLT5cbiAgICAgICAgICAgICAgbGV0IGZpbHRlciA9IEhhc2h0YmwuZmluZF9leG4gbmFtZWRfbG9nZ2luZ19maWx0ZXJzIGluXG4gICAgICAgICAgICAgIHNhZmVfZmlsdGVyXG4gICAgICAgICAgICAgICAgfm5hbWU6KHNwcmludGYgIVwibmFtZWQgZmlsdGVyIGJsYW5nIFxcXCIle3NleHA6c3RyaW5nIEJsYW5nLnR9XFxcIlwiIGJsYW5nKVxuICAgICAgICAgICAgICAgIChtYXRjaCBibGFuZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQmFzZSBuYW1lIC0+IGZpbHRlciBuYW1lXG4gICAgICAgICAgICAgICAgIHwgXyAtPiBmdW4gYWN0aW9uIC0+IEJsYW5nLmV2YWwgYmxhbmcgKGZ1biBuYW1lIC0+IGZpbHRlciBuYW1lIGFjdGlvbikpKVxuICAgICAgIGluXG4gICAgICAgZnVuIGFjdGlvbiAtPlxuICAgICAgICAgbGV0IHNob3VsZF9sb2dfYWN0aW9uID1cbiAgICAgICAgICAgbWF0Y2ggbG9nZ2luZ19maWx0ZXIgKCkgd2l0aFxuICAgICAgICAgICB8IEFsbCAtPiB0cnVlXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBibGFuZyAtPiBuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUgYmxhbmcgYWN0aW9uXG4gICAgICAgICAgIHwgQ3VzdG9tX2ZpbHRlciBmaWx0ZXIgLT5cbiAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgfm5hbWU6XCJjdXN0b20gZmlsdGVyXCJcbiAgICAgICAgICAgICAgIChmdW4gYWN0aW9uIC0+IGZpbHRlciAoQXBwLkFjdGlvbi5zZXhwX29mX3QgYWN0aW9uKSlcbiAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIGlmIHNob3VsZF9sb2dfYWN0aW9uXG4gICAgICAgICB0aGVuIEFzeW5jX2pzLmxvZ19zX2FzX3N0cmluZyBbJW1lc3NhZ2UgXCJBY3Rpb25cIiAoYWN0aW9uIDogQXBwLkFjdGlvbi50KV1cbiAgICAgaW5cbiAgICAgbGV0IGFwcGx5X2FjdGlvbiBhY3Rpb24gPVxuICAgICAgIG1heWJlX2xvZ19hY3Rpb24gYWN0aW9uO1xuICAgICAgIGlmIEFwcC5hY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiBhY3Rpb25cbiAgICAgICB0aGVuIChcbiAgICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplLWZvci1hY3Rpb25cIjtcbiAgICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCIpXG4gICAgICAgZWxzZSBpZiBzaG91bGRfZGVidWcgKClcbiAgICAgICB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcImFjdGlvbiBhcHBsaWVkIHdpdGhvdXQgc3RhYmlsaXppbmdcIik7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X2FwcGx5X2FjdGlvbiAoKSlcbiAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlXG4gICAgICAgICAgIChJbmNyLlZhci5sYXRlc3RfdmFsdWUgbW9kZWxfdilcbiAgICAgICAgICAgYWN0aW9uXG4gICAgICAgaW5cbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfdiBuZXdfbW9kZWxcbiAgICAgaW5cbiAgICAgbGV0IHJlYyBhcHBseV9hY3Rpb25zICgpID1cbiAgICAgICBtYXRjaCBEZXF1ZS5kZXF1ZXVlX2Zyb250IGFjdGlvbl9xdWV1ZSB3aXRoXG4gICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgfCBTb21lIGFjdGlvbiAtPlxuICAgICAgICAgYXBwbHlfYWN0aW9uIGFjdGlvbjtcbiAgICAgICAgIGFwcGx5X2FjdGlvbnMgKClcbiAgICAgaW5cbiAgICAgbGV0IHBlcmZvcm1fdXBkYXRlICgpID1cbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgICgqIFRoZSBjbG9jayBpcyBzZXQgb25seSBvbmNlIHBlciBjYWxsIHRvIHBlcmZvcm1fdXBkYXRlLCBzbyB0aGF0IGFsbCBhY3Rpb25zIHRoYXRcbiAgICAgICAgICBvY2N1ciBiZWZvcmUgZWFjaCBkaXNwbGF5IHVwZGF0ZSBvY2N1ciBcImF0IHRoZSBzYW1lIHRpbWUuXCIgKilcbiAgICAgICBsZXQgbm93ID1cbiAgICAgICAgIGxldCBkYXRlID0gbmV3JWpzIEpzLmRhdGVfbm93IGluXG4gICAgICAgICBUaW1lX25zLlNwYW4ub2ZfbXMgZGF0ZSMjZ2V0VGltZSB8PiBUaW1lX25zLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAgICBpblxuICAgICAgIEluY3IuQ2xvY2suYWR2YW5jZV9jbG9jayBJbmNyLmNsb2NrIH50b186bm93O1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInRvdGFsXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ1cGRhdGUgdmlzaWJpbGl0eVwiO1xuICAgICAgIGlmIFZpc2liaWxpdHkuaXNfZGlydHkgdmlzaWJpbGl0eSB0aGVuIHVwZGF0ZV92aXNpYmlsaXR5ICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJ1cGRhdGUgdmlzaWJpbGl0eVwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwiYXBwbHkgYWN0aW9uc1wiO1xuICAgICAgIGFwcGx5X2FjdGlvbnMgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIjtcbiAgICAgICBsZXQgaHRtbCA9IGdldF92aWV3ICgpIGluXG4gICAgICAgbGV0IGh0bWwgPSBvdmVycmlkZV9yb290X2VsZW1lbnQgaHRtbCBpblxuICAgICAgIHRpbWVyX3N0YXJ0IFwiZGlmZlwiO1xuICAgICAgIGxldCBwYXRjaCA9IFZkb20uTm9kZS5QYXRjaC5jcmVhdGUgfnByZXZpb3VzOiFwcmV2X2h0bWwgfmN1cnJlbnQ6aHRtbCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJkaWZmXCI7XG4gICAgICAgaWYgbm90IChWZG9tLk5vZGUuUGF0Y2guaXNfZW1wdHkgcGF0Y2gpIHRoZW4gVmlzaWJpbGl0eS5tYXJrX2RpcnR5IHZpc2liaWxpdHk7XG4gICAgICAgdGltZXJfc3RhcnQgXCJwYXRjaFwiO1xuICAgICAgIGxldCBlbHQgPSBWZG9tLk5vZGUuUGF0Y2guYXBwbHkgcGF0Y2ggIXByZXZfZWx0IGluXG4gICAgICAgdGltZXJfc3RvcCBcInBhdGNoXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgKGdldF9vbl9kaXNwbGF5ICgpKSBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGU7XG4gICAgICAgdGltZXJfc3RvcCBcIm9uX2Rpc3BsYXlcIjtcbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiAoSW5jci5WYXIudmFsdWUgbW9kZWxfdik7XG4gICAgICAgbGV0IG9sZF90YWdfbmFtZSA9IGdldF90YWdfbmFtZSAhcHJldl9odG1sIGluXG4gICAgICAgbGV0IG5ld190YWdfbmFtZSA9IGdldF90YWdfbmFtZSBodG1sIGluXG4gICAgICAgbGV0IHRhZ3NfdGhlX3NhbWUgPSBPcHRpb24uZXF1YWwgU3RyaW5nLmVxdWFsIG9sZF90YWdfbmFtZSBuZXdfdGFnX25hbWUgaW5cbiAgICAgICBwcmV2X2h0bWwgOj0gaHRtbDtcbiAgICAgICBwcmV2X2VsdCA6PSBlbHQ7XG4gICAgICAgdGltZXJfc3RvcCBcInRvdGFsXCI7XG4gICAgICAgaWYgc2hvdWxkX2RlYnVnICgpIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIFwiLS0tLS0tLVwiKTtcbiAgICAgICAoKiBDaGFuZ2luZyB0aGUgdGFnIG5hbWUgY2F1c2VzIGZvY3VzIHRvIGJlIGxvc3QuICBSZWZvY3VzIGluIHRoYXQgY2FzZS4gKilcbiAgICAgICBpZiBub3QgdGFnc190aGVfc2FtZSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpXG4gICAgIGluXG4gICAgICgqIFdlIHVzZSBbcmVxdWVzdF9hbmltYXRpb25fZnJhbWVdIHNvIHRoYXQgYnJvd3NlciB0ZWxscyB1cyB3aGVyZSBpdCdzIHRpbWUgdG9cbiAgICAgICAgcmVmcmVzaCB0aGUgVUkuIEFsbCB0aGUgYWN0aW9ucyB3aWxsIGJlIHByb2Nlc3NlZCBhbmQgdGhlIGNoYW5nZXMgcHJvcGFnYXRlZFxuICAgICAgICB0byB0aGUgRE9NIGluIG9uZSBmcmFtZS4gKilcbiAgICAgbGV0IHJlYyBjYWxsYmFjayAoKSA9XG4gICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgICAgdGhlbiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgcGVyZm9ybV91cGRhdGUgKCk7XG4gICAgICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjaylcbiAgICAgaW5cbiAgICAgKCogV2Ugd2FudCB0aGUgcm9vdCBlbGVtZW50IHRvIHN0YXJ0IG91dCBmb2N1c2VkLCBzbyBwZXJmb3JtIGFuIGluaXRpYWxcbiAgICAgICAgdXBkYXRlL3JlbmRlciwgdGhlbiBpbW1lZGlhdGVseSBmb2N1cyB0aGUgcm9vdCAodW5sZXNzIGEgbm9uLWJvZHkgZWxlbWVudCBhbHJlYWR5XG4gICAgICAgIGhhcyBmb2N1cykuICBUaGlzIGZvY3VzaW5nIGNhbid0IGhhcHBlbiBpbnNpZGUgb2YgdGhlIGBjYWxsYmFja2AgYmVjYXVzZSB0aGVuIGl0XG4gICAgICAgIHdvdWxkIHJlZm9jdXMgcm9vdCBldmVyeSBmcmFtZS4gICopXG4gICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAobWF0Y2ggSnMuT3B0LnRvX29wdGlvbiBEb21faHRtbC5kb2N1bWVudCMjLmFjdGl2ZUVsZW1lbnQgd2l0aFxuICAgICAgfCBTb21lIGVsIC0+IGlmIEpzLk9wdC50ZXN0IChEb21faHRtbC5Db2VyY2VUby5ib2R5IGVsKSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpXG4gICAgICB8IE5vbmUgLT4gcmVmb2N1c19yb290X2VsZW1lbnQgKCkpO1xuICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjaztcbiAgICAgRGVmZXJyZWQubmV2ZXIgKCkpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc3RhcnRfYm9uc2FpID0gc3RhcnRfYm9uc2FpXG5lbmRcblxubGV0IHN0YXJ0XG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlMgd2l0aCB0eXBlIE1vZGVsLnQgPSBtb2RlbCBhbmQgdHlwZSBBY3Rpb24udCA9IGFjdGlvbilcbiAgPVxuICBzdGFydF9ib25zYWlcbiAgICB+ZGVidWdcbiAgICB+c3RvcFxuICAgIH5uYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICB+aW5pdGlhbF9tb2RlbFxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBpbmNsdWRlIEFwcFxuXG4gICAgICBsZXQgYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gXyA9IHRydWVcblxuICAgICAgbGV0IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsIH5pbmplY3QgPVxuICAgICAgICBsZXQgb3BlbiBJbmNyLkxldF9zeW50YXggaW5cbiAgICAgICAgbGV0JW1hcCBjb21wb25lbnQgPSBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0IGluXG4gICAgICAgIGxldCB2aWV3ID0gQ29tcG9uZW50LnZpZXcgY29tcG9uZW50IGluXG4gICAgICAgIGxldCBhcHBseV9hY3Rpb24gc3RhdGUgfnNjaGVkdWxlX2V2ZW50IF9tb2RlbCBhY3Rpb24gPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQuYXBwbHlfYWN0aW9uIGNvbXBvbmVudCBhY3Rpb24gc3RhdGUgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgX21vZGVsIH5zY2hlZHVsZV9ldmVudCA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC51cGRhdGVfdmlzaWJpbGl0eSBjb21wb25lbnQgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgb25fZGlzcGxheSBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQub25fZGlzcGxheSBjb21wb25lbnQgc3RhdGUgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICB7IEFwcF9pbnRmLlByaXZhdGUudmlldzsgYXBwbHlfYWN0aW9uOyB1cGRhdGVfdmlzaWJpbGl0eTsgb25fZGlzcGxheSB9XG4gICAgICA7O1xuICAgIGVuZClcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gVmlydHVhbF9kb20uVmRvbVxuaW5jbHVkZSBWZG9tX2lucHV0X3dpZGdldHNfaW50ZlxuXG5tb2R1bGUgTWVyZ2VfYmVoYXZpb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE1lcmdlXG4gICAgfCBMZWdhY3lfZG9udF9tZXJnZVxuZW5kXG5cbm1vZHVsZSBEZWNpbWFsID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSB0KVxuICAgIHRoZW4gZmFpbHdpdGhmIFwiQ2Fubm90IHJlcHJlc2VudCBub24tZmluaXRlIGZsb2F0IGFzIGRlY2ltYWw6ICVmXCIgdCAoKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHQgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgIGludmFyaWFudCB0O1xuICAgIHNwcmludGYgXCIlLjEyZ1wiIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVkID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBJbml0aWFsXG4gICAgKCogVGhpcyBpcyB1c2VkIHRvIGF2b2lkIG1hcmtpbmcgYXMgaW52YWxpZCBhIGZpZWxkIHRoYXQgaGFzbid0IGV2ZXIgYmVlblxuICAgICAgIHRvdWNoZWQgYnkgdGhlIHVzZXIsIHRvIGltcHJvdmUgVVguICopXG4gICAgfCBWYWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgIHwgSW52YWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nXG4gICAgICAgIDsgbGFzdF92YWxpZCA6ICdhIG9wdGlvblxuICAgICAgICA7IGVycm9yIDogc3RyaW5nXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICB0eXBlICdhIHVwZGF0ZSA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgbGlmdCAodHlwZSBhKSAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBhIHRcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgSW5pdGlhbCAtPiBcIlwiXG4gICAgICAgIHwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgPSBfIH0gLT4gaW5wdXRcbiAgICAgICAgfCBWYWxpZCB7IGlucHV0OyB2YWx1ZSB9IC0+XG4gICAgICAgICAgKG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgICAgfCBTb21lIGlucHV0IC0+IGlucHV0XG4gICAgICAgICAgIHwgTm9uZSAtPiBNLnRvX3N0cmluZyB2YWx1ZSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBWYWxpZCB7IGlucHV0ID0gU29tZSBzOyB2YWx1ZSA9IE0ub2Zfc3RyaW5nIHMgfSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IEludmFsaWQgeyBpbnB1dCA9IHM7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciA9IEV4bi50b19zdHJpbmcgZXhuIH1cbiAgICAgIDs7XG4gICAgZW5kIDogU3RyaW5nYWJsZS5TXG4gICAgICB3aXRoIHR5cGUgdCA9IGEgdClcbiAgOztcblxuICBsZXQgaW5pdGlhbF9lbXB0eSA9IEluaXRpYWxcbiAgbGV0IHJldHVybiB2YWx1ZSA9IFZhbGlkIHsgaW5wdXQgPSBOb25lOyB2YWx1ZSB9XG5cbiAgbGV0IGdldF9jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSB9IC0+IFNvbWUgdmFsdWVcbiAgICB8IEludmFsaWQgXyB8IEluaXRpYWwgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgfSAtPiBTb21lIHZhbHVlXG4gICAgfCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfSAtPiBsYXN0X3ZhbGlkXG4gICAgfCBJbml0aWFsIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb25cbiAgICB8IEluaXRpYWwgfCBWYWxpZCBfIC0+IE5vbmVcbiAgICB8IEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+IFNvbWUgZXJyb3JcbiAgOztcblxuICBsZXQgaXNfaW52YWxpZCA9IGZ1bmN0aW9uXG4gICAgfCBJbnZhbGlkIF8gLT4gdHJ1ZVxuICAgIHwgVmFsaWQgXyB8IEluaXRpYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfaW5pdGlhbF9lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBJbml0aWFsIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgdXBkYXRlIG9sZCBuZXdfID1cbiAgICBtYXRjaCBvbGQsIG5ld18gd2l0aFxuICAgIHwgSW5pdGlhbCwgXyAtPiBuZXdfXG4gICAgfCBfLCBWYWxpZCBfIC0+IG5ld19cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSA9IG9sZCB9LCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+XG4gICAgICBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBTb21lIG9sZDsgZXJyb3IgfVxuICAgIHwgKCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfVxuICAgICAgLCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciB9ICkgLT5cbiAgICAgIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZDsgZXJyb3IgfVxuICAgIHwgSW52YWxpZCBfLCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkID0gU29tZSBfOyBlcnJvciA9IF8gfSAtPiBuZXdfXG4gICAgfCBfLCBJbml0aWFsIC0+IG9sZFxuICA7O1xuZW5kXG5cbmxldCBtYXliZV9pbnZhbGlkIHZhbGlkYXRlZCBhdHRycyA9XG4gIGlmIFZhbGlkYXRlZC5pc19pbnZhbGlkIHZhbGlkYXRlZFxuICB0aGVuIEF0dHIuY3JlYXRlIFwiYXJpYS1pbnZhbGlkXCIgXCJ0cnVlXCIgOjogYXR0cnNcbiAgZWxzZSBhdHRyc1xuOztcblxubW9kdWxlIFRpbWVfY29tcGF0ID0gc3RydWN0XG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFRpbWVfbnMuT2ZkYXkudFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkub2Zfc3RyaW5nXG5cbiAgICAoKiBUaGUgYnJvd3NlciBleHBlY3RzIGEgSEg6bW0gZm9ybWF0IHdpdGggb3B0aW9uYWwgdHJhaWxpbmcgXCI6c3NcIiBvciBcIjpzcy5TU1NcIjtcbiAgICAgICBbVGltZV9ucy5PZmRheS50b19zdHJpbmddIHByb3ZpZGVzIHByZWNpc2lvbiBpbiBuYW5vc2Vjb25kcywgd2hpY2ggaXMgdG9vIG11Y2guICopXG4gICAgbGV0IHRvX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkudG9fbWlsbGlzZWNvbmRfc3RyaW5nXG4gIGVuZFxuXG4gIGxldCB6b25lZCB6b25lIDogKG1vZHVsZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBUaW1lX25zLnQpID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVGltZV9ucy50XG5cbiAgICAgICgqIEZvcm1hdCBmcm9tIHRoZSBicm93c2VyOiB5eXl5LU1NLWRkVGhoOm1tICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgcGFydHMgPSBTdHJpbmcuc3BsaXRfb25fY2hhcnMgcyB+b246WyAnVCc7ICc6JyBdIGluXG4gICAgICAgIGxldCBkYXRlID0gTGlzdC5udGhfZXhuIHBhcnRzIDAgfD4gRGF0ZS5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IGhyID0gTGlzdC5udGhfZXhuIHBhcnRzIDEgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgbWluID0gTGlzdC5udGhfZXhuIHBhcnRzIDIgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBUaW1lX25zLk9mZGF5LmNyZWF0ZSB+aHIgfm1pbiAoKSBpblxuICAgICAgICBUaW1lX25zLm9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IHMgPSBUaW1lX25zLnRvX3N0cmluZ19pc284NjAxX2Jhc2ljIH56b25lIHQgaW5cbiAgICAgICAgKCogVGhlIGJyb3dzZXIgZXhwZWN0IGEgeXl5eS1NTS1kZFRoaDptbSBmb3JtYXQgYW5kIGl0IGFsbG93c1xuICAgICAgICAgICB0cmFpbGluZyBcIjpzc1wiIG9yIFwiOnNzLlNTU1wiLlxuXG4gICAgICAgICAgIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIGZvcm1hdDogMjAxOS0wMS0zMFQwMTowMDowMC4wMDAwMDAwMDArMDE6MDBcblxuICAgICAgICAgICBkZXNpcmVkIGZvcm1hdCBhZnRlciBjdXR0aW5nOiAgIDIwMTktMDEtMzBUMDE6MDA6MDBcbiAgICAgICAgKilcbiAgICAgICAgU3RyaW5nLmxzcGxpdDJfZXhuIH5vbjonLicgcyB8PiBUdXBsZTIuZ2V0MVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubGV0IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZCBhdHRycyA9IGlmIGRpc2FibGVkIHRoZW4gQXR0ci5kaXNhYmxlZCA6OiBhdHRycyBlbHNlIGF0dHJzXG5sZXQgYWRkX2F0dHJzIGF0dHJzJyBhdHRycyA9IGF0dHJzIEAgYXR0cnMnIHw+IEF0dHJzLm1lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc1xuXG5sZXQgbWVyZ2UgPSBmdW5jdGlvblxuICB8IE1lcmdlX2JlaGF2aW9yLk1lcmdlIC0+IEF0dHIubWFueVxuICB8IExlZ2FjeV9kb250X21lcmdlIC0+IEF0dHIubWFueV93aXRob3V0X21lcmdlXG47O1xuXG5sZXQgc3RydWN0dXJhbF9saXN0XG4gICAgICA/KG9yaWVudGF0aW9uID0gYFZlcnRpY2FsKVxuICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgYXR0cnNcbiAgICAgIGNoaWxkcmVuXG4gID1cbiAgbGV0IGxheW91dF9zdHlsZSA9XG4gICAgbWF0Y2ggb3JpZW50YXRpb24gd2l0aFxuICAgIHwgYFZlcnRpY2FsIC0+IENzc19nZW4uKGRpc3BsYXkgYEJsb2NrKVxuICAgIHwgYEhvcml6b250YWwgLT4gQ3NzX2dlbi4oZGlzcGxheSBgSW5saW5lX2Jsb2NrKVxuICBpblxuICBOb2RlLnVsXG4gICAgfmF0dHJzOlxuICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgKFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImxpc3Qtc3R5bGVcIiB+dmFsdWU6XCJub25lXCIgQD4gbWFyZ2luX2xlZnQgKGBQeCAwKSlcbiAgICAgICAgICAgXVxuICAgICAgICAgICB8PiBhZGRfYXR0cnMgYXR0cnMpXG4gICAgICBdXG4gICAgKExpc3QubWFwIGNoaWxkcmVuIH5mOihmdW4gY2hpbGQgLT5cbiAgICAgICBOb2RlLmxpIH5hdHRyczpbIEF0dHIuc3R5bGUgbGF5b3V0X3N0eWxlIF0gWyBjaGlsZCBdKSlcbjs7XG5cbm1vZHVsZSBWYWx1ZV9ub3JtYWxpemluZ19ob29rID0gc3RydWN0XG4gIG1vZHVsZSBVbnNhZmUgPSBKc19vZl9vY2FtbC5Kcy5VbnNhZmVcbiAgb3BlbiBKc19vZl9vY2FtbFxuICBvcGVuIEpzX29mX29jYW1sLkRvbV9odG1sXG5cbiAgbGV0IGlzX2FjdGl2ZSBlbGVtZW50ID1cbiAgICBsZXQgZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQgPSBVbnNhZmUuZ2V0IGRvY3VtZW50IChKcy5zdHJpbmcgXCJhY3RpdmVFbGVtZW50XCIpIGluXG4gICAgcGh5c19lcXVhbCBlbGVtZW50IGRvY3VtZW50X2FjdGl2ZV9lbGVtZW50XG4gIDs7XG5cbiAgbGV0IHZhbHVlX3Byb3BlcnR5ID0gSnMuc3RyaW5nIFwidmFsdWVcIlxuICBsZXQgZ2V0X3ZhbHVlIGVsZW1lbnQgOiAnYSBKcy50ID0gVW5zYWZlLmdldCBlbGVtZW50IHZhbHVlX3Byb3BlcnR5XG4gIGxldCBzZXRfdmFsdWUgZWxlbWVudCB2YWx1ZSA9IFVuc2FmZS5zZXQgZWxlbWVudCB2YWx1ZV9wcm9wZXJ0eSB2YWx1ZVxuXG4gIGxldCBpbnN0YWxsX2V2ZW50X2hhbmRsZXIgZWxlbWVudCB+ZiA9XG4gICAgKCogVGhpcyBldmVudCBoYW5kbGVyIG5vcm1hbGl6ZXMgdGhlIHZhbHVlIG9uIHRoZSBpbnB1dCBlbGVtZW50IG9uIHRoZSBbY2hhbmdlXSBldmVudC5cbiAgICAgICBGb3IgYSB0ZXh0IGVudHJ5LCB0aGlzIG1lYW5zIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlciwgYW5kIHdoZW4gdGhlIHVzZXIgYmx1cnNcbiAgICAgICB0aGUgZWxlbWVudC4gV2h5IGRvbid0IHdlIHNpbXBseSBbdG9fc3RyaW5nXSB0aGUgdmFsdWUgaW4gdGhlIG1vZGVsPyBCZWNhdXNlIGZvclxuICAgICAgIHNvbWUgaW5wdXQgZWxlbWVudHMsIHlvdSBjYW4gaGF2ZSBhIGNoYW5nZSBldmVudCB0aGF0IGZpcmVzIGFmdGVyIHRoZSB2YWx1ZSBjaGFuZ2VzXG4gICAgICAgYnV0IGJlZm9yZSBbSW5jcl9kb21dIGNhbiB1cGRhdGUgdGhlIG1vZGVsLiBGb3IgZXhhbXBsZSwgdGhpcyBoYXBwZW5zIHdoZW4geW91XG4gICAgICAgcHJlc3MgdGhlIHVwIGFycm93IG9uIGEgbnVtYmVyIGlucHV0LiBUaGlzIGxlYWRzIHRvIGEgYnVnIHdoZXJlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgICAgICBtb2RlbCBzd2FwcyBiYWNrIGFuZCBmb3J0aCB3aXRoIHRoZSB2YWx1ZSBpbiB0aGUgZWxlbWVudC4gKilcbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgXyA9XG4gICAgICBsZXQgdmFsdWUgPSBKcy50b19zdHJpbmcgKGdldF92YWx1ZSBlbGVtZW50KSBpblxuICAgICAgT3B0aW9uLml0ZXIgKGYgdmFsdWUpIH5mOihmdW4gbm9ybWFsaXplZCAtPlxuICAgICAgICBzZXRfdmFsdWUgZWxlbWVudCAoSnMuc3RyaW5nIG5vcm1hbGl6ZWQpKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgPSBEb20uaGFuZGxlciBjaGFuZ2VfaGFuZGxlciBpblxuICAgIGFkZEV2ZW50TGlzdGVuZXIgZWxlbWVudCBFdmVudC5jaGFuZ2UgY2hhbmdlX2hhbmRsZXIgSnMuX2ZhbHNlXG4gIDs7XG5cbiAgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBldmVudF9pZCA6IGV2ZW50X2xpc3RlbmVyX2lkIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyB2YWx1ZSA6IHN0cmluZ1xuICAgICAgICA7IGYgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgICB9XG5cbiAgICAgIGxldCBzZXhwX29mX3QgeyB2YWx1ZTsgXyB9ID0gU2V4cC5BdG9tIHZhbHVlXG4gICAgICBsZXQgY29tYmluZSBfbGVmdCByaWdodCA9IHJpZ2h0XG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCB7IElucHV0LnZhbHVlOyBmIH0gZWxlbWVudCA9XG4gICAgICBpZiBub3QgKGlzX2FjdGl2ZSBlbGVtZW50KSB0aGVuIHNldF92YWx1ZSBlbGVtZW50IChKcy5zdHJpbmcgdmFsdWUpO1xuICAgICAgbGV0IGV2ZW50X2lkID0gaW5zdGFsbF9ldmVudF9oYW5kbGVyIGVsZW1lbnQgfmYgaW5cbiAgICAgIHsgU3RhdGUuZXZlbnRfaWQgfVxuICAgIDs7XG5cbiAgICBsZXQgb25fbW91bnQgX2lucHV0IF9zdGF0ZSBfZWxlbWVudCA9ICgpXG5cbiAgICBsZXQgZGVzdHJveSBfaW5wdXQgeyBTdGF0ZS5ldmVudF9pZCB9IF9lbGVtZW50ID0gcmVtb3ZlRXZlbnRMaXN0ZW5lciBldmVudF9pZFxuICAgIFtAQG9jYW1sLndhcm5pbmdcbiAgICAgICBcIi02OFwiXVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dCBzdGF0ZSBlbGVtZW50ID1cbiAgICAgIGRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgICBsZXQgeyBTdGF0ZS5ldmVudF9pZCB9ID0gaW5pdCBuZXdfaW5wdXQgZWxlbWVudCBpblxuICAgICAgc3RhdGUuU3RhdGUuZXZlbnRfaWQgPC0gZXZlbnRfaWRcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIEF0dHIuSG9va3MuTWFrZSAoTSlcblxuICAoKiBbY3JlYXRlIHZhbHVlIH5mXSB3aWxsIHNldCB0aGUgXCJ2YWx1ZVwiIHByb3BlcnR5IHRvIFt2YWx1ZV0gaWYgdGhlIGVsZW1lbnQgaXMgbm90XG4gICAgIGZvY3VzZWQgYW5kIG9uIGVhY2ggY2hhbmdlLCBydW4gdGhlIGN1cnJlbnQgdmFsdWUgdGhyb3VnaCBbZl0gdG8gcmUtc2V0IGl0LiBBZ2FpbixcbiAgICAgdGhpcyBvbmx5IGhhcHBlbnMgaWYgdGhlIGVsZW1lbnQgaXMgbm90IGZvY3VzZWQuIElmIFtmXSByZXR1cm5zIFtOb25lXSwgbm8gY2hhbmdlXG4gICAgIHRha2VzIHBsYWNlLiAqKVxuICBsZXQgY3JlYXRlIHZhbHVlIH5mID0gQXR0ci5jcmVhdGVfaG9vayBcInZhbHVlOm5vcm1hbGl6ZWRcIiAoY3JlYXRlIHsgdmFsdWU7IGYgfSlcbmVuZFxuXG5tb2R1bGUgRHJvcGRvd24gPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGV4dHJhX29wdGlvbl9hdHRycyA9IEZuLmNvbnN0IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIE5vZGUuc2VsZWN0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci5jbGFzc18gXCJ3aWRnZXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgIDsgQXR0ci5vbl9jaGFuZ2UgKGZ1biBfIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgIG9uX2NoYW5nZSAoSW50Lm9mX3N0cmluZyB2YWx1ZSB8PiBMaXN0Lm50aF9leG4gdmFsdWVzKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoTGlzdC5tYXBpIHZhbHVlcyB+ZjooZnVuIGluZGV4IHZhbHVlIC0+XG4gICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAgKFsgQXR0ci52YWx1ZSAoSW50LnRvX3N0cmluZyBpbmRleClcbiAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIChlcXVhbCB2YWx1ZSBzZWxlY3RlZClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBAIGV4dHJhX29wdGlvbl9hdHRycyB2YWx1ZSlcbiAgICAgICAgICAgWyBOb2RlLnRleHQgKHRvX3N0cmluZyB2YWx1ZSkgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuXG4gIGxldCBvZl92YWx1ZXNfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICAobW9kdWxlIE0gOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCB2YWx1ZXMgfmY6T3B0aW9uLnNvbWUgaW5cbiAgICBsZXQgdG9fc3RyaW5nID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDpwbGFjZWhvbGRlciB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGxldCBleHRyYV9vcHRpb25fYXR0cnMgPVxuICAgICAgT3B0aW9uLm1hcCBleHRyYV9vcHRpb25fYXR0cnMgfmY6KGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgdmFsdWUgLT4gZiB2YWx1ZSlcbiAgICBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIE0uYWxsXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bV9vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCBNLmFsbCB+ZjpPcHRpb24uc29tZSBpblxuICAgIGxldCB0b19zdHJpbmcgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OnBsYWNlaG9sZGVyIH5mOk0udG9fc3RyaW5nIGluXG4gICAgbGV0IGV4dHJhX29wdGlvbl9hdHRycyA9XG4gICAgICBPcHRpb24ubWFwIGV4dHJhX29wdGlvbl9hdHRycyB+ZjooZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSB2YWx1ZSAtPiBmIHZhbHVlKVxuICAgIGluXG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOlslZXF1YWw6IE0udCBvcHRpb25dXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZWxlY3RhYmxlX3N0eWxlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOYXRpdmVcbiAgICB8IEJ1dHRvbl9saWtlIG9mIHsgZXh0cmFfYXR0cnMgOiBjaGVja2VkOmJvb2wgLT4gQXR0ci50IGxpc3QgfVxuXG4gIGxldCBiYXJlYm9uZXNfYnV0dG9uX2xpa2UgPVxuICAgIEJ1dHRvbl9saWtlXG4gICAgICB7IGV4dHJhX2F0dHJzID1cbiAgICAgICAgICAoZnVuIH5jaGVja2VkIC0+XG4gICAgICAgICAgICAgaWYgY2hlY2tlZFxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgIENzc19nZW4uKFxuICAgICAgICAgICAgICAgICAgICAgYm9yZGVyIH53aWR0aDooYFB4IDEpIH5jb2xvcjooYEhleCBcIiNEMEQwRDBcIikgfnN0eWxlOmBTb2xpZCAoKVxuICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiM0MDQwNDBcIilcbiAgICAgICAgICAgICAgICAgICAgIEA+IGNvbG9yIChgSGV4IFwiI0Y3RjdGN1wiKSlcbiAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLihcbiAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjRUZFRkVGXCIpKVxuICAgICAgICAgICAgICAgXSlcbiAgICAgIH1cbiAgOztcblxuICBsZXQgaGlkZV9uYXRpdmVfaW5wdXRzID1cbiAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwiYXBwZWFyYW5jZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiB1bmlmb3JtX21hcmdpbiAoYFB4IDApKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2JveCA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfmxhYmVsXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmxhYmVsXG4gICAgICB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIGV4dHJhX2F0dHJzIF1cbiAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJjaGVja2JveFwiXG4gICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSlcbiAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBpc19jaGVja2VkXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAoKVxuICAgICAgOyBOb2RlLnRleHQgbGFiZWxcbiAgICAgIF1cbiAgOztcblxuICBsZXQgc2ltcGxlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+bGFiZWxcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmRpdlxuICAgICAgfmF0dHJzOlsgQXR0ci5jbGFzc18gXCJjaGVja2JveC1jb250YWluZXJcIiBdXG4gICAgICBbIGltcGwgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSB+bWVyZ2VfYmVoYXZpb3IgKCkgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2xpc3QgPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhzdHlsZSA9IFNlbGVjdGFibGVfc3R5bGUuTmF0aXZlKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgP2xheW91dFxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgID1cbiAgICBsZXQgaW5wdXRfYXR0cnMsIGxhYmVsX2F0dHJzID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTmF0aXZlIC0+IFtdLCBmdW4gfmNoZWNrZWQ6XyAtPiBbXVxuICAgICAgfCBCdXR0b25fbGlrZSB7IGV4dHJhX2F0dHJzIH0gLT5cbiAgICAgICAgWyBBdHRyLnN0eWxlIFNlbGVjdGFibGVfc3R5bGUuaGlkZV9uYXRpdmVfaW5wdXRzIF0sIGV4dHJhX2F0dHJzXG4gICAgaW5cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgP29yaWVudGF0aW9uOmxheW91dFxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtY2hlY2tsaXN0XCI7IFwiY2hlY2tib3gtY29udGFpbmVyXCIgXSBdXG4gICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgKExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIGl0ZW0gLT5cbiAgICAgICAgIE5vZGUubGFiZWxcbiAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgICAgICAoZXh0cmFfYXR0cnMgQCBsYWJlbF9hdHRycyB+Y2hlY2tlZDooaXNfY2hlY2tlZCBpdGVtKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSBpdGVtKVxuICAgICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgKGlzX2NoZWNrZWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIEAgaW5wdXRfYXR0cnNcbiAgICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIDsgTm9kZS50ZXh0ICh0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/c3R5bGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/bGF5b3V0XG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRGlzcGxheSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9zdHlsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9sYXlvdXRcbiAgICAgIHZhbHVlc1xuICAgICAgfmlzX2NoZWNrZWRcbiAgICAgIH5vbl90b2dnbGVcbiAgICAgIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9zdHlsZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP3N0eWxlXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgTS5hbGxcbiAgICAgIH5pc19jaGVja2VkXG4gICAgICB+b25fdG9nZ2xlXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGlfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vX2FjdGlvblxuICAgICAgfCBDbGVhcl9hbGxcbiAgICAgIHwgU2VsZWN0X2FsbFxuICBlbmRcblxuICBsZXQgaW1wbFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgPyhyZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IFJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yLk5vX2FjdGlvbilcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IFNldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgPVxuICAgIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gICAgbGV0IHNpemUgPSBPcHRpb24udmFsdWUgc2l6ZSB+ZGVmYXVsdDooTGlzdC5sZW5ndGggdmFsdWVzKSBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICA7IEF0dHIuY3JlYXRlIFwic2l6ZVwiIChJbnQudG9fc3RyaW5nIHNpemUpXG4gICAgICA7IEF0dHIub25fY2hhbmdlIChmdW4gZXZ0IChfIDogc3RyaW5nKSAtPlxuICAgICAgICAgIGxldCB0YXJnZXQgPVxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0LmJpbmQgZXZ0IyMudGFyZ2V0IERvbV9odG1sLkNvZXJjZVRvLnNlbGVjdClcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB0YXJnZXQgLT4gdGFyZ2V0XG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICBcIk11bHRpX3NlbGVjdCBbb25fY2hhbmdlXSBldmVudCBmaXJlZCB3aXRoIGEgbWlzc2luZyB0YXJnZXQgb3IgdGFyZ2V0IFxcXG4gICAgICAgICAgICAgICAgIHRoYXQgd2FzIG5vdCBhIHNlbGVjdCBlbGVtZW50LlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgY29sbGVjdGlvbl90b19saXN0IGNvbGxlY3Rpb24gPVxuICAgICAgICAgICAgTGlzdC5pbml0IGNvbGxlY3Rpb24jIy5sZW5ndGggfmY6KGZ1biBpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5nZXQgKGNvbGxlY3Rpb24jI2l0ZW0gaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9wdGlvbnMgPSBjb2xsZWN0aW9uX3RvX2xpc3QgdGFyZ2V0IyMub3B0aW9ucyBpblxuICAgICAgICAgIGxldCBzZWxlY3RlZF92YWx1ZXMgPVxuICAgICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChMaXN0LnppcF9leG4gdmFsdWVzIG9wdGlvbnMpIH5mOihmdW4gKHZhbHVlLCBvcHRpb24pIC0+XG4gICAgICAgICAgICAgIE9wdGlvbi5zb21lX2lmIChKcy50b19ib29sIG9wdGlvbiMjLnNlbGVjdGVkKSB2YWx1ZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSBzZWxlY3RlZF92YWx1ZXMpKVxuICAgICAgXVxuICAgICAgQCBleHRyYV9hdHRyc1xuICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgaW5cbiAgICBsZXQgb3B0aW9ucyA9XG4gICAgICBMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgICBsZXQgaXNfc2VsZWN0ZWQgPSBTZXQubWVtIHNlbGVjdGVkIHZhbHVlIGluXG4gICAgICAgIE5vZGUub3B0aW9uXG4gICAgICAgICAgKCogW0F0dHIuYm9vbF9wcm9wZXJ0eV0ga2VlcHMgdGhlIHN0YXRlIG9mIHRoZSBvcHRpb24gaW4gc3luYyBieSBzZXR0aW5nIHRoZSBKU1xuICAgICAgICAgICAgIHByb3BlcnR5LiBbQXR0ci5zZWxlY3RlZF0gbW9kaWZpZXMgdGhlIERPTSBhdHRyaWJ1dGUgc28gdGhhdCBzZWxlY3RlZCBvcHRpb25zXG4gICAgICAgICAgICAgY2FuIGJlIHN0eWxlZCB3aXRoIENTUy4gW0F0dHIuc2VsZWN0ZWRdIGFsb25lIGRvZXMgbm90IHVwZGF0ZSB0aGUgc3RhdGVcbiAgICAgICAgICAgICBwcm9wZXJseSBpZiB0aGUgbW9kZWwgY2hhbmdlcywgc28gYm90aCBhcmUgbmVlZGVkLiAqKVxuICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgIChbIFNvbWUgKEF0dHIuYm9vbF9wcm9wZXJ0eSBcInNlbGVjdGVkXCIgaXNfc2VsZWN0ZWQpXG4gICAgICAgICAgICAgOyBTb21lXG4gICAgICAgICAgICAgICAgIChBdHRyLm9uX2NsaWNrIChmdW4gZXZ0IC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB3YXNfcmVwZWF0ZWRfY2xpY2sgPVxuICAgICAgICAgICAgICAgICAgICAgIChub3QgKEpzLnRvX2Jvb2wgZXZ0IyMuY3RybEtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgJiYgU2V0LmVxdWFsIHNlbGVjdGVkIChTZXQuc2luZ2xldG9uIChtb2R1bGUgTSkgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHdhc19yZXBlYXRlZF9jbGljaywgcmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGZhbHNlLCBfIHwgdHJ1ZSwgTm9fYWN0aW9uIC0+IEVmZmVjdC5JZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBDbGVhcl9hbGwgLT4gb25fY2hhbmdlIChTZXQuZW1wdHkgKG1vZHVsZSBNKSlcbiAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBTZWxlY3RfYWxsIC0+IG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSB2YWx1ZXMpKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXJfb3B0KVxuICAgICAgICAgIFsgTm9kZS50ZXh0IChNLnRvX3N0cmluZyB2YWx1ZSkgXSlcbiAgICBpblxuICAgIE5vZGUuc2VsZWN0IH5hdHRyczpbIChtZXJnZSBtZXJnZV9iZWhhdmlvcikgYXR0cnMgXSBvcHRpb25zXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3NpemVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLkxlZ2FjeV9kb250X21lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB2YWx1ZXNcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bV9zZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3NpemVcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIE0uYWxsXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICBtb2R1bGUgQ2FsbF9vbl9pbnB1dF93aGVuID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgVGV4dF9jaGFuZ2VkXG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3RcblxuICAgIGxldCBsaXN0ZW5lciA9IGZ1bmN0aW9uXG4gICAgICB8IFRleHRfY2hhbmdlZCAtPiBBdHRyLm9uX2lucHV0XG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3QgLT4gQXR0ci5vbl9jaGFuZ2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbm9ybWFsaXplIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUykgcyA9XG4gICAgbWF0Y2ggTS50b19zdHJpbmcgKE0ub2Zfc3RyaW5nIHMpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBfIC0+IFNvbWUgXCJcIlxuICAgIHwgdiAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgbWF5YmVfb25fcmV0dXJuIG9uX3JldHVybiBhdHRycyA9XG4gICAgbWF0Y2ggb25fcmV0dXJuIHdpdGhcbiAgICB8IE5vbmUgLT4gYXR0cnNcbiAgICB8IFNvbWUgb25fcmV0dXJuIC0+XG4gICAgICBBdHRyLm9uX2tleWRvd24gKGZ1biBldiAtPlxuICAgICAgICBpZiBldiMjLmtleUNvZGUgPSAxMyB0aGVuIG9uX3JldHVybiAoKSBlbHNlIEVmZmVjdC5JZ25vcmUpXG4gICAgICA6OiBhdHRyc1xuICA7O1xuXG4gIGxldCBpbnB1dF9ub2RlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KHBsYWNlaG9sZGVyID0gXCJcIilcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICBhdHRyc1xuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKGF0dHJzXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzXG4gICAgICAgICAgICAgICAgICBbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXI7IEF0dHIuY3JlYXRlIFwic3BlbGxjaGVja1wiIFwiZmFsc2VcIiBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCByYXdcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP29uX3JldHVyblxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgWyBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgdmFsdWU7IEF0dHIub25faW5wdXQgKGZ1biBfZXYgLT4gb25faW5wdXQpIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KHNob3VsZF9ub3JtYWxpemUgPSB0cnVlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH50eXBlX2F0dHJzXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IHZhbHVlID1cbiAgICAgIGxldCB2YWx1ZSA9IE9wdGlvbi52YWx1ZV9tYXAgfmY6TS50b19zdHJpbmcgdmFsdWUgfmRlZmF1bHQ6XCJcIiBpblxuICAgICAgaWYgc2hvdWxkX25vcm1hbGl6ZVxuICAgICAgdGhlbiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+Zjoobm9ybWFsaXplIChtb2R1bGUgTSkpXG4gICAgICBlbHNlIFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOihjb25zdCBOb25lKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBvbl9pbnB1dCBOb25lXG4gICAgICAgIHwgcyAtPiBvbl9pbnB1dCAoT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTS5vZl9zdHJpbmcgcykpKVxuICAgIDsgdmFsdWVcbiAgICBdXG4gICAgfD4gYWRkX2F0dHJzIHR5cGVfYXR0cnNcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdhYmxlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJ0ZXh0XCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/b25fcmV0dXJuXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBsZXQgKG1vZHVsZSBWKSA9IFZhbGlkYXRlZC5saWZ0IChtb2R1bGUgTSkgaW5cbiAgICBsZXQgdmFsdWVfYXR0ciA9XG4gICAgICBtYXRjaCAodmFsdWUgOiBWLnQpIHdpdGhcbiAgICAgIHwgSW5pdGlhbCAtPiBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgXCJcIlxuICAgICAgfCBfIC0+IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIChWLnRvX3N0cmluZyB2YWx1ZSkgfmY6KG5vcm1hbGl6ZSAobW9kdWxlIFYpKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHMgLT5cbiAgICAgICAgb25faW5wdXQgKFYub2Zfc3RyaW5nIHMpKVxuICAgIDsgdmFsdWVfYXR0clxuICAgIDsgQXR0ci50eXBlXyBcInRleHRcIlxuICAgIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gbWF5YmVfaW52YWxpZCB2YWx1ZVxuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHRleHRcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgb2Zfc3RyaW5nYWJsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBTdHJpbmcpXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHBhc3N3b3JkXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFN0cmluZylcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInBhc3N3b3JkXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBudW1iZXJcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcIm51bWJlclwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgcmFuZ2VcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInJhbmdlXCI7IEF0dHIuY3JlYXRlX2Zsb2F0IFwic3RlcFwiIHN0ZXAgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0aW1lXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFRpbWVfY29tcGF0Lk9mZGF5KVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInRpbWVcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IGRhdGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgRGF0ZSlcbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJkYXRlXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBkYXRldGltZV9sb2NhbFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID91dGNfb2Zmc2V0XG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgaG91cnMgPVxuICAgICAgKCogSW4gdGVzdHMsIHdlIHVzZSBVVEMgYXMgdGhlIGxvY2FsIHRpbWV6b25lIChpLmUuIG9mZnNldCAwKS4gVGhpcyBwcmV2ZW50cyBjaGFuZ2VzXG4gICAgICAgICBiZXR3ZWVuIHRlc3Qgb3V0cHV0IGFyb3VuZCBkYXlsaWdodCBzYXZpbmdzIHRpbWUsIGFuZCBpZiBbdXRjX29mZnNldF0gaXNuJ3RcbiAgICAgICAgIHN1cHBsaWVkLCB0aGVuIGNhbGxlcnMgc2hvdWxkIGJlIGluZGlmZmVyZW50IHRvIHdoYXQgb2Zmc2V0IGdldHMgdXNlZCBoZXJlLiAqKVxuICAgICAgbWF0Y2ggQ29yZS5hbV9ydW5uaW5nX3Rlc3QgfHwgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiAwXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgIE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgICB1dGNfb2Zmc2V0XG4gICAgICAgICAgKCogZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyB0aGUgdGltZSB6b25lIGRpZmZlcmVuY2UsIGluIG1pbnV0ZXMsIGZyb20gY3VycmVudFxuICAgICAgICAgICAgIGxvY2FsZSB0byBVVEMuIFV0YyBvZmZzZXQgaXMgdGhlIGRpZmZlcmVuY2UgZnJvbSBVVEMgdG8gY3VycmVudCBsb2NhbGUgd2hpY2hcbiAgICAgICAgICAgICBpcyB3aGVyZSB0aGUgbWludXMgY29tZXMgZnJvbS5cblxuICAgICAgICAgICAgIFRoZSBtaW51dGVzIGhhdmUgdG8gYmUgY29udmVydGVkIHRvIGhvdXJzIHNpbmNlIHRoYXQgaXMgdGhlIGZvcm1hdFxuICAgICAgICAgICAgIFRpbWUuWm9uZS5vZl91dGNfb2Zmc2V0IGV4cGVjdHMgZm9yIHRoZSB1dGNfb2Zmc2V0LiAqKVxuICAgICAgICAgIH5kZWZhdWx0OigobmV3JWpzIEpzX29mX29jYW1sLkpzLmRhdGVfbm93KSMjZ2V0VGltZXpvbmVPZmZzZXQgLyAtNjApXG4gICAgICAgICAgfmY6KGZ1biB1dGNfb2Zmc2V0IC0+IFRpbWVfbnMuU3Bhbi50b19ociB1dGNfb2Zmc2V0IHw+IEZsb2F0LnRvX2ludClcbiAgICBpblxuICAgIGxldCAobW9kdWxlIFpvbmVkX3RpbWUpID0gVGltZV9jb21wYXQuem9uZWQgKFRpbWVfZmxvYXQuWm9uZS5vZl91dGNfb2Zmc2V0IH5ob3VycykgaW5cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBab25lZF90aW1lKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwiZGF0ZXRpbWUtbG9jYWxcIiBdXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0ZXh0X2FyZWFcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLnRleHRhcmVhXG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci5wbGFjZWhvbGRlciBwbGFjZWhvbGRlclxuICAgICAgICAgICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICBvbl9pbnB1dCB2YWx1ZSlcbiAgICAgICAgICAgICA7IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOk9wdGlvbi5yZXR1cm5cbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICBbXVxuICA7O1xuXG4gICgqIEFjY29yZGluZyB0b1xuICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQvY29sb3IjVmFsdWUgdGhlXG4gICAgIHZhbHVlIG11c3QgYmUgc2V0IGluIGhleCBmb3JtYXQgYW5kIHdpbGwgYWx3YXlzIGNvbWVzIGJhY2sgaW4gaGV4IGZvcm1hdC4gKilcbiAgbGV0IGNvbG9yX3BpY2tlclxuICAgICAgICA/KGV4dHJhX2F0dHIgPSBBdHRyLmVtcHR5KVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IChgSGV4IHZhbHVlXykgPSB2YWx1ZSBpblxuICAgIFsgQXR0ci4odHlwZV8gXCJjb2xvclwiIEAgdmFsdWVfcHJvcCB2YWx1ZV8gQCBleHRyYV9hdHRyKVxuICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+IG9uX2lucHV0IChgSGV4IHMpKVxuICAgIF1cbiAgICB8PiBpbnB1dF9ub2RlID9kaXNhYmxlZCB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCB3aXRoX3ZhbGlkYXRpb25cbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHRleHRcbiAgICAgICAgfnZhbGlkYXRpb25cbiAgICAgICAgfm9uX2NsaWNrXG4gICAgPVxuICAgIG1hdGNoIHZhbGlkYXRpb24gd2l0aFxuICAgIHwgT2sgcmVzdWx0IC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAgIChbIEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgcmVzdWx0KTsgQXR0ci50eXBlXyBcImJ1dHRvblwiIF1cbiAgICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgICBdXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICAgIHwgRXJyb3IgcmVhc29uIC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAgIChbIEF0dHIuZGlzYWJsZWRcbiAgICAgICAgICAgICAgIDsgQXR0ci50eXBlXyBcImJ1dHRvblwiXG4gICAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwidG9vbHRpcFwiIHJlYXNvblxuICAgICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcInRvb2x0aXAtcG9zaXRpb25cIiBcInRvcFwiXG4gICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgICAgXVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcblxuICBsZXQgc2ltcGxlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHRleHRcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgPVxuICAgIE5vZGUuYnV0dG9uXG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImJ1dHRvblwiOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrICgpKSBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUmFkaW9fYnV0dG9ucyA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhzdHlsZSA6IFNlbGVjdGFibGVfc3R5bGUudCA9IE5hdGl2ZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+b3JpZW50YXRpb25cbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgbGV0IGlucHV0X2F0dHJzLCBsYWJlbF9hdHRycyA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5hdGl2ZSAtPiBbXSwgZnVuIH5jaGVja2VkOl8gLT4gW11cbiAgICAgIHwgQnV0dG9uX2xpa2UgeyBleHRyYV9hdHRycyB9IC0+XG4gICAgICAgIFsgQXR0ci5zdHlsZSBTZWxlY3RhYmxlX3N0eWxlLmhpZGVfbmF0aXZlX2lucHV0cyBdLCBleHRyYV9hdHRyc1xuICAgIGluXG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICAgIH5vcmllbnRhdGlvblxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtcmFkaW8tYnV0dG9uc1wiOyBcInJhZGlvLWJ1dHRvbi1jb250YWluZXJcIiBdIF1cbiAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAoTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gaXRlbSAtPlxuICAgICAgICAgbGV0IGNoZWNrZWQgPSBPcHRpb24udmFsdWVfbWFwIHNlbGVjdGVkIH5kZWZhdWx0OmZhbHNlIH5mOihlcXVhbCBpdGVtKSBpblxuICAgICAgICAgTm9kZS5sYWJlbFxuICAgICAgICAgICB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIChsYWJlbF9hdHRycyB+Y2hlY2tlZCkgXVxuICAgICAgICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5uYW1lIG5hbWVcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5jbGFzc2VzIFsgXCJyYWRpby1idXR0b25cIiBdXG4gICAgICAgICAgICAgICAgICA7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgaXRlbSlcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwiY2hlY2tlZFwiIGNoZWNrZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIEAgaW5wdXRfYXR0cnNcbiAgICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIDsgTm9kZS50ZXh0ICh0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zdHlsZVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBWZXJ0aWNhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB2YWx1ZXNcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzX2hvcml6b250YWxcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c3R5bGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgSG9yaXpvbnRhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB2YWx1ZXNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIEpzID0gSnNfb2Zfb2NhbWwuSnNcblxuICBsZXQgYWNjZXB0X2F0dHJzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQXR0ci5lbXB0eVxuICAgIHwgU29tZSBhY2NlcHRzIC0+XG4gICAgICBBdHRyLmNyZWF0ZVxuICAgICAgICBcImFjY2VwdFwiXG4gICAgICAgIChMaXN0Lm1hcCBhY2NlcHRzIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IGBFeHRlbnNpb24gcyAtPiBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIi5cIiB0aGVuIHMgZWxzZSBcIi5cIiBeIHNcbiAgICAgICAgICAgfCBgTWltZXR5cGUgcyAtPiBzKVxuICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiKVxuICA7O1xuXG4gIGxldCBsaXN0XG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgP2FjY2VwdFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJtdWx0aXBsZVwiIFwiXCJcbiAgICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGZpbGVzID1cbiAgICAgICAgICAgICAgICAgICBMaXN0LmluaXQgZmlsZV9saXN0IyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgZmlsZV9saXN0IyNpdGVtIGlcbiAgICAgICAgICAgICAgICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9leG4gfm1lc3NhZ2U6WyVzdHJpbmcgXCJjb3VsZG4ndCBnZXQgZmlsZSAle2kjSW50fVwiXSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZXMpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKClcbiAgOztcblxuICBsZXQgc2luZ2xlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgP2FjY2VwdFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgIDsgQXR0ci5vbl9maWxlX2lucHV0IChmdW4gX2V2IGZpbGVfbGlzdCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IGZpbGVfbGlzdCMjaXRlbSAwIHw+IEpzLk9wdC50b19vcHRpb24gaW5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoKVxuICA7O1xuZW5kXG4iLCJcbnR5cGUgdCA9IGludFxubGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxubGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG5sZXQgdG9faW50IHggPSB4XG5sZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5cbmxldCBpbnRlcnNlY3QgeCB5ID0geCBsYW5kIHkgPD4gMFxubGV0ICgrKykgeCB5ID0geCBsb3IgeVxuXG5sZXQgZHVtbXkgPSAtMVxubGV0IGluZXhpc3RhbnQgPSAxXG5sZXQgbGV0dGVyID0gMlxubGV0IG5vdF9sZXR0ZXIgPSA0XG5sZXQgbmV3bGluZSA9IDhcbmxldCBsYXN0bmV3bGluZSA9IDE2XG5sZXQgc2VhcmNoX2JvdW5kYXJ5ID0gMzJcblxubGV0IGZyb21fY2hhciA9IGZ1bmN0aW9uXG4gICgqIFNob3VsZCBtYXRjaCBbY3dvcmRdIGRlZmluaXRpb24gKilcbiAgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScgfCAnXycgfCAnXFwxNzAnIHwgJ1xcMTgxJyB8ICdcXDE4NidcbiAgfCAnXFwxOTInLi4nXFwyMTQnIHwgJ1xcMjE2Jy4uJ1xcMjQ2JyB8ICdcXDI0OCcuLidcXDI1NScgLT5cbiAgICBsZXR0ZXJcbiAgfCAnXFxuJyAtPlxuICAgIG5vdF9sZXR0ZXIgKysgbmV3bGluZVxuICB8IF8gLT5cbiAgICBub3RfbGV0dGVyXG4iLCIoKiogVmVyeSBzbWFsbCB0b29saW5nIGZvciBmb3JtYXQgcHJpbnRlcnMuICopXG5cbmluY2x1ZGUgRm9ybWF0XG5cbnR5cGUgJ2EgdCA9IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdFxuXG5sZXQgbGlzdCA9IHBwX3ByaW50X2xpc3RcbmxldCBzdHIgPSBwcF9wcmludF9zdHJpbmdcbmxldCBzZXhwIGZtdCBzIHBwIHggPSBmcHJpbnRmIGZtdCBcIkBbPDM+KCVzQCAlYSlAXVwiIHMgcHAgeFxubGV0IHBhaXIgcHAxIHBwMiBmbXQgKHYxLHYyKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7IHBwMiBmbXQgdjJcbmxldCB0cmlwbGUgcHAxIHBwMiBwcDMgZm10ICh2MSwgdjIsIHYzKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMiBmbXQgdjI7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMyBmbXQgdjNcbmxldCBpbnQgPSBwcF9wcmludF9pbnRcbmxldCBvcHRpbnQgZm10ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpIC0+IGZwcmludGYgZm10IFwiQCAlZFwiIGlcblxubGV0IHF1b3RlIGZtdCBzID0gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIHNcblxubGV0IHBwX29saXN0IHBwX2VsZW0gZm10ID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mz5bQCAlYUAgXUBdXCJcbiAgICAocHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gZnByaW50ZiBmbXQgXCI7QCBcIilcbiAgICAgICBwcF9lbGVtKVxuXG5sZXQgcHBfc3RyX2xpc3QgPSBwcF9vbGlzdCBxdW90ZVxuXG5sZXQgdG9fdG9fc3RyaW5nIHBwIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgcHAgZm10IHg7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIGMgPSBpbnRcbnR5cGUgdCA9IChjICogYykgbGlzdFxuXG5sZXQgcmVjIHVuaW9uIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IGwnXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgKyAxIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjp1bmlvbiByIGwnXG4gICAgZWxzZSBpZiBjMicgKyAxIDwgYzEgdGhlblxuICAgICAgKGMxJywgYzInKTo6dW5pb24gbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgdW5pb24gciAoKG1pbiBjMSBjMScsIGMyJyk6OnInKVxuICAgIGVsc2VcbiAgICAgIHVuaW9uICgobWluIGMxIGMxJywgYzIpOjpyKSByJ1xuXG5sZXQgcmVjIGludGVyIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gW11cbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIGludGVyIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGludGVyIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIChtYXggYzEgYzEnLCBjMik6OmludGVyIHIgbCdcbiAgICBlbHNlXG4gICAgICAobWF4IGMxIGMxJywgYzInKTo6aW50ZXIgbCByJ1xuXG5sZXQgcmVjIGRpZmYgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6ZGlmZiByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBkaWZmIGwgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcicnID0gaWYgYzInIDwgYzIgdGhlbiAoYzInICsgMSwgYzIpIDo6IHIgZWxzZSByIGluXG4gICAgICBpZiBjMSA8IGMxJyB0aGVuXG4gICAgICAgIChjMSwgYzEnIC0gMSk6OmRpZmYgcicnIHInXG4gICAgICBlbHNlXG4gICAgICAgIGRpZmYgcicnIHInXG5cbmxldCBzaW5nbGUgYyA9IFtjLCBjXVxuXG5sZXQgYWRkIGMgbCA9IHVuaW9uIChzaW5nbGUgYykgbFxuXG5sZXQgc2VxIGMgYycgPSBpZiBjIDw9IGMnIHRoZW4gW2MsIGMnXSBlbHNlIFtjJywgY11cblxubGV0IHJlYyBvZmZzZXQgbyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgICAgICAgICAtPiBbXVxuICB8IChjMSwgYzIpIDo6IHIgLT4gKGMxICsgbywgYzIgKyBvKSA6OiBvZmZzZXQgbyByXG5cbmxldCBlbXB0eSA9IFtdXG5cbmxldCByZWMgbWVtIChjIDogaW50KSBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gICAgW10gICAgICAgICAgICAgIC0+IGZhbHNlXG4gIHwgKGMxLCBjMikgOjogcmVtIC0+IGlmIGMgPD0gYzIgdGhlbiBjID49IGMxIGVsc2UgbWVtIGMgcmVtXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcblxubGV0IHJlYyBoYXNoX3JlYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgIC0+IDBcbiAgfCAoaSwgaik6OnIgLT4gaSArIDEzICogaiArIDI1NyAqIGhhc2hfcmVjIHJcbmxldCBoYXNoIGwgPSAoaGFzaF9yZWMgbCkgbGFuZCAweDNGRkZGRkZGXG5cbigqKioqKVxuXG5sZXQgcHJpbnRfb25lIGNoIChjMSwgYzIpID1cbiAgaWYgYzEgPSBjMiB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZFwiIGMxXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYzEgYzJcblxubGV0IHBwID0gRm10Lmxpc3QgcHJpbnRfb25lXG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoeCwgeSk6OnhzIC0+XG4gICAgZiB4IHk7XG4gICAgaXRlciB4cyAgfmZcblxubGV0IG9uZV9jaGFyID0gZnVuY3Rpb25cbiAgfCBbaSwgal0gd2hlbiBpID0gaiAtPiBTb21lIGlcbiAgfCBfIC0+IE5vbmVcblxuXG5tb2R1bGUgQ1NldE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgKiAoaW50ICogaW50KSBsaXN0XG4gICAgbGV0IGNvbXBhcmUgKGksIHUpIChqLCB2KSA9XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaSBqIGluXG4gICAgICBpZiBjIDw+IDBcbiAgICAgIHRoZW4gY1xuICAgICAgZWxzZSBjb21wYXJlIHUgdlxuICBlbmQpXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBMaXN0LmZvbGRfcmlnaHQgZiB0IGluaXRcblxubGV0IGNzaW5nbGUgYyA9IHNpbmdsZSAoQ2hhci5jb2RlIGMpXG5cbmxldCBjYW55ID0gWzAsIDI1NV1cblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIHByZXBlbmQgcyB4IGwgPVxuICBtYXRjaCBzLCBsIHdpdGhcbiAgfCBbXSwgXyAtPiBsXG4gIHwgX3IsIFtdIC0+IFtdXG4gIHwgKF9jLCBjJykgOjogciwgKFtkLCBfZCddLCBfeCcpIDo6IF9yJyB3aGVuIGMnIDwgZCAtPiBwcmVwZW5kIHIgeCBsXG4gIHwgKGMsIGMnKSA6OiByLCAoW2QsIGQnXSwgeCcpIDo6IHInIC0+XG4gICAgaWYgYyA8PSBkIHRoZW4gYmVnaW5cbiAgICAgIGlmIGMnIDwgZCdcbiAgICAgIHRoZW4gKFtkLCBjJ10sIHggQCB4JykgOjogcHJlcGVuZCByIHggKChbYycgKyAxLCBkJ10sIHgnKSA6OiByJylcbiAgICAgIGVsc2UgKFtkLCBkJ10sIHggQCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgYyA+IGQnXG4gICAgICB0aGVuIChbZCwgZCddLCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICAgIGVsc2UgKFtkLCBjIC0gMV0sIHgnKSA6OiBwcmVwZW5kIHMgeCAoKFtjLCBkJ10sIHgnKSA6OiByJylcbiAgICBlbmRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcGljayA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJSZV9jc2V0LnBpY2tcIlxuICB8ICh4LCBfKTo6XyAtPiB4XG4iLCJcbm1vZHVsZSBQbWFyayA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbiAgbGV0IHIgPSByZWYgMFxuICBsZXQgZ2VuICgpID0gaW5jciByIDsgIXJcblxuICBsZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmRcblxuaW5jbHVkZSBQbWFya1xubW9kdWxlIFNldCA9IFNldC5NYWtlKFBtYXJrKVxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBzZW0gPSBbIGBMb25nZXN0IHwgYFNob3J0ZXN0IHwgYEZpcnN0IF1cblxudHlwZSByZXBfa2luZCA9IFsgYEdyZWVkeSB8IGBOb25fZ3JlZWR5IF1cblxudHlwZSBtYXJrID0gaW50XG50eXBlIGlkeCA9IGludFxuXG50eXBlIGV4cHIgPSB7IGlkIDogaW50OyBkZWYgOiBkZWYgfVxuXG5hbmQgZGVmID1cbiAgICBDc3Qgb2YgQ3NldC50XG4gIHwgQWx0IG9mIGV4cHIgbGlzdFxuICB8IFNlcSBvZiBzZW0gKiBleHByICogZXhwclxuICB8IEVwc1xuICB8IFJlcCBvZiByZXBfa2luZCAqIHNlbSAqIGV4cHJcbiAgfCBNYXJrIG9mIGludFxuICB8IEVyYXNlIG9mIGludCAqIGludFxuICB8IEJlZm9yZSBvZiBDYXRlZ29yeS50XG4gIHwgQWZ0ZXIgb2YgQ2F0ZWdvcnkudFxuICB8IFBtYXJrIG9mIFBtYXJrLnRcblxubGV0IGhhc2hfY29tYmluZSBoIGFjY3UgPSBhY2N1ICogNjU1OTkgKyBoXG5cbm1vZHVsZSBNYXJrcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWFya3MgOiAoaW50ICogaW50KSBsaXN0XG4gICAgOyBwbWFya3MgOiBQbWFyay5TZXQudCB9XG5cbiAgbGV0IGVtcHR5ID0geyBtYXJrcyA9IFtdIDsgcG1hcmtzID0gUG1hcmsuU2V0LmVtcHR5IH1cblxuICBsZXQgcmVjIG1lcmdlX21hcmtzX29mZnNldCBvbGQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIG9sZFxuICAgIHwgKGksIHYpIDo6IHJlbSAtPlxuICAgICAgbGV0IG53JyA9IG1lcmdlX21hcmtzX29mZnNldCAoTGlzdC5yZW1vdmVfYXNzcSBpIG9sZCkgcmVtIGluXG4gICAgICBpZiB2ID0gLTIgdGhlblxuICAgICAgICBudydcbiAgICAgIGVsc2VcbiAgICAgICAgKGksIHYpIDo6IG53J1xuXG4gIGxldCBtZXJnZSBvbGQgbncgPVxuICAgIHsgbWFya3MgPSBtZXJnZV9tYXJrc19vZmZzZXQgb2xkLm1hcmtzIG53Lm1hcmtzXG4gICAgOyBwbWFya3MgPSBQbWFyay5TZXQudW5pb24gb2xkLnBtYXJrcyBudy5wbWFya3MgfVxuXG4gIGxldCByZWMgaGFzaF9tYXJrc19vZmZzZXQgbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdICAgICAgICAgIC0+IGFjY3VcbiAgICB8IChhLCBpKSA6OiByIC0+IGhhc2hfbWFya3Nfb2Zmc2V0IHIgKGhhc2hfY29tYmluZSBhIChoYXNoX2NvbWJpbmUgaSBhY2N1KSlcblxuICBsZXQgaGFzaCBtIGFjY3UgPVxuICAgIGhhc2hfbWFya3Nfb2Zmc2V0IG0ubWFya3MgKGhhc2hfY29tYmluZSAoSGFzaHRibC5oYXNoIG0ucG1hcmtzKSBhY2N1KVxuXG4gIGxldCByZWMgbWFya3Nfc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICAgIHwgKGEsIC0xKSA6OiByZW0gLT5cbiAgICAgIChhLCBpZHgpIDo6IG1hcmtzX3NldF9pZHggaWR4IHJlbVxuICAgIHwgbWFya3MgLT5cbiAgICAgIG1hcmtzXG5cbiAgbGV0IG1hcmtzX3NldF9pZHggbWFya3MgaWR4ID1cbiAgICB7IG1hcmtzIHdpdGggbWFya3MgPSBtYXJrc19zZXRfaWR4IGlkeCBtYXJrcy5tYXJrcyB9XG5cbiAgbGV0IHBwX21hcmtzIGNoIHQgPVxuICAgIG1hdGNoIHQubWFya3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gICAgfCAoYSwgaSkgOjogciAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGEgaTtcbiAgICAgIExpc3QuaXRlciAoZnVuIChhLCBpKSAtPiBGb3JtYXQuZnByaW50ZiBjaCBcIiAlZC0lZFwiIGEgaSkgclxuZW5kXG5cbigqKioqKVxuXG5sZXQgcHBfc2VtIGNoIGsgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGNoXG4gICAgKG1hdGNoIGsgd2l0aFxuICAgICAgIGBTaG9ydGVzdCAtPiBcInNob3J0XCJcbiAgICAgfCBgTG9uZ2VzdCAgLT4gXCJsb25nXCJcbiAgICAgfCBgRmlyc3QgICAgLT4gXCJmaXJzdFwiKVxuXG5cbmxldCBwcF9yZXBfa2luZCBmbXQgPSBmdW5jdGlvblxuICB8IGBHcmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJHcmVlZHlcIlxuICB8IGBOb25fZ3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uX2dyZWVkeVwiXG5cbmxldCByZWMgcHAgY2ggZSA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBtYXRjaCBlLmRlZiB3aXRoXG4gICAgQ3N0IGwgLT5cbiAgICBzZXhwIGNoIFwiY3N0XCIgQ3NldC5wcCBsO1xuICB8IEFsdCBsIC0+XG4gICAgc2V4cCBjaCBcImFsdFwiIChsaXN0IHBwKSBsXG4gIHwgU2VxIChrLCBlLCBlJykgLT5cbiAgICBzZXhwIGNoIFwic2VxXCIgKHRyaXBsZSBwcF9zZW0gcHAgcHApIChrLCBlLCBlJylcbiAgfCBFcHMgLT5cbiAgICBzdHIgY2ggXCJlcHNcIlxuICB8IFJlcCAoX3JrLCBrLCBlKSAtPlxuICAgIHNleHAgY2ggXCJyZXBcIiAocGFpciBwcF9zZW0gcHApIChrLCBlKVxuICB8IE1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJtYXJrXCIgaW50IGlcbiAgfCBQbWFyayBpIC0+XG4gICAgc2V4cCBjaCBcInBtYXJrXCIgaW50IChpIDo+IGludClcbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBzZXhwIGNoIFwiZXJhc2VcIiAocGFpciBpbnQgaW50KSAoYiwgZSlcbiAgfCBCZWZvcmUgYyAtPlxuICAgIHNleHAgY2ggXCJiZWZvcmVcIiBDYXRlZ29yeS5wcCBjXG4gIHwgQWZ0ZXIgYyAtPlxuICAgIHNleHAgY2ggXCJhZnRlclwiIENhdGVnb3J5LnBwIGNcblxuXG4oKioqKilcblxubGV0IHJlYyBmaXJzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIE5vbmVcbiAgfCB4IDo6IHIgLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgTm9uZSAgICAgICAgICAtPiBmaXJzdCBmIHJcbiAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzXG5cbigqKioqKVxuXG50eXBlIGlkcyA9IGludCByZWZcbmxldCBjcmVhdGVfaWRzICgpID0gcmVmIDBcblxubGV0IGVwc19leHByID0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5cbmxldCBta19leHByIGlkcyBkZWYgPVxuICBpbmNyIGlkcztcbiAgeyBpZCA9ICFpZHM7IGRlZiA9IGRlZiB9XG5cbmxldCBlbXB0eSBpZHMgPSBta19leHByIGlkcyAoQWx0IFtdKVxuXG5sZXQgY3N0IGlkcyBzID1cbiAgaWYgQ3NldC5pc19lbXB0eSBzXG4gIHRoZW4gZW1wdHkgaWRzXG4gIGVsc2UgbWtfZXhwciBpZHMgKENzdCBzKVxuXG5sZXQgYWx0IGlkcyA9IGZ1bmN0aW9uXG4gIHwgW10gIC0+IGVtcHR5IGlkc1xuICB8IFtjXSAtPiBjXG4gIHwgbCAgIC0+IG1rX2V4cHIgaWRzIChBbHQgbClcblxubGV0IHNlcSBpZHMga2luZCB4IHkgPVxuICBtYXRjaCB4LmRlZiwgeS5kZWYgd2l0aFxuICAgIEFsdCBbXSwgXyAgICAgICAgICAgICAgICAgLT4geFxuICB8IF8sIEFsdCBbXSAgICAgICAgICAgICAgICAgLT4geVxuICB8IEVwcywgXyAgICAgICAgICAgICAgICAgICAgLT4geVxuICB8IF8sIEVwcyB3aGVuIGtpbmQgPSBgRmlyc3QgLT4geFxuICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgLT4gbWtfZXhwciBpZHMgKFNlcSAoa2luZCwgeCwgeSkpXG5cbmxldCBpc19lcHMgZXhwciA9XG4gIG1hdGNoIGV4cHIuZGVmIHdpdGhcbiAgfCBFcHMgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IGVwcyBpZHMgPSBta19leHByIGlkcyBFcHNcblxubGV0IHJlcCBpZHMga2luZCBzZW0geCA9IG1rX2V4cHIgaWRzIChSZXAgKGtpbmQsIHNlbSwgeCkpXG5cbmxldCBtYXJrIGlkcyBtID0gbWtfZXhwciBpZHMgKE1hcmsgbSlcblxubGV0IHBtYXJrIGlkcyBpID0gbWtfZXhwciBpZHMgKFBtYXJrIGkpXG5cbmxldCBlcmFzZSBpZHMgbSBtJyA9IG1rX2V4cHIgaWRzIChFcmFzZSAobSwgbScpKVxuXG5sZXQgYmVmb3JlIGlkcyBjID0gbWtfZXhwciBpZHMgKEJlZm9yZSBjKVxuXG5sZXQgYWZ0ZXIgaWRzIGMgPSBta19leHByIGlkcyAoQWZ0ZXIgYylcblxuKCoqKiopXG5cbmxldCByZWMgcmVuYW1lIGlkcyB4ID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBfIHwgRXBzIHwgTWFyayBfIHwgUG1hcmsgXyB8IEVyYXNlIF8gfCBCZWZvcmUgXyB8IEFmdGVyIF8gLT5cbiAgICBta19leHByIGlkcyB4LmRlZlxuICB8IEFsdCBsIC0+XG4gICAgbWtfZXhwciBpZHMgKEFsdCAoTGlzdC5tYXAgKHJlbmFtZSBpZHMpIGwpKVxuICB8IFNlcSAoaywgeSwgeikgLT5cbiAgICBta19leHByIGlkcyAoU2VxIChrLCByZW5hbWUgaWRzIHksIHJlbmFtZSBpZHMgeikpXG4gIHwgUmVwIChnLCBrLCB5KSAtPlxuICAgIG1rX2V4cHIgaWRzIChSZXAgKGcsIGssIHJlbmFtZSBpZHMgeSkpXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcbnR5cGUgbWFya19pbmZvcyA9IGludCBhcnJheVxudHlwZSBzdGF0dXMgPSBGYWlsZWQgfCBNYXRjaCBvZiBtYXJrX2luZm9zICogUG1hcmsuU2V0LnQgfCBSdW5uaW5nXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUU2VxIG9mIHQgbGlzdCAqIGV4cHIgKiBzZW1cbiAgICB8IFRFeHAgb2YgTWFya3MudCAqIGV4cHJcbiAgICB8IFRNYXRjaCBvZiBNYXJrcy50XG5cbiAgbGV0IHJlYyBlcXVhbCBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgVFNlcSAobDEnLCBlMSwgXykgOjogcjEsIFRTZXEgKGwyJywgZTIsIF8pIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIGVxdWFsIGwxJyBsMicgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRFeHAgKG1hcmtzMSwgZTEpIDo6IHIxLCBURXhwIChtYXJrczIsIGUyKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRNYXRjaCBtYXJrczEgOjogcjEsIFRNYXRjaCBtYXJrczIgOjogcjIgLT5cbiAgICAgIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgcmVjIGhhc2ggbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhY2N1XG4gICAgfCBUU2VxIChsJywgZSwgXykgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxNzJhMWJjZSAoaGFzaF9jb21iaW5lIGUuaWQgKGhhc2ggbCcgYWNjdSkpKVxuICAgIHwgVEV4cCAobWFya3MsIGUpIDo6IHIgLT5cbiAgICAgIGhhc2ggclxuICAgICAgICAoaGFzaF9jb21iaW5lIDB4MmI0YzBkNzcgKGhhc2hfY29tYmluZSBlLmlkIChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKSlcbiAgICB8IFRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDFjMjA1YWQ1IChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKVxuXG4gIGxldCB0ZXhwIG1hcmtzIHggPSBURXhwIChtYXJrcywgeClcblxuICBsZXQgdHNlcSBraW5kIHggeSByZW0gPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiByZW1cbiAgICB8IFtURXhwIChtYXJrcywge2RlZiA9IEVwcyA7IF99KV0gLT4gVEV4cCAobWFya3MsIHkpIDo6IHJlbVxuICAgIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBUU2VxICh4LCB5LCBraW5kKSA6OiByZW1cblxuICBsZXQgcmVjIHByaW50X3N0YXRlX3JlYyBjaCBlIHkgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgVE1hdGNoIG1hcmtzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KE1hdGNoQCAlYSlAXVwiIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBUU2VxIChsJywgeCwgX2tpbmQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KFNlcUAgXCI7XG4gICAgICBwcmludF9zdGF0ZV9sc3QgY2ggbCcgeDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCAlYSlAXVwiIHBwIHhcbiAgICB8IFRFeHAgKG1hcmtzLCB7ZGVmID0gRXBzOyBffSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgKGVwcykpQF1cIiB5LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBURXhwIChtYXJrcywgeCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgJWEpQF1cIiB4LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzIHBwIHhcblxuICBhbmQgcHJpbnRfc3RhdGVfbHN0IGNoIGwgeSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIoKVwiXG4gICAgfCBlIDo6IHJlbSAtPlxuICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeTtcbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAIHwgXCI7XG4gICAgICAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHkpXG4gICAgICAgIHJlbVxuXG4gIGxldCBwcCBjaCB0ID0gcHJpbnRfc3RhdGVfbHN0IGNoIFt0XSB7IGlkID0gMDsgZGVmID0gRXBzIH1cbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGlkeDogaWR4XG4gICAgOyBjYXRlZ29yeTogQ2F0ZWdvcnkudFxuICAgIDsgZGVzYzogRS50IGxpc3RcbiAgICA7IG11dGFibGUgc3RhdHVzOiBzdGF0dXMgb3B0aW9uXG4gICAgOyBoYXNoOiBoYXNoIH1cblxuICBsZXQgZHVtbXkgPVxuICAgIHsgaWR4ID0gLTFcbiAgICA7IGNhdGVnb3J5ID0gQ2F0ZWdvcnkuZHVtbXlcbiAgICA7IGRlc2MgPSBbXVxuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IC0xIH1cblxuICBsZXQgaGFzaCBpZHggY2F0IGRlc2MgPVxuICAgIEUuaGFzaCBkZXNjIChoYXNoX2NvbWJpbmUgaWR4IChoYXNoX2NvbWJpbmUgKENhdGVnb3J5LnRvX2ludCBjYXQpIDApKSBsYW5kIDB4M0ZGRkZGRkZcblxuICBsZXQgbWsgaWR4IGNhdCBkZXNjID1cbiAgICB7IGlkeFxuICAgIDsgY2F0ZWdvcnkgPSBjYXRcbiAgICA7IGRlc2NcbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSBoYXNoIGlkeCBjYXQgZGVzY31cblxuICBsZXQgY3JlYXRlIGNhdCBlID0gbWsgMCBjYXQgW0UuVEV4cCAoTWFya3MuZW1wdHksIGUpXVxuXG4gIGxldCBlcXVhbCB4IHkgPVxuICAgICh4Lmhhc2ggOiBpbnQpID0geS5oYXNoICYmICh4LmlkeCA6IGludCkgPSB5LmlkeCAmJlxuICAgIENhdGVnb3J5LmVxdWFsIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSAmJiBFLmVxdWFsIHguZGVzYyB5LmRlc2NcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgIGxldCBjID0gY29tcGFyZSAoeC5oYXNoIDogaW50KSB5Lmhhc2ggaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgIGxldCBjID0gQ2F0ZWdvcnkuY29tcGFyZSB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICBjb21wYXJlIHguZGVzYyB5LmRlc2NcblxuICB0eXBlIHQnID0gdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSB0J1xuICAgICAgbGV0IGVxdWFsID0gZXF1YWxcbiAgICAgIGxldCBoYXNoIHQgPSB0Lmhhc2hcbiAgICBlbmQpXG5lbmRcblxuKCoqKiogRmluZCBhIGZyZWUgaW5kZXggKioqKilcblxudHlwZSB3b3JraW5nX2FyZWEgPSBib29sIGFycmF5IHJlZlxuXG5sZXQgY3JlYXRlX3dvcmtpbmdfYXJlYSAoKSA9IHJlZiBbfCBmYWxzZSB8XVxuXG5sZXQgaW5kZXhfY291bnQgdyA9IEFycmF5Lmxlbmd0aCAhd1xuXG5sZXQgcmVzZXRfdGFibGUgYSA9IEFycmF5LmZpbGwgYSAwIChBcnJheS5sZW5ndGggYSkgZmFsc2VcblxubGV0IHJlYyBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgPVxuICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEUuVFNlcSAobCwgXywgXykgLT4gbWFya191c2VkX2luZGljZXMgdGJsIGxcbiAgICAgIHwgRS5URXhwIChtYXJrcywgXylcbiAgICAgIHwgRS5UTWF0Y2ggbWFya3MgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKF8sIGkpIC0+IGlmIGkgPj0gMCB0aGVuIHRibC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBtYXJrcy5NYXJrcy5tYXJrcylcblxubGV0IHJlYyBmaW5kX2ZyZWUgdGJsIGlkeCBsZW4gPVxuICBpZiBpZHggPSBsZW4gfHwgbm90IHRibC4oaWR4KSB0aGVuIGlkeCBlbHNlIGZpbmRfZnJlZSB0YmwgKGlkeCArIDEpIGxlblxuXG5sZXQgZnJlZV9pbmRleCB0YmxfcmVmIGwgPVxuICBsZXQgdGJsID0gIXRibF9yZWYgaW5cbiAgcmVzZXRfdGFibGUgdGJsO1xuICBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0YmwgaW5cbiAgbGV0IGlkeCA9IGZpbmRfZnJlZSB0YmwgMCBsZW4gaW5cbiAgaWYgaWR4ID0gbGVuIHRoZW4gdGJsX3JlZiA6PSBBcnJheS5tYWtlICgyICogbGVuKSBmYWxzZTtcbiAgaWR4XG5cbigqKioqIENvbXB1dGF0aW9uIG9mIHRoZSBuZXh0IHN0YXRlICoqKiopXG5cbmxldCByZW1vdmVfbWF0Y2hlcyA9IExpc3QuZmlsdGVyIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuXG5sZXQgcmVjIHNwbGl0X2F0X21hdGNoX3JlYyBsJyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBFLlRNYXRjaCBfIDo6IHIgLT4gKExpc3QucmV2IGwnLCByZW1vdmVfbWF0Y2hlcyByKVxuICB8IHggOjogciAgICAgICAgLT4gc3BsaXRfYXRfbWF0Y2hfcmVjICh4IDo6IGwnKSByXG5cbmxldCBzcGxpdF9hdF9tYXRjaCBsID0gc3BsaXRfYXRfbWF0Y2hfcmVjIFtdIGxcblxubGV0IHJlYyByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwgeSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+XG4gICAgKFtdLCBwcmV2KVxuICB8IEUuVE1hdGNoIF8gYXMgeCA6OiBfIC0+ICgqIFRydW5jYXRlIGFmdGVyIGZpcnN0IG1hdGNoICopXG4gICAgKFt4XSwgcHJldilcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgbGV0IChsJycsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCcgeCBpblxuICAgIGxldCAocicsIHByZXYnJykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2JyByIHkgaW5cbiAgICAoRS50c2VxIGtpbmQgbCcnIHggcicsIHByZXYnJylcbiAgfCBFLlRFeHAgKF9tYXJrcywge2RlZiA9IEVwczsgX30pIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB5LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeS5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcbiAgfCBFLlRFeHAgKF9tYXJrcywgeCkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHguaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh4LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuXG5sZXQgcmVjIHNldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgRS5UTWF0Y2ggbWFya3MgOjogciAtPlxuICAgIEUuVE1hdGNoIChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBFLlRTZXEgKHNldF9pZHggaWR4IGwnLCB4LCBraW5kKSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5URXhwIChtYXJrcywgeCkgOjogciAtPlxuICAgIEUuVEV4cCAoKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSwgeCkgOjogc2V0X2lkeCBpZHggclxuXG5sZXQgZmlsdGVyX21hcmtzIGIgZSBtYXJrcyA9XG4gIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gTGlzdC5maWx0ZXIgKGZ1biAoaSwgXykgLT4gaSA8IGIgfHwgaSA+IGUpIG1hcmtzLk1hcmtzLm1hcmtzIH1cblxubGV0IHJlYyBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gICgqRm9ybWF0LmVwcmludGYgXCIlZEAuXCIgeC5pZDsqKVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IHMgLT5cbiAgICBpZiBDc2V0Lm1lbSBjIHMgdGhlbiBFLnRleHAgbWFya3MgZXBzX2V4cHIgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgbGV0ICh5JycsIG1hcmtzJykgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgZmlyc3RcbiAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeSdcbiAgICAgIHdpdGhcbiAgICAgICAgTm9uZSAgICAgICAgLT4gKHknLCBtYXJrcylcbiAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHknLCBtYXJrcycpXG4gICAgaW5cbiAgICBiZWdpbiBtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHknJyB4IChFLlRNYXRjaCBtYXJrcycgOjogcmVtKVxuICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB5JycgeCByZW1cbiAgICBlbmRcbiAgfCBFcHMgLT5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MubWFya3MgPSAoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgUG1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5wbWFya3MgPSBQbWFyay5TZXQuYWRkIGkgbWFya3MuTWFya3MucG1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBFLlRNYXRjaCAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykgOjogcmVtXG4gIHwgQmVmb3JlIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IG5leHRfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWZ0ZXIgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgcHJldl9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cblxuYW5kIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxuYW5kIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5IHogcmVtID1cbiAgbWF0Y2hcbiAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeVxuICB3aXRoXG4gICAgTm9uZSAtPlxuICAgIEUudHNlcSBraW5kIHkgeiByZW1cbiAgfCBTb21lIG1hcmtzIC0+XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICBgTG9uZ2VzdCAtPlxuICAgICAgRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogcmVtKVxuICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6XG4gICAgICAgIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiByZW0pXG4gICAgfCBgRmlyc3QgLT5cbiAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICBFLnRzZXEga2luZCB5JyB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IChFLnRzZXEga2luZCB5JycgeiByZW0pKVxuXG5sZXQgcmVjIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIHggOjogcmVtXG5cbmFuZCBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmxldCBkZWx0YSB0YmxfcmVmIG5leHRfY2F0IGNoYXIgc3QgPVxuICBsZXQgcHJldl9jYXQgPSBzdC5TdGF0ZS5jYXRlZ29yeSBpblxuICBsZXQgKGV4cHInLCBfKSA9XG4gICAgcmVtb3ZlX2R1cGxpY2F0ZXMgW11cbiAgICAgIChkZWx0YV80IGNoYXIgfm5leHRfY2F0IH5wcmV2X2NhdCBzdC5TdGF0ZS5kZXNjIFtdKVxuICAgICAgZXBzX2V4cHIgaW5cbiAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgU3RhdGUubWsgaWR4IG5leHRfY2F0IGV4cHInJ1xuXG4oKioqKilcblxubGV0IHJlYyByZWRfdHIgPSBmdW5jdGlvblxuICB8IFtdIHwgW19dIGFzIGwgLT5cbiAgICBsXG4gIHwgKChzMSwgc3QxKSBhcyB0cjEpIDo6ICgoczIsIHN0MikgYXMgdHIyKSA6OiByZW0gLT5cbiAgICBpZiBTdGF0ZS5lcXVhbCBzdDEgc3QyIHRoZW5cbiAgICAgIHJlZF90ciAoKENzZXQudW5pb24gczEgczIsIHN0MSkgOjogcmVtKVxuICAgIGVsc2VcbiAgICAgIHRyMSA6OiByZWRfdHIgKHRyMiA6OiByZW0pXG5cbmxldCBzaW1wbF90ciBsID1cbiAgTGlzdC5zb3J0XG4gICAgKGZ1biAoczEsIF8pIChzMiwgXykgLT4gY29tcGFyZSBzMSBzMilcbiAgICAocmVkX3RyIChMaXN0LnNvcnQgKGZ1biAoXywgc3QxKSAoXywgc3QyKSAtPiBTdGF0ZS5jb21wYXJlIHN0MSBzdDIpIGwpKVxuXG4oKioqKilcblxubGV0IHByZXBlbmRfZGVyaXYgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgeCkgbCAtPiBDc2V0LnByZXBlbmQgcyB4IGwpXG5cbmxldCByZWMgcmVzdHJpY3QgcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAocycsIHgnKSA6OiByZW0gLT5cbiAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICB0aGVuIHJlc3RyaWN0IHMgcmVtXG4gICAgZWxzZSAocycnLCB4JykgOjogcmVzdHJpY3QgcyByZW1cblxubGV0IHJlYyByZW1vdmVfbWFya3MgYiBlIHJlbSA9XG4gIGlmIGIgPiBlIHRoZW4gcmVtIGVsc2UgcmVtb3ZlX21hcmtzIGIgKGUgLSAxKSAoKGUsIC0yKSA6OiByZW0pXG5cbmxldCByZWMgcHJlcGVuZF9tYXJrc19leHByIG0gPSBmdW5jdGlvblxuICB8IEUuVFNlcSAobCwgZScsIHMpIC0+IEUuVFNlcSAocHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwsIGUnLCBzKVxuICB8IEUuVEV4cCAobScsIGUnKSAgIC0+IEUuVEV4cCAoTWFya3MubWVyZ2UgbSBtJywgZScpXG4gIHwgRS5UTWF0Y2ggbScgICAgICAgLT4gRS5UTWF0Y2ggKE1hcmtzLm1lcmdlIG0gbScpXG5cbmFuZCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCA9XG4gIExpc3QubWFwIChwcmVwZW5kX21hcmtzX2V4cHIgbSkgbFxuXG5sZXQgcHJlcGVuZF9tYXJrcyBtID1cbiAgTGlzdC5tYXAgKGZ1biAocywgeCkgLT4gKHMsIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSB4KSlcblxubGV0IHJlYyBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgfCBDc3QgcyAtPlxuICAgIENzZXQucHJlcGVuZCBzIFtFLnRleHAgbWFya3MgZXBzX2V4cHJdIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeikgcmVtIC0+XG4gICAgICAgICBsZXQgKHonLCBtYXJrcycpID1cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgICB6XG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICBOb25lICAgICAgICAtPiAoeiwgbWFya3MpXG4gICAgICAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHosIG1hcmtzJylcbiAgICAgICAgIGluXG4gICAgICAgICBDc2V0LnByZXBlbmQgc1xuICAgICAgICAgICAobWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB6JyB4IFtFLlRNYXRjaCBtYXJrcyddXG4gICAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHonIHggW10pXG4gICAgICAgICAgIHJlbSlcbiAgICAgIHknIHJlbVxuICB8IEVwcyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9ICgoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBQbWFyayBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnNcbiAgICAgIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChyZW1vdmVfbWFya3MgYiBlIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKS5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBCZWZvcmUgY2F0JyAtPlxuICAgIENzZXQucHJlcGVuZCAoTGlzdC5hc3NxIGNhdCcgY2F0ZWdvcmllcykgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBBZnRlciBjYXQnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IGNhdCBjYXQnIHRoZW4gQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgciByZW0pXG5cbmFuZCBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeSB6IHJlbSA9XG4gIGlmXG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gKF9zLCB4bCkgLT5cbiAgICAgICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSB4bClcbiAgICAgIHlcbiAgdGhlblxuICAgIGxldCB6JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgTWFya3MuZW1wdHkgY2F0IHogWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHkpIHJlbSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgeVxuICAgICAgICAgd2l0aFxuICAgICAgICAgICBOb25lIC0+XG4gICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5IHogW10pIHJlbVxuICAgICAgICAgfCBTb21lIG1hcmtzIC0+XG4gICAgICAgICAgIGxldCB6JycgPSBwcmVwZW5kX21hcmtzIG1hcmtzIHonIGluXG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIGBMb25nZXN0IC0+XG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgcmVtKVxuICAgICAgICAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIHJlbSlcbiAgICAgICAgICAgfCBgRmlyc3QgLT5cbiAgICAgICAgICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JyB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScnIHogW10pIHJlbSkpKVxuICAgICAgeSByZW1cbiAgZWxzZVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeGwpIHJlbSAtPiBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeGwgeiBbXSkgcmVtKSB5IHJlbVxuXG5sZXQgcmVjIGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW3hdIHJlbVxuXG5hbmQgZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgciByZW0pXG5cbmxldCBkZXJpdiB0YmxfcmVmIGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0ID1cbiAgbGV0IGRlciA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QuU3RhdGUuY2F0ZWdvcnkgc3QuU3RhdGUuZGVzY1xuICAgICAgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgc2ltcGxfdHIgKFxuICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCBleHByKSByZW0gLT5cbiAgICAgICAgbGV0IChleHByJywgXykgPSByZW1vdmVfZHVwbGljYXRlcyBbXSBleHByIGVwc19leHByIGluXG4oKlxuRm9ybWF0LmVwcmludGYgXCJAWzwzPkBbJWFAXTogJWEgLyAlYUBdQC5cIiBDc2V0LnByaW50IHMgcHJpbnRfc3RhdGUgZXhwciBwcmludF9zdGF0ZSBleHByJztcbiopXG4gICAgICAgIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgICAgICAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChjYXQnLCBzJykgcmVtIC0+XG4gICAgICAgICAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgICAgICAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgICAgICAgICAgdGhlbiByZW1cbiAgICAgICAgICAgIGVsc2UgKHMnJywgU3RhdGUubWsgaWR4IGNhdCcgZXhwcicnKSA6OiByZW0pXG4gICAgICAgICAgY2F0ZWdvcmllcyByZW0pIGRlciBbXSlcblxuKCoqKiopXG5cbmxldCBmbGF0dGVuX21hdGNoIG0gPVxuICBsZXQgbWEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG1hIChpLCBfKSAtPiBtYXggbWEgaSkgKC0xKSBtIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChtYSArIDEpICgtMSkgaW5cbiAgTGlzdC5pdGVyIChmdW4gKGksIHYpIC0+IHJlcy4oaSkgPC0gdikgbTtcbiAgcmVzXG5cbmxldCBzdGF0dXMgcyA9XG4gIG1hdGNoIHMuU3RhdGUuc3RhdHVzIHdpdGhcbiAgICBTb21lIHN0IC0+XG4gICAgc3RcbiAgfCBOb25lIC0+XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIHMuU3RhdGUuZGVzYyB3aXRoXG4gICAgICAgIFtdICAgICAgICAgICAgICAtPiBGYWlsZWRcbiAgICAgIHwgRS5UTWF0Y2ggbSA6OiBfIC0+IE1hdGNoIChmbGF0dGVuX21hdGNoIG0uTWFya3MubWFya3MsIG0uTWFya3MucG1hcmtzKVxuICAgICAgfCBfICAgICAgICAgICAgICAgLT4gUnVubmluZ1xuICAgIGluXG4gICAgcy5TdGF0ZS5zdGF0dXMgPC0gU29tZSBzdDtcbiAgICBzdFxuIiwiKCogSW4gcmVhbGl0eSwgdGhpcyBjYW4gcmVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIGEgYm9vbCBhcnJheS5cblxuICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIGxpc3Qgb2YgYWxsIGNoYXJzIGFsb25nIHdpdGggYVxuICAgZmxhZzpcblxuICAgKGEsIDApLCAoYiwgMSksIChjLCAwKSwgKGQsIDApLCAuLi5cblxuICAgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgY29sb3IgYXJlIHJlcHJlc2VudGVkIGJ5IHNlcXVuY2VzIG9mXG4gICBjaGFyYWN0ZXJzIHdpdGggdGhlIGZsYWcgc2V0IHRvIDAuXG4qKVxuXG50eXBlIHQgPSBCeXRlcy50XG5cbmxldCBtYWtlICgpID0gQnl0ZXMubWFrZSAyNTcgJ1xcMDAwJ1xuXG5sZXQgZmxhdHRlbiBjbSA9XG4gIGxldCBjID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgY29sb3JfcmVwciA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IHYgPSByZWYgMCBpblxuICBCeXRlcy5zZXQgYyAwICdcXDAwMCc7XG4gIEJ5dGVzLnNldCBjb2xvcl9yZXByIDAgJ1xcMDAwJztcbiAgZm9yIGkgPSAxIHRvIDI1NSBkb1xuICAgIGlmIEJ5dGVzLmdldCBjbSBpIDw+ICdcXDAwMCcgdGhlbiBpbmNyIHY7XG4gICAgQnl0ZXMuc2V0IGMgaSAoQ2hhci5jaHIgIXYpO1xuICAgIEJ5dGVzLnNldCBjb2xvcl9yZXByICF2IChDaGFyLmNociBpKVxuICBkb25lO1xuICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjLCBCeXRlcy5zdWJfc3RyaW5nIGNvbG9yX3JlcHIgMCAoIXYgKyAxKSwgIXYgKyAxKVxuXG4oKiBtYXJrIGFsbCB0aGUgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMgb2YgdGhlIGNoYXIgc2V0IHdpdGggdGhlIDEgYnl0ZSAqKVxubGV0IHNwbGl0IHMgY20gPVxuICBDc2V0Lml0ZXIgcyB+ZjooZnVuIGkgaiAtPlxuICAgICAgQnl0ZXMuc2V0IGNtIGkgJ1xcMDAxJztcbiAgICAgIEJ5dGVzLnNldCBjbSAoaiArIDEpICdcXDAwMSc7XG4gICAgKVxuIiwiKCogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gKilcbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG1hcmtzIDogQXV0b21hdGEubWFya19pbmZvc1xuICA7IHBtYXJrcyA6IFBtYXJrLlNldC50XG4gIDsgZ3BvcyA6IGludCBhcnJheVxuICA7IGdjb3VudCA6IGludFxuICB9XG5cbmxldCBvZmZzZXQgdCBpID1cbiAgaWYgMiAqIGkgKyAxID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgaWYgbTEgPSAtMSB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAocDEsIHAyKVxuXG5sZXQgZ2V0IHQgaSA9XG4gIGxldCAocDEsIHAyKSA9IG9mZnNldCB0IGkgaW5cbiAgU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG5cbmxldCBzdGFydCBzdWJzIGkgPSBmc3QgKG9mZnNldCBzdWJzIGkpXG5cbmxldCBzdG9wIHN1YnMgaSA9IHNuZCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHRlc3QgdCBpID1cbiAgaWYgMiAqIGkgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlblxuICAgIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaWR4ID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWR4IDw+IC0xXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIGlmIHRlc3QgdCBpXG4gIHRoZW4gU29tZSAoZ2V0IHQgaSlcbiAgZWxzZSBOb25lXG5cbmxldCBkdW1teV9vZmZzZXQgPSAoLTEsIC0xKVxuXG5sZXQgYWxsX29mZnNldCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfb2Zmc2V0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gKHAxLCBwMilcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBkdW1teV9zdHJpbmcgPSBcIlwiXG5cbmxldCBhbGwgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X3N0cmluZyBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IHBwIGZtdCB0ID1cbiAgbGV0IG1hdGNoZXMgPVxuICAgIGxldCBvZmZzZXRzID0gYWxsX29mZnNldCB0IGluXG4gICAgbGV0IHN0cnMgPSBhbGwgdCBpblxuICAgIEFycmF5LnRvX2xpc3QgKFxuICAgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHN0cnMpIChmdW4gaSAtPiBzdHJzLihpKSwgb2Zmc2V0cy4oaSkpXG4gICAgKSBpblxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHBwX21hdGNoIGZtdCAoc3RyLCAoc3RhcnQsIHN0b3ApKSA9XG4gICAgZnByaW50ZiBmbXQgXCJAWyglcyAoJWQgJWQpKUBdXCIgc3RyIHN0YXJ0IHN0b3AgaW5cbiAgc2V4cCBmbXQgXCJHcm91cFwiIChsaXN0IHBwX21hdGNoKSBtYXRjaGVzXG5cbmxldCBuYl9ncm91cHMgdCA9IHQuZ2NvdW50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5sZXQgcmVjIGl0ZXIgbiBmIHYgPSBpZiBuID0gMCB0aGVuIHYgZWxzZSBpdGVyIChuIC0gMSkgZiAoZiB2KVxuXG4oKioqKilcblxubGV0IHVua25vd24gPSAtMlxubGV0IGJyZWFrID0gLTNcblxudHlwZSBtYXRjaF9pbmZvID1cbiAgfCBNYXRjaCBvZiBHcm91cC50XG4gIHwgRmFpbGVkXG4gIHwgUnVubmluZyBvZiB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgOiBpbnQgfVxuXG50eXBlIHN0YXRlID1cbiAgeyBpZHggOiBpbnQ7XG4gICAgKCogSW5kZXggb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHBvc2l0aW9uIHRhYmxlLlxuICAgICAgIE5vdCB5ZXQgY29tcHV0ZWQgdHJhbnNpdGlvbnMgcG9pbnQgdG8gYSBkdW1teSBzdGF0ZSB3aGVyZVxuICAgICAgIFtpZHhdIGlzIHNldCB0byBbdW5rbm93bl07XG4gICAgICAgSWYgW2lkeF0gaXMgc2V0IHRvIFticmVha10gZm9yIHN0YXRlcyB0aGF0IGVpdGhlciBhbHdheXNcbiAgICAgICBzdWNjZWVkIG9yIGFsd2F5cyBmYWlsLiAqKVxuICAgIHJlYWxfaWR4IDogaW50O1xuICAgICgqIFRoZSByZWFsIGluZGV4LCBpbiBjYXNlIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdICopXG4gICAgbmV4dCA6IHN0YXRlIGFycmF5O1xuICAgICgqIFRyYW5zaXRpb24gdGFibGUsIGluZGV4ZWQgYnkgY29sb3IgKilcbiAgICBtdXRhYmxlIGZpbmFsIDpcbiAgICAgIChDYXRlZ29yeS50ICpcbiAgICAgICAoQXV0b21hdGEuaWR4ICogQXV0b21hdGEuc3RhdHVzKSkgbGlzdDtcbiAgICAoKiBNYXBwaW5nIGZyb20gdGhlIGNhdGVnb3J5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b1xuICAgICAgIC0gdGhlIGluZGV4IHdoZXJlIHRoZSBuZXh0IHBvc2l0aW9uIHNob3VsZCBiZSBzYXZlZFxuICAgICAgIC0gcG9zc2libHksIHRoZSBsaXN0IG9mIG1hcmtzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5kaWNlcylcbiAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJlc3QgbWF0Y2ggKilcbiAgICBkZXNjIDogQXV0b21hdGEuU3RhdGUudFxuICAgICgqIERlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgb2YgdGhlIGF1dG9tYXRhICopIH1cblxuKCogQXV0b21hdGEgKGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbikgKilcbnR5cGUgcmUgPVxuICB7IGluaXRpYWwgOiBBdXRvbWF0YS5leHByO1xuICAgICgqIFRoZSB3aG9sZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc3RhdGVzIDogKENhdGVnb3J5LnQgKiBzdGF0ZSkgbGlzdDtcbiAgICAoKiBJbml0aWFsIHN0YXRlcywgaW5kZXhlZCBieSBpbml0aWFsIGNhdGVnb3J5ICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlICopXG4gICAgY29sb3JfcmVwciA6IHN0cmluZztcbiAgICAoKiBUYWJsZSBmcm9tIGNvbG9ycyB0byBvbmUgY2hhcmFjdGVyIG9mIHRoaXMgY29sb3IgKilcbiAgICBuY29sb3IgOiBpbnQ7XG4gICAgKCogTnVtYmVyIG9mIGNvbG9ycy4gKilcbiAgICBsbmwgOiBpbnQ7XG4gICAgKCogQ29sb3Igb2YgdGhlIGxhc3QgbmV3bGluZS4gLTEgaWYgdW5uZWNlc3NhcnkgKilcbiAgICB0YmwgOiBBdXRvbWF0YS53b3JraW5nX2FyZWE7XG4gICAgKCogVGVtcG9yYXJ5IHRhYmxlIHVzZWQgdG8gY29tcHV0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGluZGV4XG4gICAgICAgd2hlbiBjb21wdXRpbmcgYSBuZXcgc3RhdGUgKilcbiAgICBzdGF0ZXMgOiBzdGF0ZSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS50O1xuICAgICgqIFN0YXRlcyBvZiB0aGUgZGV0ZXJtaW5pc3RpYyBhdXRvbWF0YSAqKVxuICAgIGdyb3VwX25hbWVzIDogKHN0cmluZyAqIGludCkgbGlzdDtcbiAgICAoKiBOYW1lZCBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIGdyb3VwX2NvdW50IDogaW50XG4gICAgKCogTnVtYmVyIG9mIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopIH1cblxubGV0IHBwX3JlIGNoIHJlID0gQXV0b21hdGEucHAgY2ggcmUuaW5pdGlhbFxuXG5sZXQgcHJpbnRfcmUgPSBwcF9yZVxuXG5sZXQgZ3JvdXBfY291bnQgcmUgPSByZS5ncm91cF9jb3VudFxuXG5sZXQgZ3JvdXBfbmFtZXMgcmUgPSByZS5ncm91cF9uYW1lc1xuXG4oKiBJbmZvcm1hdGlvbiB1c2VkIGR1cmluZyBtYXRjaGluZyAqKVxudHlwZSBpbmZvID1cbiAgeyByZSA6IHJlO1xuICAgICgqIFRoZSBhdXRvbWF0YSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAoW3guY29sb3JzID0geC5yZS5jb2xvcnNdKVxuICAgICAgIFNob3J0Y3V0IHVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBtdXRhYmxlIHBvc2l0aW9ucyA6IGludCBhcnJheTtcbiAgICAoKiBBcnJheSBvZiBtYXJrIHBvc2l0aW9uc1xuICAgICAgIFRoZSBtYXJrIGFyZSBvZmYgYnkgb25lIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgcG9zIDogaW50O1xuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBpcyBzdGFydGVkICopXG4gICAgbGFzdCA6IGludFxuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBzaG91bGQgc3RvcCAqKSB9XG5cblxuKCoqKiopXG5cbmxldCBjYXRlZ29yeSByZSB+Y29sb3IgPVxuICBpZiBjb2xvciA9IC0xIHRoZW5cbiAgICBDYXRlZ29yeS5pbmV4aXN0YW50XG4gICAgKCogU3BlY2lhbCBjYXRlZ29yeSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICBlbHNlIGlmIGNvbG9yID0gcmUubG5sIHRoZW5cbiAgICBDYXRlZ29yeS4obGFzdG5ld2xpbmUgKysgbmV3bGluZSArKyBub3RfbGV0dGVyKVxuICBlbHNlXG4gICAgQ2F0ZWdvcnkuZnJvbV9jaGFyIChyZS5jb2xvcl9yZXByLltjb2xvcl0pXG5cbigqKioqKVxuXG5sZXQgZHVtbXlfbmV4dCA9IFt8fF1cblxubGV0IHVua25vd25fc3RhdGUgPVxuICB7IGlkeCA9IHVua25vd247IHJlYWxfaWR4ID0gMDtcbiAgICBuZXh0ID0gZHVtbXlfbmV4dDsgZmluYWwgPSBbXTtcbiAgICBkZXNjID0gQXV0b21hdGEuU3RhdGUuZHVtbXkgfVxuXG5sZXQgbWtfc3RhdGUgbmNvbCBkZXNjID1cbiAgbGV0IGJyZWFrX3N0YXRlID1cbiAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgZGVzYyB3aXRoXG4gICAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+IGZhbHNlXG4gICAgfCBBdXRvbWF0YS5GYWlsZWRcbiAgICB8IEF1dG9tYXRhLk1hdGNoIF8gLT4gdHJ1ZVxuICBpblxuICB7IGlkeCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gYnJlYWsgZWxzZSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICByZWFsX2lkeCA9IGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIG5leHQgPSBpZiBicmVha19zdGF0ZSB0aGVuIGR1bW15X25leHQgZWxzZSBBcnJheS5tYWtlIG5jb2wgdW5rbm93bl9zdGF0ZTtcbiAgICBmaW5hbCA9IFtdO1xuICAgIGRlc2MgfVxuXG5sZXQgZmluZF9zdGF0ZSByZSBkZXNjID1cbiAgdHJ5XG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuZmluZCByZS5zdGF0ZXMgZGVzY1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IG1rX3N0YXRlIHJlLm5jb2xvciBkZXNjIGluXG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuYWRkIHJlLnN0YXRlcyBkZXNjIHN0O1xuICAgIHN0XG5cbigqKioqIE1hdGNoIHdpdGggbWFya3MgKioqKilcblxubGV0IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCA9XG4gIGxldCBkZXNjID0gQXV0b21hdGEuZGVsdGEgaW5mby5yZS50YmwgY2F0IGNvbG9yIHN0LmRlc2MgaW5cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBpbmZvLnBvc2l0aW9ucyBpblxuICBpZiBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeCA9IGxlbiAmJiBsZW4gPiAwIHRoZW4gYmVnaW5cbiAgICBsZXQgcG9zID0gaW5mby5wb3NpdGlvbnMgaW5cbiAgICBpbmZvLnBvc2l0aW9ucyA8LSBBcnJheS5tYWtlICgyICogbGVuKSAwO1xuICAgIEFycmF5LmJsaXQgcG9zIDAgaW5mby5wb3NpdGlvbnMgMCBsZW5cbiAgZW5kO1xuICBkZXNjXG5cbmxldCB2YWxpZGF0ZSBpbmZvIChzOnN0cmluZykgfnBvcyBzdCA9XG4gIGxldCBjb2xvciA9IENoYXIuY29kZSAoaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCBpblxuICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCdcblxubGV0IHJlYyBsb29wIGluZm8gcyB+cG9zIHN0ID1cbiAgaWYgcG9zIDwgaW5mby5sYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgbGV0IGlkeCA9IHN0Jy5pZHggaW5cbiAgICBpZiBpZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBwb3M7XG4gICAgICBsb29wIGluZm8gcyB+cG9zOihwb3MgKyAxKSBzdCdcbiAgICBlbmQgZWxzZSBpZiBpZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgICBzdCdcbiAgICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3Mgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCByZWMgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0ID1cbiAgaWYgcG9zIDwgbGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGlmIHN0Jy5pZHggPj0gMCB0aGVuXG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3M6KHBvcyArIDEpIH5sYXN0IHN0J1xuICAgIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0J1xuICAgIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCBmaW5hbCBpbmZvIHN0IGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgc3QuZmluYWxcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOigtMSkgc3QgaW5cbiAgICBsZXQgcmVzID0gKHN0Jy5BdXRvbWF0YS5TdGF0ZS5pZHgsIEF1dG9tYXRhLnN0YXR1cyBzdCcpIGluXG4gICAgc3QuZmluYWwgPC0gKGNhdCwgcmVzKSA6OiBzdC5maW5hbDtcbiAgICByZXNcblxubGV0IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHJlLmluaXRpYWxfc3RhdGVzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gZmluZF9zdGF0ZSByZSAoQXV0b21hdGEuU3RhdGUuY3JlYXRlIGNhdCByZS5pbml0aWFsKSBpblxuICAgIHJlLmluaXRpYWxfc3RhdGVzIDwtIChjYXQsIHN0KSA6OiByZS5pbml0aWFsX3N0YXRlcztcbiAgICBzdFxuXG5sZXQgZ2V0X2NvbG9yIHJlIChzOnN0cmluZykgcG9zID1cbiAgaWYgcG9zIDwgMCB0aGVuXG4gICAgLTFcbiAgZWxzZVxuICAgIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgaWYgcG9zID49IHNsZW4gdGhlblxuICAgICAgLTFcbiAgICBlbHNlIGlmIHBvcyA9IHNsZW4gLSAxICYmIHJlLmxubCA8PiAtMSAmJiBzLltwb3NdID0gJ1xcbicgdGhlblxuICAgICAgKCogU3BlY2lhbCBjYXNlIGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gICAgICByZS5sbmxcbiAgICBlbHNlXG4gICAgICBDaGFyLmNvZGUgcmUuY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV1cblxubGV0IHJlYyBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzID1cbiAgbGV0IHN0JyA9IHN0Lm5leHQuKGluZm8ucmUubG5sKSBpblxuICBpZiBzdCcuaWR4ID49IDAgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcuaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgbGV0IGNvbG9yID0gaW5mby5yZS5sbmwgaW5cbiAgICBsZXQgcmVhbF9jID0gQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgJ1xcbiddIGluXG4gICAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gICAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOnJlYWxfYyBzdCBpblxuICAgIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnO1xuICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHNcbiAgZW5kXG5cbmxldCByZWMgc2Nhbl9zdHIgaW5mbyAoczpzdHJpbmcpIGluaXRpYWxfc3RhdGUgfmdyb3VwcyA9XG4gIGxldCBwb3MgPSBpbmZvLnBvcyBpblxuICBsZXQgbGFzdCA9IGluZm8ubGFzdCBpblxuICBpZiAobGFzdCA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgJiYgaW5mby5yZS5sbmwgPD4gLTFcbiAgICAgICYmIGxhc3QgPiBwb3NcbiAgICAgICYmIFN0cmluZy5nZXQgcyAobGFzdCAtIDEpID0gJ1xcbicpXG4gIHRoZW4gYmVnaW5cbiAgICBsZXQgaW5mbyA9IHsgaW5mbyB3aXRoIGxhc3QgPSBsYXN0IC0gMSB9IGluXG4gICAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0XG4gICAgZWxzZVxuICAgICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3M6KGxhc3QgLSAxKSBzdCB+Z3JvdXBzXG4gIGVuZCBlbHNlIGlmIGdyb3VwcyB0aGVuXG4gICAgbG9vcCBpbmZvIHMgfnBvcyBpbml0aWFsX3N0YXRlXG4gIGVsc2VcbiAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3QgaW5pdGlhbF9zdGF0ZVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBmaW5hbCBib3VuZGFyeSBjaGVjayBvbiB0aGUgaW5wdXQuXG4gICBUaGlzIGlzIHVzZWZ1bCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZmFpbGVkIGJlY2F1c2VcbiAgIG9mIGluc3VmZmljaWVudCBpbnB1dCwgb3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseVxuICAgbWF0Y2hlcyBmb3IgcmVnZXggdGhhdCBoYXZlIGJvdW5kYXJ5IGNvbmRpdGlvbnMgd2l0aCByZXNwZWN0XG4gICB0byB0aGUgaW5wdXQgc3RyaW5nLlxuICopXG5sZXQgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyA9XG4gIGxldCBmaW5hbF9jYXQgPVxuICAgIGlmIGxhc3QgPSBzbGVuIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgbGFzdCkpXG4gIGluXG4gIGxldCAoaWR4LCByZXMpID0gZmluYWwgaW5mbyBzdCBmaW5hbF9jYXQgaW5cbiAgKG1hdGNoIGdyb3VwcywgcmVzIHdpdGhcbiAgfCB0cnVlLCBNYXRjaCBfIC0+IGluZm8ucG9zaXRpb25zLihpZHgpIDwtIGxhc3RcbiAgfCBfIC0+ICgpKTtcbiAgcmVzXG5cbmxldCBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsYXN0ID0gaWYgbGVuID0gLTEgdGhlbiBzbGVuIGVsc2UgcG9zICsgbGVuIGluXG4gIGxldCBpbmZvID1cbiAgICB7IHJlIDsgY29sb3JzID0gcmUuY29sb3JzOyBwb3MgOyBsYXN0XG4gICAgOyBwb3NpdGlvbnMgPVxuICAgICAgICBpZiBncm91cHMgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuID0gQXV0b21hdGEuaW5kZXhfY291bnQgcmUudGJsICsgMSBpblxuICAgICAgICAgIGlmIG4gPD0gMTAgdGhlblxuICAgICAgICAgICAgW3wwOzA7MDswOzA7MDswOzA7MDswfF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5tYWtlIG4gMFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIFt8fF0gfVxuICBpblxuICBsZXQgaW5pdGlhbF9jYXQgPVxuICAgIGlmIHBvcyA9IDAgdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnlcbiAgICAgICAgICAgICAgICArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIChwb3MgLSAxKSkpXG4gIGluXG4gIGxldCBpbml0aWFsX3N0YXRlID0gZmluZF9pbml0aWFsX3N0YXRlIHJlIGluaXRpYWxfY2F0IGluXG4gIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgbGV0IHJlcyA9XG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgfHwgKHBhcnRpYWwgJiYgbm90IGdyb3VwcykgdGhlblxuICAgICAgQXV0b21hdGEuc3RhdHVzIHN0LmRlc2NcbiAgICBlbHNlIGlmIHBhcnRpYWwgJiYgZ3JvdXBzIHRoZW5cbiAgICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjIHdpdGhcbiAgICAgIHwgTWF0Y2ggXyB8IEZhaWxlZCBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgKCogVGhpcyBjb3VsZCBiZSBiZWNhdXNlIGl0J3Mgc3RpbGwgbm90IGZ1bGx5IG1hdGNoZWQsIG9yIGl0XG4gICAgICAgICAgIGNvdWxkIGJlIHRoYXQgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biBzcGVjaWFsIGVuZCBvZiBpbnB1dFxuICAgICAgICAgICBjaGVja3MuICopXG4gICAgICAgIChtYXRjaCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzIHdpdGhcbiAgICAgICAgIHwgTWF0Y2ggXyBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICAgICB8IEZhaWxlZCB8IFJ1bm5pbmcgLT5cbiAgICAgICAgICAgKCogQSBmYWlsdXJlIGhlcmUganVzdCBtZWFucyB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhLCBpLmUuXG4gICAgICAgICAgICAgIGl0J3MgYSBwYXJ0aWFsIG1hdGNoLiAqKVxuICAgICAgICAgICBSdW5uaW5nKVxuICAgIGVsc2UgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3Vwc1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICAgIEF1dG9tYXRhLk1hdGNoIChtYXJrcywgcG1hcmtzKSAtPlxuICAgIE1hdGNoIHsgcyA7IG1hcmtzOyBwbWFya3MgOyBncG9zID0gaW5mby5wb3NpdGlvbnM7IGdjb3VudCA9IHJlLmdyb3VwX2NvdW50fVxuICB8IEF1dG9tYXRhLkZhaWxlZCAtPiBGYWlsZWRcbiAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+XG4gICAgbGV0IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgPSBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oMCkgZWxzZSAwIGluXG4gICAgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfVxuXG5sZXQgbWtfcmUgfmluaXRpYWwgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzIH5ncm91cF9jb3VudCA9XG4gIHsgaW5pdGlhbCA7XG4gICAgaW5pdGlhbF9zdGF0ZXMgPSBbXTtcbiAgICBjb2xvcnM7XG4gICAgY29sb3JfcmVwcjtcbiAgICBuY29sb3I7XG4gICAgbG5sO1xuICAgIHRibCA9IEF1dG9tYXRhLmNyZWF0ZV93b3JraW5nX2FyZWEgKCk7XG4gICAgc3RhdGVzID0gQXV0b21hdGEuU3RhdGUuVGFibGUuY3JlYXRlIDk3O1xuICAgIGdyb3VwX25hbWVzO1xuICAgIGdyb3VwX2NvdW50IH1cblxuKCoqKiogQ2hhcmFjdGVyIHNldHMgKioqKilcblxubGV0IGNzZXEgYyBjJyA9IENzZXQuc2VxIChDaGFyLmNvZGUgYykgKENoYXIuY29kZSBjJylcbmxldCBjYWRkIGMgcyA9IENzZXQuYWRkIChDaGFyLmNvZGUgYykgc1xuXG5sZXQgdHJhbnNfc2V0IGNhY2hlIGNtIHMgPVxuICBtYXRjaCBDc2V0Lm9uZV9jaGFyIHMgd2l0aFxuICB8IFNvbWUgaSAtPiBDc2V0LmNzaW5nbGUgY20uW2ldXG4gIHwgTm9uZSAtPlxuICAgIGxldCB2ID0gKENzZXQuaGFzaF9yZWMgcywgcykgaW5cbiAgICB0cnlcbiAgICAgIENzZXQuQ1NldE1hcC5maW5kIHYgIWNhY2hlXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBsID1cbiAgICAgICAgQ3NldC5mb2xkX3JpZ2h0XG4gICAgICAgICAgc1xuICAgICAgICAgIH5mOihmdW4gKGksIGopIGwgLT4gQ3NldC51bmlvbiAoY3NlcSBjbS5baV0gY20uW2pdKSBsKVxuICAgICAgICAgIH5pbml0OkNzZXQuZW1wdHlcbiAgICAgIGluXG4gICAgICBjYWNoZSA6PSBDc2V0LkNTZXRNYXAuYWRkIHYgbCAhY2FjaGU7XG4gICAgICBsXG5cbigqKioqKVxuXG50eXBlIHJlZ2V4cCA9XG4gICAgU2V0IG9mIENzZXQudFxuICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG5tb2R1bGUgVmlldyA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWdleHAgPVxuICAgICAgU2V0IG9mIENzZXQudFxuICAgIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICAgIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICAgIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICAgIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG4gIGxldCB2aWV3IHQgPSB0XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgdCA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgdmFyIHMgcmUgPSBzZXhwIGZtdCBzIHBwIHJlIGluXG4gIGxldCBzZXEgcyByZWwgPSBzZXhwIGZtdCBzIChsaXN0IHBwKSByZWwgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2V0IHMgLT4gIHNleHAgZm10IFwiU2V0XCIgQ3NldC5wcCBzXG4gIHwgU2VxdWVuY2Ugc3EgLT4gc2VxIFwiU2VxdWVuY2VcIiBzcVxuICB8IEFsdGVybmF0aXZlIGFsdCAtPiBzZXEgXCJBbHRlcm5hdGl2ZVwiIGFsdFxuICB8IFJlcGVhdCAocmUsIHN0YXJ0LCBzdG9wKSAtPlxuICAgIGxldCBwcCcgZm10ICgpID0gZnByaW50ZiBmbXQgXCIlYUAgJWQlYVwiIHBwIHJlICAgc3RhcnQgICBvcHRpbnQgc3RvcCBpblxuICAgIHNleHAgZm10IFwiUmVwZWF0XCIgcHAnICgpXG4gIHwgQmVnX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX2xpbmVcIlxuICB8IEVuZF9vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9saW5lXCJcbiAgfCBCZWdfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfd29yZFwiXG4gIHwgRW5kX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3dvcmRcIlxuICB8IE5vdF9ib3VuZCAgICAgICAgLT4gc3RyIGZtdCBcIk5vdF9ib3VuZFwiXG4gIHwgQmVnX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3N0clwiXG4gIHwgRW5kX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3N0clwiXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPiBzdHIgZm10IFwiTGFzdF9lbmRfb2ZfbGluZVwiXG4gIHwgU3RhcnQgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RhcnRcIlxuICB8IFN0b3AgICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0b3BcIlxuICB8IFNlbSAoc2VtLCByZSkgICAgLT5cbiAgICBzZXhwIGZtdCBcIlNlbVwiIChwYWlyIEF1dG9tYXRhLnBwX3NlbSBwcCkgKHNlbSwgcmUpXG4gIHwgU2VtX2dyZWVkeSAoaywgcmUpIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1fZ3JlZWR5XCIgKHBhaXIgQXV0b21hdGEucHBfcmVwX2tpbmQgcHApIChrLCByZSlcbiAgfCBHcm91cCAoTm9uZSwgYykgICAtPiB2YXIgXCJHcm91cFwiIGNcbiAgfCBHcm91cCAoU29tZSBuLCBjKSAtPiBzZXhwIGZtdCBcIk5hbWVkX2dyb3VwXCIgKHBhaXIgc3RyIHBwKSAobiwgYylcbiAgfCBOb19ncm91cCBjICAgICAtPiB2YXIgXCJOb19ncm91cFwiIGNcbiAgfCBOZXN0IGMgICAgICAgICAtPiB2YXIgXCJOZXN0XCIgY1xuICB8IENhc2UgYyAgICAgICAgIC0+IHZhciBcIkNhc2VcIiBjXG4gIHwgTm9fY2FzZSBjICAgICAgLT4gdmFyIFwiTm9fY2FzZVwiIGNcbiAgfCBJbnRlcnNlY3Rpb24gYyAtPiBzZXEgXCJJbnRlcnNlY3Rpb25cIiBjXG4gIHwgQ29tcGxlbWVudCBjICAgLT4gc2VxIFwiQ29tcGxlbWVudFwiIGNcbiAgfCBEaWZmZXJlbmNlIChhLCBiKSAtPiBzZXhwIGZtdCBcIkRpZmZlcmVuY2VcIiAocGFpciBwcCBwcCkgKGEsIGIpXG4gIHwgUG1hcmsgKG0sIHIpICAgICAgLT4gc2V4cCBmbXQgXCJQbWFya1wiIChwYWlyIFBtYXJrLnBwIHBwKSAobSwgcilcblxubGV0IHJlYyBpc19jaGFyc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgXyAtPlxuICAgIHRydWVcbiAgfCBBbHRlcm5hdGl2ZSBsIHwgSW50ZXJzZWN0aW9uIGwgfCBDb21wbGVtZW50IGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgaXNfY2hhcnNldCBsXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgaXNfY2hhcnNldCByICYmIGlzX2NoYXJzZXQgcidcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgfCBOb19ncm91cCByIHwgQ2FzZSByIHwgTm9fY2FzZSByIC0+XG4gICAgaXNfY2hhcnNldCByXG4gIHwgU2VxdWVuY2UgXyB8IFJlcGVhdCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IE5vdF9ib3VuZCB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBHcm91cCBfIHwgTmVzdCBfIHwgUG1hcmsgKF8sXyktPlxuICAgIGZhbHNlXG5cbigqWFhYIFVzZSBhIGJldHRlciBhbGdvcml0aG0gYWxsb3dpbmcgbm9uLWNvbnRpZ3VvdXMgcmVnaW9ucz8gKilcblxubGV0IGN1cHBlciA9XG4gIENzZXQudW5pb24gKGNzZXEgJ0EnICdaJylcbiAgICAoQ3NldC51bmlvbiAoY3NlcSAnXFwxOTInICdcXDIxNCcpIChjc2VxICdcXDIxNicgJ1xcMjIyJykpXG5sZXQgY2xvd2VyID0gQ3NldC5vZmZzZXQgMzIgY3VwcGVyXG5sZXQgY2FscGhhID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGNhZGQgWydcXDE3MCc7ICdcXDE4MSc7ICdcXDE4Nic7ICdcXDIyMyc7ICdcXDI1NSddXG4gICAgKENzZXQudW5pb24gY2xvd2VyIGN1cHBlcilcbmxldCBjZGlnaXQgPSBjc2VxICcwJyAnOSdcbmxldCBjYWxudW0gPSBDc2V0LnVuaW9uIGNhbHBoYSBjZGlnaXRcbmxldCBjd29yZCA9IGNhZGQgJ18nIGNhbG51bVxuXG5sZXQgY29sb3JpemUgYyByZWdleHAgPVxuICBsZXQgbG5sID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgY29sb3JpemUgcmVnZXhwID1cbiAgICBtYXRjaCByZWdleHAgd2l0aFxuICAgICAgU2V0IHMgICAgICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgcyBjXG4gICAgfCBTZXF1ZW5jZSBsICAgICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBBbHRlcm5hdGl2ZSBsICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBSZXBlYXQgKHIsIF8sIF8pICAgICAgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgLT4gQ29sb3JfbWFwLnNwbGl0IChDc2V0LmNzaW5nbGUgJ1xcbicpIGNcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZCAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IGN3b3JkIGNcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBTdGFydCB8IFN0b3AgICAgICAgICAgICAgIC0+ICgpXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lICAgICAgICAgIC0+IGxubCA6PSB0cnVlXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKVxuICAgIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByIHwgUG1hcmsgKF8scikgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IENhc2UgXyB8IE5vX2Nhc2UgX1xuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSBfICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgY29sb3JpemUgcmVnZXhwO1xuICAhbG5sXG5cbigqKioqIENvbXBpbGF0aW9uICoqKiopXG5cbmxldCByZWMgZXF1YWwgeDEgeDIgPVxuICBtYXRjaCB4MSwgeDIgd2l0aFxuICAgIFNldCBzMSwgU2V0IHMyIC0+XG4gICAgczEgPSBzMlxuICB8IFNlcXVlbmNlIGwxLCBTZXF1ZW5jZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBBbHRlcm5hdGl2ZSBsMSwgQWx0ZXJuYXRpdmUgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgUmVwZWF0ICh4MScsIGkxLCBqMSksIFJlcGVhdCAoeDInLCBpMiwgajIpIC0+XG4gICAgaTEgPSBpMiAmJiBqMSA9IGoyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBCZWdfb2ZfbGluZSwgQmVnX29mX2xpbmVcbiAgfCBFbmRfb2ZfbGluZSwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCwgQmVnX29mX3dvcmRcbiAgfCBFbmRfb2Zfd29yZCwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQsIE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIsIEJlZ19vZl9zdHJcbiAgfCBFbmRfb2Zfc3RyLCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSwgTGFzdF9lbmRfb2ZfbGluZVxuICB8IFN0YXJ0LCBTdGFydFxuICB8IFN0b3AsIFN0b3AgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChzZW0xLCB4MScpLCBTZW0gKHNlbTIsIHgyJykgLT5cbiAgICBzZW0xID0gc2VtMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgU2VtX2dyZWVkeSAoazEsIHgxJyksIFNlbV9ncmVlZHkgKGsyLCB4MicpIC0+XG4gICAgazEgPSBrMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgR3JvdXAgXywgR3JvdXAgXyAtPiAoKiBEbyBub3QgbWVyZ2UgZ3JvdXBzISAqKVxuICAgIGZhbHNlXG4gIHwgTm9fZ3JvdXAgeDEnLCBOb19ncm91cCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTmVzdCB4MScsIE5lc3QgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IENhc2UgeDEnLCBDYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOb19jYXNlIHgxJywgTm9fY2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgSW50ZXJzZWN0aW9uIGwxLCBJbnRlcnNlY3Rpb24gbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQ29tcGxlbWVudCBsMSwgQ29tcGxlbWVudCBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBEaWZmZXJlbmNlICh4MScsIHgxJycpLCBEaWZmZXJlbmNlICh4MicsIHgyJycpIC0+XG4gICAgZXF1YWwgeDEnIHgyJyAmJiBlcXVhbCB4MScnIHgyJydcbiAgfCBQbWFyayAobTEsIHIxKSwgUG1hcmsgKG0yLCByMikgLT5cbiAgICBQbWFyay5lcXVhbCBtMSBtMiAmJiBlcXVhbCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5hbmQgZXFfbGlzdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgW10sIFtdIC0+XG4gICAgdHJ1ZVxuICB8IHgxIDo6IHIxLCB4MiA6OiByMiAtPlxuICAgIGVxdWFsIHgxIHgyICYmIGVxX2xpc3QgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxubGV0IHNlcXVlbmNlID0gZnVuY3Rpb25cbiAgfCBbeF0gLT4geFxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCByZWMgbWVyZ2Vfc2VxdWVuY2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgQWx0ZXJuYXRpdmUgbCcgOjogciAtPlxuICAgIG1lcmdlX3NlcXVlbmNlcyAobCcgQCByKVxuICB8IFNlcXVlbmNlICh4IDo6IHkpIDo6IHIgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgciB3aXRoXG4gICAgICAgIFNlcXVlbmNlICh4JyA6OiB5JykgOjogcicgd2hlbiBlcXVhbCB4IHgnIC0+XG4gICAgICAgIFNlcXVlbmNlIFt4OyBBbHRlcm5hdGl2ZSBbc2VxdWVuY2UgeTsgc2VxdWVuY2UgeSddXSA6OiByJ1xuICAgICAgfCByJyAtPlxuICAgICAgICBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByJ1xuICAgIGVuZFxuICB8IHggOjogciAtPlxuICAgIHggOjogbWVyZ2Vfc2VxdWVuY2VzIHJcblxubW9kdWxlIEEgPSBBdXRvbWF0YVxuXG5sZXQgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyID1cbiAgbWF0Y2gga2luZCwga2luZCcgd2l0aFxuICAgIGBGaXJzdCwgYEZpcnN0IC0+IGNyXG4gIHwgYEZpcnN0LCBrICAgICAgIC0+IEEuc2VxIGlkcyBrIGNyIChBLmVwcyBpZHMpXG4gIHwgIF8gICAgICAgICAgICAgICAtPiBjclxuXG4oKiBYWFggc2hvdWxkIHByb2JhYmx5IGNvbXB1dGUgYSBjYXRlZ29yeSBtYXNrICopXG5sZXQgcmVjIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIChBLmNzdCBpZHMgKHRyYW5zX3NldCBjYWNoZSBjIHMpLCBraW5kKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICAodHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgbCwga2luZClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIGwgd2l0aFxuICAgICAgICBbciddIC0+XG4gICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciwga2luZClcbiAgICAgIHwgbWVyZ2VkX3NlcXVlbmNlcyAtPlxuICAgICAgICAoQS5hbHQgaWRzXG4gICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAoZnVuIHInIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHlcbiAgICAgICAgICAgICAgICAgICAgIHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgICAgICAgICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcilcbiAgICAgICAgICAgICAgbWVyZ2VkX3NlcXVlbmNlcyksXG4gICAgICAgICBraW5kKVxuICAgIGVuZFxuICB8IFJlcGVhdCAocicsIGksIGopIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgbGV0IHJlbSA9XG4gICAgICBtYXRjaCBqIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICBBLnJlcCBpZHMgZ3JlZWR5IGtpbmQnIGNyXG4gICAgICB8IFNvbWUgaiAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggZ3JlZWR5IHdpdGhcbiAgICAgICAgICAgIGBHcmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0Euc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW07IEEuZXBzIGlkc11cbiAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLmVwcyBpZHM7IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKGogLSBpKSBmIChBLmVwcyBpZHMpXG4gICAgaW5cbiAgICAoaXRlciBpIChmdW4gcmVtIC0+IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW0pIHJlbSwga2luZClcbiAgfCBCZWdfb2ZfbGluZSAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBFbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgQmVnX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlciksXG4gICAgIGtpbmQpXG4gIHwgRW5kX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSksXG4gICAgIGtpbmQpXG4gIHwgTm90X2JvdW5kIC0+XG4gICAgKEEuYWx0IGlkcyBbQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKTtcbiAgICAgICAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKV0sXG4gICAgIGtpbmQpXG4gIHwgQmVnX29mX3N0ciAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IEVuZF9vZl9zdHIgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbGFzdG5ld2xpbmUpLCBraW5kKVxuICB8IFN0YXJ0IC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTdG9wIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU2VtIChraW5kJywgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQnIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kJyBraW5kJycgY3IsXG4gICAgIGtpbmQnKVxuICB8IFNlbV9ncmVlZHkgKGdyZWVkeScsIHInKSAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5JyBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IEdyb3VwIChuLCByJykgLT5cbiAgICBpZiBpZ25fZ3JvdXAgdGhlblxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcCA9ICFwb3MgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lcyA6PSAobmFtZSwgcCAvIDIpIDo6ICFuYW1lc1xuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgIGluXG4gICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEubWFyayBpZHMgcCkgKFxuICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3QgY3IgKEEubWFyayBpZHMgKHAgKyAxKSkpLFxuICAgICAgIGtpbmQnKVxuICB8IE5vX2dyb3VwIHInIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIHRydWUgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgTmVzdCByJyAtPlxuICAgIGxldCBiID0gIXBvcyBpblxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGluXG4gICAgbGV0IGUgPSAhcG9zIC0gMSBpblxuICAgIGlmIGUgPCBiIHRoZW5cbiAgICAgIChjciwga2luZCcpXG4gICAgZWxzZVxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEuZXJhc2UgaWRzIGIgZSkgY3IsIGtpbmQnKVxuICB8IERpZmZlcmVuY2UgXyB8IENvbXBsZW1lbnQgXyB8IEludGVyc2VjdGlvbiBfIHwgTm9fY2FzZSBfIHwgQ2FzZSBfIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgUG1hcmsgKGksIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLnBtYXJrIGlkcyBpKSBjciwga2luZCcpXG5cbmFuZCB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBBLmVwcyBpZHNcbiAgfCBbcl0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3InXG4gIHwgciA6OiByZW0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBsZXQgY3InJyA9XG4gICAgICB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByZW0gaW5cbiAgICBpZiBBLmlzX2VwcyBjcicnIHRoZW5cbiAgICAgIGNyJ1xuICAgIGVsc2UgaWYgQS5pc19lcHMgY3InIHRoZW5cbiAgICAgIGNyJydcbiAgICBlbHNlXG4gICAgICBBLnNlcSBpZHMga2luZCcgY3InIGNyJydcblxuKCoqKiogQ2FzZSAqKioqKVxuXG5sZXQgY2FzZV9pbnNlbnMgcyA9XG4gIENzZXQudW5pb24gcyAoQ3NldC51bmlvbiAoQ3NldC5vZmZzZXQgMzIgKENzZXQuaW50ZXIgcyBjdXBwZXIpKVxuICAgICAgICAgICAgICAgICAgKENzZXQub2Zmc2V0ICgtMzIpIChDc2V0LmludGVyIHMgY2xvd2VyKSkpXG5cbmxldCBhc19zZXQgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+IHNcbiAgfCBfICAgICAtPiBhc3NlcnQgZmFsc2VcblxuKCogWFhYIFNob3VsZCBzcGxpdCBhbHRlcm5hdGl2ZXMgaW50byAoMSkgY2hhcnNldHMgYW5kICgyKSBtb3JlXG4gICBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGFsdGVybmF0aXZlIHNob3VsZCB0aGVyZWZvcmUgcHJvYmFibHlcbiAgIGJlIGZsYXR0ZW4gaGVyZSAqKVxubGV0IHJlYyBoYW5kbGVfY2FzZSBpZ25fY2FzZSA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICBTZXQgKGlmIGlnbl9jYXNlIHRoZW4gY2FzZV9pbnNlbnMgcyBlbHNlIHMpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIFNlcXVlbmNlIChMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbCBpblxuICAgIGlmIGlzX2NoYXJzZXQgKEFsdGVybmF0aXZlIGwnKSB0aGVuXG4gICAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKSBDc2V0LmVtcHR5IGwnKVxuICAgIGVsc2VcbiAgICAgIEFsdGVybmF0aXZlIGwnXG4gIHwgUmVwZWF0IChyLCBpLCBqKSAtPlxuICAgIFJlcGVhdCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciwgaSwgailcbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcCBhcyByIC0+XG4gICAgclxuICB8IFNlbSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtIChrLCByJylcbiAgfCBTZW1fZ3JlZWR5IChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW1fZ3JlZWR5IChrLCByJylcbiAgfCBHcm91cCAobiwgcikgLT5cbiAgICBHcm91cCAobiwgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcbiAgfCBOb19ncm91cCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5vX2dyb3VwIHInXG4gIHwgTmVzdCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5lc3QgcidcbiAgfCBDYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSBmYWxzZSByXG4gIHwgTm9fY2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgdHJ1ZSByXG4gIHwgSW50ZXJzZWN0aW9uIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC5pbnRlciBzIChhc19zZXQgcikpIENzZXQuY2FueSBsJylcbiAgfCBDb21wbGVtZW50IGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoQ3NldC5kaWZmIENzZXQuY2FueVxuICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpXG4gICAgICAgICAgICAgIENzZXQuZW1wdHkgbCcpKVxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIFNldCAoQ3NldC5pbnRlciAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSlcbiAgICAgICAgICAgKENzZXQuZGlmZiBDc2V0LmNhbnkgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcicpKSkpXG4gIHwgUG1hcmsgKGkscikgLT4gUG1hcmsgKGksaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcblxuKCoqKiopXG5cbmxldCBjb21waWxlXzEgcmVnZXhwID1cbiAgbGV0IHJlZ2V4cCA9IGhhbmRsZV9jYXNlIGZhbHNlIHJlZ2V4cCBpblxuICBsZXQgYyA9IENvbG9yX21hcC5tYWtlICgpIGluXG4gIGxldCBuZWVkX2xubCA9IGNvbG9yaXplIGMgcmVnZXhwIGluXG4gIGxldCAoY29sb3JzLCBjb2xvcl9yZXByLCBuY29sb3IpID0gQ29sb3JfbWFwLmZsYXR0ZW4gYyBpblxuICBsZXQgbG5sID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgZWxzZSAtMSBpblxuICBsZXQgbmNvbG9yID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgKyAxIGVsc2UgbmNvbG9yIGluXG4gIGxldCBpZHMgPSBBLmNyZWF0ZV9pZHMgKCkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCBuYW1lcyA9IHJlZiBbXSBpblxuICBsZXQgKHIsIGtpbmQpID1cbiAgICB0cmFuc2xhdGUgaWRzXG4gICAgICBgRmlyc3QgZmFsc2UgZmFsc2UgYEdyZWVkeSBwb3MgbmFtZXMgKHJlZiBDc2V0LkNTZXRNYXAuZW1wdHkpIGNvbG9ycyByZWdleHAgaW5cbiAgbGV0IHIgPSBlbmZvcmNlX2tpbmQgaWRzIGBGaXJzdCBraW5kIHIgaW5cbiAgKCpGb3JtYXQuZXByaW50ZiBcIjwlZCAlZD5ALlwiICFpZHMgbmNvbDsqKVxuICBta19yZSB+aW5pdGlhbDpyIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lczooTGlzdC5yZXYgIW5hbWVzKSB+Z3JvdXBfY291bnQ6KCFwb3MgLyAyKVxuXG4oKioqKilcblxubGV0IHJlYyBhbmNob3JlZCA9IGZ1bmN0aW9uXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIExpc3QuZXhpc3RzIGFuY2hvcmVkIGxcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGFuY2hvcmVkIGxcbiAgfCBSZXBlYXQgKHIsIGksIF8pIC0+XG4gICAgaSA+IDAgJiYgYW5jaG9yZWQgclxuICB8IFNldCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0b3BcbiAgfCBJbnRlcnNlY3Rpb24gXyB8IENvbXBsZW1lbnQgXyB8IERpZmZlcmVuY2UgXyAtPlxuICAgIGZhbHNlXG4gIHwgQmVnX29mX3N0ciB8IFN0YXJ0IC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKSB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHIgfCBOZXN0IHJcbiAgfCBDYXNlIHIgfCBOb19jYXNlIHIgfCBQbWFyayAoXywgcikgLT5cbiAgICBhbmNob3JlZCByXG5cbigqKioqKVxuXG50eXBlIHQgPSByZWdleHBcblxubGV0IHN0ciBzID1cbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSBTZXQgKENzZXQuY3NpbmdsZSBzLltpXSkgOjogIWxcbiAgZG9uZTtcbiAgU2VxdWVuY2UgIWxcbmxldCBjaGFyIGMgPSBTZXQgKENzZXQuY3NpbmdsZSBjKVxuXG5sZXQgYWx0ID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBBbHRlcm5hdGl2ZSBsXG5sZXQgc2VxID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCBlbXB0eSA9IGFsdCBbXVxubGV0IGVwc2lsb24gPSBzZXEgW11cbmxldCByZXBuIHIgaSBqID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIjtcbiAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIlxuICAgIHwgXyAtPiAoKVxuICBlbmQ7XG4gIFJlcGVhdCAociwgaSwgailcbmxldCByZXAgciA9IHJlcG4gciAwIE5vbmVcbmxldCByZXAxIHIgPSByZXBuIHIgMSBOb25lXG5sZXQgb3B0IHIgPSByZXBuIHIgMCAoU29tZSAxKVxubGV0IGJvbCA9IEJlZ19vZl9saW5lXG5sZXQgZW9sID0gRW5kX29mX2xpbmVcbmxldCBib3cgPSBCZWdfb2Zfd29yZFxubGV0IGVvdyA9IEVuZF9vZl93b3JkXG5sZXQgd29yZCByID0gc2VxIFtib3c7IHI7IGVvd11cbmxldCBub3RfYm91bmRhcnkgPSBOb3RfYm91bmRcbmxldCBib3MgPSBCZWdfb2Zfc3RyXG5sZXQgZW9zID0gRW5kX29mX3N0clxubGV0IHdob2xlX3N0cmluZyByID0gc2VxIFtib3M7IHI7IGVvc11cbmxldCBsZW9sID0gTGFzdF9lbmRfb2ZfbGluZVxubGV0IHN0YXJ0ID0gU3RhcnRcbmxldCBzdG9wID0gU3RvcFxubGV0IGxvbmdlc3QgciA9IFNlbSAoYExvbmdlc3QsIHIpXG5sZXQgc2hvcnRlc3QgciA9IFNlbSAoYFNob3J0ZXN0LCByKVxubGV0IGZpcnN0IHIgPSBTZW0gKGBGaXJzdCwgcilcbmxldCBncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBHcmVlZHksIHIpXG5sZXQgbm9uX2dyZWVkeSByID0gU2VtX2dyZWVkeSAoYE5vbl9ncmVlZHksIHIpXG5sZXQgZ3JvdXAgP25hbWUgciA9IEdyb3VwIChuYW1lLCByKVxubGV0IG5vX2dyb3VwIHIgPSBOb19ncm91cCByXG5sZXQgbmVzdCByID0gTmVzdCByXG5sZXQgbWFyayByID0gbGV0IGkgPSBQbWFyay5nZW4gKCkgaW4gKGksUG1hcmsgKGkscikpXG5cbmxldCBzZXQgc3RyID1cbiAgbGV0IHMgPSByZWYgQ3NldC5lbXB0eSBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgcyA6PSBDc2V0LnVuaW9uIChDc2V0LmNzaW5nbGUgc3RyLltpXSkgIXNcbiAgZG9uZTtcbiAgU2V0ICFzXG5cbmxldCByZyBjIGMnID0gU2V0IChjc2VxIGMgYycpXG5cbmxldCBpbnRlciBsID1cbiAgbGV0IHIgPSBJbnRlcnNlY3Rpb24gbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuaW50ZXJcIlxuXG5sZXQgY29tcGwgbCA9XG4gIGxldCByID0gQ29tcGxlbWVudCBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5jb21wbFwiXG5cbmxldCBkaWZmIHIgcicgPVxuICBsZXQgcicnID0gRGlmZmVyZW5jZSAociwgcicpIGluXG4gIGlmIGlzX2NoYXJzZXQgcicnIHRoZW5cbiAgICByJydcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuZGlmZlwiXG5cbmxldCBhbnkgPSBTZXQgQ3NldC5jYW55XG5sZXQgbm90bmwgPSBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnkgKENzZXQuY3NpbmdsZSAnXFxuJykpXG5cbmxldCBsb3dlciA9IGFsdCBbcmcgJ2EnICd6JzsgY2hhciAnXFwxODEnOyByZyAnXFwyMjMnICdcXDI0Nic7IHJnICdcXDI0OCcgJ1xcMjU1J11cbmxldCB1cHBlciA9IGFsdCBbcmcgJ0EnICdaJzsgcmcgJ1xcMTkyJyAnXFwyMTQnOyByZyAnXFwyMTYnICdcXDIyMiddXG5sZXQgYWxwaGEgPSBhbHQgW2xvd2VyOyB1cHBlcjsgY2hhciAnXFwxNzAnOyBjaGFyICdcXDE4NiddXG5sZXQgZGlnaXQgPSByZyAnMCcgJzknXG5sZXQgYWxudW0gPSBhbHQgW2FscGhhOyBkaWdpdF1cbmxldCB3b3JkYyA9IGFsdCBbYWxudW07IGNoYXIgJ18nXVxubGV0IGFzY2lpID0gcmcgJ1xcMDAwJyAnXFwxMjcnXG5sZXQgYmxhbmsgPSBzZXQgXCJcXHQgXCJcbmxldCBjbnRybCA9IGFsdCBbcmcgJ1xcMDAwJyAnXFwwMzEnOyByZyAnXFwxMjcnICdcXDE1OSddXG5sZXQgZ3JhcGggPSBhbHQgW3JnICdcXDAzMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHByaW50ID0gYWx0IFtyZyAnXFwwMzInICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwdW5jdCA9XG4gIGFsdCBbcmcgJ1xcMDMzJyAnXFwwNDcnOyByZyAnXFwwNTgnICdcXDA2NCc7IHJnICdcXDA5MScgJ1xcMDk2JztcbiAgICAgICByZyAnXFwxMjMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMTY5JzsgcmcgJ1xcMTcxJyAnXFwxODAnO1xuICAgICAgIHJnICdcXDE4MicgJ1xcMTg1JzsgcmcgJ1xcMTg3JyAnXFwxOTEnOyBjaGFyICdcXDIxNSc7IGNoYXIgJ1xcMjQ3J11cbmxldCBzcGFjZSA9IGFsdCBbY2hhciAnICc7IHJnICdcXDAwOScgJ1xcMDEzJ11cbmxldCB4ZGlnaXQgPSBhbHQgW2RpZ2l0OyByZyAnYScgJ2YnOyByZyAnQScgJ0YnXVxuXG5sZXQgY2FzZSByID0gQ2FzZSByXG5sZXQgbm9fY2FzZSByID0gTm9fY2FzZSByXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZSByID1cbiAgY29tcGlsZV8xIChcbiAgICBpZiBhbmNob3JlZCByIHRoZW5cbiAgICAgIGdyb3VwIHJcbiAgICBlbHNlXG4gICAgICBzZXEgW3Nob3J0ZXN0IChyZXAgYW55KTsgZ3JvdXAgcl1cbiAgKVxuXG5sZXQgZXhlY19pbnRlcm5hbCBuYW1lID8ocG9zPTApID8obGVuID0gLTEpIH5wYXJ0aWFsIH5ncm91cHMgcmUgcyA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgLTEgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBuYW1lO1xuICBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlblxuXG5sZXQgZXhlYyA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjXCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZXhlY19vcHQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY19vcHRcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlXG4gICAgICAgICAgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IFNvbWUgc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IE5vbmVcblxubGV0IGV4ZWNwID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOmZhbHNlIFwiUmUuZXhlY3BcIiA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggX3N1YnN0ciAtPiB0cnVlXG4gIHwgXyAgICAgICAgICAgICAtPiBmYWxzZVxuXG5sZXQgZXhlY19wYXJ0aWFsID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfIC0+IGBGdWxsXG4gIHwgUnVubmluZyBfIC0+IGBQYXJ0aWFsXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubGV0IGV4ZWNfcGFydGlhbF9kZXRhaWxlZCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxfZGV0YWlsZWRcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBncm91cCAtPiBgRnVsbCBncm91cFxuICB8IFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH0gLT4gYFBhcnRpYWwgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZVxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbm1vZHVsZSBNYXJrID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gUG1hcmsudFxuXG4gIGxldCB0ZXN0IChnIDogR3JvdXAudCkgcCA9XG4gICAgUG1hcmsuU2V0Lm1lbSBwIGcucG1hcmtzXG5cbiAgbGV0IGFsbCAoZyA6IEdyb3VwLnQpID0gZy5wbWFya3NcblxuICBtb2R1bGUgU2V0ID0gUG1hcmsuU2V0XG5cbiAgbGV0IGVxdWFsID0gUG1hcmsuZXF1YWxcblxuICBsZXQgY29tcGFyZSA9IFBtYXJrLmNvbXBhcmVcblxuZW5kXG5cbnR5cGUgc3BsaXRfdG9rZW4gPVxuICBbIGBUZXh0IG9mIHN0cmluZ1xuICB8IGBEZWxpbSBvZiBHcm91cC50XG4gIF1cblxubW9kdWxlIFJzZXEgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAoKiBpbmRleCBvZiB0aGUgZmlyc3QgcG9zaXRpb24gd2UgZG8gbm90IGNvbnNpZGVyLlxuICAgICAgICFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQgKilcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGl0ZXJhdGUgb24gbWF0Y2hlcy4gV2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBuZXh0XG4gICAgICAgb25lIGp1c3QgYWZ0ZXIgaXRzIGVuZCAqKVxuICAgIGxldCByZWMgYXV4IHBvcyAoKSA9XG4gICAgICBpZiBwb3MgPj0gbGltaXRcbiAgICAgIHRoZW4gU2VxLk5pbCAoKiBubyBtb3JlIG1hdGNoZXMgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzXG4gICAgICAgICAgICAgICAgfnBvcyB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoc3Vic3RyLCBhdXggcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgX1xuICAgICAgICB8IEZhaWxlZCAtPiBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggcG9zXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBhbGwgP3BvcyA/bGVuIHJlIHNcbiAgICB8PiBTZXEubWFwIChmdW4gc3ViIC0+IEdyb3VwLmdldCBzdWIgMClcblxuICBsZXQgc3BsaXRfZnVsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpOiBzdGFydCBvZiBkZWxpbWl0ZWQgc3RyaW5nXG4gICAgICAgcG9zOiBmaXJzdCBwb3NpdGlvbiBhZnRlciBsYXN0IG1hdGNoIG9mIFtyZV1cbiAgICAgICBsaW1pdDogZmlyc3QgaW5kZXggd2UgaWdub3JlICghcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50KSAqKVxuICAgIGxldCBwb3MwID0gcG9zIGluXG4gICAgbGV0IHJlYyBhdXggc3RhdGUgaSBwb3MgKCkgPSBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IGBJZGxlIHdoZW4gcG9zID49IGxpbWl0IC0+XG4gICAgICAgIGlmIGkgPCBsaW1pdCB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgc3ViLCBhdXggc3RhdGUgKGkrMSkgcG9zKVxuICAgICAgICApIGVsc2UgU2VxLk5pbFxuICAgICAgfCBgSWRsZSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIGxldCBvbGRfaSA9IGkgaW5cbiAgICAgICAgICBsZXQgaSA9IHAyIGluXG4gICAgICAgICAgaWYgcDEgPiBwb3MwIHRoZW4gKFxuICAgICAgICAgICAgKCogc3RyaW5nIGRvZXMgbm90IHN0YXJ0IGJ5IGEgZGVsaW1pdGVyICopXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBvbGRfaSAocDEgLSBvbGRfaSkgaW5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGBZaWVsZCAoYERlbGltIHN1YnN0cikgaW5cbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgICAgKSBlbHNlIFNlcS5Db25zIChgRGVsaW0gc3Vic3RyLCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfIC0+IFNlcS5OaWxcbiAgICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgICBpZiBpIDwgbGltaXRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICAgICgqIHlpZWxkIGxhc3Qgc3RyaW5nICopXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGxpbWl0IHBvcylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgZW5kXG4gICAgICB8IGBZaWVsZCB4IC0+XG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggYElkbGUgaSBwb3MpXG4gICAgaW5cbiAgICBhdXggYElkbGUgcG9zIHBvc1xuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGxldCBzZXEgPSBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgc2VxICgpID0gbWF0Y2ggc2VxICgpICB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gU2VxLk5pbFxuICAgICAgfCBTZXEuQ29ucyAoYERlbGltIF8sIHRsKSAtPiBmaWx0ZXIgdGwgKClcbiAgICAgIHwgU2VxLkNvbnMgKGBUZXh0IHMsdGwpIC0+IFNlcS5Db25zIChzLCBmaWx0ZXIgdGwpXG4gICAgaW4gZmlsdGVyIHNlcVxuZW5kXG5cbm1vZHVsZSBSbGlzdCA9IHN0cnVjdFxuICBsZXQgbGlzdF9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgbGlzdCA9XG4gICAgU2VxLmZvbGRfbGVmdCAoZnVuIGwgeCAtPiB4IDo6IGwpIFtdIHMgfD4gTGlzdC5yZXZcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuZW5kXG5cbm1vZHVsZSBHZW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSBnZW4gPSB1bml0IC0+ICdhIG9wdGlvblxuICBsZXQgZ2VuX29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBnZW4gPVxuICAgIGxldCByID0gcmVmIHMgaW5cbiAgICBmdW4gKCkgLT4gbWF0Y2ggIXIgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICAgIHwgU2VxLkNvbnMgKHgsIHRsKSAtPlxuICAgICAgICByIDo9IHRsO1xuICAgICAgICBTb21lIHhcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcbmVuZFxuXG5sZXQgcmVwbGFjZSA/KHBvcz0wKSA/bGVuID8oYWxsPXRydWUpIHJlIH5mIHMgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgIHwgU29tZSBsIC0+XG4gICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgICAgIHBvcytsXG4gIGluXG4gICgqIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIHdyaXRlIHRoZSByZXN1bHQgKilcbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgKCogaXRlcmF0ZSBvbiBtYXRjaGVkIHN1YnN0cmluZ3MuICopXG4gIGxldCByZWMgaXRlciBwb3MgPVxuICAgIGlmIHBvcyA8IGxpbWl0XG4gICAgdGhlblxuICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3MgfmxlbjoobGltaXQtcG9zKSB3aXRoXG4gICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICgqIGFkZCBzdHJpbmcgYmV0d2VlbiBwcmV2aW91cyBtYXRjaCBhbmQgY3VycmVudCBtYXRjaCAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKHAxLXBvcyk7XG4gICAgICAgICgqIHdoYXQgc2hvdWxkIHdlIHJlcGxhY2UgdGhlIG1hdGNoZWQgZ3JvdXAgd2l0aD8gKilcbiAgICAgICAgbGV0IHJlcGxhY2luZyA9IGYgc3Vic3RyIGluXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiByZXBsYWNpbmc7XG4gICAgICAgIGlmIGFsbCB0aGVuXG4gICAgICAgICAgKCogaWYgd2UgbWF0Y2hlZCBhIG5vbi1jaGFyIGUuZy4gXiB3ZSBtdXN0IG1hbnVhbGx5IGFkdmFuY2UgYnkgMSAqKVxuICAgICAgICAgIGl0ZXIgKFxuICAgICAgICAgICAgaWYgcDE9cDIgdGhlbiAoXG4gICAgICAgICAgICAgICgqIGEgbm9uIGNoYXIgY291bGQgYmUgcGFzdCB0aGUgZW5kIG9mIHN0cmluZy4gZS5nLiAkICopXG4gICAgICAgICAgICAgIGlmIHAyIDwgbGltaXQgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmIHMuW3AyXTtcbiAgICAgICAgICAgICAgcDIrMVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHAyKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcDIgKGxpbWl0LXAyKVxuICAgICAgfCBSdW5uaW5nIF8gLT4gKClcbiAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAobGltaXQtcG9zKVxuICBpblxuICBpdGVyIHBvcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcmVwbGFjZV9zdHJpbmcgP3BvcyA/bGVuID9hbGwgcmUgfmJ5IHMgPVxuICByZXBsYWNlID9wb3MgP2xlbiA/YWxsIHJlIHMgfmY6KGZ1biBfIC0+IGJ5KVxuXG5sZXQgd2l0bmVzcyB0ID1cbiAgbGV0IHJlYyB3aXRuZXNzID0gZnVuY3Rpb25cbiAgICB8IFNldCBjIC0+IFN0cmluZy5tYWtlIDEgKENoYXIuY2hyIChDc2V0LnBpY2sgYykpXG4gICAgfCBTZXF1ZW5jZSB4cyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHdpdG5lc3MgeHMpXG4gICAgfCBBbHRlcm5hdGl2ZSAoeCA6OiBfKSAtPiB3aXRuZXNzIHhcbiAgICB8IEFsdGVybmF0aXZlIFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgUmVwZWF0IChyLCBmcm9tLCBfdG8pIC0+XG4gICAgICBsZXQgdyA9IHdpdG5lc3MgciBpblxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHcgKiBmcm9tKSBpblxuICAgICAgZm9yIF9pPTEgdG8gZnJvbSBkb1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHdcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgTm9fY2FzZSByIC0+IHdpdG5lc3MgclxuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSAoXywgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBHcm91cCAoXywgcilcbiAgICB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgclxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgUG1hcmsgKF8sIHIpXG4gICAgfCBDYXNlIHJcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpIC0+IHdpdG5lc3MgclxuICAgIHwgQmVnX29mX2xpbmVcbiAgICB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZFxuICAgIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZVxuICAgIHwgU3RhcnRcbiAgICB8IFN0b3BcbiAgICB8IEVuZF9vZl9zdHIgLT4gXCJcIiBpblxuICB3aXRuZXNzIChoYW5kbGVfY2FzZSBmYWxzZSB0KVxuXG5tb2R1bGUgU2VxID0gUnNlcVxubW9kdWxlIExpc3QgPSBSbGlzdFxubW9kdWxlIEdyb3VwID0gR3JvdXBcblxuKCoqIHsyIERlcHJlY2F0ZWQgZnVuY3Rpb25zfSAqKVxuXG5sZXQgc3BsaXRfZnVsbF9zZXEgPSBTZXEuc3BsaXRfZnVsbFxubGV0IHNwbGl0X3NlcSA9IFNlcS5zcGxpdFxubGV0IG1hdGNoZXNfc2VxID0gU2VxLm1hdGNoZXNcbmxldCBhbGxfc2VxID0gU2VxLmFsbFxuXG50eXBlICdhIGdlbiAgICAgICAgPSAnYSBHZW4uZ2VuXG5sZXQgYWxsX2dlbiAgICAgICAgPSBHZW4uYWxsXG5sZXQgbWF0Y2hlc19nZW4gICAgPSBHZW4ubWF0Y2hlc1xubGV0IHNwbGl0X2dlbiAgICAgID0gR2VuLnNwbGl0XG5sZXQgc3BsaXRfZnVsbF9nZW4gPSBHZW4uc3BsaXRfZnVsbFxuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcblxubGV0IGdldCA9IEdyb3VwLmdldFxubGV0IGdldF9vZnMgPSBHcm91cC5vZmZzZXRcbmxldCBnZXRfYWxsID0gR3JvdXAuYWxsXG5sZXQgZ2V0X2FsbF9vZnMgPSBHcm91cC5hbGxfb2Zmc2V0XG5sZXQgdGVzdCA9IEdyb3VwLnRlc3RcblxudHlwZSBtYXJraWQgPSBNYXJrLnRcblxubGV0IG1hcmtlZCA9IE1hcmsudGVzdFxubGV0IG1hcmtfc2V0ID0gTWFyay5hbGxcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqXG5JbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyOlxuLSBkb2VzIG5vdCBleGlzdHNcbi0gaXMgYSBsZXR0ZXJcbi0gaXMgbm90IGEgbGV0dGVyXG4tIGlzIGEgbmV3bGluZVxuLSBpcyBsYXN0IG5ld2xpbmVcblxuQmVnaW5uaW5nIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgbGluZTpcbi0gcHJldmlvdXMgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBidWZmZXI6XG4tIHByZXZpb3VzIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBidWZmZXJcbi0gY3VycmVudCBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgbGluZVxuLSBjdXJyZW50IGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuKilcblxuKCpcblJlcDogZSA9IFQsZSB8ICgpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSBjb21tYSAoc2hvcnRlc3QvbG9uZ2VzdC9maXJzdClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIHVuaW9uIChncmVlZHkvbm9uLWdyZWVkeSlcblxuQm91bmRlZCByZXBldGl0aW9uXG4gIGF7MCwzfSA9IChhLChhLGE/KT8pP1xuKilcblxudHlwZSBncm91cHMgPSBHcm91cC50XG5cbmluY2x1ZGUgUmxpc3RcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IHRlc3QyIGMgYycgPSAhaSArIDEgPCBsICYmIHMuWyFpXSA9IGMgJiYgcy5bIWkgKyAxXSA9IGMnIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdDIgYyBjJyA9IGxldCByID0gdGVzdDIgYyBjJyBpbiBpZiByIHRoZW4gaSA6PSAhaSArIDI7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQyICdcXFxcJyAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdDIgJ1xcXFwnICd8JyB8fCB0ZXN0MiAnXFxcXCcgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgUmUuYm9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBSZS5lb2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0MiAnXFxcXCcgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ2AnIHRoZW5cbiAgICAgICAgUmUuYm9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnXFwnJyB0aGVuXG4gICAgICAgIFJlLmVvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz0nIHRoZW5cbiAgICAgICAgUmUuc3RhcnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdiJyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnQicgdGhlblxuICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuXG4gICAgICAgIFJlLmJvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz4nIHRoZW5cbiAgICAgICAgUmUuZW93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAndycgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdXJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICdbJyB8ICddJyB8ICcuJyB8ICdeJyB8ICckJyB8ICdcXFxcJyBhcyBjIC0+XG4gICAgICAgICAgICBSZS5jaGFyIGNcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgYyAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgZ2V0ICgpXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG5sZXQgcmUgPyhjYXNlID0gdHJ1ZSkgcyA9IGxldCByID0gcGFyc2UgcyBpbiBpZiBjYXNlIHRoZW4gciBlbHNlIFJlLm5vX2Nhc2UgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KGNhc2UgPSB0cnVlKSBzID0gY29tcGlsZSAocmUgfmNhc2UgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKilcbigqICBsaW5raW5nIGV4Y2VwdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kaWZpZWQgYnkgSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyIGZvciBpbnRlZ3JhdGlvbiBpbiBSRSAqKVxuXG4oKiAkSWQ6IHJlX3N0ci5tbCx2IDEuMyAyMDAyLzA3LzAzIDE1OjQ3OjU0IHZvdWlsbG9uIEV4cCAkICopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxudHlwZSByZWdleHAgPVxuICB7IHJlOiBSZS50XG4gIDsgbXRjaDogUmUucmUgTGF6eS50XG4gIDsgc3JjaDogUmUucmUgTGF6eS50IH1cblxubGV0IGNvbXBpbGVfcmVnZXhwIHMgYyA9XG4gIGxldCByZSA9IEVtYWNzLnJlIH5jYXNlOihub3QgYykgcyBpblxuICB7IHJlXG4gIDsgbXRjaCA9IGxhenkgKFJlLmNvbXBpbGUgKFJlLnNlcSBbUmUuc3RhcnQ7IHJlXSkpXG4gIDsgc3JjaCA9IGxhenkgKFJlLmNvbXBpbGUgcmUpIH1cblxubGV0IHN0YXRlID0gcmVmIE5vbmVcblxubGV0IHN0cmluZ19tYXRjaCByZSBzIHAgPVxuICB0cnlcbiAgICBzdGF0ZSA6PSBTb21lIChSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBmYWxzZVxuXG5sZXQgc3RyaW5nX3BhcnRpYWxfbWF0Y2ggcmUgcyBwID1cbiAgbWF0Y2hcbiAgICBSZS5leGVjX3BhcnRpYWwgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHNcbiAgd2l0aFxuICAgIGBGdWxsICAgICAtPiBzdHJpbmdfbWF0Y2ggcmUgcyBwXG4gIHwgYFBhcnRpYWwgIC0+IHRydWVcbiAgfCBgTWlzbWF0Y2ggLT4gZmFsc2VcblxubGV0IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5zcmNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgZnN0IChSZS5Hcm91cC5vZmZzZXQgcmVzIDApXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBzZWFyY2hfYmFja3dhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBwXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBpZiBwID0gMCB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlXG4gICAgICBzZWFyY2hfYmFja3dhcmQgcmUgcyAocCAtIDEpXG5cbmxldCB2YWxpZF9ncm91cCBuID1cbiAgbiA+PSAwICYmIG4gPCAxMCAmJiAoXG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbSAtPiBuIDwgUmUuR3JvdXAubmJfZ3JvdXBzIG1cbiAgKVxuXG5sZXQgb2Zmc2V0X2dyb3VwIGkgPVxuICBtYXRjaCAhc3RhdGUgd2l0aFxuICB8IFNvbWUgbSAtPiBSZS5Hcm91cC5vZmZzZXQgbSBpXG4gIHwgTm9uZSAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZ3JvdXBfbGVuIGkgPVxuICB0cnlcbiAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIGkgaW5cbiAgICBlIC0gYlxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIDBcblxubGV0IHJlYyByZXBsX2xlbmd0aCByZXBsIHAgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBpZiByZXBsLltwXSA8PiAnXFxcXCcgdGhlblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIChxICsgMSkgbGVuXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHAgPSBwICsgMSBpblxuICAgICAgaWYgcCA9IGxlbiB0aGVuIGZhaWx3aXRoIFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCI7XG4gICAgICBsZXQgcSA9XG4gICAgICAgIG1hdGNoIHJlcGwuW3BdIHdpdGhcbiAgICAgICAgfCAnXFxcXCcgLT4gcSArIDFcbiAgICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gcSArIGdyb3VwX2xlbiAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgICB8IF8gLT4gcSArIDIgaW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSBxIGxlblxuICAgIGVuZFxuICBlbmQgZWxzZVxuICAgIHFcblxubGV0IHJlYyByZXBsYWNlIG9yaWcgcmVwbCBwIHJlcyBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGxldCBjID0gcmVwbC5bcF0gaW5cbiAgICBpZiBjIDw+ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBCeXRlcy5zZXQgcmVzIHEgYztcbiAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMSkgcmVzIChxICsgMSkgbGVuXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIHJlcGwuW3AgKyAxXSB3aXRoXG4gICAgICAgICdcXFxcJyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDEpIGxlblxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgbGV0IGQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBlIC0gYiBpblxuICAgICAgICAgICAgaWYgZCA+IDAgdGhlbiBTdHJpbmcuYmxpdCBvcmlnIGIgcmVzIHEgZDtcbiAgICAgICAgICAgIGRcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgMFxuICAgICAgICBpblxuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIGQpIGxlblxuICAgICAgfCBjIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIEJ5dGVzLnNldCByZXMgKHEgKyAxKSBjO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDIpIGxlblxuICAgIGVuZFxuICBlbmRcblxubGV0IHJlcGxhY2VtZW50X3RleHQgcmVwbCBvcmlnID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcmVwbCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChyZXBsX2xlbmd0aCByZXBsIDAgMCBsZW4pIGluXG4gIHJlcGxhY2Ugb3JpZyByZXBsIDAgcmVzIDAgKFN0cmluZy5sZW5ndGggcmVwbCk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHN0cmluZ19iZWZvcmUgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgZmlyc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgbGFzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgKFN0cmluZy5sZW5ndGggcyAtIG4pIG5cblxubGV0IHJlZ2V4cCBlID0gY29tcGlsZV9yZWdleHAgZSBmYWxzZVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBlID0gY29tcGlsZV9yZWdleHAgZSB0cnVlXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgZmFsc2VcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgdHJ1ZVxuXG5sZXQgZ3JvdXBfYmVnaW5uaW5nIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfYmVnaW5uaW5nXCI7XG4gIGxldCBwb3MgPSBmc3QgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IGdyb3VwX2VuZCBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2VuZFwiO1xuICBsZXQgcG9zID0gc25kIChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBtYXRjaGVkX2dyb3VwIG4gdHh0ID1cbiAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBuIGluXG4gIFN0cmluZy5zdWIgdHh0IGIgKGUgLSBiKVxuXG5sZXQgcmVwbGFjZV9tYXRjaGVkIHJlcGwgbWF0Y2hlZCA9IHJlcGxhY2VtZW50X3RleHQgcmVwbCBtYXRjaGVkXG5cbmxldCBtYXRjaF9iZWdpbm5pbmcgKCkgPSBncm91cF9iZWdpbm5pbmcgMFxuYW5kIG1hdGNoX2VuZCAoKSA9IGdyb3VwX2VuZCAwXG5hbmQgbWF0Y2hlZF9zdHJpbmcgdHh0ID0gbWF0Y2hlZF9ncm91cCAwIHR4dFxuXG5sZXQgc3Vic3RpdHV0ZV9maXJzdCBleHByIHJlcGxfZnVuIHRleHQgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IDAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW3N0cmluZ19iZWZvcmUgdGV4dCBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbF9mdW4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfYWZ0ZXIgdGV4dCAobWF0Y2hfZW5kICgpKV1cbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0ZXh0XG5cbmxldCBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIHJlcGxfZnVuIHRleHQgPVxuICBsZXQgcmVjIHJlcGxhY2UgYWNjdSBzdGFydCBsYXN0X3dhc19lbXB0eSA9XG4gICAgbGV0IHN0YXJ0cG9zID0gaWYgbGFzdF93YXNfZW1wdHkgdGhlbiBzdGFydCArIDEgZWxzZSBzdGFydCBpblxuICAgIGlmIHN0YXJ0cG9zID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCBzdGFydHBvcyB3aXRoXG4gICAgICB8IHBvcyAtPlxuICAgICAgICBsZXQgZW5kX3BvcyA9IG1hdGNoX2VuZCAoKSBpblxuICAgICAgICBsZXQgcmVwbF90ZXh0ID0gcmVwbF9mdW4gdGV4dCBpblxuICAgICAgICByZXBsYWNlIChyZXBsX3RleHQgOjogU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgZW5kX3BvcyAoZW5kX3BvcyA9IHBvcylcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiAocmVwbGFjZSBbXSAwIGZhbHNlKSlcblxubGV0IGdsb2JhbF9yZXBsYWNlIGV4cHIgcmVwbCB0ZXh0ID1cbiAgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5hbmQgcmVwbGFjZV9maXJzdCBleHByIHJlcGwgdGV4dCA9XG4gIHN1YnN0aXR1dGVfZmlyc3QgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5cbmxldCBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyByZSBzIHAgPVxuICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgcmUgcyBwIGluXG4gIGlmIG1hdGNoX2VuZCAoKSA+IHAgdGhlblxuICAgIHBvc1xuICBlbHNlIGlmIHAgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIHNlYXJjaF9mb3J3YXJkIHJlIHMgKHAgKyAxKVxuICBlbHNlXG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgc3RhcnQgPVxuICAgIGlmIHN0cmluZ19tYXRjaCBleHByIHRleHQgMCB0aGVuIG1hdGNoX2VuZCAoKSBlbHNlIDAgaW5cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIHN0YXJ0IG51bSlcblxubGV0IHNwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IDBcblxubGV0IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIGlmIHRleHQgPSBcIlwiIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gICAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgc3BsaXRfZGVsaW0gZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgMFxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nIHwgRGVsaW0gb2Ygc3RyaW5nXG5cbmxldCBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBsZXQgcyA9IG1hdGNoZWRfc3RyaW5nIHRleHQgaW5cbiAgICAgICAgaWYgcG9zID4gc3RhcnQgdGhlblxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjpcbiAgICAgICAgICAgICAgICAgVGV4dCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3MgLSBzdGFydCkpIDo6XG4gICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6IGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBmdWxsX3NwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgMFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBlbmNsb3NlZCA9XG4gIHwgQ2hhciBvZiBjaGFyXG4gIHwgUmFuZ2Ugb2YgY2hhciAqIGNoYXJcblxudHlwZSBwaWVjZSA9XG4gIHwgRXhhY3RseSBvZiBjaGFyXG4gIHwgQW55X29mIG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBBbnlfYnV0IG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBPbmVcbiAgfCBNYW55XG4gIHwgTWFueU1hbnlcblxudHlwZSB0ID0gcGllY2UgbGlzdFxuXG5sZXQgb2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcyA6IHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHJlYWQgYyA9XG4gICAgbGV0IHIgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICAgIGlmIHIgdGhlbiBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gICgqKlxuICAgW3JlYWRfYWhlYWQgcGF0dGVybl0gd2lsbCBhdHRlbXB0IHRvIHJlYWQgW3BhdHRlcm5dIGFuZCB3aWxsIHJldHVybiBbdHJ1ZV0gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwuXG4gICBJZiBpdCBmYWlscywgaXQgd2lsbCByZXR1cm4gW2ZhbHNlXSBhbmQgbm90IGluY3JlbWVudCB0aGUgcmVhZCBpbmRleC5cbiAgKilcbiAgbGV0IHJlYWRfYWhlYWQgcGF0dGVybiA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIGluXG4gICAgKCogaWYgdGhlIHBhdHRlcm4gd2UgYXJlIGxvb2tpbmcgZm9yIGV4ZWVkcyB0aGUgcmVtYWluaW5nIGxlbmd0aCBvZiBzLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHkgKilcbiAgICBpZiAhaSArIHBhdHRlcm5fbGVuID49IGwgdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAwIHRvIHBhdHRlcm5fbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBmb3VuZCA9IG5vdCAoZW9zICgpKSAmJiBzLlshaSArIGpdID0gcGF0dGVybi5bal0gaW5cbiAgICAgICAgICBpZiBub3QgZm91bmQgdGhlbiByYWlzZV9ub3RyYWNlIEV4aXQ7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGkgOj0gIWkgKyBwYXR0ZXJuX2xlbjtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCB8IEV4aXQgIC0+IGZhbHNlXG4gIGluXG5cbiAgbGV0IGNoYXIgKCkgPVxuICAgIGlnbm9yZSAocmVhZCAnXFxcXCcgOiBib29sKTtcbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgciA9IHMuWyFpXSBpblxuICAgIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgbGV0IGVuY2xvc2VkICgpIDogZW5jbG9zZWQgbGlzdCA9XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgKCogVGhpcyByZXR1cm5zIHRoZSBsaXN0IGluIHJldmVyc2Ugb3JkZXIsIGJ1dCBvcmRlciBpc24ndCBpbXBvcnRhbnQgYW55d2F5ICopXG4gICAgICBpZiBzIDw+IFtdICYmIHJlYWQgJ10nXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICAgIGlmIG5vdCAocmVhZCAnLScpXG4gICAgICAgIHRoZW4gbG9vcCAoQ2hhciBjIDo6IHMpXG4gICAgICAgIGVsc2UgaWYgcmVhZCAnXSdcbiAgICAgICAgdGhlbiBDaGFyIGMgOjogQ2hhciAnLScgOjogc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGxvb3AgKFJhbmdlIChjLCBjJykgOjogcylcbiAgICBpblxuICAgIGxvb3AgW11cbiAgaW5cblxuICBsZXQgcGllY2UgKCkgPVxuICAgIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkX2FoZWFkIFwiLyoqXCIgJiYgbm90IChlb3MgKCkpXG4gICAgdGhlbiBNYW55TWFueVxuICAgIGVsc2UgaWYgcmVhZCAnKidcbiAgICB0aGVuIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkICcqJ1xuICAgICAgdGhlbiBNYW55TWFueVxuICAgICAgZWxzZSBNYW55XG4gICAgZWxzZSBpZiByZWFkICc/J1xuICAgIHRoZW4gT25lXG4gICAgZWxzZSBpZiBub3QgKHJlYWQgJ1snKVxuICAgIHRoZW4gRXhhY3RseSAoY2hhciAoKSlcbiAgICBlbHNlIGlmIHJlYWQgJ14nIHx8IHJlYWQgJyEnXG4gICAgdGhlbiBBbnlfYnV0IChlbmNsb3NlZCAoKSlcbiAgICBlbHNlIEFueV9vZiAoZW5jbG9zZWQgKCkpXG4gIGluXG5cbiAgbGV0IHJlYyBsb29wIHBpZWNlcyA9XG4gICAgaWYgZW9zICgpXG4gICAgdGhlbiBMaXN0LnJldiBwaWVjZXNcbiAgICBlbHNlIGxvb3AgKHBpZWNlICgpIDo6IHBpZWNlcylcbiAgaW5cblxuICBsb29wIFtdXG5cbmxldCBtdWwgbCBsJyA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biBzIC0+IExpc3QubWFwIChmdW4gcycgLT4gcyBeIHMnKSBsJykgbClcblxubGV0IGV4cGxvZGUgc3RyID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGV4cGwgaW5uZXIgcyBpIGFjYyBiZWcgPVxuICAgIGlmIGkgPj0gbCB0aGVuIGJlZ2luXG4gICAgICBpZiBpbm5lciB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0sIGkpXG4gICAgZW5kIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgfCAnXFxcXCcgLT4gZXhwbCBpbm5lciBzIChpICsgMikgYWNjIGJlZ1xuICAgICAgfCAneycgLT5cbiAgICAgICAgbGV0ICh0LCBpJykgPSBleHBsIHRydWUgKGkgKyAxKSAoaSArIDEpIFtdIFtcIlwiXSBpblxuICAgICAgICBleHBsIGlubmVyIGknIGknIGFjY1xuICAgICAgICAgIChtdWwgYmVnIChtdWwgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gdCkpXG4gICAgICB8ICcsJyB3aGVuIGlubmVyIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgKGkgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MpIFtcIlwiXVxuICAgICAgfCAnfScgd2hlbiBpbm5lciAtPlxuICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYywgaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgZXhwbCBpbm5lciBzIChpICsgMSkgYWNjIGJlZ1xuICBpblxuICBMaXN0LnJldiAoZnN0IChleHBsIGZhbHNlIDAgMCBbXSBbXCJcIl0pKVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlX3BpZWNlcyAgICAgICAgICAgICAgICA6IFJlLnQgbGlzdDsgICgqIGxhc3QgcGllY2UgYXQgaGVhZCBvZiBsaXN0LiAqKVxuICAgIHJlbWFpbmluZyAgICAgICAgICAgICAgICA6IHBpZWNlIGxpc3Q7ICgqIGxhc3QgcGllY2UgYXQgdGFpbCBvZiBsaXN0LiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gICA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiBvciBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyICcvJyAqKVxuICAgIHBhdGhuYW1lICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gICAgbWF0Y2hfYmFja3NsYXNoZXMgICAgICAgIDogYm9vbDtcbiAgICBwZXJpb2QgICAgICAgICAgICAgICAgICAgOiBib29sO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+cGVyaW9kIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgcmVtYWluaW5nID1cbiAgICB7XG4gICAgICByZV9waWVjZXMgPSBbXTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSB0cnVlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIHBhdGhuYW1lO1xuICAgICAgbWF0Y2hfYmFja3NsYXNoZXM7XG4gICAgICBwZXJpb2Q7XG4gICAgICByZW1haW5pbmc7XG4gICAgfVxuXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgdCA9XG4gICAgdC5wZXJpb2QgJiYgKFxuICAgICAgdC5hbV9hdF9zdGFydF9vZl9wYXR0ZXJuIHx8XG4gICAgICAodC5hbV9hdF9zdGFydF9vZl9jb21wb25lbnQgJiYgdC5wYXRobmFtZSlcbiAgICApXG5cbiAgbGV0IGV4cGxpY2l0X3NsYXNoIHQgPSB0LnBhdGhuYW1lXG5cbiAgbGV0IHNsYXNoZXMgdCA9XG4gICAgaWYgdC5tYXRjaF9iYWNrc2xhc2hlcyB0aGVuIFsnLyc7ICdcXFxcJ10gZWxzZSBbJy8nXVxuXG4gIGxldCBhcHBlbmQgPyhhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ9ZmFsc2UpIHQgcGllY2UgPVxuICAgIHsgdCB3aXRoXG4gICAgICByZV9waWVjZXMgPSBwaWVjZSA6OiB0LnJlX3BpZWNlcztcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSBmYWxzZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgbGV0IHRvX3JlIHQgPSBSZS5zZXEgKExpc3QucmV2IHQucmVfcGllY2VzKVxuXG4gIGxldCBuZXh0IHQgPVxuICAgIG1hdGNoIHQucmVtYWluaW5nIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHBpZWNlIDo6IHJlbWFpbmluZyAtPiBTb21lIChwaWVjZSwgeyB0IHdpdGggcmVtYWluaW5nIH0pXG5lbmRcblxubGV0IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCA9XG4gIFJlLmNvbXBsIChcbiAgICBMaXN0LmNvbmNhdCBbXG4gICAgICBpZiBleHBsaWNpdF9zbGFzaCAgdGhlbiBMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMgZWxzZSBbXTtcbiAgICAgIGlmIGV4cGxpY2l0X3BlcmlvZCB0aGVuIFtSZS5jaGFyICcuJ10gZWxzZSBbXTtcbiAgICBdXG4gIClcblxubGV0IGVuY2xvc2VkIGVuY2xvc2VkID1cbiAgbWF0Y2ggZW5jbG9zZWQgd2l0aFxuICB8IENoYXIgYyAtPiBSZS5jaGFyIGNcbiAgfCBSYW5nZSAobG93LCBoaWdoKSAtPiBSZS5yZyBsb3cgaGlnaFxuXG5sZXQgZW5jbG9zZWRfc2V0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGtpbmQgc2V0ID1cbiAgbGV0IHNldCA9IExpc3QubWFwIGVuY2xvc2VkIHNldCBpblxuICBsZXQgZW5jbG9zdXJlID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBbnlfb2YgLT4gUmUuYWx0IHNldFxuICAgIHwgYEFueV9idXQgLT4gUmUuY29tcGwgc2V0XG4gIGluXG4gIFJlLmludGVyIFtlbmNsb3N1cmU7IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZF1cblxubGV0IGV4YWN0bHkgc3RhdGUgYyA9XG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gTGlzdC5tZW0gYyBzbGFzaGVzIGluXG4gIGxldCBjaGFycyA9IGlmIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCB0aGVuIHNsYXNoZXMgZWxzZSBbY10gaW5cbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgY2hhcnMpKSB+YW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50XG5cbmxldCBtYW55X21hbnkgc3RhdGUgPVxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gc3RhdGUuU3RhdGUucGVyaW9kICYmIHN0YXRlLlN0YXRlLnBhdGhuYW1lIGluXG4gIGxldCBmaXJzdF9leHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCA9XG4gICAgUmUuc2VxIFtcbiAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICBdXG4gIGluXG4gICgqIFdlIG11c3QgbWF0Y2ggY29tcG9uZW50cyBpbmRpdmlkdWFsbHkgd2hlbiBbcGVyaW9kXSBmbGFnIGlzIHNldCxcbiAgICAgbWFraW5nIHN1cmUgdG8gbm90IG1hdGNoIFtcImZvby8uYmFyXCJdLiAqKVxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFxuICAgIFJlLnNlcSBbXG4gICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kOmZpcnN0X2V4cGxpY2l0X3BlcmlvZCk7XG4gICAgICBSZS5yZXAgKFxuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzKTtcbiAgICAgICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgICAgXVxuICAgICAgKTtcbiAgICBdKVxuXG5sZXQgbWFueSAoc3RhdGUgOiBTdGF0ZS50KSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gICgqIFdoZXRoZXIgd2UgbXVzdCBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZCBkZXBlbmRzIG9uIHRoZSBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBidXRcbiAgICAgc2xhc2hlcyBhcmUgZWFzeSB0byBleHBsaWNpdCBtYXRjaC4gVGhpcyBjb25kaXRpb25hbCBzcGxpdHMgb3V0IHNvbWUgc2ltcGxlIGNhc2VzLlxuICAqKVxuICBpZiBub3QgZXhwbGljaXRfcGVyaW9kIHRoZW4gYmVnaW5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKSlcbiAgZW5kIGVsc2UgaWYgbm90IGV4cGxpY2l0X3NsYXNoIHRoZW4gYmVnaW5cbiAgICAoKiBJbiB0aGlzIHN0YXRlLCB3ZSBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZHMgb25seSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgKilcbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLm9wdCAoXG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgICkpXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgbGV0IG5vdF9lbXB0eSA9XG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgIGluXG4gICAgKCogW21heWJlX2VtcHR5XSBpcyB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbiBvZiBNYW55LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLlxuICAgICopXG4gICAgbGV0IG1heWJlX2VtcHR5ID0gUmUub3B0IG5vdF9lbXB0eSBpblxuICAgIGxldCBlbmNsb3NlZF9zZXQgc3RhdGUga2luZCBzZXQgPVxuICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgW1xuICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIG5vdF9lbXB0eTtcbiAgICAgICAgICAoKiBTaW5jZSBbbm90X2VtcHR5XSBtYXRjaGVkLCBzdWJzZXF1ZW50IGRvdHMgYXJlIG5vdCBsZWFkaW5nLiAqKVxuICAgICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlO1xuICAgICAgICBdO1xuICAgICAgXSlcbiAgICBpblxuICAgIGxldCByZWMgbG9va2FoZWFkIHN0YXRlID1cbiAgICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBtYXliZV9lbXB0eVxuICAgICAgKCogZ2xvYiAqKiA9PT0gZ2xvYiAqIC4gKilcbiAgICAgIHwgU29tZSAoTWFueSwgc3RhdGUpIC0+IGxvb2thaGVhZCBzdGF0ZVxuICAgICAgfCBTb21lIChFeGFjdGx5IGMsIHN0YXRlKSAtPlxuICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZVxuICAgICAgICAgICAgKGlmIGMgPSAnLidcbiAgICAgICAgICAgICB0aGVuIG5vdF9lbXB0eVxuICAgICAgICAgICAgIGVsc2UgbWF5YmVfZW1wdHkpXG4gICAgICAgIGluXG4gICAgICAgIGV4YWN0bHkgc3RhdGUgY1xuICAgICAgKCogZ2xvYiAqPyA9PT0gZ2xvYiA/KiAqKVxuICAgICAgfCBTb21lIChPbmUsIHN0YXRlKSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbm90X2VtcHR5XG4gICAgICB8IFNvbWUgKEFueV9vZiBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X29mIGVuY2xvc2VkXG4gICAgICB8IFNvbWUgKEFueV9idXQgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9idXQgZW5jbG9zZWRcbiAgICAgICgqICogdGhlbiAqKiA9PT0gKiogKilcbiAgICAgIHwgU29tZSAoTWFueU1hbnksIHN0YXRlKSAtPiBtYW55X21hbnkgc3RhdGVcbiAgICBpblxuICAgIGxvb2thaGVhZCBzdGF0ZVxuICBlbmRcblxubGV0IHBpZWNlIHN0YXRlIHBpZWNlID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbWF0Y2ggcGllY2Ugd2l0aFxuICB8IE9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZClcbiAgfCBNYW55IC0+IG1hbnkgc3RhdGVcbiAgfCBBbnlfb2YgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X29mIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEFueV9idXQgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X2J1dCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBFeGFjdGx5IGMgLT4gZXhhY3RseSBzdGF0ZSBjXG4gIHwgTWFueU1hbnkgLT4gbWFueV9tYW55IHN0YXRlXG5cbmxldCBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RhdGUudG9fcmUgc3RhdGVcbiAgICB8IFNvbWUgKHAsIHN0YXRlKSAtPiBsb29wIChwaWVjZSBzdGF0ZSBwKVxuICBpblxuICBsb29wIChTdGF0ZS5jcmVhdGUgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IpXG5cbmxldCBnbG9iXG4gICAgICA/KGFuY2hvcmVkID0gZmFsc2UpXG4gICAgICA/KHBhdGhuYW1lID0gdHJ1ZSlcbiAgICAgID8obWF0Y2hfYmFja3NsYXNoZXMgPSBmYWxzZSlcbiAgICAgID8ocGVyaW9kID0gdHJ1ZSlcbiAgICAgID8oZXhwYW5kX2JyYWNlcyA9IGZhbHNlKVxuICAgICAgPyhkb3VibGVfYXN0ZXJpc2sgPSB0cnVlKVxuICAgICAgc1xuICA9XG4gIGxldCB0b19yZSBzID1cbiAgICBsZXQgcmUgPSBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCAob2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcykgaW5cbiAgICBpZiBhbmNob3JlZFxuICAgIHRoZW4gUmUud2hvbGVfc3RyaW5nIHJlXG4gICAgZWxzZSByZVxuICBpblxuICBpZiBleHBhbmRfYnJhY2VzXG4gIHRoZW4gUmUuYWx0IChMaXN0Lm1hcCB0b19yZSAoZXhwbG9kZSBzKSlcbiAgZWxzZSB0b19yZSBzXG5cbmxldCBnbG9iJyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+cGVyaW9kIHNcblxubGV0IGdsb2J4ID9hbmNob3JlZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSBzXG5cbmxldCBnbG9ieCcgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSB+cGVyaW9kIHNcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImFscGhhXCIgIC0+IFJlLmFscGhhXG4gIHwgXCJhbG51bVwiICAtPiBSZS5hbG51bVxuICB8IFwiYXNjaWlcIiAgLT4gUmUuYXNjaWlcbiAgfCBcImJsYW5rXCIgIC0+IFJlLmJsYW5rXG4gIHwgXCJjbnRybFwiICAtPiBSZS5jbnRybFxuICB8IFwiZGlnaXRcIiAgLT4gUmUuZGlnaXRcbiAgfCBcImxvd2VyXCIgIC0+IFJlLmxvd2VyXG4gIHwgXCJwcmludFwiICAtPiBSZS5wcmludFxuICB8IFwic3BhY2VcIiAgLT4gUmUuc3BhY2VcbiAgfCBcInVwcGVyXCIgIC0+IFJlLnVwcGVyXG4gIHwgXCJ3b3JkXCIgICAtPiBSZS53b3JkY1xuICB8IFwicHVuY3RcIiAgLT4gUmUucHVuY3RcbiAgfCBcImdyYXBoXCIgIC0+IFJlLmdyYXBoXG4gIHwgXCJ4ZGlnaXRcIiAtPiBSZS54ZGlnaXRcbiAgfCBjbGFzc18gICAtPiBpbnZhbGlkX2FyZyAoXCJJbnZhbGlkIHBjcmUgY2xhc3M6IFwiIF4gY2xhc3NfKVxuXG5sZXQgcG9zaXhfY2xhc3Nfc3RyaW5ncyA9XG4gIFsgXCJhbHBoYVwiIDsgXCJhbG51bVwiIDsgXCJhc2NpaVwiXG4gIDsgXCJibGFua1wiIDsgXCJjbnRybFwiIDsgXCJkaWdpdFwiXG4gIDsgXCJsb3dlclwiIDsgXCJwcmludFwiIDsgXCJzcGFjZVwiXG4gIDsgXCJ1cHBlclwiIDsgXCJ3b3JkXCIgIDsgXCJwdW5jdFwiXG4gIDsgXCJncmFwaFwiIDsgXCJ4ZGlnaXRcIiBdXG5cbmxldCBwYXJzZSBtdWx0aWxpbmUgZG9sbGFyX2VuZG9ubHkgZG90YWxsIHVuZ3JlZWR5IHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdF9zIHMnID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzJyBpblxuICAgIHRyeVxuICAgICAgZm9yIGogPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgdHJ5IGlmIHMnLltqXSA8PiBzLlshaSArIGpdIHRoZW4gcmFpc2UgRXhpdFxuICAgICAgICB3aXRoIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGkgOj0gIWkgKyBsZW47XG4gICAgICB0cnVlXG4gICAgd2l0aCBFeGl0IC0+IGZhbHNlIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG4gIGxldCBncmVlZHlfbW9kIHIgPVxuICAgIGxldCBnciA9IGFjY2VwdCAnPycgaW5cbiAgICBsZXQgZ3IgPSBpZiB1bmdyZWVkeSB0aGVuIG5vdCBnciBlbHNlIGdyIGluXG4gICAgaWYgZ3IgdGhlbiBSZS5ub25fZ3JlZWR5IHIgZWxzZSBSZS5ncmVlZHkgclxuICBpblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcDEgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBncmVlZHlfbW9kIChSZS5vcHQgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgZ3JlZWR5X21vZCAoUmUucmVwbiByIGkgailcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBkb3RhbGwgdGhlbiBSZS5hbnkgZWxzZSBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc/JyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIHJcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcjJyB0aGVuIGJlZ2luXG4gICAgICAgICAgY29tbWVudCAoKVxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWUgKCkgaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBSZS5ncm91cCB+bmFtZSByXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuZW9sIGVsc2UgaWYgZG9sbGFyX2VuZG9ubHkgdGhlbiBSZS5sZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbigqIFhYWFxuICAgLSBCYWNrLXJlZmVyZW5jZXNcbiAgIC0gXFxjeCAoY29udHJvbC14KSwgXFxkZGRcbiopXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd3JyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAnVycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAncycgLT5cbiAgICAgICAgICBSZS5zcGFjZVxuICAgICAgfCAnUycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuc3BhY2VdXG4gICAgICB8ICdkJyAtPlxuICAgICAgICAgIFJlLmRpZ2l0XG4gICAgICB8ICdEJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5kaWdpdF1cbiAgICAgIHwgJ2InIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIHwgJ0InIC0+XG4gICAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICB8ICdBJyAtPlxuICAgICAgICAgIFJlLmJvc1xuICAgICAgfCAnWicgLT5cbiAgICAgICAgICBSZS5sZW9sXG4gICAgICB8ICd6JyAtPlxuICAgICAgICAgIFJlLmVvc1xuICAgICAgfCAnRycgLT5cbiAgICAgICAgICBSZS5zdGFydFxuICAgICAgfCAnZScgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgxYidcbiAgICAgIHwgJ2YnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MGMnXG4gICAgICB8ICduJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcbidcbiAgICAgIHwgJ3InIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxyJ1xuICAgICAgfCAndCcgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHQnXG4gICAgICB8ICd4JyAtPlxuICAgICAgICAgIGxldCBjMSA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGMyID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgY29kZSA9IGMxICogMTYgKyBjMiBpblxuICAgICAgICAgIFJlLmNoYXIgKGNoYXJfb2ZfaW50IGNvZGUpXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIFJlLmNoYXIgY1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaGV4ZGlnaXQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ2EnLi4nZicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgJ0EnLi4nRicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgbmFtZSAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJykgYXMgYyAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDMyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgbmFtZScgYiA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknKSBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgJz4nIC0+IEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICB8IGBDaGFyIGMgLT5cbiAgICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgICAgICAgICBgQ2hhciBjJyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgICAgICB8IGBTZXQgc3QnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzdCcgOjogcylcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICAgIHwgYFNldCBzdCAtPiBicmFja2V0IChzdCA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuXG4gICAgICAgIGxldCBjb21wbCA9IGFjY2VwdCAnXicgaW5cbiAgICAgICAgbGV0IGNscyA9XG4gICAgICAgICAgdHJ5IExpc3QuZmluZCBhY2NlcHRfcyBwb3NpeF9jbGFzc19zdHJpbmdzXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgUGFyc2VfZXJyb3IgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHRfcyBcIjpdXCIpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCByZSA9XG4gICAgICAgICAgbGV0IHBvc2l4X2NsYXNzID0gcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nIGNscyBpblxuICAgICAgICAgIGlmIGNvbXBsIHRoZW4gUmUuY29tcGwgW3Bvc2l4X2NsYXNzXSBlbHNlIHBvc2l4X2NsYXNzIGluXG4gICAgICAgIGBTZXQgKHJlKVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGBDaGFyIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZSBpZiBjID0gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbigqIFhYWFxuICAgXFwxMjcsIC4uLlxuKilcbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnYicgLT4gYENoYXIgJ1xcMDA4J1xuICAgICAgfCAnbicgLT4gYENoYXIgJ1xcbicgKCpYWFgqKVxuICAgICAgfCAncicgLT4gYENoYXIgJ1xccicgKCpYWFgqKVxuICAgICAgfCAndCcgLT4gYENoYXIgJ1xcdCcgKCpYWFgqKVxuICAgICAgfCAndycgLT4gYFNldCAoUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAnVycgLT4gYFNldCAoUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdzJyAtPiBgU2V0IChSZS5zcGFjZSlcbiAgICAgIHwgJ1MnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5zcGFjZV0pXG4gICAgICB8ICdkJyAtPiBgU2V0IChSZS5kaWdpdClcbiAgICAgIHwgJ0QnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5kaWdpdF0pXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZVxuICAgICAgYENoYXIgY1xuICBhbmQgY29tbWVudCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgaWYgYWNjZXB0ICcpJyB0aGVuIFJlLmVwc2lsb24gZWxzZSBiZWdpbiBpbmNyIGk7IGNvbW1lbnQgKCkgZW5kXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9XG4gIFsgYFVuZ3JlZWR5IHwgYERvdGFsbCB8IGBEb2xsYXJfZW5kb25seVxuICB8IGBNdWx0aWxpbmUgfCBgQW5jaG9yZWQgfCBgQ2FzZWxlc3MgXVxuXG5sZXQgcmUgID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPVxuICAgIHBhcnNlXG4gICAgICAoTGlzdC5tZW1xIGBNdWx0aWxpbmUgb3B0cykgKExpc3QubWVtcSBgRG9sbGFyX2VuZG9ubHkgb3B0cylcbiAgICAgIChMaXN0Lm1lbXEgYERvdGFsbCBvcHRzKSAoTGlzdC5tZW1xIGBVbmdyZWVkeSBvcHRzKVxuICAgICAgc1xuICBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQW5jaG9yZWQgb3B0cyB0aGVuIFJlLnNlcSBbUmUuc3RhcnQ7IHJdIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQ2FzZWxlc3Mgb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCJtb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBlcmwuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkID0gUGVybC5Ob3Rfc3VwcG9ydGVkXG5cbnR5cGUgcmVnZXhwID0gUmUucmVcblxudHlwZSBmbGFnID0gWyBgQ0FTRUxFU1MgfCBgTVVMVElMSU5FIHwgYEFOQ0hPUkVEIHwgYERPVEFMTCBdXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID1cbiAgfCBUZXh0ICBvZiBzdHJpbmdcbiAgfCBEZWxpbSBvZiBzdHJpbmdcbiAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmdcbiAgfCBOb0dyb3VwXG5cbnR5cGUgZ3JvdXBzID0gQ29yZS5Hcm91cC50XG5cbmxldCByZSA/KGZsYWdzID0gW10pIHBhdCA9XG4gIGxldCBvcHRzID0gTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgfCBgQ0FTRUxFU1MgLT4gYENhc2VsZXNzXG4gICAgfCBgTVVMVElMSU5FIC0+IGBNdWx0aWxpbmVcbiAgICB8IGBBTkNIT1JFRCAtPiBgQW5jaG9yZWRcbiAgICB8IGBET1RBTEwgLT4gYERvdGFsbFxuICApIGZsYWdzIGluXG4gIFBlcmwucmUgfm9wdHMgcGF0XG5cbmxldCByZWdleHAgP2ZsYWdzIHBhdCA9IFJlLmNvbXBpbGUgKHJlID9mbGFncyBwYXQpXG5cbmxldCBleHRyYWN0IH5yZXggcyA9XG4gIFJlLkdyb3VwLmFsbCAoUmUuZXhlYyByZXggcylcblxubGV0IGV4ZWMgfnJleCA/cG9zIHMgPVxuICBSZS5leGVjIHJleCA/cG9zIHNcblxubGV0IGdldF9zdWJzdHJpbmcgcyBpID1cbiAgUmUuR3JvdXAuZ2V0IHMgaVxuXG5sZXQgbmFtZXMgcmV4ID1cbiAgUmUuZ3JvdXBfbmFtZXMgcmV4XG4gIHw+IExpc3QubWFwIGZzdFxuICB8PiBBcnJheS5vZl9saXN0XG5cbmxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHMgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCAobiwgaSkgOjogcmVtIHdoZW4gbiA9IG5hbWUgLT5cbiAgICAgICBiZWdpblxuICAgICAgICAgdHJ5IGdldF9zdWJzdHJpbmcgcyBpXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBsb29wIHJlbVxuICAgICAgIGVuZFxuICAgIHwgXyA6OiByZW0gLT4gbG9vcCByZW1cbiAgaW5cbiAgbG9vcCAoUmUuZ3JvdXBfbmFtZXMgcmV4KVxuXG5sZXQgZ2V0X3N1YnN0cmluZ19vZnMgcyBpID1cbiAgUmUuR3JvdXAub2Zmc2V0IHMgaVxuXG5sZXQgcG1hdGNoIH5yZXggcyA9XG4gIFJlLmV4ZWNwIHJleCBzXG5cbmxldCBzdWJzdGl0dXRlIH5yZXggfnN1YnN0IHN0ciA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBwYXQgPSBSZS5Hcm91cC5nZXQgc3MgMCBpblxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChzdGFydCAtIHBvcyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdWJzdCBwYXQpO1xuICAgICAgbG9vcCBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcyk7XG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgfnJleCBzdHIgPVxuICBsZXQgcmVjIGxvb3AgYWNjdSBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBMaXN0LnJldiBhY2N1XG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKSBpblxuICBsb29wIFtdIDBcblxuKCogRnJvbSBQQ1JFICopXG5sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgcyBvZnMgbGVuID1cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIEJ5dGVzLnVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgclxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgIHwgJ1xcXFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnXG4gICAgfCAnKCcgIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcXFwnO1xuICAgICAgaW5jciBwb3M7XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gICAgfCBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgZG9uZTtcbiAgc3RyaW5nX3Vuc2FmZV9zdWIgYnVmIDAgIXBvc1xuXG5sZXQgZnVsbF9zcGxpdCA/KG1heD0wKSB+cmV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAwIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQgc11cbiAgZWxzZVxuICAgIGxldCByZXN1bHRzID0gUmUuc3BsaXRfZnVsbCByZXggcyBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIExpc3QubWFwIChmdW5jdGlvblxuICAgICAgICB8IGBUZXh0IHMgLT4gW1RleHQgc11cbiAgICAgICAgfCBgRGVsaW0gZCAtPlxuICAgICAgICAgIGxldCBtYXRjaGVzID0gUmUuR3JvdXAuYWxsX29mZnNldCBkIGluXG4gICAgICAgICAgbGV0IGRlbGltID0gUmUuR3JvdXAuZ2V0IGQgMCBpblxuICAgICAgICAgIChEZWxpbSBkZWxpbSk6OihcbiAgICAgICAgICAgIGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIG1hdGNoZXMgLSAxIGRvXG4gICAgICAgICAgICAgIGwgOj1cbiAgICAgICAgICAgICAgICAoaWYgbWF0Y2hlcy4oaSkgPSAoLTEsIC0xKVxuICAgICAgICAgICAgICAgICB0aGVuIE5vR3JvdXBcbiAgICAgICAgICAgICAgICAgZWxzZSBHcm91cCAoaSwgUmUuR3JvdXAuZ2V0IGQgaSkpXG4gICAgICAgICAgICAgICAgOjooIWwpXG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgTGlzdC5yZXYgIWwpKSByZXN1bHRzIGluXG4gICAgTGlzdC5jb25jYXQgbWF0Y2hlc1xuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbigqXG5XaGF0IHdlIGNvdWxkIChzaG91bGQ/KSBkbzpcbi0gYSogPT0+IGxvbmdlc3QgKChzaG9ydGVzdCAobm9fZ3JvdXAgYSkqICksIGEgfCAoKSkgICghISEpXG4tIGFiYyB1bmRlcnN0b29kIGFzIChhYiljXG4tIFwiKChhPyl8YilcIiBhZ2FpbnN0IFwiYWJcIiBzaG91bGQgbm90IGJpbmQgdGhlIGZpcnN0IHN1YnBhdHRlcm4gdG8gYW55dGhpbmdcblxuTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBoYW5kbGUgXCIoKChhYiljKWQpZVwiIGVmZmljaWVudGx5XG4qKVxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBuZXdsaW5lIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBSZS5yZXBuIChSZS5uZXN0IHIpIGkgalxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ub3RubCBlbHNlIFJlLmFueVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIFJlLmdyb3VwIHJcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmRpZmYgKFJlLmNvbXBsIChicmFja2V0IFtdKSkgKFJlLmNoYXIgJ1xcbicpXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnfCcgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnPydcbiAgICAgIHwgJ1snIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ3snIHwgJ1xcXFwnIGFzIGMgLT4gUmUuY2hhciBjXG4gICAgICB8ICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZCAoKlhYWCopXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGNcbiAgICBlbmQgZWxzZVxuICAgICAgY1xuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPSBbYElDYXNlIHwgYE5vU3ViIHwgYE5ld2xpbmVdXG5cbmxldCByZSA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID0gcGFyc2UgKExpc3QubWVtcSBgTmV3bGluZSBvcHRzKSBzIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBJQ2FzZSBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgTm9TdWIgb3B0cyB0aGVuIFJlLm5vX2dyb3VwIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgcmUgPSBSZS5jb21waWxlIChSZS5sb25nZXN0IHJlKVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgKEMpIEplYW4tQ2hyaXN0b3BoZSBGaWxsaWF0cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBUaGlzIHNvZnR3YXJlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgICAgKilcbigqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgKilcbigqICBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nICAgICAgICAgICAgKilcbigqICBkZXNjcmliZWQgaW4gZmlsZSBMSUNFTlNFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgICAgKilcbigqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgKilcbigqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpzIE1hcHMgb2YgaW50ZWdlcnMgaW1wbGVtZW50ZWQgYXMgUGF0cmljaWEgdHJlZXMsIGZvbGxvd2luZyBDaHJpc1xuICAgIE9rYXNha2kgYW5kIEFuZHJldyBHaWxsJ3MgcGFwZXIge1xcZW0gRmFzdCBNZXJnZWFibGUgSW50ZWdlciBNYXBzfVxuICAgICh7XFx0dFxcc21hbGwgaHR0cDovL3d3dy5jcy5jb2x1bWJpYS5lZHUvXFx+e31jZG8vcGFwZXJzLmh0bWxcXCNtbDk4bWFwc30pLlxuICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBtb2R1bGUgW1B0c2V0XSB3aGljaCBpcyBhbHNvIGJhc2VkIG9uIHRoZVxuICAgIHNhbWUgZGF0YS1zdHJ1Y3R1cmUuICopXG5cbnR5cGUga2V5ID0gaW50XG5cbnR5cGUgJ2EgdCA9XG4gIHwgRW1wdHlcbiAgfCBMZWFmIG9mIGludCAqICdhXG4gIHwgQnJhbmNoIG9mIGludCAqIGludCAqICdhIHQgKiAnYSB0XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSB0ID0gdCA9IEVtcHR5XG5cbmxldCB6ZXJvX2JpdCBrIG0gPSAoayBsYW5kIG0pID09IDBcblxubGV0IHJlYyBtZW0gayA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBMZWFmIChqLF8pIC0+IGsgPT0galxuICB8IEJyYW5jaCAoXywgbSwgbCwgcikgLT4gbWVtIGsgKGlmIHplcm9fYml0IGsgbSB0aGVuIGwgZWxzZSByKVxuXG5sZXQgcmVjIGZpbmQgayA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBrID09IGogdGhlbiB4IGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBtLCBsLCByKSAtPiBmaW5kIGsgKGlmIHplcm9fYml0IGsgbSB0aGVuIGwgZWxzZSByKVxuXG5sZXQgZmluZF9vcHQgayBtID0gdHJ5IFNvbWUgKGZpbmQgayBtKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbigqIE5vdGU6IGZpbmRfZmlyc3QvbGFzdCBoYXZlIHRvIGxvb2sgaW4gYm90aCBzdWJ0cmVlc1xuICAgYXMgdGhlc2UgYXJlIGxpdHRsZS1lbmRpYW4gUGF0cmljaWEgdHJlZXMgKilcbmxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gU29tZSAoaix4KSBlbHNlIE5vbmVcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9maXJzdF9vcHQgZiBsLCBmaW5kX2ZpcnN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+XG4gICAgICAgIGlmIGxrIDwgcmsgdGhlbiBTb21lIChsayxsdikgZWxzZSBTb21lIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiBTb21lIHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuXG5sZXQgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIChqLHgpIGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfb3B0IGYgbCwgZmluZF9maXJzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPiBpZiBsayA8IHJrIHRoZW4gKGxrLGx2KSBlbHNlIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiB2XG4gICAgfCBOb25lLCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gU29tZSAoaix4KSBlbHNlIE5vbmVcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9sYXN0X29wdCBmIGwsIGZpbmRfbGFzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPlxuICAgICAgICBpZiBsayA+IHJrIHRoZW4gU29tZSAobGssbHYpIGVsc2UgU29tZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gU29tZSB2XG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcblxubGV0IGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIChqLHgpIGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfbGFzdF9vcHQgZiBsLCBmaW5kX2xhc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT4gaWYgbGsgPiByayB0aGVuIChsayxsdikgZWxzZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gdlxuICAgIHwgTm9uZSwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGxvd2VzdF9iaXQgeCA9IHggbGFuZCAoLXgpXG5cbmxldCBicmFuY2hpbmdfYml0IHAwIHAxID0gbG93ZXN0X2JpdCAocDAgbHhvciBwMSlcblxubGV0IG1hc2sgcCBtID0gcCBsYW5kIChtLTEpXG5cbmxldCBqb2luIChwMCx0MCxwMSx0MSkgPVxuICBsZXQgbSA9IGJyYW5jaGluZ19iaXQgcDAgcDEgaW5cbiAgaWYgemVyb19iaXQgcDAgbSB0aGVuXG4gICAgQnJhbmNoIChtYXNrIHAwIG0sIG0sIHQwLCB0MSlcbiAgZWxzZVxuICAgIEJyYW5jaCAobWFzayBwMCBtLCBtLCB0MSwgdDApXG5cbmxldCBtYXRjaF9wcmVmaXggayBwIG0gPSAobWFzayBrIG0pID09IHBcblxubGV0IGFkZCBrIHggdCA9XG4gIGxldCByZWMgaW5zID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IExlYWYgKGsseClcbiAgICB8IExlYWYgKGosXykgYXMgdCAtPlxuICAgICAgaWYgaiA9PSBrIHRoZW4gTGVhZiAoayx4KSBlbHNlIGpvaW4gKGssIExlYWYgKGsseCksIGosIHQpXG4gICAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgYXMgdCAtPlxuICAgICAgaWYgbWF0Y2hfcHJlZml4IGsgcCBtIHRoZW5cblx0aWYgemVyb19iaXQgayBtIHRoZW5cblx0ICBCcmFuY2ggKHAsIG0sIGlucyB0MCwgdDEpXG5cdGVsc2Vcblx0ICBCcmFuY2ggKHAsIG0sIHQwLCBpbnMgdDEpXG4gICAgICBlbHNlXG5cdGpvaW4gKGssIExlYWYgKGsseCksIHAsIHQpXG4gIGluXG4gIGlucyB0XG5cbmxldCBzaW5nbGV0b24gayB2ID1cbiAgYWRkIGsgdiBlbXB0eVxuXG5sZXQgYnJhbmNoID0gZnVuY3Rpb25cbiAgfCAoXyxfLEVtcHR5LHQpIC0+IHRcbiAgfCAoXyxfLHQsRW1wdHkpIC0+IHRcbiAgfCAocCxtLHQwLHQxKSAgIC0+IEJyYW5jaCAocCxtLHQwLHQxKVxuXG5sZXQgcmVtb3ZlIGsgdCA9XG4gIGxldCByZWMgcm12ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmIChqLF8pIGFzIHQgLT4gaWYgayA9PSBqIHRoZW4gRW1wdHkgZWxzZSB0XG4gICAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgYXMgdCAtPlxuICAgICAgaWYgbWF0Y2hfcHJlZml4IGsgcCBtIHRoZW5cblx0aWYgemVyb19iaXQgayBtIHRoZW5cblx0ICBicmFuY2ggKHAsIG0sIHJtdiB0MCwgdDEpXG5cdGVsc2Vcblx0ICBicmFuY2ggKHAsIG0sIHQwLCBybXYgdDEpXG4gICAgICBlbHNlXG5cdHRcbiAgaW5cbiAgcm12IHRcblxubGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IExlYWYgXyAtPiAxXG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGNhcmRpbmFsIHQwICsgY2FyZGluYWwgdDFcblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiAoayx4KSAtPiBmIGsgeFxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBpdGVyIGYgdDA7IGl0ZXIgZiB0MVxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGsseCkgLT4gTGVhZiAoaywgZiB4KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBCcmFuY2ggKHAsIG0sIG1hcCBmIHQwLCBtYXAgZiB0MSlcblxubGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoayx4KSAtPiBMZWFmIChrLCBmIGsgeClcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gQnJhbmNoIChwLCBtLCBtYXBpIGYgdDAsIG1hcGkgZiB0MSlcblxubGV0IHJlYyBmb2xkIGYgcyBhY2N1ID0gbWF0Y2ggcyB3aXRoXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IExlYWYgKGsseCkgLT4gZiBrIHggYWNjdVxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBmb2xkIGYgdDAgKGZvbGQgZiB0MSBhY2N1KVxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IExlYWYgKGssIHYpICAtPiBwIGsgdlxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBmb3JfYWxsIHAgdDAgJiYgZm9yX2FsbCBwIHQxXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGZhbHNlXG4gIHwgTGVhZiAoaywgdikgLT4gcCBrIHZcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZXhpc3RzIHAgdDAgfHwgZXhpc3RzIHAgdDFcblxubGV0IHJlYyBmaWx0ZXIgcHIgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoaywgdikgYXMgdCAtPiBpZiBwciBrIHYgdGhlbiB0IGVsc2UgRW1wdHlcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gYnJhbmNoIChwLCBtLCBmaWx0ZXIgcHIgdDAsIGZpbHRlciBwciB0MSlcblxubGV0IHJlYyBmaWx0ZXJfbWFwIHByID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGssIHYpIC0+IChtYXRjaCBwciBrIHYgd2l0aCBTb21lIHYnIC0+IExlYWYgKGssIHYnKSB8IE5vbmUgLT4gRW1wdHkpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IGJyYW5jaCAocCwgbSwgZmlsdGVyX21hcCBwciB0MCwgZmlsdGVyX21hcCBwciB0MSlcblxubGV0IHBhcnRpdGlvbiBwIHMgPVxuICBsZXQgcmVjIHBhcnQgKHQsZiBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY1xuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgcCBrIHYgdGhlbiAoYWRkIGsgdiB0LCBmKSBlbHNlICh0LCBhZGQgayB2IGYpXG4gICAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gcGFydCAocGFydCBhY2MgdDApIHQxXG4gIGluXG4gIHBhcnQgKEVtcHR5LCBFbXB0eSkgc1xuXG5sZXQgcmVjIGNob29zZSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLCBfLCB0MCwgXykgLT4gY2hvb3NlIHQwICAgKCogd2Uga25vdyB0aGF0IFt0MF0gaXMgbm9uLWVtcHR5ICopXG5cbmxldCByZWMgY2hvb3NlX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLCBfLCB0MCwgXykgLT4gY2hvb3NlX29wdCB0MCAgICgqIHdlIGtub3cgdGhhdCBbdDBdIGlzIG5vbi1lbXB0eSAqKVxuXG5sZXQgc3BsaXQgeCBtID1cbiAgbGV0IGNvbGwgayB2IChsLCBiLCByKSA9XG4gICAgaWYgayA8IHggdGhlbiBhZGQgayB2IGwsIGIsIHJcbiAgICBlbHNlIGlmIGsgPiB4IHRoZW4gbCwgYiwgYWRkIGsgdiByXG4gICAgZWxzZSBsLCBTb21lIHYsIHJcbiAgaW5cbiAgZm9sZCBjb2xsIG0gKGVtcHR5LCBOb25lLCBlbXB0eSlcblxubGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIGxldCAoa3MsIF8pIGFzIGJzID0gbWluX2JpbmRpbmcgcyBpblxuICAgIGxldCAoa3QsIF8pIGFzIGJ0ID0gbWluX2JpbmRpbmcgdCBpblxuICAgIGlmIGtzIDwga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbWF0Y2ggKG1pbl9iaW5kaW5nX29wdCBzLCBtaW5fYmluZGluZ19vcHQgdCkgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBOb25lLCBidCAtPiBidFxuICAgIHwgYnMsIE5vbmUgLT4gYnNcbiAgICB8IChTb21lIChrcywgXykgYXMgYnMpLCAoU29tZSAoa3QsIF8pIGFzIGJ0KSAtPlxuICAgICAgaWYga3MgPCBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIGxldCAoa3MsIF8pIGFzIGJzID0gbWF4X2JpbmRpbmcgcyBpblxuICAgIGxldCAoa3QsIF8pIGFzIGJ0ID0gbWF4X2JpbmRpbmcgdCBpblxuICAgIGlmIGtzID4ga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbWF0Y2ggbWF4X2JpbmRpbmdfb3B0IHMsIG1heF9iaW5kaW5nX29wdCB0IHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgTm9uZSwgYnQgLT4gYnRcbiAgICB8IGJzLCBOb25lIC0+IGJzXG4gICAgfCAoU29tZSAoa3MsIF8pIGFzIGJzKSwgKFNvbWUgKGt0LCBfKSBhcyBidCkgLT5cbiAgICAgIGlmIGtzID4ga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCBiaW5kaW5ncyBtID1cbiAgZm9sZCAoZnVuIGsgdiBhY2MgLT4gKGssIHYpIDo6IGFjYykgbSBbXVxuXG4oKiB3ZSBvcmRlciBjb25zdHJ1Y3RvcnMgYXMgRW1wdHkgPCBMZWFmIDwgQnJhbmNoICopXG5sZXQgY29tcGFyZSBjbXAgdDEgdDIgPVxuICBsZXQgcmVjIGNvbXBhcmVfYXV4IHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICAgIHwgRW1wdHksIEVtcHR5IC0+IDBcbiAgICB8IEVtcHR5LCBfIC0+IC0xXG4gICAgfCBfLCBFbXB0eSAtPiAxXG4gICAgfCBMZWFmIChrMSx4MSksIExlYWYgKGsyLHgyKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsxIGsyIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY21wIHgxIHgyXG4gICAgfCBMZWFmIF8sIEJyYW5jaCBfIC0+IC0xXG4gICAgfCBCcmFuY2ggXywgTGVhZiBfIC0+IDFcbiAgICB8IEJyYW5jaCAocDEsbTEsbDEscjEpLCBCcmFuY2ggKHAyLG0yLGwyLHIyKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIHAxIHAyIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2Vcblx0bGV0IGMgPSBjb21wYXJlIG0xIG0yIGluXG5cdGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9hdXggbDEgbDIgaW5cbiAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IHIxIHIyXG4gIGluXG4gIGNvbXBhcmVfYXV4IHQxIHQyXG5cbmxldCBlcXVhbCBlcSB0MSB0MiA9XG4gIGxldCByZWMgZXF1YWxfYXV4IHQxIHQyID0gbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIChrMSx4MSksIExlYWYgKGsyLHgyKSAtPiBrMSA9IGsyICYmIGVxIHgxIHgyXG4gICAgfCBCcmFuY2ggKHAxLG0xLGwxLHIxKSwgQnJhbmNoIChwMixtMixsMixyMikgLT5cbiAgICAgIHAxID0gcDIgJiYgbTEgPSBtMiAmJiBlcXVhbF9hdXggbDEgbDIgJiYgZXF1YWxfYXV4IHIxIHIyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGVxdWFsX2F1eCB0MSB0MlxuXG5sZXQgbWVyZ2UgZiBtMSBtMiA9XG4gIGxldCBhZGQgbSBrID0gZnVuY3Rpb24gTm9uZSAtPiBtIHwgU29tZSB2IC0+IGFkZCBrIHYgbSBpblxuICAoKiBmaXJzdCBjb25zaWRlciBhbGwgYmluZGluZ3MgaW4gbTEgKilcbiAgbGV0IG0gPSBmb2xkXG4gICAgICAoZnVuIGsxIHYxIG0gLT4gYWRkIG0gazEgKGYgazEgKFNvbWUgdjEpIChmaW5kX29wdCBrMSBtMikpKSBtMSBlbXB0eSBpblxuICAoKiB0aGVuIGJpbmRpbmdzIGluIG0yIHRoYXQgYXJlIG5vdCBpbiBtMSAqKVxuICBmb2xkIChmdW4gazIgdjIgbSAtPiBpZiBtZW0gazIgbTEgdGhlbiBtIGVsc2UgYWRkIG0gazIgKGYgazIgTm9uZSAoU29tZSB2MikpKVxuICAgIG0yIG1cblxubGV0IHVwZGF0ZSB4IGYgbSA9XG4gIG1hdGNoIGYgKGZpbmRfb3B0IHggbSkgd2l0aFxuICB8IE5vbmUgLT4gcmVtb3ZlIHggbVxuICB8IFNvbWUgeiAtPiBhZGQgeCB6IG1cblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9IG4gPj0gMCAmJiAobSA8IDAgfHwgbiA8IG0pXG5cbmxldCByZWMgdW5pb24gZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHksIHQgIC0+IHRcbiAgfCB0LCBFbXB0eSAgLT4gdFxuICB8IExlYWYgKGssdjEpLCB0IC0+XG4gICAgICB1cGRhdGUgayAoZnVuY3Rpb24gTm9uZSAtPiBTb21lIHYxIHwgU29tZSB2MiAtPiBmIGsgdjEgdjIpIHRcbiAgfCB0LCBMZWFmIChrLHYyKSAtPlxuICAgICAgdXBkYXRlIGsgKGZ1bmN0aW9uIE5vbmUgLT4gU29tZSB2MiB8IFNvbWUgdjEgLT4gZiBrIHYxIHYyKSB0XG4gIHwgKEJyYW5jaCAocCxtLHMwLHMxKSBhcyBzKSwgKEJyYW5jaCAocSxuLHQwLHQxKSBhcyB0KSAtPlxuICAgICAgaWYgbSA9PSBuICYmIG1hdGNoX3ByZWZpeCBxIHAgbSB0aGVuXG5cdCgqIFRoZSB0cmVlcyBoYXZlIHRoZSBzYW1lIHByZWZpeC4gTWVyZ2UgdGhlIHN1YnRyZWVzLiAqKVxuXHRicmFuY2ggKHAsIG0sIHVuaW9uIGYgKHMwLHQwKSwgdW5pb24gZiAoczEsdDEpKVxuICAgICAgZWxzZSBpZiB1bnNpZ25lZF9sdCBtIG4gJiYgbWF0Y2hfcHJlZml4IHEgcCBtIHRoZW5cblx0KCogW3FdIGNvbnRhaW5zIFtwXS4gTWVyZ2UgW3RdIHdpdGggYSBzdWJ0cmVlIG9mIFtzXS4gKilcblx0aWYgemVyb19iaXQgcSBtIHRoZW5cblx0ICBicmFuY2ggKHAsIG0sIHVuaW9uIGYgKHMwLHQpLCBzMSlcbiAgICAgICAgZWxzZVxuXHQgIGJyYW5jaCAocCwgbSwgczAsIHVuaW9uIGYgKHMxLHQpKVxuICAgICAgZWxzZSBpZiB1bnNpZ25lZF9sdCBuIG0gJiYgbWF0Y2hfcHJlZml4IHAgcSBuIHRoZW5cblx0KCogW3BdIGNvbnRhaW5zIFtxXS4gTWVyZ2UgW3NdIHdpdGggYSBzdWJ0cmVlIG9mIFt0XS4gKilcblx0aWYgemVyb19iaXQgcCBuIHRoZW5cblx0ICBicmFuY2ggKHEsIG4sIHVuaW9uIGYgKHMsdDApLCB0MSlcblx0ZWxzZVxuXHQgIGJyYW5jaCAocSwgbiwgdDAsIHVuaW9uIGYgKHMsdDEpKVxuICAgICAgZWxzZVxuXHQoKiBUaGUgcHJlZml4ZXMgZGlzYWdyZWUuICopXG5cdGpvaW4gKHAsIHMsIHEsIHQpXG5cbmxldCB1bmlvbiBmIHMgdCA9IHVuaW9uIGYgKHMsdClcblxubGV0IHRvX3NlcSBtID1cbiAgbGV0IHJlYyBwcmVwZW5kX3NlcSBtIHMgPSBtYXRjaCBtIHdpdGhcbiAgICB8IEVtcHR5IC0+IHNcbiAgICB8IExlYWYgKGssIHYpIC0+IGZ1biAoKSAtPiBTZXEuQ29ucygoayx2KSwgcylcbiAgICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT4gcHJlcGVuZF9zZXEgbCAocHJlcGVuZF9zZXEgciBzKVxuICBpblxuICBwcmVwZW5kX3NlcSBtIFNlcS5lbXB0eVxuXG5sZXQgdG9fc2VxX2Zyb20gayBtID1cbiAgbGV0IHJlYyBwcmVwZW5kX3NlcSBtIHMgPSBtYXRjaCBtIHdpdGhcbiAgICB8IEVtcHR5IC0+IHNcbiAgICB8IExlYWYgKGtleSwgdikgLT4gaWYga2V5ID49IGsgdGhlbiBmdW4gKCkgLT4gU2VxLkNvbnMoKGtleSx2KSwgcykgZWxzZSBzXG4gICAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+IHByZXBlbmRfc2VxIGwgKHByZXBlbmRfc2VxIHIgcylcbiAgaW5cbiAgcHJlcGVuZF9zZXEgbSBTZXEuZW1wdHlcblxubGV0IGFkZF9zZXEgcyBtID1cbiAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgbSBzXG5cbmxldCBvZl9zZXEgcyA9XG4gIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIGVtcHR5IHNcbiIsImxldCB1dGY4X29mX2NvZGUgYnVmIHggPVxuICBsZXQgYWRkID0gQnVmZmVyLmFkZF9jaGFyIGluXG5cbiAgKCogU3RyYWlnaHQgPD0gZG9lc24ndCB3b3JrIHdpdGggc2lnbmVkIDMxLWJpdCBpbnRzICopXG4gIGxldCBtYXhiaXRzIG4geCA9IHggbHNyIG4gPSAwIGluXG5cbiAgaWYgbWF4Yml0cyA3IHggdGhlbiAoKiA3ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgeClcbiAgZWxzZSBpZiBtYXhiaXRzIDExIHggdGhlbiAoXG4gICAgKCogNSArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAwMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDE2IHggdGhlbiAoXG4gICAgKCogNCArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDAwMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDIxIHggdGhlbiAoXG4gICAgKCogMyArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTEwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAwMDAxMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDI2IHggdGhlbiAoXG4gICAgKCogMiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMDAwMDExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChtYXhiaXRzIDMxIHgpO1xuICAgICgqIDEgKyA2ICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMTAwIGxvciAoKHggbHNyIDMwKSBsYW5kIDBiMDAwMDAwMDEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG5cbmxldCBjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgaiA9XG4gIGxldCBoaWdoMTAgPSBpIC0gMHhEODAwIGluXG4gIGxldCBsb3cxMCA9IGogLSAweERDMDAgaW5cbiAgMHgxMDAwMCArICgoaGlnaDEwIGxzbCAxMCkgbG9yIGxvdzEwKVxuXG5sZXQgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciBidWYgaSBqID1cbiAgdXRmOF9vZl9jb2RlIGJ1ZiAoY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGopXG4iLCJsZXQgdmVyc2lvbiA9IFwiMi4yLjJcIlxuXG5leGNlcHRpb24gSnNvbl9lcnJvciBvZiBzdHJpbmdcblxubGV0IGpzb25fZXJyb3IgcyA9IHJhaXNlIChKc29uX2Vycm9yIHMpXG5cbmV4Y2VwdGlvbiBFbmRfb2ZfYXJyYXlcbmV4Y2VwdGlvbiBFbmRfb2Zfb2JqZWN0XG5leGNlcHRpb24gRW5kX29mX3R1cGxlXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbnR5cGUgbGV4ZXJfc3RhdGUgPSB7XG4gIGJ1ZiA6IEJ1ZmZlci50OyAoKiBCdWZmZXIgdXNlZCB0byBhY2N1bXVsYXRlIHN1YnN0cmluZ3MgKilcbiAgbXV0YWJsZSBsbnVtIDogaW50OyAoKiBDdXJyZW50IGxpbmUgbnVtYmVyIChzdGFydGluZyBmcm9tIDEpICopXG4gIG11dGFibGUgYm9sIDogaW50O1xuICAgICAgKCogQWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgY3VycmVudCBsaW5lXG4gICAgICAgICAoc3RhcnRpbmcgZnJvbSAwKSAqKVxuICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjsgKCogTmFtZSBkZXNjcmliaW5nIHRoZSBpbnB1dCBmaWxlICopXG59XG5cbm1vZHVsZSBMZXhlcl9zdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBsZXhlcl9zdGF0ZSA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cbmVuZFxuXG5sZXQgaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/KGxudW0gPSAxKSAoKSA9XG4gIGxldCBidWYgPSBtYXRjaCBidWYgd2l0aCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgMjU2IHwgU29tZSBidWYgLT4gYnVmIGluXG4gIHsgYnVmOyBsbnVtOyBib2wgPSAwOyBmbmFtZSB9XG4iLCJsZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2p1bmsgYnVmIG4gbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMiBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuICAgICAgICAoICgpIClcbiMgOTggXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgMSAtPlxuIyAzIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAoXG4gICAgIGlmIG4gPD0gMCB0aGVuICgpXG4gICAgIGVsc2UgYmVnaW5cbiAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChMZXhpbmcubGV4ZW1lX2NoYXIgbGV4YnVmIDApO1xuICAgICAgIHJlYWRfanVuayBidWYgKG4gLSAxKSBsZXhidWZcbiAgICAgZW5kXG4gICAgIClcbiMgMTA5IFwibGliL2xleGVyX3V0aWxzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMSBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuIFxubGV0IHJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgbiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICBsZXQgbGV4X2Fic19wb3MgPSBsZXhidWYubGV4X2Fic19wb3MgaW5cbiAgbGV0IGxleF9zdGFydF9wb3MgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICByZWFkX2p1bmsgYnVmIG4gbGV4YnVmO1xuICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBsZXhfc3RhcnRfcG9zICsgMTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleF9hYnNfcG9zXG5cbiMgMTI1IFwibGliL2xleGVyX3V0aWxzLm1sXCJcbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludCBvZiBpbnRcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cblxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IHggLT4geFxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBDb21tb24uTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIENvbW1vbi5qc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBidWZfc2l6ZSA9IDMyIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgYnVmX3NpemUgaW5cbiAgICBsZXQgKCkgPSBMZXhlcl91dGlscy5yZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIGJ1Zl9zaXplIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuXG4gIGxldCBuZXdsaW5lIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cblxuIyAxNTQgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDBcXDAwMFxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDEyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjIxXFwwMDFcXDAwMFxcMDAwXFwyNTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDI0MVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFwxOThcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDI1NVxcMjU1XFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTIyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMjBcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjM4XFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjM4XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuIyAxMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuIyAxMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuIyAxMDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5hblxuICAgICAgICAgICAgICAgIClcbiMgMTAzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMTgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBpbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICApXG4jIDEwNTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDE5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgKGZpbmlzaF9zdHJpbmcgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgKVxuIyAxMDY4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAyMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgICAgICAgICAgICAgKVxuIyAxMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDI1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgMjc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDExNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyAyODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyAyODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgMjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE5IC0+XG4jIDI5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcbiMgMTIxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDI5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuIyAxMjQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG4jIDEyNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuIyAxMjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuIyAxMjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG4jIDEyODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDMxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDMxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG4jIDEzMTAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzMTUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTMyMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzMjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuIyAzMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9jb2RlIHYuYnVmIHhcblxuICAgICAgICAgKVxuIyAxMzM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAzMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG4jIDEzNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzNzAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG4jIDEzODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcbiMgMTQxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDE0MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcbiMgMTQ0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG4jIDE0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzY5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMTQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuIyAxNTMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuIyAxNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTU1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMTU3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTU5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE1OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMTYzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuIyAxNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjY0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2OTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2OTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTgzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuIyAxODUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuIyAxODU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcbiMgMTg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpIClcbiMgMTg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNTA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcbiMgMTg4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNTIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA1MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTkyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgNTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuIyAxOTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjAwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDIxMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjEzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjIyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyOTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjMxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjMzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuIyAyMzk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG4jIDI0MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDcwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDI4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA3NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjU0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgNzQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDc2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNzgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA4MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDgxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyA4MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA4MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjY2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNjc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjY3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjcxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjczNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjc1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjc1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4ODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjgyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgOTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDkzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgOTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDkzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDkzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI4NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA5MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyODc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcbiMgMjkxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDI5MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjkyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI5NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI5NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgOTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDMwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwNDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwNjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA4NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzEzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzEzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG4jIDMxNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMzE3MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuIyAzMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAzMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiBcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IENvbW1vbi5pbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZDpfIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuIyAzMzc1IFwibGliL3JlYWQubWxcIlxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gaVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBTb21lIHNcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgIGBJbnQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgU3RyaW5nIHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG5lbmRcblxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIHwgYEZsb2F0bGl0IG9mIHN0cmluZ1xuICAgIHwgYFN0cmluZ2xpdCBvZiBzdHJpbmdcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICAoKiB0aGlzIHJlcXVpcmVzIGFuIGludCBhbmQgbmV2ZXIgdXNlcyBpdC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlXG4gICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gbm90IGJyZWFrIHRoZSBzaWduYXR1ciBidXQgY2FuIHNhZmVseVxuICAgICBiZSBjaGFuZ2VkIHRvIHJlcXVpcmUgdW5pdCBpbiBhIGZ1dHVyZSBjb21wYXRpYmlsaXR5LWJyZWFraW5nXG4gICAgIHJlbGVhc2UgKilcbiAgbGV0IF8gOiBpbnQgPSBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpIGluXG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIHwgeCAtPiB4XG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuZW5kXG5cbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nbGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nbGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXRsaXQgYSwgYEZsb2F0bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmdsaXQgYSwgYFN0cmluZ2xpdCBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBDb21tb24uTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIENvbW1vbi5qc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBidWZfc2l6ZSA9IDMyIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgYnVmX3NpemUgaW5cbiAgICBsZXQgKCkgPSBMZXhlcl91dGlscy5yZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIGJ1Zl9zaXplIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBuZXdsaW5lIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cblxuIyAxNTQgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDBcXDAwMFxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDEyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjIxXFwwMDFcXDAwMFxcMDAwXFwyNTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDI0MVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFwxOThcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDI1NVxcMjU1XFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTIyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMjBcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjM4XFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjM4XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuIyAxMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuIyAxMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuIyAxMDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiTmFOXCJcbiAgICAgICAgICAgICAgICApXG4jIDEwMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDE4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJJbmZpbml0eVwiXG4gICAgICAgICAgICAgICAgKVxuIyAxMDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiLUluZmluaXR5XCJcbiAgICAgICAgICAgICAgICApXG4jIDEwNTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDE5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nbGl0IChmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIClcbiMgMTA2OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgIClcbiMgMTA4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDIxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTExNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDIzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyAyNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDI3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDI4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDI4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyAyODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyAyODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTkgLT5cbiMgMjkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuIyAxMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAyOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAyOTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTIzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG4jIDEyNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTI2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcbiMgMTI3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG4jIDEyNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG4jIDEyODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcbiMgMTI4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcbiMgMTMxMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTMxNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzIwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTMyNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG4jIDMyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX2NvZGUgdi5idWYgeFxuXG4gICAgICAgICApXG4jIDEzMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDMyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcbiMgMTM0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTM3MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTM3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcbiMgMTM4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuIyAxNDE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMTQyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuIyAxNDQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcbiMgMTQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAxNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG4jIDE1MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG4jIDE1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTU0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTU2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAxNTcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTU5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAxNjMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG4jIDE2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2ODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTcwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQ1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxODExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTgzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG4jIDE4NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG4jIDE4NTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuIyAxODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikgKVxuIyAxODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA1MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuIyAxODg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA1MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDUyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTg5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA1MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG4jIDE5NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjA0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgICAgICApXG4jIDIxMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjEzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjIyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyOTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjMxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjMzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuIyAyMzk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG4jIDI0MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDcwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDI4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA3NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjU0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgNzQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDc2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNzgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgODAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyA4MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyA4MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgODE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgODE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI2NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjY3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI2NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjcwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjcyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjczMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjc0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI3NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjc4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKCc7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgOTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc8JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDkzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgOTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDkzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDkzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI4NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA5MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyODc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcbiMgMjkxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDI5MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjkyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI5NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI5NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgOTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDMwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwNDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwNjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA4NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzEzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzEzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG4jIDMxNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMzE3MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuIyAzMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAzMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiBcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IENvbW1vbi5pbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZDpfIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuIyAzMzc1IFwibGliL3JlYWQubWxcIlxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIHwgYFN0cmluZ2xpdCBfIC0+IFwic3RyaW5nbGl0XCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbmVuZFxuXG4iLCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IHJlYyB0b19iYXNpYyA6IHQgLT4gQmFzaWMudCA9IGZ1bmN0aW9uXG4gIHwgKGBOdWxsIHwgYEJvb2wgXyB8IGBJbnQgXyB8IGBGbG9hdCBfIHwgYFN0cmluZyBfKSBhcyB4IC0+IHhcbiAgfCBgSW50bGl0IHMgLT4gYFN0cmluZyBzXG4gIHwgYExpc3QgbCB8IGBUdXBsZSBsIC0+IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHRvX2Jhc2ljIGwpKVxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBgQXNzb2MgKExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHRvX2Jhc2ljIHYpKSBsKSlcbiAgfCBgVmFyaWFudCAoaywgTm9uZSkgLT4gYFN0cmluZyBrXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgLT4gYExpc3QgWyBgU3RyaW5nIGs7IHRvX2Jhc2ljIHYgXVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgfCB4IC0+IHhcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgbW9kdWxlIExleGluZyA9XG4gICAgKCpcbiAgICAgIFdlIG92ZXJyaWRlIExleGluZy5lbmdpbmUgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgcG9zaXRpb25cbiAgICAgIHJlY29yZCBlYWNoIHRpbWUgYSBydWxlIGlzIG1hdGNoZWQuXG4gICAgICBUaGlzIHJlZHVjZXMgdG90YWwgcGFyc2luZyB0aW1lIGJ5IGFib3V0IDMxJS5cbiAgICAqKVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIExleGluZ1xuXG4gICAgZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuXG4gICAgbGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgICAgIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gICAgICAoKlxuICAgICAgaWYgcmVzdWx0ID49IDAgdGhlbiBiZWdpblxuICAgICAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICAgICAgZW5kO1xuICAgICAgKilcbiAgICAgIHJlc3VsdFxuICBlbmRcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gQ29tbW9uLkxleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmVcIiBzXG4gICAgaW5cbiAgICBsZXQgYnl0ZXMgPVxuICAgICAgaWYgcG9zMSA9IHBvczIgdGhlblxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIiVzICVpLCAlczpcXG4lc1wiIGZpbGVfbGluZSB2LmxudW0gYnl0ZXMgZGVzY3IgaW5cbiAgICBDb21tb24uanNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgYnVmX3NpemUgPSAzMiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0ICgpID0gTGV4ZXJfdXRpbHMucmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBidWZfc2l6ZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IG5ld2xpbmUgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuXG4jIDE1NCBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMjFcXDAwMVxcMDAwXFwwMDBcXDI1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjQxXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMjU1XFwyNTVcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDI1NVxcMjU1XFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMjU1XFwyNTVcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIyMFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG4jIDEwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG4jIDEwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG4jIDEwMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDE3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgKVxuIyAxMDM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAxODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICApXG4jIDEwNjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDIwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICApXG4jIDEwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyAyMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyAyMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgMjUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgYFR1cGxlIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyAyNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnMgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYFZhcmlhbnQgKGNvbnMsIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgICApXG4jIDExNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyAyODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyAyODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgMjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE5IC0+XG4jIDI5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcbiMgMTIxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDI5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuIyAxMjQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG4jIDEyNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuIyAxMjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuIyAxMjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG4jIDEyODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDMxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDMxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG4jIDEzMTAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzMTUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTMyMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzMjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuIyAzMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9jb2RlIHYuYnVmIHhcblxuICAgICAgICAgKVxuIyAxMzM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAzMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG4jIDEzNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzNzAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG4jIDEzODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcbiMgMTQxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDE0MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcbiMgMTQ0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG4jIDE0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzY5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMTQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuIyAxNTMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuIyAxNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTU1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMTU3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTU5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE1OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMTYzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuIyAxNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjY0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2OTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2OTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTgzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuIyAxODUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuIyAxODU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcbiMgMTg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpIClcbiMgMTg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNTA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcbiMgMTg4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNTIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA1MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTkyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgNTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuIyAxOTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjAwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICAgICAgKVxuIyAyMTMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjE0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjE4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIyMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjI4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjMxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzMzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMjM5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuIyAyNDAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0MjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQyOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNzQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI1NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDc0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA3NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDc4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjYxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDgwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgODE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgODE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDgxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDgxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyNjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI2NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyNjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI3MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyNzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI3ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJygnO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDkxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPCc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyODQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA5MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDkzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA5MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA5MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyODcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgOTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjg3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG4jIDI5MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAyOTIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyOTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyOTQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjk1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDk4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAzMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5ODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5OTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDYzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzA3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwOTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzEyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuIyAzMTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTUzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDMxNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcbiMgMzE5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMzE5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBDb21tb24uaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQ6XyBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cbiMgMzM3NSBcImxpYi9yZWFkLm1sXCJcblxubW9kdWxlIFV0aWwgPSBzdHJ1Y3RcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgfCBgSW50IF8gLT4gXCJpbnRcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIHwgYFR1cGxlIF8gLT4gXCJ0dXBsZVwiXG4gIHwgYFZhcmlhbnQgXyAtPiBcInZhcmlhbnRcIlxuXG5sZXQgdHlwZXJyIG1zZyBqcyA9IHJhaXNlIChUeXBlX2Vycm9yIChtc2cgXiB0eXBlb2YganMsIGpzKSlcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmcgKiB0XG5cbmxldCBhc3NvYyBuYW1lIG9iaiA9IHRyeSBMaXN0LmFzc29jIG5hbWUgb2JqIHdpdGggTm90X2ZvdW5kIC0+IGBOdWxsXG5cbmxldCBtZW1iZXIgbmFtZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBhc3NvYyBuYW1lIG9ialxuICB8IGpzIC0+IHR5cGVyciAoXCJDYW4ndCBnZXQgbWVtYmVyICdcIiBeIG5hbWUgXiBcIicgb2Ygbm9uLW9iamVjdCB0eXBlIFwiKSBqc1xuXG5sZXQgcmVjIHBhdGggbCBvYmogPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBTb21lIG9ialxuICB8IGtleSA6OiBsIC0+IChcbiAgICAgIG1hdGNoIG9iaiB3aXRoXG4gICAgICB8IGBBc3NvYyBhc3NvYyAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBrZXkgYXNzb2Mgd2l0aFxuICAgICAgICAgIHwgb2JqIC0+IHBhdGggbCBvYmpcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW5kZXggaSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCBhcyBqcyAtPlxuICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgIGxldCB3cmFwcGVkX2luZGV4ID0gaWYgaSA8IDAgdGhlbiBsZW4gKyBpIGVsc2UgaSBpblxuICAgICAgaWYgd3JhcHBlZF9pbmRleCA8IDAgfHwgd3JhcHBlZF9pbmRleCA+PSBsZW4gdGhlblxuICAgICAgICByYWlzZSAoVW5kZWZpbmVkIChcIkluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb3V0IG9mIGJvdW5kc1wiLCBqcykpXG4gICAgICBlbHNlIExpc3QubnRoIGwgd3JhcHBlZF9pbmRleFxuICB8IGpzIC0+XG4gICAgICB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IGluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb2Ygbm9uLWFycmF5IHR5cGUgXCIpIGpzXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBgTGlzdCAoTGlzdC5tYXAgZiBsKVxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IG1hcCBmdW5jdGlvbiBvdmVyIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCB0b19hc3NvYyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBvYmplY3QsIGdvdCBcIiBqc1xuXG5sZXQgdG9fb3B0aW9uIGYgPSBmdW5jdGlvbiBgTnVsbCAtPiBOb25lIHwgeCAtPiBTb21lIChmIHgpXG5sZXQgdG9fYm9vbCA9IGZ1bmN0aW9uIGBCb29sIGIgLT4gYiB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wsIGdvdCBcIiBqc1xuXG5sZXQgdG9fYm9vbF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT4gU29tZSBiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXIgPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBmbG9hdCBpXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSAoZmxvYXQgaSlcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IGBGbG9hdCBmIC0+IGZcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGlcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IFNvbWUgaVxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gc1xuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gU29tZSBzXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIGBJbnQgeCAtPiBTb21lIChmbG9hdCB4KVxuICAgICAgfCBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYFN0cmluZyB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuZW5kXG5cbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludCBvZiBpbnRcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgfCB4IC0+IHhcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nbGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nbGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0bGl0IGEsIGBGbG9hdGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZ2xpdCBhLCBgU3RyaW5nbGl0IGIgLT4gYSA9IGJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiIsIm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4hIFlvanNvblxuXG50eXBlIHQgPSBZb2pzb24uU2FmZS50XG5cbmxldCB5b2pzb25fb2ZfdW5pdCAoKSA6IHQgPSBgTnVsbFxubGV0IHlvanNvbl9vZl9ib29sIGIgOiB0ID0gYEJvb2wgYlxubGV0IHlvanNvbl9vZl9zdHJpbmcgc3RyIDogdCA9IGBTdHJpbmcgc3RyXG5sZXQgeW9qc29uX29mX2J5dGVzIGJ5dGVzIDogdCA9IGBTdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBieXRlcylcbmxldCB5b2pzb25fb2ZfY2hhciBjIDogdCA9IGBTdHJpbmcgKFN0cmluZy5tYWtlIDEgYylcbmxldCB5b2pzb25fb2ZfaW50IG4gOiB0ID0gYEludCBuXG5sZXQgeW9qc29uX29mX2Zsb2F0IG4gOiB0ID0gYEZsb2F0IG5cbmxldCB5b2pzb25fb2ZfaW50MzIgKG4gOiBJbnQzMi50KSA6IHQgPSBgSW50bGl0IChJbnQzMi50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfaW50NjQgKG4gOiBJbnQ2NC50KSA6IHQgPSBgSW50bGl0IChJbnQ2NC50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfbmF0aXZlaW50IG4gOiB0ID0gYEludGxpdCAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9yZWYgeW9qc29uX29mX19hIHJmID0geW9qc29uX29mX19hICFyZlxubGV0IHlvanNvbl9vZl9sYXp5X3QgeW9qc29uX29mX19hIGx2ID0geW9qc29uX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgeW9qc29uX29mX29wdGlvbiB5b2pzb25fb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiB5b2pzb25fb2ZfX2EgeFxuICB8IE5vbmUgLT4gYE51bGxcbjs7XG5cbmxldCB5b2pzb25fb2ZfcGFpciB5b2pzb25fb2ZfX2EgeW9qc29uX29mX19iIChhLCBiKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiIF1cbjs7XG5cbmxldCB5b2pzb25fb2ZfdHJpcGxlIHlvanNvbl9vZl9fYSB5b2pzb25fb2ZfX2IgeW9qc29uX29mX19jIChhLCBiLCBjKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiOyB5b2pzb25fb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgeW9qc29uX29mX2xpc3QgeW9qc29uX29mX19hIGxzdCA9IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIH5mOnlvanNvbl9vZl9fYSBsc3QpKVxuXG5sZXQgeW9qc29uX29mX2FycmF5IHlvanNvbl9vZl9fYSBhciA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkubGVuZ3RoIGFyIC0gMSBkb3dudG8gMCBkb1xuICAgIGxzdF9yZWYgOj0geW9qc29uX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHlvanNvbl9vZl9oYXNodGJsIHlvanNvbl9vZl9rZXkgeW9qc29uX29mX3ZhbCBodGJsID1cbiAgbGV0IGNvbGwgfmtleTprIH5kYXRhOnYgYWNjID0gYExpc3QgWyB5b2pzb25fb2Zfa2V5IGs7IHlvanNvbl9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBgTGlzdCAoSGFzaHRibC5mb2xkIGh0YmwgfmluaXQ6W10gfmY6Y29sbClcbjs7XG5cbmxldCB5b2pzb25fb2Zfb3BhcXVlIF8gPSBgU3RyaW5nIFwiPG9wYXF1ZT5cIlxubGV0IHlvanNvbl9vZl9mdW4gXyA9IGBTdHJpbmcgXCI8ZnVuPlwiXG5cbmV4Y2VwdGlvbiBPZl95b2pzb25fZXJyb3Igb2YgZXhuICogdFxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2ZfeW9qc29uX2Vycm9yX2V4biBleGMgeW9qc29uID0gcmFpc2UgKE9mX3lvanNvbl9lcnJvciAoZXhjLCB5b2pzb24pKVxubGV0IG9mX3lvanNvbl9lcnJvciB3aGF0IHlvanNvbiA9IHJhaXNlIChPZl95b2pzb25fZXJyb3IgKEZhaWx1cmUgd2hhdCwgeW9qc29uKSlcblxubGV0IHVuaXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYE51bGwgLT4gKClcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInVuaXRfb2ZfeW9qc29uOiBgTnVsbCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBib29sX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBCb29sIHYgLT4gdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYm9vbF9vZl95b2pzb246IHRydWUvZmFsc2UgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgc3RyaW5nX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwic3RyaW5nX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGJ5dGVzX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IEJ5dGVzLm9mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImJ5dGVzX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGNoYXJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA8PiAxXG4gICAgdGhlbiBvZl95b2pzb25fZXJyb3IgXCJjaGFyX29mX3lvanNvbjogc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiB5b2pzb247XG4gICAgc3RyLlswXVxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiY2hhcl9vZl95b2pzb246IHN0cmluZyBvZiBzaXplIG9uZSBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludCB2IC0+IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgZmxvYXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEZsb2F0IHYgLT4gdlxuICB8IGBJbnQgaSAtPiBmbG9hdF9vZl9pbnQgaVxuICB8IGBJbnRsaXQgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImZsb2F0X29mX3lvanNvbjogZmxvYXQgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50MzJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gSW50MzIub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBJbnQzMi5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50MzJfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludDY0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IEludDY0Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gSW50NjQub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludDY0X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBuYXRpdmVpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gTmF0aXZlaW50Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gTmF0aXZlaW50Lm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJuYXRpdmVpbnRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IHJlZl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9IHJlZiAoYV9fb2ZfeW9qc29uIHlvanNvbilcbmxldCBsYXp5X3Rfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPSBMYXp5LmZyb21fdmFsIChhX19vZl95b2pzb24geW9qc29uKVxuXG5sZXQgb3B0aW9uX29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwgZWwgLT4gU29tZSAoYV9fb2ZfeW9qc29uIGVsKVxuOztcblxubGV0IHBhaXJfb2ZfeW9qc29uIGFfX29mX3lvanNvbiBiX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbiBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl95b2pzb24gYV95b2pzb24gaW5cbiAgICBsZXQgYiA9IGJfX29mX3lvanNvbiBiX3lvanNvbiBpblxuICAgIGEsIGJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInBhaXJfb2ZfeW9qc29uOiBpbnZhbGlkIGZvcm1hdFwiIHlvanNvblxuOztcblxubGV0IHRyaXBsZV9vZl95b2pzb24gYV9fb2ZfeW9qc29uIGJfX29mX3lvanNvbiBjX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbjsgY195b2pzb24gXSAtPlxuICAgIGxldCBhID0gYV9fb2ZfeW9qc29uIGFfeW9qc29uIGluXG4gICAgbGV0IGIgPSBiX19vZl95b2pzb24gYl95b2pzb24gaW5cbiAgICBsZXQgYyA9IGNfX29mX3lvanNvbiBjX3lvanNvbiBpblxuICAgIGEsIGIsIGNcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInRyaXBsZV9vZl95b2pzb246IGludmFsaWQgZm9ybWF0XCIgeW9qc29uXG47O1xuXG5sZXQgbGlzdF9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgbHN0IC0+XG4gICAgbGV0IHJldl9sc3QgPSBMaXN0LnJldl9tYXAgbHN0IH5mOmFfX29mX3lvanNvbiBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImxpc3Rfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGFycmF5X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbXSAtPiBbfHxdXG4gIHwgYExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3lvanNvbiBoKSBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMuKGkpIDwtIGFfX29mX3lvanNvbiBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImFycmF5X29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBoYXNodGJsX29mX3lvanNvbiBrZXlfb2ZfeW9qc29uIHZhbF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgWyBrX3lvanNvbjsgdl95b2pzb24gXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl95b2pzb24ga195b2pzb24pIH5kYXRhOih2YWxfb2ZfeW9qc29uIHZfeW9qc29uKVxuICAgICAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImhhc2h0Ymxfb2ZfeW9qc29uOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHlvanNvblxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaGFzaHRibF9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgb3BhcXVlX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJvcGFxdWVfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgeW9qc29uXG47O1xuXG5sZXQgZnVuX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJmdW5fb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiB5b2pzb25cbjs7XG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGxldCB5b2pzb25fb2ZfYXJyYXkgPSB5b2pzb25fb2ZfYXJyYXlcbiAgbGV0IGFycmF5X29mX3lvanNvbiA9IGFycmF5X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Jvb2wgPSB5b2pzb25fb2ZfYm9vbFxuICBsZXQgYm9vbF9vZl95b2pzb24gPSBib29sX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2NoYXIgPSB5b2pzb25fb2ZfY2hhclxuICBsZXQgY2hhcl9vZl95b2pzb24gPSBjaGFyX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Zsb2F0ID0geW9qc29uX29mX2Zsb2F0XG4gIGxldCBmbG9hdF9vZl95b2pzb24gPSBmbG9hdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQgPSB5b2pzb25fb2ZfaW50XG4gIGxldCBpbnRfb2ZfeW9qc29uID0gaW50X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludDMyID0geW9qc29uX29mX2ludDMyXG4gIGxldCBpbnQzMl9vZl95b2pzb24gPSBpbnQzMl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQ2NCA9IHlvanNvbl9vZl9pbnQ2NFxuICBsZXQgaW50NjRfb2ZfeW9qc29uID0gaW50NjRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGlzdCA9IHlvanNvbl9vZl9saXN0XG4gIGxldCBsaXN0X29mX3lvanNvbiA9IGxpc3Rfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbmF0aXZlaW50ID0geW9qc29uX29mX25hdGl2ZWludFxuICBsZXQgbmF0aXZlaW50X29mX3lvanNvbiA9IG5hdGl2ZWludF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9vcHRpb24gPSB5b2pzb25fb2Zfb3B0aW9uXG4gIGxldCBvcHRpb25fb2ZfeW9qc29uID0gb3B0aW9uX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3JlZiA9IHlvanNvbl9vZl9yZWZcbiAgbGV0IHJlZl9vZl95b2pzb24gPSByZWZfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2Zfc3RyaW5nID0geW9qc29uX29mX3N0cmluZ1xuICBsZXQgc3RyaW5nX29mX3lvanNvbiA9IHN0cmluZ19vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9ieXRlcyA9IHlvanNvbl9vZl9ieXRlc1xuICBsZXQgYnl0ZXNfb2ZfeW9qc29uID0gYnl0ZXNfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfdW5pdCA9IHlvanNvbl9vZl91bml0XG4gIGxldCB1bml0X29mX3lvanNvbiA9IHVuaXRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGF6eV90ID0geW9qc29uX29mX2xhenlfdFxuICBsZXQgbGF6eV90X29mX3lvanNvbiA9IGxhenlfdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9oYXNodGJsID0geW9qc29uX29mX2hhc2h0YmxcbiAgbGV0IGhhc2h0Ymxfb2ZfeW9qc29uID0gaGFzaHRibF9vZl95b2pzb25cbmVuZFxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBZb2pzb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4hIFN0ZExhYmVsc1xub3BlbiBZb2pzb25fY29udlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAoc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBzdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIHRhZyB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiBzdW0gdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiIGxvYyB0YWdcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYSBuZXN0ZWQgbGlzdFwiKSB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHlvanNvblxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHJlY29yZHMgKilcblxubGV0IHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3lvanNvbjogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvblxuOztcblxubGV0IHJlY29yZF9leHRyYV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb25cbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHlvanNvbiBsc3QgPVxuICBsZXQgdW5kZWZpbmVkID0gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBbXSBsc3QgaW5cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBsb2MgeW9qc29uID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3lvanNvbjogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCB2YWx1ZXMgb2YgdHlwZXMgcmVzdWx0aW5nIGZyb20gcG9seW1vcnBoaWMgcmVjb3JkIFxcXG4gICAgICAgZmllbGRzXCJcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbmxldCBub192YXJpYW50X21hdGNoICgpID0gcmFpc2UgTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IG5vIG1hdGNoaW5nIHZhcmlhbnQgZm91bmRcIikgeW9qc29uXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGZcbiAgICAgIFwiJXNfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHB0YWdfdGFrZXNfYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnIHRha2VzIGFuIGFyZ3VtZW50XCIpIHlvanNvblxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvclxuICAgIChsb2MgXiBcIl9vZl95b2pzb246IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpXG4gICAgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3JcbiAgICAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIilcbiAgICB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSB5b2pzb25cbjs7XG4iLCJtb2R1bGUgWW9qc29uX2NvbnZfZXJyb3IgPSBZb2pzb25fY29udl9lcnJvclxubW9kdWxlIFlvanNvbl9jb252ID0gWW9qc29uX2NvbnZcbm1vZHVsZSBZb2pzb25hYmxlID0gWW9qc29uYWJsZV9pbnRmXG5tb2R1bGUgWW9qc29uID0gWW9qc29uXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgICB8IE5vbmVcbiAgICB8IFNvbWUgb2YgJ2FcbmVuZFxuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgcG9seV9lcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IGZ1biB4IC0+ICF4XG4iLCIjIDEgXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbnR5cGUgbm9ucmVjIGludCA9IGludFxudHlwZSBub25yZWMgY2hhciA9IGNoYXJcbnR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZ1xudHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdFxudHlwZSBub25yZWMgYm9vbCA9IGJvb2xcbnR5cGUgbm9ucmVjIHVuaXQgPSB1bml0XG50eXBlIG5vbnJlYyBleG4gPSBleG5cbnR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXlcbnR5cGUgbm9ucmVjICdhIGxpc3QgPSAnYSBsaXN0XG50eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb25cbnR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludFxudHlwZSBub25yZWMgaW50MzIgPSBpbnQzMlxudHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NFxudHlwZSBub25yZWMgJ2EgbGF6eV90ID0gJ2EgbGF6eV90XG50eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzXG5cbiMgMTggXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbigqIFdlIHJlcXVpcmUgNC4wOCB3aGlsZSA0LjA3IGFscmVhZHkgaGFzIGEgU3RkbGliIG1vZHVsZS5cbiAgIEluIDQuMDcsIHRoZSB0eXBlIGVxdWFsaXRpZXMgb24gU3RkbGliLlBlcnZhc2l2ZXNcbiAgIGFyZSBub3Qgc3Ryb25nIGVub3VnaCBmb3IgdGhlICdpbmNsdWRlIFN0ZGxpYidcbiAgIGJlbG93IHRvIHNhdGlzZnkgdGhlIHNpZ25hdHVyZSBjb25zdHJhaW50cyBvblxuICAgUHB4X2Rlcml2aW5nX3J1bnRpbWUuUGVydmFzaXZlcy4gKilcbm1vZHVsZSBTdGRsaWIgPSBTdGRsaWJcblxuaW5jbHVkZSBTdGRsaWJcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSByZXN1bHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IEVycm9yIG9mICdiXG5cbiAgdHlwZSAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBFcnJvciBvZiAnYlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhpcyBtb2R1bGUgb2ZmZXJzIGEgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBiYXNlZCBvbiBkaXNqb2ludCBzZXRcbiAgIGZvcmVzdHMsIHdpdGggcGF0aCBjb21wcmVzc2lvbiBhbmQgbGlua2luZyBieSByYW5rLiAqKVxuXG5vcGVuIFN0b3JlXG5cbm1vZHVsZSBNYWtlIChTIDogU1RPUkUpID0gc3RydWN0XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSByYW5rIG9mIGEgdmVydGV4IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCwgaW4gZWRnZXMsIG9mIGFuIHVuY29tcHJlc3NlZCBwYXRoXG4gICB0aGF0IGxlYWRzIHRvIHRoaXMgdmVydGV4LiBJbiBvdGhlciB3b3JkcywgdGhlIHJhbmsgb2YgW3hdIGlzIHRoZSBoZWlnaHQgb2ZcbiAgIHRoZSB0cmVlIHJvb3RlZCBhdCBbeF0gdGhhdCB3b3VsZCBleGlzdCBpZiB3ZSBkaWQgbm90IHBlcmZvcm0gcGF0aFxuICAgY29tcHJlc3Npb24uICopXG5cbnR5cGUgcmFuayA9XG4gIGludFxuXG4oKiBUaGUgY29udGVudCBvZiBhIHZlcnRleCBpcyBhIHBvaW50ZXIgdG8gYSBwYXJlbnQgdmVydGV4IChpZiB0aGUgdmVydGV4XG4gICBoYXMgYSBwYXJlbnQpIG9yIGEgcGFpciBvZiBhIHJhbmsgYW5kIGEgdXNlciB2YWx1ZSAoaWYgdGhlIHZlcnRleCBoYXMgbm9cbiAgIHBhcmVudCwgYW5kIGlzIHRodXMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBmb3IgdGhpcyBlcXVpdmFsZW5jZVxuICAgY2xhc3MpLiAqKVxuXG4oKiBJbiB0aGlzIHZlcnNpb24gdGhlIGNvZGUsIHRoZSB0eXBlIFsnYSBjb250ZW50XSBtdXN0IG5vdCBtdXRhYmxlLiBJbmRlZWQsXG4gICBldmVyeSBtdXRhdGlvbiBtdXN0IGJlIHBlcmZvcm1lZCB2aWEgW1Muc2V0XS4gKilcblxudHlwZSAnYSBjb250ZW50ID1cbnwgTGluayBvZiAnYSBycmVmXG58IFJvb3Qgb2YgcmFuayAqICdhXG5cbigqIFRoZSB0eXBlIFsnYSBycmVmXSByZXByZXNlbnRzIGEgdmVydGV4IGluIHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlLiAqKVxuXG5hbmQgJ2EgcnJlZiA9XG4gICdhIGNvbnRlbnQgUy5ycmVmXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSB0eXBlIG9mIHN0b3JlcywgYW5kIHRoZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBuZXcgc3RvcmUsIGFyZSB0aG9zZVxuICAgb2YgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gW1NdLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgJ2EgY29udGVudCBTLnN0b3JlXG5cbmxldCBuZXdfc3RvcmUgOiB1bml0IC0+ICdhIHN0b3JlID1cbiAgUy5uZXdfc3RvcmVcblxubGV0IGNvcHkgOiAnYSBzdG9yZSAtPiAnYSBzdG9yZSA9XG4gIFMuY29weVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWFrZSBzIHZdIGNyZWF0ZXMgYSBuZXcgcm9vdCBvZiByYW5rIHplcm8uICopXG5cbmxldCBtYWtlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIFMubWFrZSBzIChSb290ICgwLCB2KSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2ZpbmQgcyB4XSBmaW5kcyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBvZiBbeF0uXG4gICBJdCBkb2VzIGJ5IGZvbGxvd2luZyB0aGUgcGF0aCBmcm9tIFt4XSB0byB0aGUgcm9vdC4gUGF0aCBjb21wcmVzc2lvbiBpc1xuICAgcGVyZm9ybWVkIChvbiB0aGUgd2F5IGJhY2spIGJ5IG1ha2luZyBldmVyeSB2ZXJ0ZXggYWxvbmcgdGhlIHBhdGggYVxuICAgZGlyZWN0IGNoaWxkIG9mIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguIE5vIHJhbmsgaXMgYWx0ZXJlZC4gKilcblxubGV0IHJlYyBmaW5kIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCBfKSAtPlxuICAgICAgeFxuICB8IExpbmsgeSAtPlxuICAgICAgbGV0IHogPSBmaW5kIHMgeSBpblxuICAgICAgaWYgUy5lcSBzIHkgeiB0aGVuXG4gICAgICAgIHpcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGxpbmtfdG9feiA9IFMuZ2V0IHMgeSBpblxuICAgICAgICBTLnNldCBzIHggbGlua190b196O1xuICAgICAgICB6XG5cbmxldCBpc19yZXByZXNlbnRhdGl2ZSAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB0cnVlXG4gIHwgTGluayBfIC0+XG4gICAgICBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZXEgcyB4IHldIGRldGVybWluZXMgd2hldGhlciB0aGUgdmVydGljZXMgW3hdIGFuZCBbeV0gYmVsb25nIGluIHRoZSBzYW1lXG4gICBlcXVpdmFsZW5jZSBjbGFzcy4gSXQgZG9lcyBzbyB2aWEgdHdvIGNhbGxzIHRvIFtmaW5kXSBhbmQgYSBwaHlzaWNhbFxuICAgZXF1YWxpdHkgdGVzdC4gQXMgYSBmYXN0IHBhdGgsIHdlIGZpcnN0IHRlc3Qgd2hldGhlciBbeF0gYW5kIFt5XSBhcmVcbiAgIHBoeXNpY2FsbHkgZXF1YWwuICopXG5cbmxldCBlcSAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgUy5lcSBzIHggeSB8fCBTLmVxIHMgKGZpbmQgcyB4KSAoZmluZCBzIHkpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtnZXRfIHMgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IGdldF8gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgbGV0IHggPSBmaW5kIHMgeCBpblxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogW2dldCBzIHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbigqIEJ5IG5vdCBjYWxsaW5nIFtmaW5kXSBpbW1lZGlhdGVseSwgd2Ugb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGVcbiAgIHBhdGggb3V0IG9mIFt4XSBoYXMgbGVuZ3RoIDAgb3IgMSwgYXQgdGhlIGV4cGVuc2Ugb2YgdGhlIGdlbmVyYWwgY2FzZS5cbiAgIFRodXMsIHdlIGNhbGwgW2ZpbmRdIG9ubHkgaWYgcGF0aCBjb21wcmVzc2lvbiBtdXN0IGJlIHBlcmZvcm1lZC4gKilcblxubGV0IGdldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICB2XG4gIHwgTGluayB5IC0+XG4gICAgICBtYXRjaCBTLmdldCBzIHkgd2l0aFxuICAgICAgfCBSb290IChfLCB2KSAtPlxuICAgICAgICAgIHZcbiAgICAgIHwgTGluayBfIC0+XG4gICAgICAgICAgZ2V0XyBzIHhcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3NldF8gcyB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgc2V0XyAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCB4ID0gZmluZCBzIHggaW5cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChyLCBfKSAtPlxuICAgICAgUy5zZXQgcyB4IChSb290IChyLCB2KSlcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiBbc2V0IHMgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxuKCogQnkgbm90IGNhbGxpbmcgW2ZpbmRdIGltbWVkaWF0ZWx5LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoZVxuICAgcGF0aCBvdXQgb2YgW3hdIGhhcyBsZW5ndGggMCBvciAxLCBhdCB0aGUgZXhwZW5zZSBvZiB0aGUgZ2VuZXJhbCBjYXNlLlxuICAgVGh1cywgd2UgY2FsbCBbZmluZF0gb25seSBpZiBwYXRoIGNvbXByZXNzaW9uIG11c3QgYmUgcGVyZm9ybWVkLiAqKVxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChyLCBfKSAtPlxuICAgICAgUy5zZXQgcyB4IChSb290IChyLCB2KSlcbiAgfCBMaW5rIHkgLT5cbiAgICAgIG1hdGNoIFMuZ2V0IHMgeSB3aXRoXG4gICAgICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICAgICAgUy5zZXQgcyB5IChSb290IChyLCB2KSlcbiAgICAgIHwgTGluayBfIC0+XG4gICAgICAgICAgc2V0XyBzIHggdlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbdW5pb24gcyB4IHldIG1lcmdlcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlcyBvZiBbeF0gYW5kIFt5XSBieSBpbnN0YWxsaW5nIGFcbiAgIGxpbmsgZnJvbSBvbmUgcm9vdCB2ZXJ0ZXggdG8gdGhlIG90aGVyLiAqKVxuXG4oKiBMaW5raW5nIGlzIGJ5IHJhbms6IHRoZSBzbWFsbGVyLXJhbmtlZCB2ZXJ0ZXggaXMgbWFkZSB0byBwb2ludCB0byB0aGVcbiAgIGxhcmdlci4gSWYgdGhlIHR3byB2ZXJ0aWNlcyBoYXZlIHRoZSBzYW1lIHJhbmssIHRoZW4gYW4gYXJiaXRyYXJ5IGNob2ljZVxuICAgaXMgbWFkZSwgYW5kIHRoZSByYW5rIG9mIHRoZSBuZXcgcm9vdCBpcyBpbmNyZW1lbnRlZCBieSBvbmUuICopXG5cbmxldCB1bmlvbiAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbGV0IHggPSBmaW5kIHMgeFxuICBhbmQgeSA9IGZpbmQgcyB5IGluXG4gIGlmIFMuZXEgcyB4IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCBTLmdldCBzIHgsIFMuZ2V0IHMgeSB3aXRoXG4gICAgfCBSb290IChyeCwgdngpLCBSb290IChyeSwgXykgLT5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB4IChMaW5rIHkpOyB5XG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTsgeFxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBTLnNldCBzIHggKFJvb3QgKHJ4ICsgMSwgdngpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21lcmdlXSBpcyBhbmFsb2dvdXMgdG8gW3VuaW9uXSwgYnV0IGludm9rZXMgYSB1c2VyLXNwZWNpZmllZCBmdW5jdGlvbiBbZl1cbiAgIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBbdl0gYXNzb2NpYXRlZCB3aXRoIHRoZSBlcXVpdmFsZW5jZSBjbGFzcy4gKilcblxuKCogVGhlIGZ1bmN0aW9uIFtmXSBtdXN0IG5vdCBhZmZlY3QgdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYnkgbWFraW5nXG4gICByZS1lbnRyYW50IGNhbGxzIHRvIFtzZXRdLCBbdW5pb25dLCBvciBbbWVyZ2VdLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yXG4gICB0aGlzLiBGaXJzdCwgW2ZdIG1heSBiZSBpbnZva2VkIGF0IGEgdGltZSB3aGVuIHRoZSBpbnZhcmlhbnQgb2YgdGhlIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0ZW1wb3JhcmlseSB2aW9sYXRlZDogaW4gdGhlIHRoaXJkIGJyYW5jaCBiZWxvdywgdGhlIHJhbmsgb2ZcbiAgIFt4XSBoYXMgbm90IHlldCBiZWVuIGluY3JlYXNlZCB3aGVuIFtmXSBpcyBpbnZva2VkLiBTZWNvbmQsIG1vcmUgc2VyaW91c2x5LFxuICAgaWYgW2ZdIGNvdWxkIGNhbGwsIHNheSwgW3VuaW9uXSwgdGhlbiB0aGF0IGNvdWxkIGNoYW5nZSBhIFtSb290XSBpbnRvIGFcbiAgIFtMaW5rXSwgc28gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgY2hhbmdlIGEgW0xpbmtdXG4gICBiYWNrIGludG8gYSBbUm9vdF0sIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNlLiBBbHNvLCBpZiBbZl1cbiAgIGNvdWxkIGNhbGwgW3NldF0sIHRoZW4gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgdW5kb1xuICAgdGhlIGVmZmVjdCBvZiB0aGlzIFtzZXRdIG9wZXJhdGlvbjsgdGhpcyBhbHNvIGRvZXMgbm90IG1ha2Ugc2Vuc2UuICopXG5cbigqIFRoZSB0ZXN0cyBbaWYgdiAhPSB2eSB0aGVuIC4uLl0gYW5kIFtpZiB2ICE9IHZ4IHRoZW4gLi4uXSBhcmUgaW50ZW5kZWQgdG9cbiAgIHNhdmUgYW4gYWxsb2NhdGlvbiBhbmQgYSB3cml0ZSB3aGVuIHBvc3NpYmxlLiAqKVxuXG4oKiBXZSBpbnZva2UgW2ZdIGJlZm9yZSBwZXJmb3JtaW5nIGFueSB1cGRhdGUsIHNvIHRoYXQgaWYgW2ZdIGZhaWxzXG4gICAoYnkgcmFpc2luZyBhbiBleGNlcHRpb24pLCB0aGUgc3RhdGUgaXMgdW5hZmZlY3RlZC4gKilcblxubGV0IG1lcmdlIHMgKGYgOiAnYSAtPiAnYSAtPiAnYSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIGxldCB4ID0gZmluZCBzIHhcbiAgYW5kIHkgPSBmaW5kIHMgeSBpblxuICBpZiBTLmVxIHMgeCB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggUy5nZXQgcyB4LCBTLmdldCBzIHkgd2l0aFxuICAgIHwgUm9vdCAocngsIHZ4KSwgUm9vdCAocnksIHZ5KSAtPlxuICAgICAgICBsZXQgdiA9IGYgdnggdnkgaW5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB4IChMaW5rIHkpO1xuICAgICAgICAgIGlmIHYgIT0gdnkgdGhlbiBTLnNldCBzIHkgKFJvb3QgKHJ5LCB2KSk7XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIFMuc2V0IHMgeCAoUm9vdCAocngsIHYpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIFMuc2V0IHMgeCAoUm9vdCAocngrMSwgdikpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGlzIG1vZHVsZSBvZmZlcnMgYSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJhc2VkIG9uIGRpc2pvaW50IHNldFxuICAgZm9yZXN0cywgd2l0aCBwYXRoIGNvbXByZXNzaW9uIGFuZCBsaW5raW5nIGJ5IHJhbmsuICopXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSByYW5rIG9mIGEgdmVydGV4IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCwgaW4gZWRnZXMsIG9mIGFuIHVuY29tcHJlc3NlZCBwYXRoXG4gICB0aGF0IGxlYWRzIHRvIHRoaXMgdmVydGV4LiBJbiBvdGhlciB3b3JkcywgdGhlIHJhbmsgb2YgW3hdIGlzIHRoZSBoZWlnaHQgb2ZcbiAgIHRoZSB0cmVlIHJvb3RlZCBhdCBbeF0gdGhhdCB3b3VsZCBleGlzdCBpZiB3ZSBkaWQgbm90IHBlcmZvcm0gcGF0aFxuICAgY29tcHJlc3Npb24uICopXG5cbnR5cGUgcmFuayA9XG4gIGludFxuXG4oKiBUaGUgY29udGVudCBvZiBhIHZlcnRleCBpcyBhIHBvaW50ZXIgdG8gYSBwYXJlbnQgdmVydGV4IChpZiB0aGUgdmVydGV4XG4gICBoYXMgYSBwYXJlbnQpIG9yIGEgcGFpciBvZiBhIHJhbmsgYW5kIGEgdXNlciB2YWx1ZSAoaWYgdGhlIHZlcnRleCBoYXMgbm9cbiAgIHBhcmVudCwgYW5kIGlzIHRodXMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBmb3IgdGhpcyBlcXVpdmFsZW5jZVxuICAgY2xhc3MpLiAqKVxuXG4oKiBXZSBtYWtlIHRoZSB0eXBlIFsnYSBjb250ZW50XSBtdXRhYmxlLCBhbmQgd2UgbWFpbnRhaW4gdGhlIHByb3BlcnR5IHRoYXRcbiAgIGV2ZXJ5IHZlcnRleCB1bmlxdWVseSBvd25zIGl0cyBjb250ZW50LiBUaGlzIGFsbG93cyB1cyB0byB1cGRhdGUgYSBjb250ZW50XG4gICBpbiBwbGFjZSBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBuZXcgY29udGVudCBhbmQgdXBkYXRpbmcgdGhlIHZlcnRleCB3aXRoXG4gICB0aGlzIG5ldyBjb250ZW50LlxuXG4gICBXZSBvYnRhaW4gdGhlIHByb3BlcnR5IHRoYXQ6XG4gICAtIG9ubHkgW21ha2VdIGFsbG9jYXRlcyBhIG5ldyB2ZXJ0ZXggKGEgcmVmZXJlbmNlIGFuZCBhIFtSb290XSBjb250ZW50KTtcbiAgIC0gb25seSBbdW5pb25dIGFuZCBbbWVyZ2VdIGFsbG9jYXRlIGEgbmV3IGVkZ2UgKGEgW0xpbmtdIGNvbnRlbnQpLlxuICAgW2ZpbmRdLCBbZ2V0XSwgW3NldF0sIFtlcV0gYWxsb2NhdGUgbm8gbWVtb3J5LiAqKVxuXG50eXBlICdhIGNvbnRlbnQgPVxufCBMaW5rIG9mIHsgbXV0YWJsZSBwYXJlbnQgOiAnYSBlbGVtIH1cbnwgUm9vdCBvZiB7IG11dGFibGUgcmFuayA6IHJhbms7IG11dGFibGUgdmFsdWUgOiAnYSB9XG5cbigqIFRoZSB0eXBlIFsnYSBlbGVtXSByZXByZXNlbnRzIGEgdmVydGV4IGluIHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlLiAqKVxuXG5hbmQgJ2EgZWxlbSA9XG4gICdhIGNvbnRlbnQgcmVmXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttYWtlIHZdIGNyZWF0ZXMgYSBuZXcgcm9vdCBvZiByYW5rIHplcm8uICopXG5cbmxldCBtYWtlICh2IDogJ2EpIDogJ2EgZWxlbSA9XG4gIHJlZiAoUm9vdCB7IHJhbmsgPSAwOyB2YWx1ZSA9IHYgfSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2ZpbmQgeF0gZmluZHMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mgb2YgW3hdLlxuICAgSXQgZG9lcyBzbyBieSBmb2xsb3dpbmcgdGhlIHBhdGggZnJvbSBbeF0gdG8gdGhlIHJvb3QuIFBhdGggY29tcHJlc3Npb24gaXNcbiAgIHBlcmZvcm1lZCAob24gdGhlIHdheSBiYWNrKSBieSBtYWtpbmcgZXZlcnkgdmVydGV4IGFsb25nIHRoZSBwYXRoIGFcbiAgIGRpcmVjdCBjaGlsZCBvZiB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4LiBObyByYW5rIGlzIGFsdGVyZWQuICopXG5cbmxldCByZWMgZmluZCAoeCA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHhcbiAgfCBMaW5rICh7IHBhcmVudCA9IHkgfSBhcyBsaW5rKSAtPlxuICAgICAgbGV0IHogPSBmaW5kIHkgaW5cbiAgICAgIGlmIHogIT0geSB0aGVuXG4gICAgICAgIGxpbmsucGFyZW50IDwtIHo7XG4gICAgICB6XG5cbmxldCBpc19yZXByZXNlbnRhdGl2ZSAoeCA6ICdhIGVsZW0pIDogYm9vbCA9XG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHRydWVcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtlcSB4IHldIGRldGVybWluZXMgd2hldGhlciB0aGUgdmVydGljZXMgW3hdIGFuZCBbeV0gYmVsb25nIGluIHRoZVxuICAgc2FtZSBlcXVpdmFsZW5jZSBjbGFzcy4gSXQgZG9lcyBzbyB2aWEgdHdvIGNhbGxzIHRvIFtmaW5kXSBhbmQgYVxuICAgcGh5c2ljYWwgZXF1YWxpdHkgdGVzdC4gQXMgYSBmYXN0IHBhdGgsIHdlIGZpcnN0IHRlc3Qgd2hldGhlciBbeF1cbiAgIGFuZCBbeV0gYXJlIHBoeXNpY2FsbHkgZXF1YWwuICopXG5cbmxldCBlcSAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiBib29sID1cbiAgeCA9PSB5IHx8IGZpbmQgeCA9PSBmaW5kIHlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2dldCB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgZ2V0ICh4IDogJ2EgZWxlbSkgOiAnYSA9XG4gIGxldCB4ID0gZmluZCB4IGluXG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IHsgdmFsdWUgPSB2OyBfIH0gLT5cbiAgICAgIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbc2V0IHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBzZXQgKHggOiAnYSBlbGVtKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgeCA9IGZpbmQgeCBpblxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCByb290IC0+XG4gICAgICByb290LnZhbHVlIDwtIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbdW5pb24geCB5XSBtZXJnZXMgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXMgb2YgW3hdIGFuZCBbeV0gYnkgaW5zdGFsbGluZyBhXG4gICBsaW5rIGZyb20gb25lIHJvb3QgdmVydGV4IHRvIHRoZSBvdGhlci4gKilcblxuKCogTGlua2luZyBpcyBieSByYW5rOiB0aGUgc21hbGxlci1yYW5rZWQgdmVydGV4IGlzIG1hZGUgdG8gcG9pbnQgdG8gdGhlXG4gICBsYXJnZXIuIElmIHRoZSB0d28gdmVydGljZXMgaGF2ZSB0aGUgc2FtZSByYW5rLCB0aGVuIGFuIGFyYml0cmFyeSBjaG9pY2VcbiAgIGlzIG1hZGUsIGFuZCB0aGUgcmFuayBvZiB0aGUgbmV3IHJvb3QgaXMgaW5jcmVtZW50ZWQgYnkgb25lLiAqKVxuXG5sZXQgdW5pb24gKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIGxldCB4ID0gZmluZCB4XG4gIGFuZCB5ID0gZmluZCB5IGluXG4gIGlmIHggPT0geSB0aGVuIHggZWxzZVxuICAgIG1hdGNoICF4LCAheSB3aXRoXG4gICAgfCBSb290ICh7IHJhbmsgPSByeDsgXyB9IGFzIHJvb3R4KSwgUm9vdCB7IHJhbmsgPSByeTsgXyB9IC0+XG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHggOj0gTGluayB7IHBhcmVudCA9IHkgfTtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geH07XG4gICAgICAgICAgcm9vdHgucmFuayA8LSByeCArIDE7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttZXJnZV0gaXMgYW5hbG9nb3VzIHRvIFt1bmlvbl0sIGJ1dCBpbnZva2VzIGEgdXNlci1zcGVjaWZpZWQgZnVuY3Rpb24gW2ZdXG4gICB0byBjb21wdXRlIHRoZSBuZXcgdmFsdWUgW3ZdIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXF1aXZhbGVuY2UgY2xhc3MuICopXG5cbigqIFRoZSBmdW5jdGlvbiBbZl0gbXVzdCBub3QgYWZmZWN0IHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJ5IG1ha2luZ1xuICAgcmUtZW50cmFudCBjYWxscyB0byBbc2V0XSwgW3VuaW9uXSwgb3IgW21lcmdlXS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvclxuICAgdGhpcy4gRmlyc3QsIFtmXSBtYXkgYmUgaW52b2tlZCBhdCBhIHRpbWUgd2hlbiB0aGUgaW52YXJpYW50IG9mIHRoZSBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGVtcG9yYXJpbHkgdmlvbGF0ZWQ6IGluIHRoZSB0aGlyZCBicmFuY2ggYmVsb3csIHRoZSByYW5rIG9mXG4gICBbeF0gaGFzIG5vdCB5ZXQgYmVlbiBpbmNyZWFzZWQgd2hlbiBbZl0gaXMgaW52b2tlZC4gU2Vjb25kLCBtb3JlIHNlcmlvdXNseSxcbiAgIGlmIFtmXSBjb3VsZCBjYWxsLCBzYXksIFt1bmlvbl0sIHRoZW4gdGhhdCBjb3VsZCBjaGFuZ2UgYSBbUm9vdF0gaW50byBhXG4gICBbTGlua10sIHNvIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IGNoYW5nZSBhIFtMaW5rXVxuICAgYmFjayBpbnRvIGEgW1Jvb3RdLCBzb21ldGhpbmcgdGhhdCBkb2VzIG5vdCBtYWtlIGFueSBzZW5zZS4gQWxzbywgaWYgW2ZdXG4gICBjb3VsZCBjYWxsIFtzZXRdLCB0aGVuIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IHVuZG9cbiAgIHRoZSBlZmZlY3Qgb2YgdGhpcyBbc2V0XSBvcGVyYXRpb247IHRoaXMgYWxzbyBkb2VzIG5vdCBtYWtlIHNlbnNlLiAqKVxuXG4oKiBUaGUgdGVzdHMgW2lmIHYgIT0gdnkgdGhlbiAuLi5dIGFuZCBbaWYgdiAhPSB2eCB0aGVuIC4uLl0gYXJlIGludGVuZGVkIHRvXG4gICBzYXZlIGFuIGFsbG9jYXRpb24gYW5kIGEgd3JpdGUgd2hlbiBwb3NzaWJsZS4gKilcblxuKCogV2UgaW52b2tlIFtmXSBiZWZvcmUgcGVyZm9ybWluZyBhbnkgdXBkYXRlLCBzbyB0aGF0IGlmIFtmXSBmYWlsc1xuICAgKGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uKSwgdGhlIHN0YXRlIGlzIHVuYWZmZWN0ZWQuICopXG5cbmxldCBtZXJnZSAoZiA6ICdhIC0+ICdhIC0+ICdhKSAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbGV0IHggPSBmaW5kIHhcbiAgYW5kIHkgPSBmaW5kIHkgaW5cbiAgaWYgeCA9PSB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggIXgsICF5IHdpdGhcbiAgICB8IFJvb3QgKHsgcmFuayA9IHJ4OyB2YWx1ZSA9IHZ4IH0gYXMgcm9vdHgpLFxuICAgICAgUm9vdCAoeyByYW5rID0gcnk7IHZhbHVlID0gdnkgfSBhcyByb290eSkgLT5cbiAgICAgICAgbGV0IHYgPSBmIHZ4IHZ5IGluXG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHggOj0gTGluayB7IHBhcmVudCA9IHkgfTtcbiAgICAgICAgICBpZiB2ICE9IHZ5IHRoZW4gcm9vdHkudmFsdWUgPC0gdjtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gcm9vdHgudmFsdWUgPC0gdjtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIHJvb3R4LnJhbmsgPC0gcnggKyAxO1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiByb290eC52YWx1ZSA8LSB2O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIElOVE1BUCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdmFsIGVtcHR5OiAnYSB0XG4gIHZhbCBmaW5kOiBpbnQgLT4gJ2EgdCAtPiAnYVxuICB2YWwgYWRkOiBpbnQgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKEludE1hcCA6IElOVE1BUCkgPSBzdHJ1Y3RcblxuKCogQSBzdG9yZSBpcyBpbXBsZW1lbnRlZCBhcyBhIHBhaXIgb2YgYW4gaW50ZWdlciBhZGRyZXNzIGFuZCBhIG1hcCBvZlxuICAgaW50ZWdlciBhZGRyZXNzZXMgdG8gdmFsdWVzLiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlXG4gICBkb21haW4gb2YgdGhlIG1hcCBbY29udGVudF0gaXMgdGhlIHNlbWktb3BlbiBpbnRlcnZhbCBvZiB6ZXJvXG4gICAoaW5jbHVkZWQpIHVwIHRvIFtsaW1pdF0gKGV4Y2x1ZGVkKS4gKilcblxudHlwZSAnYSBzdG9yZSA9IHtcbiAgKCogVGhlIG5leHQgYXZhaWxhYmxlIGFkZHJlc3MuICopXG4gIG11dGFibGUgbGltaXQ6ICAgaW50O1xuICAoKiBUaGUgY29udGVudCBvZiB0aGUgc3RvcmUuICopXG4gIG11dGFibGUgY29udGVudDogJ2EgSW50TWFwLnRcbn1cblxubGV0IG5ld19zdG9yZSAoKSA9IHtcbiAgbGltaXQgPSAwO1xuICBjb250ZW50ID0gSW50TWFwLmVtcHR5XG59XG5cbigqIEJlY2F1c2UgYSBwZXJzaXN0ZW50IG1hcCBpcyB1c2VkLCBjb3B5aW5nIGEgc3RvcmUgYW1vdW50cyB0byBjb3B5aW5nXG4gICB0aGUgbXV0YWJsZSByZWNvcmQgYXQgdGhlIHJvb3QuICopXG5cbmxldCBjb3B5IHMgPVxuICB7IGxpbWl0ID0gcy5saW1pdDsgY29udGVudCA9IHMuY29udGVudCB9XG5cbigqIEEgcmVmZXJlbmNlIGlzIGp1c3QgYW4gaW50ZWdlciBhZGRyZXNzLiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICBpbnRcblxubGV0IG1ha2UgcyB2ID1cbiAgbGV0IHggPSBzLmxpbWl0IGluXG4gIHMubGltaXQgPC0geCArIDE7XG4gIHMuY29udGVudCA8LSBJbnRNYXAuYWRkIHggdiBzLmNvbnRlbnQ7XG4gIHhcblxuKCogW2NoZWNrIHMgeF0gY2hlY2tzIHRoYXQgdGhlIGFkZHJlc3MgW3hdIGlzIGluIHJhbmdlIGZvciB0aGUgc3RvcmUgW3NdLiBJZlxuICAgdGhpcyBkeW5hbWljIGNoZWNrIGZhaWxzLCB0aGVuIHRoZSB1c2VyIGlzIGNvbmZ1c2VkIGFuZCBoYXMgcGFzc2VkIHVzIGFuXG4gICBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuIChJZiB0aGUgY2hlY2sgc3VjY2VlZHMsXG4gICB0aGUgdXNlciBtYXkgYmUgY29uZnVzZWQgdG9vISBidXQgd2UgY2Fubm90IGRldGVjdCBpdC4pICopXG5cbmV4Y2VwdGlvbiBJbnZhbGlkUmVmXG5cbmxldCBjaGVjayAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpID1cbiAgKCogV2UgZG8gbm90IGNoZWNrIHRoYXQgW3hdIGlzIG5vbm5lZ2F0aXZlLiBBbiBvdmVyZmxvdyBjYW5ub3Qgb2NjdXIsXG4gICAgIHNpbmNlIHRoYXQgd291bGQgaW1wbHkgdGhhdCB3ZSBoYXZlIGZpbGxlZCB0aGUgbWVtb3J5IHdpdGggYSBodWdlXG4gICAgIGFycmF5LiAqKVxuICAgaWYgeCA+PSBzLmxpbWl0IHRoZW5cbiAgICAgcmFpc2UgSW52YWxpZFJlZlxuXG5sZXQgZ2V0IHMgeCA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBJbnRNYXAuZmluZCB4IHMuY29udGVudFxuXG5sZXQgc2V0IHMgeCB2ID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIHMuY29udGVudCA8LSBJbnRNYXAuYWRkIHggdiBzLmNvbnRlbnRcblxubGV0IGVxIHMgKHggOiBpbnQpICh5IDogaW50KSA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBjaGVjayBzIHk7XG4gIHggPSB5XG5cbmVuZFxuXG4oKiBJbmNsdWRlIHRoZSBtb3N0IGNvbW1vbiBpbnN0YW5jZSBvZiB0aGUgYWJvdmUgZnVuY3Rvci4gKilcblxuaW5jbHVkZSBNYWtlKE1hcC5NYWtlKHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGNvbXBhcmUgPSAoLSkgKCogb2sgc2luY2UgdGhlIGFyZ3VtZW50cyBhcmUgbm9ubmVnYXRpdmUgaW50ZWdlcnMgKilcbmVuZCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogV2hlbiBPQ2FtbCdzIGJ1aWx0LWluIHN0b3JlIGlzIHVzZWQsIG5vIGV4cGxpY2l0IHN0b3JlIGlzIG5lZWRlZC4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gIHVuaXRcblxubGV0IG5ld19zdG9yZSAoKSA9XG4gICgpXG5cbigqIENvcHlpbmcgaXMgbm90IHN1cHBvcnRlZC4gKilcblxubGV0IGNvcHkgX3MgPVxuICBhc3NlcnQgZmFsc2VcblxuKCogQSByZWZlcmVuY2UgaXMgYSBwcmltaXRpdmUgcmVmZXJlbmNlLiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICAnYSByZWZcblxubGV0IG1ha2UgKCkgdiA9XG4gIHJlZiB2XG5cbmxldCBnZXQgKCkgeCA9XG4gICF4XG5cbmxldCBzZXQgKCkgeCB2ID1cbiAgeCA6PSB2XG5cbmxldCBlcSAoKSB4IHkgPVxuICB4ID09IHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHJlZmVyZW5jZSBjZWxsIHJlY29yZHMgYm90aCBpdHMgY3VycmVudCAocG9zc2libHkgdW5jb21taXR0ZWQpIHZhbHVlIGFuZFxuICAgaXRzIGxhc3QgY29tbWl0dGVkIHZhbHVlLiBBIGNlbGwgaXMgY29uc2lkZXJlZCBzdGFibGUgd2hlbiB0aGVzZSB0d28gdmFsdWVzXG4gICBhcmUgKHBoeXNpY2FsbHkpIGVxdWFsLCBhbmQgdW5zdGFibGUgb3RoZXJ3aXNlLiAqKVxuXG4oKiBPbmUgY291bGQgcGVyaGFwcyBlbnJpY2ggZWFjaCBjZWxsIHdpdGggYSBwb2ludGVyIHRvIGl0cyBzdG9yZSwgc28gYXMgdG9cbiAgIGVuc3VyZSBhdCBydW50aW1lIHRoYXQgdGhlIHVzZXIgaXMgbm90IGNvbmZ1c2VkLiAqKVxuXG50eXBlICdhIHJyZWYgPSB7XG4gICgqIFRoZSBjdXJyZW50IChwb3NzaWJseSB1bmNvbW1pdHRlZCkgdmFsdWUuICopXG4gIG11dGFibGUgY3VycmVudDogJ2E7XG4gICgqIFRoZSBsYXN0IGNvbW1pdHRlZCB2YWx1ZS4gKilcbiAgbXV0YWJsZSBjb21taXR0ZWQ6ICdhXG59XG5cbigqIEEgdHJhbnNhY3Rpb24gY29udGFpbnMgYSBzdGFjayBvZiBhbGwgdW5zdGFibGUgY2VsbHMgKGFuZCBwb3NzaWJseSBzb21lXG4gICBzdGFibGUgY2VsbHMgdG9vLCBhbHRob3VnaCB0aGF0IGlzIHVubGlrZWx5KS4gKilcblxudHlwZSAnYSB0cmFuc2FjdGlvbiA9XG4gICdhIHJyZWYgU3RhY2sudFxuXG4oKiBBIHN0b3JlIGNvbnRhaW5zIGFuIG9wdGlvbmFsIHRyYW5zYWN0aW9uLiBUaGlzIGluZGljYXRlcyB3aGV0aGVyIGFcbiAgIHRyYW5zYWN0aW9uIGlzIGN1cnJlbnRseSBvbmdvaW5nLiBUcmFuc2FjdGlvbnMgY2Fubm90IGJlIG5lc3RlZC4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gIHsgbXV0YWJsZSB0cmFuc2FjdGlvbjogJ2EgdHJhbnNhY3Rpb24gb3B0aW9uIH1cblxubGV0IG5ld19zdG9yZSAoKSA6ICdhIHN0b3JlID1cbiAgeyB0cmFuc2FjdGlvbiA9IE5vbmUgfVxuXG4oKiBDb3B5aW5nIGlzIG5vdCBzdXBwb3J0ZWQuICopXG5cbmxldCBjb3B5IF9zID1cbiAgYXNzZXJ0IGZhbHNlXG5cbmxldCBtYWtlIChfcyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICB7IGN1cnJlbnQgPSB2OyBjb21taXR0ZWQgPSB2IH1cblxubGV0IGdldCAoX3MgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgeC5jdXJyZW50XG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICAoKiBJZiB0aGUgbmV3IHZhbHVlIGhhcHBlbnMgdG8gYmUgdGhlIGN1cnJlbnQgdmFsdWUsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8uICopXG4gIGxldCBjdXJyZW50ID0geC5jdXJyZW50IGluXG4gIGlmIHYgPT0gY3VycmVudCB0aGVuXG4gICAgKClcbiAgZWxzZSBiZWdpbiBtYXRjaCBzLnRyYW5zYWN0aW9uIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKiBPdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24sIHR3byBub3JtYWwgd3JpdGUgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkLlxuICAgICAgICAgVGhlIGNlbGwgcmVtYWlucyBzdGFibGUuIE5vdGhpbmcgaXMgbG9nZ2VkLiAqKVxuICAgICAgeC5jdXJyZW50IDwtIHY7XG4gICAgICB4LmNvbW1pdHRlZCA8LSB2XG4gIHwgU29tZSBzdGFjayAtPlxuICAgICAgKCogV2UgYXJlIHdpdGhpbiBhIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgKCogSWYgdGhpcyBjZWxsIHdhcyBzdGFibGUgYW5kIG5vdyBiZWNvbWVzIHVuc3RhYmxlLCB0aGVuIGl0IG11c3QgYmVcbiAgICAgICAgIGluc2VydGVkIGludG8gdGhlIHNldCBvZiB1bnN0YWJsZSBjZWxscywgd2hpY2ggaXMgcmVjb3JkZWQgYXMgcGFydFxuICAgICAgICAgb2YgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgaWYgY3VycmVudCA9PSB4LmNvbW1pdHRlZCB0aGVuXG4gICAgICAgIFN0YWNrLnB1c2ggeCBzdGFjaztcbiAgICAgICgqIFRoZSBjZWxsIG11c3QgdGhlbiBiZSB1cGRhdGVkLiBJZiBbdl0gaGFwcGVucyB0byBiZSBlcXVhbCB0b1xuICAgICAgICAgW2NvbW1pdHRlZF0sIHRoaXMgY291bGQgbWFrZSB0aGUgY2VsbCBzdGFibGUgYWdhaW4uIFdlIGRvIG5vdFxuICAgICAgICAgY2hlY2sgZm9yIHRoaXMgdW5saWtlbHkgc2l0dWF0aW9uLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNldCBvZlxuICAgICAgICAgdW5zdGFibGUgY2VsbHMgY291bGQgYWN0dWFsbHkgY29udGFpbiBzdGFibGUgY2VsbHMgdG9vLiAqKVxuICAgICAgeC5jdXJyZW50IDwtIHZcbiAgICBlbmRcblxubGV0IGVxIChfcyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgeCA9PSB5XG5cbmV4Y2VwdGlvbiBOZXN0ZWRUcmFuc2FjdGlvbkF0dGVtcHRcblxubGV0IGNvbW1pdCB4ID1cbiAgeC5jb21taXR0ZWQgPC0geC5jdXJyZW50XG5cbmxldCByb2xsYmFjayB4ID1cbiAgeC5jdXJyZW50IDwtIHguY29tbWl0dGVkXG5cbmxldCB0ZW50YXRpdmVseSAocyA6ICdhIHN0b3JlKSAoZiA6IHVuaXQgLT4gJ2IpIDogJ2IgPVxuICBtYXRjaCBzLnRyYW5zYWN0aW9uIHdpdGhcbiAgfCBTb21lIF8gLT5cbiAgICAgIHJhaXNlIE5lc3RlZFRyYW5zYWN0aW9uQXR0ZW1wdFxuICB8IE5vbmUgLT5cbiAgICAgIGxldCBzdGFjayA9IFN0YWNrLmNyZWF0ZSgpIGluXG4gICAgICBzLnRyYW5zYWN0aW9uIDwtIFNvbWUgc3RhY2s7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGIgPSBmKCkgaW5cbiAgICAgICAgKCogQ29tbWl0IGV2ZXJ5IHVuc3RhYmxlIGNlbGwuICopXG4gICAgICAgIFN0YWNrLml0ZXIgY29tbWl0IHN0YWNrO1xuICAgICAgICAoKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICAgIHMudHJhbnNhY3Rpb24gPC0gTm9uZTtcbiAgICAgICAgKCogUmVwb3J0IHRoZSBvdXRjb21lLiAqKVxuICAgICAgICBiXG4gICAgICB3aXRoIGUgLT5cbiAgICAgICAgbGV0IGIgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSgpIGluXG4gICAgICAgICgqIFJvbGwgYmFjayBldmVyeSB1bnN0YWJsZSBjZWxsLiAqKVxuICAgICAgICBTdGFjay5pdGVyIHJvbGxiYWNrIHN0YWNrO1xuICAgICAgICAoKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICAgIHMudHJhbnNhY3Rpb24gPC0gTm9uZTtcbiAgICAgICAgKCogUmVwb3J0IHRoZSBvdXRjb21lLiAqKVxuICAgICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHN0b3JlIGlzIGltcGxlbWVudGVkIGFzIGFuIGV4dGVuc2libGUgYXJyYXksIHRoYXQgaXMsIGEgcGFpciBvZiBhblxuICAgaW50ZWdlciBhZGRyZXNzIGFuZCBhbiBhcnJheS4gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZSBsZW5ndGggb2ZcbiAgIHRoZSBhcnJheSBpcyBhdCBsZWFzdCBbbGltaXRdLiBUaGUgYXJlYSBvZiB0aGUgYXJyYXkgYXQgaW5kZXggW2xpbWl0XSBhbmRcbiAgIGJleW9uZCBpcyBjb25zaWRlcmVkIHVuaW5pdGlhbGl6ZWQuICopXG5cbigqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGlzIGFyZWEgaXMgZmlsbGVkIHdpdGggYXJiaXRyYXJ5IHZhbHVlKHMpXG4gICBwcm92aWRlZCBieSB0aGUgdXNlciBpbiBjYWxscyB0byBbbWFrZV0gb3IgW3NldF0uIFRoaXMgaXMgbm90IGlkZWFsLCBhcyBpdFxuICAgY2FuIGNhdXNlIGEgbWVtb3J5IGxlYWsuICopXG5cbnR5cGUgJ2Egc3RvcmUgPSB7XG4gICgqIFRoZSBsb2dpY2FsIHNpemUgb2YgdGhlIGFycmF5OyBhbHNvLCB0aGUgbmV4dCBhdmFpbGFibGUgYWRkcmVzcy4gKilcbiAgbXV0YWJsZSBsaW1pdDogICBpbnQ7XG4gICgqIFRoZSBhcnJheSwgd2hvc2UgbGVuZ3RoIGlzIGF0IGxlYXN0IFtsaW1pdF0uICopXG4gIG11dGFibGUgY29udGVudDogJ2EgYXJyYXlcbn1cblxuKCogVGhlIGFycmF5IGlzIGNyZWF0ZWQgd2l0aCBhIHNpemUgYW5kIGxlbmd0aCBvZiB6ZXJvLiBXZSBoYXZlIG5vIG90aGVyXG4gICBjaG9pY2UsIHNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgdmFsdWUgb2YgdHlwZSBbJ2FdIGF0IGhhbmQuICopXG5cbmxldCBuZXdfc3RvcmUgKCkgOiAnYSBzdG9yZSA9IHtcbiAgbGltaXQgPSAwO1xuICBjb250ZW50ID0gW3x8XVxufVxuXG4oKiBDb3B5aW5nIGlzIHN1cHBvcnRlZCwgYnV0IGlzIG5vdCBjaGVhcC4gVXNlIGF0IHlvdXIgb3duIHJpc2suICopXG5cbmxldCBjb3B5IChzIDogJ2Egc3RvcmUpIDogJ2Egc3RvcmUgPVxuICB7IGxpbWl0ID0gcy5saW1pdDsgY29udGVudCA9IEFycmF5LmNvcHkgcy5jb250ZW50IH1cblxuKCogQSByZWZlcmVuY2UgaXMgYW4gaW5kZXggaW50byB0aGUgYXJyYXkuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gIGludFxuXG4oKiBUaGUgYXJyYXkganVtcHMgZnJvbSBsZW5ndGggemVybyB0byBsZW5ndGggW2RlZmF1bHRfaW5pdGlhbF9sZW5ndGhdIGFzIHNvb25cbiAgIGFzIGEgY2FsbCB0byBbbWFrZV0gaXMgbWFkZS4gKilcblxubGV0IGRlZmF1bHRfaW5pdGlhbF9sZW5ndGggPVxuICAyNTZcblxuKCogW2VubGFyZ2UgcyB2XSBpbmNyZWFzZXMgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgKGlmIG5lY2Vzc2FyeSkgc28gYXMgdG9cbiAgIGVuc3VyZSB0aGF0IFtzLmxpbWl0XSBiZWNvbWVzIGEgdmFsaWQgaW5kZXguIFRoZSBhcmd1bWVudCBbdl0gaXMgdXNlZCBhcyBhXG4gICBkZWZhdWx0IHZhbHVlIHRvIGZpbGwgdGhlIHVuaW5pdGlhbGl6ZWQgYXJlYS4gKilcblxubGV0IGVubGFyZ2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IGNvbnRlbnQgPSBzLmNvbnRlbnQgaW5cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb250ZW50IGluXG4gIGlmIHMubGltaXQgPSBsZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBsZW5ndGgnID1cbiAgICAgIGlmIGxlbmd0aCA9IDAgdGhlblxuICAgICAgICBkZWZhdWx0X2luaXRpYWxfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIDIgKiBsZW5ndGhcbiAgICBpblxuICAgIGFzc2VydCAocy5saW1pdCA8IGxlbmd0aCcpO1xuICAgIGxldCBjb250ZW50JyA9IEFycmF5Lm1ha2UgbGVuZ3RoJyB2IGluXG4gICAgQXJyYXkuYmxpdCBjb250ZW50IDAgY29udGVudCcgMCBsZW5ndGg7XG4gICAgcy5jb250ZW50IDwtIGNvbnRlbnQnXG4gIGVuZFxuXG4oKiBOb3RlIHRoYXQgd2UgY2Fubm90IHVzZSBbQXJyYXkudW5zYWZlX3NldF0gYW5kIFtBcnJheS51bnNhZmVfZ2V0XSB3aXRob3V0XG4gICBhbnkgcHJlY2F1dGlvbnMsIHNpbmNlIHRoZSBPQ2FtbCB0eXBlLWNoZWNrZXIgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHRoZVxuICAgaW5kaWNlcyBhcmUgaW4gcmFuZ2UuIEEgY29uZnVzZWQgdXNlciBjb3VsZCBwYXNzIHJlZmVyZW5jZXMgaW50byBzb21lXG4gICBvdGhlciBzdG9yZS4gV2UgY2hvb3NlIHRvIGV4cGxpY2l0bHkgY2hlY2sgdGhhdCB0aGUgaW5kZXggaXMgd2l0aGluIHRoZVxuICAgbG9naWNhbCBib3VuZHMgb2YgdGhlIGFycmF5IC0tIHRoaXMgaXMgYSBtb3JlIHByZWNpc2UgY2hlY2suICopXG5cbmV4Y2VwdGlvbiBJbnZhbGlkUmVmXG5cbmxldCBjaGVjayAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogdW5pdCA9XG4gICgqIFdlIGRvIG5vdCBjaGVjayB0aGF0IFt4XSBpcyBub25uZWdhdGl2ZS4gQW4gb3ZlcmZsb3cgY2Fubm90IG9jY3VyLFxuICAgICBzaW5jZSB0aGF0IHdvdWxkIGltcGx5IHRoYXQgd2UgaGF2ZSBmaWxsZWQgdGhlIG1lbW9yeSB3aXRoIGEgaHVnZVxuICAgICBhcnJheS4gKilcbiAgaWYgeCA+PSBzLmxpbWl0IHRoZW5cbiAgICByYWlzZSBJbnZhbGlkUmVmXG5cbmxldCBtYWtlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIGVubGFyZ2UgcyB2O1xuICBsZXQgeCA9IHMubGltaXQgaW5cbiAgcy5saW1pdCA8LSB4ICsgMTtcbiAgQXJyYXkudW5zYWZlX3NldCBzLmNvbnRlbnQgeCB2O1xuICB4XG5cbmxldCBnZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgY2hlY2sgcyB4O1xuICBBcnJheS51bnNhZmVfZ2V0IHMuY29udGVudCB4XG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBjaGVjayBzIHg7XG4gIEFycmF5LnVuc2FmZV9zZXQgcy5jb250ZW50IHggdlxuXG5sZXQgZXEgIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICBjaGVjayBzIHg7XG4gIGNoZWNrIHMgeTtcbiAgeCA9IHlcbiIsImxldCBuYnNwID0gXCJcXHhDMlxceEEwXCI7IC8vIFVURi04IGVuY29kaW5nIGZvciBVKzAwQTAgXCJOby1icmVhayBzcGFjZVwiXG5cbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwiLy8gTWFwcyBrZXllZCBieSBhbiBlbmQgcG9zaXRpb25cbi8vIEludmFyaWVudDoga2V5cyBhcmUgYXNjZW5kaW5nIGFuZCB1bmlxdWVcbnR5cGUga2V5ID0gaW50O1xudHlwZSB0KCdhKSA9IGxpc3QoKGtleSwgJ2EpKTtcbmxldCBlbXB0eTogJ2EuIHQoJ2EpID0gW107XG5sZXQgc2luZ2xldG9uOiAnYS4gKGtleSwgJ2EpID0+IHQoJ2EpID0gKHBvcywgeCkgPT4gWyhwb3MsIHgpXTtcbmxldCByZWMgdW5pb246ICdhLiAoKCdhLCAnYSkgPT4gJ2EsIHQoJ2EpLCB0KCdhKSkgPT4gdCgnYSkgPVxuICAoZiwgdDEsIHQyKSA9PlxuICAgIHN3aXRjaCAodDEsIHQyKSB7XG4gICAgfCAoW10sIHRfb3RoZXIpID0+IHRfb3RoZXJcbiAgICB8ICh0X290aGVyLCBbXSkgPT4gdF9vdGhlclxuICAgIHwgKFsocDEsIHgxKSwgLi4ueHMxXSwgWyhwMiwgeDIpLCAuLi54czJdKSA9PlxuICAgICAgaWYgKHAxIDwgcDIpIHtcbiAgICAgICAgWyhwMSwgeDEpLCAuLi51bmlvbihmLCB4czEsIFsocDIsIHgyKSwgLi4ueHMyXSldO1xuICAgICAgfSBlbHNlIGlmIChwMSA+IHAyKSB7XG4gICAgICAgIFsocDIsIHgyKSwgLi4udW5pb24oZiwgWyhwMSwgeDEpLCAuLi54czFdLCB4czIpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFsocDEsIGYoeDEsIHgyKSksIC4uLnVuaW9uKGYsIHhzMSwgeHMyKV07XG4gICAgICB9XG4gICAgfTtcbmxldCByZWMgbWFwOiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZih4KSksIC4uLm1hcChmLCByZXN0KV07XG5sZXQgcmVjIG1hcGk6ICdhICdiLiAoKGtleSwgJ2EpID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZihwb3MsIHgpKSwgLi4ubWFwaShmLCByZXN0KV07XG5sZXQgcmVjIG1hcGs6ICdhICdiLiAoKGtleSwgJ2EpID0+IChrZXksICdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gW2YocG9zLCB4KSwgLi4ubWFwayhmLCByZXN0KV07XG5sZXQgcmVjIGZvbGRfbGVmdDogJ2EgJ2IuICgoa2V5LCAnYiwgJ2EpID0+ICdiLCAnYiwgdCgnYSkpID0+ICdiID1cbiAgKGYsIHopID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiB6XG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IGZvbGRfbGVmdChmLCBmKHBvcywgeiwgeCksIHJlc3QpO1xuIiwib3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSB7XG4gIHJvdzogaW50LFxuICBjb2w6IGludCxcbn07XG5cbmxldCBjb21wYXJlID0gKHBvczEsIHBvczIpID0+XG4gIGlmIChwb3MxLnJvdyA8IHBvczIucm93KSB7XG4gICAgKC0xKTtcbiAgfSBlbHNlIGlmIChwb3MxLnJvdyA+IHBvczIucm93KSB7XG4gICAgMTtcbiAgfSBlbHNlIHtcbiAgICBJbnQuY29tcGFyZShwb3MxLmNvbCwgcG9zMi5jb2wpO1xuICB9O1xuXG5sZXQgemVybyA9IHtyb3c6IDAsIGNvbDogMH07XG4iLCJvcGVuIFV0aWw7XG5cbi8vIFRPRE86IHJlbmFtZSBBbm5vdCB0byBBbm4/XG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIEludmFyaWFudDogY29udGFpbnMgbm8gbmV3bGluZXMuIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBBc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7IC8vIEFubm90YXRpb25zXG5cbmxldCBhbGlnbiA9IChsOiB0KCdhbm5vdCkpID0+IEFsaWduKGwpO1xubGV0IGFubm90ID0gKGFubm90OiAnYW5ub3QsIGw6IHQoJ2Fubm90KSkgPT4gQW5ub3QoYW5ub3QsIGwpO1xuXG5sZXQgcmVjIHJlbW92ZV9hbm5vdHMgPSAobGF5b3V0OiB0KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICBzd2l0Y2ggKGxheW91dCkge1xuICB8IEFubm90KF8sIGwpID0+IHJlbW92ZV9hbm5vdHMobClcbiAgfCBUZXh0KHN0cmluZykgPT4gVGV4dChzdHJpbmcpXG4gIHwgQ2F0KGwxLCBsMikgPT4gQ2F0KHJlbW92ZV9hbm5vdHMobDEpLCByZW1vdmVfYW5ub3RzKGwyKSlcbiAgfCBMaW5lYnJlYWsgPT4gTGluZWJyZWFrXG4gIHwgQWxpZ24obCkgPT4gQWxpZ24ocmVtb3ZlX2Fubm90cyhsKSlcbiAgfTtcbn07XG5cbi8vIFRPRE8/XG4vL2xldCB0ZXh0ID0gKHN0cmluZykgPT4gdF9vZl9sYXlvdXQoVGV4dChzdHJpbmcpKTtcbi8vbGV0IGNhdCA9ICh0MSwgdDIpID0+IHRfb2ZfbGF5b3V0KENhdCh0MSwgdDIpKTtcbi8vbGV0IGxpbmVicmVhayA9IHRfb2ZfbGF5b3V0KGxpbmVicmVhayk7XG5cbi8vIFRPRE86IG1vdmUgdG8gb3duIG1vZHVsZVxudHlwZSB0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpID0ge1xuICAvLyBUT0RPOiByZW5hbWUgYGltcGBcbiAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+ICdpbXAsXG4gIGltcF9hcHBlbmQ6ICgnaW1wLCAnaW1wKSA9PiAnaW1wLFxuICBpbXBfbmV3bGluZTogaW50ID0+ICdpbXAsXG4gIGltcF9vZl9hbm5vdDogKCdhbm5vdCwgJ2ltcCkgPT4gJ2ltcCxcbiAgdF9vZl9pbXA6ICdpbXAgPT4gJ3QsXG59O1xuXG5sZXQgbWtfb2ZfbGF5b3V0OiAodGV4dCgnYW5ub3QsICdpbXAsICd0KSwgdCgnYW5ub3QpKSA9PiAndCA9XG4gICh0ZXh0LCBsYXlvdXQpID0+IHtcbiAgICBsZXQgY29sdW1uOiByZWYoaW50KSA9IHJlZigwKTtcbiAgICBsZXQgcmVjIGdvOiAoaW50LCB0KCdhbm5vdCkpID0+ICdpbXAgPVxuICAgICAgKGluZGVudCwgbGF5b3V0KSA9PiB7XG4gICAgICAgIHN3aXRjaCAobGF5b3V0KSB7XG4gICAgICAgIHwgVGV4dChzdHJpbmcpID0+XG4gICAgICAgICAgY29sdW1uIDo9IGNvbHVtbl4gKyBVbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgICAgIHRleHQuaW1wX29mX3N0cmluZyhzdHJpbmcpO1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IGltcDEgPSBnbyhpbmRlbnQsIGwxKTtcbiAgICAgICAgICBsZXQgaW1wMiA9IGdvKGluZGVudCwgbDIpO1xuICAgICAgICAgIHRleHQuaW1wX2FwcGVuZChpbXAxLCBpbXAyKTtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICAvLyBUT0RPOiBubyBpbmRlbnQgaWYgb24gZmluYWwgbGluZSBicmVha1xuICAgICAgICAgIGNvbHVtbiA6PSBpbmRlbnQ7XG4gICAgICAgICAgdGV4dC5pbXBfbmV3bGluZShpbmRlbnQpO1xuICAgICAgICB8IEFsaWduKGwpID0+IGdvKGNvbHVtbl4sIGwpXG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+IHRleHQuaW1wX29mX2Fubm90KGFubm90LCBnbyhpbmRlbnQsIGwpKVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB0ZXh0LnRfb2ZfaW1wKGdvKDAsIGxheW91dCkpO1xuICB9O1xuXG5sZXQgc3RyaW5nX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gc3RyaW5nID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOiAnYW5ub3QuIHRleHQoJ2Fubm90LCBzdHJpbmcsIHN0cmluZykgPSB7XG4gICAgICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gc3RyaW5nLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4gczEgKysgczIsXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFwiXFxuXCIgKysgU3RyaW5nLm1ha2UoaW5kZW50LCAnICcpLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogaW1wID0+IGltcCxcbiAgICB9O1xuICAgIG1rX29mX2xheW91dChyZWNvcmQsIGxheW91dCk7XG4gIH07XG5cbmxldCBzdHJpbmdzX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gbGlzdCgoaW50LCBzdHJpbmcpKSA9XG4gIGxheW91dCA9PiB7XG4gICAgbGV0IHJlY29yZDpcbiAgICAgICdhbm5vdC5cbiAgICAgIHRleHQoJ2Fubm90LCBsaXN0KChpbnQsIHN0cmluZykpLCBsaXN0KChpbnQsIHN0cmluZykpKVxuICAgICA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBbKDAsIHN0cmluZyldLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4ge1xuICAgICAgICBzd2l0Y2ggKExpc3QucmV2KHMxKSwgczIpIHtcbiAgICAgICAgfCAoW10sIF8pID0+IHMyXG4gICAgICAgIHwgKF8sIFtdKSA9PiBzMVxuICAgICAgICB8IChcbiAgICAgICAgICAgIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSksIC4uLnJlc3QxXSxcbiAgICAgICAgICAgIFsoZmlyc3RfaW5kZW50XzIsIGZpcnN0X3N0cmluZ18yKSwgLi4ucmVzdDJdLFxuICAgICAgICAgICkgPT5cbiAgICAgICAgICBhc3NlcnQoZmlyc3RfaW5kZW50XzIgPT0gMCk7XG4gICAgICAgICAgTGlzdC5yZXYocmVzdDEpXG4gICAgICAgICAgQCBbKGxhc3RfaW5kZW50XzEsIGxhc3Rfc3RyaW5nXzEgKysgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml07XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgaW1wX25ld2xpbmU6IGluZGVudCA9PiBbKGluZGVudCwgXCJcIildLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogcyA9PiBzLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcbiIsImxldCBzcGxpdF9maXJzdCA9ICh4czogbGlzdCgnYSkpOiAoJ2EsIGxpc3QoJ2EpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgW2ZpcnN0LCAuLi50cmFpbGluZ10gPT4gKGZpcnN0LCB0cmFpbGluZylcbiAgfTtcblxubGV0IHNwbGl0X2xhc3Rfb3B0ID0gKHhzOiBsaXN0KCdhKSk6IG9wdGlvbigobGlzdCgnYSksICdhKSkgPT5cbiAgc3dpdGNoIChMaXN0LnJldih4cykpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3ksIC4uLnlzXSA9PiBTb21lKChMaXN0LnJldih5cyksIHkpKVxuICB9O1xubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ2EpKTogKGxpc3QoJ2EpLCAnYSkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IGZhaWx3aXRoKFwiZW1wdHkgbGlzdFwiKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xuIiwib3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIGJveCA9IHtcbiAgaGVpZ2h0OiBpbnQsXG4gIHdpZHRoOiBpbnQsXG59O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbGF5b3V0OiB0JygnYW5ub3QpLFxuICBtZXRyaWNzOiBsaXN0KGJveCksXG59XG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgTGluZWJyZWFrXG4gIHwgVGV4dChzdHJpbmcpXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbnR5cGUgd2l0aF9vZmZzZXQoJ2Fubm90KSA9IChpbnQsIHQoJ2Fubm90KSk7XG5cbmxldCBoZWlnaHQgPSAobTogdChfKSkgPT5cbiAgbS5tZXRyaWNzIHw+IExpc3QubWFwKGJveCA9PiBib3guaGVpZ2h0KSB8PiBMaXN0LmZvbGRfbGVmdCgoKyksIDApO1xuXG5sZXQgd2lkdGggPSAofm9mZnNldD0wLCBtOiB0KF8pKSA9PlxuICBMaXN0LnRsKG0ubWV0cmljcylcbiAgfD4gTGlzdC5tYXAoYm94ID0+IGJveC53aWR0aClcbiAgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCBvZmZzZXQgKyBMaXN0LmhkKG0ubWV0cmljcykud2lkdGgpO1xuXG5sZXQgZm9sZCA9XG4gICAgKFxuICAgICAgfmxpbmVicmVhazogJ2FjYyxcbiAgICAgIH50ZXh0OiBzdHJpbmcgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogJ2FjYyA9PiAnYWNjLFxuICAgICAgfmNhdDogKCdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBhbGxvdyBjbGllbnQgdG8gY29udHJvbCByZWN1cnNpb24gYmFzZWQgb24gYW5ub3RhdGlvblxuICAgICAgICAgKHQoJ2Fubm90KSA9PiAnYWNjLCAnYW5ub3QsIHQoJ2Fubm90KSkgPT4gJ2FjYyxcbiAgICAgIG06IHQoJ2Fubm90KSxcbiAgICApXG4gICAgOiAnYWNjID0+IHtcbiAgbGV0IHJlYyBnbyA9IChtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWtcbiAgICB8IFRleHQocykgPT4gdGV4dChzKVxuICAgIHwgQWxpZ24obSkgPT4gYWxpZ24oZ28obSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IGFjYzEgPSBnbyhtMSk7XG4gICAgICBsZXQgYWNjMiA9IGdvKG0yKTtcbiAgICAgIGNhdChhY2MxLCBhY2MyKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QoZ28sIGFubiwgbSlcbiAgICB9O1xuICBnbyhtKTtcbn07XG5cbmxldCBuZXh0X3Bvc2l0aW9uID1cbiAgICAofmluZGVudDogaW50LCB7cm93LCBjb2x9OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpXG4gICAgOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4ge1xuICBsZXQgdXBkYXRlZF9yb3cgPSByb3cgKyBoZWlnaHQobSkgLSAxO1xuICBsZXQgdXBkYXRlZF9jb2wgPSB7XG4gICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QobS5tZXRyaWNzKTtcbiAgICBsYXN0LndpZHRoXG4gICAgKyAoXG4gICAgICBzd2l0Y2ggKGxlYWRpbmcpIHtcbiAgICAgIHwgW10gPT4gY29sXG4gICAgICB8IFtfLCAuLi5fXSA9PiBpbmRlbnRcbiAgICAgIH1cbiAgICApO1xuICB9O1xuICB7cm93OiB1cGRhdGVkX3JvdywgY29sOiB1cGRhdGVkX2NvbH07XG59O1xuXG5sZXQgcG9zX2ZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6IE1lYXN1cmVkUG9zaXRpb24udCA9PiAnYWNjLFxuICAgICAgfnRleHQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsIHN0cmluZykgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogKE1lYXN1cmVkUG9zaXRpb24udCwgJ2FjYykgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBsZXQgY2xpZW50IGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgIChcbiAgICAgICAgICAgfmdvOiB0KCdhbm5vdCkgPT4gJ2FjYyxcbiAgICAgICAgICAgfmluZGVudDogaW50LFxuICAgICAgICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCxcbiAgICAgICAgICAgJ2Fubm90LFxuICAgICAgICAgICB0KCdhbm5vdClcbiAgICAgICAgICkgPT5cbiAgICAgICAgICdhY2MsXG4gICAgICB+aW5kZW50PTAsXG4gICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udD1NZWFzdXJlZFBvc2l0aW9uLnplcm8sXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAoaW5kZW50OiBpbnQsIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpID0+XG4gICAgc3dpdGNoIChtLmxheW91dCkge1xuICAgIHwgTGluZWJyZWFrID0+IGxpbmVicmVhayhzdGFydClcbiAgICB8IFRleHQocykgPT4gdGV4dChzdGFydCwgcylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKHN0YXJ0LCBnbyhzdGFydC5jb2wsIHN0YXJ0LCBtKSlcbiAgICB8IENhdChtMSwgbTIpID0+XG4gICAgICBsZXQgbWlkID0gbmV4dF9wb3NpdGlvbih+aW5kZW50LCBzdGFydCwgbTEpO1xuICAgICAgY2F0KHN0YXJ0LCBnbyhpbmRlbnQsIHN0YXJ0LCBtMSksIGdvKGluZGVudCwgbWlkLCBtMikpO1xuICAgIHwgQW5ub3QoYW5uLCBtKSA9PiBhbm5vdCh+Z289Z28oaW5kZW50LCBzdGFydCksIH5pbmRlbnQsIH5zdGFydCwgYW5uLCBtKVxuICAgIH07XG4gIGdvKGluZGVudCwgc3RhcnQsIG0pO1xufTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBtayA9IChsOiBMYXlvdXQudCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgfCBTb21lKG0pID0+IE9iai5tYWdpYyhtKVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IG0gPVxuICAgICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICBsZXQgYm94ID0ge2hlaWdodDogMSwgd2lkdGg6IDB9O1xuICAgICAgICAgIHttZXRyaWNzOiBbYm94LCBib3hdLCBsYXlvdXQ6IExpbmVicmVha307XG4gICAgICAgIHwgVGV4dChzKSA9PiB7XG4gICAgICAgICAgICBtZXRyaWNzOiBbe2hlaWdodDogMSwgd2lkdGg6IFVuaWNvZGUubGVuZ3RoKHMpfV0sXG4gICAgICAgICAgICBsYXlvdXQ6IFRleHQocyksXG4gICAgICAgICAgfVxuICAgICAgICB8IEFsaWduKGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICBsZXQgYm91bmRpbmdfYm94ID1cbiAgICAgICAgICAgIG0ubWV0cmljc1xuICAgICAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICh7aGVpZ2h0OiBiaCwgd2lkdGg6IGJ3fSwge2hlaWdodCwgd2lkdGh9KSA9PlxuICAgICAgICAgICAgICAgICAgIHtoZWlnaHQ6IGJoICsgaGVpZ2h0LCB3aWR0aDogbWF4KGJ3LCB3aWR0aCl9LFxuICAgICAgICAgICAgICAgICB7aGVpZ2h0OiAwLCB3aWR0aDogMH0sXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgIHttZXRyaWNzOiBbYm91bmRpbmdfYm94XSwgbGF5b3V0OiBBbGlnbihtKX07XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgbTEgPSBtayhsMSk7XG4gICAgICAgICAgbGV0IG0yID0gbWsobDIpO1xuICAgICAgICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0xLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KG0yLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCBtaWRfYm94ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiBtYXgobGFzdC5oZWlnaHQsIGZpcnN0LmhlaWdodCksXG4gICAgICAgICAgICB3aWR0aDogbGFzdC53aWR0aCArIGZpcnN0LndpZHRoLFxuICAgICAgICAgIH07XG4gICAgICAgICAge21ldHJpY3M6IGxlYWRpbmcgQCBbbWlkX2JveCwgLi4udHJhaWxpbmddLCBsYXlvdXQ6IENhdChtMSwgbTIpfTtcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT5cbiAgICAgICAgICBsZXQgbSA9IG1rKGwpO1xuICAgICAgICAgIHsuLi5tLCBsYXlvdXQ6IEFubm90KGFubm90LCBtKX07XG4gICAgICAgIH07XG4gICAgICBNZW1vVGJsLnNldCh0YWJsZSwgT2JqLm1hZ2ljKGwpLCBPYmoubWFnaWMobSkpO1xuICAgICAgbTtcbiAgICB9O1xuICB9O1xufTtcbiIsInR5cGUgdCA9IHtcbiAgLy8gU3VtIG9mIHRoZSBzcXVhcmUgb2YgaG93IG11Y2ggZWFjaCBsaW5lIGV4dGVuZHMgYmV5b25kIG1heCB3aWR0aC4gIFVzdWFsbHkgemVyby5cbiAgb3ZlcmZsb3dfY29zdDogaW50LFxuICAvLyBIZWlnaHQgbWludXMgb25lLiAgQS5rLmEuIG51bWJlciBvZiBsaW5lIGJyZWFrcy5cbiAgaGVpZ2h0X2Nvc3Q6IGludCxcbn07XG5cbmxldCBtayA9ICh+b3ZlcmZsb3dfY29zdDogaW50LCB+aGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4ge1xuICBvdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdCxcbn07XG5cbmxldCBta19oZWlnaHQgPSAoaGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4gbWsofm92ZXJmbG93X2Nvc3Q9MCwgfmhlaWdodF9jb3N0KTtcblxubGV0IG1rX292ZXJmbG93ID0gKG92ZXJmbG93X2Nvc3Q6IGludCk6IHQgPT5cbiAgbWsofm92ZXJmbG93X2Nvc3QsIH5oZWlnaHRfY29zdD0wKTtcblxubGV0IHplcm86IHQgPSB7b3ZlcmZsb3dfY29zdDogMCwgaGVpZ2h0X2Nvc3Q6IDB9O1xuXG5sZXQgaW5mOiB0ID0ge292ZXJmbG93X2Nvc3Q6IG1heF9pbnQsIGhlaWdodF9jb3N0OiBtYXhfaW50fTtcblxubGV0IGFkZCA9IChjMTogdCwgYzI6IHQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdDogYzEub3ZlcmZsb3dfY29zdCArIGMyLm92ZXJmbG93X2Nvc3QsXG4gIGhlaWdodF9jb3N0OiBjMS5oZWlnaHRfY29zdCArIGMyLmhlaWdodF9jb3N0LFxufTtcblxubGV0IGVxID0gKGMxOiB0LCBjMjogdCk6IGJvb2wgPT5cbiAgYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCAmJiBjMS5oZWlnaHRfY29zdCA9PT0gYzIuaGVpZ2h0X2Nvc3Q7XG5cbmxldCBsdCA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPCBjMi5oZWlnaHRfY29zdDtcbiAgfSBlbHNlIHtcbiAgICBjMS5vdmVyZmxvd19jb3N0IDwgYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcblxubGV0IGxlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPD0gYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8PSBjMi5vdmVyZmxvd19jb3N0O1xuICB9O1xuIiwib3BlbiBVdGlsO1xuXG5tb2R1bGUgV2lkdGhQb3NLZXkgPSB7XG4gIHR5cGUgdCA9IChpbnQsIGludCk7XG4gIGxldCBoYXNoID0gKCh3aWR0aCwgcG9zKSkgPT4gMjU2ICogMjU2ICogd2lkdGggKyBwb3M7XG4gIGxldCBlcXVhbCA9ICgodzEsIHAxKSwgKHcyLCBwMikpID0+IHcxID09IHcyICYmIHAxID09IHAyO1xufTtcblxubW9kdWxlIE0gPSBIYXNodGJsLk1ha2UoV2lkdGhQb3NLZXkpO1xuXG4vLyBOT1RFOiBwb3MgaXMgcmVsYXRpdmUgdG8gbW9zdCByZWNlbnQgYEFsaWduYFxudHlwZSBtJygnYSkgPSBQb3NNYXAudCgoQ29zdC50LCAnYSkpO1xudHlwZSBtKCdhKSA9ICh+d2lkdGg6IGludCwgfnBvczogaW50KSA9PiBtJygnYSk7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID0ge1xuICBtZW06IFtAc2V4cC5vcGFxdWVdIE0udChtJyhMYXlvdXQudCgnYW5ub3QpKSksXG4gIGRvYzogdCcoJ2Fubm90KSxcbn1cbltAZGVyaXZpbmcgc2V4cF1cbmFuZCB0JygnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZykgLy8gVGV4dChcIlwiKSBpcyBpZGVudGl0eSBmb3IgYENhdGBcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpIC8vIGFzc29jaWF0aXZlXG4gIHwgTGluZWJyZWFrXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKSAvLyBBbm5vdGF0aW9uc1xuICB8IEZhaWwgLy8gaWRlbnRpdHkgZm9yIGBDaG9pY2VgXG4gIHwgQ2hvaWNlKHQoJ2Fubm90KSwgdCgnYW5ub3QpKTtcblxubGV0IHRfb2ZfdCcgPSAodCc6IHQnKCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge21lbTogTS5jcmVhdGUoMCksIGRvYzogdCd9O1xuXG5sZXQgdGV4dCA9IChzOiBzdHJpbmcpID0+IHRfb2ZfdCcoVGV4dChzKSk7XG5sZXQgbGluZWJyZWFrID0gKCkgPT4gdF9vZl90JyhMaW5lYnJlYWspO1xubGV0IGFsaWduID0gZG9jID0+IHRfb2ZfdCcoQWxpZ24oZG9jKSk7XG5sZXQgYW5ub3QgPSAoYW5ub3QsIGRvYykgPT4gdF9vZl90JyhBbm5vdChhbm5vdCwgZG9jKSk7XG5sZXQgZmFpbCA9ICgpID0+IHRfb2ZfdCcoRmFpbCk7XG5cbmxldCBlbXB0eSA9ICgpID0+IHRleHQoXCJcIik7XG5sZXQgc3BhY2UgPSAoKSA9PiB0ZXh0KFVuaWNvZGUubmJzcCk7IC8vIFRPRE86IHBhcmFtIHRvIGhzZXBcblxubGV0IGluZGVudCA9ICgpID0+IHRleHQoVW5pY29kZS5uYnNwICsrIFVuaWNvZGUubmJzcCk7XG5sZXQgaW5kZW50X2FuZF9hbGlnbiA9IGRvYyA9PiB0X29mX3QnKENhdChpbmRlbnQoKSwgYWxpZ24oZG9jKSkpO1xuXG5sZXQgaGNhdCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB5KSk7XG5sZXQgaGNhdHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBlbXB0eSgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoaGNhdCwgZG9jLCBkb2NzKTtcblxubGV0IGhzZXAgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgdF9vZl90JyhDYXQoc3BhY2UoKSwgeSkpKSk7XG5sZXQgaHNlcHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBlbXB0eSgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoaHNlcCwgZG9jLCBkb2NzKTtcblxubGV0IHZzZXAgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgdF9vZl90JyhDYXQobGluZWJyZWFrKCksIHkpKSkpO1xubGV0IHZzZXBzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZmFpbHdpdGgoX19MT0NfXyArKyBcIjogdnNlcHMgcmVxdWlyZXMgYSBub24tZW1wdHkgbGlzdFwiKVxuICB8IFtkb2NdID0+IGRvY1xuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KHZzZXAsIGRvYywgZG9jcyk7XG5cbmxldCBjaG9pY2UgPSAoeCwgeSkgPT4gdF9vZl90JyhDaG9pY2UoeCwgeSkpO1xubGV0IGNob2ljZXM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBmYWlsKClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChjaG9pY2UsIGRvYywgZG9jcyk7XG5cbmxldCBtYXBfdCc6ICdhICdiLiAodCcoJ2EpID0+IHQnKCdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgKGYsIGQpID0+IHRfb2ZfdCcoZihkLmRvYykpO1xuXG5sZXQgcmVjIG1hcF9hbm5vdDogJ2EgJ2IuICgnYSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgKGYsIGQpID0+XG4gICAgZFxuICAgIHw+IG1hcF90JyhcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCAoVGV4dChfKSB8IExpbmVicmVhayB8IEZhaWwpIGFzIGQnID0+IGQnXG4gICAgICAgICB8IEFubm90KGFubm90LCBkKSA9PiBBbm5vdChmKGFubm90KSwgbWFwX2Fubm90KGYsIGQpKVxuICAgICAgICAgfCBBbGlnbihkKSA9PiBBbGlnbihtYXBfYW5ub3QoZiwgZCkpXG4gICAgICAgICB8IENhdChkMSwgZDIpID0+IENhdChtYXBfYW5ub3QoZiwgZDEpLCBtYXBfYW5ub3QoZiwgZDIpKVxuICAgICAgICAgfCBDaG9pY2UoZDEsIGQyKSA9PiBDaG9pY2UobWFwX2Fubm90KGYsIGQxKSwgbWFwX2Fubm90KGYsIGQyKSksXG4gICAgICAgKTtcbiIsIi8vIFRPRE86IGNvbXB1dGUgYWN0dWFsIGxheW91dCBzaXplIGFuZCB1c2UgaW5zdGVhZCBvZiB0X29mX2xheW91dFxubGV0IHJlYyBhbGw6ICdhbm5vdC4gRG9jLnQoJ2Fubm90KSA9PiBsaXN0KExheW91dC50KCdhbm5vdCkpID0ge1xuICBkb2MgPT4ge1xuICAgIHN3aXRjaCAoZG9jLmRvYykge1xuICAgIHwgVGV4dChzdHJpbmcpID0+IFtMYXlvdXQuVGV4dChzdHJpbmcpXVxuICAgIHwgQ2F0KGQxLCBkMikgPT5cbiAgICAgIGxldCBsczEgPSBhbGwoZDEpO1xuICAgICAgbGV0IGxzMiA9IGFsbChkMik7XG4gICAgICBMaXN0LmNvbmNhdChcbiAgICAgICAgTGlzdC5tYXAobDEgPT4gTGlzdC5tYXAobDIgPT4gTGF5b3V0LkNhdChsMSwgbDIpLCBsczIpLCBsczEpLFxuICAgICAgKTtcbiAgICB8IExpbmVicmVhayA9PiBbTGF5b3V0LkxpbmVicmVha11cbiAgICB8IEFsaWduKGQpID0+IExpc3QubWFwKGwgPT4gTGF5b3V0LkFsaWduKGwpLCBhbGwoZCkpXG4gICAgfCBBbm5vdChhbm5vdCwgZCkgPT4gTGlzdC5tYXAobCA9PiBMYXlvdXQuQW5ub3QoYW5ub3QsIGwpLCBhbGwoZCkpXG4gICAgfCBGYWlsID0+IFtdXG4gICAgfCBDaG9pY2UoZDEsIGQyKSA9PiBhbGwoZDEpIEAgYWxsKGQyKVxuICAgIH07XG4gIH07XG59O1xuXG4vLyBOb3RlOiBUaGlzIHVuaW9uIGlzIGxlZnQgYmlhc2VkXG5sZXQgbSdfdW5pb246ICdhLiAoRG9jLm0nKCdhKSwgRG9jLm0nKCdhKSkgPT4gRG9jLm0nKCdhKSA9XG4gIChwMSwgcDIpID0+IHtcbiAgICBsZXQgY29zdF91bmlvbiA9ICgoY29zdDE6IENvc3QudCwgXykgYXMgdDEsIChjb3N0MjogQ29zdC50LCBfKSBhcyB0MikgPT5cbiAgICAgIGlmIChDb3N0LmxlcShjb3N0MSwgY29zdDIpKSB7XG4gICAgICAgIHQxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdDI7XG4gICAgICB9O1xuICAgIFBvc01hcC51bmlvbihjb3N0X3VuaW9uLCBwMSwgcDIpO1xuICB9O1xuXG5sZXQgcmVjIGxheW91dF9vZl9kb2MnID0gKGRvYzogRG9jLnQodW5pdCkpOiBEb2MubShMYXlvdXQudCh1bml0KSkgPT4ge1xuICBsZXQgZyA9ICh+d2lkdGg6IGludCwgfnBvczogaW50KTogRG9jLm0nKExheW91dC50KHVuaXQpKSA9PiB7XG4gICAgLy8gVE9ETzogbGlmdCB0aGUgc3dpdGNoKGRvYy5kb2MpIG91dHNpZGUgdGhlIGxhbWJkYVxuICAgIHN3aXRjaCAoZG9jLmRvYykge1xuICAgIHwgVGV4dChzdHJpbmcpID0+XG4gICAgICAvLyBUT0RPOiBjYWNoZSB0ZXh0IGxlbmd0aCBpbiBUZXh0P1xuICAgICAgbGV0IHBvcycgPSBwb3MgKyBTdHJpbmcubGVuZ3RoKHN0cmluZyk7IC8vVW5pY29kZS5sZW5ndGgoc3RyaW5nKTtcbiAgICAgIGxldCBjb3N0ID1cbiAgICAgICAgaWYgKHBvcycgPD0gd2lkdGgpIHtcbiAgICAgICAgICBDb3N0Lnplcm87XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IG92ZXJmbG93ID0gcG9zJyAtIHdpZHRoO1xuICAgICAgICAgIC8vIG92ZXJmbG93X2Nvc3QgPSBzdW0gaSBmcm9tIDEgdG8gb3ZlcmZsb3dcbiAgICAgICAgICBsZXQgb3ZlcmZsb3dfY29zdCA9IG92ZXJmbG93ICogKG92ZXJmbG93ICsgMSkgLyAyO1xuICAgICAgICAgIENvc3QubWtfb3ZlcmZsb3cob3ZlcmZsb3dfY29zdCk7XG4gICAgICAgIH07XG4gICAgICBQb3NNYXAuc2luZ2xldG9uKHBvcycsIChjb3N0LCBMYXlvdXQuVGV4dChzdHJpbmcpKSk7XG4gICAgfCBDYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0IGwxID0gbGF5b3V0X29mX2RvYycoZDEsIH53aWR0aCwgfnBvcyk7XG4gICAgICBQb3NNYXAuZm9sZF9sZWZ0KFxuICAgICAgICAocG9zLCB6LCAoY29zdDEsIGxheW91dDEpKSA9PiB7XG4gICAgICAgICAgbGV0IGwyID0gbGF5b3V0X29mX2RvYycoZDIsIH53aWR0aCwgfnBvcyk7XG4gICAgICAgICAgbGV0IGxheW91dHMgPVxuICAgICAgICAgICAgUG9zTWFwLm1hcChcbiAgICAgICAgICAgICAgKChjb3N0MiwgbGF5b3V0MikpID0+XG4gICAgICAgICAgICAgICAgKENvc3QuYWRkKGNvc3QxLCBjb3N0MiksIExheW91dC5DYXQobGF5b3V0MSwgbGF5b3V0MikpLFxuICAgICAgICAgICAgICBsMixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgbSdfdW5pb24oeiwgbGF5b3V0cyk7XG4gICAgICAgIH0sXG4gICAgICAgIFBvc01hcC5lbXB0eSxcbiAgICAgICAgbDEsXG4gICAgICApO1xuICAgIHwgTGluZWJyZWFrID0+XG4gICAgICBQb3NNYXAuc2luZ2xldG9uKDAsIChDb3N0Lm1rX2hlaWdodCgxKSwgTGF5b3V0LkxpbmVicmVhaykpXG4gICAgfCBBbGlnbihkKSA9PlxuICAgICAgbGV0IGxheW91dCA9IGxheW91dF9vZl9kb2MnKGQsIH53aWR0aD13aWR0aCAtIHBvcywgfnBvcz0wKTtcbiAgICAgIFBvc01hcC5tYXBrKFxuICAgICAgICAocCwgKGMsIGwpKSA9PiAocCArIHBvcywgKGMsIExheW91dC5BbGlnbihsKSkpLFxuICAgICAgICBsYXlvdXQsXG4gICAgICApO1xuICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+XG4gICAgICBsZXQgbGF5b3V0ID0gbGF5b3V0X29mX2RvYycoZCwgfndpZHRoLCB+cG9zKTtcbiAgICAgIFBvc01hcC5tYXAoKChjLCBsKSkgPT4gKGMsIExheW91dC5Bbm5vdChhbm5vdCwgbCkpLCBsYXlvdXQpO1xuICAgIHwgRmFpbCA9PiBQb3NNYXAuZW1wdHlcbiAgICB8IENob2ljZShkMSwgZDIpID0+XG4gICAgICBsZXQgbDEgPSBsYXlvdXRfb2ZfZG9jJyhkMSwgfndpZHRoLCB+cG9zKTtcbiAgICAgIGxldCBsMiA9IGxheW91dF9vZl9kb2MnKGQyLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgbSdfdW5pb24obDEsIGwyKTtcbiAgICB9O1xuICB9O1xuICBsZXQgaCA9ICh+d2lkdGg6IGludCwgfnBvczogaW50KTogRG9jLm0nKExheW91dC50KHVuaXQpKSA9PiB7XG4gICAgbGV0IGtleSA9ICh3aWR0aCwgcG9zKTtcbiAgICBzd2l0Y2ggKERvYy5NLmZpbmRfb3B0KGRvYy5tZW0sIGtleSkpIHtcbiAgICB8IFNvbWUodmFsdWUpID0+IHZhbHVlXG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgdmFsdWUgPSBnKH53aWR0aCwgfnBvcyk7XG4gICAgICBEb2MuTS5hZGQoZG9jLm1lbSwga2V5LCB2YWx1ZSk7XG4gICAgICB2YWx1ZTtcbiAgICB9O1xuICB9O1xuICBoO1xufTtcblxubGV0IGxheW91dF9vZl9kb2MgPVxuICAgIChkb2M6IERvYy50KCdhbm5vdCksIH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBvcHRpb24oTGF5b3V0LnQoJ2Fubm90KSkgPT4ge1xuICBsZXQgcmVjIG1pbmltdW0gPVxuICAgICAgICAgICgocG9zLCAoY29zdCwgdCkpOiAoaW50LCAoQ29zdC50LCBvcHRpb24oJ2EpKSkpXG4gICAgICAgICAgOiAobGlzdCgoaW50LCAoQ29zdC50LCAnYSkpKSA9PiBvcHRpb24oJ2EpKSA9PiB7XG4gICAgZnVuXG4gICAgfCBbXSA9PiB0XG4gICAgfCBbKHhfcG9zLCAoeF9jb3N0LCB4KSksIC4uLnJlc3RdID0+XG4gICAgICAvLyBQcmVmZXIgbG93ZXN0IGNvc3QsIG9yIGlmIHNhbWUgY29zdCwgcHJlZmVyIGVuZGluZyBhdCBhbiBlYXJsaWVyIGNvbHVtblxuICAgICAgLy8gKENvbHVtbnMgYXJlIHVuaXF1ZSBieSBjb25zdHJ1Y3Rpb24gb2YgUG9zTWFwLilcbiAgICAgIGlmIChDb3N0Lmx0KHhfY29zdCwgY29zdCkgfHwgQ29zdC5lcSh4X2Nvc3QsIGNvc3QpICYmIHhfcG9zIDwgcG9zKSB7XG4gICAgICAgIG1pbmltdW0oKHhfcG9zLCAoeF9jb3N0LCBTb21lKHgpKSksIHJlc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWluaW11bSgocG9zLCAoY29zdCwgdCkpLCByZXN0KTtcbiAgICAgIH07XG4gIH07XG4gIC8vIFRPRE86IHVzZSBvcHRpb25zIGluc3RlYWQgb2YgbWF4X2ludFxuICAvLyBsZXQgc3RhcnRfdGltZSA9IFN5cy50aW1lKCk7XG4gIGxldCBsID1cbiAgICBtaW5pbXVtKFxuICAgICAgKG1heF9pbnQsIChDb3N0LmluZiwgTm9uZSkpLFxuICAgICAgT2JqLm1hZ2ljKGxheW91dF9vZl9kb2MnKE9iai5tYWdpYyhkb2MpLCB+d2lkdGgsIH5wb3MpKSxcbiAgICApO1xuICAvLyBsZXQgZW5kX3RpbWUgPSBTeXMudGltZSgpO1xuICAvKlxuICAgUHJpbnRmLnByaW50ZihcbiAgICAgXCJsYXlvdXRfb2ZfZG9jOiAlZCBcXHQlZlxcblwiLFxuICAgICAtMSwgLy9mc3QoTGF6eS5mb3JjZShtZW1vX3RhYmxlKSkjIy5zaXplLFxuICAgICAvL01lbW9pemUuV2Vha1BvbHkuVGFibGUubGVuZ3RoKGZzdChMYXp5LmZvcmNlKG1lbW9fdGFibGUpKSksXG4gICAgIDEwMDAuMCAqLiAoZW5kX3RpbWUgLS4gc3RhcnRfdGltZSksXG4gICApO1xuICAgKi9cbiAgbDtcbn07XG4iLCJvcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZylcbiAgfCBIQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBWQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgaGVpZ2h0X3RibDogTWVtb1RibC50KHQodW5pdCksIGludCkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgaGVpZ2h0ID0gKGJveDogdCgnYW5ub3QpKSA9PlxuICAgIHN3aXRjaCAoTWVtb1RibC5nZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCkpKSB7XG4gICAgfCBTb21lKGgpID0+IGhcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBoID1cbiAgICAgICAgc3dpdGNoIChib3gpIHtcbiAgICAgICAgfCBUZXh0KF8pID0+IDFcbiAgICAgICAgfCBBbm5vdChfLCBiKSA9PiBoZWlnaHQoYilcbiAgICAgICAgfCBIQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgMSkgLy8gTm90ZTogMSBpcyBIQm94KFtdKSBoZWlnaHRcbiAgICAgICAgfCBWQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KCgrKSwgMClcbiAgICAgICAgfTtcbiAgICAgIE1lbW9UYmwuc2V0KGhlaWdodF90YmwsIE9iai5tYWdpYyhib3gpLCBoKTtcbiAgICAgIGg7XG4gICAgfTtcblxuICAvLyBOb3RlOiBhbm5vdHMgYXJlIGluc2lkZS1vdXQgKGkuZS4gTGlzdC5oZChhbm5vdHMpIGlzIHRoZSBpbm5lci1tb3N0IGFubm90KVxuICBsZXQgcmVjIGFubm90ID0gKGFubm90czogbGlzdCgnYW5ub3QpLCBib3g6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChhbm5vdHMpIHtcbiAgICB8IFtdID0+IGJveFxuICAgIHwgW2FubiwgLi4uYW5uc10gPT4gYW5ub3QoYW5ucywgQW5ub3QoYW5uLCBib3gpKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBhcHBlbmRfYm94ID1cbiAgICAgICAgICAofmFubm90czogbGlzdCgnYW5ub3QpPVtdLCBib3gxOiB0KCdhbm5vdCksIGJveDI6IHQoJ2Fubm90KSlcbiAgICAgICAgICA6IHQoJ2Fubm90KSA9PlxuICAgIGlmIChoZWlnaHQoYm94MSkgPD0gMSkge1xuICAgICAgSEJveChbYW5ub3QoYW5ub3RzLCBib3gxKSwgYm94Ml0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVjIGFwcGVuZF9sYXN0ID0gKGJzMTogbGlzdCh0KCdhbm5vdCkpKTogbGlzdCh0KCdhbm5vdCkpID0+IHtcbiAgICAgICAgc3dpdGNoIChiczEpIHtcbiAgICAgICAgfCBbXSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgICB8IFtiMV0gPT4gW2FwcGVuZF9ib3gofmFubm90cywgYjEsIGJveDIpXVxuICAgICAgICB8IFtiMSwgLi4uYnMxXSA9PiBbYW5ub3QoYW5ub3RzLCBiMSksIC4uLmFwcGVuZF9sYXN0KGJzMSldXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgc3dpdGNoIChib3gxKSB7XG4gICAgICB8IFRleHQoXykgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlIGR1ZSB0byBgYm94X2hlaWdodGAgZ3VhcmRcIilcbiAgICAgIHwgSEJveChiczEpID0+IEhCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgVkJveChiczEpID0+IFZCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgQW5ub3QoYW5ub3QsIGIpID0+IGFwcGVuZF9ib3gofmFubm90cz1bYW5ub3QsIC4uLmFubm90c10sIGIsIGJveDIpXG4gICAgICB9O1xuICAgIH07XG5cbiAgbGV0IGFwcGVuZF9oYm94ID0gKGJveGVzMTogbGlzdCh0KCdhbm5vdCkpLCBib3hlczI6IGxpc3QodCgnYW5ub3QpKSkgPT4ge1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoYm94ZXMxKSkge1xuICAgIHwgTm9uZSA9PiBib3hlczJcbiAgICB8IFNvbWUoKGxlYWRpbmcsIGxhc3QpKSA9PiBsZWFkaW5nIEAgW2FwcGVuZF9ib3gobGFzdCwgSEJveChib3hlczIpKV1cbiAgICB9O1xuICB9O1xuXG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IG1rID0gKGw6IExheW91dC50KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICAgIGxldCBtayA9IChib3hlczogbGlzdChsaXN0KHQoXykpKSkgPT5cbiAgICAgIFZCb3goTGlzdC5tYXAocm93ID0+IEhCb3gocm93KSwgYm94ZXMpKTtcbiAgICBsZXQgcmVjIGdvID0gKGw6IExheW91dC50KF8pKSA9PiB7XG4gICAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgICB8IFNvbWUoYm94KSA9PiBPYmoubWFnaWMoYm94KVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIGxldCBib3ggPVxuICAgICAgICAgIHN3aXRjaCAobCkge1xuICAgICAgICAgIHwgTGluZWJyZWFrID0+IFtbXSwgW11dXG4gICAgICAgICAgfCBUZXh0KHMpID0+IFtbVGV4dChzKV1dXG4gICAgICAgICAgfCBBbGlnbihsKSA9PiBbW21rKGdvKGwpKV1dXG4gICAgICAgICAgfCBBbm5vdChhbm4sIGwpID0+XG4gICAgICAgICAgICBnbyhsKSB8PiBMaXN0Lm1hcChyb3cgPT4gW0Fubm90KGFubiwgSEJveChyb3cpKV0pXG4gICAgICAgICAgfCBDYXQobDEsIGwyKSA9PlxuICAgICAgICAgICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoZ28obDEpKTtcbiAgICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGdvKGwyKSk7XG4gICAgICAgICAgICBsZWFkaW5nIEAgW2FwcGVuZF9oYm94KGxhc3QsIGZpcnN0KSwgLi4udHJhaWxpbmddO1xuICAgICAgICAgIH07XG4gICAgICAgIE1lbW9UYmwuc2V0KHRhYmxlLCBPYmoubWFnaWMobCksIE9iai5tYWdpYyhib3gpKTtcbiAgICAgICAgYm94O1xuICAgICAgfTtcbiAgICB9O1xuICAgIG1rKGdvKGwpKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gVXRpbDtcblxuLypcbiAgVGhlc2UgYXJlIHRoZSBzeW50YXggdGVzdCBmdW5jdGlvbnMgdXNlZCBmb3IgdGhlIHN5bnRheCB2YWxpZGF0aW9uXG4gIHNlY3Rpb24gb2YgdGhlIGV4ZXJjaXNlcy4gVGhlIHN5bnRheCB0ZXN0cyBhcmUgZGVzaWduZWQgdG9cbiAgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaW1wbGVtZW50YXRpb24gc2F0aXNmaWVzIGNlcnRhaW4gc3ludGF4IHByb3BlcnRpZXNcbiAgZS5nLiB0YWlsIHJlY3Vyc2l2ZSBmdW5jdGlvbiBvciB2YXJpYWJsZSB1c2FnZS5cbiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN5bnRheF9yZXN1bHQgPSB7XG4gIHJlc3VsdHM6IGxpc3QoYm9vbCksXG4gIHBlcmNlbnRhZ2U6IGZsb2F0LFxufTtcblxubGV0IHJlYyBmaW5kX3Zhcl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogVGVybS5VUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMSkgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cDIpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdXApID0+IHthY2MgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cCl9LCBmYWxzZSwgbClcbiAgfCBQYXJlbnModXApID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIHwgQXAodXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBUeXBlQW5uKHVwLCBfKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiAgSGVscGVyIGZ1bmN0aW9uIHVzZWQgaW4gdGhlIGZ1bmN0aW9uIGZpbmRfZm4gd2hpY2ggdGFrZXMgdGhlXG4gIHBhdHRlcm4gKHVwYXQpIGFuZCB0aGUgZGVmaW5pdGlvbiAoZGVmKSBvZiBhIGxldCBleHByZXNzaW9uIGFuZFxuICBjb2xsZWN0cyBmdW5jdGlvbnMgaW4gZGVmIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgaW5cbiAgdXBhdC4gRXhhbXBsZTogZm9yIHRoZSBleHByZXNzaW9uIFwibGV0IChhLGIpID0gKGZ1biB4IC0+IHgrMSwgNDEpIGluXCJcbiAgaWYgbmFtZT1cImFcIiwgdGhlbiBsPVtmdW4geCAtPiB4KzFdXG4gKi9cbmxldCByZWMgZmluZF9pbl9sZXQgPVxuICAgICAgICAoXG4gICAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICAgIHVwYXQ6IFRlcm0uVVBhdC50LFxuICAgICAgICAgIGRlZjogVGVybS5VRXhwLnQsXG4gICAgICAgICAgbDogbGlzdChUZXJtLlVFeHAudCksXG4gICAgICAgIClcbiAgICAgICAgOiBsaXN0KFRlcm0uVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtLCBkZWYudGVybSkge1xuICB8IChQYXJlbnModXApLCBQYXJlbnModWUpKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGwpXG4gIHwgKFBhcmVucyh1cCksIF8pID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYsIGwpXG4gIHwgKF8sIFBhcmVucyh1ZSkpID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwYXQsIHVlLCBsKVxuICB8IChUeXBlQW5uKHVwLCBfKSwgXykgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZiwgbClcbiAgfCAoVmFyKHgpLCBGdW4oXykpID0+IHggPT0gbmFtZSA/IFtkZWYsIC4uLmxdIDogbFxuICB8IChUdXBsZShwbCksIFR1cGxlKHVsKSkgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgocGwpICE9IExpc3QubGVuZ3RoKHVsKSkge1xuICAgICAgbDtcbiAgICB9IGVsc2Uge1xuICAgICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgICAoYWNjLCB1cCwgdWUpID0+IHtmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGFjYyl9LFxuICAgICAgICBsLFxuICAgICAgICBwbCxcbiAgICAgICAgdWwsXG4gICAgICApO1xuICAgIH1cbiAgfCAoVmFyKF8pLCBfKVxuICB8IChUdXBsZShfKSwgXylcbiAgfCAoXG4gICAgICBFbXB0eUhvbGUgfCBXaWxkIHwgVHJpdiB8IEludmFsaWQoXykgfCBNdWx0aUhvbGUoXykgfCBJbnQoXykgfCBGbG9hdChfKSB8XG4gICAgICBCb29sKF8pIHxcbiAgICAgIFN0cmluZyhfKSB8XG4gICAgICBMaXN0TGl0KF8pIHxcbiAgICAgIENvbnN0cnVjdG9yKF8pIHxcbiAgICAgIENvbnMoXywgXykgfFxuICAgICAgQXAoXywgXyksXG4gICAgICBfLFxuICAgICkgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kIGFueSBmdW5jdGlvbiBleHByZXNzaW9ucyBpbiB1ZXhwIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWVcbiAqL1xubGV0IHJlYyBmaW5kX2ZuID1cbiAgICAgICAgKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQsIGw6IGxpc3QoVGVybS5VRXhwLnQpKVxuICAgICAgICA6IGxpc3QoVGVybS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBMZXQodXAsIGRlZiwgYm9keSkgPT5cbiAgICBsIHw+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYpIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KHVsKVxuICB8IFR1cGxlKHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHUxKSA9PiB7ZmluZF9mbihuYW1lLCB1MSwgYWNjKX0sIGwsIHVsKVxuICB8IFR5cEZ1bihfLCBib2R5KVxuICB8IEZ1bihfLCBib2R5KSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBUeXBBcCh1MSwgXylcbiAgfCBQYXJlbnModTEpXG4gIHwgVW5PcChfLCB1MSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUxKVxuICB8IFRlc3QodTEpXG4gIHwgRmlsdGVyKF8sIF8sIHUxKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKSB8PiBmaW5kX2ZuKG5hbWUsIHUzKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgbFxuICAgIHw+IGZpbmRfZm4obmFtZSwgZm4pXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoKGwsIHUpID0+IGZpbmRfZm4obmFtZSwgdSwgbCksIF8sIGFyZ3MpXG4gIHwgTWF0Y2godTEsIHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgKF8sIHVlKSkgPT4ge2ZpbmRfZm4obmFtZSwgdWUsIGFjYyl9LFxuICAgICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSxcbiAgICAgIHVsLFxuICAgIClcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgRGVmZXJyYWwoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBWYXIoXykgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdXBhdC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogVGVybS5VUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVwKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApfSxcbiAgICAgIGZhbHNlLFxuICAgICAgbCxcbiAgICApXG4gIHwgUGFyZW5zKHVwKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB8IEFwKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBUeXBlQW5uKHVwLCBfKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbiA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBEZWZlcnJhbChfKSA9PiBmYWxzZVxuICB8IEZ1bihhcmdzLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX21lbnRpb24obmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApXG4gICAgICA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgZGVmKSB8fCB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCBMaXN0LmV4aXN0cyh2YXJfbWVudGlvbihuYW1lKSwgdXMpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBhcHBsaWVkIG9uIGFub3RoZXIgZXhwcmVzc3Npb24uXG4gaS5lLiBBcChWYXIobmFtZSksIHUpIG9jY3VycyBhbnl3aGVyZSBpbiB0aGUgdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfYXBwbGllZCA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfYXBwbGllZChuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBkZWYpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUpXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUpXG4gIHwgVHlwQXAodSwgXykgPT5cbiAgICBzd2l0Y2ggKHUudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBmYWxzZVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICAgIH1cbiAgfCBBcCh1MSwgdTIpID0+XG4gICAgc3dpdGNoICh1MS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHN3aXRjaCAodTEudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBMaXN0LmV4aXN0cyh2YXJfYXBwbGllZChuYW1lKSwgdXMpXG4gICAgfCBfID0+IExpc3QuZXhpc3RzKHZhcl9hcHBsaWVkKG5hbWUpLCB1cylcbiAgICB9XG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PlxuICAgIHN3aXRjaCAodTIudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiB2YXJfYXBwbGllZChuYW1lLCB1MSlcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIH1cbiAgfCBDb25zKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9hcHBsaWVkKG5hbWUsIGcpXG4gICAgfHwgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCBwZSkgPT4ge1xuICAgICAgICAgICBsZXQgKHAsIGUpID0gcGU7XG4gICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyB8fCB2YXJfYXBwbGllZChuYW1lLCBlKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBmYWxzZSxcbiAgICAgICAgIGwsXG4gICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgcmVjdXJzaXZlLlxuICovXG5sZXQgaXNfcmVjdXJzaXZlID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG4vKlxuIENoZWNrIGlmIHZhcmlhYmxlIG5hbWUgaXMgbm90IG1lbnRpb25lZCBhbnl3aGVyZSBvdXRzaWRlIG9mXG4gYSB0YWlsIHBvc2l0aW9uIGluIHVleHAuIE5vdGUgdGhhdCBpZiB0aGUgdmFyaWFibGUgaXMgbm90XG4gbWVudGlvbmVkIGFueXdoZXJlIGluIHRoZSBleHByZXNzaW9uLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLlxuICovXG5sZXQgcmVjIHRhaWxfY2hlY2sgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBEZWZlcnJhbChfKVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKSA9PiB0cnVlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSB8fCB2YXJfbWVudGlvbihuYW1lLCBkZWYpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIC8vSWYgbCBoYXMgbm8gcmVjdXJzaXZlIGNhbGxzIHRoZW4gdHJ1ZVxuICAgICFMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBUZXN0KF8pID0+IGZhbHNlXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCBfLCB1KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgUGFyZW5zKHUpID0+IHRhaWxfY2hlY2sobmFtZSwgdSlcbiAgfCBVbk9wKF8sIHUpID0+ICF2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEFwKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTIpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUxKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgdGFpbF9jaGVjayhcbiAgICAgIG5hbWUsXG4gICAgICB7aWRzOiBbXSwgdGVybTogQXAoZm4sIHtpZHM6IFtdLCB0ZXJtOiBUdXBsZShhcmdzKX0pfSxcbiAgICApXG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpXG4gIHwgU2VxKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gISh2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgdTEpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MikgJiYgdGFpbF9jaGVjayhuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIGcpXG4gICAgICA/IGZhbHNlXG4gICAgICA6IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIChwLCBlKSkgPT4ge1xuICAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjICYmIHRhaWxfY2hlY2sobmFtZSwgZSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICAgbCxcbiAgICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgdGFpbCByZWN1cnNpdmUuXG4gKi9cbmxldCBpc190YWlsX3JlY3Vyc2l2ZSA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIGxldCBmbl9ib2RpZXMgPSBbXSB8PiBmaW5kX2ZuKG5hbWUsIHVleHApO1xuICBpZiAoTGlzdC5sZW5ndGgoZm5fYm9kaWVzKSA9PSAwKSB7XG4gICAgZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1ZSkgPT4ge2FjYyAmJiB2YXJfbWVudGlvbihuYW1lLCB1ZSkgJiYgdGFpbF9jaGVjayhuYW1lLCB1ZSl9LFxuICAgICAgdHJ1ZSxcbiAgICAgIGZuX2JvZGllcyxcbiAgICApO1xuICB9O1xufTtcblxubGV0IGNoZWNrID1cbiAgICAodWV4cDogVGVybS5VRXhwLnQsIHByZWRpY2F0ZXM6IGxpc3QoVGVybS5VRXhwLnQgPT4gYm9vbCkpOiBzeW50YXhfcmVzdWx0ID0+IHtcbiAgbGV0IHJlc3VsdHMgPSBMaXN0Lm1hcChwcmVkID0+IHt1ZXhwIHw+IHByZWR9LCBwcmVkaWNhdGVzKTtcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoKHByZWRpY2F0ZXMpO1xuICBsZXQgcGFzc2luZyA9IFV0aWwuTGlzdFV0aWwuY291bnRfcHJlZChyZXMgPT4gcmVzLCByZXN1bHRzKTtcblxuICB7XG4gICAgcmVzdWx0cyxcbiAgICBwZXJjZW50YWdlOlxuICAgICAgLy92YWN1b3VzbHkgcGFzc2VzIGlmIHRoZXJlIGFyZSBubyB0ZXN0c1xuICAgICAgbGVuZ3RoID09IDAgPyAxLiA6IGZsb2F0X29mX2ludChwYXNzaW5nKSAvLiBmbG9hdF9vZl9pbnQobGVuZ3RoKSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcHJlZGljYXRlID1cbiAgfCBWYXJBcHBsaWVkKHN0cmluZylcbiAgfCBJc1JlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNOb3RSZWN1cnNpdmUoc3RyaW5nKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShzdHJpbmcpO1xuXG5sZXQgcHJlZGljYXRlX2ZuID0gcHJlZGljYXRlID0+IHtcbiAgc3dpdGNoIChwcmVkaWNhdGUpIHtcbiAgfCBWYXJBcHBsaWVkKG5hbWUpID0+IHZhcl9hcHBsaWVkKG5hbWUpXG4gIHwgSXNSZWN1cnNpdmUobmFtZSkgPT4gaXNfcmVjdXJzaXZlKG5hbWUpXG4gIHwgSXNOb3RSZWN1cnNpdmUobmFtZSkgPT4gKHVleHAgPT4gIWlzX3JlY3Vyc2l2ZShuYW1lLCB1ZXhwKSlcbiAgfCBJc1RhaWxSZWN1cnNpdmUobmFtZSkgPT4gaXNfdGFpbF9yZWN1cnNpdmUobmFtZSlcbiAgfTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcblxubW9kdWxlIHR5cGUgRXhlcmNpc2VFbnYgPSB7XG4gIHR5cGUgbm9kZTtcbiAgbGV0IGRlZmF1bHQ6IG5vZGU7XG4gIGxldCBvdXRwdXRfaGVhZGVyOiBzdHJpbmcgPT4gc3RyaW5nO1xufTtcblxubGV0IG91dHB1dF9oZWFkZXJfZ3JhZGluZyA9IF9tb2R1bGVfbmFtZSA9PlxuICBcIm1vZHVsZSBFeGVyY2lzZSA9IEdyYWRlUHJlbHVkZS5FeGVyY2lzZVxcblwiICsrIFwibGV0IHByb21wdCA9ICgpXFxuXCI7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZUVudikgPT4ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgd3JvbmdfaW1wbCgnY29kZSkgPSB7XG4gICAgaW1wbDogJ2NvZGUsXG4gICAgaGludDogc3RyaW5nLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaWRkZW5fdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaW50ID0gc3RyaW5nO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdCA9IChoaW50LCBTeW50YXhUZXN0LnByZWRpY2F0ZSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0cyA9IGxpc3Qoc3ludGF4X3Rlc3QpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB5b3VyX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgcmVxdWlyZWQ6IGludCxcbiAgICBwcm92aWRlZDogaW50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludF9kaXN0cmlidXRpb24gPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiBpbnQsXG4gICAgbXV0YXRpb25fdGVzdGluZzogaW50LFxuICAgIGltcGxfZ3JhZGluZzogaW50LFxuICB9O1xuXG4gIGxldCB2YWxpZGF0ZV9wb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgKHt0ZXN0X3ZhbGlkYXRpb24sIG11dGF0aW9uX3Rlc3RpbmcsIGltcGxfZ3JhZGluZ306IHBvaW50X2Rpc3RyaWJ1dGlvbikgPT5cbiAgICB0ZXN0X3ZhbGlkYXRpb24gKyBtdXRhdGlvbl90ZXN0aW5nICsgaW1wbF9ncmFkaW5nID09IDEwMFxuICAgICAgPyAoKSA6IGZhaWx3aXRoKFwiSW52YWxpZCBwb2ludCBkaXN0cmlidXRpb24gaW4gZXhlcmNpc2UuXCIpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwKCdjb2RlKSA9IHtcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHZlcnNpb246IGludCxcbiAgICBtb2R1bGVfbmFtZTogc3RyaW5nLFxuICAgIHByb21wdDpcbiAgICAgIFtAcHJpbnRlciAoZm10LCBfKSA9PiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJwcm9tcHRcIildIFtAb3BhcXVlXSBFeGVyY2lzZUVudi5ub2RlLFxuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICBwcmVsdWRlOiAnY29kZSxcbiAgICBjb3JyZWN0X2ltcGw6ICdjb2RlLFxuICAgIHlvdXJfdGVzdHM6IHlvdXJfdGVzdHMoJ2NvZGUpLFxuICAgIHlvdXJfaW1wbDogJ2NvZGUsXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbCgnY29kZSkpLFxuICAgIGhpZGRlbl90ZXN0czogaGlkZGVuX3Rlc3RzKCdjb2RlKSxcbiAgICBzeW50YXhfdGVzdHMsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGtleSA9IChzdHJpbmcsIGludCk7XG5cbiAgbGV0IGtleV9vZiA9IHAgPT4ge1xuICAgIChwLnRpdGxlLCBwLnZlcnNpb24pO1xuICB9O1xuXG4gIGxldCBmaW5kX2tleV9vcHQgPSAoa2V5LCBzcGVjczogbGlzdChwKCdjb2RlKSkpID0+IHtcbiAgICBzcGVjcyB8PiBVdGlsLkxpc3RVdGlsLmZpbmRpX29wdChzcGVjID0+IGtleV9vZihzcGVjKSA9PSBrZXkpO1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb3MgPVxuICAgIHwgUHJlbHVkZVxuICAgIHwgQ29ycmVjdEltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IFlvdXJJbXBsXG4gICAgfCBIaWRkZW5CdWdzKGludClcbiAgICB8IEhpZGRlblRlc3RzO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzcGVjID0gcChaaXBwZXIudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRyYW5zaXRpb25hcnlfc3BlYyA9IHAoQ29kZVN0cmluZy50KTtcblxuICBsZXQgbWFwID0gKHA6IHAoJ2EpLCBmOiAnYSA9PiAnYik6IHAoJ2IpID0+IHtcbiAgICB7XG4gICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgIHZlcnNpb246IHAudmVyc2lvbixcbiAgICAgIG1vZHVsZV9uYW1lOiBwLm1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBwLnByb21wdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogcC5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlOiBmKHAucHJlbHVkZSksXG4gICAgICBjb3JyZWN0X2ltcGw6IGYocC5jb3JyZWN0X2ltcGwpLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogZihwLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgICByZXF1aXJlZDogcC55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogcC55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbDogZihwLnlvdXJfaW1wbCksXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgcC5oaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHtcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBpbXBsOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3Qod3JvbmdfaW1wbC5pbXBsKSxcbiAgICAgICAgICAgICAgIGhpbnQ6IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgIH0pLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QocC5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgICAgICBoaW50czogcC5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBwLnN5bnRheF90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBlZHMgPSBwKEVkaXRvci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3RhdGUgPSB7XG4gICAgcG9zLFxuICAgIGVkcyxcbiAgfTtcblxuICBsZXQga2V5X29mX3N0YXRlID0gKHtlZHMsIF99KSA9PiBrZXlfb2YoZWRzKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudF9zdGF0ZSA9IChwb3MsIGxpc3QoKHBvcywgUGVyc2lzdGVudFppcHBlci50KSkpO1xuXG4gIGxldCBlZGl0b3Jfb2Zfc3RhdGU6IHN0YXRlID0+IEVkaXRvci50ID1cbiAgICAoe3BvcywgZWRzLCBffSkgPT5cbiAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICB8IFByZWx1ZGUgPT4gZWRzLnByZWx1ZGVcbiAgICAgIHwgQ29ycmVjdEltcGwgPT4gZWRzLmNvcnJlY3RfaW1wbFxuICAgICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IGVkcy55b3VyX3Rlc3RzLnRlc3RzXG4gICAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICAgIHwgWW91ckltcGwgPT4gZWRzLnlvdXJfaW1wbFxuICAgICAgfCBIaWRkZW5CdWdzKGkpID0+IExpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgaSkuaW1wbFxuICAgICAgfCBIaWRkZW5UZXN0cyA9PiBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXG4gICAgICB9O1xuXG4gIGxldCBwdXRfZWRpdG9yID0gKHtwb3MsIGVkcywgX30gYXMgc3RhdGU6IHN0YXRlLCBlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBwcmVsdWRlOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBDb3JyZWN0SW1wbCA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgY29ycmVjdF9pbXBsOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMueW91cl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJJbXBsID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX2ltcGw6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlbkJ1Z3MobikgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgICAgVXRpbC5MaXN0VXRpbC5wdXRfbnRoKFxuICAgICAgICAgICAgICBuLFxuICAgICAgICAgICAgICB7Li4uTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBuKSwgaW1wbDogZWRpdG9yfSxcbiAgICAgICAgICAgICAgZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlblRlc3RzID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy5oaWRkZW5fdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZWRpdG9ycyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1xuICAgICAgZWRzLnByZWx1ZGUsXG4gICAgICBlZHMuY29ycmVjdF9pbXBsLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX2ltcGwsXG4gICAgXVxuICAgIEAgTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB3cm9uZ19pbXBsLmltcGwsIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXTtcblxuICBsZXQgZWRpdG9yX3Bvc2l0aW9ucyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1ByZWx1ZGUsIENvcnJlY3RJbXBsLCBZb3VyVGVzdHNUZXN0aW5nLCBZb3VyVGVzdHNWYWxpZGF0aW9uLCBZb3VySW1wbF1cbiAgICBAIExpc3QubWFwaSgoaSwgXykgPT4gSGlkZGVuQnVncyhpKSwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW0hpZGRlblRlc3RzXTtcblxuICBsZXQgcG9zaXRpb25lZF9lZGl0b3JzID0gc3RhdGUgPT5cbiAgICBMaXN0LmNvbWJpbmUoZWRpdG9yX3Bvc2l0aW9ucyhzdGF0ZSksIGVkaXRvcnMoc3RhdGUpKTtcblxuICBsZXQgaWR4X29mX3BvcyA9IChwb3MsIHA6IHAoJ2NvZGUpKSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IDBcbiAgICB8IENvcnJlY3RJbXBsID0+IDFcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gMlxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiAzXG4gICAgfCBZb3VySW1wbCA9PiA0XG4gICAgfCBIaWRkZW5CdWdzKGkpID0+XG4gICAgICBpZiAoaSA8IExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIDUgKyBpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJpbnZhbGlkIGhpZGRlbiBidWcgaW5kZXhcIik7XG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncylcbiAgICB9O1xuXG4gIGxldCBwb3Nfb2ZfaWR4ID0gKHA6IHAoJ2NvZGUpLCBpZHg6IGludCkgPT5cbiAgICBzd2l0Y2ggKGlkeCkge1xuICAgIHwgMCA9PiBQcmVsdWRlXG4gICAgfCAxID0+IENvcnJlY3RJbXBsXG4gICAgfCAyID0+IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IDMgPT4gWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgNCA9PiBZb3VySW1wbFxuICAgIHwgXyA9PlxuICAgICAgaWYgKGlkeCA8IDApIHtcbiAgICAgICAgZmFpbHdpdGgoXCJuZWdhdGl2ZSBpZHhcIik7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA8IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5CdWdzKGlkeCAtIDUpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPT0gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlblRlc3RzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJlbGVtZW50IGlkeFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBzd2l0Y2hfZWRpdG9yID0gKH5wb3MsIGluc3RydWN0b3JfbW9kZSwgfmV4ZXJjaXNlKSA9PlxuICAgIGlmICghaW5zdHJ1Y3Rvcl9tb2RlKSB7XG4gICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgfCBIaWRkZW5UZXN0c1xuICAgICAgfCBIaWRkZW5CdWdzKF8pID0+IGV4ZXJjaXNlXG4gICAgICB8IF8gPT4ge2VkczogZXhlcmNpc2UuZWRzLCBwb3N9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB7ZWRzOiBleGVyY2lzZS5lZHMsIHBvc307XG4gICAgfTtcblxuICBsZXQgemlwcGVyX29mX2NvZGUgPSBjb2RlID0+IHtcbiAgICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhjb2RlKSkge1xuICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIlRyYW5zaXRpb24gZmFpbGVkLlwiKVxuICAgIHwgU29tZSh6aXBwZXIpID0+IHppcHBlclxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRyYW5zaXRpb246IHRyYW5zaXRpb25hcnlfc3BlYyA9PiBzcGVjID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9LFxuICAgICkgPT4ge1xuICAgICAgbGV0IHByZWx1ZGUgPSB6aXBwZXJfb2ZfY29kZShwcmVsdWRlKTtcbiAgICAgIGxldCBjb3JyZWN0X2ltcGwgPSB6aXBwZXJfb2ZfY29kZShjb3JyZWN0X2ltcGwpO1xuICAgICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgICB9O1xuICAgICAgbGV0IHlvdXJfaW1wbCA9IHppcHBlcl9vZl9jb2RlKHlvdXJfaW1wbCk7XG4gICAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgIGxldCBpbXBsID0gemlwcGVyX29mX2NvZGUoaW1wbCk7XG4gICAgICAgICAgICBhY2MgQCBbe2ltcGwsIGhpbnR9XTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICApO1xuICAgICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgICBsZXQgdGVzdHMgPSB6aXBwZXJfb2ZfY29kZSh0ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgICAgfTtcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgZWRzX29mX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQsXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHByZWx1ZGUsXG4gICAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICAgIH0sXG4gICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICApXG4gICAgICA6IGVkcyA9PiB7XG4gICAgbGV0IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uID0gRWRpdG9yLmluaXQofnNldHRpbmdzKTtcbiAgICBsZXQgcHJlbHVkZSA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihjb3JyZWN0X2ltcGwpO1xuICAgIGxldCB5b3VyX3Rlc3RzID0ge1xuICAgICAgbGV0IHRlc3RzID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgfTtcbiAgICBsZXQgeW91cl9pbXBsID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl9pbXBsKTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgaGlkZGVuX2J1Z3NcbiAgICAgIHw+IExpc3QubWFwKCh7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgbGV0IGltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihpbXBsKTtcbiAgICAgICAgICAge2ltcGwsIGhpbnR9O1xuICAgICAgICAgfSk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgIGxldCB7dGVzdHMsIGhpbnRzfSA9IGhpZGRlbl90ZXN0cztcbiAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHRlc3RzKTtcbiAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgIH07XG4gICAge1xuICAgICAgdGl0bGUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgbW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlLFxuICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgeW91cl90ZXN0cyxcbiAgICAgIHlvdXJfaW1wbCxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgc3ludGF4X3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgLy9cbiAgLy8gT2xkIHZlcnNpb24gb2YgYWJvdmUgdGhhdCBkaWQgc3RyaW5nLWJhc2VkIHBhcnNpbmcsIG1heSBiZSB1c2VmdWxcbiAgLy8gZm9yIHRyYW5zaXRpb25zIGJldHdlZW4gemlwcGVyIGRhdGEgc3RydWN0dXJlIHZlcnNpb25zIChUT0RPKVxuICAvL1xuICAvLyBsZXQgZWRpdG9yX29mX2NvZGUgPSAoaW5pdF9pZCwgY29kZSkgPT5cbiAgLy8gICBzd2l0Y2ggKEVkaXRvclV0aWwuZWRpdG9yX29mX2NvZGUoaW5pdF9pZCwgY29kZSkpIHtcbiAgLy8gICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJFeGVyY2lzZSBlcnJvcjogaW52YWxpZCBjb2RlXCIpXG4gIC8vICAgfCBTb21lKHgpID0+IHhcbiAgLy8gICB9O1xuICAvLyBsZXQgZWRzX29mX3NwZWM6IHNwZWMgPT4gZWRzID1cbiAgLy8gICAoXG4gIC8vICAgICB7XG4gIC8vXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9LFxuICAvLyAgICkgPT4ge1xuICAvLyAgICAgbGV0IGlkID0gbmV4dF9pZDtcbiAgLy8gICAgIGxldCAoaWQsIHByZWx1ZGUpID0gZWRpdG9yX29mX2NvZGUoaWQsIHByZWx1ZGUpO1xuICAvLyAgICAgbGV0IChpZCwgY29ycmVjdF9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBjb3JyZWN0X2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgeW91cl90ZXN0cykgPSB7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgLy8gICAgICAgKFxuICAvLyAgICAgICAgIGlkLFxuICAvLyAgICAgICAgIHtcbiAgLy8gICAgICAgICAgIHRlc3RzLFxuICAvLyAgICAgICAgICAgbnVtX3JlcXVpcmVkOiB5b3VyX3Rlc3RzLm51bV9yZXF1aXJlZCxcbiAgLy8gICAgICAgICAgIG1pbmltdW06IHlvdXJfdGVzdHMubWluaW11bSxcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICApO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIGxldCAoaWQsIHlvdXJfaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgeW91cl9pbXBsKTtcbiAgLy8gICAgIGxldCAoaWQsIGhpZGRlbl9idWdzKSA9XG4gIC8vICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAvLyAgICAgICAgICgoaWQsIGFjYyksIHtpbXBsLCBoaW50fSkgPT4ge1xuICAvLyAgICAgICAgICAgbGV0IChpZCwgaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgaW1wbCk7XG4gIC8vICAgICAgICAgICAoaWQsIGFjYyBAIFt7aW1wbCwgaGludH1dKTtcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICAgIChpZCwgW10pLFxuICAvLyAgICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICApO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAvLyAgICAgICBsZXQgKGlkLCB0ZXN0cykgPSBlZGl0b3Jfb2ZfY29kZShpZCwgdGVzdHMpO1xuICAvLyAgICAgICAoaWQsIHt0ZXN0cywgaGludHN9KTtcbiAgLy8gICAgIH07XG4gIC8vICAgICB7XG4gIC8vICAgICAgIG5leHRfaWQ6IGlkLFxuICAvLyAgICAgICB0aXRsZSxcbiAgLy8gICAgICAgdmVyc2lvbixcbiAgLy8gICAgICAgcHJvbXB0LFxuICAvLyAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gIC8vICAgICAgIHByZWx1ZGUsXG4gIC8vICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgLy8gICAgICAgeW91cl90ZXN0cyxcbiAgLy8gICAgICAgeW91cl9pbXBsLFxuICAvLyAgICAgICBoaWRkZW5fYnVncyxcbiAgLy8gICAgICAgaGlkZGVuX3Rlc3RzLFxuICAvLyAgICAgfTtcbiAgLy8gICB9O1xuXG4gIGxldCBzZXRfaW5zdHJ1Y3Rvcl9tb2RlID0gKHtlZHMsIF99IGFzIHN0YXRlOiBzdGF0ZSwgbmV3X21vZGU6IGJvb2wpID0+IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBlZHM6IHtcbiAgICAgIC4uLmVkcyxcbiAgICAgIHByZWx1ZGU6IEVkaXRvci5zZXRfcmVhZF9vbmx5KGVkcy5wcmVsdWRlLCAhbmV3X21vZGUpLFxuICAgIH0sXG4gIH07XG5cbiAgbGV0IHZpc2libGVfaW4gPSAocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gdHJ1ZVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBmYWxzZVxuICAgIHwgWW91ckltcGwgPT4gdHJ1ZVxuICAgIHwgSGlkZGVuQnVncyhfKSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IEhpZGRlblRlc3RzID0+IGluc3RydWN0b3JfbW9kZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0YXRlX29mX3NwZWMgPVxuICAgICAgKHNwZWMsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wsIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQpOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGVkcyA9IGVkc19vZl9zcGVjKH5zZXR0aW5ncywgc3BlYyk7XG4gICAgc2V0X2luc3RydWN0b3JfbW9kZSh7cG9zOiBZb3VySW1wbCwgZWRzfSwgaW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgfTtcblxuICBsZXQgcGVyc2lzdGVudF9zdGF0ZV9vZl9zdGF0ZSA9XG4gICAgICAoe3BvcywgX30gYXMgc3RhdGU6IHN0YXRlLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKSA9PiB7XG4gICAgbGV0IHppcHBlcnMgPVxuICAgICAgcG9zaXRpb25lZF9lZGl0b3JzKHN0YXRlKVxuICAgICAgfD4gTGlzdC5maWx0ZXIoKChwb3MsIF8pKSA9PiB2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpXG4gICAgICB8PiBMaXN0Lm1hcCgoKHBvcywgZWRpdG9yKSkgPT4ge1xuICAgICAgICAgICAocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoRWRpdG9yLihlZGl0b3Iuc3RhdGUuemlwcGVyKSkpXG4gICAgICAgICB9KTtcbiAgICAocG9zLCB6aXBwZXJzKTtcbiAgfTtcblxuICBsZXQgdW5wZXJzaXN0X3N0YXRlID1cbiAgICAgIChcbiAgICAgICAgKHBvcywgcG9zaXRpb25lZF96aXBwZXJzKTogcGVyc2lzdGVudF9zdGF0ZSxcbiAgICAgICAgfnNwZWM6IHNwZWMsXG4gICAgICAgIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wsXG4gICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICApXG4gICAgICA6IHN0YXRlID0+IHtcbiAgICBsZXQgbG9va3VwID0gKHBvcywgZGVmYXVsdCkgPT5cbiAgICAgIGlmICh2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpIHtcbiAgICAgICAgbGV0IHBlcnNpc3RlZF96aXBwZXIgPSBMaXN0LmFzc29jKHBvcywgcG9zaXRpb25lZF96aXBwZXJzKTtcbiAgICAgICAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHBlcnNpc3RlZF96aXBwZXIpO1xuICAgICAgICBFZGl0b3IuaW5pdCh6aXBwZXIsIH5zZXR0aW5ncyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBFZGl0b3IuaW5pdChkZWZhdWx0LCB+c2V0dGluZ3MpO1xuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9IGxvb2t1cChQcmVsdWRlLCBzcGVjLnByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBsb29rdXAoQ29ycmVjdEltcGwsIHNwZWMuY29ycmVjdF9pbXBsKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IGxvb2t1cChZb3VyVGVzdHNWYWxpZGF0aW9uLCBzcGVjLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBsb29rdXAoWW91ckltcGwsIHNwZWMueW91cl9pbXBsKTtcbiAgICBsZXQgKF8sIGhpZGRlbl9idWdzKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKChpLCBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSkpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICBsZXQgaW1wbCA9IGxvb2t1cChIaWRkZW5CdWdzKGkpLCBpbXBsKTtcbiAgICAgICAgICAoaSArIDEsIGhpZGRlbl9idWdzIEAgW3tpbXBsLCBoaW50fV0pO1xuICAgICAgICB9LFxuICAgICAgICAoMCwgW10pLFxuICAgICAgICBzcGVjLmhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gbG9va3VwKEhpZGRlblRlc3RzLCBzcGVjLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG5cbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKFxuICAgICAge1xuICAgICAgICBwb3MsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIHRpdGxlOiBzcGVjLnRpdGxlLFxuICAgICAgICAgIHZlcnNpb246IHNwZWMudmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZTogc3BlYy5tb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQ6IHNwZWMucHJvbXB0LFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogc3BlYy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICAgICAgdGVzdHM6IHlvdXJfdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICByZXF1aXJlZDogc3BlYy55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICAgICAgcHJvdmlkZWQ6IHNwZWMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiBoaWRkZW5fdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICBoaW50czogc3BlYy5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzeW50YXhfdGVzdHM6IHNwZWMuc3ludGF4X3Rlc3RzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGluc3RydWN0b3JfbW9kZSxcbiAgICApO1xuICB9O1xuXG4gIC8vICMgU3RpdGNoaW5nXG5cbiAgdHlwZSBzdGl0Y2hlZCgnYSkgPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiAnYSwgLy8gcHJlbHVkZSArIGNvcnJlY3RfaW1wbCArIHlvdXJfdGVzdHNcbiAgICB1c2VyX2ltcGw6ICdhLCAvLyBwcmVsdWRlICsgeW91cl9pbXBsXG4gICAgdXNlcl90ZXN0czogJ2EsIC8vIHByZWx1ZGUgKyB5b3VyX2ltcGwgKyB5b3VyX3Rlc3RzXG4gICAgcHJlbHVkZTogJ2EsIC8vIHByZWx1ZGVcbiAgICBpbnN0cnVjdG9yOiAnYSwgLy8gcHJlbHVkZSArIGNvcnJlY3RfaW1wbCArIGhpZGRlbl90ZXN0cy50ZXN0cyAvLyBUT0RPIG9ubHkgbmVlZHMgdG8gcnVuIGluIGluc3RydWN0b3IgbW9kZVxuICAgIGhpZGRlbl9idWdzOiBsaXN0KCdhKSwgLy8gcHJlbHVkZSArIGhpZGRlbl9idWdzW2ldLmltcGwgKyB5b3VyX3Rlc3RzLFxuICAgIGhpZGRlbl90ZXN0czogJ2EsXG4gIH07XG5cbiAgbGV0IHdyYXBfZmlsdGVyID0gKGFjdDogRmlsdGVyQWN0aW9uLmFjdGlvbiwgdGVybTogVGVybS5VRXhwLnQpOiBUZXJtLlVFeHAudCA9PlxuICAgIFRlcm1CYXNlLlVFeHAue1xuICAgICAgdGVybTpcbiAgICAgICAgVGVybUJhc2UuVUV4cC5GaWx0ZXIoXG4gICAgICAgICAgRmlsdGVyQWN0aW9uLihhY3QsIE9uZSksXG4gICAgICAgICAge3Rlcm06IENvbnN0cnVjdG9yKFwiJGVcIiksIGlkczogW0lkLm1rKCldfSxcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICApLFxuICAgICAgaWRzOiBbSWQubWsoKV0sXG4gICAgfTtcblxuICBsZXQgdGVybV9vZiA9IChlZGl0b3I6IEVkaXRvci50KTogVGVybS5VRXhwLnQgPT5cbiAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKGVkaXRvci5zdGF0ZS56aXBwZXIpIHw+IGZzdDtcblxuICBsZXQgc3RpdGNoMyA9IChlZDE6IEVkaXRvci50LCBlZDI6IEVkaXRvci50LCBlZDM6IEVkaXRvci50KSA9PlxuICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh0ZXJtX29mKGVkMSksIHRlcm1fb2YoZWQyKSksXG4gICAgICB0ZXJtX29mKGVkMyksXG4gICAgKTtcblxuICBsZXQgc3RpdGNoX3Rlcm0gPSAoe2VkcywgX306IHN0YXRlKTogc3RpdGNoZWQoVGVybUJhc2UuVUV4cC50KSA9PiB7XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfaW1wbF90ZXJtID0ge1xuICAgICAgbGV0IHlvdXJfaW1wbF90ZXJtID1cbiAgICAgICAgZWRzLnlvdXJfaW1wbCB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5TdGVwKTtcbiAgICAgIGxldCBwcmVsdWRlX3Rlcm0gPVxuICAgICAgICBlZHMucHJlbHVkZSB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5FdmFsKTtcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChwcmVsdWRlX3Rlcm0sIHlvdXJfaW1wbF90ZXJtKTtcbiAgICB9O1xuICAgIGxldCB0ZXN0X3ZhbGlkYXRpb25fdGVybSA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLnlvdXJfdGVzdHMudGVzdHMpKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IHRlc3RfdmFsaWRhdGlvbl90ZXJtLFxuICAgICAgdXNlcl9pbXBsOiB1c2VyX2ltcGxfdGVybSxcbiAgICAgIHVzZXJfdGVzdHM6IHVzZXJfdGVzdHNfdGVybSxcbiAgICAgIC8vIGluc3RydWN0b3Igd29ya3MgaGVyZSBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIHByZWx1ZGU6IGluc3RydWN0b3IsXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh0KTogVGVybUJhc2UuVUV4cC50ID0+XG4gICAgICAgICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCB0LmltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBoaWRkZW5fdGVzdHM6IGhpZGRlbl90ZXN0c190ZXJtLFxuICAgIH07XG4gIH07XG4gIGxldCBzdGl0Y2hfdGVybSA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF90ZXJtKTtcblxuICB0eXBlIHN0aXRjaGVkX3N0YXRpY3MgPSBzdGl0Y2hlZChFZGl0b3IuQ2FjaGVkU3RhdGljcy50KTtcblxuICAvKiBNdWx0aXBsZSBzdGl0Y2hpbmdzIGFyZSBuZWVkZWQgZm9yIGVhY2ggZXhlcmNpc2VcbiAgICAgKHNlZSBjb21tZW50cyBpbiB0aGUgc3RpdGNoZWQgdHlwZSBhYm92ZSlcblxuICAgICBTdGl0Y2hpbmcgaXMgbmVjZXNzYXJ5IHRvIGNvbmNhdGVuYXRlIHRlcm1zXG4gICAgIGZyb20gZGlmZmVyZW50IGVkaXRvcnMsIHdoaWNoIGFyZSB0aGVuIHR5cGVjaGVja2VkLiAqL1xuICBsZXQgc3RpdGNoX3N0YXRpYyA9XG4gICAgICAoc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB0OiBzdGl0Y2hlZChUZXJtQmFzZS5VRXhwLnQpKVxuICAgICAgOiBzdGl0Y2hlZF9zdGF0aWNzID0+IHtcbiAgICBsZXQgbWsgPSAodGVybTogVGVybUJhc2UuVUV4cC50KTogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCA9PiB7XG4gICAgICAvL05PVEU6IHRoaXMgaXMgZXhwZW5zaXZlIGFuZCBfYWxtb3N0XyByZWR1bmRhbnQgdG8gdGhlIHN0YXRpY3MgaW4gRWRpdG9yXG4gICAgICBsZXQgaW5mb19tYXAgPSBTdGF0aWNzLm1rKHNldHRpbmdzLCBCdWlsdGlucy5jdHhfaW5pdCwgdGVybSk7XG4gICAgICB7dGVybSwgZXJyb3JfaWRzOiBTdGF0aWNzLk1hcC5lcnJvcl9pZHMoaW5mb19tYXApLCBpbmZvX21hcH07XG4gICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9IG1rKHQuaW5zdHJ1Y3Rvcik7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiBtayh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICB1c2VyX2ltcGw6IG1rKHQudXNlcl9pbXBsKSxcbiAgICAgIHVzZXJfdGVzdHM6IG1rKHQudXNlcl90ZXN0cyksXG4gICAgICBwcmVsdWRlOiBpbnN0cnVjdG9yLCAvLyB3b3JrcyBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAobWssIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgaGlkZGVuX3Rlc3RzOiBtayh0LmhpZGRlbl90ZXN0cyksXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX3N0YXRpYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9zdGF0aWMpO1xuXG4gIGxldCBwcmVsdWRlX2tleSA9IFwicHJlbHVkZVwiO1xuICBsZXQgdGVzdF92YWxpZGF0aW9uX2tleSA9IFwidGVzdF92YWxpZGF0aW9uXCI7XG4gIGxldCB1c2VyX2ltcGxfa2V5ID0gXCJ1c2VyX2ltcGxcIjtcbiAgbGV0IHVzZXJfdGVzdHNfa2V5ID0gXCJ1c2VyX3Rlc3RzXCI7XG4gIGxldCBpbnN0cnVjdG9yX2tleSA9IFwiaW5zdHJ1Y3RvclwiO1xuICBsZXQgaGlkZGVuX2J1Z3Nfa2V5ID0gbiA9PiBcImhpZGRlbl9idWdzX1wiICsrIHN0cmluZ19vZl9pbnQobik7XG4gIGxldCBoaWRkZW5fdGVzdHNfa2V5ID0gXCJoaWRkZW5fdGVzdHNcIjtcblxuICBsZXQga2V5X2Zvcl9zdGF0aWNzID0gKHN0YXRlOiBzdGF0ZSk6IHN0cmluZyA9PlxuICAgIHN3aXRjaCAoc3RhdGUucG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHByZWx1ZGVfa2V5XG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX2tleVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0ZXN0X3ZhbGlkYXRpb25fa2V5XG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHVzZXJfdGVzdHNfa2V5XG4gICAgfCBZb3VySW1wbCA9PiB1c2VyX2ltcGxfa2V5XG4gICAgfCBIaWRkZW5CdWdzKGlkeCkgPT4gaGlkZGVuX2J1Z3Nfa2V5KGlkeClcbiAgICB8IEhpZGRlblRlc3RzID0+IGhpZGRlbl90ZXN0c19rZXlcbiAgICB9O1xuXG4gIGxldCBzcGxpY2VkX2VsYWJzID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHN0YXRlOiBzdGF0ZSlcbiAgICAgIDogbGlzdCgoTW9kZWxSZXN1bHRzLmtleSwgREhFeHAudCkpID0+IHtcbiAgICBsZXQge1xuICAgICAgdGVzdF92YWxpZGF0aW9uLFxuICAgICAgdXNlcl9pbXBsLFxuICAgICAgdXNlcl90ZXN0cyxcbiAgICAgIHByZWx1ZGU6IF8sXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgfSA9XG4gICAgICBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgIGxldCBlbGFiID0gKHM6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpID0+XG4gICAgICBJbnRlcmZhY2UuZWxhYm9yYXRlKH5zZXR0aW5ncywgcy5pbmZvX21hcCwgcy50ZXJtKTtcbiAgICBbXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgZWxhYih0ZXN0X3ZhbGlkYXRpb24pKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBlbGFiKHVzZXJfaW1wbCkpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBlbGFiKHVzZXJfdGVzdHMpKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgZWxhYihpbnN0cnVjdG9yKSksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgZWxhYihoaWRkZW5fdGVzdHMpKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXBpKChuLCBoaWRkZW5fYnVnOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KSA9PlxuICAgICAgICAgICAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBlbGFiKGhpZGRlbl9idWcpKVxuICAgICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIER5bmFtaWNzSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50LFxuICAgICAgcmVzdWx0OiBNb2RlbFJlc3VsdC50LFxuICAgIH07XG4gICAgbGV0IGVtcHR5OiB0ID0ge3N0YXRpY3M6IEVkaXRvci5DYWNoZWRTdGF0aWNzLmVtcHR5LCByZXN1bHQ6IE5vRWxhYn07XG4gICAgbGV0IHN0YXRpY3Nfb25seSA9IChzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KTogdCA9PiB7XG4gICAgICBzdGF0aWNzLFxuICAgICAgcmVzdWx0OiBOb0VsYWIsXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzID1cbiAgICAgIChzdGF0ZTogc3RhdGUsIHM6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSk6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQgPT5cbiAgICBzd2l0Y2ggKHN0YXRlLnBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBzLnByZWx1ZGUuc3RhdGljc1xuICAgIHwgQ29ycmVjdEltcGwgPT4gcy5pbnN0cnVjdG9yLnN0YXRpY3NcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gcy50ZXN0X3ZhbGlkYXRpb24uc3RhdGljc1xuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBzLnVzZXJfdGVzdHMuc3RhdGljc1xuICAgIHwgWW91ckltcGwgPT4gcy51c2VyX2ltcGwuc3RhdGljc1xuICAgIHwgSGlkZGVuQnVncyhpZHgpID0+IExpc3QubnRoKHMuaGlkZGVuX2J1Z3MsIGlkeCkuc3RhdGljc1xuICAgIHwgSGlkZGVuVGVzdHMgPT4gcy5oaWRkZW5fdGVzdHMuc3RhdGljc1xuICAgIH07XG5cbiAgLyogR2l2ZW4gdGhlIGV2YWx1YXRpb24gcmVzdWx0cywgY29sbGVjdHMgdGhlXG4gICAgIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBwcm9kdWNpbmcgZHluYW1pY1xuICAgICBmZWVkYmFjayovXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IHJlc3VsdF9vZiA9IGtleSA9PlxuICAgICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gTW9kZWxSZXN1bHQuTm9FbGFiXG4gICAgICB8IFNvbWUocmVzdWx0cykgPT5cbiAgICAgICAgTW9kZWxSZXN1bHRzLmxvb2t1cChyZXN1bHRzLCBrZXkpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Nb2RlbFJlc3VsdC5Ob0VsYWIpXG4gICAgICB9O1xuXG4gICAgbGV0IHRlc3RfdmFsaWRhdGlvbiA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICBzdGF0aWNzOiB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKHRlc3RfdmFsaWRhdGlvbl9rZXkpLFxuICAgICAgfTtcblxuICAgIGxldCB1c2VyX2ltcGwgPVxuICAgICAgRHluYW1pY3NJdGVtLntzdGF0aWNzOiB1c2VyX2ltcGwsIHJlc3VsdDogcmVzdWx0X29mKHVzZXJfaW1wbF9rZXkpfTtcblxuICAgIGxldCB1c2VyX3Rlc3RzID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogdXNlcl90ZXN0cywgcmVzdWx0OiByZXN1bHRfb2YodXNlcl90ZXN0c19rZXkpfTtcbiAgICBsZXQgcHJlbHVkZSA9IER5bmFtaWNzSXRlbS57c3RhdGljczogcHJlbHVkZSwgcmVzdWx0OiBOb0VsYWJ9O1xuICAgIGxldCBpbnN0cnVjdG9yID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogaW5zdHJ1Y3RvciwgcmVzdWx0OiByZXN1bHRfb2YoaW5zdHJ1Y3Rvcl9rZXkpfTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAobiwgc3RhdGljczogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCkgPT5cbiAgICAgICAgICBEeW5hbWljc0l0ZW0ue3N0YXRpY3MsIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl9idWdzX2tleShuKSl9LFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICBzdGF0aWNzOiBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl90ZXN0c19rZXkpLFxuICAgICAgfTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT5cbiAgICBpZiAoc2V0dGluZ3Muc3RhdGljcyAmJiBzZXR0aW5ncy5keW5hbWljcykge1xuICAgICAgc3RpdGNoX2R5bmFtaWMoc2V0dGluZ3MsIHN0YXRlLCByZXN1bHRzKTtcbiAgICB9IGVsc2UgaWYgKHNldHRpbmdzLnN0YXRpY3MpIHtcbiAgICAgIGxldCB0ID0gc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl9pbXBsKSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfdGVzdHMpLFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaW5zdHJ1Y3RvciksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5wcmVsdWRlKSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHksIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5oaWRkZW5fdGVzdHMpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgIExpc3QuaW5pdChMaXN0Lmxlbmd0aChzdGF0ZS5lZHMuaGlkZGVuX2J1Z3MpLCBfID0+XG4gICAgICAgICAgICBEeW5hbWljc0l0ZW0uZW1wdHlcbiAgICAgICAgICApLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHN0aXRjaF9keW5hbWljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX2R5bmFtaWMpO1xuXG4gIC8vIE1vZHVsZSBFeHBvcnRcblxuICBsZXQgZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBzZXJpYWxpemF0aW9uID0gWmlwcGVyLnNob3coemlwcGVyKTtcbiAgICAvLyBsZXQgc3RyaW5nX2xpdGVyYWwgPSBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChzZXJpYWxpemF0aW9uKSArKyBcIlxcXCJcIjtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgc2VyaWFsaXphdGlvbik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IGNvZGUgPSBQcmludGVyLnRvX3N0cmluZ19iYXNpYyh6aXBwZXIpO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChjb2RlKSArKyBcIlxcXCJcIik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBFeGVyY2lzZS50cmFuc2l0aW9uKFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AodHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiKVxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9ncmFkaW5nX21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IGhlYWRlciA9IG91dHB1dF9oZWFkZXJfZ3JhZGluZyhtb2R1bGVfbmFtZSk7XG4gICAgbGV0IHByZWZpeCA9IFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBoZWFkZXIgKysgcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGJsYW5rX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB+dGl0bGUsXG4gICAgICAgIH5tb2R1bGVfbmFtZSxcbiAgICAgICAgfnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgfnJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICB+cHJvdmlkZWRfdGVzdHMsXG4gICAgICAgIH5udW1fd3JvbmdfaW1wbHMsXG4gICAgICApID0+IHtcbiAgICBsZXQgcHJlbHVkZSA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0LmluaXQoXG4gICAgICAgIG51bV93cm9uZ19pbXBscyxcbiAgICAgICAgaSA9PiB7XG4gICAgICAgICAgbGV0IHppcHBlciA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgICAgICAge2ltcGw6IHppcHBlciwgaGludDogXCJUT0RPOiBoaW50IFwiICsrIHN0cmluZ19vZl9pbnQoaSl9O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICB7XG4gICAgICB0aXRsZSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBtb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogRXhlcmNpc2VFbnYuZGVmYXVsdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIHByb3ZpZGVkOiBwcm92aWRlZF90ZXN0cyxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGwsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICBoaW50czogW10sXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBbXSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIEZyb20gU3RvcmVcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZXhlcmNpc2VfZXhwb3J0ID0ge1xuICAgIGN1cl9leGVyY2lzZToga2V5LFxuICAgIGV4ZXJjaXNlX2RhdGE6IGxpc3QoKGtleSwgcGVyc2lzdGVudF9zdGF0ZSkpLFxuICB9O1xuXG4gIGxldCBzZXJpYWxpemVfZXhlcmNpc2UgPSAoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIHw+IHNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZVxuICAgIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlID0gKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgZGF0YVxuICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHBcbiAgICB8PiB1bnBlcnNpc3Rfc3RhdGUofnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gZXhlcmNpc2VfZXhwb3J0X29mX3NleHA7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFV0aWw7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZS5FeGVyY2lzZUVudikgPT4ge1xuICBvcGVuIEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJjZW50YWdlID0gZmxvYXQ7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludHMgPSBmbG9hdDtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHNjb3JlID0gKHBvaW50cywgcG9pbnRzKTtcblxuICBsZXQgc2NvcmVfb2ZfcGVyY2VudCA9IChwZXJjZW50LCBtYXhfcG9pbnRzKSA9PiB7XG4gICAgbGV0IG1heF9wb2ludHMgPSBmbG9hdF9vZl9pbnQobWF4X3BvaW50cyk7XG4gICAgKHBlcmNlbnQgKi4gbWF4X3BvaW50cywgbWF4X3BvaW50cyk7XG4gIH07XG5cbiAgbW9kdWxlIFRlc3RWYWxpZGF0aW9uUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuICAgICAgcmVxdWlyZWQ6IGludCxcbiAgICAgIHByb3ZpZGVkOiBpbnQsXG4gICAgfTtcblxuICAgIGxldCBtayA9IChlZHM6IGVkcywgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgICAgIHtcbiAgICAgICAgdGVzdF9yZXN1bHRzLFxuICAgICAgICByZXF1aXJlZDogZWRzLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgIHByb3ZpZGVkOiBlZHMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gMC4wXG4gICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PlxuICAgICAgICBsZXQgbnVtX3Rlc3RzID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy50b3RhbCk7XG4gICAgICAgIGxldCByZXF1aXJlZCA9IGZsb2F0X29mX2ludChyZXBvcnQucmVxdWlyZWQpO1xuICAgICAgICBsZXQgcHJvdmlkZWQgPSBmbG9hdF9vZl9pbnQocmVwb3J0LnByb3ZpZGVkKTtcbiAgICAgICAgbGV0IG51bV9wYXNzaW5nID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy5wYXNzaW5nKTtcblxuICAgICAgICByZXF1aXJlZCAtLiBwcm92aWRlZCA8PSAwLjAgfHwgbnVtX3Rlc3RzIDw9IDAuMFxuICAgICAgICAgID8gMC4wXG4gICAgICAgICAgOiBudW1fcGFzc2luZ1xuICAgICAgICAgICAgLy4gbnVtX3Rlc3RzXG4gICAgICAgICAgICAqLiAoXG4gICAgICAgICAgICAgIEZsb2F0Lm1heChcbiAgICAgICAgICAgICAgICAwLixcbiAgICAgICAgICAgICAgICBGbG9hdC5taW4obnVtX3Rlc3RzIC0uIHByb3ZpZGVkLCByZXF1aXJlZCAtLiBwcm92aWRlZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLy4gKHJlcXVpcmVkIC0uIHByb3ZpZGVkKVxuICAgICAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIE11dGF0aW9uVGVzdGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7cmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKX07XG5cbiAgICBsZXQgaGlkZGVuX2J1Z19zdGF0dXMgPVxuICAgICAgICAoXG4gICAgICAgICAgdGVzdF92YWxpZGF0aW9uX2RhdGE6IER5bmFtaWNzSXRlbS50LFxuICAgICAgICAgIGhpZGRlbl9idWdfZGF0YTogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgIClcbiAgICAgICAgOiBUZXN0U3RhdHVzLnQgPT4ge1xuICAgICAgc3dpdGNoIChcbiAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHRlc3RfdmFsaWRhdGlvbl9kYXRhLnJlc3VsdCksXG4gICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhoaWRkZW5fYnVnX2RhdGEucmVzdWx0KSxcbiAgICAgICkge1xuICAgICAgfCAoTm9uZSwgXylcbiAgICAgIHwgKF8sIE5vbmUpID0+IEluZGV0XG4gICAgICB8IChTb21lKHRlc3RfdmFsaWRhdGlvbl9kYXRhKSwgU29tZShoaWRkZW5fYnVnX2RhdGEpKSA9PlxuICAgICAgICBsZXQgdmFsaWRhdGlvbl90ZXN0X21hcCA9IHRlc3RfdmFsaWRhdGlvbl9kYXRhLnRlc3RfbWFwO1xuICAgICAgICBsZXQgaGlkZGVuX2J1Z190ZXN0X21hcCA9IGhpZGRlbl9idWdfZGF0YS50ZXN0X21hcDtcblxuICAgICAgICBsZXQgZm91bmQgPVxuICAgICAgICAgIGhpZGRlbl9idWdfdGVzdF9tYXBcbiAgICAgICAgICB8PiBMaXN0LmZpbmRfb3B0KCgoaWQsIGluc3RhbmNlX3JlcG9ydHMpKSA9PiB7XG4gICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdE1hcC5qb2ludF9zdGF0dXMoaW5zdGFuY2VfcmVwb3J0cyk7XG4gICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3NcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5JbmRldCA9PiBmYWxzZVxuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkZhaWwgPT5cbiAgICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRpb25fdGVzdF9yZXBvcnRzID1cbiAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX3Rlc3RfbWFwIHw+IFRlc3RNYXAubG9va3VwKGlkKTtcbiAgICAgICAgICAgICAgICAgc3dpdGNoICh2YWxpZGF0aW9uX3Rlc3RfcmVwb3J0cykge1xuICAgICAgICAgICAgICAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBTb21lKHJlcG9ydHMpID0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3RNYXAuam9pbnRfc3RhdHVzKHJlcG9ydHMpO1xuICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3MgPT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5GYWlsXG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkluZGV0ID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgfSk7XG4gICAgICAgIHN3aXRjaCAoZm91bmQpIHtcbiAgICAgICAgfCBOb25lID0+IEZhaWxcbiAgICAgICAgfCBTb21lKF8pID0+IFBhc3NcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTsgLy8gZm9yIGVhY2ggaGlkZGVuIGJ1Z1xuICAgIC8vICAgaW4gdGhlIHRlc3QgcmVzdWx0cyBkYXRhLCBmaW5kIGEgdGVzdCBJRCB0aGF0IHBhc3NlcyB0ZXN0IHZhbGlkYXRpb24gYnV0IGZhaWxzIGFnYWluc3RcblxuICAgIGxldCBtayA9XG4gICAgICAgIChcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU6IGxpc3Qod3JvbmdfaW1wbChFZGl0b3IudCkpLFxuICAgICAgICAgIH5oaWRkZW5fYnVnczogbGlzdChEeW5hbWljc0l0ZW0udCksXG4gICAgICAgIClcbiAgICAgICAgOiB0ID0+IHtcbiAgICAgIGxldCByZXN1bHRzID1cbiAgICAgICAgTGlzdC5tYXAoaGlkZGVuX2J1Z19zdGF0dXModGVzdF92YWxpZGF0aW9uKSwgaGlkZGVuX2J1Z3MpO1xuICAgICAgbGV0IGhpbnRzID1cbiAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgKHdyb25nX2ltcGw6IHdyb25nX2ltcGwoRWRpdG9yLnQpKSA9PiB3cm9uZ19pbXBsLmhpbnQsXG4gICAgICAgICAgaGlkZGVuX2J1Z3Nfc3RhdGUsXG4gICAgICAgICk7XG4gICAgICBsZXQgcmVzdWx0cyA9IExpc3QuY29tYmluZShyZXN1bHRzLCBoaW50cyk7XG4gICAgICB7cmVzdWx0czogcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgbGV0IHJlc3VsdHMgPSByZXBvcnQucmVzdWx0cztcbiAgICAgIGxldCBudW1fd3JvbmdfaW1wbHMgPSBMaXN0Lmxlbmd0aChyZXN1bHRzKTtcbiAgICAgIGxldCBudW1fcGFzc2VkID1cbiAgICAgICAgcmVzdWx0c1xuICAgICAgICB8PiBMaXN0LmZpbmRfYWxsKCgoc3RhdHVzLCBfKSkgPT4gc3RhdHVzID09IFRlc3RTdGF0dXMuUGFzcylcbiAgICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgICBzd2l0Y2ggKG51bV93cm9uZ19pbXBscykge1xuICAgICAgfCAwID0+IDEuMFxuICAgICAgfCBfID0+IGZsb2F0X29mX2ludChudW1fcGFzc2VkKSAvLiBmbG9hdF9vZl9pbnQobnVtX3dyb25nX2ltcGxzKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgLy8gVE9ETyBtb3ZlIHRvIHNlcGFyYXRlIG1vZHVsZVxuXG4gICAgbGV0IHN1bW1hcnlfc3RyID0gKH50b3RhbCwgfmZvdW5kKTogc3RyaW5nID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dG90YWwsXG4gICAgICAgIH5wPWZvdW5kLFxuICAgICAgICB+cT0wLFxuICAgICAgICB+bl9zdHI9XCJidWdcIixcbiAgICAgICAgfm5zX3N0cj1cImJ1Z3NcIixcbiAgICAgICAgfnBfc3RyPVwiZXhwb3NlZFwiLFxuICAgICAgICB+cV9zdHI9XCJcIixcbiAgICAgICAgfnJfc3RyPVwidW5yZXZlYWxlZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBTeW50YXhSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgaGludGVkX3Jlc3VsdHM6IGxpc3QoKGJvb2wsIGhpbnQpKSxcbiAgICAgIHBlcmNlbnRhZ2UsXG4gICAgfTtcblxuICAgIGxldCBtayA9ICh+eW91cl9pbXBsOiBFZGl0b3IudCwgfnRlc3RzOiBzeW50YXhfdGVzdHMpOiB0ID0+IHtcbiAgICAgIGxldCB1c2VyX2ltcGxfdGVybSA9XG4gICAgICAgIE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oeW91cl9pbXBsLnN0YXRlLnppcHBlcikgfD4gZnN0O1xuXG4gICAgICBsZXQgcHJlZGljYXRlcyA9XG4gICAgICAgIExpc3QubWFwKCgoXywgcCkpID0+IFN5bnRheFRlc3QucHJlZGljYXRlX2ZuKHApLCB0ZXN0cyk7XG4gICAgICBsZXQgaGludHMgPSBMaXN0Lm1hcCgoKGgsIF8pKSA9PiBoLCB0ZXN0cyk7XG4gICAgICBsZXQgc3ludGF4X3Jlc3VsdHMgPSBTeW50YXhUZXN0LmNoZWNrKHVzZXJfaW1wbF90ZXJtLCBwcmVkaWNhdGVzKTtcblxuICAgICAge1xuICAgICAgICBoaW50ZWRfcmVzdWx0czpcbiAgICAgICAgICBMaXN0Lm1hcDIoKHIsIGgpID0+IChyLCBoKSwgc3ludGF4X3Jlc3VsdHMucmVzdWx0cywgaGludHMpLFxuICAgICAgICBwZXJjZW50YWdlOiBzeW50YXhfcmVzdWx0cy5wZXJjZW50YWdlLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBJbXBsR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH5oaW50czogbGlzdChzdHJpbmcpLCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpOiB0ID0+IHtcbiAgICAgIGxldCBoaW50ZWRfcmVzdWx0cyA9XG4gICAgICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgICAgbGV0IHN0YXR1c2VzID0gdGVzdF9yZXN1bHRzLnN0YXR1c2VzO1xuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgc3RhdHVzZXMsXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJObyBoaW50IGF2YWlsYWJsZS5cIixcbiAgICAgICAgICApO1xuXG4gICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJFeGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yOiBIaW50IHdpdGhvdXQgYSB0ZXN0LlwiLFxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIHtoaW50cywgdGVzdF9yZXN1bHRzLCBoaW50ZWRfcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCB0b3RhbCA9IChyZXBvcnQ6IHQpID0+IExpc3QubGVuZ3RoKHJlcG9ydC5oaW50ZWRfcmVzdWx0cyk7XG4gICAgbGV0IG51bV9wYXNzZWQgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgICByZXBvcnQuaGludGVkX3Jlc3VsdHNcbiAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCwgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN5bnRheF9yZXBvcnQucGVyY2VudGFnZVxuICAgICAgKi4gKGZsb2F0X29mX2ludChudW1fcGFzc2VkKHJlcG9ydCkpIC8uIGZsb2F0X29mX2ludCh0b3RhbChyZXBvcnQpKSk7XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEdyYWRpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDogVGVzdFZhbGlkYXRpb25SZXBvcnQudCxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OiBNdXRhdGlvblRlc3RpbmdSZXBvcnQudCxcbiAgICAgIHN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50LFxuICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydDogSW1wbEdyYWRpbmdSZXBvcnQudCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB+c3RpdGNoZWRfZHluYW1pY3M6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSkgPT4ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBlZHMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDpcbiAgICAgICAgVGVzdFZhbGlkYXRpb25SZXBvcnQubWsoXG4gICAgICAgICAgZWRzLFxuICAgICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhzdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24ucmVzdWx0KSxcbiAgICAgICAgKSxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OlxuICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQubWsoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbj1zdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlPWVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M9c3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBzeW50YXhfcmVwb3J0OlxuICAgICAgICBTeW50YXhSZXBvcnQubWsofnlvdXJfaW1wbD1lZHMueW91cl9pbXBsLCB+dGVzdHM9ZWRzLnN5bnRheF90ZXN0cyksXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OlxuICAgICAgICBJbXBsR3JhZGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+aGludHM9ZWRzLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgICAgICB+dGVzdF9yZXN1bHRzPVxuICAgICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLmhpZGRlbl90ZXN0cy5yZXN1bHQpLFxuICAgICAgICApLFxuICAgIH07XG5cbiAgICBsZXQgb3ZlcmFsbF9zY29yZSA9XG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0LFxuICAgICAgICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQsXG4gICAgICAgICAgICBzeW50YXhfcmVwb3J0LFxuICAgICAgICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydCxcbiAgICAgICAgICAgIF8sXG4gICAgICAgICAgfTogdCxcbiAgICAgICAgKVxuICAgICAgICA6IHNjb3JlID0+IHtcbiAgICAgIGxldCAodHZfcG9pbnRzLCB0dl9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5wZXJjZW50YWdlKHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICk7XG4gICAgICBsZXQgKG10X3BvaW50cywgbXRfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgTXV0YXRpb25UZXN0aW5nUmVwb3J0LnBlcmNlbnRhZ2UobXV0YXRpb25fdGVzdGluZ19yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi5tdXRhdGlvbl90ZXN0aW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IChpZ19wb2ludHMsIGlnX21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIEltcGxHcmFkaW5nUmVwb3J0LnBlcmNlbnRhZ2UoaW1wbF9ncmFkaW5nX3JlcG9ydCwgc3ludGF4X3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLmltcGxfZ3JhZGluZyxcbiAgICAgICAgKTtcbiAgICAgIGxldCB0b3RhbF9wb2ludHMgPSB0dl9wb2ludHMgKy4gbXRfcG9pbnRzICsuIGlnX3BvaW50cztcbiAgICAgIGxldCBtYXhfcG9pbnRzID0gdHZfbWF4ICsuIG10X21heCArLiBpZ19tYXg7XG4gICAgICAodG90YWxfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgICB9O1xuICB9O1xufTtcbiIsIm1vZHVsZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlID0gdW5pdDtcbiAgbGV0IGRlZmF1bHQgPSAoKTtcbiAgbGV0IG91dHB1dF9oZWFkZXIgPSBFeGVyY2lzZS5vdXRwdXRfaGVhZGVyX2dyYWRpbmc7XG59O1xuXG5tb2R1bGUgRXhlcmNpc2UgPSBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxubW9kdWxlIEdyYWRpbmcgPSBHcmFkaW5nLkYoRXhlcmNpc2VFbnYpO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMvMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgZGVidWcgPVxuICBsZXQgX0RFQlVHID1cbiAgICB0cnlcbiAgICAgIFNvbWUoU3lzLmdldGVudiBcIkRFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgYW5kIF9PTURfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiT01EX0RFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggX0RFQlVHLCBfT01EX0RFQlVHIHdpdGhcbiAgfCBfLCBTb21lIFwiZmFsc2VcIiAtPlxuICAgICBmYWxzZVxuICB8IFNvbWUgXywgTm9uZSAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIERFQlVHIGlzIHNldCwgXFxcbiAgICAgICAgICAgICAgeW91IGNhbiBkZWFjdGl2YXRlIHRoZSBtb2RlIGJ5IHVuc2V0dGluZyBERUJVRyBcXFxuICAgICAgICAgICAgICBvciBieSBzZXR0aW5nIE9NRF9ERUJVRyB0byB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgZmFsc2VcbiAgfCBfLCBTb21lIF8gLT5cbiAgICAgZXByaW50ZiBcIm9tZDogZGVidWcgbW9kZSBhY3RpdmF0ZWQgYmVjYXVzZSBPTURfREVCVUcgaXMgc2V0XG4gICAgICAgICAgICAgIHRvIGEgdmFsdWUgdGhhdCBpc24ndCB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCB3YXJuID8od2U9ZmFsc2UpIG1zZyA9XG4gIGlmIHdlIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgbXNnKVxuICBlbHNlXG4gICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6ICVzXFxuJSFcIiBtc2dcblxuXG5sZXQgdHJhY2tmaXggPVxuICB0cnlcbiAgICBpZ25vcmUoU3lzLmdldGVudiBcIk9NRF9GSVhcIik7XG4gICAgZXByaW50ZiBcIm9tZDogdHJhY2tpbmcgbW9kZSBhY3RpdmF0ZWQ6IHRva2VuIGxpc3QgYXJlIHZlcnkgb2Z0ZW4gY2hlY2tlZCwgXFxcbiAgICAgICAgICAgICBpdCBtaWdodCB0YWtlIGEgKnZlcnkqIGxvbmcgdGltZSBpZiB5b3VyIGlucHV0IGlzIGxhcmdlLlxcbiUhXCI7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGZhbHNlXG5cbmxldCBfID0gaWYgZGVidWcgdGhlbiBQcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlIHRydWVcblxubGV0IHJhaXNlID1cbiAgaWYgZGVidWcgdGhlblxuICAgIChmdW4gZSAtPlxuICAgICAgIGVwcmludGYgXCIoT01EKSBFeGNlcHRpb24gcmFpc2VkOiAlc1xcbiUhXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKTtcbiAgICAgICByYWlzZSBlKVxuICBlbHNlXG4gICAgcmFpc2VcblxubW9kdWxlIFN0cmluZ1NldCA6IHNpZ1xuICBpbmNsdWRlIFNldC5TIHdpdGggdHlwZSBlbHQgPSBzdHJpbmdcbiAgdmFsIG9mX2xpc3QgOiBlbHQgbGlzdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXQuTWFrZShTdHJpbmcpXG4gIGxldCBvZl9saXN0IGwgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHIgZSAtPiBhZGQgZSByKSBlbXB0eSBsXG5lbmRcblxuXG50eXBlICdhIHNwbGl0ID0gJ2EgbGlzdCAtPiAnYSBzcGxpdF9hY3Rpb25cbmFuZCAnYSBzcGxpdF9hY3Rpb24gPVxuICB8IENvbnRpbnVlXG4gIHwgQ29udGludWVfd2l0aCBvZiAnYSBsaXN0ICogJ2EgbGlzdFxuICB8IFNwbGl0IG9mICdhIGxpc3QgKiAnYSBsaXN0XG5cblxubGV0IGZzcGxpdF9yZXYgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH4oZjonYSBzcGxpdCkgbFxuICAgIDogKCdhIGxpc3QgKiAnYSBsaXN0KSBvcHRpb24gPVxuICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGYgW10gd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICBlbmRcbiAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgZXhjbCBsIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgbWF0Y2ggZiBsIHdpdGhcbiAgICAgICAgICB8IFNwbGl0KGxlZnQsIHJpZ2h0KSAtPiAgICAgIFNvbWUobGVmdEBhY2N1LCByaWdodClcbiAgICAgICAgICB8IENvbnRpbnVlX3dpdGgobGVmdCwgdGwpIC0+IGxvb3AgKGxlZnRAYWNjdSkgdGxcbiAgICAgICAgICB8IENvbnRpbnVlIC0+ICAgICAgICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIHRsXG4gIGluIGxvb3AgW10gbFxuXG5sZXQgZnNwbGl0ID8oZXhjbD0oZnVuIF8gLT4gZmFsc2UpKSB+ZiBsID1cbiAgbWF0Y2ggZnNwbGl0X3JldiB+ZXhjbDpleGNsIH5mOmYgbCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUocmV2LCBsKSAtPiBTb21lKExpc3QucmV2IHJldiwgbClcblxubGV0IGlkX29mX3N0cmluZyBpZHMgcyA9XG4gIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBvdXQgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgKCogUHV0IFtzXSBpbnRvIFtiXSwgcmVwbGFjaW5nIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIGRhc2hlcy4gKilcbiAgbGV0IHJlYyBsb29wIHN0YXJ0ZWQgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG91dCBjIDtcbiAgICAgICAgbG9vcCB0cnVlIChpICsgMSlcbiAgICAgICgqIERvbid0IHdhbnQgdG8gc3RhcnQgd2l0aCBkYXNoZXMuICopXG4gICAgICB8IF8gd2hlbiBub3Qgc3RhcnRlZCAtPlxuICAgICAgICBsb29wIGZhbHNlIChpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0ICctJyA7XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICBpblxuICBsb29wIGZhbHNlIDAgO1xuICBsZXQgcycgPSBCdWZmZXIuY29udGVudHMgb3V0IGluXG4gIGlmIHMnID0gXCJcIiB0aGVuIFwiXCJcbiAgZWxzZVxuICAgICgqIEZpbmQgb3V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gW3MnXSB0aGF0IGlzbid0IGEgZGFzaC4gKilcbiAgICBsZXQgbGFzdF90cmFpbGluZyA9IFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpIDwgMCB8fCBzJy5baV0gPD4gJy0nIHRoZW4gaVxuICAgICAgICBlbHNlIGxvb3AgKGkgLSAxKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggcycgLSAxKVxuICAgIGluXG4gICAgKCogVHJpbSB0cmFpbGluZyBkYXNoZXMuICopXG4gICAgaWRzI21hbmdsZSBAQCBTdHJpbmcuc3ViIHMnIDAgKGxhc3RfdHJhaWxpbmcgKyAxKVxuXG4oKiBvbmx5IGNvbnZlcnQgd2hlbiBcIm5lY2Vzc2FyeVwiICopXG5sZXQgaHRtbGVudGl0aWVzID8obWQ9ZmFsc2UpIHMgPVxuICBsZXQgbW9kdWxlIEJyZWFrID0gc3RydWN0IGV4Y2VwdGlvbiBCcmVhayBlbmQgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICgpXG4gICAgZWxzZVxuICAgICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAoICcwJyAuLiAnOScgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyApIGFzIGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8ICdcIicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZxdW90O1wiXG4gICAgICAgIHwgJ1xcJycgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjMzk7XCJcbiAgICAgICAgfCAnJicgLT5cbiAgICAgICAgICAgIGlmIG1kIHRoZW5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG1hdGNoIHMuW2krMV0gd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnIycgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiBmZiAoc3VjYyBqKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJzsnIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGZmIChpKzIpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJlwiXG4gICAgICAgICAgICAgICAgd2l0aCBfIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICAgICAgICB8ICc8JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmx0O1wiXG4gICAgICAgIHwgJz4nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImZ3Q7XCJcbiAgICAgICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIGluIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBtaW5pbWFsaXplX2JsYW5rcyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGwgaW5cbiAgbGV0IHJlYyBsb29wIGYgaSA9XG4gICAgaWYgaSA9IGwgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgLT5cbiAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBmIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgIGxvb3AgZmFsc2UgKHN1Y2MgaSlcbiAgaW4gbG9vcCBmYWxzZSAwXG5cbmxldCByZWMgZWF0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgZTo6dGwgYXMgbCAtPiBpZiBmIGUgdGhlbiBlYXQgZiB0bCBlbHNlIGxcblxuXG5sZXQgcmVjIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzIChodG1sOnN0cmluZykgPVxuICBsZXQgcmVjIGN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyBpIChqLWkpLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcyA9IFxuICAgIGlmIHMgPSBcIlwiIHRoZW5cbiAgICAgIHMgXG4gICAgZWxzZSBpZiBzLlswXSA8PiAnICcgdGhlblxuICAgICAgc1xuICAgIGVsc2VcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgU3RyaW5nLnN1YiBzIGkgKFN0cmluZy5sZW5ndGggcyAtIGkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnICcgLT4gbG9vcCAoaSsxKVxuICAgICAgICAgIHwgXyAtPiBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgIGluIGxvb3AgMVxuICBpblxuICBsZXQgcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgcyA9XG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuW1N0cmluZy5sZW5ndGggcyAtIDFdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIC0+IGxvb3AgKGktMSlcbiAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyAwIChpKzEpXG4gICAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyByZXMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICByZXNcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICB0cnlcbiAgICAgICAgICBTb21lICh0YWtlX2F0dHJpYnV0ZSBzIGkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSAoKChfLF8pIGFzIGEpLCBuZXdfcykgLT5cbiAgICAgICAgbG9vcCBuZXdfcyAoYTo6cmVzKSAwXG4gICAgICB8IE5vbmUgLT4gcmVzXG4gIGFuZCB0YWtlX2F0dHJpYnV0ZSBzIGkgPVxuICAgICAgbGV0IG5hbWUsIGFmdGVyX2VxID0gY3V0X29uX2NoYXJfZnJvbSBzIGkgJz0nIGluXG4gICAgICBsZXQgbmFtZSA9IHJlbW92ZV9zdWZmaXhfc3BhY2VzIG5hbWUgaW5cbiAgICAgIGxldCBhZnRlcl9lcSA9IHJlbW92ZV9wcmVmaXhfc3BhY2VzIGFmdGVyX2VxIGluXG4gICAgICBsZXQgdmFsdWUsIHJlc3QgPSBjdXRfb25fY2hhcl9mcm9tIGFmdGVyX2VxIDEgYWZ0ZXJfZXEuWzBdIGluXG4gICAgICAobmFtZSx2YWx1ZSksIHJlbW92ZV9wcmVmaXhfc3BhY2VzIHJlc3RcbiAgaW5cbiAgaWYgKCogSGFzIGl0IGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGU/ICopXG4gICAgdHJ5IFN0cmluZy5pbmRleCBodG1sICc+JyA8IFN0cmluZy5pbmRleCBodG1sICcgJ1xuICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWVcbiAgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgbWF0Y2ggaHRtbC5bMV0gd2l0aFxuICB8ICc8JyB8ICcgJyAtPlxuICAgIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzXG4gICAgICAocmVtb3ZlX3ByZWZpeF9zcGFjZXMgKFN0cmluZy5zdWIgaHRtbCAxIChTdHJpbmcubGVuZ3RoIGh0bWwgLSAxKSkpXG4gIHwgXyAtPlxuICAgIHRyeVxuICAgICAgbGV0IGh0bWwgPSBzbmQgKGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICcgJykgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5zdWIgaHRtbCAwIChTdHJpbmcuaW5kZXggaHRtbCAnPicpKSBbXSAwXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gW11cblxubGV0IHJlYyBleHRyYWN0X2lubmVyX2h0bWwgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZWMgcmN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5yaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgMCBqLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgXywgcCA9IGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICc+JyBpblxuICBsZXQgciwgXyA9IHJjdXRfb25fY2hhcl9mcm9tIHAgKFN0cmluZy5sZW5ndGggcCAtIDEpICc8JyBpblxuICByXG5cblxubGV0IGh0bWxfdm9pZF9lbGVtZW50cyA9IFN0cmluZ1NldC5vZl9saXN0IFtcbiAgXCJpbWdcIjtcbiAgXCJpbnB1dFwiO1xuICBcImxpbmtcIjtcbiAgXCJtZXRhXCI7XG4gIFwiYnJcIjtcbiAgXCJoclwiO1xuICBcInNvdXJjZVwiO1xuICBcIndiclwiO1xuICBcInBhcmFtXCI7XG4gIFwiZW1iZWRcIjtcbiAgXCJiYXNlXCI7XG4gIFwiYXJlYVwiO1xuICBcImNvbFwiO1xuICBcInRyYWNrXCI7XG4gIFwia2V5Z2VuXCI7XG5dXG5cbmxldCAoIEAgKSBsMSBsMiA9XG4gIExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgbDEpIGwyXG4iLCJvcGVuIE9tZF91dGlsc1xub3BlbiBQcmludGZcblxuKCoqIHJlZmVyZW5jZXMsIGluc3RhbmNlcyBjcmVhdGVkIGluIFtPbWRfcGFyc2VyLm1haW5fcGFyc2VdIGFuZFxuICAgIGFjY2Vzc2VkIGluIHRoZSBbT21kX2JhY2tlbmRdIG1vZHVsZS4gKilcbm1vZHVsZSBSID0gTWFwLk1ha2UoU3RyaW5nKVxuY2xhc3MgcmVmX2NvbnRhaW5lciA6IG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIGMgOiAoc3RyaW5nICogc3RyaW5nKSBSLnRcbiAgICBtZXRob2QgYWRkX3JlZiA6IFIua2V5IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdFxuICAgIG1ldGhvZCBnZXRfcmVmIDogUi5rZXkgLT4gKHN0cmluZyAqIHN0cmluZykgb3B0aW9uXG4gICAgbWV0aG9kIGdldF9hbGwgOiAoc3RyaW5nICogKHN0cmluZyAqIHN0cmluZykpIGxpc3RcbiAgZW5kID0gb2JqZWN0XG4gIHZhbCBtdXRhYmxlIGMgPSBSLmVtcHR5XG4gIHZhbCBtdXRhYmxlIGMyID0gUi5lbXB0eVxuXG4gIG1ldGhvZCBnZXRfYWxsID0gUi5iaW5kaW5ncyBjXG5cbiAgbWV0aG9kIGFkZF9yZWYgbmFtZSB0aXRsZSB1cmwgPVxuICAgIGMgPC0gUi5hZGQgbmFtZSAodXJsLCB0aXRsZSkgYztcbiAgICBsZXQgbG4gPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIG5hbWUgaW5cbiAgICBpZiBsbiA8PiBuYW1lIHRoZW4gYzIgPC0gUi5hZGQgbG4gKHVybCwgdGl0bGUpIGMyXG5cbiAgbWV0aG9kIGdldF9yZWYgbmFtZSA9XG4gICAgdHJ5XG4gICAgICBsZXQgKHVybCwgdGl0bGUpIGFzIHIgPVxuICAgICAgICB0cnkgUi5maW5kIG5hbWUgY1xuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgICAgICAgIHRyeSBSLmZpbmQgbG4gY1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBSLmZpbmQgbG4gYzJcbiAgICAgIGluIFNvbWUgclxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBOb25lXG5lbmRcblxudHlwZSBlbGVtZW50ID1cbiAgfCBIMSBvZiB0XG4gIHwgSDIgb2YgdFxuICB8IEgzIG9mIHRcbiAgfCBINCBvZiB0XG4gIHwgSDUgb2YgdFxuICB8IEg2IG9mIHRcbiAgfCBQYXJhZ3JhcGggb2YgdFxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRW1waCBvZiB0XG4gIHwgQm9sZCBvZiB0XG4gIHwgVWwgb2YgdCBsaXN0XG4gIHwgT2wgb2YgdCBsaXN0XG4gIHwgVWxwIG9mIHQgbGlzdFxuICB8IE9scCBvZiB0IGxpc3RcbiAgfCBDb2RlIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBDb2RlX2Jsb2NrIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBCclxuICB8IEhyXG4gIHwgTkxcbiAgfCBVcmwgb2YgaHJlZiAqIHQgKiB0aXRsZVxuICB8IFJlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIHN0cmluZyAqIGZhbGxiYWNrXG4gIHwgSW1nX3JlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIGFsdCAqIGZhbGxiYWNrXG4gIHwgSHRtbCBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9ibG9jayBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9jb21tZW50IG9mIHN0cmluZ1xuICB8IFJhdyBvZiBzdHJpbmdcbiAgfCBSYXdfYmxvY2sgb2Ygc3RyaW5nXG4gIHwgQmxvY2txdW90ZSBvZiB0XG4gIHwgSW1nIG9mIGFsdCAqIHNyYyAqIHRpdGxlXG4gIHwgWCBvZlxuICAgICAgPCBuYW1lIDogc3RyaW5nO1xuICAgICAgICB0b19odG1sIDogP2luZGVudDppbnQgLT4gKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3NleHByIDogKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3QgOiB0IC0+IHQgb3B0aW9uID5cbmFuZCBmYWxsYmFjayA9IDwgdG9fc3RyaW5nIDogc3RyaW5nIDsgdG9fdCA6IHQgPlxuYW5kIG5hbWUgPSBzdHJpbmdcbmFuZCBhbHQgPSBzdHJpbmdcbmFuZCBzcmMgPSBzdHJpbmdcbmFuZCBocmVmID0gc3RyaW5nXG5hbmQgdGl0bGUgPSBzdHJpbmdcbmFuZCB0ID0gZWxlbWVudCBsaXN0XG5cblxubGV0IHJlYyBsb29zZV9jb21wYXJlIHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICB8IEgxIGUxOjp0bDEsIEgxIGUyOjp0bDJcbiAgfCBIMiBlMTo6dGwxLCBIMiBlMjo6dGwyXG4gIHwgSDMgZTE6OnRsMSwgSDMgZTI6OnRsMlxuICB8IEg0IGUxOjp0bDEsIEg0IGUyOjp0bDJcbiAgfCBINSBlMTo6dGwxLCBINSBlMjo6dGwyXG4gIHwgSDYgZTE6OnRsMSwgSDYgZTI6OnRsMlxuICB8IEVtcGggZTE6OnRsMSwgRW1waCBlMjo6dGwyXG4gIHwgQm9sZCBlMTo6dGwxLCBCb2xkIGUyOjp0bDJcbiAgfCBCbG9ja3F1b3RlIGUxOjp0bDEsIEJsb2NrcXVvdGUgZTI6OnRsMlxuICB8IFBhcmFncmFwaCBlMTo6dGwxLCBQYXJhZ3JhcGggZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgVWwgZTE6OnRsMSwgVWwgZTI6OnRsMlxuICB8IE9sIGUxOjp0bDEsIE9sIGUyOjp0bDJcbiAgfCBVbHAgZTE6OnRsMSwgVWxwIGUyOjp0bDJcbiAgfCBPbHAgZTE6OnRsMSwgT2xwIGUyOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZV9saXN0cyBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IChDb2RlIF8gYXMgZTEpOjp0bDEsIChDb2RlIF8gYXMgZTIpOjp0bDJcbiAgfCAoQnIgYXMgZTEpOjp0bDEsIChCciBhcyBlMik6OnRsMlxuICB8IChIciBhcyBlMSk6OnRsMSwgKEhyIGFzIGUyKTo6dGwyXG4gIHwgKE5MIGFzIGUxKTo6dGwxLCAoTkwgYXMgZTIpOjp0bDJcbiAgfCAoSHRtbCBfIGFzIGUxKTo6dGwxLCAoSHRtbCBfIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWxfYmxvY2sgXyBhcyBlMSk6OnRsMSwgKEh0bWxfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChSYXcgXyBhcyBlMSk6OnRsMSwgKFJhdyBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhd19ibG9jayBfIGFzIGUxKTo6dGwxLCAoUmF3X2Jsb2NrIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9jb21tZW50IF8gYXMgZTEpOjp0bDEsIChIdG1sX2NvbW1lbnQgXyBhcyBlMik6OnRsMlxuICB8IChJbWcgXyBhcyBlMSk6OnRsMSwgKEltZyBfIGFzIGUyKTo6dGwyXG4gIHwgKFRleHQgXyBhcyBlMSk6OnRsMSwgKFRleHQgXyBhcyBlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgQ29kZV9ibG9jayhsMSxjMSk6OnRsMSwgQ29kZV9ibG9jayhsMixjMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGwxIGwyLCBTdHJpbmcubGVuZ3RoIGMxIC0gU3RyaW5nLmxlbmd0aCBjMiB3aXRoXG4gICAgICAgICB8IDAsIDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSBjMSBjMiB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgMCwgMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIChjMl5cIlxcblwiKSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAtMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIChjMV5cIlxcblwiKSBjMiB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpLCBfIC0+IGlcbiAgICAgIClcblxuICB8IFVybCAoaHJlZjEsIHQxLCB0aXRsZTEpOjp0bDEsIFVybCAoaHJlZjIsIHQyLCB0aXRsZTIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBocmVmMSBocmVmMiB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGxvb3NlX2NvbXBhcmUgdDEgdDIgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSB0aXRsZTEgdGl0bGUyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgUmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIFJlZiAocmVmX2NvbnRhaW5lcjIsIG5hbWUyLCB4MiwgZmFsbGJhY2syKTo6dGwyXG4gIHwgSW1nX3JlZiAocmVmX2NvbnRhaW5lcjEsIG5hbWUxLCB4MSwgZmFsbGJhY2sxKTo6dGwxLFxuICAgICAgICBJbWdfcmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIChuYW1lMSwgeDEpIChuYW1lMiwgeDIpIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIGxldCBjZmYgPVxuICAgICAgICAgICAgICAgaWYgZmFsbGJhY2sxI3RvX3N0cmluZyA9IGZhbGxiYWNrMiN0b19zdHJpbmcgdGhlblxuICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvb3NlX2NvbXBhcmUgKGZhbGxiYWNrMSN0b190KSAoZmFsbGJhY2syI3RvX3QpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGlmIGNmZiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgIGNvbXBhcmUgKHJlZl9jb250YWluZXIxI2dldF9hbGwpIChyZWZfY29udGFpbmVyMiNnZXRfYWxsKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGNmZlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBYIGUxOjp0bDEsIFggZTI6OnRsMiAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKGUxI25hbWUpIChlMiNuYW1lKSB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmUgKGUxI3RvX3QpIChlMiN0b190KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG4gIHwgWCBfOjpfLCBfIC0+IDFcbiAgfCBfLCBYIF86Ol8gLT4gLTFcbiAgfCBfIC0+IGNvbXBhcmUgdDEgdDJcblxuYW5kIGxvb3NlX2NvbXBhcmVfbGlzdHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT5cbiAgICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZV9saXN0cyB0bDEgdGwyXG4gICAgICAgICAgIHwgaSAtPiBpKVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgXyAtPiAtMVxuXG5cbnR5cGUgdG9rID0gKCogQ3MobikgbWVhbnMgKG4rMikgdGltZXMgQyAqKVxufCBBbXBlcnNhbmRcbnwgQW1wZXJzYW5kcyBvZiBpbnRcbnwgQXRcbnwgQXRzIG9mIGludFxufCBCYWNrcXVvdGVcbnwgQmFja3F1b3RlcyBvZiBpbnRcbnwgQmFja3NsYXNoXG58IEJhY2tzbGFzaHMgb2YgaW50XG58IEJhclxufCBCYXJzIG9mIGludFxufCBDYXJldFxufCBDYXJldHMgb2YgaW50XG58IENicmFjZVxufCBDYnJhY2VzIG9mIGludFxufCBDb2xvblxufCBDb2xvbnMgb2YgaW50XG58IENvbW1hXG58IENvbW1hcyBvZiBpbnRcbnwgQ3BhcmVudGhlc2lzXG58IENwYXJlbnRoZXNpc3Mgb2YgaW50XG58IENicmFja2V0XG58IENicmFja2V0cyBvZiBpbnRcbnwgRG9sbGFyXG58IERvbGxhcnMgb2YgaW50XG58IERvdFxufCBEb3RzIG9mIGludFxufCBEb3VibGVxdW90ZVxufCBEb3VibGVxdW90ZXMgb2YgaW50XG58IEV4Y2xhbWF0aW9uXG58IEV4Y2xhbWF0aW9ucyBvZiBpbnRcbnwgRXF1YWxcbnwgRXF1YWxzIG9mIGludFxufCBHcmVhdGVydGhhblxufCBHcmVhdGVydGhhbnMgb2YgaW50XG58IEhhc2hcbnwgSGFzaHMgb2YgaW50XG58IExlc3N0aGFuXG58IExlc3N0aGFucyBvZiBpbnRcbnwgTWludXNcbnwgTWludXNzIG9mIGludFxufCBOZXdsaW5lXG58IE5ld2xpbmVzIG9mIGludFxufCBOdW1iZXIgb2Ygc3RyaW5nXG58IE9icmFjZVxufCBPYnJhY2VzIG9mIGludFxufCBPcGFyZW50aGVzaXNcbnwgT3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgT2JyYWNrZXRcbnwgT2JyYWNrZXRzIG9mIGludFxufCBQZXJjZW50XG58IFBlcmNlbnRzIG9mIGludFxufCBQbHVzXG58IFBsdXNzIG9mIGludFxufCBRdWVzdGlvblxufCBRdWVzdGlvbnMgb2YgaW50XG58IFF1b3RlXG58IFF1b3RlcyBvZiBpbnRcbnwgU2VtaWNvbG9uXG58IFNlbWljb2xvbnMgb2YgaW50XG58IFNsYXNoXG58IFNsYXNocyBvZiBpbnRcbnwgU3BhY2VcbnwgU3BhY2VzIG9mIGludFxufCBTdGFyXG58IFN0YXJzIG9mIGludFxufCBUYWJcbnwgVGFicyBvZiBpbnRcbnwgVGlsZGVcbnwgVGlsZGVzIG9mIGludFxufCBVbmRlcnNjb3JlXG58IFVuZGVyc2NvcmVzIG9mIGludFxufCBXb3JkIG9mIHN0cmluZ1xufCBUYWcgb2YgbmFtZSAqIGV4dGVuc2lvblxuXG5hbmQgZXh0ZW5zaW9uID0gPFxuICBwYXJzZXJfZXh0ZW5zaW9uIDpcbiAgICB0IC0+IHRvayBsaXN0IC0+IHRvayBsaXN0IC0+ICgodCAqIHRvayBsaXN0ICogdG9rIGxpc3QpIG9wdGlvbik7XG4gIHRvX3N0cmluZyA6IHN0cmluZ1xuPlxuXG50eXBlIGV4dGVuc2lvbnMgPSBleHRlbnNpb24gbGlzdFxuXG5sZXQgZW1wdHlfZXh0ZW5zaW9uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gTm9uZVxuICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuZW5kXG5cbmxldCByZWMgbm9ybWFsaXNlX21kIGwgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgZXByaW50ZiBcIihPTUQpIG5vcm1hbGlzZV9tZFxcbiUhXCI7XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO11cbiAgICB8IFtOTDtOTF1cbiAgICB8IFtOTF0gLT4gW11cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBOTDo6Tkw6Ok5MOjp0bCAtPiBsb29wIChOTDo6Tkw6OnRsKVxuICAgIHwgVGV4dCB0MTo6VGV4dCB0Mjo6dGwgLT4gbG9vcCAoVGV4dCh0MV50Mik6OnRsKVxuICAgIHwgTkw6OigoKFBhcmFncmFwaCBffEgxIF98SDIgX3xIMyBffEg0IF98SDUgX3xINiBfXG4gICAgICAgICAgICB8Q29kZV9ibG9jayBffE9sIF98VWwgX3xPbHAgX3xVbHAgXyk6Ol8pIGFzIHRsKSAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGhbVGV4dCBcIiBcIl06OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGgocCk6OnRsIC0+IFBhcmFncmFwaChsb29wIHApOjpsb29wIHRsXG4gICAgfCBIMSB2Ojp0bCAtPiBIMShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMiB2Ojp0bCAtPiBIMihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMyB2Ojp0bCAtPiBIMyhsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINCB2Ojp0bCAtPiBINChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINSB2Ojp0bCAtPiBINShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINiB2Ojp0bCAtPiBINihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBFbXBoIHY6OnRsIC0+IEVtcGgobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgQm9sZCB2Ojp0bCAtPiBCb2xkKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVsIHY6OnRsIC0+IFVsKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IE9sIHY6OnRsIC0+IE9sKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVscCB2Ojp0bCAtPiBVbHAoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2xwIHY6OnRsIC0+IE9scChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHY6OnRsIC0+IEJsb2NrcXVvdGUobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVXJsKGhyZWYsdix0aXRsZSk6OnRsIC0+IFVybChocmVmLChsb29wIHYpLHRpdGxlKTo6bG9vcCB0bFxuICAgIHwgVGV4dCBfXG4gICAgfCBDb2RlIF9cbiAgICB8IENvZGVfYmxvY2sgX1xuICAgIHwgQnJcbiAgICB8IEhyXG4gICAgfCBOTFxuICAgIHwgUmVmIF9cbiAgICB8IEltZ19yZWYgX1xuICAgIHwgSHRtbCBfXG4gICAgfCBIdG1sX2Jsb2NrIF9cbiAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgfCBSYXcgX1xuICAgIHwgUmF3X2Jsb2NrIF9cbiAgICB8IEltZyBfXG4gICAgfCBYIF8gYXMgdjo6dGwgLT4gdjo6bG9vcCB0bFxuICBpblxuICBsZXQgYSA9IGxvb3AgbCBpblxuICBsZXQgYiA9IGxvb3AgYSBpblxuICBpZiBhID0gYiB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgbm9ybWFsaXNlX21kIGJcblxuXG5cbmxldCBkdW1teV9YID1cbiAgWCAob2JqZWN0XG4gICAgbWV0aG9kIG5hbWUgPSBcImR1bW15XCJcbiAgICBtZXRob2QgdG9faHRtbCA/KGluZGVudD0wKSBfIF8gPSBOb25lXG4gICAgbWV0aG9kIHRvX3NleHByIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fdCBfID0gTm9uZVxuICBlbmQpXG5cblxubGV0IHJlYyB2aXNpdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFBhcmFncmFwaCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBQYXJhZ3JhcGgodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgxIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDIgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgyKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMyB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMyh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDQgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg0KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINSB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDUodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg2IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINih2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgRW1waCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gRW1waCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQm9sZCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQm9sZCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWwgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWwoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgT2wgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2woTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWxwIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVscChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2xwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJsb2NrcXVvdGUgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQmxvY2txdW90ZSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVXJsKGhyZWYsdix0aXRsZSkgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVybChocmVmLHZpc2l0IGYgdix0aXRsZSk6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBUZXh0IHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlX2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZ19yZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWwgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfY29tbWVudCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmF3IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXdfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZyAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFggIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQnI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSHI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBOTCBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gTkw6OnZpc2l0IGYgdGxcbiAgICBlbmRcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29kZV9zdHlsaXN0ID0gbGFuZzpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5cbmxldCBkZWZhdWx0X2xhbmd1YWdlID0gcmVmIFwiXCJcblxuXG5cbmxldCB0ZXh0X29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgWCBfIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgICBsb29wIHE7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBuYW1lKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbCBsIHwgT2wgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gaXRlbSAtPiBsb29wIGl0ZW07IEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nKSBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCAoVWxwIGwgfCBPbHAgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIGxvb3AgbDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bFxuICAgIHwgSDIgbWQgOjogdGxcbiAgICB8IEgzIG1kIDo6IHRsXG4gICAgfCBINCBtZCA6OiB0bFxuICAgIHwgSDUgbWQgOjogdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIG1kO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBkZWZhdWx0X2NvZGVfc3R5bGlzdCB+bGFuZyBjb2RlID0gY29kZVxuXG5sZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgbGV0IHJlYyBsb29wIGIgciA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgbG9vcCB0cnVlIHIgdGxcbiAgICB8IGU6OnRsIC0+XG4gICAgICBsb29wIGIgKGU6OnIpIHRsXG4gIGluXG4gIGxvb3AgZmFsc2UgW10gbFxuXG5sZXQgcmVtb3ZlX2xpbmtzIDogdCAtPiB0ID1cbiAgT21kX3JlcHJlc2VudGF0aW9uLnZpc2l0XG4gICAgKGZ1biBlIC0+XG4gICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCBVcmwoXywgdCwgXykgLT4gU29tZSB0XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIClcblxubGV0IHJlYyBodG1sX2FuZF9oZWFkZXJzX29mX21kXG4gICAgPyhyZW1vdmVfaGVhZGVyX2xpbmtzPWZhbHNlKVxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzOihjb2RlX3N0eWxlPWRlZmF1bHRfY29kZV9zdHlsaXN0KVxuICAgIG1kXG4gID1cbiAgbGV0IGlkcyA9IG9iamVjdCh0aGlzKVxuICAgIHZhbCBtdXRhYmxlIGlkcyA9IFN0cmluZ1NldC5hZGQgXCJcIiBTdHJpbmdTZXQuZW1wdHlcbiAgICBtZXRob2QgbWFuZ2xlIGlkID1cbiAgICAgIGxldCByZWMgbSBpID1cbiAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZCBpZHMgdGhlblxuICAgICAgICAgIGxldCBpZHggPSBpZiBpID4gMCB0aGVuIGlkXlwiX1wiXnN0cmluZ19vZl9pbnQgaSBlbHNlIGlkIGluXG4gICAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZHggaWRzIHRoZW5cbiAgICAgICAgICAgIG0gKGkrMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWR4IGlkcztcbiAgICAgICAgICAgICBpZHgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWQgaWRzO1xuICAgICAgICAgICBpZClcbiAgICAgIGluIG0gMFxuICBlbmQgaW5cbiAgbGV0IGVtcHR5IHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcbicgLT4gbG9vcCAoaSsxKVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ1ZVxuICAgIGluXG4gICAgbG9vcCAwXG4gIGluXG4gIGxldCByZW1vdmVfdHJhaWxpbmdfYmxhbmtzIHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCAwIHRoZW4gXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnfCdcXHQnfCdcXG4nIC0+XG4gICAgICAgICAgbG9vcCAocHJlZCBpKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSB0aGVuXG4gICAgICAgICAgICBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGhlYWRlcnMgPSByZWYgW10gaW5cbiAgbGV0IHJlYyBsb29wIGluZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGluZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OmluZGVudFxuICAgICAgICAgICAgICAgKGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSkgbWRcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCbG9ja3F1b3RlIHEgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBxO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2Jsb2NrcXVvdGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoaHJlZiwgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKFVybChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZixcbiAgICAgICAgICAgICAgICAgICAgIFtUZXh0KHRleHQpXSxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSlcbiAgICAgICAgICAgICAgICAgOjp0bClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudCAoZmFsbGJhY2sjdG9fdCk7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCByYyNnZXRfcmVmIG5hbWUgd2l0aFxuICAgICAgICAgICAgfCBTb21lKHNyYywgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKEltZyhodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0LFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgUGFyYWdyYXBoIFtdIDo6IHRsIC0+IGxvb3AgaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgICBpZiBlbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cD5cIjtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHJlbW92ZV90cmFpbGluZ19ibGFua3Mgcyk7XG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9wPlxcblwiO1xuICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aW1nIHNyYz0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgYWx0PSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIChCdWZmZXIuYWRkX3N0cmluZyBiIFwiIHRpdGxlPSdcIjtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBUZXh0IHQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDsgKilcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgRW1waCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxlbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9lbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCb2xkIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHN0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9zdHJvbmc+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKFVsIGx8T2wgbHxVbHAgbHxPbHAgbCBhcyBlKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICAgICB8IE9sIF98T2xwIF8gLT4gXCI8b2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPHVsPlwiKTtcbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxsaT5cIjtcbiAgICAgICAgICAgICAgICBsb29wIChpbmRlbnQrMikgbGk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvbGk+XCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGw7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjwvb2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPC91bD5cIik7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cHJlPjxjb2RlPlwiXG4gICAgICAgICAgZWxzZSBpZiBsYW5nID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8cHJlIGNsYXNzPSclcyc+PGNvZGUgY2xhc3M9JyVzJz5cIlxuICAgICAgICAgICAgICAhZGVmYXVsdF9sYW5ndWFnZSAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmcgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPjwvcHJlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IENvZGUobGFuZywgYykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxhbmcgPSBcIlwiICYmICFkZWZhdWx0X2xhbmd1YWdlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgIWRlZmF1bHRfbGFuZ3VhZ2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmc7XG4gICAgICAgICAgbGV0IG5ld19jID0gY29kZV9zdHlsZSB+bGFuZzpsYW5nIGMgaW5cbiAgICAgICAgICBpZiBjID0gbmV3X2MgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgbmV3X2M7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvY29kZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxici8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHIgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aHIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJhdyBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3X2Jsb2NrIHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgYXMgZSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiIC8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGJvZHkgPSBbXSAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIHRoZW5cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBIdG1sX2NvbW1lbnQgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHMgPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgcyBpblxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YSBocmVmPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZik7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIidcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2E+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgxIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgxIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgxIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDE+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgyIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgyIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgyIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDI+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgzIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgzIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgzIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDM+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg0IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg0IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg0IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDQ+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg1IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg1IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg1IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg2IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg2IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg2IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDY+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgTkwgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIG5sMmJyIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgaW5cbiAgbG9vcCAwIG1kO1xuICBCdWZmZXIuY29udGVudHMgYiwgTGlzdC5yZXYgIWhlYWRlcnNcblxuYW5kIHN0cmluZ19vZl9hdHRycyBhdHRycyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCAoYSwgU29tZSB2KSAtPlxuICAgICAgICBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1xcJycpIHRoZW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPSclcydcIiBhIHZcbiAgICAgICAgZWxzZSBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1wiJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgICBlbHNlXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgKCogaWYgaHRtbDQgdGhlbiAqKVxuICAgICAgICAoKiAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgYSAqKVxuICAgICAgICAoKiBlbHNlICopXG4gICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JydcIiBhICgqIEhUTUw1ICopXG4gICAgKVxuICAgIGF0dHJzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5hbmQgaHRtbF9vZl9tZFxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzXG4gICAgbWRcbiAgPVxuICBmc3QgKGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciA/Y3MgbWQpXG5hbmQgaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZCA9XG4gIHNuZCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZClcblxuXG5sZXQgcmVjIHNleHByX29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgbG9vcCB0O1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBtYXRjaCB4I3RvX3NleHByIHNleHByX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQmxvY2txdW90ZVwiO1xuICAgICAgICBsb29wIHE7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJlZiAlUyAlUylcIiBuYW1lIHRleHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEltZ19yZWYgJVMgJVMpXCIgbmFtZSBhbHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFBhcmFncmFwaFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nICVTICVTICVTKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVGV4dCAlU1wiIHQ7XG4gICAgICAgIGxldCByZWMgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIiAlU1wiIHQ7XG4gICAgICAgICAgICBmIHRsXG4gICAgICAgICAgfCB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRsID0gZiB0bCBpblxuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihFbXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCb2xkXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9sIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9sXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpOyBicHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVWwgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihPbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxwXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpO2JwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihDb2RlICVTKVwiIGM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGVfYmxvY2sgJXMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJhdyAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3X2Jsb2NrICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9ibG9jayAlcyAlcyBcIiB0YWduYW1lIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWxfY29tbWVudCAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVybCAlUyAlUyAlUylcIiBocmVmIChodG1sX29mX21kIHMpIHRpdGxlO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgxXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDJcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIM1wiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg0XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDVcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKE5MKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICogMikgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnLicgYXMgYyAtPlxuICAgICAgICBpZiBpID4gMCAmJlxuICAgICAgICAgICBtYXRjaCBzLltpLTFdIHdpdGhcbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnXG4gICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICctJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIChzLltpKzFdID0gJyAnfHxzLltpKzFdID0gJy0nKSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnKycgYXMgYyAtPlxuICAgICAgICBpZiAoaSA9IDAgfHwgbWF0Y2ggcy5baS0xXSB3aXRoICcgJ3wgJ1xcbicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgJiYgKGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICchJyBhcyBjIC0+XG4gICAgICAgIGlmIGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJ1snIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJzwnIGFzIGMgLT5cbiAgICAgICAgaWYgaSA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxICYmXG4gICAgICAgICAgICAgKG1hdGNoIHMuW2krMV0gd2l0aCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPicgYXMgYyAtPlxuICAgICAgICBpZiBpID0gMCB8fFxuICAgICAgICAgICAgIChtYXRjaCBzLltpLTFdIHdpdGggJyAnIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyMnIGFzIGMgLT5cbiAgICAgICAgIGlmIGkgPSAwIHx8IHMuW2ktMV0gPSAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJ1xcXFwnIHwgJ1snIHwgJ10nIHwgJygnIHwgJyknIHwgJ2AnIHwgJyonIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgIGRvbmU7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJlYyBtYXJrZG93bl9vZl9tZCBtZCA9XG4gIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKVxcbiUhXCIgKHNleHByX29mX21kIG1kKTtcbiAgbGV0IHF1b3RlID8oaW5kZW50PTApIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBsb29wIG5sIGkgPVxuICAgICAgaWYgaSA8IGwgdGhlblxuICAgICAgICBiZWdpblxuICAgICAgICAgIGlmIG5sICYmIGkgPCBsIC0gMSB0aGVuXG4gICAgICAgICAgICAoZm9yIGkgPSAxIHRvIGluZGVudCBkb1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJyAnXG4gICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPiBcIik7XG4gICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBpbiBsb29wIHRydWUgMFxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGFkZF9zcGFjZXMgbiA9IGZvciBpID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICcgJyBkb25lIGluXG4gIGxldCByZWZlcmVuY2VzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wID8oZnN0X3BfaW5fbGk9dHJ1ZSkgPyhpc19pbl9saXN0PWZhbHNlKSBsaXN0X2luZGVudCBsID1cbiAgICAoKiBbbGlzdF9pbmRlbnQ6IGludF0gaXMgdGhlIGluZGVudGF0aW9uIGxldmVsIGluIG51bWJlciBvZiBzcGFjZXMuICopXG4gICAgKCogW2lzX2luX2xpc3Q6IGJvb2xdIGlzIG5lY2Vzc2FyeSB0byBrbm93IGlmIHdlIGFyZSBpbnNpZGUgYSBwYXJhZ3JhcGhcbiAgICAgICB3aGljaCBpcyBpbnNpZGUgYSBsaXN0IGl0ZW0gYmVjYXVzZSB0aG9zZSBuZWVkIHRvIGJlIGluZGVudGVkISAqKVxuICAgIGxldCBsb29wID8oZnN0X3BfaW5fbGk9ZnN0X3BfaW5fbGkpID8oaXNfaW5fbGlzdD1pc19pbl9saXN0KSBsaXN0X2luZGVudCBsID1cbiAgICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZnN0X3BfaW5fbGkgfmlzX2luX2xpc3Q6aXNfaW5fbGlzdCBsaXN0X2luZGVudCBsXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT4gbG9vcCBsaXN0X2luZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChxdW90ZSB+aW5kZW50Omxpc3RfaW5kZW50IChtYXJrZG93bl9vZl9tZCBxKSk7XG4gICAgICBpZiB0bCA8PiBbXSB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIGlmICFyZWZlcmVuY2VzID0gTm9uZSB0aGVuIHJlZmVyZW5jZXMgOj0gU29tZSByYztcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCAoUmF3KGZhbGxiYWNrI3RvX3N0cmluZyk6OnRsKVxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICBpZiBpc19pbl9saXN0IHRoZW5cbiAgICAgICAgaWYgZnN0X3BfaW5fbGkgdGhlblxuICAgICAgICAgIGFkZF9zcGFjZXMgKGxpc3RfaW5kZW50LTIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZmFsc2UgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiXFxuXFxuXCI7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIhWyVzXSglcyBcXFwiJXNcXFwiKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyB0KTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIGM7XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIi0gXCI7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbHAgbCA6OiB0bCAtPlxuICAgICAgbGV0IGMgPSByZWYgMCBpbiAoKiBkb24ndCB1c2UgTGlzdC5pdGVyaSBiZWNhdXNlIGl0J3Mgbm90IGluIDMuMTIgKilcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nXG4gICAgICAgIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgIGluY3IgYztcbiAgICAgICAgYnByaW50ZiBiIFwiJWQuIFwiICFjO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICApIGw7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgYnByaW50ZiBiIFwiKyBcIjtcbiAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICgqIFBhcmFncmFwaHMgPT4gTm8gbmVlZCBvZiAnXFxuJyAqKVxuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgfCAoSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6X1xuICAgICAgfCBOTDo6KEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgXyk6Ol8gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbidcbiAgICAgIHwgXyAtPiAoKVxuICAgICAgZW5kO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZShfbGFuZywgYykgOjogdGwgLT4gKCogRklYTUUgKilcbiAgICAgIGxldCBuID0gKCogY29tcHV0ZSBob3cgbWFueSBiYWNrcXVvdGVzIHdlIG5lZWQgdG8gdXNlICopXG4gICAgICAgIGxldCBmaWx0ZXIgKG46aW50KSAoczppbnQgbGlzdCkgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyB4IGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICB8IFtdIC0+IHgrMVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyB4IChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgKG1heCBiIHgpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFsxOzI7Mzs0OzU7Njs3Ozg7OTsxMF0gMCAwIDBcbiAgICAgIGluXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBpZiBjLlswXSA9ICdgJyB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiBjO1xuICAgICAgICAgIGlmIGMuW1N0cmluZy5sZW5ndGggYyAtIDFdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciBuIHMgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBiIGkgPVxuICAgICAgICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIGZpbHRlciBiIHMgd2l0aFxuICAgICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICAgIHwgW10gLT4gMFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyAoc3VjYyBiKSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+IGxvb3AgKGZpbHRlciBiIHMpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFszOzQ7NTs2Ozc7ODs5OzEwXSAwIDBcbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0X2luZGVudGVkX2Jsb2NrIG4gcyA9XG4gICAgICAgIGxldCByZWMgbG9vcCBwIGkgPVxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnICcpO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgaW4gbG9vcCAnXFxuJyAwXG4gICAgICBpblxuICAgICAgICBpZiBuID0gMCB0aGVuICAoKiBGSVhNRSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAoKiBjYXNlIHdoZXJlIHdlIGNhbid0IHVzZSBiYWNrcXVvdGVzICopXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAoNCtsaXN0X2luZGVudCkgYztcbiAgICAgICAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpXG4gICAgICAgICAgICAgIChpZiBsYW5nID0gXCJcIiB0aGVuICFkZWZhdWx0X2xhbmd1YWdlIGVsc2UgbGFuZyk7XG4gICAgICAgICAgICBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgKGxpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXFxuXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBlbmQ7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiogKiAqXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmF3X2Jsb2NrIHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgOjogdGxcbiAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgaWYgYSA9PSBhdHRycyB0aGVuXG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sX29mX21kIGJvZHkpO1xuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IChIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSk6OnRsIC0+XG4gICAgICBsZXQgbmVlZHNfbmV3bGluZXMgPVxuICAgICAgICBtYXRjaCB0bCB3aXRoXG4gICAgICAgIHwgTkwgOjogUGFyYWdyYXBoIHAgOjogX1xuICAgICAgICB8IFBhcmFncmFwaCBwIDo6IF8gLT4gcCA8PiBbXVxuICAgICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgICB8IFVsIF8gfCBPbCBfIHwgVWxwIF8gfCBPbHAgXyB8IENvZGUgKF8sIF8pIHwgQ29kZV9ibG9jayAoXywgXylcbiAgICAgICAgICB8IFRleHQgXyB8IEVtcGggXyB8IEJvbGQgXyB8IEJyIHxIciB8IFVybCAoXywgXywgXylcbiAgICAgICAgICB8IFJlZiAoXywgXywgXywgXykgfCBJbWdfcmVmIChfLCBfLCBfLCBfKVxuICAgICAgICAgIHwgSHRtbCAoXywgXywgXylcbiAgICAgICAgICB8IEJsb2NrcXVvdGUgXyB8IEltZyAoXywgXywgXykpIDo6IF8gLT4gdHJ1ZVxuICAgICAgICB8ICggSHRtbF9ibG9jayAoXywgXywgXykgfCBIdG1sX2NvbW1lbnQgX1xuICAgICAgICAgIHwgUmF3IF98UmF3X2Jsb2NrIF8pIDo6IF8tPiBmYWxzZVxuICAgICAgICB8IFggXyA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgTkwgOjogXyAtPiBmYWxzZVxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAoXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICAgICAgaWYgbmVlZHNfbmV3bGluZXMgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCI7XG4gICAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgICAgICApXG4gICAgICBlbHNlXG4gICAgICAgIChcbiAgICAgICAgICBsZXQgYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgIGlmIHRpdGxlID0gXCJcIiB0aGVuXG4gICAgICAgIGJwcmludGYgYiBcIlslc10oJXMpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWZcbiAgICAgIGVsc2VcbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcyBcXFwiJXNcXFwiKVwiIChtYXJrZG93bl9vZl9tZCBzKSBocmVmIHRpdGxlO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDEgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA9IDFcbiAgICAgIHx8IChCdWZmZXIubGVuZ3RoIGIgPiAxICYmXG4gICAgICAgICAgbm90KEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPSAnXFxuJ1xuICAgICAgICAgICAgICAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDIpID0gJ1xcbicpKVxuICAgICAgdGhlblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIDAgbWQ7XG4gICAgYmVnaW4gbWF0Y2ggIXJlZmVyZW5jZXMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biAobmFtZSwgKHVybCwgdGl0bGUpKSAtPlxuICAgICAgICAgICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxuXCIgbmFtZSB1cmxcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxcIiVzXFxcIlxcblwiIG5hbWUgdXJsIHRpdGxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICByI2dldF9hbGxcbiAgICBlbmQ7XG4gICAgbGV0IHJlcyA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKSA9PiAlU1xcbiUhXCJcbiAgICAgICAgKHNleHByX29mX21kIG1kKSByZXM7XG4gICAgcmVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEltcGxlbWVudGF0aW9uIG5vdGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICAqIC0gVGhpcyBtb2R1bGUgc2hvdWxkIGRlcGVuZCBvbiBPQ2FtbCdzIHN0YW5kYXJkIGxpYnJhcnkgb25seSBhbmRcbiAgICogc2hvdWxkIGJlIGFzICdwdXJlIE9DYW1sJyAoaS5lLiBkZXBlbmQgYXMgbGVhc3QgYXMgcG9zc2libGUgb25cbiAgICogZXh0ZXJuYWwgdG9vbHMpIGFzIHBvc3NpYmxlLlxuXG4gICAqIC0gYHdoaWxlJyBsb29wcyBhcmUgc29tZXRpbWVzIHByZWZlcnJlZCB0byByZWN1cnNpb24gYmVjYXVzZSB0aGlzXG4gICAqIG1heSBiZSB1c2VkIG9uIHN5c3RlbXMgd2hlcmUgdGFpbCByZWN1cnNpb24gaXMgbm90IHdlbGxcbiAgICogc3VwcG9ydGVkLiAoSSB0cmllZCB0byB3cml0ZSBcIndoaWxlXCIgYXMgb2Z0ZW4gYXMgcG9zc2libGUsIGJ1dCBpdFxuICAgKiB0dXJuZWQgb3V0IHRoYXQgaXQgd2FzIHByZXR0eSBpbmNvbnZlbmllbnQsIHNvIEkgZG8gdXNlXG4gICAqIHJlY3Vyc2lvbi4gIFdoZW4gSSBoYXZlIHRpbWUsIEknbGwgZG8gc29tZSB0ZXN0cyBhbmQgc2VlIGlmIElcbiAgICogbmVlZCB0byBjb252ZXJ0IHJlY3Vyc2l2ZSBsb29wcyBpbnRvIGl0ZXJhdGl2ZSBsb29wcy4gU29ycnkgaWYgaXRcbiAgICogbWFrZXMgaXQgaGFyZGVyIHRvIHJlYWQuKVxuXG4qKVxuXG4oKiBjbGFzcyB0eXBlIHRhZyA9IG9iamVjdCBtZXRob2QgaXNfbWUgOiAnYS4gJ2EgLT4gYm9vbCBlbmQgKilcblxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cblxudHlwZSB0b2tlbiA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2tcbnR5cGUgdCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuXG5sZXQgc3RyaW5nX29mX3Rva2VuID0gZnVuY3Rpb25cbiAgfCBUYWcgKG5hbWUsIG8pIC0+XG4gICAgaWYgT21kX3V0aWxzLmRlYnVnIHRoZW4gXCJUQUcoXCJebmFtZV5cIilcIiBeIG8jdG9fc3RyaW5nIGVsc2UgbyN0b19zdHJpbmdcbiAgfCBBbXBlcnNhbmQgLT4gXCImXCJcbiAgfCBBbXBlcnNhbmRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJidcbiAgfCBBdCAtPiBcIkBcIlxuICB8IEF0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ0AnXG4gIHwgQmFja3F1b3RlIC0+IFwiYFwiXG4gIHwgQmFja3F1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ2AnXG4gIHwgQmFja3NsYXNoIC0+IFwiXFxcXFwiXG4gIHwgQmFja3NsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcXFwnXG4gIHwgQmFyIC0+IFwifFwiXG4gIHwgQmFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ3wnXG4gIHwgQ2FyZXQgLT4gXCJeXCJcbiAgfCBDYXJldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdeJ1xuICB8IENicmFjZSAtPiBcIn1cIlxuICB8IENicmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd9J1xuICB8IENvbG9uIC0+IFwiOlwiXG4gIHwgQ29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOidcbiAgfCBDb21tYSAtPiBcIixcIlxuICB8IENvbW1hcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJywnXG4gIHwgQ3BhcmVudGhlc2lzIC0+IFwiKVwiXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyknXG4gIHwgQ2JyYWNrZXQgLT4gXCJdXCJcbiAgfCBDYnJhY2tldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICddJ1xuICB8IERvbGxhciAtPiBcIiRcIlxuICB8IERvbGxhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICckJ1xuICB8IERvdCAtPiBcIi5cIlxuICB8IERvdHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcuJ1xuICB8IERvdWJsZXF1b3RlIC0+IFwiXFxcIlwiXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXCInXG4gIHwgRXhjbGFtYXRpb24gLT4gXCIhXCJcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICchJ1xuICB8IEVxdWFsIC0+IFwiPVwiXG4gIHwgRXF1YWxzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPSdcbiAgfCBHcmVhdGVydGhhbiAtPiBcIj5cIlxuICB8IEdyZWF0ZXJ0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz4nXG4gIHwgSGFzaCAtPiBcIiNcIlxuICB8IEhhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnIydcbiAgfCBMZXNzdGhhbiAtPiBcIjxcIlxuICB8IExlc3N0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzwnXG4gIHwgTWludXMgLT4gXCItXCJcbiAgfCBNaW51c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICctJ1xuICB8IE5ld2xpbmUgLT4gXCJcXG5cIlxuICB8IE5ld2xpbmVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxuJ1xuICB8IE51bWJlciBzIC0+IHNcbiAgfCBPYnJhY2UgLT4gXCJ7XCJcbiAgfCBPYnJhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAneydcbiAgfCBPcGFyZW50aGVzaXMgLT4gXCIoXCJcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKCdcbiAgfCBPYnJhY2tldCAtPiBcIltcIlxuICB8IE9icmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1snXG4gIHwgUGVyY2VudCAtPiBcIiVcIlxuICB8IFBlcmNlbnRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJSdcbiAgfCBQbHVzIC0+IFwiK1wiXG4gIHwgUGx1c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcrJ1xuICB8IFF1ZXN0aW9uIC0+IFwiP1wiXG4gIHwgUXVlc3Rpb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPydcbiAgfCBRdW90ZSAtPiBcIidcIlxuICB8IFF1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcJydcbiAgfCBTZW1pY29sb24gLT4gXCI7XCJcbiAgfCBTZW1pY29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOydcbiAgfCBTbGFzaCAtPiBcIi9cIlxuICB8IFNsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy8nXG4gIHwgU3BhY2UgLT4gXCIgXCJcbiAgfCBTcGFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcgJ1xuICB8IFN0YXIgLT4gXCIqXCJcbiAgfCBTdGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyonXG4gIHwgVGFiIC0+IFwiICAgIFwiXG4gIHwgVGFicyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKCgyK24pKjQpICcgJ1xuICB8IFRpbGRlIC0+IFwiflwiXG4gIHwgVGlsZGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfidcbiAgfCBVbmRlcnNjb3JlIC0+IFwiX1wiXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdfJ1xuICB8IFdvcmQgcyAtPiBzXG5cblxubGV0IHNpemVfYW5kX25ld2xpbmVzID0gZnVuY3Rpb25cbiAgfCBUYWcgXyAtPiAoMCwgMClcbiAgfCBBbXBlcnNhbmQgfCBBdCB8IEJhY2txdW90ZSB8IEJhY2tzbGFzaCB8IEJhciB8IENhcmV0IHwgQ2JyYWNlXG4gIHwgQ29sb24gfCBDb21tYSB8IENwYXJlbnRoZXNpcyB8IENicmFja2V0IHwgRG9sbGFyIHwgRG90XG4gIHwgRG91YmxlcXVvdGUgfCBFeGNsYW1hdGlvbiB8IEVxdWFsIHwgR3JlYXRlcnRoYW4gfCBIYXNoIHwgTGVzc3RoYW5cbiAgfCBNaW51cyB8IE9icmFjZSB8IE9wYXJlbnRoZXNpcyB8IE9icmFja2V0IHwgUGVyY2VudCB8IFBsdXNcbiAgfCBRdWVzdGlvbiB8IFF1b3RlIHwgU2VtaWNvbG9uIHwgU2xhc2ggfCBTcGFjZSB8IFN0YXIgfCBUYWJcbiAgfCBUaWxkZSB8IFVuZGVyc2NvcmUgLT4gKDEsIDApXG4gIHwgQW1wZXJzYW5kcyB4IHwgQXRzIHggfCBCYWNrcXVvdGVzIHggfCBCYWNrc2xhc2hzIHggfCBCYXJzIHggfCBDYXJldHMgeFxuICB8IENicmFjZXMgeCB8IENvbG9ucyB4IHwgQ29tbWFzIHggfCBDcGFyZW50aGVzaXNzIHggfCBDYnJhY2tldHMgeFxuICB8IERvbGxhcnMgeCB8IERvdHMgeFxuICB8IERvdWJsZXF1b3RlcyB4IHwgRXhjbGFtYXRpb25zIHggfCBFcXVhbHMgeCB8IEdyZWF0ZXJ0aGFucyB4IHwgSGFzaHMgeFxuICB8IExlc3N0aGFucyB4XG4gIHwgTWludXNzIHggfCBPYnJhY2VzIHggfCBPcGFyZW50aGVzaXNzIHggfCBPYnJhY2tldHMgeCB8IFBlcmNlbnRzIHggfCBQbHVzcyB4XG4gIHwgUXVlc3Rpb25zIHggfCBRdW90ZXMgeCB8IFNlbWljb2xvbnMgeCB8IFNsYXNocyB4IHwgU3BhY2VzIHggfCBTdGFycyB4XG4gIHwgVGFicyB4XG4gIHwgVGlsZGVzIHggfCBVbmRlcnNjb3JlcyB4IC0+ICgyK3gsIDApXG4gIHwgTmV3bGluZSAtPiAoMCwgMSlcbiAgfCBOZXdsaW5lcyB4IC0+ICgwLCAyK3gpXG4gIHwgTnVtYmVyIHMgfCBXb3JkIHMgLT4gKFN0cmluZy5sZW5ndGggcywgMClcblxubGV0IGxlbmd0aCB0ID1cbiAgbGV0IGMsIG5sID0gc2l6ZV9hbmRfbmV3bGluZXMgdCBpblxuICBjICsgbmxcblxubGV0IHNwbGl0X2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBBbXBlcnNhbmRzIG4gLT4gQW1wZXJzYW5kLCAoaWYgbiA+IDAgdGhlbiBBbXBlcnNhbmRzKG4tMSkgZWxzZSBBbXBlcnNhbmQpXG4gIHwgQXRzIG4gLT4gQXQsIChpZiBuID4gMCB0aGVuIEF0cyhuLTEpIGVsc2UgQXQpXG4gIHwgQmFja3F1b3RlcyBuIC0+IEJhY2txdW90ZSwgKGlmIG4gPiAwIHRoZW4gQmFja3F1b3RlcyhuLTEpIGVsc2UgQmFja3F1b3RlKVxuICB8IEJhY2tzbGFzaHMgbiAtPiBCYWNrc2xhc2gsIChpZiBuID4gMCB0aGVuIEJhY2tzbGFzaHMobi0xKSBlbHNlIEJhY2tzbGFzaClcbiAgfCBCYXJzIG4gLT4gQmFyLCAoaWYgbiA+IDAgdGhlbiBCYXJzKG4tMSkgZWxzZSBCYXIpXG4gIHwgQ2FyZXRzIG4gLT4gQ2FyZXQsIChpZiBuID4gMCB0aGVuIENhcmV0cyhuLTEpIGVsc2UgQ2FyZXQpXG4gIHwgQ2JyYWNlcyBuIC0+IENicmFjZSwgKGlmIG4gPiAwIHRoZW4gQ2JyYWNlcyhuLTEpIGVsc2UgQ2JyYWNlKVxuICB8IENvbG9ucyBuIC0+IENvbG9uLCAoaWYgbiA+IDAgdGhlbiBDb2xvbnMobi0xKSBlbHNlIENvbG9uKVxuICB8IENvbW1hcyBuIC0+IENvbW1hLCAoaWYgbiA+IDAgdGhlbiBDb21tYXMobi0xKSBlbHNlIENvbW1hKVxuICB8IENwYXJlbnRoZXNpc3MgbiAtPiBDcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIENwYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzKVxuICB8IENicmFja2V0cyBuIC0+IENicmFja2V0LCAoaWYgbiA+IDAgdGhlbiBDYnJhY2tldHMobi0xKSBlbHNlIENicmFja2V0KVxuICB8IERvbGxhcnMgbiAtPiBEb2xsYXIsIChpZiBuID4gMCB0aGVuIERvbGxhcnMobi0xKSBlbHNlIERvbGxhcilcbiAgfCBEb3RzIG4gLT4gRG90LCAoaWYgbiA+IDAgdGhlbiBEb3RzKG4tMSkgZWxzZSBEb3QpXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gRG91YmxlcXVvdGUsIChpZiBuID4gMCB0aGVuIERvdWJsZXF1b3RlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRG91YmxlcXVvdGUpXG4gIHwgRXhjbGFtYXRpb25zIG4gLT4gRXhjbGFtYXRpb24sIChpZiBuID4gMCB0aGVuIEV4Y2xhbWF0aW9ucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb24pXG4gIHwgRXF1YWxzIG4gLT4gRXF1YWwsIChpZiBuID4gMCB0aGVuIEVxdWFscyhuLTEpIGVsc2UgRXF1YWwpXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW4sIChpZiBuID4gMCB0aGVuIEdyZWF0ZXJ0aGFucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW4pXG4gIHwgSGFzaHMgbiAtPiBIYXNoLCAoaWYgbiA+IDAgdGhlbiBIYXNocyhuLTEpIGVsc2UgSGFzaClcbiAgfCBMZXNzdGhhbnMgbiAtPiBMZXNzdGhhbiwgKGlmIG4gPiAwIHRoZW4gTGVzc3RoYW5zKG4tMSkgZWxzZSBMZXNzdGhhbilcbiAgfCBNaW51c3MgbiAtPiBNaW51cywgKGlmIG4gPiAwIHRoZW4gTWludXNzKG4tMSkgZWxzZSBNaW51cylcbiAgfCBOZXdsaW5lcyBuIC0+IE5ld2xpbmUsIChpZiBuID4gMCB0aGVuIE5ld2xpbmVzKG4tMSkgZWxzZSBOZXdsaW5lKVxuICB8IE9icmFjZXMgbiAtPiBPYnJhY2UsIChpZiBuID4gMCB0aGVuIE9icmFjZXMobi0xKSBlbHNlIE9icmFjZSlcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gT3BhcmVudGhlc2lzLCAoaWYgbiA+IDAgdGhlbiBPcGFyZW50aGVzaXNzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpcylcbiAgfCBPYnJhY2tldHMgbiAtPiBPYnJhY2tldCwgKGlmIG4gPiAwIHRoZW4gT2JyYWNrZXRzKG4tMSkgZWxzZSBPYnJhY2tldClcbiAgfCBQZXJjZW50cyBuIC0+IFBlcmNlbnQsIChpZiBuID4gMCB0aGVuIFBlcmNlbnRzKG4tMSkgZWxzZSBQZXJjZW50KVxuICB8IFBsdXNzIG4gLT4gUGx1cywgKGlmIG4gPiAwIHRoZW4gUGx1c3Mobi0xKSBlbHNlIFBsdXMpXG4gIHwgUXVlc3Rpb25zIG4gLT4gUXVlc3Rpb24sIChpZiBuID4gMCB0aGVuIFF1ZXN0aW9ucyhuLTEpIGVsc2UgUXVlc3Rpb24pXG4gIHwgUXVvdGVzIG4gLT4gUXVvdGUsIChpZiBuID4gMCB0aGVuIFF1b3RlcyhuLTEpIGVsc2UgUXVvdGUpXG4gIHwgU2VtaWNvbG9ucyBuIC0+IFNlbWljb2xvbiwgKGlmIG4gPiAwIHRoZW4gU2VtaWNvbG9ucyhuLTEpIGVsc2UgU2VtaWNvbG9uKVxuICB8IFNsYXNocyBuIC0+IFNsYXNoLCAoaWYgbiA+IDAgdGhlbiBTbGFzaHMobi0xKSBlbHNlIFNsYXNoKVxuICB8IFNwYWNlcyBuIC0+IFNwYWNlLCAoaWYgbiA+IDAgdGhlbiBTcGFjZXMobi0xKSBlbHNlIFNwYWNlKVxuICB8IFN0YXJzIG4gLT4gU3RhciwgKGlmIG4gPiAwIHRoZW4gU3RhcnMobi0xKSBlbHNlIFN0YXIpXG4gIHwgVGFicyBuIC0+IFRhYiwgKGlmIG4gPiAwIHRoZW4gVGFicyhuLTEpIGVsc2UgVGFiKVxuICB8IFRpbGRlcyBuIC0+IFRpbGRlLCAoaWYgbiA+IDAgdGhlbiBUaWxkZXMobi0xKSBlbHNlIFRpbGRlKVxuICB8IFVuZGVyc2NvcmVzIG4gLT4gVW5kZXJzY29yZSwgKGlmIG4gPiAwIHRoZW4gVW5kZXJzY29yZXMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2UgfCBDb2xvblxuICB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3QgfCBEb3VibGVxdW90ZVxuICB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhbiB8IE1pbnVzXG4gIHwgTmV3bGluZSB8IE51bWJlciBfIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50XG4gIHwgUGx1cyB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSB8IFRhZyBfIHwgV29yZCBfIC0+XG4gICAgIGludmFsaWRfYXJnIFwiT21kX2xleGVyLnNwbGl0X2ZpcnN0XCJcblxubW9kdWxlIHR5cGUgSW5wdXQgPVxuc2lnXG4gIHR5cGUgdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXJcbiAgdmFsIHN1YiA6IHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBMZXgoSSA6IElucHV0KSA6XG5zaWdcbiAgdmFsIGxleCA6IEkudCAtPiB0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBsZXggKHMgOiBJLnQpID1cbiAgICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsID0gSS5sZW5ndGggcyBpblxuICAgIGxldCByY291bnQgYyA9XG4gICAgICAoKiBbcmNvdW50IGNdIHJldHVybnMgdGhlIG51bWJlciBvZiBpbW1lZGlhdGUgY29uc2VjdXRpdmVcbiAgICAgICAgIG9jY3VycmVuY2VzIG9mIFtjXS4gIEJ5IHNpZGUtZWZmZWN0LCBpdCBpbmNyZWFzZXMgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgY291bnRlciBbaV0uICopXG4gICAgICBsZXQgcmVjIGxvb3AgciA9XG4gICAgICAgIGlmICFpID0gbCB0aGVuIHJcbiAgICAgICAgZWxzZSBpZiBJLmdldCBzICFpID0gYyB0aGVuIChpbmNyIGk7IGxvb3AgKHIrMSkpXG4gICAgICAgIGVsc2UgclxuICAgICAgaW5cbiAgICAgIGxvb3AgMVxuICAgIGluXG4gICAgbGV0IHdvcmQgKCkgPVxuICAgICAgbGV0IHN0YXJ0ID0gIWkgaW5cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgICAgIFdvcmQoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJydcbiAgICAgICAgICAgIHwgJ1wiJyB8ICdcXFxcJyB8ICdfJyB8ICdbJyB8ICddJyB8ICd7JyB8ICd9JyB8ICcoJyB8ICcpJyB8ICc6J1xuICAgICAgICAgICAgfCAnOycgfCAnPicgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLydcbiAgICAgICAgICAgIHwgJyQnIHwgJyUnIHwgJyEnIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgICAgfCBjIC0+IGluY3IgaTsgbG9vcCgpXG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGxvb3AoKVxuICAgIGluXG4gICAgbGV0IG1heWJlX251bWJlciAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgd2hpbGVcbiAgICAgICAgIWkgPCBsICYmXG4gICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGRvXG4gICAgICAgIGluY3IgaVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFpID0gbCB0aGVuXG4gICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyB8ICcjJyB8ICcqJyB8ICctJyB8ICcrJyB8ICdgJyB8ICdcXCcnIHwgJ1wiJ1xuICAgICAgICAgIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonIHwgJzsnIHwgJz4nXG4gICAgICAgICAgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLycgfCAnJCcgfCAnJScgfCAnISdcbiAgICAgICAgICB8ICc/JyB8ICc9JyAtPlxuICAgICAgICAgICAgICBOdW1iZXIoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaSA6PSBzdGFydDtcbiAgICAgICAgICAgICAgd29yZCgpXG4gICAgICAgIGVuZFxuICAgIGluXG5cbiAgICBsZXQgbl9vY2MgYyA9IGluY3IgaTsgcmNvdW50IGMgaW5cblxuICAgIHdoaWxlICFpIDwgbCBkb1xuICAgICAgbGV0IGMgPSBJLmdldCBzICFpIGluXG4gICAgICBsZXQgdyA9IG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3BhY2UgZWxzZSBTcGFjZXMgKG4tMilcbiAgICAgICAgfCAnXFx0JyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZXMoMikgZWxzZSBTcGFjZXMoNCpuLTIpXG4gICAgICAgIHwgJ1xcbicgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzIChuLTIpXG4gICAgICAgIHwgJ1xccicgLT4gKCogZWxpbWluYXRpbmcgXFxyIGJ5IGNvbnZlcnRpbmcgYWxsIHN0eWxlcyB0byB1bml4IHN0eWxlICopXG4gICAgICAgICAgaW5jciBpO1xuICAgICAgICAgIGxldCByZWMgY291bnRfcm4geCA9XG4gICAgICAgICAgICBpZiAhaSA8IGwgJiYgSS5nZXQgcyAoIWkpID0gJ1xcbicgdGhlblxuICAgICAgICAgICAgICBpZiAhaSArIDEgPCBsICYmIEkuZ2V0IHMgKCFpKzEpID0gJ1xccicgdGhlblxuICAgICAgICAgICAgICAgIChpIDo9ICFpICsgMjsgY291bnRfcm4gKHgrMSkpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBybiA9IDEgKyBjb3VudF9ybiAwIGluXG4gICAgICAgICAgaWYgcm4gPSAxIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIG5fb2NjIGMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IE5ld2xpbmVcbiAgICAgICAgICAgIHwgeCAtPiBhc3NlcnQoeD49Mik7IE5ld2xpbmVzKHgtMilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoYXNzZXJ0KHJuPj0yKTtOZXdsaW5lcyhybi0yKSlcbiAgICAgICAgfCAnIycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEhhc2ggZWxzZSBIYXNocyAobi0yKVxuICAgICAgICB8ICcqJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3RhciBlbHNlIFN0YXJzIChuLTIpXG4gICAgICAgIHwgJy0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBNaW51cyBlbHNlIE1pbnVzcyAobi0yKVxuICAgICAgICB8ICcrJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGx1cyBlbHNlIFBsdXNzIChuLTIpXG4gICAgICAgIHwgJ2AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrcXVvdGUgZWxzZSBCYWNrcXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1xcJycgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUXVvdGUgZWxzZSBRdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXCInICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3VibGVxdW90ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFxcXCcgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFja3NsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEJhY2tzbGFzaHMgKG4tMilcbiAgICAgICAgfCAnXycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFVuZGVyc2NvcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVW5kZXJzY29yZXMgKG4tMilcbiAgICAgICAgfCAnWycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9icmFja2V0cyAobi0yKVxuICAgICAgICB8ICddJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNrZXQgZWxzZSBDYnJhY2tldHMgKG4tMilcbiAgICAgICAgfCAneycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFjZSBlbHNlIE9icmFjZXMgKG4tMilcbiAgICAgICAgfCAnfScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENicmFjZSBlbHNlIENicmFjZXMgKG4tMilcbiAgICAgICAgfCAnKCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9wYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJyknICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzcyAobi0yKVxuICAgICAgICB8ICc6JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29sb24gZWxzZSBDb2xvbnMgKG4tMilcbiAgICAgICAgfCAnOycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNlbWljb2xvbiBlbHNlIFNlbWljb2xvbnMgKG4tMilcbiAgICAgICAgfCAnPicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdyZWF0ZXJ0aGFucyAobi0yKVxuICAgICAgICB8ICd+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVGlsZGUgZWxzZSBUaWxkZXMgKG4tMilcbiAgICAgICAgfCAnPCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zIChuLTIpXG4gICAgICAgIHwgJ0AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBdCBlbHNlIEF0cyAobi0yKVxuICAgICAgICB8ICcmJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQW1wZXJzYW5kIGVsc2UgQW1wZXJzYW5kcyAobi0yKVxuICAgICAgICB8ICd8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFyIGVsc2UgQmFycyAobi0yKVxuICAgICAgICB8ICdeJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2FyZXQgZWxzZSBDYXJldHMgKG4tMilcbiAgICAgICAgfCAnLCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENvbW1hIGVsc2UgQ29tbWFzIChuLTIpXG4gICAgICAgIHwgJy4nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3QgZWxzZSBEb3RzIChuLTIpXG4gICAgICAgIHwgJy8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTbGFzaCBlbHNlIFNsYXNocyAobi0yKVxuICAgICAgICB8ICckJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG9sbGFyIGVsc2UgRG9sbGFycyAobi0yKVxuICAgICAgICB8ICclJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGVyY2VudCBlbHNlIFBlcmNlbnRzIChuLTIpXG4gICAgICAgIHwgJz0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFcXVhbCBlbHNlIEVxdWFscyAobi0yKVxuICAgICAgICB8ICchJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRXhjbGFtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb25zIChuLTIpXG4gICAgICAgIHwgJz8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdWVzdGlvbiBlbHNlIFF1ZXN0aW9ucyAobi0yKVxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gbWF5YmVfbnVtYmVyKClcbiAgICAgICAgfCBjIC0+IHdvcmQoKSBpblxuICAgICAgcmVzdWx0IDo9IHcgOjogIXJlc3VsdFxuICAgIGRvbmU7XG4gICAgTGlzdC5yZXYgIXJlc3VsdFxuZW5kXG5cbm1vZHVsZSBMZXhfc3RyaW5nID0gTGV4KFN0cmluZ0xhYmVscylcbmxldCBsZXggPSBMZXhfc3RyaW5nLmxleFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLFxuICAgICAgICAgICAgICAgICAgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxubW9kdWxlIEJpZ2FycmF5X2lucHV0IDogSW5wdXQgd2l0aCB0eXBlIHQgPSBiaWdzdHJpbmcgPVxuc3RydWN0XG4gIG1vZHVsZSBCQSA9IEJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gYmlnc3RyaW5nXG4gIGxldCBnZXQgPSBCQS5BcnJheTEuZ2V0XG4gIGxldCBsZW5ndGggPSBCQS5BcnJheTEuZGltXG4gIGxldCBzdWIgYXJyIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBwb3MgPCAwIHx8IHBvcyArIGxlbiA+IEJBLkFycmF5MS5kaW0gYXJyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5X2lucHV0LnN1YlwiO1xuICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBCeXRlcy51bnNhZmVfc2V0IHMgaSAoQkEuQXJyYXkxLnVuc2FmZV9nZXQgYXJyIChpICsgcG9zKSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuZW5kXG5tb2R1bGUgTGV4X2JpZ2FycmF5ID0gTGV4KEJpZ2FycmF5X2lucHV0KVxubGV0IGxleF9iaWdhcnJheSA9IExleF9iaWdhcnJheS5sZXhcblxubGV0IG1ha2Vfc3BhY2UgPSBmdW5jdGlvblxuICB8IDAgLT4gaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIubWFrZV9zcGFjZVwiXG4gIHwgMSAtPiBTcGFjZVxuICB8IG4gLT4gaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCIgZWxzZSBTcGFjZXMgKG4tMilcblxuXG4oKlxuKCoqIFtzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGwuXG4gICAgW2VzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbFxuICAgIChzYW1lIHNlbWFudGljcyBhcyBbU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90bCBsKV0pLiAqKVxubGV0IHN0cmluZ19vZl90bCwgZXN0cmluZ19vZl90bCA9XG4gIGxldCBnIGVzY2FwZWQgdGwgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA0MiBpblxuICAgIGxldCByZWMgbG9vcCA6ICdhIHQgbGlzdCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChpZiBlc2NhcGVkIHRoZW4gU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90IGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzdHJpbmdfb2ZfdCBlKTtcbiAgICAgICAgICBsb29wIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgKClcbiAgICBpblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIHRsOyBiKVxuICBpbiBnIGZhbHNlLCBnIHRydWVcbiopXG5cbmxldCBzdHJpbmdfb2ZfdG9rZW5zIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBMaXN0Lml0ZXIgKGZ1biBlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl90b2tlbiBlKSkgdGw7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IGRlc3RyaW5nX29mX3Rva2VucyA/KGxpbWl0PW1heF9pbnQpIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIChpOmludCkgKHRsaXN0OnRvayBsaXN0KSA6IHVuaXQgPSBtYXRjaCB0bGlzdCB3aXRoXG4gICAgfCBlOjp0bCAtPlxuICAgICAgICBpZiBsaW1pdCA9IGkgdGhlblxuICAgICAgICAgIGxvb3AgaSBbXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdG9rZW4gZSkpO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjo6XCI7XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpIHRsXG4gICAgICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiW11cIlxuICBpblxuICAgIEJ1ZmZlci5jb250ZW50cyAobG9vcCAwIHRsOyBiKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMtMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgc2RlYnVnID0gdHJ1ZVxuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5tb2R1bGUgTCA9IE9tZF9sZXhlclxuXG50eXBlIHIgPSBPbWRfcmVwcmVzZW50YXRpb24udFxuKCoqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcblxuYW5kIHAgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcbigqKiBjb250ZXh0IGluZm9ybWF0aW9uOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuXG5hbmQgbCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIHRva2VucyB0byBwYXJzZSAqKVxuXG5hbmQgbWFpbl9sb29wID1cbiAgP2h0bWw6Ym9vbCAtPlxuICByIC0+ICgqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcbiAgcCAtPiAoKiBpbmZvOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuICBsIC0+ICgqIHRva2VucyB0byBwYXJzZSAqKVxuICBPbWRfcmVwcmVzZW50YXRpb24udCAoKiBmaW5hbCByZXN1bHQgKilcbigqKiBtb3N0IGltcG9ydGFudCBsb29wICopXG5cblxuKCoqIE4uQi4gUGxlYXNlIGRvIG5vdCB1c2UgdGFidWxhdGlvbnMgaW4geW91ciBNYXJrZG93biBmaWxlISAqKVxuXG5tb2R1bGUgdHlwZSBFbnYgPSBzaWdcbiAgdmFsIHJjOiBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICB2YWwgZXh0ZW5zaW9ucyA6IE9tZF9yZXByZXNlbnRhdGlvbi5leHRlbnNpb25zXG4gIHZhbCBkZWZhdWx0X2xhbmcgOiBzdHJpbmdcbiAgdmFsIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgOiBib29sXG4gIHZhbCBibGluZF9odG1sIDogYm9vbFxuICB2YWwgc3RyaWN0X2h0bWwgOiBib29sXG4gIHZhbCB3YXJuaW5nIDogYm9vbFxuICB2YWwgd2Fybl9lcnJvciA6IGJvb2xcbmVuZFxuXG5tb2R1bGUgVW5pdCA9IHN0cnVjdCBlbmRcblxubW9kdWxlIERlZmF1bHRfZW52IChVbml0OnNpZyBlbmQpIDogRW52ID0gc3RydWN0XG4gIGxldCByYyA9IG5ldyBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICBsZXQgZXh0ZW5zaW9ucyA9IFtdXG4gIGxldCBkZWZhdWx0X2xhbmcgPSBcIlwiXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkX3N0eWxlID0gdHJ1ZVxuICBsZXQgYmxpbmRfaHRtbCA9IGZhbHNlXG4gIGxldCBzdHJpY3RfaHRtbCA9IGZhbHNlXG4gIGxldCB3YXJuaW5nID0gZmFsc2VcbiAgbGV0IHdhcm5fZXJyb3IgPSBmYWxzZVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbnY6RW52KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBFbnZcblxuICBsZXQgd2FybiA9IE9tZF91dGlscy53YXJuIH53ZTp3YXJuX2Vycm9yXG5cbiAgKCoqIHNldCBvZiBrbm93biBIVE1MIGNvZGVzICopXG4gIGxldCBodG1sY29kZXNfc2V0ID0gU3RyaW5nU2V0Lm9mX2xpc3QgKCogVGhpcyBsaXN0IHNob3VsZCBiZSBjaGVja2VkLi4uICopXG4gICAgICAoKiBsaXN0IGV4dHJhY3RlZCBmcm9tOiBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9jaGFyc2V0Lmh0bWwgKilcbiAgICAgIFsgXCJBRWxpZ1wiOyAgXCJBYWN1dGVcIjsgIFwiQWNpcmNcIjsgIFwiQWdyYXZlXCI7IFwiQWxwaGFcIjsgIFwiQXJpbmdcIjsgIFwiQXRpbGRlXCI7XG4gICAgICAgIFwiQXVtbFwiOyBcIkJldGFcIjsgIFwiQ2NlZGlsXCI7IFwiQ2hpXCI7IFwiRGFnZ2VyXCI7ICBcIkRlbHRhXCI7IFwiRVRIXCI7IFwiRWFjdXRlXCI7XG4gICAgICAgIFwiRWNpcmNcIjsgIFwiRWdyYXZlXCI7ICBcIkVwc2lsb25cIjsgICBcIkV0YVwiOyAgXCJFdW1sXCI7ICBcIkdhbW1hXCI7ICBcIklhY3V0ZVwiO1xuICAgICAgICBcIkljaXJjXCI7IFwiSWdyYXZlXCI7IFwiSW90YVwiOyAgXCJJdW1sXCI7IFwiS2FwcGFcIjsgXCJMYW1iZGFcIjsgXCJNdVwiOyBcIk50aWxkZVwiO1xuICAgICAgICBcIk51XCI7ICBcIk9FbGlnXCI7ICBcIk9hY3V0ZVwiOyAgIFwiT2NpcmNcIjsgIFwiT2dyYXZlXCI7ICBcIk9tZWdhXCI7ICBcIk9taWNyb25cIjtcbiAgICAgICAgXCJPc2xhc2hcIjsgIFwiT3RpbGRlXCI7ICBcIk91bWxcIjsgIFwiUGhpXCI7ICBcIlBpXCI7ICBcIlByaW1lXCI7ICBcIlBzaVwiOyAgXCJSaG9cIjtcbiAgICAgICAgXCJTY2Fyb25cIjsgIFwiU2lnbWFcIjsgICBcIlRIT1JOXCI7ICBcIlRhdVwiOyAgXCJUaGV0YVwiOyAgIFwiVWFjdXRlXCI7ICBcIlVjaXJjXCI7XG4gICAgICAgIFwiVWdyYXZlXCI7IFwiVXBzaWxvblwiOyBcIlV1bWxcIjsgXCJYaVwiOyBcIllhY3V0ZVwiOyBcIll1bWxcIjsgXCJaZXRhXCI7IFwiYWFjdXRlXCI7XG4gICAgICAgIFwiYWNpcmNcIjsgXCJhY3V0ZVwiOyBcImFlbGlnXCI7IFwiYWdyYXZlXCI7IFwiYWxlZnN5bVwiOyBcImFscGhhXCI7IFwiYW1wXCI7IFwiYW5kXCI7XG4gICAgICAgIFwiYW5nXCI7IFwiYXJpbmdcIjsgXCJhc3ltcFwiOyAgXCJhdGlsZGVcIjsgXCJhdW1sXCI7IFwiYmRxdW9cIjsgXCJiZXRhXCI7IFwiYnJ2YmFyXCI7XG4gICAgICAgIFwiYnVsbFwiOyAgXCJjYXBcIjsgIFwiY2NlZGlsXCI7IFwiY2VkaWxcIjsgIFwiY2VudFwiOyAgXCJjaGlcIjsgXCJjaXJjXCI7ICBcImNsdWJzXCI7XG4gICAgICAgIFwiY29uZ1wiOyAgXCJjb3B5XCI7IFwiY3JhcnJcIjsgXCJjdXBcIjsgIFwiY3VycmVuXCI7IFwiZEFyclwiOyAgXCJkYWdnZXJcIjsgXCJkYXJyXCI7XG4gICAgICAgIFwiZGVnXCI7ICBcImRlbHRhXCI7ICBcImRpYW1zXCI7ICAgXCJkaXZpZGVcIjsgIFwiZWFjdXRlXCI7ICBcImVjaXJjXCI7ICBcImVncmF2ZVwiO1xuICAgICAgICBcImVtcHR5XCI7ICBcImVtc3BcIjsgXCJlbnNwXCI7ICBcImVwc2lsb25cIjsgXCJlcXVpdlwiOyAgXCJldGFcIjsgIFwiZXRoXCI7IFwiZXVtbFwiO1xuICAgICAgICBcImV1cm9cIjsgIFwiZXhpc3RcIjsgIFwiZm5vZlwiOyAgXCJmb3JhbGxcIjsgIFwiZnJhYzEyXCI7ICBcImZyYWMxNFwiOyAgXCJmcmFjMzRcIjtcbiAgICAgICAgXCJmcmFzbFwiOyAgXCJnYW1tYVwiOyAgXCJnZVwiOyBcImd0XCI7ICBcImhBcnJcIjsgIFwiaGFyclwiOyBcImhlYXJ0c1wiOyAgXCJoZWxsaXBcIjtcbiAgICAgICAgXCJpYWN1dGVcIjsgXCJpY2lyY1wiOyBcImlleGNsXCI7IFwiaWdyYXZlXCI7IFwiaW1hZ2VcIjsgXCJpbmZpblwiOyBcImludFwiOyBcImlvdGFcIjtcbiAgICAgICAgXCJpcXVlc3RcIjsgXCJpc2luXCI7IFwiaXVtbFwiOyAgXCJrYXBwYVwiOyBcImxBcnJcIjsgXCJsYW1iZGFcIjsgXCJsYW5nXCI7IFwibGFxdW9cIjtcbiAgICAgICAgXCJsYXJyXCI7ICBcImxjZWlsXCI7ICBcImxkcXVvXCI7IFwibGVcIjsgIFwibGZsb29yXCI7ICBcImxvd2FzdFwiOyBcImxvelwiOyAgXCJscm1cIjtcbiAgICAgICAgXCJsc2FxdW9cIjsgXCJsc3F1b1wiOyBcImx0XCI7ICBcIm1hY3JcIjsgXCJtZGFzaFwiOyBcIm1pY3JvXCI7IFwibWlkZG90XCI7IFwibWludXNcIjtcbiAgICAgICAgXCJtdVwiOyBcIm5hYmxhXCI7ICBcIm5ic3BcIjsgXCJuZGFzaFwiOyAgXCJuZVwiOyBcIm5pXCI7IFwibm90XCI7ICBcIm5vdGluXCI7IFwibnN1YlwiO1xuICAgICAgICBcIm50aWxkZVwiOyAgXCJudVwiOyAgIFwib2FjdXRlXCI7ICBcIm9jaXJjXCI7ICBcIm9lbGlnXCI7ICAgXCJvZ3JhdmVcIjsgIFwib2xpbmVcIjtcbiAgICAgICAgXCJvbWVnYVwiOyBcIm9taWNyb25cIjsgXCJvcGx1c1wiOyBcIm9yXCI7IFwib3JkZlwiOyBcIm9yZG1cIjsgXCJvc2xhc2hcIjsgXCJvdGlsZGVcIjtcbiAgICAgICAgXCJvdGltZXNcIjsgIFwib3VtbFwiOyAgXCJwYXJhXCI7ICBcInBhcnRcIjsgIFwicGVybWlsXCI7IFwicGVycFwiOyAgXCJwaGlcIjsgIFwicGlcIjtcbiAgICAgICAgXCJwaXZcIjsgIFwicGx1c21uXCI7ICBcInBvdW5kXCI7IFwicHJpbWVcIjsgIFwicHJvZFwiOyAgXCJwcm9wXCI7IFwicHNpXCI7ICBcInF1b3RcIjtcbiAgICAgICAgXCJyQXJyXCI7ICBcInJhZGljXCI7IFwicmFuZ1wiOyBcInJhcXVvXCI7ICBcInJhcnJcIjsgXCJyY2VpbFwiOyAgXCJyZHF1b1wiOyBcInJlYWxcIjtcbiAgICAgICAgXCJyZWdcIjsgXCJyZmxvb3JcIjsgIFwicmhvXCI7IFwicmxtXCI7IFwicnNhcXVvXCI7ICBcInJzcXVvXCI7IFwic2JxdW9cIjsgXCJzY2Fyb25cIjtcbiAgICAgICAgXCJzZG90XCI7ICBcInNlY3RcIjsgIFwic2h5XCI7IFwic2lnbWFcIjsgIFwic2lnbWFmXCI7ICBcInNpbVwiOyBcInNwYWRlc1wiOyAgXCJzdWJcIjtcbiAgICAgICAgXCJzdWJlXCI7IFwic3VtXCI7IFwic3VwXCI7IFwic3VwMVwiOyAgXCJzdXAyXCI7IFwic3VwM1wiOyBcInN1cGVcIjsgXCJzemxpZ1wiOyBcInRhdVwiO1xuICAgICAgICBcInRoZXJlNFwiOyAgXCJ0aGV0YVwiOyBcInRoZXRhc3ltXCI7ICBcInRoaW5zcFwiOyBcInRob3JuXCI7ICBcInRpbGRlXCI7IFwidGltZXNcIjtcbiAgICAgICAgXCJ0cmFkZVwiOyBcInVBcnJcIjsgXCJ1YWN1dGVcIjsgIFwidWFyclwiOyBcInVjaXJjXCI7IFwidWdyYXZlXCI7IFwidW1sXCI7IFwidXBzaWhcIjtcbiAgICAgICAgXCJ1cHNpbG9uXCI7ICBcInV1bWxcIjsgXCJ3ZWllcnBcIjsgXCJ4aVwiOyAgXCJ5YWN1dGVcIjsgXCJ5ZW5cIjsgIFwieXVtbFwiOyBcInpldGFcIjtcbiAgICAgICAgXCJ6d2pcIjsgXCJ6d25qXCI7IF1cblxuXG4gICgqKiBzZXQgb2Yga25vd24gaW5saW5lIEhUTUwgdGFncyAqKVxuICBsZXQgaW5saW5lX2h0bWx0YWdzX3NldCA9XG4gICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICgqIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0lubGluZV9lbGVtZW50cyAqKVxuICAgICAgICAgWyBcImJcIjtcImJpZ1wiO1wiaVwiO1wic21hbGxcIjtcInR0XCI7XG4gICAgICAgICAgIFwiYWJiclwiO1wiYWNyb255bVwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiZGZuXCI7XCJlbVwiO1wia2JkXCI7XCJzdHJvbmdcIjtcInNhbXBcIjtcInZhclwiO1xuICAgICAgICAgICBcImFcIjtcImJkb1wiO1wiYnJcIjtcImltZ1wiO1wibWFwXCI7XCJvYmplY3RcIjtcInFcIjtcInNwYW5cIjtcInN1YlwiO1wic3VwXCI7XG4gICAgICAgICAgIFwiYnV0dG9uXCI7XCJpbnB1dFwiO1wibGFiZWxcIjtcInNlbGVjdFwiO1widGV4dGFyZWFcIjtdKVxuXG4gICgqKiBOLkIuIGl0IHNlZW1zIHRoYXQgdGhlcmUgaXMgbm8gY2xlYXIgZGlzdGluY3Rpb24gYmV0d2VlbiBpbmxpbmVcbiAgICAgIHRhZ3MgYW5kIGJsb2NrLWxldmVsIHRhZ3M6IGluIEhUTUw0IGl0IHdhcyBub3QgY2xlYXIsIGluIEhUTUw1XG4gICAgICBpdCdzIGV2ZW4gbW9yZSBjb21wbGljYXRlZC4gU28sIHRoZSBjaG9pY2UgKmhlcmUqIGlzIHRvIHNwZWNpZnlcbiAgICAgIGEgc2V0IG9mIHRhZ3MgY29uc2lkZXJlZCBhcyBcImlubGluZVwiLCBjZi4gW2lubGluZV9odG1sdGFnc19zZXRdLlxuICAgICAgU28gdGhlcmUgd2lsbCBiZSBpbmxpbmUgdGFncywgbm9uLWlubGluZSB0YWdzLCBhbmQgdW5rbm93blxuICAgICAgdGFncy4qKVxuXG4gICgqKiBzZXQgb2YgSFRNTCB0YWdzIHRoYXQgbWF5IGFwcGVhciBvdXQgb2YgYSBib2R5ICopXG4gIGxldCBub3RpbmJvZHl0YWdzID0gU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgIFtcbiAgICAgICAgXCJ0aXRsZVwiO1xuICAgICAgICBcImxpbmtcIjtcbiAgICAgICAgXCJtZXRhXCI7XG4gICAgICAgIFwic3R5bGVcIjtcbiAgICAgICAgXCJodG1sXCI7XG4gICAgICAgIFwiaGVhZFwiO1xuICAgICAgICBcImJvZHlcIjtcbiAgICAgIF1cblxuICAoKiogQWxsIGtub3duIEhUTUwgdGFncyAqKVxuICBsZXQgaHRtbHRhZ3Nfc2V0ID1cbiAgICBTdHJpbmdTZXQudW5pb24gbm90aW5ib2R5dGFnc1xuICAgICAgKFN0cmluZ1NldC51bmlvbiBpbmxpbmVfaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJhXCI7XCJhYmJyXCI7XCJhY3JvbnltXCI7XCJhZGRyZXNzXCI7XCJhcHBsZXRcIjtcImFyZWFcIjtcImFydGljbGVcIjtcImFzaWRlXCJcbiAgICAgICAgICAgICAgO1wiYXVkaW9cIjtcImJcIjtcImJhc2VcIjtcImJhc2Vmb250XCI7XCJiZGlcIjtcImJkb1wiO1wiYmlnXCI7XCJibG9ja3F1b3RlXCJcbiAgICAgICAgICAgICAgO1wiYnJcIjtcImJ1dHRvblwiO1wiY2FudmFzXCI7XCJjYXB0aW9uXCI7XCJjZW50ZXJcIjtcImNpdGVcIjtcImNvZGVcIjtcImNvbFwiXG4gICAgICAgICAgICAgIDtcImNvbGdyb3VwXCI7XCJjb21tYW5kXCI7XCJkYXRhbGlzdFwiO1wiZGRcIjtcImRlbFwiO1wiZGV0YWlsc1wiO1wiZGZuXCJcbiAgICAgICAgICAgICAgO1wiZGlhbG9nXCI7XCJkaXJcIjtcImRpdlwiO1wiZGxcIjtcImR0XCI7XCJlbVwiO1wiZW1iZWRcIjtcImZpZWxkc2V0XCJcbiAgICAgICAgICAgICAgO1wiZmlnY2FwdGlvblwiO1wiZmlndXJlXCI7XCJmb250XCI7XCJmb290ZXJcIjtcImZvcm1cIjtcImZyYW1lXCI7XCJmcmFtZXNldFwiXG4gICAgICAgICAgICAgIDtcImgyXCI7XCJoM1wiO1wiaDRcIjtcImg1XCI7XCJoNlwiXG4gICAgICAgICAgICAgIDtcImgxXCI7XCJoZWFkZXJcIjtcImhyXCI7XCJpXCI7XCJpZnJhbWVcIjtcImltZ1wiO1wiaW5wdXRcIjtcImluc1wiO1wia2JkXCJcbiAgICAgICAgICAgICAgO1wia2V5Z2VuXCI7XCJsYWJlbFwiO1wibGVnZW5kXCI7XCJsaVwiO1wibWFwXCI7XCJtYXJrXCI7XCJtZW51XCI7XCJtZXRlclwiO1wibmF2XCJcbiAgICAgICAgICAgICAgO1wibm9mcmFtZXNcIjtcIm5vc2NyaXB0XCI7XCJvYmplY3RcIjtcIm9sXCI7XCJvcHRncm91cFwiO1wib3B0aW9uXCI7XCJvdXRwdXRcIlxuICAgICAgICAgICAgICA7XCJwXCI7XCJwYXJhbVwiO1wicHJlXCI7XCJwcm9ncmVzc1wiO1wicVwiO1wicnBcIjtcInJ0XCI7XCJydWJ5XCI7XCJzXCI7XCJzYW1wXCJcbiAgICAgICAgICAgICAgO1wic2NyaXB0XCI7XCJzZWN0aW9uXCI7XCJzZWxlY3RcIjtcInNtYWxsXCI7XCJzb3VyY2VcIjtcInNwYW5cIjtcInN0cmlrZVwiXG4gICAgICAgICAgICAgIDtcInN0cm9uZ1wiO1wic3R5bGVcIjtcInN1YlwiO1wic3VtbWFyeVwiO1wic3VwXCI7XCJ0YWJsZVwiO1widGJvZHlcIjtcInRkXCJcbiAgICAgICAgICAgICAgO1widGV4dGFyZWFcIjtcInRmb290XCI7XCJ0aFwiO1widGhlYWRcIjtcInRpbWVcIjtcInRyXCI7XCJ0cmFja1wiO1widHRcIjtcInVcIlxuICAgICAgICAgICAgICA7XCJ1bFwiO1widmFyXCI7XCJ2aWRlb1wiO1wid2JyXCJcbiAgICAgICAgICAgIF0pKVxuXG5cbiAgKCoqIFRoaXMgZnVuY3Rpb25zIGZpeGVzIGJhZCBsZXhpbmcgdHJlZXMsIHdoaWNoIG1heSBiZSBidWlsdCB3aGVuXG4gICAgICBleHRyYWN0aW9uIGEgcG9ydGlvbiBvZiBhbm90aGVyIGxleGluZyB0cmVlLiAqKVxuICBsZXQgZml4IGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICgqIGNvZGUgdG8gZ2VuZXJhdGUgd2hhdCBmb2xsb3dzLi4uXG4gICAgICAgICBMaXN0Lml0ZXIgKGZ1biBlIC0+XG4gICAgICAgICBQcmludGYucHJpbnRmIFwiXG4gICAgICAgICB8ICVzOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMVxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MgMDo6dGwpXG4gICAgICAgICB8ICVzcyBuOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMlxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzOjolc3Mgbjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgM1xcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzcyBhOjolc3MgYjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgNFxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MoYStiKzIpOjp0bClcIlxuICAgICAgICAgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSlcbiAgICAgICAgIFtcIkFtcGVyc2FuZFwiOyBcIkF0XCI7IFwiQmFja3F1b3RlXCI7IFwiQmFja3NsYXNoXCI7IFwiQmFyXCI7IFwiQ2FyZXRcIjsgXCJDYnJhY2VcIjsgXCJDb2xvblwiOyBcIkNvbW1hXCI7IFwiQ3BhcmVudGhlc2lzXCI7IFwiQ2JyYWNrZXRcIjsgXCJEb2xsYXJcIjsgXCJEb3RcIjsgXCJEb3VibGVxdW90ZVwiOyBcIkV4Y2xhbWF0aW9uXCI7IFwiRXF1YWxcIjsgXCJHcmVhdGVydGhhblwiOyBcIkhhc2hcIjsgXCJMZXNzdGhhblwiOyBcIk1pbnVzXCI7IFwiTmV3bGluZVwiOyBcIk9icmFjZVwiOyBcIk9wYXJlbnRoZXNpc1wiOyBcIk9icmFja2V0XCI7IFwiUGVyY2VudFwiOyBcIlBsdXNcIjsgXCJRdWVzdGlvblwiOyBcIlF1b3RlXCI7IFwiU2VtaWNvbG9uXCI7IFwiU2xhc2hcIjsgXCJTcGFjZVwiOyBcIlN0YXJcIjsgXCJUYWJcIjsgXCJUaWxkZVwiOyBcIlVuZGVyc2NvcmVcIl07XG4gICAgICAgICBwcmludF9zdHJpbmcgXCJ8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXFxufCBbXSAtPiBMaXN0LnJldiBhY2N1XFxuXCI7ICopXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMgMDo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgbjo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgYTo6QW1wZXJzYW5kcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMoYStiKzIpOjp0bClcbiAgICAgIHwgQXQ6OkF0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzIDA6OnRsKVxuICAgICAgfCBBdHMgbjo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMobisxKTo6dGwpXG4gICAgICB8IEF0OjpBdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXRzIGE6OkF0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKGErYisyKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMgMDo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgbjo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgYTo6QmFja3F1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyAwOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBuOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBhOjpCYWNrc2xhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBCYXI6OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzIDA6OnRsKVxuICAgICAgfCBCYXJzIG46OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXI6OkJhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXJzIGE6OkJhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKGErYisyKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyAwOjp0bClcbiAgICAgIHwgQ2FyZXRzIG46OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYXJldDo6Q2FyZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0cyBhOjpDYXJldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzIDA6OnRsKVxuICAgICAgfCBDYnJhY2VzIG46OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2VzIGE6OkNicmFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyAwOjp0bClcbiAgICAgIHwgQ29sb25zIG46OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBDb2xvbjo6Q29sb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9ucyBhOjpDb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWE6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMgMDo6dGwpXG4gICAgICB8IENvbW1hcyBuOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhuKzEpOjp0bClcbiAgICAgIHwgQ29tbWE6OkNvbW1hcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYXMgYTo6Q29tbWFzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBuOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBhOjpDcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IENicmFja2V0cyBuOjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXQ6OkNicmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgYTo6Q2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyAwOjp0bClcbiAgICAgIHwgRG9sbGFycyBuOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFycyBhOjpEb2xsYXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBEb3Q6OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzIDA6OnRsKVxuICAgICAgfCBEb3RzIG46OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3Q6OkRvdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3RzIGE6OkRvdHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKGErYisyKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyAwOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIG46OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZTo6RG91YmxlcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyBhOjpEb3VibGVxdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMgMDo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBuOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb246OkV4Y2xhbWF0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbnMgYTo6RXhjbGFtYXRpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFsOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzIDA6OnRsKVxuICAgICAgfCBFcXVhbHMgbjo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMobisxKTo6dGwpXG4gICAgICB8IEVxdWFsOjpFcXVhbHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWxzIGE6OkVxdWFscyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKGErYisyKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyAwOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIG46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbjo6R3JlYXRlcnRoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyBhOjpHcmVhdGVydGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBIYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyAwOjp0bClcbiAgICAgIHwgSGFzaHMgbjo6SGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBIYXNocyBhOjpIYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMgMDo6dGwpXG4gICAgICB8IExlc3N0aGFucyBuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgTGVzc3RoYW46Okxlc3N0aGFucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgYTo6TGVzc3RoYW5zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMoYStiKzIpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzIDA6OnRsKVxuICAgICAgfCBNaW51c3Mgbjo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MobisxKTo6dGwpXG4gICAgICB8IE1pbnVzOjpNaW51c3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXNzIGE6Ok1pbnVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKGErYisyKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzIDA6OnRsKVxuICAgICAgfCBOZXdsaW5lcyBuOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMobisxKTo6dGwpXG4gICAgICB8IE5ld2xpbmVzIGE6Ok5ld2xpbmVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMgMDo6dGwpXG4gICAgICB8IE9icmFjZXMgbjo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZXMgYTo6T2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBuOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBhOjpPcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IE9icmFja2V0cyBuOjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNrZXQ6Ok9icmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgYTo6T2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGVyY2VudDo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMgMDo6dGwpXG4gICAgICB8IFBlcmNlbnRzIG46OlBlcmNlbnQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhuKzEpOjp0bClcbiAgICAgIHwgUGVyY2VudHMgYTo6UGVyY2VudHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGx1czo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MgMDo6dGwpXG4gICAgICB8IFBsdXNzIG46OlBsdXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhuKzEpOjp0bClcbiAgICAgIHwgUGx1c3MgYTo6UGx1c3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MoYStiKzIpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zIDA6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMobisxKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9uOjpRdWVzdGlvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb25zIGE6OlF1ZXN0aW9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKGErYisyKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyAwOjp0bClcbiAgICAgIHwgUXVvdGVzIG46OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBRdW90ZTo6UXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlcyBhOjpRdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zIDA6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIG46OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIGE6OlNlbWljb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyAwOjp0bClcbiAgICAgIHwgU2xhc2hzIG46OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBTbGFzaDo6U2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNocyBhOjpTbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMgMDo6dGwpXG4gICAgICB8IFNwYWNlcyBuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgU3BhY2U6OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZXMgYTo6U3BhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgU3Rhcjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMgMDo6dGwpXG4gICAgICB8IFN0YXJzIG46OlN0YXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhuKzEpOjp0bClcbiAgICAgIHwgU3RhcnMgYTo6U3RhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgVGFiOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyAwOjp0bClcbiAgICAgIHwgVGFicyBuOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFiOjpUYWJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFicyBhOjpUYWJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhhK2IrMik6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMgMDo6dGwpXG4gICAgICB8IFRpbGRlcyBuOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhuKzEpOjp0bClcbiAgICAgIHwgVGlsZGU6OlRpbGRlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZXMgYTo6VGlsZGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMoYStiKzIpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMgMDo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmVzIG46OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhuKzEpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgYTo6VW5kZXJzY29yZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMoYStiKzIpOjp0bCl8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGFjY3VcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG5cbiAgKCogUmVtb3ZlIGFsbCBbTkxdIGFuZCBbQnJdIGF0IHRoZSBiZWdpbm5pbmcuICopXG4gIGxldCByZWMgcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChOTCB8IEJyKSA6OiB0bCAtPiByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bFxuICAgIHwgbCAtPiBsXG5cblxuICAoKiogLSByZWNvZ25pemVzIHBhcmFncmFwaHNcbiAgICAgIC0gZ2x1ZXMgZm9sbG93aW5nIGJsb2NrcXVvdGVzICAqKVxuICBsZXQgbWFrZV9wYXJhZ3JhcGhzIG1kID1cbiAgICBsZXQgcmVjIGxvb3AgY3AgYWNjdSA9IGZ1bmN0aW9uICgqIGNwIG1lYW5zIGN1cnJlbnQgcGFyYWdyYXBoICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGFjY3VcbiAgICAgICAgICB8IChOTHxCcik6OmNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgICB8IGNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgfCBCbG9ja3F1b3RlIGIxIDo6IEJsb2NrcXVvdGUgYjIgOjogdGwgLT5cbiAgICAgICAgbG9vcCBjcCBhY2N1IChCbG9ja3F1b3RlKGIxQGIyKTo6IHRsKVxuICAgICAgfCBCbG9ja3F1b3RlIGIgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBCbG9ja3F1b3RlKGxvb3AgW10gW10gYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoVWxwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gVWxwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoT2xwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gT2xwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBIdG1sX2NvbW1lbnQgXyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIC0+IGxvb3AgW10gKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKGU6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgKGU6OmNwKSBhY2N1IHRsKVxuICAgICAgfCAoUmF3X2Jsb2NrIF8gfCBIdG1sX2Jsb2NrIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjpjcEBhY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoQ29kZV9ibG9jayBfIHwgSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfXG4gICAgICAgIHwgT2wgXyB8IFVsIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBUZXh0IFwiXFxuXCIgOjogXyB8IFBhcmFncmFwaCBfIDo6IF8gLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJPbWRfcGFyc2VyLm1ha2VfcGFyYWdyYXBoc1wiXG4gICAgICB8IChOTHxCcikgOjogKE5MfEJyKSA6OiB0bCAtPlxuICAgICAgICBsZXQgdGwgPSByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bCBpblxuICAgICAgICBiZWdpbiBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKE5MOjpOTDo6YWNjdSkgdGxcbiAgICAgICAgICB8IF8gLT4gbG9vcCBbXSAoUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IFgoeCkgYXMgZSA6OiB0bCAtPlxuICAgICAgICAoKiBJZiB0aGUgZXh0ZW5zaW9uIHJldHVybnMgYSBibG9jayBhcyBmaXJzdCBlbGVtZW50LFxuICAgICAgICAgICB0aGVuIGNvbnNpZGVyIHRoZSBleHRlbnNpb24gYXMgYSBibG9jay4gSG93ZXZlclxuICAgICAgICAgICBkb24ndCB0YWtlIGl0cyBjb250ZW50cyBhcyBpdCBpcyB5ZXQsIHRoZSBjb250ZW50c1xuICAgICAgICAgICBvZiB0aGUgZXh0ZW5zaW9uIHNoYWxsIGJlIGNvbnNpZGVyZWQgZmluYWwgYXMgbGF0ZVxuICAgICAgICAgICBhcyBwb3NzaWJsZS4gKilcbiAgICAgICAgYmVnaW4gbWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgICB8IFNvbWUodCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCAoIEgxIF9cbiAgICAgICAgICAgICAgfCBIMiBfXG4gICAgICAgICAgICAgIHwgSDMgX1xuICAgICAgICAgICAgICB8IEg0IF9cbiAgICAgICAgICAgICAgfCBINSAgX1xuICAgICAgICAgICAgICB8IEg2ICBfXG4gICAgICAgICAgICAgIHwgUGFyYWdyYXBoICBfXG4gICAgICAgICAgICAgIHwgVWwgX1xuICAgICAgICAgICAgICB8IE9sIF9cbiAgICAgICAgICAgICAgfCBVbHAgX1xuICAgICAgICAgICAgICB8IE9scCBfXG4gICAgICAgICAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICAgICAgICAgIHwgSHJcbiAgICAgICAgICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgICAgICAgICB8IEJsb2NrcXVvdGUgX1xuICAgICAgICAgICAgICApIDo6IF9cbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPlxuICAgICAgICAgICAgICAgICBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgICAgIGVuZFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV93aGl0ZV9jcnVtYnMgbCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgVGV4dCBcIiBcIiA6OiB0bFxuICAgICAgICB8IE5MOjp0bFxuICAgICAgICB8IEJyOjp0bFxuICAgICAgICAgIC0+XG4gICAgICAgICAgbG9vcCB0bFxuICAgICAgICB8IGwgLT4gbFxuICAgICAgaW5cbiAgICAgIExpc3QucmV2IChsb29wIChMaXN0LnJldiBsKSlcbiAgICBpblxuICAgIGxldCByZWMgY2xlYW5fcGFyYWdyYXBocyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzXFxuXCI7XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBbXVxuICAgICAgfCBQYXJhZ3JhcGhbXTo6dGwgLT4gdGxcbiAgICAgIHwgUGFyYWdyYXBoKHApIDo6IHRsIC0+XG4gICAgICAgIFBhcmFncmFwaChjbGVhbl9wYXJhZ3JhcGhzXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVfaW5pdGlhbF9uZXdsaW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlX3doaXRlX2NydW1icyhub3JtYWxpc2VfbWQgcCkpKSlcbiAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMSB2IDo6IHRsIC0+IEgxKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgyIHYgOjogdGwgLT4gSDIoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDMgdiA6OiB0bCAtPiBIMyhjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINCB2IDo6IHRsIC0+IEg0KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg1IHYgOjogdGwgLT4gSDUoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDYgdiA6OiB0bCAtPiBINihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBFbXBoIHYgOjogdGwgLT4gRW1waChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJvbGQgdiA6OiB0bCAtPiBCb2xkKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWwgdiA6OiB0bCAtPiBVbChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbCB2IDo6IHRsIC0+IE9sKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVscCB2IDo6IHRsIC0+IFVscChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgT2xwIHYgOjogdGwgLT4gT2xwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBCbG9ja3F1b3RlIHYgOjogdGwgLT4gQmxvY2txdW90ZShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVybChocmVmLHYsdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLChjbGVhbl9wYXJhZ3JhcGhzIHYpLHRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFRleHQgX1xuICAgICAgfCBDb2RlIF9cbiAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICB8IEJyXG4gICAgICB8IEhyXG4gICAgICB8IE5MXG4gICAgICB8IFJlZiBfXG4gICAgICB8IEltZ19yZWYgX1xuICAgICAgfCBSYXcgX1xuICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgfCBIdG1sIF9cbiAgICAgIHwgSHRtbF9ibG9jayBfXG4gICAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgICB8IEltZyBfXG4gICAgICB8IFggXyBhcyB2IDo6IHRsIC0+IHYgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgIGluXG4gICAgbGV0IHIgPSBjbGVhbl9wYXJhZ3JhcGhzKGxvb3AgW10gW10gbWQpXG4gICAgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzICVTIC0tPiAlU1xcbiUhXCJcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIG1kKVxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgcik7XG4gICAgclxuXG5cbiAgKCoqIFthc3NlcnRfd2VsbF9mb3JtZWRdIGlzIGEgZGV2ZWxvcGVyJ3MgZnVuY3Rpb24gdGhhdCBoZWxwcyB0b1xuICAgICAgdHJhY2sgYmFkbHkgY29uc3RydWN0ZWQgdG9rZW4gbGlzdHMuICBUaGlzIGZ1bmN0aW9uIGhhcyBhblxuICAgICAgZWZmZWN0IG9ubHkgaWYgW3RyYWNrZml4XSBpcyBbdHJ1ZV0uICAqKVxuICBsZXQgYXNzZXJ0X3dlbGxfZm9ybWVkIChsOnRvayBsaXN0KSA6IHVuaXQgPVxuICAgIGlmIHRyYWNrZml4IHRoZW5cbiAgICAgIGxldCByZWMgZXF1aXYgbDEgbDIgPSBtYXRjaCBsMSwgbDIgd2l0aFxuICAgICAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgICAgIHwgVGFnIF86OnRsMSwgVGFnIF86OnRsMi0+IGVxdWl2IHRsMSB0bDJcbiAgICAgICAgfCBlMTo6dGwxLCBlMjo6dGwyIC0+IGUxID0gZTIgJiYgZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBhc3NlcnQoZXF1aXYgKGZpeCBsKSBsKTtcbiAgICAgICgpXG5cbiAgKCoqIEdlbmVyYXRlIGZhbGxiYWNrIGZvciByZWZlcmVuY2VzLiAqKVxuICBsZXQgZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmV4dHJhY3RfZmFsbGJhY2tcXG4lIVwiO1xuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgICAgfCBlOjp0bCBhcyByIC0+XG4gICAgICAgIGlmIHIgPT0gcmVtYWlucyB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZSwgcmVtYWlucyB3aXRoXG4gICAgICAgICAgfCBDYnJhY2tldHMgMCwgQ2JyYWNrZXQ6OnIgd2hlbiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBDYnJhY2tldHMgbiwgQ2JyYWNrZXRzIG06OnIgd2hlbiBtICsgMSA9IG4gJiYgdGwgPSByIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IFdvcmQgXCJdXCIgOjogYWNjdSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIGxldCBhID0gbG9vcCBbXSBsIGluXG4gICAgb2JqZWN0XG4gICAgICBtZXRob2QgdG9fc3RyaW5nID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFcbiAgICAgIG1ldGhvZCB0b190ID0gW1RleHQoTC5zdHJpbmdfb2ZfdG9rZW5zIGEpXVxuICAgIGVuZFxuXG5cbiAgbGV0IHVuaW5kZW50X3JldiBuIGxleGVtZXMgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIENBTEw6IE9tZF9wYXJzZXIudW5pbmRlbnRfcmV2XFxuJSFcIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBjbCA9IGZ1bmN0aW9uXG4gICAgICB8IE5ld2xpbmVzIHg6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmVzIHk6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoeCt5KzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygwKTo6dGwpXG5cbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6KFxuICAgICAgICAgIChOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICB8ICgoU3RhcnxQbHVzfE1pbnVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6XylcbiAgICAgICAgICBhcyB0bCkgYXMgbCAtPlxuICAgICAgICBpZiBuID0gTC5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgbG9vcCAobmw6OmNsQGFjY3UpIFtdIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgbGV0IHggPSBMLmxlbmd0aCBzIC0gbiBpblxuICAgICAgICBsb29wIChubDo6Y2xAYWNjdSlcbiAgICAgICAgICAoaWYgeCA+IDAgdGhlbiBbTC5tYWtlX3NwYWNlIHhdIGVsc2UgW10pXG4gICAgICAgICAgdGxcbiAgICAgIHwgTmV3bGluZXMoXyk6Ol8gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgTmV3bGluZTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgKGU6OmNsKSB0bFxuICAgICAgfCBbXSBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgIGluXG4gICAgbWF0Y2ggbG9vcCBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICB8IFtdLCByaWdodCAtPiBbXSwgcmlnaHRcbiAgICB8IGwsIHJpZ2h0IC0+XG4gICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgIGwsIHJpZ2h0XG5cbiAgbGV0IHVuaW5kZW50IG4gbGV4ZW1lcyA9XG4gICAgbGV0IGZzdCwgc25kID0gdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyBpblxuICAgIExpc3QucmV2IGZzdCwgc25kXG5cbiAgbGV0IHJlYyBpc19ibGFuayA9IGZ1bmN0aW9uXG4gICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUgfCBOZXdsaW5lcyBfKSA6OiB0bCAtPlxuICAgICAgaXNfYmxhbmsgdGxcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgc2VtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3RhcnMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLFN0YXJzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpTdGFyOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFN0YXJzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG4gIGxldCBzbV91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cblxuICBsZXQgZ2hfdWVtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6KFdvcmQgX3xOdW1iZXIgXyBhcyB3KTo6IHRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3c7c10sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCB1ZW1waF9vcl9ib2xkIG4gbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGlmIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgdGhlblxuICAgICAgZ2hfdWVtcGhfb3JfYm9sZCBuIGxcbiAgICBlbHNlXG4gICAgICBzbV91ZW1waF9vcl9ib2xkIG4gbFxuXG4gIGxldCBlYXRfYmxhbmsgPVxuICAgIGVhdCAoZnVuY3Rpb24gfFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXyAtPiB0cnVlfCBfIC0+IGZhbHNlKVxuXG5cbiAgKCogdXNlZCBieSB0YWdfX21heWJlX2gxIGFuZCB0YWdfX21heWJlX2gyICopXG4gIGxldCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIChsOmwpIDogKE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdCAqIGwpIG9wdGlvbiA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gciBsID1cbiAgICAgICgqIElmIHRoZXJlJ3MgYSBiYWxhbmNlZCAoY29tcGxldGUpIGJhY2txdW90ZS1zdGFydGVkIGNvZGUgYmxvY2tcbiAgICAgICAgIHRoZW4gaXQgc2hvdWxkIGJlIFwiaWdub3JlZFwiLCBlbHNlIGl0IG1lYW5zIHRoZSBsaW5lIHRoYXRcbiAgICAgICAgIGZvbGxvd3MgaXMgcGFydCBvZiBhIGNvZGUgYmxvY2ssIHNvIGl0J3Mgbm90IGRlZmluaW5nIGFcbiAgICAgICAgIHNldGV4dC1zdHlsZSB0aXRsZS4gKilcbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIGRldGVjdF9iYWxhbmNlZF9icXMgbj0lZCByPSVTIGw9JVNcXG4lIVwiXG4gICAgICAgICAgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIHIpIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBOb25lXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIHg6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlIGFzIGIpOjp0bCB3aGVuIG4gPSAxIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgKEJhY2txdW90ZXMgeCBhcyBiKTo6dGwgd2hlbiBuID0geCsyIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChlOjpyKSB0bFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiByID0gW10gdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUoTGlzdC5yZXYgciwgW10pXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgMDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgMSBbXSB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKGJsLHRsKSAtPiBsb29wIChibEByKSB0bFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgICAgfCBCYWNrcXVvdGVzKHgpOjp0bCAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBkZXRlY3RfYmFsYW5jZWRfYnFzICh4KzIpIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IE5ld2xpbmU6OihFcXVhbHxFcXVhbHMgX3xNaW51c3xNaW51c3MgXyk6OnRsIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCB0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnNldGV4dF90aXRsZSBpcyB3cm9uZ2x5IHVzZWQhXFxuJSFcIjtcbiAgICAgICAgTm9uZVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpyKSB0bFxuICAgIGluXG4gICAgaWYgbWF0Y2ggbCB3aXRoXG4gICAgICB8IExlc3N0aGFuOjpXb3JkIF86Ol8gLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWFpbl9sb29wIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgKEh0bWxfYmxvY2sgXyB8IENvZGVfYmxvY2sgXyB8IFJhd19ibG9jayBfKTo6XyAtPlxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHJlc3VsdCA9IGxvb3AgW10gbCBpblxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgc2V0ZXh0X3RpdGxlIGw9JVMgcmVzdWx0PSVTLCVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgeClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgdGwpO1xuICAgICAgcmVzdWx0XG5cbiAgbGV0IHRhZ19fbWF5YmVfaDEgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gxXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgxKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDEgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWF5YmVfaDIgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gyXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgyKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDIgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWQgbWQgPSAoKiBbbWRdIHNob3VsZCBiZSBpbiByZXZlcnNlICopXG4gICAgVGFnKFwidGFnX19tZFwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9IFNvbWUobWRAciwgW10sIGwpXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICAgKVxuXG4gICgqIExldCdzIHRhZyB0aGUgbGluZXMgdGhhdCAqbWlnaHQqIGJlIHRpdGxlcyB1c2luZyBzZXRleHQtc3R5bGUuXG4gICAgIFwibWlnaHRcIiBiZWNhdXNlIGlmIHRoZXkgYXJlLCBmb3IgaW5zdGFuY2UsIGluIGEgY29kZSBzZWN0aW9uLFxuICAgICB0aGVuIHRoZXkgYXJlIG5vdCB0aXRsZXMgYXQgYWxsLiAqKVxuICBsZXQgdGFnX3NldGV4dCBtYWluX2xvb3AgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIHBsIHJlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX10gLT5cbiAgICAgICAgcGxAcmVzXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KEVxdWFsfEVxdWFscyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMS4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffEVxdWFsfEVxdWFscyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMSBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KE1pbnVzfE1pbnVzcyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMi4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMiBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIHwgTmV3bGluZXMgXyBhcyBlMSk6OnRsIC0+XG4gICAgICAgIGxvb3AgW10gKGUxOjpwbEByZXMpIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnBsKSByZXMgdGxcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIFtdIFtdIGxleGVtZXMpXG5cblxuICBsZXQgaHJfbSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgbiA9IGZ1bmN0aW9uXG4gICAgICB8ICgoTmV3bGluZXMgX3xOZXdsaW5lKTo6dGwpIHwgKFtdIGFzIHRsKSAtPlxuICAgICAgICBpZiBuID49IDMgdGhlbiBTb21lIHRsIGVsc2UgTm9uZVxuICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBsb29wIG4gdGxcbiAgICAgIHwgTWludXM6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgTWludXNzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBocl9zIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBTdGFyOjp0bCAtPlxuICAgICAgICBsb29wIChuKzEpIHRsXG4gICAgICB8IFN0YXJzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBociBsID1cbiAgICBtYXRjaCBocl9tIGwgd2l0aFxuICAgIHwgTm9uZSAtPiBocl9zIGxcbiAgICB8IFNvbWUgXyBhcyB0bCAtPiB0bFxuXG4gICgqKiBbYmNvZGVdIHBhcnNlcyBjb2RlIHRoYXQncyBkZWxpbWl0ZWQgYnkgYmFja3F1b3RlKHMpICopXG4gIGxldCBiY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgZSwgdGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCAtPiBlLCB0bFxuICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5iY29kZSBpcyB3cm9uZ2x5IGNhbGxlZFwiXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvZGVfYmxvY2sgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiBlID0gQmFja3F1b3RlIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoQmFja3F1b3RlOjphY2N1KSB0bFxuICAgICAgfCAoQmFja3F1b3RlcyBuIGFzIGIpOjp0bCAtPlxuICAgICAgICBpZiBlID0gYiB0aGVuXG4gICAgICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjphY2N1IC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfYmxvY2sgKGI6OmFjY3UpIHRsXG4gICAgICB8IFRhZyhfLCBfKTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayBhY2N1IHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGNvZGVfYmxvY2sgKGU6OmFjY3UpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBjb2RlX2Jsb2NrIFtdIHRsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShjYiwgbCkgLT5cbiAgICAgIGlmIExpc3QuZXhpc3RzIChmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBfKSAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgY2JcbiAgICAgICYmIChtYXRjaCBwIHdpdGggW118W05ld2xpbmV8TmV3bGluZXMgX10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiAobWF0Y2ggZSB3aXRoIEJhY2txdW90ZXMgbiB3aGVuIG4gPiAwIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgdGhlblxuICAgICAgICBtYXRjaCBjYiB3aXRoXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgMCA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMoTmV3bGluZTo6dGwpIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmVzIG4gOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZXMgbiA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIChOZXdsaW5lcyhuLTEpOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGNiIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjbGVhbl9iY29kZSBzID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AxIGkgPVxuICAgICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMShpKzEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AyIGkgPVxuICAgICAgICAgICAgaWYgaSA9IC0xIHRoZW4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAgICAgfCAnICcgLT4gbG9vcDIoaS0xKVxuICAgICAgICAgICAgICB8IF8gLT4gaSsxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBsb29wMSAwLCBsb29wMiAoU3RyaW5nLmxlbmd0aCBzIC0gMSkgd2l0aFxuICAgICAgICAgIHwgMCwgbiB3aGVuIG4gPSBTdHJpbmcubGVuZ3RoIHMgLSAxIC0+IHNcbiAgICAgICAgICB8IGksIG4gLT4gU3RyaW5nLnN1YiBzIGkgKG4taSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBjbGVhbl9iY29kZSAlUyA9PiAlU1xcbiUhXCIgY29kZSAoY2xlYW5fYmNvZGUgY29kZSk7XG4gICAgICAgIFNvbWUoQ29kZShkZWZhdWx0X2xhbmcsIGNsZWFuX2Jjb2RlIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuXG5cbiAgZXhjZXB0aW9uIE5MX2V4Y2VwdGlvblxuICBleGNlcHRpb24gUHJlbWF0dXJlX2VuZGluZ1xuXG4gICgqICEhRE8gTk9UIERFTEVURSBUSElTISFcbiAgICAgVGhlIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgdGhlIGdlbmVyYXRlZCBwYXJ0IHRoYXQgZm9sbG93cyByaWdodCBhZnRlci5cbiAgICAgTGlzdC5pdGVyIChmdW4gKGEsYixjKSAtPlxuICAgICBwcmludF9lbmRsaW5lIChcImxldCByZWFkX3VudGlsX1wiXmFeXCIgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5iXlwiOjphY2N1KSBuIChcIl5iXlwiOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcIlxuICAgICAgXihpZiBjPD5cIlwiIHRoZW4gXCJcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5jXlwiOjphY2N1KSBuIChcIl5jXlwiOjp0bClcbiAgICAgIHwgXCJeY15cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IFwiXmNeXCJzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgIFwiIGVsc2UgXCJcIileXG4gICAgIFwiICAgIHwgXCJeYl5cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgXCJeYl5cInMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cIjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIChuLTEpIChcIl5iXlwiOjp0bClcbiAgICAgIHwgXCJeYl5cInMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cInMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFwiXmJeXCI6OmFjY3UgLT4gXCJeYl5cInMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFwiXmJeXCJzIHg6OmFjY3UgLT4gXCJeYl5cInMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBcIl5iXlwiOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChcIl5iXlwicyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFxcXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfXCJeYV5cIiAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcXFxuJSFcXFwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblwiKSlcblxuICAgICBbIFwiZ3RcIiwgXCJHcmVhdGVydGhhblwiLCBcIkxlc3N0aGFuXCI7XG4gICAgIFwibHRcIiwgXCJMZXNzdGhhblwiLCBcIlwiO1xuICAgICBcImNwYXJlbnRoXCIsIFwiQ3BhcmVudGhlc2lzXCIsIFwiT3BhcmVudGhlc2lzXCI7XG4gICAgIFwib3BhcmVudGhcIiwgXCJPcGFyZW50aGVzaXNcIiwgXCJcIjtcbiAgICAgXCJkcVwiLCBcIkRvdWJsZXF1b3RlXCIsIFwiXCI7XG4gICAgIFwicVwiLCBcIlF1b3RlXCIsIFwiXCI7XG4gICAgIFwib2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiLCBcIlwiO1xuICAgICBcImNicmFja2V0XCIsIFwiQ2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiO1xuICAgICBcInNwYWNlXCIsIFwiU3BhY2VcIiwgXCJcIjtcbiAgICAgXVxuICAqKVxuXG4gICgqIGJlZ2luIGdlbmVyYXRlZCBwYXJ0ICopXG5cbmxldCByZWFkX3VudGlsX2d0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChHcmVhdGVydGhhbjo6YWNjdSkgbiAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBMZXNzdGhhbnMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgR3JlYXRlcnRoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSAobi0xKSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgR3JlYXRlcnRoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6YWNjdSAtPiBHcmVhdGVydGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyB4OjphY2N1IC0+IEdyZWF0ZXJ0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IEdyZWF0ZXJ0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2d0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfbHQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSBuIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IExlc3N0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSAobi0xKSAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgTGVzc3RoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBMZXNzdGhhbjo6YWNjdSAtPiBMZXNzdGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IExlc3N0aGFucyB4OjphY2N1IC0+IExlc3N0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IExlc3N0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChMZXNzdGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2x0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSBuIChDcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIG4gKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgQ3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDcGFyZW50aGVzaXNzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENwYXJlbnRoZXNpczo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKENwYXJlbnRoZXNpczo6YWNjdSkgKG4tMSkgKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3MgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzOjphY2N1IC0+IENwYXJlbnRoZXNpc3MoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IENwYXJlbnRoZXNpc3MgeDo6YWNjdSAtPiBDcGFyZW50aGVzaXNzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ3BhcmVudGhlc2lzOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChDcGFyZW50aGVzaXNzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jcGFyZW50aCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX29wYXJlbnRoID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OmFjY3UgLT4gT3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IE9wYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBPcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9wYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29wYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfZHEgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoRG91YmxlcXVvdGVzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSBuIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgRG91YmxlcXVvdGUgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSAobi0xKSAoRG91YmxlcXVvdGU6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgRG91YmxlcXVvdGVzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6YWNjdSAtPiBEb3VibGVxdW90ZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyB4OjphY2N1IC0+IERvdWJsZXF1b3Rlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IERvdWJsZXF1b3RlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChEb3VibGVxdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2RxICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChRdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIG4gKFF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBRdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgUXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIChuLTEpIChRdW90ZTo6dGwpXG4gICAgICB8IFF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBRdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFF1b3RlOjphY2N1IC0+IFF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgUXVvdGVzIHg6OmFjY3UgLT4gUXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gUXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3EgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgT2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9icmFja2V0cyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldDo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSAobi0xKSAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT2JyYWNrZXRzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPYnJhY2tldDo6YWNjdSAtPiBPYnJhY2tldHMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IE9icmFja2V0cyB4OjphY2N1IC0+IE9icmFja2V0cyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9icmFja2V0OjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChPYnJhY2tldHMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29icmFja2V0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKENicmFja2V0OjphY2N1KSBuIChDYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgbiAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9icmFja2V0cyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgQ2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIChuLTEpIChDYnJhY2tldDo6dGwpXG4gICAgICB8IENicmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IENicmFja2V0OjphY2N1IC0+IENicmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ2JyYWNrZXRzIHg6OmFjY3UgLT4gQ2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENicmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9zcGFjZSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChTcGFjZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIG4gKFNwYWNlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBTcGFjZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgU3BhY2VzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIChuLTEpIChTcGFjZTo6dGwpXG4gICAgICB8IFNwYWNlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBTcGFjZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFNwYWNlOjphY2N1IC0+IFNwYWNlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgU3BhY2VzIHg6OmFjY3UgLT4gU3BhY2VzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gU3BhY2U6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFNwYWNlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfc3BhY2UgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuICAoKiAvZW5kIGdlbmVyYXRlZCBwYXJ0ICopXG5cbiAgbGV0IHJlYWRfdW50aWxfbmV3bGluZSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICgoQmFja3NsYXNoIGFzIGEpKSA6OiAoKE5ld2xpbmUgYXMgYikpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGIgOjogYSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmUgOjogQmFja3NsYXNoIDo6IGFjY3UpIG4gKE5ld2xpbmUgOjogdGwpXG4gICAgICB8ICgoQmFja3NsYXNocyAwIGFzIGUpKSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgKChCYWNrc2xhc2hzIHggYXMgZSkpIDo6IHRsIC0+XG4gICAgICAgIGlmICh4IG1vZCAyKSA9IDBcbiAgICAgICAgdGhlbiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgICAgZWxzZSBsb29wICgoQmFja3NsYXNocyAoeCAtIDEpKSA6OiBhY2N1KSBuIChCYWNrc2xhc2ggOjogdGwpXG4gICAgICB8ICgoTmV3bGluZSBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiAoKExpc3QucmV2IGFjY3UpLCB0bCkgZWxzZSBsb29wIChlIDo6IGFjY3UpIChuIC0gMSkgdGxcbiAgICAgIHwgTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuICgoTGlzdC5yZXYgYWNjdSksIChOZXdsaW5lIDo6IHRsKSlcbiAgICAgICAgZWxzZSBsb29wIChOZXdsaW5lIDo6IGFjY3UpIChuIC0gMSkgKE5ld2xpbmUgOjogdGwpXG4gICAgICB8IE5ld2xpbmVzIG4gOjogdGwgLT4gKChMaXN0LnJldiBhY2N1KSwgKChOZXdsaW5lcyAobiAtIDEpKSA6OiB0bCkpXG4gICAgICB8IGUgOjogdGwgLT4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICBpbiBsb29wIFtdIDAgbFxuXG4gICgqIEgxLCBIMiwgSDMsIC4uLiAqKVxuICBsZXQgcmVhZF90aXRsZSAobWFpbl9sb29wOm1haW5fbG9vcCkgbiByIF9wcmV2aW91cyBsZXhlbWVzID1cbiAgICBsZXQgdGl0bGUsIHJlc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaDo6dGwgLT5cbiAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaDo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobi0xKTo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2g6Okhhc2hzKGgpOjp0bCAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNoOjphY2N1KVxuICAgICAgICAgICAgICAgICgoaWYgaCA9IDAgdGhlbiBIYXNoIGVsc2UgSGFzaHMoaC0xKSk6OnRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2hzKGgpOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaHMoaCk6OnRsIHdoZW4gbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICAgICAgICB8IFtdXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfE5ld2xpbmVzIF8pOjpfXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobik6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaHMobik6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgKEhhc2h8SGFzaHMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFtdIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKEhhc2h8SGFzaHMgXykgOjogKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChbXSBhcyBsKSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIGxcbiAgICAgICAgfCBbSGFzaHxIYXNocyBfXVxuICAgICAgICB8IFsoU3BhY2V8U3BhY2VzIF8pOyBIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IChIYXNofEhhc2hzIF8pOyAoU3BhY2V8U3BhY2VzIF8pXSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIFtdXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICBsb29wICh4OjphY2N1KSB0bFxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gbGV4ZW1lc1xuICAgIGluXG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAxIC0+IFNvbWUoSDEgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMiAtPiBTb21lKEgyIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDMgLT4gU29tZShIMyB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA0IC0+IFNvbWUoSDQgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNSAtPiBTb21lKEg1IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDYgLT4gU29tZShINiB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwIGwgPVxuICAgIG1hdGNoIGV4dGVuc2lvbnMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgXyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gZiNwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsKVxuICAgICAgICAgIHwgU29tZShuciwgbnAsIG5sKSBhcyBlIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gbWF0Y2ggZiNwYXJzZXJfZXh0ZW5zaW9uIG5yIG5wIG5sIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlXG4gICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBrIC0+IGspXG4gICAgICAgIClcbiAgICAgICAgTm9uZVxuICAgICAgICBleHRlbnNpb25zXG5cbiAgKCogYmxvY2txdW90ZXMgKilcbiAgbGV0IGVtYWlsc3R5bGVfcXVvdGluZyAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYmxvY2sgY2wgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OihOZXdsaW5lOjpfIGFzIHRsKSAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlcyhuLTEpXSB0bFxuXG4gICAgICAoKiBtdWx0aSBwYXJhZ3JhcGggYmxvY2txdW90ZXMgd2l0aCBlbXB0eSBsaW5lcyAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgIHwgKE5ld2xpbmVzIF86Ol8gYXMgbCkgfCAoW10gYXMgbCkgLT4gZml4KExpc3QucmV2KGNsQGJsb2NrKSksIGxcbiAgICAgIHwgZTo6dGwgLT4gbG9vcCBibG9jayAoZTo6Y2wpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OmJsb2NrLCB0bCAtPlxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3RpbmcgJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBibG9jayk7XG4gICAgICBTb21lKChCbG9ja3F1b3RlKG1haW5fbG9vcCBbXSBbXSBibG9jayk6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgIHwgXyAtPlxuICAgICAgTm9uZVxuXG5cbiAgKCogbWF5YmUgYSByZWZlcmVuY2UgKilcbiAgbGV0IG1heWJlX3JlZmVyZW5jZSAobWFpbl9sb29wOm1haW5fbG9vcCkgcmMgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIGtub3cgaXQncyBub3QgYSBsaW5rIGFsdGhvdWdoXG4gICAgICAgaXQgc3RhcnRlZCB3aXRoIGEgJ1snICopXG4gICAgKCogU28gaXQgY291bGQgYmUgYSByZWZlcmVuY2Ugb3IgYSBsaW5rIGRlZmluaXRpb24uICopXG4gICAgbGV0IHJlYyBtYXliZV9yZWYgbCA9XG4gICAgICBsZXQgdGV4dCwgcmVtYWlucyA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgaWYgKHRyeSBpZ25vcmUocmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSB0ZXh0KTsgdHJ1ZVxuICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBmYWxzZSkgdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nOyAoKiA8LS0gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGxldCBibGFuaywgcmVtYWlucyA9IHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgcmVtYWlucyBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gdW53YW50ZWQgY2hhcmFjdGVycyBiZXR3ZWVuIENCIGFuZCBPQi4gKilcbiAgICAgIGlmIGVhdCAobGV0IGZsYWcgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgICBmdW5jdGlvbiAoKiBhbGxvdyBvbmx5IGEgc3BhY2UsIG11bHRpcGxlIHNwYWNlcywgb3IgYSBuZXdsaW5lICopXG4gICAgICAgICAgICAgIHwgTmV3bGluZSAtPiAhZmxhZyAmJiAoZmxhZyA6PSBmYWxzZTsgdHJ1ZSlcbiAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIGJsYW5rIDw+IFtdIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZyAoKiA8LS0gbm90IGEgcmVndWxhciByZWZlcmVuY2UgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIHdpdGhcbiAgICAgICAgfCBbXSwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgICAgIHwgaWQsIHJlbWFpbnMgLT5cbiAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgICAgICBTb21lKCgoUmVmKHJjLCBMLnN0cmluZ19vZl90b2tlbnMgaWQsXG4gICAgICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCwgZmFsbGJhY2spKTo6ciksXG4gICAgICAgICAgICAgICBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgIGluXG4gICAgbGV0IHJlYyBtYXliZV9ub25yZWd1bGFyX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCBpbiAoKiBpbXBsaWNpdCBhbmNob3IgKilcbiAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX2RlZiBsID1cbiAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICB8IF8sIFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgIHwgaWQsIChDb2xvbjo6KFNwYWNlfFNwYWNlcyBfKTo6cmVtYWlucylcbiAgICAgIHwgaWQsIChDb2xvbjo6cmVtYWlucykgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfKTo6IF8gYXMgbCAtPiBTcGxpdChbXSwgbClcbiAgICAgICAgICAgICAgICAgIHwgZTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pKVxuICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUoW10sIF8pIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICB8IFNvbWUodXJsLCByZW1haW5zKSAtPlxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZW1haW5zID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBlYXRcbiAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiByZWFkX3VudGlsX2RxIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgUXVvdGVzKDApOjp0bCAtPiBbXSwgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gcmVhZF91bnRpbF9xIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzOjp0bC0+IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBsIC0+IFtdLCBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggdXJsID4gMiAmJiB1cmwuWzBdID0gJzwnXG4gICAgICAgICAgICAgICAgICYmIHVybC5bU3RyaW5nLmxlbmd0aCB1cmwgLSAxXSA9ICc+JyB0aGVuXG4gICAgICAgICAgICAgICAgU3RyaW5nLnN1YiB1cmwgMSAoU3RyaW5nLmxlbmd0aCB1cmwgLSAyKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmMjYWRkX3JlZiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGlkKSAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlKSB1cmw7XG4gICAgICAgICAgICBTb21lKHIsIFtOZXdsaW5lXSwgcmVtYWlucylcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluXG4gICAgdHJ5XG4gICAgICBtYXliZV9yZWYgbFxuICAgIHdpdGggfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICB0cnlcbiAgICAgICAgbWF5YmVfZGVmIGxcbiAgICAgIHdpdGhcbiAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXliZV9ub25yZWd1bGFyX3JlZiBsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgTm9uZVxuXG5cbiAgKCoqIG1heWJlIGEgbGluayAqKVxuICBsZXQgbWF5YmVfbGluayAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbmtcXG5cIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVhZF91cmwgbmFtZSBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz5yZWFkX3VybCAlU1xcblwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxfY3AsIHJfY3AgPVxuICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2NwPSVTIHJfY3A9JVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2NwKVxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcl9jcCk7XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBsX2RxLCByX2RxID1cbiAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbF9kcT0lUyByX2RxPSVTXFxuJSFcIlxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2RxKVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2RxKTtcbiAgICAgICAgICAoKiBtYXliZSB0aXRsZSAqKVxuICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGxfY3AgPiBMaXN0Lmxlbmd0aCBsX2RxIHRoZW4gKCogdGl0bGUgKilcbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gdGl0bGVcXG4lIVwiO1xuICAgICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LnJldiBsX2RxIHdpdGhcbiAgICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIChMaXN0LnJldiB0bClcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyBsX2RxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IHJlYWRfdW50aWxfZHEgfm5vX25sOmZhbHNlIH5icTpmYWxzZSByX2RxIGluXG4gICAgICAgICAgICAgIGxldCByZXN0ID0gc25kKHJlYWRfdW50aWxfY3BhcmVudGggcmVzdCkgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICB3aXRoIE5MX2V4Y2VwdGlvbiB8IFByZW1hdHVyZV9lbmRpbmcgLT4gKCogbm8gdGl0bGUgKilcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBubyB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICBsZXQgdXJsID0gbWF0Y2ggTGlzdC5yZXYgbF9jcCB3aXRoXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBMaXN0LnJldiB0bFxuICAgICAgICAgICAgICB8IF8gLT4gbF9jcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IFtdLCByX2NwIGluXG4gICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICBTb21lKFVybCh1cmwsIG5hbWUsIHRpdGxlKSA6OiByLCBbQ3BhcmVudGhlc2lzXSwgcmVzdClcbiAgICAgICAgICBlbmRcbiAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVhZF9uYW1lIGwgPVxuICAgICAgKCogaXQncyBub3QgcmVhbGx5IHRoZSBcIm5hbWVcIiBvZiBhIFVSTCBidXQgd2hhdFxuICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGlubmVyIEhUTUwgb2YgYW4gSFRNTCAnQScgdGFnICopXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbms+IHJlYWRfbmFtZVxcblwiO1xuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpczo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChlYXRfYmxhbmsgdGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3MgMDo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXNzIG46OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoT3BhcmVudGhlc2lzcyhuLTEpOjp0bClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+IE5vbmVcbiAgICBpblxuICAgIHJlYWRfbmFtZSBsXG5cblxuICBsZXQgaGFzX3BhcmFncmFwaHMgbCA9XG4gICAgKCogSGFzIGF0IGxlYXN0IDIgY29uc2VjdXRpdmUgbmV3bGluZXMuICopXG4gICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIE5ld2xpbmVzIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcblxuICBsZXQgcGFyc2VfbGlzdCAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBpZiBkZWJ1ZyB0aGVuIGJlZ2luXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdCByPSglcykgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgXCJcIiAoKiAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKSAqKVxuICAgICAgICBcIlwiICgqIChkZXN0cmluZ19vZl90bCBwKSAqKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgfmxpbWl0OjQwIGwpO1xuICAgIGVuZDtcbiAgICBsZXQgbW9kdWxlIFVPID0gc3RydWN0IHR5cGUgb3JkZXJlZCA9IE8gfCBVIGVuZCBpblxuICAgIGxldCBvcGVuIFVPIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIHBhcnNlX2xpc3Q6IGw9KCVzKVxcbiUhXCIgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgIGxldCBlbmRfb2ZfaXRlbSAoaW5kZW50OmludCkgbCA6IHRvayBzcGxpdF9hY3Rpb24gID0gbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIFNwbGl0KFtdLFtdKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6ICgoU3BhY2VzIG4pIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiB0bFxuICAgICAgICAgICAgICAgICAgICAgICBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA9IGluZGVudCs0IHRoZW4gKCogYmxvY2txdW90ZSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChuKzIpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6IChTcGFjZXMgbiA6OiB0bCBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA+PSBpbmRlbnQrOCB0aGVuICgqIGNvZGUgaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygwKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZTo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs0IHRoZW4gKCogbmV3IHBhcmFncmFwaCBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCAoTmV3bGluZXMgXykgOjogXyAtPiAoKiBuID4gMCAqKVxuICAgICAgICAoKiBFbmQgb2YgaXRlbSwgc3RvcCAqKVxuICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OlxuICAgICAgICAoXG4gICAgICAgICAgKChTcGFjZXxTcGFjZXMgXykgOjogKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKChTcGFjZXxTcGFjZXMgXykgOjogTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgfCAoKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKE51bWJlciBfIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8pXG4gICAgICAgICAgYXMgdGwpIC0+XG4gICAgICAgIFNwbGl0KFtOZXdsaW5lXSwgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgKCogQSBsaW5lIHdpdGggc3BhY2VzIHNob3VsZG4ndCBpbnRlcmZlcmUgaGVyZSxcbiAgICAgICAgICAgd2hpY2ggaXMgYWJvdXQgZXhhY3RseSAyIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSByZXdyaXRlIHRoZSBoZWFkIG9mIHRoZSBsZXhpbmcgc3RyZWFtLiAqKVxuICAgICAgICBDb250aW51ZV93aXRoKFtdLCBOZXdsaW5lcyAwIDo6IHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiAoTmV3bGluZXMgXykgOjogXyAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBhdCBsZWFzdCAzIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSBzdG9wLiAqKVxuICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlcyBfIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlc1wiLFxuICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwID1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gU3BhY2VzIF86OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBTb21lKHIscCxTcGFjZTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgQ29udGludWVcbiAgICBpblxuICAgIGxldCByZXZfdG9fdCBsID1cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgKCogTmV3bGluZXMgYXQgdGhlIGVuZCBvZiBpdGVtcyBoYXZlIG5vIG1lYW5pbmcgKGV4Y2VwdCB0byBlbmQgdGhlXG4gICAgICAgICBpdGVtIHdoaWNoIGlzIGV4cHJlc3NlZCBieSB0aGUgY29uc3RydWN0b3IgYWxyZWFkeSkuICopXG4gICAgICBsZXQgbCA9IG1hdGNoIGwgd2l0aCAoTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+IHRsIHwgXyAtPiBsIGluXG4gICAgICBtYWluX2xvb3AgW10gW05ld2xpbmVdIChMaXN0LnJldiBsKVxuICAgIGluXG4gICAgbGV0IGFkZCAoc3VibGlzdDplbGVtZW50KSBpdGVtcyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBhZGRcXG4lIVwiO1xuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgKE8saW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKE8saW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICAgIHwgKFUsaW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKFUsaW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICBpblxuICAgIGxldCBtYWtlX3VwIH5wIGl0ZW1zIDogT21kX3JlcHJlc2VudGF0aW9uLmVsZW1lbnQgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFrZV91cCBwPSViXFxuJSFcIiBwO1xuICAgICAgbGV0IGl0ZW1zID0gTGlzdC5yZXYgaXRlbXMgaW5cbiAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgIHwgKFUsXyxpdGVtKTo6XyAtPlxuICAgICAgICBpZiBwIHRoZW5cbiAgICAgICAgICBVbHAoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgVWwoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgfCAoTyxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIE9scChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBPbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGZhaWx3aXRoIFwibWFrZV91cCBjYWxsZWQgd2l0aCBbXVwiICgqIGFzc2VydCBmYWxzZSAqKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgbCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBsaXN0X2l0ZW1zOiBwPSViIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwIChMLmRlc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgKCogbm8gbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgKCogbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICAoKiBuZXcgdW5vcmRlcmVkIGl0ZW1zICopXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDIzNDYpIG5ld19pdGVtPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBuZXdfaXRlbSk7XG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFswXSAoKFUsWzBdLCByZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChVLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICAgfCAxOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgaSA+IDEgdGhlblxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgICAgICBlbHNlICgqIGkgPCAxIDogbmV3IHN1YiBsaXN0KilcbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgxOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsMTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTsgKCogYe9lLi4uIGxpc3RlcyBtYWwgZm9ybellcyA/ISAqKVxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFtuKzJdICgoVSxbbisyXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzKCVkOjpfKSBuPSVkIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIGkgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBpZiBpID0gbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pIDo6IGl0ZW1zIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIGl0ZW1zIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogbmV3IG9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAwKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBuZXdfaXRlbTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoTyxbMF0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAwOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IF86Ol8gLT5cbiAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZTo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChPLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoTywxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZXMgbjo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzW10gbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChPLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgIGVsc2UgaWYgaSA8IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wXG4gICAgICAgICAgICAgICAgICAgICgobisyKTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLChuKzIpOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV1cbiAgICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogKilcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OihOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpTdGFyOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICAgIC0+XG4gICAgICAgIGxpc3RfaXRlbXMgfnA6dHJ1ZSBpbmRlbnRzIGl0ZW1zIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIGxldCByZWMgc3RyaW5nX29mX2l0ZW1zIGl0ZW1zID1cbiAgICAgICAgICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCAoTyxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoTyxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgKFUsaW5kZW50OjpfLGl0ZW0pOjp0bCAtPlxuICAgICAgICAgICAgICAgICBzcHJpbnRmIFwiKFUsaT0lZCwlUylcIiAoaW5kZW50KSAoT21kX2JhY2tlbmQuaHRtbF9vZl9tZCBpdGVtKVxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pdGVtcyB0bFxuICAgICAgICAgICAgICB8IF8gLT4gXCIod2VpcmQpXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTkFMSSBwYXJzZV9saXN0OiBsPSglUykgaXRlbXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbCkgKHN0cmluZ19vZl9pdGVtcyBpdGVtcylcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICgqIG5vdCBhIGxpc3QgaXRlbSAqKVxuICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICBpblxuICAgIG1hdGNoIGxpc3RfaXRlbXMgfnA6ZmFsc2UgW10gW10gbCB3aXRoXG4gICAgfCBycCwgbCAtPlxuICAgICAgcnA6OnIsIFtOZXdsaW5lXSwgbFxuXG5cblxuICBsZXQgaWNvZGUgPyhkZWZhdWx0X2xhbmc9ZGVmYXVsdF9sYW5nKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIGluZGVudGVkIGNvZGU6IHJldHVybnMgKHIscCxsKSB3aGVyZSByIGlzIHRoZSByZXN1bHQsIHAgaXMgdGhlXG4gICAgICAgbGFzdCB0aGluZyByZWFkLCBsIGlzIHRoZSByZW1haW5zICopXG4gICAgbGV0IGR1bW15X3RhZyA9IFRhZyhcImR1bW15X3RhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uID0gZnVuIHIgcCBsIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgaW5cbiAgICBsZXQgYWNjdSA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBsZXQgcmVjIGxvb3AgcyB0bCA9IG1hdGNoIHMsIHRsIHdpdGhcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgKFNwYWNlfFNwYWNlcygwfDEpKTo6XyAtPlxuICAgICAgICAoKiAxLCAyIG9yIDMgc3BhY2VzLiAqKVxuICAgICAgICAoKiAtPiBSZXR1cm4gd2hhdCdzIGJlZW4gZm91bmQgYXMgY29kZSBiZWNhdXNlIHdoYXQgZm9sbG93cyBpc24ndC4gKilcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KSA6OiByLCBbcF0sIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIFNwYWNlcyhuKTo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgICgqIEF0IGxlYXN0IDQgc3BhY2VzLCBpdCdzIHN0aWxsIGNvZGUuICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKGlmIG4gPj0gNCB0aGVuIFNwYWNlcyhuLTQpIGVsc2UgaWYgbiA9IDMgdGhlbiBTcGFjZSBlbHNlIGR1bW15X3RhZylcbiAgICAgICAgICB0bFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAobm90X3NwYWNlczo6XyBhcyB0bCkgLT4gKCogc3RvcCAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2UgaXQncyBubyBtb3JlIGNvZGUuICopXG4gICAgICB8IHAsIGU6OnRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICAoKiBodG1sIGVudGl0aWVzIGFyZSB0byBiZSBjb252ZXJ0ZWQgbGF0ZXIhICopXG4gICAgICAgIGxvb3AgZSB0bFxuICAgICAgfCBwLCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KTo6ciwgW3BdLCBbXVxuICAgIGluXG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBTcGFjZXMgbjo6dGwgLT5cbiAgICAgIGlmIG4gPj0gNCB0aGVuXG4gICAgICAgIFNvbWUobG9vcCAoU3BhY2VzKG4tNCkpIHRsKVxuICAgICAgZWxzZSBpZiBuID0gMyB0aGVuXG4gICAgICAgIFNvbWUobG9vcCBTcGFjZSB0bClcbiAgICAgIGVsc2UgU29tZShsb29wIGR1bW15X3RhZyB0bClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuICAoKiBSZXR1cm5zIFsocixwLGwpXSB3aGVyZSBbcl0gaXMgdGhlIHJlc3VsdCwgW3BdIGlzIHRoZSBsYXN0IHRoaW5nXG4gICAgIHJlYWQsIGFuZCBbbF0gaXMgd2hhdCByZW1haW5zLiAqKVxuICBsZXQgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPD0gMyB0aGVuIChcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgICAgKCogdW5vcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IChOdW1iZXIgXyk6OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgKCogb3JkZXJlZCBsaXN0ICopXG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gKEwubWFrZV9zcGFjZSBuOjpsZXhlbWVzKVxuICAgICAgfCBbXVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfICAtPiAoKiBibGFuayBsaW5lLCBza2lwIHNwYWNlcyAqKVxuICAgICAgICByLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgICAgfCAgXzo6XyAtPlxuICAgICAgICBUZXh0IChcIiBcIik6OnIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgKVxuICAgIGVsc2UgKCAoKiBuPj00LCBibGFuayBsaW5lIG9yIGluZGVudGVkIGNvZGUgKilcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCBbXSB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+IHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8IF8gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBpY29kZSB+ZGVmYXVsdF9sYW5nIHIgW05ld2xpbmVdIChMLm1ha2Vfc3BhY2UgbiA6OiBsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gcixwLGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuaWNvZGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgKVxuXG4gIGxldCBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lID8oaHRtbD1mYWxzZSkgbiByIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIChUZXh0IFwiIFwiOjpyKSwgW1NwYWNlXSwgbGV4ZW1lc1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IE5ld2xpbmUgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCB0aGUgbmV3bGluZVxcbiUhXCI7XG4gICAgICAgIEJyOjpyLCBbU3BhY2VzKG4tMildLCB0bFxuICAgICAgfCBOZXdsaW5lcyBrIDo6IHRsIHdoZW4gbm90IGh0bWwgLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiKE9NRCkgMiBvciBtb3JlIHNwYWNlcyBiZWZvcmUgYSBuZXdsaW5lLCBlYXQgMSBuZXdsaW5lXCI7XG4gICAgICAgIGxldCBuZXdsaW5lcyA9IGlmIGsgPSAwIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzKGstMSkgaW5cbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIG5ld2xpbmVzIDo6IHRsXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChuPjEpO1xuICAgICAgICAoVGV4dCAoU3RyaW5nLm1ha2UgbiAnICcpOjpyKSwgW1NwYWNlcyhuLTIpXSwgbGV4ZW1lc1xuICAgIClcblxuXG4gIGxldCBtYXliZV9hdXRvZW1haWwgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgTGVzc3RoYW46OnRsIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGZzcGxpdCB+ZXhjbDooZnVuY3Rpb24gKE5ld2xpbmV8TmV3bGluZXMgX3xTcGFjZXxTcGFjZXMgXykgOjogXy0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB+ZjooZnVuY3Rpb24gQXQ6OnRsIC0+IFNwbGl0KFtdLHRsKSB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICB0bFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZShsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvbiBHcmVhdGVydGhhbjo6dGwgLT4gU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMDo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG46OnRsIC0+IFNwbGl0KFtdLEdyZWF0ZXJ0aGFucyhuLTEpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgIHJpZ2h0XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lKGRvbWFpbiwgdGwpIC0+XG4gICAgICAgICAgICBsZXQgZW1haWwgPSBMLnN0cmluZ19vZl90b2tlbnMgbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgXiBcIkBcIiBeIEwuc3RyaW5nX29mX3Rva2VucyBkb21haW4gaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKFwibWFpbHRvOlwiXmVtYWlsLFtUZXh0IGVtYWlsXSxcIlwiKTo6cixbR3JlYXRlcnRoYW5dLHRsKVxuICAgICAgZW5kXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5tYXliZV9hdXRvZW1haWw6IHdyb25nIHVzZSBvZiB0aGUgZnVuY3Rpb24uXCJcblxuICBsZXQgaXNfaGV4IHMgPVxuICAgIFN0cmluZy5sZW5ndGggcyA+IDFcbiAgICAmJiAocy5bMF0gPSAnWCcgfHwgcy5bMF0gPSAneCcpXG4gICAgJiYgKGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgIGkgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgIHx8XG4gICAgICAgICAobWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICBpbiBsb29wIDEpXG5cbiAgbGV0IG1lZGlhdHlwZXRleHRvbWQgOiBzdHJpbmcgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaWYgYiB0aGVuIHIgZWxzZSBsXG4gICAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgICBsb29wIHRydWUgciB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGIgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsb29wIGZhbHNlIFtdIGxcblxuICBleGNlcHRpb24gT3JwaGFuX2Nsb3Npbmcgb2Ygc3RyaW5nICogbCAqIGxcblxuICBsZXQgcmVjIG1haW5faW1wbF9yZXYgfmh0bWwgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAoKiBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGxfcmV2IGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYiByPSVzIHA9KCVzKSBsPSglcylcXG4lIVwiXG4gICAgICAgIGh0bWxcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIChMaXN0LnJldiByKSlcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHByZXZpb3VzKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgbGV4ZW1lcyk7XG4gICAgbWF0Y2ggcHJldmlvdXMsIGxleGVtZXMgd2l0aFxuICAgICgqIG5vIG1vcmUgdG8gcHJvY2VzcyAqKVxuICAgIHwgXywgW10gLT5cbiAgICAgICgqIHJldHVybiB0aGUgcmVzdWx0ICgvIVxcIGl0IGhhcyB0byBiZSByZXZlcnNlZCBhcyBzb21lIHBvaW50KSAqKVxuICAgICAgclxuXG4gICAgKCogVGFnOiB0YWcgc3lzdGVtICRcXGN1cCQgaGlnaC1wcmlvcml0eSBleHRlbnNpb24gbWVjaGFuaXNtICopXG4gICAgfCBfLCBUYWcoX25hbWUsIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBlI3BhcnNlcl9leHRlbnNpb24gciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHByZXZpb3VzIHRsXG4gICAgICBlbmRcblxuICAgICgqIEhUTUwgY29tbWVudHMgKilcbiAgICB8IF8sIChMZXNzdGhhbiBhcyB0KTo6KEV4Y2xhbWF0aW9uOjpNaW51c3MgMDo6YyBhcyB0bCkgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIGxldCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IChNaW51c3MgXyBhcyBtKTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCAtPlxuICAgICAgICAgICAgU3BsaXQoW2c7bV0sIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZnNwbGl0IH5mOmYgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgKGNvbW1lbnRzLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBIdG1sX2NvbW1lbnQoTC5zdHJpbmdfb2ZfdG9rZW5zIGNvbW1lbnRzKSA6OiByIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIFtOZXdsaW5lXSBuZXdfdGxcbiAgICAgIGVuZFxuXG4gICAgKCogZW1haWwtc3R5bGUgcXVvdGluZyAvIGJsb2NrcXVvdGUgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIEdyZWF0ZXJ0aGFuOjooU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGVtYWlsc3R5bGVfcXVvdGluZyBtYWluX2xvb3AgciBwcmV2aW91cyAoTmV3bGluZTo6bGV4ZW1lcylcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nLCB3aXRoIGxpbmVzIHN0YXJ0aW5nIHdpdGggc3BhY2VzISAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKFNwYWNlfFNwYWNlcygwfDEpIGFzIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBHcmVhdGVydGhhbiA6OiAoU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICAoKiBJdCdzIDEsIDIgb3IgMyBzcGFjZXMsIG5vdCBtb3JlIGJlY2F1c2UgaXQgd291bGRuJ3QgbWVhblxuICAgICAgICAgcXVvdGluZyBhbnltb3JlIGJ1dCBjb2RlLiAqKVxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IG5ld19yLCBwLCByZXN0ID1cbiAgICAgICAgICBsZXQgZm9vLCByZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChMLmxlbmd0aCBzKSAoTmV3bGluZTo6bGV4ZW1lcykgd2l0aFxuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6Zm9vLCByZXN0IC0+IGZvbywgcmVzdFxuICAgICAgICAgICAgfCByZXMgLT4gcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCBbXSBwcmV2aW91cyAoTmV3bGluZTo6Zm9vKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUobmV3X3IsIHAsIFtdKSAtPiBuZXdfciwgcCwgcmVzdFxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChuZXdfckByKSBbTmV3bGluZV0gcmVzdFxuICAgICAgZW5kXG5cbiAgICAoKiBtaW51cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSxcbiAgICAgIChNaW51c3xNaW51c3MgXyBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKTo6XyBhcyB0bCkgLT5cbiAgICAgICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9tIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKCogbm8gaHIsIHNvIGl0IGNvdWxkIGJlIGEgbGlzdCAqKVxuICAgICAgICAgIGJlZ2luIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBNaW51cyAtPiAoKiBpdCdzIGEgbGlzdCAqKVxuICAgICAgICAgICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcbiAgICAgICAgICAgIHwgXyAtPiAoKiBub3QgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChNaW51c3xNaW51c3MgXyBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgYW5kIGl0J3Mgbm90IGEgbGlzdCBlaXRoZXJcbiAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQncyBub3QgZm9sbG93ZWQgYnkgc3BhY2VzICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcblxuICAgICgqIGhhc2hlcyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKChTcGFjZXxTcGFjZXMgXykgOjogdHRsIGFzIHRsKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKHR0bCBhcyB0bCkgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGlmIG4gPD0gNCB0aGVuXG4gICAgICAgIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIChuKzIpIHIgcHJldmlvdXMgdHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIucmVhZF90aXRsZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBIYXNoIDo6IHRsIC0+ICgqIGhhc2ggdGl0bGVzICopXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3RpdGxlIG1haW5fbG9vcCAxIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG4gICAgfCBfLCAoSGFzaHxIYXNocyBfIGFzIHQpIDo6IHRsIC0+ICgqIGhhc2ggLS0gbm8gdGl0bGUgKilcbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgKCogc3BhY2VzIGFmdGVyIGEgbmV3bGluZTogY291bGQgbGVhZCB0byBociAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKChTcGFjZXxTcGFjZXMgXykgYXMgc3ApIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBociB0bCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIE5vIFtIcl0sIGJ1dCBtYXliZSBbVWxdLCBbT2xdLCBjb2RlLC4uLiAqKVxuICAgICAgICAgIGxldCBuID0gTC5sZW5ndGggc3AgaW5cbiAgICAgICAgICBsZXQgciwgcCwgbCA9XG4gICAgICAgICAgIHNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSBtYWluX2xvb3AgZGVmYXVsdF9sYW5nIG4gciBwcmV2aW91cyB0bCBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBTb21lIHRsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYW55d2hlcmUgKilcbiAgICB8IF8sICgoU3BhY2V8U3BhY2VzIF8pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiB0b28gbWFueSBjYXNlcyB0byBiZSBoYW5kbGVkIGhlcmUgKilcbiAgICAgIGxldCBuID0gTC5sZW5ndGggdCBpblxuICAgICAgbGV0IHIsIHAsIGwgPSBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lIH5odG1sIG4gciB0bCBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuXG4gICAgKCogdW5kZXJzY29yZXMgKilcbiAgICB8IF8sIChVbmRlcnNjb3JlIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHVuZGVyc2NvcmUsIG9yIGVtcGggKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICApXG4gICAgfCBfLCAoVW5kZXJzY29yZXMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHVuZGVyc2NvcmVzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBpZiBuID0gMCB0aGVuICgqIDEgdW5kZXJzY29yZSAqKVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZSAoKiAyIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgoW0JvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KV0pIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcblxuICAgICgqIGVudW1lcmF0ZWQgbGlzdHMgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChOdW1iZXIgXykgOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogdGwgLT5cbiAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuXG4gICAgKCogcGx1cyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBQbHVzIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBzdGFycyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBTdGFyIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgKCogbWF5YmUgaHIgb3IgbmV3IGxpc3QgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXJzIF8gOjogXyB3aGVuIGhyX3MgbGV4ZW1lcyA8PiBOb25lIC0+XG4gICAgICAoKiBociAqKVxuICAgICAgKG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgfCBTb21lIGwgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBtYXliZSBociAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgZW5kXG4gICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBfLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBvbmUgXCJvcnBoYW5cIiBzdGFyLCBvciBlbXBoIC8vIGNhbid0IGJlIGhyICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuICAgIHwgXywgKFN0YXJzKCgwfDEpIGFzIG4pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiAyIG9yIDMgXCJvcnBoYW5cIiBzdGFycywgb3IgZW1waC9ib2xkICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAobisyKSB0bCB3aXRoXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBiYWNrc2xhc2hlcyAqKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChOZXdsaW5lIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+ICgqIFxcXFxuXFxuXFxuXFxuLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbQmFja3NsYXNoOyBOZXdsaW5lXSAoTmV3bGluZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdXG4gICAgICAgIChOZXdsaW5lcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQmFja3F1b3RlIGFzIHQpIDo6IHRsIC0+ICgqIFxcYCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEJhY2txdW90ZXMgMCA6OiB0bCAtPiAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdIChCYWNrcXVvdGUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxgYGBgLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW0JhY2tzbGFzaDsgQmFja3F1b3RlXVxuICAgICAgICAoQmFja3F1b3RlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBcXCogKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBTdGFycyAwIDo6IHRsIC0+ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFyIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCoqKiouLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbQmFja3NsYXNoOyBTdGFyXSAoU3RhcnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogXFxfICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgMCA6OiB0bCAtPiAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdIChVbmRlcnNjb3JlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFVuZGVyc2NvcmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdXG4gICAgICAgIChVbmRlcnNjb3JlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxceyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgMCA6OiB0bCAtPiAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFjZSBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIDAgOjogdGwgLT4gKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2UgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2VzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXFsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwoICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXSAoT3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9wYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXVxuICAgICAgICAoT3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPiAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpcyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDcGFyZW50aGVzaXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpc3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFBsdXMgYXMgdCkgOjogdGwgLT4gKCogXFwrICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgMCA6OiB0bCAtPiAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFBsdXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTWludXMgYXMgdCkgOjogdGwgLT4gKCogXFwtICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIDAgOjogdGwgLT4gKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE1pbnVzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRG90IGFzIHQpIDo6IHRsIC0+ICgqIFxcLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IERvdHMgMCA6OiB0bCAtPiAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3QgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwuLi4uLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW0JhY2tzbGFzaDsgRG90XSAoRG90cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRXhjbGFtYXRpb24gYXMgdCkgOjogdGwgLT4gKCogXFwhICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIDAgOjogdGwgLT4gKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl0gKEV4Y2xhbWF0aW9uIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEV4Y2xhbWF0aW9ucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl1cbiAgICAgICAgKEV4Y2xhbWF0aW9ucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoSGFzaCBhcyB0KSA6OiB0bCAtPiAoKiBcXCMgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyAwIDo6IHRsIC0+ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogSGFzaHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2hzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXD4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgMCA6OiB0bCAtPiAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogR3JlYXRlcnRoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXVxuICAgICAgICAoR3JlYXRlcnRoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXDwgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgMCA6OiB0bCAtPiAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXSAoTGVzc3RoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTGVzc3RoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXVxuICAgICAgICAoTGVzc3RoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgKEJhY2tzbGFzaHMgMCBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJcXFxcXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgKEJhY2tzbGFzaHMgbiBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgaWYgbiBtb2QgMiA9IDAgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSB0bFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSAoQmFja3NsYXNoIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoOjpbXSAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbXSBbXVxuICAgIHwgXywgQmFja3NsYXNoOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbQmFja3NsYXNoXSB0bFxuXG4gICAgKCogPCAqKVxuICAgIHwgXywgKExlc3N0aGFufExlc3N0aGFucyBfIGFzIHQpXG4gICAgICAgICA6OiAoV29yZChcImh0dHBcInxcImh0dHBzXCJ8XCJmdHBcInxcImZ0cHNcInxcInNzaFwifFwiYWZwXCJ8XCJpbWFwXCIpIGFzIHcpXG4gICAgICAgICA6OiBDb2xvbjo6U2xhc2hzKG4pOjp0bCAtPlxuICAgICAgKCogXCJzZW1pLWF1dG9tYXRpY1wiIFVSTHMgKilcbiAgICAgIGxldCByZWMgcmVhZF91cmwgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VuIHcpIF4gXCI6Ly9cIlxuICAgICAgICAgICAgXiAoaWYgbiA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLm1ha2UgKG4tMSkgJy8nKVxuICAgICAgICAgICAgXiBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IGFjY3UpXG4gICAgICAgICAgaW4gU29tZSh1cmwsIHRsKVxuICAgICAgICB8IHg6OnRsIC0+XG4gICAgICAgICAgcmVhZF91cmwgKHg6OmFjY3UpIHRsXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgYmVnaW4gbWF0Y2ggcmVhZF91cmwgW10gdGwgd2l0aFxuICAgICAgICB8IFNvbWUodXJsLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBcbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgMCAtPiBUZXh0IFwiPFwiIDo6IHJcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnPCcpIDo6IHJcbiAgICAgICAgICAgIHwgXyAtPiByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChVcmwodXJsLFtUZXh0IHVybF0sXCJcIik6OnIpIFtdIG5ld190bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG5cbiAgICAoKiBXb3JkKHcpICopXG4gICAgfCBfLCBXb3JkIHc6OnRsIC0+XG4gICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB3IDo6IHIpIFtXb3JkIHddIHRsXG5cbiAgICAoKiBuZXdsaW5lIGF0IHRoZSBlbmQgKilcbiAgICB8IF8sIFtOZXdsaW5lXSAtPlxuICAgICAgTkw6OnJcblxuICAgICgqIG5hbWVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoV29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bCkgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB3IGh0bWxjb2Rlc19zZXQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6TnVtYmVyIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIG1heWJlIGhleCBkaWdpdC1jb2RlZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKEhhc2g6OldvcmQgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIHdoZW4gaXNfaGV4IHcgLT5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdyA8PSA0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cblxuICAgICgqIEFtcGVyc2FuZCAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtBbXBlcnNhbmRdIHRsXG5cbiAgICAoKiAyIEFtcGVyc2FuZHMgKilcbiAgICB8IF8sIEFtcGVyc2FuZHMoMCk6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gKEFtcGVyc2FuZDo6dGwpXG5cbiAgICAoKiBTZXZlcmFsIEFtcGVyc2FuZHMgKG1vcmUgdGhhbiAyKSAqKVxuICAgIHwgXywgQW1wZXJzYW5kcyhuKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kcyhuLTEpOjp0bClcblxuICAgICgqIGJhY2txdW90ZXMgKilcbiAgICB8IF8sIChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgfmRlZmF1bHRfbGFuZyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCAqKVxuICAgICgqIDxici8+IGFuZCA8aHIvPiB3aXRoIG9yIHdpdGhvdXQgc3BhY2UocykgKilcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bClcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjooU3BhY2V8U3BhY2VzIF8pOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGcgd2l0aFxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl0gKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dXG4gICAgICAgICAgICAoR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBhd2FpdGVkIG9ycGhhbiBodG1sIGNsb3NpbmcgdGFnICopXG4gICAgfCBfLCBMZXNzdGhhbjo6U2xhc2g6OldvcmQodyk6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGxcbiAgICAgIHdoZW4gIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gLT5cbiAgICAgIHJhaXNlIChPcnBoYW5fY2xvc2luZyh3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdGwpKSlcblxuICAgICgqIGJsb2NrIGh0bWwgKilcbiAgICB8IChbXSB8IFtOZXdsaW5lfE5ld2xpbmVzIF98VGFnKFwiSFRNTEJMT0NLXCIsIF8pXSksXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW1dvcmQgXCJcIl0gbGV4ZW1lc1xuICAgICAgZWxzZSBpZiBub3QgKGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldCkgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgRlRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0IGh0bWwgbCA9XG4gICAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCA/KGh0bWw9aHRtbCkgbCA9XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgIHwgSFRNTCh0LCBhLCBjKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBsZXQgZl9hID0gZmlsdGVyX3RleHRfb21kX3JldiBhIGluXG4gICAgICAgICAgICAgICAgICBpZiBmX2EgIT0gYSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEh0bWxfYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgZl9hLFxuICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAobWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6ZmFsc2UgKExpc3QucmV2IGMpKSlcbiAgICAgICAgICAgICAgICAgICAgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LCBmX2EsIG1kX29mX2ludGVybV9saXN0IH5odG1sOnRydWUgKExpc3QucmV2IGMpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBNRCBtZDo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZEBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6UlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdFxuICAgICAgICAgICAgICAgICAgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIChMaXN0LnJldiB0MikpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQxOjpGVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgRlRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgaWYgaHRtbCB0aGVuXG4gICAgICAgICAgICAgICAgICBSYXcoTC5zdHJpbmdfb2ZfdG9rZW5zIHQpIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWFpbl9sb29wIH5odG1sIFtdIFtXb3JkIFwiXCJdIHRcbiAgICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldiB0KSA6OiB0bClcbiAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCBsID0gbWRfb2ZfaW50ZXJtX2xpc3QgdHJ1ZSBsXG4gICAgICAgICAgICBsZXQgc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMgPVxuICAgICAgICAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICAgICAgICAgICAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBPcGVuIHQgLT4gYnByaW50ZiBiIFwie0IvT3BlbiAlc31cIiB0XG4gICAgICAgICAgICAgICAgICB8IEF3YWl0aW5nIHQgLT4gYnByaW50ZiBiIFwie0IvQXdhaXRpbmcgJXN9XCIgdFxuICAgICAgICAgICAgICAgICkgdGFnc3RhdHVzO1xuICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgICAgICAgIGVuZCBpblxuICAgICAgICAgIGxldCBhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkgPVxuICAgICAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgICB8IFQuUlRPS0VOUyByIDo6IGJvZHkgLT4gVC5SVE9LRU5TKHg6OnIpOjpib2R5XG4gICAgICAgICAgICB8IF8gLT4gVC5SVE9LRU5TW3hdIDo6IGJvZHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCAoYm9keTpULmludGVybSBsaXN0KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zID1cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzMzMgQkhUTUwgbG9vcCBib2R5PSVTIHRhZ3N0YXR1cz0lUyAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQoVC5tZF9vZl9pbnRlcm1fbGlzdCBib2R5KSlcbiAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQwMSBCSFRNTCBOb3QgZW5vdWdoIHRvIHJlYWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zKG4tMSkpXG4gICAgICAgICAgICAgICAgICAgICAgIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyAoTGVzc3RoYW46OnRva2VucylcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBzZWxmLWNsb3NpbmcgdGFncyAqKVxuICAgICAgICAgICAgfCBTbGFzaDo6R3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyh0YWduYW1lKSA6OiB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MTkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgIFNsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgb3BlbmVyICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjpTbGFzaDo6KFdvcmQodGFnbmFtZSkgYXMgdylcbiAgICAgICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIHQgPSB0YWduYW1lIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc1IEJIVE1MIHByb3Blcmx5IGNsb3NpbmcgJVNcXG4lIVwiIHQ7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc5IEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5SVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzgzIEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgaWYgIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChPcnBoYW5fY2xvc2luZyh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuOjp0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW5zKG4tMSk6OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIDNcXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldFxuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgPFdvcmQoJXMpLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGF0dHJzIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5NiBCSFRNTCB0YWcgJVMgYnV0IGF0dHJzIDw+IFtdXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MjEgQkhUTUwgdGFnICVTLCB0YWdzdGF0dXM9JVMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycz1bXSwgdG9rZW5zPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBbXSBbXSAoVC5Bd2FpdGluZyB0YWduYW1lOjp0YWdzdGF0dXMpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MzMgQkhUTUwgdGFnc3RhdHVzPSVTIHRva2Vucz0lU1xcbiUhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgaWYgTGlzdC5tZW0gKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIikgYXR0cnMgdGhlblxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSB0IDo6ICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlKG1haW5faW1wbF9yZXYgfmh0bWwgW10gW10gdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MjQgQkhUTUwgY2xvc2luZyB0YWcgbm90IGZvdW5kIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluICVTXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDbG9zaW5nIHRhZyBgJXMnIG5vdCBmb3VuZCBmb3IgdGV4dC9vbWQgem9uZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhdHlwZXRleHRvbWQgOj0gTGlzdC50bCAhbWVkaWF0eXBldGV4dG9tZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoIE9ycGhhbl9jbG9zaW5nKHRhZ25hbWUsIGRlbGltaXRlciwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmIHIgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gYXMgZSA6OiB0bCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbjo6XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExlc3N0aGFuOjp0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbjo6clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbnMobi0xKTo6cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0bCA9PSBkZWxpbWl0ZXIgfHwgdGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGwgPT0gZGVsaW1pdGVyIHx8IGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IChlOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmIFtdIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NTIgQkhUTUwgdG9rZW5zPSVzIGRlbGltaXRlcj0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcj0lcyBiZWZvcmU9JXMgKHRhZ25hbWU9dCk9JWJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGRlbGltaXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBhZnRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBiZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnbmFtZSA9IHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoICFtZWRpYXR5cGV0ZXh0b21kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogdGwgLT4gbWVkaWF0eXBldGV4dG9tZCA6PSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRhZ25hbWUgPSB0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULkhUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULk1EXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX2ltcGwgfmh0bWwgW10gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZ19zZXRleHQgbWFpbl9sb29wIGJlZm9yZSkpXSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNTcxIEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgYm9keSBbXSAoVC5PcGVuIHQ6OnRhZ3N0YXR1cykgdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MTkgQkhUTUwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYm9keSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0OTggQkhUTUwgRm91bmQgYSBjbG9zaW5nIHRhZyAlc1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSwgbClcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgMzU5MSBCSFRNTCBTb21lIGA+YCBpc24ndCBmb3IgYW4gb3BlbmluZyB0YWdcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgR3JlYXRlcnRoYW4gYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NDIgQkhUTUwgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzYyOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjYxIEJIVE1MIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjggQkhUTUwgbm9uIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzY1NCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2OTAgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIyIEJIVE1MICVzPSVTICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCB4Ojp0b2tlbnMgYXMgZGd0c1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIwIEJIVE1MIGdlbmVyYWwgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgZGd0cyk7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZSB8IFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM3MzcgQkhUTUwgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmVzIF8gYXMgeCkgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzgyNyBCSFRNTCBuZXdsaW5lc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgd2FybiBcInRoZXJlIGFyZSBlbXB0eSBsaW5lcyBpbiB3aGF0IG1heSBiZSBhbiBIVE1MIGJsb2NrXCI7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc0MiBCSFRNTCBmYWxsYmFjayB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBbXSAtPiBcIk5vbmVcIlxuICAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gXCJBd2FpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+IFwiT3BlbiAoY2FuJ3QgYmUpXCIpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGgsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbVGFnKFwiSFRNTEJMT0NLXCIsIGVtcHR5X2V4dGVuc2lvbildIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGJsb2NrIEhUTUwuICopXG5cblxuICAgICgqIGlubGluZSBIVE1MICopXG4gICAgfCBfLFxuICAgICAgKExlc3N0aGFuIGFzIHQpXG4gICAgICA6OigoV29yZCh0YWduYW1ldG9wKSBhcyB3KVxuICAgICAgICAgOjooKFNwYWNlfFNwYWNlcyBffEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKVxuICAgICAgICAgICAgOjpfIGFzIGh0bWxfc3R1ZmYpIGFzIHRseCkgLT5cbiAgICAgIGlmIChzdHJpY3RfaHRtbCAmJiBub3QoU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQpKVxuICAgICAgfHwgbm90KGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldClcbiAgICAgIHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRseFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcmVhZF9odG1sKCkgPVxuICAgICAgICAgIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBBd2FpdGluZyBvZiBzdHJpbmdcbiAgICAgICAgICAgICAgfCBPcGVuIG9mIHN0cmluZ1xuICAgICAgICAgICAgdHlwZSBpbnRlcm0gPVxuICAgICAgICAgICAgICB8IEhUTUwgb2Ygc3RyaW5nICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiBpbnRlcm0gbGlzdFxuICAgICAgICAgICAgICB8IFRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBNRCBvZiBPbWRfcmVwcmVzZW50YXRpb24udFxuICAgICAgICAgICAgbGV0IHJlYyBtZF9vZl9pbnRlcm1fbGlzdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIEh0bWwodCwgYSwgbWRfb2ZfaW50ZXJtX2xpc3QoTGlzdC5yZXYgYykpOjptZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPiBtZCBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQxOjpUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKFRPS0VOUyh0MUB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IFRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsIH5odG1sIFtdIFtXb3JkIFwiXCJdICh0KVxuICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7SS9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7SS9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBULlRPS0VOU1t4XTo6Ym9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzcxOCBsb29wIHRhZ3N0YXR1cz0oJXMpICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICgqIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgYm9keT0oJXMpICVzXFxuJSFcIiAqKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKSAqKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCk6Ol8gd2hlbiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE5vdCBlbm91Z2ggdG8gcmVhZCBmb3IgaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpOjp0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuO1NsYXNoXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIG11bHRpcGxlIG5ld2xpbmVzIGFyZSBub3QgdG8gYmUgc2VlbiBpbiBpbmxpbmUgSFRNTCAqKVxuICAgICAgICAgICAgfCBOZXdsaW5lcyBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgTXVsdGlwbGUgbGluZXMgaW4gaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IF8gLT4gd2FybiBcIm11bHRpcGxlIG5ld2xpbmVzIGluIGlubGluZSBIVE1MXCI7IE5vbmUpXG4gICAgICAgICAgICAoKiBtYXliZSBjb2RlICopXG4gICAgICAgICAgICB8IChCYWNrcXVvdGUgfCBCYWNrcXVvdGVzIF8gYXMgYik6OnRsIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm8gY29kZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm9uZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBsZXQncyB0cnlcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgW10gW1NwYWNlXSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKCgoQ29kZSBfOjpfKSBhcyBjKSwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1lZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5NRCBjOjpib2R5KSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogZmFpbGVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tiXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRsXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxMzYgcHJvcGVybHkgY2xvc2luZyAlUyB0b2tlbnM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTU0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyBub3RoaW5nIHdpdGggJVMgM1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6KFdvcmQodGFnbmFtZSkgYXMgd29yZCk6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgYmxpbmRfaHRtbFxuICAgICAgICAgICAgICAgIHx8IChzdHJpY3RfaHRtbCAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaW5saW5lX2h0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgICB8fCAobm90IHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sdGFnc19zZXQpXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDwlcy4uLlxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KSA6OiBfXG4gICAgICAgICAgICAgICAgICB3aGVuIHQgPD4gdGFnbmFtZSAmJiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3OTYgdGFnICVzLCBhdHRycz1bXVxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbd29yZDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYix0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxODUgZW5kIG9mIG9wZW5pbmcgdGFnIHRva2Vucz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyBhcyB0cyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSA0MTkyIEZvdW5kIGEgY2xvc2luZyB0YWcgJXMgdHM9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShULkhUTUwodCwgYXR0cnMsIGIpOjpib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBOb3RlOiB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSB2YWx1ZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJzXSBoZXJlIGJlY2F1c2UgaW4gd2UgaGF2ZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnc3RhdHVzXSBtYXRjaGVzIFtULk9wZW4gXyA6OiBfXSBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIGZpbHRlciB0aGF0IHdpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UgY2FyZSBvZiBhdHRycyB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpdC4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSBUdXJucyBvdXQgYW4gYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tHcmVhdGVydGhhbl06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MjAyIHRhZ3N0YXR1cz1bXVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICAoKiBtYXliZSBhdHRyaWJ1dGUgKilcbiAgICAgICAgICAgIHwgKENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdCk6OnRva2Vuc1xuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgIDo6KENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdClcbiAgICAgICAgICAgICAgOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgQXR0cmlidXRlX3ZhbHVlID0gc3RydWN0XG4gICAgICAgICAgICAgICAgICB0eXBlIHQgPSBFbXB0eSBvZiBuYW1lIHwgTmFtZWQgb2YgbmFtZSB8IFZvaWRcbiAgICAgICAgICAgICAgICAgIGFuZCBuYW1lID0gc3RyaW5nXG4gICAgICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gQXR0cmlidXRlX3ZhbHVlIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHJpYnV0ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lKSA6OiB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgKEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKSA6OiBfIGFzIHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBFcXVhbCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgTmFtZWQoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IENvbG9uIHwgQ29sb25zIF8gfCBVbmRlcnNjb3JlIHwgVW5kZXJzY29yZXMgXyB8IFdvcmQgX1xuICAgICAgICAgICAgICAgICAgfCBOdW1iZXIgXyB8IE1pbnVzIHwgTWludXNzIF8gfCBEb3QgfCBEb3RzIF8gYXMgdCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF9hdHRyaWJ1dGUgKHQ6OmFjY3UpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCB0b2tlbnMgLT4gVm9pZCwgdG9rZW5zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleHRyYWN0X2F0dHJpYnV0ZSBbdF0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVtcHR5IGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgKCogYXR0cmlidXRlIHdpdGggbm8gZXhwbGljaXQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICgzOTU3KSAlcz0lUyAlc1xcbiUhXCIgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6Ong6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2g7eF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgIHwgQmFja3NsYXNocyhuKTo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgJiYgbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbQmFja3NsYXNocyhuKTt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuXG4gICAgICAgICAgICB8IHg6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDE2MSkgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyAoeDo6dG9rZW5zKSk7XG4gICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbeF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgKDQyODkpIHNwYWNlc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgbG9vcCBib2R5IGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDI5NCkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjayB3aXRoIHRva2Vucz0lcyBhbmQgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKTtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byByZWFkIGFuIG9wZW4gSFRNTCB0YWcgKCVzKSwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICB8IFQuT3BlbiB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gZmluZCB0aGUgY2xvc2luZyBIVE1MIHRhZyBmb3IgJXMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICBpbiBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShodG1sLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGh0bWwsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbR3JlYXRlcnRoYW5dIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGlubGluZSBIVE1MLiAqKVxuXG4gICAgKCogPCA6IGVtYWlscyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfYXV0b2VtYWlsIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogbGluZSBicmVha3MgKilcbiAgICB8IF8sIE5ld2xpbmU6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6cikgW05ld2xpbmVdIHRsXG4gICAgfCBfLCBOZXdsaW5lcyBfOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoTkw6Ok5MOjpyKSBbTmV3bGluZV0gdGxcblxuICAgICgqIFsgKilcbiAgICB8IF8sIChPYnJhY2tldCBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2xpbmsgbWFpbl9sb29wIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYXRjaCBtYXliZV9yZWZlcmVuY2UgbWFpbl9sb29wIHJjIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW10oL3BhdGgvdG8vaW1nLmpwZykgKilcbiAgICAgICh0cnlcbiAgICAgICAgIGJlZ2luXG4gICAgICAgICAgIGxldCBiLCB0bCA9IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIHRsIGluXG4gICAgICAgICAgICgqIG5ldyBsaW5lcyB0aGVyZSBhcmUgYWxsb3dlZCAqKVxuICAgICAgICAgICBsZXQgciAoKiB1cGRhdGVkIHJlc3VsdCAqKSA9IG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIDAgLT4gVGV4dCBcIiFcIiA6OiByXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICchJykgOjogclxuICAgICAgICAgICAgIHwgXyAtPiByIGluXG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgdHJ5IFNvbWUocmVhZF91bnRpbF9zcGFjZSB+YnE6ZmFsc2Ugfm5vX25sOnRydWUgYilcbiAgICAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gTm9uZVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgIHwgU29tZSh1cmwsIHRscykgLT5cbiAgICAgICAgICAgICBsZXQgdGl0bGUsIHNob3VsZF9iZV9lbXB0eV9saXN0ID1cbiAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZCAocmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0bHMpKSBpblxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgYiBpblxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhcIlwiLCB1cmwsIFwiXCIpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgKCogaW1nIHJlZiAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9uIGFzIHQpXG4gICAgICAgICA6Ok9icmFja2V0OjpDYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiByZWYgaW1hZ2UgaW5zZXJ0aW9uIHdpdGggbm8gXCJhbHRcIiAqKVxuICAgICAgKCogIVtdW3JlZl0gKilcbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBpZCwgdGwgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDp0cnVlIHRsIGluXG4gICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCB0bCBsZXhlbWVzIGluXG4gICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgaWQgaW5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBcIlwiLCBmYWxsYmFjaykgOjogcikgW0NicmFja2V0XSB0bFxuICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdCk6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgKCogaW1hZ2UgaW5zZXJ0aW9uIHdpdGggXCJhbHRcIiAqKVxuICAgICAgKCogIVtBbHQgdGV4dF0oL3BhdGgvdG8vaW1nLmpwZyBcIk9wdGlvbmFsIHRpdGxlXCIpICopXG4gICAgICAodHJ5XG4gICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHRsIHdpdGhcbiAgICAgICAgIHwgYWx0LCBPcGFyZW50aGVzaXM6Om50bCAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgIGxldCBwYXRoX3RpdGxlLCByZXN0ID1cbiAgICAgICAgICAgICAgICByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGgsIHRpdGxlID1cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfc3BhY2UgfmJxOnRydWUgfm5vX25sOnRydWUgcGF0aF90aXRsZVxuICAgICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBwYXRoX3RpdGxlLCBbXSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUsIG5vdGhpbmcgPVxuICAgICAgICAgICAgICAgIGlmIHRpdGxlIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRpdGxlKSlcbiAgICAgICAgICAgICAgICBlbHNlIFtdLCBbXSBpblxuICAgICAgICAgICAgICBpZiBub3RoaW5nIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb247ICgqIGNhdWdodCByaWdodCBiZWxvdyAqKVxuICAgICAgICAgICAgICBsZXQgciA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGggPSBMLnN0cmluZ19vZl90b2tlbnMgcGF0aCBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKGFsdCwgcGF0aCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHJlc3RcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uXG4gICAgICAgICAgICAoKiBpZiBOTF9leGNlcHRpb24gd2FzIHJhaXNlZCwgdGhlbiBmYWxsIGJhY2sgdG8gXCJ0ZXh0XCIgKilcbiAgICAgICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICApXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgICAgOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pOjpDYnJhY2tldDo6bnRsIC0+XG4gICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIG50bCBsZXhlbWVzIGluXG4gICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBhbHQsIGZhbGxiYWNrKTo6cikgW0NicmFja2V0XSBudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KChOZXdsaW5lfFNwYWNlfFNwYWNlcyBffFdvcmQgX3xOdW1iZXIgXyk6Ol9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIG50bCkgLT5cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZXN0IC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgICAgfCBpZCwgcmVzdCAtPlxuICAgICAgICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlc3QgbGV4ZW1lcyBpblxuICAgICAgICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKVxuICAgICAgICAgICAgICAgICAgW0NicmFja2V0XVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgIHwgXyxcbiAgICAgIChBdHxCYXJ8Q2FyZXR8Q2JyYWNlfENvbG9ufENvbW1hfENwYXJlbnRoZXNpc3xDYnJhY2tldHxEb2xsYXJcbiAgICAgIHxEb3R8RG91YmxlcXVvdGV8RXhjbGFtYXRpb258RXF1YWx8TWludXN8T2JyYWNlfE9wYXJlbnRoZXNpc1xuICAgICAgfFBlcmNlbnR8UGx1c3xRdWVzdGlvbnxRdW90ZXxTZW1pY29sb258U2xhc2h8VGFifFRpbGRlXG4gICAgICB8R3JlYXRlcnRoYW4gYXMgdCk6OnRsXG4gICAgICAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG4gICAgfCBfLCAoTnVtYmVyIF8gIGFzIHQpOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgfCBfLCAoQXRzIF8gfCBCYXJzIF8gfCBDYXJldHMgXyB8IENicmFjZXMgXyB8IENicmFja2V0cyBfIHwgQ29sb25zIF9cbiAgICAgICAgIHwgQ29tbWFzIF8gfCBDcGFyZW50aGVzaXNzIF8gfCBEb2xsYXJzIF8gfCBEb3RzIF8gfCBEb3VibGVxdW90ZXMgX1xuICAgICAgICAgfCBFcXVhbHMgXyB8IEV4Y2xhbWF0aW9ucyBfIHwgR3JlYXRlcnRoYW5zIF8gfCBMZXNzdGhhbnMgX1xuICAgICAgICAgfCBNaW51c3MgXyB8IE9icmFjZXMgXyB8IE9icmFja2V0cyBfIHwgT3BhcmVudGhlc2lzcyBfXG4gICAgICAgICB8IFBlcmNlbnRzIF8gfCBQbHVzcyBfIHwgUXVlc3Rpb25zIF8gfCBRdW90ZXMgXyB8IFNlbWljb2xvbnMgX1xuICAgICAgICAgfCBTbGFzaHMgXyB8IFN0YXJzIF8gfCBUYWJzIF8gfCBUaWxkZXMgXyB8IFVuZGVyc2NvcmVzIF8gYXMgdGspXG4gICAgICAgICA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHRrMCwgdGtzID0gTC5zcGxpdF9maXJzdCB0ayBpblxuICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdGswIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB0ZXh0IDo6IHIpIFt0azBdICh0a3MgOjogdGwpXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG5cbiAgYW5kIG1haW5faW1wbCB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbCBodG1sPSViXFxuJSFcIiBodG1sOyAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIExpc3QucmV2IChtYWluX2xvb3BfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lcylcblxuICBhbmQgbWFpbl9sb29wID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbCB+aHRtbCByIHByZXZpb3VzIGxleGVtZXNcblxuICBhbmQgbWFpbl9sb29wX3JldiA/KGh0bWw9ZmFsc2UpIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG5cbiAgbGV0IG1haW5fcGFyc2UgbGV4ZW1lcyA9XG4gICAgbWFpbl9sb29wIFtdIFtdICh0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzKVxuXG4gIGxldCBwYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX3BhcnNlIGxleGVtZXNcblxuZW5kXG5cbmxldCBkZWZhdWx0X3BhcnNlID8oZXh0ZW5zaW9ucz1bXSkgPyhkZWZhdWx0X2xhbmc9XCJcIikgbGV4ZW1lcyA9XG4gIGxldCBlID0gZXh0ZW5zaW9ucyBhbmQgZCA9IGRlZmF1bHRfbGFuZyBpblxuICBsZXQgbW9kdWxlIEUgPSBEZWZhdWx0X2VudihVbml0KSBpblxuICBsZXQgbW9kdWxlIE0gPVxuICAgIE1ha2Uoc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gZVxuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IGRcbiAgICBlbmQpXG4gIGluXG4gIE0ubWFpbl9wYXJzZSBsZXhlbWVzXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFlvdSBzaG91bGQgZWl0aGVyIHVzZSB0aGlzIG1vZHVsZSBvciBPbWRfbGV4ZXIsIG5vdCBib3RoLlxuICAgIFRoaXMgbW9kdWxlIGluY2x1ZGVzIE9tZF9sZXhlci5cbiopXG5cbmluY2x1ZGUgT21kX2xleGVyXG5cbmxldCBsZXhfZnJvbV9pbmNoYW5uZWwgaWMgPVxuICAoKiBNYWludGVuYW5jZS1lYXNpbmVzcy1kcml2ZW4gaW1wbGVtZW50YXRpb24uICopXG4gIGxldCBpY19jb250ZW50ID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIChpbnB1dF9jaGFyIGljKVxuICAgICAgICBkb25lO1xuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gIGxleCBpY19jb250ZW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBPTUQ6IE1hcmtkb3duIHRvb2wgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlOiAgSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaHRtbCA9IGh0bWxfbm9kZSBsaXN0XG5cbmFuZCBodG1sX25vZGUgPVxuICB8IE5vZGUgb2Ygbm9kZW5hbWUgKiBhdHRyaWJ1dGVzICogaHRtbFxuICB8IERhdGEgb2Ygc3RyaW5nXG4gIHwgUmF3ZGF0YSBvZiBzdHJpbmdcbiAgfCBDb21tZW50IG9mIHN0cmluZ1xuXG5hbmQgbm9kZW5hbWUgPSBzdHJpbmdcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgYXR0cmlidXRlID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG5sZXQgdG9fc3RyaW5nIGh0bWwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcHAgZiA9IFByaW50Zi5icHJpbnRmIGIgZiBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgTm9kZShub2RlbmFtZSwgYXR0cmlidXRlcywgaHRtbCkgLT5cbiAgICAgIHBwIFwiPCVzXCIgbm9kZW5hbWU7XG4gICAgICBwcGEgYXR0cmlidXRlcztcbiAgICAgIHBwIFwiPlwiO1xuICAgICAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgICAgIHBwIFwiPC8lcz5cIiBub2RlbmFtZVxuICAgIHwgRGF0YSBzIC0+IHBwIFwiJXNcIiBzXG4gICAgfCBSYXdkYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IENvbW1lbnQgYyAtPiBwcCBcIjwhLS0gJXMgLS0+XCIgY1xuICBhbmQgcHBhIGF0dHJzID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgICAgcHAgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICAgIGVsc2UgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBwcCBcIiAlcz1cXFwiXCIgYTtcbiAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggdiAtIDEgZG9cbiAgICAgICAgICAgICAgICBtYXRjaCB2LltpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnXCInIC0+IHBwIFwiJnF1b3Q7XCJcbiAgICAgICAgICAgICAgICB8IGMgICAgLT4gcHAgXCIlY1wiIGNcbiAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgcHAgXCJcXFwiXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgfCBhLCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnNcbiAgaW5cbiAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmluY2x1ZGUgT21kX3JlcHJlc2VudGF0aW9uXG5pbmNsdWRlIE9tZF9iYWNrZW5kXG5cbmxldCBvZl9pbnB1dCBsZXggP2V4dGVuc2lvbnM6ZSA/ZGVmYXVsdF9sYW5nOmQgcyA9XG4gIGxldCBtb2R1bGUgRSA9IE9tZF9wYXJzZXIuRGVmYXVsdF9lbnYoc3RydWN0IGVuZCkgaW5cbiAgbGV0IG1vZHVsZSBQYXJzZXIgPSBPbWRfcGFyc2VyLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gbWF0Y2ggZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBFLmV4dGVuc2lvbnNcbiAgICAgIGxldCBkZWZhdWx0X2xhbmcgPSBtYXRjaCBkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZGVmYXVsdF9sYW5nXG4gICAgZW5kXG4gICkgaW5cbiAgbGV0IG1kID1cbiAgICBQYXJzZXIucGFyc2UgKGxleCBzKVxuICBpblxuICBQYXJzZXIubWFrZV9wYXJhZ3JhcGhzIG1kXG5cbmxldCBvZl9zdHJpbmcgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4XG5sZXQgb2ZfYmlnYXJyYXkgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4X2JpZ2FycmF5XG5cbmxldCB0b19odG1sIDpcbiAgP292ZXJyaWRlOihPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCAtPiBzdHJpbmcgb3B0aW9uKSAtPlxuICA/cGluZGVudDpib29sIC0+XG4gID9ubDJicjpib29sIC0+XG4gID9jczpjb2RlX3N0eWxpc3QgLT5cbiAgdCAtPlxuICBzdHJpbmdcbiAgPVxuICBodG1sX29mX21kXG5cbmxldCB0b190ZXh0IDogdCAtPiBzdHJpbmcgPSB0ZXh0X29mX21kXG5cbmxldCB0b19tYXJrZG93biA6IHQgLT4gc3RyaW5nID0gbWFya2Rvd25fb2ZfbWRcblxubGV0IGh0bWxfb2Zfc3RyaW5nIChodG1sOnN0cmluZykgOiBzdHJpbmcgPVxuICBodG1sX29mX21kIChPbWRfcGFyc2VyLmRlZmF1bHRfcGFyc2UgKE9tZF9sZXhlci5sZXggaHRtbCkpXG5cblxubGV0IHJlYyBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgPSBmdW5jdGlvblxuICB8IENvZGUoXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZShsYW5nLCBjb2RlKSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBDb2RlX2Jsb2NrKFwiXCIsIGNvZGUpIDo6IHRsIC0+IENvZGVfYmxvY2sobGFuZywgY29kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBSZWN1cnNlIG9uIGFsbCBlbGVtZW50cyBldmVuIHRob3VnaCBjb2RlIChibG9ja3MpIGFyZSBub3QgYWxsb3dlZFxuICAgICBldmVyeXdoZXJlLiAqKVxuICB8IEgxIHQgOjogdGwgLT4gSDEoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgyIHQgOjogdGwgLT4gSDIoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgzIHQgOjogdGwgLT4gSDMoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg0IHQgOjogdGwgLT4gSDQoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg1IHQgOjogdGwgLT4gSDUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg2IHQgOjogdGwgLT4gSDYoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFBhcmFncmFwaCB0IDo6IHRsIC0+IFBhcmFncmFwaChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEVtcGggdCA6OiB0bCAtPiBFbXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBCb2xkIHQgOjogdGwgLT4gQm9sZChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWwgdCA6OiB0bCAtPiBVbChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbCB0IDo6IHRsIC0+IE9sKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVscCB0IDo6IHRsIC0+IFVscChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgT2xwIHQgOjogdGwgLT4gT2xwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVcmwoaHJlZiwgdCwgdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLCBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCwgdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJsb2NrcXVvdGUgdCA6OiB0bCAtPiBCbG9ja3F1b3RlKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBFbGVtZW50cyB0aGF0IGRvIG5vdCBjb250YWluIE1hcmtkb3duLiAqKVxuICB8IChUZXh0IF98Q29kZSBffENvZGVfYmxvY2sgX3xCcnxIcnxOTHxSZWYgX3xJbWdfcmVmIF98UmF3IF98UmF3X2Jsb2NrIF9cbiAgICB8SHRtbCBffEh0bWxfYmxvY2sgX3xIdG1sX2NvbW1lbnQgX3xJbWcgX3xYIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgZSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBbXSAtPiBbXVxuXG5cbigqIFRhYmxlIG9mIGNvbnRlbnRzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEdpdmVuIGEgbGlzdCBvZiBoZWFkZXJzIOKAlCBpbiB0aGUgb3JkZXIgb2YgdGhlIGRvY3VtZW50IOKAlCBnbyB0byB0aGVcbiAgIHJlcXVlc3RlZCBzdWJzZWN0aW9uLiAgV2UgZmlyc3Qgc2VlayBmb3IgdGhlIFtudW1iZXJddGggaGVhZGVyIGF0XG4gICBbbGV2ZWxdLiAgKilcbmxldCByZWMgZmluZF9zdGFydCBoZWFkZXJzIGxldmVsIG51bWJlciBzdWJzZWN0aW9ucyA9XG4gIG1hdGNoIGhlYWRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKEgxIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDIgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDMgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAzIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg0IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNCBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINSBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDUgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDYgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA2IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgXyA6OiBfIC0+IGFzc2VydCBmYWxzZVxuXG5hbmQgZGVhbF93aXRoX2hlYWRlciBoX2xldmVsIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgaWYgaF9sZXZlbCA+IGxldmVsIHRoZW4gKCogU2tpcCwgcmlnaHQgW2xldmVsXS1oZWFkZXIgbm90IHlldCByZWFjaGVkLiAqKVxuICAgIGlmIG51bWJlciA9IDAgdGhlblxuICAgICAgKCogQXNzdW1lIGVtcHR5IHNlY3Rpb24gYXQgW2xldmVsXSwgZG8gbm90IGNvbnN1bWUgdG9rZW4uICopXG4gICAgICAobWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgIHwgW10gLT4gaGVhZGVycyAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgICB8IG4gOjogc3Vic2VjdGlvbnMgLT4gZmluZF9zdGFydCBoZWFkZXJzIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnMpXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICBlbHNlIGlmIGhfbGV2ZWwgPSBsZXZlbCB0aGVuIChcbiAgICAoKiBBdCBwcm9wZXIgW2xldmVsXS4gIEhhdmUgd2UgcmVhY2hlZCB0aGUgW251bWJlcl0gb25lPyAqKVxuICAgIGlmIG51bWJlciA8PSAxIHRoZW4gKFxuICAgICAgbWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgfCBbXSAtPiB0bCAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IHRsIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnNcbiAgICApXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIChudW1iZXIgLSAxKSBzdWJzZWN0aW9uc1xuICApXG4gIGVsc2UgKCogaF9sZXZlbCA8IGxldmVsICopXG4gICAgW10gKCogU291Z2h0IFtsZXZlbF0gaGFzIG5vdCBiZWVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHNlY3Rpb24gKilcblxuKCogQXNzdW1lIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGhlYWRlcnMgd2UgYXJlIGludGVyZXN0ZWQgaW4uXG4gICBSZXR1cm4gdGhlIGxpc3Qgb2YgVE9DIGVudHJpZXMgZm9yIFttaW5fbGV2ZWxdIGFuZCB0aGUgW2hlYWRlcnNdXG4gICBub3QgdXNlZCBmb3IgdGhlIFRPQyBlbnRyaWVzLiAqKVxubGV0IHJlYyBtYWtlX3RvYyAoaGVhZGVyczooZWxlbWVudCpzdHJpbmcqc3RyaW5nKWxpc3QpIH5taW5fbGV2ZWwgfm1heF9sZXZlbCA9XG4gIGlmIG1pbl9sZXZlbCA+IG1heF9sZXZlbCB0aGVuIFtdLCBoZWFkZXJzXG4gIGVsc2UgKFxuICAgIG1hdGNoIGhlYWRlcnMgd2l0aFxuICAgIHwgW10gLT4gW10sIFtdXG4gICAgfCAoSDEgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDEgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChIMiB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMiB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgzIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAzIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDQgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDQgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg2IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA2IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIClcbmFuZCB0b2NfZW50cnkgaGVhZGVycyBoX2xldmVsIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgaF9sZXZlbCA+IG1heF9sZXZlbCB0aGVuICgqIHRvbyBkZWVwLCBza2lwICopXG4gICAgbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gIGVsc2UgaWYgaF9sZXZlbCA8IG1pbl9sZXZlbCB0aGVuXG4gICAgKCogc2VjdGlvbiB3ZSB3YW50ZWQgdGhlIFRPQyBmb3IgaXMgZmluaXNoZWQsIGRvIG5vdCBjb21zdW1lIHRoZSB0b2tlbiAqKVxuICAgIFtdLCBoZWFkZXJzXG4gIGVsc2UgaWYgaF9sZXZlbCA9IG1pbl9sZXZlbCB0aGVuIChcbiAgICBsZXQgc3ViX3RvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvY19lbnRyeSA9IG1hdGNoIHN1Yl90b2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTF1cbiAgICAgIHwgXyAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTDsgVWwgc3ViX3RvYzsgTkxdIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICB0b2NfZW50cnkgOjogdG9jLCB0bFxuICApIGVsc2UgKCogaF9sZXZlbCA+IG1pbl9sZXZlbCAqKVxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIGhlYWRlcnMgfm1pbl9sZXZlbDoobWluX2xldmVsICsgMSkgfm1heF9sZXZlbCBpblxuICAgIGxldCB0b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsIGluXG4gICAgW1VsIHN1Yl90b2NdIDo6IHRvYywgdGxcblxubGV0IHRvYyA/KHN0YXJ0PVtdKSA/KGRlcHRoPTIpIG1kID1cbiAgaWYgZGVwdGggPCAxIHRoZW4gaW52YWxpZF9hcmcgXCJPbWQudG9jOiB+ZGVwdGggbXVzdCBiZSA+PSAxXCI7XG4gIGxldCBoZWFkZXJzID0gT21kX2JhY2tlbmQuaGVhZGVyc19vZl9tZCB+cmVtb3ZlX2hlYWRlcl9saW5rczp0cnVlIG1kIGluXG4gIGxldCBoZWFkZXJzID0gbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgW10gLT4gaGVhZGVyc1xuICAgIHwgbnVtYmVyIDo6IHN1YnNlY3Rpb25zIC0+XG4gICAgICAgaWYgbnVtYmVyIDwgMCB0aGVuIGludmFsaWRfYXJnKFwiT21kLnRvYzogbGV2ZWwgMSBzdGFydCBtdXN0IGJlID49IDBcIik7XG4gICAgICAgZmluZF9zdGFydCBoZWFkZXJzIDEgbnVtYmVyIHN1YnNlY3Rpb25zIGluXG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBzdGFydCBpblxuICBsZXQgdG9jLCBfID0gbWFrZV90b2MgaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgfm1pbl9sZXZlbDoobGVuICsgMSkgfm1heF9sZXZlbDoobGVuICsgZGVwdGgpIGluXG4gIG1hdGNoIHRvYyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBfIC0+IFtVbCh0b2MpXVxuXG5sZXQgYWRkX3RvYyA/c3RhcnQgP2RlcHRoID90aXRsZSBtZCA9XG4gIGxldCB0b2MgPSB0b2MgP3N0YXJ0ID9kZXB0aCBtZCBpblxuICAoKiBSZXBsYWNlIFwiKlRhYmxlIG9mIGNvbnRlbnRzKlwiIHdpdGggdGhlIGFjdHVhbCBUT0MuICopXG4gIHRvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiVmRvbVRodW5rIiwiYXJncyIsIkdlbmVyaWNIb29rIiwiaW5pdCIsInVwZGF0ZSIsImRlc3Ryb3kiLCJleHRyYSIsImhvb2tfc3RhdGVfa2V5IiwiU3ltYm9sIiwic3RhdGUiLCJmcm9tIiwidG8iLCJCYXNlX2FtX3Rlc3RpbmciLCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF9pc19jb250aW51YXRpb25fdGFnIiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsImNhbWxfaGFzaF9taXhfanNieXRlcyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9pbnQ2NF9sbzMyIiwidiIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2hfbWl4X2J5dGVzX2FyciIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJqc29vX2lzX2FzY2lpIiwiY2FtbF91dGYxNl9vZl91dGY4IiwiYzEiLCJjMiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImNvbnRlbnQiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfYmFfc2VyaWFsaXplIiwid3JpdGVyIiwiYmEiLCJzeiIsImNvbXBsZXgiLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmFpc2Vfd2l0aF9hcmciLCJhcmciLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQiLCJraW5kIiwiY2FtbF9iYV9jcmVhdGVfYnVmZmVyIiwic2l6ZSIsInZpZXciLCJGbG9hdDY0QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsInJlcyIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9iYV9jdXN0b21fbmFtZSIsIk1sX0JpZ2FycmF5IiwibGF5b3V0IiwiYnVmZmVyIiwib2ZzIiwiaW0iLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX2JhX2Rlc2VyaWFsaXplIiwicmVhZGVyIiwibnVtX2RpbXMiLCJzaXplX2RpbSIsInNpemVfZGltX2hpIiwic2l6ZV9kaW1fbG8iLCJzaXh0eSIsImludDY0IiwiY2FtbF9iYV9jb21wYXJlIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJjYW1sX2ludDMyX3VubWFyc2hhbCIsImNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCIsImNhbWxfaW50NjRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF9tYXJzaGFsIiwic2l6ZXMiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9pc19tbF9zdHJpbmciLCJjYW1sX2lzX21sX2J5dGVzIiwiY2FtbF9oYXNoIiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsIm51bSIsImhoIiwiQmFzZV9oYXNoX2RvdWJsZSIsIkJhc2VfaGFzaF9zdHJpbmciLCJCYXNlX2ludF9tYXRoX2ludDMyX2NseiIsIkJhc2VfaW50X21hdGhfaW50MzJfY3R6IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfaW50NjRfdG9faW50MzIiLCJCYXNlX2ludF9tYXRoX2ludDY0X2NseiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsIkJhc2VfaW50X21hdGhfaW50NjRfY3R6IiwiaXNfemVybyIsImxhbmQiLCJzbWFsbF9pbnQ2NCIsImNhbWxfaW50NjRfbXVsIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiIsImJhc2UiLCJleHBvbmVudCIsIm9uZSIsIm11bCIsIkJhc2VfaW50X21hdGhfaW50X2NseiIsIkJhc2VfaW50X21hdGhfaW50X2N0eiIsIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IiwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHoiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHoiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmciLCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZSIsImNhbWxfY3JlYXRlX2J5dGVzIiwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzIiwidl9sZW4iLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfYmFfZ2V0XzEiLCJpMCIsIkJpZ1N0cmluZ1JlYWRlciIsImJzIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJwYXRoIiwiZXJybm8iLCJ2YXJpYW50IiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiTWxGYWtlRmQiLCJmaWxlIiwiTWxGYWtlRGV2aWNlIiwiY29tcCIsIm5hbWVfc2xhc2giLCJtb2RlIiwicmFpc2VfdW5peCIsInBhcmVudCIsInNlZW4iLCJtIiwiZW50cnkiLCJvayIsImJ5dGVzIiwiTWxGYWtlRmRfb3V0IiwiZmQiLCJzcmMiLCJNbE11dGV4IiwiTWxOYXQiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmciLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9ieXRlc19zZXQiLCJNbE5vZGVGZCIsImJ1Zl9vZmZzZXQiLCJyZWFkIiwiTWxOb2RlRGV2aWNlIiwiY29uc3RzIiwiaXNDaGFyYWN0ZXJEZXZpY2UiLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiTWxTdHJpbmdSZWFkZXIiLCJVSW50OEFycmF5UmVhZGVyIiwiaW5jcl9uYXQiLCJuYXQiLCJjYXJyeV9pbiIsImNhcnJ5IiwiYWRkX25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibGVuMiIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfY3JlYXRlIiwiZGltc19tbCIsImJpZ3N0cmluZ19hbGxvYyIsIl8iLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwicG9zMSIsImJ5dGVzMiIsInBvczIiLCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYSIsInN0cjEiLCJiYTIiLCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImJpZ3N0cmluZ19ibGl0X3N0dWIiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX2ZpbmQiLCJjaHIiLCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJ2X3MxIiwidl9zMV9wb3MiLCJ2X3MyIiwidl9zMl9wb3MiLCJiaWdzdHJpbmdfbWVtY21wX3N0dWIiLCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlIiwiaGF5c3RhY2siLCJoYXlzdGFja19wb3MiLCJoYXlzdGFja19sZW4iLCJuZWVkbGVfcG9zIiwibmVlZGxlX2xlbiIsImxpbSIsIm1hdGNoZXMiLCJjYW1sX2JhX3NldF8xIiwiYmlnc3RyaW5nX21lbXNldF9zdHViIiwiYmlnc3RyaW5nIiwidl9wb3MiLCJ2X2NoYXIiLCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIiwiYWIiLCJ0YSIsImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSIsImJpZ3N0cmluZ19yZWFsbG9jIiwibmV3X2RhdGEiLCJuZXdfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJpZ3N0cmluZ190b190eXBlZF9hcnJheSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzIiwiYmlnc3RyaW5nYWZfbWVtY2hyIiwiYmFfb2ZmIiwiY2FtbF9pbnRfY29tcGFyZSIsImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmciLCJiYTFfb2ZmIiwiYmEyX29mZiIsImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmciLCJzdHJfb2ZmIiwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJhcnJheSIsImNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nIiwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YiIsImJpbl9wcm90X2JsaXRfYnVmX3N0dWIiLCJiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJibGFrZTJiIiwiQURENjRBQSIsIm8wIiwibzEiLCJBREQ2NEFDIiwiYjAiLCJiMSIsIkIyQl9HRVQzMiIsIkIyQl9HIiwiaXgiLCJpeSIsIngwIiwieDEiLCJ5MCIsInkxIiwieG9yMCIsInhvcjEiLCJCTEFLRTJCX0lWMzIiLCJVaW50MzJBcnJheSIsIlNJR01BOCIsIlNJR01BODIiLCJibGFrZTJiQ29tcHJlc3MiLCJjdHgiLCJsYXN0IiwicGFyYW1ldGVyQmxvY2siLCJibGFrZTJiSW5pdCIsIm91dGxlbiIsImJsYWtlMmJVcGRhdGUiLCJpbnB1dCIsImJsYWtlMmJGaW5hbCIsIm91dCIsImJsaXRfbmF0IiwiY2FtbF9NRDVUcmFuc2Zvcm0iLCJhZGQiLCJ4eCIsImZmIiwiZ2ciLCJjYW1sX01ENUZpbmFsIiwiaW5fYnVmIiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJiOCIsImNhbWxfTUQ1VXBkYXRlIiwiaW5wdXRfbGVuIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfYWNvc2hfZmxvYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsIm5hcmdzIiwiZXh0cmFfYXJncyIsImNhbWxfYWxsb2NfZHVtbXlfaW5maXgiLCJjYW1sX2FsbG9jX3N0YWNrIiwiaHYiLCJoeCIsImhmIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJwIiwiYXJnczIiLCJjYW1sX2FycmF5X2FwcGVuZCIsImExIiwiYTIiLCJsMSIsImwyIiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2FycmF5X2ZpbGwiLCJjYW1sX2FycmF5X2dldCIsImNhbWxfYXJyYXlfb2ZfYnl0ZXMiLCJjYW1sX2FycmF5X29mX3N0cmluZyIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2FzaW5oX2Zsb2F0IiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfYXRvbWljX2NhcyIsInJlZiIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9iYV9ibGl0IiwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0IiwibmV3X2RpbXMiLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2JhX2ZpbGwiLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfYmFfaW5pdCIsImNhbWxfYmFfa2luZCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9iYV9zZXRfMiIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJiMiIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJiMyIsImI0IiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImI1IiwiYjYiLCJiNyIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2JhX3VpbnQ4X3NldDMyIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfYmFja3RyYWNlX3N0YXR1cyIsIl91bml0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9ibGFrZTJfY3JlYXRlIiwiaGFzaGxlbiIsImNhbWxfYmxha2UyX2ZpbmFsIiwiY2FtbF9ibGFrZTJfdXBkYXRlIiwiY2FtbF9ibGFrZTJfc3RyaW5nIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnN3YXAxNiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiY2FtbF9idWlsZF9zeW1ib2xzIiwic3ltYiIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2J5dGVzX25vdGVxdWFsIiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0MTYiLCJpMTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiaTMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfY2FsbGJhY2siLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9jaGFubmVsX2dldCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2hhbmlkIiwiY2hhbiIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfY29tcGFyZSIsImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4YyIsImNvbnQiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfY29zaF9mbG9hdCIsImZzX25vZGVfc3VwcG9ydGVkIiwibWFrZV9wYXRoX2lzX2Fic29sdXRlIiwicG9zaXgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwibmNvbXAiLCJjYW1sX2dldF9yb290IiwiY2FtbF9yb290IiwianNvb19tb3VudF9wb2ludCIsInJlc29sdmVfZnNfZGV2aWNlIiwiY2FtbF9jcmVhdGVfZmlsZSIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfY3NlbF92YWx1ZSIsInZfY29uZCIsInZfdHJ1ZSIsInZfZmFsc2UiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsInpzdGRfZGVjb21wcmVzcyIsInU4IiwidTE2IiwidTMyIiwic2xjIiwiZmlsbCIsImNwdyIsImVjIiwiaW5kIiwibnQiLCJyYiIsInJ6ZmgiLCJkYXQiLCJuMyIsImZsZyIsInNzIiwiY2MiLCJkZiIsImZjZiIsImJ0IiwiZGIiLCJkaSIsImZzYiIsImZzcyIsIndzIiwid2IiLCJtc2IiLCJ2YWwiLCJiaXRzIiwicmZzZSIsIm1hbCIsInRwb3MiLCJhbCIsInByb2JzIiwic3ltIiwiaHQiLCJmcmVxIiwiZHN0YXRlIiwibnN0YXRlIiwiYmIxIiwic3ltcyIsIm5iaXRzIiwiY2J0IiwibXNrIiwibXNrMWZiIiwibXN2Iiwic3ZhbCIsInJidCIsInN5bXBvcyIsInNzdGVwIiwic21hc2siLCJzZiIsIm5iIiwicmh1Iiwid2MiLCJoYiIsImh3IiwicmMiLCJyaSIsIl9hIiwiZWJ0IiwiZmR0IiwiZXBvcyIsImxiIiwic3QxIiwic3QyIiwiYnRyMSIsImJ0cjIiLCJmcG9zIiwiYnl0ZSIsIndlcyIsInd0IiwibWIiLCJ0cyIsInJlbSIsImhidWYiLCJwdiIsImRsbHQiLCJkbWx0IiwiZG9jdCIsImIyYmwiLCJibCIsImxsYiIsImxsYmwiLCJtbGIiLCJtbGJsIiwiZGh1IiwiaHUiLCJlYiIsInN0IiwiYnRyIiwiZGh1NCIsInN6MSIsInN6MiIsInN6MyIsInJ6YiIsImJ0eXBlIiwibGJ0IiwibHNzIiwibGNzIiwiczQiLCJzcGwiLCJodWQiLCJzY20iLCJkdHMiLCJtZCIsInJidWYiLCJfYiIsIm1sdCIsIm9jdCIsImxsdCIsInNwb3MiLCJvdWJ0IiwibHN0Iiwib3N0IiwibXN0IiwibGxjIiwibGJ0ciIsIm1sYyIsIm1idHIiLCJvZmMiLCJvYnRyIiwib2ZwIiwibWwiLCJsbCIsImlkeCIsInN0aW4iLCJjY3QiLCJidWZzIiwib2wiLCJjaGsiLCJibGsiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2RpdiIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwidW5pdCIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX2RvbWFpbl9pZCIsImNhbWxfbWxfbXV0ZXhfdW5sb2NrIiwiY2FtbF9kb21haW5fbGF0ZXN0X2lkeCIsImNhbWxfZG9tYWluX3NwYXduIiwidGVybV9zeW5jIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF9lcGhlX2tleV9vZmZzZXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfZXBoZV9nZXRfa2V5IiwiY2FtbF9lcGhlX2dldF9rZXlfY29weSIsInoiLCJjYW1sX2VwaGVfc2V0X2tleSIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjYW1sX2VxdWFsIiwiY2FtbF9lcmZfZmxvYXQiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZXhwbTFfZmxvYXQiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0Iiwic3RhcnQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsImZzIiwiY2FtbF9wYXJzZV9mb3JtYXQiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJ0bXAiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9nY19nZXQiLCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQiLCJjYW1sX2djX21ham9yIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJjYW1sX2djX21pbm9yIiwiY2FtbF9nY19taW5vcl93b3JkcyIsImNhbWxfZ2NfcXVpY2tfc3RhdCIsImNhbWxfZ2Nfc2V0IiwiX2NvbnRyb2wiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImNhbWxfZ2V0X21pbm9yX2ZyZWUiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfZ3JfYXJjX2F1eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZ3JfY3JlYXRlX2ltYWdlIiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X2NoYXIiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJjYW52YXMiLCJpbWFnZSIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfZ3JfbWFrZV9pbWFnZSIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbG9yIiwiY29udmVydCIsImNfc3RyIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9zdGF0ZV9zZXQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNvbnRleHQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwiZ2V0Iiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX2dyX29wZW5fc3Vid2luZG93IiwiY2FtbF9ncl9wbG90IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX2dyX3RleHRfc2l6ZSIsInR4dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaGFzaF9taXhfYmlnc3RyaW5nIiwibnVtX2RpZ2l0c19uYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQiLCJzdHlsZSIsImV4cF9zaWduIiwic2lnbl9zdHIiLCJjc3QiLCJ4X3N0ciIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUiLCJjYW1sX3JlZmlsbCIsInN0cl9hIiwibnJlYWQiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsImludGVybl9vYmpfdGFibGUiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJvcHMiLCJleHBlY3RlZF9zaXplIiwib2xkX3BvcyIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSIsImNhbWxfaW50NjRfbmVnIiwiY2FtbF9pbnQ2NF9mb3JtYXQiLCJ3YmFzZSIsImN2dGJsIiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfeG9yIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9pc19qcyIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9qc19jYWxsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImNhbWxfanNfZXhwciIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX2dldF9jb25zb2xlIiwiY2FtbF9qc19odG1sX2VudGl0aWVzIiwiZW50aXR5IiwidGVtcCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfbmV3IiwiRiIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX2pzX3RvX3N0cmluZyIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9qc192YXIiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJGdW5jdGlvbiIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3RhZyIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsImJhY2t0cmsiLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfbHhtX25leHQiLCJzaGlmdF9sIiwic2hpZnRfciIsIm9yIiwieG9yIiwicm90bCIsInNldCIsIk0iLCJkYWJhIiwicTAiLCJxMSIsImNhbWxfbWFrZV9mbG9hdF92ZWN0IiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21ha2VfbG9jYWxfdmVjdCIsInZfZWx0IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfbWF5YmVfcHJpbnRfc3RhdHMiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWQ1X2NoYW4iLCJ0b3JlYWQiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX21lbXByb2ZfZGlzY2FyZCIsImNhbWxfbWVtcHJvZl9zZXQiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCIsImNhcHR1cmVkIiwiaW50byIsInRvX3Jlc3RvcmUiLCJuZXdfIiwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9zeXNfZmRzIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2JpZ2FycmF5IiwiY2FtbF9tbF9pbnB1dF9jaGFyIiwiY2FtbF9tbF9pbnB1dF9pbnQiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsInByZXZfbWF4IiwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZSIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX21sX211dGV4X2xvY2siLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2siLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZmQyIiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzIiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IiwiYnVmZmVyZWQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXRfNjQiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0IiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJjYW1sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfbWxfc2V0X2J1ZmZlcmVkIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfbW9kIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9tb3VudF9hdXRvbG9hZCIsImNhbWxfbGV4X3J1bl9tZW0iLCJtZW0iLCJjdXJyX3BvcyIsImNhbWxfbGV4X3J1bl90YWciLCJjYW1sX25ld19sZXhfZW5naW5lIiwibGV4X21lbSIsImxleF9iYXNlX2NvZGUiLCJsZXhfYmFja3Rya19jb2RlIiwibGV4X2RlZmF1bHRfY29kZSIsImxleF90cmFuc19jb2RlIiwibGV4X2NoZWNrX2NvZGUiLCJsZXhfY29kZSIsInBjX29mZiIsInBzdGF0ZSIsImJhc2VfY29kZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9ub3RlcXVhbCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfb2pzX25ld19hcnIiLCJjYW1sX291dF9jaGFubmVsX3Bvc19mZCIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsIm1lbW8iLCJleGlzdGluZ19vZmZzZXQiLCJleHRlcm5fcmVjIiwic3pfMzJfNjQiLCJoZWFkZXJfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJjbWQiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF9yb3VuZF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjdXJzb3IiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImNhbGxiYWNrcyIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfcnVudGltZV92YXJpYW50IiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJvbGRmbGFnIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfc3BhY2V0aW1lX2VuYWJsZWQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfc3RyX2luaXRpYWxpemUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2NvbmNhdCIsImNhbWxfc3RyaW5nX2VxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9zdHJpbmdfbGVzc2VxdWFsIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9zdHJpbmdfc2V0MzIiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIm9zX3R5cGUiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWUiLCJjYW1sX3N5c19leGl0IiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19nZXRlbnYiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImNhbWxfc3lzX21rZGlyIiwicGVybSIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9zeXNfcmFuZG9tX3NlZWQiLCJub3ciLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjaGlsZF9wcm9jZXNzIiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9zeXNfdW5zYWZlX2dldGVudiIsImNhbWxfdGFuaF9mbG9hdCIsImNhbWxfdG9fanNfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfdW5peF9jbG9zZWRpciIsImRpcl9oYW5kbGUiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwiY2FtbF91bml4X2ZpbmRuZXh0IiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF9nZXR1aWQiLCJjYW1sX3VuaXhfZ210aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfdW5peF9pc2F0dHkiLCJmaWxlRGVzY3JpcHRvciIsInR0eSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9sc3RhdCIsImNhbWxfdW5peF9sc3RhdF82NCIsImNhbWxfdW5peF9ta2RpciIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdW5peF9yZWFkbGluayIsImNhbWxfdW5peF9yZXdpbmRkaXIiLCJuZXdfZGlyX2hhbmRsZSIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF91bml4X3N0YXQiLCJjYW1sX3VuaXhfc3RhdF82NCIsImNhbWxfdW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfdW5peF90aW1lIiwiY2FtbF91bml4X3VubGluayIsImNhbWxfdW5tb3VudCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX3hkZ19kZWZhdWx0cyIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF96c3RkX2luaXRpYWxpemUiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjb21wYXJlX25hdCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjb21wbGVtZW50X25hdCIsImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXQiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvcmVfZ2NfY29tcGFjdGlvbnMiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY29yZV9nY19oZWFwX3dvcmRzIiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNvcmVfZ2NfbWFqb3Jfd29yZHMiLCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zIiwiY29yZV9nY19taW5vcl93b3JkcyIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyIsImNvcmVfZ2NfdG9wX2hlYXBfd29yZHMiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY29yZV9tZDVfZmQiLCJpYyIsImNvcmVfdGltZV9uc19mb3JtYXQiLCJ0aW1lIiwiZm9ybWF0anMiLCJqc3RyaW5nIiwiY3JlYXRlX25hdCIsImRlY3JfbmF0IiwiYm9ycm93IiwiZGVzZXJpYWxpemVfbmF0IiwiZGl2X2hlbHBlciIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJ3cmFwIiwic2hpZnRfcmlnaHRfbmF0Iiwic2V0X3RvX3plcm9fbmF0IiwibmF0X29mX2FycmF5IiwibXVsdF9kaWdpdF9uYXQiLCJuYXQzIiwib2ZzMyIsIngyIiwieDMiLCJzdWJfbmF0IiwiZGl2X25hdCIsInF1byIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QiLCJ2c3Rkb3V0IiwidnN0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCIsInZvdXRwdXQiLCJzZXJpYWxpemVfbmF0IiwiaW5pdGlhbGl6ZV9uYXQiLCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmciLCJpc19kaWdpdF9pbnQiLCJpc19kaWdpdF9vZGQiLCJpc19kaWdpdF96ZXJvIiwianNfcGVyZm9ybWFuY2UiLCJwZXJmX2hvb2tzIiwiX2UiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImpzX3Byb2ZfbWFyayIsImpzX3Byb2ZfbWVhc3VyZSIsImVuZCIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImxhbmRfZGlnaXRfbmF0IiwibGVuZ3RoX25hdCIsImxvcl9kaWdpdF9uYXQiLCJseG9yX2RpZ2l0X25hdCIsIm11bHRfbmF0IiwibGVuMyIsIm50aF9kaWdpdF9uYXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJwdXNoIiwiYWNjZXB0IiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfcGFydGlhbF9tYXRjaCIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsInJlX3NlYXJjaF9mb3J3YXJkIiwicmVfc3RyaW5nX21hdGNoIiwic2V0X2RpZ2l0X25hdCIsImRpZ2l0Iiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJzcXVhcmVfbmF0IiwibXNfdG9fbmFubyIsInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyIsIm1zIiwibXNfaTYzIiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0Iiwic3ltYm9sX2NvbmNhdCIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwiaSQwIiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN5bWJvbCIsImwxIiwibDIiLCJoMSIsImgyIiwidGwiLCJoMyIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwib3Blbl9vdXRfZ2VuIiwibW9kZSIsInBlcm0iLCJuYW1lIiwiYyIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwiZmx1c2hfYWxsIiwiYSIsIm91dHB1dF9ieXRlcyIsIm9jIiwib3V0cHV0X3N0cmluZyIsIm91dHB1dCIsIm9mcyIsImxlbiIsIm91dHB1dF9zdWJzdHJpbmciLCJvdXRwdXRfdmFsdWUiLCJjaGFuIiwidiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwiciIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiaGQiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQwIiwic3RyMiIsInN0cjEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4kMCIsIm9sZF9leGl0JDAiLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjEiLCJ2MiIsInYxJDAiLCJ2MiQwIiwiY29tcGFyZSIsIm9jYW1sX3ZlcnNpb24iLCJvY2FtbF9yZWxlYXNlIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsImJhY2tlbmRfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImdldGVudl9vcHQiLCJpbnRlcmFjdGl2ZSIsInNldF9zaWduYWwiLCJzaWdfbnVtIiwic2lnX2JlaCIsImNhdGNoX2JyZWFrIiwib24iLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsIm1ha2UiLCJ1aWQiLCJBIiwicHJvdmFibHlfZXF1YWwiLCJCIiwic2V0IiwiaW5jciIsImRlY3IiLCJmb3JjZV9nZW5fbGF6eV9ibG9jayIsIm9ubHlfdmFsIiwiYmxrIiwiY2xvc3VyZSQwIiwicmVzdWx0JDAiLCJjbG9zdXJlIiwicmVzdWx0IiwiZSQwIiwiZm9yY2VfbGF6eV9ibG9jayIsImZvcmNlX2dlbiIsImx6diIsInQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwieHMkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQiLCJiaW5kIiwiam9pbiIsIm5vbmUiLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJoYXNoIiwiZXNjYXBlZCIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImMxIiwiYzIiLCJlcnJfbm9fcHJlZCIsImVycl9ub19zdWNjIiwibG9fYm91bmQiLCJoaV9ib3VuZCIsInN1Y2MiLCJwcmVkIiwiaXNfdmFsaWQiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsInRvX2NoYXIiLCJ1bnNhZmVfdG9fY2hhciIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwibGFzdCIsImkkMSIsInIyIiwiZmxhdHRlbiIsImExIiwicjEkMCIsImEyIiwicmV2X21hcCIsImZvbGRfcmlnaHQiLCJiMiIsImIxIiwiYjEkMCIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwidDEiLCJzdGFibGVfc29ydCIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwic29ydF91bmlxIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiY29tcGFyZV9sZW5ndGhzIiwiY29tcGFyZV9sZW5ndGhfd2l0aCIsImF1eCIsInRhaWwiLCJvZl9zZXEiLCJzZXEkMSIsImxvZ25vdCIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwidXRmXzhfdWNoYXJfNCIsImIzIiwiZ2V0X3V0Zl84X3VjaGFyIiwiYjEkNCIsImIyJDMiLCJpJDQiLCJiMSQyIiwiaSQ1IiwiYjIkMSIsImkkNiIsImIzJDEiLCJpJDEwIiwiaSQxMSIsImkkMTIiLCJpJDciLCJiMSQxIiwiaSQ4IiwiYjIkMCIsImkkOSIsImIzJDAiLCJpJDEzIiwiYjEkNSIsImkkMTQiLCJiMiQ0IiwiaSQyIiwiYjEkMyIsImkkMyIsImIyJDIiLCJpJDE1Iiwic2V0X3V0Zl84X3VjaGFyIiwibGFzdCQxIiwibGFzdCQwIiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiZGF0YV9zaXplIiwidG90YWxfc2l6ZSIsImZyb21fYnl0ZXMiLCJmcm9tX3N0cmluZyIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImluaXRfbWF0cml4Iiwicm93IiwibWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJsYSIsImxiIiwicmVzJDAiLCJsaXN0X2xlbmd0aCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJhMCIsImJpIiwiYWkiLCJuYSIsIm5iIiwibWF4c29uIiwiaTMxIiwiZSQxIiwiaiQwIiwiZmF0aGVyIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIkMSIsInMxJDEiLCJpMSIsImkyIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsInNpZ25hbGluZ19uYW4iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsIm1pbl9pbnQiLCJtYXhfaW50IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsInVuc2lnbmVkX2RpdiIsInEiLCJ1bnNpZ25lZF9yZW0iLCJzaXplIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJlbmdpbmUiLCJ0YmwiLCJzdGF0ZSIsIm5ld19lbmdpbmUiLCJmcm9tX2Z1bmN0aW9uIiwicmVhZF9mdW4iLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJleG4kMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJwcmVzIiwicHJlcyQwIiwicmVtb3ZlIiwidW5pb24iLCJyMiQwIiwiaW50ZXIiLCJzcGxpdF9iaXMiLCJkaXNqb2ludCIsImNvbnNfZW51bSIsImUyJDIiLCJlMSQyIiwiZTIkMCIsImUxJDAiLCJlMiQxIiwiZTEkMSIsInN1YnNldCIsInB2IiwibGYiLCJsdCIsInJmIiwicnQiLCJjYXJkaW5hbCIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiZmluZF9maXJzdCIsInYwJDEiLCJ2MCQwIiwiZmluZF9maXJzdF9vcHQiLCJmaW5kX2xhc3QiLCJmaW5kX2xhc3Rfb3B0IiwidHJ5X2pvaW4iLCJ2JDEiLCJ4MCIsImwkMyIsImwkNCIsIngwJDAiLCJsJDUiLCJ4MCQxIiwibmwiLCJtaWQiLCJsJDIiLCJ4NCIsImFkZF9zZXEiLCJzZXFfb2ZfZW51bSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsImxkIiwibHJkIiwicmQiLCJybGQiLCJkYXRhIiwiZDAkMSIsImQwIiwiZDAkMCIsIm1pbl9iaW5kaW5nIiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ1cGRhdGUiLCJkYXRhJDAiLCJhZGRfdG9fbGlzdCIsIm0kMCIsImFkZF9taW5fYmluZGluZyIsImsiLCJhZGRfbWF4X2JpbmRpbmciLCJjb25jYXRfb3Jfam9pbiIsImQxIiwiZDIiLCJkMiQwIiwiZDEkMCIsImQyJDEiLCJkMSQxIiwicHZkIiwiZnZkIiwibTEiLCJtMiIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiYnMiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJwcm90ZWN0IiwicmVsZWFzZSIsImFjcXVpcmUiLCJ0cnlfYWNxdWlyZSIsInJldCIsImdldF92YWx1ZSIsIm1ha2UkMCIsInJlbGVhc2UkMCIsImFjcXVpcmUkMCIsInRyeV9hY3F1aXJlJDAiLCJjcHVfcmVsYXgiLCJjcmVhdGVfZGxzIiwia2V5X2NvdW50ZXIiLCJwYXJlbnRfa2V5cyIsIm5ld19rZXkiLCJzcGxpdF9mcm9tX3BhcmVudCIsImluaXRfb3JwaGFuIiwiaWR4Iiwia2kiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJvbGR2YWwiLCJuZXdfb2JqIiwic3QkMCIsImN1cnZhbCIsInVwZGF0ZWRfb2JqIiwiZ2V0X2lkIiwiZG9tYWluIiwic2VsZiIsImlzX21haW5fZG9tYWluIiwiZmlyc3RfZG9tYWluX3NwYXduZWQiLCJmaXJzdF9zcGF3bl9mdW5jdGlvbiIsImJlZm9yZV9maXJzdF9zcGF3biIsIm9sZF9mIiwibmV3X2YiLCJhdF9leGl0X2tleSIsInNwYXduIiwicGsiLCJ0ZXJtX3N5bmMiLCJib2R5IiwibG9vcCIsImV4IiwicmVjb21tZW5kZWRfZG9tYWluX2NvdW50Iiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJ4JDkiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDEzIiwieCQxNCIsIngkMTUiLCJ4JDE2Iiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJ4JDE3IiwicmVzdCQyNiIsIngkMTgiLCJyZXN0JDI3IiwieCQxOSIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiZW5kX2luZCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImYkMCIsImludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24iLCJuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIiwibmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIiwibWlzc2luZ19lbGVtZW50IiwidW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IiwiY2hlY2tfc2FtZV9sZW5ndGgiLCJsZW5ndGhfYSIsImNoZWNrX3ZhbGlkX2xlbmd0aCIsImFyciIsImNhcGFjaXR5IiwidW5zYWZlX2dldCIsImdldF9sYXN0IiwicG9wX2xhc3QiLCJwb3BfbGFzdF9vcHQiLCJyZW1vdmVfbGFzdCIsImVuc3VyZV9jYXBhY2l0eSIsImNhcGFjaXR5X3JlcXVlc3QiLCJjdXJfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfYXJyIiwiZW5zdXJlX2V4dHJhX2NhcGFjaXR5IiwiZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCIsImZpdF9jYXBhY2l0eSIsInNldF9jYXBhY2l0eSIsImFkZF9sYXN0X2lmX3Jvb20iLCJlbGVtIiwiYWRkX2xhc3QiLCJhcHBlbmRfbGlzdCIsImxpIiwibGkkMCIsImFwcGVuZF9pdGVyIiwiYXBwZW5kX3NlcSIsImFwcGVuZF9hcnJheV9pZl9yb29tIiwibGVuZ3RoX2IiLCJhcHBlbmRfYXJyYXkiLCJhcHBlbmRfaWZfcm9vbSIsImFycl9hIiwiYXJyX2IiLCJpdGVyJDAiLCJvZl9hcnJheSIsInRvX2FycmF5IiwidG9fc2VxX3JlZW50cmFudCIsInRvX3NlcV9yZXYiLCJ0b19zZXFfcmV2X3JlZW50cmFudCIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwib3B0IiwiZm9sbG93JDAiLCJrZXl3b3JkIiwiZm9sbG93JDIiLCJub19hcmciLCJnZXRfYXJnIiwiY29uc3VtZV9hcmciLCJ0cmVhdF9hY3Rpb24iLCJub19hcmckMCIsImdldF9hcmckMCIsImNvbnN1bWVfYXJnJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJyJDMiLCJhcmckNCIsInNwZWNzIiwidHJlYXRfYWN0aW9uJDAiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsIm1heF9hcmdfbGVuIiwiY3VyIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsInNlZW4iLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwic3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvIiwiY29uc3RydWN0b3IiLCJmaWVsZHNfb3B0IiwiY29uc3RydWN0b3IkMCIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsInByaW50IiwiZmN0IiwiY2F0Y2gkMCIsInJhd19iYWNrdHJhY2VfZW50cmllcyIsImJ0IiwiY29udmVydF9yYXdfYmFja3RyYWNlIiwiZm9ybWF0X2JhY2t0cmFjZV9zbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJwcmludF9yYXdfYmFja3RyYWNlIiwib3V0Y2hhbiIsInJhd19iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImJhY2t0cmFjZV9zbG90X2lzX3JhaXNlIiwicGFyYW0iLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQxIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImNvbXBvc2UiLCJmbGlwIiwibmVnYXRlIiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4kMCIsIndvcmtfZXhuIiwid29ya19idCIsImV2ZW50bG9nX3BhdXNlIiwiZXZlbnRsb2dfcmVzdW1lIiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJkZWxldGVfYWxhcm0iLCJjcmVhdGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpZ2FycmF5IiwicmVhbGx5X2lucHV0X2JpZ2FycmF5IiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQyIiwiYnVmJDAiLCJidWYkMSIsInJlbSIsImlucHV0X2xpbmVzIiwiZm9sZF9saW5lcyIsInNldF9iaW5hcnlfbW9kZSIsImZsdXNoIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfYnl0ZSIsIm91dHB1dF9iaWdhcnJheSIsImhleF9vZl9zdHJpbmciLCJjaGFyX2hleCIsInN0cmluZ19vZl9oZXgiLCJkaWdpdCIsImhhc2hfbGVuZ3RoIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImNoYW5uZWwiLCJ0b3JlYWQiLCJidWZfc2l6ZSIsImN0eCIsInRvcmVhZCQwIiwidG9yZWFkJDEiLCJmaWxlbmFtZSIsImRpZ2VzdCIsInRvX2hleCIsIm9mX2hleCIsImtpbmRfc2l6ZV9pbl9ieXRlcyIsImNsb29wIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJiYSIsImNyZWF0ZSQxIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDEiLCJvZl9hcnJheSQwIiwiY3JlYXRlJDIiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDIiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwic2VyaWFsaXphdGlvbl9wcmVmaXgiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiIsInRvX2JpbmFyeV9zdHJpbmciLCJvZl9iaW5hcnlfc3RyaW5nIiwicmVpbml0IiwibWFrZV9zZWxmX2luaXQiLCJtYXhfaW50MzEiLCJtYXhfaW50MzIiLCJiaXRzIiwiaW50X2F1eCIsImludCQwIiwiYm91bmQiLCJmdWxsX2ludCIsImludF9pbl9yYW5nZV9hdXgiLCJuYml0cyIsInNwYW4iLCJpbnRfaW5fcmFuZ2UiLCJiaXRzMzIiLCJpbnQzMmF1eCIsImludDMyIiwiaW50MzJfaW5fcmFuZ2UiLCJiaXRzNjQiLCJpbnQ2NGF1eCIsImludDY0IiwiaW50NjRfaW5fcmFuZ2UiLCJuYXRpdmViaXRzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X2luX3JhbmdlIiwiZmxvYXQkMCIsImJvb2wiLCJta19kZWZhdWx0IiwicmFuZG9tX2tleSIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludF9pbl9yYW5nZSQwIiwiaW50MzIkMCIsImludDMyX2luX3JhbmdlJDAiLCJuYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9pbl9yYW5nZSQwIiwiaW50NjQkMCIsImludDY0X2luX3JhbmdlJDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0Iiwic2VsZl9pbml0Iiwic3BsaXQkMCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZ19rZXkiLCJwb3dlcl8yX2Fib3ZlIiwicmFuZG9tIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwibmlkeCIsIm1hdGNoJDAiLCJvc2l6ZSIsIm9sZF90cmF2IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0YmxfZGF0YSIsImJ1Y2siLCJidWNrJDAiLCJidWNrJDEiLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJrZXlfaW5kZXgiLCJidWNrZXQiLCJrMSIsIm5leHQxIiwiazIiLCJuZXh0MiIsImszIiwiZDMiLCJuZXh0MyIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImhhc2hfcGFyYW0iLCJyZWJ1aWxkIiwiZ2V0X2NvcHkiLCJhciIsImVtcHR5YnVja2V0IiwiZ2V0X2luZGV4Iiwic3okMCIsInN6JDEiLCJjb3VudF9idWNrZXQiLCJjb3VudCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJidWNrZXQkMCIsImhhc2hlcyIsIm5ld3N6IiwibmV3YnVja2V0JDAiLCJuZXdoYXNoZXMiLCJoYnVja2V0IiwicHJldl9sZW4iLCJsaXZlIiwiaiQyIiwibmV3YnVja2V0Iiwib2xkbGVuIiwibmV3dCIsIm9iIiwib2kiLCJvaCIsIm9pJDAiLCJuaSIsImZpbmRfYXV4IiwiZm91bmQiLCJub3Rmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfc2V0X3ByaW50X3RhZ3MiLCJwcF9zZXRfbWFya190YWdzIiwicHBfZ2V0X3ByaW50X3RhZ3MiLCJwcF9nZXRfbWFya190YWdzIiwicHBfc2V0X3RhZ3MiLCJwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwY3QiLCJwb3QiLCJtY3QiLCJtb3QiLCJwcF9yaW5pdCIsInBwX2ZsdXNoX3F1ZXVlIiwiZW5kX3dpdGhfbmV3bGluZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfcHJpbnRfbm90aGluZyIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJzdGRidWZfa2V5Iiwic3RyX2Zvcm1hdHRlcl9rZXkiLCJidWZmZXJlZF9vdXRfc3RyaW5nIiwiYnVmZmVyZWRfb3V0X2ZsdXNoIiwic3RkX2J1Zl9rZXkiLCJlcnJfYnVmX2tleSIsInN0ZF9mb3JtYXR0ZXJfa2V5IiwiZXJyX2Zvcm1hdHRlcl9rZXkiLCJnZXRfc3RkX2Zvcm1hdHRlciIsImdldF9lcnJfZm9ybWF0dGVyIiwiZ2V0X3N0cl9mb3JtYXR0ZXIiLCJnZXRfc3RkYnVmIiwiZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciIsImZsdXNoX3N0cl9mb3JtYXR0ZXIiLCJtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIiLCJvdXRwdXQkMCIsImZsdXNoJDAiLCJzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF8iLCJtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwic29iIiwiZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiaXRlbXMiLCJhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0iLCJpdGVtIiwiZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9iIiwib3Blbl9oYm94Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2l0ZXIiLCJwcF92IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJwcF92JDAiLCJwcF9wcmludF9saXN0IiwicHBfcHJpbnRfYXJyYXkiLCJwcF9wcmludF9zZXEiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiYnR5IiwicCQ2IiwicCQ3Iiwic2l6ZSQxIiwicCQ4Iiwia2RwcmludGYiLCJkcHJpbnRmIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwiZnMiLCJmcyQwIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiaW5hbWUiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJvcGVuX2luX2ZpbGUiLCJjbG9zZV9pbiIsImljJDAiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja19jaGFyIiwiY2hlY2tfdGhpc19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwiY29udiIsInRva2VuX2Zsb2F0Iiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIiLCJzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyIsInNjYW5fZGlnaXRfcGx1cyIsImJhc2lzIiwiZGlnaXRwIiwid2lkdGgkMyIsImlzX2JpbmFyeV9kaWdpdCIsImlzX29jdGFsX2RpZ2l0IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwibG93ZXJjYXNlIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsInNjYW5fYmFja3NsYXNoX2NoYXIiLCJjMCIsImdldF9kaWdpdCQwIiwiYzEkMCIsImMyJDAiLCJnZXRfZGlnaXQiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsImZpbmRfc3RvcCIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsIndpZHRoX29mX3BhZF9vcHQiLCJzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nIiwidGFrZV9mb3JtYXRfcmVhZGVycyQwIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyQwIiwicmVhZGVyIiwibmV3X2siLCJyZWFkZXJzX3Jlc3QiLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyIsIm1ha2Vfc2NhbmYiLCJyZWFkZXJzIiwic2NhbiQwIiwic3RyX3Jlc3QiLCJwYWRfcHJlY19zY2FuZiIsInNjYW4kMSIsInNjYW4kMiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mX2dlbiIsImVmIiwiYXJncyQxIiwiZXhjJDAiLCJleGMiLCJhcmdzJDAiLCJrc2NhbmYiLCJrc2NhbmZfb3B0IiwiYnNjYW5mIiwiYnNjYW5mX29wdCIsImtzc2NhbmYiLCJzc2NhbmYiLCJzc2NhbmZfb3B0Iiwic2NhbmYiLCJzY2FuZl9vcHQiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZml0X3NpemUiLCJuZXdfdGFibGUiLCJwdWJfbGFiZWxzIiwibWV0aG9kcyIsImFycmF5IiwibmV3X3NpemUiLCJvbGRfc2l6ZSIsIm5ld19idWNrIiwibWV0aG9kX2NvdW50IiwiaW5zdF92YXJfY291bnQiLCJuZXdfbWV0aG9kIiwidGFibGUiLCJnZXRfbWV0aG9kX2xhYmVsIiwibGFiZWwiLCJnZXRfbWV0aG9kX2xhYmVscyIsIm5hbWVzIiwic2V0X21ldGhvZCIsImVsZW1lbnQiLCJnZXRfbWV0aG9kIiwibmFycm93IiwidmFycyIsInZpcnRfbWV0aHMiLCJjb25jcl9tZXRocyIsInZhcnMkMCIsInZpcnRfbWV0aHMkMCIsImNvbmNyX21ldGhzJDAiLCJ2aXJ0X21ldGhfbGFicyIsImNvbmNyX21ldGhfbGFicyIsImxhYiIsInR2YXJzIiwiYnlfbmFtZSIsImJ5X2xhYmVsIiwibWV0IiwiaG0iLCJ3aWRlbiIsInNhdmVkX3ZhcnMiLCJzYXZlZF9oaWRkZW5fbWV0aHMiLCJuZXdfdmFyaWFibGUiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJvYmoiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJnZXRfZGF0YSIsImJ1aWxkX3BhdGgiLCJrZXlzIiwibG9va3VwX3RhYmxlcyIsInJvb3QiLCJyb290X2RhdGEiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwidGFibGVzX2RhdGEiLCJuZXdfY2FjaGUiLCJzZXRfbWV0aG9kcyIsImNsbyIsIngkMjAiLCJjbG8kMCIsIm4kMzgiLCJlJDEwIiwibiQzNyIsIm4kMzYiLCJuJDIiLCJuJDM1IiwiZiQyMCIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ5JDAiLCJuJDYiLCJmJDE1IiwibiQzMSIsIm4kNyIsImYkMTQiLCJlJDgiLCJuJDMwIiwibiQ4IiwiZiQxMyIsIm4kMjkiLCJuJDkiLCJmJDEyIiwibiQyOCIsImYkOCIsImUkMiIsIm4kMTAiLCJmJDExIiwiZSQ3IiwibiQyNyIsImYkOSIsIm4kMTEiLCJmJDEwIiwibiQyNiIsIm4kMTIiLCJuJDI1IiwibiQxMyIsIm4kMjQiLCJtJDEyIiwibiQxNCIsImUkMyIsIm4kMjMiLCJlJDYiLCJtJDExIiwibiQxNSIsIm0kMSIsIm4kMjIiLCJtJDEwIiwibSQyIiwibSQ5IiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwicHJuZyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJmaW5kX2luX2J1Y2tldCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsInNldF9kYXRhIiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJ0ZXN0X2tleSIsInQkMCIsImdldF9rZXkxIiwic2V0X2tleTEiLCJnZXRfa2V5MiIsInNldF9rZXkyIiwiZ2V0X2RhdGEkMCIsInNldF9kYXRhJDAiLCJtYWtlJDEiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJzZWVkZWRfaGFzaCQwIiwibWFrZSQyIiwiYWRkJDAiLCJ0ZXN0X2tleXMiLCJyZW1vdmUkMCIsImZpbmQkMCIsImxlbmd0aCQwIiwiY2xlYXIkMCIsImxlbmd0aCQxIiwiZ2V0X2tleSQwIiwic2V0X2tleSQwIiwiZ2V0X2RhdGEkMSIsInNldF9kYXRhJDEiLCJtYWtlJDMiLCJxdWVyeSQxIiwibWFrZSQ0IiwiYWRkJDEiLCJ0ZXN0X2tleXMkMCIsInJlbW92ZSQxIiwiZmluZCQxIiwibGVuZ3RoJDIiLCJjbGVhciQxIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicmFuZG9tX3N0YXRlIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwicGVybXMiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93IiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwiY29lcmNlIiwidGFnIiwicGFyYW0iLCJrZXkiLCJ2YWx1ZSIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF90X3NleHBfZ3JhbW1hciIsImVtcHR5X3NleHBfZ3JhbW1hciIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ3MiLCJncmFtbWFyIiwidGFncyIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IiwicmVmX3NleHBfZ3JhbW1hciIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJoYW5kbGVyIiwiYXJnIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJhYnNlbnQiLCJjb21iaW5lIiwicGFyc2VfdmFsdWVfbWFsZm9ybWVkIiwibWFsZm9ybWVkIiwic3RhdGUiLCJwb3MiLCJwYXJzZV92YWx1ZXMiLCJtYWxmb3JtZWQkMCIsIm90aGVyIiwiY29udiIsImtpbmQiLCJzZXhwJDUiLCJkZWZhdWx0JDAiLCJzZXhwJDQiLCJzZXhwJDAiLCJzZXhwJDEiLCJzZXhwJDIiLCJzZXhwJDMiLCJwYXJzZV9zcGluZV9tYWxmb3JtZWQiLCJleHRyYSIsInNlZW4iLCJzZXhwcyIsInBhcnNlX3NwaW5lX3Nsb3ciLCJzZXhwcyQwIiwic2V4cHMkMiIsInNleHBzJDEiLCJwYXJzZV9yZWNvcmRfc2xvdyIsInVuc2VlbiIsInBhcnNlX3NwaW5lX2Zhc3QiLCJvdGhlcnMiLCJhcmdzIiwiYXRvbSIsInJlY29yZF9vZl9zZXhwcyIsImNhbGxlciIsImNvbnRleHQkMCIsImluZGV4X29mX2ZpZWxkIiwiYWxsb3dfZXh0cmFfZmllbGRzIiwiY3JlYXRlIiwiYWxsb3dfZXh0cmFfZmllbGRzJDAiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwibWF5YmVfY29udGV4dCIsImNvbnRleHQiLCJyZWNvcmRfb2Zfc2V4cCIsImdsb2JhbGl6ZV9ib29sIiwiYiIsImdsb2JhbGl6ZV9jaGFyIiwiYyIsImdsb2JhbGl6ZV91bml0IiwidSIsImdsb2JhbGl6ZV9hcnJheSIsImEiLCJnbG9iYWxpemVfbGlzdCIsImYiLCJ4cyIsIngiLCJnbG9iYWxpemVfb3B0aW9uIiwiZ2xvYmFsaXplX3Jlc3VsdCIsImdsb2JhbGl6ZV9hIiwiZ2xvYmFsaXplX2IiLCJ0IiwiZ2xvYmFsaXplX3JlZiIsInIiLCJkZXNjZW5kaW5nIiwieSIsIm1heCIsIm1pbiIsIm1heF9pbnQiLCJtaW5faW50IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImJvb2xfb2Zfc3RyaW5nX29wdCIsImJvb2xfb2Zfc3RyaW5nIiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2ludCIsInJlYWRfZmxvYXRfb3B0IiwicmVhZF9mbG9hdCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwib3Blbl9vdXRfZ2VuIiwiZmx1c2giLCJmbHVzaF9hbGwiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXQiLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X2J5dGUiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF92YWx1ZSIsInNlZWtfb3V0IiwicG9zX291dCIsIm91dF9jaGFubmVsX2xlbmd0aCIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsInNldF9iaW5hcnlfbW9kZV9vdXQiLCJvcGVuX2luIiwib3Blbl9pbl9iaW4iLCJvcGVuX2luX2dlbiIsImlucHV0X2NoYXIiLCJpbnB1dF9saW5lIiwiaW5wdXQiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpbmFyeV9pbnQiLCJpbnB1dF92YWx1ZSIsInNlZWtfaW4iLCJwb3NfaW4iLCJpbl9jaGFubmVsX2xlbmd0aCIsImNsb3NlX2luIiwiY2xvc2VfaW5fbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfaW4iLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sIiwiZXhpdCIsImF0X2V4aXQiLCJ2YWxpZF9mbG9hdF9sZXhlbSIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJkb19hdF9leGl0IiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJib29sX3RvX2ludCIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJhc2NlbmRpbmciLCJtYXgkMCIsIm1pbiQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJtYXgkMSIsIm1pbiQxIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3IiwiYXNjZW5kaW5nJDEiLCJkZXNjZW5kaW5nJDEiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgkMiIsIm1pbiQyIiwiYXNjZW5kaW5nJDIiLCJkZXNjZW5kaW5nJDIiLCJtYXgkMyIsIm1pbiQzIiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwiYXNjZW5kaW5nJDMiLCJkZXNjZW5kaW5nJDMiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwibWF4JDQiLCJtaW4kNCIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsInN5bWJvbCQyOSIsImFzY2VuZGluZyQ0IiwiZGVzY2VuZGluZyQ0IiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsIm1heCQ1IiwibWluJDUiLCJzeW1ib2wkMzAiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJhc2NlbmRpbmckNSIsImRlc2NlbmRpbmckNSIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkNiIsIm1pbiQ2IiwiaSIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsImFzY2VuZGluZyQ2IiwiZGVzY2VuZGluZyQ2IiwiY29tcGFyZSQzIiwiZXF1YWwkMyIsIm1heCQ3IiwibWluJDciLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJzeW1ib2wkNDciLCJhc2NlbmRpbmckNyIsImRlc2NlbmRpbmckNyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJtYXgkOCIsIm1pbiQ4Iiwic3ltYm9sJDQ4Iiwic3ltYm9sJDQ5Iiwic3ltYm9sJDUwIiwic3ltYm9sJDUxIiwic3ltYm9sJDUyIiwic3ltYm9sJDUzIiwiYXNjZW5kaW5nJDgiLCJkZXNjZW5kaW5nJDgiLCJjb21wYXJlJDUiLCJlcXVhbCQ1IiwibWF4JDkiLCJtaW4kOSIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsImFzY2VuZGluZyQ5IiwiZGVzY2VuZGluZyQ5IiwiY29tcGFyZSQ2IiwiZXF1YWwkNiIsIm1heCQxMCIsIm1pbiQxMCIsInN5bWJvbCQ2MCIsInN5bWJvbF9jb25jYXQkMCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImFzciIsImxhbmQiLCJsbm90JDAiLCJsb3IiLCJsc2wiLCJsc3IiLCJseG9yIiwibW9kIiwiYWJzJDAiLCJmYWlsd2l0aCQwIiwiZnN0IiwiaW52YWxpZF9hcmckMCIsInNuZCIsInBoeXNfZXF1YWwiLCJmbG9hdF9vZl9zdHJpbmciLCJhbV90ZXN0aW5nIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwib2Zfc3RyaW5nX29wdCIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJzdWNjIiwicHJlZCIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsInJlcyIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwiZm9sZF9yaWdodCIsIml0ZXIiLCJpdGVyaSIsIm1hcCIsIm1hcGkiLCJzdGFibGVfc29ydCIsInN3YXAiLCJqIiwiZWx0X2kiLCJlbHRfaiIsImVzY2FwZWQiLCJsb3dlcmNhc2UiLCJ0b19pbnQiLCJ1bnNhZmVfb2ZfaW50IiwidXBwZXJjYXNlIiwiaW50X2lzX29rIiwib2ZfaW50Iiwib2ZfaW50X2V4biIsInQxIiwidDIiLCJoZF9leG4iLCJsZW5ndGgiLCJyZXZfYXBwZW5kIiwidGxfZXhuIiwidW56aXAiLCJleGlzdHMiLCJ0JDAiLCJleGlzdHMyX29rIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwibDIkMSIsImEyIiwibDEkMSIsImExIiwiaW5pdCQwIiwibCIsImluaXQkMSIsImZvbGQyX29rIiwiZm9yX2FsbCIsImZvcl9hbGwyX29rIiwiaXRlcjJfb2siLCJub250YWlsX21hcCIsIm5vbnRhaWxfbWFwaSIsInBhcnRpdGlvbiIsInJldl9tYXAiLCJsJDAiLCJhY2N1IiwicmV2X21hcDJfb2siLCJhY2N1JDAiLCJzb3J0IiwicmV2IiwicmVzdCIsImZvbGRfcmlnaHQyX29rIiwiaGFzaF9mb2xkX3VuaXQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mb2xkX3N0cmluZyIsImFzX2ludCIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9mb2xkX2Jvb2wiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiaGFzaF9mb2xkX29wdGlvbiIsImhhc2hfZm9sZF9lbGVtIiwiaGFzaF9mb2xkX2xpc3QiLCJzJDEiLCJsaXN0JDEiLCJzJDIiLCJsaXN0IiwibGlzdCQwIiwicyQwIiwiaGFzaF9mb2xkX2xhenlfdCIsImhhc2hfZm9sZF9yZWZfZnJvemVuIiwiaGFzaF9mb2xkX2FycmF5X2Zyb3plbiIsImFycmF5IiwiZSIsImkkMCIsImhhc2hfbmF0aXZlaW50IiwiaGFzaF9pbnQ2NCIsImhhc2hfaW50MzIiLCJoYXNoX2NoYXIiLCJoYXNoX2ludCIsImhhc2hfYm9vbCIsImhhc2hfc3RyaW5nIiwiaGFzaF9mbG9hdCIsImhhc2hfdW5pdCIsInNlZWQiLCJvZl9mb2xkIiwiaGFzaF9mb2xkX3QiLCJydW4iLCJmb2xkZXIiLCJjb21wYXJlX3N0YXRlIiwic3RhdGVfdG9fc3RyaW5nIiwic3RhdGUiLCJ0JDEiLCJ0JDIiLCJ0JDMiLCJ0JDQiLCJ0JDUiLCJjb21wYXJlX2Fic3RyYWN0IiwidHlwZV9uYW1lIiwiZXF1YWxfYWJzdHJhY3QiLCJjb21wYXJlX2Jvb2wiLCJjb21wYXJlX2NoYXIiLCJjb21wYXJlX2Zsb2F0IiwiY29tcGFyZV9pbnQiLCJjb21wYXJlX2ludDMyIiwiY29tcGFyZV9pbnQ2NCIsImNvbXBhcmVfbmF0aXZlaW50IiwiY29tcGFyZV9zdHJpbmciLCJjb21wYXJlX3VuaXQiLCJjb21wYXJlX2FycmF5IiwiY29tcGFyZV9lbHQiLCJsZW5fYSIsImxlbl9iIiwicmV0IiwiY29tcGFyZV9saXN0IiwiYSQwIiwiYiQwIiwieXMiLCJjb21wYXJlX29wdGlvbiIsImNvbXBhcmVfcmVmIiwiZXF1YWxfYm9vbCIsImVxdWFsX2NoYXIiLCJlcXVhbF9pbnQiLCJlcXVhbF9pbnQzMiIsImVxdWFsX2ludDY0IiwiZXF1YWxfbmF0aXZlaW50IiwiZXF1YWxfc3RyaW5nIiwiZXF1YWxfdW5pdCIsImVxdWFsX2Zsb2F0IiwiZXF1YWxfYXJyYXkiLCJlcXVhbF9lbHQiLCJlcXVhbF9saXN0IiwiZXF1YWxfb3B0aW9uIiwiZXF1YWxfcmVmIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2IiwiaHN2IiwiYXJnIiwiYTAiLCJoc3YkMCIsImEwJDAiLCJoc3YkMSIsImhhc2giLCJmdW5jIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJyYWlzZV93aXRob3V0X2JhY2t0cmFjZSIsImluaXRpYWxpemVfbW9kdWxlIiwiY2xlYXJfYmFja3RyYWNlIiwid2l0aF9yZXR1cm4iLCJpc19hbGl2ZSIsInJldHVybiQwIiwid2l0aF9yZXR1cm5fb3B0aW9uIiwicHJlcGVuZCIsInBhcmFtIiwiY29uc3QkMCIsIm5vbiIsImZvcmV2ZXIiLCJlJDAiLCJjb21wb3NlIiwiZyIsImZsaXAiLCJhcHBseV9uX3RpbWVzIiwibiIsIm4kMCIsIngkMCIsIngkMSIsIm4kMSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwidG9fbW9uYWQiLCJvZl9tb25hZCIsImRlcml2ZWRfbWFwIiwibWFwMiIsInRhIiwidGIiLCJtYXAzIiwidGMiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwidGYiLCJmYWIiLCJtYXAkMCIsImFwcGx5IiwibWYiLCJteCIsInR4IiwiY3VzdG9tX21hcCIsInJldHVybiQxIiwiYXBwbHkkMCIsIm1ha2UiLCJjb21wYXJhdG9yIiwiZXJyb3Jfc291cmNlXzAxMSIsImNtcF9mIiwiY21wX3MiLCJoYXNoX2ZvbGRfZiIsImhhc2hfZm9sZF9zIiwidF9vZl9zZXhwIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsInNleHBfMDEzIiwidGFnXzAxNCIsInNleHBfYXJnc18wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJvZl9mXzAyNSIsIm9mX3NfMDI2IiwiYXJnMF8wMjciLCJyZXMwXzAyOCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJmX3NleHBfZ3JhbW1hciIsInNfc2V4cF9ncmFtbWFyIiwib3BhcXVlX2lkZW50aXR5IiwibmFtZSIsImdldCIsImZzZXQiLCJzZXR0ZXIiLCJ1cGRhdGVyIiwiZmllbGQiLCJzeW1ib2xfY29uY2F0IiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInVuc2FmZV9ibGl0Iiwic3BsaXRfb25fY2hhciIsInNlcCIsImhzdiQyIiwicG9zX2NudW1fMDEwIiwicG9zX2JvbF8wMDgiLCJwb3NfbG51bV8wMDYiLCJwb3NfZm5hbWVfMDA0IiwiYXJnXzAxMSIsImJuZHNfMDAzIiwiYXJnXzAwOSIsImJuZHNfMDAzJDAiLCJhcmdfMDA3IiwiYm5kc18wMDMkMSIsImFyZ18wMDUiLCJibmRzXzAwMyQyIiwiaGFzaF9mb2xkX3QkMCIsImhhc2gkMCIsIm1ha2VfbG9jYXRpb25fc3RyaW5nIiwicG9zX2ZuYW1lIiwicG9zX2xudW0iLCJwb3NfY251bSIsInBvc19ib2wiLCJpc19lbXB0eSIsInBhcnRpdGlvbl9tYXAiLCJmc3QkMCIsInkkMCIsInNuZCQwIiwiZXJyb3Jfc291cmNlXzAwNSIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwNyIsInRhZ18wMDgiLCJzZXhwX2FyZ3NfMDA5IiwiYXJnMF8wMTAiLCJyZXMwXzAxMSIsInNleHBfYXJnc18wMTQiLCJhcmcwXzAxNSIsInJlczBfMDE2Iiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJhX3NleHBfZ3JhbW1hciIsImJfc2V4cF9ncmFtbWFyIiwiY21wX2EiLCJjbXBfYiIsImFfMDI3IiwiYl8wMjgiLCJhXzAyOSIsImJfMDMwIiwiYV8wMzEiLCJiXzAzMiIsImFfMDMzIiwiYl8wMzQiLCJhXzAzNSIsImJfMDM2IiwiYV8wMzciLCJiXzAzOCIsImhhc2hfZm9sZF9hIiwiaGFzaF9mb2xkX2IiLCJnbG9iYWxpemUiLCJjaGVja19vayIsImNoZWNrX2Vycm9yIiwib2siLCJlcnJvciIsImZhaWwiLCJmYWlsZiIsIm1hcF9lcnJvciIsImJpbmQkMSIsIm1hcCQxIiwicmV0dXJuJDIiLCJpc19vayIsImlzX2Vycm9yIiwib2Zfb3B0aW9uIiwib3B0IiwiaXRlcl9lcnJvciIsInRvX2VpdGhlciIsIm9mX2VpdGhlciIsIm9rX2lmX3RydWUiLCJib29sIiwidHJ5X3dpdGgiLCJva19leG4iLCJva19vcl9mYWlsd2l0aCIsImNvbWJpbmUiLCJlcnIiLCJvazEiLCJvazIiLCJlcnIxIiwiZXJyMiIsImNvbWJpbmVfZXJyb3JzIiwiZXJycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJjb3VudCIsInN1bSIsIk0iLCJmb2xkX3Jlc3VsdCIsImFjYyIsIml0ZW0iLCJmb2xkX3VudGlsIiwiZmluaXNoIiwibWluX2VsdCIsImVsdCIsIm1heF9lbHQiLCJtZW0iLCJmaW5kX21hcCIsImZpbmQiLCJ0b19hcnJheSIsIml0ZXIkMCIsIml0ZXIkMSIsImxlbmd0aCQwIiwibGVuZ3RoJDEiLCJpc19lbXB0eSQwIiwibWVtJDAiLCJzdW0kMCIsIm0iLCJjb3VudCQwIiwiZXhpc3RzJDAiLCJmb3JfYWxsJDAiLCJmaW5kX21hcCQwIiwiZmluZCQwIiwidG9fbGlzdCQwIiwidG9fYXJyYXkkMCIsIm1pbl9lbHQkMCIsIm1heF9lbHQkMCIsImZvbGRfcmVzdWx0JDAiLCJmb2xkX3VudGlsJDAiLCJvZl9hcnJheSIsImNvbmNhdF9vZl9hcnJheSIsImNvbmNhdF9tYXAiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiZWl0aGVyIiwicGFydGl0aW9uX3RmIiwiZm9sZCQwIiwib2ZfbGlzdCQwIiwib2ZfYXJyYXkkMCIsImNvbmNhdCQwIiwiZm9sZGkiLCJhY2MkMCIsImNvdW50aSIsImV4aXN0c2kiLCJmb3JfYWxsaSIsImZpbmRfbWFwaSIsImZpbmRpIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImRlcml2ZWRfaW5pdCIsImRlcml2ZWRfaW5pdCQwIiwiZGVyaXZlZF9jb25jYXRfbWFwaSIsImNvbmNhdF9tYXBpIiwiY29uY2F0X21hcGkkMCIsImZpbHRlcl9tYXBpIiwiZmlsdGVyaSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJwZWVrIiwic2V4cF9vZl9hIiwic2xvd19jaGVja19wb3NfbGVuX2V4biIsInBvcyIsInRvdGFsX2xlbmd0aCIsImNoZWNrX3Bvc19sZW5fZXhuIiwic3RvcCIsImdldF9wb3NfbGVuX2V4biIsImxlbiQwIiwib2Zfc3RhdGUiLCJhc3NpZ24iLCJkc3QiLCJzcmMiLCJkc3QkMCIsInNyYyQwIiwibWFrZV9kZWZhdWx0IiwiZGVmYXVsdCQwIiwic3BsaXRfZnJvbV9wYXJlbnQiLCJnZXRfc3RhdGUiLCJyYW5kb21fa2V5IiwiZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIiwiYWxsb3dfaW5fdGVzdHMiLCJiaXRzIiwiaW50JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiY2hhciQwIiwiYXNjaWkiLCJtYWtlX3NlbGZfaW5pdCIsImludF9vbl82NGJpdHMiLCJib3VuZCIsImludF9vbl8zMmJpdHMiLCJpbnQkMSIsImJpdHMkMCIsImZ1bGxfcmFuZ2VfaW50NjQiLCJmdWxsX3JhbmdlX2ludDMyIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzJDAiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludCIsInJhaXNlX2Nyb3NzZWRfYm91bmRzIiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsInN0cmluZ19vZl9ib3VuZCIsImludF9pbmNsIiwibG8iLCJoaSIsImRpZmYiLCJpbnQzMl9pbmNsIiwibmF0aXZlaW50X2luY2wiLCJpbnQ2NF9pbmNsIiwiZmxvYXQkMCIsInNjYWxlIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQxIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwibnVtX3N3YXBzIiwidGhpc19pIiwicmFuZG9tX2kiLCJzZXhwXzAwNiIsImVycm9yX3NvdXJjZV8wMzIiLCJmb2xkX2xlZnQiLCJhXzAxMCIsImJfMDExIiwiYV8wMTIiLCJiXzAxMyIsIm9mX2FfMDE0IiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwiaGQiLCJ0bCIsIm50aCIsIm50aF9leG4iLCJ1bm9yZGVyZWRfYXBwZW5kIiwib2ZfbGlzdHMiLCJzaGFyZWRfbGVuZ3RoIiwic2hhcmVkX2xlbmd0aCQwIiwiY2hlY2tfbGVuZ3RoMl9leG4iLCJ0YWlsX29mX2IiLCJ0YWlsX29mX2EiLCJjaGVja19sZW5ndGgyIiwib2ZfbGlzdHMkMCIsImwzIiwiYyQwIiwiY2hlY2tfbGVuZ3RoM19leG4iLCJ0YWlsX29mX2MiLCJuMSIsIm4yIiwibjMiLCJjaGVja19sZW5ndGgzIiwiaXRlcjIiLCJpdGVyMl9leG4iLCJyZXZfbWFwMiIsInJldl9tYXAyX2V4biIsImZvbGQyIiwiZm9sZDJfZXhuIiwiZm9sZF9yaWdodDIiLCJmb2xkX3JpZ2h0Ml9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsIm5vdF9mb3VuZCIsImZpbmRfbWFwX2V4biIsIm5vdF9mb3VuZCQwIiwiZmluZF9leG4iLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDMkMCIsImFjIiwibDMkMSIsImFjJDAiLCJyZXZfbWFwMyIsInJldl9tYXAzX2V4biIsIm1hcDNfb2siLCJtYXAzX2V4biIsInJldl9tYXBfYXBwZW5kIiwiaCIsImxpc3QkMiIsInVuemlwMyIsInoiLCJ6aXBfZXhuIiwiemlwIiwicmV2X21hcGkiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcGkiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicmVkdWNlX2JhbGFuY2VkIiwic3RlcF9hY2N1bSIsIm51bSIsIm51bSQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwibGFzdF9leG4iLCJsYXN0IiwiaXNfcHJlZml4IiwicHJlZml4IiwicHJlZml4JDAiLCJwcmVmaXgkMSIsImhkJDAiLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsImExJDAiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwicmV2X2ZpbHRlcl9tYXBpIiwiaSQxIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzMiLCJzZXhwXzAzMSIsImFyZzFfMDI4IiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsInNleHBfb2ZfdCQxIiwib2ZfYV8wMzQiLCJvZl9iXzAzNSIsInhfMDQwIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsInJlbW92ZSIsImFkZCIsImludmVyc2UiLCJtYXAkMiIsImVsIiwic3BsaXRfbiIsInRfb3JpZyIsInRha2UiLCJkcm9wIiwiY2h1bmtzX29mIiwibCQxIiwic3VibGlzdCIsInNwbGl0X3doaWxlIiwidGFrZV93aGlsZSIsImRyb3Bfd2hpbGUiLCJkcm9wX2xhc3QiLCJkcm9wX2xhc3RfZXhuIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJsaXN0MSIsImxpc3QyIiwiY29uY2F0X25vX29yZGVyIiwiY29ucyIsImlzX3NvcnRlZCIsImlzX3NvcnRlZF9zdHJpY3RseSIsImFyciIsInJhbmRvbV9lbGVtZW50X2V4biIsInJhbmRvbV9lbGVtZW50IiwiY21wIiwiZXF1YWxfbG9jYWwiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsInJlczJfMDE0IiwiYXJnMV8wMTYiLCJyZXMxXzAxOCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczFfMDIzIiwicmVzMl8wMjQiLCJhcmcxXzAyNiIsImFyZzBfMDI1IiwicmVzMF8wMjciLCJyZXMxXzAyOCIsImFyZzFfMDMwIiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInRvX3N0cmluZ3NfaHVtIiwic3RyaW5nIiwic2V4cCQwIiwic2V4cCQxIiwidGFnIiwidGFnJDAiLCJzZXhwJDIiLCJ0YWckMSIsImJvZHkiLCJ0cnVuY19hZnRlciIsInRzJDAiLCJ0cyQxIiwiYWMkMSIsInRvX3NleHBzX2h1bSIsInN0cmluZyQwIiwiaGVyZSIsImhlcmUkMCIsInRvX3NleHBfaHVtIiwic2V4cHMiLCJ0b19tZXNzYWdlIiwiaW5mbyIsIm9mX21lc3NhZ2UiLCJ0b19zdHJpbmdfaHVtIiwibWVzc2FnZSIsInRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCIsIm9mX2xhenkiLCJvZl9sYXp5X3NleHAiLCJvZl9sYXp5X3QiLCJsYXp5X3QiLCJjcmVhdGVmIiwib2ZfdGh1bmsiLCJzdHJpY3QiLCJzZXhwX29mX3giLCJ0YWdfc19sYXp5IiwidGFnX3MiLCJ0YWdfYXJnIiwidG9fZXhuIiwib2ZfZXhuIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImJhY2t0cmFjZSQyIiwicmFpc2UiLCJyYWlzZV9zIiwidG9faW5mbyIsIm9mX2luZm8iLCJjaGVja19maWVsZCIsImFfMDA3IiwiYl8wMDgiLCJvZl9hXzAxMyIsInhfMDE1Iiwib2ZfYV8wMTYiLCJ4XzAxNyIsImludmFyaWFudF9hIiwiZTEiLCJlMiIsInRyeV93aXRoX2pvaW4iLCJvZl9leG5fcmVzdWx0IiwiZXJyb3JfcyIsImVycm9yX3N0cmluZyIsImVycm9yZiIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2ludGVybmFsIiwib25fb2siLCJvbl9lcnJvciIsImlnbm9yZV91bml0X2xpc3QiLCJlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImNvbXBhcmVfcmV2ZXJzZWQiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImhhc2hfcGFyYW0iLCJwb2x5Iiwib2Zfa2V5IiwiS2V5IiwidG9fa2V5IiwiaGFzaF9wYXJhbSQwIiwicG9seSQwIiwib2Zfa2V5JDAiLCJ0b19rZXkkMCIsImhhc2hhYmxlIiwiZ2V0X3Bvc19sZW4iLCJmaW5kX2ZpcnN0X3NhdGlzZnlpbmciLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsImJsaXRfc3RyaW5nIiwic3JjX3BvcyIsImRzdF9wb3MiLCJibGl0byIsInNyY19sZW4iLCJzdWJvIiwiY3JlYXRlX2xpa2UiLCJ1bnNhZmVfYmxpdCQwIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJ2YWx1ZV9tYXAiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZm9jdXMiLCJjb21iaW5lX2FsbCIsIm1hdGNoJDAiLCJtYXRjaCIsImNvbWJpbmVfYWxsX3VuaXQiLCJ0b19vcHRpb24iLCJmb2N1cyQwIiwiY29tYmluZSQwIiwiYmluZCQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJvIiwiY2FsbCIsInZhbHVlX2V4biIsImVycm9yJDAiLCJtJDAiLCJtJDEiLCJ2YWx1ZV9vcl90aHVuayIsInNvbWUiLCJmaXJzdF9zb21lIiwic29tZV9pZiIsImNvbmQiLCJlcnJvcl9zb3VyY2VfMDI3Iiwib2Zfc18wMDIiLCJzdGF0ZV8wMDQiLCJzdGF0ZV8wMDkiLCJ2YWx1ZV8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMyIsImJfMDE0IiwiYV8wMTUiLCJiXzAxNiIsImFfMDE3IiwiYl8wMTgiLCJhXzAyMSIsImFfMDE5IiwiYl8wMjIiLCJiXzAyMCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIzIiwib2ZfYl8wMjQiLCJzZXhwXzAyOSIsInRhZ18wMzAiLCJzZXhwX2FyZ3NfMDM2IiwiYXJnMF8wMzciLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wNDEiLCJhcmcxXzA0MyIsImFyZzBfMDQyIiwicmVzMF8wNDQiLCJyZXMxXzA0NSIsIm9mX2FfMDQ4Iiwib2ZfYl8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsImFfb2Zfc2V4cCIsImJfb2Zfc2V4cCIsInNleHBfb2ZfYiIsImNfb2Zfc2V4cCIsInNleHBfb2ZfYyIsInNldCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25fbWFwaSIsImZpcnN0cyIsInNlY29uZHMiLCJwYXJ0aXRpb25pX3RmIiwidG9fc2VxdWVuY2VfbXV0YWJsZSIsInRvX3NlcXVlbmNlIiwiaTEiLCJpMiIsInR0Iiwid2lkdGgiLCJkZXB0aCIsImQiLCJ3IiwidHQkMCIsImdldCQwIiwiemVyb19vYmoiLCJjcmVhdGVfemVybyIsInVuc2FmZV9nZXQiLCJ1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkiLCJvYmoiLCJzZXRfd2l0aF9jYW1sX21vZGlmeSIsInVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbiIsIm9sZF9vYmoiLCJ1bnNhZmVfc2V0IiwidW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlIiwidW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfIiwidW5zYWZlX3NldF9pbnQiLCJ1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciIsImkkMiIsInVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCIsImNyZWF0ZV9vYmpfYXJyYXkiLCJncmFtbWFyIiwiY2VpbCIsImZsb29yIiwibW9kX2Zsb2F0IiwibW9kZiIsIm1heF9maW5pdGVfdmFsdWUiLCJjbGFzc2lmeV9mbG9hdCIsImFic19mbG9hdCIsImlzX2ludGVnZXIiLCJmcmV4cCIsImxkZXhwIiwiaXNfbmFuIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXIiLCJ0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4iLCJvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciIsIm9uZV91bHAiLCJkaXIiLCJ1cHBlcl9ib3VuZF9mb3JfaW50IiwiZXhwIiwiaXNfeF9taW51c19vbmVfZXhhY3QiLCJsb3dlcl9ib3VuZF9mb3JfaW50IiwibWluX2ludF9hc19mbG9hdCIsImJveCIsImlzX2xvd2VyY2FzZSIsImlzX3VwcGVyY2FzZSIsImlzX3ByaW50IiwiaXNfd2hpdGVzcGFjZSIsImlzX2RpZ2l0IiwiaXNfYWxwaGEiLCJpc19hbHBoYW51bSIsImdldF9kaWdpdF91bnNhZmUiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0X2xvd2VyIiwiaXNfaGV4X2RpZ2l0X3VwcGVyIiwiZ2V0X2hleF9kaWdpdF9leG4iLCJnZXRfaGV4X2RpZ2l0IiwidF9vZl9zZXhwJDEiLCJjMSIsImMyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRyX2NyZWF0ZV9tYXAiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsInRyX21hcCIsImkkMyIsImluZGV4JDAiLCJsYXN0X3JlcGxhY2VtZW50IiwiaW5kZXgiLCJmaXJzdF90YXJnZXQiLCJzdGFnZSIsInVuc3RhZ2UiLCJ1bnNhZmVfc3ViIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwia21wX2FycmF5XzAxMiIsImNhc2Vfc2Vuc2l0aXZlXzAxMCIsInBhdHRlcm5fMDA4IiwiYXJnXzAxMyIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsImJuZHNfMDA3JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJkcm9wX3ByZWZpeCIsImRyb3Bfc3VmZml4IiwibGZpbmRpIiwicmZpbmRpIiwibGFzdF9ub25fZHJvcCIsInJzdHJpcCIsImZpcnN0X25vbl9kcm9wIiwibHN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY29uY2F0X2FycmF5IiwiYXIiLCJjb25jYXRfbGluZXMiLCJsaW5lcyQzIiwiY3JsZiIsIm5ld2xpbmVfbGVuIiwibGluZXMiLCJsaW5lcyQwIiwiYnVmIiwibGluZXMkMSIsIndyaXR0ZW4iLCJsaW5lcyQyIiwibGluZSQwIiwib3V0Iiwib3V0X3BvcyIsIm91dCQwIiwiY2hvcF9wcmVmaXgiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9leG4iLCJjaG9wX3N1ZmZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3Bfc3VmZml4X2V4biIsInNob3J0ZXIiLCJzaG9ydGVzdCIsInBvc19mcm9tX2xlZnQiLCJwb3NfZnJvbV9yaWdodCIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCIsImdldF9wb3MiLCJtYXhfbGVuIiwibGVuX3NvX2ZhciIsImxlbl9zb19mYXIkMCIsImxlbl9zb19mYXIkMSIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGgiLCJjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCIsImZpcnN0JDAiLCJtYXhfbGVuJDAiLCJtYXhfbGVuJDEiLCJjb21tb25fZ2VuZXJpY19sZW5ndGgiLCJjb21tb25fZ2VuZXJpYzIiLCJjb21tb25fZ2VuZXJpYyIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeDIiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeF9sZW5ndGgiLCJjb21tb25fcHJlZml4Ml9sZW5ndGgiLCJjb21tb25fc3VmZml4Ml9sZW5ndGgiLCJvZl9jaGFyIiwib2ZfY2hhcl9saXN0IiwicGFkX3JpZ2h0IiwicGFkX2xlZnQiLCJsb2NhbF9jb3B5X3ByZWZpeCIsImJ1ZmZlcl9sZW4iLCJsb2NhbF9jb3B5X3RvX3N0cmluZyIsInNyY19wb3MkMCIsImRzdF9wb3MkMCIsInBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSIsImZzdF9wb3MkMCIsInNuZF9wb3MkMCIsImZzdHMiLCJzbmRzIiwiYyQxIiwic25kX3BvcyQxIiwiZnN0X3BvcyQxIiwiYyQyIiwic25kX3BvcyQyIiwic3JjX3BvcyQxIiwiZnN0X3BvcyIsInNuZF9wb3MiLCJjMSQxIiwiZWl0aGVyJDEiLCJjMiQxIiwiYzIkMiIsImMxJDAiLCJlaXRoZXIkMCIsImMyJDAiLCJwb3MkMiIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsIm1hcGkkMCIsIm9jYW1sX2xleF90YWJsZXMiLCJwYXJzZV9oZXgiLCJsZXhidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsImNvbnZlcnRfZmFpbHVyZSIsIm51bV9iaXRzX2ludCIsIm51bV9iaXRzX25hdGl2ZWludCIsIm51bV9iaXRzX2ludDMyIiwibnVtX2JpdHNfaW50NjQiLCJtaW5faW50MzIiLCJtYXhfaW50MzIiLCJtaW5faW50NjQiLCJtYXhfaW50NjQiLCJtaW5fbmF0aXZlaW50IiwibWF4X25hdGl2ZWludCIsImludDY0X3RvX3N0cmluZyIsIm5hdGl2ZWludF90b19zdHJpbmciLCJpbnQzMl90b19pbnRfdHJ1bmMiLCJpbnRfdG9faW50MzJfdHJ1bmMiLCJpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiIsImludF90b19pbnQzMiIsImludDMyX3RvX2ludCIsImludF90b19pbnQzMl9leG4iLCJpbnQzMl90b19pbnRfZXhuIiwiaW50X3RvX2ludDY0IiwiaW50NjRfdG9faW50X3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQiLCJpbnQ2NF90b19pbnQiLCJpbnQ2NF90b19pbnRfZXhuIiwiaW50X3RvX25hdGl2ZWludCIsIm5hdGl2ZWludF90b19pbnRfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50IiwibmF0aXZlaW50X3RvX2ludF9leG4iLCJpbnQzMl90b19pbnQ2NCIsImludDY0X3RvX2ludDMyX3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzIiwiaW50NjRfdG9faW50MzIiLCJpbnQ2NF90b19pbnQzMl9leG4iLCJpbnQzMl90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50MzIiLCJuYXRpdmVpbnRfdG9faW50MzJfZXhuIiwiaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludDY0IiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpIiwiaW50NjRfdG9fbmF0aXZlaW50IiwiaW50NjRfdG9fbmF0aXZlaW50X2V4biIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NiIsImludDY0X2ZpdF9vbl9pbnQ2M19leG4iLCJpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IiwiZGVsaW1pdGVyIiwiY2hhcnNfcGVyX2RlbGltaXRlciIsImlucHV0X2xlbmd0aCIsImhhc19zaWduIiwibnVtX2RpZ2l0cyIsIm51bV9kZWxpbWl0ZXJzIiwib3V0cHV0X2xlbmd0aCIsImlucHV0X3BvcyIsIm91dHB1dF9wb3MiLCJudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIiwiZmlyc3RfZGlnaXRfcG9zIiwiaW5zZXJ0X2RlbGltaXRlciIsImluc2VydF91bmRlcnNjb3JlcyIsInNleHBfb2ZfaW50X3N0eWxlIiwiZGVsaW1pdGVyJDAiLCJtYWtlX3N1ZmZpeCIsInRvX3N0cmluZyQwIiwiaW52YWxpZCIsIm9mX3N0cmluZ193aXRoX2RlbGltaXRlciIsImxleCIsImJvZHkkMCIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbiIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSIsImludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsIm92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUiLCJpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsIiwiaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwibmVnYXRpdmVfZXhwb25lbnQiLCJvdmVyZmxvdyIsImludF9wb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpbnQ2NF9wb3ciLCJpbnQ2M19wb3dfb25faW50NjQiLCJydmFsIiwib25lIiwicm91bmRfZG93biIsIm1vZHVsdXMiLCJyb3VuZF91cCIsInJlbWFpbmRlciIsInJvdW5kX3Rvd2FyZHNfemVybyIsInRvX211bHRpcGxlX29mIiwicm91bmRfbmVhcmVzdCIsIm1vZHVsdXNfbWludXNfcmVtYWluZGVyIiwicm91bmQiLCJoMDEiLCJtYXNrIiwiaW50NjRfcG9wY291bnQiLCJ4JDIiLCJpbnQzMl9wb3Bjb3VudCIsIm5hdGl2ZWludF9wb3Bjb3VudCIsIm1vZHVsZV9uYW1lJDAiLCJvZl9zdHJpbmckMCIsImZsb2F0X2xvd2VyX2JvdW5kIiwiZmxvYXRfdXBwZXJfYm91bmQiLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJ6ZXJvIiwiZnVuYyQwIiwibmVnIiwib2Zfc3RyaW5nJDEiLCJvZl9pbnQzMiIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjQiLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnQiLCJhYnMiLCJyZW0iLCJpbmNyIiwiZGVjciIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJzaGlmdF9sZWZ0IiwiYml0X25vdCIsImJpdF9vciIsImJpdF9hbmQiLCJiaXRfeG9yIiwicG93Iiwibm9uX3Bvc2l0aXZlX2FyZ3VtZW50IiwiY2VpbF9wb3cyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwiZmxvb3JfcG93MiIsImlzX3BvdzIiLCJmbG9vcl9sb2cyIiwiY2VpbF9sb2cyIiwicG9wY291bnQiLCJsbm90Iiwic3VjY19leG4iLCJtc2ciLCJwcmVkX2V4biIsIm9mX3NjYWxhciIsIm9mX3NjYWxhcl9leG4iLCJ0b19zY2FsYXIiLCJ0b19jaGFyIiwidG9fY2hhcl9leG4iLCJ1dGY4X2J5dGVfbGVuZ3RoIiwidWNoYXIiLCJjb2RlcG9pbnQiLCJzb21lX3QiLCJzeW0iLCJ0cmFucyIsImNvbnYiLCJkZXR1cGxlMiIsInR1cGxlMiIsIndpdG5lc3MiLCJ2XzAwNSIsInRvX3NleHAiLCJ1aWQiLCJzYW1lX3dpdG5lc3MiLCJzYW1lIiwic2FtZV93aXRuZXNzX2V4biIsIm5vbmVfc3Vic3RpdHV0ZSIsIm5vbmUiLCJ2YWx1ZV91bnNhZmUiLCJvZl9zZXhwYWJsZSIsInRvX3NleHBhYmxlIiwieF8wMDMiLCJvZl9hXzAwNCIsInhfMDA1IiwiaW5pdF9zb21lIiwiZ2V0X3NvbWVfZXhuIiwiaXNfbm9uZSQwIiwiaXNfc29tZSQwIiwic2V0X3NvbWUiLCJzZXRfbm9uZSIsInVuc2FmZV9nZXRfc29tZV9leG4iLCJ1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSIsInVuc2FmZV9pc19zb21lIiwidW5zYWZlX3NldF9zb21lIiwidW5zYWZlX3NldF9ub25lIiwiY2xlYXIiLCJlbGVtIiwibWFwX3NvbWUiLCJvZl9hcnJheV9zb21lIiwiY2FwYWNpdHkiLCJlbHRzIiwibGVuZ3RoXzAwMyIsImVsdHNfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJyZXNpemUiLCJzaXplIiwic2V0X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5JDAiLCJwdXNoIiwicG9wX25vbmVtcHR5IiwicG9wX2Vycm9yIiwicG9wIiwicG9wX2V4biIsInRvcF9ub25lbXB0eSIsInRvcF9lcnJvciIsInRvcCIsInRvcF9leG4iLCJ1bnRpbF9lbXB0eSIsInRfcmVzdWx0IiwiZmlsdGVyX2lucGxhY2UiLCJ3cml0ZV9pbmRleCIsInJlYWRfaW5kZXgiLCJoYXNoX292ZXJyaWRlIiwib2ZfcG9zIiwib2Zfc2lnbiIsInRvX3NpZ25fZXhuIiwidG9faW50X2V4biIsImVycm9yX3NvdXJjZV8wMDYiLCJpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW0iLCJhbGxfb2ZfYSIsImVudW1lcmF0ZV8wMDIiLCJlbnVtZXJhdGVfMDAxIiwiYWNjJDIiLCJvZl9hXzAwMyIsInNleHBfMDA4IiwidGFnXzAwOSIsInNleHBfYXJnc18wMTAiLCJhcmcwXzAxMSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwiYV8wMTEiLCJiXzAxMiIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDE4IiwibGVmdF8wMTciLCJyaWdodF8wMjIiLCJsZWZ0XzAyMSIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwicmlnaHRfMDIwIiwibGVmdF8wMTkiLCJ0XzAzMCIsInRfMDI5IiwidF8wMzIiLCJ0XzAzMSIsInJpZ2h0XzAzNCIsImxlZnRfMDMzIiwicmlnaHRfMDM4IiwibGVmdF8wMzciLCJ0XzA0MCIsInRfMDM5IiwidF8wNDIiLCJ0XzA0MSIsInJpZ2h0XzAzNiIsImxlZnRfMDM1Iiwib2Zfa18wNDMiLCJvZl92XzA0NCIsInNleHBfMDcxIiwiYXJnMV8wNjgiLCJhcmcwXzA2NyIsInJlczBfMDY5IiwiYXRvbV8wNDciLCJzZXhwX2FyZ3NfMDUwIiwiYXRvbV8wNDckMCIsImFyZzBfMDU4IiwiYXJnMV8wNTMiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwicmVzMF8wNTkiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsInJlczFfMDcwIiwib2Zfa18wNzIiLCJvZl92XzA3MyIsImFyZzFfMDgyIiwiYXJnMF8wODEiLCJyZXMwXzA4MyIsInZfMDc0IiwicmVzMV8wODQiLCJ2XzA3NiIsImFyZzFfMDc4IiwiYXJnMF8wNzciLCJyZXMwXzA3OSIsInJlczFfMDgwIiwidl8wNzUiLCJrX3NleHBfZ3JhbW1hciIsInZfc2V4cF9ncmFtbWFyIiwiY21wX2xlZnQiLCJjbXBfcmlnaHQiLCJhXzA4NSIsImJfMDg2IiwicmlnaHRfMDkyIiwibGVmdF8wOTEiLCJ0XzA5NCIsInRfMDkzIiwidF8wOTYiLCJ0XzA5NSIsInJpZ2h0XzA4OCIsImxlZnRfMDg3IiwicmlnaHRfMDkwIiwibGVmdF8wODkiLCJhXzA5NyIsImJfMDk4IiwicmlnaHRfMTA0IiwibGVmdF8xMDMiLCJ0XzEwNiIsInRfMTA1IiwidF8xMDgiLCJ0XzEwNyIsInJpZ2h0XzEwMCIsImxlZnRfMDk5IiwicmlnaHRfMTAyIiwibGVmdF8xMDEiLCJvZl9sZWZ0XzEwOSIsIm9mX3JpZ2h0XzExMCIsInZfMTEzIiwiYXJnMV8xMTUiLCJhcmcwXzExNCIsInJlczBfMTE2IiwicmVzMV8xMTciLCJ2XzExMSIsInZfMTEyIiwic2V4cF9vZl90JDMiLCJoZWlnaHQiLCJpbl9yYW5nZSIsImhsIiwiaHIiLCJsb3dlciQxIiwiaW52YXJpYW50cyIsImgkMSIsImgkMCIsInNsIiwic3IiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2siLCJrbCIsImskMSIsImtsJDAiLCJrJDIiLCJrciIsImxlZnRfbGVuZ3RoIiwicmlnaHRfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCIsImFycmF5X2xlbmd0aCIsIm9mX3NvcnRlZF9hcnJheSIsImluY3JlYXNpbmciLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYkMCIsImxybCIsImxydiIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiQwIiwicmxsIiwicmx2IiwiYXV4IiwiYWRkX21pbiIsImFkZF9tYXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsInNwbGl0X2xlX2d0Iiwic3BsaXRfbHRfZ2UiLCJlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW8iLCJyZW1vdmVfaW5kZXgiLCJsX3NpemUiLCJ1bmlvbiIsInYxJDAiLCJ2MiQwIiwicjIkMCIsInIxJDAiLCJ1bmlvbl9saXN0IiwidG9fdHJlZSIsImludGVyIiwib3RoZXJfc2V0IiwiZSQxIiwiY29uc19yaWdodCIsIm9mX3NldCIsImVudW0kMCIsInRyZWUiLCJzeW1tZXRyaWNfZGlmZiIsImVsdCQwIiwiZW51bTEiLCJ0cmVlMSIsImVudW0yIiwidHJlZTIiLCJjb21wYXJlX3Jlc3VsdCIsIm5leHRfc3RhdGUiLCJncmVhdGVyX29yX2VxdWFsX3RvIiwibGVzc19vcl9lcXVhbF90byIsImluY2x1c2l2ZV9ib3VuZCIsInNpZGUiLCJtYXliZSIsInYkMSIsInYkMiIsInYkMyIsInYkNCIsImUkMiIsIm1lcmdlX3RvX3NlcXVlbmNlIiwiZTIkMiIsImUxJDIiLCJlMiQwIiwiZTEkMCIsImUyJDEiLCJlMSQxIiwidDIkMiIsInQxJDIiLCJpc19zdWJzZXQiLCJhcmVfZGlzam9pbnQiLCJhY2N1JDEiLCJmaWx0Iiwia2VlcF92IiwibF9mIiwibF90Iiwia2VlcF92X3QiLCJyX2YiLCJyX3QiLCJtayIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiY2hvb3NlIiwiY2hvb3NlX2V4biIsInBvc19yZWYiLCJncm91cF9ieSIsImVxdWl2Iiwic2V0JDAiLCJlcXVpdl9jbGFzc2VzIiwibm90X2VxdWl2X3giLCJlcXVpdl94IiwiZXF1aXZfY2xhc3NlcyQwIiwic3RhYmxlX2RlZHVwX2xpc3QiLCJsZWZ0b3ZlcnMiLCJhbHJlYWR5X3NlZW4iLCJhbHJlYWR5X3NlZW4kMCIsImxlZnRvdmVycyQwIiwidF9vZl9zZXhwX2RpcmVjdCIsImVsdF9sc3QiLCJlbF9zZXhwIiwiaXNfc3Vic2V0JDAiLCJzdWJzZXQiLCJzdXBlcnNldCIsInNleHBfb2ZfZWx0IiwiaW52YWxpZF9lbGVtZW50cyIsImludmFsaWRfZWxlbWVudHNfc2V4cCIsImxpa2UiLCJsaWtlX21heWJlX25vX29wIiwib2xkX3QiLCJvbGRfdHJlZSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsIm5hbWVkIiwiaXNfc3Vic2V0JDIiLCJwYXJ0aXRpb25fdGYkMCIsInRyZWVfZiIsInRyZWVfdCIsInNwbGl0X2xlX2d0JDAiLCJzcGxpdF9sdF9nZSQwIiwiZ3JvdXBfYnkkMCIsIm50aCQwIiwicmVtb3ZlX2luZGV4JDAiLCJ0b19zZXF1ZW5jZSQwIiwiYmluYXJ5X3NlYXJjaCQwIiwiYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQkMCIsIm1lcmdlX3RvX3NlcXVlbmNlJDAiLCJoYXNoX2ZvbGRfZGlyZWN0IiwidF9vZl9zZXhwX2RpcmVjdCQwIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImVsZW1lbnRzJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImNob29zZSQxIiwiY2hvb3NlX2V4biQxIiwidG9fYXJyYXkkMSIsIml0ZXIkMiIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiY291bnQkMSIsInN1bSQxIiwiZmluZCQxIiwiZmluZF9leG4kMSIsImZpbmRfbWFwJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmaWx0ZXIkMSIsImZpbHRlcl9tYXAkMCIsInBhcnRpdGlvbl90ZiQxIiwiaXRlcjIkMSIsIm1lbSQxIiwiYWRkJDEiLCJyZW1vdmUkMSIsInVuaW9uJDEiLCJpbnRlciQxIiwiZGlmZiQxIiwic3ltbWV0cmljX2RpZmYkMSIsImNvbXBhcmVfZGlyZWN0JDAiLCJpc19zdWJzZXQkMyIsImFyZV9kaXNqb2ludCQxIiwib2Zfc2VxdWVuY2UkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJzcGxpdF9sZV9ndCQxIiwic3BsaXRfbHRfZ2UkMSIsIm50aCQxIiwicmVtb3ZlX2luZGV4JDEiLCJvZl90cmVlIiwidG9fc2VxdWVuY2UkMSIsImJpbmFyeV9zZWFyY2gkMSIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDEiLCJtZXJnZV90b19zZXF1ZW5jZSQxIiwiaXNfc3Vic2V0JDQiLCJ0b190cmVlJDAiLCJvZl90cmVlJDAiLCJ0X29mX3NleHBfZGlyZWN0JDEiLCJlbXB0eSQwIiwic2luZ2xldG9uJDAiLCJ1bmlvbl9saXN0JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX3NvcnRlZF9hcnJheSQxIiwib2ZfbGlzdCQxIiwib2Zfc2VxdWVuY2UkMSIsIm9mX2FycmF5JDEiLCJzdGFibGVfZGVkdXBfbGlzdCQxIiwiZmlsdGVyX21hcCQxIiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwidW5pb25fbGlzdCQyIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9zb3J0ZWRfYXJyYXkkMiIsIm9mX2xpc3QkMiIsIm9mX3NlcXVlbmNlJDIiLCJvZl9hcnJheSQyIiwic3RhYmxlX2RlZHVwX2xpc3QkMiIsImZpbHRlcl9tYXAkMiIsIm9mX3RyZWUkMSIsInNleHBfb2ZfbV90IiwiRWx0IiwibV90X29mX3NleHAiLCJtX3Rfc2V4cF9ncmFtbWFyIiwiY29tcGFyZV9tX3QiLCJlcXVhbF9tX3QiLCJoYXNoX2ZvbGRfbV90IiwiaGFzaF9tX3QiLCJjb21wYXJhdG9yJDAiLCJlbXB0eSQyIiwic2luZ2xldG9uJDIiLCJ1bmlvbl9saXN0JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2FycmF5JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl90cmVlJDIiLCJ0b190cmVlJDEiLCJyZXBsYWNlIiwic2V0X3RlbXBvcmFyaWx5IiwicmVzdG9yZV90byIsInNldHMiLCJzbmFwc2hvdCIsInNldHNfdGVtcG9yYXJpbHkiLCJhbmRfdmFsdWVzIiwiaW5jX251bV9tdXRhdGlvbnMiLCJlbHRzX2luZGV4IiwiY2hlY2tfaW5kZXhfZXhuIiwiZW5zdXJlX25vX211dGF0aW9uIiwibnVtX211dGF0aW9ucyIsIm51bV9tdXRhdGlvbnNfMDAzIiwiZnJvbnRfMDA1IiwibWFza18wMDciLCJsZW5ndGhfMDA5IiwiZWx0c18wMTEiLCJhcmdfMDEyIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwic2V0X2NhcGFjaXR5X2ludGVybmFsIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9hbmRfaWdub3JlX2V4biIsImZyb250X25vbmVtcHR5IiwibGFzdF9ub25lbXB0eSIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwiZmlsdGVyaV9pbnBsYWNlIiwidW5yZWFjaGFibGVfY29kZSIsInplcm8kMCIsIm1pbnVzX29uZSIsInplcm8kMSIsInRvX2ludF90cnVuYyIsInRvX2ludDMyX3RydW5jIiwib2ZfaW50NjRfdHJ1bmMiLCJuYW1lJDAiLCJvZl9jb250aW51ZV9vcl9zdG9wIiwidG9fY29udGludWVfb3Jfc3RvcCIsImxlZnRfdmFsdWUiLCJyaWdodF92YWx1ZSIsInZhbHVlcyIsImxlZnRfZGVmYXVsdCIsInJpZ2h0X2RlZmF1bHQiLCJyaWdodCQwIiwiY29tcGFyZV9rZXkiLCJ2bCIsInZsJDAiLCJ2ciIsImswIiwiazEiLCJsZCIsImxyZCIsImxyZCQwIiwicmQiLCJybGQiLCJybGQkMCIsInJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQiLCJzZXhwX29mX2tleSIsImZpbmRfYW5kX2FkZF9vcl9zZXQiLCJkYXRhIiwiYWRkX29yX3NldCIsInRyZWUkMCIsInRyZWUkMSIsImxlbmd0aCQyIiwidHJlZSQyIiwiZCQwIiwidHJlZSQzIiwibGVuZ3RoJDMiLCJ0cmVlJDQiLCJsZW5ndGgkNCIsInRyZWUkNSIsInNldF9taW4iLCJzZXRfbWF4IiwiYWRkX2V4biIsImFkZF9leG5faW50ZXJuYWwiLCJzaW5nbGV0b25fdG9fdHJlZV9leG4iLCJjb2xsYXBzZSIsImdvIiwiYWRkX3VuY2hlY2tlZCIsImdvJDAiLCJ0b190cmVlX3VuY2hlY2tlZCIsIm1heF9rZXkiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIiwiYnVpbGRlciIsInByZXZfa2V5Iiwiam9pbiQwIiwibGQkMCIsImxrJDAiLCJyayIsInJkJDAiLCJyayQwIiwibGsiLCJjbXAkMCIsIm1heWJlJDAiLCJzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkiLCJpbnRvIiwiYm91bmRhcnlfb3B0Iiwic3BsaXRfcmFuZ2UiLCJtaWRfYW5kX3JpZ2h0IiwibGIkMSIsImxiJDIiLCJtaWRfYW5kX3JpZ2h0JDAiLCJsYiIsImxiJDAiLCJtaWQkMCIsImFkZF9tdWx0aSIsImRhdGEkMCIsImZpbmRfbXVsdGkiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm1pbl91cHBlciIsIm1heF9sb3dlciIsInVwcGVyX3BhcnRfd2l0aG91dF9taW4iLCJnbyQxIiwiY19taW4iLCJjX21heCIsImluaXQkMiIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwicmFuZ2VfdG9fYWxpc3QiLCJjb25jYXRfdW5jaGVja2VkIiwiY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkNSIsImxlbmd0aCQ2IiwidHJlZSQ2IiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwibmV3X2RhdGEiLCJuZXdfZGF0YSQwIiwibmV3X2RhdGEkMSIsImtlZXBfZGF0YSIsImZpbHRlcl9rZXlzIiwia2VlcF9kYXRhX3QiLCJzdGVwX2RlZXBlcl9leG4iLCJkcm9wX3BoeXNfZXF1YWxfcHJlZml4IiwiYWNjMSIsImFjYzIiLCJ0cmVlMSQwIiwiYWNjMSQwIiwidHJlZTIkMCIsImFjYzIkMCIsImFjYzEkMSIsInRyZWUxJDEiLCJhY2MyJDEiLCJ0cmVlMiQxIiwiYWNjMiQyIiwidHJlZTIkMiIsImFjYzEkMiIsInRyZWUxJDIiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMSIsImVudW0yJDAiLCJlbnVtMSQwIiwia2V5cyIsIm9mX2ZvbGRhYmxlIiwiZm9sZGFibGUiLCJwcmV2X2RhdGEiLCJvZl9mb2xkYWJsZV9mb2xkIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwib2ZfZm9sZGFibGUkMCIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfZm9sZGFibGVfbXVsdGkiLCJvZl9hbGlzdF9mb2xkIiwib2ZfYWxpc3RfcmVkdWNlIiwib2ZfYWxpc3QiLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9saXN0X3dpdGhfa2V5IiwiZ2V0X2tleSIsIm5ld19sZW5ndGgiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwidG9fYWxpc3QiLCJrZXlfb3JkZXIiLCJtZXJnZV9sYXJnZV9maXJzdCIsImxlbmd0aF9sYXJnZSIsInRfbGFyZ2UiLCJ0X3NtYWxsIiwibWVyZ2Vfc2tld2VkIiwibGVuZ3RoMSIsImxlbmd0aDIiLCJyZXBhY2thZ2UiLCJtYXJrZXIiLCJjbG9zZXN0X2tleSIsImZvdW5kX21hcmtlciIsImZvdW5kX2tleSIsImZvdW5kX3ZhbHVlIiwiZm91bmRfdmFsdWUkMCIsImZvdW5kX2tleSQwIiwicmFuayIsIm51bV90b19zZWFyY2giLCJwYWlyIiwicGFpciQwIiwiYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQiLCJtYXliZV9ib3VuZCIsImlmX2V4Y2x1c2l2ZSIsImlmX2luY2x1c2l2ZSIsImZpbmRfYm91bmQiLCJib3VuZCQwIiwiYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIiwibG93ZXJfYm91bmQkMCIsInVwcGVyX2JvdW5kJDAiLCJvZl9pdGVyaSIsIm9mX2l0ZXJpX2V4biIsImtleV9vZl9zZXhwIiwidmFsdWVfb2Zfc2V4cCIsImFsaXN0X3NleHBzIiwiZm91bmRfZmlyc3RfayIsImsyX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwiZXJyb3JzIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJ0cmFuc3Bvc2Vfa2V5cyIsIm91dGVyX2NvbXBhcmF0b3IiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfdCIsIm91dGVyX2tleSIsImlubmVyX3QiLCJpbm5lcl9rZXkiLCJhY2NfbGVuIiwiZWx0X2xlbiIsInRyZWVfZmlsdGVyX21hcGkiLCJyX2xlbiIsImxfbGVuIiwid2l0aF9zYW1lX2xlbmd0aCIsIm9mX2xpa2VfdHJlZSIsIm9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCIsImFkZF9leG4kMCIsImFkZF9tdWx0aSQwIiwicmVtb3ZlX211bHRpJDAiLCJmaW5kX211bHRpJDAiLCJjaGFuZ2UkMCIsInVwZGF0ZSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaV91bnRpbCQwIiwiZm9sZCQzIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDAiLCJmaWx0ZXJpJDAiLCJmaWx0ZXJfbWFwaSQwIiwib2ZfbGlrZV90cmVlMiIsIm9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSQwIiwic3VicmFuZ2UiLCJoX2wiLCJoX3IiLCJvdXRlcl9qb2luZWRfaGVpZ2h0IiwibWlkX2xlbmd0aCIsImFwcGVuZCQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMCIsInJhbmdlX3RvX2FsaXN0JDAiLCJjbG9zZXN0X2tleSQwIiwicmFuayQwIiwic2V4cF9vZl9rIiwic2V4cF9vZl92IiwiaGFzaF9mb2xkX2tleSIsImhhc2hfZm9sZF9kYXRhIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsIm5ld190cmVlIiwibmV3X3RyZWVfd2l0aF9sZW5ndGgiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsIm9mX2xpc3Rfd2l0aF9rZXkkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDAiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDAiLCJzZXQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiaXRlcl9rZXlzJDEiLCJpdGVyaV91bnRpbCQxIiwibWFwaSQxIiwiZm9sZCQ0IiwiZm9sZDIkMiIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXJpJDEiLCJmaWx0ZXJfbWFwaSQxIiwicGFydGl0aW9uX21hcGkkMSIsInBhcnRpdGlvbl9tYXAkMSIsInBhcnRpdGlvbmlfdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJrZXlzJDEiLCJkYXRhJDEiLCJ0b19hbGlzdCQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwiZm9yX2FsbGkkMSIsImV4aXN0c2kkMSIsImNvdW50aSQxIiwiYXBwZW5kJDEiLCJzdWJyYW5nZSQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMSIsInJhbmdlX3RvX2FsaXN0JDEiLCJjbG9zZXN0X2tleSQxIiwibnRoJDIiLCJudGhfZXhuJDAiLCJyYW5rJDEiLCJrX29mX3NleHAiLCJ2X29mX3NleHAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJtYXBfa2V5cyQwIiwiZHVwIiwibWFwX2tleXNfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiYWRkX2V4biQyIiwib2ZfdHJlZTAiLCJvZl9hbGlzdCQxIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMSIsIm9mX2FsaXN0X2V4biQxIiwib2ZfYWxpc3RfbXVsdGkkMSIsIm9mX2FsaXN0X2ZvbGQkMSIsIm9mX2FsaXN0X3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsInRyZWVfbGVuZ3RoIiwib2ZfaXRlcmlfZXhuJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwidHJhbnNwb3NlX2tleXMkMSIsIm9mX3RyZWUkMyIsIm9mX2FsaXN0JDIiLCJvZl9hbGlzdF9vcl9lcnJvciQyIiwib2ZfYWxpc3RfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQyIiwib2Zfc2VxdWVuY2VfZXhuJDIiLCJvZl9zZXF1ZW5jZV9tdWx0aSQyIiwib2Zfc2VxdWVuY2VfZm9sZCQyIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm9mX2xpc3Rfd2l0aF9rZXkkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDMiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDMiLCJtYXBfa2V5cyQzIiwibWFwX2tleXNfZXhuJDMiLCJ0cmFuc3Bvc2Vfa2V5cyQzIiwidHJhbnNmZXIiLCJjYW1sX2l0ZXIiLCJjYW1sX2ZvbGQiLCJxIiwicSQwIiwiZmxvYXRfb2ZfYml0cyIsImJpdHNfb2ZfZmxvYXQiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJ0b19uYXRpdmVpbnRfZXhuIiwid3JhcF9leG4iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsIm9mX3N0cmluZ19yYXciLCJzaWduZWRuZXNzIiwicG9zX3N0ciIsImludDYzIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsIm9mX2ludF90cnVuYyIsInJlcHIiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwib2Zfc3RyaW5nX29wdCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkiLCJzdGFydF9pZHgiLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfcmFuZG9tbHlfZXhuIiwiaW52YXJpYW50X2tleSIsImludmFyaWFudF9kYXRhIiwicmVhbF9sZW4iLCJuZXdfdCIsInQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2RhdGEiLCJkdXBlcyIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsInNleHBfb2ZfZGF0YSIsImRfb2Zfc2V4cCIsImtfZ3JhbW1hciIsInJvdyIsIm9sZCIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJtYXliZV9zZXQiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibWVyZ2VfaW50byIsImRzdF9kYXRhJDAiLCJhY3Rpb24iLCJkc3RfZGF0YSIsInRvX3JlbW92ZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwibWFwX3Jlc3VsdHMiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzaW1pbGFyIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDEiLCJjcmVhdGVfbWFwcGVkJDEiLCJjcmVhdGVfd2l0aF9rZXkkMSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQxIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQxIiwiZ3JvdXAkMSIsImhhc2hhYmxlX3MiLCJwb2x5X2hhc2hhYmxlIiwic3RyaWN0X2FkZCIsInN0cmljdF9hZGRfZXhuIiwic3RyaWN0X3JlbW92ZSIsInN0cmljdF9yZW1vdmVfZXhuIiwic2V4cF9vZl9lIiwibGFyZ2VyIiwic21hbGxlciIsIm9mX2hhc2h0Ymxfa2V5cyIsImhhc2h0YmwiLCJ0b19oYXNodGJsIiwiZV9vZl9zZXhwIiwiZXJyb3Jfc291cmNlXzAwNyIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwib2ZfaW50NjMiLCJpcm91bmRfbGJvdW5kIiwiaXJvdW5kX3Vib3VuZCIsImlyb3VuZF91cCIsImlyb3VuZF91cF9leG4iLCJpcm91bmRfZG93biIsImlyb3VuZF9kb3duX2V4biIsImlyb3VuZF90b3dhcmRzX3plcm8iLCJpcm91bmRfdG93YXJkc196ZXJvX2V4biIsInJvdW5kX25lYXJlc3RfbGIiLCJyb3VuZF9uZWFyZXN0X3ViIiwib25lX3VscF9sZXNzX3RoYW5faGFsZiIsImFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IiwiaXJvdW5kX25lYXJlc3RfMzIiLCJpcm91bmRfbmVhcmVzdF82NCIsInBpIiwic3FydF9waSIsInNxcnRfMnBpIiwiZXVsZXIiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzcXVhcmUiLCJmcmFjdGlvbmFsIiwiaW50ZWdyYWwiLCJyb3VuZF9uZWFyZXN0X2lubGluZSIsInJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIiwiY2VpbF9vcl9zdWNjIiwiZGlmZl9mbG9vciIsImRpZmZfY2VpbCIsImludDYzX3JvdW5kX2xib3VuZCIsImludDYzX3JvdW5kX3Vib3VuZCIsImludDYzX3JvdW5kX3VwX2V4biIsImludDYzX3JvdW5kX2Rvd25fZXhuIiwiaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9leG4iLCJjbGFzc2lmeSIsInN0cmlwX3plcm8iLCJkZWNpbWFscyIsImV4cGxpY2l0X3BsdXMiLCJ0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG8iLCJraWxvIiwibWVnYSIsImdpZ2EiLCJ0ZXJhIiwicGV0YSIsIm1hZyIsIm51bWVyYXRvciIsImRlbm9taW5hdG9yIiwiaGlnaGVyIiwiZGlmZl9yaWdodCIsImRpZmZfbGVmdCIsInBldGEkMCIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyIsInJvdW5kX2dlbiIsInNkIiwiZGQiLCJkZCQwIiwic2QkMCIsImRkJDEiLCJzZCQxIiwiYWJzX2RkIiwicm91bmRfc2lnbmlmaWNhbnQiLCJzaWduaWZpY2FudF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsIiwiZGVjaW1hbF9kaWdpdHMiLCJzaWduX2V4biIsInNpZ25fb3JfbmFuIiwiaWVlZV9uZWdhdGl2ZSIsIm1hbnRpc3NhX2JpdHMiLCJleHBvbmVudF9tYXNrNjQiLCJleHBvbmVudF9tYXNrIiwibWFudGlzc2FfbWFzayIsIm1hbnRpc3NhX21hc2s2NCIsImllZWVfZXhwb25lbnQiLCJpZWVlX21hbnRpc3NhIiwiY3JlYXRlX2llZWVfZXhuIiwibmVnYXRpdmUiLCJtYW50aXNzYSIsInNpZ25fYml0cyIsImV4cHRfYml0cyIsIm1hbnRfYml0cyIsImNyZWF0ZV9pZWVlIiwic3BlY2lhbGl6ZWRfaGFzaCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJjYW1sX2J1ZmZlcl9sZW5ndGgiLCJjYW1sX2J1ZmZlcl9ibGl0IiwiZWxpZGVkX21lc3NhZ2UiLCJlbGlkZSIsImF0X21vc3RfbnVtX2ZyYW1lcyIsInRvX3N0cmluZ19saXN0Iiwic2V0X3JlY29yZGluZyIsImFtX3JlY29yZGluZyIsIm1vc3RfcmVjZW50IiwibW9zdF9yZWNlbnRfZm9yX2V4biIsIndpdGhfcmVjb3JkaW5nIiwic2F2ZWQiLCJvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmEiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImdsb2JhbGl6ZV9mbG9hdCIsImZ1bmMkMSIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludCIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludDMyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJnbG9iYWxpemVfaW50NjQiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX25hdGl2ZWludCIsImZ1bmMkNSIsIm5hdGl2ZWludF9vZl9zZXhwIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwib3B0aW9uX29mX3NleHAiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsImdsb2JhbGl6ZV9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwiZnVuYyQ2IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJmYWlsd2l0aCIsImludmFsaWRfYXJnIiwiY29tcGFyZV9hcnJheSQwIiwiZXF1YWxfYXJyYXkkMCIsImdsb2JhbGl6ZV9hcnJheSQwIiwiYXJyYXlfb2Zfc2V4cCQwIiwic2V4cF9vZl9hcnJheSQwIiwiYXJyYXlfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2Jvb2wkMCIsImVxdWFsX2Jvb2wkMCIsImdsb2JhbGl6ZV9ib29sJDAiLCJoYXNoX2ZvbGRfYm9vbCQwIiwiaGFzaF9ib29sJDAiLCJib29sX29mX3NleHAkMCIsInNleHBfb2ZfYm9vbCQwIiwiYm9vbF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfY2hhciQwIiwiZXF1YWxfY2hhciQwIiwiZ2xvYmFsaXplX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJnbG9iYWxpemVfZmxvYXQkMCIsImhhc2hfZm9sZF9mbG9hdCQwIiwiaGFzaF9mbG9hdCQwIiwiZmxvYXRfb2Zfc2V4cCQwIiwic2V4cF9vZl9mbG9hdCQwIiwiZmxvYXRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludCQwIiwiZXF1YWxfaW50JDAiLCJnbG9iYWxpemVfaW50JDAiLCJoYXNoX2ZvbGRfaW50JDAiLCJoYXNoX2ludCQwIiwiaW50X29mX3NleHAkMCIsInNleHBfb2ZfaW50JDAiLCJpbnRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDMyJDAiLCJlcXVhbF9pbnQzMiQwIiwiZ2xvYmFsaXplX2ludDMyJDAiLCJoYXNoX2ZvbGRfaW50MzIkMCIsImhhc2hfaW50MzIkMCIsImludDMyX29mX3NleHAkMCIsInNleHBfb2ZfaW50MzIkMCIsImludDMyX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQ2NCQwIiwiZXF1YWxfaW50NjQkMCIsImdsb2JhbGl6ZV9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiZ2xvYmFsaXplX2xpc3QkMCIsImhhc2hfZm9sZF9saXN0JDAiLCJsaXN0X29mX3NleHAkMCIsInNleHBfb2ZfbGlzdCQwIiwibGlzdF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbmF0aXZlaW50JDAiLCJlcXVhbF9uYXRpdmVpbnQkMCIsImdsb2JhbGl6ZV9uYXRpdmVpbnQkMCIsImhhc2hfZm9sZF9uYXRpdmVpbnQkMCIsImhhc2hfbmF0aXZlaW50JDAiLCJuYXRpdmVpbnRfb2Zfc2V4cCQwIiwic2V4cF9vZl9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfb3B0aW9uJDAiLCJlcXVhbF9vcHRpb24kMCIsImdsb2JhbGl6ZV9vcHRpb24kMCIsImhhc2hfZm9sZF9vcHRpb24kMCIsIm9wdGlvbl9vZl9zZXhwJDAiLCJzZXhwX29mX29wdGlvbiQwIiwib3B0aW9uX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9yZWYkMCIsImVxdWFsX3JlZiQwIiwiZ2xvYmFsaXplX3JlZiQwIiwicmVmX29mX3NleHAkMCIsInNleHBfb2ZfcmVmJDAiLCJyZWZfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3N0cmluZyQwIiwiZXF1YWxfc3RyaW5nJDAiLCJnbG9iYWxpemVfc3RyaW5nJDAiLCJoYXNoX2ZvbGRfc3RyaW5nJDAiLCJoYXNoX3N0cmluZyQwIiwic3RyaW5nX29mX3NleHAkMCIsInNleHBfb2Zfc3RyaW5nJDAiLCJzdHJpbmdfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2J5dGVzJDAiLCJlcXVhbF9ieXRlcyQwIiwiZ2xvYmFsaXplX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiZ2xvYmFsaXplX3VuaXQkMCIsImhhc2hfZm9sZF91bml0JDAiLCJoYXNoX3VuaXQkMCIsInVuaXRfb2Zfc2V4cCQwIiwic2V4cF9vZl91bml0JDAiLCJ1bml0X3NleHBfZ3JhbW1hciQwIiwicmFpc2VfcyQwIiwidG9fc3RyaW5nIiwibWFwIiwiZiIsIm8iLCJ2Iiwic2V0X2lucHV0X25hbWUiLCJuYW1lIiwic2V0X2lucHV0X2xleGJ1ZiIsImxleGJ1Zl9vcHQiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInByaW50X2xvbmdpZGVudCIsImxvbmdwcmVmaXgiLCJzJDAiLCJ5IiwibG9uZ2lkZW50X2xvYyIsImNvbnN0YW50IiwiaSIsIm0iLCJpJDAiLCJpJDEiLCJkZWxpbSIsImkkMiIsIm0kMCIsIm11dGFibGVfZmxhZyIsInZpcnR1YWxfZmxhZyIsInJlY19mbGFnIiwicmYiLCJub25yZWNfZmxhZyIsImRpcmVjdGlvbl9mbGFnIiwicHJpdmF0ZV9mbGFnIiwiY29uc3RhbnRfc3RyaW5nIiwidHl2YXIiLCJ0eXZhcl9sb2MiLCJzdHJpbmdfcXVvdCIsImNsYXNzX3BhcmFtc19kZWYiLCJsIiwidHlwZV9wYXJhbSIsInR5cGVfd2l0aF9sYWJlbCIsImxhYmVsIiwiY29yZV90eXBlMSIsImNvcmVfdHlwZSIsImF0dHJpYnV0ZXMiLCJjdDIiLCJjdDEiLCJjdCIsInNsIiwiY3QkMCIsImN0JDEiLCJsJDAiLCJsaSIsImwkMSIsImNvcmVfZmllbGRfdHlwZSIsImZpZWxkX3ZhciIsImwkMiIsImxpJDAiLCJsb3ciLCJjbG9zZWQiLCJsJDMiLCJmaXJzdF9pc19pbmhlcml0IiwidHlwZV92YXJpYW50X2hlbHBlciIsImN0bCIsImNzdHJzIiwibGlkIiwiYXV4IiwiZXh0ZW5zaW9uIiwicGF0dGVybiQxIiwicGF0dGVybiIsInAiLCJwMiIsInAxIiwib3JwYXRzIiwicGF0dGVybjEiLCJwYXR0ZXJuMSQwIiwicGF0dGVybl9saXN0X2hlbHBlciIsInBhdDIiLCJwYXQxIiwic2ltcGxlX3BhdHRlcm4iLCJzaW1wbGVfcGF0dGVybiQwIiwicG8iLCJ2bCIsImMyIiwiYzEiLCJsb25naWRlbnRfeF9wYXR0ZXJuIiwicCQwIiwicCQxIiwicCQyIiwid2l0aF9wYXJlbiIsImxhYmVsX2V4cCIsIm9wdCIsInJlc3QiLCJ0eHQkMCIsIm8kMCIsInN1Z2FyX2V4cHIiLCJhcmdzIiwiaWQiLCJsYWIiLCJwcmludF9pbmRleG9wIiwicGF0aF9wcmVmaXgiLCJhc3NpZ24iLCJsZWZ0IiwicHJpbnRfaW5kZXgiLCJpbmRpY2VzIiwicmVtX2FyZ3MiLCJwcmludF9wYXRoIiwic2ltcGxlX2V4cHIiLCJlJDAiLCJwYXRoIiwiZnVuYyIsIm90aGVyX2FyZ3MiLCJhJDAiLCJhc3NpZ24kMCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsImluZGV4ZXMiLCJyZXN0JDMiLCJpMyIsImkyIiwiaTEiLCJyZXN0JDQiLCJpMiQwIiwiaTEkMCIsInJlc3QkNSIsImkxJDEiLCJtdWx0aV9pbmRpY2VzIiwibiIsImtpbmQiLCJyaWdodCQwIiwibGVmdCQwIiwibCQ1IiwiZSQ3IiwiYXJnMSIsImFyZzIiLCJsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0iLCJzJDEiLCJzJDIiLCJleHByZXNzaW9uMiIsImVvJDAiLCJlbyQxIiwibCQ2IiwiZTIkMSIsImUxJDEiLCJsaSQxIiwiZSQ4IiwicyQzIiwibCQ3Iiwic3RyaW5nX3hfZXhwcmVzc2lvbiIsImUkOSIsImUkMTAiLCJlJDExIiwiZSQxMiIsImNhc2VfbGlzdCIsImUwIiwiZSQxIiwibCQ0IiwiZSQyIiwiZSQzIiwibWUiLCJtb2R1bGVfZXhwciIsImUkNCIsImNkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZSQ1IiwiZSQ2IiwiYm9keSIsImFuZHMiLCJsZXQkMCIsImJpbmRpbmdfb3AiLCJlbyIsImUyIiwiZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIiwiZTIkMCIsImUxJDAiLCJsc3QiLCJiaW5kaW5ncyIsImNzIiwiY2xhc3Nfc3RydWN0dXJlIiwiZXhwcmVzc2lvbjIkMCIsInNpbXBsZV9leHByJDAiLCJsb25naWRlbnRfeF9leHByZXNzaW9uIiwiZTMiLCJkZiIsImV4cHJlc3Npb24iLCJjdG8xIiwicGF5bG9hZCIsIml0ZW1fYXR0cmlidXRlcyIsImZsb2F0aW5nX2F0dHJpYnV0ZSIsInZhbHVlX2Rlc2NyaXB0aW9uIiwiaXRlbV9leHRlbnNpb24iLCJleGNlcHRpb25fZGVjbGFyYXRpb24iLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfdHlwZSIsInZmIiwibWYiLCJ2ZiQwIiwicGYiLCJjbGFzc19zaWduYXR1cmUiLCJjbCIsImNvIiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImt3ZCIsImNsYXNzX2ZpZWxkIiwic28iLCJjZSIsIm92ZiIsImNsYXNzX2V4cHIiLCJvdmYkMCIsIm92ZiQxIiwiYmluZCIsImJpbmRpbmciLCJjZSQwIiwiY2UkMSIsIm1vZHVsZV90eXBlJDEiLCJtb2R1bGVfdHlwZSIsIm10MiQwIiwibXQyIiwibXQxIiwibW9kdWxlX3R5cGUxIiwibXQiLCJ0ZCIsImxzJDAiLCJ0eXBlX2RlY2xhcmF0aW9uIiwibGkyIiwibXR5IiwibXR5JDAiLCJsaSQyIiwidGQkMCIsImxzJDEiLCJsaSQzIiwibHMkMiIsImxpMiQwIiwibGkkNCIsIm1vZHVsZV90eXBlMSQwIiwic2lnbmF0dXJlX2l0ZW0iLCJzaWduYXR1cmUiLCJ2ZCIsImludHJvIiwidHlwZV9kZWZfbGlzdCIsInRlIiwidHlwZV9leHRlbnNpb24iLCJlZCIsInBtZCIsImFsaWFzIiwicG1zIiwiZGVjbHMiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsIm1pZ3JhdGlvbl9lcnJvciIsIm1pc3NpbmdfZmVhdHVyZSIsIm1rX2dob3N0X2F0dHIiLCJjb25jYXRfbGlzdF9saXQiLCJhcmdfZXhwciIsImhkIiwibWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGgiLCJoaWRkZW4iLCJ2aXNpYmxlIiwibWlncmF0aW9uX2F0dHIiLCJleHByJDAiLCJtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyIsImZpZWxkcyIsImxpZGVudF9sb2MiLCJtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQiLCJzdHJpIiwibmV3X2ZpZWxkcyIsIm5ld19leHByIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJ4MCIsImNvcHlfc3RydWN0dXJlIiwieDAkMCIsImNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIiwicGRpcl9sb2MiLCJjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCIsImNvcHlfbG9jIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MiLCJ4MSIsIngwJDEiLCJjb3B5X0xvbmdpZGVudF90IiwieDAkMiIsImNvcHlfZXhwcmVzc2lvbiIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZXMiLCJjb3B5X2xvY2F0aW9uX3N0YWNrIiwiY29weV9leHByZXNzaW9uX2Rlc2MiLCJjb3B5X2NvbnN0YW50IiwieDIiLCJjb3B5X3ZhbHVlX2JpbmRpbmciLCJjb3B5X3JlY19mbGFnIiwidGNvbnN0cmFpbnQiLCJwYXJhbXMiLCJhdHRyIiwiZXhwciQzIiwiY2FzZXMiLCJjb3B5X2Nhc2UiLCJjb3B5X2NvcmVfdHlwZSIsImMxJDAiLCJleHByJDEiLCJleHByJDIiLCJwYXJhbSIsInBwYXJhbV9sb2MiLCJleHAwIiwiY29weV9wYXR0ZXJuIiwiY29weV9hcmdfbGFiZWwiLCJwZXhwX2Rlc2MkMCIsIngxJDAiLCJ4MSQxIiwieDAkMyIsIngxJDIiLCJ4MCQ0IiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDEkNCIsIngwJDciLCJ4MSQ1IiwieDAkOCIsIngxJDYiLCJ4MCQ5IiwieDIkMCIsIngxJDciLCJ4MCQxMCIsIngwJDExIiwieDIkMSIsIngxJDgiLCJ4MCQxMiIsIngxJDkiLCJ4MCQxMyIsIngxJDEwIiwieDAkMTQiLCJ4NCIsIngzIiwieDIkMiIsIngxJDExIiwieDAkMTUiLCJjb3B5X2RpcmVjdGlvbl9mbGFnIiwieDEkMTIiLCJ4MCQxNiIsIngyJDMiLCJ4MSQxMyIsIngwJDE3IiwieDEkMTQiLCJ4MCQxOCIsImNvcHlfbGFiZWwiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJ4MCQyMSIsIngyJDQiLCJ4MSQxNiIsIngwJDIyIiwiY29weV9tb2R1bGVfZXhwciIsIngxJDE3IiwieDAkMjMiLCJjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciIsIngwJDI0IiwieDAkMjUiLCJ4MSQxOCIsIngwJDI2IiwieDAkMjciLCJjb3B5X2NsYXNzX3N0cnVjdHVyZSIsIngxJDE5IiwieDAkMjgiLCJ4MCQyOSIsIngxJDIwIiwieDAkMzAiLCJjb3B5X29wZW5faW5mb3MiLCJ4MCQzMSIsImNvcHlfbGV0b3AiLCJ4MCQzMiIsImNvcHlfZXh0ZW5zaW9uIiwiY29weV9iaW5kaW5nX29wIiwicGJvcF9sb2MiLCJwYm9wX2V4cCIsInBib3BfcGF0IiwicGJvcF9vcCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9jb25zdHJhaW50IiwicHZiX2V4cHIiLCJwdmJfcGF0IiwiY29weV92YWx1ZV9jb25zdHJhaW50IiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsImNvcHlfcGF0dGVybl9kZXNjIiwiY29weV9jbG9zZWRfZmxhZyIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsImNvZXJjaW9uIiwiZ3JvdW5kIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X2xvY2F0aW9uIiwiY29weV9vYmplY3RfZmllbGQiLCJjb3B5X3Jvd19maWVsZCIsImNvcHlfcGFja2FnZV90eXBlIiwicHJmX2F0dHJpYnV0ZXMiLCJwcmZfbG9jIiwiY29weV9yb3dfZmllbGRfZGVzYyIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsImNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZSIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiY29weV9wYXlsb2FkIiwiY29weV9zaWduYXR1cmUiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MiLCJjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9leGNlcHRpb24iLCJjb3B5X21vZHVsZV9iaW5kaW5nIiwiY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X2luY2x1ZGVfaW5mb3MiLCJjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX2luZm9zIiwiY29weV9jbGFzc19leHByIiwicGNsX2F0dHJpYnV0ZXMiLCJwY2xfbG9jIiwicGNsX2Rlc2MiLCJjb3B5X2NsYXNzX2V4cHJfZGVzYyIsImNvcHlfY2xhc3NfdHlwZSIsImNvcHlfb3Blbl9kZXNjcmlwdGlvbiIsInBjc3RyX2ZpZWxkcyIsInBjc3RyX3NlbGYiLCJjb3B5X2NsYXNzX2ZpZWxkIiwicGNmX2F0dHJpYnV0ZXMiLCJwY2ZfbG9jIiwicGNmX2Rlc2MiLCJjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MiLCJjb3B5X292ZXJyaWRlX2ZsYWciLCJjb3B5X2NsYXNzX2ZpZWxkX2tpbmQiLCJjb3B5X211dGFibGVfZmxhZyIsImNvcHlfcHJpdmF0ZV9mbGFnIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwiY29weV9tb2R1bGVfZXhwcl9kZXNjIiwiY29weV9mdW5jdG9yX3BhcmFtZXRlciIsImNvcHlfbW9kdWxlX3R5cGUiLCJwbXR5X2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfZGVzYyIsImNvcHlfbW9kdWxlX3R5cGVfZGVzYyIsImNvcHlfd2l0aF9jb25zdHJhaW50IiwiY29weV9zaWduYXR1cmVfaXRlbSIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwiY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIiwiY29weV9tb2R1bGVfZGVjbGFyYXRpb24iLCJjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24iLCJjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJjb3B5X2NsYXNzX3R5cGVfZGVzYyIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwiY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MiLCJjb3B5X3ZpcnR1YWxfZmxhZyIsIngzJDAiLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsImNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwiZXh0cmFjdF9hdHRyIiwicSIsIm90aGVyX2F0dHJzIiwib3B0X2RlZmF1bHQiLCJhcmdfbGFiZWwiLCJ0YWtlX2JvZHkiLCJhcmdfbGFiZWwkMSIsIm9wdF9kZWZhdWx0JDEiLCJwYXQkMSIsInBwYXJhbV9kZXNjIiwiYWNjJDEiLCJhcmdfbGlzdCIsImMyJDAiLCJ0eXBlX2NvbnN0cmFpbnQiLCJvcHRfZGVmYXVsdCQwIiwiYXJnX2xhYmVsJDAiLCJ4MCQzMyIsIngyJDUiLCJ4MSQyMSIsIngwJDM0IiwibWVyZ2VfbG9jIiwiZ2hvc3RfbG9jIiwiZ2hvc3RfY29uc3RyYWludCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiQwIiwicHR5cF9sb2MkMCIsInR5cCQzIiwicHZiX3BhdCQzIiwiZ3JvdW5kJDAiLCJwZXhwX2xvYyQwIiwicHZiX2V4cHIkMyIsInB2Yl9leHByJDEiLCJwdmJfcGF0JDEiLCJ0eXAkMiIsInR5cCQxIiwidHlwX3BvbHkiLCJwdmJfcGF0JDIiLCJwdmJfZXhwciQyIiwidmFyJDAiLCJsb2MkMCIsImVtcHR5X3N0cnVjdCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJjb3B5X3Bvc2l0aW9uIiwicG9zX2NudW0iLCJwb3NfYm9sIiwicG9zX2xudW0iLCJwb3NfZm5hbWUiLCJyZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIiwidHlfZXh0IiwicnQkMCIsInZhbHVlX3BhdHRlcm4iLCJ2YWx1ZV9leHAiLCJpbm5lcl9lIiwiZXh0ZXJuX2N0IiwiZXh0ZXJuX2N0JDAiLCJwdF90eXZhcnMkMCIsIndpdGhfY29uc3RyYWludCIsInR5X3ZhcnMiLCJwdmJfY29uc3RyYWludCQwIiwiY29lcmNlIiwiZ3IiLCJwdmJfY29uc3RyYWludCQxIiwiaXNfdW5pdCIsImNvcHlfZXhwciIsImNvcHlfY2FzZXMiLCJjb3B5X3BhdCIsImNvcHlfdHlwIiwibWFwX29wdGlvbiIsImNvcHlfb3B0aW9uIiwiY29weV9ib29sIiwiY29weV9sb25naWRlbnQiLCJ4MF9sb2MiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwid3JhcCIsImN0eSIsImxvYyQxIiwibm9sb2MiLCJmcm9tX2xvYyIsInBvcyIsImluamVjdF9wcmVkZWZfb3B0aW9uIiwiZCIsImlkZW50IiwidHlwZV9kZWNsYXJhdGlvbnMiLCJyZWNmbGFnIiwidHlwZXMiLCJleHRyYWN0X3ByZWRlZl9vcHRpb24iLCJpc19ub25yZWMiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImkkMCIsImludDMyIiwic3VmZml4JDAiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJjaGFyJDAiLCJjIiwic3RyaW5nIiwicXVvdGF0aW9uX2RlbGltaXRlciIsInMiLCJsb2MiLCJtayIsIm5hbWUiLCJwYXlsb2FkIiwibWskMCIsImQiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwidHJ5JDAiLCJ0dXBsZSQxIiwiY29uc3RydWN0JDAiLCJ2YXJpYW50JDEiLCJyZWNvcmQkMCIsInNldGZpZWxkIiwiYXJyYXkkMCIsImlmdGhlbmVsc2UiLCJzZXF1ZW5jZSIsIndoaWxlJDAiLCJmb3IkMCIsImNvbnN0cmFpbnQkMCIsImNvZXJjZSIsInNlbmQiLCJuZXckMCIsInNldGluc3R2YXIiLCJvdmVycmlkZSIsImxldG1vZHVsZSIsImxldGV4Y2VwdGlvbiIsImFzc2VydCIsImxhenkkMCIsInBvbHkkMCIsIm9iamVjdCQwIiwibmV3dHlwZSIsInBhY2siLCJvcGVuJDAiLCJsZXRvcCIsImFuZHMiLCJib2R5IiwiZXh0ZW5zaW9uJDEiLCJ1bnJlYWNoYWJsZSIsImNhc2UkMCIsImxocyIsImd1YXJkIiwicmhzIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwibWskMyIsImF0dHIkMiIsImlkZW50JDAiLCJhbGlhcyQxIiwic2lnbmF0dXJlIiwiZnVuY3RvciIsIndpdGgkMCIsInR5cGVvZiQwIiwiZXh0ZW5zaW9uJDIiLCJtayQ0IiwiYXR0ciQzIiwiaWRlbnQkMSIsInN0cnVjdHVyZSIsImZ1bmN0b3IkMCIsImFwcGx5JDAiLCJtMSIsIm0yIiwiY29uc3RyYWludCQxIiwibSIsIm10eSIsInVucGFjayQwIiwiZXh0ZW5zaW9uJDMiLCJtayQ1IiwidmFsdWUiLCJ0eXBlJDAiLCJyZWNfZmxhZyIsInR5cGVfc3Vic3QiLCJ0eXBlX2V4dGVuc2lvbiIsImV4Y2VwdGlvbiQwIiwibW9kdWxlIiwibW9kX3N1YnN0IiwicmVjX21vZHVsZSIsIm1vZHR5cGUiLCJvcGVuJDEiLCJpbmNsdWRlIiwiY2xhc3MkMSIsImNsYXNzX3R5cGUiLCJleHRlbnNpb24kNCIsImF0dHJpYnV0ZSIsIm1rJDYiLCJldmFsJDAiLCJ2YWx1ZSQwIiwicHJpbWl0aXZlIiwidHlwZSQxIiwidHlwZV9leHRlbnNpb24kMCIsImV4Y2VwdGlvbiQxIiwibW9kdWxlJDAiLCJyZWNfbW9kdWxlJDAiLCJtb2R0eXBlJDAiLCJvcGVuJDIiLCJjbGFzcyQyIiwiY2xhc3NfdHlwZSQwIiwiaW5jbHVkZSQwIiwiZXh0ZW5zaW9uJDUiLCJhdHRyaWJ1dGUkMCIsIm1rJDciLCJhdHRyJDQiLCJjb25zdHIkMCIsInN0cnVjdHVyZSQwIiwiZnVuJDAiLCJhcHBseSQxIiwibGV0JDEiLCJjb25zdHJhaW50JDIiLCJleHRlbnNpb24kNiIsIm9wZW4kMyIsIm1rJDgiLCJhdHRyJDUiLCJjb25zdHIkMSIsInNpZ25hdHVyZSQwIiwiYXJyb3ckMCIsImV4dGVuc2lvbiQ3Iiwib3BlbiQ0IiwibWskOSIsImluaGVyaXQiLCJ2YWwiLCJtZXRob2QiLCJjb25zdHJhaW50JDMiLCJleHRlbnNpb24kOCIsImF0dHJpYnV0ZSQxIiwiYXR0ciQ2IiwibWskMTAiLCJpbmhlcml0JDAiLCJ2YWwkMCIsIm1ldGhvZCQwIiwiY29uc3RyYWludCQ0IiwiaW5pdGlhbGl6ZXIiLCJleHRlbnNpb24kOSIsImF0dHJpYnV0ZSQyIiwidmlydHVhbCIsImN0IiwiY29uY3JldGUiLCJhdHRyJDciLCJtayQxMSIsInByaW0iLCJtayQxMiIsIm1rJDEzIiwic3luIiwibWskMTQiLCJtayQxNSIsImV4cHIiLCJtayQxNiIsIm1rJDE3IiwibWV4cHIiLCJtayQxOCIsIm1rJDE5IiwidmlydCIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsImtpbmQiLCJwcml2IiwiY29uc3RydWN0b3IiLCJyZXMiLCJ2YXJzIiwiYXJncyIsImZpZWxkJDAiLCJtdXQiLCJtayQyMSIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJta19leGNlcHRpb24iLCJjb25zdHJ1Y3RvciQwIiwiZGVjbCIsInJlYmluZCIsImxpZCIsIm1rJDIyIiwic2VsZiIsImZpZWxkcyIsIm1rJDIzIiwibWskMjQiLCJ0YWciLCJjb25zdCQwIiwidHlzIiwiaW5oZXJpdCQxIiwidHkiLCJtayQyNSIsInRhZyQwIiwiaW5oZXJpdCQyIiwic3RyaW5nX3ZlcnNpb24iLCJzdHJpbmdfdmVyc2lvbiQwIiwic3RyaW5nX3ZlcnNpb24kMSIsInN0cmluZ192ZXJzaW9uJDIiLCJzdHJpbmdfdmVyc2lvbiQzIiwic3RyaW5nX3ZlcnNpb24kNCIsInN0cmluZ192ZXJzaW9uJDUiLCJzdHJpbmdfdmVyc2lvbiQ2Iiwic3RyaW5nX3ZlcnNpb24kNyIsInN0cmluZ192ZXJzaW9uJDgiLCJzdHJpbmdfdmVyc2lvbiQ5Iiwic3RyaW5nX3ZlcnNpb24kMTAiLCJzdHJpbmdfdmVyc2lvbiQxMSIsInN0cmluZ192ZXJzaW9uJDEyIiwic3RyaW5nX3ZlcnNpb24kMTMiLCJzdHJpbmdfdmVyc2lvbiQxNCIsIm1pZ3JhdGlvbl9pbmZvIiwiaWQiLCJtaWdyYXRpb25faWRlbnRpdHkiLCJjb21wb3NlIiwiZyIsIm1pZ3JhdGlvbl9mdW5jdGlvbnMiLCJpc191bmRlZmluZWQiLCJpbW1lZGlhdGVfbWlncmF0aW9uIiwiQSIsImRpcmVjdGlvbiIsInZlcnNpb24iLCJ0byIsImZ1bnMiLCJCIiwibSQxIiwiVG8iLCJhYiIsInRvMiIsImJjIiwibSQwIiwiY29weV9zdHJ1Y3R1cmVfaXRlbSIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJjb3B5X21vZHVsZV90eXBlIiwiY29weV9tb2R1bGVfZXhwciIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwiY29weV9jbGFzc190eXBlIiwiY29weV9jbGFzc19maWVsZCIsImNvcHlfY2xhc3NfZXhwciIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2FzZSIsImNvcHlfcGF0dGVybiIsImNvcHlfZXhwcmVzc2lvbiIsImNvcHlfY29yZV90eXBlIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlIiwibWlncmF0aW9uX2luZm8kMCIsInZlcnNpb24kMCIsIm1pZ3JhdGlvbl9pbmZvJDEiLCJ2ZXJzaW9uJDEiLCJtaWdyYXRpb25faW5mbyQyIiwidmVyc2lvbiQyIiwibWlncmF0aW9uX2luZm8kMyIsInZlcnNpb24kMyIsIm1pZ3JhdGlvbl9pbmZvJDQiLCJ2ZXJzaW9uJDQiLCJtaWdyYXRpb25faW5mbyQ1IiwidmVyc2lvbiQ1IiwibWlncmF0aW9uX2luZm8kNiIsInZlcnNpb24kNiIsIm1pZ3JhdGlvbl9pbmZvJDciLCJ2ZXJzaW9uJDciLCJtaWdyYXRpb25faW5mbyQ4IiwidmVyc2lvbiQ4IiwibWlncmF0aW9uX2luZm8kOSIsInZlcnNpb24kOSIsIm1pZ3JhdGlvbl9pbmZvJDEwIiwidmVyc2lvbiQxMCIsIm1pZ3JhdGlvbl9pbmZvJDExIiwidmVyc2lvbiQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwidmVyc2lvbiQxMiIsIm1pZ3JhdGlvbl9pbmZvJDEzIiwidmVyc2lvbiQxMyIsIm1pZ3JhdGlvbl9pbmZvJDE0IiwidmVyc2lvbiQxNCIsImFsbF92ZXJzaW9ucyIsImZyb21fbWFnaWMiLCJtYWdpYyIsImFsbF92ZXJzaW9uc190b3BfZG93biIsInRhaWwiLCJWZXJzaW9uIiwib2Zfb2NhbWwiLCJub2RlIiwieSIsInRvX29jYW1sIiwib2Zfb2NhbWxfbWFwcGVyIiwiaXRlbSIsImN0eHQiLCJ0b19vY2FtbF9tYXBwZXIiLCJpbXBsZW1lbnRhdGlvbiIsImxleGJ1ZiIsImludGVyZmFjZSQwIiwidG9wbGV2ZWxfcGhyYXNlIiwidXNlX2ZpbGUiLCJleHByZXNzaW9uIiwicGF0dGVybiIsImRlZmF1bHRfcHJpbnRfd2FybmluZyIsImFib3V0X2l0ZV9icmFuY2hfcmVmIiwiY2FyZV9hYm91dF9pdGVfYnJhbmNoIiwiYWJvdXRfaXRlX2JyYW5jaCIsInNlbGZfMSIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2ZuYW1lJDAiLCJwb3NfbG51bSQwIiwicG9zX2JvbCQwIiwicG9zX2NudW0kMCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJsb2Nfc3RhcnQkMCIsImxvY19lbmQkMCIsImxvY19naG9zdCQwIiwidHh0IiwidHh0JDAiLCJsb2MkMCIsImEkMCIsImEkMSIsImEkMiIsImIkMCIsImIkMSIsImEkMyIsImEkNCIsImIkMiIsImMkMCIsImIkMyIsImEkNSIsImEkNiIsImIkNCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfbG9jIiwicHR5cF9kZXNjIiwicHR5cF9kZXNjJDAiLCJwdHlwX2xvYyQwIiwicHR5cF9sb2Nfc3RhY2skMCIsInB0eXBfYXR0cmlidXRlcyQwIiwiYSQ3IiwiYSQ4IiwiYiQ1IiwiYSQ5IiwiYSQxMCIsImIkNiIsImIkNyIsImEkMTEiLCJhJDEyIiwiYiQ4IiwiYyQxIiwiYiQ5IiwiYSQxMyIsImEkMTQiLCJiJDEwIiwiYyQyIiwiYiQxMSIsImEkMTUiLCJhJDE2IiwiYiQxMiIsImEkMTciLCJhJDE4IiwiYSQxOSIsImEkMjAiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJwcmZfZGVzYyQwIiwicHJmX2xvYyQwIiwicHJmX2F0dHJpYnV0ZXMkMCIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsInBvZl9kZXNjJDAiLCJwb2ZfbG9jJDAiLCJwb2ZfYXR0cmlidXRlcyQwIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsInBwYXRfZGVzYyQwIiwicHBhdF9sb2MkMCIsInBwYXRfbG9jX3N0YWNrJDAiLCJwcGF0X2F0dHJpYnV0ZXMkMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImEkMjciLCJhJDI4IiwiYSQyOSIsImEkMzAiLCJiJDEzIiwiYSQzMSIsImEkMzIiLCJiJDE0IiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsImQkMCIsImIkMTUiLCJiJDE2IiwiYyQzIiwiYiQxNyIsImIkMTgiLCJjJDQiLCJjJDUiLCJiJDE5IiwiYiQyMCIsImMkNiIsImIkMjEiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImQkMSIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJkJDIiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImFuZHMkMCIsImJvZHkkMCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwYm9wX29wJDAiLCJwYm9wX3BhdCQwIiwicGJvcF9leHAkMCIsInBib3BfbG9jJDAiLCJwdmFsX2xvYyIsInB2YWxfYXR0cmlidXRlcyIsInB2YWxfcHJpbSIsInB2YWxfdHlwZSIsInB2YWxfbmFtZSIsInB2YWxfbmFtZSQwIiwicHZhbF90eXBlJDAiLCJwdmFsX3ByaW0kMCIsInB2YWxfYXR0cmlidXRlcyQwIiwicHZhbF9sb2MkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMiLCJwdHlleHRfbG9jIiwicHR5ZXh0X3ByaXZhdGUiLCJwdHlleHRfY29uc3RydWN0b3JzIiwicHR5ZXh0X3BhcmFtcyIsInB0eWV4dF9wYXRoIiwicHR5ZXh0X3BhdGgkMCIsInB0eWV4dF9wYXJhbXMkMCIsInB0eWV4dF9jb25zdHJ1Y3RvcnMkMCIsInB0eWV4dF9wcml2YXRlJDAiLCJwdHlleHRfbG9jJDAiLCJwdHlleHRfYXR0cmlidXRlcyQwIiwicGV4dF9hdHRyaWJ1dGVzIiwicGV4dF9sb2MiLCJwZXh0X2tpbmQiLCJwZXh0X25hbWUiLCJwZXh0X25hbWUkMCIsInBleHRfa2luZCQwIiwicGV4dF9sb2MkMCIsInBleHRfYXR0cmlidXRlcyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMiLCJwdHlleG5fbG9jIiwicHR5ZXhuX2NvbnN0cnVjdG9yIiwicHR5ZXhuX2NvbnN0cnVjdG9yJDAiLCJwdHlleG5fbG9jJDAiLCJwdHlleG5fYXR0cmlidXRlcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJwY3NpZ19zZWxmJDAiLCJwY3NpZ19maWVsZHMkMCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwicGN0Zl9kZXNjJDAiLCJwY3RmX2xvYyQwIiwicGN0Zl9hdHRyaWJ1dGVzJDAiLCJwY2lfYXR0cmlidXRlcyIsInBjaV9sb2MiLCJwY2lfZXhwciIsInBjaV9uYW1lIiwicGNpX3BhcmFtcyIsInBjaV92aXJ0IiwicGNpX3ZpcnQkMCIsInBjaV9wYXJhbXMkMCIsInBjaV9uYW1lJDAiLCJwY2lfZXhwciQwIiwicGNpX2xvYyQwIiwicGNpX2F0dHJpYnV0ZXMkMCIsInBjbF9hdHRyaWJ1dGVzIiwicGNsX2xvYyIsInBjbF9kZXNjIiwicGNsX2Rlc2MkMCIsInBjbF9sb2MkMCIsInBjbF9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsInBjZl9kZXNjJDAiLCJwY2ZfbG9jJDAiLCJwY2ZfYXR0cmlidXRlcyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG1kX2xvYyIsInBtZF9hdHRyaWJ1dGVzIiwicG1kX3R5cGUiLCJwbWRfbmFtZSIsInBtZF9uYW1lJDAiLCJwbWRfdHlwZSQwIiwicG1kX2F0dHJpYnV0ZXMkMCIsInBtZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMiLCJwb3Blbl9sb2MiLCJwb3Blbl9vdmVycmlkZSIsInBvcGVuX2V4cHIiLCJwb3Blbl9leHByJDAiLCJwb3Blbl9vdmVycmlkZSQwIiwicG9wZW5fbG9jJDAiLCJwb3Blbl9hdHRyaWJ1dGVzJDAiLCJwaW5jbF9hdHRyaWJ1dGVzIiwicGluY2xfbG9jIiwicGluY2xfbW9kIiwicGluY2xfbW9kJDAiLCJwaW5jbF9sb2MkMCIsInBpbmNsX2F0dHJpYnV0ZXMkMCIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwicG1vZF9kZXNjJDAiLCJwbW9kX2xvYyQwIiwicG1vZF9hdHRyaWJ1dGVzJDAiLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsInBzdHJfZGVzYyQwIiwicHN0cl9sb2MkMCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtYl9uYW1lJDAiLCJwbWJfZXhwciQwIiwicG1iX2F0dHJpYnV0ZXMkMCIsInBtYl9sb2MkMCIsInBkaXJfbG9jIiwicGRpcl9hcmciLCJwZGlyX25hbWUiLCJwZGlyX25hbWUkMCIsInBkaXJfYXJnJDAiLCJwZGlyX2xvYyQwIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwic2VsZl8yIiwic2VsZl8zIiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImFjYyQ1IiwiYWNjJDYiLCJhY2MkNyIsImFjYyQ4IiwiYWNjJDkiLCJhY2MkMTAiLCJhY2MkMTEiLCJhY2MkMTIiLCJhY2MkMTMiLCJhY2MkMTQiLCJhY2MkMTUiLCJhY2MkMTYiLCJhY2MkMTciLCJhY2MkMTgiLCJhY2MkMTkiLCJhY2MkMjAiLCJhY2MkMjEiLCJhY2MkMjIiLCJhY2MkMjMiLCJhY2MkMjQiLCJhY2MkMjUiLCJhY2MkMjYiLCJhY2MkMjciLCJhY2MkMjgiLCJhY2MkMjkiLCJhY2MkMzAiLCJhY2MkMzEiLCJhY2MkMzIiLCJhY2MkMzMiLCJhY2MkMzQiLCJhY2MkMzUiLCJhY2MkMzYiLCJhY2MkMzciLCJhY2MkMzgiLCJhY2MkMzkiLCJhY2MkNDAiLCJhY2MkNDEiLCJhY2MkNDIiLCJhY2MkNDMiLCJhY2MkNDQiLCJhY2MkNDUiLCJhY2MkNDYiLCJhY2MkNDciLCJhY2MkNDgiLCJhY2MkNDkiLCJhY2MkNTAiLCJhY2MkNTEiLCJhY2MkNTIiLCJhY2MkNTMiLCJhY2MkNTQiLCJhY2MkNTUiLCJzZWxmXzQiLCJhY2MkNTYiLCJhY2MkNTciLCJhY2MkNTgiLCJhY2MkNTkiLCJhY2MkNjAiLCJhY2MkNjEiLCJhY2MkNjIiLCJhY2MkNjMiLCJhY2MkNjQiLCJhY2MkNjUiLCJhY2MkNjYiLCJhY2MkNjciLCJhY2MkNjgiLCJzZWxmXzUiLCJjdHgiLCJzZWxmXzYiLCJzZWxmXzciLCJ0b19leHRlbnNpb24iLCJlcnJvciIsInN1Yl9tc2dzIiwibWFpbl9tc2ciLCJta19zdHJpbmdfY29uc3RhbnQiLCJleHRlbnNpb25fb2Zfc3ViX21zZyIsInN1Yl9tc2ciLCJyZWdpc3Rlcl9lcnJvcl9vZl9leG4iLCJtZXNzYWdlIiwic2V0X21lc3NhZ2UiLCJtYWtlIiwic3ViIiwic3ViJDAiLCJ1cGRhdGVfbG9jIiwiZ2V0X2xvY2F0aW9uIiwib2ZfZXhuIiwicmFpc2UiLCJwcmludCIsImRpZmZfY29tbWFuZCIsImZpbGUxIiwiZmlsZTIiLCJleHRyYV9wYXRkaWZmX2FyZ3MiLCJ1c2VfY29sb3IiLCJleGVjIiwiY21kIiwiY21kJDAiLCJuIiwicyIsImFyZ3MiLCJlcnJfY29kZSIsImFsbCIsInJlZ2lzdGVyIiwibmFtZSIsImRlcml2ZXIiLCJsb29rdXAiLCJkcnYiLCJkZXJpdmVycyIsImFjYyIsIngiLCJzZWxmXzEiLCJmIiwieCQwIiwic2VsZl8yIiwiYWNjIiwic2VsZl8zIiwibG9vcCIsImwiLCJsJDAiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwiYSIsInIiLCJpIiwic2VsZl80IiwieCQxIiwibGVuIiwiYSQwIiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwicmVzIiwicmVzX2hlYWQiLCJyZXNfdGFpbCIsImZsYWdzJDAiLCJmbGFncyIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJtaW4iLCJtYXgiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsIm1pbiQwIiwibWF4JDAiLCJ0b19zdHJpbmciLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwibWluJDEiLCJtYXgkMSIsInN1Yl9zdHJpbmciLCJ0IiwicG9zIiwibGVuIiwiYmxpdF9zdHJpbmciLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNvbXBhcmUkMyIsImVxdWFsJDMiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJtaW4kMiIsIm1heCQyIiwicHJvdGVjdHgiLCJ4IiwiZiIsImZpbmFsbHkkMCIsInkiLCJleG4kMCIsImV4biIsInRvX3N0cmluZyQxIiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsInN5bWJvbCQyMyIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsIm1pbiQzIiwibWF4JDMiLCJpZCIsInNldCIsImtleSIsImRhdGEiLCJhZGQiLCJhZGRfZXhuIiwiZmluZF9vcHQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsImRhdGEkMCIsImFkZF9hbGlzdCIsImFsaXN0IiwiYWxpc3QkMCIsImFsaXN0JDEiLCJvZl9hbGlzdCIsInNpemUiLCJzaXplJDAiLCJzaXplJDEiLCJlcnJvciIsIm9mX2FsaXN0X2V4biIsImNyZWF0ZSQwIiwiZmlsZSIsImJpbmFyeSIsIndpdGhfZmlsZSIsImZpbGVuYW1lIiwiaW5wdXRfYWxsIiwiYnVmIiwiY2hhciQwIiwicmVhZF9hbGwiLCJtYXhfaW50IiwidG9fc3RyaW5nJDIiLCJjb21wYXJlJDUiLCJlcXVhbCQ1Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwic3ltYm9sJDMxIiwic3ltYm9sJDMyIiwic3ltYm9sJDMzIiwic3ltYm9sJDM0IiwibWluJDQiLCJtYXgkNCIsInJldl9tYXBpIiwibGlzdCIsImxpc3QkMCIsImkiLCJhY2MiLCJ0YWlsIiwiaGVhZCIsImFjYyQwIiwiaSQwIiwiZm9sZF9yaWdodDIiLCJsaXN0MSIsImxpc3QyIiwiaW5pdCIsIm1hcCQwIiwibWFwaSQwIiwiZm9sZF9yaWdodCQwIiwiYXBwZW5kIiwiY29uY2F0JDAiLCJyZXZfY29tYmluZSIsImNvbWJpbmUiLCJzcGxpdCIsInlzIiwieHMiLCJtYXAyIiwicGFydGl0aW9uX21hcCIsInAiLCJsIiwibGVmdCIsInJpZ2h0IiwibCQwIiwidiIsInYkMCIsImluaXQkMCIsInBvcyQwIiwiaXNfZW1wdHkiLCJyZXZfZmlsdGVyX29wdCIsIm9wdGlvbiIsImZpbHRlcl9vcHQiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwic29tZSIsImZpbmRfbWFwX2V4biIsImxhc3QiLCJyZXN0Iiwic3BsaXRfd2hpbGUiLCJmaW5kX2FfZHVwIiwic2V0JDEiLCJzZXQkMCIsImFzc29jX29wdCIsIml0ZXIkMiIsImlzX3NvbWUiLCJpdGVyJDMiLCJtYXAkMSIsInZhbHVlIiwidG9fbGlzdCIsImJpbmQiLCJhIiwiZSIsIm1hcCQyIiwibWFwX2Vycm9yIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiaGFuZGxlX2Vycm9yIiwic3ltYm9sJDM1IiwicTIiLCJ0MiIsInExIiwidDEiLCJoZCQwIiwidG9fbGlzdCQwIiwicSIsIm1hcCQzIiwiY3JlYXRlJDEiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsIndpdGhfZmlsZSQwIiwid3JpdGVfYWxsIiwiaXNfZW1wdHkkMCIsInByZWZpeCIsInN1ZmZpeCIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJpc19wcmVmaXgiLCJpc19zdWZmaXgiLCJzdWZmaXhfb2Zmc2V0IiwicG9zJDEiLCJleGlzdHMkMSIsImZvcl9hbGwkMSIsImluZGV4X29wdCQwIiwicmluZGV4X29wdCQwIiwiaW5kZXhfZnJvbV9vcHQkMCIsInJpbmRleF9mcm9tX29wdCQwIiwibHNwbGl0MiIsIm9uIiwiY2FwaXRhbGl6ZV9hc2NpaSQwIiwibG93ZXJjYXNlX2FzY2lpJDEiLCJ1bmNhcGl0YWxpemVfYXNjaWkkMCIsInNwbGl0X29uX2NoYXIkMCIsInNlcCIsImNvbXBhcmUkNyIsImVxdWFsJDciLCJzeW1ib2wkMzYiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJtaW4kNSIsIm1heCQ1IiwiZmluZF9vcHQkMSIsInN5bWJvbCQ0MiIsIm91dHB1dCIsIm9jIiwiYnl0ZXMiLCJvdXRwdXRfc3Vic3RyaW5nIiwic3RyaW5nIiwiaW5fZmlsZSIsIm5hbWUiLCJsb2MiLCJzZXRfZmlsZW5hbWUiLCJmbiIsImxvY19zdGFydCIsImxvY19lbmQiLCJub25lIiwiaW5pdCIsImxleGJ1ZiIsImZuYW1lIiwicmFpc2VfZXJyb3JmIiwiZm10IiwicmVwb3J0X2V4Y2VwdGlvbiIsIm9mX2xleGJ1ZiIsInByaW50IiwicHBmIiwidCIsImNvbXBhcmVfcG9zIiwicDEiLCJwMiIsImNvbHVtbiIsInAiLCJuIiwibWluX3BvcyIsIm1heF9wb3MiLCJjb21wYXJlIiwibG9jMSIsImxvYzIiLCJjcmVhdGVmIiwic3RyIiwiZXJyb3JfZXh0ZW5zaW9uZiIsImUiLCJmYWlsIiwiZXhwZWN0ZWQiLCJhdHRyaWJ1dGUiLCJwYXlsb2FkIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJwY2xfY29uc3RyIiwieDAiLCJ4MSIsInBjbF9zdHJ1Y3R1cmUiLCJwY2xfZnVuIiwieDIiLCJ4MyIsInBjbF9hcHBseSIsInBjbF9sZXQiLCJwY2xfY29uc3RyYWludCIsInBjbF9leHRlbnNpb24iLCJwY2xfb3BlbiIsInBjZl9pbmhlcml0IiwicGNmX3ZhbCIsInBjZl9tZXRob2QiLCJwY2ZfY29uc3RyYWludCIsInBjZl9pbml0aWFsaXplciIsInBjZl9hdHRyaWJ1dGUiLCJwY2ZfZXh0ZW5zaW9uIiwiY2xhc3NfaW5mb3MiLCJ2aXJ0IiwicGFyYW1zIiwiZXhwciIsImNsYXNzX3NpZ25hdHVyZSIsInNlbGYiLCJmaWVsZHMiLCJjbGFzc19zdHJ1Y3R1cmUiLCJwY3R5X2NvbnN0ciIsInBjdHlfc2lnbmF0dXJlIiwicGN0eV9hcnJvdyIsInBjdHlfZXh0ZW5zaW9uIiwicGN0eV9vcGVuIiwicGN0Zl9pbmhlcml0IiwicGN0Zl92YWwiLCJwY3RmX21ldGhvZCIsInBjdGZfY29uc3RyYWludCIsInBjdGZfYXR0cmlidXRlIiwicGN0Zl9leHRlbnNpb24iLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInZhcnMiLCJhcmdzIiwicmVzIiwicHR5cF9hbnkiLCJwdHlwX3ZhciIsInB0eXBfYXJyb3ciLCJwdHlwX3R1cGxlIiwicHR5cF9jb25zdHIiLCJwdHlwX29iamVjdCIsInB0eXBfY2xhc3MiLCJwdHlwX2FsaWFzIiwicHR5cF92YXJpYW50IiwicHR5cF9wb2x5IiwicHR5cF9wYWNrYWdlIiwicHR5cF9leHRlbnNpb24iLCJwZGlyX3N0cmluZyIsInBkaXJfaW50IiwicGRpcl9pZGVudCIsInBkaXJfYm9vbCIsInBleHBfaWRlbnQiLCJwZXhwX2NvbnN0YW50IiwicGV4cF9sZXQiLCJwZXhwX2Z1bmN0aW9uIiwicGV4cF9mdW4iLCJwZXhwX2FwcGx5IiwicGV4cF9tYXRjaCIsInBleHBfdHJ5IiwicGV4cF90dXBsZSIsInBleHBfY29uc3RydWN0IiwicGV4cF92YXJpYW50IiwicGV4cF9yZWNvcmQiLCJwZXhwX2ZpZWxkIiwicGV4cF9zZXRmaWVsZCIsInBleHBfYXJyYXkiLCJwZXhwX2lmdGhlbmVsc2UiLCJwZXhwX3NlcXVlbmNlIiwicGV4cF93aGlsZSIsInBleHBfZm9yIiwieDQiLCJwZXhwX2NvbnN0cmFpbnQiLCJwZXhwX2NvZXJjZSIsInBleHBfc2VuZCIsInBleHBfbmV3IiwicGV4cF9zZXRpbnN0dmFyIiwicGV4cF9vdmVycmlkZSIsInBleHBfbGV0bW9kdWxlIiwicGV4cF9sZXRleGNlcHRpb24iLCJwZXhwX2Fzc2VydCIsInBleHBfbGF6eSIsInBleHBfcG9seSIsInBleHBfb2JqZWN0IiwicGV4cF9uZXd0eXBlIiwicGV4cF9wYWNrIiwicGV4cF9vcGVuIiwicGV4cF9sZXRvcCIsInBleHBfZXh0ZW5zaW9uIiwicGV4cF91bnJlYWNoYWJsZSIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImtpbmQiLCJpbmNsdWRlX2luZm9zIiwibW9kIiwibGFiZWxfZGVjbGFyYXRpb24iLCJtdXRhYmxlIiwidHlwZSIsImxldG9wIiwibGV0JDAiLCJhbmRzIiwiYm9keSIsImxvY2F0aW9uIiwic3RhcnQiLCJlbmQiLCJnaG9zdCIsIm1vZHVsZV9iaW5kaW5nIiwibW9kdWxlX2RlY2xhcmF0aW9uIiwicG1vZF9pZGVudCIsInBtb2Rfc3RydWN0dXJlIiwicG1vZF9mdW5jdG9yIiwicG1vZF9hcHBseSIsInBtb2RfY29uc3RyYWludCIsInBtb2RfdW5wYWNrIiwicG1vZF9leHRlbnNpb24iLCJtb2R1bGVfc3Vic3RpdHV0aW9uIiwibWFuaWZlc3QiLCJwbXR5X2lkZW50IiwicG10eV9zaWduYXR1cmUiLCJwbXR5X2Z1bmN0b3IiLCJwbXR5X3dpdGgiLCJwbXR5X3R5cGVvZiIsInBtdHlfZXh0ZW5zaW9uIiwicG10eV9hbGlhcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwib3RhZyIsIm9pbmhlcml0Iiwib3Blbl9pbmZvcyIsIm92ZXJyaWRlIiwicHBhdF9hbnkiLCJwcGF0X3ZhciIsInBwYXRfYWxpYXMiLCJwcGF0X2NvbnN0YW50IiwicHBhdF9pbnRlcnZhbCIsInBwYXRfdHVwbGUiLCJwcGF0X2NvbnN0cnVjdCIsInBwYXRfdmFyaWFudCIsInBwYXRfcmVjb3JkIiwicHBhdF9hcnJheSIsInBwYXRfb3IiLCJwcGF0X2NvbnN0cmFpbnQiLCJwcGF0X3R5cGUiLCJwcGF0X2xhenkiLCJwcGF0X3VucGFjayIsInBwYXRfZXhjZXB0aW9uIiwicHBhdF9leHRlbnNpb24iLCJwcGF0X29wZW4iLCJwb3NpdGlvbiIsImxudW0iLCJib2wiLCJjbnVtIiwicnRhZyIsInJpbmhlcml0IiwicHNpZ192YWx1ZSIsInBzaWdfdHlwZSIsInBzaWdfdHlwZXN1YnN0IiwicHNpZ190eXBleHQiLCJwc2lnX2V4Y2VwdGlvbiIsInBzaWdfbW9kdWxlIiwicHNpZ19tb2RzdWJzdCIsInBzaWdfcmVjbW9kdWxlIiwicHNpZ19tb2R0eXBlIiwicHNpZ19tb2R0eXBlc3Vic3QiLCJwc2lnX29wZW4iLCJwc2lnX2luY2x1ZGUiLCJwc2lnX2NsYXNzIiwicHNpZ19jbGFzc190eXBlIiwicHNpZ19hdHRyaWJ1dGUiLCJwc2lnX2V4dGVuc2lvbiIsInBzdHJfZXZhbCIsInBzdHJfdmFsdWUiLCJwc3RyX3ByaW1pdGl2ZSIsInBzdHJfdHlwZSIsInBzdHJfdHlwZXh0IiwicHN0cl9leGNlcHRpb24iLCJwc3RyX21vZHVsZSIsInBzdHJfcmVjbW9kdWxlIiwicHN0cl9tb2R0eXBlIiwicHN0cl9vcGVuIiwicHN0cl9jbGFzcyIsInBzdHJfY2xhc3NfdHlwZSIsInBzdHJfaW5jbHVkZSIsInBzdHJfYXR0cmlidXRlIiwicHN0cl9leHRlbnNpb24iLCJ0b3BsZXZlbF9kaXJlY3RpdmUiLCJhcmciLCJ0eXBlX2RlY2xhcmF0aW9uIiwiY3N0cnMiLCJwcml2YXRlJDAiLCJ0eXBlX2V4Y2VwdGlvbiIsImNvbnN0cnVjdG9yIiwidHlwZV9leHRlbnNpb24iLCJwYXRoIiwiY29uc3RydWN0b3JzIiwidmFsdWVfYmluZGluZyIsInZhbHVlX2Rlc2NyaXB0aW9uIiwicHJpbSIsInR4dCIsIm1ha2UiLCJtYXAiLCJmIiwiaXNfbm9ybWFsX2lkZW50X2NoYXIiLCJzaG9ydF9uYW1lIiwic3RyaW5nIiwicyIsImIiLCJhIiwiYiQwIiwiYSQwIiwic2V4cF9vZl90IiwiZmxhdHRlbl9leG4iLCJsaWQkMCIsImFjY3UiLCJzJDAiLCJsaWQiLCJsYXN0X2V4biIsInVuZmxhdHRlbiIsImwiLCJhY2MiLCJwYXJzZSIsImludmFsaWQiLCJvcGVuX3BhciIsImNsb3NlX3BhciIsInIiLCJsJDAiLCJncm91cCIsImJlZm9yZSIsImwkMSIsInMkMSIsIngiLCJtayIsIm1hcF9saWRlbnQiLCJsaWRlbnQiLCJ4JDAiLCJwcGF0X2NvbnN0cnVjdCQwIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24kMCIsInBzdHJfdmFsdWVfbGlzdCIsInJlY19mbGFnIiwidmJzIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24iLCJlaW50IiwiZWNoYXIiLCJlc3RyaW5nIiwiZWZsb2F0IiwiZWludDMyIiwiZWludDY0IiwiZW5hdGl2ZWludCIsInBpbnQiLCJwY2hhciIsInBzdHJpbmciLCJwZmxvYXQiLCJwaW50MzIiLCJwaW50NjQiLCJwbmF0aXZlaW50IiwiZWJvb2wiLCJwYm9vbCIsImV2YXIiLCJ2IiwicHZhciIsImV1bml0IiwicHVuaXQiLCJwZXhwX3R1cGxlJDAiLCJwcGF0X3R1cGxlJDAiLCJwdHlwX3R1cGxlJDAiLCJwZXhwX3R1cGxlX29wdCIsInBwYXRfdHVwbGVfb3B0IiwicHR5cF9wb2x5JDAiLCJ0eSIsInBleHBfYXBwbHkkMCIsImVsIiwiZSQwIiwiZWFwcGx5IiwiZWFic3RyYWN0IiwicHMiLCJlc2VxdWVuY2UiLCJ0bCIsImhkIiwicGNvbnN0cnVjdCIsImNkIiwiZWNvbnN0cnVjdCIsImVsaXN0IiwicGxpc3QiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXQiLCJpZGVudCIsIm4kMCIsInR5cGVfY29uc3RyX2NvbnYiLCJhcHBseV9sb2MiLCJsb25naWRlbnQiLCJsb2MkMCIsIm1vZHVsZV9wYXRoIiwic3VmZml4X24iLCJmdW5jdG9yIiwiZnVuY3Rvcl9hcmdzIiwicmVzdCIsImZ1bmN0b3IkMCIsImZ1bmN0b3JfcGF0aCIsImlkZW50JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiIsImdhdGhlcl9hcmdzIiwiYXJncyQwIiwiYm9keSQwIiwiZXRhX3JlZHVjZSIsImV4cHIkMCIsInN1YnBhdCIsImxhYmVsIiwiYWNjJDAiLCJuYW1lJDAiLCJhY2MkMSIsImZfaWRlbnQiLCJwYXJhbV9sYWJlbCIsImFyZ19sYWJlbCIsInBhcmFtJDAiLCJ0eSQwIiwidHlfb3B0IiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSIsImV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbiIsIm5vbnJlY190eXBlX2RlY2xhcmF0aW9uJDAiLCJwZXhwX3R1cGxlX29wdCQwIiwicHBhdF90dXBsZV9vcHQkMCIsImVpbnQkMCIsImVjaGFyJDAiLCJlc3RyaW5nJDAiLCJlZmxvYXQkMCIsImVpbnQzMiQwIiwiZWludDY0JDAiLCJlbmF0aXZlaW50JDAiLCJlYm9vbCQwIiwiZXZhciQwIiwicGludCQwIiwicGNoYXIkMCIsInBzdHJpbmckMCIsInBmbG9hdCQwIiwicGludDMyJDAiLCJwaW50NjQkMCIsInBuYXRpdmVpbnQkMCIsInBib29sJDAiLCJwdmFyJDAiLCJldW5pdCQwIiwicHVuaXQkMCIsImVhcHBseSQwIiwiZWFic3RyYWN0JDAiLCJlc2VxdWVuY2UkMCIsImVsaXN0JDAiLCJwbGlzdCQwIiwidHlwZV9jb25zdHJfY29udiQwIiwidW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYkMCIsImdldCIsInNraXAiLCJza2lwJDAiLCJzdGFjayIsImxlbiIsInBvcyIsInBvcyQwIiwibGV2ZW5zaHRlaW5fZGlzdGFuY2UiLCJjdXRvZmYiLCJtIiwiZCIsImkkMCIsImokMCIsImxpbmVfbWluIiwiaiIsImkiLCJ2YWx1ZSIsImRpc3RhbmNlIiwic3BlbGxjaGVjayIsIm5hbWVzIiwic3VnZ2VzdGlvbnMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJyZXZfcmVzdCIsImxhc3QiLCJmb2xkX2RvdF9zdWZmaXhlcyIsImNvbGxhcHNlX2FmdGVyX2F0IiwicGFydHMiLCJwYXJ0IiwicGFydHMkMSIsInBhcnRzJDAiLCJkb3Rfc3VmZml4ZXMiLCJzcGxpdF9wYXRoIiwiaSQyIiwiaSQ0IiwiaSQzIiwiaSQxIiwibWF0Y2hlcyIsIm1hdGNoZWQiLCJzcGxpdF9vdXRlcl9uYW1lc3BhY2UiLCJiZWZvcmVfZG90IiwiYWZ0ZXJfZG90IiwiY3JlYXRlX3NldCIsImZ1bGx5X3F1YWxpZmllZF9uYW1lcyIsImF0dHJpYnV0ZXMiLCJleHRlbnNpb25zIiwiaXNfYWxsb3dsaXN0ZWQiLCJnZXRfYXR0cmlidXRlX2xpc3QiLCJnZXRfZXh0ZW5zaW9uX2xpc3QiLCJjcmVhdGVfcmVzZXJ2ZWQiLCJ0YmwiLCJyZXNlcnZlIiwibnMkMCIsIm5zIiwidGJsJDAiLCJyZXN0X25zIiwib3V0ZXJfbnMiLCJyZXN0X3RibCIsImlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMiLCJpZ25vcmVfY2hlY2tzIiwiY3JlYXRlIiwiY3VycmVudF9maWxlIiwic3RyaW5nX29mX2NvbnRleHQiLCJnZXRfYWxsX2Zvcl9jb250ZXh0IiwiY29udGV4dCIsImNoZWNrX2NvbGxpc2lvbnNfbG9jYWwiLCJjYWxsZXIiLCJhbGxfZm9yX2NvbnRleHQiLCJkZWNsYXJlZF9hdCIsImNvbnRleHQkMCIsImNoZWNrX2NvbGxpc2lvbnMiLCJyZWdpc3RlciIsImtpbmQkMSIsImxpc3QiLCJraW5kJDAiLCJhbGwiLCJ0JDAiLCJhbGxvd2xpc3QiLCJrZXkiLCJvdGhlcl9jb250ZXh0cyIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJwcF90ZXh0IiwiY3VycmVudF9jb250ZXh0IiwiYV9vcl9hbiIsInkiLCJjIiwicmV2X290aGVycyIsIm90aGVycyIsIm1zZyIsInJhaXNlX2Vycm9yZiQwIiwiY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24iLCJ0ZCIsImNob3AiLCJvcl9tb3JlIiwidGFyZ2V0IiwiY250IiwiZ2VuX3N5bWJvbCIsInByZWZpeCIsInByZWZpeCQwIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMiLCJuYW1lX3BhcmFtIiwidmFyaWFuY2UiLCJ0cCIsInB0eXBfZGVzYyIsIm8iLCJlcnJvcnMiLCJwdHlwZV9wYXJhbXMiLCJxIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZCIsImVyciIsImNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhciIsInRkJDAiLCJyZXN1bHRfdHlwZSIsInN0cmluZ19vZl9jb3JlX3R5cGUiLCJjdCIsImJ1ZiIsImdldF90eXBlX3BhcmFtX25hbWVfcmVzIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZSIsInNlbGZfMSIsImN0eXBlIiwiaWQiLCJ0ZHMiLCJyZWFsbHlfcmVjdXJzaXZlIiwieCQxIiwibG9jX29mX25hbWVfYW5kX3BheWxvYWQiLCJsb2Nfb2ZfcGF5bG9hZCIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImxvY19vZl9hdHRyaWJ1dGUiLCJsb2Nfb2ZfZXh0ZW5zaW9uIiwiY3VycnlfYXBwbGljYXRpb25zIiwib3JpZ19mb3J3YXJkX2FyZ3MiLCJsb29wIiwicmV2X2Zyb250X2FyZ3MiLCJsYXN0X2FyZyIsImF0dHIiLCJhdHRyaWJ1dGVzX2Vycm9ycyIsInNlbGZfMiIsImNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMiLCJhc3NlcnRfbm9fYXR0cmlidXRlcyIsInNlbGZfMyIsImFzc2VydF9ub19hdHRyaWJ1dGVzX2luIiwiYXR0cmlidXRlX29mX3dhcm5pbmciLCJpc19wb2x5bW9ycGhpY192YXJpYW50Iiwic2lnIiwidHlwJDAiLCJ0eXAiLCJta19uYW1lZF9zaWciLCJzZ19uYW1lIiwiaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJhcml0eSIsIm10eSIsImZvcl9zdWJzdCIsImV4bl90b19sb2NfZXJyb3IiLCJleG4iLCJlcnJvciIsInJldHVybiQwIiwic3ltYm9sX2JpbmQiLCJlcnJvcnMxIiwiZXJyb3JzMiIsInN5bWJvbF9tYXAiLCJvZl9yZXN1bHQiLCJyZXN1bHQiLCJkZWZhdWx0JDAiLCJjb21iaW5lX2Vycm9ycyIsIm5vbGFiZWwiLCJrIiwibGFiZWxsZWQiLCJmMCIsImskMCIsIm9wdGlvbmFsIiwiayQxIiwiayQyIiwicGNsX2xvYyIsImYyIiwiZjEiLCJwY2xfYXR0cmlidXRlcyIsImYzIiwiayQzIiwicGNmX2xvYyIsInBjZl9hdHRyaWJ1dGVzIiwiY2ZrX3ZpcnR1YWwiLCJjZmtfY29uY3JldGUiLCJjbGFzc19pbmZvc19hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfYXR0cmlidXRlcyIsImNsb3NlZCIsIm9wZW4iLCJwY29uc3RfaW50ZWdlciIsInBjb25zdF9jaGFyIiwicGNvbnN0X3N0cmluZyIsInBjb25zdF9mbG9hdCIsInBjc3RyX3R1cGxlIiwicGNzdHJfcmVjb3JkIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmliIiwicHR5cF9sb2MiLCJwdHlwX2F0dHJpYnV0ZXMiLCJ1cHRvIiwiZG93bnRvIiwicGRpcmFfbG9jIiwicGV4cF9sb2MiLCJwZXhwX2F0dHJpYnV0ZXMiLCJmNCIsImskNCIsImV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dCIsInBleHRfZGVjbCIsInBleHRfcmViaW5kIiwidW5pdCIsIm5hbWVkIiwiaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIiwiaW5qZWN0aXZlIiwibm9pbmplY3Rpdml0eSIsImxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJsZG90IiwibGFwcGx5IiwibW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyIsIm1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2F0dHJpYnV0ZXMiLCJtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfYXR0cmlidXRlcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYiIsImltbXV0YWJsZSIsInBvZl9sb2MiLCJwb2ZfYXR0cmlidXRlcyIsIm9wZW5faW5mb3NfYXR0cmlidXRlcyIsImZyZXNoIiwicHBhdF9sb2MiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwc3RyIiwicHNpZyIsInB0eXAiLCJwcGF0IiwicHVibGljJDAiLCJub25yZWN1cnNpdmUiLCJyZWN1cnNpdmUiLCJwcmZfbG9jIiwicHJmX2F0dHJpYnV0ZXMiLCJwc2lnX2xvYyIsInBzdHJfbG9jIiwicHRvcF9kZWYiLCJwdG9wX2RpciIsInR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImskNSIsInR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMiLCJ0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIiwicHR5cGVfYWJzdHJhY3QiLCJwdHlwZV92YXJpYW50IiwicHR5cGVfcmVjb3JkIiwicHR5cGVfb3BlbiIsInZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyIsInZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMiLCJjb3ZhcmlhbnQiLCJjb250cmF2YXJpYW50Iiwibm92YXJpYW5jZSIsInZpcnR1YWwiLCJjb25jcmV0ZSIsInB3aXRoX3R5cGUiLCJwd2l0aF9tb2R1bGUiLCJwd2l0aF9tb2R0eXBlIiwicHdpdGhfbW9kdHlwZXN1YnN0IiwicHdpdGhfdHlwZXN1YnN0IiwicHdpdGhfbW9kc3Vic3QiLCJyZXN0b3JlX2NvbnRleHQiLCJiYWNrdXAiLCJpbmNyX21hdGNoZWQiLCJwYXJzZV9yZXMiLCJvbl9lcnJvciIsImYkMCIsInIkMCIsInBhcnNlX3JlcyQwIiwicGFyc2UkMCIsInN5bWJvbCIsInN5bWJvbCQwIiwiZHJvcCIsImFzIiwiY3N0IiwidG9fc3RyaW5nIiwiZXF1YWwiLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiYm9vbCIsImJvb2wkMCIsImZ1bmMiLCJmYWxzZSQwIiwidHJ1ZSQwIiwibmlsIiwic3ltYm9sJDEiLCJzb21lIiwicGFpciIsInRyaXBsZSIsImFsdCIsImUxJDAiLCJlMSIsIm0xIiwiZTIkMCIsImUyIiwibTIiLCJtYXAkMCIsIm1hcF9yZXN1bHQiLCJtYXAwIiwibWFwMSIsIm1hcDIiLCJtYXAwJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJtYXBfdmFsdWUiLCJtYXBfdmFsdWUkMCIsImFsdF9vcHRpb24iLCJtYW55IiwiYXV4IiwieHMiLCJwYWNrMCIsInBhY2syIiwicGFjazMiLCJ6IiwiY29uc3RfaW50IiwiY29uc3RfaW50MzIiLCJjb25zdF9pbnQ2NCIsImNvbnN0X25hdGl2ZWludCIsInNpbmdsZV9leHByX3BheWxvYWQiLCJub19sYWJlbCIsImV4dGVuc2lvbiIsIm5leHQiLCJleHByJDEiLCJvZl9mdW5jIiwidG9fZnVuYyIsInBvbHlfZXF1YWwiLCJnZXRfcHN0cl9ldmFsIiwic3QiLCJnZXRfcHN0cl9leHRlbnNpb24iLCJnZXRfcHNpZ19leHRlbnNpb24iLCJnZXRfYXR0cmlidXRlcyIsInNldF9hdHRyaWJ1dGVzIiwiYXR0cnMiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJwYXR0ZXJuIiwiZGVjbGFyZSIsImRlY2xhcmVfd2l0aF9uYW1lX2xvYyIsIm5hbWVfbG9jIiwiZGVjbGFyZV93aXRoX2F0dHJfbG9jIiwiYXR0cl9sb2MiLCJkZWNsYXJlX2ZsYWciLCJwYXlsb2FkX3BhdHRlcm4iLCJjb250aW51YXRpb24iLCJub3JtYWxpemUiLCJoYXNoIiwibm90X3NlZW4iLCJtYXJrX2FzX3NlZW4iLCJleHBsaWNpdGx5X2Ryb3AiLCJnZXRfaW50ZXJuYWwiLCJhdHRyaWJ1dGVzJDEiLCJsb25nZXN0X21hdGNoIiwiYXR0cmlidXRlcyQwIiwibGVuJDAiLCJsb25nZXN0X21hdGNoJDAiLCJsb25nZXN0X21hdGNoJDEiLCJjb252ZXJ0IiwiZG9fbWFya19hc19zZWVuIiwicGF0dGVybiQwIiwiZ2V0X3JlcyIsImhhc19mbGFnX3JlcyIsImhhc19mbGFnIiwiY29uc3VtZV9yZXMiLCJhdHRycyQwIiwiYXR0ciQwIiwiY29uc3VtZSIsInJlbW92ZV9zZWVuX3JlcyIsInBhY2tlZHMiLCJyZW1vdmVfc2VlbiIsInBhdHRlcm5fcmVzIiwiZGVjbGFyZSQwIiwiY29udmVydF9yZXMiLCJ0cyIsImNvbnZlcnQkMCIsImNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY2xvc2VkX2ZsYWciLCJlcnJvcnMkMCIsImZpZWxkcyQwIiwiaXRlbSIsIml0ZW0kMCIsIml0ZW0kMSIsImVycm9yczIkMCIsIml0ZW0kMiIsImNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJybyIsInJhaXNlX2lmX25vbl9lbXB0eSIsImNoZWNrX3VudXNlZCIsInJlc2V0X2NoZWNrcyIsInNlbGZfNCIsImNvbGxlY3QiLCJjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMiLCJjaGVja19hbGxfc2VlbiIsInJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4iLCJ0YWJsZSIsInNlbGZfNSIsImNvcHlfb2Zfbm90X3NlZW4iLCJjb3B5IiwiZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIiwiZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIiwic2ciLCJ0b3BfbGV2ZWwiLCJmaWxlX3BhdGgiLCJtYWluX21vZHVsZV9uYW1lIiwiZW5jbG9zaW5nX21vZHVsZSIsImVuY2xvc2luZ192YWx1ZSIsInN1Ym1vZHVsZV9wYXRoIiwibG9jYXRlZCIsImZ1bGx5X3F1YWxpZmllZF9wYXRoIiwidmFsdWUkMCIsImVudGVyX2V4cHIiLCJlbnRlcl9tb2R1bGUiLCJtb2R1bGVfbmFtZSIsImVudGVyX3ZhbHVlIiwidmFsdWVfbmFtZSIsInRvX3N0cmluZ19wYXRoIiwid2l0aF9zdHJpbmdfcGF0aCIsInRvb2xfbmFtZSIsImlucHV0X25hbWUiLCJjb2RlX3BhdGgiLCJleHRlbnNpb25fcG9pbnRfbG9jIiwiYmFzZSIsImNvZGVfcGF0aCQwIiwiaW5wdXRfbmFtZSQwIiwidG9vbF9uYW1lJDAiLCJ3aXRoX2xvY19hbmRfcGF0aCIsImN0eHQiLCJtYWtlJDAiLCJkZXJpdmVkX2l0ZW1fbG9jIiwiaW5saW5lIiwiY29kZV9wYXRoJDEiLCJpbnB1dF9uYW1lJDEiLCJ0b29sX25hbWUkMSIsIndpdGhfbG9jX2FuZF9wYXRoJDAiLCJlbnRlciIsImVudGVyX29wdCIsIm5hbWVfb3B0IiwibWIiLCJtZCIsIm10ZCIsInZhcl9uYW1lc19vZiIsImVjX2VudGVyX21vZHVsZV9vcHQiLCJkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyIsImRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiIsImRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyIsImRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpbyIsImRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYSIsImRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIiwidGFnIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2Rlc2MiLCJ3aXRoX3ZhbHVlIiwiY3R4dCQwIiwibW9kdWxlX2V4cHIiLCJuYW1lX2Vycm9ycyIsIndpdGhfbGV0X21vZHVsZSIsIm1vZHVsZV9leHByX2Vycm9ycyIsIm1vZHVsZV9leHByJDAiLCJib2R5X2Vycm9ycyIsImRlc2NfZXJyb3JzJDAiLCJwZXhwX2Rlc2MkMSIsImRlc2NfZXJyb3JzIiwicGV4cF9kZXNjJDAiLCJsb2NfZXJyb3JzIiwicGV4cF9sb2MkMCIsImxvY19zdGFja19lcnJvcnMiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJtZSIsIndpdGhfbW9kdWxlX2V4cHIiLCJ3aXRoX21vZHVsZV9iaW5kaW5nIiwid2l0aF9tb2R1bGVfZGVjbGFyYXRpb24iLCJ3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwidmIiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJ2YXJfbmFtZSIsImluX2JpbmRpbmdfY3R4dCIsInBhdF9lcnJvcnMiLCJwdmJfcGF0JDAiLCJleHByX2Vycm9ycyIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJzZXRfaW5wdXRfbGV4YnVmIiwiaWMiLCJzb3VyY2UiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFsbF9zb3VyY2UiLCJhc3QiLCJleG4kMCIsIklucHV0X3ZlcnNpb24iLCJhc3QkMCIsIklucHV0X3ZlcnNpb24kMCIsImFzdCQxIiwiYXN0JDIiLCJyZWFkIiwiaW5wdXRfc291cmNlIiwid3JpdGUiLCJvYyIsImFkZF9wcHhfY29udGV4dCIsInNnJDAiLCJzdCQwIiwicmVhZF9iaW5hcnkiLCJzaWduYXR1cmUiLCJzdHJ1Y3R1cmUiLCJnZXRfYXN0IiwiZ2V0X2lucHV0X25hbWUiLCJydW5fcHJlcHJvY2Vzc29yIiwicHAiLCJpbnB1dCIsIm91dHB1dCIsImNvbW1hbmQiLCJlbmRfbWFya2VyX3NpZyIsImVuZF9tYXJrZXJfc3RyIiwiZXh0cmFjdF9wcmVmaXgiLCJyZW1vdmVfbG9jIiwicmVtb3ZlX2xvYyQwIiwicHJldiQwIiwicHJldiQxIiwiZGlmZl9hc3RzIiwiZ2VuZXJhdGVkIiwicm91bmRfdHJpcCIsIndpdGhfdGVtcF9maWxlIiwiZm4xIiwiZm4yIiwib3V0IiwiZHVtcCIsImNtZCIsIm9rIiwiY21kJDAiLCJwYXJzZV9zdHJpbmciLCJtYXRjaF9sb29wIiwiZW5kX3BvcyIsIm1pc21hdGNoX2hhbmRsZXIiLCJleHBlY3RlZCQwIiwic291cmNlJDAiLCJsb2MkMSIsInNvdXJjZSQxIiwiZXhwZWN0ZWQkMSIsInkkMCIsImRvX21hdGNoIiwiZ2V0X2xvYyIsImFwcGx5IiwidG9fc2V4cCIsImdldF9sb2MkMCIsInBwJDAiLCJ0b19zZXhwJDAiLCJtYXRjaF9zdHJ1Y3R1cmVfcmVzIiwibWF0Y2hfc3RydWN0dXJlIiwibWF0Y2hfc2lnbmF0dXJlX3JlcyIsIm1hdGNoX3NpZ25hdHVyZSIsImRlc2MiLCJlcSIsImdldF9leHRlbnNpb24iLCJ0eXBlX2RlY2wiLCJlJDEiLCJlJDIiLCJhJDMiLCJlJDMiLCJhJDQiLCJlJDQiLCJhJDUiLCJlJDUiLCJhJDYiLCJlJDYiLCJhJDciLCJlJDciLCJhJDgiLCJlJDgiLCJhJDkiLCJlJDkiLCJ2aXJ0dWFsX3BheWxvYWQiLCJtZXJnZV9hdHRyaWJ1dGVzX3JlcyIsInEkMCIsInQkMSIsInEkMSIsInQkMiIsIm1lcmdlX2F0dHJpYnV0ZXMiLCJ3aXRoX2FyZyIsImZpbmQiLCJleHQiLCJhcmckMCIsInNoaWZ0IiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnIiwicGF0dCIsImNvbnZlcnRfcmVzJDAiLCJmb3VuZCIsImNvbnZlcnRfaW5saW5lX3JlcyIsImNvbnZlcnRfaW5saW5lIiwiY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIiwiZmlsdGVyX2J5X2NvbnRleHQiLCJleHBhbmRlcnMiLCJleHBhbmRlcnMkMCIsImV4cGFuZGVycyQxIiwidW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciIsImNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lciIsImVycm9yX2xpc3RfdG9fZXhjZXB0aW9uIiwiZGVjbGFyZV9pbmxpbmUiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmciLCJkZWNsYXJlJDEiLCJkZWNsYXJlX2lubGluZSQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnJDEiLCJkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnJDAiLCJkZWNsYXJlX3BweF9pbXBvcnQiLCJleHBhbmQiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCIsImF0dHJfbmFtZSQwIiwic3BsaXRfbm9ybWFsX2FuZF9leHBlY3QkMCIsImZpbHRlciIsImZpZWxkIiwiZmllbGQkMCIsInNwZWNpYWxfZnVuY3Rpb24iLCJjb25zdGFudCIsInN1ZmZpeCIsImF0dHJfc3RyX3R5cGVfZGVjbCIsImF0dHJfc2lnX3R5cGVfZGVjbCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIiwiYXR0cl9zdHJfdHlwZV9leHQiLCJhdHRyX3NpZ190eXBlX2V4dCIsImF0dHJfc3RyX2V4Y2VwdGlvbiIsImF0dHJfc2lnX2V4Y2VwdGlvbiIsImF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCIsImF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QiLCJub3AiLCJyZXBsYWNlIiwiaW5zZXJ0X2FmdGVyIiwiZXhuX3RvX2V4dGVuc2lvbiIsImV4bl90b19lcnJvcl9leHRlbnNpb24iLCJvcmlnaW5hbF9ub2RlIiwicHR5cGVfbWFuaWZlc3QiLCJleG5fdG9fc3RyaSIsImV4bl90b19zaWdpIiwibWFwX25vZGVfcmVjIiwic3VwZXJfY2FsbCIsImJhc2VfY3R4dCIsImVtYmVkX2Vycm9ycyIsImNvbnZlcnRlZCIsIm1hcF9ub2RlcyIsImhvb2siLCJpbl9nZW5lcmF0ZWRfY29kZSIsImdlbmVyYXRlZF9jb2RlIiwiY29kZSIsImdldF9ncm91cCIsImF0dHIyIiwidmFscyIsInZhbHMkMCIsInJldl9jb25jYXQiLCJzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIiwic29ydF9hdHRyX2lubGluZSIsImNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpYyIsIm5vcCQwIiwid2l0aF9jb250ZXh0Iiwib3B0aW9uIiwiZXhwYW5kZWQiLCJleHBhbmRfY29uc3RhbnQiLCJ0ZXh0IiwiYyQwIiwiZXhuJDEiLCJpZCQwIiwiZ2VuZXJhdGVkX2NvZGUkMCIsImV4biQyIiwiZnVuYyQwIiwibGFiIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInJ1bGVzIiwic3BlY2lhbF9mdW5jdGlvbnMiLCJzcGVjaWFsX2Z1bmN0aW9ucyQwIiwiY29uc3RhbnRzIiwiY2xhc3NfZXhwciIsImNsYXNzX2ZpZWxkIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwibW9kdWxlX3R5cGUiLCJzaWduYXR1cmVfaXRlbSIsInN0cnVjdHVyZV9pdGVtIiwicHB4X2ltcG9ydCIsImF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9kZWNscyIsImF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9kZWNscyIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9leHRzIiwiYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZXh0cyIsImF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9ucyIsImF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9ucyIsIm1hcF9ub2RlIiwibWFwX25vZGVzJDAiLCJoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUiLCJleHBhbmRlZF9pdGVtcyIsImNvbnZlcnRfZXhuIiwiZzEiLCJnMiIsInZhbHVlcyIsImVycm9yX2l0ZW0iLCJnZW5lcmF0ZWRfY29kZV9iZWdpbiIsImdlbmVyYXRlZF9jb2RlX2VuZCIsInBhcmVuIiwic3RvcCIsIm1ha2VfdGV4dCIsImJsb2NrIiwicHJpbnRlciIsImlkeCIsImNvdW50X25ld2xpbmVzIiwic2tpcF9ibGFua19lb2wiLCJjb250ZW50cyIsImNudW0kMSIsImNudW0kMCIsInJlY29uY2lsZSIsInN0eWxlciIsInJlcGxzJDMiLCJpbnB1dF9maWxlbmFtZSIsInJlcGxzIiwicmVwbHMkMiIsInJlcGwkMCIsInByZXYiLCJyZXBscyQwIiwicmVwbHMkMSIsInJlcGxzJDQiLCJvdXRwdXRfbmFtZSIsImNvcHlfaW5wdXQiLCJ1cF90byIsImxpbmUiLCJsYXN0X2lzX3RleHQiLCJpc190ZXh0IiwibGluZSQwIiwibGluZSQxIiwibG9vcCQwIiwibGluZSQyIiwibG9vcF9jb25zZWN1dGl2ZV9yZXBscyQwIiwibGFzdF9pc190ZXh0JDAiLCJlbmRfY29uc2VjdXRpdmVfcmVwbHMiLCJwb3MkMSIsImxhc3RfaXNfdGV4dCQxIiwicG9zJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzIiwidG1wX2ZuIiwic2FuaXRpemUiLCJiaW5kaW5ncyIsIkFzdCIsInF1b3RlIiwicXVvdGVkX2V4cHIkMCIsImJpbmRpbmdfZXhwciQwIiwiYmluZGluZ19leHByIiwicXVvdGVkX2V4cHIiLCJiaW5kaW5nIiwibWtfYXR0cl9ub2xvYyIsImhpZGVfYXR0cmlidXRlIiwiZm9jdXNfYXR0cmlidXRlIiwiaGlkZV9wYXR0ZXJuIiwiZm9jdXNfcGF0dGVybiIsImhpZGVfZXhwcmVzc2lvbiIsImZvY3VzX2V4cHJlc3Npb24iLCJlbXB0eSIsInJhbmdlcyIsIm5vZGVfbG9jIiwibm9kZV9uYW1lIiwieF9sb2MiLCJ4X25hbWUiLCJwMiQwIiwicDEkMCIsImluc2VydCIsImFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IiwiZmlsZSIsInNhbWVfZmlsZV9zb19mYXIiLCJzaG91bGRfaWdub3JlIiwib3JpZ19mbmFtZSIsImV4dHJhY3RfY29uc3RyYWludCIsImRvX2NoZWNrIiwiY2hpbGRyZW5zX2xvY3MiLCJzaWJsaW5nc19sb2NzIiwibWF4X3BvcyQwIiwibWluX3BvcyQwIiwiY2hpbGRfbG9jIiwiY2hpbGRfbmFtZSIsImwyIiwibDEiLCJ5cyIsInlzJDAiLCJ4cyQwIiwiZW5mb3JjZV9pbnZhcmlhbnRzIiwic2libGluZ3MiLCJjdGUiLCJjdHAiLCJvdXRtb3N0X2xvYyIsImluaXRpYWxfcmVzJDAiLCJyZXMkMSIsImluaXRpYWxfcmVzIiwicmVzJDAiLCJjaGlsZHNfbG9jcyIsImF0dHJzX2xvY3MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImV4cHJfbyIsImxhYmVscyIsImFjYyQyIiwib3BuIiwiZV9sb2MiLCJjZSIsIm9kIiwiYWNjJDMiLCJhY2MkNCIsImV4ZV9uYW1lIiwiYWRkX2FyZyIsInNwZWMiLCJkb2MiLCJsb2NfZm5hbWUiLCJwZXJmb3JtX2NoZWNrcyIsInBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMiLCJwZXJmb3JtX2xvY2F0aW9uc19jaGVjayIsImRlYnVnX2F0dHJpYnV0ZV9kcm9wIiwiYXBwbHlfbGlzdCIsInByZXByb2Nlc3NvciIsIm5vX21lcmdlIiwicmVxdWVzdF9wcmludF9wYXNzZXMiLCJyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyIsInVzZV9jb2xvciIsImRpZmZfY29tbWFuZCIsInByZXR0eSIsIm91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSIsImNvcnJlY3RlZF9zdWZmaXgiLCJnZXRfZGVmYXVsdF9wYXRoIiwiZm5hbWUkMCIsImdldF9kZWZhdWx0X3BhdGhfc3RyIiwiZ2V0X2RlZmF1bHRfcGF0aF9zaWciLCJvZl9zdHJpbmciLCJnaXZlbl90aHJvdWdoX2NsaSIsInNldCIsImhhbmRsZXJzIiwiYWRkX2hhbmRsZXIiLCJhZGRfc2ltcGxlX2hhbmRsZXIiLCJhY2tub3dsZWRnZV9jb29raWVzIiwicG9zdF9oYW5kbGVycyIsImFkZF9wb3N0X2hhbmRsZXIiLCJjYWxsX3Bvc3RfaGFuZGxlcnMiLCJ0cmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWF0aW9uJDAiLCJoYXNfbmFtZSIsInByaW50X2NhbGxlcl9pZCIsImNhbGxlcl9pZCIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIiwiZW5jbG9zZV9pbXBsIiwiZW5jbG9zZV9pbnRmIiwiaW1wbCIsImludGYiLCJsaW50X2ltcGwiLCJsaW50X2ludGYiLCJwcmVwcm9jZXNzX2ltcGwiLCJwcmVwcm9jZXNzX2ludGYiLCJpbnN0cnVtZW50IiwiYWxpYXNlcyIsInJ1bGVzJDAiLCJpbXBsJDAiLCJpbnRmJDAiLCJwcmVwcm9jZXNzX2ltcGwkMCIsInByZXByb2Nlc3NfaW50ZiQwIiwiY3QkMCIsImxvY19vZl9saXN0IiwibCQyIiwiZmlyc3QiLCJtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIiwiZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIiwid2hvbGVfbG9jIiwiZm9vdGVyIiwiaGVhZGVyIiwibG9jX2hlYWRlciIsImxvY19mb290ZXIiLCJtYXBfaW1wbCIsInN0X3dpdGhfYXR0cnMiLCJtYXBfaW50ZiIsInNnX3dpdGhfYXR0cnMiLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ18iLCJhZGRfY3R4dF9hcmciLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiQwIiwibGludF9pbXBsJDAiLCJsaW50X2ludGYkMCIsImVuY2xvc2VfaW1wbCQwIiwiZW5jbG9zZV9pbnRmJDAiLCJyZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfJDAiLCJnZXRfd2hvbGVfYXN0X3Bhc3NlcyIsImN0cyIsImFmdF9pIiwiYmVmX2kiLCJyZWR1Y2VkX3QiLCJpbnN0ciIsInRyYW5zZiIsInRyYW5zZiQwIiwidHJhbnNmb3JtcyIsImFmdGVyX2luc3RycyIsImJlZm9yZV9pbnN0cnMiLCJwcmVwcm9jZXNzIiwibGludGVycyIsImdldF9lbmNsb3NlcnMiLCJpbXBsX2VuY2xvc2VycyIsImludGZfZW5jbG9zZXJzIiwibWVyZ2VfZW5jbG9zZXIiLCJlbmNsb3NlcnMiLCJmb290ZXJzIiwiaGVhZGVycyIsImhlYWRlcnMkMCIsImZvb3RlcnMkMCIsImFwcGx5X3RyYW5zZm9ybXMiLCJsaW50X2ZpZWxkIiwiZHJvcHBlZF9zb19mYXIiLCJsaW50X2Vycm9ycyIsIm9sZF9kcm9wcGVkIiwibGludF9lcnJvcnMkMCIsImVycm9ycyQxIiwibW9yZV9lcnJvcnMiLCJuZXdfZHJvcHBlZCIsInByaW50X2RpZmYiLCJ3aGF0IiwiZGlmZiIsImRyb3BwZWQiLCJlcnJvcl90b19leHRlbnNpb24iLCJleHQkMCIsInNvcnRfZXJyb3JzX2J5X2xvYyIsImVycm9yJDAiLCJtYXBfc3RydWN0dXJlX2dlbiIsIndpdGhfZXJyb3JzIiwic29ydGVkIiwic3QkMSIsInVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyIsInVudXNlZF9leHRlbnNpb25fZXJyb3JzIiwibm90X3NlZW5fZXJyb3JzIiwibWFwX3NpZ25hdHVyZV9nZW4iLCJzZyQxIiwibWFwX3NpZ25hdHVyZSIsInZlcnNpb25lZF9lcnJvcmYiLCJpbnB1dF9maWxlX25hbWUiLCJyZW1vdmVfbm9fZXJyb3IiLCJuZXdfZm4iLCJvbGRfZm4iLCJyZWxvY2F0ZV9tYXBwZXIiLCJzZXRfaW5wdXRfbmFtZSIsImV4dHJhY3RfY29va2llcyIsInByZWZpeCQxIiwicHJlZml4JDIiLCJjb3JyZWN0aW9ucyIsImFkZF90b19saXN0IiwicmVnaXN0ZXJfY29ycmVjdGlvbiIsInByb2Nlc3NfZmlsZV9ob29rcyIsInJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIiwiYWxsJDAiLCJwcm9jZXNzX2FzdCIsIm91dHB1dF9tb2RlIiwic2V0X2lucHV0Iiwic2V0X2tpbmQiLCJzZXRfb3V0cHV0X21vZGUiLCJtb2RlIiwibWF0Y2giLCJhcmdfb2Zfb3V0cHV0X21vZGUiLCJwYXJzZV9hcHBseV9saXN0IiwibWFzayIsImhhbmRsZV9hcHBseSIsImhhbmRsZV9kb250X2FwcGx5IiwiaW50ZXJwcmV0X21hc2siLCJzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSIsImlzX2NhbmRpZGF0ZSIsIm5hbWVzJDAiLCJpc19zZWxlY3RlZCIsInNldF9jb29raWUiLCJzaGFyZWRfYXJncyIsImFzX3BwIiwic3RhbmRhbG9uZV9hcmdzIiwiZ2V0X2FyZ3MiLCJzdGFuZGFsb25lX2FyZ3MkMCIsInN0YW5kYWxvbmVfbWFpbiIsInVzYWdlIiwicmVsb2NhdGUiLCJvdXRwdXQkMCIsImVtYmVkX2Vycm9ycyQwIiwib3V0cHV0X21vZGUkMCIsInJlcGxhY2VtZW50cyIsImhvb2skMCIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyJDAiLCJhc3RfaW5wdXRfbmFtZSIsImFzdF9raW5kIiwiZmFsbF9iYWNrX3ZlcnNpb24iLCJ1bmtub3duX21hZ2ljIiwiZmFsbF9iYWNrX3ZlcnNpb24kMCIsInRtcGZpbGUiLCJmYWlsZWRfY29tbWFuZCIsInByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIiwiaW5wdXRfZm5hbWUiLCJpbnB1dF92ZXJzaW9uJDAiLCJpbnB1dF92ZXJzaW9uJDEiLCJpbnB1dF92ZXJzaW9uJDIiLCJtZXRhZGF0YSIsImlucHV0X2NvbnRlbnRzIiwidGVzdCIsIm1hZ2ljX251bWJlciIsImNvcnJlY3RlZCIsImNvcnJlY3Rpb25zJDAiLCJtaXNtYXRjaGVzX2ZvdW5kIiwibnVsbF9hc3QiLCJwYXJzZV9pbnB1dCIsInBhc3NlZF9pbl9hcmdzIiwidmFsaWRfYXJncyIsImluY29ycmVjdF9pbnB1dF9tc2ciLCJtc2ckMCIsInJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiIsImZsYWdzX2FuZF9wcm9nX25hbWUiLCJpbnB1dF9mbiIsIm91dHB1dF9mbiIsInByb2dfbmFtZV9hbmRfZmxhZ3MiLCJhc3QkNCIsImFzdCQzIiwic3RhbmRhbG9uZSIsImFyZ3YiLCJydW5fYXNfcHB4X3Jld3JpdGVyIiwicHJldHR5JDAiLCJlbmFibGVfY2hlY2tzIiwiZW5hYmxlX2xvY2F0aW9uX2NoZWNrIiwiZGlzYWJsZV9sb2NhdGlvbl9jaGVjayIsIm1hcF9zdHJ1Y3R1cmUiLCJ2YXIkMCIsInZhcnNfb2YiLCJpZ24iLCJhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzIiwibXMiLCJmcCIsImJpbmRzX21vZHVsZV9uYW1lcyIsIndhcm5pbmdzIiwiZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpIiwia2VlcF93MzJfaW1wbCIsImtlZXBfdzMyX2ludGYiLCJrZWVwX3czMl9zcGVjIiwiY29udl93MzJfc3BlYyIsImtlZXBfdzMyX2ltcGwkMCIsImtlZXBfdzYwX2ltcGwiLCJrZWVwX3c2MF9pbnRmIiwia2VlcF93NjBfc3BlYyIsImFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwiYXBwbHlfYWxsIiwiZW50cnkiLCJnZW5lcmF0b3JzIiwiZXh0X3RvX2l0ZW0iLCJlbXB0eV9sYWJlbF9lcnJvciIsImR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciIsImFjY2VwdGVkX2FyZ3MiLCJwYXJhbSIsInVuYWNjZXB0ZWRfYXJndW1lbnQiLCJzcGVsbGNoZWNrX21zZyIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImxfZXJyIiwiYWN0dWFsX2Rlcml2ZXJfbmFtZSIsImR1cF9lcnJvciIsImRlcCIsImRlcF9uYW1lIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJkZWZhdWx0JDAiLCJ4IiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJ2YXJzIiwiaSIsImJpbmRpbmdzIiwidmFyJDAiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ2YXJzJDAiLCJ0eHQiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsImJvZHkkMCIsInRwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJpbnRlcm5hbCIsIm4iLCJhcmdzJDAiLCJhcmciLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJmaWVsZF9yZWZzIiwiaW5pdCIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9rZXlzIiwiYXJyYXlfY29uc3RydWN0b3IiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwiZGF0ZV9jb25zdHIiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwiZXhuX3dpdGhfanNfYmFja3RyYWNlIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInJhaXNlX2pzX2Vycm9yIiwiZSIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJ0MSIsImFjYyQwIiwiaSQwIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwibm9kZVR5cGUiLCJ0MTMiLCJjYXN0IiwidDE0IiwiZWxlbWVudCIsInRleHQiLCJhdHRyIiwibm9faGFuZGxlciIsImhhbmRsZXIiLCJyZXMiLCJmdWxsX2hhbmRsZXIiLCJ0aGlzJDAiLCJpbnZva2VfaGFuZGxlciIsImV2ZW50IiwiZXZlbnRUYXJnZXQiLCJtYWtlIiwiYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwidDQ0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInR5cCIsImgiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwieCQxIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJhIiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwidWludDgiLCJvZl9hcnJheUJ1ZmZlciQwIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJsJDAiLCJhJDAiLCJiIiwiZmlsZW5hbWUiLCJuYW1lJDAiLCJkb2NfY29uc3RyIiwiZG9jdW1lbnQiLCJibG9iIiwic3RyaW5nIiwibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImxvYWRlbmQiLCJmaWxlUmVhZGVyIiwibmFtZSQ1NiIsIm5hbWUkNTUiLCJuYW1lJDU0IiwibmFtZSQ1MyIsIm5hbWUkNTIiLCJuYW1lJDUxIiwibmFtZSQ1MCIsIm5hbWUkNDkiLCJuYW1lJDQ4IiwibmFtZSQ0NyIsIm5hbWUkNDYiLCJuYW1lJDQ1IiwibmFtZSQ0NCIsIm5hbWUkNDMiLCJuYW1lJDQyIiwibmFtZSQ0MSIsIm5hbWUkNDAiLCJuYW1lJDM5IiwibmFtZSQzOCIsIm5hbWUkMzciLCJuYW1lJDM2IiwibmFtZSQzNSIsIm5hbWUkMzQiLCJuYW1lJDMzIiwibmFtZSQzMiIsIm5hbWUkMzEiLCJuYW1lJDMwIiwibmFtZSQyOSIsIm5hbWUkMjgiLCJuYW1lJDI3IiwibmFtZSQyNiIsIm5hbWUkMjUiLCJuYW1lJDI0IiwibmFtZSQyMyIsIm5hbWUkMjIiLCJuYW1lJDIxIiwibmFtZSQyMCIsIm5hbWUkMTkiLCJuYW1lJDE4IiwibmFtZSQxNyIsIm5hbWUkMTYiLCJuYW1lJDE1IiwibmFtZSQxNCIsIm5hbWUkMTMiLCJuYW1lJDEyIiwibmFtZSQxMSIsIm5hbWUkMTAiLCJuYW1lJDkiLCJuYW1lJDgiLCJuYW1lJDciLCJuYW1lJDYiLCJuYW1lJDUiLCJuYW1lJDQiLCJuYW1lJDMiLCJuYW1lJDIiLCJuYW1lJDEiLCJvbklFIiwiY2FuY2VsIiwiY2xpY2siLCJjbG9zZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm8iLCJ3aW5kb3ciLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZG9jIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaWFsb2ciLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwiY29uc3RyIiwiZXYiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJvZl9ldmVudCIsInZhbHVlIiwidmFsdWUkMyIsInZhbHVlJDIiLCJ2YWx1ZSQxIiwidmFsdWUkMCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicmVxIiwiYyIsImNhbGxiYWNrIiwibm93IiwibGFzdCIsImR0IiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZ2V0X2VsZW1lbnRfY29udGVudCIsImZpbGUiLCJmb3JtX2VsZW1lbnRzIiwiaSQxIiwidDMxIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwibGlzdCIsImVtcHR5X2Zvcm1fY29udGVudHMiLCJwb3N0X2Zvcm1fY29udGVudHMiLCJjb250ZW50cyIsImdldF9mb3JtX2NvbnRlbnRzIiwicmVhZHlzdGF0ZWNoYW5nZSIsInRpbWVvdXQiLCJjcmVhdGUiLCJpbXBvcnRfc2NyaXB0cyIsInNjcmlwdHMiLCJzZXRfb25tZXNzYWdlIiwianNfaGFuZGxlciIsInBvc3RfbWVzc2FnZSIsIndlYlNvY2tldCIsImlzX3N1cHBvcnRlZCIsImRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCJnZXRDb250ZXh0IiwiY3R4IiwiZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiaW50ZXJydXB0IiwicGx1c19yZSIsInVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIiwidDE2IiwidXJsZGVjb2RlIiwidXJsZW5jb2RlIiwid2l0aF9wbHVzIiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsIm4iLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsInQzIiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwYXRoX3N0ciIsInNzbCIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJvYnNlcnZlIiwiYm94IiwiZW50cnlfdHlwZXMiLCJlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0IiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsInJlbW92ZSIsImZpbmQiLCJrZXlzIiwicmV2aXZlciIsInVuc2FmZV9pbnB1dCIsIm1sSW50NjRfY29uc3RyIiwib3V0cHV0X3Jldml2ZXIiLCJvdXRwdXQiLCJzdHJpbmdfb2ZfbmFtZSIsIm5hbWVfb2Zfc3RyaW5nIiwicmdiX29mX25hbWUiLCJyZ2IiLCJoc2wiLCJzdHJpbmdfb2ZfdCIsImIkMCIsImckMCIsInIkMCIsImIkMSIsImckMSIsInIkMSIsImIkMiIsImckMiIsInIkMiIsImEkMSIsImgkMCIsImhleF9vZl9yZ2IiLCJibHVlIiwiZ3JlZW4iLCJyZWQiLCJpbl9yYW5nZSIsImpzX3Rfb2ZfanNfc3RyaW5nIiwidDEyIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInN5bWJvbCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDAiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsInRvX2FycmF5ZiIsImYiLCJhIiwib2ZfYXJyYXlmIiwidG9fbGlzdCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdGYiLCJvZl9saXN0ZiIsIm9wdGRlZiIsIngiLCJ0b19vcHRkZWYiLCJ4JDAiLCJ1bm9wdGRlZl9mIiwiZGVmIiwidW5vcHRkZWYiLCJjb252ZGVmIiwidG9fb3B0Iiwib3B0IiwiY29udm9wdCIsImpzX2xvZyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwiYXNzaWduIiwiYXNzaWduX2xpc3QiLCJyZW1vdmVfdW5kZWZpbmVkIiwibyIsImsiLCJjcmVhdGUiLCJhZGQiLCJ2IiwiYWRkX2xpc3QiLCJhZGRfbGlzdGYiLCJtYWtlIiwibWFrZWYiLCJyZW1vdmUiLCJmaW5kIiwia2V5cyIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwianRoZW4wIiwiZXJyb3IiLCJleG4kMCIsImVmIiwiZXJyb3IkMCIsImp0aGVuIiwianRoZW4wX29wdCIsInByb20iLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibG9nX3N0cjIiLCJzMSIsInMyIiwibG9nX3N0cjMiLCJzMyIsImRlYnVnIiwiZGVidWcyIiwiZGVidWczIiwiZGVidWdfc3RyIiwiZGVidWdfc3RyMiIsImRlYnVnX3N0cjMiLCJ3YXJuIiwid2FybjIiLCJ3YXJuMyIsIndhcm5fc3RyIiwid2Fybl9zdHIyIiwid2Fybl9zdHIzIiwiZXJyb3IyIiwiZXJyb3IzIiwiZXJyb3Jfc3RyIiwiZXJyb3Jfc3RyMiIsImVycm9yX3N0cjMiLCJiaWdJbnQiLCJvZl9zdHJpbmciLCJvZl9pbnQiLCJpIiwib2ZfaW50NjQiLCJvZl9uYXRpdmUiLCJvZl9mbG9hdCIsInRvX2xvY2FsZV9zdHJpbmciLCJvcHRpb25zIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsImxpc3RlbiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwiY3JlYXRlIiwic3RvcmUiLCJhZGQiLCJrZXkiLCJ4IiwicHV0IiwicmFuZ2UiLCJvbG93ZXIiLCJvdXBwZXIiLCJsb3dlciIsInVwcGVyIiwidXBwZXIkMSIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY291bnQiLCJrIiwiZ2V0Iiwib2ZfanMiLCJqcyIsImpzJDAiLCJnZXRfYWxsIiwiZ2V0X2tleSIsImdldF9hbGxfa2V5cyIsImRlbGV0ZSQwIiwiaXRlciIsImRpcmVjdGlvbiIsImMiLCJmb2xkIiwic3RhcnQiLCJhY2MiLCJjYWxsYmFjayQwIiwiaXRlcl9rZXlzIiwiZm9sZF9rZXlzIiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4IiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJmaWxlIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImJ1ZmZlciIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJhcHBlbmQiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMTk0IiwiZXJyb3Jfc291cmNlXzI2MyIsImVycm9yX3NvdXJjZV8yNzUiLCJlcnJvcl9zb3VyY2VfMzE3IiwiZXJyb3Jfc291cmNlXzQxNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImVxdWFsIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXF1YWwkMCIsImV2YWxfZmFpbCIsImxvYyIsImZtdCIsInMiLCJjdXN0b21fcHJpbnRmXzAwMSIsImVxdWFsX29wdGlvbiIsImEiLCJiIiwieSIsIngiLCJjb21wYXJlJDAiLCJjbXBfYSIsImFfMDAyIiwiYl8wMDMiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJuIiwic2V4cF9vZl90JDEiLCJvZl9hXzAxOSIsInNvcnRlZF8wMjEiLCJhcmdfMDIyIiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJibmRzXzAyMCIsImNyZWF0ZSIsImVxIiwieHMkMSIsInNvcnRlZCIsInMyIiwiczEiLCJ4cyQwIiwibGFzdF92YWx1ZSQxIiwibGFzdF9rZXkkMSIsImFjYyIsImxhc3Rfa2V5IiwibGFzdF92YWx1ZSIsInhzIiwibGFzdF92YWx1ZSQwIiwibGFzdF9rZXkkMCIsInNvcnRlZCQwIiwiZXhwb3NlIiwidCIsIm1hcCIsImYiLCJ2IiwiayIsInRvX21kNSIsIm9mX21kNSIsInNleHBfb2ZfdCQyIiwidF9vZl9zZXhwJDEiLCJ1dWlkIiwidSIsImludCQwIiwicGFpciIsImxpc3QiLCJsIiwiY29uc3RydWN0b3IiLCJzZXhwX29mX3QkMyIsIm9mX2FfMDk2IiwiYXJnMV8wOTgiLCJhcmcwXzA5NyIsInJlczBfMDk5IiwicmVzMV8xMDAiLCJhcmcxXzEwMiIsImFyZzBfMTAxIiwicmVzMF8xMDMiLCJyZXMxXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJhcmcwXzExMSIsInJlczBfMTEyIiwiYXJnMV8xMDgiLCJhcmcwXzEwNyIsInJlczBfMTA5IiwicmVzMV8xMTAiLCJhcmcwXzExNyIsInJlczBfMTE4IiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczBfMTE1IiwicmVzMV8xMTYiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiYXJnMV8xMjIiLCJhcmcwXzEyMSIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJhcmcxXzEyNiIsImFyZzBfMTI1IiwicmVzMF8xMjciLCJyZXMxXzEyOCIsImFyZzBfMTI5IiwicmVzMF8xMzAiLCJjb21wYXJlJDIiLCJhXzEzMiIsImJfMTMzIiwiYV8xMzQiLCJiXzEzNyIsImJfMTM1IiwiYV8xMzYiLCJhXzE0MCIsImFfMTM4IiwiYl8xNDEiLCJiXzEzOSIsIm4kMCIsImFfMTQyIiwiYl8xNDMiLCJhXzE0NCIsImJfMTQ1IiwiYV8xNDYiLCJiXzE0NyIsImFfMTQ4IiwiYl8xNDkiLCJhXzE1MCIsImJfMTUxIiwidF8xNTMiLCJ0XzE1MiIsInRfMTU1IiwidF8xNTQiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsInRfMTYxIiwidF8xNjAiLCJ0XzE2MyIsInRfMTYyIiwiYV8xNjQiLCJiXzE2NSIsImFfMTY2IiwiYl8xNjciLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsImFfMTc0IiwiYV8xNzIiLCJiXzE3NSIsImJfMTczIiwibiQxIiwiYV8xNzYiLCJiXzE3NyIsImFfMTgwIiwiYV8xNzgiLCJiXzE4MSIsImJfMTc5IiwibiQyIiwiYV8xODIiLCJiXzE4MyIsImFfMTg0IiwiYl8xODUiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJ0b19kaWdlc3QiLCJ0b19kaWdlc3QkMCIsIngkMiIsImVxdWFsJDEiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTg2IiwiYl8xODciLCJiXzE4OSIsImFfMTg4IiwiYV8xOTAiLCJiXzE5MSIsInNleHBfb2ZfdDAiLCJhcmcwXzIwMSIsInJlczBfMjAyIiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkNCIsIm9mX3N0cmluZyQxIiwidG9fc3RyaW5nJDIiLCJzeW1ib2wiLCJjb21wYXJlJDMiLCJlcXVhbCQyIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkNSIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDMiLCJjb21wYXJhdG9yIiwiZXF1YWwkMyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ2IiwiY3JlYXRlJDMiLCJ0cmlwcyIsImdpZCIsIm1lbWJlcnMiLCJ2cyIsImxvb2t1cCIsImciLCJjdXN0b21fcHJpbnRmXzM0NSIsInNjaGVtZSIsImVxdWFsJDUiLCJhXzM0NiIsImJfMzQ3IiwiYV8zNDYkMCIsImJfMzQ3JDAiLCJhXzM0OCIsImJfMzUxIiwiYl8zNDkiLCJhXzM1MCIsImFfMzU0IiwiYV8zNTIiLCJiXzM1NSIsImJfMzUzIiwiYV8zNTYiLCJiXzM1NyIsImFfMzU4IiwiYl8zNTkiLCJhXzM2MCIsImJfMzYxIiwidF8zNjMiLCJ0XzM2MiIsInRfMzY1IiwidF8zNjQiLCJhXzM2NiIsImJfMzY3IiwiYV8zNjgiLCJiXzM2OSIsInRfMzcxIiwidF8zNzAiLCJ0XzM3MyIsInRfMzcyIiwiYV8zNzQiLCJiXzM3NSIsImFfMzc2IiwiYl8zNzciLCJhXzM3OCIsImJfMzc5IiwiYV8zODAiLCJiXzM4MSIsInRfMzgzIiwidF8zODIiLCJ0XzM4NSIsInRfMzg0IiwiYV8zODYiLCJiXzM4NyIsInJpZ2h0XzIzOCIsImxlZnRfMjM3IiwidF8yNDAiLCJ0XzIzOSIsInRfMjQyIiwidF8yNDEiLCJhXzI0MyIsImJfMjQ0IiwicmlnaHRfMjQ2IiwibGVmdF8yNDUiLCJ0XzI0OCIsInRfMjQ3IiwidF8yNTAiLCJ0XzI0OSIsImFfMzkwIiwiYl8zOTEiLCJ0XzM5MyIsInRfMzkyIiwidF8zOTUiLCJ0XzM5NCIsImFfMzk4IiwiYV8zOTYiLCJiXzM5OSIsImJfMzk3IiwiYV80MDAiLCJiXzQwMSIsImFfNDA2IiwiYV80MDQiLCJhXzMwMSIsImJfNDA3IiwiYl80MDUiLCJiXzQwMyIsImFfMzAzIiwiYl8zMDQiLCJ0XzMwNiIsInRfMzA1IiwidF8zMDgiLCJ0XzMwNyIsInRfMzEwIiwidF8zMDkiLCJ0XzMxMiIsInRfMzExIiwiYV8zMTMiLCJiXzMxNCIsImFfNDEwIiwiYl80MTEiLCJ0X29mX3NleHAkNSIsInNleHBfNDE2IiwidGFnXzQxNyIsInNleHBfYXJnc180MTgiLCJhcmcxXzQyMCIsImFyZzBfNDE5IiwicmVzMF80MjEiLCJyZXMxXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcxXzQyNyIsImFyZzBfNDI2IiwicmVzMF80MjgiLCJyZXMxXzQyOSIsInNleHBfYXJnc180NTciLCJhcmcwXzQ2MyIsImFyZzFfNDU5IiwiYXJnMF80NTgiLCJyZXMwXzQ2MCIsInJlczFfNDYxIiwic2V4cF8yNTUiLCJhdG9tXzI1MyIsInNleHBfYXJnc18yNTYiLCJhdG9tXzI1MyQwIiwiYXJnMF8yNjQiLCJhcmcxXzI1OSIsImFyZzBfMjU4IiwicmVzMF8yNjAiLCJyZXMxXzI2MSIsInJlczBfMjY1IiwiYXJnMF8yNzIiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNjkiLCJyZXMxXzI3MCIsInJlczBfMjczIiwicmVzMF80NjQiLCJzZXhwX2FyZ3NfNDc3IiwiYXJnMV80NzkiLCJhcmcwXzQ3OCIsInJlczBfNDgwIiwicmVzMV80ODEiLCJzZXhwX2FyZ3NfNDMyIiwiYXJnMF80MzgiLCJyZXMwXzQzOSIsInNleHBfNDM3IiwiYXJnMV80MzQiLCJhcmcwXzQzMyIsInJlczBfNDM1IiwicmVzMV80MzYiLCJzZXhwX2FyZ3NfNDg0IiwiYXJnMl80ODciLCJhcmcxXzQ4NiIsImFyZzBfNDg1Iiwic2V4cF8zMjciLCJhcmcxXzMyNCIsImFyZzBfMzIzIiwicmVzMF8zMjUiLCJhcmcxXzMxOSIsImFyZzBfMzE4IiwicmVzMF8zMjAiLCJyZXMxXzMyMSIsInJlczFfMzI2IiwicmVzMF80ODgiLCJyZXMxXzQ4OSIsInJlczJfNDkwIiwic2V4cF9hcmdzXzQ1MiIsImFyZzBfNDUzIiwicmVzMF80NTQiLCJzZXhwX2FyZ3NfNDY3IiwiYXJnMF80NzMiLCJhcmcxXzQ2OSIsImFyZzBfNDY4IiwicmVzMF80NzAiLCJyZXMxXzQ3MSIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0MiIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwXzQ0NyIsImFyZzFfNDQ0IiwiYXJnMF80NDMiLCJyZXMwXzQ0NSIsInJlczFfNDQ2Iiwic2V4cF9vZl90JDciLCJhcmcxXzQ5MiIsImFyZzBfNDkxIiwicmVzMF80OTMiLCJyZXMxXzQ5NCIsImFyZzFfNDk2IiwiYXJnMF80OTUiLCJyZXMwXzQ5NyIsInJlczFfNDk4IiwiYXJnMF81MDMiLCJyZXMwXzUwNCIsImFyZzFfNTAwIiwiYXJnMF80OTkiLCJyZXMwXzUwMSIsInJlczFfNTAyIiwiYXJnMF81MDkiLCJyZXMwXzUxMCIsImFyZzFfNTA2IiwiYXJnMF81MDUiLCJyZXMwXzUwNyIsInJlczFfNTA4IiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsImFyZzBfNTE3IiwiYXJnMV81MTQiLCJhcmcwXzUxMyIsInJlczBfNTE1IiwicmVzMV81MTYiLCJ2XzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwidl8yODIiLCJhcmcxXzI4NCIsImFyZzBfMjgzIiwicmVzMF8yODUiLCJyZXMxXzI4NiIsInJlczBfNTE4IiwiYXJnMF81MjMiLCJhcmcxXzUyMCIsImFyZzBfNTE5IiwicmVzMF81MjEiLCJyZXMxXzUyMiIsInJlczBfNTI0IiwiYXJnMV81MjYiLCJhcmcwXzUyNSIsInJlczBfNTI3IiwicmVzMV81MjgiLCJhcmcyXzUzMSIsImFyZzFfNTMwIiwiYXJnMF81MjkiLCJtZW1iZXJzXzMzNSIsImxvY18zMzMiLCJnaWRfMzMxIiwiYXJnXzMzNiIsImFyZzFfMzQyIiwiYXJnMF8zNDEiLCJyZXMwXzM0MyIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzMzOSIsInJlczFfMzQwIiwicmVzMV8zNDQiLCJibmRzXzMzMCIsImFyZ18zMzQiLCJibmRzXzMzMCQwIiwiYXJnXzMzMiIsImJuZHNfMzMwJDEiLCJyZXMwXzUzMiIsInJlczFfNTMzIiwicmVzMl81MzQiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImlzX2N5Y2xpYyIsImlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nXyIsImxvb2t1cCQwIiwiYV81MzUiLCJiXzUzNiIsInRfNTM4IiwidF81MzciLCJ0XzU0MCIsInRfNTM5IiwiYXJnMV81NDIiLCJhcmcwXzU0MSIsInJlczBfNTQzIiwicmVzMV81NDQiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl81NDUiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJzdGFibGVfd2l0bmVzc19hcnJheSIsInN0YWJsZV93aXRuZXNzX2xhenlfdCIsInN0YWJsZV93aXRuZXNzX2xpc3QiLCJzdGFibGVfd2l0bmVzc19vcHRpb24iLCJzdGFibGVfd2l0bmVzc19yZWYiLCJvZl9zZXJpYWxpemFibGUiLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfYXJyYXkiLCJhciIsImVsc19wb3NfcmVmIiwiaSIsImJpbl93cml0ZV9oYXNodGJsIiwiYmluX3dyaXRlX2tleSIsImJpbl93cml0ZV92YWwiLCJwbGVuIiwiY250X3JlZiIsImNvbGxfaHRibCIsInJlc19wb3MiLCJiaW5fd3JpdGVfZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVfZmxvYXQ2NF92ZWMiLCJiaW5fd3JpdGVfZmxvYXQzMl9tYXQiLCJtIiwibGVuMSIsImxlbjIiLCJwb3MkMSIsImJpbl93cml0ZV9mbG9hdDY0X21hdCIsImJpbl93cml0ZV9iaWdzdHJpbmciLCJzIiwiYmluX3dyaXRlX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlX2ludF84Yml0IiwiYmluX3dyaXRlX2ludF8xNmJpdCIsImJpbl93cml0ZV9pbnRfMzJiaXQiLCJiaW5fd3JpdGVfaW50XzY0Yml0IiwiYmluX3dyaXRlX2ludDY0X2JpdHMiLCJiaW5fd3JpdGVfbmV0d29yazE2X2ludCIsImJpbl93cml0ZV9uZXR3b3JrMzJfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZV9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfYXJyYXkiLCJlbCQxIiwibWF5YmVfZmxvYXQiLCJlbCQwIiwiZmlyc3QiLCJyZXMiLCJiaW5fcmVhZF9oYXNodGJsIiwiYmluX3JlYWRfa2V5IiwiYmluX3JlYWRfdmFsIiwicmVhZF9rdl9wYWlyIiwiZWxzIiwiYmluX3JlYWRfZmxvYXQzMl92ZWMiLCJ2ZWMiLCJiaW5fcmVhZF9mbG9hdDY0X3ZlYyIsImJpbl9yZWFkX2Zsb2F0MzJfbWF0IiwibWF0IiwiYmluX3JlYWRfZmxvYXQ2NF9tYXQiLCJiaW5fcmVhZF9iaWdzdHJpbmciLCJiaW5fcmVhZF92YXJpYW50X2ludCIsImJpbl9yZWFkX2ludF84Yml0IiwiYmluX3JlYWRfaW50XzE2Yml0IiwiYmluX3JlYWRfaW50XzMyYml0IiwiYmluX3JlYWRfaW50XzY0Yml0IiwiYmluX3JlYWRfaW50NjRfYml0cyIsImJpbl9yZWFkX25ldHdvcmsxNl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRfbmV0d29yazY0X2ludCIsImJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkX21kNSIsImJpbl9zaGFwZV91bml0IiwiYmluX3NoYXBlX2Jvb2wiLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2hhcGVfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NoYXBlX2ludDYzIiwiYmluX3NoYXBlX2ludDY0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaGFwZV9uYXQwIiwiYmluX3NoYXBlX2RpZ2VzdCIsImJpbl9zaGFwZV9mbG9hdDMyX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDY0X3ZlYyIsImJpbl9zaGFwZV92ZWMiLCJiaW5fc2hhcGVfZmxvYXQzMl9tYXQiLCJiaW5fc2hhcGVfZmxvYXQ2NF9tYXQiLCJiaW5fc2hhcGVfbWF0IiwiYmluX3NoYXBlX2JpZ3N0cmluZyIsImJpbl9zaGFwZV9mbG9hdGFycmF5IiwiYmluX3NoYXBlX3ZhcmlhbnRfaW50IiwiYmluX3NoYXBlX2ludF84Yml0IiwiYmluX3NoYXBlX2ludF8xNmJpdCIsImJpbl9zaGFwZV9pbnRfMzJiaXQiLCJiaW5fc2hhcGVfaW50XzY0Yml0IiwiYmluX3NoYXBlX2ludDY0X2JpdHMiLCJiaW5fc2hhcGVfbmV0d29yazE2X2ludCIsImJpbl9zaGFwZV9uZXR3b3JrMzJfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaGFwZV9uZXR3b3JrNjRfaW50IiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2hhcGVfb3B0aW9uIiwiYmluX3NoYXBlX2xpc3QiLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2hhcGVfaGFzaHRibCIsInkiLCJiaW5fc2hhcGVfbGF6eSIsImJpbl9zaGFwZV9wYWlyIiwiYmluX3NoYXBlX3RyaXBsZSIsInoiLCJiaW5fc2l6ZV91bml0IiwiYmluX3NpemVfYm9vbCIsImJpbl9zaXplX2NoYXIiLCJiaW5fc2l6ZV9tZDUiLCJiaW5fc2l6ZV9pbnRfbmF0MCIsImJpbl9zaXplX2ludF9uZWdhdGl2ZSIsImJpbl9zaXplX2ludCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9pbnQkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfdW5pdCQwIiwiYmluX3NpemVfYm9vbCQwIiwiYmluX3NpemVfY2hhciQwIiwiYmluX3NpemVfaW50JDEiLCJiaW5fc2l6ZV9uYXQwJDAiLCJiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMiLCJzaXplX2xlbiIsImJpbl9zaXplX3N0cmluZyIsImJpbl9zaXplX2J5dGVzIiwiYmluX3NpemVfbWQ1JDEiLCJiaW5fc2l6ZV9mbG9hdCQwIiwiZiIsImJpbl9zaXplX2ludDMyIiwiYmluX3NpemVfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX3JlZiIsImJpbl9zaXplX2xhenlfdCIsImJpbl9zaXplX29wdGlvbiIsImJpbl9zaXplX2ludDMyJDAiLCJiaW5fc2l6ZV9pbnQ2NCQwIiwiYmluX3NpemVfbmF0aXZlaW50IiwiYmluX3NpemVfcmVmJDAiLCJiaW5fc2l6ZV9lbCIsImJpbl9zaXplX2xhenlfdCQwIiwiYmluX3NpemVfb3B0aW9uJDAiLCJiaW5fc2l6ZV9wYWlyJDAiLCJiaW5fc2l6ZV9hIiwiYmluX3NpemVfYiIsImJpbl9zaXplX3RyaXBsZSQwIiwiYmluX3NpemVfYyIsImJpbl9zaXplX2xpc3QiLCJzaXplX2FjYyIsImxlbl9hY2MiLCJsZW5fYWNjJDAiLCJzaXplX2FjYyQwIiwiYmluX3NpemVfZmxvYXRhcnJheSIsImJpbl9zaXplX2FycmF5IiwibGVuJDAiLCJ0b3RhbF9sZW4iLCJ0b3RhbF9sZW5fcmVmIiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfdmFyaWFudF9pbnQiLCJiaW5fcmVhZGVyX3ZhcmlhbnRfaW50IiwiYmluX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlcl9pbnRfOGJpdCIsImJpbl9yZWFkZXJfaW50XzhiaXQiLCJiaW5faW50XzhiaXQiLCJiaW5fd3JpdGVyX2ludF8xNmJpdCIsImJpbl9yZWFkZXJfaW50XzE2Yml0IiwiYmluX2ludF8xNmJpdCIsImJpbl93cml0ZXJfaW50XzMyYml0IiwiYmluX3JlYWRlcl9pbnRfMzJiaXQiLCJiaW5faW50XzMyYml0IiwiYmluX3dyaXRlcl9pbnRfNjRiaXQiLCJiaW5fcmVhZGVyX2ludF82NGJpdCIsImJpbl9pbnRfNjRiaXQiLCJiaW5fd3JpdGVyX2ludDY0X2JpdHMiLCJiaW5fcmVhZGVyX2ludDY0X2JpdHMiLCJiaW5faW50NjRfYml0cyIsImJpbl93cml0ZXJfbmV0d29yazE2X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazE2X2ludCIsImJpbl9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50IiwiYmluX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiIsImJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyIiwiYmluX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZXJfbmV0d29yazY0X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludCIsImJpbl9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQiLCJiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9uZXR3b3JrNjRfaW50NjQiLCJjbnZfd3JpdGVyIiwiY252IiwidHBfY2xhc3MiLCJjbnZfcmVhZGVyIiwidnRhZyIsImZvcl9zaGFwZSIsImZvcl93cml0ZXIiLCJmb3JfcmVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX3dyaXRlX3NpemVfaGVhZGVyIiwiYmluX3JlYWRfc2l6ZV9oZWFkZXIiLCJiaW5fZHVtcCIsIndyaXRlciIsImhlYWRlciIsInBvc19sZW4iLCJ0b3RfbGVuIiwicG9zX2xlbiQwIiwiYnVmJDAiLCJidWYkMSIsImJpbl9yZWFkX3N0cmVhbSIsIm1heF9zaXplIiwicmVhZCIsInJlYWRlciIsIm1heF9zaXplJDAiLCJtc2ciLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsIm1heWJlX2Fubm90YXRlX3NoYXBlIiwibWF5YmVfdXVpZCIsInNoYXBlIiwidXVpZCIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInQiLCJiaW5fd3JpdGVfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fc2l6ZV90JDAiLCJiaW5fd3JpdGVfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaGFwZV9lbCIsImJpbl93cml0ZXIiLCJiaW5fcmVhZGVyIiwidHlwZV9jbGFzcyIsImJpbl9zaGFwZV9lbDEiLCJiaW5fc2hhcGVfZWwyIiwiYmluX3NpemVfZWwxIiwiYmluX3NpemVfZWwyIiwiYmluX3dyaXRlX2VsMSIsImJpbl93cml0ZV9lbDIiLCJiaW5fcmVhZF9lbDEiLCJiaW5fcmVhZF9lbDIiLCJiaW5fd3JpdGVyMSIsImJpbl93cml0ZXIyIiwiYmluX3JlYWRlcjEiLCJiaW5fcmVhZGVyMiIsInR5cGVfY2xhc3MxIiwidHlwZV9jbGFzczIiLCJiaW5fc2hhcGVfZWwzIiwiYmluX3NpemVfZWwzIiwiYmluX3dyaXRlX2VsMyIsImJpbl9yZWFkX2VsMyIsImJpbl93cml0ZXIzIiwiYmluX3JlYWRlcjMiLCJ0eXBlX2NsYXNzMyIsIm1heWJlX2NhbGxlcl9pZGVudGl0eSIsIndpdGhfbW9kdWxlX25hbWUiLCJtb2R1bGVfbmFtZSIsImZ1bmN0aW9uX25hbWUiLCJtb2R1bGVfbmFtZSQwIiwic2l6ZV9yZWYiLCJpZHgiLCJyZXN1bHQiLCJ0MSIsInQyIiwidDMiLCJiaW5fcmVhZF91bml0JDAiLCJ2aW50IiwiYmluX3JlYWRfYm9vbCQwIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRfaW50JDAiLCJiaW5fcmVhZF9mbG9hdCQwIiwiYmluX3JlYWRfZmxvYXRhcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJzdGFibGVfd2l0bmVzcyIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJzZXhwX29mX3QiLCJvZl9hXzAwMyIsInN0YXJ0X2EiLCJlbmRfYSIsIndyaXR0ZW4iLCJleHBlY3RlZF9zaXplIiwib2ZfYmluYWJsZSIsInRvX2JpbmFibGUiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsInRvX29wYXF1ZSIsImJsb2IiLCJvZl9vcGFxdWVfZXhuIiwiY29tcGFyZSQwIiwic2V4cF9vZl90JDAiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwic3RyaW5nX29mX2JpZ3N0cmluZyIsImJpbl9yZWFkX3QkNyIsImJpbl9yZWFkX3QkOCIsInRvX29wYXF1ZSQwIiwiYmluX3dyaXRlcl92Iiwib2Zfb3BhcXVlX2V4biQwIiwiYmluX3JlYWRlcl92IiwiZXJyb3IiLCJjb21wYXJlJDEiLCJzZXhwX29mX3QkMSIsImJpbl9zaXplX3QkNSIsImJpbl9yZWFkX3QkMTEiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRlcl90JDIiLCJwcmVfdGVzdF9ob29rIiwibmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCIsInQiLCJpbml0aWFsIiwiYW1fcnVubmluZ19lbnZfdmFyIiwidG9fc3RyaW5nIiwiY29tYmluZSIsInQxIiwidDIiLCJjb21iaW5lX2FsbCIsInRzIiwidGVzdF9tb2R1bGVzX3JhbiIsInRlc3RfbW9kdWxlc19mYWlsZWQiLCJ0ZXN0c19yYW4iLCJ0ZXN0c19mYWlsZWQiLCJkeW5hbWljX2xpYiIsImFjdGlvbiIsImZvcmNlX2Ryb3AiLCJnZXQiLCJjdXJyZW50IiwiZm91bmRfdGVzdCIsImlzX2N1cnJlbnQiLCJwIiwiY3VycmVudCQwIiwiY3VycmVudF90YWdzIiwidCIsIm0iLCJ2ZXJib3NlIiwic3RyaWN0Iiwic2hvd19jb3VudHMiLCJsaXN0X3Rlc3RfbmFtZXMiLCJkZWxheWVkX2Vycm9ycyIsInN0b3Bfb25fZXJyb3IiLCJsb2ciLCJ0aW1lX3NlYyIsInVzZV9jb2xvciIsImluX3BsYWNlIiwiZGlmZl9jb21tYW5kIiwic291cmNlX3RyZWVfcm9vdCIsImRpZmZfcGF0aF9wcmVmaXgiLCJkaXNwbGF5ZWRfZGVzY3IiLCJkZXNjciIsImZpbGVuYW1lIiwibGluZSIsInN0YXJ0X3BvcyIsImVuZF9wb3MiLCJkZXNjciQwIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJsIiwiaSIsInRhZyIsInMiLCJzdHIiLCJmaWxlIiwiaW5kZXgiLCJpbmRleCQwIiwiZmlsZW5hbWUkMCIsImluZGV4X3N0cmluZyIsImluZGV4JDEiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nIiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiY29tcGxldGVfdGFncyIsInVzZWQiLCJsaW5lX251bWJlcl9vcHQiLCJwb3NpdGlvbl9zdGFydCIsImVuZF9vZl9kZWZfZmlsZW5hbWUiLCJsaW5lX251bWJlciIsImZvdW5kIiwicmVxIiwiZHJvcHBlZCIsImRlc2NyJDEiLCJzdWJzdHJpbmciLCJzaG91bGRfcnVuIiwiZGVzY3IkMiIsImNoIiwicmVzdWx0JDAiLCJjYW1sX3JhbmRvbV9zdGF0ZSIsImJhc2VfcmFuZG9tX3N0YXRlIiwicmVzdWx0IiwiYmFja3RyYWNlJDAiLCJleG5fc3RyIiwic2VwIiwic2V0X2xpYl9hbmRfcGFydGl0aW9uIiwic3RhdGljX2xpYiIsIndoaWNoX3Rlc3RzIiwicmVxdWlyZXNfcGFydGl0aW9uIiwidW5zZXRfbGliIiwidGVzdCIsImIiLCJ0ZXN0X3VuaXQiLCJ0ZXN0X21vZHVsZSIsInBhcnRpYWxfdGFncyIsInByZXYiLCJ4IiwiZSQwIiwiZSIsInN1bW1hcml6ZSIsImsiLCJhY2MiLCJjb3VudCIsImNvdW50X3Rlc3RfbW9kdWxlcyIsInVudXNlZF90ZXN0cyIsImVycm9ycyIsInVzZV9jb2xvciQwIiwiaW5fcGxhY2UkMCIsImRpZmZfY29tbWFuZCQwIiwiZGlmZl9wYXRoX3ByZWZpeCQwIiwic291cmNlX3RyZWVfcm9vdCQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJsaXN0JDAiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxlZnRfY29sdW1uX3dpZHRoIiwid2lkdGgiLCJsZWZ0IiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwiY29udiIsIngiLCJsaWZ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJ1aWQiLCJuZXh0IiwibmFtZSIsImNvZGUiLCJoYXNoIiwic3RhdGljJDAiLCJjb21wYXJlJDAiLCJrMSIsImsyIiwiY21wIiwiYiQwIiwiYSQwIiwieXMiLCJ5IiwieHMiLCJuIiwiZXF1YWwkMCIsImhhc2gkMCIsInN0YXRpYyQxIiwia2V5IiwidCIsInVpZCQwIiwibmFtZSQwIiwiY3JlYXRlIiwic2FtZSIsIm5tMSIsIm5tMiIsInNhbWVfd2l0bmVzcyIsInNhbWVfd2l0bmVzc19leG4iLCJpbnQkMCIsIm1lbSIsInRhYmxlIiwic2V0IiwiZGF0YSIsImZpbmQiLCJkYXRhJDAiLCJmYWlsIiwidWlkX2EiLCJ1aWRfYiIsIm1zZyIsInQkMCIsIndpdG5lc3MiLCJ0eXBlbmFtZV9vZl90IiwiYyIsImQiLCJlIiwibGFiZWwiLCJhcml0eSIsImFyZ3NfbGFiZWxzIiwiaW5kZXgiLCJvY2FtbF9yZXByIiwidHlpZCIsInRyYXZlcnNlIiwiaW50ZXJuYWxfdXNlX29ubHkiLCJsZW5ndGgiLCJ0YWciLCJpc19wb2x5bW9ycGhpYyIsInZhbHVlIiwiZm9sZCIsImluaXQiLCJmIiwiaW50ZXJuYWxfdXNlX29ubHkkMCIsImxhYmVsJDAiLCJpbmRleCQwIiwiZ2V0IiwiaXNfbXV0YWJsZSIsInR5aWQkMCIsInRyYXZlcnNlJDAiLCJpbnRlcm5hbF91c2Vfb25seSQxIiwidHlwZW5hbWVfb2ZfdCQwIiwibGVuZ3RoJDAiLCJmaWVsZCIsImhhc19kb3VibGVfYXJyYXlfdGFnIiwiY3JlYXRlJDAiLCJmb2xkJDAiLCJpbnRlcm5hbF91c2Vfb25seSQyIiwibmFtZSQxIiwibmFtZSQyIiwibmFtZSQzIiwibmFtZSQ0IiwibmFtZSQ1IiwibmFtZSQ2IiwibmFtZSQ3IiwibmFtZSQ4IiwibmFtZSQ5IiwibmFtZSQxMCIsIm5hbWUkMTEiLCJuYW1lJDEyIiwibmFtZSQxMyIsIm5hbWUkMTQiLCJuYW1lJDE1IiwibmFtZSQxNiIsIm5hbWUkMTciLCJuYW1lJDE4IiwibmFtZSQxOSIsInR5cGVuYW1lX29mX2ludCIsInR5cGVuYW1lX29mX2ludDMyIiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9uYXRpdmVpbnQiLCJ0eXBlbmFtZV9vZl9jaGFyIiwidHlwZW5hbWVfb2ZfZmxvYXQiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl91bml0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfZnVuY3Rpb24iLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJyZXAiLCJyZXAkMCIsInJlcCQxIiwicmVwJDIiLCJyZXAkMyIsInJlcCQ0IiwibmFtZSQyMCIsImFyaXR5JDAiLCJjJDAiLCJiJDEiLCJhJDEiLCJkJDAiLCJjJDEiLCJiJDIiLCJhJDIiLCJ0eXBlbmFtZV9vZl90JDEiLCJybmciLCJkb20iLCJyZXAkNSIsInJlcCQ2IiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwicjEiLCJyMiQwIiwicjEkMCIsInIyJDEiLCJ4JDAiLCJyMSQxIiwicjIkMiIsIngkMSIsInIxJDIiLCJyMiQzIiwieCQyIiwicjEkMyIsInIyJDQiLCJ4JDMiLCJybmcxIiwiZG9tMSIsInJuZzIiLCJkb20yIiwidDEkMSIsInQyJDIiLCJiMiIsImEyIiwiYjEiLCJhMSIsImMyIiwiYjIkMCIsImEyJDAiLCJjMSIsImIxJDAiLCJhMSQwIiwiZDIiLCJjMiQwIiwiYjIkMSIsImEyJDEiLCJkMSIsImMxJDAiLCJiMSQxIiwiYTEkMSIsImUyIiwiZDIkMCIsImMyJDEiLCJiMiQyIiwiYTIkMiIsImUxIiwiZDEkMCIsImMxJDEiLCJiMSQyIiwiYTEkMiIsInIxJDQiLCJyMiQ1IiwicjEkNSIsInIyJDYiLCJuYW1lMSIsInIyJDciLCJuYW1lMiIsInIxJDciLCJ4JDQiLCJ0MSQzIiwidDIkMyIsInQyJDQiLCJyMSQ2IiwidDEkMiIsInIyIiwidDIkMSIsInByb29mIiwiaGVhZCIsInQkMSIsInR5cGVyZXBfb2ZfaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2Zfb3B0aW9uIiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9hcnJheSIsInR5cGVyZXBfb2ZfbGF6eV90IiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl90dXBsZTIiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTUiLCJ0eXBlcmVwX29mX2ludDMyIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl90dXBsZTAiLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfaW50NjMiLCJyZXByX29mX3BvbHlfdmFyaWFudCIsInZhcmlhbnQiLCJzaXplIiwicmVwciIsImhhc2hfdmFyaWFudCIsInMiLCJhY2N1IiwiaSIsImRvdWJsZV9hcnJheV92YWx1ZSIsImRvdWJsZSQwIiwic2ltcGxlIiwibWFwX3ZhcmlhbnQiLCJtYXAiLCJ0eXBlbmFtZSIsInBvbHltb3JwaGljIiwidGFncyIsInRhZyQwIiwiZmN0IiwiayIsImF0YWciLCJidGFnIiwibWFwX3JlY29yZCIsInJlY29yZCIsImZpZWxkcyIsImZpZWxkJDAiLCJnZXQkMCIsImFmaWVsZCIsImJmaWVsZCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwic2hhcmVkIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXB1dGF0aW9uIiwiY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UiLCJzaGFyZSIsInJlcXVpcmVkIiwidGFibGUkMCIsImNoZWNrX2RlcGVuZGVuY2llcyIsImltcGxlbWVudHMkMCIsIm1lc3NhZ2UiLCJyZXBsYWNlJDAiLCJtZW0kMCIsInRhYmxlMCIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInRhYmxlNSIsImlzX3JlZ2lzdGVyZWQiLCJpZGVudCIsInVuaXQiLCJyZWdpc3RlcjAiLCJjb21wdXRlIiwicmVnaXN0ZXIxIiwicmVnaXN0ZXIyIiwicmVnaXN0ZXIzIiwicmVnaXN0ZXI0IiwicmVnaXN0ZXI1IiwicmVnaXN0ZXIiLCJ0eXBlcmVwX29mX2EiLCJvZl90eXBlcmVwIiwiY29udGV4dCIsIm1lbW9fdGFibGUiLCJyZXAkMTEiLCJyZXAkMTIiLCJyZXAkMTMiLCJyZXAkMTQiLCJyZXAkMTUiLCJ0dXBsZSIsInJhIiwicmIiLCJyYSQwIiwicmIkMCIsInJjIiwicmEkMSIsInJiJDEiLCJyYyQwIiwicmQiLCJyYSQyIiwicmIkMiIsInJjJDEiLCJyZCQwIiwicmUiLCJjb250ZW50IiwibmFtZWQiLCJjdXN0b20iLCJjdXN0b20kMCIsImN1c3RvbSQxIiwicmVwJDciLCJjdXN0b20kMiIsImN1c3RvbSQzIiwicmVwJDgiLCJjdXN0b20kNCIsImN1c3RvbSQ1IiwicmVwJDkiLCJ0eXBlbmFtZV9vZl90JDIiLCJjdXN0b20kNiIsImN1c3RvbSQ3IiwicmVwJDEwIiwidHlwZW5hbWVfb2ZfdCQzIiwiY3VzdG9tJDgiLCJjdXN0b20kOSIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInR5cGVuYW1lX29mX25hbWVkIiwib2ZfcDEiLCJvZl9wMiIsIm9mX3AzIiwib2ZfcDQiLCJvZl9wNSIsInR5cGVyZXBfb2ZfdCIsImVycm9yX3NvdXJjZV8wMDIiLCJoYXNoX2ZvbGRfdCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiZXF1YWwiLCJyZWxhdGl2ZV90byIsImRpciIsInQiLCJ2IiwiZXhuJDAiLCJleG4iLCJkaXJfb3JfZXJyb3IiLCJpbml0aWFsX2RpciIsInRfb2Zfc2V4cCQwIiwieF8wMDMiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwibGluZV9zdGFydCIsImxpbmVfbnVtYmVyIiwiZmlsZW5hbWUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDEzIiwic3RhcnRfcG9zXzAxMSIsImxpbmVfc3RhcnRfMDA5IiwibGluZV9udW1iZXJfMDA3IiwiZmlsZW5hbWVfMDA1IiwiYXJnXzAxNCIsImJuZHNfMDA0IiwiYXJnXzAxMiIsImJuZHNfMDA0JDAiLCJhcmdfMDEwIiwiYm5kc18wMDQkMSIsImFyZ18wMDgiLCJibmRzXzAwNCQyIiwiYXJnXzAwNiIsImJuZHNfMDA0JDMiLCJjb21wYXJlJDAiLCJhXzAxNSIsImJfMDE2IiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwib2Zfc291cmNlX2NvZGVfcG9zaXRpb24iLCJwb3MiLCJzZXhwX29mX3QkMSIsImNvbXBhcmUkMiIsInRvX3N0cmluZyQwIiwib2Zfc3RyaW5nJDAiLCJzIiwiaSIsIm9mX2FfMDAxIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJjbXBfYSIsImFfMDA3IiwiYl8wMDgiLCJhXzAwOSIsImJfMDEwIiwiYV8wMTEiLCJiXzAxMiIsImFfMDEzIiwiYl8wMTQiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiYW1fcnVubmluZ19leHBlY3RfdGVzdCIsImdldF9jdXJyZW50Iiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0IiwibG9jYXRpb24iLCJwb3MiLCJwcmV2X3BvcyIsInByZXZfcG9zJDAiLCJsZW4iLCJmbHVzaCIsInNhdmVfYW5kX3JldHVybl9vdXRwdXQiLCJpbnN0YW5jZSIsInRlc3RzX3J1biQwIiwiZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIiwicyIsImdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIiwibGFzdF9vZnMiLCJuZXh0X29mcyIsImxvYyIsImFjYyIsIm9mcyIsIm91dHB1dHMiLCJ0cmFpbGluZ19vdXRwdXQiLCJzYXZlX291dHB1dCIsInRyYWlsaW5nIiwiYmxvY2tzIiwicnVuIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4Iiwic2FuaXRpemUiLCJzIiwicnVuIiwiZiIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzIiwidG9jcyQwIiwidG9jIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJnZXRfbWFueSIsInN0YWNrJDAiLCJzdGFjayIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImMkMSIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJjJDIiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5YWN0IiwiY2FtbF9wYXJzZXJfZW52IiwiXzIiLCJfMSIsInl5dGFibGVzIiwic2V4cCIsImxleGZ1biIsImxleGJ1ZiIsInNleHBfb3B0Iiwic2V4cHMiLCJyZXZfc2V4cHMiLCJzZXhwc19hYnMiLCJvY2FtbF9sZXhfdGFibGVzIiwiYnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJzY2FuX3N0cmluZyIsImxvY3MiLCJsb2NzJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsIm9jYW1sX2xleF9zdGF0ZSQyIiwibG9jcyQxIiwibG9jcyQyIiwic3RhcnQiLCJnZW5fbG9hZF9zZXhwX2xvYyIsInVuaXQiLCJvZl9pbnRfc3R5bGUiLCJvZl9mbG9hdF9zdHlsZSIsInRvX3N0cmluZyIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsInBwIiwicHBfbWFjaCIsInBwX2h1bV9pbmRlbnQiLCJwcF9odW0iLCJkZWZhdWx0X2luZGVudCIsIm1lc3NhZ2UiLCJjb21wYXJlIiwiZXF1YWwiLCJ0X3NleHBfZ3JhbW1hciIsIndpdGhfbmV3X2J1ZmZlciIsIm9jIiwib3V0cHV0X2h1bSIsIm91dHB1dF9odW1faW5kZW50IiwiaW5kZW50Iiwib3V0cHV0X21hY2giLCJwcm5nIiwidGVtcF9maWxlX25hbWUiLCJwcmVmaXgiLCJzdWZmaXgiLCJ2IiwicmFuZF9zdGF0ZSIsInJldCIsInJuZCIsIm9wZW5fdGVtcF9maWxlIiwicGVybSIsImNvdW50ZXIiLCJuYW1lIiwiZSQwIiwiZSIsImNvdW50ZXIkMCIsInNhdmVfb2Zfb3V0cHV0Iiwib3V0cHV0X2Z1bmN0aW9uIiwiZmlsZSIsInRtcF9uYW1lIiwib3V0cHV0X3NleHBfbmwiLCJkb19vdXRwdXQiLCJzYXZlX2h1bSIsInNhdmVfbWFjaCIsIm91dHB1dF9zZXhwc19ubCIsInNhdmVfc2V4cHNfaHVtIiwic2F2ZV9zZXhwc19tYWNoIiwic2Nhbl9zZXhwIiwic2Nhbl9zZXhwX29wdCIsInNjYW5fc2V4cHMiLCJzY2FuX3Jldl9zZXhwcyIsImdldF9tYWluX2J1ZiIsImJ1ZiQwIiwiYnVmJDEiLCJzY2FuX2ZvbGRfc2V4cHMiLCJpbml0IiwibWFpbiIsImFjYyIsImFjYyQwIiwic2Nhbl9pdGVyX3NleHBzIiwic2Nhbl9zZXhwc19jb252IiwiY29sbCIsInNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlIiwiY29udGFpbmluZ19zZXhwIiwibG9jYXRpb24iLCJpbnZhbGlkX3NleHAiLCJleG4iLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJnZXRfc2V4cCIsImdldF9yYW5nZSIsInJhbmdlIiwic2V4cF9vZl9jb252Iiwic2V4cF9vZl9hIiwiYSIsImZpbmRfc2V4cCIsImFubm90X3NleHAiLCJsb29wIiwic3ViX3NleHAiLCJhbm5vdHMiLCJyZXMiLCJleG4kMCIsImludmFsaWRfc2V4cCQwIiwiY3JlYXRlIiwidGV4dF9saW5lIiwidGV4dF9jaGFyIiwiYnVmX3BvcyIsImdsb2JhbF9vZmZzZXQiLCJmYWlsIiwibXNnIiwid2l0aF9idWZfcG9zIiwicGUiLCJwcG9zIiwiYW5ub3RhdGVfc2V4cCIsIml0ZXIiLCJzdGFydF9wb3MkMCIsImFubm90IiwiZW5kX3BvcyQwIiwicmFpc2VfZm91bmQiLCJzdGF0ZSIsInJhaXNlX2ZvdW5kJDAiLCJwb3NpdGlvbnMiLCJwYXJzZV9wb3Nfb2Zfc3RhdGUiLCJydW5fZmVlZF9sb29wIiwic3RhY2siLCJsZW4iLCJzdHIiLCJzdHJfbGVuIiwicG9zX2xlbiIsIm1heF9wb3MiLCJwcmV2aW91c19vZmZzZXQiLCJzdGFjayQwIiwicmVzdWx0Iiwib2Zmc2V0IiwibmV4dF9wb3MiLCJlcnIiLCJwYXJzZV9zdGF0ZSIsInBhcnNlX2Vycm9yIiwidXNlZF9yZWYiLCJwYXJzZV9mdW4iLCJjb250X3N0YXRlIiwicGFyc2UiLCJwYXJzZV9wb3MiLCJsZW4kMCIsInJhaXNlX2ZvdW5kJDEiLCJsZW5ndGgiLCJ1bnNhZmVfZmVlZF9sb29wIiwic3RhY2skMSIsInBvcyQxIiwicGFyc2Vfc3RyIiwicmFpc2VfZm91bmQkMiIsImxlbmd0aCQwIiwidW5zYWZlX2ZlZWRfbG9vcCQwIiwicGFyc2Vfc3RyX2Fubm90IiwicmFpc2VfZm91bmQkMyIsImxlbmd0aCQxIiwidW5zYWZlX2ZlZWRfbG9vcCQxIiwicGFyc2VfYmlnc3RyaW5nIiwicmFpc2VfZm91bmQkNCIsImxlbmd0aCQyIiwidW5zYWZlX2ZlZWRfbG9vcCQyIiwicGFyc2VfYmlnc3RyaW5nX2Fubm90IiwibWtfdGhpc19wYXJzZSIsIm15X3BhcnNlIiwicGFyc2VfcG9zJDAiLCJwYXJzZV9wb3MkMSIsImZlZWRfZW5kX29mX2lucHV0IiwidGhpc19wYXJzZSIsIndzX2J1ZiIsImdlbl9pbnB1dF9zZXhwIiwiaWMiLCJ0aGlzX3BhcnNlJDEiLCJzZXhwJDAiLCJ0aGlzX3BhcnNlJDAiLCJpbnB1dF9zZXhwIiwiZ2VuX2lucHV0X3Jldl9zZXhwcyIsInJldl9zZXhwc19yZWYiLCJidWZfbGVuIiwibGVuJDIiLCJ0aGlzX3BhcnNlJDIiLCJuX3BhcnNlZCIsIm5ld19sZW4iLCJsZW4kMSIsImlucHV0X3Jldl9zZXhwcyIsImlucHV0X3NleHBzIiwib2Zfc3RyaW5nX2JpZ3N0cmluZyIsImxvYyIsImdldF9sZW4iLCJnZXRfc3ViIiwiY29udF9zdGF0ZV9zdHIiLCJvZl9zdHJpbmciLCJvZl9zdHJpbmdfbWFueSIsImdldF9ic3RyX3N1Yl9zdHIiLCJic3RyIiwiaSIsImJzdHJfd3NfYnVmIiwib2ZfYmlnc3RyaW5nIiwiZ2VuX2xvYWRfcmV2X3NleHBzIiwiZXhjJDAiLCJleGMiLCJsb2FkX3Jldl9zZXhwcyIsImxvYWRfc2V4cHMiLCJnZW5fbG9hZF9zZXhwIiwic3RyaWN0IiwidGhpc19wYXJzZSQ0Iiwic2V4cCQxIiwidGhpc19wYXJzZSQzIiwiY29udF9zdGF0ZSQwIiwibG9hZF9zZXhwIiwiZ2V0X3NleHAkMCIsImdldF9yYW5nZSQwIiwic2V4cF9vZl9jb252JDAiLCJmaW5kX3NleHAkMCIsImlucHV0X3Jldl9zZXhwcyQwIiwiaW5wdXRfc2V4cCQwIiwiaW5wdXRfc2V4cHMkMCIsIm9mX3N0cmluZyQwIiwib2ZfYmlnc3RyaW5nJDAiLCJsb2FkX3Jldl9zZXhwcyQwIiwibG9hZF9zZXhwcyQwIiwibG9hZF9zZXhwJDAiLCJjb252IiwiYmFkX3NleHAiLCJiYWRfYW5ub3Rfc2V4cCIsImdldF9jb252X2V4biIsImxpbmUiLCJsb2FkX3NleHBfY29udiIsInN0cmljdCQwIiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzJDAiLCJmb3JnZXRfdG9jcyIsImZvcmdldF90b2MkMCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfb2Zfc2V4cCIsImZsb2F0X3ZlY19vZl9zZXhwIiwiZW1wdHlfZmxvYXRfdmVjIiwiY3JlYXRlX2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdDMyX3ZlYyIsImNyZWF0ZV9mbG9hdDY0X3ZlYyIsImVtcHR5X2Zsb2F0MzJfdmVjIiwiZW1wdHlfZmxvYXQ2NF92ZWMiLCJmbG9hdDMyX3ZlY19vZl9zZXhwIiwiZmxvYXQ2NF92ZWNfb2Zfc2V4cCIsInZlY19vZl9zZXhwIiwiY2hlY2tfdG9vX211Y2hfZGF0YSIsImRhdGEiLCJmbG9hdF9tYXRfb2Zfc2V4cCIsImNyZWF0ZV9mbG9hdF9tYXQiLCJzbiIsInNtIiwiZGF0YSQwIiwiZGF0YSQxIiwiY29sJDAiLCJjcmVhdGVfZmxvYXQzMl9tYXQiLCJjcmVhdGVfZmxvYXQ2NF9tYXQiLCJmbG9hdDMyX21hdF9vZl9zZXhwIiwiZmxvYXQ2NF9tYXRfb2Zfc2V4cCIsIm1hdF9vZl9zZXhwIiwic3RyaW5nX29mX29mX3NleHBfb2YiLCJ0b19zZXhwIiwib2Zfc3RyaW5nX29mX29mX3NleHAiLCJvZl9zZXhwIiwidF9vZl9zZXhwIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdW5pdCIsInVuaXRfb2Zfc2V4cCIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9ib29sIiwiYm9vbF9vZl9zZXhwIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfY2hhciIsImNoYXJfb2Zfc2V4cCIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQiLCJpbnRfb2Zfc2V4cCIsImludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsImZsb2F0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X29mX3NleHAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9vZl9zZXhwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfcmVmIiwicmVmX29mX3NleHAiLCJyZWZfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfb2Zfc2V4cCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9hcnJheSIsImFycmF5X29mX3NleHAiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImV4bl9zZXhwX2dyYW1tYXIiLCJjb2VyY2UiLCJ0YWciLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwicmVwciIsInNleHAxIiwicmVnaXN0ZXIyIiwic2V4cF9vZl9hcmcyIiwic2V4cDIiLCJyZWdpc3RlcjMiLCJzZXhwX29mX2FyZzMiLCJzZXhwMyIsInJlZ2lzdGVyNCIsInNleHBfb2ZfYXJnNCIsInNleHA0IiwicmVnaXN0ZXI1Iiwic2V4cF9vZl9hcmc1Iiwic2V4cDUiLCJyZWdpc3RlcjYiLCJzZXhwX29mX2FyZzYiLCJzZXhwNiIsInJlZ2lzdGVyNyIsInNleHBfb2ZfYXJnNyIsInNleHA3IiwicmVnaXN0ZXI4Iiwic2V4cF9vZl9hcmc4Iiwic2V4cDgiLCJyZWdpc3RlcjkiLCJzZXhwX29mX2FyZzkiLCJzZXhwOSIsInJlZ2lzdGVyMTAiLCJzZXhwX29mX2FyZzEwIiwic2V4cDEwIiwiaW50NjQkMCIsImdvbGRlbl9nYW1tYSIsInBvcGNvdW50Iiwib2ZfaW50Iiwic2VlZCIsImNvcHkiLCJvZGRfZ2FtbWEiLCJtaXhfYml0cyIsInoiLCJuIiwibWl4NjQiLCJ6JDAiLCJ6JDEiLCJuZXh0X3NlZWQiLCJ0IiwibmV4dCIsIm9mX3NlZWRfYW5kX2dhbW1hIiwiZ2FtbWEiLCJzZWVkJDAiLCJyYW5kb21faW50NjQiLCJyYW5kb21fc3RhdGUiLCJjcmVhdGUiLCJzcGxpdCIsIm5leHRfaW50NjQiLCJwZXJ0dXJiIiwic2FsdCIsImJvb2wiLCJzdGF0ZSIsIngiLCJpbnQ2NCIsImxvIiwiaGkiLCJyZW1haW5kZXJfbWF4aW11bSIsImRyYXckMCIsInJlbWFpbmRlciIsImRyYXdfbWF4aW11bSIsImRyYXciLCJpbnQkMCIsImxvJDAiLCJoaSQwIiwiaW50MzIiLCJuYXRpdmVpbnQiLCJpbnQ2MyIsImRvdWJsZV91bHAiLCJ1bml0X2Zsb2F0X2Zyb21faW50NjQiLCJ1bml0X2Zsb2F0IiwiZmxvYXQkMCIsInJhbmdlIiwibWlkIiwiZiIsImJpdHNfdG9fcmVwcmVzZW50IiwidCQwIiwibG9nX3VuaWZvcm0iLCJtaW5fYml0cyIsIm1heF9iaXRzIiwiYml0cyIsInRfc2V4cF9ncmFtbWFyIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsIm9mX2ludF9leG4iLCJ0b19pbnRfZXhuIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwidF9vZl9zZXhwIiwic2V4cF9vZl90Iiwib2Zfc3RyaW5nIiwidG9fc3RyaW5nIiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsInNpZ24iLCJpbnZhcmlhbnQiLCJvZl9zdHJpbmdfb3B0IiwidG9fc3RyaW5nX2h1bSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsImRlY3IiLCJpbmNyIiwib2ZfaW50MzJfZXhuIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50X2V4biIsIm9mX2Zsb2F0X3VuY2hlY2tlZCIsIm51bV9iaXRzIiwibWF4X3ZhbHVlIiwibWluX3ZhbHVlIiwic2hpZnRfcmlnaHRfbG9naWNhbCIsImNlaWxfcG93MiIsImZsb29yX3BvdzIiLCJjZWlsX2xvZzIiLCJmbG9vcl9sb2cyIiwiaXNfcG93MiIsImNseiIsImN0eiIsInN5bWJvbCIsImxub3QiLCJhYnMiLCJ6ZXJvIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDMiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzMyIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM0Iiwic3ltYm9sJDM1Iiwic3ltYm9sJDM2IiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5Iiwic3VtIiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwicmVjX2xpc3QiLCJ3IiwibiIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm1pbl9sZW5ndGgiLCJtYXhfbGVuZ3RoIiwidXBwZXJfYm91bmQiLCJtYXhfbGVuZ3RoJDAiLCJsZW4iLCJyZW1haW5pbmciLCJtYXhfaW5kZXgiLCJ1bml0IiwiYm9vbCIsIm9wdGlvbiIsInZhbHVlX3QiLCJlaXRoZXIiLCJmc3RfdCIsInNuZF90IiwicmVzdWx0Iiwib2tfdCIsImVycl90Iiwib2siLCJlcnIiLCJsaXN0X2dlbmVyaWMiLCJlbHRfZ2VuIiwibGlzdF9ub25fZW1wdHkiLCJsaXN0X3dpdGhfbGVuZ3RoIiwibGVuZ3RoIiwibGlzdF9maWx0ZXJlZCIsImVsdHMiLCJlbHRzJDAiLCJsZW5ndGhfb2ZfaW5wdXQiLCJsZW5ndGhfb2Zfb3V0cHV0IiwiaW5kaWNlcyIsImxpc3RfcGVybXV0YXRpb25zIiwicmVmIiwiY2hhcl91bmlmb3JtX2luY2x1c2l2ZSIsImNoYXJfdXBwZXJjYXNlIiwiY2hhcl9sb3dlcmNhc2UiLCJjaGFyX2RpZ2l0IiwiY2hhcl9wcmludF91bmlmb3JtIiwiY2hhcl91bmlmb3JtIiwiY2hhcl9hbHBoYSIsImNoYXJfYWxwaGFudW0iLCJjaGFyX3doaXRlc3BhY2UiLCJjaGFyX3ByaW50IiwiY2hhciQwIiwic21hbGxfaW50IiwiYWxsb3dfemVybyIsImxvd2VyX2JvdW5kIiwid2VpZ2h0ZWRfbG93Iiwid2VpZ2h0ZWRfaGlnaCIsInNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50Iiwic21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IiwiZ2VvbWV0cmljIiwicCIsImRlbm9taW5hdG9yIiwidW5pZm9ybSIsImV4cG9uZW50aWFsIiwiZmxvYXQkMCIsImludCQwIiwiaW50JDEiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsImxvZ191bmlmb3JtIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2dlb21ldHJpYyIsInVuaWZvcm0kMCIsImxvZ191bmlmb3JtJDAiLCJpbnQzMiIsImludDMyX3VuaWZvcm0iLCJpbnQzMl9pbmNsdXNpdmUiLCJpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSIsImludDMyX2xvZ19pbmNsdXNpdmUiLCJpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQzMl9nZW9tZXRyaWMiLCJ1bmlmb3JtJDEiLCJsb2dfdW5pZm9ybSQxIiwiaW50NjMiLCJpbnQ2M191bmlmb3JtIiwiaW50NjNfaW5jbHVzaXZlIiwiaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQ2M19sb2dfaW5jbHVzaXZlIiwiaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjNfZ2VvbWV0cmljIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDIiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzNiIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5IiwidW5pZm9ybSQyIiwibG9nX3VuaWZvcm0kMiIsImludDY0IiwiaW50NjRfdW5pZm9ybSIsImludDY0X2luY2x1c2l2ZSIsImludDY0X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjRfbG9nX2luY2x1c2l2ZSIsImludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2dlb21ldHJpYyIsInVuaWZvcm0kMyIsImxvZ191bmlmb3JtJDMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfdW5pZm9ybSIsIm5hdGl2ZWludF9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSIsIm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdiIsIm5hdGl2ZWludF9nZW9tZXRyaWMiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X25vcm1hbF9tYW50aXNzYSIsIm51bV9iaXRzIiwiYml0cyIsImZsb2F0X2V4cG9uZW50IiwiZmxvYXRfemVybyIsImxldF9zeW50YXhfMDEyIiwibGV0X3N5bnRheF8wMTMiLCJmbG9hdF9zdWJub3JtYWwiLCJtYW50aXNzYSIsImV4cG9uZW50IiwiZmxvYXRfbm9ybWFsIiwiZmxvYXRfaW5maW5pdGUiLCJsZXRfc3ludGF4XzAyMSIsImxldF9zeW50YXhfMDIyIiwiZmxvYXRfbmFuIiwiZmxvYXRfb2ZfY2xhc3MiLCJjIiwiZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyIsImZsb2F0X2Zpbml0ZSIsImZsb2F0X3dpdGhvdXRfbmFuIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiZWRpdF9pbnNlcnQiLCJwb3MiLCJzdHIiLCJlZGl0Iiwibl90aW1lcyIsInN0cmluZ19saWtlIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJiaWdhcnJheTJfZGltIiwibWF4X3RvdGFsX3NpemUiLCJhIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImIiLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsImRpbTIkMCIsInYiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImRyb3Bfa2V5cyIsImsiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsImhhbmRsZXJzIiwia2V5IiwiaW5wIiwiY2FsbGJhY2siLCJ2YWx1ZSIsImluamVjdCIsInYiLCJjYWxsZWQiLCJjYWxsYmFjayQwIiwiYSIsImhhbmRsZSIsInMiLCJwcmludF9zIiwiTmV2ZXIiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm9mX2Z1biIsImxhenkiLCJtYXAiLCJldmFsJDAiLCJ0JDAiLCJ0JDEiLCJsIiwiZiQwIiwidCQyIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDIiLCJoYW5kbGUkMCIsImhhbmRsZSQxIiwib25fcmVzcG9uc2UiLCJvZl9zeW5jX2Z1biIsIm1ha2UiLCJyZXF1ZXN0IiwicmVzcG9uZF90byIsInJlc3BvbnNlIiwibWFrZSQwIiwiZXZhbHVhdG9yIiwiY3JlYXRlIiwidXBvbiIsImhhbmRsZXIiLCJtYXRjaCIsIngiLCJmaWxsX2lmX2VtcHR5IiwicGVlayIsImhhbmRsZSQyIiwib2Zfc3Zhcl9mdW4iLCJjcmVhdGUkMCIsInF1ZXJpZXNfcGVuZGluZ19yZXNwb25zZSIsInF1ZXJ5IiwibWF5YmVfcmVzcG9uZCIsInJlc3AiLCJvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIiwicXJ0IiwibW9kX25hbWUiLCJtb2RfbmFtZSQwIiwibW9kX25hbWUkMSIsIm1vZF9uYW1lJDIiLCJtb2RfbmFtZSQzIiwibW9kX25hbWUkNCIsIm1vZF9uYW1lJDUiLCJtb2RfbmFtZSQ2IiwibW9kX25hbWUkNyIsIm1vZF9uYW1lJDgiLCJtb2RfbmFtZSQ5IiwibWF4X3ZhbHVlJDEyIiwibW9kX25hbWUkMTAiLCJyYWlzZV9jYW5ub3RfcmVwciIsInRvX3N0cmluZyIsIngiLCJ0cnVuY191bnNpZ25lZCIsImNvbnYiLCJsb2dhbmQiLCJtYXNrIiwiZXhuX3Vuc2lnbmVkIiwiZXF1YWwiLCJ5IiwidHJ1bmNfc2lnbmVkIiwic2hpZnRfbGVmdCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnQiLCJleG5fc2lnbmVkIiwiaWRlbnRpdHlfaWZfcG9zaXRpdmUiLCJncmVhdGVyX2VxdWFsIiwiemVybyIsIm9mX3NleHBfZXJyb3IiLCJ3aGF0Iiwic2V4cCIsInRvX2ludDMyIiwidG9faW50NjQiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJmdW5jIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsInR5cGVuYW1lX29mX3QiLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJ0cnVuYyIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwieCQwIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwibG9nYW5kNjQiLCJtYXNrNjQiLCJlcXVhbCQwIiwiZXF1YWw2NCIsInRvX3N0cmluZyQwIiwidG9fc3RyaW5nNjQiLCJ0cnVuYyQwIiwiZXhuIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50X2V4biQwIiwidG9fYmFzZV9pbnQkMCIsIm9mX3VpbnQxNl90cnVuYyIsIm9mX3VpbnQxNl9leG4iLCJvZl91aW50MzJfdHJ1bmMiLCJvZl91aW50MzJfZXhuIiwib2ZfdWludDYzX3RydW5jIiwib2ZfdWludDYzX2V4biIsIm9mX3VpbnQ2NF90cnVuYyIsIm9mX3VpbnQ2NF9leG4iLCJvZl9pbnQ4X3dyYXAiLCJvZl9pbnQ4X2V4biIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJxdWlja2NoZWNrX29ic2VydmVyJDAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJzeW1ib2wkMjkiLCJzeW1ib2wkMzAiLCJjb21wYXJlJDMiLCJoYXNoX2ZvbGRfdCQxIiwiZnVuYyQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwidHlwZW5hbWVfb2ZfdCQxIiwiemVybyQxIiwibWluX3ZhbHVlJDEiLCJtYXhfdmFsdWUkMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJ0cnVuYyQxIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50X2V4biQxIiwidG9fYmFzZV9pbnQkMSIsIm9mX2ludDgiLCJvZl9pbnQzMl90cnVuYyQwIiwib2ZfaW50MzJfZXhuJDAiLCJvZl9pbnQ2M190cnVuYyQwIiwib2ZfaW50NjNfZXhuJDAiLCJvZl9pbnQ2NF90cnVuYyQwIiwib2ZfaW50NjRfZXhuJDAiLCJvZl91aW50MTZfd3JhcCIsIm9mX3VpbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJjb21wYXJlJDUiLCJoYXNoX2ZvbGRfdCQyIiwiZnVuYyQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwidHlwZW5hbWVfb2ZfdCQyIiwiemVybyQyIiwibWluX3ZhbHVlJDIiLCJtYXhfdmFsdWUkMiIsImNvbnYkMCIsImxvZ2FuZCQwIiwibG9nYW5kNjQkMCIsIm1hc2skMCIsIm1hc2s2NCQwIiwiZXF1YWwkMiIsImVxdWFsNjQkMCIsInRvX3N0cmluZyQyIiwidG9fc3RyaW5nNjQkMCIsInRydW5jJDIiLCJleG4kMCIsIm9mX2Jhc2VfaW50X3RydW5jJDIiLCJvZl9iYXNlX2ludF9leG4kMiIsInRvX2Jhc2VfaW50JDIiLCJvZl91aW50OCIsIm9mX3VpbnQzMl90cnVuYyQwIiwib2ZfdWludDMyX2V4biQwIiwib2ZfdWludDYzX3RydW5jJDAiLCJvZl91aW50NjNfZXhuJDAiLCJvZl91aW50NjRfdHJ1bmMkMCIsIm9mX3VpbnQ2NF9leG4kMCIsIm9mX2ludDE2X3dyYXAiLCJvZl9pbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDIiLCJxdWlja2NoZWNrX3Nocmlua2VyJDIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJzeW1ib2wkNTUiLCJzeW1ib2wkNTYiLCJzeW1ib2wkNTciLCJzeW1ib2wkNTgiLCJzeW1ib2wkNTkiLCJzeW1ib2wkNjAiLCJzeW1ib2wkNjEiLCJzeW1ib2wkNjIiLCJjb21wYXJlJDciLCJoYXNoX2ZvbGRfdCQzIiwiZnVuYyQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsInR5cGVyZXBfb2ZfdCQzIiwidHlwZW5hbWVfb2ZfdCQzIiwiemVybyQzIiwibWluX3ZhbHVlJDMiLCJtYXhfdmFsdWUkMyIsInNoaWZ0X2xlZnQkMSIsInNoaWZ0X3JpZ2h0JDEiLCJzaGlmdCQxIiwidG9fc3RyaW5nJDMiLCJ0cnVuYyQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwibG9nYW5kJDEiLCJsb2dhbmQ2NCQxIiwibWFzayQxIiwibWFzazY0JDEiLCJlcXVhbCQ0IiwiZXF1YWw2NCQxIiwidG9fc3RyaW5nJDQiLCJ0b19zdHJpbmc2NCQxIiwidHJ1bmMkNCIsImV4biQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsIm9mX2Jhc2VfaW50X2V4biQzIiwidG9fYmFzZV9pbnRfZXhuIiwib2ZfdWludDgkMCIsIm9mX3VpbnQxNiIsIm9mX3VpbnQ2M190cnVuYyQxIiwib2ZfdWludDYzX2V4biQxIiwib2ZfdWludDY0X3RydW5jJDEiLCJvZl91aW50NjRfZXhuJDEiLCJvZl9pbnQzMl93cmFwIiwib2ZfaW50MzJfZXhuJDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ0IiwicXVpY2tjaGVja19vYnNlcnZlciQ0IiwicXVpY2tjaGVja19zaHJpbmtlciQ0Iiwic3ltYm9sJDg1Iiwic3ltYm9sJDg2Iiwic3ltYm9sJDg3Iiwic3ltYm9sJDg4Iiwic3ltYm9sJDg5Iiwic3ltYm9sJDkwIiwic3ltYm9sJDkxIiwic3ltYm9sJDkyIiwic3ltYm9sJDkzIiwic3ltYm9sJDk0IiwiY29tcGFyZSQxMSIsImhhc2hfZm9sZF90JDUiLCJmdW5jJDUiLCJoYXNoJDUiLCJ0X29mX3NleHAkNSIsInNleHBfb2ZfdCQ1IiwicXVpY2tjaGVja19nZW5lcmF0b3IkNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNSIsInR5cGVyZXBfb2ZfdCQ1IiwidHlwZW5hbWVfb2ZfdCQ1IiwiemVybyQ1IiwibWluX3ZhbHVlJDUiLCJtYXhfdmFsdWUkNSIsInRvX3N0cmluZyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2Iiwib2ZfYmFzZV9pbnQzMl90cnVuYyQwIiwib2ZfYmFzZV9pbnQzMl9leG4kMCIsInRvX2Jhc2VfaW50MzJfdHJ1bmMkMCIsInRvX2Jhc2VfaW50MzJfZXhuJDAiLCJvZl9iYXNlX2ludDY0X3RydW5jJDAiLCJvZl9iYXNlX2ludDY0X2V4biQwIiwidG9fYmFzZV9pbnQ2NCQwIiwib2ZfYmFzZV9pbnRfZXhuJDQiLCJ0b19iYXNlX2ludF9leG4kMCIsIm9mX3VpbnQ4JDEiLCJvZl91aW50MTYkMCIsIm9mX3VpbnQ2M190cnVuYyQyIiwib2ZfdWludDYzX2V4biQyIiwib2ZfdWludDY0X3RydW5jJDIiLCJvZl91aW50NjRfZXhuJDIiLCJvZl9pbnQzMl93cmFwJDAiLCJvZl9pbnQzMl9leG4kMiIsInNleHBfb2ZfdCQ2IiwidF9vZl9zZXhwJDYiLCJzIiwic3ltYm9sJDExMSIsInN5bWJvbCQxMTIiLCJzeW1ib2wkMTEzIiwic3ltYm9sJDExNCIsInN5bWJvbCQxMTUiLCJzeW1ib2wkMTE2Iiwic3ltYm9sJDExNyIsInN5bWJvbCQxMTgiLCJzeW1ib2wkMTE5Iiwic3ltYm9sJDEyMCIsInNpZ25lZCIsIm51bV9iaXRzIiwibnVtX2J5dGVzIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJzaWduZWQkMSIsIm51bV9iaXRzJDEiLCJudW1fYnl0ZXMkMSIsInNpZ25lZCQyIiwibnVtX2JpdHMkMiIsIm51bV9ieXRlcyQyIiwic2lnbmVkJDMiLCJudW1fYml0cyQzIiwibnVtX2J5dGVzJDMiLCJzaWduZWQkNCIsIm51bV9iaXRzJDQiLCJudW1fYnl0ZXMkNCIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsImltcGwiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ3IiwicXVpY2tjaGVja19vYnNlcnZlciQ3IiwicXVpY2tjaGVja19zaHJpbmtlciQ3IiwidF9vZl9zZXhwJDciLCJzZXhwX29mX3QkNyIsInR5cGVyZXBfb2ZfdCQ3IiwidHlwZW5hbWVfb2ZfdCQ3Iiwic2lnbmVkJDciLCJudW1fYml0cyQ3IiwibnVtX2J5dGVzJDciLCJ6ZXJvJDciLCJtaW5fdmFsdWUkNyIsIm1heF92YWx1ZSQ3IiwiaGFzaF9mb2xkX3QkNyIsImhhc2gkNyIsInN5bWJvbCQxMjciLCJzeW1ib2wkMTI4Iiwic3ltYm9sJDEyOSIsInN5bWJvbCQxMzAiLCJzeW1ib2wkMTMxIiwic3ltYm9sJDEzMiIsImVxdWFsJDciLCJjb21wYXJlJDE1IiwibWluJDciLCJtYXgkNyIsIm9mX2Jhc2VfaW50MzIkMSIsInRvX2Jhc2VfaW50MzIkMSIsIm9mX2ludDgkMiIsIm9mX2ludDE2JDEiLCJvZl9pbnQ2M190cnVuYyQzIiwib2ZfaW50NjNfZXhuJDMiLCJvZl9pbnQ2NF90cnVuYyQzIiwib2ZfaW50NjRfZXhuJDMiLCJvZl91aW50MzJfd3JhcCQxIiwib2ZfdWludDMyX2V4biQzIiwicXVpY2tjaGVja19nZW5lcmF0b3IkOCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF9vZl90JDgiLCJ0eXBlcmVwX29mX3QkOCIsInR5cGVuYW1lX29mX3QkOCIsInNpZ25lZCQ4IiwibnVtX2JpdHMkOCIsIm51bV9ieXRlcyQ4IiwiemVybyQ4IiwibWluX3ZhbHVlJDgiLCJtYXhfdmFsdWUkOCIsImhhc2hfZm9sZF90JDgiLCJoYXNoJDgiLCJzeW1ib2wkMTMzIiwic3ltYm9sJDEzNCIsInN5bWJvbCQxMzUiLCJzeW1ib2wkMTM2Iiwic3ltYm9sJDEzNyIsInN5bWJvbCQxMzgiLCJlcXVhbCQ4IiwiY29tcGFyZSQxNiIsIm1pbiQ4IiwibWF4JDgiLCJvZl9iYXNlX2ludDMyX3RydW5jJDEiLCJvZl9iYXNlX2ludDMyX2V4biQxIiwidG9fYmFzZV9pbnQzMl90cnVuYyQxIiwidG9fYmFzZV9pbnQzMl9leG4kMSIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50NjRfZXhuJDEiLCJ0b19iYXNlX2ludDY0JDEiLCJvZl9iYXNlX2ludF9leG4kNSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwib2ZfaW50OCQzIiwib2ZfaW50MTYkMiIsIm9mX2ludDMyIiwib2ZfaW50NjRfdHJ1bmMkNCIsIm9mX2ludDY0X2V4biQ0Iiwib2ZfdWludDYzX3dyYXAiLCJvZl91aW50NjNfZXhuJDQiLCJzeW1ib2wkMTQ1Iiwic3ltYm9sJDE0NiIsInN5bWJvbCQxNDciLCJzeW1ib2wkMTQ4Iiwic3ltYm9sJDE0OSIsInN5bWJvbCQxNTAiLCJzeW1ib2wkMTUxIiwic3ltYm9sJDE1MiIsInN5bWJvbCQxNTMiLCJzeW1ib2wkMTU0IiwiaGFzaF9mb2xkX3QkMTAiLCJmdW5jJDgiLCJoYXNoJDEwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTAiLCJxdWlja2NoZWNrX29ic2VydmVyJDEwIiwicXVpY2tjaGVja19zaHJpbmtlciQxMCIsImNvbXBhcmUkMTkiLCJ0eXBlcmVwX29mX3QkMTAiLCJ0eXBlbmFtZV9vZl90JDEwIiwiemVybyQxMCIsIm1pbl92YWx1ZSQxMCIsIm1heF92YWx1ZSQxMCIsImdyZWF0ZXJfZXF1YWwkMiIsInRvX3N0cmluZyQ4Iiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQyIiwib2ZfYmFzZV9pbnQ2NF9leG4kMiIsInRvX2Jhc2VfaW50NjQkMiIsIm9mX3VpbnQ4JDMiLCJvZl91aW50MTYkMiIsIm9mX3VpbnQzMiIsIm9mX3VpbnQ2NF90cnVuYyQ0Iiwib2ZfdWludDY0X2V4biQ0Iiwib2ZfaW50NjNfd3JhcCIsIm9mX2ludDYzX2V4biQ0Iiwic2V4cF9vZl90JDEwIiwidF9vZl9zZXhwJDEwIiwic3ltYm9sJDE1NSIsInN5bWJvbCQxNTYiLCJzeW1ib2wkMTU3Iiwic3ltYm9sJDE1OCIsInN5bWJvbCQxNTkiLCJzeW1ib2wkMTYwIiwic3ltYm9sJDE2MSIsInN5bWJvbCQxNjIiLCJzeW1ib2wkMTYzIiwic3ltYm9sJDE2NCIsImNvbXBhcmUkMjEiLCJoYXNoX2ZvbGRfdCQxMSIsImZ1bmMkOSIsImhhc2gkMTEiLCJ0X29mX3NleHAkMTEiLCJzZXhwX29mX3QkMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDExIiwidHlwZXJlcF9vZl90JDExIiwidHlwZW5hbWVfb2ZfdCQxMSIsInplcm8kMTEiLCJtaW5fdmFsdWUkMTEiLCJtYXhfdmFsdWUkMTEiLCJncmVhdGVyX2VxdWFsJDMiLCJ0b19zdHJpbmckOSIsIm9mX2ludDgkNCIsIm9mX2ludDE2JDMiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMyIsIm9mX2Jhc2VfaW50NjRfZXhuJDMiLCJ0b19iYXNlX2ludDY0X3RydW5jIiwidG9fYmFzZV9pbnQ2NF9leG4iLCJvZl91aW50OCQ0Iiwib2ZfdWludDE2JDMiLCJvZl91aW50MzIkMCIsIm9mX3VpbnQ2MyIsIm9mX2ludDY0X3dyYXAiLCJvZl9pbnQ2NF9leG4kNSIsInNleHBfb2ZfdCQxMiIsInRfb2Zfc2V4cCQxMiIsInN5bWJvbCQxODciLCJzeW1ib2wkMTg4Iiwic3ltYm9sJDE4OSIsInN5bWJvbCQxOTAiLCJzeW1ib2wkMTkxIiwic3ltYm9sJDE5MiIsInN5bWJvbCQxOTMiLCJzeW1ib2wkMTk0Iiwic3ltYm9sJDE5NSIsInN5bWJvbCQxOTYiLCJnZXRfaW50OCIsInQiLCJwb3MiLCJnZXRfdWludDgiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQxNl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQzMl9iZSIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwiZ2V0X3VpbnQ2NF9sZSIsImdldF91aW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfaW50OCIsInNldF91aW50MTZfbGUiLCJzZXRfdWludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDE2X2JlIiwic2V0X2ludDMyX2xlIiwieCQxIiwic2V0X2ludDMyX2JlIiwic2V0X3VpbnQzMl9sZSIsInNldF91aW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDY0X2xlIiwic2V0X3VpbnQ2NF9iZSIsImdldF9pbnQ4JDAiLCJnZXRfdWludDgkMCIsImdldF9pbnQxNl9sZSQwIiwiZ2V0X2ludDE2X2JlJDAiLCJnZXRfdWludDE2X2xlJDAiLCJnZXRfdWludDE2X2JlJDAiLCJnZXRfaW50MzJfbGUkMCIsImdldF9pbnQzMl9iZSQwIiwiZ2V0X3VpbnQzMl9sZSQwIiwiZ2V0X3VpbnQzMl9iZSQwIiwiZ2V0X2ludDY0X2xlJDAiLCJnZXRfaW50NjRfYmUkMCIsImdldF91aW50NjRfbGUkMCIsImdldF91aW50NjRfYmUkMCIsInNldF9pbnQ4JDAiLCJzZXRfdWludDgkMCIsInNldF9pbnQxNl9sZSQwIiwic2V0X2ludDE2X2JlJDAiLCJzZXRfdWludDE2X2xlJDAiLCJzZXRfdWludDE2X2JlJDAiLCJzZXRfaW50MzJfbGUkMCIsInNldF9pbnQzMl9iZSQwIiwic2V0X3VpbnQzMl9sZSQwIiwic2V0X3VpbnQzMl9iZSQwIiwic2V0X2ludDY0X2xlJDAiLCJzZXRfaW50NjRfYmUkMCIsInNldF91aW50NjRfbGUkMCIsInNldF91aW50NjRfYmUkMCIsImdldF9pbnQ4JDEiLCJnZXRfdWludDgkMSIsImdldF9pbnQxNl9sZSQxIiwiZ2V0X2ludDE2X2JlJDEiLCJnZXRfdWludDE2X2xlJDEiLCJnZXRfdWludDE2X2JlJDEiLCJnZXRfaW50MzJfbGUkMSIsImdldF9pbnQzMl9iZSQxIiwiZ2V0X3VpbnQzMl9sZSQxIiwiZ2V0X3VpbnQzMl9iZSQxIiwiZ2V0X2ludDY0X2xlJDEiLCJnZXRfaW50NjRfYmUkMSIsImdldF91aW50NjRfbGUkMSIsImdldF91aW50NjRfYmUkMSIsImdldF9pbnQ4JDIiLCJnZXRfdWludDgkMiIsImdldF9pbnQxNl9sZSQyIiwiZ2V0X2ludDE2X2JlJDIiLCJnZXRfdWludDE2X2xlJDIiLCJnZXRfdWludDE2X2JlJDIiLCJnZXRfaW50MzJfbGUkMiIsImdldF9pbnQzMl9iZSQyIiwiZ2V0X3VpbnQzMl9sZSQyIiwiZ2V0X3VpbnQzMl9iZSQyIiwiZ2V0X2ludDY0X2xlJDIiLCJnZXRfaW50NjRfYmUkMiIsImdldF91aW50NjRfbGUkMiIsImdldF91aW50NjRfYmUkMiIsImxvYyQwIiwibG9jIiwic3ByaW50ZiIsImFyY2hfc2l4dHlmb3VyIiwiYXJjaF9iaWdfZW5kaWFuIiwibm90X29uXzMyYml0IiwiY3JlYXRlIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic2l6ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyQwIiwibGVuZ3RoIiwiaW5pdCIsIm4iLCJmIiwidCIsImkiLCJjaGVja19hcmdzIiwicG9zIiwibGVuIiwiYnN0ciIsImJzdHJfbGVuJDAiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwiY2hyIiwibGVuJDAiLCJyZXMiLCJtZW1tZW0iLCJoYXlzdGFjayIsIm5lZWRsZSIsImhheXN0YWNrX2xlbiIsIm5lZWRsZV9sZW4iLCJoYXlzdGFja19wb3MiLCJuZWVkbGVfcG9zIiwiaGF5c3RhY2tfbGVuJDAiLCJuZWVkbGVfbGVuJDAiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsInVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCIsInJlYWRfaW50NjRfbG9jYWwiLCJyZWFkX2ludDY0X3N3YXBfbG9jYWwiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCQwIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCQwIiwicmVhZF9pbnQ2NF9sb2NhbCQwIiwiZ2V0X2ludDY0X3RfbGUiLCJnZXRfaW50NjRfdF9iZSIsInJlYWRfaW50NjRfc3dhcCQwIiwic2V0X2ludDY0X3RfYmUiLCJzZXRfaW50NjRfdF9sZSIsImludDY0X2NvbnZfZXJyb3IiLCJ1aW50NjRfY29udl9lcnJvciIsImludDY0X3RvX2ludF9leG4iLCJ1aW50NjRfdG9faW50X2V4biIsInVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9sZV9leG4iLCJnZXRfaW50NjRfYmVfZXhuIiwiZ2V0X2ludDY0X2xlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2JlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2xlX2V4biIsImdldF91aW50NjRfYmVfZXhuIiwiZ2V0X3VpbnQ2NF9sZV9leG4iLCJzZXRfdWludDY0X2JlX2V4biIsInNldF91aW50NjRfbGVfZXhuIiwidW5zYWZlX3NldF91aW50OCIsInVuc2FmZV9zZXRfaW50OCIsIm4kMCIsInVuc2FmZV9nZXRfdWludDgiLCJ1bnNhZmVfZ2V0X2ludDgiLCJzZXRfdWludDhfZXhuIiwic2V0X2ludDhfZXhuIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDgiLCJ1aW50MzJfb2ZfaW50MzJfdCIsInVuc2FmZV9zZXRfdWludDMyX2xlIiwidW5zYWZlX3NldF91aW50MzJfYmUiLCJ1bnNhZmVfZ2V0X3VpbnQzMl9sZSIsInVuc2FmZV9nZXRfdWludDMyX2JlIiwic2V0X3VpbnQzMl9sZV9leG4iLCJzZXRfdWludDMyX2JlX2V4biIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X3VpbnQ4JDAiLCJzZXRfdWludDgiLCJnZXRfdWludDE2X25lIiwic2V0X3VpbnQxNl9uZSIsImdldF9pbnQzMl9uZSIsInNldF9pbnQzMl9uZSIsImdldF9pbnQ2NF9uZSIsInNldF9pbnQ2NF9uZSIsImdldF91aW50OCQyIiwic2V0X3VpbnQ4JDEiLCJnZXRfdWludDE2X25lJDAiLCJzZXRfdWludDE2X25lJDAiLCJnZXRfaW50MzJfbmUkMCIsInNldF9pbnQzMl9uZSQwIiwiZ2V0X2ludDY0X25lJDAiLCJzZXRfaW50NjRfbmUkMCIsImVsdDEiLCJlbHQyIiwiZXF1YWwiLCJvZl9ib29sIiwibGVuZ3RoIiwiY3JlYXRlX2Jvb2wiLCJnZXQiLCJzZXQiLCJvdmVybGFwcGluZ19zcmNfZHN0IiwibGVuZ3RoJDAiLCJnZXQkMCIsInNldCQwIiwiY3JlYXRlX2Jvb2wkMCIsInJvb3QiLCJjb21wYXJhdG9yIiwiY2xhbXAiLCJjbGFtcF9leG4iLCJiZXR3ZWVuIiwiZGVzY2VuZGluZyIsImFzY2VuZGluZyIsIm1heCIsIm1pbiIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJ0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfdCIsInRfb2Zfc2V4cCIsImhhc2giLCJoYXNoX2ZvbGRfdCIsImNoZWNrX3N1ZmZpeCIsImNob3BfZXh0ZW5zaW9uIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAiLCJjb25jYXQiLCJwMSIsInAyIiwicyQxIiwicyQyIiwicyIsInMkMCIsInRvX2Fic29sdXRlX2V4biIsInJlbGF0aXZlX3RvIiwic3BsaXQiLCJpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQiLCJzcGxpdF9leHRlbnNpb24iLCJmbiIsImZuJDAiLCJwYXRoIiwiZm4kMSIsImRpciIsImV4dCIsImJhc2VfZm4iLCJleHQkMCIsImZuJDIiLCJkaXIkMCIsImZuJDMiLCJwYXJ0cyIsImZpbGVuYW1lIiwiYWNjIiwiZmlsZW5hbWUkMCIsImZpbGVuYW1lJDEiLCJhY2MkMCIsIm9mX3BhcnRzIiwicmVzdCIsIm9mX2Fic29sdXRlX2V4biIsImEiLCJiIiwiYV9wYXJ0cyIsImJfcGFydHMiLCJhX3N1ZmZpeCIsImJfc3VmZml4IiwidDIiLCJoMiIsInQxIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJzZXhwX29mX3QiLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwieF8wMDMiLCJ0eXBlX2lkMSIsInR5cGVfaWQyIiwibmFtZV9vZl9rZXkiLCJrZXkiLCJ1aWRfb2Zfa2V5Iiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJkYXRhIiwidHlwZV9pZF9uYW1lIiwidHlwZV9pZF91aWQiLCJjb21wYXJlIiwidDEiLCJ0MiIsImMiLCJ0b19hbGlzdCIsInQiLCJzZXhwX29mX3QkMSIsInhfMDA4IiwicGFja2VkIiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsInNldCIsIm1lbV9ieV9pZCIsImlkIiwibWVtIiwicmVtb3ZlX2J5X2lkIiwicmVtb3ZlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJpc19lbXB0eSIsImZpbmQiLCJ2YWx1ZSIsImtleSQwIiwiZmluZF9leG4iLCJhZGQiLCJhZGRfZXhuIiwidCQwIiwiY2hhbmdlX2V4biIsInVwZGF0ZSIsImNoYW5nZSIsIm9yaWciLCJuZXh0IiwiZiIsIm9mX2FsaXN0X2V4biIsInAiLCJvZl9hXzAxMSIsIm9mX2FfMDEyIiwieF8wMTMiLCJ4XzAxNCIsIm9mX2FfMDE3IiwidHlwZV9lcXVhbCIsImNyZWF0ZSIsImRlZmF1bHQkMCIsIm5hbWUiLCJzZXhwX29mIiwiZmluZCQwIiwic2V0JDAiLCJjaGFuZ2UkMCIsImNyZWF0ZSQwIiwiaW5pdCIsImlkJDAiLCJmaW5kJDEiLCJzZXQkMSIsImNoYW5nZSQxIiwiYWRkJDAiLCJhY2MiLCJjcmVhdGUkMSIsInhzIiwieCIsImlkJDEiLCJtZXJnZSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsImRhdGEkMCIsImVwcmludGYiLCJwcmludGYiLCJwcmludF9zIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfZW5kbGluZSIsInByZXJyX2VuZGxpbmUiLCJzcHJpbnRmIiwiZmFpbHdpdGhmIiwia3NwcmludGYiLCJhbGwiLCJjb21wYXJlIiwic2V4cF9vZl90IiwidG9fc3RyaW5nIiwidCIsImZsYWdfbmFtZSIsImVycm9yX3NvdXJjZV8wMjIiLCJlcnJvcl9zb3VyY2VfMDY3IiwiZXJyb3Jfc291cmNlXzA4OCIsImVycm9yX3NvdXJjZV8xMDQiLCJlcnJvcl9zb3VyY2VfMTE4IiwiZXJyb3Jfc291cmNlXzE0NSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMjA2IiwiZXJyb3Jfc291cmNlXzIyMiIsImVycm9yX3NvdXJjZV8yMzYiLCJlcnJvcl9zb3VyY2VfMjYxIiwiZXJyb3Jfc291cmNlXzI5MCIsImVycm9yX3NvdXJjZV8zMjIiLCJlcnJvcl9zb3VyY2VfMzQ3IiwiZXJyb3Jfc291cmNlXzM3MiIsImVycm9yX3NvdXJjZV80MTEiLCJlcnJvcl9zb3VyY2VfNDU2IiwiZW51bWVyYXRlXzQ3NCIsImVudW1lcmF0ZV80NzUiLCJuYW1lcyIsIm1heWJlX21pc3NpbmdfcHJlZml4IiwibWF5YmVfbWlzc2luZ19zdWZmaXgiLCJtYXliZV9tb3JlX3N1ZmZpeCIsIm5hbWVzJDAiLCJlcnJvcl9zb3VyY2VfNDk5IiwiaW5kZW50YXRpb24iLCJzcGFjaW5nX2RvdCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfNTE3IiwibmFtZXMkMiIsImVycm9yX3NvdXJjZV81NDYiLCJuYW1lcyQzIiwiZXJyb3Jfc291cmNlXzU3NCIsImVycm9yX3NvdXJjZV82MDMiLCJ0X29mX3NleHAiLCJjb21wYXJlJDAiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDYkMCIsImJfMDA3JDAiLCJhXzAwOCIsImJfMDA5IiwiYV8wMTAiLCJiXzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsImFfMDE4IiwiYl8wMTkiLCJ0X29mX3NleHAkMCIsInNleHBfMDI0IiwidGFnXzAyNSIsInNleHBfYXJnc18wNDYiLCJhcmcwXzA0NyIsInJlczBfMDQ4Iiwic2V4cF9hcmdzXzA0MSIsImFyZzBfMDQyIiwicmVzMF8wNDMiLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4Iiwic2V4cF9hcmdzXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQ5IiwicmVzMF8wNTAiLCJhcmcwXzA1MSIsInJlczBfMDUyIiwiYXJnMF8wNTMiLCJyZXMwXzA1NCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4Iiwic3RhYmxlX3dpdG5lc3MiLCJpbnZhcmlhbnQiLCJ0JDAiLCJ0JDEiLCJ0cyIsInRfb2Zfc2V4cCQxIiwic2V4cCIsInVzYWdlIiwidXNhZ2UkMCIsInVzYWdlJDEiLCJjb21wYXJlJDEiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImFfMDYzIiwiYl8wNjQiLCJ0X29mX3NleHAkMiIsInNleHBfMDY5IiwidGFnXzA3MCIsInNleHBfYXJnc18wNzEiLCJhcmcwXzA3MiIsInJlczBfMDczIiwic2V4cF9hcmdzXzA3NiIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJzZXhwX29mX3QkMSIsImFyZzBfMDc5IiwicmVzMF8wODAiLCJhcmcwXzA4MSIsInJlczBfMDgyIiwic3RhYmxlX3dpdG5lc3MkMCIsImNvbXBhcmUkMiIsImFfMDgzIiwiYl8wODQiLCJuIiwibiQwIiwiYV8wODUiLCJiXzA4NiIsInRfb2Zfc2V4cCQzIiwieF8wODkiLCJhbGlhc2VzIiwiZG9jIiwibmFtZSIsInNleHBfb2ZfdCQyIiwiYWxpYXNlc18wOTUiLCJkb2NfMDkzIiwibmFtZV8wOTEiLCJhcmdfMDk2IiwiYm5kc18wOTAiLCJhcmdfMDk0IiwiYm5kc18wOTAkMCIsImFyZ18wOTIiLCJibmRzXzA5MCQxIiwic3RhYmxlX3dpdG5lc3MkMSIsImNvbXBhcmUkMyIsImFfMDk3IiwiYl8wOTgiLCJhXzA5OSIsImJfMTAwIiwibiQxIiwiYV8xMDEiLCJiXzEwMiIsInRfb2Zfc2V4cCQ0IiwieF8xMDUiLCJmbGFncyIsImFub25zIiwicmVhZG1lIiwic3VtbWFyeSIsInNleHBfb2ZfdCQzIiwiZmxhZ3NfMTE1IiwiYW5vbnNfMTEzIiwicmVhZG1lXzEwOSIsInN1bW1hcnlfMTA3IiwiYXJnXzExNiIsImJuZHNfMTA2IiwiYXJnXzExNCIsImJuZHNfMTA2JDAiLCJ2XzExMCIsImFyZ18xMTIiLCJibmRfMTExIiwiYm5kc18xMDYkMSIsImFyZ18xMDgiLCJibmRzXzEwNiQyIiwic3RhYmxlX3dpdG5lc3MkMiIsInRfb2Zfc2V4cCQ1IiwieF8xMTkiLCJzZXhwX29mX3QkNCIsImZsYWdzXzEyOSIsInVzYWdlXzEyNyIsInJlYWRtZV8xMjMiLCJzdW1tYXJ5XzEyMSIsImFyZ18xMzAiLCJibmRzXzEyMCIsImFyZ18xMjgiLCJibmRzXzEyMCQwIiwidl8xMjQiLCJhcmdfMTI2IiwiYm5kXzEyNSIsImJuZHNfMTIwJDEiLCJhcmdfMTIyIiwiYm5kc18xMjAkMiIsInN0YWJsZV93aXRuZXNzJDMiLCJ0b19sYXRlc3QiLCJvZl9sYXRlc3QiLCJncmFtbWFyIiwiZ3JvdXAiLCJjb21wYXJlJDQiLCJjbXBfYSIsImFfMTMxIiwiYl8xMzIiLCJhXzEzMyIsImJfMTM0IiwiYV8xMzUiLCJiXzEzNiIsImFfMTM3IiwiYl8xMzgiLCJ0XzE0MCIsInRfMTM5IiwidF8xNDIiLCJ0XzE0MSIsInRfb2Zfc2V4cCQ2Iiwib2ZfYV8xNDMiLCJ4XzE1MSIsInNleHBfMTUwIiwiYXJnMV8xNDciLCJhcmcwXzE0NiIsInJlczBfMTQ4IiwicmVzMV8xNDkiLCJzdWJjb21tYW5kcyIsInNleHBfb2ZfdCQ1Iiwib2ZfYV8xNTIiLCJzdWJjb21tYW5kc18xNjAiLCJyZWFkbWVfMTU2Iiwic3VtbWFyeV8xNTQiLCJhcmdfMTYxIiwiYXJnMV8xNjMiLCJhcmcwXzE2MiIsInJlczBfMTY0IiwicmVzMV8xNjUiLCJibmRzXzE1MyIsInZfMTU3IiwiYXJnXzE1OSIsImJuZF8xNTgiLCJibmRzXzE1MyQwIiwiYXJnXzE1NSIsImJuZHNfMTUzJDEiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYV9zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYiLCJ0X29mX3NleHAkNyIsIm9mX2FfMTc2IiwieF8xODQiLCJzZXhwXzE4MyIsImFyZzFfMTgwIiwiYXJnMF8xNzkiLCJyZXMwXzE4MSIsInJlczFfMTgyIiwic2V4cF9vZl90JDYiLCJvZl9hXzE4NSIsInN1YmNvbW1hbmRzXzE5MyIsInJlYWRtZV8xODkiLCJzdW1tYXJ5XzE4NyIsImFyZ18xOTQiLCJhcmcxXzE5NiIsImFyZzBfMTk1IiwicmVzMF8xOTciLCJyZXMxXzE5OCIsImJuZHNfMTg2Iiwidl8xOTAiLCJhcmdfMTkyIiwiYm5kXzE5MSIsImJuZHNfMTg2JDAiLCJhcmdfMTg4IiwiYm5kc18xODYkMSIsIm1hcCQwIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImFic19wYXRoIiwiZGlyIiwicGF0aCIsImNvbXBhcmUkNSIsImFfMTk5IiwiYl8yMDAiLCJhXzIwMSIsImJfMjAyIiwibiQyIiwiYV8yMDMiLCJiXzIwNCIsInRfb2Zfc2V4cCQ4IiwieF8yMDciLCJjaGlsZF9zdWJjb21tYW5kIiwicGF0aF90b19leGUiLCJ3b3JraW5nX2RpciIsInNleHBfb2ZfdCQ3IiwiY2hpbGRfc3ViY29tbWFuZF8yMTkiLCJwYXRoX3RvX2V4ZV8yMTciLCJ3b3JraW5nX2Rpcl8yMTUiLCJyZWFkbWVfMjExIiwic3VtbWFyeV8yMDkiLCJhcmdfMjIwIiwiYm5kc18yMDgiLCJhcmdfMjE4IiwiYm5kc18yMDgkMCIsImFyZ18yMTYiLCJibmRzXzIwOCQxIiwidl8yMTIiLCJhcmdfMjE0IiwiYm5kXzIxMyIsImJuZHNfMjA4JDIiLCJhcmdfMjEwIiwiYm5kc18yMDgkMyIsInN0YWJsZV93aXRuZXNzJDUiLCJ0b19sYXRlc3QkMSIsIm9mX2xhdGVzdCQxIiwidF9vZl9zZXhwJDkiLCJ4XzIyMyIsInNleHBfb2ZfdCQ4IiwicGF0aF90b19leGVfMjMzIiwid29ya2luZ19kaXJfMjMxIiwicmVhZG1lXzIyNyIsInN1bW1hcnlfMjI1IiwiYXJnXzIzNCIsImJuZHNfMjI0IiwiYXJnXzIzMiIsImJuZHNfMjI0JDAiLCJ2XzIyOCIsImFyZ18yMzAiLCJibmRfMjI5IiwiYm5kc18yMjQkMSIsImFyZ18yMjYiLCJibmRzXzIyNCQyIiwic3RhYmxlX3dpdG5lc3MkNiIsInRvX3YzIiwib2ZfdjMiLCJ0b19sYXRlc3QkMiIsIm9mX2xhdGVzdCQyIiwidF9vZl9zZXhwJDEwIiwieF8yMzciLCJzZXhwX29mX3QkOSIsInBhdGhfdG9fZXhlXzI0NSIsInJlYWRtZV8yNDEiLCJzdW1tYXJ5XzIzOSIsImFyZ18yNDYiLCJibmRzXzIzOCIsInZfMjQyIiwiYXJnXzI0NCIsImJuZF8yNDMiLCJibmRzXzIzOCQwIiwiYXJnXzI0MCIsImJuZHNfMjM4JDEiLCJzdGFibGVfd2l0bmVzcyQ3IiwidG9fdjIiLCJvZl92MiIsInRvX2xhdGVzdCQzIiwib2ZfbGF0ZXN0JDMiLCJjb21wYXJlJDYiLCJhXzI0NyIsImJfMjQ4IiwiYV8yNDckMCIsImJfMjQ4JDAiLCJhXzI0OSIsImJfMjUwIiwiYV8yNTEiLCJiXzI1MiIsImFfMjUzIiwiYl8yNTQiLCJhXzI1NyIsImFfMjU1IiwiYl8yNTgiLCJiXzI1NiIsInRfb2Zfc2V4cCQxMSIsInNleHBfMjYzIiwidGFnXzI2NCIsInNleHBfYXJnc18yNzAiLCJhcmcwXzI3MSIsInJlczBfMjcyIiwic2V4cF9hcmdzXzI3NSIsImFyZzFfMjc3IiwiYXJnMF8yNzYiLCJyZXMwXzI3OCIsInJlczFfMjc5Iiwic2V4cF9hcmdzXzI2NSIsImFyZzBfMjY2IiwicmVzMF8yNjciLCJzZXhwX29mX3QkMTAiLCJhcmcwXzI4MCIsInJlczBfMjgxIiwiYXJnMF8yODIiLCJyZXMwXzI4MyIsImFyZzFfMjg1IiwiYXJnMF8yODQiLCJyZXMwXzI4NiIsInJlczFfMjg3Iiwic3RhYmxlX3dpdG5lc3MkOCIsInRfb2Zfc2V4cCQxMiIsInNleHBfMjkyIiwidGFnXzI5MyIsInNleHBfYXJnc18zMDkiLCJhcmcwXzMxMCIsInJlczBfMzExIiwic2V4cF9hcmdzXzI5OSIsImFyZzBfMzAwIiwicmVzMF8zMDEiLCJzZXhwX2FyZ3NfMzA0IiwiYXJnMF8zMDUiLCJyZXMwXzMwNiIsInNleHBfYXJnc18yOTQiLCJhcmcwXzI5NSIsInJlczBfMjk2Iiwic2V4cF9vZl90JDExIiwiYXJnMF8zMTIiLCJyZXMwXzMxMyIsImFyZzBfMzE0IiwicmVzMF8zMTUiLCJhcmcwXzMxNiIsInJlczBfMzE3IiwiYXJnMF8zMTgiLCJyZXMwXzMxOSIsInRfb2Zfc2V4cCQxMyIsInNleHBfMzI0IiwidGFnXzMyNSIsInNleHBfYXJnc18zMzEiLCJhcmcwXzMzMiIsInJlczBfMzMzIiwic2V4cF9hcmdzXzMzNiIsImFyZzBfMzM3IiwicmVzMF8zMzgiLCJzZXhwX2FyZ3NfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsInNleHBfb2ZfdCQxMiIsImFyZzBfMzM5IiwicmVzMF8zNDAiLCJhcmcwXzM0MSIsInJlczBfMzQyIiwiYXJnMF8zNDMiLCJyZXMwXzM0NCIsInRvX2xhdGVzdCQ0IiwiYiIsImciLCJlIiwib2ZfbGF0ZXN0JDQiLCJ0aHVuayIsInRfb2Zfc2V4cCQxNCIsInNleHBfMzQ5IiwidGFnXzM1MCIsInNleHBfYXJnc18zNTYiLCJhcmcwXzM1NyIsInJlczBfMzU4Iiwic2V4cF9hcmdzXzM2MSIsImFyZzBfMzYyIiwicmVzMF8zNjMiLCJzZXhwX2FyZ3NfMzUxIiwiYXJnMF8zNTIiLCJyZXMwXzM1MyIsInNleHBfb2ZfdCQxMyIsImFyZzBfMzY0IiwicmVzMF8zNjUiLCJhcmcwXzM2NiIsInJlczBfMzY3IiwiYXJnMF8zNjgiLCJyZXMwXzM2OSIsInRvX2xhdGVzdCQ1Iiwib2ZfbGF0ZXN0JDUiLCJ0X29mX3NleHAkMTUiLCJzZXhwXzM3NCIsInRhZ18zNzUiLCJzZXhwX2FyZ3NfMzg2IiwiYXJnMF8zODciLCJyZXMwXzM4OCIsInNleHBfYXJnc18zODEiLCJhcmcwXzM4MiIsInJlczBfMzgzIiwic2V4cF9hcmdzXzM3NiIsImFyZzBfMzc3IiwicmVzMF8zNzgiLCJzZXhwX29mX3QkMTQiLCJhcmcwXzM4OSIsInJlczBfMzkwIiwiYXJnMF8zOTEiLCJyZXMwXzM5MiIsImFyZzBfMzkzIiwicmVzMF8zOTQiLCJ2MSIsInYwIiwidjIiLCJ2MyIsInYxJDAiLCJ2MiQwIiwidjMkMCIsIm9mX3ZlcnNpb25lZCIsImNvbXBhcmUkNyIsImFfMzk1IiwiYl8zOTYiLCJhXzM5NSQwIiwiYl8zOTYkMCIsImFfMzk3IiwiYl8zOTgiLCJhXzM5OSIsImJfNDAwIiwiYV80MDEiLCJiXzQwMiIsImFfNDAzIiwiYl80MDQiLCJhXzQwNSIsImJfNDA2IiwiYV80MDciLCJiXzQwOCIsInRfb2Zfc2V4cCQxNiIsInNleHBfNDEzIiwidGFnXzQxNCIsInNleHBfYXJnc180MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3Iiwic2V4cF9hcmdzXzQzMCIsImFyZzBfNDMxIiwicmVzMF80MzIiLCJzZXhwX2FyZ3NfNDIwIiwiYXJnMF80MjEiLCJyZXMwXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcwXzQyNiIsInJlczBfNDI3Iiwic2V4cF9hcmdzXzQxNSIsImFyZzBfNDE2IiwicmVzMF80MTciLCJzZXhwX29mX3QkMTUiLCJhcmcwXzQzOCIsInJlczBfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsImFyZzBfNDQyIiwicmVzMF80NDMiLCJhcmcwXzQ0NCIsInJlczBfNDQ1IiwiYXJnMF80NDYiLCJyZXMwXzQ0NyIsImNvbXBhcmUkOCIsImFfNDQ4IiwiYl80NDkiLCJhXzQ1MCIsImJfNDUxIiwiYV80NTIiLCJiXzQ1MyIsInRfb2Zfc2V4cCQxNyIsInNleHBfNDU4IiwidGFnXzQ1OSIsInNleHBfYXJnc180NjAiLCJhcmcwXzQ2MSIsInJlczBfNDYyIiwic2V4cF9hcmdzXzQ2NSIsImFyZzBfNDY2IiwicmVzMF80NjciLCJzZXhwX29mX3QkMTYiLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImNvbXBhcmUkOSIsImFfNDcyIiwiYl80NzMiLCJhY2MiLCJlbnVtZXJhdGVfNDc4IiwiZW51bWVyYXRlXzQ3OSIsImVudW1lcmF0ZV80NzciLCJlbnVtZXJhdGVfNDgwIiwiZW51bWVyYXRlXzQ3NiIsImFjYyQwIiwiZW51bWVyYXRlXzQ4MCQwIiwiYXRfbW9zdF9vbmNlIiwiciIsImF0X2xlYXN0X29uY2UiLCJhdF9tb3N0X29uY2UkMCIsInYiLCJhdF9sZWFzdF9vbmNlJDAiLCJtYWtlX2NyZWF0b3IiLCJhdF9sZWFzdF9vbmNlX2Z1biIsImF0X21vc3Rfb25jZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJhdF9sZWFzdF9vbmNlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJhdF9tb3N0X29uY2VfZ2VuIiwiY3JlYXRlIiwibWFwJDEiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJzZXhwX29mX3QkMTciLCJhdF9tb3N0X29uY2VfNDg0IiwiYXRfbGVhc3Rfb25jZV80ODIiLCJhcmdfNDg1IiwiYm5kc180ODEiLCJhcmdfNDgzIiwiYm5kc180ODEkMCIsInRvX2hlbHBfc3RyaW5nIiwiZGVzY3JpcHRpb24iLCJvZl9oZWxwX3N0cmluZyIsIm5hbWUkMCIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsInhfNDg2IiwicyIsImZsYWdfbmFtZSQwIiwieF80ODciLCJjb21wYXJlJDEwIiwiYV80OTQiLCJiXzQ5NSIsImFfNDk2IiwiYl80OTciLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJjb21waWxlX2FjYyQyIiwiYWxpYXNlc19nZW4iLCJjcmVhdGUkMCIsIm1hcCQzIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxOCIsInhfNTAwIiwic2V4cF9vZl90JDE4IiwiYWxpYXNlc181MDYiLCJkb2NfNTA0IiwibmFtZV81MDIiLCJhcmdfNTA3IiwiYm5kc181MDEiLCJhcmdfNTA1IiwiYm5kc181MDEkMCIsImFyZ181MDMiLCJibmRzXzUwMSQxIiwicGFyc2VfbmFtZSIsIm51bV9vY2N1cnJlbmNlcyIsInJlcXVpcmVzX2FyZyIsImhlbHBfc2NyZWVuX2NvbXBhcmUiLCJhIiwic29ydCIsIndvcmRfd3JhcF9hbmRfc3RyaXAiLCJ0ZXh0Iiwid2lkdGgiLCJjaHVua3MiLCJ3b3JkcyIsIndvcmQiLCJsaW5lIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4IiwieCIsInNsYWNrIiwiaW5kZW50X2FuZF9uZXdsaW5lIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImxoc19wYWQiLCJmbGFnIiwiZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyIsImRvY3VtZW50YXRpb24iLCJmbGFnX3dpZHRoIiwiZmxhZ19vbl9pdHNfb3duX2xpbmUiLCJ3cmFwcGVkX2RvY3VtZW50YXRpb24iLCJkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIiwiZG9jX3dyYXBwZWRfZmlyc3RfbGluZSIsIndyYXBwZWRfZG9jX2xpbmVzIiwicHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfIiwidG9fc3RyaW5nJDAiLCJsb29rdXBfZXhwYW5kIiwiYWxpc3QiLCJwcmVmaXgiLCJrZXlfdHlwZSIsImlzX2Rhc2giLCJhbGlzdCQwIiwiZGF0YSIsImtleSIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzUwOCIsImRhdGEkMCIsImtleSQwIiwibWF0Y2hpbmdfa2V5cyIsImN1c3RvbV9wcmludGZfNTA5IiwiY29tcGFyZSQxMSIsImFfNTEwIiwiYl81MTEiLCJhXzUxMiIsImJfNTEzIiwiYV81MTQiLCJiXzUxNSIsImZsYWdzJDAiLCJhbm9ucyQwIiwicmVhZG1lJDAiLCJzdW1tYXJ5JDAiLCJtYWtlX2NyZWF0b3IkMSIsInN1bW1hcnlfZnVuIiwicmVhZG1lX2Z1biIsImFub25zX2Z1biIsImZsYWdzX2Z1biIsInN1bW1hcnlfZ2VuIiwicmVhZG1lX2dlbiIsImFub25zX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJmbGFnc19nZW4iLCJjcmVhdGUkMSIsIm1hcCQ1IiwiaXRlciQzIiwiZm9sZCQzIiwibWFwX3BvbHkkMSIsImZvcl9hbGwkMyIsImV4aXN0cyQzIiwidG9fbGlzdCQzIiwiaXRlciQ0IiwiZm9sZCQ0IiwiZm9yX2FsbCQ0IiwiZXhpc3RzJDQiLCJ0b19saXN0JDQiLCJtYXAkNiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMSIsInRfb2Zfc2V4cCQxOSIsInhfNTE4Iiwic2V4cF9vZl90JDE5IiwiZmxhZ3NfNTI4IiwiYW5vbnNfNTI2IiwicmVhZG1lXzUyMiIsInN1bW1hcnlfNTIwIiwiYXJnXzUyOSIsImJuZHNfNTE5IiwiYXJnXzUyNyIsImJuZHNfNTE5JDAiLCJ2XzUyMyIsImFyZ181MjUiLCJibmRfNTI0IiwiYm5kc181MTkkMSIsImFyZ181MjEiLCJibmRzXzUxOSQyIiwiZmluZF9mbGFnIiwiZmxhZ19pbmZvIiwiY2hvaWNlcyIsImdldF91c2FnZSIsImNvbXBhcmUkMTIiLCJhXzUzMiIsImJfNTMzIiwiYV81MzQiLCJiXzUzNSIsImFfNTM2IiwiYl81MzciLCJhXzUzOCIsImJfNTM5IiwidF81NDEiLCJ0XzU0MCIsInRfNTQzIiwidF81NDIiLCJyZWFkbWUkMSIsInN1bW1hcnkkMSIsInN1YmNvbW1hbmRzJDAiLCJyZWFkbWUkMiIsInN1bW1hcnkkMiIsIm1ha2VfY3JlYXRvciQyIiwic3ViY29tbWFuZHNfZnVuIiwic3ViY29tbWFuZHNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkNyIsIml0ZXIkNSIsImZvbGQkNSIsIm1hcF9wb2x5JDIiLCJmb3JfYWxsJDUiLCJleGlzdHMkNSIsInRvX2xpc3QkNSIsIml0ZXIkNiIsImZvbGQkNiIsImZvcl9hbGwkNiIsImV4aXN0cyQ2IiwidG9fbGlzdCQ2IiwibWFwJDgiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDIiLCJ0X29mX3NleHAkMjAiLCJvZl9hXzU0NCIsInhfNTUyIiwic2V4cF81NTEiLCJhcmcxXzU0OCIsImFyZzBfNTQ3IiwicmVzMF81NDkiLCJyZXMxXzU1MCIsInNleHBfb2ZfdCQyMCIsIm9mX2FfNTUzIiwic3ViY29tbWFuZHNfNTYxIiwicmVhZG1lXzU1NyIsInN1bW1hcnlfNTU1IiwiYXJnMV81NjQiLCJhcmcwXzU2MyIsInJlczBfNTY1IiwicmVzMV81NjYiLCJhcmdfNTYyIiwiYm5kc181NTQiLCJ2XzU1OCIsImFyZ181NjAiLCJibmRfNTU5IiwiYm5kc181NTQkMCIsImFyZ181NTYiLCJibmRzXzU1NCQxIiwiZmluZF9zdWJjb21tYW5kIiwiY29tcGFyZSQxMyIsImFfNTY3IiwiYl81NjgiLCJhXzU2OSIsImJfNTcwIiwiYV81NzEiLCJiXzU3MiIsInJlYWRtZSQzIiwic3VtbWFyeSQzIiwiY2hpbGRfc3ViY29tbWFuZCQwIiwicGF0aF90b19leGUkMCIsIndvcmtpbmdfZGlyJDAiLCJyZWFkbWUkNCIsInN1bW1hcnkkNCIsIm1ha2VfY3JlYXRvciQzIiwid29ya2luZ19kaXJfZnVuIiwicGF0aF90b19leGVfZnVuIiwiY2hpbGRfc3ViY29tbWFuZF9mdW4iLCJ3b3JraW5nX2Rpcl9nZW4iLCJwYXRoX3RvX2V4ZV9nZW4iLCJjb21waWxlX2FjYyQ0IiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMjEiLCJ4XzU3NSIsInNleHBfb2ZfdCQyMSIsImNoaWxkX3N1YmNvbW1hbmRfNTg3IiwicGF0aF90b19leGVfNTg1Iiwid29ya2luZ19kaXJfNTgzIiwicmVhZG1lXzU3OSIsInN1bW1hcnlfNTc3IiwiYXJnXzU4OCIsImJuZHNfNTc2IiwiYXJnXzU4NiIsImJuZHNfNTc2JDAiLCJhcmdfNTg0IiwiYm5kc181NzYkMSIsInZfNTgwIiwiYXJnXzU4MiIsImJuZF81ODEiLCJibmRzXzU3NiQyIiwiYXJnXzU3OCIsImJuZHNfNTc2JDMiLCJjb21wYXJlJDE0IiwiYV81ODkiLCJiXzU5MCIsImFfNTg5JDAiLCJiXzU5MCQwIiwiYV81OTEiLCJiXzU5MiIsImFfNTkzIiwiYl81OTQiLCJhXzU5NSIsImJfNTk2IiwiYV81OTkiLCJhXzU5NyIsImJfNjAwIiwiYl81OTgiLCJ0X29mX3NleHAkMjIiLCJzZXhwXzYwNSIsInRhZ182MDYiLCJzZXhwX2FyZ3NfNjEyIiwiYXJnMF82MTMiLCJyZXMwXzYxNCIsInNleHBfYXJnc182MTciLCJhcmcxXzYxOSIsImFyZzBfNjE4IiwicmVzMF82MjAiLCJyZXMxXzYyMSIsInNleHBfYXJnc182MDciLCJhcmcwXzYwOCIsInJlczBfNjA5Iiwic2V4cF9vZl90JDIyIiwiYXJnMF82MjIiLCJyZXMwXzYyMyIsImFyZzBfNjI0IiwicmVzMF82MjUiLCJhcmcxXzYyNyIsImFyZzBfNjI2IiwicmVzMF82MjgiLCJyZXMxXzYyOSIsImV4cGFuZGVkX3N1YmNvbW1hbmRzIiwiZXhwYW5kIiwic2V4cF9vZl90JDIzIiwiYXJnMF82MzAiLCJyZXMwXzYzMSIsImFyZzBfNjMyIiwicmVzMF82MzMiLCJhcmcwXzYzNCIsInJlczBfNjM1IiwiYXJnMF82MzYiLCJyZXMwXzYzNyIsImV4dHJhY3Rpb25fdmFyIiwiaSIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsInhzIiwiZGllIiwiZm10IiwibXNnIiwia2V5X2NyZWF0ZSIsIm11bHRpX2FkZCIsInNldF93aXRoX2RlZmF1bHQiLCJhcHBseSIsImVycl8xIiwiaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhIiwicmV0dXJuX25vX2FyZyIsInJldHVybl93aXRoX2FyZyIsImVycm9yIiwiaGFzX2FyZyIsImVyciIsInJlc3VsdCIsInJ1bl9hbmRfZXhpdCIsImVudiIsInBhcnQiLCJjb21wbGV0aW9ucyIsImV4dHJhX2RvYyIsInBhcnNlIiwiY29tcGxldGUiLCJvZl9zdHJpbmciLCJvZl9sYXp5Iiwic3RyIiwiZXh0cmFfZG9jJDAiLCJzdHJpbmciLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJzZXhwX2NvbnYiLCJvZl9zZXhwIiwib2ZfYWxpc3RfZXhuIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJtYWtlIiwiY21wIiwiayIsImR1cGxpY2F0ZV9rZXlzIiwiUyIsInVuaXZfbWFwIiwic3VmZml4IiwidmFsdWVzIiwiYXJnIiwidiQwIiwidmFsaWRfYXJndW1lbnRzX2V4dHJhIiwiY29tcGxldGUkMCIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImJvb2wiLCJjb21tYV9zZXBhcmF0ZWQiLCJhbGxvd19lbXB0eSIsInN0cmlwX3doaXRlc3BhY2UiLCJ1bmlxdWVfdmFsdWVzIiwic3RyaXAiLCJjb21wbGV0ZV9lbHQiLCJ0bCIsImhkIiwicHJlZml4ZXMiLCJzZWVuX2FscmVhZHkiLCJpc19hbGxvd2VkIiwiY2hvaWNlIiwiY2hvaWNlcyQwIiwic3RyaW5nJDAiLCJlbnVtZXJhdGVfMDEyIiwiZW51bWVyYXRlXzAxMyIsImVudW1lcmF0ZV8wMTEiLCJlbnVtZXJhdGVfMDE0IiwiZW51bWVyYXRlXzAxMCIsImVudW1lcmF0ZV8wMTQkMCIsInBhcnNlJDAiLCJhY3Rpb24iLCJhcmdfZG9jIiwiZG9jJDEiLCJhcmdfZG9jJDAiLCJjb25jYXQiLCJ3cmFwX2lmX29wdGlvbmFsIiwiaGVscCIsImFsaWduIiwiYV8wMjAiLCJiXzAyMSIsImFyZ19mbGFnIiwiYXJnX3R5cGUiLCJyZWFkIiwid3JpdGUiLCJ1cGRhdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJpbnB1dCIsIndyaXRlX29wdGlvbiIsInJlcXVpcmVkX3ZhbHVlIiwiZGVmYXVsdCQwIiwicmVxdWlyZWQiLCJvcHRpb25hbF93aXRoX2RlZmF1bHQiLCJvcHRpb25hbCIsInZhbHVlIiwibm9fYXJnX2dlbmVyYWwiLCJpc19yZXF1aXJlZCIsImtleV92YWx1ZSIsImRlcHJlY2F0ZWRfaG9vayIsImFjdGlvbiQwIiwibm9fYXJnIiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3JlZ2lzdGVyIiwibm9fYXJnX3NvbWUiLCJsaXN0ZWQiLCJ4XzAyMiIsInZhbHVlX2xpc3QiLCJsaXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsInhfMDIzIiwicmVzdCIsImZpcnN0IiwicSIsIm9uZV9vcl9tb3JlX2FzX2xpc3QiLCJlc2NhcGVfZ2VuZXJhbCIsInhfMDI0IiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsImVtcHR5JDAiLCJhcHBlbmQiLCJzdWJjb21tYW5kIiwicGFydHMiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJsZW5ndGgiLCJyZXBsYWNlX2ZpcnN0IiwiZnJvbSIsInRvIiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJsYXN0IiwiaXNfZW1wdHkiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsInMkMCIsInplcm8iLCJjb25jYXQkMCIsImNkciIsImNhciIsInQyIiwidDEiLCJjZHIkMCIsImNhciQwIiwicGFyc2VfbW9yZSIsImZvcl9jb21wbGV0aW9uIiwidXBkYXRlX2VudiIsInBhcnNlciIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInN5bWJvbCQwIiwidF9sZWZ0IiwidF9yaWdodCIsImZfb3V0Y29tZSIsInhfb3V0Y29tZSIsIm1vcmUiLCJ0ciIsInRlc3QiLCJtb3JlJDAiLCJ0ZXN0JDAiLCJyZXR1cm4kMSIsInN5bWJvbF9tYXAiLCJmcm9tX2VudiIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQxIiwicmV0dXJuJDIiLCJyZXR1cm5fd2l0aF9hcmckMCIsIm9uZSIsImFub24iLCJzZXF1ZW5jZSIsImxvb3AiLCJjb25zdW1lIiwicGFja2VkIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsImExIiwiYTIiLCJ0MyIsImEzIiwidDQiLCJhNCIsIm5vcm1hbGl6ZSIsInN0cmxlbiIsInNwZWNpYWxfY2hhcnMiLCJoYXNfc3BlY2lhbF9jaGFycyIsInN5bWJvbCQyIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI5IiwiYV8wMjciLCJiXzAzMCIsImJfMDI4IiwiYV8wMzEiLCJiXzAzMiIsIm9mX2xpc3QiLCJhcmdzIiwieCQwIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiYyIsImN1c3RvbV9wcmludGZfMDMzIiwiY3VzdG9tX3ByaW50Zl8wMzQiLCJzdWJjb21tYW5kX2NtcF9mc3QiLCJzaGFwZSIsInBhdGhfa2V5IiwiYXJnc19rZXkiLCJoZWxwX2tleSIsInJ1bl9leG4iLCJleG4iLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwiZXhuX3N0ciIsInZlcmJvc2UiLCJlcnJvcl9tc2ciLCJydW4iLCJ3aGVuX3BhcnNpbmdfc3VjY2VlZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0Iiwib25fZmFpbHVyZSIsInBhcnNlciQxIiwiZW52JDEiLCJjbWRsaW5lJDAiLCJhcmdzJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwibmFtZV9tYXRjaGluZyIsImFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIiwiYWxpYXMiLCJzMiIsInMxIiwiZmxhZyQwIiwiZmxhZyQxIiwiZiQxIiwiaW5mbyIsImNvbXBsZXRpbmciLCJjb21wIiwiZiQyIiwiZSQwIiwiY29tcCQwIiwiZiQzIiwiYXJnX2xpc3QiLCJjbWRsaW5lJDIiLCJlbnYkMiIsInBhcnNlX2ZsYWdzMiIsImVudiQzIiwicGFyc2VfZmxhZ3MkMCIsInBhcnQkMCIsIm1haW4iLCJmJDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJ0JDciLCJ3cmFwX3ZhbHVlIiwiYXBwbHkkMSIsImVtcHR5X3NwZWMiLCJtYXBfb3V0Y29tZSIsImxvb2t1cCIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiZmxvYXQkMSIsImJvb2wkMCIsInNleHAkMCIsInNleHBfY29udiQwIiwic3BlYyIsIm91dGNvbWUiLCJlc2NhcGVfYW5vbiIsImZpbmFsX2Fub24iLCJmdWxsX2ZsYWdfcmVxdWlyZWQiLCJtb2RlIiwiY2hlY2tfYXZhaWxhYmxlIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJyZXR1cm4kMyIsIm9wdGlvbmFsX3RvX3JlcXVpcmVkIiwiYm90aCIsImFyZ19uYW1lcyIsImZsYWdfbmFtZXMiLCJhbm9uX25hbWVzIiwiYV8wMzYiLCJiXzAzNyIsImFfMDM4IiwiYl8wMzkiLCJhXzA0MCIsImJfMDQxIiwieF8wNDIiLCJjcmVhdGVfZXhuIiwicmVxdWlyZWRfYXJncyIsIm5hbWVzX3dpdGhfY29tbWFzIiwieF8wNDMiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsIiwiaWZfbm90aGluZ19jaG9zZW4iLCJuZXdfYmVoYXZpb3IiLCJuYW1lX29mX3RoZV9ncm91cCIsImZsYWdfaW50ZXJuYWwiLCJleGNlcHQiLCJsIiwidHMkMCIsImFyZ19jb3VudGVyIiwibW9yZV90aGFuX29uZV9lcnJvciIsInBhc3NlZCIsImN1c3RvbV9wcmludGZfMDQ0IiwiZXJyb3JfbGlzdCIsInN1Y2Nlc3NfbGlzdCIsInZhbHVlJDAiLCJjdXN0b21fcHJpbnRmXzA0NSIsImNob29zZV9vbmUiLCJjaG9vc2Vfb25lX25vbl9vcHRpb25hbCQwIiwibHN0IiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInBhcnNlJDEiLCJwYXJhbXMiLCJzeW1ib2wkNiIsImYxIiwiZjIiLCJzeW1ib2wkNyIsInAyIiwic3ltYm9sJDgiLCJzdGVwIiwiY29uc3QkMCIsIndyYXAiLCJvZl9wYXJhbSIsInAiLCJ0b19wYXJhbSIsIm0iLCJzdHJpbmckMSIsImludCQyIiwiY2hhciQyIiwiZmxvYXQkMiIsImJvb2wkMSIsInNleHAkMSIsInNleHBfY29udiQxIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJnZW4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0Iiwic2V0X2Jvb2wiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1Iiwic2hhcGUkMCIsInN1YmNvbW1hbmRfdG9fc2hhcGUiLCJjb21wX2N3b3JkIiwic2hhcGUkMSIsInNleHBhYmxlX3NoYXBlIiwiYmFzZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwibWVtIiwiYWRkIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljIiwiZmxhZ3MkMSIsImJhc2UkMCIsImJhc2ljX3NwZWMiLCJzdWJzX2tleSIsImxhenlfZ3JvdXAiLCJwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIiwiYm9keSIsInAkMCIsInAkMSIsInAkMiIsIm9mX2xhenkkMCIsInByb3h5X29mX3NleHBhYmxlIiwic2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQiLCJraW5kIiwia2luZF9vZl9zZXhwYWJsZSIsInBhdGhfdG9fc3ViY29tbWFuZCQwIiwicHJveHkiLCJwcmludF92ZXJzaW9uIiwidmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsImFkZCQwIiwidW52ZXJzaW9uZWQiLCJiYXNlJDEiLCJub3JtYWxpemVfdmVyc2lvbl9saW5lcyIsImRlZmF1bHRfdmVyc2lvbiIsImRlZmF1bHRfYnVpbGRfaW5mbyIsInJlcHJpbnRfYnVpbGRfaW5mbyIsInRvX3NleHAiLCJ4JDEiLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsImgiLCJwYXRoJDEiLCJiYXNpYyQwIiwicGFyYW0iLCJiYXNpY19vcl9lcnJvciIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsImdldHBpZCIsImNsb3NlIiwiaW5fY2hhbm5lbF9vZl9kZXNjciIsIndhaXQiLCJnZXRlbnZfYW5kX2NsZWFyIiwidmFyJDAiLCJvZl9leHRlcm5hbCIsImhlbHBfc2V4cCIsInByb2ciLCJjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHIiLCJlbnZfdmFyIiwiYXJndjAiLCJwcm9nX3NlYXJjaF9wYXRoIiwibGlzdCQwIiwibGlzdCQxIiwicHJvY2Vzc19pbmZvIiwic3RhcnRfcmVhZGluZyIsImRlc2NyIiwib3V0cHV0IiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsImV4biQwIiwic2hhcGVfb2ZfcHJveHkiLCJzaGFwZV9vZl9wcm94eV9raW5kIiwic2hhcGVfb2ZfZXhlIiwic2hhcGUkMiIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImxvb3AkMCIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsIm1heWJlX25ld19jb21wX2N3b3JkIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJhcmdzJDEiLCJkaWVfc2hvd2luZ19oZWxwIiwiYXJncyQyIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQkMCIsIm1heWJlX25ld19jb21wX2N3b3JkJDEiLCJyZXNvbHZlIiwic3ViIiwic3VicyQwIiwiYm9keSQwIiwidG9fb3V0cHV0IiwicmVzdF9vZl9yZXN0IiwiZmlyc3Rfb2ZfcmVzdCIsImFyZ3MkMyIsIm5ld192YWx1ZSQwIiwibmV3X3ZhbHVlIiwicnVuJDAiLCJhcmd2IiwiYnVpbGRfaW5mbyQwIiwidmVyc2lvbiQwIiwic3VwcG9ydGVkX3ZlcnNpb25zJDAiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMSIsInBhdGhfdG9fc3ViY29tbWFuZCQyIiwiZm5hbWUiLCJhcmd2XzAiLCJjb21wX2N3b3JkJDAiLCJkZXByZWNhdGVkX3J1biIsImlzX2hlbHAiLCJpc19oZWxwX3JlYyIsImlzX2hlbHBfcmVjX2ZsYWdzIiwiaXNfZXhwYW5kX2RvdHMiLCJwYXRoX3N0cmluZ3MiLCJhcmdzJDQiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsImNyZWF0ZSIsInYiLCJjcmVhdGVfZXhuIiwidmFsdWUiLCJ0IiwiYnl0ZXNfcGVyX3dvcmQiLCJieXRlcyIsInBhc3MiLCJmYWlscyIsIm1lc3NhZ2UiLCJhIiwic2V4cF9vZl9hIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwiZmFpbF9zIiwic2V4cCIsImNvbWJpbmUiLCJ0MSIsInQyIiwib2ZfbGlzdCIsIm5hbWUiLCJ0IiwiZXJyb3IiLCJwYXRoIiwibmFtZV9saXN0IiwibiIsImwiLCJmYWlsX2ZuIiwicGFzc19ib29sIiwicGFzc191bml0IiwicHJvdGVjdCIsImYiLCJ2IiwiZXhuJDAiLCJleG4iLCJ0cnlfd2l0aCIsInBhdGhfc3RyaW5nIiwiZXJyb3JzIiwicmVzdWx0IiwieF8wMDUiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsIm1heWJlX3JhaXNlIiwidmFsaWRfb3JfZXJyb3IiLCJjaGVjayIsIngiLCJmaWVsZF9kaXJlY3QiLCJmbGQiLCJyZWNvcmQiLCJmaWVsZCIsImZpZWxkX2ZvbGRlciIsImFjYyIsImZpZWxkX2RpcmVjdF9mb2xkZXIiLCJhbGwiLCJjaGVja3MiLCJjaGVja3MkMCIsImVycnMiLCJjaGVja3MkMSIsImVyciIsImVycnMkMCIsIm9mX3Jlc3VsdCIsIm9mX2Vycm9yIiwiYm9vbHRlc3QiLCJpZl9mYWxzZSIsInBhaXIiLCJmc3QiLCJzbmQiLCJzbmRfdmFsdWUiLCJmc3RfdmFsdWUiLCJsaXN0X2luZGV4ZWQiLCJsaXN0IiwiaSIsImVsIiwiZXh0cmFjdF9uYW1lIiwiYWxpc3QiLCJsaXN0JDAiLCJrZXkiLCJmaXJzdF9mYWlsdXJlIiwib2ZfZXJyb3Jfb3B0IiwiYm91bmRlZCIsImxvd2VyIiwidXBwZXIiLCJjb21wYXJlIiwiaW5jbCIsImV4Y2wiLCJpbmNsJDAiLCJleGNsJDAiLCJzeW1ib2wiLCJuYW1lIiwic2V4cF9vZl9iaWdzdHJpbmciLCJiaWdzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2ZfbWF0IiwibWF0X29mX3NleHAiLCJzZXhwX29mX3ZlYyIsInZlY19vZl9zZXhwIiwic2V4cF9vZl9vcGFxdWUiLCJvcGFxdWVfb2Zfc2V4cCIsInNleHBfb2ZfcGFpciIsInBhaXJfb2Zfc2V4cCIsIm9mX3NleHBfZXJyb3IiLCJvZl9zZXhwX2Vycm9yX2V4biIsImdyb3VwIiwiYmluX3NoYXBlX3NleHBfb3BhcXVlIiwiYSIsImJpbl9zaXplX3NleHBfb3BhcXVlIiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3NleHBfb3BhcXVlIiwid3JpdGVfYSIsImJpbl93cml0ZXJfc2V4cF9vcGFxdWUiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfc2V4cF9vcGFxdWUiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSQwIiwiYmluX3JlYWRlcl9zZXhwX29wYXF1ZSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fc2V4cF9vcGFxdWUiLCJiaW5fYSIsImNvbXBhcmVfc2V4cF9vcGFxdWUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJoYXNoX2ZvbGRfc2V4cF9vcGFxdWUiLCJoYXNoX2ZvbGRfYSIsImhzdiIsImFyZyIsInR5cGVuYW1lX29mX3NleHBfb3BhcXVlIiwidHlwZXJlcF9vZl9zZXhwX29wYXF1ZSIsIm5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl9mdW5jdGlvbiIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX3VuaXQiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9mbG9hdCIsInR5cGVuYW1lX29mX2NoYXIiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVuYW1lX29mX25hdGl2ZWludCIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfaW50MzIiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlcmVwX29mX3R1cGxlNSIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlMiIsInR5cGVyZXBfb2ZfdHVwbGUwIiwidHlwZXJlcF9vZl9mdW5jdGlvbiIsInR5cGVyZXBfb2ZfcmVmIiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlcmVwX29mX3VuaXQiLCJ0eXBlcmVwX29mX2Jvb2wiLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9jaGFyIiwidHlwZXJlcF9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfbmF0aXZlaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludCIsIndpdGhfcmV0dXJuIiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJ0X3NleHBfZ3JhbW1hciIsIm9mX3N0cmluZyIsIngiLCJ0b19zdHJpbmciLCJ0b19iaW5hYmxlIiwib2ZfYmluYWJsZSIsImNhbGxlcl9pZGVudGl0eSIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInYxIiwidjEkMCIsImJpbl93cml0ZV90IiwicG9zIiwicG9zJDAiLCJwb3MkMSIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJhcmdfMSIsImFyZ18xJDAiLCJ4JDAiLCJvZl9iaWdzdHJpbmciLCJtIiwiYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2xlbmd0aCIsInRvX2JpZ3N0cmluZyIsInByZWZpeF93aXRoX2xlbmd0aCIsInRfbGVuZ3RoIiwiZXByaW50ZiIsImZwcmludGYiLCJrZnByaW50ZiIsInByaW50ZiIsImV4aXRmIiwiZm10IiwiY29sbGVjdF90b19zdHJpbmciLCJmIiwiZG9uZSIsIm91dHB1dCIsImVyciQzIiwiZXJyJDIiLCJlcnIkMSIsImVyciQwIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNCIsImVycm9yX3NvdXJjZV8wMDkiLCJuYW1lJDAiLCJlcnJvcl9zb3VyY2VfMDE4IiwiZXJyb3Jfc291cmNlXzAyMCIsIm5hbWUkMSIsImVycm9yX3NvdXJjZV8wMzMiLCJlcnJvcl9zb3VyY2VfMDM1IiwibmFtZSQyIiwiZXJyb3Jfc291cmNlXzA1MSIsImVycm9yX3NvdXJjZV8wNTMiLCJuYW1lJDMiLCJlcnJvcl9zb3VyY2VfMDY0IiwibmFtZSQ0IiwiZXJyb3Jfc291cmNlXzA4MiIsImVycm9yX3NvdXJjZV8wODQiLCJuYW1lJDUiLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsImNvbXBhcmUiLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ4XzAwNSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInhfMDEwIiwic2V4cF9vZl90JDAiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsImJpbl9yZWFkZXJfdCQxIiwiYmluX3QkMSIsImNvbXBhcmUkMSIsImFfMDExIiwiYl8wMTIiLCJoYXNoX2ZvbGRfdCQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAxNiIsImF0b21fMDE0IiwiYXRvbV8wMTQkMCIsInRfb2Zfc2V4cCQyIiwic2V4cF8wMTkiLCJzZXhwX29mX3QkMSIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImJpbl93cml0ZV90JDIiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDIxIiwiYl8wMjIiLCJyaWdodF8wMjQiLCJsZWZ0XzAyMyIsImhhc2hfZm9sZF90JDIiLCJoc3YkMCIsImhhc2gkMiIsInRfb2Zfc2V4cCQzIiwic2V4cF8wMjgiLCJhdG9tXzAyNiIsInNleHBfYXJnc18wMjkiLCJhdG9tXzAyNiQwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInRfb2Zfc2V4cCQ0Iiwic2V4cF8wMzQiLCJzZXhwX29mX3QkMiIsInZfMDM2IiwiZ3JvdXAkMyIsImJpbl9zaGFwZV90JDMiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwiYmluX3dyaXRlcl90JDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImJpbl90JDMiLCJjb21wYXJlJDMiLCJhXzAzNyIsImJfMDM4IiwicmlnaHRfMDQyIiwibGVmdF8wNDEiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDUiLCJzZXhwXzA1MiIsImF0b21fMDQ0Iiwic2V4cF9hcmdzXzA0NyIsImF0b21fMDQ0JDAiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwic2V4cF9vZl90JDMiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsInN0YWJsZV93aXRuZXNzIiwiZ2xvYmFsaXplIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9ub2JvZHkiLCJiaW5fc2l6ZV9ub2JvZHkiLCJiaW5fd3JpdGVfbm9ib2R5IiwiYmluX3dyaXRlcl9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkkMCIsImJpbl9yZWFkZXJfbm9ib2R5IiwiYmluX25vYm9keSIsImNvbXBhcmVfbm9ib2R5IiwiaGFzaF9mb2xkX25vYm9keSIsImZ1bmMiLCJoYXNoX25vYm9keSIsIm5vYm9keV9vZl9zZXhwIiwic2V4cF9vZl9ub2JvZHkiLCJzdGFibGVfd2l0bmVzc19ub2JvZHkiLCJncm91cCQ3IiwiYmluX3NoYXBlX21lIiwiYmluX3NpemVfbWUiLCJiaW5fd3JpdGVfbWUiLCJiaW5fd3JpdGVyX21lIiwiYmluX3JlYWRfbWUiLCJiaW5fcmVhZF9tZSQwIiwiYmluX3JlYWRlcl9tZSIsImJpbl9tZSIsImNvbXBhcmVfbWUiLCJoYXNoX2ZvbGRfbWUiLCJmdW5jJDAiLCJoYXNoX21lIiwibWVfb2Zfc2V4cCIsInNleHBfb2ZfbWUiLCJzdGFibGVfd2l0bmVzc19tZSIsImdyb3VwJDgiLCJiaW5fc2hhcGVfdCQ1IiwiYmluX3NpemVfdCQ1IiwiYmluX3dyaXRlX3QkNSIsImJpbl93cml0ZXJfdCQ1IiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkX3QkMTMiLCJiaW5fcmVhZGVyX3QkNSIsImJpbl90JDUiLCJjb21wYXJlJDUiLCJhXzEwMSIsImJfMTAyIiwiYV8xMDMiLCJiXzEwNCIsInJpZ2h0XzA3MiIsImxlZnRfMDcxIiwiaGFzaF9mb2xkX3Blcm1zIiwicGVybXNfb2Zfc2V4cCIsIm9mX2FfMTA3IiwieF8xMDkiLCJzZXhwXzA3NCIsImF0b21fMDc1Iiwic2V4cF9hcmdzXzA3OCIsImF0b21fMDc1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwic2V4cF9vZl9wZXJtcyIsIm9mX2FfMTEwIiwieF8xMTEiLCJ2XzA4NyIsImdsb2JhbGl6ZV9wZXJtcyIsImdyb3VwJDkiLCJiaW5fc2hhcGVfcmVhZCIsImJpbl9zaXplX3JlYWQiLCJiaW5fd3JpdGVfcmVhZCIsImJpbl93cml0ZXJfcmVhZCIsImJpbl9yZWFkX3JlYWQiLCJiaW5fcmVhZF9yZWFkJDAiLCJiaW5fcmVhZGVyX3JlYWQiLCJiaW5fcmVhZCIsImNvbXBhcmVfcmVhZCIsImdsb2JhbGl6ZV9yZWFkIiwiaGFzaF9mb2xkX3JlYWQiLCJmdW5jJDEiLCJoYXNoX3JlYWQiLCJyZWFkX29mX3NleHAiLCJzZXhwX29mX3JlYWQiLCJzdGFibGVfd2l0bmVzc19yZWFkIiwiY29tcGFyZV93cml0ZSIsImhhc2hfZm9sZF93cml0ZSIsImZ1bmMkMiIsImhhc2hfd3JpdGUiLCJnbG9iYWxpemVfd3JpdGUiLCJ3cml0ZV9vZl9zZXhwIiwic2V4cF9vZl93cml0ZSIsInN0YWJsZV93aXRuZXNzX3dyaXRlIiwiZ3JvdXAkMTAiLCJiaW5fc2hhcGVfaW1tdXRhYmxlIiwiYmluX3NpemVfaW1tdXRhYmxlIiwiYmluX3dyaXRlX2ltbXV0YWJsZSIsImJpbl93cml0ZXJfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlJDAiLCJiaW5fcmVhZGVyX2ltbXV0YWJsZSIsImJpbl9pbW11dGFibGUiLCJjb21wYXJlX2ltbXV0YWJsZSIsImdsb2JhbGl6ZV9pbW11dGFibGUiLCJoYXNoX2ZvbGRfaW1tdXRhYmxlIiwiZnVuYyQzIiwiaGFzaF9pbW11dGFibGUiLCJpbW11dGFibGVfb2Zfc2V4cCIsInNleHBfb2ZfaW1tdXRhYmxlIiwic3RhYmxlX3dpdG5lc3NfaW1tdXRhYmxlIiwiZ3JvdXAkMTEiLCJiaW5fc2hhcGVfcmVhZF93cml0ZSIsImJpbl9zaXplX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVfcmVhZF93cml0ZSIsImJpbl93cml0ZXJfcmVhZF93cml0ZSIsImJpbl9yZWFkX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlJDAiLCJiaW5fcmVhZGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF93cml0ZSIsImNvbXBhcmVfcmVhZF93cml0ZSIsImdsb2JhbGl6ZV9yZWFkX3dyaXRlIiwiaGFzaF9mb2xkX3JlYWRfd3JpdGUiLCJmdW5jJDQiLCJoYXNoX3JlYWRfd3JpdGUiLCJyZWFkX3dyaXRlX29mX3NleHAiLCJzZXhwX29mX3JlYWRfd3JpdGUiLCJzdGFibGVfd2l0bmVzc19yZWFkX3dyaXRlIiwiZ3JvdXAkMTIiLCJiaW5fc2hhcGVfcGVybXMiLCJiaW5fc2l6ZV9wZXJtcyIsImJpbl93cml0ZV9wZXJtcyIsImJpbl93cml0ZXJfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyIsImJpbl9yZWFkX3Blcm1zJDAiLCJiaW5fcmVhZGVyX3Blcm1zIiwiYmluX3Blcm1zIiwiY29tcGFyZV9wZXJtcyIsImFfMTI4IiwiYl8xMjkiLCJhXzEzMCIsImJfMTMxIiwic3RhYmxlX3dpdG5lc3NfcGVybXMiLCJhX3N0YWJsZV93aXRuZXNzIiwibWFrZSIsImVycm9yX3NvdXJjZV8wMTEiLCJzaXplX29mX2YiLCJzaXplX29mX3MiLCJ3cml0ZV9mIiwid3JpdGVfcyIsImJpbl93cml0ZXJfZiIsImJpbl93cml0ZXJfcyIsIm9mX2YiLCJvZl9zIiwiYmluX3JlYWRlcl9mIiwiYmluX3JlYWRlcl9zIiwiYmluX2YiLCJiaW5fcyIsImNtcF9mIiwiY21wX3MiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsInYwIiwidGFnMCIsInRhZzEiLCJ0eXBlbmFtZSIsInRhZ3MiLCJ2YWx1ZSIsInYwJDAiLCJmX3N0YWJsZV93aXRuZXNzIiwic19zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYxIiwiZjIiLCJ4MSIsIngyIiwiY21wX2IiLCJhXzAzNiIsImJfMDM3IiwiYV8wMzgiLCJiXzAzOSIsImFfMDQwIiwiYl8wNDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwibmFtZXMiLCJ2NCIsInYzIiwidjIiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwicG9zJDIiLCJ2X3Bvc19mbmFtZSIsInZfcG9zX2xudW0iLCJ2X3Bvc19ib2wiLCJ2X3Bvc19jbnVtIiwibiIsIm4kMCIsIm4kMSIsInBvc19jbnVtIiwiciIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19jbnVtJDAiLCJwb3NfYm9sJDAiLCJwb3NfbG51bSQwIiwicG9zX2ZuYW1lJDAiLCJtYWtlX2NyZWF0b3IiLCJwb3NfZm5hbWVfZnVuIiwicG9zX2xudW1fZnVuIiwicG9zX2JvbF9mdW4iLCJwb3NfY251bV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJwb3NfZm5hbWVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsInBvc19sbnVtX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJwb3NfYm9sX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJwb3NfY251bV9nZW4iLCJhY2MiLCJjcmVhdGUiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwicG9zX2NudW1fMDEzIiwicG9zX2JvbF8wMTEiLCJwb3NfbG51bV8wMDkiLCJwb3NfZm5hbWVfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiYTAiLCJhMCQwIiwic3RhYmxlX3dpdG5lc3MkMCIsInN0YWJsZV93aXRuZXNzX2NoZWNrc19mb3JfdCIsInYxJDEiLCJ2MSQyIiwidjEkMyIsInYyJDAiLCJ2MSQ0IiwidjMkMCIsInYyJDEiLCJ2MSQ1Iiwic2l6ZSQyIiwic2l6ZSQzIiwidjIkMiIsInYxJDYiLCJzaXplJDQiLCJ2MiQzIiwidjEkNyIsInNpemUkNSIsInBvcyQzIiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMSIsImFyZ18xJDIiLCJhcmdfMSQzIiwiYXJnXzIiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInN0YWJsZV93aXRuZXNzJDEiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMCIsInN0YWJsZV93aXRuZXNzJDIiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMSIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJ0X3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl90JDYiLCJ0X3NleHBfZ3JhbW1hciQxIiwic3RhYmxlX3dpdG5lc3MkMyIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYmluX3NoYXBlX3QkNiIsImJpbl9zaXplX3QkNiIsImJpbl93cml0ZV90JDYiLCJmYWlsd2l0aHMiLCJzdHJpY3QiLCJoZXJlIiwibWVzc2FnZSIsImZhaWx3aXRocCIsInRlc3RzIiwiYiIsInNpemVfb2ZfYiIsIndyaXRlX2IiLCJiaW5fd3JpdGVyX2IiLCJvZl9iIiwiYmluX3JlYWRlcl9iIiwiYmluX2IiLCJvZl9hXzAxNCIsIm9mX2JfMDE1Iiwic2V4cF8wMjAiLCJ0YWdfMDIxIiwic2V4cF9hcmdzXzAyMiIsInJlczBfMDI0Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvZl9hXzAzMiIsIm9mX2JfMDMzIiwiYXJnMF8wMzQiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYl9zdGFibGVfd2l0bmVzcyIsInhfMDQ3IiwieF8wNDgiLCJlcXVhbCIsInhfMDQ5IiwieF8wNTAiLCJhXzA0MiIsImJfMDQzIiwiYV8wNDQiLCJiXzA0NSIsInJ1biIsInNhbml0aXplIiwidXBvbl91bnJlbGVhc2FibGVfaXNzdWUiLCJvZl9hXzAwNyIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsIm9mX2FfMDE4IiwieF8wMjAiLCJvZl9hXzAyMSIsInhfMDIyIiwibWFwJDEiLCJ2X3N0YXRlIiwidl92YWx1ZSIsInZfc3RhdGUkMCIsIm1lcmdlX2FsbCIsIkhlYXAiLCJub3RfeWV0X2luX2hlYXAiLCJoZWFwIiwiaGVhcCQwIiwic2VxJDIiLCJlbHQkMCIsIm5vdF95ZXRfaW5faGVhcCQwIiwic2VxIiwic2VxJDAiLCJzZXEkMSIsImVsdCIsImRlZmF1bHRfc2VlZCIsImRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDIiLCJnZW5lcmF0b3JfMDEyIiwiZ2VuZXJhdG9yXzAxMyIsInNpemVfMDE2IiwicmFuZG9tXzAxNyIsInNpemVfMDE0IiwicmFuZG9tXzAxNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDIiLCJvYnNlcnZlcl8wMDUiLCJvYnNlcnZlcl8wMDYiLCJ4XzAwNyIsInNpemVfMDA4IiwiaGFzaF8wMDkiLCJoYXNoXzAwOSQwIiwiaGFzaF8wMDkkMSIsImhhc2hfMDA5JDIiLCJoYXNoXzAwOSQzIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MiIsInNocmlua2VyXzAwMSIsInNocmlua2VyXzAwMiIsInhfMDA0IiwieF8wMDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MyIsImdlbmVyYXRvcl8wMzMiLCJnZW5lcmF0b3JfMDM0IiwiZ2VuZXJhdG9yXzAzNSIsInNpemVfMDQwIiwicmFuZG9tXzA0MSIsInNpemVfMDM4IiwicmFuZG9tXzAzOSIsInNpemVfMDM2IiwicmFuZG9tXzAzNyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDMiLCJvYnNlcnZlcl8wMjQiLCJvYnNlcnZlcl8wMjUiLCJvYnNlcnZlcl8wMjYiLCJ4XzAyNyIsInNpemVfMDI4IiwiaGFzaF8wMjkiLCJ4XzAzMCIsImhhc2hfMDI5JDAiLCJoYXNoXzAyOSQxIiwieF8wMzEiLCJoYXNoXzAyOSQyIiwiaGFzaF8wMjkkMyIsInhfMDMyIiwiaGFzaF8wMjkkNCIsImhhc2hfMDI5JDUiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzIiwic2hyaW5rZXJfMDE4Iiwic2hyaW5rZXJfMDE5Iiwic2hyaW5rZXJfMDIwIiwieF8wMjEiLCJ4XzAyMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0IiwiZ2VuZXJhdG9yXzA2MSIsImdlbmVyYXRvcl8wNjIiLCJnZW5lcmF0b3JfMDYzIiwiZ2VuZXJhdG9yXzA2NCIsInNpemVfMDcxIiwicmFuZG9tXzA3MiIsInNpemVfMDY5IiwicmFuZG9tXzA3MCIsInNpemVfMDY3IiwicmFuZG9tXzA2OCIsInNpemVfMDY1IiwicmFuZG9tXzA2NiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDQiLCJvYnNlcnZlcl8wNTAiLCJvYnNlcnZlcl8wNTEiLCJvYnNlcnZlcl8wNTIiLCJvYnNlcnZlcl8wNTMiLCJ4XzA1NCIsInNpemVfMDU1IiwiaGFzaF8wNTYiLCJ4XzA1NyIsImhhc2hfMDU2JDAiLCJoYXNoXzA1NiQxIiwieF8wNTgiLCJoYXNoXzA1NiQyIiwiaGFzaF8wNTYkMyIsInhfMDU5IiwiaGFzaF8wNTYkNCIsImhhc2hfMDU2JDUiLCJ4XzA2MCIsImhhc2hfMDU2JDYiLCJoYXNoXzA1NiQ3IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NCIsInNocmlua2VyXzA0MiIsInNocmlua2VyXzA0MyIsInNocmlua2VyXzA0NCIsInNocmlua2VyXzA0NSIsInhfMDQ2IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDUiLCJnZW5lcmF0b3JfMDk2IiwiZ2VuZXJhdG9yXzA5NyIsImdlbmVyYXRvcl8wOTgiLCJnZW5lcmF0b3JfMDk5IiwiZ2VuZXJhdG9yXzEwMCIsInNpemVfMTA5IiwicmFuZG9tXzExMCIsInNpemVfMTA3IiwicmFuZG9tXzEwOCIsInNpemVfMTA1IiwicmFuZG9tXzEwNiIsInNpemVfMTAzIiwicmFuZG9tXzEwNCIsInNpemVfMTAxIiwicmFuZG9tXzEwMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDUiLCJvYnNlcnZlcl8wODMiLCJvYnNlcnZlcl8wODQiLCJvYnNlcnZlcl8wODUiLCJvYnNlcnZlcl8wODYiLCJvYnNlcnZlcl8wODciLCJ4XzA4OCIsInNpemVfMDg5IiwiaGFzaF8wOTAiLCJ4XzA5MSIsImhhc2hfMDkwJDAiLCJoYXNoXzA5MCQxIiwieF8wOTIiLCJoYXNoXzA5MCQyIiwiaGFzaF8wOTAkMyIsImhhc2hfMDkwJDQiLCJoYXNoXzA5MCQ1IiwiaGFzaF8wOTAkNiIsImhhc2hfMDkwJDciLCJ4XzA5NSIsImhhc2hfMDkwJDgiLCJoYXNoXzA5MCQ5IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NSIsInNocmlua2VyXzA3MyIsInNocmlua2VyXzA3NCIsInNocmlua2VyXzA3NSIsInNocmlua2VyXzA3NiIsInNocmlua2VyXzA3NyIsInhfMDc4IiwieF8wNzkiLCJ4XzA4MCIsInhfMDgxIiwieF8wODIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NiIsImdlbmVyYXRvcl8xMzgiLCJnZW5lcmF0b3JfMTM5IiwiZ2VuZXJhdG9yXzE0MCIsImdlbmVyYXRvcl8xNDEiLCJnZW5lcmF0b3JfMTQyIiwiZ2VuZXJhdG9yXzE0MyIsInNpemVfMTU0IiwicmFuZG9tXzE1NSIsInNpemVfMTUyIiwicmFuZG9tXzE1MyIsInNpemVfMTUwIiwicmFuZG9tXzE1MSIsInNpemVfMTQ4IiwicmFuZG9tXzE0OSIsInNpemVfMTQ2IiwicmFuZG9tXzE0NyIsInNpemVfMTQ0IiwicmFuZG9tXzE0NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDYiLCJvYnNlcnZlcl8xMjMiLCJvYnNlcnZlcl8xMjQiLCJvYnNlcnZlcl8xMjUiLCJvYnNlcnZlcl8xMjYiLCJvYnNlcnZlcl8xMjciLCJvYnNlcnZlcl8xMjgiLCJ4XzEyOSIsInNpemVfMTMwIiwiaGFzaF8xMzEiLCJ4XzEzMiIsImhhc2hfMTMxJDAiLCJoYXNoXzEzMSQxIiwieF8xMzMiLCJoYXNoXzEzMSQyIiwiaGFzaF8xMzEkMyIsInhfMTM0IiwiaGFzaF8xMzEkNCIsImhhc2hfMTMxJDUiLCJ4XzEzNSIsImhhc2hfMTMxJDYiLCJoYXNoXzEzMSQ3IiwieF8xMzYiLCJoYXNoXzEzMSQ4IiwiaGFzaF8xMzEkOSIsInhfMTM3IiwiaGFzaF8xMzEkMTAiLCJoYXNoXzEzMSQxMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDYiLCJzaHJpbmtlcl8xMTEiLCJzaHJpbmtlcl8xMTIiLCJzaHJpbmtlcl8xMTMiLCJzaHJpbmtlcl8xMTQiLCJzaHJpbmtlcl8xMTUiLCJzaHJpbmtlcl8xMTYiLCJ4XzExNyIsInhfMTE4IiwieF8xMTkiLCJ4XzEyMCIsInhfMTIxIiwieF8xMjIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTIiLCJnZW5lcmF0b3JfMTY2IiwiZ2VuZXJhdG9yXzE2NyIsInNpemVfMTY4IiwicmFuZG9tXzE2OSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyIiwib2JzZXJ2ZXJfMTYwIiwib2JzZXJ2ZXJfMTYxIiwic2l6ZV8xNjQiLCJoYXNoXzE2NSIsInhfMTYzIiwieF8xNjIiLCJoYXNoXzE2NSQwIiwiaGFzaF8xNjUkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyIiwic2hyaW5rZXJfMTU2Iiwic2hyaW5rZXJfMTU3IiwieF8xNTkiLCJ4XzE1OCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMyIsImdlbmVyYXRvcl8xODQiLCJnZW5lcmF0b3JfMTg1IiwiZ2VuZXJhdG9yXzE4NiIsInNpemVfMTg3IiwicmFuZG9tXzE4OCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzIiwib2JzZXJ2ZXJfMTc2Iiwib2JzZXJ2ZXJfMTc3Iiwib2JzZXJ2ZXJfMTc4Iiwic2l6ZV8xODIiLCJoYXNoXzE4MyIsInhfMTgxIiwieF8xODAiLCJ4XzE3OSIsImhhc2hfMTgzJDAiLCJoYXNoXzE4MyQxIiwiaGFzaF8xODMkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzIiwic2hyaW5rZXJfMTcwIiwic2hyaW5rZXJfMTcxIiwic2hyaW5rZXJfMTcyIiwieF8xNzUiLCJ4XzE3NCIsInhfMTczIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0IiwiZ2VuZXJhdG9yXzIwNyIsImdlbmVyYXRvcl8yMDgiLCJnZW5lcmF0b3JfMjA5IiwiZ2VuZXJhdG9yXzIxMCIsInNpemVfMjExIiwicmFuZG9tXzIxMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0Iiwib2JzZXJ2ZXJfMTk3Iiwib2JzZXJ2ZXJfMTk4Iiwib2JzZXJ2ZXJfMTk5Iiwib2JzZXJ2ZXJfMjAwIiwic2l6ZV8yMDUiLCJoYXNoXzIwNiIsInhfMjA0IiwieF8yMDMiLCJ4XzIwMiIsInhfMjAxIiwiaGFzaF8yMDYkMCIsImhhc2hfMjA2JDEiLCJoYXNoXzIwNiQyIiwiaGFzaF8yMDYkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0Iiwic2hyaW5rZXJfMTg5Iiwic2hyaW5rZXJfMTkwIiwic2hyaW5rZXJfMTkxIiwic2hyaW5rZXJfMTkyIiwieF8xOTYiLCJ4XzE5NSIsInhfMTk0IiwieF8xOTMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTUiLCJnZW5lcmF0b3JfMjM1IiwiZ2VuZXJhdG9yXzIzNiIsImdlbmVyYXRvcl8yMzciLCJnZW5lcmF0b3JfMjM4IiwiZ2VuZXJhdG9yXzIzOSIsInNpemVfMjQwIiwicmFuZG9tXzI0MSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1Iiwib2JzZXJ2ZXJfMjIzIiwib2JzZXJ2ZXJfMjI0Iiwib2JzZXJ2ZXJfMjI1Iiwib2JzZXJ2ZXJfMjI2Iiwib2JzZXJ2ZXJfMjI3Iiwic2l6ZV8yMzMiLCJoYXNoXzIzNCIsInhfMjMyIiwieF8yMzEiLCJ4XzIzMCIsInhfMjI5IiwieF8yMjgiLCJoYXNoXzIzNCQwIiwiaGFzaF8yMzQkMSIsImhhc2hfMjM0JDIiLCJoYXNoXzIzNCQzIiwiaGFzaF8yMzQkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1Iiwic2hyaW5rZXJfMjEzIiwic2hyaW5rZXJfMjE0Iiwic2hyaW5rZXJfMjE1Iiwic2hyaW5rZXJfMjE2Iiwic2hyaW5rZXJfMjE3IiwieF8yMjIiLCJ4XzIyMSIsInhfMjIwIiwieF8yMTkiLCJ4XzIxOCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNiIsImdlbmVyYXRvcl8yNjgiLCJnZW5lcmF0b3JfMjY5IiwiZ2VuZXJhdG9yXzI3MCIsImdlbmVyYXRvcl8yNzEiLCJnZW5lcmF0b3JfMjcyIiwiZ2VuZXJhdG9yXzI3MyIsInNpemVfMjc0IiwicmFuZG9tXzI3NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2Iiwib2JzZXJ2ZXJfMjU0Iiwib2JzZXJ2ZXJfMjU1Iiwib2JzZXJ2ZXJfMjU2Iiwib2JzZXJ2ZXJfMjU3Iiwib2JzZXJ2ZXJfMjU4Iiwib2JzZXJ2ZXJfMjU5Iiwic2l6ZV8yNjYiLCJoYXNoXzI2NyIsInhfMjY1IiwieF8yNjQiLCJ4XzI2MyIsInhfMjYyIiwieF8yNjEiLCJ4XzI2MCIsImhhc2hfMjY3JDAiLCJoYXNoXzI2NyQxIiwiaGFzaF8yNjckMiIsImhhc2hfMjY3JDMiLCJoYXNoXzI2NyQ0IiwiaGFzaF8yNjckNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2Iiwic2hyaW5rZXJfMjQyIiwic2hyaW5rZXJfMjQzIiwic2hyaW5rZXJfMjQ0Iiwic2hyaW5rZXJfMjQ1Iiwic2hyaW5rZXJfMjQ2Iiwic2hyaW5rZXJfMjQ3IiwieF8yNTMiLCJ4XzI1MiIsInhfMjUxIiwieF8yNTAiLCJ4XzI0OSIsInhfMjQ4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4yIiwib2JzZXJ2ZXJfMjgyIiwib2JzZXJ2ZXJfMjgzIiwiZ2VuZXJhdG9yXzI4NCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMyIsIm9ic2VydmVyXzI5MyIsIm9ic2VydmVyXzI5NCIsIm9ic2VydmVyXzI5NSIsImdlbmVyYXRvcl8yOTYiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjQiLCJvYnNlcnZlcl8zMDciLCJvYnNlcnZlcl8zMDgiLCJvYnNlcnZlcl8zMDkiLCJvYnNlcnZlcl8zMTAiLCJnZW5lcmF0b3JfMzExIiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm41Iiwib2JzZXJ2ZXJfMzI0Iiwib2JzZXJ2ZXJfMzI1Iiwib2JzZXJ2ZXJfMzI2Iiwib2JzZXJ2ZXJfMzI3Iiwib2JzZXJ2ZXJfMzI4IiwiZ2VuZXJhdG9yXzMyOSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNiIsIm9ic2VydmVyXzM0NCIsIm9ic2VydmVyXzM0NSIsIm9ic2VydmVyXzM0NiIsIm9ic2VydmVyXzM0NyIsIm9ic2VydmVyXzM0OCIsIm9ic2VydmVyXzM0OSIsImdlbmVyYXRvcl8zNTAiLCJvZl9oYXNoIiwiTSIsIm9mX3ByZWRpY2F0ZSIsInNpbmdsZXRvbiIsImRvdWJsZXRvbiIsImVudW0kMCIsIm9mX2xpc3QiLCJsaXN0IiwieSIsImkiLCJvZl9mdW4iLCJjb21wYXJpc29uIiwiZXEiLCJsdCIsImd0IiwiYyIsInJldHVybiQwIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJzaW5nbGV0b24kMCIsImRvdWJsZXRvbiQwIiwicmFuZG9tIiwib2ZfZnVuJDAiLCJvZl9zZXF1ZW5jZSIsInAiLCJrIiwiZ2VvbWV0cmljIiwibGlzdF93aXRoX2xlbmd0aCIsImxlbmd0aCIsImNvbXBhcmVfZm4iLCJkb20iLCJnZXRfaW5kZXgiLCJiXzM1MiIsImFfMzUxIiwiZXF1YWxfZm4iLCJjbXAiLCJlbXB0eSIsIm5vbmRldGVybWluaXN0aWNfc3RhdGUiLCJyYW5kb21fc3RhdGVfb2Zfc2VlZCIsInNlZWQiLCJzdHIiLCJtYWtlX3NlZWQiLCJzdHJpbmciLCJtYWtlX3Nocmlua19jb3VudCIsIm1ha2VfY29uZmlnIiwic2l6ZXMiLCJ0cmlhbHMiLCJzaHJpbmtfYXR0ZW1wdHMiLCJtYWtlX3Rlc3RfbSIsImdlbiIsInNocmlua2VyIiwic2V4cF9vZiIsInJhbmRvbV92YWx1ZSIsInJhbmRvbV9zZXF1ZW5jZSIsImNvbmZpZyIsInNlcXVlbmNlIiwidGVzdCIsImV4YW1wbGVzIiwidGVzdF9tIiwidGVzdF9vcl9lcnJvciIsInRlc3RfZGlzdGluY3RfdmFsdWVzIiwiZGlzdGluY3RfdmFsdWVzIiwic2V4cF9vZiQwIiwic2V0Iiwic2V0JDAiLCJhY3R1YWxfY291bnQiLCJzZXhwX29mX2VsdCIsInhfMzUzIiwidmFsdWVzIiwibWF0Y2giLCJyZXMiLCJoIiwidGVzdF9jYW5fZ2VuZXJhdGUiLCJzZXhwX29mX3ZhbHVlIiwieF8zNTQiLCJkZWZhdWx0X3RyaWFsX2NvdW50IiwiZGVmYXVsdF9zaXplcyIsImdlbmVyYXRlX2EiLCJvYnNlcnZlX2EiLCJzaHJpbmtfYSIsIm5vcm1hbGl6ZSIsImxlbmd0aF9mdW4iLCJzbGljZSIsInN1Yl9mdW4iLCJzdGFydCIsInN0b3AiLCJzdG9wJDAiLCJsZW4iLCJnZW5lcmF0b3JfMDAzIiwib2JzZXJ2ZXJfMDAyIiwiYmluYXJ5X3NlYXJjaCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIiwib2ZfYXJyYXkiLCJhcHBlbmQiLCJmaWx0ZXIiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsInBhcnRpdGlvbl90ZiIsInBhcnRpdGlvbl9tYXAiLCJtZW0iLCJpc19lbXB0eSIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRpIiwiaXRlcmkiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJjb3VudGkiLCJmaW5kaSIsImZpbmRfbWFwaSIsIm1hcGkiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwibWFrZV9tYXRyaXgiLCJjb3B5X21hdHJpeCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiYmxpdCIsImJsaXRvIiwidW5zYWZlX2JsaXQiLCJzdWIiLCJzdWJvIiwiZm9sZGluZ19tYXAiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcCIsImZvbGRfbWFwaSIsImZvbGRfcmlnaHQiLCJzb3J0Iiwic3RhYmxlX3NvcnQiLCJpc19zb3J0ZWQiLCJpc19zb3J0ZWRfc3RyaWN0bHkiLCJtZXJnZSIsInBhcnRpdGlvbmlfdGYiLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsInRyYW5zcG9zZSIsInRyYW5zcG9zZV9leG4iLCJmaWx0ZXJfb3B0IiwiaXRlcjJfZXhuIiwibWFwMl9leG4iLCJmb2xkMl9leG4iLCJmb3JfYWxsMl9leG4iLCJleGlzdHMyX2V4biIsInN3YXAiLCJyZXZfaW5wbGFjZSIsInJldiIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kX2V4biIsImZpbmRfbWFwX2V4biIsImZpbmRpX2V4biIsImZpbmRfbWFwaV9leG4iLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsInJlZHVjZSIsInJlZHVjZV9leG4iLCJwZXJtdXRlIiwicmFuZG9tX2VsZW1lbnQiLCJyYW5kb21fZWxlbWVudF9leG4iLCJ6aXAiLCJ6aXBfZXhuIiwidW56aXAiLCJzb3J0ZWRfY29weSIsImxhc3QiLCJ0b19zZXF1ZW5jZSIsInRvX3NlcXVlbmNlX211dGFibGUiLCJuZ2V0IiwibnNldCIsImdldCIsImNvbXBhcmVfdCIsImFfMDA0IiwiYl8wMDUiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiY29tcGFyZV9hIiwiY29tcGFyZV9iIiwidF8wMDYiLCJ0XzAwNSIsInRfMDA4IiwidF8wMDciLCJnZW5fbm9uX2VtcHR5IiwiZ2VuX3dpdGhfbGVuZ3RoIiwiZ2VuX2ZpbHRlcmVkIiwiZ2VuX3Blcm11dGF0aW9ucyIsIm1vZHVsZV9uYW1lJDAiLCJtb2R1bGVfbmFtZSIsImhhc2hhYmxlX3MiLCJmaW5kX211bHRpIiwicmVtb3ZlX211bHRpIiwiYWRkX211bHRpIiwiZGVjciIsImluY3IiLCJ0b19hbGlzdCIsInNpbWlsYXIiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwibWFwaV9pbnBsYWNlIiwiZmlsdGVyaV9pbnBsYWNlIiwiZmlsdGVyX2lucGxhY2UiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZGF0YSIsImtleXMiLCJtZXJnZV9pbnRvIiwiZmluZF9hbmRfcmVtb3ZlIiwiZmluZGlfYW5kX2NhbGwyIiwiZmluZGlfYW5kX2NhbGwxIiwiZmluZGlfYW5kX2NhbGwiLCJmaW5kX2FuZF9jYWxsMiIsImZpbmRfYW5kX2NhbGwxIiwiZmluZF9hbmRfY2FsbCIsImZpbmRpX29yX2FkZCIsImZpbmRfb3JfYWRkIiwicGFydGl0aW9uX21hcGkiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9yYW5kb21seV9leG4iLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfZXhuIiwiY2hvb3NlIiwicmVtb3ZlIiwiaXRlcl9rZXlzIiwiY2xlYXIiLCJzZXhwX29mX2tleSIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfbWFwcGVkIiwib2ZfYWxpc3RfbXVsdGkiLCJvZl9hbGlzdF9leG4iLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsIm9mX2FsaXN0IiwiaGFzaF9wYXJhbSIsInZhbGlkYXRlIiwiZ3Jvd3RoX2FsbG93ZWQiLCJoYXNoYWJsZSIsIm9mX2FsaXN0JDAiLCJsIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJvZl9hbGlzdF9vcl9lcnJvciQwIiwib2ZfYWxpc3RfZXhuJDAiLCJvZl9hbGlzdF9tdWx0aSQwIiwiY3JlYXRlX21hcHBlZCQwIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsImNvbWJpbmUiLCJiaW5fc2hhcGVfZWwiLCJiaW5fc2l6ZV9lbCIsImJpbl93cml0ZV9lbCIsImJpbl9yZWFkX2VsIiwiaXRlciQxIiwia2V5IiwibmV4dCIsImludmFyaWFudF9rZXkiLCJzZXhwX29mX3YiLCJ2X29mX3NleHAiLCJkYXRhX3N0YWJsZV93aXRuZXNzIiwiZXF1YWxfbV90IiwibV90X3NleHBfZ3JhbW1hciIsIm1fdF9vZl9zZXhwIiwic2V4cF9vZl9tX3QiLCJvZl9hbGlzdF9vcHRpb24iLCJhbGlzdCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fdCIsIktleSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGEiLCJzaXplXzAwNCIsInJhbmRvbV8wMDUiLCJxdWlja2NoZWNrX29ic2VydmVyX21fdCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YSIsInhfMDA2IiwicXVpY2tjaGVja19zaHJpbmtlcl9tX3QiLCJxdWlja2NoZWNrX3Nocmlua2VyX2RhdGEiLCJoYXNoYWJsZSQwIiwib2ZfbGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzMSIsInNpemVfb2ZfayIsInNpemVfb2ZfdiIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJ3cml0ZV9rIiwid3JpdGVfdiIsImJpbl93cml0ZXJfayIsImJpbl93cml0ZXJfdiIsIm9mX2siLCJvZl92IiwiYmluX3JlYWRlcl9rIiwiYmluX3JlYWRlcl92IiwiYmluX2siLCJiaW5fdiIsImNtcF9rIiwiY21wX3YiLCJ0XzAwNCIsInRfMDAzIiwicmlnaHRfMDA4IiwibGVmdF8wMDciLCJyaWdodF8wMTIiLCJsZWZ0XzAxMSIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDEwIiwibGVmdF8wMDkiLCJvZl9rXzAxNyIsIm9mX3ZfMDE4Iiwic2V4cF8wNDUiLCJhcmcxXzA0MiIsImFyZzBfMDQxIiwicmVzMF8wNDMiLCJhdG9tXzAyMSIsInNleHBfYXJnc18wMjQiLCJhdG9tXzAyMSQwIiwiYXJnMF8wMzIiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJyZXMwXzAzMyIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzOCIsInJlczFfMDQ0Iiwib2Zfa18wNDYiLCJvZl92XzA0NyIsImFyZzFfMDU2IiwiYXJnMF8wNTUiLCJyZXMwXzA1NyIsInZfMDQ4IiwicmVzMV8wNTgiLCJ2XzA1MCIsImFyZzFfMDUyIiwiYXJnMF8wNTEiLCJyZXMwXzA1MyIsInJlczFfMDU0Iiwidl8wNDkiLCJrX3N0YWJsZV93aXRuZXNzIiwidl9zdGFibGVfd2l0bmVzcyIsImRpZmYiLCJrJDAiLCJkaWZmJDAiLCJ2JDAiLCJtYXBfZGF0YSIsImxlZnQiLCJyaWdodCIsImdlbl90cmVlIiwiY29tcGFyYXRvciIsImtfZ2VuIiwidl9nZW4iLCJvYnNfdHJlZSIsImtfb2JzIiwidl9vYnMiLCJzaHJfdHJlZSIsImtfc2hyIiwidl9zaHIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwiaGFzaF9mb2xkX2RpcmVjdCIsIm9mX2hhc2h0YmxfZXhuIiwiaGFzaHRibCIsInRyZWVfb2ZfaGFzaHRibF9leG4iLCJrZXlfc2V0Iiwia2V5X3NldF9vZl90cmVlIiwib2Zfa2V5X3NldCIsInRyZWVfb2Zfa2V5X3NldCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJ0b190cmVlJDAiLCJyYW5rIiwibnRoX2V4biIsIm50aCIsImNsb3Nlc3Rfa2V5IiwicmFuZ2VfdG9fYWxpc3QiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInN1YnJhbmdlIiwic3BsaXRfbHRfZ2UiLCJzcGxpdF9sZV9ndCIsInNwbGl0IiwibWF4X2VsdF9leG4iLCJtaW5fZWx0X2V4biIsImZvbGRfc3ltbWV0cmljX2RpZmYiLCJzeW1tZXRyaWNfZGlmZiIsIm1lcmdlX3NrZXdlZCIsImtleXMkMCIsImNvbXBhcmVfZGlyZWN0IiwiY29tYmluZV9lcnJvcnMiLCJmb2xkMiIsIml0ZXIyIiwiaXRlcmlfdW50aWwiLCJpbnZhcmlhbnRzIiwidmFsaWRhdGVpIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwia2V5X3NldCQwIiwia2V5X3NldCQxIiwiY29tcGFyYXRvcl9zIiwiaW52YXJpYW50cyQwIiwiZW1wdHkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDAiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMCIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQwIiwib2Zfc2VxdWVuY2VfZXhuJDAiLCJvZl9zZXF1ZW5jZV9tdWx0aSQwIiwib2Zfc2VxdWVuY2VfZm9sZCQwIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDAiLCJvZl9saXN0X3dpdGhfa2V5JDAiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDAiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQwIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiZm9yX2FsbGkkMCIsImV4aXN0c2kkMCIsImNvdW50JDAiLCJjb3VudGkkMCIsInNwbGl0JDAiLCJzcGxpdF9sZV9ndCQwIiwic3BsaXRfbHRfZ2UkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2xpc3Rfd2l0aF9rZXkiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwib2ZfaXRlcmkiLCJvZl9pdGVyaV9leG4iLCJ0b190cmVlIiwiZGF0YV9lcXVhbCIsImxvd2VyX3BhcnQiLCJ1cHBlcl9wYXJ0IiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsIm1pbiIsIm1heCIsIm9yZGVyIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiaG93Iiwic2VnbWVudF9vZiIsIm1hcF9rZXlzIiwibWFwX2tleXNfZXhuIiwidHJhbnNwb3NlX2tleXMiLCJpbml0X2Zvcl9iaW5fcHJvdCIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsIm1hcF9rZXlzJDEiLCJtYXBfa2V5c19leG4kMSIsInRyYW5zcG9zZV9rZXlzJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMSIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQxIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwib2ZfaXRlcmkkMiIsIm9mX2l0ZXJpX2V4biQyIiwib2Zfa2V5X3NldCQxIiwidG9fdHJlZSQyIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImxlbmd0aCQxIiwic2V0JDEiLCJhZGQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiZmluZF9leG4kMSIsImZpbmQkMSIsInJlbW92ZSQxIiwibWVtJDEiLCJpdGVyX2tleXMkMSIsIml0ZXIkMiIsIml0ZXJpJDEiLCJpdGVyaV91bnRpbCQxIiwiaXRlcjIkMSIsIm1hcCQyIiwibWFwaSQxIiwiZm9sZCQxIiwiZm9sZF91bnRpbCQxIiwiZm9sZF9yaWdodCQxIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXIkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXAkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwicGFydGl0aW9uX3RmJDEiLCJjb21iaW5lX2Vycm9ycyQxIiwiY29tcGFyZV9kaXJlY3QkMSIsImtleXMkMiIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGVpJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwibWluX2VsdCQxIiwibWluX2VsdF9leG4kMSIsIm1heF9lbHQkMSIsIm1heF9lbHRfZXhuJDEiLCJmb3JfYWxsJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzJDEiLCJleGlzdHNpJDEiLCJjb3VudCQxIiwiY291bnRpJDEiLCJzcGxpdCQxIiwic3BsaXRfbGVfZ3QkMSIsInNwbGl0X2x0X2dlJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJzdGFibGVfd2l0bmVzc19tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxNiIsImVycm9yX3NvdXJjZV8wNjYiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsIm9mX2FfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5Iiwic2V4cF9hcmdzXzAyNSIsInJlczBfMDI3Iiwib2ZfYV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwieCQxIiwiYV8wNDEiLCJiXzA0MiIsImFfMDQzIiwiYl8wNDQiLCJhXzA0NSIsImJfMDQ2IiwiZ2VuZXJhdG9yXzA1NiIsInNpemVfMDYxIiwicmFuZG9tXzA2MiIsInNpemVfMDU5IiwicmFuZG9tXzA2MCIsInNpemVfMDU3IiwicmFuZG9tXzA1OCIsInhfMDUxIiwic2l6ZV8wNTIiLCJoYXNoXzA1MyIsImhhc2hfMDUzJDAiLCJoYXNoXzA1MyQxIiwiaGFzaF8wNTMkMiIsInhfMDU1IiwiaGFzaF8wNTMkMyIsImhhc2hfMDUzJDQiLCJzaHJpbmtlcl8wNDciLCJvZl9hXzA2MyIsInNleHBfMDY4IiwidGFnXzA2OSIsInNleHBfYXJnc18wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwic2V4cF9hcmdzXzA3NSIsImFyZzBfMDc2IiwicmVzMF8wNzciLCJvZl9hXzA3OSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImFfMDg1IiwiYl8wODYiLCJhXzA4NyIsImJfMDg4IiwiZXF1YWwkMiIsImFfMDg5IiwiYl8wOTAiLCJhXzA5MSIsImJfMDkyIiwiZWx0X2dlbiIsImVsdF9vYnMiLCJlbHRfc2hyIiwiZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvIiwidG9fbWFwIiwib2ZfbWFwX2tleXMiLCJvZl9oYXNoX3NldCIsImhzZXQiLCJvZl9oYXNodGJsX2tleXMiLCJ1bmlvbiQwIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMCIsInN1bSQwIiwiZmluZF9tYXAkMCIsInJlbW92ZV9pbmRleCQwIiwiaXNfc3Vic2V0JDAiLCJhcmVfZGlzam9pbnQkMCIsIm9mX2FycmF5JDAiLCJ0b19hcnJheSQwIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDAiLCJlbGVtZW50cyQwIiwiY2hvb3NlJDAiLCJjaG9vc2VfZXhuJDAiLCJncm91cF9ieSQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQwIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwic3RhYmxlX2RlZHVwX2xpc3QiLCJ4cyIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl9saXN0JDMiLCJvZl9zZXF1ZW5jZSQzIiwib2ZfaGFzaF9zZXQkMyIsIm9mX2hhc2h0Ymxfa2V5cyQzIiwib2ZfYXJyYXkkMyIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMyIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQzIiwib2Zfc29ydGVkX2FycmF5JDMiLCJ1bmlvbl9saXN0JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwib2ZfdHJlZSQzIiwib2ZfbWFwX2tleXMkMyIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwidCQwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhX3NleHBfZ3JhbW1hciIsImFfMDEwIiwiYl8wMTEiLCJub25lIiwic29tZSIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInVuaW9uIiwicjEiLCJ0MSQwIiwicjIiLCJ0MiQwIiwibjEiLCJuMiIsImlzX2NvbXByZXNzZWQiLCJwaHlzX2VxdWFsIiwidW5pb25fZmluZF9nZXRfY2hlY2tfbm9fcGVuZGluIiwiY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIiwiaW5jcl9sZW5ndGgiLCJpbmNyX3BlbmRpbmdfaXRlcnMiLCJkZWNyX3BlbmRpbmdfaXRlcnMiLCJ3aXRoX2l0ZXJhdGlvbl8ybCIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiZmlyc3RfZXhuIiwibGFzdF9leG4iLCJpc19maXJzdCIsImlzX2xhc3QiLCJtZW1fZWx0IiwicHJldiQwIiwiaW5zZXJ0X2FmdGVyJDAiLCJpbnNlcnRfYmVmb3JlJDAiLCJuZXdfZWx0IiwiaW5zZXJ0X2VtcHR5IiwiaW5zZXJ0X2xhc3QiLCJpbnNlcnRfZmlyc3QiLCJyZW1vdmVfbGFzdCIsInJlbW92ZV9maXJzdCIsInNlY29uZCIsIm5ld190IiwidmFsdWUkMCIsIm1vdmVfYmVmb3JlIiwiYW5jaG9yIiwiYWZ0ZXJfZWx0IiwibW92ZV90b19mcm9udCIsIm1vdmVfYWZ0ZXIiLCJtb3ZlX3RvX2JhY2siLCJhXzAxNSIsImJfMDE2Iiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJhXzAxNyIsImJfMDE4IiwiYV8wMTkiLCJiXzAyMCIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdGV4dCIsIm9mX3RleHQiLCJ2YWx1ZV9vZl9zZXhwIiwidGV4dCIsImZpbGVuYW1lIiwiYW5ub3RhdGVkIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX3ZhbHVlIiwiYmluX3NoYXBlX25vX3JhaXNlIiwiYmluX3NpemVfbm9fcmFpc2UiLCJiaW5fd3JpdGVfbm9fcmFpc2UiLCJiaW5fd3JpdGVyX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UiLCJiaW5fcmVhZF9ub19yYWlzZSQwIiwiYmluX3JlYWRlcl9ub19yYWlzZSIsImJpbl9ub19yYWlzZSIsIm5vX3JhaXNlX29mX3NleHAiLCJvZl9hXzAyNyIsInNleHBfb2Zfbm9fcmFpc2UiLCJvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWMiLCJvZl9zZXhwIiwic2V4cF9vZl9kYXRhIiwiYXJnMV8wMDIiLCJyZXMwXzAwMyIsInJlczFfMDA0Iiwia3YiLCJyZWFkIiwiZW5zdXJlX2Nhbl9tb2RpZnkiLCJsb29rdXAiLCJsb29rdXBfZXhuIiwiZW5xdWV1ZV91bmNoZWNrZWQiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlIiwiZW5xdWV1ZV9iYWNrIiwiZW5xdWV1ZV9mcm9udCIsImVucXVldWVfZXhuIiwiZW5xdWV1ZV9iYWNrX2V4biIsImVucXVldWVfZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2siLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IiwiZGVxdWV1ZV93aXRoX2tleSIsIm1heWJlX2t2IiwiZGVxdWV1ZV93aXRoX2tleV9leG4iLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXkiLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleSIsImRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZSIsImRlcXVldWVfYmFjayIsImRlcXVldWVfZnJvbnQiLCJsYXN0X3dpdGhfa2V5IiwiZmlyc3Rfd2l0aF9rZXkiLCJkZXF1ZXVlX2V4biIsImRlcXVldWVfYmFja19leG4iLCJkZXF1ZXVlX2Zyb250X2V4biIsImFjIiwiZmluaXNoIiwiZGVxdWV1ZV9hbGwiLCJyZW1vdmVfZXhuIiwibG9va3VwX2FuZF9yZW1vdmUiLCJyZXBsYWNlIiwicmVwbGFjZV9vcl9lbnF1ZXVlIiwicmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IiwicmVwbGFjZV9vcl9lbnF1ZXVlX2JhY2siLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwidW5zYWZlX3N1YiIsInN5bWJvbF9jb25jYXQiLCJlc2NhcGVkIiwiY29udGFpbnMiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwidW5jYXBpdGFsaXplIiwiaW5kZXgiLCJpbmRleF9leG4iLCJpbmRleF9mcm9tIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXgiLCJyaW5kZXhfZXhuIiwicmluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbV9leG4iLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0IiwidG9fbGlzdF9yZXYiLCJpc19zdWZmaXgiLCJpc19wcmVmaXgiLCJsc3BsaXQyX2V4biIsInJzcGxpdDJfZXhuIiwibHNwbGl0MiIsInJzcGxpdDIiLCJzcGxpdF9vbl9jaGFycyIsInNwbGl0X2xpbmVzIiwibGZpbmRpIiwicmZpbmRpIiwibHN0cmlwIiwicnN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY2hvcF9zdWZmaXhfZXhuIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3ByZWZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3BfcHJlZml4X2lmX2V4aXN0cyIsInN1ZmZpeCIsInByZWZpeCIsImRyb3Bfc3VmZml4IiwiZHJvcF9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeF9sZW5ndGgiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29uY2F0X2FycmF5IiwiY29uY2F0X2xpbmVzIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsInBhZF9sZWZ0IiwicGFkX3JpZ2h0IiwiaXNfc3VmZml4JDAiLCJpc19wcmVmaXgkMCIsImlzX3N1YnN0cmluZyQwIiwiaXNfc3Vic3RyaW5nX2F0JDAiLCJzdWJzdHJfaW5kZXgkMCIsInN1YnN0cl9pbmRleF9leG4kMCIsInN1YnN0cl9pbmRleF9hbGwkMCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0JDAiLCJzdWJzdHJfcmVwbGFjZV9hbGwkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInNleHBfMDA0IiwidGFnMiIsInZhbGlkYXRlX29yZGluYXJ5Iiwicm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIiwicm9idXN0bHlfY29tcGFyZSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsInN5bWJvbCQxNyIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsInJvYnVzdGx5X2NvbXBhcmUkMCIsInJvYnVzdF9zaWduIiwidG9fc3RyaW5nXzEyIiwiZ2VuX3VuaWZvcm1fZXhjbCIsImdlbl9pbmNsIiwiZ2VuX3dpdGhvdXRfbmFuIiwiZ2VuX2Zpbml0ZSIsImdlbl9wb3NpdGl2ZSIsImdlbl9uZWdhdGl2ZSIsImdlbl96ZXJvIiwiZ2VuX25hbiIsImdlbl9zdWJub3JtYWwiLCJnZW5fbm9ybWFsIiwiZ2VuX2luZmluaXRlIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsInRvX2ludF9leG4iLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwib2Zfc3RyaW5nX29wdCIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwiYmluX25hbWUiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJiaW5kIiwiam9pbiIsImlnbm9yZV9tIiwiYWxsX3VuaXQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwicGVlayIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsImJwcmludGYiLCJjb25zdCQwIiwiZXJyb3IiLCJlcnJvcl9zIiwiZm9yY2UiLCJpbnZhbGlkX2FyZ2YiLCJpZnByaW50ZiIsImlzX25vbmUiLCJpc19zb21lIiwia3NwcmludGYiLCJva19leG4iLCJwcmludF9zIiwiZXByaW50X3MiLCJwcm90ZWN0IiwicHJvdGVjdHgiLCJyYWlzZV9zIiwic3ltYm9sJDExIiwic3ByaW50ZiIsInN0YWdlIiwidW5zdGFnZSIsIndpdGhfcmV0dXJuX29wdGlvbiIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaXplX2FycmF5IiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlcl9hcnJheSIsImJpbl9yZWFkX2FycmF5IiwiYmluX3JlYWRfYXJyYXkkMCIsImJpbl9yZWFkZXJfYXJyYXkiLCJiaW5fYXJyYXkiLCJjb21wYXJlX2FycmF5IiwiZXF1YWxfYXJyYXkiLCJnbG9iYWxpemVfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImdsb2JhbGl6ZV9ib29sIiwiYm9vbF9vZl9zZXhwIiwic2V4cF9vZl9ib29sIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Jvb2wiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaXplX2NoYXIiLCJiaW5fd3JpdGVfY2hhciIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkX2NoYXIiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZGVyX2NoYXIiLCJiaW5fY2hhciIsImNvbXBhcmVfY2hhciIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9jaGFyIiwiZXF1YWxfY2hhciIsImdsb2JhbGl6ZV9jaGFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2l6ZV9mbG9hdCIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZXJfZmxvYXQiLCJiaW5fcmVhZF9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZGVyX2Zsb2F0IiwiYmluX2Zsb2F0IiwiY29tcGFyZV9mbG9hdCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZmxvYXQiLCJlcXVhbF9mbG9hdCIsImdsb2JhbGl6ZV9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2l6ZV9pbnQiLCJiaW5fd3JpdGVfaW50IiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZF9pbnQiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkZXJfaW50IiwiYmluX2ludCIsImNvbXBhcmVfaW50IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfaW50IiwiZXF1YWxfaW50IiwiZ2xvYmFsaXplX2ludCIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDMyJDAiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiY29tcGFyZV9pbnQzMiIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfaW50MzIiLCJlcXVhbF9pbnQzMiIsImdsb2JhbGl6ZV9pbnQzMiIsImludDMyX29mX3NleHAiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQzMiIsImJpbl9zaGFwZV9pbnQ2NCIsImJpbl9zaXplX2ludDY0IiwiYmluX3dyaXRlX2ludDY0IiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfaW50NjQkMCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJjb21wYXJlX2ludDY0IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9pbnQ2NCIsImVxdWFsX2ludDY0IiwiZ2xvYmFsaXplX2ludDY0IiwiaW50NjRfb2Zfc2V4cCIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2ludDY0IiwiYmluX3NoYXBlX2xhenlfdCIsImJpbl9zaXplX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRlcl9sYXp5X3QiLCJiaW5fbGF6eV90IiwiY29tcGFyZV9sYXp5X3QiLCJhXzA1NCIsImJfMDU1IiwiaGFzaF9mb2xkX2xhenlfdCIsImxhenlfdF9vZl9zZXhwIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9sYXp5X3QiLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaXplX2xpc3QiLCJiaW5fd3JpdGVfbGlzdCIsImJpbl93cml0ZXJfbGlzdCIsImJpbl9yZWFkX2xpc3QiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZGVyX2xpc3QiLCJiaW5fbGlzdCIsImNvbXBhcmVfbGlzdCIsImFfMDYzIiwiYl8wNjQiLCJhXzA2NSIsImJfMDY2IiwiaGFzaF9mb2xkX2xpc3QiLCJlcXVhbF9saXN0IiwiYV8wNjciLCJiXzA2OCIsImFfMDY5IiwiYl8wNzAiLCJnbG9iYWxpemVfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJnbG9iYWxpemVfbmF0aXZlaW50IiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImZ1bmMkNSIsImhhc2hfbmF0aXZlaW50IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX25hdGl2ZWludCIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlcl9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24kMCIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImNvbXBhcmVfb3B0aW9uIiwiYV8wODYiLCJiXzA4NyIsImVxdWFsX29wdGlvbiIsImFfMDkyIiwiYl8wOTMiLCJnbG9iYWxpemVfb3B0aW9uIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImdsb2JhbGl6ZV9zdHJpbmciLCJoYXNoX2ZvbGRfc3RyaW5nIiwiZnVuYyQ2IiwiaGFzaF9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsIm5hbWVfb2Zfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fd3JpdGVfYnl0ZXMiLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ieXRlcyIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fcmVhZF9yZWYiLCJiaW5fcmVhZF9yZWYkMCIsImJpbl9yZWFkZXJfcmVmIiwiYmluX3JlZiIsImNvbXBhcmVfcmVmIiwiYV8xMTUiLCJiXzExNiIsImFfMTE3IiwiYl8xMTgiLCJlcXVhbF9yZWYiLCJhXzExOSIsImJfMTIwIiwiYV8xMjEiLCJiXzEyMiIsImdsb2JhbGl6ZV9yZWYiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfcmVmIiwiZ3JvdXAkMTMiLCJiaW5fc2hhcGVfdW5pdCIsImJpbl9zaXplX3VuaXQiLCJiaW5fd3JpdGVfdW5pdCIsImJpbl93cml0ZXJfdW5pdCIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF91bml0JDAiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImNvbXBhcmVfdW5pdCIsImVxdWFsX3VuaXQiLCJnbG9iYWxpemVfdW5pdCIsImhhc2hfZm9sZF91bml0IiwiZnVuYyQ3IiwiaGFzaF91bml0IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3VuaXQiLCJncm91cCQxNCIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwic3RhYmxlX3dpdG5lc3NfdF9mcm96ZW4iLCJtYXhfbWVtX3dhaXRpbmdfZ2MiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMiLCJzdWJfc2hhcmVkIiwiYnN0ciIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIiwid3JpdGUiLCJkYXRhX2xlbiIsInRvdGFsX2xlbiIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInZfMDA1IiwicmVzMF8wMTEiLCJ2XzAwNiIsInJlczFfMDEyIiwidl8wMDciLCJyZXMyXzAxMyIsInBvc19hZnRlcl9zaXplX2hlYWRlciIsInBvc19hZnRlcl9kYXRhIiwiYXJnNF8wMjMiLCJhcmczXzAyMiIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInZfMDE0Iiwidl8wMTUiLCJyZXMxXzAyNSIsInZfMDE2IiwicmVzMl8wMjYiLCJ2XzAxNyIsInJlczNfMDI3Iiwidl8wMTgiLCJyZXM0XzAyOCIsIndyaXRlX2Jpbl9wcm90Iiwid3JpdGVyIiwibGFzdF9ub25tYXRjaF9wbHVzX29uZSIsIm1pbl9wb3MiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsImRhdGFfZW5kIiwiZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sIiwic2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIiwiaGVhZF9vcl90YWlsIiwic2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyIsInNsZW4iLCJmaXJzdF9ub25tYXRjaCIsIm1heF9wb3MiLCJzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwiZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImRhdGFfYmVnaW4iLCJnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nX2wiLCJ0b19ieXRlcyIsIm9mX2J5dGVzIiwiYnl0ZXMiLCJ0b19oZXgiLCJvZl9oZXhfZXhuIiwib2ZfYmluYXJ5X2V4biIsImFjY3VtIiwidG9fYmluYWJsZSQwIiwiZGlnZXN0X3N0cmluZyIsImRpZ2VzdF9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAyMiIsImVycm9yX3NvdXJjZV8wMzAiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsImFiYnJ2IiwiaXNfZHN0IiwidXRjX29mZnNldF9pbl9zZWNvbmRzIiwiYWJicnZfMDExIiwiaXNfZHN0XzAwOSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDciLCJ2X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInZfc2Vjb25kcyIsInhfMDE1Iiwic2Vjb25kcyIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHNfMDE5IiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzAxIiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJuZXdfcmVnaW1lIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwIiwibmV3X3JlZ2ltZV8wMjciLCJhcmdfMDI4IiwiYm5kc18wMjQiLCJhcmdfMDI2IiwiYm5kc18wMjQkMCIsInY1IiwidjciLCJ2NiIsInZfbmFtZSIsInZfb3JpZ2luYWxfZmlsZW5hbWUiLCJ2X2RpZ2VzdCIsInZfdHJhbnNpdGlvbnMiLCJ2X2xhc3RfcmVnaW1lX2luZGV4Iiwidl9kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSIsInZfbGVhcF9zZWNvbmRzIiwibGVhcF9zZWNvbmRzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJsYXN0X3JlZ2ltZV9pbmRleCIsInRyYW5zaXRpb25zIiwiZGlnZXN0Iiwib3JpZ2luYWxfZmlsZW5hbWUiLCJ0cmFuc2l0aW9uc18wMzkiLCJkaWdlc3RfMDM3Iiwib3JpZ2luYWxfZmlsZW5hbWVfMDM1IiwibmFtZV8wMzMiLCJsYXN0X3JlZ2ltZV9pbmRleF8wNDEiLCJsZWFwX3NlY29uZHNfMDQ1IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDQzIiwiYXJnXzA0NiIsImJuZHNfMDMyIiwiYXJnXzA0NCIsImJuZHNfMDMyJDAiLCJhcmdfMDQyIiwiYm5kc18wMzIkMSIsImFyZ18wNDAiLCJibmRzXzAzMiQyIiwiYXJnXzAzOCIsImJuZHNfMDMyJDMiLCJhcmdfMDM2IiwiYm5kc18wMzIkNCIsImFyZ18wMzQiLCJibmRzXzAzMiQ1Iiwiem9uZSIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsImFiYnJ2X2luZGV4IiwiaW5wdXRfdHpfZmlsZV9nZW4iLCJpbnB1dF90cmFuc2l0aW9uIiwiaW5wdXRfbGVhcF9zZWNvbmQiLCJ1dGNfbG9jYWxfY291bnQiLCJzdGRfd2FsbF9jb3VudCIsImxlYXBfY291bnQiLCJ0cmFuc2l0aW9uX2NvdW50IiwidHlwZV9jb3VudCIsImFiYnJ2X2NoYXJfY291bnQiLCJ0cmFuc2l0aW9uX3RpbWVzIiwidHJhbnNpdGlvbl9pbmRpY2VzIiwicmVnaW1lcyIsInJhd19hYmJydnMiLCJpbmRleGVkX2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsInJlZ2ltZXMkMCIsInJhd190cmFuc2l0aW9ucyIsInRpbWUiLCJyZWdpbWUiLCJyZXN0IiwibHR0IiwiaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIiwicmVhZF9oZWFkZXIiLCJtYWdpYyIsImJhZF92ZXJzaW9uIiwidmVyc2lvbiIsImlucHV0X3R6X2ZpbGVfdjEiLCJpbnB1dF90el9maWxlIiwiem9uZW5hbWUiLCJtYWtlX3pvbmUiLCJyZWFzb24iLCJvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUiLCJvZl91dGNfb2Zmc2V0IiwibGlrZWx5X21hY2hpbmVfem9uZXMiLCJ1dGMiLCJyZXNldF90cmFuc2l0aW9uX2NhY2hlIiwiZ2V0X3JlZ2ltZV9leG4iLCJlZmZlY3RpdmVfc3RhcnRfdGltZSIsIm1vZGUiLCJpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWMiLCJpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWMiLCJiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHMiLCJ0cmFuc2l0aW9uIiwiaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCIsImluZGV4JDAiLCJpbmRleCQxIiwiaW5kZXgkMiIsImluZGV4JDMiLCJpbmRleCQ0Iiwib2ZfaW50NjNfc2Vjb25kcyIsInRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leCIsIm9mX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zcGFuX3NpbmNlX2Vwb2NoIiwib2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCIsImluZGV4X29mX2RhdGVfYW5kX29mZGF5IiwiaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQiLCJpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50XyIsImFmdGVyIiwiYmVmb3JlIiwiaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfIiwiaW5kZXhfYWJicmV2aWF0aW9uX2V4biIsImluZGV4X29mZnNldF9mcm9tX3V0Y19leG4iLCJyYXciLCJ2YWxpZGF0aW9uX2ZhaWxlZCIsImFyZzJfMDAzIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDA2IiwiY3JlYXRlX2V4biIsImNyZWF0ZV9zdGFibGVfd2l0bmVzcyIsInJhd19zdGFibGVfd2l0bmVzcyIsInR5cGVfZXF1YWwiLCJyYWNlX2ZyZWVfY3JlYXRlX2xvb3AiLCJjZWxsIiwibmV3X3giLCJjdXJyZW50IiwidHlwZW5hbWUkMSIsImFsbG93ZWRfaW50cyIsImFsbG93ZWRfaW50cyQwIiwidHlwZW5hbWUkMCIsImltbWVkaWFjeSIsIm5ldmVyX3dpdGhfbmFtZSIsIm5ldmVyIiwidW5rbm93biIsIm9wdGlvbiIsImxpc3QkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwicmVmIiwidHVwbGUyIiwidHVwbGUzIiwidHVwbGU0IiwidHVwbGU1IiwiZnVuY3Rpb24kMCIsImludCQwIiwicmVmJDAiLCJhcnJheSQwIiwidHVwbGUyJDAiLCJ0dXBsZTMkMCIsInR1cGxlNCQwIiwidHVwbGU1JDAiLCJmdW5jdGlvbiQxIiwib3B0aW9uJDAiLCJsYXp5X3QiLCJwb3NzaWJseV91bmJveGVkIiwiY2hpbGRfdHlwZSIsInRoZV9vbmx5X2ZpZWxkIiwidmFyaWFudCIsInRhZyIsIm1vcmUiLCJubyIsIm1vcmVfYXJnX2xpc3QiLCJvbmVfYXJnX2xpc3QiLCJub19hcmdfbGlzdCIsIm5vX2FyZ19jb3VudCIsImhhc2hfc2V0IiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9iXzAxMSIsImFyZzFfMDEzIiwiYXJnMF8wMTIiLCJyZXMxXzAxNSIsImN1cnJ5IiwidW5jdXJyeSIsIm1hcF9mc3QiLCJtYXBfc25kIiwibWFwX2JvdGgiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsIm9mX2NfMDIxIiwic2V4cF8wMjkiLCJhcmcyXzAyNSIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMyXzAyOCIsIm9mX2FfMDMxIiwib2ZfYl8wMzIiLCJvZl9jXzAzMyIsImFyZzJfMDM2IiwiYXJnMV8wMzUiLCJyZXMxXzAzOCIsInJlczJfMDM5Iiwib2ZfYyIsImN1cnJ5JDAiLCJ1bmN1cnJ5JDAiLCJtYXBfZnN0JDAiLCJtYXBfc25kJDAiLCJtYXBfdHJkIiwibWFwX2FsbCIsImYzIiwibWFwMiQwIiwiejIiLCJ6MSIsImdldDMiLCJjbXAzIiwieiQwIiwiYzEiLCJjMiIsImVxMyIsImFyZzFfMDQ4IiwiYXJnMF8wNDciLCJyZXMwXzA0OSIsInJlczFfMDUwIiwiYV8wNTEiLCJiXzA1MiIsInRfMDU0IiwidF8wNTMiLCJ0XzA1NiIsInRfMDU1Iiwic2V4cF8wNjIiLCJhcmcxXzA1OSIsImFyZzBfMDU4IiwicmVzMF8wNjAiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwiYXJnMF8wNjQiLCJyZXMwXzA2NiIsInJlczFfMDY3IiwiczIiLCJzMSIsInMyJDAiLCJzMSQwIiwid2Vla2RheXMiLCJ3ZWVrZW5kcyIsInNpemVfMDE4IiwicmFuZG9tXzAxOSIsInNpemVfMDEyIiwicmFuZG9tXzAxMyIsInNpemVfMDEwIiwicmFuZG9tXzAxMSIsInJhbmRvbV8wMDkiLCJzaXplXzAwNiIsInJhbmRvbV8wMDciLCJoYXNoXzAwNSIsImhhc2hfMDA1JDAiLCJoYXNoXzAwNSQxIiwiaGFzaF8wMDUkMiIsImhhc2hfMDA1JDMiLCJoYXNoXzAwNSQ0IiwiaGFzaF8wMDUkNSIsImhhc2hfMDA1JDYiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidG9fc3RyaW5nX2xvbmciLCJhdG9tIiwidW5zdWdnZXN0ZWQiLCJpbnRfY2xhdXNlIiwic2hvcnRfY2xhdXNlIiwibG9uZ19jbGF1c2UiLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwNCIsImN1c3RvbV9wcmludGZfMDAzIiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDA3IiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsIm9mX2ludF91bmNoZWNrZWQiLCJkYXlzX2luX21vbnRoIiwiaW52YWxpZCIsIm1zZyIsImN1c3RvbV9wcmludGZfMDA1IiwiZGF5c19pbl9tb250aCQwIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJ4XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsIm9wdCIsInZhbHVlX2V4biIsImRlZmF1bHQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludCQwIiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsInJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkiLCJyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwic2hpZnRfZGVjaW1hbF9wb2ludCIsImJ5IiwicyQwIiwicyQxIiwibm90X3plcm8iLCJ1bmRlcnNjb3JlIiwidW5kZXJzY29yZSQwIiwiZSQxIiwiZXhwIiwiZXhwJDAiLCJuZWciLCJzaWduZWQiLCJzJDMiLCJkJDIiLCJzdWYiLCJwcmVmIiwicyQ0IiwiYnkkMCIsImJ5JDEiLCJzJDUiLCJzJDYiLCJieSQyIiwicyQ3IiwicyQyIiwiZmxvYXRfdG9fc3RyaW5nIiwieF9hYnMiLCJ0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlIiwicmVhbGx5X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsInN0ciQwIiwic3RyJDEiLCJzdHIkMiIsIm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiIsIm9mX211bHQiLCJ0b19tdWx0Iiwib2ZfcGVyY2VudGFnZSIsInRvX3BlcmNlbnRhZ2UiLCJvZl9icCIsInRvX2JwIiwib2ZfYnBfaW50IiwidG9fYnBfaW50Iiwic2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCIsIm9mX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsInRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsIm9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInJvdW5kX3NpZ25pZmljYW50Iiwic2lnbmlmaWNhbnRfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9tdWx0IiwiZGVjaW1hbF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsX3BlcmNlbnRhZ2UiLCJyb3VuZF9kZWNpbWFsX2JwIiwiYXJnMF8wMTAiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxOCIsInJlczBfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJleHBvbmVudCIsInByZWNpc2lvbiIsImV4cG9uZW50X0UiLCJkZWNpbWFsIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwidG9fc3RyaW5nJDEiLCJiaW5fc2hhcGVfdCQ3IiwidW5jaGVja2VkX3ZhbHVlIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImJpbl9zaGFwZV90JDgiLCJiaW5fc2hhcGVfdCQ5IiwiYmluX3NoYXBlX3QkMTAiLCJiaW5fd3JpdGVyX3QkNiIsImJpbl9yZWFkZXJfdCQ2IiwiYmluX3QkNiIsInR5cGVuYW1lX29mX3QkMSIsIm5hbWVfb2ZfdCQxIiwidHlwZXJlcF9vZl90JDEiLCJiaW5fc2hhcGVfdCQxMSIsImJpbl9zaGFwZV90JDEyIiwiaXNfemVybyIsImFwcGx5IiwiaXNfbmFuIiwiaXNfaW5mIiwic2lnbl9leG4iLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYkMCIsInRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiIsImZvcm1hdCQwIiwidG9fc3RyaW5nJDIiLCJiaW5fc2hhcGVfdCQxMyIsInRvX3N0cmluZyQzIiwiYmluX3NoYXBlX3QkMTQiLCJiaW5fd3JpdGVyX3QkNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsInRvX3N0cmluZyQ0Iiwic2V4cF9vZl90JDciLCJyYW5kb21pemUiLCJzcGFuIiwicmFuZG9tX3N0YXRlIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJuJDIiLCJuJDMiLCJuJDQiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwiYXJnXzAxNiIsImJuZHNfMDA2JDMiLCJibmRzXzAwNiQ0IiwiYm5kc18wMDYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50MzJfc2Vjb25kcyIsIm9mX21pbiIsIm9mX2hyIiwib2ZfZGF5Iiwib2ZfaW50X25zIiwib2ZfaW50X3VzIiwib2ZfaW50X21zIiwib2ZfaW50X3NlYyIsIm9mX2ludF9taW4iLCJvZl9pbnRfaHIiLCJvZl9pbnRfZGF5IiwiZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSIsInVuaXRfb2ZfdGltZSIsInNjYWxlX2J5X3VuaXRfb2ZfdGltZSIsImRheSQwIiwieCQyIiwidG9fc2hvcnRfc3RyaW5nIiwidF9vZl9zZXhwX3YxX3YyIiwiaXNfdjIiLCJzZXhwX29mX3RfdjFfdjIiLCJhYnNfdCIsInRvX3VuaXRfb2ZfdGltZSIsIm9mX3VuaXRfb2ZfdGltZSIsInN1ZmZpeF9vZl91bml0X29mX3RpbWUiLCJwYXJzZV9zdWZmaXgiLCJ1bml0X29mX3RpbWVfbGlzdCQxIiwidW5pdF9vZl90aW1lX2xpc3QiLCJ1bml0X29mX3RpbWVfbGlzdCQwIiwic3RhdGVfaXNfZmluYWwiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfZGF5Iiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm9mX2ludDYzX2V4biQwIiwidG9faW50NjMkMCIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNleHBfb2Zfc3BhbiIsInNwYW5fb2Zfc2V4cCIsImZsb2F0JDIiLCJzaW5jZV91bml4X2Vwb2NoIiwiaGFsZl9taWNyb3NlY29uZCIsInRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIiwibWF4X3ZhbHVlX3JlcHJlc2VudGFibGUiLCJvZl9pbnQ2M19leG4kMSIsInRvX2ludDYzJDEiLCJmYWlsIiwib2ZfaW50NjNfZXhuJDIiLCJ0b19pbnQ2MyQyIiwiY29tcGFyZSQ2IiwiYXJnX3R5cGUiLCJpc19pbnZhbGlkIiwib2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0Iiwic3ViX2V4biIsInRvX3N0cmluZ193aXRoX3VuaXQiLCJzaXh0eSIsInRob3VzYW5kIiwidW5pdCQwIiwibnVtX2RpZ2l0cyIsInRvX21pY3Jvc2Vjb25kX3N0cmluZyIsImV2ZXJ5Iiwic3RhcnQkMSIsInRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50NjNfbnNfc2luY2VfZXBvY2giLCJvdmVyZmxvdyIsImFkZF9vdmVyZmxvd2VkIiwic3ViX292ZXJmbG93ZWQiLCJhZGRfc2F0dXJhdGluZyIsInN1Yl9zYXR1cmF0aW5nIiwidG9faW50X25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50X25zX3NpbmNlX2Vwb2NoIiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwibWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0Iiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwidG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwibnNfc2luY2VfZXBvY2giLCJuc19wZXJfZGF5IiwiYXBwcm94X2RheXNfZnJvbV9lcG9jaCIsIm5zX3NpbmNlX3N0YXJ0X29mX2RheSIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5Iiwib2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwic3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIiwic3Bhbl9zaW5jZV9lcG9jaCIsInR3b19kaWdpdF9vZl9zdHJpbmciLCJuc19vZl8xMDBfbXMiLCJuc19vZl8xMF9tcyIsIm5zX29mXzFfbXMiLCJuc19vZl8xMDBfdXMiLCJuc19vZl8xMF91cyIsIm5zX29mXzFfdXMiLCJuc19vZl8xMDBfbnMiLCJuc19vZl8xMF9ucyIsIm5zX29mXzFfbnMiLCJzZWNvbmRzX3NwYW4iLCJzdWJfc2Vjb25kX3NwYW4iLCJvZmRheV9zdHJpbmdfd2l0aF96b25lIiwiZGF0ZV9zdHJpbmciLCJvZmRheV9zdHJpbmciLCJwcmVmaXhfbGVuIiwic3VmZml4X2xlbiIsInNlY29uZHNfc3RyaW5nIiwic3ViX3NlY29uZF9zdHJpbmciLCJzX3N0cmluZyIsIm1fc3RyaW5nIiwiaF9zdHJpbmciLCJtdWx0aXBsaWVyIiwiZGF5c19mcm9tX2Vwb2NoJDAiLCJkYXlzX2Zyb21fZXBvY2hfaW5fbnMiLCJhdHRlbXB0Iiwic3Bhbl9vZl9kdXJhdGlvbiIsInRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCIsImR1cmF0aW9ucyIsInNwYW5zIiwic3RyaW5nX2J5dGVzIiwic3JjX3BvcyIsInNyY19sZW4iLCJkc3RfcG9zIiwic3JjX3BvcyQwIiwiYnl0ZXNfYnl0ZXMiLCJzdHJpbmdfYmlnc3RyaW5nIiwiYnl0ZXNfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19zdHJpbmciLCJiaWdzdHJpbmdfYnl0ZXMiLCJzaXplXzAwOSIsInJhbmRvbV8wMTAiLCJzaXplXzAwNyIsImhhc2hfMDA4IiwiaGFzaF8wMDgkMCIsImhhc2hfMDA4JDEiLCJoYXNoXzAwOCQyIiwiYmFzZV9sZW4iLCJnZXRfbm9fYm91bmRzX2NoZWNrIiwiZm9sZGkkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImJsaXRfdG8iLCJibGl0X3RvX3N0cmluZyIsImJsaXRfdG9fYnl0ZXMiLCJibGl0X3RvX2JpZ3N0cmluZyIsImJsaXRfYmFzZSIsImJsaXRfZnJvbSIsImJsaXRfZnJvbV9zdHJpbmciLCJibGl0X2Zyb21fYmlnc3RyaW5nIiwib2ZfYmFzZSIsImNvbmNhdF9nZW4iLCJjcmVhdGVfZHN0IiwiYmxpdF9kc3QiLCJ0cyIsImNvbmNhdF9zdHJpbmciLCJjb25jYXRfYmlnc3RyaW5nIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsInV1aWQiLCJnbG9iYWxpemUkMCIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsImdsb2JhbGl6ZSQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJnbG9iYWxpemUkMiIsInR5cGVuYW1lX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwiY2hlY2skMiIsInBwJDIiLCJvZl9zdHJpbmckMiIsImluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIiwiYXJnX3R5cGUkMCIsInNleHBfYXNfc3RyaW5nIiwiYXJnMV8wMDMiLCJhcmcwXzAwMiIsInZfMDAxIiwicmVzMV8wMTEiLCJzZXJpYWxpemVkX3NleHAiLCJhcmcxXzAxNSIsInZfMDEyIiwidl8wMTMiLCJyZXMxXzAxNyIsImV4cGVjdGVkX2Jpbl9pbyIsImJpbmFibGVfbSIsInNlcmlhbGl6ZWRfYmluX2lvIiwiYXJnMl8wMjIiLCJhcmcxXzAyMSIsInJlczFfMDI0Iiwidl8wMTkiLCJyZXMyXzAyNSIsImFyZzFfMDI5Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJsb29wIiwicmV2X3NraXBwZWQiLCJzdHJpbmdzJDAiLCJjb250aW51ZSQwIiwic3RyaW5nJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJ2XzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4IiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInBlcm11dGF0YXRpb25zIiwiZWxlbWVudHMiLCJhcmcxXzA1NyIsImFyZzBfMDU2Iiwidl8wNTQiLCJyZXMwXzA1OCIsInJlczFfMDU5IiwiYmxhbmciLCJjbXBfYSQwIiwiYV8wMDEkMCIsImJfMDAyJDAiLCJjbXBfYSQ1IiwiY21wX2EkMSIsImNtcF9hJDIiLCJjbXBfYSQzIiwiYV8wMjciLCJhXzAyNSIsImFfMDIzIiwiYl8wMjgiLCJiXzAyNiIsImJfMDI0IiwiYV8wMzEiLCJiXzAzMiIsImNtcF9hJDQiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3JDAiLCJiXzAzOCQwIiwiYV8wMzkiLCJiXzA0MCIsImFfMDQ5IiwiYV8wNDciLCJiXzA1MCIsImJfMDQ4IiwiYV8wNTMiLCJiXzA1NCIsImFfMDU1IiwiYl8wNTYiLCJhXzA1NyIsImJfMDU4IiwiYV8wNjEiLCJhXzA1OSIsImJfMDYyIiwiYl8wNjAiLCJhXzA3MSIsImJfMDcyIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ2MCQxIiwidjAkMiIsInYwJDMiLCJzdWJ0ZXJtcyIsInQzIiwidDEkMSIsImNvbnRhaW5zX25vX2NvbnN0YW50cyIsInRydWUkMCIsImZhbHNlJDAiLCJub3QiLCJhbmRhbHNvIiwib3RoZXIiLCJ0MWIiLCJ0MWEiLCJvcmVsc2UiLCJpZiQwIiwib2ZfYV8wNzMiLCJhcmcxXzA3NSIsImFyZzBfMDc0IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMl8wODYiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODciLCJyZXMxXzA4OCIsInJlczJfMDg5IiwiYXJnMF8wOTAiLCJyZXMwXzA5MSIsImdhdGhlcl9jb25qdW5jdHMiLCJ0cyQxIiwidHMkMCIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJ3b3JkIiwia2lsb2J5dGVzIiwibWVnYWJ5dGVzIiwiZ2lnYWJ5dGVzIiwidGVyYWJ5dGVzIiwicGV0YWJ5dGVzIiwiZXhhYnl0ZXMiLCJ3b3Jkc19pbnRfZXhuIiwid29yZHNfZmxvYXQiLCJvZl9raWxvYnl0ZXMiLCJvZl9tZWdhYnl0ZXMiLCJvZl9naWdhYnl0ZXMiLCJvZl90ZXJhYnl0ZXMiLCJvZl9wZXRhYnl0ZXMiLCJvZl9leGFieXRlcyIsIm9mX3dvcmRzX2ludCIsIm9mX3dvcmRzX2Zsb2F0X2V4biIsImJhc2Vfc3RyIiwiZXh0X2NoYXIiLCJsYXJnZXN0X21lYXN1cmUiLCJ0X2FicyIsIm5vX21hdGNoIiwidmFsX3NleHAiLCJ1bml0X25hbWUiLCJ0JDUiLCJ0JDQiLCJ0JDMiLCJ0JDIiLCJjdXN0b21fcHJpbnRmXzAwNiIsImN1c3RvbV9wcmludGZfMDA3IiwiY3VzdG9tX3ByaW50Zl8wMDgiLCJjdXN0b21fcHJpbnRmXzAwOSIsImN1c3RvbV9wcmludGZfMDEwIiwiY3VzdG9tX3ByaW50Zl8wMTEiLCJ0b19zdHJpbmdfc2hvcnQiLCJ0b191bml0c19zdHIiLCJ0b191bml0IiwiZXh0IiwiZl9hYnMiLCJjdXN0b21fcHJpbnRmXzAxNCIsImN1c3RvbV9wcmludGZfMDE1IiwiY3VzdG9tX3ByaW50Zl8wMTYiLCJjdXN0b21fcHJpbnRmXzAxNyIsImN1c3RvbV9wcmludGZfMDE4IiwiY3VzdG9tX3ByaW50Zl8wMTkiLCJjdXN0b21fcHJpbnRmXzAyMCIsImN1c3RvbV9wcmludGZfMDIxIiwiY3VzdG9tX3ByaW50Zl8wMjIiLCJjdXN0b21fcHJpbnRmXzAyMyIsImN1c3RvbV9wcmludGZfMDI0IiwiY3VzdG9tX3ByaW50Zl8wMjUiLCJjdXN0b21fcHJpbnRmXzAyNiIsIm5fZnJvbnQiLCJuX2JhY2siLCJmcm9udCIsImJhY2siLCJyZXZfYmFjayIsImZyb250JDAiLCJyZXZfZnJvbnQiLCJiYWNrJDAiLCJyYWlzZV9mcm9udF9pbnZhcmlhbnQiLCJyYWlzZV9iYWNrX2ludmFyaWFudCIsInBlZWtfZnJvbnRfZXhuIiwicGVla19iYWNrX2V4biIsImRyb3BfZnJvbnRfZXhuIiwiZHJvcF9iYWNrX2V4biIsIm9wdGlvbmFsIiwicGVla19mcm9udCIsInBlZWtfYmFjayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJ0b19saXN0JDEiLCJ0b19saXN0JDIiLCJ0b19saXN0JDMiLCJzdW0kMSIsImZpbmRfbWFwJDEiLCJ0b19hcnJheSQxIiwiZm9sZF9yZXN1bHQkMSIsImJ1aWxkIiwiZXJyb3Jfc291cmNlXzA1NCIsImVycm9yX3NvdXJjZV8wOTYiLCJuYW1lcyQwIiwidjE2IiwidjE1IiwidjE0IiwidjEzIiwidjEyIiwidjExIiwidjEwIiwidjkiLCJ2OCIsInNpemUkNiIsInNpemUkNyIsInNpemUkOCIsInNpemUkOSIsInNpemUkMTAiLCJzaXplJDExIiwic2l6ZSQxMiIsInNpemUkMTMiLCJ2X21pbm9yX3dvcmRzIiwidl9wcm9tb3RlZF93b3JkcyIsInZfbWFqb3Jfd29yZHMiLCJ2X21pbm9yX2NvbGxlY3Rpb25zIiwidl9tYWpvcl9jb2xsZWN0aW9ucyIsInZfaGVhcF93b3JkcyIsInZfaGVhcF9jaHVua3MiLCJ2X2xpdmVfd29yZHMiLCJ2X2xpdmVfYmxvY2tzIiwidl9mcmVlX3dvcmRzIiwidl9mcmVlX2Jsb2NrcyIsInZfbGFyZ2VzdF9mcmVlIiwidl9mcmFnbWVudHMiLCJ2X2NvbXBhY3Rpb25zIiwidl90b3BfaGVhcF93b3JkcyIsInZfc3RhY2tfc2l6ZSIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJoc3YkMTAiLCJoc3YkMTEiLCJoc3YkMTIiLCJoc3YkMTMiLCJoc3YkMTQiLCJzdGFja19zaXplIiwidG9wX2hlYXBfd29yZHMiLCJjb21wYWN0aW9ucyIsImZyYWdtZW50cyIsImxhcmdlc3RfZnJlZSIsImZyZWVfYmxvY2tzIiwiZnJlZV93b3JkcyIsImxpdmVfYmxvY2tzIiwibGl2ZV93b3JkcyIsImhlYXBfY2h1bmtzIiwiaGVhcF93b3JkcyIsIm1ham9yX2NvbGxlY3Rpb25zIiwibWlub3JfY29sbGVjdGlvbnMiLCJtYWpvcl93b3JkcyIsInByb21vdGVkX3dvcmRzIiwibWlub3Jfd29yZHMiLCJzdGFja19zaXplXzA0NyIsInRvcF9oZWFwX3dvcmRzXzA0NSIsImNvbXBhY3Rpb25zXzA0MyIsImZyYWdtZW50c18wNDEiLCJsYXJnZXN0X2ZyZWVfMDM5IiwiZnJlZV9ibG9ja3NfMDM3IiwiZnJlZV93b3Jkc18wMzUiLCJsaXZlX2Jsb2Nrc18wMzMiLCJsaXZlX3dvcmRzXzAzMSIsImhlYXBfY2h1bmtzXzAyOSIsImhlYXBfd29yZHNfMDI3IiwibWFqb3JfY29sbGVjdGlvbnNfMDI1IiwibWlub3JfY29sbGVjdGlvbnNfMDIzIiwibWFqb3Jfd29yZHNfMDIxIiwicHJvbW90ZWRfd29yZHNfMDE5IiwibWlub3Jfd29yZHNfMDE3IiwiYXJnXzA0OCIsImJuZHNfMDE2JDEiLCJibmRzXzAxNiQyIiwiYm5kc18wMTYkMyIsImJuZHNfMDE2JDQiLCJibmRzXzAxNiQ1IiwiYm5kc18wMTYkNiIsImFyZ18wMzIiLCJibmRzXzAxNiQ3IiwiYXJnXzAzMCIsImJuZHNfMDE2JDgiLCJibmRzXzAxNiQ5IiwiYm5kc18wMTYkMTAiLCJhcmdfMDI0IiwiYm5kc18wMTYkMTEiLCJhcmdfMDIyIiwiYm5kc18wMTYkMTIiLCJibmRzXzAxNiQxMyIsImJuZHNfMDE2JDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwibiQxNCIsImhzdiQxNSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18wODkiLCJzdGFja19zaXplXzA4NyIsInRvcF9oZWFwX3dvcmRzXzA4NSIsImNvbXBhY3Rpb25zXzA4MyIsImZyYWdtZW50c18wODEiLCJsYXJnZXN0X2ZyZWVfMDc5IiwiZnJlZV9ibG9ja3NfMDc3IiwiZnJlZV93b3Jkc18wNzUiLCJsaXZlX2Jsb2Nrc18wNzMiLCJsaXZlX3dvcmRzXzA3MSIsImhlYXBfY2h1bmtzXzA2OSIsImhlYXBfd29yZHNfMDY3IiwibWFqb3JfY29sbGVjdGlvbnNfMDY1IiwibWlub3JfY29sbGVjdGlvbnNfMDYzIiwibWFqb3Jfd29yZHNfMDYxIiwicHJvbW90ZWRfd29yZHNfMDU5IiwibWlub3Jfd29yZHNfMDU3IiwiYXJnXzA5MCIsImJuZHNfMDU2IiwiYXJnXzA4OCIsImJuZHNfMDU2JDAiLCJhcmdfMDg2IiwiYm5kc18wNTYkMSIsImFyZ18wODQiLCJibmRzXzA1NiQyIiwiYXJnXzA4MiIsImJuZHNfMDU2JDMiLCJhcmdfMDgwIiwiYm5kc18wNTYkNCIsImFyZ18wNzgiLCJibmRzXzA1NiQ1IiwiYXJnXzA3NiIsImJuZHNfMDU2JDYiLCJhcmdfMDc0IiwiYm5kc18wNTYkNyIsImFyZ18wNzIiLCJibmRzXzA1NiQ4IiwiYXJnXzA3MCIsImJuZHNfMDU2JDkiLCJhcmdfMDY4IiwiYm5kc18wNTYkMTAiLCJhcmdfMDY2IiwiYm5kc18wNTYkMTEiLCJhcmdfMDY0IiwiYm5kc18wNTYkMTIiLCJhcmdfMDYyIiwiYm5kc18wNTYkMTMiLCJhcmdfMDYwIiwiYm5kc18wNTYkMTQiLCJhcmdfMDU4IiwiYm5kc18wNTYkMTUiLCJ2X21pbm9yX2hlYXBfc2l6ZSIsInZfbWFqb3JfaGVhcF9pbmNyZW1lbnQiLCJ2X3NwYWNlX292ZXJoZWFkIiwidl92ZXJib3NlIiwidl9tYXhfb3ZlcmhlYWQiLCJ2X3N0YWNrX2xpbWl0Iiwidl9hbGxvY2F0aW9uX3BvbGljeSIsInZfd2luZG93X3NpemUiLCJ2X2N1c3RvbV9tYWpvcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX3JhdGlvIiwidl9jdXN0b21fbWlub3JfbWF4X3NpemUiLCJhXzA5MyIsImJfMDk0IiwieF8wOTciLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJ2ZXJib3NlIiwic3BhY2Vfb3ZlcmhlYWQiLCJtYWpvcl9oZWFwX2luY3JlbWVudCIsIm1pbm9yX2hlYXBfc2l6ZSIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8xMTkiLCJjdXN0b21fbWlub3JfcmF0aW9fMTE3IiwiY3VzdG9tX21ham9yX3JhdGlvXzExNSIsIndpbmRvd19zaXplXzExMyIsImFsbG9jYXRpb25fcG9saWN5XzExMSIsInN0YWNrX2xpbWl0XzEwOSIsIm1heF9vdmVyaGVhZF8xMDciLCJ2ZXJib3NlXzEwNSIsInNwYWNlX292ZXJoZWFkXzEwMyIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzEwMSIsIm1pbm9yX2hlYXBfc2l6ZV8wOTkiLCJhcmdfMTIwIiwiYm5kc18wOTgiLCJhcmdfMTE4IiwiYm5kc18wOTgkMCIsImFyZ18xMTYiLCJibmRzXzA5OCQxIiwiYXJnXzExNCIsImJuZHNfMDk4JDIiLCJhcmdfMTEyIiwiYm5kc18wOTgkMyIsImFyZ18xMTAiLCJibmRzXzA5OCQ0IiwiYXJnXzEwOCIsImJuZHNfMDk4JDUiLCJhcmdfMTA2IiwiYm5kc18wOTgkNiIsImFyZ18xMDQiLCJibmRzXzA5OCQ3IiwiYXJnXzEwMiIsImJuZHNfMDk4JDgiLCJhcmdfMTAwIiwiYm5kc18wOTgkOSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNTYiLCJzdGFja19zaXplXzE1NCIsInRvcF9oZWFwX3dvcmRzXzE1MiIsImNvbXBhY3Rpb25zXzE1MCIsImZyYWdtZW50c18xNDgiLCJsYXJnZXN0X2ZyZWVfMTQ2IiwiZnJlZV9ibG9ja3NfMTQ0IiwiZnJlZV93b3Jkc18xNDIiLCJsaXZlX2Jsb2Nrc18xNDAiLCJsaXZlX3dvcmRzXzEzOCIsImhlYXBfY2h1bmtzXzEzNiIsImhlYXBfd29yZHNfMTM0IiwibWFqb3JfY29sbGVjdGlvbnNfMTMyIiwibWlub3JfY29sbGVjdGlvbnNfMTMwIiwibWFqb3Jfd29yZHNfMTI4IiwicHJvbW90ZWRfd29yZHNfMTI2IiwibWlub3Jfd29yZHNfMTI0IiwiYXJnXzE1NyIsImJuZHNfMTIzIiwiYXJnXzE1NSIsImJuZHNfMTIzJDAiLCJhcmdfMTUzIiwiYm5kc18xMjMkMSIsImFyZ18xNTEiLCJibmRzXzEyMyQyIiwiYXJnXzE0OSIsImJuZHNfMTIzJDMiLCJhcmdfMTQ3IiwiYm5kc18xMjMkNCIsImFyZ18xNDUiLCJibmRzXzEyMyQ1IiwiYXJnXzE0MyIsImJuZHNfMTIzJDYiLCJhcmdfMTQxIiwiYm5kc18xMjMkNyIsImFyZ18xMzkiLCJibmRzXzEyMyQ4IiwiYXJnXzEzNyIsImJuZHNfMTIzJDkiLCJhcmdfMTM1IiwiYm5kc18xMjMkMTAiLCJhcmdfMTMzIiwiYm5kc18xMjMkMTEiLCJhcmdfMTMxIiwiYm5kc18xMjMkMTIiLCJhcmdfMTI5IiwiYm5kc18xMjMkMTMiLCJhcmdfMTI3IiwiYm5kc18xMjMkMTQiLCJhcmdfMTI1IiwiYm5kc18xMjMkMTUiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMkMCIsInN0YWNrX3NpemUkMCIsInRvcF9oZWFwX3dvcmRzJDAiLCJjb21wYWN0aW9ucyQwIiwiZnJhZ21lbnRzJDAiLCJsYXJnZXN0X2ZyZWUkMCIsImZyZWVfYmxvY2tzJDAiLCJmcmVlX3dvcmRzJDAiLCJsaXZlX2Jsb2NrcyQwIiwibGl2ZV93b3JkcyQwIiwiaGVhcF9jaHVua3MkMCIsImhlYXBfd29yZHMkMCIsIm1ham9yX2NvbGxlY3Rpb25zJDAiLCJtaW5vcl9jb2xsZWN0aW9ucyQwIiwibWFqb3Jfd29yZHMkMCIsInByb21vdGVkX3dvcmRzJDAiLCJtaW5vcl93b3JkcyQwIiwibWlub3Jfd29yZHNfZnVuIiwicHJvbW90ZWRfd29yZHNfZnVuIiwibWFqb3Jfd29yZHNfZnVuIiwibWlub3JfY29sbGVjdGlvbnNfZnVuIiwibWFqb3JfY29sbGVjdGlvbnNfZnVuIiwiaGVhcF93b3Jkc19mdW4iLCJoZWFwX2NodW5rc19mdW4iLCJsaXZlX3dvcmRzX2Z1biIsImxpdmVfYmxvY2tzX2Z1biIsImZyZWVfd29yZHNfZnVuIiwiZnJlZV9ibG9ja3NfZnVuIiwibGFyZ2VzdF9mcmVlX2Z1biIsImZyYWdtZW50c19mdW4iLCJjb21wYWN0aW9uc19mdW4iLCJ0b3BfaGVhcF93b3Jkc19mdW4iLCJzdGFja19zaXplX2Z1biIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19mdW4iLCJtaW5vcl93b3Jkc19nZW4iLCJwcm9tb3RlZF93b3Jkc19nZW4iLCJtYWpvcl93b3Jkc19nZW4iLCJtaW5vcl9jb2xsZWN0aW9uc19nZW4iLCJtYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJoZWFwX3dvcmRzX2dlbiIsImhlYXBfY2h1bmtzX2dlbiIsImxpdmVfd29yZHNfZ2VuIiwibGl2ZV9ibG9ja3NfZ2VuIiwiZnJlZV93b3Jkc19nZW4iLCJmcmVlX2Jsb2Nrc19nZW4iLCJsYXJnZXN0X2ZyZWVfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJmcmFnbWVudHNfZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJjb21wYWN0aW9uc19nZW4iLCJjb21waWxlX2FjYyQxNCIsInRvcF9oZWFwX3dvcmRzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwic3RhY2tfc2l6ZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJmbG9hdF9mIiwiaW50X2YiLCJhXzE1OCIsImJfMTU5IiwiY3VzdG9tX21pbm9yX21heF9zaXplXzE4MSIsImN1c3RvbV9taW5vcl9yYXRpb18xNzkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMTc3Iiwid2luZG93X3NpemVfMTc1IiwiYWxsb2NhdGlvbl9wb2xpY3lfMTczIiwic3RhY2tfbGltaXRfMTcxIiwibWF4X292ZXJoZWFkXzE2OSIsInZlcmJvc2VfMTY3Iiwic3BhY2Vfb3ZlcmhlYWRfMTY1IiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfMTYzIiwibWlub3JfaGVhcF9zaXplXzE2MSIsImFyZ18xODIiLCJibmRzXzE2MCIsImFyZ18xODAiLCJibmRzXzE2MCQwIiwiYXJnXzE3OCIsImJuZHNfMTYwJDEiLCJhcmdfMTc2IiwiYm5kc18xNjAkMiIsImFyZ18xNzQiLCJibmRzXzE2MCQzIiwiYXJnXzE3MiIsImJuZHNfMTYwJDQiLCJhcmdfMTcwIiwiYm5kc18xNjAkNSIsImFyZ18xNjgiLCJibmRzXzE2MCQ2IiwiYXJnXzE2NiIsImJuZHNfMTYwJDciLCJhcmdfMTY0IiwiYm5kc18xNjAkOCIsImFyZ18xNjIiLCJibmRzXzE2MCQ5IiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWFrZV9jcmVhdG9yJDAiLCJtaW5vcl9oZWFwX3NpemVfZnVuIiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfZnVuIiwic3BhY2Vfb3ZlcmhlYWRfZnVuIiwidmVyYm9zZV9mdW4iLCJtYXhfb3ZlcmhlYWRfZnVuIiwic3RhY2tfbGltaXRfZnVuIiwiYWxsb2NhdGlvbl9wb2xpY3lfZnVuIiwid2luZG93X3NpemVfZnVuIiwiY3VzdG9tX21ham9yX3JhdGlvX2Z1biIsImN1c3RvbV9taW5vcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfbWF4X3NpemVfZnVuIiwibWlub3JfaGVhcF9zaXplX2dlbiIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2dlbiIsInNwYWNlX292ZXJoZWFkX2dlbiIsInZlcmJvc2VfZ2VuIiwibWF4X292ZXJoZWFkX2dlbiIsInN0YWNrX2xpbWl0X2dlbiIsImFsbG9jYXRpb25fcG9saWN5X2dlbiIsIndpbmRvd19zaXplX2dlbiIsImN1c3RvbV9tYWpvcl9yYXRpb19nZW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2dlbiIsIm1hcF9wb2x5JDAiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsImNvbXBhcmUkNyIsImVxdWFsJDUiLCJ0dW5lIiwibG9nZ2VyIiwib2xkX2NvbnRyb2xfcGFyYW1zIiwiZmllbGQiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJuZXdfY29udHJvbF9wYXJhbXMiLCJkaXNhYmxlX2NvbXBhY3Rpb24iLCJwb2xpY3kiLCJzdGF0X3NpemVfbGF6eSIsInN0YXRfc2l6ZSIsImtlZXBfYWxpdmUiLCJvIiwiaXNfemVyb19hbGxvYyIsIm1pbm9yX3dvcmRzX2JlZm9yZSIsIm1ham9yX3dvcmRzX2JlZm9yZSIsIm1pbm9yX3dvcmRzX2FmdGVyIiwibWFqb3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMTkwIiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzE4OCIsImFyZ18xOTEiLCJibmRzXzE4NyIsImFyZ18xODkiLCJibmRzXzE4NyQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzE5NyIsImlzX21ham9yXzE5NSIsInNpemVfaW5fd29yZHNfMTkzIiwiYXJnXzE5OCIsImJuZHNfMTkyIiwiYXJnXzE5NiIsImJuZHNfMTkyJDAiLCJhcmdfMTk0IiwiYm5kc18xOTIkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImluZm8iLCJiYWNrdHJhY2UiLCJiYWNrdHJhY2UkMCIsImluZm8kMCIsInRyYWNrZXIiLCJhZGRfZmluYWxpemVyIiwiYWRkX2ZpbmFsaXplcl9leG4iLCJhZGRfZmluYWxpemVyX2xhc3QiLCJhZGRfZmluYWxpemVyX2xhc3RfZXhuIiwiZmluYWxpemVfcmVsZWFzZSIsInNleHBfb2ZfdCQ4IiwiZXhwZWN0IiwiZXhwZWN0JDAiLCJzZXhwXzAwNiIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwidHlwZV9pZCIsInRvX3N0YWJsZV9mb3JtYXQiLCJvZl9zdGFibGVfZm9ybWF0Iiwib2ZfcXVpY2tjaGVja2FibGUiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwic2lnbmFsIiwiZiQwIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJvZl9hXzAwOSIsIm9mX2FfMDEyIiwieF8wMTMiLCJvZl9mb3JtYXQiLCJ0b19mb3JtYXQiLCJzZXRfYXQiLCJzZXRfaW50ZXJuYWwiLCJzZXRfaWZfbm9uZSIsInNldF9leG4iLCJnZXRfZXhuIiwicHJpbnQiLCJjYXRjaCQwIiwicHJpbnRfYmFja3RyYWNlIiwiZ2V0X2JhY2t0cmFjZSIsInJlY29yZF9iYWNrdHJhY2UiLCJiYWNrdHJhY2Vfc3RhdHVzIiwiY2FwdHVyZSIsImdlbmVyYWwiLCJoYXNoYWJsZSQxIiwiY2FjaGVfc2l6ZV9ib3VuZCIsImNhY2hlIiwicmVhbGx5X2NhbGxfZiIsIm1heF9jYWNoZV9zaXplIiwiY2FjaGUkMCIsInJlY3Vyc2l2ZSIsImZfb25lc3RlcCIsIm1lbW9pemVkIiwib2ZfY29tcGFyYWJsZSIsInYkMSIsImluaXRpYWxfbGVuZ3RoIiwibmV2ZXJfc2hyaW5rIiwibmV2ZXJfc2hyaW5rJDAiLCJpbml0aWFsX2xlbmd0aCQwIiwiYXJyX2xlbmd0aCIsImFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90XyIsImFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZSIsImFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbSIsImFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcCIsImNoZWNrZWQiLCJhcHBhcmVudF9mcm9udF9pbmRleCIsImFwcGFyZW50X2JhY2tfaW5kZXgiLCJkaXIiLCJhcHBhcmVudF9mcm9udCIsImFwcGFyZW50X2JhY2siLCJhY3R1YWxfZnJvbnQiLCJhY3R1YWxfYmFjayIsImFwcGFyZW50X2kiLCJyZWFsX2kiLCJzdG9wX3BvcyIsImFwcGFyZW50X2kkMCIsInJlYWxfaSQwIiwicmVhbF9pJDEiLCJhcHBhcmVudF9pJDEiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsIml0ZXJpX2ludGVybmFsIiwibmV3X2FyciIsIm9sZF9hcnIiLCJicmVha19wb3MiLCJtYXliZV9zaHJpbmtfdW5kZXJseWluZyIsImdyb3dfdW5kZXJseWluZyIsInBlZWtfZnJvbnRfbm9uZW1wdHkiLCJwZWVrX2JhY2tfbm9uZW1wdHkiLCJkZXF1ZXVlX2Zyb250X25vbmVtcHR5IiwiZGVxdWV1ZV9iYWNrX25vbmVtcHR5IiwiZHJvcF9nZW4iLCJhc3NlcnRfbm90X2VtcHR5IiwidHJ1ZV9pbmRleF9leG4iLCJpX2Zyb21femVybyIsInRydWVfaSIsImdldF9vcHQiLCJiYWNrX2luZGV4X2V4biIsImZyb250X2luZGV4X2V4biIsImdldCQwIiwidW50cmFuc2xhdGVkX2kiLCJlcHJpbnQiLCJlcHJpbnRzIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwic2V4cF9vZl9hcmciLCJzZXhwX29mX3Jlc3VsdCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwibWVzc2FnZSQwIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsInF1b3RlIiwiY29uY2F0X3F1b3RlZCIsInNwbGl0X2NvbW1hbmQiLCJzb3J0X2FuZF9hbGlnbiIsImFkZF91bml0IiwidW50aWxfZW1wdHkiLCJic3RyXzAwMiIsInBvc18wMDQiLCJsZW5fMDA2IiwiaW5pdF8wMDgiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJyZXNpemUiLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19idWYiLCJpbnRlcm5hbCIsImNvbnRlbnRzX2J5dGVzIiwiYmlnX2NvbnRlbnRzIiwidm9sYXRpbGVfY29udGVudHMiLCJhZGRfY2hhciIsInJlc2V0IiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3MiLCJhZGRfc3ViYnl0ZXMiLCJhZGRfYmlnc3RyaW5nIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJidWZfZHN0IiwiYnVmX3NyYyIsImFkZF9iaW5fcHJvdCIsImFkZF9zdWJzdGl0dXRlIiwibGltIiwic3Vic3QiLCJwcmV2aW91cyIsImkkNCIsInByZXZpb3VzJDAiLCJpJDUiLCJwcmV2aW91cyQxIiwiaSQ2Iiwib3BlbmluZyIsImxpbSQxIiwiaSQyIiwiaSQzIiwibmV3X3N0YXJ0IiwiayQyIiwiY2xvc2luZyIsImxpbSQwIiwiaSQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJpJDkiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwiZXJyb3Jfc291cmNlXzAxNyIsInZfaW5kZXgiLCJ2X21pbl9pbmRleCIsInZfbWF4X2luZGV4IiwiYXJnNV8wMDkiLCJhcmc0XzAwOCIsImFyZzNfMDA3IiwiYXJnMl8wMDYiLCJyZXMyXzAxMiIsInJlczNfMDEzIiwicmVzNF8wMTQiLCJyZXM1XzAxNSIsImFyZzVfMDIzIiwiYXJnNF8wMjIiLCJhcmczXzAyMSIsImFyZzJfMDIwIiwiYXJnMV8wMTkiLCJyZXM1XzAyOSIsIm9mIiwibGFiZWwiLCJjcmVhdGVfYWxsIiwibWF4X2luZGV4IiwibWluX2luZGV4IiwiemVyb19iYXNlZF9pbmRleCIsIm51bV9pbmRleGVzIiwiaG9zdF9hbmRfcG9ydCIsInBhcnNlJDAiLCJtYXBfYW5vbnMiLCJ0NCIsIm1heWJlX3dpdGhfZGVmYXVsdCIsIm1heWJlIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciIsIm1hcF9mbGFnIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIiwiZXNjYXBlIiwibm9fYXJnX2Fib3J0Iiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3NvbWUiLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmciLCJvbmVfb3JfbW9yZV9hc19saXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsImxpc3RlZCIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsInJlcXVpcmVkIiwib3B0aW9uYWxfdG9fcmVxdWlyZWQiLCJhcmdfbmFtZXMiLCJhbmRfYXJnX25hbWUiLCJhbmRfYXJnX25hbWVzIiwiY2hvb3NlX29uZV9ub25fb3B0aW9uYWwiLCJjaG9vc2Vfb25lIiwiZXNjYXBlX2Fub24iLCJhbm9uIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwiZmxhZyIsImhlbHAiLCJtYXAzIiwiYm90aCIsInBlcmNlbnQkMCIsImhvc3RfYW5kX3BvcnQkMCIsIm9mX3BhcmFtIiwidG9fcGFyYW0iLCJtYXBfYW5vbnMkMCIsInQ0JDAiLCJ0MyQwIiwibWF5YmVfd2l0aF9kZWZhdWx0JDAiLCJtYXliZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QkMCIsIm5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyJDAiLCJzZXF1ZW5jZSQwIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJtYXBfZmxhZyQwIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlJDAiLCJlc2NhcGUkMCIsIm5vX2FyZ19hYm9ydCQwIiwibm9fYXJnX3JlcXVpcmVkJDAiLCJub19hcmdfc29tZSQwIiwibm9fYXJnX3JlZ2lzdGVyJDAiLCJub19hcmckMCIsIm9uZV9vcl9tb3JlX2FzX2xpc3QkMCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIkMCIsImxpc3RlZCQwIiwib3B0aW9uYWxfd2l0aF9kZWZhdWx0JDAiLCJvcHRpb25hbCQwIiwicmVxdWlyZWQkMCIsIndyYXAiLCJwYWlyIiwiYXJnX25hbWVzJDAiLCJhbmRfYXJnX25hbWUkMCIsImFuZF9hcmdfbmFtZXMkMCIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsJDAiLCJjaG9vc2Vfb25lJDAiLCJlc2NhcGVfYW5vbiQwIiwiYW5vbiQwIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jJDAiLCJmbGFnJDAiLCJwYXRoJDAiLCJoZWxwJDAiLCJhbGxfdW5pdCQwIiwiYWxsJDAiLCJtYXAzJDAiLCJhcHBseSQwIiwic3ltYm9sX21hcCQwIiwiYm90aCQwIiwicmV0dXJuJDEiLCJwZXJjZW50JDEiLCJob3N0X2FuZF9wb3J0JDEiLCJkb2VzX3JhaXNlIiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJ2X3N1bW1hcnkiLCJ2X3JlYWRtZSIsInZfYW5vbnMiLCJ2X2ZsYWdzIiwiYmluX3NoYXBlX2EiLCJ2X3N1YmNvbW1hbmRzIiwidl93b3JraW5nX2RpciIsInZfcGF0aF90b19leGUiLCJ2X2NoaWxkX3N1YmNvbW1hbmQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwidiQzIiwidiQ0IiwidiQ1IiwidiQwIiwidiQxIiwidiQyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzAzMyIsImVycm9yX3NvdXJjZV8wNDkiLCJlcnJvcl9zb3VyY2VfMDcyIiwiZXJyb3Jfc291cmNlXzA4NiIsImVycm9yX3NvdXJjZV8xMTkiLCJlcnJvcl9zb3VyY2VfMTUxIiwiZXJyb3Jfc291cmNlXzE5OSIsImVycm9yX3NvdXJjZV8yMDEiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwieF8wMzQiLCJhIiwiZyIsInNleHBfb2ZfdCQwIiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJhcmdfMDQzIiwiYm5kc18wMzUiLCJhcmdfMDQxIiwiYm5kc18wMzUkMCIsImFyZ18wMzkiLCJibmRzXzAzNSQxIiwiYXJnXzAzNyIsImJuZHNfMDM1JDIiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsInY0IiwidjMiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwidl9yIiwidl9nIiwidl9iIiwidl9hIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wNDQiLCJiXzA0NSIsIm4kMCIsIm4kMSIsImFfMDQ2IiwiYl8wNDciLCJ0X29mX3NleHAkMSIsInhfMDUwIiwibCIsImgiLCJzZXhwX29mX3QkMSIsImFfMDU4IiwibF8wNTYiLCJzXzA1NCIsImhfMDUyIiwiYXJnXzA1OSIsImJuZHNfMDUxIiwiYXJnXzA1NyIsImJuZHNfMDUxJDAiLCJhcmdfMDU1IiwiYm5kc18wNTEkMSIsImFyZ18wNTMiLCJibmRzXzA1MSQyIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ2X2giLCJ2X3MiLCJ2X2wiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzA2MCIsImJfMDYxIiwiYV8wNjIiLCJiXzA2MyIsImNyZWF0ZSQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzA2NyIsImF0b21fMDY1Iiwic2V4cF9hcmdzXzA2OCIsImF0b21fMDY1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwiYXJnMF8wNzQiLCJyZXMwXzA3NSIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwiYXJnMF8wODMiLCJyZXMwXzA4NCIsInRfb2Zfc2V4cCQzIiwic2V4cF8wODUiLCJzZXhwX29mX3QkMiIsInZfMDkyIiwidl8wOTEiLCJ2XzA4NyIsInZfMDg5Iiwidl8wODgiLCJ2XzA5MCIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDkzIiwiYl8wOTQiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInJpZ2h0XzA5NiIsImxlZnRfMDk1IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8wOTgiLCJsZWZ0XzA5NyIsInJpZ2h0XzEwMiIsImxlZnRfMTAxIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTE0IiwiYXRvbV8xMTIiLCJzZXhwX2FyZ3NfMTE1IiwiYXRvbV8xMTIkMCIsImFyZzBfMTI3IiwicmVzMF8xMjgiLCJhcmcwXzEyNCIsInJlczBfMTI1IiwiYXJnMF8xNDgiLCJyZXMwXzE0OSIsImFyZzBfMTQyIiwicmVzMF8xNDMiLCJhcmcwXzEyMSIsInJlczBfMTIyIiwiYXJnMF8xMTciLCJyZXMwXzExOCIsImFyZzBfMTQ1IiwicmVzMF8xNDYiLCJhcmcwXzEzOSIsInJlczBfMTQwIiwiYXJnMF8xMzYiLCJyZXMwXzEzNyIsImFyZzBfMTMzIiwicmVzMF8xMzQiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE1MCIsInNleHBfb2ZfdCQzIiwidl8xNjMiLCJ2XzE2MSIsInZfMTU5Iiwidl8xNTYiLCJ2XzE1NCIsInZfMTUyIiwidl8xNjIiLCJ2XzE2MCIsInZfMTU4Iiwidl8xNTUiLCJ2XzE1MyIsInZfMTU3IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzE2NCIsImJfMTY1IiwicmlnaHRfMTc1IiwibGVmdF8xNzQiLCJyaWdodF8xNzEiLCJsZWZ0XzE3MCIsInJpZ2h0XzE2NyIsImxlZnRfMTY2IiwicmlnaHRfMTg3IiwibGVmdF8xODYiLCJyaWdodF8xODUiLCJsZWZ0XzE4NCIsInJpZ2h0XzE4MSIsImxlZnRfMTgwIiwicmlnaHRfMTgzIiwibGVmdF8xODIiLCJyaWdodF8xNzkiLCJsZWZ0XzE3OCIsInJpZ2h0XzE3MyIsImxlZnRfMTcyIiwicmlnaHRfMTY5IiwibGVmdF8xNjgiLCJyaWdodF8xNzciLCJsZWZ0XzE3NiIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMTkwIiwiYl8xOTEiLCJ0X29mX3NleHAkNiIsInNleHBfMTk3IiwiYXRvbV8xOTUiLCJhdG9tXzE5NSQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzIwMCIsInNleHBfb2ZfdCQ0Iiwidl8yMDIiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiZW1wdHkiLCJpc19lbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsImxpbmVfaGVpZ2h0Iiwid2lkdGgiLCJtaW5fd2lkdGgiLCJtYXhfd2lkdGgiLCJoZWlnaHQiLCJtaW5faGVpZ2h0IiwibWF4X2hlaWdodCIsInBhZGRpbmdfdG9wIiwicGFkZGluZ19ib3R0b20iLCJwYWRkaW5nX2xlZnQiLCJwYWRkaW5nX3JpZ2h0IiwicGFkZGluZyIsInVuaWZvcm1fcGFkZGluZyIsIm1hcmdpbl90b3AiLCJtYXJnaW5fYm90dG9tIiwibWFyZ2luX2xlZnQiLCJtYXJnaW5fcmlnaHQiLCJtYXJnaW4iLCJ1bmlmb3JtX21hcmdpbiIsInJvd19nYXAiLCJjb2x1bW5fZ2FwIiwiY29uY2F0MnYiLCJjb25jYXQzdiIsImJvcmRlcl92YWx1ZSIsInN0eWxlJDAiLCJ3aWR0aCQwIiwiY29sb3IkMCIsImNyZWF0ZV9ib3JkZXIiLCJzaWRlIiwiYm9yZGVyX3RvcCIsImJvcmRlcl9ib3R0b20iLCJib3JkZXJfbGVmdCIsImJvcmRlcl9yaWdodCIsImJvcmRlciIsIm91dGxpbmUiLCJib3JkZXJfY29sbGFwc2UiLCJib3JkZXJfc3BhY2luZyIsImJvcmRlcl9yYWRpdXMiLCJ0ZXh0X2RlY29yYXRpb24iLCJsaW5lIiwibGluZSQwIiwiaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyIsImZsZXhfY29udGFpbmVyIiwiYWxpZ25faXRlbXMiLCJhbGlnbl9jb250ZW50IiwianVzdGlmeV9jb250ZW50IiwicmciLCJjZyIsImlubGluZSIsIndyYXAiLCJkaXJlY3Rpb24kMCIsIndyYXAkMCIsImFsaWduX2l0ZW1zJDAiLCJhbGlnbl9jb250ZW50JDAiLCJhJDEiLCJqdXN0aWZ5X2NvbnRlbnQkMCIsInJvd19nYXAkMCIsImNvbHVtbl9nYXAkMCIsImZsZXhfaXRlbSIsIm9yZGVyIiwiZ3JvdyIsImJhc2lzIiwic2hyaW5rIiwib3JkZXIkMCIsImJhc2lzJDAiLCJmbGV4IiwiYWxpZ25fc2VsZiIsInJlc2l6ZSIsInZhbHVlJDAiLCJhbmltYXRpb24iLCJkdXJhdGlvbiIsImRlbGF5IiwiZmlsbF9tb2RlIiwiaXRlcl9jb3VudCIsInRpbWluZ19mdW5jdGlvbiIsInNwYW5fdG9fc3RyaW5nIiwiZCIsImZpbGxfbW9kZSQwIiwidXNlcl9zZWxlY3QiLCJjc3MiLCJzMiIsIngiLCJ0b19qc19zdHJpbmciLCJ0b19qc19zdHJpbmdfZml4ZWQiLCJ0b19qc19zdHJpbmdfcHJlY2lzaW9uIiwidG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX2ZpeGVkIiwidG9fc3RyaW5nX3ByZWNpc2lvbiIsInRvX3N0cmluZ19leHBvbmVudGlhbCIsInByaW50IiwiZiIsInZpc2liaWxpdHlfaGFuZGxlcnMiLCJzZXF1ZW5jZV9hc19zaWJsaW5nIiwibGVmdCIsInVubGVzc19zdG9wcGVkIiwiY29udGFpbnNfc3RvcCIsImVzIiwiY3VycmVudF9kb21fZXZlbnQiLCJoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4iLCJoYW5kbGUiLCJkb21fZXZlbnQiLCJldmVudCIsIm9sZCIsInNleHBfb2ZfdCIsInZhbHVlIiwidHlwZV9pZCIsImdlbmVyaWNfaG9vayIsInBhY2siLCJpZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJpbml0IiwiaW5wdXRfaWQiLCJpbnB1dCIsImEiLCJpbml0JDAiLCJhJDAiLCJ1cGRhdGUkMCIsImRlc3Ryb3kkMCIsImdlbmVyaWNfaG9vayQwIiwiZXh0cmEiLCJjb21iaW5lIiwicmlnaHQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImVsZW1lbnQiLCJzdGF0ZSIsImFuaW1hdGlvbl9pZCIsIm9sZF9pbnB1dCIsImNyZWF0ZSIsImNvbWJpbmVfaW5wdXRzIiwic2V0IiwiZ2V0IiwiZGVsZXRlJDAiLCJzZXRfcHJvcF9hc2NpaSIsInQiLCJuYW1lIiwiZ2V0X3Byb3BfYXNjaWkiLCJoYXNfcHJvcGVydHkiLCJzZXRfcHJvcGVydHkiLCJoYXNfYXR0cmlidXRlIiwic2V0X2F0dHJpYnV0ZSIsInRvX2RvbSIsIm5vZGUiLCJ0YWciLCJhdHRycyIsImNoaWxkcmVuIiwia2V5Iiwia2V5JDAiLCJzdmciLCJ0ZXh0IiwicyIsInBhdGNoIiwiY3JlYXRlJDAiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJpc19lbXB0eSIsImZfaWQiLCJpZF9zZXhwIiwiY3JlYXRlJDEiLCJ2ZG9tX2Zvcl90ZXN0aW5nIiwiZWx0IiwiZG9tX25vZGUiLCJzMCIsInByZXZfc3RhdGUiLCJkb21fbm9kZSQwIiwibmFtZSQyIiwibmFtZSQxIiwibmFtZSQwIiwiZW1wdHkiLCJyaGFuZGxlciIsInhfMDAyIiwibGhhbmRsZXIiLCJ4XzAwMSIsImNyZWF0ZV9mbG9hdCIsInByb3BlcnR5Iiwic3RyaW5nX3Byb3BlcnR5IiwiYm9vbF9wcm9wZXJ0eSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzIiwiY3JlYXRlX2hvb2siLCJob29rIiwibWFueSIsIm1hbnlfd2l0aG91dF9tZXJnZSIsImNvbWJpbmUkMCIsIndhcm5pbmdfY291bnQiLCJ3YXJuX3MiLCJxdW90YSIsIndhcm5pbmdfY291bnQkMCIsInJlc2V0X3dhcm5pbmdfY291bnQiLCJjb21iaW5pbmdfbWFwX2FkZCIsIm1hcCIsImV4aXN0aW5nX3ZhbHVlIiwiZW1wdHlfbWVyZ2UiLCJzdHlsZSIsImNzcyIsImNsYXNzJDAiLCJjbGFzc25hbWUiLCJjbGFzc2VzIiwiY2xhc3NlcyQwIiwiY2xhc3NuYW1lcyIsImhyZWYiLCJyIiwibGFiZWwiLCJ0YXJnZXQiLCJjaGVja2VkIiwic2VsZWN0ZWQiLCJoaWRkZW4iLCJyZWFkb25seSIsImRpc2FibGVkIiwicGxhY2Vob2xkZXIiLCJ4IiwiYXV0b2ZvY3VzIiwiZm9yJDAiLCJ0eXBlIiwidmFsdWVfcHJvcCIsInRhYmluZGV4IiwidGl0bGUiLCJhbHQiLCJzcmMiLCJvcGVuIiwic3RhcnQiLCJtaW4iLCJtYXgiLCJtaW5fZGF0ZSIsIm1heF9kYXRlIiwibWluX2RhdGVfdGltZSIsIm1heF9kYXRlX3RpbWUiLCJjb2xzcGFuIiwicm93c3BhbiIsImRyYWdnYWJsZSIsImIiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJjbGlwYm9hcmQiLCJkcmFnIiwicG9pbnRlciIsImFuaW1hdGlvbiIsIm9uIiwiaGFuZGxlciIsIm9uX2ZvY3VzIiwib25fYmx1ciIsIm9uX2NsaWNrIiwib25fY29udGV4dG1lbnUiLCJvbl9kb3VibGVfY2xpY2siLCJvbl9kcmFnIiwib25fZHJhZ3N0YXJ0Iiwib25fZHJhZ2VuZCIsIm9uX2RyYWdlbnRlciIsIm9uX2RyYWdsZWF2ZSIsIm9uX2RyYWdvdmVyIiwib25fZHJvcCIsIm9uX21vdXNlbW92ZSIsIm9uX21vdXNldXAiLCJvbl9tb3VzZWRvd24iLCJvbl9tb3VzZWVudGVyIiwib25fbW91c2VsZWF2ZSIsIm9uX21vdXNlb3ZlciIsIm9uX21vdXNlb3V0Iiwib25fa2V5dXAiLCJvbl9rZXlwcmVzcyIsIm9uX2tleWRvd24iLCJvbl9zY3JvbGwiLCJvbl9sb2FkIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fd2hlZWwiLCJvbl9jb3B5Iiwib25fY3V0Iiwib25fcGFzdGUiLCJvbl9yZXNldCIsIm9uX2FuaW1hdGlvbmVuZCIsImNvbnN0X2lnbm9yZSIsInJ1bl9jb2VyY2lvbiIsImNvZXJjaW9uIiwicHJldiIsIm9uX2lucHV0X2V2ZW50Iiwib25fY2hhbmdlIiwib25faW5wdXQiLCJ0b19yYXciLCJhdHRyIiwiYXR0cnNfb2JqIiwidGFrZV9zZWNvbmRfc3R5bGVzIiwiZmlyc3QiLCJzZWNvbmQiLCJ0YWtlX3NlY29uZF9jbGFzc2VzIiwiZmlyc3QkMCIsImFfMDAzIiwiYl8wMDQiLCJzZWNvbmQkMCIsImFfMDA1IiwiYl8wMDYiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwic2V4cF9vZl90JDAiLCJ4XzAxMyIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMwXzAxMSIsInJlczFfMDEyIiwiY29tYmluZSQyIiwib25fbW91bnQkMCIsIm5ld19pbnB1dCIsImFfMDE2IiwiYl8wMTciLCJ0XzAxOSIsInRfMDE4IiwidF8wMjEiLCJ0XzAyMCIsImNzc192YXJzX25vX2tlYmFicyIsImFsaXN0IiwiY3NzX3ZhciIsImZpbHRlcl9ieV9raW5kIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsImV2ZW50X2tpbmQkMSIsImV2ZW50X2tpbmQkMiIsImV2ZW50X2tpbmQkMyIsImV2ZW50X2tpbmQkNCIsImV2ZW50X2tpbmQkNSIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJjbGljayIsImNvbnRleHRtZW51Iiwia2V5ZG93biIsImJlZm9yZXVubG9hZCIsImYkMCIsInZpc2liaWxpdHljaGFuZ2UiLCJtb3VzZXVwX3R5cGVfaWQiLCJtb3VzZW1vdmVfdHlwZV9pZCIsImtleWRvd25fdHlwZV9pZCIsImNsaWNrX3R5cGVfaWQiLCJjb250ZXh0bWVudV90eXBlX2lkIiwidmlzaWJpbGl0eWNoYW5nZV90eXBlX2lkIiwiYmVmb3JldW5sb2FkX3R5cGVfaWQiLCJ2ZG9tX3RodW5rIiwiYXJnIiwia2V5JDEiLCJyZXMxXzAwOSIsIndpdGhfa2V5IiwibWFwX2F0dHJzIiwicmF3X2F0dHJzIiwiYWRkX2NsYXNzZXMiLCJ0X3RvX2pzIiwidyIsInRfdG9fanNfbGF6eSIsImtpbmQiLCJvdGhlciIsImxhenkiLCJlbGVtZW50X2V4cGVydCIsIndpZGdldCIsInZkb21fZm9yX3Rlc3RpbmckMCIsImNyZWF0ZV9jaGlsZGxlc3MiLCJjcmVhdGVfc3ZnIiwidGV4dGYiLCJmb3JtYXQiLCJ3aWRnZXRfb2ZfbW9kdWxlIiwibSIsImFyZzBfMDA2Iiwic3RhdGVfMDA0IiwiaW5wdXRfMDAyIiwiYXJnXzAwNSIsImJuZHNfMDAxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDAiLCJyZXMwXzAwOCIsInByZXZfaW5wdXQiLCJlbGVtZW50JDAiLCJzdGF0ZSQwIiwiaSIsIndpZGdldCQwIiwiY29udGVudCIsIm92ZXJyaWRlX3Zkb21fZm9yX3Rlc3RpbmciLCJwcmV2X2F0dHIiLCJwcmV2X3RhZyIsInByZXZfY29udGVudCIsImlubmVyX2h0bWxfc3ZnIiwiaW5uZXJfaHRtbCIsImFiYnIiLCJib2R5IiwiYnV0dG9uIiwiY29kZSIsImRhdGFsaXN0IiwiZGV0YWlscyIsImRpdiIsIm1haW4iLCJmaWVsZHNldCIsImxlZ2VuZCIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImh0bWwiLCJpbWciLCJpbnB1dF9kZXByZWNhdGVkIiwidGV4dGFyZWEiLCJzZWxlY3QiLCJvcHRncm91cCIsIm9wdGlvbiIsImxpIiwicCIsInByZSIsInNlY3Rpb24iLCJzcGFuIiwic3Ryb25nIiwiZW0iLCJibG9ja3F1b3RlIiwic3VtbWFyeSIsImlmcmFtZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwiZGwiLCJkdCIsImRkIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsImFwcGx5IiwiY3JlYXRlJDIiLCJjcmVhdGVfc3ZnJDAiLCJoZXJlIiwiZXJyb3Jfc291cmNlXzAwNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInZhbGlkYXRlIiwidCIsImVxdWFsIiwidDEiLCJ0MiIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJzZXhwX29mX3QkMSIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJ0MSIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJzZXhwX29mX3QiLCJ2XzAwNiIsInNsb3RzX3Blcl90dXBsZV8wMDIiLCJhcmdfMDAzIiwiYm5kc18wMDEiLCJzZXhwX29mX3QkMCIsIm9mX3R1cGxlXzAwNyIsIm9mX3ZhcmlhbnRfMDA4Iiwic2xvdHNfcGVyX3R1cGxlIiwibiIsInNleHBfb2ZfdDEiLCJvZl9hMF8wMDkiLCJzZXhwX29mX3QyIiwib2ZfYTBfMDEwIiwib2ZfYTFfMDExIiwic2V4cF9vZl90MyIsIm9mX2EwXzAxMiIsIm9mX2ExXzAxMyIsIm9mX2EyXzAxNCIsInNleHBfb2ZfdDQiLCJvZl9hMF8wMTUiLCJvZl9hMV8wMTYiLCJvZl9hMl8wMTciLCJvZl9hM18wMTgiLCJzZXhwX29mX3Q1Iiwib2ZfYTBfMDE5Iiwib2ZfYTFfMDIwIiwib2ZfYTJfMDIxIiwib2ZfYTNfMDIyIiwib2ZfYTRfMDIzIiwic2V4cF9vZl90NiIsIm9mX2EwXzAyNCIsIm9mX2ExXzAyNSIsIm9mX2EyXzAyNiIsIm9mX2EzXzAyNyIsIm9mX2E0XzAyOCIsIm9mX2E1XzAyOSIsInNleHBfb2ZfdDciLCJvZl9hMF8wMzAiLCJvZl9hMV8wMzEiLCJvZl9hMl8wMzIiLCJvZl9hM18wMzMiLCJvZl9hNF8wMzQiLCJvZl9hNV8wMzUiLCJvZl9hNl8wMzYiLCJzZXhwX29mX3Q4Iiwib2ZfYTBfMDM3Iiwib2ZfYTFfMDM4Iiwib2ZfYTJfMDM5Iiwib2ZfYTNfMDQwIiwib2ZfYTRfMDQxIiwib2ZfYTVfMDQyIiwib2ZfYTZfMDQzIiwib2ZfYTdfMDQ0Iiwic2V4cF9vZl90OSIsIm9mX2EwXzA0NSIsIm9mX2ExXzA0NiIsIm9mX2EyXzA0NyIsIm9mX2EzXzA0OCIsIm9mX2E0XzA0OSIsIm9mX2E1XzA1MCIsIm9mX2E2XzA1MSIsIm9mX2E3XzA1MiIsIm9mX2E4XzA1MyIsInNleHBfb2ZfdDEwIiwib2ZfYTBfMDU0Iiwib2ZfYTFfMDU1Iiwib2ZfYTJfMDU2Iiwib2ZfYTNfMDU3Iiwib2ZfYTRfMDU4Iiwib2ZfYTVfMDU5Iiwib2ZfYTZfMDYwIiwib2ZfYTdfMDYxIiwib2ZfYThfMDYyIiwib2ZfYTlfMDYzIiwic2V4cF9vZl90MTEiLCJvZl9hMF8wNjQiLCJvZl9hMV8wNjUiLCJvZl9hMl8wNjYiLCJvZl9hM18wNjciLCJvZl9hNF8wNjgiLCJvZl9hNV8wNjkiLCJvZl9hNl8wNzAiLCJvZl9hN18wNzEiLCJvZl9hOF8wNzIiLCJvZl9hOV8wNzMiLCJvZl9hMTBfMDc0Iiwic2V4cF9vZl90MTIiLCJvZl9hMF8wNzUiLCJvZl9hMV8wNzYiLCJvZl9hMl8wNzciLCJvZl9hM18wNzgiLCJvZl9hNF8wNzkiLCJvZl9hNV8wODAiLCJvZl9hNl8wODEiLCJvZl9hN18wODIiLCJvZl9hOF8wODMiLCJvZl9hOV8wODQiLCJvZl9hMTBfMDg1Iiwib2ZfYTExXzA4NiIsInNleHBfb2ZfdDEzIiwib2ZfYTBfMDg3Iiwib2ZfYTFfMDg4Iiwib2ZfYTJfMDg5Iiwib2ZfYTNfMDkwIiwib2ZfYTRfMDkxIiwib2ZfYTVfMDkyIiwib2ZfYTZfMDkzIiwib2ZfYTdfMDk0Iiwib2ZfYThfMDk1Iiwib2ZfYTlfMDk2Iiwib2ZfYTEwXzA5NyIsIm9mX2ExMV8wOTgiLCJvZl9hMTJfMDk5Iiwic2V4cF9vZl90MTQiLCJvZl9hMF8xMDAiLCJvZl9hMV8xMDEiLCJvZl9hMl8xMDIiLCJvZl9hM18xMDMiLCJvZl9hNF8xMDQiLCJvZl9hNV8xMDUiLCJvZl9hNl8xMDYiLCJvZl9hN18xMDciLCJvZl9hOF8xMDgiLCJvZl9hOV8xMDkiLCJvZl9hMTBfMTEwIiwib2ZfYTExXzExMSIsIm9mX2ExMl8xMTIiLCJvZl9hMTNfMTEzIiwibmFtZSQxIiwicHJlZml4IiwibmFtZSQwIiwibmFtZSIsImZhaWx3aXRocyIsImFyY2hfc2l4dHlmb3VyIiwibnVtX2JpdHMiLCJtYXhfdmFsdWUiLCJ0b19zdHJpbmciLCJzcHJpbnRmIiwiY29uY2F0IiwibCIsIm9mX3Nsb3RzXzAwNyIsIm9mX2FfMDA4IiwiZXF1YWwiLCJtYXhfc2xvdCIsImFycmF5X2luZGV4X251bV9iaXRzIiwibWFza2VkX3R1cGxlX2lkX251bV9iaXRzIiwibWF4X2FycmF5X2xlbmd0aCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInQiLCJwaHlzX2VxdWFsIiwicGh5c19jb21wYXJlIiwibnVsbCQwIiwiaXNfbnVsbCIsImNyZWF0ZSIsImhlYWRlcl9pbmRleCIsInR1cGxlX2lkIiwiaGVhZGVyX2luZGV4X21hc2siLCJpbnZhcmlhbnQiLCJzbG90X2luZGV4Iiwic2xvdCIsImZpcnN0X3Nsb3RfaW5kZXgiLCJ0b19pbnQ2MyIsIm9mX2ludDYzIiwibnVsbCQxIiwiaXNfbnVsbCQwIiwiaXNfZnJlZSIsImlzX3VzZWQiLCJ0dXBsZV9pZCQwIiwibWV0YWRhdGFfaW5kZXgiLCJzdGFydF9vZl90dXBsZXNfaW5kZXgiLCJtYXhfY2FwYWNpdHkiLCJkdW1teSIsInIiLCJmaXJzdF9mcmVlIiwic2V0X2ZpcnN0X2ZyZWUiLCJ2IiwibmV4dF9pZCIsInNldF9uZXh0X2lkIiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImNhcGFjaXR5IiwiZHVtbXkkMCIsImZpcnN0X2ZyZWUkMCIsIm5leHRfaWQkMCIsImxlbmd0aCQwIiwiY2FwYWNpdHkkMCIsInNsb3RzX3Blcl90dXBsZSQwIiwiaW5pdCIsImFycmF5X2luZGljZXNfcGVyX3R1cGxlIiwiYXJyYXlfbGVuZ3RoIiwidHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCIsInR1cGxlX251bSIsInR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IiwibWV0YWRhdGEiLCJsZW5ndGgkMSIsInNleHBfb2ZfdCQzIiwic2V4cF9vZl90eSIsImNhcGFjaXR5XzAxOCIsInNsb3RzX3Blcl90dXBsZV8wMTYiLCJsZW5ndGhfMDIwIiwibmV4dF9pZF8wMjIiLCJmaXJzdF9mcmVlXzAyNCIsImR1bW15XzAyNiIsImFyZ18wMjciLCJibmRzXzAxNSIsImFyZ18wMjUiLCJibmRzXzAxNSQwIiwiYXJnXzAyMyIsImJuZHNfMDE1JDEiLCJhcmdfMDIxIiwiYm5kc18wMTUkMiIsImFyZ18wMTkiLCJibmRzXzAxNSQzIiwiYXJnXzAxNyIsImJuZHNfMDE1JDQiLCJ1bnNhZmVfaGVhZGVyIiwidW5zYWZlX3NldF9oZWFkZXIiLCJoZWFkZXIiLCJoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIiwidW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSIsInBvaW50ZXIiLCJ0JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMSIsImlkIiwic2hvdWxkX2VxdWFsIiwieF8wMDkiLCJleG4kMCIsImV4biIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsImFyZzBfMDI4IiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInJlczJfMDMzIiwiaW52YXJpYW50JDAiLCJpbnZhcmlhbnRfYSIsImZyZWUiLCJoZWFkZXJfaW5kZXgkMCIsInR1cGxlX251bSQwIiwiZmlyc3Rfc2xvdCIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiY2FwYWNpdHkkMSIsImlzX2Z1bGwiLCJ1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCIsIm5leHRfZnJlZV9oZWFkZXJfaW5kZXgiLCJzZXRfbWV0YWRhdGEiLCJjcmVhdGVfYXJyYXkiLCJ1bnNhZmVfaW5pdF9yYW5nZSIsImxvIiwiaGkiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJ0cyIsImFyZyIsInNleHBfb2ZfYXJnIiwic2V4cF9vZl9yZXN1bHQiLCJmIiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ2XzA2OCIsInhfMDY5IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2Iiwib2Zfc2xvdHNfMDc3IiwiaXNfdmFsaWRfMDc5IiwicG9pbnRlcl8wODEiLCJhcmdfMDgyIiwiYm5kc18wNzgiLCJhcmdfMDgwIiwiYm5kc18wNzgkMCIsImZpZWxkMCIsImZpZWxkMSIsInR5cGVuYW1lIiwiaGFzX2RvdWJsZV9hcnJheV90YWciLCJmaWVsZHMiLCJpc192YWxpZCIsImZvbGxvdyIsInhfMDgzIiwiaW52YWxpZGF0ZSIsInBvcyQ5IiwicG9zJDgiLCJwb3MkNyIsInBvcyQ2IiwiYXJnXzA4NyIsInBvcyQ1IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsImVycm9yX3NvdXJjZV8wMTkiLCJtYXhfdGltZSIsIm1pbl90aW1lIiwibWF4X251bV9iaXRzIiwibWluX3ZhbHVlIiwiaW52YXJpYW50IiwidCIsIm9mX2ludCIsImkiLCJzeW1ib2wkMiIsInQxIiwidDIiLCJzeW1ib2wkMyIsInBvdzIiLCJzZXhwX29mX3QkMCIsInhfMDA3IiwibnVtX2JpdHNfaW50ZXJuYWwiLCJudW1fYml0cyIsImludmFyaWFudCQwIiwibnVtX2tleV9iaXRzIiwidF9vZl9zZXhwJDAiLCJ4XzAwNiIsImNyZWF0ZV9leG4iLCJ4XzAwOCIsImV4dGVuZF90b19tYXhfbnVtX2JpdHMiLCJiaXRzIiwiaW50cyIsImxldmVsX2JpdHNfZGVmYXVsdCIsImNvbXBhcmUiLCJlcXVhbCQwIiwieF8wMTIiLCJ4XzAxMyIsInRvX3NleHBhYmxlIiwic2V4cF9vZl90JDEiLCJhYm91dF9vbmVfbWljcm9zZWNvbmQiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJsZXZlbF9iaXRzJDAiLCJ2IiwidF9vZl9zZXhwJDIiLCJ4XzAyMSIsImNhcGFjaXR5IiwiYWxhcm1fcHJlY2lzaW9uIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wMjciLCJsZXZlbF9iaXRzXzAyNSIsImFsYXJtX3ByZWNpc2lvbl8wMjMiLCJibmRzXzAyMiIsInZfMDI4IiwiYXJnXzAzMCIsImJuZF8wMjkiLCJibmRzXzAyMiQwIiwiYXJnXzAyNiIsImJuZHNfMDIyJDEiLCJhcmdfMDI0IiwiYm5kc18wMjIkMiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJsb29wIiwicmVtYWluaW5nIiwidCQwIiwiYiIsIm1pY3Jvc2Vjb25kX3ByZWNpc2lvbiIsImR1cmF0aW9ucyIsIm51bV9iaXRzX2FjY3VtIiwibGV2ZWxfbnVtX2JpdHMiLCJudW1fYml0c19hY2N1bSQwIiwiZHVyYXRpb24iLCJjb21wYXJlJDAiLCJzZXhwX29mX3QkNCIsImNyZWF0ZSQwIiwiY3JlYXRlJDEiLCJiaXRzX3Blcl9zbG90IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsInNjYWxlX2ludCIsInNleHBfb2ZfdCQ3Iiwib2ZfaW50NjMkMCIsInRvX2ludDYzJDAiLCJhZGQiLCJhZGRfY2xhbXBfdG9fbWF4Iiwic3ViIiwiZGlmZiIsInNleHBfb2ZfcG9vbF9zbG90cyIsIm9mX2FfMDMzIiwieF8wMzQiLCJzZXhwX29mX3QkOCIsIm9mX2FfMDM1IiwieF8wMzYiLCJudWxsJDAiLCJudWxsJDEiLCJpc19udWxsIiwiZnJlZSIsImtleSIsInAiLCJhdCIsInZhbHVlIiwibGV2ZWxfaW5kZXgiLCJwcmV2Iiwic2V0X3ByZXYiLCJ4IiwibmV4dCIsInNldF9uZXh0IiwiaXNfdmFsaWQiLCJncm93IiwiaXNfZnVsbCIsIm9mX2V4dGVybmFsX2V4biIsInBvb2wiLCJsaW5rIiwiaXRlciIsImZpcnN0IiwiZiIsImN1cnJlbnQiLCJjb250aW51ZSQwIiwibmV4dCQwIiwic2xvdHMiLCJtYXhfYWxsb3dlZF9rZXkiLCJzZXRfbWF4X2FsbG93ZWRfa2V5IiwibWluX2FsbG93ZWRfa2V5Iiwic2V0X21pbl9hbGxvd2VkX2tleSIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDQ0IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA1OCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDU2Iiwia2V5c19wZXJfc2xvdF8wNTQiLCJiaXRzX3Blcl9zbG90XzA1MiIsInNsb3RzX21hc2tfMDUwIiwiYml0c18wNDgiLCJpbmRleF8wNDYiLCJsZW5ndGhfMDYwIiwibWluX2FsbG93ZWRfa2V5XzA2MiIsIm1heF9hbGxvd2VkX2tleV8wNjQiLCJzbG90c18wNjYiLCJhcmdfMDY3IiwiYm5kc18wNDUiLCJhcmdfMDY1IiwiYm5kc18wNDUkMCIsImFyZ18wNjMiLCJibmRzXzA0NSQxIiwiYXJnXzA2MSIsImJuZHNfMDQ1JDIiLCJhcmdfMDU5IiwiYm5kc18wNDUkMyIsImFyZ18wNTciLCJibmRzXzA0NSQ0IiwiYXJnXzA1NSIsImJuZHNfMDQ1JDUiLCJhcmdfMDUzIiwiYm5kc18wNDUkNiIsImFyZ18wNTEiLCJibmRzXzA0NSQ3IiwiYXJnXzA0OSIsImJuZHNfMDQ1JDgiLCJhcmdfMDQ3IiwiYm5kc18wNDUkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsImNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkiLCJsZXZlbHMiLCJlbHRfa2V5X2xvd2VyX2JvdW5kIiwic2V0X2VsdF9rZXlfbG93ZXJfYm91bmQiLCJtaW5fZWx0Iiwic2V0X21pbl9lbHQiLCJzZXRfcG9vbCIsImxlbmd0aCQxIiwic2V0X2xlbmd0aCQwIiwibGV2ZWxzJDAiLCJlbHRfa2V5X2xvd2VyX2JvdW5kJDAiLCJtaW5fZWx0JDAiLCJwb29sJDAiLCJsZW5ndGgkMiIsImlzX2VtcHR5IiwibnVtX2xldmVscyIsIm1pbl9hbGxvd2VkX2tleSQxIiwibWF4X2FsbG93ZWRfa2V5JDEiLCJpbnRlcm5hbF9pdGVyIiwibGV2ZWwiLCJzbG90X2luZGV4IiwiZWx0IiwiY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rIiwibWluX2VsdCQxIiwibWluX2VsdF9hbHJlYWR5X2ZvdW5kIiwibWluX2tleV9hbHJlYWR5X2ZvdW5kIiwibnVtX2xldmVscyQwIiwic2xvdF9taW5fa2V5Iiwic2xvdCQwIiwiY3VycmVudF9rZXkiLCJhZGRfZWx0IiwieF8xMTQiLCJ0b19hZGQiLCJrZXkkMCIsImVsdHNfMDk0IiwibWF4X2FsbG93ZWRfa2V5XzA5MiIsIm1pbl9hbGxvd2VkX2tleV8wOTAiLCJhcmdfMDk1Iiwia2V5XzA4NCIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJyJDAiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTQ2Iiwic3RhcnRfMTQ0IiwiY29uZmlnXzE0MiIsIm5vd18xNDgiLCJhbGFybSIsImFsYXJtc18xNTAiLCJhcmdfMTUxIiwidmFsdWVfMTM4IiwiYXRfMTM2IiwiYXJnXzEzOSIsImJuZHNfMTM1IiwiYXJnXzEzNyIsImJuZHNfMTM1JDAiLCJibmRzXzE0MSIsImFyZ18xNDkiLCJibmRzXzE0MSQwIiwiYXJnXzE0NyIsImJuZHNfMTQxJDEiLCJhcmdfMTQ1IiwiYm5kc18xNDEkMiIsImFyZ18xNDMiLCJibmRzXzE0MSQzIiwibGVuZ3RoJDMiLCJpc19lbXB0eSQwIiwicG9vbCQxIiwiaW50ZXJ2YWxfbnVtX2ludGVybmFsIiwidGltZSIsImludGVydmFsX251bV91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW0kMCIsImludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW1fc3RhcnQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIiwibmV4dF9hbGFybV9maXJlc19hdCIsIm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIiwieF8xNTMiLCJjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtIiwibWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIiwiaW50ZXJ2YWxfc3RhcnQiLCJpbnZhcmlhbnQkMiIsImludmFyaWFudF9hIiwieF8xNTUiLCJjaGVjayIsInByaW9yaXR5X3F1ZXVlX2Z1biIsInhfMTA5Iiwib2ZfYV8wNjgiLCJsZW5ndGhfMDcwIiwicG9vbF8wNzIiLCJtaW5fZWx0XzA3NCIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDc2IiwibGV2ZWxzXzA3OCIsImFyZ18wNzkiLCJibmRzXzA2OSIsImFyZ18wNzciLCJibmRzXzA2OSQwIiwiYXJnXzA3NSIsImJuZHNfMDY5JDEiLCJhcmdfMDczIiwiYm5kc18wNjkkMiIsImFyZ18wNzEiLCJibmRzXzA2OSQzIiwibGV2ZWxzX2Z1biIsInhfMDk4Iiwic2xvdHNfZnVuIiwieF8wNDEiLCJuIiwibWF4X2FsbG93ZWRfa2V5X2Z1biIsImV4cGVjdCIsImNvbXBhcmF0b3IiLCJhXzEwNyIsImJfMTA4IiwibWluX2FsbG93ZWRfa2V5X2Z1biIsImdvdCIsInNleHBpZmllciIsImFfMTA1IiwiYl8xMDYiLCJsZW5ndGhfZnVuIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5X2Z1biIsImV0YSIsImFfMTAzIiwiYl8xMDQiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrX2Z1biIsImtleXNfcGVyX3Nsb3RfZnVuIiwiYV8xMDEiLCJiXzEwMiIsImJpdHNfcGVyX3Nsb3RfZnVuIiwiZXhwZWN0JDAiLCJzbG90c19tYXNrX2Z1biIsImFfMDk5IiwiYl8xMDAiLCJiaXRzX2Z1biIsImluZGV4X2Z1biIsInByZXZfbGV2ZWwiLCJnb3QkMCIsImFfMTEwIiwiYl8xMTEiLCJjb21wYXJhdG9yJDAiLCJhXzExMiIsImJfMTEzIiwiZWx0X2tleV9sb3dlcl9ib3VuZF9mdW4iLCJtaW5fZWx0X2Z1biIsInBvb2xfZnVuIiwibWF4X2FsbG93ZWRfYWxhcm1fdGltZV9mdW4iLCJhXzE2MiIsImJfMTYzIiwibm93X2ludGVydmFsX251bV9zdGFydF9mdW4iLCJhXzE2MCIsImJfMTYxIiwibm93X2Z1biIsIm1heF9pbnRlcnZhbF9udW1fZnVuIiwiYV8xNTYiLCJiXzE1NyIsInNleHBpZmllciQwIiwiYV8xNTgiLCJiXzE1OSIsInN0YXJ0X2Z1biIsImNvbmZpZ19mdW4iLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJ0JDEiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTY0IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTY1IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE2NiIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMDYiLCJlcnJvcl9zb3VyY2VfMDE1IiwiZXJyb3Jfc291cmNlXzAyOCIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDM2IiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzOSIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInhfMDA3IiwiaG93X3RvX2R1bXAiLCJkdW1wX2lmX2RlbGF5ZWRfYnkiLCJzZXhwX29mX3dhdGNoIiwiaG93X3RvX2R1bXBfMDExIiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOSIsImFyZ18wMTIiLCJibmRzXzAwOCIsImFyZ18wMTAiLCJibmRzXzAwOCQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzAxNyIsInRhZ18wMTgiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfb2ZfdCQ3IiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsInRfb2Zfc2V4cCQ4Iiwic2V4cF8wMjkiLCJzZXhwX29mX3QkOCIsImVxdWFsJDAiLCJ4XzAzMCIsInhfMDMxIiwidF9vZl9zZXhwJDkiLCJzZXhwXzAzNyIsInNleHBfb2ZfdCQ5IiwidF9vZl9zZXhwJDEwIiwic2V4cF9vZl90JDEwIiwidGltaW5nX3doZWVsX2NvbmZpZyIsInIiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyIsIm1heF9udW1fdGhyZWFkcyIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0IiwiZmlsZV9kZXNjcl93YXRjaGVyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIiLCJjaGVja19pbnZhcmlhbnRzIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfIiwidGltaW5nX3doZWVsX2NvbmZpZyQwIiwidiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eSQwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQwIiwicmVjb3JkX2JhY2t0cmFjZXMkMCIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQwIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQkMCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQwIiwibWF4X251bV90aHJlYWRzJDAiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMCIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMCIsImVwb2xsX21heF9yZWFkeV9ldmVudHMkMCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMCIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQwIiwiY2hlY2tfaW52YXJpYW50cyQwIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfJDAiLCJzZXhwX29mX3QkMTEiLCJ0aW1pbmdfd2hlZWxfY29uZmlnXzEwMiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eV8wOTgiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXzAiLCJyZWNvcmRfYmFja3RyYWNlc18wOTAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDg2IiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXRfMDgyIiwibWF4X251bV90aHJlYWRzXzA3NCIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc18wNzAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dF8wNjYiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNTgiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5XzA1NCIsImNoZWNrX2ludmFyaWFudHNfMDQ2IiwiYm5kc18wNDEiLCJ2XzEwMyIsImFyZ18xMDUiLCJibmRfMTA0IiwiYm5kc18wNDEkMCIsInZfMDk5IiwiYXJnXzEwMSIsImJuZF8xMDAiLCJibmRzXzA0MSQxIiwidl8wOTUiLCJhcmdfMDk3IiwiYm5kXzA5NiIsImJuZHNfMDQxJDIiLCJ2XzA5MSIsImFyZ18wOTMiLCJibmRfMDkyIiwiYm5kc18wNDEkMyIsInZfMDg3IiwiYXJnXzA4OSIsImJuZF8wODgiLCJibmRzXzA0MSQ0Iiwidl8wODMiLCJhcmdfMDg1IiwiYm5kXzA4NCIsImJuZHNfMDQxJDUiLCJ2XzA3OSIsImFyZ18wODEiLCJibmRfMDgwIiwiYm5kc18wNDEkNiIsInZfMDc1IiwiYXJnXzA3NyIsImJuZF8wNzYiLCJibmRzXzA0MSQ3Iiwidl8wNzEiLCJhcmdfMDczIiwiYm5kXzA3MiIsImJuZHNfMDQxJDgiLCJ2XzA2NyIsImFyZ18wNjkiLCJibmRfMDY4IiwiYm5kc18wNDEkOSIsInZfMDYzIiwiYXJnXzA2NSIsImJuZF8wNjQiLCJibmRzXzA0MSQxMCIsInZfMDU5IiwiYXJnXzA2MSIsImJuZF8wNjAiLCJibmRzXzA0MSQxMSIsInZfMDU1IiwiYXJnXzA1NyIsImJuZF8wNTYiLCJibmRzXzA0MSQxMiIsInZfMDUxIiwiYXJnXzA1MyIsImJuZF8wNTIiLCJibmRzXzA0MSQxMyIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MSQxNCIsInZfMDQzIiwiYXJnXzA0NSIsImJuZF8wNDQiLCJibmRzXzA0MSQxNSIsImNyZWF0ZSQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2ZvIiwid29yZF9zaXplIiwibGV2ZWxfYml0cyQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJkZWZhdWx0JDEiLCJleGFtcGxlIiwidXNhZ2UiLCJmaWVsZCIsInRvX3NleHAiLCJkZXNjcmlwdGlvbiIsImFjIiwiZCIsImZpZWxkcyIsInhfMTA2IiwibmFtZTIiLCJuYW1lMSIsIm5hbWUiLCJzdHJpbmciLCJ4XzA0MCIsInQiLCJ0JDAiLCJleG4iLCJ0JDEiLCJ0JDIiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMSIsInRhZyIsImwiLCJhbGwiLCJkZWJ1ZyIsImNsb2NrIiwiZmQiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMSIsImZpbmFsaXplcnMiLCJpbnRlcnJ1cHRvciIsIm1vbml0b3IiLCJtb25pdG9yX3NlbmRfZXhuIiwicGFyYWxsZWwiLCJyZWFkZXIiLCJzY2hlZHVsZXIiLCJzaHV0ZG93biIsInRocmVhZF9wb29sIiwidGhyZWFkX3NhZmUiLCJ3cml0ZXIiLCJzeW1ib2wiLCJhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja18kMSIsImNoZWNrX2ludmFyaWFudHMkMSIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQxIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyQxIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5JDEiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMiIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMSIsIm1heF9udW1fdGhyZWFkcyQxIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCQxIiwicmVjb3JkX2JhY2t0cmFjZXMkMSIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMSIsInRpbWluZ193aGVlbF9jb25maWckMSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMSIsInQkMyIsInRhc2tfaWQiLCJub25lIiwiY3JlYXRlIiwiaXNfbm9uZSIsIngiLCJpc19zb21lIiwiZ2V0X3NvbWVfZXhuIiwiZ2V0IiwidCIsInVuc2FmZV9nZXQiLCJzZXRfc29tZSIsInYiLCJzZXRfbm9uZSIsInNldCIsInYkMCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ4XzAwMiIsImVtcHR5IiwiaXNfZW1wdHkiLCJlcXVhbCIsImR1bW15X2lkIiwiY2hpbGQiLCJ0IiwicG9vbCIsInNpYmxpbmciLCJwcmV2IiwiaWQiLCJzZXRfY2hpbGQiLCJ2Iiwic2V0X3NpYmxpbmciLCJzZXRfcHJldiIsInZhbHVlX2V4biIsImFsbG9jYXRlIiwidmFsdWUiLCJmcmVlIiwiZGlzY29ubmVjdF9zaWJsaW5nIiwic2libGluZyQwIiwiZGlzY29ubmVjdF9jaGlsZCIsImNoaWxkJDAiLCJkZXRhY2giLCJwcmV2JDAiLCJyZWxhdGlvbl90b19wcmV2IiwiY3JlYXRlIiwiY2FwYWNpdHkiLCJpbnZhcmlhbnQiLCJ0b192aXNpdCQyIiwidG9fdmlzaXQiLCJ0b192aXNpdCQwIiwibWF5YmVfcGFyZW50X3ZhbHVlIiwiZXhwZWN0ZWRfcHJldiIsIm5vZGUiLCJ0aGlzX3ZhbHVlIiwidGhpc192YWx1ZSQwIiwicGFyZW50X3ZhbHVlIiwidG9fdmlzaXQkMSIsImNyZWF0ZSQwIiwiY21wIiwibWluX3NpemUiLCJjb3B5IiwicG9vbCQwIiwic3RhcnQiLCJudW1fb2ZfYWxsb2NhdGVkX25vZGVzIiwiY29weV9ub2RlIiwibmV3X25vZGUiLCJuZXdfc3RhcnQiLCJyZXN0Iiwibm9kZV90b19jb3B5Iiwic2xvdCIsIm5vZGVfdG9fdXBkYXRlIiwibWVyZ2UiLCJyb290MSIsInJvb3QyIiwiYWRkX2NoaWxkIiwibmV3X2NoaWxkIiwiY3VycmVudF9jaGlsZCIsInYxIiwidjIiLCJ0b3BfZXhuIiwidG9wIiwiYWRkX25vZGUiLCJ0JDEiLCJ0JDAiLCJhZGQiLCJtYXhfc3RhY2tfZGVwdGgiLCJsb29wIiwiZGVwdGgiLCJoZWFkJDAiLCJuZXh0MSQwIiwibmV4dDIkMCIsImFjYyIsImhlYWQiLCJuZXh0MSIsIm5leHQyIiwiYWNjJDAiLCJoIiwieHMiLCJoZWFwIiwicmVtb3ZlX25vbl9lbXB0eSIsIm1lcmdlZF9jaGlsZHJlbiIsIm5ld19yb290IiwicmVtb3ZlX3RvcCIsImNsZWFyIiwibm9kZSQwIiwicG9wX2V4biIsInIiLCJwb3AiLCJwb3BfaWYiLCJmIiwiZm9sZCIsImluaXQiLCJpdGVyIiwibGVuZ3RoIiwiaXRlciQwIiwibGVuZ3RoJDAiLCJpc19lbXB0eSQwIiwibWVtIiwiZXhpc3RzIiwiZm9yX2FsbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fbGlzdCIsInRvX2FycmF5IiwibWluX2VsdCIsIm1heF9lbHQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJvZl9hcnJheSIsImFyciIsIm9mX2xpc3QiLCJsIiwic2V4cF9vZl90IiwiaXNfbm9kZV92YWxpZCIsInZhbHVlX2V4biQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJ4XzAwMSIsInJlbW92ZSIsInRva2VuIiwiYWRkX3JlbW92YWJsZSIsInVwZGF0ZSIsImZpbmRfZWx0Iiwibm9kZXMkMiIsIm5vZGVzIiwibm9kZXMkMCIsIm5vZGVzJDEiLCJ1cGRhdGUkMCIsImVsdCIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsImJ1ZiIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl90IiwiYmluX2EiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiZXF1YWwiLCJhXzAwMyIsImJfMDA0IiwidF9vZl9zZXhwIiwib2ZfYV8wMDUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJwb3MiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA4IiwiYl8wMDkiLCJlcXVhbCQwIiwiYV8wMTIiLCJiXzAxMyIsImFtX3J1bm5pbmdfdGVzdCIsIm5vbmUiLCJzb21lIiwieCIsInVuc2FmZV92YWx1ZSIsImlzX25vbmUiLCJ0IiwiaXNfc29tZSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwidmFsdWVfZXhuIiwidG9fb3B0aW9uIiwib2Zfb3B0aW9uIiwiYSIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwibmV4dF8wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImNyZWF0ZSIsInVudXNlZF9lbHRzIiwiciIsInNldF91bnVzZWRfZWx0cyIsInYiLCJiYWNrIiwic2V0X2JhY2siLCJmcm9udCIsInNldF9mcm9udCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJ1bnVzZWRfZWx0cyQwIiwiYmFjayQwIiwiZnJvbnQkMCIsImxlbmd0aCQwIiwic2V4cF9vZl90JDAiLCJvZl9hXzAwNyIsImxlbmd0aF8wMDkiLCJmcm9udF8wMTEiLCJiYWNrXzAxMyIsInVudXNlZF9lbHRzXzAxNSIsImFyZ18wMTYiLCJibmRzXzAwOCIsImFyZ18wMTQiLCJibmRzXzAwOCQwIiwiYXJnXzAxMiIsImJuZHNfMDA4JDEiLCJhcmdfMDEwIiwiYm5kc18wMDgkMiIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidCIsInhfMDE3IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsImNyZWF0ZSQwIiwiZW5xdWV1ZSIsImEiLCJuZXdfYmFjayIsImRlcXVldWVfZXhuIiwieF8wMTgiLCJjbGVhcl9pbnRlcm5hbF9wb29sIiwiYWZ0ZXIiLCJ0Iiwic3BhbiIsInJlc3VsdCIsImxvZyIsImFyZzJfMDAzIiwiYXJnM18wMDQiLCJzZXhwX29mX2EiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInJlczJfMDA3IiwicmVzM18wMDgiLCJsb2dfc3RyaW5nIiwibWVzc2FnZSIsImNvbmNhdCIsImVwcmludCIsImVwcmludF9zIiwiZXByaW50cyIsInByaW50X3MiLCJzZXhwIiwic2VjIiwiYWxsIiwic2V4cF9vZl90IiwidG9fcmVwciIsIm9mX3JlcHIiLCJuYW1lcyIsImRlYnVnIiwiZm9yd2FyZGluZyIsInIiLCJzZXRfZm9yd2FyZGluZyIsInYiLCJoYXNfc2Vlbl9lcnJvciIsInNldF9oYXNfc2Vlbl9lcnJvciIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzIiwic2V0X3RhaWxzX2Zvcl9hbGxfZXJyb3JzIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJuZXh0X2Vycm9yIiwic2V0X25leHRfZXJyb3IiLCJpZCIsImhlcmUiLCJuYW1lIiwiZm9yd2FyZGluZyQwIiwiaGFzX3NlZW5fZXJyb3IkMCIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzJDAiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyQwIiwibmV4dF9lcnJvciQwIiwiaWQkMCIsImhlcmUkMCIsIm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsIm5hbWVfZnVuIiwiaGVyZV9mdW4iLCJpZF9mdW4iLCJuZXh0X2Vycm9yX2Z1biIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsImhhc19zZWVuX2Vycm9yX2Z1biIsImZvcndhcmRpbmdfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwibmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwiaGVyZV9nZW4iLCJjb21waWxlX2FjYyQyIiwiaWRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsIm5leHRfZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJ0YWlsc19mb3JfYWxsX2Vycm9yc19nZW4iLCJjb21waWxlX2FjYyQ2IiwiaGFzX3NlZW5fZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNyIsImZvcndhcmRpbmdfZ2VuIiwiYWNjIiwiY3JlYXRlIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9ucyIsInQkMSIsImFjIiwiYWMkMCIsInQkMCIsInhfMDAxIiwibmV4dF9pZCIsImNyZWF0ZV93aXRoX3BhcmVudCIsImluZm8iLCJwYXJlbnQiLCJpIiwicyIsInMkMCIsInhfMDAyIiwicGFyZW50JDAiLCJtYWluIiwiYmFja3RyYWNlX2hpc3RvcnkiLCJsb2NhbF9zdG9yYWdlIiwicHJpb3JpdHkiLCJtb25pdG9yIiwiYmFja3RyYWNlX2hpc3RvcnkkMCIsImxvY2FsX3N0b3JhZ2UkMCIsInByaW9yaXR5JDAiLCJtb25pdG9yJDAiLCJtb25pdG9yX2Z1biIsInByaW9yaXR5X2Z1biIsImxvY2FsX3N0b3JhZ2VfZnVuIiwiYmFja3RyYWNlX2hpc3RvcnlfZnVuIiwibW9uaXRvcl9nZW4iLCJwcmlvcml0eV9nZW4iLCJsb2NhbF9zdG9yYWdlX2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5X2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5XzAwOCIsImxvY2FsX3N0b3JhZ2VfMDA2IiwicHJpb3JpdHlfMDA0IiwibW9uaXRvcl8wMDIiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJpbnZhcmlhbnQiLCJjcmVhdGVfbGlrZSIsImZpbmRfbG9jYWwiLCJrZXkiLCJ3aXRoX2xvY2FsIiwiZGF0YSIsInJlY29yZF9iYWNrdHJhY2UiLCJkdW1teV9lIiwiZHVtbXlfZiIsImR1bW15X2EiLCJzZXhwX29mX3Nsb3RzIiwib2ZfZXZlbnQiLCJldmVudCIsIm9mX2pvYiIsImpvYiIsImlzX2V2ZW50IiwiaXNfam9iIiwia2luZCIsInByb2plY3QiLCJqb2Jfb3JfZXZlbnQiLCJldmVudHMiLCJzZXRfZXhlY3V0aW9uX2NvbnRleHQiLCJleGVjdXRpb25fY29udGV4dCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJmcm9udCIsInNldF9mcm9udCIsIm1hc2siLCJzZXRfbWFzayIsImpvYnMiLCJzZXRfam9icyIsImpvYnNfbGVmdF90aGlzX2N5Y2xlIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIiwibnVtX2pvYnNfcnVuIiwic2V0X251bV9qb2JzX3J1biIsImxlbmd0aCQwIiwiZnJvbnQkMCIsIm1hc2skMCIsImpvYnMkMCIsImpvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJudW1fam9ic19ydW4kMCIsIm51bV9qb2JzX3J1bl8wMDIiLCJqb2JzX2xlZnRfdGhpc19jeWNsZV8wMDQiLCJqb2JzXzAwNiIsIm1hc2tfMDA4IiwiZnJvbnRfMDEwIiwibGVuZ3RoXzAxMiIsImJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXzAxNCIsImFyZ18wMTUiLCJhcmdfMDEzIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJibmRzXzAwMSQ0IiwiYm5kc18wMDEkNSIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUiLCJjbGVhciIsInNldCIsImEiLCJvZmZzZXQkMCIsImVucXVldWUiLCJvbGRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJvbGRfam9icyIsIm9sZF9mcm9udCIsImxlbjEiLCJsZW4yIiwibmV3X2pvYnMiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm4iLCJjYW5fcnVuX2Ffam9iIiwicnVuX2pvYiIsInNjaGVkdWxlciIsInJ1bl9leHRlcm5hbF9qb2JzIiwiZXh0ZXJuYWxfam9icyIsInJ1bl9qb2JzIiwidGhpc19qb2IiLCJleG4kMCIsImV4biIsImJhY2t0cmFjZSIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwibmFtZXMkMCIsImlzX251bGwiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic2V4cF9vZl90JDEiLCJ0cmFuc2l0aW9uX2lzX2FsbG93ZWQiLCJmcm9tIiwidG8iLCJzZXhwX29mX2V2ZW50IiwiYXQiLCJpbnRlcnZhbCIsInN0YXR1cyIsIm1hdGNoIiwibm9uZSIsInNvbWUiLCJpc19ub25lIiwiaXNfc29tZSIsImZpcnN0X3NvbWUiLCJ0MSIsInQyIiwidW5zYWZlX3ZhbHVlIiwic2V4cF9vZl90JDIiLCJwcHhfb3B0aW9uYWxfZV8wIiwidmFsdWUkMCIsImRlZmF1bHQkMCIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInNldF9zdGF0dXMiLCJwcmV2X2ZpcmVkIiwic2V0X3ByZXZfZmlyZWQiLCJuZXh0X2ZpcmVkIiwic2V0X25leHRfZmlyZWQiLCJzZXRfaW50ZXJ2YWwiLCJjYWxsYmFjayIsImF0JDAiLCJzZXRfYXQiLCJhbGFybSIsInNldF9hbGFybSIsInN0YXR1cyQwIiwicHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQwIiwiaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsYmFjayQwIiwiYXQkMSIsImFsYXJtJDAiLCJhbGFybV9mdW4iLCJhdF9mdW4iLCJjYWxsYmFja19mdW4iLCJleGVjdXRpb25fY29udGV4dF9mdW4iLCJpbnRlcnZhbF9mdW4iLCJuZXh0X2ZpcmVkX2Z1biIsInByZXZfZmlyZWRfZnVuIiwic3RhdHVzX2Z1biIsImFsYXJtX2dlbiIsImF0X2dlbiIsImNhbGxiYWNrX2dlbiIsImV4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImludGVydmFsX2dlbiIsIm5leHRfZmlyZWRfZ2VuIiwicHJldl9maXJlZF9nZW4iLCJzdGF0dXNfZ2VuIiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiZXhwZWN0IiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJ4XzAxNiIsInBweF9vcHRpb25hbF9lXzAkMCIsImFfMDE3IiwiYl8wMTgiLCJnb3QkMCIsInNleHBpZmllciQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsImludmFyaWFudCQwIiwic2V4cF9vZl90JDUiLCJ4XzAyMSIsImludmFyaWFudCQxIiwiaW52YXJpYW50X3dpdGhfam9icyQwIiwic2V4cF9vZl90JDYiLCJ4XzAyMiIsImlkJDEiLCJpc193YWxsX2Nsb2NrJDEiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwicmVhZF9vbmx5IiwiZmlyZSIsImNvbnRpbnVlJDAiLCJuZXh0JDAiLCJjb250aW51ZSQxIiwicHB4X29wdGlvbmFsX2VfMCQxIiwibmV4dCIsInBweF9vcHRpb25hbF9lXzAkMiIsInByZXYiLCJhbGFybV9wcmVjaXNpb24iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0IiwibmV4dF9hbGFybV9ydW5zX2F0Iiwibm93JDAiLCJ0aW1pbmdfd2hlZWxfbm93JDAiLCJzY2hlZHVsZSIsInJlbW92ZV9mcm9tX2ZpcmVkIiwibmV3X3N0YXR1cyIsInNleHBfb2ZfZXZlbnQkMCIsInN0YXR1cyQxIiwicHJldl9maXJlZCQxIiwic2V0X3ByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMSIsInNldF9uZXh0X2ZpcmVkJDAiLCJpbnRlcnZhbCQxIiwic2V0X2ludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQxIiwiY2FsbGJhY2skMSIsInNldF9hdCQwIiwiYWxhcm0kMSIsInNldF9hbGFybSQwIiwic2V4cF9vZl90JDciLCJpbnZhcmlhbnQkMiIsInNldF9zdGF0dXMkMSIsInNldF9zdGF0dXNfaWYkMCIsInNjaGVkdWxlZF9hdCIsImNyZWF0ZV9pbnRlcm5hbCIsImFkZCQwIiwiY3JlYXRlX2FuZF9hZGQiLCJhdCQyIiwiYWZ0ZXIkMCIsInJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wciIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXRfaW50ZXJ2YWxzIiwic2V4cF9vZl90JDgiLCJhYm9ydCIsImFib3J0X2lmX3Bvc3NpYmxlIiwiYWJvcnRfZXhuIiwicmVhc29uIiwiY3JlYXRlJDEiLCJpc19zY2hlZHVsZWQiLCJzY2hlZHVsZV9hdF9pbnRlcm5hbCIsInNjaGVkdWxlX2F0Iiwic2NoZWR1bGVfYWZ0ZXIiLCJzY2hlZHVsZV9hdF9pbnRlcnZhbHMiLCJyZXNjaGVkdWxlX2F0IiwicmVzY2hlZHVsZV9hZnRlciIsInJ1bl9hZnRlciIsInJ1bl9hdCIsInJ1bl9hdF9pbnRlcnZhbHMiLCJydW5fZmlyZWRfZXZlbnRzIiwic2VuZF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0Iiwic2VuZF9leG4kMCIsImFueV9maXJlZF9ldmVudHNfdG9fcnVuIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X2FsYXJtc19ieSIsImJ5IiwiYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfIiwiYWR2YW5jZV9kaXJlY3RseSIsImFkdmFuY2VfZGlyZWN0bHlfYnkiLCJkdXJhdGlvbl9vZiIsInN0YXJ0IiwiZHVyYXRpb24iLCJtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3ciLCJoYXNfZXZlbnRzX3RvX3J1biIsImNyZWF0ZV93aXRoX2NlbGwiLCJjZWxsIiwiY3JlYXRlX2Z1bGwiLCJleGVjIiwiZXhlYyQwIiwiZXhlY19mdW4iLCJleGVjX2dlbiIsInNleHBfb2ZfdCQwIiwiZXhlY3V0aW9uX2NvbnRleHRfMDAyIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJzZXRfcmVjb3JkX2JhY2t0cmFjZXMiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV8iLCJjaGVja19pbnZhcmlhbnRzIiwic2V0X2NoZWNrX2ludmFyaWFudHMiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInNldF95aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInlpZWxkJDAiLCJzZXRfeWllbGQiLCJldmVudF9hZGRlZF9ob29rIiwic2V0X2V2ZW50X2FkZGVkX2hvb2siLCJqb2JfcXVldWVkX2hvb2siLCJzZXRfam9iX3F1ZXVlZF9ob29rIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2siLCJzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2giLCJ0aW1lX3NvdXJjZSIsInNldF90aW1lX3NvdXJjZSIsInRvdGFsX2N5Y2xlX3RpbWUiLCJzZXRfdG90YWxfY3ljbGVfdGltZSIsImxhc3RfY3ljbGVfbnVtX2pvYnMiLCJzZXRfbGFzdF9jeWNsZV9udW1fam9icyIsImxhc3RfY3ljbGVfdGltZSIsInNldF9sYXN0X2N5Y2xlX3RpbWUiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInNldF9ydW5fZXZlcnlfY3ljbGVfZW5kIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Iiwic2V0X3J1bl9ldmVyeV9jeWNsZV9zdGFydCIsImluX2N5Y2xlIiwic2V0X2luX2N5Y2xlIiwiY3ljbGVfc3RhcnQiLCJzZXRfY3ljbGVfc3RhcnQiLCJjeWNsZV9jb3VudCIsInNldF9jeWNsZV9jb3VudCIsInVuY2F1Z2h0X2V4bl91bndyYXBwZWQiLCJzZXRfdW5jYXVnaHRfZXhuIiwic2V0X2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0Iiwic2V0X21haW5fZXhlY3V0aW9uX2NvbnRleHQiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIiwibG93X3ByaW9yaXR5X2pvYnMiLCJub3JtYWxfcHJpb3JpdHlfam9icyIsImpvYl9wb29sIiwic2V0X2pvYl9wb29sIiwiY2hlY2tfYWNjZXNzIiwic2V0X2NoZWNrX2FjY2VzcyIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsImNoZWNrX2ludmFyaWFudHMkMCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluJDAiLCJ5aWVsZCQxIiwiZXZlbnRfYWRkZWRfaG9vayQwIiwiam9iX3F1ZXVlZF9ob29rJDAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayQwIiwiZXh0ZXJuYWxfam9icyQwIiwidGltZV9zb3VyY2UkMCIsInRvdGFsX2N5Y2xlX3RpbWUkMCIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMCIsImxhc3RfY3ljbGVfdGltZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlJDAiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnQkMCIsImluX2N5Y2xlJDAiLCJjeWNsZV9zdGFydCQwIiwiY3ljbGVfY291bnQkMCIsInVuY2F1Z2h0X2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMCIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHQkMCIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMkMCIsImxvd19wcmlvcml0eV9qb2JzJDAiLCJub3JtYWxfcHJpb3JpdHlfam9icyQwIiwiam9iX3Bvb2wkMCIsImNoZWNrX2FjY2VzcyQwIiwiY2hlY2tfYWNjZXNzX2Z1biIsImpvYl9wb29sX2Z1biIsIm5vcm1hbF9wcmlvcml0eV9qb2JzX2Z1biIsImxvd19wcmlvcml0eV9qb2JzX2Z1biIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfZnVuIiwibWFpbl9leGVjdXRpb25fY29udGV4dF9mdW4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0X2Z1biIsInVuY2F1Z2h0X2V4bl9mdW4iLCJjeWNsZV9jb3VudF9mdW4iLCJjeWNsZV9zdGFydF9mdW4iLCJpbl9jeWNsZV9mdW4iLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2Z1IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9mdW4iLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2Z1biIsImxhc3RfY3ljbGVfdGltZV9mdW4iLCJsYXN0X2N5Y2xlX251bV9qb2JzX2Z1biIsInRvdGFsX2N5Y2xlX3RpbWVfZnVuIiwidGltZV9zb3VyY2VfZnVuIiwiZXh0ZXJuYWxfam9ic19mdW4iLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18iLCJqb2JfcXVldWVkX2hvb2tfZnVuIiwiZXZlbnRfYWRkZWRfaG9va19mdW4iLCJ5aWVsZF9mdW4iLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl9mdW4iLCJjaGVja19pbnZhcmlhbnRzX2Z1biIsInJlY29yZF9iYWNrdHJhY2VzX2Z1biIsImNoZWNrX2FjY2Vzc19nZW4iLCJqb2JfcG9vbF9nZW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19nZW4iLCJsb3dfcHJpb3JpdHlfam9ic19nZW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2dlbiIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9nZW4iLCJ1bmNhdWdodF9leG5fZ2VuIiwiY3ljbGVfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImN5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEwIiwiaW5fY3ljbGVfZ2VuIiwiY29tcGlsZV9hY2MkMTEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGVfZ2UiLCJjb21waWxlX2FjYyQxMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2dlbiIsImNvbXBpbGVfYWNjJDE1IiwibGFzdF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE2IiwibGFzdF9jeWNsZV9udW1fam9ic19nZW4iLCJjb21waWxlX2FjYyQxNyIsInRvdGFsX2N5Y2xlX3RpbWVfZ2VuIiwiY29tcGlsZV9hY2MkMTgiLCJ0aW1lX3NvdXJjZV9nZW4iLCJjb21waWxlX2FjYyQxOSIsImV4dGVybmFsX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMjAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18kMCIsImNvbXBpbGVfYWNjJDIxIiwiam9iX3F1ZXVlZF9ob29rX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwiZXZlbnRfYWRkZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMyIsInlpZWxkX2dlbiIsImNvbXBpbGVfYWNjJDI0IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZ2VuIiwiY29tcGlsZV9hY2MkMjUiLCJjaGVja19pbnZhcmlhbnRzX2dlbiIsImNvbXBpbGVfYWNjJDI2IiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJjb21waWxlX2FjYyQyNyIsInJlY29yZF9iYWNrdHJhY2VzX2dlbiIsImNyZWF0ZSQyIiwiY2hlY2tfYWNjZXNzXzAwNyIsImpvYl9wb29sXzAwOSIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfMDE1IiwibG93X3ByaW9yaXR5X2pvYnNfMDEzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfMDExIiwibWFpbl9leGVjdXRpb25fY29udGV4dF8wMTciLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XzAxOSIsInVuY2F1Z2h0X2V4bl8wMjEiLCJjeWNsZV9jb3VudF8wMjciLCJjeWNsZV9zdGFydF8wMjkiLCJpbl9jeWNsZV8wMzEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfMDMzIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXzAzIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF8wMzciLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlXzAzOSIsImxhc3RfY3ljbGVfdGltZV8wNDEiLCJsYXN0X2N5Y2xlX251bV9qb2JzXzA0MyIsInRvdGFsX2N5Y2xlX3RpbWVfMDQ1IiwidGltZV9zb3VyY2VfMDQ3IiwiZXh0ZXJuYWxfam9ic18wNDkiLCJqb2JfcXVldWVkX2hvb2tfMDUzIiwiZXZlbnRfYWRkZWRfaG9va18wNTUiLCJ5aWVsZF8wNTciLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl8wNTkiLCJjaGVja19pbnZhcmlhbnRzXzA2MSIsInJlY29yZF9iYWNrdHJhY2VzXzA2NSIsImFyZ18wNjYiLCJibmRzXzAwNiIsImFyZ18wNjQiLCJibmRzXzAwNiQwIiwiYXJnXzA2MiIsImJuZHNfMDA2JDEiLCJhcmdfMDYwIiwiYm5kc18wMDYkMiIsImFyZ18wNTgiLCJibmRzXzAwNiQzIiwiYXJnXzA1NiIsImJuZHNfMDA2JDQiLCJhcmdfMDU0IiwiYm5kc18wMDYkNSIsImFyZ18wNTIiLCJibmRzXzAwNiQ2IiwiYXJnXzA1MCIsImJuZHNfMDA2JDciLCJhcmdfMDQ4IiwiYm5kc18wMDYkOCIsImFyZ18wNDYiLCJibmRzXzAwNiQ5IiwiYXJnXzA0NCIsImJuZHNfMDA2JDEwIiwiYXJnXzA0MiIsImJuZHNfMDA2JDExIiwiYXJnXzA0MCIsImJuZHNfMDA2JDEyIiwiYXJnXzAzOCIsImJuZHNfMDA2JDEzIiwiYXJnXzAzNiIsImJuZHNfMDA2JDE0IiwiYXJnXzAzNCIsImJuZHNfMDA2JDE1IiwiYXJnXzAzMiIsImJuZHNfMDA2JDE2IiwiYXJnXzAzMCIsImJuZHNfMDA2JDE3IiwiYXJnXzAyOCIsImJuZHNfMDA2JDE4IiwiYXJnXzAyMiIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYm5kc18wMDYkMTkiLCJhcmdfMDIwIiwiYm5kc18wMDYkMjAiLCJhcmdfMDE4IiwiYm5kc18wMDYkMjEiLCJhcmdfMDE2IiwiYm5kc18wMDYkMjIiLCJhcmdfMDE0IiwiYm5kc18wMDYkMjMiLCJhcmdfMDEyIiwiYm5kc18wMDYkMjQiLCJhcmdfMDEwIiwiYm5kc18wMDYkMjUiLCJhcmdfMDA4IiwiYm5kc18wMDYkMjYiLCJ1bmNhdWdodF9leG4kMCIsImFyZzFfMDY4IiwiYXJnMF8wNjciLCJyZXMwXzA2OSIsInJlczFfMDcwIiwibnVtX3BlbmRpbmdfam9icyIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMSIsInVub3JkZXJlZF9pc19zdWJsaXN0IiwiZXF1YWwiLCJzbWFsbCIsImxhcmdlIiwibGFyZ2UkMCIsIngiLCJsJDAiLCJ5IiwibCIsImNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IiwidGFibGUiLCJhcnJheSIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJiYWNrdHJhY2Vfb2ZfZmlyc3Rfam9iIiwidF9yZWYiLCJjaGVja19hY2Nlc3MkMSIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMSIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQxIiwidG1wX2NvbnRleHQiLCJvbGRfY29udGV4dCIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQiLCJjcmVhdGVfam9iIiwiZ290X3VuY2F1Z2h0X2V4biIsImFyZzFfMDcyIiwiYXJnMF8wNzEiLCJyZXMwXzA3MyIsInJlczFfMDc0Iiwic3RhcnRfY3ljbGUiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IiwiZSIsImUkMCIsInN0YWJpbGl6ZSIsImNyZWF0ZV90aW1lX3NvdXJjZSIsInRpbWluZ193aGVlbF9jb25maWciLCJ3YWxsX2Nsb2NrIiwic2V0X3ByZXYiLCJwYXJhbSIsInNldF9uZXh0IiwicnVuIiwiY3JlYXRlMiIsInJ1bjEiLCJleGVjdXRpb25fY29udGV4dDEiLCJydW4yIiwiZXhlY3V0aW9uX2NvbnRleHQyIiwic2NoZWR1bGVfam9icyIsImFkZCIsIm9mX2xpc3QiLCJmaXJzdCIsImwkMSIsImwkMiIsInJ1biQwIiwicHJldiQwIiwiYWNjJDAiLCJjZWxsX29mX2hhbmRsZXIiLCJpbmRpciIsInNxdWFzaCIsInQkMyIsInQkNCIsImluZGlyJDEiLCJ0JDUiLCJpbmRpciQwIiwidCQyIiwiYV9pbnZhcmlhbnQiLCJoYW5kbGVyIiwicGVlayIsInZhbHVlIiwiaWZfZW1wdHlfdGhlbl9mYWlsd2l0aCIsImlzX2VtcHR5IiwiaXNfZnVsbCIsImZpbGwiLCJyZW1vdmVfaGFuZGxlciIsIngkMCIsImFkZF9oYW5kbGVyIiwiaGFuZGxlciQxIiwiaGFuZGxlciQyIiwicnVuJDEiLCJoYW5kbGVyJDAiLCJoYXNfaGFuZGxlcnMiLCJ1cG9uIiwidXBvbiQwIiwiY29ubmVjdCIsImJpbmRfcmVzdWx0IiwiYmluZF9yaHMiLCJiaW5kX3Jlc3VsdCQwIiwiaXZhciIsImJpbmRfcmhzX2NvbnRlbnRzIiwiaXZhciQwIiwibGFzdDEiLCJsYXN0MiIsImhhbmRsZXIxIiwiZXhlY3V0aW9uX2NvbnRleHQyJDAiLCJydW4yJDAiLCJoYW5kbGVyMSQwIiwidiQwIiwib2ZfaXZhciIsImludmFyaWFudF9hIiwicmV0dXJuJDAiLCJpc19kZXRlcm1pbmVkIiwiYmluZCIsImgiLCJyZWFkIiwiZmlsbF9pZl9lbXB0eSIsInRvX2JpbmFibGUiLCJvZl9iaW5hYmxlIiwic2V4cF9vZl9ob3ciLCJ2XzAwMSIsIm5ldmVyIiwicmV0dXJuJDEiLCJyZXR1cm4kMiIsInJldHVybiQzIiwidW5pdCIsImJvdGgkMCIsImExIiwiYTIiLCJkb25fdF93YWl0X2ZvciIsImYyIiwiZjEiLCJwcm9jZXNzIiwicmVzdCIsImNob2ljZSIsImVuYWJsZWQiLCJjaG9pY2VzIiwidW5yZWdpc3RlcnMiLCJyZWFkeSIsImNob29zZV9yZXN1bHQiLCJjaG9pY2VzJDAiLCJjaG9pY2VzJDEiLCJnZW5lcmljX2Nob29zZSIsInVucmVnaXN0ZXJzJDAiLCJjaG9vc2UyIiwiZmEiLCJiIiwiZmIiLCJhX2hhbmRsZXIiLCJiX2hhbmRsZXIiLCJhdiIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsInhzIiwic2VxbWFwIiwiYnMiLCJkcyIsImFsbF91bml0IiwiZCIsIm9rIiwib2ZfYV8wMDUiLCJ4XzAwNiIsImFyZzBfMDAyIiwicmVzMF8wMDMiLCJ4XzAwNyIsImNvbGxlY3QiLCJpc19jbG9zZWQiLCJmaWxsX2V4biIsImNsb3NlX2V4biIsImNsb3NlX2lmX29wZW4iLCJleHRlbmQiLCJkZWZlcnJlZDAiLCJkZWZlcnJlZDEiLCJpbXBvcnQwIiwiZXJyb3IiLCJkZXRhY2giLCJkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIiwiaGFuZGxlcl9zdGF0ZV9yZWYiLCJydW5fZiIsImJhZ19lbHQiLCJpbm5lcl9leG4kMCIsImlubmVyX2V4biIsImRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSIsInRhaWwiLCJnZXRfbmV4dF9lcnJvciIsImRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IiLCJleHRyYWN0X2V4biIsImNvbHVtbiIsIm1vbml0b3IkMSIsIm5hbWUkMSIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlJDEiLCJyZXN0JDAiLCJyZXN0JDEiLCJ0MyIsInJlc3QkMiIsInJlc3QkMyIsInRyYWNlcyIsInJlc3QkNCIsInQxJDAiLCJyZXN0JDUiLCJ0MiQwIiwicmVzdCQ2IiwidDIkMSIsImJhY2t0cmFjZSQyIiwibGlzdF9pZl9ub3RfZW1wdHkiLCJtYXRjaCQyIiwibWF0Y2gkMyIsImV4dHJhY3RfZXhuJDAiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJ3aXRoaW5fY29udGV4dCIsImNvbnRleHQiLCJ3aXRoaW5fZ2VuIiwid2l0aGluIiwid2l0aGluX3YiLCJ3aXRoaW4kMCIsInNjaGVkdWxlX3dpdGhfZGF0YSIsIndvcmsiLCJ1cG9uX3dvcmtfZmlsbF9pIiwic2NoZWR1bGUkMCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IiwicHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQkMCIsImNhbGxfYW5kX2ZpbGwiLCJzdHJlYW1faXRlciIsInN0cmVhbSIsImV4bnMiLCJmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm8iLCJyZXN1bHRfZmlsbGVyIiwiaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IiwidHJ5X3dpdGhfbG9nX2V4biIsInRyeV93aXRoIiwiZG9fZXh0cmFjdF9leG4iLCJoYW5kbGVfZXhuIiwicmVzIiwidHJ5X3dpdGhfb3JfZXJyb3IiLCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsImZyIiwiciQwIiwiZmluYWxseV9leG4iLCJoYW5kbGVfZXJyb3JzIiwiY2F0Y2hfc3RyZWFtIiwiY2F0Y2gkMCIsImNhdGNoX2Vycm9yIiwiZGVwdGgiLCJuJDAiLCJmaXJzdF9leG4iLCJsb29wJDAiLCJsb29wX25leHQiLCJsb29wX25leHQkMCIsImNsb3NlZCIsInVuZm9sZCIsImNvcHlfdG9fdGFpbCIsImFwcGVuZCIsImZpbHRlcl9kZXByZWNhdGVkIiwiZmlsdGVyX21hcF9kZXByZWNhdGVkIiwiZmlyc3RfbiIsImF2YWlsYWJsZV9ub3ciLCJzcGxpdCIsInN0b3AiLCJyZWFzb25fZm9yX3N0b3BwaW5nIiwicHJlZml4IiwiZmluaXNoIiwibyIsImZpbmQiLCJmb3VuZCIsInVuZ3JvdXAiLCJpbnRlcmxlYXZlIiwibnVtX29wZW4iLCJjbG9zZSIsIm91dGVyX2Nsb3NlZCIsInRha2VfdW50aWwiLCJ6IiwiaXRlcl9kdXJhYmx5IiwiaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQiLCJpdGVyX2R1cmFibHkkMCIsIm9mX2Z1biIsInNldF9pdmFyIiwiaGFzX2FueV93YWl0ZXJzIiwic2V0X2hhc19hbnlfd2FpdGVycyIsImhhc19hbnlfd2FpdGVycyQwIiwicmVwciIsIm9mX2FfMDAxIiwiaGFzX2FueV93YWl0ZXJzXzAwMyIsIml2YXJfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJicm9hZGNhc3QiLCJ3YWl0IiwiaGFzX2FueV93YWl0ZXJzJDEiLCJ4XzAwMyIsImJpbmRfdW5pdCIsIndhaXRfZm9yIiwicnVuX3F1ZXVlZF9hbGFybXMiLCJ3YWxrX2FsYXJtcyIsIm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCIsImFkdmFuY2VfdG8iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0JDAiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsInNwYW5fdG9fdGltZSIsInJ1bl9hdF9pbnRlcm5hbCIsInRpbWUiLCJyZW1vdmVfYWxhcm0iLCJvZl9hXzAwNyIsIm9mX2hfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJzZXRfc2NoZWR1bGVkX2F0IiwibnVtX2ZpcmVzX3RvX3NraXAiLCJzZXRfbnVtX2ZpcmVzX3RvX3NraXAiLCJmaXJlZCIsInNjaGVkdWxlZF9hdCQwIiwibnVtX2ZpcmVzX3RvX3NraXAkMCIsImZpcmVkJDAiLCJvZl9hXzAxNSIsIm9mX2hfMDE2IiwiYWxhcm1fMDE4IiwiZmlyZWRfMDIyIiwibnVtX2ZpcmVzX3RvX3NraXBfMDI0Iiwic2NoZWR1bGVkX2F0XzAyNiIsInRpbWVfc291cmNlXzAyOCIsImFyZ18wMjkiLCJibmRzXzAxNyIsImFyZ18wMjciLCJibmRzXzAxNyQwIiwiYXJnXzAyNSIsImJuZHNfMDE3JDEiLCJhcmdfMDIzIiwiYm5kc18wMTckMiIsImFyZ18wMjEiLCJibmRzXzAxNyQzIiwiYXJnXzAxOSIsImJuZHNfMDE3JDQiLCJzZXhwX29mX3RfdW5pdCIsInhfMDMwIiwiZmlyZWQkMSIsImludmFyaWFudF9oIiwieF8wMzEiLCJzY2hlZHVsZWRfYXRfZnVuIiwiYV8wMzIiLCJiXzAzMyIsIm51bV9maXJlc190b19za2lwX2Z1biIsImZpcmVkX2Z1biIsIm9mX2FfMDM0Iiwib2ZfaF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJvZl9hXzA0NCIsIm9mX2hfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJ4XzA1MiIsImEkMCIsIm9mX2FfMDUzIiwib2ZfaF8wNTQiLCJhcmcwXzA1NSIsInJlczBfMDU2IiwiYXJnMF8wNTciLCJyZXMwXzA1OCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0IiwiaXNfaW5fdGltaW5nX3doZWVsIiwiYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlIiwicnVuX2F0JDAiLCJydW5fYWZ0ZXIkMCIsImF0X3RpbWVzIiwibmV4dF90aW1lIiwiYXRfdmFyeWluZ19pbnRlcnZhbHMiLCJjb21wdXRlX3NwYW4iLCJzdGFydCQwIiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsImFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IiwiaXNfcXVlc2NlbnQiLCJ3aGVlbCIsIm5leHRfYWxhcm0iLCJoYXNfdXBjb21pbmdfZXZlbnQiLCJuZXh0X3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudF9leG4iLCJldmVudF9wcmVjaXNpb24iLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayIsImhhbmRsZSIsImFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayIsInJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayIsImFyciIsImciLCJpZHgiLCJhcnIkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJlbnF1ZXVlJDAiLCJxdWV1ZSIsInJ1bm5pbmciLCJleGVjX2N0eCIsInNlbWFwaG9yZSIsImFwcGx5IiwidF9mIiwiZGYiLCJkdiIsIm1heF9jb25jdXJyZW50X2pvYnMiLCJ3YWl0ZXIiLCJhYm9ydGVkIiwicGFyZW50X21vbml0b3IiLCJlcnIiLCJvZl90aHVuayIsInRodW5rIiwic3ltYm9sJDEiLCJkMSIsImQyIiwib2ZfYV8wMDIiLCJyZXMwXzAwNCIsImxlbmd0aF8wMDYiLCJibmRzXzAwNSIsImxpc3QiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwiY2xlYW5lZCQwIiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCQwIiwiY2FwYWNpdHlfYXZhaWxhYmxlJDAiLCJudW1fam9ic19ydW5uaW5nJDAiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnQkMCIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSQwIiwibWF4X2NvbmN1cnJlbnRfam9icyQwIiwib2ZfYV8wMTEiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnRfMDE5Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXzAxNyIsIm1heF9jb25jdXJyZW50X2pvYnNfMDE1IiwiY29udGludWVfb25fZXJyb3JfMDEzIiwibnVtX2pvYnNfcnVubmluZ18wMjEiLCJjYXBhY2l0eV9hdmFpbGFibGVfMDIzIiwiaXNfZGVhZF8wMjUiLCJjbGVhbnNfMDI3IiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF8wMjkiLCJjbGVhbmVkXzAzMSIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJhcmdfMDI2IiwiYm5kc18wMTIkMiIsImFyZ18wMjQiLCJibmRzXzAxMiQzIiwiYm5kc18wMTIkNCIsIm91dGNvbWVfMDA5Iiwic3RhcnRfMDA2Iiwidl8wMDgiLCJibmRzXzAwNSQwIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2Zfa2luZF8wMzUiLCJ4XzAzNiIsIm51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQiLCJjbGVhbl9yZXNvdXJjZSIsImtpbGwiLCJhdF9raWxsIiwiY2xlYW5lZCQxIiwic3RhcnRfam9iIiwiam9iX3Jlc291cmNlIiwiam9iX3Jlc291cmNlcyIsImNyZWF0ZV93aXRoIiwib3V0Y29tZSIsImludGVybmFsX2pvYiIsImhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCIsImVucXVldWVfZXhjbHVzaXZlIiwiZG9uZSIsImZfcGxhY2Vob2xkZXIiLCJzbG90IiwibW9uYWRfc2VxdWVuY2VfaG93IiwiaG93IiwibW9uYWRfc2VxdWVuY2VfaG93MiIsInByaW9yX2pvYnNfZG9uZSIsImFsbF9kdW1teV9qb2JzX3J1bm5pbmciLCJkdW1teV9qb2JzX3J1bm5pbmciLCJjYXBhY2l0eV9hdmFpbGFibGUkMSIsInRocmVhZF9zYWZlX2VucXVldWVfam9iIiwiY3ljbGVfc3RhcnRfbnMiLCJjeWNsZV90aW1lc19ucyIsImN5Y2xlX3RpbWVzIiwiZXZlbnRfcHJlY2lzaW9uX25zIiwiYm9vbCIsImFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rJDAiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2skMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyQwIiwicmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSQwIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsInJpZ2h0XzAwNCIsImxlZnRfMDAzIiwidl8wMDYiLCJmb2xkaSIsInNlcW1hcGkiLCJpdGVyaSIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJmaWx0ZXJfbWFwaSIsImNvbmNhdF9tYXBpIiwiZmluZF9tYXBpIiwiYXV4IiwiZmluZGkiLCJlbHQiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwiam9iX2NvdW50IiwiZ2VuX2NvbXB1dGF0aW9uIiwieXMiLCJ0bCIsImhkIiwiY2hhbmdlIiwib3B0IiwidXBkYXRlIiwiaXRlcl9rZXlzIiwiYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIiLCJhbGlzdCIsImZvbGRfcmlnaHQiLCJhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciIsImNvbXB1dGF0aW9uIiwiam9iX21hcCIsInNlcXVlbmNlIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInJlcmFpc2UiLCJnZW5lcmFsIiwiaGFzaGFibGUiLCJnZW5lcmFsJDAiLCJyZWN1cnNpdmUiLCJmX29uZXN0ZXAiLCJtZW1vaXplZCIsImNvbWJpbmUiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImUxIiwiZTIiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwib2tfZXhuIiwib2ZfZXhuIiwib2ZfZXhuX3Jlc3VsdCIsIm1zZyIsInNleHBfb2YiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2Vycm9ycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIiwiZmluZF9tYXBfb2siLCJjdXJyZW50X2Vycm9yIiwiZXJyb3JzJDAiLCJva191bml0IiwidHJ5X3dpdGgkMCIsInRyeV93aXRoX2pvaW4iLCJzdGF0ZSQwIiwiZm9sZF9tYXBpIiwibWFwaV9mIiwiZm9sZF9mIiwidGhyb3R0bGUiLCJjIiwiYyQxIiwiYyQwIiwiaSQwIiwiYWNjdW0iLCJtYXliZV92Iiwic2hvd19kZWJ1Z19tZXNzYWdlcyIsImNoZWNrX2ludmFyaWFudCIsInhfMDA0IiwidmFsdWVzX3JlYWQiLCJzZXRfdmFsdWVzX3JlYWQiLCJ2YWx1ZXNfcmVhZCQwIiwicGlwZV9pZF8wMDkiLCJ2YWx1ZXNfcmVhZF8wMTEiLCJibmRzXzAwOCIsInZfMDEzIiwiYm5kc18wMDgkMCIsImJuZHNfMDA4JDEiLCJ2YWx1ZXNfc2VudF9kb3duc3RyZWFtIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1Iiwid2hlbl9zZW50X2Rvd25zdHJlYW0iLCJjb25zdW1lciIsIndhbnRzIiwiY29uc3VtZXIkMCIsIndhbnRzJDAiLCJvZl9hXzAyOSIsImNvbnN1bWVyXzAzMyIsIndhbnRzXzAzMSIsImJuZHNfMDMwIiwiYXJnMF8wMTgiLCJyZXMwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJ2XzAyMCIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwidl8wMjMiLCJibmRzXzAzMCQwIiwiZmlsbF93aXRoX2VvZiIsImkkMSIsImZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQiLCJyZWFkeV8wMzkiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXzAzNyIsImJuZHNfMDM2IiwiYm5kc18wMzYkMCIsImNvbnN1bWVycyIsInNldF9jb25zdW1lcnMiLCJibG9ja2VkX3JlYWRzIiwiYmxvY2tlZF9mbHVzaGVzIiwicHVzaGJhY2siLCJzZXRfcHVzaGJhY2siLCJyZXNlcnZlZF9zcGFjZSIsInNldF9yZXNlcnZlZF9zcGFjZSIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJyZXNlcnZlZF9zcGFjZSQwIiwic2l6ZV9idWRnZXQkMCIsInNleHBfb2ZfcGlwZSIsIm9mX2FfMDQxIiwib2ZfcGhhbnRvbV8wNDIiLCJpZF8wNDQiLCJpbmZvXzA0NiIsImJ1ZmZlcl8wNTAiLCJzaXplX2J1ZGdldF8wNTIiLCJyZXNlcnZlZF9zcGFjZV8wNTQiLCJwdXNoYmFja18wNTYiLCJudW1fdmFsdWVzX3JlYWRfMDU4IiwicmVhZF9jbG9zZWRfMDY2IiwiY2xvc2VkXzA2NCIsImJsb2NrZWRfcmVhZHNfMDYyIiwiYmxvY2tlZF9mbHVzaGVzXzA2MCIsImNvbnN1bWVyc18wNjgiLCJ1cHN0cmVhbV9mbHVzaGVkc18wNzAiLCJhcmdfMDcxIiwiYm5kc18wNDMiLCJhcmdfMDY5IiwiYm5kc18wNDMkMCIsImFyZ18wNjciLCJibmRzXzA0MyQxIiwiYXJnXzA2NSIsImJuZHNfMDQzJDIiLCJhcmdfMDYzIiwiYm5kc18wNDMkMyIsImFyZ18wNjEiLCJibmRzXzA0MyQ0IiwiYXJnXzA1OSIsImJuZHNfMDQzJDUiLCJhcmdfMDU3IiwiYm5kc18wNDMkNiIsImFyZ18wNTUiLCJibmRzXzA0MyQ3IiwiYXJnXzA1MyIsImJuZHNfMDQzJDgiLCJhcmdfMDUxIiwiYm5kc18wNDMkOSIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MyQxMCIsImFyZ18wNDUiLCJibmRzXzA0MyQxMSIsImVmZmVjdGl2ZV9zaXplX2J1ZGdldCIsImhhc2giLCJpc19yZWFkX2Nsb3NlZCIsInB1c2hiYWNrJDEiLCJ1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIiwiZGVsdGEiLCJ4XzA3NSIsInhfMDM1IiwiaSQyIiwic2V4cF9vZl9waGFudG9tIiwib2ZfYV8wNzYiLCJ4XzA3NyIsInNleHBfb2ZfcGhhbnRvbSQwIiwib2ZfYV8wNzgiLCJ4XzA3OSIsImlkX3JlZiIsImluaXRpYWxfYnVmZmVyIiwidmFsaWRhdGVfc2l6ZV9idWRnZXQiLCJ1cGRhdGVfcHVzaGJhY2siLCJ4XzA4MCIsImNsb3NlX3JlYWQiLCJ4XzA4MSIsImZsdXNoIiwiY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjIiwidyIsImNyZWF0ZV9yZWFkZXIiLCJjbG9zZV9vbl9leGNlcHRpb24iLCJjcmVhdGVfd3JpdGVyIiwidmFsdWVzX3dlcmVfcmVhZCIsImZsdXNoJDAiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInJlc2VydmVfc3BhY2UiLCJkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSIsInN0YXJ0X3dyaXRlIiwieF8wODMiLCJzaXplIiwieF8wODIiLCJmaW5pc2hfd3JpdGUiLCJibG9ja2VkX3JlYWQiLCJpdmFyJDEiLCJ0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIiwidHJhbnNmZXJfaW4iLCJ3cml0ZSIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2siLCJ3cml0ZSQwIiwid3JpdGVfd2hlbl9yZWFkeSIsIndyaXRlX2lmX29wZW4iLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4iLCJlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyIsInhfMDg1Iiwic3RhcnRfcmVhZCIsImxhYmVsIiwieF8wODYiLCJnZW5fcmVhZF9ub3ciLCJnZXRfbWF4X3F1ZXVlX2xlbmd0aCIsIm1heF9xdWV1ZV9sZW5ndGgkMCIsInJlYWRfbm93IiwicmVhZF9ub3ckMCIsInJlYWQkMCIsInJlYWRfZXhuIiwidmFsdWVzX2F2YWlsYWJsZSIsInJlYWRfY2hvaWNlIiwicmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4IiwicmVhZF9leGFjdGx5IiwibnVtX3ZhbHVlcyIsImFscmVhZHlfcmVhZCIsImRvd25zdHJlYW1fZmx1c2hlZCIsInVwc3RyZWFtX2ZsdXNoZWQiLCJhZGRfY29uc3VtZXIiLCJwaXBlX2lkIiwiY29uc3VtZXIkMSIsInVwc3RyZWFtIiwiZG93bnN0cmVhbSIsInVwc3RyZWFtX2ZsdXNoZWQkMCIsImFyZzBfMDg3IiwicmVzMF8wODgiLCJmb2xkX2dlbiIsImZsdXNoZWQiLCJmb2xkX3dpdGhvdXRfcHVzaGJhY2siLCJ3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciIsIml0ZXJfd2l0aG91dF9wdXNoYmFjayIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDAiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDEiLCJyZW1haW5pbmciLCJyZW1haW5pbmckMCIsImRyYWluIiwiZHJhaW5fYW5kX2NvdW50Iiwic3VtIiwicmVhZF9hbGwiLCJpbnB1dCIsInRvX3N0cmVhbV9kZXByZWNhdGVkIiwib2Zfc3RyZWFtX2RlcHJlY2F0ZWQiLCJ0cmFuc2ZlciIsIm5leHRfZGVmZXJyZWQiLCJjaGVja19jbG9zZWRfbG9vcF9uZXh0IiwidHJhbnNmZXJfZ2VuIiwib3V0cHV0IiwibGluayIsInVubGluayIsImlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvcyIsIm91dHB1dF9jbG9zZWQiLCJ0cmFuc2ZlciQwIiwidHJhbnNmZXJfaWQiLCJtYXBfZ2VuIiwiY29uY2F0X21hcF9saXN0IiwiZmlsdGVyX21hcCQwIiwiZm9sZGluZ19maWx0ZXJfbWFwIiwiZm9sZGluZ19maWx0ZXJfbWFwJDAiLCJmb2xkaW5nX21hcCIsImFjY3VtJDAiLCJvZl9xdWV1ZV9pbnRlcm5hbCIsIm9mX3F1ZXVlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJ3cml0ZXIiLCJyZWFkZXIiLCJvZl9zZXF1ZW5jZSIsInNlcXVlbmNlJDEiLCJzZXF1ZW5jZSQwIiwidG9fc2VxdWVuY2UiLCJpbnRlcmxlYXZlX3BpcGUiLCJpbnB1dHMiLCJvdXRwdXRfd3JpdGVyIiwibnVtX3BpcGVzX3JlbWFpbmluZyIsImRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyIsImhlYXAiLCJoYW5kbGVfcmVhZCIsImVvZl9vcl9vayIsInBvcF9oZWFwX2FuZF9sb29wIiwiaW5pdGlhbF9wdXNoIiwiY29uY2F0X3BpcGUiLCJmb3JrIiwicHVzaGJhY2tfdXNlcyIsIndyaXRlcjAiLCJyZWFkZXIwIiwid3JpdGVyMSIsInJlYWRlcjEiLCJzb21lX3JlYWRlcl93YXNfY2xvc2VkIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCQwIiwic3RpbGxfb3BlbiIsImZpbHRlcl9vcGVuIiwic3RpbGxfb3BlbiQwIiwic2V0X2luZm8iLCJ2YWx1ZV9hdmFpbGFibGUiLCJzZXRfdmFsdWVfYXZhaWxhYmxlIiwidGFrZW4iLCJjdXJyZW50X3ZhbHVlIiwidmFsdWVfYXZhaWxhYmxlJDAiLCJ0YWtlbiQwIiwiY3VycmVudF92YWx1ZSQwIiwidmFsdWVfYXZhaWxhYmxlJDEiLCJ4XzAxMCIsInRha2VuXzAwNiIsImN1cnJlbnRfdmFsdWVfMDA0IiwidmFsdWVfYXZhaWxhYmxlXzAwOCIsImJuZHNfMDAzIiwiYm5kc18wMDMkMCIsImJuZHNfMDAzJDEiLCJ2YWx1ZV9hdmFpbGFibGVfZnVuIiwiYV8wMTEiLCJiXzAxMiIsInRha2VuX2Z1biIsImN1cnJlbnRfdmFsdWVfZnVuIiwicGVla19leG4iLCJ4XzAxMyIsIm9mX2FfMDE0IiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3Iiwid3JpdGVfb25seSIsInRha2Vfbm9uZW1wdHkiLCJ0YWtlX25vd19leG4iLCJ0YWtlX25vdyIsInRha2UiLCJ1cGRhdGVfZXhuIiwidGFrZW4kMSIsInB1dCIsInBpcGVfd2hlbl9yZWFkeSIsInJlc3RfZXhuIiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sIiwic3ltYm9sJDAiLCJzZXhwX29mX3QiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm1hcCIsInNleHBfb2ZfdCQwIiwiY3JlYXRlIiwiZG9uX3Rfd2FpdF9mb3IiLCJpbnZhcmlhbnQiLCJpc19kZXRlcm1pbmVkIiwibmV2ZXIiLCJwZWVrIiwidW5pdCIsInZhbHVlX2V4biIsInVwb24iLCJib3RoIiwidDEiLCJ0MiIsInJlc3VsdCIsImExIiwiYTIiLCJvayIsImlnbm9yZV9tIiwiYW55IiwidHMiLCJ4IiwiYW55X3VuaXQiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwibG9vcCIsImZvbGRpIiwiaW5pdCIsImkiLCJiIiwieHMiLCJmb2xkIiwiYSIsInNlcW1hcGkiLCJicyIsImFsbCQwIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJpdGVyaSIsImhvdyIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJhYyIsImZpbHRlcl9tYXBpIiwiY29uY2F0X21hcGkiLCJmaW5kX21hcGkiLCJ0bCIsImhkIiwic29tZSIsImZpbmRpIiwiZWx0IiwiZmluZCIsImV4aXN0c2kiLCJmb3JfYWxsaSIsIml0ZXIiLCJtYXAkMSIsImZpbHRlciIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJleGlzdHMiLCJmb3JfYWxsIiwibiIsImFsbF91bml0JDAiLCJjb21iaW5lIiwiZXJyIiwiZXJyb3IiLCJyIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwibWFwX2Vycm9yIiwiam9pbiIsInN5bWJvbF9iaW5kIiwiYXBwbHkiLCJlMSIsImUyIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsIm9rX2V4biIsIm9mX2V4biIsImJhY2t0cmFjZSIsImV4biIsIm9mX2V4bl9yZXN1bHQiLCJtc2ciLCJ2Iiwic2V4cF9vZiIsImVycm9yX3MiLCJzZXhwIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsIm1lc3NhZ2UiLCJzZXhwX29mX2EiLCJ1bmltcGxlbWVudGVkIiwiY29tYmluZV9lcnJvcnMiLCJsIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImVycm9ycyIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCIsImV4dHJhY3RfZXhuIiwicnVuJDAiLCJyZXN0IiwiaGVyZSIsIm5hbWUiLCJydW4iLCJ0cnlfd2l0aF9qb2luIiwibGlzdCIsImFjYyIsInN0YXRlJDAiLCJ1cG9uJDEiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwicG9zJDAiLCJwb3MiLCJhbGwiLCJzZXhwX29mX3QiLCJzZXhwX29mX3QkMCIsImNhbGxiYWNrIiwiciIsImNhbGxiYWNrJDAiLCJ2Iiwic2V4cF9vZl90JDEiLCJleHRyYWN0X2V4biIsInN1YnNjcmliZXJzX2luZGV4Iiwic3Vic2NyaWJlZF9mcm9tIiwib25fY2FsbGJhY2tfcmFpc2UiLCJtYXRjaCQxIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJyZXMiLCJoIiwiY2FsbGJhY2tzIiwic2V0X2NhbGxiYWNrcyIsInN1YnNjcmliZXJzIiwic2V0X3N1YnNjcmliZXJzIiwibnVtX3N1YnNjcmliZXJzIiwic2V0X251bV9zdWJzY3JpYmVycyIsImNhbGxiYWNrX2FyaXR5IiwiY2FsbGJhY2tzJDAiLCJzdWJzY3JpYmVycyQwIiwibnVtX3N1YnNjcmliZXJzJDAiLCJzZXhwX29mX2J1cyIsIm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93ciIsImNyZWF0ZWRfZnJvbSIsIm5hbWUiLCJzdGF0ZSIsIndyaXRlX2V2ZXJfY2FsbGVkIiwiaSIsIm1hdGNoIiwicmVhZF9vbmx5IiwidCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwieF8wMTEiLCJjaGVjayIsImYiLCJjYWxsYmFja3NfZnVuIiwic3Vic2NyaWJlcnNfZnVuIiwic3Vic2NyaWJlciIsInN1YnNjcmliZXIkMCIsInhfMDA1IiwiY2FsbGJhY2tfZnVuIiwibnVtX3N1YnNjcmliZXJzX2Z1biIsImlzX2Nsb3NlZCIsInNleHBfb2ZfdCQyIiwib2ZfY2FsbGJhY2tfMDEyIiwieF8wMTMiLCJpbnZhcmlhbnQkMCIsInNleHBfb2ZfdCQzIiwib2ZfY2FsbGJhY2tfMDE0IiwieF8wMTUiLCJpbnZhcmlhbnQkMSIsInN0YXJ0X3dyaXRlX2ZhaWxpbmciLCJ4XzAxNiIsInhfMDE3IiwiY2FwYWNpdHkiLCJtYXliZV9zaHJpbmtfY2FwYWNpdHkiLCJkZXNpcmVkX2NhcGFjaXR5IiwiY29weV9hbmRfc2hyaW5rIiwiYXJyYXkiLCJuZXdfYXJyYXkiLCJhZGRfc3Vic2NyaWJlciIsImF0X3N1YnNjcmliZXJzX2luZGV4IiwicmVtb3ZlX3N1YnNjcmliZXIiLCJ1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWIiLCJzdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyIiwidW5zdWJzY3JpYmUiLCJ0byIsInVuc3Vic2NyaWJlX2FsbCIsIm9uX2Nsb3NlIiwiZmluaXNoX3dyaXRlIiwiY2xvc2UiLCJjYWxsX29uX2NhbGxiYWNrX3JhaXNlIiwiZXJyb3IiLCJleG4kMCIsImV4biIsImNhbGxiYWNrX3JhaXNlZCIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlIiwidW5zYWZlX2dldF9jYWxsYmFjayIsImEiLCJ3cml0ZSIsImExIiwibGVuIiwibGFzdF92YWx1ZSIsIndyaXRlX2xvY2FsIiwid3JpdGUyIiwiYTIiLCJ3cml0ZTMiLCJhMyIsIndyaXRlNCIsImE0Iiwid3JpdGU1IiwiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCJjcmVhdGVfZXhuIiwiY2FuX3N1YnNjcmliZSIsInN1YnNjcmliZV9leG4iLCJ4XzAxOSIsImJ1c19pZCQwIiwiYnVzX2lkIiwiY2FwYWNpdHkkMCIsIm5ld19jYXBhY2l0eSIsImNvcHlfYW5kX2RvdWJsZSIsImFyZzEkMCIsImFyZzEkMSIsImFyZzIkMCIsImFyZzEkMiIsImFyZzIkMSIsImFyZzMkMCIsImFyZzEkMyIsImFyZzIkMiIsImFyZzMkMSIsImFyZzQkMCIsIml0ZXJfZXhuIiwieF8wMjAiLCJzZXhwX29mX3QkNCIsImZvbGRfZXhuIiwiZm9sZF9hcml0eSIsImluaXQiLCJ4XzAzMCIsImE1IiwiYXNzZXJ0X25vX2FsbG9jYXRpb24iLCJidXNfciIsInN0YXJ0aW5nX21pbm9yX3dvcmRzIiwic3RhcnRpbmdfbWFqb3Jfd29yZHMiLCJlbmRpbmdfbWlub3Jfd29yZHMiLCJlbmRpbmdfbWFqb3Jfd29yZHMiLCJnb3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMzEiLCJiXzAzMiIsImdvdCQwIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJhXzAzMyIsImJfMDM0IiwiY3JlYXRlIiwiYXJpdHkiLCJidXMxIiwiYnVzMiIsImJ1czMiLCJidXM0IiwiYnVzNSIsImR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbiIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJlIiwiY29ubiIsIm9uX2V2ZW50IiwiYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0IiwiY3VycmVudF9jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsImlzX2Nsb3NlZCQwIiwiY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0Iiwic2V4cF9vZl90JDEiLCJwYXJhbSIsImNvbm5fMDIzIiwibmV4dF9jb25uZWN0X3Jlc3VsdF8wMjYiLCJkb25fdF9yZWNvbm5lY3RfMDM2IiwiY2xvc2VfZmluaXNoZWRfMDM0IiwiY2xvc2Vfc3RhcnRlZF8wMzIiLCJldmVudF9idXNfMDMwIiwiZXZlbnRfaGFuZGxlcl8wMjgiLCJhcmdfMDQxIiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYXJnXzAxNCIsImJuZHNfMDEwIiwiYXJnXzAxMiIsImJuZHNfMDEwJDAiLCJhcmdfMDI5IiwiYm5kc18wMTYkNSIsImFyZ18wMjciLCJibmRzXzAxNiQ2IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiZXZlbnRfYnVzIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwicmFuZG9tX3N0YXRlIiwidGltZV9zb3VyY2UiLCJldmVudF9oYW5kbGVyIiwiZGVmYXVsdF9yZXRyeV9kZWxheSIsIm5vbl9yYW5kb21pemVkX2RlbGF5IiwicmV0cnlfZGVsYXlfc3BhbiIsInJhbmRvbV9zdGF0ZSQwIiwic3BhbiIsInNwYW4kMCIsImRpc3RhbmNlIiwid2FpdCIsInJldHJ5X2RlbGF5IiwicHJldmlvdXNfYWRkcmVzcyIsInByZXZpb3VzX2Vycm9yIiwiYWRkciIsInByZXZpb3VzX2FkZHJlc3MkMCIsInNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJzYW1lX2FzX3ByZXZpb3VzX2Vycm9yIiwiYWxsIiwiZXJyb3Jfc291cmNlXzAwNSIsInJldGlyZWRfa3JiX3dvcmQiLCJjb21wYXJlIiwidF9vZl9zZXhwIiwic2V4cF8wMDYiLCJzZXhwX29mX3QiLCJncm91cCIsIm1hZ2ljX3dvcmQiLCJnZW5fbWFnaWNfbnVtYmVyIiwid29yZCIsImFjYyIsImMiLCJtYWdpY19udW1iZXIiLCJ0IiwicCIsImJ5X21hZ2ljX251bWJlciIsImFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZSIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJtYXhfc3VwcG9ydGVkX3ZlcnNpb24iLCJvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl8iLCJudW0iLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIiwiY3JlYXRlX2V4biIsInByb3RvY29sIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwiYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIiwicHJvdG9jb2xfbWFnaWNfbnVtYmVyIiwicmF3X3ZlcnNpb25fbGlzdCIsImdldF9wcm90b2NvbCIsInZlcnNpb25zIiwicHJvdG9jb2xzIiwibmVnb3RpYXRlIiwiYWxsb3dfbGVnYWN5X3BlZXIiLCJ1cyIsInBlZXIiLCJ1c192ZXJzaW9ucyIsInVzX3Byb3RvY29sIiwicGVlcl92ZXJzaW9ucyIsInBlZXJfcHJvdG9jb2wiLCJ2ZXJzaW9uIiwieCIsIm1hdGNoZXNfbWFnaWNfcHJlZml4IiwiY29udGFpbnNfbWFnaWNfcHJlZml4IiwiZiIsImFueV9tYWdpY19wcmVmaXgiLCJncm91cCQwIiwiYmluX3NpemVfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRlcl90JDAiLCJhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGUkMCIsImJvdW5kZWRfbGlzdF9iaW5fc2l6ZSIsImJpbl9zaGFwZV90IiwiYmluX3QiLCJiaW5fc2l6ZV90IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYnVmIiwicG9zX3JlZiIsInZuYXQwIiwib2ZfaW50X2V4biIsIm9mX3dyaXRlciIsIndyaXRlIiwic2l6ZSIsIndyaXRlJDAiLCJwb3MiLCJhIiwibGVuIiwicG9zJDAiLCJzaXplJDAiLCJvZl90eXBlX2NsYXNzIiwiYmluX2EiLCJ0ZXN0IiwicyIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ192ZXJzaW9uIiwid3JpdGVyX3dpdGhfbGVuZ3RoIiwid2l0aF9sZW5ndGhfdmVyc2lvbiIsInBvdyIsIngiLCJkZXNjcmlwdGlvbnMiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZ3JvdXAiLCJ2MiIsInYxIiwidmludCIsInZfbmFtZSIsInZfdmVyc2lvbiIsImVxdWFsIiwiYV8wMDEiLCJiXzAwMiIsImNvbXBhcmUiLCJhXzAwMyIsImJfMDA0IiwibiIsImhhc2hfZm9sZF90IiwiaHN2IiwiYXJnIiwiaHN2JDAiLCJoYXNoIiwidF9vZl9zZXhwIiwieF8wMDciLCJ2ZXJzaW9uIiwibmFtZSIsInNleHBfb2ZfdCIsInZlcnNpb25fMDExIiwibmFtZV8wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsInN1bW1hcml6ZSIsInRzIiwic3VtbWFyeSIsImJpbmQiLCJ0IiwiZiIsImJpbmRfZGVmZXJyZWQiLCJtYXBfZGVmZXJyZWQiLCJsaWZ0X2RlZmVycmVkIiwiZXJyJDAiLCJlcnIiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsInY1Iiwic2l6ZSQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQwIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQxIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDIiLCJ2X21ldGFkYXRhIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDkyIiwibWV0YWRhdGFfMDkwIiwiaWRfMDg4IiwidmVyc2lvbl8wODYiLCJ0YWdfMDg0IiwiYXJnXzA5MyIsImJuZHNfMDgzIiwiYXJnXzA5MSIsImJuZHNfMDgzJDAiLCJhcmdfMDg5IiwiYm5kc18wODMkMSIsImFyZ18wODciLCJibmRzXzA4MyQyIiwiYXJnXzA4NSIsImJuZHNfMDgzJDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsInRvX3YxIiwiZGF0YSIsImlkIiwidGFnIiwib2ZfdjEiLCJtZXRhZGF0YSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDEiLCJvZl9hXzA5NCIsImRhdGFfMDk4IiwiaWRfMDk2IiwiYXJnXzA5OSIsImJuZHNfMDk1IiwiYXJnXzA5NyIsImJuZHNfMDk1JDAiLCJiaW5fcmVhZF90JDkiLCJiaW5fcmVhZF90JDEwIiwiYmluX3JlYWRlcl90JDQiLCJncm91cCQ1IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQyIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDUiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkNiIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fbmVlZHNfbGVuZ3RoJDIiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3JlYWRfbmF0MF90IiwiYmluX3JlYWRfbmF0MF90JDAiLCJiaW5fcmVhZGVyX25hdDBfdCIsImJpbl9zaXplX25hdDBfdCIsImJpbl93cml0ZV9uYXQwX3QiLCJiaW5fd3JpdGVyX25hdDBfdCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfdCQyIiwicmVzcG9uc2UiLCJlcnJvciIsImJpbl9zaXplX3QkMiIsInNpemVfb2ZfcmVzcG9uc2UiLCJzaXplX29mX2Vycm9yIiwiYmluX3dyaXRlX3QkMiIsIndyaXRlX3Jlc3BvbnNlIiwid3JpdGVfZXJyb3IiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl93cml0ZXJfcmVzcG9uc2UiLCJiaW5fd3JpdGVyX2Vycm9yIiwiYmluX3JlYWRfdCQxMyIsIm9mX3Jlc3BvbnNlIiwib2ZfZXJyb3IiLCJiaW5fcmVhZF90JDE0Iiwidl91bnVzZWRfcXVlcnlfaWQiLCJ2X2luaXRpYWwiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkZXJfcmVzcG9uc2UiLCJiaW5fcmVhZGVyX2Vycm9yIiwiYmluX3QkMiIsImJpbl9yZXNwb25zZSIsImJpbl9lcnJvciIsInNleHBfb2ZfdCQyIiwib2ZfcmVzcG9uc2VfMTAwIiwib2ZfZXJyb3JfMTAxIiwiaW5pdGlhbF8xMDUiLCJ1bnVzZWRfcXVlcnlfaWRfMTAzIiwiYXJnXzEwNiIsImJuZHNfMTAyIiwiYXJnXzEwNCIsImJuZHNfMTAyJDAiLCJncm91cCQ3IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQzIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDciLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkOCIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fbmVlZHNfbGVuZ3RoJDMiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDEiLCJiaW5fcmVhZF9uYXQwX3QkMiIsImJpbl9yZWFkZXJfbmF0MF90JDAiLCJiaW5fc2l6ZV9uYXQwX3QkMCIsImJpbl93cml0ZV9uYXQwX3QkMCIsImJpbl93cml0ZXJfbmF0MF90JDAiLCJncm91cCQ4IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQ0IiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDkiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMTAiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX25lZWRzX2xlbmd0aCQ0Iiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMiIsIm9mX2FfMTA3IiwiYXJnMF8xMDgiLCJyZXMwXzEwOSIsImFyZzBfMTEwIiwicmVzMF8xMTEiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZGVyX3QkOCIsImJpbl9yZWFkX25hdDBfdCQzIiwiYmluX3JlYWRfbmF0MF90JDQiLCJiaW5fcmVhZGVyX25hdDBfdCQxIiwiYmluX3NpemVfbmF0MF90JDEiLCJiaW5fd3JpdGVfbmF0MF90JDEiLCJiaW5fd3JpdGVyX25hdDBfdCQxIiwicXVlcnlfaWQiLCJ2MV9xdWVyeSIsInYxX3N0ciIsInYyX3N0ciIsImNhbGxlcl9pZGVudGl0eSIsInYyJDAiLCJ2X3F1ZXJ5Iiwidl9yZXNwb25zZSIsInZfbXNnIiwidl9xdWVyeSQwIiwidl9pbml0aWFsX3Jlc3BvbnNlIiwidl91cGRhdGVfcmVzcG9uc2UiLCJ2X2Vycm9yIiwidF9vZl9zZXhwJDAiLCJzZXhwc18wMTAiLCJ1cGRhdGVfcmVzcG9uc2UiLCJpbml0aWFsX3Jlc3BvbnNlIiwicXVlcnkiLCJzZXhwc18wMDYiLCJzZXhwc18wMDgiLCJtc2ciLCJyZXNwb25zZV8wMTQiLCJxdWVyeV8wMTIiLCJhcmdfMDE1IiwiYm5kc18wMTEiLCJhcmdfMDEzIiwiYm5kc18wMTEkMCIsIm1zZ18wMTciLCJhcmdfMDE4IiwiYm5kc18wMTYiLCJlcnJvcl8wMjYiLCJ1cGRhdGVfcmVzcG9uc2VfMDI0IiwiaW5pdGlhbF9yZXNwb25zZV8wMjIiLCJxdWVyeV8wMjAiLCJhcmdfMDI3IiwiYm5kc18wMTkiLCJhcmdfMDI1IiwiYm5kc18wMTkkMCIsImFyZ18wMjMiLCJibmRzXzAxOSQxIiwiYXJnXzAyMSIsImJuZHNfMDE5JDIiLCJyZXNwb25zZV8wMzEiLCJxdWVyeV8wMjkiLCJhcmdfMDMyIiwiYm5kc18wMjgiLCJhcmdfMDMwIiwiYm5kc18wMjgkMCIsIm1zZ18wMzQiLCJhcmdfMDM1IiwiYm5kc18wMzMiLCJlcnJvcl8wNDMiLCJ1cGRhdGVfcmVzcG9uc2VfMDQxIiwiaW5pdGlhbF9yZXNwb25zZV8wMzkiLCJxdWVyeV8wMzciLCJhcmdfMDQ0IiwiYm5kc18wMzYiLCJhcmdfMDQyIiwiYm5kc18wMzYkMCIsImFyZ18wNDAiLCJibmRzXzAzNiQxIiwiYXJnXzAzOCIsImJuZHNfMDM2JDIiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJieXRlc19yZWFkIiwicmVhZF9mb3JldmVyIiwib25fbWVzc2FnZSIsIm9uX2VuZF9vZl9iYXRjaCIsInJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QiLCJiaW5fcmVhZGVyIiwicGFjayQwIiwiY2xvc2UkMCIsImlzX2Nsb3NlZCQwIiwibW9uaXRvciIsImJ5dGVzX3RvX3dyaXRlIiwiYnl0ZXNfd3JpdHRlbiIsImZsdXNoZWQiLCJyZWFkeV90b193cml0ZSIsInNlbmRfYmluX3Byb3QiLCJiaW5fd3JpdGVyIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vIiwic3RvcHBlZCIsImNhbl9zZW5kIiwidHJhbnNmZXIiLCJwaXBlIiwibWF4X251bV92YWx1ZXNfcGVyX3JlYWQiLCJjb25zdW1lciIsImVuZF9vZl9waXBlIiwiaXZhciIsIml0ZXIiLCJxIiwid3JpdGVyXzAwNiIsInJlYWRlcl8wMDQiLCJhcmdfMDA3IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiY2xvc2UkMSIsImNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuXyIsImNhbGxiYWNrXzAwMiIsImNsb3NlX2Nvbm5lY3Rpb24iLCJjb250aW51ZSQwIiwiaGFuZGxlX2V4biIsImNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciIsImV4biIsImNhbGxiYWNrIiwid3JpdGVyXzAwNCIsInF1ZXJ5X2lkXzAwMiIsInJlc3BvbmRlZF8wMDYiLCJibmRzXzAwMSQxIiwiY3JlYXRlIiwid3JpdGVyIiwibGlmdCIsImltcGwiLCJiaW5fbXNnIiwiaW1wbCQwIiwic3RhdGUiLCJzdHIiLCJhdXRob3JpemVkX3N0YXRlIiwiaW1wbCQxIiwiaW1wbCQyIiwiYmluX3F1ZXJ5IiwiaW1wbCQzIiwiaW1wbCQ0IiwiaW1wbCQ1IiwiaW1wbCQ2IiwicmVzcCIsImltcGwkNyIsImltcGwkOCIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciIsImltcGwkOSIsImltcGwkMTAiLCJpbXBsJDExIiwidyIsIm9mX2Nvbm5lY3Rpb25fc3RhdGVfMDE0Iiwib25fZXhjZXB0aW9uXzAyNCIsInNoYXBlc18wMjIiLCJmXzAyMCIsInZlcnNpb25fMDE4IiwidGFnXzAxNiIsImJuZHNfMDE1IiwiYm5kc18wMTUkMCIsImJuZHNfMDE1JDEiLCJhcmdfMDE5IiwiYm5kc18wMTUkMiIsImFyZ18wMTciLCJibmRzXzAxNSQzIiwiZGVzY3JpcHRpb24iLCJzaGFwZXMiLCJsaWZ0JDAiLCJiIiwid2l0aF9hdXRob3JpemF0aW9uIiwibGlmdF9kZWZlcnJlZCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsImxvY2FsX3N0b3JhZ2Vfa2V5IiwiZ2V0Iiwid2l0aF9tZXRhZGF0YSIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiYWRkX2xlbiQwIiwiYWRkX2xlbiQxIiwiZSQwIiwiZSIsInN5bWJvbCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAyNCIsImFyZzFfMDI2IiwiYXJnMF8wMjUiLCJyZXMwXzAyNyIsInJlczFfMDI4IiwiYXJnXzAyMiIsImJuZHNfMDA4JDEiLCJhcmdfMDIwIiwiYm5kc18wMDgkMiIsImJuZHNfMDA4JDMiLCJhcmdfMDE2IiwiYm5kc18wMDgkNCIsImFyZ18wMTQiLCJibmRzXzAwOCQ1IiwiYm5kc18wMDgkNiIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJyZXN1bHQiLCJzZXhwIiwieF8wMzQiLCJ3cml0ZV9tZXNzYWdlIiwiYmluX3dyaXRlcl9kYXRhIiwiYmluX3dyaXRlX3ZvaWQiLCJidWZmZXIiLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXMiLCJiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCIsInN0cl9sZW4iLCJuZXh0IiwiYmluX3NpemVfbmF0MF9oZWFkZXIiLCJoZWFkZXJfcHJlZml4IiwiZGF0YV9sZW4iLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiIsImJpbl93cml0ZV9uYXQwX2hlYWRlciIsImJpbl93cml0ZXJfbmF0MF9oZWFkZXIiLCJiaW5fc2l6ZV9tZXNzYWdlIiwiYmluX3dyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX21lc3NhZ2UiLCJiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmciLCJwcmVwX3dyaXRlIiwiY2xvc2VkIiwiaW5zdGFuY2UiLCJ3cml0ZV9lb2YiLCJ3cml0ZV9tZXNzYWdlJDAiLCJjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW4iLCJncm91cHMiLCJlbGVtZW50X2luX2dyb3VwIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2skMCIsInQkMCIsIm1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiIsIm9uX2V4Y2VwdGlvbiIsImF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQiLCJycGNfa2luZCIsImFwcGx5X2ltcGxlbWVudGF0aW9uIiwiaW1wbGVtZW50YXRpb24iLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJmJDMiLCJiaW5fcXVlcnlfcmVhZGVyJDAiLCJxdWVyeV9jb250ZW50cyIsImV4biQwIiwiZiQ0IiwibGVuJDAiLCJyZXN1bHRfbW9kZSIsImYkNSIsImJpbl9yZXNwb25zZV93cml0ZXIiLCJiaW5fcXVlcnlfcmVhZGVyJDEiLCJxdWVyeV9jb250ZW50cyQwIiwib3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsIiwiZGF0YSQwIiwiZGF0YSQxIiwiZXhuJDEiLCJiYWNrdHJhY2UiLCJyZXN1bHRfbW9kZSQwIiwiZiQ2IiwicmVzcG9uZGVyIiwiZCIsImNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IiwicmVzdWx0JDAiLCJjaGVja19yZXNwb25kZWQiLCJkJDAiLCJyIiwic3RyZWFtaW5nX3JwYyIsInN0cmVhbV9xdWVyeSIsImxlbiQxIiwic3RyZWFtX3dyaXRlciIsImltcGxfd2l0aF9zdGF0ZSIsImYkMiIsIndyaXRlciQwIiwicnVuX2ltcGwiLCJzcGxpdF9vayIsImhhbmRsZV9vayIsImVycm9yJDAiLCJvayIsImluaXRpYWwiLCJmJDAiLCJwaXBlX3IiLCJmJDEiLCJmbHVzaCIsInByb2R1Y2Vyc19mbHVzaGVkIiwiYWNjIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsImltcGxlbWVudGF0aW9uJDEiLCJvbl9leGNlcHRpb24kMCIsImltcGxlbWVudGF0aW9uJDIiLCJpX3MiLCJkdXBzIiwiaSIsImluc3RhbnRpYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsInVucGFja2VkIiwiY3JlYXRlX2V4biIsIm51bGwkMCIsImFkZF9leG4iLCJkZXNjIiwiYWRkIiwiaW1wbGVtZW50YXRpb25zJDAiLCJvbl91bmtub3duX3JwYyQwIiwiY2FsbCIsImV4cGVydCIsImNhbm5vdF9zZW5kIiwieF8wMzkiLCJtYXJrX3Jlc3BvbmRlZCIsInNjaGVkdWxlIiwiaGVhZGVyIiwiaGFuZGxlX3NlbmRfcmVzdWx0JDAiLCJ3cml0ZV9iaWdzdHJpbmciLCJ3cml0ZV9iaW5fcHJvdCIsImVycm9yX3NvdXJjZV8wMzgiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInN1cHBvcnRlZF92ZXJzaW9ucyIsImRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlciIsInF1ZXJ5X21lc3NhZ2UiLCJzZW5kX2V2ZXJ5IiwidGltZW91dCIsInNlbmRfZXZlcnlfMDQzIiwidGltZW91dF8wNDEiLCJibmRzXzA0MCIsImJuZHNfMDQwJDAiLCJ2X3RpbWVvdXQiLCJ2X3NlbmRfZXZlcnkiLCJjcmVhdGUkMCIsInNleHBfb2ZfdCQzIiwiaGVhcnRiZWF0X2NvbmZpZ18wNTMiLCJkZXNjcmlwdGlvbl8wNTEiLCJoZWFydGJlYXRfY2FsbGJhY2tzXzA1NSIsImxhc3Rfc2Vlbl9hbGl2ZV8wNTciLCJuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25fMDciLCJoZWFydGJlYXRfZXZlbnRfMDc1IiwidGltZV9zb3VyY2VfMDczIiwiaW1wbGVtZW50YXRpb25zX2luc3RhbmNlXzA3MSIsImNsb3NlX2ZpbmlzaGVkXzA2OSIsImNsb3NlX3N0YXJ0ZWRfMDY3Iiwib3Blbl9xdWVyaWVzXzA2NSIsIndyaXRlcl8wNjMiLCJyZWFkZXJfMDYxIiwibWF4X21ldGFkYXRhX3NpemVfMDU5IiwiYXJnXzA3OCIsImJuZHNfMDUwIiwiYXJnXzA3NiIsImJuZHNfMDUwJDAiLCJhcmdfMDc0IiwiYm5kc18wNTAkMSIsImFyZ18wNzIiLCJibmRzXzA1MCQyIiwiYXJnXzA3MCIsImJuZHNfMDUwJDMiLCJhcmdfMDY4IiwiYm5kc18wNTAkNCIsImFyZ18wNjYiLCJibmRzXzA1MCQ1Iiwid3JpdGVyXzAzNSIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbl8wMyIsImFyZ18wMzYiLCJibmRzXzAzMiIsImFyZ18wMzQiLCJibmRzXzAzMiQwIiwiYXJnXzA2NCIsImJuZHNfMDUwJDYiLCJhcmdfMDYyIiwiYm5kc18wNTAkNyIsImFyZ18wNjAiLCJibmRzXzA1MCQ4IiwiYXJnXzA1OCIsImJuZHNfMDUwJDkiLCJhcmdfMDU2IiwiYm5kc18wNTAkMTAiLCJ0aW1lb3V0XzA0NiIsInNlbmRfZXZlcnlfMDQ4IiwiYXJnXzA0OSIsImJuZHNfMDQ1IiwiYXJnXzA0NyIsImJuZHNfMDQ1JDAiLCJhcmdfMDU0IiwiYm5kc18wNTAkMTEiLCJhcmdfMDUyIiwiYm5kc18wNTAkMTIiLCJzZXhwX29mX3RfaHVtX3dyaXRlciIsInhfMDc5IiwiZGlzcGF0Y2giLCJyZXNwb25zZV9oYW5kbGVyIiwiYmluX3dyaXRlcl9xdWVyeSIsInF1ZXJ5JDAiLCJtZXNzYWdlIiwibWFrZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImR1bW15X2J1ZmZlciIsImR1bW15X3JlZiIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IiwiY3JlYXRlJDEiLCJoYW5kc2hha2VfdGltZW91dCIsImhlYXJ0YmVhdF9jb25maWciLCJtYXhfbWV0YWRhdGFfc2l6ZSIsInRpbWVfc291cmNlIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiIsImhlYXJ0YmVhdF9mcm9tX25vd19vbiIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODIiLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJxdWVyeSQxIiwiaW5zdGFuY2UkMCIsInBlZXIiLCJ3aXRoX2Nsb3NlIiwidHJhbnNwb3J0IiwiZGlzcGF0Y2hfcXVlcmllcyIsIm9uX2hhbmRzaGFrZV9lcnJvciIsImhhbmRsZV9oYW5kc2hha2VfZXJyb3IiLCJzZXJ2ZXJfd2l0aF9jbG9zZSIsIm9uX2hhbmRzaGFrZV9lcnJvciQwIiwid2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCIsImNvbnRleHQiLCJlcnJvcl9zb3VyY2VfMDA5IiwiZXJyb3Jfc291cmNlXzAyNCIsInN5bWJvbCQwIiwiZGlzcGF0Y2hfcmF3IiwiY29ubiIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInF1ZXJ5X3R5cGVfaWQiLCJyZXNwb25zZV90eXBlX2lkIiwiaW1wbGVtZW50IiwiaW1wbGVtZW50JDAiLCJyZXNwb25zZSQwIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciIsImRpc3BhdGNoJDAiLCJkaXNwYXRjaF9leG4iLCJtYWtlX2Rpc3BhdGNoIiwiZG9fZGlzcGF0Y2giLCJycGNfdGFnIiwiaGFuZGxlX3Jlc3BvbnNlIiwiaGFuZGxlX2Vycm9yIiwieF8wMDIiLCJkaXNwYXRjaCQxIiwic2NoZWR1bGVfZGlzcGF0Y2giLCJkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIiwiYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiIsImltcGxlbWVudCQxIiwiaW1wbGVtZW50JDIiLCJpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJDAiLCJ2ZXJzaW9uJDAiLCJuYW1lJDAiLCJtc2dfdHlwZV9pZCIsInNoYXBlcyQwIiwiZGVzY3JpcHRpb24kMCIsImltcGxlbWVudCQzIiwiZGlzcGF0Y2gkMiIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IkMCIsImRpc3BhdGNoJDMiLCJkaXNwYXRjaF9leG4kMCIsImltcGxlbWVudCQ0IiwiZGlzcGF0Y2gkNCIsInNjaGVkdWxlX2Rpc3BhdGNoJDAiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNsaWVudF9wdXNoZXNfYmFjayIsImJpbl9pbml0aWFsX3Jlc3BvbnNlIiwiYmluX3VwZGF0ZV9yZXNwb25zZSIsImFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZSIsImNsaWVudF9wdXNoZXNfYmFjayQwIiwiaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIiwidXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQiLCJlcnJvcl9yZXNwb25zZV90eXBlX2lkIiwibWFrZV9pbml0aWFsX21lc3NhZ2UiLCJpbXBsZW1lbnRfZ2VuIiwiaW1wbGVtZW50JDUiLCJjIiwiaW1wbGVtZW50X2RpcmVjdCIsImFib3J0IiwicmVhZF9lcnJvciIsImhhbmRsZXIiLCJjb3JlX2VyciIsImRpc3BhdGNoX2dlbiIsIm1ha2VfdXBkYXRlX2hhbmRsZXIiLCJpbml0aWFsX3N0YXRlIiwiaW5pdGlhbF9oYW5kbGVyIiwiZXJyJDEiLCJpbml0aWFsX21zZyIsImluaXRpYWwkMCIsImV4dHJhIiwiaGFuZGxlciQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJlcnIkNCIsImVyciQzIiwiZXJyJDIiLCJkaXNwYXRjaCQ1IiwicGlwZV93IiwiaW5pdCIsInBpcGVfbWV0YWRhdGEiLCJjcmVhdGUkMiIsImJpbl9xdWVyeSQwIiwiYmluX3Jlc3BvbnNlJDAiLCJpbXBsZW1lbnQkNiIsImNyZWF0ZSQzIiwiaW5pdGlhbF9zaXplIiwiY3JlYXRlJDQiLCJidWZmZXIkMCIsImxlbmd0aCIsIm9uZSIsIm9uZSQwIiwid3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAiLCJncm91cF9lbGVtZW50X2luX3dyaXRlciIsInJlbW92ZSIsInRvX2xpc3QiLCJmbHVzaGVkX29yX2Nsb3NlZCIsImRpcmVjdF9zdHJlYW1fd3JpdGVyIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQxIiwid3JpdGUkMSIsImltcGxlbWVudF9kaXJlY3QkMCIsImRpc3BhdGNoJDYiLCJkaXNwYXRjaF9leG4kMSIsInBpcGVfYW5kX2lkIiwiZGlzcGF0Y2hfaXRlciIsIm5hbWUkMSIsInZlcnNpb24kMSIsImRlc2NyaXB0aW9uJDEiLCJxdWVyeV90eXBlX2lkJDAiLCJlcnJvcl90eXBlX2lkIiwicmVzcG9uc2VfdHlwZV9pZCQwIiwiY3JlYXRlJDUiLCJiaW5fc3RhdGUiLCJiaW5fdXBkYXRlIiwiYmluX3F1ZXJ5JDEiLCJiaW5fZXJyb3IkMCIsImRpc3BhdGNoJDciLCJ1cGRhdGVfciIsIm5hbWUkMiIsInZlcnNpb24kMiIsImRlc2NyaXB0aW9uJDIiLCJxdWVyeV90eXBlX2lkJDEiLCJzdGF0ZV90eXBlX2lkIiwidXBkYXRlX3R5cGVfaWQiLCJlcnJvcl90eXBlX2lkJDAiLCJkZXNjcmlwdGlvbiQzIiwicnBjIiwicnBjJDAiLCJycGMkMSIsInJwYyQyIiwidGhlX3JwYyIsIm5vdF90aGVfcnBjIiwicnBjX25hbWUkMCIsImlucHV0IiwiY29udmVydCIsImZhaWxlZF9jb252ZXJzaW9uIiwiYXJnM18wMDYiLCJhcmcyXzAwNSIsImFyZzFfMDA0IiwiYXJnMF8wMDMiLCJyZXMwXzAwNyIsInZfMDAxIiwicmVzMV8wMDgiLCJ2XzAwMiIsInJlczJfMDA5IiwicmVzM18wMTAiLCJtdWx0aXBsZV9yZWdpc3RyYXRpb25zIiwiYXJnMV8wMTQiLCJ2XzAxMSIsInZfMDEyIiwicmVzMV8wMTYiLCJhZGFwdGVyIiwiYWRhcHRlcnMiLCJhcmcxXzAyMiIsImFyZzBfMDIxIiwicmVzMV8wMjQiLCJhZGFwdGVycyQwIiwiYWRkX3JwY192ZXJzaW9uIiwib2xkX3JwYyIsInVwZ3JhZGUiLCJkb3duZ3JhZGUiLCJhZGFwdCIsImZuIiwiYWRhcHRlZCIsIm9sZF9xdWVyeSIsImFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJ1cGdyYWRlX29yX2Vycm9yIiwiZG93bmdyYWRlX29yX2Vycm9yIiwidmFsdWUiLCJhZGRfdmVyc2lvbiIsImFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSIsInJlZ2lzdHJ5IiwiaW1wbGVtZW50X211bHRpIiwibG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvIiwibG9nX3ZlcnNpb24iLCJycGNzIiwidmVyc2lvbnMiLCJxJDAiLCJyJDAiLCJpbXBsZW1lbnRfbXVsdGlfZ2VuIiwiaW1wbGVtZW50X2RpcmVjdF9tdWx0aSIsIndyYXBwZWRfbW9kZWxfb2ZfcXVlcnkiLCJ3cmFwcGVkX2Vycm9yX29mX21vZGVsIiwiY29udmVydF9lbHQiLCJjb252ZXJ0X3BpcGUiLCJtb2RlbF9zdGF0ZSIsInN0YXRlJDAiLCJiaW5fc2hhcGVfcXVlcnkiLCJiaW5fc2l6ZV9xdWVyeSIsImJpbl93cml0ZV9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5IiwiYmluX3JlYWRfcXVlcnkkMCIsImJpbl9yZWFkZXJfcXVlcnkiLCJiaW5fc2hhcGVfc3RhdGUiLCJiaW5fc2l6ZV9zdGF0ZSIsImJpbl93cml0ZV9zdGF0ZSIsImJpbl93cml0ZXJfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSIsImJpbl9yZWFkX3N0YXRlJDAiLCJiaW5fcmVhZGVyX3N0YXRlIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3NoYXBlX2Vycm9yIiwiYmluX3NpemVfZXJyb3IiLCJiaW5fd3JpdGVfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciIsImJpbl9yZWFkX2Vycm9yJDAiLCJtb2RlbF9vZl9xdWVyeSIsInN0YXRlX29mX21vZGVsIiwiZXJyb3Jfb2ZfbW9kZWwiLCJ1cGRhdGVfb2ZfbW9kZWwiLCJiaW5fc2hhcGVfcmVzcG9uc2UiLCJiaW5fc2l6ZV9yZXNwb25zZSIsImJpbl93cml0ZV9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlIiwiYmluX3JlYWRfcmVzcG9uc2UkMCIsInJlc3BvbnNlX29mX21vZGVsIiwiYWRkJDAiLCJpbXBscyIsIm1lbnUiLCJtZW51X2ltcGxzIiwic3VwcG9ydGVkX3JwY3MiLCJvZl9lbnRyaWVzIiwiZW50cmllcyIsImF1eF9yZXF1ZXN0IiwicmVxdWVzdCIsInJlcXVlc3QkMCIsImltcGxlbWVudF9tdWx0aSQwIiwiYmluX3NoYXBlX3F1ZXJ5JDAiLCJiaW5fc2l6ZV9xdWVyeSQwIiwiYmluX3dyaXRlX3F1ZXJ5JDAiLCJiaW5fd3JpdGVyX3F1ZXJ5JDAiLCJiaW5fcmVhZF9xdWVyeSQxIiwiYmluX3JlYWRfcXVlcnkkMiIsImJpbl9yZWFkZXJfcXVlcnkkMCIsImJpbl9zaGFwZV9yZXNwb25zZSQwIiwiYmluX3NpemVfcmVzcG9uc2UkMCIsImJpbl93cml0ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlcl9yZXNwb25zZSQwIiwiYmluX3JlYWRfcmVzcG9uc2UkMSIsImJpbl9yZWFkX3Jlc3BvbnNlJDIiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlJDAiLCJtb2RlbF9vZl9xdWVyeSQwIiwicmVzcG9uc2Vfb2ZfbW9kZWwkMCIsImFkZCQxIiwic2hhcGVfbWVudSIsInNoYXBlX21lbnVfaW1wbHMiLCJyZXF1ZXN0JDEiLCJjb25uZWN0aW9uIiwiY3JlYXRlX2RpcmVjdGx5IiwibW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24iLCJjYWxsZXJfdmVyc2lvbnMiLCJjYWxsZWVfdmVyc2lvbnMiLCJjYWxsZWVfbWVudSIsIndpdGhfc3BlY2lmaWNfdmVyc2lvbiIsImRpc3BhdGNoZXIiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMV8wMjAiLCJ3aXRoX3ZlcnNpb25fbWVudSIsImRpc3BhdGNoX211bHRpIiwiY29ubl93aXRoX21lbnUiLCJtcSIsInF1ZXJ5X29mX21vZGVsIiwibW9kZWxfb2ZfcmVzcG9uc2UiLCJkaXNwYXRjaF9pdGVyX211bHRpIiwiYWJvcnRfbXVsdGkiLCJ3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIiwiY29udmVydF9yZXN1bHQiLCJjb252ZXJ0X29rIiwidSIsInJzIiwibW9kZWxfb2Zfc3RhdGUiLCJtb2RlbF9vZl9lcnJvciIsIm1vZGVsX29mX3VwZGF0ZSIsImNhbGxlZV9tb2RlbF9vZl9xdWVyeSIsInJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCIsInF1ZXJ5X29mX2NhbGxlcl9tb2RlbCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsImVycm9yX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJzdGF0ZV9vZl9jYWxsZWVfbW9kZWwiLCJ1cGRhdGVfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3N0YXRlJDAiLCJiaW5fc2l6ZV9zdGF0ZSQwIiwiYmluX3dyaXRlX3N0YXRlJDAiLCJiaW5fd3JpdGVyX3N0YXRlJDAiLCJiaW5fcmVhZF9zdGF0ZSQxIiwiYmluX3JlYWRfc3RhdGUkMiIsImJpbl9yZWFkZXJfc3RhdGUkMCIsImJpbl9zdGF0ZSQwIiwiYmluX3NoYXBlX3VwZGF0ZSQwIiwiYmluX3NpemVfdXBkYXRlJDAiLCJiaW5fd3JpdGVfdXBkYXRlJDAiLCJiaW5fd3JpdGVyX3VwZGF0ZSQwIiwiYmluX3JlYWRfdXBkYXRlJDEiLCJiaW5fcmVhZF91cGRhdGUkMiIsImJpbl9yZWFkZXJfdXBkYXRlJDAiLCJiaW5fdXBkYXRlJDAiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwicGlwZV9yZWFkIiwieF8wMDkiLCJvZl9hXzAwMSIsImJ1ZmZlcl8wMDUiLCJwaXBlXzAwMyIsImJ5dGVzX3JlYWRfMDA3IiwiYXJnXzAwOCIsImJuZHNfMDAyIiwiYXJnXzAwNiIsImJuZHNfMDAyJDAiLCJhcmdfMDA0IiwiYm5kc18wMDIkMSIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJwcm9jZXNzX3F1ZXVlIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSQwIiwidG90YWxfbGVuIiwiY29udGludWVfb3Jfd2FpdCIsImxlbmd0aCQwIiwic2V0X2J1ZmZlciIsInByb2Nlc3NfZGF0YSIsInNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE5Iiwib2ZfYV8wMTEiLCJtb25pdG9yXzAxNSIsInBpcGVfMDEzIiwiYnl0ZXNfd3JpdHRlbl8wMTciLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiaW5jcl9ieXRlc193cml0dGVuIiwibnVtX2J5dGVzIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJvbl9tZXNzYWdlX2NvdW50IiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJhXzAyMiIsImJfMDIzIiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImNvbXBhcmF0b3IkMCIsImFfMDI0IiwiYl8wMjUiLCJ3cml0ZV8xX21zZ18xX2NodW5rIiwid3JpdGVfMV9tc2dfM19jaHVuayIsIm1zZ19sZW4iLCJzcGxpdF9hdCIsInBhcnQxIiwicGFydDIiLCJ3cml0ZV8yX21zZ18xX2NodW5rIiwib25lX21zZyIsInR3b19tc2ciLCJ3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWUiLCJudW0iLCJzdG9wX2FmdGVyX29uX21lc3NhZ2UiLCJhXzAyNiIsImJfMDI3IiwiYV8wMzAiLCJiXzAzMSIsIm9uZV9tZXNzYWdlIiwidHdvX21lc3NhZ2VzIiwib25lX21lc3NhZ2VfcDEiLCJvbmVfbWVzc2FnZV9wMiIsInJwY19jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsInN0cmluZ19hZnRlciIsInMiLCJuIiwicXVvdGUiLCJsZW4iLCJidWYiLCJpIiwiYyIsIm9mX2NoYXIiLCJmdWxsX3NwbGl0Iiwic3RyIiwib24iLCJzZXAiLCJsb29wIiwiYWNjIiwib2Zmc2V0IiwiaW5kZXgiLCJ0b2tlbiIsInNwbGl0IiwibWF4IiwibWF4JDAiLCJ0b2tlbnMiLCJsb29wJDAiLCJ0cmltX2xlZnRfc3ViIiwibGFzdF9jaGFyIiwiY2hhcnMiLCJmaW5hbCQwIiwibGFzdF9jaGFyJDAiLCJpJDAiLCJsYXN0X2NoYXIkMSIsIm5ld19sZW4iLCJzcGxpdF90cmltX2xlZnQiLCJ0cmltIiwidHJpbV9sZWZ0Iiwibm9uX3NwYWNlIiwiZmluZF9mcm9tIiwicGF0dGVybiIsInN0YXJ0Iiwic3RhcnQkMCIsInJlcGxhY2VfYWxsIiwid2l0aCQwIiwicGxlbiIsInNsZW4iLCJqIiwicmVwbGFjZV9hbGxfYXNzb2MiLCJ0YmwiLCJmb3VuZCIsImZvdW5kJDAiLCJmIiwieHMkMCIsIngkMSIsIngiLCJmeCIsInhzIiwieCQwIiwiZngkMCIsImUiLCJqJDEiLCJ3aXRoJDIiLCJwYXR0ZXJuJDEiLCJyIiwid2l0aCQxIiwicGF0dGVybiQwIiwiaiQwIiwib2ZfbGlzdCIsImwiLCJ0b19saXN0IiwiaSQxIiwiYWNjJDAiLCJvZl9hcnJheSIsImEiLCJieXRlcyIsInRvX2FycmF5IiwiY3V0Iiwic2VwX21heCIsInNfbWF4IiwiayIsImxlZnRfZW5kIiwicmlnaHRfc3RhcnQiLCJyY3V0Iiwic2VwX3N0YXJ0IiwiY2hvcF9wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXhfbCIsInN0cmluZ19sIiwiZHJvcCIsInRha2UiLCJjcmVhdGUiLCJzaXplIiwiZW1wdHkiLCJsZW5ndGgiLCJzdWIiLCJpbnZhbGlkX2JvdW5kcyIsIm9wIiwiYnVmZmVyX2xlbiIsIm9mZiIsImxlbiIsIm1lc3NhZ2UiLCJpbnZhbGlkX2JvdW5kc19ibGl0Iiwic3JjX2xlbiIsInNyY19vZmYiLCJkc3RfbGVuIiwiZHN0X29mZiIsImludmFsaWRfYm91bmRzX21lbWNtcCIsImJ1ZjFfbGVuIiwiYnVmMV9vZmYiLCJidWYyX2xlbiIsImJ1ZjJfb2ZmIiwiY29weSIsInQiLCJkc3QiLCJzdWJzdHJpbmciLCJiIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwicyIsImJsaXQiLCJzcmMiLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2J5dGVzIiwiYmxpdF90b19ieXRlcyIsIm1lbWNtcCIsImJ1ZjEiLCJidWYyIiwibWVtY21wX3N0cmluZyIsIm1lbWNociIsImJ1ZiIsImJ1Zl9vZmYiLCJjaHIiLCJidWZfbGVuIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzE2IiwiYnMiLCJpIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzY0IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQiLCJ4Iiwic2V0X2ludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDMyX2xlIiwic2V0X2ludDY0X2JlIiwic2V0X2ludDY0X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwJDAiLCJnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQ2NF9iZSIsImdldF9pbnQ2NF9sZSIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCIsInVuc2FmZV9zZXRfaW50MTZfYmUiLCJ1bnNhZmVfc2V0X2ludDE2X2xlIiwidW5zYWZlX3NldF9pbnQzMl9iZSIsInVuc2FmZV9zZXRfaW50MzJfbGUiLCJ1bnNhZmVfc2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDE2X2xlIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQzMl9sZSIsInVuc2FmZV9nZXRfaW50NjRfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwic3RhdGVfdG9fb3B0aW9uIiwieCIsInYiLCJmYWlsX3RvX3N0cmluZyIsIm1hcmtzIiwiZXJyIiwic3RhdGVfdG9fcmVzdWx0IiwiY3JlYXRlIiwiYnVmZmVyIiwib2ZmIiwibGVuIiwiY29tbWl0dGVkX2J5dGVzIiwibGVuZ3RoIiwidCIsImNsaWVudF9jb21taXR0ZWRfYnl0ZXMiLCJwYXJzZXJfY29tbWl0dGVkX2J5dGVzIiwiYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQiLCJwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMiLCJpbnZhcmlhbnQiLCJvZmZzZXRfaW5fYnVmZmVyIiwicG9zIiwiYXBwbHkiLCJmIiwidW5zYWZlX2dldF9jaGFyIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwidW5zYWZlX2dldF9pbnQxNl9iZSIsInVuc2FmZV9nZXRfaW50MzJfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwiY291bnRfd2hpbGUiLCJpIiwibGltaXQiLCJjb21taXQiLCJmYWlsX2siLCJpbnB1dCIsIm1zZyIsInN1Y2NlZWRfayIsInRvX2V4cG9ydGVkX3N0YXRlIiwiY29udGludWUkMCIsImNvbW1pdHRlZCIsImJzIiwibW9yZSIsIngkMCIsInMiLCJzbCIsImkkMCIsInBhcnNlIiwicCIsInBhcnNlX2JpZ3N0cmluZyIsImlucHV0JDAiLCJyZXR1cm4kMCIsImZhaWwiLCJzdWNjIiwic3ltYm9sX2JpbmQiLCJzdWNjJDAiLCJzeW1ib2xfbWFwIiwic3ltYm9sIiwibSIsInN5bWJvbCQwIiwic3VjYzAiLCJpbnB1dDAiLCJwb3MwIiwibW9yZTAiLCJzdWNjMSIsImlucHV0MSIsInBvczEiLCJtb3JlMSIsImxpZnQiLCJsaWZ0MiIsIm0xIiwibTIiLCJzdWNjMiIsImlucHV0MiIsInBvczIiLCJtb3JlMiIsImxpZnQzIiwibTMiLCJzdWNjMyIsImlucHV0MyIsInBvczMiLCJtb3JlMyIsImxpZnQ0IiwibTQiLCJzdWNjNCIsImlucHV0NCIsInBvczQiLCJtb3JlNCIsInN5bWJvbCQxIiwiYSIsImIiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwibWFyayIsImZhaWwkMCIsInN5bWJvbCQ0IiwicSIsInBvcyQwIiwibW9yZSQwIiwicmV0dXJuJDEiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsImxpZnQyJDAiLCJsaWZ0MyQwIiwibGlmdDQkMCIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJvZl9iaWdzdHJpbmciLCJidWYiLCJ3cml0YWJsZV9zcGFjZSIsImVuc3VyZSIsInRvX2NvcHkiLCJvbGRfbGVuIiwibmV3X2xlbiIsInNwYWNlIiwibmV3X2J1ZiIsIndyaXRlX3BvcyIsImZlZWRfc3RyaW5nIiwic3RyIiwiZmVlZF9iaWdzdHJpbmciLCJmZWVkX2lucHV0Iiwic2hpZnQiLCJuIiwiZm9yX3JlYWRpbmciLCJ1bmNvbnN1bWVkIiwib2ZfdW5jb25zdW1lZCIsImZyb21fdW5idWZmZXJlZF9zdGF0ZSIsImJ1ZmZlcmluZyIsImNvbnN1bWVkIiwiY29uc3VtZWQkMCIsInVuY29uc3VtZWQkMCIsInBhcnNlJDAiLCJpbml0aWFsX2J1ZmZlcl9zaXplIiwiZmVlZCIsInN0YXRlIiwiayIsImJ1ZmZlcmluZyQwIiwic3RhdGVfdG9fb3B0aW9uJDAiLCJzdGF0ZV90b19yZXN1bHQkMCIsInN0YXRlX3RvX3VuY29uc3VtZWQiLCJwcm9tcHQiLCJkZW1hbmRfaW5wdXQiLCJlbnN1cmVfc3VzcGVuZGVkIiwiZ28iLCJ1bnNhZmVfYXBwbHkiLCJhdF9lbmRfb2ZfaW5wdXQiLCJlbmRfb2ZfaW5wdXQiLCJhZHZhbmNlIiwiYXZhaWxhYmxlIiwidW5zYWZlX2xvb2thaGVhZCIsInBlZWtfY2hhciIsInBlZWtfY2hhcl9mYWlsIiwic2F0aXNmeSIsImMiLCJjaGFyJDAiLCJub3RfY2hhciIsImMkMCIsImFueV9jaGFyIiwiaW50OCIsInAkMCIsImFueV91aW50OCIsInAkMSIsImFueV9pbnQ4Iiwic2tpcCIsImluaXQiLCJ3aXRoX2J1ZmZlciIsImlucHV0X2xlbiIsImluaXQkMCIsImNvdW50X3doaWxlMSIsInN1Y2MkMSIsImZhaWwkMSIsInN0cmluZyIsImYkMCIsImUiLCJzdHJpbmckMCIsInN0cmluZ19jaSIsInNraXBfd2hpbGUiLCJ0YWtlIiwibiQwIiwidGFrZV9iaWdzdHJpbmciLCJ0YWtlX2JpZ3N0cmluZ193aGlsZSIsInRha2VfYmlnc3RyaW5nX3doaWxlMSIsInRha2VfYmlnc3RyaW5nX3RpbGwiLCJwZWVrX3N0cmluZyIsInRha2Vfd2hpbGUiLCJ0YWtlX3doaWxlMSIsInRha2VfdGlsbCIsImNob2ljZSIsInBzIiwiZmFpbHVyZV9tc2ciLCJmaXhfZGlyZWN0IiwiciIsImZpeF9sYXp5IiwibWF4X3N0ZXBzIiwic3RlcHMiLCJmaXgiLCJvcHRpb24iLCJjb25zIiwieHMiLCJsaXN0IiwicHMkMCIsImNvdW50IiwibG9vcCIsIm1hbnkiLCJtYW55MSIsIm1hbnlfdGlsbCIsInNlcF9ieTEiLCJzZXBfYnkiLCJza2lwX21hbnkiLCJza2lwX21hbnkxIiwiZW5kX29mX2xpbmUiLCJzY2FuIiwic3RhdGUkMCIsInBhcnNlciIsInNjYW4kMCIsInNjYW5fc3RhdGUiLCJzY2FuX3N0cmluZyIsImNvbnN1bWVfd2l0aCIsImNvbnN1bWVkX2JpZ3N0cmluZyIsImJvdGgiLCJtYXAiLCJiaW5kIiwibWFwMiIsIm1hcDMiLCJtYXA0IiwiZCIsImludDE2IiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJ4IiwieCQwIiwiY3N0JDE1IiwiY3N0JDEzIiwiY3N0JDEyIiwiY3N0JDAiLCJpdGVyX2NvbmNhdCIsImZuIiwic2VwIiwiYnVmIiwibGFzdCIsInJlc3QiLCJjb21wYXJlX29wdCIsImMiLCJ0JDAiLCJ0IiwiYSIsImIiLCJjb21wYXJlX2xpc3QiLCJmIiwidCQyIiwidCQxIiwieHMiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwidXNlcmluZm8iLCJob3N0IiwicXVlcnlfa2V5IiwicXVlcnlfdmFsdWUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJ4JDEiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfaG9zdCIsImgxIiwiaDIiLCJpcDIiLCJpcDEiLCJpcDIkMCIsImlwMSQwIiwiaDIkMCIsImgxJDAiLCJjb21wYXJlJDAiLCJjJDIiLCJjJDMiLCJjJDQiLCJrdmwkMCIsImt2bCIsInJhdyIsInJhdyQwIiwiYyQxIiwidmwiLCJ2bCQwIiwiayQwIiwiZXF1YWwiLCJ1bmNhc3Rfb3B0Iiwibm9ybWFsaXplIiwic2NoZW0iLCJpbml0IiwiaG9zdCQwIiwiaG9zdCQxIiwidG9fc3RyaW5nIiwidXJpIiwiYWRkX3BjdF9zdHJpbmciLCJmaXJzdF9zZWdtZW50IiwieCQyIiwicSIsImdldF9kZWNvZGVkX29wdCIsIndpdGhfc2NoZW1lIiwiaCQwIiwiaG9zdF93aXRoX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJ3aXRoX3VzZXJpbmZvIiwidXNlcmluZm8kMCIsInVzZXIiLCJwYXNzd29yZCIsInBhc3MiLCJ3aXRoX3Bhc3N3b3JkIiwicmVzdWx0Iiwid2l0aF9wb3J0Iiwid2l0aF9wYXRoIiwicGF0aCQwIiwid2l0aF9mcmFnbWVudCIsImZyYWciLCJxdWVyeSIsInZlcmJhdGltX3F1ZXJ5IiwiZ2V0X3F1ZXJ5X3BhcmFtIiwiZ2V0X3F1ZXJ5X3BhcmFtJDAiLCJ3aXRoX3F1ZXJ5IiwicV9zIiwid2l0aF9xdWVyeSQwIiwiYWRkX3F1ZXJ5X3BhcmFtIiwiYWRkX3F1ZXJ5X3BhcmFtJDAiLCJhZGRfcXVlcnlfcGFyYW1zIiwiYWRkX3F1ZXJ5X3BhcmFtcyQwIiwicmVtb3ZlX3F1ZXJ5X3BhcmFtIiwicGF0aF9hbmRfcXVlcnkiLCJtYXRjaCIsInNjaGVtZSQwIiwicmVzb2x2ZSIsImJhc2UiLCJzY2hlbWUkMSIsInNjaGVtJDAiLCJwYXRoX3N0ciIsInJlbHBhdGgiLCJicGF0aCIsImJob3N0IiwicmJwYXRoIiwiY2Fub25pY2FsaXplIiwidXJpJDAiLCJwcCIsInBwZiIsInBwX2h1bSIsInN0cmluZ19vZl9jaGFyIiwic3RyaW5nX29mX2NoYXJfbGlzdCIsImNoYXJzIiwiaXNfZGlnaXQiLCJoZXhfZGlnaXQiLCJoZXhhZGVjaW1hbCIsImNfZG90IiwiY19hdCIsImNfY29sb24iLCJkZWNfb2N0ZXQiLCJudW0iLCJpcHY0X2FkZHJlc3MiLCJ0aHJlZSIsIm9uZSIsImFmdGVyX2RvdWJsZV9jb2xvbiIsImRvdWJsZV9jb2xvbiIsImNvdW50IiwiZmlsbGVyX2xlbmd0aCIsInBhcnQiLCJoZXhfcGFydCIsInNwbGl0X3dpdGgiLCJ0cyIsInpzIiwiZm9ybWF0X2FkZHIiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJiZWZvcmVfZG91YmxlX2NvbG9uIiwiYmVmb3JlIiwicmVzIiwiaXB2NiIsImlwdjZfYWRkcmVzcyIsInBjdF9lbmNvZGVkIiwicGN0IiwiZGlnaXRzIiwic3ViX2RlbGltcyQwIiwidW5yZXNlcnZlZCIsInJlZ19uYW1lIiwicG9ydCQwIiwiZGVjb2RlZCIsImF1dGhvcml0eSIsInF1ZXJ5JDAiLCJmcmFnbWVudCQwIiwidXJpX3JlZmVyZW5jZSIsInVyaV9yZWZlcmVuY2UkMCIsImRlY29kZV9ob3N0IiwicGFyc2VkIiwicGFyc2VkJDAiLCJtYWtlIiwicGF0aCQxIiwid2l0aF9ob3N0Iiwid2l0aF91cmkiLCJ3aXRoJDAiLCJvIiwib2Zfc3RyaW5nIiwibGV0JDAiLCJ0b191cmkiLCJvZl91cmkiLCJ1bnN1cHBvcnRlZF9zY2hlbWUiLCJvZl9zdHJpbmckMCIsImVycm9yIiwidG9fc3RyaW5nJDAiLCJtYWtlJDAiLCJob3N0JDIiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxOCIsImRlZmF1bHRfMDM0IiwiZXJyb3Jfc291cmNlXzAyNyIsImRlZmF1bHRfMDYyIiwiY29tcG9uZW50X29mX3NleHAiLCJzZXhwXzAxNyIsImF0b21fMDAyIiwic2V4cF9hcmdzXzAwNSIsImF0b21fMDAyJDAiLCJhcmcwXzAxNSIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJyZXMyXzAxMyIsInJlczBfMDE2Iiwic2V4cF9vZl9jb21wb25lbnQiLCJ2XzAxOSIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJhcmcwXzAyMCIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJyZXMyXzAyNSIsImRlZmF1bHRfMDI4IiwiZGVmYXVsdF8wMzUiLCJkZWZhdWx0XzAzNiIsImRlZmF1bHRfMDM3IiwiZGVmYXVsdF8wMzgiLCJkZWZhdWx0XzA0MiIsImRlZmF1bHRfMDQ3IiwiZGVmYXVsdF8wNTIiLCJkZWZhdWx0XzA1NyIsImRlZmF1bHRfMDc1IiwidF9vZl9zZXhwIiwieF8wMzkiLCJzZXhwXzAzMyIsImFyZzFfMDMwIiwiYXJnMF8wMjkiLCJyZXMwXzAzMSIsInJlczFfMDMyIiwidCIsImZyYWdtZW50IiwicXVlcnkiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJ1c2VyaW5mbyIsInNjaGVtZSIsInNleHBfb2ZfdCIsImZyYWdtZW50XzA3NiIsInF1ZXJ5XzA2NyIsInBhdGhfMDYzIiwicG9ydF8wNTgiLCJob3N0XzA1MyIsInVzZXJpbmZvXzA0OCIsInNjaGVtZV8wNDMiLCJibmRzXzA0MCIsImFyZ18wNzgiLCJibmRzXzA0MCQwIiwiYm5kXzA3NyIsImJuZHNfMDQwJDEiLCJhcmdfMDczIiwiYXJnMV8wNjkiLCJhcmcwXzA2OCIsInJlczBfMDcwIiwicmVzMV8wNzEiLCJibmRfMDcyIiwiYXJnXzA2NSIsImJuZHNfMDQwJDIiLCJibmRfMDY0IiwiYXJnXzA2MCIsImJuZHNfMDQwJDMiLCJibmRfMDU5IiwiYXJnXzA1NSIsImJuZHNfMDQwJDQiLCJibmRfMDU0IiwiYXJnXzA1MCIsImJuZHNfMDQwJDUiLCJibmRfMDQ5IiwiYXJnXzA0NSIsImJuZHNfMDQwJDYiLCJibmRfMDQ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJpc192YWxpZF9maWVsZF9uYW1lIiwic2VlbiIsIm5hbWUiLCJhbnlfb2Zfc2V4cCIsInMiLCJsaXN0JDAiLCJ2JDAiLCJuYW1lJDEiLCJzZWVuJDIiLCJyZXZfYWNjIiwibGlzdCIsInJlc3QiLCJyZXZfYWNjJDAiLCJzZWVuJDAiLCJyZXN0JDAiLCJ2IiwibmFtZSQwIiwicmV2X2FjYyQxIiwic2VlbiQxIiwibCIsImxvZ19zIiwic2V4cCIsImxvZ19zX2FzX3N0cmluZyIsInNleHBfb2ZfdCIsImZpZWxkMl8wMTYiLCJmaWVsZDFfMDE0IiwiYXJnXzAxNyIsImJuZHNfMDEzIiwic29tZV9uYW1lXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwNCIsImFyZ18wMTUiLCJibmRzXzAxMyQwIiwidG9fc3RyaW5nIiwic2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzIiwieF8wMjIiLCJpIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsInJlczBfMDIwIiwicmVzMV8wMjEiLCJjb21wYXJlX2Nsb3NlX2V2ZW50X2NvZGUiLCJzZXhwX29mX2Nsb3NlX2V2ZW50X2NvZGUiLCJhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImNvbXBhcmUiLCJhXzAwNCIsImJfMDA1IiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhY2MiLCJsJDAiLCJlbnVtZXJhdGVfMDExIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsImwkMiIsImVudW1lcmF0ZV8wMTAiLCJhY2MkMiIsImFsbCIsIm9mX2ludCIsImNvZGUiLCJ0b19pbnQiLCJjb2RlJDAiLCJ4XzAzMSIsInhfMDMwIiwibm9ybWFsX2Nsb3N1cmUiLCJjbGllbnQiLCJoZWFydGJlYXRfY29uZmlnIiwiZGVzY3JpcHRpb24iLCJpbXBsZW1lbnRhdGlvbnMiLCJ1cmkiLCJzY2hlbWUiLCJwb3J0IiwicG9ydCQwIiwiaG9zdCIsIm1hdGNoJDEiLCJyZXMiLCJoIiwiZGVzY3JpcHRpb24kMCIsImZyb21fc2VydmVyX3ciLCJmcm9tX3NlcnZlcl9yIiwidG9fc2VydmVyX3ciLCJ0b19zZXJ2ZXJfciIsImVycm9yIiwidHJhbnNwb3J0IiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImNvbm5lY3Rpb24iLCJleG4iLCJpbXBsZW1lbnRhdGlvbnMkMCIsImV4biQxIiwiZXhuJDAiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQiLCJjbGllbnRfZXhuIiwiY3JlYXRlX2Zyb21fdXJpIiwiZXF1YWwkMCIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0Iiwic2V4cF9vZl90JDEiLCJ4XzAwNyIsImNyZWF0ZV9mcm9tX3VyaV9vcHRpb24iLCJtZXRob2Rfc3RyaW5nJDAiLCJyZXF1ZXN0Iiwib25fcHJvZ3Jlc3MiLCJvbl91cGxvYWRfcHJvZ3Jlc3MiLCJ1cmwiLCJyZXNwb25zZV90eXBlIiwibWV0aG9kX3dpdGhfYXJncyIsImhlYWRlcnMiLCJhcmdzIiwibWV0aG9kX3N0cmluZyQxIiwidXJsJDAiLCJ2YWx1ZSIsInJlc3BvbnNlIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJjb250ZW50IiwiZ2V0X2hlYWRlciIsImJvZHkiLCJib2R5JDAiLCJnZXQiLCJhcmd1bWVudHMkMCIsInJlc3AiLCJwb3N0IiwicmVhZHlfc3RhdGVfY2hhbmdlIiwiY29tcGxldGUiLCJzbGVlcCIsImQiLCJ5aWVsZCQwIiwiZXh0cmFjdF9qc19lcnJvciIsIm1zZyIsImpzX2Vycm9yIiwibWVzc2FnZXMiLCJqc19lcnJvciQwIiwicHJldHR5X3ByaW50X2V4Y2VwdGlvbiIsImVyciIsImNsYXNzaWZpY2F0aW9uIiwiZXJyJDIiLCJlcnIkMCIsImV4biQyIiwiaGQiLCJtZXNzYWdlIiwic3RhdGUiLCJ0aW1lb3V0cyIsInJ1bl9hZnRlciIsImYiLCJtcyIsImxvb3AiLCJ0IiwibmV4dF93YWtldXAiLCJuZXh0Iiwibm93IiwiZF9tcyQwIiwiZF9tcyIsImF0IiwicnVuX3RpbWVvdXQiLCJydW4iLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0X2NoaWxkX2luZGV4JDAiLCJyaWdodCIsImxlZnRfaXNfbm9uZSIsInJpZ2h0X2lzX25vbmUiLCJjcmVhdGVfZXhuIiwibnVtX2xlYXZlcyIsInJlZHVjZSIsIm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCIsInZhbGlkYXRlX2luZGV4IiwibGVuZ3RoIiwic2V0X2V4biIsImNoaWxkX2luZGV4IiwicGFyZW50IiwiZ2V0X2V4biIsInhfMDAyIiwiY29tcHV0ZV9leG4iLCJzZXhwX29mX3QiLCJzdGVwcyIsInIiLCJpbml0Iiwic2V4cF9vZl90JDAiLCJvZl9hXzAwMSIsInN0ZXBzXzAwNSIsImluaXRfMDAzIiwiYXJnXzAwNiIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidmFsdWUiLCJ0JDAiLCJhdCIsInN0ZXBzJDEiLCJpbml0JDEiLCJzdGVwcyQwIiwiaW5pdCQwIiwidCIsImNvbnN0YW50IiwiY3JlYXRlX2V4biIsInRpbWUyIiwidGltZTEiLCJ4XzAxMSIsImNyZWF0ZV9mcm9tX3NlcXVlbmNlIiwiY3JlYXRlIiwibGVuIiwibGVuZ3RoIiwidCIsInNldCIsInNldF9leG4iLCJpIiwieCIsImdldCIsImlzX3NvbWUiLCJpc19ub25lIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpdGVyIiwiZiIsInYiLCJpdGVyaSIsImJsaXQiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNyZWF0ZSIsImluZGV4IiwiZ2V0IiwidCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJzZXQiLCJibG9jayIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJrZXlzX3dpdGhfdW51c2VkX2RhdGFfMDA2IiwiZW50cnlfYnlfa2V5XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYXJnXzAwNSIsImJuZHNfMDAzJDEiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJjbGVhbnVwIiwicmVwbGFjZSIsImFkZF9leG4iLCJ4XzAxMCIsImZpbmQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsInYiLCJzZXhwX29mX3QiLCJjb25jYXQiLCJ0YWciLCJhcmcwXzAwMSIsImFyZzFfMDAyIiwic2V4cF9vZl9hIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsInJlYWxsb2MiLCJ0IiwibGVuIiwiYSIsIm5ld190IiwicmVhbGxvYyQwIiwicmVzMF8wMDUiLCJyZXMwXzAwNyIsImludmFyaWFudCIsInhfMDA5IiwiY3JlYXRlIiwiZiIsIm9mX2NvbXBhcmUiLCJvZl9lcXVhbCIsInBvbHlfZXF1YWwiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwicmVyYWlzZV93aXRoX21lc3NhZ2UiLCJtc2ciLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsInhfMDExIiwiY2hlY2siLCJ3YXRjaF9mdW4iLCJ0JDAiLCJzZXRfYXRfZnVuIiwidmFsdWVfZnVuIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsInhfMDI4IiwiZm9sZF92YWx1ZV9mdW4iLCJnb3QiLCJleHBlY3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInVwZGF0ZSQwIiwiZl9pbnZlcnNlIiwidXBkYXRlIiwiY29tcHV0ZSIsInJlc3VsdCIsImZvcmNlX2Z1bGxfY29tcHV0ZSIsImNoaWxkX2NoYW5nZWQiLCJ4XzAzMSIsImNoaWxkX2luZGV4Iiwib2xkX3ZhbHVlX29wdCIsImNoaWxkX2F0X2luZGV4IiwieF8wMDEiLCJudWxsJDAiLCJhbGFybV92YWx1ZSIsInNldF9hbGFybV92YWx1ZSIsImFsYXJtIiwic2V0X2FsYXJtIiwiYWxhcm1fdmFsdWUkMCIsImFsYXJtJDAiLCJtYWluXzAwMyIsImNoaWxkXzAwNSIsImV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fYyIsInZhbHVlXzAwOSIsInVwY29taW5nX3N0ZXBzXzAxMSIsImFsYXJtXzAxNyIsImFsYXJtX3ZhbHVlXzAxOSIsImNsb2NrXzAyMSIsImFyZ18wMTgiLCJhcmdfMDEyIiwiYXJnMV8wMTQiLCJyZXMxXzAxNiIsImJuZHNfMDAyJDMiLCJibmRzXzAwMiQ0IiwiYm5kc18wMDIkNSIsImJuZHNfMDAyJDYiLCJ4XzAyMyIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsImFkdmFuY2UiLCJ0byIsInN0ZXBzJDAiLCJhMSQwIiwiYTEiLCJzdGVwcyIsInN0ZXBzMiIsImEyIiwic3RlcF9hdCIsIm9mX2FjY18wMDIiLCJjaGlsZHJlbl8wMDgiLCJpbml0XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInhfMDEwIiwiYXRfMDA0IiwibWFpbl8wMDIiLCJhbGFybV8wMDYiLCJjbG9ja18wMDgiLCJibmRzXzAwMSQxIiwiYm5kc18wMDEkMiIsImludGVydmFsIiwiaW50ZXJ2YWwkMCIsImludGVydmFsXzAwNiIsImJhc2VfMDA0IiwiYWxhcm1fMDA4IiwiY2xvY2tfMDEwIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJpbnRlcnZhbF9mdW4iLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJzZXRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwicmhzX3Njb3BlIiwic2V0X3Joc19zY29wZSIsImxoc19jaGFuZ2UiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMkMCIsInJoc19zY29wZSQwIiwibGhzX2NoYW5nZSQwIiwib2ZfYl8wMDIiLCJtYWluXzAwNCIsImxoc19jaGFuZ2VfMDEwIiwibGhzXzAwOCIsInJoc18wMTIiLCJyaHNfc2NvcGVfMDE0IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXzAxNiIsImJuZHNfMDAzJDIiLCJibmRzXzAwMyQzIiwiYm5kc18wMDMkNCIsImJuZHNfMDAzJDUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsInhfMDE4IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzX2Z1biIsIm5vZGUiLCJyaHNfc2NvcGVfZnVuIiwibGhzX2NoYW5nZV9mdW4iLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsInhfMDE1IiwiY3VycmVudF9icmFuY2hfZnVuIiwidGVzdF9jaGFuZ2VfZnVuIiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsInhfMDEzIiwiYmVmb3JlX2Z1biIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiaXRlcmlfY2hpbGRyZW4iLCJyaHMiLCJpJDAiLCJ0ZXN0IiwibGhzIiwicmhzJDAiLCJub2RlMCIsImNoaWxkJDAiLCJjaGlsZHJlbiQxIiwiaSQxIiwibm9kZTEiLCJub2RlMCQwIiwibm9kZTIiLCJub2RlMSQwIiwibm9kZTAkMSIsIm5vZGUzIiwibm9kZTIkMCIsIm5vZGUxJDEiLCJub2RlMCQyIiwibm9kZTQiLCJub2RlMyQwIiwibm9kZTIkMSIsIm5vZGUxJDIiLCJub2RlMCQzIiwibm9kZTUiLCJub2RlNCQwIiwibm9kZTMkMSIsIm5vZGUyJDIiLCJub2RlMSQzIiwibm9kZTAkNCIsIm5vZGU2Iiwibm9kZTUkMCIsIm5vZGU0JDEiLCJub2RlMyQyIiwibm9kZTIkMyIsIm5vZGUxJDQiLCJub2RlMCQ1Iiwibm9kZTciLCJub2RlNiQwIiwibm9kZTUkMSIsIm5vZGU0JDIiLCJub2RlMyQzIiwibm9kZTIkNCIsIm5vZGUxJDUiLCJub2RlMCQ2Iiwibm9kZTgiLCJub2RlNyQwIiwibm9kZTYkMSIsIm5vZGU1JDIiLCJub2RlNCQzIiwibm9kZTMkNCIsIm5vZGUyJDUiLCJub2RlMSQ2Iiwibm9kZTAkNyIsIm5vZGU5Iiwibm9kZTgkMCIsIm5vZGU3JDEiLCJub2RlNiQyIiwibm9kZTUkMyIsIm5vZGU0JDQiLCJub2RlMyQ1Iiwibm9kZTIkNiIsIm5vZGUxJDciLCJub2RlMCQ4Iiwibm9kZTEwIiwibm9kZTkkMCIsIm5vZGU4JDEiLCJub2RlNyQyIiwibm9kZTYkMyIsIm5vZGU1JDQiLCJub2RlNCQ1Iiwibm9kZTMkNiIsIm5vZGUyJDciLCJub2RlMSQ4Iiwibm9kZTAkOSIsIm5vZGUxMSIsIm5vZGUxMCQwIiwibm9kZTkkMSIsIm5vZGU4JDIiLCJub2RlNyQzIiwibm9kZTYkNCIsIm5vZGU1JDUiLCJub2RlNCQ2Iiwibm9kZTMkNyIsIm5vZGUyJDgiLCJub2RlMSQ5Iiwibm9kZTAkMTAiLCJub2RlMTIiLCJub2RlMTEkMCIsIm5vZGUxMCQxIiwibm9kZTkkMiIsIm5vZGU4JDMiLCJub2RlNyQ0Iiwibm9kZTYkNSIsIm5vZGU1JDYiLCJub2RlNCQ3Iiwibm9kZTMkOCIsIm5vZGUyJDkiLCJub2RlMSQxMCIsIm5vZGUwJDExIiwibm9kZTEzIiwibm9kZTEyJDAiLCJub2RlMTEkMSIsIm5vZGUxMCQyIiwibm9kZTkkMyIsIm5vZGU4JDQiLCJub2RlNyQ1Iiwibm9kZTYkNiIsIm5vZGU1JDciLCJub2RlNCQ4Iiwibm9kZTMkOSIsIm5vZGUyJDEwIiwibm9kZTEkMTEiLCJub2RlMCQxMiIsIm5vZGUxNCIsIm5vZGUxMyQwIiwibm9kZTEyJDEiLCJub2RlMTEkMiIsIm5vZGUxMCQzIiwibm9kZTkkNCIsIm5vZGU4JDUiLCJub2RlNyQ2Iiwibm9kZTYkNyIsIm5vZGU1JDgiLCJub2RlNCQ5Iiwibm9kZTMkMTAiLCJub2RlMiQxMSIsIm5vZGUxJDEyIiwibm9kZTAkMTMiLCJzbG93X2dldF9jaGlsZCIsImluZGV4IiwiYXJnMV8zMDYiLCJhcmcwXzMwNSIsInJlczBfMzA3IiwicmVzMV8zMDgiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW4iLCJzZXRfbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2EiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4iLCJzZXRfbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2EiLCJvYnNlcnZlcnMiLCJzZXRfb2JzZXJ2ZXJzIiwic2V0X29sZF92YWx1ZV9vcHQiLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWEiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsInNldF9oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfcHJldl9pbl9yZWNvbXB1dGVfaGVhcCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCIsInNldF9oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0IiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJzZXRfbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJjcmVhdGVkX2luIiwic2V0X2NyZWF0ZWRfaW4iLCJwYXJlbnQwIiwic2V0X3BhcmVudDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQiLCJzZXRfcGFyZW50MV9hbmRfYmV5b25kIiwibnVtX3BhcmVudHMiLCJzZXRfbnVtX3BhcmVudHMiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzIiwic2V0X251bV9vbl91cGRhdGVfaGFuZGxlcnMiLCJjaGFuZ2VkX2F0Iiwic2V0X2NoYW5nZWRfYXQiLCJjdXRvZmYiLCJzZXRfY3V0b2ZmIiwia2luZCIsInNldF9raW5kIiwidmFsdWVfb3B0Iiwic2V0X3ZhbHVlX29wdCIsInJlY29tcHV0ZWRfYXQiLCJzZXRfcmVjb21wdXRlZF9hdCIsImlkIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luJDAiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4kMCIsIm9ic2VydmVycyQwIiwib2xkX3ZhbHVlX29wdCQwIiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwJDAiLCJoZWlnaHQkMCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlJDAiLCJjcmVhdGVkX2luJDAiLCJwYXJlbnQwJDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQkMCIsIm51bV9wYXJlbnRzJDAiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJjaGFuZ2VkX2F0JDAiLCJjdXRvZmYkMCIsImtpbmQkMCIsInZhbHVlX29wdCQwIiwicmVjb21wdXRlZF9hdCQwIiwiaWQkMCIsInN0YXRlXzAwNSIsImlkXzAwMyIsInJlY29tcHV0ZWRfYXRfMDA3IiwidmFsdWVfb3B0XzAwOSIsImtpbmRfMDExIiwiY3V0b2ZmXzAxMyIsImNoYW5nZWRfYXRfMDE1IiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc18wMTciLCJudW1fcGFyZW50c18wMTkiLCJwYXJlbnQxX2FuZF9iZXlvbmRfMDIxIiwicGFyZW50MF8wMjMiLCJjcmVhdGVkX2luXzAyNSIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXzAyNyIsImhlaWdodF8wMjkiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBfMDMxIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF8wMzMiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwXzAzNSIsImhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXyIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8wMyIsIm9sZF92YWx1ZV9vcHRfMDQxIiwib2JzZXJ2ZXJzXzA0MyIsImlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aSIsIm9uX3VwZGF0ZV9oYW5kbGVyc18wNDciLCJmb3JjZV9uZWNlc3NhcnlfMDUzIiwidXNlcl9pbmZvXzA1NSIsImNyZWF0aW9uX2JhY2t0cmFjZV8wNTciLCJhcmdfMDU4IiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImFyZ18wNDgiLCJhcmdfMDQ2IiwiYXJnXzA0NCIsImFyZ18wNDIiLCJibmRzXzAwMiQ3IiwiYXJnXzA0MCIsImJuZHNfMDAyJDgiLCJhcmdfMDM4IiwiYm5kc18wMDIkOSIsImFyZ18wMzYiLCJibmRzXzAwMiQxMCIsImFyZ18wMzQiLCJibmRzXzAwMiQxMSIsImFyZ18wMzIiLCJibmRzXzAwMiQxMiIsImFyZ18wMzAiLCJibmRzXzAwMiQxMyIsImFyZ18wMjgiLCJibmRzXzAwMiQxNCIsImJuZHNfMDAyJDE1IiwiYm5kc18wMDIkMTYiLCJibmRzXzAwMiQxNyIsImJuZHNfMDAyJDE4IiwiYm5kc18wMDIkMTkiLCJibmRzXzAwMiQyMCIsImJuZHNfMDAyJDIxIiwiYm5kc18wMDIkMjIiLCJibmRzXzAwMiQyMyIsImJuZHNfMDAyJDI0IiwiYm5kc18wMDIkMjUiLCJibmRzXzAwMiQyNiIsInNhbWUiLCJ1c2VyX2luZm8iLCJvdGhlciIsInNldF91c2VyX2luZm8iLCJhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IiwiYXR0cnMiLCJlZGdlX2lzX3N0YWxlIiwicGFyZW50IiwiaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpIiwiaXNfc3RhbGUiLCJmb3JjZV9zdGFsZSIsImZvcmNlX3N0YWxlJDAiLCJuZWVkc190b19iZV9jb21wdXRlZCIsImlzX2luX3JlY29tcHV0ZV9oZWFwIiwiaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsImdldF9wYXJlbnQiLCJpdGVyaV9wYXJlbnRzIiwiaGFzX2NoaWxkIiwiaGFzIiwiaGFzX3BhcmVudCIsInBhcmVudCQwIiwic2hvdWxkX2JlX2ludmFsaWRhdGVkIiwibGhzJDAiLCJmb2xkX29ic2VydmVycyIsImFjIiwib2JzZXJ2ZXIiLCJ4XzA1OSIsInQxJDAiLCJhXzA2MCIsImJfMDYxIiwiYV8wNzAiLCJiXzA3MSIsInBhcmVudF9pbmRleCIsIngiLCJhXzA2OCIsImJfMDY5Iiwib2JzZXJ2ZXJzX2Z1biIsInN0YXRlIiwib2JzZXJ2aW5nIiwib2xkX3ZhbHVlX29wdF9mdW4iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfZnUiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldiIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJoZWlnaHRfZnVuIiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGVfZnVuIiwiY3JlYXRlZF9pbl9mdW4iLCJwYXJlbnQwX2Z1biIsImFfMDY2IiwiYl8wNjciLCJwYXJlbnQxX2FuZF9iZXlvbmRfZnVuIiwiYV8wNjQiLCJiXzA2NSIsIm51bV9wYXJlbnRzX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVycyIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwiZXRhIiwiYV8wNjIiLCJiXzA2MyIsImNoYW5nZWRfYXRfZnVuIiwiY3V0b2ZmX2Z1biIsImtpbmRfZnVuIiwidmFsdWVfb3B0X2Z1biIsInJlY29tcHV0ZWRfYXRfZnVuIiwiaWRfZnVuIiwidW5zYWZlX3ZhbHVlIiwidmFsdWVfZXhuIiwieF8wNzIiLCJnZXRfY3V0b2ZmIiwic2V0X2N1dG9mZiQwIiwiaXNfY29uc3QiLCJvbl91cGRhdGUiLCJvbl91cGRhdGVfaGFuZGxlciIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMiLCJyZXN0JDAiLCJvbl91cGRhdGVfaGFuZGxlciQwIiwiciQwIiwiciQxIiwicmVzdCIsInNldF9raW5kJDAiLCJtYXhfbnVtX3BhcmVudHMiLCJzZXRfcGFyZW50IiwibGluayIsImFkZF9wYXJlbnQiLCJuZXdfbWF4X251bV9wYXJlbnRzIiwibWF4X251bV9jaGlsZHJlbiIsIm5ld19tYXhfbnVtX2NoaWxkcmVuIiwicmVtb3ZlX3BhcmVudCIsImxhc3RfcGFyZW50X2luZGV4Iiwic3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCIsImNoaWxkMSIsImNoaWxkMiIsInQyJDAiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJ4XzAyMCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjIiLCJ4XzAyMSIsIm9uX3VwZGF0ZV9leG4iLCJ4XzAyNCIsInByZXYkMCIsIm5leHQkMCIsInhfMDI1IiwieF8wMDIiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwiZXJyb3Jfc291cmNlXzA3OSIsInNleHBfb2Zfc3RhdHVzIiwiYXJnMV8wMDQiLCJyZXMxXzAwNiIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiIsInNldF9leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdSIsImN1cnJlbnRseV9ydW5uaW5nX25vZGUiLCJzZXRfY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSQwIiwibWFrZV9jcmVhdG9yIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW4kMSIsImFjYyIsIm1hcCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsInJlY29yZCQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV8wMDgiLCJibmRzXzAwNyIsImJuZHNfMDA3JDAiLCJzZXhwX29mX3QkMSIsIm51bV92YXJfc2V0cyIsInNldF9udW1fdmFyX3NldHMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8iLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWQiLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWQiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJzZXRfbnVtX25vZGVzX2ludmFsaWRhdGVkIiwibnVtX25vZGVzX2NyZWF0ZWQiLCJzZXRfbnVtX25vZGVzX2NyZWF0ZWQiLCJudW1fbm9kZXNfY2hhbmdlZCIsInNldF9udW1fbm9kZXNfY2hhbmdlZCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkiLCJzZXRfbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2EiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UiLCJzZXRfa2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmEiLCJ3ZWFrX2hhc2h0YmxzIiwib25seV9pbl9kZWJ1ZyIsInNldF9vbmx5X2luX2RlYnVnIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24iLCJkaXNhbGxvd2VkX29ic2VydmVycyIsIm5ld19vYnNlcnZlcnMiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzIiwiYWxsX29ic2VydmVycyIsInNldF9hbGxfb2JzZXJ2ZXJzIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJzZXRfbnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSIsImFkanVzdF9oZWlnaHRzX2hlYXAiLCJjdXJyZW50X3Njb3BlIiwic2V0X2N1cnJlbnRfc2NvcGUiLCJzdGFiaWxpemF0aW9uX251bSIsInNldF9zdGFiaWxpemF0aW9uX251bSIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCIsInN0YXR1cyIsInNldF9zdGF0dXMiLCJudW1fdmFyX3NldHMkMCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQxIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDIiLCJudW1fbm9kZXNfcmVjb21wdXRlZCQwIiwibnVtX25vZGVzX2ludmFsaWRhdGVkJDAiLCJudW1fbm9kZXNfY3JlYXRlZCQwIiwibnVtX25vZGVzX2NoYW5nZWQkMCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkkMCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5JDAiLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlJDAiLCJ3ZWFrX2hhc2h0YmxzJDAiLCJvbmx5X2luX2RlYnVnJDAiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQwIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uJDAiLCJkaXNhbGxvd2VkX29ic2VydmVycyQwIiwibmV3X29ic2VydmVycyQwIiwiZmluYWxpemVkX29ic2VydmVycyQwIiwiYWxsX29ic2VydmVycyQwIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMkMCIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDAiLCJhZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJyZWNvbXB1dGVfaGVhcCQwIiwiY3VycmVudF9zY29wZSQwIiwic3RhYmlsaXphdGlvbl9udW0kMCIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQwIiwic3RhdHVzJDAiLCJtYWtlX2NyZWF0b3IkMCIsInN0YXR1c19mdW4iLCJzdGFiaWxpemF0aW9uX251bV9mdW4iLCJjdXJyZW50X3Njb3BlX2Z1biIsInJlY29tcHV0ZV9oZWFwX2Z1biIsImFkanVzdF9oZWlnaHRzX2hlYXBfZnVuIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZnVuIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZnVuIiwiYWxsX29ic2VydmVyc19mdW4iLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2Z1biIsIm5ld19vYnNlcnZlcnNfZnVuIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZnVuIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2Z1biIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uX2Z1biIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwib25seV9pbl9kZWJ1Z19mdW4iLCJ3ZWFrX2hhc2h0YmxzX2Z1biIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZiIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2Z1biIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnlfZiIsIm51bV9ub2Rlc19jaGFuZ2VkX2Z1biIsIm51bV9ub2Rlc19jcmVhdGVkX2Z1biIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZF9mdW4iLCJudW1fbm9kZXNfcmVjb21wdXRlZF9mdW4iLCJudW1fdmFyX3NldHNfZnVuIiwic3RhdHVzX2dlbiIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQxIiwiY29tcGlsZV9hY2MkMiIsInN0YWJpbGl6YXRpb25fbnVtX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJjdXJyZW50X3Njb3BlX2dlbiIsImNvbXBpbGVfYWNjJDQiLCJyZWNvbXB1dGVfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ1IiwiYWRqdXN0X2hlaWdodHNfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ2IiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZ2VuIiwiY29tcGlsZV9hY2MkNyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJhbGxfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDkiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEwIiwibmV3X29ic2VydmVyc19nZW4iLCJjb21waWxlX2FjYyQxMSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwib25seV9pbl9kZWJ1Z19nZW4iLCJjb21waWxlX2FjYyQxNiIsIndlYWtfaGFzaHRibHNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlX2ciLCJjb21waWxlX2FjYyQxOCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2dlbiIsImNvbXBpbGVfYWNjJDE5IiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9nIiwiY29tcGlsZV9hY2MkMjAiLCJudW1fbm9kZXNfY2hhbmdlZF9nZW4iLCJjb21waWxlX2FjYyQyMSIsIm51bV9ub2Rlc19jcmVhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIzIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjQiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMyIsImNvbXBpbGVfYWNjJDI1IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDQiLCJjb21waWxlX2FjYyQyNiIsIm51bV92YXJfc2V0c19nZW4iLCJjcmVhdGUkMSIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQyIiwic3RhdHVzXzAxNSIsInN0YWJpbGl6YXRpb25fbnVtXzAxOSIsImN1cnJlbnRfc2NvcGVfMDIxIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfMDI3IiwiYWRqdXN0X2hlaWdodHNfaGVhcF8wMjUiLCJyZWNvbXB1dGVfaGVhcF8wMjMiLCJudW1fYWN0aXZlX29ic2VydmVyc18wMjkiLCJhbGxfb2JzZXJ2ZXJzXzAzMSIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfMDQzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fMDQxIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXzAzOSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzXzAzNyIsIm5ld19vYnNlcnZlcnNfMDM1IiwiZmluYWxpemVkX29ic2VydmVyc18wMzMiLCJvbmx5X2luX2RlYnVnXzA0NSIsIndlYWtfaGFzaHRibHNfMDQ3Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV8wIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfMDUxIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV8wIiwibnVtX25vZGVzX2NoYW5nZWRfMDU1IiwibnVtX25vZGVzX2NyZWF0ZWRfMDU3IiwibnVtX25vZGVzX2ludmFsaWRhdGVkXzA1OSIsIm51bV9ub2Rlc19yZWNvbXB1dGVkXzA2MSIsIm51bV92YXJfc2V0c18wNjciLCJhcmdfMDY4IiwiYm5kc18wMTQiLCJhcmdfMDY2IiwiYm5kc18wMTQkMCIsImFyZ18wNjQiLCJibmRzXzAxNCQxIiwiYXJnXzA2MiIsImJuZHNfMDE0JDIiLCJhcmdfMDYwIiwiYm5kc18wMTQkMyIsImJuZHNfMDE0JDQiLCJibmRzXzAxNCQ1IiwiYm5kc18wMTQkNiIsImJuZHNfMDE0JDciLCJibmRzXzAxNCQ4IiwiYm5kc18wMTQkOSIsImJuZHNfMDE0JDEwIiwiYm5kc18wMTQkMTEiLCJibmRzXzAxNCQxMiIsImJuZHNfMDE0JDEzIiwiYm5kc18wMTQkMTQiLCJibmRzXzAxNCQxNSIsImJuZHNfMDE0JDE2IiwiYm5kc18wMTQkMTciLCJibmRzXzAxNCQxOCIsImJuZHNfMDE0JDE5IiwiYm5kc18wMTQkMjAiLCJibmRzXzAxNCQyMSIsImJuZHNfMDE0JDIyIiwiYm5kc18wMTQkMjMiLCJibmRzXzAxNCQyNCIsImJuZHNfMDE0JDI1IiwiZmlyZWRfYWxhcm1fdmFsdWVzIiwic2V0X2ZpcmVkX2FsYXJtX3ZhbHVlcyIsImhhbmRsZV9maXJlZCIsInRpbWluZ193aGVlbCIsImZpcmVkX2FsYXJtX3ZhbHVlcyQwIiwiaGFuZGxlX2ZpcmVkJDAiLCJub3ckMCIsInRpbWluZ193aGVlbCQwIiwibWFrZV9jcmVhdG9yJDEiLCJ0aW1pbmdfd2hlZWxfZnVuIiwibm93X2Z1biIsImhhbmRsZV9maXJlZF9mdW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZnVuIiwidGltaW5nX3doZWVsX2dlbiIsIm5vd19nZW4iLCJoYW5kbGVfZmlyZWRfZ2VuIiwiZmlyZWRfYWxhcm1fdmFsdWVzX2dlbiIsImNyZWF0ZSQyIiwibWFwJDMiLCJpdGVyJDMiLCJmb2xkJDMiLCJtYXBfcG9seSQxIiwiZm9yX2FsbCQzIiwiZXhpc3RzJDMiLCJ0b19saXN0JDMiLCJpdGVyJDQiLCJmb2xkJDQiLCJmb3JfYWxsJDQiLCJleGlzdHMkNCIsInRvX2xpc3QkNCIsIm1hcCQ0Iiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQxIiwic2V4cF9vZl90JDMiLCJub3dfMDcyIiwidGltaW5nX3doZWVsXzA3MCIsImZpcmVkX2FsYXJtX3ZhbHVlc18wNzYiLCJhcmdfMDc3IiwiYm5kc18wNjkiLCJhcmdfMDc1IiwiYm5kc18wNjkkMCIsImFyZ18wNzMiLCJibmRzXzA2OSQxIiwiYXJnXzA3MSIsImJuZHNfMDY5JDIiLCJpbnZhcmlhbnQkMSIsIm5vdyQxIiwiY2xvY2siLCJ0aW1pbmdfd2hlZWxfbGVuZ3RoIiwibnVtX3N0YWJpbGl6ZXMiLCJpdGVyX29ic2VydmVycyIsImRpcmVjdGx5X29ic2VydmVkIiwiaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyIsInRfb2Zfc2V4cCIsInhfMDg1Iiwic2V4cF8wODQiLCJhcmcxXzA4MSIsImFyZzBfMDgwIiwicmVzMF8wODIiLCJyZXMxXzA4MyIsInBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhciIsInNleHBfb2ZfdCQ0IiwibWF4X251bV9wYXJlbnRzXzA4NyIsImFyZ18wOTAiLCJhcmcxXzA5MiIsImFyZzBfMDkxIiwicmVzMF8wOTMiLCJyZXMxXzA5NCIsImJuZHNfMDg2IiwiYXJnXzA4OCIsImJuZHNfMDg2JDAiLCJzdGF0cyIsIm51bV9uZWNlc3Nhcnlfbm9kZXMiLCJtYXhfbnVtX3BhcmVudHMkMCIsIm51bV9ub2Rlc19ieV9udW1fcGFyZW50cyIsIm51bV9ub2RlcyIsImFtX3N0YWJpbGl6aW5nIiwicmFpc2VkX2V4biIsImludmFyaWFudCQyIiwiaW50ZXJuYWxfb2JzZXJ2ZXIiLCJ4XzA5NSIsInBhY2tlZCIsImVuc3VyZV9ub3Rfc3RhYmlsaXppbmciLCJhbGxvd19pbl91cGRhdGVfaGFuZGxlciIsImJhY2t0cmFjZSQwIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24kMSIsInJlbW92ZV9jaGlsZHJlbiIsInJlbW92ZV9jaGlsZCIsImNoZWNrX2lmX3VubmVjZXNzYXJ5IiwiYmVjYW1lX3VubmVjZXNzYXJ5IiwicCIsInUiLCJyZW1vdmVfYWxhcm0iLCJpbnZhbGlkYXRlX25vZGUiLCJpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmgiLCJyZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiZmlyc3Rfbm9kZV9vbl9yaHMiLCJuZXdfc2NvcGUiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSQxIiwiZXhwZXJ0IiwiYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oIiwid2FzX25lY2Vzc2FyeSIsInhfMDk2IiwiYmVjYW1lX25lY2Vzc2FyeSIsInJ1bl93aXRoX3Njb3BlIiwic2NvcGUiLCJzYXZlZCIsImV4biQwIiwid2l0aGluX3Njb3BlIiwiY2hhbmdlX2NoaWxkIiwib2xkX2NoaWxkIiwibmV3X2NoaWxkIiwib2xkX2NoaWxkJDAiLCJhZGRfYWxhcm0iLCJyZWNvbXB1dGUiLCJtYXliZV9jaGFuZ2VfdmFsdWUiLCJvbGRfcmhzIiwib2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsImNvcHlfY2hpbGQiLCJvbmx5X2ZyZWV6ZV93aGVuIiwiZWxzZSQwIiwidGhlbiIsImRlc2lyZWRfYnJhbmNoIiwibWFpbiQxIiwib2xkX3JocyQwIiwicmhzJDEiLCJyaHMkMiIsIm4xIiwiY2xvY2skMCIsImF0JDAiLCJjbG9jayQxIiwiY2hpbGQkMSIsInN0ZXBfZnVuY3Rpb24iLCJzdGVwX2Z1bmN0aW9uX3ZhbHVlIiwiYXQkMSIsIm4yIiwibjEkMCIsIm4zIiwibjIkMCIsIm4xJDEiLCJmJDIiLCJuNCIsIm4zJDAiLCJuMiQxIiwibjEkMiIsImYkMyIsIm41IiwibjQkMCIsIm4zJDEiLCJuMiQyIiwibjEkMyIsImYkNCIsIm42IiwibjUkMCIsIm40JDEiLCJuMyQyIiwibjIkMyIsIm4xJDQiLCJmJDUiLCJuNyIsIm42JDAiLCJuNSQxIiwibjQkMiIsIm4zJDMiLCJuMiQ0IiwibjEkNSIsImYkNiIsIm44IiwibjckMCIsIm42JDEiLCJuNSQyIiwibjQkMyIsIm4zJDQiLCJuMiQ1IiwibjEkNiIsImYkNyIsIm45IiwibjgkMCIsIm43JDEiLCJuNiQyIiwibjUkMyIsIm40JDQiLCJuMyQ1IiwibjIkNiIsIm4xJDciLCJmJDgiLCJuMTAiLCJuOSQwIiwibjgkMSIsIm43JDIiLCJuNiQzIiwibjUkNCIsIm40JDUiLCJuMyQ2IiwibjIkNyIsIm4xJDgiLCJmJDkiLCJuMTEiLCJuMTAkMCIsIm45JDEiLCJuOCQyIiwibjckMyIsIm42JDQiLCJuNSQ1IiwibjQkNiIsIm4zJDciLCJuMiQ4IiwibjEkOSIsImYkMTAiLCJuMTIiLCJuMTEkMCIsIm4xMCQxIiwibjkkMiIsIm44JDMiLCJuNyQ0IiwibjYkNSIsIm41JDYiLCJuNCQ3IiwibjMkOCIsIm4yJDkiLCJuMSQxMCIsImYkMTEiLCJuMTMiLCJuMTIkMCIsIm4xMSQxIiwibjEwJDIiLCJuOSQzIiwibjgkNCIsIm43JDUiLCJuNiQ2IiwibjUkNyIsIm40JDgiLCJuMyQ5IiwibjIkMTAiLCJuMSQxMSIsImYkMTIiLCJuMTQiLCJuMTMkMCIsIm4xMiQxIiwibjExJDIiLCJuMTAkMyIsIm45JDQiLCJuOCQ1IiwibjckNiIsIm42JDciLCJuNSQ4IiwibjQkOSIsIm4zJDEwIiwibjIkMTEiLCJuMSQxMiIsImYkMTMiLCJuMTUiLCJuMTQkMCIsIm4xMyQxIiwibjEyJDIiLCJuMTEkMyIsIm4xMCQ0IiwibjkkNSIsIm44JDYiLCJuNyQ3IiwibjYkOCIsIm41JDkiLCJuNCQxMCIsIm4zJDExIiwibjIkMTIiLCJuMSQxMyIsImYkMTQiLCJjaGlsZF9pbmRleCQwIiwidSQwIiwiY2FuX3JlY29tcHV0ZV9ub3ciLCJiIiwiaiIsInJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbiIsInhfMDk3IiwidW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSIsImRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMiLCJvYnNlcnZlcl9maW5hbGl6ZXIiLCJjcmVhdGVfb2JzZXJ2ZXIiLCJzaG91bGRfZmluYWxpemUiLCJhZGRfbmV3X29ic2VydmVycyIsIm9sZF9hbGxfb2JzZXJ2ZXJzIiwib2xkX29ic2VydmVycyIsIm9ic2VydmVyX3ZhbHVlX2V4biIsInhfMDk4Iiwib2JzZXJ2ZXJfdmFsdWUiLCJub2RlX29uX3VwZGF0ZSIsIm9ic2VydmVyX29uX3VwZGF0ZV9leG4iLCJzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyIsInNldF92YXIiLCJyZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMiLCJ3ZWFrX2hhc2h0YmwiLCJzdGFiaWxpemVfc3RhcnQiLCJzdGFiaWxpemVfZW5kIiwibWF0Y2gkMCIsIm5vZGVfdXBkYXRlJDAiLCJyYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiIsInJhaXNlZCIsInN0YWJpbGl6ZSIsInNleHBfb2ZfdCQ1IiwiZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIiwiY3JlYXRlX25vZGVfaW4iLCJjcmVhdGVfbm9kZSIsImNyZWF0ZV9ub2RlX3RvcCIsImNyZWF0ZV92YXIiLCJ1c2VfY3VycmVudF9zY29wZSIsImNvbnN0JDAiLCJtYXAkNSIsIm1hcDIiLCJib3RoIiwibWFwMyIsIm1hcDQiLCJtYXA1IiwibWFwNiIsIm1hcDciLCJtYXA4IiwibWFwOSIsIm1hcDEwIiwibWFwMTEiLCJtYXAxMiIsIm1hcDEzIiwibWFwMTQiLCJtYXAxNSIsInByZXNlcnZlX2N1dG9mZiIsImlucHV0Iiwib3V0cHV0IiwiZGVwZW5kX29uIiwibmVjZXNzYXJ5X2lmX2FsaXZlIiwiYmluZDIiLCJ2MSIsInYyIiwiYmluZDMiLCJ2MyIsImJpbmQ0IiwidjQiLCJpZiQwIiwibGF6eV9mcm9tX2Z1biIsImRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpeiIsIm1lbW9pemVfZnVuX2J5X2tleSIsImhhc2hhYmxlIiwicHJvamVjdF9rZXkiLCJpbml0aWFsX3NpemUiLCJ0YWJsZSIsImtleSIsImIkMCIsImFsbCIsIm9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCIsIm51bV9pbnZhbGlkIiwiYWNjdW0iLCJ4JDAiLCJmX2ludmVyc2UkMCIsImF0X2xlYXN0X2tfb2YiLCJib29sX3RvX2ludCIsIm51bV90cnVlIiwiZXhpc3RzJDUiLCJmb3JfYWxsJDUiLCJzdW0iLCJ6ZXJvIiwic3ViIiwib3B0X3N1bSIsInN1bV9pbnQiLCJzdW1fZmxvYXQiLCJzZXRfZnJlZXplIiwidGltZSIsImFmdGVyIiwic3BhbiIsIm5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IiwiYmFzZSIsInZhbHVlX2F0IiwiaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiIsImFkdmFuY2VfY2xvY2siLCJtYWluJDIiLCJjcmVhdGVfY2xvY2siLCJ0aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQiLCJjcmVhdGUkMyIsIkNvbmZpZyIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5IiwiZXhwZXJ0X2tpbmRfb2Zfbm9kZSIsInhfMDk5IiwiY3JlYXRlJDQiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biIsImN1cnJlbnQiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8iLCJ4XzEwMSIsInhfMTAwIiwiYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfJDAiLCJ4XzEwMyIsInhfMTAyIiwibWFrZV9zdGFsZSQwIiwiZV9vcHQiLCJpbnZhbGlkYXRlIiwiYWRkX2RlcGVuZGVuY3kiLCJkZXAiLCJyZW1vdmVfZGVwZW5kZW5jeSIsImVkZ2UiLCJlZGdlX2luZGV4IiwibGFzdF9lZGdlIiwibGFzdF9lZGdlX2luZGV4Iiwib25fY2hhbmdlIiwicmVkdWNlIiwicmVkdWNlciIsImxldmVsX2JpdHMiLCJjcmVhdGVfaW50ZXJuYWwiLCJkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCIsInNleHBfb2Zfc3RhdGVfd2l0bmVzcyIsIndpdGhpbiIsInBhY2siLCJyZXR1cm4kMCIsIm1hcDIkMCIsIm1hcDMkMCIsIm1hcDQkMCIsIm1hcDUkMCIsIm1hcDYkMCIsIm1hcDckMCIsIm1hcDgkMCIsIm1hcDkkMCIsIm1hcDEwJDAiLCJtYXAxMSQwIiwibWFwMTIkMCIsIm1hcDEzJDAiLCJtYXAxNCQwIiwibWFwMTUkMCIsImJpbmQyJDAiLCJiaW5kMyQwIiwiYmluZDQkMCIsInN5bWJvbF9tYXAiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDAiLCJsYXp5X2Zyb21fZnVuJDAiLCJtZW1vaXplX2Z1biIsImFycmF5X2ZvbGQkMCIsInJlZHVjZV9iYWxhbmNlZCIsInJlcGxhY2UiLCJ4XzAxNyIsImRpc2FsbG93X2Z1dHVyZV91c2UkMCIsImluY3Jfc3RhdGUkMSIsImFsYXJtX3ByZWNpc2lvbiIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyIsInN0YXJ0JDAiLCJhbGFybV9wcmVjaXNpb24kMCIsIndhdGNoX25vdyIsImFkdmFuY2VfY2xvY2tfYnkiLCJmcmVlemUkMCIsIndoZW4iLCJkZXBlbmRfb24kMCIsInN0YWJpbGl6ZSQwIiwiYW1fc3RhYmlsaXppbmckMCIsIm9mX2FfMDE4IiwiYXJnMF8wMTkiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwibm9kZV92YWx1ZSIsInNleHBfb2ZfdCQ2IiwiYm90aCQwIiwieDEiLCJ4MiIsIm1hcDIkMSIsIm1hcDMkMSIsIm1hcDQkMSIsIm1hcDUkMSIsIm1hcDYkMSIsIm1hcDckMSIsIm1hcDgkMSIsIm1hcDkkMSIsIm1hcDEwJDEiLCJtYXAxMSQxIiwibWFwMTIkMSIsIm1hcDEzJDEiLCJtYXAxNCQxIiwibWFwMTUkMSIsImJpbmQyJDEiLCJiaW5kMyQxIiwiYmluZDQkMSIsIndlYWtfbWVtb2l6ZV9mdW4iLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUkMCIsImNvbnN0JDEiLCJyZXR1cm4kMSIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1IiwiZGVidWciLCJub19pbnN0cnVtZW50YXRpb24iLCJmIiwid2l0aF9vbGQiLCJpbnN0cnVtZW50YXRpb24iLCJpIiwib2xkIiwiYSIsImIiLCJjdXRvZmYiLCJtYXAiLCJkYXRhX2VxdWFsIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiY3VyIiwib2xkJDAiLCJhY2MiLCJjaGFuZ2UiLCJrZXkiLCJuZXckMCIsInVub3JkZXJlZF9mb2xkIiwidXBkYXRlIiwic3BlY2lhbGl6ZWRfaW5pdGlhbCIsImluaXQiLCJhZGQiLCJyZW1vdmUiLCJmaW5hbGl6ZSIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJvbGRfb3V0Iiwib2xkX2luIiwiaW5pdCQwIiwibmV3JDEiLCJpbml0aWFsIiwidW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHMiLCJpbmNyX21hcCIsInVwZGF0ZSQxIiwib3V0ZXJfa2V5IiwiaW5uZXJfa2V5Iiwib2xkX2lubmVyX21hcCIsIm5ld19pbm5lcl9tYXAiLCJkaWZmIiwiZGF0YV9yZW1vdmVkIiwiZGF0YV9hZGRlZCIsImlubmVyX21hcCIsImRhdGEiLCJ3aXRoX2NvbXBhcmF0b3IiLCJnZXRfY29tcGFyYXRvciIsIngiLCJ3aXRoX2NvbXBhcmF0b3IkMCIsIm9mX3NldCIsInNldCIsImNvbXBhcmF0b3IiLCJvbGRfaW5wdXQiLCJvbGRfb3V0cHV0IiwibmV3X2lucHV0IiwibmV3X291dHB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJnZW5lcmljX21hcGkiLCJ3aXRuZXNzIiwiaW5wdXQiLCJyZXMiLCJvdXRwdXRfZGF0YSIsIm1hcGkiLCJmaWx0ZXJfbWFwaSIsImZpbHRlcl9tYXAiLCJ3aXRoX29sZDIiLCJpMSIsImkyIiwiYTEiLCJhMiIsInVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmEiLCJleHRyYSIsImV4dHJhX2NoYW5nZWQiLCJleHRyYV9lcXVhbCIsIm5ld19leHRyYSIsIm9sZF9leHRyYSIsImFjYyQwIiwibWFwaV9jb3VudCIsIm5ld19rZXkiLCJuIiwicHJldl9rZXkiLCJtYXBfY291bnQiLCJtaW5faGVscGVyIiwibWluIiwibWF4X2hlbHBlciIsIm1heCIsImJvdW5kc19oZWxwZXIiLCJtYXBpX21pbiIsIm1hcGlfbWF4IiwibWFwaV9ib3VuZHMiLCJtYXBfbWluIiwibWFwX21heCIsIm1pbl92YWx1ZSIsIm1heF92YWx1ZSIsIm1hcF9ib3VuZHMiLCJ2YWx1ZV9ib3VuZHMiLCJtZXJnZV9zaGFyZWRfaW1wbCIsIm5ld19sZWZ0X21hcCIsIm5ld19yaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0Iiwib2xkX3JpZ2h0X21hcCIsIm9sZF9sZWZ0X21hcCIsIm9sZF9sZWZ0X21hcCQwIiwibGVmdF9kaWZmIiwicmlnaHRfZGlmZiIsInJpZ2h0X2tleSIsImxlZnRfa2V5IiwiZGlmZl9lbGVtZW50Iiwia2V5JDAiLCJuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJyaWdodF9kYXRhX29wdCQwIiwibGVmdF9kYXRhX29wdCIsInJpZ2h0X2RpZmYkMCIsImxlZnRfZGlmZiQwIiwicmlnaHRfZGF0YV9vcHQkMiIsImxlZnRfZGF0YV9vcHQkMCIsInkiLCJvdXRwdXRfZGF0YV9vcHQiLCJ5JDAiLCJtZXJnZV9ib3RoX3NvbWUiLCJvdXRfZXF1YWwiLCJlbXB0eSIsImxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IiwibGVmdF9kYXRhIiwicmlnaHRfZGF0YSIsInByZXZfb3V0IiwicHJldl9vdXQkMCIsImdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3IiLCJsaHMiLCJpbmNyZW1lbnRhbF9zdGF0ZSIsImVtcHR5X21hcCIsInByZXZfbWFwIiwicHJldl9ub2RlcyIsInJlc3VsdCIsIm9uX2lubmVyX2NoYW5nZSIsIm9wdCIsImxoc19jaGFuZ2UiLCJuZXdfbm9kZXMiLCJub2RlcyIsImNoYW5nZWQiLCJkZXAiLCJub2RlIiwibm9kZXMkMCIsIm5vZGUkMCIsIm5vZGUkMSIsImMiLCJ1c2VyX2Z1bmN0aW9uX2RlcCIsImZpbHRlcl9tYXBpJDAiLCJtYXBpJDAiLCJtYXAkMCIsImZpbHRlcl9tYXAkMCIsIm1lcmdlJDAiLCJtYXAxIiwibWFwMiIsInVuemlwX21hcGkiLCJsZWZ0X3Jlc3VsdF9lcXVhbCIsInJpZ2h0X3Jlc3VsdF9lcXVhbCIsInBhaXIiLCJkYXRhX2VxdWFsJDAiLCJsZWZ0X3Jlc3VsdF9lcXVhbCQwIiwicmlnaHRfcmVzdWx0X2VxdWFsJDAiLCJsZWZ0X2FjYyIsImxlZnRfcmVzdWx0IiwicmlnaHRfYWNjIiwicmlnaHRfcmVzdWx0IiwiaW5wdXRfY2hhbmdlIiwibGVmdCQwIiwibCIsInJpZ2h0JDAiLCJyIiwicmlnaHQiLCJsZWZ0IiwicHJldiIsInByZXZfYiIsInByZXZfYSIsIm5ld19iIiwibmV3X2EiLCJlbGVtZW50IiwidW56aXAiLCJ1bnppcF9tYXBpJDAiLCJyaWdodF9kZXAiLCJsZWZ0X2RlcCIsInJpZ2h0X2luY3IiLCJsZWZ0X2luY3IiLCJsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwIiwicmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAiLCJrZXlzIiwicGFydGl0aW9uX21hcGkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsInBhcnRpdGlvbl9tYXBpJDAiLCJmbGF0dGVuIiwic3RhdGUiLCJpbmNyIiwiam9pbiIsIm1hcF9pbmNyIiwicmVzdWx0X21hcCIsIm9sZF9tYXBfb2ZfaW5jcnMiLCJjdXJyZW50X2RlcGVuZGVuY2llcyIsImFkZF9zdWJub2RlIiwiZGF0YV9ub2RlIiwibmV3X2RlcCIsInJlbW92ZV9zdWJub2RlIiwibWFwX29mX2luY3JzIiwibmV3X2RlcGVuZGVuY3lfbWFwIiwiZGF0YV9ub2RlJDAiLCJzZXBhcmF0ZSIsImlucHV0X21hcCIsIm91dHB1dF9tYXBfbm9kZSIsIm1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwXyIsImlucHV0X21hcF9jaGFuZ2VkIiwiZGVwZW5kZW5jeSIsInByZXZfaW5wdXRfbWFwIiwib3V0cHV0X21hcCIsImV4cGVydF9ub2RlcyIsIm9sZF9ub2RlIiwic3VicmFuZ2UiLCJyYW5nZSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heWJlX2JvdW5kX2VxdWFsIiwiYV8wMDgiLCJiXzAwOSIsImFfMDEwIiwiYl8wMTEiLCJhXzAxMiIsImJfMDEzIiwicmFuZ2VfaXNfZW1wdHkiLCJtaW4kMCIsIm1heCQwIiwibWF4JDEiLCJtaW4kMSIsInJhbmdlX2luY2x1ZGVzIiwicmFuZ2UkMCIsImZyb21fc2NyYXRjaCIsIm9sZF9yYW5nZSIsIm9sZF9taW4iLCJvbGRfbWFwIiwib2xkX21heCIsIm9sZF9yZXMiLCJvbGRfbWF4JDAiLCJwYXJhbSIsImFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uIiwib3V0c2lkZSIsIm91dHNpZGUkMCIsIm91dHNpZGVfY3V0b2ZmIiwid2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlIiwid2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSIsIm1hcF9hcHBlbmRfZXhuIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJvbGRfbWluJDAiLCJvbGRfbWluJDEiLCJvbGRfbWF4JDEiLCJ3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSIsInJla2V5Iiwib3V0ZXJfY29tcGFyYXRvciIsImFkZHMiLCJvdXRwdXQkMCIsIm5ld19lbnRyeSIsImluZGV4X2J5aSIsImluZGV4IiwiaW5uZXJfY29tcGFyYXRvciIsIm91dGVyX21hcCIsImlubmVyX21hcCQwIiwiaW5kZXhfYnkiLCJpc19rbm93biIsInRvX29wdGlvbiIsImZpbmRfa2V5X3JhbmdlX2xpbmVhciIsImZyb20iLCJ0byIsImxlbiIsImJlZ2luX2tleSIsImVuZF9rZXkiLCJmaW5kX2tleXMiLCJmb2xkIiwic3RhcnRfcG9zIiwiYWR2YW5jZV9wb3MiLCJwb3MiLCJiZWdpbl9rZXkkMCIsImVuZF9rZXkkMCIsImZpbmRfb2Zmc2V0IiwiY2hhbmdlZF9rZXkiLCJyYW5rIiwiY29tcGFyZV9rZXkiLCJzYW1lX2tleSIsInByb2Nlc3MiLCJuZXdfbWFwIiwib2xkX3JhbmsiLCJvbGRfa2V5Iiwib2xkX3JhbmskMCIsImRpZmZfa2V5Iiwib2xkX3JhbmskMSIsIm9sZCQxIiwidXBwZXJfYm91bmQiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kJDAiLCJsb3dlcl9ib3VuZCQwIiwic3VicmFuZ2UkMCIsInN1YnJhbmdlX2J5X3JhbmsiLCJmaW5kX2tleV9yYW5nZSIsImVuZF9rZXlfb3B0JDAiLCJvbGRfdG8iLCJvbGRfZnJvbSIsInJhbmdlX29mZnNldF9iZWdpbiIsInJhbmdlX29mZnNldF9lbmQiLCJhZGp1c3RfYW5kX29mZnNldCIsImJ5JDEiLCJrZXkkMSIsImJ5JDIiLCJieSIsImNsb3Nlc3RfZGlyIiwiYnkkMCIsIm9mZnNldF9lbmQiLCJvZmZzZXRfYmVnaW4iLCJtYXBfb2Zmc2V0X2VuZCIsIm1hcF9vZmZzZXRfYmVnaW4iLCJlbmRfa2V5X29wdCQyIiwiYmVnaW5fa2V5X29wdCIsIm1hcF9vZmZzZXRfYmVnaW4kMCIsImVuZF9rZXlfb3B0IiwiYmVnaW5fa2V5X29wdCQwIiwic3ltYm9sIiwiYm91bmQiLCJyZXR1cm4kMCIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxNCIsImxiIiwicGF0dGVybl9zeW50YXhfMDE1IiwidSIsInBhdHRlcm5fc3ludGF4XzAxNiIsInViIiwicGF0dGVybl9zeW50YXhfMDE3IiwibGV0X3N5bnRheF8wMjIiLCJsJDAiLCJwYXR0ZXJuX3N5bnRheF8wMTgiLCJsYiQwIiwicGF0dGVybl9zeW50YXhfMDE5IiwibGV0X3N5bnRheF8wMjYiLCJ1JDAiLCJwYXR0ZXJuX3N5bnRheF8wMjAiLCJ1YiQwIiwicGF0dGVybl9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjkiLCJ0cmFuc3Bvc2UiLCJrMl9jb21wYXJhdG9yIiwibSIsImsxX2NvbXBhcmF0b3IiLCJrMSIsImsyIiwidmFsdWUiLCJhY2NfaW5uZXIiLCJhY2NfaW5uZXIkMCIsImNvbGxhcHNlX2J5IiwibWVyZ2Vfa2V5cyIsImNvbGxhcHNlIiwiaW5uZXJfY29tcGFyYXRvciQwIiwiZXhwYW5kIiwiY291bnRpIiwiY291bnQiLCJleGlzdHNpIiwiZXhpc3RzIiwic3VtIiwiR3JvdXAiLCJ2IiwiZm9yX2FsbGkiLCJmb3JfYWxsIiwidW5vcmRlcmVkX2ZvbGQkMCIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzJDAiLCJjcmVhdGUiLCJzZWxmIiwidXBkYXRlcl9ub2RlIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJpbmZvX3Blcl9rZXkiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsIm1hdGNoJDAiLCJzYXZlZF92YWx1ZSIsIm1hdGNoJDIiLCJtYXRjaCQzIiwidiQwIiwibWF0Y2gkNCIsInYkMSIsIm1hdGNoJDUiLCJ2JDIiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJjb250ZW50c19iaWdzdHIiLCJjcmVhdGUkMCIsImdldF9kb3dubG9hZCIsImJ1dHRvbl90ZXh0IiwiZW5hYmxlZCIsIm9uX2NsaWNrIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMDMiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wMTkiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInhfMDA0IiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwic2V4cF9vZl90Iiwib2ZfYV8wMDUiLCJyaWdodF8wMTMiLCJib3R0b21fMDExIiwibGVmdF8wMDkiLCJ0b3BfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwidjQiLCJ2MyIsInYyIiwidjEiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwicG9zJDAiLCJwb3MkMSIsInBvcyQyIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X3RvcCIsInZfbGVmdCIsInZfYm90dG9tIiwidl9yaWdodCIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMTUiLCJiXzAxNiIsIm4iLCJuJDAiLCJuJDEiLCJyaWdodCQwIiwiYm90dG9tJDAiLCJsZWZ0JDAiLCJ0b3AkMCIsIm1ha2VfY3JlYXRvciIsInRvcF9mdW4iLCJsZWZ0X2Z1biIsImJvdHRvbV9mdW4iLCJyaWdodF9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJ0b3BfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImxlZnRfZ2VuIiwiY29tcGlsZV9hY2MkMiIsImJvdHRvbV9nZW4iLCJjb21waWxlX2FjYyQzIiwicmlnaHRfZ2VuIiwiYWNjIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwibWFwJDEiLCJ0IiwiZiIsImludF9oZWlnaHQiLCJpbnRfd2lkdGgiLCJmbG9hdF9oZWlnaHQiLCJmbG9hdF93aWR0aCIsInJvdW5kX2Zsb2F0X3JlY3QiLCJyb3VuZCIsInJvd3Nfb3JfY29sdW1uc19vZl9zZXhwIiwic2V4cF8wMjAiLCJzZXhwX29mX3Jvd3Nfb3JfY29sdW1ucyIsImdyb3VwJDAiLCJiaW5fc2hhcGVfcm93c19vcl9jb2x1bW5zIiwiYmluX3NpemVfcm93c19vcl9jb2x1bW5zIiwiYmluX3dyaXRlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZXJfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zJDAiLCJiaW5fcmVhZGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yb3dzX29yX2NvbHVtbnMiLCJyb3dzIiwiY29sdW1ucyIsImlzX3Jvd3MiLCJpc19jb2x1bW5zIiwicm93c192YWwiLCJjb2x1bW5zX3ZhbCIsInJvd3MkMCIsImNvbHVtbnMkMCIsImZvbGQkMSIsInJvd3NfZnVuIiwiY29sdW1uc19mdW4iLCJpdGVyJDEiLCJtYXAkMiIsIm1ha2VfbWF0Y2hlciIsInJvd3NfZ2VuIiwiY29sdW1uc19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsImNvbXBhcmVfcm93c19vcl9jb2x1bW5zIiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZWxlbWVudF9pc19pbl92aWV3cG9ydCIsInNjcm9sbCIsImlkIiwidmlld3BvcnRfcmVjdF9vZl9lbGVtZW50Iiwidmlld3BvcnRfcmVjdCIsImNsaWVudF9yZWN0X29mX2VsZW1lbnQiLCJib3VuZGluZ19yZWN0IiwiY2xpZW50X3JlY3QiLCJmaW5kX3Zpc2libGVfcmFuZ2UiLCJsZW5ndGgiLCJudGhfZWxlbWVudF9pZCIsImxheW91dCIsImVsZW1lbnRfc2VhcmNoIiwic2VhcmNoX2J5IiwibW9kZSIsIngiLCJudGhfZWxlbWVudCIsImVsdCIsImZpcnN0IiwibGFzdCIsImdldCIsImlzX2FzY2VuZGluZyIsImxlbmd0aCQwIiwidmlld3BvcnRfcmVjdCQwIiwidGFyZ2V0IiwidGFyZ2V0JDAiLCJzZWFyY2hfYnkkMCIsImdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lciIsImVsIiwiZmlsZW5hbWUiLCJwcmludF9lcnJvcmYiLCJmbXQiLCJzIiwicmVxdWVzdF9hbmltYXRpb25fZnJhbWUiLCJjYWxsYmFjayIsImN1cnJlbnRfY29udGV4dCIsInJlcXVlc3RfaWRzIiwiY2FsbGJhY2skMCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsInNldF90aW1lb3V0X2lkIiwiYXNfZm9jdXNhYmxlIiwibWFya19kaXJ0eSIsImlzX2RpcnR5IiwieF8wMDIiLCJ4XzAwMyIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3Iiwic2V0X2xvZ2dpbmdfZmlsdGVyIiwibG9nZ2luZ19maWx0ZXIiLCJnbG9iYWxfaXNfaW5pdGlhbGl6ZWQiLCJhcHBfc3RhdGVzIiwic2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QiLCJzdHJpbmdzIiwic3RyIiwibXVsdGlfbGluZV9zdHJpbmdfbGlzdCIsImdldF90YWdfbmFtZSIsIm5vZGUiLCJub2RlJDAiLCJlIiwibm9kZSQxIiwic3RhcnRfYm9uc2FpIiwiYmluZF90b19lbGVtZW50X3dpdGhfaWQiLCJpbml0aWFsX21vZGVsIiwiQXBwIiwiZGVidWciLCJzdG9wIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsImN1dG9mZiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJuYW1lZF9sb2dnaW5nX2ZpbHRlcnMkMCIsImZpbHRlcl9uYW1lcyIsImFwcF9pbml0X21lc3NhZ2UiLCJ3aXRoX2FwcF9pZF9vcHQiLCJ1cGRhdGVfc3RhdGUiLCJhcHBfaWRfb3B0IiwiYXBwX2lkX29wdCQwIiwiYXBwX2lkIiwic3RhdGUiLCJ1cGRhdGVfbG9nZ2luZ19maWx0ZXIiLCJ1cGRhdGVfc2hvdWxkX3Byb2ZpbGUiLCJzaG91bGRfcHJvZmlsZSIsInVwZGF0ZV9zaG91bGRfZGVidWciLCJzaG91bGRfZGVidWciLCJibGFuZ19zdHIiLCJibGFuZ19zdHIkMCIsImFwcF9zdGF0ZSIsImJsYW5nIiwiaW52YWxpZF9uYW1lcyIsIm5hbWUiLCJmaWx0ZXIiLCJmaWx0ZXIkMCIsImFjdGlvbl9zZXhwIiwiY29udGVudHMiLCJsb2ciLCJodG1sIiwiaHRtbF9kb20iLCJwYXJlbnQiLCJjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQiLCJldmVudF9uYW1lIiwid2hlcmUiLCJwcmV2X2h0bWwiLCJwcmV2X2VsdCIsInJlZm9jdXNfcm9vdF9lbGVtZW50IiwiZWxlbWVudCIsInRpbWVyX3N0YXJ0IiwicHJvZmlsZSIsInRpbWVyX3N0b3AiLCJiZWZvcmUiLCJhZnRlciIsInJlbGF0ZWRfdGFyZ2V0Iiwic2FmZV9maWx0ZXIiLCJzaG91bGRfbG9nIiwiZXJyIiwiY3VzdG9tX3ByaW50Zl8wMTAiLCJuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUiLCJjdXN0b21fcHJpbnRmXzAxMiIsInBlcmZvcm1fdXBkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsInJvb3QiLCJhZGRfbmV3X2F0dHJzIiwiYXR0cnMiLCJwYXRjaCIsIm9sZF90YWdfbmFtZSIsIm5ld190YWdfbmFtZSIsInRhZ3NfdGhlX3NhbWUiLCJzdGFydCIsImFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIiwib2xkX21vZGVsIiwiaW5qZWN0IiwiY29tcG9uZW50Iiwic2NoZWR1bGVfZXZlbnQiLCJzY2hlZHVsZV9hY3Rpb24iLCJlcnJvcl9zb3VyY2VfMDE0IiwiaW52YXJpYW50IiwidCIsIm9mX3N0cmluZyIsInMiLCJ0b19zdHJpbmciLCJlcXVhbCIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImFfMDA1IiwiYl8wMDYiLCJhXzAwOSIsImJfMDEwIiwidXBkYXRlX29mX3NleHAiLCJvZl9hXzAxMSIsInNleHBfMDE2Iiwic2V4cHNfMDE3IiwidmFsdWUiLCJpbnB1dCIsInNleHBzXzAxOSIsImVycm9yIiwibGFzdF92YWxpZCIsInNleHBfb2ZfdXBkYXRlIiwib2ZfYV8wMjEiLCJ2YWx1ZV8wMjUiLCJpbnB1dF8wMjMiLCJhcmdfMDI2IiwiYm5kc18wMjIiLCJhcmdfMDI0IiwiYm5kc18wMjIkMCIsImVycm9yXzAzMiIsImxhc3RfdmFsaWRfMDMwIiwiaW5wdXRfMDI4IiwiYXJnXzAzMyIsImJuZHNfMDI3IiwiYXJnXzAzMSIsImJuZHNfMDI3JDAiLCJhcmdfMDI5IiwiYm5kc18wMjckMSIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInYyIiwidjEiLCJzaXplIiwidjMiLCJ2MiQwIiwidjEkMCIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfdCIsIm9mX2EiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3QkMCIsInZfaW5wdXQiLCJ2X3ZhbHVlIiwidl9pbnB1dCQwIiwidl9sYXN0X3ZhbGlkIiwidl9lcnJvciIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImFfMDM1IiwiYl8wMzYiLCJuIiwiYV8wMzkiLCJiXzA0MCIsIm4kMCIsIm4kMSIsImFfMDQzIiwiYl8wNDQiLCJlcXVhbF91cGRhdGUiLCJhXzA0NSIsImJfMDQ2IiwiYV8wNDciLCJiXzA0OCIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdXBkYXRlIiwiYmluX3NpemVfdXBkYXRlIiwiYmluX3dyaXRlX3VwZGF0ZSIsImJpbl93cml0ZXJfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlJDAiLCJiaW5fcmVhZGVyX3VwZGF0ZSIsImJpbl91cGRhdGUiLCJjb21wYXJlX3VwZGF0ZSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1NiIsImJfMDU3IiwibGlmdCIsIk0iLCJpbnB1dCQxIiwiaW5wdXQkMCIsImV4biQwIiwiZXhuIiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwiZ2V0X2Vycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJtZXJnZSIsInN0cnVjdHVyYWxfbGlzdCIsImNoaWxkcmVuIiwib3JpZW50YXRpb24iLCJtZXJnZV9iZWhhdmlvciIsImxheW91dF9zdHlsZSIsImNoaWxkIiwic2V4cF9vZl90IiwiY29tYmluZSIsImxlZnQiLCJyaWdodCIsImluaXQiLCJlbGVtZW50IiwiZiIsImRvY3VtZW50X2FjdGl2ZV9lbGVtZW50IiwidmFsdWUkMCIsImNoYW5nZV9oYW5kbGVyIiwibm9ybWFsaXplZCIsImNoYW5nZV9oYW5kbGVyJDAiLCJldmVudF9pZCIsIm9uX21vdW50Iiwic3RhdGUiLCJkZXN0cm95IiwidXBkYXRlJDAiLCJvbGRfaW5wdXQiLCJuZXdfaW5wdXQiLCJjcmVhdGUiLCJpbXBsIiwidmFsdWVzIiwic2VsZWN0ZWQiLCJvbl9jaGFuZ2UiLCJleHRyYV9hdHRycyIsImV4dHJhX29wdGlvbl9hdHRycyIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInBsYWNlaG9sZGVyIiwidmFsdWVzJDAiLCJleHRyYV9vcHRpb25fYXR0cnMkMCIsImFfMDU4IiwiYl8wNTkiLCJhXzA2MCIsImJfMDYxIiwib2ZfZW51bSIsIm9mX2VudW1fb3B0IiwiYV8wNjIiLCJiXzA2MyIsImFfMDY0IiwiYl8wNjUiLCJiYXJlYm9uZXNfYnV0dG9uX2xpa2UiLCJjaGVja2VkIiwiaGlkZV9uYXRpdmVfaW5wdXRzIiwic2ltcGxlIiwiZXh0cmFfYXR0cnMkMCIsImRpc2FibGVkJDAiLCJpc19jaGVja2VkIiwibGFiZWwiLCJvbl90b2dnbGUiLCJldiIsImltcGwkMCIsImxheW91dCIsInN0eWxlIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJpdGVtIiwib2ZfdmFsdWVzJDAiLCJvZl9lbnVtJDAiLCJpbXBsJDEiLCJyZXBlYXRlZF9jbGlja19iZWhhdmlvciIsInRhcmdldCIsIm9wdGlvbnMiLCJzZWxlY3RlZF92YWx1ZXMiLCJpc19zZWxlY3RlZCIsIndhc19yZXBlYXRlZF9jbGljayIsIm9mX3ZhbHVlcyQxIiwib2ZfZW51bSQxIiwibGlzdGVuZXIiLCJub3JtYWxpemUiLCJtYXliZV9vbl9yZXR1cm4iLCJvbl9yZXR1cm4iLCJvbl9yZXR1cm4kMCIsImlucHV0X25vZGUiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwidHlwZV9hdHRycyIsImNhbGxfb25faW5wdXRfd2hlbiIsInNob3VsZF9ub3JtYWxpemUiLCJ2YWx1ZSQxIiwib2Zfc3RyaW5nYWJsZSIsInZhbGlkYXRlZCIsIlYiLCJ2YWx1ZV9hdHRyIiwidGV4dCIsInBhc3N3b3JkIiwibnVtYmVyIiwic3RlcCIsInJhbmdlIiwidGltZSIsImRhdGUiLCJkYXRldGltZV9sb2NhbCIsInV0Y19vZmZzZXQiLCJob3VycyIsInpvbmUiLCJwYXJ0cyIsImhyIiwibWluIiwib2ZkYXkiLCJab25lZF90aW1lIiwidGV4dF9hcmVhIiwiY29sb3JfcGlja2VyIiwiZXh0cmFfYXR0ciIsIndpdGhfdmFsaWRhdGlvbiIsInZhbGlkYXRpb24iLCJvbl9jbGljayIsInJlc3VsdCIsInJlYXNvbiIsInNpbXBsZSQwIiwiaW1wbCQyIiwibmFtZSIsIm9mX3ZhbHVlcyQyIiwiRSIsIm9mX3ZhbHVlc19ob3Jpem9udGFsIiwiYWNjZXB0X2F0dHJzIiwiYWNjZXB0cyIsInMkMCIsImxpc3QiLCJhY2NlcHQiLCJmaWxlcyIsInNpbmdsZSIsImZpbGUiLCJlcXVhbCIsIngiLCJ5IiwiY29tcGFyZSIsInRvX2ludCIsInBwIiwiaW50ZXJzZWN0Iiwic3ltYm9sIiwibGV0dGVyIiwibm90X2xldHRlciIsImZyb21fY2hhciIsInNleHAiLCJmbXQiLCJzIiwicGFpciIsInBwMSIsInBwMiIsInYyIiwidjEiLCJ0cmlwbGUiLCJwcDMiLCJ2MyIsIm9wdGludCIsImkiLCJxdW90ZSIsInBwX29saXN0IiwicHBfZWxlbSIsInBwX3N0cl9saXN0IiwidG9fdG9fc3RyaW5nIiwiYiIsImNhbnkiLCJ1bmlvbiIsImwkMCIsImwiLCJsJDIiLCJsJDEiLCJyIiwiYzIiLCJjMSIsInIkMCIsImMyJDAiLCJjMSQwIiwibCQzIiwibCQ0IiwiaW50ZXIiLCJkaWZmIiwiciQxIiwic2luZ2xlIiwiYyIsImFkZCIsInNlcSIsImMkMCIsIm9mZnNldCIsIm8iLCJtZW0iLCJzJDAiLCJyZW0iLCJoYXNoX3JlYyIsImoiLCJoYXNoIiwicHJpbnRfb25lIiwiY2giLCJpdGVyIiwidCIsImYiLCJ0JDAiLCJ4cyIsIm9uZV9jaGFyIiwidiIsInUiLCJmb2xkX3JpZ2h0IiwiaW5pdCIsImNzaW5nbGUiLCJpc19lbXB0eSIsInByZXBlbmQiLCJ4JDAiLCJkIiwiZCQwIiwicGljayIsImdlbiIsImVwc19leHByIiwiaGFzaF9jb21iaW5lIiwiaCIsImFjY3UiLCJlbXB0eSIsIm1lcmdlX21hcmtzX29mZnNldCIsIm9sZCIsIm53IiwibWVyZ2UiLCJtIiwiYWNjdSQxIiwiYWNjdSQyIiwiYSIsImFjY3UkMCIsImlkeCIsIm1hcmtzIiwibWFya3Nfc2V0X2lkeCIsInBwX21hcmtzIiwicHBfc2VtIiwiayIsInBwX3JlcF9raW5kIiwiZSIsImUkMCIsImUkMSIsImUkMiIsImskMCIsImUkMyIsImkkMCIsImZpcnN0IiwicmVzIiwiY3JlYXRlX2lkcyIsIm1rX2V4cHIiLCJpZHMiLCJkZWYiLCJlbXB0eSQwIiwiY3N0IiwiYWx0Iiwia2luZCIsImlzX2VwcyIsImV4cHIiLCJlcHMiLCJyZXAiLCJzZW0iLCJtYXJrIiwicG1hcmsiLCJlcmFzZSIsIm0kMCIsImJlZm9yZSIsImFmdGVyIiwicmVuYW1lIiwieiIsInkkMCIsImciLCJsMSIsImwyIiwibDEkMCIsImwyJDAiLCJyMSIsImUxIiwibDEkMSIsInIyIiwiZTIiLCJsMiQxIiwicjEkMCIsImUxJDAiLCJtYXJrczEiLCJyMiQwIiwiZTIkMCIsIm1hcmtzMiIsInIxJDEiLCJtYXJrczEkMCIsInIyJDEiLCJtYXJrczIkMCIsImhhc2gkMCIsIm1hcmtzJDAiLCJhY2N1JDMiLCJ0c2VxIiwicHJpbnRfc3RhdGVfcmVjIiwicHJpbnRfc3RhdGVfbHN0IiwicHAkMCIsImR1bW15IiwibWsiLCJjYXQiLCJkZXNjIiwiY3JlYXRlIiwiZXF1YWwkMCIsImhhc2gkMSIsImNyZWF0ZV93b3JraW5nX2FyZWEiLCJpbmRleF9jb3VudCIsInciLCJtYXJrX3VzZWRfaW5kaWNlcyIsInRibCIsImZyZWVfaW5kZXgiLCJ0YmxfcmVmIiwibGVuIiwiaWR4JDAiLCJyZW1vdmVfbWF0Y2hlcyIsInNwbGl0X2F0X21hdGNoIiwicmVtb3ZlX2R1cGxpY2F0ZXMiLCJwcmV2IiwicHJldiQwIiwicHJldiQxIiwicHJldiQyIiwiciQyIiwiciQzIiwieCQxIiwicHJldiQzIiwiciQ0Iiwic2V0X2lkeCIsImZpbHRlcl9tYXJrcyIsImRlbHRhXzEkMCIsIm5leHRfY2F0IiwicHJldl9jYXQiLCJkZWx0YV8yJDAiLCJkZWx0YV8xIiwiZGVsdGFfc2VxJDAiLCJ5JDEiLCJraW5kJDAiLCJyZXBfa2luZCIsInkkMiIsIm1hcmtzJDEiLCJ5JDMiLCJtYXJrcyQyIiwiY2F0JDAiLCJtYXJrcyQzIiwiZGVsdGFfMiIsImRlbHRhX3NlcSIsImRlbHRhXzQiLCJyZW0kMCIsImRlbHRhIiwiY2hhciQwIiwic3QiLCJleHByJDAiLCJyZWRfdHIiLCJ0cjIiLCJzdDIiLCJzMiIsInRyMSIsInN0MSIsInMxIiwicHJlcGVuZF9kZXJpdiIsInJlc3RyaWN0IiwicyQxIiwicHJlcGVuZF9tYXJrc19leHByX2xzdCIsIm0kMSIsImRlcml2XzEkMCIsImFsbF9jaGFycyIsImNhdGVnb3JpZXMiLCJyZW0kMSIsImRlcml2XzIkMCIsImRlcml2XzEiLCJkZXJpdl9zZXEiLCJ6JDAiLCJyZW0kMiIsImNhdCQxIiwiZGVyaXZfMiIsInhsIiwieiQxIiwiZGVyaXZfNCIsImRlcml2IiwiZGVyIiwiZXhwciQxIiwic3RhdHVzIiwibWEiLCJzdCQwIiwibWFrZSIsImZsYXR0ZW4iLCJjbSIsImNvbG9yX3JlcHIiLCJzcGxpdCIsImR1bW15X29mZnNldCIsIm0xIiwicDEiLCJwMiIsImdldCIsInN0YXJ0Iiwic3VicyIsInN0b3AiLCJ0ZXN0IiwiZ2V0X29wdCIsImFsbF9vZmZzZXQiLCJhbGwiLCJvZmZzZXRzIiwic3RycyIsIm1hdGNoZXMiLCJwcF9tYXRjaCIsInN0ciIsIm5iX2dyb3VwcyIsIm4iLCJuJDAiLCJ2JDAiLCJ2JDEiLCJuJDEiLCJwcF9yZSIsInJlIiwiZ3JvdXBfY291bnQiLCJncm91cF9uYW1lcyIsImNhdGVnb3J5IiwiY29sb3IiLCJkdW1teV9uZXh0IiwidW5rbm93bl9zdGF0ZSIsImJyZWFrJDAiLCJmaW5kX3N0YXRlIiwibmNvbCIsImJyZWFrX3N0YXRlIiwiaW5mbyIsInBvcyIsInZhbGlkYXRlIiwiZ2V0X2NvbG9yIiwic2xlbiIsInNjYW5fc3RyIiwiaW5pdGlhbF9zdGF0ZSIsImdyb3VwcyIsInBvcyQzIiwibGFzdCIsImluZm8kMCIsInN0JDUiLCJwb3MkNCIsInN0JDMiLCJyZWFsX2MiLCJzdCQ0IiwicG9zJDAiLCJwb3MkMSIsInN0JDEiLCJzdCQyIiwicG9zJDIiLCJmaW5hbF9ib3VuZGFyeV9jaGVjayIsImZpbmFsX2NhdCIsInJlcyQwIiwibWF0Y2hfc3RyIiwicGFydGlhbCIsImluaXRpYWxfY2F0Iiwic3RhdHVzJDAiLCJwbWFya3MiLCJub19tYXRjaF9zdGFydHNfYmVmb3JlIiwiY3NlcSIsImNhZGQiLCJ2aWV3IiwidmFyJDAiLCJyZWwiLCJzcSIsInJlJDAiLCJyZSQxIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiaXNfY2hhcnNldCIsImN1cHBlciIsImNsb3dlciIsImNhbHBoYSIsImNkaWdpdCIsImNhbG51bSIsImN3b3JkIiwieDEiLCJ4MiIsIngxJDAiLCJ4MiQwIiwiZXFfbGlzdCIsImoyIiwiaTIiLCJ4MiQxIiwiajEiLCJpMSIsIngxJDEiLCJ4MiQyIiwic2VtMiIsIngxJDIiLCJzZW0xIiwieDIkMyIsImsyIiwieDEkMyIsImsxIiwieDIkNCIsIngxJDQiLCJ4MiQ1IiwieDEkNSIsIngyJDYiLCJ4MSQ2IiwieDIkNyIsIngxJDciLCJsMiQyIiwibDEkMiIsIngyJDgiLCJ4MiQ5IiwieDEkOCIsIngxJDkiLCJtMiIsInNlcXVlbmNlIiwibWVyZ2Vfc2VxdWVuY2VzIiwiZW5mb3JjZV9raW5kIiwiY3IiLCJ0cmFuc2xhdGUiLCJpZ25fY2FzZSIsIm5hbWVzIiwiY2FjaGUiLCJpZ25fZ3JvdXAkMCIsImdyZWVkeSQwIiwidHJhbnNfc2VxIiwibWVyZ2VkX3NlcXVlbmNlcyIsImtpbmQkMSIsImNyJDAiLCJqJDAiLCJraW5kJDIiLCJraW5kJDMiLCJjciQxIiwiZ3JlZWR5JDEiLCJwIiwibmFtZSIsImtpbmQkNCIsImNyJDIiLCJyJDUiLCJraW5kJDUiLCJjciQzIiwiciQ2IiwiaSQxIiwia2luZCQ2IiwiY3IkNCIsImlnbl9ncm91cCIsImdyZWVkeSIsImFzX3NldCIsImhhbmRsZV9jYXNlIiwiaWduX2Nhc2UkMCIsInIkNyIsInIkOCIsInIkOSIsInIkMTAiLCJyJDExIiwiciQxMiIsImwkNSIsInIkMTMiLCJyJDE0IiwiciQxNSIsImFuY2hvcmVkIiwiZXBzaWxvbiIsInJlcG4iLCJyZXAxIiwib3B0IiwiYm93IiwiZW93Iiwid29yZCIsImJvcyIsImVvcyIsIndob2xlX3N0cmluZyIsImxvbmdlc3QiLCJzaG9ydGVzdCIsIm5vbl9ncmVlZHkiLCJncm91cCIsIm5vX2dyb3VwIiwibmVzdCIsInNldCIsInJnIiwiY29tcGwiLCJhbnkiLCJub3RubCIsImxvd2VyIiwidXBwZXIiLCJhbHBoYSIsImRpZ2l0IiwiYWxudW0iLCJ3b3JkYyIsImFzY2lpIiwiYmxhbmsiLCJjbnRybCIsImdyYXBoIiwicHJpbnQiLCJwdW5jdCIsInNwYWNlIiwieGRpZ2l0IiwiY2FzZSQwIiwibm9fY2FzZSIsImNvbXBpbGUiLCJyZWdleHAkMCIsInJlZ2V4cCIsImxubCIsImNvbG9yaXplIiwicmVnZXhwJDEiLCJyZWdleHAkMiIsIm5lZWRfbG5sIiwibmNvbG9yIiwiY29sb3JzIiwibG5sJDAiLCJuY29sb3IkMCIsImluaXRpYWwiLCJleGVjX2ludGVybmFsIiwiZXhlYyIsInN1YnN0ciIsImV4ZWNfb3B0IiwiZXhlY3AiLCJleGVjX3BhcnRpYWwiLCJleGVjX3BhcnRpYWxfZGV0YWlsZWQiLCJtYXJrZWQiLCJtYXJrX3NldCIsImFsbF9zZXEiLCJsaW1pdCIsImF1eCIsIm1hdGNoZXNfc2VxIiwic3ViIiwic3BsaXRfZnVsbF9zZXEiLCJzdGF0ZSIsIm9sZF9pIiwidGV4dCIsInRleHQkMCIsInN0YXRlJDAiLCJzcGxpdF9zZXEiLCJmaWx0ZXIiLCJzZXEkMCIsInRsIiwic2VxJDEiLCJsaXN0X29mX3NlcSIsInNwbGl0X2Z1bGwiLCJnZW5fb2Zfc2VxIiwic3BsaXRfZ2VuIiwic3BsaXRfZnVsbF9nZW4iLCJhbGxfZ2VuIiwibWF0Y2hlc19nZW4iLCJyZXBsYWNlIiwiYnVmIiwicmVwbGFjaW5nIiwicmVwbGFjZV9zdHJpbmciLCJieSIsIndpdG5lc3MiLCJmcm9tIiwiZ2V0X29mcyIsImdldF9hbGwiLCJnZXRfYWxsX29mcyIsInRlc3QyIiwiYWNjZXB0IiwiYWNjZXB0MiIsImxlZnQiLCJicmFuY2giLCJsZWZ0JDAiLCJsZWZ0JDEiLCJicmFja2V0IiwicyQyIiwiY29tcGlsZV9wYXQiLCJjb21waWxlX3JlZ2V4cCIsInN0cmluZ19tYXRjaCIsInN0cmluZ19wYXJ0aWFsX21hdGNoIiwic2VhcmNoX2ZvcndhcmQiLCJzZWFyY2hfYmFja3dhcmQiLCJwJDAiLCJwJDEiLCJ2YWxpZF9ncm91cCIsIm9mZnNldF9ncm91cCIsInJlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsInEiLCJxJDAiLCJxJDEiLCJwJDIiLCJsZW4kMCIsInAkMyIsInEkMiIsInEkMyIsInAkNCIsImIkMCIsInEkNSIsInAkNiIsInEkNCIsInAkNSIsInEkNiIsInAkNyIsInN0cmluZ19iZWZvcmUiLCJzdHJpbmdfYWZ0ZXIiLCJmaXJzdF9jaGFycyIsImxhc3RfY2hhcnMiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiZ3JvdXBfYmVnaW5uaW5nIiwiZ3JvdXBfZW5kIiwibWF0Y2hlZF9ncm91cCIsInR4dCIsInJlcGxhY2VfbWF0Y2hlZCIsIm1hdGNoZWQiLCJtYXRjaF9iZWdpbm5pbmciLCJtYXRjaF9lbmQiLCJtYXRjaGVkX3N0cmluZyIsInN1YnN0aXR1dGVfZmlyc3QiLCJyZXBsX2Z1biIsImdsb2JhbF9zdWJzdGl0dXRlIiwibGFzdF93YXNfZW1wdHkiLCJzdGFydHBvcyIsImVuZF9wb3MiLCJyZXBsX3RleHQiLCJsYXN0X3dhc19lbXB0eSQwIiwiZ2xvYmFsX3JlcGxhY2UiLCJyZXBsYWNlX2ZpcnN0Iiwic2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MiLCJib3VuZGVkX3NwbGl0IiwibnVtIiwiYm91bmRlZF9zcGxpdF9kZWxpbSIsInNwbGl0X2RlbGltIiwiYm91bmRlZF9mdWxsX3NwbGl0IiwiZnVsbF9zcGxpdCIsImJlZyIsIm11bCIsImV4cGxpY2l0X3BlcmlvZCIsInNsYXNoZXMiLCJhcHBlbmQiLCJwaWVjZSIsImFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCIsIm5leHQiLCJyZW1haW5pbmciLCJvbmUiLCJleHBsaWNpdF9zbGFzaCIsImVuY2xvc2VkIiwiaGlnaCIsImxvdyIsImVuY2xvc2VkX3NldCIsInNldCQwIiwiZW5jbG9zdXJlIiwiZXhhY3RseSIsInNsYXNoZXMkMCIsImNoYXJzIiwibWFueV9tYW55IiwiZXhwbGljaXRfcGVyaW9kJDAiLCJmaXJzdF9leHBsaWNpdF9wZXJpb2QiLCJtYXRjaF9jb21wb25lbnQiLCJnbG9iIiwicGF0aG5hbWUiLCJtYXRjaF9iYWNrc2xhc2hlcyIsInBlcmlvZCIsImV4cGFuZF9icmFjZXMiLCJkb3VibGVfYXN0ZXJpc2siLCJ0b19yZSIsInJlYWQiLCJwaWVjZXMiLCJmb3VuZCIsInBpZWNlcyQwIiwic3RhdGUkOCIsInN0YXRlJDkiLCJleHBsaWNpdF9wZXJpb2QkMSIsInNsYXNoZXMkMSIsInN0YXRlJDEwIiwiZXhwbGljaXRfc2xhc2gkMCIsIm5vdF9lbXB0eSIsIm1heWJlX2VtcHR5Iiwibm90X2VtcHR5JDEiLCJlbmNsb3NlZF9zZXQkMCIsInN0YXRlJDIiLCJzdGF0ZSQ0Iiwibm90X2VtcHR5JDAiLCJzdGF0ZSQ1Iiwic3RhdGUkNiIsImVuY2xvc2VkJDAiLCJzdGF0ZSQ3IiwiZW5jbG9zZWQkMSIsInN0YXRlJDMiLCJzdGF0ZSQxIiwiZW5jbG9zZWQkMiIsImVuY2xvc2VkJDMiLCJleHBsIiwiaW5uZXIiLCJhY2MiLCJiZWckMCIsImFjYyQwIiwiYmVnJDEiLCJhY2MkMSIsImkkMyIsImJlZyQyIiwiaSQ0IiwiaSQyIiwiZ2xvYiQwIiwiZ2xvYngiLCJnbG9ieCQwIiwicG9zaXhfY2xhc3Nfc3RyaW5ncyIsIm9wdHMiLCJ1bmdyZWVkeSIsImRvdGFsbCIsImRvbGxhcl9lbmRvbmx5IiwibXVsdGlsaW5lIiwiYWNjZXB0X3MiLCJ1bmdldCIsImdyZWVkeV9tb2QiLCJnciIsImdyJDAiLCJhdG9tIiwiaW50ZWdlciIsImhleGRpZ2l0IiwiY29kZSIsInMkMyIsInMkNCIsImNsYXNzJDAiLCJwb3NpeF9jbGFzcyIsInBhdCIsImZsYWdzIiwiZXh0cmFjdCIsInJleCIsImdldF9zdWJzdHJpbmciLCJnZXRfbmFtZWRfc3Vic3RyaW5nIiwiZ2V0X3N1YnN0cmluZ19vZnMiLCJwbWF0Y2giLCJzdWJzdGl0dXRlIiwic3Vic3QiLCJzcyIsImZpbiIsIm1heCIsInJlc3VsdHMiLCJkZWxpbSIsIm5ld2xpbmUiLCJlbXB0eSIsImlzX2VtcHR5IiwidCIsInplcm9fYml0IiwiayIsIm0iLCJtZW0iLCJqIiwiciIsImwiLCJsJDAiLCJmaW5kIiwieCIsImZpbmRfb3B0IiwiZmluZF9maXJzdF9vcHQiLCJmIiwicnYiLCJyayIsImx2IiwibGsiLCJ2JDAiLCJmaW5kX2ZpcnN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfbGFzdCIsIm1hc2siLCJwIiwiam9pbiIsInQxIiwicDEiLCJ0MCIsInAwIiwibWF0Y2hfcHJlZml4IiwiYWRkIiwiaW5zIiwic2luZ2xldG9uIiwidiIsImJyYW5jaCIsInQkMCIsInJlbW92ZSIsInJtdiIsImNhcmRpbmFsIiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwicyIsImFjY3UiLCJzJDAiLCJhY2N1JDAiLCJhY2N1JDEiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZmlsdGVyIiwicHIiLCJmaWx0ZXJfbWFwIiwicGFydGl0aW9uIiwicGFydCIsImFjYyQwIiwiY2hvb3NlIiwiY2hvb3NlX29wdCIsInNwbGl0IiwiY29sbCIsImIiLCJtaW5fYmluZGluZyIsImJzIiwia3MiLCJidCIsImt0IiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJiaW5kaW5ncyIsImFjYyIsImNvbXBhcmUiLCJjbXAiLCJ0MiIsImNvbXBhcmVfYXV4IiwidDEkMCIsInQyJDAiLCJ4MSIsImsxIiwieDIiLCJrMiIsImMiLCJyMSIsImwxIiwibTEiLCJyMiIsImwyIiwibTIiLCJwMiIsImMkMCIsImMkMSIsImMkMiIsImVxdWFsIiwiZXEiLCJlcXVhbF9hdXgiLCJtZXJnZSIsImFkZCQwIiwidjEiLCJ2MiIsInVwZGF0ZSIsInoiLCJ1bnNpZ25lZF9sdCIsIm4iLCJ0JDIiLCJzMSIsInMwIiwiayQwIiwicSIsInQkMSIsInVuaW9uIiwidG9fc2VxIiwicHJlcGVuZF9zZXEiLCJtJDAiLCJzJDEiLCJ0b19zZXFfZnJvbSIsImtleSIsImFkZF9zZXEiLCJvZl9zZXEiLCJ1dGY4X29mX2NvZGUiLCJidWYiLCJ4IiwiYWRkIiwibWF4Yml0cyIsIm4iLCJ1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIiwiaSIsImoiLCJoaWdoMTAiLCJsb3cxMCIsInZlcnNpb24iLCJqc29uX2Vycm9yIiwicyIsImluaXRfbGV4ZXIiLCJmbmFtZSIsImxudW0iLCJidWYkMCIsImJ1ZiQxIiwib2NhbWxfbGV4X3RhYmxlcyIsInJlYWRfanVuayQwIiwibGV4YnVmIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMkMCIsInJlYWRfanVuayIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJzcHJpbnRmIiwid3JpdGVfZmxvYXRfcHJlYyIsIndyaXRlX3N0ZF9mbG9hdCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjIiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV9qc29uIiwid3JpdGVfYXNzb2MiLCJ3cml0ZV9saXN0IiwiYiIsImYiLCJ3cml0ZV9zdGRfanNvbiIsInRvX2J1ZmZlciIsInN1ZiIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJsJDEiLCJhIiwicHBfbGlzdCIsInNlcCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwieCQyIiwicyQwIiwieCQwIiwieCQxIiwibmFtZSIsInBwIiwidG9fc3RyaW5nJDAiLCJwcCQwIiwiZm10IiwieHMiLCJ2YWx1ZSIsImtleSIsInhzJDAiLCJzaG93IiwiZXF1YWwiLCJiJDAiLCJhJDAiLCJ5cyIsInJlc3VsdCIsInlzJDAiLCJjb21wYXJlX2tleXMiLCJrZXkkMCIsInhzJDEiLCJ5cyQxIiwicmVzdWx0JDAiLCJ2YWx1ZSQwIiwiYiQxIiwiYSQxIiwiYiQyIiwiYSQyIiwiYiQzIiwiYSQzIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwid3JpdGVfaW50bGl0Iiwid3JpdGVfZmxvYXRsaXQiLCJ3cml0ZV9zdHJpbmdsaXQiLCJ3cml0ZV90dXBsZSIsIm8iLCJ3cml0ZV92YXJpYW50IiwicyQxIiwicyQyIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ2JDAiLCJsJDIiLCJ4JDMiLCJvcCIsInJlcHJlc2VudGF0aW9uIiwieCQ0IiwicmVwcmVzZW50YXRpb24kMCIsInR1cCIsImIkNCIsImEkNCIsIm5hbWUkMCIsInRvX2Jhc2ljIiwieCQ2IiwieCQ1IiwiYiQ1IiwiYSQ1IiwicyQzIiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicyQ0IiwieW9qc29uX29mX3VuaXQiLCJ5b2pzb25fb2ZfYm9vbCIsImIiLCJ5b2pzb25fb2Zfc3RyaW5nIiwic3RyIiwieW9qc29uX29mX2J5dGVzIiwiYnl0ZXMiLCJ5b2pzb25fb2ZfY2hhciIsImMiLCJ5b2pzb25fb2ZfaW50IiwibiIsInlvanNvbl9vZl9mbG9hdCIsInlvanNvbl9vZl9pbnQzMiIsInlvanNvbl9vZl9pbnQ2NCIsInlvanNvbl9vZl9uYXRpdmVpbnQiLCJ5b2pzb25fb2ZfcmVmIiwieW9qc29uX29mX2EiLCJyZiIsInlvanNvbl9vZl9sYXp5X3QiLCJsdiIsInlvanNvbl9vZl9vcHRpb24iLCJ4IiwieW9qc29uX29mX3BhaXIiLCJ5b2pzb25fb2ZfYiIsImEiLCJ5b2pzb25fb2ZfdHJpcGxlIiwieW9qc29uX29mX2MiLCJ5b2pzb25fb2ZfbGlzdCIsImxzdCIsInlvanNvbl9vZl9hcnJheSIsImFyIiwibHN0X3JlZiIsImkiLCJ5b2pzb25fb2ZfaGFzaHRibCIsInlvanNvbl9vZl9rZXkiLCJ5b2pzb25fb2ZfdmFsIiwiaHRibCIsImNvbGwiLCJrIiwidiIsImFjYyIsInlvanNvbl9vZl9vcGFxdWUiLCJ5b2pzb25fb2ZfZnVuIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3lvanNvbl9lcnJvcl9leG4iLCJleGMiLCJ5b2pzb24iLCJvZl95b2pzb25fZXJyb3IiLCJ3aGF0IiwidW5pdF9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInN0cmluZ19vZl95b2pzb24iLCJieXRlc19vZl95b2pzb24iLCJjaGFyX29mX3lvanNvbiIsImludF9vZl95b2pzb24iLCJmbG9hdF9vZl95b2pzb24iLCJpbnQzMl9vZl95b2pzb24iLCJpbnQ2NF9vZl95b2pzb24iLCJuYXRpdmVpbnRfb2ZfeW9qc29uIiwicmVmX29mX3lvanNvbiIsImFfb2ZfeW9qc29uIiwibGF6eV90X29mX3lvanNvbiIsIm9wdGlvbl9vZl95b2pzb24iLCJwYWlyX29mX3lvanNvbiIsImJfb2ZfeW9qc29uIiwiYl95b2pzb24iLCJhX3lvanNvbiIsInRyaXBsZV9vZl95b2pzb24iLCJjX29mX3lvanNvbiIsImNfeW9qc29uIiwibGlzdF9vZl95b2pzb24iLCJyZXZfbHN0IiwiYXJyYXlfb2ZfeW9qc29uIiwidCIsImgiLCJsZW4iLCJyZXMiLCJ0JDAiLCJoJDAiLCJoYXNodGJsX29mX3lvanNvbiIsImtleV9vZl95b2pzb24iLCJ2YWxfb2ZfeW9qc29uIiwiYWN0Iiwidl95b2pzb24iLCJrX3lvanNvbiIsIm9wYXF1ZV9vZl95b2pzb24iLCJmdW5fb2ZfeW9qc29uIiwic3ByaW50ZiIsInR1cGxlX29mX3NpemVfbl9leHBlY3RlZCIsImxvYyIsInN0YWdfbm9fYXJncyIsInN0YWdfaW5jb3JyZWN0X25fYXJncyIsInRhZyIsIm1zZyIsInN0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSIsInVuZXhwZWN0ZWRfc3RhZyIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsInJlc3QiLCJmaWVsZCIsInJlc3QkMCIsInJlY29yZF91bmRlZmluZWRfZWxlbWVudHMiLCJ1bmRlZmluZWQkMCIsInJlY29yZF9saXN0X2luc3RlYWRfYXRvbSIsInJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIiwibm9fdmFyaWFudF9tYXRjaCIsIm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQiLCJwdGFnX25vX2FyZ3MiLCJwdGFnX2luY29ycmVjdF9uX2FyZ3MiLCJjbnN0ciIsInB0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV90eXBlIiwic3ltYm9sIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsInNpbmdsZXRvbiIsInBvcyIsIngiLCJ1bmlvbiIsImYiLCJ0MSIsInQyIiwieHMyIiwieDIiLCJwMiIsInhzMSIsIngxIiwicDEiLCJtYXAiLCJyZXN0IiwibWFwaSIsIm1hcGsiLCJmb2xkX2xlZnQiLCJ6JDAiLCJlcnJvcl9zb3VyY2VfMDAyIiwiemVybyIsInRfb2Zfc2V4cCIsInhfMDAzIiwiY29sIiwicm93Iiwic2V4cF9vZl90IiwiY29sXzAwNyIsInJvd18wMDUiLCJhcmdfMDA4IiwiYm5kc18wMDQiLCJhcmdfMDA2IiwiYm5kc18wMDQkMCIsImNvbXBhcmUiLCJwb3MxIiwicG9zMiIsImVycm9yX3NvdXJjZV8wMDQiLCJvZl9hbm5vdF8wMDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInNleHBfYXJnc18wMTMiLCJhcmcxXzAxNSIsImFyZzBfMDE0IiwicmVzMF8wMTYiLCJyZXMxXzAxNyIsInNleHBfYXJnc18wMDgiLCJhcmcwXzAwOSIsInJlczBfMDEwIiwib2ZfYW5ub3RfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJyZXMwXzA0MiIsInJlczFfMDQzIiwiYWxpZ24iLCJsIiwiYW5ub3QiLCJyZW1vdmVfYW5ub3RzIiwibGF5b3V0IiwibGF5b3V0JDAiLCJzdHJpbmciLCJsMiIsImwxIiwibGF5b3V0JDEiLCJta19vZl9sYXlvdXQiLCJ0ZXh0IiwiY29sdW1uIiwiZ28iLCJpbmRlbnQiLCJpbmRlbnQkMCIsImltcDEiLCJpbXAyIiwiaW5kZW50JDEiLCJzdHJpbmdfb2ZfbGF5b3V0IiwicmVjb3JkIiwiczEiLCJzMiIsImltcCIsInN0cmluZ3Nfb2ZfbGF5b3V0IiwicmVzdDIiLCJmaXJzdF9zdHJpbmdfMiIsImZpcnN0X2luZGVudF8yIiwicmVzdDEiLCJsYXN0X3N0cmluZ18xIiwibGFzdF9pbmRlbnRfMSIsInNwbGl0X2ZpcnN0IiwieHMiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfbGFzdF9vcHQiLCJ5cyIsInkiLCJzcGxpdF9sYXN0IiwiciIsImJveCIsImVycm9yX3NvdXJjZV8wMTEiLCJlcnJvcl9zb3VyY2VfMDE2IiwiYm94X29mX3NleHAiLCJ3aWR0aCIsImhlaWdodCIsInNleHBfb2ZfYm94Iiwid2lkdGhfMDA3IiwiaGVpZ2h0XzAwNSIsIm9mX2Fubm90XzAwOSIsInhfMDEyIiwidF9vZl9zZXhwJDAiLCJtZXRyaWNzIiwib2ZfYW5ub3RfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5IiwicmVzMF8wMjciLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMV8wMzkiLCJyZXMwXzA0MCIsInJlczFfMDQxIiwic2V4cF9hcmdzXzAzMCIsImFyZzFfMDMyIiwiYXJnMF8wMzEiLCJyZXMxXzAzNCIsIm9mX2Fubm90XzA0MyIsIm1ldHJpY3NfMDQ3IiwibGF5b3V0XzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImFyZ18wNDYiLCJzZXhwX29mX3QkMCIsImJuZHNfMDQ0JDAiLCJvZl9hbm5vdF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwiYXJnMV8wNTkiLCJhcmcwXzA1OCIsInJlczBfMDYwIiwicmVzMV8wNjEiLCJtIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsIm1pZCIsInRhYmxlIiwibWsiLCJtaWRfYm94IiwibCQwIiwiYm91bmRpbmdfYm94IiwiYnciLCJiaCIsImwkMSIsIm0kMiIsIm92ZXJmbG93X2Nvc3QiLCJoZWlnaHRfY29zdCIsIm1rX2hlaWdodCIsIm1rX292ZXJmbG93IiwiaW5mIiwiYWRkIiwiYzEiLCJjMiIsImVxIiwibHQiLCJsZXEiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAwOCIsImVycm9yX3NvdXJjZV8wNjgiLCJlcnJvcl9zb3VyY2VfMDczIiwiaGFzaCIsImVxdWFsIiwidzIiLCJ3MSIsIm9mX2Fubm90XzA2NiIsInhfMDY5IiwiZG9jIiwibWVtIiwib2ZfYW5ub3RfMDcwIiwic2V4cF8wNzUiLCJ0YWdfMDc2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJzZXhwX2FyZ3NfMDgyIiwiYXJnMV8wODQiLCJhcmcwXzA4MyIsInJlczBfMDg1IiwicmVzMV8wODYiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMV8xMDMiLCJhcmcwXzEwMiIsInJlczBfMTA0IiwicmVzMV8xMDUiLCJzZXhwX2FyZ3NfMDc3IiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsIm9mX2Fubm90XzEwNyIsImRvY18xMTEiLCJtZW1fMTA5IiwiYXJnXzExMiIsImJuZHNfMTA4IiwiYXJnXzExMCIsImJuZHNfMTA4JDAiLCJvZl9hbm5vdF8xMTMiLCJhcmcwXzExNCIsInJlczBfMTE1IiwiYXJnMV8xMTciLCJhcmcwXzExNiIsInJlczBfMTE4IiwicmVzMV8xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwiYXJnMV8xMjMiLCJhcmcwXzEyMiIsInJlczBfMTI0IiwicmVzMV8xMjUiLCJhcmcxXzEyNyIsImFyZzBfMTI2IiwicmVzMF8xMjgiLCJyZXMxXzEyOSIsInRfb2ZfdCIsInQiLCJmYWlsIiwiZW1wdHkiLCJzcGFjZSIsImluZGVudF9hbmRfYWxpZ24iLCJoY2F0IiwiaGNhdHMiLCJkb2NzIiwiaHNlcCIsImhzZXBzIiwidnNlcCIsInZzZXBzIiwiY2hvaWNlIiwiY2hvaWNlcyIsIm1hcF90IiwiZCIsIm1hcF9hbm5vdCIsImQyIiwiZDEiLCJkJDAiLCJkJDEiLCJkMiQwIiwiZDEkMCIsImFsbCIsImxzMSIsImxzMiIsIm1fdW5pb24iLCJjb3N0X3VuaW9uIiwiY29zdDIiLCJjb3N0MSIsImxheW91dF9vZl9kb2MiLCJoIiwicG9zJDAiLCJrZXkiLCJ2YWx1ZSIsInZhbHVlJDAiLCJjb3N0Iiwib3ZlcmZsb3ciLCJ6IiwibGF5b3V0MSIsImxheW91dHMiLCJsYXlvdXQyIiwicCIsImMiLCJsMSQwIiwibGF5b3V0X29mX2RvYyQwIiwieF9jb3N0IiwieF9wb3MiLCJzZXhwX2FyZ3NfMDE4IiwiYXJnMF8wMTkiLCJyZXMwXzAyMCIsInJlczBfMDE1Iiwic2V4cF9hcmdzXzAyMyIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwib2ZfYW5ub3RfMDI5IiwiYXJnMF8wMzAiLCJyZXMwXzAzMSIsInJlczBfMDM1IiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJib3gxJDAiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhcHBlbmRfbGFzdCQwIiwiYm94MSQxIiwiYW5ub3QkMCIsImJveGVzIiwiYm94ZXMxIiwibGVhZGluZyQwIiwiYm94ZXMyIiwiZXJyb3Jfc291cmNlXzAwMiIsInRwX2xvYyIsImVycm9yX3NvdXJjZV8wMTEiLCJ0cF9sb2MkMCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJ4XzAwMyIsInBlcmNlbnRhZ2UiLCJyZXN1bHRzIiwic2V4cF9vZl9zeW50YXhfcmVzdWx0IiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsImFyZ18wMDgiLCJibmRzXzAwNCIsImFyZ18wMDYiLCJibmRzXzAwNCQwIiwic3ludGF4X3Jlc3VsdF9vZl95b2pzb24iLCJ5b2pzb24iLCJmaWVsZF95b2pzb25zIiwicmVzdWx0c19maWVsZCIsInBlcmNlbnRhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwicGVyY2VudGFnZV92YWx1ZSIsInJlc3VsdHNfdmFsdWUiLCJ5b2pzb25fb2Zfc3ludGF4X3Jlc3VsdCIsInZfcGVyY2VudGFnZSIsInZfcmVzdWx0cyIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsImZpbmRfdmFyX3VwYXQiLCJuYW1lIiwidXBhdCIsInVwYXQkMCIsInVwYXQkMSIsInVwMSIsInVwYXQkMiIsInVwYXQkMyIsInVwMSQwIiwidXBhdCQ0IiwibCIsImFjYyIsInVwIiwiZmluZF9pbl9sZXQiLCJkZWYiLCJkZWYkMCIsInBsIiwidWwiLCJ1ZSIsImRlZiQyIiwiZGVmJDEiLCJmaW5kX2ZuIiwidWV4cCIsInVleHAkMCIsImwkMCIsImJvZHkkMCIsImwkMSIsImFyZ3MiLCJmbiIsInUiLCJ1ZXhwJDMiLCJ1MiIsInUxJDAiLCJsJDIiLCJ1ZXhwJDEiLCJ1ZXhwJDIiLCJ1MSIsInVsJDAiLCJ1MSQxIiwiYm9keSIsImwkMyIsInZhcl9tZW50aW9uX3VwYXQiLCJ2YXJfbWVudGlvbiIsInAiLCJ1cyIsImciLCJwZSIsImUiLCJ2YXJfYXBwbGllZCIsIngkMSIsInVleHAkNCIsInVleHAkNSIsIngkMiIsInVleHAkNiIsInVleHAkNyIsInUxJDIiLCJpc19yZWN1cnNpdmUiLCJmbl9ib2RpZXMiLCJ0YWlsX2NoZWNrIiwiYXJncyQwIiwidTIkMCIsInUyJDEiLCJpc190YWlsX3JlY3Vyc2l2ZSIsImNoZWNrIiwicHJlZGljYXRlcyIsInByZWQiLCJsZW5ndGgiLCJwYXNzaW5nIiwicmVzIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDE1IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsInNleHBfYXJnc18wMzAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wMzMiLCJyZXMwXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4IiwiYXJnMF8wMzkiLCJyZXMwXzA0MCIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAxMyIsImVycm9yX3NvdXJjZV8wMjgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wMzgiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8wNDkiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8wNjAiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8wOTQiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8xMDEiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8xMjAiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8xMzMiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8xNDgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwid3JvbmdfaW1wbF9vZl9zZXhwIiwib2ZfY29kZV8wMDEiLCJ4XzAwNCIsImhpbnQiLCJpbXBsIiwic2V4cF9vZl93cm9uZ19pbXBsIiwib2ZfY29kZV8wMDUiLCJoaW50XzAwOSIsImltcGxfMDA3IiwiYXJnXzAxMCIsImJuZHNfMDA2IiwiYm5kc18wMDYkMCIsIndyb25nX2ltcGxfb2ZfeW9qc29uIiwib2ZfY29kZSIsImltcGxfZmllbGQiLCJoaW50X2ZpZWxkIiwiaGludF92YWx1ZSIsImltcGxfdmFsdWUiLCJ5b2pzb25fb2Zfd3JvbmdfaW1wbCIsInZfaGludCIsInZfaW1wbCIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMTEiLCJ4XzAxNCIsImhpbnRzIiwidGVzdHMiLCJzZXhwX29mX2hpZGRlbl90ZXN0cyIsIm9mX2NvZGVfMDE1IiwiaGludHNfMDE5IiwidGVzdHNfMDE3IiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJoaWRkZW5fdGVzdHNfb2ZfeW9qc29uIiwidGVzdHNfZmllbGQiLCJoaW50c19maWVsZCIsImhpbnRzX3ZhbHVlIiwidGVzdHNfdmFsdWUiLCJ5b2pzb25fb2ZfaGlkZGVuX3Rlc3RzIiwidl9oaW50cyIsInZfdGVzdHMiLCJoaW50X29mX3NleHAiLCJzZXhwX29mX2hpbnQiLCJoaW50X29mX3lvanNvbiIsInlvanNvbl9vZl9oaW50Iiwic3ludGF4X3Rlc3Rfb2Zfc2V4cCIsInNleHBfMDI3IiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJzZXhwX29mX3N5bnRheF90ZXN0IiwiYXJnMV8wMzAiLCJhcmcwXzAyOSIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzeW50YXhfdGVzdF9vZl95b2pzb24iLCJ2MSIsInYxJDAiLCJ5b2pzb25fb2Zfc3ludGF4X3Rlc3QiLCJzeW50YXhfdGVzdHNfb2Zfc2V4cCIsInhfMDM0Iiwic2V4cF9vZl9zeW50YXhfdGVzdHMiLCJ4XzAzNSIsInN5bnRheF90ZXN0c19vZl95b2pzb24iLCJ0IiwieW9qc29uX29mX3N5bnRheF90ZXN0cyIsInYiLCJ5b3VyX3Rlc3RzX29mX3NleHAiLCJvZl9jb2RlXzAzNiIsInhfMDM5IiwicHJvdmlkZWQiLCJyZXF1aXJlZCIsInNleHBfb2ZfeW91cl90ZXN0cyIsIm9mX2NvZGVfMDQwIiwicHJvdmlkZWRfMDQ2IiwicmVxdWlyZWRfMDQ0IiwidGVzdHNfMDQyIiwiYXJnXzA0NyIsImJuZHNfMDQxIiwiYXJnXzA0NSIsImJuZHNfMDQxJDAiLCJhcmdfMDQzIiwiYm5kc18wNDEkMSIsInlvdXJfdGVzdHNfb2ZfeW9qc29uIiwicmVxdWlyZWRfZmllbGQiLCJwcm92aWRlZF9maWVsZCIsImZ2YWx1ZSQxIiwicHJvdmlkZWRfdmFsdWUiLCJyZXF1aXJlZF92YWx1ZSIsInlvanNvbl9vZl95b3VyX3Rlc3RzIiwidl9wcm92aWRlZCIsInZfcmVxdWlyZWQiLCJhcmckMSIsImJuZHMkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwieF8wNTAiLCJpbXBsX2dyYWRpbmciLCJtdXRhdGlvbl90ZXN0aW5nIiwidGVzdF92YWxpZGF0aW9uIiwic2V4cF9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJpbXBsX2dyYWRpbmdfMDU2IiwibXV0YXRpb25fdGVzdGluZ18wNTQiLCJ0ZXN0X3ZhbGlkYXRpb25fMDUyIiwiYXJnXzA1NyIsImJuZHNfMDUxIiwiYXJnXzA1NSIsImJuZHNfMDUxJDAiLCJhcmdfMDUzIiwiYm5kc18wNTEkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl95b2pzb24iLCJ0ZXN0X3ZhbGlkYXRpb25fZmllbGQiLCJtdXRhdGlvbl90ZXN0aW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX3ZhbHVlIiwibXV0YXRpb25fdGVzdGluZ192YWx1ZSIsInRlc3RfdmFsaWRhdGlvbl92YWx1ZSIsInlvanNvbl9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X2ltcGxfZ3JhZGluZyIsInZfbXV0YXRpb25fdGVzdGluZyIsInZfdGVzdF92YWxpZGF0aW9uIiwidmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uIiwicF9vZl9zZXhwIiwib2ZfY29kZV8wNTgiLCJ4XzA2MSIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJzZXhwX29mX3AiLCJvZl9jb2RlXzA2MiIsInN5bnRheF90ZXN0c18wODYiLCJoaWRkZW5fdGVzdHNfMDg0IiwiaGlkZGVuX2J1Z3NfMDgyIiwieW91cl9pbXBsXzA4MCIsInlvdXJfdGVzdHNfMDc4IiwiY29ycmVjdF9pbXBsXzA3NiIsInByZWx1ZGVfMDc0IiwicG9pbnRfZGlzdHJpYnV0aW9uXzA3MiIsInByb21wdF8wNzAiLCJtb2R1bGVfbmFtZV8wNjgiLCJ2ZXJzaW9uXzA2NiIsInRpdGxlXzA2NCIsImFyZ18wODciLCJibmRzXzA2MyIsImFyZ18wODUiLCJibmRzXzA2MyQwIiwiYXJnXzA4MyIsImJuZHNfMDYzJDEiLCJhcmdfMDgxIiwiYm5kc18wNjMkMiIsImFyZ18wNzkiLCJibmRzXzA2MyQzIiwiYXJnXzA3NyIsImJuZHNfMDYzJDQiLCJhcmdfMDc1IiwiYm5kc18wNjMkNSIsImFyZ18wNzMiLCJibmRzXzA2MyQ2IiwiYXJnXzA3MSIsImJuZHNfMDYzJDciLCJhcmdfMDY5IiwiYm5kc18wNjMkOCIsImFyZ18wNjciLCJibmRzXzA2MyQ5IiwiYXJnXzA2NSIsImJuZHNfMDYzJDEwIiwicF9vZl95b2pzb24iLCJ0aXRsZV9maWVsZCIsInZlcnNpb25fZmllbGQiLCJtb2R1bGVfbmFtZV9maWVsZCIsInByb21wdF9maWVsZCIsInBvaW50X2Rpc3RyaWJ1dGlvbl9maWVsZCIsInByZWx1ZGVfZmllbGQiLCJjb3JyZWN0X2ltcGxfZmllbGQiLCJ5b3VyX3Rlc3RzX2ZpZWxkIiwieW91cl9pbXBsX2ZpZWxkIiwiaGlkZGVuX2J1Z3NfZmllbGQiLCJoaWRkZW5fdGVzdHNfZmllbGQiLCJzeW50YXhfdGVzdHNfZmllbGQiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJmdmFsdWUkOCIsImZ2YWx1ZSQ5IiwiZnZhbHVlJDEwIiwic3ludGF4X3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX2J1Z3NfdmFsdWUiLCJ5b3VyX2ltcGxfdmFsdWUiLCJ5b3VyX3Rlc3RzX3ZhbHVlIiwiY29ycmVjdF9pbXBsX3ZhbHVlIiwicHJlbHVkZV92YWx1ZSIsInBvaW50X2Rpc3RyaWJ1dGlvbl92YWx1ZSIsInByb21wdF92YWx1ZSIsIm1vZHVsZV9uYW1lX3ZhbHVlIiwidmVyc2lvbl92YWx1ZSIsInRpdGxlX3ZhbHVlIiwieW9qc29uX29mX3AiLCJ2X3N5bnRheF90ZXN0cyIsInZfaGlkZGVuX3Rlc3RzIiwidl9oaWRkZW5fYnVncyIsInZfeW91cl9pbXBsIiwidl95b3VyX3Rlc3RzIiwidl9jb3JyZWN0X2ltcGwiLCJ2X3ByZWx1ZGUiLCJ2X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInZfcHJvbXB0Iiwidl9tb2R1bGVfbmFtZSIsInZfdmVyc2lvbiIsInZfdGl0bGUiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwiYXJnJDQiLCJibmRzJDQiLCJhcmckNSIsImJuZHMkNSIsImFyZyQ2IiwiYm5kcyQ2IiwiYXJnJDciLCJibmRzJDciLCJhcmckOCIsImJuZHMkOCIsImFyZyQ5IiwiYm5kcyQ5IiwiYXJnJDEwIiwiYm5kcyQxMCIsImtleV9vZl9zZXhwIiwic2V4cF8wOTMiLCJhcmcxXzA5MCIsImFyZzBfMDg5IiwicmVzMF8wOTEiLCJyZXMxXzA5MiIsInNleHBfb2Zfa2V5IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBvc19vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX29mX3BvcyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJwb3Nfb2ZfeW9qc29uIiwieW9qc29uX29mX3BvcyIsInNwZWNfb2Zfc2V4cCIsInhfMTExIiwic2V4cF9vZl9zcGVjIiwieF8xMTIiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwidHJhbnNpdGlvbmFyeV9zcGVjX29mX3NleHAiLCJ4XzExNCIsInNleHBfb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwieF8xMTUiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2ZfeW9qc29uIiwieW9qc29uX29mX3RyYW5zaXRpb25hcnlfc3BlYyIsIm1hcCIsImYiLCJ3cm9uZ19pbXBsIiwiZWRzX29mX3NleHAiLCJ4XzExNyIsInNleHBfb2ZfZWRzIiwieF8xMTgiLCJlZHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2VkcyIsInN0YXRlX29mX3NleHAiLCJ4XzEyMSIsImVkcyIsInBvcyIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMTI1IiwicG9zXzEyMyIsImFyZ18xMjYiLCJibmRzXzEyMiIsImFyZ18xMjQiLCJibmRzXzEyMiQwIiwic3RhdGVfb2ZfeW9qc29uIiwicG9zX2ZpZWxkIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwicG9zX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJ2X3BvcyIsImtleV9vZl9zdGF0ZSIsImExIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwic2V4cF8xMzgiLCJhcmcxXzEzNSIsImFyZzBfMTM0IiwicmVzMF8xMzYiLCJyZXMxXzEzNyIsInNleHBfMTMyIiwiYXJnMV8xMjkiLCJhcmcwXzEyOCIsInJlczBfMTMwIiwicmVzMV8xMzEiLCJzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJhcmcxXzE0NCIsImFyZzBfMTQzIiwicmVzMF8xNDUiLCJyZXMxXzE0NiIsImFyZzFfMTQwIiwiYXJnMF8xMzkiLCJyZXMwXzE0MSIsInJlczFfMTQyIiwicGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZSIsImVkaXRvcl9vZl9zdGF0ZSIsImkiLCJwdXRfZWRpdG9yIiwic3RhdGUiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJpZHhfb2ZfcG9zIiwicG9zX29mX2lkeCIsImlkeCIsInN3aXRjaF9lZGl0b3IiLCJpbnN0cnVjdG9yX21vZGUiLCJleGVyY2lzZSIsInppcHBlcl9vZl9jb2RlIiwiY29kZSIsInppcHBlciIsInRyYW5zaXRpb24iLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInlvdXJfdGVzdHMkMCIsInlvdXJfaW1wbCQwIiwiaGlkZGVuX2J1Z3MkMCIsImltcGwkMCIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZHNfb2Zfc3BlYyIsInNldHRpbmdzIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwidGVybV9vZiIsInN0aXRjaDMiLCJlZDEiLCJlZDIiLCJlZDMiLCJzdGl0Y2hfdGVybSIsImluc3RydWN0b3IiLCJ5b3VyX2ltcGxfdGVybSIsInByZWx1ZGVfdGVybSIsInVzZXJfaW1wbF90ZXJtIiwidGVzdF92YWxpZGF0aW9uX3Rlcm0iLCJ1c2VyX3Rlc3RzX3Rlcm0iLCJoaWRkZW5fdGVzdHNfdGVybSIsInN0aXRjaF90ZXJtJDAiLCJzdGl0Y2hfc3RhdGljIiwibWsiLCJpbmZvX21hcCIsInN0aXRjaF9zdGF0aWMkMCIsImhpZGRlbl9idWdzX2tleSIsImtleV9mb3Jfc3RhdGljcyIsInNwbGljZWRfZWxhYnMiLCJ1c2VyX3Rlc3RzIiwidXNlcl9pbXBsIiwiZWxhYiIsInMiLCJoaWRkZW5fYnVnIiwiZW1wdHkiLCJzdGF0aWNzX29ubHkiLCJzdGF0aWNzIiwic3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzIiwic3RpdGNoX2R5bmFtaWMiLCJyZXN1bHRfb2YiLCJyZXN1bHRzJDAiLCJ0ZXN0X3ZhbGlkYXRpb24kMCIsInVzZXJfaW1wbCQwIiwidXNlcl90ZXN0cyQwIiwiaW5zdHJ1Y3RvciQwIiwic3RpdGNoX2R5bmFtaWMkMCIsImVkaXRvcl9wcCIsInNlcmlhbGl6YXRpb24iLCJleHBvcnRfbW9kdWxlIiwicmVjb3JkIiwiZGF0YSIsInRyYW5zaXRpb25hcnlfZWRpdG9yX3BwIiwiZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlIiwiZXhwb3J0X2dyYWRpbmdfbW9kdWxlIiwiaGVhZGVyIiwiYmxhbmtfc3BlYyIsInJlcXVpcmVkX3Rlc3RzIiwicHJvdmlkZWRfdGVzdHMiLCJudW1fd3JvbmdfaW1wbHMiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInhfMTU0Iiwic2V4cF8xNTMiLCJhcmcxXzE1MCIsImFyZzBfMTQ5IiwicmVzMF8xNTEiLCJyZXMxXzE1MiIsImV4ZXJjaXNlX2RhdGEiLCJjdXJfZXhlcmNpc2UiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMTU4IiwiY3VyX2V4ZXJjaXNlXzE1NiIsImFyZ18xNTkiLCJhcmcxXzE2MSIsImFyZzBfMTYwIiwicmVzMF8xNjIiLCJyZXMxXzE2MyIsImJuZHNfMTU1IiwiYXJnXzE1NyIsImJuZHNfMTU1JDAiLCJleGVyY2lzZV9leHBvcnRfb2ZfeW9qc29uIiwiY3VyX2V4ZXJjaXNlX2ZpZWxkIiwiZXhlcmNpc2VfZGF0YV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfdmFsdWUiLCJjdXJfZXhlcmNpc2VfdmFsdWUiLCJ5b2pzb25fb2ZfZXhlcmNpc2VfZXhwb3J0Iiwidl9leGVyY2lzZV9kYXRhIiwidl9jdXJfZXhlcmNpc2UiLCJzZXJpYWxpemVfZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwZXJjZW50YWdlX29mX3NleHAiLCJzZXhwX29mX3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJjZW50YWdlIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJyZXBvcnQiLCJudW1fdGVzdHMiLCJudW1fcGFzc2luZyIsInRlc3Rfc3VtbWFyeV9zdHIiLCJoaWRkZW5fYnVnX3N0YXR1cyIsInRlc3RfdmFsaWRhdGlvbl9kYXRhIiwiaGlkZGVuX2J1Z19kYXRhIiwiaGlkZGVuX2J1Z19kYXRhJDAiLCJ0ZXN0X3ZhbGlkYXRpb25fZGF0YSQwIiwidmFsaWRhdGlvbl90ZXN0X21hcCIsImhpZGRlbl9idWdfdGVzdF9tYXAiLCJmb3VuZCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwibWskMCIsImhpZGRlbl9idWdzX3N0YXRlIiwicGVyY2VudGFnZSQwIiwibnVtX3Bhc3NlZCIsInN1bW1hcnlfc3RyIiwidG90YWwiLCJtayQxIiwiaCIsInN5bnRheF9yZXN1bHRzIiwiciIsIm1rJDIiLCJ0ZXN0X3Jlc3VsdHMkMCIsInN0YXR1c2VzIiwiaGludGVkX3Jlc3VsdHMiLCJwZXJjZW50YWdlJDEiLCJzeW50YXhfcmVwb3J0IiwidGVzdF9zdW1tYXJ5X3N0ciQwIiwibWskMyIsInN0aXRjaGVkX2R5bmFtaWNzIiwib3ZlcmFsbF9zY29yZSIsImltcGxfZ3JhZGluZ19yZXBvcnQiLCJtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCIsInRlc3RfdmFsaWRhdGlvbl9yZXBvcnQiLCJ0dl9tYXgiLCJ0dl9wb2ludHMiLCJtdF9tYXgiLCJtdF9wb2ludHMiLCJpZ19tYXgiLCJpZ19wb2ludHMiLCJ0b3RhbF9wb2ludHMiLCJvdXRwdXRfaGVhZGVyIiwiREVCVUciLCJPTURfREVCVUciLCJkZWJ1ZyIsIndhcm4iLCJtc2ciLCJ3ZSIsInRyYWNrZml4IiwicmFpc2UiLCJlIiwib2ZfbGlzdCIsImwiLCJyIiwiZnNwbGl0X3JldiIsImYiLCJleGNsIiwiYWNjdSIsImwkMCIsInRsIiwicmlnaHQiLCJsZWZ0JDAiLCJ0bCQwIiwibGVmdCIsInJpZ2h0JDAiLCJsZWZ0JDIiLCJ0bCQxIiwibGVmdCQxIiwiZnNwbGl0IiwicmV2IiwiaWRfb2Zfc3RyaW5nIiwiaWRzIiwicyIsIm4iLCJvdXQiLCJzdGFydGVkIiwiaSIsImMiLCJpJDIiLCJpJDAiLCJpJDEiLCJzJDAiLCJpJDQiLCJsYXN0X3RyYWlsaW5nIiwiaSQzIiwiaHRtbGVudGl0aWVzIiwibWQiLCJiIiwiaiQxIiwiaiIsImokMCIsImokNCIsImokMiIsImokMyIsIm1pbmltYWxpemVfYmxhbmtzIiwiZiQwIiwiZWF0IiwiZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMiLCJodG1sIiwiaHRtbCQwIiwiY3V0X29uX2NoYXJfZnJvbSIsInJlbW92ZV9wcmVmaXhfc3BhY2VzIiwiaHRtbCQyIiwicmVzIiwiYWZ0ZXJfZXEiLCJuYW1lIiwibmFtZSQwIiwiYWZ0ZXJfZXEkMCIsInJlc3QiLCJ2YWx1ZSIsIm5ld19zIiwiYSIsInJlcyQwIiwiaHRtbCQxIiwiZXh0cmFjdF9pbm5lcl9odG1sIiwicCIsImh0bWxfdm9pZF9lbGVtZW50cyIsInN5bWJvbCIsImwxIiwibDIiLCJzZWxmXzEiLCJ0aXRsZSIsInVybCIsImxuIiwibG9vc2VfY29tcGFyZSIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsImUxIiwidGwyJDAiLCJlMiQwIiwidGwxJDAiLCJlMSQwIiwidGwyIiwiZTIiLCJ0bDEiLCJ0bDIkMSIsImUyJDEiLCJ0bDEkMSIsImUxJDEiLCJ0bDEkMiIsImMxIiwidGwyJDIiLCJjMiIsImkkNSIsInRsMSQzIiwidGl0bGUxIiwidDEkMSIsImhyZWYxIiwidGwyJDMiLCJ0aXRsZTIiLCJ0MiQxIiwiaHJlZjIiLCJpJDYiLCJpJDciLCJpJDgiLCJ0bDIkNCIsImZhbGxiYWNrMiIsIngyIiwibmFtZTIiLCJyZWZfY29udGFpbmVyMiIsInRsMSQ0IiwiZmFsbGJhY2sxIiwieDEiLCJuYW1lMSIsInJlZl9jb250YWluZXIxIiwiZTEkMiIsInRsMiQ1IiwiZTIkMiIsInRsMSQ1IiwiaSQxMSIsImkkMTIiLCJpJDkiLCJjZmYiLCJpJDEwIiwibDEkMCIsImwyJDAiLCJ0bDIkNiIsImUyJDMiLCJ0bDEkNiIsImUxJDMiLCJpJDEzIiwic2VsZl8yIiwiZW1wdHlfZXh0ZW5zaW9uIiwibm9ybWFsaXNlX21kIiwibG9vcCIsInYiLCJ0bCQyIiwidiQwIiwibG9vcCQwIiwidGwkMyIsInYkMSIsInRsJDQiLCJ2JDIiLCJ0bCQ1IiwidiQzIiwidGwkNiIsInYkNCIsInRsJDciLCJ2JDUiLCJ0bCQxMCIsInRsJDkiLCJ0bCQ4IiwidGwkMTEiLCJ0bCQxMiIsInYkNiIsInRsJDEzIiwidiQ3IiwidGwkMTQiLCJ2JDgiLCJ0bCQxNSIsInYkOSIsInRsJDE2IiwidiQxMCIsInRsJDE3IiwidiQxMSIsInRsJDE4IiwidiQxMiIsImhyZWYiLCJ0bCQxOSIsInYkMTMiLCJzZWxmXzMiLCJ2aXNpdCIsImwkMSIsImwkMiIsImwkMyIsImwkNCIsImwkNSIsImwkNiIsImwkNyIsImwkOCIsImwkOSIsImwkMTAiLCJsJDExIiwibCQxMiIsImwkMTMiLCJsJDE0IiwibCQxNSIsImwkMTYiLCJsJDE3IiwibCQxOCIsImwkMTkiLCJ0bCQyMCIsImwkMjAiLCJ0bCQyMSIsImwkMjEiLCJ0bCQyMiIsImwkMjIiLCJ0bCQyMyIsImwkMjMiLCJ0bCQyNCIsImwkMjQiLCJ0bCQyNSIsImwkMjUiLCJ0bCQyNiIsImwkMjYiLCJ0bCQyNyIsImwkMjciLCJ0bCQyOCIsImwkMjgiLCJkZWZhdWx0X2xhbmd1YWdlIiwidGV4dF9vZl9tZCIsIm1kJDAiLCJ0IiwibWQkMSIsIm1kJDIiLCJjJDAiLCJib2R5IiwiYm9keSQwIiwidCQwIiwidCQxIiwicSIsImFsdCIsIml0ZW0iLCJkZWZhdWx0X2NvZGVfc3R5bGlzdCIsImxhbmciLCJjb2RlIiwiZmlsdGVyX3RleHRfb21kX3JldiIsInJlbW92ZV9saW5rcyIsImh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQiLCJyZW1vdmVfaGVhZGVyX2xpbmtzIiwib3ZlcnJpZGUiLCJwaW5kZW50IiwibmwyYnIiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJodG1sX29mX21kIiwibWQkMyIsIm1kJDQiLCJlJDIiLCJtZCQ1IiwiZSQzIiwicyQzIiwiaWgkMCIsImlkJDAiLCJtZCQ2IiwibWQkNyIsImUkNCIsIm1kJDgiLCJlJDUiLCJzJDQiLCJpaCQxIiwiaWQkMSIsIm1kJDkiLCJtZCQxMCIsImUkNiIsIm1kJDExIiwiZSQ3IiwicyQ1IiwiaWgkMiIsImlkJDIiLCJtZCQxMiIsIm1kJDEzIiwiZSQ4IiwibWQkMTQiLCJlJDkiLCJzJDYiLCJpaCQzIiwiaWQkMyIsIm1kJDE1IiwibWQkMTYiLCJlJDEwIiwibWQkMTciLCJlJDExIiwicyQ3IiwiaWgkNCIsImlkJDQiLCJtZCQxOCIsInMkOCIsInMkOSIsInMkMTAiLCJtZCQxOSIsInMkMTEiLCJtZCQyMCIsInMkMTIiLCJzJDE0IiwibmV3X2MiLCJsYW5nJDAiLCJzJDE1IiwibmV3X2MkMCIsInMkMTYiLCJzJDE3IiwicyQxOCIsImZhbGxiYWNrIiwidGV4dCIsInJjIiwicyQxOSIsInRpdGxlJDAiLCJocmVmJDAiLCJmYWxsYmFjayQwIiwicmMkMCIsInMkMjAiLCJ0aXRsZSQxIiwic3JjIiwidGFnbmFtZSIsImF0dHJzJDEiLCJhdHRycyQyIiwicyQyMiIsInN0cmluZ19vZl9hdHRycyIsImF0dHJzIiwiYXR0cnMkMCIsInMkMjEiLCJhdHRycyQzIiwidGFnbmFtZSQwIiwiYXR0cnMkNCIsInMkMjMiLCJzJDI0IiwicyQyNSIsInMkMjYiLCJzJDI3IiwicyQyOCIsInMkMjkiLCJzJDMwIiwidGl0bGUkMiIsInNyYyQwIiwiYWx0JDAiLCJzJDMxIiwieCIsInMkMzIiLCJzJDMzIiwicyQxMyIsImxpIiwiY3MiLCJoZWFkZXJzX29mX21kIiwic2V4cHJfb2ZfbWQiLCJ0bCQyOSIsInRsJDMwIiwiZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMiLCJtYXJrZG93bl9vZl9tZCIsImFkZF9zcGFjZXMiLCJyZWZlcmVuY2VzIiwibGlzdF9pbmRlbnQiLCJmc3RfcF9pbl9saSIsImlzX2luX2xpc3QiLCJmc3RfcF9pbl9saSQwIiwiaXNfaW5fbGlzdCQwIiwiYyQxIiwiYyQyIiwiZmlsdGVyIiwiYiQxIiwiYiQyIiwieCQwIiwiaGQiLCJjJDMiLCJmaWx0ZXIkMCIsImIkMyIsImIkNCIsImhkJDAiLCJuJDAiLCJvdXRwdXRfaW5kZW50ZWRfYmxvY2siLCJwJDAiLCJwJDEiLCJuZWVkc19uZXdsaW5lcyIsImEkMCIsImIkMCIsIm5sIiwieCQxIiwic3RyaW5nX29mX3Rva2VuIiwibiQxIiwibiQyIiwibiQzIiwibiQ0IiwibiQ1IiwibiQ2IiwibiQ3IiwibiQ4IiwibiQ5IiwibiQxMCIsIm4kMTEiLCJuJDEyIiwibiQxMyIsIm4kMTQiLCJuJDE1IiwibiQxNiIsIm4kMTciLCJuJDE4IiwibiQxOSIsIm4kMjAiLCJuJDIxIiwibiQyMiIsIm4kMjMiLCJuJDI0IiwibiQyNSIsIm4kMjYiLCJuJDI3IiwibiQyOCIsIm4kMjkiLCJuJDMwIiwibiQzMSIsIm4kMzIiLCJuJDMzIiwibyIsImxlbmd0aCIsInNwbGl0X2ZpcnN0IiwibGV4IiwicmVzdWx0Iiwid29yZCIsInN0YXJ0Iiwibl9vY2MiLCJyJDAiLCJybiIsInciLCJnZXQiLCJsZW5ndGgkMCIsInN1YiIsImFyciIsInBvcyIsImxlbiIsImxleF9iaWdhcnJheSIsIm1ha2Vfc3BhY2UiLCJzdHJpbmdfb2ZfdG9rZW5zIiwiZGVzdHJpbmdfb2ZfdG9rZW5zIiwidGxpc3QiLCJsaW1pdCIsInRsaXN0JDAiLCJ0bGlzdCQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQxMSIsInByZXZpb3VzJDEwIiwicHJldmlvdXMkMTMiLCJwcmV2aW91cyQxMiIsInByZXZpb3VzJDE1IiwicHJldmlvdXMkMTQiLCJwcmV2aW91cyQxNyIsInByZXZpb3VzJDE2IiwicHJldmlvdXMkMTkiLCJwcmV2aW91cyQxOCIsInByZXZpb3VzJDIxIiwicHJldmlvdXMkMjAiLCJwcmV2aW91cyQyMyIsInByZXZpb3VzJDIyIiwicHJldmlvdXMkMjUiLCJwcmV2aW91cyQyNCIsInByZXZpb3VzJDI3IiwicHJldmlvdXMkMjYiLCJwcmV2aW91cyQyOSIsInByZXZpb3VzJDI4IiwicHJldmlvdXMkMzEiLCJwcmV2aW91cyQzMCIsInByZXZpb3VzJDMzIiwicHJldmlvdXMkMzIiLCJwcmV2aW91cyQzNSIsInByZXZpb3VzJDM0IiwicHJldmlvdXMkMzciLCJwcmV2aW91cyQzNiIsInByZXZpb3VzJDM5IiwicHJldmlvdXMkMzgiLCJwcmV2aW91cyQ0MSIsInByZXZpb3VzJDQwIiwicHJldmlvdXMkNDMiLCJwcmV2aW91cyQ0MiIsInByZXZpb3VzJDkiLCJwcmV2aW91cyQ0NCIsInByZXZpb3VzJDQ4IiwicHJldmlvdXMkNDkiLCJwcmV2aW91cyQ3IiwicHJldmlvdXMkNiIsInByZXZpb3VzJDgiLCJwcmV2aW91cyQ1IiwicHJldmlvdXMkNCIsInByZXZpb3VzJDMiLCJwcmV2aW91cyQyIiwicHJldmlvdXMkMCIsInByZXZpb3VzJDEiLCJwcmV2aW91cyQ0NyIsInByZXZpb3VzJDQ2IiwicHJldmlvdXMkNDUiLCJpbmRlbnRzJDEiLCJpbmRlbnRzJDAiLCJpbmRlbnRzJDIiLCJpbmRlbnRzIiwiZGVmYXVsdF9sYW5nIiwiZXh0ZW5zaW9ucyIsImdoX3VlbXBoX29yX2JvbGRfc3R5bGUiLCJibGluZF9odG1sIiwic3RyaWN0X2h0bWwiLCJ3YXJuX2Vycm9yIiwiaHRtbGNvZGVzX3NldCIsImlubGluZV9odG1sdGFnc19zZXQiLCJub3RpbmJvZHl0YWdzIiwiaHRtbHRhZ3Nfc2V0IiwiZml4IiwiYWNjdSQwIiwidGwkMzEiLCJ0bCQzMiIsInRsJDMzIiwidGwkMzQiLCJ0bCQzNSIsInRsJDM2IiwidGwkMzciLCJ0bCQzOCIsInRsJDM5IiwidGwkNDAiLCJ0bCQ0MSIsInRsJDQyIiwidGwkNDMiLCJ0bCQ0NCIsInRsJDQ1IiwidGwkNDYiLCJ0bCQ0NyIsInRsJDQ4IiwidGwkNDkiLCJ0bCQ1MCIsInRsJDUxIiwidGwkNTIiLCJ0bCQ1MyIsInRsJDU0IiwidGwkNTUiLCJ0bCQ1NiIsInRsJDU3IiwidGwkNTgiLCJ0bCQ1OSIsInRsJDYwIiwidGwkNjEiLCJ0bCQ2MiIsInRsJDYzIiwidGwkNjQiLCJ0bCQ2NSIsInRsJDY2IiwidGwkNjciLCJ0bCQ2OCIsInRsJDY5IiwibiQzNCIsInRsJDcwIiwidGwkNzEiLCJuJDM1IiwidGwkNzIiLCJ0bCQ3MyIsIm4kMzYiLCJ0bCQ3NCIsInRsJDc1IiwibiQzNyIsInRsJDc2IiwidGwkNzciLCJuJDM4IiwidGwkNzgiLCJ0bCQ3OSIsIm4kMzkiLCJ0bCQ4MCIsInRsJDgxIiwibiQ0MCIsInRsJDgyIiwidGwkODMiLCJiJDUiLCJuJDQxIiwidGwkODQiLCJ0bCQ4NSIsImIkNiIsIm4kNDIiLCJ0bCQ4NiIsInRsJDg3IiwiYiQ3IiwibiQ0MyIsInRsJDg4IiwidGwkODkiLCJiJDgiLCJuJDQ0IiwidGwkOTAiLCJ0bCQ5MSIsImIkOSIsIm4kNDUiLCJ0bCQ5MiIsInRsJDkzIiwiYiQxMCIsIm4kNDYiLCJ0bCQ5NCIsInRsJDk1IiwiYiQxMSIsIm4kNDciLCJ0bCQ5NiIsInRsJDk3IiwiYiQxMiIsIm4kNDgiLCJ0bCQ5OCIsInRsJDk5IiwiYiQxMyIsIm4kNDkiLCJ0bCQxMDAiLCJ0bCQxMDEiLCJiJDE0IiwibiQ1MCIsInRsJDEwMiIsInRsJDEwMyIsImIkMTUiLCJuJDUxIiwidGwkMTA0IiwidGwkMTA1IiwiYiQxNiIsIm4kNTIiLCJ0bCQxMDYiLCJ0bCQxMDciLCJiJDE3IiwibiQ1MyIsInRsJDEwOCIsInRsJDEwOSIsImIkMTgiLCJuJDU0IiwidGwkMTEwIiwidGwkMTExIiwiYiQxOSIsIm4kNTUiLCJ0bCQxMTIiLCJ0bCQxMTMiLCJiJDIwIiwibiQ1NiIsInRsJDExNCIsInRsJDExNSIsImIkMjEiLCJuJDU3IiwidGwkMTE2IiwidGwkMTE3IiwiYiQyMiIsIm4kNTgiLCJ0bCQxMTgiLCJ0bCQxMTkiLCJiJDIzIiwibiQ1OSIsInRsJDEyMCIsInRsJDEyMSIsImIkMjQiLCJuJDYwIiwidGwkMTIyIiwidGwkMTIzIiwiYiQyNSIsIm4kNjEiLCJ0bCQxMjQiLCJ0bCQxMjUiLCJiJDI2IiwibiQ2MiIsInRsJDEyNiIsInRsJDEyNyIsImIkMjciLCJuJDYzIiwidGwkMTI4IiwidGwkMTI5IiwiYiQyOCIsIm4kNjQiLCJ0bCQxMzAiLCJ0bCQxMzEiLCJiJDI5IiwibiQ2NSIsInRsJDEzMiIsInRsJDEzMyIsImIkMzAiLCJuJDY2IiwidGwkMTM0IiwidGwkMTM1IiwiYiQzMSIsIm4kNjciLCJ0bCQxMzYiLCJ0bCQxMzciLCJiJDMyIiwibiQ2OCIsInRsJDEzOCIsInRsJDEzOSIsImIkMzMiLCJyZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyIsIm1ha2VfcGFyYWdyYXBocyIsImNwJDAiLCJjcCQ1IiwiYWNjdSQxNyIsImIxIiwiYjIiLCJjbGVhbl9wYXJhZ3JhcGhzIiwiYXNzZXJ0X3dlbGxfZm9ybWVkIiwiZXh0cmFjdF9mYWxsYmFjayIsIm1haW5fbG9vcCIsInJlbWFpbnMiLCJyJDEiLCJhY2N1JDIiLCJyJDIiLCJtIiwiYWNjdSQzIiwidW5pbmRlbnRfcmV2IiwibGV4ZW1lcyIsImNsJDAiLCJ5IiwidW5pbmRlbnQiLCJzbmQiLCJmc3QiLCJpc19ibGFuayIsInNlbXBoX29yX2JvbGQiLCJzbV91ZW1waF9vcl9ib2xkIiwiZ2hfdWVtcGhfb3JfYm9sZCIsInVlbXBoX29yX2JvbGQiLCJlYXRfYmxhbmsiLCJzZXRleHRfdGl0bGUiLCJkZXRlY3RfYmFsYW5jZWRfYnFzIiwiciQzIiwiciQ0IiwiciQ1IiwiciQ2IiwiciQ3IiwiYmwiLCJibCQwIiwidGFnX21heWJlX2gxIiwidGFnX21heWJlX2gyIiwidGFnX21kIiwic2VsZl80IiwidGFnX3NldGV4dCIsInBsJDAiLCJybGVmdCQwIiwicmlnaHQkMSIsInJpZ2h0JDIiLCJybGVmdCIsImhyX20iLCJocl9zIiwiaHIiLCJiY29kZSIsImRlZmF1bHRfbGFuZyQwIiwiYWNjdSQxIiwiY2IiLCJjb2RlJDAiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDEiLCJjbGVhbl9iY29kZSIsImNvZGUkNCIsInJlYWRfdW50aWxfZ3QiLCJicSIsIm5vX25sIiwiYWNjdSQxOSIsImFjY3UkMjAiLCJ4JDIiLCJyZWFkX3VudGlsX2x0IiwiYWNjdSQxNiIsInJlYWRfdW50aWxfY3BhcmVudGgiLCJyZWFkX3VudGlsX29wYXJlbnRoIiwicmVhZF91bnRpbF9kcSIsInJlYWRfdW50aWxfcSIsInJlYWRfdW50aWxfb2JyYWNrZXQiLCJyZWFkX3VudGlsX2NicmFja2V0IiwicmVhZF91bnRpbF9zcGFjZSIsInJlYWRfdW50aWxfbmV3bGluZSIsInJlYWRfdGl0bGUiLCJoIiwiaCQwIiwibWF5YmVfZXh0ZW5zaW9uIiwibnAiLCJuciIsImsiLCJlbWFpbHN0eWxlX3F1b3RpbmciLCJibG9jayQwIiwiY2wkMiIsImJsb2NrIiwibWF5YmVfcmVmZXJlbmNlIiwibWF5YmVfZGVmIiwicmVtYWlucyQwIiwicmVtYWlucyQxIiwicmVtYWlucyQyIiwidXJsJDAiLCJ1cmwkMSIsImJsYW5rIiwiZmxhZyIsInJlbWFpbnMkMyIsInRleHQkMCIsImZhbGxiYWNrJDEiLCJtYXliZV9saW5rIiwicmVhZF91cmwiLCJyX2NwIiwibF9jcCIsInJfZHEiLCJsX2RxIiwicmVzdCQwIiwiaGFzX3BhcmFncmFwaHMiLCJwYXJzZV9saXN0IiwiZW5kX29mX2l0ZW0iLCJzZWxmXzYiLCJzZWxmXzUiLCJibG9jayQ1IiwicmVzdCQ2IiwiYmxvY2skNiIsInJlc3QkNyIsImJsb2NrJDciLCJyZXN0JDUiLCJibG9jayQ4IiwicmVzdCQ5IiwiYmxvY2skOSIsInJlc3QkMTAiLCJibG9jayQxMCIsInJlc3QkOCIsInJlc3QkMSIsImJsb2NrJDEiLCJibG9jayQyIiwicmVzdCQzIiwiYmxvY2skMyIsInJlc3QkNCIsImJsb2NrJDQiLCJyZXN0JDIiLCJyZXZfdG9fdCIsImFkZCIsInN1Ymxpc3QiLCJpdGVtcyIsIml0ZW0kMCIsIm1ha2VfdXAiLCJpdGVtcyQwIiwibGlzdF9pdGVtcyIsImluZGVudHMkMyIsImluZGVudHMkNCIsIm5ld19pdGVtJDAiLCJwJDIiLCJpdGVtcyQ1IiwiaXRlbXMkMyIsIml0ZW1zJDQiLCJuZXdfaXRlbSQxIiwicCQzIiwiaXRlbXMkOCIsIml0ZW1zJDYiLCJzdWJsaXN0JDAiLCJpdGVtcyQ3IiwibmV3X2l0ZW0iLCJpdGVtcyQxIiwiaXRlbXMkMiIsIm5ld19pdGVtJDIiLCJwJDQiLCJpdGVtcyQ5IiwiaXRlbXMkMTAiLCJuZXdfaXRlbSQzIiwicCQ1IiwiaXRlbXMkMTEiLCJzdWJsaXN0JDEiLCJpdGVtcyQxMiIsIml0ZW1zJDEzIiwiaW5kZW50cyQ1IiwibmV3X2l0ZW0kNCIsInAkNiIsIml0ZW1zJDE0Iiwic3VibGlzdCQyIiwiaXRlbXMkMTUiLCJpdGVtcyQxNiIsImluZGVudHMkNiIsInN0cmluZ19vZl9pdGVtcyIsImluZGVudCQwIiwicnAiLCJpY29kZSIsInNlbGZfNyIsImR1bW15X3RhZyIsInNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSIsInNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbiIsIm5ld2xpbmVzIiwibWF5YmVfYXV0b2VtYWlsIiwiZG9tYWluIiwiZW1haWwiLCJpc19oZXgiLCJtZWRpYXR5cGV0ZXh0b21kIiwibWFpbl9pbXBsX3JldiIsInByZXZpb3VzJDUwIiwicHJldmlvdXMkNTEiLCJsZXhlbWVzJDAiLCJsZXhlbWVzJDEiLCJsZXhlbWVzJDIiLCJwcmV2aW91cyQ1MiIsImxleGVtZXMkMyIsInByZXZpb3VzJDUzIiwibGV4ZW1lcyQ0IiwicHJldmlvdXMkNTQiLCJ3JDAiLCJsZXhlbWVzJDUiLCJwcmV2aW91cyQ1NSIsImxleGVtZXMkNiIsInByZXZpb3VzJDU2IiwiciQ4IiwibGV4ZW1lcyQ3IiwicHJldmlvdXMkNTciLCJyJDkiLCJ3JDEiLCJsZXhlbWVzJDgiLCJyJDEzIiwicHJldmlvdXMkNTgiLCJyJDEwIiwibGV4ZW1lcyQ5IiwicHJldmlvdXMkNTkiLCJyJDExIiwibGV4ZW1lcyQxMCIsInByZXZpb3VzJDYwIiwiciQxMiIsImxleGVtZXMkNjEiLCJyJDExNiIsInQkMyIsImxleGVtZXMkNjIiLCJwcmV2aW91cyQxMDciLCJyJDY1IiwibGV4ZW1lcyQ2MyIsInByZXZpb3VzJDEwOCIsInIkNjYiLCJsZXhlbWVzJDY0IiwicHJldmlvdXMkMTA5IiwiciQ2NyIsImxleGVtZXMkNjUiLCJwcmV2aW91cyQxMTAiLCJyJDY4IiwibGV4ZW1lcyQ2NiIsInByZXZpb3VzJDExMSIsInIkNjkiLCJsZXhlbWVzJDY3IiwicHJldmlvdXMkMTEyIiwiciQ3MCIsImxleGVtZXMkNjgiLCJwcmV2aW91cyQxMTMiLCJyJDcxIiwibGV4ZW1lcyQ2OSIsInByZXZpb3VzJDExNCIsInIkNzIiLCJsZXhlbWVzJDcwIiwicHJldmlvdXMkMTE1IiwiciQ3MyIsImxleGVtZXMkNzEiLCJwcmV2aW91cyQxMTYiLCJyJDc0IiwibGV4ZW1lcyQ3MiIsInByZXZpb3VzJDExNyIsInIkNzUiLCJsZXhlbWVzJDczIiwicHJldmlvdXMkMTE4IiwiciQ3NiIsImxleGVtZXMkNzQiLCJwcmV2aW91cyQxMTkiLCJyJDc3IiwibGV4ZW1lcyQ3NSIsInByZXZpb3VzJDEyMCIsInIkNzgiLCJsZXhlbWVzJDc2IiwicHJldmlvdXMkMTIxIiwiciQ3OSIsImxleGVtZXMkNzciLCJwcmV2aW91cyQxMjIiLCJyJDgwIiwibGV4ZW1lcyQ3OCIsInByZXZpb3VzJDEyMyIsInIkODEiLCJsZXhlbWVzJDc5IiwiciQ4MiIsImxleGVtZXMkODAiLCJyJDgzIiwibGV4ZW1lcyQ4MSIsInIkODQiLCJsZXhlbWVzJDgyIiwiciQ4NSIsImxleGVtZXMkODMiLCJyJDg2IiwibGV4ZW1lcyQ4NCIsInIkODciLCJsZXhlbWVzJDg1IiwiciQ4OCIsImxleGVtZXMkODYiLCJyJDg5IiwibGV4ZW1lcyQ4NyIsInIkOTAiLCJsZXhlbWVzJDg4IiwiciQ5MSIsImxleGVtZXMkODkiLCJyJDkyIiwibGV4ZW1lcyQ5MCIsInIkOTMiLCJsZXhlbWVzJDkxIiwiciQ5NCIsImxleGVtZXMkOTIiLCJyJDk1IiwibGV4ZW1lcyQ5MyIsInIkOTYiLCJsZXhlbWVzJDk0IiwiciQ5NyIsImxleGVtZXMkOTUiLCJyJDk4IiwibGV4ZW1lcyQ5NiIsInIkOTkiLCJsZXhlbWVzJDk3IiwiciQxMDAiLCJsZXhlbWVzJDk4IiwiciQxMDEiLCJsZXhlbWVzJDk5IiwiciQxMDIiLCJsZXhlbWVzJDEwMCIsInIkMTAzIiwibGV4ZW1lcyQxMDEiLCJyJDEwNCIsImxleGVtZXMkMTAyIiwiciQxMDUiLCJsZXhlbWVzJDEwMyIsInIkMTA2IiwibGV4ZW1lcyQxMDQiLCJyJDEwNyIsImxleGVtZXMkMTA1IiwiciQxMDgiLCJsZXhlbWVzJDEwNiIsInIkMTA5IiwibGV4ZW1lcyQxMDciLCJyJDExMCIsImxleGVtZXMkMTA4IiwiciQxMTEiLCJsZXhlbWVzJDEwOSIsInIkMTEyIiwibGV4ZW1lcyQxMTAiLCJyJDExMyIsImxleGVtZXMkMTExIiwiciQxMTQiLCJsZXhlbWVzJDExMiIsInIkMTE1IiwiciQ2NCIsImxleGVtZXMkMTEzIiwibGV4ZW1lcyQxMTQiLCJwcmV2aW91cyQxMjQiLCJyJDExNyIsInByZXZpb3VzJDEyNSIsInIkMTE4IiwibGV4ZW1lcyQxMTkiLCJnIiwibGV4ZW1lcyQxMjMiLCJjb21tZW50cyIsInIkMTMyIiwibGV4ZW1lcyQxMjQiLCJwcmV2aW91cyQxMzIiLCJyJDEzMyIsInByZXZpb3VzJDEzMyIsInIkMTM0IiwidyQ1IiwidyQ2IiwibGV4ZW1lcyQxMjUiLCJnJDAiLCJsZXhlbWVzJDEyNiIsInIkMTM2IiwibGV4ZW1lcyQxMjciLCJyJDEzNyIsInIkMTM1IiwibGV4ZW1lcyQxMjgiLCJyJDEzOCIsImxleGVtZXMkMTI5IiwibGV4ZW1lcyQxMzAiLCJwcmV2aW91cyQxMzQiLCJyJDEzOSIsImxleGVtZXMkMTMxIiwicHJldmlvdXMkMTM1IiwiciQxNDAiLCJsZXhlbWVzJDEzMiIsInByZXZpb3VzJDEzNiIsInIkMTQxIiwicHJldmlvdXMkMTM3IiwiciQxNDIiLCJsZXhlbWVzJDEzMyIsImxleGVtZXMkMTM0IiwieCQzIiwicHJldmlvdXMkMTM4IiwiciQxNDMiLCJtYWluX2ltcGwiLCJsZXhlbWVzJDEzNSIsInByZXZpb3VzJDEzOSIsInIkMTQ0IiwicHJldmlvdXMkMTQwIiwiciQxNDUiLCJsZXhlbWVzJDEzNiIsInIkMTQ2IiwibGV4ZW1lcyQxMzciLCJyJDE0NyIsImxleGVtZXMkMTM4IiwicHJldmlvdXMkMTQxIiwiciQxNDgiLCJsZXhlbWVzJDEzOSIsInByZXZpb3VzJDE0MiIsInIkMTQ5IiwibGV4ZW1lcyQxNDAiLCJwcmV2aW91cyQxNDMiLCJyJDE1MCIsImxleGVtZXMkMTQxIiwiciQxNTEiLCJsZXhlbWVzJDE0MiIsImxleGVtZXMkMTQzIiwieCQ0IiwicHJldmlvdXMkMTQ0IiwiciQxNTIiLCJwcmV2aW91cyQxNDUiLCJyJDE1MyIsImxleGVtZXMkMTQ0IiwicHJldmlvdXMkMTQ2IiwiciQxNTQiLCJwcmV2aW91cyQxNDciLCJyJDE1NSIsImxleGVtZXMkMTQ1IiwidyQ3IiwicHJldmlvdXMkMTQ4IiwiciQxNTYiLCJsZXhlbWVzJDE0NiIsImxleGVtZXMkMTQ3IiwicHJldmlvdXMkMTQ5IiwiciQxNTciLCJsZXhlbWVzJDU4IiwibGV4ZW1lcyQ1OSIsInByZXZpb3VzJDEwNCIsInIkNjEiLCJsZXhlbWVzJDYwIiwicHJldmlvdXMkMTA1IiwiciQ2MiIsInByZXZpb3VzJDEwNiIsInIkNjMiLCJ3JDQiLCJsZXhlbWVzJDEyMCIsInVybCQyIiwibGV4ZW1lcyQxMjIiLCJwcmV2aW91cyQxMzAiLCJyJDEzMCIsInByZXZpb3VzJDEzMSIsInIkMTMxIiwibGV4ZW1lcyQxMjEiLCJ1cmwkMyIsInIkMTI4IiwiciQxMjkiLCJsZXhlbWVzJDExNSIsImxleGVtZXMkMTE2IiwiciQxMjEiLCJ0bHMiLCJsZXhlbWVzJDExNyIsInByZXZpb3VzJDEyNiIsInIkMTE5IiwicHJldmlvdXMkMTI3IiwiciQxMjAiLCJudGwkMCIsIm50bCQxIiwiYWx0JDIiLCJhbHQkMSIsInIkMTI3IiwibnRsIiwicGF0aF90aXRsZSIsInBhdGgiLCJub3RoaW5nIiwiciQxMjUiLCJwYXRoJDAiLCJ0aXRsZSQzIiwiciQxMjQiLCJyJDEyNiIsImxleGVtZXMkMTE4IiwicHJldmlvdXMkMTI4IiwiciQxMjIiLCJwcmV2aW91cyQxMjkiLCJyJDEyMyIsInNwIiwibGV4ZW1lcyQzNyIsInByZXZpb3VzJDg4IiwiciQ0MyIsImxleGVtZXMkMzgiLCJwcmV2aW91cyQ4OSIsInIkNDQiLCJsZXhlbWVzJDQ1IiwicHJldmlvdXMkOTUiLCJsZXhlbWVzJDQ3IiwibGV4ZW1lcyQ1MSIsInIkNTYiLCJsZXhlbWVzJDUyIiwicHJldmlvdXMkOTkiLCJsZXhlbWVzJDQ4IiwiciQ1MiIsImxleGVtZXMkNDkiLCJwcmV2aW91cyQ5NiIsInIkNTMiLCJsZXhlbWVzJDUwIiwicHJldmlvdXMkOTciLCJyJDU0IiwicHJldmlvdXMkOTgiLCJyJDU1IiwibGV4ZW1lcyQ1MyIsInR0bCIsImxleGVtZXMkNTQiLCJwcmV2aW91cyQxMDAiLCJyJDU3IiwicHJldmlvdXMkMTAxIiwiciQ1OCIsImxleGVtZXMkNTUiLCJwcmV2aW91cyQxMDIiLCJyJDU5IiwibGV4ZW1lcyQ1NiIsInByZXZpb3VzJDEwMyIsImxleGVtZXMkNTciLCJyJDYwIiwibGV4ZW1lcyQzOSIsImxleGVtZXMkNDIiLCJyJDQ4IiwibGV4ZW1lcyQ0MyIsInByZXZpb3VzJDkyIiwibGV4ZW1lcyQ0NCIsInByZXZpb3VzJDkzIiwiciQ0OSIsInByZXZpb3VzJDk0IiwiciQ1MCIsImxleGVtZXMkNDAiLCJyJDQ1IiwibGV4ZW1lcyQ0MSIsInByZXZpb3VzJDkwIiwiciQ0NiIsInByZXZpb3VzJDkxIiwiciQ0NyIsImZvbyQxIiwibGV4ZW1lcyQ0NiIsImZvbyQwIiwiZm9vIiwibmV3X3IiLCJyJDUxIiwibGV4ZW1lcyQzNSIsInIkNDEiLCJsZXhlbWVzJDM2IiwicHJldmlvdXMkODciLCJyJDQyIiwidGsiLCJsZXhlbWVzJDMwIiwibGV4ZW1lcyQzMSIsInByZXZpb3VzJDgxIiwiciQzNSIsInByZXZpb3VzJDgyIiwiciQzNiIsImxleGVtZXMkMzIiLCJsZXhlbWVzJDMzIiwicHJldmlvdXMkODMiLCJyJDM3IiwicHJldmlvdXMkODQiLCJyJDM4IiwibGV4ZW1lcyQzNCIsInByZXZpb3VzJDg1IiwiciQzOSIsInByZXZpb3VzJDg2IiwiciQ0MCIsImxleGVtZXMkMjgiLCJwcmV2aW91cyQ3OSIsInIkMzMiLCJ0a3MiLCJ0azAiLCJ0ZXh0JDEiLCJsZXhlbWVzJDI5IiwicHJldmlvdXMkODAiLCJyJDM0IiwibGV4ZW1lcyQyNSIsImxleGVtZXMkMjYiLCJwcmV2aW91cyQ3NiIsInIkMzAiLCJsZXhlbWVzJDI3IiwicHJldmlvdXMkNzciLCJyJDMxIiwicHJldmlvdXMkNzgiLCJyJDMyIiwibGV4ZW1lcyQyMCIsImxleGVtZXMkMjEiLCJwcmV2aW91cyQ3MSIsInIkMjUiLCJwcmV2aW91cyQ3MiIsInIkMjYiLCJsZXhlbWVzJDIyIiwibGV4ZW1lcyQyMyIsInByZXZpb3VzJDczIiwiciQyNyIsInByZXZpb3VzJDc0IiwiciQyOCIsImxleGVtZXMkMjQiLCJwcmV2aW91cyQ3NSIsInIkMjkiLCJsZXhlbWVzJDExIiwidyQyIiwiaHRtbF9zdHVmZiIsInRhZ25hbWV0b3AiLCJtZF9vZl9pbnRlcm1fbGlzdCIsIm1kX29mX2ludGVybV9saXN0JDAiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInN0cmluZ19vZl90YWdzdGF0dXMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsImFkZF90b2tlbl90b19ib2R5IiwidCQ2IiwiYWRkX3Rva2VuX3RvX2JvZHkkMCIsImRlbGltaXRlciIsImJlZm9yZSIsInRhZ25hbWUkMiIsImxleGVtZXMkMTgiLCJoJDEiLCJwcmV2aW91cyQ2NyIsInIkMjEiLCJwcmV2aW91cyQ2OCIsInIkMjIiLCJsZXhlbWVzJDEyIiwibGV4ZW1lcyQxMyIsInByZXZpb3VzJDYxIiwiciQxNCIsImxleGVtZXMkMTQiLCJwcmV2aW91cyQ2MiIsInIkMTUiLCJwcmV2aW91cyQ2MyIsInIkMTYiLCJtYWluX2xvb3BfcmV2IiwibWFpbl9wYXJzZSIsInBhcnNlIiwiZGVmYXVsdF9wYXJzZSIsImQiLCJ3YXJuaW5nIiwibGV4X2Zyb21faW5jaGFubmVsIiwiaWMiLCJpY19jb250ZW50IiwidG9fc3RyaW5nIiwicHAiLCJhdHRyaWJ1dGVzIiwibm9kZW5hbWUiLCJvZl9pbnB1dCIsIm9mX3N0cmluZyIsIm9mX2JpZ2FycmF5Iiwic2V0X2RlZmF1bHRfbGFuZyIsInQkNyIsInQkOCIsInQkOSIsInQkMTAiLCJ0JDExIiwidCQxMiIsInQkMTMiLCJmaW5kX3N0YXJ0JDAiLCJsZXZlbCIsIm51bWJlciIsInN1YnNlY3Rpb25zIiwiZGVhbF93aXRoX2hlYWRlciIsImZpbmRfc3RhcnQiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJtYWtlX3RvYyQwIiwibWluX2xldmVsIiwibWF4X2xldmVsIiwidG9jX2VudHJ5IiwibWFrZV90b2MiLCJzdWJfdG9jIiwidG9jIiwic3ViX3RvYyQwIiwidG9jJDAiLCJkZXB0aCIsImhlYWRlcnMkMCJdLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmZ0aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxkb20uY29tcGlsZWQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdGh1bmsuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vaG9va3MuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlX2ludGVybmFsaGFzaF90eXBlcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfYmlnc3RyaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytibGFrZTIuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGVhcF9ibG9jay9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zeXMubWwuaW4iLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2R5bmFycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9yZWNvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9nbG9iYWxpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9wb2x5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ltcG9ydDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2NvbXBhcmVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2hhc2hfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3dvcmRfc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3ByZXR0eV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvd2l0aF9yZXR1cm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tb25hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FwcGxpY2F0aXZlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2VpdGhlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZzAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NvbnRhaW5lcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW5kZXhlZF9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb2JqX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdW5pZm9ybV9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9hdmx0cmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDJfNTAxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDFfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3NleHBfY29udi9ydW50aW1lLWxpYi9wcHhfc2V4cF9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZW51bWVyYXRlL3J1bnRpbWUtbGliL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9hc3NlcnQvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfYmVuY2gvcnVudGltZS1saWIvYmVuY2htYXJrX2FjY3VtdWxhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWQ1L21kNV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUvYmluX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9wcHhfaW5saW5lX3Rlc3RfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9tb2R1bGVfdGltZXIvcnVudGltZS9wcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC92YXJpYW50X2FuZF9yZWNvcmRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3R5cGVyZXBfb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC9tYWtlX3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9hYnN0cmFjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0X3Rlc3RfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2V4cGVjdF90ZXN0X2NvbGxlY3Rvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZy9leHBlY3RfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wb3NpdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9hY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9vbGRfcGFyc2VyX2NvbnRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fdGFibGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvYXV0b21hdG9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvb2Zfc2V4cF9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvcGFyc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NyY19wb3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi90eXBlX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9wcmVfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NleHBfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL2V4bl9tYWdpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zcGxpdHRhYmxlX3JhbmRvbS9zcGxpdHRhYmxlX3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL2JpZ2FycmF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svZ2VuZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svc2hyaW5rZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iYXNlX3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbF9wYXRjaGVzL2pzX29mX29jYW1sX3BhdGNoZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW50X3JlcHIvaW50X3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9iaWdzdHJpbmcvYmFzZV9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZmlsZW5hbWVfYmFzZS9maWxlbmFtZV9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdl9tYXAvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvZW52X3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2NvbW1hbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZWFwX2Jsb2NrL2hlYXBfYmxvY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGVfbW9kdWxlX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9xdWlja2NoZWNrYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2ludDYzYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZV9iaW5fcHJvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS96b25lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdmFsaWRhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdF9vZl90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pcXVlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdHlwZV9pbW1lZGlhY3kubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90dXBsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RheV9vZl93ZWVrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGlnaXRfc3RyaW5nX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tb250aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RhdGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Zsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3BlcmNlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdGltZV9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NwYW5fbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vZmRheV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYWtlX3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21ha2Vfc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcGlkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25vX3BvbHltb3JwaGljX2NvbXBhcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVyaXZpbmdfaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb3JlX3N5cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JhZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlcl9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JvdW5kZWRfaW5kZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmRfc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfdG9rZW5pemVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19nZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZG9tX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9qc19tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vcmF3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2F0dHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZ2xvYmFsX2xpc3RlbmVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS90aHVuay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3Zkb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbF9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5L3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3RpbWluZ193aGVlbC90aW1pbmdfd2hlZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2NvbmZpZy9hc3luY19rZXJuZWxfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL21vcHRpb24vbW9wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC9wYWlyaW5nX2hlYXAvcGFpcmluZ19oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3NleHBfaGlkZGVuX2luX3Rlc3Qvc2V4cF9oaWRkZW5faW5fdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC91b3B0L3VvcHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3NhZmVfcXVldWUvdGhyZWFkX3NhZmVfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2V4ZWN1dGlvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9leHRlcm5hbF9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9vcl9ldmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvam9iX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zeW5jaHJvbm91c190aW1lX3NvdXJjZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbmFkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvaXZhcl9maWxsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RhaWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYnZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2N5Y2xlX2hvb2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGhyb3R0bGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbF9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcGlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbGF6eV9kZWZlcnJlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9lYWdlcl9kZWZlcnJlZC9lYWdlcl9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZWFnZXJfZGVmZXJyZWQvZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2J1cy9idXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29yX25vdF9hdXRob3JpemVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGNfc2hhcGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX21ldGFkYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfbWFwL2luY3JfbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9tYXAvaW5jcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9zZWxlY3QvaW5jcl9zZWxlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vamF2YXNjcmlwdF9wcm9maWxpbmcvamF2YXNjcmlwdF9wcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vdmRvbV9maWxlX2Rvd25sb2FkL3Zkb21fZmlsZV9kb3dubG9hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyX2RvbS91aV9pbmNyL3VpX2luY3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vY29tcG9uZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2FwcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2pzX21pc2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vc3RhcnRfYXBwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2lucHV0X3dpZGdldHMvdmRvbV9pbnB1dF93aWRnZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wdG1hcC9wdG1hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vY29kZWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vbGV4ZXJfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL2Jhc2ljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9yYXcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL3NhZmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udl9saWIvcHB4X3lvanNvbl9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZGVyaXZpbmcvcnVudGltZS9wcHhfZGVyaXZpbmdfcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kT3ZlclN0b3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRCYXNpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvU3RvcmVNYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9TdG9yZVRyYW5zYWN0aW9uYWxSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlVmVjdG9yLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvVW5pY29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1Bvc01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkUG9zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQ29zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0RvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dE9mRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQm94LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9TeW50YXhUZXN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9FeGVyY2lzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGVQcmVsdWRlLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9yZXByZXNlbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2JhY2tlbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2xleGVyX2ZzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfaHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0FXQyxDQUFDO01BRUU7T0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJBQyxzQkFBc0JDLFNBQVNGO09BQy9CRyxvQkFBb0JDO09BQ3BCQztNQUdKLEdBQUlGLFdBQVk7T0FDWkUsWUFBWUQsaUJBQWlCRTtP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O09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O09BNkpFMnRHO09BQ0FDO09BRUFDO09BU0FDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BT0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSUFDO09BR0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BRUNDO09BU0RDO09BSUFDO09BSUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BVUFDO09BQ0FDO09BRUFDO09BT0FDO09BSUFDO09BSUFDO09BU0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSURDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRDFzRztPQVlBd1k7T0FDQUU7T0FPQTlYO09BQ0FFO09BQ0E2ckc7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7SSxVO0ksVTtJLFU7SSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSSxNOzs7OztJO0ssSSxNOzs7Ozs7Ozs7Rzs7STs7OztJOzs7Szs7Ozs7Ozs7Ozs7O0ksaUIsc0I7SSxxQixzQjtJLHNCLHNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7eUIsTzs7eUIsTzs7eUIsTzs7Ozs7O0ssTzs7STtJO0ksTztHOztJO0s7SyxRO2dCOztJOzs7OzJCO21DOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTyw0QyxnQjtHOztJLFU7STtLO2U7OztpQjs7O21CO21CO0k7STtJLE87Rzs7SSxVOztLO0s7O08sVztNLEksSSwyQjs7Ozs7O1k7WTtXOzZCO1MsTztRO1MsTTtTOzs7O1k7O1k7O1k7O1EsTzs7O3NDLE87TTtNOzs7STtJO0c7O0k7Ozs7SztJLE87OztJLEksZ0I7OzsyQixPOzs7STtLLGlCO0s7Tzs7Ozs7SztLOzs7OztNOzs7Ozs7STtHOzs7SyxZOztLO0k7SSxVO0ksTyxXO0c7O0k7O0ssbUI7Szs0Qzs7SyxNO0k7SSxZO0ksSSxVOzs7OztLOztJO0c7O0ksWTs7Ozs7O3dDOztLO007UTtrQjs7O0ksZ0I7STs7Tzs7Ozs7SSxXOzs7SSxVO0ksTzs7MkI7O0c7O0ksVTtJLE87OzJCOztHOztJO2dCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssTztJLE87OztjLE07YTs7O0c7NkIsTyxtQzs7OytDLE87b0QsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07Ozs7SSxTO0k7O0ksTTtHOztJLE87OztjOzs7YTs7RztHO0k7O087O3lCLGtCLG9COztJO0ksTzs0Qyx3QjtHOztJLFM7SSw0QjtJLFc7Rzs7STs7aUI7Szs7O00sYTs7OztHOztJLFk7SSxrQyxNO0k7OztJO0k7OztPOzs7OztRLE87TyxXOzs7Ozs7cUI7Szs7Rzs7STtHOztJLFk7O0ksTzs7O0k7SyxNOzttQjtJOztLOzs7STtHOztJO0k7OztnQjtLLGdDLEk7SyxZOzs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7OztxQjtLOztHOztJO0k7Z0IsVzs7O00sTTtLOzs7TSxJO007Ozs7O0c7O0k7STs7OztPOzs7Ozs7OzttQjtLLE07O0c7O0k7STtlLFc7O2lCO0ssOEI7Ozs7Rzs7STtJO21CLFc7O00sTTtLLDRCLHFCOzs7OztHOztJO0ssTTtJO0ssYzs7OztJO3lCLE87d0IsTztLO007Ozs7TTs7Ozs7Rzs7STtJOzs7Z0I7SyxrQyxPO0ssVzs7OztHOztJO0k7OztNLEc7Tzs7Ozs7OztLO2E7Ozs7Rzs7SSxRLE87O0ksTztHO0c7STs7O0k7O0s7O0k7aUI7SyxHLHFDO0s7OztHOztJO0k7aUI7SyxLLDRCO0s7OztHOztJO0s7OztTOzs7WSxZOztZO1c7O0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7O00sVyxjO007Ozs7O0c7NEIsTyxzQzs7SSxLO0ssRyw0QjtLLE07OztJO2lCLE07Szs7O00sVztLLEcsZ0M7OztHOztJO0s7SztNO08sTztPLE07TSxlO007TztPLE87Ozs7STs7STtpQixNO0s7OztNLG9CO0ssRyxnQzs7O0c7OztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7O0ksVTtJOzs7TztPLE87TTs7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7Ozs7Rzs7STtLLEk7SyxPO0k7SyxRO0ssWSxPO0s7O0c7O0k7O0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOzs7O0ksYztJO2lDLE8sZ0M7aUMsNkI7NkIsTyx1QjtHO29CLHdDOztJO0c7O0ksb0I7Rzs7SSxZO0c7O0k7Ozs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLE87SyxTOztJLGM7SSxXO0ksTztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STsrQjtHOztJOytCO0c7O0k7O0c7O0k7K0I7Rzs7SSxHLGtCO0ksSTtJO2dDOzs7Ozs7Yzs7Ozs7O087USxZOzs7Ozs7OztHOztJLGM7Ozs7O0s7O007Ozs7Szs7Ozs7TyxxQjs7Ozs7Ozs7TTs7O0k7Rzs7SSxRO0ksVztJLE87Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO3VCOztLOzs7OzRCOzs7Rzs7STtJO3lDOztNLE07SyxXO1EsMEM7OztHOztJO0k7SyxJOzs7O007TztTOzs7OztPLE87TSxPOztLO00sUztzQjtNOzs7O0c7O0k7STt1QztLLFc7Ozs7Ozs7TTs7Ozs7Tzs7UyxXO1EsVzs7Ozs7UTs7Ozs7TTtPO08sWTs7Ozs7Szs7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7SyxNO0s7Tzs7Ozs7SSxXO0c7O0k7Ozs7OztRLFc7O1EsVztnQixXOztJO0c7Ryx5Qjs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztLLGtCO0ssTzs7SSxvQjtJLE87Rzs7STs7TTtPLE87Yzs7Ozs7OztJLFc7SSxPO0c7RztJO0k7Ozs7Ozs7STs4QixxQjswQiw0Qjs7STs7Ozs7Ozs7dUIsTTs7STtHOztJOztJO0ksTztHOztJO0c7O0k7SyxZOzs7Szs7O1M7VTtXOztVOzs7O2lDLE87Ozs7O1M7VTtXOztVOzs7O2lDLE87Ozs7OztJO0k7STtHO0c7STtJOzs7O0c7STs7TyxJLEksTzs7Ozs7O087TztRO1M7UyxjOzs7Tzs7TztlOztHOztJOztLO0s7Ozs7Ozs7STtHOztJOzs7SyxPO0ssVztrQixxQztJO1M7STtJOzs7O007TTs7Ozs7STs7OztNO007Ozs7O0k7Ozs7TTtPLE87TyxPOzs7O1E7UyxPO2dCO1M7UztTO1M7Ozs7O1M7Uzs7Uzs7b0I7UyxPOzs7O1UsVzthO1csVztXLEc7WTthO2E7YTs7Ozs7c0I7Ozs7Ozs7UTtROzs7OztNOzs7OztJOzs7Rzs7STs7Ozs7STs7Tzs7MEIsTyxzQzs7SSxPOzs7ZTsyQjtlLHFCOzs7Ozs7Ozs7OztHOztJO0ksYztrQjtJLEk7STtLLE87STtJOztLLE87SSxPOzs7Ozs7Ozs7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TyxJOzs7Ozs7Ozs7Tzs7USxlOzs7Ozs7Ozs7TztPLEk7Ozs7O007Ozs7UTs7O1U7UTs7Ozs7Ozs7OztLLE87O0c7O0k7O0s7Tzs7O1U7VSxPLGdDO1M7OztLLFc7Ozs7OztPO1E7Ozs7Ozs7Ozs7STtJOzs7TztnQztxRDtPLE87Ozs7Ozs7O007O0ksTzs7O0k7SSxPO0c7O0ksWTtnQixPOztJO0ksTztHO0csSSxpQjs7STs7O0ssSSxrQjs7Ozs7O0ssWTs7Ozs7OEI7OztHOztJLGdCO0k7Z0I7O0ksTzs7O2MsZTtjOzs7O2UsTztlLE87YyxXO2E7OztHOztJLFk7STtHOztJOztPOztnQyxPLHFDOztJLE87RztHO0k7STtNOzt1QixpQjs7SSxNO0k7TTs7dUIsaUI7O0ksTTtJLFk7O0k7Ozs7Ozt5QjtxQztxQztxQztxQzs7OztxQzs7c0M7c0M7c0M7c0M7Ozs7O007O0s7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Ozs7O0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Rzs7STtJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Syx1QjtLLE87O0kseUI7SSxPO0c7RyxJOztJOzs7Ozs7STs7Tzs7SSxPO0c7O0k7SztNO1E7OztTO1U7VSxPO1MsTzs7O1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOzs7SyxNOztHOztJO0s7Ozs7TTtNO007TTtLLE87O0k7Ozs7OztLO0s7SSxPO0c7OztJLEc7SztJOzs7O0k7NkM7STs7SyxPO0s7eUI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O00sSTtLLGlCOzs7O0ssTzs7O0s7OztNLE07TSxVO0ssTzs7O0s7Ozs7O00sTTtLOzs7O0ssTzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTzs7O2U7ZSxPO2M7OztJOztLLE87OztlO3VDOzs7ZSxPOzs7OzttQjs7Ozs7Ozs7OzswQjtlLE87Yzs7O0k7O0ssTzs7O2U7OzRCO2U7Yzs7O0k7Z0MsMkI7OztNOzs7USxXOzs7Ozs7TTtLO0ssTztJOztLLEksVSx3Qjs7OzRCOzs7STs7SyxVO0s7Yzs7O2lCO2lCLFc7Z0I7O0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SyxPOztzQyxPLDZCOzs7STs7SyxVO0ssTywwQztJOztLLE87OztlLE8sbUI7Yzs7O0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNO1MsTzs7bUMsTyx3Qjs7O1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7O21CO2tCOzs7UTs7UyxRO1M7OztZO1ksTztXOztTO1E7MkIsaUQ7O1MsUSxtQjtTO3FDLE8sMkI7UztROztTO1UsSSxVLDRCOzs7O1csUTtXO1c7VztROztTO1MsYztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDBCO0ksTztHO3NCLFM7RztJOzs7Ozs7SSw4QjtJLE87RztHO0k7TSx1QjtJO007UTs7Ozs7Ozs7STtXO2M7O0ksTztHO3dCLFM7Ozs7NEIsTyx5QztzQixPLGtDOzBCLHNCO0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Qix5Qzs7UztROztTOzs7VSxNO1M7UTs7UztROztTO1E7O1MsVTtTO1E7UTs7OztTO1UsTTtVO1k7YzsrQzs7VTtZOzs7ZTtnQjswQjs7Ozs7O2dCLEksWTs7O2lCLE07O2dCOztlLGE7OztpQixNOzs7OztnQjs7bUI7Z0IsSSxZOzs7aUIsTTs7O2dCOzttQjs7Ozs7Z0IsSSxjOzs7aUIsTTs7O2dCOztlLE07Yzs7Ozs7UTs7UyxJOzs7OztVOztXLE07VyxNO1U7VSxPOztTO1E7O1MsSTs7Ozs7O1U7O1M7UTs7UztVLGM7VTs7Ozs7OzBDO1U7VyxjO1c7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7OzRCLDBCOztJO0ssTzs7O2U7O3lCOzs7Ozs7Yzs7SSxNO0c7O3lCLE8seUI7SSxjO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Tzs7O1U7O1csZ0I7OztVO1M7OztJO0c7O0k7SyxNOztJOzs7Tzs7O007O0ksTzs7O2M7O2dDLGlDOzs7O2E7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7SSxzQjtJLGU7SSxxQjtvQixZO3FCLFk7c0IsWTs7SSxPO2tCOztHOztJLFc7O0ssTzttQjs7STtJLE87Rzs7STtLO007TSxNOzs7Ozs7OztJLGlCO0c7RztJLGU7SSxjOztJLE07RztHO0k7Ozs7OztJLG1CO0ssTTtJO0k7STtJOzs7OztHOztJO0c7O0ksVTtJLE87Rzs7SSxVO0ksVztHOztJLE87OztjO2UsSztlLFc7O3lCOzt3Qjs7eUI7O3dCOzthOztHOztJOzs7SztzQzs7O0s7c0M7STtJOzs7Rzs7SSxtQjtLLE07STtLO087O3FCLDRCOztLO087O3FCLDRCOztpQjs7O2lCOzs7Ozs7YztjOztHOztJLG1CO0ssTTs7SyxlO00sTztLLGM7O2U7O0k7STs7O08sUztPO08sWTtPO007Ozs7O0c7aUMsZ0M7O0ksbUI7SyxNO0k7Ozs7Z0I7Ozs7Z0I7O0c7O0ksTztHO0c7SSxTO0k7TTs7O1M7Ozs7bUI7K0IsbUI7O1E7Ozs7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJO0ssYztLOzs7OztNLFc7OztHOztJLG1CO0ssTTtJOzs7Ozs7O00sSSw4Qjs7Szs7Ozs7TSxPOzs7Rzs7SSxtQjtLLE07STs7Ozs7OztZOzs7TTtPOztRLFU7Ozs7Ozs7O2tCOzs7Szs7Ozs7SyxlO0s7YTs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7SSxzQjtJLFU7SSxPO0c7O0k7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJOzs7Ozs7Ozs7O0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtJO0k7STtJO0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7TTtROzt3Qjs7TTs7Ozs7OztHO0c7STtJO0k7STs7O1E7OztPOztROztXOztXO21COztPOzs7STtJOzs7UTs7O087dUIsMEM7OztJO3lCLE8sc0M7O0k7O087O087O087O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7O0c7O0k7O087O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7TztTOzs7WTs7YTthO1k7OztLLE0sVztJLE8sVztHOztJO0ksTztHOztJLFksTztJO0ksTztHOztJO0ssTTtLLFU7STtLOzs7UztVO1UsUTs7OztvQjs7UztRO00sSztLO007O087TyxROzs7OztXOzs7Ozs7O0c7Rzs7STt5Qzs7Z0I7SSxxQjtJO0c7Rzs7STtHOztJO0s7Tzs7dUI7O0s7OztHO0csSSxtQjs7STs7O0c7O0ksTzs7O2M7YztlO3VCO2U7ZTtlLFU7ZTs7Ozs7OzZCOztnQjs7O2E7O0c7O0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0s7SztJLFc7RztHOzBCLFEsNEI7O0k7Ozs7O0c7NEIsTyxvQztHO0k7STs7Ozs7O0k7OztHOztJOztLO0s7Ozs7SyxJLFU7Ozs7TTtPLGE7Ozs7OztLOzs7O0s7TSxlO007Ozs7SSxPOzs7O2U7ZTtnQjtnQjs7ZSxPOzs7OztjOzs7OztJOytDLE8saUI7Rzs7STtLLE87STs7SztLLE87STs7SyxPO0k7STtHO2tDLHVDO0c7STtLO0ssWTtLLFE7SyxlOztLLGtCO0ksTztHO0c7STs7OztJLEksK0I7O2dDO0ssb0I7SyxXOztHOzs7SztNOzs7d0I7TTtLLE87STs7Szs7TTtROzs7OztPLHFCO087Ozs7OztLO0k7STtHOztJO0s7Tzs7MkIseUI7OztLO087OztVOztTOzs7OztLLEksZ0I7Szs7O1EsbUI7OztPOzs7O1E7O0k7SSxPOzs7Yzs7Ozs7O2U7Ozs7O2UsUTs7O2U7O2M7YTs7Rzs7SSxjOzs7Ozs7STtLO0s7OztLOzs7Syx3QixrQixzQjtLO2E7OztnQjs7OztnRDs7OzhDO2dCO2dCOzt1QztlOzs7STtJOzs7OzswQzs7O0ksVztJOztLOzs7UTtRLE87OztpQiw2QjtPOztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7O0s7OztROztTO1E7UyxnQztRO087O0ssTzs7STs7Szs7OztNO1E7VTs7O2E7WTs7TSxROzs7SyxHLHdDLFM7TSxVO007O0ssVTtLLE87NkM7O0ksTzs0QztHO0c7STtNO3VDO0ksTTtJO007Ozs7Ozs7O0k7TTt1Qzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxJLEksTTs7Ozs7O0ksd0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0s7SztLOztJLFU7O0ssTTtJO0c7aUMsa0IsUzs7STtLO087c0MsNEI7SyxTO0ssSTs7O0s7Ozs7SztNLFE7OztLOzttQixPLHlDOztLO0s7O3VCLE8sbUM7SyxPOztJO0c7O0k7SztPO3NDLDRCO0s7Tzs7cUIsTyw4Qjs7STtHOztJLFk7O0ksTztHOzs7Ozs7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssTTtLLGlDO0ssTTtLLE07OztLOzs7OzhCOzs7Ozs7Ozs7UTs7OztJOzs7Uzs7Ozs7Ozs7Ozs7OztJO0ssUTtLO00sWTtNLGE7TztNO08sVTtPOzs7Z0IsMkI7O0k7OztJO0kscUI7SSxvQjs7SztLLGU7OztLLE07STtJO2E7O0c7O0ksTzs7Ozs7Yzs7Ozs7O21CO3FCOzs7d0IsSzt5Qjt3Qjt5Qjt5QjsyQjs7Ozs7eUIsTTt5QixVO3dCO3lCLFU7eUI7Ozs7K0M7Ozt1Qjs7O2U7Z0I7OztvQjtzQjs7O3lCOzt3QzswQjs7NkI7Ozs7OzBCLE87OytDLHlCOzs7eUI7d0I7O2dCLGtDO2dCLE07O2tCOzs7O2U7Z0I7Z0IsTTtnQixNO2dCLGlDO2dCLE07Ozs7Ozs7Ozs7Ozs7bUIsTTs7Ozs7a0I7Ozs7Ozs7Ozs7O2M7YTtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztnQyxvQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSTtHOzs7TTtNLE87OztnQixPO2U7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLE8sb0M7O0k7O0ssTTs7O08sdUIsNkM7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7STs7O1E7UTs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7cUI7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFM7OztPLE07O00sUztNO00sa0IsTzs7TTs7STtJO0c7O0ksSSx5QjtJO0c7O0k7SyxRO0ssUzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLO00sZ0MsSztNOzs7O007TSxPOzs4Qjs7O0s7Ozs7TSxPOzs7O087Tzs7Ozs7O0k7O0s7TSxNOztLO0s7TTtNOzJDO2Msb0M7TztRO2dDOzs7O0s7O007TTs7USxPO08sWTs7Ozs7Ozs7UztVO1UsbUI7Ozs7Ozs7VSxJO1U7VyxPOzs7VTs7Ozs7O1ksSTtZO2EsTzs7O1k7OztZLEk7WTthLE87OztZOzs7Tzs7Szs4Qjs7TSxvQztNLFc7OztRLEk7OztTO3lCOzttQjtzQjtVO1c7OztzQjs7Ozs7O1E7OztTO1E7UyxPOztROzs7O087UTtRLGU7TztRLE87O087O007SztLO0s7SztNOztTLE87O1MsTztpQixPOzs7SztNLHNCLFc7TTs7Szs7OztPOztNOztLO007UTs7O007SywwQjtLOztNO0s7TTs7Uzs7O1ksVztZLE87Vzs7O00sMEI7SztLO007UTs7OEIsc0IsVzs7TTtROzs7Ozs7VyxPOzs7cUI7OztnQzs7Z0M7Ozs7OztzQixPOzs7cUI7c0IsWTs7cUIsTzs7O1U7O0s7STtJOzs7O0s7Ozs7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0c7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7USxPOztROztROztROztROztROztROztROztRO2dCOzs7Ozt3QjtPLFc7TyxPOzs7O1EsTTs7UTtTLE87UyxPO1EsTzs7Tzs7USxPO08sTzs7OztRLE07Ozs7USxPOzs7Ozs7O08sVztPLE87Ozs7aUI7OztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OzJCOztPOztRLE87TyxPOzs7TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VTs7YTtVLE87OztPOzs7O1E7USxPO1EsTztPOztVLE87O1UsTzs7O1UsTzs7Ozs7O1E7O1MsTztTLE87USxPOzs7USxNO087USxPO1EsTztRLE87USxPO08sTzs7OztROzs7O1M7Vzs7UyxPO1MsTztTLE87USxPOzs7O1EsTTtPOztRO1U7USxPO1EsTztPLE87O087O1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87OztPLE87O087O1EsTztRLGE7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7OztPLGtCO08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxTO087USxNOzs7UTtTLFM7UyxPO1MsTzs0Qjs7UTtTLE87UyxPOzRCO08sTzs7Ozs7Ozs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7RztJOzs7OztJLG1CO0k7STtLO0s7SztLO087O3lCLG1EOzs7O0s7Ozs7a0M7Ozs7Z0I7O0k7Rzs7STs7Ozs7O2dCOzs7a0I7Ozs7Ozs7O1E7OztJO0ksYzs7Ozs7Ozs7Ozs7OztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCLHlCOztJOzs7SSxNO0c7O0k7OztPOzs7OztPO1E7O1MsTztnQjs7O08sTzs7Ozs7OztpQixPOzs7Ozs7Ozs7Z0I7O007O0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxVO1MsTzs7O21CO29COzJCO3FCO29COzs7OzBDOzs7a0I7OztROztTLE87OzttQjtvQjsyQjtxQixNO29COzs7OztxQixPOzs7a0I7OztROztTO1M7OztZO2EsVTs7O1c7O1MsTzs7O21CO29CLEs7b0I7O2tCOztROzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7VTtZLDJDO1U7VTtVOzs7O1csbUI7cUI7Vzs7Ozs7Uzs7VTtZOzs7O2U7ZSxPOzs7eUIsSSxJLE07Ozs7O2tDOzt5Qjt3Qjs7O2M7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7O2tCLFE7O1M7OztVLGE7Uzs7O1ksTzs7O3NCOztzQjtxQjs7Vzs7UztVLFc7VSxhO1U7O1U7b0I7VTs7VTtVO1UsTztTO1M7Ozs7Vzs7WTs7O1c7Ozs7O1M7O1UsOEI7VSxrQjtTOzs7WTs7Ozs7WTthO2E7WTthOzs7Z0I7Z0IsTztlOzs7WTtXOztTOztZO1MsTzs7O21CO29CLE07Ozs7b0I7OztvQjs7NkI7OztnQzsrQjs7OzttQjtvQjs7b0I7b0I7c0I7OzttQjtrQjs7UTs7UztTLE87a0Q7UTs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7OztLLE07Ozs7USxrRDtRLE87Tzs7d0IsUzt3QixTOztvQixjOzBCLE8sNEM7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixTOzBCLFM7c0IsYzs7SSxPO0c7Ozs7Ozs7O3NCOzJCOzJCOzs7Ozs7Ozs7OzsyQjsyQjsyQjs7MkI7MkI7MkI7c0I7O3NCO3NCO3NCOzs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksOEI7OztPOztRO1U7Ozs7YSxRO2EsTztZO1EsTTtPLE87OztPLE87OzJCLE87O0c7RztJOzs7O0k7Ozs7SyxNOzRCOzs7OztROzs7O0k7SywwQiwwQjtLLE87O0c7O0k7STsyQjtLLFE7VztLOzs7Rzs7STt5QixPLDhCO0c7O0ksVTtJO0k7Rzs7SSxPLHVCO0c7NkIsd0I7OztJO2M7Yzs7OztJO2M7Yzs7O0ksSSw2QixROztLLE07K0I7O0k7Rzs7O0k7YztjOzs7STs7O0c7O0ksWTtnQixNOztJO0c7O0k7STtHOzs7STs7Ozs7Ozs7O0s7O0k7Rzs7O0s7O0k7STtHOzs7OzswQiw0Qjt5QixPLHVDOzs7Ozs7OztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O2M7YzthOztHOztJO0k7SyxVO0ssVTtLLFU7SyxVO0ssVzs7Ozs7Ozs7Ozs7Ozs7TTtNO087TyxVOzs7Ozs7Ozs7OztPLE07OEI7O00sSTs7Ozs7OzswQztTOzs7Ozs7O007TztPO087TztPO3lCO087OztVO1c7Vzs7OztXO1k7WTtZO1k7OztVO1M7TyxnQjtPOzs7WSxZOztZO1c7OztPOzs7Ozs7UTs7UTtROzs7Vzs7WTs7WSxTO1k7VztVO29COzs7TTtPOztVO1c7VztzQjs7VTs7Tzs7VTtXO1c7VSxPOztNOzs7O087TztRO1EsNEI7TztPO1E7USxVO087USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0I7aUI7O3dCOztZO29COztzQjtpQztXOzs4QjtPOzs7VyxPOzs7cUI7cUI7b0I7OztPOzs7OztNO007TztPLEk7Ozs7Ozs7Ozs7TyxVOzs7Ozs7Ozs7O1E7UztTO1M7UztTO1M7UztRLEc7OztTO1U7Z0M7VTtTOzs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7OzthOztjO2M7OztjO2M7O2M7Ozs7O2M7Ozs7O2E7Ozs7Ozs7O1k7VSxXO1M7OztVO1c7Ozs7O2M7Yzs7Ozs7Ozs7YTt3Qjs7UTs7OztVLE07Uzs7VTs7VztXO1c7OztjOztlOztlOztlO2M7YTs7cUI7Ozs7OztRO1M7O1k7d0I7WTs7OzthO2U7OztZLFc7O1M7O1k7WSxPOztROztPLE07MkM7O00sTTsyQzs7O0ksTTtHOztJO0s7TSxLO007UTs7MEIsTywyQjswQixhOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7Rzs7STs7O3lCOzt5QixNO2lDOztHO3NCLG1COzZCLG1COzZCLG1CO3VCLGM7O0k7OzsyQjs7eUIsTTs7O08sSSxVOzs7O1EsTTs7Ozs7O0c7O0k7STtpQjs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7Ozs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOztTLE87OzsrQix5QjtROztTLE87OzsrQix5QjtROztTO1E7O1M7UTs7UztROzBCLHVCOztTO1M7UztTO1E7O1M7Ozs7bUI7bUI7a0I7UTs7UztVO1U7O1U7Ozs7VyxzQjs7OzthOzs7Ozs7Ozs7YTtjOzs7OztlOzs7Ozs7O2E7Ozs7O1c7Ozs7Ozs7VSxNOzs7O3FDO1U7O1csTTs7VTs7Ozs7OztVOzs7O1E7OztVOzs7b0I7Ozs4QjsrQjsrQixNOytCOzhCOzs7Ozt1Qzs7NkI7bUI7Uzs7VTs7O29COzs7OEI7K0I7K0IsTTsrQjs4Qjs7Ozs7dUM7OzZCO21CO1M7OztXLE87Ozs7cUI7OzsrQjsrQjt1Qzs7OEI7b0I7VTtVO1csa0QsYztXO1c7MEQsYztXO1c7YTs7OztnQixPOzs7OzBCLE87Ozs7b0MsWTs7O3FDOzs7b0M7bUM7eUI7ZTtXO1c7VTtXOzthOzs7Ozs7O2M7Z0I7OzthOzs7Ozs7VztVO1U7bUI7O29COzs7OztxQixRO29CO21CO1M7O1Usd0I7Ozs7O3NCO1U7Uzs7VTs7O1c7YTs7VzthOzs7OztXOztjOzs7Ozs7VTs7VTtXO1k7WTtZOztZOzs7O2Esa0I7Ozs7O2U7OztrQjs7Ozs7O2lCO2U7Ozs7O2E7Ozs7OztnRTs7Vzs7O2UsTzs7Ozt5QixPOzs7O21DO29DOzs7a0M7d0I7YztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7O2tCLFU7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7Ozs7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7OzttQjtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87OytCLDRCOztHOztJOzs7Ozs7O0k7SyxVO0s7SyxPOzs0QixPLHNDOzs7STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07Ozs7MEI7OzswQzs7OztzQjs7dUIsTTt1Qjs7OzswQjs7OzBDOzs7Ozs7c0I7Ozt1QixLO3VCLEs7dUI7eUI7Ozt1Qjs7OzBCOzs7MEM7Ozs7bUIsVzs7OztxQjs7Ozs7Ozs7O21COzs7OztzQixvQjs7O3NCOztzQjs7Ozt1QixLO3VCLEs7dUI7dUIsUTs7Ozs7O3lCOzs7Ozs7OzswQixVOzBCLFU7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7O2tCO2tCLE87aUI7Ozs7OztFOzs7Ozs7O0c7Ozs7SSx3Qjs7Z0MsTyxzQzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLCtCOztJOzs7Rzs7STtLOzs7Vzs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxZO2dCLE87STs7SyxVOztrQjtjO0c7O0k7SztNLE87TSxjO0s7STtJLFk7Z0I7STs7SyxVO2tCO0ksYztnQjtJLE07Rzs7SSxHO0s7TSxPO1k7OztJO0k7SztLO007TyxPO08sTTtNLGU7TTtPO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7Szs7Ozs7SztJO0ssaUM7STs7SyxhO0ssTztJO0k7Ozs7Ozs7Ozs7STtLO0s7O0k7STtLO0s7O0s7Szs7O0s7Szs7Ozs7STtLO0s7Szs7SSxPO0c7O0ksTzs7OztlLE87Yzs7OztHOztJLE87OztjOzs7ZSxPO2UsYztjO2E7O0c7O0k7Szs7a0IsTTtLLEk7Ozs7aUI7Tzs7Ozs7SyxXOzBCLE07SztLO0s7SztLLHVDOzs7O2tCOztPO1M7O3lCLG1DOztROztPO1M7O3lCLG1DOztRO08sUTtPOztPOzs7OztLO0s7SyxXO0s7Ozs7NEI7OztHOztJO0k7SztLO0s7SyxJOztLO00sVztNOzs7OztJO0k7O00sWTs7O087b0I7O087OztNOzs7O0c7OztJLE87K0MscUI7OztJOzs7Szs7SztNO007OztJO0c7O0k7Ozs7Ozs7Ozs7OztLOzs7OztpQjtLO0ssVztLO007TTtROzs7Vzs7WTtXO1U7O007UTs7O1c7Ozs7Ozs7VyxPOzs7VTs7TSxPO007UTtVOzs7YTthLG1CLDJCO2E7YSxPO1k7O007UTs7O1c7Ozs7O1c7O2E7O1k7OztZLE07OzZCOztXO1U7Ozs7O007SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7Ozs7Ozs7Ozs7OztRO1M7UyxxQix1Qjs7O1ksVztpQztZLFE7WTtZO1c7Ozs7OzsyQyxxQjtPO1E7Uzs0Qiw0Qjs7O1ksc0I7WSxRO1k7WTtXOzs7Ozs7OztLO007UTtVOzs7YTs7O3FDO2M7Z0I7OzttQjs7Ozs7OzttQjtxQixnQztvQjttQjtxQixnQztvQjttQjtrQjs7Ozs7O2E7WTs7TTtROzs7Vzs7Ozs7VyxXOzt3QjtXOztZO1c7VTs7Ozs7Ozs7Ozs7VTs7O2E7YTtZOzs7Ozs7Szs7UTtVOzs7YTs7Ozs7YTs7cUI7O1k7O0s7Ozs7Ozs7O1E7UTs7USx5RDs7Ozs7Ozs7O2E7OztnQjtnQixPO2U7O1c7VTtXOztXLFM7WTs7WTs7Ozs7YTs7O2dCO2dCLE87ZTs7VztVOzs7OztROzs7OztNOztTOzs7WTs7OzthO2U7OztrQjtpQjs7WTtXOztNLFc7OztLLE87STtJLE87O0c7RztJLE87Rzs7STtJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7Ozs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt5QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7RztJLE87OztjLFc7YyxPO2E7O0c7RztJOzs7SyxPO0ssTztJLE87O0c7STs7RztHLDhDLHdCO0c7STs7Ozs7Ozs7Ozs7OztLO0s7TTtROzswQixvQixXOztNO007UTtLO0ssTztJO0ksOEMsUztJO0s7O2U7O0k7STs7Ozs7Ozs7O0c7O0ksZ0M7Ozs7Szs7STtHOztJOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7OztJLE87OzRCOzs7O0k7Ozs7YyxPO2E7Ozs7SSx1QyxPLHVCOzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLHFCLE8sd0M7STtJO0ssTztLO0s7Tzs7O1U7VTtTOztJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO2dCOztJO0c7O0k7Rzs7O0k7OztJO0c7O0k7SyxNOzs7SyxNOzs7SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7O0s7OztROzs7STtHOztJO0ssTTs7SyxNOztLLE07SztPOzs7Ozs7Ozs7OztLOzs7UTs7O0k7RztHO3FDLGtDOzs7Ozs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7Ozs7O2UsTTs7bUM7O0s7O0c7RztHOztNLHVCOztNO0s7OztJLE87OztjLE07O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzJCLFk7dUIsWTtzQixZO3dCLE8saUM7Ozs7Ozs7Ozs7Ozs7O0ksZTs7O0ssSSxjOzs7Ozs7O2U7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOztvQjtLLFEsTzs7Ozs7STtHOztJO2M7SSxJLHFCLE07SSxPO0c7O0k7O0s7SztJLGtCO0k7OzZCLFk7d0IsWTt5QixZO3dCLE8sc0M7O0k7STtHOztJLGdCLE07STtHOztJLGdCLG1CLE07STtHO21CLCtCO21CLCtCO21CLCtCO21CLGtDO21CLCtCO29CLGdDO3FCLGlDOzZCLHlDOzZCLHdDOztJO0ssUzs7SyxNO0k7Rzs7SSx5QjtJLE87Rzs7SSxhO0ksTztHO3NCLE8sZ0Q7O0k7SyxXO0ssYTtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7OzswQjs7USxvQzs7OztnQixPOztHOztJOzt5Qjs7MkI7ZSxPOztHOztJO0s7TSxNO007TSxVO0s7Ozs7O007Yzs7Ozs7Ozs7Rzs7SSxROztJO1k7OEMsaUI7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7O0ksVTtJLFU7SSxVO0ksTzs7O2M7O2lCLE87O2lCOztxQzs7YTs7RztpQywrQixVO3lCLGlEOytCLGE7OEIsYTtHOztJOztLO0s7SztJO0c7O0k7Ozs7Ozs7OztJOzs7Ozs7TztRO2tCOzs7Ozs7STtHOztJOzs7TTtNLE87OztJO0c7Rzs7STs7SztLO0s7STtHOztJO0s7Tzs7eUIsZ0M7O0ssTTtJLE87Rzs7STtJO2lCOzswRDs7OztHOztJOztpQixPOzs7Ozs7Ozs7TTs7Ozs7Rzs7SSxPOzswQiwrQzs7RztHLGdCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLLFU7SztLOzs7OzJCOzs7RztHLGlCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxxQjs7STtpQjtHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHNCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7Ryx1Qjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksYztJLHNCO0c7O0ksYztJLHNCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksVTtJLDJCO0c7O0ksZ0I7Rzs7SSxxQjtHOztJLFk7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksNEM7STs7OztJOzthO2E7Ozs7STtJO0c7O0k7O2E7YTs7Rzs7O0k7STtJOzs7STtJO0k7RztrQyx3QjsrQix3QjtvQywwQjs7SSwyQjtHOzRCLHFCO2lDLDBCOztJLDJCO0c7OEM7Rzs2QztHO3NDLCtCO3VDLGdDOztJO0k7STtJO0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7cUMsa0IsUzs7SSxNO0c7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOztJLE87RzsrQixzQjs7SSxVO0k7Rzs7STs7SyxNO0s7STs7O0k7O0ssTTtLO0k7OztJOztLLE07SztJOzsrQixzQjtzQixjOzs7STs7OztJOztHOzs7STs7O0ksVztJO0c7bUMsMkI7aUMsZ0M7dUMsc0M7aUMsZ0M7cUMsbUM7cUMsbUM7c0MsbUM7b0MsbUM7O0k7RzttQyxtQzs7STtHO3FDLGlDOztJO0c7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7STs7Tyx3QyxZOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7OztTOzt1QiwrQzs7Ozs7Ozs7Ozs7OztjOzs7aUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7OztJOzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQztxQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO2lDLGdDO3NDLGdDO3VDLHNDOzRDO0c7b0MsbUM7b0MsbUM7bUMsZ0M7MEMsbUM7d0MsbUM7dUMsb0M7b0Msb0M7O0k7RzttQyxpQzs0QztHO3VDLG9DO3NDLG9DOztJO0c7MkM7Rzs7STtHO21DLG9DO2lDLGlDO3lDLG9DO29DLGlDOztJO0c7MkM7RztrQyxpQztrQyxpQztxQyxvQztvQyxpQztzQyxvQztnQyxpQztxQyxvQzs7STtHO3VDLGlDOzJDLDJCO29DLDRCOzBDLDhCOzs7STs7O0ksVztJO0c7bUMsZ0M7bUMsZ0M7cUMsZ0M7c0MsbUM7cUMsbUM7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzt1QyxpQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7OztJOzswQix5QjtxQyxtQzsrQix5QjttQyx5QjtnQyx5QjsyQix5Qjs4Qix5QjsrQix5Qjs0Qix5QjtrQyx5QjsyQiwwQjs0QiwwQjs0QiwwQjsrQiwwQjs7O0k7OzhCLDBCOztJOztPOztzQixPLDhDOztJLE87OztjLFc7YyxxQjthOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7K0IsNEI7OEIseUI7cUMsbUM7cUMseUI7Z0MseUI7NkIseUI7aUMseUI7OEIseUI7MkIseUI7NEIsMEI7aUMsMEI7OEIsMEI7OztJOztnQywwQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7c0MsbUM7dUMsc0M7MkM7Rzt1QyxnQztxQyxtQztHOzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7Rzt1QyxnQztxQyxtQztHOzs7Ozs7OztJLG1COzttQyxtQzs7STtHOztJO0c7O0k7Rzt1QyxtQztnQywrQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7Rzs7SSxXO0k7Rzs7Ozs7O0ksbUI7OztJO0c7O0k7Rzs7STtHOztJO0c7dUMsb0M7dUMsb0M7Z0MsZ0M7O0k7O087O3NCLE8sOEM7O0ksTzs7O2MsVztjLHVCO2E7O0c7d0IsZTsyQixpQjs7SSxXO0k7Rzs7Ozs7OztJLDRCOztHOztJOzs7OztLLE87SSxzQjs7Rzs7STs7Ozs7SyxPO0ksc0I7O0c7O0k7Ozs7O0ssTztJLHNCOztHOztJOzs7OztLLE87SSx1Qjs7Rzs7Ozs7OztJLGdDOztHOzs7Ozs7SSx1Qjs7Rzs7STs7Ozs7SyxNO0k7Ozs7WTs7O0c7O0k7Ozs7Ozs7SyxNO0k7Ozs7OztZOztHLEk7O0k7Ozs7Ozs7OztLLE07STs7Ozs7OztZOzs7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7OztJLGdDOztHLEk7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7O0ksNkI7OztJOzs7OztLLE07SSw0Qjs7O0k7Ozs7Ozs7SyxNO0k7Ozs7WTs7O0k7Ozs7O0ssTTtJLGdDOztHO2dDLHlCO0c7Z0MseUI7Rzs7O0k7OztJO0c7K0IsOEI7Rzs7O0k7OztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DLG1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7aUQsTztpRCxPOzs7STtJLE87OztJLFk7O0ksTzs7OztJLE87Ozs7STtJOztLLHNCLE87SyxPOzs7SSxPOzs7O0k7STs7O0ssTzs7O0ksTzs7OztJO0k7Ozs7O1E7USxPOztRLG1CLE87USxPOzs7UTtRLFc7USxPOzs7USxPOztnQzs7OztRO1EsVztRLE87O3lCLE87OztRLE87O2dDOzs7MkIsTzs7O1E7UTtTLE87UyxzQjtRLE87O2dDOzs7O1E7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJOztxQjs7STtLLEs7SyxLO0ssSztJOzs7O087TztPLE87OztJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJOztxQjs7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7O0s7dUM7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFU7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxVO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OzJCLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE07TyxPOzt5QixPOztPLGlCLE07TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGtDLE07TztPLE87OztPOzs7O1U7OztXLFM7VyxPOzs7VTs7Ozs7OztTOzs7O1MsUztTOzs7MEMsTzs7TztPO08sTzs7O087TyxVO08sTzsrQzs7O087TyxPOzs7TztPLE87O08sa0IsTTtPLE87OztPO08sZ0I7O3lCLGdCOztPOzs7USxNO1Esb0I7Tzs7dUI7O08sZ0I7OztPO087OztPO087TyxPOztPLG9CLE07TyxPOzs7TztPO08sZ0I7OztPO08sTzs7O087TyxPOzs7TztPO087TyxPOzs7TztPLE87OztPO08sUztPLE87OzBCLE87OzRCOzs7TztPLE87O087O1EsTTtRLG9CO08sTzs7OEI7Ozs7TztPO08sTzs7O087TyxPOzsyQixPOzsyQixPOzs7TztPLGdCOzswQixPOzsyQixPOzsyQixPOzs7TztPLE87Ozs7Ozs7TztPLFU7TztPLE87a0MsTzs7Ozs7Ozs7O0k7STtJO0ksTzs7OztJO0k7aUM7Ozt3Qjs7O087Tzs7Tzs7Tzs7TyxrQixNO08sTzs7O087aUI7O087d0M7TyxPOzswQixnQjs7Tzs7USxNO1Esb0I7TyxPOzs4Qjs7O08sb0IsTTtPLE87OztPO08sTzs7O087TyxPOzswQjs7MEIsTzs7MEI7OzBCLE87O3dCLE87OztPO08sTzs7Ozs7STtJOzs7O087TyxVO08sTzs7d0IsTzs7O08sUztPO08sTzs7O087TyxVO08sTzsrQzs7TyxtQyxNO087TyxPOzs7TztPLE87O3dCLE87OztPO08sTzs7OztJLHFDLE87O0ksTzs7OztJO0k7Ozt5QixPOzs7TztPOzs7TztPOzs7TztPLE87O3dCLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7Ozs7Ozs7SyxNO0ksMEM7STtJO0k7SSxPOztHO0k7OztRO1E7O087O1EsVTtRLE87Tzs7O1E7UTtRLFM7USxPO087O1EsVTtRLE87Tzs7USxVO1EscUI7Tzs7USxVO1EscUI7Tzs7Ozs7OztRLFU7USxxQjtPOzs7UTs7Ozs7OztRO1E7O3dCOztRO1EsUztRO1EsTztPOzJCLDRDOzs7UTtRO1EsTztPOzs7UTs7OztRO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7OztRO1E7UTtRLE87TzsyQixTOztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7O1E7Ozs7O1E7USxTO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7O1E7UTtRLE87Tzs7O1E7OzZCLE87OytCLE87OytCLE87OztXO1csZ0I7O087O1EsVTtRLE87Tzs7O1EsVTtRLE87Tzs7O1E7O1EsUzs7Tzs7UTs7UyxPOzs7USxPO087Ozs7Ozs7OztROzs7Ozs7UTtRO1E7OztXOztZOzs0Qjs7WSxPOztXOzs7WSxNO1c7VyxPO1U7O1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7O0ksTztHOztJLFE7O0c7O0k7SyxPO0ssTztLLFM7SSxPOzs7YyxPO2E7O0c7RyxzQjtHOzs7TSxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEM7Ozs7UTtpQjs7Ozs7SSxXO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozt1Qjs7UTs7Ozs7STtHOztJO2dCOztJO0c7O0ksSTs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7VTs7Ozs7Yzs7dUIsTztzQjs7Ozs7Yzs7dUIsTztzQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MEIsTzt5Qjs7Ozs7O2E7O3NCLE87cUI7Ozs7TyxPOzs7Ozs7Ozs7SSxPO0c7O0ksdUI7STs7Ozs7Ozs7O00sVztNOzs7Ozs7STs7O0k7SztLO0k7Rzs7SSxPO0c7O0ksTzs7O2M7YzthOztHOztJLE87OztjO2M7YTs7Rzs7STtLO0s7OztTO1MsTztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7O0k7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7OztJO0c7O0ksZ0I7SSxVO0ksTztHOztJO0s7SSwwQztJO2dCOztJO0c7O0ksVTtJLE87OztjOztlOztnQzs7ZTtjO2MsTzthOzs7Rzs7STtJLE87OztjO2MsTzthOztHOztJLEksOEI7SSxPOzs7YyxjO3dCO2M7YyxPOzthOztHOztJO0k7bUI7O0s7TTs7OztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7SSxPO0c7Ozs7SztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLO0s7TTtLO007Szs7Ozs7Ozs7Ozs7OztVO1UsSSxVLDRCOzs7Ozs7Vzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztLLFU7Ozs7Ozs7Ozs7Ozs7UztTLE87Ozs7O0s7Szt3RTs7O0ksVztJO0s7TSxNO007SztLLFU7SztLOzs7O0s7SyxNOztHOztJLE87OztjO2E7O0c7O0ksTzs7O2MsTzs7O3dCOzs7eUI7eUI7O3VCOzthOztHOztJO0c7O0k7Rzs2QiwyQzsrQiw2QzsrQix5Qzs2Qix1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COzs7O0c7O0k7STtnQjs7SyxTLHVCOzs7Rzs7SSxTOztJO0c7O0ksaUI7Rzs7STs7Ozs7Ozs7Z0I7OztHOztJOzs7Ozs7OztnQjs7SSxPO0c7O0k7SyxhOztNLFk7bUI7bUI7TSxPO0s7SyxPLG9DO0c7O0k7O00sWTtNLE87SztLLE8sNEI7Rzs7STs2QixzQixhOzZCLHVCLGM7NkIscUIsWTs7Rzs7STsyQyxnQzs7RztHO0k7STtJO0k7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7O0ssTTs7Syx3QixPO0ssTzs7STs7O0ssTztLLE87SSxPO0c7O0k7O0ssTTs7STtHOztJO0k7OzthLFk7YTthO1k7Rzs7STtJOzs7YTtjLFM7OzthO2E7WTtHOztJOzs7Szs7O0k7SyxXO0s7Ozs7K0I7Ozs7O0ksTzs0Qyx3QjtHOztJO0ssSTtLLEk7Ozs7STtnQixPO0ssSSxpQixJLDhCOzs7Ozs7O007TTs7Ozs7O0ssMEI7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ssSTs7STtnQixPO0ssSSxpQixJO0s7bUIsTTtNOzs7TztRLE07OztPOzs7dUIsTTtNO087UztXO08sTztNOzs7Ozs7TTs7Ozs7Rzs7STtJO0c7O0k7SyxJO0ssTztLLE87STtJLGE7STtHOztJOzs7Rzs7Ozs7Ozs7O0ksUyxPO0k7O0s7OztJLE87O29CLGMsNkI7O0ksVSxNO0ksa0I7OztLOztPLGM7Tzs7Ozs7Ozs7O0c7c0IsYyxtQjs7STtJOzs7RztzQixZO3NCLGtEOztJOztLO087OztVOztXOzs7Ozs7Ozs7Ozs7O1UsTztTOzs7STs7TSxNO0s7OztNLEk7TTtNOzs7O08sSSx3Qzs7OztTOzs7Vzs7Uzs7Ozs7Tzs7Ozs7SyxjOzs7SyxNO0k7Ozs7SyxNO0s7Szs7Ozs7TSxJLFk7Ozs7Ozs7O1M7Ozs7O1E7Ozs7O00sdUI7TTs7Ozs7SSxjO0c7O0k7OztrQjs7STtHOztJLGdDOzs7O1E7Ozs7OzJCOztROzs7Ozs2Qjs7UTs7OztRLHFCOzs7Ozs7SyxNO0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O0c7O0k7SyxNO0ksc0I7Ozs7O08sTTtNOzs7Ozs7SyxJO0s7Z0I7TTtNLEc7O087UTs7Ozs7Ozs7STtJLFc7STs7O087O007O0ksSSxlLHNCO0k7OztPOzs7UTs7Ozs7Ozs7O1k7Ozs7YyxNOzthO2EsSyxrQzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7OztROzs7TTs7STtHOzs7O0s7OztNOztLLE07O0ksTTs7O0k7OztLLFc7Ozs7STs7SztLO087Ozs7VTs7O1U7UztLOztLLE07STtLO0s7SztPOzs7O1U7Vzs7WTs7WTs7O2E7Ozs7WTs7Ozs7UztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7STs0Qjs0Qjs7O0csSSxtQjt1QixXO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1UsUTs7Uzs7VSxPOztTOztVO1c7O1ksTztZLE87VyxPOzs7Ozs7Ozs7O2tCO1U7Uzs7VSxRO1U7Ozs7VztXO1U7Uzs7VSxLLHlCO2tCOztVO1M7O1UsUTtVLEksWTs7OzhCOzs7VTtXLFU7VztVO1M7O1UsUTtVO1U7Uzs7VTs7O1U7VTtTOztVOztXO1k7YTs7OztjLE87YTs7WTtZOztVLE87Uzs7VTtVO1c7OztjOzs7Yzs7OztlLE87Ozs7Ozt5QixHLDhCO2tDOzs7OzBCOzt5QixNOzs7O3lCLFE7Ozs7Ozt5QiwyQjt5QixxQjsyQzt5Qjt5Qjs7O2MsTTs7VSxPO1M7O1U7VztZLFE7WTs7VyxnQztTOztVO1U7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7OztTOztVO1U7Ozs7ZTtnQixTO2dCLGU7Ozs7d0MsTzs7O2U7Ozs7VyxPOztTOztVOzs7Ozs7VyxNOzs7O1c7WTs7ZTtnQixTO2dCLGE7Ozs7dUMsTzs7O2U7Ozs7VyxPOztTOztVO1U7Ozs7MEM7O2U7Ozs7ZTs7VyxNOztTOztVO1c7VyxlOztTOztVOzs7cUM7bUI7bUI7O1M7NkIsNEI7O1UsbUI7Ozs7Uzs7VTs7VztZLE87bUI7OztVO1M7O1U7Uzs7O1U7OztVLE87Ozt1QyxTO2lDLFM7O1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7Ozs7Uzs7VTtzQjs7VTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTs7WTtZOzs7OzRCOztZO1k7Ozs7O1M7O1Usb0IsVztVLE87Uzs7Ozs7OztVO1csUTtXLFU7OztXO1c7VyxPOztVO1M7O1U7O1M7O1UsbUMsTztVO1U7VSxpQjs7OzJDLGtDO3lDLGlDOztVO1UsWTs7Vzs7WSxPO1ksTztXO1c7VyxXO1csTzs7VTs7Uzs7VTtVOztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtrQztrQzs7OztVO1csTTs7VTtvQjtvQjtTOztVO1UsRyxXO1c7VSxNO1M7O1UsRyxXO1c7VSxNO1M7O1U7VTtTOztVO1U7Uzs7VTs7OzhCOztXOzs7K0I7O1U7UztvRCx5Qjs7Ozs7Ozs7VTs7O1U7VztXO1c7VTtTOztVO1UsTztTOztVO1UsTztTOzhCLHVDOztVO1c7VztVLE87Uzs7VTtXLE07O1M7O1U7VTtTOztVLEksYztVO1M7O1U7Ozs7OztVO1M7O1U7VTt5QjtXLEksUzs7OztTOztVO1U7Ozs7b0IsTyxjO21COztTOztVO1U7Ozs7b0I7OzhCLGM7bUI7O1M7O1UsTztTO29DLHVCO2dDLHVCOztVO1c7O1k7O1csTzs7Ozs7O3FCO3FCO29COzs7OztVOztXOztXLFE7c0I7VTs7VztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLFM7OztVO1U7dUI7VyxJLFM7Ozs7Uzs7VTtVLE07UztzQyx5QixTO3FDLHlCLFM7O1U7VTtvQjtvQjtTO2lDLDJCOztVOztXOztZOzs7VyxlLE87O1csTzs7O3NCLE87VSxNO1M7O1Usa0I7VTtTOztVO1M7O1Usa0I7VTtVLE07Uzs7O1U7VTtTOztVO1U7Vzs7cUI7Ozs7OztvRSxTO3dELCtCO2dELFM7O29COztVOztTOzs7VTtvQjs7Uzs7VTtvQjtVOztXO1UsTztTOztVO29CO1U7O1c7VSxPO1M7O1U7b0I7VTs7Vzs7VztVLE87Uzs7VSxlO1M7O1UsZTtTOztVO29COztTO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7STtJLE87Rzs7STtJLE87Rzs0QixPLHNDOzRCLE8sdUM7NkIsZ0M7O0ksaUIsNkI7STtHOztJO0c7Z0MseUM7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7MEIsOEI7O0k7SSxPO0c7O0k7Rzs7SSwwQzs7O0ksTztHOztJOzs7Ozs7Ozs7O087Ozs7Ozs7Tzs7OztJOzRCOztHOztJOzs7Ozs7Ozs7Ozs7O0s7O0k7NEI7O0c7O0k7SSxPO0c7O0k7Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7SSwrQjs7STtHOztJO0c7O0ksWTs7STs7O0ksWTs7STs7O0ksTTtHOztJO0s7SztJLE07Rzs7STtJLE07Rzs7STtJLE07Rzs7STs7O3dCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7USxNOzs7O0k7Rzs7SSxxQjs7Ozs7Ozs7Ozs7O2dCOztnQjs7O007OztJO0c7RztJOzs7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7STs7Ozs7STs7Ozs7O0s7SyxROzs7SyxLO0k7Ozs7SSxXO0k7OztJLEk7STtHOztJO0ksVztHOztJO0k7Rzt5QixpQzs7STs7NEIsVyw4QjtJLE87Rzs7SSxtQyxjO0ksTztHOztJO0ksTztHOztJOztLO087O2dDLHNDOzs7STs7Ozs7O2U7Rzs7STtLOzs7SyxPO0s7SSxVOzs7Rzs7STtLOzs7SyxPO0s7SSxVOztJO0c7O0kscUM7Yzs7STs7O0kscUM7YztJOztLO0s7SSxPOzs7STs7Ozs7O0ssUztLO0k7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLLE87SyxPO0ksTzs0Qyx3QjtHOztJO0s7TSxhO00sYztNLE87TSxPO00sTztLLE87O0k7SyxPO0ssZ0I7SyxPO0ssTztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STs7OztjLFc7YyxPOztxQyx3Qjs7YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7Ozs7SztxQztJOzs7Ozs7WTs7Ozs7STthO0k7Rzs7STtJO0c7OztJOztHOztJLHlCOztJOzs7SSxrQjtJOztLO087Yzs7Z0I7OztLOztNO007TTtxQjs7O0k7O087OztVOzs7VztVO1M7OztJO0c7O0k7SyxNO0k7O0ssbUI7SyxxQzt1Qjt1Qjt1Qjs7TSxNOztNLE07OztNLE07O0s7STtJOzs7MkI7Ozs7USwwQztRLGtCOzs7O0k7RztxQyw2Qjs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7OztTO1M7UTtPOztROztTOzs7OztTO1MsSTtRO087O1E7Ozs7Ozs7OztTLE87UyxPO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7O1MsTztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7OztTLE07UTtTLE87UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsSztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7O1M7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7UztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87Uzs7O2lCOzs7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7OztTO1MsTztTO1E7OztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UyxLO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1MsSztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7UztROzs7UTs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTLE07UztRO087O1E7Ozs7Ozs7OztTO1MsTTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7O1M7Uzs7Uyw0QjtROzs7O1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1MsUztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1MsTztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLE87UztTO1c7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTtRO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7Ozs7O1MsSztTO1M7Uzs7UTtTO1U7Ozs7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7OztTO1M7Vzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztXLHlDLGM7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztROzs7UTs7Ozs7OztTO1M7Uzs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UyxPO1M7UztTO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7OztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7O1M7UyxPO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1MsTztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7Uzs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7OztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO1MsTTtROztTO1c7O3lCLHdCOztROzs7UTs7Uzs7Ozs7UztTOzs7UztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7UyxLO1M7UTs7O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7OztTLEs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTOzs7UztTLE87UztTO1c7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7O1M7UyxtQjs7O2M7UyxXO1M7UztXOztROzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7O1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7UTs7O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7O1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7O1E7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1MsUTtTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztROzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROztTOzs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1M7O1M7UztTO1E7Ozs7Ozs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UyxPO1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1MsTztTO1c7Ozs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxRO1MsTztTLE87UztXOzs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UyxPO1M7UyxPO1M7Vzs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UyxLO1E7UTtTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7O1E7UTtTO1MsSTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTOztTO1E7OztROzs7Ozs7Ozs7UyxJO1E7Tzs7UTs7Ozs7Ozs7Ozs7UyxJO1E7OztROzs7Ozs7Ozs7UztTO1MsTztTLEk7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsbUI7OztjO1MsTztTLFE7UztTO1c7Uzs7UztROzs7UTs7Ozs7Ozs7OztTO1M7UyxPO1M7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7Ozs7O1M7UztTLE87UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7OztTO1M7UyxPO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7O1M7UztTOzs7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztTO1M7Uzs7O1M7UztROzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTOztTO1M7O1E7USxNO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7Vzs7O2M7YzthOzs7UyxPO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7OztTO1E7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1c7OztjO2M7YTs7O1MsTztTO1E7OztROztTOzs7Ozs7OztTO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTLGU7UztTO1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Ozs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7Ozs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7OztROztTOzs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROzs7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztRO1E7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UyxPO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7Ozs7Ozs7O1E7OztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1M7UTs7Ozs7O087O1E7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7UztROzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTLE87UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1MsSTtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7OztTO1U7OztRLEksdUI7UTtPOztROztTOzs7Ozs7Ozs7UztTOzs7O1M7VTs7O1EsSSx1QjtRO087O1E7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztVOzs7USxJLHVCO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7OztTO1U7Ozs7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UztTLE87UyxXO1M7Vzs7Ozs7Ozs7OztTO2U7UTs7O1E7O1M7Ozs7O1MsUTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLHlCO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOztTOzs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7O1M7OztRO1MsTTtRO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsTztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Uzs7UyxRO1E7Tzs7UTs7Uzs7Ozs7O1M7O1MsUTtRO087O1E7O1M7Ozs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7O1M7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1MsaUI7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTLFc7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UyxLO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7Uzs7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UyxLO1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7Uzs7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1MsSztTLEs7UztTOzs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTOzs7O1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UyxPO1MsVztTO1c7O1M7ZTtROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxLO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTLEs7UztTO1MsSztRO1E7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7OzthOztTLE87UztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLGdCO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxPO1M7UyxRO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLFE7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztTLE87UztXOztTO1M7UztROzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7O1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1MsTztTO1M7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UTtPOztROztTOzs7Ozs7UTtPOzRCLE0sMkM7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UyxLO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTLEs7UztTO1M7UyxLO1MsTztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTOzs7WTs7Ozs7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7d0QsTztHOztJLE87Rzs7SSxPO0c7dUQsTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7Rzs7STtJLGM7STtJLE87RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7SztLOzs7Ozs7STs7O0k7STs7OzBCO0ksYzs7O0k7STtHOztJLGdCOztJO0ksSSxVLDZCO0k7STtHOztJLE07MEI7Rzs7SSxNO0c7O0k7Ozs7TSxVOzs7Ozs7Ozs7O08sTTs7O08sTTs7TTs7Ozs7O0c7O0k7Ozs7Uzs7Uzs7Uzs7O3NCO0k7Rzs7SSxnQjtJLE07OEI7Rzs7STsyQixPO0k7O3FDO0c7O0k7MkIsTztJOztxQztHOztJO0ksTztHOztJLE87Rzs7STtJO0c7O0k7STs7Ozs7OztHO0c7STtJOzs7SSxXO0ksTzs7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztHOztJO0c7Rzs7O00sdUI7Ozs7bUI7O1E7UyxVO2dCOzs7O1U7O1csTztrQjs7Ozs7OzthOzs7Ozs7O2dCLGtCOztnQixPO2U7Ozs7Ozs7YTs7Ozs7OztnQixvQjs7Z0IsTztlOzs7cUI7O1U7O1csZTtrQjs7Ozs7a0I7Ozs7O2tCOzs7Ozs7O2E7Ozs7Ozs7Z0Isb0I7O2dCLE87ZTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxhO0k7STtLLE87O0k7RzswQjs7STtJO0s7O1E7Ozs7Ozs7VTs7VTs7VTs7VTs7YTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVLG1CO1U7Ozs7UyxTO3FDO1M7UztVLE87O1M7O1MsZ0M7O1M7VSxPOztTOztTOztTOztTOztTOztZOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7WTs7UztTOztTOztZOztTO1M7O1M7O1k7O1M7O1M7bUI7UztVLFc7VTs7OztpQzs7OztTO21CO1M7Uzs7UzttQjtTOztTO21CO1M7Uzs7UztnQjtTOztTO1U7WTs7VSxRO1M7O1M7a0I7Uzs7UztVO1k7O1UsVTtTOztTOztZO1M7O1M7VTs7O1M7O1M7VTtZOztVOzs2Qjs7O1M7O1M7VTtZOztVLFc7VTs7NkI7OztVO1M7O1M7VTtVO1k7O1U7VSxVO1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1k7O1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTLGdDOztTLFE7Uzs7UyxVO1M7O1M7O1M7O1M7O1M7O1k7O1M7O1M7O1M7VTs7O1M7O1M7VTs7Ozt3Qjs0Qjs7UztVO1k7O1U7OztlLGE7ZTtjOzs7O1M7OztVLFc7VTs7UztVOzs7Uzs7Uzs7WTs7UztVLFc7VSxZOztTLHlCOztTLFk7Uzs7OztTOztTO1Msc0I7Uzt1Qjs7VTs7VTtXOztjOzs7Ozs7Vzs7O1U7VztXO1csTTtXO1c7VyxVO1c7VyxZOzs7VyxJLGU7Ozs7Ozs7a0I7Ozs7Vzs7O1U7Ozs7b0M7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7UztpQjs7O0s7OztHOztJO2tCOztLO007O1M7OztNOzs7Ozs7bUM7UTs7Ozs7UyxNOzs7UyxPOzs7O1E7Ozs4QjtROzs7WTs7Ozs7O1csd0I7O1ksTTtXOztZLE87WSxROztXOzs7Ozs7O1E7OztROztTO1MsUTs4QjtROzs7WTs7Ozs7O1csNEI7O1ksTTtXOztZLE87WSxVOztXOzs7Ozs7O1E7UTtROzs7UTs7UTs7Vzs7UTtRO1E7UTs7O1E7O1E7O1E7O1E7O1E7Ozs7UyxNO1E7O1MsTztTLFU7O1E7O1E7Z0I7UTtROzs7UTtnQjs7O0c7O0k7a0I7O0s7TTs7Uzs7O007Ozs7Ozs7UTtTO1MsSzs7UztTLFE7UTtRO1M7UztTOzs7O1EsUTtROzs7UTs7UTs7UTs7O1E7UyxNO1MsTTtTOzs7Ozs7UztVO1U7WTtlO3NDO1E7Uzs7Uzs7OztTLFU7Uzs7UTs7O1E7Z0I7UTtROzs7NkI7O1EsVTtROzs7Rzs7STs7SztNOztTOzs7TTs7Ozs7USxTO1E7UTs7OzZCOztROztXOztRO1E7OztRLFE7UTs7O0c7O0k7STtLOztROzs7OztTOztTO2lCOztLOzs7Rzs7STtjOztJLE87Rzs7SSxlOztLO0s7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTtXLE07VyxNO1csVTtVO1UsRzs7Ozs7Ozs7OzsrQjs7Ozs7Ozs7Ozs7Ozs7OzswQjs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7TSxjOzs7OztTLFU7UztTLFU7Uzs7O1MsVTtTO1M7Ozs7OztTLFU7UztTO1UsTTtVLE07UztTO1UsTTtVLE07UztTLFU7Uzs7O1MsVTtTO1M7VSxNO1UsTTtTO1MsVTtTO1MsVTtTO1M7OztNOztJO0k7Rzs7STs7OztjOztJLE87Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7O0c7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjtJLEc7SztJLFc7SSxHO0s7SSxXO0ksRztLO0ksVSx1Qjs7Ozs7eUI7OzBCOzsyQjs7UztVLE87aUI7Ozs7Ozs7Ozs7Ozs7OztJLFM7Ozs7O3dCOzswQjs7MkI7O1M7VSxPOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLO0ssYztJO0c7O0k7SztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPO08sVztPLFc7TyxPOzs7OztJO0c7O0k7STtHOztJOztPOzs7SSxPO0c7c0MsZ0M7NEIsMkI7O0k7Ozs7OzBCOzsyQjs4Qjs2Qjs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1ksbUM7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix5Qzs7STs7O2E7aUMsTztJOzs7O00sTTs7b0Isd0IsTzs7SztLOzs7Rzs7STs7SSxROztJO0k7SSxPO0c7O0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7OztPOzs7bUI7Ozs7Ozs7bUI7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7TyxPOzs7OztJLE87Rzs7STs7OztROzs7OzZCLE8sdUI7Ozs7Tzs7Ozs7aUI7aUIsTztnQjs7OzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7Ozs7NkIsTyx1Qjs7OztPOzs7OztpQjtpQixPO2dCOzs7OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO2M7Yzs7O2dCO0c7O0k7SSxPO0c7OEIsd0I7O0ksTztHOztJLFE7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7Ozs7bUM7Ozs7SSxPOzs7Ozs7a0M7Ozs7STtJOztNLE87Ozs7b0M7O29DOzs7Ozs7O1MsTzs7Ozs7bUI7Ozt1Qzs7OztTLE87Ozs7dUM7Ozs7Ozs7O1UsTzs7Ozs7b0IsUTs7b0IsTzs7Ozs7OEI7OzttQjs7d0M7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7OztPLE87Ozs7O2lCLFE7O2tCOzs7O2dEOzs7O2lCLE87Ozs7K0M7O2dCOzs7Ozs7Ozs7O1c7OztZLE87Ozs7OzswQzs7MEM7Ozs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOzs7WSxPOzs7Ozs7c0IsTzs7OztzQixRO3NCO3VCOzswQjtzQixPOzs7OztnQzs7O3FCOzswQzs7OztXO1U7TyxPOzs7OztpQix3Qjs7aUI7a0I7Ozs7Ozs7O2lCLE87Z0I7OztpQjs7OzttQixPOzs7Ozs2Qjs7Ozs7aUI7Z0I7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7OztPLE87Ozs7OztxQzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7SyxPOzs7O21DOzttQzs7Ozs7SyxPOzs7O21DOzs7Ozs7Ozs7O0s7Ozs7O00sZ0M7Ozs7OztJOzs7TSw0QjtNOztLLE87Ozs7O2U7Ozs7O0k7SyxPOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7OztxQzs7Ozs7OztLOzs7SztNLE87O0s7Ozs7Ozs7Ozs7Ozs7O1M7VSxPOztTOzs7USxHO1MsTztpQixPOzs7O1MsTzs7Ozs7OzttQjs7OzttQjs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7OztJO0s7TSxPOztLOzs7a0MsTzs7OzhCOzt5QixPOzs7TyxPOzs7O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxhLE87Ozs7VyxPOzs7Ozs7eUM7OztPOztRLE87Ozs7O2tCOzs7Ozs7TyxPOzs7OztpQjs7Ozs7OztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7O08sTzs7OztxQzs7cUM7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRLDRCOzs7TyxPOzs7Ozs7O2lCOzs7O0k7Ozs7a0M7OztHOztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sZSxPOzs7SyxPOzs7Ozs7bUM7OztJLGlCOzs7OztLO2UsTzs7SyxPOzs7Ozs7bUM7Ozs7SyxPOzs7Ozs7bUM7OztJLE87Ozs7OztrQzs7a0M7Ozs7SSxlOzs7Ozs7OztNOztROzswQiw2Qzs7O007Ozs7Ozs7Ozs7Ozs7VyxZOztXLE87O1U7O3FEO1k7Ozs7bUM7Ozs7OztlOzs7O21DOztZOzs7O21DO1c7Ozs7a0M7Ozs7OztjOzs7O1c7O1U7O087UywyQzs7Ozs7Ozs7Vzs7OztrQzs7Vzs7Ozs7Ozs7OztZOzs7YTthO1k7Ozs7Ozs7Ozs7Ozs7K0M7Ozs7Ozs7Ozs7Ozs7OzhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7OzsrQzs7Ozs7OztZOzs7Ozs7Ozs7OztTO1U7VyxnQjtXOzs7OztZOzs7O1U7VztXLEk7Vzs7Z0I7Z0I7Ozs7Ozs7WSxNOzs7Ozs7O1U7c0I7VyxTOzs7cUM7cUM7VTs7Ozs7Ozs7Ozs7Ozs7TTs7O0k7OztJOztLOzs7SSxPOzs7O2tDOztrQzs7Rzs7STs7SyxPOzs7O21DOzs7O0ksMEI7STtJLE87Ozs7O2M7OztrQzs7Rzs7O0k7SSwwQjtRO0k7Ozs7TTs7O0ssTzs7UTtJLE87Ozs7O2M7Ozs7Yzs7OztrQzs7Rzs7STs7TSxPOzs7O29DOztvQzs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlLE87Ozs7O3lCOzs7Ozt5Qjs7Ozs7OztZOztlOztZOzs7VyxPOzs7O3lDOzs7cUI7Ozs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7OztXOzs7O2EsTzs7Ozs7MkM7Ozs7O1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7UyxPOzs7OzttQjttQjtvQjs7dUI7bUIsTzs7OztpRDs7OzZCOzs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozt1Qzs7OztTLE87OztTLE87Ozs7Ozt1Qzs7Ozs7Ozs7YSxPOzs7Ozs7MkM7Ozs7O1MsTzs7Ozs7bUI7Ozs7OztTLE87Ozs7dUM7Ozs7UyxPOzs7O3VDOzs7OztVLE87Ozs7d0M7OztTLE87Ozs7dUM7O3VDOzs7OEI7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVOzs7O3dDOzs7Ozs7Ozs7O1U7VyxPOzs7OztxQjs7b0I7Ozs7VyxPOzs7OztxQjs7OztxQjs7OztVOztXO1c7a0M7OztVLE87Ozs7O29COzs7OztVLE87Ozs7d0M7O3dDOzs7O1UsTzs7Ozt3Qzs7d0M7Ozs7VSxPOzs7O21COztvQjs7O3dDOzs7O1UsTzs7Ozs7b0I7Ozt3Qzs7OztVLE87Ozs7Ozt3Qzs7OztVLE87Ozs7O3dDOzt3Qzs7Ozs7Ozs7Vyw0QjtXOztVLE87Ozs7d0M7OztvQjs7O3dDOzs7OztXOzs7O3lDOzs7Ozs7YTs7OztjO2M7cUM7YSxPOzs7Ozs7Ozs7dUIsUztzQzt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7Ozs7OztlLG9DOzs7Ozs7YTtjLE07YztjLDRCO2M7O2EsTzs7Ozs7dUI7Ozs7Ozs7TSxPOzs7O29DOztvQzs7Ozs7OztPLE87Ozs7O2lCOzs7O007TyxPOztNOzs7Rzs0Qjs7STs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7SztNLE87O0s7O0ksa0IsTzs7STtHOztJOzs7STtLLGtCLE87O0s7Ozs7OzsyQjs7MEI7Ozs7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7Uzs7O3FDLE87cUMsTzs7O21DLE87b0MsTzs7Ozs7OztZO1ksNEI7WTs7VyxPOzs7OztxQjs7Ozs7O1c7OztTLE07Ozs7OztTLE87Ozs7Ozs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7a0I7Ozs7Ozs7UztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7c0M7OztROzs7Ozs7UyxrQztRLE87Ozs7c0M7Ozs7Ozs7Ozs7OztRLE87Ozs7c0M7O3NDOzs7UTs7OztTLDRCO1EsTzs7OztzQzs7O2tCOzs7c0M7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7O0k7OztJLE87OztjLE87Ozs7OzRDOzs7O0c7O0ksTzs7O2MsTzs7Ozs7NEM7Ozs7Rzs7SSxPOzs7OztrQzs7Rzs7SSxPOzs7O2tDOzs7Yzs7O2MsTzs7Ozs7d0I7OzthOztHOzs7SSxPOzs7OztrQzs7Ozs7SSxPOzs7OztrQzs7OztJLE87Ozs7O2M7OztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7O3lCOzs7Tzs7O0c7O0k7Ozs7TyxPOzs7OztpQixRO2lCO2tCOztxQjtpQixPOzs7OzsyQjs7O2dCOzs7O3FDOzs7Ozs7O1E7K0I7UTs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7OztVOzs7Ozs7TyxPOzs7OztpQjs7O3FDOzs7O087Ozs7TyxPOzs7Ozs7O3FDOzs7Rzs7O0s7SyxPOzs7Ozs7O21DOzs7O21DOzttQzs7STtJLFE7O2U7O0k7Szs7UTtJLE87Ozs7O2M7Ozs7Yzs7O0c7O0k7OztPLGtEO08sTzs7Ozs7cUM7OztpQixTOztpQixPO2dCOzs7aUI7Ozs7Ozs7USxPOzs7Ozs7OztzQzs7O2tCOzs7O08sd0M7TyxPOzs7Ozs7Ozs7cUM7OztpQjs7Ozs7OztRLE87Ozs7Ozs7O3NDOzs7a0I7Ozs7Tzs7Ozs7Vzs7OztVO1E7TyxPOzs7Ozs7OztpQjs7Ozs7OzttQixPOzs7Ozs7aUQ7O2lEOzs7O2tCOzs7Z0I7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozt5Qjs7O087OztHOzs7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Yzs7Ozs7STtLLE87Ozs7bUM7O21DOzs7Ozs7TyxPOzs7OztpQjs7aUI7a0I7O3FCO2lCLE87Ozs7OzJCOzs7Z0I7Ozs7OzBCOzs7TyxPOzs7O3FDOztxQzs7Ozs7O1E7O1c7O1E7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7OztPLE87Ozs7cUM7O3FDOzs7MkI7OztPLE87Ozs7Ozs7cUM7OztHOztJO0k7O00sTzs7OztvQzs7b0M7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1MsTzs7Ozt1Qzs7dUM7OztRLE87Ozs7O3NDOztzQzs7Ozs7OztVOzthOzs7Z0IsTzs7Ozs4Qzs7Ozs7MEI7Ozs7O2dCLE87Ozs7Z0IsTzs7Ozs7OzhDOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7OzhDOzs7OzswQjs7Ozs7Z0IsTzs7OztVOztTLE87Ozs7dUM7OzttQjs7Ozs7OztRO1MsTzs7UTs7O0c7O0k7OztJOzs7OzJCLE87Ozs7Uyw0QjtTOzs7USxPOzs7OztrQjs7Ozs7USxPOzs7O3NDOzs7MEI7OztRLE87O1E7Ozs7c0M7Ozs7O0k7SyxPOztJO0c7O0k7OztJOzs7O2tDOzs7Rzs7STs7OztPLE87Ozs7Ozs7O2lCOzs7O2lCOzs7OztPOzsyQjs7MEI7OzBCOzs7O1EscUI7USxPOzs7O2lCOzs7O2tCOzs7O08sSTtPLE87Ozs7Z0I7cUM7OztpQjs7Ozs7TyxPOzs7Ozs7OztpQjs7Ozs7OztRLFU7O1E7O1M7Ozs7VztnQzs7Z0M7Ozs7O1M7Ozs7VztnQzs7Z0M7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7aUIsUzs7aUI7aUIsTzs7OzsrQzs7Z0I7OztpQjs7Ozs7Ozs7O087USxNOztPLE87Ozs7O3FDOzs7aUI7Ozs7TyxtQjtPLE87Ozs7Ozs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7O1csTzs7Ozs7Ozs7cUI7Ozs7O3lDOzs7cUI7Ozs7TyxVOztvQjs7O1E7O1c7O1E7O08sTzs7Ozs7aUI7Ozs7aUI7Ozs7MkI7O3lCOzs7TztPOztHOztJO0ssTzs7OzttQzs7bUM7Ozs7OzBCLE87Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7O1EsTzs7OztpQjtzQzs7c0M7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzttQzs7Rzs7STs7OztrQzs7O0c7O0k7Ozs7Ozs7UyxPOzs7O3VDOzs7bUI7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7OztTLE87Ozs7Ozs7OztLLE87Ozs7bUM7O0k7Ozs7OztPOztRLE8sd0MsWTs7OztPLE87Ozs7cUM7OztpQjs7O3FDOztxQzs7OztNLE87Ozs7b0M7O29DOztvQzs7Ozs7O00sTzs7OztvQzs7b0M7O29DOztvQzs7OztLLE87Ozs7bUM7O21DOzttQzs7Ozs7OztLLE87Ozs7bUM7Ozs7O0ksTzs7OztrQzs7a0M7Ozs7OztLLE87Ozs7Ozs7bUM7O21DOztJO0ksUTs7ZTs7SSwwQjtRO0ksTzs7OztrQzs7O2M7Ozs7O0k7Ozs7Ozs7Ozs7TSxpQixPOzs7OztJLE87Ozs7O2tDOztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7Ozs7OztpQjs7OztpQjs7Ozs7O1EsTTs7Tzs7MEI7OzBCOzs7TyxPOzs7O2dCOztpQjs7OztrQjs7Ozs7bUI7O29COzs7O3NCOzJDOzs7O29COzs7OztpQjs7OzttQixPOzs7O2lEOztpRDs7O2lCLE87Ozs7K0M7O2dCOzs7aUI7Ozs7Ozs7Ozs7WSxxQztZLE87Ozs7cUI7MEM7OzBDOzs7c0I7Ozs7VyxJO1csTzs7OztvQjt5Qzs7O3FCOzs7O087USxNOzs7Ozs7OztRLE87Ozs7aUI7c0M7O3NDOzs7a0I7Ozs7a0IsTzsyRDtpQjs7OztPLE87Ozs7Z0I7cUM7OztpQjs7OztpQixPOzBEO2dCOzs7Ozs7OztPLE87Ozs7OztpQixTOztpQjtpQixPOzs7OytDOztnQjs7O2lCOzs7O08sbUI7TyxPOzs7OztxQzs7O2lCOzs7Ozs7OztXLE87Ozs7eUM7O1U7OztXLDhCOzs7Ozs7Ozs7YTs7Ozs7Yzs7Ozs7O1csSSxPOzs7Ozs7Ozs7O1csMEI7ZTtXLE87Ozs7Ozs7O3FCOzs7Ozs7cUI7Ozs7cUI7Ozt5Qzs7O3FCOzs7O08sVTs7b0I7OztROztXOztROztPLE87Ozs7O2lCOzs7O2lCOzs7OzJCOzs7TyxPOzs7O3FDOzs7aUI7Ozs7eUI7OztPO087O0c7OztJLDBCOzs7Ozs7Ozs7SSxPOzs7SSxRO0ksMEI7SSxPOzs7OztjOzs7Ozs7O0s7Ozs7O0ssTzs7Ozs7OzttQzs7Ozs7bUM7O21DOztJO0ksUSxNOztlOztJLDBCO1E7SSxPOzs7O2tDOzs7Yzs7Ozs7O0ssTzs7Ozs7Ozs7bUM7O21DOztJOztJLE87Ozs7O2M7OztHOztxQixrQix3Qjs7SztpQjs7O2U7Ozs7O3FDOztlOzs7O3FDOztJOztLO0s7O0k7O3VCLHdCLHdCO0s7OytCOzs7Ozs7VSxhLE87O1UsTzs7Ozs7b0I7Ozs7UztNLE87OztLLE87Ozs7Ozs7ZTs7O0k7O0ssTzs7O2U7ZSxPOzs7OzZDOzs2Qzs7Yzs7STtJLE87Rzs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7Ozs7YyxRO2MsMEI7YyxPOzs7Ozt3Qjs7O2E7Ozs7Ozs7Yzs7OztrQzs7Rzs7Ozs7Ozs7OztLLFM7O0ssTzs7Ozs7ZTs7O0k7STtLLE87Ozs7OztlOztnQixPOzs7OzswQjs7Ozs7dUI7ZSwwQjttQjtlLE87Ozs7O3lCOzs7Yzs7bUM7OztJLE87Ozs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs2Qzs7Ozs7YywwQjtrQjtjLE87Ozs7O3dCOzs7NEM7O2E7O2tDOzs7O0k7OztLOzs7SSxPOzs7Ozs7O2tDOztHOzs7Ozs7O007SywwQjtLO0ssTzs7OzttQzs7O2U7OzttQzs7O0k7Rzs7SSxnQzs7Ozs7Ozs7Ozs7OztJLDBCO0k7O0ssTztlO2U7Ozs7OztxQzs7OztJLE87YztjOzs7Ozs7b0M7Ozs7STs7O3lCLE87OztxQixPOztPLE87OzBCLE87OztPLE8sd0I7O0c7O0k7OztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TztPO08sTTs7Ozs7O08sVTtPLG9DO08sTTs7TTtPO08sTTs7Ozs7Rzs7Ryw2QjtHO0csMEI7RztHLDhCO0c7Ryx1QjtHO0csd0I7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDBCO0c7Ryx3QjtHO0csd0I7RztHLDJCO0c7RyxtQztHO0csaUM7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHlCO0c7OztNLDhCOzs7O1M7Ozs7OztVOzs7Yzs7OztZOzs7Ozs7O1k7Ozs7Ozs7WTs7Ozs7OztZOzs7Ozs7Ozs7OztTOzs7O1UsTTs7WTs7Ozs7O2dCOzs7Ozs7Z0I7OztTOzs7VTs7YTs7Z0IsTzs7Z0IsTzs7Z0IsTzs7Z0IsTzs7O2dCLE87OztZO2dCOzs7Ozs7WTs7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7SSxJO0k7Ozs7MkI7OzJCOzs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7SSxPOzs7Yzs7YTs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7Ozs7UTtROzs7UTtROzs7UTtRO1EsTzs7O2tCOzs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7Ozs7OztRO1E7OztROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztROzs7Ozs7USxPOzs7USxPOzs7O1E7UTs7O1E7aUI7O1E7O1E7UTtTLE87O1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7OzRCOzs7USxPOzs0Qjs7Ozs7OztRO1E7UyxPOztROzs7UTs7Ozs7Rzs7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztRLE87OztRO1E7Ozs7OztRO1E7OztTOzs7O1U7VTs7OztVO1U7VTs7OztTOzs7UztTO1M7OztROzs7Ozs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7OztRLE87OztROzs7Ozs7UTtROzs7UTtROzs7Ozs7UTtROzs7Ozs7UTs7Ozs7O1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7O0s7SztLO0s7OztJLE87OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJO0ksTzs7O2M7YztjO2E7O0c7O0k7O3lCOzsyQjs7O087USxPOztPOzs7OztRO1E7O1E7UyxPOztROztPO1EsTzs7Tzs7OztJOzs7STtJO0ksSTtJO0k7STtJO0k7OztHOztJO0k7STtJO0k7STtHOztJO0k7STtJLEk7STtJO0ksZ0I7OztLO0ssTzs7O0k7Z0I7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7UTs7OztRO1E7UTs7Ozs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7Ozs7UTtRO1E7OztRO1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztRO1E7Ozs7O1M7Uzs7Ozs7O1M7Ozs7Ozs7UTtRO1E7OztRO1E7UyxPOztROzs7Ozs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087O087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Ozs7O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJLFk7O0k7OztJOzs7TztPOzs7TyxPOzs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7Ozs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7UTs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7STs7O087USxPO087Tzs7VTtPOztRO1E7UTs7Ozs7UTtROzs7Tzs7OztHOztJO0k7STs7Rzs7O0k7STs7OztJO0k7Ozs7STtJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQyx1QzttQyx1Qzs7STs7O0s7Szs7Ozs7OztJO21COzs7OzZCLE87OztxQixPOztPLE87OztPLE87O08sb0IsTztPLE87O0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7VTs7O2E7Ozs7YyxNO2MsUTthO2M7OztlLE87Ozs7OzBCO2EsTzs7O08sTzs7Tzs7O1EsTztRLE87UTtPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRO1U7OzthOzs7O2MsTTtjLFE7YTtjOzs7O2UsTztlLE87Ozs4QzthLE87OztPLE87OztPOzs7USxPO1E7VTs0QztPLE87OztPOzs7O1EsTztRLHNCO1E7VTs7MkI7O1E7TyxPOzs7Tzs7O1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7O1E7OztXOzs7O1ksTztZLE87VyxXOzs7SyxPO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0ssTztLOztROzt5Qjs7SSxPOzs7Ozs7Ozs7OztJOzs7O0ssTTtLLFE7SyxPO0ksTzs7O0k7Ozs7O0ssTTtLLFE7O0s7Ozs7TSxlO007OztTOzJDOzs7OztJO0ksTzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7O1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7TyxrQixPO08sTzs7Tzs7Ozs7O1EsTztRO08sTzs7O087Ozs7OztRLE87UTtPLE87Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztLLE87SSxPOzs7SSxZO0ksaUMsTztJOzs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87USxPO08sTzs7O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUI7TyxPOzs7O0k7O08sa0MsTztPOztPLHVDO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O08sb0M7Tzs7OztJOzs7SyxRO0k7O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLFE7STs7Tzs7O1EsVTtRLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7OztRLE87USxPO1EsTztPLE87Ozs7O29DOztROzs7O1MsVTtTLFE7UyxlOztPO1E7OzthOztjLFc7O2EsNEIsTzthLG1COzs7UTtVOzs7YTs7O2MsUTthO2M7Ozs7ZSxPO3lDOzs7YTs7O08sTzs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsZTtRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsZTtRLE87USxzQjtRO1U7OzJCOztPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRLE87UTtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087Ozs7USxlO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7O1EsTztRLE87USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxlO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7TyxxQjtPLE87O087OztRLE87UTtPLE87OztPOztRLE87USxzQjtRO1U7OzJCOztPLE87O087Ozs7USxPO1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O08sb0IsTztPLE87O08sb0IsTztPLE87O087OztRLGU7USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7OztRLE87USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7OztJOzs7OztLO0ssTTtLLE07SyxNO0ksTzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7Tzs7O1E7USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7UTs7O2E7OztjLE87YTtxQjs7c0M7OztZOztRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsTztRLHNCO1E7VTs7MkI7O08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxtQjtPLE87O08sbUIsTztPLE87O08saUIsTztPLE87O087OztRLE87UTtPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7O1EsTztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7SyxXOzs7SSxjOzs7STs7OztLLFE7SyxVO0k7O087Ozs7USw4QjtRLE87TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0s7SyxPO0s7O1E7MEM7SSxPOzs7Ozs7Ozs7OztHO0k7OztRO1MsTztTLE87UTtPOztRLFc7USxPO087OztROzs7O1MsTztTLGU7USxXO087O1EsVztRLE87Tzs7USxXO1Esc0I7Tzs7USxXO1Esc0I7Tzs7Ozs7OztRLFc7USxzQjtPOzs7O1E7Ozs7Ozs7UztTLGU7UztTOztZOzs2Qjs7UyxXO1MsVztRLE87O087O1EsVztRO087OztROzs7UyxPO1E7Tzs7O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Ozs7Ozs7TzsyQixTOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTO1M7UyxXO1MsVztRLE87Tzs7OztROzs7OztTO1MsZTtTLFc7UyxXO1EsTztPOztROzs7OztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7O1M7UyxXO1MsVztRLE87O087OztROzs2QixXOzs7VyxXOzs7VyxXOztXOzs7WSxlO1csVzs7Tzs7USxXO1EsTztPOzs7USxXO1EsTztPOzs7UTtTLE87O1MsZTtRO087O1E7O1MsVzs7O1EsVztPOzs7Ozs7O1E7Ozs7Ozs7UztVOzs7VyxPO1U7a0I7O21DOzs7O1M7OztVLE87VSxPO1MsVztRO1E7UyxPO1MsTztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Tzs7Ozs7Ozs7Ozs7SyxNOztJO0ssTztJO0k7SztPOzs7VTs7VztXLE87VyxlO1UsTzs7Ozs7Uzs7O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3QjtzQixtQzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTztHOztJO0s7Ozs7TSxXO00sVztNO0ssTzs7STtJLE87Rzs7STs7O2dCO0ssVztJLE87OztxQixTO0k7Ozt3QjtTO0k7Rzs7STtLO0ssTztLLGU7STtHOztJO0ssUTs7OztLOztLOztLOztLOztLOztLOztLOztLOzs7O0s7O007TTthOztLO007YTtJOztLOztLOzt3Qjt3Qjs7O0s7O0s7O0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztROzs7OztJLE87Rzs7SSxPOzs7YzttQzs7O2U7Ozs7Ozs7Z0I7O2UsTztjOztlOzs7Ozs7Ozs7aUI7OztnQjs7ZSxPO2M7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7OztpQjs7O2tCO2lCLFc7Ozs7ZSxPOzs7Ozs7Ozs7OztnQixnQyxPO2dCLFc7O2UsTzs7Ozs7O2dCOzs7OztnQjs7Ozs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7Ozs7O2dCO2dCLGE7Ozs7O2dCO21DLFM7aUI7O29DOzs7aUI7OztvQjtvQixPO21COzs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7aUI7O29CO3FCLE07b0I7b0IsTzttQjtpQjs7bUM7bUM7Ozs7Z0IsTzs7O2dCOzs7OztjO2E7O0c7O0k7SztPOzs7VTt1RDtVO1M7O0s7SSxPO0c7O0ksWTtnQixNOzs7Szs7STtHOzs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7STtLLEs7SztPLDJCOztLLFU7O0ssVTtLO0s7TSxRO00sSztLO0s7SztLLE87STtJOzs7OztpQjs7Z0I7Rzs7STs7Ozs7O08sYztPOzs7O0k7OztJOzs7Ozs7TyxjO087Ozs7STs7O0k7SSxXO0c7O0k7SSxXO0c7O0ksa0QsYztHOztJO0ssa0M7SztNOzs7VTtXO1ksTTtZLE0sbUI7Vzs7O1c7O1k7bUMsTSxvQztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7STs7Ozs7Ozs7OztJO0s7SyxRO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7Ozs7Ozs7Ozs7STtJLGlCOztLLE87STtHOztJO0ksaUI7Ozs7OztRLE87OztRLE87OztrQjtrQjtpQjs7O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7USxPOzsyQjs7OztrQjs7O29CO29CO21COztrQjs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OztRLE87Ozs7UTs7Vzs7NkIsaUM7O1E7a0I7Ozs7USxPOzs7O1EsTzs7OztrQjs7O29CO29CO21COztrQjs7Ozs7Ozs7OztLOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7OzBCOzs7USxPOzs7STtHOztJOzt1Qjs7STtHO0c7SSxPO0c7O0k7a0I7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7b0IsTzs7OztRLE87OztJO0c7O0k7SSxpQjs7OztRLE87Ozs7USxPOzs7STtHOztJOzs7Ozs7O2dCO0c7O0k7Ozs7Ozs7Z0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7STtJOztJO0ksVztHO3lCLGtDOztJOzs7SztPOzZDO0ksVzs7OztJLE87OztjO2MsTzthOzs7OztJLFEsTTtJOzs7SyxROzs7SSxJLGlDOzs7MkI7OztHOztJOzt1QixPOzs7TyxPO2UsTTs7RztHOztJO0s7O0c7Ozs7Ozs7O1EsSSxJOzs7O29COztROztRLHNDOzs7Ozs7UTs7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJO2lEO0ksVTtJLE07Rzs7STtJOzttQzs7O1E7OztROzs7OztRLE87OytCOzs7O1E7USxPOzsrQjs7OztRLE87OztrQjtrQjs7bUI7OztrQjtpQjs7OztRO1EsTzs7K0I7Ozs7OztRLE87OztrQjtrQjs7bUIsTzs7MEM7Ozs7a0I7aUI7Ozs7OztRO1E7O1c7OEMsa0IsUztRLE87OytCOzs7UTs7O1M7Ozs7a0M7OztHOztJLFk7O0ksTzs7O0k7O0ssTzs2Qzs7O0ksTzswQywwQjs7O0k7OztPO087TztNOztJO0k7Ozs7SyxPOzs7ZTtlLE87O3NDOzs7Ozs7SSxPOzsyQiw0Qjs7Rzs7STs7O0s7SyxPOzhDOzs7STtHOztJO0ksTzs7MkI7O0c7O0k7RztHOztJO0k7O21DOzs7UTs7Ozs7USxPO2dEOzs7UTtrQjs7USxrQixPOztROzsyQjs7O1EsTzs7O2tCO2tCO2tCO2lCOzs7O1EsTztnRDs7O1E7Ozs7O1E7UTs7MkI7Ozs7O1EsTzs7O2tCO21COztpQjs7Ozs7MEI7O1Esb0M7Ozs7Z0I7OztHO3lCOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7OztROzs7O1MsTzs7Ozs7VTs7OztVO1U7OzsrQzs7Ozs7OztRO1EsTzs7aUMsa0IseUI7Ozs7UTtROzs7UTtROzs7USxPOzsrQjs7OztRO1E7OytCOzs7UTs7O1c7VztXO1U7O1E7OztRO1E7OztRO1E7Ozs7O1EsTzs7K0I7Ozs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7OztRLE87O2lDLGtCLHlCOzs7UTs7OztTO1M7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1EsTzs7K0I7Ozs7OztRO1MsTzs7UTs7USxxQzs7Ozs7UTs7Ozs7Uzs7UTs7Vzs7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOzhCOztJO3VCOztJO0k7Rzs7SSxPOzs7Yzs7OztlO2M7Yzs7O0c7O0k7SztPOzt5Qiw2Qjs7O0s7O0ssdUM7O0s7dUM7SztJOzs7SztLLE87O0k7STtHOztJOztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7OztRO1EsTzs7O2tCOzt3Qzs7eUM7O3lDOzsyQzs7O3FCOzsyQzs7aUI7Ozs7UTtTLE87O1E7OzBCO29DOzs7Rzs7STs7O0k7STtJLEksZ0M7Ozs7OzBDO0s7Szs7Rzs7STs7O3lCOzs0Qjs7eUI7ZSxzQjs7RztrQywrQixTOztJLE87OztHOztJLGlDOzs7MEIscUI7Ozs7OzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087O1E7USxRO1EsTTtPLFc7O087O1E7VTs7O2E7eUI7O2EsTztZOztRLE87USxNO087O3VCLGlDOztPOzswQjs7Tzs7UTs7O087TztRLFE7USxNO08sVzs7O087O3VCOztPOzs7Tzs7eUI7O087O087O3lCLHFCOztPLGtCO3lDO087O0k7O29COztJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7OzswQjs7MEIsd0I7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7UyxPOztRO29DOzs7Rzs7STs7O0k7STs7Ozs7UTtRLE87OytCOzs7O1E7USxPOzs7Ozs7eUM7OzJDOzs2Qzs7O3FCO3FCOztxQjsrQzs7Ozs7O1E7Ozs7MEI7O1Esb0M7Ozs7O0c7NkM7Rzs7STtLOzs7STtJO0c7O0ksTzs7Ozs7Rzs7SSxpQzs7O3lCLGlCOztPLG1DO087OzBCLHFCOzs7Tzs7dUI7O087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtVOzs7YTt5Qjs7YSxPO1k7O1EsTztRLE07Tzs7cUIsbUM7O087O08sb0I7eUM7Tzs7MEI7OztPOzt3Qjs7Tzs7O087O3lCOztPOztPOztROzs7MEIsbUI7TztRLFE7USxNO08sVzs7TzttQyx1Qjs7OztJO0k7RztzQyw4QixTOzhDO0c7O0ksbUI7O0k7OztJO0k7Ozs7O1E7USxPOzsrQjs7O1E7Ozs7UztRLE87OytCOzs7O1E7UTs7Ozs7O1E7USxPOztpQyxrQix5Qjs7O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1EsbUM7Ozs7O0c7O0k7Ozs7OzJCOzs7Ozs7Ozs7Ozs7O1E7UTs7NEI7O1E7b0M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7SSxjOzs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0k7O0ssTzs7O0k7STtHOztJOzs4QixPOzs4Qjs7Tzs7O1EsTTtRLE07TyxPOztHOztJLHdDO0k7OztLLE07SyxNO0ksTztHOzhCLDhCOztJOzs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7Ozs7Ozs7O1M7Ozs7O0s7OztHOztJOztPOzs2Qjs7O0c7RztJOzs7Ozs7Ozs7O0k7OztHOzBCLDRCOzZCLDhCOztJO0s7Ozs7O2dDO1EsTzs7UTs7OztTLG1COzs0QjtRLE87OztRLE87Ozs7Ozs0QjtRLE87TTtHO3NDLHVCOzJCLHVCOzs7Ozs7Ozs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7Ozs7SyxJO0k7Ozs7Ozs7O0ksWSxPOzs7O0s7OztJO0c7O0ksUTtJOzs7Ozs7O0ssSTtJOztNOzs7Szs7OztrQzthO2E7O0k7aUIsTTs7K0I7Ozs7Ozs7bUIsTTtLOzs7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7bUIsTTtLOzs7OztNLEk7SyxZOzs7Ozs7SSxZO0ksa0I7STtHOzs7O21CO0s7Ozs7O00sSTtLLFkseUI7Ozs7OztJO0k7aUI7Szs7Ozs7TSxJO0s7O007OztlOztrQjs7Z0Msa0M7ZSxPOzs7Ozs7Rzs7Ozs7TTs7OztPLFM7Tzs7Ozs7O29COzs7Ozs7O0k7eUIsaUM7Rzs7SSxRO0ksYztJLE87Rzs7STs7YztjLHFCO2E7Ozs7Rzs7OzttQjs7SztLOzs7OztJO0k7Szs7TSxPOzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7OztVLE87Ozs7O1U7Ozs7O1c7VSxVOzs7Ozs7OztVOzs7OztXO1UsVTs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztVLGlCOzs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7O1MsTzs7Ozs7O1ksa0M7WSxpQjs7Ozs7Ozs7WSxvQztZLGM7Ozs7Ozs7Ozs7Ozs7O1ksa0M7WSxjOzs7Ozs7TTs7Szs7Rzs7STs7YTs7SSxPO0c7Ozs7OztRLHFCLE07USxPOztRLHNDO2dCOzs7Ozs7Z0MscUM7O0k7STs7OzZCLE87O1E7OztTO1M7USxPOzs7RzswQixTOztJLE8sMEI7Rzs7Ozs7Ozs2QixvQjs7OztROzs7UztTLE07UyxNO1M7USxPOzs7O1M7Ozs7Ozs7SztLLEc7TTtPLE07YTs7Z0I7SztLLE87Ozs7Ozs7OzZCLE87Ozs7O1EsTzs7Ozs7O0ssTzs7OztJO0k7Ozs2Qjs7USxNOzs7Rzs7STs7OzsyQjs7OztROzs7Ozs7Szs7OztHOztJO0s7Szs7OzBCOztTLDhCOzs7Ozs7STtJO0c7O0k7STs7Ozs7OEIsTzs7Ozs7Ozs7Ozs7OztLOztHO3FDLDBCO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHlDO0k7Rzs7SSw2QztJO0c7O0ksNEM7STtHOztJO0c7O0k7Rzs7STs7WTs7Ozs7Rzs7STtLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO3lCO0k7SztNLE07TTs7OztZLE07Ozs7O0ssTTtJO0k7Szs7O0s7O0k7STtLO00sTTtNOzs7O1ksTTtJOzs7Ozs7Ozs7STs7Ozs7OztHOztJOzs7O007Ozs7OztPO007Ozs7TTs7OzsrQzs7O0k7TSx3Qyx1QjtLO0ksTTtHOztJO0s7SyxNO0s7SyxNO0s7O0s7Ozs7O0s7OztTOzs7OztJO0k7SztLLE07SyxhO0s7STtHOzJCLG9DO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SztLLG1COztHOztJOztPLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O0c7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7OztJOzs7OztJOzs7Ozs7NEI7Ozs7OztnQjs7STtHOztJO0ssUTtLLFU7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OzBCLHFCOzZCLFMsZ0M7O0ksTztLLFU7Szs7SSxXO0c7O0ksTztLLFU7Szs7SSxXO0c7Ozs7Ozs7Ozs7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLHlCO0k7RztHO0k7Ozs2Qzs2QzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4QjtzQixXLDhCO3VCLFcsOEI7NEIsVyw4Qjs7SSxXO0c7d0IsVyw4QjsyQixXLDhCOztJOzs7SyxNO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Tzs7OztVO1M7OztLO00sVTtNLE87O0s7O1Esa0IsTTtRLE87OztROzs7Uzs7WTs7O2M7OztlOzs7Yzs7O1k7VztTOzs7Uzs7WSxtQjtZO2EsTztZO1ksTzs7Ozs7O1c7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7WSxPOzs7c0IsTzs7cUI7VztRLE87a0I7a0I7Ozs7Ozs7Ozs7USxPOzs7O1E7UyxPOzs7USxPOzs7Ozs7Ozs7Ozs7USxPOzt5QixPOzs7O2M7YztHOztJO0k7OztLOztHOztJOztLLFE7STs7RyxnQzsyQixpQztrQyxxQzswQiw2QjswQiwyQjtzQiwyQjtzQiwwQjs7STtrQzt1Qjs7SSxJLFUsa0M7OzsyQjs7O0c7NkIsZ0M7O0k7OztLOztJO0c7Rzs7O0s7Szs7OzhCLE87O1M7OztVO1M7O1Msc0M7Uzs7O1M7O1U7Ozs7O0k7STtHOztJO3VDOzs7Rzs7STtHOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7STtJLE87Rzs7SSxJLGlCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLHdCO0ksTztHOztJO0ksTztHOztJLEksa0M7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLG9CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx1QjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHlCO29CLFk7MEIseUI7O0k7O087O087O087O087O087O087ZTs7RzswQixlOzBCLGU7MkIsZ0M7dUIseUI7dUIsbUM7NEIseUI7O0k7SSxzQjtHO0c7OztJO0k7Ozs7Ozs7Ozs7STtJO0c7O0ksSSxnQjtJO0c7O0k7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCOzs7OztJO0s7SztLO0s7STs7O0ssSSxrQjtJLEksa0I7STs7O0ssSSxrQjtJLE87OztjO2M7YTs7Ozs7Ozs7O0c7MEIsa0Q7eUIscUIsMkI7O0ksSSxpQjtJO0c7O0k7SSxPO0c7eUIseUI7O0ksc0IsaUIsa0I7O0c7O0k7SSxPO0c7d0IscUQ7O0k7O08sTzs7TyxPO2UsTzs7OztJO0ssTztJO0ksVTtJLE87Rzs7STtJLE87Rzs7STtnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7VSxNO1U7Ozs7STtHOztJOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7OztHO3FDLG1CLFU7RyxZLHlDOztJOzs7O0c7O0k7STs7Ozs7Ozs7Szs7Rzs7STs7RztpQyxjOzs7Ozs7Ozs7Ozs7OzZCLGM7Ozs7Ozs7Ozs7Uzs7Ozs7OztLOztLOzs7Ozs7Ozs7O1Esc0M7Ozt3Qjs7STs7O0k7Ozs7O1Esc0M7Ozs0Qjs7STtHO3dCLGtCO3lCLGtCO3lCLGtCO3NCLGtCO2dEO0c7NEIsb0I7O0ksSztLLE07OztHOzhCLHFCOzhCLHFCO3VCLFU7MEIsVTs7STs7OztLLEk7O0c7O0k7SSxPO0c7MEQ7Rzs7STs7SyxzQjtLLE87OztHOztJO0k7Szs7O0s7O0c7MEIsa0M7NEIsa0M7MkIsa0M7MEIsa0M7O0k7STs7Szs7O00saUI7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sVzs7Ozs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7STs7OztJO0c7O0ksWTs7STtHOztJO0k7Rzs7SSxXO0k7SSxPOzBDLDBCO0c7O0ksMEIsTztpQyxPO0k7Ozs7O0s7OztJLE87RztHLGE7O0k7O0k7RztnQyxzQzs7STs7MkM7OytDOzs4Qzs7OEM7Ozs7Ozs7Ozs7O0c7RztJLGdCOzs7Ozs7O0k7O0c7O0ksSSxtQjtzQjtJOztJOzs7Ozs7Szs7Ozs7SztLOztJO0c7O0ksSTs7Rzs7SSxJOztvQztJO0c7O0ksSTs7b0M7STtHOztJOzs7Rzs0QixnRDs7STtJOzs7bUQ7Ozs7SyxPOztHOztJO0k7O00sTzs7O007Tzs7Ozs7OztHOztJO0k7O00sTzs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0c7NEIsd0I7O0k7O0k7Rzs7SSw0Qzs7O2U7O0k7Ozs7O08sTTtNOzs7Ozs7SyxvQzs7Szs7Ozs7O0ksd0I7a0M7O0k7Ozs7dUM7O0k7Ozs7TSxxQjs7Ozs7O0ksTzs7O2M7Ozs7Ozs7OztnQzs7O2M7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHFCO0cscUI7RywyQjs7SSxPOzs0QjtHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLDBCO3VCLDBCOzRCLDBCOztJLE87OzRCO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxPOzs0QjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXO0ksTzthOzs7Z0I7OztpQixPO2dCLE8sa0I7ZTs7RztHO0k7OztRLE07TztJOzs7Ozs7Ozs7OzsyQixPLDJDO21DLDJCOztJLE87Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7STtrRDtJO0c7O0k7MkU7STtHOztJOzs7Ozs7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxRO1U7SSxJLEssNEIsUTs7OzswQjs7UTs7O1EsTTs7STtHOzBCLE8sbUM7O0k7Rzs7SSxXO0ksVztJLFc7SSxPOzs7YyxrQixROzhEO2M7YTs7Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTs7STtHOztJLFk7Ozs7OztRLGdCLG1COzs7NEI7OztJO0c7O0k7Z0I7SSxtQixVOzs7SztNLFk7TSxPOzs7STtHOztJO0ssTztLO087OztVLG1CLFE7Ozs7WSxPOzs7NEMsTzs7VTtTOzs7SyxPO0ssUTs7Ozs7Ozs7USxNOztJO0ssTztLO087OztVO1UsTztTOztrQjs7STtHOztJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7O08sTzs7O2lCO2lCLE87Z0I7OztlLE07O0c7O0kseUMsTyxpQjtHOzs7O3FDOzs7TTtNOzs7Ozs7O0k7O0ssTzs7O0ksTzswQyxPLG9COzs7STs7SyxXOzs7STtZOzs7ZTs7OztnQixPO2U7Yzs7OztJLDhCOzs7Tzs7O08sTzs7NEIsTyxvQjs7OztPLE87OztpQjtpQixPO2dCOzs7OztJLFc7SSxPO0c7O0k7OzBCLE87OzBCLE87OzRCLE87OzBCLE87OzJCLE87OzBCLE87bUMsTzs7OztJO0c7O0ksa0IsTztJO0ksa0IsTztJOztHOztJO0ksa0IsTztJOztJLHlCO0ksa0IsTztJLE87RzswQztHOztJLG1CLE87SSxPO0c7O0ksaUIsTTtJO0k7SSxrQixPO0k7O0c7O0ksa0IsTTtJO0k7O0c7O0ksWTs7SSxPOzs7STs7MEIsTzs7O087TyxPO2lDLE87Ozs7STs7O087TyxVO087TyxPOzs7TztPO087OztVO1UsTztTOztPLE87OztpQjtpQixPO2dCOzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlO0ksWTs7Ozs7OztRLG9CLE07USxPOzs7a0I7a0IsTztpQjs7Ozs7OztLLE87O0k7Rzt1QixTOztJO0ssUTs7Ozs7SztPOzs7VSxpQyxROzs7O1c7O1ksTTtrQjs7Vzs7OztZO1k7WSxPO2tCO1U7Uzs7STs7Ozs7MkI7OztJO0ksTztHOzs7OztrQzs7Ozs7UTs7Ozs7UyxNLHFDO1MsTTtRLGM7O3lCLFc7OztRLGdCOzs7a0IsVztROzs7O1MsdUI7USxXOztROzs7OztTLE07UyxNO1EsZ0I7O1Esb0IsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7UTs7Z0I7OzttQjttQixjO2tCOzs7Ozs7SSxXOztJLE87Rzs7SSxJLGdCLE07STs7O087TyxPO007O0k7RztHOzs7O3FDOzs7OztNLFUsNkI7Ozs7Ozs7RyxXOztJO3NDLHNCOzs7Rzs7STs7O0c7O0ksNEI7Ozs7SyxNOzs7SSxHLG1DOztJO0c7O0k7OzsyQjs7O0c7Rzs7SSxZOzs7O0ksZ0Q7STtHOztJLDhCOztJO0c7O0ksOEI7OztLLE87OztJLE87Rzs7STs7aUI7O0s7TTswQztLOzs7O0c7O0k7STs7Ozs7K0I7OztHOztJO0k7OztROztROzs7Rzs7STtJO3dCOzs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJO0k7STs7eUIsa0Isc0I7O0ksTzs7Z0Msa0Isc0I7O0c7O0ksTztHOztJLFk7c0U7SSxNO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJLEksVyx5Qjs7OzJCLE87OztHOztJO2M7O2dCO2dCO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUzs7Ozs7Ozs7O0k7Rzs7STtjO2M7O2dCO2dCO0c7O0ksYzs7cUI7SSxTO1k7OztLO00sSzs7YTs7Vzs7O0k7Z0IsTztLLFk7Ozs7TTs7Szs7O0c7O0ksVTtJO21CO0c7O0k7Ozs7SyxPOztJO0c7OztLOzs7Ozs7O29COzs7Ozs7O3NCOzs7b0I7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7UyxPOzs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07Ozs7USxPOzs7OztrQjs7Ozs7USxPOzswQzs7O1EsbUI7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7OztrQjs7OzsyQixPOztROztTO1M7Ozs7eUI7Ozs7Ozs2QjthOzs7Ozs7O2dCOzs7Ozs7O1EsTzs7OztzQzs7OztRO1M7O1UsVzs7O2U7O1M7VTs7VSxjOztXLG9CLFU7Ozs7OztVO1c7WTs7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7OztZLFE7O1ksK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2UsVzs7O2U7O2tCOzs7ZSxXOzs7O2M7Ozs7O3VCOztXOzs7Vzs7Ozt3QjtTOzs7OztVLE87Ozs7MkIsTzs7O1EsTzs7Ozs7a0I7Ozs7OztTLE87Ozs7SyxPOzs7O21DOzs7O0s7Szs7Ozs0Qjs7Z0M7Z0I7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7bUI7O3NCLE87O0s7Szs7OztxQixPLHlDO3dCLE8sNEM7RyxnQztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kscUI7SSxPO0c7cUIsTyx5QztHLDZCOztJLDRCOzs7SyxPOzs7SSxPO0c7O0k7Ozs7USxPOzs7Ozs7c0M7Ozs7USxPOzs7Ozs7Ozs7STs7O0k7O0s7SztLO0s7SztLO0ssTzs7STs7O0k7O0ssTzs7Ozs7ZTs7OztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7UTtRO1E7USxPOzs7USxPOzs7OztrQjs7OzswQjs7dUIsTzs7MEM7O1E7Ozs7Uzs7WTs7O2MsTzs7WTs7OztZOzthOzs7dUIsTztzQjs7Ozs7WTs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtROzs7Vzs7OztXLE87O1U7O1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJLE87Ozs7Ozs7MkI7O2U7ZTs7Ozs7Rzs7Ozs7d0I7Ozs7TSxPOzs7Ozs7OztnQjs7Ozs7Szs7a0I7Ozs7Ozs7SztlOzs7aUI7aUI7STtJLE87Ozs7Ozs7O2M7Ozs7Ozs7bUI7O3NCLE87O0s7SztLOzs7OztJLFU7O0s7SztLO0s7SztLLE87OztJO0ksTzs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Yzs7Ozs7Ozs7OztLO0ksMEI7Ozs7Ozs7OztJLE87OztJLFU7dUIsTywwQztJLE87Ozs7O2M7Ozs7O0k7Ozs7Ozs7VyxVOztXLE87Ozs7O3FCOzs7O08sTzs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7TyxPOzs7Ozs7O2lCOzs7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7O0c7STs7STs7O1EsTztPOztJOzt1QixPLCtDOztJOzs7USxPO087O0k7OztRLE87Tzs7STs7O1EsTztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dEO0c7O0k7OztNLG9DOzs7OztLLGE7SyxPOzs7Ozs7Ozs7Rzs7O0ssWSxPO0s7OztNLE87SyxPOzs7O0ssNEI7Ozs7OztPLE87Ozs7Ozs7Ozs7SztNLFE7OztLOzs7Ozs7Uzs7O1U7Ozs7Ozs7TTtPLE87TztTOztNLE87Ozs7STtHOztJLG1DOzs7TyxPOzs7Ozs7OztPLE87OztPO2lCOztpQjs7O08sTzs7OztJLFk7O21CLE87Ozs7Szs7O007OztLOzs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO00sTzs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0k7SyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7Ozs7O2dCLE87ZTs7Ozs7aUI7Ozs7Ozs7c0I7Ozs7Ozs7VyxPOzs7OztxQjs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1csTzs7O3FCO3FCLE87Ozs7Ozs7O29COztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXOzs7Ozs7cUI7Ozs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQixPOzs7Ozs0Qjs7O2lCO2MsTzs7Ozs7Ozs7O2MsTzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1c7VyxPOzs7cUIsTztvQjs7O08sTzs7Ozs7Ozs7Ozs7O2lCLE87OzsyQixPOzBCO2dCOzs7OztJOzs7OztJOztlOzs7Ozs7aUI7Ozs7ZTs7STtjOzs7Ozs7Z0I7Ozs7OztjOzs7Ozs7O0c7OztLOzs7O00sTzs7Ozs7Z0I7Ozs7O3dCLE8sMEM7Ozs0Qjs7Ozs7O21DOzs7O0k7dUIsTywwQztJO0k7Szs7O0ksTzs7Ozs7Ozs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOzs7Szs7O007OztLOzs7Ozs7O1E7OztTOzs7Ozs7TTtPLE87TztNOzs7Z0I7Ozs7OztJOztLOzs7O0s7OztjOzs7O0k7OztPLE87Ozs7Ozs7Ozs7O2lCOzs7OztRLE87NkIsTzs7USxPO08sWTs7USxPOztPLE87OztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7STtZOzs7OztHOytCLG9DOztJO0k7WTs7Ozs7Rzs7STs7OztLLE87STtHO2lDLHNDOztJLDhCLE87STtHO21DLHdDOzBCLHNDO2dDLDZDOztJO2dDO2tDO0k7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7UztpQixPOzs7O0c7O0ksSSxVOzs7Ozs7Uzs7dUM7aUIsTzs7OztxQixPOztJO0c7O0ksSSxVOzs7Ozs7UTs7O1E7O1EsTzs7O1EsVTs7Ozs7Ozs4Qjs7UTs7OztLLE07O0k7Rzs7SSxJLFU7Ozs0Qjs7OztHO0c7SSxTOzs7Ozs7OztvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7O0ksVztJO0s7OztRLHVDOztZLGtDOzs7OzRCOzs7USxrQiwyQjs7OztTO1UsTztpQjtRO1E7O0k7SyxLO0ssVzs0Qjs7OztLLEksTyxrQztJOzs7O00sWTs7OztROzs7O1M7Vzs7OzthOzs7OztNLE07Ozs7O1M7OztVO1k7OzZCOzs7O1UsSSxVOzs7Ozs7Ozs7Ozs7Ozs7ZTs7O2tCOzs7cUIsTzs7b0I7Ozs7bUI7c0I7b0IsTTs7bUIsVzs7OzsyQzs7dUI7O3dCLE87d0IsTTt1Qjt1QixJLE8sNEI7MEI7d0IsTTs7dUIsWTs7O3dCOzs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7OzswQzs7MEIsTTs7Ozs7d0IsWTs7Ozs7MEIsSzsyQjs0QixVOzs7Ozs7OEI7Ozs7Ozs7d0I7Ozs7K0I7O3VCO3VCOzttQjtvQixPO29CLEk7bUI7bUIsYTttQjttQjtrQjtrQjtpQjs7Ozs7O1M7OztVO1U7OztVOzs7VztZO2M7OytCOzs7Ozs7Ozs7OztTLFM7Ozs7OztTOztVLE87VSxROzs7VTs7OztZOzs7Ozs7Ozs7Vzs7WSxPO1c7OztZO2EsTzthLGM7Ozs7OztZOzs7Ozs7Ozs7ZSxVOzZCOzs7Ozs7WSxNOzs7O1U7VTtXO2E7OzhCOzs7OztXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7O1U7WTs7O2U7ZTtjOzs7Ozs7O1E7Ozt5Qjs7O0k7STtHOztJLE87O2tDLGlDO0c7O0k7O0s7SztLO0k7Rzs7STs7SzthOzs4Qjs7OztJO1k7OzZCOzs7O0k7Ozs7SztLOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7NkI7Ozs7Ozs7Ozs7WTs7O2U7O2dCO2dCO2dCO2tCOzttQzs7Z0I7ZTs7Ozs7O0k7WTs7NkI7Ozs7Ozs7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7STs7Tzs7OztRO1E7VTs7MkI7O1E7Tzs7Tzs7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtZOztRO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJLEksOEI7STtZOzs2Qjs7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOztJOztLO0s7O0s7SztLO0k7WTs7NkI7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7SSxPOztrQywrQjtHOztJOztLO0s7O0k7Rzs7SSxPOzs7YzthO0c7O0k7O0s7OztLO087O3dCOztLO0s7Tzs7d0I7O0k7Rzs7SSxPOzs7YzthO0c7O0ksTzs7O2MsVTtjLE87YTs7O0c7O0k7STtHOztJO0s7SztLO0k7Rzs7STtJO0c7O0k7O3lCOzswQixXOzs7O1E7Ozs7UztROzs7TzttQzs7Rzs7STs7O08sSSxVOzs7Ozs7WTs7c0M7b0IsTzs7OztPOzswQjs7Ozs7UTs7OztROzs7O1MsTztTO1E7O087OztRO087bUM7Ozs7STs7eUI7OzBCOzs7Tzs7Ozs7OztPO21DOztHOztJLGdCO0k7Rzs7SSxrQixzQjtJO1k7OzRCOzs7OztHOztJLGU7STtHOztJLFk7OztLLE87Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO2E7Rzs7STs7SyxPOzs7STtHOztJOzs7O0s7Ozs7Ozs7O1c7WSxNO1ksTTtXLE87VTs7Ozs7O1MsVTtTLE87UTs7Ozs7OztROzs7OztTLE87Uzs7Ozs7UTs7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxPO1M7Ozs7O1E7Ozs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxRO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7SSxPOzs7YztzQjs7O3lCOzs7O2E7OztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Tzs7O087OztPOztHOztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Ozs7OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7Rzs7SSxvQjt3QjtJOzs7Ozs7O0s7O3VCO0s7O3VCO0k7OztlOztnQjs7O2UsTzs7O3lCOzBCOzRCOzs0Qzs7MEI7eUI7d0I7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOzZCLE8sdUM7O0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOzs7Ozs7Ozs7OztJO0s7OztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzRDLFc7TSxRO00sTTs7O007Ozs7Uzs7Ozs7Ozs7Ozs7O0ssTzs7O0s7TSxNO00sTTtNLFU7SyxPOzs7O0k7SSwwQix1QjtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O2E7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2U7Yzs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7RztJO007O3FCLFcsK0I7O0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsVzs7OztNLE87O0k7STtJOzs7O0ksTztHOztJOzs7OztZLHdDLFk7STtLOztNLDRCO007TSxNO3FCOzs7STtHOztJO0s7OztJLHlDO0k7O0ssOEI7SyxjO0ssUTtLLE07OztLLE07Szs7Ozs7OztROzs7Ozs7Ozs7STs7OztHOztJOzs7OztJO0s7Ozs7Ozs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7Ozs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7O1U7Ozs7OztLOztHOztJOztLOzs7TTtNO007Szs7O1E7USxPOzs7Tzs7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7YTs7Ozs7Ozs7OztTOztLOztJO0c7O0k7O0s7OztNO007TTtRO1U7OztTLFk7Uzs7O1U7Ozs7O1U7O2E7Ozs7Ozs7Ozs7O1M7UztTOztLOztJO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLLE87SyxRO0k7Rzs7SSxTO0k7SztlO0s7TTtNO007O0s7Szs7TSxNO0ssRztNLE07Szs7UTs7O0ssTTs7Ozs7OztNO00sTTs7SztLLE07O0c7O0k7STtJO0k7SyxNO0s7STtJO0k7Rzs7STs7Tyx5QixNO08sTzs7Tzs7O1EsTTtPLE87OztPLDJCLE07TyxPOzs7Rzs7O00sdUI7O00sVztLOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzt1QixNLGdEO0c7STs7O1E7O1M7VTtXLE07VyxNOzs7Ozs7OztTO1U7OzttQjs7O1UseUI7O1E7TztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SztLO0ksVztHOztJOzs7Ozs7STs7O0k7O0k7Rzs7STs7SztPOztnQyxzQzs7O0ssTTtJLE87Ozs7d0I7Ozs7OztLOzs7OztJLEksVTs7OzJCOzs7Yzs7STs7O0k7OztLLFc7O0s7SyxPOztJLE87RztnQyxrQjs2QywrQjs7STtLLE07SztPOzs7eUIsTyxpQjtJO0k7Rzs7O0ksTzs7O2MsVTs7YyxPO2E7Ozs7O0k7Ozs7SztLO0s7SztJLHNCO0k7OztPLDhCOzs7O007OztLLEk7Ozs7O007OztJO0k7Rzs7STtJLHVCLE07SSxJLFU7Ozs7NkIsTTtLLFk7OztNO007TyxLO087TTs7O007SyxNOztjLE07OztLLE07STtHOztJO0ssVTtLLFc7STtJO0ssTTtLO0ssSztJO0k7Rzs7STtHOztJOztLLFU7O0s7SyxVO0s7TSxPOzs7Z0I7aUI7aUI7aUI7Ozs7O2tCO2tCLE87OztrQjs7bUI7cUI7bUI7a0IsTzs7Ozs7aUI7O29COzs7Ozs7cUIsTTs7dUI7Ozs7Ozs7Ozs7O29CLE07Ozs7Ozt1Qjs7aUI7aUIsTzs7ZTs7Ozs7STtHOztJO0ksSSxXOzs7O00sTTs7O0ksVyxNOztJO0c7O0k7OztLLE07SSxPOzs7O0ksTzs7OztJLE87Ozs7SSxPOzs7STs7Ozs7SyxRO0s7STtHOztJO0ksTzs7O2lDLE8sK0I7O2M7Ozs7ZTtpQjs7Ozs7b0IsTzttQjtlOzs7Ozs7Ozs7ZTtjOzs7OztjOzs7aUI7OztnQjs7YztjO2E7Rzs7STtLOztROzs7Ozs7UyxNO1EsTzs7Ozs7Ozs7Ozs7UTs7Ozs7UyxNO1MsTTtRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7O007RztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7Ozs7OztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07Ozs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNO087Uzs7O1k7Ozs7O2lCLFcsTzs7aUIsTztnQjs7O1k7Vzs7Z0I7Ozs7OztJO0ssTztLO087O3lCLHFCLDBCOztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7UTs7O1c7VyxjO1U7O0k7SyxPO0s7Tzs7O1U7VTtTOztJLE87Rzs7STtLLE87SztPO1M7OzJCLG1CLGU7OztLO21DOzs7TSxPOzs7K0I7Ozs7SztJO0ksTztHOztJO0k7O0s7TTtROzs7VyxPLGM7VTs7O007bUM7Ozs7TTs7UztXOzs7YyxPO3VEO2E7Ozs7Ozs7Ozs7OztVO1UsTyw4QjtTOzs7Ozs7Rzs7STtJOztLOzswQixPLHNDOzs7bUM7Ozs7TTs7O1M7VSxhO1UsMkI7UyxPLGM7UTs7Ozs7Ozs7OztVO1UsTyw0QjtTOzs7OztHOztJO0k7SztNO1E7O21DLG9COzs7TTs7Ozs7O0ksTzs7O2MsSSx1QixjOzs7c0M7OzthOztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQzs7STs7Ozs7Ozs7RztHO0k7OztRLE07Tzs7STs7O1EsTTtPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLO007UTs7bUMsb0I7OztNOzs7Ozs7STtLO087OztVLEk7Ozs7O1k7Ozs7OztVLFc7YyxxQixjOzs7a0M7OztTOztLLE87SztJLE87Rzs2QixTOzRCLGdCOzZCLGdCO0c7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7d0IsaUQ7O0k7SyxtQixPO0ssTzs7O0ksTzs7RztJOztpQyx1QjtnQyxpQztxQix1Qzs7SSxXO0ksaUI7Rzs7SSxPO0s7SSxpQjs7Ozs7TTtPOztRLGdDOzs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJOzs7WTs7Rzs7STs7SztLO0s7SyxLO0s7SztPOzs7VSw4Qjs7VTtTOzs7SyxPO0s7SyxjO0ssTztLLGtCO0ssWTtLLE07STtLOztNLFc7Yzs7O0k7Ozs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjs7Ozs7SSxPO0c7O0k7Rzs7SSxPO0c7O0k7STtLO0c7O0ksTzs7Rzs7SSxPO0c7O0ksTztHOztJO0k7STtJO0k7STtHOztJO0k7STtJO0c7O0k7STtJO0c7O0ksWTs7OztJLE87O0c7O0k7dUI7O0k7Rzs7STtxQjtJLEksVyw2Qzs7OztLLEksUSxrQzs7Ozs7O29COzs7Ozs7SyxZO0s7Szs7Rzs7STs7USxJOzs7Syx3Qjs7OztLLHFCO3VCLE07O0k7Rzs7STs7eUI7O08sOEI7TyxPOztPOzs7UTtRLE07TyxPOztlLE07O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPO2UsTTs7Rzs7STtLO0ssTTtJLE87Rzs7STs7TyxrQjswQixNOztPOztPLDhCO08sTztlLE07O0c7Ozs7SyxNO0k7O0ssTztLO08sMkM7Szs7O0s7Szs7SSxNOzs7SSxJLFc7Ozs7Ozs0Qjs7UTs7O1M7USxPOztRLE07OztRO1M7O1U7VTs7VTs7VzthOzs4QiwrQjs7VTs7UyxNOzs7Ozs7Vzs7O1k7WSxRO1ksTzs7VyxNO21CLE07O1E7OztJO0kscUI7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs4QixpQztxQyxpQzs7STs7eUI7O08sOEI7TyxtQjtlLE07O0c7O0k7O0s7OztJO0c7O0ksTztHOztJO0c7O0k7Rzs7STs7TyxrQiwrQjtxQixNOztPOztPOzs7UTtnQjtPO29CLE07USxxQztvQzs7OztlLE07O0c7O0k7O087O1EsTzs7OztPOzs7UTtRLFU7O2UsTTs7Rzs7SSxPOzs7Yzs7aUI7O2tCLE07O2lCOztpQjs7Ozs7aUI7aUIsTzs7aUIsSTs7O2tCOzt1QjttQixXO21CLE87Ozs7O2tCLFc7a0IsTzs7O2tCLE07OztpQjs7aUI7O2lCOztpQjt5Qjs7OztHOztJLFksTzs7STs7RztJLG1COzs7OzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7TztlLE07Ozs7STs7O00sc0I7OztPO1EsTztRLE87TztRO1MsTztvQjs7O2dCOzs7Ozs7O0s7Ozs7OztNOztxQzs7Ozs7TTs7OztHOztJLEksK0M7Ozs7O00sTTs7Szs7Rzs7STs7Tzs7Tyw4Qjs7O08sTTs7Tzs7O1E7OztHOztJO0k7Szs7O00sSTs7Ozs7Ozs7Ozs7Szs7Rzs7STs7TyxrQjtPLE87O087OztRO1EsUztPLE87O08sZ0M7TztlLE07O0c7O0k7Rzs7SSxJLDZCOzs7O0s7O1UsaUM7O0s7O0ksTTtHOztJLEksNkI7Z0IsTTs7STtHOztJO2dCLE07O0k7Rzs7STtJLE87Rzs7STtJOzs7O1EsSSxtQyxjOzs7Z0M7Ozs7UTs7O0c7O0ksVztJO0ssbUI7Szs7TTs7Ozs7O0s7TTtPLE87TyxPOzs7Ozs7TTtPLEs7TyxPO007OztLO0s7STtJLEksZ0I7STtLOzs7Ozs7Ozs7Ozs7c0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO0ksd0MsTyxpQjtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLLG9DLHVCOzs7TyxZOzs7OztPLFk7Tzs0Qjs7Tzs7d0IsaUQ7O08sTzs7O2lCO2dCOztNOzs7SztLOzs7ZTtlO2dCO2lCLFU7aUI7bUI7NEI7O2dCOztlLG1COztlO2M7O0c7O0k7Ozs7Rzs7SSxPOzs7K0IsTyxxQzs7Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7TyxPOzs7aUI7aUIsK0Q7aUI7Z0I7OztPOzs7UTsrQixnQjtRO1U7OzthOzs7TyxPO2U7O0c7OzBCLGdCOzs7Ozs7eUM7OztPOzs7UTtRO1U7OzthOzs7ZTs7OztJLE8sMkM7Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztPO1Esb0I7UTtROzs7VztXO1csTztVO087OztVO1U7O2E7OztjLFM7Yzs7OzswQjs7Ozs7YTtjLE87YyxZO2M7YztjLE87b0I7OzthOzs7YyxhO2MsTzthOzs7Ozs7Ozs7aUI7O2tCLE87a0I7b0I7c0Q7aUI7OztvQjs7bUI7Ozs7O2lCOztrQjtvQjtrQjtvQjtzRDtpQjs7O29CO3FCLFk7cUI7OzttQjs7OzthO2MsTztjLFk7YztjO2MsTztvQjthOztjO2dDOzs7Yzs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7OztjLFE7YyxRO2M7YyxPO2MsWTtjO2M7K0I7OzthOzs7O2MsVztjLE87YTs7O2UsTTs7O3dCOzs7O2E7YyxTO2MsTztjLFE7Yzs7Ozs7Ozs7OztjO2M7YyxPO29COzs7OzthOzs7YyxXO2M7Z0I7YyxPO2MsVTtjO2M7YyxPO29COzs7O2E7OztjLFM7YztjLE87YyxVO2M7YztjLE87b0I7OzthOzs7YyxTO2MsTztjLFU7YztjO2MsTztvQjs7O1M7O087O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0s7SztrRCxzQjtLO0s7Ozs7cUI7OEI7OztNLE87OztnQjs7Z0IsVztnQixPO2U7Ozs7OztHOztJOztLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLGdEOzs7O2lCLDBCO087Ozs7Ozs7Ozs7Rzs7STtJLGlCO0k7STs7O087TTs7STtLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO0s7Ozs7bUIsZTs7SSxJLHFCOzs7Ozs7OztROztTLFM7UztXOzs7YztjOzs7OztpQjs7O2lDOzs7aUI7a0I7bUIsVTttQjttQjttQjttQjttQjttQixXOzttQjttQjs7Ozs7c0I7Ozs7Ozs7Ozs7OzttQjttQjs7OzttQzs0Qzs7O29CLE87Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7OzhCLE87Ozt3Qzs7a0Q7O3VDOzs2Qjs7Ozs7Ozs7OztnQjtjOytCO2M7Ozs7Ozs7Ozs7ZTtjOzs7Ozs7Ozs7Ozs7O2E7Ozs7OztZOzhDOzs7O1E7O1M7VztTO1c7OztjO2M7Ozs7O2lCOzs7aUM7OztpQjtrQjttQixVO21CO21CO21CO21CO21CO3lCOzttQjttQjs7OztvQzttQjtvQjtvQix1Qjs7O29CLE87Ozs4Qjs4QixPOzs7d0M7O2tEOzt1Qzs7NkI7Ozs7Ozs7Ozs7Z0I7YztjO2M7ZSxZOzs7Ozs7Ozs7OztlO2M7Ozs7Ozs7Ozs7Ozs7YTs7O1M7O1k7OEM7Ozs7O0k7STtJOzs7Szs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SztJO0k7STs7Ozs7Tzs7O3VCOzs7TztROztTLGU7UztTO1MsVzs7UztTOzs7OzBCO1MsTzs7O21CO21CLE87Ozs2Qjs7dUM7Ozs0Qjs7a0I7Ozs7OztPO007STs7O0s7Ozs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLHVDO0k7OztPO007O0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7Ozs7STtJO0s7OztLOzs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7Ozs7SztvQyxlOzs7bUMsZTs7OztJO0ssTztLO0s7SztJOzs7STtLO0ssUTtLOzs7STtHOztJO0ksNEI7Rzs7SSxZO0k7Rzs7STtLO0s7STtHOztJO0k7Rzs7STtHOztJO0k7Rzs7SSxvQixPO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJLFEsK0I7SSxPO0c7O0k7SyxLO0s7SzswQztJO0c7O0k7SyxLO0ssZ0M7STtHOztJO0ssSztLO0ssUTtLO0k7Rzs7SSxTO0k7OztHOztJO0ssSztLLFE7Syw2QjtJO0c7O0k7SyxLO0s7SyxvQztJO0c7O0k7SyxLO0ssK0I7STtHOztJO0c7Ozs7O0ssVzs7Ozs7O1Msa0I7Uzs7VSxRO1MsVztRO0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7O0k7SyxPO0s7OztJO0c7O0k7Szs7O0k7RzsrRTtHOzs7O0s7O0c7RztJOztHO0c7STs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7O0c7STs7O0k7STtHOztJO0ssSzs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SyxLOzs7Szs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSTs7OzRCOzs7cUI7O3VCOzs7Szs7Ozs0QixPLGlCLHFCOzs7SztJOztLOzs7OzRCLE8saUIscUI7OztLO0k7STtLO3lCLHlCO0ssMkIsd0I7Syx5QiwwQjtLLHdCLHlCO0ssMkIseUI7SywwQiwwQjtLLDBCLHlCO0ssMEIsMEI7STs7Ozs7Ozs7Ozs7Ozs7Rzs7O0s7TSxNOzBCOztLLEcsOEI7SyxNO0k7SSxJOzs7NEI7Ozs7Szs7O00sRzs7TyxXOzs7SyxNO0k7O0s7OztNLEc7O08sVzs7O0ssTTtJO0k7Ozs7SztLO0s7SztLO0s7SztJOzs7Ozs7Ozs7Ozs7OztHOztJLHFCOztLLE07STtHOztJOzs7O0s7O2U7ZTtLLGM7SyxpQjtLLGlCOzs7O0s7TTs7O1M7O3NDOztRO0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztpQjs7Ozs7OztXOzs7Ozs7UTtLOztJOzs7STtLO087SyxLO0s7O0ssTTs7STtHOztJLEcsZ0Q7SSxjO0ksTztHOztJO0ssTztLLE87SztPLFc7SSxPO0c7O0k7STtJO0ssTztLLE87SyxPO0s7Tzs7UztLLFc7Szs7STtJO0c7O0k7MkIsVztHOzsrQiw0QztJO0c7Rzs7O0k7TTs7Ozs7VTs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOztJLE87Ozs7NkIsTywwQjtHOztJLGtCO0ksTTtHOztJLFU7O0k7SSxPOzs7YztlOzs7b0I7ZSxPO2UsTztjLE87YTs7Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVO0ksVztJLE87Rzs7SSxVO0ksb0I7OztLLEksVzs7Ozs7O0s7O0ksVztJLE87Rzs7SSxVOzs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJOzs7TSxZOzs7Tzs7O1EsSSxXOzs7Ozs7UTs7Tzs7Tzs7Ozs7TSxNOzs7O0k7Rzs7SSxVO0ksYztJOzs7SztNLFc7Ozs7Ozs7Szs7O0c7O0k7Rzs7STs7O1MsSTs7O007TyxJLFc7Ozs7Ozs7Ozs7Ozs7STtLLGtCOztLOzs7Ozs7Szs7SSxJOzs7O007OztJO0k7Rzs7STs7Yzs7O2dCOztpQjtpQixPO2dCO2dCO2U7OztHOztJOztPOztROzs7Tzs7Tzs7O1E7OztPOztPO1E7Ozs7UTtVOztPOztHOztJO0s7OztLOzs7O007O0s7OztrQjs7STtHOztJOzs7Szs7O007OztNOzs7O0k7SztPOzs7VTtVO1M7O0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVTs7OztTOzs7TztPO087O08sTTs7Rzs7STtLOzs7SSxpQjtHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxhOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxjOzs7O1M7OztPO087Tzs7TyxNOztHOztJOztPLGdCOztpQjs7O21COztvQjtvQixPO21CO21CO2tCOzs7Ozs7Ozs7O1EsSSxhOzs7Ozs7O1MsTzs7OztvQjttQjttQjtrQjs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7UyxPOzs7O29CO21CO21CO2tCOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFc7SSxtQjtJOztLLFE7O0ssTzs7STtZLDBDLGlCO0ksTyxXO0c7c0Msa0M7cUMsa0M7dUMsa0M7d0Msa0M7c0Msa0M7dUMsa0M7Ozs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Ozs7STs7OztJLGlCO0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7OztJOzs7O0ksSTs7Ozs7OztPOzs7OztJOzs7O0ksc0I7Ozs7SSxJOzs7NEI7Ozs7O0ssTzs7OztnQjtlO2U7Yzs7O0k7Ozs7SSxJOzs7Ozs7O087Ozs7O0k7Ozs7SSxzQjs7OztJLEk7Ozs0Qjs7Ozs7SyxPOzs7O2dCO2U7ZTtjOzs7STs7OztJLEk7Ozs0Qjs7Ozs7Ozs7O1M7O1M7aUI7O0s7O0ksb0IsZTs7O0s7Szs7STs7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7Szs7O2U7ZSxPO2M7Yzs7STs7Szs7O0s7eUI7SSxvQixPO0ksTzs7O2MsTyw0QjthOzs7Rzs7STtLOzs7TTswQjtLLG9CLE87SyxPOzs7ZSxZOztlLE87Yzs7OztJLFk7NEIsTyx5Qjs7STtLO007UTs7O1cscUIsTztVOzs7TTtnQjtLOzs7O007UTtVOzsyQix3Qzs7Ozs7O0c7O0k7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7OztJOztLOzs7Szt5Qjs7SSxPOzs7YyxTO2MsTzthOzs7Rzs7O0ssZ0I7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7NEIsTywyQjtzQixhO3VCLGM7STtLO0c7O3NCLGE7dUIsYztJO0s7Rzs7a0MsTyxpQztzQixhO3VCLGM7STtLO0c7O0k7SztLLE8sdUI7STtzQixhO3VCLGM7STtLO0c7O21DLE8sa0M7c0IsYTt1QixjO0k7SztHOzs7SyxPO0k7c0IsYTt1QixjO0k7SztHOztJOzs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsd0M7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7OztLO087OztVLEksSztVLFc7Uzs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPOztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssVztLLE87STtJOzs7TyxPOytDLHFCOzs7TyxPOytDLDRCO2U7O0c7O0ksTzs7OztjLFc7YyxPO2E7Rzs7STsrQyxzQjs7Rzs7STsrQyxzQjs7Rzs7STs4QyxzQjs7OztHOztJLDZDLHlCOztHOztJLHVDLHlCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7Tzs7O1EsTztPO087a0I7cUM7TyxPOzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087TyxJOzs7O1M7OztPLFc7TyxPOzs7Ozs7OztPOztRLE87TztPLEk7Ozs7Uzs7O08sVztPLE87Ozs7Ozs7O087O1EsTztPO08sSTs7OztTOzs7TyxXO08sTzs7Ozs7Ozs7Tzs7USxPO087Tzs7O087Tzs7O087Tzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O087O1EsTztPLE87O087O1EsTztPLE87Ozs7TztRO1EsTztRLE87TyxPOzs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTzs7UyxPO1E7OztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O08sTzs7O087OztHOzs7TSx1QjtNOztPO087Uzs7WTtNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJLE87OztjOztpQzs7Ozs7a0IsbUI7Ozs7Yzs7O0c7cUQ7Rzs7STs7dUI7Ozs7Ozs7Vzs7O1c7Ozs7Ozs7O1M7OztROzs7O3FDOztJOzswQixPLHlDOztJO0ssTTtJO0c7O0k7SyxNO0k7Rzs7STtLLE07STtHOzBDOztJO0ssTTtJO0c7O0ksTzs7K0M7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STtHOztJLDhCOzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TyxrQztPOzs7O2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7O1EsTzs7O2tCO2tCLE87aUI7Ozs7USxPOzs0QixPOzs0QixPOzs0QixPOzs7UTtRLE87O0k7OztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7O1E7Z0I7OzttQjttQixtQjtrQjs7Ozs7USxXOzt5QixXOztzQixXOzt3QixZOztRLHlDLE07USxZOztJO0c7O0k7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7O1MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O0ksTzs7NkIsbUIsVTs7Rzs7STtJLE87Rzs7STtHOztJO0k7Szs7STtJOzttQixxQzs7O0c7O0k7SSxPO0c7O0k7RzsrQixPLHFDOztJOzs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7O1E7O1E7Ozs7O1M7UTtTOzs7Ozs7VTs7Ozs7Ozs7Uzs7OzsrQjs7OztJOzs7eUIseUI7STtHOzs7STtLOzsrQixXOzs7bUI7SztJO0k7SztJOztLOzs7OzZCOztTOzs7VTs7O1U7OztVOztpQztTOztzQzs7Ozs7O0s7STtJO0c7O0k7STs7d0I7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7dUIsdUI7O0kscUM7O0k7Rzs7SSxZOzs7Ozs7Ozs7Ozs7Ozs7O08sTTs7ZSxNOzs7OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TTs7Ozs7TSxJO007TztxQjtPOzs7O1E7O1E7Ozs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztVLFU7VSxPO1M7TTtNOzs7TyxVOztNOztTOzs7O0s7Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZLE87O0ksTzs7O0k7STs7OztRLE87Ozs7O1EsTzs7Ozs7Ozs7Ozs7OztLLE87O0c7O0ksTztHOztJOztxQixPOztxQixPOzs7O1EsTzs7TyxPOzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7SSxlO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0ksTzs7O2M7O2E7O0c7O0k7STs7Rzs7STtJLE87OztjO2M7YyxPO2E7O0c7O0k7STs7SztLO0ssSSxtQjttQzs7OzBCLE87OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTs7O1E7UTtRLE87OztrQjtrQjs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7OztXLE87OztxQixPO29CO1U7Ozs7Ozs7UTtROzs7UTs7Ozs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7TTtNOztNOzs7O1M7VTs7O2E7YTthOzs7YTthOzs7YTthOztTO1M7Ozs7O21DOzs7O1EsTzs7O1E7Ozs7OztRLE87OztRO1E7OztRO1E7a0I7O1E7UTs7OztTO1c7OztjOztlLE87ZSxPO2MsTzthOztTLE87UTtROzs7UTtROzs7UTtROzs7UTtROzs0Qjs7NEI7OzRCOzs7UTtROzs7OztHOztJOzs7TztPO087OztPO087TztPOzs7TztPO087OztPO087O0c7O0k7STs7SztLO0ssSSxtQjs7TTs7TTs7O1M7UztROzs7O21DOzs7O1EsTzs7O1EsTzs7O1E7O1E7OztXOzs7Ozs7Ozs7UTtROzs7Ozs7OztTOztTO1M7O3VCLGdEOztTOzs7UTs7Ozs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtROztTOztTOztTOzs7OytCOztZO1k7OztTOztRO1E7OztVOztVOzs7OztZOzs7O1k7Ozs7WTs7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7Vzs7Ozs7O1c7Ozs7OztXOzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7OztRO1E7OztRO1E7Ozs7OztRO1E7Ozs7OzRCOzs7UTs7Ozs7O1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7Ozs7Rzs7STs7O0k7STtJO0k7O0c7O0k7STs7Rzs7STtJOzs7O0s7Szs7O0k7STtJO0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7OztROzs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7OztPOztPOzs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7O0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtROzs7Ozs7UTtRO1E7OztROztROzs7Vzs7OztROzs7Ozs7OztTO1M7Uzs7Ozs7OztROzs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7eUI7O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7Ozs7Uzs7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPOztPOzs7TztPO087OztPO087OztPO087O3lCOztHOztJO0k7STs7Rzs7STtJO0k7O0c7O0ksWTs7STs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7OztTO1M7UztVLE87O1M7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7aUI7Ozs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7O2dCOztrQyxtQixVOzs7O087Tzs7OztnQjs7a0MsbUIsVTs7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7O0k7STs7O0s7Szs7O0k7SyxPOztJOzs7STs7O0k7O2MseUI7O0s7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7O0k7O08sTTs7TyxNO2UsTTs7RzswQyxrQztpQywwQztHOzs7eUIsb0I7NkIsaUM7O0ksTTtHOztJLE07RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7OztNLHNCOztNO08sTztNO007TyxhO08sVztNO2M7O0s7RztJO0k7STtJOztJO0k7SSxnQjtJLGU7SSxlO0ksYztxQyx3Qjs7STs7O0c7O0k7Ozs7O0c7O0k7SyxROzs7cUI7Ozs7Rzs7STs7Rzs0QixPLHdDOztJO0k7STtvQyxPLHNCO0k7Rzs7SSwrQztHOztJO0ksSTtJO0k7Rzs7SSwrQztHOztJO0c7O0k7Rzs7STtJO0k7STtHOztJLHFDO0c7O0k7OztJO0k7b0MsTyxzQjtJO0c7O0k7OztJO0c7O0k7O0c7O0k7O0k7RztxQywrQjtHOztJOztLO00sTztNOzt5Qzs7OztJO0c7O0k7O0c7O0ksSSxxQyxJO0k7STtHO0csSTs7STtLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztrRTtHOztJOzs7O0k7RzsrQix3QjtHO0k7Ozs7Ozs7OztJLHVDOztJO0c7O0ksa0IsTzs7SSxPO0c7bUMsOEI7O0k7Yzs7Rzs7SSxXO1c7Rzs7SSxXO0ksUztzQjtJO0ksTztHOztJLG1COztJO0c7O0ksK0I7STtHOztJOzs7O00sTzs7O0ksTztHOztJLGtCOztJO0c7O0k7O0c7O0k7STs7O1E7OztnQjs7Rzs7STtrRDtJO0c7O0ksWTsyRTtJLE07Rzs7STs7O0s7TSxZOzs7TTs7Ozs7Tzs7Ozs7STtZOzs7ZTtlLE87Yzs7O0c7O0ksTzs7O2M7YyxPO2E7Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Ozs7YTtNOzs7OztNOzs7O087Ozs7O0c7O0k7STtLLFk7Ozs7Ozs7O0s7O0c7O0ksSSx1QixROzs0QztJO0c7O0ksSSx1QixRO29EO0k7Rzs7SSxjOzs7O1E7OztRO1MsWTs7OzthLE87Ozs7O1MsTTs7O0ksTztHOztJLFk7Ozs7UTs7MkIsTzs7SSxPO0c7Rzs7TTs7O1M7UyxPO1E7O0k7OztNLEs7Tzs7OztNLEs7Tzs7SztNLFE7TSxROzs7Ozs7Szs7TyxXO08sVzs7O08sVztPLFc7Ozs7Ozs7Ozs7O00sRztPOzs7OztjO087Ozs7Vzs7O0k7Rzs7SSxZO0k7Ozs7SztLLFE7a0M7O0s7Szs7STs7Rzs7O0s7SztNLEssNkI7TSxZOzs7O1U7Ozs7OztZLEksVTs7Ozs7Ozs7Ozs7O2U7Ozs7OztXLE87O3lDOzs7Ozs7OztVLG9DOzs7Ozs7OztVOzthOztvQzs7O1UsRyw0QjtVLFc7Ozs7OztNLE87O29DOzs7O0k7STtHOztJO0s7SyxLLDJDO0k7STtHOztJO2dCOztJLE07Rzs7STtLOzs7Ozs7O1M7d0MseUI7Ozs7Uzs7O1k7WSxXOzs7YSxPOzs7WSxPOztpQyx5Qjs7Vzs7Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7STs7O0k7STtJO0s7OztROztRLEksNEI7Ozs7O1MsTTs7O087O0s7SztLO0s7Ozs7OztLO0s7Szs7RzsrQixPLG9DOztJO0ssUTs7OztJO0ksWTs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxROztROzs7O00sWTs7OztNO00sTzs7Ozs7OztHOztJO0k7Rzs7STtJO0ssWTs7TSxZOzs7OztVO1U7Ozs7O1U7VSxPOzs7VTs7VSxPOzs7VTs7Ozs7VTtVLE87OztvQjtvQjttQjs7O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7Szs7O0c7O0k7STtLO00sYTtNLE87SyxXO2dCLDZCO0ssWTs7Ozs7b0I7VSxJLFc7OztzQzs7Ozs7Ozs7O29CO1U7VSxHLCtCO1UsVzs7Ozs7O0ssTzt3Qzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sTzs7OEI7Ozs7Ozs7Rzs7SSxJLG9DOzs7OztLOztHOztJO0ssbUI7Z0I7Z0IsMkI7SyxZOzs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7Ozs7YztpRCxvQjs7VTs7OztjOzs7aUI7a0IsTztrQjttQztpQjtnQjs7O1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csTzs7bUM7Ozs7Ozs7OztxQjtXOzs7Ozs7O3dDO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLE87O2lDOzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SyxPOzs2Qjs7O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJO0k7Syx1Qjs7OztPO1EsTztRLGM7Ozs7Ozs7O00sSTs7OztLLGlCO0ssVztLO0ssWTs7Ozt5Qjs7Ozs7Ozs7d0I7OztVO1csTTtXLE87Ozs7Ozs7Ozs7O2E7Z0Qsb0I7OztTO1c7OzRCOztVOzs7OzthLE87Ozt1QixPOztpQzs7OztzQjs7O1k7UyxtQjtTLEksVzs7O3FDOzs7Ozs7O1MsTzs7O21COztrQjs7O0ssTzs7O2U7Ozs7Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7UTs7O1c7VyxPO1U7O1EsTzs7O2tCO2tCLE87aUI7Ozs7UTs7Ozs7STtHOztJO0c7K0IsMEI7O0ksSSxRLDZCOztLLFk7OzttQjs7O0s7TSxROzs7Szs7O3FCO0s7SztLLE87d0M7STs7Szs7Ozs7bUI7O007TSxjLE87TTs7dUI7O00sWTs7Tzs7USxPO1EsSztRLE87UTs7cUI7Ozs7OztLO0k7STs7STs7cUI7O0ksTzs7O2M7ZTtlLE87O2E7O0c7O0k7NEI7Rzs7STtLLFk7Z0I7Ozs7Ozs7SztLO0s7SyxPOzs2Qjs7O0c7O0ksZTtJO0ksbUI7STtLLFk7O007O08sTztPLE87TSxHLHlDOztLO007TyxRO08sVzs7Ozs7YztZOzs2Qjs7O007Ozs7O00sZTtNO00sTzs7OEI7OztJO0k7OztPLFc7TztNOztJO0s7TSxXO007Ozs7OztNO0c7O0k7SyxXO0ssVztLO1E7TSxNO0s7SyxPO0k7SSxJLFMsSTs7Ozs7O0k7STtHO0c7STs7Ozs7Ozs7OztJLG9CO0ksVztzRTtJLFk7NEM7Ozs7O00sTTtLOzs7O00sTztNO1E7Ozs7OzRCLE87SSxnQjtJOzs7Ozs7Uzs7O1U7Ozs7Ozs7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEs7Ozs7Ozs7Ozs7cUI7Ozs7OztTOzs7Ozs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjOztpQixrQixRO2lFO2lCOztjLFM7YTtlLGtDO2MsVztjO2dCO3FCO2U7Z0I7Z0IsTzt3Qjs7Ozs7Ozs7Ozs7VTt5Qjs7Ozs7a0I7O0k7STs7O0k7Ozs7SSxPOzs7YzthO0c7O0k7O0k7O0k7Rzs7SSxPOzs7YyxPOzttQyxtQzs7YTtHOzs7Szs7OztrQjtNO0ssTztJOztLLEksNkI7Ozs2Qjs7O0s7STtJLFk7STtHOzs7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTs7O0ksTzs7O2M7Yzs7Ozs7bUI7O29CO29CO29CLFE7Ozs7Ozs7Ozs7b0IsVztvQjs7O21CO29CLFM7b0I7b0I7c0I7OzttQjttQjtvQjtvQjttQixLO29CLE07O21CO21CO2tCOzs7Ozs7aUM7YztlLFE7ZTs7O2U7aUI7O2tDOztjO2E7Rzs7SSxPOzs7YztlO2lCOzsrQiw0Qzs7ZTtjO2E7Rzs7SSw4Qjs7O3lCOzs7TztlOzs7a0I7Ozs7bUIsTztrQjtpQjs7Ozs7TztlOzs7a0I7Ozs7bUIsTzttQixPO2tCO2lCOzs7Ozs7SSxPOzs7Yzs7Ozs7Ozs7Ozs7O2U7aUI7O2tDOzs7OztlOzs7b0I7Ozs7OztjO3NCOzt1Qzs7Ozs7Ozs7Ozs7Ozs7O2E7Rzs7STs7STs7STtHOzs7Szs7UTs7Ozs7O1M7Vzs7NEI7O1M7UTs7UTs7UztXOzs7YztjO2E7O1M7Vzs7O2M7YzthOztTO1E7O1E7Ozs7UztROzs7SSxPOzs7Yzs7O2U7aUI7O2tDOztlO2M7YTtHOzs7SyxZOzs7TTs7SyxNO0k7STtLLE87SyxVO0ssTztJO0ksSSw2Qjs7Szs7O1E7USxPO087OztJOztLOztVO00sZ0I7TSxJLFcsdUM7Ozs7TyxrQjtPO08sVzs7Ozs7O1k7Ozs7O2E7YTs2Qjs7O1k7O2EsTzthLE87WTs7O3FCOzs7WTthOzs7O2E7YTtjO2UsTztlLGtCOzs7YTs7YztnQjs7aUM7Ozs7Ozs7Ozs7Ozs7VzswQzs7TztPOzs7SztRLG9DO0ssZ0I7SztLO0k7STtJOztzQixPLHFCOztJO0c7OztJLE87OztjOzthOzs7SSxPOzs7YyxZOzs7Ozs7Ozs7Ozs7ZTtnQjs7OztjO2M7YTtHO0c7STs7O1EsTTtPOzs7SSxXO087SyxNOzs7STs7O0s7TSxpQixROztPOzs7UTtPOzs7MEIsTyxzQzs7O00sTTs7dUMsTzs7O0k7Szs7OztJO0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOzs7OztJO0s7Szs7Ozs7TSxNOzs7O0c7STs7OztJLFk7OztZO007OztLO00sUTtNLFE7TTtNLFU7OztNOzhCO087TyxJOzs7OztPOzs7Ozs7O0ssdUM7SyxJLFU7Ozs7TSxhO00sRztPLE07TSxPOzs7SztNO087Ozs7Ozs7O0s7TSxPO00sVTtLO0s7Szs7SSxNOzs7STtHOztJLEksbUM7Ozs7O0ssTTs7Rzs7SSxXO0ksSSx3QixjOzs7Z0MsNkI7O0s7SztLOztHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkscUM7Ozs7SztLO0ssTTs7Rzs7SSxXO0ksSSxpRDs7O2dDOzs7Rzs7SSxJLHNEOzs7K0I7OztLOztHOztJLEksc0Q7OztnQzs7O0c7Ozs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7O1MsSyw2QjtTLEk7OztxQzs7O1M7OztTOzs7OztTOzs7UyxNOztLOztHOztJO0c7O0ksWTs7SztJLE07Rzs7SSxXO0ksSSx5Qzs7OztLO0ssTTs7Rzs7SSxJLDBEOzs7O2dDOzs7Rzs7STtLLEksSTs7Ozs7OztXOztZO2E7O2E7Ozs7d0M7OztXOzs7O0ksWTs7Ozs7OztPLEc7USxXO1EsTzs7Ozs7STtHOztJO0s7YTs7TSxPO0s7Ozs7NEI7OztHOztJO0ssSSxPLDZCO0s7VSxnQyxJOzs7Ozs7OztLO007Ozs7Ozs0Qjs7O0c7Rzs7SSxHO0ssTTtJLFk7Ozs7O1EsOEM7UTtTLEc7VSxNO1M7VSxZO1U7WTs7O2U7OztTOzs7OztTO1U7VztXO1U7Ozs7O1csTTs7Ozs7O1E7O0ksMEI7SyxnQjtLLE87OztlOzs7O0k7RztHLEk7d0IsdUI7O0k7SztLO0s7STs7O2E7Tzs0QiwwQjs7Ozs7SztLLE07O0c7O0ksSSxxQjs7O3dCOzs7Rzs7SSxJLDRCLGM7Ozt3Qjs7O0c7O0k7SyxPO0ssVzs7SyxZOzs7OztTLEc7VSxNO1Msc0Q7UyxvQjtTO1U7Ozs7Ozs7OztVOzs7Ozs7VSxJLEksTzs7Ozs7O1UsTzs7O29CLDZCO29CO21COzs7Ozs7UyxhOztLOztNLEksZ0I7TSxPOzs7Z0I7Ozs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1MsTzs7O21CO21CLE87a0I7O1E7TTtNOzs7Ozs7USxHLGdDOzs7Ozs7UTtRLE87Ozs7O0ssTTs7OztJLEksK0M7Ozs7TTs7O0c7O0ksaUM7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLOzs7SyxZOzs7Ozt3Qjs7UztVO1csSztXO2E7OztnQjs7O3NCOzBCOztlOzs7VTs7Ozs7OztvQjs7b0M7Ozs7O1MsZTs7O1M7OztVLFU7UztVLE87O1M7O0ssTzt3QztJOztLOztJLE87O2lDLGlDOzs2QixrQzs7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHO0c7O007OztTO1MsTztROztJOzs7Szs7OzttQjs7UyxPOzs7b0I7b0IsTzttQjs7bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTtjOzs7aUIsZTs7Z0I7OztXOzs7OztZLE87Ozs7VSxXO1U7OztVO1k7OzBCLE8sb0M7O1c7Ozs7TSxPOztJO0k7Rzs7STs7SztPOzs7VTtVLE87Uzs7O0k7TTs7b0IsTywyQzs7SztJO007O29CLE8sMkM7O0s7STtLO08sd0Msc0I7SztPLHdDLHNCOztJLE87O2lDLHdDOzs2QixPLHNCO0c7O0k7SztLOzs7Ozs7Szs7RztHO0k7Ozs7Ozs7STtLO087O3dCOztLO087O3dCOztJLE87OztjO2U7aUI7OztvQixZOzs7d0I7c0I7c0I7c0I7OztvQjs7O2U7ZSxPO2UsTztlLE87ZSxXO2M7YTtHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7VSx1Qjs7RztpQyx3Qzs7SSxPO2lDO0c7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7STtZOzs2Qjs7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7O0k7O0s7Z0M7OztLO007TTtNOztNLFE7OztNO00sSTtLO0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STs7SyxJLFc7Ozs7Ozs7O0k7Rzs7SSxJLDZCOztHOztJO0s7TSxPO00sTztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7NEI7OztHOztJLFk7OztLO007TyxtQjtPO007Ozs7OztNOzs7STtHOzs7O0ssRyxtQztLO00sUTtNLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixHLGlDOzs7Ozs7Ozs7OztNOztLLEksbUM7SyxHLG1DO0ssZTtnQjtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7O3VCO21CO3VCLCtCOzs7O2tCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7Ozt3QjsyRCxTOztvQjtxQixPOzt1Qjs7OzBCOzBCO3lCOzs7OztvQjtxQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7Ozs7OzhCLEs7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7OEI7OzhCOzs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7O2tDLE07Ozs7Ozs7OztvQzs7Ozs7Ozs7b0M7Ozs7a0MsTTs7aUMsVztpQyxHO2tDLE07Ozs7Ozs7K0IsTTs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07a0IsTzs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7OzttQzs7OztrQyxPOzswRDs7Ozs7Ozs7Ozs7Ozs7O2tDLE87OzBEOzs7Ozs7Ozs7Ozs7Ozs7OzZCLE07OzRCOzJCOzs7Ozs7OztpQjtrQjtrQjs7Ozs7bUIsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksTzs7a0M7OztHOztJO0s7Szs7SyxNO0k7Szs7O0s7OztLOzs7O0s7Tzs7O1U7dUI7UztJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07SSxPOzs7Yzs7Ozs7ZSxPO2UsTzs7O2U7Ozs7Ozs7ZSxNOztjO2E7O0c7OztLO0s7Ozs7UTtRLFc7VztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJO0k7SztJLEkscUI7STs7Szs7c0I7O0ssSTs7Ozs7OztJLFc7STtLO0s7SyxPO0ssa0I7SSxJLFc7Ozs7TSxNOzs7STtLLGM7Szs7O0ksZ0I7SSxPO0c7O0ksVztJLFM7STtLO0s7SSxPO0c7RztJOzs7USxNO087O0k7OztRLE07TztJOzs7OztJO0s7OzBCOzs7UTs7O1E7TTtHOztJOztLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7Ozs7O1E7UyxTOzs7Ozs7VTs7Ozs7Ozs7OzRCLE07Ozs7UTs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7OztJO0s7SztLLE8sMkM7STs7TSwyQzs7OztLO087VTs7SyxNOztJO0c7RztJOzs7Ozs7Ozs7OztJLEs7SyxNO0k7STtJLEk7OztLLG9EOzs7STtLLGtCO0ssYTs7Ozs7O0s7O0k7STtHOztJO0ksSTs7O0s7TTtNO007TTs7Ozs7Ozs7SSxPO0c7O0ksMkI7STtJOztLLEksUSwwQixVOzs7Ozs7Ozs7Vzs7O1k7OztXO1c7Ozs7Ozs7Ozs7Z0I7Z0I7Ozs7O2lCO21COzs7OztrQixXO2tCO2tCLG9CO2tCOzs7O2dCO2dCLEs7Z0I7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7SSwyQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7TztTOzs7Ozs7Ozs7USxXO1E7USxvQjtROzs7TyxJLHFCOztROztROztNOztLLE07Ozs7Z0M7OztHOztJO0k7STtJO0s7SztLLE87SyxPO0ssSztLLE87SyxPO0ssUTtJO0k7STtJO0ksK0I7Ozs7Ozs7TSxZOzs7Ozs7TSxjOzs7Ozs7Ozs7OztJO0ssSSxzQzs7Ozs7TSwwQjs7STtHOztJO0ssTTtLO0ssSztLLFc7Ozs7SztNOztTOzs7OztZOzs7Ozs7Ozs7WTtZLE87Ozs7Ozs7TTs7STs7TTs7TTtNOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7O2tCO2tCO3NCLCtCOzs7OztnQjtnQjtnQjtpQixVO2lCLFU7OytCOzs7aUI7O2lCOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O2dCOztrQjs7a0I7a0I7OztpQjtrQjtrQjs7b0I7O3FDOzttQjtvQjtxQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7O3VCOzBELFM7O21CLFc7bUI7OztzQjtzQixNOzt1QixXO3VCLEksOEI7Ozs7O3dCO3dCO3dCOztzQjs7OztxQjs7Ozs7O2lCOzs7O2dCOzs7Ozs7Yzs7ZTtlO2M7ZTtnQjtnQjs7OztlLFc7eUI7Ozs7ZTtlOzs7O2E7OztjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7aUIsVztpQixJOzs7OztrQjtrQjtrQjtrQjttQjttQjs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7d0M7Ozs7Ozs7Ozs7OztpRDtpQixXO2lCOzs7b0I7b0I7bUI7Ozs7Ozs7Ozs7O1U7Ozs7OztXO1c7Vzs7Ozs7Ozs7UTtRO1E7UTtRO1E7Ozs7O1EsSztTO3NCO1MsWTs7O1E7Uzs7Uzs7Uzs7Ozs7aUQ7O3FEO007Ozs7TSxZOzs7O087TztPO08sSSxtQixJOzs7Ozs7TztPO2tCOzs7O0s7Ozs7OztLO0s7Ozs7SSxXO08sMEM7SSxPOztrQzs7O0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxVO0ssaUI7Szs7O1E7Ozs7OztRO1E7Ozs7O1UsVztVO1Usb0I7O1M7Uzs7Ozs7O1M7eUI7O087O0s7Ozs7SztLO0ssTTs7OztJLEksUSwwQixVOzs7dUIsTzs7OztVLE87O1U7Ozs7SSxNO0c7O0k7SyxROzs7OztLLFU7Ozs7O0ksNkI7STtLOzs7Ozs7O0s7TSxPO00sSztLOzs7USxrQixPO1EsTztPOztLOzs7UTtRO1MsVztTLE07OEI7Ozs7Z0M7OztPOzs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJO0ssTzs7O2U7OztnQixROzs7NkI7c0M7O2M7O0k7STtLLE87OztlOzRCO2M7O0k7STtLLEksa0I7O007TztPOzs7WTs7O2M7Ozs0QjtxQzs7YTs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTs7O1k7OEM7UTs7Ozs7OztxQjtNLFM7O0s7TSxLO007OztNO08sTztPLE87TTs7SyxLO007TyxXO08sSztPLE87TTtNLG9CO00sTzs7SyxHLGlDO0ssTztlOztJO0k7SyxNO0ssTTtLOztJO0s7SztLOzs7UTtRO1M7O1M7Ozs7OztTOztPOztLLEc7TSxTO00sRztPO1EsTztRLE87Tzs7O0s7Ozs7SztLO0ssTTs7OztJO0s7Ozs7UyxZLE87UyxvQjtTOztNO007Ozs7OzttQjtLO00sUTtNLFU7O3NDOztPOztnQyxPLDhCO007Ozs7Ozs7Ozs7OzJDOzs7O1U7OztvQixRO29CO29CLFc7b0I7b0Isb0I7b0I7cUI7O3dCOzt5Qzs7cUI7Ozs7cUI7cUIsTTs7bUI7Ozs7OzsyQjs7O1U7O21DLE8sOEI7Ozs7OztTOztrQyxPLDhCOzs7OztTLEcsK0I7UyxJO1M7VSxXO2E7VyxRO1c7VztXLE87O3lDOzs7OztTOzs7Ozs7Ozs7O3lCO2tDOzs7OztVLGM7OztXLFc7Ozs7Yzs7OztpQixPOzt5Qzs7Z0I7Ozs7Ozs7O1M7UztVOzthLE87Ozt1QixXO3VCLFc7c0I7WTtVLFE7VSxRO1U7VTtZOzs2Qjs7OztVO1k7OzZCOzs7Ozs7VTs7O1ksc0IsTztZOzs2Qjs7Ozs7OztVOzs7OzthO2EsTzs7O3VCLHlCO3VCLDJCO3NCO1k7UztTO1M7VSxPO1UsTztTO1MsTzs7OztVOzttQyxPLDhCOzs7Ozs7VTs7O29CLFE7b0I7b0IsVztvQjtvQixvQjtvQjtxQjs7d0I7O3VDLDJCOztxQjs7OztxQjtxQixNOzttQjs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OztNOztLOzs7O0ksVztJLEksZ0M7Ozs7O0s7SyxNOzs7Rzs7STtJO0ssZ0I7SztLLDBDO0k7STtHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0ssSSxxQjtLO007TSx5QjtNLG9CO007TTtNOzs7Ozs7TTtNLE07Ozs7Ozs7STtHOzt1QyxrQzs7STtJO0c7aUMscUM7O0k7Rzs7STtLO0s7STtJO0c7Rzs7Ozs7SztNO007TSxJO0s7STtJLEk7Ozs7NkM7SyxNOzs7Ozs7O0ksWTs7OztRO1Msd0I7Ozs7UTtROzs7O2E7UyxrQzs7UyxNOzs7UTs7SSxNO0c7Rzs7OztJO0k7Ozs7UztVO1U7VSxLO1M7UTtLLEk7Ozs7TTs7TyxROztNLE07Ozs7Ozs7O0ssWTs7OztTO1UsVTtVOzs7UztTOzs7UyxjLDRCOzs7O0ssTTs7Rzs7O0s7TTtNLEs7TTtLO0k7SSxJOzs7O0s7O00sUTtNLFE7O0ssTTs7Ozs7Ozs7SSxZOzs7O1E7UyxVO1MsVTtTOzs7UTtROzswQjs7SSxNO0c7RztJOzs7O0ksSSw2QixROztLO00sTTtjLE07SyxJLFEsNkI7Szs7OztPO1EsVTtRO1E7Ozs7UTtTLFM7Uzs7O087ZTtPO087OztPOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7RztJOzs7Ozs7UyxZOzs7O00sSTs7OztRLE07Ozs7TSxJOzs7OztPLE07Ozs7Ozs7O0s7O007Yzs7VTs7O1UsTTs7Ozs7Ozs7OztLO0ssSTs7Ozs7TSxNOzs7O0k7ZTs7OztHOzs7O0k7OztLLEksVTs7Ozs7OztLOzs7O007Szs7OztPLE07OztNLEk7Ozs7O08sTTs7Ozs7O0ksYTs7O0c7RztJOzs7Ozs7Ozs7Ozs7SSwyQjtJLEk7Ozs7Ozs7Ozs7UTs7O1MsUTtTO1EsTTs7Ozs7SyxNOzs7STs7O087Tzs7USxTO1MsTTs7Ozs7TyxJOzs7OztRLHNCO1EsTTs7O087TTs7SSxPOzs7YztjO2U7Ozs7OztlLHNCO2UsTTs7O2M7YTs7Rzs7STtLO0s7OztLO087OztVOzs7Ozs7O1U7VztVLEksVTs7OztrQjs7YztlO2lCO2U7Ozs7O2M7ZSxVO2U7Ozs7Ozs7OztXOztVOzs7O1csUTs7VztZLFU7WTs7Ozs7VTtTOzs7Ozs7OztJO0c7O0k7Szs7SSxPOzs7YztxQjs7d0I7YTs7Rzs7STtLO0s7O0k7SyxJLDZCLFE7bUM7OztRO1MsUTtTLE87UTtROzs7USxxQjs7Ozs7USxNOzs7Rzs7STtJOzs0QixtQiw0Qjs7STs7Tzs7O1U7VTtTOztJOzs7TztPO007Ozs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCO2lCO21COzs7c0I7b0M7c0I7dUIsUTt1QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MkI7NEI7NEI7Ozs7Ozs7NEI7Ozs7Ozt1RTs7eUI7O3dCOzs7Ozs7OzJCLE87Ozs7OzsyQjs0Qjs2Qjs2Qjs7Z0M7OzttQztrQzs7NkI7Ozs7Ozs7NkI7Ozs7eUI7Ozt3Qjt5QixlOzs7bUM7MEIsVzswQjswQixXOzZCOzs7OEI7OztpQzs7Ozs7Ozs7OEI7OztpQztnQzs7Ozs7Ozs7Ozt5Qjs7Ozs7Ozt5Qjs7O29DLE87O3NCO3FCOzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0I7Ozs7cUI7OztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJLE87OztjOzs7O0c7O0k7Szs7O0s7OztLOzs7O0ksK0I7STs7Ozs7TSx3QjtJLE87OztjOzs7Ozs7ZSxRO2UsVTs7Ozs7a0M7Ozs7O3FCLE07Ozs7Ozs7ZSxNOztjO2U7ZTs7Ozs7OztlOytCOzthOztHOztJO0k7Rzs7STs7SSxJLG1DOztJO0ksTzs7aUMsdUM7OztjO2U7OztpQztlOzs7Ozs7OztlO2UsTTs7O2E7Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLFc7SyxXO0ssWTs7OztTO1UsVzs7OzBCOzs7O1M7O1UsVTs7OztVLE87VSxrQjs7VTtXLE87VyxPO1csUztXLFE7VyxPO1csTztVOztTO3FDO1MsZTtvQjtTLFc7Ozs7SyxPOzs2Qjs7O0c7O0k7STtJOztHOztJO0ksTzs7O2M7YyxPOzs7OzBCO3dCO2E7O0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJOzs7Ozs7SSxNOzs7O2E7O0c7O0ksSTs7O3FDOzs7STtHOztJOztJOztJO0c7O0ksTzs7O2U7OztnQixTO2dCLFM7b0M7d0M7ZTtjOzs7Ozs7YztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7Ozs7Ozs7O1csSzs7Ozs7O007TztPO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2dCO2lCLDhCO2lCLFU7Ozs7Ozs7YztlLE87ZSwyQjs7OztlLE87aUI7ZSxXO2U7O3FCOztnQjsyQjtjO3VCO2M7dUI7cUI7ZSxXO2U7Ozs7O2lCOzs7OztpQjs7OztrQztvQjtxQixRO3FCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjswQjswQjs7Ozs7OzswQjs7Ozs7O3FFOzt1Qjs7Ozs7Ozs7Ozs7OzsyQjs0Qjs0Qjs2QixPOzsrQjtrQzs7O29DOzs7O21DOzs7cUM7OztrQzs7O3FDO29DOzs0Qjs7Ozs7Ozs0Qjs7Ozs7Ozs7O3lDOzs7O3VCOzs7O3FCOztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7Z0IsTztnQjs7OztxQjs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7Ozs7SSxXO08sMEM7SSxPOzs7Yzs7OztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7O00sTzs7O2dCOzs7Ozs7aUIsTztpQixPOzs7O2lCOztvQjs7OztpQjs7O2dCO2lCO2lCOzs7Ozs7O2lCO2lDOztlOzs7Szs7OztJO0ksVztJLE87O2lDLE8sNEI7OztjO2E7Rzs7STtHOztJO0k7Szs7O2tCO0s7Ozs7OztLLE07OztHOztJLEk7Ozs4Qjs7O0k7Rzs7STtJO0s7TSxXO00sYzs7Ozs7TSxJOzs7a0MsTTs7Ozs7O0s7O0c7RztJOzs7Ozs7Ozs7O0k7SztPOzs7VTtVLEksVTs7O2tDOzs7O1U7Z0M7O3dCOzJCO1U7Uzs7O0s7Tzs7O1U7VSxHLDBDOztVO1M7OztLO087OztVO1UsSSxVOzs7a0M7Ozs7NkI7MkI7VTtTOzs7SSxPOzs7YztjLGlCO2U7YzthOzs7Rzs7STs7Ozs7Ozs7VTs7Ozs7Ozs7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7Ozs7Ozs7Ozs7Ozs7YSxHO2M7YyxJOzs7Ozs7ZSxNOzs7Ozs7Ozs7OztjOzs7OztPLE07OztNOztLOzs7Ozs7OztNLE07Ozs7Ozs7STs7SyxRO0ssUTtLO0ksVzs7O0k7O0ssTzs7STs7SyxhO0ssVTtLLFU7SztLO0s7SztJO0k7OztLLEk7Ozs7OztNOzs7Ozs7O0k7Ozs7STtLLFE7SyxRO0s7SSxXO0k7SztNO00sYTtNO007TTtNO0s7SztLO00sSztNLEs7O00sTTtLOzs7USxJLG9EOzs7Ozs7UyxNOzs7Ozs7Ozs7OztPOzs7SztNOzs7UztTLEksVTs7OztXLE07Ozs7UyxJOzs7Ozs7VSxNOzs7Ozs7Ozs7OztTO1E7O007OztTO1MsSSxVOzs7O1csTTs7OztTLEk7Ozs7OztVLE07Ozs7Ozs7Ozs7O1M7UTs7Ozs7Ozs7SztNO1E7NkMsMEI7TSxPO007O3FCO0s7Ozs7OztLOzs7RztJOzs7Ozs7Ozs0Qix5Qzs7STs7aUM7O0s7O0k7Rzs7SSxPOzs7YztjO2E7OztHOztJO0k7ZTs7aUU7Ozs7Rzs7SSxPO0c7O0ksSSxVLDZCOztLLE07SSxtQixVOzs7OztNLEcsNkI7OztJLE07Rzs7STtJLE87Rzs7SSxZOztjLHNCOztLOzs7O2tCO087UTtTLE87UyxNOztRO1E7Ozs7K0I7Ozs7Tzs7OztRLEs7TywyQjtPO1E7UTs7O1E7OztRO087O08sc0IsTztPLDZCO087UTtRO1U7OzthOzs7UTtPOzs7O29CO3NEOzs7OztPOzs7OztROzs7Ozs7O1E7UyxjO1M7OztVO1c7OztVO1c7Ozs7Ozs7WSxNOzs7VSxjOzs7OztZLEc7YTtlOztnQzs7YyxNO2E7YTtjO2Msa0I7YztjOzs7c0I7Ozs7Ozs7YSxLO2MsTTs7O2M7OzthO2EsSTs7OztlLE07OzthO2E7Ozs7VSxNOztTLE07Ozs7O1M7VTs7O1M7OztPLHFCLE87Tyw2QjtPO087USxJLE87O1M7UztVO1c7Vzs7Ozs7OztRO1M7Vzs7O2M7ZSxROzs7Yzs7Ozs7OzthOzs7UztTOzs7OztnQjtrRDs7O1E7Ozs7K0I7Ozs7TyxxQixPO087UTtTOztTO1M7OztROztPOztPOzs7O1E7OztROzs7UTtPOzs7O08sb0IsTztPLGlDO1E7Uzs7UztTLDhCO1M7Vzs7O2MsOEIsUTs7Ozs7cUM7O2U7O2dCOzs7Ozs7OzJCOzs7MEI7O2U7O2MsTTthOztTOzhCO1M7UztXOzZDO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RztJLFc7Ozs7OztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCO2lCLE87OzsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQixHLGlDOzs7Ozs7Ozs7Ozs7Ozs7aUIsc0I7aUIsRztrQjtrQixHO21COzs7O2lCO2tCOzs7a0I7OztrQjs7OztpQixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUI7c0M7Ozs7aUI7OztrQjs7bUI7Ozs7Ozt1QjtzQzs7O2lCLE87OzsyQjsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7OztpQjtrQjttQixVOzs7O21CLFU7Ozs7bUI7Ozs7bUI7bUI7bUIsVTttQixXOzs7Ozs7Ozs7Ozt5QixHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO3lCOzs7Ozs7OzsyQjs7OzhCOzs7K0IsUTsrQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDOzs7OzsrQjs7OEIsTTs2Qjs7Ozs7Ozs7Ozs7O3dCOzs7MkI7Ozs0QixROzRCLFU7eUQ7Ozs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs4Qjs7Ozs7Ozs7NkI7OzJCLE07MEI7Ozs7OzttQixNOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7O21CO3FCOzs7d0Isa0M7d0I7O2dDOzs7dUI7Ozs7bUI7b0IsYTs7O3FCO3NCOzs7eUI7eUI7d0I7Ozs7Ozs7O3FCO3VCO3NCO2lDOzs7O29CO29CLE07OzhCOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7OztROzs7O1E7Uzs7Ozs7Ozs7TztROzs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPO1c7YTs7O2dCOzs7aUIsUTs7O2dCOzs7Ozs7aUI7O2dCOztpQixPO2lCLE87aUIsTztnQjs7O3lCOzs7O2U7Ozs7VTs7Ozs7Vzs7OztPO1EsSSxROzs7Ozs7Ozs7OztrQjs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTOzs7Ozs7O0s7Ozs7STs7STtJO0k7SyxXO0ssTzs7O2U7Ozs7O2UsSSw0Qzs7OztpQjt1Qzs7O2M7b0I7Rzs7SSxJLFEsMkIsTzs7OztROztROzs7OztTO1EsTzs7UTs7O1EsTTs7SSxPO0c7O0ksSSxRLDJCLE87Ozs7UTs7O1M7USxPOztROztTLFE7Ozs7OztTLE87UyxPO1MsTztTLFc7USxPOzs7UTs7SSxPO0c7O0ksWTs7STtHOzs7OztLLEcseUM7SztNLFk7TSxROzs7O1M7WTtVLHNCOzs7UztVO1k7O21DOzs7OztVO1M7VTs7Ozs7O1U7Ozs7cUM7Ozs7O2tCOzs7Ozs7Ozs7Uzs7Ozs7Uzs7VTtZOzttQzs7Ozs7UyxHLDRCO1M7VSxPO1U7Ozs7O0ssTzs7bUM7Ozs7OztJO0k7Rzs7STtJLE87Rzs7STtHO0c7OztLOztJLE87Rzs7STs7SztPOzs7VTs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7O1M7OztVOzs7Ozs7OztROzs7Vzs7Ozs7SSxPO0c7O0ksZTtlO2lCO0ksUzs7O0ssSyw2QjtNLGM7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07O0ssWTs7Ozs7UyxrQzs7Ozs7VyxrQjtZOztZLGM7O2E7Ozs7O3dCOzs7OztXOztTLFk7O1U7Vzs7O1csTztXLE87VTs7OztTOztVLFU7Ozs7OztVO1k7OztlOzs7Z0IsUTs7Ozs7Ozs7bUI7Ozs7b0I7c0I7Ozt5QixPOzs7b0M7bUM7Ozs7d0I7OztvQixPO3NCO29CO3FCLE87NEI7Ozs7Ozs7Ozs7ZTtjOztVO1k7OztlOzRCO2M7O1U7WTs7O2U7ZSxPO2M7O1U7Z0I7Uzs7OztJLE87OzRCOztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7SSx1QyxRO2tFO0ksSSxXLDJDOzs7O0ssSSxPLDJCLE87SztLO00sVzs7Ozs7OztXO1ksYzs7O2EsTTs7O1k7O2E7OztnQjs7O21COzs7Ozs7Ozs7O1k7YTtjLE87YyxJOzs7OztjOzs7Ozs7YyxNOzs7Ozs7O1csa0M7OztZLEc7Ozs7Ozs7OztrQjs7O3FCOzs7Ozs7Ozs7O1csbUIsTztXO1ksVTtZO1ksSTs7Ozs7WTtZO2EsVzthOztrQjs7O2E7ZTs7Z0M7Ozs7O2EsVTs7Ozs7YyxHOzhCOzs7Ozs7Ozs7Ozs7VyxHO1k7YTthLFU7OzthLE07Ozs7Ozs7Z0I7Ozt5Qjs7Ozs7Ozs7VTs7OzJCOzs7Ozs7TTtNLE07O0s7Szs7OztJO0s7SztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7O0k7Szs7TTtROzt5Qjs7OztNOztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOztPO1M7OzBCOzs7OztLOztNO1E7O3lCOzs7TTtROzt5Qjs7SztLOzs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7USxLO1M7Ozs7VTtTOztpQjs7O29COzs7Ozs7OztROztTO1c7OztjO2M7YTs7UztXOzs7YztjO2E7O1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7O0s7O1E7O3lCOzs7Ozs7Ozs7STtJO0c7O0ksRztLLE07STs7Ozs7Szs7Szs7Szs7UTs7eUI7Ozs7Ozs7OztJO0k7Rzs7SSxTO0ksRywwQztJLEksOEIsUTs7SyxvQixPO0s7OztRLG1CLFE7Ozs7Ozs7VyxPOzttQzs7Ozs7UTtPOztLLE87OzZCOzs7SSxPOzs0Qjs7Rzs7STtJLE87OzRCOztHOztJO0s7SztLLFE7SyxVOzs7OztLLE87O0k7Rzs7O0ksWTs7Ozs7UTtTLEksWSw2QjtTOzs7O2dDOzs7OztRLEc7UyxXO1M7O1c7OztjLGtCLFE7Ozs7Ozs7ZTs7YzthOztVOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLGM7cUIsWTtHLEksK0I7O0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7SSxXO0ksTztHOztJLHVCO0c7RztJOzs7UTtRLHNCOztRO1Esc0I7O1E7USxzQjs7UTtRLHNCOztRO1Esc0I7O0ksdUIsTSwwQztHOztJO0k7Ozs7Ozs7cUM7O3FDOztxQzs7cUM7O3FDOzs7Ozs7OztLO0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtnQjtJOztLLG1DOztLOztHOztJLHFDLE87Ozs7Ozs7Ozs7Rzs7SSxXO0ksTztHO3lCLCtDOztJO0k7STtLLE87SztPO1MsMkM7SSxPLFc7Rzs7SSwwQiw0QztJO0s7SyxROzs7STtLO0k7SyxPO0k7STtLLE87STtJO0s7Tyx3Qyx1QjtLLG9CO0ssVTtJOzs7Tzs7UTtRO1E7TztPO007O0ksTzs7O2MsWTs7O2UsTzs7Ozs7Ozs7OztjO2U7aUI7bUQ7ZSxPO2MsTzs7Ozs7Ozs7Ozs7O0c7O0ksVztHO0c7c0IseUI7RztJO0k7OztJO0ssa0IsTztLLE87STtJO2U7SSxPO0c7O0k7Ozs7TTs7TyxPO2M7OztLO00sVztNLE87O0s7TTs7Uzs7WSxPOztZLE87O1ksTzs7WSxPOztZLE87b0I7O1E7TTtNLE87TSxROzs7TSxHOzs7TztRO3lDOztVOzZDOzs7Ozs7d0M7SyxjOztpQjs7TTtPO2tCO08sVztjO0s7TSxZO007TTs7ZTs7OztNO2E7OztRLEk7Ozs7Ozs7O1M7Ozs7O0ssTzs7SSxXO0ksTztHOztJLEksMEIsTztJLE87Rzs7STtJLE87RztHO0ksZTs7Ozs7Ozs7STtJOzRCO0ssVSxnQztNO0s7OztHOztJOztPOztRLE87UTtxQjtPOztRO1U7Ozs7O1EsTztRLHFCO08sSSxZOzs7K0I7Ozs7Tzs7O1MsSSxVOzs7Ozs7Ozs7VSx1QixPO1U7Ozs7OztROzs7NkM7O08sc0M7Tzs7O087O0c7bUQ7Rzs7OztLO0k7STtJOzs2Qjs7Ozs7Ozs7VTs7O1csTztVO2M7Ozs7Ozs7cUI7Ozs7OztPLFMsVzs7Tzs7Tzs7O1E7UTtPOzs7TyxZOztPOzs7O0k7Ozs7Rzs7STtJLE87Rzs7SSxPO0c7O0k7O0s7Tzs7d0I7O0ssTztJLE87Rzs7Ozs7Ozs7Ozs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOztJLE87Ozs7Ozs7YyxPOzs7d0IsTzt1Qjs7YTs7RztJOzs7O0k7STtxQzs7O007Ozs7O0c7O0ksWSxPOztJLE87OztJLDhCO3lDOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxJLEs7Ozs7TSxHO007Ozs7O0ssTzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7Rzs7O0s7SyxPOztJO0ksc0I7Rzs7STtLLE87Ozs7TyxPOztPOzs7OztRLE87UTtPLE87Ozs7Ozs7Ozs7OztPLE87O087Ozs7UTtPLE87Ozs7Ozs7O3FDOzs7O08sTzs7Ozs7OztpQjs0QixPOztpQixPOztnQjs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXO1csTztVO08sTzs7Ozs7cUM7Ozs7Ozs7Ozs7OztpQixhLE87O2lCLE87O2dCOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7SSxPOzs7YyxZLE87O2MsTzthOztjLE87YTs7YyxPOzs7Ozs7Ozs7d0IsUSxPOzt3QixPOzt1QjthOztHOztJOztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7Ozs7Ozs7SSxRLE07O0ksTztHOzs7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1k7Yzs7K0I7O1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7Ozs7STtJOzs7UTs7UyxTO1MsSTs7O1MseUI7OztROzs7O1E7OztTOzs7UTs7Ozs7O0ssSTtLOztHOztJO0ssWTtLLE87STtjOztHOztJO0k7Ozs7O3dCOzs7Szs7UTs7O1c7O1k7Ozs7O1c7WTthLEk7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O1U7Ozs7O0k7Rzs7STtJLE87O2lDLGdDOzs7Rzs7STtjLG1DOztHOztJO0k7Ozs2QixXOzs7O1Esd0M7UTs7Ozs7O0s7O0c7O0ksK0I7dUI7STtLOzs7O0ssUTtLOzsyQzs7YyxNOztNOzs7Uzs7VSxvQjtVLEcsa0Q7O1M7O1UsSTtVLE87VSxPOzs7VTs7OztZOzs7OzJCLDRDO2E7YTtlOzs7a0I7a0IsTztpQjs7WTs7O2E7YztjO2dCOzs4QixPLCtCOzthO2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7Uzs7UTs7O0k7Ozs7Ozs7Ozs7Ozs7O007TyxXOztRLDJDOzs7OztLLEksSTs7Ozs7O0s7O0c7O0ksTzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksVztJO2lDOzs7STtHOztJLGlCOztJLFc7SSxPOzs7YyxrQixROztlOzs7Z0IsTztlOztpQzs7Ozs7O2M7YTs7Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87O3FCO1EsTzs7O2tCOzs7Z0M7Z0M7aUI7Ozs7aUIsNEI7USxPOztRLG9CLFU7OztTLHNCLE87O1EsTzs7SSxPO0c7Rzs7SSxlO0k7O0ssTztnQjswQjt3Qjs7RztHO0k7STtJO0k7STtJO0k7STs7O0k7SyxNO0s7SyxXO2U7Ozs7Ozs7Ozs7Ozs7OzthLE87Ozs7OztROztJO0c7O0k7STtLLEksVzs7OzZCOzs7OztHOztJLFc7STs7O0s7O1E7OztXO1c7VTs7Szs7OztJO0c7O0k7SyxXO0s7SyxpQzs7Rzs7SSxjO0k7SztNLE87TSxPO0s7Szs7Tzt3QjtNOzs7Rzs7STtJLEksVyw4Qzs7OztLO00sVztNOzs7Ozs7Ozs7Ozs7OztZOzthOztnQixPOzs7MEI7MEI7eUI7O2U7WTs7O2E7OztpQixXO2lCLE87Z0I7YztnQjt3Qyw4Qjs7Ozs7OztrQjs7TTtNOzs7Rzs7SSxZOztLOzs7UTtRLFc7Tzs7O0c7O0ksNEI7OztJLE87Ozs7ZTs7O2M7OztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJLFc7SSx3QjtJOzs7Rzs7STtJLHNCO0c7O0ksWTs7OzswQjs7OztROztJO0c7O0k7STtLO0ssRztNO0s7TSxNO007TTs7Ozs7Uzs7Ozs7O1MsRztVO1MsWTs7Ozs7O3lCOzs2Qzs7Ozs7UztTO2lDOzs7Szs2Qjs7RzsyQiw2Qjs2QixtQixzQjs7STs7Ozs7Rzs7STs7Ozs7STs7O0c7MkIsVSwrQjs7STtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtNO1c7SztNLDZCO007O3lCO0s7OztLLEksTSw4Qjs7OztTO1U7VSwwQjtTOzs7OztVLDBCOzs7UyxHO1UsYzs7Ozs7OzthLEc7Ozs7Ozs7Ozs7OztTOzs2Qjs7Uzs7O1U7OztVOztVLDRCO1M7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7VTs7ZTs7O2lCOzhCO2dCOzs7VTtZOzs7ZSxrQixROytEO2U7Yzs7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDOzs7Ozs7aUI7bUQ7Vzs7O1M7VTtZOzs7ZTs7O2dCLFE7NkM7Ozs7Ozs7aUI7Ozs7Ozs7aUI7OztlOzs7VTs7OztlO2lEO1M7O1M7Ozt3Qjs7UyxnQjtTO1UsUTtVO1M7UztVO1k7OzZCOztVO1M7O1M7O1M7OztVO1k7OztlOzs7Z0I7Z0IsTztlLFc7Yzs7Uzs7SztJO0ksRzs7TTs7dUI7O0ksWTs7Ozs7O1Esc0I7UTs7O0k7SywrQjtLO0s7Ozt5QjtLOztJO0c7O0ksTzs7NEI7O0c7O0k7SztNLFU7OztNO1E7OztXO3dCO1U7OztNO1E7OztXO1csTztVOztNOzs7Szs7O2dCLE87STs7O0s7Szs7O0ksWTtJLE07Rzs7STtLOzs7OztNO007OztLOztJLGM7Ozs7Ozs7OzsrQjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7RzswQywwQjs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0ksTzs7O2MsSSxPLDRCO3FDO2M7YzthOzs7Rzs7STs7Tzs7O1UsVztVLE87d0I7O1M7OztJLE87Rzs7STs7SyxPOzs7SSxPOzBDLDBCO0c7O0ksSTtJLFc7Rzs7SSxxQzs7SSxlO0c7O0k7SyxPOztLO087O3dCOztLO0k7Rzs7STs7K0Isc0M7O0c7O0ksSSxpQzs7SyxtQixPO0s7OztRLFcsVztRO1M7VSxPO2lCOzs7USxjO087OztJO0k7STs7cUI7Ozs7Syx1QixVOzs7O08sc0IsVTs7Ozs7OztVLEc7VztZLFc7bUI7Ozs7Ozs7Ozs7OztLOzs7OztJOzs7Ozs7UTt1QywwQjs7OztROzs7Vzs7VTs7O0k7Rzs7STtLOzs7O0ssa0I7O0s7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs0QywyQjs7O0k7SztPOzs7VSxhO1Usc0I7VSxXO1U7VyxXO1c7Ozs7O2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7OztVO1csVTs7O1c7O1U7Uzs7O0s7Tzs7O1U7OztXOztVO1M7OztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7OztpQjs7O1E7Ozs7O1M7OztjOzs7OztJOzs7OztZOzs7Rzs7STs7Rzs7STtJLE87Rzs7STtJO0k7Rzs7STtJO0k7SSxPO0c7O0k7STtJO0c7O0k7SSxPO0c7cUQsd0I7Rzs7SSxJLHVCO0ksTztHOztJO0ksTztHOztJOztLO087O3dCOztLO0k7Rzs7STtJO0k7STs7Rzs7STtLLFU7Szs7Szs7c0I7O0ssTzs7O2U7bUY7ZTtjOztJO0k7O0ssTztLOzs7SztJOzs7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0k7STtLLE87Szs7O0ksTzs7Ozs7O0c7O0k7SyxPO0s7SztLOzs7OytCOzs7OztJO0c7O0k7SSxPO0c7O0ksWTs7O0s7O0k7Rzs7O0k7Ozs7Ozs7UTs7O1MsTTtTO1M7UTs7VTthO1MsVztTLEs7VSxPOzs7OztRLHVCO1EsRztTOzs7UTs7Z0MsbUIsd0I7Ozs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztZLE07OztTO1M7Ozs7O1E7O1M7Uzs7UztTO1c7OztjO2M7YTs7O1M7Vzs7O2M7YzthOzs7UyxhO1M7Vzs7O2M7Yzs7Ozs7OzthOzs7UztXOzs7YztjO2E7OztTLGM7UztXOzs7Yzs7Ozs7ZTs7O2U7YyxhOztjO2E7OztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssYztLOzs7Szs7STtHO0c7O007OztTO1U7VTtZO2U7O1M7UTs7STtJO0k7STtJLGU7STtJOztxQjs7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STs7cUI7O0k7STtLLE87SztPOzs7VTs7Uzs7O0s7Tzs7O1U7O1M7OztLO0s7SyxPO0ssTztLLE87SztJO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztpQixjO2tCLFc7a0IsTzs7aUI7Z0I7Z0IsTzs7OEI7O0c7O0ksVztJLE87Rzs7Ozs7eUI7O08sbUI7Tzs7Ozs7O1M7O1UsUTs7cUI7O1MsSSxzQixXOzs7O3VDLFM7Tzs7UTs7UTs7Z0M7TzttQzs7OztJOzJCLFc7O2M7YyxPOzs7d0I7d0IsTztpRTt1Qjs7YTs7Rzs7STtLLE87SyxhOztLOztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1U7WTs7O2U7OytDOztlO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO0s7SztNLFE7TTs7TTs7Tzs7O007O087Uzs7O1k7OzthOzs7WTtXOztPOzs7O1ksTztXOzthOztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7O0ssTzs7OztlLG9COzs7O0k7SSxPLFc7Rzs7SSxPO0c7O0k7SSxPO0c7O0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7STs7O0ssTztLLE87SSxPOzs7STs7Tzs7d0I7SSxPO0c7OztJLEcsK0I7STtJOzs7STs7SyxPOztJOzs7SyxPO0ssTztJLE87OztJLFk7O2dCOztJLE87Ozs7Ozs7OztrQzs7Ozs7Ozs7Ozs7SSxLLGtDLDhCLCtDLFU7STs7O0k7O3lCOzs7NEM7OztJO0c7OztLLE87O1E7O29COztLO0k7SSxTOztJLGdCO0c7O0k7OEI7Rzs7OzttQjs7OztNOzs7TTs7Ozs7O0c7STtNOzs7O1UsTztTOzs7O0ksWTs7Szs7TSxVOzs7Ozs7SyxlO0s7TSxPO00sTztNLFc7TSxPO0ssTzs7STtHOztJOzs7SztJO3NDO0k7OztJLFc7SSxPO0c7O0ksTztHO0c7SSxhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87OztJO0k7STs7SyxPOztLLE87Ozs7Ozs7Ozs7Rzs7STs7Tzs7OztROztRLFE7USxVOzs7UTtTOztrQixPOztpQjs7OztRO1M7O2tCLE87O2lCOztPOzs7O1EsVzs7OztVLFc7O1U7OztXO2E7K0M7VTtrQjs7Ozs7Ozs7OytDOzs7OztpQjtnQzs7O1c7VztZLE87O2M7Ozs7Vzs7WTtjOzs7aUI7aUI7aUIsTzswQjs7Z0I7O2M7O1U7a0I7OztVOzs7O1csTztVO2tCOzs7Ozs7Ozs7O1Usa0IsTztVO2tCOzs7Ozs7Ozs7OztRLFc7OztRO2dCOzs7Ozs7Ozs7TyxXOzs7Ozs7UTtRO1MsTztlOzs7Ozs7Ozs7Ozs7O2lDOzs7Z0M7OztVLG1CLE87VSxXOzs7VTtVLFc7VSxXOztVLG1CLE87VSxXOzs7VTtVLFc7VTtrQjs7Ozs7Ozs7OztPOzs7TztPO08sYzs7Ozs7Vzs7b0I7b0I7b0I7b0I7cUIsTztxQixPO29CLE87O21COztPLDBCOzs7O0ksTzs7OytCLHdDO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSxXOzs7O00sVztNLE87O2lCO0ssYzs7TSxXO00sTzs7Szs7STtHOzs7OztnRSxTO0k7Ozs7YztjO2U7aUI7OztvQjtvQjttQjs7O2U7aUI7OztvQjs7O3FCLE87b0IsVzttQjs7OEI7YztlOzs7b0I7b0I7bUI7O2U7YztlLE07O2M7O2U7Z0I7Ozs7Ozs7b0I7Ozt1Qjs7O3dCLFE7Ozs7O3dDLG1COzt1Qjs7Ozs7ZTtnQixPO2dCLE87O2dCOztpQjttQjs7b0M7OzttQjs7Ozs7Ozs7OztnRDtlO2dCLE87Z0Isc0I7Ozs7Ozs7O2U7ZTs7Ozs7O3NDOzs7a0I7O2dCO2dCOztlOztrQjs7O3FCO3FCLEksVzs7OzZDOzs7cUIsWTttRDtxQjs7c0IsTztzQixTO3NCO3FCLE87b0I7OztlOzs7a0IsaUI7OzttQjs7O29CLE87b0IsTztvQixPO29CO3NCOzs7OzBCLE87eUI7O21CLE87Ozs7Ozs7Ozs7O2tCOzttQixPO2tCLE87Ozs7Ozs7O2lCOztlOzs7Ozs7OztlLE07O2E7Ozs7STtLOzs7Ozs7O0s7O0k7Szs7O2tCO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7SSxZOztJOzs7STs7O0ksbUI7eUI7STtZOzs2Qjs7Rzs7SSxxQjtJO1k7OzZCOztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2lCOzs7Ozs7Ozs7OztlLE87YztlOzttQjs7O2MsTzs7Ozs7d0I7Ozs7Ozs7Ozs7c0M7O2E7OztJOzs7O2M7YztjO2UsTTs7ZTs7a0I7O2UsTzs7Ozs7Ozs7Ozs7YyxpQjtjLE87Ozs7Ozs7Ozs7YTtHOztHLDhCO0csaUM7O0k7Rzs7STs7NkIsK0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7OztpQixPOzs7Ozs7Ozs7Z0I7OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7OztJLFk7OztLLE87OztlLE87Ozs7MkM7O2M7O0k7SSxPOzs7O2dDOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7SSxJLDRCLDhCOzs7OzRCOzs7Rzs7SSxpQjtJLGdCO0ksTztHOztJLE87Rzs7STs7O087O1EsTztRO08sVzs7Ozs7Ozs7VSxZO1U7Ozs7Ozs7O1U7VyxPO1csVTtVOzs7Ozs7OztJO0c7Ozs7Z0I7Ozs7O1E7Ozs7O1MscUIsTztTLEs7Ozs7Ozs7Ozs7Ozs7O1M7O1Usa0I7VSxZO1U7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1E7O1E7Ozs7Ozs7Uzs7d0M7UyxRO1E7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7NEI7Ozs7O1EsWTtROzs7OztROzs7UTs7Ozs7STtxQjtrQjs7STtHOzs7O0k7NkM7SSxPO0c7O0k7OzRDO0ksTztHOztJOztPOzt3Qjs7O087ZTs7Rzs7SSxTOzs7Szs7Ozs7OztNOzs7TTtLOzs7OztJO0c7O0k7STs7O1Esa0IsUTtvQjs7USxJLGdCOzs7O1UsTTs7Ozs7O1E7O1MsUTtTLFU7OztTOztZOzs2Qjs7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztROzs7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7Uzs7OzthOzs4Qjs7Ozs7O1E7Ozs7O2UsTTtROzs7O08saUI7OztPLGlCOzs7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZO0ksSSxnQjs7OzJCOzs7aUM7STtLLE07SyxVO0ssTTtLLFM7SyxRO0ksSTs7OzRCOzs7SSxnQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxpQjs7STtZOzs7ZTs7Ozs7OztrQjs7O3dDOzs7Ozs7Ozs7Ozs7OztrQjs7Ozs7eUM7Ozs7OzswQjs7OztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRLFk7Ozs7OztROzs7O0c7cUMsdUM7Ozs7Ozs7UTtTLFk7cUIsTTtTLG9CO1M7Ozs7O1UsTTs7Ozs7USxPO2lCOzs7b0I7Ozs7Ozs7Ozs7Ozs7OytDOzs7O3FCLE07O29COzs7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7UTs7O1M7UztTLE07UztTLE07USxPOzs7Rzs7STtJO0ssSSxjLHVDOzs7Ozs7Uyw2QjtTLEcsK0I7Uzs7OztTLG1DO1MsRyxpQztTOzs7aUI7OztHOztJOzs7STtLO00sbUM7Ozs7Ozs7O0ksTztHOztJO0s7SyxROzs7Ozs7OztPO1EsUTtRO1U7Ozs7Ozs7O0c7O0ksUzs7Ozs7Ozs7Ozs7Ozs7OztTLEc7Ozs7Ozs7Ozs7OztPOzs7WTtPOzs7OztPOzs7aUI7O3dCOztHOzs7SyxJLDZCLGE7Ozs0Qjs7O0k7O0k7Rzs7STtLO007TTtNOzs7UyxvQjtvQjs7UTs7O1M7Ozs7OzthLE87Ozt1QixtQjt1Qjs7d0I7d0IsbUI7a0M7O3NCOzs7OzJCOzs7O1M7UTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO007UTs7O1c7VyxPO1U7OztNLDBCLE8sbUM7TSw4QixXOztLOzs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7SSxZOzs7Ozs7Ozs7OztJO0ksTztHOztJO0ssVTtLOzs7Ozs7Ozs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7O1U7VSxTO1UsUTs7O1csTTtVLE07Ozs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLE07a0I7Ozs7UyxNOztTOzs7VTs7WTs7O2U7Z0IsTTtnQixNO2UsTztjOzs7OztTOztVO2dCOzs7Uzs7O1U7Z0I7OztTOzs7O1U7Z0I7OztTOzs7O1U7Z0I7O0s7Szs7Rzs7SSxPO0c7O0ksa0IsTTtJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXOzs7Ozs7Ozs7Ozs7Ozs7b0I7O00sTTs7SztLOzs7SyxNO0k7Rzs7SSxZOztLO00sTztNLFU7O3dDO0s7O0k7Rzt1Qyw0Qjs7STtHOztJLDhCOzZCLGlCLGtCOztHOzt1QixPLHlDO0k7Z0M7OztLLE87Ozs7Ozs0QixPLHlDOzRCLE8seUM7OztxQixPLHlDO0k7Szs7UTs7UTs7UTtnQjs7STtLOztNOztNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxPOzs7Ozs7MkIsTyx5QzsyQixPLHlDO0c7O0k7Ozs7USxPOzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87Ozs7Ozs7Ozs7O2lCOztrQjs7aUI7O2tCO2tCO2tCLE87aUIsTzs7OztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O0c7O0ksd0IsTyx5QztJLCtCLFM7O0s7O00sTztLLE87O0k7SztPO0ssTztJLE87Rzs7cUIsTyx5QztJLDRCO0k7OzJCOzs7Tzs7O087O1E7UTtRLE87TyxPOztPOztRO1E7USxPO08sTzs7Rzs7STs7OztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O08sTzs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7Rzs7cUIsTyx5QztJLFU7STs7Ozs7SyxPO0ssYztJLE87Ozs7Ozs7Yzs7OztHOzt1QixPLHlDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztROztXOztjOztjOztjO3NCOztVO1E7UTtRLE87TyxPO2dCOzs7Ozs7O087Tzs7NkI7O087OzJCLE8seUM7UTs7VyxPO1U7TztROztXOzs7WTs7VyxPOztXLHFCLE87VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTztpQjs7O087OztPOztROzs7TyxvQjtPLE87Z0I7Ozs7OztPOzs7TyxzQjtPLE87OztPOztRLFU7TztpQjtpQjs7Rzs7STs7Szs7STtLLE07SyxNO0ksSTs7Ozs7Szs7STtHOztJOzs7OztJOzs7Tzs7Ozs7USxPO08sRyx3QztPLFc7Tzs7K0Q7TztRO1E7Ozs7Ozs7OzBCO0s7O0c7RztJOzs7Ozs7Ozs7O0ksZTs7STs7O0k7O087O087O087Ozs7RzttQixtQzs7STtLOzs7Ozs7TSxRO00sUTtLOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7O0ksTztpRCxvQjtHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7VztZO2M7OztpQjtpQjtnQjs7WSxVOzs7VztZO2EsTzthLE87WTs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7OztTLGtCO1UsZTtVLEs7VyxNO1U7VyxPO1csTztXLFE7Ozs7VyxjO1csYzs7O1c7VyxjOzs7Ozs7Ozs7Ozs7O1c7O2M7OztpQixrQixRO2lFO2lCO2dCOztXOzs7O1c7O1k7O2E7Ozs7OztjLFU7YyxVOzs7Ozs7Ozs7OztnQixXO21CO2lCO2tCLFE7a0IsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7aUI7OztrQjtrQjs7Ozs7Ozs7Ozs7O2M7O2dCOzs7aUI7aUI7Ozs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7OztNLGM7Ozs7Ozs7O3NDOzs7OztzQzs7Ozs7Ozs7OztJOztNOztNO08sTztPLE87TTs7Ozs7OztLOztJO0c7OztJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs7O1U7O2dDOzs7Vzs7WSxRO1ksVTs7OztlLHFCLE87ZSxHOzs7ZSxzQixPO2UsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7O2UsVztlLE87Yzs7Vzt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLE07Ozs7Ozs7Ozs7O1c7WTs7Ozs7Ozs7OztVO1c7WTs7ZSxXO2UsTztjOztXO3dCOztVOzs7VyxPO1csTzs7O2dCOzs7a0I7bUIsTzttQixPO2tCO21CLFc7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7a0I7aUI7Ozs7VTs7O1c7WSxrQixtQztZOztlOzs7Ozs7Z0IsUTtnQixRO2U7Ozs7Ozs7Z0I7O2U7Ozs7MkI7O2U7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNOzs7SSxnQjtJO0ssTztLO0k7SyxjOzs7Ozs7Ozs7SSxnQjtJOzs7Ozs7SSxvQjtJO0s7OztLLE87SSxPOzs7ZTtlO2dCOztlO2U7Z0IsUTs7O2dCLFU7Ozs7O2dCLEksc0I7O2dCLG1COzs7OzswQjtlO2dCLFU7Ozs7Z0IsVTs7OztnQjtlO2dCLEksb0I7OztlO2M7Ozs7Ozs7STs7Szs7STtLLE07SyxNO0s7SztJLEk7Ozs7O0s7O0k7Ozs7SSxzQjs7MEI7STtHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksTzs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixPLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksTzs2QztHOztJOzs7SyxNO0k7SSxPOzs7STtJO0k7STs7c0IsbUIsTyw2Qjs7O0c7O0k7STtJO0k7SSxnQixNO0ksTztHOztJOzs7OztJO0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJO0k7Rzs7O0k7STtJLE87OztJO0ksd0I7Rzs7STtJLHdCO0c7OztJO0k7Ozs7TztPLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTTtPLE87OzRCLE87OzZCLE87OztPLE87OztpQjtpQixPO2dCOzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TywwQjt1QyxPOzs7O0k7STtJO0k7O0c7Ozs7Ozs7STtJO0k7STtJLE87OztJO0ssa0IsTTtLLE87OztJLE87OzJCOzs7O0k7OztLLE87OztlO2U7ZTtlO2U7OytCOztlO2UsZ0IsTTtlLE87Ozs7O0ksTzs7MkI7Ozs7STtJO0k7STtJOzs7TztPO087TyxPO007O0k7SSxnQixNO0k7SSxPOzs7YztjLE87YTs7Rzs7SSxxQixNO0ksTzs7O0k7STtJO0k7O3NCLGtCLE8sNEI7O0ksZ0IsTTtJLE87Rzs7Ozs7O0k7STtJLE87OztJOzs7OztJO0k7STtJOzs7SztzQztLO0ssVTtLLE87OztJO0c7Ozs7Ozs7O0k7STtJO0k7Ozs7TztPO2lDOzs7eUIsTzs7MEI7OztVO1UsTzs7OztxQzs7OzRCOzs7TztPOztPOztPLHFCLE07TyxPOzs7TztPLFU7TztPLE87OztpQjtpQjs7aUM7O2lCLE87Z0I7OztPLHNCLE07TyxPOzs7TyxPOzs7aUI7aUI7aUIsTztnQjs7O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7OztJOzsyQixPOztPLHNDLE07TztPLE87O08sb0IsTTtPLE87ZTs7Ozs7Ozs7OztJO0k7STs7O087TztPLE87TTs7STtxQzs7OzhCOztPOzs7TztPLE87OztPOzs7VTs7OztXLE87OztVO1UsTzs7Ozs7USxPOztPOzs7OztRLE07TztPO087eUM7TyxPOzs7TztPLE87OztpQixrQixNO2lCLE87Z0I7Ozs7TztPLFU7TyxPOzs7TztPLFU7TyxPOztPLDBCLE07TyxPOzs7TztPLFU7TyxPOztPLHdCLE07TyxPOzs7Tzs7O1U7NkI7O1U7VSxPO1M7O08sVTtPLE87OztPO08sTzs7O087TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztnQzs7NEI7OztPO08sTzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O2dDOzs7TztPLE87Ozs7O0k7OztPO087TyxPO007O0k7Ozs7STtJO0ksTzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08sMEI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJO0ksd0I7Rzs7SSxZOztJO0ksTzs7Ozs7Ozs7STtJO0k7Ozs4Qjs7NkIsTzs7O087TyxPOzs7TztPLE87OztpQjtpQjtpQixPO2dCOzs7Z0MsTzt3Qzs7OztJOzs0QixPOzsyQjs7MkIsTzs7OEIsTzs7NkI7cUMsTzs7Ozs7Ozs7O0k7STs7O0ksTzs7Ozs7Ozs7STtJO0k7SSxPOzs7SSw4Qjs7OztPOzs7VTtVLE87Uzs7TyxPOzs7aUI7aUIsTztnQjs7OztPO08sTzs7O087TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OzhCOzs2QixPOzs7TztPLE87OztPO087TyxPOztrQyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7Ozs7O0k7STtJO0k7SSxPOzs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87OytCLE87OztPO087OztVO1UsTztTOztPLE87OztPO08sTzs7O2lCLGtCLE07aUIsTztnQjs7Ozs7Ozs7TztPOzs7VTtVLE87Uzs7TyxPOzs7TztPLFU7TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO3VDLE87Ozs7Ozs7OztJO0k7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7O087TyxVO08sTzs7TywyQixNO08sTzs7O087TyxVO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzs7Z0MsTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7SztLLFU7SyxPOzs7SSxPOzs7O0k7STs7O0s7SyxPOzs7SSxPOzs7STs7SyxPOzs7SSxPOzs7O0k7STs7OzRCLE87OztPO087OztPO087OztPO08sTzs7NkIsTztzQyxPOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7Ozs7O0k7STtJO0k7SSxPOzs0QixTO3lDLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7a0IsUzs7SSxnQyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7Ozs7SSxnQjs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEIsTyw0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SyxPO0k7OztJLE87NkM7Rzs7STs7OztLLE87SyxPO0ksVzs7O0k7SyxPO0ssTzs7O0ssTzs7OztLOztLLE87SztPOzt3Qjs7STs7Ozs7Ozs7Ozs7O0c7O0k7SyxVO0s7SztLLE87SyxXO0ssaUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SztLO0ssZ0I7STtHOztJO0ssVztLLGtCOztJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0ssWTtJOztPOzs7USxPO3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7Ozs7O1EsTzs7O1c7OzRCOzs7O087O1EsTztRLHNCOzs7Vzs7NEI7Ozs7Ozs2Qzs7Ozs7MEI7O0k7OztJO0ssVTtLO0ssVztLLGlCO0k7Rzs7STtLLFM7SztLLFU7SyxnQjtJO0c7O0k7SyxrQixPO0ssVzs7O0k7WTs7NkI7Ozs7STs7O0s7YTs7O2dCO2lCLFM7aUI7aUI7bUI7O29DOztpQjtpQjtpQixPO2lCLFM7aUIsZ0I7Z0I7Ozs7Ozs7Ozs7Ozs7STtZOzs2Qjs7OztJO0ssVTtLO0s7SyxPO0ssTztLLE87SztPOzt3Qjs7SyxXO0s7SyxPO0ssZTtLO0ssTztLO087O3dCOztLLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7STtLLFk7SztLO0ssTztLO087O3dCOztLO0ssTztLLHFCO0ssbUI7STs7Ozs7Ozs7Rzs7STtLLFk7SyxvQjtLLG1CO0k7Rzs7STtLLFU7SztLOztLOzs7O00sTztNLE87TTs7O1M7MkM7Ozs7Ozs7O0kscUI7STtHOztJO0ssVTtLLFU7SztLLE87STtLLDBCOzs7dUIsVzs7cUM7O1E7Ozs7UyxPO1E7OztJO0s7Tzs7d0I7O0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7VTt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7O1U7WTs7O2U7OztnQixPO2U7dUI7O3dDOzs7Yzs7VSxPO1UsTzs7OztTOzs7O1UsTzs4Qjs7O1M7OztVLE87VSxzQjs7O2E7OzhCOzs7OztTOztVLE87eUI7Ozs0Qzs7O1M7O1UsTztxQjs7OzZDOzs7Uzs7OztVLE87MEI7Ozs7O0kscUI7STtHOztJOzt1QixXOztPOzs7USxPO1EsTztPLFc7O08sZ0IsTztPLFc7ZTs7Ozt3QixxQjtJO0ssVTtLO0ssTztLO087O3dCOztLLFU7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7UyxROzs7NEM7OztROzs7UztXOzs7Ozs7OzhCOztlOzs7Z0IsUTtnQixTOztjLGE7Yzs7Ozs0Qzs7Uzs7Ozs7OztVLFE7VSxPO1UsVTtVO1k7OzZCOztVLGU7Ozs7OztROzs7UyxPO1MsTztTO1c7OzRCOzt3Qjs7O1E7Ozs7UyxPO1MsTzt3Qjs7O1E7OztTLE87UyxPO3dCOzs7UTs7UyxPO3dCOzs7UTs7OztTLE87UyxPOzs7O1E7OztTLE87MkI7OztROzs7O1M7Vzs7O2M7OztlOztjOzs7ZSxPO2M7YTs7UyxPOzs7OztZOzs7UTs7OztTO3lCOzs7UTs7Ozs7UyxPO1M7eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7Ozs7eUI7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1MsTzs7OztROzs7UyxPO1Msc0I7Ozs7WTs7NkI7Ozs7UTs7Ozs7O1MsTztTLE87Ozs7UTs7O1MsTzt5Qjs7Ozs7O3lCOzs7MEM7Ozs7Ozt5Qjs7Ozs7eUI7OztROzs7Ozs7UyxPO1MsTztTLE87OztZOzs7Ozs7Ozs7Ozs7O1E7OztTLE87eUI7O0kscUI7STtHOztJO0s7SztLLE87SSxvQjtJOztPOzt3Qjs7STtHOztJO0ssVTtLO0ssTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJO0ssVTtLLFU7Szs7O3dDOztPOzs7USxVOzs7Ozs7OztpQjs7Ozt5Qzs7MEM7OzswQzs7OzBDOzs7Tzs7USxPO3VCOzs7MEM7OzswQzs7OzBDOzs7OzsyQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OzRDOztJO0c7O0ksd0I7Rzs7SSxZO0k7Ozs7SyxPO0k7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxPOzs7O087OztRLE87USxzQjtRO1U7OzJCOzt1Qjs7OzRDOzs7Ozs7OztJLHFCO0k7Rzs7STs7NEIsVzs7O087OzJCLFc7OzhCLFc7OztPOzs2QixXOzs7O0k7SyxPO0ssTztLLE87OztJO3NDOzs7Ozs7Rzs7STtLLE87SyxPO0ssTzs7O0ksVztHOztJLDhCOzs7Tzs7O1E7VTs7O2E7YSxjO1k7O1E7VTs7O2E7YSxrQjtZOztPOztPLGtDLE07TyxXOztPOztRLE07USxNO087O087Ozs7USxPO08sVzs7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxNOzs7O087Ozs7USxNO1EsTTt1Qjs7Ozs7dUI7Ozs7O1E7OztTLE07UyxVO21COztROztTLE07bUI7Ozs7Ozs7dUI7O0kscUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SyxTO0s7OztPOzs7O1EsTTtRLE07Ozs7MkM7OztPOzs7Ozs7USxNO1EsTTtRO1U7OzBCOzs2Qjs7O087OztRLE07USxNO1E7VTs7MEI7O3NCOzs7Tzs7Ozs7USxVOzs7USxNO1EsTTs7Ozs7Vzs7MkI7Ozs7O087Ozs7OztRLE07USxNO3NCOzs7Tzs7O1EsTTtzQjs7SSxvQjtJO0c7O0k7SyxZO0ssWTtLOzs7Tzs7OztRLE07USxNOzs7OzRDOzs7Tzs7OztRLE07Z0M7OztPOzs7USxNO3lCOztJLHVCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFUsZ0M7Ozt5Qzs7Ozs7Ozs7eUM7Ozs7Ozs7Ozs4Qzs7O087Ozs7USxNOzJCOzs7MkM7O0kscUI7STtHOztJO0ssVztLLFc7Szs7Ozs7O1M7Ozs7VSxNO2lDOzs7Uzs7VSxNOzBCOzs7Uzs7OztVLE07VSxNOzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTtVLE07Ozs7Ozs7MEI7OztTOzs7O1UsTTs7Z0I7Ozs7Ozs4Qjs7OzBDOzs7Uzs7OztVLE07Ozs7OztJLHNCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFMsZ0M7O0s7Ozs7TSxNO00sTTs7O3NDO0ksb0I7STtHOztJLEksUyxnQzs7Szs7O00sTTs7O3dDO0ksb0I7STtHOztJOztLLFc7OztJLGdCOzs7SSxJLFMsZ0M7Ozs7Ozs7OzsyQjs7O087Ozs7OztROzs7O087Ozs7UTs7OztPOzs7USxNO3NCOzs7eUM7OzswQzs7SSxvQjtJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7OztJO0ssUztLLFM7SyxVO0ssZ0I7SztJO0c7d0IsUztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RztJO0k7Ozs7Ozs7Ozs7OztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLO007TTtROzt5QixpQzs7Ozs7O0s7Ozs7TTs7Ozs7O0s7OztROzs7Ozs7O1csRztZO1k7O1c7Ozs7Ozs7O1c7VztXOzs7VyxHO1k7WTs7Vzs7WTtZO1k7Ozs7WTtZO1k7WTtZOzs7O1k7WTtZO1k7WTs7VztXO21COztRLEc7UztTOztROzs7Ozs7O1M7OztRO1E7Ozs7O1csTztVO1E7USxRO1E7UTtROzs7O0s7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OzttQixPOztPLE87O0c7OzJCLDRCOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxNO0s7STs7Syx3QjtLOzhDO0k7OztLOzs7O0ssOEIsc0I7Syx3Qiw2Qjs7TTtNOzs7USwyQjs7OztPOztLOztNOztLO3FCOzttQzs7OztRLEksVTs7OztTLEksVTs7O2dDOzs7UyxPOzs7O2tCO1Esa0I7OztROzs7UztROztROzs7UztTOztTOzs7O1U7VTs7Ozs7Uzs7UTtROztROztTO1c7OzJCOztROzs0Qjs7UTs7O1M7aUMsa0M7Uzs7O1MsSSxXOzs7Z0M7OztTOztROztRLDBCLFU7c0I7O1E7a0M7Ozs7Szt3QztJOztLLGlCO0s7STs7O007TTtLO0ssNkI7Szs7eUI7O1Esa0M7UTs7dUM7OztRLFc7OzRCOzs7UTs7eUI7bUM7O0k7STs7SztPO3VDOztLO087dUM7O0s7TTtNO007Ozs7Ozs7O0k7O0s7Szs7b0M7OztTOztTOztTOztTOzs7O2lCOzs7STs7Szs7Ozs7O087O1E7Tzs7a0I7O3NCO0s7STs7SztNO007TTs7Ozs7OztNO0s7OztJO0k7O21DLFM7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJOzt5QixPOzsyQixPOzt5QixPOzt5QixPOzswQixPOzsyQixPOzsyQixPO21DLE87Ozs7STs7Tzs7eUIsTzs7MkIsTzs7O08sTzs7OEI7Ozs7TyxPOzs4Qjs7Ozs7O0k7SSxJOzs7Ozs7O0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7MEIsTyxtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7eUIsVzs7MkIsVzs7eUIsVzs7O08scUI7OzBCLFc7OzJCLFc7OzJCLFc7OzJCLFc7O0c7RzswQixPLCtCOztJLFM7SSxPOztpQyxPLDJCOzs7YztjOzs7ZTtnQixNOztlLFk7ZTtnQjtnQjtpQixJOzs7Ozs7OztjO2E7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7STs7SyxVO0s7Ozs7O1E7Ozt5Qjs7O1EsaUI7O1M7VTtVOzthLDJCO2E7YyxJLGlCOzs7cUM7Ozs7OzsyRDs7YyxhOzs7Ozs7O1k7VTs7YSxZOzs7Yzs7YTtZOzs7Ozs7Yzs7OztjOztlLEs7Yzs7YTs7YzthLE87O3FDLDhCOzs7OzthOzs7YzthLE87O3FDLDhCOzs7O1M7Ozs7O2E7Ozs7YzthO2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthOzs7Yzs7O2lCOzs7O2lCOzs7O2lCOzs7b0I7OztvQixxQzs7Ozs7O29COzs7O3VCOzBCO3FCO3FCOztvQjttQjs7Ozs7aUI7OztpQjs7O2tCO2lCOzs7aUI7OztrQjtpQjs7OztpQjs7O29COzs7cUI7b0I7bUI7Ozs7O2lCOzs7OztpQjs7O2EsTztZOzs7Ozs7OzthO2E7O2M7O2EsTztZOzthO2E7OztnQjs7OztnQjs7OzttQjs7OztzQjs4Qjs7Ozs7OztnQjs7O2EsTztZOzs7O2E7OztjOzs7aUI7Ozs7aUI7OztvQjs7O3FCOzs7O3dCOzJCOzs7Ozs7OztvQjttQjs7OzthOzs7Z0I7Z0I7aUI7OztvQjs7O29COztnQjtlOzthLE87WTs7Ozs7YTs7Ozs7YTthLE87WTs7O2E7Ozs7Ozs7O2dCOzs7Ozs7aUI7Ozs7Ozs7OztnQjs7O2EsTztZOzs7YTs7Ozs7Ozs7Z0I7Ozs7OztpQjs7Ozs7YSxPO1k7O2E7OztjOzs7aUI7Ozs7aUI7Ozs7Ozs7aUI7Ozs7aUI7OzthLE87WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7Ozs7O21DOzs7Ozs7bUI7Ozs7OzttQjs7OztRLHNCO1E7UyxPO1E7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOztpQzs7ZTs7Z0IsZTtlLE87O3dDLG9CLG9COzs7ZTs7Z0IsTTtnQixVOzs7aUM7O2lDOztpQzs7aUM7O2lDOztpQzs7a0M7O21DO3lDOztXOztRO1M7VztTLE07UyxNOzs7Yzs7UyxNO1MsTTtTLE07O1MsTTs7Uzs7WTs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTztPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CLE8sOEI7Rzs7STtJLE8sd0MsZTtHOztJLE87OztjO2M7ZTs7Z0I7Ozs7YzthOztHOztJLFU7SSxPO0c7O0k7STtLO0ssTztJOztLO0s7SyxPO0k7O0s7Ozs7O1M7O1UsWTtVLG9CO1M7VTtXLE87Vzs7Ozs7Ozs7O1M7Ozs7O1U7Ozs7VTs7Ozs7Uzs7Ozs7O2E7OztZOzs7Ozs0Qjs7MkI7O1M7OztVO1UsTTtTOzs7SztLLE87STs7SyxjO0s7SyxPO0k7O0ssa0I7Ozs7Ozs7O1k7VztRO1M7MkMscUI7Ozs7UTs7OzRCO1E7O3dCOzs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0M7OztJO0k7OztPO08sTzs7O087OztVOzs2QixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPO3VDLE87Ozs7TyxPO2U7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztVOztJO0c7O0k7STs7OzZCLFc7Ozs7USxzQztROzs7Ozs7Szs7Rzs7O0ksZ0I7OztJLFk7Ozs7Ozs7Tzs7O1E7OztPOzs7OztLLFk7SztLO0k7STtJO0c7O0k7O3lCLFc7O3lCOzt1RDs7eUI7OzJCLFc7OzJCLFc7OztPLFc7O0c7O0k7STtHOztJLFc7SSxPO0c7O0ksbUIsTztJLE87Rzs7STtLLE07SyxROzs7Rzs7STtLLE07SyxRO0ssTztJLE87O0c7O0ksSSxNLG1DOzs7Ozs7bUI7OztPOzs7USxPOzZCOzs7cUM7O087OztRLE87K0I7Ozt3Qzs7O3NDOztxQzs7Tzs7USxPO21COzs7c0M7O3FDOzs7Ozs7Vzs7O2M7YyxPO2E7Ozs7Ozs7O1c7OztjO2MsTzthOzs7O3dDOzs7O0ksTztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOzs7SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztLLFc7Szs7UTs7O1c7Ozs7WSxPO1ksTztXLFc7VTs7Szs7UTs7eUI7O0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLO0s7O1E7O3lCOztJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7VzthOzs7Z0I7Z0IsVztlOzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2dCOzs7aUIsTztnQjtlOzs7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7OztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7dUI7O1M7Ozs7O1UsTztVLFU7Ozs7Ozs7Ozs7OEI7OztjOzs7ZSxPO2UsTzs4Qjs7Ozs7Ozs7Ozs7OztRO1M7Vzs7O2M7Ozs7ZTs7O2dCOzs7YztlLFE7ZSxPO2UsZ0I7ZTtpQjs7K0IseUI7O2U7YzthOzs7OztROzs7UztXOzs7YztjLFc7O2Msc0I7YTs7O29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzJCOzs7UTs7O1M7Vzs7O2M7aUM7O2Msb0I7YTs7O1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87MkI7Ozs7UTs7OzttQjs7O1c7O1ksTzttQjs7O1c7O1ksTzttQjs7d0I7Ozs7O1E7OztTLE87Ozs7UTs7O1MsTzs7Ozs7Ozs7WTs7O2U7OztnQixPO2U7Yzs7OztROzs7O1MsTzs2Qjs7O1E7OztTLE87cUI7OzswQzs7OzJDOzs7dUM7Ozs7cUI7OztROzs7O1M7UztrQzs7O1MsUTtTLE87UyxTO1MsUzs7OztROztTO1MsTzs7Ozs7cUI7OztROzs7UyxPO3FCOztJLFc7SSxPOzs7Yzs7OztlLFE7ZSxVO2M7Ozs7b0M7OztpQjs7O2tCLE87a0IsTzs7K0I7OztpQjs7a0IsTztvQzs7Ozs7OEI7O2MsTzs7Ozs7Rzs7STs7SyxXO0ssVztLO0k7Rzs7STs7Tzs7O1U7VSxjO1M7O0k7Rzs7STtLLE07SyxRO0s7O0ssTztLLE87SSxPOztHOztJLGtCLE87SSxPO0c7O0ksSSxNLG1DOzs7b0M7O087OztRLE87NkI7OztPOztRLE87bUI7Ozt3Qzs7O3NDOztxQzs7cUM7O087O1EsTzttQjs7O3NDOzt3Qzs7O3NDOzt3Qzs7O087O1EsTztvQjs7O087O1EsTztvQjs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0s7SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SSxPO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtLLE07SyxRO0ssTztLO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Rzs7STtJLHNCO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZOztJLGlCOzs7STtLLE07SyxRO0s7Ozs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxPO21COzs7d0M7Ozs7SSxPO0c7OztJOztPLG9CLE07Tzs7TyxvQjtPOztPLG1CLFE7Tzs7TyxzQixNO087O08sc0I7Tzs7TyxxQixRO087Ozs7STtLLE07SyxRO0s7OztLLE87Ozs7Ozs7cUM7O087OztRLE07Ozs7Tzs7O1EsTTttQjs7OzBDOzs7OztRLE07Tzs7USxNO21COzs4Qzs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7TyxNOzt3Qzs7O087Ozs7USxNOzZCOzs7Tzs7O1E7VTs7O2E7YSxXOzthLHNCO1k7OzttQjs7O087Ozs7USxNO1EsTTs2Qjs7Ozs7OztTOzs7VSxNO1UsTTs7Ozs7O1MsTTtROztTLE07bUI7Ozs7O087OztRLE07bUI7O0ksTztHOztJO0ssTTtLLFE7Szs7O087OztRLE07USxNOzs7O3NDOztPOzs7O1EsTTswQjs7O087OztRLE07bUI7O0ksTztHOztJOztLLE07SyxNO0ksVztHOztJO0ssTTtLLFE7Szs7O3FDOztPOzs7Ozs7USxNO3VCOzs7Tzs7Ozs7O1EsTTs7a0I7OztPOzs7O1EsTTt1Qjs7OztJLE87Rzs7STtLLE07SyxRO0s7Ozs7Ozs7O1E7Ozs7UyxNOzJCOzs7UTs7UyxNO29COzs7UTs7O1MsTTtTLE07Ozs7UTs7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7Ozs7O29COzs7UTs7OztTLE07b0I7OztROzs7UztXOzt5QixPLGtDOzs0Qjs7O3dDOzs7Ozs7Z0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7Ozs7Ozs7Ozs7Ozs7O3lDOzs7OztLO3lEO0s7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7O1E7VTs7d0IsTyxrQzs7d0I7Ozs7Ozs7cUM7Ozs7O3dDOzs7Ozs7Ozt3Qzs7UTs7O1M7O3lDOzs7O087OztRLE07dUI7OztPOztRO21COzs7O0ksTztHOzZCLFM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLE87Ozs7Ozs7MkI7OzhCLE87O2U7ZTs7Ozs7Rzs7cUIsTyx5QztJLDBCO0k7OztPLE87OztpQjs7OztpQjs7Ozs7TyxPOztPOzs7O1E7O08sTzs7O08sTzs7Rzs7O0ksTzs7O0k7Ozs7SyxPO0ksTzs7OztJLFc7SSxTO0k7SyxPO0ssTztLLE87SSxPO0c7O0k7Ozs7USxnQjtvQixXOzs7OztRLFc7O1Esa0M7Ozs7O1Esa0I7O1MsVzs7OztHOztJLE87K0MscUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0I7SSxvQixTO0k7Rzs7Ozs7Ozs7OztVO1csTztXO3dCOzs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7Uzs7Ozs7WTs7YTs7OzRCOztZOztZOzs7Ozs7OztZOzs7YTs7Ozs7O2EsVTs7Ozs7Ozs7O2E7YyxXOzs7YyxjOzs7WTs7Ozs7Ozs7Ozs7Ozs7OztxQjtlOzs7Ozs7Ozs7OztvQjtjOzs7Ozs7OztlOztnQjs7O2dCOzs7Z0I7Ozs7ZTs7Ozs7O2E7O1k7YTs7O2E7OzthOzs7O1k7Ozs7Ozs7O1UsRyxnQztVLFc7VTs7O1c7WSxPO1ksTztZLE87bUI7VTs7UyxJLFc7Ozs7Ozs7WTs7Ozs7UztzRDtTOztVOzs7Ozs7Ozs7Ozs7d0I7O1M7OztPOztRLE87USxPO1E7OzJCO087UTtRO087OztLO007TTtNO0s7Ozs7STs7TTs7Ozs7TyxTO087Ozs7OztNO087OztNOzs7c0I7STtHOztJOzs7TSxXO0ssb0IsTztLLFc7O2dCO0k7O0ssUTtLLE87SSxXO0c7OztJOztLLDRDOztJLGE7STtHOztJO0ssTztLLFU7O087OztXOzs7WTs7VztXO1U7Ozs7Ozs7Ozs7OztLOzs7O1E7Ozs7O007Tzs7O08sTTs7Ozs7Ozs7STtLO087OztVOzs7a0I7VztVO1M7Ozs7Ozs7Ozs7O0s7OztNOzs7Ozs7O08sRzs7Ozs7WTs7Ozs7Ozs7Ozs7SyxJLFU7Ozs7Ozs7Ozs7Szs7d0I7O3dCOzt3Qjs7OztLOzs7OztJO0ssTztLOzs7Ozs7Ozs7OztLOzs7Ozs7O2tCOzs7TTs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztVO1k7OzhCLHFCOztVOzs7Ozs7UztVLGM7Ozs7Ozs7Ozs7Uzs7OztVOzs7VTtVLGM7Ozs7Ozs7Ozs7Uzs7OztVO1UsTztVO1k7Ozs7Ozs7UztVO1U7WTs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1UsZTtVLE87Uzs7Ozs7Ozs7UztTLDBCO1M7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLFk7O2E7Ozs7VTs7VzthO1c7Ozs7Ozs7OzthLE07Ozs7ZTs7NkIsdUI7Ozs7Ozs7Ozs7OztTO1U7Ozs7Ozs7Ozs7Uzs7OztVLE87Uzs7Ozs7Ozs7UztVLFU7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OztTOzs7O1M7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFU7VSxXOzs7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFE7VSxTOztVO1U7WTs7Ozs7Ozs7SyxNOzs7STtLOztNOzs7O0k7Ozs7STtLOzs7Ozs7Ozs7Ozs7O0ssTztLLE87OztJO1k7Ozs7Ozs7STtJOzs7SztNOztJOzs7Ozs7Tzs7O0s7Ozs7Ozs7OztLOzs7OzBDOztJO0c7O0k7STs7Ozs7Ozs7SyxzQjtLOztHO0c7STtJOztJO0s7Szs7O0ksTzthLDRDOztHOztJO3VCOztJO0c7Ozs7Ozs7Ozs7O0k7Ozs7SztpQixNOztLOzs7TTtNLE07Szs7STtLLFE7SyxTO0s7SSxNOztHOzs7O0k7O0s7OztTOzs7Ozs7O3lDO0ksd0I7SSxNO0c7RyxJOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STtJOzs7Ozs7O1U7Ozs7VyxRO1c7Ozs7VTs7Ozs7UTs7OztTOzs7Ozs7Ozs7VTs7O1csTTtXLE07VTs7OztLOztHOzs7STtLO007O0s7STtJOztLLFM7SyxTO0s7SztJLE87O0c7STs7Ozs7OztJOztPOztPOztPOzs7UTtRO3FDLFk7Ozs7Uzs7O1UsTTtVLE07UyxHLHdDOztrQjs7TztlOztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Yzs7O2lCO2tCLFE7a0IsUTtpQixPO2dCOztZLFE7Vzs7Ozs7O1M7OztVLFE7VSxRO1U7VSxNO1UsTTtTOzs7Ozs7Ozs7OztLOztJO0ssTTtLLE07STtHOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7O0s7O0k7O0ssUztLLFc7SztLO0ksTztHOztJOzs7Szs7O0ksTTtHOztJOzZDOztJLE07Rzs7STs7OzZDOztJLE07Rzs7STs7dUI7OztLLE07O0ksTTs7Rzs7O0k7Ozs7O007OztLO00sTTs7O2dEOztJLE07Rzs7STs7SyxNOzs7STtHOztJO3VCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TTs7O087Ozs7cUI7OztRLE07Tzs7O1EsbUI7Ozs7OztJLE07Rzs7SSxZLE87Ozs7O08sTzs7OztPLE87Ozs7Ozs7OztPLG9DO08sTzs7O08sc0M7TyxPOzs7OztJO0ssTztJOzs7STs7OztRLGdDO1EsTzs7O1Esb0M7USxPOzs7SSxPOzs7SSxZOztnQjs7SSxPO0c7O0ksYztJO007eUMsOEI7SztNO00sTztLLE87O0ksVztJLE87Rzs7SSxjO0k7TTt5Qyw4QjtLO007TSxPO0ssTzs7SSxXO0ksTztHOztJLDhCOzs7TyxzQzs7Ozs7Ozs7OzsyQjs7Ozs7OztPOzs7UTs7YTs7Ozs7ZSxNOztHOztJOzs7OzttQjs7O007OztPOztZOzs7Ozs7SyxvQjs7Ozs7O0k7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7OztJO0ksTztHOztJOzs7SyxPOztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7VyxxQzs7Ozs7Ozs7OztXLG9DOzs7Ozs7Ozs7UyxlLFU7dUIsTTs7Ozs7TSxNOzs7Ozs0QixPOzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPOztjO0c7OztJO0k7OztJLFc7SSxPO0c7O0ksTztHO2lDLG1COztJOzs7OztLOztJO0c7O0k7Z0I7O0k7Rzs7SSxxQyxPOztJLE87OztJO2dCLE87O0ksK0M7STs7OztLO0ksTztHOztJO2dCLE87O0k7Rzs7STtnQixPOzs7Szs7O007TSxPO0ssTzs7Ozs7O00sTzs7STtHOztJOztLOztNOztNO0ssTzs7OztPO087O1E7O087Ozs7UTtPLE87O08sTztlLE87O0c7O0k7Ozs7UTtROztRLE87Z0IsTzs7O0kscUIsTyxnQztHOztJO3dDO0k7Rzs7O0s7OztNLE87TSxNO007TSxPO0ssTzs7Ozs7Ozs7O0k7SztPLDJDO0ssUyxXO0ksTztHOzs7Szs7UTs7Ozs7SztJO0k7Rzs7STtLLGE7Ozs7TTs7Ozs7OzthOzs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7OztRLE87O1EsTTs7SSxPO0c7O0k7OztLO0s7Tzs7Ozt5QixtRDs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7O007UTs7OzswQixPLDRDO0s7YTs7Ozs7aUI7OztLOztNOzs7O0k7O0s7SSxPOzs4Qix5Qzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7STtLLE87SztPOzs7MEIsTyxzQjtJLE87Rzs7STs7Tzs7UTtROztRLE87USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7O1EsSztRLEs7UTtRLE87TyxPOzs7Ozs7Ozs7OztHOztJO0ssUTs7OztLLE87SyxPO0ksTzs7Ozs7Ozs7Yzs7O0c7O0k7OztLLE87O0ssTztJLE87Ozs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7Ozs7OztHOztJO0ssTztJLGlCLE87SSxXO0c7OztJOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztLO0s7STtLLE87Ozs7STs7Rzs7STs7Ozs7STs7TyxxQjttQjs7TyxXOzs7Tzs7Ozs7UTs7O087USxPOzs7O087OztPOztRLE87USxVO087OztPO1EsTzs7OztPOzs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87OztJLE87Ozs7O2M7O2U7ZTtnQixVOzs7Z0I7O2dCLE87Z0IsTztnQixPO2UsTzs7O2UsTTs7Yzs7O2lCOztpQjs7a0I7Ozs7O3VCOzs7d0IsTzs7d0IsTzt1QixPOzs7O2tCO2tCOzs7OztxQixNOzs7b0I7Ozs7bUQ7Ozs7b0I7O3FCLGU7b0I7Ozs7Ozs7O29COztxQixlO29COzs7Ozs7OztvQjs7Ozs7Ozs7OztpQjs7Ozs7Ozs7YTtHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO08sTzs7Ozs7K0I7O0c7O0k7O08sc0I7TyxPOzs2Qjs7TyxnQzs7Ozs7O1U7O1c7MEI7Ozs7MEM7O087TyxPOzs7Z0Q7Tzs7UTtRO1E7TyxPOzs7OzsrQjs7Rzs7O0k7SSxPOzs7OztjOztpQjs7a0I7b0I7Ozs7Ozs7Ozs7Ozs7OztvQjs7cUI7cUI7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0I7NkI7OztpQixtQjs7a0IsTTs7Ozs2Qjs7YyxhOzJCLHNCOztlLE87Ozt5QyxPLHNCOzs7YztjO2E7OztJLE87OztjO2U7O2dCO2dCLFc7ZSxXOzs4Qzs7Ozs7OztjO3NCOzs7Ozt5Qjs7O29DO3lCOzs7Ozs7NkIsaUI7NkIsTzs7Ozs0Qix1Qzs7OztxQzs0Qjs2Qjs2Qjs2QjsrQjs7Ozs7Z0Q7NEIsTzs7Ozt5Qjs7NEI7OzhDLGlDOzt5QjswQjs7OzhCOytCLE87OytCOztnQyxPOytCLE87OzhCOzsrQixPOzhCLE87OzZCOzJCOzs4QixlOzs4Qjs2QjsyQjsyQjsyQjsyQixNOzBCLE87Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7O3lCLE87d0I7YTtHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0k7SSxPO0c7RztJO0k7STs7O0k7TTs7d0Isa0IseUI7OztJLE07RztHO0k7Ozs7Ozs7STs7O0c7O0k7Rzs7STtLLE07O0s7O0c7O0ksNEIsSztJLE87OztjOzs7YTs7Rzs7SSxPOzs7YyxxQjthOztHOztJLE87OztjLFk7OztrQjtnQjtnQjs7O2M7YTs7O0c7O0k7TTs7d0Isa0IsTyw0Qjs7STs7TztTOzs7WTs7O2EsSTthLFE7OztnQjtjO2M7OztZLE07O1c7O0k7Szs7TTtRLDJDO0s7O0ksTztHOztJO0k7TTs7O1MsWTs7O1UsTzs7UyxNO1E7O0k7Rzs7O0k7Ozs7OztJO0s7TSxJO007O1MsTztRO1k7Ozs7Ozs7SyxXO0ssTzs7Rzs7STtLLE07O0s7O0c7O0ksZTtJO0ssTTs7Ozs7SSxTO0k7STtHOztJLGlEO0k7OztPOzs7OztPO1EsSSxJLDZCLE87USxJLG1DLEk7b0I7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO1U7VztZOztlOzs2QjtjO1k7YztXLE07Ozs7O3dCOzs7VSxTOztVOzs7Ozs7TztNOzs7STtLLE87OztlO2UsSSxXLG9DOzs7Ozs7O2dCLE07OztjO29COztHO0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087Ozs7aUMscUM7O0ksUTs7STtLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLO0sscUI7O0c7O0ksTzs7Ozs7YyxtQjs7ZTtlOzs7ZSxNOzs7ZSxnQjtlLE07OztjO2UsTTtjO2M7YzthO0c7RztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7OztjO2E7Ozs7O0s7STtJOzs7O00sTTtLO0s7Ozs7OztRLGdCO1EsTTs7TyxJLEk7Ozs7UTtROzs7Tzs7Tzs7OztRO1E7UTtRO1U7YTs7USxPO087OztPLE87USxNO087UTtVOzswQjs7UTs7VywyQyxlO1EsTztPOztPOzs7USxVOzs7OztROzs7OzthLDRDLFM7Ozs7OztPO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxTO1E7Ozs7O2dCOzs7O08sVztPOzs7VTtVO1csVztXOzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxTO087O087OztRLFk7OztXO1ksVztZLEs7YSxJOzs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Ozs7Ozs7WTthOztjO2MsUTs7Ozs7O2E7YyxJO2MsVTs7Ozs7O2tCLE07Ozs7O2lCLHFCLFU7Ozs7Ozs7a0IsRzttQixNOzs7a0I7bUIsYzs7Ozs7O29CLE07OzttQjs7Ozs7O2EsTTs7O1k7OzthO2U7Ozs7O2tCOzs7OzsyQjtpQjthO1k7OztXOztRLGdCO1E7VTs7K0IsMEI7OztRLG1DO1E7VTs7O2E7YSxPO1k7OztPLG1DOztPOzs7USxVOzs7UTtRO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxPO1EsVTs7O1EsTztPOzs7VTtVLEksVyx3Qzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxPO1EsVTs7a0M7UTtROztPLE07OztPO1E7UztTO1EsSTs7OztTLGtCLFE7UyxNOzs7Ozs7OztRO1M7Vzs7O2M7YztjO2MsSTs7Ozs7ZSxrQixRO2UsTTs7O2M7YTs7YztjLE87YTs7O1MsTTtTLEs7UyxVOzs7Ozs7YTs7Ozs7O2E7Ozs7Ozs7Tzs7Tzs7OztRO1E7O1c7WTtZO2tCO1csTztVO1EsVTs7O1csUTtXO1k7YSxROzs7WTthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTtRO1E7UTtVOzs7YTs7YztjOzs7O2U7O2dCO2dCO2dCLFU7Ozs7Ozs7Ozs7OztlOzZCOztlO2dCLE87Z0IsVTs7Ozs7O29CLE07Ozs7OzttQixHO29CLFM7b0I7Ozt1Qjs7O3dCOzt5QixLOzBCLFk7O3FEOzs7MEIsTTs7Ozs7O3VCO3NCOzs7Ozs7O2UsTTs7Ozs7Yzs7aUI7Ozs7O29CLE87Ozs4Qjs7O21COzs7ZTs7Z0IsSztpQjtrQjtvQjtxRCxjO3NCOzs7OzsyQjs7O2dCLE07OztvQzs7d0I7O2M7OzthOzs7UTtVOztrQyxpQjs7O1EsVztPOztROzs7VyxlOztZLE07O1c7VTs7O087Ozs7VyxPOztVO1E7UTtVO2E7OztPLEksNEIsTztPOztPOzs7USxTLHdDLFk7UTtVOzs7NkIsb0IsNEI7O2E7K0IsOEM7YTs7MEI7YTs7Z0I7O2tDLG1DOzthO1k7OztRO1E7UTtVOzt3QixPLCtCOztRLE87UTtPO087O087Ozs7UTtRO1U7OzthO2EsRztjLE07O2EsTztZOztRLE07UTs7NEIsTyx3QztRO1U7OzthO2E7WTs7UTs7O2E7O1EsUztROzs7Vzs7O2M7YzthOztRLFE7Tzs7Tzs7O1EsVTs7O1E7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7TTtROzs7Vyx3QixROzs7WSxjOztXO1U7O007O1M7SztLLE87O0ksTztHOzJDO0c7O0k7SSxPO0c7O0k7STs7SztJO0k7STtHOztJOztJO0s7Tzs7OztVO1U7VTtTO0s7STtJOzs7O0ssTztLLE87STtHOztJO0k7SztPOzs7MEIsb0IsNEI7O1U7VTtVO1U7Uzs7O0ksZ0I7Rzs7STs7Szs7O00sUyx3QyxZO007UTs7OzJCLG9CLDRCOztXO1c7WTtZO1c7VTs7O0s7Szs7SSxPOzs7O2M7YzthO0c7O0ksTztHOztJOztlO2U7Ozs7TyxPOzs7Ozs7OztpQixPO2dCOztPLGtCLE07TyxPOztPOzs7O1EsTTtPLE87OztPLHVCLE07TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7Tzs7USxNOzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOzs7UTs7VyxPO1U7TyxPOzs7OztpQjtpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7TyxxQixPO087TyxZOzs7OztTLE87Ozs7bUIsVztrQjs7O087O087OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7USxPO087TyxHO1E7ZTtROztRLFc7UTs7TyxPOztPLG9CLE87TyxPOzs7TyxPOzs7OztpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7O08sTzs7Ozs7aUIsWSxPO2lCOztrQixPO2lCLE87Z0I7OztPLHFCLE87TyxPOzs7Rzs7O007O087ZTs7OztvQzs7O3FDOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsa0M7O0k7O3FCLE87O3VCLE87O3FCLE87O3FCLE87O3VCLE87O3VCLE87K0IsTzs7Rzs7STs7Szs7O007O0s7TSxPO0s7O1EsTzs7USxPOztRLE87Ozs7O0ssTzs7O08sb0IsTztPLE87OztPLE87OztPLG9CO08sTzs7O08sTzs7OztxQzs7Ozs7OztRLE87OztPOzs7O1E7Ozs7O1MsTzs7Ozs7Ozs7Ozs7USxPOzs7OztzQzs7OztRLE87Ozs7O3NDOztPO1E7VTs7d0IsbUM7O1EsTztPLE87Ozs7OztxQzs7OztxQixPOztPLE87O087O1E7VTs7NEIsK0M7O08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksTzs7Ozs7OztnQzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7STs7O08sTztNOztJLE87Rzs7STtXO0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7STs7c0IsaUQ7O0ksTyw0QyxhO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7UTtVOzs0QixvQixXOztRO1U7OzRCLG9CLFc7Ozs7OzswQjs7Ozs7Ozs7Ozs7Ozs7OztVO1csTTtXLFE7bUY7VSxNO1M7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozt5Qjs7Tzs7eUIsTzs7K0I7aUM7O0c7O3NCLHlDO0k7Ozs7OztROztTOzs7Ozs7OztROztTO1c7OztjO2M7YTs7Ozs7UTs7OztTOzs7OztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7Ozs7Ozs7SSxtQjs7O0k7RztHOzs7Ozs7O0ksTTtJO21COztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7UTs7O1c7a0Q7VztVOzs7Ozs0Qjs7O0ksTzs7NEI7O0c7O0ksTzs7NkIsd0IsWTs7Rzs7SSxXO2lCO0c7O0k7OztLOztJO0c7O0k7Ozs7O1EsTzs7Ozs7O1EsZSxPO1EsTywyQjs7OztJLE87Rzs7STtJOzs7Ozs7USxJLHVCOzs7Ozs7USxJLG9COzs7Ozs7USxJLG9COzs7Ozs7OztPLEksdUI7Ozs7Ozs7OztPLFc7TyxXOztNOzs7TztPOzs7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUI7Ozs7Ozs7Ozs7Ozs7O2lCLG1DO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7MEI7O0s7OztPLGtCLE87O087OzttQjtLO0k7O0s7Szs7O1E7Ozs7O1M7USxXOzs7Ozs7c0I7TTs7STtJOzswQiwyQztHOzs7O0k7Ozs7Ozs7OztJO0s7O087O1U7SyxPO0ssUTt5RTtJLE07Rzs7STs7Ozs7Ozs7Ozs7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7OztxRDs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07UztRLE87OztrQjtrQjttQjs7c0I7Ozt5Qjs7d0I7Ozs7Ozs7OztrQjtpQjs7O0k7Rzs7SSxZLGtDOzs7Ozs7O2tCO00sNEM7Ozs7Ozs7VTs7VztXO2E7OztnQixPOztzQywrQjs7OztlOzs7Vzs7Ozs7O2tCOztNOzs7STtHOztJLFM7WSxPO0k7Ozs7Szs7O0k7Rzs7STs7OztROztTOzs7UTs7UTs7OztTOzs7UTs7Ozs7VSxNOzs7OztROztROzs7Uzs7Ozs7UTs7O21COzs7c0I7c0I7O2dDOztzQjtxQjs7Ozs7Ozs7UTs7Uzs7O1M7UTs7Z0IsTzs7UTs7Z0IsTzs7STtHOzJCLDRCO3lDLDRCOzs7SztLO007TyxPO08sTzs7Tzs7OztROzs7OztNLE87O2U7Ozs7OztJO0k7Rzs7SSxZOzs7SyxNOztJLDhCLDBCO0k7Rzs7O0s7SztvQjs7Ozs7Ozs7TTtPO087ZTs7Ozs7O0k7STtHOzs7SyxVO0s7STs7SyxZOztLOzs7OztLLE87OztlO2U7Yzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7OztNO0s7TTs7Ozs7Szs7OztJO0ssWTtLO087SztPO1M7OztZO1ksa0I7Vzs7STtHO0c7STs7STtNOzs7UyxtQjtTLHVDOztVO1csTTs7eUIsVzs7VTtTOztxQixXOztTO1E7Ozs7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7O1U7WTs7O2Usa0I7bUY7ZSxNO2M7O1UsTTtTLGdCO1UsVztVLE87OztvQjs7O3FCLFE7Ozs7cUIsTzs7b0I7bUI7OztTLFc7UyxXO1MsVztTLE87OzttQjs7O2lDOzs7NkI7a0I7Ozs7O007OztNLE07O0k7Rzs7STs7Ozs7O0ssTztJO2dCOzs7Ozs7Rzs7STtLLE07O21CO0ksbUI7STtHOztJLFk7O0s7TTtPLE87TyxVOzs7Tzs7cUIsbUI7Ozs7O007Ozs7OztNLGM7Ozs7VTs7VzthOzs7Z0IsVztlOztVOzs7VTtnQjs7O2EseUMsYTs7VTtVLE87O2tDOzs7TTs7O0k7Rzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7O0ssUTs7Ozs7O08scUIsVTs7cUI7Ozs7bUI7O0k7SyxpQjtLO087OztVLFc7Uzs7SztPOzt5Qiw4Qjs7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7TTtROzs7Vzs2RTtXLE87VTs7TTtNLFM7SyxnQixNO0s7Yzs7K0I7OztJO0c7O0k7SztPOzt5QixrQixPLHVCOzs7STtLLEs7O00sZ0I7O0ssVTs7O0c7O0k7STs7Ozs7Ozs7Ozs7OztVLG9COzs7Ozs7VTttQjs7cUMsa0IsUzs7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTtPLE87OztpQjs7O2tCOzRCO2lCO2lCLHdCO2dCOzs7Ozs7OztPOzs7O1E7TyxTO087Ozs7OztRLG9COztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztROzs7Ozs7Rzs7SSxVO2E7STs7O0ssTztLLE87O0s7Syx3QztLO007OztTO1MsTztnRCxrQjtRO007Ozs7Ozs7O1M7O1k7OztlO2UscUI7ZTtnQjtnQjs7eUI7Z0IsTTtlLE87O3VDOztjOztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksTzs7NEI7O0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNOzs7VTs7OztZOzs7VTtTOztNOzs7OztNOzs7O087TSxTO007Ozs7TTtPO08sVTs7O087TyxPO087Ozs7O0c7O0k7SyxXO0ssTzs7O2U7ZTtJOzs7SyxPO0ksTzthOzs7Z0I7aUI7O2tCO2lCLE87O3dDLHFCOzs7Z0I7OztnQixPOzs7MEIsVzswQixPO3lCOztlOztHOztJO0ksd0M7STtLO0s7OztLOzs7O1M7Ozs7VztZLE07Vyx1Qjs7O2EsTTs7Ozs7WTthO29COzs7Ozs7O1UsVzs7UztTOzs7Vyx1Qjs7Ozs7O2dCO2lCOzs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COztzQzs7Ozs7a0I7bUI7cUI7Ozt3QixrQjs7OzhEOzt3QixNOzt1Qjs7bUIsTzs7Ozs7Ozs7eUM7a0I7Ozs7Ozs7bUI7O29COztzQixNO3FCLFM7cUIsSzs7OztvQixJOzs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7O3dCO3dCO29DO3VCOztzQzs7Ozs7Ozs7O3dCOzs7OzBCLE87Ozt3QixNOzt1QjttQyxlLDRCOzttQyxjOzs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsa0I7eUY7cUIsTTs7b0I7Ozs7bUI7bUI7a0I7Z0IsTTtnQixPO2dCO2tCOzs7cUI7cUIsRyx3QztxQixZO21EOzs7c0I7OztxQjtvQjs7Ozs7Ozs7bUI7OztzQjtxQjs7Ozs7ZSxHOzs7O2dCO2lCLEs7aUIsWTs7Ozs7Ozs7ZTtnQjtrQjs7O3FCLGtCO3lGO3FCLE07O29COzs7ZTtnQixLO2dCOzs7Ozs7bUM7Ozs7Ozs7Ozs7NkIsTzs7O1MsTzs7aUMsc0I7O1E7TTtROzsrQix1Qjs7TSxPO00sTztLLE87Yzs7O2lCLFk7Ozs7O2lCLHFCO2lCO2tCO2tCOzs7O3VCO2tCLE07aUIsTzs7eUM7O2dCOzs7STtLO0ssTztJLE87OzJCLHNCOztHOztJO0ksTzthOzs7Z0IsMEM7Z0IsTTtlOztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VSxZO1U7OztXO1c7VztVO1M7O007Tzs7TztPOzs7UTtTLE87Ozs7OztRLHlDOzs7UywyQixNOztjO1U7VyxROzs7Ozs7VzthOzs7Z0I7Ozs7aUIsUTs7Ozs0QjtnQjtlOzs7OztXO1c7O1c7O3lCLDBCO1ksVztZLE87Vzs7Ozs7Ozs7Tzs7Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix5Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OztRLEksd0MsaUI7USxPLDJDLGlCO2U7Ozs7O1UsNEMsUztNLE87OztnQixpQzs7Ozs7aUI7Ozs7Ozs7OztrQixNOzs7aUI7OztrQjtrQjtrQjtrQjtrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Z0M7Ozs7Ozs7OztvQixXOzsrQjs7O2tCOztpQjs7Z0IsTTtlOzs7OztLOzs7TSxPO00sTzs7TTtROzs7Vzs7WSxNO1c7O1ksTztZLE87NEQ7VztVOztPO1E7USxNOzs7OztPLEkseUI7Ozs7Ozs7OztRLEkseUI7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCLG9DO2dCLFc7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7VTs7Ozs7Ozs7Yzs7ZTs7O2M7Ozs7Ozs7Ozs7Yzs7ZSxPO2UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztHOztJO0k7O007Ozs7O087TSxXOzs7OztLOztHOzs7OztvQjs7O007UTt3QyxPLHdCOztXOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQixlOzs7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7b0IsUzs2Qjs7Ozs7Ozs7Ozs7OztxQjs7cUI7b0I7b0I7bUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLHFCLE87bUI7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLG9CO2dCOzs7Ozs7Ozs7UTs7Ozs7O1E7UyxPOztROztPOzs7O087USxPOztPOzs7SyxNOztHO3NCOztJO0s7SztNOzs7Ozs7Tzs7Ozs7Ozs7Szs7Ozs7SyxrQixPOztLOztHOztJO0s7Ozs7O007Szs7STtHOztJOztNO3FDLDZCO0k7Rzs7STtLLFk7O0s7STtJO0s7Tzs7O1U7OztXLFE7OztXO1U7Uzs7Ozs7STtJO0c7O0k7STttQjs7OztNOzs7OztHOztJO0k7bUI7Ozs7TTs7Ozs7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7VSxPOzs7b0I7b0I7bUI7Ozs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7STtLLE87SztlLHlDLGE7SSxXOzs7aUI7Szs7Ozs7O007Szs7TTtPLE87Ozs7VzthOzs7O087Tzs0Qjs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTO1U7WTs7O2UsMEM7ZSxNO2M7O1U7VTs7O1UsSztXOzs7Ozs7Ozs7OztnQjs7OztROztzQixPLGtDOzs7Ozs7Ozs7TSxNOzs7O1U7O0c7NkIsMEI7O0ksYztJO0s7Szs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7VyxPOzs7cUI7Ozs7O29COzs7VyxvQztXLFc7Ozs7O1c7OztRLE8sd0MsZTs7Ozs7TTs7STtJO0c7O0ksSSw2Qjs7Szs7TSx5QjtNLG1CLFc7TSxROzs7TSxHO087UTtTLE07UyxNO1E7UTtTO1E7VTs7O2E7Ozs7Yzs7YTtZOztTO1EsSSxPOzs7Tzs7Ozs7Ozs7SyxZO007Ozs7O21CO0k7Szs7UTs7eUIsdUM7Ozs7O007OztTOztxQztZLDBCO1MsZTtTLE87UTs7OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O0s7TywyQztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjtTO1U7O1cscUIsTztXLE87OztxQixTOztvQjs7O1UsTztTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxNO1UsTztVLE07Z0I7VTs7O2U7O2dDLHNCOzs7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7SztPOzs7VTtVLE87Uzs7O0k7SztNO1E7OztXO1csZTtVOzs7TTtROzs7VztXLE87Ozs7O3FCLE87b0I7VTs7OztLO00sTTtNO1E7OztXOzs7O1ksVztXLE87VTs7O0ssRzs7O0k7OztPO08sTztNOzs7STtHOztJLFUsNEMsUztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SSxJLFcsMEM7Ozs7OztHOzs7SztLO007TSxHLDBDO00sYTttQjs7TTtPLDhCO08sUTs7Ozs7VSxxQjs7Ozs7O1UsTzs7O1UsZTtVO1c7WSxPO1k7Yzs7O2lCOzBCO2dCOzs7Vzs7Ozs7O1csTzs7bUM7Ozs7Ozs7Ozs7OztVLE07Ozs7VSxXO1U7OzthLGtCLFE7OztlOztnQixJO2UsTzs7dUM7Ozs7Ozs7OzthO1k7O1UsVzs7Ozs7OztVOztXLEk7VSxPOzs7b0I7b0I7bUI7OztNOztJO0k7Rzs7STtLLE07SyxNO0ksTztHO0csZ0I7O0k7OztLLG9CO0s7Tzs7O1U7Ozs7Vzt5QjtVO1M7O0s7SztJOzs7Tzs7OztPO007OztLOzs7USxLO1M7UyxLO1U7Vzs7O2M7YztlLEcsNEM7NEI7ZTtlLEcsbUM7ZSxZOzs7O21CLE07OzttQjtvQixVO29COzs7Ozs7O29CLFc7b0IsRztxQixNOzs7OztlLE87O2E7VTtXO1c7Vzs7OztpQzs7Ozs7UTtPOzs7Syx3QjtLOzs7UTtRO1E7UztTLFE7OztTLEs7UyxNO1E7Ozs7OztTLE07Ozs7Ozs7Tzs7O0s7TSxPO00sTTtNO1E7OztXLFU7VyxXO1U7O0s7TTtNOzs7UztTLEcsMkI7Ozs7O2U7UztROzs7TTtPOzs7VSxHLDBDO1UsZ0I7O1U7VztXLE87VzthOzs7Z0IsTzswQjs7ZTs7O1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1U7VyxNO1csVTt3QixPOzs7Ozs7Ozs7VTtVLE07Ozs7OztTO007O3dCLG1CLG1COzs7O0ksTzs7O2M7OztlO2U7ZSxZOzs7ZSxlOzs7YztlO2UsTTtjLGM7Ozs7O3FCO2UsTzs7YzthOzs7O0c7SSxZLHlDLGtCOzs7OztJLHFDLE87O0ksTzs7O2M7YzthOztHOzs7Ozs7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQyxROztLOztNLE07TSxNO0s7OztRO1E7UyxNO1EsaUM7O1M7VSxPO1UsUTs7OztXO1ksTTtZLE07a0I7Ozs7Ozs7OztRLFEsTTtRO087Ozs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7SztPO3dDLHFCO0ssYTs7Ozs7TSxPOzs7Z0I7Ozs7aUI7aUI7Z0I7ZTs7Ozs7STs7Ozs7O1M7O1U7WTs7O2U7ZTtjOzs7O3dDOzs7O1M7VzswQywwQjtVO1c7YTs0Qyx3QjtXLE07Ozt5Qzs7VTtXLE07VzthOzs7Z0IsVTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7VzthOzs7O2dCOzs7O1csVTs7VyxNO1U7OztXLE07aUI7Ozs7Ozs7SSwyQjtJLE87OztJLEksc0M7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7SyxVO0s7O2U7RztHO0ksTztHO0c7SSxPOzhDLG9CO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7Ozs7O0c7RztJOzs7Ozs7Ozs7Ozs7STs7O0k7O087d0M7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7STtLO087OztVOzs7Ozs7VTs7O1M7Ozs7O0s7TztJLE87OztjOzs7O2U7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxjOzs7Ozs7TztRO1EsTzs7Ozs7TTs7Szs7Rzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7STs7O0k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs4QixPLGlDOzs7OztLLGM7bUI7O0ssTzs7STtHOztHLGdDLGdCO0cseUIsUztHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0ssa0I7SyxRO3VCOztJLE07RztHOztJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7NEIsOEM7Rzs7STtNOztnQyxXLDhCOzs7O0k7STtLLFk7bUM7d0I7SyxzQzs7OztHOztJLFU7SSxPO2E7OztnQixZOzs7aUIsaUI7O2dCLE07ZTs7RztHOztJOzs7Ozs7STs7STtHOztJLE87OztjLEksbUI7YyxXO2E7OztHOzs7Ozs7O0k7OztJLEksVSxtQzs7Ozs7O0c7OztLO0s7TSxJLDZCLFU7O087O1EsTTtxQjs7O007Ozs7OztVO1UsTztTO00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7Ozs7YTtjOzs7a0IsbUIsUTs7OztvQixPOzs7b0Q7O2tCOztlLE07ZSxRO2UsUTtlLFU7Ozs7Ozs7Ozs7Ozs7dUM7Ozs7O1ksTTs7Ozs7Ozs7VyxPO1U7TyxPOzs7O0k7STtHOztJLE8sNEMsUztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssTzs7K0I7Ozs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7VSx1QixVOztVLE07Ozs7Ozs7Ozs7Ozs7Ozs7aUI7bUQsUzs7O0ssOEI7OztJLDhCOztHOztJLGU7SSxJLGdDOzs7MEI7OztHOztJO0ssTTtLLE07O0c7RyxrQyxnQjtHLHlCLHVCO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHLHFDLFM7Rzs7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztLO00sTTtNLE87TSxVOzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7OztPLGM7cUI7O087O007O0s7O0k7Rzs7STtJLE87Rzs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJOztPOztPOzs7Ozs7O0c7O0k7SSxvQjtHOytCLDBDOztJO0ksd0M7SSxZOzs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Ozs7VTs7OztnQzs7O1E7OztROzs7OztRLE07O0k7Rzs7SSxJLDJCLEk7Ozs7K0I7Ozs7Ozs7Ozs7TyxHOzs7Vzs7Ozs7bUI7Ozs7YSxvQzs7STtHOzRCLHVDO29DLHVDOztJOzs7Ozs7O08sRztRLEksVSw2Qzs7OzsrQjs7Ozs7O0k7Rzs7STs7Ozs7Ozs7UTs7O1M7UTs7Ozs7STtHOztJO0ksZ0Isb0M7SSxZOzs7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxPOzs7OztjLE87YTtHOzs7STs7Ozs7OztNOzs7UztrQixNOztROzs7O0s7TSxPO2U7O0ksWTtJLGE7Ozs7Ozs7OzsyQjs7OztJOzs7O0ssTztLLE87O0s7O1E7OzBCLE8sMkI7Ozs7Ozs7Ozs7Ozs7OztJOzs7STtrQjs7Ozs7O007Ozs7Ozs7Ozs7Ozs7O1E7O087Ozs7Ozs7O0c7O0k7O0ssTTtJOztLLEs7SyxVOzs7OztRLHFCLEk7ZTtTLE07Ozs7UTs7UyxVOzs7OztTLFc7UTtRLEc7UyxNOzs7OztLLE87O0ksTTtHOzs7O0ssSSxlLHVDOzs7O08sTTs7OztJLE87Rzs7STtLLE07STtJOzs7TztPLEc7USxNO3VCOztNOzs7Ozs7Ozs7SyxPOzs7OztlO2dCLFE7Z0IsTTtnQixPO2dCLE87ZTt1Qjs7Ozs7OztjOztJO0ssUztLO087OztVLG1CLFE7Ozs7OztVO1M7O0k7Rzs7STtLOztNLE87TSxNO0s7aUIsd0MsWTs7O0k7O0s7OztJOzs7O0k7O0ssTzs7O2U7O2dCO2tCOzs7O3FCO3FCO3NCO3dCO3VELFk7c0IsYztzQjtzQjs7OztzQjt3QjtzQjtzQixVOzs7c0IsRzt1Qjs7cUI7c0IsTztzQixZO3NCLGdCO3FCLE07O29COztxQjs7OztxQjtxQjtxQjtxQixzQixPLDhCO3FCO3FCO29COzs7OztlO2M7O0k7Szs7O0k7RztHO0k7TTs7O1M7UyxPO1E7O0k7TTs7O1M7Uzs7OztTO1UsaUI7VSxPO1MsTyxXO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Z0I7O0ksTztHOztJO0k7SyxHLDRDO2tCO0ssWTs7Ozs7UyxJLFc7Ozs7VyxNOzs7UztVLE87VSxPO1MsSTs7Ozs7VSxNOzs7UyxPOzs7bUI7Ozs7Ozs7aUI7Ozs7SyxPOzs7ZTs7OztHOztJLE87OztjOzs7ZSxTOzs7O2dCLE07O2U7Z0I7OzthOztHOzs7Ozs7OztNLG1CLFU7OztPO1E7UyxTO1MsTzs7Vzs7O1MsSTs7Ozs7OztTO1UsTztVLE87VSxPOztZOzs7OztTLE07Ozs7Ozs7UyxNOzs7O00sTTs7O0k7Ozs7O0s7SztNLEs7O1EsVztRLEc7OztTLGdCO3NCOzs7Ozs7O3FCOzs7Z0I7TyxjOzs7Ozs7WTs7YTsyQjs7Ozs7Ozs7O08sVztPO1EsWTtRLFU7O1E7OztTLGE7UTs7Uzs7MEI7OztRLEksVzs7Ozs7O21COzs7cUI7Ozs7O1E7Ozs7OztPLE87OztpQjs7Ozs7TyxNOzs7OztROzs7UyxVOzs7O3FDOzs7Ozs7OzswQjs7Ozs7O3dCOzs7OztnQjtnQjtNLE07O0k7O0s7STtJLFc7STtLOzs7TTtROzs7eUI7O0s7Ozs7OEIsTzs7O0c7O0k7SztLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPOzs7O2dDO21CO1E7O0ssTztJLE87Rzs7SSxrQjtJOztLO0s7TSxlO2lCO21CO00sWTs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VSxPOzs7b0I7Ozs7Ozs7O2tCOzs7O00sTzs7O2dCOzs7O0k7O0s7SztJO0ksTzs7O2M7ZSxROzs7OztjOzs7aUI7OztjO2E7O0c7O0k7Ozs7Ozs7SztLO00sTztNLE87TSxPO0ssSyxpQztLO007TSxPO00sTztLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLHFCLE87OztJO0c7O0ksTzs7O2M7YzthOzs7O0c7O0k7STtLLGM7SztPOzs7VTs7VztXLE87VyxhO1c7VztVOzs7Ozs7Ozs7Uzs7SyxlO0ssUTtLO087OztVO1csTztXLE87VSxXO1M7O0s7Tzs7O1U7O1c7YTs7O2dCOzs7OztXO1csYzs7OztZLEksZSxLO1k7Ozs7ZTs7Ozs7O2UsVztlO2UsTztjO1k7O1c7Ozs7O1csTzs7Ozs7cUI7cUIsTzs7OzsrQjsrQjtnQztnQztrQzs7b0Qsb0IsYzs7Z0M7a0M7OztxQzs7OztzQyxPO3FDOzZDOzs7b0M7O2dDLFU7Z0MsUTsrQjs7aUMsTTs7Ozs7Ozs7Z0M7OztvQyxNOzttQztpQzs7O2tDOztrQzs7O2lDOzs7bUM7Ozs7OztpRDs7O3FDOzs7Ozs7O3NDO3NEOzs7cUM7Ozs7O2tDOzs7O2lDOzs7bUM7bUQ7OztrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7a0M7b0M7a0M7b0M7Ozs7Ozs7Ozs7Ozs7Ozs7a0M7O21ELDZCOzs7O2lDOztnQztnQzs7O21DO21DLEc7b0MsTTs7O29DOztrQzs7Z0M7aUM7aUM7bUM7O2tELE8sa0M7OzBDO2lDLE07O2dDO2lDOztvQyxPOzs7Ozs4QzsrQyxPOytDOzs7Ozs7Ozs7Ozs7OytDOzs7K0MsTzsrQyxPOytDOzs7Ozs7Ozs7OytDOzs4Qzs2QzttQztpQztpQyxPO2lDLFU7Ozs7Ozs7Z0M7O2lDOzs7aUM7OztzQzs7O3lDOzswQyxRO3FEO3lDLG1CLFU7OzswQyxPOzt5Qzt3Qzs7OztpQztpQzs7Ozs7Z0M7O2lDO2lDLE07Ozs7OytCO2dDLFE7Ozs7Z0MsTztnQyxPO2dDOzs7Ozs7Ozs7Ozs7Ozs7OytCOzs7a0M7Ozs7bUM7bUM7a0M7bUMsVzttQzs7Ozs7OzttQyxNOzs7aUM7OytCO2dDO2lDO2tDLE87a0MsVztrQyxVOzs7OztrQyxNOzs7OztnQzs7K0I7Z0M7Ozs7Ozs7Ozs7Ozs7Z0M7O2dEOztnQzs7aUMsTzs2Qzs7Z0M7O2lDLE87NkM7K0I7OEI7b0I7O1U7VyxPO1c7YTs7VzthOzs7Z0I7Z0I7ZTs7VyxROzs7O1U7VyxTO1csVTtVOzs7YTs7OztjLE87Ozt3Qjt5QjswQixPOzBCOzRCOzs7O3lCOzs7OzswQixPOzs7O3VCOzs7O2EsTzs7O3VCO3VCO3dCO3lCLE87eUI7MkI7Ozs7d0I7Ozs7O3lCLE87Ozs7c0I7O1k7O1U7VTs7a0I7b0Q7Uzs7Ozs7O0s7Tzs7Z0MsbUIseUI7OztLO087OztVOzs7OztJOzs7Tzs7O1E7USxNO3lCO087UTtVOzs0QixPLDRCOztRO1EsTztPOzs7OztnQjs7O007OztLLG1COztLLE87STtJOzs7TztPOzs7Z0I7Ozs7TTs7STs7O08sdUM7Tzs7O2dCOzs7O007O0k7OztPOztRO1EsUTttQjs7TyxNOztNOzs7STs7O08sdUI7Tzs7O1U7VTtTOzs7Ozs7OztXLGtCOzs7WTs7O1csTTs7VyxvQjs7WTs7YTs7Z0IsTztlO2E7ZTtZOzs7ZTtlO2dCO2lCLE87aUIsUTs7Ozs7aUIsTTs7Ozs7OztnQjs7OztrQjs7O3FCO29COzs7Ozs7Ozs7O2tCOzs7O2dCLE07Ozs7Z0I7O2U7Yzs7OztXLE07OztxQjtPLHFCOztRLE07O087Ozs7STtLO007UTs7O1c7VztVOzs7TTtRLFc7TSxPLFc7TSxVLFc7Ozs7OztNLE07Ozs7TSxNOzs7OztLLE07O0k7STs7OztPOzs7O0k7O087OztVO1U7Ozs7Ozs7Ozs7O1M7OztJO0c7O0ksSSxLOzs7O007O087TyxTO08sVTs7OztPO1EsUztRLE07USxpQjs7OztPO1EsUTs7O00sSTs7Ozs7TyxNOzs7O087USxPO1EsTztPOzs7VSxXLG1CO1U7VztZLE87bUI7OztVLGM7Uzs7O007TyxpQjtPLG1CO087O1U7O087O1U7O2E7TyxNOzs7TyxNOzs7Tyx1Qjs7OztTOztVLFU7Ozs7OztXOztZLFM7WSxPO2M7WSxNO1csc0IsTztXOzs7Ozs7Ozs7VyxNOzs7UyxNOzs7O087UTs7Ozs7O00sTTs7Szs7OztNOzs7Ozs7Ozs7OztJO0ssTztLLE87Szs7Ozs7Ozs7OztLO0s7Ozs7OztvQzs7Ozs7O0ksWTtJOzs7O0ksTzs7Ozs7Yzs7Ozs7Ozs7YTtHOzJCLCtCOztJLE87Ozs7O2M7O2UsUTs7OztlLE07Ozs7ZTtnQjs7bUI7O3FDLGlDOzs7Ozs7Ozs7ZSxNOzs7YztlO2lCOzs7b0I7cUIsUTs7O29CO21COztlLE87Ozs7ZTtnQixPO2dCO2tCOzs7c0I7Ozs7O3VCO3VCOzs7Ozs7cUI7Ozs7O2M7O2UsTTs7O2M7ZSxRO2U7aUI7Ozs7cUI7cUI7cUIsTzs7OytCOytCOzs4Qjs7b0I7O29CO29CO3FCO3FCO3VCOzt5QyxvQixjOztxQixPO3FCLE87b0I7b0I7OztxQjt1Qjs7OzBCOzs7O29CO21COzs7Yzs7O2lCLG9CLFE7NkI7O2lCLE07O2dCOztjOzs7aUI7aUI7a0I7O3FCOzs7Ozs7a0I7Ozs7Ozs7a0IsTTs7O2dCOztjO2U7aUI7OztvQjs7O3FCO29CLE87O21COzs7ZSxVOzs7ZTs7Ozs7Ozs7O2M7YTtHOztJO0ssUTtLO087Ozs7VztXOztVOztVO1U7O1M7OztLLFU7OztLLE07OztJO0s7SyxTO0k7Rzs7STtLO087Ozs7eUIsbUM7Ozs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7VSxPOztTLE07O1E7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7TTs7bUM7Ozs7TSxHO00sRztNLEc7TSxHOzs7OztLLE07OztJO0c7O0k7STtLOztNLFU7TTs7Ozs7Ozs7Ozs7O1csTTs7O1U7OztXO1c7OztVOzs7Ozs7Ozs7OztNOztLLE07O0c7O0ksTzs7Ozs7YyxJLE0sMEM7O2U7Ozs7O2U7Z0I7Ozs7O2dCO2tCOzs7O2dCO2lCO2lCO21DOzs7O2dCLE07Ozs7Ozs7OztlO2dCLE07O2U7OzttQixXO21CO29CLFk7Ozs7c0I7O3VCLFM7MkM7Ozs7OztvQjs7OzsyQzs7O2tCO2dCO2tCO2U7OztrQixnQjtrQixPO2lCOzs7ZTtnQixPO2dCLE87Ozs7ZSxLO2dCLE07O2U7Z0IsTztnQixPOzs7YztlO2lCOzttQyxlOzs7Ozs7ZTs7Ozs7Ozs7O2M7YTtHOzs7STtJLE87O2dDLGdDOztjO2M7ZTtlO2U7aUI7O21DLG9CLGM7O2UsUTtlO2lCOzs7b0I7Ozs7cUIsTTtxQixRO29CO21COztlOzs7ZTs7Z0IsTTs7Ozs7Ozs7OztjO2UsYTs7YztlOzs7a0I7a0I7bUIsVzttQjs7Ozs7OzttQixNOzs7aUI7OztjOzs7aUI7aUI7a0IsVztrQjs7Ozs7OztrQixNOzs7Z0I7O2Msd0I7Ozs7O2U7Ozs7Yzs7Ozs7OztlOzs7Ozs7OztjO2UsTztlLE87OztlOzs7Ozs7OztrQjs7Ozs7Ozs7Yzs7O2lCO2dCOztjLGM7OztlLE07OztjO2U7ZSxXO2M7ZTs7a0I7Ozs7Ozs7Ozs7OztlLE07OztjOztpQjtjO2U7O2tCOzs7Ozs7O2UsTTs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7OztHOztJO0ssTztLLE87Szs7SyxxQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLFc7SztLLFc7STtJLE87Ozs7Yzs7OztlLE87ZSxPO2M7Ozs7Ozs7Ozs7Ozs7OzthO0c7O0ksWTtJLE87OztjOztlOzs4QjtjLFc7YTs7Rzs7NEIsTyxzQztJO0k7STtHOztJO0s7TTtROzs7VyxXO1csTztVOztNLE07TSxXO0s7SztNLE87TSxPO0s7Szs7Ozs0Qjs7O0c7O0k7Ozs7Ozs7YztlLE87ZTtlLE87YyxPOzthO0c7O0ksc0M7O0ksTyx3QyxZO0c7O0k7SztLO29COzs7Ozs7Ozs7Ozs7OztNOztJO0k7Rzs7SSxPOzs7YztjLE87O2E7O0c7O0k7SztNOzs7TyxPO08sTztNLE87O0s7OztNLE87TSxPO0ssTzs7STtLLE87STtJLE87YTs7O0c7O0ksTztHOztJOzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7USxPOztRLE87Ozs7OztPLE87OztPLE87O087Ozs7UTtPLE87Z0I7O2lCO2lCO2lCLE87Ozs7Ozs7O2dCOztPOzs7O1E7TyxPO2dCOztpQjtpQjtpQixPOzs7Ozs7OztnQjs7OztROztTO1c7Ozs7OztTLE87USxPOzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7O087Tzs7Ozs7O3VCLE8sMEM7dUIsTywwQztPLE87OztPO087Ozs7Ozt1QixPLDBDO3VCLE8sMEM7TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087Ozs7O1E7UTs7VyxPO1U7TztPO087USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7OztpQiw2Qiw4QjtpQixPOzsyQjs7MkI7Z0I7OztPOzs7Ozs7O1k7Ozs7Z0I7Ozs7cUMsUzs7eUMsVztlO2EsUTs7Ozs7O2lCOztrQixVOzs7aUIsRyxpQztpQjs7OzttQyxrQixTOzs7b0I7b0IsTzttQjs7O2lCLG9CLE87aUIsRyxtQztpQjs7O21COztvQixrQixROzs7OytEOztzQixPOzs7cUQ7O29CLE87bUI7OztvQjs7cUIsTztvQixPO21COzs7YTs7Ozs7OztXOzs7O3lCLFk7OztjLFc7YyxPO2E7Ozs7Vzs7Ozs7YztjLE87YTs7O2M7Ozs7Ozs7O2E7OztPLE87OztPLE87Ozs7Ozs7O08sdUIsTztPLE87Ozs7Ozs7OztPOzs7O1E7VTs7Ozs7O1EsTztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7aUIsVztpQixPO2dCOztpQixPO2dCOztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7O087Ozs7UTs7Vzs7OztZO1c7O3VCO3VCOzt1Qjs7O087USxnQixPO1E7Ozs7Ozs7Ozs7O1E7Ozs7VztXO1ksTztZLE87Vzs7Ozs7Ozs7OztXO1csVztXOzs7Ozs7Ozs7O1c7VyxXO1c7Ozs7Ozs7Ozs7VyxXO1c7Ozs7Ozs7Ozs7O1csVztXOzs7Ozs7Ozs7OztXLFc7Vzs7Ozs7Ozs7Ozs7Z0M7TyxJLHFCO08sTzs7TyxvQixPO08sTzs7O087TztPOzs7O3FCLFM7O3lCLGE7TyxPOzs7aUI7O2lCOzs7Ozs7Ozs7Ozs7O08scUI7TyxPOzs7TztpQjs7Ozs7Ozs7aUI7Ozs7Ozs7OztPOztROztXLFksTztXLG9CLE87VyxPOztPLE87Ozs7Ozs7Ozs7TyxPOztPOztROztXLE87VTtRLE87USxPO08sTzs7OztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozt1Qjs7O0k7RztxQyx3Qjs7STtJOzttQzs7OzZCOzs7O1E7OztZOzthLG1CO2EsTzs7WTtXO1M7Vzs7Ozs7UTs7O2lGLGU7O1EsTzs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UTs7OztTOzs7O1U7VSxROzs7Ozs7OztRLG9CLFU7OztpQzs7O1E7OztRO1MsTzs7O1E7Ozs7Ozs7OztROzs7OztRO2dCOzs7O0c7O0k7OztJLG1COztJLEksVywrQjs7OzRCOzs7OztJO0k7Ozs7NkI7O1E7O1E7O1E7O1E7OztRO1M7O1k7O1k7O1ksTzs7WSxPOzs7Ozs7UTtTLE87O1E7OztHOztJOzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHO0k7O0ksVTs7SSxJLFcsNEI7Ozs0Qjs7O0c7OztJLE87OztjLEkscUI7YyxPO2E7OztHOztJLE87Rzs7SSxPLGlDO0c7O0ksTzs7O2M7YzthOztHOzs7SSxPOzsrQixPLDBCOzs7Rzs7SSxtQjtHOztJLE87Rzs7STs7SSxPO0c7O0ksTzs7aUMsbUIsd0I7OztHOztJO2E7NEMsd0I7RzsyQixhOztJO0ssTywrQztHOztJO2tDOzs7MkI7O087O087Ozs7UTtPO1E7O087OztROztXO2tEOztXO1U7OztXOzhCOztXO1U7USxXO1EsVzs7Ozs7O1M7Vzs7K0IsMEI7O2lDO087UTtRLDBCO087UTtRLHFDOzs7Ozs7Ozs7OztRLGU7OztPOztROzs7OzBCOzs7YTs7O2M7OzthOzs7Ozs7Ozs7UTs7O1E7OztpQzs7OztpQzs7UTtPLHNCOzs7TztRO1M7VzswQyx1QjtTLFE7OztTLE87UztRLHVDOztPOzs7USwwQix1QjtROzs7OEI7TyxzQjs7O08sNkI7O08seUM7Ozs7Ozs7Ozs7O1E7Ozs7a0M7O08sc0I7OztPLDZCOzs7OztRO1M7Ozs7Ozs7O2lDOztROzs7O2MsTzs7O3dCO3dCOzs7O3dCO3VCOzs7Ozs7TyxzQjs7MkI7Ozs7OztRO08sc0I7O087O1EsVTs7TzsrQjs7Ozs7Ozs7Ozs4QjtRO08sc0I7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7Ozs7Ozs7O1E7TyxzQjs7NEI7TyxzQjs7NkI7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7O087OztRLDRDOztvQztRO08sc0I7O087Ozs7UTtRO087UTs7TywwQztPLG1CLE87OzJCOztPLG9CLFU7Ozs7OztPOztnQzs7O08sa0IsTzs7Tzs7Ozs7O1E7c0M7UTs7aUM7O08sc0I7OzZCOztPLG1DO087UTs7Rzs0Qjs7SSxzQztJLHFCO0c7O0k7SSxxQjtHOztJOzs7MEI7OzJCOzs2Qjs7Tzs7eUI7ZTs7Rzs7SSxpQjs7STtHOztJOzs7MkI7OztPO1EsTzs7O2tCOzs7cUIsa0I7cUI7OztxQjs7cUI7O3FCOztxQjs7c0I7d0I7OzBDLG1CLFU7O3NCO3FCOztxQjs7c0IsTTtxQjs7Ozs7O3FCOztxQjs7c0I7d0I7OzsyQjsyQjswQjs7c0I7d0I7eUQ7Ozs7eUI7MEI7OzJCOzJCOzs7O3lCOztzQjtxQjs7d0M7O3FCOztzQixpRDtzQixZOzs7O3lCOztzQjtxQjs7cUI7Ozs7c0IsZTtzQjtxQjs2Qjs7aUI7Ozs7eUI7Ozs7OztRO08scUI7OzJCOzs7OzswQixpQzs7O087c0M7OztXOzs7O2lDLDRCOzs7O21COzs7Ozs7TztRLE87O087O0c7eUI7O0k7STs7OztRLHNCOzswQjs7Ozs7O1M7USxxQjs7O0c7O0k7O0s7O00sTTtNO007TTs7OztLO007OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7OzRCOzsyQjs7UTs7O1M7VywwQztTO1EsbUI7Ozs7Ozs7O1kscUI7OztvQztTO1EscUI7O1E7Ozs7UztRO1M7Ozs7OztHOztJO3VCOztJO0c7O0k7SztPLHlDLGE7SztJO0s7OztTOzs7VTtVO1U7OztVOztTO1UsZTtVO1M7O00sTTtNLFE7Ozs7Szs7TTs7O1U7OztxQjtTO08sUTtNLEc7Ozs7Ozs7O1M7OztVO1M7OztJO0c7O0k7Ozs7O0s7OzZCOztJO0ssMEI7Syx3QztHOztJO0s7SyxNO0s7TztTLHlDLHFCOztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7STtLO007Ozs7OztZOzs7ZTtlO2M7Ozs7Ozs7SztNOztJO0c7OztLO0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7OztJOztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7O0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7Ozs7cUIsc0MsWTtxQix5QyxZO3lDLDRCOzZCLHdCOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7Rzs7STs7OztRLEksbUIsOEI7OzttQzs7Ozs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7Ozs7USxJLG1CLDhCOzs7bUM7OztPOzsyQjs7O087OzttQjs7Tzs7Rzs7STt5Qzs7SSxNO0c7O0ksTztHOztJO0c7O0ksWTtJLGlCO0c7O0k7SyxRO0s7O0s7STtpQjs7OztHOztJO0ssTztLLFE7Ozs7O00sRyx1Qzs7O0ksTTtHOztJLE8sMkI7Rzs7STtJLE87Rzs7STs0Qzs7Ozs7TTs7O0k7Rzs7STs0Qzs7O3FDO2tEOztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7O0ksSSxXLHNDOzs7OztNLE07Ozs7SyxNOzs7RztHO0ksa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7VztZO0s7Ozs7OztNLE07Ozs7O0ssTTs7O0c7O0k7STtHOztJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJLE87Ozs7ZTs2RDtlO2M7O0c7O0ksTzs7OztlOztnQjs7OztpQixPO2lCLFE7Ozs7aUI7a0IsSTtrQixVO2lEOzs7O21CLHFCO29CLFc7b0IsTzs7Ozs7OztvQixLO3FCLFc7cUI7O3NCLE07OztxQixPOzs2Qzs7Ozs7a0IsbUI7bUIsVzttQixPOzs7aUI7O2dCLE07O2U7Yzs7Rzs7STs7OztJO0c7Ozs7OztJOzs7O0k7TTs7O1Msc0I7UyxPO1E7O0ssTTs7Ozs7O08sTTtpQjs7O007OztPLE87TyxPO087OytCOzs7Ozs7OztjO0k7SyxPO0ssUzs7STs7O0ksTzs7O2MsK0IsTztjLE87dUI7YTs7Rzs7STs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7VTtXLE87O1U7O1U7O1c7YTs7OEI7O1UsTzs7Ozs7Ozs7Ozs7OztVO1U7VzthOzs4Qjs7VyxVOzs7VyxPO1U7OzthOzs7Yzs7YSxzQjtZOzs7VTs7VTs7O1c7YTs7OEI7O1csb0I7VyxPO1csVztVLE87O1U7O1csTztXLE07O1U7VyxPO1c7YTs7O2dCO2dCO2U7Ozs7YztlLFE7OztjOzs7O2UsVztlO2dCLGM7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE07OztnQjtlOzs7Ozs7YztlLFU7OztjO2M7YTtVO1U7OztVO1c7O1ksVTs7OztZLE87WSxXO1csTzs7VSxJLGdDO1U7VTs7Ozs7OztNLFM7TyxPO007TztPO1M7OzsyQixPLDZCO08sTztPLE87TTtNOzs7Ozs7O0k7OztJO0s7Tzs7eUIsTywyQjs7SyxLO0ssZ0I7STtJO0c7Ozs7Ozs7Ozs7STtLO00sTztNLE87TSxPO00sTztNLEs7Szs7O0s7Ozs7OztLOztJO0k7SztPOzs7VSxvQjs7Vzs7OztZO1ksVTs7OztZOztZO2M7OztpQjtrQixPO2tCO29COzs7O2lCO2lCO2dCOztZO2M7Ozs7a0I7a0IsTztpQjtnQyxPLHNDOzs7OztXO1ksTTtZLE07VztZLE07Ozs7YSxXO2E7YTtjLE87YyxVOzthLE07OztZOzs7O1k7YTtlLHdDLFk7YTtlOzs7a0IsWTs7Ozs7b0IsRztxQixPOzs7a0IsTTs7aUI7Ozs7YSxNOzs7VztZOzs7Ozs7O1c7WSxVOzs7WTs7Ozs7O1c7VTs7O1M7Ozs7O0s7OztLOztNOzs7UztTO1M7UztVLE87VSxjO1U7b0I7Uzs7WTs7UztTLE07UTs7Ozs7Ozs7STtHOzs7SSxPOzs7YztlLFE7OztjO2U7Ozs7O2lCOzs7Ozs7OztpQixNOzs7Ozs7O2M7YTs7Rzs7STtLLFM7SyxnQjtJO3dCO0k7Rzs7STtLLEs7SyxPO0kseUM7STtHOztJO2lDO0ssc0I7STtLLE87STtJO0ssZTtLLGdCO0k7Szt5QjtJLFc7SSw4QjtHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7SSxZO3NFO0ksTTtHOzs7Syw0QjtJOztLO00sUztNO3dCLE07O0s7TTs7Uzs7O1k7WSxPO1c7Ozs7OztNOztTOzsyQixtQixPLHdCOztNLE07Ozs7Ozs7O0s7SztJOzs7O29CLE87TSxzQyxPO00sRzs7Vzs7OztLO007TTtROzswQixvQiwwQjs7TTs7K0I7OzsrQjtLLE87Ozs7O2U7ZSxPO2M7STs7SyxrQixNOzs7TSxvQjtNOztLLE87STs7SyxHO007TTtPO08sWTs7Tzs7bUI7TyxPOzs7O0k7O0s7TSxPO00sTztNLFc7SyxPO0k7O0ssVztLLFc7SztNO1E7Ozs7MEIsTywrQjtNLHdCO0ssTztJOztLOzt1RDs7SyxnQjtLLE87STs7Syx3Qzs7SyxPO0k7Ozs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTtVO1k7OztlOztnQjtnQjtlO2M7O1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7Ozs7SSxPOzs7YyxPO3lDLE8sMEI7YTs7O2MsTyxjO2E7O0c7OztJO0s7Tzs7O1U7VSxPO1M7O0s7SztLO0s7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0k7O0ssWTtLOztPLG9CLE87Tzs7dUIsTywrQzs7TyxXO08sTzs7O08sb0I7Tzs7Ozs7Z0I7Tzs7TSxhO21CO00sZTs7O0s7Ozs7Ozs7OztJO0k7SztPOzs7VTs7Uzs7SztPOzs7VTs2Qjs7VTtTOztLO087OztVOztXOztVLHNDOzs7Ozs7Ozs7Ozs7VTtTOzs7O0s7O0ssVTs7TTs7OztPO1M7OztZO1k7Vzs7TyxPO08seUM7TyxPO007UTs7eUI7O08sZ0I7Tzs7O087OztVO1UsTztTOzs7OztLLFc7Szs7STs7Tzs7O1U7O1M7O0ksTztHOzZCLGU7NkIsZTs7SSxRO1U7YyxnRDtJO0s7NEM7O0k7SSxPO0c7NEIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7O1MsTzs7O21CO21CO2tCOzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7Rzs7SSxrQjtHOztJLHdCO0c7O0ksTzs7Ozs7Yzs7YTtHOzs7OztLO007O0k7O0ssVztLO0s7STs7SztnQjs7STtvQiw4QjtJOzs7Szs7Ozs7ZTs7Ozs7O087O1EsTztROzs7Tzs7Tzs7O1E7O1E7VTs7OzRCLG1DO1E7Ozs7Tzs7Ozs7Ozs7O087O1E7UTs7Tzs7Ozs7Ozs7Uzs7O1U7VTs7YTtjLE87YTtjLFk7YyxPO2EsTztZOztVO1M7OztPLE07OztPLE87USxNO087UTs7UTtVOzs7Ozs7OztROztRLFcsd0MsWTtPO3FDOztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087USxhOzs7Ozs7UTs7Ozs7Ozs7O1E7O1EsOEI7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7O3VCOzs7Ozs7Vyx1Qjs7Ozs7Ozs7Ozs7Ozs7TyxHO1E7b0I7OztTOzs7O1U7USxXO1EsTTs7O087UTs7Ozs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTtROzs7VztXO1U7OztPOztRO1U7Ozs7Ozs7O1E7O087Ozs7O2lCOzs7OztPO1EsTTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7TztRLE07Tzs7O1M7UyxNOzs7d0I7OztROzs7UyxjO1M7OztPOzs7Vzs7OztZOzs7Vzs7O1E7O1E7Ozs7O2E7Ozs7Ozs7Ozs7OztROztTO1MsVTs7O1ksc0I7WTthLE07OztZO1k7O1E7Ozt1QjtRO1MsSSxpRDs7Ozs7Ozs7Vzs7Ozs7O1U7VyxPO1csSTtVOzs7Ozs7Tzs7Ozs7O21COzs7O087O1E7UTtVOzt3QixzQzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7UTtRO1E7VTs7Ozs7YzthO2E7YyxXO2MsUTtjLFE7YztjO2E7WTs7Ozs7UTtRO1EsWTtPOzs7VTtVO1M7O087OztVO1U7Uzs7Tzs7UTtROzs7VztXO1k7OztnQixPOzt5QyxzQixhOztlO1k7Ozs7Ozs7Ozs7YyxLO2U7Z0IsTztnQjtrQjtxQjs7O2UsTTs7OztjO2UsVztlO2U7Ozs7Ozs7ZSxNOzs7Yzs7OzsrQjtZLE07OztVO1E7O1EsTzs7OztPO1EsTztROztPOzs7OztpQjs7Ozs7Ozs7O1M7Ozs7O1UsUTs7OztTOzRCOztTLGM7O1U7Ozs7YTs7OztpQixPO2dCOztXOzs7VTs7Ozs7Ozs7O1MsTTs7OztPOzs7UTtVOzs7O2M7YyxPO2E7NEIsTyxzQzs7Ozs7TyxXO087MkI7TztRO1E7Tzs7OztTOzs7Ozs7Ozs7Ozs7O087O087OztRLFU7OztRO1U7OzRCLE8sNEI7O1EsTztRLE87USxVOzs7USxHO1M7VSxPO1U7WTs7O2U7Ozs7O2dCLFE7Ozs7aUI7O2tCLE07aUI7Ozs7Z0IsVTtnQjs7ZTtjOzs7OztVLFc7VTs7O2EsTztZO1Usb0I7VSxPO1U7VSxtQjtVO1k7OztlO2U7Yzs7UztVLE07O1M7OztVO1k7OztlO2M7OztVOzs7Ozs7Ozs7Ozs7O08sTTs7O087O1E7UTtROztPOzs7OztpQjs7OztPOztRLEk7UTs7UTs7Ozs7Ozs7Tzs7UTtROzs7Tzs7Ozs7Ozs7O087OztRO1E7b0I7TyxNOzs7TyxNO2tDOztPOzs7USxXOzs7TztPO1E7O1EsVzs7USxNOztPO087Ozs7Ozs7Ozs7SSxPOzs7YztjLE87YTtHOztJLE87OztjOzs7Ozs7O2U7YyxPOzs7Ozs7YTs7O0c7O0k7OztJLE87OztjOzs7OztjLE87Ozt3Qjt5QjsyQjt5QjsyQjt5QixPO3lCLFE7Ozs7eUI7d0IsTzs7dUI7YTs7O0c7O0k7SztHOztJO0s7SyxLO0ssa0I7SyxXO0s7STtLO0s7O0ksd0MsTyxpQjtJLEc7Syx1QztJO0s7Tzs7O1U7Ozs7Ozs7OztVLGtCLHFDO1U7VyxLO1csTztXLFU7VzthOzs7Ozs7VzthOzs7Ozs7VTtTOzs7Ozs7STtHOztJO0ssaUI7SyxTO0s7SyxLO0ssa0I7SyxXO0s7SSx3QyxPLGlCO0k7RztHO0k7STs7Ozs7OztJO0ksVztHOztJOztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOzs7O0s7TTs7SSxJOzs7Syx5Qjs7SSxnQyxPLGtDO0k7Ozs7Ozs7STs7Ozs0Qjs7UTs7UyxPO1M7UztTLE87UTtRLE87OztRLE87UyxNO1E7Uzs7UyxVO1E7O2tCLGdDO2tCOzs7aUI7OztrQjs7O3NCLHdDLFk7a0Isa0I7aUI7O1E7Ozs7Uzs7O1MsTTtRO1M7Ozs7O1E7O2tCLGdDO2tCOzs7aUI7aUI7O2tCOztpQjs7UTs7OztTOzs7Ozs7O1k7Vzs7O1MsNEMsbUI7O1E7O1E7OztTLFk7OztZOzs7O2E7OztZOzs7O3NCLE87cUI7O1E7OztrQyxzQzs7UTs7UztROztrQjtrQjs7O2lCOzs4QiwwQjs7UTs7UztRO3VDLDBCOztROzs7O1M7Ozs7YTthO1k7WTtXO1EsZTtROzs7WTthLE07WTtZO2E7OzsrQyxTOzs7O3lDO3VDOzs7WTtXO1Msc0I7UyxzQjs7O1M7Ozs7O2EsTTs7Ozs7Ozs7Ozs7O1U7VyxNO1U7Ozs7O1U7Ozs7USxPOzt3Qix3QjtxQjt5QixxQztJLGM7a0IsTTs7O3NCOzs7Szs7STtLLE07STs7Tzs7O1U7Ozs7Ozs7Uzs7O0k7OztJOztLLE87SztLO0k7SztNO007Ozs7Ozs7c0IsUztLO0s7Szs7Ozs7O0s7Szs7Ozs2Qjs7O0k7SSxPOzs7Yzs7Ozs7Ozs2QjtJLE87OztjOzs7ZTtnQixNOzs7YzthOzs7RztJOzs7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87STs7O087TztPLE87TTs7STtJO0ksTztHOztJO0k7Ozs7Ozs7O1U7OztXO2E7OzRCLDhCOztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7O2U7aUQ7WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLHNDO1U7b0I7OztzQjs7Ozt1QjtzQjt1Qjt3Qjt3Qjs7Ozs2Qjs7OztpQztnRjtpQztnQzs7Ozs7c0I7cUI7Ozs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7VzthOzs7Z0I7Z0Isd0I7OztlOztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7VztXO2E7OztnQjs7O21COzs7b0Q7O21CO21COzttQjs7bUI7O3VDOzJCOztlOztVO1c7WTtjOzs7aUI7aUI7OztnQjs7O1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7OztJO0k7Ozs7O1EsTzs7O2tCOzs7O3FCLE87OzJDLDhCOzs7O3FCLE87OzhDLGlDOzs7Ozs7OztxQixPOzs7K0I7K0I7OEI7OztxQjs7cUI7Ozs7NkI7O2tCO2lCOzs7Ozs7UTtTLE87O1E7OztRO2dCOzs7Rzs7STs7O0ksWTs7STtLLE87O0k7Rzs7STs7K0IsOEI7O0ksVTtJLE87OztjOzs7OztlLFE7O2UsTTs7O2M7YTs7Rzs7SSxPOzs7YyxlOztlLE07O2M7YTs7Rzs7STs7Ozs7TTs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VTs7YTs7OEI7O1MsTzs7Uzs7O1UsVTs7O1U7WTtVLE87Uzs7WTs7NkI7O1MsTzs7OztLLE87O0c7O0k7Szs7TTtLLEksOEM7Ozs7O00sTTs7Ozs7Ozs7MEI7STtJLEksZ0Q7Ozs7O0ssTTs7O0c7O0k7STtLLHFCOzs7Ozs7O1M7Ozs7Ozs7O1M7O1U7O2E7OzhCOztTLE87Ozs7OztTLGtDO1M7O1M7Ozs7VTtTOztLLE87O0c7O0k7Ozs7OztPOzs7UTtRLGM7ZTs7a0I7Ozt3Qjs7Szs7O3lCLE87STs7Ozs7Szs7Ozs7Ozs7Yzs7OztLOztNLHVCO007Ozs7OztJLE87Rzs7STtJLE87Ozs7O2M7ZSxTO2UsRztnQixXO2UsWTs7Z0I7OztpQjtpQixZOzs7Ozs7ZSxXO2UsVzs7OztHOzs7STtJO0k7STtLLE07SztPOzs7VSxZOztXOzs7aUI7WSxVOzs7VztXOztVLE07Uzs7OztLLFU7OztLO2U7STtLLGM7SyxXO0ssa0I7SSxNO0c7OztLO0s7TSxPO00sSztLO007O1M7OztTLEcsb0M7Ozs7Ozs7O087Tzs7Ozs7Ozs7Ozs7OztLOztROzswQixpQzs7O0ssTztJOztLO00sTztNLEs7Szs7Ozs7Ozs7OztXO2E7OytCLGlDOztZOzs7Ozs7OztlLE87O3dDLHNCLG9COzs7O2U7ZSxPOzt3QyxzQixvQjs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7O0k7SztLO007Ozs7VTs7O2E7MkQ7YTtZOztpQjs7b0M7Ozs7O1M7O1Msa0M7UyxXOzs7aUI7OztJO0k7Rzs7O0ssVztLLFc7UTtNLE07SztLLE87STtJLEksVywyQixjOzs7O0s7Szs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87OztTLE87O2tDLGtCLGU7Ozs4QixPOzs7UztTLGtCLE87O1M7Ozs7Ozs7Ozs7TSxrQixPOztNOztLO0k7cUI7SSxJOzs7d0I7OztJO0c7O0k7O2M7OytDO2M7YTs7Rzs7STs7Yzs0RDtjO2E7O0c7O0k7O2M7NkQ7YzthOztHOztJO0k7Ozs0Qzs7OztHOzs7O21CLE87SyxzQzs7Ozs0Qjs7OEI7Ozs7OztJOzthLHdDLFk7Rzs7STtJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJO0k7Ozs7Ozs7VSx3QztVLFc7Ozs7Ozs7Ozs7Ozs7OztTOztLOztHOztJLFk7Ozs7SyxnQyxVOzs7Ozs7TSxjOzs7O08sc0MsTztPO1EsVztRO1MsVztTO1UsVztVO1csVztXLFMsTzs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLGtCLE87O0ksSSxXLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7RzswQztHOztJLHlCOztHOzs7SSxTOzs7Szs7O007TTtLLE87Ozs7O0s7OztNO00sUztNLE07SyxPOzs0Qjs7OztJLHNCO2tEO0ksb0I7SSxPOzs7SSw4Qjs7Ozs7Ozs7O1E7O1MsVztTLEk7O1M7Z0I7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztJOzs7SSxTO0k7Rzs7STtLLHVCO0s7Tzs7Ozs7VTtTO0k7STtHOztJOztLOztLO0s7O0s7OztRLFc7UTtPO0s7STtJOztLOzZCOztJOztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7UTtRLFM7UTs7ZTs7USxVOzs7OztTLEc7Ozs7O21COzs7bUI7Ozs7Ozs7Tzs7UTs7Ozs7a0I7Ozs7TztPO1E7MEMsbUM7OztZO1k7Ozs7Ozs7WTtXO1MsdUIsNEI7Uzt1QixrQixtQzttQyxrQztpQyx3Qjs7O1k7WTtXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7dUI7O1c7OztZOztlOztlO3VCOztXOzs7WTthLGtCO2E7O1k7WTtXOzs7WTthOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztXOzs7WSw0Qjs7O2E7OztZO1c7OztZOzs7OztZO1c7OztZO2E7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7ZTs7Ozs7Ozs7ZTs7Ozs7OztlOzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7ZSxNOztXOzs7Vzs7Uzs7Ozs7OztRLE07OztPO087Ozs7Ozs7OztVO1c7WTs7OztXOzs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7VTs7MEIsbUM7O1EsYztRO1U7Ozs7YTtjO2UsUTs7OzthO2M7Ozs7Ozs7Ozs7O2M7Yzs7Ozs7OztjOzs7aUI7aUI7aUI7a0IsaUI7a0I7a0IsWTtpQjs7Z0I7O2E7WTs7YTthLG1DO1k7OztPOzs7Ozs7Ozs7Tzs7OztRO1E7Ozs7Ozs7O087O29COztTO1U7VSxPO1UsYztpQjtROztXOzs7YyxJLGlCLE87YyxPO2E7OztRLEk7Ozs7Uzs7VTtVLGtCO1U7UyxNOzs7O087Ozs7aUI7OztvQjtvQjttQjs7Ozs7OztPO1EsTTtPOzs7Vzs7WTtjOzs7OztpQjtrQixTO2tCLEcsc0M7a0IsWTs7O21CLEk7Ozs7cUIsTTs7OzttQixhOzs7OztrQjs7O1csTzs7O3FCO3NCO3dCOzswQyxnQzs7c0IsSztxQjtvQjs7VTtRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO1c7WTs7Ozs7Ozs7Ozs7Ozs7O1U7VztZOzs7Ozs7Ozs7O087UTs7VyxPOzs7cUI7cUIsTzs7b0I7OztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQjs0QztnQjtlO1k7Ozs7Ozs7NEI7Ozs7O1c7WTs7Z0I7Ozs7O1ksVTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXO1k7YztnQjs7O21COzhCOzttQjtrQjs7O1k7WSxPO1k7OztlOzs7O1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7VTtZOzswQixXLHlCOztVLE87VSxPOztVOzthOzsrQix5Qzs7VTtXOztjOzZDLHVCO1c7WTthO2U7O2dDOzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7TztRO1E7VTs7OzthOzs7ZSxzQjtlOztpQixXO2lCO2lCLEk7Ozs7Ozs7Ozs7ZTtnQjtpQixPO2lCLFU7OztpQjtnQjtnQjs7OzthOztjLFk7Ozs7Ozs7Ozs7a0I7bUI7cUI7Ozs7Ozs7bUIsTzttQjtxQjs7O3dCO21DOzt3QixrQjt1Qjs7bUI7bUIsWTtrQjtpQjtjLGdCO2M7ZSxXO2UsUTtlLE87ZSxVOzs7Ozs7Ozs7Ozs7O2UsRztnQixTOztnQjs7O29COzs7Ozs7Ozs4Qzs7bUI7aUIsTztpQixXOzs7Ozs7Ozs7O29CLG1CO3FCO3FCO3NCO3NCOzs7eUY7O29CO3FCLG1EO21COzs7b0I7OztvQjtxQjtxQjttQyxzQzttQjs7OztrQixNOzs7Ozs7Ozs0Qjs7OzttQjs7cUI7Ozt3Qjt3QixpQjt1Qjs7O3NCOzs7eUI7d0I7O29CO3FCOzs7Ozs7a0IsTTs7O2lCO2tCOzs7OztpQixjOzs7Ozs7OztrQixhOzs7aUM7a0I7bUIsZ0I7bUI7O2tCO21COzs7Ozs7O21CLGU7Ozs7bUI7Ozs7Ozs7O2dCOzs7Ozs7OztjOztZOzs7Tzs7Tzs7O1E7VTs7OzRCOzRCLGdDO1E7Ozs7TztTOzt1Qiw0Qzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7Ozs7O087OztPLE87USxNO087UTtVOzs0QixPLDJCOztRLFc7Ozs7VTt1QztTO087UTtVOzsrQiw2Qzs7O1E7UTtjLHdDLFk7Tzt1Qzs7O087OztPOzs7UTtRLGU7TztRO1MsTztTLFU7UyxPO1MsVTs7Ozs7Ozs7Uzs7OztVLE87VSxVO1UsTztVLFU7Ozs7Ozs7OztZOzthO2E7O1k7Ozs7UyxNOztRLE07Ozs7O1E7O1M7Vzs7NEI7O1M7VywyQyxjO1MsTztTLGtCO1MsTTtTO1E7Ozs7O2tCOzs7Ozs7TztRLE07O1E7O1M7Vzs7NkIsMEM7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7UTs7UyxPO1M7Vzs7OztjLFc7YyxPO2E7Ozs7Tzs7O1E7O1c7O1E7UTs7Ozs7YTs7Ozs7OztVLFc7VTs2QjtTOztPOzs7Ozs7VSxNOzs7Ozs7TztjO1E7O1csTzs7O3FCOztvQjs7VTtPO1E7O1MsVzs7O1k7YSxROzs7WTtZLEk7Ozs7O2E7YyxVOzs7YTs7OztnQjttQztlO2E7OztZO1c7UyxvQjs7Ozs7O1E7UztXOzs7YyxJOzs7OztlO2dCO2tCOztvQyxvQixjOztnQjs7Z0IsTTtlOztnQjtrQjtpRCxZO2dCOzs7O2tDOztvQixLO3FCO29COzs7OztnQjtlLE07Ozs7YzthOzs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O1E7VTs7aUMsdUI7OztRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Ozs7VTt5QztTO087UTtVOzsyQiwrQzs7UTtPOzs7OztpQjs7OztPOzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087O1E7Tzs7Tzs7O1E7UTtPOztPOzs7O1E7UTs7OztpRzt5Qjs7TztPOztPOzs7Ozs7O1E7O1E7OztnQzs7O1MsTTtROztTLE87UyxPO1MsVzs7O3VDLGU7Ozs7OztPLEksaUQ7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztROztxQztRO1EsTztPOzs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7O087Ozs7Ozs7OztPOzs7UTtVOzs7YSxJOzs7Ozs7Ozs7Ozs7b0IsSSxTOzs7OztxQjs7d0I7O29ELHFCOzs7cUIsTTs7O29CO3FCLFE7Ozs7OztvQixJLFc7Ozs7OztxQjtzQixPO3NCLE87O3NCO3FCO3FCOzs7O29CO3FCLFE7Ozs7Ozs7Ozs7O21CLEksVzs7Ozs7b0I7O3VCOzttRCxxQjs7O29CLE07OzttQjtvQixRO29CLFc7Z0M7Ozs7OztjLEksVTs7Ozs7O2U7Z0I7aUIsTztpQixROzs7O2tCOzs4QjttQjs7O3NCLGE7Ozs7OztzQjs7Ozs7Ozs7Ozs7ZSxNOzs7YyxJOzthO1k7O2E7YSxPO1k7Ozs7USxXOzs7OztXO1ksTztZLE87WSxPO1c7Ozs7OztZLHNCOzs7O3FCOzs7cUI7dUI7Ozt1Qjs7Ozs7UTs7TyxNOztPOztRLFc7OztROztRLE07O08seUI7Tzs7Ozs7aUI7Ozs7Tzs7O1EsVzs7Ozs7TztRLE07O087USxRO1E7USxXO29CO1E7Tzs7Ozs7aUI7Ozs7O087OztVO1U7WTsyQyw4QjtXLE07O1U7Uzs7O087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2MsTztjO2E7Ozs7OzthOztnQjs7NkMsc0I7OzthLE07Ozs7UyxTO1E7OztPLE07O087Ozs7USxLO1E7VTs7OztjO2MsTzthOzthO2M7Z0I7OzttQjtvQixROzs7bUI7bUI7O29CLFE7b0IsTztvQixTO29CLGE7b0I7OztvQjs7cUI7dUI7Ozs7Ozs7O21CO2tCOzs7OztjO2E7WTs7Ozs7Tzs7Ozs7Ozs7O087OztRLFc7OztRO087O087OztRO1E7Ozs7OzswQjs7O3lCOzs7Ozs7O087Ozs7Ozs7Ozs7OztROzs7Tzs7USxRO1EsYTs7OztVO3lDO1M7TyxJLGlEO087Ozs7O2lCOzs7O087OztRO1U7OzthLFk7YTs7YyxRO2MsTTthO1k7O2E7YSxPO1k7Ozs7Ozs7VyxXO1c7OEI7VTtPO1EsTztRLFc7Ozs7O1c7WTs7O1ksTztZO1c7Ozs7OztZOzs7ZTs7OztvQjtvQjs7bUI7O21CO29CO3NCOzs7eUIsTzt3Qjs7eUI7eUIsTzt3Qjs7O29CO21CO2tCOzs7O2EsTzs7O1k7YTs7O2EsTzs7Ozs7O1E7Ozs7Ozs7OztPLE07O087O1EsVzs7O087OztPOzs7UTs7Ozs7O2E7YTtZOzs7Tzs7Ozs7Ozs7O087O1EsTztRLE87USxXOzs7O1csTTs7Vyx5Qzs7WTs7YTthLE87b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsSztRLFc7OztRO087Tzs7Tzs7Ozs7UTtVOzs7YTs7Yzs7O2MsVTtjLFc7Ozs7O2E7O2M7OztlLEs7O2U7ZTtpQjs7Ozs7ZSxTOzs7OzthO2MsaUI7YztnQjs7YyxZO2MsWTtjO2M7Ozs7aUI7O2MsUTthLEk7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7VztZO1c7Ozs7OztZO2M7OztpQjtrQjs7O2tCLFU7a0IsUztrQixVO2tCLFk7a0I7b0I7a0I7b0I7O2lCLEk7Ozs7OztrQixNOzs7aUI7OztnQjs7Ozs7Ozs7WTs7O1k7VztZO2EsTzthLE87WTs7Ozs7O1ksTTs7O1c7Vzs7UTs0Qjs7O1EsTztRLFE7UTs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7OztXOztZLE87WTs7WSwwQjtZOzs7OztzQjs7OztXLE07Ozs7O08sTTs7OztJOzthO2E7WTs7YTsyQztZOzthOzs7NEQ7O2E7WTtHOzs7Ozs7STtLOztNO1E7OztXO1ksUTs7OztZLFU7Ozs7Vzs7O1U7Ozs7Ozs7O0s7TTtPLE87TyxPO08sVTtNO007TTs7Ozs7O00sTTs7SyxXO0s7YTs7OztJO0ssVTs7OztLLEs7SztPOzs7O1c7VyxPO1U7O1U7VyxROzs7VTtTOzs7O0s7SyxVOzs7Ozs7Ozs7TSxHLDRCLDBEOztLO2E7Z0I7TTtPO1EsTztlO087UTtRO1EsSTs7Ozs7UTs7Ozs7TTtPLGM7TztPOztnQjs7Ozs7OztPLE07OztLO00sVTs7O0s7SyxJOzs7O00sc0IsVztNLE07Ozs7O0k7OztJOztPOzsyQixxQzt5QixPLHdDO0k7Rzs7O0k7Szs7TTs7Ozs7WTs7Ozs7Ozs7Ozs7Ozs7SSxnQztJO0c7O0k7O087VTtVO0ksTzs7OztjO2UsTztlLFE7ZSxROzs7ZSxVOzs7ZSxPOztlLFc7ZSxHLDJDO2UsVztlO2UsWTs7Ozs7aUMsTzs7O2UsTztjO2MsVTtjO2M7YTtHOztJOztLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJOzs7STs7SyxNO0s7OztLOzs7Ozs7c0I7OztTOztVLFc7bUI7Ozs7OztJO0c7O0k7Ozs7O0s7SyxtQjtJLE87Ozs7YztlO2dCLE87Z0IsUTs7Ozs7OztlOzs7Ozs7Ozs7Ozs7OztlLE07Ozs7YyxHO2UsUztlO2dCO2dCOzs7OztpQixNOzs7Ozs7OztjO2E7O0c7Ozs7Ozs7Ozs7STs7Ozs7O0k7OztNO087O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7O1k7YSxjOzs7Ozs7O1k7Vzs7WTs7Ozs7O1k7VzsyQixTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Tzs7Ozs7Ozs7Ozs7Szs7OztLOzs7TTs7Ozs7O1c7WTs7Ozs7O2dCOzs7Ozs7OztXO1U7Ozs7Ozs7Szs7O1E7dUM7TztLOzs7Ozs7O0k7Ozs7O0s7Ozs7OztLLEs7TSxNO0ssaUI7SztNO007Ozs7O08sTTs7Ozs7OztPOztRO1E7O1U7Ozs7O0s7TTs7Ozs7O0k7Szs7Ozs7Ozs7OztVO1c7Ozs7Ozs7Ozs7Ozs7VztVO1M7Ozs7Szs7Ozs7Ozs7TSxPO00sVztLOzs7UTtxQztPO0ssVztLO007Tzs7O087Uzs7MEI7O087Ozs7SyxTOzs7O2tCOzs7TTtPO087OztLOzs7Ozs7Ozs7SSxNOzs7STtLO087O3lCLG9DOztLO0s7OztNO00sTTs7Ozs7Ozs7O0k7SyxTOzs7O0s7Ozs7Ozs7OztJO0c7O0k7Ozs7SztLLG1CO0s7Tzs7OztVO1c7YTs7OztnQjtpQjttQjs7OztzQjt1QixJOzs7c0I7cUI7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7Ozs7OztpQixNOzs7Z0IsZTtnQjtlOzs7OztXO3dDO1k7O3lDO1c7OztXLE07O1UsTTs7Uzs7Ozs7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7Szs7SztNO007TztTOzs2QixPLG1DOzJCLDhCO087Uzs7OzthOztZOztZOzs7YSxPO2E7WSx1QjtZO1c7OztPLE87Tzs7Ozs7Ozs7USxNOztNLE07OztJOzs7OztLO007OztNO2dCOztLLE87OzZCOztJO0k7Ozs7UztVLEs7VSxROzs7O1Usd0IsTztVOztTO1E7SyxHO007TyxPOztTOzsrQixPLDRCOzs7Ozs7Ozs7STtLOztLO0s7O0k7Ozs7SztPOzt5Qiw4Qjs7Ozs7Ozs7Ozs7O087UTtTLE87UyxVOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztLLE87SyxVOzs7OztLOzs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7O1M7OzBCOzs7Ozs7O1E7TTs7O007O1M7OztZO1ksTztXOztLO2M7SztNOzs7Ozs7Ozs7OztNOzs7O1U7Ozs7OztNO007TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07OztJOzs7Szs7O007TztPO087TSxNOzs7Ozs7Ozs7STtLLFU7Ozs7O0s7Ozs7Ozs7OztJOzs7Ozs7O08sdUI7Ozs7Ozs7Ozs7O0k7TztLLFc7SyxNOzs7STs7d0I7SztPOzs7O1U7VzthOzs7O2dCO2lCLFE7OztpQjs7Z0I7ZTs7Z0I7Z0I7Z0I7OzswQjsyQixPOzs7MkIsTzswQjs7Ozs7eUI7ZTs7OztVO1M7Ozs7O0ssVTs7SyxNO0k7OztLOztLLDBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0k7SyxPO0s7Tzs7O1U7VTtTOzs7O0s7Ozs7Ozs7OztLLE07O0ksTTs7O0k7O087dUMsOEI7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSztLLE87STtLO00sTztNLGM7Ozs7Ozs7Ozs7Ozs7OzthOztLLGtCO0s7O3VCLDZDO0s7O0k7STtJO0c7Ozs7Ozs7Ozs7O0k7SztPOzt5QixrQixZOztLO087STtLOzs7UyxXO1MsVztTLFk7OztpQjtXLFc7Vzs7O2Msa0IsUTs7ZSxNO2M7YTs7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7SztPO0s7TztLOzs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7OztJLGtCO0ksTzs7OztjO2UsTTtlO2U7ZTtpQjs7OztxQjtxQjtxQixPOzs7K0I7K0IsTzs7OEI7O29COztvQjtxQjtxQjt1Qjs7OzBCOzs7OzJCOzZCOzs7Z0M7aUM7bUM7Ozs7c0MsTzs7cUM7aUM7aUMsVztpQzs7aUM7Ozs7O2lDO2dDO2dDOzs7Ozs7Ozt3Qzs7Ozs0Qzt5SDs0QzsyQzs7K0I7O2dDO2dDLE87OytCOzBCOzBCOzs7Ozs7Ozs7OzsyQixPOzBCOzs7Ozs7Ozs7eUI7O3FCO3VCOzt5QywwQixpQjs7cUI7dUI7OzswQjswQjt5Qjs7Ozs7c0I7dUIsa0I7O2tDOzs7cUI7c0IsOEIsVzs7OztvQixhOztxQixPOzs7K0I7K0I7OEI7O29CO29CO29CLEc7cUI7O3dCOzt5Qzs7cUI7cUI7O29COztrQyxPLGlCOzs7cUIsVztvQjs7O3VCO3VCLE87NEQ7O3NCOztvQjs7Ozs7bUI7Ozs7O2UsVztlO2lCOzs7b0IsTzs7OzhCOzs7Ozs7OytCO2lEOytCOzttRCxlO21ELGU7OzsrQjs7OztrRDs7Ozs7OEIsTzs7Ozs7Ozs7NkI7O21CO2tDO2U7YztlO2dCLE87K0I7Ozs7ZTtnQjtrQjtnQjs7bUIsWTs7bUI7O2dCO2tCOzs7cUI7Ozs7O3NCO3NCLFE7OztzQixNOztxQixtQjtxQjtvQjs7Ozs7O2U7Z0I7a0I7OztxQjtxQjtvQjs7Ozs7YztlO2lCOztrQzs7ZTtpQjs7a0M7Ozs7O2UsTTs7Ozs7OztlOzs7a0I7OzttQjtrQixPOzJCOzs7OytCOztnQzs7OztpQztpQyxPOzs7O2tDOzs7cUM7OztzQztzQyxvQjs7b0M7O2lDOzttQzt3Qzs7Ozs7Z0Q7OztpQztrQzs7OztzQzs7a0MsTztrQyxRO2tDLE87OztrQyxPO2lDOzs7Ozs7Z0M7OytCOzhCOztpQjs7ZSxPOzs7Ozt5Qjt5Qjt3QjtjO2M7ZSxrQyx1Qjs7ZTs7O2U7ZTs7Yzs7O2M7eUM7YTs7OztJOzs7SztPOzs7VSxXO1M7O0k7OztlOztrQjs7O3FCO3FCO29COztlLE87Yzs7Ozs7Ozs7YztjOzs7Ozs7OztjOzs7O2M7Ozs7YTs7Rzs7O0ksTzs7Ozs7YztlOzs7O2U7Ozs7ZSxPO2UsUztjO2tDO2M7YTtHOzs7Ozs7Ozs7STtLLFE7SztPLDJDOztLO087Ozs7VztXOzs7YyxvQjtjLGM7YTs7O1c7VyxPOzs7cUI7cUI7O3FCLHlCO3FCOztvQjs7O1U7O1UsOEI7VTtXO2E7OztnQjtpQjttQjs7cUMsTyw0Qjs7aUI7aUIsa0I7aUIsVzs7OztpQixPOzs7OzsyQjs7OzBCOztnQjtpQjttQjtpQjs7O2lCOztnQjtpQjs7O29CLFk7Ozs7c0I7Ozs7O3VCLE87Ozs7OztvQjtvQjs7bUI7OztnQjs7O21CO21COzhCOzs7O2tCOztnQjtlOztnQjtnQjtnQixPOzt1QyxxQzs7ZTs7Ozs7O1c7VzthOzs7Z0I7OztpQixPO2dCO2U7O1U7eUMsTyxpQjs7O29ELGU7OzBELGU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVO1c7VzthOzs7Z0IsTzs7Ozs7MEI7MkIsTzsyQixPOzBCOzs7MkI7NEIsTzs0QixPOzJCOzs7Ozs7OzBCO3lCO2U7O1U7VyxxQjt5RDtXOzs7O1c7OztnQjs7YSxNOzs7O2U7OztrQixzQixPO2tCLE87OzRCO2lCOzs7Ozs7O1U7VztXO1c7YTs7O2dCLE87Ozs7OzBCLGlDOzBCOzJCOzJCOzJCLE87MEI7Ozs2Qjs4QixLOzhCLE87OEI7OEI7NkI7Ozs7NkM7c0Q7OzhCOztpQzs7aUM7O2tDLE87aUMsTztnQzs2QixPOzs7O3VDOzs7Ozs7O3VDLFc7dUM7Ozs7c0M7NEI7OzBCO3lCO2U7OztXO2E7OztnQjtnQjtnQjs7aUI7aUIsUTs7aUI7OztrQjtvQjs7O3VCO3NCOzt1Qjt1QixPO3NCOzs7a0I7b0I7Ozs7O3VCO3NCO2lCOztnQjs7bUI7Ozs7O3NCO3NCO3FCO2dCO2U7Ozs7OztXO1ksVTs7O1c7Ozs7NkIsTyx5Qzs7VTs7YTs7O2dCO2dCO2U7OztVOzs7YTthLE87Ozs7O3VCO3dCO3dCLFM7dUI7dUI7c0I7WTs7O1U7Ozs7O2tCOzs7cUI7Ozs7O3NCLE87cUI7b0I7O1M7Ozs7O0ssSTtLO087OztVO1U7Uzs7O0k7Szs7O1Esb0I7Ozs7WTs7K0M7O1EsTTtPOztJOzs7TztPO007O0k7STs7O0k7Szs7eUIsZTt5QixlOzs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtLO087Ozt5Qjs7VTtVO1M7Szs7Szs7TTthO0s7O0k7Rzs7SSxPOzs7O2MsTzthO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7YyxtQjs7YzthO0c7O0ksWTtJLG1CLFE7Ozs7Ozs7SztNO1E7O1c7OzthOzs7ZTtNOzs7UyxPOzs7TTs7O08sTztNLFc7O0s7O0k7OztJLFc7OztLLE87STtJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJLE87Ozs7O2M7Ozs7Ozs7O2E7O0c7O0ksSztLLE87STtLLE87SyxPO0ksTztHOztJOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Ozs7Ozs7O1EsTzs7USxPOzs7USxPOzs7USxPOztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7aUIsTztnQjs7Tzs7O1E7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsVztpQixPOztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7Ozs7aUI7O2tCLE87aUI7Ozs7Ozs7O2lCO3lCO2lCLHVCO2dCOzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OzthLG9CLFE7OzhCOzs7Ozs7Ozs7Tzs7Ozs7OztrQjs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztRLE87UTtVOzs7YSxtQjs7YTtZOztPOzs7Ozs7Tzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7aUI7a0IsTztrQixPO2lCLE87O2dCOztPOzs7Ozs7USxVOztRLGM7Ozs7OzswQjs7Ozs7UTtTOztZO1c7Uzs7UztTO1M7O2tCOztTLFc7UyxNO1EsTzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROztXLFc7VyxPO1U7UTs7VzttQjtXLE87VTtPLE87OztPLHNCLE87TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7aUIsTzs7Ozs7MkI7MkIsRzs0QixXOzRCOzs7Ozs7Ozs7OzRCOzZCLE87Ozs2QixPOzZCLE87NEI7Ozs7Ozs7OytCOzs7Ozs7OzsyQjswQjtnQjs7O087Ozs7O1EsWTtRLFM7TyxPOzs7OztpQixPOzs7Ozs7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLE87OzBCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsVztpQjtpQjtnQjs7OztPLE87Ozs7O2lCLE87Ozs7OzJCOzs0QixPOzJCOzsrQzs7MkI7MEI7Z0I7Ozs7TyxPOzs7OztpQjtpQjtnQjs7O08sbUIsTztPLE87O08scUIsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87TyxPOzs7Ozs7Ozs7OztPLE87Ozs7O2lCO2lCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsTzs7Z0I7Ozs7TyxPOzs7TyxPOzs7OztpQjs7Ozs7OztvQjtxQixXO3FCLE87cUIsTztvQixPOzttQjs7b0IsTzttQjs7MkI7Ozs7Ozs7Z0I7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7OztROztXO1ksTzs7WSxXO1ksTzs7O1csVztXLE87Ozs7Ozs7TztRLDRCOzs7USxPO08sTzs7Ozs7Ozs7aUI7O3FDOzs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7TyxxQixPO08sTzs7O087OzJCOzs7O2E7OzsyQjs7MkI7OzJCOzsyQjttQzs7TyxPOzs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7UTs7O1csTzs7USxPO1EsTztPLE87Ozs7Tzs7Ozs7OztpQixPOztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTzs7Z0I7O2lCLE87Z0I7OztPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztROztXLFc7VyxPO1U7UTs7Vzs7O1k7WTtjO1csTzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7OztpQjs7O08sc0IsTztPLE87Ozs7SSxPOzs7OzZCLDJCO0c7Rzs7O007O087O3FDOztNO0s7Ozs7STsyQjtHO3NDLGtDOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJOzs7USxNO087SSxvQjs7Ozs7O0k7SyxPO0ssTztLLE87SSxXO0c7cUIsc0MsWTs7O0k7SyxROzs7O0ssTTs7Ozs7OztrQjtHOztJO0ksTztHOztJLFc7STtHOztJLFc7STtLLFE7SyxRO0ksdUI7SSxNOztHOztJO0k7OztNOzs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxNO0ksTzs7Ozs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7O2U7YztjOzs7aUI7OztrQixVOzs7aUIsRztrQixNOztpQjtrQixVOzs7a0IsTztpQjtpQixXO29CO2tCO21CLE87bUIsTztrQixNOzs7aUI7a0I7b0I7Ozt1Qjt3QixNO3dCO3VCLEksc0M7Ozs7Ozt3QixNOzs7c0I7OztrQjtpQjtpQjs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsVztrQjtpQixJOzs7O21CLE07Ozs7aUI7O29COzs7Ozt1QixPOzs7O3NELDhCOztrQyxPOzs7OzJELGEsa0I7aUM7aUM7Ozs7b0M7OzhDOzhDOzhDOzhDOzZDOzs7Ozs7OztvQzs7OEM7K0MsTTsrQzs4Qzs4Qzs2Qzs7Ozs7Ozs7b0M7OzhDOytDLE07K0M7Ozs7K0M7O2dELGM7K0M7K0M7Z0QsTTtnRDtnRDs7O2lEOzs7b0QsSSxNLHFDO29ELEk7Ozs7OztxRCxNOzs7Ozs7bUQ7OytDOzs4QzsrQyxNOytDOzhDOzhDOzZDOzs7Ozs7b0M7OzhDOytDOzs7OEM7NkM7OztvQztvQzs7O29DLE07K0Q7Ozs7O3NCO2lCO2lCO2tCO2tCO2lCOztpQjs7OztrQixNO2tCO2tCO29CO3VCOztrQjtrQjtpQjs7O2lCLE07NEM7OztpQjs7O2tCLFU7OztrQjtpQjs7YTtHOztJO0k7SztLLE87STs7Ozs7Ozs7OztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7SztPOzs7VTs7OztXLE87VztXO1U7Uzs7Ozs7SSxJOzs7O00sTTs7OztJO0s7SztLO0s7SztLOzs7Ozs7Ozs7O0s7Tzs7Ozs7VSxPOzs7b0I7Ozs7Ozs7OztxQjtxQjtvQjtxQixPO29CO29COzs7Ozs7O3VCOztpQzs7O2lDO2lDO2lDO2tDLGM7a0MscUI7a0Msb0I7a0M7b0M7a0M7b0M7aUM7Ozs2RDs7O3lDO21DOztxRDttQzs7eUM7bUM7MEQ7bUM7Ozs7a0M7bUMsTzttQyxjO2tDO21DLE07OztpQztrQztvQztrQztvQztrQztvQzs7O3VDOzs7Ozt3Qzt3Qzt3QyxLO3dDO3dDLFM7dUM7c0M7Ozs7Ozs7a0M7b0M7Ozt1QyxzQjtzQzs7OztrQzs7bUM7bUM7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7O2tDO2lDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7O2tDOztxQzs7O3dDLE87dUM7cUQscUM7a0M7Ozs7dUMsVzs7Ozs7b0M7O3FDO3FDO3FDLEs7cUMsUzs7Ozs7Ozs7Ozs7Ozs7O2tDO21DOzs7Ozs7Ozs7bUM7a0M7Ozs7Ozs7OztpQzs7O3VCOztpQyxHO2tDLE07Ozs7Ozs7aUMsRzs7bUM7OztrQyxNOzs7Ozs7O2lDOztvQzs7O3VDLE87c0M7O2lDOzs7O3NDLFc7Ozs7O21DOztvQztvQztvQyxLO29DLFM7Ozs7Ozs7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7OztrQztrQztvQztrQztvQztpQzs7Ozs7Ozs7O2dDOzs7Ozs7Ozs7d0I7O2tDO21DLFE7bUMsTTttQztrQztrQzttQzttQztrQzs7Ozs7Ozs7O2lDOzs7dUI7O2lDLEc7a0MsTTs7O2lDLEc7O21DOzs7a0MsTTs7Ozs7Ozs7O3FDOztpQzs7O2tDO21DOztvQyxRO29DLE07Ozs0QztrQzs7O21DLGM7Ozs7O3VDO3dDLE87d0MsTzt1Qzt1QyxXO3VDOzs7dUM7OztnRDt3QyxNO3VDOzs7Ozs7bUMsTTs7Ozs7Ozs7bUMsTTs7Ozs7Ozs7a0M7bUM7bUMsZ0I7bUM7Ozs7Ozs7OzttQzttQztxQzttQztxQztrQzs7Ozs7Ozs7OztpQyxNOztnQzs7Ozs7O3VCOztpQztrQzs7O2tDO2tDO2lDOzs7Ozs7Ozs7Z0M7Ozt1Qjs7aUM7a0M7a0MsZ0I7a0M7a0M7aUM7Ozs7Ozs7OztnQzs7O3VCO3VCO3dCO3dCO3VCOzs7Ozs7Ozs7Ozt1QixNO2tEOzs7Ozs7UztLO0ssUzs7STtJO0k7O087OztVLFc7VSxPO1M7Ozt3QjtLLE07O0k7STs7SztPOzs7VTs7Ozs7Ozs7NEIsZTs0QixlO1c7VyxPO1c7Ozs7OztjO1UsTztTOzs7O087OztXO1c7O2M7Ozs7Ozs7O2U7aUI7OztvQjtvQjs7bUI7OztjO2U7O2dCO2tCOzs7cUI7cUIsTztvQjs7O2dCLEs7Z0Isb0IsZTtnQjtnQixPO2dCLDZCOztrQjs7OztjO2U7Ozs7O2M7Ozs7Ozs7O2U7Ozs7O2U7ZTs7OztjOzs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7ZTtlOzs7O2M7Ozs7OztlO2U7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsSztxQjtxQixPO3FCLFk7cUI7dUI7OzswQixPOzt5QjtxQjtxQjtvQjttQjs7O2M7Ozs7O2U7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsWTtxQjtxQjt1Qjs7cUIsWTtxQjt1Qjs7OzBCLE87eUI7cUI7b0I7bUI7OztjOzs7O2U7Ozs7VztVOzs7O0ssVztJOzs7OztJOzs7SSxPOzs7OztjOzthO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPO1E7VTs7MEIsTyw0Qzs7USxVOzs7USxTO1EsTztPO08sVztVO1E7UyxPO1MsTztRLE07OztPOzs7VTtVO1csVztXOzs7Ozs7VyxNOzs7Uzs7O087TztRO1E7Ozs7Tzs7Ozs7Ozs7Tzs7UTs7O087Ozs7UTs7OztTO1MsTztTLE87b0I7UyxPO1MsTztTLE87UyxrQjtTLE87UyxPO1MsYTtTLE87UyxPO1MsUztTO2U7UyxPO1MsTztTLE87UztXO1E7O087OztRO1U7OzthLE87O1k7O2E7YTs7YyxPOzthLE87WTs7Ozs7UTtVOzs7YTs7O2M7YyxLO2MsTzs7YyxXO2E7OztnQzs7Ozs7O1k7O1EsTztRLFE7UTtVOzs7Ozs7O1E7VTs7O2E7O1k7USxPO087Ozs7OztVOzs7Ozs7Ozs7Ozs7Ozs7TyxTO087OztRLGM7Tzs7Ozs7Ozs7O087USxNO087UTtVOzs7YTs7WTt5QixvQzs7Ozs7O1E7OztTLEc7O2M7O1E7UyxPO1MsTzs7Uzs7WTs7OEIseUM7O1M7VTs7YTs0Qyx1QjtVO1c7WTtjOzsrQjs7WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7Ozs7YTs7YyxtQjtlO2dCLEs7Z0IsTTtnQixNO3VCOzs7eUI7O2E7WTs7O2EsVztZOzs7O1csTTs7Ozs7OztxQjs7OztZOztjOzs7aUI7aUIsaUI7Z0I7Ozs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7UztXOzs7YztjO2E7OztTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVTs7O1EsTztRO1U7OzthOzs7O2M7YyxLO2M7Z0I7OztrQyx1Qzs7YyxXO2M7OzJCOzs7Ozs7YztjLE87YyxPO2E7O3FCO1k7Ozs7O1E7O1Esb0I7Tzs7Ozs7Ozs7Tzs7O1E7VTs7OztjOzs7ZSxPO2M7YyxXO2MsTzthOzthO2M7Z0I7OzttQjs7OzttQjttQjtrQjtjO2dCOzs7bUI7bUI7bUI7a0I7YTtZOzs7USxROztRLE07O087UTs7OztRLE87USxPO087Tzs7Ozs7Ozs7O08sTTtrQzs7Tzs7O1E7UTtVOzs7O1U7UTs7Tzs7O0c7SSxNO0ksYTs7Ozs7STtJOzs7O1E7OztTO1c7YztjO1M7UztRLE87Ozs7O2dCLE87OztHOztJO3VCLE87STs7O0s7TztVO1U7SztLO0ksTztHOztJLEksaUI7Ozs7O3NCO007Ozs7O0k7SyxPO0ssSzs7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1c7Ozs7WSxPO1c7VyxPO1U7O1U7OztXO1ksZTtZOzs7OzthLE07Ozs7VTtXLFk7VzthOzsrQixvQixjOztXO1U7OztXO1ksTTtZLE87Ozs7OztXLE07O1UsaUMsTztVO1M7Ozs7Ozs7SyxVOzs7SyxTO0ssTTtLLE87STtJO0ssVztLOzs7OztNLE07Ozs7O0ksUztJLEk7Ozs7SywyQjtLLE07O0ksVztJO0k7SyxVOzs7SyxPO0k7SyxXO0s7Ozs7O00sTTs7OztJLEk7Ozs7SyxrQjtLLE07OztJO0s7TSxPO007Szs7Ozs7O0ssTTs7O0k7SyxPO0ssZTtLOzs7Szs7O1E7Ozs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7Ozt3QjtLOztLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztLLE87SyxVOzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7O0s7OztROzs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7O0k7Ozs7STs7Ozs7Ozs7Ozs7Ozs7STtLLFE7SztPOzs7VTtXLE87VyxPO1csTztXLE87VTs7a0I7Ozs7Uzs7SztPOzs7O1U7VzthOzs7Z0I7Ozs7Ozs7O2lCLFE7aUI7Ozs7aUIsUTtpQjs7OztpQjttQjs7cUMsaUM7O2lCLGdCO2lCOzs7O2lCOzs7Ozs7Ozs7O2lCOztzQjs7aUI7bUI7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7Ozs7VTtTOzs7SztPOzs7VTs7Ozs7Ozs7Ozs7OztXO1UsSTs7Ozs7VyxNOzs7VTtVO1U7VTtVO1U7VTtVLFc7VTtZOzs7ZSxrQjtlLE07O2M7O1U7VyxPO1csUTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OEIsTyx3Qzs7O2dCLE87ZTtVLE07Ozs7SyxRO0ksSSxjOzs7Ozs7SyxNOztJO0ssUTtLO087Ozs7Ozs7Ozs7VTtXO1ksTzttQjs7O1U7VyxPO1csTztXLE87VSxPOzs7O0s7Tzs7O1U7Ozs7Ozs7Ozs7OztXOzs7VyxrQjs7WTs7O2EsVTs7O2EsVTs7O2EsTztZO1ksSTs7Ozs7O2EsTTs7O21CO2EsTTs7OztXLE07O1U7Ozs7Ozs7Ozs7Ozs7O0k7RztHOztJO0k7SyxhO0s7O1M7Ozs7OztJO0k7Rzs7STtLLGE7SztJO0k7Rzs7STtLOzs7SztPO3VDLDZCO0ssVTs7O0k7STtHOztJO0c7O0k7Szs7O0k7WTs7O2U7Ozs7Ozs7O2M7OztHOztJO0k7O0s7O1M7Ozs7Ozs7O0k7SSxZO0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7UTtROzs7USxPOzs7a0I7cUM7O2tCO2lCOzs7OztROzs7OztpQjs7Ozs7Rzs7STtLLE87SyxPO0ssTztJO0c7O0k7Szs7Yzs7O0k7O3NCOztJO0c7O0k7O087O087ZTs7Rzs7SSxPOzs7OztjO2U7Z0IsTztnQixTO2UsTztjO2M7dUI7d0IsTzs7OzswQjswQjs7Ozs7Ozs2QixPOzRCOzs2QixPOzRCOzBCLE87OzswQixPOzs7Ozs7O29DLE87O21DOztvQyxPO21DOzswQjs7OzsyQixPOzBCLE87OzswQjs7MkIsTzswQixPOzswQixPOzswQjs7MkI7OzhCOytCLE87OEIsVzs4QixPOzs7MEIsTzs7OzBCOzsyQixPOzBCLE87Ozs7Ozs7OzBCOzsyQixPOzBCLE87OzBCOzsyQixPOzBCLE87Ozs7OzswQjs7MEI7MkIsTzsyQixPOzJCLE87MkIsTzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsVztvQyxPOzttQzs7b0MsTzttQzs7MEI7Ozs7MkI7MkI7Ozs7MkIsTzsyQjs2Qjs7MEIsTzs7Ozs7Ozs7OzswQjs7OzJCOzJCOzZCOzswQixPOzs7MEI7Ozs7MkIsTzswQixPOzs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsTzttQzs7b0MsTzttQzs7MEI7Ozs7MkIsTzswQjswQixXOzBCLE87Ozs7Ozs7Ozs7OzBCOzs7OzJCOzs4QixPOzs2QjsyQixPOzBCOzBCLFc7MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87OzswQixPOzs7MEI7OzsyQjs7OEI7Ozs7K0I7OytCLG1COzhCOzhCOzhCOytCLE87OEI7OEI7K0IsTzsrQixPOzhCLE87Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7Ozs7OzswQjswQjs7MkIsTzsyQjs2Qjs7OztpQyxPO2dDOzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7MEI7Ozs7MkIsTzsyQixPOzBCLE87Ozs7Ozs7b0MsTzs7Ozs7Ozs4QyxPOzZDOzs4QyxPOzZDO21DOzs7MEIsTzs7Ozs7OztvQyxPO21DOztvQyxPO21DOzs7Ozs7OzBCLE87Ozs7OzJCLE87OzswQixPOzs7OzBCLE87OzswQjs7MkI7MkIsTzswQixPOztzQjs7YTtHO0c7OztNOztPO2U7Ozs7c0M7OztxQzs7TTtLOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7STs7d0Isc0I7O2lDOztPLE07OztPOztHOztJLFk7OzswQjs7O08sTTtlLE07O0c7O0ksWTs7OzBCOzs7TyxNOztPLE07O0c7O0k7SyxPO0s7Tzs2QztJLFM7STtJLE07Rzs7STs7SztNLFM7TSxPO0s7SyxVO0s7STtJO0ssTzs7O2UsVztlLE87Yzs7O0k7STtLLE87SyxROzs7Szs7O08sSztROzs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTtJLE87O0c7O0k7SztPOzs7OztVO1M7OztLO0k7RztHO0k7OztRLE07Tzs7OztJOztPLDJDO0ksTzs7O2M7OztlLE87YyxPOzs7d0IsVzt3QixPOzt1Qjs7YTs7Rzs7STtLLFc7SztLLE07O0s7O00sbUI7TSxROzs7OztJO0ssWTtLLFM7SyxPO0ssTztLLFE7STs7O2M7OztJLFk7STtJLE87OztJO0k7OztROzs7OztRO1E7USxPOztRLE07O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7Ozs7STtHOztJLEkseUI7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7OztjLGlCLE87Yyx1QztjOztlOzs7Ozs7Ozs7Ozs7Ozs7bUIsTzs7OztjOzs7YTs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OzJCLFM7O0ksTztHOzs7Ozs7Ozs7Ozs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEc7UTs7TSxxQjs7OztJOzs7OztNOztLO0s7Ozs7Ozs7Ozs7OztZOzs7Ozs7Z0I7bUI7YTtjLFE7YyxPO2MsTzs7O2MsTztjO2dCOzs7bUI7Ozs7Ozs7O21COzs7O29CLE87b0IsTzttQixPO2tCOztjOztpQjs7bUMsTywyQjs7Ozs7Ozs7Ozs7Ozs7O2MsTztjLFM7YztnQjtjLFk7YztnQjs7Ozs7Ozs7YztjOzs7O2E7Ozs7Ozs7O2E7Yzs7Ozs7Ozs7Ozs7Ozs7OztjO2M7Z0I7Ozs7YTs7Ozs7Ozs7Ozs7WSxHOzs7O2EsTTs7O1ksYztZOztZOzs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7UyxHO1U7VyxVO1c7YTs7Vzs7Vzs7OztXLFc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHO2M7ZSxZO2U7ZSxRO2U7ZSxVO2M7Yzs7Ozs7Ozs7YSxHO2M7ZSxZO2UsZ0I7Yzs7O2M7Ozs7OztTLEc7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7Ozs7O1ksRzthO2MsWTtjOzs7Yzs7O2E7YztlLE87ZSxPO2U7Yzs7Ozs7YTs7OzthOzs7Ozs7O0s7OztLOztROzs7Vzs7OztNLE07OztLO0k7STtLO00sUTtNOzs7Szs7Ozs7TztROzs7USxVOztRLE07Tzs7O1E7O1EsTTs7Ozs7OztjOzs7O2dCO2tCOzs7cUI7b0I7O2lCO2tCOzs7Ozs7Ozs7O2lCLE07Ozs7O2MsTzthOzs7Ozs7Ozs7Ozs7Ozs7Yzs7O3dCOzsyQjs7NEMsd0M7Ozs7eUI7Ozs7Ozs7OzswQjsyQixjOzJCLFU7MkIsUTs7Ozs0Qjs7NkI7K0I7Ozs7NkIsTTs7Ozs7Ozs7Ozs7OzBCLE07Ozs7O3dCO3VCO2E7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7Ozs7OztVO1csTTs7Ozs7Ozs7YTs7O2MsTztnQjthO2M7OztpQixrQjs7Ozs7O21CLGE7Ozs7O2lCLE07Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxJLGM7Ozs7YSxNOzs7Ozs7O2UsTztjOzs7VztZLE87O1c7WSxNOzs7OztlLE87Yzs7VTtXLE07VzthOztrQjs7O1U7O1csUTtXO2E7OztnQixPO2U7OztrQjs7O1U7O1cscUIsTyxvQztXLFE7VyxRO2tCOzs7Ozs7Ozs7Szs7SztLOzs7Ozs7SyxNOzs7OztJO0s7SztPOzs7VTs7OztVO1M7OztLLFE7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7O087O1EsTztPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O08sOEM7Tzs7O1U7OzthO2E7OzthO2E7cUI7O1M7O087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7OztROztTLFU7UztXOzs7YyxPOzs7d0I7d0IsVzt1Qjs7YTs7UztXOzs7YztjLE87YTs7O1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7O1E7O1M7UztTLFU7UztTLFU7OztTO1EsTzs7O1E7O1MsVTs7O1M7Uzs7O2M7OzthOzs7USxPOzs7O0c7O0k7STtZOzs2Qjs7Ozs7Rzs7STtLO0ssTztLLE87SyxPO0ssTztLLE87SyxPO0k7O2E7Ozs7Ozs7O0c7O0k7Ozs7Tzs7Ozs7Ozs7eUI7Ozs7O3lCO3lCOzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxRO2dCLE87OztLLE07OztJO0k7SSxPOzs7YztlOzs7Ozs7YTs7Rzs7STs7OztJO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7O0k7OzBCOzs0Qjs7NEI7OzRCOzs0Qjs7NEI7b0M7O0c7O0ksVztJLE87OztjO2UsTztlLE07ZTtpQjttRDtjLE87Ozt3Qjs7Ozs7d0I7dUI7Ozs7Rzs7STs7SztPOzs7VTtVLE87Uzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGlEOzs7O2E7TztRLG9CLGU7USxPO1E7VSx5QyxlO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOztJLE87Ozs7O2MsbUI7OztpQjs7a0I7aUI7OztpQixvQjtpQjs7OztrQjs7O21COzs7bUI7O29CLFE7b0IsTztvQixPO29CO29CO3NCOzs7Ozs7Ozs7Ozs7OztpQjtpQjs7O2lCOzs7a0I7a0I7a0I7O2tCO29COzs7Ozs7Ozs7Ozs7OzBCOzs7MkIsVTs7Ozs7OzswQjs7OzJCOzs7OzswQjs7OzJCOzs7Ozs7Ozs7Ozs7MEI7OzsyQixVOzs7MkI7Ozs7dUI7d0I7Ozs7Ozt3QixVO3VCOzs7Ozs7a0IsVTtrQjtrQixPO2lCO29DOzs7Ozs7aUI7O2tCLFE7a0I7b0I7OztpQjs7O2lCLE07NEM7OztpQjs7a0I7a0IsTztpQjs7YTtHOztJO0s7Ozs7SyxPO0k7Rzs7SSxpQzs7SyxTO0ssZ0MsZTs7O1E7O1MsVTs7O1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7O1E7O3VCLDBDOztRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7UTs7O1c7Ozs7Ozs7O1ksTTs7VztZLE07Vzs7WSxPO1ksUTtZO1c7VTs7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTs7d0IsOEM7O1E7Uzs7OztTOzsrQixrQzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTtRO1M7Ozs7UztROztROztTLFE7UztXOzs7OzZCLG1DOztTLE87UyxPO1M7OztTOztVLFc7OztTOzs7OztRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7Uzs7OztROzs7Ozs7Ozs7OztROztTOzs7UztXOzs7YyxtQzswQjs7YzthOztROzs7VztXO1U7O1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O1E7Ozs7b0I7O3NDLG1CLFU7Ozs7Ozs7O1E7O1M7Ozs7UTtRO1M7Ozs7UztROztROztTOzs7Uzs7UyxNO1E7O1M7UyxRO1M7Ozs7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztTO1c7Ozs7NkIsaUM7UztTLFU7UztTLFc7Ozs7O1E7O3lCOztRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7UTs7O1c7VztXOztVOztRO1M7Ozs7Uzs7O2M7Ozs7O2E7OztTLE87Uzs7OztlO2lELGdCOzs7O1E7O1E7O1MsVzs7O1E7OztXO1c7O1U7O1E7Uzs7OztTOzs7Yzs7O2E7OztTLE87Uzs7OztlO2lELGU7Ozs7UTs7O1E7USxpQzt1QjtRO1M7Ozs7UTs7Ozs7O1EsTTttQzs7OztJLDJCO0ksTzs7Ozs7YztlLG1COzs7O2U7ZTtjO2M7YTs7O0ksTzs7Ozs7Yzs7Ozs7ZSxPO2U7aUI7O2tDOztlLE87ZSxPO2U7O2tCO2tELFk7Ozs7ZSxRO2UsUTs7O2U7O2M7YTtHOzs7SyxPOzs7ZTtlLE87Ozs7eUI7eUIsTzs7d0I7O2M7OztJOztLLE87OztlOzs7O2dCO2tCOzs7O29DLHFDO2dCO2U7Yzs7O0k7STtLLE87OztlO2UsTzs7d0MsbUIsbUI7O2M7O0k7STtLLFE7SztPOzs7VSxvQixPO1UsTztTOztLO087OztVLE87Ozs7b0IsVztvQixPO21CO1M7OztLO087OztVO1csTztXLFM7Ozs7Vzs7Yzs2Qyw2Qjs7OztXO2E7OzRCLGUsa0M7O1U7Uzs7O0s7SztPO3NDLDhCO0s7STtJLEksK0I7STtJOztPOzs7VTs7Ozs7Vzs7O1c7O2M7aUQ7Ozs7Ozs7VzthO2dEO1U7Uzs7O0k7RztHO0k7OztJO0k7Ozs7MEI7Ozs7UztTOzs7Ozs7SyxNOztHOztJLEksc0M7Ozs2Qjs7O0c7Ozs7OztROztRLHFCLFE7USxPOzs7a0I7O3FCOztzQixPO3FCLE87OEI7aUUsdUI7Ozt3Qzs2Qjs7Ozs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7OztnQjs7OztJO0ksTzthOzs7Z0I7OztpQixTO2lCO2dCLE07O2U7O0c7O0ksTzs7O2M7O2lCOztrQixPO2lCLE87MEI7Ozs2Qjs4QixTOzhCOzZCLE07OzRCOzs7O2lCO3lCOzs7O0c7RztJO00sMEMsZTs7O0k7O0ssTzs7STtHOztJLGtCO0ksWTs7OztPLE07OztPO2U7OztrQjs7OztzQjs7Ozt1QixXO3NCLEc7dUI7d0IsVzt3QixLO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3dCOzBCO3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7O3NCOzt5Qjt5Qjt3Qzs7Ozs7OzRCLFE7NkI7Ozs7Ozt3Qjs7OztzQjtzQjs7Ozs7O3FCOztrQjtpQjs7ZSxNOztHOztJOzs7Ozs7Uzs7O1ksZ0MsTztZLFc7Vzs7SSxPO0c7OztLOztROzs7Vzt3QjtVOztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtnQjs7ZTtrQjs7STtHOzs7SSxPOzs7OztjOzthOzs7Ozs7Tzs7USxPO1E7USxnQjtRLFE7Ozs7dUI7Ozs7Ozs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7O087OztROzs7UTtROzs7OztPOzs7O087O1E7VTs7NEIsTyxvQzs7USxPO1EsVTs7OztXLE07Ozs7VzthOzs7Z0I7NkI7ZTs7WSxNOzs7Ozs7cUI7O29CO1c7WTtZLG9CO1c7WSxNO1c7Ozs7TyxNOzs7O08sTTtrQzs7OztPOzs7O1c7OztZOzs7WTtZOzs7Ozs7b0I7WTs7Ozs7Vzs7WTtZOzs7Ozs7O087UTs7O2dDO1c7O1E7O2E7O1E7OztPLE87OztpQjs7O2tCLGM7Ozs7O3FCLGdDOzs7O3VCLE07O3NCO3dCOzt5QixPO3dCOzs7OzsyQjs7cUI7c0IsTTs7cUIsVztxQjs7OztvQjs7Ozs7O3dCO3lCOzJCO3lCO3lCOzs7Ozt3QixNOzs7dUI7cUI7OzsrQjs7Ozs7O29CO3FCO3NCO3dCOzs7Ozs7Ozs7b0I7cUIsd0IsUTtxQjs7OytCOzs7O2lDOzs7O3NCOzt1QixRO3NCOztzQjt1Qjt3QixPOzs7Ozs7Ozt1Qjt1QixNOzs7Ozs7OztzQjt1Qjs7MEI7Ozs7Ozs7dUI7Ozs7dUI7Ozs7b0I7O29COzs7Ozs7OzRCOzs7b0IsTTs7O29CO3FCO3VCO3FCO3FCOzs7OztvQixNOzs7Ozs7Ozs7O0ksTzs7Ozs7Yzs7ZTs7Z0I7Ozs7Z0I7Z0I7ZTs7YztlOzs7ZSxRO2U7ZTtpQjs7Ozs7Ozs7Ozs7Yzs7O2lCOzs7YztlO2lCOzs7b0I7Ozt1Qjs7O3VCOzs7dUI7Ozs7Ozs7dUI7Ozt1Qjs7O3VCOzs7dUI7O21COztlO2M7YTtHOztJLGlDOzs7Szs7UTs7O1M7Vzs7Ozs2QixPLHVDO1E7O1E7OztTLFE7OztTLG9CO1MsTztTO1c7OztjOzs7OztjO2MsUztjOztzQjthOzs7OztROztnQjs7OztROztTLFU7OztRO1E7Z0I7UTs7Ozs7O1E7OztTLFU7Ozs7UTs7dUIsMEM7O1E7Uzs7O2dDLG9DOzs7UztXOzs7YztjLE87YTs7Ozs7Ozs7WTs7O2U7OztnQixjO2dCLFM7ZSxPO2M7Ozs7O1E7O1E7O1MsVTs7OztTO1M7Vzs7O2M7YyxPO2E7Ozs7UTs7O29DLGtDOzs7Ozs7UTs7UyxVOzs7O1M7UTtRO2dCO1E7Ozs7OztROzs7Ozs7UyxjO1MsVTtTO1c7Ozs7O2M7Ozs7Ozs7Ozs7OztjO2E7Ozs7UyxPO1MsUztTOzs7Ozs7UyxhO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7UztXOzs7Yzs7ZSxNOzs7Ozs7OztjO2E7O1M7OzthOzs7Z0I7Ozs7O2dCO2U7Ozs7UTs7O1c7VyxPOzs7cUI7OztVOztRO1M7Vzs7O2M7Ozs7Ozs7OztlO2lCOzs7OztvQjs7Ozs2Qjs7O21COzs7ZTtjO2E7OztTO1c7OztjOzs7Ozs7O2MsYTtjLG9CO2MsTzthOzs7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7O1M7O1k7OztlOzs7O2dCO2tCOzs7cUIsVztxQixlO29COztlO2M7OztTO1U7WTs7O2U7ZSxVO2U7Ozs7Z0I7Ozs7O2UsTzs7Yzs7O1U7WTs7O2U7ZSxVOztlLE87Yzs7Ozs7Ozs7O1E7OztZOzs7Ozs7Ozs7O2EsYTthOztZO2E7O2dCOzs7Ozs7Ozs7Ozs7OzthLE07OztZOzs7YTs7Ozs7OzthO1k7O1MsWTtTO1c7OztjO2MsTzs7b0MsK0I7O2E7O1M7Vzs7O2M7YyxPO2E7OztTOzs7YztjO2E7OztROztpQjs7bUMsbUIsVTs7Ozs7O1E7O1M7Ozs7UTtROztTLE07UTs7UTs7Uzs7Ozs7UTs7UTs7UyxXOzs7UztXOzs7YztjO2M7YztjOzs7O2UsUTs7O2UsUTtlLEk7OztjLE87YTs7O1M7OztjOzs7OzthOzs7UyxPO1E7O2lCOztpQyw2Qjs7Ozs7O1E7O1MsVzs7O1M7Vzs7O2M7YztjO2M7Ozs7ZSxRO2UsSTs7O2MsTzthOzs7Uzs7O2M7OzthOzs7UyxPO1E7O2lCOztnQyxnQzs7Ozs7O1E7O1M7UztXOzs7OztjO2E7OztTLFU7UztTO1c7Ozs7O1E7O3lCOztRO1E7OztRO3lDO3VCO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7OztJO0k7Rzs7RztJOzs7RztJOztHO0k7Ozs7OztHO0k7OztJLE87Rzs7STs7OEIsTzs7O087Ozs4Qjs7O21COzs7ZTs7Rzs7STtLO0s7O0s7O00sVTs7Ozs7O0ksVTtJO0k7Rzs7STtLOzsyQjs7O1E7O1EsTTtNO0c7O0k7SztPOzs7VSxPOzs7O29COztxQixRO29CO21CO1M7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTtRLFU7OztRO1U7OzthOztnQjs7aUI7O2lCLE87aUIsVTtnQjs7Z0I7O2lCOztpQixPO2lCO21CO2dCO3dCOztZOzs7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNLEk7O0s7TTtROzs7VztXLEk7OzttQzs7O1csSSxXOzs7bUM7OzsyQjtXLFE7VztVOzs7Ozs7Ozs7O0k7OztPO087UTtTLE87UyxPO1E7Ozs7O1MsTTs7OztNOztJO0ssTztLLE87O0s7STtLO2lCOzs7Ozs7SyxNOzs7STs7O0k7Rzs7STtHOztJO0c7Ozs7Ozs7SztNOzs7OztLO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxRO0ssTztLLFc7SSxPO0c7O0ksaUI7STtLLFc7SztLO0k7STtJLE87Ozs7O2U7Z0IsTztnQixhO2U7Yzs7YztjOztlO2M7Ozs7Ozs7ZSxPO2UsSztlLE87ZSxVO2U7O2U7ZSxjO2U7Ozs7O2tCO21CLE87bUIsTztrQixPOzs7Ozs7aUI7ZTtlOztjLGtCO2MsNkI7ZTtnQixPO2dCLE87ZTtlO2dCO2tCOzs7Ozs7Ozs7OztlO2U7ZTtlLGM7O2dCO2lCLFM7aUIsTztpQixNO2lCO2dCOzs7ZTs7Ozs7O3FDOztlO2dCO2lCLE87Ozs7Ozs7Z0I7Z0IsTTs7O3lCOzs7OztjO2UsUztlO2lCOzs7Ozs7Ozs7OztjO2M7ZSxVO2U7YztjO2E7Rzs7SSxXO0ksTztHO3FDLHVDOztJO0c7O0k7O087OztVO1csVztXLE87VyxLO1csTztXLGtCOztXLE07O1UsVztTOztJO0k7SztPOzs7VTs7O1csUTtXLFE7VTtTOztLO087OztVO1UsTztTOzs7SztPOzs7VTs7O1csTztXLE87VyxPO1c7VTtTOztLLFM7SyxPO0ssVztLO087OztVOztXLEs7VyxPO1UsTztTOzs7SyxRLFc7SyxNO0ksRztZLHFCO007TSxNO3lCOztLO00sUzs7UTs7Ozs7Ozs7OztNLE87Szs7Szs7STtLO08sMkM7SyxPO0s7Tzs7O1U7VSxXO1M7OztLO00sTTtNO00sTztLOztJO0c7O0k7OztRLE87O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87Ozs7TyxvQixPO08sTzs7Tzs7USxPO08sTzs7TyxzQixPO08sTzs7TyxzQixPO08sTzs7TyxvQixPO08sTzs7Ozs7Ozs7OztPOzs7USxTO1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7USxTO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7TztPO087O1EsTztRO1U7Ozs7YyxPO2E7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7TztPO087USxPO1E7VTtZOzs7O2dCLE87ZTs7O1EsTztROztXOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7TyxPOzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7TyxrQixPO08sTzs7TyxvQixPO08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7UztXO1MsVztTLHVCOztTLE87UztXOzs7UyxPOztTLE87UztXOzs7Ozs7Ozs7USxPOzs7Ozs7Ozs7OztPOzs7Ozs7USxxQjtRLFk7O1EsTzs7USxPO1E7VTs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087O1E7USxPO08sTzs7Ozs7Ozs7OztPOzs7OztXLHlCLE87VyxPO1U7UTtRLE87TyxPOzs7Ozs7Ozs7Ozs7OztJLE87Ozs7NkIsMEI7RztHOzs7TTs7Tzs7cUM7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0I7Rzs7Ozs7O0ssWTs7Ozs7Ozs7Ozs7TTtPLE07YTs7Ozs7OztJLGE7SSxxQixNO0ksTzs7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzs7Ozs7Ozs7Ozs7OzsyQixxQjs7SSxVO0k7SztPOzs7VTtTOztLLE07SyxNO0ksTztHOztJLFk7O0ksRztLLE07STtLLGU7Szs7Ozs7O0k7Ozs7Ozs7Ozs7O0c7O0ksWTtJOztLO0s7STtHOytCLE8sbUM7O0k7SyxRO0ssUTs7O0k7OztlO0s7OztNLEk7SyxHLHFEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEOzs7O0c7O0ksTzs7O2MsTzthOzs7Rzs7STtJOzs7O1M7O1MsVTtTOzs7UTtLLFU7O2tCOztLO0s7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7RztJO0k7OzZCLDBDOztJO087SztJLE07Rzs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7OztJO0s7SztLLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVO1U7WTs7O2U7ZTtjOzs7VTtZOzs7ZTtlO2M7O1U7Uzs7Uzs7OztVO1U7WTs7O2U7ZTtjOztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxPOzhDO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O00sc0I7Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7TztPLE87OztpQjtpQixPO2dCOzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPO087OztVO1UsTztTOztPOzs7VTtVLE87Uzs7Ozs7TztPOzt5QixvQixPLHNCOztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7UztXOzZDO1MsTztTO1EsTzs7Ozs7O1E7OztTO1c7OzZCLG9CLGdCOztTO1M7Vzs7NkIsbUIsVTs7UyxPO1EsTzs7O1E7O1E7OztTO1csMkM7UztXLDJDO1M7OztTO3NCO1EsNkI7USxPOztROzs7O1M7VywyQztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7UztXOzZDO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7O0ksTzs7O2M7YyxPO2E7OztHO0c7STs7Ozs7O29DLHdDOztJO0k7Ozs7Ozt5RDs7Ozs7Szs7Rzs7STs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7Tzs7SSxPOzs7STs7SyxPOzs7STs7O0ksSSxXOzs7O0s7TSxPO00sTztLLE87O0k7Rzs7STtHOztJO0c7a0Q7Rzs7STtHOztJO0ssTztLLE07SztJLEksVTs7OztLO00sTztNLE87SyxPOzs7STtHOztJOzttQixPO0ksb0IsTTtJOzs7O0k7SyxxQztLLGlCO0k7STtLLE87OztlOzs7OztnQjs7O2U7Yzs7O0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O3lCOztROzs7Ozs7Uzs7O1M7UTs7UTs7Ozs7Uzs7O1M7UTs7UTs7O1M7Vzs7O2M7OztlOzs7YzthOzs7OztTO1E7Z0I7OzttQjttQjs7Ozs7O1E7O1E7Ozs7UztTO1c7OzRCOzs7UztXOzs0Qjs7UztROztROzs7OztTO1M7Vzs7OztjOzs7UTs7O1E7O1E7Ozs7OztTOzs7UztROztROzs7O1M7OztTO1E7O1E7Ozs7UztTO1E7O1Esa0M7UTs7USxrQztROztROzs7Ozs7Uzs7O1M7UztROzs7USxHO1MsTTtRLEksSSxPOzs7Ozs7UTs7UTs7Ozs7O1M7UztROztROzs7UztTO3dCLE8sc0M7UztXOzs7Yzs7OzswQixJOzs7a0Q7OzswQixPOzs7O2MsTzs7Ozt5QixJOzs7aUQ7Ozt5QixPOzthOzs7UztXOzt1QyxPLHdCOzs7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssTzs2QztJOztLO007Ozs7O007SztJOzs7Szs7O0ssWTs7Szs7STswQixrQzsyQix3Qzs7O0k7Rzs7O0ssWTtLLE87STtJOztPLDBDLG1CO0k7RztHO0k7O21DLFc7Ozs7OztJOzs7Ozs7O0ssUztJOzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7OzBCOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPLGtDLE07TztlOzs7a0I7a0I7aUI7Ozs7O08sYzs7Tzs7OztRLE07UTtVOzs7YTthLGM7WTs7O1E7VTs7O2E7YSxjO1k7O1E7TyxXOztPOzs7OztRLE07UTtVOzs7YTthLGM7WTs7TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOztJO3NCOzs7Ozs7OzswQjs7O21COzttQyxnQjs7Ozs7Ozs7OzBCOzs7Ozs7O0k7Rzt5Qiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7O3FCLE87Tzs7O1E7O1csTzs7O3FCLE87O29COztVO08sTzs7Ozs7Ozs7Ozs7cUIsTztPOzs7UTs7VyxPOzs7cUIsTztvQjs7VTtPLE87OztPLE87Ozs7STs7Tzs7Tzs7TztlOztHOztJOztPOztPO2U7O0c7O0k7OztROztRLE87Z0IsTzs7SSxtQjtJLE87OztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1E7Z0I7OztJO0c7O0k7O2tCOztrQjswQjs7SSxPO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtJLE87Rzs7STs7ZTtlOzs7O2lCO2lCOztxQixPOzs7TyxPOztHOztJOzs7O007UTs7eUI7O087OztPLGM7TztPOzs7VTtVLE87Uzs7TyxPOztNO00sTzs7O0k7Rzs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTztnQixPOzs7Ozs7NkI7Ozs7Ozs7Ozs7Ozs2Qjs7NkI7OzZCOzs2Qjs7OEI7OzhCOzs7OztXOztXOztXOztXOztXO21COzs7O1E7OztROzs7USxPOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7O1E7a0I7a0I7Ozs7O08sTzs7O08sTzs7Ozs7USxPOzs7O08sTzs7O087Ozs7UTtPLE87O087Ozs7UTtPOzs7Ozs7O08sTzs7Tzs7O1E7Tzs7Ozs7OztPLE87OztPLE87OztPOzs7Ozs7O08sTzs7O08sTzs7O08sTzs7TyxrQixPO08sTzs7O2lCO2lCOzs7aUI7aUI7OzJCOztPLG1CO08sTzs7O08sTzs7O08sTzs7NkI7Ozs7UTtRLE87O087TyxPOzs7O1E7USxPOztPO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOzs0Qjs7NEI7O087OztRO1E7TyxPOzs0Qjs7NEI7OzRCOzs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7O1E7Ozs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0ksUzthOzs7OztROztROztROzsyQjs7O087O087Ozs7Tzs7Tzs7YTtzQjtHOztJOzs7Z0I7Z0I7Ozs7STs7O1EsTzs7USxPOztRLE87Z0I7OztJLE87OztJOztPLE87O08sTztlOzs7Ozs7Ozt5QixPOzs7USxPOzswQjs7UTs7Uzs7WSxPOzs7c0IsTztxQjs7VztRLE87Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O1E7OztTOztZO1ksTzs7O3NCOzt1Qjs7O3NCLE87Ozs7Ozs7O3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLE87OztzQixPO3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZO1k7OztlOztnQjs7O2UsTztjOztZOzs7ZTs7Z0I7OztlLE87Yzs7O3dCOzs7YTs7O1ksTztXOztRLE87Ozs7Ozs7OztZO1k7OztlOztnQjs7O2UsVztlLE87Yzs7NEI7OzthOzs7WSxPO1c7USxPOzs7UTs7O1M7O1ksTzs7O3NCLE87cUI7O1c7USxPOzs7Ozs7OztRLE87Ozs7Ozs7O2tCLE87Ozs0Qjs0QixPOzsyQjs7aUI7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O1M7O1ksTzs7O3NCLE87cUI7O1c7UztRLE87Ozs7Ozs7Ozs7OztRLGtDOzs7Ozs7Ozs7OztROzs7UyxPO1E7Ozs7Ozs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztLO007O1M7OztZOztlOztlO3VCOzs7WTs7WSxNOztRO007Szs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTzs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7O0ksTzs7Ozs7Ozs7Ozs7SztNLE87OztnQjtnQixPOzs7Ozs7OztlOztLO0s7Szs7O1E7Ozs7UztRO1E7Tzs7SyxPO0k7SSxPOzs7Ozs7Ozs7Ozs7O3FEOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007O1M7OzJCLG9CLFc7O00sTztLOztNO087Uzs7O1k7WTtXOztPLE87TTs7O1M7UztTOzRCOztTO1M7UTs7TTtLO21CO0s7OztrQztrQztJO0k7Ozs7O3NCOzs7aUMsWTs7Ozs7O1M7UztRO1E7O1M7OztROzs7Ozs7Ozs7Uzs7O1M7OztROztTOztVO1k7UyxjO1E7O1M7Ozs7VTtZOztVLEs7OztTOzs7OztVOztXOzs7O1c7Ozs7VSxHO1c7WTtjOztZO1k7Ozs7YTthO2E7Ozs7OztZO2E7O2lCOzs7Ozs7bUI7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1cseUI7Ozs7YTs7YzthO2E7Ozs7Ozs7O3NCOztTOzs7aUI7OztRO1EsSSxJLHNDOztTLEksZTs7Ozs7OztZO1k7Ozs7Ozs7VyxHLHVCOzs7OztVLE87OztTOztVLFU7VTtXOzs7OztXO1c7O1U7VTtTO1M7O1U7Ozs7VTtVO1MsSSxXLHVDOzs7OztVO1csTTtVOztXO1c7Ozs7OztZOzthLEksdUIsTzthOzs7Ozs7Ozs7VTs7O1c7O1k7WTtZO1k7Ozs7YTtjOzs7YztjOzs7Ozs7O2E7YTthO2M7O2M7YTs7OzthOzs7Ozs7O1k7YTthO2E7YTthOzs7Ozs7OztnQjtpQjs7Ozs7Ozs7Ozs7O2lCOztpQjtnQjtnQjtnQjtpQjs7aUI7Z0I7Ozs7O2dCOzs7OztjOzs7Ozs7Ozs7Ozs7OztZO2E7YTthO2E7YTs7OztjO2U7Ozs7OztlOzs7Ozs7O2dCO2dCO2U7ZTtlO2dCOztnQjtlOzs7Ozs7Yzs7Ozs7Ozs7OztXLEksaUM7Vzs7Ozs7OztXOztZOzs7Ozs7OztZLEc7YTtjOzs7Ozs7Ozs7Ozs7Yzs7YzthO2E7YTtjOztjOzs7Ozs7O1k7YTs7O1c7WTs7Ozs7O1U7VTs7UTs7Uzs7O1U7OztVO1U7Ozs7Ozs7UztTO1MseUIsd0I7UztROztTO1Usb0I7VSxPO1MsTztROztTLFc7UyxPO1E7O1MsVztTLE87UTs7UyxrQztTO1UsTTs7VTtVLE87OztTO1U7VSxPOztTO1U7OztXOzs7Ozs7OztXO1k7YTthOzs7WTs7VztZO1k7OztXOztVOztvQyx1QztvQyxzQzs7OztZLEksb0I7WSxxQjs7VyxVO1csTzs7OztxQjtzQjtzQjtzQjtxQixxQjtvQjs7O3FDLHNDO3FDLHVDOzs7O1csSSxzQjtXLHNCOztVLFU7VSxPOzs7O29CO3FCO3FCO3FCO29COzZCO21COztTOztVOzs7Ozs7VTtVOzs7Ozs7O2E7YztjOztjLE07YSxPOzs7VztZO1k7O1ksTTtXLE87OztTO1U7VztXOzs7Ozs7O1M7VTtVOzs7Ozs7OztTOzs7VTtVLE07c0I7O29DO1M7O1UsZTtVLEk7UztVO1M7UyxJOzs7O1c7Ozs7Ozs7Ozs7Ozs7OzRCOzs7Ozs7ZTtnQjs7Ozs7O2dCOzs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7O2E7YztlOzs7OztjO2M7Yzs7YTs7Ozs7Vzs7Ozs7Uzs7VTtVO1UsSTtVLE07VTtVO1U7VTs7O1M7VTs7VztZOzs7O1c7c0I7Ozs7OztZOztZOzs7Ozs7O2dCO2U7OztXOzs7Vzs7Ozs7WSxNO1ksTTtZOzs7O2E7Yzs7OzthO2M7ZSxNOzs7Ozs7O2M7Yzs7Ozs7OztlO2U7Ozs7O2E7Ozs7O1c7WTtZLE87O1c7OztjO2M7YzthOzs7Ozs7ZTtnQixPO2U7c0I7ZSxPOzs7O3lCLE87d0I7Yzs7Vzs7VztXOzs7VSxJLG1COzs7O1M7O1k7OztlLE07YztTOzs7WTtZO1k7Vzs7UztTOzs7UztVLDJCLFM7VTtZOzs7ZTtnQjs7aUIsUTs7O2lCOzsrQixPLGMscUI7Z0IsTzs7O2U7Yzs7UztROztTO1UsTTtTO1UsWTtVOzs7UyxPO1E7O1M7VSxNO1M7VSxZO1U7OztVOztvQztTOzs7O2E7OzZCLHVCLFcsRTs7UyxPO1E7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtjO2M7Ozs7Ozs7Ozs7O0ksVyxPO0k7O0s7Tzs7O1U7VSxXO1M7O0k7OztPO087TztNOztJLE87Rzs7STs7O2dCLE87Ozs7Ozs7O0s7aUI7Ozs7Ozs7STtHOztJLFE7SSxPO0c7O0k7Rzs7O0ksVzs7O0ksTzs2QztHOzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7UTs7O1M7UTs7UTs7OztTO1M7USxPOzs7O2dCOztJO0c7RztJOztvQixPLGlDOztJLE87MkMsNEI7Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFM7SyxROzs7d0IsTyxrQztJLG1CLE0sd0M7c0IsMEI7SSxJOztvQjtxQztpQjs7Ozs7Ozs7O1MsYTs7UTs7Ozs7OzRCOztROzs7Ozs7OztROzs7OztTLHNCLE87UyxhOztROzs7OztTOzs7VTtVOzs7UTs7Ozs7Ozs7UTs7SSxPO0c7O0ksWTs7SSxPO0c7OztJLE87Ozs7Ozs7Ozs7SSxXO0k7Rzs7O0k7SyxNOztJOzs7O0k7SyxNOztJOzs7O0ksVyxNOztJOzs7O0ksVyxNOztJLGU7Ozs7Ozs7O3FCLGtCLGdDOzRCLHFCOztJLE87O0c7O0k7TztLLE87SSxXO0ksTztHOzBCLE8seUM7O0ksTzs7O2M7OztlOzs7YyxtQjs7O0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7OztNO00sSTs7Ozs7OztNLGlCO007O0k7STtHOztJLE87OztjO2M7ZSxPOztjO2U7eUM7ZTs7Ozt3Qzs7O2E7O0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJLE87OztjOztlOztjLE87YTs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7SztLO29COzs0QjtNOzs7Tzs7VTtXLE07O1U7UztPLFE7OztVO1U7eUI7Vzs7Ozs7WSxNO1k7Ozs7OztjOztlO2UsTzs7Ozs7Ozs7O2E7YztjOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7O1c7VyxJLGtCOzs7Ozs7O1csVztjO1k7VyxNOztTO29DLHdDOztNOzs7OztJO0k7Rzs7STthO2tDOztHOztJLFk7O0k7Rzs7SSxPOzs7OztjO3dCO3dCOzs7OzBCOzBCLE87O3lCOzs7YTs7Rzs7STtjO2M7Ozs7Z0I7Z0IsTztlOzs7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOztJLE87OztjO2MsYzthOztHO0c7O0k7O3lCLGtCOztJO0k7Ozs7Ozs2Qzs7Szs7Rzs7STtnQyw0QixXO0ksVTtJOzs7YSxtQjs7O1k7Rzs7SSxZOztzQztJOzs7SyxXO21COzs7SyxPLFc7O0ksTztHOzs7SSxPOzs7Yzs7Ozs7ZSxRO2UsVTs7Ozs7Ozt3Qjs7Ozs7Yzs7O2U7Z0IsVzs7OzttQiw0QjtjO2E7Ozs7SSxvQjs7Ozs7Ozs7OztNOzs7VTs7OztTOzs7VTs7O1M7TztxQzs7OztROzs7O1M7MEI7Ozs7O21CO1E7O1M7UTs7Ozs7UTtTLFEsbUM7Uzs7UztROzs7Ozs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHOzs7Ozs7Ozs7Ozs7Ozs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7STs7Tzs7O1U7VSxXO1M7O0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7O2E7Ozs7aUI7OztvQjtvQjttQjs7Ozs7YTtlOzs7a0Isb0IsTztrQixPO2lCOzs7YSxPO2E7ZTtpQjs7O29CO29CLE87bUI7O2E7ZTtpQjs7O29CO29CLGU7bUI7O2EsUzthLFc7YTtlOztnQzs7OztnQjtnQjtpQjs7O3FCLGU7b0I7a0I7Ozs7O21COzs7O21COzs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCO3dCOzJDLE8sa0M7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Z0Q7Ozs7Ozs7Ozs7Ozs7OzsrQjs7OztrQzs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7dUI7d0I7d0IsTzt3Qjs7OzJCOzBELGM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7OztpQjs7OztlO2E7YTtlO2lCOzs7b0I7b0I7bUI7O2E7O2E7OztZO29COzs7VztZOzs7Vzs7Ozs7Ozs7UTs7O1EscUI7USxXO087Ozs7O007Tzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WTs7Ozs7Vzs7Ozs7Ozs7Ozs7OztROztXOzs7Yzs7Ozs7ZSxNO2U7O2U7ZTs7YzthOztROzs7O1k7OztlO2UscUI7Yzs7Ozs7UTs7OztjOzs7Ozs7Ozs7Ozs7O087Ozs7OztJO0c7OztLOzs7Ozs7O087USxRO1EsSztPOzs7OztPOzs7a0M7UTs7Ozs7OztNO087Ozs7Ozs7Ozs7Ozs7O007O1EsTTtPLFU7Tzs7TTs7OztJOztLOzs7Ozs7Ozs7SyxTO0s7TTs7Ozs7O00sTztLOzs7OztJO0k7Rzs7SSxXLE07Ozs7OzswQjtNO087TztTOzs7WTtZO2EsTTtZLEk7OztXOztPLDJDLFc7Tzs7Ozs7TSxZO007OztVOztnQzs7YTtzQzs7UztPO1M7OztZOzs7YTtZLHNCO1c7OztPO087Uzs7O1k7WTtXOzs7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJOztPOzt5QixrQixPLDJCOzs7Ozs7OztLLGE7Ozs7STtHOzs7Szs7Ozs7TTtNLE07TSxXO00sTzs7Szs7ZTs7Ozs7OztJLE87Rzs7O0s7Ozs7O00sTTtNLGtCOztLOzs7O0s7OztNO29COztnQjtJLFc7SSxpQjtHO2lDLFc7MEMsVzs7STs7O2MsYTthOzs7a0Y7YyxPOzs7OztHOztJO3lFO0ksTTtHOztJOzs7SyxPOztJLE07Rzs7STs7Rzs7STtrQzs7SyxNOztJO0c7RztJLGU7Ozs7Ozs7Ozs7STs7YTtjLFk7YyxNO2MsUTs7O2EsSSxVOzs7O2UsTzs7OzthLE87O0c7RztJOztJOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOztHOztJOztNO08sVTtPO087O087TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNLFE7TTtNLE07OztTO1E7TTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJLDhCOzs7Ozs7OztJO0c7O0ksVztJOzs7TztPO087TTs7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7Ozs7Ozs7Ozs7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7O2MsTzs7O3dCO3dCOzs7Ozs7O3VCOzs7YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7STtLO087OztVO1UsZ0I7Uzs7SyxPO0s7OztLLFM7STs7OztJOztPOzs7VTtVO1M7O0k7Rzs7STtJOzs7OztPLFM7UTtPOzs7OztLOztHOztJOztPOzs7VTtVLE87Uzs7STtHOztJLFk7O0k7Ozs7OztJLFksTzs7OztLOzs7Ozs7STs7O0k7SztLOzs7OztLLFE7TTtPOztXOzs7O087TztNOzs7Ozs0Qjs7Ozs7a0I7O0s7STtJLE87RzsrQix1Qjs7STtHOztJOzs7SztNLFc7OztJLFc7SSxPO0c7MEIsd0I7K0IsdUM7OEIsOEM7O0k7Rzs2QixXO3VDLCtCOztJO0ssVzs7Szs7OztNO087TztPO007TTs7Ozs7STtLLDRCLFc7O0s7Ozs7O087UTs7O087Ozs7c0IsYyxpQzs7TTs7Ozs7SSxJLFk7Ozs7TSxpQjs7TTs7Ozs7SSxPOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7YztjLE87O3dCO2E7O0c7O0k7STtLOztNLFE7TTsyQixRLDhCLFM7Ozs7Ozs7Ozs7O1U7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtVOzs7OztXO1U7Vzs7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7OztNLE07Ozs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7OztLOztlLGlDO0s7TSxNO0s7TTtpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLOzs7OztJLE87Rzs7SSxZLE87O21COzs7Ozs7OztJO0c7O0k7Z0I7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJOzs7Rzs7OztJOztLOztJOztLO007OztNO1E7TTs7UyxZO1M7Ozs7O1U7OztTOzs7Ozs7UyxNO1E7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7Ozs7O007TyxNO087Uzs7O1k7OzthLE07WTtXOzs7Ozs7Szs7UTs7O1c7OztZLE07VztVOzs7Szs7STtLLFM7Ozs7OztLOztROzs7VztXO1U7Ozs7TSxNO0s7O00sbUMsbUI7TTs7UyxPOzs7Ozs7Ozs7UTtNLE87TSxPO00sWTtNO1E7TTtPO1M7O3lCLCtCOzs7OztNO087Ozs7Ozs7Ozs7TztRO1U7OzthO2EsTzs7O3VCO3VCLE87OzZDLE8sZ0M7O3NCOztZOzs7O087UTs7Ozs7YSwyQzs7Ozs7Ozs7O007TztTOzs7WTs7Ozs7YTthO2U7OztrQjtpQjs7O2E7O2EsVTs7YSxPOzt1Qjs7OztZO1k7WTtXOzs7OztPO1M7TTs7Ozs7Ozs7Ozs7OztNO087OztNOzs7OztTLGEsTzs7UyxPO1E7Ozs7Ozs7Ozs7O0k7SyxzQjtLOztTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7O1c7Ozs7Ozs7OztNOzs7Ozs7Ozs7TyxvQyxROzs2Qzs7O087UTtVOzs7YTthLGM7WTs7UTtVOzs7YTthLGM7WTs7USxPO1E7OztRLFM7Tzs7Ozs7O087UTtVOzs7YTthO1k7O1E7OztXOzs7YztjO2E7Ozs7Ozs7OztRO1MsSTs7O1ksa0I7d0I7O1ksSSxJLE87Ozs7Ozs7WSxPOztRO1E7USxJLGlCO1E7OztXOzs7O1U7OztTOztVO1k7OztlLG9COzJCOzs7YztVO1UsTzs7VSxPOzs7OztrQjs7Ozs7O0k7OztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTtnQixPOztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztpQjtLOzs7Ozs7O007O0s7OztTLE87OzttQjs7O29COzs7bUIsSSxZOzs7NkM7OzttQjsrQjs7O1E7TSxPO00sTTtLLEksVTs7OztvQjtNOzs7Ozs7bUI7SyxZOzs7Ozs7OztNO007TywwQjtPO087Ozs7OztJO0s7SywwQjtLLE87SSxXO0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUI7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7c0I7Ozs7O3FCO087UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7O1EsTzs7K0IsOEI7Ozs7USxPOzsrQiw4Qjs7O0s7Ozs7STs7OztRO2tCOzs7Ozs7Ozs7UztVOzs7O1c7VTs7Ozs7Ozs7Ozs7O1M7VTs7VztVOzs7Ozs7Tzs7OztRO1E7UTtPOzs7USxXOztPLE87O0ksTztHOztJO2dCLE87O0k7Rzs7O0k7STs7TSxPOzs7O0ssSSxZOzs7O007Ozs7Ozs7Ozs7OztrQjs7TTtNO087OztNOzs7O08sSSxVOzs7O1E7Ozs7OztPOzs7UTtROzs7Ozs7O0c7O0k7Ozs7O00sRztPO1E7Ozs7OzhCOzs7O007OztTLFc7UyxjO1E7TTs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7OztrQjs7Ozs7Ozs7OztJOzs7SztLO087O3dCOztLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjs0Qzs7OEIsb0I7OEI7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7OztvQjs7OEIsb0I7Ozs7Ozt1Qzs7OEI7Ozs7Z0M7Ozs7OytCOytCOzhCO2lEOzs7Ozs7Ozs7OzhCOzZCOzs7Ozs7O29COzs7Ozs7O1U7O29COzs7OztvQjs7O3FCOzs7b0I7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozs7Ozs7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozt1Qjt3Qjt3QjswQjs7OzZCOzZCOzhCLE07Ozs2Qjs0Qjs7d0I7Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7VTs7O29CLFk7b0I7NEM7OzhCOzsrQjsrQixROzsrQjs7Ozs7OEI7OEI7Ozs7OytCLFc7K0IsTzs7OytCLE07Ozs4QixPOzs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7NEM7OzhCOzsrQjsrQjs7OztnQzs7aUM7OztvQztvQztxQztxQyxNO3FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQzttQztnQzs7OzhCLE07Ozs7OzsrQjsrQixPOzs7K0IsTTs7OEI7OytCOzhCLE87Ozs7Ozs7Ozs7Ozs7VTs7b0I7Ozs7OztxQixZO3FCOzs7Ozs7O3NCOztzQjs7Ozt1Qjt1Qjt1QixPO3NCLFMsNkI7c0IsVTtzQjt1Qjs7aUM7Ozs7OztzQjs7dUI7OzBCLG9COzBCOztzQjs7Z0M7Ozs7Ozs7cUIsTTs7O29COzs7b0I7OztxQjtvQixHO3FCLFc7cUI7Ozt3QixrQixROzs7Ozs7O3dCO3VCOzs7Ozs7cUI7b0I7b0I7cUI7cUI7dUI7cUI7OztxQjs7Ozs7Ozs7Ozs7Ozs7b0I7cUI7Ozs7Ozs7Ozs7Ozs7O3VCOzs7Ozt1Qjs7Ozs7O3dCLE07dUI7Ozs7Ozs7Ozs7dUI7Ozs7dUI7Ozs7Ozs7Ozs7cUI7c0I7Ozs7Ozs7O3NCOzs7Ozs7b0I7Ozs7O1UsVztVOztvQjs7OztvQjs7OEIsb0I7OytCOztnQzs7O21DOzs7Ozs7O2tDOytCOzs4QixNOzs7a0Q7Ozs7Ozs7b0I7OztxQjs7O3FCLFM7cUI7OztxQjt1Qjs7Ozs7O29COzs7Ozs7Rzs7O0k7SyxROzs7Szs7O0k7Rzs7STtrRDtJO0c7d0IsTyx5Qzs7STs7O0ssTzs7OEIsMEM7OztJO0c7O0ksTztHOztJLFk7STs7OztPOzs7VTs7O1csTztVO1csVztXOzs7OztVO1M7O0s7STs7O0k7SztHOzs7O0s7SyxhO0s7SztJOztLO007TTs7O0ssd0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJOzs7O00sTTs7OztJLHNCOzs7O0s7TSxPO00sTztNLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7O0k7SztLO0s7TzttQyxtQjtJOzs7Ozs7OztjOzthO0c7O0k7O0c7O0k7O0c7O0k7O0c7O0k7Ozs7O1E7OztROztzQzs7Ozs7O1E7Ozs7OztZLE87OztzQjtzQjtxQjs7VztTO1c7OzRCOztTOztTO1E7O1E7Ozs7O1M7Vzs7NEI7O1E7O2dCOzs7bUI7bUI7a0I7Ozs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7aUM7Ozs7Ozs7OztLO007TSxTO00sWTtNO1E7OztXO1csZTtVOztNO1E7OzBCLG1CLFU7O007Ozs7WTs7Ozs7Ozs7Ozs7MkMsa0M7aUIsTzs7Ozs7Ozs7O2lCLE87Ozs7O1k7YSxVO2E7ZTs7OEIsZSwyQjs7WTs7O3FCOzs7VztXO1k7WSxjO1c7O1ksTzs7Vzs7WSxPOztXO2tCO1csdUIsVyxnQztXOzs7O2U7OztZOztXLE87Ozs7Ozs7SSxRO0k7Rzs7STtLLE87OztTOzs7O0s7Tzt1Qyx1Qjs7Ozs7Ozs7O2M7Ozs7NkI7O2E7Rzs7STtrQyxPO3VCLE07O0k7Rzs7STs7SztPOzs7VTtVO1M7OztJO1k7OztlOztnQixPOzs7OEI7Ozs7Z0I7aUIsTzsyQjs7Z0IsTTs7O2U7Yzs7OztHOztJOztPOzs7O1E7VTs7OzthOzs7Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJO0ssVztLO087O3lCLGtCLGM7O0s7SyxPO0s7SztLO08sbUMsaUI7Ozs7Ozs7Ozs7VTs7O1c7O2M7OytCOzs7O1c7OztXLE87VzthOzs7Z0IsbUIsTzs7Z0I7ZTs7VzthOzZDLHVCO1c7VzthOzs7Z0I7Z0I7ZTs7Vzs7O2dCO2lCOzs7O2tCOzs7O2lCOzsyQjs7Ozs7Ozs7Z0I7Ozs7Ozs7O1csTztVO2tCOztTO0ksTztHOzs7STs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7OztLOztJO0c7O0ksVTs7SSxpQjtHOzs7Ozs7Ozs7Ozs7O0k7O087O1EsUTtROztRO1E7VTs7UTtPOzs7O087O1EsWTtRLGtCO1E7VTs7O2E7Ozs7Yzs7Ozs7YTs7cUI7O1k7Ozs7OztRO1U7O3NDLFc7Ozs7Ozs7OztRO1U7UTtROzs7Vzs7Tzs7Ozs7Ozs7Tzs7O2tCOzsrQiwyQzs7O087OztrQjs7K0Isd0M7O087OztRO1U7OzthO2EsTztZOzs7Tzs7K0IsMkI7OztvRDs7O087Ozs7UTtRO1E7VTs7O2E7Ozs7O1E7Ozs7VTs7Ozs7OztXOzs7WTs7Ozs7Vzs7O1M7Ozs7O1M7Ozs7O08sTzs7Tzs7Ozs7UTtRO1U7OzthOzs7Tzs7O1MsTztROzs7Ozs7Uzs7O087O087O087Ozs7OztRO1E7VTs7O2E7YSxPO1k7OztROztPOzs7a0I7Ozt5Qjs7Tzs7Tzs7OztRO1E7OztZOztPOzs7a0I7OzsyQjs7Tzs7Tzs7OztRO1E7Tzs7O2tCOzs7dUI7O087OztPOzs2QixvQjs7O087OzhCLHNCOztJLE87Rzs7SSxXO0k7Ozs7O0s7SztJOzs7ZTs7O2M7O0k7RztHO0ksYTtJO007SSxjOzs7Ozs7STtLO087OztVO1UsTztTOzs7SztPOzs7VTtVO1c7Ozs7O1c7Vzs7OztlLGtCLFE7MkI7O2UsTzs7O3lCO3lCO3dCOzs7ZTs7ZTs7ZTs7ZTs7ZTs7OztnQixNO2dCLFE7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsbUIsTTtxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7b0IsZTs7O29CO3FCLGlCOzs7cUIsTztvQjs7b0I7O29CLGlCLFM7b0I7Ozs7Ozs7b0IsTzs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOztlOztlLG1COzs7OztlOzs7O2U7Ozs7OztlOzs7ZTs7O2U7Ozs7ZTs7OztlOzs7O2U7O3VCOztVOztXLE87OztxQjs7b0I7OztVOztXLE87OztxQixPOzs7K0I7K0I7OzhCOzs7b0I7OztVO1U7OztXOzs7Ozs7Vzs7Yzs7MEMsVzs7OztXOzs7Ozs7O1c7Ozs7O1U7VyxTO1c7O1csTztVOzs7OztXO1c7O1U7Uzs7O0s7Tzs7O1U7OztXO1U7Uzs7O0s7O0s7TTtROzs7VztXO1U7Ozs7O0k7SztPOzs7VTtVO1M7OztLO087OztVOzs7Ozs7OztVOzs7O3NCOztVO1M7OztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLFM7OztJOztLO00sSSxjLDJDOzs7OztPLFM7TztPOzs7STtHO0c7STtJO0k7STs7STtJO0k7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHO0ksaUI7Ozs7OztJO0ssUTs7O0s7Tzs7K0IsbUM7OztJO0k7Rzs7STtLLE07O0ssTTs7SSxXOzs7O0s7O007Ozs7Ozs7Ozs7O007OztJO0s7aUQsMkI7OztJO0c7O0ksc0I7O0ssTTtJLHNCOztJLEksUTs7Ozs7Ozs7Ozs7OztJOzZCLHlCO0c7RztJO0k7STtJOzs7STtJO0c7O0k7OztnQjtnQjs7O2lDLE8saUI7Yzs7OztnQjs7O2dCO2lCLFE7OztpQjttQjs7O3NCOzs7Ozs7Ozs7cUI7OztnQjtlO0c7O0k7O3lDLFcscUI7O0k7Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STtJOztJLHVCO0k7Ozs7TTs7Ozs7Ozs7O0k7Rzs7STtLOzs7Ozs7USxPOzs7O0ssVztHOztJO0ssaUM7SztLLE8sb0Q7Rzs7STs7Ozs7O0s7O0k7Rzs7STs7Ozs7OztLLEksUTs7OytCOzs7Szs7STtHOztJOzs7OztNOzs7VTtTOzs7Ozs7Ozs7OztJLE87Rzs7O0s7TSxJO007UTtVO3lDLE87O00sTSxXO00sTSxXO0s7O0k7STt1Qjs7a0I7SSxxQixVO2tCOztJO0c7O0ksVzs7Ozs7OztJLEs7SztJOzZDO0k7STtHOztJLFc7Ozs7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7ZTs7Ozs7OztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7MkIsTztJO0c7Ozs7Ozs7O0ksTzs7O0k7OztNO29EOzs7OztPOztNOzs7Ozs7Ozs7OztNO007TTs7O0k7Rzs7STs7O007MEI7c0I7TTs7Ozs7Ozs7Ozs7TTs7O0k7Rzs7STs7O007cUI7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007OztJO0c7O0k7STtHOzs7SztNO007TTs7TSxtQjs7Ozs7Ozs7OztLO0k7STtHOztJO0k7Rzs7STtJLFc7STs7Ozs7O0s7O0s7Szs7O3dCO0k7Rzs7STtLO0s7Szs7Szs7TTtLO3NCO007O087Ozs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O2U7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007Ozs7Ozs7Ozs7O007OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0ksTzs7d0Msc0I7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2E7ZTs7K0IseUI7O1k7OztZOzs7O2EsVTs7Ozt1Qjs7O1k7Ozs7Ozs7Ozs7OzttQjs7Ozs7O1k7Ozs7YSwrQjs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7Ozs7O1k7Ozs7O2EsVTs7OzJCO1k7Ozs7O1k7Ozs7O2EsVTs7OytCO1k7OztZLHVCLFU7Ozs7eUI7OztZOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztVLFM7O1M7O1c7OztZO3FCO1UsTzs7b0I7OztzQjs7O3dCOzs7MEI7Ozs0Qjs7OztTOzs7O0k7RztHO0ksYTtJLG9CO0ksbUI7SSxnQjtJO007STtNO0ksaUI7STtNO0k7TTtJLGdCO0k7TTtJO007SSxvQjtJO007STtNO0ksbUI7STtNO0k7TTtJLGU7STtNO0k7TTs7STs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7Rzs7STtLLE07SztLLFE7Ozs7SztPOztVOztJOztPOztPOztPO1EsVztRLE87TztRO1MsTzt1Qjs7O087O087Z0I7Tzs7Tzs7Ozs7Ozs7O08saUI7Tzs7RztHO0k7TTtJLFU7O0ksTztHOztJLE87Rzs7STs7Ozs7Ozs7O1M7OztVLE87OztVOzs7Ozs7Ozs7OztXLE07Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7Ozs7OztTOzs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxXOzs7OztTOzs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7cUI7Uzs7OztRLE87OzswQjs7Ozs7Ozs7VSxtQjtVOzs7Ozs7Ozs7Ozs7VyxHOzs7Ozs7VTs7Ozs7O1csTTs7OztTOzs7OzttQjs7UyxxQjtTOzs7O0ksTTt1QjtHOztJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7O0k7YSxNO0k7Rzs7STtLOztTO0s7O0k7SyxXO0s7SyxlO0k7STtLO0s7Tzs7eUIsbUIsZTs7SztJO2M7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztJO0c7OztJOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztLLE87OztJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7O1EsTTtPOztJOzs7USxNO087SSx1Qjs7O0k7SztPOzs7OztVLFc7VSxPO1M7Szs7OztNOztPLE87Yzs7aUI7Ozs7Z0I7SSxJLE0sNkM7Ozs7O3VDOztLOzs7Ozs7SSxPO0c7RztJOzs7OztJLG1CLE07O0k7Rzs7STs7MEM7O0ksTztHOztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SyxROzs7O0ssUTtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZO1ksTztJOzs7Szs7O0k7Rzs7STtJOzs7Ozs0QixPOzs7Uzs7OztLOztHOztJOzs7OztRLE87O1EsTzs7USxNOzJCOztJLE87Rzs7STtJO0ssTzs7STtHOztJOzs7STs7Ozs7OztJO0ssTzs7Ozs2Qjs7STtLLE87OztJO0c7O0k7Ozs7O0ssTTs7OztPO2dCOzs7Ozs7MkI7O087Ozs7UTtPOztPOzs7USxtQztROzs7OzthOzs7Ozs7Ozs7O2dCOztrQjs7b0MsaUM7Ozs7OztvQjs7Ozs7Ozs7YTs7WTs7Ozs7O1EsUztRO1U7Ozs7Ozs7O1E7VTs7O2E7YTt1Qjs7WTs7O08sTzs7Ozs7OztTOzs7OztVO1M7bUI7O1k7OzhCLDZDOztVO1c7OztXO2E7OztnQjs7aUIsTTs7O2dCO2U7O1c7Vzs7VyxPO1c7YTs7Ozs7Ozs7OztVLHFCO1U7VyxhO1csWTtXLGdCO1c7VTs7Ozs7Ozs7OztxQjs7Ozs7O087O1EsVztRLFU7USxjO1E7USxPO087Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OzhCO1c7WSxROzs7Vzs7YSxNO1k7O2E7O1k7Ozs7WTtZOzs7VztZLE07VyxVO1c7WTs7b0I7b0QsZTtXO1c7WSxXO1k7Yzs7Z0MsbUIsVTs7WTtjOzs7aUI7aUIsZTtnQjs7WSxPO1ksTztZLE87VztXO1k7Yzs7O2lDLHlDOzs7aUI7Z0I7WTtXOzs7OztRO1U7Ozs7USxrQjtRLFk7USxZOzs7VztZO2M7Z0Q7WSxLO1ksc0I7Vzs7OztvQjs7O1U7UTs7Ozs7O1U7VzthOzs7Z0IsVztnQixXO2U7O1c7YTs7K0IsbUIsZTs7VzthOzs7O1csTTtVO1c7O2E7Ozs7OztTO1U7WTs4QztVLFM7VSxJO1U7WTs7Ozs7O1M7VSxNO1M7VTs7WTs7O08sTzs7O2lCOzs7O2lCO2dCOzs7O087OztRLEs7UTtVOzt3Qiw2Qjs7UTtVOzsyQjs7USxPO087O087O1E7OztPO1E7MkI7UTs7Ozs7Uzs7O2lCOzs7O087OztROzs7Ozs7OztnQyxXOzs7WTthOzs7MEI7YTs7Ozs7Yzs7O3NCOzs7O1k7Ozs7YSxPO2EsUTtZOzs7OztzQjs7K0M7USxNOzs4QztPLE07O08sb0MsTTtPLFksVztPLHNCO087UTs7UyxzQjtROzs7OztRLFc7UTs7d0I7Ozs7Tzs7Ozs7OztROztRO1MsVTs7OztZLHdCOzs7O2E7Yzs7O2M7O2lCLE07OztpQjtrQixPOzs7O2E7YyxPOzs7WSxXO1k7Ozs7Ozs7UTtTLE07UTs7UztXO1MsTztROzs7Ozs7Ozs7O087USxVO1E7VTs7O2E7YTtjOztlLGU7Yzs7YTs7O2MsYTs7O2M7ZTs7O2U7O2tCLE07Ozs7O29DOzs7a0M7O2E7Ozs7c0I7O1k7O1EsTztRLFU7OztRO1U7OzZCLGdEOzs7O087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVTs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtRO1U7OzthO2E7OztZOzs7Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7O1UsYTtVLGdCO1M7Ozs7UTs7OztTLFE7UztROzs7O2lCOzs7O087USxPOztPOztPOzs7UTtRO087Ozs7Ozs7UTs7OzBCO08sSSx3QztPOztPLG9CLFU7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1EsZTtRO1U7Ozs7Ozs7O1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7OztXLFk7Vzs7O1ksVTtZLFc7Ozs7WTs7Z0I7Ozs7O1k7WTs7Ozs7Z0I7Ozs7WSxNO1k7VyxPOzs7Ozs7UTs7WTs7Ozs7UTtROzs7OzthLHdCO2E7Ozs7OztZOzs7Ozs7USxTO1E7VTs7Ozs7Ozs7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7VTs7O2M7Yzs7Ozs7Ozs7d0I7OzthOzs7O087Ozs7ZTs7Ozs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLE87OzRCOztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJO0ksTzs7OzhCLDRDOzs7YzthOzs7Ozs7OztLOztROzs7OztTLE87UTs7O1EsMkI7Ozs7Ozs7OztTOzs7O2lCOzs7OztLO0k7Ozs7O087O2dCO2tEOzs7Tzs7O1E7UTs7Vzs7O2M7O2MsUzs7Yzs7VTtPO1M7OzJCLG9CLFc7Ozs7O087Ozs7OztjO2dEO1E7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtxQjs7c0M7OztZOztRLFM7UTs7Ozs7OztVOzs7Ozs7VyxPO2E7OztjOzs7Ozs7Ozs7Ozs7OztXOzs7TyxPOzs7aUI7aUI7Z0I7Ozs7TTs7OztPOzs7OztJOzs7YTs7O2dCOzs7aUIsTTtnQjt3Qjs7d0M7OztlOzs7O0k7OztpQjs7OzttQzs7Ozs7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsVTtXO1M7VTtXLE87VzthOzs7Z0I7Z0I7d0I7OztlOztVO1csTTtVOzs7VzthOzs2Qiw4Qzs7VzthOzs7Z0I7Z0IsTzs7OzBCLFU7MEIsTzt5Qjs7O2U7OztXO2E7OztnQixXO2U7O1c7YTs4QztXO2E7OytCLDRDOztXO2E7OztnQjtnQjtlOztXOzs7YztVOzs7OztXOzs7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7OztLO007OztPLE07O1M7OztZLG9CLE07WSxPO1c7Ozs7O0s7TTtROztzQiw2Qjs7TTtROzt3Qjs7TTtROztNOzs7O0k7SyxrQjtLO087OztVOzs7VztXO1c7O1c7O1ksTztZO2M7Ozs7Ozs7O1c7O1U7OztXOzs7VzthOzs7Ozs7OztVO1M7Ozs7O0ssTTtLLFU7O0s7OztNO1E7OztXOzs7WSxRO1k7Yzs7Ozs7Ozs7VztVOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7NEM7Rzs7STs7Ozs7O0ksWTs7O0s7TSx5Qjs7STtHOzs7STtLO007UTs7O1csb0I7Ozs7a0M7O3dFOzs7VyxNO1U7Ozs7Uzs7Ozs7O1U7VSxRO1M7O007UTtLO00sTyxpRDs7O0ssWSxzQixZO0s7Ozs7Ozs7TTtNLFE7TTtLO007TSxPLHlEO0k7STs7O0k7SSxlO0c7O0k7YztjOztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7Ozs7O087USxPO1EsTztXO1EsVztRLE87Ozs7O0ksTztHOzs7STs7O0ksTztHO3lCLDRDOzRCLE8saUM7O0ksYyxXO0k7Ozs7USwwQyxnQjtJLE87Rzs7STs7Ozt5QjtJLGU7Rzs7SSxPOzs7Yzs7O2U7O2M7Ozs7aUM7O2E7OztHOzs7STs7Ozs7YTs7O2dCO2dCO2U7Ozs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjtTO1c7OztjOzs7O2U7OztpQjs7a0I7Ozs7Ozs7c0Msa0I7Ozs7aUI7Ozs7O2tCOzs7Ozs7O2lCOztjO2E7Ozs7OztTO1c7OztjO2M7O2E7OztRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7UztXOzs7Yzs7Ozs7ZTs7O2lCOzs7O2tCOztrQjs7Ozs7Ozt1Qjs7OzBCOzBCOzJCOzRCOzs7dUM7NEI7Ozs7OzJDOzsyQjs7OztrRDs7O3lCOzs7Ozs7Ozs7O2lCOztpQjs7OztrQjtpQjs7OztrQjs7bUIsVzttQjtxQjtrQzs7O21COzs4QjtvQjtxQixPO3FCLE07Ozs7Ozs7eUI7Ozs7Ozs7a0I7OzswQjs7a0I7OzswQjs7Ozs7aUI7O2tCOzs7cUI7a0M7aUI7Ozs7Z0M7Ozs7O2lCOztjO2E7Ozs7Ozs7Uzs7UztXOzttQyw2Qjs7O1MsTTtTLFE7Ozs7OzthOzs7Z0I7Z0I7Ozs7OzhCOzs7Ozs7Ozs7OztTLEksTSxnQzs7OztVO1c7OztnQjtrRDs7OztTO1UsTztVO1k7OztlO2U7ZTtjOzs7VTs7Ozs7Z0I7a0Q7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7UztXOzs7YyxXO2E7O1MsZ0I7OztTOzs7UTs7Ozs7Ozs7OztROzs7Ozs7Ozs7UyxLO1UsTTtTO1UsTTtVLE07OztVO1k7OztlO2U7Ozs7OztjOzs7VTtZOzs7ZTtlOzs7Ozs7Yzs7O1U7VTs7VSwrQjtVLE87Uzs7Ozs7OzZCOzs7Ozs7WTs7Ozs7Ozs7OztXO1EsUztRO1M7Ozs7b0I7Ozs7UTs7Ozt1Qjs7Ozs7OztJOztLLHlDLG9CO0k7Ozs7Szs7O0k7OzthLEk7YTtxQjs7WTtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLOztLO007O1M7OztZLFc7O1k7Ozs7YSxvQixLO2EsTzs7a0MsVyxnQzs7Ozs7Uzs7OztTLG9COzs7Ozs7Ozs7Ozs7OztnQixHO2lCOztnRDs7Ozs7Ozs7Ozs7OztnQixHO2lCOzs7Ozs7Ozs7YyxHO2U7Ozs7O1MsTTtROztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzsyQixtQjs7Ozs7Ozs7SztNLE87TSxPO007SztNOzs7O1MsTzs7O21CLFE7O2tCOzs7Ozs7OztTLE87OzttQjsyQjs7a0I7Ozs7UyxPOzs7bUI7MkI7O2tCOzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLOztLO0s7TSxPO00sTzs7SztNO1E7TSxPO00sTztvQjtLO0ssTzs7O2U7ZTtlLE87Yzs7O0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTtLO087OztVLFc7VSxPLHlCO1M7O0ssTztLLFU7STs7O087USxTO1E7TztRLE07O087TTs7OztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7O3NCOzs7Ozs7O0s7Ozs7WTs7Ozs7Ozs7OztNLEs7SztPOztzQixXLGlDOztNO087O3dCOztNOztPOzs7OztPOzs7O2E7Ozs7Ozs7Ozs7Ozs7OztLOzs7SztNOzs7O1M7OztLOztJO0ssUztLLFM7Ozs7OztJOzs7Ozs7VTswQyxlOzs7Ozs7Ozs7VzsyQyxlOztLLE07SztPOzs7VTtVO1M7OztLO0s7Ozs7d0I7O0k7STtLO087OztVLHFCLE87VSxPO1M7O0s7Tzs7O1U7VTtTOzs7SztJO0k7SztNO007Ozs7WTs7Ozs7OztLO007Ozs7TTttQjs7TTs7Ozs7O1M7OztLOztNOzs7OztVOzs7Ozs7Ozs7Ozs7STs7O0ssSTs7Ozs7Ozs7Ozs7OztJOzs7O0s7SztLOzs7Ozs7Ozs7YTs7O0k7OztJLE87Ozs7MkI7O0c7OztLO0s7STs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNLFc7Szs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OEIsc0I7O0ksVzs7STtHOztJLFc7O0ksa0I7Rzs7SSxPOzs7YztlO2UsTTtjO2E7OztHOztJLDhCOzs7O08sTzs7Ozs7O2tCOzs7aUI7aUI7Ozs7cUI7Ozs7d0I7Ozs7aUI7Z0I7O087OztRLFE7UTtRO1E7Ozs7UTs7O1M7OztVLFU7VTtVO1U7Ozs7OztPLE87Ozs7O2lCOztrQjs7a0I7Ozs7Ozs7O3dCOzs7OztrQixPOztnQjs7Ozs7OztPLE87O087Ozs7USxNO08sTzs7OztnQyx1Qzs7Rzs7STtLLEs7SztPOzs7VTs7Ozs7OztVLEssa0M7VTtXLE87VyxPO1csZ0M7VyxTO1csTztVOztrQjs7Uzs7Ozs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLO2E7ZTs7O2tCO2tCLGE7a0I7bUI7OztrQjtpQjs7YSxPO1k7b0I7Ozt1QjttRTt1Qjs7d0I7Ozt1QjtzQjs7Ozs7Ozs7Ozs7O1k7OzthO1k7Ozs7O2dDOzs7TTs7O0ksTztHO0c7O0k7OztLOzs7O0k7RztHO0ksVztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO087OztVOzs7Ozs7ZSxZOzs7O2tCOztrQixNOzs7a0IsTTs7O2M7OztlO2U7MkI7Ozs7Ozs7Ozs7b0I7OztxQixPO3FCLFU7Ozs7O3FDOzs7d0IsSztxQzs7OztxQjs7b0I7b0IsTTs7OztvQixNOzs7Ozs7bUI7Ozs7b0IsUTs7Ozs7O21CLE07Ozs7O29COzs7cUI7O3lCO29COzs7O21COzs7b0IsUTs7Ozs7bUI7Ozs7b0IsUTs7Ozs7bUIscUI7bUIsVzs7OztjO1c7WTthOzthLFE7Ozs7d0I7YTs7Ozs7Ozs7d0I7Ozs7Ozs7Ozs7Ozs7VztZLFE7WTs7O1UsVztVO1M7O0s7Tzs7eUIsbUIsVTs7SyxLO0s7Tzs7eUIsb0IsVzs7SyxNO0s7Tzs7eUIscUIsWTs7SyxPO0s7Tzs7eUIsb0IsVzs7SyxNO0ssSztLO0ssUztLOztLOztNOzs7O1U7O1csTTtVLGtCOztXLE07O1U7Uzs7O007Tzs7Ozs7O1U7VSxNOzs7Ozs7O1M7Ozs7OztPLE07OztpQjs7OztLO007TSxJLDZCOzs7O1E7OztTOztVO1MsRztVOzs7O1E7Ozs7OztLOztNO007Ozs7Ozs7Ozs7Ozs7SztLO0k7SSxJLDZCOzs7O007O08sTTtrQjtNOzs7Ozs7O0s7Szs7Ozs7O1E7Ozs7OztTO1E7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7STs7SztLOzs7Ozs7UTs7Ozs7Tzs7Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7O087O3lCLG1CLGE7O0k7O1k7OztlOzs7Ozs7Z0I7a0I7OztlO2M7O0c7O0k7STtLO00sTTtNOzs7O1E7Ozs7aUI7OztROztRLE87Ozs7O2tCOzs7Ozs7a0I7bUI7O21COzs7b0IscUI7Ozs7Ozs7Ozs7Ozs7O21CLFk7Ozs7Ozs7OztxQjtzQixPOzs7OztrQzttQjs7c0I7OztvQixNO3VDO21COztvQjs7Ozs7Ozs7a0IsTzttQixNOztrQjttQjs7bUI7cUI7Ozt3Qjs7Ozs7O3lCLFU7eUI7eUI7eUI7d0I7dUI7Ozs7O2tCLE87Ozs7Ozs7O2lCOzs7UTs7OztTO1E7Ozs7UTs7O1E7OztTOzs7Ozs7UTttQzs7O0c7O0k7SyxvQjs7Szs7Ozs7Ozs7O0ksTzs7Ozs0Qjs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87Ozs7O1cseUMsZTs7O087OztRLE87USxJO1E7O1c7OztVO1EsUTtROzs7Vzs7O2M7YztlOzs7OztnQixPO2UsTzs7YzthOzs7UTtVOzs7YTthLFc7WTs7USxVO1E7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Syx5Qzs7O1E7O1M7Ozs7USxnQjs7UTs7O1M7VztTLE87UyxhO1M7Ozs7O1EsVzs7O1E7Ozs7OztROztTO1c7NEMsYztTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VTs7OztjOzs7K0I7O1U7WTs7Ozs7UztVOzs7O1M7VTs7Ozs7b0I7Ozs7Uzs7a0I7Ozs7Ozs7Ozs7UTs7UztXLHlDLGE7UyxlO1M7Ozs7O1M7Ozs7YyxTO2Msa0I7Yzt1QjthOzs7UTs7USxtQixPOztRO1MsUTtTLE07OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UTs7OztROztTOzs7Uzs7OzthOzs7Ozs7O1E7Z0I7OztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJOztLOzs7Ozs7TyxVO29COzs7O0s7STtJOzs7SyxnQix5QztLLE87STtJO0ssTzs7SztPOzs7VSxrQjtTOzs7SyxPO0ssYTtJO0k7STtHOzs7STs7STtJO0ssWTtLLFM7SztPOzs7VTtTOzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7UztXOzs2QixtQixhOztRLE87Ozs7UTs7UztTLE87USxPOzs7O0c7O0k7STttQjtLLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7Ozs7USxtQjs2QjtRLHdCO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO1M7Vzs7NkIsbUIsYTs7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7VSxPO1UsTztTLE87O1EsSSx3QixPO1EsTzs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRLFc7USxPOzs0QyxXOzs7Ozs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VzthOzhDLGM7VztXOztXOzs7VTtrQjs7O1U7OztXO1csTTtXLFE7Vzs7O1c7VTs7Ozs7bUI7Ozs7Ozs7Ozs7ZTs7O2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7Z0I7OzttQjttRCxlOztlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7Ozs7VTs7VzthOzZDLGE7Vzs7O1U7OztvQjtxQjs7c0I7OzswQjs7O29CLE87bUI7Ozs7OztXOztZOztZLFE7WTtZLFE7WSxPO1k7OztlOzs7ZTs7O2dCO2dCO2U7Ozs7Ozs7WTtXOzttQjs7VSxXOztVO1csUTtXLE07VyxROzs7Yzs7O2M7OztlO2M7Ozs7Ozs7VztXO1U7Ozs7a0I7OztVOztXOzs7VztXLFE7Vzs7O1U7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7WTtZO1k7MkI7WSxTOzs7ZTs7aUI7Ozs7O2tCO2tCOztpQzs7a0I7aUI7Ozs7eUI7Ozs7Ozs7Ozs7O2UsTTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxNOztZO2EsTzs7ZTtvRCxpQjs7Vzs7VTtXLFE7VztXLFE7Vzs7O2M7OztjOzs7ZTtlOzs4Qjs7Yzs7Ozs7Ozt1Qjs7O1c7VztVOzs7O2tCOzs7Ozs7O007TztRLFE7OztRO1E7Ozs7O087Ozs7O087USxPO1EsTztPLE87O0s7O00sTzs7OEI7O0s7O007TztRLFE7Ozs7OztXOzs7Ozs7O1MsTTs7O087Ozs7O1EsTTs7O0s7O00sTzs7b0M7OztLOzs7TTs7Ozs7O2lCOzs7Ozs7TTs7Ozs7TyxXO087TTs7Ozs7SztNLFU7O007SyxPO0k7SSxPOzs7STtLLE87SyxTO0k7Rzs7SSxzQzs7STtLLGU7SyxTO0s7Ozs7STs7RztJLGdCO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4QixPO3dCOztHOztJLEksVyw4Qzs7OzRCLE87OztHOztJO0k7Ozs7Ozs7Ozs7O0c7b0MscUM7O0k7STs7SSxPOzs7Yzs7aUI7OztxQjs7O3NCOzs7Ozs7Ozs7Ozs7O3lCOzswQixTOzBCLE07OzRCOzs7Ozt5Qjs7Ozt5Qjs7MEI7NEI7NkQsYzt5Qjs7eUI7MEIsTTs7Ozs7eUI7eUI7MEIsTTs7Ozs7Ozs7MkI7MkI7NEI7O2dDOzs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7MEI7NEI7NEQsYTs7Ozs7K0IsUzs7K0I7d0M7Ozs7OEI7OzhCOzs7eUIsbUIsTzs7eUI7MEIsTTswQixNOzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7eUI7OzBCOzs7eUI7eUI7MEIsTzs7NEI7Ozt5Qjs7MEIsUTswQjswQixROzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7O2lDOztxQjtvQjs7ZSxNO2MsTzs7O3dCO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3VCOzs7OztHOztJLFk7O0k7Rzs7STtnQjs7O00sTTtpQzs7STs7Ozs7Ozs7ZTs7Rzs7STs7OztROztJOzs7O0c7O0k7SyxVO0ssOEI7SyxZO0k7O0s7Ozs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07Szs7O1U7Ozs7OztTOzs7SztJLFc7Rzs7STtLLGtCLE07SyxPOztJO0ssTztJO0k7SyxNO0ssTTtLLE07SSxPOztHOzs7STtLLE07OztLO00sTTs7TSxNO007UTtLLE87STtJOztPOztPOztPO2U7Ozs7STtLLE87STs7SztLLFU7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNO0s7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJO0s7SyxhLFc7STtHOzs7Ozs7Ozs7O0k7Szs7OztLLGtCO0s7SyxZO0k7Ozs7O1k7O0c7O0k7SztPO1M7OztZOzs7Ozs7WSxTO1k7YTtlO2EsSTtZO1c7O0ssUTs7O0ssTztJLE87OztjLGM7O2M7YTs7O0c7O0k7SztPOzs2Qix3Qjs7Ozs7OztJO0c7RywyQyxTOztJLDJCLE8sK0I7Rzs7STs7YSxjLE87Ozs7O3VCLFc7dUI7c0I7WTs7Rzs7STs7O2M7YTs7NEIsUzs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87OztJOzs7YyxXO2MsVzthOzs7YSxXO2EsVztZOzs7OztHO0ksbUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7YyxPLGM7YTs7NEIsTyxjLHFCOzs7O0c7d0IseUI7O0ksUSxxQyxTOztJOzs7YztjO2E7Rzs7SSxPOzs7YztjO2E7OztHOztJLHVEO0k7Rzs7SSxzQztnQjtJOztLLFE7SyxPO0ssTztLLFM7SztLO0ksVzs7O0k7O087Ozs7OztROzs7UTtPOztPOzs7UTs7O087O08sTzsyQzs7OztJO0s7Szs7Szs7TTs7UTs7O1c7VztVOzs7O0k7Rzs7STtLO087OztVO1U7Uzs7O0s7Tzs7Ozs7Vzs7O29COztxQzs7O1U7VSxPOzs7b0I7b0I7bUI7Ozs7STtHOztJLEksVTs7Szs7USxvQjs7Ozt1QixNOzs7OztTOzhCLE07O1MsSSxrQjs7Ozs7VyxVO1c7O1UsTTs7UztVOztVLFU7dUIsTTtTOztVLDBCLHNCOzs7YTs7O2M7Ozs7YTs7Ozs7Ozs7WTtVO1U7Ozs7Yyx3QztjOzthOzs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTtTOztpQyw2Qjs7Ozs7O1E7Ozs7OztTOzs7UTs7Z0MscUM7O1E7Ozs7O1M7UTs7Z0MscUM7O1E7OztTOzs7UTs7Z0MsNkI7Ozs7Ozs7Ozs7O3NCOztVOztnQyxnQzs7OztTOzs7O1U7VTtZOzs0Qjs7VSw0QiwwQjtVLDBCLFk7OzthOzs7ZSxNOzs7O2U7ZTs7O3VCOztjOzs7O1k7VTtZOzJDLHdCO1M7O1c7WTtjO1k7Ozs7Ozs7Ozs7NEI7Ozs7WTs7WTs7Ozs7YTs7Ozs7Z0I7Ozs7YSxNOzs7Ozs7OztnQjs7Ozs0Qjs0QjsyQjs7ZTs7WTs7O3NCLGU7Ozs7OztnQzs4Qzs7Ozs7OzBDOzs7Ozs7Ozs7MEMsTzt5QzsrQjtxQjs7Ozs7OztZOzs7YTs7O2dDLDZDOzs7Z0IsaUIsaUI7Z0I7Ozs7b0I7Z0IsTTs7O3lCOzs7ZTs7Ozs7WTs7O1E7UTs7UTs7OztTLFU7OztTLFU7OztTO1M7O1E7OztrQjs7Ozs7bUI7cUI7bUI7cUI7bUI7O2tCO2lCOztROzs7OztTLFU7OztTO1M7UTs7O2tCOzs7bUIsUTtrQjtpQjs7USwwQjtROztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UztROzs7a0I7a0I7aUI7O1EsOEI7UTs7OEIsc0I7OztROzsrQixzQjs7O1E7OytCLG9CO2dCLDRCOztJOztLO2M7OzhCOztJOztLOztROzBDO2UscUMsUzs7Syw0QixjO0k7OztLLFU7Szs7STs7Ozs7O0s7SztPO0s7SyxTO0ssUTtLOzs7Szs7SztPOzs7Ozs7OztLLFE7SztJO0c7O0ksTzs7MkI7O0c7dUIsNEIsd0I7Rzs7O00sdUI7OztPOztROztXLE87Ozs7OztVO1E7O1csVTtXLE87VTtRO1U7WSx3QyxZOztRLE07UTtVO1ksMkMsZTtRLFMsVztPO2U7OztNO08sTzs7Ozs7Ozs7OztNO007TyxVO08sTztNO007TztTO1csd0MsWTs7TyxNO08sVyxXO007Yzs7Szs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Z0MsTztJLEc7SyxNO0k7SyxPO0ssTztJLFMsTTtJO0c7O0k7OztPLEc7USxNO087O087Ozs7OztRO1U7OzJCOztPOzswQixpQzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOzs7Tzs7c0Isd0M7O087Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7Ozs7Tzs7ZTs7Z0M7Ozs7Tzs7OztRO1U7OzJCOztRO1U7OzthO2E7WTs7O1E7VTs7O2E7YTtZOztRO087O087Ozs7O1E7VTs7MkI7O1E7VTs7O2E7YTtZOztPOzs7Tzs7ZTs7Z0M7OztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7UTtVOzsyQjs7UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7O0ksTzs7O2M7YzthOzs7O0c7O0k7STs7O1E7O1E7O1E7O1Esc0I7Ozs7VSxXO1U7OztROzs7OztRO1MsTzs7O1E7Ozs7Ozs7O1E7OztXO1c7VTs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROztRO2tEOzs7UTtrRDs7USxPOztnQzs7OztRO1E7OztXO1c7VTs7USxPOztnQzs7OztRLE87OztROzs7OztROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztJOzs7SSxPOzt5QixnQyxrQjtHOztJLE87OzRCO0c7O0k7Ozs7O0c7O0k7Ozs7O0s7Ozs7Ozs7Ozs7OztXO2E7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7Szs7O1EsbUIsTztRLFMsTTtRO087O0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SztLO007UTs7MEIsa0IseUI7O007TTtRLDJDO00sZTtNLFU7TTtROzs7VyxPO1U7Ozs7TSxTO007USx5QyxrQjtNLFk7Szs7STtLO007Ozs7TTs7OztVOztLOzs7OztNOzs7ZTs7OztHOzhCO0c7STs7Ozs7Ozs7OztJO0ssUTtLLFk7SyxXO0s7SztJO0s7O0ssVztLLE87STs7Szs7eUIsTzs7OztTOzs7VSxVOzs7Ozs7Ozs7OztXOzs7OzthOzs7OztZOzs7OztTLE87Ozs7eUIsa0I7Ozs7Uzs7OztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVO1U7VSxjOzs7O1k7O2EsSzs7WTtZOzs7O1U7VTs7Ozs7SyxPO0k7MkIsNEI7O0s7OztLOzs7STs7Szs7Szs7O0k7STs7Szs7Ozs7OztVLEc7VztZLEs7WSxPO1k7O1ksTTs7OzJCOzs7Ozs7O1MsRzs7O2dCOztLLFc7SyxPOzs7ZSxrQztlO2M7OztJO0ksYTtHOztJOzs7K0I7Ozs7O0ksSSxvQixRO0k7SyxJLFcseUM7Ozs2Qjs7O0k7O0ssWTs7OzthOzs7SztLLE87STs7Ozs7OztTO1MsTzs7aUM7Ozs7Ozs7Ozs7Uzs7O1k7WTtXOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQiwyQjs7UyxPOzs7bUI7bUI7a0I7Ozs7UztTOzsyQixrQiwyQjs7aUI7OzZCOzs7OztTO1MsTzs7aUM7Ozs7Ozs7O1c7VztZO1ksTztXOzs7O1M7Ozs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7Ozs7UyxPOztpQzs7Ozs7O2lCOztNOzs7O0k7SSxZOzs7Ozs7Uzs7Ozs7O1U7WTs7NkI7O1M7Ozs7UztpQjs7a0M7OztTOzs7Ozs7VTtTOztTOzs7OztVO1M7O1M7OztVO1k7OztlOzs7Ozs7OztnQjtnQjtrQjs7ZTtjOztTOztTOzs7O1U7WTs7NkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1U7WTs7NkI7O1M7Ozs7O1M7Ozs7O1U7WTs7NkI7O1U7WTs7O2U7ZTtjOztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VTtZOzs2Qjs7UztVO1csUTs7O1c7YTs7O2dCO2dCLFc7ZTs7VzthOzs7Z0I7Z0IsTztlOzs7O1csTztXO2E7OztnQjtnQjtlOzs7O1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1U7WTs7NkI7O1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7OzthO2EsTzs7cUM7O1k7Uzs7VTtXO3lCOzs7Ozs7Uzs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7O1M7OzJCLG9CLDZCOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQix3Qjs7UyxPOztrQyxrQix3Qjs7OztTOztTOzsyQixrQixzQjs7aUI7OzZCOzs7OztTLE87O2lDOzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7OztTO1M7Ozs7Ozs7OztTLE87O2lDOzs7Ozs7Ozs7Ozs7O0k7SSxjO0k7Szs7TSxlLDZCOztLO0k7STtLOztNLGUsNkI7O0s7STs7Ozs7OztTLEksVSwyQzs7O2dDOzs7Ozs7Ozs7YTs7Ozs7YyxNO2E7WTtTOztVO1c7dUI7Vzs7WTs7Ozs7Uzs7Uzs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7WTthLE07YSxNO2dCO2EsVTthLE87Ozs7OztTLE87Ozs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7WTs7O2UsVTtlO2M7O1M7OztTLGM7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1UsVztTOzs7OztTOzs7OztVLE07VTtZOzs7ZTtlO2M7O1M7OztTLGU7O1M7Ozs7OztVO1M7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOzs7O1UsbUI7VTs7O1M7VTtVOzs7OztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7eUM7O1M7Ozs7OztVLE07VTtTOzt3Qzs7O1MseUI7OztpQjs7O0k7SztLLFE7SztLLGE7SSxRO0k7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHdCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOzRCO2E7SztJO0c7O0k7OztROztROztROztROztROztROztROztRO2dCOzs7STtHO0c7STs7Ozs7SSxVO0k7Rzs7SSxVO21CO0k7Ozs7Rzs7SSxvQjtJOzs7Tzs7O1EsUztnQjtRLE07TztPLE87TTs7SSxVO0k7SSxPO0c7Rzs7OztJLGtCO0k7STtLLGU7SyxTLDJCO0k7SyxNOztJO0ksSSw0Qjs7OztNO08sTTtPLE87TyxNOztNOzs7OztJO0s7Tzs7O1U7Ozs7O1c7VTtTOzs7OztJO0c7bUIsWTtpQyxZOztJO0k7aUIsTTs7Ozs7OztLLEc7TTtNOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksaUI7O0c7O0k7Szs7bUIsVyxxQzs7O0c7O0ksRztLLE87STs7UztLOztROztLLE87O0k7Rzs7SSxPOzs7YyxXO2M7ZTtnQixhO2dCO2tCO3FCOzs7Ozs7Ozs7OztjO3lCOzt1QzswQjs7O2UsWTs7Ozs7O2U7O2dCLE07Z0IsTTtnQixNO2UsTzs7YyxJLFU7Ozs7O2U7O2dCLE07Z0IsTTtlLE87O2M7Ozs7b0I7Ozs7O0c7O0k7OztPOzBCOztPLE87TTs7OztHOztJOztpQjs7OztNLEcsdUM7TTs7Ozs7TTs7O08sTztNOzttQztPOztNOzs7OztHO0c7STs7OztJOztJLGlCOztJLE07Rzs7STs7O0s7SztNO08sTTtPLEs7TTs7O3NCOzs7Ozs7Tzs7Ozs7Ozs7Ozs7SyxJLFE7Ozs7Ozs7ZTs7cUI7O0c7O0k7STtLLE07SyxNOztLO3NDLDRCOzs7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCOzZCLE87NEIsTztHOzs7OztJOzs7Ozs7STs7OzswQiw0Qzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTzs7O0ksVztJLE87O2M7RztHOzs7OztJOztJOzJCLHFDOztLOzRCO0s7STs7Szs7SztJO0k7O0c7OztJO0k7O0k7Rzs7STtLO0s7Ozs7O00sTTs7O0c7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7SSxJLHdEOzs7OztNLFk7a0IsTTs7b0I7TSx1QjtNO007O0s7O0c7O0k7a0I7O0k7Rzs7SSxXO0k7OztPO087TTs7STtHOztJO0ksTztHOztJLEksK0IsTTtJLE87Rzs7SSxJLHFEOzs7O007TTtNOzs7OztJO0k7STtJO0k7SSwrQjs7OztNO007TTs7Ozs7STtJO0k7STtJO0ksK0I7Ozs7TTtNO007Ozs7O0ksTztHOztJOzs7Ozs0Qjs7NEI7OzRCOzs0QixPOzs4Qjs7OEI7c0M7OztPOzs7UTtVLDRCOzs2QixvQyxTO087Tzs7Tzs7UTtVLCtCO087OztVLE8sK0I7Uzs7TzttQzs7Rzs7STs7O08sTztRO087UTtRO1E7Ozs7OztROzs7TTs7O0ssUztLLE87O2tDLE8sMkI7OztlLEksUSxlOzs7dUM7OztjO0k7Ozs7SyxPO0ksZTtJLE87O2lDLE8sK0I7OztjOztpQjs7Ozs7OztpQzt1QjtlLE07O2M7YTtHOztJO0k7STtJLE87Rzs7SSxPOzs7Yzs7O2lCOzs7a0I7O2lCOztpQixxQztpQjs7aUIscUM7aUI7O2lCLHVDO2lCOzs7aUI7O2E7O0c7O0ksVztJOzs7TztPO087TTs7O0k7Rzs7STtHO21DLHVCOztJO087SztJLFc7STs7O087TztPO007Ozs7Rzs7SSxXOzs7STtJOztHOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7STs7O0ssaUI7Szs7TTtNLFU7O2EsTTtLOztJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7STtJOzs7TztRLE07UTs7MEI7OztNOztJO0c7O0k7RzttRDtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Rzs7O00sdUI7O00sVztLOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksTzs7Ozs7Yzs7O0c7O0ksd0I7RztpQzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUztJLE87Ozs7ZTs7Yzs7O2M7ZTtlO2lCLDJCO2M7ZSxNO2MsVTs7YyxPO2E7Rzs7SSxTO0k7STtLLE07SztPOzs7VTtXO1csUztXLE07VyxNO1csTztzQjtVOztXO1csTTs7aUI7VyxNO1UsUztVO1c7WSxNOzs7Ozs7OztVO1UscUI7VTtVLE07Ozs7STtHOztJLGdDO2U7STs7O2tCLFc7SyxRLFc7STtJOzs7SSxnQztlO0k7OztrQixXO0ssUSxXO0k7STs7O0k7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFM7STtLO2U7Szs7O00sVTtNLEc7TyxNOzs7Ozs7Ozs7O1c7Ozs7STtHOztJLGMsK0I7Rzs7STtLLFM7SyxTOztJO0c7OztJO0s7Szs7O0kseUIsTywyQjtJO0s7O1E7VTs7VyxVOztXO1k7Ozs7Ozs7OztZLFU7WTs7VyxPO1U7OEI7Ozs7Szs7UTtVOztXO1c7VTtLOzs7UTs7OzswQixPLDhCOztJLE87Ozs7O2M7YTtHOztJOzs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOztHOzs7TSx1Qjs7TSxXO0s7OztJO0k7SSxPOztpQyxzQzs7O2MsTzt1Qjs7d0I7Ozs7Ozs7dUI7YTtHOztJO0k7OzsyQjs7O0c7O0k7STs7OzJCOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STs7Ozs7Ozs7SSxPO0c7O0k7STtJO0k7STtJO0ksTTtHOztJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJLE07Rzs7SSxZOztJO0c7O0ksWTs7STtHO0c7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87O0c7O0k7O3NCLE07Ozs7O0s7O1E7O3NCLE8sOEI7O0s7Ozs7O00sTzs7OEI7Ozs7OztHOztJLGdCOztLLE87OzZCOzs7OztHOztJOzs7aUI7O2lDOzs7Ozs7O0c7O0k7SyxTO0ssTztLLFE7a0MsTztJLFc7STs7cUI7Ozs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0ksTyxXO0c7OztLLCtCLFM7STs7SywrQixhO0k7Ozs7Ozs7Ozs7USxvQjs7O1MsTzs7aUM7Ozs7Ozs7OzBCOzs7O1U7O1U7O1U7O1U7O1M7OzBCOzs7VTs7Uzs7UTs7Ozs7O1M7Ozs7O2E7O3dCOzt3Qzs7OztZO1M7Ozs7Uzs7OztTOztVOzs7VSxPOzs7Ozs7UTs7eUI7O1E7Uyx5QixTO1M7UztvQjtRLHFCOzs7O21COzttQzs7Ozs7Ozs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOztROzs7TTtPO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOytCOztTLGM7dUI7UyxzQixPO1MsTzs7aUM7Ozs7OztTLE87Ozs7Ozs7O1M7O1M7Ozs7UyxjOztVLE87O2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7OztTOzs7Ozs7Ozs7OztTOzs7O1UsYzs7VyxPOzttQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs4QixPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7OEI7Ozs7SSxlOzs7OztjOzsrQjs7OztHOztJOzs7O0k7O087O0ksRztLLEksUzs7TTs7TyxNO08sVztPLE87TSxXO00sTTs7SztNLE07Ozs7SztNO087O1U7Ozs7O2E7YTtZOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7UTs7O1c7O1U7Ozs7OztROzs7O1csYztXOztZLGE7WSxZO1c7OztJOzs7TztPO007O0k7SyxRO0s7OztPOzs7USxROzs7Ozs7Ozs7b0I7OztTO1UsTTtnQjs7Ozs7Tzs7Ozs7O1UsSSxjOzs7O1ksTTs7O3FCOzs7O1U7Vzs7Ozs7Vzs7Ozs7OztVO1csTTs7Ozs7OztPO1EsTTs7TztRLE07USxNOzs7Ozs7OztPOzs7Ozs7OztNOzs7UztTO1E7Ozs7Ozs7O0ksVzs7SSxXOzs7Rzs7STtJO0ssTTtLLE07SSxPO0c7RyxJOztJO0s7SyxNO0ssTTtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0c7O0k7O0s7O087WTtNLEc7TSxHOzs7Ozs7STtHOzJCLDRCOzJCLDRCOztJOzs7Szs7UTs7MEIsNEI7O1k7TTs7O0s7Tzs7O1UsbUI7O1UsTztTOztNOzt1QztJLFU7STs7Ozs7Ozs7OztRO1E7UTtROztTLFU7OztPO087O2dDOzs7VTtVO1U7OztXOztZLFU7Ozs7Ozs7OztVOzs7Ozs7O21CO1csTTs7Ozs7VTs7WTtpQjs7YTs7Ozs7Vzs7YTtrQjtZOzs7aUI7Ozs7WSxjOzs7O2E7O1k7O2U7WSxNOzs7Ozs7Ozs7VTs7VyxNOzs7O1U7O1csTTs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7OztJO0s7WTtLOzs7OztNOztPLFk7TyxNLFc7TyxNO08sWTtNO00sTTs7O0s7O00sTSxXO00sWSxXO00sVztLO0ssTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiwrQzs7SSw4QjtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O08sNEMsUztJOzs7O0c7O0k7Rzs7STtHO29CLHdEOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7RztHOztJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7STs7OzJCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzJCLDZDOztJO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0ksTTs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7eUIsbUQ7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG9EOztJO0c7dUIsa0Q7dUIsa0Q7O0k7Rzt1QixrRDt3QixtRDt5QixvRDt5QixvRDs7STtHOztJO0c7eUIsb0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RztrQiwwRDs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJO0ksTzs7O2M7O2U7OzswQyxpQzs7NEM7ZTtnQjsyQjs7ZTsyQyxXLGM7ZTs7O2tCLHVCLGtCLGlCOzs7a0I7OzJCOzJCLHVCOzBCOzs7a0IsMkIsWSxpQjs7O2tCLDJCLFksaUI7OztrQjtzQyxvQiwwQjs7O2tCO3NDLFksMEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7Ozs4QjtrQjs7O21CO21CO3FCOztzQzs7a0I7OztrQjs7c0Msb0IsMEI7OztrQjs7MkI7b0U7MkI7MEI7OztrQjs7MkI7MkI7MkIsTzswQjs2Qzs7YztjO2E7O0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDZCO0c7Ryw0QjtHO0csNEI7RztHLDJCO0c7RyxpQztHO0csa0M7RztHLGdDO0c7Ryx3QjtHO0csd0I7RztHLHdCO0c7RyxxQjtvQixrRDs7Ryx5QjtHO0csd0I7RztHLDhCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2Qjs7STtLLE87SyxPO0ksTyxXO0c7O21CLG9EO21CLG9EO0c7SSxRO0k7Ryx1QjtHO0csMEI7RztHLDBCO0c7Ryx1QjtHO0csMEI7RztHLHNCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO087Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLG9DO0c7RyxpQjtrQixrQzs7SSxlO0ksTztHO3FCLGdEO3dCLGtDOzs0Qix1Qzs0QixpQzs7Ryw4Qjt3QixtQzt3QixrQzs7RyxpQjtHO0csb0I7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7O0k7OztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csc0I7RztHLHdCOzs7Ozs7O0k7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7Ozs7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOzs7Ozs7RywwQjs7SSxPO0c7MEIsbUQ7cUIsTyxpRDt1QixTO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOzs7O0csd0I7O0ksTztHOztHLHlCO0c7MkI7RyxJO0cseUI7RztHLHNCO0c7RywwQjtHO0csd0I7O0ksZTtJLE87Rzs7SSxXOzs7Rzs7STs7OztHOztHLDhCOztJOzs7O0c7O0k7OztHOztJOzs7Rzt5Qiw2QjsyQiw2Qjt1QixPLHFDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7OztLO087Ozs7O0ssTTtLLFk7SyxNO0ssTTs7SyxZO0s7SyxNO0ssUztJO0ksTzs7O0k7STtJOztLLE07SyxNO0ksTztHOzs7STtLLFksa0I7Ozs7Z0I7Szs7OzsyQjs7Ozs7STtJLFU7STtLLFk7Ozs7Ozs7STtJO0k7Rzs7SSxHLG1DO0ksZTtJO0k7Rzs7STtLLFU7Szs7O2M7YyxPO2E7STs7O0s7O00sTSxXO0ssZTtLO00sTTtXOzs7Ozs7SztNLE07b0I7Ozs7SztNLDBCO007OztJLE87Ozs7NkIsTyx3QjtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7dUIsZ0M7a0MsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87TTtROzt3QixPLHFDOztNLFE7TSxPO007UTs7d0IsTyxtQzs7O0s7a0IsTTtNOzs7Ozs7O1UsVztVLHFCO1M7TyxVOzs7O0s7O007OztXOzs7OzRCOzs7STtLLFc7SyxXO0ssVztLO087OztVLE8scUI7Uzs7SztPOzs7VSxPLHFCO1M7O0k7Ozs7TTtPOzt1QjtLOzs7OztNLE87SyxXOzs7Ozs7Ozs7OztJOztZOzs7STtLO007OztXO3lDLHlCOzs7O0ksSztLLE87O0k7O0ssVTtNLEk7Ozs7VTs7STtLO087OztJOztNLE87SyxVO007TTtNLEk7Ozs7O00sMEI7TSxJOzs7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0s7TSxhO007UTtVOzs0QixPLGtDOztXO1k7Yzs7WSxPO1k7Yzs7O2lCO2tCLFM7a0IsTztpQjtpQixVO2lCLE87Z0I7OztZLEk7VztVO0s7Ozs7Szs7TTtNOzs7SztNO1E7O1M7O1MsYTtTO1M7VTs7VztZLFk7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCO2lCLGM7O2lCOzs7Ozs7Ozs7OztjOzs7O2dCOztpQixPOzs7Ozs7Ozs7Ozs7Ozs7O1E7O3dEO0s7O0c7Ozs7Ozs7O0s7SztLOzs7UTs7UyxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CLDRCOztPOztLLE87OztLO00sYTs7O1E7O2dDOzs7O00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXO0k7TTs7O1MsTyxxQjtROzs7Ozs7Szs7TTs7O0k7O0s7Tzs7OEI7Ozs7OztLLFc7SztPOzs7O0ssVztLO087OztNLFc7TTtlOzs7Ozs7Ozs7STtLLGMsZSx3QixTO0ssVztLLE87STs7Ozs7O0k7O0c7O0k7OztJOztHOztJOztJOztLLE87SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOztJLE87OztjOzs7ZSxJO2MsRztlLFc7ZSxPOzs7Ozs2Qzs7O2MsVztjLE87YTs7Rzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0ssYztLLEc7TTtjO007O0ssUzs7TTtjO007Ozs7O1MsVztTLE87UTs2Qjs7O0s7TSxPO00sTzs7TTs7Ozs7Szs7Ozs7TTs7O1M7Ozs7TTs7O1M7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STs7SyxxQztJOztJO0s7Szs7Ozt3QixjO3dCLG1CO3dCLG1COzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDOzs7OzttQzs7Ozs7OztxQzs7Ozs7c0M7Ozs7O3VDOzs7Ozs7O3VCOzs7Ozs7Ozt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEM7Ozs7OzRDLDZCOzs7Ozs2QyxrQzs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt3QixpQjtLOzs7O3NCOztLLGU7SztLOztNOztPLEk7TztPO1M7OztZOzs7OzthLFU7YTthO1k7WTtZO1c7O007OztTOzs7Ozs7VTtTO1M7OztZO2EsRztjO2EsVzthOztZLEc7YTtZLFc7WTtXOzs7O1UsVTtVLFE7Ozs7O1M7UTs7TTs7Ozs7OztPOzs7VTtXLFE7OztXOztVOzs7YSxVO2E7WTs7Ozs7O29CO29COztTOzs7O087YztPLFc7TztPOztvQyxzQzs7Tzs7VTs7O2E7YSxPO1k7O087OztVO1U7VTs7O2E7OztjO2EsTztZOztVO1UsTztTOztPOztNOzs7TSxVO007O0s7Szs7OzsrQztLO0s7O0c7O0k7SSxPO0c7O0k7SztLOztJOzs7ZTtLO0ssYztLLE87SztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxTO0ssTTtJO0k7SyxNO0s7TztJLE87YTs7YyxPOzthO0c7O0k7SyxNO0ssTTtLO08sVztJLE87YTtHOztJLE87YTs7YztlLE0sVztlO2lCO21COztlOztlOzs7OztrQjttQixNO21CLE07a0IsTzsyQjs7OztpQjtjO2M7YztjO2M7YTtHOztJO0ssUztLLE07SyxLO0ksTztHOztJLFU7SSxPO2E7O2M7YyxHLDZCO2MsSTs7YTtHOztJO0ssYTtLLE07SztPLFc7SSxPO2E7Rzs7STtLLE07SztPO1MsVztLO08sVztJLE87YTs7Ozs7Z0I7Z0IsTztlOztHOztJLFU7SSxPO2E7OztlOzs7OztlLE87Ozt5QjswQixNOzBCLE07eUIsTzt3Qjs7YztjLE87Ozs7O3dCO3dCLEs7eUI7eUIsSzswQjs7d0I7d0IsTzt1QjthO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0dtR3JvQk07Ozs7SUFBQTtJQThITTtJQU1abzZIO0lBRUFDO0lBcENPLGtCQWtDUEQsU0FFQUM7SUE0Qko7R0FFUTtHQUVlLFNBQW5CQyxXLFU7R0FQQTtJQUFBOztPQU9BQTs7OztJQVMwQjtJQW9DWDtJQWxCQTtJQWlDTjs7Ozs7RTs7Ozs7Ozs7Ozs7O0dFaE5EOzs7OztJQUFBO1lBbUNSQyxJQUFLQyxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDQyxJQUFLRixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUEscUNBaUJuQ0YsS0FFQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZFQVM7T0E3RUFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXRFQVQ7T0FzRUFTO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BR0FDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQVVBQztPQTlDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBUztPQXJGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BVUFDO09BOUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4RkFVO09BOUZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0EwREFNO09BOUZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFTO09BckZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9HQVc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FVQUM7T0FwQkFGO09BVUFDO09Bb0JBRTtPQTlCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FWQUQ7T0F3Q0FJO09BV0FDO09BbkRBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQTZEQU07T0FXQUM7T0F4RUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BbUZBUTtPQW5GQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E0RkFTO09BNUZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFHQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwQ0FKO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVZBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9CQUU7T0FwQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOEJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQTJCQUc7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQVNBQztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0EyQkFHO09BN0NBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQVNBQztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FyTkF4QjtPQXFOQXdCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BbEJBRjtPQWtCQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BN0NBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0F0REFOO09BQUFBO09BK0RBTztPQS9EQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3RUFRO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BeEVBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWlGQVM7T0FqRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMEZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBDQUo7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F6TUF2QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9PQTBCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcE9BMUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2T0EyQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTdPQTNCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWlMQW9CO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQVNBQztPQS9EQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BdERBTjtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09B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Ozs7Uyx1QkFBQUE7UyxjQUFBQTtTLG9CQUFWTSxLQUFVTjs7O1NBa0N4QixRQUFBLDhCQWxDd0JBLFFBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztTLG9CQUFWTTtTLG9CQUFBQSxLQUFVTjs7O1NBZ0R4QjtVQUFBLEtBQUEsOEJBaER3QkEsUUFBQUE7VUFxRHhCLEtBQUEsOEJBckR3QkEsUUFBQUE7VUEwRHhCLEtBQUEsOEJBMUR3QkEsUUFBQUE7Ozs7OztVO1csUSw4QkFBQUE7Ozs7VzthOzs7Ozs7OztVOztTLFU7UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OztTQWtGeEI7VUFBQSxPQUFBLDhCQWxGd0JBLFFBQUFBO1VBdUZ4QixPQUFBLDhCQXZGd0JBLFFBQUFBO1U7Ozs7VTs7Ozs7VSxNO1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FzR3hCLFVBQUEsOEJBdEd3QkEsUUFBQUE7UyxvQkFBVk07UyxvQkFBQUE7UyxvQkFBQUEsS0FBVU47OztTLGNBQUFBO1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7bUJBQUFBLG1CQUFBQTtTLG9CQUFWTSxLQUFVTjtTLG9CQUFWTSxLQUFVTjs7O1M7O1k7cUNBRVVnQixVQUFBQSxXQUFBQTtTLE87OztJQURjOztLOztNO2tCOzs7a0I7SyxxQjtJO0k7Ozs7Ozs7bUMsUzt5QixTOzZCLGM7O0ksVztHO2tELE87Rzs2QyxPO0c7Ozs7Ozs7O0ksVTtJLFc7Rzs7SSxxQjtHOzhCLE8sd0M7O0ksTztHOztJLFU7SSxPO0c7O0k7O0c7K0Isc0I7O0k7OztLLG1CO0ksZTs7OztJLGU7O2dELHlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7OztJQ29QOUNDO0lBcU1BQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQS8yQkFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7SUFBQUM7SUFBQUM7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FNQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FZQUU7SUM5TEkwRjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBV05DO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7O1NBM0JNM0U7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7Ozs7Ozs7U0FBQUM7U0FBQUM7U0FBQUM7U0FB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QztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUtJQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQURBRDtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUtJQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQURBRDtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQ3BhSUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQVdOQztJQVVBQztJQUNBQztJQUVBQztJQUNBQztJQUNBQztJQUNBQztJRDhZTUM7SUFDQUM7Ozs7U0MxYUE3RTtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7Ozs7OztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7U0FBQUM7U0FBQUM7U0F3Qk4wQztTQXhCTXpDO1NBQUFDOzs7O1NBV05xQzs7O1NBZUFLO1NBREFEOztTQXpCTXhDO1NBMkJOMEM7Ozs7U0FOQUw7OztTQXJCTXBDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBc0JOaUM7U0F0Qk1oQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTRHlhQVE7U0FDQUM7SUFHSkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLSUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FEQUQ7U0FD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QUFBRDtRQUFLRTtRQUdHRTtRQUFSQztRQUFBQztRQUFBQztRQUFBRTtRQUFBRDtRQUFBRTtRQUFBQztRQUFBQztRQUFBckU7UUFBQWQ7UUFBQVU7UUFBQVQ7UUFBUXVGOzs7U0E3Qkh2STtTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUFLRTtTQUNBRTtTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUFLRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFLS0U7VUFBUkM7VUFBQUM7VUFBQUc7VUFBQUQ7VUFBQUQ7VUFBQUc7VUFBQUM7VUFBQUM7VUF1QkZPO1VBQUFDO1VBQUFTO1VBckJNNUQ7O1NBVURrRTtTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUFLRTtTQUdMQztTQUFBQztTQUFBRTtTQUFBQztTQUFBRTtTQUFBRDtTQUFLRTtTQUVBRTtTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUFLRTtTQUdBRTtTQUFMQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRTtTQUFBRDtTQUFLRTtTQUdHRTtTQUFSQztTQUFBQztTQUFBQztTQUFBRTtTQUFBRDtTQUFBRTtTQUFBQztTQUFBQztTQUFBckU7U0FBQWQ7U0FBQVU7U0FBQVQ7U0FBUXVGOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDckpZRTs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FBQUE7Ozs7Ozs7Ozs7ZUFBQUE7OztFOzs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUE0QlZwK0Q7SUFDQW1xSztJQUNBbHJEO0lBQ0Foc0M7R0FPSztHQUdhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FibEJq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QUErQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0s7SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7SztLO0s7Szs7Ozt3QixNO00sUTs7TTs7Ozs7O0ksTTtHOztJOztLO0s7SztLOzs7O3dCLE07TSxROztNOzs7OztpQixNOztHOztJOzs7Rzs7STtJLE87Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztRO1E7O1E7UztTOzs7OztVLHVCOzs7O1E7UztTOzs7OztVLHVCOzs7O1E7O2dCLHFCOztRO1E7UztTO1M7UztTO1M7Ozs7VTtVO1U7VTtVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7Ozs7O1E7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7O1EsYyxPO1EsTyxjOztROztRO2dCOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sUTtPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPO1EsSTtRLEk7USxNO1EsSTtRO1E7UTs7OztRO1M7O1k7O1M7Ozs7O1c7WSxNO1ksTTtZLE07WSxNO1k7WTtZOzs7WSxPO1c7O1c7O1c7OztPLE87O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7VSxJO1M7UztTLE87O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxvQzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxJLHlDOzs7O1c7Ozs7UyxJLHlDOzs7O1c7Ozs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLG1CO1U7O3FCOztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcscUI7VTs7cUI7O1M7UztTLEksVyx5Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTLE8scUI7O1M7UztTLEksVyx5Qjs7Ozs7Ozs7Ozs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1MsUTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7O1MsTzs7a0I7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO2lCOztTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztLOzs7OztPO087UTtROztxQjs7UztTO1M7O3NCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sSSxjO087UTtRO2lCOzs7UztTO1M7a0I7Ozs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7aUI7UyxNOztpQixNO1M7aUI7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztpQjtTLE07O2lCLE07Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO1EsaUI7UTtRO1E7aUI7O1M7UztTO1MsbUI7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztROztROztROztRO1M7UztTO1M7UztTO1M7UztVO1U7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1M7UztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7O1E7Uzs7WTs7Uzs7Ozs7VztXO1c7O1c7WTs7ZTs7OztnQixPOztnQjs7Z0I7O1k7Ozs7O1csTzs7Vzs7Vzs7OztROztRO1E7OztRLHlDOztROztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USwwQjs7UTtROzs7USx5Qzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1MsTzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxPOztROztRLHlDO2dCOzs7Rzs7STsyQixPO0k7Rzs7STtJLE87Rzs7STtZO0k7OztLLE07SyxJO0s7Szs7OztNLFc7TTthO007Ozs7O0k7Rzs7STtLO0c7Ozs7STtJO0ssTTtJOztLOztNOztJOzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7OzZDLE87O0ssSSxtRDs7O2lDLG9CO00sSTs7O08sTTs7TSxNOztJO0k7OztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs0QyxPOztLLG1COztLO007TztRLE87UTtROzs7O087Ozs7O2tCOztPO0k7STs7O0ksUztJLG9CLE8sMkI7STtJO0c7cUJBRHZDbUU7SSxJQUFJbkU7SUFBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkU7Rzs7SSxPQXRXdEJvRTtHO0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzRCO0c7Rzs7STs7SyxJLFcsd0M7Ozs2Qjs7OztJLFc7SSxjOzs7STtJO2U7Ozs7TSxJLFk7Ozs4Qjs7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSw2QztJLFc7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7Ozs7OztHOztJO0k7YSxPOzs7TSxlLFE7Ozs7Ozs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2Msd0U7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7c0Q7MEQ7O2M7YTs7Rzs7STs7YywyRTtjO2E7O0c7O0k7SSxPO2E7OytCLG9CLFc7O0c7O0k7SSxPO2E7OytCLHNCLGE7O0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7T0FtUElxQztPQTBFSk07T0FHSUM7T0F4b0JBMEM7T0F3VUp0RjtPQWFBRztPQVVBRTtPQWNBRTtPQTVDQVY7T0F3REFnQjtPQWFBQztPQVlBRztPQTVCQU47T0FuR0FwQjtPQXlJSTJCO09BOVZKaEQ7T0FHQUM7T0FhQUc7T0FtQ0FFO09BMERBTTtPQWZBRDtPQW9DQUU7T0E1SUFsQjtPQStKQW9HO09BaUNBekU7T0FVQUM7T0FLQTJFO09BOENBSztPQXpDQUg7T0E4Q0FJO09BbkNBbkY7T0FFSUs7T0F3WkprRTtPQUNBQztPQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7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O0k7STtJO0k7STtJLE87OztJO0ssTSxtQjtLLE07SyxJO2tDOytCO0ksTztHO3NCLCtCO3NCLGlDOztJO0ssSTtlO2dCO0k7STtJLE87Rzs7SSx1QixPLG9DO0c7Ryx3Qjs7STtLLEs7SyxLO0ssSztLLEs7SyxLO0ssSTs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7SSx1QixvQztHOztJLDhCOzs7Szs7O0k7RzswQixhLG9DOzs7O3dCLFM7O0ksNEIsTTs2QjtnQztJLFc7OztJO0ssUTtLLHFCO0s7SztJO0ksUTtJO0k7STtJO0ksTztHO3FDLHNCOztJO2dCOztJO0c7K0IsUzsrQixTOztJLDRCLE07STs7O2M7O2U7O2dCO21CO0s7TTtPLEk7TztPO087O1UsVyxNO3NCO3FCLE07c0I7cUIsTTtzQixNO1U7UztPOztVLGU7c0I7Uzs7O087Tzs7Ozs7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztRLGM7UTs7TztPOzs7Ozs7OzRCOzs7STs7O0ksOEI7SSx1Qiw0QztJO0ssSTtLO0s7O0s7OztJOzs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7Ozs7SyxVO0s7Ozs7OztvQixPO0ssVTtLOzs7Ozs7STtJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQ0NyR0FxQztZQUdBQyxPQUFVQztJQUFtQixJQUMzQkMscUNBRFFELElBRVlFLFdBQVlDO0lBQ2xDO1FBRkVGLFNBQ29CQyxRQUFZQyxtQkFEaENGLE9BQ2dDRTtTQUk1QkMsbUNBTklKLEdBRVlFLFFBQVlDO0tBS2hDLFVBRElDO2dCQUFBQTtpQkFBQUE7UUFPRyxJQVh5QkMsVUFBQUYsZUFBWkcsVUFBQUo7UUFBQUEsUUFBQUk7UUFBWUgsUUFBQUU7OztRQVNYLElBVFdFLFVBQUFKLGVBQVpLLFVBQUFOO1FBQUFBLFFBQUFNO1FBQVlMLFFBQUFJOzs7T0FPWCxJQVBXRSxVQUFBTixlQUFaTyxVQUFBUjtPQUFBQSxRQUFBUTtPQUFZUCxRQUFBTTs7Y0FBWkUsVUFBQVQsZUFBQUEsUUFBQVM7O0dBaUJ6Qjs0QkF0QkdiLE1BR0FDOzs7RTs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztZQ0VBYSxVQUFxQ0MsS0FBS0MsR0FBTSxlQUFYRCxLQUFLQyxPQUFnQjtZQUN0REMsTUFDTEMsR0FBR0MsSUFBSUM7SUFDTixLQURFRCxJQUVpQixPQUZiQztTQUFBQSxJQUdhLE9BSGpCRDs7S0FJbUNFLE1BSi9CRDtXQUFBQTtLQUl1QkU7S0FBSkM7S0FBUkMsTUFKZkw7YUFBQUE7S0FJT007S0FBSkM7T0FBQUEsS0FBb0JILElBQ1YsZUFEVkcsSUFBSUQsS0FMTFIsTUFDTEMsR0FJa0JNLGFBQVFELElBQUlELEtBQVFEO09BQVpFLEtBQXBCRyxJQUdpQixlQUhHSCxJQUFJRCxLQUx6QkwsTUFDTEMsV0FJTVEsSUFBSUQsS0FBUUQsTUFBb0JIO0lBTVosVUFYckJKLE1BQ0xDLEdBSWtCTSxLQUFvQkg7SUFLNUIsZUFMSkssSUFNSyxXQVZYUixHQUlVTyxJQUFvQkg7R0FRNUI7WUFDR0ssSUFDTlQ7SUFBQSxZQUVVO0lBQ2tDO0tBQTFCVTs7S0FBUFo7S0FBTEQ7S0FBc0MsTUFKdENZLElBQ05ULEdBR2tCVTtJQUFTLGVBQXJCYixLQUE0QixXQUhsQ0csR0FHV0Y7R0FBOEM7WUFDbkRhLEtBQ05YO0lBQUEsWUFFVTtJQUN1QztLQUEvQlU7O0tBQVBaO0tBQUxEO0tBQTJDLE1BSjNDYyxLQUNOWCxHQUdrQlU7SUFBUyxlQUFyQmIsS0FBNEIsV0FIbENHLEdBR01ILEtBQUtDO0dBQW9EO1lBQ3pEYyxLQUNOWjtJQUFBLFlBRVU7SUFDZ0M7S0FBeEJVOztLQUFQWjtLQUFMRDtLQUFvQyxNQUpwQ2UsS0FDTlosR0FHa0JVO0lBQVMsV0FBQyxXQUg1QlYsR0FHTUgsS0FBS0M7R0FBNkM7WUFDbERlLFVBQ0xiO0lBQUQsSUFBSWM7SUFBSjttQkFFVSxPQUZOQTtLQUdvQztNQUF0Qko7O01BQVBaO01BQUxEO01BQWtDLE1BQUEsV0FIdkNHLEdBR0tILEtBSEZpQixLQUdPaEI7S0FIUGdCO2VBR2NKOztHQUF5Qzs4QkFsQ3pEZCxXQUNJRyxPQWNBVSxLQUtBRSxNQUtBQyxNQUtBQzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUNoQ1JFO0lBY0lDOzs7Ozs7OztHQWRKLFNBQUFDLFVBQUFDO0lBQUEsT0FBQTs7YUFBQUg7OztjQUFBO2FBR0M7OztjQUhELElBRUVJLG1CQURBQztjQURGLFdBQ0VBLEtBQ0FEO2FBQ0Q7YUFIREQ7R0FHQztZQUhERztJQUFBO0tBRUVDO0tBREFDO0tBQ0FDLFVBQUEscUJBQUFGO0tBRkZHLGdDQUVFRDtLQURBRSxVQUFBLHFCQUFBSDtLQURGSSxrQ0FDRUQsZUFERkQ7SUFBQSxXQUFBRTtHQUdDO1lBRUdDLFFBQVdDLE1BQU1DO0lBQ25CLE9BRGFELFVBQU1DOztjQUFBQTs7Z0JBQU5EOzswQ0FBQUEsU0FBTUM7R0FPbEI7cUNBWkhiLFdBQUFJLFdBS0lPLFNBU0FaOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJR21HVXdGO0lBakhkekY7SUFNQTBGO0lBSUFDOzs7Ozs7Ozs7Ozs7O0dBVkEsU0FBQUMsWUFBQXpGO0lBQUEsT0FBQTs7YUFBQUg7OztjQUFBOzs7YUFHQzs7O2NBSEQsSUFFRTZGLHFCQURBQztjQURGLFdBQ0VBLFFBQ0FEO2FBQ0Q7YUFIRDFGO0dBR0M7WUFIRDRGO0lBQUE7S0FFRUM7S0FEQUM7S0FDQXhGLFVBQUEscUJBQUF1RjtLQUZGdEYsZ0NBRUVEO0tBREFFLFVBQUEscUJBQUFzRjtLQURGckYsa0NBQ0VELGVBREZEO0lBQUEsV0FBQUU7R0FHQzs7Ozs7O1lBR0RWLFVBQU9nRyxjQUFQQztJQUFBOzs7OztzQixPQUlBQyxZQUpPRjs0QkFBUCxxQkFOQU47SUFNQSxPQUFBOzs7OztjQUFBOzs7YUFHQzs7O2NBSEQsSUFFRVMsdUJBREFoRDtjQURGLFdBQ0VBLFFBQ0FnRDthQUNEO2FBSERGO0dBR0M7WUFDREMsWUFBT0UsY0FBUEM7SUFBQTs7Y0FBQUE7Z0JBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBQUEsT0FBQTs7O21CQUFBQTs7U0FBQSxPQUFBOzs7a0JBQUFBOztRQUFBLE9BQUE7OztpQkFBQUE7O09BQ0k7O01BREosT0FBQTs7O2VBQUFBOztlQUFBQTs7TUFBQSxPQUFBOzs7ZUFBQUE7OztNQUFBLE9BQUE7OztlQUFBQTtTQUdJQyw0Q0FBQUE7Ozs7Ozs7Ozs7O2NBQUFBO2NBQUFBO2NBQUFBO2NBQUFBOzs7O2lCQUFBQTthQUFBQTthQUFBQTthQUFBQTthQUFBQTs7O2FBQUFqRjtZQUFBQSxtQkFBQUE7VUFBQTtXQUFBRSxXQUFBRjtXQUFBa0YsV0FQSnZHLFVBSU9vRyxjQUdIN0U7VUFBQSxXQUFBZ0Y7O1NBQUEsT0FBQTs7O2tCQUFBRDtrQkFISkQ7O1lBS0lHO1FBQUEsR0FBQUE7bUJBQUFBOztVQUFBO1dBQUFDO1dBQUFoRSxXQUFBK0Q7V0FBQUUsV0FBQSxXQUxHTixjQUtIM0Q7V0FBQWtFLFdBVEozRyxVQUlPb0csY0FLSEs7VUFBQSxXQUFBQyxVQUFBQzs7O1FBQUEsT0FBQTs7O2lCQUZBTDtpQkFISkQ7O1dBSUlPO09BQUEsR0FBQUE7a0JBQUFBOztTQUFBO1VBQUFDO1VBQUFDLFdBQUFGO1VBQUF4RSxXQVJKcEMsVUFJT29HLGNBSUhVO1VBQUFDLFdBUkovRyxVQUlPb0csY0FJSFM7U0FBQSxXQUFBekUsVUFBQTJFOzs7T0FBQSxPQUFBOzs7Z0JBREFUO2dCQUhKRDs7TUFBQSxPQUFBOzs7ZUFBQUE7O1NBRUluRjtRQUFBQSxtQkFBQUE7TUFBQTtPQUFBQyxXQUFBRDtPQUFBRSxXQUFBLHFCQUFBRDtNQUFBLFdBQUFDOztLQUFBLE9BQUE7OztjQUNBa0Y7Y0FISkQ7O0lBQUEsT0FBQTs7O2FBQUFBO0dBSzRCOzhCQVQ1QmI7a0RBSUFDOzs7Ozs7Ozs7O1lBSkFyRixVQUFPNEc7SUFBUDtLQUVFQztLQURBQztLQUNBQyxVQUFBLHFCQVJGdEIsYUFRRW9CO0tBRkZHLGdDQUVFRDtLQURBRSxVQUdGQyxZQUpPTixjQUNMRTtLQURGSyxrQ0FDRUYsZUFERkQ7SUFBQSxXQUFBRztHQUdDO1lBQ0RELFlBQU9FO0lBQVAsOEJBQ0k7OztPQUNBLElBQUFDLHFCQUFBQyxXQUFBLG9CQUFBRDtPQUFBLHdCQUFBQzs7T0FDQSxJQUFBQyxxQkFBQUMsV0FQSnhILFVBSU9vSCxjQUdIRztPQUFBLHdCQUFBQzs7T0FDQTtRQUFBQztRQUFBQztRQUFBQyxXQVJKM0gsVUFJT29ILGNBSUhNO1FBQUFFLFdBUko1SCxVQUlPb0gsY0FJSEs7T0FBQSx3QkFBQUUsY0FBQUM7O09BQ0E7UUFBQUM7UUFBQUM7UUFBQUMsV0FBQSxXQUxHWCxjQUtIVTtRQUFBRSxXQVRKaEksVUFJT29ILGNBS0hTO09BQUEsd0JBQUFFLGNBQUFDOztHQUF3QjtZQUl4QnhDLE9BQVV5QztJQUNaO1dBRFlBO0tBQ1o7T0FBQTtTQUFhLHFDQUFTOUMsS0FBTyxPQUFQQSxPQUFpQjtJQUF2QyxPQUFBO2FBQTRDO21EOztHQUFzQjtZQUVoRUksV0FBb0IwQztJQUFaO0tBQUVDO0tBQ1osTUFBQSwyQkFEc0JEO0tBQ3RCO09BQUE7U0FDRyxxQ0FBUzlDLEtBQU8sT0FBUEEsT0FBZ0I7V0FGaEIrQyxTQUdvQiwyQkFIVkQ7SUFDdEIsT0FBQSxXQUVHO0dBQXNEO1lBRXZERSxLQUVHQyxXQUNBOUUsTUFDQVgsT0FDQTBGLEtBQ0F4RixPQUdEb0Y7YUFHSXpFLEdBQU15RTtLQUNaLFlBRFlBOzBDQVZURzs7O1lBYUl6SyxjQUFNLE9BQUEsV0FaVjJGLE1BWUkzRjs7WUFDQzJLLGdCQUFZLE9BQUEsV0FaakIzRixPQVFHYSxHQUlFOEU7O1FBRUssSUFESEMsZUFBSkMsZUFDQUMsT0FOQWpGLEdBS0FnRixLQUVBRSxPQVBBbEYsR0FLSStFO1FBR1IsT0FBQSxXQWZDRixLQWFHSSxNQUNBQzs7WUFFT0MsZ0JBQUxDO1FBQVcsT0FBQSxXQWZoQi9GLE9BTUdXLElBU0VvRixLQUFLRDs7SUFDWjtJQUNILE9BWFFuRixHQUhKeUU7R0FlTDtZQUVHWSxjQUNFcEYsZUFBNkN3RTtJQUEvQztLQUFxQm5JO0tBQUxDO0tBRWQrSSxlQUZjL0ksTUFuQ2hCeUYsT0FtQytDeUM7S0FJekIsUUFBQSw4QkFKeUJBO0tBSWpDYztLQUFUQztLQUpIdEYsV0FJR3NGLFVBSkh2RixTQUFtQjNEO0tBR25CbUosY0FDWUYsVUFKWnJGO0lBYUosV0FYSW9GLGFBQ0FHO0dBV0w7WUFFR0MsU0FFR2QsV0FDQTlFLE1BQ0FYLE9BQ0EwRixLQUNBeEYsaUJBWURvRjtJQWpCRjtLQWVHeEU7S0FDQTVGO2FBSUcyRixHQUFNQyxRQUFhNUYsT0FBMkJvSztLQUNwRCxZQURvREE7bUNBRXJDLE9BQUEsV0FyQlpHLFdBbUJzQnZLOzs7WUFHbEJGLGNBQU0sT0FBQSxXQXJCVjJGLE1Ba0JzQnpGLE9BR2xCRjs7WUFDQzJLO1FBQW1CLE9BQUEsV0FyQnhCM0YsT0FpQnNCOUUsT0FBbkIyRixHQUFtQjNGLFVBQUFBLE9BSWpCeUs7O1FBRUk7U0FERkM7U0FBSkM7U0FDQVcsTUE1Q05OLGNBc0NZcEYsUUFBYTVGLE9BS25CMks7U0FFOEIsTUFQOUJoRixHQUFNQyxRQU1OMEYsS0FESVo7UUFFMEIsT0FBQSxXQXZCakNGLEtBZ0JzQnhLLE9BQW5CMkYsR0FBTUMsUUFBYTVGLE9BS25CMks7O1lBR09HLGdCQUFMQztRQUFXLE9BQUE7aUJBdkJoQi9GOytCLE9BZUdXLEdBQU1DLFFBQWE1RjtpQkFBYjRGO2lCQUFhNUY7aUJBUWpCK0s7aUJBQUtEOztJQUNaO0lBQ0gsT0FWUW5GLEdBTEhDLFFBQ0E1RixPQUNEb0s7R0FjTDs7OztPQXRHRHhDO09BQUFIO09BTUF0RjtPQUlBa0g7T0FKQXRIO09BSUFrRztPQVNJTjtPQUdBRDtPQUtBNEM7T0EyQ0FlO09BakJBTDs7UUFvRDhDLElBQTVDTyxRQUE0QztpQkFDeENDLEdBQU16RztTQUNMLFlBQUEsdUJBRkx3RyxPQUNVeEc7dUJBRUxxRixjQUFNLE9BQU5BO21CQUZLckY7Y0FJTjBGLGlCQUdJbkQsU0FBQUE7O2lCQVBFdkM7OztjQVNEakYsSUFUQ2lGO2NBSU4wRjt3QkFLSzNLLGVBQzBCLDhCQUQxQkE7OzthQWVJO2NBRER1RixLQXZCRk47Y0F1QkZPLEtBdkJFUDtjQXdCRjRGLEtBeEJKYSxHQXVCSWxHO2NBRUFvRixLQXpCSmMsR0F1QlFuRztjQUdjLFVBQUEsOEJBRmxCc0Y7Y0FFVU87Y0FBVEM7Y0FDbUIsVUFBQSw4QkFGcEJUO2NBRVEzRDtjQUFQQztvQkFEU2tFLFVBQ1RsRTtjQUNEeUUsY0FDTSx1QkFISVAsU0FDVGxFO2NBdkJMeUQ7O3FCQW9CSUUsSUFDQUQ7aUJBT00sdUJBTkxTLGFBRURNLFNBRFExRTs7O2FBYko7Y0FERjJFLE1BYkEzRztjQWNGK0YsTUFkSlUsR0FhTUU7Y0FFTixNQURJWjtjQUNBYTtnQkFDRjtrQkFDRzs7O3FCQUNFO3NCQUFtQ2pFO3NCQUFSQztzQkFBTmlFO3NCQUFYQztxQkFDUjs2QkFEUUEsS0FBaUJsRTs2QkFDSSx1QkFEVmlFLElBQWNsRTtvQkFDVzs7O2NBZnJEK0MsY0FVSUssVUFDQWE7OzthQW1CSTtjQURLRyxNQWpDUC9HO2NBaUNBQyxRQWpDQUQ7Y0FrQ0ZnSCxNQWxDSlAsR0FpQ2FNO2NBN0JickIsY0E2Qk16RixPQUNGK0csTUFBQUE7O1NBR1IsdUJBdENBUixPQUNVeEcsR0FJTjBGO1NBaUNKLE9BakNJQTtRQW9DUDttQkF4Q09lOzs7OztFOzs7Ozs7Ozs7O0lDNUZOMUo7O1lBVkEwSixHQUFPUSxlQUFxQkM7SUFBd0IsV0FBN0NELGVBQXFCQztHQUcvQjtZQUVHQyxVQUw0QkQsYUFLUyxjQUxUQSxhQUsyQztZQUV2RUUsWUFQT0gsZUFRVCxXQVJTQSxrQkFReUI7R0FJdkIsSUFBVEk7WUFFQUMsSUFBT0MsSUFBT0MsSUFBYSxXQUFwQkQsUUFBT0MsV0FBUEQsUUFBT0MsV0FHakI7WUFFR0MsR0FBTUYsSUFBT0M7SUFDZjtXQURRRCxVQUFPQztpQkFBUEQsVUFBT0M7O0dBQzJEO1lBRXhFRSxHQUFNSCxJQUFPQztJQUNmLE9BRFFELFVBQU9DLFFBQVBELFFBQU9DLGdCQUFQRCxRQUFPQztHQUtkO1lBRUNHLElBQU9KLElBQU9DO0lBQ2hCLE9BRFNELFVBQU9DLFFBQVBELFNBQU9DLGdCQUFQRCxTQUFPQztHQUtmOztzQkFsQ0NmLElBS0FVLFdBRUFDLGFBR0FySyxNQUVBc0ssS0FFQUMsS0FLQUcsSUFHQUMsSUFPQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUNyQkpDO0lBSUFDO0lBSkFDO0lBSUFDOzs7Ozs7OztZQWZNQztJQUFPLElBQVNwTSxnQkFBUCtHO29CQUFBQSxhQUFPL0c7R0FBZ0M7WUFDaERxTTtJQUFRO0tBQWdCN0w7S0FBSjhMO0tBQU4zTDtLQUFKNEw7S0FBc0IsTUFBQSxXQUF0QkEsSUFBVUQ7S0FBWSxZQUFZLFdBQTlCM0wsSUFBVUg7SUFBb0I7R0FBUTtHQUhyQztJQUFBLGtCQUVmNEwsTUFDQUM7Ozs2QkFVTkw7a0RBSUFDOzs7Ozs7WUFKQTdLLFVBQU9vTCxjQUFQQztJQUFBLE9BQUE7Ozs7Ozs7Ozs7NkIsT0FJQW5GLFlBSk9rRjs7O2NBQVA7YUFHQzs7O2NBSEQsSUFFRUUsbUJBREFDO2NBREYsV0FDRUEsS0FDQUQ7YUFDRDthQUhERDtHQUdDO1lBQ0RuRixZQUNPc0YsY0FEUEM7SUFBQTs7Y0FBQUE7Z0JBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFBQSxPQUFBOzs7cUJBQUFBOztXQUFBLE9BQUE7OztvQkFBQUE7O1VBQUEsT0FBQTs7O21CQUFBQTs7U0FBQSxPQUFBOzs7a0JBQUFBOztRQU9JOztPQUhBOztNQUpKLE9BQUE7OztlQUFBQTs7ZUFBQUE7O01BQUEsT0FBQTs7O2VBQUFBOzs7TUFBQSxPQUFBOzs7ZUFBQUE7U0FLSUMsNENBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Ozs7bUJBQUFBO2VBQUFBO2VBQUFBO2VBQUFBO2VBQUFBO2VBQUFBO2VBQUFBOzs7ZUFBQUM7Y0FBQUEsbUJBQUFBO1lBQUE7YUFBQUMsV0FBQUQ7YUFBQUUsV0FUSjdMLFVBS093TCxjQUlISTtZQUFBLFdBQUFDOztXQUFBLE9BQUE7OztvQkFBQUg7b0JBTEpEOztjQU1JSztVQUFBLEdBQUFBO3FCQUFBQTs7WUFBQTthQUFBQzthQUFBQyxXQUFBRjthQUFBRyxXQUFBLFdBTEdULGNBS0hRO2FBQUFFLFdBVkpsTSxVQUtPd0wsY0FLSE87WUFBQSxXQUFBRSxVQUFBQzs7O1VBQUEsT0FBQTs7O21CQURBUjttQkFMSkQ7O2FBR0lVO1NBQUEsR0FBQUE7b0JBQUFBOztXQUFBO1lBQUFDO1lBQUFDLFdBQUFGO1lBQUFHLFdBUEp0TSxVQUtPd0wsY0FFSGE7WUFBQUUsV0FQSnZNLFVBS093TCxjQUVIWTtXQUFBLFdBQUFFLFVBQUFDOzs7U0FBQSxPQUFBOzs7a0JBRUFiO2tCQUxKRDs7WUFRSWU7UUFBQSxHQUFBQTttQkFBQUE7O1VBQUE7V0FBQUM7V0FBQUMsV0FBQUY7V0FBQUcsV0FaSjNNLFVBS093TCxjQU9Ia0I7V0FBQUUsV0FaSjVNLFVBS093TCxjQU9IaUI7VUFBQSxXQUFBRSxVQUFBQzs7O1FBQUEsT0FBQTs7O2lCQUhBbEI7aUJBTEpEOztPQUFBLE9BQUE7OztnQkFBQUE7O01BQUEsT0FBQTs7O2VBQUFBOztTQUVJb0I7UUFBQUEsbUJBQUFBO01BQUE7T0FBQUMsV0FBQUQ7T0FBQUUsV0FBQSxxQkFBQUQ7TUFBQSxXQUFBQzs7S0FBQSxPQUFBOzs7Y0FHQXJCO2NBTEpEOztJQUFBLE9BQUE7OzthQUFBQTtHQVFnQzs4QkFaaENYO29EQUlBQzs7Ozs7Ozs7Ozs7Ozs7WUFKQTNLLFVBQU80TTtJQUFQO0tBRUVDO0tBREFDO0tBQ0FDLFVBRUY3RixZQUpPMEYsY0FFTEM7S0FGRkcsZ0NBRUVEO0tBREFFLFVBQUEsbUNBQUFIO0tBREZJLGtDQUNFRCxlQURGRDtJQUFBLFdBQUFFO0dBR0M7WUFDRGhHLFlBQ09pRztJQURQOzs7T0FFSSxJQUFBQyxxQkFBQUMsV0FBQSxvQkFBQUQ7T0FBQSx3QkFBQUM7O09BQ0E7UUFBQUM7UUFBQUM7UUFBQUMsV0FQSnhOLFVBS09tTixjQUVISTtRQUFBRSxXQVBKek4sVUFLT21OLGNBRUhHO09BQUEsd0JBQUFFLGNBQUFDOztPQUVBLElBQUFDLHFCQUFBQyxXQVRKM04sVUFLT21OLGNBSUhPO09BQUEsd0JBQUFDOztPQUNBO1FBQUFDO1FBQUFDO1FBQUFDLFdBQUEsV0FMR1gsY0FLSFU7UUFBQUUsV0FWSi9OLFVBS09tTixjQUtIUztPQUFBLHdCQUFBRSxjQUFBQzs7T0FFQTtRQUFBQztRQUFBQztRQUFBQyxXQVpKbE8sVUFLT21OLGNBT0hjO1FBQUFFLFdBWkpuTyxVQUtPbU4sY0FPSGE7T0FBQSx3QkFBQUUsY0FBQUM7O0dBQTRCO1lBRTVCQyxPQUFXQyxHQUE4QixXQUFNLHFCQUFwQ0EsR0FBeUQ7WUFFcEUvSyxLQUFRM0YsR0FBYyxPQUZ0QnlRLFdBRVF6USxJQUE4QjtZQUN0Q3lLLGlCQUFrQixPQUhsQmdHLFVBR29DO1lBQ3BDekwsTUFBUXVJLEtBQU8sT0FKZmtELFdBSVFsRCxNQUEwQjtZQUNsQ3JJLE1BQVNBLE9BQU9xSSxLQUFRLE9BTHhCa0QsV0FLU3ZMLE9BQU9xSSxNQUFrQztZQUNsRG9ELFlBQWEsT0FOYkYsVUFNMEI7WUFFMUJHLGFBQWMsT0FOZGpMLFVBTXNCO1lBQ3RCa0wsYUFBYyxPQVBkbEwsd0JBT2dDO1lBRWhDRztJQUFlLE9BVGZILEtBU29CO0dBQTZCO1lBQ2pEbUwsaUJBQW1CdkQ7SUFBNkIsVUFSaER2SSxNQVFtQnVJO0lBQWUsT0FabENrRCxXQVdBM0s7R0FDNEQ7WUFFNURpTCxLQUFRalEsR0FBR3VHLEdBQU0sT0FkakJvSixXQWNRM1AsR0FBR3VHLElBQXdCO1lBQ25DMko7SUFDRixZQVJnQixPQU5kckw7UUFnQlNzTCxpQkFBUjFEO0lBQWlCLE9BQUEsNEJBSmxCd0QsTUFJQ3hELEtBQVEwRDtHQUF3QztZQUVqREMsS0FBUXBRLEdBQUd1RyxHQUFNLE9BcEJqQm9KLFdBb0JRM1AsR0FwQlIyUCxXQVNBSSxVQVdXeEosTUFBK0M7WUFDMUQ4SjtJQUNGLFlBZGdCLE9BTmR4TDtRQXNCU3NMLGlCQUFSMUQ7SUFBaUIsT0FBQSw0QkFKbEIyRCxNQUlDM0QsS0FBUTBEO0dBQXdDO1lBRWpERyxLQUFRdFEsR0FBR3VHLEdBQU0sT0ExQmpCb0osV0EwQlEzUCxHQTFCUjJQLFdBR0FoRyxjQXVCV3BELE1BQW1EO1lBQzlEZ0s7SUFDRjtLQUNpQjs7UUFBQTs7OztLQUFBLE9BQUE7O1FBQ2Q5RDttQkFBUSxPQUFSQTtRQUNRMEQ7SUFBUyxPQUFBLDRCQUxsQkcsTUFJQzdELEtBQ1EwRDtHQUF3QztZQUVqREssT0FBVXhRLEdBQUd1RyxHQUFNLE9BakNuQm9KLFdBaUNVM1AsR0FBR3VHLElBQTJCO1lBQ3hDa0s7SUFDRixZQUNRLE9BOUJOWjtRQStCU00saUJBQVIxRDtJQUFpQixPQUFBLDRCQUpsQitELFFBSUMvRCxLQUFRMEQ7R0FBMEM7WUFFbkRPLE1BQ0R4USxHQUFHeVEsR0FBTSxPQXhDUmhCLE9Bd0NnQixXQUFqQnpQLEdBQUd5USxPQUF1QjtZQUVyQkMsVUFDTDFRLEdBQUd5UTtJQUNGLE9BTEFEO3NCQVF1Q0M7Y0FEbEMsVUFDa0NBO3NCQUFBQTs7a0JBR0ssSUFBN0JFLEtBSHdCRixNQUc1QkcsS0FINEJILE1BR0ssTUFSeENDLFVBQ0wxUSxHQU9nQjJRO2tCQUFPLFdBUmxCRCxVQUNMMVEsR0FPWTRROztzQkFERUMsTUFGMEJKLE1BRXBCLFdBUGZDLFVBQ0wxUSxHQU1jNlE7O2tCQUQ2QixJQUF0QkMsTUFEbUJMLE1BQzFCdk0sUUFEMEJ1TSxNQUNHLE1BTnRDQyxVQUNMMVEsR0FLcUI4UTtrQkFBTSxXQUFNLFdBTGpDOVEsR0FLY2tFOztrQkFHcUMsSUFBaEM2TSxPQUpxQk4sTUFJekJPLE9BSnlCUCxNQUlXLE1BVDlDQyxVQUNMMVEsR0FRbUIrUTtrQkFBTyxXQVRyQkwsVUFDTDFRLEdBUWVnUjs7Y0FKK0IsT0FBTlA7YUFJNEI7YUFSakVBO0dBU0U7Ozs7OztPQWxFUnhQO09BSUFrRztPQUpBOUY7T0FJQWtIO09BVUlrSDtPQUVBOUs7T0FDQThFO09BQ0F6RjtPQUNBRTtPQUNBeUw7T0FFQUM7T0FDQUM7T0FFQS9LO09BQ0FnTDtPQUVBQztPQUNBQztPQUtBRTtPQUNBQztPQUtBQztPQUNBQztPQU1BQztPQUNBQztPQUtBQztPQUdJRTs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7WUN0RUFPLElBQ04xRTtJQUFPLFlBQVBBOzs7O1dBRVNqSSxtQkFBVyxlQUFYQTs7T0FFSztRQURGcU07UUFBSkM7UUFDQU0sTUFMRkQsSUFJRUw7UUFFQU8sTUFORkYsSUFJTU47UUFJTjtVQUFBOztxQkFBU25NO2FBQU0sT0FEakI7Z0RBQzBCRCxJQUFNLFdBQXJCQyxJQUFlRCxJQUF3QixHQUY5QzRNO1lBRW9EO1lBSHBERDtPQUdGLE9BQUE7O09BR3lDLElBQXJDVCxjQUFxQyxNQVh6Q1EsSUFXSVI7T0FBcUMsT0FBQSxxQ0FBdEJ4TSxHQUFLLFdBQUxBLEdBQW9COztPQUNnQixJQUE1QzRNLGdCQUFQM00sa0JBQW1ELE1BWnZEK00sSUFZV0o7T0FBNEMsT0FBQTswQ0FBN0I1TSxHQUFLLFdBQTNCQyxPQUFzQkQsR0FBMkI7O09BRTNCLElBQWpCOE0saUJBQUpDLGlCQUFxQixNQWQxQkMsSUFjU0YsT0FBTyxNQWRoQkUsSUFjS0Q7T0FBcUIsT0FBQTs7R0FFL0I7WUFJQ0ksUUFDRDVRLElBQUlIO0lBQU8sU0FDTmdSLFdBQW9DcFIsSUFBMEJDO0tBQWpELElBQTRCb1IsUUFBcUJwUixPQUEvQ3FSLFFBQXFCdFI7S0FDbkMsT0FBQSwyQkFEY3NSLE9BQTBCRCxTQUFMclIsS0FBMEJDO0lBSy9EO0lBQ0gsT0FBQSw2QkFOSW1SLFlBREw3USxJQUFJSDtHQVFKO1lBRUttUixjQUFrQmpGO2FBbURwQmtGLEVBQU03SyxPQUFhOEs7S0FBcUM7TUFDdERDLFVBREkvSyxPQUFhOEs7TUFFZCxVQUFBLDZCQXJEZW5GLFFBb0RsQm9GO3FCQUVHQyxvQkFBVSxPQUFWQTtpQkF0RGVyRjs7O09Ba0NBO1FBQUEsVUFBQztRQXNCakJzRixVQXRCZ0I7O1dBc0JoQkE7Ozs7O1VBcERDdk47VUFFRHpFLE1BNkNlNlIsUUE3Q25CLDhCQUZLcE47WUFFRHpFLE9BNkNFK0c7Y0E1Q0ZrTDs7O1dBSUlDLFdBTEpsUyxNQTZDRStHO1dBdENFc0U7OEJBRkE2RyxVQUFBQTtXQUpKRCxPQU9BLDJCQURJNUc7O1VBMkNKMkcsVUF4Q21CLDZCQVZuQmhTLFNBQ0FpUyxVQUhDeE47OztTQWNJO1VBRERxTTtVQUFKQztVQUNBcE0sS0FsQkZnTixjQWlCRVosSUFrQ0VoSyxPQUFhOEs7VUFLZkc7WUFyQ0o7O3VCQUNHaFMsS0FBS21TO2VBQU47Z0JBQWlCQztnQkFBUFY7Z0JBQ0poTixLQXJCTmlOLGNBaUJNYixJQWtDRi9KLE9BL0JIL0c7Z0JBRUtxUztrQkFDRjs7O3FCQUNFLElBQVNDLG9CQUFQYjtxQkFDQTs2QkFBQywyQkFMQ0MsT0FJRkQ7aUNBSlNXLFNBSUZFO29CQUMrQztvQkFKeEQ1TjtlQU9KLE9BdkNONk0sUUErQlVZLEdBRUFFO2NBT0w7O2NBWEMxTjs7O1NBa0JTO1VBRFBpTTtVQUNGck0sU0FwQ0ZvTixjQW1DSWYsR0FnQkE3SixRQUFhOEs7VUFLZkc7WUFuQko7O3VCQUNHTztlQUFELElBQVFuTyxjQUFIb087ZUFBVSxXQUFkRCxJQWFnQlYsZUFiWlcsT0FBR3BPO2NBQXNDO2NBRjVDRzs7O1NBTVM7VUFEQXlNO1VBQVAzTTtVQUNGRyxXQTFDRm1OLGNBeUNXWCxLQVVQakssT0FBYThLO1VBS2ZHO1lBYko7OztlQUFXLElBQUs1TixjQUFIb087ZUFBVSxXQUFWQSxPQUZQbk8sT0FFVUQ7Y0FBa0M7Y0FEOUNJOzs7U0FJSztVQURFME07VUFBSkM7VUFDSHNCLE9BOUNGZCxjQTZDS1IsTUFNRHBLLE9BQWE4SztVQUpmbk4sS0EvQ0ZpTixjQTZDU1QsTUFNTG5LLE9BQWE4SztVQUtmRyxVQW5FTlQsUUF5RE1rQixNQUNBL047O0tBVUosNkJBekRvQmdJLFFBb0RsQm9GLEtBSUVFO0tBQ0osT0FESUE7SUFJUDtJQUNELE9BVklKO0dBV0w7WUFFR2MsZ0JBQ0NoRyxLQUFxQjNGLE9BQWEvRztJQUF1QztLQW9COUQsVUFyRlIyUixjQWlFSGpGLEtBQXFCM0YsT0FBYS9HOzs7SUFFN0I7dUJBQWM2UCxZQUFOb0MsZUFBTko7aUJBR0EsT0FIWWhDOztNQUlRaFA7OztNQUFSWjtNQUFSMFM7TUFBUkM7O1VBR0UsMkJBSE1ELFFBSkVWO1NBT2lCLDJCQUhuQlUsUUFKRVYsU0FJVlcsUUFKSWY7Z0JBQUFBLFdBQU1JLE1BQU1wQztjQUlRaFA7OztlQUF4QitSLFdBQVFELFlBQVExUzthQUFRWTs7R0EwQi9CO2dDQWhJT3VRLEtBb0JKRyxTQVdJSSxlQWdFSmU7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJRXJGSjRDO0lBQUFDO0lBdVlBQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdllBLDBCQUFBQyxLQUFBQztJQUFBLCtCQUFBRDtJQUFBLCtCQUFBQTtRQUNXRSxNQURYRDtJQUNXLCtCQURYRDtJQUNXOztlQUFBRyxLQUFBRjtPQUFBLEdBQUFFLEtBQUEsK0JBRFhIO09BQ1csV0FBSywrQkFEaEJBLFdBQ1dDO09BQUE7TUFBVTs7TUFBVkM7SUFBQSwrQkFEWEY7SUFBQSwrQkFBQUE7SUFBQSwrQkFBQUE7SUFBQSwrQkFBQUE7ZUFBQUM7SUFBQSxXQUVjLCtCQUZkRDtJQUFBLCtCQUFBQTtJQUFBLE9BQUEsK0JBQUFBO0dBR0M7R0FIRCw0QkFBQUM7SUFBQSxPQUFBLHNEQUFBQTtHQUdDO0dBSEQsU0FBQUcsc0JBQUFDO0lBQUE7S0FBQTtLQUFBLDZCQUFBO0lBQUEsT0FBQTs7YUFBQVQ7OztjQUFBOzs7YUFHQzs7O2NBSEQsSUFFRVUsMEJBREFDO2NBREYsV0FDRUEsU0FDQUQ7YUFDRDthQUhERDtHQUdDO1lBSERHO0lBQUE7S0FFRUM7S0FEQUM7S0FDQUMsVUFBQSxxQkFBQUY7S0FGRkcsZ0NBRUVEO0tBREFFLFVBQUEsOEJBQUFIO0tBREZJLGtDQUNFRCxlQURGRDtJQUFBLFdBQUFFO0dBR0M7R0FIRCxTQUFBQyx3QkFBQUM7SUFBQSxVQUFBQSxxQ0FBQUE7S0FDRTtNQURGQyxnQkFBQUQ7TUFDRUU7TUFDQUM7TUFGRkM7TUFBQUM7Y0FBQUo7S0FBQTs7O09BQUFLOztPQUFBQztPQUFBQztTQUFBQTtVQUFBQTtRQUFBO1VBQUE7O1NBQUFILGVBQUFHLFlBQUEsbUNBQUFIOztlQUNFLG1DQUFBSDtRQURGRTthQUFBSSxZQUNFLG1DQURGSjs7WUFDRUssd0NBREZGO1FBQ0VMLHVCQUFBTzs7Y0FDQSxtQ0FBQU47T0FGRkM7WUFBQUksWUFFRSxtQ0FGRko7O09BRUUsSUFBQU0sV0FBQSxxQkFGRkg7T0FFRUosMEJBQUFPOztjQUZGSjs7UUFBQSxtQ0FBQUY7TUFBQSxXQUFBLG1DQUFBQTtNQUFBLE9BQUE7bURBQUF2QixjQUFBbUI7O1FBQUEsbUNBQUFLO01BQUEsV0FBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBeEIsY0FBQW1COztLQUNFO01BQUEsVUFBQSxtQ0FBQUU7TUFDQSxVQUFBLG1DQUFBQzs7VUFBQVEsK0JBREFDO01BREYsV0FDRUEsZUFDQUQ7O0tBRkY7TUFBQTs7O2dCQUVFLG1DQUFBUjs7O01BRkY7OztnQkFDRSxtQ0FBQUQ7OztLQURGLE9BQUE7a0RBQUFyQixRQUFBbUI7O0lBQUEsT0FBQSwrQ0FBQW5CLFFBQUFtQjtHQUdDO1lBSERhO0lBQUE7S0FFRUM7S0FEQUM7S0FDQUMsMkJBQUFGO0tBQUFHLGlDQUFBRDtLQURBRSx1Q0FBQUg7S0FBQUksZ0NBQUFELFFBQ0FEO0lBRkYsc0JBQ0VFO0dBRUQ7WUFFT0MsY0FBaUJDLE1BQWNDO0lBQTRCLElBQTVCQyxTQUFBRDtJQUE0QjtpQkFBNUJDOzs7O1NBYWpCO1VBYmlCQztVQWE5QkM7VUFBYSxPQWJkTCxjQUFpQkMsTUFhaEJJO1NBQWEsU0FBQTtTQWJpQkYsU0FBQUM7OzthQUUvQnZDLGNBQU0sT0FBTkEsS0FGaUJvQzs7YUFBY0ssbUJBQUFILFNBQUFHOztTQWtCbkI7VUFsQm1CQztVQWtCaENDO1VBQWEsT0FsQlpSLGNBQWlCQyxNQWtCbEJPO1NBQWEsU0FBQTtTQWxCbUJMLFNBQUFJOzs7YUFBQUUsbUJBQUFOLFNBQUFNOzs7YUFjM0JDO1NBRVIsT0FBQTs7MkJBQWdCQyxLQUFLQzttQkFBTyxPQUFaRCxNQUFBQSxNQWhCWlgsY0FBaUJDLE1BZ0JBVztrQkFBdUM7O2tCQUZwREY7O0tBRlU7O0dBU3JCO1lBU09HLFlBRUVaLE1BQ0FDLE1BQ0FZLEtBQ0FKO0lBRXFCLElBSnJCUCxTQUFBRCxNQUNBYSxRQUFBRDtJQUdxQjtnQkFKckJYLG1CQUNBWTs7Ozs7OztjQVNEbEQ7Ozs7cUJBQUFBLEtBWENvQyxXQUVBYyxPQUNBTCxLQUFBQTs7Ozs7O2NBU0NNOzs7O2NBQ2dCLElBRExDLGVBQ0ssT0FBQSwyQkFETEE7cUJBQ2QsMkJBREdEO3dCQVRETjt3QkFZQzs7a0NBRUZDLEtBQUtDLElBQUlNOzBCQUFPLE9BbkJqQkwsWUFFRVosTUFpQklXLElBQUlNLElBQVRQO3lCQUFnRDt5QkFkL0NEO3lCQVNDTTt5QkFBV0M7Ozs7OztjQVhaWDs7ZUFDQWE7V0FEQWhCLFNBQUFHO1dBQ0FTLFFBQUFJOzs7VUFEQWhCLFNBQUFHOzs7MkRBQ0FjLGtCQUFBTCxRQUFBSzs7O1VBREFoQjtNQUFBRCxTQUFBQzs7O0tBaUNELE9BL0JDTTs7R0FpQ1Q7WUFLT1csUUFDQ3BCLE1BQWNxQixNQUFtQlo7SUFDWCxJQURSYSxTQUFBRCxNQUFtQkUsTUFBQWQ7SUFDWDtpQkFEUmE7Ozs7Ozs7O1dBQUFFO1dBR1hYO1dBQUpGO1dBSGtDYyxNQTVDbENiLFlBNENDWixNQUdEVyxJQUFJRSxLQUg4QlU7VUFBbkJELFNBQUFFO1VBQW1CRCxNQUFBRTs7O2NBd0J2QkMsaUJBQUpDLGVBR3NDL0QsSUE1QjdDd0QsUUFDQ3BCLE1Bd0JNMkIsSUF4QjJCSjtVQXlCdEMsT0FBQTs7NEJBRW1CZCxHQUFHbUIsR0FBTSxPQTVCeEJSLFFBQ0NwQixNQTJCaUI0QixHQUFIbkIsR0FBNEI7bUJBQUU3QzttQkFIbEM4RDs7O1dBeEJJRztXQXNCWkM7V0FBSkM7V0F0Qm1DQyxNQURsQ1osUUFDQ3BCLE1Bc0JFOEIsSUF2QkhWLFFBQ0NwQixNQXNCRitCLE1BdEJtQ1I7VUFBbkJELFNBQUFPO1VBQW1CTixNQUFBUzs7O2NBQW5CQzs7Y0FBQUMsbUJBZ0JoQkM7OztXQVlPQztXQUFKQztrQkE3QkZqQixRQUNDcEIsTUE0QkNxQyxNQTVCZ0NkO1VBNkJ0QyxPQUFBOzs0QkFDR2I7b0JBQUQsSUFBVU87b0JBQVEsT0EvQmhCRyxRQUNDcEIsTUE4Qk9pQixJQUFUUDttQkFBeUM7O21CQUZsQzBCOzs7Y0F2QkZwQjtVQUVSLE9BQUE7OzRCQUFnQk4sS0FBS3lCLElBQU8sT0FSeEJmLFFBQ0NwQixNQU9nQm1DLElBQUx6QixLQUFvQzttQkFQZGE7bUJBSzlCUDs7O2NBTFdzQixpQkFBQWhCLFNBQUFnQjs7O2NBQUFMOzs7O2NBQUFBOzs7Ozs7Y0FBQUMsbUJBZ0JoQkM7OztXQWhCbUNJLE1BRGxDbkIsUUFDQ3BCLE1BZ0JGbUMsSUFoQm1DWjtPQUFuQkQsU0FBQVk7T0FBbUJYLE1BQUFnQjs7O01BQW5CakIsU0FBQVc7OztLQTRDVCxPQTVDNEJWOztHQThDekM7WUFLT2lCLGlCQUFvQnhDLE1BQWNDO0lBQTRCLElBQTVCQyxTQUFBRDtJQUE0QjtpQkFBNUJDOzs7O1NBY3RDO1VBZHNDQztVQWFqQ0M7VUFDTCxPQWRJb0MsaUJBQW9CeEMsTUFhbkJJO1NBQ0wsU0FBQTtTQWRzQ0YsU0FBQUM7OzthQUVsQ3ZDLGNBQU0sT0FBTkEsS0FGb0JvQzs7YUFBY0ssbUJBQUFILFNBQUFHOztTQXdCdEM7VUF4QnNDQztVQXVCbkNDO1VBQ0gsT0F4QklpQyxpQkFBb0J4QyxNQXVCckJPO1NBQ0gsU0FBQTtTQXhCc0NMLFNBQUFJOzs7YUFBQUUsbUJBQUFOLFNBQUFNOzs7YUFlOUJDO1NBRVIsT0FBQTs7MkJBQ0dDLEtBQUtDO21CQUFPLE9BQVpELE1BQUFBLE1BbEJDOEIsaUJBQW9CeEMsTUFrQmhCVztrQkFBMEM7O2tCQUgxQ0Y7O0tBSFU7O0dBZXJCO1lBS09nQyxZQUFlekMsTUFBY3FCO0lBQTRCLElBQTVCQyxTQUFBRDtJQUE0QjtpQkFBNUJDOzs7Ozs7O2NBQUFnQixpQkFhN0JaO2FBN0NBYyxpQkFnQ2V4QyxNQWFmMEIsT0FDMkI7VUFkRUosU0FBQWdCOzs7Y0FFN0IxRSxjQUFNLE9BQU5BLEtBRmVvQzs7Y0FBY3dCLG1CQWtCMUJYLGdCQUFINkI7YUFsREFGLGlCQWdDZXhDLE1Ba0JmMEMsSUFFQTtVQUFRLFdBcEJSRCxZQUFlekMsTUFrQlphO1VBRUssU0FBQTtVQXBCcUJTLFNBQUFFOzs7VUFtQ2pDLElBRGVtQixlQUFKWixpQkFDWCxPQW5DSVUsWUFBZXpDLE1Ba0NSK0I7VUFDWDs7b0JBQXFDOztvQyxPQW5DakNVLFlBQWV6QztxQkFrQ0oyQzs7VUFHZjtXQXJDaUNkO1dBb0MxQkM7V0FBSk87V0FDSCxPQXJDSUksWUFBZXpDLE1Bb0NoQnFDO1VBQ0g7OztXQUF5QixXQXJDckJJLFlBQWV6QyxNQW9DWjhCO1dBQ2tCLFdBckNRUixTQUFBTzs7O1VBcUNqQzs7Y0FyQ2lDSyxtQkE0QjlCQzs7VUFXSCxJQURTWixnQkFBSHFCLGNBQ04sT0F2Q0lILFlBQWV6QyxNQXNDYjRDO1VBQ047O29CQUVLOzs4QkFBQ2xDLEtBQUttQztzQkFBTyxJQUNIQyxJQURKRCxPQUNDSCxJQURERzs2QkF6RVBMLGlCQWdDZXhDLE1BMENQMEM7O2dDQUROaEMsTUFBQUEsTUF6Q0YrQixZQUFlekMsTUEwQ0o4QztxQkFFVDs7cUJBTkd2Qjs7O2NBdkJEZDtVQUVSLE9BQUE7OzRCQUFnQkMsS0FBS08sSUFBTyxPQUFaUCxNQUFBQSxNQWpCWitCLFlBQWV6QyxNQWlCRWlCLElBQXFDOzttQkFGbERSOzs7Y0FmeUJ3Qjs7O2NBQUFBOzs7O2NBQUFBOzs7Ozs7Y0FBQUMsbUJBNEI5QkM7OztPQTVCOEJiLFNBQUFXOzs7TUFpQ2IsV0FqQ2hCUSxZQUFlekMsTUE0QmhCbUM7TUFLaUIsU0FBQTtNQWpDYWIsU0FBQVk7OztLQVlsQjs7R0FxQ2xCO1lBTU9hLFlBQWUvQyxNQUFjcUI7SUFBNEIsSUFBNUJDLFNBQUFEO0lBQTRCO2lCQUE1QkM7Ozs7Ozs7Y0FBQWdCLGlCQWE3Qlo7YUFwR0FjLGlCQXVGZXhDLE1BYWYwQixPQUMyQjtVQWRFSixTQUFBZ0I7OztjQUFBZCxtQkFrQjFCWCxnQkFBSDZCO2FBekdBRixpQkF1RmV4QyxNQWtCZjBDLElBRUE7VUFBUSxXQXBCUkssWUFBZS9DLE1Ba0JaYTtVQUVLLFNBQUE7VUFwQnFCUyxTQUFBRTs7O1VBaUNqQyxJQURPVSxtQkFBSkMsZUFDSCxVQURHQTs7ZUFFR3ZFO2NBQUFBLEtBbENhb0MsTUFrQ0s7V0FsQ1NzQixTQWdDMUJZOzs7VUFHQSxXQW5DSGEsWUFBZS9DLE1BZ0NoQm1DO1VBR0ksU0FBQTtVQW5DMEJiLFNBZ0MxQlk7OztVQUpQLElBRE1MLG1CQUNOLFVBRE1BO21FQUVBaEUseUJBQUFBLE9BN0JhbUM7VUFBY3NCLFNBMkIzQk87OztVQVdOLElBRGVjLGVBQUpaLGlCQUNYLFVBRFdBOztlQUVMaUI7a0JBQUFBLE9BdkNhaEQ7O3FCQXVDWTs7cUMsT0F2QzNCK0MsWUFBZS9DO3NCQXFDSjJDOztVQUdSLE9BQUE7O2tDLE9BeENISSxZQUFlL0M7bUJBcUNKMkM7O1VBTWYsSUFEYU0sbUJBQUpDLG1CQUNULFVBRGFEOztlQUVQRTtjQUFBQSxPQTVDYW5ELE1BNENLO1dBNUNTc0IsU0EwQ3hCNEI7OztVQUdGLFdBN0NISCxZQUFlL0MsTUEwQ1ZrRDtVQUdGLFNBQUE7VUE3QzBCNUIsU0EwQ3BCMkI7OztVQVViO1dBcERpQ0c7V0FtRDFCdEI7V0FBSk87V0FDSCxPQXBESVUsWUFBZS9DLE1BbURoQnFDO1VBQ0g7OztXQUF5QixXQXBEckJVLFlBQWUvQyxNQW1EWjhCO1dBQ2tCLFdBcERRUixTQUFBOEI7OztVQW9EakM7O2NBcERpQ0MsbUJBK0M1QkM7O1VBT0wsSUFEUy9CLGdCQUFIcUIsY0FDTixPQXRESUcsWUFBZS9DLE1BcURiNEM7VUFDTjs7b0JBRUs7OzhCQUFDbEMsS0FBS21DO3NCQUFPLElBQ0hDLElBREpELE9BQ0NILElBRERHOzZCQS9JUEwsaUJBdUZleEMsTUF5RFAwQzs7Z0NBRE5oQyxNQUFBQSxNQXhERnFDLFlBQWUvQyxNQXlESjhDO3FCQUVUOztxQkFOR3ZCOzs7Y0F0Q0RkO1VBRVIsT0FBQTs7NEJBQWdCQyxLQUFLTyxJQUFPLE9BQVpQLE1BQUFBLE1BakJacUMsWUFBZS9DLE1BaUJFaUIsSUFBcUM7O21CQUZsRFI7OztjQWZ5QndCOzs7Y0FBQUE7OztjQUFBQTs7OztjQUFBb0IsbUJBK0M1QkM7OztPQS9DNEJoQyxTQUFBVzs7O01Ba0RiLFdBbERoQmMsWUFBZS9DLE1BK0Nkc0Q7TUFHZSxTQUFBO01BbERhaEMsU0FBQStCOzs7S0FZbEI7O0dBb0RsQjtZQUtHRSxhQUFnQnZELE1BQWNxQjtJQUE0QixJQUN4RG1DLFlBak5FcEMsUUFnTllwQixNQUFjcUI7SUFFNUIsYUFBQSwyQkFEQW1DOztjQUdHOzt3QkFFRjlDLEtBQUtPLElBQU8sT0FBWlAsTUFsSUMrQixZQTRIWXpDLE1BTVJpQixNQUFMUCxJQUEwQzs7ZUFMM0M4QztHQVVMO1lBT09DLFdBQWN6RCxNQUFjcUI7SUFBNEIsSUFBNUJDLFNBQUFEO0lBQTRCO2lCQUE1QkM7Ozs7Ozs7Y0FBQWdCLGlCQWE1Qlo7YUEzTEFjLGlCQThLY3hDLE1BYWQwQixPQUMyQjtVQWRDSixTQUFBZ0I7OztjQUFBTDs7VUFnQmhDO1dBRFlUO1dBQUxYO1dBQUg2QjtXQUNKLE1BOUxJRixpQkE4S2N4QyxNQWVkMEM7V0FDSixhQTlKSUQsWUE4SWN6QyxNQWVYYTtrQkFFSDtVQWpCNEJTLFNBZXBCRTs7O2NBY0xNLGVBN0J5Qkk7YUE5STVCTyxZQThJY3pDLE1BNkJYOEIsS0FBK0I7VUE3Qk5SLFNBQUFZOzs7VUFpQzlCO1dBSGF3QjtXQUFKL0I7V0E5QnFCRSxvQkE4QnJCRixnQkFBSStCO1VBOUJpQnBDLFNBQUFPOzs7Y0FBQW9CLG1CQW1DdkJkO2FBakxMTSxZQThJY3pDLE1BbUNUbUMsS0FBbUM7VUFuQ1piLFNBQUEyQjs7O2NBQUFDLG1CQXdDekJTLGlCQUFKNUI7YUF0TENVLFlBOEljekMsTUF3Q2YrQixPQUVDO1VBQVEsVUExQ1IwQixXQUFjekQsTUF3Q1gyRDtVQUVLLFVBQUE7VUExQ29CckMsU0FBQTRCOzs7Y0FBQUUsbUJBb0M1QmY7YUFsTEFJLFlBOEljekMsTUFvQ2RxQyxPQUFtQztVQXBDUGYsU0FBQThCOzs7VUFzQnJCOztjQU1IeEIsY0FBTyxXQTFLWGEsWUE4SWN6QyxNQTRCVjRCOztjQVNDZ0MsaUJBQUpOOztjQU1JL0IsZ0JBQUhxQjtpQkF6TEZILFlBOEljekMsTUEyQ1o0Qzs7b0JBR0Y7OzhCQUNHbEM7c0JBQUQsSUFBVW9DLGNBQUhKOzZCQTdOVEYsaUJBOEtjeEMsTUErQ0wwQzs7Z0NBQU5oQyxNQS9DSCtDLFdBQWN6RCxNQStDRjhDLEtBQVRwQztxQkFFQTs7cUJBTkVhOzs7Y0F6QkRkO1VBR1A7O2tCQUFBOzs2QkFBZ0JDLEtBQUtPLElBQU8sT0FBWlAsTUFBQUEsTUFuS2IrQixZQThJY3pDLE1BcUJJaUIsSUFBcUM7O29CQUhuRFI7OztjQWxCd0J3Qjs7O2NBQUFBOzs7Y0FxQ3ZCMkIsaUJBQUpOOzs7T0FFaUI7UUFBQSxNQXJMbEJiLFlBOEljekMsTUFxQ2JzRDtRQUVpQixjQXJMbEJiLFlBOEljekMsTUFxQ1Q0RDtPQUVzQzs7TUF2Q2Z0QyxTQUFBVzs7O0tBWXRCOztHQTBDYjtZQUtHNEIsa0JBQXFCN0QsTUFBY3FCO0lBQTRCLElBQzdEbUMsWUE5UkVwQyxRQTZSaUJwQixNQUFjcUI7SUFFakMsYUFBQSwyQkFEQW1DOztjQUdHOzt3QkFFRjlDLEtBQUtPO2dCQUFPLEdBQVpQO2lCQUFvQixVQS9NbkIrQixZQXlNaUJ6QyxNQU1iaUI7aUJBQWUsZUFqRW5Cd0MsV0EyRGlCekQsTUFNYmlCOzs7OzJCQUFMUDtnQkFBb0I7ZUFBOEM7O2VBTG5FOEM7R0FVTDtZQUVHTSxNQUNDekMsTUFBbUIwQztJQUF5RDtLQUMzRTdGO09BQVU7O2tCQUFTOEYsTUFBUSxrQkFBUkEsTUFEcEIzQyxNQUMwQztTQUR2QjBDO0tBRWxCRSxTQUFTLDJCQUZTRjtLQUdsQkc7T0FBVSx1Q0FBeUJDLEtBQU8sT0FBUEEsSUFBVSxHQUY3Q2pHO2lCQUNBK0YsY0FDQUMsVUFEQUQ7SUFHSixXQUpJL0Y7R0FVTDtHQUdELHNCQUFBUDtJQUFBOzs7T0FBQSwrQkFBQUE7a0JBQ2UsK0JBRGZBOzZDQUFBQTs7O09BQUEsK0JBQUFBO2tCQUVnQiwrQkFGaEJBOzZDQUFBQTs7O09BQUEsK0JBQUFBO2tCQUdtQiwrQkFIbkJBOzZDQUFBQTs7O09BQUEsK0JBQUFBO2tCQUlvQiwrQkFKcEJBOzZDQUFBQTs7R0FJMkI7R0FKM0Isd0JBQUFDO0lBQUEsT0FBQSxrREFBQUE7R0FJMkI7R0FKM0IsU0FBQXdHLGtCQUFBQztJQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7Ozs7Ozs7U0FBQSxPQUFBOytDQUFBNUcsa0JBQUE0Rzs7UUFBQSxPQUFBOzhDQUFBNUcsa0JBQUE0Rzs7T0FBQSxPQUFBOzZDQUFBNUcsa0JBQUE0Rzs7TUFBQSxPQUFBOzRDQUFBNUcsa0JBQUE0Rzs7ZUFBQUE7O01BQUEsT0FBQTs0Q0FBQTVHLGtCQUFBNEc7OztNQUFBLE9BQUE7NENBQUE1RyxrQkFBQTRHO1NBR0lDOztRQUFBQTs7U0FBQUE7O1VBQUFBO1dBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBOztZQUZBQztXQUFBQSxtQkFBQUE7U0FBQTtVQUFBQyxXQUFBRDtVQUFBRSxXQUFBLHFCQUFBRDtTQUFBLFdBQUFDOztRQUFBLE9BQUE7O2lCQURKaEg7aUJBR0k2RztpQkFISkQ7O1dBSUlLO1VBQUFBLG1CQUFBQTtRQUFBO1NBQUFDLFdBQUFEO1NBQUFFLFdBQUEscUJBQUFEO1FBQUEsV0FBQUM7O09BQUEsT0FBQTs7Z0JBSkpuSDtnQkFHSTZHO2dCQUhKRDs7VUFFSVE7U0FBQUEsbUJBQUFBO09BQUE7UUFBQUMsV0FBQUQ7UUFBQUUsV0FBQSxxQkFBQUQ7T0FBQSxXQUFBQzs7TUFBQSxPQUFBOztlQUZKdEg7ZUFHSTZHO2VBSEpEOztTQUdJVztRQUFBQSxtQkFBQUE7TUFBQTtPQUFBQyxXQUFBRDtPQUFBRSxXQUFBLHFCQUFBRDtNQUFBLFdBQUFDOztLQUFBLE9BQUE7O2NBSEp6SDtjQUdJNkc7Y0FISkQ7O0lBQUEsT0FBQSx3Q0FBQTVHLGtCQUFBNEc7R0FJMkI7WUFKM0JjO0lBQUE7O09BQ0ksSUFBQUMscUJBQUFDLFdBQUEsb0JBQUFEO09BQUEsd0JBQUFDOztPQUNBLElBQUFDLHFCQUFBQyxXQUFBLG9CQUFBRDtPQUFBLHdCQUFBQzs7T0FDQSxJQUFBQyxxQkFBQUMsV0FBQSxvQkFBQUQ7T0FBQSx3QkFBQUM7O09BQ0EsSUFBQUMscUJBQUFDLFdBQUEsb0JBQUFEO09BQUEsd0JBQUFDOztHQUF1QjtHQUozQixTQUFBQyxvQkFBQWpIO0lBQUEsVUFBQUE7ZUFBQUE7O2dCQUFBQTs7Ozs7O09BQUEsT0FBQSw4Q0FBQWpCLFVBQUFpQjs7O2dCQUFBQTs7T0FBQSxPQUFBLDhDQUFBakIsVUFBQWlCOzs7OztZQUFBa0g7V0FBQUE7YUFBQUM7WUFBQUEsbUJBQUFBO1VBQUEsSUFBQUMsT0FBQUQsa0JBQUFFLE9BQUEscUJBQUFEO1VBQUEsV0FBQUM7O1NBQUEsT0FBQTtxREFBQXRJLFVBQUFtSSxLQUFBbEg7O1dBQUFrSDthQUFBSTtZQUFBQSxtQkFBQUE7VUFBQSxJQUFBQyxPQUFBRCxrQkFBQUUsT0FBQSxxQkFBQUQ7VUFBQSxXQUFBQzs7U0FBQSxPQUFBO3FEQUFBekksVUFBQW1JLEtBQUFsSDs7V0FBQWtIO2FBQUFPO1lBQUFBLG1CQUFBQTtVQUFBLElBQUFDLE9BQUFELGtCQUFBRSxPQUFBLHFCQUFBRDtVQUFBLFdBQUFDOztTQUFBLE9BQUE7cURBQUE1SSxVQUFBbUksS0FBQWxIOztXQUFBa0g7YUFBQVU7WUFBQUEsaUJBQUFBO1VBQUEsSUFBQUMsS0FBQUQsZ0JBQUFFLE9BQUEscUJBQUFEO1VBQUEsV0FBQUM7O1NBQUEsT0FBQTtxREFBQS9JLFVBQUFtSSxLQUFBbEg7Ozs7UUFBQSxPQUFBLDhDQUFBakIsVUFBQWlCOzs7O0lBQUEsT0FBQSw4Q0FBQWpCLFVBQUFpQjtHQUkyQjtZQUozQitIO0lBQUE7O09BQ0ksSUFBQUYsZUFBQUMsT0FBQSxxQkFBQUQ7T0FBQSxtQ0FBQUM7O09BQ0EsSUFBQUosaUJBQUFDLE9BQUEscUJBQUFEO09BQUEsbUNBQUFDOztPQUNBLElBQUFKLGlCQUFBQyxPQUFBLHFCQUFBRDtPQUFBLG1DQUFBQzs7T0FDQSxJQUFBSixpQkFBQUMsT0FBQSxxQkFBQUQ7T0FBQSxtQ0FBQUM7O0dBQXVCO1lBRXZCVyxhQUFlQztJQUFhLE9BQWJBOztXQUVKNUcsT0FGSTRHO09BRUsscUIsT0F0TGhCN0QsWUFzTE8vQzs7V0FDQzZHLFNBSEdEO09BR00scUIsT0FsSHJCckQsYUFrSFlzRDs7V0FDR0MsU0FKQUY7T0FJUyxnQkFBQ3ZGLE1BQVEsV0FuSGpDa0MsYUFtSGV1RCxRQUFVekYsTUFBaUM7O1dBQzFDMEYsU0FMREg7T0FLVSxxQixPQXZDekIvQyxrQkF1Q2dCa0Q7O0dBRW5COzs7Ozs7T0FwWkRoSjtPQUFBSTtPQUFBTztPQUFBYztPQUtRTztPQThCQWE7T0EyQ0FRO09Bb0RBb0I7T0FnQ0FDO09BdURBTTtPQXFFSlE7T0FrQklFO09BMkRKSTtPQWFBQzs7O09BZUpNO09BQUFlO09BQUFTO09BQUFjO09BTUlDOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3ljSUs7Ozs7OztJQW4xQk5DO0lBQUF6SjtJQU1BMEo7SUFBQXhKO0lBU0F5SjtJQUFBQztJQU1BQztJQUFBQztJQU9BQztJQUFBQztJQVlBQztJQUFBQztJQWlCQUM7SUFBQUM7SUFXQUM7SUFBQUM7SUFrREFDO0lBQUFDO0lBUUFDO0lBQUFDO0lBaWdCSUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFFQUM7SUFvUUpDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBOTRCRUMsc0JBQXdCQztJQUMxQixPQUFBOztHQUFrRTs7SUFJbEUsa0NBQUFqTCxLQUFBQztLQUFBLCtCQUFBRDtLQUFBLCtCQUFBQTtnQkFBQUM7S0FBQSxXQUNRLHNCQURSRDtLQUFBLCtCQUFBQTtLQUFBLCtCQUFBQTtLQUFBLCtCQUFBQTtnQkFBQUM7S0FBQSxXQUVRLCtCQUZSRDtLQUFBLCtCQUFBQTtLQUFBLE9BQUEsK0JBQUFBO0lBR0M7SUFIRCxvQ0FBQUM7S0FBQSxPQUFBOzs7O2U7O2NBQUFBO0lBR0M7SUFIRCxTQUFBaUwsbUJBQWdCQyxhQUFoQkM7S0FBQSxPQUFBOztjQUFBOUI7aUNBQWdCNkI7O2VBQWhCO2NBR0M7OztlQUhELElBRUVFLG9CQURBQztlQURGLFdBQ0VBLE1BQ0FEO2NBQ0Q7Y0FIREQ7SUFHQzthQUhERyxtQkFBZ0JDO0tBQWhCO01BRUVDO01BREFDO01BQ0FDLFVBQUEsb0JBQUFGO01BRkZHLGdDQUVFRDtNQURBaEwsVUFBQSxXQURjNkssYUFDZEU7TUFERkcsa0NBQ0VsTCxlQURGaUw7S0FBQSxXQUFBQztJQUdDO0lBSEQsU0FBQUMscUJBQUFDLFNBQUEvSztLQUFBLFVBQUFBLHFDQUFBQTtNQUNFO09BREZDLGdCQUFBRDtPQUNFZ0w7T0FDQUM7T0FGRjdLO09BQUFDO2VBQUFKO01BQUE7OztRQUFBSzs7UUFBQUM7UUFBQUM7VUFBQUE7V0FBQUE7U0FBQTtXQUFBOztVQUFBSDtlQUFBRyxZQUFBLG1DQUFBSDs7Z0JBQ0UsbUNBQUEySztTQURGNUs7Y0FBQUksWUFDRSxtQ0FERko7O1NBQ0UsSUFBQUssU0FBQSxXQURGc0ssU0FBQXhLO1NBQ0V5SyxvQkFBQXZLOztlQUNBLG1DQUFBd0s7UUFGRjdLO2FBQUFJLFlBRUUsbUNBRkZKOztRQUVFLElBQUFNLFdBQUEscUJBRkZIO1FBRUUwSyxvQkFBQXZLOztlQUZGSjs7U0FBQSxtQ0FBQUY7T0FBQSxXQUFBLG1DQUFBQTtPQUFBLE9BQUE7b0RBQUF2QixjQUFBbUI7O1NBQUEsbUNBQUFLO09BQUEsV0FBQSxtQ0FBQUE7T0FBQSxPQUFBO29EQUFBeEIsY0FBQW1COztNQUNFO09BQUEsVUFBQSxtQ0FBQWdMO09BQ0EsVUFBQSxtQ0FBQUM7O1dBQUFDLHlCQURBQztPQURGLFdBQ0VBLFlBQ0FEOztNQUZGO09BQUE7OztpQkFFRSxtQ0FBQUQ7OztPQUZGOzs7aUJBQ0UsbUNBQUFEOzs7TUFERixPQUFBO21EQUFBbk0sUUFBQW1COztLQUFBLE9BQUEsK0NBQUFuQixRQUFBbUI7SUFHQzthQUhEb0wscUJBQUFMO0tBQUE7TUFFRU07TUFEQUM7TUFDQXRLLDJCQUFBcUs7TUFBQXBLLDJCQUFBRDtNQURBRSxtQkFERjZKLFNBQ0VPO01BQUFuSyw2QkFBQUQsUUFDQUQ7S0FGRixzQkFDRUU7SUFFRDtJQUdELG9DQUFBbkMsS0FBQUM7S0FBQSwrQkFBQUQ7S0FBQSwrQkFBQUE7Z0JBQUFDO0tBQUEsV0FDUyxzQkFEVEQ7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7U0FFU0UsTUFGVEQ7S0FFUywrQkFGVEQ7S0FFUzs7Z0JBQUFHLEtBQUFGO1FBQUEsR0FBQUUsS0FBQSwrQkFGVEg7UUFFUyxXQUFLLCtCQUZkQSxXQUVTQztRQUFBO09BQVk7O09BQVpDO0tBQUEsK0JBRlRGO0tBQUEsK0JBQUFBO0tBQUEsT0FBQSwrQkFBQUE7SUFHQztJQUhELHNDQUFBQztLQUFBLE9BQUE7Ozs7ZTs7Y0FBQUE7SUFHQztJQUhELFNBQUFzTSxxQkFBa0JDLGFBQWxCQztLQUFBOzs7OztTQUFrQkQ7NkJBQWxCO0tBQUEsT0FBQTs7Y0FBQWpEOzs7ZUFBQTs7O2NBR0M7OztlQUhELElBRUVtRCxxQkFEQUM7ZUFERixXQUNFQSxPQUNBRDtjQUNEO2NBSEREO0lBR0M7YUFIREcscUJBQWtCQztLQUFsQjtNQUVFQztNQURBQztNQUNBQyxVQUFBLDhCQUFBRjtNQUZGRyxnQ0FFRUQ7TUFEQUUsVUFBQSxXQURnQkwsYUFDaEJFO01BREZJLGtDQUNFRCxlQURGRDtLQUFBLFdBQUFFO0lBR0M7SUFIRCxTQUFBQyx1QkFBQXJCLFNBQUEvSztLQUFBLFVBQUFBLHFDQUFBQTtNQUNFO09BREZDLGdCQUFBRDtPQUNFcU07T0FDQUM7T0FGRmxNO09BQUFDO2VBQUFKO01BQUE7OztRQUFBSzs7UUFBQUM7UUFBQUM7VUFBQUE7V0FBQUE7U0FBQTtXQUFBOztVQUFBSDtlQUFBRyxZQUFBLG1DQUFBSDs7Z0JBQ0UsbUNBQUFnTTtTQURGak07Y0FBQUksWUFDRSxtQ0FERko7O1NBQ0UsSUFBQUssU0FBQSxXQURGc0ssU0FBQXhLO1NBQ0U4TCxxQkFBQTVMOztlQUNBLG1DQUFBNkw7UUFGRmxNO2FBQUFJLFlBRUUsbUNBRkZKOztZQUVFTSwwQ0FGRkg7UUFFRStMLHFCQUFBNUw7O2VBRkZKOztTQUFBLG1DQUFBRjtPQUFBLFdBQUEsbUNBQUFBO09BQUEsT0FBQTtvREFBQXJCLGdCQUFBaUI7O1NBQUEsbUNBQUFLO09BQUEsV0FBQSxtQ0FBQUE7T0FBQSxPQUFBO29EQUFBdEIsZ0JBQUFpQjs7TUFDRTtPQUFBLFVBQUEsbUNBQUFxTTtPQUNBLFVBQUEsbUNBQUFDOztXQUFBQywwQkFEQUM7T0FERixXQUNFQSxhQUNBRDs7TUFGRjtPQUFBOzs7aUJBRUUsbUNBQUFEOzs7T0FGRjs7O2lCQUNFLG1DQUFBRDs7O01BREYsT0FBQTttREFBQXROLFVBQUFpQjs7S0FBQSxPQUFBLCtDQUFBakIsVUFBQWlCO0lBR0M7YUFIRHlNLHVCQUFBMUI7S0FBQTtNQUVFMkI7TUFEQUM7TUFDQTNMLHFDQUFBMEw7TUFBQXpMLDRCQUFBRDtNQURBRSxtQkFERjZKLFNBQ0U0QjtNQUFBeEwsOEJBQUFELFFBQ0FEO0tBRkYsc0JBQ0VFO0lBRUQ7SUFHRCxpQkFBQW5DLEtBQVksT0FBQSwrQkFBWkEsVUFBa0I7SUFBbEIsbUJBQUFDO0tBQUEsT0FBQSw2Q0FBQUE7SUFBa0I7O0tBQWxCMk47S0FBQUM7S0FBQUM7S0FBQUM7OzRCQUdBL047S0FBQTtLQUFtQiwrQkFBbkJBO3VEQUFBQTtLQUFtQiwrQkFBbkJBO3VEQUFBQTsyQ0FBQUE7SUFBK0M7OEJBQS9DQztLQUFBLE9BQUEsb0RBQUFBO0lBQStDOzs7YUFBL0MrTixvQkFBbUJDO0tBQW5CLFNBQW1CQTtpQkFBQUE7Ozs7UUFBQTtTQUFBQztTQUFBQztTQUFBQyxXQUFBLFdBSG5CUixjQUdtQk87U0FBQUUsV0FBQSx1Q0FBQUg7UUFBQSxXQUFBRSxVQUFBQzs7OztLQUFBLE9BQUE7MkNBQW5CN0UscUJBQW1CeUU7SUFBNEI7YUFBL0NLO0tBQUE7TUFBbUJDO01BQUFDO01BQUFDLHNCQUhuQlosY0FHbUJXO01BQUFFLGtEQUFBSDtvQkFBQUUsY0FBQUM7SUFBNEI7YUFBL0NDLHNCQUFtQjNOO0tBQW5CLFVBQW1CQSxxQ0FBQUE7aUJBQUFBOzs7OztTQUFBNE47U0FBQS9GO1NBQUFDLGtCQUhuQmdGLGdCQUdtQmpGO1NBQUFnRyw4Q0FBQUQ7bUJBQUE5RixNQUFBK0Y7Ozs7MERBQW5CcEYsYUFBbUJ6STtJQUE0QjthQUEvQzhOO0tBQUE7TUFBbUJGO01BQUEvRjtNQUFBQyxrQkFIbkJpRixnQkFHbUJsRjtNQUFBZ0csOENBQUFEOytCQUFBOUYsVUFBQStGO0lBQTRCOzs2QkFHL0M3TyxLQUFvQkM7S0FBQSwrQkFBcEJEO0tBQW9COztnQkFBQUcsS0FBQUY7UUFBQSxHQUFBRSxLQUFBLCtCQUFwQkg7UUFBb0Isb0RBQXBCQSxNQUFvQkM7UUFBQTtPQUFpQjs7T0FBakJBO0tBQUEsT0FBQSwrQkFBcEJEO0lBQXFDOytCQUFyQ0M7S0FBQSxPQUFBLHFEQUFBQTtJQUFxQzs7YUFBckM4TyxxQkFBQUM7S0FBQSxPQUFBLHFCQUhBaEIscUJBR0FnQjtJQUFxQzthQUFyQ0MscUJBQUFDO0tBQUEsT0FBQSxxQkFIQVoscUJBR0FZO0lBQXFDO0lBQXJDLFNBQUFDLHVCQUFBQztLLDRCQUhBVCx1QkFHQVM7O2FBQUFDLHVCQUFBQztLLDRCQUhBUix1QkFHQVE7O0lBR0Esa0NBQUF0UCxLQUFBQztLQUFBLCtCQUFBRDtLQUFBLCtCQUFBQTtnQkFBQUM7S0FBQSxXQUNTLHNCQURURDtLQUFBLCtCQUFBQTtLQUFBLCtCQUFBQTtLQUFBLCtCQUFBQTtnQkFBQUM7S0FBQSxXQUVZLCtCQUZaRDtLQUFBLCtCQUFBQTtLQUFBLCtCQUFBQTtLQUFBLCtCQUFBQTtnQkFBQUM7S0FBQSxXQUdZLCtCQUhaRDtLQUFBLCtCQUFBQTtLQUFBLE9BQUEsK0JBQUFBO0lBSUM7SUFKRCxvQ0FBQUM7S0FBQSxPQUFBOzs7O2U7O2NBQUFBO0lBSUM7SUFKRCxTQUFBc1AsbUJBQWdCQyxhQUFoQkM7S0FBQSxPQUFBOztjQUFBL0Y7Ozs7ZUFBZ0I4Rjs7Ozs7OztlQUFoQjs7Ozs7O2NBSUM7OztlQUpEOztnQkFHRUU7Z0JBREFDO2dCQURBaEQ7ZUFERixXQUNFQSxPQUNBZ0QsVUFDQUQ7Y0FDRDtjQUpERDtJQUlDO2FBSkRHLG1CQUFnQkM7S0FBaEI7TUFHRUM7TUFEQUM7TUFEQUM7TUFFQUMsVUFBQSxxQkFBQUg7TUFIRkksZ0NBR0VEO01BREFFLFVBQUEscUJBQUFKO01BRkZLLGtDQUVFRCxlQUZGRDtNQUNFRyxVQUFBLFdBRGNSLGFBQ2RHO01BREZNLGtDQUNFRCxlQURGRDtLQUFBLFdBQUFFO0lBSUM7SUFKRCxTQUFBQyxxQkFBQXhFLFNBQUEvSztLQUFBLFVBQUFBLHFDQUFBQTtNQUNFO09BREZDLGdCQUFBRDtPQUNFcU07T0FDQW1EO09BQ0FDO09BSEZyUDtPQUFBQztlQUFBSjtNQUFBOzs7UUFBQUs7O1FBQUFDO1FBQUFDO1VBQUFBO1dBQUFBO1lBQUFBO1VBQUE7WUFBQTs7V0FBQUg7Z0JBQUFHLFlBQUEsbUNBQUFIOztpQkFDRSxtQ0FBQWdNO1VBREZqTTtlQUFBSSxZQUNFLG1DQURGSjs7VUFDRSxJQUFBSyxTQUFBLFdBREZzSyxTQUFBeEs7VUFDRThMLHFCQUFBNUw7O2dCQUNBLG1DQUFBK087U0FGRnBQO2NBQUFJLFlBRUUsbUNBRkZKOztTQUVFLElBQUFNLFdBQUEscUJBRkZIO1NBRUVpUCx3QkFBQTlPOztlQUNBLG1DQUFBK087UUFIRnJQO2FBQUFJLFlBR0UsbUNBSEZKOztRQUdFLElBQUFzUCxXQUFBLHFCQUhGblA7UUFHRWtQLHdCQUFBQzs7ZUFIRnBQOztTQUFBLG1DQUFBRjtPQUFBLFdBQUEsbUNBQUFBO09BQUEsT0FBQTtvREFBQXVJLGdCQUFBM0k7O1NBQUEsbUNBQUFLO09BQUEsV0FBQSxtQ0FBQUE7T0FBQSxPQUFBO29EQUFBc0ksZ0JBQUEzSTs7TUFDRTtPQUFBLFVBQUEsbUNBQUFxTTtPQUNBLFVBQUEsbUNBQUFtRDtPQUNBLFVBQUEsbUNBQUFDOzs7UUFBQUU7UUFEQUM7UUFEQXBEO09BREYsV0FDRUEsYUFDQW9ELGdCQUNBRDs7TUFIRjtPQUFBOzs7aUJBR0UsbUNBQUFGOzs7T0FIRjs7O2lCQUVFLG1DQUFBRDs7O09BRkY7OztpQkFDRSxtQ0FBQW5EOzs7TUFERixPQUFBO21EQUFBMUQsVUFBQTNJOztLQUFBLE9BQUEsK0NBQUEySSxVQUFBM0k7SUFJQzthQUpENlAscUJBQUE5RTtLQUFBO01BR0UrRTtNQURBQztNQURBcEQ7TUFFQTNMLDJCQUFBOE87TUFBQTdPLCtCQUFBRDtNQURBRSw2QkFBQTZPO01BQUE1TyxpQ0FBQUQsUUFDQUQ7TUFGQStPLG1CQURGakYsU0FDRTRCO01BQUFzRCw4QkFBQUQsUUFDQTdPO0tBRkYsc0JBQ0U4TztJQUdEO0lBR0QsK0JBQUFqUixLQUFBQztLQUFBLCtCQUFBRDtLQUFBLCtCQUFBQTtnQkFBQUM7S0FBQSxXQUNtQiwrQkFEbkJEO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO2dCQUFBQztLQUFBLFdBRW9CLCtCQUZwQkQ7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7Z0JBQUFDO0tBQUEsV0FHZ0IsK0JBSGhCRDtLQUFBLCtCQUFBQTtLQUFBLE9BQUEsK0JBQUFBO0lBSUM7SUFKRCxpQ0FBQUM7S0FBQSxPQUFBLDREQUFBQTtJQUlDO0lBSkQsU0FBQWlSLDJCQUFBQztLQUFBLE9BQUE7O2NBQUF2SDs7Ozs7Ozs7Ozs7ZUFBQTs7Ozs7O2NBSUM7OztlQUpEOztnQkFHRXdIO2dCQURBQztnQkFEQUM7ZUFERixXQUNFQSxpQkFDQUQsa0JBQ0FEO2NBQ0Q7Y0FKREQ7SUFJQzthQUpESTtLQUFBO01BR0VDO01BREFDO01BREFDO01BRUFDLFVBQUEscUJBQUFIO01BSEZJLGlDQUdFRDtNQURBRSxVQUFBLHFCQUFBSjtNQUZGSyxtQ0FFRUQsZUFGRkQ7TUFDRUcsVUFBQSxxQkFBQUw7TUFERk0sbUNBQ0VELGVBREZEO0tBQUEsV0FBQUU7SUFJQztJQUpELFNBQUFDLDZCQUFBalI7S0FBQSxVQUFBQSxxQ0FBQUE7TUFDRTtPQURGQyxnQkFBQUQ7T0FDRWtSO09BQ0FDO09BQ0FDO09BSEZoUjtPQUFBQztlQUFBSjtNQUFBOzs7UUFBQUs7O1FBQUFDO1FBQUFDO1VBQUFBO1dBQUFBO1lBQUFBO1VBQUE7WUFBQTs7V0FBQUg7Z0JBQUFHLFlBQUEsbUNBQUFIOztpQkFDRSxtQ0FBQTZRO1VBREY5UTtlQUFBSSxZQUNFLG1DQURGSjs7VUFDRSxJQUFBSyxTQUFBLHFCQURGRjtVQUNFMlEsK0JBQUF6UTs7Z0JBQ0EsbUNBQUEwUTtTQUZGL1E7Y0FBQUksWUFFRSxtQ0FGRko7O1NBRUUsSUFBQU0sV0FBQSxxQkFGRkg7U0FFRTRRLGdDQUFBelE7O2VBQ0EsbUNBQUEwUTtRQUhGaFI7YUFBQUksWUFHRSxtQ0FIRko7O1FBR0UsSUFBQXNQLFdBQUEscUJBSEZuUDtRQUdFNlEsNEJBQUExQjs7ZUFIRnBQOztTQUFBLG1DQUFBRjtPQUFBLFdBQUEsbUNBQUFBO09BQUEsT0FBQTtvREFBQXlJLGdCQUFBN0k7O1NBQUEsbUNBQUFLO09BQUEsV0FBQSxtQ0FBQUE7T0FBQSxPQUFBO29EQUFBd0ksZ0JBQUE3STs7TUFDRTtPQUFBLFVBQUEsbUNBQUFrUjtPQUNBLFVBQUEsbUNBQUFDO09BQ0EsVUFBQSxtQ0FBQUM7OztRQUFBQztRQURBQztRQURBQztPQURGO2VBQ0VBO2VBQ0FEO2VBQ0FEOztNQUhGO09BQUE7OztpQkFHRSxtQ0FBQUQ7Ozs7O09BSEY7OztpQkFFRSxtQ0FBQUQ7Ozs7O09BRkY7OztpQkFDRSxtQ0FBQUQ7Ozs7O01BREYsT0FBQTttREFBQXJJLFVBQUE3STs7S0FBQSxPQUFBLCtDQUFBNkksVUFBQTdJO0lBSUM7YUFKRHdSO0tBQUE7TUFHRUM7TUFEQUM7TUFEQUM7TUFFQTNRLDJCQUFBeVE7TUFBQXhRLG1DQUFBRDtNQURBRSw2QkFBQXdRO01BQUF2USx5Q0FBQUQsUUFDQUQ7TUFGQStPLDZCQUFBMkI7TUFBQTFCLHdDQUFBRCxRQUNBN087S0FGRixzQkFDRThPO0lBR0Q7YUFFRzJCO0tBQ0E7TUFBcUN4QjtNQUFsQkM7TUFBakJDOzttQkFBQUEsa0JBQWlCRCx3QkFBa0JEOztlQUU5QjtJQUFtRDs7NkJBRzlEcFIsS0FBQUM7S0FBQSwrQkFBQUQ7S0FBQSwrQkFBQUE7Z0JBQUFDO0tBQUEsV0FDUywrQkFEVEQ7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7Z0JBQUFDO0tBQUEsV0FFVywrQkFGWEQ7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7Z0JBQUFDO0tBQUEsV0FHZSwrQkFIZkQ7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7Z0JBQUFDO0tBQUE7T0FLSSx3REFMSkQ7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7Z0JBQUFDO0tBQUEsb0RBQUFEO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO2dCQUFBQztLQUFBLFdBT1csc0JBUFhEO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO2dCQUFBQztLQUFBLFdBUWdCLHNCQVJoQkQ7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7Z0JBQUFDO0tBQUE7OztrQkFTY0QsS0FBVyxPQUFBLHNCQUFYQSxLQUFnQjtTQVQ5QkE7O0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO2dCQUFBQztLQUFBLFdBVWEsc0JBVmJEO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO1NBV2VFLE1BWGZEO0tBV2UsK0JBWGZEO0tBV2U7O2dCQUFBRyxLQUFBRjtRQUFBLEdBQUFFLEtBQUEsK0JBWGZIO1FBV2U7OztxQkFBS0EsS0FBVyxPQUFBLHNCQUFYQSxLQUFnQjtZQVhwQ0E7VUFXZUM7UUFBQTtPQUF1Qjs7T0FBdkJDO0tBQUEsK0JBWGZGO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO2dCQUFBQztLQUFBOzs7a0JBWWdCRCxLQUFhLE9BQUEsc0JBQWJBLEtBQWtCO1NBWmxDQTs7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7S0FBQSwrQkFBQUE7Z0JBQUFDO0tBQUEsb0RBQUFEO0tBQUEsK0JBQUFBO0tBQUEsT0FBQSwrQkFBQUE7SUFjQzsrQkFkREM7S0FBQSxPQUFBOzs7bUM7Y0FBQUE7SUFjQzs7S0FUYSxnQkFBQ0Q7TUFBVyxPQUFBLDhCQUFYQSxtQkFBZ0Q7Ozs7Ozs7Ozs7O2FBTC9ENlMsVUFBT0MsYUFBUEM7S0FBQTs7Ozs7U0FaQTdCOzs7O1VBWU80Qjs7OztXQUFBQTs7OzsyQixPQW5CUHZELG1CQW1CT3VEOzs7O2FBQUFBOzs7O2NBQVA7OytCLE9BeENBNUgsbUJBd0NPNEg7Ozs7OEIsT0FsQ1B2RyxxQkFrQ091RzswQ0F0QlAvRDtLQXNCQSxPQUFBOztjQUFBakY7Ozs7Ozs7Ozs7Ozs7OztlQUFBOztrQ0FBQTtpREFBQTswQ0FBQTs0Q0FBQTs4Q0FBQTsrQ0FBQTs7O2lEQUFBO2dEQUFBO2lEQUFBO2dEQUFBO3VEQUFBOzRDQUFBOztlQUFBO2NBY0M7Ozs7Ozs7Ozs7Ozs7O2dCQURDa0o7Z0JBREFDO2dCQURBQztnQkFEQUM7Z0JBREFDO2dCQURBQztnQkFEQUM7Z0JBREFDO2dCQUZBQztnQkFEQXZJO2dCQURBd0k7Z0JBREFDO2VBREY7dUJBQ0VBO3VCQUNBRDt1QkFDQXhJO3VCQUNBdUk7dUJBRUFEO3VCQUNBRDt1QkFDQUQ7dUJBQ0FEO3VCQUNBRDt1QkFDQUQ7dUJBQ0FEO3VCQUNBRDs7Y0FiRkQ7SUFjQzthQWREWSxVQUFPQztLQWFMO01BQUFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BRkFDO01BREFDO01BREFDO01BREFDO01BWUFDLFVBbkNGeEYscUJBbUNFNEU7TUFiRmEsaUNBYUVEO01BREFFLFVBOUNGL0gscUJBa0NPZ0gsYUFZTEU7TUFaRmMsbUNBWUVELGVBWkZEO01BV0VHO1FBQUE7O3lCLE9BbkRGdEosbUJBd0NPcUk7VUFXTEc7TUFYRmUsbUNBV0VELGVBWEZEO01BVUVHLFVBQUEsV0FWS25CLGFBVUxJO01BVkZnQixtQ0FVRUQsZUFWRkQ7TUFTRUcsVUE1QkZyRixtQkFtQk9nRSxhQVNMSztNQVRGaUIsbUNBU0VELGVBVEZEO01BUUVHLFVBQUEsV0FSS3ZCLGFBUUxNO01BUkZrQixtQ0FRRUQsZUFSRkQ7TUFPRUcsVUFBQSxXQVBLekIsYUFPTE87TUFQRm1CLG1DQU9FRCxlQVBGRDtNQU1FRyxVQWxCRmhFLDJCQWtCRTZDO01BTkZvQixtQ0FNRUQsZUFORkQ7TUFJRUcsVUFBQSxtQ0FBQXBCO01BSkZxQixtQ0FJRUQsZUFKRkQ7TUFHRUcsVUFBQSxvQkFBQXJCO01BSEZzQixtQ0FHRUQsZUFIRkQ7TUFFRUcsVUFBQSxxQkFBQXRCO01BRkZ1QixtQ0FFRUQsZUFGRkQ7TUFDRUcsVUFBQSxvQkFBQXZCO01BREZ3QixvQ0FDRUQsZUFERkQ7S0FBQSxXQUFBRTs7YUFBQUMsWUFBQWxLLFNBQUEvSztLLFVBQUFBLHFDQUFBQTtNQUNFO09BREZDLGdCQUFBRDtPQUNFa1Y7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FiRnpWO09BQUFDO2VBQUFKO01BQUE7OztRQUFBSzs7UUFBQUM7UUFBQUM7dUNBQUFBOzs7Ozs7O2NBQUFBO2VBQUFBO2dCQUFBQTtpQkFBQUE7a0JBQUFBO2tCQVNFLG1DQUFBaVY7Z0JBVEZyVjs7a0JBQUFJO2tCQVNFLG1DQVRGSjs7b0JBU0VLLFNBNUJGOE8scUJBbUJBeEUsU0FBQXhLO2dCQVNFa1YsMEJBQUFoVjs7O3NCQUNBLG1DQUFBaVY7ZUFWRnRWOztpQkFBQUk7aUJBVUUsbUNBVkZKOztlQVVFLElBQUFNLFdBQUEsV0FWRnFLLFNBQUF4SztlQVVFbVYseUJBQUFoVjs7cUJBUkEsbUNBQUF5VTtjQUZGL1U7bUJBQUFJLFlBRUUsbUNBRkZKOztjQUVFLElBQUFzUCxXQUFBLHFCQUZGblA7Y0FFRTRVLHVCQUFBekY7O29CQURBLG1DQUFBd0Y7YUFERjlVO2tCQUFBSSxZQUNFLG1DQURGSjs7YUFDRSxJQUFBMFYsV0FBQSxxQkFERnZWO2FBQ0UyVSxxQkFBQVk7O21CQVlBLG1DQUFBRDtZQWJGelY7aUJBQUFJLFlBYUUsbUNBYkZKOztZQWFFLElBQUEyVixXQW5DRjVILHVCQXNCQTVOO1lBYUVzViw0QkFBQUU7O2tCQVRBLG1DQUFBVjtXQUpGalY7Z0JBQUFJLFlBSUUsbUNBSkZKOztXQUlFO1lBQUE0VjtjQUFBLGlEQUpGelY7V0FJRThVLHNCQUFBVzs7aUJBSkZ4VjthQUFBQTtjQUFBQTtlQUFBQTtnQkFBQUE7aUJBQUFBO2lCQU9FLG1DQUFBK1U7ZUFQRm5WOztpQkFBQUk7aUJBT0UsbUNBUEZKOztlQU9FLElBQUE2VixXQUFBLFdBUEZsTCxTQUFBeEs7ZUFPRWdWLHVCQUFBVTs7OztlQURBLG1DQUFBWDtjQU5GbFY7bUJBQUFJLFlBTUUsbUNBTkZKOztjQU1FLElBQUE4VixXQWxCRmpGLDZCQVlBMVE7Y0FNRStVLGtDQUFBWTs7b0JBSEEsbUNBQUFkO2FBSEZoVjtrQkFBQUksWUFHRSxtQ0FIRko7O2FBR0UsSUFBQStWLFdBQUEscUJBSEY1VjthQUdFNlUsMkJBQUFlOzttQkFTQSxtQ0FBQVA7WUFaRnhWO2lCQUFBSSxZQVlFLG1DQVpGSjs7Z0JBWUVnVyxXQTlDRmhLLHVCQWtDQXJCLFNBQUF4SztZQVlFcVYsNEJBQUFROztrQkFEQSxtQ0FBQVQ7V0FYRnZWO2dCQUFBSSxZQVdFLG1DQVhGSjs7O1lBV0VpVzs7OytCLE9BbkRGdkwscUJBd0NBQztnQkFBQXhLO1dBV0VvViwyQkFBQVU7O2lCQUhBLG1DQUFBYjtVQVJGcFY7ZUFBQUksWUFRRSxtQ0FSRko7O1VBUUUsSUFBQWtXLFlBQUEsV0FSRnZMLFNBQUF4SztVQVFFaVYsNEJBQUFjOzs7O1FBUkY7VUFBQTs7U0FBQWpXLGVBQUFHLFlBQUEsbUNBQUFIOztlQUFBQzs7U0FBQSxtQ0FBQUY7T0FBQSxXQUFBLG1DQUFBQTtPQUFBLE9BQUE7b0RBQUEySSxnQkFBQS9JOztTQUFBLG1DQUFBSztPQUFBLFdBQUEsbUNBQUFBO09BQUEsT0FBQTtvREFBQTBJLGdCQUFBL0k7O01BQ0U7T0FBQSxVQUFBLG1DQUFBa1Y7T0FDQSxVQUFBLG1DQUFBQztPQUNBLFVBQUEsbUNBQUFDO09BQ0EsVUFBQSxtQ0FBQUM7T0FFQSxVQUFBLG1DQUFBQztPQUNBLFVBQUEsbUNBQUFDO09BQ0EsVUFBQSxtQ0FBQUM7T0FDQSxVQUFBLG1DQUFBQztPQUNBLFVBQUEsbUNBQUFDO09BQ0EsVUFBQSxtQ0FBQUM7T0FDQSxXQUFBLG1DQUFBQztPQUNBLFdBQUEsbUNBQUFDOzs7Ozs7Ozs7Ozs7Ozs7O1FBQUFVO1FBREFDO1FBREFDO1FBREFDO1FBREFDO1FBREFDO1FBREFDO1FBREFDO1FBRkFDO1FBREFDO1FBREFDO1FBREFDO09BREY7ZUFDRUE7ZUFDQUQ7ZUFDQUQ7ZUFDQUQ7ZUFFQUQ7ZUFDQUQ7ZUFDQUQ7ZUFDQUQ7ZUFDQUQ7ZUFDQUQ7ZUFDQUQ7ZUFDQUQ7O01BYkY7T0FBQTs7O2lCQWFFLG1DQUFBVjs7Ozs7T0FiRjs7O2lCQVlFLG1DQUFBRDs7Ozs7T0FaRjs7O2lCQVdFLG1DQUFBRDs7O09BWEY7OztpQkFVRSxtQ0FBQUQ7OztPQVZGOzs7aUJBU0UsbUNBQUFEOzs7T0FURjs7O2lCQVFFLG1DQUFBRDs7Ozs7T0FSRjs7O2lCQU9FLG1DQUFBRDs7O09BUEY7OztpQkFNRSxtQ0FBQUQ7Ozs7O09BTkY7OztpQkFJRSxtQ0FBQUQ7OztPQUpGOzs7aUJBR0UsbUNBQUFEOzs7T0FIRjs7O2lCQUVFLG1DQUFBRDs7O09BRkY7OztpQkFDRSxtQ0FBQUQ7OztNQURGLE9BQUE7bURBQUFuTSxVQUFBL0k7O0tBQUEsT0FBQSwrQ0FBQStJLFVBQUEvSTs7YUFBQW1YLFlBQUFwTTs7TUFhRXFNO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BRkFDO01BREFDO01BREFDO01BREFDO01BWUEvVyxNQW5DRnFOLHVCQW1DRStJO01BQUFuVyxtQ0FBQUQ7TUFEQUUsUUE5Q0Z1TCx1QkFrQ0ExQixTQVlFc007TUFBQWxXLHFDQUFBRCxRQUNBRDtNQUZBK087Ozt5QixPQW5ERjVFLHFCQXdDQUw7VUFXRXVNO01BQUFySCxvQ0FBQUQsUUFDQTdPO01BRkE2VyxtQkFWRmpOLFNBVUV3TTtNQUFBVSxrQ0FBQUQsUUFDQS9IO01BRkFpSSxRQTVCRnJJLHFCQW1CQTlFLFNBU0V5TTtNQUFBVyxtQ0FBQUQsUUFDQUQ7TUFGQUcsbUJBUkZyTixTQVFFME07TUFBQVkscUNBQUFELFFBQ0FEO01BRkFHLG1CQVBGdk4sU0FPRTJNO01BQUFhLGdDQUFBRCxRQUNBRDtNQUZBRyxRQWxCRmhILDZCQWtCRW1HO01BQUFjLDJDQUFBRCxRQUNBRDtNQUhBRyx5REFBQWQ7TUFBQWUsK0JBQUFELFFBRUFEO01BSEFHLDZCQUFBZjtNQUFBZ0Isb0NBQUFELFFBQ0FEO01BRkFHLDZCQUFBaEI7TUFBQWlCLGdDQUFBRCxRQUNBRDtNQUZBRyw4QkFBQWpCO01BQUFrQiwrQkFBQUQsU0FDQUQ7S0FGRixzQkFDRUU7O0lBZ0JGLGdCQUFBamE7S0FBQTtLQUFXLCtCQUFYQTtnQkFBWSwrQkFBWkE7S0FBVywrQkFBWEE7Z0JBQW9CLCtCQUFwQkE7MkNBQUFBO0lBQXdCO0lBQXhCLGtCQUFBQztLQUFBLE9BQUEsNkNBQUFBO0lBQXdCO0lBQXhCLFNBQUFpYSxZQUFXQztLQUFYLFNBQVdBO2lCQUFBQTs7OztRQUFBO1NBQUFDO1NBQUFDO1NBQUFDLFdBQUEscUJBQUFEO1NBQUFFLFdBQUEscUJBQUFIO1FBQUEsV0FBQUUsVUFBQUM7Ozs7S0FBQSxPQUFBOzJDQUFYdlEscUJBQVdtUTtJQUFhO2FBQXhCSztLQUFBO01BQVdDO01BQUFDO01BQUFDLCtCQUFBRDtNQUFBRSxnQ0FBQUg7b0JBQUFFLGNBQUFDO0lBQWE7SUFBeEIsU0FBQUMsY0FBVzdaO0tBQVgsVUFBV0EscUNBQUFBO2lCQUFBQTs7Ozs7U0FBQTROO1NBQUEvRjtTQUFBQyw0QkFBQUQ7U0FBQWdHLDRCQUFBRDttQkFBQTlGLE1BQUErRjs7OzswREFBWDVFLGFBQVdqSjtJQUFhO2FBQXhCOFo7S0FBQTtNQUFXbE07TUFBQS9GO01BQUFDLDRCQUFBRDtNQUFBZ0csNEJBQUFEOytCQUFBOUYsVUFBQStGO0lBQWE7YUFFcEJrTSxPQUFTaFcsR0FBSyxXQUFMQSxNQUFBQSxNQUVaO2FBRUdpVyxhQUFnQkMsS0FBS0M7S0FBMEIsT0FBQTtjQUN4Qzs7eUJBQXdCQyxNQUFRLE9BQUEsbUJBTHZDSixPQUsrQkksT0FEZkYsS0FDMEM7Y0FEckNDO0lBRXhCO0lBR0QsZ0JBQUFsYjtLQUFBOzs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTtpQkFBQSxPQUFBLDhCQUFBQTs7O0tBQUEsK0JBQUFBO2dCQU1lLCtCQU5mQTsyQ0FBQUE7SUFPZTtJQVBmLGtCQUFBQztLQUFBLE9BQUEsNkNBQUFBO0lBT2U7SUFQZixTQUFBbWIsWUFBQUM7S0FBQTs7ZUFBQUE7O2VBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FBRUk7O1lBRkosT0FBQTtrREFBQW5SLGtCQUFBbVI7O1dBT0k7O1VBTkE7O1NBSUE7O1FBREE7O09BREE7O2lCQUhKQTs7T0FBQSxPQUFBOzZDQUFBblIsa0JBQUFtUjs7O09BQUEsT0FBQTs2Q0FBQW5SLGtCQUFBbVI7O09BTUlDO2tDQUFBQTs7Ozs7Ozs7Ozs7Ozs7O2lCQUFBQTtpQkFBQUE7aUJBQUFBO2lCQUFBQTtpQkFBQUE7aUJBQUFBOzs7O29CQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7O1lBTkosT0FBQTtrREFBQXBSLGtCQUFBbVI7O2VBTUlFO2NBQUFBLG1CQUFBQTtZQUFBO2FBQUFDLFdBQUFEO2FBQUFFLFdBQUEscUJBQUFEO1lBQUEsV0FBQUM7O1dBQUEsT0FBQTs7b0JBTkp2UjtvQkFNSW9SO29CQU5KRDs7VUFBQSxPQUFBO2dEQUFBblIsa0JBQUFtUjs7U0FBQSxPQUFBOytDQUFBblIsa0JBQUFtUjs7UUFBQSxPQUFBOzhDQUFBblIsa0JBQUFtUjs7T0FBQSxPQUFBOzZDQUFBblIsa0JBQUFtUjs7TUFBQSxPQUFBOzRDQUFBblIsa0JBQUFtUjs7S0FBQSxPQUFBOzJDQUFBblIsa0JBQUFtUjtJQU9lO2FBUGZLO0tBQUE7OztTQUNJOztTQUNBOztTQUNBOztTQUNBOztTQUNBO2lCQUVBOztLQURBLElBQUFDLHFCQUFBQyxXQUFBLHFCQUFBRDtLQUFBLHlCQUFBQztJQUNXO0lBUGYsU0FBQUMsY0FBQTdhO0tBQUEsVUFBQUE7aUJBQUFBOztVQUFBQTtRQUFBLE9BQUEsOENBQUFtSixVQUFBbko7OztrQkFBQUE7O1FBQUEsT0FBQSw4Q0FBQW1KLFVBQUFuSjs7Ozs7YUFBQWtIO1lBQUFBOztvQkFBQTt3REFBQWlDLFVBQUFuSjs7WUFBQWtIO2NBQUFVO2FBQUFBLGlCQUFBQTtXQUFBLElBQUFDLEtBQUFELGdCQUFBRSxPQUFBLHFCQUFBRDtXQUFBLFdBQUFDOztVQUFBLE9BQUE7c0RBQUFxQixVQUFBakMsS0FBQWxIOztZQUFBa0g7O29CQUFBO3dEQUFBaUMsVUFBQW5KOztZQUFBa0g7O29CQUFBO3dEQUFBaUMsVUFBQW5KOztZQUFBa0g7O29CQUFBO3dEQUFBaUMsVUFBQW5KOztZQUFBa0g7O29CQUFBO3dEQUFBaUMsVUFBQW5KOztZQUFBa0g7O29CQUFBO3dEQUFBaUMsVUFBQW5KOzs7O1NBQUEsT0FBQTtxREFBQW1KLFVBQUFuSjs7OztLQUFBLE9BQUEsOENBQUFtSixVQUFBbko7SUFPZTthQVBmOGE7S0FBQTs7O1NBQ0k7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7aUJBRUE7O0tBREEsSUFBQWpULGVBQUFDLE9BQUEscUJBQUFEO0tBQUEsb0NBQUFDO0lBQ1c7O3FCQUdmOUk7Szs7dUJBQVlBO2UsZ0RBQUFBOztjQUFaQTs7dUJBQUFDO0tBQUEsT0FBQSw4Q0FBQUE7SUFBdUI7OzthQUF2QjhiLGFBQUFDO0tBQUEsT0F0Q0FuSiwrQkFzQ0FtSjtJQUF1QjthQUF2QkMsYUFBQUM7S0FBQSxPQXRDQXZJLCtCQXNDQXVJO0lBQXVCO0lBQXZCLFNBQUFDLGVBQUEvTSxHLE9BdENBNkcsaUNBc0NBN0c7YUFBQWdOLGVBQUE5TSxHLE9BdENBNkksaUNBc0NBN0k7O21DQUdBdFA7Szs7dUJBQTBCQTtlLGdEQUFBQTs7Y0FBMUJBOztxQ0FBQUM7S0FBQSxPQUFBLDREQUFBQTtJQUF5Qzs7O2FBQXpDb2MsMkJBQUFDO0tBQUEsT0F6Q0F6SixtQ0F5Q0F5SjtJQUF5QzthQUF6Q0MsMkJBQUFDO0tBQUEsT0F6Q0E3SSxtQ0F5Q0E2STtJQUF5QztJQUF6QyxTQUFBQyw2QkFBQXJOO0ssT0F6Q0E2RyxxQ0F5Q0E3Rzs7YUFBQXNOLDZCQUFBcE47SyxPQXpDQTZJLHFDQXlDQTdJOzthQUVJcU4sSUFBTzVYLEdBQVU2WDtLQUF1QjthQUFqQzdYO2FBQUFBO01BdUJPLFdBQ0wsMENBeEJGQTthQUFBQTtNQWdCTDtRQUFBO1VBQ0c7O3FCQUFTOFg7YUFBYyxXQUFkQTthQUFjO3FCQUViLDBDQUZEQTs7WUFLUjs7TUFSSyxPQUFBLFdBZE1ELEdBQVY3WDthQUFBQTthQUFBQTtNQVNLLFdBQ0gsV0FWUTZYLEdBQVY3WDtNQVFPLE9BQUEsV0FSRzZYLEdBQVY3WDtNQU9FLE9BQUEsV0FQUTZYLEdBQVY3WDtLQUFpQzthQUFqQ0E7YUFBQUE7YUFBQUE7YUFBQUE7YUFBQUE7Ozs7Ozs7O0lBNkJWOztvQkFHRC9FO0s7O3VCQUFXQTtlLGdEQUFBQTs7Y0FBWEE7O3NCQUFBQztLQUFBLE9BQUEsNkNBQUFBO0lBQXNCOzs7YUFBdEI2YyxZQUFBQyxPQUFBLE9BM0VBbEssK0JBMkVBa0ssT0FBc0I7YUFBdEJDLFlBQUFDLE9BQUEsT0EzRUF0SiwrQkEyRUFzSixPQUFzQjtJQUF0QixTQUFBQyxjQUFBOU4sRyxPQTNFQTZHLGlDQTJFQTdHO2FBQUErTixjQUFBN04sRyxPQTNFQTZJLGtDQTJFQTdJOztzQkFHQXRQLEtBQUFDO0tBQUEsK0JBQUFEO0tBQUEsK0JBQUFBO2dCQUFBQztLQUFBLG9EQUFBRDtLQUFBLCtCQUFBQTtLQUFBLCtCQUFBQTtLQUFBLCtCQUFBQTtnQkFBQUM7S0FBQSxvREFBQUQ7S0FBQSwrQkFBQUE7S0FBQSxPQUFBLCtCQUFBQTtJQUdDO3dCQUhEQztLQUFBLE9BQUEsK0NBQUFBO0lBR0M7O2FBSERtZCxjQUFBQztLQUFBLE9BQUE7O2NBQUFqVDs7OztlQWxEQWdSO2lDQStDQTBCOztlQUdBO2NBR0M7OztlQUhELElBRUVRLG1CQURBQztlQURGLFdBQ0VBLEtBQ0FEO2NBQ0Q7Y0FIREQ7SUFHQzthQUhERztLQUFBO01BRUVDO01BREFDO01BQ0FDLFVBTEZYLFlBS0VTO01BRkZHLGlDQUVFRDtNQURBRSxVQW5ERm5DLFlBbURFZ0M7TUFERkksbUNBQ0VELGVBREZEO0tBQUEsV0FBQUU7SUFHQzthQUhEQyxnQkFBQS9jO0tBQUEsVUFBQUEscUNBQUFBO01BQ0U7T0FERkMsZ0JBQUFEO09BQ0VnZDtPQUNBQztPQUZGN2M7T0FBQUM7ZUFBQUo7TUFBQTs7O1FBQUFLOztRQUFBQztRQUFBQztVQUFBQTtXQUFBQTtTQUFBO1dBQUE7O1VBQUFIO2VBQUFHLFlBQUEsbUNBQUFIOztnQkFDRSxtQ0FBQTJjO1NBREY1YztjQUFBSSxZQUNFLG1DQURGSjs7U0FDRSxJQUFBSyxTQW5ERm9hLGNBa0RBdGE7U0FDRXljLG1CQUFBdmM7O2VBQ0EsbUNBQUF3YztRQUZGN2M7YUFBQUksWUFFRSxtQ0FGRko7O1FBRUUsSUFBQU0sV0FMRndiLGNBR0EzYjtRQUVFMGMsbUJBQUF2Yzs7ZUFGRko7O1NBQUEsbUNBQUFGO09BQUEsV0FBQSxtQ0FBQUE7T0FBQSxPQUFBO29EQUFBaUosZ0JBQUFySjs7U0FBQSxtQ0FBQUs7T0FBQSxXQUFBLG1DQUFBQTtPQUFBLE9BQUE7b0RBQUFnSixnQkFBQXJKOztNQUNFO09BQUEsVUFBQSxtQ0FBQWdkO09BQ0EsVUFBQSxtQ0FBQUM7O1dBQUFDLHdCQURBQztPQURGLFdBQ0VBLFdBQ0FEOztNQUZGO09BQUE7OztpQkFFRSxtQ0FBQUQ7OztPQUZGOzs7aUJBQ0UsbUNBQUFEOzs7TUFERixPQUFBO21EQUFBM1QsVUFBQXJKOztLQUFBLE9BQUEsK0NBQUFxSixVQUFBcko7SUFHQzthQUhEb2Q7S0FBQTtNQUVFQztNQURBQztNQUNBdGMsTUFMRm1iLGNBS0VrQjtNQUFBcGMsMEJBQUFEO01BREFFLFFBbkRGNFosY0FtREV3QztNQUFBbmMsNEJBQUFELFFBQ0FEO0tBRkYsc0JBQ0VFO0lBRUQ7YUFFR29jLG9CQUFlLElBQUVqQixnQkFBWSxPQWhFN0J2QyxPQWdFaUJ1QyxLQUF1Qjs7aUNBRzVDdGQ7S0FBQSxJQUE4QndlO0tBQU4sK0JBQXhCeGU7eURBQUFBO0tBQXdCLCtCQUF4QkE7S0FBOEIsK0JBQTlCQTtLQUE4Qjs7Z0JBQUFHLEtBQUFGO1FBQUEsR0FBQUUsS0FBQSwrQkFBOUJIO2lCQUE4QkMsV0FBQUE7UUFBSywrQkFBbkNEOzREQUFBQTtRQUFtQywrQkFBbkNBOzREQUFBQTt1Q0FBQUE7UUFBOEI7T0FBK0I7O09BQS9Cd2U7S0FBQSwrQkFBOUJ4ZTsyQ0FBQUE7SUFBOEQ7bUNBQTlEQztLQUFBLE9BQUEsMERBQUFBO0lBQThEOzs7YUFBOUR3ZSx5QkFBd0JDO0tBQXhCLFNBQXdCQTtpQkFBQUE7Ozs7UUFBQTtTQUFBQztTQUFBQztTQUFBQyxXQTFEeEJ6RCxZQTBEd0J3RDtTQUFBRTtXQUFBOztzQkFBV0M7Y0FBTCxTQUFLQTswQkFBQUE7Ozs7aUJBQUE7a0JBQUFDO2tCQUFBQztrQkFBQUMsV0ExRG5DOUQsWUEwRG1DNkQ7a0JBQUFFO29CQUFBLDBDQUFBSDtpQkFBQSxXQUFBRSxVQUFBQzs7OztjQUFBLE9BQUE7b0RBQW5DN1UscUJBQW1DeVU7YUFBMEI7YUFBckNKO1FBQUEsV0FBQUUsVUFBQUM7Ozs7S0FBQSxPQUFBOzJDQUF4QnhVLHFCQUF3Qm9VO0lBQXNDO2FBQTlEVTtLQUFBO01BQXdCQztNQUFBQztNQUFBQyxXQTFEeEI3RCxZQTBEd0I0RDtNQUFBRTs7Ozs7WUFBV0M7WUFBQUM7WUFBQUMsV0ExRG5DakUsWUEwRG1DZ0U7WUFBQUUscURBQUFIOzBCQUFBRSxjQUFBQzs7VUFBWFA7b0JBQUFFLGNBQUFDO0lBQXNDO2FBQTlESywyQkFBd0I3ZTtLQUF4QixVQUF3QkEscUNBQUFBO2lCQUFBQTs7Ozs7U0FBQTROO1NBQUEvRjtTQUFBQyxPQTFEeEIrUyxjQTBEd0JoVDtTQUFBZ0c7OztzQkFBVzdOO2MsVUFBQUEscUNBQUFBOzBCQUFBQTs7Ozs7a0JBQUE0TjtrQkFBQS9GO2tCQUFBQyxPQTFEbkMrUyxjQTBEbUNoVDtrQkFBQWdHLGlEQUFBRDs0QkFBQTlGLE1BQUErRjs7Ozs7MERBQW5DdEUsYUFBbUN2Sjs7YUFBWDROO21CQUFBOUYsTUFBQStGOzs7OzBEQUF4QnRFLGFBQXdCdko7SUFBc0M7YUFBOUQ4ZTtLQUFBO01BQXdCbFI7TUFBQS9GO01BQUFDLE9BMUR4QmdULGNBMER3QmpUO01BQUFnRzs7Ozs7WUFBV0Q7WUFBQS9GO1lBQUFDLE9BMURuQ2dULGNBMERtQ2pUO1lBQUFnRyxpREFBQUQ7cUNBQUE5RixVQUFBK0Y7O1VBQVhEOytCQUFBOUYsVUFBQStGO0lBQXNDO2FBRTFEa1I7S0FDRixJQUFPekMsZ0JBQUxDO2VBQUFBO2FBQUFBOztnQkFBS0Q7O2dCQUFBQTs7Z0JBQUFBOztnQkFBQUE7O2dCQUFBQTt3QkFBQUE7O1NBT1EwQyxJQVBiekM7S0FPbUIsT0FBQSwyQkFQZEQsU0FPUTBDO0lBRVo7YUFFREMsV0FBK0JDLE9BQWNDO0tBQWhDLElBQU83QyxNQUFXNEMsVUFBaEIzQyxNQUFnQjJDO2VBQWhCM0M7YUFBQUE7O1NBRUo7aUJBRm9CMkM7O2tCQUFYNUM7a0JBQUFBO2tCQUFBQTtrQkFBQUE7a0JBQUFBO2tCQUF5QjZDO2tCQUF6QjdDO2tCQUFBQTtrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBQUE7O1NBU0w7aUJBVGdCNEM7O2tCQUFYNUM7a0JBQUFBO2tCQUFBQTtrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBeUI2QztrQkFBekI3QztrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBQUE7O1NBMkJSO2lCQTNCbUI0Qzs7a0JBQVg1QztrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBQUE7a0JBQXlCNkM7a0JBQXpCN0M7a0JBQUFBO2tCQUFBQTs7U0E4Q0w7aUJBOUNnQjRDOztrQkFBWDVDO2tCQUFBQTtrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBQUE7a0JBQUFBO3NCQUF5QjZDLFFBQXpCN0M7a0JBQUFBOztvQkFBQUE7U0FpQkE7aUJBakJXNEM7O2tCQUFYNUM7a0JBQUFBO2tCQUFBQTtrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBQUE7c0JBQXlCNkM7a0JBQXpCN0M7a0JBQUFBO2tCQUFBQTtrQkFBQUE7O0tBeUNaO01BUEc4QyxJQWxDSTdDO2FBQUtEO2FBQUFBO2FBQUFBO01BeUNaLFdBekNxQzZDLFFBeUNqQywyQkF6Q1E3QyxTQWtDVDhDO01BS0wsT0FBQSw4QkFMS0E7S0FBTTthQWxDY0Y7O2NBQVg1QztjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTtjQUFBQTs7OztJQXdEckI7YUFFQytDO0tBQVU7TUFBRS9DO01BU1osV0FUWUE7TUFRWjtRQUFBOzttQkFBU1QsWUFBYyxPQUFkQSxjQUE2QjtVQVIxQlM7TUFRWixPQUFBO0tBQUEsT0FBQTs7O2VBUllBO21CQUFBQSxZQUFBQSxlQUFBQSxlQUFBQTs7SUFTWTthQUV4QmdEO0tBQW1CO01BQUVoRDtNQUVyQjtRQUFBO29DQUFXMEMsVUFBUyxXQUFUQSxHQUFzQixHQUZaMUM7TUFFckIsT0FBQTtLQUFBLE9BQUE7SUFDYTthQUViaUQsbUJBQXFCTDtLQUN2QixJQUFzQyxPQWpCcENHLFFBZ0JxQkgsUUFDVixPQU5YSSxpQkFLcUJKO0tBQ2UsT0FBQTtJQUFlO2FBRW5ETSxXQUFjakQsS0FBS3hZO0tBQ3JCLFVBRGdCd1k7YUFBQUE7O1NBRUg7O1NBQ0k7O1NBRVE7O1NBREg7O1NBRVI7NEJBT08sMkJBYkF4WTs7U0FPUmliLElBUEd6QztZQU9IeUMsSUFDSCwyQkFSV2piO21CQU9SaWI7ZUFHSjtJQUlSO2FBRUNTLFdBQWMxYixHQUFhMmI7S0FDN0IsT0FENkJBO2tCQUFBQTtnQkFBQUE7dUJBVU4sMkJBVlAzYjtzQkFBYTJiO2tCQUFBQTsyQkFZTCwyQkFaUjNiOztvQkFjUDtnQkFOTTtZQVJjMmI7O1FBRXRCOztRQUNBOztRQUNBOztRQUNBO2dCQUNBOztJQVdOO2FBRUNDLGNBQWtCcEQsS0FBS3FELGlCQUFrQkM7S0FDM0MsR0FEeUJELGlCQU9sQixXQVBhckQsS0FBdUJzRDtlQUF2QnRELHdCQUFBQSxLQUtYLFdBTFdBLEtBQXVCc0Q7S0FJdEIsT0FKc0JBO0lBUzFDO2FBRUNDLGVBQWlCQztLQUNaLFlBQUEscUNBRFlBO2lCQUVULE9BQUE7U0FDSEM7S0FBVyxPQUFYQTtJQUVSO2FBRUdDO0tBaUJjO01BSFpqTztNQURBQztNQURBQztNQURBQztNQURBQztNQURBQztNQURBQztNQURBQztNQURBQztNQURBdkk7TUFEQXdJO01BREFDO01BY0V3TixZQXhCSkosZUFlRXhOO01BVUU2TixpQkF6QkpMLGVBZ0JFek47TUFXSTFHLFFBM0JObVUsZUFpQkUxTjtNQVNFZ08sbUJBQ0V6VSxPQVZKeUcsZUFBQUE7TUFhRWlPLGNBOUJKUCxlQWtCRTNOO01BYUVtTztRQUNGOzttQkFDR3ZlO1dBQUQ7WUFBYXNJO1lBQU5DO1lBQ0RpVyxTQWxDVlQsZUFpQ1d4VjtXQUVDLE9BQUEsdUJBRlB2SSxhQUNLd2UsUUFET2xXO1VBR1o7O1VBakJINkg7TUFzQll4RyxRQXJCWnVHO01BcUJLdU8sVUFyQkx2TztNQXNCSXdPLFVBMUNOWCxlQXlDT1U7TUFESEUscUJBRUVELFNBRFEvVTtLQUlkO2FBbkNFZ0g7YUFDQUQ7YUFDQXhJO2FBQ0F1STthQUNBRDthQVVFMk47YUFDQUM7YUFDQUM7YUFJQUM7YUFDQUM7YUFTQUk7YUFuQkYxTzs7YUF3Q0YyTyxtQkFnQkdDO0tBRU07TUFKTDVPO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREF2STtNQURBd0k7TUFEQUM7O01BaUJGd04sWUFGTyxvQkFWTDVOLFNBUURzTztNQUtEVCxpQkFITyxvQkFUTDlOLGNBT0R1TztNQU9DSCxVQUxLLG9CQVJMck8sZUFNRHdPO01BTURSLG1CQUNFSyxTQWJBck8sZUFBQUE7TUFnQkZpTyxjQVJPLG9CQVBMbE8sV0FLRHlPO01BV0ROO1FBQ0Y7VUFDRzs7O2FBQVM7Y0FBUWpXO2NBQU5DO2NBQ0xpVyxTQVpBLG9CQVdLalcsTUFiWHNXO2FBZUUsV0FESUwsUUFEV2xXO1lBR2hCO1VBcEJBNkg7TUFzQlF4RyxRQXJCUnVHO01BcUJDdEcsUUFyQkRzRztNQXNCQXVPLFVBakJLLG9CQWdCSjdVLE9BbEJGaVY7TUFpQkRGLHFCQUVFRixTQURROVU7S0FJZDthQW5DTWdIO2FBQ0FEO2FBQ0F4STthQUNBdUk7YUFDQUQ7YUFhRjJOO2FBQ0FDO2FBQ0FDO2FBSUFDO2FBQ0FDO2FBTUFJO2FBbkJFMU87O2FBNkdKNk8sb0JBQW1DM0IsT0FBYzRCO0tBQTNCO01BQUV4RSxNQUFXNEM7YUFBWDVDO2FBQUFBO2FBQUFBO2FBQUFBO2FBQUFBO2FBQUFBO01BSWYsT0FBQSxpQ0FKZUEsWUFBeUJ3RTtLQUFtQjthQUFqQzVCOztjQUFYNUM7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7Ozs7Ozs7O0lBTTNCO2FBRUd5RSxXQUFjeEUsS0FBTXFEO0tBQW9CLFVBQTFCckQ7YUFBQUE7O1NBRUgsT0FGU3FEOztTQUdMLE9BSEtBOztTQUlHOztTQUNIOztTQUNSO2lCQUVHLE9BUktBOztLQU9ILE9BUEdBO0lBVXZCO2FBRUdvQixjQUNDN0csTUFBT3lGLGlCQUF3QmdCO0tBQ3hCLElBQU50RSxNQWpKRnFFLFlBZ0pDeEcsTUFBK0J5RztLQUVsQyxPQXZCRUMsMkJBc0JFdkUsTUFETXNEO0lBR1g7YUFFR3FCLDBCQUNhL0IsT0FBZVU7S0FBNUI7TUFBRXJELE1BQVcyQztNQUViLE9BdFFBSyxtQkFvUWFMO01BRWI7UUFBQTtVQUNHOzs7YUFBWSxJQUFFM0M7YUFBWSxPQXRCN0J3RSxXQXNCaUJ4RSxLQUhXcUQ7WUFHa0M7O01BRjVEc0I7UUFDRjtVQUVHOzs7YUFBUyxJQUFPL0IsbUJBQUw1QzthQUFpQjtxQkFBakJBO3FCQUNILDBDQURRNEM7WUFFZjs7S0FDTixXQVBJNUMsS0FDQTJFO0lBT0w7YUFFR0MsdUJBR0doSCxNQUNBeUYsaUJBQ0FnQjtLQUpILElBQ1FRLCtCQUFMN0U7Y0FNRDhFLE9BQVU5RSxLQUFLK0U7TUFDakIsS0F0Q0FQLFdBcUNZeEUsS0FKVHFEO09BR1EsT0FBQSxvQ0FDTTBCLFdBSGRWO01BS3NCO09BQW5CVyxtQkFBbUIsNEJBRmJoRixLQU5KNkU7T0FTRnBCLFNBQVMsMENBRFR1QjtNQUVKLE9BQUEsb0NBREl2QixRQU5IWTtLQVVGO0tBQ1c7TUFBVnRPLFVBUkErTyxVQUxDbEg7TUFjRDlILGVBVEFnUCxVQUxDbEg7TUFlRHFILG1CQVZBSCxVQUxDbEg7TUFnQkRoSSxZQVhBa1AsVUFMQ2xIO01BaUJHakk7UUFDTjs7O1lBQ0U7YUFBc0Q3SDthQUFOQzthQUEzQzRIO2FBQUg4TTthQUNJdUIsU0FmTmMsV0FjRXJDLElBQThDMVU7WUFFOUM7b0JBRkEwVTtvQkFFUTtrQ0FGTDlNLHFCQUNDcU8sUUFEZ0RsVztXQUdyRDs7V0F0QkE4UDs7TUEwQkRzSCxxQkFyQkFKLFVBTENsSDtLQTRCTCxPQXBFRTBHOztlQXVDR3RFOztnQkFDQXBDO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFhRDdIO2dCQUNBRDtvQkFDQW1QLGtCQWZDckgsWUFBQUE7Z0JBZ0JEaEk7Z0JBQ0lEO29CQVNKdVAsb0JBMUJDdEg7Z0JBQUFBO2NBQ0F5RjtJQXNETjthQWNHOEIsWUFBZUMsS0FBMEJDO0tBR3ZDOzs7YUFIYUQ7aUJBS3FCO1NBTEtDO0tBQzNDLGVBT1E7SUFDUDthQUVDQyxRQUFXMUM7S0FDYixPQUFBLG1DQURhQTtJQUN3QzthQUVuRDJDLFFBQVdDLEtBQWVDLEtBQWVDO0tBQzNDO01BRUUsT0FOQUosUUFHeUNJO01BRUwsT0FMcENKLFFBRzBCRztNQUVKLE9BTHRCSCxRQUdXRTtNQUVYLE9BQUE7S0FDQSxPQUFBO0lBQ0Q7YUFFQ0c7S0FBYztNQUFFNUY7TUFDZDZGLGFBUEZMLFFBTWdCeEYsUUFBQUEsUUFBQUE7TUFJWjhGLGlCQXhCSlYsZUFXQUcsUUFTZ0J2RjtNQU1aK0YsZUExQkpYLGVBV0FHLFFBU2dCdkY7TUFHZGdHO1FBS0Ysb0NBRklELGNBRkFEO01BTUZHLHVCQWhCRlQsUUFNZ0J4RixRQUFBQSxRQUFBQTtNQWFzQixPQXRCdEN1RixRQVNnQnZGO01BWWRrRztRQUNGLG9DQVZFRjtNQVlvQyxPQXhCdENULFFBU2dCdkY7TUFjZG1HO1FBQ0Ysb0NBWkVIO0tBYUo7YUFOSUM7YUFQQUQ7YUFTQUU7YUFYQUw7YUFBQUE7YUF1QkE7O3dCQUNHL1QsR0FDQyxPQWhDTjBULFFBTWdCeEYsUUF5QlhsTyxNQXpCV2tPLFdBMEJ3QztlQTFCeENBO2FBY2RtRztJQWlCTDtJQUNpQixJQUFkQyxnQkFBYywrQkFoQ2RSO2FBeUNBUyxjQUNDL0IsVUFBMEJ4UztjQUV6QndVLEdBQU1oQjtNQUVPO09BQVhpQjtTQUFXO2tDQUpkakMsa0NBRU9nQjtNQUdSO2NBSFFBO2NBRUppQjtjQUNjLG9DQURkQTtLQUVMO0tBQ2dCO01BQWJWLGFBTEFTLEdBRnlCeFU7TUFlYixPQWJad1UsR0FGeUJ4VTtNQWNkLE9BQUEsNEJBWlh3VSxJQUZ5QnhVO01BV2YsT0FUVndVLEdBRnlCeFU7TUFVaEIsT0FSVHdVLEdBRnlCeFU7S0FRN0IsV0FOSXdVLEdBRnlCeFUsbUJBT3pCK1QsWUFBQUE7SUFVTDtJQUVtQixJQUFoQlcsa0JBQWdCLCtCQXBCaEJIO2FBMkJBSSxnQkFBa0IzRDtLQUF1QixXQUFBLHVCQUF2QkE7S0FBdUIsT0FBQTtJQUFnQjthQUd6RDRELGdCQUFtQjlEO0tBQ3JCLFlBRHFCQTs7OztTQVZILE9BRWhCMVY7O2dCQUlBSTs7Z0JBSEFIOztnQkFFQUU7O2dCQURBRDtpQkFHa0IsT0FDbEJHOztTQVNXNlY7S0FBUSxPQVZuQnFELGdCQVVXckQ7SUFFWjthQUVDdUQsY0FDQ3JDLFVBQTBCMUI7S0FDWTtNQVV2QztRQUFBO1VBakNBNEQsaUJBc0JDbEMsVUFXdUIsV0E5RHhCOEIsZUFtRDJCeEQ7TUFTM0JqTjtNQURBQztNQURBaVE7TUFGQWU7TUFEQUM7TUFEQTdTO0tBU0YsU0FBSThTLEtBQVFDO01BQ1YsT0FERixtQ0FaR3pDLFVBWVN5QyxNQUFBQTtLQUN3QztLQVFsRDtNQUFBO1FBQUE7VUFFRzs7cUJBQVdqRSxHQUFHa0U7YUFDUyxXQVp4QkYsS0FXZUU7YUFDWixXQXZDTFAsZ0JBc0NjM0Q7WUFDNkI7VUFoQjNDbE47cUJBdEJBckksa0JBMEJFdVosS0FIRm5SO3FCQXpCQXJJLGdCQTRCRXdaLEtBTEZqQjtxQkF4QkF4WSxnQkE2QkV5WixLQVBGRjtxQkF2QkF4WixlQThCRTBaLEtBUkZEO01BVUYsZUFqQ0UxWixxQkErQkUyWixLQVRGOVM7S0FrQkEsT0FBQTtJQU1IO0lBT2dCLElBQVhpVDthQUNBQyxhQUFnQkMsU0FBdUMsV0FBdkNBLFlBR25CO0lBVG1CLHVCQUtoQkYsT0FDQUM7YUFNRkUsNEJBQ0N4RSxPQUFjbUU7S0FDakIsWUFER25FOzs7O2dCQUFjbUU7O2dCQUFBQTs7Z0JBQUFBOztnQkFBQUE7O2dCQUFBQTt3QkFBQUE7O1NBT0ozRDtLQUFRLE9BQUEsMkJBUEoyRCxNQU9KM0Q7SUFFWjthQWtFQ2lFLGVBRUUvQyxVQUNBMUIsT0FDQTNmO0tBR0osR0FMSXFoQixlQUFBQTtNQS9DRjtPQUFBO1NBQUE7V0E5RkFrQyxpQkE2SUVsQyxVQS9Dc0IsV0EzSHhCOEIsZUEyS0V4RDtPQWxERmpOO09BREFDO09BREFpUTtPQURBN1A7T0FEQTRRO09BREFDO09BREE3UztPQVNFc1Q7a0JBQVkzSjtVQUNkLEtBK0NFMWEsU0E5Q1E7VUFFUjtXQURLc2tCLFlBNkNMdGtCO1dBNUNBLE9BQUEsdUNBREtza0IsV0FITzVKO1VBSVosT0FBQTtTQUVEO09BRUM2SjthQWpCRnhULGlCQVNFc1QsVUE1RkZuYTtPQTBHRXNhLGtCQXRCRlosV0FRRVMsVUEzRkZsYTtPQTRHRXNhLG1CQXhCRmQsWUFPRVUsVUExRkZqYTtPQTZHRXVXLGdCQXpCRjVOO09BMEJFMlIsbUJBekJGOUIsWUFLRXlCLFVBekZGaGE7T0ErR0UwVztTQUNGOztvQkFDR2xCLEdBQUdxRTtZQUNGLFdBREVBLFNBeEJKRyxVQXhGRmIsZ0JBZ0hHM0Q7V0FDOEQ7V0E3QmpFbE47T0FnQ0V3TyxxQkEvQkZ6TyxjQUdFMlIsVUF2RkYvWjtNQXdIRjtjQXpCSWlhO2NBTUFDO2NBR0FDO2NBRUE5RDtjQUNBK0Q7Y0FFQTNEO2NBTUFJOztRQWtCQUU7TUFRTTtPQUFKeFM7U0FBSTtXQXJKUjBVLGlCQTZJRWxDLFVBUThCLFdBbExoQzhCLGVBMktFeEQ7T0FlYyxPQUFBLDRCQVJaOVE7T0FPVyxPQUFBLDZDQVBYQTtPQUtVLE9BQUEsNEJBTFZBO09BTU8sT0FBQSw0QkFOUEE7T0FJVSxPQUFBLDRCQUpWQTtPQUdTLE9BQUEsNEJBSFRBO01BQ0o7Y0FDbUIsNEJBRmZBOzs7Ozs7OztLQWtCVTs7TUFBQSxPQUFBLDJCQXpCWjhRO01BeUJFO1FBQUE7aURBQ0UsdUJBQWtCO0tBVG5COzs7Ozs7OztJQWFOO0lBQ2tCLElBQWpCZ0YsbUJBQWlCLCtCQWxDakJQO2FBc0NBUSxVQUFhbmxCLEtBQUttZ0I7S0FBcUI7TUFDckNhLFNBRGdCYjtNQUVoQmlGLGdCQUFnQixnQ0FEaEJwRTtLQUdKLE9BQUEsOEJBSmVoaEIsS0FFWG9sQjtJQUdMO2FBRUdDLGNBQWlCcGE7S0FBRDtNQUFlcVM7TUFJNUI7UUFBQTs7TUFEQSxPQUFBLHVCQUhjclM7TUFDZjVCLFNBQ0Y7TUFJRWljLGdCQWJGSCxXQU8rQjdIO01BT1osT0FBQSx1QkFEakJnSTtNQUNBQyxPQUFPLHVCQU5QbGM7S0FPSixPQURJa2M7SUFFTDthQUVHQyx3QkFBMkJ4bEIsS0FBS21nQjtLQUFxQjtNQUNuRGEsU0FEOEJiO01BRTlCWSxPQUFPLGtDQURQQztNQUVnQyxPQUFBLDhCQURoQ0Q7TUFDZ0MsT0FBQTtNQUFSLE9BQUE7S0FBQSxPQUFBLDhCQUhDL2dCO0lBSTlCO2FBRUd5bEIsNEJBQStCeGE7S0FBRDtNQUFlcVM7TUFJMUM7UUFBQTs7TUFEQSxPQUFBLHVCQUg0QnJTO01BQzdCNUIsU0FDRjtNQUlFaWMsZ0JBWkZFLHlCQU02Q2xJO01BTzFCLE9BQUEsdUJBRGpCZ0k7TUFDQUMsT0FBTyx1QkFOUGxjO0tBT0osT0FESWtjO0lBRUw7YUFFR0csc0JBQXlCemE7S0FBRDtNQUFlcVM7TUFDckNxSSxTQXYxQkozYSxzQkFzMUIyQkM7TUFHdkJxYSxnQkF0Q0ZILFdBbUN1QzdIO01BSVYsT0FBQSx1QkFEM0JnSTtNQUNpQixPQUFBLHVCQUZqQmpjO01BRUFrYyxPQUFPLHVCQUhQSTtLQUlKLE9BRElKO0lBRUw7YUFFR0s7S0FFR2xTO0tBQ0F6STtLQUNBc0k7S0FDQXNTO0tBQ0FDO0tBQ0FDO0tBQ0U7TUFDSHpTLFVBQVU7TUFDVkQsZUFBZTtNQUNmbVAsbUJBQW1CO01BQ25CclAsWUFBWTtNQUNaRDtRQUNGOztVQVBHNlM7bUJBU0QvRjtXQUFLO1lBQ0NnQixTQUFTO1lBQ3lCLE9BQUEsdUJBRnhDaEI7V0FFRSxXQURJZ0IsUUFDaUI7VUFDdEI7TUFFRHlCLHFCQUFxQjtLQUN6QjthQXBCSy9POzthQUNBekk7O2FBQ0FzSTthQUtERDthQUNBRDtpQkFDQW1QLGtCQU5DcUQsZ0JBQ0FDO2FBTUQzUzthQUNBRDtpQkFRQXVQOztJQXNCTDs7Z0NBS0R6aUIsS0FBQUM7S0FBQSwrQkFBQUQ7S0FBQSwrQkFBQUE7Z0JBQUFDO0tBQUEsb0RBQUFEO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO0tBQUEsK0JBQUFBO1NBRWlCRSxNQUZqQkQ7S0FFaUIsK0JBRmpCRDtLQUVpQjs7Z0JBQUFHLEtBQUFGO1FBQUEsR0FBQUUsS0FBQSwrQkFGakJIO2lCQUVpQkMsV0FBQUE7UUFBSywrQkFGdEJEOzREQUFBQTtRQUVzQiwrQkFGdEJBOzREQUFBQTt1Q0FBQUE7UUFFaUI7T0FBNkI7O09BQTdCRTtLQUFBLCtCQUZqQkY7S0FBQSwrQkFBQUE7S0FBQSxPQUFBLCtCQUFBQTtJQUdDO2tDQUhEQztLQUFBLE9BQUEseURBQUFBO0lBR0M7OzthQUhEK2xCLHdCQUFBQztLQUFBOzs7OztTQWgxQkEvTDs7OztVQWcxQkE7O3FCQUVzQmdNO2FBQUwsU0FBS0E7eUJBQUFBOzs7O2dCQUFBO2lCQUFBQztpQkFBQUM7aUJBQUFDLFdBbDFCdEJuTSxZQWsxQnNCa007aUJBQUFFLFdBN3dCdEI3SCx5QkE2d0JzQjBIO2dCQUFBLFdBQUFFLFVBQUFDOzs7O2FBQUEsT0FBQTttREFGdEJ4YixxQkFFc0JvYjtZQUF3Qjs7S0FGOUMsT0FBQTs7Y0FBQXBiOzs7ZUFBQTs7O2NBR0M7OztlQUhELElBRUV5Yiw2QkFEQUM7ZUFERixXQUNFQSxjQUNBRDtjQUNEO2NBSEROO0lBR0M7YUFIRFE7S0FBQTtNQUVFQztNQURBQztNQUNBQztRQUFBOzs7O1lBQW9CQztZQUFBQztZQUFBQyxXQWwxQnRCdk0sWUFrMUJzQnNNO1lBQUFFLFdBN3dCdEI1SCx5QkE2d0JzQnlIOzBCQUFBRSxjQUFBQzs7VUFBcEJOO01BRkZPLGlDQUVFTDtNQURBTSxVQWoxQkYxTSxZQWkxQkVtTTtNQURGUSxtQ0FDRUQsZUFERkQ7S0FBQSxXQUFBRTtJQUdDO2FBSERDLDBCQUFBcG1CO0tBQUEsVUFBQUEscUNBQUFBO01BQ0U7T0FERkMsZ0JBQUFEO09BQ0VxbUI7T0FDQUM7T0FGRmxtQjtPQUFBQztlQUFBSjtNQUFBOzs7UUFBQUs7O1FBQUFDO1FBQUFDO1VBQUFBO1dBQUFBO1NBQUE7V0FBQTs7VUFBQUg7ZUFBQUcsWUFBQSxtQ0FBQUg7O2dCQUVFLG1DQUFBaW1CO1NBRkZsbUI7Y0FBQUksWUFFRSxtQ0FGRko7OztVQUVFSzs7O3VCQUFvQlQ7ZSxVQUFBQSxxQ0FBQUE7MkJBQUFBOzs7OzttQkFBQTROO21CQUFBL0Y7bUJBQUFDLE9BbDFCdEIrUixjQWsxQnNCaFM7bUJBQUFnRyxPQTd3QnRCZ1IsMkJBNndCc0JqUjs2QkFBQTlGLE1BQUErRjs7Ozs7MkRBRnRCOUQsYUFFc0IvSjs7Y0FGdEJPO1NBRUUrbEIsNkJBQUE3bEI7O2VBREEsbUNBQUE0bEI7UUFERmptQjthQUFBSSxZQUNFLG1DQURGSjs7UUFDRSxJQUFBTSxXQWoxQkZtWixjQWcxQkF0WjtRQUNFOGxCLDRCQUFBM2xCOztlQURGSjs7U0FBQSxtQ0FBQUY7T0FBQSxXQUFBLG1DQUFBQTtPQUFBLE9BQUE7b0RBQUEySixnQkFBQS9KOztTQUFBLG1DQUFBSztPQUFBLFdBQUEsbUNBQUFBO09BQUEsT0FBQTtvREFBQTBKLGdCQUFBL0o7O01BQ0U7T0FBQSxVQUFBLG1DQUFBcW1CO09BQ0EsVUFBQSxtQ0FBQUM7O1dBQUFDLGtDQURBQztPQURGLFdBQ0VBLG9CQUNBRDs7TUFGRjtPQUFBOzs7aUJBRUUsbUNBQUFEOzs7OztPQUZGOzs7aUJBQ0UsbUNBQUFEOzs7OztNQURGLE9BQUE7bURBQUF0YyxVQUFBL0o7O0tBQUEsT0FBQSwrQ0FBQStKLFVBQUEvSjtJQUdDO2FBSER5bUI7S0FBQTtNQUVFQztNQURBQztNQUNBM2xCOzs7OztZQUFvQjRNO1lBQUEvRjtZQUFBQyxPQWwxQnRCZ1MsY0FrMUJzQmpTO1lBQUFnRyxPQTd3QnRCaVIsMkJBNndCc0JsUjtxQ0FBQTlGLFVBQUErRjs7VUFBcEI2WTtNQUFBemxCLG9DQUFBRDtNQURBRSxRQWoxQkY0WSxjQWkxQkU2TTtNQUFBeGxCLHFDQUFBRCxRQUNBRDtLQUZGLHNCQUNFRTtJQUVEO2FBRUd5bEIsbUJBQXNCL0csVUFBV0Q7S0FDbkM7O1FBanhCRnhCO1VBMlZJNkMsMEJBcWJzQnBCLFVBQVdEO0tBQ25DLE9BQUE7SUFHRDthQUVHaUgscUJBQXdCdEMsTUFBT3BLLE1BQU95RjtLQUN4QyxXQXZ4QkZuQyx5QkF1eEJFLDZCQUQwQjhHO0tBQzFCO00sT0FqYkVwRCxzQkFnYitCaEgsTUFBT3lGO0lBS3pDO2FBRUdrSCw0QkFBOEJ2QztLQUFRLE9BbEIxQ1Msd0JBbUJFLDZCQURnQ1Q7SUFFakM7SUEvNUJzQzs7O1lBRXZDcmE7WUFBQUs7WUFBQU87WUFBQU07OztZQU1BRztZQUFBSztZQUFBUTtZQUFBSzs7O1lBTUFHO1lBQUFDO1lBQUFDO1lBQUFDOzs7WUFHQUM7WUFBQU07WUFBQUs7WUFBQUc7OztZQUdBQztZQUFBRTtZQUFBRTtZQUFBRTs7O1lBR0FFO1lBQUFLO1lBQUFXO1lBQUFNOzs7WUFPQUs7WUFBQUs7WUFBQVU7WUFBQU87WUFNSUk7OztZQU1KQztZQUFBYztZQUFBc0M7WUFBQWtDOzs7WUFpQkErQjtZQUFBTTtZQUFBSztZQUFBQztZQUVJQztZQUlBQzs7O1lBS0pJO1lBQUFNO1lBQUFHO1lBQUFDOzs7WUFVQUM7WUFBQUU7WUFBQUU7WUFBQUM7OztZQUdBQztZQUFBRTtZQUFBRTtZQUFBQztZQUVJQzs7O1lBZ0NKRztZQUFBRTtZQUFBRTtZQUFBQzs7O1lBR0FDO1lBQUFJO1lBQUFPO1lBQUFLO1lBS0lHOzs7WUFHSkU7WUFBQVc7WUFBQVM7WUFBQUM7WUFFSUM7WUFZQUU7WUEwREFJO1lBV0FDO1lBS0FDO1lBR0FDO1lBZ0JBQztZQW1CQUU7WUFXQUc7WUFPQUc7WUFzREFVO1lBMkhBRTtZQVFBRTtZQVlBQztZQU1BQztZQVdBRTtZQXdFQU87WUFXQUc7WUFHQUM7WUFzQ0FZO1lBNkJBSTtZQUVBdFo7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQW1aO1lBQ0FsWjtZQUVBbVo7WUFXQUM7O1lBMENBUztZQThHQVE7WUFJQUM7WUFPQUU7WUFXQUc7WUFNQUM7WUFXQUM7WUFRQUU7OztZQWdESkk7WUFBQVM7WUFBQVc7WUFBQUs7WUFLSUc7WUFNQUM7WUFPQUM7O2tDQWg2QkY5Yzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUNFRitjO0lBQUFsb0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SUFKQSx1QkFBQUc7S0FBa0IsT0FBQSwrQkFBbEJBO0lBQXVCO0lBQXZCLHlCQUFBQztLQUFBLE9BQUEsbURBQUFBO0lBQXVCOztLQUF2QituQjtLQUFBQztLQUFBQztLQUFBQztJQUVBLG1CQUFBbm9CLEtBQWMsT0FBQSwrQkFBZEEsVUFBbUI7SUFBbkIscUJBQUFDO0tBQUEsT0FBQSwrQ0FBQUE7SUFBbUI7O0tBQW5CbW9CO0tBQUFDO0tBQUFDO0tBQUFDOztzQkFFQXZvQjtLQUFBO0tBQWEsK0JBQWJBO3VEQUFBQTtLQUFhLCtCQUFiQTt1REFBQUE7MkNBQUFBO0lBQTZCO3dCQUE3QkM7S0FBQSxPQUFBLDhDQUFBQTtJQUE2Qjs7O2FBQTdCdW9CLGNBQWFDO0tBQWIsU0FBYUE7Z0JBQUFBOzs7O1FBQUE7U0FBQUM7U0FBQUM7U0FBQUMsV0FBQSxXQUZiUixnQkFFYU87U0FBQUUsV0FBQSxXQUZiVCxnQkFFYU07UUFBQSxXQUFBRSxVQUFBQzs7OztLQUFBLE9BQUE7MkNBQWJkLHFCQUFhVTtJQUFnQjthQUE3Qks7S0FBQTtNQUFhQztNQUFBQztNQUFBQyxzQkFGYlosZ0JBRWFXO01BQUFFLHNCQUZiYixnQkFFYVU7b0JBQUFFLGNBQUFDO0lBQWdCO2FBQTdCQyxnQkFBYW5vQjtLQUFiLFVBQWFBLHFDQUFBQTtnQkFBQUE7Ozs7O1NBQUE0TjtTQUFBL0Y7U0FBQUMsa0JBRmJ3ZixrQkFFYXpmO1NBQUFnRyxrQkFGYnlaLGtCQUVhMVo7bUJBQUE5RixNQUFBK0Y7Ozs7MERBQWJoUCxXQUFhbUI7SUFBZ0I7YUFBN0Jvb0I7S0FBQTtNQUFheGE7TUFBQS9GO01BQUFDLGtCQUZieWYsa0JBRWExZjtNQUFBZ0csa0JBRmIwWixrQkFFYTNaOytCQUFBOUYsVUFBQStGO0lBQWdCO2FBRXpCd2EsaUJBQW9CQyxTQUNsQkMsWUFEMEMsV0FBeEJELFVBQ2xCQyxZQUFBQTtJQUVMO2FBU0szRixHQUFNdEcsS0FBVWtNO0tBQXdDLFdBQXhDQSxjQUFWbE0sV0FBQUE7SUFNVDthQUVHaGQsV0FBY21wQjtLQUEwQixZQUExQkE7aUJBRU47S0FFUjtNQURLRDtNQUNERSxZQURDRjtNQUVEN1osV0FMVThaO01BTVYvWixXQU5VK1o7TUFPVkUsY0FKQ0g7TUFNTCxNQUpJN1osV0FDQUQ7TUFHSixjQUxJZ2E7YUFNQTtLQU1JOztRQUFBOzRCQVpKQSxZQUVBaGEsVUFEQUMsV0FDQUQ7S0FLQSxPQUpBaWEsY0FIQUQ7ZUFVRSx5Q0FURi9aLFdBQ0FEO0lBZVA7YUFFR2thLGlCQUFvQko7S0FBZ0MsT0FBQTs7Y0FBaENBO2NBQUFBO2NBQUFBOzs7Ozs7SUFXdkI7SUFqRDJCLCtCQU94QjVGLElBUUF0akIsWUF1QkFzcEI7YUFpQkFDLGtCQUVFQyxzQkFDQUM7S0FFZ0I7TUFFbEIsUUFBQSxzQ0FMRUQ7TUFNRixVQUFBLHNDQUxFQzs7TUFVRjtPQURrQ0M7T0FBNUJDO09BQ0ZDLHNCQURFRDtPQUVGRSxzQkFGOEJIO09BSTlCSTtTQUNGO1dBQ0c7OztjQUFjO2VBQU1DO2VBQUpDO2VBQ1ZDLFNBQVMsaUNBREtGO2NBRWxCLFNBRElFLFFBR2tCO2NBR2xCO2VBREVDO2lCQUNGO21CQUF1QixrQ0FQYkYsS0FMakJKO2NBYUssS0FGSU0seUJBR007Y0FFSztlQURSQyxVQUpIRDtlQUtFRSxXQUFTLGlDQURSRDtjQUVMLE9BRElDO2FBUVQ7V0F2QkZQO01Bd0JKLE9BdEJJQzs7S0FMUztJQWdDaEI7YUFHR08sS0FFR3JaLGlCQUNBc1osbUJBQ0ExWDtLQUVJO01BQ0wzUztRQUNGOzt3QixPQXREQXNwQixrQkFnREd2WTtVQUVBNEI7TUFLRHhHO1FBQ0Y7O21CQUNHbVEsWUFBcUMsT0FBckNBLGNBQW9EO1VBUnBEK047TUFXRC9GLFlBQVUsNEJBUFZ0a0IsU0FFQW1NO0tBTUosV0FESW1ZO0lBRUw7YUFFR2dHLGFBQWNwQjtLQUEwQjtNQUN0Q2xwQixVQURZa3BCO01BRVoxRCxrQkFBa0IsMkJBRGxCeGxCO01BR0Y7UUFBQTtVQUNHOzs7YUFBYyxJQUFFZ3FCOzBCQUFBQTtZQUF3QztVQUp6RGhxQjtNQUVBdXFCLGFBQ0Y7S0FHRixhQUxJL0UsdUJBQ0ErRSxhQURBL0U7SUFTTDthQUlHZ0YsWUFBZ0JDLE9BQVFaO0tBQWtCLE9BQUE7O2NBQTFCWTtjQUFRWjs7Ozs7OztJQVczQjtJQTdGNEI7O1dBR3pCUCxtQkE4Q0FjLE1Ba0JBRSxjQWVBRTthQW9CQUUsS0FBTzlYLFdBQXNCeEc7S0FBMkI7TUFDdEQyVyxpQkFDRixtQ0FGT25RO01BSUwvTTtRQUNGOzs7V0FBUyxJQUFLckI7V0FBTyxPQUFBLHVDQUFQQTtVQUFpQztVQUxsQjRIO01BTTNCRDtRQUFROzswQkFBUyxJQUFFd2UsY0FBVSxPQUFWQSxFQUFXO1VBTkh2ZTtNQU8zQndlO1FBQWlCLHVDQU5qQjdILGdCQUdBbGQ7TUFLSixNQUZJK2tCO0tBRUo7YUFFSTs7d0JBQVdDLEdBQUdGLEdBQU0sV0FBVEUsR0FBR0YsR0FBWTtlQUoxQkM7ZUFEQXplOztJQVFMO0lBcEJtQix1QkFNaEJ1ZTthQXdCQUksS0FBTzNlLE9BQXNCOGM7S0FBMkMsR0FBM0NBO01BSTNCO09BREs4QixpQkFIc0I5QjtPQUl2QitCLFdBRENEO09BRkxFO1NBSUE7OEJBRElELFVBSkM3ZTs7O09BQ0w4ZTtTQVlBO2lDQWJLOWU7S0FvQlQsV0FwQlNBLE9BQXNCOGMsY0FDM0JnQztJQW9CTDthQUVHUixNQUFTdkIsUUFBYyxrQ0FBZEEsV0FBZ0Q7YUFDekRxQixXQUFjckI7S0FBYztZQUFkQTtNQUNoQjtRQUFBO1VBQ0c7OzthQUFjLElBQUVjOzBCQUFBQTtZQUF3Qzs7S0FEM0QsT0FBQTtJQUdEO2FBRUdrQixhQUFjaEMsUUFBV2lDO0tBQThDLElBRXBCLE1BVG5EVixNQU9jdkIsU0FFYixNQVJEcUIsV0FNY3JCO0tBQXlELE9BQTlDaUM7SUFHNUI7YUFFR0MsbUJBQW9CbkM7S0FBZ0MsT0FBQTs7Y0FBaENBO2NBQUFBO2NBQUFBOzs7Ozs7SUFXdkI7SUFyRHdCOztXQU9yQjZCLE1BdUJBTCxPQUNBRixZQU1BVyxjQUtBRTthQXVCQUMsS0FBTXRPLEtBQVd1TztLQUFnRDtNQW1CN0QsTUFBQSxzQ0FuQmFBO01BZ0JqQixNQUFBLGlDQWhCTXZPO01BY04sTUFBQSw0QkFkTUEsUUFBQUE7TUFRTjtRQUFBOztVQVJpQnVPO1VBQVh2TztVQUFXdU87TUFLZixNQUFBLHNDQUxlQTtNQUdqQixNQUFBLG9DQUhNdk87S0FBMkQsV0FBM0RBO0lBcUJUO2FBRUd3TztLQUNBO01BTUlDO01BREFMO01BREFNO01BREFDO01BREExWTtNQVFPLE1BUlBBO01BVUo7UUFyUkY4VjtVQXNSSSxvQ0FWRTRDO01BUVVDO01BQVhDO01BS0wsTUFkTTVZO01BZUo7UUExUkY4VjtVQTJSSSxxQ0FkRTJDO01BWVVJO01BQVhDO01BS0wsTUFuQk05WTtNQW9CSjtRQS9SRjhWO1VBZ1NJLGlDQWpCRTBDLHFCQURBTDs7TUFnQlVZO01BQVhDO01BS0RDLGVBZkNMLFlBS0FFLFlBS0FFO01BTURoRCxhQWhCWTJDLFNBS0FFLFNBS0FFO0tBT2hCLFdBRklFLGNBQ0FqRDtJQUVMO0lBOURvQix3QkFTakJxQyxNQXVCQUU7SUFsUjBDOzs7WUFJaEQ5RDtZQUFBQztZQUFBQztZQUFBQzs7O1lBRUFDO1lBQUFDO1lBQUFDO1lBQUFDOzs7WUFFQUM7WUFBQU07WUFBQUs7WUFBQUM7WUFFSUM7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0VEQSxJQUFBLFVBQUksMkJBRkpxRDtrQkFBQUE7T0FNQSxJQUFBLFVBQUksK0JBRkpDO2tCQUFBQTtHQUtKLEdBTElBOzs7T0FBQUEsNEJBZ0JEO0tBckJEQzs7UUFBQUEsUUFDRUYsU0FhRDtHQVdMO1lBRUlHLFVBQWlCQztRQUFWQztJQUNULEdBRFNBLElBRVAsTUFBQSx1Q0FGaUJEO0lBSWpCLE9BQUEsa0NBSmlCQTs7O0lBU1g7SUFDTjtJQUFBLElBQUEsU0FIQUU7Ozs7O1FBQUFBOztNQWxDQUosT0EyQ2tCOztJQUVsQks7TUE3Q0FMOztTQStDS007U0FDdUMsVUFBQSwrQkFEdkNBO1NBQ0Y7U0FDQSxNQUFBLDRCQUZFQTtRQUVLO3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQVNSQyxRQUFRQztJQUFJLE9BQUE7O3NCQUFvQkMsR0FBRUgsR0FBSyxPQUFBLGdCQUFMQSxHQUFGRyxHQUFjOzthQUF0Q0Q7R0FBK0M7R0FGdkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUVBRDtZQVdGRyxnQkFBc0NDLEdBQVlIO1FBQXJDSSxzQ0FBZSxTQUFLLEdBRXRCQyxVQVFBQyxNQVZ1Q047O1FBVXZDTTtVQUFOQyxLQUFNRCxRQUFUUixJQUFTUTtNQUNKLEdBQUEsV0FYTUYsTUFVRkUsTUFFTDtNQUNTLFlBQUEsV0FidUJILEdBVTNCRzs7T0FNNkIsaUJBTnRDUixHQVJTTztPQUFBQTtPQVFBQyxNQUFOQzs7OztZQUllQyxrQkFBTkM7UUFBcUIsZUFBSyx1QkFBMUJBLFFBWkhKLE9BWVNHOztPQUNvQjtRQUFaRTtRQUFOQztRQUFrQixTQUFBLHVCQUFsQkEsTUFiWE47T0FBQUE7T0FRQUMsTUFLaUJJOzs7O01BVmhCLGNBQUEsV0FMMEJQO3NDQVFIOztXQUZmUyxzQkFBTkM7T0FBcUIsZUFBSyx1QkFBMUJBLFFBSkhSLE9BSVNPOztNQUNvQjtPQUFaRTtPQUFOQztPQUFrQixTQUFBLHVCQUFsQkEsUUFMWFY7TUFBQUE7TUFRQUMsTUFIaUJROzs7WUFZNUJFLFlBQWlDYixHQUFFSDtJQUMvQjtLQURLSSxzQ0FBZSxTQUFLO0tBQ3pCLFFBcEJKRixlQW1CU0UsT0FBd0JELEdBQUVIO2dCQUV6Qjs0QkFDRU0sa0JBQUxXO0lBQVcsZUFBSyw0QkFBaEJBLE1BQUtYOztZQUVaWSxhQUFhQyxLQUFJQztJQUNuQjtLQUFJQywwQkFEZUQ7S0FFZkUsTUFBTTtLQUVHQztLQUFRQztJQUNuQjtRQURtQkEsTUFIakJIO0tBTU0sSUFDb0NJLElBRHBDLGdCQVBTTCxHQUlFSSxJQUdYLE1BQ29DQzs7Ozs7OztNQUN4Qyw4QkFQRkgsS0FNMENHO01BQ3hDLElBTGVDLE1BQUFGO01BQVJEO01BQVFDLElBQUFFOzs7S0FRUixHQVJBSDtNQVdQLDhCQWJGRDtNQWFFLElBWGVLLE1BQUFIO01BQVJEO01BQVFDLElBQUFHOztVQVNmLElBVGVDLE1BQUFKLFdBQVJELGFBQVFDLElBQUFJOztJQWVaLElBQUxDLE1BQUssNkJBakJMUDtJQWtCRCxHQURDTyxjQUNZO1FBSUNDLDRCQUxiRCxjQUlFRSxnQkFDV0Q7SUFDWDtLQUFZLFFBRlpDLHdCQUVZLGdCQU5kRixLQUlFRSxnQkFHSyxJQUZNQyxNQURYRCx1QkFBQUEsZ0JBQ1dDO0tBT0QsT0FBQTs2Q0EvQkRiO2NBQUFBO2NBK0JDLDhCQVpaVSxRQUlFRTs7R0FRNkM7WUFHakRFLGtCQUF5QmI7SUFDRDtLQURUYztLQUNTLHlCQUExQjtLQUNJQyxJQUFJO0tBQ0tYO0lBQ1g7UUFEV0EsNEJBSGNKO01BNkMzQixPQUFBLDZCQTNDSWU7S0FNTSxJQUMwQ1YsSUFEMUMsZ0JBUmlCTCxHQUdkSSxJQUtILFdBQzBDQzs7Ozs7Ozs7Ozs7O1dBQ3JDLDhCQVJYVTs7Y0FGYUQ7WUFjTDthQUVtQixpQkFBQSxnQkFoQkpkLEdBR2RJOzs7Ozs7Z0JBcUJLLElBTldZLE1BZmhCWjs7Ozs7c0JBZWdCYSxJQUFBRDtrQkFDVDttQkFBTSxZQUFBLGdCQW5CQ2hCLEdBa0JFaUI7OzttQkFFTyxJQUZQQyxNQUFBRDttQkFBQUEsSUFBQUM7Ozs7aUJBcEczQnpDOzs7Ozs7ZUFrSGdCLElBTlcwQyxNQXZCaEJmOzs7Ozs7cUJBdUJnQmdCLE1BQUFEO2lCQUNUO2tCQUFNLGlCQUFBLGdCQTNCQ25CLEdBMEJFb0I7OztrQkFFb0IsSUFGcEJDLE1BQUFEO2tCQUFBQSxNQUFBQzs7Ozs7Z0JBNUczQjVDOzs7O2NBQUFBOzs7YUFxSGMsOEJBakNac0M7O3VCQWtDb0IsOEJBbENwQkE7O1lBcUNRLDhCQXJDUkE7OztXQVNZLDhCQVRaQTs7V0FzQ1csOEJBdENYQTs7V0F1Q1csOEJBdkNYQTs7Ozs7Ozs7Ozs7Ozs7OztPQU9xRCw4QkFQckRBLEdBT2dEVjs7O01BaUN2Qyw4QkF4Q1RVLEdBT2dEVjs7S0FrQzdDLElBeENNRSxNQUFBSDtLQUFBQSxJQUFBRzs7O1lBOENYZSxrQkFBa0J0QjtJQUNwQjtLQUFJcEIsMEJBRGdCb0I7S0FFaEJlLElBQUksNkJBREpuQztLQUVTRztLQUFFcUI7SUFDYjtRQURhQSxNQUZYeEIsR0FFSixPQUFBLDZCQURJbUM7S0FLTSxJQUdKVixJQUhJLGdCQVBVTCxHQUdMSTs7O2VBT1RDLGFBQUFBLDBCQUFBQTs7aUJBQ0csNkJBVExVO09BQ1NRLFlBQUF4QztTQUFBd0MsS0FTTCw4QkFWSlI7TUFVSSxJQVRPUCxNQUFBSjtNQUFGckI7TUFBRXFCLElBQUFJOzs7S0FNVCxJQU5TRCxNQUFBSDtLQUFGckI7S0FBRXFCLElBQUFHOztHQVdBO1lBRVRpQixJQUFJekM7UUFFQ0c7O1VBQUFBLEtBREg7U0FDSEMsS0FBTUQsUUFBVFIsSUFBU1E7S0FBUSxLQUFBLFdBRlRILEdBRVJMLElBQXdDLE9BQS9CUTtLQUFBQSxNQUFOQzs7O1lBR0NzQyx3QkFBeUJDO0lBQy9CLElBRCtCQyxTQUFBRDtJQUMvQjtLQUFBO01BQVFFO2lCQUFpQjVCLEdBQUVJLEdBQUVDO1NBQ3JCLElBRUpZLElBRkksOEJBRGlCakIsR0FBRUksR0FBRUM7a0JBR3pCWTtVQURLOztrQkFBSTt1Q0FGWWpCLDRCQUFBQTtTQUdNOztZQUFBOztjQUhOQTtjQUdyQmlCO29DQUhxQmpCLE1BR3JCaUI7U0FBSyxXQUFBLDhCQUhnQmpCLEdBQUVJLEdBR3ZCYSxJQUh1QmI7UUFHZ0Q7TUFFdkV5QjtpQkFBcUI3QjtTQUN2QixHQUR1QkEsWUFFckIsT0FGcUJBO1NBR2YsVUFBQSxnQkFIZUEsT0FJckIsT0FKcUJBO2FBTVJJO1NBQ1g7YUFEV0EsNEJBTlFKO1dBTXJCLE9BQUE7dUNBTnFCQSxHQU1SSSx5QkFOUUosS0FNUkk7b0JBSUgsZ0JBVldKLEdBTVJJO1dBQWIsT0FBQTt1Q0FOcUJKLEdBTVJJLHlCQU5RSixLQU1SSTtVQUtBLElBTEFHLE1BQUFIO1VBQUFBLElBQUFHOztRQU9KO0tBaUNiO01BQzhCO09BQUEsTUFBQSw4QkFyRENvQjtPQXFEekIsTUFBQSw4QkFyRHlCQTs7Ozs7Ozs7YUF3RDdCO0tBRUksY0FBQSxnQkExRHlCQTs7TUErRDdCO09BQ2lCO1FBQVhHLFNBL0RBRixpQkFEdUJEO1FBaUVILE1BQUEsOEJBRHBCRztRQS9CS3JCLE1BZ0NKLDhCQUREcUI7UUFuQlc5QixJQVpOUztRQUFFc0I7UUFZTXpCO09BWG5CO3VDQVdpQk47U0FSZjtVQVNxQjtXQUFBLFVBN0NqQjRCLGlCQTRDVzVCLEdBQUVNO1dBQ1AwQjtXQXpCV0M7VUFHZjtZQUhlQTs7OztpQkFHZixnQkFIZUEsNEJBQUFBO2VBMEJqQkMsU0ExQmlCRDs7ZUFNUnpCLDRCQU5ReUIsZUFNUjdCLElBQUFJO1dBQ1g7c0JBQU0sZ0JBUGF5QixNQU1SN0I7WUFFRixJQUZFRyxNQUFBSDtZQUFBQSxJQUFBRzs7ZUFvQlQyQixTQWpCSyw4QkFUWUQsU0FNUjdCOztVQXFCRTtXQUFYK0IsYUExQ0pOLHFCQXdDVUc7V0FHUTthQWhEZEosaUJBK0NBTyxlQUMwQyxnQkFEMUNBO1dBQ09DO1dBQVBDO1dBVkEsa0JBUUFILFFBRUFHLFFBM0NKUixxQkEyQ1dPOzs7Ozs7Ozs7VUFORTs7V0FWSkU7V0FTU0M7V0FUUEMsWUFTT0QsR0FUUFI7VUFZSS9CLElBWk5zQztVQUFFUCxNQUFBUztVQVlNbEM7Ozs7UUFvQmpCLE9BaENXeUI7Ozs7OzZCQWlDSzs7O0tBTGhCO01BN0QyQlU7UUFNM0JaO1VBdURzQjs7WUE3REtGOztrQ0FBQUE7S0FBQUEsU0FBQWM7O0dBa0VUO1lBRWhCQyxtQkFDbUJoQjtJQUF6QixJQUEyQnRCLE9BR3ZCYSxJQUZJLDhCQURpQlMsTUFBRXRCO2FBR3ZCYTs7Ozs7U0FEUzs4QkFGWVMsK0JBQUFBOztLQUdNOztRQUFBOztVQUhOQTtVQUdyQlQ7Z0NBSHFCUyxTQUdyQlQ7S0FBSyw4QkFIZ0JTLE1BQUV0QixHQUd2QmE7OztJQUdJO0tBRGtCMEI7S0FBRXBDLDRCQUFGb0M7S0FHdEJ6QixNQUZJLDhCQURrQnlCLEdBQUVwQzs7YUFHeEJXO1dBRFM7K0JBRmF5Qiw0QkFBQUE7O1dBR0M7O1lBSERBO1lBR3RCekI7a0NBSHNCeUIsTUFHdEJ6QjtjQUFLLDhCQUhpQnlCLE1BR3RCekI7S0FHQXJDO0lBQ0osT0FESUE7R0FDSDtHQUdzQixJQUFyQitELHFCQUFxQjtZQWtCckJDLE9BQU1DLElBQUdDO0lBQ0ssVUFBQSw0QkFEUkQ7SUFDUixPQUFBLGlDQURXQztHQUNxQjs7OztPQTVTOUIzRTtPQWtDQUk7O09BV0FDO09BbEJBSjs7T0EwQ0FTO09BbUJBYztPQUtBRTtPQWtDQWU7T0FpREFTO09BZ0JJRTtPQUtBQztPQW9FQWlCO09BZ0JKRTtPQWtCQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQkN6U1VHLFFBSUsseUJBSkxBLGtCQUlpQjs7cUJBSmpCQSxRQU1HZixNQUFLZ0IsT0FBTUM7YUFOZEY7Y0FPTCxpQkFEUWYsVUFBV2lCLEtBQU5ELFFBTlJEO2FBUUQ7Y0FBTEcsS0FBSyw4QkFGSWxCO2NBR1YsT0FEQ2tCLE9BRlNsQjtjQUdWOztvQkFUT2U7O3FCQVNlLGlCQURyQkcsUUFGb0JELEtBQU5ELFFBTlJEOzs7O1lBU3VDOztxQkFUdkNBLFFBV0dmO2FBQ2I7O2VBRVEsSUFBQSxPQUFBLGtCQUhLQSxNQVhIZSxtQkFhWW5FOzs7Ozs7ZUFHUCxJQUFMc0UsS0FBSyw4QkFMRmxCO2VBTVA7Z0JBQUk7aUJBQUEsT0FBQSxrQkFEQWtCLElBaEJBSDs7Ozs7OzsyQkFtQkYsa0JBSEVHLElBaEJBSDs7bUJBYVluRTs7Y0FPakIsZUFQaUJBO2NBT2pCOzs7O3FDQUVIOzs7WUFBSTs7Ozs7OztZQStDRnVFLGNBQWNDLElBQUdDO1FBQUhDLE9BQUFGLElBQUdHLE9BQUFGOzs7OztTQUFIQztXQXlCUEUsS0F6Qk9GOzs7a0JBeUJQRTs7Ozs7O2tCQUFBQTs7bUJBekJVRDt5QkFBQUEsZ0JBQUhELGdCQXlCUEU7Ozs7O21CQXpCVUMsUUFBQUY7bUJBQ05HO21CQURHQzttQkFDZkM7Ozs7Ozs7bUJBRGtCTDt5QkFBQUEsZ0JBQUhELGdCQXlCUEU7Ozs7O21CQXpCVUMsUUFBQUY7bUJBQ05HO21CQURHQzttQkFDZkM7Ozs7Ozs7bUJBRGtCTDt5QkFBQUEsZ0JBQUhELGdCQXlCUEU7Ozs7O21CQXpCVUMsUUFBQUY7bUJBQ05HO21CQURHQzttQkFDZkM7Ozs7Ozs7bUJBRGtCTDt5QkFBQUEsZ0JBQUhELGdCQXlCUEU7Ozs7O21CQXpCVUMsUUFBQUY7bUJBQ05HO21CQURHQzttQkFDZkM7Ozs7Ozs7bUJBRGtCTDt5QkFBQUEsZ0JBQUhELGdCQXlCUEU7Ozs7O21CQXpCVUMsUUFBQUY7bUJBQ05HO21CQURHQzttQkFDZkM7Ozs7Ozs7bUJBRGtCTDt5QkFBQUEsZ0JBQUhELGdCQXlCUEU7Ozs7O21CQXpCVUMsUUFBQUY7bUJBQ05HO21CQURHQzttQkFDZkM7Ozs7Ozs7bUJBRGtCTDt5QkFBQUEsZ0JBQUhELGdCQXlCUEU7Ozs7O21CQXpCVUMsUUFBQUY7bUJBQ05HO21CQURHQzttQkFDZkM7Ozs7Ozs7bUJBRGtCTDt5QkFBQUEsZ0JBQUhEOzs7O3NCQUFHTyxNQUFBTixTQXlCV08sV0F6QmRDOzs7Ozs7bUJBQUdSO3lCQUFBQSxnQkFBSEQsZ0JBeUJQRTs7Ozs7bUJBekJVQyxRQUFBRjttQkFDTkc7bUJBREdDO21CQUNmQzs7Ozs7OzttQkFEa0JMO3lCQUFBQSxnQkFBSEQsZ0JBeUJQRTs7Ozs7bUJBekJVQyxRQUFBRjttQkFDTkc7bUJBREdDO21CQUNmQzs7Ozs7OzttQkFEa0JMO3lCQUFBQSxnQkFBSEQsZ0JBeUJQRTs7Ozs7bUJBekJVUSxRQUFBVDttQkFzR0VVO21CQXRHTEM7bUJBc0dFQzs7Ozs7OzttQkF0R0NaO3lCQUFBQSxnQkFBSEQsZ0JBeUJQRTs7Ozs7bUJBekJVUSxRQUFBVDttQkFzR0VVO21CQXRHTEM7bUJBc0dFQzs7Ozs7OzttQkF0R0NaO3lCQUFBQSxnQkFBSEQsZ0JBeUJQRTs7Ozs7bUJBekJVUSxRQUFBVDttQkFzR0VVO21CQXRHTEM7bUJBc0dFQzs7Ozs7OzttQkF0R0NaO3lCQUFBQSxnQkFBSEQsZ0JBeUJQRTs7Ozs7bUJBekJVUSxRQUFBVDttQkFzR0VVO21CQXRHTEM7bUJBc0dFQzs7Ozs7OzttQkF0R0NaO3lCQUFBQSxnQkFBSEQ7Ozs7c0JBQUdPLE1BQUFOLFNBeUJXTyxXQXpCZEM7Ozs7OzttQkFBR1I7MEJBQUFBLFNBQUhhLFFBQUFkLFNBeUNKZSxLQWhCSGIsT0FnQkFYLEtBaEJBVzs7OztrQkFrQkY7bUJBM0NZYyxRQUFBZjttQkF5Q2lCZ0I7bUJBQUh6QjttQkFlNUJ6QyxNQWJFLG9CQUZFd0MsSUFBd0JDOzsyQ0FBckJ1Qiw0QkFBd0JFOzJCQWUvQmxFOzs7Ozt1QkFIUzt3QkFFRk07MEJBRkUsb0JBQVEsdUJBWlYwRCxVQUF3QkU7Z0NBY3hCNUQsS0FBSyxPQUFMQTt1QkF2REkyQyxPQUFBYzt1QkFBR2IsT0FBQWU7Ozt1QkE2Q0wsSUFFSDdELE1BRkcsb0JBSkY0RCxJQUF3QkU7Z0NBTXpCOUQsS0FBSyxPQUFMQTt1QkEvQ0s2QyxPQUFBYzt1QkFBR2IsT0FBQWU7Ozt1QkFpREw7d0JBRUZFOzBCQUZFLG9CQVJGSCxJQVFhLHVCQVJXRTtnQ0FVeEJDLEtBQUssT0FBTEE7dUJBbkRJbEIsT0FBQWM7dUJBQUdiLE9BQUFlOzs7O2tCQXdETixPQUFSakU7Ozs7OzttQkF4RGNrRDs7eUJBQUFBO2VBQUhrQixRQUFBbkI7ZUEyREZvQixTQWxDTGxCO2VBa0NDbUIsT0FsQ0RuQjtlQWtDTm9CLFFBbENNcEI7Ozs7a0JBb0NGO21CQTdEWXFCLFFBQUF0QjttQkEyRHlCdUI7bUJBQUpDO21CQUFQQzttQkFRNUJDLE1BTkUsb0JBRkpMLE9BQThCSTsyQkFRNUJDLEtBQUssT0FBTEE7a0JBTFksSUFJRkMsTUFsRWIvQixjQTJEUXdCLE1BQThCSTsyQkFPekJHLEtBQUssT0FBTEE7a0JBSFksSUFFRkMsTUFGRSxvQkFKYlQsUUFBOEJJOzJCQU1uQkssS0FBSyxPQUFMQTtrQkFqRVQ3QixPQUFBbUI7a0JBQUdsQixPQUFBc0I7Ozs7Ozs7bUJBQUF0Qjs7c0JBQUFBO3NCQUFIRDtzQkF5QlBFO3NCQUFBQTtzQkFBQUE7c0JBQUFBOzs7OzttQkE2Q3FDNEIsUUF0RTNCN0I7bUJBc0VlOEI7bUJBQUpDO21CQUFQQzttQkFBaEJDO21CQURtQ0M7bUJBQVpDO21CQUFKQzttQkFBUEM7bUJBQWhCQzs7Ozs7OzttQkFyRWdCdEM7O3NCQUFBQTtzQkFBSEQ7c0JBeUJQRTtzQkFBQUE7c0JBQUFBO3NCQUFBQTs7Ozs7bUJBNkNxQzRCLFFBdEUzQjdCO21CQXNFZThCO21CQUFKQzttQkFBUEM7bUJBQWhCQzttQkFEbUNDO21CQUFaQzttQkFBSkM7bUJBQVBDO21CQUFoQkM7Ozs7Ozs7bUJBckVnQnRDO3lCQUFBQSxnQkFBSEQ7Ozs7c0JBQUdPLE1BQUFOLFNBeUJXTyxXQXpCZEM7Ozs7OzttQkFBR1I7eUJBQUFBLGdCQUFIRDs7OztzQkFBR08sTUFBQU4sU0F5QldPLFdBekJkQzs7Ozs7O21CQUFHUjt5QkFBQUEsZ0JBQUhEOzs7O3NCQUFHTyxNQUFBTixTQXlCV08sV0F6QmRDOzs7Ozs7bUJBQUdSO3lCQUFBQSxnQkFBSEQ7Ozs7c0JBQUdPLE1BQUFOLFNBeUJXTyxXQXpCZEM7Ozs7OzttQkFBR1I7eUJBQUFBLGdCQUFIRDs7OztzQkFBR08sTUFBQU4sU0F5QldPLFdBekJkQzs7Ozs7O21CQUFHUjt5QkFBQUEsZ0JBQUhELGdCQXlCUEU7Ozs7O21CQXpCVUMsUUFBQUY7bUJBQ05HO21CQURHQzttQkFDZkM7Ozs7Ozs7bUJBRGtCTDt5QkFBQUEsZ0JBQUhEOzs7O3NCQUFHTyxNQUFBTixTQXlCV08sV0F6QmRDOzs7Ozs7a0JBNEZoQitCLE9BbkVTdEM7aUJBekJVRDs2QkFBQUE7O2dCQTZGTTtpQkE3Rk53QyxRQUFBeEM7aUJBNEZSeUM7aUJBNUZLQyxRQUFBM0M7aUJBNkZTO21CQUFBO3FCQUF6Qix1QkFEVzBDLHNCQUFBQTtpQkFLTkU7bUJBSkU7cUJBQVE7OENBRGZKLHNCQUFBQTs7eUJBS0tJLE1BQUssT0FBTEE7Z0JBSDhCO2lCQUFBO21CQUFBOzRDQUZ4QkYsdUJBQUFBO2lCQUlJRzttQkFGRTtxQkFBUTs4Q0FGekJMLHVCQUFBQTs7eUJBSWVLLE1BQUssT0FBTEE7Z0JBaEdDN0MsT0FBQTJDO2dCQUFHMUMsT0FBQXdDOzs7O2NBa0dSOztXQXhCSixJQWdCRkssTUFoQkUsaUJBTFlSLE9BQU9ELFNBQ0hKLE9BQU9EO29CQW9CekJjLEtBQUssT0FBTEE7V0FiNkI7O2NBQUE7dUNBUEFmLDJCQUFBQTtXQU90QjthQUFBO3NDQVJrQkssMkJBQUFBOztnQkFPbkJXOztZQUkrQjthQUFBO2VBQUE7d0NBVlJoQiwyQkFBQUE7YUFNdkJnQjtlQTVFVGxEO2lCQWdGdUI7MENBWEt1QzttQkFBQUE7O1dBYXJCLFNBTkVXLEtBYUEsT0FiQUE7V0FRbUM7WUFBQTtjQUFBO3VDQWR2Q2I7Z0JBQUFBO1lBaUJRYztjQUhGO2dCQUFRO3lDQWZsQlQ7a0JBQUFBOztvQkFrQllTLE1BQUssT0FBTEE7V0F2RkNoRCxPQXFFMEJtQztXQXJFdkJsQyxPQXNFMkI2Qjs7Ozs7Ozs7O2lCQWdDNUJtQixPQUFBcEMsTUFBR3FDLE9BQUF2QzthQUN6QjttQkFEc0JzQzttQkFBR0M7Y0FJWjtlQUpZQyxRQUFBRDtlQUdaRSxPQUhZRjtlQUFIRyxRQUFBSjtlQUdsQkssT0FIa0JMO2VBTVhNLE9BNUdMMUQsY0F5R0Z5RCxNQUFTRjt1QkFHRkc7Y0FOV04sT0FBQUk7Y0FBR0gsT0FBQUM7O2dCQUFBRCxVQS9FaEJqRztpQkFBQUE7OztnQkFBQUE7OztlQUFBQSxNQXFGRXNHOzttQkFyRkZ0RyxLQUFLLE9BQUxBO1VBdkJXK0MsT0FBQVk7VUFBR1gsT0FBQVM7OztTQVlaLElBRUYxRCxNQWRINkMsY0FDRFMsTUFBWUY7a0JBYVJwRCxLQUFLLE9BQUxBO1NBZFdnRCxPQUFBSztTQUFHSixPQUFBRTs7O2VBeUJWRDs7Z0JBekJVRDtzQkFBQUEsZ0JBQUhEOzsrQkFBR08sTUFBQU4sU0F5QldPLFdBekJkQzs7Ozs7Z0JBQUdSO3NCQUFBQSxnQkFBSEQ7OytCQUFHTyxNQUFBTixTQXlCV08sV0F6QmRDOzs7OztnQkFBR1I7c0JBQUFBLGdCQUFIRDs7K0JBQUdPLE1BQUFOLFNBeUJXTyxXQXpCZEM7Ozs7OztPQXFDVCxJQUVGNUQsSUFGRSxhQVpFcUQsSUFBcUJNO2dCQWN6QjNELEdBQUssT0FBTEE7T0F2Q1dtRCxPQUFBUztPQUFHUixPQUFBTTs7O1NBQUFOO2tCQUFBQTtzREFtR1I7OztLQUNSLE9BQUEsYUFwR2FELE1BQUdDOzs7Ozs7Ozs7OztlQW9NR3VELFFBQ0ZsSSxHQUFFOEQsR0FBRS9ELEdBQUksU0FBSTs7ZUFEVm1JLFFBRVAsYUFBRTs7O0lBRm5CQzs7WUFLSUMsYUFBYXJJO0lBQ25CLElBRG1CTSxNQUFBTjtJQUNuQjtzQkFDRTtLQUFBO01BQ01zSTs7U0FBTztTQUFBO3dCQVFMO2NBb0NDQzs7b0JBQUFBO29CQUFBQTtnQkFoQzJDN0g7O2VBQUFBO3dCQUFBQTs7OzBCQUFBQTs7Ozs7bUJBSHRDSTtvQkFBQUE7MEJBQUFBOzsyQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7dUNBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBR3NDSjs7OztZQUwxQzs7OztrQkFxQ0Q2SDs7Y0E1QmlCLElBQWxCQyxtQkFBSEMsTUE0QklGLE1BNUJpQixPQWhCcEJHLE9BZ0JFRjtjQUFNLGVBaEJSRSxPQWdCREQ7O2NBQ3FCLElBQWxCRSxtQkFBSEMsTUEyQklMLE1BM0JpQixPQWpCcEJHLE9BaUJFQztjQUFNLGVBakJSRCxPQWlCREU7O2NBQ3FCLElBQWxCQyxtQkFBSEMsTUEwQklQLE1BMUJpQixPQWxCcEJHLE9Ba0JFRztjQUFNLGVBbEJSSCxPQWtCREk7O2NBQ3FCLElBQWxCQyxtQkFBSEMsTUF5QklULE1BekJpQixPQW5CcEJHLE9BbUJFSztjQUFNLGVBbkJSTCxPQW1CRE07O2NBQ3FCLElBQWxCQyxtQkFBSEMsTUF3QklYLE1BeEJpQixPQXBCcEJHLE9Bb0JFTztjQUFNLGVBcEJSUCxPQW9CRFE7O2NBQ3FCLElBQWxCQyxtQkFBSEMsTUF1QkliLE1BdkJpQixPQXJCcEJHLE9BcUJFUztjQUFNLGVBckJSVCxPQXFCRFU7O2tCQU5NckYsSUE2QkZ3RTttQkE3QkV4RSxPQURJc0YsOEJBQUFBO3lCQUNKdEY7Ozs7a0JBQUFBO21CQUZZdUY7eUJBQUFBOzs7Y0FFa0IsSUFBekJDLG1CQUF5QixPQWZuQ2IsT0FlVWE7Y0FBTSxlQWZoQmIsT0FlSzNFOztrQkFMSlUsS0FrQ0U4RDs7OztvQkFsQ1dpQixpQkFBSjlFO2tDQUFvQix1QkFBN0JELElBQVNDLE1BQUk4RTs7Ozs7O2NBWVUsSUFBcEJDLG9CQUFIQyxNQXNCRW5CLE1BdEJxQixPQXRCeEJHLE9Bc0JJZTtjQUFNLGVBdEJWZixPQXNCQ2dCOztjQUN1QixJQUFwQkMsb0JBQUhDLE1BcUJFckIsTUFyQnFCLE9BdkJ4QkcsT0F1QklpQjtjQUFNLGVBdkJWakIsT0F1QkNrQjs7Y0FDNEIsSUFBM0JDLG9CQUFIQyxNQW9CSXZCLE1BcEIwQixPQXhCN0JHLE9Bd0JFbUI7Y0FBTSxnQkFBRSw0QkF4QlZuQixRQXdCRG9COztjQUM4QixJQUEzQkMsb0JBQUhDLE1BbUJJekIsTUFuQjBCLE9BekI3QkcsT0F5QkVxQjtjQUFNLGdCQUFFLDRCQXpCVnJCLFFBeUJEc0I7O2NBQ2dDLElBQTVCQyxvQkFBSEMsT0FrQkczQixNQWxCNEIsT0ExQi9CRyxPQTBCR3VCO2NBQU07MkJBQUcsNEJBMUJadkIsUUEwQkF3Qjs7O2NBQytCLElBQTVCQyxvQkFBSEMsT0FpQkc3QixNQWpCNEIsT0EzQi9CRyxPQTJCR3lCO2NBQU07MkJBQUcsNEJBM0JaekIsUUEyQkEwQjs7O2NBRStDO2VBQWhDQztlQUFSaEcsUUFlSmtFO2VBZkUrQixPQWVGL0I7ZUFmSGdDLE9BZUdoQztlQWY0QyxPQTdCL0NHLE9BNkJlMkI7Y0FBTSxnQkFBckJFLE1BN0JBN0IsT0E2Qks0QixPQUFFakc7O2NBRDZCLElBQTFCbUcsb0JBQUhDLE9BZ0JKbEMsTUFoQmlDLE9BNUJwQ0csT0E0QlU4QjtjQUFNLGdCQTVCaEI5QixPQTRCTytCOztjQWdCRGxLO1VBQU0sV0FBVGdJLEdBNUNIRyxPQTRDTW5JOztRQUFnQjtTQTVDdEJtSSxTQUFBSjtLQThDQSxJQUFKM0UsSUE5Q0kyRSxLQUhXaEksTUFBQTZCLElBR1htRyxLQThDSjNFO0tBRUQsR0FBQSxtQkFGQ0EsR0FqRGV4QixJQW9EakIsT0FIRXdCO0tBakRlckQsTUFBQTZCOztHQXNESDs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUFLUHVJLFFBQ08saUJBQU87O3lDQUNZOztlQUYxQkEscUJBR2UsU0FBSTs7ZUFIbkJBLGVBSVMsU0FBSTs7O1lBSWhCQyxNQUFNeEs7SSxZQUNKO1FBbUlFTDtjQUFBQTtZQUFBQTs7UUFNSSxJQURIUyxlQUNHLFFBQUEsV0ExSUZKLEdBb0lGTDtvQkFRSSxjQTVJUjZLLE1BQU14SyxHQXlJREk7UUFFUSxJQUFUUCxjQUFTLE1BM0liMkssTUFBTXhLLEdBeUlESTtRQUVRLE9BQUEsMEJBQVRQOztRQUlJLElBREhVLGlCQUNHLFVBQUEsV0EvSUZQLEdBb0lGTDtzQkFhSSxjQWpKUjZLLE1BQU14SyxHQThJRE87UUFFUSxJQUFUSixrQkFBUyxNQWhKYnFLLE1BQU14SyxHQThJRE87UUFFUSxPQUFBLDBCQUFUSjs7UUFJSSxJQURIUSxpQkFDRyxVQUFBLFdBcEpGWCxHQW9JRkw7c0JBa0JJLGNBdEpSNkssTUFBTXhLLEdBbUpEVztRQUVRLElBQVQ4SixrQkFBUyxNQXJKYkQsTUFBTXhLLEdBbUpEVztRQUVRLE9BQUEsMEJBQVQ4Sjs7V0FqQkE5Szs7T0E1SEksSUFERDBJLGlCQUFSRCxJQTZIS3pJLE1BNUhJLFVBQUEsV0FSRkssR0FvSUZMOztRQTNIUyxJQUFUK0ssa0JBQVMsTUFUYkYsTUFBTXhLLEdBT0NxSTtRQUVNLE9BQUEsMEJBQVRxQzs7T0FDbUIsVUFWdkJGLE1BQU14SyxHQU9DcUk7T0FHQyxlQVZSbUMsTUFBTXhLLEdBT1BvSTs7T0FNUyxJQURESSxpQkFBUkYsTUF3SEszSSxNQXZISSxVQUFBLFdBYkZLLEdBb0lGTDs7UUF0SFMsSUFBVGdMLGtCQUFTLE1BZGJILE1BQU14SyxHQVlDd0k7UUFFTSxPQUFBLDBCQUFUbUM7O09BQ21CLFVBZnZCSCxNQUFNeEssR0FZQ3dJO09BR0MsZUFmUmdDLE1BQU14SyxHQVlQc0k7O09BTVMsSUFEREksaUJBQVJELE1BbUhLOUksTUFsSEksVUFBQSxXQWxCRkssR0FvSUZMOztRQWpIUyxJQUFUaUwsa0JBQVMsTUFuQmJKLE1BQU14SyxHQWlCQzBJO1FBRU0sT0FBQSwwQkFBVGtDOztPQUNtQixVQXBCdkJKLE1BQU14SyxHQWlCQzBJO09BR0MsZUFwQlI4QixNQUFNeEssR0FpQlB5STs7T0FNUyxJQURERyxpQkFBUkQsTUE4R0toSixNQTdHSSxVQUFBLFdBdkJGSyxHQW9JRkw7O1FBNUdTLElBQVRrTCxrQkFBUyxNQXhCYkwsTUFBTXhLLEdBc0JDNEk7UUFFTSxPQUFBLDBCQUFUaUM7O09BQ21CLFVBekJ2QkwsTUFBTXhLLEdBc0JDNEk7T0FHQyxlQXpCUjRCLE1BQU14SyxHQXNCUDJJOztPQU1TLElBRERHLGlCQUFSRCxNQXlHS2xKLE1BeEdJLFVBQUEsV0E1QkZLLEdBb0lGTDs7UUF2R1MsSUFBVG1MLGtCQUFTLE1BN0JiTixNQUFNeEssR0EyQkM4STtRQUVNLE9BQUEsMEJBQVRnQzs7T0FDbUIsVUE5QnZCTixNQUFNeEssR0EyQkM4STtPQUdDLGVBOUJSMEIsTUFBTXhLLEdBMkJQNkk7O09BTVMsSUFEREcsaUJBQVJELE1Bb0dLcEosTUFuR0ksVUFBQSxXQWpDRkssR0FvSUZMOztRQWxHUyxJQUFUb0wsa0JBQVMsTUFsQ2JQLE1BQU14SyxHQWdDQ2dKO1FBRU0sT0FBQSwwQkFBVCtCOztPQUNtQixVQW5DdkJQLE1BQU14SyxHQWdDQ2dKO09BR0MsZUFuQ1J3QixNQUFNeEssR0FnQ1ArSTs7T0E3QlMsSUFETUssaUJBQVJILE1Ba0lGdEosTUFqSUksVUFBQSxXQUhGSyxHQW9JRkw7O1FBaElTLElBQVRxTCxrQkFBUyxNQUpiUixNQUFNeEssR0FFUW9KO1FBRUQsT0FBQSwwQkFBVDRCOztPQUMwQixVQUw5QlIsTUFBTXhLLEdBRVFvSjtPQUdOLGVBTFJvQixNQUFNeEssR0FFQWlKOztPQTRFRSxJQURDRSxpQkFDRCxVQUFBLFdBOUVGbkosR0FvSUZMO3FCQXBESSxXQW9ESkEsR0FwSUo2SyxNQUFNeEssR0E2RUdtSjtPQUVJLElBQVQ4QixrQkFBUyxNQS9FYlQsTUFBTXhLLEdBNkVHbUo7T0FFSSxPQUFBLDBCQUFUOEI7O09BekNJLElBREMvQixrQkFBUkssTUErRkc1SixNQTlGSSxXQUFBLFdBdENGSyxHQW9JRkw7O1FBN0ZTLElBQVR1TCxvQkFBUyxNQXZDYlYsTUFBTXhLLEdBcUNHa0o7UUFFSSxPQUFBLDBCQUFUZ0M7O09BQ3FCLFVBeEN6QlYsTUFBTXhLLEdBcUNHa0o7T0FHRCxlQXhDUnNCLE1BQU14SyxHQXFDTHVKOztPQU1PLElBRENGLGtCQUFSSSxNQTBGRzlKLE1BekZJLFdBQUEsV0EzQ0ZLLEdBb0lGTDs7UUF4RlMsSUFBVHdMLG9CQUFTLE1BNUNiWCxNQUFNeEssR0EwQ0dxSjtRQUVJLE9BQUEsMEJBQVQ4Qjs7T0FDcUIsVUE3Q3pCWCxNQUFNeEssR0EwQ0dxSjtPQUdELGVBN0NSbUIsTUFBTXhLLEdBMENMeUo7O09BTU8sSUFEREgsa0JBQVJLLE1BcUZLaEssTUFwRkksV0FBQSxXQWhERkssR0FvSUZMOztRQW5GUyxJQUFUeUwsb0JBQVMsTUFqRGJaLE1BQU14SyxHQStDQ3NKO1FBRU0sT0FBQSwwQkFBVDhCOztPQUM4QixVQWxEbENaLE1BQU14SyxHQStDQ3NKO09BR0M7O2dCQUFFOztpQyxPQWxEVmtCLE1BQU14SztrQkErQ1AySjs7O09BTVMsSUFEREgsa0JBQVJLLE1BZ0ZLbEssTUEvRUksV0FBQSxXQXJERkssR0FvSUZMOztRQTlFUyxJQUFUMEwsb0JBQVMsTUF0RGJiLE1BQU14SyxHQW9EQ3dKO1FBRU0sT0FBQSwwQkFBVDZCOztPQUM4QixVQXZEbENiLE1BQU14SyxHQW9EQ3dKO09BR0M7O2dCQUFFOztpQyxPQXZEVmdCLE1BQU14SztrQkFvRFA2Sjs7O09BTVMsSUFEQUgsa0JBQVJLLE9BMkVJcEssTUExRUksV0FBQSxXQTFERkssR0FvSUZMOztRQXpFUyxJQUFUMkwsb0JBQVMsTUEzRGJkLE1BQU14SyxHQXlERTBKO1FBRUssT0FBQSwwQkFBVDRCOztPQUMrQixVQTVEbkNkLE1BQU14SyxHQXlERTBKO09BR0E7O2dCQUFHO2lELE9BNURYYyxNQUFNeEssV0F5RE4rSjs7O09BTVEsSUFEQUgsa0JBQVJLLE9Bc0VJdEssTUFyRUksV0FBQSxXQS9ERkssR0FvSUZMOztRQXBFUyxJQUFUNEwsb0JBQVMsTUFoRWJmLE1BQU14SyxHQThERTRKO1FBRUssT0FBQSwwQkFBVDJCOztPQUMrQixVQWpFbkNmLE1BQU14SyxHQThERTRKO09BR0E7O2dCQUFHO2lELE9BakVYWSxNQUFNeEssV0E4RE5pSzs7O09BcUJRLElBRENILGtCQUNELFdBQUEsV0FuRkY5SixHQW9JRkw7c0JBL0NJLFdBK0NKQSxHQXBJSjZLLE1BQU14SyxHQWtGRzhKO09BRUksSUFBVDBCLG9CQUFTLE1BcEZiaEIsTUFBTXhLLEdBa0ZHOEo7T0FFSSxPQUFBLDBCQUFUMEI7O09BSUksSUFET3hCLGtCQUNQLFdBQUEsV0F4RkZoSyxHQW9JRkw7c0JBMUNJLFdBMENKQSxHQXBJSjZLLE1BQU14SyxHQXVGU2dLO09BRUYsSUFBVHlCLG9CQUFTLE1BekZiakIsTUFBTXhLLEdBdUZTZ0s7T0FFRixPQUFBLDBCQUFUeUI7O09BaEJJO1FBRFl2QjtRQUFiaEcsUUE0REh2RTtRQTVEQ3dLLE9BNEREeEs7UUE1REp5SyxPQTRESXpLO1FBM0RJLFdBQUEsV0F6RUZLLEdBb0lGTDs7UUExRFMsSUFBVCtMLG9CQUFTLE1BMUVibEIsTUFBTXhLLEdBd0Vja0s7UUFFUCxPQUFBLDBCQUFUd0I7O09BQytCLFVBM0VuQ2xCLE1BQU14SyxHQXdFY2tLO09BR1osZ0JBSFJFLE1BeEVBSSxNQUFNeEssR0F3RURtSyxPQUFFakc7O09BcUJDLElBREFtRyxrQkFDQSxXQUFBLFdBN0ZGckssR0FvSUZMO3NCQXJDSSxXQXFDSkEsR0FwSUo2SyxNQUFNeEssR0E0RkVxSztPQUVLLElBQVRzQixvQkFBUyxNQTlGYm5CLE1BQU14SyxHQTRGRXFLO09BRUssT0FBQSwwQkFBVHNCOztPQUlJLElBRElDLGtCQUNKLFdBQUEsV0FsR0Y1TCxHQW9JRkw7c0JBaENJLFdBZ0NKQSxHQXBJSjZLLE1BQU14SyxHQWlHTTRMO09BRUMsSUFBVEMsb0JBQVMsTUFuR2JyQixNQUFNeEssR0FpR000TDtPQUVDLE9BQUEsMEJBQVRDOztPQUlJLElBRENDLGtCQUNELFdBQUEsV0F2R0Y5TCxHQW9JRkw7c0JBM0JJLFdBMkJKQSxHQXBJSjZLLE1BQU14SyxHQXNHRzhMO09BRUksSUFBVEMsb0JBQVMsTUF4R2J2QixNQUFNeEssR0FzR0c4TDtPQUVJLE9BQUEsMEJBQVRDOztPQUlJLElBRE9DLGtCQUNQLFdBQUEsV0E1R0ZoTSxHQW9JRkw7c0JBdEJJLFdBc0JKQSxHQXBJSjZLLE1BQU14SyxHQTJHU2dNO09BRUYsSUFBVEMsb0JBQVMsTUE3R2J6QixNQUFNeEssR0EyR1NnTTtPQUVGLE9BQUEsMEJBQVRDOztPQUlJLElBRFNDLGtCQUNULFdBQUEsV0FqSEZsTSxHQW9JRkw7c0JBakJJLFdBaUJKQSxHQXBJSjZLLE1BQU14SyxHQWdIV2tNO09BRUosSUFBVEMsb0JBQVMsTUFsSGIzQixNQUFNeEssR0FnSFdrTTtPQUVKLE9BQUEsMEJBQVRDOztPQUlJLElBREFDLGtCQUNBLFdBQUEsV0F0SEZwTSxHQW9JRkw7c0JBWkksV0FZSkEsR0FwSUo2SyxNQUFNeEssR0FxSEVvTTtPQUVLLElBQVRDLG9CQUFTLE1BdkhiN0IsTUFBTXhLLEdBcUhFb007T0FFSyxPQUFBLDBCQUFUQzs7T0FJSSxJQURNQyxrQkFDTixXQUFBLFdBM0hGdE0sR0FvSUZMO3NCQVBJLFdBT0pBLEdBcElKNkssTUFBTXhLLEdBMEhRc007T0FFRCxJQUFUQyxvQkFBUyxNQTVIYi9CLE1BQU14SyxHQTBIUXNNO09BRUQsT0FBQSwwQkFBVEM7O09BeERJLElBRE9DLGtCQUFSbEMsT0FpRUgzSyxNQWhFSSxXQUFBLFdBcEVGSyxHQW9JRkw7O1FBL0RTLElBQVQ4TSxvQkFBUyxNQXJFYmpDLE1BQU14SyxHQW1FU3dNO1FBRUYsT0FBQSwwQkFBVEM7O09BQzJCLFVBdEUvQmpDLE1BQU14SyxHQW1FU3dNO09BR1AsZ0JBdEVSaEMsTUFBTXhLLEdBbUVDc0s7O09BNkRDLElBRENvQyxrQkFDRCxXQUFBLFdBaElGMU0sR0FvSUZMO3NCQUZJLFdBRUpBLEdBcElKNkssTUFBTXhLLEdBK0hHME07T0FFSSxJQUFUQyxvQkFBUyxNQWpJYm5DLE1BQU14SyxHQStIRzBNO09BRUksT0FBQSwwQkFBVEM7O09BSUksSUFEREMsa0JBQ0MsV0FBQSxXQXJJRjVNLEdBb0lGTDtzQkFHSSxXQUhKQSxHQXBJSjZLLE1BQU14SyxHQW9JQzRNO09BRU0sSUFBVEMsb0JBQVMsTUF0SWJyQyxNQUFNeEssR0FvSUM0TTtPQUVNLE9BQUEsMEJBQVRDOzs7Ozs7OztPQTlNUjVFO09BcE1JNUQ7T0F5TUE2RDtPQW1FQXNDOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQy9VZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF1K0JGdko7Ozs7OztJQTZCQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFwZ0NqQm9MOzs7Ozs7O1lBSUFDLFdBQVdoTDtJQUNMLElBQUpDLElBQUk7SUFDUixTQUFRbUc7S0FBTztLQUFBO29CQTJFTDs7Ozs7Y0ExQkEvSCwyQkFBQUE7O2NBRUFHLDZCQUFBQTs7Y0FxQkFJO1VBQ0osOEJBMUVGcUI7b0JBeUVNckI7Ozs7O2NBNURVNkgsbUJBQU53RTtVQVpON0UsS0FZTTZFO1VBRVIsOEJBZkZoTDtVQWdCRSw4QkFoQkZBO29CQWFnQndHOzs7VUFTTTtXQURaRTtXQUFMdUU7V0FDaUIsT0FBQSwrQkFEakJBO1VBQ0gsOEJBdEJGakw7b0JBcUJVMEc7OztjQVdDRSxtQkFBTnNFO1VBL0JEL0UsS0ErQkMrRTtvQkFBTXRFOzs7Y0FHQUUsbUJBQU5xRTtVQWxDRGhGLEtBa0NDZ0Y7b0JBQU1yRTs7O1VBYVc7V0FETEs7V0FBTjdIO1dBQ1csT0FBQSwrQkFEWEE7VUFDVCw4QkFoREZVO29CQStDaUJtSDs7O1VBRks7V0FEQ0Q7V0FBTmtFO1dBQ0ssT0FBQSwrQkFETEE7VUFDZiw4QkE3Q0ZwTDtvQkE0Q3VCa0g7OztjQWtCREcsb0JBQVpwSTtVQTdETmtILEtBNkRNbEg7b0JBQVlvSTs7O1VBdERBO1dBRFdDO1dBQXpCcEc7V0FDYyxPQUFBLCtCQURkQTtVQUNOLDhCQVJGbEI7b0JBT2lDc0g7OztVQUlYO1dBRGNFO1dBQXhCckc7V0FDVSxPQUFBLCtCQURWQTtVQUNWLDhCQVhGbkI7b0JBVW9Dd0g7OztjQTRDTkUsb0JBQVQyRDtVQXJEakJsRixLQXFEaUJrRjtvQkFBUzNEOzs7Y0FHTUUsb0JBQVQwRDtVQXhEdkJuRixLQXdEdUJtRjtvQkFBUzFEOzs7Y0FHbEJFLDhCQUFBQTs7Y0FwQ1RFLG9CQUFMdUQ7VUFDRiw4QkF6QkZ2TCxHQXdCSXVMO29CQUFLdkQ7OztjQUdNRSxvQkFBTHNEO1VBQ1IsOEJBNUJGeEw7VUE2QkUsOEJBN0JGQSxHQTJCVXdMO1VBR1IsOEJBOUJGeEw7b0JBMkJla0k7OztjQXZCQ0csb0JBQUxvRDtVQUhQdEYsS0FHT3NGO29CQUFLcEQ7OztVQWVNO1dBREV1QjtXQUFwQjhCO1dBQ2tCLE9BQUEsK0JBRGxCQTtVQUNGLDhCQW5CRjFMO29CQWtCd0I0Sjs7O2NBaEJqQkUsOEJBQUFBOzs7Y0FvQ0hqTSxjQUFhbUo7VUFDZjs7cUJBQWUyRTthQXRDYnhGLEtBc0Nhd0Y7YUFBUSxPQUFBLDhCQXZDekIzTDtZQXVDMEQ7WUFEdERuQztvQkFBYW1KOzs7O2NBR1o3SSxnQkFBY2lKO1VBQ2pCLDRCQXpDRWpCLE1Bd0NDaEk7b0JBQWNpSjs7O2NBd0JWZixtQkFBTnRHLGVBaEVDb0csS0FnRURwRyxlQUFNc0c7OztJQVdEO0lBM0VKRixLQUZLcEc7SUErRVgsT0FBQSw2QkE5RUVDO0dBK0VlO1lBRWpCNEwscUJBQXNCQyxNQUFLQyxNQUFPLE9BQVBBLEtBQVc7WUFFdENDLG9CQUFvQmxPO0lBQ3RCLElBQWFtQyxPQUFFbEMsZUFET0Q7O3dCQUNUbUMsSUFBRWxDLElBRE9EO1NBS2xCRjtRQUFBQTtpQkFBQUE7O1dBRmlDWTtPQUZ4QnlCO2VBRXdCekI7Ozs7S0FHMUIsSUFESkgsZUFDSSxVQURQVCxHQUpXRztLQUFBQTthQUlSTTs7R0FHUTtHQUdmO0lBREU0TjtNQUNGOztpQkFDT3JPO1NBQ0osVUFESUEseUJBQUFBLFVBRU1zTixJQUZOdE4sTUFFZSxXQUFUc047U0FDRjtRQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBR1RnQixvREFNSmxNO0lBRUY7S0FQSW1NO0tBQ0FDLHFDQUFleE8sR0FBZSxTQUFJO0tBQ2xDeU87S0FDQUM7S0FDR0MsNEJBekJMVjtLQTRCRjs7Ozs7Ozs7OztnQkFBZ0IzSixRQUVBc0s7UUFDWixJQUFVbE47UUFDUjtTQUFHLEtBQUEsNkJBRk9rTixJQUZBdEs7VUFBQUEsbUJBWUEsNEJBVkFzSyxJQUZBdEs7VUFHWixPQURZc0s7O2dCQUNGbE47VUFFeUI7V0FBQSxPQUFBLHVCQUZ6QkE7V0FFcUIsT0FBQTtXQUF2Qm1OLE1BQW9CLHVCQUhoQkQ7O2NBR0pDLE1BSElEO1NBSUwsS0FBQSw2QkFEQ0MsS0FMSXZLO1VBQUFBO1dBU0UsNEJBSk51SyxLQUxJdks7VUFVTCxPQUxDdUs7O1NBRUYsSUFKSWhOLE1BQUFIO1NBQUFBLElBQUFHOztPQVdKOzs7Ozt3QkFiVTs7OztJQXdDWjtLQXpDSlI7S0F5Q0FnQixJQUFJO0tBQ0p5TTthQUNJdEcsS0FBS3VHOzs7b0JBd2NUO1VBdmNPL087Z0JBQUFBO2NBQUFBOztVQWtNSyxJQUREUyxpQkFDQyxVQUFBLFdBcFBaK04sVUFrRE94Tzs7ZUFtTUVzQjtXQUNMLDhCQXZNSmUsR0FzTVNmO3FCQUZFYjs7ZUFNUCw4QkExTUo0QixzQkFvTVc1Qjs7O1VBVUMsSUFEREcsbUJBQ0MsVUFBQSxXQTdQWjROLFVBa0RPeE87O2VBNE1FK0I7V0FDTCw4QkFoTkpNLEdBK01TTjtxQkFGRW5COztlQU1QLDhCQW5OSnlCLHNCQTZNV3pCOzs7VUFpUEMsSUFEREksbUJBQ0MsVUFBQSxXQTdlWndOLFVBa0RPeE87O2VBNGJFZ1A7V0FDTCw4QkFoY0ozTSxHQStiUzJNO3FCQUZFaE87OztjQTFlWDBOO1lBaWZNLDhCQXBjTnJNOztZQXNjTSw4QkF0Y05BO3FCQTZiV3JCOzs7O2NBMWJKaEI7O2NBc1RTMEksbUJBQVoyRSxPQXRUR3JOO2FBbkRQdU87V0E4V2E7WUFKTmhCLE9BSU0sV0F2WGZjLGNBa1hNaEI7WUFDQTRCLFVBQUcxQjtZQUFBQyxPQUFBRDtZQUFIMkIsTUFBQUQ7O2VBQUd6QixPQURISCxNQUNBNkIsTUF2VEdsUDtVQTZUSyxjQUFBLFdBL1dad08sVUF5V0lVOztlQU9LQztXQUNMLDhCQWxVSjlNLEdBaVVTOE07cUJBUk96Rzs7O1dBWUg7WUFBTDBHO2NBOEpWQztvQkFsaEJFYjtvQkFDQUM7b0JBQ0FDO29CQUNHQztnQkFzV0luQjtZQVl1QixPQTdkaENKLFdBaWRTSTtZQVlDb0IsS0FBSyx5QkEvV2J2TjtXQTBDQXlOLHFCQXlUSUksS0FZSU4sSUFEQVEsS0FwVVJOO1dBdVVJLDhCQXhVSnpNO1dBeVVJLDhCQXpVSkEsR0FzVVF1TTtXQUlKLDhCQTFVSnZNO1dBMlVJLDhCQTNVSkEsR0FxVVErTTtXQU9KLDhCQTVVSi9NO3FCQXlUZ0JxRzs7OztjQXNCQUcsbUJBQVp5RyxPQTVVR3RQO2FBbkRQdU87V0FvWWE7WUFKTmdCLE9BSU0sV0E3WWZsQixjQXdZTWlCO1lBQ0FFLFVBQUdEO1lBQUFFLE9BQUFGO1lBQUhHLE1BQUFGOztlQUFHQyxPQURISCxNQUNBSSxNQTdVRzFQO1VBbVZLLGNBQUEsV0FyWVp3TyxVQStYSWtCOztlQU9LQztXQUNMLDhCQXhWSnROLEdBdVZTc047cUJBUk85Rzs7O1dBWUg7WUFBTCtHO2NBd0lWUDtvQkFsaEJFYjtvQkFDQUM7b0JBQ0FDO29CQUNHQztnQkE0WEljO1lBWXVCLE9BbmZoQ3JDLFdBdWVTcUM7WUFZQ0ksT0FBSyx5QkFyWWJ4TztXQTBDQXlOLHFCQStVSVksS0FZSUcsTUFEQUQsT0ExVlJkO1dBNlZJLDhCQTlWSnpNO1dBK1ZJLDhCQS9WSkEsR0E0VlF3TjtXQUlKLDhCQWhXSnhOO1dBaVdJLDhCQWpXSkEsR0EyVlF1TjtXQU9KLDhCQWxXSnZOO3FCQStVZ0J3Rzs7OztjQXNCQUUsbUJBQVorRyxPQWxXRzlQO2FBbkRQdU87V0EwWmE7WUFKTndCLE9BSU0sV0FuYWYxQixjQThaTXlCO1lBQ0FFLFVBQUdEO1lBQUFFLE9BQUFGO1lBQUhHLE1BQUFGOztlQUFHQyxPQURISCxNQUNBSSxNQW5XR2xRO1VBeVdLLGNBQUEsV0EzWlp3TyxVQXFaSTBCOztlQU9LQztXQUNMLDhCQTlXSjlOLEdBNldTOE47cUJBUk9wSDs7O1dBWUg7WUFBTHFIO2NBa0hWZjtvQkFsaEJFYjtvQkFDQUM7b0JBQ0FDO29CQUNHQztnQkFrWklzQjtZQVl1QixPQXpnQmhDN0MsV0E2ZlM2QztZQVlDSSxPQUFLLHlCQTNaYmhQO1dBMENBeU4scUJBcVdJb0IsS0FZSUcsTUFEQUQsT0FoWFJ0QjtXQW1YSSw4QkFwWEp6TTtXQXFYSSw4QkFyWEpBLEdBa1hRZ087V0FJSiw4QkF0WEpoTztXQXVYSSw4QkF2WEpBLEdBaVhRK047V0FPSiw4QkF4WEovTjtxQkFxV2dCMEc7Ozs7Y0FzQkFFLG1CQUFacUgsT0F4WEd0UTthQW5EUHVPO1dBZ2JhO1lBSk5nQyxRQUlNLFdBemJmbEMsY0FvYk1pQztZQUNBRSxVQUFHRDtZQUFBRSxRQUFBRjtZQUFIRyxNQUFBRjs7ZUFBR0MsUUFESEgsTUFDQUksTUF6WEcxUTtVQStYSyxjQUFBLFdBamJad08sVUEyYUlrQzs7ZUFPS0M7V0FDTCw4QkFwWUp0TyxHQW1ZU3NPO3FCQVJPMUg7OztXQVlIO1lBQUwySDtjQTRGVnZCO29CQWxoQkViO29CQUNBQztvQkFDQUM7b0JBQ0dDO2dCQXdhSThCO1lBWXVCLE9BL2hCaENyRCxXQW1oQlNxRDtZQVlDSSxPQUFLLHlCQWpiYnhQO1dBMENBeU4scUJBMlhJNEIsS0FZSUcsTUFEQUQsT0F0WVI5QjtXQXlZSSw4QkExWUp6TTtXQTJZSSw4QkEzWUpBLEdBd1lRd087V0FJSiw4QkE1WUp4TztXQTZZSSw4QkE3WUpBLEdBdVlRdU87V0FPSiw4QkE5WUp2TztxQkEyWGdCNEc7Ozs7Y0FzQkFFLG1CQUFaMkgsUUE5WUc5UTthQW5EUHVPO1dBc2NhO1lBSk53QyxRQUlNLFdBL2NmMUMsY0EwY015QztZQUNBRSxVQUFHRDtZQUFBRSxRQUFBRjtZQUFIRyxNQUFBRjs7ZUFBR0MsUUFESEgsT0FDQUksTUEvWUdsUjtVQXFaSyxjQUFBLFdBdmNad08sVUFpY0kwQzs7ZUFPS0M7V0FDTCw4QkExWko5TyxHQXlaUzhPO3FCQVJPaEk7OztXQVlIO1lBQUxpSTtjQXNFVi9CO29CQWxoQkViO29CQUNBQztvQkFDQUM7b0JBQ0dDO2dCQThiSXNDO1lBWXVCLE9BcmpCaEM3RCxXQXlpQlM2RDtZQVlDSSxPQUFLLHlCQXZjYmhRO1dBMENBeU4scUJBaVpJb0MsS0FZSUcsTUFEQUQsT0E1WlJ0QztXQStaSSw4QkFoYUp6TTtXQWlhSSw4QkFqYUpBLEdBOFpRZ1A7V0FJSiw4QkFsYUpoUDtXQW1hSSw4QkFuYUpBLEdBNlpRK087V0FPSiw4QkFwYUovTztxQkFpWmdCOEc7Ozs7Y0FzQkFFLG1CQUFaaUksUUFwYUd0UjthQW5EUHVPO1dBNGRhO1lBSk5nRCxRQUlNLFdBcmVmbEQsY0FnZU1pRDtZQUNBRSxXQUFHRDtZQUFBRSxRQUFBRjtZQUFIRyxPQUFBRjs7ZUFBR0MsUUFESEgsT0FDQUksT0FyYUcxUjtVQTJhSyxjQUFBLFdBN2Rad08sVUF1ZElrRDs7ZUFPS0M7V0FDTCw4QkFoYkp0UCxHQSthU3NQO3FCQVJPdEk7OztXQVlIO1lBQUx1STtjQWdEVnZDO29CQWxoQkViO29CQUNBQztvQkFDQUM7b0JBQ0dDO2dCQW9kSThDO1lBWXVCLE9BM2tCaENyRSxXQStqQlNxRTtZQVlDSSxPQUFLLHlCQTdkYnhRO1dBMENBeU4scUJBdWFJNEMsTUFZSUcsTUFEQUQsT0FsYlI5QztXQXFiSSw4QkF0Ykp6TTtXQXViSSw4QkF2YkpBLEdBb2JRd1A7V0FJSiw4QkF4Ykp4UDtXQXliSSw4QkF6YkpBLEdBbWJRdVA7V0FPSiw4QkExYkp2UDtxQkF1YWdCZ0g7Ozs7Y0FyV055SSxRQS9ESDlSO2FBK0RHOFI7V0FDRSxJQURTckksbUJBQ1QsV0FBQSxXQWxIWitFLFVBa0RPeE87O2dCQWlFRStSO1lBQ0wsOEJBckVKMVAsR0FvRVMwUDtzQkFGWXRJOzs7WUFNUjthQXRGVXVJO2VBaWZ6QjNDO3FCQWxoQkViO3FCQUNBQztxQkFDQUM7cUJBQ0dDO2lCQThHT21EOzs7OztrQkExRkNwUTtjQUNYO2tCQURXQSwyQkFVWXNRO2VBUmYsWUFBQSxnQkFRZUEsS0FWWnRROztlQUdPLElBSFBHLE1BQUFIO2VBQUFBLElBQUFHOzs7Ozs7O1lBaUdIO2FBSUMsOEJBN0VUUTtpQkFiV0gsNEJBRFk4UDs7Ozs7bUJBQ1psUSxNQUFBSTtlQUNYO3VCQURXSjtnQkFHSCxjQUFBLGdCQUpla1EsS0FDWmxROzs7OztnQkFLUCxJQUxPRixNQUFBRTtnQkFBQUEsTUFBQUY7O2tCQUFBRSwrQkFEWWtRLDBCQUFBQTswQkFXakIsOEJBWGlCQSxRQUNabFE7Ozs7O2FBMkZGLDhCQTlFVE87YUErRVMsOEJBL0VUQTs7c0JBa0VxQm9IOzs7bUJBRExELDZCQUFBQTs7O1VBcUNKO1dBREdEO1dBQVYrRCxJQWxHRXROO1dBbUdLLFdBQUEsV0FySlp3TyxVQWtET3hPOztlQW9HRWlTO1dBQ0wsOEJBeEdKNVAsR0F1R1M0UDtxQkFGTTFJOzs7V0FPUyxXQUFBLCtCQVBuQitEO1dBT0QsOEJBNUdKakw7cUJBcUdla0g7Ozs7VUFXSDtXQURJRztXQUFYd0ksUUE1R0VsUztXQTZHSyxXQUFBLFdBL0pad08sVUFrRE94Tzs7ZUE4R0VtUztXQUNMLDhCQWxISjlQLEdBaUhTOFA7cUJBRk96STs7O1dBTVosOEJBckhKckg7V0FFSW1HLEtBQUt1RyxRQTZHSm1EO1dBUUQsOEJBdkhKN1A7cUJBK0dnQnFIOzs7O1VBWUo7V0FESUM7V0FBWHlJLFFBdkhFcFM7V0F3SEssV0FBQSxXQTFLWndPLFVBa0RPeE87O2VBeUhFcVM7V0FDTCw4QkE3SEpoUSxHQTRIU2dRO3FCQUZPMUk7OztXQU1aLDhCQWhJSnRIO1dBRUltRyxLQUFLdUcsUUF3SEpxRDtXQVFELDhCQWxJSi9QO3FCQTBIZ0JzSDs7OztVQXVESjtXQURVSTtXQUFYcEksSUE3S0ozQjtXQTZLRmtPLE9BN0tFbE87V0E4S0ssV0FBQSxXQWhPWndPLFVBa0RPeE87O2VBK0tFc1M7V0FDTCw4QkFuTEpqUSxHQWtMU2lRO3FCQUZhdkk7Ozs7O1lBTUYsR0FOZm1FLGtCQTNVUGY7YUFrVlEsOEJBdkxOOUs7OztZQXdMWSxHQVJQNkw7YUFTQyw2QkF6TE43TCxRQTNKRjhLOzthQXNWUSw2QkEzTE45SyxRQWdMSzZMOztXQVlXLElBQVJxRSxRQUFRLFdBeE9iNUQsWUE0TkVULE1BQU12TTtXQWFKLEdBYklBLEtBWUg0UTtZQUVrQixXQUFBLCtCQWRmNVE7WUFjTCw4QkE5TE5VOzs7WUFnTU0sOEJBaE1OQSxHQTRMUWtRO1dBS0osOEJBak1KbFE7cUJBZ0xzQjBIOzs7O1VBcEJWO1dBRGdCRTtXQUFYd0QsTUF4SlZ6TjtXQXdKSXdTLFNBeEpKeFM7V0F5SkssV0FBQSxXQTNNWndPLFVBa0RPeE87O2VBMEpFeVM7V0FDTCw4QkE5SkpwUSxHQTZKU29RO3FCQUZtQnhJOzs7OztZQU1SLEdBTlR1SSxvQkF0VGJyRjthQTZUUSw4QkFsS045Szs7O1lBbUtZLEdBUkRtUTthQVNMOztlQXBLTm5ROztlQTNKRjhLO2VBQUFBOzthQWtVUSw2QkF2S045SyxRQTJKV21RLFFBQUFBOztXQWFLLElBQVJFLFVBQVEsV0FwTmIvRCxZQXVNUTZELFFBQU0vRTtXQWNWLEdBZFVBLE9BYVRpRjtZQUVrQixXQUFBLCtCQWZUakY7WUFlWCw4QkExS05wTDs7O1lBNEtNLDhCQTVLTkEsR0F3S1FxUTtXQUtKLDhCQTdLSnJRO3FCQTJKNEI0SDs7OztVQTBJaEI7V0FEZUU7V0FBZjVGLFFBalNMdkU7V0FpU0cyUyxPQWpTSDNTO1dBaVNGeUssT0FqU0V6SztXQWtTSyxXQUFBLFdBcFZad08sVUFrRE94Tzs7ZUFtU0U0UztXQUNMLDhCQXZTSnZRLEdBc1NTdVE7cUJBRmtCekk7OztXQU1mO1lBQUowSTtjQXlMVnhEO29CQWxoQkViO29CQUNBQztvQkFDQUM7b0JBQ0dDO2dCQWdWT2dFO1dBT04sOEJBM1NKdFE7V0E0U3dCLFdBQUEsK0JBUm5Cb0k7V0FRRCw4QkE1U0pwSTtXQTZTSSw4QkE3U0pBO1dBOFNPLEdBVktrQztZQVlKLDhCQWhUUmxDO1lBaVQ0QixXQUFBLCtCQWJoQmtDO1lBYUosOEJBalRSbEM7WUFrVFEsOEJBbFRSQTs7V0FvVEksOEJBcFRKQTtXQXFUSSw4QkFyVEpBLEdBMFNRd1E7V0FZSiw4QkF0VEp4UTtxQkFvUzJCOEg7Ozs7VUFyUWY7V0FEMEJFO1dBQWxCeUksV0EzQmI5UztXQTJCTytTLE9BM0JQL1M7V0EyQkN1RCxPQTNCRHZEO1dBMkJIZ1QsS0EzQkdoVDtXQTRCSyxXQUFBLFdBOUVad08sVUFrRE94Tzs7ZUE2QkVpVDtXQUNMLDhCQWpDSjVRLEdBZ0NTNFE7cUJBRjZCNUk7OztXQU10Qjs7Y0FBQSxrQ0FOWjJJLG9CQUFBQSxJQUFJelA7O1lBV087O2FBSkkyUDthQUFOQzthQUlFLE9BQUEsK0JBSklEOzs7O2VBRUosK0JBRkZDO3VCQVBDSjs7Y0FBd0IxSTs7O1lBNUJsQzdCO2NBQUt1RztjQTBDVzt1Q0FkQStELDJCQUFBQTtzQkFBa0J6STs7Ozs7VUFtQjFCO1dBRDZCRTtXQUFsQjZJLGFBN0NoQnBUO1dBNkNXK04sTUE3Q1gvTjtXQTZDS3dELFNBN0NMeEQ7V0E2Q0NxVCxPQTdDRHJUO1dBOENLLFdBQUEsV0FoR1p3TyxVQWtET3hPOztlQStDRXNUO1dBQ0wsOEJBbkRKalIsR0FrRFNpUjtxQkFGZ0MvSTs7O1dBTXpCOztjQUFBO3VDQU5SOEksc0JBQUFBLE1BQUk3UDs7WUFXRzs7YUFKRytQO2FBQUxDO2FBSUUsT0FBQSwrQkFKR0Q7YUFHSCxPQUFBLCtCQUhGQzs7c0JBRUUsK0JBVEd6RixtQkFBdUJ4RDs7O1lBOUNyQy9CO2NBQUt1RztjQTJEVzt1Q0FiR3FFO2dCQUFBQTtzQkFBa0I3STs7Ozs7Y0F3THBDa0osVUFyT0V6VDtlQUFBQTtlQXFPMEJpTSxvQkFBbkJ5SCxVQXJPUDFUO1dBc09GLEdBQUEsNkJBREF5VDtZQUVPO2FBQVJFLFVBN1NOdkYsb0JBMlNnQnNGO2FBR0YsV0FBQSxXQTFSWmxGLFVBa0RPeE87O2lCQXlPRTRUO2FBQ0wsOEJBN09KdlIsR0E0T1N1Ujt1QkFKd0IzSDs7O1lBUTdCLDZCQWhQSjVKLFFBd09Lb1I7WUFTbUIsV0E4TjFCSSxnQkFyT01GO1lBT0EsOEJBalBKdFI7WUFrUEksNkJBbFBKQTtzQkF3T2lDNEo7Ozs7VUFjckI7V0FEdUJ2QjtXQUFkZ0QsT0FsUGQxTjtXQWtQTzhULFFBbFBQOVQ7V0FtUEgrVCxVQXpUTjNGLG9CQXdUZ0IwRjtXQUVGLFdBQUEsV0F0U1p0RixVQWtET3hPOztlQXFQRWdVO1dBQ0wsOEJBelBKM1IsR0F3UFMyUjtxQkFIMEJ0Sjs7O1dBTy9CLDZCQTVQSnJJLFFBd09Lb1I7V0FxQm1CLFdBa04xQkksZ0JBek5NRTtXQU9BLDhCQTdQSjFSO1dBOFBJLDhCQTlQSkE7V0FFSW1HLEtBQUt1RyxRQW1QWXJCO1dBV2pCLDZCQWhRSnJMLFFBd09Lb1I7cUJBYThCL0k7Ozs7VUFldkI7V0FENkJ5QjtXQUFkd0IsU0FoUXBCM047V0FnUWFpVSxVQWhRYmpVO1dBZ1FJa1UsWUFoUUpsVTtXQWlRSG1VLFVBdlVOL0Ysb0JBc1VzQjZGO1dBRVIsV0FBQSxXQXBUWnpGLFVBa0RPeE87O2VBbVFFb1U7V0FDTCw4QkF2UUovUixHQXNRUytSO3FCQUhnQ2pJOzs7V0FPckI7bUJBUE93QjtnQkFPUCw2QkFQVHVHO1lBU0gsNkJBNVFSN1IsUUFtUVc2UjtZQVVpQixXQWtNOUJMLGdCQTNNTU07WUFTSSw4QkE3UVI5UjtZQThRUSw4QkE5UVJBO3NCQW1ReUM4Sjs7O1dBZ0JqQyw2QkFuUlI5SixRQW1RVzZSO1dBaUJpQixXQTJMOUJMLGdCQTNNTU07V0FnQkksOEJBcFJSOVI7V0FxUlEsOEJBclJSQTtXQUVJbUcsS0FBS3VHLFFBaVFrQnBCO1dBb0JuQiw2QkF2UlJ0TCxRQW1RVzZSO3FCQUE4Qi9IOzs7O1VBeUI3QjtXQURXRTtXQUFWZ0ksT0F4Uk5yVTtXQXlSSyxXQUFBLFdBM1Vad08sVUFrRE94Tzs7ZUEwUkVzVTtXQUNMLDhCQTlSSmpTLEdBNlJTaVM7cUJBRmNqSTs7ZUFNbkIsOEJBalNKaEssR0EyUmFnUyxpQkFBVWhJOzs7VUFwRVg7V0FERUU7V0FBVmdJLE9Bbk5HdlU7V0FvTkssV0FBQSxXQXRRWndPLFVBa0RPeE87O2VBcU5Fd1U7V0FDTCw4QkF6TkpuUyxHQXdOU21TO3FCQUZLakk7O2VBTVYsOEJBNU5KbEssR0FzTklrUyxpQkFBVWhJOzs7VUFVRjtXQURRRTtXQUFWZ0ksT0E1Tkh6VTtXQTZOSyxXQUFBLFdBL1Fad08sVUFrRE94Tzs7ZUE4TkUwVTtXQUNMLDhCQWxPSnJTLEdBaU9TcVM7cUJBRldqSTs7ZUFNaEIsOEJBck9KcEssR0ErTlVvUyxpQkFBVWhJOzs7VUEzTVI7V0FEU0U7V0FBVm1CLElBaEJKOU47V0FpQkssV0FBQSxXQW5FWndPLFVBa0RPeE87O2VBa0JFMlU7V0FDTCw4QkF0Qkp0UyxHQXFCU3NTO3FCQUZZaEk7OztXQU1qQiw4QkF6Qkp0SztXQUVJbUcsS0FBS3VHLFFBaUJFakI7V0FRUCw4QkEzQkp6TDtxQkFtQnFCc0s7Ozs7VUFpRVQ7V0FEaUJFO1dBQWYrSCxVQWhGUDVVO1dBZ0ZFNlUsUUFoRkY3VTtXQWdGSDhVLFFBaEZHOVU7V0FpRkssV0FBQSxXQW5JWndPLFVBa0RPeE87O2VBa0ZFK1U7V0FDTCw4QkF0RkoxUyxHQXFGUzBTO3FCQUZvQmxJOzs7V0FNekIsOEJBekZKeEs7V0EwRndCLFdBQUEsK0JBUGZ3UztXQU9MLDhCQTFGSnhTO1dBMkZJLDhCQTNGSkE7V0E0RndCLFdBQUEsK0JBVHBCeVM7V0FTQSw4QkE1Rkp6UztXQTZGSSw4QkE3RkpBO1dBOEZPLEdBWE91UztZQVlQLDhCQS9GUHZTO1lBZ0cyQixXQUFBLCtCQWJidVM7WUFhUCw4QkFoR1B2UztZQWlHTyw4QkFqR1BBOztXQWtHSSw4QkFsR0pBO3FCQW1GNkJ3Szs7OztVQS9FakI7V0FEQUU7V0FBVmlJLElBQUtoVjtXQUNLLFdBQUEsV0FuRFp3TyxVQWtET3hPOztlQUVFaVY7V0FDTCw4QkFOSjVTLEdBS1M0UztxQkFGR2xJOzs7V0FNRDs7Y0FBQSxrQ0FOVGlJLG9CQUFBQSxHQTlDSjVTOztnQkFxRGN3TDtZQVJScEYsS0FBS3VHLFFBUUduQjs7OzthQUd1QyxXQXpEaERlO2FBeURzQyxXQTFEekNEO2FBMERnQyxXQTNEaENEO2FBMkRzQixXQTVEdEJEO1lBMkRhOztlQUFBO3dDQVRYd0c7aUJBQUFBO3FCQURPakc7O2tCLE9BaWVYTTs7aUJBOWdCQWpOOztpQkEwRGdCOFM7YUFBSyw4QkFmbkI3UyxHQWVjNlM7OztxQkFaRm5JOzs7O1VBbUlBO1dBRFI3TSxJQWxJR0Y7V0FrSXlCNko7V0FDcEIsV0FBQSxXQXJMWjJFLFVBa0RPeE87O2VBb0lFbVY7V0FDTCw4QkF4SUo5UyxHQXVJUzhTO3FCQUZ1QnRMOzs7OztzQkFsSXpCN0o7b0JBQUFBOzs7V0F3SUgsOEJBM0lKcUM7V0E4SUk7O3NCQUVRK1M7Y0FDRiw4QkFqSlYvUztjQUVJbUcsS0FBS3VHLGdCQThJR3FHO2NBRUYsT0FBQSw4QkFsSlYvUzthQW1KcUM7YUFkakNuQzs7O3NCQWxJR0Y7b0JBQUFBOzs7V0FtSkgsOEJBdEpKcUM7cUJBcUlnQ3dIOzs7OztJQW5JNUJyQixRQTdDTnBHO0lBd2ZpQixXQUFBLDRCQTVjZjBNO0lBNGNKLFdBQUEsNkJBN2NJek07O1lBK2NGd1IsZ0JBQWdCQztJQUNWLElBQUp6UixJQUFJO0lBQ1I7OztPQUNFLHNCQVFJd0I7bUJBSUEsT0FBQSw2QkFkRnhCLFFBVUV3QjtXQVBTNEU7T0FDSCxPQUFBLDhCQURHQTtpQkFHRTtzQ0FIRkE7bUJBTVAsNkJBVEpwRyxRQVVFd0IsR0FQUzRFO21CQUlQLDZCQVBKcEcsUUFVRXdCLEdBUFM0RTtpQkFFUCw2QkFMSnBHLFFBVUV3QixHQVBTNEU7TUFZWjtNQWhCZXFMO0lBRWxCLE9BQUEsNkJBREl6UjtHQWlCYTtZQUVmZ04sNEJBSUNnRyxJQUNEalQ7O0tBSkVvTSxxQ0FBZXhPLEdBQWUsU0FBSTtLQUNsQ3lPO0tBQ0FDO0lBSUEsT0EzaEJFSjtxQkFxaEJGRSxlQUNBQyxjQUNBQyxRQUNEMkcsSUFDRGpUOzs7WUFHQWtULGNBQWUvRyxxQkFBb0JuTTtJQUNyQyxPQTdoQk1rTSx1QkE0aEJXQyxpQ0FBb0JuTTtHQUNlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFHOUNtVCxZQUFZblQ7SUFDVixJQUFKQyxJQUFJO2FBQ0FtRztLQUFPO0tBQUE7b0JBb0pMOzs7OztjQTdEQS9IO1VBQ0osOEJBekZGNEI7b0JBd0ZNNUI7OztjQUdBRztVQUNKLDhCQTVGRnlCO29CQTJGTXpCOzs7Y0F1REFJO1VBQ0osOEJBbkpGcUI7b0JBa0pNckI7Ozs7O2NBOUJHMEgsbUJBQU4yRTtVQUNELDhCQXJIRmhMO1VBQ0ltRyxLQW1IRDZFO1VBR0QsOEJBdkhGaEw7b0JBb0hTcUc7OztjQUtBRyxtQkFBTjBFO1VBQ0QsOEJBMUhGbEw7VUFDSW1HLEtBd0hEK0U7VUFHRCw4QkE1SEZsTDtvQkF5SFN3Rzs7O2NBS0FFLG1CQUFOeUU7VUFDRCw4QkEvSEZuTDtVQUNJbUcsS0E2SERnRjtVQUdELDhCQWpJRm5MO29CQThIUzBHOzs7Y0FLQUUsbUJBQU5xRztVQUNELDhCQXBJRmpOO1VBQ0ltRyxLQWtJRDhHO1VBR0QsOEJBdElGak47b0JBbUlTNEc7OztjQUtBRSxtQkFBTm9HO1VBQ0QsOEJBeklGbE47VUFDSW1HLEtBdUlEK0c7VUFHRCw4QkEzSUZsTjtvQkF3SVM4Rzs7O2NBS0FFLG1CQUFOb0c7VUFDRCw4QkE5SUZwTjtVQUNJbUcsS0E0SURpSDtVQUdELDhCQWhKRnBOO29CQTZJU2dIOzs7Y0E1R09JLG1CQUFOcUc7VUFDUiw4QkFsQ0Z6TjtVQUNJbUcsS0FnQ01zSDtVQUdSLDhCQXBDRnpOO29CQWlDZ0JvSDs7O2NBUU5ELG1CQUFMOEQ7VUFDSCw2QkExQ0ZqTCxRQXlDS2lMOzs7O2VBUUMvRCxRQVJJQztXQUVJO2lCQU1SRDswQkFBQUE7OztnQkFMVUcsUUFLVkgsVUFMS3FFO1lBQ0wsNkJBN0NOdkwsUUE0Q1d1TDtZQUtMckUsUUFMVUc7OztVQU1kLDZCQWxERnJIO29CQWlETWtIOzs7Y0FHS0ksb0JBQU5vRztVQUNILDhCQXJERjFOO1VBQ0ltRyxLQW1EQ3VIO1VBR0gsOEJBdkRGMU47b0JBb0RXc0g7OztjQUtBRSxvQkFBTm9HO1VBQ0gsOEJBMURGNU47VUFDSW1HLEtBd0RDeUg7VUFHSCw4QkE1REY1TjtvQkF5RFd3SDs7O2NBVUhFLG9CQUFMN0o7VUFDRCw2QkFwRUZtQztVQXFFRTs7cUJBQWMrUzthQUFNLDZCQXJFdEIvUzthQUNJbUcsS0FvRVk0TTthQUF3QixPQUFBLDZCQXJFeEMvUztZQXFFNkQ7WUFGMURuQztVQUdELDZCQXRFRm1DO29CQW1FUTBIOzs7Y0FMQUUsb0JBQUx6SjtVQUNELDZCQS9ERjZCO1VBZ0VFOztxQkFBYytTO2FBQU0sNkJBaEV0Qi9TO2FBQ0ltRyxLQStEWTRNO2FBQXdCLE9BQUEsNkJBaEV4Qy9TO1lBZ0U4RDtZQUYzRDdCO1VBR0QsNkJBakVGNkI7b0JBOERRNEg7OztjQWVDRSxvQkFBTFc7VUFDRiw2QkE5RUZ6STtVQStFRTs7cUJBQWMrUzthQUFNLDZCQS9FdEIvUzthQUNJbUcsS0E4RVk0TTthQUF3QixPQUFBLDZCQS9FeEMvUztZQStFNkQ7WUFGekR5STtVQUdGLDZCQWhGRnpJO29CQTZFUzhIOzs7Y0FMQUUsb0JBQUxVO1VBQ0YsNkJBekVGMUk7VUEwRUU7O3FCQUFjK1M7YUFBTSw2QkExRXRCL1M7YUFDSW1HLEtBeUVZNE07YUFBd0IsT0FBQSw2QkExRXhDL1M7WUEwRThEO1lBRjFEMEk7VUFHRiw2QkEzRUYxSTtvQkF3RVNnSTs7O2NBVVFFLG9CQUFONUk7VUFDVCw2QkFuRkZVLFNBa0ZXVjtvQkFBTTRJOzs7Y0FHTUcsb0JBQU4rQztVQUNmLDZCQXRGRnBMLFNBcUZpQm9MO29CQUFNL0M7OztVQTZCVztXQURadUI7V0FBVjFIO1dBQUZqRDtXQUFMbUo7V0FDNkIsT0EvSHBDNEUsdUJBOEhZL047VUFDUiw2QkFsSEZlLFNBaUhLb0ksWUFBT2xHO29CQUFVMEg7OztjQXRGSUUsb0JBQVo0RyxpQkFBTnhQO1VBQ04sNkJBNUJGbEIsU0EyQlFrQixNQUFNd1A7b0JBQVk1Rzs7O2NBR0dFLG9CQUFYMEIsZ0JBQU52SztVQUNWLDZCQS9CRm5CLFNBOEJZbUIsUUFBTXVLO29CQUFXMUI7OztVQXVFTTtXQURMRTtXQUFUbUI7V0FBUG9HO1dBQVRMO1dBQzhCLE9BdElyQ0ksZ0JBcUlnQkM7VUFDWiw2QkFyR0Z6UixTQW9HS29SO1VBbkdEakwsS0FtR2lCa0Y7VUFHbkIsNkJBdkdGckw7b0JBb0c4QmtLOzs7VUFNVztXQURMRTtXQUFUa0I7V0FBUG9HO1dBQVRHO1dBQzhCLE9BM0kzQ0wsZ0JBMElzQkU7VUFDbEIsNkJBMUdGMVIsU0F5R1c2UjtVQXhHUDFMLEtBd0d1Qm1GO1VBR3pCLDZCQTVHRnRMO29CQXlHb0NvSzs7O2NBS2xCRSxvQkFBTDVLO1VBQ1gsNkJBL0dGTSxTQThHYU47b0JBQUs0Szs7O2NBaEJURSxvQkFBTG1DO1VBQ0YsNkJBL0ZGM00sU0E4RkkyTTtvQkFBS25DOzs7Y0FHTUUsb0JBQUxvQztVQUNSLDZCQWxHRjlNLFNBaUdVOE07b0JBQUtwQzs7O2NBM0VDRSxvQkFBTGE7VUFDVCw4QkF2QkZ6TDtVQUNJbUcsS0FxQk9zRjtVQUdULDhCQXpCRnpMO29CQXNCZ0I0Szs7OztXQWdCUXVJO1dBQVZ0QztXQUFMTTtXQUFMc0I7VUFDRiw2QkF2Q0Z6UyxTQXNDSXlTLE9BQUt0QixLQUFLTjtvQkFBVXNDOzs7VUFuQ2Y7V0FERkM7V0FBTFQ7V0FDTzthQUFBLGtDQURQQSxvQkFBQUEsR0FIWTVTOztlQUtGeUw7V0FDTCw4QkFMUHhMO1dBQ0ltRyxLQUdRcUY7V0FHTCw4QkFQUHhMOzs7V0FTZTs7Y0FBQTt1Q0FQYjJTLG9CQUFBQSxHQUhBTyxhQUFZblQ7O2dCQVdJdU47WUFDTCw4QkFYYnROO1lBWWEsOEJBWmJBLEdBVWtCc047WUFHTCw4QkFiYnROOzs7WUFlcUI7O2VBQUE7d0NBYm5CMlM7aUJBQUFBOzsrQixPQWZKM0Y7aUJBWWdCak47O2lCQWlCVStOO2FBQ0wsOEJBakJuQjlOO2FBa0JtQiw4QkFsQm5CQSxHQWdCd0I4TjthQUdMLDhCQW5CbkI5Tjs7OztvQkFFT29UOzs7SUFtSkM7SUFwSkpqTixLQUZVcEc7SUF3SmhCLE9BQUEsNkJBdkpFQztHQXdKZTtZQUdqQnFULDJCQUEyQnBVO0lBQzdCO0tBQUllLElBQUksbURBRHFCZjtrQ0FBQUE7S0FDckI7O1NBQ05JOztNQUNRLElBK0JHQyxJQS9CSCxnQkFIbUJMLEdBRTNCSSxJQUNRLE9BK0JHQzs7Ozs7Ozs7VUEvQkg7Ozs7O3NCQURSRCxhQXVCSSxzQkF6QnVCSjs7OEJBeUJLLGdCQXpCTEEsR0FFM0JJO3NCQXdCTSw4QkF6QkpXO2FBMEJFLDhCQTFCRkEsR0FpQ1NWOzs7OzJCQWhDWEQ7cUNBdUNpQixnQkF6Q1VKLEdBRTNCSTtzQkF3Q08sOEJBekNMVzthQTBDRyw4QkExQ0hBLEdBaUNTVjs7OzhCQWhDWEQ7Ozs7Y0FpQnVCLFlBQUEsZ0JBbkJJSixHQUUzQkk7Ozs7Ozs7Ozs7dUJBQUFBLG1DQUYyQko7OytCQW9CUSxnQkFwQlJBLEdBRTNCSTs7O3NCQW9CTSw4QkFyQkpXO2FBc0JFLDhCQXRCRkEsR0FpQ1NWOzs7OEJBaENYRDs7OztjQVd1QixjQUFBLGdCQWJJSixHQUUzQkk7Ozs7Ozs7OzswQkFBQUEsbUNBRjJCSjs7OzhCQWNTLGdCQWRUQSxHQUUzQkk7dUNBWW1ELGdCQWR4QkosR0FFM0JJOzs7Ozs7c0JBY00sOEJBZkpXO2FBZ0JFLDhCQWhCRkEsR0FpQ1NWOzs7NEJBaENYRDs7cUJBSWEsZ0JBTmNKLEdBRTNCSTs7Ozt3QkFBQUEsbUNBRjJCSjs7Z0NBT3FCLGdCQVByQkEsR0FFM0JJOzs7OztzQkFRTSw4QkFUSlc7YUFVRSw4QkFWRkEsR0FpQ1NWOzs7d0JBaENYRCxPQTJCSSxzQkE3QnVCSjs7Y0E4QlgsY0FBQSxnQkE5QldBLEdBRTNCSTs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCQThCTSw4QkEvQkpXO2FBZ0NFLDhCQWhDRkEsR0FpQ1NWOzs7OEJBaENYRDs7OztjQWtDZ0IsY0FBQSxnQkFwQ1dKLEdBRTNCSTs7Ozs7Ozs7c0JBb0NNLDhCQXJDSlc7YUFzQ0UsOEJBdENGQSxHQWlDU1Y7Ozs7Ozs7Ozs7OztRQVdQLDhCQTVDRlU7UUE2Q0UsOEJBN0NGQSxHQWlDU1Y7OztPQWNQLDhCQS9DRlUsR0FpQ1NWOztNQWhDWCxXQUFBRDtrQkFBQUE7TUFBQUE7OztJQWdEQSxPQUFBLDZCQWpERVc7R0FpRGU7WUFFYnNULGVBQWV2VDtJQUNyQjtLQUFxRCxXQWpOL0NtVCxZQWdOZW5UO0tBQ1A7O0lBd0JOLElBQUpDLElBQUk7SUFDUixTQUFJdVQsV0FBV3JVO0tBQUk7UUFBSkE7VUFBSUc7O09BQWtCLDhCQURqQ1c7T0FDaUMsV0FBbEJYO1VBQUpILE1BQUlHO09BQUFBOzs7O0lBQTRDO0lBQzlDLElBQWJtVTthQUNJck4sZ0JBMUJJc04sYUEwQnFEdFY7U0FBbER1VixrQ0FBb0JDO2NBSTdCcE4sa0JBQXlEa04sYUFBWTVWOztPQUE5RCtWLGlDQUpFRjtPQUl5QkcsOEJBSkxGO01BSzdCLE9BTEV4TixTQUlLeU4sb0JBQTJCQyxlQUF1QkosYUFBWTVWOztLQUd6RSxLQVArRE0sS0FpVHZEO2lCQWpUdURBOzs7O2FBNEx2REMsS0E1THVERDtTQTZMN0QsOEJBaE1BNkI7U0FnTUEsT0F6TEV1RyxhQTlCTWtOLGFBc05GclY7O2FBR0FHLE9BL0x1REo7U0FnTTdELDhCQW5NQTZCO1NBbU1BLE9BNUxFdUcsYUE5Qk1rTixhQXlORmxWOzs7VUEwR0FJLE9BelN1RFI7dUJBMFMxRCw2QkE3U0g2Qjs7Ozt5QkE4U0ksNkJBOVNKQTs7V0ErU3NCO1lBQUEsT0FBQSw2QkEvU3RCQTswQkErU1EsNkJBL1NSQTs7WUFnVHlCO2FBQUEsT0FBQSw2QkFoVHpCQTsyQkFnVFcsNkJBaFRYQTs7Ozs7Ozs7a0JBa1RBLDhCQWxUQUE7U0FrVEEsT0EzU0V1RyxhQTlCTWtOLGFBbVVGOVU7Ozs7WUE5QkcwSCxPQTNRb0RsSSxRQTJRMUQ2TTtRQUNILDhCQS9RQWhMO1FBT0V1RyxhQTlCTWtOLGFBcVNMekk7UUFHSCw4QkFqUkFoTDtRQWlSQSxPQTFRRXVHLGFBOUJNa04sYUFxU0NwTjs7WUFLQUcsT0FoUm9EckksUUFnUjFEK007UUFDSCw4QkFwUkFsTDtRQU9FdUcsYUE5Qk1rTixhQTBTTHZJO1FBR0gsOEJBdFJBbEw7UUFzUkEsT0EvUUV1RyxhQTlCTWtOLGFBMFNDak47O1lBS0FFLE9BclJvRHZJLFFBcVIxRGdOO1FBQ0gsOEJBelJBbkw7UUFPRXVHLGFBOUJNa04sYUErU0x0STtRQUdILDhCQTNSQW5MO1FBMlJBLE9BcFJFdUcsYUE5Qk1rTixhQStTQy9NOztZQUtBRSxPQTFSb0R6SSxRQTBSMUQ4TztRQUNILDhCQTlSQWpOO1FBT0V1RyxhQTlCTWtOLGFBb1RMeEc7UUFHSCw4QkFoU0FqTjtRQWdTQSxPQXpSRXVHLGFBOUJNa04sYUFvVEM3TTs7WUFLQUUsT0EvUm9EM0ksUUErUjFEK087UUFDSCw4QkFuU0FsTjtRQU9FdUcsYUE5Qk1rTixhQXlUTHZHO1FBR0gsOEJBclNBbE47UUFxU0EsT0E5UkV1RyxhQTlCTWtOLGFBeVRDM007O1lBS0FFLE9BcFNvRDdJLFFBb1MxRGlQO1FBQ0gsOEJBeFNBcE47UUFPRXVHLGFBOUJNa04sYUE4VExyRztRQUdILDhCQTFTQXBOO1FBMFNBLE9BblNFdUcsYUE5Qk1rTixhQThUQ3pNOztZQXpRQ3lHO2FBQUFBLFVBRE10RyxPQTFCNkNoSixRQTBCdkMsT0F0QnBCb0ksYUE5Qk1rTixhQW9EUXRNO1lBQ0FDLE9BM0I2Q2pKO1FBNEI3RCxHQTVCK0J3VjtZQUFwQkQ7VUFGWEgsV0F4QlFFOztVQXdCUkYsV0F4QlFFO1FBOEJObE4sZ0JBOUJNa04sYUFxREVoRztRQU9WLDZCQXJDQXpOO1FBcUNBLE9BOUJFdUcsZ0JBOUJNa04sYUFxRFFyTTs7UUFhTTtTQURaRixRQXZDbUQvSTtTQXVDeEQ4TTtTQUNpQixPQXhIeEJvSSwyQkF1SE9wSTtRQUNMLDZCQTNDQWpMO1FBMkNBLE9BcENFdUcsYUE5Qk1rTixhQWlFRXZNOztZQUdDRyxRQTFDa0RsSixRQTBDeER1UDtRQUNMLDhCQTlDQTFOO1FBT0V1RyxhQTlCTWtOLGFBb0VIL0Y7UUFHTCw4QkFoREExTjtRQWdEQSxPQXpDRXVHLGFBOUJNa04sYUFvRUdwTTs7WUFLQUMsUUEvQ2tEbkosUUErQ3hEeVA7UUFDTCw4QkFuREE1TjtRQU9FdUcsYUE5Qk1rTixhQXlFSDdGO1FBR0wsOEJBckRBNU47UUFxREEsT0E5Q0V1RyxhQTlCTWtOLGFBeUVHbk07OztTQWtCSEUsUUFqRXFEcko7U0FpRTFEc0s7b0JBQ0EsNkJBckVIekk7O1NBcUV3QztVQUFBLE9BQUEsNkJBckV4Q0E7d0JBcUUwQiw2QkFyRTFCQTs7O2lCQXNFSyw4QkF0RUxBO1FBdUVBOzttQkFBYytTO1dBdEVkUSxXQXhCUUU7V0FnR00sNkJBekVkelQ7V0FPRXVHLGdCQTlCTWtOLHFCQThGTVY7V0FHQSxPQUFBLDhCQTFFZC9TO1VBMkVxQztVQVBsQ3lJO2lCQTNGS2dMLGFBb0dnQiw4QkE3RXhCelQ7UUE2RXdCLE9BdEV0QnVHLGFBOUJNa04sYUEyRkFqTTs7O1NBYkFFLFFBcERxRHZKO1NBb0QxRHVLO29CQUNBLDZCQXhESDFJOztTQXdEd0M7VUFBQSxPQUFBLDZCQXhEeENBO3dCQXdEMEIsNkJBeEQxQkE7OztpQkF5REssOEJBekRMQTtRQTBEUSxJQUFKb0w7UUFDSjs7bUJBQWMySDtXQURWM0g7V0F6REptSSxXQXhCUUU7V0FxRk0sNkJBOURkelQsU0EwRElvTDtXQW5ERjdFLGdCQTlCTWtOLHFCQWtGTVY7V0FJQSxPQUFBLDhCQS9EZC9TO1VBZ0VxQztVQVRsQzBJO2lCQTlFSytLLGFBeUZnQiw4QkFsRXhCelQ7UUFrRXdCLE9BM0R0QnVHLGFBOUJNa04sYUE4RUEvTDs7WUFvQ0NFLFFBeEZvRHpKLFFBd0Z6RHdLO1FBQ0o7O21CQUFjb0s7V0FDWixlQUFHLDZCQTdGTC9TOztZQTZGMEM7YUFBQSxPQUFBLDZCQTdGMUNBOzJCQTZGNEIsNkJBN0Y1QkE7OztvQkE4Rk8sOEJBOUZQQTtXQUNBdVQsV0F4QlFFO1dBdUhOLDZCQWhHRnpUO1dBZ0dFLE9BekZBdUcsZ0JBOUJNa04scUJBbUhNVjtVQUs2QjtVQU52Q3BLOzs7V0FBS2Y7b0JBQUFBOzs7Ozs7O3VCQUFBQTs7Ozs7Ozs7VUFZUCw4QkF2R0Y1SDs7OztRQXVHRSxPQWhHQXVHLGFBOUJNa04sYUFrSEM3TDs7UUFYRCxJQURDRSxRQTVFb0QzSixRQTRFekR5SyxnQkFDQWtMO1FBQ0o7O21CQUFjZjtXQUNaLGVBQUcsNkJBbEZML1M7O1lBa0YwQzthQUFBLE9BQUEsNkJBbEYxQ0E7MkJBa0Y0Qiw2QkFsRjVCQTs7O29CQW1GTyw4QkFuRlBBO1dBQ0F1VCxXQXhCUUU7V0F1R0pLO1dBTUYsNkJBdEZGOVQsU0FnRkk4VDtXQU1GLE9BL0VBdk4sZ0JBOUJNa04scUJBd0dNVjtVQU02QjtVQVJ2Q25LO1FBRUosT0ExRUVyQyxhQTlCTWtOLGFBc0dDM0w7O1FBNkJUO1NBRGtCRSxRQXhHMkM3SjtTQXdHakQ0VjtTQUVOQztvQkFBUTlVLEdBQVFEO1lBQ2xCLE9BRFVDLFVBQUFBO2FBRVIsT0FBQTtnREFBaUJ2QixHQUFLLE9BQUxBLE1BRlR1QixVQUVvQixHQUZaRDtZQUloQixPQUpnQkE7V0FJZjtTQUVENEosTUFBSixzQkFSVWtMO1NBU0dwSCxNQUFBMU47U0FBRTBUO1NBQUVzQjtTQUFFcFU7UUFDakI7WUFEaUJBLFFBRGZnSjttQkFPTSxnQkFmQWtMLEtBU1NsVTtVQU9OLElBUE1GLE1BQUFFLGFBQUZxVSxNQUFBRDtVQUFBQSxNQUFBQztVQUFFclUsTUFBQUY7OztVQVFSO1dBUlErRCxNQUFBN0Q7V0FBSnNVLE1BUWMsdUJBUlpGLEtBQUZ0QjtXQUFGN0YsTUFQVGtILE9BT2FDLEtBQUp0SDtVQUFBQSxNQUFBRztVQUFFNkYsSUFBQXdCO1VBQUVGO1VBQUVwVSxNQUFBNkQ7OztRQUVULGNBVE5zUSxPQU9hQyxLQUFKdEg7d0JBR1B5SCxpQkFYSmxWLElBV0lrVixhQVhKbFYsSUFRYXlUO1FBYVMsV0FBQSw2QkFyQnRCelQ7UUFxQkEsNkJBaklKYztrQkFrSU8sZ0JBdkJLK1Q7U0F1QlksOEJBbEl4Qi9UO1FBbUlJLDZCQW5JSkEsU0EyR1krVDtrQkF5QkwsZ0JBekJLQSwyQkFBQUE7U0F5QjhCLDhCQXBJMUMvVDtRQXFJMEIsV0FBQSw2QkF6QnRCZDtRQXlCQSw2QkFySUpjO1FBcUlJLE9BOUhGdUcsYUE5Qk1rTixhQWtJVXpMOztRQThCbEI7U0FEdUJFLFFBcklzQy9KO1NBcUk1Q2tXO1NBQU54STtTQUVMeUk7b0JBQU9wVixHQUFFRDtZQUNYLE9BRFNDLFVBQUFBO2FBRVAsT0FBQTtnREFBaUJ2QixHQUFLLE9BQUxBLE1BRlZ1QixVQUVxQixHQUZuQkQ7WUFJVCxPQUpTQTtXQUlSO1NBRUQ2SixNQUFKLHNCQVJldUw7U0FTRi9HLE1BQUE1TjtTQUFFNlU7U0FBRXBRO1FBQ2Y7WUFEZUEsUUFEYjJFO21CQU9NLGdCQWZLdUwsS0FTRWxRO1VBT0osSUFQSUMsTUFBQUQsYUFBRnFRLE1BQUFEO1VBQUFBLE1BQUFDO1VBQUVyUSxNQUFBQzs7O1VBUU4sSUFSTUMsTUFBQUYsYUFBSjJKLE1BUFR3RyxTQU9XQyxLQUFGakg7VUFBQUEsTUFBQVE7VUFBRXlHO1VBQUVwUSxNQUFBRTs7O1FBRVAsY0FUTmlRLFNBT1dDLEtBQUZqSDt3QkFHTG1ILG1CQVhOQyxNQVdNRCxlQVhOQztRQW9CSjtTQUFJQztvQkFBc0J6VixHQUFFRDtZQUMxQixJQUFhMkMsUUFBRXZDO1lBQ2I7Z0JBRGFBLDRCQURXSixJQUd0Qjt1QkFGUzJDO2NBTWlCLFdBQUEsNkJBUE4xQztjQU9oQiw2QkFwS1ZjO2NBcUs0QixXQUFBLGdCQVJBZixHQUNYSTtjQU9QLDhCQXJLVlc7Y0FxS1UsSUFQT1IsTUFBQUgsV0FBRnVWLE1BUUEsZ0JBVGEzVixHQUNYSTtjQUFGdUMsSUFBQWdUO2NBQUV2VixJQUFBRzs7O2NBVVcsV0FBQSxnQkFYQVAsR0FDWEk7Y0FVUCw4QkF4S1ZXO2NBd0tVLElBVk9QLE1BQUFKLFdBQUZ3VixNQVdBLGdCQVphNVYsR0FDWEk7Y0FBRnVDLElBQUFpVDtjQUFFeFYsSUFBQUk7OztXQVlEO1FBRWQsU0FuQ0VpVjtTQXNDRSw4QkEvS04xVTtTQTZKSTJVLDBCQXBMSWxCLGlCQStKU1k7a0JBQU1uTSxPQXlDQSw4QkFqTHZCbEk7OztTQXFMMEIsV0FBQSw2QkE1TWxCeVQ7U0E0TUYsOEJBckxOelQ7U0F1TFk7VUFBQSxPQS9DRDZMLGlCQTMvQmJmLHNCQTIvQmFlO1VBOENxQixPQUFBLDZCQTdDNUI2STtTQTZDRSw2QkF0TE4xVTtTQTZKSTJVLHNCQXBMSWxCLGFBK0pTWTtTQWlETSxXQUFBLDZCQXpMdkJyVTttQkF5TFMsNkJBekxUQTtVQTBMUSw4QkExTFJBO1NBMkwwQixXQUFBLDZCQWxObEJ5VDtTQWtORiw4QkEzTE56VDtTQTRMOEIsV0FBQSw2QkFuRDFCMFU7U0FtREUsNkJBNUxOMVU7O1FBNExNLE9BckxKdUcsYUE5Qk1rTixhQStKZXZMOztZQWdJREcsUUFyUXVDbEssUUFxUWpEK0Qsa0JBQUZvTSxnQkFBTGxHO1FBQ0YsR0FEU2xHO1NBRVcsV0FuU3JCb1IsZUFpU1FoRjtTQUVSLDZCQTFRRnRPLGVBd1FLb0k7OztTQUl5QixXQXJTNUJrTCxlQWlTUWhGO1NBSVIsNkJBNVFGdE8sZUF3UUtvSSxNQUFPbEc7O1FBSVYsT0FyUUFxRSxhQTlCTWtOLGFBK1JjcEw7O1lBalBXdUIsUUFwQjRCekwsUUFvQnpDc1MscUJBQWhCRTtpQkFyQko2QyxlQUFBQSxvQkFxQkk3QztRQUVlLE9BbEJqQnBLOzs7aUJBOUJNa047OzttQkFnRGU7NENBRkhoRCwyQkFBQUE7a0JBQWE3Rzs7WUFHR0UsUUF2QnlCM0wsUUF1QnRDNFMsdUJBQWZDO2lCQXhCUndDLGVBQUFBLG9CQXdCUXhDO1FBRVcsT0FyQmpCeks7OztpQkE5Qk1rTjs7O21CQW1EZTs0Q0FGQTFDO3FCQUFBQTtrQkFBYWpIOztZQW1ML0JzSDs7YUFBdUJsSCxRQTFNaUMvTCxRQTBNL0N1VDtTQUNULEdBQUEsNkJBREFOO1VBRUwsNkJBL01BcFIsU0E2TUtvUjtVQUdlLFdBemR0QkksZ0JBc2RnQkU7VUFHZCw4QkFoTkExUjtVQWlOQSw4QkFqTkFBO1VBaU5BLE9BMU1FdUcsYUE5Qk1rTixhQW9Pb0J2Sjs7O1FBT3BCO1NBRHNCRixRQWhOK0I3TDtTQWdOeENrTjtTQUFQb0c7U0FDVmpRLElBLytCTnVLLG9CQTgrQmdCMEY7UUFFZCw2QkFyTkF6UixTQTZNS29SO1FBU2UsV0EvZHRCSSxnQkE2ZE1oUTtRQUVKLDhCQXROQXhCO1FBdU5BLDhCQXZOQUE7V0FvTkl3QixNQURVaVE7U0E1TVpsTCxhQTlCTWtOLGFBME9hcEk7O1NBUUMsV0FoZHhCMkIsdUJBd2N1QjNCO1NBUW5CLDhCQTNORnJMOztRQTROQSw2QkE1TkFBLFNBNk1Lb1I7UUFlTCxPQXJORTdLLGFBOUJNa04sYUEwT3NCeko7OztTQVdNSSxRQTNOeUJqTTtTQTJOakNtTjtTQUFQK0Y7U0FBVFE7O1dBQXdCekg7b0JBQUFBOzs7Ozs7O3dCQUFBQTs7O2dFQUdoQnhJOzs7Ozs7Ozs7bUJBQUFBOzs7Ozs7Ozs7Ozs7Y0FGaEJrVCx1QkFFZ0JsVDs7O2FBRmhCa1Q7OzthQUFBQTtRQWdCWTtnQkFqQll4SjthQWlCWiw2QkFqQkp1RztTQW1CUiw2QkFqUEo3UixTQThOWTZSO1NBb0JZLFdBM2YxQkwsZ0JBdWV1Qkg7U0FvQmpCLDhCQWxQSnJSO1NBbVBJLDhCQW5QSkE7WUErTkk4VSxnQkFxQnVCLDhCQXBQM0I5VTtTQW9QMkIsT0E3T3pCdUcsYUE5Qk1rTixhQXFQNEJySjs7UUEyQnhCLElBQUoySyxNQXBoQ1ZoSixvQkF5L0J1QnNGO1FBNEJqQiw2QkExUEpyUixTQThOWTZSO1FBNkJZLFdBcGdCMUJMLGdCQWtnQlV1RDtRQUVKLDhCQTNQSi9VO1FBNFBJLDhCQTVQSkE7V0F5UFErVSxRQTNCYTFEO1NBdk5uQjlLLGFBOUJNa04sYUFxUG9Cbkk7O1NBa0NGLFdBcmY1QjBCLHVCQW1kOEIxQjtTQWtDdEIsOEJBaFFOdEw7O1FBaVFJLDZCQWpRSkEsU0E4Tlk2UjtXQUNSaUQsZ0JBbUN1Qiw4QkFsUTNCOVU7UUFrUTJCLE9BM1B6QnVHLGFBOUJNa04sYUFxUDRCcko7O1lBdUNsQkUsUUFsUTJDbk0sUUFrUWhEMlE7UUFDYiw4QkF0UUE5TyxHQXFRYThPO1FBQ2IsT0EvUEV2SSxhQTlCTWtOLGFBNFJVbko7O1lBaEVURSxRQWxNb0RyTSxRQWtNekRtUjtRQUNKLDhCQXRNQXRQLEdBcU1Jc1A7UUFDSixPQS9MRS9JLGFBOUJNa04sYUE0TkNqSjs7WUFHTUUsUUFyTThDdk0sUUFxTW5EdVI7UUFDViw4QkF6TUExUDtRQTBNQSw4QkExTUFBLEdBd01VMFA7UUFHViw4QkEzTUExUDtRQTJNQSxPQXBNRXVHLGFBOUJNa04sYUErTk8vSTs7UUFwTGdDO1NBRC9CRSxRQWhCNkN6TTtTQWdCbERzTjtTQTFDT2tFLE1BRmhCMkQsZUE0Q1M3SDtTQXpDVHVKLE1BQUksNkJBQVIsc0JBRG9CckY7U0FFaEI5UixJQUFKLHNCQUZvQjhSO1NBR1BzRjtTQUFHNVY7UUFDZDtZQURjQSxLQURaeEI7VUFDSixXQUFBLDZCQUZJbVg7VUEwQ0YsOEJBcEJBaFY7bUJBbUJnQjRLLE9BRUMsOEJBckJqQjVLO1VBcUJpQixPQWRmdUcsYUE5Qk1rTixhQTBDUTdJOztvQkF2Q0xxSyxLQUFHNVYsS0FEWnhCLHFCQUNTb1g7O1VBSUw7YUFQRXhCO2VBT0RsVTs7WUFDRSw4QkFQUHlWO1lBT08sV0FERnpWO2VBUENrVSxnQkFPRGxVO1lBQUFBOzs7VUFHQSw4QkFUTHlWOztTQVVRLElBSUoxVixJQUpJLGdCQVhRcVEsS0FHSnRRO21CQVlSQztVQUZBLDhCQVpKMFY7VUFZSSxJQVZReFYsTUFBQUg7VUFBSDRWO1VBQUc1VixJQUFBRzs7O1VBYVIsOEJBZkp3VixLQWNJMVY7VUFDQSxJQWJRRyxNQUFBSjtVQUFINFY7VUFBRzVWLElBQUFJOzs7Ozs7U0EyRFUwVCxRQXBDcUNoVjtTQW9DL0MwUztTQUFMTTtTQUFMekY7UUFDSiw2QkF4Q0ExTCxTQXVDSTBMLEtBQUt5RixLQUFLTjtRQUNkLE9BakNFdEssYUE5Qk1rTixhQThEZ0JOOztRQTNCZjtTQURGQyxRQVJzRGpWO1NBUTNEK1c7U0FDTztXQUFBLGtDQURQQSxzQkFBQUEsS0FwQ2VuVjs7YUFzQ0x3TDtTQU5WaEYsYUE5Qk1rTixhQW9DSWxJOzs7U0FFQzs7WUFBQTtxQ0FKWDJKO2NBQUFBOzs0QixPQWhRSmxJO2NBNE5tQmpOOztjQXlDSDZQO1VBQUssOEJBaEJuQjVQLEdBZ0JjNFA7OztRQUVaLE9BWEFySixhQTlCTWtOLGFBa0NETDs7O0lBUkhqTixjQTVCYXBHO2dCQTJCakJ5VDs7U0F1VE8xVjtLQUNILDhCQTFUSmtDO0tBa1VNLFdBQUEsa0NBVENsQyxtQkFBQUE7S0FFSDs7O1FBQ0U7O1NBQWtCb0U7U0FBTEM7U0FBUGpCO1FBQ0EsT0FEWWdCO2tCQUViLDZCQTlUWGxDLFNBNFRZa0IsTUFBT2lCO2tCQUlSLDZCQWhVWG5DLFNBNFRZa0IsTUFBT2lCLEtBQUtEO09BS2pCOzs7SUFHQyxJQUFObEIsTUFBTSw2QkFwVVJoQjtJQXFVRjtLQUVJLFdBaGpCQWtULFlBZ05lblQ7S0ErVmpCLHlDQUZFaUI7O0lBRUYsT0FGRUE7R0FJRDs7OztPQTNyQ0g4SjtPQThuQkFrQztPQVFBaUc7T0E1aEJJaEg7T0E0ckJKb0g7T0FseUJBdEk7T0FzMUJJdUk7T0FoTkFKOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDem5CSmlDO0lBQWtCOzs7UUFHTDs7UUFFUDs7UUFFTzs7UUFFQTs7UUFFTjs7UUFFRTs7UUFFQzs7UUFFRDs7UUFFQTs7UUFFTzs7UUFFSjs7UUFFRjs7UUFFSDs7UUFFUTs7UUFFQTs7UUFFTjs7UUFFTTs7UUFFUDs7UUFFSTs7UUFFSDs7UUFFRTs7UUFHRDs7UUFFTTs7UUFFSjs7UUFFRDs7UUFFSDs7UUFFSTs7UUFFSDs7UUFFSTs7UUFFSjs7UUFFQTs7UUFFRDs7UUFFRDs7UUFFRTtnQkFFSzs7OztXQXBFSGpXO09BQUssUUFBTEEsR0FBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFWndWO09BQUssUUFBTEEsS0FBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFRVU7T0FBSyxRQUFMQSxLQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUVMQztPQUFLLFFBQUxBLEtBQXNCLE9BQUEsaUNBQXRCQTtPQUFLLE1BQUE7O1dBRVhDO09BQUssUUFBTEEsS0FBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFSEM7T0FBSyxRQUFMQSxLQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUVKQztPQUFLLFFBQUxBLEtBQXNCLE9BQUEsaUNBQXRCQTtPQUFLLE1BQUE7O1dBRU5DO09BQUssUUFBTEEsS0FBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFTEM7T0FBSyxRQUFMQSxLQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUVFQztPQUFLLFFBQUxBLEtBQXNCLE9BQUEsaUNBQXRCQTtPQUFLLE1BQUE7O1dBRVRDO09BQUssUUFBTEEsS0FBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFUEM7T0FBSyxRQUFMQSxNQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUVSQztPQUFLLFFBQUxBLE1BQXNCLE9BQUEsaUNBQXRCQTtPQUFLLE1BQUE7O1dBRUdDO09BQUssUUFBTEEsTUFBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFTEM7T0FBSyxRQUFMQSxNQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUVYQztPQUFLLFFBQUxBLE1BQXNCLE9BQUEsaUNBQXRCQTtPQUFLLE1BQUE7O1dBRUNDO09BQUssUUFBTEEsTUFBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFWkM7T0FBSyxRQUFMQSxNQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUVEQztPQUFLLFFBQUxBLE1BQXNCLE9BQUEsaUNBQXRCQTtPQUFLLE1BQUE7O1dBRVJDO09BQUssUUFBTEEsTUFBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFSEM7T0FBSyxRQUFMQSxNQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUNQclgsY0FBSyxPQUFMQTs7V0FFQ3NYO09BQUssUUFBTEEsTUFBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFQ0M7T0FBSyxRQUFMQSxNQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUVUQztPQUFLLFFBQUxBLE1BQXNCLE9BQUEsaUNBQXRCQTtPQUFLLE1BQUE7O1dBRU5DO09BQUssUUFBTEEsTUFBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFUkM7T0FBSyxRQUFMQSxNQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUVEQztPQUFLLFFBQUxBLE1BQXNCLE9BQUEsaUNBQXRCQTtPQUFLLE1BQUE7O1dBRVJDO09BQUssUUFBTEEsTUFBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFREM7T0FBSyxRQUFMQSxNQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUVUQztPQUFLLFFBQUxBLE1BQXNCLE9BQUEsaUNBQXRCQTtPQUFLLE1BQUE7O1dBRUxDO09BQUssUUFBTEEsTUFBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFTkM7T0FBSyxRQUFMQSxNQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUVOQztPQUFLLFFBQUxBO1FBQXNCLE9BQUEsa0NBQXRCQTtPQUFLLE1BQUE7O1dBRUhDO09BQUssUUFBTEEsTUFBc0IsT0FBQSxpQ0FBdEJBO09BQUssTUFBQTs7V0FFQUM7T0FBSyxRQUFMQSxNQUFzQixPQUFBLGlDQUF0QkE7T0FBSyxNQUFBOztXQUNaMVgsZ0JBQUssT0FBTEE7O1dBekVNMlgsY0FBTm5XO09BQ0w7UUFBMkQsT0FBQSxrQ0FEaERtVyxvQkFBQUE7T0FDK0I7UUFBQSxPQUFBLGtDQUQvQkEsb0JBQUFBO1FBQ3lCLE9BQUE7UUFBTCxPQUFBLHVCQUQxQm5XO09BQzBCLE9BQUE7O0dBd0VwQjtZQXdCWG9XLE9BQU9yTTtJQUNULFVBRFNBO3dCQUFBQTs7WUFBQUE7O1lBSEVrSixNQUdGbEoseUJBSEVrSjs7Ozs7WUFDRmxWLElBRUFnTSx3Q0FGQWhNO29CQVhJMFQsSUFhSjFILHNCQWJJMEg7O1FBY05zQyxlQUFIM1Y7V0FBQUEsSUFBRzJWO0dBQ0Q7WUFFSnNDO0lBQWM7OztRQUNFLElBQUxyWSxjQUFLLFdBQUxBLFFBQUFBO1FBQUs7O1FBQ1AsSUFBTHdWLGdCQUFLLFdBQUxBLFVBQUFBO1FBQUs7O1FBQ08sSUFBTFUsZ0JBQUssV0FBTEEsVUFBQUE7UUFBSzs7UUFDQSxJQUFMQyxnQkFBSyxXQUFMQSxVQUFBQTtRQUFLOztRQUNOLElBQUxDLGdCQUFLLFdBQUxBLFVBQUFBO1FBQUs7O1FBQ0UsSUFBTEMsZ0JBQUssV0FBTEEsVUFBQUE7UUFBSzs7UUFDQyxJQUFMQyxnQkFBSyxXQUFMQSxVQUFBQTtRQUFLOztRQUNELElBQUxDLGdCQUFLLFdBQUxBLFVBQUFBO1FBQUs7O1FBQ0EsSUFBTEMsZ0JBQUssV0FBTEEsVUFBQUE7UUFBSzs7UUFDTyxJQUFMQyxnQkFBSyxXQUFMQSxVQUFBQTtRQUFLOztRQUVKLElBQUxDLGdCQUFLLFdBQUxBLFdBQUFBO1FBQUs7O1FBQ0YsSUFBTEMsaUJBQUssV0FBTEEsWUFBQUE7UUFBSzs7UUFDSCxJQUFMQyxpQkFBSyxXQUFMQSxZQUFBQTtRQUFLOztRQUNRLElBQUxDLGlCQUFLLFdBQUxBLFlBQUFBO1FBQUs7O1FBRUEsSUFBTEMsaUJBQUssV0FBTEEsWUFBQUE7UUFBSzs7UUFFTixJQUFMQyxpQkFBSyxXQUFMQSxZQUFBQTtRQUFLOztRQUNNLElBQUxDLGlCQUFLLFdBQUxBLFlBQUFBO1FBQUs7O1FBRVAsSUFBTEMsaUJBQUssV0FBTEEsWUFBQUE7UUFBSzs7UUFDSSxJQUFMQyxpQkFBSyxXQUFMQSxZQUFBQTtRQUFLOztRQUNILElBQUxDLGlCQUFLLFdBQUxBLFlBQUFBO1FBQUs7O1FBQ0UsSUFBTEMsaUJBQUssV0FBTEEsWUFBQUE7UUFBSzs7UUFDRCxJQUFMQyxpQkFBSyxXQUFMQSxZQUFBQTtRQUFLOztRQUNNLElBQUxDLGlCQUFLLFdBQUxBLFlBQUFBO1FBQUs7O1FBRUosSUFBTEMsaUJBQUssV0FBTEEsWUFBQUE7UUFBSzs7UUFDRCxJQUFMQyxpQkFBSyxXQUFMQSxZQUFBQTtRQUFLOztRQUNILElBQUxDLGlCQUFLLFdBQUxBLFlBQUFBO1FBQUs7O1FBQ0ksSUFBTEMsaUJBQUssV0FBTEEsWUFBQUE7UUFBSzs7UUFDSCxJQUFMQyxpQkFBSyxXQUFMQSxZQUFBQTtRQUFLOztRQUNJLElBQUxDLGlCQUFLLFdBQUxBLFlBQUFBO1FBQUs7O1FBQ0osSUFBTEMsaUJBQUssV0FBTEEsWUFBQUE7UUFBSzs7UUFDQSxJQUFMQyxpQkFBSyxXQUFMQSxZQUFBQTtRQUFLOztRQUNELElBQUxDLGlCQUFLLFdBQUxBLFlBQUFBO1FBQUs7O1FBQ0QsSUFBTEMsaUJBQUssV0FBTEEsWUFBQUE7UUFBSzs7UUFDRSxJQUFMQyxpQkFBSyxXQUFMQSxZQUFBQTtRQUFLOztRQUNLLElBQUxDLGlCQUFLLFdBQUxBLFlBQUFBO1FBQUs7O0lBUWhCLE9BQUE7R0FBbUM7O2FBZWxDSSxJQUFLdlk7S0FDUCxJQUFJd1ksaUJBQ0FwWSxZQUNBeEIsSUFBSSxpQkFIRG9CO2NBZUh5WTtNQUNGLElBQUlDLFFBZEZ0WTtNQWdCQTtVQWhCQUEsU0FDQXhCO1FBaUJJLFlBQUksaUJBcEJMb0IsR0FnQkQwWSxPQWRGdFksT0FjRXNZO09BTVEsSUFNSnJZLElBTkksaUJBdEJQTCxHQUVISTs7O2lCQTBCTUM7a0JBQUFBO29CQUFBQSxZQUFBQSwwQkFBQUE7OzttQkFBQUEsV0FBQUEsMEJBQUFBOzs7U0FOSSxXQU1KQTs7Ozs7O1FBMUJORDs7O09BeUJRLFlBQUksaUJBM0JUSixHQWdCRDBZLE9BZEZ0WSxPQWNFc1k7O0tBZUU7Y0EyQkpDLE1BQU10WTtNQXhETkQ7VUFNV3ZCO01BQ1g7VUFQQXVCLFNBQ0F4QixHQU1lLE9BREpDO1VBRUgsaUJBVkxtQixHQUVISSxVQXdETUMsR0EvQ0QsT0FITXhCO09BTlh1QjtPQVFxQyxJQUYxQndZLE1BQUEvWjtPQUFBQSxJQUFBK1o7O0tBa0RlOztTQXhEMUJ4WSxRQUNBeEIsc0NBRkE0WjtNQTRETSxJQUFKblksSUFBSSxpQkE3REhMLEdBRUhJLE9BMkRNLFdBQUpDOzs7Ozs7O1dBR2dCO1lBQUpKLElBTmQwWSxNQUdFdFk7WUFHMkIsWUFBZkosb0JBQUFBOzs7O1dBQ0k7WUFBSndWLE1BUGRrRCxNQUdFdFk7WUFJMkIsYUFBZm9WLGdCQUFBQTs7OztXQS9EZHJWOzs7O2dCQWtFbUJzVDtZQUNmO2dCQW5FSnRULFFBQ0F4QjthQWtFaUIsVUFBQSxpQkFyRWRvQixHQUVISTtpQkFBQUEsaUJBQ0F4QjthQW1FdUIsVUFBQSxpQkF0RXBCb0IsR0FFSEk7YUFBQUEsT0FBQUE7YUFxRXNCLElBSEg4VSxNQUFBeEI7YUFBQUEsSUFBQXdCOzs7O2VBU2IyRCxTQVRhbkY7V0FVakIsU0FESW1GO1lBRUksSUFFSjVDLE1BdkJOMEMsTUFHRXRZO3FCQW9CSTRWOzs7b0JBQUFBO2NBQUssTUFBQTs2QkFBTEE7Ozs7O21CQUpBNEM7YUFNRCxNQUFBOzRCQU5DQTs7Ozs7V0FkWTtZQUFKMUMsTUFMZHdDLE1BR0V0WTtZQUUyQixhQUFmOFYsZ0JBQUFBOzs7O1dBMERJO1lBQUpDLE1BL0RkdUMsTUFHRXRZO1lBNEQyQixhQUFmK1YsZ0JBQUFBOzs7O1dBL0JJO1lBQUpDLE1BaENkc0MsTUFHRXRZO1lBNkIyQixhQUFmZ1csZ0JBQUFBOzs7O1dBTkk7WUFBSkMsTUExQmRxQyxNQUdFdFk7WUF1QjJCLGFBQWZpVyxnQkFBQUE7Ozs7V0FrQ0k7WUFBSkMsTUE1RGRvQyxNQUdFdFk7WUF5RDJCLGFBQWZrVyxnQkFBQUE7Ozs7V0FDSTtZQUFKQyxNQTdEZG1DLE1BR0V0WTtZQTBEMkIsYUFBZm1XLGdCQUFBQTs7OztXQVBJO1lBQUpDLE1BdERka0MsTUFHRXRZO1lBbUQyQixhQUFmb1csY0FBQUE7Ozs7V0F2Qkk7WUFBSkMsTUEvQmRpQyxNQUdFdFk7WUE0QjJCLGFBQWZxVyxnQkFBQUE7Ozs7V0FZSTtZQUFKQyxNQTNDZGdDLE1BR0V0WTtZQXdDMkIsYUFBZnNXLGdCQUFBQTs7OztXQUVJO1lBQUpDLE9BN0NkK0IsTUFHRXRZO1lBMEMyQixhQUFmdVcsZUFBQUE7Ozs7V0FsQkk7WUFBSkMsT0EzQmQ4QixNQUdFdFk7WUF3QjJCLGFBQWZ3VyxpQkFBQUE7Ozs7V0FFSTtZQUFKQyxPQTdCZDZCLE1BR0V0WTtZQTBCMkIsYUFBZnlXLGlCQUFBQTs7OztXQTRCSTtZQUFKQyxPQXpEZDRCLE1BR0V0WTtZQXNEMkIsYUFBZjBXLGVBQUFBOzs7O1dBN0JJO1lBQUpDLE9BNUJkMkIsTUFHRXRZO1lBeUIyQixhQUFmMlcsaUJBQUFBOzs7O1dBOEJJO1lBQUpDLE9BMURkMEIsTUFHRXRZO1lBdUQyQixhQUFmNFcsaUJBQUFBOzs7O1dBQ0k7WUFBSkMsT0EzRGR5QixNQUdFdFk7WUF3RDJCLGFBQWY2VyxpQkFBQUE7Ozs7V0FaSTtZQUFKQyxPQS9DZHdCLE1BR0V0WTtZQTRDMkIsYUFBZjhXLGVBQUFBOzs7O1dBQ0k7WUFBSkMsT0FoRGR1QixNQUdFdFk7WUE2QzJCLGFBQWYrVyxpQkFBQUE7Ozs7V0FJSTtZQUFKQyxPQXBEZHNCLE1BR0V0WTtZQWlEMkIsYUFBZmdYLGlCQUFBQTs7OztXQVVJO1lBQUpDLE9BOURkcUIsTUFHRXRZO1lBMkQyQixhQUFmaVgsaUJBQUFBOzs7O1dBYkk7WUFBSkMsT0FqRGRvQixNQUdFdFk7WUE4QzJCLGFBQWZrWCxpQkFBQUE7Ozs7V0FnQkk7WUFBSkMsT0FqRWRtQixNQUdFdFk7WUE4RDJCLGFBQWZtWCxpQkFBQUE7Ozs7V0FaSTtZQUFKQyxPQXJEZGtCLE1BR0V0WTtZQWtEMkIsYUFBZm9YLGVBQUFBOzs7O1dBZkk7WUFBSkMsT0F0Q2RpQixNQUdFdFk7WUFtQzJCLGFBQWZxWCxpQkFBQUE7Ozs7V0FKSTtZQUFKQyxPQWxDZGdCLE1BR0V0WTtZQStCMkIsYUFBZnNYLGVBQUFBOzs7O1dBTUk7WUFBSkMsT0F4Q2RlLE1BR0V0WTtZQXFDMkIsYUFBZnVYLGlCQUFBQTs7OztXQWdCSTtZQUFKQyxPQXhEZGMsTUFHRXRZO1lBcUQyQixhQUFmd1gsZUFBQUE7Ozs7V0FwQkk7WUFBSkMsT0FwQ2RhLE1BR0V0WTtZQWlDMkIsYUFBZnlYLGlCQUFBQTs7OztXQU5JO1lBQUpDLE9BOUJkWSxNQUdFdFk7WUEyQjJCLGFBQWYwWCxlQUFBQTs7OztXQVdJO1lBQUpDLE9BekNkVyxNQUdFdFk7WUFzQzJCLGFBQWYyWCxpQkFBQUE7Ozs7V0FjSTtZQUFKQyxPQXZEZFUsTUFHRXRZO1lBb0QyQixhQUFmNFgsZUFBQUE7Ozs7V0FiSTtZQUFKQyxPQTFDZFMsTUFHRXRZO1lBdUMyQixhQUFmNlgsZUFBQUE7Ozs7V0FTSTtZQUFKQyxPQW5EZFEsTUFHRXRZO1lBZ0QyQixhQUFmOFgsaUJBQUFBOzs7Ozs7Ozs7Ozs7O2VBM0VaTyxRQWhDRnRZOztlQUFBQSxRQUNBeEI7MEJBa0NNLGlCQXJDSG9CLEdBRUhJO1lBcUNPO1lBckNQQTs7O2NBQUFBLFNBQ0F4Qjs0QkF5Q00saUJBNUNIb0IsR0FrQ0QwWSxPQWhDRnRZLE9BZ0NFc1k7O1lBWVUsWUFBQSxpQkE5Q1QxWSxHQUVISTs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0E0Q1k7Ozs7OzthQTVDWkEsT0FnQ0VzWTt3QkFuQkZEOzs7NEJBb0NZLGlCQW5EVHpZLEdBa0NEMFksT0FoQ0Z0WSxPQWdDRXNZOztlQTRCQUk7Ozs7WUFBQUE7OztXQUFBQSxJQS9DRkw7O01BZEFELGdCQTZERU0sR0E3REZOOztJQStIWTtJQWpJcEIsV0FDTUQ7Ozs7Ozs7OztJQW9JRkE7SUFXRVE7SUFDQUM7O1lBQ0FDLElBQUlDLEtBQUtDLEtBQUtDO0lBQ2hCLFVBRGdCQTs7Ozs7WUFBTEQ7b0JBQzBCLGNBRC9CRCxRQUFLQyxNQUFLQztZQUVYO0lBQ0csSUFBSnBaLElBQUksMEJBSFFvWixNQUloQixNQUpnQkEsYUFHUjs7U0FDUmhaOztvQ0FESUosR0FDSkksR0FDdUIsY0FMakI4WSxLQUlOOVksSUFKVytZO01BSVgsVUFBQS9ZO2lCQUFBQTtNQUFBQTs7O0lBR0EsT0FBQSw2QkFKSUo7R0FJb0I7R0FiNUI7SUFBQSxxQkFLTWdaLFVBREFELEtBRUFFOztJQVVGSTs7O1lBRUFDLFdBR0FyWjtJQUhhLGFBR2JBO2NBRks7O2tCQUVMQTs7O21CQUFBQTt1QkFBQUE7a0JBQW1CO0dBQW9EO1lBc0J2RXNaLGlCQUFpQnBhO0lBQ1gsSUFBSjRCLElBQUk7SUFDUjs7ZUFBZXJDO09BQXlCLFVBN1Z0Q3dYLGdCQTZWYXhYO09BQXlCLE9BQUEsOEJBRHBDcUM7TUFDdUQ7TUFGeEM1QjtJQUVuQixPQUFBLDZCQURJNEI7R0FFYTtZQUdmeVksd0JBRW9CQztJQURkO0tBRGVDO0tBQ25CM1ksSUFBSTtLQUNNWDtLQUFRdVosVUFBQUY7SUFBeUI7VUFBekJFO01BV2hCLDhCQVpGNVk7TUFjZSxPQUFBLDZCQWRmQTs7U0FDa0I2WSxVQUFBRCxZQUNsQmpiLElBRGtCaWI7UUFGQ0QsVUFFVHRaO01BQVF1Wjs7TUFNd0IsSUFBQSxNQXpXNUN6RCxnQkFvV0V4WCxJQUswQixNQUFBO01BQXBCLDhCQVBOcUM7TUFRTSw4QkFSTkE7VUFDVVIsTUFBQUg7TUFBQUEsSUFBQUc7TUFBUW9aLFVBQUFDOzs7Ozs7O09BMURwQnJCO09BdUJBYztPQTJCQUU7T0F6UEFsQjtPQWxHQW5DO09Ba1VBb0Q7T0E1TkFoQjtPQTJQQWtCOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ2xWVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQSt1RnVCSztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7SUFBQUM7OztJQUFBQzs7Ozs7OztJQXZWWEM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUFuNUVwQkM7Ozs7Ozs7Ozs7Ozs7O0lBTFE7O1FBR1IxTDtJQURvQyxXQUNwQ0EsT0FFQTBMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFZ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TDB2QztJQUNKLHdCQUZJRCxnQkFDQUMsUUFBSzF2QztHQUNjO1lBRXZCd3ZDLGNBQTJCajJDO1FBQXJCNFgsMEJBQVl3K0I7T0FBQUEsV0FDRjtJQUNKLElBQVYxcEMsVUFBVSxnQ0FGZTFNO0lBRzdCLEdBSFE0WDtTQUtNeTlCLGNBTE56OUIsVUFLSnc5QixTQUxJeDlCO1FBS0p3OUIsWUFDb0I7U0FIcEJpQixZQXBFRWQsV0FtRUY3b0MsWUFHQTBvQyxRQUFVQzs7O1NBRlZnQixZQURBM3BDO0lBTU07S0FBTjRMLE1BQU0sMkJBUkZWO0tBU0pxK0IsTUF4Q0VGLFNBa0NGTSxXQUtBLzlCLGFBQUFBLE1BUmdCODlCO0lBV3BCLE9BRklILGVBQUFBOzs7OztPQXhJRnpCO09BQ0FDO09Bb0JJQzs7OztPQTBHSnVCOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7Rzs4QixPLHVDOztJLE87O0c7O0k7Ozs7Ozs7Szs7STtHO0csVzs4QixPLG1DOztJLFc7SSxPLCtCO0c7eUIsdUIsVyxTOztJLEksSTs7SyxXO0sscUI7SztrQjs7O0c7O0ksSSxJOztLLEksTyx1QixPO0sscUI7SztrQjs7O0c7O0k7OztNLFc7Z0I7TyxNOzttQixjOzs7Ozs7NEI7OztHOztJOztLLFE7Ozs7O1EsZTtPOzs7OztLOzs7O0c7O0k7STs7TztPOzs7Ozs7Ozs7Ozs7OztPO007O0k7Rzs7Ozs7Ozs7OzRCLHNCOzhCLGlDOztJO0k7OzhCLGlCLGtCOzs7UTs7NEI7O1E7OztRLE87O1Esc0M7USxROzs7O1E7Ozs7UTs7O2dCOzs7Rzs7STtJOzs7Ozs7Ozs7Ozs0Qjs7O1EscUM7OztROzs7USxrQixPOztROztRLHNDO1E7Ozs7Ozs7Ozs7OztHO3lCOztJO0k7Ozs7OztTLG1DO1M7O1MsbUM7Uzs7UyxrQixPOztTOzs7OztHOzZCOztJOzs7Ozs7Ozs7Szs7TTtLLE87O0ksTTtHO0c7SSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0M7STs7OztHO0ksa0I7Ozs7STtLLFc7SztLO0s7SztLOztLO007OztRLFk7UTs7Ozs7OztLLEk7Szs7O0k7O0s7SztLO0k7O0s7SztLO0k7O0ssSSxVLHdDOzs7OztpQjs7TTs7STs7SyxxQjs7aUI7O0s7STs7Szs7O1M7O1M7aUI7Ozs7O1E7Ozs7USxrQixRO3dCOzs7O2tEO3VDO1E7UyxRO1M7UztTO1M7Ozs7Ozs7Ozt1Qjs7Ozs7UTs7O1M7UztROzJDOzs7UTt1Qjs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7OztTOzs7OztRLGtDO1E7USxJLDZCO1E7O1E7UTs7UTs7UztTO3VCO1E7dUI7UTs7UTs7UTs7UztTO1E7eUI7UTt5QjtROztROztRLG9CO1E7O1E7OztRO1E7UTt1Qjs7OztRO3VCOzs7STs7SyxrQjtLO0s7STtJO0k7SSxJLG1CO0ksRzs7O0ssUTtLLGlCLE8sd0I7aUM7O0ksbUI7STs7O087TztNOzs7Ozs7STtZOzs7Ozs7OztJLFE7STs7b0I7OztzQjs7Ozs7RztHOztJLG9DOztLLEk7SztNOzs7Z0I7b0I7TztROzs7UTs7Ozs7TTs7STs7SyxJLFU7Szs7O08sa0M7UTtTLE07Ozs7O08sVTs7Ozs7Ozs7O2E7OztjLHVCO2U7Z0I7Ozs7OztjO2U7Ozs7Ozs7Ozs7OzthOzs7OztjLFU7Ozs7Ozs7O2dCOzs7Ozs7OztpQjtpQjtrQjs7O2lCOzs7MkI7OEI7Ozs7MkI7Ozs7ZSxNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7UyxlOzs7VSxJLG1COzs7OztVLEksbUI7Ozs7YyxJLG1COzs7Ozs7OztTOzs7UTs7Ozs7O007TSxlOztJOztLLEk7SztxQjtnQix3QyxxQjtNLFM7TTs7O2dCO21CO08sUzs7OztTLE87Uzs7Ozs7Tzs7OztNO007OztJO0ksSTs7O2M7RztzQiw0QjtnQyw0Qjs7STs7SyxNO0s7SztLOzs7O00sSSxJLHVCOzs7Ozs7Uzs7Ozs7O1E7UTs7OztPOzs7TTs7Ozs7SSxPO0c7NkIsMEI7dUMsMEI7Rzs7TSxvRCxXOztJLFU7STs7Rzs7SSxVO0k7O0c7O0ksVTtJOzZCLE07STtHOztJLFU7STs2QixNO0k7Rzs7STtLO087OztLO0ssZSxNO0s7O0ksTztHOztJO0s7Tzs7O0s7TTtNO0ssZSxNO0s7O0ksTztHOztJO0s7Tzs7O0s7TTtNO007SyxhLE07SyxPOztJLE87RzttQywwQjs2QixvQjtnQyw2Qjs7STs7TztJLE87Rzs7STtLO007O2dCO007TSxNO0s7Ozs7MkI7OztHOztJLEksMkM7OzsyQjs7O0c7O0k7STs7UTs7O007O087O1E7USxZOztROzs7O1k7Ozs7Ozs7OztLLFU7SyxPOztHOztJO2lDO0c7O0k7aUM7Rzs7STtnQjs7Ozs7Ozs7Rzs7STtLOzs7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs4QixvQzs7SSxrQjs7STs7Ozs7O007O087O1E7UTtROztXOzs7Ozs7Ozs7SyxPOztHOztJO0c7O0k7STs7Ozs7O007O08sb0I7O1E7UztTO1M7Ozs7aUI7Ozs7Ozs7TztRO1E7UTs7Ozs7Ozs7SyxPOztHO21DLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7R0N0SUk7R0FBQTs7O0UiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gc3RyZnRpbWVcbi8vIGdpdGh1Yi5jb20vc2Ftc29uanMvc3RyZnRpbWVcbi8vIEBfc2pzXG4vL1xuLy8gQ29weXJpZ2h0IDIwMTAgLSAyMDE1IFNhbWkgU2FtaHVyaSA8c2FtaUBzYW1odXJpLm5ldD5cbi8vXG4vLyBNSVQgTGljZW5zZVxuLy8gaHR0cDovL3Nqcy5taXQtbGljZW5zZS5vcmdcbi8vXG5cbjsoZnVuY3Rpb24oKSB7XG5cbiAgICB2YXIgRGVmYXVsdExvY2FsZSA9IHtcbiAgICAgICAgICAgIGRheXM6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXSxcbiAgICAgICAgICAgIHNob3J0RGF5czogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSxcbiAgICAgICAgICAgIG1vbnRoczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sXG4gICAgICAgICAgICBzaG9ydE1vbnRoczogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuICAgICAgICAgICAgQU06ICdBTScsXG4gICAgICAgICAgICBQTTogJ1BNJyxcbiAgICAgICAgICAgIGFtOiAnYW0nLFxuICAgICAgICAgICAgcG06ICdwbScsXG4gICAgICAgICAgICBmb3JtYXRzOiB7XG4gICAgICAgICAgICAgICAgRDogJyVtLyVkLyV5JyxcbiAgICAgICAgICAgICAgICBGOiAnJVktJW0tJWQnLFxuICAgICAgICAgICAgICAgIFI6ICclSDolTScsXG4gICAgICAgICAgICAgICAgVDogJyVIOiVNOiVTJyxcbiAgICAgICAgICAgICAgICBYOiAnJVQnLFxuICAgICAgICAgICAgICAgIGM6ICclYSAlYiAlZCAlWCAlWScsXG4gICAgICAgICAgICAgICAgcjogJyVJOiVNOiVTICVwJyxcbiAgICAgICAgICAgICAgICB2OiAnJWUtJWItJVknLFxuICAgICAgICAgICAgICAgIHg6ICclRCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFN0cmZ0aW1lID0gbmV3IFN0cmZ0aW1lKERlZmF1bHRMb2NhbGUsIDAsIGZhbHNlKSxcbiAgICAgICAgaXNDb21tb25KUyA9IHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnLFxuICAgICAgICBuYW1lc3BhY2U7XG5cbiAgICAvLyBDb21tb25KUyAvIE5vZGUgbW9kdWxlXG4gICAgaWYgKGlzQ29tbW9uSlMpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gbW9kdWxlLmV4cG9ydHMgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGRlcHJlY2F0ZWRTdHJmdGltZTtcbiAgICAgICAgaWYoam9vX2dsb2JhbF9vYmplY3QpIGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cbiAgICAvLyBCcm93c2VycyBhbmQgb3RoZXIgZW52aXJvbm1lbnRzXG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEdldCB0aGUgZ2xvYmFsIG9iamVjdC4gV29ya3MgaW4gRVMzLCBFUzUsIGFuZCBFUzUgc3RyaWN0IG1vZGUuXG4gICAgICAgIG5hbWVzcGFjZSA9IGpvb19nbG9iYWxfb2JqZWN0IHx8IChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMgfHwgKDEsZXZhbCkoJ3RoaXMnKTsgfSgpKTtcbiAgICAgICAgbmFtZXNwYWNlLnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cblxuICAgIC8vIERlcHJlY2F0ZWQgQVBJLCB0byBiZSByZW1vdmVkIGluIHYxLjBcbiAgICB2YXIgX3JlcXVpcmUgPSBpc0NvbW1vbkpTID8gXCJyZXF1aXJlKCdzdHJmdGltZScpXCIgOiBcInN0cmZ0aW1lXCI7XG4gICAgdmFyIF9kZXByZWNhdGlvbldhcm5pbmdzID0ge307XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRpb25XYXJuaW5nKG5hbWUsIGluc3RlYWQpIHtcbiAgICAgICAgaWYgKCFfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gXCIgKyBuYW1lICsgXCIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMS4wLiBJbnN0ZWFkLCB1c2UgYFwiICsgaW5zdGVhZCArIFwiYC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVUWiA9IGRlcHJlY2F0ZWRTdHJmdGltZVRaO1xuICAgIG5hbWVzcGFjZS5zdHJmdGltZVVUQyA9IGRlcHJlY2F0ZWRTdHJmdGltZVVUQztcbiAgICBuYW1lc3BhY2UubG9jYWxpemVkU3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWVMb2NhbGl6ZWQ7XG5cbiAgICAvLyBBZGFwdCB0aGUgb2xkIEFQSSB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBuZXcgQVBJLlxuICAgIGZ1bmN0aW9uIGFkYXB0Rm9yd2FyZHMoZm4pIHtcbiAgICAgICAgZm4ubG9jYWxpemUgPSBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi50aW1lem9uZSA9IGRlZmF1bHRTdHJmdGltZS50aW1lem9uZS5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgICAgIGZuLnV0YyA9IGRlZmF1bHRTdHJmdGltZS51dGMuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgIH1cblxuICAgIGFkYXB0Rm9yd2FyZHMoYWRhcHRlZFN0cmZ0aW1lKTtcbiAgICBmdW5jdGlvbiBhZGFwdGVkU3RyZnRpbWUoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgLy8gZCBhbmQgbG9jYWxlIGFyZSBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBsb2NhbGUpXG4gICAgICAgIGlmIChkICYmIGQuZGF5cykge1xuICAgICAgICAgICAgbG9jYWxlID0gZDtcbiAgICAgICAgICAgIGQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSwgW2xvY2FsZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGRlcHJlY2F0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0pYFwiLCBfcmVxdWlyZSArIFwiKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVFooZm10LCBkLCBsb2NhbGUsIHRpbWV6b25lKSB7XG4gICAgICAgIC8vIGxvY2FsZSBpcyBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBkYXRlLCB0aW1lem9uZSlcbiAgICAgICAgaWYgKCh0eXBlb2YgbG9jYWxlID09ICdudW1iZXInIHx8IHR5cGVvZiBsb2NhbGUgPT0gJ3N0cmluZycpICYmIHRpbWV6b25lID09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWV6b25lID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0eilgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKS50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgdmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcy50aW1lem9uZSh0eikoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KTsgcyhmb3JtYXQsIFtkYXRlXSlgIG9yIGBcIiArIF9yZXF1aXJlICsgXCIudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IChsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZSkudGltZXpvbmUodGltZXpvbmUpO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICB2YXIgdXRjU3RyZnRpbWUgPSBkZWZhdWx0U3RyZnRpbWUudXRjKCk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVVRDKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBkYXRlLCBsb2NhbGUpYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVVUQyhmb3JtYXQsIFtkYXRlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IHV0Y1N0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiB1dGNTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkKGxvY2FsZSkge1xuICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplZFN0cmZ0aW1lKGxvY2FsZSlgXCIsIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKVwiKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpO1xuICAgIH1cbiAgICAvLyBFbmQgb2YgZGVwcmVjYXRlZCBBUElcblxuICAgIC8vIFBvbHlmaWxsIERhdGUubm93IGZvciBvbGQgYnJvd3NlcnMuXG4gICAgaWYgKHR5cGVvZiBEYXRlLm5vdyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBEYXRlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiArbmV3IERhdGUoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBTdHJmdGltZShsb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNUaW1lem9uZSkge1xuICAgICAgICB2YXIgX2xvY2FsZSA9IGxvY2FsZSB8fCBEZWZhdWx0TG9jYWxlLFxuICAgICAgICAgICAgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID0gY3VzdG9tVGltZXpvbmVPZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIF91c2VVdGNCYXNlZERhdGUgPSB1c2VVdGNUaW1lem9uZSB8fCBmYWxzZSxcblxuICAgICAgICAgICAgLy8gd2Ugc3RvcmUgdW5peCB0aW1lc3RhbXAgdmFsdWUgaGVyZSB0byBub3QgY3JlYXRlIG5ldyBEYXRlKCkgZWFjaCBpdGVyYXRpb24gKGVhY2ggbWlsbGlzZWNvbmQpXG4gICAgICAgICAgICAvLyBEYXRlLm5vdygpIGlzIDIgdGltZXMgZmFzdGVyIHRoYW4gbmV3IERhdGUoKVxuICAgICAgICAgICAgLy8gd2hpbGUgbWlsbGlzZWNvbmQgcHJlY2lzZSBpcyBlbm91Z2ggaGVyZVxuICAgICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSB2ZXJ5IGhlbHBmdWwgd2hlbiBzdHJmdGltZSB0cmlnZ2VyZWQgYSBsb3Qgb2YgdGltZXMgb25lIGJ5IG9uZVxuICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSAwLFxuICAgICAgICAgICAgX2NhY2hlZERhdGU7XG5cbiAgICAgICAgZnVuY3Rpb24gX3N0cmZ0aW1lKGZvcm1hdCwgZGF0ZSkge1xuICAgICAgICAgICAgdmFyIHRpbWVzdGFtcDtcblxuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZXN0YW1wID4gX2NhY2hlZERhdGVUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSBjdXJyZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wKTtcblxuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBfY2FjaGVkRGF0ZVRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG93IHRvIGF2b2lkIGR1cGxpY2F0aW9uIG9mIGRhdGUgaW5zdGFudGlhdGlvbiBmb3IgdXRjIGhlcmU/XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSB0aWVkIHRvIGdldFRpbWV6b25lT2Zmc2V0IG9mIHRoZSBjdXJyZW50IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlID0gbmV3IERhdGUoX2NhY2hlZERhdGVUaW1lc3RhbXAgKyBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihfY2FjaGVkRGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGUgPSBfY2FjaGVkRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgX2xvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSAnJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nID0gbnVsbCxcbiAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZSxcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBmb3JtYXQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRDaGFyQ29kZSA9IGZvcm1hdC5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzSW5TY29wZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAnLSdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICdfJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDk1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnOidcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA1OCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRlbmRlZFRaKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gZGV0ZWN0ZWQgdXNlIG9mIHVuc3VwcG9ydGVkICU6OiBvciAlOjo6IG1vZGlmaWVycyB0byBzdHJmdGltZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRUWiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDaGFyQ29kZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlcyBmb3IgbmV3IERhdGUoMCkgaW4gR01UXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdUaHVyc2RheSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLmRheXNbZGF0ZS5nZXREYXkoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW51YXJ5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUubW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyAxMDApLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxLzAxLzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ELCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwLTAxLTAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5GLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnSSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDczOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhNYXRoLmZsb29yKHRpbWVzdGFtcCAlIDEwMDApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1pbnV0ZXMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdhbSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuYW0gOiBsb2NhbGUucG07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuUiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0U2Vjb25kcygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwOjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ULCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIod2Vla051bWJlcihkYXRlLCAnc3VuZGF5JyksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ21vbmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE2OjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5YLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdHTVQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUgJiYgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBcIkdNVFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZml4bWUgb3B0aW1pemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR6U3RyaW5nID0gZGF0ZS50b1N0cmluZygpLm1hdGNoKC9cXCgoW1xcd1xcc10rKVxcKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gdHpTdHJpbmcgJiYgdHpTdHJpbmdbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnREYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuYywgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0RGF0ZSgpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydE1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnaic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IE1hdGguY2VpbCgoZGF0ZS5nZXRUaW1lKCkgLSB5LmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhkYXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldEhvdXJzKCksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1vbnRoKCkgKyAxLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1xcbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMXN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKSArIG9yZGluYWwoZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnQU0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/IGxvY2FsZS5BTSA6IGxvY2FsZS5QTTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyOjAwOjAwIEFNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuciwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IE1hdGguZmxvb3IodGltZXN0YW1wIC8gMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFx0JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd1JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXkgPT09IDAgPyA3IDogZGF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxIC0gNywgTW9uZGF5IGlzIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEtSmFuLTE5NzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy52LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMCAtIDYsIFN1bmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyLzMxLzY5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMueCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAoJycgKyBkYXRlLmdldEZ1bGxZZWFyKCkpLnNsaWNlKDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnKzAwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd6JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZXh0ZW5kZWRUWiA/IFwiKzAwOjAwXCIgOiBcIiswMDAwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2ZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2N1c3RvbVRpbWV6b25lT2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQgLyAoNjAgKiAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IC1kYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ24gPSBvZmYgPCAwID8gJy0nIDogJysnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VwID0gZXh0ZW5kZWRUWiA/ICc6JyA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaG91cnMgPSBNYXRoLmZsb29yKE1hdGguYWJzKG9mZiAvIDYwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW5zID0gTWF0aC5hYnMob2ZmICUgNjApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gc2lnbiArIHBhZFRpbGwyKGhvdXJzKSArIHNlcCArIHBhZFRpbGwyKG1pbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAnJSdcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJDb2RlID09PSAzNykge1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0U3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gX3N0cmZ0aW1lO1xuXG4gICAgICAgIHN0cmZ0aW1lLmxvY2FsaXplID0gZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKGxvY2FsZSB8fCBfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIF91c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnRpbWV6b25lID0gZnVuY3Rpb24odGltZXpvbmUpIHtcbiAgICAgICAgICAgIHZhciBjdXN0b21UaW1lem9uZU9mZnNldCA9IF9jdXN0b21UaW1lem9uZU9mZnNldDtcbiAgICAgICAgICAgIHZhciB1c2VVdGNCYXNlZERhdGUgPSBfdXNlVXRjQmFzZWREYXRlO1xuXG4gICAgICAgICAgICB2YXIgdGltZXpvbmVUeXBlID0gdHlwZW9mIHRpbWV6b25lO1xuICAgICAgICAgICAgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicgfHwgdGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHVzZVV0Y0Jhc2VkRGF0ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAvLyBJU08gODYwMSBmb3JtYXQgdGltZXpvbmUgc3RyaW5nLCBbLStdSEhNTVxuICAgICAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gdGltZXpvbmVbMF0gPT09ICctJyA/IC0xIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMSwgMyksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBwYXJzZUludCh0aW1lem9uZS5zbGljZSgzLCA1KSwgMTApO1xuXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gc2lnbiAqICgoNjAgKiBob3VycykgKyBtaW51dGVzKSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gbWludXRlczogNDIwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSB0aW1lem9uZSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUoX2xvY2FsZSwgY3VzdG9tVGltZXpvbmVPZmZzZXQsIHVzZVV0Y0Jhc2VkRGF0ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc3RyZnRpbWUudXRjID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIF9jdXN0b21UaW1lem9uZU9mZnNldCwgdHJ1ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZFRpbGwyKG51bWJlclRvUGFkLCBwYWRkaW5nQ2hhcikge1xuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT09ICcnIHx8IG51bWJlclRvUGFkID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkaW5nQ2hhciA9PSBudWxsKSB7XG4gICAgICAgICAgICBwYWRkaW5nQ2hhciA9ICcwJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFkZGluZ0NoYXIgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMyhudW1iZXJUb1BhZCkge1xuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5OSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiAnMCcgKyBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzAwJyArIG51bWJlclRvUGFkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvdXJzMTIoaG91cikge1xuICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGhvdXIgPiAxMikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgLSAxMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG5cbiAgICAvLyBmaXJzdFdlZWtkYXk6ICdzdW5kYXknIG9yICdtb25kYXknLCBkZWZhdWx0IGlzICdzdW5kYXknXG4gICAgLy9cbiAgICAvLyBQaWxmZXJlZCAmIHBvcnRlZCBmcm9tIFJ1YnkncyBzdHJmdGltZSBpbXBsZW1lbnRhdGlvbi5cbiAgICBmdW5jdGlvbiB3ZWVrTnVtYmVyKGRhdGUsIGZpcnN0V2Vla2RheSkge1xuICAgICAgICBmaXJzdFdlZWtkYXkgPSBmaXJzdFdlZWtkYXkgfHwgJ3N1bmRheSc7XG5cbiAgICAgICAgLy8gVGhpcyB3b3JrcyBieSBzaGlmdGluZyB0aGUgd2Vla2RheSBiYWNrIGJ5IG9uZSBkYXkgaWYgd2VcbiAgICAgICAgLy8gYXJlIHRyZWF0aW5nIE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICB2YXIgd2Vla2RheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChmaXJzdFdlZWtkYXkgPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBpZiAod2Vla2RheSA9PT0gMCkgLy8gU3VuZGF5XG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IDY7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgd2Vla2RheS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGZpcnN0RGF5T2ZZZWFyVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKSxcbiAgICAgICAgICAgIGRhdGVVdGMgPSBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLFxuICAgICAgICAgICAgeWRheSA9IE1hdGguZmxvb3IoKGRhdGVVdGMgLSBmaXJzdERheU9mWWVhclV0YykgLyA4NjQwMDAwMCksXG4gICAgICAgICAgICB3ZWVrTnVtID0gKHlkYXkgKyA3IC0gd2Vla2RheSkgLyA3O1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHdlZWtOdW0pO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgb3JkaW5hbCBzdWZmaXggZm9yIGEgbnVtYmVyOiBzdCwgbmQsIHJkLCBvciB0aFxuICAgIGZ1bmN0aW9uIG9yZGluYWwobnVtYmVyKSB7XG4gICAgICAgIHZhciBpID0gbnVtYmVyICUgMTA7XG4gICAgICAgIHZhciBpaSA9IG51bWJlciAlIDEwMDtcblxuICAgICAgICBpZiAoKGlpID49IDExICYmIGlpIDw9IDEzKSB8fCBpID09PSAwIHx8IGkgPj0gNCkge1xuICAgICAgICAgICAgcmV0dXJuICd0aCc7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiAnc3QnO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gJ25kJztcbiAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICdyZCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihkYXRlKSB7XG4gICAgICAgIHJldHVybiAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIHx8IDApICogNjAwMDA7XG4gICAgfVxuXG59KCkpO1xuIiwiKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZSE9PVwidW5kZWZpbmVkXCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT1cInVuZGVmaW5lZFwiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09XCJ1bmRlZmluZWRcIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuVmlydHVhbERvbSA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZShcIi4vdmRvbS9jcmVhdGUtZWxlbWVudC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVsZW1lbnRcblxufSx7XCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIjoyNH1dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRpZmYgPSByZXF1aXJlKFwiLi92dHJlZS9kaWZmLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG59LHtcIi4vdnRyZWUvZGlmZi5qc1wiOjQ3fV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vKiFcbiAqIENyb3NzLUJyb3dzZXIgU3BsaXQgMS4xLjFcbiAqIENvcHlyaWdodCAyMDA3LTIwMTIgU3RldmVuIExldml0aGFuIDxzdGV2ZW5sZXZpdGhhbi5jb20+XG4gKiBBdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBFQ01BU2NyaXB0IGNvbXBsaWFudCwgdW5pZm9ybSBjcm9zcy1icm93c2VyIHNwbGl0IG1ldGhvZFxuICovXG5cbi8qKlxuICogU3BsaXRzIGEgc3RyaW5nIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncyB1c2luZyBhIHJlZ2V4IG9yIHN0cmluZyBzZXBhcmF0b3IuIE1hdGNoZXMgb2YgdGhlXG4gKiBzZXBhcmF0b3IgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IGFycmF5LiBIb3dldmVyLCBpZiBgc2VwYXJhdG9yYCBpcyBhIHJlZ2V4IHRoYXQgY29udGFpbnNcbiAqIGNhcHR1cmluZyBncm91cHMsIGJhY2tyZWZlcmVuY2VzIGFyZSBzcGxpY2VkIGludG8gdGhlIHJlc3VsdCBlYWNoIHRpbWUgYHNlcGFyYXRvcmAgaXMgbWF0Y2hlZC5cbiAqIEZpeGVzIGJyb3dzZXIgYnVncyBjb21wYXJlZCB0byB0aGUgbmF0aXZlIGBTdHJpbmcucHJvdG90eXBlLnNwbGl0YCBhbmQgY2FuIGJlIHVzZWQgcmVsaWFibHlcbiAqIGNyb3NzLWJyb3dzZXIuXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFN0cmluZyB0byBzcGxpdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gc2VwYXJhdG9yIFJlZ2V4IG9yIHN0cmluZyB0byB1c2UgZm9yIHNlcGFyYXRpbmcgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbGltaXRdIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUgaW4gdGhlIHJlc3VsdCBhcnJheS5cbiAqIEByZXR1cm5zIHtBcnJheX0gQXJyYXkgb2Ygc3Vic3RyaW5ncy5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQmFzaWMgdXNlXG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJyk7XG4gKiAvLyAtPiBbJ2EnLCAnYicsICdjJywgJ2QnXVxuICpcbiAqIC8vIFdpdGggbGltaXRcbiAqIHNwbGl0KCdhIGIgYyBkJywgJyAnLCAyKTtcbiAqIC8vIC0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBCYWNrcmVmZXJlbmNlcyBpbiByZXN1bHQgYXJyYXlcbiAqIHNwbGl0KCcuLndvcmQxIHdvcmQyLi4nLCAvKFthLXpdKykoXFxkKykvaSk7XG4gKiAvLyAtPiBbJy4uJywgJ3dvcmQnLCAnMScsICcgJywgJ3dvcmQnLCAnMicsICcuLiddXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uIHNwbGl0KHVuZGVmKSB7XG5cbiAgdmFyIG5hdGl2ZVNwbGl0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxpdCxcbiAgICBjb21wbGlhbnRFeGVjTnBjZyA9IC8oKT8/Ly5leGVjKFwiXCIpWzFdID09PSB1bmRlZixcbiAgICAvLyBOUENHOiBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cFxuICAgIHNlbGY7XG5cbiAgc2VsZiA9IGZ1bmN0aW9uKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgYG5hdGl2ZVNwbGl0YFxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc2VwYXJhdG9yKSAhPT0gXCJbb2JqZWN0IFJlZ0V4cF1cIikge1xuICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9XG4gICAgdmFyIG91dHB1dCA9IFtdLFxuICAgICAgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyBcImlcIiA6IFwiXCIpICsgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyBcIm1cIiA6IFwiXCIpICsgKHNlcGFyYXRvci5leHRlbmRlZCA/IFwieFwiIDogXCJcIikgKyAvLyBQcm9wb3NlZCBmb3IgRVM2XG4gICAgICAoc2VwYXJhdG9yLnN0aWNreSA/IFwieVwiIDogXCJcIiksXG4gICAgICAvLyBGaXJlZm94IDMrXG4gICAgICBsYXN0TGFzdEluZGV4ID0gMCxcbiAgICAgIC8vIE1ha2UgYGdsb2JhbGAgYW5kIGF2b2lkIGBsYXN0SW5kZXhgIGlzc3VlcyBieSB3b3JraW5nIHdpdGggYSBjb3B5XG4gICAgICBzZXBhcmF0b3IgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgXCJnXCIpLFxuICAgICAgc2VwYXJhdG9yMiwgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICBzdHIgKz0gXCJcIjsgLy8gVHlwZS1jb252ZXJ0XG4gICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZykge1xuICAgICAgLy8gRG9lc24ndCBuZWVkIGZsYWdzIGd5LCBidXQgdGhleSBkb24ndCBodXJ0XG4gICAgICBzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cChcIl5cIiArIHNlcGFyYXRvci5zb3VyY2UgKyBcIiQoPyFcXFxccylcIiwgZmxhZ3MpO1xuICAgIH1cbiAgICAvKiBWYWx1ZXMgZm9yIGBsaW1pdGAsIHBlciB0aGUgc3BlYzpcbiAgICAgKiBJZiB1bmRlZmluZWQ6IDQyOTQ5NjcyOTUgLy8gTWF0aC5wb3coMiwgMzIpIC0gMVxuICAgICAqIElmIDAsIEluZmluaXR5LCBvciBOYU46IDBcbiAgICAgKiBJZiBwb3NpdGl2ZSBudW1iZXI6IGxpbWl0ID0gTWF0aC5mbG9vcihsaW1pdCk7IGlmIChsaW1pdCA+IDQyOTQ5NjcyOTUpIGxpbWl0IC09IDQyOTQ5NjcyOTY7XG4gICAgICogSWYgbmVnYXRpdmUgbnVtYmVyOiA0Mjk0OTY3Mjk2IC0gTWF0aC5mbG9vcihNYXRoLmFicyhsaW1pdCkpXG4gICAgICogSWYgb3RoZXI6IFR5cGUtY29udmVydCwgdGhlbiB1c2UgdGhlIGFib3ZlIHJ1bGVzXG4gICAgICovXG4gICAgbGltaXQgPSBsaW1pdCA9PT0gdW5kZWYgPyAtMSA+Pj4gMCA6IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICBsaW1pdCA+Pj4gMDsgLy8gVG9VaW50MzIobGltaXQpXG4gICAgd2hpbGUgKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3RyKSkge1xuICAgICAgLy8gYHNlcGFyYXRvci5sYXN0SW5kZXhgIGlzIG5vdCByZWxpYWJsZSBjcm9zcy1icm93c2VyXG4gICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHN0ci5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYCBmb3JcbiAgICAgICAgLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBzXG4gICAgICAgIGlmICghY29tcGxpYW50RXhlY05wY2cgJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgIG1hdGNoWzBdLnJlcGxhY2Uoc2VwYXJhdG9yMiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWYpIHtcbiAgICAgICAgICAgICAgICBtYXRjaFtpXSA9IHVuZGVmO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggPj0gbGltaXQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlcGFyYXRvci5sYXN0SW5kZXggPT09IG1hdGNoLmluZGV4KSB7XG4gICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXgrKzsgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvci50ZXN0KFwiXCIpKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKFwiXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0Lmxlbmd0aCA+IGxpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIGxpbWl0KSA6IG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn0pKCk7XG5cbn0se31dLDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgT25lVmVyc2lvbkNvbnN0cmFpbnQgPSByZXF1aXJlKCdpbmRpdmlkdWFsL29uZS12ZXJzaW9uJyk7XG5cbnZhciBNWV9WRVJTSU9OID0gJzcnO1xuT25lVmVyc2lvbkNvbnN0cmFpbnQoJ2V2LXN0b3JlJywgTVlfVkVSU0lPTik7XG5cbnZhciBoYXNoS2V5ID0gJ19fRVZfU1RPUkVfS0VZQCcgKyBNWV9WRVJTSU9OO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2U3RvcmU7XG5cbmZ1bmN0aW9uIEV2U3RvcmUoZWxlbSkge1xuICAgIHZhciBoYXNoID0gZWxlbVtoYXNoS2V5XTtcblxuICAgIGlmICghaGFzaCkge1xuICAgICAgICBoYXNoID0gZWxlbVtoYXNoS2V5XSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xufVxuXG59LHtcImluZGl2aWR1YWwvb25lLXZlcnNpb25cIjo2fV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG4ndXNlIHN0cmljdCc7XG5cbi8qZ2xvYmFsIHdpbmRvdywgZ2xvYmFsKi9cblxudmFyIHJvb3QgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/XG4gICAgd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIGdsb2JhbCA6IHt9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEluZGl2aWR1YWw7XG5cbmZ1bmN0aW9uIEluZGl2aWR1YWwoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gcm9vdCkge1xuICAgICAgICByZXR1cm4gcm9vdFtrZXldO1xuICAgIH1cblxuICAgIHJvb3Rba2V5XSA9IHZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se31dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgSW5kaXZpZHVhbCA9IHJlcXVpcmUoJy4vaW5kZXguanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPbmVWZXJzaW9uO1xuXG5mdW5jdGlvbiBPbmVWZXJzaW9uKG1vZHVsZU5hbWUsIHZlcnNpb24sIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciBrZXkgPSAnX19JTkRJVklEVUFMX09ORV9WRVJTSU9OXycgKyBtb2R1bGVOYW1lO1xuICAgIHZhciBlbmZvcmNlS2V5ID0ga2V5ICsgJ19FTkZPUkNFX1NJTkdMRVRPTic7XG5cbiAgICB2YXIgdmVyc2lvblZhbHVlID0gSW5kaXZpZHVhbChlbmZvcmNlS2V5LCB2ZXJzaW9uKTtcblxuICAgIGlmICh2ZXJzaW9uVmFsdWUgIT09IHZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gb25seSBoYXZlIG9uZSBjb3B5IG9mICcgK1xuICAgICAgICAgICAgbW9kdWxlTmFtZSArICcuXFxuJyArXG4gICAgICAgICAgICAnWW91IGFscmVhZHkgaGF2ZSB2ZXJzaW9uICcgKyB2ZXJzaW9uVmFsdWUgK1xuICAgICAgICAgICAgJyBpbnN0YWxsZWQuXFxuJyArXG4gICAgICAgICAgICAnVGhpcyBtZWFucyB5b3UgY2Fubm90IGluc3RhbGwgdmVyc2lvbiAnICsgdmVyc2lvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEluZGl2aWR1YWwoa2V5LCBkZWZhdWx0VmFsdWUpO1xufVxuXG59LHtcIi4vaW5kZXguanNcIjo1fV0sNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG52YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1wibWluLWRvY3VtZW50XCI6MTd9XSw4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG5cbnZhciBDb21tZW50ID0gcmVxdWlyZShcIi4vZG9tLWNvbW1lbnQuanNcIilcbnZhciBET01UZXh0ID0gcmVxdWlyZShcIi4vZG9tLXRleHQuanNcIilcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcbnZhciBEb2N1bWVudEZyYWdtZW50ID0gcmVxdWlyZShcIi4vZG9tLWZyYWdtZW50LmpzXCIpXG52YXIgRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC5qc1wiKVxudmFyIGRpc3BhdGNoRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiKVxudmFyIGFkZEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciByZW1vdmVFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnQ7XG5cbmZ1bmN0aW9uIERvY3VtZW50KCkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IHRoaXMuY3JlYXRlRWxlbWVudChcImhlYWRcIilcbiAgICB0aGlzLmJvZHkgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oZWFkKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYm9keSlcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbdGhpcy5kb2N1bWVudEVsZW1lbnRdXG4gICAgdGhpcy5ub2RlVHlwZSA9IDlcbn1cblxudmFyIHByb3RvID0gRG9jdW1lbnQucHJvdG90eXBlO1xucHJvdG8uY3JlYXRlVGV4dE5vZGUgPSBmdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudE5TID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gbnVsbCA/IG51bGwgOiBTdHJpbmcobmFtZXNwYWNlKVxuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzLCBucylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnTmFtZSkge1xuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzKVxufVxuXG5wcm90by5jcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpIHtcbiAgICByZXR1cm4gbmV3IERvY3VtZW50RnJhZ21lbnQodGhpcylcbn1cblxucHJvdG8uY3JlYXRlRXZlbnQgPSBmdW5jdGlvbiBjcmVhdGVFdmVudChmYW1pbHkpIHtcbiAgICByZXR1cm4gbmV3IEV2ZW50KGZhbWlseSlcbn1cblxucHJvdG8uY3JlYXRlQ29tbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhLCB0aGlzKVxufVxuXG5wcm90by5nZXRFbGVtZW50QnlJZCA9IGZ1bmN0aW9uIGdldEVsZW1lbnRCeUlkKGlkKSB7XG4gICAgaWQgPSBTdHJpbmcoaWQpXG5cbiAgICB2YXIgcmVzdWx0ID0gZG9tV2Fsayh0aGlzLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChTdHJpbmcobm9kZS5pZCkgPT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQgfHwgbnVsbFxufVxuXG5wcm90by5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxucHJvdG8uZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZVxucHJvdG8uY29udGFpbnMgPSBET01FbGVtZW50LnByb3RvdHlwZS5jb250YWluc1xuXG5wcm90by5yZW1vdmVFdmVudExpc3RlbmVyID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxucHJvdG8uYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXJcbnByb3RvLmRpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50XG5cbn0se1wiLi9kb20tY29tbWVudC5qc1wiOjksXCIuL2RvbS1lbGVtZW50LmpzXCI6MTAsXCIuL2RvbS1mcmFnbWVudC5qc1wiOjExLFwiLi9kb20tdGV4dC5qc1wiOjEyLFwiLi9ldmVudC5qc1wiOjEzLFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCJkb20td2Fsa1wiOjE4fV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IENvbW1lbnRcblxuZnVuY3Rpb24gQ29tbWVudChkYXRhLCBvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDb21tZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgb3duZXIpXG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICAgIHRoaXMubm9kZVZhbHVlID0gZGF0YVxuICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkNvbW1lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gOFxuQ29tbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNjb21tZW50XCJcblxuQ29tbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfQ29tbWVudF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IENvbW1lbnRdXCJcbn1cblxufSx7fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvbVdhbGsgPSByZXF1aXJlKFwiZG9tLXdhbGtcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHNlcmlhbGl6ZU5vZGUgPSByZXF1aXJlKFwiLi9zZXJpYWxpemUuanNcIilcblxudmFyIGh0bWxucyA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG5cbm1vZHVsZS5leHBvcnRzID0gRE9NRWxlbWVudFxuXG5mdW5jdGlvbiBET01FbGVtZW50KHRhZ05hbWUsIG93bmVyLCBuYW1lc3BhY2UpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUpXG4gICAgfVxuXG4gICAgdmFyIG5zID0gbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBodG1sbnMgOiAobmFtZXNwYWNlIHx8IG51bGwpXG5cbiAgICB0aGlzLnRhZ05hbWUgPSBucyA9PT0gaHRtbG5zID8gU3RyaW5nKHRhZ05hbWUpLnRvVXBwZXJDYXNlKCkgOiB0YWdOYW1lXG4gICAgdGhpcy5ub2RlTmFtZSA9IHRoaXMudGFnTmFtZVxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJcIlxuICAgIHRoaXMuZGF0YXNldCA9IHt9XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5zdHlsZSA9IHt9XG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxuICAgIHRoaXMubmFtZXNwYWNlVVJJID0gbnNcbiAgICB0aGlzLl9hdHRyaWJ1dGVzID0ge31cblxuICAgIGlmICh0aGlzLnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgIHRoaXMudHlwZSA9ICd0ZXh0J1xuICAgIH1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUudHlwZSA9IFwiRE9NRWxlbWVudFwiXG5ET01FbGVtZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDFcblxuRE9NRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9hcHBlbmRDaGlsZChjaGlsZCkge1xuICAgIGlmIChjaGlsZC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpXG4gICAgY2hpbGQucGFyZW50Tm9kZSA9IHRoaXNcblxuICAgIHJldHVybiBjaGlsZFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlcGxhY2VDaGlsZChlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBuZWVkbGUucGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIG5lZWRsZS5wYXJlbnROb2RlID0gbnVsbFxuICAgICAgICB0aGlzLmNoaWxkTm9kZXNbaW5kZXhdID0gZWxlbVxuICAgICAgICBlbGVtLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICAgICAgcmV0dXJuIG5lZWRsZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVDaGlsZChlbGVtKSB7XG4gICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBlbGVtLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGVsZW0pXG4gICAgdGhpcy5jaGlsZE5vZGVzLnNwbGljZShpbmRleCwgMSlcblxuICAgIGVsZW0ucGFyZW50Tm9kZSA9IG51bGxcbiAgICByZXR1cm4gZWxlbVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2luc2VydEJlZm9yZShlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiByZWZlcmVuY2VFbGVtZW50IGlzIGEgZG9tIG5vZGVcbiAgICAgICAgLy8gYW5kIHBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IG5lZWRsZSA9PT0gbnVsbCB8fCBuZWVkbGUgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAtMSA6XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihuZWVkbGUpXG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDAsIGVsZW0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuICAgICAgICByZXR1cm4gZWxlbVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3NldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIHByZWZpeCA9IG51bGxcbiAgICAgICAgdmFyIGxvY2FsTmFtZSA9IG5hbWVcbiAgICAgICAgdmFyIGNvbG9uUG9zaXRpb24gPSBuYW1lLmluZGV4T2YoXCI6XCIpXG4gICAgICAgIGlmIChjb2xvblBvc2l0aW9uID4gLTEpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyKDAsIGNvbG9uUG9zaXRpb24pXG4gICAgICAgICAgICBsb2NhbE5hbWUgPSBuYW1lLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSlcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSB8fCAodGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdID0ge30pXG4gICAgICAgIGF0dHJpYnV0ZXNbbG9jYWxOYW1lXSA9IHt2YWx1ZTogdmFsdWUsIHByZWZpeDogcHJlZml4fVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVzW25hbWVdICYmIGF0dHJpYnV0ZXNbbmFtZV0udmFsdWVcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVzW25hbWVdXG4gICAgICAgIH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV1cbiAgICAgICAgcmV0dXJuICEhYXR0cmlidXRlcyAmJiBuYW1lIGluIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lLCB2YWx1ZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0QXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2hhc0F0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbkRPTUVsZW1lbnQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG4vLyBVbi1pbXBsZW1lbnRlZFxuRE9NRWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiBfRWxlbWVudF9mb2N1cygpIHtcbiAgICByZXR1cm4gdm9pZCAwXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0VsZW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUodGhpcylcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lcykge1xuICAgIHZhciBjbGFzc2VzID0gY2xhc3NOYW1lcy5zcGxpdChcIiBcIik7XG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWUgfHwgXCJcIlxuICAgICAgICAgICAgdmFyIG5vZGVDbGFzc2VzID0gbm9kZUNsYXNzTmFtZS5zcGxpdChcIiBcIilcblxuICAgICAgICAgICAgaWYgKGNsYXNzZXMuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUNsYXNzZXMuaW5kZXhPZihpdGVtKSAhPT0gLTFcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpIHtcbiAgICB0YWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiAodGFnTmFtZSA9PT0gJyonIHx8IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lKSkge1xuICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIF9FbGVtZW50X2NvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZG9tV2Fsayh0aGlzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCA9PT0gbm9kZVxuICAgIH0pIHx8IGZhbHNlXG59XG5cbn0se1wiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCIuL3NlcmlhbGl6ZS5qc1wiOjE5LFwiZG9tLXdhbGtcIjoxOH1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBEb2N1bWVudEZyYWdtZW50XG5cbmZ1bmN0aW9uIERvY3VtZW50RnJhZ21lbnQob3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KClcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXVxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGxcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRvY3VtZW50RnJhZ21lbnRcIlxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxMVxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNkb2N1bWVudC1mcmFnbWVudFwiXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGRcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgICBmdW5jdGlvbiBfRG9jdW1lbnRGcmFnbWVudF90b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcobm9kZSlcbiAgICAgICAgfSkuam9pbihcIlwiKVxuICAgIH1cblxufSx7XCIuL2RvbS1lbGVtZW50LmpzXCI6MTB9XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IERPTVRleHRcblxuZnVuY3Rpb24gRE9NVGV4dCh2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01UZXh0KHZhbHVlKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IHZhbHVlIHx8IFwiXCJcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnR5cGUgPSBcIkRPTVRleHROb2RlXCJcbkRPTVRleHQucHJvdG90eXBlLm5vZGVUeXBlID0gM1xuRE9NVGV4dC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiN0ZXh0XCJcblxuRE9NVGV4dC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfVGV4dF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnJlcGxhY2VEYXRhID0gZnVuY3Rpb24gcmVwbGFjZURhdGEoaW5kZXgsIGxlbmd0aCwgdmFsdWUpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZGF0YVxuICAgIHZhciBsZWZ0ID0gY3VycmVudC5zdWJzdHJpbmcoMCwgaW5kZXgpXG4gICAgdmFyIHJpZ2h0ID0gY3VycmVudC5zdWJzdHJpbmcoaW5kZXggKyBsZW5ndGgsIGN1cnJlbnQubGVuZ3RoKVxuICAgIHRoaXMuZGF0YSA9IGxlZnQgKyB2YWx1ZSArIHJpZ2h0XG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG59XG5cbn0se31dLDEzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gRXZlbnRcblxuZnVuY3Rpb24gRXZlbnQoZmFtaWx5KSB7fVxuXG5FdmVudC5wcm90b3R5cGUuaW5pdEV2ZW50ID0gZnVuY3Rpb24gX0V2ZW50X2luaXRFdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZVxuICAgIHRoaXMuYnViYmxlcyA9IGJ1YmJsZXNcbiAgICB0aGlzLmNhbmNlbGFibGUgPSBjYW5jZWxhYmxlXG59XG5cbkV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uIF9FdmVudF9wcmV2ZW50RGVmYXVsdCgpIHtcbiAgICBcbn1cblxufSx7fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBhZGRFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnNbdHlwZV0pIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0gPSBbXVxuICAgIH1cblxuICAgIGlmIChlbGVtLmxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0ucHVzaChsaXN0ZW5lcilcbiAgICB9XG59XG5cbn0se31dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gZGlzcGF0Y2hFdmVudFxuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2KSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG4gICAgdmFyIHR5cGUgPSBldi50eXBlXG5cbiAgICBpZiAoIWV2LnRhcmdldCkge1xuICAgICAgICBldi50YXJnZXQgPSBlbGVtXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICBlbGVtLmxpc3RlbmVycyA9IHt9XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG5cbiAgICBpZiAobGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGV2LmN1cnJlbnRUYXJnZXQgPSBlbGVtXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZXYpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyLmhhbmRsZUV2ZW50KGV2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWxlbS5wYXJlbnROb2RlLmRpc3BhdGNoRXZlbnQoZXYpXG4gICAgfVxufVxuXG59LHt9XSwxNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBsaXN0ID0gZWxlbS5saXN0ZW5lcnNbdHlwZV1cbiAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2YobGlzdGVuZXIpXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSlcbiAgICB9XG59XG5cbn0se31dLDE3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBEb2N1bWVudCA9IHJlcXVpcmUoJy4vZG9jdW1lbnQuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgRG9jdW1lbnQoKTtcblxufSx7XCIuL2RvY3VtZW50LmpzXCI6OH1dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdGl2ZWx5V2Fsa1xuXG5mdW5jdGlvbiBpdGVyYXRpdmVseVdhbGsobm9kZXMsIGNiKSB7XG4gICAgaWYgKCEoJ2xlbmd0aCcgaW4gbm9kZXMpKSB7XG4gICAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH1cbiAgICBcbiAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZXMpXG5cbiAgICB3aGlsZShub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlcy5zaGlmdCgpLFxuICAgICAgICAgICAgcmV0ID0gY2Iobm9kZSlcblxuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZE5vZGVzICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vZGVzID0gc2xpY2UuY2FsbChub2RlLmNoaWxkTm9kZXMpLmNvbmNhdChub2RlcylcbiAgICAgICAgfVxuICAgIH1cbn1cblxufSx7fV0sMTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWxpemVOb2RlXG5cbnZhciB2b2lkRWxlbWVudHMgPSAvYXJlYXxiYXNlfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8a2V5Z2VufGxpbmt8bWVudWl0ZW18bWV0YXxwYXJhbXxzb3VyY2V8dHJhY2t8d2JyL2k7XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZU5vZGUobm9kZSkge1xuICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gZXNjYXBlVGV4dChub2RlLmRhdGEpXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiBcIjwhLS1cIiArIG5vZGUuZGF0YSArIFwiLS0+XCJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVFbGVtZW50KG5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVFbGVtZW50KGVsZW0pIHtcbiAgICB2YXIgc3RyaW5ncyA9IFtdXG5cbiAgICB2YXIgdGFnbmFtZSA9IGVsZW0udGFnTmFtZVxuXG4gICAgaWYgKGVsZW0ubmFtZXNwYWNlVVJJID09PSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIikge1xuICAgICAgICB0YWduYW1lID0gdGFnbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgfVxuXG4gICAgc3RyaW5ncy5wdXNoKFwiPFwiICsgdGFnbmFtZSArIHByb3BlcnRpZXMoZWxlbSkgKyBkYXRhc2V0aWZ5KGVsZW0pKVxuXG4gICAgaWYgKHZvaWRFbGVtZW50cy50ZXN0KHRhZ25hbWUpKSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIiAvPlwiKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIj5cIilcblxuICAgICAgICBpZiAoZWxlbS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoLmFwcGx5KHN0cmluZ3MsIGVsZW0uY2hpbGROb2Rlcy5tYXAoc2VyaWFsaXplTm9kZSkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoKGVzY2FwZVRleHQoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS5pbm5lckhUTUwpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlbGVtLmlubmVySFRNTClcbiAgICAgICAgfVxuXG4gICAgICAgIHN0cmluZ3MucHVzaChcIjwvXCIgKyB0YWduYW1lICsgXCI+XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ3Muam9pbihcIlwiKVxufVxuXG5mdW5jdGlvbiBpc1Byb3BlcnR5KGVsZW0sIGtleSkge1xuICAgIHZhciB0eXBlID0gdHlwZW9mIGVsZW1ba2V5XVxuXG4gICAgaWYgKGtleSA9PT0gXCJzdHlsZVwiICYmIE9iamVjdC5rZXlzKGVsZW0uc3R5bGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW0uaGFzT3duUHJvcGVydHkoa2V5KSAmJlxuICAgICAgICAodHlwZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlID09PSBcImJvb2xlYW5cIiB8fCB0eXBlID09PSBcIm51bWJlclwiKSAmJlxuICAgICAgICBrZXkgIT09IFwibm9kZU5hbWVcIiAmJiBrZXkgIT09IFwiY2xhc3NOYW1lXCIgJiYga2V5ICE9PSBcInRhZ05hbWVcIiAmJlxuICAgICAgICBrZXkgIT09IFwidGV4dENvbnRlbnRcIiAmJiBrZXkgIT09IFwiaW5uZXJUZXh0XCIgJiYga2V5ICE9PSBcIm5hbWVzcGFjZVVSSVwiICYmICBrZXkgIT09IFwiaW5uZXJIVE1MXCJcbn1cblxuZnVuY3Rpb24gc3R5bGlmeShzdHlsZXMpIHtcbiAgICBpZiAodHlwZW9mIHN0eWxlcyA9PT0gJ3N0cmluZycpIHJldHVybiBzdHlsZXNcbiAgICB2YXIgYXR0ciA9IFwiXCJcbiAgICBPYmplY3Qua2V5cyhzdHlsZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzdHlsZXNba2V5XVxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSgvW0EtWl0vZywgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgcmV0dXJuIFwiLVwiICsgYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9KVxuICAgICAgICBhdHRyICs9IGtleSArIFwiOlwiICsgdmFsdWUgKyBcIjtcIlxuICAgIH0pXG4gICAgcmV0dXJuIGF0dHJcbn1cblxuZnVuY3Rpb24gZGF0YXNldGlmeShlbGVtKSB7XG4gICAgdmFyIGRzID0gZWxlbS5kYXRhc2V0XG4gICAgdmFyIHByb3BzID0gW11cblxuICAgIGZvciAodmFyIGtleSBpbiBkcykge1xuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogXCJkYXRhLVwiICsga2V5LCB2YWx1ZTogZHNba2V5XSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkobGlzdCkge1xuICAgIHZhciBhdHRyaWJ1dGVzID0gW11cbiAgICBsaXN0LmZvckVhY2goZnVuY3Rpb24gKHR1cGxlKSB7XG4gICAgICAgIHZhciBuYW1lID0gdHVwbGUubmFtZVxuICAgICAgICB2YXIgdmFsdWUgPSB0dXBsZS52YWx1ZVxuXG4gICAgICAgIGlmIChuYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gc3R5bGlmeSh2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXMucHVzaChuYW1lICsgXCI9XCIgKyBcIlxcXCJcIiArIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKSArIFwiXFxcIlwiKVxuICAgIH0pXG5cbiAgICByZXR1cm4gYXR0cmlidXRlcy5sZW5ndGggPyBcIiBcIiArIGF0dHJpYnV0ZXMuam9pbihcIiBcIikgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIHByb3BlcnRpZXMoZWxlbSkge1xuICAgIHZhciBwcm9wcyA9IFtdXG4gICAgZm9yICh2YXIga2V5IGluIGVsZW0pIHtcbiAgICAgICAgaWYgKGlzUHJvcGVydHkoZWxlbSwga2V5KSkge1xuICAgICAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IGVsZW1ba2V5XSB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbnMgaW4gZWxlbS5fYXR0cmlidXRlcykge1xuICAgICAgZm9yICh2YXIgYXR0cmlidXRlIGluIGVsZW0uX2F0dHJpYnV0ZXNbbnNdKSB7XG4gICAgICAgIHZhciBwcm9wID0gZWxlbS5fYXR0cmlidXRlc1tuc11bYXR0cmlidXRlXVxuICAgICAgICB2YXIgbmFtZSA9IChwcm9wLnByZWZpeCA/IHByb3AucHJlZml4ICsgXCI6XCIgOiBcIlwiKSArIGF0dHJpYnV0ZVxuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHByb3AudmFsdWUgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5jbGFzc05hbWUpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiY2xhc3NcIiwgdmFsdWU6IGVsZW0uY2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLmxlbmd0aCA/IHN0cmluZ2lmeShwcm9wcykgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIGVzY2FwZVRleHQocykge1xuICAgIHZhciBzdHIgPSAnJztcblxuICAgIGlmICh0eXBlb2YocykgPT09ICdzdHJpbmcnKSB7IFxuICAgICAgICBzdHIgPSBzOyBcbiAgICB9IGVsc2UgaWYgKHMpIHtcbiAgICAgICAgc3RyID0gcy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJcbiAgICAgICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCBcIiZsdDtcIilcbiAgICAgICAgLnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpXG59XG5cbmZ1bmN0aW9uIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHN0cikge1xuICAgIHJldHVybiBlc2NhcGVUZXh0KHN0cikucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIilcbn1cblxufSx7fV0sMjA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNPYmplY3QoeCkge1xuXHRyZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgeCAhPT0gbnVsbDtcbn07XG5cbn0se31dLDIxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBuYXRpdmVJc0FycmF5ID0gQXJyYXkuaXNBcnJheVxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUlzQXJyYXkgfHwgaXNBcnJheVxuXG5mdW5jdGlvbiBpc0FycmF5KG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09IFwiW29iamVjdCBBcnJheV1cIlxufVxuXG59LHt9XSwyMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgcGF0Y2ggPSByZXF1aXJlKFwiLi92ZG9tL3BhdGNoLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxufSx7XCIuL3Zkb20vcGF0Y2guanNcIjoyN31dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoXCJpcy1vYmplY3RcIilcbnZhciBpc0hvb2sgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdmhvb2suanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVByb3BlcnRpZXNcblxuZnVuY3Rpb24gYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzLCBwcmV2aW91cykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV1cblxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0hvb2socHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpXG4gICAgICAgICAgICBpZiAocHJvcFZhbHVlLmhvb2spIHtcbiAgICAgICAgICAgICAgICBwcm9wVmFsdWUuaG9vayhub2RlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QocHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKSB7XG4gICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKCFpc0hvb2socHJldmlvdXNWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnN0eWxlW2ldID0gXCJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByZXZpb3VzVmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IFwiXCJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNWYWx1ZS51bmhvb2spIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUudW5ob29rKG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSkge1xuICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWRcblxuICAgIC8vIFNldCBhdHRyaWJ1dGVzXG4gICAgaWYgKHByb3BOYW1lID09PSBcImF0dHJpYnV0ZXNcIikge1xuICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBhdHRyVmFsdWUgPSBwcm9wVmFsdWVbYXR0ck5hbWVdXG5cbiAgICAgICAgICAgIGlmIChhdHRyVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgYXR0clZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYocHJldmlvdXNWYWx1ZSAmJiBpc09iamVjdChwcmV2aW91c1ZhbHVlKSAmJlxuICAgICAgICBnZXRQcm90b3R5cGUocHJldmlvdXNWYWx1ZSkgIT09IGdldFByb3RvdHlwZShwcm9wVmFsdWUpKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNPYmplY3Qobm9kZVtwcm9wTmFtZV0pKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0ge31cbiAgICB9XG5cbiAgICB2YXIgcmVwbGFjZXIgPSBwcm9wTmFtZSA9PT0gXCJzdHlsZVwiID8gXCJcIiA6IHVuZGVmaW5lZFxuXG4gICAgZm9yICh2YXIgayBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tdXG4gICAgICAgIG5vZGVbcHJvcE5hbWVdW2tdID0gKHZhbHVlID09PSB1bmRlZmluZWQpID8gcmVwbGFjZXIgOiB2YWx1ZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUuX19wcm90b19fKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdmhvb2suanNcIjozOCxcImlzLW9iamVjdFwiOjIwfV0sMjQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZShcImdsb2JhbC9kb2N1bWVudFwiKVxuXG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodm5vZGUsIG9wdHMpIHtcbiAgICB2YXIgZG9jID0gb3B0cyA/IG9wdHMuZG9jdW1lbnQgfHwgZG9jdW1lbnQgOiBkb2N1bWVudFxuICAgIHZhciB3YXJuID0gb3B0cyA/IG9wdHMud2FybiA6IG51bGxcblxuICAgIHZub2RlID0gaGFuZGxlVGh1bmsodm5vZGUpLmFcblxuICAgIGlmIChpc1dpZGdldCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHZub2RlLmluaXQoKVxuICAgIH0gZWxzZSBpZiAoaXNWVGV4dCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGRvYy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KVxuICAgIH0gZWxzZSBpZiAoIWlzVk5vZGUodm5vZGUpKSB7XG4gICAgICAgIGlmICh3YXJuKSB7XG4gICAgICAgICAgICB3YXJuKFwiSXRlbSBpcyBub3QgYSB2YWxpZCB2aXJ0dWFsIGRvbSBub2RlXCIsIHZub2RlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSAodm5vZGUubmFtZXNwYWNlID09PSBudWxsKSA/XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KHZub2RlLnRhZ05hbWUpIDpcbiAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnROUyh2bm9kZS5uYW1lc3BhY2UsIHZub2RlLnRhZ05hbWUpXG5cbiAgICB2YXIgcHJvcHMgPSB2bm9kZS5wcm9wZXJ0aWVzXG4gICAgYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzKVxuXG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGNyZWF0ZUVsZW1lbnQoY2hpbGRyZW5baV0sIG9wdHMpXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGROb2RlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVcbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIjozNixcIi4uL3Zub2RlL2lzLXZub2RlLmpzXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dC5qc1wiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuL2FwcGx5LXByb3BlcnRpZXNcIjoyMyxcImdsb2JhbC9kb2N1bWVudFwiOjd9XSwyNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vLyBNYXBzIGEgdmlydHVhbCBET00gdHJlZSBvbnRvIGEgcmVhbCBET00gdHJlZSBpbiBhbiBlZmZpY2llbnQgbWFubmVyLlxuLy8gV2UgZG9uJ3Qgd2FudCB0byByZWFkIGFsbCBvZiB0aGUgRE9NIG5vZGVzIGluIHRoZSB0cmVlIHNvIHdlIHVzZVxuLy8gdGhlIGluLW9yZGVyIHRyZWUgaW5kZXhpbmcgdG8gZWxpbWluYXRlIHJlY3Vyc2lvbiBkb3duIGNlcnRhaW4gYnJhbmNoZXMuXG4vLyBXZSBvbmx5IHJlY3Vyc2UgaW50byBhIERPTSBub2RlIGlmIHdlIGtub3cgdGhhdCBpdCBjb250YWlucyBhIGNoaWxkIG9mXG4vLyBpbnRlcmVzdC5cblxudmFyIG5vQ2hpbGQgPSB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUluZGV4XG5cbmZ1bmN0aW9uIGRvbUluZGV4KHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcykge1xuICAgIGlmICghaW5kaWNlcyB8fCBpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRpY2VzLnNvcnQoYXNjZW5kaW5nKVxuICAgICAgICByZXR1cm4gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIDApXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWN1cnNlKHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KSB7XG4gICAgbm9kZXMgPSBub2RlcyB8fCB7fVxuXG5cbiAgICBpZiAocm9vdE5vZGUpIHtcbiAgICAgICAgaWYgKGluZGV4SW5SYW5nZShpbmRpY2VzLCByb290SW5kZXgsIHJvb3RJbmRleCkpIHtcbiAgICAgICAgICAgIG5vZGVzW3Jvb3RJbmRleF0gPSByb290Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZDaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW5cblxuICAgICAgICBpZiAodkNoaWxkcmVuKSB7XG5cbiAgICAgICAgICAgIHZhciBjaGlsZE5vZGVzID0gcm9vdE5vZGUuY2hpbGROb2Rlc1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByb290SW5kZXggKz0gMVxuXG4gICAgICAgICAgICAgICAgdmFyIHZDaGlsZCA9IHZDaGlsZHJlbltpXSB8fCBub0NoaWxkXG4gICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleCA9IHJvb3RJbmRleCArICh2Q2hpbGQuY291bnQgfHwgMClcblxuICAgICAgICAgICAgICAgIC8vIHNraXAgcmVjdXJzaW9uIGRvd24gdGhlIHRyZWUgaWYgdGhlcmUgYXJlIG5vIG5vZGVzIGRvd24gaGVyZVxuICAgICAgICAgICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCBuZXh0SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2UoY2hpbGROb2Rlc1tpXSwgdkNoaWxkLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvb3RJbmRleCA9IG5leHRJbmRleFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzXG59XG5cbi8vIEJpbmFyeSBzZWFyY2ggZm9yIGFuIGluZGV4IGluIHRoZSBpbnRlcnZhbCBbbGVmdCwgcmlnaHRdXG5mdW5jdGlvbiBpbmRleEluUmFuZ2UoaW5kaWNlcywgbGVmdCwgcmlnaHQpIHtcbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdmFyIG1pbkluZGV4ID0gMFxuICAgIHZhciBtYXhJbmRleCA9IGluZGljZXMubGVuZ3RoIC0gMVxuICAgIHZhciBjdXJyZW50SW5kZXhcbiAgICB2YXIgY3VycmVudEl0ZW1cblxuICAgIHdoaWxlIChtaW5JbmRleCA8PSBtYXhJbmRleCkge1xuICAgICAgICBjdXJyZW50SW5kZXggPSAoKG1heEluZGV4ICsgbWluSW5kZXgpIC8gMikgPj4gMFxuICAgICAgICBjdXJyZW50SXRlbSA9IGluZGljZXNbY3VycmVudEluZGV4XVxuXG4gICAgICAgIGlmIChtaW5JbmRleCA9PT0gbWF4SW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50SXRlbSA+PSBsZWZ0ICYmIGN1cnJlbnRJdGVtIDw9IHJpZ2h0XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEl0ZW0gPCBsZWZ0KSB7XG4gICAgICAgICAgICBtaW5JbmRleCA9IGN1cnJlbnRJbmRleCArIDFcbiAgICAgICAgfSBlbHNlICBpZiAoY3VycmVudEl0ZW0gPiByaWdodCkge1xuICAgICAgICAgICAgbWF4SW5kZXggPSBjdXJyZW50SW5kZXggLSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICAgIHJldHVybiBhID4gYiA/IDEgOiAtMVxufVxuXG59LHt9XSwyNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgVlBhdGNoID0gcmVxdWlyZShcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiKVxuXG52YXIgdXBkYXRlV2lkZ2V0ID0gcmVxdWlyZShcIi4vdXBkYXRlLXdpZGdldFwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5UGF0Y2hcblxuZnVuY3Rpb24gYXBwbHlQYXRjaCh2cGF0Y2gsIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgdHlwZSA9IHZwYXRjaC50eXBlXG4gICAgdmFyIHZOb2RlID0gdnBhdGNoLnZOb2RlXG4gICAgdmFyIHBhdGNoID0gdnBhdGNoLnBhdGNoXG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBWUGF0Y2guUkVNT1ZFOlxuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZU5vZGUoZG9tTm9kZSwgdk5vZGUpXG4gICAgICAgIGNhc2UgVlBhdGNoLklOU0VSVDpcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WVEVYVDpcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLldJREdFVDpcbiAgICAgICAgICAgIHJldHVybiB3aWRnZXRQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLlZOT0RFOlxuICAgICAgICAgICAgcmV0dXJuIHZOb2RlUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5PUkRFUjpcbiAgICAgICAgICAgIHJlb3JkZXJDaGlsZHJlbihkb21Ob2RlLCBwYXRjaClcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlBST1BTOlxuICAgICAgICAgICAgYXBwbHlQcm9wZXJ0aWVzKGRvbU5vZGUsIHBhdGNoLCB2Tm9kZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICAgICAgY2FzZSBWUGF0Y2guVEhVTks6XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZVJvb3QoZG9tTm9kZSxcbiAgICAgICAgICAgICAgICByZW5kZXJPcHRpb25zLnBhdGNoKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZG9tTm9kZSlcbiAgICB9XG5cbiAgICBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHZOb2RlKTtcblxuICAgIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIGluc2VydE5vZGUocGFyZW50Tm9kZSwgdk5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChuZXdOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIHN0cmluZ1BhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgdlRleHQsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGRvbU5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgZG9tTm9kZS5yZXBsYWNlRGF0YSgwLCBkb21Ob2RlLmxlbmd0aCwgdlRleHQudGV4dClcbiAgICAgICAgbmV3Tm9kZSA9IGRvbU5vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuICAgICAgICBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodlRleHQsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHdpZGdldFBhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgd2lkZ2V0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHVwZGF0aW5nID0gdXBkYXRlV2lkZ2V0KGxlZnRWTm9kZSwgd2lkZ2V0KVxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAodXBkYXRpbmcpIHtcbiAgICAgICAgbmV3Tm9kZSA9IHdpZGdldC51cGRhdGUobGVmdFZOb2RlLCBkb21Ob2RlKSB8fCBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHdpZGdldCwgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIGlmICghdXBkYXRpbmcpIHtcbiAgICAgICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCBsZWZ0Vk5vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gdk5vZGVQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgdykge1xuICAgIGlmICh0eXBlb2Ygdy5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIgJiYgaXNXaWRnZXQodykpIHtcbiAgICAgICAgdy5kZXN0cm95KGRvbU5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgbW92ZXMpIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IGRvbU5vZGUuY2hpbGROb2Rlc1xuICAgIHZhciBrZXlNYXAgPSB7fVxuICAgIHZhciBub2RlXG4gICAgdmFyIHJlbW92ZVxuICAgIHZhciBpbnNlcnRcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW92ZXMucmVtb3Zlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZW1vdmUgPSBtb3Zlcy5yZW1vdmVzW2ldXG4gICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzW3JlbW92ZS5mcm9tXVxuICAgICAgICBpZiAocmVtb3ZlLmtleSkge1xuICAgICAgICAgICAga2V5TWFwW3JlbW92ZS5rZXldID0gbm9kZVxuICAgICAgICB9XG4gICAgICAgIGRvbU5vZGUucmVtb3ZlQ2hpbGQobm9kZSlcbiAgICB9XG5cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGhcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1vdmVzLmluc2VydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaW5zZXJ0ID0gbW92ZXMuaW5zZXJ0c1tqXVxuICAgICAgICBub2RlID0ga2V5TWFwW2luc2VydC5rZXldXG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIHdlaXJkZXN0IGJ1ZyBpJ3ZlIGV2ZXIgc2VlbiBpbiB3ZWJraXRcbiAgICAgICAgZG9tTm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgaW5zZXJ0LnRvID49IGxlbmd0aCsrID8gbnVsbCA6IGNoaWxkTm9kZXNbaW5zZXJ0LnRvXSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSb290KG9sZFJvb3QsIG5ld1Jvb3QpIHtcbiAgICBpZiAob2xkUm9vdCAmJiBuZXdSb290ICYmIG9sZFJvb3QgIT09IG5ld1Jvb3QgJiYgb2xkUm9vdC5wYXJlbnROb2RlKSB7XG4gICAgICAgIG9sZFJvb3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Um9vdCwgb2xkUm9vdClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Um9vdDtcbn1cblxufSx7XCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MSxcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiOjQ0LFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCIuL3VwZGF0ZS13aWRnZXRcIjoyOH1dLDI3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIHJlbmRlciA9IHJlcXVpcmUoXCIuL2NyZWF0ZS1lbGVtZW50XCIpXG52YXIgZG9tSW5kZXggPSByZXF1aXJlKFwiLi9kb20taW5kZXhcIilcbnZhciBwYXRjaE9wID0gcmVxdWlyZShcIi4vcGF0Y2gtb3BcIilcbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxuZnVuY3Rpb24gcGF0Y2gocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICByZW5kZXJPcHRpb25zID0gcmVuZGVyT3B0aW9ucyB8fCB7fVxuICAgIHJlbmRlck9wdGlvbnMucGF0Y2ggPSByZW5kZXJPcHRpb25zLnBhdGNoICYmIHJlbmRlck9wdGlvbnMucGF0Y2ggIT09IHBhdGNoXG4gICAgICAgID8gcmVuZGVyT3B0aW9ucy5wYXRjaFxuICAgICAgICA6IHBhdGNoUmVjdXJzaXZlXG4gICAgcmVuZGVyT3B0aW9ucy5yZW5kZXIgPSByZW5kZXJPcHRpb25zLnJlbmRlciB8fCByZW5kZXJcblxuICAgIHJldHVybiByZW5kZXJPcHRpb25zLnBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKVxufVxuXG5mdW5jdGlvbiBwYXRjaFJlY3Vyc2l2ZShyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBpbmRpY2VzID0gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpXG5cbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlXG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZG9tSW5kZXgocm9vdE5vZGUsIHBhdGNoZXMuYSwgaW5kaWNlcylcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IHJvb3ROb2RlLm93bmVyRG9jdW1lbnRcblxuICAgIGlmICghcmVuZGVyT3B0aW9ucy5kb2N1bWVudCAmJiBvd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCkge1xuICAgICAgICByZW5kZXJPcHRpb25zLmRvY3VtZW50ID0gb3duZXJEb2N1bWVudFxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZUluZGV4ID0gaW5kaWNlc1tpXVxuICAgICAgICByb290Tm9kZSA9IGFwcGx5UGF0Y2gocm9vdE5vZGUsXG4gICAgICAgICAgICBpbmRleFtub2RlSW5kZXhdLFxuICAgICAgICAgICAgcGF0Y2hlc1tub2RlSW5kZXhdLFxuICAgICAgICAgICAgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gYXBwbHlQYXRjaChyb290Tm9kZSwgZG9tTm9kZSwgcGF0Y2hMaXN0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgaWYgKCFkb21Ob2RlKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAoaXNBcnJheShwYXRjaExpc3QpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0Y2hMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXdOb2RlID0gcGF0Y2hPcChwYXRjaExpc3RbaV0sIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0LCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgcm9vdE5vZGUgPSBuZXdOb2RlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2hlcykge1xuICAgICAgICBpZiAoa2V5ICE9PSBcImFcIikge1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKE51bWJlcihrZXkpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGljZXNcbn1cblxufSx7XCIuL2NyZWF0ZS1lbGVtZW50XCI6MjQsXCIuL2RvbS1pbmRleFwiOjI1LFwiLi9wYXRjaC1vcFwiOjI2LFwiZ2xvYmFsL2RvY3VtZW50XCI6NyxcIngtaXMtYXJyYXlcIjoyMX1dLDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSB1cGRhdGVXaWRnZXRcblxuZnVuY3Rpb24gdXBkYXRlV2lkZ2V0KGEsIGIpIHtcbiAgICBpZiAoaXNXaWRnZXQoYSkgJiYgaXNXaWRnZXQoYikpIHtcbiAgICAgICAgaWYgKFwibmFtZVwiIGluIGEgJiYgXCJuYW1lXCIgaW4gYikge1xuICAgICAgICAgICAgcmV0dXJuIGEuaWQgPT09IGIuaWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhLmluaXQgPT09IGIuaW5pdFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDF9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXR0cmlidXRlSG9vaztcblxuZnVuY3Rpb24gQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEF0dHJpYnV0ZUhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgcHJldikge1xuICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIHByZXYudmFsdWUgPT09IHRoaXMudmFsdWUgJiZcbiAgICAgICAgcHJldi5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBwcm9wLCB0aGlzLnZhbHVlKTtcbn07XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgJiYgbmV4dC50eXBlID09PSAnQXR0cmlidXRlSG9vaycgJiZcbiAgICAgICAgbmV4dC5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29sb25Qb3NpdGlvbiA9IHByb3AuaW5kZXhPZignOicpO1xuICAgIHZhciBsb2NhbE5hbWUgPSBjb2xvblBvc2l0aW9uID4gLTEgPyBwcm9wLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSkgOiBwcm9wO1xuICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlTlModGhpcy5uYW1lc3BhY2UsIGxvY2FsTmFtZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS50eXBlID0gJ0F0dHJpYnV0ZUhvb2snO1xuXG59LHt9XSwzMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdlN0b3JlID0gcmVxdWlyZSgnZXYtc3RvcmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdkhvb2s7XG5cbmZ1bmN0aW9uIEV2SG9vayh2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFdkhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXZIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkV2SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB0aGlzLnZhbHVlO1xufTtcblxuRXZIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbihub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB1bmRlZmluZWQ7XG59O1xuXG59LHtcImV2LXN0b3JlXCI6NH1dLDMxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBTb2Z0U2V0SG9vaztcblxuZnVuY3Rpb24gU29mdFNldEhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuU29mdFNldEhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgaWYgKG5vZGVbcHJvcGVydHlOYW1lXSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlW3Byb3BlcnR5TmFtZV0gPSB0aGlzLnZhbHVlO1xuICAgIH1cbn07XG5cbn0se31dLDMyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBWTm9kZSA9IHJlcXVpcmUoJy4uL3Zub2RlL3Zub2RlLmpzJyk7XG52YXIgVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS92dGV4dC5qcycpO1xudmFyIGlzVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12bm9kZScpO1xudmFyIGlzVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12dGV4dCcpO1xudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtd2lkZ2V0Jyk7XG52YXIgaXNIb29rID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdmhvb2snKTtcbnZhciBpc1ZUaHVuayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXRodW5rJyk7XG5cbnZhciBwYXJzZVRhZyA9IHJlcXVpcmUoJy4vcGFyc2UtdGFnLmpzJyk7XG52YXIgc29mdFNldEhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL3NvZnQtc2V0LWhvb2suanMnKTtcbnZhciBldkhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL2V2LWhvb2suanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBoO1xuXG5mdW5jdGlvbiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBbXTtcbiAgICB2YXIgdGFnLCBwcm9wcywga2V5LCBuYW1lc3BhY2U7XG5cbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BzID0gcHJvcHMgfHwgcHJvcGVydGllcyB8fCB7fTtcbiAgICB0YWcgPSBwYXJzZVRhZyh0YWdOYW1lLCBwcm9wcyk7XG5cbiAgICAvLyBzdXBwb3J0IGtleXNcbiAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgICAgIGtleSA9IHByb3BzLmtleTtcbiAgICAgICAgcHJvcHMua2V5ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnQgbmFtZXNwYWNlXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCduYW1lc3BhY2UnKSkge1xuICAgICAgICBuYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgICAgIHByb3BzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBmaXggY3Vyc29yIGJ1Z1xuICAgIGlmICh0YWcgPT09ICdJTlBVVCcgJiZcbiAgICAgICAgIW5hbWVzcGFjZSAmJlxuICAgICAgICBwcm9wcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJlxuICAgICAgICBwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFpc0hvb2socHJvcHMudmFsdWUpXG4gICAgKSB7XG4gICAgICAgIHByb3BzLnZhbHVlID0gc29mdFNldEhvb2socHJvcHMudmFsdWUpO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybVByb3BlcnRpZXMocHJvcHMpO1xuXG4gICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgY2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgICAgYWRkQ2hpbGQoY2hpbGRyZW4sIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpO1xuICAgIH1cblxuXG4gICAgcmV0dXJuIG5ldyBWTm9kZSh0YWcsIHByb3BzLCBjaGlsZE5vZGVzLCBrZXksIG5hbWVzcGFjZSk7XG59XG5cbmZ1bmN0aW9uIGFkZENoaWxkKGMsIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpIHtcbiAgICBpZiAodHlwZW9mIGMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoYykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoU3RyaW5nKGMpKSk7XG4gICAgfSBlbHNlIGlmIChpc0NoaWxkKGMpKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChjKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoYykpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhZGRDaGlsZChjW2ldLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYyA9PT0gbnVsbCB8fCBjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IFVuZXhwZWN0ZWRWaXJ0dWFsRWxlbWVudCh7XG4gICAgICAgICAgICBmb3JlaWduT2JqZWN0OiBjLFxuICAgICAgICAgICAgcGFyZW50Vm5vZGU6IHtcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiB0YWcsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoaXNIb29rKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocHJvcE5hbWUuc3Vic3RyKDAsIDMpID09PSAnZXYtJykge1xuICAgICAgICAgICAgICAgIC8vIGFkZCBldi1mb28gc3VwcG9ydFxuICAgICAgICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGV2SG9vayh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGQoeCkge1xuICAgIHJldHVybiBpc1ZOb2RlKHgpIHx8IGlzVlRleHQoeCkgfHwgaXNXaWRnZXQoeCkgfHwgaXNWVGh1bmsoeCk7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KSB8fCBpc0NoaWxkKHgpO1xufVxuXG5mdW5jdGlvbiBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoZGF0YSkge1xuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTtcblxuICAgIGVyci50eXBlID0gJ3ZpcnR1YWwtaHlwZXJzY3JpcHQudW5leHBlY3RlZC52aXJ0dWFsLWVsZW1lbnQnO1xuICAgIGVyci5tZXNzYWdlID0gJ1VuZXhwZWN0ZWQgdmlydHVhbCBjaGlsZCBwYXNzZWQgdG8gaCgpLlxcbicgK1xuICAgICAgICAnRXhwZWN0ZWQgYSBWTm9kZSAvIFZ0aHVuayAvIFZXaWRnZXQgLyBzdHJpbmcgYnV0OlxcbicgK1xuICAgICAgICAnZ290OlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLmZvcmVpZ25PYmplY3QpICtcbiAgICAgICAgJy5cXG4nICtcbiAgICAgICAgJ1RoZSBwYXJlbnQgdm5vZGUgaXM6XFxuJyArXG4gICAgICAgIGVycm9yU3RyaW5nKGRhdGEucGFyZW50Vm5vZGUpXG4gICAgICAgICdcXG4nICtcbiAgICAgICAgJ1N1Z2dlc3RlZCBmaXg6IGNoYW5nZSB5b3VyIGBoKC4uLiwgWyAuLi4gXSlgIGNhbGxzaXRlLic7XG4gICAgZXJyLmZvcmVpZ25PYmplY3QgPSBkYXRhLmZvcmVpZ25PYmplY3Q7XG4gICAgZXJyLnBhcmVudFZub2RlID0gZGF0YS5wYXJlbnRWbm9kZTtcblxuICAgIHJldHVybiBlcnI7XG59XG5cbmZ1bmN0aW9uIGVycm9yU3RyaW5nKG9iaikge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsICcgICAgJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG9iaik7XG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiLi4vdm5vZGUvaXMtdm5vZGVcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0XCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXRcIjo0MSxcIi4uL3Zub2RlL3Zub2RlLmpzXCI6NDMsXCIuLi92bm9kZS92dGV4dC5qc1wiOjQ1LFwiLi9ob29rcy9ldi1ob29rLmpzXCI6MzAsXCIuL2hvb2tzL3NvZnQtc2V0LWhvb2suanNcIjozMSxcIi4vcGFyc2UtdGFnLmpzXCI6MzMsXCJ4LWlzLWFycmF5XCI6MjF9XSwzMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBzcGxpdCA9IHJlcXVpcmUoJ2Jyb3dzZXItc3BsaXQnKTtcblxudmFyIGNsYXNzSWRTcGxpdCA9IC8oW1xcLiNdP1thLXpBLVowLTlcXHUwMDdGLVxcdUZGRkZfOi1dKykvO1xudmFyIG5vdENsYXNzSWQgPSAvXlxcLnwjLztcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVRhZztcblxuZnVuY3Rpb24gcGFyc2VUYWcodGFnLCBwcm9wcykge1xuICAgIGlmICghdGFnKSB7XG4gICAgICAgIHJldHVybiAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgbm9JZCA9ICEocHJvcHMuaGFzT3duUHJvcGVydHkoJ2lkJykpO1xuXG4gICAgdmFyIHRhZ1BhcnRzID0gc3BsaXQodGFnLCBjbGFzc0lkU3BsaXQpO1xuICAgIHZhciB0YWdOYW1lID0gbnVsbDtcblxuICAgIGlmIChub3RDbGFzc0lkLnRlc3QodGFnUGFydHNbMV0pKSB7XG4gICAgICAgIHRhZ05hbWUgPSAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NlcywgcGFydCwgdHlwZSwgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCB0YWdQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJ0ID0gdGFnUGFydHNbaV07XG5cbiAgICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUgPSBwYXJ0LmNoYXJBdCgwKTtcblxuICAgICAgICBpZiAoIXRhZ05hbWUpIHtcbiAgICAgICAgICAgIHRhZ05hbWUgPSBwYXJ0O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcuJykge1xuICAgICAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMgfHwgW107XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnIycgJiYgbm9JZCkge1xuICAgICAgICAgICAgcHJvcHMuaWQgPSBwYXJ0LnN1YnN0cmluZygxLCBwYXJ0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xhc3Nlcykge1xuICAgICAgICBpZiAocHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocHJvcHMuY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3BzLmNsYXNzTmFtZSA9IGNsYXNzZXMuam9pbignICcpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5uYW1lc3BhY2UgPyB0YWdOYW1lIDogdGFnTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG59LHtcImJyb3dzZXItc3BsaXRcIjozfV0sMzQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgREVGQVVMVF9OQU1FU1BBQ0UgPSBudWxsO1xudmFyIEVWX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMnO1xudmFyIFhMSU5LX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcbnZhciBYTUxfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSc7XG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWR1RpbnkxMi9hdHRyaWJ1dGVUYWJsZS5odG1sXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvYXR0aW5kZXguaHRtbFxudmFyIFNWR19QUk9QRVJUSUVTID0ge1xuICAgICdhYm91dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2NlbnQtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FjY3VtdWxhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWRkaXRpdmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWxpZ25tZW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYW1wbGl0dWRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FyYWJpYy1mb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVOYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F0dHJpYnV0ZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXppbXV0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYW5kd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZUZyZXF1ZW5jeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlUHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlbGluZS1zaGlmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JpYXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FsY01vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FwLWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGFzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAtcGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcFBhdGhVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1wcm9maWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTY3JpcHRUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTdHlsZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3Vyc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGF0YXR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVmYXVsdEFjdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkZXNjZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RpZmZ1c2VDb25zdGFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXJlY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlzcGxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXZpc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RvbWluYW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R1cic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGdlTW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGl0YWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbGV2YXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5hYmxlLWJhY2tncm91bmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V2OmV2ZW50JzogRVZfTkFNRVNQQUNFLFxuICAgICdldmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtcnVsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyUmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNIaWdobGlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNhYmxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtZmFtaWx5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUtYWRqdXN0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc3RyZXRjaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0eWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtdmFyaWFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXdlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb3JtYXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnJvbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1uYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGhSZWYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRUcmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5kbGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LWFkdi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkZW9ncmFwaGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ltYWdlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbjInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW5pdGlhbFZpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW50ZXJjZXB0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2snOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmVsTWF0cml4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbFVuaXRMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlQb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5U3BsaW5lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlUaW1lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsYW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xlbmd0aEFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZXR0ZXItc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaWdodGluZy1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaW1pdGluZ0NvbmVBbmdsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsb2NhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1taWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLXN0YXJ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlckhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJXaWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tDb250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFza1VuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDaGFyYWN0ZXJFbmNvZGluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYUNvbnRlbnRFbmNvZGluZ3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFTaXplJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhVGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWluJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1uZXh0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1wcmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ251bU9jdGF2ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2JzZXJ2ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3BlcmF0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JkZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVyZmxvdyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYW5vc2UtMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdGhMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVybkNvbnRlbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Vbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwaGFzZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwbGF5YmFja09yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50ZXItZXZlbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0Wic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFscGhhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJpbWl0aXZlVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJvcGFnYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BlcnR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmFkaXVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVmWSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVuZGVyaW5nLWludGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXRDb3VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXREdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRFeHRlbnNpb25zJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRmVhdHVyZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb250cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZvcm1hdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzb3VyY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXN1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncm90YXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NlZWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2hhcGUtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Nsb3BlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NuYXBzaG90VGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BlY3VsYXJFeHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcHJlYWRNZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RhcnRPZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RkRGV2aWF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW1oJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW12JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0aXRjaFRpbGVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3AtY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RvcC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaWtldGhyb3VnaC10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaGFycmF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1kYXNob2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lY2FwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lam9pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbWl0ZXJsaW1pdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3VyZmFjZVNjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNCZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3JEZWZhdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNNYXN0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jVG9sZXJhbmNlRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeXN0ZW1MYW5ndWFnZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YWJsZVZhbHVlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtYW5jaG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtZGVjb3JhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpbWVsaW5lQmVnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGl0bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndG8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybUJlaGF2aW9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHlwZW9mJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuZGVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZS1iaWRpJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtcmFuZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pdHMtcGVyLWVtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtYWxwaGFiZXRpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWhhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1pZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LW1hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2YWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVyc2lvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LWFkdi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3Qm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZpZXdUYXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlzaWJpbGl0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd29yZC1zcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dyaXRpbmctbW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6YXJjcm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6aHJlZic6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6cm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6c2hvdyc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6dGl0bGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnR5cGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3htbDpiYXNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmlkJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmxhbmcnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6c3BhY2UnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3lDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd6b29tQW5kUGFuJzogREVGQVVMVF9OQU1FU1BBQ0Vcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU1ZHQXR0cmlidXRlTmFtZXNwYWNlO1xuXG5mdW5jdGlvbiBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UodmFsdWUpIHtcbiAgaWYgKFNWR19QUk9QRVJUSUVTLmhhc093blByb3BlcnR5KHZhbHVlKSkge1xuICAgIHJldHVybiBTVkdfUFJPUEVSVElFU1t2YWx1ZV07XG4gIH1cbn1cblxufSx7fV0sMzU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ3gtaXMtYXJyYXknKTtcblxudmFyIGggPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cblxudmFyIFNWR0F0dHJpYnV0ZU5hbWVzcGFjZSA9IHJlcXVpcmUoJy4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2UnKTtcbnZhciBhdHRyaWJ1dGVIb29rID0gcmVxdWlyZSgnLi9ob29rcy9hdHRyaWJ1dGUtaG9vaycpO1xuXG52YXIgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbm1vZHVsZS5leHBvcnRzID0gc3ZnO1xuXG5mdW5jdGlvbiBzdmcodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pIHtcbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwge307XG5cbiAgICAvLyBzZXQgbmFtZXNwYWNlIGZvciBzdmdcbiAgICBwcm9wZXJ0aWVzLm5hbWVzcGFjZSA9IFNWR19OQU1FU1BBQ0U7XG5cbiAgICB2YXIgYXR0cmlidXRlcyA9IHByb3BlcnRpZXMuYXR0cmlidXRlcyB8fCAocHJvcGVydGllcy5hdHRyaWJ1dGVzID0ge30pO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5hbWVzcGFjZSA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZShrZXkpO1xuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCkgeyAvLyBub3QgYSBzdmcgYXR0cmlidXRlXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnRpZXNba2V5XTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgIT09IG51bGwpIHsgLy8gbmFtZXNwYWNlZCBhdHRyaWJ1dGVcbiAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IGF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlXG4gICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fCBpc0FycmF5KHgpO1xufVxuXG59LHtcIi4vaG9va3MvYXR0cmlidXRlLWhvb2tcIjoyOSxcIi4vaW5kZXguanNcIjozMixcIi4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2VcIjozNCxcIngtaXMtYXJyYXlcIjoyMX1dLDM2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4vaXMtdm5vZGVcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4vaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi9pcy10aHVua1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhbmRsZVRodW5rXG5cbmZ1bmN0aW9uIGhhbmRsZVRodW5rKGEsIGIpIHtcbiAgICB2YXIgcmVuZGVyZWRBID0gYVxuICAgIHZhciByZW5kZXJlZEIgPSBiXG5cbiAgICBpZiAoaXNUaHVuayhiKSkge1xuICAgICAgICByZW5kZXJlZEIgPSByZW5kZXJUaHVuayhiLCBhKVxuICAgIH1cblxuICAgIGlmIChpc1RodW5rKGEpKSB7XG4gICAgICAgIHJlbmRlcmVkQSA9IHJlbmRlclRodW5rKGEsIG51bGwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYTogcmVuZGVyZWRBLFxuICAgICAgICBiOiByZW5kZXJlZEJcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlclRodW5rKHRodW5rLCBwcmV2aW91cykge1xuICAgIHZhciByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGVcblxuICAgIGlmICghcmVuZGVyZWRUaHVuaykge1xuICAgICAgICByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGUgPSB0aHVuay5yZW5kZXIocHJldmlvdXMpXG4gICAgfVxuXG4gICAgaWYgKCEoaXNWTm9kZShyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNWVGV4dChyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNXaWRnZXQocmVuZGVyZWRUaHVuaykpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInRodW5rIGRpZCBub3QgcmV0dXJuIGEgdmFsaWQgbm9kZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRUaHVua1xufVxuXG59LHtcIi4vaXMtdGh1bmtcIjozNyxcIi4vaXMtdm5vZGVcIjozOSxcIi4vaXMtdnRleHRcIjo0MCxcIi4vaXMtd2lkZ2V0XCI6NDF9XSwzNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzVGh1bmtcclxuXHJcbmZ1bmN0aW9uIGlzVGh1bmsodCkge1xyXG4gICAgcmV0dXJuIHQgJiYgdC50eXBlID09PSBcIlRodW5rXCJcclxufVxyXG5cbn0se31dLDM4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNIb29rXG5cbmZ1bmN0aW9uIGlzSG9vayhob29rKSB7XG4gICAgcmV0dXJuIGhvb2sgJiZcbiAgICAgICh0eXBlb2YgaG9vay5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJob29rXCIpIHx8XG4gICAgICAgdHlwZW9mIGhvb2sudW5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJ1bmhvb2tcIikpXG59XG5cbn0se31dLDM5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVmlydHVhbE5vZGVcblxuZnVuY3Rpb24gaXNWaXJ0dWFsTm9kZSh4KSB7XG4gICAgcmV0dXJuIHggJiYgeC50eXBlID09PSBcIlZpcnR1YWxOb2RlXCIgJiYgeC52ZXJzaW9uID09PSB2ZXJzaW9uXG59XG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIGlzVmlydHVhbFRleHQoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsVGV4dFwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1dpZGdldFxuXG5mdW5jdGlvbiBpc1dpZGdldCh3KSB7XG4gICAgcmV0dXJuIHcgJiYgdy50eXBlID09PSBcIldpZGdldFwiXG59XG5cbn0se31dLDQyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gXCIyXCJcblxufSx7fV0sNDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcbnZhciBpc1ZIb29rID0gcmVxdWlyZShcIi4vaXMtdmhvb2tcIilcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsTm9kZVxuXG52YXIgbm9Qcm9wZXJ0aWVzID0ge31cbnZhciBub0NoaWxkcmVuID0gW11cblxuZnVuY3Rpb24gVmlydHVhbE5vZGUodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4sIGtleSwgbmFtZXNwYWNlKSB7XG4gICAgdGhpcy50YWdOYW1lID0gdGFnTmFtZVxuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwgbm9Qcm9wZXJ0aWVzXG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IG5vQ2hpbGRyZW5cbiAgICB0aGlzLmtleSA9IGtleSAhPSBudWxsID8gU3RyaW5nKGtleSkgOiB1bmRlZmluZWRcbiAgICB0aGlzLm5hbWVzcGFjZSA9ICh0eXBlb2YgbmFtZXNwYWNlID09PSBcInN0cmluZ1wiKSA/IG5hbWVzcGFjZSA6IG51bGxcblxuICAgIHZhciBjb3VudCA9IChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpIHx8IDBcbiAgICB2YXIgZGVzY2VuZGFudHMgPSAwXG4gICAgdmFyIGhhc1dpZGdldHMgPSBmYWxzZVxuICAgIHZhciBoYXNUaHVua3MgPSBmYWxzZVxuICAgIHZhciBkZXNjZW5kYW50SG9va3MgPSBmYWxzZVxuICAgIHZhciBob29rc1xuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcGVydGllcykge1xuICAgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbcHJvcE5hbWVdXG4gICAgICAgICAgICBpZiAoaXNWSG9vayhwcm9wZXJ0eSkgJiYgcHJvcGVydHkudW5ob29rKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFob29rcykge1xuICAgICAgICAgICAgICAgICAgICBob29rcyA9IHt9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaG9va3NbcHJvcE5hbWVdID0gcHJvcGVydHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkpIHtcbiAgICAgICAgICAgIGRlc2NlbmRhbnRzICs9IGNoaWxkLmNvdW50IHx8IDBcblxuICAgICAgICAgICAgaWYgKCFoYXNXaWRnZXRzICYmIGNoaWxkLmhhc1dpZGdldHMpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhhc1RodW5rcyAmJiBjaGlsZC5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZGVzY2VuZGFudEhvb2tzICYmIChjaGlsZC5ob29rcyB8fCBjaGlsZC5kZXNjZW5kYW50SG9va3MpKSB7XG4gICAgICAgICAgICAgICAgZGVzY2VuZGFudEhvb2tzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNXaWRnZXRzICYmIGlzV2lkZ2V0KGNoaWxkKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZC5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNUaHVua3MgJiYgaXNUaHVuayhjaGlsZCkpIHtcbiAgICAgICAgICAgIGhhc1RodW5rcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50ID0gY291bnQgKyBkZXNjZW5kYW50c1xuICAgIHRoaXMuaGFzV2lkZ2V0cyA9IGhhc1dpZGdldHNcbiAgICB0aGlzLmhhc1RodW5rcyA9IGhhc1RodW5rc1xuICAgIHRoaXMuaG9va3MgPSBob29rc1xuICAgIHRoaXMuZGVzY2VuZGFudEhvb2tzID0gZGVzY2VuZGFudEhvb2tzXG59XG5cblZpcnR1YWxOb2RlLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbE5vZGUucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxOb2RlXCJcblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZob29rXCI6MzgsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXdpZGdldFwiOjQxLFwiLi92ZXJzaW9uXCI6NDJ9XSw0NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxuVmlydHVhbFBhdGNoLk5PTkUgPSAwXG5WaXJ0dWFsUGF0Y2guVlRFWFQgPSAxXG5WaXJ0dWFsUGF0Y2guVk5PREUgPSAyXG5WaXJ0dWFsUGF0Y2guV0lER0VUID0gM1xuVmlydHVhbFBhdGNoLlBST1BTID0gNFxuVmlydHVhbFBhdGNoLk9SREVSID0gNVxuVmlydHVhbFBhdGNoLklOU0VSVCA9IDZcblZpcnR1YWxQYXRjaC5SRU1PVkUgPSA3XG5WaXJ0dWFsUGF0Y2guVEhVTksgPSA4XG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFBhdGNoXG5cbmZ1bmN0aW9uIFZpcnR1YWxQYXRjaCh0eXBlLCB2Tm9kZSwgcGF0Y2gpIHtcbiAgICB0aGlzLnR5cGUgPSBOdW1iZXIodHlwZSlcbiAgICB0aGlzLnZOb2RlID0gdk5vZGVcbiAgICB0aGlzLnBhdGNoID0gcGF0Y2hcbn1cblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsUGF0Y2hcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFRleHRcblxuZnVuY3Rpb24gVmlydHVhbFRleHQodGV4dCkge1xuICAgIHRoaXMudGV4dCA9IFN0cmluZyh0ZXh0KVxufVxuXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxUZXh0LnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsVGV4dFwiXG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlByb3BzXG5cbmZ1bmN0aW9uIGRpZmZQcm9wcyhhLCBiKSB7XG4gICAgdmFyIGRpZmZcblxuICAgIGZvciAodmFyIGFLZXkgaW4gYSkge1xuICAgICAgICBpZiAoIShhS2V5IGluIGIpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFWYWx1ZSA9IGFbYUtleV1cbiAgICAgICAgdmFyIGJWYWx1ZSA9IGJbYUtleV1cblxuICAgICAgICBpZiAoYVZhbHVlID09PSBiVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYVZhbHVlKSAmJiBpc09iamVjdChiVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoZ2V0UHJvdG90eXBlKGJWYWx1ZSkgIT09IGdldFByb3RvdHlwZShhVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSG9vayhiVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIG9iamVjdERpZmYgPSBkaWZmUHJvcHMoYVZhbHVlLCBiVmFsdWUpXG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdERpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IG9iamVjdERpZmZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYktleSBpbiBiKSB7XG4gICAgICAgIGlmICghKGJLZXkgaW4gYSkpIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2JLZXldID0gYltiS2V5XVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDQ3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2hcIilcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12dGV4dFwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdGh1bmtcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIilcblxudmFyIGRpZmZQcm9wcyA9IHJlcXVpcmUoXCIuL2RpZmYtcHJvcHNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmXG5cbmZ1bmN0aW9uIGRpZmYoYSwgYikge1xuICAgIHZhciBwYXRjaCA9IHsgYTogYSB9XG4gICAgd2FsayhhLCBiLCBwYXRjaCwgMClcbiAgICByZXR1cm4gcGF0Y2hcbn1cblxuZnVuY3Rpb24gd2FsayhhLCBiLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICB2YXIgYXBwbHlDbGVhciA9IGZhbHNlXG5cbiAgICBpZiAoaXNUaHVuayhhKSB8fCBpc1RodW5rKGIpKSB7XG4gICAgICAgIHRodW5rcyhhLCBiLCBwYXRjaCwgaW5kZXgpXG4gICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcblxuICAgICAgICAvLyBJZiBhIGlzIGEgd2lkZ2V0IHdlIHdpbGwgYWRkIGEgcmVtb3ZlIHBhdGNoIGZvciBpdFxuICAgICAgICAvLyBPdGhlcndpc2UgYW55IGNoaWxkIHdpZGdldHMvaG9va3MgbXVzdCBiZSBkZXN0cm95ZWQuXG4gICAgICAgIC8vIFRoaXMgcHJldmVudHMgYWRkaW5nIHR3byByZW1vdmUgcGF0Y2hlcyBmb3IgYSB3aWRnZXQuXG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICAgICAgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgYSwgYikpXG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKGIpKSB7XG4gICAgICAgIGlmIChpc1ZOb2RlKGEpKSB7XG4gICAgICAgICAgICBpZiAoYS50YWdOYW1lID09PSBiLnRhZ05hbWUgJiZcbiAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSA9PT0gYi5uYW1lc3BhY2UgJiZcbiAgICAgICAgICAgICAgICBhLmtleSA9PT0gYi5rZXkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHNQYXRjaCA9IGRpZmZQcm9wcyhhLnByb3BlcnRpZXMsIGIucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNQYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guUFJPUFMsIGEsIHByb3BzUGF0Y2gpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcHBseSA9IGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZOT0RFLCBhLCBiKSlcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVlRleHQoYikpIHtcbiAgICAgICAgaWYgKCFpc1ZUZXh0KGEpKSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9IGVsc2UgaWYgKGEudGV4dCAhPT0gYi50ZXh0KSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5XSURHRVQsIGEsIGIpKVxuICAgIH1cblxuICAgIGlmIChhcHBseSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBseVxuICAgIH1cblxuICAgIGlmIChhcHBseUNsZWFyKSB7XG4gICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZGlmZkNoaWxkcmVuKGEsIGIsIHBhdGNoLCBhcHBseSwgaW5kZXgpIHtcbiAgICB2YXIgYUNoaWxkcmVuID0gYS5jaGlsZHJlblxuICAgIHZhciBvcmRlcmVkU2V0ID0gcmVvcmRlcihhQ2hpbGRyZW4sIGIuY2hpbGRyZW4pXG4gICAgdmFyIGJDaGlsZHJlbiA9IG9yZGVyZWRTZXQuY2hpbGRyZW5cblxuICAgIHZhciBhTGVuID0gYUNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBiTGVuID0gYkNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBsZW4gPSBhTGVuID4gYkxlbiA/IGFMZW4gOiBiTGVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBsZWZ0Tm9kZSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgcmlnaHROb2RlID0gYkNoaWxkcmVuW2ldXG4gICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICBpZiAoIWxlZnROb2RlKSB7XG4gICAgICAgICAgICBpZiAocmlnaHROb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXhjZXNzIG5vZGVzIGluIGIgbmVlZCB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksXG4gICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLklOU0VSVCwgbnVsbCwgcmlnaHROb2RlKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdhbGsobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVk5vZGUobGVmdE5vZGUpICYmIGxlZnROb2RlLmNvdW50KSB7XG4gICAgICAgICAgICBpbmRleCArPSBsZWZ0Tm9kZS5jb3VudFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyZWRTZXQubW92ZXMpIHtcbiAgICAgICAgLy8gUmVvcmRlciBub2RlcyBsYXN0XG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICBWUGF0Y2guT1JERVIsXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgb3JkZXJlZFNldC5tb3Zlc1xuICAgICAgICApKVxuICAgIH1cblxuICAgIHJldHVybiBhcHBseVxufVxuXG5mdW5jdGlvbiBjbGVhclN0YXRlKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYSBzaW5nbGUgd2Fsaywgbm90IHR3b1xuICAgIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgIGRlc3Ryb3lXaWRnZXRzKHZOb2RlLCBwYXRjaCwgaW5kZXgpXG59XG5cbi8vIFBhdGNoIHJlY29yZHMgZm9yIGFsbCBkZXN0cm95ZWQgd2lkZ2V0cyBtdXN0IGJlIGFkZGVkIGJlY2F1c2Ugd2UgbmVlZFxuLy8gYSBET00gbm9kZSByZWZlcmVuY2UgZm9yIHRoZSBkZXN0cm95IGZ1bmN0aW9uXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzV2lkZ2V0KHZOb2RlKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZOb2RlLmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgdk5vZGUsIG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVk5vZGUodk5vZGUpICYmICh2Tm9kZS5oYXNXaWRnZXRzIHx8IHZOb2RlLmhhc1RodW5rcykpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgICAgICBkZXN0cm95V2lkZ2V0cyhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkgJiYgY2hpbGQuY291bnQpIHtcbiAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbi8vIENyZWF0ZSBhIHN1Yi1wYXRjaCBmb3IgdGh1bmtzXG5mdW5jdGlvbiB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgdmFyIG5vZGVzID0gaGFuZGxlVGh1bmsoYSwgYilcbiAgICB2YXIgdGh1bmtQYXRjaCA9IGRpZmYobm9kZXMuYSwgbm9kZXMuYilcbiAgICBpZiAoaGFzUGF0Y2hlcyh0aHVua1BhdGNoKSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBuZXcgVlBhdGNoKFZQYXRjaC5USFVOSywgbnVsbCwgdGh1bmtQYXRjaClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhdGNoZXMocGF0Y2gpIHtcbiAgICBmb3IgKHZhciBpbmRleCBpbiBwYXRjaCkge1xuICAgICAgICBpZiAoaW5kZXggIT09IFwiYVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIEV4ZWN1dGUgaG9va3Mgd2hlbiB0d28gbm9kZXMgYXJlIGlkZW50aWNhbFxuZnVuY3Rpb24gdW5ob29rKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoaXNWTm9kZSh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHZOb2RlLmhvb2tzKSB7XG4gICAgICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBlbmRQYXRjaChcbiAgICAgICAgICAgICAgICBwYXRjaFtpbmRleF0sXG4gICAgICAgICAgICAgICAgbmV3IFZQYXRjaChcbiAgICAgICAgICAgICAgICAgICAgVlBhdGNoLlBST1BTLFxuICAgICAgICAgICAgICAgICAgICB2Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkS2V5cyh2Tm9kZS5ob29rcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodk5vZGUuZGVzY2VuZGFudEhvb2tzIHx8IHZOb2RlLmhhc1RodW5rcykge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHVuaG9vayhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IGNoaWxkLmNvdW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZEtleXMob2JqKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBMaXN0IGRpZmYsIG5haXZlIGxlZnQgdG8gcmlnaHQgcmVvcmRlcmluZ1xuZnVuY3Rpb24gcmVvcmRlcihhQ2hpbGRyZW4sIGJDaGlsZHJlbikge1xuICAgIC8vIE8oTSkgdGltZSwgTyhNKSBtZW1vcnlcbiAgICB2YXIgYkNoaWxkSW5kZXggPSBrZXlJbmRleChiQ2hpbGRyZW4pXG4gICAgdmFyIGJLZXlzID0gYkNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBiRnJlZSA9IGJDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChiRnJlZS5sZW5ndGggPT09IGJDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhOKSB0aW1lLCBPKE4pIG1lbW9yeVxuICAgIHZhciBhQ2hpbGRJbmRleCA9IGtleUluZGV4KGFDaGlsZHJlbilcbiAgICB2YXIgYUtleXMgPSBhQ2hpbGRJbmRleC5rZXlzXG4gICAgdmFyIGFGcmVlID0gYUNoaWxkSW5kZXguZnJlZVxuXG4gICAgaWYgKGFGcmVlLmxlbmd0aCA9PT0gYUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IGJDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPKE1BWChOLCBNKSkgbWVtb3J5XG4gICAgdmFyIG5ld0NoaWxkcmVuID0gW11cblxuICAgIHZhciBmcmVlSW5kZXggPSAwXG4gICAgdmFyIGZyZWVDb3VudCA9IGJGcmVlLmxlbmd0aFxuICAgIHZhciBkZWxldGVkSXRlbXMgPSAwXG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggYSBhbmQgbWF0Y2ggYSBub2RlIGluIGJcbiAgICAvLyBPKE4pIHRpbWUsXG4gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgYUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhSXRlbSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgaXRlbUluZGV4XG5cbiAgICAgICAgaWYgKGFJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKGJLZXlzLmhhc093blByb3BlcnR5KGFJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBNYXRjaCB1cCB0aGUgb2xkIGtleXNcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBiS2V5c1thSXRlbS5rZXldXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIGtleWVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTWF0Y2ggdGhlIGl0ZW0gaW4gYSB3aXRoIHRoZSBuZXh0IGZyZWUgaXRlbSBpbiBiXG4gICAgICAgICAgICBpZiAoZnJlZUluZGV4IDwgZnJlZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYkZyZWVbZnJlZUluZGV4KytdXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGZyZWUgaXRlbXMgaW4gYiB0byBtYXRjaCB3aXRoXG4gICAgICAgICAgICAgICAgLy8gdGhlIGZyZWUgaXRlbXMgaW4gYSwgc28gdGhlIGV4dHJhIGZyZWUgbm9kZXNcbiAgICAgICAgICAgICAgICAvLyBhcmUgZGVsZXRlZC5cbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBpIC0gZGVsZXRlZEl0ZW1zKytcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFzdEZyZWVJbmRleCA9IGZyZWVJbmRleCA+PSBiRnJlZS5sZW5ndGggP1xuICAgICAgICBiQ2hpbGRyZW4ubGVuZ3RoIDpcbiAgICAgICAgYkZyZWVbZnJlZUluZGV4XVxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGIgYW5kIGFwcGVuZCBhbnkgbmV3IGtleXNcbiAgICAvLyBPKE0pIHRpbWVcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbmV3SXRlbSA9IGJDaGlsZHJlbltqXVxuXG4gICAgICAgIGlmIChuZXdJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKCFhS2V5cy5oYXNPd25Qcm9wZXJ0eShuZXdJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgYW55IG5ldyBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhZGRpbmcgbmV3IGl0ZW1zIHRvIHRoZSBlbmQgYW5kIHRoZW4gc29ydGluZyB0aGVtXG4gICAgICAgICAgICAgICAgLy8gaW4gcGxhY2UuIEluIGZ1dHVyZSB3ZSBzaG91bGQgaW5zZXJ0IG5ldyBpdGVtcyBpbiBwbGFjZS5cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0l0ZW0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaiA+PSBsYXN0RnJlZUluZGV4KSB7XG4gICAgICAgICAgICAvLyBBZGQgYW55IGxlZnRvdmVyIG5vbi1rZXllZCBpdGVtc1xuICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNpbXVsYXRlID0gbmV3Q2hpbGRyZW4uc2xpY2UoKVxuICAgIHZhciBzaW11bGF0ZUluZGV4ID0gMFxuICAgIHZhciByZW1vdmVzID0gW11cbiAgICB2YXIgaW5zZXJ0cyA9IFtdXG4gICAgdmFyIHNpbXVsYXRlSXRlbVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBiQ2hpbGRyZW4ubGVuZ3RoOykge1xuICAgICAgICB2YXIgd2FudGVkSXRlbSA9IGJDaGlsZHJlbltrXVxuICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtc1xuICAgICAgICB3aGlsZSAoc2ltdWxhdGVJdGVtID09PSBudWxsICYmIHNpbXVsYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgbnVsbCkpXG4gICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIG5lZWQgYSBrZXkgaW4gdGhpcyBwb3NpdGlvbi4uLlxuICAgICAgICAgICAgaWYgKHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFuIGluc2VydCBkb2Vzbid0IHB1dCB0aGlzIGtleSBpbiBwbGFjZSwgaXQgbmVlZHMgdG8gbW92ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoYktleXNbc2ltdWxhdGVJdGVtLmtleV0gIT09IGsgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcmVtb3ZlIGRpZG4ndCBwdXQgdGhlIHdhbnRlZCBpdGVtIGluIHBsYWNlLCB3ZSBuZWVkIHRvIGluc2VydCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0ZW1zIGFyZSBtYXRjaGluZywgc28gc2tpcCBhaGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGVJbmRleCsrXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGsrK1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYSBrZXkgaW4gc2ltdWxhdGUgaGFzIG5vIG1hdGNoaW5nIHdhbnRlZCBrZXksIHJlbW92ZSBpdFxuICAgICAgICAgICAgZWxzZSBpZiAoc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgaysrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYWxsIHRoZSByZW1haW5pbmcgbm9kZXMgZnJvbSBzaW11bGF0ZVxuICAgIHdoaWxlKHNpbXVsYXRlSW5kZXggPCBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBvbmx5IG1vdmVzIHdlIGhhdmUgYXJlIGRlbGV0ZXMgdGhlbiB3ZSBjYW4ganVzdFxuICAgIC8vIGxldCB0aGUgZGVsZXRlIHBhdGNoIHJlbW92ZSB0aGVzZSBpdGVtcy5cbiAgICBpZiAocmVtb3Zlcy5sZW5ndGggPT09IGRlbGV0ZWRJdGVtcyAmJiAhaW5zZXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBuZXdDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgIG1vdmVzOiB7XG4gICAgICAgICAgICByZW1vdmVzOiByZW1vdmVzLFxuICAgICAgICAgICAgaW5zZXJ0czogaW5zZXJ0c1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmUoYXJyLCBpbmRleCwga2V5KSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSlcblxuICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IGluZGV4LFxuICAgICAgICBrZXk6IGtleVxuICAgIH1cbn1cblxuZnVuY3Rpb24ga2V5SW5kZXgoY2hpbGRyZW4pIHtcbiAgICB2YXIga2V5cyA9IHt9XG4gICAgdmFyIGZyZWUgPSBbXVxuICAgIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cblxuICAgICAgICBpZiAoY2hpbGQua2V5KSB7XG4gICAgICAgICAgICBrZXlzW2NoaWxkLmtleV0gPSBpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcmVlLnB1c2goaSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleXM6IGtleXMsICAgICAvLyBBIGhhc2ggb2Yga2V5IG5hbWUgdG8gaW5kZXhcbiAgICAgICAgZnJlZTogZnJlZSAgICAgIC8vIEFuIGFycmF5IG9mIHVua2V5ZWQgaXRlbSBpbmRpY2VzXG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBlbmRQYXRjaChhcHBseSwgcGF0Y2gpIHtcbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgaWYgKGlzQXJyYXkoYXBwbHkpKSB7XG4gICAgICAgICAgICBhcHBseS5wdXNoKHBhdGNoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbHkgPSBbYXBwbHksIHBhdGNoXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFwcGx5XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2hhbmRsZS10aHVua1wiOjM2LFwiLi4vdm5vZGUvaXMtdGh1bmtcIjozNyxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92cGF0Y2hcIjo0NCxcIi4vZGlmZi1wcm9wc1wiOjQ2LFwieC1pcy1hcnJheVwiOjIxfV0sNDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHZkb20gPSB7XG4gIFZOb2RlOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS92bm9kZS92bm9kZScpLFxuICBWVGV4dDogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdnRleHQnKSxcbiAgZGlmZjogcmVxdWlyZSgndmlydHVhbC1kb20vZGlmZicpLFxuICBwYXRjaDogcmVxdWlyZSgndmlydHVhbC1kb20vcGF0Y2gnKSxcbiAgY3JlYXRlRWxlbWVudDogcmVxdWlyZSgndmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnQnKSxcbiAgc3ZnOiByZXF1aXJlKFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIiksXG59O1xuXG5nbG9iYWwuVmlydHVhbERvbSA9IHZkb207XG5tb2R1bGUuZXhwb3J0cyA9IHZkb207XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCJ2aXJ0dWFsLWRvbS9jcmVhdGUtZWxlbWVudFwiOjEsXCJ2aXJ0dWFsLWRvbS9kaWZmXCI6MixcInZpcnR1YWwtZG9tL3BhdGNoXCI6MjIsXCJ2aXJ0dWFsLWRvbS92aXJ0dWFsLWh5cGVyc2NyaXB0L3N2Z1wiOjM1LFwidmlydHVhbC1kb20vdm5vZGUvdm5vZGVcIjo0MyxcInZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0XCI6NDV9XX0se30sWzQ4XSkoNDgpXG59KTtcbiIsImZ1bmN0aW9uIFZkb21UaHVuayhmbiwgYXJncywga2V5KSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFZkb21UaHVuaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWZG9tVGh1bmsoZm4sIGFyZ3MsIGtleSk7XG4gICAgfVxuXG4gICAgaWYgKGtleSkge1xuICAgICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgfVxuXG4gICAgdGhpcy5mbiA9IGZuO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5WZG9tVGh1bmsgPSBWZG9tVGh1bms7XG5cblZkb21UaHVuay5wcm90b3R5cGUudHlwZSA9ICdUaHVuayc7XG5WZG9tVGh1bmsucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChwcmV2KSB7XG4gIGlmIChwcmV2ICYmIHRoaXMuYXJncyA9PT0gcHJldi5hcmdzICYmIHRoaXMuZm4gPT09IHByZXYuZm4pIHtcbiAgICByZXR1cm4gcHJldi52bm9kZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmZuKHRoaXMuYXJncyk7XG59O1xuXG5cbiIsIi8vIFVzZWQgYnkgd29ya2Fyb3VuZCBmb3IgaW5wdXQgZWxlbWVudCB2YWx1ZSBmaWVsZFxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9ob29rcy9zb2Z0LXNldC1ob29rLmpzXG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG5cbnZhciBHZW5lcmljSG9vayA9IGZ1bmN0aW9uIChpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHZW5lcmljSG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljSG9vayhpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0ID0gaW5pdDtcbiAgICB0aGlzLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmV4dHJhID0gZXh0cmE7XG59O1xuXG52YXIgaG9va19zdGF0ZV9rZXkgPSBcInZkb21faG9va19zdGF0ZV9rZXlcIjtcblxuaWYgKHRoaXMuU3ltYm9sKSB7XG4gICAgaG9va19zdGF0ZV9rZXkgPSBTeW1ib2woaG9va19zdGF0ZV9rZXkpO1xufVxuXG5HZW5lcmljSG9vay53cml0ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgc3RhdGUpIHtcbiAgICBpZiAoIW5vZGVbaG9va19zdGF0ZV9rZXldKSB7XG4gICAgICAgIG5vZGVbaG9va19zdGF0ZV9rZXldID0ge307XG4gICAgfVxuICAgIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXSA9IHN0YXRlO1xufVxuXG5HZW5lcmljSG9vay5yZWFkX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgcmV0dXJuIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2sucmVtb3ZlX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgZGVsZXRlIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbiA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgIHJldHVybiBmcm9tIGluc3RhbmNlb2YgdGhpcyAmJiB0byBpbnN0YW5jZW9mIHRoaXMgJiYgZnJvbS5pZCA9PT0gdG8uaWQgJiYgdG8udXBkYXRlO1xufTtcblxuR2VuZXJpY0hvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHByZXYpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbihwcmV2LCB0aGlzKSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBHZW5lcmljSG9vay5yZWFkX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICAgICAgc3RhdGUgPSB0aGlzLnVwZGF0ZShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLndyaXRlX3N0YXRlKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5pbml0KG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH1cbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIG5leHQpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbih0aGlzLCBuZXh0KSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nLCB0aGUgaW1wZW5kaW5nIFtob29rXSB3aWxsIGhhbmRsZSB0aGUgY2FsbCB0byB1cGRhdGUuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgfVxufTtcblxuam9vX2dsb2JhbF9vYmplY3QuR2VuZXJpY0hvb2sgPSBHZW5lcmljSG9vaztcbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCh2KSB7XG4gIHYgPSB2IC0gKCh2ID4+PiAxKSAmIDB4NTU1NTU1NTUpO1xuICB2ID0gKHYgJiAweDMzMzMzMzMzKSArICgodiA+Pj4gMikgJiAweDMzMzMzMzMzKTtcbiAgcmV0dXJuICgodiArICh2ID4+PiA0KSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+PiAyNDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MgY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zKHgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4bih4KSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NseiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCkge1xuICB2YXIgbiA9IDMyO1xuICB2YXIgeTtcbiAgeSA9IHggPj4xNjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDg7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0geCA+PiA0OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDE7IGlmICh5ICE9IDApIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSB4O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY2x6KHgpIHtcbiAgdmFyIG4gPSA2NDtcbiAgdmFyIHk7XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTMyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMSk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0gY2FtbF9pbnQ2NF90b19pbnQzMih4KTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpIHtcbiAgaWYgKHggPT09IDApIHsgcmV0dXJuIDMyOyB9XG4gIHZhciBuID0gMTtcbiAgaWYgKCAoeCAmIDB4MDAwMEZGRkYpID09PSAwKSB7IG4gPSBuICsgMTY7IHggPSB4ID4+IDE2OyB9XG4gIGlmICggKHggJiAweDAwMDAwMEZGKSA9PT0gMCkgeyBuID0gbiArICA4OyB4ID0geCA+PiAgODsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwRikgPT09IDApIHsgbiA9IG4gKyAgNDsgeCA9IHggPj4gIDQ7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMDMpID09PSAwKSB7IG4gPSBuICsgIDI7IHggPSB4ID4+ICAyOyB9XG4gIHJldHVybiBuIC0gKHggJiAxKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FuZCwgY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY3R6KHgpIHtcbiAgaWYgKGNhbWxfaW50NjRfaXNfemVybyh4KSkgeyByZXR1cm4gNjQ7IH1cbiAgdmFyIG4gPSAxO1xuICBmdW5jdGlvbiBpc196ZXJvICh4KSAgICB7IHJldHVybiBjYW1sX2ludDY0X2lzX3plcm8oeCk7IH1cbiAgZnVuY3Rpb24gbGFuZCAoeCx5KSAgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9hbmQoeCwgeSk7IH1cbiAgZnVuY3Rpb24gc21hbGxfaW50NjQoeCkgeyByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoeCwwLDApOyB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMHhGRkZGRkYsIDB4MDAwMEZGLCAweDAwMDApKSkpIHtcbiAgICBuID0gbiArIDMyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwRkZGRikpKSkge1xuICAgIG4gPSBuICsgMTY7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMEZGKSkpKSB7XG4gICAgbiA9IG4gKyAgODsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwRikpKSkge1xuICAgIG4gPSBuICsgIDQ7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDMpKSkpIHtcbiAgICBuID0gbiArICAyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgfVxuICByZXR1cm4gbiAtIChjYW1sX2ludDY0X3RvX2ludDMyKGNhbWxfaW50NjRfYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAxKSkpKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSAxO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWV4cG9uZW50PT0wKSB7XG4gICAgbXVsWzFdID0gKG11bFsxXSAqIG11bFszXSkgfCAwO1xuICAgIG11bFsyXSA9IChtdWxbMV0gKiBtdWxbMV0pIHwgMDtcbiAgICBtdWxbM10gPSAobXVsWzJdICogbXVsWzFdKSB8IDA7XG4gICAgcmVzID0gKHJlcyAqIG11bFtleHBvbmVudCAmIDNdKSB8IDA7XG4gICAgZXhwb25lbnQgPSBleHBvbmVudCA+PiAyO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKDEsMCk7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKGV4cG9uZW50KSkge1xuICAgIG11bFsxXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzNdKTtcbiAgICBtdWxbMl0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFsxXSk7XG4gICAgbXVsWzNdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzJdLCBtdWxbMV0pO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfbXVsKHJlcywgbXVsW2NhbWxfaW50NjRfbG8zMihleHBvbmVudCkgJiAzXSk7XG4gICAgZXhwb25lbnQgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKGV4cG9uZW50LCAyKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAscylcbn1cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9kb3VibGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX2RvdWJsZShkKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAsZCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfYW1fdGVzdGluZyBjb25zdFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBCYXNlX2FtX3Rlc3RpbmcoeCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jc2VsX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2NzZWxfdmFsdWUodl9jb25kLCB2X3RydWUsIHZfZmFsc2UpIHtcbiAgICBpZiAodl9jb25kKVxuICAgICAgICByZXR1cm4gdl90cnVlO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHZfZmFsc2U7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfdW5zYWZlX2NyZWF0ZV9sb2NhbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXNcbmZ1bmN0aW9uIEJhc2VfdW5zYWZlX2NyZWF0ZV9sb2NhbF9ieXRlcyh2X2xlbikge1xuICAgIC8vIFRoaXMgZG9lcyBhIHJlZHVuZGFudCBib3VuZHMgY2hlY2sgYW5kIChzaW5jZSB0aGlzIGlzXG4gICAgLy8gamF2YXNjcmlwdCkgZG9lc24ndCBhbGxvY2F0ZSBsb2NhbGx5LCBidXQgdGhhdCdzIGZpbmUuXG4gICAgcmV0dXJuIGNhbWxfY3JlYXRlX2J5dGVzKHZfbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2xvY2FsX3ZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV92ZWN0XG5mdW5jdGlvbiBjYW1sX21ha2VfbG9jYWxfdmVjdCh2X2xlbiwgdl9lbHQpIHtcbiAgICAvLyBJbiBqYXZhc2NyaXB0IHRoZXJlJ3Mgbm8gbG9jYWwgYWxsb2NhdGlvbi5cbiAgICByZXR1cm4gY2FtbF9tYWtlX3ZlY3QgKHZfbGVuLCB2X2VsdCk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2luZml4XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2luZml4ICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYgKHgpIHsgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIFt4XSkgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG5mdW5jdGlvbiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwKHgsaSxvbGQsbil7XG4gIGlmKHhbaSsxXSA9PSBvbGQpIHtcbiAgICB4W2krMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfc2hhcmVkKHgpe1xuICByZXR1cm4gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3VwZGF0ZV90YWcoYixvLG4pIHtcbiAgICBpZihiWzBdPT1vKSB7IGJbMF0gPSBuOyByZXR1cm4gMSB9XG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmcobykge1xuICBpZiAoKG8gaW5zdGFuY2VvZiBBcnJheSkgJiYgb1swXSA9PSAob1swXSA+Pj4gMCkgJiZcbiAgICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4gIGZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjUwKTtcbiAgcmV0dXJuIDA7IC8vIHVuaXRcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3JlYWRfcmVzdWx0KG8pIHtcbiAgcmV0dXJuIChjYW1sX29ial90YWcobykgPT0gMjUwKT9vWzFdOm87XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246IDwgNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gKHQgPT0gMjQ1KSA/IDEgOiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT0gXCIlZFwiKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiK2kpO1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChpIDwgMCkgeyBpZiAoZi5zaWduZWRjb252KSB7IGYuc2lnbiA9IC0xOyBpID0gLWk7IH0gZWxzZSBpID4+Pj0gMDsgfVxuICB2YXIgcyA9IGkudG9TdHJpbmcoZi5iYXNlKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBzLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIHMgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBzO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKSB7XG4gIHZhciBpID0gMCwgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLCBiYXNlID0gMTAsIHNpZ24gPSAxO1xuICBpZiAobGVuID4gMCkge1xuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpKSB7XG4gICAgY2FzZSA0NTogaSsrOyBzaWduID0gLTE7IGJyZWFrO1xuICAgIGNhc2UgNDM6IGkrKzsgc2lnbiA9IDE7IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PSA0OClcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpKSB7XG4gICAgY2FzZSAxMjA6IGNhc2UgODg6IGJhc2UgPSAxNjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExMTogY2FzZSA3OTogYmFzZSA9ICA4OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgIDk4OiBjYXNlIDY2OiBiYXNlID0gIDI7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTc6IGNhc2UgODU6IGkgKz0gMjsgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gW2ksIHNpZ24sIGJhc2VdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2RpZ2l0XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2RpZ2l0KGMpIHtcbiAgaWYgKGMgPj0gNDggJiYgYyA8PSA1NykgIHJldHVybiBjIC0gNDg7XG4gIGlmIChjID49IDY1ICYmIGMgPD0gOTApICByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyAocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgdGhyZXNob2xkID0gLTEgPj4+IDA7XG4gIHZhciBjID0gKGkgPCBsZW4pP2NhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk6MDtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGQ7XG4gIGZvciAoaSsrO2k8bGVuO2krKykge1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAvLyBGb3IgYmFzZSBkaWZmZXJlbnQgZnJvbSAxMCwgd2UgZXhwZWN0IGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uLFxuICAvLyBoZW5jZSBhbnkgdmFsdWUgb2YgJ3JlcycgKGxlc3MgdGhhbiAndGhyZXNob2xkJykgaXMgYWNjZXB0YWJsZS5cbiAgLy8gQnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGUgcmVzdWx0IGJhY2sgdG8gYSBzaWduZWQgaW50ZWdlci5cbiAgcmVzID0gc2lnbiAqIHJlcztcbiAgaWYgKChiYXNlID09IDEwKSAmJiAoKHJlcyB8IDApICE9IHJlcykpXG4gICAgLyogU2lnbmVkIHJlcHJlc2VudGF0aW9uIGV4cGVjdGVkLCBhbGxvdyAtMl4obmJpdHMtMSkgdG8gMl4obmJpdHMtMSkgLSAxICovXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX211bCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tdWwoYSxiKXtcbiAgcmV0dXJuIE1hdGguaW11bChhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RpdlxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9kaXYoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiAoeC95KXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9tb2QoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiB4JXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNlxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoKCh4ICYgMHgwMEZGKSA8PCA4KSB8XG4gICAgICAgICAgICgoeCAmIDB4RkYwMCkgPj4gOCkpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYnN3YXBcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkge1xuICByZXR1cm4gKCgoeCAmIDB4MDAwMDAwRkYpIDw8IDI0KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMDAwRkYwMCkgPDwgOCkgfFxuICAgICAgICAgICgoeCAmIDB4MDBGRjAwMDApID4+PiA4KSB8XG4gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4+IDI0KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX3VuaXZfcGFyYW0gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246IDwgNC4xMlxuZnVuY3Rpb24gY2FtbF9oYXNoX3VuaXZfcGFyYW0gKGNvdW50LCBsaW1pdCwgb2JqKSB7XG4gIHZhciBoYXNoX2FjY3UgPSAwO1xuICBmdW5jdGlvbiBoYXNoX2F1eCAob2JqKSB7XG4gICAgbGltaXQgLS07XG4gICAgaWYgKGNvdW50IDwgMCB8fCBsaW1pdCA8IDApIHJldHVybjtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkgJiYgb2JqWzBdID09PSAob2JqWzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKG9ialswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqWzJdKSB8IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgbGltaXQrKzsgaGFzaF9hdXgob2JqKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgb2JqWzBdKSB8IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvYmoubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgaGFzaF9hdXggKG9ialtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKG9iaikpIHtcbiAgICAgIGNvdW50IC0tO1xuICAgICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQob2JqKTtcbiAgICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGZvciAodmFyIGIgPSBjb250ZW50LCBsID0gYi5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgICAgZm9yICh2YXIgYSA9IGNvbnRlbnQsIGwgPSBhLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYVtpXSkgfCAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcob2JqKSkge1xuICAgICAgdmFyIGpzYnl0ZXMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9iaik7XG4gICAgICBmb3IgKHZhciBiID0ganNieXRlcywgbCA9IGpzYnl0ZXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmb3IgKHZhciBiID0gb2JqLCBsID0gb2JqLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSAob2JqfDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBjb3VudCAtLTtcbiAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9iaikgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSArb2JqKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgY291bnQtLTtcbiAgICAgIHZhciBwID0gY2FtbF9pbnQ2NF90b19ieXRlcyAoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IChvYmopKTtcbiAgICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgcFtpXSkgfCAwO1xuICAgIH0gZWxzZSBpZihvYmogJiYgb2JqLmNhbWxfY3VzdG9tKSB7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoID0gY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaChvYmopIHwgMDtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgaCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYXNoX2F1eCAob2JqKTtcbiAgcmV0dXJuIGhhc2hfYWNjdSAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsZCkge1xuICBkID0gY2FtbF9tdWwoZCwgMHhjYzllMmQ1MXwwKTtcbiAgZCA9ICgoZCA8PCAxNSkgfCAoZCA+Pj4gKDMyLTE1KSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9ICgoaCA8PCAxMykgfCAoaCA+Pj4gKDMyLTEzKSkpOyAgIC8vUk9UTDMyKGgsIDEzKTtcbiAgcmV0dXJuICgoKGggKyAoaCA8PCAyKSl8MCkgKyAoMHhlNjU0NmI2NHwwKSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmluYWwoaCkge1xuICBoIF49IGggPj4+IDE2O1xuICBoID0gY2FtbF9tdWwgKGgsIDB4ODVlYmNhNmJ8MCk7XG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPSBjYW1sX211bCAoaCwgMHhjMmIyYWUzNXwwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9oYXNoX21peF9pbnQ2NFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9mbG9hdCAoaCwgdjApIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50NjQoaCwgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh2MCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludDY0IChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gcy5jaGFyQ29kZUF0KGkpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCA4KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMikgPDwgMTYpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSszKSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHMuY2hhckNvZGVBdChpKzIpIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gcy5jaGFyQ29kZUF0KGkrMSkgPDwgODtcbiAgY2FzZSAxOlxuICAgIHcgfD0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHNbaV1cbiAgICAgIHwgKHNbaSsxXSA8PCA4KVxuICAgICAgfCAoc1tpKzJdIDw8IDE2KVxuICAgICAgfCAoc1tpKzNdIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gc1tpKzJdIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gc1tpKzFdIDw8IDg7XG4gIGNhc2UgMTogdyB8PSBzW2ldO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlcyhoLCB2KSB7XG4gIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHYpO1xuICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpXG4gIGVsc2UgLyogQVJSQVkgKi9cbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgY29udGVudCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHYpKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoIChjb3VudCwgbGltaXQsIHNlZWQsIG9iaikge1xuICB2YXIgcXVldWUsIHJkLCB3ciwgc3osIG51bSwgaCwgdiwgaSwgbGVuO1xuICBzeiA9IGxpbWl0O1xuICBpZiAoc3ogPCAwIHx8IHN6ID4gMjU2KSBzeiA9IDI1NjtcbiAgbnVtID0gY291bnQ7XG4gIGggPSBzZWVkO1xuICBxdWV1ZSA9IFtvYmpdOyByZCA9IDA7IHdyID0gMTtcbiAgd2hpbGUgKHJkIDwgd3IgJiYgbnVtID4gMCkge1xuICAgIHYgPSBxdWV1ZVtyZCsrXTtcbiAgICBpZiAodiAmJiB2LmNhbWxfY3VzdG9tKXtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50IChoLCBoaCk7XG4gICAgICAgIG51bSAtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKHZbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHZbMl0pO1xuICAgICAgICBudW0tLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKSB7XG4gICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdGFnKTtcbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gdi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgcXVldWVbd3IrK10gPSB2W2ldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodnwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHYrdisxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLHYpO1xuICAgICAgbnVtLS07XG4gICAgfVxuICB9XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWwsIGNhbWxfaGFzaF9taXhfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19oYXNoKGgsIHYpe1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdik7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGpzb29fZmxvb3JfbG9nMlxudmFyIGxvZzJfb2sgPSBNYXRoLmxvZzIgJiYgTWF0aC5sb2cyKDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3KSA9PSAxMDIwXG5mdW5jdGlvbiBqc29vX2Zsb29yX2xvZzIoeCkge1xuICBpZihsb2cyX29rKSByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpXG4gIHZhciBpID0gMDtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC1JbmZpbml0eTtcbiAgaWYoeD49MSkge3doaWxlICh4Pj0yKSB7eC89MjsgaSsrfSB9XG4gIGVsc2Uge3doaWxlICh4IDwgMSkge3gqPTI7IGktLX0gfTtcbiAgcmV0dXJuIGk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMSwgMCwgMHg3ZmYwKTtcbiAgICBpZiAoeCA+IDApXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHg3ZmYwKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweGZmZjApXG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8weDgwMDA6KHg+PTApPzA6MHg4MDAwO1xuICBpZiAoc2lnbikgeCA9IC14O1xuICAvLyBJbnQ2NC5iaXRzX29mX2Zsb2F0IDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3ID0gMHg3ZmIwMDAwMDAwMDAwMDAwTFxuICAvLyB1c2luZyBNYXRoLkxPRzJFKk1hdGgubG9nKHgpIGluIHBsYWNlIG9mIE1hdGgubG9nMiByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3RcbiAgdmFyIGV4cCA9IGpzb29fZmxvb3JfbG9nMih4KSArIDEwMjM7XG4gIGlmIChleHAgPD0gMCkge1xuICAgIGV4cCA9IDA7XG4gICAgeCAvPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgfSBlbHNlIHtcbiAgICB4IC89IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICAgIGlmICh4IDwgMTYpIHtcbiAgICAgIHggKj0gMjsgZXhwIC09MTsgfVxuICAgIGlmIChleHAgPT0gMCkge1xuICAgICAgeCAvPSAyOyB9XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLDI0KTtcbiAgdmFyIHIzID0geHwwO1xuICB4ID0gKHggLSByMykgKiBrO1xuICB2YXIgcjIgPSB4fDA7XG4gIHggPSAoeCAtIHIyKSAqIGs7XG4gIHZhciByMSA9IHh8MDtcbiAgcjMgPSAocjMgJjB4ZikgfCBzaWduIHwgZXhwIDw8IDQ7XG4gIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShyMSwgcjIsIHIzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAoeCkge1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KDEpO1xuICBmbG9hdDMyYVswXSA9IHg7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KDEpO1xuICBpbnQzMmFbMF0gPSB4O1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyYS5idWZmZXIpO1xuICByZXR1cm4gZmxvYXQzMmFbMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2xhc3NpZnlfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2xhc3NpZnlfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIGlmIChNYXRoLmFicyh4KSA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCkgcmV0dXJuIDA7XG4gICAgaWYgKHggIT0gMCkgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDI7XG4gIH1cbiAgcmV0dXJuIGlzTmFOKHgpPzQ6Mztcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbW9kZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tb2RmX2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICB2YXIgbmVnID0gKDEveCkgPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IgKHgpO1xuICAgIHZhciBmID0geCAtIGk7XG4gICAgaWYgKG5lZykgeyBpID0gLWk7IGYgPSAtZjsgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKGlzTmFOICh4KSkgcmV0dXJuIFswLCBOYU4sIE5hTl07XG4gIHJldHVybiBbMCwgMS94LCB4XTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbGRleHBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbGRleHBfZmxvYXQgKHgsZXhwKSB7XG4gIGV4cCB8PSAwO1xuICBpZiAoZXhwID4gMTAyMykge1xuICAgIGV4cCAtPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgaWYgKGV4cCA+IDEwMjMpIHsgIC8vIGluIGNhc2UgeCBpcyBzdWJub3JtYWxcbiAgICAgIGV4cCAtPSAxMDIzO1xuICAgICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICB9XG4gIH1cbiAgaWYgKGV4cCA8IC0xMDIzKSB7XG4gICAgZXhwICs9IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7XG4gIH1cbiAgeCAqPSBNYXRoLnBvdygyLCBleHApO1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZnJleHBfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9mcmV4cF9mbG9hdCAoeCkge1xuICBpZiAoKHggPT0gMCkgfHwgIWlzRmluaXRlKHgpKSByZXR1cm4gWzAsIHgsIDBdO1xuICB2YXIgbmVnID0geCA8IDA7XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywganNvb19mbG9vcl9sb2cyKHgpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwtZXhwKTtcbiAgd2hpbGUgKHggPCAwLjUpIHtcbiAgICB4ICo9IDI7XG4gICAgZXhwLS07XG4gIH1cbiAgd2hpbGUgKHggPj0gMSkge1xuICAgIHggKj0gMC41O1xuICAgIGV4cCsrO1xuICB9XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUgKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHJldHVybiAwO1xuICBpZiAoeCA8IHkpIHJldHVybiAtMTtcbiAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgaWYgKHggPT09IHgpIHJldHVybiAxO1xuICBpZiAoeSA9PT0geSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb3B5c2lnbl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3B5c2lnbl9mbG9hdCAoeCwgeSkge1xuICBpZiAoeSA9PSAwKSB5ID0gMSAvIHk7XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgcmV0dXJuICh5IDwgMCk/KC14KTp4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NpZ25iaXRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2lnbmJpdF9mbG9hdCh4KSB7XG4gIGlmICh4ID09IDApIHggPSAxIC8geDtcbiAgcmV0dXJuICh4IDwgMCk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4cG0xX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cG0xX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmV4cG0xKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2V4cDJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLnBvdygyLCB4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxcF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxcF9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzFwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzIoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaHlwb3RfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaHlwb3RfZmxvYXQgKHgsIHkpIHsgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMTBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMTBfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgubG9nMTAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYWNvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYWNvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYWNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXNpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXNpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF90YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXRhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXRhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcm91bmRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfcm91bmRfZmxvYXQgKHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4gKHggLSB5ID49IDAuNSk/KHkgKyAxKTp5XG4gIH0gZWxzZSB7XG4gICAgdmFyIHkgPSBNYXRoLmNlaWwoeCk7XG4gICAgcmV0dXJuICh5IC0geCA+PSAwLjUpPyh5IC0gMSk6eVxuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgaWYoc3ltYikge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBzeW1iLmxlbmd0aDsgaSsrKXtcbiAgICAgIHJbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3ltYltpXVsxXSldID0gc3ltYltpXVsyXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmIChuYW1lX29wdCkge1xuICAgIHZhciBuYW1lID0gbmFtZV9vcHQ7XG4gICAgaWYoZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKSB7XG4gICAgICBuID0gY2FtbF9jYWxsYmFjayhnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MsIFtuYW1lXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4KSB7XG4gICAgICAgIGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4ID0gY2FtbF9idWlsZF9zeW1ib2xzKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scylcbiAgICAgIH1cbiAgICAgIHZhciBuaWQgPSBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeFtuYW1lXVxuICAgICAgaWYobmlkID49IDApXG4gICAgICAgIG4gPSBuaWRcbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9yZWdpc3Rlcl9nbG9iYWw6IGNhbm5vdCBsb2NhdGUgXCIgKyBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHModW5pdCkgeyByZXR1cm4gMCB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBBbiBPQ2FtbCBzdHJpbmcgaXMgYW4gb2JqZWN0IHdpdGggdGhyZWUgZmllbGRzOlxuLy8gLSB0YWcgJ3QnXG4vLyAtIGxlbmd0aCAnbCdcbi8vIC0gY29udGVudHMgJ2MnXG4vL1xuLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgY2FuIGJlIGVpdGhlciBhIEphdmFTY3JpcHQgYXJyYXkgb3Jcbi8vIGEgSmF2YVNjcmlwdCBzdHJpbmcuIFRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgY2FuIGJlIGxlc3MgdGhhbiB0aGVcbi8vIGxlbmd0aCBvZiB0aGUgT0NhbWwgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHJlbWFpbmluZyBieXRlcyBhcmVcbi8vIGFzc3VtZWQgdG8gYmUgemVyb2VzLiBBcnJheXMgYXJlIG11dGFibGUgYnV0IGNvbnN1bWVzIG1vcmUgbWVtb3J5XG4vLyB0aGFuIHN0cmluZ3MuIEEgY29tbW9uIHBhdHRlcm4gaXMgdG8gc3RhcnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgYW5kXG4vLyBwcm9ncmVzc2l2ZWx5IGZpbGwgaXQgZnJvbSB0aGUgc3RhcnQuIFBhcnRpYWwgc3RyaW5ncyBtYWtlcyBpdFxuLy8gcG9zc2libGUgdG8gaW1wbGVtZW50IHRoaXMgZWZmaWNpZW50bHkuXG4vL1xuLy8gV2hlbiBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIFVURi0xNiwgd2Uga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZVxuLy8gc3RyaW5nIGlzIGNvbXBvc2VkIG9ubHkgb2YgQVNDSUkgY2hhcmFjdGVycyAoaW4gd2hpY2ggY2FzZSwgbm9cbi8vIGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkKSBvciBub3QuXG4vL1xuLy8gVGhlIHN0cmluZyB0YWcgY2FuIHRodXMgdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi8vICAgZnVsbCBzdHJpbmcgICAgIEJZVEUgfCBVTktOT1dOOiAgICAgIDBcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBBU0NJSTogICAgICAgIDlcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBOT1RfQVNDSUk6ICAgIDhcbi8vICAgc3RyaW5nIHByZWZpeCAgIFBBUlRJQUw6ICAgICAgICAgICAgIDJcbi8vICAgYXJyYXkgICAgICAgICAgIEFSUkFZOiAgICAgICAgICAgICAgIDRcbi8vXG4vLyBPbmUgY2FuIHVzZSBiaXQgbWFza2luZyB0byBkaXNjcmltaW5hdGUgdGhlc2UgZGlmZmVyZW50IGNhc2VzOlxuLy8gICBrbm93bl9lbmNvZGluZyh4KSA9IHgmOFxuLy8gICBpc19hc2NpaSh4KSA9ICAgICAgIHgmMVxuLy8gICBraW5kKHgpID0gICAgICAgICAgIHgmNlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfc3RyX3JlcGVhdChuLCBzKSB7XG4gIGlmKG4gPT0gMCkgcmV0dXJuIFwiXCI7XG4gIGlmIChzLnJlcGVhdCkge3JldHVybiBzLnJlcGVhdChuKTt9IC8vIEVDTUFzY3JpcHQgNiBhbmQgRmlyZWZveCAyNCtcbiAgdmFyIHIgPSBcIlwiLCBsID0gMDtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKG4gJiAxKSByICs9IHM7XG4gICAgbiA+Pj0gMTtcbiAgICBpZiAobiA9PSAwKSByZXR1cm4gcjtcbiAgICBzICs9IHM7XG4gICAgbCsrO1xuICAgIGlmIChsID09IDkpIHtcbiAgICAgIHMuc2xpY2UoMCwxKTsgLy8gZmxhdHRlbiB0aGUgc3RyaW5nXG4gICAgICAvLyB0aGVuLCB0aGUgZmxhdHRlbmluZyBvZiB0aGUgd2hvbGUgc3RyaW5nIHdpbGwgYmUgZmFzdGVyLFxuICAgICAgLy8gYXMgaXQgd2lsbCBiZSBjb21wb3NlZCBvZiBsYXJnZXIgcGllY2VzXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuLy9XZWFrZGVmXG4vLyBQcmUgRUNNQVNjcmlwdCA1LCBbYXBwbHldIHdvdWxkIG5vdCBzdXBwb3J0IGFycmF5LWxpa2Ugb2JqZWN0LlxuLy8gSW4gc3VjaCBzZXR1cCwgVHlwZWRfYXJyYXkgd291bGQgYmUgaW1wbGVtZW50ZWQgYXMgcG9seWZpbGwsIGFuZCBbZi5hcHBseV0gd291bGRcbi8vIGZhaWwgaGVyZS4gTWFyayB0aGUgcHJpbWl0aXZlIGFzIFdlYWtkZWYsIHNvIHRoYXQgcGVvcGxlIGNhbiBvdmVycmlkZSBpdCBlYXNpbHkuXG5mdW5jdGlvbiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09IGEubGVuZ3RoKSByZXR1cm4gZi5hcHBseSAobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCxsZW4tPTEwMjQpXG4gICAgcyArPSBmLmFwcGx5IChudWxsLCBhLnNsaWNlKGksaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmOF9vZl91dGYxNlxuZnVuY3Rpb24gY2FtbF91dGY4X29mX3V0ZjE2KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBiLCBjLCBkLCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYyA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYyA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhjMCB8IChjID4+IDYpKTtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjIDwgMHhkODAwIHx8IGMgPj0gMHhkZmZmKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlMCB8IChjID4+IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA+PSAweGRiZmYgfHwgaSArIDEgPT0gbCB8fFxuICAgICAgICAgICAgICAgKGQgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBkID4gMHhkZmZmKSB7XG4gICAgICAvLyBVbm1hdGNoZWQgc3Vycm9nYXRlIHBhaXIsIHJlcGxhY2VkIGJ5IFxcdWZmZmQgKHJlcGxhY2VtZW50IGNoYXJhY3RlcilcbiAgICAgIHQgKz0gXCJcXHhlZlxceGJmXFx4YmRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgaSsrO1xuICAgICAgYyA9IChjIDw8IDEwKSArIGQgLSAweDM1ZmRjMDA7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmMCB8IChjID4+IDE4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDEyKSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfVxuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBjYW1sX3V0ZjE2X29mX3V0Zjgocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IFwiXCIsIGMsIGMxLCBjMiwgdiwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjMSA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYzEgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgdiA9IDE7XG4gICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgIGMgPSBjMiArIChjMSA8PCA2KTtcbiAgICAgIGlmIChjMSA8IDB4ZTApIHtcbiAgICAgICAgdiA9IGMgLSAweDMwODA7XG4gICAgICAgIGlmICh2IDwgMHg4MCkgdiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ID0gMjtcbiAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgICAgICBjID0gYzIgKyAoYyA8PCA2KTtcbiAgICAgICAgICBpZiAoYzEgPCAweGYwKSB7XG4gICAgICAgICAgICB2ID0gYyAtIDB4ZTIwODA7XG4gICAgICAgICAgICBpZiAoKHYgPCAweDgwMCkgfHwgKCh2ID49IDB4ZDdmZikgJiYgKHYgPCAweGUwMDApKSkgdiA9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHYgPSAzO1xuICAgICAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkgJiZcbiAgICAgICAgICAgICAgICAoYzEgPCAweGY1KSkge1xuICAgICAgICAgICAgICB2ID0gYzIgLSAweDNjODIwODAgKyAoYyA8PCA2KTtcbiAgICAgICAgICAgICAgaWYgKHYgPCAweDEwMDAwIHx8IHYgPiAweDEwZmZmZikgdiA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2IDwgNCkgeyAvLyBJbnZhbGlkIHNlcXVlbmNlXG4gICAgICBpIC09IHY7XG4gICAgICB0ICs9IFwiXFx1ZmZmZFwiO1xuICAgIH0gZWxzZSBpZiAodiA+IDB4ZmZmZilcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ3YzAgKyAodiA+PiAxMCksIDB4ZGMwMCArICh2ICYgMHgzRkYpKVxuICAgIGVsc2VcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh2KTtcbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkgKHMpIHtcbiAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBnZXRzIGJldHRlciBhdCBhcm91bmQgdGhpcyBwb2ludCBmb3IgYWxsIGJyb3dzZXJzXG4gIGlmIChzLmxlbmd0aCA8IDI0KSB7XG4gICAgLy8gU3BpZGVybW9ua2V5IGdldHMgbXVjaCBzbG93ZXIgd2hlbiBzLmxlbmd0aCA+PSAyNCAob24gNjQgYml0IGFyY2hzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgaWYgKHMuY2hhckNvZGVBdChpKSA+IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2VcbiAgICByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSkge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgcmV0dXJuIHMuY1tpXVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgLy8gVGhlIE9DYW1sIGNvbXBpbGVyIHVzZXMgQ2hhci51bnNhZmVfY2hyIG9uIGludGVnZXJzIGxhcmdlciB0aGFuIDI1NSFcbiAgYyAmPSAweGZmO1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIHtcbiAgICBpZiAoaSA9PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICBpZiAoaSArIDEgPT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAzKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjIgPSAweEZGICYgaTE2ID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMTY7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDE2XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQxNlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhGRiAmIGkzMiA+PiAyNCxcbiAgICAgIGIzID0gMHhGRiAmIGkzMiA+PiAxNixcbiAgICAgIGIyID0gMHhGRiAmIGkzMiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAzLCBiNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MzJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKykge1xuICAgIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDY0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyAocykge1xuICB2YXIgdGFnID0gOSAvKiBCWVRFUyB8IEFTQ0lJICovO1xuICBpZiAoIWpzb29faXNfYXNjaWkocykpXG4gICAgdGFnID0gOCAvKiBCWVRFUyB8IE5PVF9BU0NJSSAqLywgcyA9IGNhbWxfdXRmOF9vZl91dGYxNihzKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRhZywgcywgcy5sZW5ndGgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sQnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gTWxCeXRlcyAodGFnLCBjb250ZW50cywgbGVuZ3RoKSB7XG4gIHRoaXMudD10YWc7IHRoaXMuYz1jb250ZW50czsgdGhpcy5sPWxlbmd0aDtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcbiAgc3dpdGNoICh0aGlzLnQpIHtcbiAgY2FzZSA5OiAvKkJZVEVTIHwgQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyh0aGlzKTtcbiAgY2FzZSAwOiAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB7XG4gICAgICB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgcmV0dXJuIHRoaXMuYztcbiAgICB9XG4gICAgdGhpcy50ID0gODsgLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gIGNhc2UgODogLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgfVxufTtcbk1sQnl0ZXMucHJvdG90eXBlLnRvVXRmMTYgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIHIgPSB0aGlzLnRvU3RyaW5nKCk7XG4gIGlmKHRoaXMudCA9PSA5KSByZXR1cm4gclxuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHIpO1xufVxuTWxCeXRlcy5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIGNvbnRlbnQgPSB0aGlzLnQgPT0gNCA/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkocy5sKTtcbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICBpZighIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICBhID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKDQsYSxhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfY29tcGFyZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPy0xOihzMS5jID4gczIuYyk/MTowO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jID09IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX3N0cmluZ19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9ieXRlc19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPD0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMixzMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczIsczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT0gMCAmJiAobCA+PSBzLmwgfHwgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbCA+PSBzLmMubGVuZ3RoKSkpIHtcbiAgICAgIGlmIChjID09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0IChsLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgICAgICAgcy50ID0gKGwgPT0gcy5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JsaXRfYnl0ZXMoczEsIGkxLCBzMiwgaTIsIGxlbikge1xuICBpZiAobGVuID09IDApIHJldHVybiAwO1xuICBpZiAoKGkyID09IDApICYmXG4gICAgICAobGVuID49IHMyLmwgfHwgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpKSB7XG4gICAgczIuYyA9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2UgaWYgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09IHMyLmMubGVuZ3RoKSB7XG4gICAgczIuYyArPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIHtcbiAgICBpZiAoczIudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsIGMyID0gczIuYztcbiAgICBpZiAoczEudCA9PSA0IC8qIEFSUkFZICovKSB7XG4gICAgICBpZiAoaTIgPD0gaTEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGwgPSBNYXRoLm1pbiAobGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzIgW2kyICsgaV0gPSBjMS5jaGFyQ29kZUF0KGkxICsgaSk7XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2JsaXRfc3RyaW5nKGEsYixjLGQsZSkge1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcoYSksYixjLGQsZSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKSB7IHJldHVybiBzLmwgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29uY2F0KGEsYikgeyByZXR1cm4gYSArIGIgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIE1sQnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChzMSxzMil7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhzMS50LHMxLmMrczIuYyxzMS5sK3MyLmwpXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IEludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IEludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQ7XG4gIGlmICAgICAgKHRhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSBraW5kID0gNTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHZhciB0YSA9XG4gICAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgICAgdGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSA/XG4gICAgICBuZXcgSW50MzJBcnJheSh0YS5idWZmZXIgLHRhLmJ5dGVPZmZzZXQsIHRhLmxlbmd0aCkgOiB0YTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgaWYoZ2xvYmFsVGhpcy5xdWl0KSBnbG9iYWxUaGlzLnF1aXQoY29kZSk7XG4gIC8vbm9kZWpzXG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdClcbiAgICBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdChjb2RlKTtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiRnVuY3Rpb24gJ2V4aXQnIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG4pe1xuICBzd2l0Y2goZXhuWzJdKSB7XG4gIGNhc2UgLTg6IC8vIE1hdGNoX2ZhaWx1cmVcbiAgY2FzZSAtMTE6IC8vIEFzc2VydF9mYWlsdXJlXG4gIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgIHJldHVybiAxO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bil7XG4gIHZhciByID0gXCJcIjtcbiAgaWYoZXhuWzBdID09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZihleG4ubGVuZ3RoID09IDMgJiYgZXhuWzJdWzBdID09IDAgJiYgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG5bMV0pKSB7XG5cbiAgICAgIHZhciBidWNrZXQgPSBleG5bMl07XG4gICAgICB2YXIgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhcnQgPSAyXG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvcih2YXIgaSA9IHN0YXJ0OyBpIDwgYnVja2V0Lmxlbmd0aDsgaSArKyl7XG4gICAgICBpZihpID4gc3RhcnQpIHIrPVwiLCBcIjtcbiAgICAgIHZhciB2ID0gYnVja2V0W2ldXG4gICAgICBpZih0eXBlb2YgdiA9PSBcIm51bWJlclwiKVxuICAgICAgICByKz0gdi50b1N0cmluZygpO1xuICAgICAgZWxzZSBpZih2IGluc3RhbmNlb2YgTWxCeXRlcyl7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYodHlwZW9mIHYgPT0gXCJzdHJpbmdcIil7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgciArPSBcIl9cIjtcbiAgICB9XG4gICAgciArPSBcIilcIlxuICB9IGVsc2UgaWYgKGV4blswXSA9PSAyNDgpe1xuICAgIHIgKz0gZXhuWzFdXG4gIH1cbiAgcmV0dXJuIHJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKXtcbiAgaWYoZXJyIGluc3RhbmNlb2YgQXJyYXkgJiYgKGVyclswXSA9PSAwIHx8IGVyclswXSA9PSAyNDgpKSB7XG4gICAgdmFyIGhhbmRsZXIgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiKTtcbiAgICBpZihoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsZmFsc2VdKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIGNhbWxfY2FsbGJhY2soYXRfZXhpdCwgWzBdKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnKTtcbiAgICAgIGlmKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9zdGF0aWNfZW52XG5mdW5jdGlvbiBjYW1sX3NldF9zdGF0aWNfZW52KGssdil7XG4gIGlmKCFnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudilcbiAgICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudiA9IHt9XG4gIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W2tdID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fc3lzX2dldGVudiAoY29uc3QpXG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5lbnZcbiAgICAgJiYgcHJvY2Vzcy5lbnZbbl0gIT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBwcm9jZXNzLmVudltuXTtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZcbiAgICAgJiYgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl0pXG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKSk7XG4gIGlmKHIgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdXG5cbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmFyZ3ZcbiAgICAgJiYgcHJvY2Vzcy5hcmd2Lmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgYXJndiA9IHByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIil7XG4gICAgdmFyIGNoaWxkX3Byb2Nlc3MgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyk7XG4gICAgaWYoY2hpbGRfcHJvY2VzcyAmJiBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTtcbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpICogMC4wMDE7XG5mdW5jdGlvbiBjYW1sX3N5c190aW1lICgpIHtcbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHJldHVybiBub3cgKiAwLjAwMSAtIGNhbWxfaW5pdGlhbF90aW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW5cbi8vUmVxdWlyZXM6IGNhbWxfc3lzX3RpbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbihiKSB7XG4gIHJldHVybiBjYW1sX3N5c190aW1lKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JhbmRvbV9zZWVkIG11dGFibGVcbi8vVGhlIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBhbiBhcnJheSBzaW5jZSBPQ2FtbCA0LjAuLi5cbmZ1bmN0aW9uIGNhbWxfc3lzX3JhbmRvbV9zZWVkICgpIHtcbiAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgICB2YXIgYSA9IGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSg0KSk7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgIHZhciBhID0gbmV3IEludDMyQXJyYXkoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLmJ1ZmZlcik7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfVxuICB9XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICB2YXIgeCA9IG5vd14weGZmZmZmZmZmKk1hdGgucmFuZG9tKCk7XG4gIHJldHVybiBbMCx4XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2ludF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIGNvbnN0XG4vLyBtYXhfaW50IC8gNCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgb3ZlcmZsb3dcbi8vbGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxOztcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgKCkgeyByZXR1cm4gKDB4N0ZGRkZGRkYvNCkgfCAwO31cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4ICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJVbml4XCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIldpbjMyXCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiAoKSB7IHJldHVybiBvc190eXBlID09IFwiQ3lnd2luXCIgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImpzX29mX29jYW1sXCIpXTtcbn1cblxuLy9Qcm92aWRlczogb3NfdHlwZVxudmFyIG9zX3R5cGUgPSAoZ2xvYmFsVGhpcy5wcm9jZXNzICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PSBcIndpbjMyXCIpID8gXCJDeWd3aW5cIiA6IFwiVW5peFwiO1xuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9jb25maWcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9jb25maWcgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKXtyZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeGRnX2RlZmF1bHRzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF94ZGdfZGVmYXVsdHMoX3VuaXQpIHtcbiAgcmV0dXJuIDA7IC8vIGVtcHR5IGxpc3Rcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmlzRmlsZShyb290LnJlc3QpO1xufVxuLy9BbHdheXNcbi8vUmVxdWlyZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYocHJvY2VzcyAmJiBwcm9jZXNzLm9uKSB7XG4gICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBmdW5jdGlvbiAoZXJyLCBvcmlnaW4pIHtcbiAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycik7XG4gICAgICBwcm9jZXNzLmV4aXQgKDIpO1xuICAgIH0pXG4gIH1cbiAgZWxzZSBpZihnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpe1xuICAgIGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbihldmVudCl7XG4gICAgICBpZihldmVudC5lcnJvcil7XG4gICAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGV2ZW50LmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpO1xuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxudmFyIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKVxuICBpZihyICE9PSB1bmRlZmluZWQpe1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspe1xuICAgICAgaWYobFtpXSA9PSBcImJcIikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IDE7IGJyZWFrIH1cbiAgICAgIGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gKyhsW2ldLnNsaWNlKDIpKX1cbiAgICAgIGVsc2UgY29udGludWU7XG4gICAgfVxuICB9XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIChfdW5pdCkgeyByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKGIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBiOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbnZhciBjYW1sX3N0YWNrX2RlcHRoID0gMDtcblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2NoZWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGhcbmZ1bmN0aW9uIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKSB7XG4gICAgcmV0dXJuIC0tY2FtbF9zdGFja19kZXB0aCA+IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6ICFlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFjaywgY2FtbF93cmFwX2V4Y2VwdGlvbiwgY2FtbF9yZXN1bWVfc3RhY2ssIGNhbWxfZnJlc2hfb29faWQsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnRcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZixhcmdzKSB7XG4gIGZ1bmN0aW9uIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyKGVmZixrLG1zKSB7XG4gICAgLy8gUmVzdW1lcyB0aGUgY29udGludWF0aW9uIGsgYnkgcmFpc2luZyBleGNlcHRpb24gVW5oYW5kbGVkLlxuICAgIGNhbWxfcmVzdW1lX3N0YWNrKGtbMV0sbXMpO1xuICAgIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgICBpZihleG4pIGNhbWxfcmFpc2Vfd2l0aF9hcmcoZXhuLCBlZmYpO1xuICAgIGVsc2Uge1xuICAgICAgZXhuID0gWzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRWZmZWN0LlVuaGFuZGxlZFwiKSwgY2FtbF9mcmVzaF9vb19pZCgwKV07XG4gICAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGV4bik7XG4gICAgfVxuICB9XG4gIHZhciBzYXZlZF9zdGFja19kZXB0aCA9IGNhbWxfc3RhY2tfZGVwdGg7XG4gIHZhciBzYXZlZF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFjaztcbiAgdmFyIHNhdmVkX2ZpYmVyX3N0YWNrID0gY2FtbF9maWJlcl9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2V4bl9zdGFjayA9IDA7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpbMCwgMCwgMCwgdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXJdLCByOntrOjAsIHg6MCwgZTowfX07XG4gICAgdmFyIHJlcyA9IHtqb29fdHJhbXA6IGYsXG4gICAgICAgICAgICAgICBqb29fYXJnczogYXJncy5jb25jYXQoZnVuY3Rpb24gKHgpe3JldHVybiB4O30pfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfZXhuX3N0YWNrKSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICAgICAgICBjYW1sX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrWzJdO1xuICAgICAgICByZXMgPSB7am9vX3RyYW1wOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IFtjYW1sX3dyYXBfZXhjZXB0aW9uKGUpXX07XG4gICAgICB9XG4gICAgfSB3aGlsZShyZXMgJiYgcmVzLmpvb19hcmdzKVxuICB9IGZpbmFsbHkge1xuICAgIGNhbWxfc3RhY2tfZGVwdGggPSBzYXZlZF9zdGFja19kZXB0aDtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHNhdmVkX2V4bl9zdGFjaztcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID0gc2F2ZWRfZmliZXJfc3RhY2s7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJ1c2UtanMtc3RyaW5nXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJlZmZlY3RzXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd3JhcF9leGNlcHRpb24gY29uc3QgKG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfd3JhcF9leGNlcHRpb24oZSkge1xuICBpZiAoRkxBRyhcImV4Y3dyYXBcIikpIHtcbiAgICBpZihlIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZihnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgICBleG4gPSBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgICBlbHNlXG4gICAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICAgIGV4biA9IFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG4gICAgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVycm9yIGF0IGhhbmQsIGxldCdzIHVzZSBpdC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IpXG4gICAgICBleG4uanNfZXJyb3IgPSBlO1xuICAgIHJldHVybiBleG47XG4gIH0gZWxzZVxuICAgIHJldHVybiBlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgaWYoY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcpXG4gICAgcmV0dXJuIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpO1xuICBlbHNlIHJldHVybiBleG5cbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZighZXhuLmpzX2Vycm9yIHx8IGZvcmNlIHx8IGV4blswXSA9PSAyNDgpIGV4bi5qc19lcnJvciA9IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiSnMgZXhjZXB0aW9uIGNvbnRhaW5pbmcgYmFja3RyYWNlXCIpO1xuICByZXR1cm4gZXhuO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIFswLCBleG4uanNfZXJyb3JdOyB9XG4gIHJldHVybiAwO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Jvb2woeCkgeyByZXR1cm4gISF4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHsgcmV0dXJuICt4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fZmxvYXQgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc19mcm9tX2ludDMyXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkgeyByZXR1cm4geHwwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGJbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGxlbjtpKyspIGJbaSsxXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdmFyKHgpIHtcbiAgdmFyIHggPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh4KTtcbiAgLy9DaGVja3MgdGhhdCB4IGhhcyB0aGUgZm9ybSBpZGVudFsuaWRlbnRdKlxuICBpZigheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSl7XG4gICAgY29uc29sZS5lcnJvcihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gW3VuZGVmaW5lZF07XG4gICAgfVxuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZik7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLFt0aGlzLGFyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSArIDEpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSAtIDE7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgcmV0dXJuIChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIC8vIEZ1bmN0aW9ucyBoYXZlIGFuIGFkZGl0aW9uYWwgY29udGludWF0aW9uIHBhcmFtZXRlci4gVGhpcyBzaG91bGRcbiAgLy8gbm90IGJlIHZpc2libGUgd2hlbiBjYWxsaW5nIHRoZW0gZnJvbSBKYXZhU2NyaXB0XG4gIHJldHVybiAoKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKSkgLSAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zdHJpY3RfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfc3RyaWN0X2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX3B1cmVfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QgKGEpIHtcbiAgdmFyIG8gPSB7fTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBhW2ldO1xuICAgIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocFsxXSldID0gcFsyXTtcbiAgfVxuICByZXR1cm4gbztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfY29uc3RhbnRzXG52YXIgY2FtbF9tYXJzaGFsX2NvbnN0YW50cyA9IHtcbiAgUFJFRklYX1NNQUxMX0JMT0NLOiAgICAgICAgIDB4ODAsXG4gIFBSRUZJWF9TTUFMTF9JTlQ6ICAgICAgICAgICAweDQwLFxuICBQUkVGSVhfU01BTExfU1RSSU5HOiAgICAgICAgMHgyMCxcbiAgQ09ERV9JTlQ4OiAgICAgICAgICAgICAgICAgIDB4MDAsXG4gIENPREVfSU5UMTY6ICAgICAgICAgICAgICAgICAweDAxLFxuICBDT0RFX0lOVDMyOiAgICAgICAgICAgICAgICAgMHgwMixcbiAgQ09ERV9JTlQ2NDogICAgICAgICAgICAgICAgIDB4MDMsXG4gIENPREVfU0hBUkVEODogICAgICAgICAgICAgICAweDA0LFxuICBDT0RFX1NIQVJFRDE2OiAgICAgICAgICAgICAgMHgwNSxcbiAgQ09ERV9TSEFSRUQzMjogICAgICAgICAgICAgIDB4MDYsXG4gIENPREVfQkxPQ0szMjogICAgICAgICAgICAgICAweDA4LFxuICBDT0RFX0JMT0NLNjQ6ICAgICAgICAgICAgICAgMHgxMyxcbiAgQ09ERV9TVFJJTkc4OiAgICAgICAgICAgICAgIDB4MDksXG4gIENPREVfU1RSSU5HMzI6ICAgICAgICAgICAgICAweDBBLFxuICBDT0RFX0RPVUJMRV9CSUc6ICAgICAgICAgICAgMHgwQixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAgICAgICAgIDB4MEMsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9CSUc6ICAgICAweDBELFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAgMHgwRSxcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6ICAgIDB4MEYsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOiAweDA3LFxuICBDT0RFX0NPREVQT0lOVEVSOiAgICAgICAgICAgMHgxMCxcbiAgQ09ERV9JTkZJWFBPSU5URVI6ICAgICAgICAgIDB4MTEsXG4gIENPREVfQ1VTVE9NOiAgICAgICAgICAgICAgICAweDEyLFxuICBDT0RFX0NVU1RPTV9MRU46ICAgICAgICAgICAgMHgxOCxcbiAgQ09ERV9DVVNUT01fRklYRUQ6ICAgICAgICAgIDB4MTlcbn1cblxuXG4vL1Byb3ZpZGVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gVUludDhBcnJheVJlYWRlciAocywgaSkgeyB0aGlzLnMgPSBzOyB0aGlzLmkgPSBpOyB9XG5VSW50OEFycmF5UmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK107IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgOCkgfCBzW2kgKyAxXVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQgPj4gMTYpIHwgc1tpICsgMV07XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSh0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIE1sU3RyaW5nUmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7IHRoaXMuaSA9IGk7IH1cbk1sU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0ID4+IDE2KSB8IHMuY2hhckNvZGVBdChpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnMuc3Vic3RyaW5nKGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB2YXIgcyA9IHRoaXMucztcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGJbal0gPSBzLmNoYXJDb2RlQXQoaSArIGopO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IEJpZ1N0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIEJpZ1N0cmluZ1JlYWRlciAoYnMsIGkpIHsgdGhpcy5zID0gYnM7IHRoaXMuaSA9IGk7IH1cbkJpZ1N0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDgpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCAyNCA+PiAxNikgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKSAgICAgICAgICkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBhcnIgPSBuZXcgQXJyYXkobGVuKVxuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKyl7XG4gICAgICBhcnJbal0gPSBjYW1sX2JhX2dldF8xKHRoaXMucywgaStqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldChpKTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIH1cbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9ieXRlcyAoYSkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIChjYW1sX2ludDY0X29mX2J5dGVzIChhKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXJcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAocywgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSwgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzICh0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X21hcnNoYWwod3JpdGVyLCB2LCBzaXplcykge1xuICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgd3JpdGVyLndyaXRlICg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4OyBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzaXplWzBdID0gNDtcbiAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzd2l0Y2ggKHJlYWRlci5yZWFkOHUgKCkpIHtcbiAgY2FzZSAxOlxuICAgIHNpemVbMF0gPSA0O1xuICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgY2FzZSAyOlxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICBkZWZhdWx0OiBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbmF0aXZlIGludGVnZXJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3VubWFyc2hhbCwgY2FtbF9pbnQ2NF9tYXJzaGFsLCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9pbnQzMl91bm1hcnNoYWwsIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXJpYWxpemUsIGNhbWxfYmFfZGVzZXJpYWxpemUsIGNhbWxfYmFfY29tcGFyZSwgY2FtbF9iYV9oYXNoXG52YXIgY2FtbF9jdXN0b21fb3BzID1cbiAgICB7XCJfalwiOiB7XG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgICAgc2VyaWFsaXplICA6IGNhbWxfaW50NjRfbWFyc2hhbCxcbiAgICAgIGZpeGVkX2xlbmd0aCA6IDgsXG4gICAgICBjb21wYXJlIDogY2FtbF9pbnQ2NF9jb21wYXJlLFxuICAgICAgaGFzaCA6IGNhbWxfaW50NjRfaGFzaFxuICAgIH0sXG4gICAgIFwiX2lcIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQzMl91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfblwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyYXlcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycmF5XCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycjAyXCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnIwMlwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9XG4gICAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKSB7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuICB2YXIgbWFnaWMgPSByZWFkZXIucmVhZDMydSAoKVxuICBzd2l0Y2gobWFnaWMpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHJlYWRlci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiKTtcbiAgICBicmVha1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrO1xuICB9XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgaW50ZXJuX29ial90YWJsZSA9IChudW1fb2JqZWN0cyA+IDApP1tdOm51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMgKHJlYWRlcikge1xuICAgIHZhciBjb2RlID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICBpZiAoY29kZSA+PSAweDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLykge1xuICAgICAgaWYgKGNvZGUgPj0gMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLykge1xuICAgICAgICB2YXIgdGFnID0gY29kZSAmIDB4RjtcbiAgICAgICAgdmFyIHNpemUgPSAoY29kZSA+PiA0KSAmIDB4NztcbiAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIChjb2RlICYgMHgzRik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2RlID49IDB4MjAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HICovKSB7XG4gICAgICAgIHZhciBsZW4gPSBjb2RlICYgMHgxRjtcbiAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaChjb2RlKSB7XG4gICAgICAgIGNhc2UgMHgwMDogLy9jc3QuQ09ERV9JTlQ4OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzICgpO1xuICAgICAgICBjYXNlIDB4MDE6IC8vY3N0LkNPREVfSU5UMTY6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzICgpO1xuICAgICAgICBjYXNlIDB4MDI6IC8vY3N0LkNPREVfSU5UMzI6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICAgICAgICBjYXNlIDB4MDM6IC8vY3N0LkNPREVfSU5UNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA0OiAvL2NzdC5DT0RFX1NIQVJFRDg6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDU6IC8vY3N0LkNPREVfU0hBUkVEMTY6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA2OiAvL2NzdC5DT0RFX1NIQVJFRDMyOlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwODogLy9jc3QuQ09ERV9CTE9DSzMyOlxuICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICB2YXIgdGFnID0gaGVhZGVyICYgMHhGRjtcbiAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBkYXRhIGJsb2NrIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA5OiAvL2NzdC5DT0RFX1NUUklORzg6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBBOiAvL2NzdC5DT0RFX1NUUklORzMyOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEM6IC8vY3N0LkNPREVfRE9VQkxFX0xJVFRMRTpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0WzcgLSBpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQjogLy9jc3QuQ09ERV9ET1VCTEVfQklHOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRDogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRjogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMDogLy9jc3QuQ09ERV9DT0RFUE9JTlRFUjpcbiAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBjb2RlIHBvaW50ZXJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgxMjogLy9jc3QuQ09ERV9DVVNUT006XG4gICAgICAgIGNhc2UgMHgxODogLy9jc3QuQ09ERV9DVVNUT01fTEVOOlxuICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgIHZhciBjLCBzID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoKGMgPSByZWFkZXIucmVhZDh1ICgpKSAhPSAwKSBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbc107XG4gICAgICAgICAgdmFyIGV4cGVjdGVkX3NpemU7XG4gICAgICAgICAgaWYoIW9wcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICBzd2l0Y2goY29kZSl7XG4gICAgICAgICAgY2FzZSAweDEyOiAvLyBjc3QuQ09ERV9DVVNUT00gKGRlcHJlY2F0ZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vIGNzdC5DT0RFX0NVU1RPTV9GSVhFRFxuICAgICAgICAgICAgaWYoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZXhwZWN0ZWQgYSBmaXhlZC1zaXplIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE4OiAvLyBjc3QuQ09ERV9DVVNUT01fTEVOXG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTsgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHJlYWRlci5pO1xuICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgIHZhciB2ID0gb3BzLmRlc2VyaWFsaXplKHJlYWRlciwgc2l6ZSk7XG4gICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSBzaXplWzBdKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG1lc3NhZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYoY29tcHJlc3NlZCkge1xuICAgIGlmKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIHZhciBzaXplID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgZCA9IHYubGVuZ3RoO1xuICAgIGlmIChkIDwgc2l6ZSkgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICB2W2RdID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgfVxuICBpZiAodHlwZW9mIG9mcyE9XCJudW1iZXJcIikgb2ZzWzBdID0gcmVhZGVyLmk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMjBcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMTZcblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKHMsIG9mcykge1xuICB2YXIgciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyksIG9mcyk7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoKHIucmVhZDMydSgpKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByLnJlYWQzMnUoKTtcbiAgICBicmVhaztcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGhlYWRlcl9sZW4gLSBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgKyBkYXRhX2xlbjtcbn1cblxuLy9Qcm92aWRlczogTWxPYmplY3RUYWJsZVxudmFyIE1sT2JqZWN0VGFibGU7XG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUuc3RvcmUgPSBmdW5jdGlvbih2KSB7XG4gIHRoaXMubG9va3VwLnNldCh2LCB0aGlzLm9ianMubGVuZ3RoKTtcbiAgdGhpcy5vYmpzLnB1c2godik7XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnJlY2FsbCA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIGkgPSB0aGlzLmxvb2t1cC5nZXQodik7XG4gIHJldHVybiAoaSA9PT0gdW5kZWZpbmVkKVxuICAgID8gdW5kZWZpbmVkIDogdGhpcy5vYmpzLmxlbmd0aCAtIGk7ICAgLyogaW5kZXggaXMgcmVsYXRpdmUgKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IE1sT2JqZWN0VGFibGUsIGNhbWxfbGlzdF90b19qc19hcnJheSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9pc19jb250aW51YXRpb25fdGFnXG52YXIgY2FtbF9vdXRwdXRfdmFsID0gZnVuY3Rpb24gKCl7XG4gIGZ1bmN0aW9uIFdyaXRlciAoKSB7IHRoaXMuY2h1bmsgPSBbXTsgfVxuICBXcml0ZXIucHJvdG90eXBlID0ge1xuICAgIGNodW5rX2lkeDoyMCwgYmxvY2tfbGVuOjAsIG9ial9jb3VudGVyOjAsIHNpemVfMzI6MCwgc2l6ZV82NDowLFxuICAgIHdyaXRlOmZ1bmN0aW9uIChzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfYXQ6ZnVuY3Rpb24gKHBvcywgc2l6ZSwgdmFsdWUpIHtcbiAgICAgIHZhciBwb3MgPSBwb3M7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1twb3MrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfY29kZTpmdW5jdGlvbiAoc2l6ZSwgY29kZSwgdmFsdWUpIHtcbiAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfc2hhcmVkOmZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAoMSA8PCA4KSkgdGhpcy53cml0ZV9jb2RlKDgsIDB4MDQgLypjc3QuQ09ERV9TSEFSRUQ4Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIGlmIChvZmZzZXQgPCAoMSA8PCAxNikpIHRoaXMud3JpdGVfY29kZSgxNiwgMHgwNSAvKmNzdC5DT0RFX1NIQVJFRDE2Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIHRoaXMud3JpdGVfY29kZSgzMiwgMHgwNiAvKmNzdC5DT0RFX1NIQVJFRDMyKi8sIG9mZnNldCk7XG4gICAgfSxcbiAgICBwb3M6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5jaHVua19pZHggfSxcbiAgICBmaW5hbGl6ZTpmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlICgzMiwgMHg4NDk1QTZCRSk7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5ibG9ja19sZW4pO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV8zMik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzY0KTtcbiAgICAgIHJldHVybiB0aGlzLmNodW5rO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHYsIGZsYWdzKSB7XG4gICAgZmxhZ3MgPSBjYW1sX2xpc3RfdG9fanNfYXJyYXkoZmxhZ3MpO1xuXG4gICAgdmFyIG5vX3NoYXJpbmcgPSAoZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSksXG4gICAgICAgIGNsb3N1cmVzID0gIChmbGFncy5pbmRleE9mKDEgLypNYXJzaGFsLkNsb3N1cmVzKi8pICE9PSAtMSk7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoXCIrdHlwZV9vZl92K1wiKVwiKTtcbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLlxuICAgICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBDIC8qY3N0LkNPREVfRE9VQkxFX0xJVFRMRSovKTtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFs3IC0gaV0pfVxuICAgICAgICAgIHdyaXRlci5zaXplXzMyICs9IDNcbiAgICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAyXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQ2NFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjQgPSBjYW1sX2hhc2hfbWl4X2ludDY0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQgPSBjYW1sX2hhc2hfbWl4X2ludDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0ID0gY2FtbF9oYXNoX21peF9mbG9hdDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nID0gY2FtbF9oYXNoX21peF9zdHJpbmc7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbFxuZnVuY3Rpb24gQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUoc2VlZCkge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoc2VlZCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ210aW1lXG4vL0FsaWFzOiB1bml4X2dtdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9ta3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gY2FtbF91bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuICAgIHJldHVybiB0dHkuaXNhdHR5KGZpbGVEZXNjcmlwdG9yKT8xOjA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLCBcIkVBQ0NFU1wiLCBcIkVBR0FJTlwiLCBcIkVCQURGXCIsIFwiRUJVU1lcIiwgXCJFQ0hJTERcIiwgXCJFREVBRExLXCIsIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLCBcIkVGQVVMVFwiLCBcIkVGQklHXCIsIFwiRUlOVFJcIiwgXCJFSU5WQUxcIiwgXCJFSU9cIiwgXCJFSVNESVJcIiwgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIiwgXCJFTkFNRVRPT0xPTkdcIiwgXCJFTkZJTEVcIiwgXCJFTk9ERVZcIiwgXCJFTk9FTlRcIiwgXCJFTk9FWEVDXCIsIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsIFwiRU5PU1BDXCIsIFwiRU5PU1lTXCIsIFwiRU5PVERJUlwiLCBcIkVOT1RFTVBUWVwiLCBcIkVOT1RUWVwiLCBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIiwgXCJFUElQRVwiLCBcIkVSQU5HRVwiLCBcIkVST0ZTXCIsIFwiRVNQSVBFXCIsIFwiRVNSQ0hcIiwgXCJFWERFVlwiLCBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIiwgXCJFQUxSRUFEWVwiLCBcIkVOT1RTT0NLXCIsIFwiRURFU1RBRERSUkVRXCIsIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsIFwiRU5PUFJPVE9PUFRcIiwgXCJFUFJPVE9OT1NVUFBPUlRcIiwgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsIFwiRVBGTk9TVVBQT1JUXCIsIFwiRUFGTk9TVVBQT1JUXCIsIFwiRUFERFJJTlVTRVwiLCBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLCBcIkVORVRVTlJFQUNIXCIsIFwiRU5FVFJFU0VUXCIsIFwiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRVNFVFwiLCBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsIFwiRU5PVENPTk5cIiwgXCJFU0hVVERPV05cIiwgXCJFVE9PTUFOWVJFRlNcIiwgXCJFVElNRURPVVRcIiwgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIiwgXCJFSE9TVFVOUkVBQ0hcIiwgXCJFTE9PUFwiLCBcIkVPVkVSRkxPV1wiXG5dO1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5XG4gICAgfVxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIHZhcmlhbnRzLCBmYWxsYmFjayB0byBFVU5LTk9XTkVSUihpbnQpXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIGVycm5vKTtcbiAgfVxuICB2YXIgYXJncyA9IFtcbiAgICB2YXJpYW50LFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHN5c2NhbGwgfHwgXCJcIiksXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aCB8fCBcIlwiKVxuICBdO1xuICByZXR1cm4gYXJncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X3N0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9zdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbHN0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X2xzdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmsodG9fZGlyLCBzcmNfcm9vdC5yZXN0LCBkc3Rfcm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JlYWRsaW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9yZWFkbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5yZWFkbGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3VubGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dWlkKHVuaXQpIHtcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQpe1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKCk7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9oYXNfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X2hhc19zeW1saW5rKHVuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCk/MTowXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9vcGVuZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UocGF0aCk7XG4gIGlmICghcm9vdC5kZXZpY2Uub3BlbmRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfb3BlbmRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHZhciBkaXJfaGFuZGxlID0gcm9vdC5kZXZpY2Uub3BlbmRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiB7IHBvaW50ZXIgOiBkaXJfaGFuZGxlLCBwYXRoOiBwYXRoIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgICAgZW50cnkgPSBkaXJfaGFuZGxlLnBvaW50ZXIucmVhZFN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwicmVhZGRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxuICBpZiAoZW50cnkgPT09IG51bGwpIHtcbiAgICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhlbnRyeS5uYW1lKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfY2xvc2VkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKSB7XG4gIHRyeSB7XG4gICAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZXdpbmRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpciwgY2FtbF91bml4X29wZW5kaXJcbi8vQWxpYXM6IHVuaXhfcmV3aW5kZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmV3aW5kZGlyKGRpcl9oYW5kbGUpIHtcbiAgY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xuICB2YXIgbmV3X2Rpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihkaXJfaGFuZGxlLnBhdGgpO1xuICBkaXJfaGFuZGxlLnBvaW50ZXIgPSBuZXdfZGlyX2hhbmRsZS5wb2ludGVyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRmaXJzdFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfb3BlbmRpciwgY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kZmlyc3RcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kZmlyc3QocGF0aCkge1xuICAvLyBUaGUgV2luZG93cyBjb2RlIGFkZHMgdGhpcyBnbG9iIHRvIHRoZSBwYXRoLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSBpdFxuICB2YXIgcGF0aF9qcyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBhdGgpO1xuICBwYXRoX2pzID0gcGF0aF9qcy5yZXBsYWNlKC8oXnxbXFxcXFxcL10pXFwqXFwuXFwqJC8sIFwiXCIpO1xuICBwYXRoID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aF9qcyk7XG4gIC8vICouKiBpcyBub3cgc3RyaXBwZWRcbiAgdmFyIGRpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKTtcbiAgdmFyIGZpcnN0X2VudHJ5ID0gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG4gIC8vIFRoZSBXaW5kb3dzIGJpbmRpbmdzIHR5cGUgZGlyX2hhbmRsZSBhcyBhbiBgaW50YCBidXQgaXQncyBub3QgaW4gSlNcbiAgcmV0dXJuIFswLCBmaXJzdF9lbnRyeSwgZGlyX2hhbmRsZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kbmV4dFxuLy9SZXF1aXJlczogY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kbmV4dFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRuZXh0KGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGNsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vQWxpYXM6IHdpbl9maW5kY2xvc2VcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kY2xvc2UoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nICgpIHtyZXR1cm4gMDt9XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBEdW1teSBmaWxlc3lzdGVtXG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSl7XG4gIHJldHVybiAobmFtZS5zbGljZSgtMSkgIT09IFwiL1wiKSA/IChuYW1lICsgXCIvXCIpIDogbmFtZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9IGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csJy8nKTtcbmVsc2VcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSAgXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKXtcbiAgdmFyIHggPSBwYXRoX2lzX2Fic29sdXRlKHBhdGgpO1xuICBpZiAoIXgpIHJldHVybjtcbiAgcmV0dXJuIHhbMF0gKyBcIi9cIn1cblxuLy9Qcm92aWRlczogY2FtbF9yb290XG4vL1JlcXVpcmVzOiBjYW1sX2dldF9yb290LCBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX2ZhaWx3aXRoXG52YXIgY2FtbF9yb290ID0gY2FtbF9nZXRfcm9vdChjYW1sX2N1cnJlbnRfZGlyKSB8fCBjYW1sX2ZhaWx3aXRoKFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpO1xuXG5cbi8vUHJvdmlkZXM6IE1sRmlsZVxuZnVuY3Rpb24gTWxGaWxlKCl7ICB9XG5cbi8vUHJvdmlkZXM6IHBhdGhfaXNfYWJzb2x1dGVcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKSB7XG4gIGZ1bmN0aW9uIHBvc2l4KHBhdGgpIHtcbiAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgcmV0dXJuIFtcIlwiLCBwYXRoLnN1YnN0cmluZygxKV07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luMzIocGF0aCkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG4gICAgdmFyIHNwbGl0RGV2aWNlUmUgPSAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHZhciBpc1VuYyA9IEJvb2xlYW4oZGV2aWNlICYmIGRldmljZS5jaGFyQXQoMSkgIT09ICc6Jyk7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChCb29sZWFuKHJlc3VsdFsyXSB8fCBpc1VuYykpIHtcbiAgICAgIHZhciByb290ID0gKHJlc3VsdFsxXSB8fCAnJyk7XG4gICAgICB2YXIgc2VwID0gKHJlc3VsdFsyXSB8fCAnJyk7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbjMyIDogcG9zaXg7XG4gIH1cbiAgZWxzZSByZXR1cm4gcG9zaXhcbn1cbnZhciBwYXRoX2lzX2Fic29sdXRlID0gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9wYXRoXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3BhdGggKG5hbWUpIHtcbiAgbmFtZT1jYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYoICFwYXRoX2lzX2Fic29sdXRlKG5hbWUpIClcbiAgICBuYW1lID0gY2FtbF9jdXJyZW50X2RpciArIG5hbWU7XG4gIHZhciBjb21wMCA9IHBhdGhfaXNfYWJzb2x1dGUobmFtZSk7XG4gIHZhciBjb21wID0gY29tcDBbMV0uc3BsaXQoXCIvXCIpO1xuICB2YXIgbmNvbXAgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpPGNvbXAubGVuZ3RoOyBpKyspe1xuICAgIHN3aXRjaChjb21wW2ldKXtcbiAgICBjYXNlIFwiLi5cIjogaWYobmNvbXAubGVuZ3RoPjEpIG5jb21wLnBvcCgpOyBicmVhaztcbiAgICBjYXNlIFwiLlwiOiBicmVhaztcbiAgICBjYXNlIFwiXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9zeXNfZmRzW3ZmZF07XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2JhX21hcF9maWxlIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9tYXBfZmlsZVxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZShhcmd2LGFyZ24pe1xuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLGFyZ3ZbMV0sYXJndlsyXSxhcmd2WzNdLGFyZ3ZbNF0sYXJndls1XSk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlX2V4dGVybihuYW1lLGNvbnRlbnQpe1xuICBpZihnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUpXG4gICAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCk7XG4gIGVsc2Uge1xuICAgIGlmKCFnbG9iYWxUaGlzLmNhbWxfZnNfdG1wKSBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gICAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcC5wdXNoKHtuYW1lOm5hbWUsY29udGVudDpjb250ZW50fSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnNfaW5pdFxuLy9SZXF1aXJlczoganNvb19jcmVhdGVfZmlsZVxuZnVuY3Rpb24gY2FtbF9mc19pbml0ICgpe1xuICB2YXIgdG1wPWdsb2JhbFRoaXMuY2FtbF9mc190bXBcbiAgaWYodG1wKXtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgaSsrKXtcbiAgICAgIGpzb29fY3JlYXRlX2ZpbGUodG1wW2ldLm5hbWUsdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYoISByb290LmRldmljZS5yZWdpc3RlcikgY2FtbF9mYWlsd2l0aChcImNhbm5vdCByZWdpc3RlciBmaWxlXCIpO1xuICByb290LmRldmljZS5yZWdpc3Rlcihyb290LnJlc3QsY29udGVudCk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciBuYW1lID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlYWRfZmlsZV9jb250ZW50XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIE1sRmFrZUZkLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuXG4gIHZhciBhID0gdGhpcy5yZWFkZGlyKG5hbWUpO1xuICB2YXIgYyA9IGZhbHNlO1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiB7IHJlYWRTeW5jIDogKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYykge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGkgPT0gYS5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHZhciBlbnRyeSA9IGFbaV07XG4gICAgaSsrO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5IH1cbiAgfSlcbiAgICAsIGNsb3NlU3luYzogKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGMgPSB0cnVlO1xuICAgICAgYSA9IFtdO1xuICAgIH0pXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIGxlbiA9IGNsZW4gLSBvZmZzZXQ7XG4gIH1cbiAgaWYobGVuKSB7XG4gICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gICAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBkYXRhLCAwLCBsZW4pO1xuICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgfVxuICByZXR1cm4gbGVuXG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmRfb3V0KGZkLGZsYWdzKSB7XG4gIE1sRmFrZUZpbGUuY2FsbCh0aGlzLCBjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gIHRoaXMubG9nID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiAwIH0pO1xuICBpZihmZCA9PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZztcbiAgZWxzZSBpZihmZCA9PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nXG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIH1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMubG9nKSB7XG4gICAgaWYobGVuID4gMFxuICAgICAgICYmIHBvcyA+PSAwXG4gICAgICAgJiYgcG9zK2xlbiA8PSBidWYubGVuZ3RoXG4gICAgICAgJiYgYnVmW3BvcytsZW4tMV0gPT0gMTApXG4gICAgICBsZW4gLS07XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgdmFyIHNyYyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgdGhpcy5sb2coc3JjLnRvVXRmMTYoKSk7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgaXMgd3JpdGUgb25seVwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG9nID0gdW5kZWZpbmVkO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmQobmFtZSwgZmlsZSxmbGFncykge1xuICB0aGlzLmZpbGUgPSBmaWxlO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5cbk1sRmFrZUZkLnByb3RvdHlwZS5lcnJfY2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5hbWUgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLmxlbmd0aCAoKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLndyaXRlKG9mZnNldCxidWYscG9zLGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLnJlYWQob2Zmc2V0LCBidWYsIHBvcywgbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maWxlID0gdW5kZWZpbmVkO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBNbE11dGV4XG5mdW5jdGlvbiBNbE11dGV4KCkge1xuICB0aGlzLmxvY2tlZCA9IGZhbHNlXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbmV3XG4vL1JlcXVpcmVzOiBNbE11dGV4XG5mdW5jdGlvbiBjYW1sX21sX211dGV4X25ldyh1bml0KSB7XG4gIHJldHVybiBuZXcgTWxNdXRleCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X2xvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbG9jayh0KSB7XG4gIGlmKHQubG9ja2VkKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJNdXRleC5sb2NrOiBtdXRleCBhbHJlYWR5IGxvY2tlZC4gQ2Fubm90IHdhaXQuXCIpO1xuICBlbHNlIHQubG9ja2VkID0gdHJ1ZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2sodCkge1xuICBpZighdC5sb2NrZWQpIHtcbiAgICB0LmxvY2tlZCA9IHRydWU7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3VubG9jayh0KSB7XG4gIHQubG9ja2VkID0gZmFsc2U7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgSW50MzJBcnJheSh4KTtcbiAgLy8gRm9yIG51bSA8IDEuNVxuICAvLyBsZW5ndGhfbmF0IGlzbid0IGV4dGVybmFsLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlIE9iai5zaXplXG4gIC8vIHdvcmsgb3V0IHJpZ2h0LlxuICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgLy8gLSArMSBmb3IgdGhlIHRhZ1xuICAvLyAtICsxIGZvciB0aGUgY3VzdG9tX29wcyBzbG90XG4gIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDJcbn1cblxuTWxOYXQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfbmF0XCI7XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpe1xuICByZXR1cm4gbmV3IE1sTmF0KGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjcmVhdGVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gY3JlYXRlX25hdChzaXplKSB7XG4gIHZhciBhcnIgPSBuZXcgTWxOYXQoc2l6ZSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIuZGF0YVtpXSA9IC0xO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vUHJvdmlkZXM6IHNldF90b196ZXJvX25hdFxuZnVuY3Rpb24gc2V0X3RvX3plcm9fbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmxpdF9uYXRcbmZ1bmN0aW9uIGJsaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IG5hdDIuZGF0YVtvZnMyK2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0XG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0KG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0XG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0KG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIG51bV9kaWdpdHNfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZihuYXQuZGF0YVtvZnMraV0gIT0gMCkgcmV0dXJuIGkrMTtcbiAgfVxuICByZXR1cm4gMTsgLy8gMCBjb3VudHMgYXMgMSBkaWdpdFxufVxuXG4vL1Byb3ZpZGVzOiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXRcbmZ1bmN0aW9uIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQsIG9mcykge1xuICB2YXIgYSA9IG5hdC5kYXRhW29mc107XG4gIHZhciBiID0gMDtcbiAgaWYoYSAmIDB4RkZGRjAwMDApIHsgYiArPTE2OyBhID4+Pj0xNjsgfVxuICBpZihhICYgMHhGRjAwKSAgICAgeyBiICs9IDg7IGEgPj4+PSA4OyB9XG4gIGlmKGEgJiAweEYwKSAgICAgICB7IGIgKz0gNDsgYSA+Pj49IDQ7IH1cbiAgaWYoYSAmIDEyKSAgICAgICAgIHsgYiArPSAyOyBhID4+Pj0gMjsgfVxuICBpZihhICYgMikgICAgICAgICAgeyBiICs9IDE7IGEgPj4+PSAxOyB9XG4gIGlmKGEgJiAxKSAgICAgICAgICB7IGIgKz0gMTsgfVxuICByZXR1cm4gMzIgLSBiO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9pbnRcbmZ1bmN0aW9uIGlzX2RpZ2l0X2ludChuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA+PSAwKSByZXR1cm4gMVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdID09IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfb2RkXG5mdW5jdGlvbiBpc19kaWdpdF9vZGQobmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSAmIDEpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGluY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKHggfCAwKTtcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IGFkZF9uYXRcbi8vUmVxdWlyZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geFxuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBjYXJyeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBsZW1lbnRfbmF0XG5mdW5jdGlvbiBjb21wbGVtZW50X25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICgtMSA+Pj4gMCkgLSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKTtcbiAgfVxufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy9Qcm92aWRlczogZGVjcl9uYXRcbmZ1bmN0aW9uIGRlY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PjApIC0gYm9ycm93O1xuICAgIG5hdC5kYXRhW29mcytpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKGJvcnJvdyA9PSAxKSA/IDAgOiAxO1xufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBzdWJfbmF0XG4vL1JlcXVpcmVzOiBkZWNyX25hdFxuZnVuY3Rpb24gc3ViX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgLSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVjcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIChib3Jyb3c9PTEpPzA6MSk7XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNbb2ZzM11cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogbXVsdF9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGFkZF9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMykge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgYSA9IChuYXQzLmRhdGFbb2ZzM10gPj4+IDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHgxID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSAmIDB4MDAwMEZGRkYpICsgY2Fycnk7XG4gICAgdmFyIHgyID0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhID4+PiAxNik7XG4gICAgY2FycnkgPSBNYXRoLmZsb29yKHgyLzY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDM7XG4gICAgY2FycnkgKz0gTWF0aC5mbG9vcih4My80Mjk0OTY3Mjk2KTtcbiAgfVxuXG4gIGlmKGxlbjIgPCBsZW4xICYmIGNhcnJ5KSB7XG4gICAgcmV0dXJuIGFkZF9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIG5hdF9vZl9hcnJheShbY2FycnldKSwgMCwgMSwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjM7IGkrKykge1xuICAgIGNhcnJ5ICs9IG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEraSwgbGVuMS1pLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzK2kpO1xuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbmF0MSA9IDIgKiBuYXQxICsgbmF0MiAqIG5hdDJcbi8vIGxlbjEgPj0gMiAqIGxlbjJcbi8vUHJvdmlkZXM6IHNxdWFyZV9uYXRcbi8vUmVxdWlyZXM6IG11bHRfbmF0LCBhZGRfbmF0XG5mdW5jdGlvbiBzcXVhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgY2FycnkgKz0gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQxLCBvZnMxLCBsZW4xLCAwKTtcbiAgY2FycnkgKz0gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMik7XG4gIHJldHVybiBjYXJyeTtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA8PCBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhID4+PiAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIEFzc3VtaW5nIGMgPiBhLCByZXR1cm5zIFtxdW90aWVudCwgcmVtYWluZGVyXSBvZiAoYTw8MzIgKyBiKS9jXG4vL1Byb3ZpZGVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfaGVscGVyKGEsIGIsIGMpIHtcbiAgdmFyIHggPSBhICogNjU1MzYgKyAoYj4+PjE2KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKHgvYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwRkZGRik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3Iody9jKSwgdyAlIGNdO1xufVxuXG4vLyBuYXQxW29mczErbGVuXSA8IG5hdDJbb2ZzMl1cbi8vUHJvdmlkZXM6IGRpdl9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9kaWdpdF9uYXQobmF0cSwgb2ZzcSwgbmF0ciwgb2ZzciwgbmF0MSwgb2ZzMSwgbGVuLCBuYXQyLCBvZnMyKSB7XG4gIHZhciByZW0gPSAobmF0MS5kYXRhW29mczErbGVuLTFdID4+PjApO1xuICAvLyBuYXRxW29mc3ErbGVuLTFdIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybyAoZHVlIHRvIHRoZSBNU0QgcmVxdWlyZW1lbnQpLFxuICAvLyBhbmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLlxuICBmb3IodmFyIGkgPSBsZW4tMjsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgeCA9IGRpdl9oZWxwZXIocmVtLCAobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0Mi5kYXRhW29mczJdID4+PiAwKSk7XG4gICAgbmF0cS5kYXRhW29mc3EraV0gPSB4WzBdO1xuICAgIHJlbSA9IHhbMV07XG4gIH1cbiAgbmF0ci5kYXRhW29mc3JdID0gcmVtO1xuICByZXR1cm4gMDtcbn1cblxuLy8gbmF0MVtuYXQyOl0gOj0gbmF0MSAvIG5hdDJcbi8vIG5hdDFbOm5hdDJdIDo9IG5hdDEgJSBuYXQyXG4vLyBsZW4xID4gbGVuMiwgbmF0MltvZnMyK2xlbjItMV0gPiBuYXQxW29mczErbGVuMS0xXVxuLy9Qcm92aWRlczogZGl2X25hdFxuLy9SZXF1aXJlczogZGl2X2RpZ2l0X25hdCwgZGl2X2hlbHBlciwgbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0LCBzaGlmdF9sZWZ0X25hdCwgc2hpZnRfcmlnaHRfbmF0LCBjcmVhdGVfbmF0LCBzZXRfdG9femVyb19uYXQsIG11bHRfZGlnaXRfbmF0LCBzdWJfbmF0LCBjb21wYXJlX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBkaXZfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgaWYobGVuMiA9PSAxKSB7XG4gICAgZGl2X2RpZ2l0X25hdChuYXQxLCBvZnMxKzEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMitsZW4yLTEpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcblxuICB2YXIgZCA9IChuYXQyLmRhdGFbb2ZzMitsZW4yLTFdID4+PiAwKSArIDE7XG4gIHZhciBhID0gY3JlYXRlX25hdChsZW4yKzEpO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gbGVuMjsgaS0tKSB7XG4gICAgLy8gRGVjZW50IGxvd2VyIGJvdW5kIG9uIHF1b1xuICAgIHZhciBxdW8gPSBkID09IDQyOTQ5NjcyOTYgPyAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDogZGl2X2hlbHBlcigobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0MS5kYXRhW29mczEraS0xXSA+Pj4wKSwgZClbMF07XG4gICAgc2V0X3RvX3plcm9fbmF0KGEsIDAsIGxlbjIrMSk7XG4gICAgbXVsdF9kaWdpdF9uYXQoYSwgMCwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIGEsIDAsIGxlbjIrMSwgMSk7XG5cbiAgICB3aGlsZSAobmF0MS5kYXRhW29mczEraV0gIT0gMCB8fCBjb21wYXJlX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMCkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBxdW87XG4gIH1cblxuICBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyBzaGlmdCByZW1haW5kZXJcbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gcmVzdG9yZVxuICByZXR1cm4gMDtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gbGVuMS0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciBhID0gbmF0MS5kYXRhW29mczEraV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYobmF0MS5kYXRhW29mczFdID4gbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gMTtcbiAgaWYobmF0MS5kYXRhW29mczFdIDwgbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdFxuLy9SZXF1aXJlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGEgPSBudW1fZGlnaXRzX25hdChuYXQxLCBvZnMxLCBsZW4xKTtcbiAgdmFyIGIgPSBudW1fZGlnaXRzX25hdChuYXQyLCBvZnMyLCBsZW4yKTtcbiAgaWYoYSA+IGIpIHJldHVybiAxO1xuICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICBmb3IodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA+IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAxO1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDwgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdF9yZWFsXG4vL1JlcXVpcmVzOiBjb21wYXJlX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXRfcmVhbChuYXQxLG5hdDIpe1xuICByZXR1cm4gY29tcGFyZV9uYXQobmF0MSwwLG5hdDEuZGF0YS5sZW5ndGgsbmF0MiwwLG5hdDIuZGF0YS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBsYW5kX2RpZ2l0X25hdFxuZnVuY3Rpb24gbGFuZF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gJj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSB8PSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBseG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbHhvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gXj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeil7XG4gIHZhciBsZW4gPSBuYXQuZGF0YS5sZW5ndGg7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3ope1xuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIG5hdCA9IG5ldyBNbE5hdChsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0ZpbGUoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLHttb2RlOm1vZGV9KTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucm1kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNEaXJlY3RvcnkoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGIgPSB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICAgIHRoaXMuZnMudW5saW5rU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gYjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZiwgcmFpc2VfdW5peCkge1xuICB2YXIgY29uc3RzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGtleSBpbiBmKXtcbiAgICBzd2l0Y2goa2V5KXtcbiAgICBjYXNlIFwicmRvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1JET05MWTsgYnJlYWs7XG4gICAgY2FzZSBcIndyb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19XUk9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJhcHBlbmRcIiAgOlxuICAgICAgcmVzIHw9IGNvbnN0cy5PX1dST05MWSB8IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjcmVhdGVcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0NSRUFUOyAgICBicmVhaztcbiAgICBjYXNlIFwidHJ1bmNhdGVcIiA6IHJlcyB8PSBjb25zdHMuT19UUlVOQzsgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4Y2xcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fRVhDTDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiaW5hcnlcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTsgICBicmVhaztcbiAgICBjYXNlIFwidGV4dFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19URVhUOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm5vbmJsb2NrXCIgOiByZXMgfD0gY29uc3RzLk9fTk9OQkxPQ0s7IGJyZWFrO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHZhciBmZCA9IHRoaXMuZnMub3BlblN5bmModGhpcy5ubShuYW1lKSwgcmVzKTtcbiAgICB2YXIgaXNDaGFyYWN0ZXJEZXZpY2UgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0NoYXJhY3RlckRldmljZSgpO1xuICAgIGYuaXNDaGFyYWN0ZXJEZXZpY2UgPSBpc0NoYXJhY3RlckRldmljZTtcbiAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLm9wZW5kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJhaXNlX25vZGVqc19lcnJvciA9IGZ1bmN0aW9uKGVyciwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpIHtcbiAgICB2YXIgYXJncyA9IG1ha2VfdW5peF9lcnJfYXJncyhlcnIuY29kZSwgZXJyLnN5c2NhbGwsIGVyci5wYXRoLCBlcnIuZXJybm8pO1xuICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0c19mcm9tX2pzID0gZnVuY3Rpb24oanNfc3RhdHMpIHtcbiAgLyogPT09VW5peC5maWxlX2tpbmQ9PT1cbiAgICogdHlwZSBmaWxlX2tpbmQgPVxuICAgKiAgICAgU19SRUcgICAgICAgICAgICAgICAgICAgICAgICgqKiBSZWd1bGFyIGZpbGUgKilcbiAgICogICB8IFNfRElSICAgICAgICAgICAgICAgICAgICAgICAoKiogRGlyZWN0b3J5ICopXG4gICAqICAgfCBTX0NIUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIENoYXJhY3RlciBkZXZpY2UgKilcbiAgICogICB8IFNfQkxLICAgICAgICAgICAgICAgICAgICAgICAoKiogQmxvY2sgZGV2aWNlICopXG4gICAqICAgfCBTX0xOSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFN5bWJvbGljIGxpbmsgKilcbiAgICogICB8IFNfRklGTyAgICAgICAgICAgICAgICAgICAgICAoKiogTmFtZWQgcGlwZSAqKVxuICAgKiAgIHwgU19TT0NLICAgICAgICAgICAgICAgICAgICAgICgqKiBTb2NrZXQgKilcbiAgICovXG4gIHZhciBmaWxlX2tpbmQ7XG4gIGlmIChqc19zdGF0cy5pc0ZpbGUoKSkge1xuICAgIGZpbGVfa2luZCA9IDA7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVfa2luZCA9IDE7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDI7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMztcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgZmlsZV9raW5kID0gNDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0ZJRk8oKSkge1xuICAgIGZpbGVfa2luZCA9IDU7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTb2NrZXQoKSkge1xuICAgIGZpbGVfa2luZCA9IDY7XG4gIH1cbiAgLyogPT09VW5peC5zdGF0cz09PVxuICAgKiB0eXBlIHN0YXRzID1cbiAgICogIHsgc3RfZGV2IDogaW50OyAgICAgICAgICAgICAgICgqKiBEZXZpY2UgbnVtYmVyICopXG4gICAqICAgIHN0X2lubyA6IGludDsgICAgICAgICAgICAgICAoKiogSW5vZGUgbnVtYmVyICopXG4gICAqICAgIHN0X2tpbmQgOiBmaWxlX2tpbmQ7ICAgICAgICAoKiogS2luZCBvZiB0aGUgZmlsZSAqKVxuICAgKiAgICBzdF9wZXJtIDogZmlsZV9wZXJtOyAgICAgICAgKCoqIEFjY2VzcyByaWdodHMgKilcbiAgICogICAgc3RfbmxpbmsgOiBpbnQ7ICAgICAgICAgICAgICgqKiBOdW1iZXIgb2YgbGlua3MgKilcbiAgICogICAgc3RfdWlkIDogaW50OyAgICAgICAgICAgICAgICgqKiBVc2VyIGlkIG9mIHRoZSBvd25lciAqKVxuICAgKiAgICBzdF9naWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIEdyb3VwIElEIG9mIHRoZSBmaWxlJ3MgZ3JvdXAgKilcbiAgICogICAgc3RfcmRldiA6IGludDsgICAgICAgICAgICAgICgqKiBEZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSkgKilcbiAgICogICAgc3Rfc2l6ZSA6IGludDsgICAgICAgICAgICAgICgqKiBTaXplIGluIGJ5dGVzICopXG4gICAqICAgIHN0X2F0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBhY2Nlc3MgdGltZSAqKVxuICAgKiAgICBzdF9tdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUgKilcbiAgICogICAgc3RfY3RpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IHN0YXR1cyBjaGFuZ2UgdGltZSAqKVxuICAgKiAgfVxuICAgKi9cbiAgcmV0dXJuIEJMT0NLKFxuICAgIDAsXG4gICAganNfc3RhdHMuZGV2LFxuICAgIGpzX3N0YXRzLmlubyxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAganNfc3RhdHMuc2l6ZSxcbiAgICBqc19zdGF0cy5hdGltZU1zLFxuICAgIGpzX3N0YXRzLm10aW1lTXMsXG4gICAganNfc3RhdHMuY3RpbWVNc1xuICApO1xufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKCkge1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGZChmZCwgZmxhZ3Mpe1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5mZCA9IGZkO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxOb2RlRmQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRmQ7XG5cbk1sTm9kZUZkLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5mdHJ1bmNhdGVTeW5jKHRoaXMuZmQsbGVufDApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYSxidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gICAgcmV0dXJuIHJlYWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmNsb3NlU3luYyh0aGlzLmZkKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRmQoKXtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICBpZihmbGFncy5uYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIHZhciBmZDIgPSBmcy5vcGVuU3luYyhmbGFncy5uYW1lLCBcInJzXCIpO1xuICAgICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZDIsIGZsYWdzKTtcbiAgICB9IGNhdGNoKGUpIHsgIH1cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19hbGxvY1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19hbGxvYyhfLHNpemUpe1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGUoMTIsIDAsIFswLHNpemVdKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1Yih4KXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X3N0dWIoczEsIGkxLCBzMiwgaTIsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHMxLGkxLHMyLGkyLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtc2V0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1zZXRfc3R1YihiaWdzdHJpbmcsIHZfcG9zLCB2X2xlbiwgdl9jaGFyKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIGNhbWxfYmFfc2V0XzEoYmlnc3RyaW5nLCB2X3BvcyArIGksIHZfY2hhcik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMSh2X3MxLHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHZfczIsdl9zMl9wb3MgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfYnl0ZXNfZ2V0XG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSwgdl9zMV9wb3MgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYnl0ZXNfZ2V0KHZfczIsIHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG52YXIgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nID0gY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2ZpbmRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19maW5kKGJzLCBjaHIsIHBvcywgbGVuKXtcbiAgd2hpbGUobGVuID4gMCl7XG4gICAgaWYoY2FtbF9iYV9nZXRfMShicyxwb3MpID09IGNocikgcmV0dXJuIHBvcztcbiAgICBwb3MrKztcbiAgICBsZW4tLTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGUoaGF5c3RhY2ssIG5lZWRsZSwgaGF5c3RhY2tfcG9zLCBoYXlzdGFja19sZW4sIG5lZWRsZV9wb3MsIG5lZWRsZV9sZW4pe1xuICB2YXIgaSA9IDA7XG4gIHZhciBsaW0gPSBoYXlzdGFja19sZW4gLSBuZWVkbGVfbGVuO1xuICBmb3IodmFyIGkgPSAwOyBpIDw9IGxpbTsgKytpKSB7XG4gICAgdmFyIG1hdGNoZXMgPSB0cnVlO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmVlZGxlX2xlbjsgKytqKSB7XG4gICAgICBpZiAoY2FtbF9iYV9nZXRfMShoYXlzdGFjaywgaGF5c3RhY2tfcG9zICsgaSArIGopICE9IGNhbWxfYmFfZ2V0XzEobmVlZGxlLG5lZWRsZV9wb3MgKyBqKSkge1xuICAgICAgICBtYXRjaGVzID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobWF0Y2hlcykgcmV0dXJuIChoYXlzdGFja19wb3MgKyBpKTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8vLy8vLy8vIENPUkVcblxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxudmFyIGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG4vL1Byb3ZpZGVzOiBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG5cbi8vUHJvdmlkZXM6IGNvcmVfdGltZV9uc19mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfdGltZV9uc19mb3JtYXQodGltZSxmb3JtYXQpe1xuICB2YXIgZCA9IG5ldyBEYXRlKHRpbWUgKiAxMDAwKTtcbiAgdmFyIGZvcm1hdGpzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmb3JtYXQpO1xuICB2YXIganN0cmluZyA9IGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lKGZvcm1hdGpzLCBkKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanN0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfY29tcGFjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfY29tcGFjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX2hlYXBfY2h1bmtzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfY2h1bmtzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19taW5vcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3Byb21vdGVkX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX3Byb21vdGVkX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY190b3BfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY190b3BfaGVhcF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzXG5mdW5jdGlvbiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZmRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luLCBjYW1sX21kNV9jaGFuLCBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbmZ1bmN0aW9uIGNvcmVfbWQ1X2ZkKGZkKXtcbiAgICB2YXIgaWMgPSBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGNhbWxfbWQ1X2NoYW4oaWMsIC0xKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBjYW1sX21sX2Nsb3NlX2NoYW5uZWwoaWMpO1xuICAgIH1cbn1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tZDVfc3RyaW5nLCBjYW1sX2JsaXRfc3RyaW5nLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nKGJ1Ziwgb2ZzLCBsZW4sIHJlcyl7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihidWYsIG9mcywgYnl0ZXMsIDAsIGxlbik7XG4gICAgdmFyIHJlczIgPSBjYW1sX21kNV9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnl0ZXMpLCAwLCBsZW4pO1xuICAgIGNhbWxfYmxpdF9zdHJpbmcocmVzMiwgMCwgcmVzLCAwLCAxNik7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vQmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19kZXN0cm95X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1Yih2X2JzdHIpIHtcbiAgaWYgKHZfYnN0ci5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnc3RyaW5nX2Rlc3Ryb3k6IGJpZ3N0cmluZyBpcyBhbHJlYWR5IGRlYWxsb2NhdGVkXCIpO1xuICB9XG4gIC8vIE11dGF0ZSB0aGUgb3JpZ2luYWwgYmlnc3RyaW5nIGluLXBsYWNlLCB0byBzaW11bGF0ZSB3aGF0IHRoZSBDIHZlcnNpb24gZG9lc1xuICB2X2JzdHIuX19pc19kZWFsbG9jYXRlZCA9IHRydWU7XG4gIHZfYnN0ci5kYXRhID0gbmV3IHZfYnN0ci5kYXRhLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcigwKTtcbiAgdl9ic3RyLmRpbXMgPSBbIDAgXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19yZWFsbG9jXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX3JlYWxsb2MoYmlnc3RyaW5nLCBzaXplKSB7XG4gICAgaWYgKGJpZ3N0cmluZy5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ3N0cmluZ19yZWFsbG9jOiBiaWdzdHJpbmcgaXMgYWxyZWFkeSBkZWFsbG9jYXRlZFwiKTtcbiAgICB9XG5cbiAgICB2YXIgbmV3X2RhdGEgPSBuZXcgYmlnc3RyaW5nLmRhdGEuX19wcm90b19fLmNvbnN0cnVjdG9yKHNpemUpO1xuICAgIG5ld19kYXRhLnNldChiaWdzdHJpbmcuZGF0YS5zbGljZSgwLCBzaXplKSk7XG4gICAgdmFyIG5ld19iaWdzdHJpbmcgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmlnc3RyaW5nLmtpbmQsIGJpZ3N0cmluZy5sYXlvdXQsIFtzaXplXSwgbmV3X2RhdGEpO1xuICAgIGJpZ3N0cmluZ19kZXN0cm95X3N0dWIoYmlnc3RyaW5nKTtcblxuICAgIHJldHVybiBuZXdfYmlnc3RyaW5nO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLHNyY19vZmYsZHN0LGRzdF9vZmYsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9pbnRfY29tcGFyZVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyhiYTEsIGJhMV9vZmYsIGJhMiwgYmEyX29mZiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGNhbWxfaW50X2NvbXBhcmUoY2FtbF9iYV9nZXRfMShiYTEsIGJhMV9vZmYgKyBpKSwgY2FtbF9iYV9nZXRfMShiYTIsIGJhMl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZyhiYSwgYmFfb2ZmLCBzdHIsIHN0cl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmEsIGJhX29mZiArIGkpLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHN0ciwgc3RyX29mZiArIGkpKTtcbiAgICBpZiAoYyAhPSAwKSByZXR1cm4gY1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jaHJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNocihiYSwgYmFfb2ZmLCBjaHIsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGNhbWxfYmFfZ2V0XzEoYmEsIGJhX29mZiArIGkpID09IGNocikge1xuICAgICAgcmV0dXJuIChiYV9vZmYgKyBpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKXtcbiAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhhKSkgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSkgcmV0dXJuIDEyNTI7IC8vIG9jYW1sIHN0cmluZyAoaWYgZGlmZmVyZW50IGZyb20gYnl0ZXMpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBhWzBdID09PSAoYVswXT4+PjApICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuICh0YWcgPT0gMjU0KT8wOnRhZ1xuICB9XG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBTdHJpbmcpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGEgJiYgYS5jYW1sX2N1c3RvbSkgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhICYmIGEuY29tcGFyZSkgcmV0dXJuIDEyNTY7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxMjQ3OyAvLyBsaWtlIGNsb3N1cmVfdGFnICgyNDcpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3ltYm9sXCIpIHJldHVybiAxMjUxO1xuICByZXR1cm4gMTAwMTsgLy9vdXRfb2ZfaGVhcF90YWdcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKXtcbiAgcmV0dXJuIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0uY29tcGFyZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYoY29tcCkge1xuICAgIHZhciB4ID0gKHN3YXAgPiAwKT9jb21wKGN1c3RvbSxudW0sdG90YWwpOmNvbXAobnVtLGN1c3RvbSx0b3RhbCk7XG4gICAgaWYodG90YWwgJiYgeCAhPSB4KSByZXR1cm4gc3dhcDsgLy8gdG90YWwgJiYgbmFuXG4gICAgaWYoK3ggIT0gK3gpIHJldHVybiAreDsgLy8gbmFuXG4gICAgaWYoKHggfCAwKSAhPSAwKSByZXR1cm4gKHggfCAwKTsgLy8gIW5hblxuICB9XG4gIHJldHVybiBzd2FwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRvdGFsKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICBmb3IoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYSA9PSAyNTApIHsgYSA9IGFbMV07IGNvbnRpbnVlIH1cblxuICAgICAgdmFyIHRhZ19iID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYik7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYiA9PSAyNTApIHsgYiA9IGJbMV07IGNvbnRpbnVlIH1cblxuICAgICAgLy8gdGFncyBhcmUgZGlmZmVyZW50XG4gICAgICBpZih0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYodGFnX2EgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19iID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYSwgYiwgLTEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYodGFnX2IgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19hID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYiwgYSwgMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGFnX2EgPCB0YWdfYik/LTE6MTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCh0YWdfYSl7XG4gICAgICAgIC8vIDI0NjogTGF6eV90YWcgaGFuZGxlZCBiZWxsb3dcbiAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgIHZhciB4ID0gY2FtbF9pbnRfY29tcGFyZShhWzJdLCBiWzJdKTtcbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDk6IC8vIEluZml4XG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkIHRhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRm9yd2FyZF90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICB2YXIgeCA9IGNhbWxfYnl0ZXNfY29tcGFyZShhLCBiKTtcbiAgICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MzogLy8gRG91YmxlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBDdXN0b21fdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSk7XG4gICAgICAgIGlmKGNvbXAgIT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKXtcbiAgICAgICAgICByZXR1cm4gKGEuY2FtbF9jdXN0b208Yi5jYW1sX2N1c3RvbSk/LTE6MTtcbiAgICAgICAgfVxuICAgICAgICBpZighY29tcClcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgdmFyIHggPSBjb21wKGEsYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU2OiAvLyBjb21wYXJlIGZ1bmN0aW9uXG4gICAgICAgIHZhciB4ID0gYS5jb21wYXJlKGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpIHsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDA6IC8vIE51bWJlclxuICAgICAgICBhID0gK2E7XG4gICAgICAgIGIgPSArYjtcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgLy8gSGVyZSB3ZSBjYW4gYmUgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgICAgLy8gMS4gSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMy4gSmF2YVNjcmlwdCBvYmplY3QgdGhhbiBjYW5ub3QgYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy9cbiAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAvLyAoMikgd2lsbCBjb2VyY2UgdG8gcHJpbWl0aXZlIHR5cGVzIHVzaW5nIFt2YWx1ZU9mXSBvciBbdG9TdHJpbmddXG4gICAgICAgIC8vICgyKSBhbmQgKDMpLCBhZnRlciBldmVudHVhbCBjb2VyY2lvblxuICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAvLyAtIGlmIGEgb3IgYiBhcmUgbm90IHN0cmluZ3MsIGNvbnZlcnQgYSBhbmQgYiB0byBudW1iZXJcbiAgICAgICAgLy8gICBhbmQgYXBwbHkgc3RhbmRhcmQgY29tcGFyaXNvblxuICAgICAgICAvL1xuICAgICAgICAvLyBFeGNlcHRpb246IGAhPWAgd2lsbCBub3QgY29lcmNlL2NvbnZlcnQgaWYgYm90aCBhIGFuZCBiIGFyZSBvYmplY3RzXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTE6IC8vIEphdmFTY3JpcHQgU3ltYm9sLCBubyBvcmRlcmluZy5cbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTI6IC8vIG9jYW1sIHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGEpO1xuICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGEudG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIGIgPSBiLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ2OiAvLyBMYXp5X3RhZ1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheVxuICAgICAgZGVmYXVsdDogLy8gQmxvY2sgd2l0aCBvdGhlciB0YWdcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHRhZ19hKSkge1xuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvLy8vLy8vLy8gQklOX1BST1RcblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGJpZ3N0cmluZywgaSl7XG4gIGlmIChpID4+PiAwID49IGJpZ3N0cmluZy5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICBjYW1sX2NoZWNrX2JvdW5kKGRzdCxkc3RfcG9zKTsgLy8gZmlyc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmQoZHN0LGRzdF9wb3MrbGVuLTEpOyAvLyBsYXN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhzcmMsIHNyY19wb3MpOyAgLyogZmlyc3QgcG9zICovXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKHNyYywgc3JjX3BvcyArIGxlbiAqIDggLSAxKTsgLyogbGFzdCBwb3MgKi9cbiAgdmFyIHZpZXcgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KGxlbik7XG4gIHZhciBidWZmZXIgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheSh2aWV3LmJ1ZmZlcik7XG4gIGJ1ZmZlci5zZXQoc3JjLmRhdGEuc3ViYXJyYXkoc3JjX3Bvcywgc3JjX3BvcyArIChsZW4gKiA4KSkpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMCBcbiAgICBkc3RbZHN0X3BvcytpKzFdID0gdmlld1tpXTtcbiAgfVxuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YihzcmNfcG9zLHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDAgXG4gIGNhbWxfY2hlY2tfYm91bmQgKHNyYywgc3JjX3Bvcyk7IC8vIGZpcnN0IHBvcyBcbiAgY2FtbF9jaGVja19ib3VuZCAoc3JjLCBzcmNfcG9zICsgbGVuIC0gMSk7IC8vIGxhc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGRzdCwgZHN0X3Bvcyk7IC8qIGZpcnN0IHBvcyAqL1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhkc3QsIGRzdF9wb3MgKyBsZW4gKiA4IC0gMSk7IC8qIGxhc3QgcG9zICovXG4gIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMFxuICBzcmNfcG9zID0gc3JjX3BvcyArIDFcbiAgdmFyIGZsb2F0NjQgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KHNyYy5zbGljZShzcmNfcG9zLHNyY19wb3MgKyBsZW4pKTtcbiAgdmFyIGZsb2F0NjRfdWludDggPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheShmbG9hdDY0LmJ1ZmZlcik7XG4gIHZhciB2aWV3ID0gZHN0LmRhdGEuc3ViYXJyYXkoZHN0X3BvcywgZHN0X3BvcyArIChsZW4gKiA4KSk7XG4gIHZpZXcuc2V0KGZsb2F0NjRfdWludDgpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEsIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIC8vIFtiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXSBpcyB1c2VkIHdpdGggbWl4ZWQgYmlnYXJyYXkga2luZHMuXG4gIC8vIENvbnZlcnRlciBldmVyeXRoaW5nIHRvIGJpZ2FycmF5IG9mIGNoYXIgYmVmb3JlIHRoZSBibGl0LlxuICBpZihzcmMua2luZCAhPSAxMikgLy8gMTIgaXMgdGhlIGNoYXIga2luZFxuICAgIHNyYyA9IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShzcmMuZGF0YSk7XG4gIGlmKGRzdC5raW5kICE9IDEyKSAvLyAxMiBpcyB0aGUgY2hhciBraW5kXG4gICAgZHN0ID0gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGRzdC5kYXRhKTtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gQXJyYXlcblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zdWIgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9zdWIgKGEsIGksIGxlbikge1xuICB2YXIgYTIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBhMlswXT0wO1xuICBmb3IodmFyIGkyID0gMSwgaTE9IGkrMTsgaTIgPD0gbGVuOyBpMisrLGkxKysgKXtcbiAgICBhMltpMl09YVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2FwcGVuZCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgdmFyIGwxID0gYTEubGVuZ3RoLCBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMStsMi0xXG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gMDtcbiAgdmFyIGkgPSAxLGogPSAxO1xuICBmb3IoO2k8bDE7aSsrKSBhW2ldPWExW2ldO1xuICBmb3IoO2k8bDtpKyssaisrKSBhW2ldPWEyW2pdO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X2dldCAoYXJyYXksIGluZGV4KSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5W2luZGV4KzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpe1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGFycmF5W29mcytpKzFdID0gdjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kIChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdmVjdCBjb25zdCAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy9Qcm92aWRlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBibGFrZTJiID0gKGZ1bmN0aW9uICgpIHtcbi8vIEJsYWtlMkIgaW4gcHVyZSBKYXZhc2NyaXB0XG4vLyBBZGFwdGVkIGZyb20gdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbiBSRkM3NjkzXG4vLyBQb3J0ZWQgdG8gSmF2YXNjcmlwdCBieSBEQyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9kY3Bvc2NoXG5cbi8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuLy8gU2V0cyB2W2EsYSsxXSArPSB2W2IsYisxXVxuLy8gdiBzaG91bGQgYmUgYSBVaW50MzJBcnJheVxuZnVuY3Rpb24gQURENjRBQSAodiwgYSwgYikge1xuICBjb25zdCBvMCA9IHZbYV0gKyB2W2JdXG4gIGxldCBvMSA9IHZbYSArIDFdICsgdltiICsgMV1cbiAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgbzErK1xuICB9XG4gIHZbYV0gPSBvMFxuICB2W2EgKyAxXSA9IG8xXG59XG5cbi8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuLy8gU2V0cyB2W2EsYSsxXSArPSBiXG4vLyBiMCBpcyB0aGUgbG93IDMyIGJpdHMgb2YgYiwgYjEgcmVwcmVzZW50cyB0aGUgaGlnaCAzMiBiaXRzXG5mdW5jdGlvbiBBREQ2NEFDICh2LCBhLCBiMCwgYjEpIHtcbiAgbGV0IG8wID0gdlthXSArIGIwXG4gIGlmIChiMCA8IDApIHtcbiAgICBvMCArPSAweDEwMDAwMDAwMFxuICB9XG4gIGxldCBvMSA9IHZbYSArIDFdICsgYjFcbiAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgbzErK1xuICB9XG4gIHZbYV0gPSBvMFxuICB2W2EgKyAxXSA9IG8xXG59XG5cbi8vIExpdHRsZS1lbmRpYW4gYnl0ZSBhY2Nlc3NcbmZ1bmN0aW9uIEIyQl9HRVQzMiAoYXJyLCBpKSB7XG4gIHJldHVybiBhcnJbaV0gXiAoYXJyW2kgKyAxXSA8PCA4KSBeIChhcnJbaSArIDJdIDw8IDE2KSBeIChhcnJbaSArIDNdIDw8IDI0KVxufVxuXG4vLyBHIE1peGluZyBmdW5jdGlvblxuLy8gVGhlIFJPVFJzIGFyZSBpbmxpbmVkIGZvciBzcGVlZFxuZnVuY3Rpb24gQjJCX0cgKGEsIGIsIGMsIGQsIGl4LCBpeSkge1xuICBjb25zdCB4MCA9IG1baXhdXG4gIGNvbnN0IHgxID0gbVtpeCArIDFdXG4gIGNvbnN0IHkwID0gbVtpeV1cbiAgY29uc3QgeTEgPSBtW2l5ICsgMV1cblxuICBBREQ2NEFBKHYsIGEsIGIpIC8vIHZbYSxhKzFdICs9IHZbYixiKzFdIC4uLiBpbiBKUyB3ZSBtdXN0IHN0b3JlIGEgdWludDY0IGFzIHR3byB1aW50MzJzXG4gIEFERDY0QUModiwgYSwgeDAsIHgxKSAvLyB2W2EsIGErMV0gKz0geCAuLi4geDAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIHgsIHgxIGlzIHRoZSBoaWdoIDMyIGJpdHNcblxuICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgdG8gdGhlIHJpZ2h0IGJ5IDMyIGJpdHNcbiAgbGV0IHhvcjAgPSB2W2RdIF4gdlthXVxuICBsZXQgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV1cbiAgdltkXSA9IHhvcjFcbiAgdltkICsgMV0gPSB4b3IwXG5cbiAgQURENjRBQSh2LCBjLCBkKVxuXG4gIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSAyNCBiaXRzXG4gIHhvcjAgPSB2W2JdIF4gdltjXVxuICB4b3IxID0gdltiICsgMV0gXiB2W2MgKyAxXVxuICB2W2JdID0gKHhvcjAgPj4+IDI0KSBeICh4b3IxIDw8IDgpXG4gIHZbYiArIDFdID0gKHhvcjEgPj4+IDI0KSBeICh4b3IwIDw8IDgpXG5cbiAgQURENjRBQSh2LCBhLCBiKVxuICBBREQ2NEFDKHYsIGEsIHkwLCB5MSlcblxuICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgcmlnaHQgYnkgMTYgYml0c1xuICB4b3IwID0gdltkXSBeIHZbYV1cbiAgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV1cbiAgdltkXSA9ICh4b3IwID4+PiAxNikgXiAoeG9yMSA8PCAxNilcbiAgdltkICsgMV0gPSAoeG9yMSA+Pj4gMTYpIF4gKHhvcjAgPDwgMTYpXG5cbiAgQURENjRBQSh2LCBjLCBkKVxuXG4gIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSA2MyBiaXRzXG4gIHhvcjAgPSB2W2JdIF4gdltjXVxuICB4b3IxID0gdltiICsgMV0gXiB2W2MgKyAxXVxuICB2W2JdID0gKHhvcjEgPj4+IDMxKSBeICh4b3IwIDw8IDEpXG4gIHZbYiArIDFdID0gKHhvcjAgPj4+IDMxKSBeICh4b3IxIDw8IDEpXG59XG5cbi8vIEluaXRpYWxpemF0aW9uIFZlY3RvclxuY29uc3QgQkxBS0UyQl9JVjMyID0gbmV3IFVpbnQzMkFycmF5KFtcbiAgMHhmM2JjYzkwOCwgMHg2YTA5ZTY2NywgMHg4NGNhYTczYiwgMHhiYjY3YWU4NSwgMHhmZTk0ZjgyYiwgMHgzYzZlZjM3MixcbiAgMHg1ZjFkMzZmMSwgMHhhNTRmZjUzYSwgMHhhZGU2ODJkMSwgMHg1MTBlNTI3ZiwgMHgyYjNlNmMxZiwgMHg5YjA1Njg4YyxcbiAgMHhmYjQxYmQ2YiwgMHgxZjgzZDlhYiwgMHgxMzdlMjE3OSwgMHg1YmUwY2QxOVxuXSlcblxuY29uc3QgU0lHTUE4ID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNCwgMTAsIDQsIDgsIDksIDE1LCAxMyxcbiAgNiwgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzLCAxMSwgOCwgMTIsIDAsIDUsIDIsIDE1LCAxMywgMTAsIDE0LCAzLCA2LCA3LCAxLFxuICA5LCA0LCA3LCA5LCAzLCAxLCAxMywgMTIsIDExLCAxNCwgMiwgNiwgNSwgMTAsIDQsIDAsIDE1LCA4LCA5LCAwLCA1LCA3LCAyLCA0LFxuICAxMCwgMTUsIDE0LCAxLCAxMSwgMTIsIDYsIDgsIDMsIDEzLCAyLCAxMiwgNiwgMTAsIDAsIDExLCA4LCAzLCA0LCAxMywgNywgNSxcbiAgMTUsIDE0LCAxLCA5LCAxMiwgNSwgMSwgMTUsIDE0LCAxMywgNCwgMTAsIDAsIDcsIDYsIDMsIDksIDIsIDgsIDExLCAxMywgMTEsIDcsXG4gIDE0LCAxMiwgMSwgMywgOSwgNSwgMCwgMTUsIDQsIDgsIDYsIDIsIDEwLCA2LCAxNSwgMTQsIDksIDExLCAzLCAwLCA4LCAxMiwgMixcbiAgMTMsIDcsIDEsIDQsIDEwLCA1LCAxMCwgMiwgOCwgNCwgNywgNiwgMSwgNSwgMTUsIDExLCA5LCAxNCwgMywgMTIsIDEzLCAwLCAwLFxuICAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNCwgMTAsIDQsIDgsIDksIDE1LCAxMywgNixcbiAgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzXG5dXG5cbi8vIFRoZXNlIGFyZSBvZmZzZXRzIGludG8gYSB1aW50NjQgYnVmZmVyLlxuLy8gTXVsdGlwbHkgdGhlbSBhbGwgYnkgMiB0byBtYWtlIHRoZW0gb2Zmc2V0cyBpbnRvIGEgdWludDMyIGJ1ZmZlcixcbi8vIGJlY2F1c2UgdGhpcyBpcyBKYXZhc2NyaXB0IGFuZCB3ZSBkb24ndCBoYXZlIHVpbnQ2NHNcbmNvbnN0IFNJR01BODIgPSBuZXcgVWludDhBcnJheShcbiAgU0lHTUE4Lm1hcChmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB4ICogMlxuICB9KVxuKVxuXG4vLyBDb21wcmVzc2lvbiBmdW5jdGlvbi4gJ2xhc3QnIGZsYWcgaW5kaWNhdGVzIGxhc3QgYmxvY2suXG4vLyBOb3RlIHdlJ3JlIHJlcHJlc2VudGluZyAxNiB1aW50NjRzIGFzIDMyIHVpbnQzMnNcbmNvbnN0IHYgPSBuZXcgVWludDMyQXJyYXkoMzIpXG5jb25zdCBtID0gbmV3IFVpbnQzMkFycmF5KDMyKVxuZnVuY3Rpb24gYmxha2UyYkNvbXByZXNzIChjdHgsIGxhc3QpIHtcbiAgbGV0IGkgPSAwXG5cbiAgLy8gaW5pdCB3b3JrIHZhcmlhYmxlc1xuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIHZbaV0gPSBjdHguaFtpXVxuICAgIHZbaSArIDE2XSA9IEJMQUtFMkJfSVYzMltpXVxuICB9XG5cbiAgLy8gbG93IDY0IGJpdHMgb2Ygb2Zmc2V0XG4gIHZbMjRdID0gdlsyNF0gXiBjdHgudFxuICB2WzI1XSA9IHZbMjVdIF4gKGN0eC50IC8gMHgxMDAwMDAwMDApXG4gIC8vIGhpZ2ggNjQgYml0cyBub3Qgc3VwcG9ydGVkLCBvZmZzZXQgbWF5IG5vdCBiZSBoaWdoZXIgdGhhbiAyKio1My0xXG5cbiAgLy8gbGFzdCBibG9jayBmbGFnIHNldCA/XG4gIGlmIChsYXN0KSB7XG4gICAgdlsyOF0gPSB+dlsyOF1cbiAgICB2WzI5XSA9IH52WzI5XVxuICB9XG5cbiAgLy8gZ2V0IGxpdHRsZS1lbmRpYW4gd29yZHNcbiAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICBtW2ldID0gQjJCX0dFVDMyKGN0eC5iLCA0ICogaSlcbiAgfVxuXG4gIC8vIHR3ZWx2ZSByb3VuZHMgb2YgbWl4aW5nXG4gIC8vIHVuY29tbWVudCB0aGUgRGVidWdQcmludCBjYWxscyB0byBsb2cgdGhlIGNvbXB1dGF0aW9uXG4gIC8vIGFuZCBtYXRjaCB0aGUgUkZDIHNhbXBsZSBkb2N1bWVudGF0aW9uXG4gIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgQjJCX0coMCwgOCwgMTYsIDI0LCBTSUdNQTgyW2kgKiAxNiArIDBdLCBTSUdNQTgyW2kgKiAxNiArIDFdKVxuICAgIEIyQl9HKDIsIDEwLCAxOCwgMjYsIFNJR01BODJbaSAqIDE2ICsgMl0sIFNJR01BODJbaSAqIDE2ICsgM10pXG4gICAgQjJCX0coNCwgMTIsIDIwLCAyOCwgU0lHTUE4MltpICogMTYgKyA0XSwgU0lHTUE4MltpICogMTYgKyA1XSlcbiAgICBCMkJfRyg2LCAxNCwgMjIsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDZdLCBTSUdNQTgyW2kgKiAxNiArIDddKVxuICAgIEIyQl9HKDAsIDEwLCAyMCwgMzAsIFNJR01BODJbaSAqIDE2ICsgOF0sIFNJR01BODJbaSAqIDE2ICsgOV0pXG4gICAgQjJCX0coMiwgMTIsIDIyLCAyNCwgU0lHTUE4MltpICogMTYgKyAxMF0sIFNJR01BODJbaSAqIDE2ICsgMTFdKVxuICAgIEIyQl9HKDQsIDE0LCAxNiwgMjYsIFNJR01BODJbaSAqIDE2ICsgMTJdLCBTSUdNQTgyW2kgKiAxNiArIDEzXSlcbiAgICBCMkJfRyg2LCA4LCAxOCwgMjgsIFNJR01BODJbaSAqIDE2ICsgMTRdLCBTSUdNQTgyW2kgKiAxNiArIDE1XSlcbiAgfVxuXG4gIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgY3R4LmhbaV0gPSBjdHguaFtpXSBeIHZbaV0gXiB2W2kgKyAxNl1cbiAgfVxufVxuXG4vLyByZXVzYWJsZSBwYXJhbWV0ZXJCbG9ja1xuY29uc3QgcGFyYW1ldGVyQmxvY2sgPSBuZXcgVWludDhBcnJheShbXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vICAwOiBvdXRsZW4sIGtleWxlbiwgZmFub3V0LCBkZXB0aFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgNDogbGVhZiBsZW5ndGgsIHNlcXVlbnRpYWwgbW9kZVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgODogbm9kZSBvZmZzZXRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMTI6IG5vZGUgb2Zmc2V0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDE2OiBub2RlIGRlcHRoLCBpbm5lciBsZW5ndGgsIHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAyMDogcmZ1XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDI0OiByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMjg6IHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAzMjogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAzNjogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0MDogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0NDogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0ODogcGVyc29uYWxcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNTI6IHBlcnNvbmFsXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDU2OiBwZXJzb25hbFxuICAwLFxuICAwLFxuICAwLFxuICAwIC8vIDYwOiBwZXJzb25hbFxuXSlcblxuLy8gQ3JlYXRlcyBhIEJMQUtFMmIgaGFzaGluZyBjb250ZXh0XG4vLyBSZXF1aXJlcyBhbiBvdXRwdXQgbGVuZ3RoIGJldHdlZW4gMSBhbmQgNjQgYnl0ZXNcbi8vIFRha2VzIGFuIG9wdGlvbmFsIFVpbnQ4QXJyYXkga2V5XG5mdW5jdGlvbiBibGFrZTJiSW5pdCAob3V0bGVuLCBrZXkpIHtcbiAgaWYgKG91dGxlbiA9PT0gMCB8fCBvdXRsZW4gPiA2NCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBvdXRwdXQgbGVuZ3RoLCBleHBlY3RlZCAwIDwgbGVuZ3RoIDw9IDY0JylcbiAgfVxuICBpZiAoa2V5Lmxlbmd0aCA+IDY0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGtleSwgZXhwZWN0ZWQgVWludDhBcnJheSB3aXRoIDAgPCBsZW5ndGggPD0gNjQnKVxuICB9XG5cbiAgLy8gc3RhdGUsICdwYXJhbSBibG9jaydcbiAgY29uc3QgY3R4ID0ge1xuICAgIGI6IG5ldyBVaW50OEFycmF5KDEyOCksXG4gICAgaDogbmV3IFVpbnQzMkFycmF5KDE2KSxcbiAgICB0OiAwLCAvLyBpbnB1dCBjb3VudFxuICAgIGM6IDAsIC8vIHBvaW50ZXIgd2l0aGluIGJ1ZmZlclxuICAgIG91dGxlbjogb3V0bGVuIC8vIG91dHB1dCBsZW5ndGggaW4gYnl0ZXNcbiAgfVxuXG4gIC8vIGluaXRpYWxpemUgcGFyYW1ldGVyQmxvY2sgYmVmb3JlIHVzYWdlXG4gIHBhcmFtZXRlckJsb2NrLmZpbGwoMClcbiAgcGFyYW1ldGVyQmxvY2tbMF0gPSBvdXRsZW5cbiAgcGFyYW1ldGVyQmxvY2tbMV0gPSBrZXkubGVuZ3RoXG4gIHBhcmFtZXRlckJsb2NrWzJdID0gMSAvLyBmYW5vdXRcbiAgcGFyYW1ldGVyQmxvY2tbM10gPSAxIC8vIGRlcHRoXG5cbiAgLy8gaW5pdGlhbGl6ZSBoYXNoIHN0YXRlXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIGN0eC5oW2ldID0gQkxBS0UyQl9JVjMyW2ldIF4gQjJCX0dFVDMyKHBhcmFtZXRlckJsb2NrLCBpICogNClcbiAgfVxuXG5cblxuICBpZihrZXkubGVuZ3RoID4gMCl7XG4gICAgYmxha2UyYlVwZGF0ZShjdHgsIGtleSlcbiAgICAvLyBhdCB0aGUgZW5kXG4gICAgY3R4LmMgPSAxMjhcbiAgfVxuXG4gIHJldHVybiBjdHhcbn1cblxuLy8gVXBkYXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbi8vIFJlcXVpcmVzIGhhc2ggY29udGV4dCBhbmQgVWludDhBcnJheSAoYnl0ZSBhcnJheSlcbmZ1bmN0aW9uIGJsYWtlMmJVcGRhdGUgKGN0eCwgaW5wdXQpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChjdHguYyA9PT0gMTI4KSB7XG4gICAgICAvLyBidWZmZXIgZnVsbCA/XG4gICAgICBjdHgudCArPSBjdHguYyAvLyBhZGQgY291bnRlcnNcbiAgICAgIGJsYWtlMmJDb21wcmVzcyhjdHgsIGZhbHNlKSAvLyBjb21wcmVzcyAobm90IGxhc3QpXG4gICAgICBjdHguYyA9IDAgLy8gY291bnRlciB0byB6ZXJvXG4gICAgfVxuICAgIGN0eC5iW2N0eC5jKytdID0gaW5wdXRbaV1cbiAgfVxufVxuXG4vLyBDb21wbGV0ZXMgYSBCTEFLRTJiIHN0cmVhbWluZyBoYXNoXG4vLyBSZXR1cm5zIGEgVWludDhBcnJheSBjb250YWluaW5nIHRoZSBtZXNzYWdlIGRpZ2VzdFxuZnVuY3Rpb24gYmxha2UyYkZpbmFsIChjdHgpIHtcbiAgY3R4LnQgKz0gY3R4LmMgLy8gbWFyayBsYXN0IGJsb2NrIG9mZnNldFxuXG4gIHdoaWxlIChjdHguYyA8IDEyOCkge1xuICAgIC8vIGZpbGwgdXAgd2l0aCB6ZXJvc1xuICAgIGN0eC5iW2N0eC5jKytdID0gMFxuICB9XG4gIGJsYWtlMmJDb21wcmVzcyhjdHgsIHRydWUpIC8vIGZpbmFsIGJsb2NrIGZsYWcgPSAxXG5cbiAgLy8gbGl0dGxlIGVuZGlhbiBjb252ZXJ0IGFuZCBzdG9yZVxuICBjb25zdCBvdXQgPSBuZXcgVWludDhBcnJheShjdHgub3V0bGVuKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGN0eC5vdXRsZW47IGkrKykge1xuICAgIG91dFtpXSA9IGN0eC5oW2kgPj4gMl0gPj4gKDggKiAoaSAmIDMpKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiAgcmV0dXJuIHtJbml0OmJsYWtlMmJJbml0LCBVcGRhdGU6Ymxha2UyYlVwZGF0ZSwgRmluYWw6Ymxha2UyYkZpbmFsfVxufSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSl7XG4gIGtleSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGtleSk7XG4gIGlmKGtleS5sZW5ndGggPiA2NCkge1xuICAgIGtleS5zdWJhcnJheSgwLDY0KTtcbiAgfVxuICByZXR1cm4gYmxha2UyYi5Jbml0KGhhc2hsZW4sIGtleSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbikge1xuICB2YXIgciA9IGJsYWtlMmIuRmluYWwoY3R4KTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KHIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmLCBvZnMsIGxlbil7XG4gIHZhciBpbnB1dCA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGJ1Zik7XG4gIGlucHV0ID0gaW5wdXQuc3ViYXJyYXkob2ZzLCBvZnMgKyBsZW4pO1xuICBibGFrZTJiLlVwZGF0ZShjdHgsIGlucHV0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9zdHJpbmcoaGFzaGxlbiwga2V5LCBidWYsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX2JsYWtlMl9jcmVhdGUgKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsdG9yZWFkKXtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoNDA5Nik7XG4gIGlmKHRvcmVhZCA8IDApe1xuICAgIHdoaWxlKHRydWUpe1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCxidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgYnJlYWs7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUodG9yZWFkID4gMCkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCwgKHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkKSk7XG4gICAgICBpZihyZWFkID09IDApIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgICAgdG9yZWFkIC09IHJlYWRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLG9mcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVRyYW5zZm9ybVxudmFyIGNhbWxfTUQ1VHJhbnNmb3JtID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLCBiID0gd1sxXSwgYyA9IHdbMl0sIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDcsIDB4RDc2QUE0NzgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE3LCAweDI0MjA3MERCKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyAzXSwgMjIsIDB4QzFCRENFRUUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA1XSwgMTIsIDB4NDc4N0M2MkEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNywgMHhBODMwNDYxMyk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNywgMHg2OTgwOThEOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOV0sIDEyLCAweDhCNDRGN0FGKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTFdLCAyMiwgMHg4OTVDRDdCRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDcsIDB4NkI5MDExMjIpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE3LCAweEE2Nzk0MzhFKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzE1XSwgMjIsIDB4NDlCNDA4MjEpO1xuXG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDZdLCA5LCAweEMwNDBCMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1RTVBNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDUsIDB4RDYyRjEwNUQpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTBdLCA5LCAweDAyNDQxNDUzKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDRdLCAyMCwgMHhFN0QzRkJDOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDUsIDB4MjFFMUNERTYpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTQsIDB4RjRENTBEODcpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDhdLCAyMCwgMHg0NTVBMTRFRCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDJdLCA5LCAweEZDRUZBM0Y4KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTQsIDB4Njc2RjAyRDkpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNCwgMHhGRkZBMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOF0sIDExLCAweDg3NzFGNjgxKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTRdLCAyMywgMHhGREU1MzgwQyk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDQsIDB4QTRCRUVBNDQpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE2LCAweEY2QkI0QjYwKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzEwXSwgMjMsIDB4QkVCRkJDNzApO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyAwXSwgMTEsIDB4RUFBMTI3RkEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNiwgMHhENEVGMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNCwgMHhEOUQ0RDAzOSk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMl0sIDExLCAweEU2REI5OUU1KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDJdLCAyMywgMHhDNEFDNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNiwgMHhGNDI5MjI0NCk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTUsIDB4QUI5NDIzQTcpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDVdLCAyMSwgMHhGQzkzQTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDNdLCAxMCwgMHg4RjBDQ0M5Mik7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE1LCAweEZGRUZGNDdEKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA2LCAweDZGQTg3RTRGKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4RkUyQ0U2RTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsxM10sIDIxLCAweDRFMDgxMUExKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNiwgMHhGNzUzN0U4Mik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTUsIDB4MkFEN0QyQkIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDldLCAyMSwgMHhFQjg2RDM5MSk7XG5cbiAgICB3WzBdID0gYWRkKGEsIHdbMF0pO1xuICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgd1syXSA9IGFkZChjLCB3WzJdKTtcbiAgICB3WzNdID0gYWRkKGQsIHdbM10pO1xuICB9fSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtsZW46MCxcbiAgICAgICAgICB3Om5ldyBVaW50MzJBcnJheShbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3Nl0pLFxuICAgICAgICAgIGIzMjpiMzIsXG4gICAgICAgICAgYjg6Yjh9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVVcGRhdGUoY3R4LCBpbnB1dCwgaW5wdXRfbGVuKXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICB2YXIgaW5wdXRfcG9zID0gMDtcbiAgY3R4LmxlbiArPSBpbnB1dF9sZW47XG4gIGlmKGluX2J1Zil7XG4gICAgdmFyIG1pc3NpbmcgPSA2NCAtIGluX2J1ZjtcbiAgICBpZihpbnB1dF9sZW4gPCBtaXNzaW5nKSB7XG4gICAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsaW5wdXRfbGVuKSxpbl9idWYpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxtaXNzaW5nKSxpbl9idWYpO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gbWlzc2luZztcbiAgICBpbnB1dF9wb3MgKz0gbWlzc2luZztcbiAgfVxuICB3aGlsZShpbnB1dF9sZW4gPj0gNjQpe1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIDY0KSwgMCk7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSA2NDtcbiAgICBpbnB1dF9wb3MgKz0gNjQ7XG4gIH1cbiAgaWYoaW5wdXRfbGVuKVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIGN0eC5iOFtpbl9idWZdID0gMHg4MDtcbiAgaW5fYnVmICsrO1xuICBpZihpbl9idWYgPiA1Nikge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDY0OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH1cbiAgY3R4LmIzMlsxNF0gPSBjdHgubGVuIDw8IDM7XG4gIGN0eC5iMzJbMTVdID0gKGN0eC5sZW4gPj4gMjkpICYgMHgxRkZGRkZGRjtcbiAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICB2YXIgdCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCA0OyBqKyspXG4gICAgICB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICByZXR1cm4gdDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2J5dGVzKHMsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpO1xuICBjYW1sX01ENVVwZGF0ZShjdHgsYS5zdWJhcnJheShvZnMsIG9mcyArIGxlbiksIGxlbik7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfZXhuX3N0YWNrXS4gRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBwdXNoZWQgaW50byB0aGlzIHN0YWNrIHdoZW5cbmVudGVyaW5nIGEgW3RyeSAuLi4gd2l0aCAuLi5dIGFuZCBwb3BwZWQgb24gZXhpdC4gVGhlbiwgaGFuZGxlcnMgYW5kXG50aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2ZpYmVyX3N0YWNrXS4gVG8gaW5zdGFsbCBhblxuZWZmZWN0IGhhbmRsZXIsIHdlIHB1c2ggYSBuZXcgZmliZXIgaW50byB0aGUgZXhlY3V0aW9uIGNvbnRleHQuXG5cbldlIGhhdmUgYmFzaWNhbGx5IHRoZSBmb2xsb3dpbmcgdHlwZSBmb3IgcmVpZmllZCBjb250aW51YXRpb25zICh0eXBlXG5bY29udGludWF0aW9uXSBpbiBtb2R1bGUgW0VmZmVjdF0gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkpOlxuXG4gIHR5cGUgKCdhLCAnYikgY29udGludWF0aW9uID0gKCdhLCAnYikgc3RhY2sgcmVmXG5cbiAgYW5kIChfLCBfKSBzdGFjayA9XG4gICAgICBDb25zIDogKCdiIC0+IHVuaXQpICogICAgICAgICAgICAgKCogbG93LWxldmVsIGNvbnRpbnVhdGlvbiAqKVxuICAgICAgICAgICAgIChleG4gLT4gdW5pdCkgbGlzdCAqICAgICAgICgqIGV4Y2VwdGlvbiBoYW5kbGVycyAqKVxuICAgICAgICAgICAgICgnYiwgJ2MpIGhhbmRsZXIgKlxuICAgICAgICAgICAgICgnYSwgJ2IpIHN0YWNrXG4gICAgICAgICAgICAgLT4gKCdhLCAnYykgc3RhY2tcbiAgICB8IEVtcHR5IDogKCdhLCAnYSkgc3RhY2tcblxuICBhbmQgKCdhLCdiKSBoYW5kbGVyID0gICAoKiBBcyBpbiBtb2R1bGUgRWZmZWN0IGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgRWZmZWN0LnQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG5Db250aW51YXRpb25zIGFyZSBvbmUtc2hvdC4gQSBjb250aW51YXRpb24gW3JlZiBFbXB0eV0gaGFzIGFscmVhZHlcbmJlZW4gcmVzdW1lZC5cblxuQSBjb250aW51YXRpb24gaXMgYmFzaWNhbGx5IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiBmaWJlcnMsIHdoaWNoIGVhY2hcbmhhcyBpdHMgbG93LWxldmVsIGNvbnRpbnVhdGlvbiwgaXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQgYVxudHJpcGxlIG9mIGhhbmRsZXJzIHRvIGRlYWwgd2l0aCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzIG9yIGFuXG5lZmZlY3QgaXMgcGVyZm9ybWVkLiBXaGVuIHJlc3VtaW5nIGEgY29udGludWF0aW9uLCB0aGUgaW5uZXJtb3N0IGZpYmVyXG5pcyByZXN1bWVkIGZpcnN0LlxuXG5UaGUgaGFuZGxlcnMgYXJlIENQUy10cmFuc2Zvcm1lZCBmdW5jdGlvbnM6IHRoZXkgYWN0dWFsbHkgdGFrZSBhblxuYWRkaXRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvbi5cbiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGlzIGFuIE9DYW1sIGxpc3Qgb2YgZXhjZXB0aW9uIGhhbmRsZXJzXG52YXIgY2FtbF9leG5fc3RhY2sgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1c2hfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcHVzaF90cmFwKGhhbmRsZXIpIHtcbiAgY2FtbF9leG5fc3RhY2s9WzAsaGFuZGxlcixjYW1sX2V4bl9zdGFja107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfZXhuX3N0YWNrKSByZXR1cm4gZnVuY3Rpb24oeCl7dGhyb3cgeDt9XG4gIHZhciBoID0gY2FtbF9leG5fc3RhY2tbMV07XG4gIGNhbWxfZXhuX3N0YWNrPWNhbWxfZXhuX3N0YWNrWzJdO1xuICByZXR1cm4gaFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGhhcyB0aGUgc2hhcGUge2gsIHI6e2ssIHgsIGV9fSB3aGVyZSBoIGlzIGEgdHJpcGxlIG9mIGhhbmRsZXJzXG4vLyAoc2VlIGVmZmVjdC5qcykgYW5kIGssIHggYW5kIGUgYXJlIHRoZSBzYXZlZCBjb250aW51YXRpb24sXG4vLyBleGNlcHRpb24gc3RhY2sgYW5kIGZpYmVyIHN0YWNrIG9mIHRoZSBwYXJlbnQgZmliZXIuXG52YXIgY2FtbF9maWJlcl9zdGFjaztcblxuLy9Qcm92aWRlczpjYW1sX3Jlc3VtZV9zdGFja1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBrKSB7XG4gIGlmICghc3RhY2spIGNhbWxfcmFpc2VfY29uc3RhbnRcbiAgICAgICAgICAgICAgICAgKGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiKSk7XG4gIC8vIFVwZGF0ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCB0aGUgc3RhY2sgb2YgZmliZXJzIGluIFtzdGFja10gaW5cbiAgLy8gb3JkZXIgdG8gcmVzdW1lIHRoZSBjb250aW51YXRpb25cbiAgZG8ge1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6c3RhY2tbM10sIHI6e2s6aywgeDpjYW1sX2V4bl9zdGFjaywgZTpjYW1sX2ZpYmVyX3N0YWNrfX07XG4gICAgayA9IHN0YWNrWzFdO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc3RhY2tbMl07XG4gICAgc3RhY2sgPSBzdGFja1s0XTtcbiAgfSB3aGlsZSAoc3RhY2spXG4gIHJldHVybiBrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF9maWJlclxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX2ZpYmVyKCkge1xuICAvLyBNb3ZlIHRvIHRoZSBwYXJlbnQgZmliZXIsIHJldHVybmluZyB0aGUgcGFyZW50J3MgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuICB2YXIgcmVtID0gY2FtbF9maWJlcl9zdGFjay5yO1xuICBjYW1sX2V4bl9zdGFjayA9IHJlbS54O1xuICBjYW1sX2ZpYmVyX3N0YWNrID0gcmVtLmU7XG4gIHJldHVybiByZW0uaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgazApIHtcbiAgLy8gQWxsb2NhdGUgYSBjb250aW51YXRpb24gaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZVxuICBpZiAoIWNvbnQpIGNvbnQgPSBbMjQ1IC8qY29udGludWF0aW9uKi8sIDBdO1xuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfZmliZXJfc3RhY2suaFszXTtcbiAgLy8gQ29ucyB0aGUgY3VycmVudCBmaWJlciBvbnRvIHRoZSBjb250aW51YXRpb246XG4gIC8vICAgY29udCA6PSBDb25zIChrLCBleG5fc3RhY2ssIGhhbmRsZXJzLCAhY29udClcbiAgY29udFsxXSA9IFswLGswLGNhbWxfZXhuX3N0YWNrLGNhbWxfZmliZXJfc3RhY2suaCxjb250WzFdXTtcbiAgLy8gTW92ZSB0byBwYXJlbnQgZmliZXIgYW5kIGV4ZWN1dGUgdGhlIGVmZmVjdCBoYW5kbGVyIHRoZXJlXG4gIC8vIFRoZSBoYW5kbGVyIGlzIGRlZmluZWQgaW4gU3RkbGliLkVmZmVjdCwgc28gd2Uga25vdyB0aGF0IHRoZSBhcml0eSBtYXRjaGVzXG4gIHZhciBrMSA9IGNhbWxfcG9wX2ZpYmVyKCk7XG4gIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/aGFuZGxlcihlZmYsY29udCxrMSxrMSlcbiAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsW2VmZixjb250LGsxLGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgZnVuY3Rpb24gY2FsbChpLCB4KSB7XG4gICAgdmFyIGY9Y2FtbF9maWJlcl9zdGFjay5oW2ldO1xuICAgIHZhciBhcmdzID0gW3gsIGNhbWxfcG9wX2ZpYmVyKCldO1xuICAgIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/Y2FtbF9jYWxsX2dlbihmLGFyZ3MpXG4gICAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncyk7XG4gIH1cbiAgZnVuY3Rpb24gaHZhbCh4KSB7XG4gICAgLy8gQ2FsbCBbaHZdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgxLCB4KTtcbiAgfVxuICBmdW5jdGlvbiBoZXhuKGUpIHtcbiAgICAvLyBDYWxsIFtoeF0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDIsIGUpO1xuICB9XG4gIHJldHVybiBbMCwgaHZhbCwgWzAsIGhleG4sIDBdLCBbMCwgaHYsIGh4LCBoZl0sIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjaz1jb250WzFdO1xuICBjb250WzFdPTA7XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1xuLy9SZXF1aXJlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjKGNvbnQsIGh2YWwsIGhleG4sIGhlZmYpIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBzdGFja1szXSA9IFswLCBodmFsLCBoZXhuLCBoZWZmXTtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX25ldyh1bml0KXtcbiAgICByZXR1cm4ge2NvbmRpdGlvbjoxfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fd2FpdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fd2FpdCh0LG11dGV4dCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0KHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWxcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQoKXtcbiAgY2FtbF9mYWlsd2l0aChcIkVmZmVjdCBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc1xudmFyIGNhbWxfZG9tYWluX2RscyA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldChvbGQsbikge1xuICBpZihjYW1sX2RvbWFpbl9kbHMgIT09IG9sZCkgcmV0dXJuIDBcbiAgY2FtbF9kb21haW5fZGxzID0gbjtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2dldCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpe1xuICByZXR1cm4gcmVmWzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2NhcyhyZWYsbyxuKSB7XG4gIGlmKHJlZlsxXSA9PT0gbyl7XG4gICAgcmVmWzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZmV0Y2hfYWRkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19leGNoYW5nZVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2UocmVmLCB2KSB7XG4gIHZhciByID0gcmVmWzFdO1xuICByZWZbMV0gPSB2O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5cbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4odW5pdCkge1xuICByZXR1cm4gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuX1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3NldF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZShfbmFtZSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbmZ1bmN0aW9uIGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50KHVuaXQpIHsgcmV0dXJuIDEgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2lkXG52YXIgY2FtbF9kb21haW5faWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246ID49IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLHRlcm1fc3luYyl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayh0ZXJtX3N5bmNbMl0pO1xuICAgIC8vVE9ETzogZml4IGV4biBjYXNlXG4gICAgdGVybV9zeW5jWzFdID0gWzAsIFswLCByZXNdXTtcbiAgICByZXR1cm4gaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZixtdXRleCl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gICAgcmV0dXJuIGlkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQodW5pdCl7XG4gICAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KHVuaXQpe1xuICAgIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZSkgZmlsZS5jbG9zZSgpO1xuICBkZWxldGUgY2FtbF9zeXNfZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSxpZHgpIHtcbiAgaWYoaWR4ID09IHVuZGVmaW5lZCl7XG4gICAgaWR4ID0gY2FtbF9zeXNfZmRzLmxlbmd0aDtcbiAgfVxuICBjYW1sX3N5c19mZHNbaWR4XSA9IGZpbGU7XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbiAobmFtZSwgZmxhZ3MsIF9wZXJtcykge1xuICB2YXIgZiA9IHt9O1xuICB3aGlsZShmbGFncyl7XG4gICAgc3dpdGNoKGZsYWdzWzFdKXtcbiAgICBjYXNlIDA6IGYucmRvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDE6IGYud3Jvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDI6IGYuYXBwZW5kID0gMTticmVhaztcbiAgICBjYXNlIDM6IGYuY3JlYXRlID0gMTticmVhaztcbiAgICBjYXNlIDQ6IGYudHJ1bmNhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNTogZi5leGNsID0gMTsgYnJlYWs7XG4gICAgY2FzZSA2OiBmLmJpbmFyeSA9IDE7YnJlYWs7XG4gICAgY2FzZSA3OiBmLnRleHQgPSAxO2JyZWFrO1xuICAgIGNhc2UgODogZi5ub25ibG9jayA9IDE7YnJlYWs7XG4gICAgfVxuICAgIGZsYWdzPWZsYWdzWzJdO1xuICB9XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCxmKTtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGZpbGUsIHVuZGVmaW5lZCk7XG59XG4oZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBuZXcgTWxGYWtlRmRfb3V0KGZkLCBmbGFncylcbiAgfVxuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMCx7cmRvbmx5OjEsYWx0bmFtZTpcIi9kZXYvc3RkaW5cIixpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDApO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMSx7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDEpO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMix7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDIpO1xufSkoKVxuXG5cbi8vIG9jYW1sIENoYW5uZWxzXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lKGNoYW5pZCwgbmFtZSkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5uYW1lID0gbmFtZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0IChjYXB0dXJlZCwgaW50byl7XG4gIHZhciB0b19yZXN0b3JlID0gY2FtbF9tbF9jaGFubmVsX2dldChjYXB0dXJlZCk7XG4gIHZhciBuZXdfID0gY2FtbF9tbF9jaGFubmVsX2dldChpbnRvKTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjYXB0dXJlZF0gPSBuZXdfOyAvLyBYWFhcbiAgcmV0dXJuIHRvX3Jlc3RvcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9yZXN0b3JlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZSAoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpe1xuICBjYW1sX21sX2NoYW5uZWxzW2NhcHR1cmVkXSA9IHRvX3Jlc3RvcmU7IC8vIFhYWFxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX2dldChpZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tpZF07IC8vIFhYWFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pc19iaW5hcnlfbW9kZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2VcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZihjaGFuLm9wZW5lZCkge1xuICAgIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gICAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZCk7XG4gICAgY2hhbi5mZCA9IC0xO1xuICAgIGNoYW4uYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5sZW5ndGgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemVfNjQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjaGFuLmZpbGUubGVuZ3RoICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0KGNoYW5pZCxmKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm91dHB1dCA9IChmdW5jdGlvbiAocykge2Yocyl9KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZmlsbCAoY2hhbikge1xuICBpZihjaGFuLnJlZmlsbCAhPSBudWxsKXtcbiAgICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgICB2YXIgc3RyX2EgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIpO1xuICAgIGlmIChzdHJfYS5sZW5ndGggPT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKXtcbiAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpO1xuICAgICAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgICAgIGNoYW4uYnVmZmVyID0gYjtcbiAgICAgIH1cbiAgICAgIGNoYW4uYnVmZmVyLnNldChzdHJfYSxjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgICAgY2hhbi5vZmZzZXQgKz0gc3RyX2EubGVuZ3RoO1xuICAgICAgY2hhbi5idWZmZXJfbWF4ICs9IHN0cl9hLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCBjaGFuLmJ1ZmZlcl9tYXgsIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2JpZ2FycmF5IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmxvY2sgKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYobCA8PSBhdmFpbCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBsO1xuICB9XG4gIGVsc2UgaWYoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGF2YWlsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBhdmFpbDtcbiAgICBuID0gYXZhaWw7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgIGlmKG4gPiBhdmFpbCkgbiA9IGF2YWlsO1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZSAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgaGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgZnVuY3Rpb24gYmxvY2soYnVmZmVyLCBvZmZzZXQsIG4pIHtcbiAgICB2YXIgciA9IDA7XG4gICAgd2hpbGUociA8IG4pe1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgICAgIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCtyXSA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICAgICAgY2hhbi5idWZmZXJfY3VycisrO1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB2YXIgciA9IGJsb2NrKGhlYWRlciwgMCwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgaWYociA9PSAwKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgZWxzZSBpZiAociA8IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3RcIik7XG4gIHZhciBsZW4gPSBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChjYW1sX2J5dGVzX29mX2FycmF5KGhlYWRlciksIDApO1xuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuICsgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgYnVmLnNldChoZWFkZXIsMCk7XG4gIHZhciByID0gYmxvY2soYnVmLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUsIGxlbilcbiAgaWYociA8IGxlbilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3QgXCIgKyByICsgXCIgIFwiICsgbGVuKTtcbiAgdmFyIG9mZnNldCA9IFswXTtcbiAgdmFyIHJlcyA9IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIG9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0ID0gY2hhbi5vZmZzZXQgKyBvZmZzZXRbMF07XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcChjKSB7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlKGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2NoYXIgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2NoYXIsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfaW50IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgNDsgaSsrKXtcbiAgICByZXMgPSAocmVzIDw8IDgpICsgY2FtbF9tbF9pbnB1dF9jaGFyKGNoYW5pZCkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYocG9zID49IGNoYW4ub2Zmc2V0IC0gY2hhbi5idWZmZXJfbWF4XG4gICAgICYmIHBvcyA8PSBjaGFuLm9mZnNldFxuICAgICAmJiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5KSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbihjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQscG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3Bvc19pbihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCAtIChjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luXzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX3Bvc19pbihjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X3NjYW5fbGluZShjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgdmFyIHAgPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBkbyB7XG4gICAgaWYocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPiAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyKSwwKTtcbiAgICAgICAgcCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICB9XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgICAgdmFyIHByZXZfbWF4ID0gY2hhbi5idWZmZXJfbWF4O1xuICAgICAgY2FtbF9yZWZpbGwgKGNoYW4pO1xuICAgICAgaWYocHJldl9tYXggPT0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPSAxMCk7XG4gIHJldHVybiAocCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9mbHVzaCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBmbHVzaCBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBpZighY2hhbi5idWZmZXIgfHwgY2hhbi5idWZmZXJfY3VyciA9PSAwKSByZXR1cm4gMDtcbiAgaWYoY2hhbi5vdXRwdXQpIHtcbiAgICBjaGFuLm91dHB1dChjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmZpbGUud3JpdGUoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgfVxuICBjaGFuLm9mZnNldCArPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vb3V0cHV0IHRvIG91dF9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X3RhXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiXG4gIH1cbiAgc3dpdGNoKGNoYW4uYnVmZmVyZWQpe1xuICBjYXNlIDA6IC8vIFVuYnVmZmVyZWRcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVha1xuICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrO1xuICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICB2YXIgaWQgPSBidWZmZXIubGFzdEluZGV4T2YoMTApXG4gICAgaWYoaWQgPCAwKSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoMCwgaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGlkICsgMTtcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXksIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dChjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pe1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksb2Zmc2V0LGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9jaGFyIChjaGFuaWQsYykge1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nLCBjYW1sX21sX291dHB1dCxjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlIChjaGFuaWQsdixmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyl7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dChjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dF82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX291dChjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0XzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9wb3Nfb3V0KGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50IChjaGFuaWQsaSkge1xuICB2YXIgYXJyID0gWyhpPj4yNCkgJiAweEZGLChpPj4xNikgJiAweEZGLChpPj44KSAmIDB4RkYsaSAmIDB4RkYgXTtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lzX2J1ZmZlcmVkKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpLmJ1ZmZlcmVkID8gMSA6IDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2J1ZmZlcmVkKGNoYW5pZCx2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA9IHY7XG4gIGlmKCF2KSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHJldHVybiAwXG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG52YXIgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIoZXZlbnRfbmFtZSwgZXZlbnRfdGFnLCBldmVudF90eXBlKSB7XG4gIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ICs9IDE7XG4gIHJldHVybiBbMCwgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgsIGV2ZW50X25hbWUsIGV2ZW50X3R5cGUsIGV2ZW50X3RhZ107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKGV2ZW50LCBldmVudF9jb250ZW50KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfYXJlX2FjdGl2ZVxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfYXJlX2FjdGl2ZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCJcbi8vUHJvdmlkZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjFcbnZhciB6c3RkX2RlY29tcHJlc3MgPSAoZnVuY3Rpb24gKCkge1xuXCJ1c2Ugc3RyaWN0XCI7XG4vLyBhbGlhc2VzIGZvciBzaG9ydGVyIGNvbXByZXNzZWQgY29kZSAobW9zdCBtaW5pZmVycyBkb24ndCBkbyB0aGlzKVxudmFyIGFiID0gQXJyYXlCdWZmZXIsIHU4ID0gVWludDhBcnJheSwgdTE2ID0gVWludDE2QXJyYXksIGkxNiA9IEludDE2QXJyYXksIHUzMiA9IFVpbnQzMkFycmF5LCBpMzIgPSBJbnQzMkFycmF5O1xudmFyIHNsYyA9IGZ1bmN0aW9uICh2LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5zbGljZSlcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5zbGljZS5jYWxsKHYsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgdmFyIG4gPSBuZXcgdTgoZSAtIHMpO1xuICAgIG4uc2V0KHYuc3ViYXJyYXkocywgZSkpO1xuICAgIHJldHVybiBuO1xufTtcbnZhciBmaWxsID0gZnVuY3Rpb24gKHYsIG4sIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmZpbGwpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuZmlsbC5jYWxsKHYsIG4sIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgZm9yICg7IHMgPCBlOyArK3MpXG4gICAgICAgIHZbc10gPSBuO1xuICAgIHJldHVybiB2O1xufTtcbnZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwodiwgdCwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB3aGlsZSAocyA8IGUpIHtcbiAgICAgICAgdlt0KytdID0gdltzKytdO1xuICAgIH1cbn07XG4vKipcbiAqIENvZGVzIGZvciBlcnJvcnMgZ2VuZXJhdGVkIHdpdGhpbiB0aGlzIGxpYnJhcnlcbiAqL1xuLy8gZXJyb3IgY29kZXNcbnZhciBlYyA9IFtcbiAgICAnaW52YWxpZCB6c3RkIGRhdGEnLFxuICAgICd3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpJyxcbiAgICAnaW52YWxpZCBibG9jayB0eXBlJyxcbiAgICAnRlNFIGFjY3VyYWN5IHRvbyBoaWdoJyxcbiAgICAnbWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrJyxcbiAgICAndW5leHBlY3RlZCBFT0YnXG5dO1xuO1xudmFyIGVyciA9IGZ1bmN0aW9uIChpbmQsIG1zZywgbnQpIHtcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgfHwgZWNbaW5kXSk7XG4gICAgZS5jb2RlID0gaW5kO1xuICAgIGlmICghbnQpXG4gICAgICAgIHRocm93IGU7XG4gICAgcmV0dXJuIGU7XG59O1xudmFyIHJiID0gZnVuY3Rpb24gKGQsIGIsIG4pIHtcbiAgICB2YXIgaSA9IDAsIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKVxuICAgICAgICBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbn07XG52YXIgYjQgPSBmdW5jdGlvbiAoZCwgYikgeyByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7IH07XG4vLyByZWFkIFpzdGFuZGFyZCBmcmFtZSBoZWFkZXJcbnZhciByemZoID0gZnVuY3Rpb24gKGRhdCwgdykge1xuICAgIHZhciBuMyA9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkgfCAoZGF0WzJdIDw8IDE2KTtcbiAgICBpZiAobjMgPT0gMHgyRkI1MjggJiYgZGF0WzNdID09IDI1Mykge1xuICAgICAgICAvLyBac3RhbmRhcmRcbiAgICAgICAgdmFyIGZsZyA9IGRhdFs0XTtcbiAgICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgICAgdmFyIHNzID0gKGZsZyA+PiA1KSAmIDEsIGNjID0gKGZsZyA+PiAyKSAmIDEsIGRmID0gZmxnICYgMywgZmNmID0gZmxnID4+IDY7XG4gICAgICAgIGlmIChmbGcgJiA4KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyBieXRlXG4gICAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgICAgLy8gZGljdCBieXRlc1xuICAgICAgICB2YXIgZGIgPSBkZiA9PSAzID8gNCA6IGRmO1xuICAgICAgICAvLyBkaWN0aW9uYXJ5IGlkXG4gICAgICAgIHZhciBkaSA9IHJiKGRhdCwgYnQsIGRiKTtcbiAgICAgICAgYnQgKz0gZGI7XG4gICAgICAgIC8vIGZyYW1lIHNpemUgYnl0ZXNcbiAgICAgICAgdmFyIGZzYiA9IGZjZiA/ICgxIDw8IGZjZikgOiBzcztcbiAgICAgICAgLy8gZnJhbWUgc291cmNlIHNpemVcbiAgICAgICAgdmFyIGZzcyA9IHJiKGRhdCwgYnQsIGZzYikgKyAoKGZjZiA9PSAxKSAmJiAyNTYpO1xuICAgICAgICAvLyB3aW5kb3cgc2l6ZVxuICAgICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICAgIGlmICghc3MpIHtcbiAgICAgICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgICAgICB2YXIgd2IgPSAxIDw8ICgxMCArIChkYXRbNV0gPj4gMykpO1xuICAgICAgICAgICAgd3MgPSB3YiArICh3YiA+PiAzKSAqIChkYXRbNV0gJiA3KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KVxuICAgICAgICAgICAgZXJyKDEpO1xuICAgICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09IDEgPyAoZnNzIHx8IHdzKSA6IHcgPyAwIDogd3MpICsgMTIpO1xuICAgICAgICBidWZbMF0gPSAxLCBidWZbNF0gPSA0LCBidWZbOF0gPSA4O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgbDogMCxcbiAgICAgICAgICAgIGQ6IGRpLFxuICAgICAgICAgICAgdzogKHcgJiYgdyAhPSAxKSA/IHcgOiBidWYuc3ViYXJyYXkoMTIpLFxuICAgICAgICAgICAgZTogd3MsXG4gICAgICAgICAgICBvOiBuZXcgaTMyKGJ1Zi5idWZmZXIsIDAsIDMpLFxuICAgICAgICAgICAgdTogZnNzLFxuICAgICAgICAgICAgYzogY2MsXG4gICAgICAgICAgICBtOiBNYXRoLm1pbigxMzEwNzIsIHdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICgoKG4zID4+IDQpIHwgKGRhdFszXSA8PCAyMCkpID09IDB4MTg0RDJBNSkge1xuICAgICAgICAvLyBza2lwcGFibGVcbiAgICAgICAgcmV0dXJuIGI0KGRhdCwgNCkgKyA4O1xuICAgIH1cbiAgICBlcnIoMCk7XG59O1xuLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbnZhciBtc2IgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgdmFyIGJpdHMgPSAwO1xuICAgIGZvciAoOyAoMSA8PCBiaXRzKSA8PSB2YWw7ICsrYml0cylcbiAgICAgICAgO1xuICAgIHJldHVybiBiaXRzIC0gMTtcbn07XG4vLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG52YXIgcmZzZSA9IGZ1bmN0aW9uIChkYXQsIGJ0LCBtYWwpIHtcbiAgICAvLyB0YWJsZSBwb3NcbiAgICB2YXIgdHBvcyA9IChidCA8PCAzKSArIDQ7XG4gICAgLy8gYWNjdXJhY3kgbG9nXG4gICAgdmFyIGFsID0gKGRhdFtidF0gJiAxNSkgKyA1O1xuICAgIGlmIChhbCA+IG1hbClcbiAgICAgICAgZXJyKDMpO1xuICAgIC8vIHNpemVcbiAgICB2YXIgc3ogPSAxIDw8IGFsO1xuICAgIC8vIHByb2JhYmlsaXRpZXMgc3ltYm9scyAgcmVwZWF0ICAgaW5kZXggICBoaWdoIHRocmVzaG9sZFxuICAgIHZhciBwcm9icyA9IHN6LCBzeW0gPSAtMSwgcmUgPSAtMSwgaSA9IC0xLCBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgICAgdmFyIGJpdHMgPSBtc2IocHJvYnMgKyAxKTtcbiAgICAgICAgdmFyIGNidCA9IHRwb3MgPj4gMztcbiAgICAgICAgLy8gbWFza1xuICAgICAgICB2YXIgbXNrID0gKDEgPDwgKGJpdHMgKyAxKSkgLSAxO1xuICAgICAgICB2YXIgdmFsID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHRwb3MgJiA3KSkgJiBtc2s7XG4gICAgICAgIC8vIG1hc2sgKDEgZmV3ZXIgYml0KVxuICAgICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgICAvLyBtYXggc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIG1zdiA9IG1zayAtIHByb2JzIC0gMTtcbiAgICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIHN2YWwgPSB2YWwgJiBtc2sxZmI7XG4gICAgICAgIGlmIChzdmFsIDwgbXN2KVxuICAgICAgICAgICAgdHBvcyArPSBiaXRzLCB2YWwgPSBzdmFsO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cyArIDE7XG4gICAgICAgICAgICBpZiAodmFsID4gbXNrMWZiKVxuICAgICAgICAgICAgICAgIHZhbCAtPSBtc3Y7XG4gICAgICAgIH1cbiAgICAgICAgZnJlcVsrK3N5bV0gPSAtLXZhbDtcbiAgICAgICAgaWYgKHZhbCA9PSAtMSkge1xuICAgICAgICAgICAgcHJvYnMgKz0gdmFsO1xuICAgICAgICAgICAgc3ltc1stLWh0XSA9IHN5bTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcm9icyAtPSB2YWw7XG4gICAgICAgIGlmICghdmFsKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgLy8gcmVwZWF0IGJ5dGVcbiAgICAgICAgICAgICAgICB2YXIgcmJ0ID0gdHBvcyA+PiAzO1xuICAgICAgICAgICAgICAgIHJlID0gKChkYXRbcmJ0XSB8IChkYXRbcmJ0ICsgMV0gPDwgOCkpID4+ICh0cG9zICYgNykpICYgMztcbiAgICAgICAgICAgICAgICB0cG9zICs9IDI7XG4gICAgICAgICAgICAgICAgc3ltICs9IHJlO1xuICAgICAgICAgICAgfSB3aGlsZSAocmUgPT0gMyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN5bSA+IDI1NSB8fCBwcm9icylcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzeW1wb3MgPSAwO1xuICAgIC8vIHN5bSBzdGVwIChjb3ByaW1lIHdpdGggc3ogLSBmb3JtdWxhIGZyb20genN0ZCBzb3VyY2UpXG4gICAgdmFyIHNzdGVwID0gKHN6ID4+IDEpICsgKHN6ID4+IDMpICsgMztcbiAgICAvLyBzeW0gbWFza1xuICAgIHZhciBzbWFzayA9IHN6IC0gMTtcbiAgICBmb3IgKHZhciBzID0gMDsgcyA8PSBzeW07ICsrcykge1xuICAgICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgICBpZiAoc2YgPCAxKSB7XG4gICAgICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIHNwbGl0IGludG8gdHdvIGxvb3BzIGluIHpzdGQgdG8gYXZvaWQgYnJhbmNoaW5nLCBidXQgYXMgSlMgaXMgaGlnaGVyLWxldmVsIHRoYXQgaXMgdW5uZWNlc3NhcnlcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHNmOyArK2kpIHtcbiAgICAgICAgICAgIHN5bXNbc3ltcG9zXSA9IHM7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICAgICAgfSB3aGlsZSAoc3ltcG9zID49IGh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgICAgLy8gbmV4dCBzdGF0ZVxuICAgICAgICB2YXIgbnMgPSBkc3RhdGVbc3ltc1tpXV0rKztcbiAgICAgICAgLy8gbnVtIGJpdHNcbiAgICAgICAgdmFyIG5iID0gbmJpdHNbaV0gPSBhbCAtIG1zYihucyk7XG4gICAgICAgIG5zdGF0ZVtpXSA9IChucyA8PCBuYikgLSBzejtcbiAgICB9XG4gICAgcmV0dXJuIFsodHBvcyArIDcpID4+IDMsIHtcbiAgICAgICAgICAgIGI6IGFsLFxuICAgICAgICAgICAgczogc3ltcyxcbiAgICAgICAgICAgIG46IG5iaXRzLFxuICAgICAgICAgICAgdDogbnN0YXRlXG4gICAgICAgIH1dO1xufTtcbi8vIHJlYWQgaHVmZm1hblxudmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsIHdjID0gLTE7XG4gICAgLy8gICAgYnVmZmVyICAgICAgICAgICAgIGhlYWRlciBieXRlXG4gICAgdmFyIGJ1ZiA9IG5ldyB1OCgyOTIpLCBoYiA9IGRhdFtidF07XG4gICAgLy8gaHVmZm1hbiB3ZWlnaHRzXG4gICAgdmFyIGh3ID0gYnVmLnN1YmFycmF5KDAsIDI1Nik7XG4gICAgLy8gcmFuayBjb3VudFxuICAgIHZhciByYyA9IGJ1Zi5zdWJhcnJheSgyNTYsIDI2OCk7XG4gICAgLy8gcmFuayBpbmRleFxuICAgIHZhciByaSA9IG5ldyB1MTYoYnVmLmJ1ZmZlciwgMjY4KTtcbiAgICAvLyBOT1RFOiBhdCB0aGlzIHBvaW50IGJ0IGlzIDEgbGVzcyB0aGFuIGV4cGVjdGVkXG4gICAgaWYgKGhiIDwgMTI4KSB7XG4gICAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICAgIHZhciBfYSA9IHJmc2UoZGF0LCBidCArIDEsIDYpLCBlYnQgPSBfYVswXSwgZmR0ID0gX2FbMV07XG4gICAgICAgIGJ0ICs9IGhiO1xuICAgICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgICAvLyBsYXN0IGJ5dGVcbiAgICAgICAgdmFyIGxiID0gZGF0W2J0XTtcbiAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgICAgdmFyIHN0MSA9IDAsIHN0MiA9IDAsIGJ0cjEgPSBmZHQuYiwgYnRyMiA9IGJ0cjE7XG4gICAgICAgIC8vIGZzZSBwb3NcbiAgICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgICAgdmFyIGZwb3MgPSAoKytidCA8PCAzKSAtIDggKyBtc2IobGIpO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjE7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QxICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIxKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICAgICAgZnBvcyAtPSBidHIyO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QyICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIyKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDJdO1xuICAgICAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgICAgICBzdDEgPSBmZHQudFtzdDFdO1xuICAgICAgICAgICAgYnRyMiA9IGZkdC5uW3N0Ml07XG4gICAgICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgICB9XG4gICAgICAgIGlmICgrK3djID4gMjU1KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgICAgZm9yICg7IGkgPCB3YzsgaSArPSAyKSB7XG4gICAgICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgICAgIGh3W2ldID0gYnl0ZSA+PiA0O1xuICAgICAgICAgICAgaHdbaSArIDFdID0gYnl0ZSAmIDE1O1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgLy8gYml0cyBtdXN0IGJlIGF0IG1vc3QgMTEsIHNhbWUgYXMgd2VpZ2h0XG4gICAgICAgIGlmICh3dCA+IDExKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICB3ZXMgKz0gd3QgJiYgKDEgPDwgKHd0IC0gMSkpO1xuICAgIH1cbiAgICAvLyBtYXggYml0c1xuICAgIHZhciBtYiA9IG1zYih3ZXMpICsgMTtcbiAgICAvLyB0YWJsZSBzaXplXG4gICAgdmFyIHRzID0gMSA8PCBtYjtcbiAgICAvLyByZW1haW5pbmcgc3VtXG4gICAgdmFyIHJlbSA9IHRzIC0gd2VzO1xuICAgIC8vIG11c3QgYmUgcG93ZXIgb2YgMlxuICAgIGlmIChyZW0gJiAocmVtIC0gMSkpXG4gICAgICAgIGVycigwKTtcbiAgICBod1t3YysrXSA9IG1zYihyZW0pICsgMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgKytyY1tod1tpXSA9IHd0ICYmIChtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksIG5iID0gaGJ1Zi5zdWJhcnJheSh0cyk7XG4gICAgcmlbbWJdID0gMDtcbiAgICBmb3IgKGkgPSBtYjsgaSA+IDA7IC0taSkge1xuICAgICAgICB2YXIgcHYgPSByaVtpXTtcbiAgICAgICAgZmlsbChuYiwgaSwgcHYsIHJpW2kgLSAxXSA9IHB2ICsgcmNbaV0gKiAoMSA8PCAobWIgLSBpKSkpO1xuICAgIH1cbiAgICBpZiAocmlbMF0gIT0gdHMpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgYml0cyA9IGh3W2ldO1xuICAgICAgICBpZiAoYml0cykge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSByaVtiaXRzXTtcbiAgICAgICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgcmlbYml0c10gPSBjb2RlICsgKDEgPDwgKG1iIC0gYml0cykpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2J0LCB7XG4gICAgICAgICAgICBuOiBuYixcbiAgICAgICAgICAgIGI6IG1iLFxuICAgICAgICAgICAgczogc3ltc1xuICAgICAgICB9XTtcbn07XG4vLyBUYWJsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoaXM6XG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbi8vIGRlZmF1bHQgbGl0ZXJhbCBsZW5ndGggdGFibGVcbnZhciBkbGx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsIDE0NiwgNFxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBtYXRjaCBsZW5ndGggdGFibGVcbnZhciBkbWx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCAzNiwgOVxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBvZmZzZXQgY29kZSB0YWJsZVxudmFyIGRvY3QgPSAvKiNfX1BVUkVfXyAqLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMiwgMTMyLCAxNiwgNjYsIDEwMiwgNzAsIDY4LCA2OCwgNjgsIDY4LCAzNiwgNzMsIDJcbl0pLCAwLCA1KVsxXTtcbi8vIGJpdHMgdG8gYmFzZWxpbmVcbnZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsIGJsID0gbmV3IGkzMihsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgYmxbaV0gPSBzO1xuICAgICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xufTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJpdHNcbnZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTM0Njc4MDIwLCAyMDIwNTAwNTcsIDI2OTQyMjA5M1xuXSkpLmJ1ZmZlciwgMCwgMzYpO1xuLy8gbGl0ZXJhbCBsZW5ndGggYmFzZWxpbmVcbnZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuLy8gbWF0Y2ggbGVuZ3RoIGJpdHNcbnZhciBtbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTE3NzY5MjIwLCAxODUyMDcwNDgsIDI1MjU3OTA4NCwgMTZcbl0pKS5idWZmZXIsIDAsIDUzKTtcbi8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxudmFyIG1sYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKG1sYiwgMyk7XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW1cbnZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsIHNzID0gb3V0Lmxlbmd0aCwgbGIgPSBkYXRbbGVuIC0gMV0sIG1zayA9ICgxIDw8IGh1LmIpIC0gMSwgZWIgPSAtaHUuYjtcbiAgICBpZiAoIWxiKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN0ID0gMCwgYnRyID0gaHUuYiwgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLCBpID0gLTE7XG4gICAgZm9yICg7IHBvcyA+IGViICYmIGkgPCBzczspIHtcbiAgICAgICAgdmFyIGNidCA9IHBvcyA+PiAzO1xuICAgICAgICB2YXIgdmFsID0gKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAocG9zICYgNyk7XG4gICAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgICAgb3V0WysraV0gPSBodS5zW3N0XTtcbiAgICAgICAgcG9zIC09IChidHIgPSBodS5uW3N0XSk7XG4gICAgfVxuICAgIGlmIChwb3MgIT0gZWIgfHwgaSArIDEgIT0gc3MpXG4gICAgICAgIGVycigwKTtcbn07XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbi8vIFRPRE86IHVzZSB3b3JrZXJzIHRvIHBhcmFsbGVsaXplXG52YXIgZGh1NCA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgYnQgPSA2O1xuICAgIHZhciBzcyA9IG91dC5sZW5ndGgsIHN6MSA9IChzcyArIDMpID4+IDIsIHN6MiA9IHN6MSA8PCAxLCBzejMgPSBzejEgKyBzejI7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSksIG91dC5zdWJhcnJheSgwLCBzejEpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzJdIHwgKGRhdFszXSA8PCA4KSksIG91dC5zdWJhcnJheShzejEsIHN6MiksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6Miwgc3ozKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQpLCBvdXQuc3ViYXJyYXkoc3ozKSwgaHUpO1xufTtcbi8vIHJlYWQgWnN0YW5kYXJkIGJsb2NrXG52YXIgcnpiID0gZnVuY3Rpb24gKGRhdCwgc3QsIG91dCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgYnQgPSBzdC5iO1xuICAgIC8vICAgIGJ5dGUgMCAgICAgICAgYmxvY2sgdHlwZVxuICAgIHZhciBiMCA9IGRhdFtidF0sIGJ0eXBlID0gKGIwID4+IDEpICYgMztcbiAgICBzdC5sID0gYjAgJiAxO1xuICAgIHZhciBzeiA9IChiMCA+PiAzKSB8IChkYXRbYnQgKyAxXSA8PCA1KSB8IChkYXRbYnQgKyAyXSA8PCAxMyk7XG4gICAgLy8gZW5kIGJ5dGUgZm9yIGJsb2NrXG4gICAgdmFyIGVidCA9IChidCArPSAzKSArIHN6O1xuICAgIGlmIChidHlwZSA9PSAxKSB7XG4gICAgICAgIGlmIChidCA+PSBkYXQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdC5iID0gYnQgKyAxO1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBmaWxsKG91dCwgZGF0W2J0XSwgc3QueSwgc3QueSArPSBzeik7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxsKG5ldyB1OChzeiksIGRhdFtidF0pO1xuICAgIH1cbiAgICBpZiAoZWJ0ID4gZGF0Lmxlbmd0aClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChidHlwZSA9PSAwKSB7XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgICAgIHN0LnkgKz0gc3o7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09IDIpIHtcbiAgICAgICAgLy8gICAgYnl0ZSAzICAgICAgICBsaXQgYnR5cGUgICAgIHNpemUgZm9ybWF0XG4gICAgICAgIHZhciBiMyA9IGRhdFtidF0sIGxidCA9IGIzICYgMywgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgICAvLyBsaXQgc3JjIHNpemUgIGxpdCBjbXAgc3ogNCBzdHJlYW1zXG4gICAgICAgIHZhciBsc3MgPSBiMyA+PiA0LCBsY3MgPSAwLCBzNCA9IDA7XG4gICAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgICAgICBpZiAoc2YgJiAxKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChzZiAmIDIpICYmIChkYXRbKytidF0gPDwgMTIpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgPSBiMyA+PiAzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczQgPSBzZjtcbiAgICAgICAgICAgIGlmIChzZiA8IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9ICgoZGF0WysrYnRdICYgNjMpIDw8IDQpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMik7XG4gICAgICAgICAgICBlbHNlIGlmIChzZiA9PSAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiAzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDIpIHwgKGRhdFsrK2J0XSA8PCA2KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICAgICAgLy8gYWRkIGxpdGVyYWxzIHRvIGVuZCAtIGNhbiBuZXZlciBvdmVybGFwIHdpdGggYmFja3JlZmVyZW5jZXMgYmVjYXVzZSB1bnVzZWQgbGl0ZXJhbHMgYWx3YXlzIGFwcGVuZGVkXG4gICAgICAgIHZhciBidWYgPSBvdXQgPyBvdXQuc3ViYXJyYXkoc3QueSwgc3QueSArIHN0Lm0pIDogbmV3IHU4KHN0Lm0pO1xuICAgICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgICAgdmFyIHNwbCA9IGJ1Zi5sZW5ndGggLSBsc3M7XG4gICAgICAgIGlmIChsYnQgPT0gMClcbiAgICAgICAgICAgIGJ1Zi5zZXQoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsc3MpLCBzcGwpO1xuICAgICAgICBlbHNlIGlmIChsYnQgPT0gMSlcbiAgICAgICAgICAgIGZpbGwoYnVmLCBkYXRbYnQrK10sIHNwbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaHVmZm1hbiB0YWJsZVxuICAgICAgICAgICAgdmFyIGh1ID0gc3QuaDtcbiAgICAgICAgICAgIGlmIChsYnQgPT0gMikge1xuICAgICAgICAgICAgICAgIHZhciBodWQgPSByaHUoZGF0LCBidCk7XG4gICAgICAgICAgICAgICAgLy8gc3VidHJhY3QgZGVzY3JpcHRpb24gbGVuZ3RoXG4gICAgICAgICAgICAgICAgbGNzICs9IGJ0IC0gKGJ0ID0gaHVkWzBdKTtcbiAgICAgICAgICAgICAgICBzdC5oID0gaHUgPSBodWRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghaHUpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgKHM0ID8gZGh1NCA6IGRodSkoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsY3MpLCBidWYuc3ViYXJyYXkoc3BsKSwgaHUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgICAgdmFyIG5zID0gZGF0W2J0KytdO1xuICAgICAgICBpZiAobnMpIHtcbiAgICAgICAgICAgIGlmIChucyA9PSAyNTUpXG4gICAgICAgICAgICAgICAgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdGMDA7XG4gICAgICAgICAgICBlbHNlIGlmIChucyA+IDEyNylcbiAgICAgICAgICAgICAgICBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAgICAgLy8gc3ltYm9sIGNvbXByZXNzaW9uIG1vZGVzXG4gICAgICAgICAgICB2YXIgc2NtID0gZGF0W2J0KytdO1xuICAgICAgICAgICAgaWYgKHNjbSAmIDMpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAyOyBpID4gLTE7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBtZCA9IChzY20gPj4gKChpIDw8IDEpICsgMikpICYgMztcbiAgICAgICAgICAgICAgICBpZiAobWQgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBybGUgYnVmXG4gICAgICAgICAgICAgICAgICAgIHZhciByYnVmID0gbmV3IHU4KFswLCAwLCBkYXRbYnQrK11dKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgczogcmJ1Zi5zdWJhcnJheSgyLCAzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG46IHJidWYuc3ViYXJyYXkoMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGI6IDBcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY2N1cmFjeSBsb2cgOCBmb3Igb2Zmc2V0cywgOSBmb3Igb3RoZXJzXG4gICAgICAgICAgICAgICAgICAgIF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSksIGJ0ID0gX2FbMF0sIGR0c1tpXSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3QudClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0gc3QudFtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2IgPSBzdC50ID0gZHRzLCBtbHQgPSBfYlswXSwgb2N0ID0gX2JbMV0sIGxsdCA9IF9iWzJdO1xuICAgICAgICAgICAgdmFyIGxiID0gZGF0W2VidCAtIDFdO1xuICAgICAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLCBjYnQgPSBzcG9zID4+IDMsIG91YnQgPSAwO1xuICAgICAgICAgICAgdmFyIGxzdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9jdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG9zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvY3QuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG1zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGZvciAoKytuczsgLS1uczspIHtcbiAgICAgICAgICAgICAgICB2YXIgbGxjID0gbGx0LnNbbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbGJ0ciA9IGxsdC5uW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIG1sYyA9IG1sdC5zW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG1idHIgPSBtbHQublttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvZmMgPSBvY3Quc1tvc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvYnRyID0gb2N0Lm5bb3N0XTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvZmMpID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG9mcCA9IDEgPDwgb2ZjO1xuICAgICAgICAgICAgICAgIHZhciBvZmYgPSBvZnAgKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSB8IChkYXRbY2J0ICsgM10gPDwgMjQpKSA+Pj4gKHNwb3MgJiA3KSkgJiAob2ZwIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sYlttbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBtbCA9IG1sYmxbbWxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIGxsID0gbGxibFtsbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsYltsbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIGxzdCA9IGxsdC50W2xzdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxidHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbXN0ID0gbWx0LnRbbXN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICAgICAgICBvc3QgPSBvY3QudFtvc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBpZiAob2ZmID4gMykge1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmYgLT0gMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSBvZmYgLSAobGwgIT0gMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IGlkeCA9PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID4gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxsOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBsbCwgc3BsICs9IGxsO1xuICAgICAgICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IC1zdGluO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnMgPSBzdC5lICsgc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1sKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gbWw7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBzdC53W2JzICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3VidCArPSBsZW4sIG1sIC09IGxlbiwgc3RpbiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3N0aW4gKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBtbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdWJ0ICE9IHNwbCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzcGwgPCBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0KytdID0gYnVmW3NwbCsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3VidCA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgICAgICBpZiAob3V0KVxuICAgICAgICAgICAgICAgIHN0LnkgKz0gb3VidDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCAwLCBvdWJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICBzdC55ICs9IGxzcztcbiAgICAgICAgICAgICAgICBpZiAoc3BsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbHNzOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNwbClcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCBzcGwpO1xuICAgICAgICB9XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIHJldHVybiBidWY7XG4gICAgfVxuICAgIGVycigyKTtcbn07XG4vLyBjb25jYXRcbnZhciBjY3QgPSBmdW5jdGlvbiAoYnVmcywgb2wpIHtcbiAgICBpZiAoYnVmcy5sZW5ndGggPT0gMSlcbiAgICAgICAgcmV0dXJuIGJ1ZnNbMF07XG4gICAgdmFyIGJ1ZiA9IG5ldyB1OChvbCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnVmcy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgICAgYnVmLnNldChjaGssIGIpO1xuICAgICAgICBiICs9IGNoay5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG59O1xuLyoqXG4gKiBEZWNvbXByZXNzZXMgWnN0YW5kYXJkIGRhdGFcbiAqIEBwYXJhbSBkYXQgVGhlIGlucHV0IGRhdGFcbiAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICogICAgICAgICAgICBleGFjdGx5IGVub3VnaCBtZW1vcnkgdG8gZml0IHRoZSBkZWNvbXByZXNzZWQgZGF0YS4gSWYgeW91clxuICogICAgICAgICAgICBkYXRhIGhhcyBtdWx0aXBsZSBmcmFtZXMgYW5kIHlvdSBrbm93IHRoZSBvdXRwdXQgc2l6ZSwgc3BlY2lmeWluZ1xuICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvbXByZXNzZWQgZGF0YVxuICovXG5yZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsIGJ1ZnMgPSBbXSwgbmIgPSArIWJ1Ziwgb2wgPSAwO1xuICAgIGZvciAoOyBkYXQubGVuZ3RoOykge1xuICAgICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdCA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT0gc3QudSkge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmID0gc3Qudyk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IHN0LnU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKDsgIXN0Lmw7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgICAgICAgIGlmICghYmxrKVxuICAgICAgICAgICAgICAgICAgICBlcnIoNSk7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChibGspO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBibGsubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHN0Lncuc2V0KGJsaywgc3Qudy5sZW5ndGggLSBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidCA9IHN0LmIgKyAoc3QuYyAqIDQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ0ID0gc3Q7XG4gICAgICAgIGRhdCA9IGRhdC5zdWJhcnJheShidCk7XG4gICAgfVxuICAgIHJldHVybiBjY3QoYnVmcywgb2wpO1xufVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjJcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF96c3RkX2luaXRpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMS4xXG5mdW5jdGlvbiBjYW1sX3pzdGRfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcbiAgcmV0dXJuIDFcbn1cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2tleV9vZmZzZXQgPSAzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxudmFyIGNhbWxfZXBoZV9kYXRhX29mZnNldCA9IDJcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYgKHYgaW5zdGFuY2VvZiBPYmplY3QgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXS5yZWdpc3RlcikgeFsxXS5yZWdpc3Rlcih2LCB1bmRlZmluZWQsIHYpO1xuICAgIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IG5ldyBnbG9iYWxUaGlzLldlYWtSZWYodik7XG4gIH1cbiAgZWxzZSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4WzFdLnVucmVnaXN0ZXIpIHtcbiAgICB2YXIgb2xkID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldLmRlcmVmKCk7XG4gICAgaWYob2xkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBjb3VudCA9IDBcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpe1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpXG4gICAgICAgICAgaWYoa2V5ID09PSBvbGQpIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGNvdW50ID09IDEpIHhbMV0udW5yZWdpc3RlcihvbGQpO1xuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZSwgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY3JlYXRlIChuKSB7XG4gIHZhciB4ID0gY2FtbF93ZWFrX2NyZWF0ZShuKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9rZXksIGNhbWxfZXBoZV91bnNldF9rZXlcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZih2ID09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCxpKVxuICBlbHNlIGNhbWxfZXBoZV9zZXRfa2V5KHgsaSx2WzFdKVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICByZXR1cm4gKHdlYWs9PT11bmRlZmluZWQpPzA6WzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2NvcHlcIik7XG4gIHZhciB5ID0gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIGlmKHdlYWs9PT11bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfYmxpdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfa2V5KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfc2V0X2RhdGEsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgdmFyIG4gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgaWYobiA9PT0gdW5kZWZpbmVkKSBjYW1sX2VwaGVfdW5zZXRfZGF0YShkc3QpO1xuICBlbHNlIGNhbWxfZXBoZV9zZXRfZGF0YShkc3QsIG4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfZGF0YSh4LCBkYXRhKXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZighICh4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSkpIHtcbiAgICAgIHhbMV0gPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoKSB7IGNhbWxfZXBoZV91bnNldF9kYXRhKHgpIH0pO1xuICAgICAgLy9yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS5yZWdpc3RlcihrZXksIHVuZGVmaW5lZCwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9kYXRhKHgpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KXtcbiAgICAgIC8vdW5yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS51bnJlZ2lzdGVyKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCJcblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZnVsbF9tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19mdWxsX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbi8vVmVyc2lvbjogPj0gNC4xMlxuZnVuY3Rpb24gY2FtbF9nY19xdWlja19zdGF0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuLy9SZXF1aXJlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3N0YXQoKSB7XG4gIHJldHVybiBjYW1sX2djX3F1aWNrX3N0YXQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcbnZhciBhbGxfZmluYWxpemVycyA9IG5ldyBnbG9iYWxUaGlzLlNldCgpXG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIChjYiwgYSkge1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICB2YXIgeCA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICh4KXthbGxfZmluYWxpemVycy5kZWxldGUoeCk7IGNiKDApOyByZXR1cm47fSk7XG4gICAgeC5yZWdpc3RlcihhLHgpO1xuICAgIGFsbF9maW5hbGl6ZXJzLmFkZCh4KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWxlYXNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlbGVhc2UgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdGFydChyYXRlLHN0YWNrX3NpemUsdHJhY2tlcil7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RvcFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0b3AodW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX2Rpc2NhcmRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKHQpIHsgcmV0dXJuIDAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3BhdXNlXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3BhdXNlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XG5mdW5jdGlvbiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKHdvcmspIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY2FtbF9nY19taW5vcl93b3Jkcyh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21pbm9yX2ZyZWVcbmZ1bmN0aW9uIGNhbWxfZ2V0X21pbm9yX2ZyZWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChuKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2NyZWRpdFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfY3JlZGl0KG4pIHsgcmV0dXJuIDA7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRm9ybWF0XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZm9ybWF0IChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID1cbiAgICAgIHsganVzdGlmeTonKycsIHNpZ25zdHlsZTonLScsIGZpbGxlcjonICcsIGFsdGVybmF0ZTpmYWxzZSxcbiAgICAgICAgYmFzZTowLCBzaWduZWRjb252OmZhbHNlLCB3aWR0aDowLCB1cHBlcmNhc2U6ZmFsc2UsXG4gICAgICAgIHNpZ246MSwgcHJlYzotMSwgY29udjonZicgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gZm10LmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlICctJzpcbiAgICAgIGYuanVzdGlmeSA9ICctJzsgYnJlYWs7XG4gICAgY2FzZSAnKyc6IGNhc2UgJyAnOlxuICAgICAgZi5zaWduc3R5bGUgPSBjOyBicmVhaztcbiAgICBjYXNlICcwJzpcbiAgICAgIGYuZmlsbGVyID0gJzAnOyBicmVhaztcbiAgICBjYXNlICcjJzpcbiAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOlxuICAgIGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgZi53aWR0aCA9IDA7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYud2lkdGggPSBmLndpZHRoICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy4nOlxuICAgICAgZi5wcmVjID0gMDtcbiAgICAgIGkrKztcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi5wcmVjID0gZi5wcmVjICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICBjYXNlICdkJzogY2FzZSAnaSc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgJ3UnOlxuICAgICAgZi5iYXNlID0gMTA7IGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgZi5iYXNlID0gMTY7IGJyZWFrO1xuICAgIGNhc2UgJ1gnOlxuICAgICAgZi5iYXNlID0gMTY7IGYudXBwZXJjYXNlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnbyc6XG4gICAgICBmLmJhc2UgPSA4OyBicmVhaztcbiAgICBjYXNlICdlJzogY2FzZSAnZic6IGNhc2UgJ2cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi5jb252ID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnRSc6IGNhc2UgJ0YnOiBjYXNlICdHJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgIGYuY29udiA9IGMudG9Mb3dlckNhc2UgKCk7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCByYXdidWZmZXIpIHtcbiAgaWYgKGYudXBwZXJjYXNlKSByYXdidWZmZXIgPSByYXdidWZmZXIudG9VcHBlckNhc2UoKTtcbiAgdmFyIGxlbiA9IHJhd2J1ZmZlci5sZW5ndGg7XG4gIC8qIEFkanVzdCBsZW4gdG8gcmVmbGVjdCBhZGRpdGlvbmFsIGNoYXJzIChzaWduLCBldGMpICovXG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgKGYuc2lnbiA8IDAgfHwgZi5zaWduc3R5bGUgIT0gJy0nKSkgbGVuKys7XG4gIGlmIChmLmFsdGVybmF0ZSkge1xuICAgIGlmIChmLmJhc2UgPT0gOCkgbGVuICs9IDE7XG4gICAgaWYgKGYuYmFzZSA9PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcgJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICBpZiAoZi5zaWduZWRjb252KSB7XG4gICAgaWYgKGYuc2lnbiA8IDApIGJ1ZmZlciArPSAnLSc7XG4gICAgZWxzZSBpZiAoZi5zaWduc3R5bGUgIT0gJy0nKSBidWZmZXIgKz0gZi5zaWduc3R5bGU7XG4gIH1cbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSA4KSBidWZmZXIgKz0gJzAnO1xuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDE2KSBidWZmZXIgKz0gZi51cHBlcmNhc2U/XCIwWFwiOlwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlXG52YXIgY2FtbF9ncl9zdGF0ZTtcblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIk5vdCBpbml0aWFsaXplZFwiKV0pO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGluZm8gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhpbmZvKTtcbiAgZnVuY3Rpb24gZ2V0KG5hbWUpe1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiK25hbWUrXCIgKj0gKihbYS16QS1aMC05X10rKSAqKCx8JClcIik7XG4gICAgaWYocmVzKSByZXR1cm4gcmVzWzJdO1xuICB9XG4gIHZhciBzcGVjcyA9IFtdO1xuICBpZighKGluZm89PVwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZighdGFyZ2V0KSB0YXJnZXQ9XCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYoIXN0YXR1cykgc3BlY3MucHVzaChcInN0YXR1cz0xXCIpXG5cbiAgdmFyIHcgPSBnZXQoXCJ3aWR0aFwiKTtcbiAgdyA9IHc/cGFyc2VJbnQodyk6MjAwO1xuICBzcGVjcy5wdXNoKFwid2lkdGg9XCIrdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoP3BhcnNlSW50KGgpOjIwMDtcbiAgc3BlY3MucHVzaChcImhlaWdodD1cIitoKTtcblxuICB2YXIgd2luID0gZ2xvYmFsVGhpcy5vcGVuKFwiYWJvdXQ6YmxhbmtcIix0YXJnZXQsc3BlY3Muam9pbihcIixcIikpO1xuICBpZighd2luKSB7Y2FtbF9mYWlsd2l0aChcIkdyYXBoaWNzLm9wZW5fZ3JhcGg6IGNhbm5vdCBvcGVuIHRoZSB3aW5kb3dcIil9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKTtcbiAgY3R4LnNldF90aXRsZSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIGRvYy50aXRsZSA9IHRpdGxlO1xuICB9O1xuICBjYW1sX2dyX3N0YXRlX3NldChjdHgpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICBib2R5LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfaW5pdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfY29sb3IsY2FtbF9ncl9tb3ZldG8sY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoLGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSxjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpe1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsY2FtbF9ncl9zdGF0ZS55KTtcbiAgY2FtbF9ncl9yZXNpemVfd2luZG93KGNhbWxfZ3Jfc3RhdGUud2lkdGgsY2FtbF9ncl9zdGF0ZS5oZWlnaHQpO1xuICBjYW1sX2dyX3NldF9saW5lX3dpZHRoKGNhbWxfZ3Jfc3RhdGUubGluZV93aWR0aCk7XG4gIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShjYW1sX2dyX3N0YXRlLnRleHRfc2l6ZSk7XG4gIGNhbWxfZ3Jfc2V0X2ZvbnQoY2FtbF9ncl9zdGF0ZS5mb250KTtcbiAgY2FtbF9ncl9zZXRfY29sb3IoY2FtbF9ncl9zdGF0ZS5jb2xvcik7XG4gIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShjYW1sX2dyX3N0YXRlLnRpdGxlKTtcbiAgLy9jYW1sX2dyX3Jlc2l6ZV93aW5kb3cgbWlnaHQgcmVzZXQgc29tZSBjYW52YXMnIHByb3BlcnRpZXNcbiAgY2FtbF9ncl9zdGF0ZS5jb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCl7XG4gIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIGNhbnZhcyA6IGNhbnZhcyxcbiAgICB4IDogMCxcbiAgICB5IDogMCxcbiAgICB3aWR0aCA6IHcsXG4gICAgaGVpZ2h0IDogaCxcbiAgICBsaW5lX3dpZHRoIDogMSxcbiAgICBmb250IDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZSA6IDI2LFxuICAgIGNvbG9yIDogMHgwMDAwMDAsXG4gICAgdGl0bGUgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpXG4gIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZG9jX29mX3N0YXRlXG5mdW5jdGlvbiBjYW1sX2dyX2RvY19vZl9zdGF0ZShzdGF0ZSkge1xuICBpZihzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudClcbiAgICByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSAwO1xuICBzLmNhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShuYW1lKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRpdGxlID0gbmFtZTtcbiAgdmFyIGpzbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZihzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KClcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgcy5jYW52YXMud2lkdGggPSB3O1xuICBzLmNhbnZhcy5oZWlnaHQgPSBoO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbGVhcl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xlYXJfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gIHMuY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAvLyAgcy5jb250ZXh0LnN0cm9rZVJlY3QgKDAuLCAwLiwgcy53aWR0aCwgcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLndpZHRoO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmhlaWdodDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBmdW5jdGlvbiBjb252ZXJ0KG51bWJlcikge1xuICAgIHZhciBzdHIgPSAnJyArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSAnMCcgKyBzdHI7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICB2YXJcbiAgciA9IChjb2xvciA+PiAxNikgJiAweGZmLFxuICBnID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsXG4gIGIgPSAoY29sb3IgPj4gMCkgICYgMHhmZjtcbiAgcy5jb2xvcj1jb2xvcjtcbiAgdmFyIGNfc3RyID0gJyMnICsgY29udmVydChyKSArIGNvbnZlcnQoZykgKyBjb252ZXJ0KGIpO1xuICBzLmNvbnRleHQuZmlsbFN0eWxlID0gICBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICB2YXIgY29sb3IgPSBzLmNvbG9yO1xuICBkWzBdID0gKGNvbG9yID4+IDE2KSAmIDB4ZmY7IC8vclxuICBkWzFdID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsIC8vZ1xuICBkWzJdID0gKGNvbG9yID4+IDApICAmIDB4ZmY7IC8vYlxuICBkWzNdID0gMHhGRjsgLy9hXG4gIHMueD14O1xuICBzLnk9eTtcbiAgcy5jb250ZXh0LnB1dEltYWdlRGF0YShpbSx4LHMuaGVpZ2h0IC0geSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3BvaW50X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wb2ludF9jb2xvcih4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSB5LDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgcmV0dXJuIChkWzBdIDw8IDE2KSArIChkWzFdIDw8IDgpICsgZFsyXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbW92ZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tb3ZldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueFxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8ocy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LHMuaGVpZ2h0IC0geSk7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsY3gsY3kscnkscngsYTEsYTIpe1xuICB3aGlsZShhMT5hMikgYTIrPTM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLHhQb3MseVBvcyx4UG9zX3ByZXYseVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCtyeSkvMikpIC8gc3BhY2UpIHwgMDtcbiAgdmFyIGRlbHRhID0gKGEyIC0gYTEpICogTWF0aC5QSSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGo9MDtqPD1udW07aisrKXtcbiAgICB4UG9zID0gY3ggLSAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9IGN5ICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB5UG9zID0geVBvcy50b0ZpeGVkKDIpO1xuICAgIGlmIChqPT0wKSB7XG4gICAgICBjdHgubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgIH0gZWxzZSBpZiAoeFBvc19wcmV2IT14UG9zIHx8IHlQb3NfcHJldiE9eVBvcyl7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXY9eFBvcztcbiAgICB5UG9zX3ByZXY9eVBvcztcbiAgICBpLT0gZGVsdGE7Ly9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgodyl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5saW5lX3dpZHRoID0gdztcbiAgcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmZpbGxSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9wb2x5XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3BvbHkoYXIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yKHZhciBpID0gMjsgaSA8IGFyLmxlbmd0aDsgaSsrKVxuICAgIHMuY29udGV4dC5saW5lVG8oYXJbaV1bMV0scy5oZWlnaHQgLSBhcltpXVsyXSk7XG4gIHMuY29udGV4dC5saW5lVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIG0gPSBzLmNvbnRleHQubWVhc3VyZVRleHQoc3RyKTtcbiAgdmFyIGR4ID0gbS53aWR0aDtcbiAgcy5jb250ZXh0LmZpbGxUZXh0KHN0cixzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpe1xuICBjYW1sX2dyX2RyYXdfc3RyKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHJpbmcoc3RyKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzdHIpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfZm9udChmKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGV4dF9zaXplID0gc2l6ZTtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl90ZXh0X3NpemUodHh0KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgdyA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0eHQpKS53aWR0aDtcbiAgcmV0dXJuIFswLHcscy50ZXh0X3NpemVdO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbWFrZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbWFrZV9pbWFnZShhcnIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDEgO1xuICB2YXIgdyA9IGFyclsxXS5sZW5ndGggLSAxO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHcsaCk7XG4gIGZvcih2YXIgaT0wO2k8aDtpKyspe1xuICAgIGZvcih2YXIgaj0wO2o8dztqKyspe1xuICAgICAgdmFyIGMgPSBhcnJbaSsxXVtqKzFdO1xuICAgICAgdmFyIG8gPSBpKih3KjQpICsgKGogKiA0KTtcbiAgICAgIGlmKGMgPT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSBjID4+IDE2ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSBjID4+ICA4ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSBjID4+ICAwICYgMFhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAweGZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHVtcF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHVtcF9pbWFnZShpbSl7XG4gIHZhciBkYXRhID0gWzBdXG4gIGZvcih2YXIgaT0wOyBpPGltLmhlaWdodDtpKyspe1xuICAgIGRhdGFbaSsxXSA9IFswXVxuICAgIGZvcih2YXIgaj0wOyBqPGltLndpZHRoO2orKyl7XG4gICAgICB2YXIgbyA9IGkqKGltLndpZHRoKjQpICsgKGogKiA0KSxcbiAgICAgICAgICByID0gaW0uZGF0YVtvKzBdLFxuICAgICAgICAgIGcgPSBpbS5kYXRhW28rMV0sXG4gICAgICAgICAgYiA9IGltLmRhdGFbbysyXTtcbiAgICAgIGRhdGFbaSsxXVtqKzFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBpZighaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwwLDApO1xuICAgIHZhciBpbWFnZSA9IG5ldyBnbG9iYWxUaGlzLkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gICAgICBpbS5pbWFnZSA9IGltYWdlO1xuICAgIH1cbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuICB9IGVsc2Uge1xuICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW0uaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jcmVhdGVfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NyZWF0ZV9pbWFnZSh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgseSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2JsaXRfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2JsaXRfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0yID0gcy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSxpbS53aWR0aCxpbS5oZWlnaHQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSsxXSA9IGltMi5kYXRhW2krMV07XG4gICAgaW0uZGF0YVtpKzJdID0gaW0yLmRhdGFbaSsyXTtcbiAgICBpbS5kYXRhW2krM10gPSBpbTIuZGF0YVtpKzNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX3NpZ25hbCgpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl93YWl0X2V2ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dhaXRfZXZlbnQoX2V2bCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dhaXRfZXZlbnQgbm90IEltcGxlbWVudGVkOiB1c2UgR3JhcGhpY3NfanMgaW5zdGVhZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zeW5jaHJvbml6ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9zeW5jaHJvbml6ZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3N5bmNocm9uaXplIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVtZW1iZXJfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9yZW1lbWJlcl9tb2RlICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dpbmRvd19pZCBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3coYSxiLGMsZCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyhhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICAoZ2xvYmFsVGhpcy5uYXZpZ2F0b3ImJmdsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgICAgID9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGNvbnNvbGU7XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCB9IGNhdGNoIChlKSB7IH07XG4gIH1cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMi5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDMuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgfVxuICBjYW1sX2ZhaWx3aXRoKFwiQ2Fubm90IGNyZWF0ZSBhIFhNTEh0dHBSZXF1ZXN0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gZXhuLmpzX2Vycm9yOyB9XG4gIHJldHVybiBudWxsO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IGxleGluZy5jIDYwNDUgMjAwNC0wMS0wMSAxNjo0Mjo0M1ogZG9saWdleiAkICovXG5cbi8qIFRoZSB0YWJsZS1kcml2ZW4gYXV0b21hdG9uIGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXguICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICB2YXIgbCA9IHMubGVuZ3RoIC8gMjtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHJldHVybiAtYmFzZS0xO1xuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX21lbShzLCBpLCBtZW0sIGN1cnJfcG9zKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm47XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuIDtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV9jb2RlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrX2NvZGVdKTtcbiAgICB0YmwubGV4X2NoZWNrX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrX2NvZGVdKTtcbiAgICB0YmwubGV4X3RyYW5zX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zX2NvZGVdKTtcbiAgICB0YmwubGV4X2RlZmF1bHRfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbCkgdGJsLmxleF9jb2RlID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0YmxbbGV4X2NvZGVdKTtcblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICByZXR1cm4gLWJhc2UtMTtcbiAgICB9XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZSA7XG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBJZiBzb21lIHRyYW5zaXRpb24sIGdldCBhbmQgcGVyZm9ybSBtZW1vcnkgbW92ZXMgKi9cbiAgICAgIHZhciBiYXNlX2NvZGUgPSB0YmwubGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7XG4gICAgICBpZiAodGJsLmxleF9jaGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0ZSlcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF90cmFuc19jb2RlW2Jhc2VfY29kZSArIGNdO1xuICAgICAgZWxzZVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdO1xuICAgICAgaWYgKHBjX29mZiA+IDApXG4gICAgICAgIGNhbWxfbGV4X3J1bl9tZW1cbiAgICAgICh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9seG1fbmV4dFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uZXdfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2x4bV9uZXh0KHYpIHtcbiAgZnVuY3Rpb24gc2hpZnRfbCh4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnRfcih4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X29yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24geG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIGFkZChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9hZGQoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gcm90bCh4LCBrKSB7XG4gICAgcmV0dXJuIG9yKHNoaWZ0X2woeCxrKSxzaGlmdF9yICh4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGQxMzQyNTQzZGU4MmVmOTVcIikpO1xuICB2YXIgZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSk7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LDApO1xuICB2YXIgcyA9IGdldChzdCwxKTtcbiAgdmFyIHgwID0gZ2V0KHN0LDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsMyk7XG4gIC8qIENvbWJpbmluZyBvcGVyYXRpb24gKi9cbiAgeiA9IGFkZChzLCB4MCk7XG4gIC8qIE1peGluZyBmdW5jdGlvbiAqL1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSB4b3IoeixzaGlmdF9yKHosMzIpKTtcbiAgLyogTENHIHVwZGF0ZSAqL1xuICBzZXQoc3QsIDEsIGFkZCAobXVsKHMsTSksIGEpKTtcbiAgLyogWEJHIHVwZGF0ZSAqL1xuICB2YXIgcTAgPSB4MFxuICB2YXIgcTEgPSB4MVxuICBxMSA9IHhvcihxMSxxMCk7XG4gIHEwID0gcm90bChxMCwgMjQpO1xuICBxMCA9IHhvcih4b3IocTAsIHExKSwgKHNoaWZ0X2wocTEsMTYpKSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCIvL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG52YXIgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dCBcbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnJcbnZhciBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyXG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciwgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxuZnVuY3Rpb24gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0ICh2b3V0cHV0LCB2c3Rkb3V0LCB2c3RkZXJyKXtcbiAgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciA9IGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl07XG4gIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQgPSBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdO1xuICB2YXIgb3V0cHV0ID0gY2FtbF9tbF9jaGFubmVsc1t2b3V0cHV0XTtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XSA9IG91dHB1dDtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXSA9IG91dHB1dDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0XG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyLCBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG5mdW5jdGlvbiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdCAodnN0ZG91dCwgdnN0ZGVycil7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF0gPSBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0O1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdID0gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVycjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkKGNoYW4pe1xuICB2YXIgaW5mbyA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbl07XG4gIHJldHVybiBpbmZvLm9mZnNldFxufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZXJfdHJhY2VcbnZhciBjYW1sX3BhcnNlcl90cmFjZSA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheSwgY2FtbF9wYXJzZXJfdHJhY2UsY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuXG4gIGZ1bmN0aW9uIGxvZyh4KSB7XG4gICAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHggKyBcIlxcblwiKTtcbiAgICBjYW1sX21sX291dHB1dCgyLCBzLCAwLCBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5fbmFtZShuYW1lcywgbnVtYmVyKVxuICB7XG4gICAgdmFyIHN0ciA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWVzKTtcbiAgICBpZiAoc3RyWzBdID09ICdcXHgwMCcpXG4gICAgICByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCdcXHgwMCcpW251bWJlcl07XG4gIH1cblxuICBmdW5jdGlvbiBwcmludF90b2tlbihzdGF0ZSwgdG9rKVxuICB7XG4gICAgdmFyIHRva2VuLCBraW5kO1xuICAgIGlmICh0b2sgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJudW1iZXJcIilcbiAgICAgICAga2luZCA9IFwiXCIgKyB0b2tbMV07XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdG9rWzFdID09IFwic3RyaW5nXCIpXG4gICAgICAgIGtpbmQgPSB0b2tbMV1cbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpXG4gICAgICAgIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSlcbiAgICAgIGVsc2VcbiAgICAgICAga2luZCA9IFwiX1wiXG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbiArIFwiKFwiICsga2luZCArIFwiKVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfY29uc3RdLCB0b2spO1xuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBuZXh0OnN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBwcmludF90b2tlbiAoc3RhdGUsIGFyZyk7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJSZWNvdmVyaW5nIGluIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrIG5leHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgICBsb2coXCJObyBtb3JlIHN0YXRlcyB0byBkaXNjYXJkXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApXG4gICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SOyAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgbGFzdCB0b2tlbiByZWFkXCIpO1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHNoaWZ0IHRvIHN0YXRlIFwiICsgdGFibGVzLnRhYmxlW24yXSk7XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1xuZnVuY3Rpb24gY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2soeCl7XG4gIHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7XG59XG5cbiIsIi8vUHJvdmlkZXM6IGpzX3BlcmZvcm1hbmNlXG52YXIganNfcGVyZm9ybWFuY2UgPSB7bWFyazogKGZ1bmN0aW9uICgpIHt9KSwgbWVhc3VyZTogKGZ1bmN0aW9uICgpIHt9KSB9O1xuaWYgKHR5cGVvZiBqb29fZ2xvYmFsX29iamVjdC5wZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBqc19wZXJmb3JtYW5jZSA9IGpvb19nbG9iYWxfb2JqZWN0LnBlcmZvcm1hbmNlO1xufSBlbHNlIHtcbiAgdHJ5IHtcbiAgICB2YXIgcGVyZl9ob29rcyA9IHJlcXVpcmUoJ3BlcmZfaG9va3MnKTtcbiAgICBqc19wZXJmb3JtYW5jZSA9IHBlcmZfaG9va3MucGVyZm9ybWFuY2U7XG4gICAgam9vX2dsb2JhbF9vYmplY3QuUGVyZm9ybWFuY2VPYnNlcnZlciA9IHBlcmZfaG9va3MuUGVyZm9ybWFuY2VPYnNlcnZlcjtcbiAgfSBjYXRjaCAoX2UpIHtcbiAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oXCJjb3VsZG4ndCBsb2FkIHBlcmZvcm1hbmNlIGhvb2tzXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfbWFya1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9tYXJrKG5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5tYXJrKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9tZWFzdXJlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX21lYXN1cmUobmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLm1lYXN1cmUoXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoc3RhcnQpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoZW5kKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX2NsZWFyX21hcmtzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX2NsZWFyX21hcmtzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLmNsZWFyTWFya3MoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuIiwiLy8vLy8vLy8vIFRJTUVfTk9XXG5cbi8vUHJvdmlkZXM6IHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbnZhciBtc190b19uYW5vID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxMDAwKjEwMDApO1xuZnVuY3Rpb24gdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvKCl7XG4gICAgdmFyIG1zID0gRGF0ZS5ub3coKTtcbiAgICAvLyBtdWx0aXBsZSBieSB0d28gLSBpbnQ2MyBpbnRlZ2VycyBhcmUgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgIHZhciBtc19pNjMgPSBjYW1sX2ludDY0X29mX2Zsb2F0KG1zKjIpO1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChtc19pNjMsbXNfdG9fbmFubyk7XG59XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcblxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxubGV0IGxub3QgeCA9IHggbHhvciAoLTEpXG5cbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcblxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5cbigqIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IGluZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5lZ19pbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHhGRl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuYW4gPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjhfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgbWF4X2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0VGX0ZGX0ZGX0ZGX0ZGX0ZGX0ZGTFxubGV0IG1pbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgwMF8xMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBlcHNpbG9uX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDNDX0IwXzAwXzAwXzAwXzAwXzAwXzAwTFxuXG50eXBlIGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuKCogU3RyaW5nIGFuZCBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGVzIFN0cmluZyBhbmQgQnl0ZXMgKilcblxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2xlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19jcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHN0cmluZ19ibGl0IDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgKCBeICkgczEgczIgPVxuICBsZXQgbDEgPSBzdHJpbmdfbGVuZ3RoIHMxIGFuZCBsMiA9IHN0cmluZ19sZW5ndGggczIgaW5cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgKGwxICsgbDIpIGluXG4gIHN0cmluZ19ibGl0IHMxIDAgcyAwIGwxO1xuICBzdHJpbmdfYmxpdCBzMiAwIHMgbDEgbDI7XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBDaGFyICopXG5cbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hhcl9vZl9pbnQgOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiY2hhcl9vZl9pbnRcIiBlbHNlIHVuc2FmZV9jaGFyX29mX2ludCBuXG5cbigqIFVuaXQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogUGFpciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5cbigqIFJlZmVyZW5jZXMgKilcblxudHlwZSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG5cbigqIFJlc3VsdCB0eXBlICopXG5cbnR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbigqIFN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbmxldCBzdHJpbmdfb2ZfYm9vbCBiID1cbiAgaWYgYiB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiYm9vbF9vZl9zdHJpbmdcIlxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiBTb21lIHRydWVcbiAgfCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc3RyaW5nX29mX2ludCBuID1cbiAgZm9ybWF0X2ludCBcIiVkXCIgblxuXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgc3RyaW5nX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5cbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBzdHJpbmdfbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbCB0aGVuIHMgXiBcIi5cIiBlbHNlXG4gICAgbWF0Y2ggc3RyaW5nX2dldCBzIGkgd2l0aFxuICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICB8IF8gLT4gc1xuICBpblxuICBsb29wIDBcblxubGV0IHN0cmluZ19vZl9mbG9hdCBmID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgZilcblxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgTGlzdCAqKVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyAoIEAgKSBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgfCBbXSAtPiBsMlxuICB8IGgxIDo6IFtdIC0+IGgxIDo6IGwyXG4gIHwgaDEgOjogaDIgOjogW10gLT4gaDEgOjogaDIgOjogbDJcbiAgfCBoMSA6OiBoMiA6OiBoMyA6OiB0bCAtPiBoMSA6OiBoMiA6OiBoMyA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbigqIGZvciBhdF9leGl0ICopXG50eXBlICdhIGF0b21pY190XG5leHRlcm5hbCBhdG9taWNfbWFrZSA6ICdhIC0+ICdhIGF0b21pY190ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgYXRvbWljX2dldCA6ICdhIGF0b21pY190IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgYXRvbWljX2NvbXBhcmVfYW5kX3NldCA6ICdhIGF0b21pY190IC0+ICdhIC0+ICdhIC0+IGJvb2xcbiAgPSBcIiVhdG9taWNfY2FzXCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBhdG9taWNfbWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IGF0b21pY19tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgYXRvbWljX2NvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gYXRvbWljX2NvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19kb21haW5fbG9jYWxfYXRfZXhpdCA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gICghZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQpICgpO1xuICAoYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgICAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgICA9IENvbXBsZXhcbm1vZHVsZSBDb25kaXRpb24gICAgICA9IENvbmRpdGlvblxubW9kdWxlIERpZ2VzdCAgICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRG9tYWluICAgICAgICAgPSBEb21haW5cbm1vZHVsZSBEeW5hcnJheSAgICAgICA9IER5bmFycmF5XG5tb2R1bGUgRWZmZWN0ICAgICAgICAgPSBFZmZlY3Rcbm1vZHVsZSBFaXRoZXIgICAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgICAgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ICAgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICAgID0gRnVuXG5tb2R1bGUgR2MgICAgICAgICAgICAgPSBHY1xubW9kdWxlIEhhc2h0YmwgICAgICAgID0gSGFzaHRibFxubW9kdWxlIEluX2NoYW5uZWwgICAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTXV0ZXggICAgICAgICAgPSBNdXRleFxubW9kdWxlIE5hdGl2ZWludCAgICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFyc2luZyAgICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUHJpbnRleGMgICAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBTY2FuZiAgICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VtYXBob3JlICAgICAgPSBTZW1hcGhvcmVcbm1vZHVsZSBTZXEgICAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyaW5nICAgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgICA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICAgID0gU3lzXG5tb2R1bGUgVHlwZSAgICAgICAgICAgPSBUeXBlXG5tb2R1bGUgVWNoYXIgICAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICAgID0gV2Vha1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCogQGNvbmZpZ3VyZV9pbnB1dEAgKilcbiMzIFwic3lzLm1sLmluXCJcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG4oKiBTeXN0ZW0gaW50ZXJmYWNlICopXG5cbmV4dGVybmFsIGdldF9jb25maWc6IHVuaXQgLT4gc3RyaW5nICogaW50ICogYm9vbCA9IFwiY2FtbF9zeXNfZ2V0X2NvbmZpZ1wiXG5leHRlcm5hbCBnZXRfZXhlY3V0YWJsZV9uYW1lIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZVwiXG5leHRlcm5hbCBhcmd2IDogc3RyaW5nIGFycmF5ID0gXCIlc3lzX2FyZ3ZcIlxuZXh0ZXJuYWwgYmlnX2VuZGlhbiA6IHVuaXQgLT4gYm9vbCA9IFwiJWJpZ19lbmRpYW5cIlxuZXh0ZXJuYWwgd29yZF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiV3b3JkX3NpemVcIlxuZXh0ZXJuYWwgaW50X3NpemUgOiB1bml0IC0+IGludCA9IFwiJWludF9zaXplXCJcbmV4dGVybmFsIG1heF93b3NpemUgOiB1bml0IC0+IGludCA9IFwiJW1heF93b3NpemVcIlxuZXh0ZXJuYWwgdW5peCA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV91bml4XCJcbmV4dGVybmFsIHdpbjMyIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3dpbjMyXCJcbmV4dGVybmFsIGN5Z3dpbiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV9jeWd3aW5cIlxuZXh0ZXJuYWwgZ2V0X2JhY2tlbmRfdHlwZSA6IHVuaXQgLT4gYmFja2VuZF90eXBlID0gXCIlYmFja2VuZF90eXBlXCJcblxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGdldF9leGVjdXRhYmxlX25hbWUoKVxubGV0IChvc190eXBlLCBfLCBfKSA9IGdldF9jb25maWcoKVxubGV0IGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKClcbmxldCBiaWdfZW5kaWFuID0gYmlnX2VuZGlhbiAoKVxubGV0IHdvcmRfc2l6ZSA9IHdvcmRfc2l6ZSAoKVxubGV0IGludF9zaXplID0gaW50X3NpemUgKClcbmxldCB1bml4ID0gdW5peCAoKVxubGV0IHdpbjMyID0gd2luMzIgKClcbmxldCBjeWd3aW4gPSBjeWd3aW4gKClcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gbWF4X3dvc2l6ZSAoKVxubGV0IG1heF9mbG9hdGFycmF5X2xlbmd0aCA9IG1heF9hcnJheV9sZW5ndGggLyAoNjQgLyB3b3JkX3NpemUpXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDFcbmV4dGVybmFsIHJ1bnRpbWVfdmFyaWFudCA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfdmFyaWFudFwiXG5leHRlcm5hbCBydW50aW1lX3BhcmFtZXRlcnMgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcIlxuXG5leHRlcm5hbCBmaWxlX2V4aXN0czogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2ZpbGVfZXhpc3RzXCJcbmV4dGVybmFsIGlzX2RpcmVjdG9yeSA6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19pc19kaXJlY3RvcnlcIlxuZXh0ZXJuYWwgaXNfcmVndWxhcl9maWxlIDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVwiXG5leHRlcm5hbCByZW1vdmU6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW1vdmVcIlxuZXh0ZXJuYWwgcmVuYW1lIDogc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW5hbWVcIlxuZXh0ZXJuYWwgZ2V0ZW52OiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19nZXRlbnZcIlxuXG5sZXQgZ2V0ZW52X29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAoZ2V0ZW52IHMpXG4gIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuZXh0ZXJuYWwgY29tbWFuZDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcIlxuZXh0ZXJuYWwgdGltZTogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfc3lzX3RpbWVcIiBcImNhbWxfc3lzX3RpbWVfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjaGRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX2NoZGlyXCJcbmV4dGVybmFsIG1rZGlyOiBzdHJpbmcgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX21rZGlyXCJcbmV4dGVybmFsIHJtZGlyOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcm1kaXJcIlxuZXh0ZXJuYWwgZ2V0Y3dkOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0Y3dkXCJcbmV4dGVybmFsIHJlYWRkaXIgOiBzdHJpbmcgLT4gc3RyaW5nIGFycmF5ID0gXCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVwiXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoaW50IC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IGludCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcblxuZXhjZXB0aW9uIEJyZWFrXG5cbmxldCBjYXRjaF9icmVhayBvbiA9XG4gIGlmIG9uIHRoZW5cbiAgICBzZXRfc2lnbmFsIHNpZ2ludCAoU2lnbmFsX2hhbmRsZShmdW4gXyAtPiByYWlzZSBCcmVhaykpXG4gIGVsc2VcbiAgICBzZXRfc2lnbmFsIHNpZ2ludCBTaWduYWxfZGVmYXVsdFxuXG5cbmV4dGVybmFsIGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzOiBib29sIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcIlxuZXh0ZXJuYWwgcnVudGltZV93YXJuaW5nc19lbmFibGVkOiB1bml0IC0+IGJvb2wgPVxuICBcImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXCJcblxuKCogVGhlIHZlcnNpb24gc3RyaW5nIGlzIGZvdW5kIGluIGZpbGUgLi4vVkVSU0lPTiAqKVxuXG5sZXQgb2NhbWxfdmVyc2lvbiA9IFwiQFZFUlNJT05AXCJcblxubGV0IGRldmVsb3BtZW50X3ZlcnNpb24gPSBAT0NBTUxfREVWRUxPUE1FTlRfVkVSU0lPTkBcblxudHlwZSBleHRyYV9wcmVmaXggPSBQbHVzIHwgVGlsZGVcblxudHlwZSBleHRyYV9pbmZvID0gZXh0cmFfcHJlZml4ICogc3RyaW5nXG5cbnR5cGUgb2NhbWxfcmVsZWFzZV9pbmZvID0ge1xuICBtYWpvciA6IGludDtcbiAgbWlub3IgOiBpbnQ7XG4gIHBhdGNobGV2ZWwgOiBpbnQ7XG4gIGV4dHJhIDogZXh0cmFfaW5mbyBvcHRpb25cbn1cblxubGV0IG9jYW1sX3JlbGVhc2UgPSB7XG4gIG1ham9yID0gQE9DQU1MX1ZFUlNJT05fTUFKT1JAO1xuICBtaW5vciA9IEBPQ0FNTF9WRVJTSU9OX01JTk9SQDtcbiAgcGF0Y2hsZXZlbCA9IEBPQ0FNTF9WRVJTSU9OX1BBVENITEVWRUxAO1xuICBleHRyYSA9IEBPQ0FNTF9SRUxFQVNFX0VYVFJBQFxufVxuXG4oKiBPcHRpbWl6YXRpb24gKilcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogJ2EgLT4gJ2EgPSBcIiVvcGFxdWVcIlxuXG5tb2R1bGUgSW1tZWRpYXRlNjQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UoSW1tZWRpYXRlIDogSW1tZWRpYXRlKShOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcbiAgICBleHRlcm5hbCBtYWdpYyA6IF8gcmVwciAtPiB0IHJlcHIgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IHJlcHIgPVxuICAgICAgaWYgd29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICBtYWdpYyBJbW1lZGlhdGVcbiAgICAgIGVsc2VcbiAgICAgICAgbWFnaWMgTm9uX2ltbWVkaWF0ZVxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdGFycmF5X2dldFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X3NldCA6XG4gICAgZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiY2FtbF9mbG9hdGFycmF5X3NldFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBkb3VibGVfZmllbGQgeCBpID0gZmxvYXRhcnJheV9nZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaVxubGV0IFtAaW5saW5lIGFsd2F5c10gc2V0X2RvdWJsZV9maWVsZCB4IGkgdiA9XG4gIGZsb2F0YXJyYXlfc2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGkgdlxuZXh0ZXJuYWwgcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgPSBcImNhbWxfb2JqX3Jhd19maWVsZFwiXG5leHRlcm5hbCBzZXRfcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfb2JqX3NldF9yYXdfZmllbGRcIlxuXG5leHRlcm5hbCBuZXdfYmxvY2sgOiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfb2JqX2Jsb2NrXCJcbmV4dGVybmFsIGR1cCA6IHQgLT4gdCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQzXG5cbmxldCBmb3JjaW5nX3RhZyA9IDI0NFxubGV0IGNvbnRfdGFnID0gMjQ1XG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCJcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFR5cGUgZXF1YWxpdHkgd2l0bmVzcyAqKVxuXG50eXBlIChfLCBfKSBlcSA9IEVxdWFsOiAoJ2EsICdhKSBlcVxuXG4oKiBUeXBlIGlkZW50aWZpZXJzICopXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICB0eXBlIF8gaWQgPSAuLlxuICBtb2R1bGUgdHlwZSBJRCA9IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgXyBpZCArPSBJZCA6IHQgaWRcbiAgZW5kXG5cbiAgdHlwZSAhJ2EgdCA9IChtb2R1bGUgSUQgd2l0aCB0eXBlIHQgPSAnYSlcblxuICBsZXQgbWFrZSAodHlwZSBhKSAoKSA6IGEgdCA9XG4gICAgKG1vZHVsZSBzdHJ1Y3QgdHlwZSB0ID0gYSB0eXBlIF8gaWQgKz0gSWQgOiB0IGlkIGVuZClcblxuICBsZXRbQGlubGluZV0gdWlkICh0eXBlIGEpICgobW9kdWxlIEEpIDogYSB0KSA9XG4gICAgT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgQS5JZClcblxuICBsZXQgcHJvdmFibHlfZXF1YWxcbiAgICAgICh0eXBlIGEgYikgKChtb2R1bGUgQSkgOiBhIHQpICgobW9kdWxlIEIpIDogYiB0KSA6IChhLCBiKSBlcSBvcHRpb25cbiAgICA9XG4gICAgbWF0Y2ggQS5JZCB3aXRoIEIuSWQgLT4gU29tZSBFcXVhbCB8IF8gLT4gTm9uZVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgbWFrZSA6ICdhIC0+ICdhIHQgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBtYWtlX2NvbnRlbmRlZCA6ICdhIC0+ICdhIHQgPSBcImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXCJcbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBleGNoYW5nZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgPSBcIiVhdG9taWNfZXhjaGFuZ2VcIlxuZXh0ZXJuYWwgY29tcGFyZV9hbmRfc2V0IDogJ2EgdCAtPiAnYSAtPiAnYSAtPiBib29sID0gXCIlYXRvbWljX2Nhc1wiXG5leHRlcm5hbCBmZXRjaF9hbmRfYWRkIDogaW50IHQgLT4gaW50IC0+IGludCA9IFwiJWF0b21pY19mZXRjaF9hZGRcIlxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbmxldCBzZXQgciB4ID0gaWdub3JlIChleGNoYW5nZSByIHgpXG5sZXQgaW5jciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgMSlcbmxldCBkZWNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAoLTEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBJbnRlcm5hbHMgb2YgZm9yY2luZyBsYXp5IHZhbHVlcy4gKilcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWRcblxuKCogW3VwZGF0ZV90b19mb3JjaW5nIGJsa10gdHJpZXMgdG8gdXBkYXRlIGEgW2Jsa10gd2l0aCBbbGF6eV90YWddIHRvXG4gICBbZm9yY2luZ190YWddIHVzaW5nIGNvbXBhcmUtYW5kLXN3YXAgKENBUyksIHRha2luZyBjYXJlIHRvIGhhbmRsZSBjb25jdXJyZW50XG4gICBtYXJraW5nIG9mIHRoZSBoZWFkZXIgd29yZCBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiBSZXR1cm5zIFswXSBpZiB0aGVcbiAgIENBUyBpcyBzdWNjZXNzZnVsLiBJZiB0aGUgQ0FTIGZhaWxzLCB0aGVuIHRoZSB0YWcgd2FzIG9ic2VydmVkIHRvIGJlXG4gICBzb21ldGhpbmcgb3RoZXIgdGhhbiBbbGF6eV90YWddIGR1ZSB0byBhIGNvbmN1cnJlbnQgbXV0YXRvci4gSW4gdGhpcyBjYXNlLFxuICAgdGhlIGZ1bmN0aW9uIHJldHVybnMgWzFdLiAqKVxuZXh0ZXJuYWwgdXBkYXRlX3RvX2ZvcmNpbmcgOiBPYmoudCAtPiBpbnQgPVxuICBcImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1wiIFtAQG5vYWxsb2NdXG5cbigqIFtyZXNldF90b19sYXp5IGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGggW09iai5mb3JjaW5nX3RhZ11cbiAgIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5sYXp5X3RhZ10sIHRha2luZyBjYXJlIHRvIGhhbmRsZSBjb25jdXJyZW50XG4gICBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuICopXG5leHRlcm5hbCByZXNldF90b19sYXp5IDogT2JqLnQgLT4gdW5pdCA9IFwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcIiBbQEBub2FsbG9jXVxuXG4oKiBbdXBkYXRlX3RvX2ZvcndhcmQgYmxrXSBleHBlY3RzIFtibGtdIHRvIGJlIGEgbGF6eSBvYmplY3Qgd2l0aFxuICAgW09iai5mb3JjaW5nX3RhZ10gYW5kIHVwZGF0ZXMgdGhlIHRhZyB0byBbT2JqLmZvcndhcmRfdGFnXSwgdGFraW5nIGNhcmUgdG9cbiAgIGhhbmRsZSBjb25jdXJyZW50IG1hcmtpbmcgb2YgdGhpcyBvYmplY3QncyBoZWFkZXIgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC5cbiAqKVxuZXh0ZXJuYWwgdXBkYXRlX3RvX2ZvcndhcmQgOiBPYmoudCAtPiB1bml0ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcIiBbQEBub2FsbG9jXVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX2Jsb2NrIGJsayA9XG4gIGxldCBiID0gT2JqLnJlcHIgYmxrIGluXG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCBiIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKCkpOyAoKiBSZWxlYXNlIHRoZSBjbG9zdXJlICopXG4gIHRyeVxuICAgIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gICAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIHJlc3VsdCk7XG4gICAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgICByZXN1bHRcbiAgd2l0aCBlIC0+XG4gICAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgZSkpO1xuICAgIHJlc2V0X3RvX2xhenkgYjtcbiAgICByYWlzZSBlXG5cbigqIEFzc3VtZXMgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBmb3JjaW5nICopXG5sZXQgZG9fZm9yY2VfdmFsX2Jsb2NrIGJsayA9XG4gIGxldCBiID0gT2JqLnJlcHIgYmxrIGluXG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCBiIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKCkpOyAoKiBSZWxlYXNlIHRoZSBjbG9zdXJlICopXG4gIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICB1cGRhdGVfdG9fZm9yd2FyZCBiO1xuICByZXN1bHRcblxuKCogQ2FsbGVkIGJ5IFtmb3JjZV9nZW5dICopXG5sZXQgZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBXZSBleHBlY3QgdGhlIHRhZyB0byBiZSBbbGF6eV90YWddLCBidXQgbWF5IGJlIG90aGVyIHRhZ3MgZHVlIHRvXG4gICAgIGNvbmN1cnJlbnQgZm9yY2luZyBvZiBsYXp5IHZhbHVlcy4gKilcbiAgbWF0Y2ggdXBkYXRlX3RvX2ZvcmNpbmcgKE9iai5yZXByIGJsaykgd2l0aFxuICB8IDAgd2hlbiBvbmx5X3ZhbCAtPiBkb19mb3JjZV92YWxfYmxvY2sgYmxrXG4gIHwgMCAtPiBkb19mb3JjZV9ibG9jayBibGtcbiAgfCBfIC0+IHJhaXNlIFVuZGVmaW5lZFxuXG4oKiB1c2VkIGluIHRoZSAlbGF6eV9mb3JjZSBwcmltaXRpdmUgKilcbmxldCBmb3JjZV9sYXp5X2Jsb2NrIGJsayA9IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbDpmYWxzZSBibGtcblxuKCogW2ZvcmNlX2dlbiB+b25seV92YWw6ZmFsc2VdIGlzIG5vdCB1c2VkLCBzaW5jZSBbTGF6eS5mb3JjZV0gaXNcbiAgIGRlY2xhcmVkIGFzIGEgcHJpbWl0aXZlIHdob3NlIGNvZGUgaW5saW5lcyB0aGUgdGFnIHRlc3RzIG9mIGl0c1xuICAgYXJndW1lbnQsIGV4Y2VwdCB3aGVuIGFmbCBpbnN0cnVtZW50YXRpb24gaXMgdHVybmVkIG9uLiAqKVxubGV0IGZvcmNlX2dlbiB+b25seV92YWwgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFVzaW5nIFtTeXMub3BhcXVlX2lkZW50aXR5XSBwcmV2ZW50cyB0d28gcG90ZW50aWFsIHByb2JsZW1zOlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLCB0aGVuIGl0IGNvdWxkIGhhdmUgYmVlblxuICAgICAgIHNob3J0Y3V0IGR1cmluZyBHQywgc28gdGhhdCBpbmZvcm1hdGlvbiBtdXN0IGJlIGZvcmdvdHRlbiAoc2VlIEdQUiM3MTNcbiAgICAgICBhbmQgaXNzdWUgIzczMDEpLiBUaGlzIGlzIG5vdCBhbiBpc3N1ZSBoZXJlIGF0IHRoZSBtb21lbnQgc2luY2VcbiAgICAgICBbT2JqLnRhZ10gaXMgbm90IHNpbXBsaWZpZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgR1BSIzcxMyBhbHNvXG4gICAgICAgZW5zdXJlcyB0aGF0IG5vIHZhbHVlIHdpbGwgYmUga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZy5cbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgaW1tdXRhYmxlLCB0aGVuIGlmIHRoZSBjb21waWxlclxuICAgICAgIGNhbm5vdCBwcm92ZSB0aGF0IHRoZSBsYXN0IGJyYW5jaCBpcyBub3QgdGFrZW4gaXQgd2lsbCBpc3N1ZSBhXG4gICAgICAgd2FybmluZyA1OSAobW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSB2YWx1ZSkgKilcbiAgbGV0IGx6diA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgbHp2IGluXG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gICgqIFNUQVJUIG5vIHNhZmUgcG9pbnRzLiBJZiBhIEdDIG9jY3VycyBoZXJlLCB0aGVuIHRoZSBvYmplY3QgW3hdIG1heSBiZVxuICAgICBzaG9ydC1jaXJjdWl0ZWQsIGFuZCBnZXR0aW5nIHRoZSBmaXJzdCBmaWVsZCBvZiBbeF0gd291bGQgZ2V0IHVzIHRoZSB3cm9uZ1xuICAgICB2YWx1ZS4gTHVja2lseSwgdGhlIGNvbXBpbGVyIGRvZXMgbm90IGluc2VydCBHQyBzYWZlIHBvaW50cyBhdCB0aGlzIHBsYWNlLFxuICAgICBzbyBpdCBpcyBvay4gKilcbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuXG4gICAgKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZylcbiAgKCogRU5EIG5vIHNhZmUgcG9pbnRzICopXG4gIGVsc2UgaWYgdCA9IE9iai5mb3JjaW5nX3RhZyB0aGVuIHJhaXNlIFVuZGVmaW5lZFxuICBlbHNlIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsIGx6dlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0xhenldOiBkZWZlcnJlZCBjb21wdXRhdGlvbnMgKilcblxuXG4oKlxuICAgV0FSTklORzogc29tZSBwdXJwbGUgbWFnaWMgaXMgZ29pbmcgb24gaGVyZS4gIERvIG5vdCB0YWtlIHRoaXMgZmlsZVxuICAgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBpbiBPQ2FtbC5cbiopXG5cblxuKCogV2UgbWFrZSB1c2Ugb2YgdHdvIHNwZWNpYWwgdGFncyBwcm92aWRlZCBieSB0aGUgcnVudGltZTpcbiAgIFtsYXp5X3RhZ10gYW5kIFtmb3J3YXJkX3RhZ10uXG5cbiAgIEEgdmFsdWUgb2YgdHlwZSBbJ2EgTGF6eS50XSBjYW4gYmUgb25lIG9mIHRocmVlIHRoaW5nczpcbiAgIDEuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtsYXp5X3RhZ10uICBJdHMgZmllbGQgaXMgYSBjbG9zdXJlIG9mXG4gICAgICB0eXBlIFt1bml0IC0+ICdhXSB0aGF0IGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgIDIuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtmb3J3YXJkX3RhZ10uICBJdHMgZmllbGQgaXMgdGhlIHZhbHVlXG4gICAgICBvZiB0eXBlIFsnYV0gdGhhdCB3YXMgY29tcHV0ZWQuXG4gICAzLiBBbnl0aGluZyBlbHNlIGV4Y2VwdCBhIGZsb2F0LiAgVGhpcyBoYXMgdHlwZSBbJ2FdIGFuZCBpcyB0aGUgdmFsdWVcbiAgICAgIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgRXhjZXB0aW9ucyBhcmUgc3RvcmVkIGluIGZvcm1hdCAoMSkuXG4gICBUaGUgR0Mgd2lsbCBtYWdpY2FsbHkgY2hhbmdlIHRoaW5ncyBmcm9tICgyKSB0byAoMykgYWNjb3JkaW5nIHRvIGl0c1xuICAgZmFuY3kuXG5cbiAgIElmIE9DYW1sIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIC1mbGF0LWZsb2F0LWFycmF5IG9wdGlvbiAod2hpY2ggaXNcbiAgIGN1cnJlbnRseSB0aGUgZGVmYXVsdCksIHRoZSBmb2xsb3dpbmcgaXMgYWxzbyB0cnVlOlxuICAgV2UgY2Fubm90IHVzZSByZXByZXNlbnRhdGlvbiAoMykgZm9yIGEgW2Zsb2F0IExhenkudF0gYmVjYXVzZVxuICAgW2NhbWxfbWFrZV9hcnJheV0gYXNzdW1lcyB0aGF0IG9ubHkgYSBbZmxvYXRdIHZhbHVlIGNhbiBoYXZlIHRhZ1xuICAgW0RvdWJsZV90YWddLlxuXG4gICBXZSBoYXZlIHRvIHVzZSB0aGUgYnVpbHQtaW4gdHlwZSBjb25zdHJ1Y3RvciBbbGF6eV90XSB0b1xuICAgbGV0IHRoZSBjb21waWxlciBpbXBsZW1lbnQgdGhlIHNwZWNpYWwgdHlwaW5nIGFuZCBjb21waWxhdGlvblxuICAgcnVsZXMgZm9yIHRoZSBbbGF6eV0ga2V5d29yZC5cbiopXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWxpbnRlcm5hbExhenkudFxuXG5leGNlcHRpb24gVW5kZWZpbmVkID0gQ2FtbGludGVybmFsTGF6eS5VbmRlZmluZWRcbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6ICdhIC0+ICdhIGxhenlfdCA9IFwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZFwiXG5leHRlcm5hbCBmb3JjZSA6ICdhIHQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxubGV0IGZvcmNlX3ZhbCBsID0gQ2FtbGludGVybmFsTGF6eS5mb3JjZV9nZW4gfm9ubHlfdmFsOnRydWUgbFxuXG5sZXQgZnJvbV9mdW4gKGYgOiB1bml0IC0+ICdhcmcpID1cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5sYXp5X3RhZyAxIGluXG4gIE9iai5zZXRfZmllbGQgeCAwIChPYmoucmVwciBmKTtcbiAgKE9iai5vYmogeCA6ICdhcmcgdClcblxubGV0IGZyb21fdmFsICh2IDogJ2FyZykgPVxuICBsZXQgdCA9IE9iai50YWcgKE9iai5yZXByIHYpIGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgfHwgdCA9IE9iai5sYXp5X3RhZyB8fFxuICAgICB0ID0gT2JqLmZvcmNpbmdfdGFnIHx8IHQgPSBPYmouZG91YmxlX3RhZyB0aGVuIGJlZ2luXG4gICAgbWFrZV9mb3J3YXJkIHZcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICAoT2JqLm1hZ2ljIHYgOiAnYXJnIHQpXG4gIGVuZFxuXG5sZXQgaXNfdmFsIChsIDogJ2FyZyB0KSA9IE9iai50YWcgKE9iai5yZXByIGwpIDw+IE9iai5sYXp5X3RhZ1xuXG5sZXQgbWFwIGYgeCA9XG4gIGxhenkgKGYgKGZvcmNlIHgpKVxuXG5sZXQgbWFwX3ZhbCBmIHggPVxuICBpZiBpc192YWwgeFxuICB0aGVuIGZyb21fdmFsIChmIChmb3JjZSB4KSlcbiAgZWxzZSBsYXp5IChmIChmb3JjZSB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCByZWMgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIG1hdGNoIHNlcTEoKSB3aXRoXG4gIHwgTmlsIC0+IHNlcTIoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zIChmIHgsIG1hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgICB8IFNvbWUgeSAtPiBDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXIgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBpZiBmIHhcbiAgICAgIHRoZW4gQ29ucyAoeCwgZmlsdGVyIGYgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBmb2xkX2xlZnQgZiBhY2MgbmV4dFxuXG5sZXQgcmVjIGl0ZXIgZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGl0ZXIgZiBuZXh0XG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG5cbmxldCBpc19lbXB0eSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKF8sIF8pIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgdW5jb25zIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBTb21lICh4LCB4cylcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcblxuXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBhY2N1IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZW5ndGhfYXV4IChhY2N1ICsgMSkgeHNcblxubGV0W0BpbmxpbmVdIGxlbmd0aCB4cyA9XG4gIGxlbmd0aF9hdXggMCB4c1xuXG5sZXQgcmVjIGl0ZXJpX2F1eCBmIGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBmIGkgeDtcbiAgICAgIGl0ZXJpX2F1eCBmIChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBpdGVyaSBmIHhzID1cbiAgaXRlcmlfYXV4IGYgMCB4c1xuXG5sZXQgcmVjIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBpIHggaW5cbiAgICAgIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gZm9sZF9sZWZ0aSBmIGFjY3UgeHMgPVxuICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgMCB4c1xuXG5sZXQgcmVjIGZvcl9hbGwgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4ICYmIGZvcl9hbGwgcCB4c1xuXG5sZXQgcmVjIGV4aXN0cyBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4IHx8IGV4aXN0cyBwIHhzXG5cbmxldCByZWMgZmluZCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kIHAgeHNcblxubGV0IGZpbmRfaW5kZXggcCB4cyA9XG4gIGxldCByZWMgYXV4IGkgeHMgPSBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgaWYgcCB4IHRoZW4gU29tZSBpIGVsc2UgYXV4IChpKzEpIHhzIGluXG4gIGF1eCAwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG5sZXQgZmluZF9tYXBpIGYgeHMgPVxuICBsZXQgcmVjIGF1eCBpIHhzID0gbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBhdXggKGkrMSkgeHNcbiAgICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgICByZXN1bHQgaW5cbiAgYXV4IDAgeHNcblxuKCogW2l0ZXIyXSwgW2ZvbGRfbGVmdDJdLCBbZm9yX2FsbDJdLCBbZXhpc3RzMl0sIFttYXAyXSwgW3ppcF0gd29yayBhbHNvIGluXG4gICB0aGUgY2FzZSB3aGVyZSB0aGUgdHdvIHNlcXVlbmNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzLiBUaGV5IHN0b3AgYXMgc29vblxuICAgYXMgb25lIHNlcXVlbmNlIGlzIGV4aGF1c3RlZC4gVGhlaXIgYmVoYXZpb3IgaXMgc2xpZ2h0bHkgYXN5bW1ldHJpYzogd2hlblxuICAgW3hzXSBpcyBlbXB0eSwgdGhleSBkbyBub3QgZm9yY2UgW3lzXTsgaG93ZXZlciwgd2hlbiBbeXNdIGlzIGVtcHR5LCBbeHNdIGlzXG4gICBmb3JjZWQsIGV2ZW4gdGhvdWdoIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGFwcGxpY2F0aW9uIFt4cygpXSB0dXJucyBvdXRcbiAgIHRvIGJlIHVzZWxlc3MuICopXG5cbmxldCByZWMgaXRlcjIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeTtcbiAgICAgICAgICBpdGVyMiBmIHhzIHlzXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBhY2N1XG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGxldCBhY2N1ID0gZiBhY2N1IHggeSBpblxuICAgICAgICAgIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzXG5cbmxldCByZWMgZm9yX2FsbDIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgJiYgZm9yX2FsbDIgZiB4cyB5c1xuXG5sZXQgcmVjIGV4aXN0czIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSB8fCBleGlzdHMyIGYgeHMgeXNcblxubGV0IHJlYyBlcXVhbCBlcSB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGVxIHggeSAmJiBlcXVhbCBlcSB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXylcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIDBcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgbGV0IGMgPSBjbXAgeCB5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY29tcGFyZSBjbXAgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pIC0+XG4gICAgICAtMVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgICsxXG5cblxuXG4oKiBbaW5pdF9hdXggZiBpIGpdIGlzIHRoZSBzZXF1ZW5jZSBbZiBpLCAuLi4sIGYgKGotMSldLiAqKVxuXG5sZXQgcmVjIGluaXRfYXV4IGYgaSBqICgpID1cbiAgaWYgaSA8IGogdGhlbiBiZWdpblxuICAgIENvbnMgKGYgaSwgaW5pdF9hdXggZiAoaSArIDEpIGopXG4gIGVuZFxuICBlbHNlXG4gICAgTmlsXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlNlcS5pbml0XCJcbiAgZWxzZVxuICAgIGluaXRfYXV4IGYgMCBuXG5cbmxldCByZWMgcmVwZWF0IHggKCkgPVxuICBDb25zICh4LCByZXBlYXQgeClcblxubGV0IHJlYyBmb3JldmVyIGYgKCkgPVxuICBDb25zIChmKCksIGZvcmV2ZXIgZilcblxuKCogVGhpcyBwcmVsaW1pbmFyeSBkZWZpbml0aW9uIG9mIFtjeWNsZV0gcmVxdWlyZXMgdGhlIHNlcXVlbmNlIFt4c11cbiAgIHRvIGJlIG5vbmVtcHR5LiBBcHBseWluZyBpdCB0byBhbiBlbXB0eSBzZXF1ZW5jZSB3b3VsZCBwcm9kdWNlIGFcbiAgIHNlcXVlbmNlIHRoYXQgZGl2ZXJnZXMgd2hlbiBpdCBpcyBmb3JjZWQuICopXG5cbmxldCByZWMgY3ljbGVfbm9uZW1wdHkgeHMgKCkgPVxuICBhcHBlbmQgeHMgKGN5Y2xlX25vbmVtcHR5IHhzKSAoKVxuXG4oKiBbY3ljbGUgeHNdIGNoZWNrcyB3aGV0aGVyIFt4c10gaXMgZW1wdHkgYW5kLCBpZiBzbywgcmV0dXJucyBhbiBlbXB0eVxuICAgc2VxdWVuY2UuIE90aGVyd2lzZSwgW2N5Y2xlIHhzXSBwcm9kdWNlcyBvbmUgY29weSBvZiBbeHNdIGZvbGxvd2VkXG4gICB3aXRoIHRoZSBpbmZpbml0ZSBzZXF1ZW5jZSBbY3ljbGVfbm9uZW1wdHkgeHNdLiBUaHVzLCB0aGUgbm9uZW1wdGluZXNzXG4gICBjaGVjayBpcyBwZXJmb3JtZWQganVzdCBvbmNlLiAqKVxuXG5sZXQgY3ljbGUgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzJykgLT5cbiAgICAgIENvbnMgKHgsIGFwcGVuZCB4cycgKGN5Y2xlX25vbmVtcHR5IHhzKSlcblxuKCogW2l0ZXJhdGUxIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFtmIHgsIGYgKGYgeCksIC4uLl0uXG4gICBJdCBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChpdGVyYXRlIGYgeCldLlxuICAgW2l0ZXJhdGUxXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIGl0ZXJhdGUxIGYgeCAoKSA9XG4gIGxldCB5ID0gZiB4IGluXG4gIENvbnMgKHksIGl0ZXJhdGUxIGYgeSlcblxuKCogW2l0ZXJhdGUgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW3gsIGYgeCwgLi4uXS4gKilcblxuKCogVGhlIHJlYXNvbiB3aHkgd2UgZ2l2ZSB0aGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLFxuICAgYXMgb3Bwb3NlZCB0byB0aGUgbW9yZSBuYWl2ZSBkZWZpbml0aW9uIHRoYXQgbWF5IGNvbWUgdG8gbWluZCwgaXMgdGhhdFxuICAgd2UgYXJlIGNhcmVmdWwgdG8gYXZvaWQgZXZhbHVhdGluZyBbZiB4XSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGNhbGwgaXNcbiAgIGFjdHVhbGx5IG5lY2Vzc2FyeS4gVGhlIG5haXZlIGRlZmluaXRpb24gKG5vdCBzaG93biBoZXJlKSBjb21wdXRlcyB0aGVcbiAgIHNlY29uZCBhcmd1bWVudCBvZiB0aGUgc2VxdWVuY2UsIFtmIHhdLCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpc1xuICAgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLiAqKVxuXG5sZXQgaXRlcmF0ZSBmIHggPVxuICBjb25zIHggKGl0ZXJhdGUxIGYgeClcblxuXG5cbmxldCByZWMgbWFwaV9hdXggZiBpIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGYgaSB4LCBtYXBpX2F1eCBmIChpKzEpIHhzKVxuXG5sZXRbQGlubGluZV0gbWFwaSBmIHhzID1cbiAgbWFwaV9hdXggZiAwIHhzXG5cbigqIFt0YWlsX3NjYW4gZiBzIHhzXSBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChzY2FuIGYgcyB4cyldLlxuICAgW3RhaWxfc2Nhbl0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtzY2FuXS4gKilcblxuKCogVGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtzY2FuXSBpcyBtZWFudCB0byBhdm9pZCBjb21wdXRpbmdcbiAgIGVsZW1lbnRzIHRvbyBlYXJseTsgc2VlIHRoZSBhYm92ZSBjb21tZW50IGFib3V0IFtpdGVyYXRlMV0gYW5kIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyB0YWlsX3NjYW4gZiBzIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBzID0gZiBzIHggaW5cbiAgICAgIENvbnMgKHMsIHRhaWxfc2NhbiBmIHMgeHMpXG5cbmxldCBzY2FuIGYgcyB4cyA9XG4gIGNvbnMgcyAodGFpbF9zY2FuIGYgcyB4cylcblxuKCogW3Rha2VdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFt0YWtlIDAgeHNdIHJldHVybnMgW2VtcHR5XVxuICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgcmVjIHRha2VfYXV4IG4geHMgPVxuICBpZiBuID0gMCB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICBDb25zICh4LCB0YWtlX2F1eCAobi0xKSB4cylcblxubGV0IHRha2UgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEudGFrZVwiO1xuICB0YWtlX2F1eCBuIHhzXG5cbigqIFtmb3JjZV9kcm9wIG4geHNdIGlzIGVxdWl2YWxlbnQgdG8gW2Ryb3AgbiB4cyAoKV0uXG4gICBbZm9yY2VfZHJvcCBuIHhzXSByZXF1aXJlcyBbbiA+IDBdLlxuICAgW2ZvcmNlX2Ryb3BdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbZHJvcF0uICopXG5cbmxldCByZWMgZm9yY2VfZHJvcCBuIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxldCBuID0gbiAtIDEgaW5cbiAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgeHMoKVxuICAgICAgZWxzZVxuICAgICAgICBmb3JjZV9kcm9wIG4geHNcblxuKCogW2Ryb3BdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFtkcm9wIDAgeHNdIHJldHVybnMgW3hzXSBpbW1lZGlhdGVseSxcbiAgIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgZHJvcCBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS5kcm9wXCJcbiAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgeHNcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbmxldCByZWMgdGFrZV93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIENvbnMgKHgsIHRha2Vfd2hpbGUgcCB4cykgZWxzZSBOaWxcblxubGV0IHJlYyBkcm9wX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSBhcyBub2RlIC0+XG4gICAgICBpZiBwIHggdGhlbiBkcm9wX3doaWxlIHAgeHMgKCkgZWxzZSBub2RlXG5cbmxldCByZWMgZ3JvdXAgZXEgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoY29ucyB4ICh0YWtlX3doaWxlIChlcSB4KSB4cyksIGdyb3VwIGVxIChkcm9wX3doaWxlIChlcSB4KSB4cykpXG5cbmV4Y2VwdGlvbiBGb3JjZWRfdHdpY2VcblxubW9kdWxlIFN1c3BlbnNpb24gPSBzdHJ1Y3RcblxuICB0eXBlICdhIHN1c3BlbnNpb24gPVxuICAgIHVuaXQgLT4gJ2FcblxuICAoKiBDb252ZXJzaW9ucy4gKilcblxuICBsZXQgdG9fbGF6eSA6ICdhIHN1c3BlbnNpb24gLT4gJ2EgTGF6eS50ID1cbiAgICBMYXp5LmZyb21fZnVuXG4gICAgKCogZnVuIHMgLT4gbGF6eSAocygpKSAqKVxuXG4gIGxldCBmcm9tX2xhenkgKHMgOiAnYSBMYXp5LnQpIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+IExhenkuZm9yY2Ugc1xuXG4gICgqIFttZW1vaXplXSB0dXJucyBhbiBhcmJpdHJhcnkgc3VzcGVuc2lvbiBpbnRvIGEgcGVyc2lzdGVudCBzdXNwZW5zaW9uLiAqKVxuXG4gIGxldCBtZW1vaXplIChzIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmcm9tX2xhenkgKHRvX2xhenkgcylcblxuICAoKiBbZmFpbHVyZV0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgZmFpbHMgd2hlbiBmb3JjZWQuICopXG5cbiAgbGV0IGZhaWx1cmUgOiBfIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogQSBzdXNwZW5zaW9uIGNyZWF0ZWQgYnkgW29uY2VdIGhhcyBiZWVuIGZvcmNlZCB0d2ljZS4gKilcbiAgICAgIHJhaXNlIEZvcmNlZF90d2ljZVxuXG4gICgqIElmIFtmXSBpcyBhIHN1c3BlbnNpb24sIHRoZW4gW29uY2UgZl0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgY2FuIGJlIGZvcmNlZFxuICAgICBhdCBtb3N0IG9uY2UuIElmIGl0IGlzIGZvcmNlZCBtb3JlIHRoYW4gb25jZSwgdGhlbiBbRm9yY2VkX3R3aWNlXSBpc1xuICAgICByYWlzZWQuICopXG5cbiAgbGV0IG9uY2UgKGYgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGxldCBhY3Rpb24gPSBBdG9taWMubWFrZSBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBHZXQgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBzdG9yZWQgaW4gW2FjdGlvbl0sIGFuZCB3cml0ZSB0aGVcbiAgICAgICAgIGZ1bmN0aW9uIFtmYWlsdXJlXSBpbiBpdHMgcGxhY2UsIHNvIHRoZSBuZXh0IGFjY2VzcyB3aWxsIHJlc3VsdFxuICAgICAgICAgaW4gYSBjYWxsIHRvIFtmYWlsdXJlKCldLiAqKVxuICAgICAgbGV0IGYgPSBBdG9taWMuZXhjaGFuZ2UgYWN0aW9uIGZhaWx1cmUgaW5cbiAgICAgIGYoKVxuXG5lbmQgKCogU3VzcGVuc2lvbiAqKVxuXG5sZXQgcmVjIG1lbW9pemUgeHMgPVxuICBTdXNwZW5zaW9uLm1lbW9pemUgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG1lbW9pemUgeHMpXG4gIClcblxubGV0IHJlYyBvbmNlIHhzID1cbiAgU3VzcGVuc2lvbi5vbmNlIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBvbmNlIHhzKVxuICApXG5cblxubGV0IHJlYyB6aXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zICgoeCwgeSksIHppcCB4cyB5cylcblxubGV0IHJlYyBtYXAyIGYgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zIChmIHggeSwgbWFwMiBmIHhzIHlzKVxuXG5sZXQgcmVjIGludGVybGVhdmUgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHlzKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKHgsIGludGVybGVhdmUgeXMgeHMpXG5cbigqIFtzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSB5c10uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCB4cyAoY29ucyB5IHlzKV0uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgKGNvbnMgeSB5cyldLlxuXG4gICBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgYnVpbGRpbmcgYmxvY2tzIGluIHRoZSBkZWZpbml0aW9uXG4gICBvZiBbc29ydGVkX21lcmdlXS4gKilcblxubGV0IHJlYyBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cyAoKSA9XG4gIG1hdGNoIHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeCwgeHMpXG4gIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh5LCB5cylcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzID1cbiAgaWYgY21wIHggeSA8PSAwIHRoZW5cbiAgICBDb25zICh4LCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cylcbiAgZWxzZVxuICAgIENvbnMgKHksIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzKVxuXG5sZXQgc29ydGVkX21lcmdlIGNtcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICAgIHwgTmlsLCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBOaWwsIGNcbiAgICB8IGMsIE5pbCAtPlxuICAgICAgICBjXG4gICAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuXG5sZXQgcmVjIG1hcF9mc3QgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKHgsIF8pLCB4eXMpIC0+XG4gICAgICBDb25zICh4LCBtYXBfZnN0IHh5cylcblxubGV0IHJlYyBtYXBfc25kIHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKChfLCB5KSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeSwgbWFwX3NuZCB4eXMpXG5cbmxldCB1bnppcCB4eXMgPVxuICBtYXBfZnN0IHh5cywgbWFwX3NuZCB4eXNcblxubGV0IHNwbGl0ID1cbiAgdW56aXBcblxuKCogW2ZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzXSBpcyBlcXVpdmFsZW50IHRvXG4gICBbZmlsdGVyX21hcCBFaXRoZXIuZmluZF9sZWZ0IChtYXAgZiB4cyldLiAqKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IHkgLT5cbiAgICAgICAgICBDb25zICh5LCBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cylcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpXG4gICAgICB8IEVpdGhlci5SaWdodCB6IC0+XG4gICAgICAgICAgQ29ucyAoeiwgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzKVxuXG5sZXQgcGFydGl0aW9uX21hcCBmIHhzID1cbiAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMsXG4gIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4c1xuXG5sZXQgcGFydGl0aW9uIHAgeHMgPVxuICBmaWx0ZXIgcCB4cywgZmlsdGVyIChmdW4geCAtPiBub3QgKHAgeCkpIHhzXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtwZWVsIHhzc10gaXMgYSBwYWlyIG9mXG4gICB0aGUgZmlyc3QgY29sdW1uIChhIHNlcXVlbmNlIG9mIGVsZW1lbnRzKSBhbmQgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiBzaG9ydGVyIHJvd3MpLiBUaGVzZSB0d28gc2VxdWVuY2VzIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gQW4gZW1wdHkgcm93IGlzIGlnbm9yZWQuICopXG5cbigqIEJlY2F1c2UgW3BlZWxdIHVzZXMgW3VuemlwXSwgaXRzIGFyZ3VtZW50IG11c3QgYmUgcGVyc2lzdGVudC4gVGhlIHNhbWVcbiAgIHJlbWFyayBhcHBsaWVzIHRvIFt0cmFuc3Bvc2VdLCBbZGlhZ29uYWxzXSwgW3Byb2R1Y3RdLCBldGMuICopXG5cbmxldCBwZWVsIHhzcyA9XG4gIHVuemlwIChmaWx0ZXJfbWFwIHVuY29ucyB4c3MpXG5cbmxldCByZWMgdHJhbnNwb3NlIHhzcyAoKSA9XG4gIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHhzcyBpblxuICBpZiBpc19lbXB0eSBoZWFkcyB0aGVuIGJlZ2luXG4gICAgYXNzZXJ0IChpc19lbXB0eSB0YWlscyk7XG4gICAgTmlsXG4gIGVuZFxuICBlbHNlXG4gICAgQ29ucyAoaGVhZHMsIHRyYW5zcG9zZSB0YWlscylcblxuKCogVGhlIGludGVybmFsIGZ1bmN0aW9uIFtkaWFnb25hbHNdIHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50LCBbcmVtYWluZGVyc10sXG4gICB3aGljaCBjb250YWlucyB0aGUgcmVtYWluZGVycyBvZiB0aGUgcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuXG4gICBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcmVjIGRpYWdvbmFscyByZW1haW5kZXJzIHhzcyAoKSA9XG4gIG1hdGNoIHhzcygpIHdpdGhcbiAgfCBDb25zICh4cywgeHNzKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IG5vbmVtcHR5IHJvdyBbeCA6OiB4c10uIFRodXMsIHRoZSBuZXh0IGRpYWdvbmFsXG4gICAgICAgICAgICAgaXMgW3ggOjogaGVhZHNdOiB0aGlzIGRpYWdvbmFsIGJlZ2lucyB3aXRoIFt4XSBhbmQgY29udGludWVzIHdpdGhcbiAgICAgICAgICAgICB0aGUgZmlyc3QgZWxlbWVudCBvZiBldmVyeSByb3cgaW4gW3JlbWFpbmRlcnNdLiBJbiB0aGUgcmVjdXJzaXZlXG4gICAgICAgICAgICAgY2FsbCwgdGhlIGFyZ3VtZW50IFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBbeHMgOjpcbiAgICAgICAgICAgICB0YWlsc10sIHdoaWNoIG1lYW5zIHRoYXQgd2UgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LCBbeHNdLFxuICAgICAgICAgICAgIGFuZCB0aGF0IHdlIGtlZXAgdGhlIHRhaWxzIG9mIHRoZSBwcmUtZXhpc3RpbmcgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGNvbnMgeCBoZWFkcywgZGlhZ29uYWxzIChjb25zIHhzIHRhaWxzKSB4c3MpXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IGVtcHR5IHJvdy4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpYWdvbmFsIGlzXG4gICAgICAgICAgICAganVzdCBbaGVhZHNdLCBhbmQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIGp1c3QgW3RhaWxzXSxcbiAgICAgICAgICAgICBhcyB3ZSBkbyBub3QgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChoZWFkcywgZGlhZ29uYWxzIHRhaWxzIHhzcylcbiAgICAgIGVuZFxuICB8IE5pbCAtPlxuICAgICAgKCogVGhlcmUgYXJlIG5vIG1vcmUgcm93cyB0byBiZSBkaXNjb3ZlcmVkLiBUaGVyZSByZW1haW5zIHRvIGV4aGF1c3RcbiAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cy4gKilcbiAgICAgIHRyYW5zcG9zZSByZW1haW5kZXJzICgpXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtkaWFnb25hbHMgeHNzXSBpc1xuICAgdGhlIHNlcXVlbmNlIG9mIGl0cyBkaWFnb25hbHMuXG5cbiAgIFRoZSBmaXJzdCBkaWFnb25hbCBjb250YWlucyBqdXN0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgZmlyc3Qgcm93LiBUaGUgc2Vjb25kIGRpYWdvbmFsIGNvbnRhaW5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgc2Vjb25kIHJvdyBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBmaXJzdCByb3c7IGFuZCBzbyBvbi5cbiAgIFRoaXMga2luZCBvZiBkaWFnb25hbCBpcyBpbiBmYWN0IHNvbWV0aW1lcyBrbm93biBhcyBhbiBhbnRpZGlhZ29uYWwuXG5cbiAgIC0gRXZlcnkgZGlhZ29uYWwgaXMgYSBmaW5pdGUgc2VxdWVuY2UuXG4gICAtIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZmluaXRlIChpbiBlaXRoZXIgZGlyZWN0aW9uKS5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBtdXN0IGJlIHBlcnNpc3RlbnQuICopXG5cbmxldCBkaWFnb25hbHMgeHNzID1cbiAgZGlhZ29uYWxzIGVtcHR5IHhzc1xuXG5sZXQgbWFwX3Byb2R1Y3QgZiB4cyB5cyA9XG4gIGNvbmNhdCAoZGlhZ29uYWxzIChcbiAgICBtYXAgKGZ1biB4IC0+XG4gICAgICBtYXAgKGZ1biB5IC0+XG4gICAgICAgIGYgeCB5XG4gICAgICApIHlzXG4gICAgKSB4c1xuICApKVxuXG5sZXQgcHJvZHVjdCB4cyB5cyA9XG4gIG1hcF9wcm9kdWN0IChmdW4geCB5IC0+ICh4LCB5KSkgeHMgeXNcblxubGV0IG9mX2Rpc3BlbnNlciBpdCA9XG4gIGxldCByZWMgYyAoKSA9XG4gICAgbWF0Y2ggaXQoKSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIE5pbFxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIENvbnMgKHgsIGMpXG4gIGluXG4gIGNcblxubGV0IHRvX2Rpc3BlbnNlciB4cyA9XG4gIGxldCBzID0gcmVmIHhzIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICghcykoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9IE5vbmUgfCBTb21lIG9mICdhXG5cbmxldCBub25lID0gTm9uZVxubGV0IHNvbWUgdiA9IFNvbWUgdlxubGV0IHZhbHVlIG8gfmRlZmF1bHQgPSBtYXRjaCBvIHdpdGggU29tZSB2IC0+IHYgfCBOb25lIC0+IGRlZmF1bHRcbmxldCBnZXQgPSBmdW5jdGlvbiBTb21lIHYgLT4gdiB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5sZXQgYmluZCBvIGYgPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IGYgdlxubGV0IGpvaW4gPSBmdW5jdGlvbiBTb21lIG8gLT4gbyB8IE5vbmUgLT4gTm9uZVxubGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmxldCBmb2xkIH5ub25lIH5zb21lID0gZnVuY3Rpb24gU29tZSB2IC0+IHNvbWUgdiB8IE5vbmUgLT4gbm9uZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBmIHYgfCBOb25lIC0+ICgpXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdHJ1ZSB8IFNvbWUgXyAtPiBmYWxzZVxubGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcblxubGV0IGVxdWFsIGVxIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBlcSB2MCB2MVxufCBOb25lLCBOb25lIC0+IHRydWVcbnwgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSBjbXAgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGNtcCB2MCB2MVxufCBOb25lLCBOb25lIC0+IDBcbnwgTm9uZSwgU29tZSBfIC0+IC0xXG58IFNvbWUgXywgTm9uZSAtPiAxXG5cbmxldCB0b19yZXN1bHQgfm5vbmUgPSBmdW5jdGlvbiBOb25lIC0+IEVycm9yIG5vbmUgfCBTb21lIHYgLT4gT2sgdlxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBOb25lIC0+IFtdIHwgU29tZSB2IC0+IFt2XVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE5vbmUgLT4gU2VxLmVtcHR5IHwgU29tZSB2IC0+IFNlcS5yZXR1cm4gdlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdlXG5cbmxldCBvayB2ID0gT2sgdlxubGV0IGVycm9yIGUgPSBFcnJvciBlXG5sZXQgdmFsdWUgciB+ZGVmYXVsdCA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGRlZmF1bHRcbmxldCBnZXRfb2sgPSBmdW5jdGlvbiBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIEVycm9yIF9cIlxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgYmluZCByIGYgPSBtYXRjaCByIHdpdGggT2sgdiAtPiBmIHYgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IGpvaW4gPSBmdW5jdGlvbiBPayByIC0+IHIgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcCBmID0gZnVuY3Rpb24gT2sgdiAtPiBPayAoZiB2KSB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBPayB2IC0+IGYgdiB8IEVycm9yIF8gLT4gKClcbmxldCBpdGVyX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGYgZSB8IE9rIF8gLT4gKClcbmxldCBpc19vayA9IGZ1bmN0aW9uIE9rIF8gLT4gdHJ1ZSB8IEVycm9yIF8gLT4gZmFsc2VcbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uIEVycm9yIF8gLT4gdHJ1ZSB8IE9rIF8gLT4gZmFsc2VcblxubGV0IGVxdWFsIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IF8sIF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgT2sgXywgRXJyb3IgXyAtPiAtMVxufCBFcnJvciBfLCBPayBfIC0+IDFcblxubGV0IHRvX29wdGlvbiA9IGZ1bmN0aW9uIE9rIHYgLT4gU29tZSB2IHwgRXJyb3IgXyAtPiBOb25lXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE9rIHYgLT4gW3ZdIHwgRXJyb3IgXyAtPiBbXVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE9rIHYgLT4gU2VxLnJldHVybiB2IHwgRXJyb3IgXyAtPiBTZXEuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gYm9vbCA9IGZhbHNlIHwgdHJ1ZVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5sZXQgZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuZXh0ZXJuYWwgdG9faW50IDogYm9vbCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvbiBmYWxzZSAtPiAwLiB8IHRydWUgLT4gMS5cblxuKCpcbmxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxufCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxufCBcInRydWVcIiAtPiBTb21lIHRydWVcbnwgXyAtPiBOb25lXG4qKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb24gZmFsc2UgLT4gXCJmYWxzZVwiIHwgdHJ1ZSAtPiBcInRydWVcIlxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgY2hyIG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJDaGFyLmNoclwiIGVsc2UgdW5zYWZlX2NociBuXG5cbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZTogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBieXRlc191bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgZXNjYXBlZCA9IGZ1bmN0aW9uXG4gIHwgJ1xcJycgLT4gXCJcXFxcJ1wiXG4gIHwgJ1xcXFwnIC0+IFwiXFxcXFxcXFxcIlxuICB8ICdcXG4nIC0+IFwiXFxcXG5cIlxuICB8ICdcXHQnIC0+IFwiXFxcXHRcIlxuICB8ICdcXHInIC0+IFwiXFxcXHJcIlxuICB8ICdcXGInIC0+IFwiXFxcXGJcIlxuICB8ICcgJyAuLiAnficgYXMgYyAtPlxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgMSBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgYztcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuICB8IGMgLT5cbiAgICAgIGxldCBuID0gY29kZSBjIGluXG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSA0IGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCAnXFxcXCc7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMSAodW5zYWZlX2NociAoNDggKyBuIC8gMTAwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMiAodW5zYWZlX2NociAoNDggKyAobiAvIDEwKSBtb2QgMTApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAzICh1bnNhZmVfY2hyICg0OCArIG4gbW9kIDEwKSk7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IGxvd2VyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBEYW5pZWwgQy4gQnVlbnpsaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5cbmxldCBlcnJfbm9fcHJlZCA9IFwiVSswMDAwIGhhcyBubyBwcmVkZWNlc3NvclwiXG5sZXQgZXJyX25vX3N1Y2MgPSBcIlUrMTBGRkZGIGhhcyBubyBzdWNjZXNzb3JcIlxubGV0IGVycl9ub3Rfc3YgaSA9IGZvcm1hdF9pbnQgXCIlWFwiIGkgXiBcIiBpcyBub3QgYW4gVW5pY29kZSBzY2FsYXIgdmFsdWVcIlxubGV0IGVycl9ub3RfbGF0aW4xIHUgPSBcIlUrXCIgXiBmb3JtYXRfaW50IFwiJTA0WFwiIHUgXiBcIiBpcyBub3QgYSBsYXRpbjEgY2hhcmFjdGVyXCJcblxudHlwZSB0ID0gaW50XG5cbmxldCBtaW4gPSAweDAwMDBcbmxldCBtYXggPSAweDEwRkZGRlxubGV0IGxvX2JvdW5kID0gMHhEN0ZGXG5sZXQgaGlfYm91bmQgPSAweEUwMDBcblxubGV0IGJvbSA9IDB4RkVGRlxubGV0IHJlcCA9IDB4RkZGRFxuXG5sZXQgc3VjYyB1ID1cbiAgaWYgdSA9IGxvX2JvdW5kIHRoZW4gaGlfYm91bmQgZWxzZVxuICBpZiB1ID0gbWF4IHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3N1Y2MgZWxzZVxuICB1ICsgMVxuXG5sZXQgcHJlZCB1ID1cbiAgaWYgdSA9IGhpX2JvdW5kIHRoZW4gbG9fYm91bmQgZWxzZVxuICBpZiB1ID0gbWluIHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3ByZWQgZWxzZVxuICB1IC0gMVxuXG5sZXQgaXNfdmFsaWQgaSA9IChtaW4gPD0gaSAmJiBpIDw9IGxvX2JvdW5kKSB8fCAoaGlfYm91bmQgPD0gaSAmJiBpIDw9IG1heClcbmxldCBvZl9pbnQgaSA9IGlmIGlzX3ZhbGlkIGkgdGhlbiBpIGVsc2UgaW52YWxpZF9hcmcgKGVycl9ub3Rfc3YgaSlcbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfY2hhciB1ID0gdSA8IDI1NlxubGV0IG9mX2NoYXIgYyA9IENoYXIuY29kZSBjXG5sZXQgdG9fY2hhciB1ID1cbiAgaWYgdSA+IDI1NSB0aGVuIGludmFsaWRfYXJnIChlcnJfbm90X2xhdGluMSB1KSBlbHNlXG4gIENoYXIudW5zYWZlX2NociB1XG5cbmxldCB1bnNhZmVfdG9fY2hhciA9IENoYXIudW5zYWZlX2NoclxuXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgaGFzaCA9IHRvX2ludFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4MDA3RiAtPiAxXG58IHUgd2hlbiB1IDw9IDB4MDdGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAzXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHV0Zl8xNl9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGluaXQgaSBsYXN0IGYgPVxuICBpZiBpID4gbGFzdCB0aGVuIFtdXG4gIGVsc2UgaWYgaSA9IGxhc3QgdGhlbiBbZiBpXVxuICBlbHNlXG4gICAgbGV0IHIxID0gZiBpIGluXG4gICAgbGV0IHIyID0gZiAoaSsxKSBpblxuICAgIHIxIDo6IHIyIDo6IGluaXQgKGkrMikgbGFzdCBmXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpbml0IDAgKGxlbiAtIDEpIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBbYTFdIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBsZXQgcjIgPSBmIGEyIGluXG4gICAgICByMTo6cjI6Om1hcCBmIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgW2ExXSAtPlxuICAgICAgbGV0IHIxID0gZiBpIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGkgYTEgaW5cbiAgICAgIGxldCByMiA9IGYgKGkrMSkgYTIgaW5cbiAgICAgIHIxOjpyMjo6bWFwaSAoaSsyKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoW2ExXSwgW2IxXSkgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIFtyMV1cbiAgfCAoYTE6OmEyOjpsMSwgYjE6OmIyOjpsMikgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIGxldCByMiA9IGYgYTIgYjIgaW5cbiAgICAgIHIxOjpyMjo6bWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCBmaW5kX2luZGV4IHAgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIHAgYSB0aGVuIFNvbWUgaSBlbHNlIGF1eCAoaSsxKSBsIGluXG4gIGF1eCAwXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9tYXBpIGYgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGF1eCAoaSsxKSBsXG4gICAgIGVuZCBpblxuICBhdXggMFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IDo6IGZpbmRfYWxsIHAgbCBlbHNlIGZpbmRfYWxsIHAgbFxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyaSBwIGkgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6bCAtPlxuICAgICAgbGV0IGknID0gaSArIDEgaW5cbiAgICAgIGlmIHAgaSB4IHRoZW4geCA6OiBmaWx0ZXJpIHAgaScgbCBlbHNlIGZpbHRlcmkgcCBpJyBsXG5cbmxldCBmaWx0ZXJpIHAgbCA9IGZpbHRlcmkgcCAwIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbFxuICAgICAgfCBTb21lIHYgLT4gdiA6OiBmaWx0ZXJfbWFwIGYgbFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBjb25jYXRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6eHMgLT4gcHJlcGVuZF9jb25jYXRfbWFwIChmIHgpIGYgeHNcbmFuZFtAdGFpbF9tb2RfY29uc10gcHJlcGVuZF9jb25jYXRfbWFwIHlzIGYgeHMgPVxuICBtYXRjaCB5cyB3aXRoXG4gIHwgW10gLT4gY29uY2F0X21hcCBmIHhzXG4gIHwgeSA6OiB5cyAtPiB5IDo6IHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgdmVyeSBsb25nIGxpc3QgKGxlbmd0aCBvdmVyIGFib3V0IDEwMDAwMCksIGl0IHVzZWQgdG8gYmVcbiAgIGZhc3RlciB0byBjb252ZXJ0IHRoZSBsaXN0IHRvIGFuIGFycmF5LCBzb3J0IHRoZSBhcnJheSwgYW5kIGNvbnZlcnRcbiAgIGJhY2ssIHRydW5jYXRpbmcgdGhlIGFycmF5IG9iamVjdCBhZnRlciBwcmVwZW5kaW5nIGVhY2ggdGhvdXNhbmRcbiAgIGVudHJpZXMgdG8gdGhlIHJlc3VsdGluZyBsaXN0LiBJbXBvc3NpYmxlIG5vdyB0aGF0IE9iai50cnVuY2F0ZSBoYXNcbiAgIGJlZW4gcmVtb3ZlZC4gKilcblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBkdXBsaWNhdGVzICopXG5cbmxldCBzb3J0X3VuaXEgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2UgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlX3JldiB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhfd2l0aCBsIG4gPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGlmIG4gPSAwIHRoZW4gMCBlbHNlXG4gICAgICBpZiBuID4gMCB0aGVuIC0xIGVsc2UgMVxuICB8IF8gOjogbCAtPlxuICAgIGlmIG4gPD0gMCB0aGVuIDEgZWxzZVxuICAgICAgY29tcGFyZV9sZW5ndGhfd2l0aCBsIChuLTEpXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gOjogXyAtPiBmYWxzZVxuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgb2Zfc2VxIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiBbXVxuICB8IFNlcS5Db25zICh4MSwgc2VxKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBbeDFdXG4gICAgICB8IFNlcS5Db25zICh4Miwgc2VxKSAtPiB4MSA6OiB4MiA6OiBvZl9zZXEgc2VxXG4gICAgICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuZXh0ZXJuYWwgbmVnIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCBhZGQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBzdWIgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCBtdWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCBkaXYgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCByZW0gOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCBsb2dvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxvZ25vdCB4ID0gbG9neG9yIHggKC0xKVxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5cbigqXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmcgcyA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmxldCB0b19zdHJpbmcgeCA9IGZvcm1hdF9pbnQgXCIlZFwiIHhcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgdW5zYWZlX2VzY2FwZSBzID1cbiAgKCogV2UgcGVyZm9ybSB0d28gcGFzc2VzIG9uIHRoZSBpbnB1dCBzZXF1ZW5jZSwgb25lIHRvIGNvbXB1dGUgdGhlXG4gICAgIHJlc3VsdCBzaXplIGFuZCBvbmUgdG8gd3JpdGUgdGhlIHJlc3VsdC5cblxuICAgICAjMTE1MDgsICMxMTUwOTogVGhpcyBsb2dpYyB3b3VsZCBiZSBpbmNvcnJlY3QgaW4gcHJlc2VuY2Ugb2ZcbiAgICAgY29uY3VycmVudCBtb2RpZmljYXRpb24gdG8gdGhlIGlucHV0LCBtYWtpbmcgdGhlIHVzZSBvZlxuICAgICBbdW5zYWZlX3NldF0gYmVsb3cgbWVtb3J5LXVuc2FmZS5cblxuICAgICBQcmVjb25kaXRpb246IFRoaXMgZnVuY3Rpb24gbWF5IGJlIHNhZmVseSBjYWxsZWQgb246XG4gICAgIC0gYW4gaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2VcbiAgICAgLSBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgKHRoZSBmdW5jdGlvbiB0YWtlcyBvd25lcnNoaXApXG5cbiAgICAgSW4gZWl0aGVyIGNhc2Ugd2UgcmV0dXJuIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZS5cbiAgKilcbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBzXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgZXNjYXBlZCBiID1cbiAgbGV0IGIgPSBjb3B5IGIgaW5cbiAgKCogV2UgY29weSBvdXIgaW5wdXQgdG8gb2J0YWluIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZSBbYl1cbiAgICAgdG8gc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gKilcbiAgdW5zYWZlX2VzY2FwZSBiXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuICBlbHNlIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeFxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4IGVsc2VcbiAgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG5cbigqIFVURiBjb2RlY3MgYW5kIHZhbGlkYXRpb25zICopXG5cbmxldCBkZWNfaW52YWxpZCA9IFVjaGFyLnV0Zl9kZWNvZGVfaW52YWxpZFxubGV0W0BpbmxpbmVdIGRlY19yZXQgbiB1ID0gVWNoYXIudXRmX2RlY29kZSBuIChVY2hhci51bnNhZmVfb2ZfaW50IHUpXG5cbigqIEluIGNhc2Ugb2YgZGVjb2RpbmcgZXJyb3IsIGlmIHdlIGVycm9yIG9uIHRoZSBmaXJzdCBieXRlLCB3ZVxuICAgY29uc3VtZSB0aGUgYnl0ZSwgb3RoZXJ3aXNlIHdlIGNvbnN1bWUgdGhlIFtuXSBieXRlcyBwcmVjZWRpbmdcbiAgIHRoZSBlcnJvcmluZyBieXRlLlxuXG4gICBUaGlzIG1lYW5zIHRoYXQgaWYgYSBjbGllbnQgdXNlcyBkZWNvZGVzIHdpdGhvdXQgY2FyaW5nIGFib3V0XG4gICB2YWxpZGl0eSBpdCBuYXR1cmFsbHkgcmVwbGFjZSBib2d1cyBkYXRhIHdpdGggVWNoYXIucmVwIGFjY29yZGluZ1xuICAgdG8gdGhlIFdIQVRXRyBFbmNvZGluZyBzdGFuZGFyZC4gT3RoZXIgc2NoZW1lcyBhcmUgcG9zc2libGUgYnlcbiAgIGNvbnN1bHRpbmcgdGhlIG51bWJlciBvZiB1c2VkIGJ5dGVzIG9uIGludmFsaWQgZGVjb2Rlcy4gRm9yIG1vcmVcbiAgIGRldGFpbHMgc2VlIGh0dHBzOi8vaHNpdm9uZW4uZmkvYnJva2VuLXV0Zi04L1xuXG4gICBGb3IgdGhpcyByZWFzb24gaW4gW2dldF91dGZfOF91Y2hhcl0gd2UgZ3JhZHVhbGx5IGNoZWNrIHRoZSBuZXh0XG4gICBieXRlIGlzIGF2YWlsYWJsZSByYXRoZXIgdGhhbiBkb2luZyBpdCBpbW1lZGlhdGVseSBhZnRlciB0aGVcbiAgIGZpcnN0IGJ5dGUuIENvbnRyYXN0IHdpdGggW2lzX3ZhbGlkX3V0Zl84XS4gKilcblxuKCogVVRGLTggKilcblxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feEJGIGIgPSBiIGxzciA2IDw+IDBiMTBcbmxldFtAaW5saW5lXSBub3RfaW5feEEwX3RvX3hCRiBiID0gYiBsc3IgNSA8PiAwYjEwMVxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDlGIGIgPSBiIGxzciA1IDw+IDBiMTAwXG5sZXRbQGlubGluZV0gbm90X2luX3g5MF90b194QkYgYiA9IGIgPCAweDkwIHx8IDB4QkYgPCBiXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OEYgYiA9IGIgbHNyIDQgPD4gMHg4XG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8yIGIwIGIxID1cbiAgKChiMCBsYW5kIDB4MUYpIGxzbCA2KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMyBiMCBiMSBiMiA9XG4gICgoYjAgbGFuZCAweDBGKSBsc2wgMTIpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIyIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzID1cbiAgKChiMCBsYW5kIDB4MDcpIGxzbCAxOCkgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgMTIpIGxvclxuICAoKGIyIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIzIGxhbmQgMHgzRikpXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgYiBpID1cbiAgbGV0IGIwID0gZ2V0X3VpbnQ4IGIgaSBpbiAoKiByYWlzZXMgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIGluZGV4LiAqKVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIENoYXIudW5zYWZlX2NociBiMCB3aXRoICgqIFNlZSBUaGUgVW5pY29kZSBTdGFuZGFyZCwgVGFibGUgMy43ICopXG4gIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGRlY19yZXQgMSBiMFxuICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBkZWNfcmV0IDIgKHV0Zl84X3VjaGFyXzIgYjAgYjEpXG4gIHwgJ1xceEUwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94QTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEVEJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDlGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RjAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g5MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEY0JyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDhGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8IF8gLT4gZGVjX2ludmFsaWQgMVxuXG5sZXQgc2V0X3V0Zl84X3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICAgc2V0X3VpbnQ4IGIgaSB1O1xuICAgICAgMVxuICB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4QzAgbG9yICh1IGxzciA2KSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMilcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEUwIGxvciAodSBsc3IgMTIpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDMpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEYwIGxvciAodSBsc3IgMTgpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiAoaSArIDIpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDQpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl84IGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gICAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIChnZXQgYiBpKSB3aXRoXG4gICAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gbG9vcCBtYXggYiAoaSArIDEpXG4gICAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feEEwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RUQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g5RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94OTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEY0JyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OEYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZCRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZiZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZMRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZsZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGJsaXQgPVxuICBCLmJsaXRfc3RyaW5nXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gXCJcIlxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW4gYnRzIEBAXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoQi5jcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCA9ICggXiApXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXJpIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG5sZXQgbWFwIGYgcyA9XG4gIEIubWFwIGYgKGJvcyBzKSB8PiBidHNcbmxldCBtYXBpIGYgcyA9XG4gIEIubWFwaSBmIChib3MgcykgfD4gYnRzXG5sZXQgZm9sZF9yaWdodCBmIHggYSA9XG4gIEIuZm9sZF9yaWdodCBmIChib3MgeCkgYVxubGV0IGZvbGRfbGVmdCBmIGEgeCA9XG4gIEIuZm9sZF9sZWZ0IGYgYSAoYm9zIHgpXG5sZXQgZXhpc3RzIGYgcyA9XG4gIEIuZXhpc3RzIGYgKGJvcyBzKVxubGV0IGZvcl9hbGwgZiBzID1cbiAgQi5mb3JfYWxsIGYgKGJvcyBzKVxuXG4oKiBCZXdhcmU6IHdlIGNhbm5vdCB1c2UgQi50cmltIG9yIEIuZXNjYXBlIGJlY2F1c2UgdGhleSBhbHdheXMgbWFrZSBhXG4gICBjb3B5LCBidXQgU3RyaW5nLm1saSBzcGVsbHMgb3V0IHNvbWUgY2FzZXMgd2hlcmUgd2UgYXJlIG5vdCBhbGxvd2VkXG4gICB0byBtYWtlIGEgY29weS4gKilcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBpZiBzID0gXCJcIiB0aGVuIHNcbiAgZWxzZSBpZiBpc19zcGFjZSAodW5zYWZlX2dldCBzIDApIHx8IGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgKGxlbmd0aCBzIC0gMSkpXG4gICAgdGhlbiBidHMgKEIudHJpbSAoYm9zIHMpKVxuICBlbHNlIHNcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCBiID0gYm9zIHMgaW5cbiAgKCogV2Ugc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gYnkgcGFzc2luZyBhblxuICAgICBpbW11dGFibGUgYnl0ZSBzZXF1ZW5jZSBbYl0uICopXG4gIGJ0cyAoQi51bnNhZmVfZXNjYXBlIGIpXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID1cbiAgQi51cHBlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9XG4gIEIubG93ZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLnVuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zdHJpbmdfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2ggMCB4XG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3RyaW5nX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gYm9zIHMgfD4gQi50b19zZXFcblxubGV0IHRvX3NlcWkgcyA9IGJvcyBzIHw+IEIudG9fc2VxaVxuXG5sZXQgb2Zfc2VxIGcgPSBCLm9mX3NlcSBnIHw+IGJ0c1xuXG4oKiBVVEYgZGVjb2RlcnMgYW5kIHZhbGlkYXRvcnMgKilcblxubGV0IGdldF91dGZfOF91Y2hhciBzIGkgPSBCLmdldF91dGZfOF91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfOCBzID0gQi5pc192YWxpZF91dGZfOCAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2YmVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2YmVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2YmUgKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmxlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmxlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmxlIChib3MgcylcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5cbmxldCBnZXRfaW50OCBzIGkgPSBCLmdldF9pbnQ4IChib3MgcykgaVxubGV0IGdldF91aW50MTZfbGUgcyBpID0gQi5nZXRfdWludDE2X2xlIChib3MgcykgaVxubGV0IGdldF91aW50MTZfYmUgcyBpID0gQi5nZXRfdWludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9uZSBzIGkgPSBCLmdldF9pbnQxNl9uZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbGUgcyBpID0gQi5nZXRfaW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2JlIHMgaSA9IEIuZ2V0X2ludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9sZSBzIGkgPSBCLmdldF9pbnQzMl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfYmUgcyBpID0gQi5nZXRfaW50MzJfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2xlIHMgaSA9IEIuZ2V0X2ludDY0X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9iZSBzIGkgPSBCLmdldF9pbnQ2NF9iZSAoYm9zIHMpIGlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gdW5pdCA9ICgpXG5cbmxldCBlcXVhbCAoKSAoKSA9IHRydWVcbmxldCBjb21wYXJlICgpICgpID0gMFxubGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGV4dGVybl9mbGFncyA9XG4gICAgTm9fc2hhcmluZ1xuICB8IENsb3N1cmVzXG4gIHwgQ29tcGF0XzMyXG5cbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAxNlxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIDBdIHdoZW4gW2wgPD0gMF0uXG4gICAgIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYWtlX21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gICAgZG9uZTtcbiAgZW5kO1xuICByZXNcblxubGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0X21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgKCogV2UgbXVzdCBub3QgZXZhbHVhdGUgW2YgeCAwXSB3aGVuIFtzeSA8PSAwXTogKilcbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSAoZiB4IDApIGluXG4gICAgICBmb3IgeSA9IDEgdG8gcHJlZCBzeSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgIGRvbmU7XG4gICAgICB1bnNhZmVfc2V0IHJlcyB4IHJvd1xuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgZG9uZVxuXG5sZXQgbWFwaV9pbnBsYWNlIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfaW5kZXggcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBTb21lIGlcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwaSBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxubGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgIGxldCBqID0gcmFuZCAoaSArIDEpIGluXG4gICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICB1bnNhZmVfc2V0IGEgaiB2XG4gIGRvbmVcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgcXVpZXRfbmFuID0gbmFuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IHNpZ25hbGluZ19uYW4gPSBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgbWFrZV9tYXRyaXggc3ggc3kgdiA9XG4gICAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gICAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5tYWtlX21hdHJpeFwiO1xuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIHN4IChjcmVhdGUgMCkgaW5cbiAgICBpZiBzeSA+IDAgdGhlbiBiZWdpblxuICAgICAgZm9yIHggPSAwIHRvIHN4IC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyB4IChtYWtlIHN5IHYpXG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgaW5pdF9tYXRyaXggc3ggc3kgZiA9XG4gICAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gICAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0X21hdHJpeFwiO1xuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIHN4IChjcmVhdGUgMCkgaW5cbiAgICBpZiBzeSA+IDAgdGhlbiBiZWdpblxuICAgICAgZm9yIHggPSAwIHRvIHN4IC0gMSBkb1xuICAgICAgICBsZXQgcm93ID0gY3JlYXRlIHN5IGluXG4gICAgICAgIGZvciB5ID0gMCB0byBzeSAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCByb3dcbiAgICAgIGRvbmU7XG4gICAgZW5kO1xuICAgIHJlc1xuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGxldCBsMiA9IGxlbmd0aCBhMiBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gICAgdW5zYWZlX2JsaXQgYTEgMCByZXN1bHQgMCBsMTtcbiAgICB1bnNhZmVfYmxpdCBhMiAwIHJlc3VsdCBsMSBsMjtcbiAgICByZXN1bHRcblxuICAoKiBuZXh0IDMgZnVuY3Rpb25zOiBtb2RpZmllZCBjb3B5IG9mIGNvZGUgZnJvbSBzdHJpbmcubWwgKilcbiAgbGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPVxuICAgIGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmNvbmNhdFwiXG5cbiAgbGV0IHJlYyBzdW1fbGVuZ3RocyBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBhY2MpIGFjYykgdGxcblxuICBsZXQgY29uY2F0IGwgPVxuICAgIGxldCBsZW4gPSBzdW1fbGVuZ3RocyAwIGwgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsIGkgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IGxlbilcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0IGhsZW4gPSBsZW5ndGggaGQgaW5cbiAgICAgICAgdW5zYWZlX2JsaXQgaGQgMCByZXN1bHQgaSBobGVuO1xuICAgICAgICBsb29wIHRsIChpICsgaGxlbilcbiAgICBpblxuICAgIGxvb3AgbCAwO1xuICAgIHJlc3VsdFxuXG4gIGxldCBzdWIgYSBvZnMgbGVuID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5zdWJcIjtcbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IGEgb2ZzIHJlc3VsdCAwIGxlbjtcbiAgICByZXN1bHRcblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsIGluXG4gICAgdW5zYWZlX2JsaXQgYSAwIHJlc3VsdCAwIGw7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlciBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIyIGYgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbiAgbGV0IG1hcCBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWFwX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmVcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcGlfaW5wbGFjZSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBleGlzdHMgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9yX2FsbCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIGZhbHNlIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtZW0geCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgYnV0IHNsaWdodGx5IGRpZmZlcmVudCAqKVxuICBsZXQgbWVtX2llZWUgeCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiB4ID0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfb3B0IHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeFxuICAgICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX2luZGV4IHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX21hcCBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXBpIGYgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbiAgbGV0IHNvcnQgY21wIGEgPVxuICAgIGxldCBtYXhzb24gbCBpID1cbiAgICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAgICF4XG4gICAgICBlbmQgZWxzZVxuICAgICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgICAgdGhlbiBpMzErMVxuICAgICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gICAgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gICAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgYnViYmxlZG93biBsIGpcbiAgICBpblxuICAgIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICAgIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gICAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICAgIGRvbmU7XG4gICAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGV4Y2VwdCBmb3IgdGhlIGNhbGwgdG8gW2NyZWF0ZV0gKilcbiAgbGV0IGN1dG9mZiA9IDVcbiAgbGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgICBlbmRcbiAgICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICAgIGluXG4gICAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgICAgZGVjciBqO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgICBkb25lO1xuICAgIGluXG4gICAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgICAgbGV0IHQgPSBjcmVhdGUgbDIgaW5cbiAgICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgICBlbmRcblxuICBsZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAxIGRvXG4gICAgICBsZXQgaiA9IHJhbmQgKGkgKyAxKSBpblxuICAgICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgdW5zYWZlX3NldCBhIGkgKGdldCBhIGopO1xuICAgICAgdW5zYWZlX3NldCBhIGogdlxuICAgIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXFpIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2ZfcmV2X2xpc3QgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgIFtdIC0+IGFcbiAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgaW5cbiAgICBmaWxsIChsZW4tMSkgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2Zfc2VxIGkgPVxuICAgIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICAgIG9mX3Jldl9saXN0IGxcblxuXG4gIGxldCBtYXBfdG9fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBbfCB8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IEFycmF5Lm1ha2UgbCAoZiAodW5zYWZlX2dldCBhIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gIGxldCBtYXBfZnJvbV9hcnJheSBmIGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG5lbmRcblxubW9kdWxlIEFycmF5TGFiZWxzID0gQXJyYXlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBuID49IDBMICYmIG4gPD0gbWF4X2ludCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSB4ID0geVxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTmF0aXZlaW50XTogcHJvY2Vzc29yLW5hdGl2ZSBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWc6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbmVnXCJcbmV4dGVybmFsIGFkZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYWRkXCJcbmV4dGVybmFsIHN1YjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfc3ViXCJcbmV4dGVybmFsIG11bDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbXVsXCJcbmV4dGVybmFsIGRpdjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfZGl2XCJcbmV4dGVybmFsIHJlbTogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYW5kXCJcbmV4dGVybmFsIGxvZ29yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vclwiXG5leHRlcm5hbCBsb2d4b3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsOiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50OiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQ6IG5hdGl2ZWludCAtPiBpbnQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IG5hdGl2ZWludCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMjogbmF0aXZlaW50IC0+IGludDMyID0gXCIlbmF0aXZlaW50X3RvX2ludDMyXCJcblxubGV0IHplcm8gPSAwblxubGV0IG9uZSA9IDFuXG5sZXQgbWludXNfb25lID0gLTFuXG5sZXQgc3VjYyBuID0gYWRkIG4gMW5cbmxldCBwcmVkIG4gPSBzdWIgbiAxblxubGV0IGFicyBuID0gaWYgbiA+PSAwbiB0aGVuIG4gZWxzZSBuZWcgblxubGV0IHNpemUgPSBTeXMud29yZF9zaXplXG5sZXQgbWluX2ludCA9IHNoaWZ0X2xlZnQgMW4gKHNpemUgLSAxKVxubGV0IG1heF9pbnQgPSBzdWIgbWluX2ludCAxblxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbilcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgbiA+PSAwbiAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gbmF0aXZlaW50XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleCAqKVxuXG50eXBlIHBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxubGV0IGR1bW15X3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAwO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAtMTtcbn1cblxudHlwZSBsZXhidWYgPVxuICB7IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQ7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyIDogYnl0ZXM7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9hYnNfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X2FjdGlvbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3AgOiBwb3NpdGlvbjtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3AgOiBwb3NpdGlvbjtcbiAgfVxuXG50eXBlIGxleF90YWJsZXMgPVxuICB7IGxleF9iYXNlOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cms6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdDogc3RyaW5nO1xuICAgIGxleF90cmFuczogc3RyaW5nO1xuICAgIGxleF9jaGVjazogc3RyaW5nO1xuICAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdF9jb2RlIDogc3RyaW5nO1xuICAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jb2RlOiBzdHJpbmc7fVxuXG5leHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5leHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbmV3X2xleF9lbmdpbmVcIlxuXG5sZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5cbmxldCBuZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19uZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxubGV0IGxleF9yZWZpbGwgcmVhZF9mdW4gYXV4X2J1ZmZlciBsZXhidWYgPVxuICBsZXQgcmVhZCA9XG4gICAgcmVhZF9mdW4gYXV4X2J1ZmZlciAoQnl0ZXMubGVuZ3RoIGF1eF9idWZmZXIpIGluXG4gIGxldCBuID1cbiAgICBpZiByZWFkID4gMFxuICAgIHRoZW4gcmVhZFxuICAgIGVsc2UgKGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgMCkgaW5cbiAgKCogQ3VycmVudCBzdGF0ZSBvZiB0aGUgYnVmZmVyOlxuICAgICAgICA8LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0+XG4gICAgICAgIHwgIGp1bmsgfCAgICAgIHZhbGlkIGRhdGEgICAgIHwgICBqdW5rICAgIHxcbiAgICAgICAgXiAgICAgICBeICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgXlxuICAgICAgICAwICAgIHN0YXJ0X3BvcyAgICAgICAgICAgICBidWZmZXJfZW5kICAgIEJ5dGVzLmxlbmd0aCBidWZmZXJcbiAgKilcbiAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuICsgbiA+IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlciB0aGVuIGJlZ2luXG4gICAgKCogVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG5cbiAgICAgICA8PSBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXJcbiAgICB0aGVuIGJlZ2luXG4gICAgICAoKiBCdXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGlmIHdlIHJlY2xhaW0gdGhlIGp1bmsgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgb2YgdGhlIGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXIgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBXZSBtdXN0IGdyb3cgdGhlIGJ1ZmZlci4gIERvdWJsaW5nIGl0cyBzaXplIHdpbGwgcHJvdmlkZSBlbm91Z2hcbiAgICAgICAgIHNwYWNlIHNpbmNlIG4gPD0gU3RyaW5nLmxlbmd0aCBhdXhfYnVmZmVyIDw9IFN0cmluZy5sZW5ndGggYnVmZmVyLlxuICAgICAgICAgV2F0Y2ggb3V0IGZvciBzdHJpbmcgbGVuZ3RoIG92ZXJmbG93LCB0aG91Z2guICopXG4gICAgICBsZXQgbmV3bGVuID1cbiAgICAgICAgSW50Lm1pbiAoMiAqIEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlcikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG4gPiBuZXdsZW5cbiAgICAgIHRoZW4gZmFpbHdpdGggXCJMZXhpbmcubGV4X3JlZmlsbDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gICAgICBsZXQgbmV3YnVmID0gQnl0ZXMuY3JlYXRlIG5ld2xlbiBpblxuICAgICAgKCogQ29weSB0aGUgdmFsaWQgZGF0YSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBuZXdidWYgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKTtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDwtIG5ld2J1ZlxuICAgIGVuZDtcbiAgICAoKiBSZWFsbG9jYXRpb24gb3Igbm90LCB3ZSBoYXZlIHNoaWZ0ZWQgdGhlIGRhdGEgbGVmdCBieVxuICAgICAgIHN0YXJ0X3BvcyBjaGFyYWN0ZXJzOyB1cGRhdGUgdGhlIHBvc2l0aW9ucyAqKVxuICAgIGxldCBzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgcztcbiAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIDA7XG4gICAgbGV4YnVmLmxleF9sYXN0X3BvcyA8LSBsZXhidWYubGV4X2xhc3RfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gcyA7XG4gICAgbGV0IHQgPSBsZXhidWYubGV4X21lbSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC0xIGRvXG4gICAgICBsZXQgdiA9IHQuKGkpIGluXG4gICAgICBpZiB2ID49IDAgdGhlblxuICAgICAgICB0LihpKSA8LSB2LXNcbiAgICBkb25lXG4gIGVuZDtcbiAgKCogVGhlcmUgaXMgbm93IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgQnl0ZXMuYmxpdCBhdXhfYnVmZmVyIDAgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9idWZmZXJfbGVuIG47XG4gIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuXG5cbmxldCB6ZXJvX3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAxO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAwO1xufVxuXG5sZXQgZnJvbV9mdW5jdGlvbiA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgZiA9XG4gIHsgcmVmaWxsX2J1ZmYgPSBsZXhfcmVmaWxsIGYgKEJ5dGVzLmNyZWF0ZSA1MTIpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMTAyNDtcbiAgICBsZXhfYnVmZmVyX2xlbiA9IDA7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IGZhbHNlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgZnJvbV9jaGFubmVsID93aXRoX3Bvc2l0aW9ucyBpYyA9XG4gIGZyb21fZnVuY3Rpb24gP3dpdGhfcG9zaXRpb25zIChmdW4gYnVmIG4gLT4gaW5wdXQgaWMgYnVmIDAgbilcblxubGV0IGZyb21fc3RyaW5nID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBzID1cbiAgeyByZWZpbGxfYnVmZiA9IChmdW4gbGV4YnVmIC0+IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZSk7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLm9mX3N0cmluZyBzOyAoKiBoYXZlIHRvIG1ha2UgYSBjb3B5IGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHVuc2FmZS1zdHJpbmcgbW9kZSAqKVxuICAgIGxleF9idWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSB0cnVlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgc2V0X3Bvc2l0aW9uIGxleGJ1ZiBwb3NpdGlvbiA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wICA8LSB7cG9zaXRpb24gd2l0aCBwb3NfZm5hbWUgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfZm5hbWV9O1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gcG9zaXRpb24ucG9zX2NudW1cblxubGV0IHNldF9maWxlbmFtZSBsZXhidWYgZm5hbWUgPVxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmbmFtZX1cblxubGV0IHdpdGhfcG9zaXRpb25zIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3Bvc1xuXG5sZXQgbGV4ZW1lIGxleGJ1ZiA9XG4gIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxubGV0IHN1Yl9sZXhlbWUgbGV4YnVmIGkxIGkyID1cbiAgbGV0IGxlbiA9IGkyLWkxIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuXG5cbmxldCBzdWJfbGV4ZW1lX29wdCBsZXhidWYgaTEgaTIgPVxuICBpZiBpMSA+PSAwIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuID0gaTItaTEgaW5cbiAgICBTb21lIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlbilcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBOb25lXG4gIGVuZFxuXG5sZXQgc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBpID0gQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGlcblxubGV0IHN1Yl9sZXhlbWVfY2hhcl9vcHQgbGV4YnVmIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgIFNvbWUgKEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpKVxuICBlbHNlXG4gICAgTm9uZVxuXG5cbmxldCBsZXhlbWVfY2hhciBsZXhidWYgaSA9XG4gIEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciAobGV4YnVmLmxleF9zdGFydF9wb3MgKyBpKVxuXG5sZXQgbGV4ZW1lX3N0YXJ0IGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcC5wb3NfY251bVxubGV0IGxleGVtZV9lbmQgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2NudW1cblxubGV0IGxleGVtZV9zdGFydF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcFxubGV0IGxleGVtZV9lbmRfcCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcFxuXG5sZXQgbmV3X2xpbmUgbGV4YnVmID1cbiAgbGV0IGxjcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7IGxjcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGNwLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxjcC5wb3NfY251bTtcbiAgICAgIH1cblxuXG5cbigqIERpc2NhcmQgZGF0YSBsZWZ0IGluIGxleGVyIGJ1ZmZlci4gKilcblxubGV0IGZsdXNoX2lucHV0IGxiID1cbiAgbGIubGV4X2N1cnJfcG9zIDwtIDA7XG4gIGxiLmxleF9hYnNfcG9zIDwtIDA7XG4gIGxldCBsY3AgPSBsYi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxiLmxleF9jdXJyX3AgPC0ge3plcm9fcG9zIHdpdGggcG9zX2ZuYW1lID0gbGNwLnBvc19mbmFtZX07XG4gIGxiLmxleF9idWZmZXJfbGVuIDwtIDA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG5vcGVuIExleGluZ1xuXG4oKiBJbnRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIHBhcnNpbmcgZW5naW5lICopXG5cbnR5cGUgcGFyc2VyX2VudiA9XG4gIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50IGFycmF5OyAgICAgICAgKCogU3RhdGVzICopXG4gICAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQgYXJyYXk7ICAgICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2YgdGhlIHN0YWNrcyAqKVxuICAgIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgqIEJhc2Ugc3AgZm9yIGN1cnJlbnQgcGFyc2UgKilcbiAgICBtdXRhYmxlIGN1cnJfY2hhciA6IGludDsgICAgICAgICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKilcbiAgICBtdXRhYmxlIGx2YWwgOiBPYmoudDsgICAgICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wqKVxuICAgIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgqIEVuZCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKVxuICAgIG11dGFibGUgYXNwIDogaW50OyAgICAgICAgICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJocyBpdGVtcyBpbiB0aGUgcnVsZSAqKVxuICAgIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAgICAgICAgICgqIFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKVxuICAgIG11dGFibGUgc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAgKCogU2F2ZWQgZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopXG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG50eXBlIHBhcnNlX3RhYmxlcyA9XG4gIHsgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheTtcbiAgICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7XG4gICAgdHJhbnNsX2Jsb2NrIDogaW50IGFycmF5O1xuICAgIGxocyA6IHN0cmluZztcbiAgICBsZW4gOiBzdHJpbmc7XG4gICAgZGVmcmVkIDogc3RyaW5nO1xuICAgIGRnb3RvIDogc3RyaW5nO1xuICAgIHNpbmRleCA6IHN0cmluZztcbiAgICByaW5kZXggOiBzdHJpbmc7XG4gICAgZ2luZGV4IDogc3RyaW5nO1xuICAgIHRhYmxlc2l6ZSA6IGludDtcbiAgICB0YWJsZSA6IHN0cmluZztcbiAgICBjaGVjayA6IHN0cmluZztcbiAgICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0O1xuICAgIG5hbWVzX2NvbnN0IDogc3RyaW5nO1xuICAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nIH1cblxuZXhjZXB0aW9uIFlZZXhpdCBvZiBPYmoudFxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgcGFyc2VyX2lucHV0ID1cbiAgICBTdGFydFxuICB8IFRva2VuX3JlYWRcbiAgfCBTdGFja3NfZ3Jvd25fMVxuICB8IFN0YWNrc19ncm93bl8yXG4gIHwgU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkXG4gIHwgRXJyb3JfZGV0ZWN0ZWRcblxudHlwZSBwYXJzZXJfb3V0cHV0ID1cbiAgICBSZWFkX3Rva2VuXG4gIHwgUmFpc2VfcGFyc2VfZXJyb3JcbiAgfCBHcm93X3N0YWNrc18xXG4gIHwgR3Jvd19zdGFja3NfMlxuICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uXG4gIHwgQ2FsbF9lcnJvcl9mdW5jdGlvblxuXG4oKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxubGV0IF8gPSBbUmVhZF90b2tlbjsgUmFpc2VfcGFyc2VfZXJyb3I7IEdyb3dfc3RhY2tzXzE7IEdyb3dfc3RhY2tzXzI7XG4gICAgICAgICBDb21wdXRlX3NlbWFudGljX2FjdGlvbjsgQ2FsbF9lcnJvcl9mdW5jdGlvbl1cblxuZXh0ZXJuYWwgcGFyc2VfZW5naW5lIDpcbiAgICBwYXJzZV90YWJsZXMgLT4gcGFyc2VyX2VudiAtPiBwYXJzZXJfaW5wdXQgLT4gT2JqLnQgLT4gcGFyc2VyX291dHB1dFxuICAgID0gXCJjYW1sX3BhcnNlX2VuZ2luZVwiXG5cbmV4dGVybmFsIHNldF90cmFjZTogYm9vbCAtPiBib29sXG4gICAgPSBcImNhbWxfc2V0X3BhcnNlcl90cmFjZVwiXG5cbmxldCBlbnYgPVxuICB7IHNfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAwO1xuICAgIHZfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAoT2JqLnJlcHIgKCkpO1xuICAgIHN5bWJfc3RhcnRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3RhY2tzaXplID0gMTAwO1xuICAgIHN0YWNrYmFzZSA9IDA7XG4gICAgY3Vycl9jaGFyID0gMDtcbiAgICBsdmFsID0gT2JqLnJlcHIgKCk7XG4gICAgc3ltYl9zdGFydCA9IGR1bW15X3BvcztcbiAgICBzeW1iX2VuZCA9IGR1bW15X3BvcztcbiAgICBhc3AgPSAwO1xuICAgIHJ1bGVfbGVuID0gMDtcbiAgICBydWxlX251bWJlciA9IDA7XG4gICAgc3AgPSAwO1xuICAgIHN0YXRlID0gMDtcbiAgICBlcnJmbGFnID0gMCB9XG5cbmxldCBncm93X3N0YWNrcygpID1cbiAgbGV0IG9sZHNpemUgPSBlbnYuc3RhY2tzaXplIGluXG4gIGxldCBuZXdzaXplID0gb2xkc2l6ZSAqIDIgaW5cbiAgbGV0IG5ld19zID0gQXJyYXkubWFrZSBuZXdzaXplIDBcbiAgYW5kIG5ld192ID0gQXJyYXkubWFrZSBuZXdzaXplIChPYmoucmVwciAoKSlcbiAgYW5kIG5ld19zdGFydCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3NcbiAgYW5kIG5ld19lbmQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zIGluXG4gICAgQXJyYXkuYmxpdCBlbnYuc19zdGFjayAwIG5ld19zIDAgb2xkc2l6ZTtcbiAgICBlbnYuc19zdGFjayA8LSBuZXdfcztcbiAgICBBcnJheS5ibGl0IGVudi52X3N0YWNrIDAgbmV3X3YgMCBvbGRzaXplO1xuICAgIGVudi52X3N0YWNrIDwtIG5ld192O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfc3RhcnRfc3RhY2sgMCBuZXdfc3RhcnQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX3N0YXJ0X3N0YWNrIDwtIG5ld19zdGFydDtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX2VuZF9zdGFjayAwIG5ld19lbmQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX2VuZF9zdGFjayA8LSBuZXdfZW5kO1xuICAgIGVudi5zdGFja3NpemUgPC0gbmV3c2l6ZVxuXG5sZXQgY2xlYXJfcGFyc2VyKCkgPVxuICBBcnJheS5maWxsIGVudi52X3N0YWNrIDAgZW52LnN0YWNrc2l6ZSAoT2JqLnJlcHIgKCkpO1xuICBlbnYubHZhbCA8LSBPYmoucmVwciAoKVxuXG5sZXQgY3VycmVudF9sb29rYWhlYWRfZnVuID0gcmVmIChmdW4gKF8gOiBPYmoudCkgLT4gZmFsc2UpXG5cbmxldCB5eXBhcnNlIHRhYmxlcyBzdGFydCBsZXhlciBsZXhidWYgPVxuICBsZXQgcmVjIGxvb3AgY21kIGFyZyA9XG4gICAgbWF0Y2ggcGFyc2VfZW5naW5lIHRhYmxlcyBlbnYgY21kIGFyZyB3aXRoXG4gICAgICBSZWFkX3Rva2VuIC0+XG4gICAgICAgIGxldCB0ID0gT2JqLnJlcHIobGV4ZXIgbGV4YnVmKSBpblxuICAgICAgICBlbnYuc3ltYl9zdGFydCA8LSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgICAgIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICAgICAgbG9vcCBUb2tlbl9yZWFkIHRcbiAgICB8IFJhaXNlX3BhcnNlX2Vycm9yIC0+XG4gICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvbiAtPlxuICAgICAgICBsZXQgKGFjdGlvbiwgdmFsdWUpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIChTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQsIHRhYmxlcy5hY3Rpb25zLihlbnYucnVsZV9udW1iZXIpIGVudilcbiAgICAgICAgICB3aXRoIFBhcnNlX2Vycm9yIC0+XG4gICAgICAgICAgICAoRXJyb3JfZGV0ZWN0ZWQsIE9iai5yZXByICgpKSBpblxuICAgICAgICBsb29wIGFjdGlvbiB2YWx1ZVxuICAgIHwgR3Jvd19zdGFja3NfMSAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8xIChPYmoucmVwciAoKSlcbiAgICB8IEdyb3dfc3RhY2tzXzIgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMiAoT2JqLnJlcHIgKCkpXG4gICAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uIC0+XG4gICAgICAgIHRhYmxlcy5lcnJvcl9mdW5jdGlvbiBcInN5bnRheCBlcnJvclwiO1xuICAgICAgICBsb29wIEVycm9yX2RldGVjdGVkIChPYmoucmVwciAoKSkgaW5cbiAgbGV0IGluaXRfYXNwID0gZW52LmFzcFxuICBhbmQgaW5pdF9zcCA9IGVudi5zcFxuICBhbmQgaW5pdF9zdGFja2Jhc2UgPSBlbnYuc3RhY2tiYXNlXG4gIGFuZCBpbml0X3N0YXRlID0gZW52LnN0YXRlXG4gIGFuZCBpbml0X2N1cnJfY2hhciA9IGVudi5jdXJyX2NoYXJcbiAgYW5kIGluaXRfbHZhbCA9IGVudi5sdmFsXG4gIGFuZCBpbml0X2VycmZsYWcgPSBlbnYuZXJyZmxhZyBpblxuICBlbnYuc3RhY2tiYXNlIDwtIGVudi5zcCArIDE7XG4gIGVudi5jdXJyX2NoYXIgPC0gc3RhcnQ7XG4gIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgdHJ5XG4gICAgbG9vcCBTdGFydCAoT2JqLnJlcHIgKCkpXG4gIHdpdGggZXhuIC0+XG4gICAgbGV0IGN1cnJfY2hhciA9IGVudi5jdXJyX2NoYXIgaW5cbiAgICBlbnYuYXNwIDwtIGluaXRfYXNwO1xuICAgIGVudi5zcCA8LSBpbml0X3NwO1xuICAgIGVudi5zdGFja2Jhc2UgPC0gaW5pdF9zdGFja2Jhc2U7XG4gICAgZW52LnN0YXRlIDwtIGluaXRfc3RhdGU7XG4gICAgZW52LmN1cnJfY2hhciA8LSBpbml0X2N1cnJfY2hhcjtcbiAgICBlbnYubHZhbCA8LSBpbml0X2x2YWw7XG4gICAgZW52LmVycmZsYWcgPC0gaW5pdF9lcnJmbGFnO1xuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICBZWWV4aXQgdiAtPlxuICAgICAgICBPYmoubWFnaWMgdlxuICAgIHwgXyAtPlxuICAgICAgICBjdXJyZW50X2xvb2thaGVhZF9mdW4gOj1cbiAgICAgICAgICAoZnVuIHRvayAtPlxuICAgICAgICAgICAgaWYgT2JqLmlzX2Jsb2NrIHRva1xuICAgICAgICAgICAgdGhlbiB0YWJsZXMudHJhbnNsX2Jsb2NrLihPYmoudGFnIHRvaykgPSBjdXJyX2NoYXJcbiAgICAgICAgICAgIGVsc2UgdGFibGVzLnRyYW5zbF9jb25zdC4oT2JqLm1hZ2ljIHRvaykgPSBjdXJyX2NoYXIpO1xuICAgICAgICByYWlzZSBleG5cblxubGV0IHBlZWtfdmFsIGVudiBuID1cbiAgT2JqLm1hZ2ljIGVudi52X3N0YWNrLihlbnYuYXNwIC0gbilcblxubGV0IHN5bWJvbF9zdGFydF9wb3MgKCkgPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8PSAwIHRoZW4gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBzdCA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBsZXQgZW4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGlmIHN0IDw+IGVuIHRoZW4gc3QgZWxzZSBsb29wIChpIC0gMSlcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBlbnYucnVsZV9sZW5cblxubGV0IHN5bWJvbF9lbmRfcG9zICgpID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxubGV0IHJoc19zdGFydF9wb3MgbiA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxubGV0IHJoc19lbmRfcG9zIG4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5cbmxldCBzeW1ib2xfc3RhcnQgKCkgPSAoc3ltYm9sX3N0YXJ0X3BvcyAoKSkucG9zX2NudW1cbmxldCBzeW1ib2xfZW5kICgpID0gKHN5bWJvbF9lbmRfcG9zICgpKS5wb3NfY251bVxubGV0IHJoc19zdGFydCBuID0gKHJoc19zdGFydF9wb3MgbikucG9zX2NudW1cbmxldCByaHNfZW5kIG4gPSAocmhzX2VuZF9wb3MgbikucG9zX2NudW1cblxubGV0IGlzX2N1cnJlbnRfbG9va2FoZWFkIHRvayA9XG4gICghY3VycmVudF9sb29rYWhlYWRfZnVuKShPYmoucmVwciB0b2spXG5cbmxldCBwYXJzZV9lcnJvciAoXyA6IHN0cmluZykgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBlbHRcbiAgICB0eXBlIHRcbiAgICB2YWwgZW1wdHk6IHRcbiAgICB2YWwgYWRkOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHNpbmdsZXRvbjogZWx0IC0+IHRcbiAgICB2YWwgcmVtb3ZlOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBpbnRlcjogdCAtPiB0IC0+IHRcbiAgICB2YWwgZGlzam9pbnQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGRpZmY6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGNhcmRpbmFsOiB0IC0+IGludFxuICAgIHZhbCBlbGVtZW50czogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBtaW5fZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtaW5fZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG1heF9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1heF9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiB0IC0+IGVsdFxuICAgIHZhbCBjaG9vc2Vfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZDogZWx0IC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfb3B0OiBlbHQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gICAgdmFsIG1hcDogKGVsdCAtPiBlbHQpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXI6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChlbHQgLT4gZWx0IG9wdGlvbikgLT4gdCAtPiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gICAgdmFsIHNwbGl0OiBlbHQgLT4gdCAtPiB0ICogYm9vbCAqIHRcbiAgICB2YWwgaXNfZW1wdHk6IHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGVsdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIHRvX2xpc3QgOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG9mX2xpc3Q6IGVsdCBsaXN0IC0+IHRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBlbHQgLT4gdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiBlbHQgU2VxLnQgLT4gdCAtPiB0XG4gICAgdmFsIG9mX3NlcSA6IGVsdCBTZXEudCAtPiB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcbiAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2Yge2w6dDsgdjplbHQ7IHI6dDsgaDppbnR9XG5cbiAgICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZVxuICAgICAgIGNoaWxkcmVuIGRpZmZlciBieSBhdCBtb3N0IDIgKilcblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICAgIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gICAgbGV0IGJhbCBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB0IGVsc2VcbiAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdCBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdCBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCBzaW5nbGV0b24geCA9IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIHYgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQgZWxlbWVudHMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkgZWxlbWVudC5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2VsZW1lbnQgeCBsKSB2IHJcblxuICAgIGxldCByZWMgYWRkX21heF9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgbCB2IChhZGRfbWF4X2VsZW1lbnQgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fZWxlbWVudCB2IHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2VsZW1lbnQgdiBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IHI9bHI7IGg9bGh9LCBOb2Rle2w9cmw7IHY9cnY7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgclxuXG4gICAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0IGxcblxuICAgIGxldCByZWMgbWluX2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdF9vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHQgclxuXG4gICAgbGV0IHJlYyBtYXhfZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0X29wdCByXG5cbiAgICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGJhbCB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBqb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBTcGxpdHRpbmcuICBzcGxpdCB4IHMgcmV0dXJucyBhIHRyaXBsZSAobCwgcHJlc2VudCwgcikgd2hlcmVcbiAgICAgICAgLSBsIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA8IHhcbiAgICAgICAgLSByIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA+IHhcbiAgICAgICAgLSBwcmVzZW50IGlzIGZhbHNlIGlmIHMgY29udGFpbnMgbm8gZWxlbWVudCBlcXVhbCB0byB4LFxuICAgICAgICAgIG9yIHRydWUgaWYgcyBjb250YWlucyBhbiBlbGVtZW50IGVxdWFsIHRvIHguICopXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgZmFsc2UsIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCB0cnVlLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBsciwgcHJlcywgcnIpXG5cbiAgICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9IGFzIHQpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpblxuICAgICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpblxuICAgICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIHQyKSAtPiB0MlxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxOyBoPWgxfSwgTm9kZXtsPWwyOyB2PXYyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDEgdGhlbiBhZGQgdjIgczEgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwyLCBfLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgaDEgPSAxIHRoZW4gYWRkIHYxIHMyIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMSwgXywgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpXG5cbiAgICAoKiBTYW1lIGFzIHNwbGl0LCBidXQgY29tcHV0ZSB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXNcbiAgICAgICBvbmx5IGlmIHRoZSBwaXZvdCBlbGVtZW50IGlzIG5vdCBpbiB0aGUgc2V0LiAgVGhlIHJpZ2h0IHN1YnRyZWVcbiAgICAgICBpcyBjb21wdXRlZCBvbiBkZW1hbmQuICopXG5cbiAgICB0eXBlIHNwbGl0X2JpcyA9XG4gICAgICB8IEZvdW5kXG4gICAgICB8IE5vdEZvdW5kIG9mIHQgKiAodW5pdCAtPiB0KVxuXG4gICAgbGV0IHJlYyBzcGxpdF9iaXMgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm90Rm91bmQgKEVtcHR5LCAoZnVuICgpIC0+IEVtcHR5KSlcbiAgICAgIHwgTm9kZXtsOyB2OyByOyBffSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBGb3VuZFxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggbCB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsbCwgcmwpIC0+IE5vdEZvdW5kIChsbCwgKGZ1biAoKSAtPiBqb2luIChybCAoKSkgdiByKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCByIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxyLCBycikgLT4gTm90Rm91bmQgKGpvaW4gbCB2IGxyLCBycilcblxuICAgIGxldCByZWMgZGlzam9pbnQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIHwgKF8sIEVtcHR5KSAtPiB0cnVlXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBpZiBzMSA9PSBzMiB0aGVuIGZhbHNlXG4gICAgICAgICAgZWxzZSBtYXRjaCBzcGxpdF9iaXMgdjEgdDIgd2l0aFxuICAgICAgICAgICAgICBOb3RGb3VuZChsMiwgcjIpIC0+IGRpc2pvaW50IGwxIGwyICYmIGRpc2pvaW50IHIxIChyMiAoKSlcbiAgICAgICAgICAgIHwgRm91bmQgLT4gZmFsc2VcblxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpXG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIHIsIGUpKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICB8IChNb3JlKHYxLCByMSwgZTEpLCBNb3JlKHYyLCByMiwgZTIpKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG5cbiAgICBsZXQgY29tcGFyZSBzMSBzMiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHMxIEVuZCkgKGNvbnNfZW51bSBzMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgczEgczIgPVxuICAgICAgY29tcGFyZSBzMSBzMiA9IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgRW1wdHksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bD1sMTsgdj12MTsgcj1yMX0sIChOb2RlIHtsPWwyOyB2PXYyOyByPXIyfSBhcyB0MikgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IGwxIGwyICYmIHN1YnNldCByMSByMlxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPWwxOyB2PXYxOyByPUVtcHR5OyBoPTB9KSBsMiAmJiBzdWJzZXQgcjEgdDJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9RW1wdHk7IHY9djE7IHI9cjE7IGg9MH0pIHIyICYmIHN1YnNldCBsMSB0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGl0ZXIgZiBsOyBmIHY7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzIGFjY3UgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBmb2xkIGYgciAoZiB2IChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2IHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9KSBhcyB0IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2IHRoZW5cbiAgICAgICAgICAgIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gdCBlbHNlIGpvaW4gbCcgdiByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdlxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IHJmKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZXtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBlbGVtZW50cyBzID1cbiAgICAgIGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2VsdFxuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fZWx0X29wdFxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB2XG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSB2XG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHRyeV9qb2luIGwgdiByID1cbiAgICAgICgqIFtqb2luIGwgdiByXSBjYW4gb25seSBiZSBjYWxsZWQgd2hlbiAoZWxlbWVudHMgb2YgbCA8IHYgPFxuICAgICAgICAgZWxlbWVudHMgb2Ygcik7IHVzZSBbdHJ5X2pvaW4gbCB2IHJdIHdoZW4gdGhpcyBwcm9wZXJ0eSBtYXlcbiAgICAgICAgIG5vdCBob2xkLCBidXQgeW91IGhvcGUgaXQgZG9lcyBob2xkIGluIHRoZSBjb21tb24gY2FzZSAqKVxuICAgICAgaWYgKGwgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSAobWF4X2VsdCBsKSB2IDwgMClcbiAgICAgICYmIChyID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgdiAobWluX2VsdCByKSA8IDApXG4gICAgICB0aGVuIGpvaW4gbCB2IHJcbiAgICAgIGVsc2UgdW5pb24gbCAoYWRkIHYgcilcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuXG4gICAgbGV0IHRyeV9jb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiB0cnlfam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgYmVnaW4gbWF0Y2ggdicgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdicgLT5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHRyeV9jb25jYXQgbCcgcidcbiAgICAgICAgIGVuZFxuXG4gICAgbGV0IG9mX3NvcnRlZF9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBzdWIgbiBsID1cbiAgICAgICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgICAgIHwgMCwgbCAtPiBFbXB0eSwgbFxuICAgICAgICB8IDEsIHgwIDo6IGwgLT4gTm9kZSB7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfSwgbFxuICAgICAgICB8IDIsIHgwIDo6IHgxIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7IHI9RW1wdHk7IGg9Mn0sIGxcbiAgICAgICAgfCAzLCB4MCA6OiB4MSA6OiB4MiA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxO1xuICAgICAgICAgICAgICAgICByPU5vZGV7bD1FbXB0eTsgdj14Mjsgcj1FbXB0eTsgaD0xfTsgaD0yfSwgbFxuICAgICAgICB8IG4sIGwgLT5cbiAgICAgICAgICBsZXQgbmwgPSBuIC8gMiBpblxuICAgICAgICAgIGxldCBsZWZ0LCBsID0gc3ViIG5sIGwgaW5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgbWlkIDo6IGwgLT5cbiAgICAgICAgICAgIGxldCByaWdodCwgbCA9IHN1YiAobiAtIG5sIC0gMSkgbCBpblxuICAgICAgICAgICAgY3JlYXRlIGxlZnQgbWlkIHJpZ2h0LCBsXG4gICAgICBpblxuICAgICAgZnN0IChzdWIgKExpc3QubGVuZ3RoIGwpIGwpXG5cbiAgICBsZXQgdG9fbGlzdCA9IGVsZW1lbnRzXG5cbiAgICBsZXQgb2ZfbGlzdCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlbXB0eVxuICAgICAgfCBbeDBdIC0+IHNpbmdsZXRvbiB4MFxuICAgICAgfCBbeDA7IHgxXSAtPiBhZGQgeDEgKHNpbmdsZXRvbiB4MClcbiAgICAgIHwgW3gwOyB4MTsgeDJdIC0+IGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDNdIC0+IGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDM7IHg0XSAtPiBhZGQgeDQgKGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKSlcbiAgICAgIHwgXyAtPiBvZl9zb3J0ZWRfbGlzdCAoTGlzdC5zb3J0X3VuaXEgT3JkLmNvbXBhcmUgbClcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IGFkZCB4IHMpIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBjID0gc2VxX29mX2VudW1fIChjb25zX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPSByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IHMgPVxuICAgICAgbGV0IHJlYyBhdXggbG93IHMgYyA9IG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyByOyB2OyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IHMgRW5kKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhKydhIHRcbiAgICB2YWwgZW1wdHk6ICdhIHRcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZF90b19saXN0OiBrZXkgLT4gJ2EgLT4gJ2EgbGlzdCB0IC0+ICdhIGxpc3QgdFxuICAgIHZhbCB1cGRhdGU6IGtleSAtPiAoJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHNpbmdsZXRvbjoga2V5IC0+ICdhIC0+ICdhIHRcbiAgICB2YWwgcmVtb3ZlOiBrZXkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG1lcmdlOlxuICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT5cbiAgICAgICdhIHQgLT4gJ2IgdCAtPiAnYyB0XG4gICAgdmFsIHVuaW9uOiAoa2V5IC0+ICdhIC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY2FyZGluYWw6ICdhIHQgLT4gaW50XG4gICAgdmFsIGJpbmRpbmdzOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBtaW5fYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1pbl9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXhfYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1heF9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBjaG9vc2U6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBjaG9vc2Vfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbWFwOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBtYXBpOiAoa2V5IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgZmlsdGVyOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoa2V5IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG4gICAgdmFsIHNwbGl0OiBrZXkgLT4gJ2EgdCAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbToga2V5IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBlcXVhbDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGNvbXBhcmU6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgZm9yX2FsbDogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCB0b19saXN0IDogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgb2ZfbGlzdCA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IGFkZF90b19saXN0IHggZGF0YSBtID1cbiAgICAgIGxldCBhZGQgPSBmdW5jdGlvbiBOb25lIC0+IFNvbWUgW2RhdGFdIHwgU29tZSBsIC0+IFNvbWUgKGRhdGEgOjogbCkgaW5cbiAgICAgIHVwZGF0ZSB4IGFkZCBtXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaXRlciBmIGw7IGYgdiBkOyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcGkgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXBpIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGZvbGQgZiByIChmIHYgZCAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgayBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBrZXlzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGtleS5cblxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2JpbmRpbmcgayB4IGwpIHYgZCByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgZCAoYWRkX21heF9iaW5kaW5nIGsgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgZCByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9iaW5kaW5nIHYgZCByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9iaW5kaW5nIHYgZCBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHI7IGg9bGh9LFxuICAgICAgICAgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiBsZCAoam9pbiBsciB2IGQgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBkIHJsKSBydiByZCByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiBkIHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IGNvbmNhdF9vcl9qb2luIHQxIHYgZCB0MiA9XG4gICAgICBtYXRjaCBkIHdpdGhcbiAgICAgIHwgU29tZSBkIC0+IGpvaW4gdDEgdiBkIHQyXG4gICAgICB8IE5vbmUgLT4gY29uY2F0IHQxIHQyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgTm9uZSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCBTb21lIGQsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgZCByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgZCBsciwgcHJlcywgcnIpXG5cbiAgICBsZXQgcmVjIG1lcmdlIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sIF8pIHdoZW4gaDEgPj0gaGVpZ2h0IHMyIC0+XG4gICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYxIChmIHYxIChTb21lIGQxKSBkMikgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IChfLCBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyfSkgLT5cbiAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjIgKGYgdjIgZDEgKFNvbWUgZDIpKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgbGV0IHJlYyB1bmlvbiBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgIHwgKEVtcHR5LCBzKSB8IChzLCBFbXB0eSkgLT4gc1xuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sXG4gICAgICAgICBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjEgZDEgclxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGNvbmNhdF9vcl9qb2luIGwgdjEgKGYgdjEgZDEgZDIpIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjIgZDIgclxuICAgICAgICAgICAgfCBTb21lIGQxIC0+IGNvbmNhdF9vcl9qb2luIGwgdjIgKGYgdjIgZDEgZDIpIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSBhcyBtIC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2ZCB0aGVuIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gbSBlbHNlIGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtmXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGZ2ZCA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmdmQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGQnIC0+IGpvaW4gbCcgdiBkJyByJ1xuICAgICAgICAgICAgfCBOb25lIC0+IGNvbmNhdCBsJyByJ1xuICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2ZFxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBkIHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgZCByZilcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGtleSAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgZCwgciwgZSkpXG5cbiAgICBsZXQgY29tcGFyZSBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGVxdWFsX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gdHJ1ZVxuICAgICAgICB8IChFbmQsIF8pICAtPiBmYWxzZVxuICAgICAgICB8IChfLCBFbmQpIC0+IGZhbHNlXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIE9yZC5jb21wYXJlIHYxIHYyID0gMCAmJiBjbXAgZDEgZDIgJiZcbiAgICAgICAgICAgIGVxdWFsX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gZXF1YWxfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmluZGluZ3NfYXV4ICgodiwgZCkgOjogYmluZGluZ3NfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGJpbmRpbmdzIHMgPVxuICAgICAgYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fYmluZGluZ1xuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fYmluZGluZ19vcHRcblxuICAgIGxldCB0b19saXN0ID0gYmluZGluZ3NcbiAgICBsZXQgb2ZfbGlzdCBicyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBlbXB0eSBic1xuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLHYpIC0+IGFkZCBrIHYgbSkgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT4gU2VxLkNvbnMgKChrLHYpLCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBtID1cbiAgICAgIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIG0gRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgZDsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgZCwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPlxuICAgICAgICAgIFNlcS5Db25zICgoayx2KSwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID1cbiAgICAgIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgbSA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgbSBjID0gbWF0Y2ggbSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCBkLCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgZCwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgbSBFbmQpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIGMgOiAnYSBsaXN0OyBtdXRhYmxlIGxlbiA6IGludDsgfVxuXG5leGNlcHRpb24gRW1wdHlcblxubGV0IGNyZWF0ZSAoKSA9IHsgYyA9IFtdOyBsZW4gPSAwOyB9XG5cbmxldCBjbGVhciBzID0gcy5jIDwtIFtdOyBzLmxlbiA8LSAwXG5cbmxldCBjb3B5IHMgPSB7IGMgPSBzLmM7IGxlbiA9IHMubGVuOyB9XG5cbmxldCBwdXNoIHggcyA9IHMuYyA8LSB4IDo6IHMuYzsgcy5sZW4gPC0gcy5sZW4gKyAxXG5cbmxldCBwb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBoZFxuICB8IFtdICAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgcG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IFNvbWUgaGRcbiAgfCBbXSAgICAgLT4gTm9uZVxuXG5sZXQgZHJvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBfaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxXG4gIHwgW10gLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBoZFxuICB8IFtdICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IFNvbWUgaGRcbiAgfCBbXSAgICAtPiBOb25lXG5cbmxldCBpc19lbXB0eSBzID0gKHMuYyA9IFtdKVxuXG5sZXQgbGVuZ3RoIHMgPSBzLmxlblxuXG5sZXQgaXRlciBmIHMgPSBMaXN0Lml0ZXIgZiBzLmNcblxubGV0IGZvbGQgZiBhY2MgcyA9IExpc3QuZm9sZF9sZWZ0IGYgYWNjIHMuY1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBMaXN0LnRvX3NlcSBzLmNcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBzID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBzIGc7XG4gIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRnJhbmNvaXMgUG90dGllciwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgY2VsbCA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiB7IGNvbnRlbnQ6ICdhOyBtdXRhYmxlIG5leHQ6ICdhIGNlbGwgfVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgZmlyc3Q6ICdhIGNlbGw7XG4gIG11dGFibGUgbGFzdDogJ2EgY2VsbFxufVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBmaXJzdCA9IE5pbDtcbiAgbGFzdCA9IE5pbFxufVxuXG5sZXQgY2xlYXIgcSA9XG4gIHEubGVuZ3RoIDwtIDA7XG4gIHEuZmlyc3QgPC0gTmlsO1xuICBxLmxhc3QgPC0gTmlsXG5cbmxldCBhZGQgeCBxID1cbiAgbGV0IGNlbGwgPSBDb25zIHtcbiAgICBjb250ZW50ID0geDtcbiAgICBuZXh0ID0gTmlsXG4gIH0gaW5cbiAgbWF0Y2ggcS5sYXN0IHdpdGhcbiAgfCBOaWwgLT5cbiAgICBxLmxlbmd0aCA8LSAxO1xuICAgIHEuZmlyc3QgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuICB8IENvbnMgbGFzdCAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoICsgMTtcbiAgICBsYXN0Lm5leHQgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuXG5sZXQgcHVzaCA9XG4gIGFkZFxuXG5sZXQgcGVlayBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBjb250ZW50XG5cbmxldCBwZWVrX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IFNvbWUgY29udGVudFxuXG5sZXQgdG9wID1cbiAgcGVla1xuXG5sZXQgdGFrZSBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIGNvbnRlbnRcblxubGV0IHRha2Vfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIFNvbWUgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIFNvbWUgY29udGVudFxuXG5sZXQgcG9wID1cbiAgdGFrZVxuXG5sZXQgY29weSA9XG4gIGxldCByZWMgY29weSBxX3JlcyBwcmV2IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IHFfcmVzLmxhc3QgPC0gcHJldjsgcV9yZXNcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCByZXMgPSBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IGluXG4gICAgICBiZWdpbiBtYXRjaCBwcmV2IHdpdGhcbiAgICAgIHwgTmlsIC0+IHFfcmVzLmZpcnN0IDwtIHJlc1xuICAgICAgfCBDb25zIHAgLT4gcC5uZXh0IDwtIHJlc1xuICAgICAgZW5kO1xuICAgICAgY29weSBxX3JlcyByZXMgbmV4dFxuICBpblxuICBmdW4gcSAtPiBjb3B5IHsgbGVuZ3RoID0gcS5sZW5ndGg7IGZpcnN0ID0gTmlsOyBsYXN0ID0gTmlsIH0gTmlsIHEuZmlyc3RcblxubGV0IGlzX2VtcHR5IHEgPVxuICBxLmxlbmd0aCA9IDBcblxubGV0IGxlbmd0aCBxID1cbiAgcS5sZW5ndGhcblxubGV0IGl0ZXIgPVxuICBsZXQgcmVjIGl0ZXIgZiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgZiBjb250ZW50O1xuICAgICAgaXRlciBmIG5leHRcbiAgaW5cbiAgZnVuIGYgcSAtPiBpdGVyIGYgcS5maXJzdFxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgZm9sZCBmIGFjY3UgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gYWNjdVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgY29udGVudCBpblxuICAgICAgZm9sZCBmIGFjY3UgbmV4dFxuICBpblxuICBmdW4gZiBhY2N1IHEgLT4gZm9sZCBmIGFjY3UgcS5maXJzdFxuXG5sZXQgdHJhbnNmZXIgcTEgcTIgPVxuICBpZiBxMS5sZW5ndGggPiAwIHRoZW5cbiAgICBtYXRjaCBxMi5sYXN0IHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHExLmxlbmd0aDtcbiAgICAgIHEyLmZpcnN0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcbiAgICB8IENvbnMgbGFzdCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHEyLmxlbmd0aCArIHExLmxlbmd0aDtcbiAgICAgIGxhc3QubmV4dCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcSA9XG4gIGxldCByZWMgYXV4IGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICB8IE5pbCAtPiBTZXEuTmlsXG4gICAgfCBDb25zIHsgY29udGVudD14OyBuZXh0OyB9IC0+IFNlcS5Db25zICh4LCBhdXggbmV4dClcbiAgaW5cbiAgYXV4IHEuZmlyc3RcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBxID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBxIGc7XG4gIHFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbigqIFRoZSBbaW5uZXJfYnVmZmVyXSB0eXBlIGVuc3VyZXMgdGhhdCB0aGUgW2xlbmd0aF0gYW5kIFtidWZmZXJdIGZpZWxkcyBhcmVcbiAgIGFsd2F5cyBzeW5jaHJvbml6ZWQsIFtsZW5ndGggPSBCeXRlcy5sZW5ndGggYnVmZmVyXSwgZXZlbiBpbiBwcmVzZW5jZVxuICAgb2YgZGF0YSByYWNlcy5cbiopXG50eXBlIGlubmVyX2J1ZmZlciA9IHtcbiAgYnVmZmVyOiBieXRlcztcbiAgbGVuZ3RoOiBpbnQ7XG59XG5cbnR5cGUgdCA9XG4ge211dGFibGUgaW5uZXIgOiBpbm5lcl9idWZmZXI7XG4gIG11dGFibGUgcG9zaXRpb24gOiBpbnQ7XG4gIGluaXRpYWxfYnVmZmVyIDogYnl0ZXN9XG4oKiBJbnZhcmlhbnRzOiBhbGwgcGFydHMgb2YgdGhlIGNvZGUgcHJlc2VydmUgdGhlIGludmFyaWFudHMgdGhhdDpcbiAgIC0gW2lubmVyLmxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBpbm5lci5idWZmZXJdXG4gICBJbiBhYnNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIGFsc28gaGF2ZVxuICAgLSBbMCA8PSBiLnBvc2l0aW9uIDw9IGIuaW5uZXIubGVuZ3RoXVxuXG4gICBOb3RlIGluIHBhcnRpY3VsYXIgdGhhdCBbYi5wb3NpdGlvbiA9IGIuaW5uZXIubGVuZ3RoXSBpcyBsZWdhbCxcbiAgIGl0IG1lYW5zIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsIGFuZCB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5kZWRcbiAgIGJlZm9yZSBhbnkgZnVydGhlciBhZGRpdGlvbi4gKilcblxubGV0IGNyZWF0ZSBuID1cbiBsZXQgbiA9IGlmIG4gPCAxIHRoZW4gMSBlbHNlIG4gaW5cbiBsZXQgbiA9IGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBTeXMubWF4X3N0cmluZ19sZW5ndGggZWxzZSBuIGluXG4gbGV0IHMgPSBCeXRlcy5jcmVhdGUgbiBpblxuIHsgaW5uZXIgPSB7IGJ1ZmZlciA9IHM7IGxlbmd0aCA9IG59OyBwb3NpdGlvbiA9IDA7IGluaXRpYWxfYnVmZmVyID0gc31cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxubGV0IHRvX2J5dGVzIGIgPSBCeXRlcy5zdWIgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJ5dGVzLnN1Yl9zdHJpbmcgYi5pbm5lci5idWZmZXIgb2ZzIGxlblxuXG5cbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJ5dGVzLmJsaXQgc3JjLmlubmVyLmJ1ZmZlciBzcmNvZmYgZHN0IGRzdG9mZiBsZW5cblxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBvZnMgPCAwIHx8IG9mcyA+PSBwb3NpdGlvbiB8fCBwb3NpdGlvbiA+IGxlbmd0aCB0aGVuXG4gICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5udGhcIlxuICBlbHNlIEJ5dGVzLnVuc2FmZV9nZXQgYnVmZmVyIG9mc1xuXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cblxubGV0IGNsZWFyIGIgPSBiLnBvc2l0aW9uIDwtIDBcblxubGV0IHJlc2V0IGIgPVxuICBiLnBvc2l0aW9uIDwtIDA7XG4gIGxldCBpbm5lciA9XG4gICAgeyBidWZmZXIgPSBiLmluaXRpYWxfYnVmZmVyOyBsZW5ndGggPSBCeXRlcy5sZW5ndGggYi5pbml0aWFsX2J1ZmZlciB9XG4gIGluXG4gIGIuaW5uZXIgPC0gaW5uZXJcblxuKCogW3Jlc2l6ZSBiIG1vcmVdIGVuc3VyZXMgdGhhdCBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5pbm5lci5sZW5ndGhdIGhvbGRzXG4gICBieSBkeW5hbWljYWxseSBleHRlbmRpbmcgW2IuaW5uZXJdIGlmIG5lY2Vzc2FyeSAtLSBhbmQgdGh1c1xuICAgaW5jcmVhc2luZyBbYi5pbm5lci5sZW5ndGhdLlxuKilcbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IG9sZF9wb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCBvbGRfbGVuID0gYi5pbm5lci5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICB3aGlsZSBvbGRfcG9zICsgbW9yZSA+ICFuZXdfbGVuIGRvIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBpZiBvbGRfcG9zICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICB0aGVuIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZSBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiXG4gIGVuZDtcbiAgbGV0IG5ld19idWZmZXIgPSBCeXRlcy5jcmVhdGUgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCeXRlcy5ibGl0IGIuaW5uZXIuYnVmZmVyIDAgbmV3X2J1ZmZlciAwIGIucG9zaXRpb247XG4gIGIuaW5uZXIgPC0geyBidWZmZXIgPSBuZXdfYnVmZmVyOyBsZW5ndGggPSAhbmV3X2xlbiB9XG5cbigqIE5vdGU6XG4gICAgU29tZSBvZiB0aGUgZnVuY3Rpb25zIGJlbG93IGhhdmUgYSBmYXN0IHBhdGggd2hlbiB0aGUgaW5uZXJcbiAgYnVmZmVyIGRvZXNuJ3QgbmVlZCB0byBiZSBleHRlbmRlZC5cbiAgICBJbiB0aGlzIGNhc2UsIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB1bnNhZmUgYWNjZXNzZXMgb24gdGhlXG4gIGNvbnRlbnRzIG9mIHRoZSBbaW5uZXJdIGZpZWxkIHNpbmNlIGl0cyBmaWVsZHMgYXJlIGltbXV0YWJsZS5cbiAgSW4gcHJlc2VuY2Ugb2YgZGF0YSByYWNlcywgd2UgbWF5IGFjY2VzcyB0aGUgd3JvbmcgaW5uZXIgYnVmZmVyLCBidXQgd2VcbiAgd2lsbCB1c2UgdGhpcyBidWZmZXIgc2FmZWx5LlxuICBBcyBzb29uIGFzIHdlIG5lZWQgdG8gcmVzaXplIHRoZSBidWZmZXIsIHdlIGZhbGwgYmFjayB0byBzYWZlIGFjY2Vzc2VzLlxuKilcblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGlmIHBvcyA+PSBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBCeXRlcy5zZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBjXG4gICkgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxubGV0IHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCA9IDRcbmxldCB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4ID0gNFxuXG5sZXQgcmVjIGFkZF91dGZfOF91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl84X3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl84X3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZiZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmxlX3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZsZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIG9mZnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlblxuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjsgbGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyAwIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5pbm5lci5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCBpblxuICAgICBpZiBzdG9wID0gc3RhcnQgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIGZpbmRfaWRlbnQgcyBqIGxpbSB3aXRoXG4gICAgICAgICB8IGlkZW50LCBuZXh0X2kgLT5cbiAgICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgJyQnO1xuICAgICAgICAgICBzdWJzdCAnICcgalxuICAgICAgICAgZW5kXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cztcbiAgICAgICAgIGlmIGN1cnJlbnQgPD4gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAxO1xuICAgIHNldF9pbnQ4IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDggYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMjtcbiAgICBzZXRfaW50MTYgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MTYgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgNDtcbiAgICBzZXRfaW50MzIgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MzIgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgODtcbiAgICBzZXRfaW50NjQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50NjQgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIFhhdmllciBMZXJveSBhbmQgUGFzY2FsIEN1b3EsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRcbmV4dGVybmFsIGNyZWF0ZTogdW5pdCAtPiB0ID0gXCJjYW1sX21sX211dGV4X25ld1wiXG5leHRlcm5hbCBsb2NrOiB0IC0+IHVuaXQgPSBcImNhbWxfbWxfbXV0ZXhfbG9ja1wiXG5leHRlcm5hbCB0cnlfbG9jazogdCAtPiBib29sID0gXCJjYW1sX21sX211dGV4X3RyeV9sb2NrXCJcbmV4dGVybmFsIHVubG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X3VubG9ja1wiXG5cbigqIHByaXZhdGUgcmUtZXhwb3J0ICopXG5leHRlcm5hbCByZXJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmVyYWlzZVwiXG5cbigqIGNhbm5vdCBpbmxpbmUsIG90aGVyd2lzZSBmbGFtYmRhIG1pZ2h0IG1vdmUgY29kZSBhcm91bmQuICopXG5sZXRbQGlubGluZSBuZXZlcl0gcHJvdGVjdCBtIGYgPVxuICBsb2NrIG07XG4gIG1hdGNoIGYoKSB3aXRoXG4gIHwgeCAtPlxuICAgIHVubG9jayBtOyB4XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAoKiBOT1RFOiBbdW5sb2NrXSBkb2VzIG5vdCBwb2xsIGZvciBhc3luY2hyb25vdXMgZXhjZXB0aW9ucyAqKVxuICAgIHVubG9jayBtO1xuICAgIHJlcmFpc2UgZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBDb2xsw6hnZSBkZSBGcmFuY2UgYW5kIElOUklBIFBhcmlzICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFNlbWFwaG9yZXMgKilcblxudHlwZSBzZW0gPSB7XG4gIG11dDogTXV0ZXgudDsgICAgICAgICAgICAgICAgICAgICAgICAgKCogcHJvdGVjdHMgW3ZdICopXG4gIG11dGFibGUgdjogaW50OyAgICAgICAgICAgICAgICAgICAgICAgKCogdGhlIGN1cnJlbnQgdmFsdWUgKilcbiAgbm9uemVybzogQ29uZGl0aW9uLnQgICAgICAgICAgICAgICAgICAoKiBzaWduYWxlZCB3aGVuIFt2ID4gMF0gKilcbn1cblxubW9kdWxlIENvdW50aW5nID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSB2ID1cbiAgaWYgdiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlbWFwaG9yZS5Db3VudGluZy5pbml0OiB3cm9uZyBpbml0aWFsIHZhbHVlXCI7XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7IHY7IG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgaWYgcy52IDwgbWF4X2ludCB0aGVuIGJlZ2luXG4gICAgcy52IDwtIHMudiArIDE7XG4gICAgQ29uZGl0aW9uLnNpZ25hbCBzLm5vbnplcm87XG4gICAgTXV0ZXgudW5sb2NrIHMubXV0XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICAgIHJhaXNlIChTeXNfZXJyb3IgXCJTZW1hcGhvcmUuQ291bnRpbmcucmVsZWFzZTogb3ZlcmZsb3dcIilcbiAgZW5kXG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gcy52IC0gMTtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gcy52IC0gMTsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxubGV0IGdldF92YWx1ZSBzID0gcy52XG5cbmVuZFxuXG5tb2R1bGUgQmluYXJ5ID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSBiID1cbiAgeyBtdXQgPSBNdXRleC5jcmVhdGUoKTtcbiAgICB2ID0gaWYgYiB0aGVuIDEgZWxzZSAwO1xuICAgIG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgcy52IDwtIDE7XG4gIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IGFjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHdoaWxlIHMudiA9IDAgZG8gQ29uZGl0aW9uLndhaXQgcy5ub256ZXJvIHMubXV0IGRvbmU7XG4gIHMudiA8LSAwO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IHRyeV9hY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBsZXQgcmV0ID0gaWYgcy52ID0gMCB0aGVuIGZhbHNlIGVsc2UgKHMudiA8LSAwOyB0cnVlKSBpblxuICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gIHJldFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuXG4gICgqIFRoZSBsYXlvdXRzIG9mIFtzdGF0ZV0gYW5kIFt0ZXJtX3N5bmNdIGFyZSBoYXJkLWNvZGVkIGluXG4gICAgIFtydW50aW1lL2RvbWFpbi5jXSAqKVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUnVubmluZ1xuICAgIHwgRmluaXNoZWQgb2YgKCdhLCBleG4pIHJlc3VsdCBbQHdhcm5pbmcgXCItdW51c2VkLWNvbnN0cnVjdG9yXCJdXG5cbiAgdHlwZSAnYSB0ZXJtX3N5bmMgPSB7XG4gICAgKCogcHJvdGVjdGVkIGJ5IFttdXRdICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6ICdhIHN0YXRlIFtAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl0gO1xuICAgIG11dCA6IE11dGV4LnQgO1xuICAgIGNvbmQgOiBDb25kaXRpb24udCA7XG4gIH1cblxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+ICdhKSAtPiAnYSB0ZXJtX3N5bmMgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIiBbQEBub2FsbG9jXVxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHQgPSB7XG4gIGRvbWFpbiA6IFJhdy50O1xuICB0ZXJtX3N5bmMgOiAnYSBSYXcudGVybV9zeW5jO1xufVxuXG5tb2R1bGUgRExTID0gc3RydWN0XG5cbiAgbW9kdWxlIE9ial9vcHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgbm9uZSA6IHRcbiAgICB2YWwgc29tZSA6ICdhIC0+IHRcbiAgICB2YWwgaXNfc29tZSA6IHQgLT4gYm9vbFxuXG4gICAgKCoqIFt1bnNhZmVfZ2V0IG9ial0gbWF5IG9ubHkgYmUgY2FsbGVkIHNhZmVseVxuICAgICAgICBpZiBbaXNfc29tZV0gaXMgdHJ1ZS5cblxuICAgICAgICBbdW5zYWZlX2dldCAoc29tZSB2KV0gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICBbT2JqLm9iaiAoT2JqLnJlcHIgdildLiAqKVxuICAgIHZhbCB1bnNhZmVfZ2V0IDogdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBPYmoudFxuICAgIGxldCBub25lID0gT2JqLnJlcHIgKHJlZiAwKVxuICAgIGxldCBzb21lIHYgPSBPYmoucmVwciB2XG4gICAgbGV0IGlzX3NvbWUgb2JqID0gKG9iaiAhPSBub25lKVxuICAgIGxldCB1bnNhZmVfZ2V0IG9iaiA9IE9iai5vYmogb2JqXG4gIGVuZFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqX29wdC50IGFycmF5XG5cbiAgZXh0ZXJuYWwgZ2V0X2Rsc19zdGF0ZSA6IHVuaXQgLT4gZGxzX3N0YXRlID0gXCIlZGxzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2Rsc19zdGF0ZSA6IGRsc19zdGF0ZSAtPiB1bml0ID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gZGxzX3N0YXRlIC0+IGJvb2wgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZV9kbHMgKCkgPVxuICAgIGxldCBzdCA9IEFycmF5Lm1ha2UgOCBPYmpfb3B0Lm5vbmUgaW5cbiAgICBzZXRfZGxzX3N0YXRlIHN0XG5cbiAgbGV0IF8gPSBjcmVhdGVfZGxzICgpXG5cbiAgdHlwZSAnYSBrZXkgPSBpbnQgKiAodW5pdCAtPiAnYSlcblxuICBsZXQga2V5X2NvdW50ZXIgPSBBdG9taWMubWFrZSAwXG5cbiAgdHlwZSBrZXlfaW5pdGlhbGl6ZXIgPVxuICAgIEtJOiAnYSBrZXkgKiAoJ2EgLT4gJ2EpIC0+IGtleV9pbml0aWFsaXplclxuXG4gIGxldCBwYXJlbnRfa2V5cyA9IEF0b21pYy5tYWtlIChbXSA6IGtleV9pbml0aWFsaXplciBsaXN0KVxuXG4gIGxldCByZWMgYWRkX3BhcmVudF9rZXkga2kgPVxuICAgIGxldCBsID0gQXRvbWljLmdldCBwYXJlbnRfa2V5cyBpblxuICAgIGlmIG5vdCAoQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwYXJlbnRfa2V5cyBsIChraSA6OiBsKSlcbiAgICB0aGVuIGFkZF9wYXJlbnRfa2V5IGtpXG5cbiAgbGV0IG5ld19rZXkgP3NwbGl0X2Zyb21fcGFyZW50IGluaXRfb3JwaGFuID1cbiAgICBsZXQgaWR4ID0gQXRvbWljLmZldGNoX2FuZF9hZGQga2V5X2NvdW50ZXIgMSBpblxuICAgIGxldCBrID0gKGlkeCwgaW5pdF9vcnBoYW4pIGluXG4gICAgYmVnaW4gbWF0Y2ggc3BsaXRfZnJvbV9wYXJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzcGxpdCAtPiBhZGRfcGFyZW50X2tleSAoS0koaywgc3BsaXQpKVxuICAgIGVuZDtcbiAgICBrXG5cbiAgKCogSWYgbmVjZXNzYXJ5LCBncm93IHRoZSBjdXJyZW50IGRvbWFpbidzIGxvY2FsIHN0YXRlIGFycmF5IHN1Y2ggdGhhdCBbaWR4XVxuICAgKiBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheS4gKilcbiAgbGV0IHJlYyBtYXliZV9ncm93IGlkeCA9XG4gICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgIGxldCBzeiA9IEFycmF5Lmxlbmd0aCBzdCBpblxuICAgIGlmIGlkeCA8IHN6IHRoZW4gc3RcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGNvbXB1dGVfbmV3X3NpemUgcyA9XG4gICAgICAgIGlmIGlkeCA8IHMgdGhlbiBzIGVsc2UgY29tcHV0ZV9uZXdfc2l6ZSAoMiAqIHMpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19zeiA9IGNvbXB1dGVfbmV3X3NpemUgc3ogaW5cbiAgICAgIGxldCBuZXdfc3QgPSBBcnJheS5tYWtlIG5ld19zeiBPYmpfb3B0Lm5vbmUgaW5cbiAgICAgIEFycmF5LmJsaXQgc3QgMCBuZXdfc3QgMCBzejtcbiAgICAgICgqIFdlIHdhbnQgYSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIHNhZmUgd2l0aCByZXNwZWN0IHRvXG4gICAgICAgICBzaW5nbGUtZG9tYWluIG11bHRpLXRocmVhZGluZzogcmV0cnkgaWYgdGhlIERMUyBzdGF0ZSBoYXNcbiAgICAgICAgIGNoYW5nZWQgdW5kZXIgb3VyIGZlZXQuXG4gICAgICAgICBOb3RlIHRoYXQgdGhlIG51bWJlciBvZiByZXRyaWVzIHdpbGwgYmUgdmVyeSBzbWFsbCBpblxuICAgICAgICAgY29udGVuZGVkIHNjZW5hcmlvcywgYXMgdGhlIGFycmF5IG9ubHkgZ3Jvd3MsIHdpdGhcbiAgICAgICAgIGV4cG9uZW50aWFsIHJlc2l6aW5nLiAqKVxuICAgICAgaWYgY29tcGFyZV9hbmRfc2V0X2Rsc19zdGF0ZSBzdCBuZXdfc3RcbiAgICAgIHRoZW4gbmV3X3N0XG4gICAgICBlbHNlIG1heWJlX2dyb3cgaWR4XG4gICAgZW5kXG5cbiAgbGV0IHNldCAodHlwZSBhKSAoaWR4LCBfaW5pdCkgKHggOiBhKSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gZW5zdXJlcyB0aGF0IGZsYW1iZGEgZG9lcyBub3QgbG9vayBhdCB0aGUgdHlwZSBvZlxuICAgICAqIFt4XSwgd2hpY2ggbWF5IGJlIGEgW2Zsb2F0XSBhbmQgY29uY2x1ZGUgdGhhdCB0aGUgW3N0XSBpcyBhIGZsb2F0IGFycmF5LlxuICAgICAqIFdlIGRvIG5vdCB3YW50IE9DYW1sJ3MgZmxvYXQgYXJyYXkgb3B0aW1pc2F0aW9uIGtpY2tpbmcgaW4gaGVyZS4gKilcbiAgICBzdC4oaWR4KSA8LSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhcnJheV9jb21wYXJlX2FuZF9zZXQgYSBpIG9sZHZhbCBuZXd2YWwgPVxuICAgICgqIE5vdGU6IHdlIGNhbm5vdCB1c2UgW0Bwb2xsIGVycm9yXSBkdWUgdG8gdGhlXG4gICAgICAgYWxsb2NhdGlvbnMgb24gYS4oaSkgaW4gdGhlIERvdWJsZV9hcnJheSBjYXNlLiAqKVxuICAgIGxldCBjdXJ2YWwgPSBhLihpKSBpblxuICAgIGlmIGN1cnZhbCA9PSBvbGR2YWwgdGhlbiAoXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSBuZXd2YWw7XG4gICAgICB0cnVlXG4gICAgKSBlbHNlIGZhbHNlXG5cbiAgbGV0IGdldCAodHlwZSBhKSAoKGlkeCwgaW5pdCkgOiBhIGtleSkgOiBhID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCBvYmogPSBzdC4oaWR4KSBpblxuICAgIGlmIE9ial9vcHQuaXNfc29tZSBvYmpcbiAgICB0aGVuIChPYmpfb3B0LnVuc2FmZV9nZXQgb2JqIDogYSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA6IGEgPSBpbml0ICgpIGluXG4gICAgICBsZXQgbmV3X29iaiA9IE9ial9vcHQuc29tZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2KSBpblxuICAgICAgKCogQXQgdGhpcyBwb2ludCwgW3N0XSBvciBbc3QuKGlkeCldIG1heSBoYXZlIGJlZW4gY2hhbmdlZFxuICAgICAgICAgYnkgYW5vdGhlciB0aHJlYWQgb24gdGhlIHNhbWUgZG9tYWluLlxuXG4gICAgICAgICBJZiBbc3RdIGNoYW5nZWQsIGl0IHdhcyByZXNpemVkIGludG8gYSBsYXJnZXIgdmFsdWUsXG4gICAgICAgICB3ZSBjYW4ganVzdCByZXVzZSB0aGUgbmV3IHZhbHVlLlxuXG4gICAgICAgICBJZiBbc3QuKGlkeCldIGNoYW5nZWQsIHdlIGRyb3AgdGhlIGN1cnJlbnQgdmFsdWUgdG8gYXZvaWRcbiAgICAgICAgIGxldHRpbmcgb3RoZXIgdGhyZWFkcyBvYnNlcnZlIGEgJ3JldmVydCcgdGhhdCBmb3JnZXRzXG4gICAgICAgICBwcmV2aW91cyBtb2RpZmljYXRpb25zLiAqKVxuICAgICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgICAgaWYgYXJyYXlfY29tcGFyZV9hbmRfc2V0IHN0IGlkeCBvYmogbmV3X29ialxuICAgICAgdGhlbiB2XG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgICgqIGlmIHN0LihpZHgpIGNoYW5nZWQsIHNvbWVvbmUgbXVzdCBoYXZlIGluaXRpYWxpemVkXG4gICAgICAgICAgIHRoZSBrZXkgaW4gdGhlIG1lYW50aW1lLiAqKVxuICAgICAgICBsZXQgdXBkYXRlZF9vYmogPSBzdC4oaWR4KSBpblxuICAgICAgICBpZiBPYmpfb3B0LmlzX3NvbWUgdXBkYXRlZF9vYmpcbiAgICAgICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IHVwZGF0ZWRfb2JqIDogYSlcbiAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gIHR5cGUga2V5X3ZhbHVlID0gS1YgOiAnYSBrZXkgKiAnYSAtPiBrZXlfdmFsdWVcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IGtleV92YWx1ZSBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoS0kgKGssIHNwbGl0KSkgLT4gS1YgKGssIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDoga2V5X3ZhbHVlIGxpc3QpID1cbiAgICBMaXN0Lml0ZXIgKGZ1biAoS1YgKGssIHYpKSAtPiBzZXQgayB2KSBsXG5lbmRcblxuKCoqKioqKioqIElkZW50aXR5ICoqKioqKioqKiopXG5cbmxldCBnZXRfaWQgeyBkb21haW47IF8gfSA9IGRvbWFpblxuXG5sZXQgc2VsZiAoKSA9IFJhdy5zZWxmICgpXG5cbmxldCBpc19tYWluX2RvbWFpbiAoKSA9IChzZWxmICgpIDo+IGludCkgPSAwXG5cbigqKioqKioqKiBDYWxsYmFja3MgKioqKioqKioqKilcblxuKCogZmlyc3Qgc3Bhd24sIGRvbWFpbiBzdGFydHVwIGFuZCBhdCBleGl0IGZ1bmN0aW9uYWxpdHkgKilcbmxldCBmaXJzdF9kb21haW5fc3Bhd25lZCA9IEF0b21pYy5tYWtlIGZhbHNlXG5cbmxldCBmaXJzdF9zcGF3bl9mdW5jdGlvbiA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgYmVmb3JlX2ZpcnN0X3NwYXduIGYgPVxuICBpZiBBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImZpcnN0IGRvbWFpbiBhbHJlYWR5IHNwYXduZWRcIilcbiAgZWxzZSBiZWdpblxuICAgIGxldCBvbGRfZiA9ICFmaXJzdF9zcGF3bl9mdW5jdGlvbiBpblxuICAgIGxldCBuZXdfZiAoKSA9IG9sZF9mICgpOyBmICgpIGluXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gbmV3X2ZcbiAgZW5kXG5cbmxldCBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCkgPVxuICBpZiBub3QgKEF0b21pYy5nZXQgZmlyc3RfZG9tYWluX3NwYXduZWQpIHRoZW4gYmVnaW5cbiAgICBBdG9taWMuc2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRydWU7XG4gICAgIWZpcnN0X3NwYXduX2Z1bmN0aW9uKCk7XG4gICAgKCogUmVsZWFzZSB0aGUgb2xkIGZ1bmN0aW9uICopXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gKGZ1biAoKSAtPiAoKSlcbiAgZW5kXG5cbmxldCBhdF9leGl0X2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT4gKGZ1biAoKSAtPiAoKSkpXG5cbmxldCBhdF9leGl0IGYgPVxuICBsZXQgb2xkX2V4aXQgOiB1bml0IC0+IHVuaXQgPSBETFMuZ2V0IGF0X2V4aXRfa2V5IGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgZiAoKTsgb2xkX2V4aXQgKClcbiAgaW5cbiAgRExTLnNldCBhdF9leGl0X2tleSBuZXdfZXhpdFxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gIGxldCBmIDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBmICgpXG5cbmxldCBfID0gU3RkbGliLmRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IDo9IGRvX2F0X2V4aXRcblxuKCoqKioqKiogQ3JlYXRpb24gYW5kIFRlcm1pbmF0aW9uICoqKioqKioqKVxuXG5sZXQgc3Bhd24gZiA9XG4gIGRvX2JlZm9yZV9maXJzdF9zcGF3biAoKTtcbiAgbGV0IHBrID0gRExTLmdldF9pbml0aWFsX2tleXMgKCkgaW5cblxuICAoKiBbdGVybV9zeW5jXSBpcyB1c2VkIHRvIHN5bmNocm9uaXplIHdpdGggdGhlIGpvaW5pbmcgZG9tYWlucyAqKVxuICBsZXQgdGVybV9zeW5jID1cbiAgICBSYXcueyBzdGF0ZSA9IFJ1bm5pbmcgO1xuICAgICAgICAgIG11dCA9IE11dGV4LmNyZWF0ZSAoKSA7XG4gICAgICAgICAgY29uZCA9IENvbmRpdGlvbi5jcmVhdGUgKCkgfVxuICBpblxuXG4gIGxldCBib2R5ICgpID1cbiAgICBtYXRjaFxuICAgICAgRExTLmNyZWF0ZV9kbHMgKCk7XG4gICAgICBETFMuc2V0X2luaXRpYWxfa2V5cyBwaztcbiAgICAgIGxldCByZXMgPSBmICgpIGluXG4gICAgICByZXNcbiAgICB3aXRoXG4gICAgKCogUnVuIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzIHdoZW4gdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBlaXRoZXJcbiAgICAgICB0ZXJtaW5hdGVzIG5vcm1hbGx5IG9yIGV4Y2VwdGlvbmFsbHkuICopXG4gICAgfCByZXMgLT5cbiAgICAgICAgKCogSWYgdGhlIGRvbWFpbiBjb21wdXRhdGlvbiB0ZXJtaW5hdGVkIG5vcm1hbGx5LCBidXQgdGhlXG4gICAgICAgICAgIFthdF9leGl0XSBjYWxsYmFja3MgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgdGhlbiByZXR1cm4gdGhlXG4gICAgICAgICAgIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgZG9fYXRfZXhpdCAoKTtcbiAgICAgICAgcmVzXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICgqIElmIGJvdGggdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBhbmQgdGhlIFthdF9leGl0XSBjYWxsYmFja3NcbiAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucywgdGhlbiBpZ25vcmUgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIGFuZCByZXR1cm4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgKHRyeSBkb19hdF9leGl0ICgpIHdpdGggXyAtPiAoKSk7XG4gICAgICAgIHJhaXNlIGV4blxuICBpblxuICBsZXQgZG9tYWluID0gUmF3LnNwYXduIGJvZHkgdGVybV9zeW5jIGluXG4gIHsgZG9tYWluIDsgdGVybV9zeW5jIH1cblxubGV0IGpvaW4geyB0ZXJtX3N5bmMgOyBfIH0gPVxuICBsZXQgb3BlbiBSYXcgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCB0ZXJtX3N5bmMuc3RhdGUgd2l0aFxuICAgIHwgUnVubmluZyAtPlxuICAgICAgICBDb25kaXRpb24ud2FpdCB0ZXJtX3N5bmMuY29uZCB0ZXJtX3N5bmMubXV0O1xuICAgICAgICBsb29wICgpXG4gICAgfCBGaW5pc2hlZCByZXMgLT5cbiAgICAgICAgcmVzXG4gIGluXG4gIG1hdGNoIE11dGV4LnByb3RlY3QgdGVybV9zeW5jLm11dCBsb29wIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleCAtPiByYWlzZSBleFxuXG5sZXQgcmVjb21tZW5kZWRfZG9tYWluX2NvdW50ID0gUmF3LmdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmlnblxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0cy4gV2hlbiB0aGUgZmxhZyBpcyBkaXNhYmxlZCwgaXQgd2lsbCByZWplY3QgYW55XG4gICAgICBmb3JtYXQgdGhhdCBpcyBub3QgYWNjZXB0ZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uXG5cbiAgICAgIEEgdHlwaWNhbCBleGFtcGxlIHdvdWxkIGJlIFwiJSsgZFwiOiBzcGVjaWZ5aW5nIGJvdGggJysnIChpZiB0aGVcbiAgICAgIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGggYSAnKycgdG8gZ2V0IHRoZSBzYW1lIHdpZHRoIGFzXG4gICAgICBuZWdhdGl2ZSBudW1iZXJzKSBhbmQgJyAnIChpZiB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aFxuICAgICAgYSBzcGFjZSkgZG9lcyBub3QgbWFrZSBzZW5zZSwgYnV0IHRoZSBsZWdhY3kgKDwgNC4wMilcbiAgICAgIGltcGxlbWVudGF0aW9uIHdhcyBoYXBweSB0byBqdXN0IGlnbm9yZSB0aGUgc3BhY2UuXG4gICopXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kIG1zZyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgbXNnXG4gIGluXG5cbiAgKCogVXNlZCB3aGVuIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCAob3IgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdCkgd2FzIGVuY291bnRlcmVkXG4gICAgICB1bmV4cGVjdGVkbHkuICopXG4gIGxldCB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBlbmRfaW5kXG4gICAgICBcInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdFwiXG4gIGluXG5cbiAgKCogVXNlZCBmb3IgJTBjOiBubyBvdGhlciB3aWR0aHMgYXJlIGltcGxlbWVudGVkICopXG4gIGxldCBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmRcbiAgICAgIFwibm9uLXplcm8gd2lkdGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnNcIlxuICBpblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gb3B0aW9uIGRlcGVuZGVuY3lcbiAgICAgcHJvYmxlbS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X3dpdGhvdXQgc3RyX2luZCBjIHMgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICclYycgd2l0aG91dCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBjIHNcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gdW5leHBlY3RlZFxuICAgICBjaGFyYWN0ZXIuICopXG4gIGxldCBleHBlY3RlZF9jaGFyYWN0ZXIgc3RyX2luZCBleHBlY3RlZCByZWFkID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCByZWFkICVDXCJcbiAgICAgIHN0ciBzdHJfaW5kIGV4cGVjdGVkIHJlYWRcbiAgaW5cblxuICAoKiBQYXJzZSB0aGUgc3RyaW5nIGZyb20gYmVnX2luZCAoaW5jbHVkZWQpIHRvIGVuZF9pbmQgKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBwYXJzZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBiZWdfaW5kIGVuZF9pbmQgLT4gcGFyc2VfbGl0ZXJhbCBiZWdfaW5kIGJlZ19pbmQgZW5kX2luZFxuXG4gICgqIFJlYWQgbGl0ZXJhbCBjaGFyYWN0ZXJzIHVwIHRvICclJyBvciAnQCcgc3BlY2lhbCBjaGFyYWN0ZXJzLiAqKVxuICBhbmQgcGFyc2VfbGl0ZXJhbCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgRW5kX29mX2Zvcm1hdCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfZm9ybWF0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9hZnRlcl9hdCAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9saXRlcmFsIGxpdF9zdGFydCAoc3RyX2luZCArIDEpIGVuZF9pbmRcblxuICAoKiBQYXJzZSBhIGZvcm1hdCBhZnRlciAnJScgKilcbiAgYW5kIHBhcnNlX2Zvcm1hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIGVuZF9pbmQgLT4gcGFyc2VfaWduIHBjdF9pbmQgKHBjdF9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgYW5kIHBhcnNlX2lnbiA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXycgLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCAoc3RyX2luZCsxKSBlbmRfaW5kIHRydWVcbiAgICAgIHwgXyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBmYWxzZVxuXG4gIGFuZCBwYXJzZV9mbGFncyA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiAoXywgXywgZSwgZikgZm10X2ViYlxuICA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBpZ24gLT5cbiAgICBsZXQgemVybyA9IHJlZiBmYWxzZSBhbmQgbWludXMgPSByZWYgZmFsc2VcbiAgICBhbmQgcGx1cyA9IHJlZiBmYWxzZSBhbmQgc3BhY2UgPSByZWYgZmFsc2VcbiAgICBhbmQgaGFzaCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzZXRfZmxhZyBzdHJfaW5kIGZsYWcgPVxuICAgICAgKCogaW4gbGVnYWN5IG1vZGUsIGR1cGxpY2F0ZSBmbGFncyBhcmUgYWNjZXB0ZWQgKilcbiAgICAgIGlmICFmbGFnICYmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZHVwbGljYXRlIGZsYWcgJUNcIlxuICAgICAgICAgIHN0ciBzdHJfaW5kIHN0ci5bc3RyX2luZF07XG4gICAgICBmbGFnIDo9IHRydWU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHJlYWRfZmxhZ3Mgc3RyX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICcwJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHplcm87ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJy0nIC0+IHNldF9mbGFnIHN0cl9pbmQgbWludXM7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnKycgLT4gc2V0X2ZsYWcgc3RyX2luZCBwbHVzOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcjJyAtPiBzZXRfZmxhZyBzdHJfaW5kIGhhc2g7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnICcgLT4gc2V0X2ZsYWcgc3RyX2luZCBzcGFjZTsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZFxuICAgICAgICAgICF6ZXJvICFtaW51cyAhcGx1cyAhaGFzaCAhc3BhY2UgaWduXG4gICAgICBlbmRcbiAgICBpblxuICAgIHJlYWRfZmxhZ3Mgc3RyX2luZFxuXG4gICgqIFRyeSB0byByZWFkIGEgZGlnaXRhbCBvciBhICcqJyBwYWRkaW5nLiAqKVxuICBhbmQgcGFyc2VfcGFkZGluZyA6IHR5cGUgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHplcm8gbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhZHR5ID0gbWF0Y2ggemVybywgbWludXMgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gUmlnaHRcbiAgICAgIHwgZmFsc2UsIHRydWUgIC0+IExlZnRcbiAgICAgIHwgIHRydWUsIGZhbHNlIC0+IFplcm9zXG4gICAgICB8ICB0cnVlLCB0cnVlICAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMZWZ0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICctJyBcIjBcIiBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgbGV0IG5ld19pbmQsIHdpZHRoID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAoTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiAoQXJnX3BhZGRpbmcgcGFkdHkpXG4gICAgfCBfIC0+XG4gICAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgICB8IExlZnQgIC0+XG4gICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLScgXCJwYWRkaW5nXCI7XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIHwgWmVyb3MgLT5cbiAgICAgICAgICgqIGEgJzAnIHBhZGRpbmcgaW5kaWNhdGlvbiBub3QgZm9sbG93ZWQgYnkgYW55dGhpbmcgc2hvdWxkXG4gICAgICAgICAgIGJlIGludGVycHJldGVkIGFzIGEgUmlnaHQgcGFkZGluZyBvZiB3aWR0aCAwLiBUaGlzIGlzIHVzZWRcbiAgICAgICAgICAgYnkgc2Nhbm5pbmcgY29udmVyc2lvbnMgJTBzIGFuZCAlMGMgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgKExpdF9wYWRkaW5nIChSaWdodCwgMCkpXG4gICAgICB8IFJpZ2h0IC0+XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIGVuZFxuXG4gICgqIElzIHByZWNpc2lvbiBkZWZpbmVkPyAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcGFkZGluZyA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcuJyAtPlxuICAgICAgcGFyc2VfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkXG4gICAgfCBzeW1iIC0+XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIE5vX3ByZWNpc2lvbiBwYWQgc3ltYlxuXG4gICgqIFJlYWQgdGhlIGRpZ2l0YWwgb3IgJyonIHByZWNpc2lvbi4gKilcbiAgYW5kIHBhcnNlX3ByZWNpc2lvbiA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kID1cbiAgICAgIGxldCBuZXdfaW5kLCBwcmVjID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiBwcmVjKSBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmRcbiAgICB8ICgnKycgfCAnLScpIGFzIHN5bWIgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT5cbiAgICAgICgqIExlZ2FjeSBtb2RlIHdvdWxkIGFjY2VwdCBhbmQgaWdub3JlICcrJyBvciAnLScgYmVmb3JlIHRoZVxuICAgICAgICAgaW50ZWdlciBkZXNjcmliaW5nIHRoZSBkZXNpcmVkIHByZWNpc2lvbjsgbm90ZSB0aGF0IHRoaXNcbiAgICAgICAgIGNhbm5vdCBoYXBwZW4gZm9yIHBhZGRpbmcgd2lkdGgsIGFzICcrJyBhbmQgJy0nIGFscmVhZHkgaGF2ZVxuICAgICAgICAgYSBzZW1hbnRpY3MgdGhlcmUuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgdGhlIGlkZWEgKHN1cHBvcnRlZCBieSB0aGlzIHR3ZWFrKSB0aGF0IHdpZHRoIGFuZFxuICAgICAgICAgcHJlY2lzaW9uIGxpdGVyYWxzIGFyZSBcImludGVnZXIgbGl0ZXJhbHNcIiBpbiB0aGUgT0NhbWwgc2Vuc2UgaXNcbiAgICAgICAgIHN0aWxsIGJsYXRhbnRseSB3cm9uZywgYXMgMTIzXzQ1NiBvciAweEZGIGFyZSByZWplY3RlZC4gKilcbiAgICAgIHBhcnNlX2xpdGVyYWwgKG1pbnVzIHx8IHN5bWIgPSAnLScpIChzdHJfaW5kICsgMSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gcGFkIEFyZ19wcmVjaXNpb25cbiAgICB8IF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIG5vdGUgdGhhdCBsZWdhY3kgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBpZ25vcmUgJy4nIHdpdGhvdXRcbiAgICAgICAgICAgYSBudW1iZXIgKGFzIGl0IGRvZXMgZm9yIHBhZGRpbmcgaW5kaWNhdGlvbnMpLCBidXRcbiAgICAgICAgICAgaW50ZXJwcmV0cyBpdCBhcyAnLjAnICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIDApXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLicgXCJwcmVjaXNpb25cIlxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiB0IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfY29udiAodHlwZSB1KSAodHlwZSB2KSAocGFkcHJlYyA6ICh1LCB2KSBwYWRkaW5nKSA9XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIHByZWMgcGFkcHJlYyBzdHIuW3N0cl9pbmRdIGluXG4gICAgKCogaW4gbGVnYWN5IG1vZGUsIHNvbWUgZm9ybWF0cyAoJXMgYW5kICVTKSBhY2NlcHQgYSB3ZWlyZCBtaXggb2ZcbiAgICAgICBwYWRkaW5nIGFuZCBwcmVjaXNpb24sIHdoaWNoIGlzIG1lcmdlZCBhcyBhIHNpbmdsZSBwYWRkaW5nXG4gICAgICAgaW5mb3JtYXRpb24uIEZvciBleGFtcGxlLCBpbiAlLjEwcyB0aGUgcHJlY2lzaW9uIGlzIGltcGxpY2l0bHlcbiAgICAgICB1bmRlcnN0b29kIGFzIHBhZGRpbmcgJTEwcywgYnV0IHRoZSBsZWZ0LXBhZGRpbmcgY29tcG9uZW50IG1heVxuICAgICAgIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBsZWZ0IHBhZGRpbmcgb3IgYSBuZWdhdGl2ZSBwcmVjaXNpb246XG4gICAgICAgJS0uM3MgYW5kICUuLTNzIGFyZSBlcXVpdmFsZW50IHRvICUtM3MgKilcbiAgICBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAtPiAoXG4gICAgICBtYXRjaCBtaW51cywgcHJlYyB3aXRoXG4gICAgICAgIHwgXywgTm9fcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgTm9fcGFkZGluZ1xuICAgICAgICB8IGZhbHNlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKSlcbiAgICAgICAgfCB0cnVlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKExlZnQsIG4pKVxuICAgICAgICB8IGZhbHNlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIFJpZ2h0KVxuICAgICAgICB8IHRydWUsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgTGVmdClcbiAgICApXG4gICAgfCBwYWQgLT4gcGFyc2VfY29udiBwYWRcblxuICAoKiBDYXNlIGFuYWx5c2lzIG9uIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9jb252ZXJzaW9uIDogdHlwZSB4IHkgeiB0IHUgdiBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiAoeCwgeSkgcGFkZGluZyAtPlxuICAgICAgICAoeiwgdCkgcHJlY2lzaW9uIC0+ICh1LCB2KSBwYWRkaW5nIC0+IGNoYXIgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyBwYWRwcmVjIHN5bWIgLT5cbiAgICAoKiBGbGFncyB1c2VkIHRvIGNoZWNrIG9wdGlvbiB1c2FnZXMvY29tcGF0aWJpbGl0aWVzLiAqKVxuICAgIGxldCBwbHVzX3VzZWQgID0gcmVmIGZhbHNlIGFuZCBoYXNoX3VzZWQgPSByZWYgZmFsc2VcbiAgICBhbmQgc3BhY2VfdXNlZCA9IHJlZiBmYWxzZSBhbmQgaWduX3VzZWQgICA9IHJlZiBmYWxzZVxuICAgIGFuZCBwYWRfdXNlZCAgID0gcmVmIGZhbHNlIGFuZCBwcmVjX3VzZWQgID0gcmVmIGZhbHNlIGluXG5cbiAgICAoKiBBY2Nlc3MgdG8gb3B0aW9ucywgdXBkYXRlIGZsYWdzLiAqKVxuICAgIGxldCBnZXRfcGx1cyAgICAoKSA9IHBsdXNfdXNlZCAgOj0gdHJ1ZTsgcGx1c1xuICAgIGFuZCBnZXRfaGFzaCAgICgpID0gaGFzaF91c2VkIDo9IHRydWU7IGhhc2hcbiAgICBhbmQgZ2V0X3NwYWNlICAgKCkgPSBzcGFjZV91c2VkIDo9IHRydWU7IHNwYWNlXG4gICAgYW5kIGdldF9pZ24gICAgICgpID0gaWduX3VzZWQgICA6PSB0cnVlOyBpZ25cbiAgICBhbmQgZ2V0X3BhZCAgICAgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZFxuICAgIGFuZCBnZXRfcHJlYyAgICAoKSA9IHByZWNfdXNlZCAgOj0gdHJ1ZTsgcHJlY1xuICAgIGFuZCBnZXRfcGFkcHJlYyAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkcHJlYyBpblxuXG4gICAgbGV0IGdldF9pbnRfcGFkICgpIDogKHgseSkgcGFkZGluZyA9XG4gICAgICAoKiAlNS4zZCBpcyBhY2NlcHRlZCBhbmQgbWVhbmluZ2Z1bDogcGFkIHRvIGxlbmd0aCA1IHdpdGhcbiAgICAgICAgIHNwYWNlcywgYnV0IGZpcnN0IHBhZCB3aXRoIHplcm9zIHVwdG8gbGVuZ3RoIDMgKDAtcGFkZGluZ1xuICAgICAgICAgaXMgdGhlIGludGVycHJldGF0aW9uIG9mIFwicHJlY2lzaW9uXCIgZm9yIGludGVnZXIgZm9ybWF0cykuXG5cbiAgICAgICAgICUwNS4zZCBpcyByZWR1bmRhbnQ6IHBhZCB0byBsZW5ndGggNSAqd2l0aCB6ZXJvcyosIGJ1dFxuICAgICAgICAgZmlyc3QgcGFkIHdpdGggemVyb3MuLi4gVG8gYWRkIGluc3VsdCB0byB0aGUgaW5qdXJ5LCB0aGVcbiAgICAgICAgIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSAwLXBhZGRpbmcgaW5kaWNhdGlvbiBhbmRcbiAgICAgICAgIGRvZXMgdGhlIDUgcGFkZGluZyB3aXRoIHNwYWNlcyBpbnN0ZWFkLiBXZSByZXVzZSB0aGlzXG4gICAgICAgICBpbnRlcnByZXRhdGlvbiBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IHN0YXRpY2FsbHkgcmVqZWN0IHRoaXNcbiAgICAgICAgIGZvcm1hdCB3aGVuIHRoZSBsZWdhY3kgbW9kZSBpcyBkaXNhYmxlZCwgdG8gcHJvdGVjdCBzdHJpY3RcbiAgICAgICAgIHVzZXJzIGZyb20gdGhpcyBjb3JuZXIgY2FzZS4gKilcbiAgICAgICBtYXRjaCBnZXRfcGFkICgpLCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICAgICB8IHBhZCwgTm9fcHJlY2lzaW9uIC0+IHBhZFxuICAgICAgICAgfCBOb19wYWRkaW5nLCBfICAgICAtPiBOb19wYWRkaW5nXG4gICAgICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgbiksIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKVxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcywgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBMaXRfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWRcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkIGluXG5cbiAgICAoKiBDaGVjayB0aGF0IHBhZHR5IDw+IFplcm9zLiAqKVxuICAgIGxldCBjaGVja19ub18wIHN5bWIgKHR5cGUgYSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpIDogKGEsYikgcGFkZGluZyA9XG4gICAgICBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoKExlZnQgfCBSaWdodCksIF8pIC0+IHBhZFxuICAgICAgfCBBcmdfcGFkZGluZyAoTGVmdCB8IFJpZ2h0KSAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcyAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgaW5cblxuICAgICgqIEdldCBwYWRkaW5nIGFzIGEgcGFkX29wdGlvbiAoc2VlIFwiJV9cIiwgXCIle1wiLCBcIiUoXCIgYW5kIFwiJVtcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgb3B0X29mX3BhZCBjICh0eXBlIGEpICh0eXBlIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgPSBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IE5vbmVcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aCkgLT4gU29tZSB3aWR0aFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInMCdcIlxuICAgICAgfCBMaXRfcGFkZGluZyAoTGVmdCwgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIictJ1wiXG4gICAgICB8IEFyZ19wYWRkaW5nIF8gLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInKidcIlxuICAgIGluXG4gICAgbGV0IGdldF9wYWRfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWQgKCkpIGluXG4gICAgbGV0IGdldF9wYWRwcmVjX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkcHJlYyAoKSkgaW5cblxuICAgICgqIEdldCBwcmVjaXNpb24gYXMgYSBwcmVjX29wdGlvbiAoc2VlIFwiJV9mXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IGdldF9wcmVjX29wdCAoKSA9IG1hdGNoIGdldF9wcmVjICgpIHdpdGhcbiAgICAgIHwgTm9fcHJlY2lzaW9uICAgICAgIC0+IE5vbmVcbiAgICAgIHwgTGl0X3ByZWNpc2lvbiBuZGVjIC0+IFNvbWUgbmRlY1xuICAgICAgfCBBcmdfcHJlY2lzaW9uICAgICAgLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicqJ1wiXG4gICAgaW5cblxuICAgIGxldCBmbXRfcmVzdWx0ID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnLCcgLT5cbiAgICAgIHBhcnNlIHN0cl9pbmQgZW5kX2luZFxuICAgIHwgJ2MnIC0+XG4gICAgICBsZXQgY2hhcl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoQ2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgc2Nhbl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlMGMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChTY2FuX25leHRfY2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggZ2V0X3BhZF9vcHQgJ2MnIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSAwIC0+IHNjYW5fZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSBfbiAtPlxuICAgICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yXG4gICAgICAgICAgIHRoZW4gaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZFxuICAgICAgICAgICBlbHNlICgqIGxlZ2FjeSBpZ25vcmVzICVjIHdpZHRocyAqKSBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgZW5kXG4gICAgfCAnQycgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jYW1sX2NoYXIsZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChDYW1sX2NoYXIgZm10X3Jlc3QpXG4gICAgfCAncycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChTdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnUycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfY2FtbF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKENhbWxfc3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+XG4gICAgICBsZXQgaWNvbnYgPSBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IFRva2VuX2NvdW50ZXIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIHwgJ24nIHwgJ0wnIHdoZW4gc3RyX2luZD1lbmRfaW5kIHx8IG5vdCAoaXNfaW50X2Jhc2Ugc3RyLltzdHJfaW5kXSkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IGNvdW50ZXJfb2ZfY2hhciBzeW1iIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50MzIgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ24nIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpXG4gICAgICAgICAgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdMJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50NjQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2YnIHwgJ2UnIHwgJ0UnIHwgJ2cnIHwgJ0cnIHwgJ0YnIHwgJ2gnIHwgJ0gnIC0+XG4gICAgICBsZXQgZmNvbnYgPVxuICAgICAgICBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kXG4gICAgICAgICAgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zsb2F0IChnZXRfcGFkX29wdCAnXycsIGdldF9wcmVjX29wdCAoKSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoRmxvYXQgKGZjb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdiJyB8ICdCJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9ib29sIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChCb29sIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2EnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQWxwaGEgZm10X3Jlc3QpXG4gICAgfCAndCcgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChUaGV0YSBmbXRfcmVzdClcbiAgICB8ICdyJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChSZWFkZXIgZm10X3Jlc3QpXG4gICAgfCAnIScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGbHVzaCBmbXRfcmVzdClcbiAgICB8ICgnJScgfCAnQCcpIGFzIGMgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKGMsIGZtdF9yZXN0KSlcbiAgICB8ICd7JyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJ30nIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICd7Jywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnKCcgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICcpJyBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJygnLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICdbJyAtPlxuICAgICAgbGV0IG5leHRfaW5kLCBjaGFyX3NldCA9IHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdfJywgY2hhcl9zZXQpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ1snLCBjaGFyX3NldCwgZm10X3Jlc3QpKVxuICAgIHwgJy0nIHwgJysnIHwgJyMnIHwgJyAnIHwgJ18nIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBmbGFnICVDIGlzIG9ubHkgYWxsb3dlZCBhZnRlciB0aGUgJyUlJywgYmVmb3JlIHBhZGRpbmcgYW5kIHByZWNpc2lvblwiXG4gICAgICAgIHN0ciBwY3RfaW5kIHN5bWJcbiAgICB8IF8gLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGludmFsaWQgY29udmVyc2lvbiBcXFwiJSUlY1xcXCJcIiBzdHIgKHN0cl9pbmQgLSAxKSBzeW1iXG4gICAgaW5cbiAgICAoKiBDaGVjayBmb3IgdW51c2VkIG9wdGlvbnMsIGFuZCByZWplY3QgdGhlbSBhcyBpbmNvbXBhdGlibGUuXG5cbiAgICAgICBTdWNoIGNoZWNrcyBuZWVkIHRvIGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLCBhcyB0aGUgbGVnYWN5XG4gICAgICAgcGFyc2VyIHNpbGVudGx5IGlnbm9yZWQgaW5jb21wYXRpYmxlIGZsYWdzLiAqKVxuICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlbiBiZWdpblxuICAgIGlmIG5vdCAhcGx1c191c2VkICYmIHBsdXMgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIjtcbiAgICBpZiBub3QgIWhhc2hfdXNlZCAmJiBoYXNoIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCI7XG4gICAgaWYgbm90ICFzcGFjZV91c2VkICYmIHNwYWNlIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCI7XG4gICAgaWYgbm90ICFwYWRfdXNlZCAgJiYgUGFkZGluZ19FQkIgcGFkIDw+IFBhZGRpbmdfRUJCIE5vX3BhZGRpbmcgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCJgcGFkZGluZydcIjtcbiAgICBpZiBub3QgIXByZWNfdXNlZCAmJiBQcmVjaXNpb25fRUJCIHByZWMgPD4gUHJlY2lzaW9uX0VCQiBOb19wcmVjaXNpb24gdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIChpZiBpZ24gdGhlbiAnXycgZWxzZSBzeW1iKVxuICAgICAgICBcImBwcmVjaXNpb24nXCI7XG4gICAgaWYgaWduICYmIHBsdXMgdGhlbiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJysnXCI7XG4gICAgZW5kO1xuICAgICgqIHRoaXMgbGFzdCB0ZXN0IG11c3Qgbm90IGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLFxuICAgICAgIGFzIGlnbm9yaW5nIGl0IHdvdWxkIHR5cGljYWxseSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdHlwaW5nXG4gICAgICAgdGhhbiB3aGF0IHRoZSBsZWdhY3kgcGFyc2VyIHVzZWQgKilcbiAgICBpZiBub3QgIWlnbl91c2VkICYmIGlnbiB0aGVuXG4gICAgICBiZWdpbiBtYXRjaCBzeW1iIHdpdGhcbiAgICAgICAgKCogYXJndW1lbnQtbGVzcyBmb3JtYXRzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpbiBsZWdhY3kgbW9kZSAqKVxuICAgICAgICB8ICgnQCcgfCAnJScgfCAnIScgfCAnLCcpIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+ICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJ18nXCJcbiAgICAgIGVuZDtcbiAgICBmbXRfcmVzdWx0XG5cbiAgKCogUGFyc2UgZm9ybWF0dGluZyBpbmZvcm1hdGlvbiAoYWZ0ZXIgJ0AnKS4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX2F0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIEVuZF9vZl9mb3JtYXQpKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnWycgLT5cbiAgICAgICAgcGFyc2VfdGFnIGZhbHNlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX2JveCwgZm10X3Jlc3QpKVxuICAgICAgfCAneycgLT5cbiAgICAgICAgcGFyc2VfdGFnIHRydWUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICd9JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfdGFnLCBmbXRfcmVzdCkpXG4gICAgICB8ICcsJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCxcIiwgMCwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJAIFwiLCAxLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnOycgLT5cbiAgICAgICAgcGFyc2VfZ29vZF9icmVhayAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJz8nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGRmx1c2gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZvcmNlX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGbHVzaF9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBwYXJzZV9tYWdpY19zaXplIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfYXQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIHdoZW4gc3RyX2luZCArIDEgPCBlbmRfaW5kICYmIHN0ci5bc3RyX2luZCArIDFdID0gJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX3BlcmNlbnQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBmbXRfcmVzdCkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgYywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8bmFtZT4gYWZ0ZXIgXCJAe1wiIG9yIFwiQFtcIi4gKilcbiAgYW5kIHBhcnNlX3RhZyA6IHR5cGUgZSBmIC4gYm9vbCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGlzX29wZW5fdGFnIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIHRyeVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIGxldCBpbmQgPSBTdHJpbmcuaW5kZXhfZnJvbSBzdHIgKHN0cl9pbmQgKyAxKSAnPicgaW5cbiAgICAgICAgaWYgaW5kID49IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgc3RyX2luZCAoaW5kIC0gc3RyX2luZCArIDEpIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKGluZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgKGluZCArIDEpIGluXG4gICAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChzdWJfZm10LCBzdWJfc3RyKSBpblxuICAgICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKEVuZF9vZl9mb3JtYXQsIFwiXCIpIGluXG4gICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDx3aWR0aCBvZmZzZXQ+IGFmdGVyIFwiQDtcIi4gKilcbiAgYW5kIHBhcnNlX2dvb2RfYnJlYWsgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbGV0IG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgfHwgc3RyLltzdHJfaW5kXSA8PiAnPCcgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiAoXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgd2lkdGggPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfM10gd2l0aFxuICAgICAgICAgICAgICB8ICc+JyAtPlxuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfMy1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF8zICsgMSwgQnJlYWsgKHMsIHdpZHRoLCAwKVxuICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF80LCBvZmZzZXQgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMyBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzQgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF81XSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF81LXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxLCBCcmVhayAocywgd2lkdGgsIG9mZnNldClcbiAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICApXG4gICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIHN0cl9pbmQsIEJyZWFrIChcIkA7XCIsIDEsIDApXG4gICAgaW5cbiAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSB0aGUgc2l6ZSBpbiBhIDxuPi4gKilcbiAgYW5kIHBhcnNlX21hZ2ljX3NpemUgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbWF0Y2hcbiAgICAgIHRyeVxuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCBzaXplID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfM10gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQgLSAyKSAoc3RyX2luZF8zIC0gc3RyX2luZCArIDMpIGluXG4gICAgICAgICAgU29tZSAoc3RyX2luZF8zICsgMSwgTWFnaWNfc2l6ZSAocywgc2l6ZSkpXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgU29tZSAobmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0KSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyAnPCcsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSBhbmQgY29uc3RydWN0IGEgY2hhciBzZXQuICopXG4gIGFuZCBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG5cbiAgICBsZXQgY2hhcl9zZXQgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgICBsZXQgYWRkX2NoYXIgYyA9XG4gICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYztcbiAgICBpblxuICAgIGxldCBhZGRfcmFuZ2UgYyBjJyA9XG4gICAgICBmb3IgaSA9IGludF9vZl9jaGFyIGMgdG8gaW50X29mX2NoYXIgYycgZG9cbiAgICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IChjaGFyX29mX2ludCBpKTtcbiAgICAgIGRvbmU7XG4gICAgaW5cblxuICAgIGxldCBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQgPVxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiAnJSUnIGFsb25lIGlzIG5vdCBhY2NlcHRlZCBpbiBjaGFyYWN0ZXIgc2V0cywgXFxcbiAgICAgICAgIHVzZSAlJSUlIGluc3RlYWQgYXQgcG9zaXRpb24gJWQuXCIgc3RyIHN0cl9pbmRcbiAgICBpblxuXG4gICAgKCogUGFyc2UgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIGNoYXIgc2V0LiAqKVxuICAgIGxldCByZWMgcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBsZXQgYyA9IHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFBhcnNlIHRoZSBjb250ZW50IG9mIGEgY2hhciBzZXQgdW50aWwgdGhlIGZpcnN0ICddJy4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfY29udGVudCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBUZXN0IGZvciByYW5nZSBpbiBjaGFyIHNldC4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcbiAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgd2hlbiBjID0gJyUnIC0+XG4gICAgICAgIGFkZF9jaGFyIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBpZiBjID0gJyUnIHRoZW4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kO1xuICAgICAgICAoKiBub3RlIHRoYXQgJ0AnIGFsb25lIGlzIGFjY2VwdGVkLCBhcyBkb25lIGJ5IHRoZSBsZWdhY3lcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb247IHRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSByZXF1aXJlcyAlQFxuICAgICAgICAgICBzbyB3ZSBjb3VsZCB3YXJuIG9uIHRoYXQgKilcbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgYydcblxuICAgICgqIE1hbmFnZSByYW5nZSBpbiBjaGFyIHNldCAoZXhjZXB0IGlmIHRoZSAnLScgdGhlIGxhc3QgY2hhciBiZWZvcmUgJ10nKSAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICclJyAtPlxuICAgICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgLT5cbiAgICAgICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDIpIGVuZF9pbmRcbiAgICAgICAgICB8IF8gLT4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICBpblxuICAgIGxldCBzdHJfaW5kLCByZXZlcnNlID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgICAgfCAnXicgLT4gc3RyX2luZCArIDEsIHRydWVcbiAgICAgICAgfCBfIC0+IHN0cl9pbmQsIGZhbHNlIGluXG4gICAgbGV0IG5leHRfaW5kID0gcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgbGV0IGNoYXJfc2V0ID0gZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0IGluXG4gICAgbmV4dF9pbmQsIChpZiByZXZlcnNlIHRoZW4gcmV2X2NoYXJfc2V0IGNoYXJfc2V0IGVsc2UgY2hhcl9zZXQpXG5cbiAgKCogQ29uc3VtZSBhbGwgbmV4dCBzcGFjZXMsIHJhaXNlIGFuIEZhaWx1cmUgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBpZiBzdHIuW3N0cl9pbmRdID0gJyAnIHRoZW4gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBlbHNlIHN0cl9pbmRcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZSBpZiBlbmRfaW5kIGlzXG4gICAgIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgYWNjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IGFjYyAqIDEwICsgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCcpIGluXG4gICAgICBpZiBuZXdfYWNjID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGludGVnZXIgJWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAlZFwiXG4gICAgICAgICAgc3RyIG5ld19hY2MgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCBuZXdfYWNjXG4gICAgfCBfIC0+IHN0cl9pbmQsIGFjY1xuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlXG4gICAgIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX2ludGVnZXIgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMFxuICAgIHwgJy0nIC0+IChcbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgIGxldCBuZXh0X2luZCwgbiA9IHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCAwIGluXG4gICAgICAgIG5leHRfaW5kLCAtblxuICAgICAgfCBjIC0+XG4gICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiZGlnaXRcIiBjXG4gICAgKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBBZGQgYSBsaXRlcmFsIHRvIGEgZm9ybWF0IGZyb20gYSBsaXRlcmFsIGNoYXJhY3RlciBzdWItc2VxdWVuY2UuICopXG4gIGFuZCBhZGRfbGl0ZXJhbCA6IHR5cGUgYSBkIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IChhLCBfLCBfLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGZtdCAtPiBtYXRjaCBzdHJfaW5kIC0gbGl0X3N0YXJ0IHdpdGhcbiAgICB8IDAgICAgLT4gRm10X0VCQiBmbXRcbiAgICB8IDEgICAgLT4gRm10X0VCQiAoQ2hhcl9saXRlcmFsIChzdHIuW2xpdF9zdGFydF0sIGZtdCkpXG4gICAgfCBzaXplIC0+IEZtdF9FQkIgKFN0cmluZ19saXRlcmFsIChTdHJpbmcuc3ViIHN0ciBsaXRfc3RhcnQgc2l6ZSwgZm10KSlcblxuICAoKiBTZWFyY2ggdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzdWItZm9ybWF0XG4gICAgIChpLmUuIHRoZSBjb3JyZXNwb25kaW5nIFwiJX1cIiBvciBcIiUpXCIpICopXG4gIGFuZCBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBzdWItZm9ybWF0LCBcXFxuICAgICAgICAgZXhwZWN0ZWQgXFxcIiUlJWNcXFwiIGF0IGNoYXJhY3RlciBudW1iZXIgJWRcIiBzdHIgYyBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJyUnIC0+XG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGlmIHN0ci5bc3RyX2luZCArIDFdID0gYyB0aGVuICgqIEVuZCBvZiBmb3JtYXQgZm91bmQgKikgc3RyX2luZCBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgfCAnXycgLT5cbiAgICAgICAgICAoKiBTZWFyY2ggZm9yIFwiJV8oXCIgb3IgXCIlX3tcIi4gKilcbiAgICAgICAgICBpZiBzdHJfaW5kICsgMiA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAyXSB3aXRoXG4gICAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgY1xuICAgICAgICAgIGVuZFxuICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICgqICV7Li4uJX0gc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICgqICUoLi4uJSkgc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICd9JyAtPlxuICAgICAgICAgICgqIEVycm9yOiAlKC4uLiV9LiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICcpJ1wiICd9J1xuICAgICAgICB8ICcpJyAtPlxuICAgICAgICAgICgqIEVycm9yOiAley4uLiUpLiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICd9J1wiICcpJ1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICBlbmRcbiAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAoKiBDaGVjayBpZiBzeW1iIGlzIGEgdmFsaWQgaW50IGNvbnZlcnNpb24gYWZ0ZXIgXCIlbFwiLCBcIiVuXCIgb3IgXCIlTFwiICopXG4gIGFuZCBpc19pbnRfYmFzZSBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gICgqIENvbnZlcnQgYSBjaGFyIChsLCBuIG9yIEwpIHRvIGl0cyBhc3NvY2lhdGVkIGNvdW50ZXIuICopXG4gIGFuZCBjb3VudGVyX29mX2NoYXIgc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2wnIC0+IExpbmVfY291bnRlciAgfCAnbicgLT4gQ2hhcl9jb3VudGVyXG4gICAgfCAnTCcgLT4gVG9rZW5fY291bnRlciB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgaW50X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbWF0Y2ggcGx1cywgaGFzaCwgc3BhY2UsIHN5bWIgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9kICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfaVxuICAgIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2QnIC0+IEludF9zZCB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdpJyAtPiBJbnRfc2lcbiAgICB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfcGQgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X3BpXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAneCcgLT4gSW50X3ggIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ1gnIC0+IEludF9YXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAneCcgLT4gSW50X0N4IHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ1gnIC0+IEludF9DWFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ28nIC0+IEludF9vXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnbycgLT4gSW50X0NvXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAndScgLT4gSW50X3VcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdkJyAtPiBJbnRfQ2RcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdpJyAtPiBJbnRfQ2lcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd1JyAtPiBJbnRfQ3VcbiAgICB8IF8sIHRydWUsIF8sICd4JyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ3hcbiAgICB8IF8sIHRydWUsIF8sICdYJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ1hcbiAgICB8IF8sIHRydWUsIF8sICdvJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ29cbiAgICB8IF8sIHRydWUsIF8sICgnZCcgfCAnaScgfCAndScpIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBmYWxzZSBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCJcbiAgICB8IHRydWUsIF8sIHRydWUsIF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIHRydWUsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiXG4gICAgfCB0cnVlLCBfLCBmYWxzZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIGZhbHNlIGhhc2ggc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgZmFsc2UsIF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3BhY2UsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGZsb2F0X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBsZXQgZmxhZyA9IG1hdGNoIHBsdXMsIHNwYWNlIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX1xuICAgIHwgZmFsc2UsICB0cnVlIC0+IEZsb2F0X2ZsYWdfc1xuICAgIHwgIHRydWUsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfcFxuICAgIHwgIHRydWUsICB0cnVlIC0+XG4gICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gRmxvYXRfZmxhZ19wXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIiBpblxuICAgIGxldCBraW5kID0gbWF0Y2ggaGFzaCwgc3ltYiB3aXRoXG4gICAgfCBfLCAnZicgLT4gRmxvYXRfZlxuICAgIHwgXywgJ2UnIC0+IEZsb2F0X2VcbiAgICB8IF8sICdFJyAtPiBGbG9hdF9FXG4gICAgfCBfLCAnZycgLT4gRmxvYXRfZ1xuICAgIHwgXywgJ0cnIC0+IEZsb2F0X0dcbiAgICB8IF8sICdoJyAtPiBGbG9hdF9oXG4gICAgfCBfLCAnSCcgLT4gRmxvYXRfSFxuICAgIHwgZmFsc2UsICdGJyAtPiBGbG9hdF9GXG4gICAgfCB0cnVlLCAnRicgLT4gRmxvYXRfQ0ZcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gICAgZmxhZywga2luZFxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBpbmNvbXBhdGlibGUgb3B0aW9ucy4qKVxuICBhbmQgaW5jb21wYXRpYmxlX2ZsYWcgOiB0eXBlIGEgLiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nIC0+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnRvdXQsIElOUklBIFBhcmlzLVNhY2xheSAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoIDogaW50O1xuICBtdXRhYmxlIGFyciA6ICdhIHNsb3QgYXJyYXk7XG59XG4oKiB7MiBUaGUgdHlwZSBbJ2EgdF19XG5cbiAgIEEgZHluYW1pYyBhcnJheSBpcyByZXByZXNlbnRlZCB1c2luZyBhIGJhY2tpbmcgYXJyYXkgW2Fycl0gYW5kXG4gICBhIFtsZW5ndGhdLiBJdCBiZWhhdmVzIGFzIGFuIGFycmF5IG9mIHNpemUgW2xlbmd0aF0gLS0gdGhlIGluZGljZXNcbiAgIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXSBpbmNsdWRlZCBjb250YWluIHVzZXItcHJvdmlkZWQgdmFsdWVzIGFuZFxuICAgY2FuIGJlIFtnZXRdIGFuZCBbc2V0XSAtLSBidXQgdGhlIGxlbmd0aCBtYXkgYWxzbyBjaGFuZ2UgaW4gdGhlXG4gICBmdXR1cmUgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzIGF0IHRoZSBlbmQuXG5cbiAgIFdlIHVzZSB0aGUgZm9sbG93aW5nIGNvbmNlcHRzO1xuICAgLSBjYXBhY2l0eTogdGhlIGxlbmd0aCBvZiB0aGUgYmFja2luZyBhcnJheTpcbiAgICAgW0FycmF5Lmxlbmd0aCAgYXJyXVxuICAgLSBsaXZlIHNwYWNlOiB0aGUgcG9ydGlvbiBvZiB0aGUgYmFja2luZyBhcnJheSB3aXRoXG4gICAgIGluZGljZXMgZnJvbSBbMF0gdG8gW2xlbmd0aCAtIDFdIGluY2x1ZGVkLlxuICAgLSBlbXB0eSBzcGFjZTogdGhlIHBvcnRpb24gb2YgdGhlIGJhY2tpbmcgYXJyYXlcbiAgICAgZnJvbSBbbGVuZ3RoXSB0byB0aGUgZW5kIG9mIHRoZSBiYWNraW5nIGFycmF5LlxuXG4gICB7MiBUaGUgdHlwZSBbJ2Egc2xvdF19XG5cbiAgIFdlIHNob3VsZCBub3Qga2VlcCBhIHVzZXItcHJvdmlkZWQgdmFsdWUgaW4gdGhlIGVtcHR5IHNwYWNlLCBhc1xuICAgdGhpcyBjb3VsZCBleHRlbmQgaXRzIGxpZmV0aW1lIGFuZCBtYXkgcmVzdWx0IGluIG1lbW9yeSBsZWFrcyBvZlxuICAgYXJiaXRyYXJ5IHNpemUuIEZ1bmN0aW9ucyB0aGF0IHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBkeW5hbWljXG4gICBhcnJheSwgc3VjaCBhcyBbcG9wX2xhc3RdIG9yIFt0cnVuY2F0ZV0sIG11c3QgcmVhbGx5IGVyYXNlIHRoZVxuICAgZWxlbWVudCBmcm9tIHRoZSBiYWNraW5nIGFycmF5LlxuXG4gICBUaGlzIGNvbnN0cmFpbnQgbWFrZXMgaXQgZGlmZmljdWx0IHRvIHJlcHJlc2VudCBhbiBkeW5hbWljIGFycmF5IG9mXG4gICBlbGVtZW50cyBvZiB0eXBlIFsnYV0gd2l0aCBhIGJhY2tpbmcgYXJyYXkgb2YgdHlwZSBbJ2EgYXJyYXldOiB3aGF0XG4gICB2YWxpZCB2YWx1ZSBvZiB0eXBlIFsnYV0gd291bGQgd2UgdXNlIGluIHRoZSBlbXB0eSBzcGFjZT8gVHlwaWNhbFxuICAgY2hvaWNlcyBpbmNsdWRlOlxuICAgLSBhY2NlcHRpbmcgc2NlbmFyaW9zIHdoZXJlIHdlIGFjdHVhbGx5IGxlYWsgdXNlci1wcm92aWRlZCB2YWx1ZXNcbiAgICAgKGJ1dCB0aGlzIGNhbiBibG93dXAgbWVtb3J5IHVzYWdlIGluIHNvbWUgY2FzZXMsIGFuZCBpcyBoYXJkIHRvIGRlYnVnKVxuICAgLSByZXF1aXJpbmcgYSBcImR1bW15XCIgdmFsdWUgYXQgY3JlYXRpb24gb2YgdGhlIGR5bmFtaWMgYXJyYXlcbiAgICAgb3IgaW4gdGhlIHBhcnRzIG9mIHRoZSBBUEkgdGhhdCBncm93IHRoZSBlbXB0eSBzcGFjZVxuICAgICAoYnV0IHVzZXJzIGZpbmQgdGhpcyB2ZXJ5IGluY29udmVuaWVudClcbiAgIC0gdXNpbmcgYXJjYW5lIE9iai5tYWdpYyB0cmlja3NcbiAgICAgKGJ1dCBleHBlcnRzIGRvbid0IGFncmVlIG9uIHdoaWNoIHRyaWNrcyBhcmUgc2FmZSB0byB1c2UgYW5kL29yXG4gICAgICBzaG91bGQgYmUgdXNlZCBoZXJlKVxuICAgLSB1c2luZyBhIGJhY2tpbmcgYXJyYXkgb2YgWydhIG9wdGlvbl0gdmFsdWVzLCB1c2luZyBbTm9uZV1cbiAgICAgaW4gdGhlIGVtcHR5IHNwYWNlXG4gICAgIChidXQgdGhpcyBnaXZlcyBhIG5vdGljZWFibHkgbGVzcyBlZmZpY2llbnQgbWVtb3J5IHJlcHJlc2VudGF0aW9uKVxuXG4gICBJbiB0aGUgcHJlc2VudCBpbXBsZW1lbnRhdGlvbiwgd2UgdXNlIHRoZSBbJ2Egb3B0aW9uXSBhcHByb2FjaCxcbiAgIHdpdGggYSB0d2lzdC4gV2l0aCBbJ2Egb3B0aW9uXSwgY2FsbGluZyBbc2V0IGEgaSB4XSBtdXN0IHJlYWxsb2NhdGVcbiAgIGEgbmV3IFtTb21lIHhdIGJsb2NrOlxue1tcbiAgIGxldCBzZXQgYSBpIHggPVxuICAgICBpZiBpIDwgMCB8fCBpID49IGEubGVuZ3RoIHRoZW4gZXJyb3IgXCJvdXQgb2YgYm91bmRzXCI7XG4gICAgIGEuYXJyLihpKSA8LSBTb21lIHhcbl19XG4gICBJbnN0ZWFkIHdlIHVzZSB0aGUgdHlwZSBbJ2Egc2xvdF0gYmVsb3csXG4gICB3aGljaCBiZWhhdmVzIGFzIGFuIG9wdGlvbiB3aG9zZSBbU29tZV0gY29uc3RydWN0b3JcbiAgIChjYWxsZWQgW0VsZW1dIGhlcmUpIGhhcyBhIF9tdXRhYmxlXyBhcmd1bWVudC5cbiopXG5hbmQgJ2Egc2xvdCA9XG58IEVtcHR5XG58IEVsZW0gb2YgeyBtdXRhYmxlIHY6ICdhIH1cbigqXG4gICBUaGlzIGdpdmVzIGFuIGFsbG9jYXRpb24tZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiBbc2V0XSB0aGF0IGNhbGxzXG4gICBbQXJyYXkuZ2V0XSAoaW5zdGVhZCBvZiBbQXJyYXkuc2V0XSkgb24gdGhlIGJhY2tpbmcgYXJyYXkgYW5kIHRoZW5cbiAgIG11dGF0ZXMgdGhlIFt2XSBwYXJhbWV0ZXIuIEluIHBzZXVkby1jb2RlOlxue1tcbiAgIGxldCBzZXQgYSBpIHggPVxuICAgICBpZiBpIDwgMCB8fCBpID49IGEubGVuZ3RoIHRoZW4gZXJyb3IgXCJvdXQgb2YgYm91bmRzXCI7XG4gICAgIG1hdGNoIGEuYXJyLihpKSB3aXRoXG4gICAgIHwgRW1wdHkgLT4gZXJyb3IgXCJpbnZhbGlkIHN0YXRlOiBtaXNzaW5nIGVsZW1lbnRcIlxuICAgICB8IEVsZW0gcyAtPiBzLnYgPC0geFxuXX1cbiAgIFdpdGggdGhpcyBhcHByb2FjaCwgYWNjZXNzaW5nIGFuIGVsZW1lbnQgc3RpbGwgcGF5cyB0aGUgY29zdCBvZiBhblxuICAgZXh0cmEgaW5kaXJlY3Rpb24gKGNvbXBhcmVkIHRvIGFwcHJvYWNoZXMgdGhhdCBkbyBub3QgYm94IGVsZW1lbnRzXG4gICBpbiB0aGUgYmFja2luZyBhcnJheSksIGJ1dCBvbmx5IG9wZXJhdGlvbnMgdGhhdCBhZGQgbmV3IGVsZW1lbnRzIGF0XG4gICB0aGUgZW5kIG9mIHRoZSBhcnJheSBwYXkgZXh0cmEgYWxsb2NhdGlvbnMuXG5cbiAgIFRoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgd2hlcmUgWydhIG9wdGlvbl0gaXMgYmV0dGVyOiBpdCBtYWtlc1xuICAgW3BvcF9sYXN0X29wdF0gbW9yZSBlZmZpY2llbnQgYXMgdGhlIHVuZGVybHlpbmcgb3B0aW9uIGNhbiBiZVxuICAgcmV0dXJuZWQgZGlyZWN0bHksIGFuZCBpdCBhbHNvIGxldHMgdXMgdXNlIFtBcnJheS5ibGl0XSB0b1xuICAgaW1wbGVtZW50IFthcHBlbmRdLiBXZSBiZWxpZXZlIHRoYXQgb3B0aW1pemluZyBbZ2V0XSBhbmQgW3NldF0gaXNcbiAgIG1vcmUgaW1wb3J0YW50IGZvciBkeW5hbWljIGFycmF5cy5cblxuICAgezIgSW52YXJpYW50cyBhbmQgdmFsaWQgc3RhdGVzfVxuXG4gICBXZSBlbmZvcmNlIHRoZSBpbnZhcmlhbnQgdGhhdCBbbGVuZ3RoID49IDBdIGF0IGFsbCB0aW1lcy5cbiAgIHdlIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQgZm9yIG9wdGltaXphdGlvbi5cblxuICAgVGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGRlZmluZSB3aGF0IHdlIGNhbGwgYSBcInZhbGlkXCIgZHluYXJyYXk6XG4gICAtIHZhbGlkIGxlbmd0aDogW2xlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXVxuICAgLSBubyBtaXNzaW5nIGVsZW1lbnQgaW4gdGhlIGxpdmUgc3BhY2U6XG4gICAgIGZvcmFsbCBpLCBbMCA8PSBpIDwgbGVuZ3RoXSBpbXBsaWVzIFthcnIuKGkpIDw+IEVtcHR5XVxuICAgLSBubyBlbGVtZW50IGluIHRoZSBlbXB0eSBzcGFjZTpcbiAgICAgZm9yYWxsIGksIFtsZW5ndGggPD0gaSA8IEFycmF5Lmxlbmd0aCBhcnJdIGltcGxpZXMgW2Fyci4oaSkgPSBFbXB0eV1cblxuICAgVW5mb3J0dW5hdGVseSwgd2UgY2Fubm90IGVhc2lseSBlbmZvcmNlIHZhbGlkaXR5IGFzIGFuIGludmFyaWFudCBpblxuICAgcHJlc2VuY2Ugb2YgY29uY3VycmVudCB1cGRhdGVzLiBXZSBjYW4gdGh1cyBvYnNlcnZlIGR5bmFycmF5cyBpblxuICAgXCJpbnZhbGlkIHN0YXRlc1wiLiBPdXIgaW1wbGVtZW50YXRpb24gbWF5IHJhaXNlIGV4Y2VwdGlvbnMgb3IgcmV0dXJuXG4gICBpbmNvcnJlY3QgcmVzdWx0cyBvbiBvYnNlcnZpbmcgaW52YWxpZCBzdGF0ZXMsIGJ1dCBvZiBjb3Vyc2UgaXRcbiAgIG11c3QgcHJlc2VydmUgbWVtb3J5IHNhZmV0eS5cbiopXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBsZXRbQGlubGluZSBuZXZlcl0gaW5kZXhfb3V0X29mX2JvdW5kcyBmIH5pIH5sZW5ndGggPVxuICAgIGlmIGxlbmd0aCA9IDAgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICAgIFwiRHluYXJyYXkuJXM6IGluZGV4ICVkIG91dCBvZiBib3VuZHMgKGVtcHR5IGR5bmFycmF5KVwiXG4gICAgICAgIGYgaVxuICAgIGVsc2VcbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkR5bmFycmF5LiVzOiBpbmRleCAlZCBvdXQgb2YgYm91bmRzICgwLi4lZClcIlxuICAgICAgICBmIGkgKGxlbmd0aCAtIDEpXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgZiBuID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IG5lZ2F0aXZlIGxlbmd0aCAlZCByZXF1ZXN0ZWRcIlxuICAgICAgZiBuXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG5lZ2F0aXZlX2NhcGFjaXR5X3JlcXVlc3RlZCBmIG4gPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCJEeW5hcnJheS4lczogbmVnYXRpdmUgY2FwYWNpdHkgJWQgcmVxdWVzdGVkXCJcbiAgICAgIGYgblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSByZXF1ZXN0ZWRfbGVuZ3RoX291dF9vZl9ib3VuZHMgZiByZXF1ZXN0ZWRfbGVuZ3RoID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGNhbm5vdCBncm93IHRvIHJlcXVlc3RlZCBsZW5ndGggJWQgKG1heF9hcnJheV9sZW5ndGggaXMgJWQpXCJcbiAgICAgIGYgcmVxdWVzdGVkX2xlbmd0aCBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG4gICgqIFdoZW4gb2JzZXJ2aW5nIGFuIGludmFsaWQgc3RhdGUgKFttaXNzaW5nX2VsZW1lbnRdLFxuICAgICBbaW52YWxpZF9sZW5ndGhdKSwgd2UgZG8gbm90IGdpdmUgdGhlIG5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb25cbiAgICAgaW4gdGhlIGVycm9yIG1lc3NhZ2UsIGFzIHRoZSBlcnJvciBpcyByZWxhdGVkIHRvIGludmFsaWQgb3BlcmF0aW9uc1xuICAgICBwZXJmb3JtZWQgZWFybGllciwgYW5kIG5vdCB0byB0aGUgY2FsbHNpdGUgb2YgdGhlIGZ1bmN0aW9uXG4gICAgIGl0c2VsZi4gKilcblxuICBsZXQgaW52YWxpZF9zdGF0ZV9kZXNjcmlwdGlvbiA9XG4gICAgXCJJbnZhbGlkIGR5bmFycmF5ICh1bnN5bmNocm9uaXplZCBjb25jdXJyZW50IGxlbmd0aCBjaGFuZ2UpXCJcblxuICBsZXRbQGlubGluZSBuZXZlcl0gbWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGggPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCIlczogbWlzc2luZyBlbGVtZW50IGF0IHBvc2l0aW9uICVkIDwgbGVuZ3RoICVkXCJcbiAgICAgIGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb25cbiAgICAgIGkgbGVuZ3RoXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfbGVuZ3RoIH5sZW5ndGggfmNhcGFjaXR5ID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiJXM6IGxlbmd0aCAlZCA+IGNhcGFjaXR5ICVkXCJcbiAgICAgIGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb25cbiAgICAgIGxlbmd0aCBjYXBhY2l0eVxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBsZW5ndGhfY2hhbmdlX2R1cmluZ19pdGVyYXRpb24gZiB+ZXhwZWN0ZWQgfm9ic2VydmVkID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGEgbGVuZ3RoIGNoYW5nZSBmcm9tICVkIHRvICVkIG9jY3VycmVkIGR1cmluZyBpdGVyYXRpb25cIlxuICAgICAgZiBleHBlY3RlZCBvYnNlcnZlZFxuXG4gICgqIFdoZW4gYW4gW0VtcHR5XSBlbGVtZW50IGlzIG9ic2VydmVkIHVuZXhwZWN0ZWRseSBhdCBpbmRleCBbaV0sXG4gICAgIGl0IG1heSBiZSBlaXRoZXIgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3IgYW4gaW52YWxpZC1zdGF0ZSBzaXR1YXRpb25cbiAgICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgW2kgPD0gbGVuZ3RoXS4gKilcbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIHVuZXhwZWN0ZWRfZW1wdHlfZWxlbWVudCBmIH5pIH5sZW5ndGggPVxuICAgIGlmIGkgPCBsZW5ndGggdGhlblxuICAgICAgbWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGhcbiAgICBlbHNlXG4gICAgICBpbmRleF9vdXRfb2ZfYm91bmRzIGYgfmkgfmxlbmd0aFxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBlbXB0eV9keW5hcnJheSBmID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGVtcHR5IGFycmF5XCIgZlxuZW5kXG5cbigqIERldGVjdGluZyBpdGVyYXRvciBpbnZhbGlkYXRpb24uXG5cbiAgIFNlZSB7IWl0ZXJ9IGJlbG93IGZvciBhIGRldGFpbGVkIHVzYWdlIGV4YW1wbGUuXG4qKVxubGV0IGNoZWNrX3NhbWVfbGVuZ3RoIGYgYSB+bGVuZ3RoID1cbiAgbGV0IGxlbmd0aF9hID0gYS5sZW5ndGggaW5cbiAgaWYgbGVuZ3RoIDw+IGxlbmd0aF9hIHRoZW5cbiAgICBFcnJvci5sZW5ndGhfY2hhbmdlX2R1cmluZ19pdGVyYXRpb24gZlxuICAgICAgfmV4cGVjdGVkOmxlbmd0aCB+b2JzZXJ2ZWQ6bGVuZ3RoX2FcblxuKCoqIENhcmVmdWwgdW5zYWZlIGFjY2Vzcy4gKilcblxuKCogUG9zdGNvbmRpdGlvbiBvbiBub24tZXhjZXB0aW9uYWwgcmV0dXJuOlxuICAgW2xlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXSAqKVxubGV0W0BpbmxpbmUgYWx3YXlzXSBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFyciA9XG4gIGxldCBjYXBhY2l0eSA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgaWYgbGVuZ3RoID4gY2FwYWNpdHkgdGhlblxuICAgIEVycm9yLmludmFsaWRfbGVuZ3RoIH5sZW5ndGggfmNhcGFjaXR5XG5cbigqIFByZWNvbmRpdGlvbjogWzAgPD0gaSA8IGxlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXVxuXG4gICBUaGlzIHByZWNvbmRpdGlvbiBpcyB0eXBpY2FsbHkgZ3VhcmFudGVlZCBieSBrbm93aW5nXG4gICBbMCA8PSBpIDwgbGVuZ3RoXSBhbmQgY2FsbGluZyBbY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnJdLiopXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggPVxuICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IGFyciBpIHdpdGhcbiAgfCBFbXB0eSAtPiBFcnJvci5taXNzaW5nX2VsZW1lbnQgfmkgfmxlbmd0aFxuICB8IEVsZW0ge3Z9IC0+IHZcblxuXG4oKiogezE6ZHluYXJyYXlzIER5bmFtaWMgYXJyYXlzfSAqKVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBhcnIgPSBbfCB8XTtcbn1cblxubGV0IG1ha2UgbiB4ID1cbiAgaWYgbiA8IDAgdGhlbiBFcnJvci5uZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIFwibWFrZVwiIG47XG4gIHtcbiAgICBsZW5ndGggPSBuO1xuICAgIGFyciA9IEFycmF5LmluaXQgbiAoZnVuIF8gLT4gRWxlbSB7diA9IHh9KTtcbiAgfVxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB0aGVuIEVycm9yLm5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgXCJpbml0XCIgbjtcbiAge1xuICAgIGxlbmd0aCA9IG47XG4gICAgYXJyID0gQXJyYXkuaW5pdCBuIChmdW4gaSAtPiBFbGVtIHt2ID0gZiBpfSk7XG4gIH1cblxubGV0IGdldCBhIGkgPVxuICAoKiBUaGlzIGltcGxlbWVudGF0aW9uIHdpbGwgcHJvcGFnYXRlIGFuIFtJbnZhbGlkX2FyZ3VtZW50XSBleGNlcHRpb25cbiAgICAgZnJvbSBhcnJheSBsb29rdXAgaWYgdGhlIGluZGV4IGlzIG91dCBvZiB0aGUgYmFja2luZyBhcnJheSxcbiAgICAgaW5zdGVhZCBvZiB1c2luZyBvdXIgb3duIFtFcnJvci5pbmRleF9vdXRfb2ZfYm91bmRzXS4gVGhpcyBpc1xuICAgICBhbGxvd2VkIGJ5IG91ciBzcGVjaWZpY2F0aW9uLCBhbmQgbW9yZSBlZmZpY2llbnQgLS0gbm8gbmVlZCB0b1xuICAgICBjaGVjayB0aGF0IFtsZW5ndGggYSA8PSBjYXBhY2l0eSBhXSBpbiB0aGUgZmFzdCBwYXRoLiAqKVxuICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICB8IEVsZW0gcyAtPiBzLnZcbiAgfCBFbXB0eSAtPlxuICAgICAgRXJyb3IudW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IFwiZ2V0XCIgfmkgfmxlbmd0aDphLmxlbmd0aFxuXG5sZXQgc2V0IGEgaSB4ID1cbiAgKCogU2VlIHshZ2V0fSBjb21tZW50IG9uIHRoZSB1c2Ugb2YgY2hlY2tlZCBhcnJheVxuICAgICBhY2Nlc3Mgd2l0aG91dCBvdXIgb3duIGJvdW5kIGNoZWNraW5nLiAqKVxuICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICB8IEVsZW0gcyAtPiBzLnYgPC0geFxuICB8IEVtcHR5IC0+XG4gICAgICBFcnJvci51bmV4cGVjdGVkX2VtcHR5X2VsZW1lbnQgXCJzZXRcIiB+aSB+bGVuZ3RoOmEubGVuZ3RoXG5cbmxldCBsZW5ndGggYSA9IGEubGVuZ3RoXG5cbmxldCBpc19lbXB0eSBhID0gKGEubGVuZ3RoID0gMClcblxubGV0IGNvcHkge2xlbmd0aDsgYXJyfSA9XG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiB1c2UgW2xlbmd0aF0gYXMgdGhlIG5ldyBjYXBhY2l0eSB0byBtYWtlXG4gICAgIHRoaXMgYW4gTyhsZW5ndGgpIG9wZXJhdGlvbi4gKilcbiAge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgICAgRWxlbSB7dn1cbiAgICApO1xuICB9XG5cbmxldCBnZXRfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiBFcnJvci5lbXB0eV9keW5hcnJheSBcImdldF9sYXN0XCI7XG4gICgqIFdlIGtub3cgW2xlbmd0aCA+IDBdLiAqKVxuICB1bnNhZmVfZ2V0IGFyciB+aToobGVuZ3RoIC0gMSkgfmxlbmd0aFxuXG5sZXQgZmluZF9sYXN0IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gICgqIFdlIGtub3cgW2xlbmd0aCA8PSBjYXBhY2l0eSBhXS4gKilcbiAgaWYgbGVuZ3RoID0gMCB0aGVuIE5vbmVcbiAgZWxzZVxuICAgICgqIFdlIGtub3cgW2xlbmd0aCA+IDBdLiAqKVxuICAgIFNvbWUgKHVuc2FmZV9nZXQgYXJyIH5pOihsZW5ndGggLSAxKSB+bGVuZ3RoKVxuXG4oKiogezE6cmVtb3ZpbmcgUmVtb3ZpbmcgZWxlbWVudHN9ICopXG5cbmxldCBwb3BfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBsYXN0ID0gbGVuZ3RoIC0gMSBpblxuICAoKiBXZSBrbm93IFtsZW5ndGggPiAwXSBzbyBbbGFzdCA+PSAwXS4gKilcbiAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCBhcnIgbGFzdCB3aXRoXG4gIHwgRW1wdHkgLT5cbiAgICAgIEVycm9yLm1pc3NpbmdfZWxlbWVudCB+aTpsYXN0IH5sZW5ndGhcbiAgfCBFbGVtIHMgLT5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYXJyIGxhc3QgRW1wdHk7XG4gICAgICBhLmxlbmd0aCA8LSBsYXN0O1xuICAgICAgcy52XG5cbmxldCBwb3BfbGFzdF9vcHQgYSA9XG4gIG1hdGNoIHBvcF9sYXN0IGEgd2l0aFxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICB8IHggLT4gU29tZSB4XG5cbmxldCByZW1vdmVfbGFzdCBhID1cbiAgbGV0IGxhc3QgPSBsZW5ndGggYSAtIDEgaW5cbiAgaWYgbGFzdCA+PSAwIHRoZW4gYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsYXN0O1xuICAgIGEuYXJyLihsYXN0KSA8LSBFbXB0eTtcbiAgZW5kXG5cbmxldCB0cnVuY2F0ZSBhIG4gPVxuICBpZiBuIDwgMCB0aGVuIEVycm9yLm5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgXCJ0cnVuY2F0ZVwiIG47XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBpZiBsZW5ndGggPD0gbiB0aGVuICgpXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBuO1xuICAgIEFycmF5LmZpbGwgYXJyIG4gKGxlbmd0aCAtIG4pIEVtcHR5O1xuICBlbmRcblxubGV0IGNsZWFyIGEgPSB0cnVuY2F0ZSBhIDBcblxuXG4oKiogezE6Y2FwYWNpdHkgQmFja2luZyBhcnJheSBhbmQgY2FwYWNpdHl9ICopXG5cbmxldCBjYXBhY2l0eSBhID0gQXJyYXkubGVuZ3RoIGEuYXJyXG5cbmxldCBuZXh0X2NhcGFjaXR5IG4gPVxuICBsZXQgbicgPVxuICAgICgqIEZvciBsYXJnZSB2YWx1ZXMgb2Ygbiwgd2UgdXNlIDEuNSBhcyBvdXIgZ3Jvd3RoIGZhY3Rvci5cblxuICAgICAgIEZvciBzbWFsbGVyIHZhbHVlcyBvZiBuLCB3ZSBncm93IG1vcmUgYWdncmVzc2l2ZWx5IHRvIGF2b2lkXG4gICAgICAgcmVhbGxvY2F0aW5nIHRvbyBtdWNoIHdoZW4gYWNjdW11bGF0aW5nIGVsZW1lbnRzIGludG8gYW4gZW1wdHlcbiAgICAgICBhcnJheS5cblxuICAgICAgIFRoZSBjb25zdGFudHMgXCI1MTIgd29yZHNcIiBhbmQgXCI4IHdvcmRzXCIgYmVsb3cgYXJlIHRha2VuIGZyb21cbiAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mb2xseS9ibG9iL1xuICAgICAgICAgICBjMDZjMGY0MWQ5MWRhZjFhNmE1ZjNmYzFjZDQ2NTMwMmFjMjYwNDU5L2ZvbGx5L0ZCVmVjdG9yLmgjTDExMjgtTDExNTdcbiAgICAqKVxuICAgIGlmIG4gPD0gNTEyIHRoZW4gbiAqIDJcbiAgICBlbHNlIG4gKyBuIC8gMlxuICBpblxuICAoKiBqdW1wIGRpcmVjdGx5IGZyb20gMCB0byA4ICopXG4gIG1pbiAobWF4IDggbicpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBlbnN1cmVfY2FwYWNpdHkgYSBjYXBhY2l0eV9yZXF1ZXN0ID1cbiAgbGV0IGFyciA9IGEuYXJyIGluXG4gIGxldCBjdXJfY2FwYWNpdHkgPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGlmIGNhcGFjaXR5X3JlcXVlc3QgPCAwIHRoZW5cbiAgICBFcnJvci5uZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgXCJlbnN1cmVfY2FwYWNpdHlcIiBjYXBhY2l0eV9yZXF1ZXN0XG4gIGVsc2UgaWYgY3VyX2NhcGFjaXR5ID49IGNhcGFjaXR5X3JlcXVlc3QgdGhlblxuICAgICgqIFRoaXMgaXMgdGhlIGZhc3QgcGF0aCwgdGhlIGNvZGUgdXAgdG8gaGVyZSBtdXN0IGRvIGFzIGxpdHRsZSBhc1xuICAgICAgIHBvc3NpYmxlLiAoVGhpcyBpcyB3aHkgd2UgZG9uJ3QgdXNlIFtsZXQge2FycjsgbGVuZ3RofSA9IGFdIGFzXG4gICAgICAgdXN1YWwsIHRoZSBsZW5ndGggaXMgbm90IG5lZWRlZCBpbiB0aGUgZmFzdCBwYXRoLikqKVxuICAgICgpXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBjYXBhY2l0eV9yZXF1ZXN0ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlblxuICAgICAgRXJyb3IucmVxdWVzdGVkX2xlbmd0aF9vdXRfb2ZfYm91bmRzIFwiZW5zdXJlX2NhcGFjaXR5XCIgY2FwYWNpdHlfcmVxdWVzdDtcbiAgICBsZXQgbmV3X2NhcGFjaXR5ID1cbiAgICAgICgqIFdlIHVzZSBlaXRoZXIgdGhlIG5leHQgZXhwb25lbnRpYWwtZ3Jvd3RoIHN0cmF0ZWd5LFxuICAgICAgICAgb3IgdGhlIHJlcXVlc3RlZCBzdHJhdGVneSwgd2hpY2hldmVyIGlzIGJpZ2dlci5cblxuICAgICAgICAgQ29tcGFyZWQgdG8gb25seSB1c2luZyB0aGUgZXhwb25lbnRpYWwtZ3Jvd3RoIHN0cmF0ZWd5LCB0aGlzXG4gICAgICAgICBsZXRzIHVzIHVzZSBsZXNzIG1lbW9yeSBieSBhdm9pZGluZyBhbnkgb3ZlcnNob290IHdoZW5ldmVyXG4gICAgICAgICB0aGUgY2FwYWNpdHkgcmVxdWVzdCBpcyBub3RpY2VhYmx5IGxhcmdlciB0aGFuIHRoZSBjdXJyZW50XG4gICAgICAgICBjYXBhY2l0eS5cblxuICAgICAgICAgQ29tcGFyZWQgdG8gb25seSB1c2luZyB0aGUgcmVxdWVzdGVkIGNhcGFjaXR5LCB0aGlzIGF2b2lkc1xuICAgICAgICAgbG9zaW5nIHRoZSBhbW9ydGl6ZWQgZ3VhcmFudGVlOiB3ZSBhbGxvY2F0ZWQgXCJleHBvbmVudGlhbGx5XG4gICAgICAgICBvciBtb3JlXCIsIHNvIHRoZSBhbW9ydGl6YXRpb24gaG9sZHMuIEluIHBhcnRpY3VsYXIsIG5vdGljZVxuICAgICAgICAgdGhhdCByZXBlYXRlZCBjYWxscyB0byBbZW5zdXJlX2NhcGFjaXR5IGEgKGxlbmd0aCBhICsgMSldXG4gICAgICAgICB3aWxsIGhhdmUgYW1vcnRpemVkLWxpbmVhciByYXRoZXIgdGhhbiBxdWFkcmF0aWMgY29tcGxleGl0eS5cbiAgICAgICopXG4gICAgICBtYXggKG5leHRfY2FwYWNpdHkgY3VyX2NhcGFjaXR5KSBjYXBhY2l0eV9yZXF1ZXN0IGluXG4gICAgbGV0IG5ld19hcnIgPSBBcnJheS5tYWtlIG5ld19jYXBhY2l0eSBFbXB0eSBpblxuICAgIEFycmF5LmJsaXQgYXJyIDAgbmV3X2FyciAwIGEubGVuZ3RoO1xuICAgIGEuYXJyIDwtIG5ld19hcnI7XG4gICAgKCogcG9zdGNvbmRpdGlvbjogKilcbiAgICBhc3NlcnQgKDAgPD0gY2FwYWNpdHlfcmVxdWVzdCk7XG4gICAgYXNzZXJ0IChjYXBhY2l0eV9yZXF1ZXN0IDw9IEFycmF5Lmxlbmd0aCBuZXdfYXJyKTtcbiAgZW5kXG5cbmxldCBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSBleHRyYV9jYXBhY2l0eV9yZXF1ZXN0ID1cbiAgZW5zdXJlX2NhcGFjaXR5IGEgKGxlbmd0aCBhICsgZXh0cmFfY2FwYWNpdHlfcmVxdWVzdClcblxubGV0IGZpdF9jYXBhY2l0eSBhID1cbiAgaWYgY2FwYWNpdHkgYSA9IGEubGVuZ3RoXG4gIHRoZW4gKClcbiAgZWxzZSBhLmFyciA8LSBBcnJheS5zdWIgYS5hcnIgMCBhLmxlbmd0aFxuXG5sZXQgc2V0X2NhcGFjaXR5IGEgbiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBFcnJvci5uZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgXCJzZXRfY2FwYWNpdHlcIiBuO1xuICBsZXQgYXJyID0gYS5hcnIgaW5cbiAgbGV0IGN1cl9jYXBhY2l0eSA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgaWYgbiA8IGN1cl9jYXBhY2l0eSB0aGVuIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbWluIGEubGVuZ3RoIG47XG4gICAgYS5hcnIgPC0gQXJyYXkuc3ViIGFyciAwIG47XG4gIGVuZFxuICBlbHNlIGlmIG4gPiBjdXJfY2FwYWNpdHkgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYXJyID0gQXJyYXkubWFrZSBuIEVtcHR5IGluXG4gICAgQXJyYXkuYmxpdCBhcnIgMCBuZXdfYXJyIDAgYS5sZW5ndGg7XG4gICAgYS5hcnIgPC0gbmV3X2FycjtcbiAgZW5kXG5cbmxldCByZXNldCBhID1cbiAgYS5sZW5ndGggPC0gMDtcbiAgYS5hcnIgPC0gW3x8XVxuXG4oKiogezE6YWRkaW5nIEFkZGluZyBlbGVtZW50c30gKilcblxuKCogV2UgY2hvc2UgYW4gaW1wbGVtZW50YXRpb24gb2YgW2FkZF9sYXN0IGEgeF0gdGhhdCBiZWhhdmVzIGNvcnJlY3RseVxuICAgaW4gcHJlc2VuY2Ugb2YgYXN5bmNocm9ub3VzIC8gcmUtZW50cmFudCBjb2RlIGV4ZWN1dGlvbiBhcm91bmRcbiAgIGFsbG9jYXRpb25zIGFuZCBwb2xsIHBvaW50czogaWYgYW5vdGhlciB0aHJlYWQgb3IgYSBjYWxsYmFjayBnZXRzXG4gICBleGVjdXRlZCBvbiBhbGxvY2F0aW9uLCB3ZSBhZGQgdGhlIGVsZW1lbnQgYXQgdGhlIG5ldyBlbmQgb2YgdGhlXG4gICBkeW5hbWljIGFycmF5LlxuXG4gICAoV2UgZG8gbm90IGdpdmUgdGhlIHNhbWUgZ3VhcmFudGVlcyBpbiBwcmVzZW5jZSBvZiBjb25jdXJyZW50XG4gICBwYXJhbGxlbCB1cGRhdGVzLCB3aGljaCBhcmUgbXVjaCBtb3JlIGV4cGVuc2l2ZSB0byBwcm90ZWN0XG4gICBhZ2FpbnN0LilcbiopXG5cbigqIFthZGRfbGFzdF9pZl9yb29tIGEgZWxlbV0gb25seSB3cml0ZXMgdGhlIHNsb3QgaWYgdGhlcmUgaXMgcm9vbSwgYW5kXG4gICByZXR1cm5zIFtmYWxzZV0gb3RoZXJ3aXNlLiAqKVxubGV0W0BpbmxpbmVdIGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gICgqIHdlIGtub3cgWzAgPD0gbGVuZ3RoXSAqKVxuICBpZiBsZW5ndGggPj0gQXJyYXkubGVuZ3RoIGFyciB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICAoKiB3ZSBrbm93IFswIDw9IGxlbmd0aCA8IEFycmF5Lmxlbmd0aCBhcnJdICopXG4gICAgYS5sZW5ndGggPC0gbGVuZ3RoICsgMTtcbiAgICBBcnJheS51bnNhZmVfc2V0IGFyciBsZW5ndGggZWxlbTtcbiAgICB0cnVlXG4gIGVuZFxuXG5sZXQgYWRkX2xhc3QgYSB4ID1cbiAgbGV0IGVsZW0gPSBFbGVtIHt2ID0geH0gaW5cbiAgaWYgYWRkX2xhc3RfaWZfcm9vbSBhIGVsZW0gdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hZGQgYSBlbGVtID1cbiAgICAgIGVuc3VyZV9leHRyYV9jYXBhY2l0eSBhIDE7XG4gICAgICBpZiBub3QgKGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtKVxuICAgICAgdGhlbiBncm93X2FuZF9hZGQgYSBlbGVtXG4gICAgaW4gZ3Jvd19hbmRfYWRkIGEgZWxlbVxuICBlbmRcblxubGV0IHJlYyBhcHBlbmRfbGlzdCBhIGxpID1cbiAgbWF0Y2ggbGkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgeCA6OiB4cyAtPiBhZGRfbGFzdCBhIHg7IGFwcGVuZF9saXN0IGEgeHNcblxubGV0IGFwcGVuZF9pdGVyIGEgaXRlciBiID1cbiAgaXRlciAoZnVuIHggLT4gYWRkX2xhc3QgYSB4KSBiXG5cbmxldCBhcHBlbmRfc2VxIGEgc2VxID1cbiAgU2VxLml0ZXIgKGZ1biB4IC0+IGFkZF9sYXN0IGEgeCkgc2VxXG5cbigqIGFwcGVuZF9hcnJheTogc2FtZSBbLi4uX2lmX3Jvb21dIGFuZCBsb29wIGxvZ2ljIGFzIFthZGRfbGFzdF0uICopXG5cbmxldCBhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIgPVxuICBsZXQge2FycjsgbGVuZ3RoID0gbGVuZ3RoX2F9ID0gYSBpblxuICBsZXQgbGVuZ3RoX2IgPSBBcnJheS5sZW5ndGggYiBpblxuICBpZiBsZW5ndGhfYSArIGxlbmd0aF9iID4gQXJyYXkubGVuZ3RoIGFyciB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsZW5ndGhfYSArIGxlbmd0aF9iO1xuICAgICgqIE5vdGU6IHdlIGludGVudGlvbmFsbHkgdXBkYXRlIHRoZSBsZW5ndGggKmJlZm9yZSogZmlsbGluZyB0aGVcbiAgICAgICBlbGVtZW50cy4gVGhpcyBcInJlc2VydmUgYmVmb3JlIGZpbGxcIiBhcHByb2FjaCBwcm92aWRlcyBiZXR0ZXJcbiAgICAgICBiZWhhdmlvciB0aGFuIFwiZmlsbCB0aGVuIG5vdGlmeVwiIGluIHByZXNlbmNlIG9mIHJlZW50cmFudFxuICAgICAgIG1vZGlmaWNhdGlvbnMgKHdoaWNoIG1heSBvY2N1ciBiZWxvdywgb24gYSBwb2xsIHBvaW50IGluIHRoZSBsb29wIG9yXG4gICAgICAgdGhlIFtFbGVtXSBhbGxvY2F0aW9uKTpcblxuICAgICAgIC0gSWYgc29tZSBjb2RlIGFzeW5jaHJvbm91c2x5IGFkZHMgbmV3IGVsZW1lbnRzIGFmdGVyIHRoaXNcbiAgICAgICAgIGxlbmd0aCB1cGRhdGUsIHRoZXkgd2lsbCBnbyBhZnRlciB0aGUgc3BhY2Ugd2UganVzdCByZXNlcnZlZCxcbiAgICAgICAgIGFuZCBpbiBwYXJ0aWN1bGFyIG5vIGFkZGl0aW9uIHdpbGwgYmUgbG9zdC4gSWYgaW5zdGVhZCB3ZVxuICAgICAgICAgdXBkYXRlZCB0aGUgbGVuZ3RoIGFmdGVyIHRoZSBsb29wLCBhbnkgYXN5bmNocm9ub3VzIGFkZGl0aW9uXG4gICAgICAgICBkdXJpbmcgdGhlIGxvb3AgY291bGQgYmUgZXJhc2VkIG9yIGVyYXNlIG9uZSBvZiBvdXIgYWRkaXRpb25zLFxuICAgICAgICAgc2lsZW50bHksIHdpdGhvdXQgd2FybmluZyB0aGUgdXNlci5cblxuICAgICAgIC0gSWYgc29tZSBjb2RlIGFzeW5jaHJvbm91c2x5IGl0ZXJhdGVzIG9uIHRoZSBkeW5hcnJheSwgb3JcbiAgICAgICAgIHJlbW92ZXMgZWxlbWVudHMsIG9yIG90aGVyd2lzZSB0cmllcyB0byBhY2Nlc3MgdGhlXG4gICAgICAgICByZXNlcnZlZC1idXQtbm90LXlldC1maWxsZWQgc3BhY2UsIGl0IHdpbGwgZ2V0IGEgY2xlYW4gXCJtaXNzaW5nXG4gICAgICAgICBlbGVtZW50XCIgZXJyb3IuIFRoaXMgaXMgd29yc2UgdGhhbiB3aXRoIHRoZSBmaWxsLXRoZW4tbm90aWZ5XG4gICAgICAgICBhcHByb2FjaCB3aGVyZSB0aGUgbmV3IGVsZW1lbnRzIHdvdWxkIG9ubHkgYmVjb21lIHZpc2libGVcbiAgICAgICAgICh0byBpdGVyYXRvcnMsIGZvciByZW1vdmFsLCBldGMuKSBhbGx0b2dldGhlciBhdCB0aGUgZW5kIG9mXG4gICAgICAgICBsb29wLlxuXG4gICAgICAgVG8gc3VtbWFyaXNlLCBcInJlc2VydmUgYmVmb3JlIGZpbGxcIiBpcyBiZXR0ZXIgb24gYWRkLWFkZCByYWNlcyxcbiAgICAgICBhbmQgXCJmaWxsIHRoZW4gbm90aWZ5XCIgaXMgYmV0dGVyIG9uIGFkZC1yZW1vdmUgb3IgYWRkLWl0ZXJhdGVcbiAgICAgICByYWNlcy4gQnV0IHRoZSBrZXkgZGlmZmVyZW5jZSBpcyB0aGUgZmFpbHVyZSBtb2RlOlxuICAgICAgIHJlc2VydmUtYmVmb3JlIGZhaWxzIG9uIGFkZC1yZW1vdmUgb3IgYWRkLWl0ZXJhdGUgcmFjZXMgd2l0aFxuICAgICAgIGEgY2xlYW4gZXJyb3IsIHdoaWxlIG5vdGlmeS1hZnRlciBmYWlscyBvbiBhZGQtYWRkIHJhY2VzIHdpdGhcbiAgICAgICBzaWxlbnRseSBkaXNhcHBlYXJpbmcgZGF0YS4gKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoX2IgLSAxIGRvXG4gICAgICBsZXQgeCA9IEFycmF5LnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFyciAobGVuZ3RoX2EgKyBpKSAoRWxlbSB7diA9IHh9KVxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICBlbmRcblxubGV0IGFwcGVuZF9hcnJheSBhIGIgPVxuICBpZiBhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIgdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hcHBlbmQgYSBiID1cbiAgICAgIGVuc3VyZV9leHRyYV9jYXBhY2l0eSBhIChBcnJheS5sZW5ndGggYik7XG4gICAgICBpZiBub3QgKGFwcGVuZF9hcnJheV9pZl9yb29tIGEgYilcbiAgICAgIHRoZW4gZ3Jvd19hbmRfYXBwZW5kIGEgYlxuICAgIGluIGdyb3dfYW5kX2FwcGVuZCBhIGIgIGVuZFxuXG4oKiBhcHBlbmQ6IHNhbWUgWy4uLl9pZl9yb29tXSBhbmQgbG9vcCBsb2dpYyBhcyBbYWRkX2xhc3RdLFxuICAgc2FtZSByZXNlcnZlLWJlZm9yZS1maWxsIGxvZ2ljIGFzIFthcHBlbmRfYXJyYXldLiAqKVxuXG4oKiBJdCBpcyBhIHByb2dyYW1taW5nIGVycm9yIHRvIG11dGF0ZSB0aGUgbGVuZ3RoIG9mIFtiXSBkdXJpbmcgYSBjYWxsXG4gICB0byBbYXBwZW5kIGEgYl0uIFRvIGRldGVjdCB0aGlzIG1pc3Rha2Ugd2Uga2VlcCB0cmFjayBvZiB0aGUgbGVuZ3RoXG4gICBvZiBbYl0gdGhyb3VnaG91dCB0aGUgY29tcHV0YXRpb24gYW5kIGNoZWNrIGl0IHRoYXQgZG9lcyBub3RcbiAgIGNoYW5nZS5cbiopXG5sZXQgYXBwZW5kX2lmX3Jvb20gYSBiIH5sZW5ndGhfYiA9XG4gIGxldCB7YXJyID0gYXJyX2E7IGxlbmd0aCA9IGxlbmd0aF9hfSA9IGEgaW5cbiAgaWYgbGVuZ3RoX2EgKyBsZW5ndGhfYiA+IEFycmF5Lmxlbmd0aCBhcnJfYSB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsZW5ndGhfYSArIGxlbmd0aF9iO1xuICAgIGxldCBhcnJfYiA9IGIuYXJyIGluXG4gICAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aF9iIGFycl9iO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGhfYiAtIDEgZG9cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhcnJfYiB+aSB+bGVuZ3RoOmxlbmd0aF9iIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFycl9hIChsZW5ndGhfYSArIGkpIChFbGVtIHt2ID0geH0pXG4gICAgZG9uZTtcbiAgICBjaGVja19zYW1lX2xlbmd0aCBcImFwcGVuZFwiIGIgfmxlbmd0aDpsZW5ndGhfYjtcbiAgICB0cnVlXG4gIGVuZFxuXG5sZXQgYXBwZW5kIGEgYiA9XG4gIGxldCBsZW5ndGhfYiA9IGxlbmd0aCBiIGluXG4gIGlmIGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IgdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hcHBlbmQgYSBiIH5sZW5ndGhfYiA9XG4gICAgICBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSBsZW5ndGhfYjtcbiAgICAgICgqIEVsaWRpbmcgdGhlIFtjaGVja19zYW1lX2xlbmd0aF0gY2FsbCBiZWxvdyB3b3VsZCBiZSB3cm9uZyBpblxuICAgICAgICAgdGhlIGNhc2Ugd2hlcmUgW2FdIGFuZCBbYl0gYXJlIGFsaWFzZXMgb2YgZWFjaCBvdGhlciwgd2VcbiAgICAgICAgIHdvdWxkIGdldCBpbnRvIGFuIGluZmluaXRlIGxvb3AgaW5zdGVhZCBvZiBmYWlsaW5nLlxuXG4gICAgICAgICBXZSBjb3VsZCBwdXNoIHRoZSBjYWxsIHRvIFthcHBlbmRfaWZfcm9vbV0gaXRzZWxmLCBidXQgd2VcbiAgICAgICAgIHByZWZlciB0byBrZWVwIGl0IGluIHRoZSBzbG93IHBhdGguICAqKVxuICAgICAgY2hlY2tfc2FtZV9sZW5ndGggXCJhcHBlbmRcIiBiIH5sZW5ndGg6bGVuZ3RoX2I7XG4gICAgICBpZiBub3QgKGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IpXG4gICAgICB0aGVuIGdyb3dfYW5kX2FwcGVuZCBhIGIgfmxlbmd0aF9iXG4gICAgaW4gZ3Jvd19hbmRfYXBwZW5kIGEgYiB+bGVuZ3RoX2JcbiAgZW5kXG5cblxuXG4oKiogezE6aXRlcmF0aW9uIEl0ZXJhdGlvbn0gKilcblxuKCogVGhlIGltcGxlbWVudGF0aW9uIGNob2ljZSB0aGF0IHdlIG1hZGUgZm9yIGl0ZXJhdG9ycyBpcyB0aGUgb25lXG4gICB0aGF0IG1heGltaXplcyBlZmZpY2llbmN5IGJ5IGF2b2lkaW5nIHJlcGVhdGVkIGJvdW5kIGNoZWNraW5nOiB3ZVxuICAgY2hlY2sgdGhlIGxlbmd0aCBvZiB0aGUgZHluYW1pYyBhcnJheSBvbmNlIGF0IHRoZSBiZWdpbm5pbmcsIGFuZFxuICAgdGhlbiBvbmx5IG9wZXJhdGUgb24gdGhhdCBwb3J0aW9uIG9mIHRoZSBkeW5hcnJheSwgaWdub3JpbmdcbiAgIGVsZW1lbnRzIGFkZGVkIGluIHRoZSBtZWFudGltZS5cblxuICAgVGhlIHNwZWNpZmljYXRpb24gc3RhdGVzIHRoYXQgaXQgaXMgYSBwcm9ncmFtbWluZyBlcnJvciB0byBtdXRhdGVcbiAgIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IGR1cmluZyBpdGVyYXRpb24uIFdlIGNoZWNrIGZvciB0aGlzIGFuZFxuICAgcmFpc2UgYW4gZXJyb3Igb24gc2l6ZSBjaGFuZ2UuXG4gICBOb3RlIHRoYXQgd2UgbWF5IHN0aWxsIG1pc3Mgc29tZSB0cmFuc2llbnQgc3RhdGUgY2hhbmdlcyB0aGF0IGNhbmNlbFxuICAgZWFjaCBvdGhlciBhbmQgbGVhdmUgdGhlIGxlbmd0aCB1bmNoYW5nZWQgYXQgdGhlIG5leHQgY2hlY2suXG4qKVxuXG5sZXQgaXRlcl8gZiBrIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgKCogW2NoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyXSBpcyB1c2VkIGZvciBtZW1vcnkgc2FmZXR5LCBpdFxuICAgICBndWFyYW50ZWVzIHRoYXQgdGhlIGJhY2tpbmcgYXJyYXkgaGFzIGNhcGFjaXR5IGF0IGxlYXN0IFtsZW5ndGhdLFxuICAgICBhbGxvd2luZyB1bnNhZmUgYXJyYXkgYWNjZXNzLlxuXG4gICAgIFtjaGVja19zYW1lX2xlbmd0aF0gaXMgdXNlZCBmb3IgY29ycmVjdG5lc3MsIGl0IGxldHMgdGhlIGZ1bmN0aW9uXG4gICAgIGZhaWwgbW9yZSBvZnRlbiBpZiB3ZSBkaXNjb3ZlciB0aGUgcHJvZ3JhbW1pbmcgZXJyb3Igb2YgbXV0YXRpbmdcbiAgICAgdGhlIGxlbmd0aCBkdXJpbmcgaXRlcmF0aW9uLlxuXG4gICAgIFdlIGNvdWxkLCBuYWl2ZWx5LCBjYWxsIFtjaGVja19zYW1lX2xlbmd0aF0gYXQgZWFjaCBpdGVyYXRpb24gb2ZcbiAgICAgdGhlIGxvb3AgKGJlZm9yZSBvciBhZnRlciwgb3IgYm90aCkuIEhvd2V2ZXIsIG5vdGljZSB0aGF0IHRoaXMgaXNcbiAgICAgbm90IG5lY2Vzc2FyeSB0byBkZXRlY3QgdGhlIHJlbW92YWwgb2YgZWxlbWVudHMgZnJvbSBbYV06IGlmXG4gICAgIGVsZW1lbnRzIGhhdmUgYmVlbiByZW1vdmVkIGJ5IHRoZSB0aW1lIHRoZSBbZm9yXSBsb29wIHJlYWNoZXNcbiAgICAgdGhlbSwgdGhlbiBbdW5zYWZlX2dldF0gd2lsbCBpdHNlbGYgZmFpbCB3aXRoIGFuIFtJbnZhbGlkX2FyZ3VtZW50XVxuICAgICBleGNlcHRpb24uIFdlIG9ubHkgbmVlZCB0byBkZXRlY3QgdGhlIGFkZGl0aW9uIG9mIG5ldyBlbGVtZW50cyB0b1xuICAgICBbYV0gZHVyaW5nIGl0ZXJhdGlvbiwgYW5kIGZvciB0aGlzIGl0IGlzIGVub3VnaCB0byBjYWxsXG4gICAgIFtjaGVja19zYW1lX2xlbmd0aF0gb25jZSBhdCB0aGUgZW5kLlxuXG4gICAgIENhbGxpbmcgW2NoZWNrX3NhbWVfbGVuZ3RoXSBtb3JlIG9mdGVuIGNvdWxkIGNhdGNoIG1vcmVcbiAgICAgcHJvZ3JhbW1pbmcgZXJyb3JzLCBidXQgdGhlIG9ubHkgZXJyb3JzIHRoYXQgd2UgbWlzcyB3aXRoIHRoaXNcbiAgICAgb3B0aW1pemF0aW9uIGFyZSB0aG9zZSB0aGF0IGtlZXAgdGhlIGFycmF5IHNpemUgY29uc3RhbnQgLS1cbiAgICAgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgdGhhdCBjYW5jZWwgZWFjaCBvdGhlci4gV2UgY29uc2lkZXIgdGhpc1xuICAgICBhbiBhY2NlcHRhYmxlIHRyYWRlb2ZmLlxuICAqKVxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBrICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKTtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggZiBhIH5sZW5ndGhcblxubGV0IGl0ZXIgayBhID1cbiAgaXRlcl8gXCJpdGVyXCIgayBhXG5cbmxldCBpdGVyaSBrIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgayBpICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKTtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJpdGVyaVwiIGEgfmxlbmd0aFxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgICBFbGVtIHt2ID0gZiAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCl9KTtcbiAgfSBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcIm1hcFwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVzID0ge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICAgIEVsZW0ge3YgPSBmIGkgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpfSk7XG4gIH0gaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJtYXBpXCIgYSB+bGVuZ3RoO1xuICByZXNcblxubGV0IGZvbGRfbGVmdCBmIGFjYyBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICByIDo9IGYgIXIgdjtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJmb2xkX2xlZnRcIiBhIH5sZW5ndGg7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSBhY2MgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByID0gcmVmIGFjYyBpblxuICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICByIDo9IGYgdiAhcjtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJmb2xkX3JpZ2h0XCIgYSB+bGVuZ3RoO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBsb29wIHAgYXJyIGkgbGVuZ3RoID1cbiAgICBpZiBpID0gbGVuZ3RoIHRoZW4gZmFsc2VcbiAgICBlbHNlXG4gICAgICBwICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKVxuICAgICAgfHwgbG9vcCBwIGFyciAoaSArIDEpIGxlbmd0aFxuICBpblxuICBsZXQgcmVzID0gbG9vcCBwIGFyciAwIGxlbmd0aCBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcImV4aXN0c1wiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBsb29wIHAgYXJyIGkgbGVuZ3RoID1cbiAgICBpZiBpID0gbGVuZ3RoIHRoZW4gdHJ1ZVxuICAgIGVsc2VcbiAgICAgIHAgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpXG4gICAgICAmJiBsb29wIHAgYXJyIChpICsgMSkgbGVuZ3RoXG4gIGluXG4gIGxldCByZXMgPSBsb29wIHAgYXJyIDAgbGVuZ3RoIGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZm9yX2FsbFwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmaWx0ZXIgZiBhID1cbiAgbGV0IGIgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcl8gXCJmaWx0ZXJcIiAoZnVuIHggLT4gaWYgZiB4IHRoZW4gYWRkX2xhc3QgYiB4KSBhO1xuICBiXG5cbmxldCBmaWx0ZXJfbWFwIGYgYSA9XG4gIGxldCBiID0gY3JlYXRlICgpIGluXG4gIGl0ZXJfIFwiZmlsdGVyX21hcFwiIChmdW4geCAtPlxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHkgLT4gYWRkX2xhc3QgYiB5XG4gICkgYTtcbiAgYlxuXG5cbigqKiB7MTpjb252ZXJzaW9ucyBDb252ZXJzaW9ucyB0byBvdGhlciBkYXRhIHN0cnVjdHVyZXN9ICopXG5cbigqIFRoZSBlYWdlciBbdG9fKl0gY29udmVyc2lvbiBmdW5jdGlvbnMgYmVoYXZlIHNpbWlsYXJseSB0byBpdGVyYXRvcnNcbiAgIGluIHByZXNlbmNlIG9mIHVwZGF0ZXMgZHVyaW5nIGNvbXB1dGF0aW9uLiBUaGUgWypfcmVlbnRyYW50XVxuICAgZnVuY3Rpb25zIG9iZXkgdGhlaXIgbW9yZSBwZXJtaXNzaXZlIHNwZWNpZmljYXRpb24sIHdoaWNoIHRvbGVyYXRlc1xuICAgYW55IGNvbmN1cnJlbnQgdXBkYXRlLiAqKVxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggYSBpblxuICB7XG4gICAgbGVuZ3RoO1xuICAgIGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPiBFbGVtIHt2ID0gQXJyYXkudW5zYWZlX2dldCBhIGl9KTtcbiAgfVxuXG5sZXQgdG9fYXJyYXkgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPlxuICAgIHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpXG4gIGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fYXJyYXlcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgb2ZfbGlzdCBsaSA9XG4gIGxldCBhID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciAoZnVuIHggLT4gYWRkX2xhc3QgYSB4KSBsaTtcbiAgYVxuXG5sZXQgdG9fbGlzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgbCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBsIDo9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggOjogIWxcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19saXN0XCIgYSB+bGVuZ3RoO1xuICAhbFxuXG5sZXQgb2Zfc2VxIHNlcSA9XG4gIGxldCBpbml0ID0gY3JlYXRlKCkgaW5cbiAgYXBwZW5kX3NlcSBpbml0IHNlcTtcbiAgaW5pdFxuXG5sZXQgdG9fc2VxIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBjaGVja19zYW1lX2xlbmd0aCBcInRvX3NlcVwiIGEgfmxlbmd0aDtcbiAgICBpZiBpID49IGxlbmd0aCB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgKyAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcV9yZWVudHJhbnQgYSA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBpZiBpID49IGxlbmd0aCBhIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSArIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxX3JldiBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19zZXFfcmV2XCIgYSB+bGVuZ3RoO1xuICAgIGlmIGkgPCAwIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSAtIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggKGxlbmd0aCAtIDEpXG5cbmxldCB0b19zZXFfcmV2X3JlZW50cmFudCBhID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1biAoKSAtPlxuICAgIGlmIGkgPCAwIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgaWYgaSA+PSBsZW5ndGggYSB0aGVuXG4gICAgICAoKiBJZiBzb21lIGVsZW1lbnRzIGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSBtZWFudGltZSwgd2Ugc2tpcFxuICAgICAgICAgdGhvc2UgZWxlbWVudHMgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5ldyBlbmQgb2YgdGhlIGFycmF5LiAqKVxuICAgICAgYXV4IChsZW5ndGggYSAtIDEpICgpXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgPSBnZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAodiwgYXV4IChpIC0gMSkpXG4gICAgZW5kXG4gIGluXG4gIGF1eCAobGVuZ3RoIGEgLSAxKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLnN0YXJ0c193aXRoIH5wcmVmaXg6XCItXCIgcyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbigqIERpc2FibGUgd2FybmluZyAzNzogdmFsdWVzIGFyZSBjb25zdHJ1Y3RlZCBpbiB0aGUgcnVudGltZSAqKVxudHlwZVtAd2FybmluZyBcIi0zN1wiXSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgIDogc3RyaW5nO1xuICAgICAgc3RhcnRfbG51bSA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gICAgICBlbmRfb2Zmc2V0IDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2Ygc3RhcnRfbG51bSAqKVxuICAgICAgZW5kX2xudW0gICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgOiBpbnQ7ICgqIFJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiBlbmRfbG51bSBsaW5lICopXG4gICAgICBpc19pbmxpbmUgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGxldCBsaW5lcyA9XG4gICAgICAgIGlmIGwuc3RhcnRfbG51bSA9IGwuZW5kX2xudW0gdGhlblxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiICVkXCIgbC5zdGFydF9sbnVtXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcInMgJWQtJWRcIiBsLnN0YXJ0X2xudW0gbC5lbmRfbG51bVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSVzLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsaW5lcyBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbiAgZW5kX2xpbmUgOiBpbnQ7XG4gIGVuZF9jb2wgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwuc3RhcnRfbG51bTtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9vZmZzZXQ7XG4gICAgICBlbmRfbGluZSAgICA9IGwuZW5kX2xudW07XG4gICAgICBlbmRfY29sICAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCBuZWdhdGUgcCB2ID0gbm90IChwIHYpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5X3JhaXNlZCBvZiBleG5cblxubGV0ICgpID0gUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBAQCBmdW5jdGlvblxufCBGaW5hbGx5X3JhaXNlZCBleG4gLT4gU29tZSAoXCJGdW4uRmluYWxseV9yYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bilcbnwgXyAtPiBOb25lXG5cbmxldCBwcm90ZWN0IH4oZmluYWxseSA6IHVuaXQgLT4gdW5pdCkgd29yayA9XG4gIGxldCBmaW5hbGx5X25vX2V4biAoKSA9XG4gICAgdHJ5IGZpbmFsbHkgKCkgd2l0aCBlIC0+XG4gICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgKEZpbmFsbHlfcmFpc2VkIGUpIGJ0XG4gIGluXG4gIG1hdGNoIHdvcmsgKCkgd2l0aFxuICB8IHJlc3VsdCAtPiBmaW5hbGx5X25vX2V4biAoKSA7IHJlc3VsdFxuICB8IGV4Y2VwdGlvbiB3b3JrX2V4biAtPlxuICAgICAgbGV0IHdvcmtfYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZmluYWxseV9ub19leG4gKCkgO1xuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2Ugd29ya19leG4gd29ya19idFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKYWNxdWVzLUhlbnJpIEpvdXJkYW4sIHByb2pldCBHYWxsaXVtLCBJTlJJQSBQYXJpcyAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICAqKVxuKCogICAgIGV0IGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXQgPSB7XG4gIG1pbm9yX3dvcmRzIDogZmxvYXQ7XG4gIHByb21vdGVkX3dvcmRzIDogZmxvYXQ7XG4gIG1ham9yX3dvcmRzIDogZmxvYXQ7XG4gIG1pbm9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBtYWpvcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgaGVhcF93b3JkcyA6IGludDtcbiAgaGVhcF9jaHVua3MgOiBpbnQ7XG4gIGxpdmVfd29yZHMgOiBpbnQ7XG4gIGxpdmVfYmxvY2tzIDogaW50O1xuICBmcmVlX3dvcmRzIDogaW50O1xuICBmcmVlX2Jsb2NrcyA6IGludDtcbiAgbGFyZ2VzdF9mcmVlIDogaW50O1xuICBmcmFnbWVudHMgOiBpbnQ7XG4gIGNvbXBhY3Rpb25zIDogaW50O1xuICB0b3BfaGVhcF93b3JkcyA6IGludDtcbiAgc3RhY2tfc2l6ZSA6IGludDtcbiAgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiBpbnQ7XG59XG5cbnR5cGUgY29udHJvbCA9IHtcbiAgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludDtcbiAgc3BhY2Vfb3ZlcmhlYWQgOiBpbnQ7XG4gIHZlcmJvc2UgOiBpbnQ7XG4gIG1heF9vdmVyaGVhZCA6IGludDtcbiAgc3RhY2tfbGltaXQgOiBpbnQ7XG4gIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcblxubGV0IGV2ZW50bG9nX3BhdXNlICgpID0gKClcbmxldCBldmVudGxvZ19yZXN1bWUgKCkgPSAoKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcHJpbnRfc3RhdCBjID1cbiAgbGV0IHN0ID0gc3RhdCAoKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1pbm9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJtYWpvcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJjb21wYWN0aW9uczogICAgICAgICAgICAlZFxcblwiIHN0LmNvbXBhY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6ICVkXFxuXCIgc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwxID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiUuMGZcIiBzdC5taW5vcl93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwibWlub3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWlub3Jfd29yZHM7XG4gIGZwcmludGYgYyBcInByb21vdGVkX3dvcmRzOiAlKi4wZlxcblwiIGwxIHN0LnByb21vdGVkX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJtYWpvcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5tYWpvcl93b3JkcztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMiA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlZFwiIHN0LnRvcF9oZWFwX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJ0b3BfaGVhcF93b3JkczogJSpkXFxuXCIgbDIgc3QudG9wX2hlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImhlYXBfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsaXZlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QubGl2ZV93b3JkcztcbiAgZnByaW50ZiBjIFwiZnJlZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmZyZWVfd29yZHM7XG4gIGZwcmludGYgYyBcImxhcmdlc3RfZnJlZTogICAlKmRcXG5cIiBsMiBzdC5sYXJnZXN0X2ZyZWU7XG4gIGZwcmludGYgYyBcImZyYWdtZW50czogICAgICAlKmRcXG5cIiBsMiBzdC5mcmFnbWVudHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBmcHJpbnRmIGMgXCJsaXZlX2Jsb2NrczogJWRcXG5cIiBzdC5saXZlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiZnJlZV9ibG9ja3M6ICVkXFxuXCIgc3QuZnJlZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImhlYXBfY2h1bmtzOiAlZFxcblwiIHN0LmhlYXBfY2h1bmtzXG5cblxubGV0IGFsbG9jYXRlZF9ieXRlcyAoKSA9XG4gIGxldCAobWksIHBybywgbWEpID0gY291bnRlcnMgKCkgaW5cbiAgKG1pICsuIG1hIC0uIHBybykgKi4gZmxvYXRfb2ZfaW50IChTeXMud29yZF9zaXplIC8gOClcblxuXG5leHRlcm5hbCBmaW5hbGlzZSA6ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyXCJcbmV4dGVybmFsIGZpbmFsaXNlX2xhc3QgOiAodW5pdCAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID1cbiAgXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXCJcbmV4dGVybmFsIGZpbmFsaXNlX3JlbGVhc2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVsZWFzZVwiXG5cblxudHlwZSBhbGFybSA9IGJvb2wgQXRvbWljLnRcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmIEF0b21pYy5nZXQgYXJlYy5hY3RpdmUgdGhlbiBiZWdpblxuICAgIGxldCBmaW5hbGx5ICgpID0gZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjIGluXG4gICAgRnVuLnByb3RlY3QgfmZpbmFsbHkgYXJlYy5mXG4gIGVuZFxuXG5sZXQgZGVsZXRlX2FsYXJtIGEgPSBBdG9taWMuc2V0IGEgZmFsc2VcblxubGV0IGNyZWF0ZV9hbGFybSBmID1cbiAgbGV0IGFyZWMgPSB7IGFjdGl2ZSA9IEF0b21pYy5tYWtlIHRydWU7IGYgPSBmIH0gaW5cbiAgRG9tYWluLmF0X2V4aXQgKGZ1biAoKSAtPiBkZWxldGVfYWxhcm0gYXJlYy5hY3RpdmUpO1xuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIHRcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuXG4gICAgZXh0ZXJuYWwgZGlzY2FyZCA6IHQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX2Rpc2NhcmRcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW5fY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5faW5fYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5faW5cbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX2luX2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IGljID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX2luX25vZXJyIGljKVxuICAgIChmdW4gKCkgLT4gZiBpYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luX2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbiBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX2luX25vZXJyXG5cbmxldCBpbnB1dF9jaGFyIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICB8IGMgLT4gU29tZSBjXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2J5dGUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfYnl0ZSBpYyB3aXRoXG4gIHwgbiAtPiBTb21lIG5cbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfbGluZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dCA9IFN0ZGxpYi5pbnB1dFxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgPSBcImNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcIlxuXG5sZXQgaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0X2JpZ2FycmF5XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuIFNvbWUgKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluICgqIElPX0JVRkZFUl9TSVpFICopXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIHRyeVxuICAgICAgU3RkbGliLmluX2NoYW5uZWxfbGVuZ3RoIGljIC0gU3RkbGliLnBvc19pbiBpY1xuICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgIC0xXG4gIGluXG4gIGxldCBpbml0aWFsX3NpemUgPSBpZiBpbml0aWFsX3NpemUgPCAwIHRoZW4gY2h1bmtfc2l6ZSBlbHNlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICBpZiBpbml0aWFsX3NpemUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIGluaXRpYWxfc2l6ZVxuICAgIGVsc2VcbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgbnJlYWQgPSByZWFkX3VwdG8gaWMgYnVmIDAgaW5pdGlhbF9zaXplIGluXG4gIGlmIG5yZWFkIDwgaW5pdGlhbF9zaXplIHRoZW4gKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBwYXJ0aWFsbHkgZmlsbGVkICopXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCBucmVhZFxuICBlbHNlIGJlZ2luICgqIG5yZWFkID0gaW5pdGlhbF9zaXplLCBtYXliZSBFT0YgcmVhY2hlZCAqKVxuICAgIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgICAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIGlzIGNvbXBsZXRlbHkgZmlsbGVkICopXG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gICAgfCBjIC0+XG4gICAgICAgICgqIEVPRiBub3QgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYnVmIG9mcyA9XG4gICAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgb2ZzIGNodW5rX3NpemUgaW5cbiAgICAgICAgICBsZXQgcmVtID0gQnl0ZXMubGVuZ3RoIGJ1ZiAtIG9mcyBpblxuICAgICAgICAgICgqIFtyZW1dIGNhbiBiZSA8IFtjaHVua19zaXplXSBpZiBidWZmZXIgc2l6ZSBjbG9zZSB0b1xuICAgICAgICAgICAgIFtTeXMubWF4X3N0cmluZ19sZW5ndGhdICopXG4gICAgICAgICAgbGV0IHIgPSByZWFkX3VwdG8gaWMgYnVmIG9mcyByZW0gaW5cbiAgICAgICAgICBpZiByIDwgcmVtIHRoZW4gKCogRU9GIHJlYWNoZWQgKilcbiAgICAgICAgICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgKG9mcyArIHIpXG4gICAgICAgICAgZWxzZSAoKiByID0gcmVtICopXG4gICAgICAgICAgICBsb29wIGJ1ZiAob2ZzICsgcmVtKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBucmVhZCAoY2h1bmtfc2l6ZSArIDEpIGluXG4gICAgICAgIEJ5dGVzLnNldCBidWYgbnJlYWQgYztcbiAgICAgICAgbG9vcCBidWYgKG5yZWFkICsgMSlcbiAgZW5kXG5cbmxldCBbQHRhaWxfbW9kX2NvbnNdIHJlYyBpbnB1dF9saW5lcyBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBsaW5lIC0+IGxpbmUgOjogaW5wdXRfbGluZXMgaWNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gW11cblxubGV0IHJlYyBmb2xkX2xpbmVzIGYgYWNjdSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBsaW5lIC0+IGZvbGRfbGluZXMgZiAoZiBhY2N1IGxpbmUpIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IGFjY3VcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfaW5cblxuZXh0ZXJuYWwgaXNfYmluYXJ5X21vZGUgOiBpbl9jaGFubmVsIC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYmluYXJ5X21vZGVcIlxuXG5leHRlcm5hbCBpc2F0dHkgOiB0IC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzYXR0eVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IG91dF9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9vdXRfYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5fb3V0XG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9vdXRfZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgb2MgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyIG9jKVxuICAgIChmdW4gKCkgLT4gZiBvYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dF9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0IHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtKSBzIGZcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9iaWdhcnJheSA6XG4gIHQgLT4gXyBCaWdhcnJheS5BcnJheTEudCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XCJcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnJcbmxldCBmbHVzaCA9IFN0ZGxpYi5mbHVzaFxubGV0IGZsdXNoX2FsbCA9IFN0ZGxpYi5mbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IFN0ZGxpYi5vdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmdcbmxldCBvdXRwdXRfYmlnYXJyYXkgb2MgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9iaWdhcnJheSBvYyBidWYgb2ZzIGxlblxuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9vdXRcblxuZXh0ZXJuYWwgaXNfYmluYXJ5X21vZGUgOiBvdXRfY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgc2V0X2J1ZmZlcmVkIDogdCAtPiBib29sIC0+IHVuaXQgPSBcImNhbWxfbWxfc2V0X2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNfYnVmZmVyZWQgOiB0IC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYnVmZmVyZWRcIlxuXG5leHRlcm5hbCBpc2F0dHkgOiB0IC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzYXR0eVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFV0aWxpdHkgZnVuY3Rpb25zICopXG5cbmxldCBoZXhfb2Zfc3RyaW5nIGQgPVxuICBsZXQgY2hhcl9oZXggbiA9XG4gICAgQ2hhci5jaHIgKGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgKyBuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIENoYXIuY29kZSAnYScgKyBuIC0gMTApIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGQgaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAobGVuICogMikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgc3RyaW5nX29mX2hleCBzID1cbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJEaWdlc3Qub2ZfaGV4XCIgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBTdHJpbmcuaW5pdCAoU3RyaW5nLmxlbmd0aCBzIC8gMikgKGZ1biBpIC0+IENoYXIuY2hyIChieXRlICgyICogaSkpKVxuXG4oKiBHZW5lcmljIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdCA9IHN0cmluZ1xuICB2YWwgaGFzaF9sZW5ndGggOiBpbnRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdFxuICB2YWwgYnl0ZXMgOiBieXRlcyAtPiB0XG4gIHZhbCBzdWJzdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gIHZhbCBzdWJieXRlcyA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgY2hhbm5lbCA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHRcbiAgdmFsIGZpbGUgOiBzdHJpbmcgLT4gdFxuICB2YWwgb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gdCAtPiB1bml0XG4gIHZhbCBpbnB1dCA6IGluX2NoYW5uZWwgLT4gdFxuICB2YWwgdG9faGV4IDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX2hleCA6IHN0cmluZyAtPiB0XG5lbmRcblxuKCogQkxBS0UyIGhhc2hpbmcsIHBhcmFtZXRlcml6ZWQgYnkgaGFzaCBzaXplICopXG5cbm1vZHVsZSBCTEFLRTIgKFg6IHNpZyB2YWwgaGFzaF9sZW5ndGggOiBpbnQgZW5kKSA6IFMgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBzdHJpbmdcblxuICBsZXQgaGFzaF9sZW5ndGggPVxuICAgIGlmIFguaGFzaF9sZW5ndGggPCAxIHx8IFguaGFzaF9sZW5ndGggPiA2NFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuQkxBS0UyOiB3cm9uZyBoYXNoIHNpemVcIjtcbiAgICBYLmhhc2hfbGVuZ3RoXG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuICB0eXBlIHN0YXRlXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2dlbjogaW50IC0+IHN0cmluZyAtPiBzdGF0ZSA9IFwiY2FtbF9ibGFrZTJfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdXBkYXRlOiBzdGF0ZSAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2JsYWtlMl91cGRhdGVcIlxuICBleHRlcm5hbCBmaW5hbDogc3RhdGUgLT4gaW50IC0+IHQgPSBcImNhbWxfYmxha2UyX2ZpbmFsXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogaW50IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGFrZTJfc3RyaW5nXCJcblxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX2dlbiBoYXNoX2xlbmd0aCBcIlwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPVxuICAgIHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG4gIGxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCI7XG4gICAgdW5zYWZlX3N0cmluZyBoYXNoX2xlbmd0aCBcIlwiIHN0ciBvZnMgbGVuXG5cbiAgbGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9XG4gICAgc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxuICBsZXQgY2hhbm5lbCBpYyB0b3JlYWQgPVxuICAgIGxldCBidWZfc2l6ZSA9IDQwOTYgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0IGN0eCA9IGNyZWF0ZSAoKSBpblxuICAgIGlmIHRvcmVhZCA8IDAgdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBkb19yZWFkICgpID1cbiAgICAgICAgbGV0IG4gPSBJbl9jaGFubmVsLmlucHV0IGljIGJ1ZiAwIGJ1Zl9zaXplIGluXG4gICAgICAgIGlmIG4gPSAwXG4gICAgICAgIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoXG4gICAgICAgIGVsc2UgKHVwZGF0ZSBjdHggKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSAwIG47IGRvX3JlYWQgKCkpXG4gICAgICBpbiBkb19yZWFkICgpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCB0b3JlYWQgPVxuICAgICAgICBpZiB0b3JlYWQgPSAwIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEluX2NoYW5uZWwuaW5wdXQgaWMgYnVmIDAgKEludC5taW4gYnVmX3NpemUgdG9yZWFkKSBpblxuICAgICAgICAgIGlmIG4gPSAwXG4gICAgICAgICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIHVwZGF0ZSBjdHggKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSAwIG47XG4gICAgICAgICAgICBkb19yZWFkICh0b3JlYWQgLSBuKVxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmRcbiAgICAgIGluIGRvX3JlYWQgdG9yZWFkXG4gICAgZW5kXG5cbiAgbGV0IGZpbGUgZmlsZW5hbWUgPVxuICAgIEluX2NoYW5uZWwud2l0aF9vcGVuX2JpbiBmaWxlbmFtZSAoZnVuIGljIC0+IGNoYW5uZWwgaWMgKC0xKSlcblxuICBsZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID0gb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG4gIGxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIGhhc2hfbGVuZ3RoXG5cbiAgbGV0IHRvX2hleCBkID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gaGFzaF9sZW5ndGggdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgICBoZXhfb2Zfc3RyaW5nIGRcblxuICBsZXQgb2ZfaGV4IHMgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA8PiBoYXNoX2xlbmd0aCAqIDIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5vZl9oZXhcIjtcbiAgICBzdHJpbmdfb2ZfaGV4IHNcblxuZW5kXG5cbm1vZHVsZSBCTEFLRTEyOCA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gMTYgZW5kKVxubW9kdWxlIEJMQUtFMjU2ID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSAzMiBlbmQpXG5tb2R1bGUgQkxBS0U1MTIgPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDY0IGVuZClcblxuKCogTUQ1IGhhc2hpbmcgKilcblxubW9kdWxlIE1ENSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IHN0cmluZ1xuXG4gIGxldCBoYXNoX2xlbmd0aCA9IDE2XG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuICBleHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuICBleHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxuICBsZXQgc3RyaW5nIHN0ciA9XG4gICAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxuICBsZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gICAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbiAgbGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbiAgbGV0IGZpbGUgZmlsZW5hbWUgPVxuICAgIEluX2NoYW5uZWwud2l0aF9vcGVuX2JpbiBmaWxlbmFtZSAoZnVuIGljIC0+IGNoYW5uZWwgaWMgKC0xKSlcblxuICBsZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID0gb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG4gIGxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbiAgbGV0IHRvX2hleCBkID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgICBoZXhfb2Zfc3RyaW5nIGRcblxuICBsZXQgb2ZfaGV4IHMgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gICAgc3RyaW5nX29mX2hleCBzXG5cbmVuZFxuXG4oKiBEZWZhdWx0IGV4cG9ydGVkIGltcGxlbWVudGF0aW9uIGlzIE1ENSAqKVxuXG5pbmNsdWRlIE1ENVxuXG5sZXQgZnJvbV9oZXggPSBvZl9oZXhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBNYW51ZWwgU2VycmFubyBldCBYYXZpZXIgTGVyb3ksIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtCaWdhcnJheV06IGxhcmdlLCBtdWx0aS1kaW1lbnNpb25hbCwgbnVtZXJpY2FsIGFycmF5cyAqKVxuXG4oKiBUaGVzZSB0eXBlcyBpbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSB0YWJsZXMgaW5cbiAgIC4uL3R5cGluZy90eXBlb3B0Lm1sICopXG5cbnR5cGUgZmxvYXQxNl9lbHQgPSBGbG9hdDE2X2VsdFxudHlwZSBmbG9hdDMyX2VsdCA9IEZsb2F0MzJfZWx0XG50eXBlIGZsb2F0NjRfZWx0ID0gRmxvYXQ2NF9lbHRcbnR5cGUgaW50OF9zaWduZWRfZWx0ID0gSW50OF9zaWduZWRfZWx0XG50eXBlIGludDhfdW5zaWduZWRfZWx0ID0gSW50OF91bnNpZ25lZF9lbHRcbnR5cGUgaW50MTZfc2lnbmVkX2VsdCA9IEludDE2X3NpZ25lZF9lbHRcbnR5cGUgaW50MTZfdW5zaWduZWRfZWx0ID0gSW50MTZfdW5zaWduZWRfZWx0XG50eXBlIGludDMyX2VsdCA9IEludDMyX2VsdFxudHlwZSBpbnQ2NF9lbHQgPSBJbnQ2NF9lbHRcbnR5cGUgaW50X2VsdCA9IEludF9lbHRcbnR5cGUgbmF0aXZlaW50X2VsdCA9IE5hdGl2ZWludF9lbHRcbnR5cGUgY29tcGxleDMyX2VsdCA9IENvbXBsZXgzMl9lbHRcbnR5cGUgY29tcGxleDY0X2VsdCA9IENvbXBsZXg2NF9lbHRcblxuKCogS2VlcCB0aGUgb3JkZXIgb2YgdGhlc2UgY29uc3RydWN0b3JzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9raW5kXG4gICBlbnVtZXJhdGlvbiBpbiBiaWdhcnJheS5oICopXG5cbnR5cGUgKCdhLCAnYikga2luZCA9XG4gIHwgRmxvYXQzMiA6IChmbG9hdCwgZmxvYXQzMl9lbHQpIGtpbmRcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBmbG9hdDY0X2VsdCkga2luZFxuICB8IEludDhfc2lnbmVkIDogKGludCwgaW50OF9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50OF91bnNpZ25lZCA6IChpbnQsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfc2lnbmVkIDogKGludCwgaW50MTZfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3Vuc2lnbmVkIDogKGludCwgaW50MTZfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MzIgOiAoaW50MzIsIGludDMyX2VsdCkga2luZFxuICB8IEludDY0IDogKGludDY0LCBpbnQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQgOiAoaW50LCBpbnRfZWx0KSBraW5kXG4gIHwgTmF0aXZlaW50IDogKG5hdGl2ZWludCwgbmF0aXZlaW50X2VsdCkga2luZFxuICB8IENvbXBsZXgzMiA6IChDb21wbGV4LnQsIGNvbXBsZXgzMl9lbHQpIGtpbmRcbiAgfCBDb21wbGV4NjQgOiAoQ29tcGxleC50LCBjb21wbGV4NjRfZWx0KSBraW5kXG4gIHwgQ2hhciA6IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEZsb2F0MTYgOiAoZmxvYXQsIGZsb2F0MTZfZWx0KSBraW5kXG5cbnR5cGUgY19sYXlvdXQgPSBDX2xheW91dF90eXBcbnR5cGUgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dF90eXAgKCoqKVxuXG50eXBlICdhIGxheW91dCA9XG4gICAgQ19sYXlvdXQ6IGNfbGF5b3V0IGxheW91dFxuICB8IEZvcnRyYW5fbGF5b3V0OiBmb3J0cmFuX2xheW91dCBsYXlvdXRcblxubGV0IGZsb2F0MTYgPSBGbG9hdDE2XG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDE2IC0+IDJcbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIGxldCBkbGVuID0gQXJyYXkubGVuZ3RoIGRpbXMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zOyBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXggPVxuICAgIFwibHhtMTpcIlxuICAgICgqIFwibHhtXCIgZGVub3RlcyB0aGUgYWxnb3JpdGhtIGN1cnJlbnRseSBpbiB1c2UsIGFuZCAnMScgaXNcbiAgICAgICBhIHZlcnNpb24gbnVtYmVyLiBXZSBzaG91bGQgdXBkYXRlIHRoaXMgcHJlZml4IGlmIHdlIGNoYW5nZVxuICAgICAgIHRoZSBSYW5kb20gYWxnb3JpdGhtIG9yIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCwgc28gdGhhdCB1c2Vyc1xuICAgICAgIGdldCBhIGNsZWFuIGVycm9yIGluc3RlYWQgb2YgYmVsaWV2aW5nIHRoYXQgdGhleSBmYWl0aGZ1bGx5XG4gICAgICAgcmVwcm9kdWNlIHRoZWlyIHByZXZpb3VzIHN0YXRlIGFuZCBpbiBmYWN0IGdldCBhIGRpZmZlcmVudFxuICAgICAgIHN0cmVhbS5cblxuICAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjb25zdHJhaW50IHRvIGtlZXAgdGhlIHNhbWVcbiAgICAgICBcIjxuYW1lPjx2ZXI+OjxkYXRhPlwiIGZvcm1hdCBvciBtZXNzYWdlIHNpemUgaW4gZnV0dXJlIHZlcnNpb25zLFxuICAgICAgIHdlIGNvdWxkIGNoYW5nZSB0aGUgZm9ybWF0IGNvbXBsZXRlbHkgaWYgd2Ugd2FudGVkIGFzIGxvbmdcbiAgICAgICBhcyB0aGVyZSBpcyBubyBjb25mdXNpb24gcG9zc2libGUgd2l0aCB0aGUgcHJldmlvdXMgZm9ybWF0cy4gKilcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuID1cbiAgICBTdHJpbmcubGVuZ3RoIHNlcmlhbGl6YXRpb25fcHJlZml4XG5cbiAgbGV0IHRvX2JpbmFyeV9zdHJpbmcgcyA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChwcmVmbGVuICsgNCAqIDgpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcHJlZml4IDAgYnVmIDAgcHJlZmxlbjtcbiAgICBmb3IgaSA9IDAgdG8gMyBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIGkgKiA4KSAoQXJyYXkxLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuXG4gIGxldCBvZl9iaW5hcnlfc3RyaW5nIGJ1ZiA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGJ1ZiA8PiBwcmVmbGVuICsgNCAqIDhcbiAgICAgICB8fCBub3QgKFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4IGJ1ZilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJSYW5kb20uU3RhdGUub2ZfYmluYXJ5X3N0cmluZzogZXhwZWN0ZWQgYSBmb3JtYXQgXFxcbiAgICAgICAgICBjb21wYXRpYmxlIHdpdGggT0NhbWwgXCIgXiBTeXMub2NhbWxfdmVyc2lvbik7XG4gICAgbGV0IGkxID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAwICogOCkgaW5cbiAgICBsZXQgaTIgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDEgKiA4KSBpblxuICAgIGxldCBpMyA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMiAqIDgpIGluXG4gICAgbGV0IGk0ID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAzICogOCkgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuXG4gIGxldCBhc3NpZ24gKGRzdDogdCkgKHNyYzogdCkgPVxuICAgIEFycmF5MS5ibGl0IHNyYyBkc3RcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcycgPSBjcmVhdGUoKSBpbiBhc3NpZ24gcycgczsgcydcblxuICAoKiBUaGUgc2VlZCBpcyBhbiBhcnJheSBvZiBpbnRlZ2Vycy4gIEl0IGNhbiBiZSBqdXN0IG9uZSBpbnRlZ2VyLFxuICAgICBidXQgaXQgY2FuIGFsc28gYmUgMTIgb3IgbW9yZSBieXRlcy4gIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2UsXG4gICAgIHdlIHNlcmlhbGl6ZSB0aGUgYXJyYXkgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywgdGhlbiBoYXNoIHRoZVxuICAgICBzZXF1ZW5jZSB3aXRoIE1ENSAoRGlnZXN0LmJ5dGVzKS4gIE1ENSBnaXZlcyBvbmx5IDEyOCBiaXRzIHdoaWxlXG4gICAgIHdlIG5lZWQgMjU2IGJpdHMsIHNvIHdlIGhhc2ggdHdpY2Ugd2l0aCBkaWZmZXJlbnQgc3VmZml4ZXMuICopXG4gIGxldCByZWluaXQgcyBzZWVkID1cbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgKG4gKiA4ICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvXG4gICAgICBCeXRlcy5zZXRfaW50NjRfbGUgYiAoaSAqIDgpIChJbnQ2NC5vZl9pbnQgc2VlZC4oaSkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMSc7XG4gICAgbGV0IGQxID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMic7XG4gICAgbGV0IGQyID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBzZXQgcyAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDgpXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiA4KVxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCBzID0gY3JlYXRlKCkgaW4gcmVpbml0IHMgc2VlZDsgc1xuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9XG4gICAgbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IG1pbl9pbnQzMSA9IC0weDQwMDBfMDAwMFxuICAgICAgKCogPSAtMnteMzB9LCB3aGljaCBpcyBbbWluX2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICBsZXQgbWF4X2ludDMxID0gMHgzRkZGX0ZGRkZcbiAgICAgICgqID0gIDJ7XjMwfS0xLCB3aGljaCBpcyBbbWF4X2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICAoKiBhdm9pZCBpbnRlZ2VyIGxpdGVyYWxzIGZvciB0aGVzZSwgMzItYml0IE9DYW1sIHdvdWxkIHJlamVjdCB0aGVtOiAqKVxuICBsZXQgbWluX2ludDMyID0gLSgxIGxzbCAzMSlcbiAgICAgICgqID0gLTB4ODAwMF8wMDAwIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuICBsZXQgbWF4X2ludDMyID0gKDEgbHNsIDMxKSAtIDFcbiAgICAgICgqID0gIDB4N0ZGRl9GRkZGIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDJeMzAgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtuXSAoZXhjbHVkZWQpLlxuICAgICBbYm91bmRdIG1heSBiZSBhbnkgcG9zaXRpdmUgW2ludF0uICBbbWFza10gbXVzdCBiZSBvZiB0aGUgZm9ybSBbMnteaX0tMV1cbiAgICAgYW5kIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW25dLiAgTGFyZ2VyIHZhbHVlcyBvZiBbbWFza10gbWFrZSB0aGUgZnVuY3Rpb25cbiAgICAgcnVuIGZhc3RlciAoZmV3ZXIgc2FtcGxlcyBhcmUgcmVqZWN0ZWQpLiAgU21hbGxlciB2YWx1ZXMgb2YgW21hc2tdXG4gICAgIGFyZSB1c2FibGUgb24gYSB3aWRlciByYW5nZSBvZiBPQ2FtbCBpbXBsZW1lbnRhdGlvbnMuICAqKVxuICBsZXQgcmVjIGludF9hdXggcyBuIG1hc2sgPVxuICAgICgqIFdlIHN0YXJ0IGJ5IGRyYXdpbmcgYSBub24tbmVnYXRpdmUgaW50ZWdlciBpbiB0aGUgWyBbMCwgbWFza10gXSByYW5nZSAqKVxuICAgIGxldCByID0gSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWFzayBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgICgqIEZvciB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcmVzdWx0IGJldHdlZW4gMCBpbmNsdWRlZCBhbmQgW25dXG4gICAgICogZXhjbHVkZWQsIHRoZSByYW5kb20gbnVtYmVyIFtyXSBtdXN0IGhhdmUgYmVlbiBkcmF3biB1bmlmb3JtbHkgaW5cbiAgICAgKiBhbiBpbnRlcnZhbCB3aG9zZSBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBbbl0uIFRvIGFjaGlldmUgdGhpcyxcbiAgICAgKiB3ZSB1c2UgcmVqZWN0aW9uIHNhbXBsaW5nIG9uIHRoZSBncmVhdGVzdCBpbnRlcnZhbCBbIFswLCBrKm4tMV0gXVxuICAgICAqIHRoYXQgZml0cyBpbiBbIFswLCBtYXNrXSBdLiAgVGhhdCBpcywgd2UgcmVqZWN0IHRoZVxuICAgICAqIHNhbXBsZSBpZiBpdCBmYWxscyBvdXRzaWRlIG9mIHRoaXMgaW50ZXJ2YWwsIGFuZCBkcmF3IGFnYWluLlxuICAgICAqIFRoaXMgaXMgd2hhdCB0aGUgdGVzdCBiZWxvdyBkb2VzLCB3aGlsZSBjYXJlZnVseSBhdm9pZGluZ1xuICAgICAqIG92ZXJmbG93cyBhbmQgc3BhcmluZyBhIGRpdmlzaW9uIFttYXNrIC8gbl0uICopXG4gICAgaWYgciAtIHYgPiBtYXNrIC0gbiArIDEgdGhlbiBpbnRfYXV4IHMgbiBtYXNrIGVsc2UgdlxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFRoZSBib3VuZCBtdXN0IGZpdCBpbiAzMS1iaXQgc2lnbmVkIGludGVnZXJzLlxuICAgICBUaGlzIGZ1bmN0aW9uIHlpZWxkcyB0aGUgc2FtZSBvdXRwdXQgcmVnYXJkbGVzcyBvZiB0aGUgaW50ZWdlciBzaXplLiAqKVxuICBsZXQgaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kID4gbWF4X2ludDMxIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRfYXV4IHMgYm91bmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS5cbiAgICAgW2JvdW5kXSBtYXkgYmUgYW55IHBvc2l0aXZlIFtpbnRdLiAqKVxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgKCogV2hlbiB0aGUgYm91bmQgZml0cyBpbiAzMS1iaXQgc2lnbmVkIGludGVnZXJzLCB3ZSB1c2UgdGhlIHNhbWUgbWFza1xuICAgICAgIGFzIGluIGZ1bmN0aW9uIFtpbnRdIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zXG4gICAgICAgc3VwcG9ydGVkIGJ5IE9DYW1sICgzMi1iaXQgT0NhbWwsIDY0LWJpdCBPQ2FtbCwgYW5kIEphdmFTY3JpcHQpLlxuICAgICAgIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzItYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIFttYXhfaW50MzJdXG4gICAgICAgYXMgdGhlIG1hc2sgc28gYXMgdG8geWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgd2hlcmVcbiAgICAgICBbU3lzLmludF9zaXplID49IDMyXSAoaS5lLiBKYXZhU2NyaXB0IGFuZCA2NC1iaXQgT0NhbWwpLiAqKVxuICAgIGVsc2VcbiAgICAgIGludF9hdXggcyBib3VuZFxuICAgICAgICAoaWYgYm91bmQgPD0gbWF4X2ludDMxIHRoZW4gbWF4X2ludDMxXG4gICAgICAgICBlbHNlIGlmIGJvdW5kIDw9IG1heF9pbnQzMiB0aGVuIG1heF9pbnQzMlxuICAgICAgICAgZWxzZSBtYXhfaW50KVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgVGhlIFtuYml0c10gcGFyYW1ldGVyIGlzIHRoZSBzaXplIGluIGJpdHMgb2YgdGhlIHNpZ25lZCBpbnRlZ2Vyc1xuICAgICB3ZSBkcmF3IGZyb20gW3NdLlxuICAgICBXZSBtdXN0IGhhdmUgWy0ye15uYml0cyAtIDF9IDw9IG1pbiA8PSBtYXggPCAye15uYml0cyAtIDF9XS5cbiAgICAgTW9yZW92ZXIsIGZvciB0aGUgaXRlcmF0aW9uIHRvIGNvbnZlcmdlIHF1aWNrbHksIHRoZSBpbnRlcnZhbFxuICAgICBbW21pbiwgbWF4XV0gc2hvdWxkIGhhdmUgd2lkdGggYXQgbGVhc3QgWzJ7Xm5iaXRzIC0gMX1dLlxuICAgICBBcyB0aGUgd2lkdGggYXBwcm9hY2hlcyB0aGlzIGxvd2VyIGxpbWl0LCB0aGUgYXZlcmFnZSBudW1iZXIgb2ZcbiAgICAgZHJhd3MgYXBwcm9hY2hlcyAyLCB3aXRoIGEgcXVpdGUgaGlnaCBzdGFuZGFyZCBkZXZpYXRpb24gKDIgKyBlcHNpbG9uKS4gKilcbiAgbGV0IHJlYyBpbnRfaW5fbGFyZ2VfcmFuZ2UgcyB+bWluIH5tYXggfm5iaXRzID1cbiAgICBsZXQgZHJvcCA9IFN5cy5pbnRfc2l6ZSAtIG5iaXRzIGluXG4gICAgKCogVGhlIGJpdHNoaWZ0cyByZXBsaWNhdGUgdGhlIFtuYml0c10tdGggYml0IChzaWduIGJpdCkgdG8gaGlnaGVyIGJpdHM6ICopXG4gICAgbGV0IHIgPSAoKEludDY0LnRvX2ludCAobmV4dCBzKSkgbHNsIGRyb3ApIGFzciBkcm9wIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyBlbHNlIHJcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFttYXNrXSBpcyBhcyBkZXNjcmliZWQgZm9yIFtpbnRfYXV4XS5cbiAgICAgW25iaXRzXSBpcyBhcyBkZXNjcmliZWQgZm9yIFtpbnRfaW5fbGFyZ2VfcmFuZ2VdLiAqKVxuICBsZXQgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzayB+bmJpdHMgPVxuICAgIGxldCBzcGFuID0gbWF4IC0gbWluICsgMSBpblxuICAgIGlmIHNwYW4gPD0gbWFzayAoKiBbc3Bhbl0gaXMgc21hbGwgZW5vdWdoICopXG4gICAgJiYgc3BhbiA+IDAgICAgICgqIG5vIG92ZXJmbG93IG9jY3VycmVkIHdoZW4gY29tcHV0aW5nIFtzcGFuXSAqKVxuICAgIHRoZW5cbiAgICAgICgqIEp1c3QgZHJhdyBhIG51bWJlciBpbiBbWzAsIHNwYW4pXSBhbmQgc2hpZnQgaXQgYnkgW21pbl0uICopXG4gICAgICBtaW4gKyBpbnRfYXV4IHMgc3BhbiBtYXNrXG4gICAgZWxzZVxuICAgICAgKCogU3BhbiB0b28gbGFyZ2UsIHVzZSB0aGUgYWx0ZXJuYXRpdmUgZHJhd2luZyBtZXRob2QuICopXG4gICAgICBpbnRfaW5fbGFyZ2VfcmFuZ2UgcyB+bWluIH5tYXggfm5iaXRzXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBXZSBtdXN0IGhhdmUgW21pbiA8PSBtYXhdLiAqKVxuICBsZXQgaW50X2luX3JhbmdlIHMgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXggdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uaW50X2luX3JhbmdlXCI7XG4gICAgKCogV2hlbiBib3RoIGJvdW5kcyBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHBhcmFtZXRlcnNcbiAgICAgICBbbWFza10gYW5kIFtuYml0c10gYXBwcm9wcmlhdGUgZm9yIDMxLWJpdCBpbnRlZ2Vycywgc28gYXMgdG9cbiAgICAgICB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3JtcyBzdXBwb3J0ZWQgYnkgT0NhbWwuXG4gICAgICAgV2hlbiBib3RoIGJvdW5kcyBmaXQgaW4gMzItYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHBhcmFtZXRlcnNcbiAgICAgICBbbWFza10gYW5kIFtuYml0c10gYXBwcm9wcmlhdGUgZm9yIDMyLWJpdCBpbnRlZ2Vycywgc28gYXMgdG9cbiAgICAgICB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gSmF2YVNjcmlwdCBhbmQgb24gNjQtYml0IE9DYW1sLiAqKVxuICAgIGlmIG1pbiA+PSBtaW5faW50MzEgJiYgbWF4IDw9IG1heF9pbnQzMSB0aGVuXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQzMSB+bmJpdHM6MzFcbiAgICBlbHNlIGlmIG1pbiA+PSBtaW5faW50MzIgJiYgbWF4IDw9IG1heF9pbnQzMiB0aGVuXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQzMiB+bmJpdHM6MzJcbiAgICBlbHNlXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQgfm5iaXRzOlN5cy5pbnRfc2l6ZVxuXG4gICgqIFJldHVybiAzMiByYW5kb20gYml0cyBhcyBhbiBbaW50MzJdICopXG4gIGxldCBiaXRzMzIgcyA9XG4gICAgSW50NjQudG9faW50MzIgKG5leHQgcylcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzMzIgcykgMSBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9hdXhdLiAqKVxuICAgIGlmIEludDMyLihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxbClcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiBhbiBbaW50MzJdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IHJlYyBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggPVxuICAgIGxldCByID0gSW50NjQudG9faW50MzIgKG5leHQgcykgaW5cbiAgICBpZiByIDwgbWluIHx8IHIgPiBtYXggdGhlbiBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggZWxzZSByXG5cbiAgbGV0IGludDMyX2luX3JhbmdlIHMgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXggdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJfaW5fcmFuZ2VcIlxuICAgIGVsc2VcbiAgICAgIGxldCBzcGFuID0gSW50MzIuc3VjYyAoSW50MzIuc3ViIG1heCBtaW4pIGluXG4gICAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfaW5fcmFuZ2VfYXV4XS4gKilcbiAgICAgIGlmIHNwYW4gPD0gSW50MzIuemVybyB0aGVuXG4gICAgICAgIGludDMyX2luX3JhbmdlX2F1eCBzIH5taW4gfm1heFxuICAgICAgZWxzZVxuICAgICAgICBJbnQzMi5hZGQgbWluIChpbnQzMmF1eCBzIHNwYW4pXG5cbiAgKCogUmV0dXJuIDY0IHJhbmRvbSBiaXRzIGFzIGFuIFtpbnQ2NF0gKilcbiAgbGV0IGJpdHM2NCBzID1cbiAgICBuZXh0IHNcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDY0YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzNjQgcykgMSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9hdXhdLiAqKVxuICAgIGlmIEludDY0LihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxTClcbiAgICB0aGVuIGludDY0YXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQ2NCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwTFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50NjRcIlxuICAgIGVsc2UgaW50NjRhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiBhbiBbaW50NjRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IHJlYyBpbnQ2NF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggPVxuICAgIGxldCByID0gbmV4dCBzIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQ2NF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0X2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDY0LnN1Y2MgKEludDY0LnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDY0Lnplcm8gdGhlblxuICAgICAgICBpbnQ2NF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50NjQuYWRkIG1pbiAoaW50NjRhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiAzMiBvciA2NCByYW5kb20gYml0cyBhcyBhIFtuYXRpdmVpbnRdICopXG4gIGxldCBuYXRpdmViaXRzID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGJpdHMzMiBzKVxuICAgIGVsc2UgZnVuIHMgLT4gSW50NjQudG9fbmF0aXZlaW50IChiaXRzNjQgcylcblxuICAoKiBSZXR1cm4gYSBbbmF0aXZlaW50XSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgbmF0aXZlaW50ID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyBib3VuZCAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyIHMgKE5hdGl2ZWludC50b19pbnQzMiBib3VuZCkpXG4gICAgZWxzZSBmdW4gcyBib3VuZCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0IHMgKEludDY0Lm9mX25hdGl2ZWludCBib3VuZCkpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLiAqKVxuICBsZXQgbmF0aXZlaW50X2luX3JhbmdlID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzJfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihOYXRpdmVpbnQudG9faW50MzIgbWluKSB+bWF4OihOYXRpdmVpbnQudG9faW50MzIgbWF4KSlcbiAgICBlbHNlIGZ1biBzIH5taW4gfm1heCAtPlxuICAgICAgSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NF9pbl9yYW5nZSBzXG4gICAgICAgIH5taW46KEludDY0Lm9mX25hdGl2ZWludCBtaW4pIH5tYXg6KEludDY0Lm9mX25hdGl2ZWludCBtYXgpKVxuXG4gICgqIFJldHVybiBhIGZsb2F0IDAgPCB4IDwgMSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlXG4gICAgIG11bHRpcGxlcyBvZiAyXi01MyAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHMgPVxuICAgIGxldCBiID0gbmV4dCBzIGluXG4gICAgbGV0IG4gPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIGIgMTEgaW5cbiAgICBpZiBuIDw+IDBMIHRoZW4gSW50NjQudG9fZmxvYXQgbiAqLiAweDEucC01MyBlbHNlIHJhd2Zsb2F0IHNcblxuICAoKiBSZXR1cm4gYSBmbG9hdCBiZXR3ZWVuIDAgYW5kIFtib3VuZF0gKilcbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgKCogUmV0dXJuIGEgcmFuZG9tIEJvb2xlYW4gKilcbiAgbGV0IGJvb2wgcyA9IG5leHQgcyA8IDBMXG5cbiAgKCogU3BsaXQgYSBuZXcgUFJORyBvZmYgdGhlIGdpdmVuIFBSTkcgKilcbiAgbGV0IHNwbGl0IHMgPVxuICAgIGxldCBpMSA9IGJpdHM2NCBzIGluIGxldCBpMiA9IGJpdHM2NCBzIGluXG4gICAgbGV0IGkzID0gYml0czY0IHMgaW4gbGV0IGk0ID0gYml0czY0IHMgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuZW5kXG5cbmxldCBta19kZWZhdWx0ICgpID1cbiAgKCogVGhpcyBpcyB0aGUgc3RhdGUgb2J0YWluZWQgd2l0aCBbU3RhdGUubWFrZSBbfCAzMTQxNTkyNjUgfF1dLiAqKVxuICBTdGF0ZS5tayAoLTYxOTY4NzQyODk1Njc3MDUwOTdMKVxuICAgICAgICAgICA1ODY1NzMyNDk4MzM3MTMxODlMXG4gICAgICAgICAgICgtODU5MTI2ODgwMzg2NTA0MzQwN0wpXG4gICAgICAgICAgIDYzODg2MTM1OTU4NDk3NzIwNDRMXG5cbmxldCByYW5kb21fa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudDpTdGF0ZS5zcGxpdCBta19kZWZhdWx0XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50X2luX3JhbmdlIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSB+bWluIH5tYXhcbmxldCBpbnQzMiBib3VuZCA9IFN0YXRlLmludDMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGludDMyX2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludDMyX2luX3JhbmdlIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSB+bWluIH5tYXhcbmxldCBuYXRpdmVpbnQgYm91bmQgPSBTdGF0ZS5uYXRpdmVpbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgbmF0aXZlaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLm5hdGl2ZWludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQ2NF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQ2NF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgZmxvYXQgc2NhbGUgPSBTdGF0ZS5mbG9hdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBiaXRzMzIgKCkgPSBTdGF0ZS5iaXRzMzIgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czY0ICgpID0gU3RhdGUuYml0czY0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IG5hdGl2ZWJpdHMgKCkgPSBTdGF0ZS5uYXRpdmViaXRzIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxuXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5yZWluaXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQoKSlcblxuKCogU3BsaXR0aW5nICopXG5cbmxldCBzcGxpdCAoKSA9IFN0YXRlLnNwbGl0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEhhc2ggdGFibGVzICopXG5cbigqIFdlIGRvIGR5bmFtaWMgaGFzaGluZywgYW5kIHJlc2l6ZSB0aGUgdGFibGUgYW5kIHJlaGFzaCB0aGUgZWxlbWVudHNcbiAgIHdoZW4gdGhlIGxvYWQgZmFjdG9yIGJlY29tZXMgdG9vIGhpZ2guICopXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICBtdXRhYmxlIGRhdGE6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICB9XG5cbmFuZCAoJ2EsICdiKSBidWNrZXRsaXN0ID1cbiAgICBFbXB0eVxuICB8IENvbnMgb2YgeyBtdXRhYmxlIGtleTogJ2E7XG4gICAgICAgICAgICAgIG11dGFibGUgZGF0YTogJ2I7XG4gICAgICAgICAgICAgIG11dGFibGUgbmV4dDogKCdhLCAnYikgYnVja2V0bGlzdCB9XG5cbigqIFRoZSBzaWduIG9mIGluaXRpYWxfc2l6ZSBlbmNvZGVzIHRoZSBmYWN0IHRoYXQgYSB0cmF2ZXJzYWwgaXNcbiAgIG9uZ29pbmcgb3Igbm90LlxuXG4gICBUaGlzIGRpc2FibGVzIHRoZSBlZmZpY2llbnQgaW4gcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgcmVzaXppbmcuXG4qKVxuXG5sZXQgb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICB8fCBoLmluaXRpYWxfc2l6ZSA8IDBcblxubGV0IGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIGguaW5pdGlhbF9zaXplIDwtIC0gaC5pbml0aWFsX3NpemVcblxuKCogVG8gcGljayByYW5kb20gc2VlZHMgaWYgcmVxdWVzdGVkICopXG5cbmxldCByYW5kb21pemVkX2RlZmF1bHQgPVxuICBsZXQgcGFyYW1zID1cbiAgICB0cnkgU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT4gXCJcIiBpblxuICBTdHJpbmcuY29udGFpbnMgcGFyYW1zICdSJ1xuXG5sZXQgcmFuZG9taXplZCA9IEF0b21pYy5tYWtlIHJhbmRvbWl6ZWRfZGVmYXVsdFxuXG5sZXQgcmFuZG9taXplICgpID0gQXRvbWljLnNldCByYW5kb21pemVkIHRydWVcbmxldCBpc19yYW5kb21pemVkICgpID0gQXRvbWljLmdldCByYW5kb21pemVkXG5cbmxldCBwcm5nX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXRcblxuKCogRnVuY3Rpb25zIHdoaWNoIGFwcGVhciBiZWZvcmUgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIG11c3QgZWl0aGVyIGJlXG4gICBpbmRlcGVuZGVudCBvZiB0aGUgaGFzaCBmdW5jdGlvbiBvciB0YWtlIGl0IGFzIGEgcGFyYW1ldGVyIChzZWUgIzIyMDIgYW5kXG4gICBjb2RlIGJlbG93IHRoZSBmdW5jdG9yIGRlZmluaXRpb25zLiAqKVxuXG4oKiBDcmVhdGluZyBhIGZyZXNoLCBlbXB0eSB0YWJsZSAqKVxuXG5sZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgaWYgeCA+PSBuIHRoZW4geFxuICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxubGV0IGNyZWF0ZSA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaW5pdGlhbF9zaXplID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KSBlbHNlIDBcbiAgaW5cbiAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG5sZXQgY2xlYXIgaCA9XG4gIGlmIGguc2l6ZSA+IDAgdGhlbiBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIEFycmF5LmZpbGwgaC5kYXRhIDAgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIEVtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXQgaCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICAgIHx8IGxlbiA9IGFicyBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgY2xlYXIgaFxuICBlbHNlIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgKGFicyBoLmluaXRpYWxfc2l6ZSkgRW1wdHlcbiAgZW5kXG5cbmxldCBjb3B5X2J1Y2tldGxpc3QgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgbGV0IHJlYyBsb29wIHByZWMgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IENvbnMgcHJlYyAtPiAgcHJlYy5uZXh0IDwtIHJcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGxvb3AgciBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICBsb29wIHIgbmV4dDtcbiAgICAgIHJcblxubGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5tYXAgY29weV9idWNrZXRsaXN0IGguZGF0YSB9XG5cbmxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG5sZXQgaW5zZXJ0X2FsbF9idWNrZXRzIGluZGV4ZnVuIGlucGxhY2Ugb2RhdGEgbmRhdGEgPVxuICBsZXQgbnNpemUgPSBBcnJheS5sZW5ndGggbmRhdGEgaW5cbiAgbGV0IG5kYXRhX3RhaWwgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBhcyBjZWxsIC0+XG4gICAgICAgIGxldCBjZWxsID1cbiAgICAgICAgICBpZiBpbnBsYWNlIHRoZW4gY2VsbFxuICAgICAgICAgIGVsc2UgQ29ucyB7a2V5OyBkYXRhOyBuZXh0ID0gRW1wdHl9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBuaWR4ID0gaW5kZXhmdW4ga2V5IGluXG4gICAgICAgIGJlZ2luIG1hdGNoIG5kYXRhX3RhaWwuKG5pZHgpIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBuZGF0YS4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIGNlbGw7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbmRhdGFfdGFpbC4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgaW5zZXJ0X2J1Y2tldCBuZXh0XG4gIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2RhdGEgLSAxIGRvXG4gICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgZG9uZTtcbiAgaWYgaW5wbGFjZSB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIG5zaXplIC0gMSBkb1xuICAgICAgbWF0Y2ggbmRhdGFfdGFpbC4oaSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIEVtcHR5XG4gICAgZG9uZVxuXG5sZXQgcmVzaXplIGluZGV4ZnVuIGggPVxuICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgbGV0IGlucGxhY2UgPSBub3QgKG9uZ29pbmdfdHJhdmVyc2FsIGgpIGluXG4gICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAgICAoKiBzbyB0aGF0IGluZGV4ZnVuIHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICBpbnNlcnRfYWxsX2J1Y2tldHMgKGluZGV4ZnVuIGgpIGlucGxhY2Ugb2RhdGEgbmRhdGFcbiAgZW5kXG5cbmxldCBpdGVyIGYgaCA9XG4gIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+XG4gICAgICAgICgpXG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZiBrZXkgZGF0YTsgZG9fYnVja2V0IG5leHQgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gRW1wdHlcbiAgICAgIGVuZFxuICB8IChDb25zICh7a2V5OyBkYXRhOyBuZXh0fSBhcyBjKSkgYXMgc2xvdCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZiBrZXkgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgbmV4dFxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gc2xvdFxuICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBzbG90XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGMuZGF0YSA8LSBkYXRhO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgc2xvdCBuZXh0XG4gICAgICBlbmRcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICBsZXQgZCA9IGguZGF0YSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBFbXB0eSBoLmRhdGEuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGhcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCBmb2xkIGYgaCBpbml0ID1cbiAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICAgIEVtcHR5IC0+XG4gICAgICAgIGFjY3VcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBkb19idWNrZXQgbmV4dCAoZiBrZXkgZGF0YSBhY2N1KSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICAhYWNjdVxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxudHlwZSBzdGF0aXN0aWNzID0ge1xuICBudW1fYmluZGluZ3M6IGludDtcbiAgbnVtX2J1Y2tldHM6IGludDtcbiAgbWF4X2J1Y2tldF9sZW5ndGg6IGludDtcbiAgYnVja2V0X2hpc3RvZ3JhbTogaW50IGFycmF5XG59XG5cbmxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgQ29uc3tuZXh0fSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgbmV4dFxuXG5sZXQgc3RhdHMgaCA9XG4gIGxldCBtYmwgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBiIC0+XG4gICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICBoLmRhdGE7XG4gIHsgbnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHRibCA9XG4gICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICBpblxuICBhdXggMCBFbXB0eVxuXG5sZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxubGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuKCogRnVuY3RvcmlhbCBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIHNlZWRlZF9oYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlOiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5OiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZTogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZSA6ID9yYW5kb206Ym9vbCAtPiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlU2VlZGVkKEg6IFNlZWRlZEhhc2hlZFR5cGUpOiAoU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIHR5cGUga2V5ID0gSC50XG4gICAgdHlwZSAnYSBoYXNodGJsID0gKGtleSwgJ2EpIHRcbiAgICB0eXBlICdhIHQgPSAnYSBoYXNodGJsXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICAgIGxldCBjbGVhciA9IGNsZWFyXG4gICAgbGV0IHJlc2V0ID0gcmVzZXRcbiAgICBsZXQgY29weSA9IGNvcHlcblxuICAgIGxldCBrZXlfaW5kZXggaCBrZXkgPVxuICAgICAgKEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgYWRkIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxuICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICgpXG4gICAgICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxuICAgIGxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBtZW1faW5fYnVja2V0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgICAgICBILmVxdWFsIGsga2V5IHx8IG1lbV9pbl9idWNrZXQga2V5IG5leHRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbWVtX2luX2J1Y2tldCBrZXkgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCByZWMgbWVtX2luX2J1Y2tldCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IGtleSBuZXh0XG5cbmxldCBtZW0gaCBrZXkgPVxuICBtZW1faW5fYnVja2V0IGtleSBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSlcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXJcbiAqICAgIC0gTGlua1xuICogICAgLSBEYXRhICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyICgqIENBTUxfRVBIRV9GSVJTVF9LRVkgaW4gd2Vhay5oICopXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2FjYyAtPiAnYWNjKSAtPiB0IC0+ICdhY2MgLT4gJ2FjY1xuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuICAoKiBHZW5lcmFsIGF1eGlsaWFyeSBmdW5jdGlvbiBmb3Igc2VhcmNoaW5nIGZvciBhIHBhcnRpY3VsYXIgdmFsdWVcbiAgICogaW4gYSBoYXNoLXNldCwgYW5kIGFjdGluZyBhY2NvcmRpbmcgdG8gd2hldGhlciBvciBub3QgaXQncyBmb3VuZCAqKVxuXG4gIGxldCBmaW5kX2F1eCB0IGQgZm91bmQgbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgYXMgb3B0IHdoZW4gSC5lcXVhbCB2IGQgLT4gZm91bmQgYnVja2V0IGkgb3B0IHZcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICBsZXQgZmluZF9vcHQgdCBkID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgIG8gX3YgLT4gbylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IE5vbmUpXG5cbiAgbGV0IG1lcmdlIHQgZCAgICA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pIF9vICB2IC0+IHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAgaCAgaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCBpOyBkKVxuXG4gIGxldCBmaW5kIHQgZCAgICAgPSBmaW5kX2F1eCB0IGQgKGZ1biBfYiBfaSBfbyAgdiAtPiB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gX2ggX2kgLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCByZW1vdmUgdCBkICAgPSBmaW5kX2F1eCB0IGQgKGZ1biAgYiAgaSBfbyBfdiAtPiBzZXQgYiBpIE5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiAoKSlcblxuICBsZXQgbWVtIHQgZCAgICAgID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgX28gX3YgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IGZhbHNlKVxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGxvb3AgKGkgKyAxKSAodiA6OiBhY2N1KVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lID1cbiAgY2xlYXJfdGFnX3N0YWNrIHN0YXRlO1xuICB3aGlsZSBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSBkb1xuICAgIHBwX2Nsb3NlX2JveCBzdGF0ZSAoKVxuICBkb25lO1xuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBwcF9pbmZpbml0eTtcbiAgYWR2YW5jZV9sZWZ0IHN0YXRlO1xuICBpZiBlbmRfd2l0aF9uZXdsaW5lIHRoZW4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHBwX3Jpbml0IHN0YXRlXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBmb3JtYXQgdmFsdWVzIGFuZCB1c2UgYm94ZXMuXG5cbiopXG5cbigqIFRvIGZvcm1hdCBhIHN0cmluZy4gKilcbmxldCBwcF9wcmludF9hc19zaXplIHN0YXRlIHNpemUgcyA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHNcblxuXG5sZXQgcHBfcHJpbnRfYXMgc3RhdGUgaXNpemUgcyA9XG4gIHBwX3ByaW50X2FzX3NpemUgc3RhdGUgKFNpemUub2ZfaW50IGlzaXplKSBzXG5cblxubGV0IHBwX3ByaW50X3N0cmluZyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG5sZXQgcHBfcHJpbnRfYnl0ZXMgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChCeXRlcy5sZW5ndGggcykgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG4oKiBUbyBmb3JtYXQgYW4gaW50ZWdlci4gKilcbmxldCBwcF9wcmludF9pbnQgc3RhdGUgaSA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoSW50LnRvX3N0cmluZyBpKVxuXG4oKiBUbyBmb3JtYXQgYSBmbG9hdC4gKilcbmxldCBwcF9wcmludF9mbG9hdCBzdGF0ZSBmID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfZmxvYXQgZilcblxuKCogVG8gZm9ybWF0IGEgYm9vbGVhbi4gKilcbmxldCBwcF9wcmludF9ib29sIHN0YXRlIGIgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9ib29sIGIpXG5cbigqIFRvIGZvcm1hdCBhIGNoYXIuICopXG5sZXQgcHBfcHJpbnRfY2hhciBzdGF0ZSBjID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgMSAoU3RyaW5nLm1ha2UgMSBjKVxuXG5sZXQgcHBfcHJpbnRfbm90aGluZyBfc3RhdGUgKCkgPSAoKVxuXG5cbigqIE9wZW5pbmcgYm94ZXMuICopXG5sZXQgcHBfb3Blbl9oYm94IHN0YXRlICgpID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaGJveFxuYW5kIHBwX29wZW5fdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX3Zib3hcblxuYW5kIHBwX29wZW5faHZib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9odmJveFxuYW5kIHBwX29wZW5faG92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaG92Ym94XG5hbmQgcHBfb3Blbl9ib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ib3hcblxuXG4oKiBQcmludGluZyBxdWV1ZWQgdGV4dC5cblxuICAgW3BwX3ByaW50X2ZsdXNoXSBwcmludHMgYWxsIHBlbmRpbmcgaXRlbXMgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGFuZFxuICAgdGhlbiBmbHVzaGVzIHRoZSBsb3cgbGV2ZWwgb3V0cHV0IGRldmljZSBvZiB0aGUgZm9ybWF0dGVyIHRvIGFjdHVhbGx5XG4gICBkaXNwbGF5IHByaW50aW5nIG1hdGVyaWFsLlxuXG4gICBbcHBfcHJpbnRfbmV3bGluZV0gYmVoYXZlcyBhcyBbcHBfcHJpbnRfZmx1c2hdIGFmdGVyIHByaW50aW5nIGFuIGFkZGl0aW9uYWxcbiAgIG5ldyBsaW5lLiAqKVxubGV0IHBwX3ByaW50X25ld2xpbmUgc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZTp0cnVlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcbmFuZCBwcF9wcmludF9mbHVzaCBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lOmZhbHNlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcblxuXG4oKiBUbyBnZXQgYSBuZXdsaW5lIHdoZW4gb25lIGRvZXMgbm90IHdhbnQgdG8gY2xvc2UgdGhlIGN1cnJlbnQgYm94LiAqKVxubGV0IHBwX2ZvcmNlX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIFRvIGZvcm1hdCBzb21ldGhpbmcsIG9ubHkgaW4gY2FzZSB0aGUgbGluZSBoYXMganVzdCBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9wcmludF9pZl9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlXG4gICAgICB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfaWZfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogR2VuZXJhbGl6ZWQgYnJlYWsgaGludCB0aGF0IGFsbG93cyBwcmludGluZyBzdHJpbmdzIGJlZm9yZS9hZnRlclxuICAgc2FtZS1saW5lIG9mZnNldCAod2lkdGgpIG9yIG5ldy1saW5lIG9mZnNldCAqKVxubGV0IHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZSB+Zml0cyB+YnJlYWtzID1cbiAgbGV0IGJlZm9yZSwgd2lkdGgsIGFmdGVyID0gZml0cyBpblxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCB0b2tlbiA9IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBiZWZvcmUgKyB3aWR0aCArIFN0cmluZy5sZW5ndGggYWZ0ZXIgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG4oKiBQcmludGluZyBicmVhayBoaW50czpcbiAgIEEgYnJlYWsgaGludCBpbmRpY2F0ZXMgd2hlcmUgYSBib3ggbWF5IGJlIGJyb2tlbi5cbiAgIElmIGxpbmUgaXMgYnJva2VuIHRoZW4gb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudFxuICAgYm94IGVsc2UgKHRoZSB2YWx1ZSBvZikgd2lkdGggYmxhbmtzIGFyZSBwcmludGVkLiAqKVxubGV0IHBwX3ByaW50X2JyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZVxuICAgIH5maXRzOihcIlwiLCB3aWR0aCwgXCJcIikgfmJyZWFrczooXCJcIiwgb2Zmc2V0LCBcIlwiKVxuXG5cbigqIFByaW50IGEgc3BhY2UgOlxuICAgYSBzcGFjZSBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgYSBzaW5nbGUgc3BhY2UgaWYgdGhlIGJyZWFrIGRvZXMgbm90XG4gICBzcGxpdCB0aGUgbGluZTtcbiAgIGEgY3V0IGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBub3RoaW5nIGlmIHRoZSBicmVhayBkb2VzIG5vdCBzcGxpdCB0aGVcbiAgIGxpbmUuICopXG5sZXQgcHBfcHJpbnRfc3BhY2Ugc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAxIDBcbmFuZCBwcF9wcmludF9jdXQgc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAwIDBcblxuXG4oKiBUYWJ1bGF0aW9uIGJveGVzLiAqKVxubGV0IHBwX29wZW5fdGJveCBzdGF0ZSAoKSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS56ZXJvIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJlZ2luIChQcF90Ym94IChyZWYgW10pKTsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKiBDbG9zZSBhIHRhYnVsYXRpb24gYm94LiAqKVxubGV0IHBwX2Nsb3NlX3Rib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfdGVuZDsgbGVuZ3RoID0gMCB9IGluXG4gICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtO1xuICAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxXG4gIGVuZFxuXG5cbigqIFByaW50IGEgdGFidWxhdGlvbiBicmVhay4gKilcbmxldCBwcF9wcmludF90YnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YnJlYWsgKHdpZHRoLCBvZmZzZXQpOyBsZW5ndGggPSB3aWR0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG5cbmxldCBwcF9wcmludF90YWIgc3RhdGUgKCkgPSBwcF9wcmludF90YnJlYWsgc3RhdGUgMCAwXG5cbmxldCBwcF9zZXRfdGFiIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfc3RhYjsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gY29udHJvbCB0aGUgcHJldHR5LXByaW50ZXJzXG5cbiopXG5cbigqIFNldF9tYXhfYm94ZXMuICopXG5sZXQgcHBfc2V0X21heF9ib3hlcyBzdGF0ZSBuID0gaWYgbiA+IDEgdGhlbiBzdGF0ZS5wcF9tYXhfYm94ZXMgPC0gblxuXG4oKiBUbyBrbm93IHRoZSBjdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGJveGVzIGFsbG93ZWQuICopXG5sZXQgcHBfZ2V0X21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG5sZXQgcHBfb3Zlcl9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbigqIEVsbGlwc2lzLiAqKVxubGV0IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0YXRlIHMgPSBzdGF0ZS5wcF9lbGxpcHNpcyA8LSBzXG5hbmQgcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRvIHNldCB0aGUgbWFyZ2luIG9mIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX2xpbWl0IG4gPVxuICBpZiBuIDwgcHBfaW5maW5pdHkgdGhlbiBuIGVsc2UgcHJlZCBwcF9pbmZpbml0eVxuXG5cbigqIEludGVybmFsIHByZXR0eS1wcmludGVyIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWluX3NwYWNlX2xlZnQgPC0gbjtcbiAgICBzdGF0ZS5wcF9tYXhfaW5kZW50IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3Jpbml0IHN0YXRlXG5cblxuKCogSW5pdGlhbGx5LCB3ZSBoYXZlIDpcbiAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdCwgYW5kXG4gICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luLiAqKVxubGV0IHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG4gPVxuICBpZiBuID4gMSB0aGVuXG4gICAgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIChzdGF0ZS5wcF9tYXJnaW4gLSBuKVxuXG5cbmxldCBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9pbmRlbnRcblxubGV0IHBwX3NldF9tYXJnaW4gc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWFyZ2luIDwtIG47XG4gICAgbGV0IG5ld19tYXhfaW5kZW50ID1cbiAgICAgICgqIFRyeSB0byBtYWludGFpbiBtYXhfaW5kZW50IHRvIGl0cyBhY3R1YWwgdmFsdWUuICopXG4gICAgICBpZiBzdGF0ZS5wcF9tYXhfaW5kZW50IDw9IHN0YXRlLnBwX21hcmdpblxuICAgICAgdGhlbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGVsc2VcbiAgICAgICgqIElmIHBvc3NpYmxlIG1haW50YWluIHBwX21pbl9zcGFjZV9sZWZ0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgICAgICBpZiB0aGlzIGxlYWRzIHRvIGEgdG9vIHNtYWxsIG1heF9pbmRlbnQsIHRha2UgaGFsZiBvZiB0aGVcbiAgICAgICAgIG5ldyBtYXJnaW4sIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiAxLiAqKVxuICAgICAgIEludC5tYXggKEludC5tYXggKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0KVxuICAgICAgICAgICAgICAgIChzdGF0ZS5wcF9tYXJnaW4gLyAyKSkgMSBpblxuICAgICgqIFJlYnVpbGQgaW52YXJpYW50cy4gKilcbiAgICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuZXdfbWF4X2luZGVudFxuXG5cbigqKiBHZW9tZXRyeSBmdW5jdGlvbnMgYW5kIHR5cGVzICopXG50eXBlIGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OmludDsgbWFyZ2luOiBpbnR9XG5cbmxldCB2YWxpZGF0ZV9nZW9tZXRyeSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIGlmIG1heF9pbmRlbnQgPCAyIHRoZW5cbiAgICBFcnJvciBcIm1heF9pbmRlbnQgPCAyXCJcbiAgZWxzZSBpZiBtYXJnaW4gPD0gbWF4X2luZGVudCB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPD0gbWF4X2luZGVudFwiXG4gIGVsc2UgaWYgbWFyZ2luID49IHBwX2luZmluaXR5IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA+PSBwcF9pbmZpbml0eVwiXG4gIGVsc2UgT2sgKClcblxubGV0IGNoZWNrX2dlb21ldHJ5IGdlb21ldHJ5ID1cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IE9rICgpIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG5cbmxldCBwcF9nZXRfbWFyZ2luIHN0YXRlICgpID0gc3RhdGUucHBfbWFyZ2luXG5cbmxldCBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIHBwX3NldF9tYXJnaW4gc3RhdGUgbWFyZ2luO1xuICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBtYXhfaW5kZW50O1xuICAoKVxuXG5sZXQgcHBfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBtc2cgLT5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJGb3JtYXQucHBfc2V0X2dlb21ldHJ5OiBcIiBeIG1zZykpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIF9tc2cgLT5cbiAgICAgKClcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgPVxuICB7IG1hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RhdGUgKCk7IG1heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSB9XG5cbmxldCBwcF91cGRhdGVfZ2VvbWV0cnkgc3RhdGUgdXBkYXRlID1cbiAgbGV0IGdlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpIGluXG4gIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlICh1cGRhdGUgZ2VvbWV0cnkpXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUge1xuICAgICAgb3V0X3N0cmluZyA9IGY7XG4gICAgICBvdXRfZmx1c2ggPSBnO1xuICAgICAgb3V0X25ld2xpbmUgPSBoO1xuICAgICAgb3V0X3NwYWNlcyA9IGk7XG4gICAgICBvdXRfaW5kZW50ID0gajtcbiAgICB9ID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF9mbHVzaCA9IHN0YXRlLnBwX291dF9mbHVzaDtcbiAgb3V0X25ld2xpbmUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZTtcbiAgb3V0X3NwYWNlcyA9IHN0YXRlLnBwX291dF9zcGFjZXM7XG4gIG91dF9pbmRlbnQgPSBzdGF0ZS5wcF9vdXRfaW5kZW50O1xufVxuXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgc3RyaW5nIG91dHB1dCBhbmQgZmx1c2ggZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGcgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7IHN0YXRlLnBwX291dF9mbHVzaCA8LSBnXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoKVxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9uZXdsaW5lIHN0YXRlICgpID0gc3RhdGUucHBfb3V0X3N0cmluZyBcIlxcblwiIDAgIDFcblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IHNwYWNlcy4gKilcbmxldCBibGFua19saW5lID0gU3RyaW5nLm1ha2UgODAgJyAnXG5sZXQgcmVjIGRpc3BsYXlfYmxhbmtzIHN0YXRlIG4gPVxuICBpZiBuID4gMCB0aGVuXG4gIGlmIG4gPD0gODAgdGhlbiBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCBuIGVsc2VcbiAgYmVnaW5cbiAgICBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCA4MDtcbiAgICBkaXNwbGF5X2JsYW5rcyBzdGF0ZSAobiAtIDgwKVxuICBlbmRcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfaW5kZW50ID0gZGlzcGxheV9ibGFua3NcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zIGFzIHByaW50aW5nIHRvIGEgZ2l2ZW5cbiAgIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RhdGUgb2MgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIG91dHB1dF9zdWJzdHJpbmcgb2M7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSAoZnVuICgpIC0+IGZsdXNoIG9jKTtcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHN0YXRlXG5cbigqXG5cbiAgRGVmaW5pbmcgc3BlY2lmaWMgZm9ybWF0dGVyc1xuXG4qKVxuXG5sZXQgZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8XCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcbmxldCBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8L1wiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5cbmxldCBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnID0gaWdub3JlXG5sZXQgZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcgPSBpZ25vcmVcblxuKCogQnVpbGRpbmcgYSBmb3JtYXR0ZXIgZ2l2ZW4gaXRzIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuXG4gICBPdGhlciBmaWVsZHMgZ2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMuICopXG5sZXQgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqID1cbiAgKCogVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvcm1hdHRlciBjb250YWlucyBhIGR1bW15IGJveC4gKilcbiAgbGV0IHBwX3F1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCBzeXNfdG9rID1cbiAgICB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfYmVnaW4gKDAsIFBwX2hvdmJveCk7IGxlbmd0aCA9IDAgfSBpblxuICBRdWV1ZS5hZGQgc3lzX3RvayBwcF9xdWV1ZTtcbiAgbGV0IHNjYW5fc3RhY2sgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHNjYW5fc3RhY2s7XG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gMTsgcXVldWVfZWxlbSA9IHN5c190b2sgfSBzY2FuX3N0YWNrO1xuICBsZXQgcHBfbWFyZ2luID0gNzhcbiAgYW5kIHBwX21pbl9zcGFjZV9sZWZ0ID0gMTAgaW5cbiAge1xuICAgIHBwX3NjYW5fc3RhY2sgPSBzY2FuX3N0YWNrO1xuICAgIHBwX2Zvcm1hdF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90Ym94X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3RhZ19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJrX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmdpbiA9IHBwX21hcmdpbjtcbiAgICBwcF9taW5fc3BhY2VfbGVmdCA9IHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luO1xuICAgIHBwX2N1cnJlbnRfaW5kZW50ID0gMDtcbiAgICBwcF9pc19uZXdfbGluZSA9IHRydWU7XG4gICAgcHBfbGVmdF90b3RhbCA9IDE7XG4gICAgcHBfcmlnaHRfdG90YWwgPSAxO1xuICAgIHBwX2N1cnJfZGVwdGggPSAxO1xuICAgIHBwX21heF9ib3hlcyA9IG1heF9pbnQ7XG4gICAgcHBfZWxsaXBzaXMgPSBcIi5cIjtcbiAgICBwcF9vdXRfc3RyaW5nID0gZjtcbiAgICBwcF9vdXRfZmx1c2ggPSBnO1xuICAgIHBwX291dF9uZXdsaW5lID0gaDtcbiAgICBwcF9vdXRfc3BhY2VzID0gaTtcbiAgICBwcF9vdXRfaW5kZW50ID0gajtcbiAgICBwcF9wcmludF90YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya190YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya19vcGVuX3RhZyA9IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZztcbiAgICBwcF9tYXJrX2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWc7XG4gICAgcHBfcHJpbnRfb3Blbl90YWcgPSBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnO1xuICAgIHBwX3ByaW50X2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnO1xuICAgIHBwX3F1ZXVlID0gcHBfcXVldWU7XG4gIH1cblxuXG4oKiBCdWlsZCBhIGZvcm1hdHRlciBvdXQgb2YgaXRzIG91dCBmdW5jdGlvbnMuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMgb3V0X2Z1bnMgPVxuICBwcF9tYWtlX2Zvcm1hdHRlclxuICAgIG91dF9mdW5zLm91dF9zdHJpbmdcbiAgICBvdXRfZnVucy5vdXRfZmx1c2hcbiAgICBvdXRfZnVucy5vdXRfbmV3bGluZVxuICAgIG91dF9mdW5zLm91dF9zcGFjZXNcbiAgICBvdXRfZnVucy5vdXRfaW5kZW50XG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3aXRoIGRlZmF1bHQgZnVuY3Rpb25zIHRvIG91dHB1dCBzcGFjZXMsXG4gIGluZGVudGF0aW9uLCBhbmQgbmV3IGxpbmVzLiAqKVxubGV0IG1ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIGxldCBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggaWdub3JlIGlnbm9yZSBpZ25vcmUgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBwcGZcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbQnVmZmVyLnRdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYiA9XG4gIG1ha2VfZm9ybWF0dGVyIChCdWZmZXIuYWRkX3N1YnN0cmluZyBiKSBpZ25vcmVcblxuXG4oKiBBbGxvY2F0aW5nIGJ1ZmZlciBmb3IgcHJldHR5LXByaW50aW5nIHB1cnBvc2VzLlxuICAgRGVmYXVsdCBidWZmZXIgc2l6ZSBpcyBwcF9idWZmZXJfc2l6ZSBvciA1MTIuXG4qKVxubGV0IHBwX2J1ZmZlcl9zaXplID0gNTEyXG5sZXQgcHBfbWFrZV9idWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplXG5cbigqIFRoZSBzdGFuZGFyZCAoc2hhcmVkKSBidWZmZXIuICopXG5sZXQgc3RkYnVmID0gcHBfbWFrZV9idWZmZXIgKClcblxuKCogUHJlZGVmaW5lZCBmb3JtYXR0ZXJzIHN0YW5kYXJkIGZvcm1hdHRlciB0byBwcmludFxuICAgdG8gW1N0ZGxpYi5zdGRvdXRdLCBbU3RkbGliLnN0ZGVycl0sIGFuZCB7IXN0ZGJ1Zn0uICopXG5sZXQgc3RkX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3Rkb3V0XG5hbmQgZXJyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3RkZXJyXG5hbmQgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIgc3RkYnVmXG5cbigqIEluaXRpYWxpc2UgZG9tYWluIGxvY2FsIHN0YXRlICopXG5tb2R1bGUgRExTID0gRG9tYWluLkRMU1xuXG5sZXQgc3RkYnVmX2tleSA9IERMUy5uZXdfa2V5IHBwX21ha2VfYnVmZmVyXG5sZXQgXyA9IERMUy5zZXQgc3RkYnVmX2tleSBzdGRidWZcblxubGV0IHN0cl9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBmb3JtYXR0ZXJfb2ZfYnVmZmVyIChETFMuZ2V0IHN0ZGJ1Zl9rZXkpKVxubGV0IF8gPSBETFMuc2V0IHN0cl9mb3JtYXR0ZXJfa2V5IHN0cl9mb3JtYXR0ZXJcblxubGV0IGJ1ZmZlcmVkX291dF9zdHJpbmcga2V5IHN0ciBvZnMgbGVuID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgKERvbWFpbi5ETFMuZ2V0IGtleSkgc3RyIG9mcyBsZW5cblxubGV0IGJ1ZmZlcmVkX291dF9mbHVzaCBvYyBrZXkgKCkgPVxuICBsZXQgYnVmID0gRG9tYWluLkRMUy5nZXQga2V5IGluXG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0ciAwIGxlbiA7XG4gIFN0ZGxpYi5mbHVzaCBvYztcbiAgQnVmZmVyLmNsZWFyIGJ1ZlxuXG5sZXQgc3RkX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxubGV0IGVycl9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcblxubGV0IHN0ZF9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBsZXQgcHBmID1cbiAgICBwcF9tYWtlX2Zvcm1hdHRlciAoYnVmZmVyZWRfb3V0X3N0cmluZyBzdGRfYnVmX2tleSlcbiAgICAgIChidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZG91dCBzdGRfYnVmX2tleSkgaWdub3JlIGlnbm9yZSBpZ25vcmVcbiAgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBEb21haW4uYXRfZXhpdCAocHBfcHJpbnRfZmx1c2ggcHBmKTtcbiAgcHBmKVxubGV0IF8gPSBETFMuc2V0IHN0ZF9mb3JtYXR0ZXJfa2V5IHN0ZF9mb3JtYXR0ZXJcblxubGV0IGVycl9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBsZXQgcHBmID1cbiAgICBwcF9tYWtlX2Zvcm1hdHRlciAoYnVmZmVyZWRfb3V0X3N0cmluZyBlcnJfYnVmX2tleSlcbiAgICAgIChidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZGVyciBlcnJfYnVmX2tleSkgaWdub3JlIGlnbm9yZSBpZ25vcmVcbiAgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBEb21haW4uYXRfZXhpdCAocHBfcHJpbnRfZmx1c2ggcHBmKTtcbiAgcHBmKVxubGV0IF8gPSBETFMuc2V0IGVycl9mb3JtYXR0ZXJfa2V5IGVycl9mb3JtYXR0ZXJcblxubGV0IGdldF9zdGRfZm9ybWF0dGVyICgpID0gRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleVxubGV0IGdldF9lcnJfZm9ybWF0dGVyICgpID0gRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleVxubGV0IGdldF9zdHJfZm9ybWF0dGVyICgpID0gRExTLmdldCBzdHJfZm9ybWF0dGVyX2tleVxubGV0IGdldF9zdGRidWYgKCkgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXlcblxuKCogW2ZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZl0gZmx1c2hlcyBmb3JtYXR0ZXIgW3BwZl0sXG4gICB0aGVuIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlciBbYnVmXSB0aGF0IGlzIHJlc2V0LlxuICAgRm9ybWF0dGVyIFtwcGZdIGlzIHN1cHBvc2VkIHRvIHByaW50IHRvIGJ1ZmZlciBbYnVmXSwgb3RoZXJ3aXNlIHRoaXNcbiAgIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgdXNlZnVsLiAqKVxubGV0IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZiA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHBwZiB+ZW5kX3dpdGhfbmV3bGluZTpmYWxzZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIHNcblxuKCogRmx1c2ggW3N0cl9mb3JtYXR0ZXJdIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIFtzdGRidWZdLiAqKVxubGV0IGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkgPVxuICBsZXQgc3RkYnVmID0gRExTLmdldCBzdGRidWZfa2V5IGluXG4gIGxldCBzdHJfZm9ybWF0dGVyID0gRExTLmdldCBzdHJfZm9ybWF0dGVyX2tleSBpblxuICBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIHN0ZGJ1ZiBzdHJfZm9ybWF0dGVyXG5cbmxldCBtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IG91dHB1dCcgPSBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgaW5cbiAgICBsZXQgZmx1c2gnICgpID1cbiAgICAgIG91dHB1dCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgMCAoQnVmZmVyLmxlbmd0aCBidWYpO1xuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGZsdXNoICgpXG4gICAgaW5cbiAgICBtYWtlX2Zvcm1hdHRlciBvdXRwdXQnIGZsdXNoJylcblxubGV0IHN5bmNocm9uaXplZF9mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZ1xuKilcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nIGlzIHByZXR0eS1wcmludGluZyB3aXRoIG5vIGxvdyBsZXZlbCBvdXRwdXQuXG5cbiAgV2hlbiB1c2luZyBhIHN5bWJvbGljIGZvcm1hdHRlciwgYWxsIHJlZ3VsYXIgcHJldHR5LXByaW50aW5nIGFjdGl2aXRpZXNcbiAgb2NjdXIgYnV0IG91dHB1dCBtYXRlcmlhbCBpcyBzeW1ib2xpYyBhbmQgc3RvcmVkIGluIGEgYnVmZmVyIG9mIG91dHB1dFxuICBpdGVtcy4gQXQgdGhlIGVuZCBvZiBwcmV0dHktcHJpbnRpbmcsIGZsdXNoaW5nIHRoZSBvdXRwdXQgYnVmZmVyIGFsbG93c1xuICBwb3N0LXByb2Nlc3Npbmcgb2Ygc3ltYm9saWMgb3V0cHV0IGJlZm9yZSBsb3cgbGV2ZWwgb3V0cHV0IG9wZXJhdGlvbnMuXG4qKVxuXG50eXBlIHN5bWJvbGljX291dHB1dF9pdGVtID1cbiAgfCBPdXRwdXRfZmx1c2hcbiAgfCBPdXRwdXRfbmV3bGluZVxuICB8IE91dHB1dF9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgT3V0cHV0X3NwYWNlcyBvZiBpbnRcbiAgfCBPdXRwdXRfaW5kZW50IG9mIGludFxuXG50eXBlIHN5bWJvbGljX291dHB1dF9idWZmZXIgPSB7XG4gIG11dGFibGUgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDogc3ltYm9saWNfb3V0cHV0X2l0ZW0gbGlzdDtcbn1cblxubGV0IG1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciAoKSA9XG4gIHsgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzID0gW10gfVxuXG5sZXQgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIFtdXG5cbmxldCBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBMaXN0LnJldiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBpdGVtcyA9IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiBpblxuICBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYjtcbiAgaXRlbXNcblxubGV0IGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgaXRlbSA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gaXRlbSA6OiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgc3ltYm9saWNfZmx1c2ggc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9mbHVzaFxuICBhbmQgc3ltYm9saWNfbmV3bGluZSBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X25ld2xpbmVcbiAgYW5kIHN5bWJvbGljX3N0cmluZyBzb2IgcyBpIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zdHJpbmcgKFN0cmluZy5zdWIgcyBpIG4pKVxuICBhbmQgc3ltYm9saWNfc3BhY2VzIHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3BhY2VzIG4pXG4gIGFuZCBzeW1ib2xpY19pbmRlbnQgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9pbmRlbnQgbikgaW5cblxuICBsZXQgZiA9IHN5bWJvbGljX3N0cmluZyBzb2JcbiAgYW5kIGcgPSBzeW1ib2xpY19mbHVzaCBzb2JcbiAgYW5kIGggPSBzeW1ib2xpY19uZXdsaW5lIHNvYlxuICBhbmQgaSA9IHN5bWJvbGljX3NwYWNlcyBzb2JcbiAgYW5kIGogPSBzeW1ib2xpY19pbmRlbnQgc29iIGluXG4gIHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgalxuXG4oKlxuXG4gIEJhc2ljIGZ1bmN0aW9ucyBvbiB0aGUgJ3N0YW5kYXJkJyBmb3JtYXR0ZXJcbiAgKHRoZSBmb3JtYXR0ZXIgdGhhdCBwcmludHMgdG8gW1N0ZGxpYi5zdGRvdXRdKS5cblxuKilcblxubGV0IG9wZW5faGJveCB2ID0gcHBfb3Blbl9oYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl92Ym94IHYgPSBwcF9vcGVuX3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2h2Ym94IHYgPSBwcF9vcGVuX2h2Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9ob3Zib3ggdiA9IHBwX29wZW5faG92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9ib3ggdiA9IHBwX29wZW5fYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2VfYm94IHYgPSBwcF9jbG9zZV9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3N0YWcgdiA9IHBwX29wZW5fc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX3N0YWcgdiA9IHBwX2Nsb3NlX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9hcyB2IHcgPSBwcF9wcmludF9hcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgcHJpbnRfc3RyaW5nIHYgPSBwcF9wcmludF9zdHJpbmcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9ieXRlcyB2ID0gcHBfcHJpbnRfYnl0ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9pbnQgdiA9IHBwX3ByaW50X2ludCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2Zsb2F0IHYgPSBwcF9wcmludF9mbG9hdCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2NoYXIgdiA9IHBwX3ByaW50X2NoYXIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9ib29sIHYgPSBwcF9wcmludF9ib29sIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnJlYWsgdiB3ID0gcHBfcHJpbnRfYnJlYWsgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X2N1dCB2ID0gcHBfcHJpbnRfY3V0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfc3BhY2UgdiA9IHBwX3ByaW50X3NwYWNlIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZm9yY2VfbmV3bGluZSB2ID0gcHBfZm9yY2VfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2ZsdXNoIHYgPSBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X25ld2xpbmUgdiA9IHBwX3ByaW50X25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9pZl9uZXdsaW5lIHYgPSBwcF9wcmludF9pZl9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBvcGVuX3Rib3ggdiA9IHBwX29wZW5fdGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX3Rib3ggdiA9IHBwX2Nsb3NlX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF90YnJlYWsgdiB3ID0gcHBfcHJpbnRfdGJyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcblxuYW5kIHNldF90YWIgdiA9IHBwX3NldF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF90YWIgdiA9IHBwX3ByaW50X3RhYiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21hcmdpbiB2ID0gcHBfc2V0X21hcmdpbiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJnaW4gdiA9IHBwX2dldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXhfaW5kZW50IHYgPSBwcF9zZXRfbWF4X2luZGVudCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfaW5kZW50IHYgPSBwcF9nZXRfbWF4X2luZGVudCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2dlb21ldHJ5IH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBwcF9zZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIH5tYXhfaW5kZW50IH5tYXJnaW5cbmFuZCBzYWZlX3NldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIH5tYXhfaW5kZW50IH5tYXJnaW5cbmFuZCBnZXRfZ2VvbWV0cnkgdiA9IHBwX2dldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHVwZGF0ZV9nZW9tZXRyeSB2ID0gcHBfdXBkYXRlX2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2JveGVzIHYgPSBwcF9zZXRfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21heF9ib3hlcyB2ID0gcHBfZ2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG92ZXJfbWF4X2JveGVzIHYgPSBwcF9vdmVyX21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2VsbGlwc2lzX3RleHQgdiA9IHBwX3NldF9lbGxpcHNpc190ZXh0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2VsbGlwc2lzX3RleHQgdiA9IHBwX2dldF9lbGxpcHNpc190ZXh0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgdiB3ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfcHJpbnRfdGFncyB2ID1cbiAgcHBfc2V0X3ByaW50X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfcHJpbnRfdGFncyB2ID1cbiAgcHBfZ2V0X3ByaW50X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfbWFya190YWdzIHYgPVxuICBwcF9zZXRfbWFya190YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21hcmtfdGFncyB2ID1cbiAgcHBfZ2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF90YWdzIHYgPVxuICBwcF9zZXRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5cbigqIENvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKVxuXG5sZXQgcHBfcHJpbnRfaXRlciA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgaXRlciBwcF92IHBwZiB2ID1cbiAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgbGV0IHBwX3YgdiA9XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW4gaXNfZmlyc3QgOj0gZmFsc2UgZWxzZSBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3YgcHBmIHZcbiAgaW5cbiAgaXRlciBwcF92IHZcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHBwX3ByaW50X2xpc3QgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHYgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgTGlzdC5pdGVyIHBwX3YgcHBmIHZcblxuKCogVG8gZm9ybWF0IGFuIGFycmF5ICopXG5sZXQgcHBfcHJpbnRfYXJyYXkgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHYgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgQXJyYXkuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgU2VxLml0ZXIgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9zdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcblxubGV0IHByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBlcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpICgpO1xuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbmxldCAoKSA9IERvbWFpbi5iZWZvcmVfZmlyc3Rfc3Bhd24gKGZ1biAoKSAtPlxuICBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpO1xuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5fTtcblxuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5fTtcbilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaW5dIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyX29wdCA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCBvcHRpb24sICdkKSBmb3JtYXQ2IC0+ICdjXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxubGV0IGtzY2FuZl9nZW4gaWIgZWYgYWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycyB3aXRoXG4gICAgfCBleGNlcHRpb24gKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUgYXMgZXhjKSAtPlxuICAgICAgICBlZiBpYiBleGNcbiAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHwgYXJncyAtPlxuICAgICAgICBhZiAoYXBwbHkgZiBhcmdzKVxuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbmxldCBrc2NhbmYgaWIgZWYgZm10ID1cbiAga3NjYW5mX2dlbiBpYiBlZiAoZnVuIHggLT4geCkgZm10XG5cbmxldCBrc2NhbmZfb3B0IGliIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgKGZ1biBfIF8gLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeCkgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IGJzY2FuZl9vcHQgaWIgZm10ID0ga3NjYW5mX29wdCBpYiBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc3NjYW5mX29wdCBzIGZtdCA9IGtzY2FuZl9vcHQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGluIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBzY2FuZl9vcHQgZm10ID0ga3NjYW5mX29wdCBTY2FubmluZy5zdGRpbiBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChPYmoubWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+IGNsb3N1cmUgPSBcIiVpZGVudGl0eVwiXG5cbigqKioqIExhYmVscyAqKioqKVxuXG5sZXQgcHVibGljX21ldGhvZF9sYWJlbCBzIDogdGFnID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGxldCB0YWcgPSBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdSBpblxuICAoKiBQcmludGYuZXByaW50ZiBcIiVzID0gJWRcXG5cIiBzIHRhZzsgZmx1c2ggc3RkZXJyOyAqKVxuICBPYmoubWFnaWMgdGFnXG5cbigqKioqIFNwYXJzZSBhcnJheSAqKioqKVxuXG5tb2R1bGUgVmFycyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgdmFycyA9IGludCBWYXJzLnRcblxubW9kdWxlIE1ldGhzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBtZXRocyA9IGxhYmVsIE1ldGhzLnRcbm1vZHVsZSBMYWJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IGxhYmVsIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIGxhYnMgPSBib29sIExhYnMudFxuXG4oKiBUaGUgY29tcGlsZXIgYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGlzIHN0cnVjdHVyZSBpcyBbc2l6ZV0uICopXG50eXBlIHRhYmxlID1cbiB7IG11dGFibGUgc2l6ZTogaW50O1xuICAgbXV0YWJsZSBtZXRob2RzOiBjbG9zdXJlIGFycmF5O1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X25hbWU6IG1ldGhzO1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X2xhYmVsOiBsYWJzO1xuICAgbXV0YWJsZSBwcmV2aW91c19zdGF0ZXM6XG4gICAgIChtZXRocyAqIGxhYnMgKiAobGFiZWwgKiBpdGVtKSBsaXN0ICogdmFycyAqXG4gICAgICBsYWJlbCBsaXN0ICogc3RyaW5nIGxpc3QpIGxpc3Q7XG4gICBtdXRhYmxlIGhpZGRlbl9tZXRoczogKGxhYmVsICogaXRlbSkgbGlzdDtcbiAgIG11dGFibGUgdmFyczogdmFycztcbiAgIG11dGFibGUgaW5pdGlhbGl6ZXJzOiAob2JqIC0+IHVuaXQpIGxpc3QgfVxuXG5sZXQgZHVtbXlfdGFibGUgPVxuICB7IG1ldGhvZHMgPSBbfCBkdW1teV9pdGVtIHxdO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSAwIH1cblxubGV0IHRhYmxlX2NvdW50ID0gcmVmIDBcblxuKCogZHVtbXlfbWV0IHNob3VsZCBiZSBhIHBvaW50ZXIsIHNvIHVzZSBhbiBhdG9tICopXG5sZXQgZHVtbXlfbWV0IDogaXRlbSA9IE9iai5vYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gT2JqLm1hZ2ljIGxlbjtcbiAgbWV0aG9kcy4oMSkgPC0gT2JqLm1hZ2ljIChmaXRfc2l6ZSBsZW4gKiBTeXMud29yZF9zaXplIC8gOCAtIDEpO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBtZXRob2RzLihpKjIrMykgPC0gT2JqLm1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IE9iai5tYWdpYyAwIHRoZW4gW10gZWxzZSBBcnJheS50b19saXN0IGFyclxuXG5sZXQgbmFycm93IHRhYmxlIHZhcnMgdmlydF9tZXRocyBjb25jcl9tZXRocyA9XG4gIGxldCB2YXJzID0gdG9fbGlzdCB2YXJzXG4gIGFuZCB2aXJ0X21ldGhzID0gdG9fbGlzdCB2aXJ0X21ldGhzXG4gIGFuZCBjb25jcl9tZXRocyA9IHRvX2xpc3QgY29uY3JfbWV0aHMgaW5cbiAgbGV0IHZpcnRfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIHZpcnRfbWV0aHMgaW5cbiAgbGV0IGNvbmNyX21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBjb25jcl9tZXRocyBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC1cbiAgICAgKHRhYmxlLm1ldGhvZHNfYnlfbmFtZSwgdGFibGUubWV0aG9kc19ieV9sYWJlbCwgdGFibGUuaGlkZGVuX21ldGhzLFxuICAgICAgdGFibGUudmFycywgdmlydF9tZXRoX2xhYnMsIHZhcnMpXG4gICAgIDo6IHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgIFZhcnMuZm9sZFxuICAgICAgKGZ1biBsYWIgaW5mbyB0dmFycyAtPlxuICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmFycyB0aGVuIFZhcnMuYWRkIGxhYiBpbmZvIHR2YXJzIGVsc2UgdHZhcnMpXG4gICAgICB0YWJsZS52YXJzIFZhcnMuZW1wdHk7XG4gIGxldCBieV9uYW1lID0gcmVmIE1ldGhzLmVtcHR5IGluXG4gIGxldCBieV9sYWJlbCA9IHJlZiBMYWJzLmVtcHR5IGluXG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PVxuICAgICAgICAgIExhYnMuYWRkIGxhYmVsXG4gICAgICAgICAgICAodHJ5IExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHdpdGggTm90X2ZvdW5kIC0+IHRydWUpXG4gICAgICAgICAgICAhYnlfbGFiZWwpXG4gICAgY29uY3JfbWV0aHMgY29uY3JfbWV0aF9sYWJzO1xuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj0gTGFicy5hZGQgbGFiZWwgZmFsc2UgIWJ5X2xhYmVsKVxuICAgIHZpcnRfbWV0aHMgdmlydF9tZXRoX2xhYnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSAhYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSAhYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aF9sYWJzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIFtdXG5cbmxldCB3aWRlbiB0YWJsZSA9XG4gIGxldCAoYnlfbmFtZSwgYnlfbGFiZWwsIHNhdmVkX2hpZGRlbl9tZXRocywgc2F2ZWRfdmFycywgdmlydF9tZXRocywgdmFycykgPVxuICAgIExpc3QuaGQgdGFibGUucHJldmlvdXNfc3RhdGVzXG4gIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LSBMaXN0LnRsIHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gcyB2IC0+IFZhcnMuYWRkIHYgKFZhcnMuZmluZCB2IHRhYmxlLnZhcnMpIHMpXG4gICAgICAgc2F2ZWRfdmFycyB2YXJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRocyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBzYXZlZF9oaWRkZW5fbWV0aHNcblxubGV0IG5ld19zbG90IHRhYmxlID1cbiAgbGV0IGluZGV4ID0gdGFibGUuc2l6ZSBpblxuICB0YWJsZS5zaXplIDwtIGluZGV4ICsgMTtcbiAgaW5kZXhcblxubGV0IG5ld192YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgaW5kZXggPSBuZXdfc2xvdCB0YWJsZSBpblxuICAgIGlmIG5hbWUgPD4gXCJcIiB0aGVuIHRhYmxlLnZhcnMgPC0gVmFycy5hZGQgbmFtZSBpbmRleCB0YWJsZS52YXJzO1xuICAgIGluZGV4XG5cbmxldCB0b19hcnJheSBhcnIgPVxuICBpZiBhcnIgPSBPYmoubWFnaWMgMCB0aGVuIFt8fF0gZWxzZSBhcnJcblxubGV0IG5ld19tZXRob2RzX3ZhcmlhYmxlcyB0YWJsZSBtZXRocyB2YWxzID1cbiAgbGV0IG1ldGhzID0gdG9fYXJyYXkgbWV0aHMgaW5cbiAgbGV0IG5tZXRocyA9IEFycmF5Lmxlbmd0aCBtZXRocyBhbmQgbnZhbHMgPSBBcnJheS5sZW5ndGggdmFscyBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobm1ldGhzICsgbnZhbHMpIDAgaW5cbiAgZm9yIGkgPSAwIHRvIG5tZXRocyAtIDEgZG9cbiAgICByZXMuKGkpIDwtIGdldF9tZXRob2RfbGFiZWwgdGFibGUgbWV0aHMuKGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudmFscyAtIDEgZG9cbiAgICByZXMuKGkrbm1ldGhzKSA8LSBuZXdfdmFyaWFibGUgdGFibGUgdmFscy4oaSlcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBnZXRfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzIHdpdGggTm90X2ZvdW5kIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlcyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIHRhYmxlKSBuYW1lc1xuXG5sZXQgYWRkX2luaXRpYWxpemVyIHRhYmxlIGYgPVxuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gZjo6dGFibGUuaW5pdGlhbGl6ZXJzXG5cbigqXG5tb2R1bGUgS2V5cyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSB0YWcgYXJyYXkgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbmxldCBrZXlfbWFwID0gcmVmIEtleXMuZW1wdHlcbmxldCBnZXRfa2V5IHRhZ3MgOiBpdGVtID1cbiAgdHJ5IG1hZ2ljIChLZXlzLmZpbmQgdGFncyAha2V5X21hcCA6IHRhZyBhcnJheSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBrZXlfbWFwIDo9IEtleXMuYWRkIHRhZ3MgdGFncyAha2V5X21hcDtcbiAgICBtYWdpYyB0YWdzXG4qKVxuXG5sZXQgY3JlYXRlX3RhYmxlIHB1YmxpY19tZXRob2RzID1cbiAgaWYgcHVibGljX21ldGhvZHMgPT0gT2JqLm1hZ2ljIDAgdGhlbiBuZXdfdGFibGUgW3x8XSBlbHNlXG4gICgqIFtwdWJsaWNfbWV0aG9kc10gbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgZm9yIGJ5dGVjb2RlICopXG4gIGxldCB0YWdzID0gQXJyYXkubWFwIHB1YmxpY19tZXRob2RfbGFiZWwgcHVibGljX21ldGhvZHMgaW5cbiAgbGV0IHRhYmxlID0gbmV3X3RhYmxlIHRhZ3MgaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgbWV0IC0+XG4gICAgICBsZXQgbGFiID0gaSoyKzIgaW5cbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSAgPC0gTWV0aHMuYWRkIG1ldCBsYWIgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWIgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsKVxuICAgIHB1YmxpY19tZXRob2RzO1xuICB0YWJsZVxuXG5sZXQgaW5pdF9jbGFzcyB0YWJsZSA9XG4gIGluc3RfdmFyX2NvdW50IDo9ICFpbnN0X3Zhcl9jb3VudCArIHRhYmxlLnNpemUgLSAxO1xuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gTGlzdC5yZXYgdGFibGUuaW5pdGlhbGl6ZXJzO1xuICByZXNpemUgdGFibGUgKDMgKyBPYmoubWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCBPYmoucmVwciBpbml0IHxdO1xuICAgICBPYmoubWFnaWMgKEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIGNsYSkgKHRvX2FycmF5IHZhbHMpIDogaW50IGFycmF5KTtcbiAgICAgQXJyYXkubWFwXG4gICAgICAgKGZ1biBubSAtPiBPYmoucmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIE9iai5tYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZVxuICAgIHRoZW4gbiBlbHNlIG5ld19tZXRob2QgdGFibGVcbiAgaW5cbiAgdGFibGUubWV0aG9kcy4obikgPC0gT2JqLm1hZ2ljIDA7XG4gIG5cblxudHlwZSBpbXBsID1cbiAgICBHZXRDb25zdFxuICB8IEdldFZhclxuICB8IEdldEVudlxuICB8IEdldE1ldGhcbiAgfCBTZXRWYXJcbiAgfCBBcHBDb25zdFxuICB8IEFwcFZhclxuICB8IEFwcEVudlxuICB8IEFwcE1ldGhcbiAgfCBBcHBDb25zdENvbnN0XG4gIHwgQXBwQ29uc3RWYXJcbiAgfCBBcHBDb25zdEVudlxuICB8IEFwcENvbnN0TWV0aFxuICB8IEFwcFZhckNvbnN0XG4gIHwgQXBwRW52Q29uc3RcbiAgfCBBcHBNZXRoQ29uc3RcbiAgfCBNZXRoQXBwQ29uc3RcbiAgfCBNZXRoQXBwVmFyXG4gIHwgTWV0aEFwcEVudlxuICB8IE1ldGhBcHBNZXRoXG4gIHwgU2VuZENvbnN0XG4gIHwgU2VuZFZhclxuICB8IFNlbmRFbnZcbiAgfCBTZW5kTWV0aFxuICB8IENsb3N1cmUgb2YgY2xvc3VyZVxuXG5sZXQgbWV0aG9kX2ltcGwgdGFibGUgaSBhcnIgPVxuICBsZXQgbmV4dCAoKSA9IGluY3IgaTsgT2JqLm1hZ2ljIGFyci4oIWkpIGluXG4gIG1hdGNoIG5leHQoKSB3aXRoXG4gICAgR2V0Q29uc3QgLT4gbGV0IHggOiB0ID0gbmV4dCgpIGluIGdldF9jb25zdCB4XG4gIHwgR2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X3ZhciBuXG4gIHwgR2V0RW52ICAgLT4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X2VudiBlIG5cbiAgfCBHZXRNZXRoICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfbWV0aCBuXG4gIHwgU2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gc2V0X3ZhciBuXG4gIHwgQXBwQ29uc3QgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gYXBwX2NvbnN0IGYgeFxuICB8IEFwcFZhciAgIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfdmFyIGYgblxuICB8IEFwcEVudiAgIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiAgbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnYgZiBlIG5cbiAgfCBBcHBNZXRoICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX21ldGggZiBuXG4gIHwgQXBwQ29uc3RDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IHkgPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9jb25zdCBmIHggeVxuICB8IEFwcENvbnN0VmFyIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X3ZhciBmIHggblxuICB8IEFwcENvbnN0RW52IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9lbnYgZiB4IGUgblxuICB8IEFwcENvbnN0TWV0aCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9tZXRoIGYgeCBuXG4gIHwgQXBwVmFyQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfdmFyX2NvbnN0IGYgbiB4XG4gIHwgQXBwRW52Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX2Vudl9jb25zdCBmIGUgbiB4XG4gIHwgQXBwTWV0aENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX21ldGhfY29uc3QgZiBuIHhcbiAgfCBNZXRoQXBwQ29uc3QgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIG1ldGhfYXBwX2NvbnN0IG4geFxuICB8IE1ldGhBcHBWYXIgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX3ZhciBuIG1cbiAgfCBNZXRoQXBwRW52IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpblxuICAgICAgbWV0aF9hcHBfZW52IG4gZSBtXG4gIHwgTWV0aEFwcE1ldGggLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX21ldGggbiBtXG4gIHwgU2VuZENvbnN0IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBzZW5kX2NvbnN0IG0geCAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRWYXIgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX3ZhciBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kRW52IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgc2VuZF9lbnYgbSBlIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kTWV0aCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfbWV0aCBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBDbG9zdXJlIF8gYXMgY2xvIC0+IE9iai5tYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6ID9yYW5kb20gKCp0aHdhcnQgdG9vbHMvc3luY19zdGRsaWJfZG9jcyopIDogYm9vbCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5IGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5IGVwaCBrZXk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkgPVxuICAgIG1hdGNoIGdldF9rZXkgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkgLT4gZ2V0X2RhdGEgZXBoXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoID0gSC5zZWVkZWRfaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsxX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrMV9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5IGsgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5IGUgd2l0aFxuICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5IGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleSBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXkxIGtleTIgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkxIGVwaCBrZXkxO1xuICAgIHNldF9rZXkyIGVwaCBrZXkyO1xuICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBrZXkxKTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleTEga2V5MiA9XG4gICAgbWF0Y2ggZ2V0X2tleTEgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkxIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGdldF9rZXkyIGVwaCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkyIC0+IGdldF9kYXRhIGVwaFxuICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuc2VlZGVkX2hhc2ggc2VlZCBrMSArIEgyLnNlZWRlZF9oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrMSwgJ2syLCAnZCkgdCA9ICgnazEsICdrMiwgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazJfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrMSBrMiBkID0gYiA6PSBrMl9tYWtlIGsxIGsyIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgazEgazIgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5MSBlLCBnZXRfa2V5MiBlIHdpdGhcbiAgICAgIHwgU29tZSB4MSwgU29tZSB4MiB3aGVuIHgxID09IGsxICYmIHgyID09IGsyIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsxIGsyID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsxIGsyIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsxIGsyID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrMSBrMikgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXlzIGRhdGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGtleXMgaW5cbiAgICBsZXQgZXBoID0gY3JlYXRlIGwgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gc2V0X2tleSBlcGggaSBrZXlzLihpKSBkb25lO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5cyA9XG4gICAgbGV0IGwgPSBsZW5ndGggZXBoIGluXG4gICAgdHJ5XG4gICAgICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBrZXlzIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICBtYXRjaCBnZXRfa2V5IGVwaCBpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleXMuKGkpIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBnZXRfZGF0YSBlcGhcbiAgICB3aXRoIEV4aXQgLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5zZWVkZWRfaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrbl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0ga25fbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgayBlID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBsZW5ndGggZSA8PiBBcnJheS5sZW5ndGggayB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggayAtIDEgZG9cbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGUgaSB3aXRoXG4gICAgICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsuKGkpIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCBFeGl0IC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuZXhpc3RzIChmdW5jdGlvbiAnXFxcIicgfCAnJScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGYgdGhlblxuICAgICAgZmFpbHdpdGggKFwiRmlsZW5hbWUucXVvdGVfY29tbWFuZDogYmFkIGZpbGUgbmFtZSBcIiBeIGYpXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgZiAnICcgdGhlblxuICAgICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcIlxcXCJcIjsgZjsgXCJcXFwiXCJdXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGlmIGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmZcbiAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICBlbHNlIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIlxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmdfa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByYW5kb21fc3RhdGUgPSBEb21haW4uRExTLmdldCBwcm5nX2tleSBpblxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRvbV9zdGF0ZSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6RnVuLmlkIChmdW4gKCkgLT4gdGVtcF9kaXJfbmFtZSlcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBEb21haW4uRExTLnNldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDIwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKVxuICAgIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgKG5hbWUsXG4gICAgICAgb3Blbl9vdXRfZ2VuIChPcGVuX3dyb25seTo6T3Blbl9jcmVhdDo6T3Blbl9leGNsOjptb2RlKSBwZXJtcyBuYW1lKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IHRlbXBfZGlyID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpXG4gICAgPyhwZXJtcyA9IDBvNzAwKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIFN5cy5ta2RpciBuYW1lIHBlcm1zO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ29tcGxleCBudW1iZXJzICopXG5cbnR5cGUgdCA9IHsgcmU6IGZsb2F0OyBpbTogZmxvYXQgfVxuXG5sZXQgemVybyA9IHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbmxldCBvbmUgPSB7IHJlID0gMS4wOyBpbSA9IDAuMCB9XG5sZXQgaSA9IHsgcmUgPSAwLjA7IGltID0gMS4wIH1cblxubGV0IGFkZCB4IHkgPSB7IHJlID0geC5yZSArLiB5LnJlOyBpbSA9IHguaW0gKy4geS5pbSB9XG5cbmxldCBzdWIgeCB5ID0geyByZSA9IHgucmUgLS4geS5yZTsgaW0gPSB4LmltIC0uIHkuaW0gfVxuXG5sZXQgbmVnIHggPSB7IHJlID0gLS4geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IGNvbmogeCA9IHsgcmUgPSB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgbXVsIHggeSA9IHsgcmUgPSB4LnJlICouIHkucmUgLS4geC5pbSAqLiB5LmltO1xuICAgICAgICAgICAgICAgIGltID0geC5yZSAqLiB5LmltICsuIHguaW0gKi4geS5yZSB9XG5cbmxldCBkaXYgeCB5ID1cbiAgaWYgYWJzX2Zsb2F0IHkucmUgPj0gYWJzX2Zsb2F0IHkuaW0gdGhlblxuICAgIGxldCByID0geS5pbSAvLiB5LnJlIGluXG4gICAgbGV0IGQgPSB5LnJlICsuIHIgKi4geS5pbSBpblxuICAgIHsgcmUgPSAoeC5yZSArLiByICouIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9ICh4LmltIC0uIHIgKi4geC5yZSkgLy4gZCB9XG4gIGVsc2VcbiAgICBsZXQgciA9IHkucmUgLy4geS5pbSBpblxuICAgIGxldCBkID0geS5pbSArLiByICouIHkucmUgaW5cbiAgICB7IHJlID0gKHIgKi4geC5yZSArLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAociAqLiB4LmltIC0uIHgucmUpIC8uIGQgfVxuXG5sZXQgaW52IHggPSBkaXYgb25lIHhcblxubGV0IG5vcm0yIHggPSB4LnJlICouIHgucmUgKy4geC5pbSAqLiB4LmltXG5cbmxldCBub3JtIHggPSBGbG9hdC5oeXBvdCB4LnJlIHguaW1cblxubGV0IGFyZyB4ID0gYXRhbjIgeC5pbSB4LnJlXG5cbmxldCBwb2xhciBuIGEgPSB7IHJlID0gY29zIGEgKi4gbjsgaW0gPSBzaW4gYSAqLiBuIH1cblxubGV0IHNxcnQgeCA9XG4gIGlmIHgucmUgPSAwLjAgJiYgeC5pbSA9IDAuMCB0aGVuIHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICAgIGxldCB3ID1cbiAgICAgIGlmIHIgPj0gaSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBxID0gaSAvLiByIGluXG4gICAgICAgIHNxcnQocikgKi4gc3FydCgwLjUgKi4gKDEuMCArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBxID0gciAvLiBpIGluXG4gICAgICAgIHNxcnQoaSkgKi4gc3FydCgwLjUgKi4gKHEgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgaW5cbiAgICBpZiB4LnJlID49IDAuMFxuICAgIHRoZW4geyByZSA9IHc7ICBpbSA9IDAuNSAqLiB4LmltIC8uIHcgfVxuICAgIGVsc2UgeyByZSA9IDAuNSAqLiBpIC8uIHc7ICBpbSA9IGlmIHguaW0gPj0gMC4wIHRoZW4gdyBlbHNlIC0uIHcgfVxuICBlbmRcblxubGV0IGV4cCB4ID1cbiAgbGV0IGUgPSBleHAgeC5yZSBpbiB7IHJlID0gZSAqLiBjb3MgeC5pbTsgaW0gPSBlICouIHNpbiB4LmltIH1cblxubGV0IGxvZyB4ID0geyByZSA9IGxvZyAobm9ybSB4KTsgaW0gPSBhdGFuMiB4LmltIHgucmUgfVxuXG5sZXQgcG93IHggeSA9IGV4cCAobXVsIHkgKGxvZyB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gLi5cbmV4dGVybmFsIHBlcmZvcm0gOiAnYSB0IC0+ICdhID0gXCIlcGVyZm9ybVwiXG5cbnR5cGUgZXhuICs9IFVuaGFuZGxlZDogJ2EgdCAtPiBleG5cbmV4Y2VwdGlvbiBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbmxldCAoKSA9XG4gIGxldCBwcmludGVyID0gZnVuY3Rpb25cbiAgICB8IFVuaGFuZGxlZCB4IC0+XG4gICAgICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIlN0ZGxpYi5FZmZlY3QuVW5oYW5kbGVkKCVzKVwiXG4gICAgICAgICAgICAoUHJpbnRleGMuc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBAQCBPYmoucmVwciB4KVxuICAgICAgICBpblxuICAgICAgICBTb21lIG1zZ1xuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgcHJpbnRlclxuXG4oKiBSZWdpc3RlciB0aGUgZXhjZXB0aW9ucyBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiBhY2Nlc3MgaXQgKilcbnR5cGUgXyB0ICs9IFNob3VsZF9ub3Rfc2VlX3RoaXNfXyA6IHVuaXQgdFxubGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJFZmZlY3QuVW5oYW5kbGVkXCJcbiAgICAgICAgICAoVW5oYW5kbGVkIFNob3VsZF9ub3Rfc2VlX3RoaXNfXylcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIlxuICAgICAgICAgIENvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcblxudHlwZSAoJ2EsICdiKSBzdGFjayBbQEBpbW1lZGlhdGVdXG50eXBlIGxhc3RfZmliZXIgW0BAaW1tZWRpYXRlXVxuXG5leHRlcm5hbCByZXN1bWUgOlxuICAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+IGxhc3RfZmliZXIgLT4gJ2IgPSBcIiVyZXN1bWVcIlxuZXh0ZXJuYWwgcnVuc3RhY2sgOiAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+ICdiID0gXCIlcnVuc3RhY2tcIlxuXG5tb2R1bGUgRGVlcCA9IHN0cnVjdFxuXG4gIHR5cGUgKCdhLCdiKSBjb250aW51YXRpb25cblxuICBleHRlcm5hbCB0YWtlX2NvbnRfbm9leGMgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gKCdhLCAnYikgc3RhY2sgPVxuICAgIFwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXCIgW0BAbm9hbGxvY11cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcbiAgZXh0ZXJuYWwgY29udF9sYXN0X2ZpYmVyIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgPSBcIiVmaWVsZDFcIlxuICBleHRlcm5hbCBjb250X3NldF9sYXN0X2ZpYmVyIDpcbiAgICAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiB1bml0ID0gXCIlc2V0ZmllbGQxXCJcblxuICBsZXQgY29udGludWUgayB2ID1cbiAgICByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIHggLT4geCkgdiAoY29udF9sYXN0X2ZpYmVyIGspXG5cbiAgbGV0IGRpc2NvbnRpbnVlIGsgZSA9XG4gICAgcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+IHJhaXNlIGUpIGUgKGNvbnRfbGFzdF9maWJlciBrKVxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoX2JhY2t0cmFjZSBrIGUgYnQgPVxuICAgIHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPiBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJ0KVxuICAgICAgZSAoY29udF9sYXN0X2ZpYmVyIGspXG5cbiAgdHlwZSAoJ2EsJ2IpIGhhbmRsZXIgPVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyB0IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2IgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBtYXRjaF93aXRoIGNvbXAgYXJnIGhhbmRsZXIgPVxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJ1bnN0YWNrIHMgY29tcCBhcmdcblxuICB0eXBlICdhIGVmZmVjdF9oYW5kbGVyID1cbiAgICB7IGVmZmM6ICdiLiAnYiB0IC0+ICgoJ2IsJ2EpIGNvbnRpbnVhdGlvbiAtPiAnYSkgb3B0aW9uIH1cblxuICBsZXQgdHJ5X3dpdGggY29tcCBhcmcgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMnIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIChmdW4geCAtPiB4KSAoZnVuIGUgLT4gcmFpc2UgZSkgZWZmYycgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcblxubW9kdWxlIFNoYWxsb3cgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG5cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcblxuICBleHRlcm5hbCBjb250X2xhc3RfZmliZXIgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciA9IFwiJWZpZWxkMVwiXG4gIGV4dGVybmFsIGNvbnRfc2V0X2xhc3RfZmliZXIgOlxuICAgICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDFcIlxuXG4gIGxldCBmaWJlciA6IHR5cGUgYSBiLiAoYSAtPiBiKSAtPiAoYSwgYikgY29udGludWF0aW9uID0gZnVuIGYgLT5cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3QgdHlwZSBfIHQgKz0gSW5pdGlhbF9zZXR1cF9fIDogYSB0IGVuZCBpblxuICAgIGxldCBleGNlcHRpb24gRSBvZiAoYSxiKSBjb250aW51YXRpb24gaW5cbiAgICBsZXQgZicgKCkgPSBmIChwZXJmb3JtIE0uSW5pdGlhbF9zZXR1cF9fKSBpblxuICAgIGxldCBlcnJvciBfID0gZmFpbHdpdGggXCJpbXBvc3NpYmxlXCIgaW5cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGVmZiB3aXRoXG4gICAgICB8IE0uSW5pdGlhbF9zZXR1cF9fIC0+XG4gICAgICAgICAgY29udF9zZXRfbGFzdF9maWJlciBrIGxhc3RfZmliZXI7XG4gICAgICAgICAgcmFpc2Vfbm90cmFjZSAoRSBrKVxuICAgICAgfCBfIC0+IGVycm9yICgpXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGVycm9yIGVycm9yIGVmZmMgaW5cbiAgICBtYXRjaCBydW5zdGFjayBzIGYnICgpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFIGsgLT4ga1xuICAgIHwgXyAtPiBlcnJvciAoKVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdhKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgdXBkYXRlX2hhbmRsZXIgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+XG4gICAgKCdiIC0+ICdjKSAtPlxuICAgIChleG4gLT4gJ2MpIC0+XG4gICAgKCdkIHQgLT4gKCdkLCdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYykgLT5cbiAgICAoJ2EsJ2MpIHN0YWNrID0gXCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBjb250aW51ZV9nZW4gayByZXN1bWVfZnVuIHYgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgY29udF9zZXRfbGFzdF9maWJlciBrIGxhc3RfZmliZXI7XG4gICAgICAgICAgZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBsYXN0X2ZpYmVyID0gY29udF9sYXN0X2ZpYmVyIGsgaW5cbiAgICBsZXQgc3RhY2sgPSB1cGRhdGVfaGFuZGxlciBrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJlc3VtZSBzdGFjayByZXN1bWVfZnVuIHYgbGFzdF9maWJlclxuXG4gIGxldCBjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIHggLT4geCkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGggayB2IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4gZSAtPiByYWlzZSBlKSB2IGhhbmRsZXJcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayB2IGJ0IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4gZSAtPiBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJ0KSB2IGhhbmRsZXJcblxuICBleHRlcm5hbCBnZXRfY2FsbHN0YWNrIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPiBpbnQgLT4gUHJpbnRleGMucmF3X2JhY2t0cmFjZSA9XG4gICAgXCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXCJcbmVuZFxuIiwiW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiBibGl0X3N0cmluZyBkb2Vzbid0IGV4aXN0IGluIFtTdGRMYWJlbHMuQnl0ZXNdLi4uICAqKVxubGV0IGJ5dGVzX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgQnl0ZXMuYmxpdF9zdHJpbmcgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG47O1xuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBGb3JtYXRcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5cbmxldCBzZXhwX29mX3QgdCA9IHRcbmxldCB0X29mX3NleHAgdCA9IHRcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IHJlcyA9IGNvbXBhcmUgeCB5IGluXG4gICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgeHMgeXNcblxuYW5kIGNvbXBhcmUgYSBiID1cbiAgaWYgYSA9PSBiXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IEF0b20gYSwgQXRvbSBiIC0+IFN0cmluZy5jb21wYXJlIGEgYlxuICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgIHwgTGlzdCBhLCBMaXN0IGIgLT4gY29tcGFyZV9saXN0IGEgYilcbjs7XG5cbmxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zIG9mIHRcbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIHRcblxubW9kdWxlIFByaW50aW5nID0gc3RydWN0XG4gICgqIERlZmF1bHQgaW5kZW50YXRpb24gbGV2ZWwgZm9yIGh1bWFuLXJlYWRhYmxlIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IGRlZmF1bHRfaW5kZW50ID0gcmVmIDFcblxuICAoKiBFc2NhcGluZyBvZiBzdHJpbmdzIHVzZWQgYXMgYXRvbXMgaW4gUy1leHByZXNzaW9ucyAqKVxuXG4gIGxldCBtdXN0X2VzY2FwZSBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxlbiA9IDBcbiAgICB8fFxuICAgIGxldCByZWMgbG9vcCBzdHIgaXggPVxuICAgICAgbWF0Y2ggc3RyLltpeF0gd2l0aFxuICAgICAgfCAnXCInIHwgJygnIHwgJyknIHwgJzsnIHwgJ1xcXFwnIC0+IHRydWVcbiAgICAgIHwgJ3wnIC0+XG4gICAgICAgIGl4ID4gMFxuICAgICAgICAmJlxuICAgICAgICBsZXQgbmV4dCA9IGl4IC0gMSBpblxuICAgICAgICBDaGFyLmVxdWFsIHN0ci5bbmV4dF0gJyMnIHx8IGxvb3Agc3RyIG5leHRcbiAgICAgIHwgJyMnIC0+XG4gICAgICAgIGl4ID4gMFxuICAgICAgICAmJlxuICAgICAgICBsZXQgbmV4dCA9IGl4IC0gMSBpblxuICAgICAgICBDaGFyLmVxdWFsIHN0ci5bbmV4dF0gJ3wnIHx8IGxvb3Agc3RyIG5leHRcbiAgICAgIHwgJ1xcMDAwJyAuLiAnXFwwMzInIHwgJ1xcMTI3JyAuLiAnXFwyNTUnIC0+IHRydWVcbiAgICAgIHwgXyAtPiBpeCA+IDAgJiYgbG9vcCBzdHIgKGl4IC0gMSlcbiAgICBpblxuICAgIGxvb3Agc3RyIChsZW4gLSAxKVxuICA7O1xuXG4gIGxldCBlc2NhcGVkIHMgPVxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgblxuICAgICAgOj0gIW5cbiAgICAgICAgICtcbiAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgICB8IF8gLT4gNFxuICAgIGRvbmU7XG4gICAgaWYgIW4gPSBTdHJpbmcubGVuZ3RoIHNcbiAgICB0aGVuIHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBzJyA9IEJ5dGVzLmNyZWF0ZSAhbiBpblxuICAgICAgbiA6PSAwO1xuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICAgICB8ICcgJyAuLiAnficgYXMgYyAtPiBCeXRlcy51bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICBsZXQgYSA9IENoYXIuY29kZSBjIGluXG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIC8gMTAwKSkpO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIC8gMTAgbW9kIDEwKSkpO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIG1vZCAxMCkpKSk7XG4gICAgICAgIGluY3IgblxuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcycpXG4gIDs7XG5cbiAgbGV0IGVzY19zdHIgc3RyID1cbiAgICBsZXQgZXN0ciA9IGVzY2FwZWQgc3RyIGluXG4gICAgbGV0IGVsZW4gPSBTdHJpbmcubGVuZ3RoIGVzdHIgaW5cbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChlbGVuICsgMikgaW5cbiAgICBieXRlc19ibGl0X3N0cmluZyB+c3JjOmVzdHIgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczoxIH5sZW46ZWxlbjtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyAwICdcIic7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgKGVsZW4gKyAxKSAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIDs7XG5cbiAgbGV0IGluZGV4X29mX25ld2xpbmUgc3RyIHN0YXJ0ID0gU3RyaW5nLmluZGV4X2Zyb21fb3B0IHN0ciBzdGFydCAnXFxuJ1xuXG4gIGxldCBnZXRfc3Vic3RyaW5nIHN0ciBpbmRleCBlbmRfcG9zX29wdCA9XG4gICAgbGV0IGVuZF9wb3MgPVxuICAgICAgbWF0Y2ggZW5kX3Bvc19vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc3RyXG4gICAgICB8IFNvbWUgZW5kX3BvcyAtPiBlbmRfcG9zXG4gICAgaW5cbiAgICBTdHJpbmcuc3ViIHN0ciB+cG9zOmluZGV4IH5sZW46KGVuZF9wb3MgLSBpbmRleClcbiAgOztcblxuICBsZXQgaXNfb25lX2xpbmUgc3RyID1cbiAgICBtYXRjaCBpbmRleF9vZl9uZXdsaW5lIHN0ciAwIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBpbmRleCAtPiBpbmRleCArIDEgPSBTdHJpbmcubGVuZ3RoIHN0clxuICA7O1xuXG4gIGxldCBwcF9odW1fbWF5YmVfZXNjX3N0ciBwcGYgc3RyID1cbiAgICBpZiBub3QgKG11c3RfZXNjYXBlIHN0cilcbiAgICB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgc3RyXG4gICAgZWxzZSBpZiBpc19vbmVfbGluZSBzdHJcbiAgICB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY19zdHIgc3RyKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGluZGV4ID1cbiAgICAgICAgbGV0IG5leHRfbmV3bGluZSA9IGluZGV4X29mX25ld2xpbmUgc3RyIGluZGV4IGluXG4gICAgICAgIGxldCBuZXh0X2xpbmUgPSBnZXRfc3Vic3RyaW5nIHN0ciBpbmRleCBuZXh0X25ld2xpbmUgaW5cbiAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZXNjYXBlZCBuZXh0X2xpbmUpO1xuICAgICAgICBtYXRjaCBuZXh0X25ld2xpbmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG5ld2xpbmVfaW5kZXggLT5cbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXFwiO1xuICAgICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpO1xuICAgICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFxcblwiO1xuICAgICAgICAgIGxvb3AgKG5ld2xpbmVfaW5kZXggKyAxKVxuICAgICAgaW5cbiAgICAgIHBwX29wZW5fYm94IHBwZiAwO1xuICAgICAgKCogdGhlIGxlYWRpbmcgc3BhY2UgaXMgdG8gbGluZSB1cCB0aGUgbGluZXMgKilcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIgXFxcIlwiO1xuICAgICAgbG9vcCAwO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXCJcIjtcbiAgICAgIHBwX2Nsb3NlX2JveCBwcGYgKCkpXG4gIDs7XG5cbiAgbGV0IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgPSBpZiBtdXN0X2VzY2FwZSBzdHIgdGhlbiBlc2Nfc3RyIHN0ciBlbHNlIHN0clxuXG4gICgqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIGZvcm1hdHRlcnMgKilcblxuICBsZXQgcmVjIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiBwcF9odW1fbWF5YmVfZXNjX3N0ciBwcGYgc3RyXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9vcGVuX2JveCBwcGYgaW5kZW50O1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIihcIjtcbiAgICAgIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiBoO1xuICAgICAgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiB0XG4gICAgfCBMaXN0IFtdIC0+IHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiXG5cbiAgYW5kIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBwcF9wcmludF9zcGFjZSBwcGYgKCk7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIpXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIDs7XG5cbiAgbGV0IHJlYyBwcF9tYWNoX2ludGVybmFsIG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPlxuICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgXCIgXCI7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIHN0cic7XG4gICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBwcF9tYWNoX2ludGVybmFsIGZhbHNlIHBwZiBoIGluXG4gICAgICBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmIHQ7XG4gICAgICBmYWxzZVxuICAgIHwgTGlzdCBbXSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIigpXCI7XG4gICAgICBmYWxzZVxuXG4gIGFuZCBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0XG4gICAgfCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiXG4gIDs7XG5cbiAgbGV0IHBwX2h1bSBwcGYgc2V4cCA9IHBwX2h1bV9pbmRlbnQgIWRlZmF1bHRfaW5kZW50IHBwZiBzZXhwXG4gIGxldCBwcF9tYWNoIHBwZiBzZXhwID0gaWdub3JlIChwcF9tYWNoX2ludGVybmFsIGZhbHNlIHBwZiBzZXhwKVxuICBsZXQgcHAgPSBwcF9tYWNoXG5cbiAgKCogU2V4cCBzaXplICopXG5cbiAgbGV0IHJlYyBzaXplX2xvb3AgKCh2LCBjKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IHYgKyAxLCBjICsgU3RyaW5nLmxlbmd0aCBzdHJcbiAgICB8IExpc3QgbHN0IC0+IExpc3QuZm9sZF9sZWZ0IGxzdCB+aW5pdDphY2MgfmY6c2l6ZV9sb29wXG4gIDs7XG5cbiAgbGV0IHNpemUgc2V4cCA9IHNpemVfbG9vcCAoMCwgMCkgc2V4cFxuXG4gICgqIEJ1ZmZlciBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19idWZmZXJfaHVtIH5idWYgPyhpbmRlbnQgPSAhZGVmYXVsdF9pbmRlbnQpIHNleHAgPVxuICAgIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYUA/XCIgKHBwX2h1bV9pbmRlbnQgaW5kZW50KSBzZXhwXG4gIDs7XG5cbiAgbGV0IHRvX2J1ZmZlcl9tYWNoIH5idWYgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHN0cic7XG4gICAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJygnO1xuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIGZhbHNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHQ7XG4gICAgICAgIGZhbHNlXG4gICAgICB8IExpc3QgW10gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcpJ1xuICAgIGluXG4gICAgaWdub3JlIChsb29wIGZhbHNlIHNleHApXG4gIDs7XG5cbiAgbGV0IHRvX2J1ZmZlciA9IHRvX2J1ZmZlcl9tYWNoXG5cbiAgbGV0IHRvX2J1ZmZlcl9nZW4gfmJ1ZiB+YWRkX2NoYXIgfmFkZF9zdHJpbmcgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBhZGRfY2hhciBidWYgJyAnO1xuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBhZGRfY2hhciBidWYgJygnO1xuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIGZhbHNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHQ7XG4gICAgICAgIGZhbHNlXG4gICAgICB8IExpc3QgW10gLT5cbiAgICAgICAgYWRkX3N0cmluZyBidWYgXCIoKVwiO1xuICAgICAgICBmYWxzZVxuICAgIGFuZCBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBtYXlfbmVlZF9zcGFjZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0XG4gICAgICB8IFtdIC0+IGFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gICgqIFRoZSBtYXhpbXVtIHNpemUgb2YgYSB0aGluZyBvbiB0aGUgbWlub3IgaGVhcCBpcyAyNTYgd29yZHMuXG4gICAgIFByZXZpb3VzbHksIHRoaXMgc2l6ZSBvZiB0aGUgcmV0dXJuZWQgYnVmZmVyIGhlcmUgd2FzIDQwOTYgYnl0ZXMsIHdoaWNoXG4gICAgIGNhdXNlZCB0aGUgQnVmZmVyIHRvIGJlIGFsbG9jYXRlZCBvbiB0aGUgKm1ham9yKiBoZWFwIGV2ZXJ5IHRpbWUuXG5cbiAgICAgQWNjb3JkaW5nIHRvIGEgc2ltcGxlIGJlbmNobWFyayBieSBSb24sIHdlIGNhbiBpbXByb3ZlIHBlcmZvcm1hbmNlIGZvclxuICAgICBzbWFsbCBzLWV4cHJlc3Npb25zIGJ5IGEgZmFjdG9yIG9mIH40IGlmIHdlIG9ubHkgYWxsb2NhdGUgMTAyNCBieXRlc1xuICAgICAoMTI4IHdvcmRzICsgc29tZSBzbWFsbCBvdmVyaGVhZCkgd29ydGggb2YgYnVmZmVyIGluaXRpYWxseS4gIEFuZCBvbmVcbiAgICAgY2FuIGFyZ3VlIHRoYXQgaWYgaXQncyBmcmVlIHRvIGFsbG9jYXRlIHN0cmluZ3Mgc21hbGxlciB0aGFuIDI1NiB3b3JkcyxcbiAgICAgbGFyZ2Ugcy1leHByZXNzaW9ucyByZXF1aXJpbmcgbGFyZ2VyIGV4cGVuc2l2ZSBidWZmZXJzIHdvbid0IG5vdGljZVxuICAgICB0aGUgZXh0cmEgdHdvIGRvdWJsaW5ncyBmcm9tIDEwMjQgYnl0ZXMgdG8gMjA0OCBhbmQgNDA5Ni4gQW5kIGVzcGVjaWFsbHlcbiAgICAgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIGFwcGxpY2F0aW9ucyB0byBhbHdheXMgcGFzcyBpbiBhIGxhcmdlciBidWZmZXIgdG9cbiAgICAgdXNlLiAqKVxuICBsZXQgYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSAxMDI0XG5cbiAgKCogU3RyaW5nIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gP2luZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0clxuICAgICAgd2hlbiBtYXRjaCBpbmRleF9vZl9uZXdsaW5lIHN0ciAwIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIF8gLT4gZmFsc2UgLT4gbWFjaF9tYXliZV9lc2Nfc3RyIHN0clxuICAgIHwgc2V4cCAtPlxuICAgICAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICAgICAgdG9fYnVmZmVyX2h1bSA/aW5kZW50IHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX21hY2ggPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gbWFjaF9tYXliZV9lc2Nfc3RyIHN0clxuICAgIHwgc2V4cCAtPlxuICAgICAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICAgICAgdG9fYnVmZmVyX21hY2ggc2V4cCB+YnVmO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfbWFjaFxuZW5kXG5cbmluY2x1ZGUgUHJpbnRpbmdcblxubGV0IG9mX2Zsb2F0X3N0eWxlIDogWyBgVW5kZXJzY29yZXMgfCBgTm9fdW5kZXJzY29yZXMgXSByZWYgPSByZWYgYE5vX3VuZGVyc2NvcmVzXG5sZXQgb2ZfaW50X3N0eWxlIDogWyBgVW5kZXJzY29yZXMgfCBgTm9fdW5kZXJzY29yZXMgXSByZWYgPSByZWYgYE5vX3VuZGVyc2NvcmVzXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgUHJpbnRpbmdcbmVuZFxuXG5sZXQgbWVzc2FnZSBuYW1lIGZpZWxkcyA9XG4gIGxldCByZWMgY29udl9maWVsZHMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChmbmFtZSwgZnNleHApIDo6IHJlc3QgLT5cbiAgICAgIChtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgfCBcIlwiIC0+IGZzZXhwIDo6IGNvbnZfZmllbGRzIHJlc3RcbiAgICAgICB8IF8gLT4gTGlzdCBbIEF0b20gZm5hbWU7IGZzZXhwIF0gOjogY29udl9maWVsZHMgcmVzdClcbiAgaW5cbiAgTGlzdCAoQXRvbSBuYW1lIDo6IGNvbnZfZmllbGRzIGZpZWxkcylcbjs7XG4iLCIoKiogUmVwcmVzZW50YXRpb24gb2YgUy1leHByZXNzaW9uIGdyYW1tYXJzICopXG5cbigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgcmVwcmVzZW50YXRpb24gZm9yIHMtZXhwcmVzc2lvbiBncmFtbWFycy4gVXNpbmcgcHB4X3NleHBfY29udlxuICAgIGFuZCBbW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXV0gcHJvZHVjZXMgYSBncmFtbWFyIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBkZXJpdmVkXG4gICAgW29mX3NleHBdIGZvciBhIGdpdmVuIHR5cGUuXG5cbiAgICBBcyB3aXRoIG90aGVyIGRlcml2ZWQgZGVmaW5pdGlvbnMsIHBvbHltb3JwaGljIHR5cGVzIGRlcml2ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYVxuICAgIGdyYW1tYXIgZm9yIGVhY2ggdHlwZSBhcmd1bWVudCBhbmQgcHJvZHVjZXMgYSBncmFtbWFyIGZvciB0aGUgbW9ub21vcnBoaXplZCB0eXBlLlxuXG4gICAgTW9ub21vcnBoaWMgdHlwZXMgZGVyaXZlIGEgZ3JhbW1hciBkaXJlY3RseS4gVG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cyxcbiAgICBbW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXV0gd3JhcHMgZ3JhbW1hcnMgaW4gdGhlIFtMYXp5XSBjb25zdHJ1Y3RvciBhcyBuZWVkZWQuXG5cbiAgICBUaGlzIHR5cGUgbWF5IGNoYW5nZSBvdmVyIHRpbWUgYXMgb3VyIG5lZWRzIGZvciBleHByZXNzaXZlIGdyYW1tYXJzIGNoYW5nZS4gV2Ugd2lsbFxuICAgIGF0dGVtcHQgdG8gbWFrZSBjaGFuZ2VzIGJhY2t3YXJkLWNvbXBhdGlibGUsIG9yIGF0IGxlYXN0IHByb3ZpZGUgYSByZWFzb25hYmxlIHVwZ3JhZGVcbiAgICBwYXRoLiAqKVxuXG5bQEBAd2FybmluZyBcIi0zMFwiXSAoKiBhbGxvdyBkdXBsaWNhdGUgZmllbGQgbmFtZXMgKilcblxuKCoqIEdyYW1tYXIgb2YgYSBzZXhwLiAqKVxudHlwZSBncmFtbWFyID1cbiAgfCBBbnkgb2Ygc3RyaW5nICgqKiBhY2NlcHRzIGFueSBzZXhwOyBzdHJpbmcgaXMgYSB0eXBlIG5hbWUgZm9yIGh1bWFuIHJlYWRhYmlsaXR5ICopXG4gIHwgQm9vbCAoKiogYWNjZXB0cyB0aGUgYXRvbXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiLCBtb2R1bG8gY2FwaXRhbGl6YXRpb24gKilcbiAgfCBDaGFyICgqKiBhY2NlcHRzIGFueSBzaW5nbGUtY2hhcmFjdGVyIGF0b20gKilcbiAgfCBJbnRlZ2VyICgqKiBhY2NlcHRzIGFueSBhdG9tIG1hdGNoaW5nIG9jYW1sIGludGVnZXIgc3ludGF4LCByZWdhcmRsZXNzIG9mIGJpdCB3aWR0aCAqKVxuICB8IEZsb2F0ICgqKiBhY2NlcHRzIGFueSBhdG9tIG1hdGNoaW5nIG9jYW1sIGZsb2F0IHN5bnRheCAqKVxuICB8IFN0cmluZyAoKiogYWNjZXB0cyBhbnkgYXRvbSAqKVxuICB8IE9wdGlvbiBvZiBncmFtbWFyICgqKiBhY2NlcHRzIGFuIG9wdGlvbiwgYm90aCBbTm9uZV0gdnMgW1NvbWUgX10gYW5kIFsoKV0gdnMgWyhfKV0uICopXG4gIHwgTGlzdCBvZiBsaXN0X2dyYW1tYXIgKCoqIGFjY2VwdHMgYSBsaXN0ICopXG4gIHwgVmFyaWFudCBvZiB2YXJpYW50ICgqKiBhY2NlcHRzIGNsYXVzZXMga2V5ZWQgYnkgYSBsZWFkaW5nIG9yIHNvbGUgYXRvbSAqKVxuICB8IFVuaW9uIG9mIGdyYW1tYXIgbGlzdCAoKiogYWNjZXB0cyBhIHNleHAgaWYgYW55IG9mIHRoZSBsaXN0ZWQgZ3JhbW1hcnMgYWNjZXB0cyBpdCAqKVxuICB8IFRhZ2dlZCBvZiBncmFtbWFyIHdpdGhfdGFnXG4gICgqKiBhbm5vdGF0ZXMgYSBncmFtbWFyIHdpdGggYSBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIgKilcbiAgfCBUeXZhciBvZiBzdHJpbmdcbiAgKCoqIE5hbWUgb2YgYSB0eXBlIHZhcmlhYmxlLCBlLmcuIFtUeXZhciBcImFcIl0gZm9yIFsnYV0uIE9ubHkgbWVhbmluZ2Z1bCB3aGVuIHRoZSBib2R5IG9mXG4gICAgICB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyBbZGVmbl0gZGVmaW5lcyBhIGNvcnJlc3BvbmRpbmcgdHlwZSB2YXJpYWJsZS4gKilcbiAgfCBUeWNvbiBvZiBzdHJpbmcgKiBncmFtbWFyIGxpc3QgKiBkZWZuIGxpc3RcbiAgKCoqIFR5cGUgY29uc3RydWN0b3IgYXBwbGllZCB0byBhcmd1bWVudHMsIGFuZCBpdHMgZGVmaW5pdGlvbi5cblxuICAgICAgRm9yIGV4YW1wbGUsIHdyaXRpbmcgW1R5Y29uIChcInRyZWVcIiwgWyBJbnRlZ2VyIF0sIGRlZm5zKV0gcmVwcmVzZW50cyBbaW50IHRyZWVdLCBmb3JcbiAgICAgIHdoYXRldmVyIFt0cmVlXSBpcyBkZWZpbmVkIGFzIGluIFtkZWZuc10uIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyBbdHJlZV0gYXMgYSBiaW5hcnlcbiAgICAgIHRyZWUgd2l0aCB0aGUgcGFyYW1ldGVyIHR5cGUgc3RvcmVkIGF0IHRoZSBsZWF2ZXMuXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBkZWZucyA9XG4gICAgICAgICAgWyB7IHR5Y29uID0gXCJ0cmVlXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID1cbiAgICAgICAgICAgICAgICBWYXJpYW50XG4gICAgICAgICAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFJlY3Vyc2l2ZSAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiTGVhZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChSZWN1cnNpdmUgKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibm9kZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IExpc3QgKE1hbnkgKFJlY3Vyc2l2ZSBcInRyZWVcIiwgW1R5dmFyIFwiYVwiXSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOyB7IHR5Y29uID0gXCJsZWFmXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gW1R5dmFyIFwiYVwiXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgOztcbiAgICAgIF19XG5cbiAgICAgIFRvIGlsbHVzdHJhdGUgdGhlIG1lYW5pbmcgb2YgW1R5Y29uXSB3aXRoIHJlc3BlY3QgdG8gW2RlZm5zXSwgYW5kIHRvIGRlbW9uc3RyYXRlIG9uZVxuICAgICAgd2F5IHRvIGFjY2VzcyB0aGVtLCBpdCBpcyBlcXVpdmFsZW50IHRvIGV4cGFuZCB0aGUgZGVmaW5pdGlvbiBvZiBcInRyZWVcIiBvbmUgbGV2ZWxcbiAgICAgIGFuZCBtb3ZlIHRoZSBbZGVmbnNdIHRvIGVuY2xvc2VkIHJlY3Vyc2l2ZSByZWZlcmVuY2VzOlxuXG4gICAgICB7W1xuICAgICAgICBUeWNvbiAoXCJ0cmVlXCIsIFsgSW50ZWdlciBdLCBkZWZucylcbiAgICAgICAgLS0+XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyB7IG5hbWUgPSBcIk5vZGVcIlxuICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcIm5vZGVcIiwgW1R5dmFyIFwiYVwiXSwgZGVmbnMpLCBFbXB0eSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDsgeyBuYW1lID0gXCJMZWFmXCJcbiAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJsZWFmXCIsIFtUeXZhciBcImFcIl0sIGRlZm5zKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgXX1cblxuICAgICAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBleHBvc2VzIHRoZSBzdHJ1Y3R1cmUgb2YgYSBncmFtbWFyIHdpdGggcmVjdXJzaXZlIHJlZmVyZW5jZXMsXG4gICAgICB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBtZWFuaW5nIG9mIHJlY3Vyc2l2ZWx5LWRlZmluZWQgZWxlbWVudHMuICopXG4gIHwgUmVjdXJzaXZlIG9mIHN0cmluZyAqIGdyYW1tYXIgbGlzdFxuICAoKiogVHlwZSBjb25zdHJ1Y3RvciBhcHBsaWVkIHRvIGFyZ3VtZW50cy4gVXNlZCB0byBkZW5vdGUgcmVjdXJzaXZlIHR5cGUgcmVmZXJlbmNlcy5cbiAgICAgIE9ubHkgbWVhbmluZ2Z1bCB3aGVuIHVzZWQgaW5zaWRlIHRoZSBbZGVmbl1zIG9mIGEgW1R5Y29uXSBncmFtbWFyLCB0byByZWZlciB0byBhXG4gICAgICB0eXBlIGNvbnN0cnVjdG9yIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBbZGVmbl0gbGlzdC4gKilcbiAgfCBMYXp5IG9mIGdyYW1tYXIgbGF6eV90XG4gICgqKiBMYXppbHkgY29tcHV0ZWQgZ3JhbW1hci4gVXNlIFtMYXp5XSB0byBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLiBUbyBkZWZpbmVcbiAgICAgIHJlY3Vyc2l2ZSBncmFtbWFycywgdXNlIFtSZWN1cnNpdmVdIGluc3RlYWQuICopXG5cbigqKiBHcmFtbWFyIG9mIGEgbGlzdCBvZiBzZXhwcy4gKilcbmFuZCBsaXN0X2dyYW1tYXIgPVxuICB8IEVtcHR5ICgqKiBhY2NlcHRzIGFuIGVtcHR5IGxpc3Qgb2Ygc2V4cHMgKilcbiAgfCBDb25zIG9mIGdyYW1tYXIgKiBsaXN0X2dyYW1tYXJcbiAgKCoqIGFjY2VwdHMgYSBub24tZW1wdHkgbGlzdCB3aXRoIGhlYWQgYW5kIHRhaWwgbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXJzICopXG4gIHwgTWFueSBvZiBncmFtbWFyICgqKiBhY2NlcHRzIHplcm8gb3IgbW9yZSBzZXhwcywgZWFjaCBtYXRjaGluZyB0aGUgZ2l2ZW4gZ3JhbW1hciAqKVxuICB8IEZpZWxkcyBvZiByZWNvcmQgKCoqIGFjY2VwdHMgc2V4cHMgcmVwcmVzZW50aW5nIGZpZWxkcyBvZiBhIHJlY29yZCAqKVxuXG4oKiogQ2FzZSBzZW5zaXRpdml0eSBvcHRpb25zIGZvciBuYW1lcyBvZiB2YXJpYW50IGNvbnN0cnVjdG9ycy4gKilcbmFuZCBjYXNlX3NlbnNpdGl2aXR5ID1cbiAgfCBDYXNlX2luc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFVzZWQgZm9yIGN1c3RvbSBwYXJzZXJzLiAqKVxuICB8IENhc2Vfc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLiBVc2VkIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUgZm9yIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGNhc2Ugc2Vuc2l0aXZlIGFmdGVyd2FyZC5cbiAgICAgIFVzZWQgZm9yIHJlZ3VsYXIgdmFyaWFudHMuICopXG5cbigqKiBHcmFtbWFyIG9mIHZhcmlhbnRzLiBBY2NlcHRzIGFueSBzZXhwIG1hdGNoaW5nIG9uZSBvZiB0aGUgY2xhdXNlcy4gKilcbmFuZCB2YXJpYW50ID1cbiAgeyBjYXNlX3NlbnNpdGl2aXR5IDogY2FzZV9zZW5zaXRpdml0eVxuICA7IGNsYXVzZXMgOiBjbGF1c2Ugd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSBzaW5nbGUgdmFyaWFudCBjbGF1c2UuIEFjY2VwdHMgc2V4cHMgYmFzZWQgb24gdGhlIFtjbGF1c2Vfa2luZF0uICopXG5hbmQgY2xhdXNlID1cbiAgeyBuYW1lIDogc3RyaW5nXG4gIDsgY2xhdXNlX2tpbmQgOiBjbGF1c2Vfa2luZFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlJ3MgY29udGVudHMuIFtBdG9tX2NsYXVzZV0gYWNjZXB0cyBhbiBhdG9tIG1hdGNoaW5nXG4gICAgdGhlIGNsYXVzZSdzIG5hbWUuIFtMaXN0X2NsYXVzZV0gYWNjZXB0cyBhIGxpc3Qgd2hvc2UgaGVhZCBpcyBhbiBhdG9tIG1hdGNoaW5nIHRoZVxuICAgIGNsYXVzZSdzIG5hbWUgYW5kIHdob3NlIHRhaWwgbWF0Y2hlcyBbYXJnc10uIFRoZSBjbGF1c2UncyBuYW1lIGlzIG1hdGNoZWQgbW9kdWxvIHRoZVxuICAgIHZhcmlhbnQncyBbbmFtZV9raW5kXS4gKilcbmFuZCBjbGF1c2Vfa2luZCA9XG4gIHwgQXRvbV9jbGF1c2VcbiAgfCBMaXN0X2NsYXVzZSBvZiB7IGFyZ3MgOiBsaXN0X2dyYW1tYXIgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZC4gQWNjZXB0cyBhbnkgbGlzdCBvZiBzZXhwcyBzcGVjaWZ5aW5nIGVhY2ggb2YgdGhlIGZpZWxkcyxcbiAgICByZWdhcmRsZXNzIG9mIG9yZGVyLiBJZiBbYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBzcGVjaWZpZWQsIGlnbm9yZXMgc2V4cHMgd2l0aCBuYW1lc1xuICAgIG5vdCBmb3VuZCBpbiBbZmllbGRzXS4gKilcbmFuZCByZWNvcmQgPVxuICB7IGFsbG93X2V4dHJhX2ZpZWxkcyA6IGJvb2xcbiAgOyBmaWVsZHMgOiBmaWVsZCB3aXRoX3RhZ19saXN0IGxpc3RcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZCBmaWVsZC4gQSBmaWVsZCBtdXN0IHNob3cgdXAgZXhhY3RseSBvbmNlIGluIGEgcmVjb3JkIGlmXG4gICAgW3JlcXVpcmVkXSwgb3IgYXQgbW9zdCBvbmNlIG90aGVyd2lzZS4gQWNjZXB0cyBhIGxpc3QgaGVhZGVkIGJ5IFtuYW1lXSBhcyBhbiBhdG9tLFxuICAgIGZvbGxvd2VkIGJ5IHNleHBzIG1hdGNoaW5nIFthcmdzXS4gKilcbmFuZCBmaWVsZCA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IHJlcXVpcmVkIDogYm9vbFxuICA7IGFyZ3MgOiBsaXN0X2dyYW1tYXJcbiAgfVxuXG4oKiogR3JhbW1hciB0YWdnZWQgd2l0aCBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIuICopXG5hbmQgJ2Egd2l0aF90YWcgPVxuICB7IGtleSA6IHN0cmluZ1xuICA7IHZhbHVlIDogU2V4cC50XG4gIDsgZ3JhbW1hciA6ICdhXG4gIH1cblxuYW5kICdhIHdpdGhfdGFnX2xpc3QgPVxuICB8IFRhZyBvZiAnYSB3aXRoX3RhZ19saXN0IHdpdGhfdGFnXG4gIHwgTm9fdGFnIG9mICdhXG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjdXJzaXZlIHR5cGUgZGVmaW5pdGlvbi4gTmFtZXMgdGhlIFt0eWNvbl0gYmVpbmcgZGVmaW5lZCwgYW5kIHRoZVxuICAgIFt0eXZhcnNdIGl0IHRha2VzIGFzIHBhcmFtZXRlcnMuIFNwZWNpZmllcyB0aGUgW2dyYW1tYXJdIG9mIHRoZSBbdHljb25dLiBUaGUgZ3JhbW1hclxuICAgIG1heSByZWZlciB0byBhbnkgb2YgdGhlIFt0eXZhcnNdLCBhbmQgdG8gYW55IG9mIHRoZSBbdHljb25dcyBmcm9tIHRoZSBzYW1lIHNldCBvZlxuICAgIFtSZWN1cnNpdmVdIGRlZmluaXRpb25zLiAqKVxuYW5kIGRlZm4gPVxuICB7IHR5Y29uIDogc3RyaW5nXG4gIDsgdHl2YXJzIDogc3RyaW5nIGxpc3RcbiAgOyBncmFtbWFyIDogZ3JhbW1hclxuICB9XG5cbigqKiBUb3AtbGV2ZWwgZ3JhbW1hciB0eXBlLiBIYXMgYSBwaGFudG9tIHR5cGUgcGFyYW1ldGVyIHRvIGFzc29jaWF0ZSBlYWNoIGdyYW1tYXIgd2l0aFxuICAgIHRoZSB0eXBlIGl0cyBzZXhwcyByZXByZXNlbnQuIFRoaXMgbWFrZXMgaXQgaGFyZGVyIHRvIGFwcGx5IGdyYW1tYXJzIHRvIHRoZSB3cm9uZ1xuICAgIHR5cGUsIHdoaWxlIGdyYW1tYXJzIGNhbiBzdGlsbCBiZSBlYXNpbHkgY29lcmNlZCB0byBhIG5ldyB0eXBlIGlmIG5lZWRlZC4gKilcbnR5cGUgXyB0ID0geyB1bnR5cGVkIDogZ3JhbW1hciB9IFtAQHVuYm94ZWRdXG5cbmxldCBjb2VyY2UgKHR5cGUgYSBiKSAoeyB1bnR5cGVkID0gXyB9IGFzIHQgOiBhIHQpIDogYiB0ID0gdFxuXG5sZXQgdGFnICh0eXBlIGEpICh7IHVudHlwZWQgPSBncmFtbWFyIH0gOiBhIHQpIH5rZXkgfnZhbHVlIDogYSB0ID1cbiAgeyB1bnR5cGVkID0gVGFnZ2VkIHsga2V5OyB2YWx1ZTsgZ3JhbW1hciB9IH1cbjs7XG5cbigqKiBUaGlzIHJlc2VydmVkIGtleSBpcyB1c2VkIGZvciBhbGwgdGFncyBnZW5lcmF0ZWQgZnJvbSBkb2MgY29tbWVudHMuICopXG5sZXQgZG9jX2NvbW1lbnRfdGFnID0gXCJzZXhwX2dyYW1tYXIuZG9jX2NvbW1lbnRcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgY2FuIGJlIHVzZWQgdG8gYXNzb2NpYXRlIGEgdHlwZSBuYW1lIHdpdGggYSBncmFtbWFyLiAqKVxubGV0IHR5cGVfbmFtZV90YWcgPSBcInNleHBfZ3JhbW1hci50eXBlX25hbWVcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIHJlcHJlc2VudHMgYSBrZXkvdmFsdWUgYXNzb2NpYXRpb24uIFRoZSB0YWcnc1xuICAgIHZhbHVlIGlzIGlnbm9yZWQuICopXG5sZXQgYXNzb2NfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2NcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIGlzIGEga2V5IGluIGEga2V5L3ZhbHVlIGFzc29jaWF0aW9uLiBUaGUgdGFnJ3NcbiAgICB2YWx1ZSBpcyBpZ25vcmVkLiAqKVxubGV0IGFzc29jX2tleV90YWcgPSBcInNleHBfZ3JhbW1hci5hc3NvYy5rZXlcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIGlzIGEgdmFsdWUgaW4gYSBrZXkvdmFsdWUgYXNzb2NpYXRpb24uIFRoZVxuICAgIHRhZydzIHZhbHVlIGlzIGlnbm9yZWQuICopXG5sZXQgYXNzb2NfdmFsdWVfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2MudmFsdWVcIlxuXG4oKiogV2hlbiB0aGUga2V5IGlzIHNldCB0byBbQXRvbSBcImZhbHNlXCJdIGZvciBhIHZhcmlhbnQgY2xhdXNlLCB0aGF0IGNsYXVzZSBzaG91bGQgbm90IGJlXG4gICAgc3VnZ2VzdGVkIGluIGF1dG8tY29tcGxldGlvbiBiYXNlZCBvbiB0aGUgc2V4cCBncmFtbWFyLiAqKVxubGV0IGNvbXBsZXRpb25fc3VnZ2VzdGVkID0gXCJzZXhwX2dyYW1tYXIuY29tcGxldGlvbi1zdWdnZXN0ZWRcIlxuIiwib3BlbiBTdGRMYWJlbHNcblxubGV0IHNleHBfZ3JhbW1hcl93aXRoX3RhZ3MgZ3JhbW1hciB+dGFncyA9XG4gIExpc3QuZm9sZF9yaWdodCB0YWdzIH5pbml0OmdyYW1tYXIgfmY6KGZ1biAoa2V5LCB2YWx1ZSkgZ3JhbW1hciAtPlxuICAgIFNleHBfZ3JhbW1hci5UYWdnZWQgeyBrZXk7IHZhbHVlOyBncmFtbWFyIH0pXG47O1xuXG5sZXQgc2V4cF9ncmFtbWFyX3dpdGhfdGFnX2xpc3QgeCB+dGFncyA9XG4gIExpc3QuZm9sZF9yaWdodCB0YWdzIH5pbml0OnggfmY6KGZ1biAoa2V5LCB2YWx1ZSkgZ3JhbW1hciAtPlxuICAgIFNleHBfZ3JhbW1hci5UYWcgeyBrZXk7IHZhbHVlOyBncmFtbWFyIH0pXG47O1xuXG5sZXQgdW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gTGlzdCBFbXB0eSB9XG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQm9vbCB9XG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IENoYXIgfVxubGV0IGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEZsb2F0IH1cbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IHNleHBfdF9zZXhwX2dyYW1tYXIgOiBTZXhwLnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJTZXhwLnRcIiB9XG5sZXQgcmVmX3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5sZXQgbGF6eV90X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5cbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBvcHRpb24gU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBPcHRpb24gdW50eXBlZCB9XG47O1xuXG5sZXQgbGlzdF9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGxpc3QgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBhcnJheV9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGFycmF5IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgZW1wdHlfc2V4cF9ncmFtbWFyIDogXyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFVuaW9uIFtdIH1cbmxldCBvcGFxdWVfc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG5sZXQgZnVuX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxuIiwiKCogVXRpbGl0eSBNb2R1bGUgZm9yIFMtZXhwcmVzc2lvbiBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwXG5cbigqIENvbnZlcnNpb24gb2YgT0NhbWwtdmFsdWVzIHRvIFMtZXhwcmVzc2lvbnMgKilcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogJyUuMTdnJyBpcyBndWFyYW50ZWVkIHRvIGJlIHJvdW5kLXRyaXBwYWJsZS5cblxuICAgJyUuMTVnJyB3aWxsIGJlIHJvdW5kLXRyaXBwYWJsZSBhbmQgbm90IGhhdmUgbm9pc2UgYXQgdGhlIGxhc3QgZGlnaXQgb3IgdHdvIGZvciBhIGZsb2F0XG4gICB3aGljaCB3YXMgY29udmVydGVkIGZyb20gYSBkZWNpbWFsIChzdHJpbmcpIHdpdGggPD0gMTUgc2lnbmlmaWNhbnQgZGlnaXRzLiAgU28gaXQnc1xuICAgd29ydGggdHJ5aW5nIGZpcnN0IHRvIGF2b2lkIHRoaW5ncyBsaWtlIFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIuXG5cbiAgIFNlZSBjb21tZW50IGFib3ZlIFt0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlXSBpbiB7IUNvcmUuRmxvYXR9IGZvclxuICAgZGV0YWlsZWQgZXhwbGFuYXRpb24gYW5kIGV4YW1wbGVzLiAqKVxubGV0IGRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0ID1cbiAgcmVmIChmdW4geCAtPlxuICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHkgPSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdHXCIgeClcbjs7XG5cbmxldCByZWFkX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCB3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgbGlzdF9tYXAgZiBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBsIH5mKVxubGV0IHNleHBfb2ZfdW5pdCAoKSA9IExpc3QgW11cbmxldCBzZXhwX29mX2Jvb2wgYiA9IEF0b20gKHN0cmluZ19vZl9ib29sIGIpXG5sZXQgc2V4cF9vZl9zdHJpbmcgc3RyID0gQXRvbSBzdHJcbmxldCBzZXhwX29mX2J5dGVzIGJ5dGVzID0gQXRvbSAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHNleHBfb2ZfY2hhciBjID0gQXRvbSAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHNleHBfb2ZfaW50IG4gPSBBdG9tIChzdHJpbmdfb2ZfaW50IG4pXG5sZXQgc2V4cF9vZl9mbG9hdCBuID0gQXRvbSAoIWRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0IG4pXG5sZXQgc2V4cF9vZl9pbnQzMiBuID0gQXRvbSAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9pbnQ2NCBuID0gQXRvbSAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgbiA9IEF0b20gKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX3JlZiBzZXhwX29mX19hIHJmID0gc2V4cF9vZl9fYSAhcmZcbmxldCBzZXhwX29mX2xhenlfdCBzZXhwX29mX19hIGx2ID0gc2V4cF9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFsgc2V4cF9vZl9fYSB4IF1cbiAgfCBTb21lIHggLT4gTGlzdCBbIEF0b20gXCJzb21lXCI7IHNleHBfb2ZfX2EgeCBdXG4gIHwgTm9uZSB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFtdXG4gIHwgTm9uZSAtPiBBdG9tIFwibm9uZVwiXG47O1xuXG5sZXQgc2V4cF9vZl9wYWlyIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiAoYSwgYikgPSBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGIgXVxuXG5sZXQgc2V4cF9vZl90cmlwbGUgc2V4cF9vZl9fYSBzZXhwX29mX19iIHNleHBfb2ZfX2MgKGEsIGIsIGMpID1cbiAgTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiOyBzZXhwX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHNleHBfb2ZfbGlzdCBzZXhwX29mX19hIGxzdCA9IExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgbHN0IH5mOnNleHBfb2ZfX2EpKVxuXG5sZXQgc2V4cF9vZl9hcnJheSBzZXhwX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgc2V4cF9vZl9oYXNodGJsIHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBMaXN0IFsgc2V4cF9vZl9rZXkgazsgc2V4cF9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHNleHBfb2Zfb3BhcXVlIF8gPSBBdG9tIFwiPG9wYXF1ZT5cIlxubGV0IHNleHBfb2ZfZnVuIF8gPSBBdG9tIFwiPGZ1bj5cIlxuXG4oKiBFeGNlcHRpb24gY29udmVydGVyIHJlZ2lzdHJhdGlvbiBhbmQgbG9va3VwICopXG5cbm1vZHVsZSBFeG5fY29udmVydGVyID0gc3RydWN0XG4gICgqIFRoZXNlIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IGNvbnRleHQtc3dpdGNoZXNcbiAgICAgY2Fubm90IGhhcHBlbiB1bmxlc3MgdGhlcmUgaXMgYW4gYWxsb2NhdGlvbi4gIEl0IGlzIHJlYXNvbmFibGUgdG8gZXhwZWN0XG4gICAgIHRoYXQgdGhpcyB3aWxsIHJlbWFpbiB0cnVlIGZvciB0aGUgZm9yZXNlZWFibGUgZnV0dXJlLiAgVGhhdCB3YXkgd2VcbiAgICAgYXZvaWQgdXNpbmcgbXV0ZXhlcyBhbmQgdGh1cyBhIGRlcGVuZGVuY3kgb24gdGhlIHRocmVhZHMgbGlicmFyeS4gKilcblxuICAoKiBGYXN0IGFuZCBhdXRvbWF0aWMgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiAqKVxuXG4gIG1vZHVsZSBSZWdpc3RyYXRpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzZXhwX29mX2V4biA6IGV4biAtPiBTZXhwLnRcbiAgICAgIDsgKCogSWYgW3ByaW50ZXhjID0gdHJ1ZV0gdGhlbiB0aGlzIHNleHAgY29udmVydGVyIGlzIHVzZWQgZm9yIFByaW50ZXhjLnRvX3N0cmluZyAqKVxuICAgICAgICBwcmludGV4YyA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEV4bl90YWJsZSA9IEVwaGVtZXJvbi5LMS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuXG4gICAgICBsZXQgZXF1YWwgPSAoID09IClcbiAgICAgIGxldCBoYXNoID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuICAgIGVuZClcblxuICBsZXQgdGhlX2V4bl90YWJsZSA6IFJlZ2lzdHJhdGlvbi50IEV4bl90YWJsZS50ID0gRXhuX3RhYmxlLmNyZWF0ZSAxN1xuXG4gICgqIEVwaGVtZXJvbnMgYXJlIHVzZWQgc28gdGhhdCBbc2V4cF9vZl9leG5dIGNsb3N1cmUgZG9uJ3Qga2VlcCB0aGVcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpdmUuICopXG4gIGxldCBhZGQgPyhwcmludGV4YyA9IHRydWUpID9maW5hbGlzZTpfIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBzZXhwX29mX2V4biA9XG4gICAgRXhuX3RhYmxlLmFkZCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9XG4gIDs7XG5cbiAgbGV0IGZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjIGV4biA9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4biBpblxuICAgIG1hdGNoIEV4bl90YWJsZS5maW5kX29wdCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfSAtPlxuICAgICAgKG1hdGNoIGZvcl9wcmludGV4YywgcHJpbnRleGMgd2l0aFxuICAgICAgIHwgZmFsc2UsIF8gfCBfLCB0cnVlIC0+IFNvbWUgKHNleHBfb2ZfZXhuIGV4bilcbiAgICAgICB8IHRydWUsIGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl91bml0X3Rlc3RzX29ubHkgPSBzdHJ1Y3RcbiAgICBsZXQgc2l6ZSAoKSA9IChFeG5fdGFibGUuc3RhdHNfYWxpdmUgdGhlX2V4bl90YWJsZSkubnVtX2JpbmRpbmdzXG4gIGVuZFxuZW5kXG5cbmxldCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6dHJ1ZSBleG5cbmxldCBzZXhwX29mX2V4bl9vcHQgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4YzpmYWxzZSBleG5cblxubGV0IHNleHBfb2ZfZXhuIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gTGlzdCBbIEF0b20gKFByaW50ZXhjLnRvX3N0cmluZyBleG4pIF1cbiAgfCBTb21lIHNleHAgLT4gc2V4cFxuOztcblxubGV0IGV4bl90b19zdHJpbmcgZSA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSlcblxuKCoge1tleGNlcHRpb24gQmxhaCBbQEBkZXJpdmluZyBzZXhwXV19IGdlbmVyYXRlcyBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uXG4gICBbRXhuX2NvbnZlcnRlci5hZGRdIGRlZmluZWQgaW4gdGhpcyBmaWxlLiAgU28gd2UgYXJlIGd1YXJhbnRlZCB0aGF0IGFzIHNvb24gYXMgd2VcbiAgIG1hcmsgYW4gZXhjZXB0aW9uIGFzIHNleHBhYmxlLCB0aGlzIG1vZHVsZSB3aWxsIGJlIGxpbmtlZCBpbiBhbmQgdGhpcyBwcmludGVyIHdpbGwgYmVcbiAgIHJlZ2lzdGVyZWQsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4gKilcbmxldCAoKSA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBleG4gLT5cbiAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgc2V4cCAtPiBTb21lIChTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHApKVxuOztcblxubGV0IHByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gUHJpbnRleGMudG9fc3RyaW5nIGV4blxuICB8IFNvbWUgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHBcbjs7XG5cbigqIENvbnZlcnNpb24gb2YgUy1leHByZXNzaW9ucyB0byBPQ2FtbC12YWx1ZXMgKilcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBTZXhwLk9mX3NleHBfZXJyb3JcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3NleHBfZXJyb3JfZXhuIGV4YyBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkpXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcblxubGV0IHVuaXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiAoKVxuICB8IEF0b20gXyB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwidW5pdF9vZl9zZXhwOiBlbXB0eSBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBib29sX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gKFwidHJ1ZVwiIHwgXCJUcnVlXCIpIC0+IHRydWVcbiAgfCBBdG9tIChcImZhbHNlXCIgfCBcIkZhbHNlXCIpIC0+IGZhbHNlXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IHVua25vd24gc3RyaW5nXCIgc2V4cFxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYnl0ZXNfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYnl0ZXNfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY2hhcl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiBzZXhwO1xuICAgIHN0ci5bMF1cbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBpbnRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGZsb2F0X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImZsb2F0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQzMl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50MzIub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50MzJfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDMyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDY0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQ2NC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQ2NF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50NjRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwibmF0aXZlaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJuYXRpdmVpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgcmVmX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gcmVmIChhX19vZl9zZXhwIHNleHApXG5sZXQgbGF6eV90X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2Zfc2V4cCBzZXhwKVxuXG5sZXQgb3B0aW9uX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgaWYgIXJlYWRfb2xkX29wdGlvbl9mb3JtYXRcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFtdIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIGVsIF0gfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCByZXByZXNlbnQgb3B0aW9uYWwgdmFsdWVcIiBzZXhwXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwKVxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cFxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IGJlIChzb21lIGVsKVwiIHNleHApXG47O1xuXG5sZXQgcGFpcl9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGEsIGJcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHR3byBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCB0cmlwbGVfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgY19fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwOyBjX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgbGV0IGMgPSBjX19vZl9zZXhwIGNfc2V4cCBpblxuICAgIGEsIGIsIGNcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBsaXN0X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2Zfc2V4cCBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImxpc3Rfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYXJyYXlfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IFt8fF1cbiAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl9zZXhwIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2Zfc2V4cCBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImFycmF5X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGhhc2h0Ymxfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWxfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgTGlzdCBbIGtfc2V4cDsgdl9zZXhwIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2Zfc2V4cCBrX3NleHApIH5kYXRhOih2YWxfb2Zfc2V4cCB2X3NleHApXG4gICAgICB8IExpc3QgXyB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHNleHBcbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgb3BhcXVlX29mX3NleHAgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgXCJvcGFxdWVfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHNleHBcbjs7XG5cbmxldCBmdW5fb2Zfc2V4cCBzZXhwID0gb2Zfc2V4cF9lcnJvciBcImZ1bl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiBzZXhwXG5cbigqIFNleHAgR3JhbW1hcnMgKilcblxuaW5jbHVkZSBTZXhwX2NvbnZfZ3JhbW1hclxuXG4oKiBSZWdpc3RlcmluZyBkZWZhdWx0IGV4Y2VwdGlvbiBwcmludGVycyAqKVxuXG5sZXQgZ2V0X2ZsY19lcnJvciBuYW1lIChmaWxlLCBsaW5lLCBjaHIpID0gQXRvbSAoc3ByaW50ZiBcIiVzICVzOiVkOiVkXCIgbmFtZSBmaWxlIGxpbmUgY2hyKVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6ZmFsc2UgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBc3NlcnRfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBc3NlcnRfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIkFzc2VydF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeGl0XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEV4aXQgLT4gQXRvbSBcIkV4aXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRW5kX29mX2ZpbGVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRW5kX29mX2ZpbGUgLT4gQXRvbSBcIkVuZF9vZl9maWxlXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJGYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmQgLT4gQXRvbSBcIk5vdF9mb3VuZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBJbnZhbGlkX2FyZ3VtZW50XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYXJnIC0+IExpc3QgWyBBdG9tIFwiSW52YWxpZF9hcmd1bWVudFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXRjaF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE1hdGNoX2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJNYXRjaF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRfc11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmRfcyBhcmcgLT4gTGlzdCBbIEF0b20gXCJOb3RfZm91bmRfc1wiOyBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5c19lcnJvciBhcmcgLT4gTGlzdCBbIEF0b20gXCJTeXNfZXJyb3JcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkhlbHBdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkhlbHAgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkhlbHBcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkJhZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuQmFkIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5CYWRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTGF6eS5VbmRlZmluZWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTGF6eS5VbmRlZmluZWQgLT4gQXRvbSBcIkxhenkuVW5kZWZpbmVkXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNpbmcuUGFyc2VfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUGFyc2luZy5QYXJzZV9lcnJvciAtPiBBdG9tIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBRdWV1ZS5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBRdWV1ZS5FbXB0eSAtPiBBdG9tIFwiUXVldWUuRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2NhbmYuU2Nhbl9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFNjYW5mLlNjYW5fZmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJTY2FuZi5TY2FuX2ZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3RhY2suRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3RhY2suRW1wdHkgLT4gQXRvbSBcIlN0YWNrLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5cy5CcmVha11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXMuQnJlYWsgLT4gQXRvbSBcIlN5cy5CcmVha1wiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4Yzp0cnVlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHNleHApIC0+XG4gICAgICAgICAgTGlzdCBbIEF0b20gXCJTZXhwbGliLkNvbnYuT2Zfc2V4cF9lcnJvclwiOyBzZXhwX29mX2V4biBleGM7IHNleHAgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBTLWV4cHJlc3Npb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwX2NvbnZcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHNleHAgPVxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZyBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2MgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogYSBbc2V4cC5ib29sXSBmaWVsZCB3YXMgZ2l2ZW4gYSBwYXlsb2FkLlwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IG9ubHkgcGFpcnMgZXhwZWN0ZWQsIHRoZWlyIGZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBcXFxuICAgICAgIGF0b21cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyBzZXhwIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3NleHA6IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSBzZXhwXG47O1xuIiwib3BlbiEgU3RkTGFiZWxzXG5vcGVuISBTZXhwX2NvbnZcbm9wZW4hIFNleHBfY29udl9lcnJvclxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IERlZmF1bHQgOiAodW5pdCAtPiAnYSkgLT4gKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IE9taXRfbmlsIDogKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFJlcXVpcmVkIDogKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfYXJyYXkgOiAoJ2EgYXJyYXksIFNleHAudCAtPiAnYSkgdFxuICAgIHwgU2V4cF9ib29sIDogKGJvb2wsIHVuaXQpIHRcbiAgICB8IFNleHBfbGlzdCA6ICgnYSBsaXN0LCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfb3B0aW9uIDogKCdhIG9wdGlvbiwgU2V4cC50IC0+ICdhKSB0XG5lbmRcblxubW9kdWxlIEZpZWxkcyA9IHN0cnVjdFxuICB0eXBlIF8gdCA9XG4gICAgfCBFbXB0eSA6IHVuaXQgdFxuICAgIHwgRmllbGQgOlxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBraW5kIDogKCdhLCAnY29udikgS2luZC50XG4gICAgICAgIDsgY29udiA6ICdjb252XG4gICAgICAgIDsgcmVzdCA6ICdiIHRcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgKiAnYikgdFxuXG4gIGxldCBsZW5ndGggPVxuICAgIGxldCByZWMgbGVuZ3RoX2xvb3AgOiB0eXBlIGEuIGEgdCAtPiBpbnQgLT4gaW50ID1cbiAgICAgIGZ1biB0IGFjYyAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaWVsZCB7IHJlc3Q7IF8gfSAtPiBsZW5ndGhfbG9vcCByZXN0IChhY2MgKyAxKVxuICAgICAgICB8IEVtcHR5IC0+IGFjY1xuICAgIGluXG4gICAgZnVuIHQgLT4gbGVuZ3RoX2xvb3AgdCAwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hbGZvcm1lZCA9IHN0cnVjdFxuICAoKiBSZXByZXNlbnRzIGVycm9ycyB0aGF0IGNhbiBvY2N1ciBkdWUgdG8gbWFsZm9ybWVkIHJlY29yZCBzZXhwcy4gQWNjdW11bGF0ZWQgYXMgYVxuICAgICB2YWx1ZSBzbyB3ZSBjYW4gcmVwb3J0IG11bHRpcGxlIG5hbWVzIGF0IG9uY2UgZm9yIGV4dHJhIGZpZWxkcywgZHVwbGljYXRlIGZpZWxkcywgb3JcbiAgICAgbWlzc2luZyBmaWVsZHMuICopXG4gIHR5cGUgdCA9XG4gICAgfCBCb29sX3BheWxvYWRcbiAgICB8IEV4dHJhcyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgRHVwcyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgTWlzc2luZyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgTm9uX3BhaXIgb2YgU2V4cC50IG9wdGlvblxuXG4gIGxldCBjb21iaW5lIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgKCogY2hvb3NlIHRoZSBmaXJzdCBib29sLXBheWxvYWQgb3Igbm9uLXBhaXIgZXJyb3IgdGhhdCBvY2N1cnMgKilcbiAgICB8ICgoQm9vbF9wYXlsb2FkIHwgTm9uX3BhaXIgXykgYXMgdCksIF8gLT4gdFxuICAgIHwgXywgKChCb29sX3BheWxvYWQgfCBOb25fcGFpciBfKSBhcyB0KSAtPiB0XG4gICAgKCogY29tYmluZSBsaXN0cyBvZiBzaW1pbGFyIGVycm9ycyAqKVxuICAgIHwgRXh0cmFzIGEsIEV4dHJhcyBiIC0+IEV4dHJhcyAoYSBAIGIpXG4gICAgfCBEdXBzIGEsIER1cHMgYiAtPiBEdXBzIChhIEAgYilcbiAgICB8IE1pc3NpbmcgYSwgTWlzc2luZyBiIC0+IE1pc3NpbmcgKGEgQCBiKVxuICAgICgqIG90aGVyd2lzZSwgZHVwcyA+IGV4dHJhcyA+IG1pc3NpbmcgKilcbiAgICB8IChEdXBzIF8gYXMgdCksIF8gfCBfLCAoRHVwcyBfIGFzIHQpIC0+IHRcbiAgICB8IChFeHRyYXMgXyBhcyB0KSwgXyB8IF8sIChFeHRyYXMgXyBhcyB0KSAtPiB0XG4gIDs7XG5cbiAgbGV0IHJhaXNlIHQgfmNhbGxlciB+Y29udGV4dCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCb29sX3BheWxvYWQgLT4gcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgY2FsbGVyIGNvbnRleHRcbiAgICB8IEV4dHJhcyBuYW1lcyAtPiByZWNvcmRfZXh0cmFfZmllbGRzIGNhbGxlciAoTGlzdC5yZXYgbmFtZXMpIGNvbnRleHRcbiAgICB8IER1cHMgbmFtZXMgLT4gcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgY2FsbGVyIChMaXN0LnJldiBuYW1lcykgY29udGV4dFxuICAgIHwgTWlzc2luZyBuYW1lcyAtPlxuICAgICAgTGlzdC5tYXAgbmFtZXMgfmY6KGZ1biBuYW1lIC0+IHRydWUsIG5hbWUpXG4gICAgICB8PiByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGNhbGxlciBjb250ZXh0XG4gICAgfCBOb25fcGFpciBtYXliZV9jb250ZXh0IC0+XG4gICAgICBsZXQgY29udGV4dCA9IE9wdGlvbi52YWx1ZSBtYXliZV9jb250ZXh0IH5kZWZhdWx0OmNvbnRleHQgaW5cbiAgICAgIHJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkIGNhbGxlciBjb250ZXh0XG4gIDs7XG5lbmRcblxuZXhjZXB0aW9uIE1hbGZvcm1lZCBvZiBNYWxmb3JtZWQudFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgKCogU3RvcmVzIHNleHBzIGNvcnJlc3BvbmRpbmcgdG8gcmVjb3JkIGZpZWxkcywgaW4gdGhlIG9yZGVyIHRoZSBmaWVsZHMgd2VyZSBkZWNsYXJlZC5cbiAgICAgRXhjbHVkZXMgZmllbGRzIGFscmVhZHkgcGFyc2VkIGluIHRoZSBmYXN0IHBhdGguXG5cbiAgICAgTGlzdCBzZXhwcyByZXByZXNlbnQgYSBmaWVsZCB0aGF0IGlzIHByZXNlbnQsIHN1Y2ggYXMgKHggMSkgZm9yIGEgZmllbGQgbmFtZWQgXCJ4XCIuXG4gICAgIEF0b20gc2V4cHMgcmVwcmVzZW50IGEgZmllbGQgdGhhdCBpcyBhYnNlbnQsIG9yIGF0IGxlYXN0IG5vdCB5ZXQgc2Vlbi4gKilcbiAgdHlwZSB0ID0geyBzdGF0ZSA6IFNleHAudCBhcnJheSB9IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHVuc2FmZV9nZXQgdCBwb3MgPSBBcnJheS51bnNhZmVfZ2V0IHQuc3RhdGUgcG9zXG4gIGxldCB1bnNhZmVfc2V0IHQgcG9zIHNleHAgPSBBcnJheS51bnNhZmVfc2V0IHQuc3RhdGUgcG9zIHNleHBcbiAgbGV0IGFic2VudCA9IFNleHAuQXRvbSBcIlwiXG4gIGxldCBjcmVhdGUgbGVuID0geyBzdGF0ZSA9IEFycmF5Lm1ha2UgbGVuIGFic2VudCB9XG5lbmRcblxuKCogUGFyc2luZyBmaWVsZCB2YWx1ZXMgZnJvbSBzdGF0ZS4gKilcblxubGV0IHJlYyBwYXJzZV92YWx1ZV9tYWxmb3JtZWRcbiAgOiB0eXBlIGEgYi4gTWFsZm9ybWVkLnQgLT4gZmllbGRzOihhICogYikgRmllbGRzLnQgLT4gc3RhdGU6U3RhdGUudCAtPiBwb3M6aW50IC0+IGFcbiAgPVxuICBmdW4gbWFsZm9ybWVkIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbGV0IChGaWVsZCBmaWVsZCkgPSBmaWVsZHMgaW5cbiAgbGV0IG1hbGZvcm1lZCA9XG4gICAgbWF0Y2ggcGFyc2VfdmFsdWVzIH5maWVsZHM6ZmllbGQucmVzdCB+c3RhdGUgfnBvczoocG9zICsgMSkgd2l0aFxuICAgIHwgKF8gOiBiKSAtPiBtYWxmb3JtZWRcbiAgICB8IGV4Y2VwdGlvbiBNYWxmb3JtZWQgb3RoZXIgLT4gTWFsZm9ybWVkLmNvbWJpbmUgbWFsZm9ybWVkIG90aGVyXG4gIGluXG4gIHJhaXNlIChNYWxmb3JtZWQgbWFsZm9ybWVkKVxuXG5hbmQgcGFyc2VfdmFsdWUgOiB0eXBlIGEgYi4gZmllbGRzOihhICogYikgRmllbGRzLnQgLT4gc3RhdGU6U3RhdGUudCAtPiBwb3M6aW50IC0+IGEgKiBiID1cbiAgZnVuIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbGV0IChGaWVsZCB7IG5hbWU7IGtpbmQ7IGNvbnY7IHJlc3QgfSkgPSBmaWVsZHMgaW5cbiAgbGV0IHZhbHVlIDogYSA9XG4gICAgbWF0Y2gga2luZCwgU3RhdGUudW5zYWZlX2dldCBzdGF0ZSBwb3Mgd2l0aFxuICAgICgqIHdlbGwtZm9ybWVkICopXG4gICAgfCBSZXF1aXJlZCwgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IERlZmF1bHQgXywgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IE9taXRfbmlsLCBMaXN0IFsgXzsgc2V4cCBdIC0+IGNvbnYgc2V4cFxuICAgIHwgU2V4cF9vcHRpb24sIExpc3QgWyBfOyBzZXhwIF0gLT4gU29tZSAoY29udiBzZXhwKVxuICAgIHwgU2V4cF9saXN0LCBMaXN0IFsgXzsgc2V4cCBdIC0+IGxpc3Rfb2Zfc2V4cCBjb252IHNleHBcbiAgICB8IFNleHBfYXJyYXksIExpc3QgWyBfOyBzZXhwIF0gLT4gYXJyYXlfb2Zfc2V4cCBjb252IHNleHBcbiAgICB8IFNleHBfYm9vbCwgTGlzdCBbIF8gXSAtPiB0cnVlXG4gICAgKCogaWxsLWZvcm1lZCAqKVxuICAgIHwgKCAoUmVxdWlyZWQgfCBEZWZhdWx0IF8gfCBPbWl0X25pbCB8IFNleHBfb3B0aW9uIHwgU2V4cF9saXN0IHwgU2V4cF9hcnJheSlcbiAgICAgICwgKExpc3QgKF8gOjogXyA6OiBfIDo6IF8pIGFzIHNleHApICkgLT5cbiAgICAgIHBhcnNlX3ZhbHVlX21hbGZvcm1lZCAoTm9uX3BhaXIgKFNvbWUgc2V4cCkpIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgICB8ICggKFJlcXVpcmVkIHwgRGVmYXVsdCBfIHwgT21pdF9uaWwgfCBTZXhwX29wdGlvbiB8IFNleHBfbGlzdCB8IFNleHBfYXJyYXkpXG4gICAgICAsIExpc3QgKFtdIHwgWyBfIF0pICkgLT4gcGFyc2VfdmFsdWVfbWFsZm9ybWVkIChOb25fcGFpciBOb25lKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCBTZXhwX2Jvb2wsIExpc3QgKFtdIHwgXyA6OiBfIDo6IF8pIC0+XG4gICAgICBwYXJzZV92YWx1ZV9tYWxmb3JtZWQgQm9vbF9wYXlsb2FkIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgICAoKiBhYnNlbnQgKilcbiAgICB8IFJlcXVpcmVkLCBBdG9tIF8gLT4gcGFyc2VfdmFsdWVfbWFsZm9ybWVkIChNaXNzaW5nIFsgbmFtZSBdKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCBEZWZhdWx0IGRlZmF1bHQsIEF0b20gXyAtPiBkZWZhdWx0ICgpXG4gICAgfCBPbWl0X25pbCwgQXRvbSBfIC0+IGNvbnYgKExpc3QgW10pXG4gICAgfCBTZXhwX29wdGlvbiwgQXRvbSBfIC0+IE5vbmVcbiAgICB8IFNleHBfbGlzdCwgQXRvbSBfIC0+IFtdXG4gICAgfCBTZXhwX2FycmF5LCBBdG9tIF8gLT4gW3x8XVxuICAgIHwgU2V4cF9ib29sLCBBdG9tIF8gLT4gZmFsc2VcbiAgaW5cbiAgdmFsdWUsIHBhcnNlX3ZhbHVlcyB+ZmllbGRzOnJlc3QgfnN0YXRlIH5wb3M6KHBvcyArIDEpXG5cbmFuZCBwYXJzZV92YWx1ZXMgOiB0eXBlIGEuIGZpZWxkczphIEZpZWxkcy50IC0+IHN0YXRlOlN0YXRlLnQgLT4gcG9zOmludCAtPiBhID1cbiAgZnVuIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbWF0Y2ggZmllbGRzIHdpdGhcbiAgfCBGaWVsZCBfIC0+IHBhcnNlX3ZhbHVlIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgfCBFbXB0eSAtPiAoKVxuOztcblxuKCogUG9wdWxhdGluZyBzdGF0ZS4gSGFuZGxlcyBzbG93IHBhdGggY2FzZXMgd2hlcmUgdGhlcmUgbWF5IGJlIHJlb3JkZXJlZCwgZHVwbGljYXRlZCxcbiAgIG1pc3NpbmcsIG9yIGV4dHJhIGZpZWxkcy4gKilcblxubGV0IHJlYyBwYXJzZV9zcGluZV9tYWxmb3JtZWQgbWFsZm9ybWVkIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgPVxuICBsZXQgbWFsZm9ybWVkID1cbiAgICBtYXRjaCBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgd2l0aFxuICAgIHwgKCkgLT4gbWFsZm9ybWVkXG4gICAgfCBleGNlcHRpb24gTWFsZm9ybWVkIG90aGVyIC0+IE1hbGZvcm1lZC5jb21iaW5lIG1hbGZvcm1lZCBvdGhlclxuICBpblxuICByYWlzZSAoTWFsZm9ybWVkIG1hbGZvcm1lZClcblxuYW5kIHBhcnNlX3NwaW5lX3Nsb3cgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcyA9XG4gIG1hdGNoIChzZXhwcyA6IFNleHAudCBsaXN0KSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoTGlzdCAoQXRvbSBuYW1lIDo6IF8pIGFzIGZpZWxkKSA6OiBzZXhwcyAtPlxuICAgIGxldCBpID0gaW5kZXggbmFtZSBpblxuICAgIChtYXRjaCBzZWVuIDw9IGkgJiYgaSA8IGxlbiB3aXRoXG4gICAgIHwgdHJ1ZSAtPlxuICAgICAgICgqIHZhbGlkIGZpZWxkIGZvciBzbG93LXBhdGggcGFyc2luZyAqKVxuICAgICAgIGxldCBwb3MgPSBpIC0gc2VlbiBpblxuICAgICAgIChtYXRjaCBTdGF0ZS51bnNhZmVfZ2V0IHN0YXRlIHBvcyB3aXRoXG4gICAgICAgIHwgQXRvbSBfIC0+XG4gICAgICAgICAgKCogZmllbGQgbm90IHNlZW4geWV0ICopXG4gICAgICAgICAgU3RhdGUudW5zYWZlX3NldCBzdGF0ZSBwb3MgZmllbGQ7XG4gICAgICAgICAgcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgIHwgTGlzdCBfIC0+XG4gICAgICAgICAgKCogZmllbGQgYWxyZWFkeSBzZWVuICopXG4gICAgICAgICAgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIChEdXBzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzKVxuICAgICB8IGZhbHNlIC0+XG4gICAgICAgKG1hdGNoIDAgPD0gaSAmJiBpIDwgc2VlbiB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICgqIGZpZWxkIHNlZW4gaW4gZmFzdCBwYXRoICopXG4gICAgICAgICAgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIChEdXBzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAoKiBleHRyYSBmaWVsZCAqKVxuICAgICAgICAgIChtYXRjaCBleHRyYSB3aXRoXG4gICAgICAgICAgIHwgdHJ1ZSAtPiBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHNcbiAgICAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoRXh0cmFzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzKSkpXG4gIHwgc2V4cCA6OiBzZXhwcyAtPlxuICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoTm9uX3BhaXIgKFNvbWUgc2V4cCkpIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHNcbjs7XG5cbigqIFNsb3cgcGF0aCBmb3IgcmVjb3JkIHBhcnNpbmcuIFVzZXMgc3RhdGUgdG8gc3RvcmUgZmllbGRzIGFzIHRoZXkgYXJlIGRpc2NvdmVyZWQuICopXG5cbmxldCBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMgPVxuICBsZXQgdW5zZWVuID0gRmllbGRzLmxlbmd0aCBmaWVsZHMgaW5cbiAgbGV0IHN0YXRlID0gU3RhdGUuY3JlYXRlIHVuc2VlbiBpblxuICBsZXQgbGVuID0gc2VlbiArIHVuc2VlbiBpblxuICAoKiBwb3B1bGF0ZSBzdGF0ZSAqKVxuICBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHM7XG4gICgqIHBhcnNlIHZhbHVlcyBmcm9tIHN0YXRlICopXG4gIHBhcnNlX3ZhbHVlcyB+ZmllbGRzIH5zdGF0ZSB+cG9zOjBcbjs7XG5cbigqIEZhc3QgcGF0aCBmb3IgcmVjb3JkIHBhcnNpbmcuIERpcmVjdGx5IHBhcnNlcyBhbmQgcmV0dXJucyBmaWVsZHMgaW4gdGhlIG9yZGVyIHRoZXkgYXJlXG4gICBkZWNsYXJlZC4gRmFsbHMgYmFjayBvbiBzbG93IHBhdGggaWYgYW55IGZpZWxkcyBhcmUgYWJzZW50LCByZW9yZGVyZWQsIG9yIG1hbGZvcm1lZC4gKilcblxubGV0IHJlYyBwYXJzZV9maWVsZF9mYXN0XG4gIDogdHlwZSBhIGIuXG4gICAgZmllbGRzOihhICogYikgRmllbGRzLnRcbiAgICAtPiBpbmRleDooc3RyaW5nIC0+IGludClcbiAgICAtPiBleHRyYTpib29sXG4gICAgLT4gc2VlbjppbnRcbiAgICAtPiBTZXhwLnQgbGlzdFxuICAgIC0+IGEgKiBiXG4gID1cbiAgZnVuIH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcyAtPlxuICBsZXQgKEZpZWxkIHsgbmFtZTsga2luZDsgY29udjsgcmVzdCB9KSA9IGZpZWxkcyBpblxuICBtYXRjaCBzZXhwcyB3aXRoXG4gIHwgTGlzdCAoQXRvbSBhdG9tIDo6IGFyZ3MpIDo6IG90aGVycyB3aGVuIFN0cmluZy5lcXVhbCBhdG9tIG5hbWUgLT5cbiAgICAobWF0Y2gga2luZCwgYXJncyB3aXRoXG4gICAgIHwgUmVxdWlyZWQsIFsgc2V4cCBdIC0+XG4gICAgICAgY29udiBzZXhwLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzXG4gICAgIHwgRGVmYXVsdCBfLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IE9taXRfbmlsLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IFNleHBfb3B0aW9uLCBbIHNleHAgXSAtPlxuICAgICAgICggU29tZSAoY29udiBzZXhwKVxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9saXN0LCBbIHNleHAgXSAtPlxuICAgICAgICggbGlzdF9vZl9zZXhwIGNvbnYgc2V4cFxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9hcnJheSwgWyBzZXhwIF0gLT5cbiAgICAgICAoIGFycmF5X29mX3NleHAgY29udiBzZXhwXG4gICAgICAgLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzIClcbiAgICAgfCBTZXhwX2Jvb2wsIFtdIC0+XG4gICAgICAgdHJ1ZSwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICAoKiBtYWxmb3JtZWQgZmllbGQgb2Ygc29tZSBraW5kLCBkaXNwYXRjaCB0byBzbG93IHBhdGggKilcbiAgICAgfCBfLCBfIC0+IHBhcnNlX3JlY29yZF9zbG93IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcylcbiAgKCogbWFsZm9ybWVkIG9yIG91dC1vZi1vcmRlciBmaWVsZCwgZGlzcGF0Y2ggdG8gc2xvdyBwYXRoICopXG4gIHwgXyAtPiBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHNcblxuYW5kIHBhcnNlX3NwaW5lX2Zhc3RcbiAgOiB0eXBlIGEuXG4gICAgZmllbGRzOmEgRmllbGRzLnRcbiAgICAtPiBpbmRleDooc3RyaW5nIC0+IGludClcbiAgICAtPiBleHRyYTpib29sXG4gICAgLT4gc2VlbjppbnRcbiAgICAtPiBTZXhwLnQgbGlzdFxuICAgIC0+IGFcbiAgPVxuICBmdW4gfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzIC0+XG4gIG1hdGNoIGZpZWxkcyB3aXRoXG4gIHwgRmllbGQgXyAtPiBwYXJzZV9maWVsZF9mYXN0IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwc1xuICB8IEVtcHR5IC0+XG4gICAgKG1hdGNoIHNleHBzIHdpdGhcbiAgICAgfCBbXSAtPiAoKVxuICAgICB8IF8gOjogXyAtPlxuICAgICAgICgqIGV4dHJhIHNleHBzLCBkaXNwYXRjaCB0byBzbG93IHBhdGggKilcbiAgICAgICBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMpXG47O1xuXG5sZXQgcGFyc2VfcmVjb3JkX2Zhc3QgfmZpZWxkcyB+aW5kZXggfmV4dHJhIHNleHBzID1cbiAgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW46MCBzZXhwc1xuOztcblxuKCogRW50cnkgcG9pbnRzLiAqKVxuXG5sZXQgcmVjb3JkX29mX3NleHBzXG4gICAgICB+Y2FsbGVyXG4gICAgICB+Y29udGV4dFxuICAgICAgfmZpZWxkc1xuICAgICAgfmluZGV4X29mX2ZpZWxkXG4gICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICB+Y3JlYXRlXG4gICAgICBzZXhwc1xuICA9XG4gIGxldCBhbGxvd19leHRyYV9maWVsZHMgPVxuICAgIGFsbG93X2V4dHJhX2ZpZWxkcyB8fCBub3QgIVNleHBfY29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzXG4gIGluXG4gIG1hdGNoXG4gICAgcGFyc2VfcmVjb3JkX2Zhc3QgfmZpZWxkcyB+aW5kZXg6aW5kZXhfb2ZfZmllbGQgfmV4dHJhOmFsbG93X2V4dHJhX2ZpZWxkcyBzZXhwc1xuICB3aXRoXG4gIHwgdmFsdWUgLT4gY3JlYXRlIHZhbHVlXG4gIHwgZXhjZXB0aW9uIE1hbGZvcm1lZCBtYWxmb3JtZWQgLT4gTWFsZm9ybWVkLnJhaXNlIG1hbGZvcm1lZCB+Y2FsbGVyIH5jb250ZXh0XG47O1xuXG5sZXQgcmVjb3JkX29mX3NleHAgfmNhbGxlciB+ZmllbGRzIH5pbmRleF9vZl9maWVsZCB+YWxsb3dfZXh0cmFfZmllbGRzIH5jcmVhdGUgc2V4cCA9XG4gIG1hdGNoIChzZXhwIDogU2V4cC50KSB3aXRoXG4gIHwgQXRvbSBfIGFzIGNvbnRleHQgLT4gcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGNhbGxlciBjb250ZXh0XG4gIHwgTGlzdCBzZXhwcyBhcyBjb250ZXh0IC0+XG4gICAgcmVjb3JkX29mX3NleHBzXG4gICAgICB+Y2FsbGVyXG4gICAgICB+Y29udGV4dFxuICAgICAgfmZpZWxkc1xuICAgICAgfmluZGV4X29mX2ZpZWxkXG4gICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICB+Y3JlYXRlXG4gICAgICBzZXhwc1xuOztcbiIsIigqIFRoZSBbZ2xvYmFsaXplX3tib29sLGNoYXIsdW5pdH1dIGZ1bmN0aW9ucyBhcmUgd3JpdHRlbiBhcyBtYXRjaGVzIHBsdXMgdGhlIGlkZW50aXR5XG4gICBmdW5jdGlvbiBzbyB0aGF0IHRoZSB0eXBlIGNoZWNrZXIgY2FuIGdpdmUgdGhlbSB0aGUgZGVzaXJlZCB0eXBlLCB3aXRob3V0IGhhdmluZyB0byBkb1xuICAgYW55dGhpbmcgc3BlY2lhbC4gIEhvd2V2ZXIsIFtnbG9iYWxpemVfaW50XSBjYW5ub3QgYmUgd3JpdHRlbiB0aGlzIHdheSwgc28gd2UgcmVzb3J0IHRvXG4gICB1c2luZyBhbiBbZXh0ZXJuYWxdLiAqKVxuXG5sZXQgZ2xvYmFsaXplX2Jvb2wgPSBmdW5jdGlvblxuICB8ICh0cnVlIHwgZmFsc2UpIGFzIGIgLT4gYlxuOztcblxubGV0IGdsb2JhbGl6ZV9jaGFyID0gZnVuY3Rpb25cbiAgfCAnXFx4MDAnIC4uICdcXHhGRicgYXMgYyAtPiBjXG47O1xuXG5leHRlcm5hbCBnbG9iYWxpemVfZmxvYXQgOiAoZmxvYXRbQGxvY2FsXSkgLT4gZmxvYXQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50IDogKGludFtAbG9jYWxdKSAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50MzIgOiAoaW50MzJbQGxvY2FsXSkgLT4gaW50MzIgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50NjQgOiAoaW50NjRbQGxvY2FsXSkgLT4gaW50NjQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfbmF0aXZlaW50IDogKG5hdGl2ZWludFtAbG9jYWxdKSAtPiBuYXRpdmVpbnQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfYnl0ZXMgOiAoYnl0ZXNbQGxvY2FsXSkgLT4gYnl0ZXMgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfc3RyaW5nIDogKHN0cmluZ1tAbG9jYWxdKSAtPiBzdHJpbmcgPSBcImNhbWxfb2JqX2R1cFwiXG5cbmxldCBnbG9iYWxpemVfdW5pdCAoKCkgYXMgdSkgPSB1XG5cbmV4dGVybmFsIGdsb2JhbGl6ZV9hcnJheScgOiAoJ2EgYXJyYXlbQGxvY2FsXSkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfb2JqX2R1cFwiXG5cbmxldCBnbG9iYWxpemVfYXJyYXkgXyBhID0gZ2xvYmFsaXplX2FycmF5JyBhXG5cbmxldCByZWMgZ2xvYmFsaXplX2xpc3QgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+IGYgeCA6OiBnbG9iYWxpemVfbGlzdCBmIHhzXG47O1xuXG5sZXQgZ2xvYmFsaXplX29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuOztcblxubGV0IGdsb2JhbGl6ZV9yZXN1bHQgZ2xvYmFsaXplX2EgZ2xvYmFsaXplX2IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIGEgLT4gT2sgKGdsb2JhbGl6ZV9hIGEpXG4gIHwgRXJyb3IgYiAtPiBFcnJvciAoZ2xvYmFsaXplX2IgYilcbjs7XG5cbmxldCBnbG9iYWxpemVfcmVmJyByID0gcmVmICFyXG5sZXQgZ2xvYmFsaXplX3JlZiBfIHIgPSBnbG9iYWxpemVfcmVmJyByXG4iLCIoKiogUHJpbWl0aXZlcyBmb3IgcG9seW1vcnBoaWMgY29tcGFyZS4gKilcblxuKCpfIFBvbHltb3JwaGljIGNvbXBpbGVyIHByaW1pdGl2ZXMgY2FuJ3QgYmUgYWxpYXNlcyBhcyB0aGlzIGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAgaW5saW5pbmcuIChJZiBhbGlhc2VkIHdpdGhvdXQgYSB0eXBlIGFubm90YXRpb24sIHRoZSBjb21waWxlciB3b3VsZCBpbXBsZW1lbnQgdGhlbVxuICB1c2luZyB0aGUgZ2VuZXJpYyBjb2RlIGRvaW5nIGEgQyBjYWxsLCBhbmQgaXQncyB0aGlzIGNvZGUgdGhhdCB3b3VsZCBiZSBpbmxpbmVkLikgQXMgYVxuICByZXN1bHQgd2UgaGF2ZSB0byBjb3B5IHRoZSBbZXh0ZXJuYWwgLi4uXSBkZWNsYXJhdGlvbiBoZXJlLiAqKVxuZXh0ZXJuYWwgKCA8ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA9ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPiApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoID49ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBhc2NlbmRpbmcgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBjb21wYXJlIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbmxldCBtYXggeCB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxubGV0IG1pbiB4IHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBpbmNsdWRlZCBpbiBbSW1wb3J0XS4gIEl0IGlzIGFpbWVkIGF0IG1vZHVsZXMgdGhhdCBkZWZpbmUgdGhlIHN0YW5kYXJkXG4gICBjb21iaW5hdG9ycyBmb3IgW3NleHBfb2ZdLCBbb2Zfc2V4cF0sIFtjb21wYXJlXSBhbmQgW2hhc2hdIGFuZCBhcmUgaW5jbHVkZWQgaW5cbiAgIFtJbXBvcnRdLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAoKiBUaGVzZSBtb2R1bGVzIGFyZSByZWRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0KVxuICBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG50eXBlICdhIHJlZiA9ICdhIFN0ZGxpYi5yZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5cbigqIFJlc2h1ZmZsZSBbU3RkbGliXSBzbyB0aGF0IHdlIGNob29zZSB0aGUgbW9kdWxlcyB1c2luZyBsYWJlbHMgd2hlbiBhdmFpbGFibGUuICopXG5tb2R1bGUgU3RkbGliID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliXG4gIGluY2x1ZGUgU3RkbGliLlN0ZExhYmVsc1xuICBpbmNsdWRlIFN0ZGxpYi5Nb3JlTGFiZWxzXG5lbmRcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCgnYSAtPiAnYilbQGxvY2FsX29wdF0pIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuZXh0ZXJuYWwgKCAmJiApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgbm90IDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuKCogV2UgdXNlIFtPYmoubWFnaWNdIGhlcmUgYXMgb3RoZXIgaW1wbGVtZW50YXRpb25zIGdlbmVyYXRlIGEgY29uZGl0aW9uYWwganVtcCBhbmQgdGhlXG4gICBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGlzIG5vdGljZWFibGUuICopXG5sZXQgYm9vbF90b19pbnQgKHggOiBib29sKSA6IGludCA9IFN0ZGxpYi5PYmoubWFnaWMgeFxuXG4oKiBUaGlzIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5ICopXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgKCAhPSApID0gU3RkbGliLiggIT0gKVxubGV0ICggKiApID0gU3RkbGliLiggKiApXG5sZXQgKCAqKiApID0gU3RkbGliLiggKiogKVxubGV0ICggKi4gKSA9IFN0ZGxpYi4oICouIClcbmxldCAoICsgKSA9IFN0ZGxpYi4oICsgKVxubGV0ICggKy4gKSA9IFN0ZGxpYi4oICsuIClcbmxldCAoIC0gKSA9IFN0ZGxpYi4oIC0gKVxubGV0ICggLS4gKSA9IFN0ZGxpYi4oIC0uIClcbmxldCAoIC8gKSA9IFN0ZGxpYi4oIC8gKVxubGV0ICggLy4gKSA9IFN0ZGxpYi4oIC8uIClcblxubW9kdWxlIFBvbHkgPSBQb2x5MCAoKiogQGNhbm9uaWNhbCBCYXNlLlBvbHkgKilcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgKCogRGVjbGFyZWQgYXMgZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX2FwcGx5X1ggd3JhcHBpbmcgZXZlbiB3aGVuXG4gICAgIGNvbXBpbGluZyB3aXRob3V0IGNyb3NzIGxpYnJhcnkgaW5saW5pbmcuICopXG4gIGV4dGVybmFsICggPSApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuICBleHRlcm5hbCAoID49ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbiAgZXh0ZXJuYWwgY29tcGFyZSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPCApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmVcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGludFxuICAgID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuSW50NjQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBib29sKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBib29sKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBib29sKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBib29sKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJvb2wpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBib29sKSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogY2hhcikgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogY2hhcikgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogY2hhcikgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBjaGFyKSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogY2hhcikgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCBpIHggPSBTdGRsaWIuVWNoYXIudG9faW50IHhcbiAgbGV0ICggPCApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIChpIHgpIChpIHkpXG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIChpIHgpIChpIHkpXG4gIGxldCAoIDw+ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PiApIChpIHgpIChpIHkpXG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPj0gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgKGkgeCkgKGkgeSlcblxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuYXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5kZXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSAoaSB4KSAoaSB5KVxuICBsZXQgZXF1YWwgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgKGkgeCkgKGkgeSlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBmbG9hdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBmbG9hdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogZmxvYXQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogZmxvYXQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBmbG9hdCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHN0cmluZykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHN0cmluZykgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IHN0cmluZykgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGJ5dGVzKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGJ5dGVzKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBieXRlcykgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBieXRlcykgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGJ5dGVzKSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbigqIFRoaXMgbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gc3BlY2lhbGl6ZSBpdCBhcyBhXG4gICBkaXJlY3Qgc2V0IG9yIGNhbWxfbW9kaWZ5ICopXG5leHRlcm5hbCAoIDo9ICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgd29uJ3QgdW5ib3hcbiAgIHJlZmVyZW5jZXMgKilcbmV4dGVybmFsICggISApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gKCdhIHJlZltAbG9jYWxfb3B0XSkgPSBcIiVtYWtlbXV0YWJsZVwiXG5cbmxldCAoIEAgKSA9IFN0ZGxpYi4oIEAgKVxubGV0ICggXiApID0gU3RkbGliLiggXiApXG5sZXQgKCB+LSApID0gU3RkbGliLiggfi0gKVxubGV0ICggfi0uICkgPSBTdGRsaWIuKCB+LS4gKVxubGV0ICggYXNyICkgPSBTdGRsaWIuKCBhc3IgKVxubGV0ICggbGFuZCApID0gU3RkbGliLiggbGFuZCApXG5sZXQgbG5vdCA9IFN0ZGxpYi5sbm90XG5sZXQgKCBsb3IgKSA9IFN0ZGxpYi4oIGxvciApXG5sZXQgKCBsc2wgKSA9IFN0ZGxpYi4oIGxzbCApXG5sZXQgKCBsc3IgKSA9IFN0ZGxpYi4oIGxzciApXG5sZXQgKCBseG9yICkgPSBTdGRsaWIuKCBseG9yIClcbmxldCAoIG1vZCApID0gU3RkbGliLiggbW9kIClcbmxldCBhYnMgPSBTdGRsaWIuYWJzXG5sZXQgZmFpbHdpdGggPSBTdGRsaWIuZmFpbHdpdGhcbmxldCBmc3QgPSBTdGRsaWIuZnN0XG5sZXQgaW52YWxpZF9hcmcgPSBTdGRsaWIuaW52YWxpZF9hcmdcbmxldCBzbmQgPSBTdGRsaWIuc25kXG5cbigqIFtyYWlzZV0gbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBhcyB0aGUgY29tcGlsZXIgYXV0b21hdGljYWxseSByZXBsYWNlc1xuICAgJyVyYWlzZScgYnkgJyVyZXJhaXNlJyB3aGVuIGFwcHJvcHJpYXRlLiAqKVxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxubGV0IHBoeXNfZXF1YWwgPSBTdGRsaWIuKCA9PSApXG5cbmV4dGVybmFsIGRlY3IgOiAoaW50IHJlZltAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWRlY3JcIlxuZXh0ZXJuYWwgaW5jciA6IChpbnQgcmVmW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaW5jclwiXG5cbigqIHVzZWQgYnkgc2V4cF9jb252LCB3aGljaCBmbG9hdDAgZGVwZW5kcyBvbiB0aHJvdWdoIG9wdGlvbiAqKVxubGV0IGZsb2F0X29mX3N0cmluZyA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdcblxuKCogW2FtX3Rlc3RpbmddIGlzIHVzZWQgaW4gYSBmZXcgcGxhY2VzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIGluIHRlc3RpbmcgbW9kZSwgc3VjaFxuICAgYXMgaW4gW3JhbmRvbS5tbF0uICBbYW1fdGVzdGluZ10gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW0Jhc2VfYW1fdGVzdGluZ10sIGEgd2VhayBDL2pzXG4gICBwcmltaXRpdmUgdGhhdCByZXR1cm5zIFtmYWxzZV0sIGJ1dCB3aGVuIGxpbmtpbmcgYW4gaW5saW5lLXRlc3QtcnVubmVyIGV4ZWN1dGFibGUsIGlzXG4gICBvdmVycmlkZGVuIGJ5IGFub3RoZXIgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbdHJ1ZV0uICopXG5leHRlcm5hbCBhbV90ZXN0aW5nIDogdW5pdCAtPiBib29sID0gXCJCYXNlX2FtX3Rlc3RpbmdcIlxuXG5sZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmcgKClcbiIsIigqIFtJbnQwXSBkZWZpbmVzIGludGVnZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbU3RkbGliXS4gW0ludDBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGVcbiAgIHBhcnQgb2YgW1N0ZGxpYl0gdGhhdCBbQmFzZV0gdXNlcyBmb3IgaW50ZWdlcnMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGludDAubWwgc2hvdWxkIHVzZSB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgdGhyb3VnaCBbU3RkbGliXS4gW0ludDBdIGhhc1xuICAgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgaW50cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuSW50XSBpbiBidWlsZFxuICAgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgSW50ICA9IEludDBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgSW50ID0gSW50MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcFxuICAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5JbnRdLiAqKVxuXG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9pbnRcbmxldCBvZl9zdHJpbmcgPSBTdGRsaWIuaW50X29mX3N0cmluZ1xubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuaW50X29mX3N0cmluZ19vcHRcbmxldCB0b19mbG9hdCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdCA9IFN0ZGxpYi5pbnRfb2ZfZmxvYXRcbmxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IFN0ZGxpYi5taW5faW50XG5sZXQgc3VjYyA9IFN0ZGxpYi5zdWNjXG5sZXQgcHJlZCA9IFN0ZGxpYi5wcmVkXG4iLCJvcGVuISBJbXBvcnQwXG5pbmNsdWRlIFN0ZGxpYi5QcmludGZcblxuKCoqIGZhaWx3aXRoLCBpbnZhbGlkX2FyZywgYW5kIGV4aXQgYWNjZXB0aW5nIHByaW50ZidzIGZvcm1hdC4gKilcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGZhaWx3aXRoZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gZmFpbHdpdGggcykgZm10XG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9hcmdmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAoKSAtPiBpbnZhbGlkX2FyZyBzKSBmbXRcbiIsIigqIFtTeXMwXSBkZWZpbmVzIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW1N0ZGxpYi5TeXNdLiAgW1N5czBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZlxuICAgW1N0ZGxpYi5TeXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3lzLm1sXG4gICBzaG91bGQgdXNlIFtTdGRsaWIuU3lzXS4gW1N5czBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlXG4gICBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHRoZXNlXG4gICBmdW5jdGlvbnMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN5c10gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIFN5cyA9IFN5czBdLiAgRGVmaW5pbmcgW21vZHVsZSBTeXMgPSBTeXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlXG4gICBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN5c10uICopXG5cbm9wZW4hIEltcG9ydDBcblxudHlwZSBiYWNrZW5kX3R5cGUgPSBTdGRsaWIuU3lzLmJhY2tlbmRfdHlwZSA9XG4gIHwgTmF0aXZlXG4gIHwgQnl0ZWNvZGVcbiAgfCBPdGhlciBvZiBzdHJpbmdcblxubGV0IGJhY2tlbmRfdHlwZSA9IFN0ZGxpYi5TeXMuYmFja2VuZF90eXBlXG5sZXQgaW50ZXJhY3RpdmUgPSBTdGRsaWIuU3lzLmludGVyYWN0aXZlXG5sZXQgb3NfdHlwZSA9IFN0ZGxpYi5TeXMub3NfdHlwZVxubGV0IHVuaXggPSBTdGRsaWIuU3lzLnVuaXhcbmxldCB3aW4zMiA9IFN0ZGxpYi5TeXMud2luMzJcbmxldCBjeWd3aW4gPSBTdGRsaWIuU3lzLmN5Z3dpblxubGV0IHdvcmRfc2l6ZV9pbl9iaXRzID0gU3RkbGliLlN5cy53b3JkX3NpemVcbmxldCBpbnRfc2l6ZV9pbl9iaXRzID0gU3RkbGliLlN5cy5pbnRfc2l6ZVxubGV0IGJpZ19lbmRpYW4gPSBTdGRsaWIuU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfc3RyaW5nX2xlbmd0aCA9IFN0ZGxpYi5TeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gU3RkbGliLlN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5sZXQgcnVudGltZV92YXJpYW50ID0gU3RkbGliLlN5cy5ydW50aW1lX3ZhcmlhbnRcbmxldCBydW50aW1lX3BhcmFtZXRlcnMgPSBTdGRsaWIuU3lzLnJ1bnRpbWVfcGFyYW1ldGVyc1xubGV0IGFyZ3YgPSBTdGRsaWIuU3lzLmFyZ3ZcbmxldCBnZXRfYXJndiAoKSA9IFN0ZGxpYi5TeXMuYXJndlxubGV0IG9jYW1sX3ZlcnNpb24gPSBTdGRsaWIuU3lzLm9jYW1sX3ZlcnNpb25cbmxldCBlbmFibGVfcnVudGltZV93YXJuaW5ncyA9IFN0ZGxpYi5TeXMuZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcbmxldCBydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgPSBTdGRsaWIuU3lzLnJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuXG5sZXQgZ2V0ZW52X2V4biB2YXIgPVxuICB0cnkgU3RkbGliLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCBTdGRsaWIuTm90X2ZvdW5kIC0+XG4gICAgUHJpbnRmLmZhaWx3aXRoZiBcIlN5cy5nZXRlbnZfZXhuOiBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBpcyBub3Qgc2V0XCIgdmFyICgpXG47O1xuXG5sZXQgZ2V0ZW52IHZhciA9XG4gIG1hdGNoIFN0ZGxpYi5TeXMuZ2V0ZW52IHZhciB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5leHRlcm5hbCBvcGFxdWVfaWRlbnRpdHkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVvcGFxdWVcIlxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5X2dsb2JhbCA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxuZXhjZXB0aW9uIEJyZWFrID0gU3RkbGliLlN5cy5CcmVha1xuIiwiKCogW0FycmF5MF0gZGVmaW5lcyBhcnJheSBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXNcbiAgIG9mIFtTdGRsaWIuQXJyYXldLiAgW0FycmF5MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuQXJyYXldXG4gICB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGFycmF5MC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQXJyYXldLlxuICAgW0FycmF5MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgYXJyYXlzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5BcnJheV0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkXG4gICBkbyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXS4gIFRoaXMgaW5jbHVkZXMgdXNlcyBvZiBzdWJzY3JpcHQgc3ludGF4IChbeC4oaSldLCBbeC4oaSkgPC1cbiAgIGVdKSwgd2hpY2ggdGhlIE9DYW1sIHBhcnNlciBkZXN1Z2FycyBpbnRvIGNhbGxzIHRvIFtBcnJheS5nZXRdIGFuZCBbQXJyYXkuc2V0XS5cbiAgIERlZmluaW5nIFttb2R1bGUgQXJyYXkgPSBBcnJheTBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbVxuICAgbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQXJyYXldLiAqKVxuXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlX2xvY2FsIDogaW50IC0+ICdhIC0+ICgnYSBhcnJheVtAbG9jYWxdKSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuICBleHRlcm5hbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuICBleHRlcm5hbCBnZXQgOiAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogICgnYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgOiAgKCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgIDogIHNyYzooJ2EgYXJyYXlbQGxvY2FsX29wdF0pXG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6KCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGRzdF9wb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmVuZFxuXG5pbmNsdWRlIEFycmF5XG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICB0cnkgY3JlYXRlIGxlbiB4IHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpXG47O1xuXG5sZXQgY3JlYXRlX2xvY2FsIH5sZW4geCA9XG4gIFxuICAgICh0cnkgY3JlYXRlX2xvY2FsIGxlbiB4IHdpdGhcbiAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfbG9jYWwgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKCkpXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgfmxlbiA9XG4gIHRyeSBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCBsZW4gd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgIGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpXG47O1xuXG5sZXQgYXBwZW5kID0gU3RkbGliLkFycmF5LmFwcGVuZFxubGV0IGJsaXQgPSBTdGRsaWIuQXJyYXkuYmxpdFxubGV0IGNvbmNhdCA9IFN0ZGxpYi5BcnJheS5jb25jYXRcbmxldCBjb3B5ID0gU3RkbGliLkFycmF5LmNvcHlcbmxldCBmaWxsID0gU3RkbGliLkFycmF5LmZpbGxcblxubGV0IGluaXQgbGVuIH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IGNyZWF0ZSB+bGVuIChmIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIEludDAucHJlZCBsZW4gZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHJlcylcbjs7XG5cbmxldCBtYWtlX21hdHJpeCA9IFN0ZGxpYi5BcnJheS5tYWtlX21hdHJpeFxubGV0IG9mX2xpc3QgPSBTdGRsaWIuQXJyYXkub2ZfbGlzdFxubGV0IHN1YiA9IFN0ZGxpYi5BcnJheS5zdWJcbmxldCB0b19saXN0ID0gU3RkbGliLkFycmF5LnRvX2xpc3RcblxubGV0IGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBmb2xkX3JpZ2h0IHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+aW5pdCA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSBsZW5ndGggdCAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgdCBpKSAhclxuICBkb25lO1xuICAhclxuOztcblxubGV0IGl0ZXIgdCB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuXG5sZXQgbWFwIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgfmxlbiAoZiAodW5zYWZlX2dldCB0IDApKSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBtYXBpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSB+bGVuIChmIDAgKHVuc2FmZV9nZXQgdCAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBzdGFibGVfc29ydCB0IH5jb21wYXJlID0gU3RkbGliLkFycmF5LnN0YWJsZV9zb3J0IHQgfmNtcDpjb21wYXJlXG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGVsdF9pID0gdC4oaSkgaW5cbiAgbGV0IGVsdF9qID0gdC4oaikgaW5cbiAgdW5zYWZlX3NldCB0IGkgZWx0X2o7XG4gIHVuc2FmZV9zZXQgdCBqIGVsdF9pXG47O1xuIiwiKCogW0NoYXIwXSBkZWZpbmVzIGNoYXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbU3RkbGliLkNoYXJdLiAgW0NoYXIwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW1N0ZGxpYi5DaGFyXSB0aGF0XG4gICBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBjaGFyMC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQ2hhcl0uXG4gICBbQ2hhcjBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGNoYXJzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5DaGFyXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgQ2hhciA9IENoYXIwXS4gIERlZmluaW5nIFttb2R1bGUgQ2hhciA9IENoYXIwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkNoYXJdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5sZXQgZXNjYXBlZCA9IFN0ZGxpYi5DaGFyLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBTdGRsaWIuQ2hhci5sb3dlcmNhc2VfYXNjaWlcbmxldCB0b19pbnQgPSBTdGRsaWIuQ2hhci5jb2RlXG5sZXQgdW5zYWZlX29mX2ludCA9IFN0ZGxpYi5DaGFyLnVuc2FmZV9jaHJcbmxldCB1cHBlcmNhc2UgPSBTdGRsaWIuQ2hhci51cHBlcmNhc2VfYXNjaWlcblxuKCogV2UgdXNlIG91ciBvd24gcmFuZ2UgdGVzdCB3aGVuIGNvbnZlcnRpbmcgaW50ZWdlcnMgdG8gY2hhcnMgcmF0aGVyIHRoYW5cbiAgIGNhbGxpbmcgW1N0ZGxpYi5DaGFyLmNocl0gYmVjYXVzZSBpdCdzIHNpbXBsZSBhbmQgaXQgc2F2ZXMgdXMgYSBmdW5jdGlvbiBjYWxsXG4gICBhbmQgdGhlIHRyeS13aXRoIChleGNlcHRpb25zIGNvc3QsIGVzcGVjaWFsbHkgaW4gdGhlIHdvcmxkIHdpdGggYmFja3RyYWNlcykuICopXG5sZXQgaW50X2lzX29rIGkgPSAwIDw9IGkgJiYgaSA8PSAyNTVcbmxldCBtaW5fdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDBcbmxldCBtYXhfdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDI1NVxubGV0IG9mX2ludCBpID0gaWYgaW50X2lzX29rIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2ZfaW50X2V4biBpID1cbiAgaWYgaW50X2lzX29rIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLm9mX2ludF9leG4gZ290IGludGVnZXIgb3V0IG9mIHJhbmdlOiAlZFwiIGkgKClcbjs7XG5cbmxldCBlcXVhbCAodDEgOiBjaGFyKSB0MiA9IFBvbHkuZXF1YWwgdDEgdDJcbiIsIigqIFtMaXN0MF0gZGVmaW5lcyBsaXN0IGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW1N0ZGxpYi5MaXN0XS4gIFtMaXN0MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuTGlzdF0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gbGlzdDAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkxpc3RdLlxuICAgW0xpc3QwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBsaXN0cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuTGlzdF0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIExpc3QgPSBMaXN0MF0uICBEZWZpbmluZyBbbW9kdWxlIExpc3QgPSBMaXN0MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5MaXN0XS4gKilcblxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBoZF9leG4gPSBTdGRsaWIuTGlzdC5oZFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MaXN0Lmxlbmd0aFxubGV0IHJldl9hcHBlbmQgPSBTdGRsaWIuTGlzdC5yZXZfYXBwZW5kXG5sZXQgdGxfZXhuID0gU3RkbGliLkxpc3QudGxcbmxldCB1bnppcCA9IFN0ZGxpYi5MaXN0LnNwbGl0XG5cbigqIFNvbWUgb2YgdGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5cbmxldCByZWMgZXhpc3RzIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCB4IDo6IHhzIC0+IGlmIGYgeCB0aGVuIHRydWUgZWxzZSBleGlzdHMgeHMgfmZcbjs7XG5cbmxldCByZWMgZXhpc3RzMl9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gZmFsc2VcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT4gZiBhMSBhMiB8fCBleGlzdHMyX29rIGwxIGwyIH5mXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG47O1xuXG5sZXQgcmVjIGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gaW5pdFxuICB8IGEgOjogbCAtPiBmb2xkIGwgfmluaXQ6KGYgaW5pdCBhKSB+ZlxuOztcblxubGV0IHJlYyBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiBpbml0XG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IGZvbGQyX29rIGwxIGwyIH5mIH5pbml0OihmIGluaXQgYTEgYTIpXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mOihmIFtAbG9jYWxdKSA9IG5vdCAoZXhpc3RzIHQgfmY6KGZ1biB4IC0+IG5vdCAoZiB4KSkpXG5cbmxldCByZWMgZm9yX2FsbDJfb2sgbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT4gZiBhMSBhMiAmJiBmb3JfYWxsMl9vayBsMSBsMiB+ZlxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcbjs7XG5cbmxldCByZWMgaXRlciB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBhIDo6IGwgLT5cbiAgICBmIGE7XG4gICAgaXRlciBsIH5mXG47O1xuXG5sZXQgcmVjIGl0ZXIyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiB1bml0KSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAoKVxuICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPlxuICAgIGYgYTEgYTI7XG4gICAgaXRlcjJfb2sgbDEgbDIgfmZcbiAgfCBfLCBfIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG47O1xuXG5sZXQgcmVjIG5vbnRhaWxfbWFwIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+XG4gICAgbGV0IHkgPSBmIHggaW5cbiAgICB5IDo6IG5vbnRhaWxfbWFwIHhzIH5mXG47O1xuXG5sZXQgbm9udGFpbF9tYXBpIHQgfmYgPSBTdGRsaWIuTGlzdC5tYXBpIHQgfmZcbmxldCBwYXJ0aXRpb24gdCB+ZiA9IFN0ZGxpYi5MaXN0LnBhcnRpdGlvbiB0IH5mXG5cbmxldCByZXZfbWFwID1cbiAgbGV0IHJlYyBybWFwX2YgZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGEgOjogbCAtPiBybWFwX2YgZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgZnVuIGwgfmY6KGYgW0Bsb2NhbF0pIC0+IHJtYXBfZiBmIFtdIGxcbjs7XG5cbmxldCByZXZfbWFwMl9vayA9XG4gIGxldCByZWMgcm1hcDJfZiBmIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT4gYWNjdVxuICAgIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IHJtYXAyX2YgZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBmdW4gbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSAtPiBybWFwMl9mIGYgW10gbDEgbDJcbjs7XG5cbmxldCBzb3J0IGwgfmNvbXBhcmUgPSBTdGRsaWIuTGlzdC5zb3J0IGwgfmNtcDpjb21wYXJlXG5sZXQgc3RhYmxlX3NvcnQgbCB+Y29tcGFyZSA9IFN0ZGxpYi5MaXN0LnN0YWJsZV9zb3J0IGwgfmNtcDpjb21wYXJlXG5cbmxldCByZXYgPSBmdW5jdGlvblxuICB8IChbXSB8IFsgXyBdKSBhcyByZXMgLT4gcmVzXG4gIHwgeCA6OiB5IDo6IHJlc3QgLT4gcmV2X2FwcGVuZCByZXN0IFsgeTsgeCBdXG47O1xuXG5sZXQgZm9sZF9yaWdodCBsIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmluaXQgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfIC0+IGZvbGQgfmY6KGZ1biBhIGIgLT4gZiBiIGEpIH5pbml0IChyZXYgbCkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfcmlnaHQyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+aW5pdCA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IGluaXQgKCogYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgW35mXSBiZWxvdyAqKVxuICB8IF8sIF8gLT4gZm9sZDJfb2sgfmY6KGZ1biBhIGIgYyAtPiBmIGIgYyBhKSB+aW5pdCAocmV2IGwxKSAocmV2IGwyKSBbQG5vbnRhaWxdXG47O1xuIiwiKCpcbiAgIFRoaXMgaXMgdGhlIGludGVyZmFjZSB0byB0aGUgcnVudGltZSBzdXBwb3J0IGZvciBbcHB4X2hhc2hdLlxuXG4gICBUaGUgW3BweF9oYXNoXSBzeW50YXggZXh0ZW5zaW9uIHN1cHBvcnRzOiBbQEBkZXJpdmluZyBoYXNoXSBhbmQgWyVoYXNoX2ZvbGQ6IFRZUEVdIGFuZFxuICAgWyVoYXNoOiBUWVBFXVxuXG4gICBGb3IgdHlwZSBbdF0gYSBmdW5jdGlvbiBbaGFzaF9mb2xkX3RdIG9mIHR5cGUgW0hhc2guc3RhdGUgLT4gdCAtPiBIYXNoLnN0YXRlXSBpc1xuICAgZ2VuZXJhdGVkLlxuXG4gICBUaGUgZ2VuZXJhdGVkIFtoYXNoX2ZvbGRfPFQ+XSBmdW5jdGlvbiBpcyBjb21wb3NpdGlvbmFsLCBmb2xsb3dpbmcgdGhlIHN0cnVjdHVyZSBvZiB0aGVcbiAgIHR5cGU7IGFsbG93aW5nIHVzZXIgb3ZlcnJpZGVzIGF0IGV2ZXJ5IGxldmVsLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIG9jYW1sJ3MgYnVpbHRpblxuICAgcG9seW1vcnBoaWMgaGFzaGluZyBbSGFzaHRibC5oYXNoXSB3aGljaCBpZ25vcmVzIHVzZXIgb3ZlcnJpZGVzLlxuXG4gICBUaGUgZ2VuZXJhdG9yIGFsc28gcHJvdmlkZXMgYSBkaXJlY3QgaGFzaC1mdW5jdGlvbiBbaGFzaF0gKG5hbWVkIFtoYXNoXzxUPl0gd2hlbiA8VD4gIT1cbiAgIFwidFwiKSBvZiB0eXBlOiBbdCAtPiBIYXNoLmhhc2hfdmFsdWVdLlxuXG4gICBUaGUgZm9sZGluZyBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2hfZm9sZDogVFlQRV1cbiAgIFRoZSBkaXJlY3QgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoOiBUWVBFXVxuKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBIYXNoX2ludGZcblxuKCoqIEJ1aWx0aW4gZm9sZGluZy1zdHlsZSBoYXNoIGZ1bmN0aW9ucywgYWJzdHJhY3RlZCBvdmVyIFtIYXNoX2ludGYuU10gKilcbm1vZHVsZSBGb2xkaW5nIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkJ1aWx0aW5faW50ZlxuICB3aXRoIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGhhc2hfZm9sZF91bml0IHMgKCkgPSBzXG4gIGxldCBoYXNoX2ZvbGRfaW50ID0gSGFzaC5mb2xkX2ludFxuICBsZXQgaGFzaF9mb2xkX2ludDY0ID0gSGFzaC5mb2xkX2ludDY0XG4gIGxldCBoYXNoX2ZvbGRfZmxvYXQgPSBIYXNoLmZvbGRfZmxvYXRcbiAgbGV0IGhhc2hfZm9sZF9zdHJpbmcgPSBIYXNoLmZvbGRfc3RyaW5nXG4gIGxldCBhc19pbnQgZiBzIHggPSBoYXNoX2ZvbGRfaW50IHMgKGYgeClcblxuICAoKiBUaGlzIGlnbm9yZXMgdGhlIHNpZ24gYml0IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyB1bmxpa2VseSB0byBsZWFkIHRvXG4gICAgIGZyZXF1ZW50IGNvbGxpc2lvbnMgKG1pbl92YWx1ZSBjb2xsaWRpbmcgd2l0aCAwIGlzIHRoZSBtb3N0IGxpa2VseSBvbmUpLiAgKilcbiAgbGV0IGhhc2hfZm9sZF9pbnQzMiA9IGFzX2ludCBTdGRsaWIuSW50MzIudG9faW50XG4gIGxldCBoYXNoX2ZvbGRfY2hhciA9IGFzX2ludCBDaGFyLnRvX2ludFxuXG4gIGxldCBoYXNoX2ZvbGRfYm9vbCA9XG4gICAgYXNfaW50IChmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IDFcbiAgICAgIHwgZmFsc2UgLT4gMClcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX25hdGl2ZWludCBzIHggPSBoYXNoX2ZvbGRfaW50NjQgcyAoU3RkbGliLkludDY0Lm9mX25hdGl2ZWludCB4KVxuXG4gIGxldCBoYXNoX2ZvbGRfb3B0aW9uIGhhc2hfZm9sZF9lbGVtIHMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBoYXNoX2ZvbGRfaW50IHMgMFxuICAgIHwgU29tZSB4IC0+IGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfaW50IHMgMSkgeFxuICA7O1xuXG4gIGxldCByZWMgaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gc1xuICAgIHwgeCA6OiB4cyAtPiBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfZWxlbSBzIHgpIHhzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCA9XG4gICAgKCogVGhlIFtsZW5ndGhdIG9mIHRoZSBsaXN0IG11c3QgYmUgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGhhc2gtc3RhdGUgc28gdmFsdWVzIG9mXG4gICAgICAgdHlwZXMgc3VjaCBhcyBbdW5pdCBsaXN0XSAtIChbXSwgWygpXSwgWygpOygpXSwuLikgYXJlIGhhc2hlZCBkaWZmZXJlbnRseS4gKilcbiAgICAoKiBUaGUgW2xlbmd0aF0gbXVzdCBjb21lIGJlZm9yZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgYSB2aW9sYXRpb24gb2YgdGhlIHJ1bGVcbiAgICAgICBlbmZvcmNlZCBieSBQZXJmZWN0X2hhc2guICopXG4gICAgbGV0IHMgPSBoYXNoX2ZvbGRfaW50IHMgKExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgbGV0IHMgPSBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCBpblxuICAgIHNcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2xhenlfdCBoYXNoX2ZvbGRfZWxlbSBzIHggPSBoYXNoX2ZvbGRfZWxlbSBzIChTdGRsaWIuTGF6eS5mb3JjZSB4KVxuICBsZXQgaGFzaF9mb2xkX3JlZl9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAheFxuXG4gIGxldCByZWMgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgaSA9XG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBhcnJheVxuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IGUgPSBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkgaW5cbiAgICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyBlKSBhcnJheSAoaSArIDEpKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgPVxuICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faVxuICAgICAgKCogW2xlbmd0aF0gbXVzdCBiZSBpbmNvcnBvcmF0ZWQgZm9yIGFycmF5cywgYXMgaXQgaXMgZm9yIGxpc3RzLiBTZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgaGFzaF9mb2xkX2VsZW1cbiAgICAgIChoYXNoX2ZvbGRfaW50IHMgKEFycmF5Lmxlbmd0aCBhcnJheSkpXG4gICAgICBhcnJheVxuICAgICAgMFxuICA7O1xuXG4gICgqIHRoZSBkdXBsaWNhdGlvbiBoZXJlIGlzIGJlY2F1c2Ugd2UgdGhpbmtcbiAgICAgb2NhbWwgY2FuJ3QgZWxpbWluYXRlIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIG90aGVyd2lzZS4gKilcbiAgbGV0IGhhc2hfbmF0aXZlaW50IHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9uYXRpdmVpbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2ludDY0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50NjQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQzMiB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDMyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfY2hhciB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2NoYXIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9ib29sIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfYm9vbCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5cbiAgbGV0IGhhc2hfc3RyaW5nIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9zdHJpbmcgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2Zsb2F0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfZmxvYXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF91bml0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdW5pdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5lbmRcblxubW9kdWxlIEYgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuRnVsbFxuICB3aXRoIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICAgYW5kIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBzZWVkID0gSGFzaC5zZWVkID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBGb2xkaW5nIChIYXNoKVxuXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAoSGFzaC5yZXNldCA/c2VlZCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsaGFzaCA6IHNpZ1xuICBpbmNsdWRlXG4gICAgSGFzaF9pbnRmLlNcbiAgICB3aXRoIHR5cGUgc3RhdGUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zdGF0ZVxuICAgICAoKiBXZSBnaXZlIGEgY29uY3JldGUgdHlwZSBmb3IgW3N0YXRlXSwgYWxiZWl0IG9ubHkgcGFydGlhbGx5IGV4cG9zZWQgKHNlZVxuICAgICAgICBCYXNlX2ludGVybmFsaGFzaF90eXBlcyksIHNvIHRoYXQgaXQgdW5pZmllcyB3aXRoIHRoZSBzYW1lIHR5cGUgaW4gW0Jhc2VfYm9vdF0sXG4gICAgICAgIGFuZCB0byBhbGxvdyBvcHRpbWl6YXRpb25zIGZvciB0aGUgaW1tZWRpYXRlIHR5cGUuICopXG4gICAgIGFuZCB0eXBlIHNlZWQgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zZWVkXG4gICAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5oYXNoX3ZhbHVlXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQ2NCA6IHN0YXRlIC0+IGludDY0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2ludCA6IHN0YXRlIC0+IGludCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfZmxvYXQgOiBzdGF0ZSAtPiBmbG9hdCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9zdHJpbmcgOiBzdGF0ZSAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBnZXRfaGFzaF92YWx1ZSA6IHN0YXRlIC0+IGhhc2hfdmFsdWUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXCJcbiAgW0BAbm9hbGxvY11cbmVuZCA9IHN0cnVjdFxuICBsZXQgZGVzY3JpcHRpb24gPSBcImludGVybmFsaGFzaFwiXG5cbiAgaW5jbHVkZSBCYXNlX2ludGVybmFsaGFzaF90eXBlc1xuXG4gIGxldCBhbGxvYyAoKSA9IGNyZWF0ZV9zZWVkZWQgMFxuICBsZXQgcmVzZXQgPyhzZWVkID0gMCkgX3QgPSBjcmVhdGVfc2VlZGVkIHNlZWRcblxuICBtb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gICAgbGV0IGNvbXBhcmVfc3RhdGUgKGEgOiBzdGF0ZSkgKGIgOiBzdGF0ZSkgPSBjb21wYXJlIChhIDo+IGludCkgKGIgOj4gaW50KVxuICAgIGxldCBzdGF0ZV90b19zdHJpbmcgKHN0YXRlIDogc3RhdGUpID0gSW50LnRvX3N0cmluZyAoc3RhdGUgOj4gaW50KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEludGVybmFsaGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID0gZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAocmVzZXQgP3NlZWQgKGFsbG9jICgpKSkgeClcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gc3RydWN0XG4gICAgbW9kdWxlIEZvbGRpbmcgPSBGb2xkaW5nIChJbnRlcm5hbGhhc2gpXG4gICAgaW5jbHVkZSBGb2xkaW5nXG5cbiAgICAoKiBbRm9sZGluZ10gcHJvdmlkZXMgc29tZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIFtoYXNoXypdIGZ1bmN0aW9ucyBiZWxvdyxcbiAgICAgICBidXQgdGhleSBhcmUgaW5lZmZpY2llbnQgZm9yIHNvbWUgdXNlLWNhc2VzIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiB0aGUgW2hhc2hfZm9sZF1cbiAgICAgICBmdW5jdGlvbnMuIEF0IHRoaXMgcG9pbnQsIHRoZSBbaGFzaF92YWx1ZV0gdHlwZSBoYXMgYmVlbiBmaXhlZCB0byBbaW50XSwgc28gdGhpc1xuICAgICAgIG1vZHVsZSBjYW4gcHJvdmlkZSBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMuICopXG5cbiAgICBsZXQgaGFzaF9jaGFyID0gQ2hhcjAudG9faW50XG5cbiAgICAoKiBUaGlzIGhhc2ggd2FzIGNob3NlbiBmcm9tIGhlcmU6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2JhZGJveS82MjY3NzQzXG5cbiAgICAgICBJdCBhdHRlbXB0cyB0byBmdWxmaWxsIHRoZSBwcmltYXJ5IGdvYWxzIG9mIGEgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbjpcblxuICAgICAgIC0gYSBiaXQgY2hhbmdlIGluIHRoZSBpbnB1dCBzaG91bGQgY2hhbmdlIH4xLzIgb2YgdGhlIG91dHB1dCBiaXRzXG4gICAgICAgLSB0aGUgb3V0cHV0IHNob3VsZCBiZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBvdXRwdXQgcmFuZ2VcbiAgICAgICAtIGlucHV0cyB0aGF0IGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIHNob3VsZG4ndCBsZWFkIHRvIG91dHB1dHMgdGhhdCBhcmUgY2xvc2UgdG9cbiAgICAgICAgIGVhY2ggb3RoZXIuXG4gICAgICAgLSBhbGwgYml0cyBvZiB0aGUgaW5wdXQgYXJlIHVzZWQgaW4gZ2VuZXJhdGluZyB0aGUgb3V0cHV0XG5cbiAgICAgICBJbiBvdXIgY2FzZSB3ZSBhbHNvIHdhbnQgaXQgdG8gYmUgZmFzdCwgbm9uLWFsbG9jYXRpbmcsIGFuZCBpbmxpbmFibGUuICAqKVxuICAgIGxldFtAaW5saW5lIGFsd2F5c10gaGFzaF9pbnQgKHQgOiBpbnQpID1cbiAgICAgIGxldCB0ID0gbG5vdCB0ICsgKHQgbHNsIDIxKSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDMpICsgKHQgbHNsIDgpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMTQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMikgKyAodCBsc2wgNCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyOCkgaW5cbiAgICAgIHQgKyAodCBsc2wgMzEpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2Jvb2wgeCA9IGlmIHggdGhlbiAxIGVsc2UgMFxuXG4gICAgZXh0ZXJuYWwgaGFzaF9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiQmFzZV9oYXNoX2RvdWJsZVwiIFtAQG5vYWxsb2NdXG5cbiAgICBsZXQgaGFzaF91bml0ICgpID0gMFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcbiIsIm9wZW4gSW1wb3J0MFxuXG5sZXQgY29tcGFyZV9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJDb21wYXJlIGNhbGxlZCBvbiB0aGUgdHlwZSAlcywgd2hpY2ggaXMgYWJzdHJhY3QgaW4gYW4gaW1wbGVtZW50YXRpb24uXCJcbiAgICB0eXBlX25hbWVcbjs7XG5cbmxldCBlcXVhbF9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJFcXVhbCBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG50eXBlICdhIGNvbXBhcmUgPSAnYSAtPiAnYSAtPiBpbnRcbnR5cGUgJ2EgZXF1YWwgPSAnYSAtPiAnYSAtPiBib29sXG5cbm1vZHVsZSBDb21wYXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjb21wYXJlIDogdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2EgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAoJ2EsICdiKSB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAnYyBjb21wYXJlIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEVxdWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdhIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdiIGVxdWFsIC0+ICgnYSwgJ2IpIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAnYyBlcXVhbCAtPiAoJ2EsICdiLCAnYykgdCBlcXVhbFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICBsZXQgY29tcGFyZV9ib29sIDogYm9vbCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2NoYXIgOiBjaGFyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfZmxvYXQgOiBmbG9hdCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludCA6IGludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludDMyIDogaW50MzIgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQ2NCA6IGludDY0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50IDogbmF0aXZlaW50IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfc3RyaW5nIDogc3RyaW5nIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfdW5pdCA6IHVuaXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBjb21wYXJlX2FycmF5IGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgaWYgcGh5c19lcXVhbCBhIGJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgICAgaWYgcmV0IDw+IDBcbiAgICAgIHRoZW4gcmV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwgPSBBcnJheTAudW5zYWZlX2dldCBhIGlcbiAgICAgICAgICAgIGFuZCByID0gQXJyYXkwLnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCAwKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IFtdLCBfIC0+IC0xXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgeCB5IGluXG4gICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCB4cyB5c1xuICA7O1xuXG4gIGxldCBjb21wYXJlX29wdGlvbiBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgfCBOb25lLCBTb21lIF8gLT4gLTFcbiAgICB8IFNvbWUgXywgTm9uZSAtPiAxXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBjb21wYXJlX2VsdCBhIGJcbiAgOztcblxuICBsZXQgY29tcGFyZV9yZWYgY29tcGFyZV9lbHQgYSBiID0gY29tcGFyZV9lbHQgIWEgIWJcbiAgbGV0IGVxdWFsX2Jvb2wgOiBib29sIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfY2hhciA6IGNoYXIgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQgOiBpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQzMiA6IGludDMyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50NjQgOiBpbnQ2NCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA6IG5hdGl2ZWludCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3N0cmluZyA6IHN0cmluZyBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3VuaXQgOiB1bml0IGVxdWFsID0gUG9seS5lcXVhbFxuXG4gICgqIFtQb2x5LmVxdWFsXSBpcyBJRUVFIGNvbXBsaWFudCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudCBoZXJlLiAqKVxuICBsZXQgZXF1YWxfZmxvYXQgeCB5ID0gZXF1YWxfaW50IChjb21wYXJlX2Zsb2F0IHggeSkgMFxuXG4gIGxldCBlcXVhbF9hcnJheSBlcXVhbF9lbHQgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8XG4gICAgbGV0IGxlbl9hID0gQXJyYXkwLmxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgZXF1YWwgbGVuX2EgbGVuX2JcbiAgICAmJlxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGkgPSBsZW5fYVxuICAgICAgfHxcbiAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgZXF1YWxfZWx0IGwgciAmJiBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCByZWMgZXF1YWxfbGlzdCBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCBbXSwgXyB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IGVxdWFsX2VsdCB4IHkgJiYgZXF1YWxfbGlzdCBlcXVhbF9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIGVxdWFsX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGVxdWFsX2VsdCBhIGJcbiAgOztcblxuICBsZXQgZXF1YWxfcmVmIGVxdWFsX2VsdCBhIGIgPSBlcXVhbF9lbHQgIWEgIWJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIGZvciB1c2UgYnkgcHB4X2hhc2gsIGFuZCBpcyB0aHVzIG5vdCBpbiB0aGUgaW50ZXJmYWNlIG9mIEJhc2UuICopXG5tb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBIYXNoID0gSGFzaCAoKiogQGNhbm9uaWNhbCBCYXNlLkhhc2ggKilcbmVuZFxuXG50eXBlICdhIGhhc2hfZm9sZCA9IFN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFN0ZC5IYXNoLnN0YXRlXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiB0IGhhc2hfZm9sZFxuICAgIHZhbCBoYXNoIDogdCAtPiBTdGQuSGFzaC5oYXNoX3ZhbHVlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2EgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6ICdhIGhhc2hfZm9sZCAtPiAnYiBoYXNoX2ZvbGQgLT4gKCdhLCAnYikgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3RcbiAgICAgIDogICdhIGhhc2hfZm9sZFxuICAgICAgLT4gJ2IgaGFzaF9mb2xkXG4gICAgICAtPiAnYyBoYXNoX2ZvbGRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGhhc2hfZm9sZFxuICBlbmRcbmVuZFxuIiwib3BlbiBIYXNoLkJ1aWx0aW5cbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPSBTZXhwbGliMC5TZXhwLnQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG5sZXQgcmVjIGNvbXBhcmUgPVxuICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwMV8gYl9fMDAyX1xuICAgICB0aGVuIDBcbiAgICAgZWxzZSAoXG4gICAgICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgICAgfCBBdG9tIF9hX18wMDNfLCBBdG9tIF9iX18wMDRfIC0+IGNvbXBhcmVfc3RyaW5nIF9hX18wMDNfIF9iX18wMDRfXG4gICAgICAgfCBBdG9tIF8sIF8gLT4gLTFcbiAgICAgICB8IF8sIEF0b20gXyAtPiAxXG4gICAgICAgfCBMaXN0IF9hX18wMDVfLCBMaXN0IF9iX18wMDZfIC0+IGNvbXBhcmVfbGlzdCBjb21wYXJlIF9hX18wMDVfIF9iX18wMDZfKVxuICAgICAgIDogdCAtPiB0IC0+IGludClcbjs7XG5cbmxldCByZWMgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEF0b20gX2EwIC0+XG4gICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBfYTBcbiAgICAgfCBMaXN0IF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX2xpc3QgaGFzaF9mb2xkX3QgaHN2IF9hMFxuICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuXG5hbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfY29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5sZXQgb2Zfc3RyaW5nID0gKClcbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9XG4gIHwgVzMyXG4gIHwgVzY0XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgVzMyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlczMlwiXG4gICAgfCBXNjQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVzY0XCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IG51bV9iaXRzID0gZnVuY3Rpb25cbiAgfCBXMzIgLT4gMzJcbiAgfCBXNjQgLT4gNjRcbjs7XG5cbmxldCB3b3JkX3NpemUgPVxuICBtYXRjaCBTeXMud29yZF9zaXplX2luX2JpdHMgd2l0aFxuICB8IDMyIC0+IFczMlxuICB8IDY0IC0+IFc2NFxuICB8IF8gLT4gZmFpbHdpdGggXCJ1bmtub3duIHdvcmQgc2l6ZVwiXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbmxldCByID0gcmVmIFsgXCJCYXNlLlNleHAucHBfaHVtXCIgXVxubGV0IGFsbCAoKSA9ICFyXG5sZXQgcmVnaXN0ZXIgcCA9IHIgOj0gcCA6OiAhclxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBwcCA6IEZvcm1hdHRlci50IC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9wcCAoTSA6IHNpZ1xuICAgIGluY2x1ZGUgU1xuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIGxldCAoKSA9IHJlZ2lzdGVyIChNLm1vZHVsZV9uYW1lIF4gXCIucHBcIilcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXIgKE0gOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbiAgUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgbGV0IHBwIGZvcm1hdHRlciB0ID0gU3RkbGliLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm9ybWF0dGVyIChNLnRvX3N0cmluZyB0KVxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZXhuIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbltAQEBlbmRdXG5cbmxldCBleGl0ID0gU3RkbGliLmV4aXRcblxuZXhjZXB0aW9uIEZpbmFsbHkgb2YgdCAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGaW5hbGx5XSAoZnVuY3Rpb25cbiAgICB8IEZpbmFsbHkgKGFyZzBfXzAwMV8sIGFyZzFfXzAwMl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfXG4gICAgICBhbmQgcmVzMV9fMDA0XyA9IHNleHBfb2ZfdCBhcmcxX18wMDJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleG4ubWwuRmluYWxseVwiOyByZXMwX18wMDNfOyByZXMxX18wMDRfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFJlcmFpc2VkIG9mIHN0cmluZyAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBSZXJhaXNlZF0gKGZ1bmN0aW9uXG4gICAgfCBSZXJhaXNlZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgIGxldCByZXMwX18wMDdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA1X1xuICAgICAgYW5kIHJlczFfXzAwOF8gPSBzZXhwX29mX3QgYXJnMV9fMDA2XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLlJlcmFpc2VkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5leGNlcHRpb24gU2V4cCBvZiBTZXhwLnRcblxuKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZTpcblxuICAge1tcbiAgICAgZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuICAgICAoKiAuLi4gKilcbiAgICAgW0BAQGVuZF1cbiAgIF19XG5cbiAgIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmEgd3JhcHBpbmcgb2YgWyhTZXhwIC4uLildLiAqKVxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNleHBdIChmdW5jdGlvblxuICAgIHwgU2V4cCB0IC0+IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBTZXhwIHNleHBcblxubGV0IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIHQgYmFja3RyYWNlID1cbiAgU3RkbGliLlByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHQgYmFja3RyYWNlXG47O1xuXG5leHRlcm5hbCBpc19waHlzX2VxdWFsX21vc3RfcmVjZW50IDogdCAtPiBib29sID0gXCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4blwiXG5cbmxldCByZXJhaXNlIGV4biBzdHIgPVxuICBsZXQgZXhuJyA9IFJlcmFpc2VkIChzdHIsIGV4bikgaW5cbiAgaWYgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCBleG5cbiAgdGhlbiAoXG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuJyBidClcbiAgZWxzZSByYWlzZSBleG4nXG47O1xuXG5sZXQgcmVyYWlzZWYgZXhjIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIHN0ciAoKSAtPiByZXJhaXNlIGV4YyBzdHIpIGZvcm1hdFxubGV0IHRvX3N0cmluZyBleGMgPSBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIChzZXhwX29mX2V4biBleGMpXG5sZXQgdG9fc3RyaW5nX21hY2ggZXhjID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfZXhuXG5cbmxldCBwcm90ZWN0eCB+ZiB4IH4oZmluYWxseSA6IF8gLT4gdW5pdCkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHJlcyAtPlxuICAgIGZpbmFsbHkgeDtcbiAgICByZXNcbiAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKG1hdGNoIGZpbmFsbHkgeCB3aXRoXG4gICAgIHwgKCkgLT4gcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuIGJ0XG4gICAgIHwgZXhjZXB0aW9uIGZpbmFsX2V4biAtPlxuICAgICAgICgqIFVuZm9ydHVuYXRlbHksIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFtmaW5hbF9leG5dIGlzIGRpc2NhcmRlZCBoZXJlLiAqKVxuICAgICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChGaW5hbGx5IChleG4sIGZpbmFsX2V4bikpIGJ0KVxuOztcblxubGV0IHByb3RlY3QgfmYgfmZpbmFsbHkgPSBwcm90ZWN0eCB+ZiAoKSB+ZmluYWxseVxuXG5sZXQgZG9lc19yYWlzZSAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICB0cnlcbiAgICBpZ25vcmUgKGYgKCkgOiBhKTtcbiAgICBmYWxzZVxuICB3aXRoXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBleG5cblxuICAgIGxldCBwcCBwcGYgdCA9XG4gICAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgdCB3aXRoXG4gICAgICB8IFNvbWUgc2V4cCAtPiBTZXhwLnBwX2h1bSBwcGYgc2V4cFxuICAgICAgfCBOb25lIC0+IFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RkbGliLlByaW50ZXhjLnRvX3N0cmluZyB0KVxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRXhuXCJcbiAgZW5kKVxuXG5sZXQgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2UgPVxuICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCJAWzwyPlVuY2F1Z2h0IGV4Y2VwdGlvbjpAXFxuQFxcbkBbJWFAXUBdQFxcbkAuXCIgcHAgZXhjO1xuICBpZiBTdGRsaWIuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1cyAoKVxuICB0aGVuIFN0ZGxpYi5QcmludGV4Yy5wcmludF9yYXdfYmFja3RyYWNlIFN0ZGxpYi5zdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRlcnJcbjs7XG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKCkgPVxuICBTdGRsaWIuUHJpbnRleGMuc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIHByaW50X3dpdGhfYmFja3RyYWNlXG47O1xuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2F1eCB+ZG9fYXRfZXhpdCB+ZXhpdCBmID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4YyAtPlxuICAgIGxldCByYXdfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKCogT25lIHJlYXNvbiB0byBydW4gW2RvX2F0X2V4aXRdIGhhbmRsZXJzIGJlZm9yZSBwcmludGluZyBvdXQgdGhlIGVycm9yIG1lc3NhZ2UgaXNcbiAgICAgICB0aGF0IGl0IGhlbHBzIGN1cnNlcyBhcHBsaWNhdGlvbnMgYnJpbmcgdGhlIHRlcm1pbmFsIGluIGEgZ29vZCBzdGF0ZSwgb3RoZXJ3aXNlIHRoZVxuICAgICAgIGVycm9yIG1lc3NhZ2UgbWlnaHQgZ2V0IGNvcnJ1cHRlZC4gIEFsc28sIHRoZSBPQ2FtbCB0b3AtbGV2ZWwgdW5jYXVnaHQgZXhjZXB0aW9uXG4gICAgICAgaGFuZGxlciBkb2VzIHRoZSBzYW1lLiAqKVxuICAgIGlmIGRvX2F0X2V4aXRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICh0cnkgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5XG4gICAgICAgICAgU3RkbGliLlByaW50Zi5lcHJpbnRmIFwiRXhuLmhhbmRsZV91bmNhdWdodCBjb3VsZCBub3QgcHJpbnQ7IGV4aXRpbmcgYW55d2F5XFxuJSFcIlxuICAgICAgICB3aXRoXG4gICAgICAgIHwgXyAtPiAoKSkpO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID0gaGFuZGxlX3VuY2F1Z2h0X2F1eCBmIH5leGl0IH5kb19hdF9leGl0OnRydWVcblxubGV0IGhhbmRsZV91bmNhdWdodCB+ZXhpdDptdXN0X2V4aXQgZiA9XG4gIGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdDooaWYgbXVzdF9leGl0IHRoZW4gZXhpdCBlbHNlIGlnbm9yZSkgfmRvX2F0X2V4aXQ6bXVzdF9leGl0XG47O1xuXG5sZXQgcmVyYWlzZV91bmNhdWdodCBzdHIgZnVuYyA9XG4gIHRyeSBmdW5jICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICBsZXQgYnQgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoUmVyYWlzZWQgKHN0ciwgZXhuKSkgYnRcbjs7XG5cbmV4dGVybmFsIGNsZWFyX2JhY2t0cmFjZSA6IHVuaXQgLT4gdW5pdCA9IFwiQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3NcIiBbQEBub2FsbG9jXVxuXG5sZXQgcmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgZSA9XG4gICgqIFdlIGNsZWFyIHRoZSBiYWNrdHJhY2UgdG8gcmVkdWNlIGNvbmZ1c2lvbiwgc28gdGhhdCBwZW9wbGUgZG9uJ3QgdGhpbmsgd2hhdGV2ZXJcbiAgICAgaXMgc3RvcmVkIGNvcnJlc3BvbmRzIHRvIHRoaXMgcmFpc2UuICopXG4gIGNsZWFyX2JhY2t0cmFjZSAoKTtcbiAgU3RkbGliLnJhaXNlX25vdHJhY2UgZVxuOztcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBjbGVhcl9iYWNrdHJhY2UgPSBjbGVhcl9iYWNrdHJhY2VcbmVuZFxuIiwiKCogYmVsb25ncyBpbiBDb21tb24sIGJ1dCBtb3ZlZCBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSByZXR1cm4gPSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cbmxldCB3aXRoX3JldHVybiAodHlwZSBhKSBmID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgKCogUmFpc2VkIHRvIGluZGljYXRlIH5yZXR1cm4gd2FzIGNhbGxlZC4gIExvY2FsIHNvIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyB0aWVkIHRvIGFcbiAgICAgICBwYXJ0aWN1bGFyIGNhbGwgb2YgW3dpdGhfcmV0dXJuXS4gKilcbiAgICBleGNlcHRpb24gUmV0dXJuIG9mIGFcbiAgZW5kXG4gIGluXG4gIGxldCBpc19hbGl2ZSA9IHJlZiB0cnVlIGluXG4gIGxldCByZXR1cm4gYSA9XG4gICAgaWYgbm90ICFpc19hbGl2ZVxuICAgIHRoZW4gZmFpbHdpdGggXCJ1c2Ugb2YgW3JldHVybl0gZnJvbSBhIFt3aXRoX3JldHVybl0gdGhhdCBhbHJlYWR5IHJldHVybmVkXCI7XG4gICAgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIChNLlJldHVybiBhKVxuICBpblxuICB0cnlcbiAgICBsZXQgYSA9IGYgeyByZXR1cm4gfSBpblxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIGFcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIChtYXRjaCBleG4gd2l0aFxuICAgICB8IE0uUmV0dXJuIGEgLT4gYVxuICAgICB8IF8gLT4gcmFpc2UgZXhuKVxuOztcblxubGV0IHdpdGhfcmV0dXJuX29wdGlvbiBmID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICBmIHsgcmV0dXJuID0gKGZ1biBhIC0+IHJldHVybi5yZXR1cm4gKFNvbWUgYSkpIH07XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IHByZXBlbmQgeyByZXR1cm4gfSB+ZiA9IHsgcmV0dXJuID0gKGZ1biB4IC0+IHJldHVybiAoZiB4KSkgfVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbmV4dGVybmFsIGlnbm9yZSA6IChfW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogdGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgW1N0ZGxpYi5pZ25vcmVdICopXG5cbmxldCBub24gZiB4ID0gbm90IChmIHgpXG5cbmxldCBmb3JldmVyIGYgPVxuICBsZXQgcmVjIGZvcmV2ZXIgKCkgPVxuICAgIGYgKCk7XG4gICAgZm9yZXZlciAoKVxuICBpblxuICB0cnkgZm9yZXZlciAoKSB3aXRoXG4gIHwgZSAtPiBlXG47O1xuXG5leHRlcm5hbCBpZCA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlIHR5cGljYWwgdXNlIGNhc2UgZm9yIHRoZXNlIGZ1bmN0aW9ucyBpcyB0byBwYXNzIGluIGZ1bmN0aW9uYWwgYXJndW1lbnRzIGFuZCBnZXRcbiAgIGZ1bmN0aW9ucyBhcyBhIHJlc3VsdC4gKilcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IHJlYyBhcHBseV9uX3RpbWVzIH5uIGYgeCA9IGlmIG4gPD0gMCB0aGVuIHggZWxzZSBhcHBseV9uX3RpbWVzIH5uOihuIC0gMSkgZiAoZiB4KVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQsICdiIHQpIGZfbGFiZWxlZF9mblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBUaGUgZm9sbG93aW5nIGlkZW50aXRpZXMgb3VnaHQgdG8gaG9sZCAoZm9yIHNvbWUgdmFsdWUgb2YgPSk6XG5cbiAgICAgIC0gW3JldHVybiB4ID4+PSBmID0gZiB4XVxuICAgICAgLSBbdCA+Pj0gZnVuIHggLT4gcmV0dXJuIHggPSB0XVxuICAgICAgLSBbKHQgPj49IGYpID4+PSBnID0gdCA+Pj0gZnVuIHggLT4gKGYgeCA+Pj0gZyldXG5cbiAgICAgIE5vdGU6IFs+Pj1dIGlzIHRoZSBpbmZpeCBub3RhdGlvbiBmb3IgW2JpbmRdKSAqKVxuXG4gICgqKiBUaGUgW21hcF0gYXJndW1lbnQgdG8gW01vbmFkLk1ha2VdIHNheXMgaG93IHRvIGltcGxlbWVudCB0aGUgbW9uYWQncyBbbWFwXSBmdW5jdGlvbi5cbiAgICAgIFtgRGVmaW5lX3VzaW5nX2JpbmRdIG1lYW5zIHRvIGRlZmluZSBbbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSldLlxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuXG5cbiAgICAgIFNvbWUgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtNb25hZC5NYWtlXSBhcmUgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbbWFwXSwgc29cbiAgICAgIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbWFwXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeSBhcyB3ZWxsLiAqKVxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gKCdhIC0+ICdiLCAnYiB0KSBmX2xhYmVsZWRfZm4gXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljID0gQmFzaWNfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBCYXNpY19sb2NhbCA9XG4gIEJhc2ljX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEluZml4X2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuXG4gICgqKiBbdCA+Pj0gZl0gcmV0dXJucyBhIGNvbXB1dGF0aW9uIHRoYXQgc2VxdWVuY2VzIHRoZSBjb21wdXRhdGlvbnMgcmVwcmVzZW50ZWQgYnkgdHdvXG4gICAgICBtb25hZCBlbGVtZW50cy4gIFRoZSByZXN1bHRpbmcgY29tcHV0YXRpb24gZmlyc3QgZG9lcyBbdF0gdG8geWllbGQgYSB2YWx1ZSBbdl0sIGFuZFxuICAgICAgdGhlbiBydW5zIHRoZSBjb21wdXRhdGlvbiByZXR1cm5lZCBieSBbZiB2XS4gKilcbiAgdmFsICggPj49ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmblxuXG4gICgqKiBbdCA+PnwgZl0gaXMgW3QgPj49IChmdW4gYSAtPiByZXR1cm4gKGYgYSkpXS4gKilcbiAgdmFsICggPj58ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZm5cbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeCA9IEluZml4X2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2Jcbm1vZHVsZSB0eXBlIEluZml4X2xvY2FsID0gSW5maXhfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4X2dlbiA9IHNpZ1xuICAoKiogT3BlbmluZyBhIG1vZHVsZSBvZiB0aGlzIHR5cGUgYWxsb3dzIG9uZSB0byB1c2UgdGhlIFslYmluZF0gYW5kIFslbWFwXSBzeW50YXhcbiAgICAgIGV4dGVuc2lvbnMgZGVmaW5lZCBieSBwcHhfbGV0LCBhbmQgYnJpbmdzIFtyZXR1cm5dIGludG8gc2NvcGUuICopXG5cbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICgqKiBUaGVzZSBhcmUgY29udmVuaWVudCB0byBoYXZlIGluIHNjb3BlIHdoZW4gcHJvZ3JhbW1pbmcgd2l0aCBhIG1vbmFkOiAqKVxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIGluY2x1ZGUgSW5maXhfZ2VuIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmX2xhYmVsZWRfZm5cbiAgICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgYm90aCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheCA9XG4gIFN5bnRheF9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTeW50YXhfbG9jYWwgPVxuICBTeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4X2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIGluY2x1ZGUgSW5maXhfZ2VuIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggOlxuICAgIEluZml4X2dlbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgKCoqIFtiaW5kIHQgfmZdID0gW3QgPj49IGZdICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgKCoqIFtyZXR1cm4gdl0gcmV0dXJucyB0aGUgKHRyaXZpYWwpIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyB2LiAqKVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIHQgfmZdIGlzIHQgPj58IGYuICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgKCoqIFtqb2luIHRdIGlzIFt0ID4+PSAoZnVuIHQnIC0+IHQnKV0uICopXG4gIHZhbCBqb2luIDogJ2EgdCB0IC0+ICdhIHRcblxuICAoKiogW2lnbm9yZV9tIHRdIGlzIFttYXAgdCB+ZjooZnVuIF8gLT4gKCkpXS4gIFtpZ25vcmVfbV0gdXNlZCB0byBiZSBjYWxsZWQgW2lnbm9yZV0sXG4gICAgICBidXQgd2UgZGVjaWRlZCB0aGF0IHdhcyBhIGJhZCBuYW1lLCBiZWNhdXNlIGl0IHNoYWRvd2VkIHRoZSB3aWRlbHkgdXNlZFxuICAgICAgW1N0ZGxpYi5pZ25vcmVdLiAgU29tZSBtb25hZHMgc3RpbGwgZG8gW2xldCBpZ25vcmUgPSBpZ25vcmVfbV0gZm9yIGhpc3RvcmljYWxcbiAgICAgIHJlYXNvbnMuICopXG4gIHZhbCBpZ25vcmVfbSA6ICdhIHQgLT4gdW5pdCB0XG5cbiAgdmFsIGFsbCA6ICdhIHQgbGlzdCAtPiAnYSBsaXN0IHRcblxuICAoKiogTGlrZSBbYWxsXSwgYnV0IGVuc3VyZXMgdGhhdCBldmVyeSBtb25hZGljIHZhbHVlIGluIHRoZSBsaXN0IHByb2R1Y2VzIGEgdW5pdCB2YWx1ZSxcbiAgICAgIGFsbCBvZiB3aGljaCBhcmUgZGlzY2FyZGVkIHJhdGhlciB0aGFuIGJlaW5nIGNvbGxlY3RlZCBpbnRvIGEgbGlzdC4gKilcbiAgdmFsIGFsbF91bml0IDogdW5pdCB0IGxpc3QgLT4gdW5pdCB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9XG4gIFNfd2l0aG91dF9zeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheF9sb2NhbCA9XG4gIFNfd2l0aG91dF9zeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2xvY2FsID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheF9sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4X2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzJfZ2VuID0gc2lnXG4gICgqKiBNdWx0aSBwYXJhbWV0ZXIgbW9uYWQuIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGdldHMgdW5pZmllZCBhY3Jvc3MgYWxsIHRoZSBjb21wdXRhdGlvbi5cbiAgICAgIFRoaXMgaXMgdXNlZCB0byBlbmNvZGUgbW9uYWRzIHdvcmtpbmcgb24gYSBtdWx0aSBwYXJhbWV0ZXIgZGF0YSBzdHJ1Y3R1cmUgbGlrZVxuICAgICAgKFsoJ2EsJ2IpIHJlc3VsdF0pLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMiA9IEJhc2ljMl9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEJhc2ljMl9sb2NhbCA9XG4gIEJhc2ljMl9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBJbmZpeDJfZ2VuID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdlKSB0LCAoJ2IsICdlKSB0KSBmblxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmblxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MiA9IEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG5tb2R1bGUgdHlwZSBJbmZpeDJfbG9jYWwgPSBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4Ml9nZW4gPSBzaWdcbiAgdHlwZSAoJ2EsICdlKSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcblxuICAgIGluY2x1ZGVcbiAgICAgIEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgbWFwIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gJ2IsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdlKSB0IC0+ICgnYiwgJ2UpIHQgLT4gKCdhICogJ2IsICdlKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MiA9XG4gIFN5bnRheDJfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4Ml9sb2NhbCA9XG4gIFN5bnRheDJfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTMl9nZW4gPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIGluY2x1ZGVcbiAgICBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICBpbmNsdWRlXG4gICAgU3ludGF4Ml9nZW5cbiAgICB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0XG4gICAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG4gICAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggOlxuICAgIEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cbiAgdmFsIGpvaW4gOiAoKCdhLCAnZSkgdCwgJ2UpIHQgLT4gKCdhLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2UpIHQgLT4gKHVuaXQsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID1cbiAgUzJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYiBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTMl9sb2NhbCA9XG4gIFMyX2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgQmFzaWMzID0gc2lnXG4gICgqKiBNdWx0aSBwYXJhbWV0ZXIgbW9uYWQuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgZ2V0IHVuaWZpZWQgYWNyb3NzIGFsbCB0aGVcbiAgICAgIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHQgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeDMgPSBzaWdcbiAgKCoqIFNhbWUgYXMgSW5maXgsIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBhcmVcbiAgICAgIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MyA9IHNpZ1xuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5cbiAgICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2IsICdkLCAnZSkgdCAtPiAoJ2EgKiAnYiwgJ2QsICdlKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmRcbiAgICAgIGFuZCB0aGlyZCBhcmUgYWx3YXlzIGp1c3QgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIGluY2x1ZGUgSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBpbmNsdWRlIFN5bnRheDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnZCwgJ2UpIHQsICdkLCAnZSkgdCAtPiAoJ2EsICdkLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2QsICdlKSB0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2QsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdkLCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2QsICdlKSB0IGxpc3QgLT4gKHVuaXQsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBzaWdcbiAgKCoqIEluZGV4ZWQgbW9uYWQsIGluIHRoZSBzdHlsZSBvZiBBdGtleS4gVGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBhcmUgY29tcG9zZWRcbiAgICAgIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uIFRvIHNlZSB0aGlzIG1vcmUgY2xlYXJseSwgeW91IGNhbiBsb29rIGF0IHRoZSB0eXBlIG9mIGJpbmQ6XG5cbiAgICAgIHtbXG4gICAgICAgIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gICAgICBdfVxuXG4gICAgICBhbmQgaXNvbGF0ZSBzb21lIG9mIHRoZSB0eXBlIHZhcmlhYmxlcyB0byBzZWUgdGhlaXIgaW5kaXZpZHVhbCBiZWhhdmlvcnM6XG5cbiAgICAgIHtbXG4gICAgICAgIHZhbCBiaW5kIDogJ2EgICAgICAgICAgICAgLT4gZjooJ2EgLT4gICdiICAgICAgICAgICApIC0+ICAnYlxuICAgICAgICB2YWwgYmluZCA6ICAgICAgJ2ksICdqICAgIC0+ICAgICAgICAgICAgICAgJ2osICdrICAgICAtPiAgICAgJ2ksICdrXG4gICAgICBdfVxuXG4gICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBBdGtleS1zdHlsZSBpbmRleGVkIG1vbmFkcywgc2VlOlxuXG4gICAgICB7dlxuICAgICAgICBQYXJhbWV0ZXJpc2VkIE5vdGlvbnMgb2YgQ29tcHV0YXRpb25cbiAgICAgICAgUm9iZXJ0IEF0a2V5XG4gICAgICAgIGh0dHA6Ly9iZW50bmliLm9yZy9wYXJhbW5vdGlvbnMtamZwLnBkZlxuICAgICAgdn0gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5cbiAgICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2IsICdqLCAnaykgdCAtPiAoJ2EgKiAnYiwgJ2ksICdrKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19pbmRleGVkID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZFxuICAgICAgdGhpcmQgYXJlIGNvbXBvc2VkIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIGluY2x1ZGUgSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcbiAgaW5jbHVkZSBTeW50YXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuICB2YWwgam9pbiA6ICgoJ2EsICdqLCAnaykgdCwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdrKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnaSwgJ2opIHQgLT4gKHVuaXQsICdpLCAnaikgdFxuICB2YWwgYWxsIDogKCdhLCAnaSwgJ2kpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2ksICdpKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnaSwgJ2kpIHQgbGlzdCAtPiAodW5pdCwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIFNfdG9fUzIgKFggOiBTKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TMyAoWCA6IFMyKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG5lbmRcblxubW9kdWxlIFNfdG9fU19pbmRleGVkIChYIDogUykgOiBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoWCA6IFMzKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTX2luZGV4ZWRfdG9fUzIgKFggOiBTX2luZGV4ZWQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCAnZSkgWC50ID1cbnN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCAnZSkgWC50XG5lbmRcblxubW9kdWxlIHR5cGUgTW9uYWQgPSBzaWdcbiAgKCoqIEEgbW9uYWQgaXMgYW4gYWJzdHJhY3Rpb24gb2YgdGhlIGNvbmNlcHQgb2Ygc2VxdWVuY2luZyBvZiBjb21wdXRhdGlvbnMuICBBIHZhbHVlIG9mXG4gICAgICB0eXBlIFsnYSBtb25hZF0gcmVwcmVzZW50cyBhIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyBhIHZhbHVlIG9mIHR5cGUgWydhXS4gKilcblxuICBtb2R1bGUgdHlwZSBCYXNpYyA9IEJhc2ljXG4gIG1vZHVsZSB0eXBlIEJhc2ljMiA9IEJhc2ljMlxuICBtb2R1bGUgdHlwZSBCYXNpYzMgPSBCYXNpYzNcbiAgbW9kdWxlIHR5cGUgQmFzaWNfaW5kZXhlZCA9IEJhc2ljX2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgQmFzaWNfbG9jYWwgPSBCYXNpY19sb2NhbFxuICBtb2R1bGUgdHlwZSBCYXNpYzJfbG9jYWwgPSBCYXNpYzJfbG9jYWxcbiAgbW9kdWxlIHR5cGUgSW5maXggPSBJbmZpeFxuICBtb2R1bGUgdHlwZSBJbmZpeDIgPSBJbmZpeDJcbiAgbW9kdWxlIHR5cGUgSW5maXgzID0gSW5maXgzXG4gIG1vZHVsZSB0eXBlIEluZml4X2luZGV4ZWQgPSBJbmZpeF9pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEluZml4X2xvY2FsID0gSW5maXhfbG9jYWxcbiAgbW9kdWxlIHR5cGUgSW5maXgyX2xvY2FsID0gSW5maXgyX2xvY2FsXG4gIG1vZHVsZSB0eXBlIFN5bnRheCA9IFN5bnRheFxuICBtb2R1bGUgdHlwZSBTeW50YXgyID0gU3ludGF4MlxuICBtb2R1bGUgdHlwZSBTeW50YXgzID0gU3ludGF4M1xuICBtb2R1bGUgdHlwZSBTeW50YXhfaW5kZXhlZCA9IFN5bnRheF9pbmRleGVkXG4gIG1vZHVsZSB0eXBlIFN5bnRheF9sb2NhbCA9IFN5bnRheF9sb2NhbFxuICBtb2R1bGUgdHlwZSBTeW50YXgyX2xvY2FsID0gU3ludGF4Ml9sb2NhbFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gU193aXRob3V0X3N5bnRheFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4X2xvY2FsID0gU193aXRob3V0X3N5bnRheF9sb2NhbFxuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gIG1vZHVsZSB0eXBlIFMzID0gUzNcbiAgbW9kdWxlIHR5cGUgU19pbmRleGVkID0gU19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIFNfbG9jYWwgPSBTX2xvY2FsXG4gIG1vZHVsZSB0eXBlIFMyX2xvY2FsID0gUzJfbG9jYWxcblxuICBtb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50XG4gIG1vZHVsZSBNYWtlMiAoWCA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnRcbiAgbW9kdWxlIE1ha2UzIChYIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgbW9kdWxlIE1ha2VfaW5kZXhlZCAoWCA6IEJhc2ljX2luZGV4ZWQpIDpcbiAgICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnRcblxuICBtb2R1bGUgTWFrZV9sb2NhbCAoWCA6IEJhc2ljX2xvY2FsKSA6IFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50XG4gIG1vZHVsZSBNYWtlMl9sb2NhbCAoWCA6IEJhc2ljMl9sb2NhbCkgOiBTMl9sb2NhbCB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnRcblxuICAoKiogRGVmaW5lIGEgbW9uYWQgdGhyb3VnaCBhbiBpc29tb3JwaGlzbSB3aXRoIGFuIGV4aXN0aW5nIG1vbmFkLiBGb3IgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSAnYSB0ID0geyB2YWx1ZSA6ICdhIH1cblxuICAgICAgICBpbmNsdWRlIE1vbmFkLk9mX21vbmFkIChNb25hZC5JZGVudCkgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICAgICAgbGV0IHRvX21vbmFkIHsgdmFsdWUgfSA9IHZhbHVlXG4gICAgICAgICAgICBsZXQgb2ZfbW9uYWQgdmFsdWUgPSB7IHZhbHVlIH1cbiAgICAgICAgICBlbmQpXG4gICAgICBdfSAqKVxuICBtb2R1bGUgT2ZfbW9uYWRcbiAgICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogJ2EgdCAtPiAnYSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWQyXG4gICAgICAoTW9uYWQgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IpIE1vbmFkLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkM1xuICAgICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgICAgKE1vbmFkIDogU19pbmRleGVkKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2opIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2opIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnRcblxuICAoKiogQW4gZWFnZXIgaWRlbnRpdHkgbW9uYWQgd2l0aCBmdW5jdGlvbnMgaGVhdmlseSBhbm5vdGF0ZWQgd2l0aFxuICAgICAgW0BpbmxpbmVkXSBvciBbQGlubGluZSBoaW50XS5cblxuICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIG1hbnVhbGx5IHdyaXR0ZW4sIHJhdGhlciB0aGFuIGJlaW5nXG4gICAgICBjb25zdHJ1Y3RlZCBieSBbTW9uYWQuTWFrZV0uIFRoaXMgZ2l2ZXMgYmV0dGVyIGlubGluaW5nXG4gICAgICBndWFyYW50ZWVzLlxuICAqKVxuICBtb2R1bGUgSWRlbnQgOiBTX2xvY2FsIHdpdGggdHlwZSAnYSB0ID0gJ2FcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1vbmFkX2ludGZcblxubW9kdWxlIHR5cGUgQmFzaWNfZ2VuZXJhbCA9IHNpZ1xuICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZFxuICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAtPiBmOignYSAtPiAoJ2IsICdqLCAnaywgJ2QsICdlKSB0KVxuICAgIC0+ICgnYiwgJ2ksICdrLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZFxuICAgICAgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2ksICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbmVyYWwgKE0gOiBCYXNpY19nZW5lcmFsKSA9IHN0cnVjdFxuICBsZXQgYmluZCA9IE0uYmluZFxuICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cbiAgbGV0IG1hcF92aWFfYmluZCBtYSB+ZiA9IE0uYmluZCBtYSB+ZjooZnVuIGEgLT4gTS5yZXR1cm4gKGYgYSkpXG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggTS5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19iaW5kIC0+IG1hcF92aWFfYmluZFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCBhIGIgPSBhID4+PSBmdW4gYSAtPiBiID4+fCBmdW4gYiAtPiBhLCBiXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGpvaW4gdCA9IHQgPj49IGZ1biB0JyAtPiB0J1xuICBsZXQgaWdub3JlX20gdCA9IG1hcCB0IH5mOihmdW4gXyAtPiAoKSlcblxuICBsZXQgYWxsID1cbiAgICBsZXQgcmVjIGxvb3AgdnMgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IHZzKVxuICAgICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biB2IC0+IGxvb3AgKHYgOjogdnMpIHRzXG4gICAgaW5cbiAgICBmdW4gdHMgLT4gbG9vcCBbXSB0c1xuICA7O1xuXG4gIGxldCByZWMgYWxsX3VuaXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biAoKSAtPiBhbGxfdW5pdCB0c1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2luZGV4ZWQgKE0gOiBCYXNpY19pbmRleGVkKSA6XG4gIFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UzIChNIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgTS50ID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTIgKE0gOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgOj0gKCdhLCAnZCkgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChNIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyX2xvY2FsIChNIDogQmFzaWMyX2xvY2FsKSA9IHN0cnVjdFxuICBsZXQgYmluZCA9IE0uYmluZFxuICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cblxuICBsZXQgbWFwX3ZpYV9iaW5kIG1hIH5mID1cbiAgICBsZXQgcmVzID0gTS5iaW5kIG1hIH5mOihmdW4gYSAtPiBNLnJldHVybiAoZiBhKSkgaW5cbiAgICByZXNcbiAgOztcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBNLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2JpbmQgLT4gbWFwX3ZpYV9iaW5kXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcblxuICAgICAgbGV0IGJvdGggYSBiID1cbiAgICAgICAgbGV0IHJlcyA9XG4gICAgICAgICAgYmluZCBhIH5mOihmdW4gYSAtPlxuICAgICAgICAgICAgbGV0IHJlcyA9IG1hcCBiIH5mOihmdW4gYiAtPiBhLCBiKSBpblxuICAgICAgICAgICAgcmVzKVxuICAgICAgICBpblxuICAgICAgICByZXNcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGpvaW4gdCA9IHQgPj49IEZuLmlkXG5cbiAgbGV0IGlnbm9yZV9tIHQgPVxuICAgIGxldCByZXMgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9sb2NhbCAoTSA6IEJhc2ljX2xvY2FsKSA6IFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID1cbiAgTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkX2dlbmVyYWwgKE1vbmFkIDogc2lnXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgICB2YWwgYmluZFxuICAgICAgOiAgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAgIC0+ICgnYiwgJ2ksICdrLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbiAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNb25hZC50XG4gICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudCAtPiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICAgIGVuZCkgPVxuICBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiBhID0gTS5vZl9tb25hZCAoTW9uYWQucmV0dXJuIGEpXG4gICAgbGV0IGJpbmQgdCB+ZiA9IE0ub2ZfbW9uYWQgKE1vbmFkLmJpbmQgKE0udG9fbW9uYWQgdCkgfmY6KGZ1biBhIC0+IE0udG9fbW9uYWQgKGYgYSkpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIChmdW4gdCB+ZiAtPiBNLm9mX21vbmFkIChNb25hZC5tYXAgKE0udG9fbW9uYWQgdCkgfmYpKVxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9pbmRleGVkXG4gICAgKE1vbmFkIDogU19pbmRleGVkKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2opIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2opIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDNcbiAgICAoTW9uYWQgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IsICdjKSBNb25hZC50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDJcbiAgICAoTW9uYWQgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IpIE1vbmFkLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkXG4gICAgKE1vbmFkIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICdhIE1vbmFkLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBsZXRbQGlubGluZV0gYmluZCBhIH5mID0gKGYgW0BpbmxpbmVkIGhpbnRdKSBhXG4gIGxldFtAaW5saW5lXSBtYXAgYSB+ZiA9IChmIFtAaW5saW5lZCBoaW50XSkgYVxuXG4gIGV4dGVybmFsIHJldHVybiA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXRbQGlubGluZV0gKCA+PnwgKSBhIGYgPSBtYXAgYSB+ZlxuICAgIGxldFtAaW5saW5lXSAoID4+PSApIGEgZiA9IGJpbmQgYSB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXRbQGlubGluZV0gYm90aCBhIGIgPSBhLCBiXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kXG5cbiAgZXh0ZXJuYWwgam9pbiA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgaWdub3JlX20gOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG4gIGV4dGVybmFsIGFsbF91bml0IDogKHVuaXQgbGlzdFtAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG4gIGV4dGVybmFsIGFsbCA6ICgnYSBsaXN0W0Bsb2NhbF9vcHRdKSAtPiAoJ2EgbGlzdFtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcHBsaWNhdGl2ZV9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbigqKiBUaGlzIG1vZHVsZSBzZXJ2ZXMgbW9zdGx5IGFzIGEgcGFydGlhbCBjaGVjayB0aGF0IFtTMl0gYW5kIFtTXSBhcmUgaW4gc3luYywgYnV0XG4gICAgYWN0dWFsbHkgY2FsbGluZyBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsLiAqKVxubW9kdWxlIFNfdG9fUzIgKFggOiBTKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TIChUIDogVC5UKSAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIFQudCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgJ2EgdCA9ICgnYSwgVC50KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoVCA6IFQuVCkgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIFQudCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIFQudCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MgKFQxIDogVC5UKSAoVDIgOiBULlQpIChYIDogUzMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgVDEudCwgVDIudCkgWC50ID1cbnN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIFQxLnQsIFQyLnQpIFgudFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2FwcGx5IC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBtYXAyIHRhIHRiIH5mID0gbWFwIH5mIHRhIDwqPiB0YlxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGIgPCo+IHRjXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0ICggKj4gKSB1IHYgPSByZXR1cm4gKGZ1biAoKSB5IC0+IHkpIDwqPiB1IDwqPiB2XG4gIGxldCAoIDwqICkgdSB2ID0gcmV0dXJuIChmdW4geCAoKSAtPiB4KSA8Kj4gdSA8Kj4gdlxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MykgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFhcbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEltcGxcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MikgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsICdkLCBfKSB0ID0gKCdhLCAnZCkgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4XG4gICAgKFggOiBGb3JfbGV0X3N5bnRheCkgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgyXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG4oKiogVGhpcyBmdW5jdG9yIGNsb3NlbHkgcmVzZW1ibGVzIFtNYWtlM10sIGFuZCBpbmRlZWQgaXQgY291bGQgYmUgaW1wbGVtZW50ZWRcbiAgICBtdWNoIHNob3J0ZXIgaW4gdGVybXMgb2YgW01ha2UzXS4gSG93ZXZlciwgd2UgaW1wbGVtZW50IGl0IGJ5IGhhbmQgc28gdGhhdFxuICAgIHRoZSByZXN1bHRpbmcgZnVuY3Rpb25zIGFyZSBtb3JlIGVmZmljaWVudCwgZS5nLiB1c2luZyBbbWFwMl0gZGlyZWN0bHkgaW5zdGVhZCBvZlxuICAgIGRlZmluaW5nIFthcHBseV0gaW4gdGVybXMgb2YgaXQgYW5kIHRoZW4gW21hcDJdIGluIHRlcm1zIG9mIHRoYXQuIEZvciBtb3N0XG4gICAgYXBwbGljYXRpdmVzIHRoaXMgZG9lcyBub3QgbWF0dGVyLCBidXQgZm9yIHNvbWUgKHN1Y2ggYXMgQm9uc2FpLlZhbHVlLnQpLCBpdCBoYXMgYVxuICAgIGxhcmdlciBpbXBhY3QuICopXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMiAoWCA6IEJhc2ljM191c2luZ19tYXAyKSA6XG4gIFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX21hcDIgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwMiAobWFwMiB0YSB0YiB+ZikgdGMgfmY6KGZ1biBmYWIgYyAtPiBmYWIgYylcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMiAoWCA6IEJhc2ljMl91c2luZ19tYXAyKSA6XG4gIFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDIgKFggOiBCYXNpY191c2luZ19tYXAyKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID1cbiAgTWFrZTJfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMl9sb2NhbCAoWCA6IEJhc2ljM191c2luZ19tYXAyX2xvY2FsKSA6XG4gIFMzX2xvY2FsIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gbWFwMiB+ZjooZnVuICgpIC0+IGYpIChyZXR1cm4gKCkpIHQgW0Bub250YWlsXVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfbWFwMiAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSBtYXAgLT4gbWFwXG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG5cbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPVxuICAgIGxldCByZXMgPSBtYXAyIChib3RoIHRhIHRiKSB0YyB+ZjooZnVuIChhLCBiKSBjIC0+IGYgYSBiIGMpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMl9sb2NhbCAoWCA6IEJhc2ljMl91c2luZ19tYXAyX2xvY2FsKSA6XG4gIFMyX2xvY2FsIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDJfbG9jYWwgKFggOiBCYXNpY191c2luZ19tYXAyX2xvY2FsKSA6XG4gIFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTJfdXNpbmdfbWFwMl9sb2NhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyIChNIDogTW9uYWQuUzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgTS50ID0gTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gICAgbGV0IGFwcGx5IG1mIG14ID0gTS5iaW5kIG1mIH5mOihmdW4gZiAtPiBNLm1hcCBteCB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBNLm1hcFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZCAoTSA6IE1vbmFkLlMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBPZl9tb25hZDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgQ29tcG9zZSAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50IEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEcucmV0dXJuIChGLnJldHVybiBhKVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRy5hcHBseSAoRy5tYXAgfmY6Ri5hcHBseSB0ZikgdHhcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBHLm1hcCB+ZjooRi5tYXAgfmYpIHRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFBhaXIgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRi5yZXR1cm4gYSwgRy5yZXR1cm4gYVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRi5hcHBseSAoZnN0IHRmKSAoZnN0IHR4KSwgRy5hcHBseSAoc25kIHRmKSAoc25kIHR4KVxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEYubWFwIH5mIChmc3QgdCksIEcubWFwIH5mIChzbmQgdClcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EgdCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgU19mYyA9IHNpZ1xuICB0eXBlIGNvbXBhcmFibGVfdFxuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgdCA6PSBjb21wYXJhYmxlX3RcbmVuZFxuXG5tb2R1bGUgTW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdiKVxuZW5kXG5cbmxldCBtYWtlICh0eXBlIHQpIH5jb21wYXJlIH5zZXhwX29mX3QgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgY29tcGFyYWJsZV90ID0gdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kIDogU19mY1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlX3QgPSB0KVxuOztcblxubW9kdWxlIFNfdG9fUzEgKFMgOiBTKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBTLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG9wZW4gU1xuXG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IE0ueyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICdhIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIl9cIlxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICEnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSBjb21wYXJhdG9yIC0+ICgnYSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgISdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYikgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDIgKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdhLCAnYikgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhIGIgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdFxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcCkgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsIF8pIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWRfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYSwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wX2EgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQyX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYiwgXykgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDJfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wYXJlXG4gICAgICA6ICAoJ2EgLT4gJ2EgLT4gaW50KVxuICAgICAgLT4gKCdiIC0+ICdiIC0+IGludClcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgLT4gaW50XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHAudCkgLT4gKCdiIC0+IFNleHAudCkgLT4gKCdhLCAnYiwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSBiID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgIDsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgYi5zZXhwX29mX3RcbiAgICB9XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnZiwgJ3MpIHQgPVxuICB8IEZpcnN0IG9mICdmXG4gIHwgU2Vjb25kIG9mICdzXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6XG4gICdmICdzLiAoJ2YgLT4gJ2YgLT4gaW50KSAtPiAoJ3MgLT4gJ3MgLT4gaW50KSAtPiAoJ2YsICdzKSB0IC0+ICgnZiwgJ3MpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2YgX2NtcF9fcyBhX18wMDFfIGJfXzAwMl8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgIHwgRmlyc3QgX2FfXzAwM18sIEZpcnN0IF9iX18wMDRfIC0+IF9jbXBfX2YgX2FfXzAwM18gX2JfXzAwNF9cbiAgICB8IEZpcnN0IF8sIF8gLT4gLTFcbiAgICB8IF8sIEZpcnN0IF8gLT4gMVxuICAgIHwgU2Vjb25kIF9hX18wMDVfLCBTZWNvbmQgX2JfXzAwNl8gLT4gX2NtcF9fcyBfYV9fMDA1XyBfYl9fMDA2Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgZiBzLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoZiwgcykgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2YgX2hhc2hfZm9sZF9zIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBGaXJzdCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfZiBoc3YgX2EwXG4gIHwgU2Vjb25kIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9zIGhzdiBfYTBcbjs7XG5cbmxldCB0X29mX3NleHAgOlxuICAnZiAncy5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnZikgLT4gKFNleHBsaWIwLlNleHAudCAtPiAncykgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnZiwgJ3MpIHRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDIzXyBzX18wMjRfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gZl9fMDIzXykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBzX18wMjRfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoZl9fMDIzXywgc19fMDI0XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMTFfID0gXCJlaXRoZXIwLm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfZl9fMDA3XyBfb2Zfc19fMDA4XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9mX18wMDdfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgICAgRmlyc3QgcmVzMF9fMDE3X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgX3RhZ19fMDE5XykgOjogc2V4cF9hcmdzX18wMjBfKSBhc1xuICAgICAgICBfc2V4cF9fMDE4XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMjBfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMjFfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2Zfc19fMDA4XyBhcmcwX18wMjFfIGluXG4gICAgICAgICAgIFNlY29uZCByZXMwX18wMjJfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxOV9cbiAgICAgICAgICAgICBfc2V4cF9fMDE4XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBzZXhwX18wMTBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnZiAncy5cbiAgKCdmIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdmLCAncykgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDMxXyBzX18wMzJfKVxuICAgICAgOiAgKChmX18wMzFfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAzMl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChmX18wMzFfLCBzX18wMzJfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2ZfXzAyNV8gX29mX3NfXzAyNl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgYXJnMF9fMDI3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI4XyA9IF9vZl9mX18wMjVfIGFyZzBfXzAyN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmlyc3RcIjsgcmVzMF9fMDI4XyBdXG4gICAgICB8IFNlY29uZCBhcmcwX18wMjlfIC0+XG4gICAgICAgIGxldCByZXMwX18wMzBfID0gX29mX3NfXzAyNl8gYXJnMF9fMDI5XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZWNvbmRcIjsgcmVzMF9fMDMwXyBdXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAnZiAncy5cbiAgJ2YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gJ3MgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gKCdmLCAncykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIGZ1biBfJ2Zfc2V4cF9ncmFtbWFyIF8nc19zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkZpcnN0XCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydmX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJTZWNvbmRcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ3Nfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG4iLCIoKiBUaGUgdHlwZSBbdF0gc2hvdWxkIGJlIGFic3RyYWN0IHRvIG1ha2UgdGhlIGZzZXQgYW5kIHNldCBmdW5jdGlvbnMgdW5hdmFpbGFibGVcbiAgIGZvciBwcml2YXRlIHR5cGVzIGF0IHRoZSBsZXZlbCBvZiB0eXBlcyAoYW5kIG5vdCBieSBwdXR0aW5nIE5vbmUgaW4gdGhlIGZpZWxkKS5cbiAgIFVuZm9ydHVuYXRlbHksIG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCBtZWFucyB0aGF0IHdoZW4gY3JlYXRpbmcgZmllbGRzICh0aHJvdWdoXG4gICBhIFtjcmVhdGVdIGZ1bmN0aW9uKSB2YWx1ZSByZXN0cmljdGlvbiBraWNrcyBpbi4gVGhpcyBpcyB3b3JrZWQgYXJvdW5kIGJ5IGluc3RlYWRcbiAgIG5vdCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QsIGJ1dCBmb3JjaW5nIGFueW9uZSBicmVha2luZyB0aGUgYWJzdHJhY3Rpb24gdG8gdXNlXG4gICB0aGUgW0Zvcl9nZW5lcmF0ZWRfY29kZV0gbW9kdWxlLCBtYWtpbmcgaXQgb2J2aW91cyB0byBhbnkgcmVhZGVyIHRoYXQgc29tZXRoaW5nIHVnbHlcbiAgIGlzIGdvaW5nIG9uLlxuICAgdF93aXRoX3Blcm0gKGFuZCBkZXJpdmF0aXZlcykgaXMgdGhlIHR5cGUgdGhhdCB1c2VycyByZWFsbHkgdXNlLiBJdCBpcyBhIGNvbnN0cnVjdG9yXG4gICBiZWNhdXNlOlxuICAgMS4gaXQgbWFrZXMgdHlwZSBlcnJvcnMgbW9yZSByZWFkYWJsZSAobGVzcyBhbGlhc2luZylcbiAgIDIuIHRoZSB0eXBlciBpbiBvY2FtbCA0LjAxIGFsbG93cyB0aGlzOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQSA9IHN0cnVjdFxuICAgICAgIHR5cGUgdCA9IHthIDogaW50fVxuICAgICBlbmRcbiAgICAgdHlwZSB0ID0gQS50XG4gICAgIGxldCBmICh4IDogdCkgPSB4LmFcbiAgIF19XG5cbiAgIChhbHRob3VnaCB3aXRoIFdhcm5pbmcgNDA6IGEgaXMgdXNlZCBvdXQgb2Ygc2NvcGUpXG4gICB3aGljaCBtZWFucyB0aGF0IGlmIFt0X3dpdGhfcGVybV0gd2FzIHJlYWxseSBhbiBhbGlhcyBvbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdLFxuICAgcGVvcGxlIGNvdWxkIHNheSBbdC5zZXR0ZXJdIGFuZCBicmVhayB0aGUgYWJzdHJhY3Rpb24gd2l0aCBubyBpbmRpY2F0aW9uIHRoYXRcbiAgIHNvbWV0aGluZyB1Z2x5IGlzIGdvaW5nIG9uIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgIFRoZSB3YXJuaW5nIGlzIChJIHRoaW5rKSBmb3IgcGVvcGxlIHdobyB3YW50IHRvIG1ha2UgdGhlaXIgY29kZSBjb21wYXRpYmxlIHdpdGhcbiAgIHByZXZpb3VzIHZlcnNpb25zIG9mIG9jYW1sLCBzbyB3ZSBtYXkgdmVyeSB3ZWxsIHR1cm4gaXQgb2ZmLlxuXG4gICBUaGUgdHlwZSB0X3dpdGhfcGVybSBjb3VsZCBhbHNvIGhhdmUgYmVlbiBhIFt1bml0IC0+IEZvcl9nZW5lcmF0ZWRfY29kZS50XSB0byB3b3JrXG4gICBhcm91bmQgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHRoZW4gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSB3b3VsZCBoYXZlIGJlZW4gYSBwcm9wZXJcbiAgIGFic3RyYWN0IHR5cGUsIGJ1dCBpdCBsb29rcyBsaWtlIGl0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSAoZm9yIGV4YW1wbGUsIGEgZm9sZCBvbiBhXG4gICByZWNvcmQgdHlwZSB3aXRoIDQwIGZpZWxkcyB3b3VsZCBhY3R1YWxseSBhbGxvY2F0ZSB0aGUgNDAgW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSdzIGF0XG4gICBldmVyeSBzaW5nbGUgZm9sZC4pICopXG5cbm1vZHVsZSBGb3JfZ2VuZXJhdGVkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgeyBmb3JjZV92YXJpYW5jZSA6ICdwZXJtIC0+IHVuaXRcbiAgICA7ICgqIGZvcmNlIFt0XSB0byBiZSBjb250cmF2YXJpYW50IGluIFsncGVybV0sIGJlY2F1c2UgcGhhbnRvbSB0eXBlIHZhcmlhYmxlcyBvblxuICAgICAgICAgY29uY3JldGUgdHlwZXMgZG9uJ3Qgd29yayB0aGF0IHdlbGwgb3RoZXJ3aXNlICh1c2luZyA6PiBjYW4gcmVtb3ZlIHRoZW0gZWFzaWx5KSAqKVxuICAgICAgbmFtZSA6IHN0cmluZ1xuICAgIDsgc2V0dGVyIDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvblxuICAgIDsgZ2V0dGVyIDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICA7IGZzZXQgOiAncmVjb3JkIC0+ICdmaWVsZCAtPiAncmVjb3JkXG4gICAgfVxuXG4gIGxldCBvcGFxdWVfaWRlbnRpdHkgPSBTeXMwLm9wYXF1ZV9pZGVudGl0eVxuZW5kXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtID1cbiAgfCBGaWVsZCBvZiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgRm9yX2dlbmVyYXRlZF9jb2RlLnRcbltAQHVuYm94ZWRdXG5cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9IChbIGBSZWFkIHwgYFNldF9hbmRfY3JlYXRlIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgcmVhZG9ubHlfdCA9IChbIGBSZWFkIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cblxubGV0IG5hbWUgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLm5hbWVcbmxldCBnZXQgKEZpZWxkIGZpZWxkKSByID0gZmllbGQuZ2V0dGVyIHJcbmxldCBmc2V0IChGaWVsZCBmaWVsZCkgciB2ID0gZmllbGQuZnNldCByIHZcbmxldCBzZXR0ZXIgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLnNldHRlclxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ3Jlc3VsdCkgdXNlciA9XG4gIHsgZiA6ICdmaWVsZC4gKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtIC0+ICdyZXN1bHQgfVxuXG5sZXQgbWFwIChGaWVsZCBmaWVsZCkgciB+ZiA9IGZpZWxkLmZzZXQgciAoZiAoZmllbGQuZ2V0dGVyIHIpKVxuXG5sZXQgdXBkYXRlciAoRmllbGQgZmllbGQpID1cbiAgbWF0Y2ggZmllbGQuc2V0dGVyIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHNldHRlciAtPiBTb21lIChmdW4gciB+ZiAtPiBzZXR0ZXIgciAoZiAoZmllbGQuZ2V0dGVyIHIpKSlcbjs7XG4iLCIoKiBbU3RyaW5nMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluXG4gICB0ZXJtcyBvZiBbU3RkbGliLlN0cmluZ10uIFtTdHJpbmcwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtTdGRsaWIuU3RyaW5nXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIHN0cmluZzAubWwgc2hvdWxkXG4gICB1c2UgW1N0ZGxpYi5TdHJpbmddLiAgW1N0cmluZzBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2Unc1xuICAgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncywgaW5jbHVkaW5nIHRoZSBzdWJzY3JpcHQgc3ludGF4IFt4LltpXV0gd2hpY2hcbiAgIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbU3RyaW5nXSwgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN0cmluZ10gaW5cbiAgIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuXG4gICB7W1xuICAgICBtb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN0cmluZ10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogKHN0cmluZ1tAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IChzdHJpbmdbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gY2hhclxuICAgID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZW5kXG5cbmluY2x1ZGUgU3RyaW5nXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgKCBeICkgPSAoIF4gKVxubGV0IGNhcGl0YWxpemUgPSBTdGRsaWIuU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbmxldCBjb21wYXJlID0gU3RkbGliLlN0cmluZy5jb21wYXJlXG5sZXQgZXNjYXBlZCA9IFN0ZGxpYi5TdHJpbmcuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IFN0ZGxpYi5TdHJpbmcubG93ZXJjYXNlX2FzY2lpXG5sZXQgbWFrZSA9IFN0ZGxpYi5TdHJpbmcubWFrZVxubGV0IHN1YiA9IFN0ZGxpYi5TdHJpbmcuc3ViXG5sZXQgdW5jYXBpdGFsaXplID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbmxldCB1bnNhZmVfYmxpdCA9IFN0ZGxpYi5TdHJpbmcudW5zYWZlX2JsaXRcbmxldCB1cHBlcmNhc2UgPSBTdGRsaWIuU3RyaW5nLnVwcGVyY2FzZV9hc2NpaVxubGV0IHNwbGl0X29uX2NoYXIgPSBTdGRsaWIuU3RyaW5nLnNwbGl0X29uX2NoYXJcblxubGV0IGNvbmNhdCA/KHNlcCA9IFwiXCIpIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIlwiXG4gICgqIFRoZSBzdGRsaWIgZG9lcyBub3Qgc3BlY2lhbGl6ZSB0aGlzIGNhc2UgYmVjYXVzZSBpdCBjb3VsZCBicmVhayBleGlzdGluZyBwcm9qZWN0cy4gKilcbiAgfCBbIHggXSAtPiB4XG4gIHwgbCAtPiBTdGRsaWIuU3RyaW5nLmNvbmNhdCB+c2VwIGxcbjs7XG5cbmxldCBpdGVyIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RkbGliLkxleGluZy5wb3NpdGlvbiA9XG4gICAgeyBwb3NfZm5hbWUgOiBzdHJpbmdcbiAgICA7IHBvc19sbnVtIDogaW50XG4gICAgOyBwb3NfYm9sIDogaW50XG4gICAgOyBwb3NfY251bSA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPVxuICAgIChmdW4gYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICAgICB0aGVuIDBcbiAgICAgICBlbHNlIChcbiAgICAgICAgIG1hdGNoIGNvbXBhcmVfc3RyaW5nIGFfXzAwMV8ucG9zX2ZuYW1lIGJfXzAwMl8ucG9zX2ZuYW1lIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfbG51bSBiX18wMDJfLnBvc19sbnVtIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfYm9sIGJfXzAwMl8ucG9zX2JvbCB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfY251bSBiX18wMDJfLnBvc19jbnVtXG4gICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGZ1biBoc3YgYXJnIC0+XG4gICAgICBsZXQgaHN2ID1cbiAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBhcmcucG9zX2ZuYW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2xudW1cbiAgICAgICAgaW5cbiAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19ib2xcbiAgICAgIGluXG4gICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2NudW1cbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuIHsgcG9zX2ZuYW1lID0gcG9zX2ZuYW1lX18wMDRfXG4gICAgICAgICA7IHBvc19sbnVtID0gcG9zX2xudW1fXzAwNl9cbiAgICAgICAgIDsgcG9zX2JvbCA9IHBvc19ib2xfXzAwOF9cbiAgICAgICAgIDsgcG9zX2NudW0gPSBwb3NfY251bV9fMDEwX1xuICAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwM18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAxMV8gPSBzZXhwX29mX2ludCBwb3NfY251bV9fMDEwXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2NudW1cIjsgYXJnX18wMTFfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9pbnQgcG9zX2JvbF9fMDA4XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2JvbFwiOyBhcmdfXzAwOV8gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBwb3NfbG51bV9fMDA2XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2xudW1cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgcG9zX2ZuYW1lX18wMDRfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfZm5hbWVcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwM19cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIFBweF9oZXJlLmxpZnRfcG9zaXRpb25fYXNfc3RyaW5nLiAqKVxubGV0IG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBbIHBvc19mbmFtZTsgXCI6XCI7IEludC50b19zdHJpbmcgcG9zX2xudW07IFwiOlwiOyBJbnQudG9fc3RyaW5nIChwb3NfY251bSAtIHBvc19ib2wpIF1cbjs7XG5cbmxldCB0b19zdHJpbmcgeyBTdGRsaWIuTGV4aW5nLnBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sIH0gPVxuICBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2xcbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlzdDBcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIChmIHggOiBfIEVpdGhlcjAudCkgd2l0aFxuICAgICAgIHwgRmlyc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmRcbiAgICAgICB8IFNlY29uZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtAbm9udGFpbF1cbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFN0ZGxpYi5yZXN1bHQgPVxuICB8IE9rIG9mICdhXG4gIHwgRXJyb3Igb2YgJ2JcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2EgJ2IuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2EsICdiKSB0XG4gID1cbiAgZnVuICh0eXBlIGFfXzAxN18gYl9fMDE4XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxN18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGFfXzAxN18sIGJfXzAxOF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwicmVzdWx0Lm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJva1wiIHwgXCJPa1wiKSBhcyBfdGFnX18wMDhfKSA6OiBzZXhwX2FyZ3NfXzAwOV8pIGFzXG4gICAgICAgIF9zZXhwX18wMDdfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAwOV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxMF8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDExXyA9IF9vZl9hX18wMDFfIGFyZzBfXzAxMF8gaW5cbiAgICAgICAgICAgT2sgcmVzMF9fMDExX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMDhfXG4gICAgICAgICAgICAgX3NleHBfXzAwN18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIF90YWdfXzAxM18pIDo6IHNleHBfYXJnc19fMDE0XykgYXNcbiAgICAgICAgX3NleHBfXzAxMl8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE0XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE1XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTZfID0gX29mX2JfXzAwMl8gYXJnMF9fMDE1XyBpblxuICAgICAgICAgICBFcnJvciByZXMwX18wMTZfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAxM19cbiAgICAgICAgICAgICBfc2V4cF9fMDEyXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm9rXCIgfCBcIk9rXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2EgJ2IuXG4gICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGFfXzAyNV8gYl9fMDI2XylcbiAgICAgIDogICgoYV9fMDI1XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wMjZfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoYV9fMDI1XywgYl9fMDI2XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTlfIF9vZl9iX18wMjBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAyMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAyMl8gXVxuICAgICAgfCBFcnJvciBhcmcwX18wMjNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjRfID0gX29mX2JfXzAyMF8gYXJnMF9fMDIzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFcnJvclwiOyByZXMwX18wMjRfIF1cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6XG4gICdhICdiLlxuICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiT2tcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkVycm9yXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA6XG4gICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMjdfIGJfXzAyOF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAyN18sIGJfXzAyOF8gd2l0aFxuICAgIHwgT2sgX2FfXzAyOV8sIE9rIF9iX18wMzBfIC0+IF9jbXBfX2EgX2FfXzAyOV8gX2JfXzAzMF9cbiAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICB8IF8sIE9rIF8gLT4gMVxuICAgIHwgRXJyb3IgX2FfXzAzMV8sIEVycm9yIF9iX18wMzJfIC0+IF9jbXBfX2IgX2FfXzAzMV8gX2JfXzAzMl8pXG47O1xuXG5sZXQgZXF1YWwgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDMzXyBiX18wMzRfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDMzXyBiX18wMzRfXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMzNfLCBiX18wMzRfIHdpdGhcbiAgICB8IE9rIF9hX18wMzVfLCBPayBfYl9fMDM2XyAtPiBfY21wX19hIF9hX18wMzVfIF9iX18wMzZfXG4gICAgfCBPayBfLCBfIC0+IGZhbHNlXG4gICAgfCBfLCBPayBfIC0+IGZhbHNlXG4gICAgfCBFcnJvciBfYV9fMDM3XywgRXJyb3IgX2JfXzAzOF8gLT4gX2NtcF9fYiBfYV9fMDM3XyBfYl9fMDM4Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgYSBiLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoYSwgYikgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBPayBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gIHwgRXJyb3IgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuOztcblxuW0BAQGVuZF1cblxubGV0IGdsb2JhbGl6ZSA9IGdsb2JhbGl6ZV9yZXN1bHRcblxuaW5jbHVkZSBNb25hZC5NYWtlMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgIGxldCBiaW5kIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gZiB4XG4gICAgOztcblxuICAgIGxldCBtYXAgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICAgIHwgT2sgeCAtPiBPayAoZiB4KVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgcmV0dXJuIHggPSBPayB4XG4gIGVuZClcblxubGV0IGludmFyaWFudCBjaGVja19vayBjaGVja19lcnJvciB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgb2sgLT4gY2hlY2tfb2sgb2tcbiAgfCBFcnJvciBlcnJvciAtPiBjaGVja19lcnJvciBlcnJvclxuOztcblxubGV0IGZhaWwgeCA9IEVycm9yIHhcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcblxubGV0IG1hcF9lcnJvciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgXyBhcyB4IC0+IHhcbiAgfCBFcnJvciB4IC0+IEVycm9yIChmIHgpXG47O1xuXG5tb2R1bGUgRXJyb3IgPSBNb25hZC5NYWtlMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCBiaW5kIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE9rIF8gYXMgb2sgLT4gb2tcbiAgICAgIHwgRXJyb3IgZSAtPiBmIGVcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwX2Vycm9yXG4gICAgbGV0IHJldHVybiBlID0gRXJyb3IgZVxuICBlbmQpXG5cbmxldCBpc19vayA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IGZhbHNlXG4gIHwgRXJyb3IgXyAtPiB0cnVlXG47O1xuXG5sZXQgb2sgPSBmdW5jdGlvblxuICB8IE9rIHggLT4gU29tZSB4XG4gIHwgRXJyb3IgXyAtPiBOb25lXG47O1xuXG5sZXQgZXJyb3IgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gTm9uZVxuICB8IEVycm9yIHggLT4gU29tZSB4XG47O1xuXG5sZXQgb2Zfb3B0aW9uIG9wdCB+ZXJyb3IgPVxuICBtYXRjaCBvcHQgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPiBFcnJvciBlcnJvclxuOztcblxubGV0IGl0ZXIgdiB+ZiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE9rIHggLT4gZiB4XG4gIHwgRXJyb3IgXyAtPiAoKVxuOztcblxubGV0IGl0ZXJfZXJyb3IgdiB+ZiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE9rIF8gLT4gKClcbiAgfCBFcnJvciB4IC0+IGYgeFxuOztcblxubGV0IHRvX2VpdGhlciA6IF8gdCAtPiBfIEVpdGhlci50ID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IEZpcnN0IHhcbiAgfCBFcnJvciB4IC0+IFNlY29uZCB4XG47O1xuXG5sZXQgb2ZfZWl0aGVyIDogXyBFaXRoZXIudCAtPiBfIHQgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gT2sgeFxuICB8IFNlY29uZCB4IC0+IEVycm9yIHhcbjs7XG5cbmxldCBva19pZl90cnVlIGJvb2wgfmVycm9yID0gaWYgYm9vbCB0aGVuIE9rICgpIGVsc2UgRXJyb3IgZXJyb3JcblxubGV0IHRyeV93aXRoIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgZXhuXG47O1xuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgb2tfb3JfZmFpbHdpdGggPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIHN0ciAtPiBmYWlsd2l0aCBzdHJcbjs7XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ29rLCAnZXJyKSBfcmVzdWx0ID0gKCdvaywgJ2VycikgdCA9XG4gICAgfCBPayBvZiAnb2tcbiAgICB8IEVycm9yIG9mICdlcnJcblxuICBsZXQgaXNfZXJyb3IgPSBpc19lcnJvclxuICBsZXQgaXNfb2sgPSBpc19va1xuZW5kXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBPayBfLCBFcnJvciBlIHwgRXJyb3IgZSwgT2sgXyAtPiBFcnJvciBlXG4gIHwgT2sgb2sxLCBPayBvazIgLT4gT2sgKG9rIG9rMSBvazIpXG4gIHwgRXJyb3IgZXJyMSwgRXJyb3IgZXJyMiAtPiBFcnJvciAoZXJyIGVycjEgZXJyMilcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9ycyBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdDEucGFydGl0aW9uX21hcCBsIH5mOnRvX2VpdGhlciBpblxuICBtYXRjaCBlcnJzIHdpdGhcbiAgfCBbXSAtPiBPayBva1xuICB8IF8gOjogXyAtPiBFcnJvciBlcnJzXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gbWFwIChjb21iaW5lX2Vycm9ycyBsKSB+ZjooZnVuIChfIDogdW5pdCBsaXN0KSAtPiAoKSlcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5nIGZvciBleHBvcnQgb25seSAqKVxubGV0IG9rX2ZzdCA9IHRvX2VpdGhlclxuIiwiKCoqIFByb3ZpZGVzIGdlbmVyaWMgc2lnbmF0dXJlcyBmb3IgY29udGFpbmVyIGRhdGEgc3RydWN0dXJlcy5cblxuICAgIFRoZXNlIHNpZ25hdHVyZXMgaW5jbHVkZSBmdW5jdGlvbnMgKFtpdGVyXSwgW2ZvbGRdLCBbZXhpc3RzXSwgW2Zvcl9hbGxdLCAuLi4pIHRoYXRcbiAgICB5b3Ugd291bGQgZXhwZWN0IHRvIGZpbmQgaW4gYW55IGNvbnRhaW5lci4gVXNlZCBieSBpbmNsdWRpbmcgW0NvbnRhaW5lci5TMF0gb3JcbiAgICBbQ29udGFpbmVyLlMxXSBpbiB0aGUgc2lnbmF0dXJlIGZvciBldmVyeSBjb250YWluZXItbGlrZSBkYXRhIHN0cnVjdHVyZSAoW0FycmF5XSxcbiAgICBbTGlzdF0sIFtTdHJpbmddLCAuLi4pIHRvIGVuc3VyZSBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAoKiogW0NvbnRpbnVlX29yX3N0b3AudF0gaXMgdXNlZCBieSB0aGUgW2ZdIGFyZ3VtZW50IHRvIFtmb2xkX3VudGlsXSBpbiBvcmRlciB0b1xuICAgICAgaW5kaWNhdGUgd2hldGhlciBmb2xkaW5nIHNob3VsZCBjb250aW51ZSwgb3Igc3RvcCBlYXJseS5cblxuICAgICAgQGNhbm9uaWNhbCBCYXNlLkNvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wXG4gICopXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHwgQ29udGludWUgb2YgJ2FcbiAgICAgIHwgU3RvcCBvZiAnYlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEV4cG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkNvbnRhaW5lci5TdW1tYWJsZSAqKVxubW9kdWxlIHR5cGUgU3VtbWFibGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCoqIFRoZSByZXN1bHQgb2Ygc3VtbWluZyBubyB2YWx1ZXMuICopXG4gIHZhbCB6ZXJvIDogdFxuXG4gICgqKiBBbiBvcGVyYXRpb24gdGhhdCBjb21iaW5lcyB0d28gW3RdJ3MgYW5kIGhhbmRsZXMgW3plcm8gKyB4XSBieSBqdXN0IHJldHVybmluZyBbeF0sXG4gICAgICBhcyB3ZWxsIGFzIGluIHRoZSBzeW1tZXRyaWMgY2FzZS4gKilcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBtb25vbW9ycGhpYyBjb250YWluZXIgLSBhIGNvbnRhaW5lciBmb3IgYSBzcGVjaWZpYyBlbGVtZW50IHR5cGUsIGUuZy4sXG4gICAgc3RyaW5nLCB3aGljaCBpcyBhIGNvbnRhaW5lciBvZiBjaGFyYWN0ZXJzIChbdHlwZSBlbHQgPSBjaGFyXSkgYW5kIG5ldmVyIG9mIGFueXRoaW5nXG4gICAgZWxzZS4gKilcbm1vZHVsZSB0eXBlIFMwID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGVsdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogdCAtPiBlbHQgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcblxuICAoKiogW2l0ZXJdIG11c3QgYWxsb3cgZXhjZXB0aW9ucyByYWlzZWQgaW4gW2ZdIHRvIGVzY2FwZSwgdGVybWluYXRpbmcgdGhlIGl0ZXJhdGlvblxuICAgICAgY2xlYW5seS4gIFRoZSBzYW1lIGhvbGRzIGZvciBhbGwgZnVuY3Rpb25zIGJlbG93IHRha2luZyBhbiBbZl0uICopXG4gIHZhbCBpdGVyIDogdCAtPiBmOigoZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiB0IC0+IGY6KChlbHQgLT4gJ3N1bSlbQGxvY2FsXSkgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiB0IC0+IGY6KChlbHQgLT4gJ2Egb3B0aW9uKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcC4gbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lXG4gICAgICBjb21wbGV4aXR5IGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6IHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiB0IC0+IGNvbXBhcmU6KChlbHQgLT4gZWx0IC0+IGludClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiBfIHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IF8gdCAtPiBmOigoZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogXyB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiBUaGUgb3JkZXIgaW4gd2hpY2ggdGhlXG4gICAgICBlbGVtZW50cyB3aWxsIGJlIHN1bW1lZCBpcyB1bnNwZWNpZmllZC4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+IF8gdFxuICAgIC0+IGY6KChlbHQgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiBfIHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogXyB0IC0+IGY6KChlbHQgLT4gJ2Egb3B0aW9uKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IF8gdCAtPiBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiBfIHQgLT4gZWx0IGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AgbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24sIG9yIFtOb25lXSBpZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiAqKVxuICB2YWwgbWluX2VsdCA6IF8gdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IF8gdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBwb2x5bW9ycGhpYyBjb250YWluZXIsIGUuZy4sIFsnYSBsaXN0XSBvciBbJ2EgYXJyYXldLiAqKVxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSAtPiBlcXVhbDooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XSAgKilcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAnYSB0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW5pbXVtIChyZXNwIG1heGltdW0pIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWRcbiAgICAgIFtjb21wYXJlXSBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3RcbiAgICAgIGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uXG4gICAgICB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eSBhcyBbZm9sZF0uICopXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzFfcGhhbnRvbSA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIFtlcXVhbF0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AgbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lIGNvbXBsZXhpdHlcbiAgICAgIGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGVsdCAtPiBlcXVhbDooKCdhIGVsdCAtPiAnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSBlbHQgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgYXJyYXlcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGludClbQGxvY2FsXSkgLT4gJ2EgZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgaW5jbHVkZSBTMFxuXG4gIHZhbCBvZl9saXN0IDogZWx0IGxpc3QgLT4gdFxuICB2YWwgb2ZfYXJyYXkgOiBlbHQgYXJyYXkgLT4gdFxuXG4gICgqKiBFLmcuLCBbYXBwZW5kIChvZl9saXN0IFthOyBiXSkgKG9mX2xpc3QgW2M7IGQ7IGVdKV0gaXMgW29mX2xpc3QgW2E7IGI7IGM7IGQ7IGVdXSAqKVxuICB2YWwgYXBwZW5kIDogdCAtPiB0IC0+IHRcblxuICAoKiogQ29uY2F0ZW5hdGVzIGEgbmVzdGVkIGNvbnRhaW5lci4gVGhlIGVsZW1lbnRzIG9mIHRoZSBpbm5lciBjb250YWluZXJzIGFyZVxuICAgICAgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGluIG9yZGVyIHRvIGdpdmUgdGhlIHJlc3VsdC4gKilcbiAgdmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0XG5cbiAgKCoqIFttYXAgZiAob2ZfbGlzdCBbYTE7IC4uLjsgYW5dKV0gYXBwbGllcyBbZl0gdG8gW2ExXSwgW2EyXSwgLi4uLCBbYW5dLCBpbiBvcmRlciwgYW5kXG4gICAgICBidWlsZHMgYSByZXN1bHQgZXF1aXZhbGVudCB0byBbb2ZfbGlzdCBbZiBhMTsgLi4uOyBmIGFuXV0uICopXG4gIHZhbCBtYXAgOiB0IC0+IGY6KChlbHQgLT4gZWx0KVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyBhbGwgdGhlIGVsZW1lbnRzIG9mIFt0XSB0aGF0IHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0uICopXG4gIHZhbCBmaWx0ZXIgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbZmlsdGVyX21hcCB0IH5mXSBhcHBsaWVzIFtmXSB0byBldmVyeSBbeF0gaW4gW3RdLiBUaGUgcmVzdWx0IGNvbnRhaW5zIGV2ZXJ5IFt5XSBmb3JcbiAgICAgIHdoaWNoIFtmIHhdIHJldHVybnMgW1NvbWUgeV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogdCAtPiBmOigoZWx0IC0+IGVsdCBvcHRpb24pW0Bsb2NhbF0pIC0+IHRcblxuICAoKiogW2NvbmNhdF9tYXAgdCB+Zl0gaXMgZXF1aXZhbGVudCB0byBbY29uY2F0IChtYXAgdCB+ZildLiAqKVxuICB2YWwgY29uY2F0X21hcCA6IHQgLT4gZjooKGVsdCAtPiB0KVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+Zl0gcmV0dXJucyBhIHBhaXIgW3QxLCB0Ml0sIHdoZXJlIFt0MV0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0XG4gICAgICBzYXRpc2Z5IFtmXSwgYW5kIFt0Ml0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0IGRvIG5vdCBzYXRpc2Z5IFtmXS4gVGhlIFwidGZcIlxuICAgICAgc3VmZml4IGlzIG1uZW1vbmljIHRvIHJlbWluZCByZWFkZXJzIHRoYXQgdGhlIHJlc3VsdCBpcyAodHJ1ZXMsIGZhbHNlcykuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gdCAqIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+Zl0gcGFydGl0aW9ucyBbdF0gYWNjb3JkaW5nIHRvIFtmXS4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiB0IC0+IGY6KChlbHQgLT4gKGVsdCwgZWx0KSBFaXRoZXIwLnQpW0Bsb2NhbF0pIC0+IHQgKiB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzFfd2l0aF9jcmVhdG9ycyA9IHNpZ1xuICBpbmNsdWRlIFMxXG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gJ2EgdFxuXG4gICgqKiBFLmcuLCBbYXBwZW5kIChvZl9saXN0IFsxOyAyXSkgKG9mX2xpc3QgWzM7IDQ7IDVdKV0gaXMgW29mX2xpc3QgWzE7IDI7IDM7IDQ7IDVdXSAqKVxuICB2YWwgYXBwZW5kIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcblxuICAoKiogQ29uY2F0ZW5hdGVzIGEgbmVzdGVkIGNvbnRhaW5lci4gVGhlIGVsZW1lbnRzIG9mIHRoZSBpbm5lciBjb250YWluZXJzIGFyZVxuICAgICAgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGluIG9yZGVyIHRvIGdpdmUgdGhlIHJlc3VsdC4gKilcbiAgdmFsIGNvbmNhdCA6ICdhIHQgdCAtPiAnYSB0XG5cbiAgKCoqIFttYXAgZiAob2ZfbGlzdCBbYTE7IC4uLjsgYW5dKV0gYXBwbGllcyBbZl0gdG8gW2ExXSwgW2EyXSwgLi4uLCBbYW5dLCBpbiBvcmRlciwgYW5kXG4gICAgICBidWlsZHMgYSByZXN1bHQgZXF1aXZhbGVudCB0byBbb2ZfbGlzdCBbZiBhMTsgLi4uOyBmIGFuXV0uICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgYWxsIHRoZSBlbGVtZW50cyBvZiBbdF0gdGhhdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW2ZdLiAqKVxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdFxuXG4gICgqKiBbZmlsdGVyX21hcCB0IH5mXSBhcHBsaWVzIFtmXSB0byBldmVyeSBbeF0gaW4gW3RdLiBUaGUgcmVzdWx0IGNvbnRhaW5zIGV2ZXJ5IFt5XSBmb3JcbiAgICAgIHdoaWNoIFtmIHhdIHJldHVybnMgW1NvbWUgeV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgKCoqIFtjb25jYXRfbWFwIHQgfmZdIGlzIGVxdWl2YWxlbnQgdG8gW2NvbmNhdCAobWFwIHQgfmYpXS4gKilcbiAgdmFsIGNvbmNhdF9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiB0KVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+Zl0gcmV0dXJucyBhIHBhaXIgW3QxLCB0Ml0sIHdoZXJlIFt0MV0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0XG4gICAgICBzYXRpc2Z5IFtmXSwgYW5kIFt0Ml0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0IGRvIG5vdCBzYXRpc2Z5IFtmXS4gVGhlIFwidGZcIlxuICAgICAgc3VmZml4IGlzIG1uZW1vbmljIHRvIHJlbWluZCByZWFkZXJzIHRoYXQgdGhlIHJlc3VsdCBpcyAodHJ1ZXMsIGZhbHNlcykuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0ICogJ2EgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcCB0IH5mXSBwYXJ0aXRpb25zIFt0XSBhY2NvcmRpbmcgdG8gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICgnYiwgJ2MpIEVpdGhlcjAudClbQGxvY2FsXSkgLT4gJ2IgdCAqICdjIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgdHlwZSAoXywgXykgY29uY2F0XG5cbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBlbHQgbGlzdCAtPiAoJ2EsIF8pIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgZWx0IGFycmF5IC0+ICgnYSwgXykgdFxuICB2YWwgYXBwZW5kIDogKCdhLCAncCkgdCAtPiAoJ2EsICdwKSB0IC0+ICgnYSwgJ3ApIHRcbiAgdmFsIGNvbmNhdCA6ICgoJ2EsICdwKSB0LCAncCkgY29uY2F0IC0+ICgnYSwgJ3ApIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiAnYiBlbHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdwKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+ICdiIGVsdCBvcHRpb24pW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIGNvbmNhdF9tYXAgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gKCdiLCAncCkgdClbQGxvY2FsXSkgLT4gKCdiLCAncCkgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ3ApIHQgKiAoJ2EsICdwKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2EsICdwKSB0XG4gICAgLT4gZjooKCdhIGVsdCAtPiAoJ2IgZWx0LCAnYyBlbHQpIEVpdGhlcjAudClbQGxvY2FsXSlcbiAgICAtPiAoJ2IsICdwKSB0ICogKCdjLCAncCkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfZ2VuX2FyZyA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgZm9sZCA6ICgnYSwgJ3BoYW50b20pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFRoZSBbaXRlcl0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtpdGVyXSBmdW5jdGlvbi4gIFtgRGVmaW5lX3VzaW5nX2ZvbGRdIG1lYW5zIHRvIGRlZmluZSBbaXRlcl1cbiAgICAgIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgaXRlciB0IH5mID0gQ29udGFpbmVyLml0ZXIgfmZvbGQgdCB+ZlxuICAgICAgXX1cblxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuICBTZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbQ29udGFpbmVyLk1ha2VdIGFyZSBkZWZpbmVkIGluXG4gICAgICB0ZXJtcyBvZiBbaXRlcl0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbaXRlcl0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3lcbiAgICAgIGFzIHdlbGwuICopXG4gIHZhbCBpdGVyXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgICAgfCBgQ3VzdG9tIG9mICgnYSwgJ3BoYW50b20pIHQgLT4gZjooKCdhIGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gICAgICBdXG5cbiAgKCoqIFRoZSBbbGVuZ3RoXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2xlbmd0aF0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmVcbiAgICAgIFtsZW5ndGhdIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgbGVuZ3RoIHQgfmYgPSBDb250YWluZXIubGVuZ3RoIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2xlbmd0aF0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbGVuZ3RoXSB3aWxsIGltcHJvdmUgdGhlaXJcbiAgICAgIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIGxlbmd0aCA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAoJ2EsICdwaGFudG9tKSB0IC0+IGludCBdXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICgnYSwgXykgdCA6PSAnYSB0IGFuZCB0eXBlICdhIGVsdCA6PSAnYVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2UwX2FyZyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICB0eXBlIHRcblxuICBpbmNsdWRlIE1ha2VfZ2VuX2FyZyB3aXRoIHR5cGUgKCdhLCBfKSB0IDo9IHQgYW5kIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9jb21tb25fd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmdcblxuICB0eXBlIChfLCBfKSBjb25jYXRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGVsdCBsaXN0IC0+ICgnYSwgXykgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBlbHQgYXJyYXkgLT4gKCdhLCBfKSB0XG4gIHZhbCBjb25jYXQgOiAoKCdhLCBfKSB0LCBfKSBjb25jYXQgLT4gKCdhLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgaW5jbHVkZSBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZ1xuXG4gIHZhbCBjb25jYXRfb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiAoJ2EsIF8pIGNvbmNhdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZVxuICAgIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnXG4gICAgd2l0aCB0eXBlICgnYSwgXykgdCA6PSAnYSB0XG4gICAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYVxuICAgICBhbmQgdHlwZSAoJ2EsIF8pIGNvbmNhdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgdHlwZSB0XG5cbiAgaW5jbHVkZVxuICAgIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnXG4gICAgd2l0aCB0eXBlICgnYSwgXykgdCA6PSB0XG4gICAgIGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuICAgICBhbmQgdHlwZSAoJ2EsIF8pIGNvbmNhdCA6PSAnYSBsaXN0XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZCA9IHNpZ1xuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbZm9sZF0uXG5cbiAgICAgIEUuZy46IFtpdGVyIH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIC0+IGYgYSldLiAqKVxuXG4gIHR5cGUgKCd0LCAnYSwgJ2FjYykgZm9sZCA9ICd0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG4gIHR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbiAgdmFsIGl0ZXIgOiBmb2xkOigndCwgJ2EsIHVuaXQpIGZvbGQgLT4gKCd0LCAnYSkgaXRlclxuICB2YWwgY291bnQgOiBmb2xkOigndCwgJ2EsIGludCkgZm9sZCAtPiAndCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIG1pbl9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2Egb3B0aW9uKSBmb2xkXG4gICAgLT4gJ3RcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBsZW5ndGggOiBmb2xkOigndCwgXywgaW50KSBmb2xkIC0+ICd0IC0+IGludFxuICB2YWwgdG9fbGlzdCA6IGZvbGQ6KCd0LCAnYSwgJ2EgbGlzdCkgZm9sZCAtPiAndCAtPiAnYSBsaXN0XG5cbiAgdmFsIHN1bVxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ3N1bSkgZm9sZFxuICAgIC0+IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICd0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2FjYykgZm9sZFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gJ3RcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhY2MpIGZvbGRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ3RcbiAgICAtPiAnZmluYWxcblxuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbaXRlcl0gYW5kIFtsZW5ndGhdLiAqKVxuXG4gIHZhbCBpc19lbXB0eSA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBib29sXG4gIHZhbCBtZW0gOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZpbmQgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19hcnJheSA6IGxlbmd0aDondCBsZW5ndGggLT4gaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+ICdhIGFycmF5XG5lbmRcblxubW9kdWxlIHR5cGUgQ29udGFpbmVyID0gc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBFeHBvcnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzAgPSBTMFxuICBtb2R1bGUgdHlwZSBTMF9waGFudG9tID0gUzBfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTMF93aXRoX2NyZWF0b3JzID0gUzBfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBTMSA9IFMxXG4gIG1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBTMV9waGFudG9tXG4gIG1vZHVsZSB0eXBlIFMxX3dpdGhfY3JlYXRvcnMgPSBTMV93aXRoX2NyZWF0b3JzXG4gIG1vZHVsZSB0eXBlIERlcml2ZWQgPSBEZXJpdmVkXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWMgPSBHZW5lcmljXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWNfd2l0aF9jcmVhdG9ycyA9IEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBTdW1tYWJsZSA9IFN1bW1hYmxlXG5cbiAgaW5jbHVkZSBEZXJpdmVkXG5cbiAgKCoqIFRoZSBpZGlvbSBmb3IgdXNpbmcgW0NvbnRhaW5lci5NYWtlXSBpcyB0byBiaW5kIHRoZSByZXN1bHRpbmcgbW9kdWxlIGFuZCB0b1xuICAgICAgZXhwbGljaXRseSBpbXBvcnQgZWFjaCBvZiB0aGUgZnVuY3Rpb25zIHRoYXQgb25lIHdhbnRzOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgICAgbGV0IGNvdW50ICAgID0gQy5jb3VudFxuICAgICAgICBsZXQgZXhpc3RzICAgPSBDLmV4aXN0c1xuICAgICAgICBsZXQgZmluZCAgICAgPSBDLmZpbmRcbiAgICAgICAgKCogLi4uICopXG4gICAgICBdfVxuXG4gICAgICBUaGlzIGlzIHByZWZlcmFibGUgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIGluY2x1ZGUgQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgXX1cblxuICAgICAgYmVjYXVzZSB0aGUgW2luY2x1ZGVdIG1ha2VzIGl0IHRvbyBlYXN5IHRvIHNoYWRvdyBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgIGNvbnRhaW5lciBmdW5jdGlvbnMgKFtsZW5ndGhdIGJlaW5nIGEgY29tbW9uIG9uZSkuXG5cbiAgICAgIFtDb250YWluZXIuTWFrZTBdIGlzIGxpa2UgW0NvbnRhaW5lci5NYWtlXSwgYnV0IGZvciBtb25vbW9ycGhpYyBjb250YWluZXJzIGxpa2VcbiAgICAgIFtzdHJpbmddLiAqKVxuICBtb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuXG4gIG1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgOiBTMCB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgZWx0IDo9IFQuRWx0LnRcblxuICBtb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcblxuICBtb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIFMxX3dpdGhfY3JlYXRvcnMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5cbiAgbW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIFMwX3dpdGhfY3JlYXRvcnMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGVsdCA6PSBULkVsdC50XG5cbiAgbW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICAgIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudFxuICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgICAgYW5kIHR5cGUgKCdhLCAncGhhbnRvbSkgY29uY2F0IDo9ICgnYSwgJ3BoYW50b20pIFQuY29uY2F0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBDb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9XG4gICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCgnYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKVtAbG9jYWxdKSAtPiAnYWNjdW1cblxudHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbnR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbmxldCBpdGVyIH4oZm9sZCA6IChfLCBfLCBfKSBmb2xkKSB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpIFtAbm9udGFpbF1cbmxldCBjb3VudCB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIGEgLT4gaWYgZiBhIHRoZW4gbiArIDEgZWxzZSBuKSBbQG5vbnRhaWxdXG5cbmxldCBzdW0gKHR5cGUgYSkgfmZvbGQgKG1vZHVsZSBNIDogU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgZm9sZCB0IH5pbml0Ok0uemVybyB+ZjooZnVuIG4gYSAtPiBNLiggKyApIG4gKGYgYSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0ID1cbiAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgUmVzdWx0Lk9rXG4gICAgICAoZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGl0ZW0gLT5cbiAgICAgICAgIG1hdGNoIGYgYWNjIGl0ZW0gd2l0aFxuICAgICAgICAgfCBSZXN1bHQuT2sgeCAtPiB4XG4gICAgICAgICB8IEVycm9yIF8gYXMgZSAtPiByZXR1cm4gZSkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBmaW5pc2hcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IENvbnRpbnVlX29yX3N0b3AuQ29udGludWUgeCAtPiB4XG4gICAgICAgICB8IFN0b3AgeCAtPiByZXR1cm4geCkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWluIC0+IGlmIGNvbXBhcmUgbWluIGVsdCA+IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IG1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1heCAtPiBpZiBjb21wYXJlIG1heCBlbHQgPCAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBsZW5ndGggfmZvbGQgYyA9IGZvbGQgYyB+aW5pdDowIH5mOihmdW4gYWNjIF8gLT4gYWNjICsgMSlcblxubGV0IGlzX2VtcHR5IH5pdGVyIGMgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biBfIC0+IHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IG1lbSB+aXRlciBjIHggfmVxdWFsID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geSAtPiBpZiBlcXVhbCB4IHkgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGV4aXN0cyB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvcl9hbGwgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgbm90IChmIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX21hcCB+aXRlciB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciB0IH5mOihmdW4geCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHIucmV0dXJuIHJlcyk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmQgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gKFNvbWUgeCkpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCB0b19saXN0IH5mb2xkIGMgPSBMaXN0LnJldiAoZm9sZCBjIH5pbml0OltdIH5mOihmdW4gYWNjIHggLT4geCA6OiBhY2MpKVxuXG5sZXQgdG9fYXJyYXkgfmxlbmd0aCB+aXRlciBjID1cbiAgbGV0IGFycmF5ID0gcmVmIFt8fF0gaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICBpdGVyIGMgfmY6KGZ1biB4IC0+XG4gICAgaWYgIWkgPSAwIHRoZW4gYXJyYXkgOj0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCBjKSB4O1xuICAgICFhcnJheS4oIWkpIDwtIHg7XG4gICAgaW5jciBpKTtcbiAgIWFycmF5XG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID1cbnN0cnVjdFxuICBsZXQgZm9sZCA9IFQuZm9sZFxuXG4gIGxldCBpdGVyID1cbiAgICBtYXRjaCBULml0ZXIgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyIC0+IGl0ZXJcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+ZiAtPiBpdGVyIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgbGVuZ3RoID1cbiAgICBtYXRjaCBULmxlbmd0aCB3aXRoXG4gICAgfCBgQ3VzdG9tIGxlbmd0aCAtPiBsZW5ndGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCAtPiBsZW5ndGggfmZvbGQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gaXNfZW1wdHkgfml0ZXIgdFxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBtZW0gfml0ZXIgdCB4IH5lcXVhbFxuICBsZXQgc3VtIG0gdCA9IHN1bSB+Zm9sZCBtIHRcbiAgbGV0IGNvdW50IHQgfmYgPSBjb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0cyB+aXRlciB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcCB+aXRlciB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kIH5pdGVyIHQgfmZcbiAgbGV0IHRvX2xpc3QgdCA9IHRvX2xpc3QgfmZvbGQgdFxuICBsZXQgdG9fYXJyYXkgdCA9IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgdFxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBmb2xkX3Jlc3VsdCB0IH5mb2xkIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IGZvbGRfdW50aWwgdCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCB4ID0gbWVtIHQgeCB+ZXF1YWw6VC5FbHQuZXF1YWxcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNfYXJnKSA6XG4gIEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuICAgYW5kIHR5cGUgKCdhLCAncGhhbnRvbSkgY29uY2F0IDo9ICgnYSwgJ3BoYW50b20pIFQuY29uY2F0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKFQpXG5cbiAgbGV0IG9mX2xpc3QgPSBULm9mX2xpc3RcbiAgbGV0IG9mX2FycmF5ID0gVC5vZl9hcnJheVxuICBsZXQgY29uY2F0ID0gVC5jb25jYXRcbiAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IFQuY29uY2F0X29mX2FycmF5XG4gIGxldCBhcHBlbmQgYSBiID0gY29uY2F0IChjb25jYXRfb2ZfYXJyYXkgW3wgYTsgYiB8XSlcbiAgbGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAoY29uY2F0X29mX2FycmF5IChBcnJheS5tYXAgKHRvX2FycmF5IHQpIH5mKSlcblxuICBsZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgICBjb25jYXRfbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IG9mX2FycmF5IFt8fF1cbiAgICAgIHwgU29tZSB5IC0+IG9mX2FycmF5IFt8IHkgfF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IFNvbWUgKGYgeCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gICAgbGV0IGFycmF5ID0gQXJyYXkubWFwICh0b19hcnJheSB0KSB+ZiBpblxuICAgIGxldCB4cyA9XG4gICAgICBBcnJheS5mb2xkX3JpZ2h0IGFycmF5IH5pbml0OltdIH5mOihmdW4gZWl0aGVyIGFjYyAtPlxuICAgICAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IHggLT4geCA6OiBhY2NcbiAgICAgICAgfCBTZWNvbmQgXyAtPiBhY2MpXG4gICAgaW5cbiAgICBsZXQgeXMgPVxuICAgICAgQXJyYXkuZm9sZF9yaWdodCBhcnJheSB+aW5pdDpbXSB+ZjooZnVuIGVpdGhlciBhY2MgLT5cbiAgICAgICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCBfIC0+IGFjY1xuICAgICAgICB8IFNlY29uZCB4IC0+IHggOjogYWNjKVxuICAgIGluXG4gICAgb2ZfbGlzdCB4cywgb2ZfbGlzdCB5c1xuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgcGFydGl0aW9uX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBGaXJzdCB4IGVsc2UgU2Vjb25kIHgpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIFQudFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgICB0eXBlICgnYSwgXykgY29uY2F0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gQXJyYXkudG9fbGlzdFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxubGV0IGl0ZXJpIH5mb2xkIHQgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIHYgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgdiBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IGNvdW50aSB+Zm9sZGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgbiBhIC0+IGlmIGYgaSBhIHRoZW4gbiArIDEgZWxzZSBuKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvcl9hbGxpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBub3QgKGYgaSB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXBpIH5pdGVyaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIHgpKSk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxuKCogQWxsb3dzIFtNYWtlX2dlbl0gdG8gc2hhcmUgYSBbQ29udGFpbmVyLkdlbmVyaWNdIGltcGxlbWVudGF0aW9uIHdpdGgsIGUuZy4sXG4gICBbQ29udGFpbmVyLk1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNdLiAqKVxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY29udGFpbmVyXG4gICAgKFQgOiBNYWtlX2dlbl9hcmcpXG4gICAgKEMgOiBDb250YWluZXIuR2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgICAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCkgOlxuICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQgPVxuc3RydWN0XG4gIGluY2x1ZGUgQ1xuXG4gIGxldCBpdGVyaSA9XG4gICAgbWF0Y2ggVC5pdGVyaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXJpIC0+IGl0ZXJpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlcmkgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBmb2xkaSA9XG4gICAgbWF0Y2ggVC5mb2xkaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGZvbGRpIC0+IGZvbGRpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmluaXQgfmYgLT4gZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBjb3VudGkgdCB+ZiA9IGNvdW50aSB+Zm9sZGkgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gZXhpc3RzaSB+aXRlcmkgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IGZvcl9hbGxpIH5pdGVyaSB0IH5mXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZGkgdCB+ZiA9IGZpbmRpIH5pdGVyaSB0IH5mXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gIEdlbmVyaWMgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZV9nZW4gKFQpXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY29udGFpbmVyIChUKSAoQylcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKF8sIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgIGFuZCB0eXBlICgnYSwgJ3BoYW50b20pIGNvbmNhdCA6PSAoJ2EsICdwaGFudG9tKSBULmNvbmNhdCA9IHN0cnVjdFxuICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUKVxuICBpbmNsdWRlIENcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NvbnRhaW5lciAoVCkgKEMpXG5cbiAgbGV0IGRlcml2ZWRfaW5pdCBuIH5mID0gb2ZfYXJyYXkgKEFycmF5LmluaXQgbiB+ZilcblxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggVC5pbml0IHdpdGhcbiAgICB8IGBDdXN0b20gaW5pdCAtPiBpbml0XG4gICAgfCBgRGVmaW5lX3VzaW5nX29mX2FycmF5IC0+IGRlcml2ZWRfaW5pdFxuICA7O1xuXG4gIGxldCBkZXJpdmVkX2NvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKFQuY29uY2F0X29mX2FycmF5IChBcnJheS5tYXBpICh0b19hcnJheSB0KSB+ZikpXG5cbiAgbGV0IGNvbmNhdF9tYXBpID1cbiAgICBtYXRjaCBULmNvbmNhdF9tYXBpIHdpdGhcbiAgICB8IGBDdXN0b20gY29uY2F0X21hcGkgLT4gY29uY2F0X21hcGlcbiAgICB8IGBEZWZpbmVfdXNpbmdfY29uY2F0IC0+IGRlcml2ZWRfY29uY2F0X21hcGlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgY29uY2F0X21hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+IG9mX2FycmF5IFt8fF1cbiAgICAgIHwgU29tZSB5IC0+IG9mX2FycmF5IFt8IHkgfF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwaSB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBTb21lIChmIGkgeCkpIFtAbm9udGFpbF1cblxuICBsZXQgZmlsdGVyaSB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX3dpdGhfY3JlYXRvcnNfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgICB0eXBlICgnYSwgXykgY29uY2F0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTBfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2UwX3dpdGhfY3JlYXRvcnNfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKF8sIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IEFycmF5LnRvX2xpc3RcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RkbGliLkxhenlcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsYXp5X3Rfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGF6eV90XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gbGF6eV90X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5leHRlcm5hbCBmb3JjZSA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuXG5sZXQgbWFwIHQgfmYgPSBsYXp5IChmIChmb3JjZSB0KSlcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MiB0aGVuIDAgZWxzZSBjb21wYXJlX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG47O1xuXG5sZXQgZXF1YWwgZXF1YWxfYSB0MSB0MiA9IGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiB0cnVlIGVsc2UgZXF1YWxfYSAoZm9yY2UgdDEpIChmb3JjZSB0MilcbmxldCBoYXNoX2ZvbGRfdCA9IEhhc2guQnVpbHRpbi5oYXNoX2ZvbGRfbGF6eV90XG5sZXQgcGVlayB0ID0gaWYgaXNfdmFsIHQgdGhlbiBTb21lIChmb3JjZSB0KSBlbHNlIE5vbmVcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiB4ID0gZnJvbV92YWwgeFxuICAgIGxldCBiaW5kIHQgfmYgPSBsYXp5IChmb3JjZSAoZiAoZm9yY2UgdCkpKVxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgVF91bmZvcmNpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBpc192YWwgdCB0aGVuIHNleHBfb2ZfYSAoZm9yY2UgdCkgZWxzZSBzZXhwX29mX3N0cmluZyBcIjx1bmZvcmNlZCBsYXp5PlwiXG4gIDs7XG5lbmRcbiIsIigqIFNwbGl0IG9mZiB0byBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5IHdpdGggW09yX2Vycm9yXS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbmxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIHBvc2l0aW9uOiAlZFwiIHBvcyAoKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIGxlbmd0aDogJWRcIiBsZW4gKCk7XG4gICgqIFdlIHVzZSBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gdG90YWxfbGVuZ3RoXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA+IHRvdGFsX2xlbmd0aCAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnZiBcInBvcyArIGxlbiBwYXN0IGVuZDogJWQgKyAlZCA+ICVkXCIgcG9zIGxlbiB0b3RhbF9sZW5ndGggKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICAoKiBUaGlzIGlzIGJldHRlciB0aGFuIFtzbG93X2NoZWNrX3Bvc19sZW5fZXhuXSBmb3IgdHdvIHJlYXNvbnM6XG5cbiAgICAgLSBtdWNoIGxlc3MgaW5saW5lZCBjb2RlXG4gICAgIC0gb25seSBvbmUgY29uZGl0aW9uYWwganVtcFxuXG4gICAgIFRoZSByZWFzb24gaXQgd29ya3MgaXMgdGhhdCBjaGVja2luZyBbPCAwXSBpcyB0ZXN0aW5nIHRoZSBoaWdoZXN0IG9yZGVyIGJpdCwgc29cbiAgICAgW2EgPCAwIHx8IGIgPCAwXSBpcyB0aGUgc2FtZSBhcyBbYSBsb3IgYiA8IDBdLlxuXG4gICAgIFtwb3MgKyBsZW5dIGNhbiBvdmVyZmxvdywgc28gW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gaXMgbm90IGVxdWl2YWxlbnQgdG9cbiAgICAgW3RvdGFsX2xlbmd0aCAtIGxlbiAtIHBvcyA8IDBdLCB3ZSBuZWVkIHRvIHRlc3QgZm9yIFtwb3MgKyBsZW5dIG92ZXJmbG93IGFzXG4gICAgIHdlbGwuICopXG4gIGxldCBzdG9wID0gcG9zICsgbGVuIGluXG4gIGlmIHBvcyBsb3IgbGVuIGxvciBzdG9wIGxvciAodG90YWxfbGVuZ3RoIC0gc3RvcCkgPCAwXG4gIHRoZW4gc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBnZXRfcG9zX2xlbl9leG4gPyhwb3MgPSAwKSA/bGVuICgpIH50b3RhbF9sZW5ndGggPVxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBpIC0+IGlcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIGNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBwb3MsIGxlblxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gPSBzbG93X2NoZWNrX3Bvc19sZW5fZXhuXG5lbmRcbiIsIlxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgb3BlbiBTdGRsaWIuQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgbGV0IG9mX3N0YXRlIDogU3RkbGliLlJhbmRvbS5TdGF0ZS50IC0+IHQgPSBTdGRsaWIuT2JqLm1hZ2ljXG5lbmRcblxubGV0IGFzc2lnbiBkc3Qgc3JjID1cbiAgbGV0IGRzdCA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2UgZHN0KSBpblxuICBsZXQgc3JjID0gUmVwci5vZl9zdGF0ZSAoTGF6eS5mb3JjZSBzcmMpIGluXG4gIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEuYmxpdCBzcmMgZHN0XG5cbmxldCBtYWtlX2RlZmF1bHQgZGVmYXVsdCA9XG4gIGxldCBzcGxpdF9mcm9tX3BhcmVudCB2ID1cbiAgICBTdGRsaWIuTGF6eS5tYXBfdmFsIFN0ZGxpYi5SYW5kb20uU3RhdGUuc3BsaXQgdlxuICBpblxuICBTdGRsaWIuRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudCAoZnVuICgpIC0+IGRlZmF1bHQpXG5cbmxldCBnZXRfc3RhdGUgcmFuZG9tX2tleSA9IFN0ZGxpYi5Eb21haW4uRExTLmdldCByYW5kb21fa2V5XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5cbigqIFVuZm9ydHVuYXRlbHksIGJlY2F1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lcyBub3QgZXhwb3NlXG4gICBbU3RkbGliLlJhbmRvbS5TdGF0ZS5kZWZhdWx0XSwgd2UgaGF2ZSB0byBjb25zdHJ1Y3Qgb3VyIG93bi4gIFdlIHRoZW4gYnVpbGQgdGhlXG4gICBbU3RkbGliLlJhbmRvbS5pbnRdLCBbU3RkbGliLlJhbmRvbS5ib29sXSBmdW5jdGlvbnMgYW5kIGZyaWVuZHMgdXNpbmcgdGhhdCBkZWZhdWx0IHN0YXRlIGluXG4gICBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeS5cblxuICAgT25lIG90aGVyIHRyaWNraW5lc3MgaXMgdGhhdCB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgdW5leHBvc2VkIFtTdGRsaWIuUmFuZG9tLlN0YXRlLmFzc2lnbl1cbiAgIGZ1bmN0aW9uLCB3aGljaCBhY2Nlc3NlcyB0aGUgdW5leHBvc2VkIHN0YXRlIHJlcHJlc2VudGF0aW9uLiAgU28sIHdlIGNvcHkgdGhlXG4gICBbU3RhdGUucmVwcl0gdHlwZSBkZWZpbml0aW9uIGFuZCBbYXNzaWduXSBmdW5jdGlvbiB0byBoZXJlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksXG4gICBhbmQgdXNlIFtPYmoubWFnaWNdIHRvIGdldCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24uICopXG5cbigqIFJlZ3Jlc3Npb24gdGVzdHMgb3VnaHQgdG8gYmUgZGV0ZXJtaW5pc3RpYyBiZWNhdXNlIHRoYXQgd2F5IGFueW9uZSB3aG8gYnJlYWtzIHRoZSB0ZXN0XG4gICBrbm93cyB0aGF0IGl0J3MgdGhlaXIgY29kZSB0aGF0IGJyb2tlIHRoZSB0ZXN0LiAgSWYgdGVzdHMgYXJlIG5vbmRldGVybWluaXN0aWMsIGEgdGVzdFxuICAgZmFpbHVyZSBtYXkgaW5zdGVhZCBoYXBwZW4gYmVjYXVzZSB0aGUgdGVzdCBydW5uZXIgZ290IHVubHVja3kgYW5kIHVuY292ZXJlZCBhblxuICAgZXhpc3RpbmcgYnVnIGluIHRoZSBjb2RlIHN1cHBvc2VkbHkgYmVpbmcgXCJwcm90ZWN0ZWRcIiBieSB0aGUgdGVzdCBpbiBxdWVzdGlvbi4gKilcbmxldCBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzID1cbiAgaWYgYW1fdGVzdGluZ1xuICB0aGVuIChcbiAgICBtYXRjaCBhbGxvd19pbl90ZXN0cyB3aXRoXG4gICAgfCBTb21lIHRydWUgLT4gKClcbiAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICBcImluaXRpYWxpemluZyBSYW5kb20gd2l0aCBhIG5vbmRldGVybWluaXN0aWMgc2VlZCBpcyBmb3JiaWRkZW4gaW4gaW5saW5lIHRlc3RzXCIpXG47O1xuXG5leHRlcm5hbCByYW5kb21fc2VlZCA6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbmxldCByYW5kb21fc2VlZCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICByYW5kb21fc2VlZCAoKVxuOztcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICgqIFdlIGFsbG93IGxhemluZXNzIG9ubHkgZm9yIHRoZSBkZWZpbml0aW9uIG9mIFtkZWZhdWx0XSwgYmVsb3csIHdoaWNoIG1heSBsYXppbHkgY2FsbFxuICAgICBbbWFrZV9zZWxmX2luaXRdLiBGb3IgYWxsIG90aGVyIHB1cnBvc2VzLCB3ZSBjcmVhdGUgYW5kIHVzZSBbdF0gZWFnZXJseS4gKilcbiAgdHlwZSB0ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS50IExhenkudFxuXG4gIGxldCBiaXRzIHQgPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgdClcbiAgbGV0IGJvb2wgdCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuYm9vbCAoTGF6eS5mb3JjZSB0KVxuICBsZXQgaW50IHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDMyIHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50MzIgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50NjQgdCB4ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5pbnQ2NCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBuYXRpdmVpbnQgdCB4ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5uYXRpdmVpbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbWFrZSBzZWVkID0gTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5tYWtlIHNlZWQpXG4gIGxldCBjb3B5IHQgPSBMYXp5LmZyb21fdmFsIChTdGRsaWIuUmFuZG9tLlN0YXRlLmNvcHkgKExhenkuZm9yY2UgdCkpXG4gIGxldCBjaGFyIHQgPSBpbnQgdCAyNTYgfD4gQ2hhci51bnNhZmVfb2ZfaW50XG4gIGxldCBhc2NpaSB0ID0gaW50IHQgMTI4IHw+IENoYXIudW5zYWZlX29mX2ludFxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICAgIGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHM7XG4gICAgTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcbiAgOztcblxuICBsZXQgYXNzaWduID0gUmFuZG9tX3JlcHIuYXNzaWduXG4gIGxldCBmdWxsX2luaXQgdCBzZWVkID0gYXNzaWduIHQgKG1ha2Ugc2VlZClcblxuICBsZXQgZGVmYXVsdCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogV2UgZGVmaW5lIEJhc2UncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZSBhcyBhIGNvcHkgb2YgT0NhbWwncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZS5cbiAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBwcm9ncmFtcyB0aGF0IHVzZSBCYXNlLlJhbmRvbSB3aWxsIHNlZSB0aGUgc2FtZSBzZXF1ZW5jZSBvZlxuICAgICAgICAgcmFuZG9tIGJpdHMgYXMgaWYgdGhleSBoYWQgdXNlZCBTdGRsaWIuUmFuZG9tLiBIb3dldmVyLCBiZWNhdXNlIFtnZXRfc3RhdGVdIHJldHVybnNcbiAgICAgICAgIGEgY29weSwgQmFzZS5SYW5kb20gYW5kIE9DYW1sLlJhbmRvbSBhcmUgbm90IHVzaW5nIHRoZSBzYW1lIHN0YXRlLiBJZiBhIHByb2dyYW1cbiAgICAgICAgIHVzZWQgYm90aCwgZWFjaCBvZiB0aGVtIHdvdWxkIGdvIHRocm91Z2ggdGhlIHNhbWUgc2VxdWVuY2Ugb2YgcmFuZG9tIGJpdHMuIFRvXG4gICAgICAgICBhdm9pZCB0aGF0LCB3ZSByZXNldCBPQ2FtbCdzIHJhbmRvbSBzdGF0ZSB0byBhIGRpZmZlcmVudCBzZWVkLCBnaXZpbmcgaXQgYVxuICAgICAgICAgZGlmZmVyZW50IHNlcXVlbmNlLiAqKVxuICAgICAgbGV0IHQgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICAgICAgU3RkbGliLlJhbmRvbS5pbml0IDEzNztcbiAgICAgIExhenkuZnJvbV92YWwgdClcbiAgICBlbHNlXG4gICAgICBsYXp5XG4gICAgICAgICgqIE91dHNpZGUgb2YgdGVzdHMsIHdlIGluaXRpYWxpemUgcmFuZG9tIHN0YXRlIG5vbmRldGVybWluaXN0aWNhbGx5IGFuZCBsYXppbHkuXG4gICAgICAgICAgIFdlIGZvcmNlIHRoZSByYW5kb20gaW5pdGlhbGl6YXRpb24gdG8gYmUgbGF6eSBzbyB0aGF0IHdlIGRvIG5vdCBwYXkgYW55IGNvc3RcbiAgICAgICAgICAgZm9yIGl0IGluIHByb2dyYW1zIHRoYXQgZG8gbm90IHVzZSByYW5kb21uZXNzLiAqKVxuICAgICAgICAoTGF6eS5mb3JjZSAobWFrZV9zZWxmX2luaXQgKCkpKVxuICA7O1xuXG4gIGxldCBpbnRfb25fNjRiaXRzIHQgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBTdGRsaWIuSW50NjQudG9faW50IChpbnQ2NCB0IChTdGRsaWIuSW50NjQub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50X29uXzMyYml0cyB0IGJvdW5kID1cbiAgICAoKiBOb3QgYWx3YXlzIHRydWUgd2l0aCB0aGUgSmF2YVNjcmlwdCBiYWNrZW5kLiAqKVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBTdGRsaWIuSW50MzIudG9faW50IChpbnQzMiB0IChTdGRsaWIuSW50MzIub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDY0ID1cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT5cbiAgICAgIGxvZ3hvclxuICAgICAgICAoYml0cyBzdGF0ZSlcbiAgICAgICAgKGxvZ3hvciAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSA2MCkpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50MzIgPVxuICAgIGxldCBvcGVuIFN0ZGxpYi5JbnQzMiBpblxuICAgIGxldCBiaXRzIHN0YXRlID0gb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGZ1biBzdGF0ZSAtPiBsb2d4b3IgKGJpdHMgc3RhdGUpIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSAzMClcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIHN0YXRlID0gU3RkbGliLkludDY0LnRvX2ludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzMyYml0cyBzdGF0ZSA9IFN0ZGxpYi5JbnQzMi50b19pbnQgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzIHN0YXRlID1cbiAgICBTdGRsaWIuSW50NjQudG9fbmF0aXZlaW50IChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMgc3RhdGUgPVxuICAgIFN0ZGxpYi5OYXRpdmVpbnQub2ZfaW50MzIgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgcmFpc2VfY3Jvc3NlZF9ib3VuZHMgbmFtZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCBzdHJpbmdfb2ZfYm91bmQgPVxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiUmFuZG9tLiVzOiBjcm9zc2VkIGJvdW5kcyBbJXMgPiAlc11cIlxuICAgICAgbmFtZVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCBsb3dlcl9ib3VuZClcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgdXBwZXJfYm91bmQpXG4gICAgICAoKVxuICBbQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuICA7O1xuXG4gIGxldCBpbnRfaW5jbCA9XG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnRcIiBsbyBoaSBJbnQudG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBoaSAtIGxvIGluXG4gICAgICBpZiBkaWZmID0gSW50Lm1heF92YWx1ZVxuICAgICAgdGhlbiBsbyArIChmdWxsX3JhbmdlX2ludCBzdGF0ZSBsYW5kIEludC5tYXhfdmFsdWUpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMFxuICAgICAgdGhlbiBsbyArIGludCBzdGF0ZSAoSW50LnN1Y2MgZGlmZilcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50MzJfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50MzIgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDMyXCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBsXG4gICAgICB0aGVuIGFkZCBsbyAoaW50MzIgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9pbmNsID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gU3RkbGliLk5hdGl2ZWludCBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwibmF0aXZlaW50XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX25hdGl2ZWludCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwblxuICAgICAgdGhlbiBhZGQgbG8gKG5hdGl2ZWludCBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50NjRfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDY0XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgICB0aGVuIGFkZCBsbyAoaW50NjQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgdW5pZm9ybWx5IHJhbmRvbSBmbG9hdCBpbiBbMCwgMSkuICopXG4gIGxldCByZWMgcmF3ZmxvYXQgc3RhdGUgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCBzY2FsZSA9IDB4MXAtMzAgaW5cbiAgICAoKiAyXi0zMCAqKVxuICAgIGxldCByMSA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHIyID0gU3RkbGliLmZsb2F0X29mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBsZXQgcmVzdWx0ID0gKChyMSAqLiBzY2FsZSkgKy4gcjIpICouIHNjYWxlIGluXG4gICAgKCogV2l0aCB2ZXJ5IHNtYWxsIHByb2JhYmlsaXR5LCByZXN1bHQgY2FuIHJvdW5kIHVwIHRvIDEuMCwgc28gaW4gdGhhdCBjYXNlLCB3ZSBqdXN0XG4gICAgICAgdHJ5IGFnYWluLiAqKVxuICAgIGlmIHJlc3VsdCA8IDEuMCB0aGVuIHJlc3VsdCBlbHNlIHJhd2Zsb2F0IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGZsb2F0IHN0YXRlIGhpID0gcmF3ZmxvYXQgc3RhdGUgKi4gaGlcblxuICBsZXQgZmxvYXRfcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImZsb2F0XCIgbG8gaGkgU3RkbGliLnN0cmluZ19vZl9mbG9hdDtcbiAgICBsbyArLiBmbG9hdCBzdGF0ZSAoaGkgLS4gbG8pXG4gIDs7XG5lbmRcblxubGV0IGRlZmF1bHQgPSBSYW5kb21fcmVwci5tYWtlX2RlZmF1bHQgU3RhdGUuZGVmYXVsdFxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBpbnQgeCA9IFN0YXRlLmludCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnQzMiB4ID0gU3RhdGUuaW50MzIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgbmF0aXZlaW50IHggPSBTdGF0ZS5uYXRpdmVpbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50NjQgeCA9IFN0YXRlLmludDY0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGZsb2F0IHggPSBTdGF0ZS5mbG9hdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnRfaW5jbCB4IHkgPSBTdGF0ZS5pbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDMyX2luY2wgeCB5ID0gU3RhdGUuaW50MzJfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IG5hdGl2ZWludF9pbmNsIHggeSA9IFN0YXRlLm5hdGl2ZWludF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgaW50NjRfaW5jbCB4IHkgPSBTdGF0ZS5pbnQ2NF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgZmxvYXRfcmFuZ2UgeCB5ID0gU3RhdGUuZmxvYXRfcmFuZ2UgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgY2hhciAoKSA9IFN0YXRlLmNoYXIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGFzY2lpICgpID0gU3RhdGUuYXNjaWkgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc2VlZFxubGV0IGluaXQgc2VlZCA9IGZ1bGxfaW5pdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ID9hbGxvd19pbl90ZXN0cyAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpKVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc1xuIiwiKCoqIEFuIGludGVybmFsLW9ubHkgbW9kdWxlIGZhY3RvcmVkIG91dCBkdWUgdG8gYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gY29yZV9hcnJheVxuICAgIGFuZCBjb3JlX2xpc3QuICBDb250YWlucyBjb2RlIGZvciBwZXJtdXRpbmcgYW4gYXJyYXkuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgPyhwb3MgPSAwKSA/bGVuIHQgPVxuICAoKiBDb3BpZWQgZnJvbSBbT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNvbXBpbGluZ1xuICAgICB3aXRob3V0IGZsYW1iZGEuICopXG4gIGxldCB0b3RhbF9sZW5ndGggPSBsZW5ndGggdCBpblxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBsIC0+IGxcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBsZXQgbnVtX3N3YXBzID0gbGVuIC0gMSBpblxuICBmb3IgaSA9IG51bV9zd2FwcyBkb3dudG8gMSBkb1xuICAgIGxldCB0aGlzX2kgPSBwb3MgKyBpIGluXG4gICAgKCogW3JhbmRvbV9pXSBpcyBkcmF3biBmcm9tIFtwb3MsdGhpc19pXSAqKVxuICAgIGxldCByYW5kb21faSA9IHBvcyArIFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChpICsgMSkgaW5cbiAgICBzd2FwIHQgdGhpc19pIHJhbmRvbV9pXG4gIGRvbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBMZXNzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEVxdWFsIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEdyZWF0ZXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIExlc3M7IEVxdWFsOyBHcmVhdGVyIF0gOiB0IGxpc3QpXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwib3JkZXJpbmcubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIC0+IExlc3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIC0+IEVxdWFsXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgLT4gR3JlYXRlclxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZXNzXCIgfCBcIkxlc3NcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IExlc3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVzc1wiXG4gICAgfCBFcXVhbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJFcXVhbFwiXG4gICAgfCBHcmVhdGVyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkdyZWF0ZXJcIlxuICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJMZXNzXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJFcXVhbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiR3JlYXRlclwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBfb3JkZXJpbmcgPSB0ID1cbiAgICB8IExlc3NcbiAgICB8IEVxdWFsXG4gICAgfCBHcmVhdGVyXG5lbmRcblxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBMZXNzIGVsc2UgaWYgbiA9IDAgdGhlbiBFcXVhbCBlbHNlIEdyZWF0ZXJcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTGVzcyAtPiAtMVxuICB8IEVxdWFsIC0+IDBcbiAgfCBHcmVhdGVyIC0+IDFcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxuXG5pbmNsdWRlIExpc3QxXG5cbigqIFRoaXMgaXRzZWxmIGluY2x1ZGVzIFtMaXN0MF0uICopXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gICAgZnVuICh0eXBlIGFfXzAwMV8pXG4gICAgICAgIDogKCgoYV9fMDAxX1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDFfKSAtPiAoYV9fMDAxXyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwMV8gdCkgLT5cbiAgICAgIGdsb2JhbGl6ZV9saXN0XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGxpc3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9saXN0XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxpc3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBPcl91bmVxdWFsX2xlbmd0aHMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBVbmVxdWFsX2xlbmd0aHNcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDEwXyBiX18wMTFfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTBfIGJfXzAxMV9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxMF8sIGJfXzAxMV8gd2l0aFxuICAgICAgfCBPayBfYV9fMDEyXywgT2sgX2JfXzAxM18gLT4gX2NtcF9fYSBfYV9fMDEyXyBfYl9fMDEzX1xuICAgICAgfCBPayBfLCBfIC0+IC0xXG4gICAgICB8IF8sIE9rIF8gLT4gMVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMsIFVuZXF1YWxfbGVuZ3RocyAtPiAwKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMTdfKSA6ICgoYV9fMDE3XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAxN18gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTRfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAxNV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAxNl8gPSBfb2ZfYV9fMDE0XyBhcmcwX18wMTVfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAxNl8gXVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbF9sZW5ndGhzXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxubGV0IG9mX2xpc3QgdCA9IHRcblxubGV0IHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGxldCBuZXh0X2kgPSBzdHJpZGUgc3RhcnRfaSBpblxuICBsZXQgb3JkZXIgeCB5ID0gT3JkZXJpbmcub2ZfaW50IChjb21wYXJlIHggeSkgaW5cbiAgbGV0IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKCkgPVxuICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlXCJcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RyaWRlX29yZGVyID1cbiAgICBtYXRjaCBvcmRlciBzdGFydF9pIG5leHRfaSB3aXRoXG4gICAgfCBFcXVhbCAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgfCBMZXNzIC0+IGBMZXNzXG4gICAgfCBHcmVhdGVyIC0+IGBHcmVhdGVyXG4gIGluXG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBsZXQgaV90b19zdG9wX29yZGVyID0gb3JkZXIgaSBzdG9wX2kgaW5cbiAgICBtYXRjaCBpX3RvX3N0b3Bfb3JkZXIsIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICB8IExlc3MsIGBMZXNzIHwgR3JlYXRlciwgYEdyZWF0ZXIgLT5cbiAgICAgICgqIGhhdmVuJ3QgeWV0IHJlYWNoZWQgW3N0b3BfaV0uIENvbnRpbnVlLiAqKVxuICAgICAgbGV0IG5leHRfaSA9IHN0cmlkZSBpIGluXG4gICAgICAobWF0Y2ggb3JkZXIgaSBuZXh0X2ksIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICAgICB8IEVxdWFsLCBfIC0+IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKClcbiAgICAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgY2hhbmdlIGRpcmVjdGlvblwiXG4gICAgICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+IGxvb3AgbmV4dF9pIChpIDo6IGFjY3VtKSlcbiAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICgqIHN0ZXBwZWQgcGFzdCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgYWNjdW1cbiAgICB8IEVxdWFsLCBfIC0+XG4gICAgICAoKiByZWFjaGVkIFtzdG9wX2ldLiAgRmluaXNoZWQuICopXG4gICAgICAobWF0Y2ggc3RvcCB3aXRoXG4gICAgICAgfCBgaW5jbHVzaXZlIC0+IGkgOjogYWNjdW1cbiAgICAgICB8IGBleGNsdXNpdmUgLT4gYWNjdW0pXG4gIGluXG4gIGxldCBzdGFydF9pID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X2lcbiAgICB8IGBleGNsdXNpdmUgLT4gbmV4dF9pXG4gIGluXG4gIHJldiAobG9vcCBzdGFydF9pIFtdKVxuOztcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X2kgc3RvcF9pID1cbiAgaWYgc3RyaWRlID0gMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZTogc3RyaWRlIG11c3QgYmUgbm9uLXplcm9cIjtcbiAgcmFuZ2UnIH5jb21wYXJlIH5zdHJpZGU6KGZ1biB4IC0+IHggKyBzdHJpZGUpIH5zdGFydCB+c3RvcCBzdGFydF9pIHN0b3BfaVxuOztcblxubGV0IGhkIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBfIC0+IFNvbWUgeFxuOztcblxubGV0IHRsIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiB0JyAtPiBTb21lIHQnXG47O1xuXG5sZXQgbnRoIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIG50aF9hdXggdCBuID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGEgOjogdCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggdCAobiAtIDEpXG4gICAgaW5cbiAgICBudGhfYXV4IHQgbilcbjs7XG5cbmxldCBudGhfZXhuIHQgbiA9XG4gIG1hdGNoIG50aCB0IG4gd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiTGlzdC5udGhfZXhuICVkIGNhbGxlZCBvbiBsaXN0IG9mIGxlbmd0aCAlZFwiIG4gKGxlbmd0aCB0KSAoKVxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdW5vcmRlcmVkX2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwgfCBsLCBbXSAtPiBsXG4gIHwgXyAtPiByZXZfYXBwZW5kIGwxIGwyXG47O1xuXG5tb2R1bGUgQ2hlY2tfbGVuZ3RoMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIgLT4gbG9vcCBhIGIgKHNoYXJlZF9sZW5ndGggKyAxKVxuICAgICAgfCBbXSwgXyB8IF8sIFtdIC0+IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGIgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDJfZXhuIG5hbWUgbDEgbDIgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2IgfSAtPlxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCJcbiAgICAgIG5hbWVcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYSlcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYilcbiAgICAgICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDIub2ZfbGlzdHMgbDEgbDIgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9XG4gICAgfCBTYW1lX2xlbmd0aCBvZiBpbnRcbiAgICB8IFVuZXF1YWxfbGVuZ3RocyBvZlxuICAgICAgICB7IHNoYXJlZF9sZW5ndGggOiBpbnRcbiAgICAgICAgOyB0YWlsX29mX2EgOiAnYSBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9iIDogJ2IgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYyA6ICdjIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgbDMgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgYyBzaGFyZWRfbGVuZ3RoID1cbiAgICAgIG1hdGNoIGEsIGIsIGMgd2l0aFxuICAgICAgfCBbXSwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIsIF8gOjogYyAtPiBsb29wIGEgYiBjIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBbXSwgXyB8IF8sIF8sIFtdIC0+XG4gICAgICAgIFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGI7IHRhaWxfb2ZfYyA9IGMgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBsMyAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDNfZXhuIG5hbWUgbDEgbDIgbDMgPVxuICBtYXRjaCBDaGVja19sZW5ndGgzLm9mX2xpc3RzIGwxIGwyIGwzIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2I7IHRhaWxfb2ZfYyB9IC0+XG4gICAgbGV0IG4xID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EgaW5cbiAgICBsZXQgbjIgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYiBpblxuICAgIGxldCBuMyA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9jIGluXG4gICAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZCB8fCAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgbjIgbjMgKClcbjs7XG5cbmxldCBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiBPcl91bmVxdWFsX2xlbmd0aHMuT2sgKGYgbDEgbDIgbDMpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIF8gLT4gVW5lcXVhbF9sZW5ndGhzXG47O1xuXG5sZXQgaXRlcjIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihpdGVyMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgaXRlcjJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJpdGVyMl9leG5cIiBsMSBsMjtcbiAgaXRlcjJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KHJldl9tYXAyX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCByZXZfbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcInJldl9tYXAyX2V4blwiIGwxIGwyO1xuICByZXZfbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGZvbGQyIGwxIGwyIH5pbml0IH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9sZDJfb2sgfmluaXQgfmYpIFtAbm9udGFpbF1cblxubGV0IGZvbGQyX2V4biBsMSBsMiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9sZDJfZXhuXCIgbDEgbDI7XG4gIGZvbGQyX29rIGwxIGwyIH5pbml0IH5mXG47O1xuXG5sZXQgZm9sZF9yaWdodDIgbDEgbDIgfmYgfmluaXQgPVxuICBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb2xkX3JpZ2h0Ml9vayB+ZiB+aW5pdCkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfcmlnaHQyX2V4biBsMSBsMiB+ZiB+aW5pdCA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9sZF9yaWdodDJfZXhuXCIgbDEgbDI7XG4gIGZvbGRfcmlnaHQyX29rIGwxIGwyIH5mIH5pbml0XG47O1xuXG5sZXQgZm9yX2FsbDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb3JfYWxsMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgZm9yX2FsbDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb3JfYWxsMl9leG5cIiBsMSBsMjtcbiAgZm9yX2FsbDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBleGlzdHMyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZXhpc3RzMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgZXhpc3RzMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImV4aXN0czJfZXhuXCIgbDEgbDI7XG4gIGV4aXN0czJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBlcXVhbCBhID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBiIDo6IGJzIC0+IGVxdWFsIGEgYiB8fCBsb29wIGVxdWFsIGEgYnNcbiAgaW5cbiAgbG9vcCBlcXVhbCBhIHRcbjs7XG5cbigqIFRoaXMgaXMgYSBjb3B5IG9mIHRoZSBjb2RlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggYW4gZXh0cmEgZXRhLWV4cGFuc2lvbiB0b1xuICAgYXZvaWQgY3JlYXRpbmcgcGFydGlhbCBjbG9zdXJlcyAoc2hvd2VkIHVwIGZvciBbZmlsdGVyXSkgaW4gcHJvZmlsaW5nKS4gKilcbmxldCByZXZfZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVjIGZpbmQgfmYgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gZmluZCB+ZiAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCB+ZiBhY2N1IGxcbiAgaW5cbiAgZmluZCB+ZiBbXSB0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSByZXYgKHJldl9maWx0ZXIgdCB+ZilcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBsXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICBpblxuICBsb29wIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwX2V4blxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgbG9vcCBsXG4gIGluXG4gIGxvb3AgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJlYyBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgeCA6OiB0IC0+IGlmIGYgeCB0aGVuIHggZWxzZSBmaW5kX2V4biB0IH5mXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiBpIHggdGhlbiBTb21lIChpLCB4KSBlbHNlIGxvb3AgKGkgKyAxKSBsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgZmluZGlfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBsKVxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXBpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgJiYgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgfHwgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbigqKiBGb3IgdGhlIGNvbnRhaW5lciBpbnRlcmZhY2UuICopXG5sZXQgZm9sZF9sZWZ0ID0gZm9sZFxuXG5sZXQgb2ZfYXJyYXkgPSBBcnJheS50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBBcnJheS5vZl9saXN0XG5sZXQgdG9fbGlzdCB0ID0gdFxuXG5sZXQgbWF4X25vbl90YWlsY2FsbCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMV8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQncyBzbWFsbC4gVGhpc1xuICAgICBudW1iZXIgd2FzIHRha2VuIGZyb20gb2NhbWwjc3RkbGliL2xpc3QubWwgd2hpY2ggaXMgYWxzbyBlcXVhbCB0byB0aGUgZGVmYXVsdCBsaW1pdFxuICAgICBvZiByZWN1cnNpdmUgY2FsbCBpbiB0aGUganNfb2Zfb2NhbWwgY29tcGlsZXIgYmVmb3JlIHN3aXRjaGluZyB0byB0cmFtcG9saW5lLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG47O1xuXG4oKiogVGFpbCByZWN1cnNpdmUgdmVyc2lvbnMgb2Ygc3RhbmRhcmQgW0xpc3RdIG1vZHVsZSAqKVxuXG5sZXQgdGFpbF9hcHBlbmQgbDEgbDIgPSByZXZfYXBwZW5kIChyZXYgbDEpIGwyXG5cbigqIFRoZXJlIGFyZSBhIGZldyBvcHRpbWl6ZWQgbGlzdCBvcGVyYXRpb25zIGhlcmUsIGluY2x1ZGluZyBhcHBlbmQgYW5kIG1hcC4gIFRoZXJlIGFyZVxuICAgYmFzaWNhbGx5IHR3byBvcHRpbWl6YXRpb25zIGluIHBsYXk6IGxvb3AgdW5yb2xsaW5nLCBhbmQgZHluYW1pYyBzd2l0Y2hpbmcgYmV0d2VlblxuICAgc3RhY2sgYW5kIGhlYXAgYWxsb2NhdGlvbi5cblxuICAgVGhlIGxvb3AtdW5yb2xsaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZCwgd2UganVzdCB1bnJvbGwgNSBsZXZlbHMgb2YgdGhlIGxvb3AuICBUaGlzIG1ha2VzXG4gICBlYWNoIGl0ZXJhdGlvbiBmYXN0ZXIsIGFuZCBhbHNvIHJlZHVjZXMgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgY29uc3VtZWQgcGVyIGxpc3RcbiAgIGVsZW1lbnQuXG5cbiAgIFRoZSBkeW5hbWljIHN3aXRjaGluZyBpcyBkb25lIGJ5IGNvdW50aW5nIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzLCBhbmQgdGhlblxuICAgc3dpdGNoaW5nIHRvIHRoZSBcInNsb3dcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIHdlIGV4Y2VlZCBhIGdpdmVuIGxpbWl0LiAgVGhpcyBtZWFucyB0aGF0XG4gICBzaG9ydCBsaXN0cyB1c2UgdGhlIGZhc3Qgc3RhY2stYWxsb2NhdGlvbiBtZXRob2QsIGFuZCBsb25nIGxpc3RzIHVzZSBhIHNsb3dlciBvbmUgdGhhdFxuICAgZG9lc24ndCByZXF1aXJlIHN0YWNrIHNwYWNlLiAqKVxubGV0IHJlYyBjb3VudF9hcHBlbmQgbDEgbDIgY291bnQgPVxuICBtYXRjaCBsMiB3aXRoXG4gIHwgW10gLT4gbDFcbiAgfCBfIC0+XG4gICAgKG1hdGNoIGwxIHdpdGhcbiAgICAgfCBbXSAtPiBsMlxuICAgICB8IFsgeDEgXSAtPiB4MSA6OiBsMlxuICAgICB8IFsgeDE7IHgyIF0gLT4geDEgOjogeDIgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDMgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiBsMlxuICAgICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiBsMlxuICAgICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgICAgeDFcbiAgICAgICA6OiB4MlxuICAgICAgIDo6IHgzXG4gICAgICAgOjogeDRcbiAgICAgICA6OiB4NVxuICAgICAgIDo6XG4gICAgICAgKGlmIGNvdW50ID4gbWF4X25vbl90YWlsY2FsbFxuICAgICAgICB0aGVuIHRhaWxfYXBwZW5kIHRsIGwyXG4gICAgICAgIGVsc2UgY291bnRfYXBwZW5kIHRsIGwyIChjb3VudCArIDEpKSlcbjs7XG5cbmxldCBhcHBlbmQgbDEgbDIgPSBjb3VudF9hcHBlbmQgbDEgbDIgMFxuXG4oKiBBbiBvcmRpbmFyeSB0YWlsIHJlY3Vyc2l2ZSBtYXAgYnVpbGRzIHVwIGFuIGludGVybWVkaWF0ZSAocmV2ZXJzZWQpIHJlcHJlc2VudGF0aW9uLFxuICAgd2l0aCBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0IHBlciBlbGVtZW50LiBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIGluc3RlYWQgY2h1bmtzXG4gICA5IG9iamVjdHMgaW50byBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0LCByZWR1Y2luZyBhbGxvY2F0aW9uIGFuZCBwZXJmb3JtYW5jZSBjb3N0c1xuICAgYWNjb3JkaW5nbHkuIE5vdGUgdGhhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGxpc3QgaXMgZG9uZSBieSB0aGUgc3RkbGliJ3MgbWFwXG4gICBmdW5jdGlvbi4gKilcbmxldCB0YWlsX21hcCB4cyB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIHJpc2UgeXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4geXNcbiAgICB8ICh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicyAtPlxuICAgICAgcmlzZSAoeTAgOjogeTEgOjogeTIgOjogeTMgOjogeTQgOjogeTUgOjogeTYgOjogeTcgOjogeTggOjogeXMpIGJzXG4gIGluXG4gIGxldCByZWMgZGl2ZSBicyA9IGZ1bmN0aW9uXG4gICAgfCB4MCA6OiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB4NiA6OiB4NyA6OiB4OCA6OiB4cyAtPlxuICAgICAgbGV0IHkwID0gZiB4MCBpblxuICAgICAgbGV0IHkxID0gZiB4MSBpblxuICAgICAgbGV0IHkyID0gZiB4MiBpblxuICAgICAgbGV0IHkzID0gZiB4MyBpblxuICAgICAgbGV0IHk0ID0gZiB4NCBpblxuICAgICAgbGV0IHk1ID0gZiB4NSBpblxuICAgICAgbGV0IHk2ID0gZiB4NiBpblxuICAgICAgbGV0IHk3ID0gZiB4NyBpblxuICAgICAgbGV0IHk4ID0gZiB4OCBpblxuICAgICAgZGl2ZSAoKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzKSB4c1xuICAgIHwgeHMgLT4gcmlzZSAobm9udGFpbF9tYXAgfmYgeHMpIGJzXG4gIGluXG4gIGxldCByZXMgPSBkaXZlIFtdIHhzIGluXG4gIHJlc1xuOztcblxubGV0IHJlYyBjb3VudF9tYXAgfmY6KGYgW0Bsb2NhbF0pIGwgY3RyID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBbIHgxIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgWyBmMSBdXG4gIHwgWyB4MTsgeDIgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgWyBmMTsgZjIgXVxuICB8IFsgeDE7IHgyOyB4MyBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgWyBmMTsgZjI7IGYzIF1cbiAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgWyBmMTsgZjI7IGYzOyBmNCBdXG4gIHwgeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogdGwgLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgbGV0IGY1ID0gZiB4NSBpblxuICAgIGYxXG4gICAgOjogZjJcbiAgICA6OiBmM1xuICAgIDo6IGY0XG4gICAgOjogZjVcbiAgICA6OiAoaWYgY3RyID4gbWF4X25vbl90YWlsY2FsbCB0aGVuIHRhaWxfbWFwIH5mIHRsIGVsc2UgY291bnRfbWFwIH5mIHRsIChjdHIgKyAxKSlcbjs7XG5cbmxldCBtYXAgbCB+ZiA9IGNvdW50X21hcCB+ZiBsIDBcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCAoID4+fCApIGwgZiA9IG1hcCBsIH5mXG5sZXQgbWFwMl9vayBsMSBsMiB+ZiA9IHJldiAocmV2X21hcDJfb2sgbDEgbDIgfmYpXG5sZXQgbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KG1hcDJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IG1hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJtYXAyX2V4blwiIGwxIGwyO1xuICBtYXAyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmYgPVxuICBsZXQgcmVjIGxvb3AgbDEgbDIgbDMgYWMgPVxuICAgIG1hdGNoIGwxLCBsMiwgbDMgd2l0aFxuICAgIHwgW10sIFtdLCBbXSAtPiBhY1xuICAgIHwgeDEgOjogbDEsIHgyIDo6IGwyLCB4MyA6OiBsMyAtPiBsb29wIGwxIGwyIGwzIChmIHgxIHgyIHgzIDo6IGFjKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbG9vcCBsMSBsMiBsMyBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmV2X21hcDMgbDEgbDIgbDMgfmYgPSBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mOihyZXZfbWFwM19vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgcmV2X21hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJyZXZfbWFwM19leG5cIiBsMSBsMiBsMztcbiAgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCBtYXAzX29rIGwxIGwyIGwzIH5mID0gcmV2IChyZXZfbWFwM19vayBsMSBsMiBsMyB+ZilcbmxldCBtYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoobWFwM19vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgbWFwM19leG4gbDEgbDIgbDMgfmYgPVxuICBjaGVja19sZW5ndGgzX2V4biBcIm1hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIG1hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmQgbDEgbDIgfmYgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT4gbDJcbiAgfCBoIDo6IHQgLT4gcmV2X21hcF9hcHBlbmQgfmYgdCAoZiBoIDo6IGwyKVxuOztcblxubGV0IHVuemlwIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDJcbiAgICB8ICh4LCB5KSA6OiB0bCAtPiBsb29wIHRsICh4IDo6IGwxKSAoeSA6OiBsMilcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdXG47O1xuXG5sZXQgdW56aXAzIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiBsMyA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDIsIGwzXG4gICAgfCAoeCwgeSwgeikgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpICh6IDo6IGwzKVxuICBpblxuICBsb29wIChyZXYgbGlzdCkgW10gW10gW11cbjs7XG5cbmxldCB6aXBfZXhuIGwxIGwyID1cbiAgdHJ5IG1hcDJfb2sgfmY6KGZ1biBhIGIgLT4gYSwgYikgbDEgbDIgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluIHppcF9leG46ICVkIDw+ICVkXCIgKGxlbmd0aCBsMSkgKGxlbmd0aCBsMikgKClcbjs7XG5cbmxldCB6aXAgbDEgbDIgPSBtYXAyIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyXG5cbigqKiBBZGRpdGlvbmFsIGxpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmV2X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGggOjogdCAtPiBsb29wIChpICsgMSkgKGYgaSBoIDo6IGFjYykgdFxuICBpblxuICBsb29wIDAgW10gbCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwaSBsIH5mID0gcmV2IChyZXZfbWFwaSBsIH5mKVxuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGl0ZXJpIGwgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCBsIH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIHNuZCAoZm9sZCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHYgLT4gaSArIDEsIGYgaSBhY2MgdikpXG47O1xuXG5sZXQgZmlsdGVyaSBsIH5mID1cbiAgcmV2IChmb2xkaSBsIH5mOihmdW4gcG9zIGFjYyB4IC0+IGlmIGYgcG9zIHggdGhlbiB4IDo6IGFjYyBlbHNlIGFjYykgfmluaXQ6W10pXG47O1xuXG5sZXQgcmVkdWNlIGwgfmYgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgaGQgOjogdGwgLT4gU29tZSAoZm9sZCB+aW5pdDpoZCB+ZiB0bClcbjs7XG5cbmxldCByZWR1Y2VfZXhuIGwgfmYgPVxuICBtYXRjaCByZWR1Y2UgbCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCByZWR1Y2VfYmFsYW5jZWQgbCB+ZiA9XG4gICgqIENhbGwgdGhlIFwic2l6ZVwiIG9mIGEgdmFsdWUgdGhlIG51bWJlciBvZiBsaXN0IGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGNvbWJpbmVkIGludG9cbiAgICAgaXQgdmlhIGNhbGxzIHRvIFtmXS4gIFdlIHByb2NlZWQgYnkgdXNpbmcgW2ZdIHRvIGNvbWJpbmUgZWxlbWVudHMgaW4gdGhlIGFjY3VtdWxhdG9yXG4gICAgIG9mIHRoZSBzYW1lIHNpemUgdW50aWwgd2UgY2FuJ3QgY29tYmluZSBhbnkgbW9yZSwgdGhlbiBnZXR0aW5nIGEgbmV3IGVsZW1lbnQgZnJvbSB0aGVcbiAgICAgaW5wdXQgbGlzdCBhbmQgcmVwZWF0aW5nLlxuXG4gICAgIFdpdGggdGhpcyBzdHJhdGVneSwgaW4gdGhlIGFjY3VtdWxhdG9yOlxuICAgICAtIHdlIG9ubHkgZXZlciBoYXZlIGVsZW1lbnRzIG9mIHNpemVzIGEgcG93ZXIgb2YgdHdvXG4gICAgIC0gd2UgbmV2ZXIgaGF2ZSBtb3JlIHRoYW4gb25lIGVsZW1lbnQgb2YgZWFjaCBzaXplXG4gICAgIC0gdGhlIHN1bSBvZiBhbGwgdGhlIGVsZW1lbnQgc2l6ZXMgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZFxuXG4gICAgIFRoZXNlIGNvbmRpdGlvbnMgZW5mb3JjZSB0aGF0IGxpc3Qgb2YgZWxlbWVudHMgb2YgZWFjaCBzaXplIGlzIHByZWNpc2VseSB0aGUgYmluYXJ5XG4gICAgIGV4cGFuc2lvbiBvZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnN1bWVkOiBpZiB5b3UndmUgY29uc3VtZWQgMTMgPSAwYjExMDFcbiAgICAgZWxlbWVudHMsIHlvdSBoYXZlIG9uZSBlbGVtZW50IG9mIHNpemUgOCwgb25lIG9mIHNpemUgNCwgYW5kIG9uZSBvZiBzaXplIDEuICBIZW5jZVxuICAgICB3aGVuIGEgbmV3IGVsZW1lbnQgY29tZXMgYWxvbmcsIHRoZSBudW1iZXIgb2YgY29tYmluaW5ncyB5b3UgbmVlZCB0byBkbyBpcyB0aGUgbnVtYmVyXG4gICAgIG9mIHRyYWlsaW5nIDFzIGluIHRoZSBiaW5hcnkgZXhwYW5zaW9uIG9mIFtudW1dLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgaGF2ZVxuICAgICBhbHJlYWR5IGdvbmUgaW50byB0aGUgYWNjdW11bGF0b3IuICBUaGUgYWNjdW11bGF0b3IgaXMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHNpemUsIHNvXG4gICAgIHRoZSBuZXh0IGVsZW1lbnQgdG8gY29tYmluZSB3aXRoIGlzIGFsd2F5cyB0aGUgaGVhZCBvZiB0aGUgbGlzdC4gKilcbiAgbGV0IHJlYyBzdGVwX2FjY3VtIG51bSBhY2MgeCA9XG4gICAgaWYgbnVtIGxhbmQgMSA9IDBcbiAgICB0aGVuIHggOjogYWNjXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIE5ldyBlbGVtZW50cyBmcm9tIGxhdGVyIGluIHRoZSBpbnB1dCBsaXN0IGdvIG9uIHRoZSBmcm9udCBvZiB0aGUgYWNjdW11bGF0b3IsIHNvXG4gICAgICAgICB0aGUgYWNjdW11bGF0b3IgaXMgaW4gcmV2ZXJzZSBvcmRlciB3cnQgdGhlIG9yaWdpbmFsIGxpc3Qgb3JkZXIsIGhlbmNlIFtmIHkgeF1cbiAgICAgICAgIGluc3RlYWQgb2YgW2YgeCB5XS4gKilcbiAgICAgIHwgeSA6OiB5cyAtPiBzdGVwX2FjY3VtIChudW0gYXNyIDEpIHlzIChmIHkgeCkpXG4gIGluXG4gICgqIEV4cGVyaW1lbnRhbGx5LCBpbmxpbmluZyBbZm9sZGldIGFuZCB1bnJvbGxpbmcgdGhpcyBsb29wIGEgZmV3IHRpbWVzIGNhbiByZWR1Y2VcbiAgICAgcnVudGltZSBkb3duIHRvIGEgdGhpcmQgYW5kIGFsbG9jYXRpb24gdG8gMS8xNnRoIG9yIHNvIGluIHRoZSBtaWNyb2JlbmNobWFya3MgYmVsb3cuXG4gICAgIEhvd2V2ZXIsIGluIG1vc3QgdXNlIGNhc2VzIFtmXSBpcyBsaWtlbHkgdG8gYmUgZXhwZW5zaXZlIChvdGhlcndpc2Ugd2h5IGRvIHlvdSBjYXJlXG4gICAgIGFib3V0IHRoZSBvcmRlciBvZiByZWR1Y3Rpb24/KSBzbyB0aGUgb3ZlcmhlYWQgb2YgdGhpcyBmdW5jdGlvbiBpdHNlbGYgZG9lc24ndCByZWFsbHlcbiAgICAgbWF0dGVyLiBJZiB5b3UgY29tZSB1cCB3aXRoIGEgdXNlLWNhc2Ugd2hlcmUgaXQgZG9lcywgdGhlbiB0aGF0J3Mgc29tZXRoaW5nIHlvdSBtaWdodFxuICAgICB3YW50IHRvIHRyeTogc2VlIGhnIGxvZyAtcHIgNDllZjA2NWY0MjlkLiAqKVxuICBtYXRjaCBmb2xkaSBsIH5pbml0OltdIH5mOnN0ZXBfYWNjdW0gd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IFNvbWUgKGZvbGQgeHMgfmluaXQ6eCB+ZjooZnVuIHggeSAtPiBmIHkgeCkpXG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlX2JhbGFuY2VkIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9iYWxhbmNlZF9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgZ3JvdXBpIGwgfmJyZWFrID1cbiAgbGV0IGdyb3VwcyA9XG4gICAgZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIHggLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IFtdIC0+IFsgWyB4IF0gXVxuICAgICAgfCBjdXJyZW50X2dyb3VwIDo6IHRsIC0+XG4gICAgICAgIGlmIGJyZWFrIGkgKGhkX2V4biBjdXJyZW50X2dyb3VwKSB4XG4gICAgICAgIHRoZW4gWyB4IF0gOjogY3VycmVudF9ncm91cCA6OiB0bCAoKiBzdGFydCBuZXcgZ3JvdXAgKilcbiAgICAgICAgZWxzZSAoeCA6OiBjdXJyZW50X2dyb3VwKSA6OiB0bClcbiAgICAoKiBleHRlbmQgY3VycmVudCBncm91cCAqKVxuICBpblxuICBtYXRjaCBncm91cHMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgbCAtPiByZXZfbWFwIGwgfmY6cmV2XG47O1xuXG5sZXQgZ3JvdXAgbCB+YnJlYWsgPSBncm91cGkgbCB+YnJlYWs6KGZ1biBfIHggeSAtPiBicmVhayB4IHkpIFtAbm9udGFpbF1cblxubGV0IHNvcnRfYW5kX2dyb3VwIGwgfmNvbXBhcmUgPVxuICBsIHw+IHN0YWJsZV9zb3J0IH5jb21wYXJlIHw+IGdyb3VwIH5icmVhazooZnVuIHggeSAtPiBjb21wYXJlIHggeSA8PiAwKVxuOztcblxubGV0IGNvbmNhdF9tYXAgbCB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChyZXZfYXBwZW5kIChmIGhkKSBhY2MpIHRsXG4gIGluXG4gIGxldCByZXMgPSBhdXggW10gbCBpblxuICByZXNcbjs7XG5cbmxldCBjb25jYXRfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBhdXggY29udCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChjb250ICsgMSkgKHJldl9hcHBlbmQgKGYgY29udCBoZCkgYWNjKSB0bFxuICBpblxuICBhdXggMCBbXSBsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtZXJnZSBsMSBsMiB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBhY2MgbDJcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGFjYyBsMVxuICAgIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjb21wYXJlIGgxIGgyIDw9IDAgdGhlbiBsb29wIChoMSA6OiBhY2MpIHQxIGwyIGVsc2UgbG9vcCAoaDIgOjogYWNjKSBsMSB0MlxuICBpblxuICBsb29wIFtdIGwxIGwyIFtAbm9udGFpbF1cbjs7XG5cbm1vZHVsZSBDYXJ0ZXNpYW5fcHJvZHVjdCA9IHN0cnVjdFxuICAoKiBXZSBhcmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZSBleHBvcnQgZnJvbSBmdW5jdG9ycyBzbyB0aGF0IHdlIGRvbid0IGFjY2lkZW50YWxseVxuICAgICByZWJpbmQgbW9yZSBlZmZpY2llbnQgbGlzdC1zcGVjaWZpYyBmdW5jdGlvbnMuICopXG5cbiAgbGV0IGJpbmQgPSBjb25jYXRfbWFwXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcDIgYSBiIH5mID0gY29uY2F0X21hcCBhIH5mOihmdW4geCAtPiBtYXAgYiB+ZjooZnVuIHkgLT4gZiB4IHkpKVxuICBsZXQgcmV0dXJuIHggPSBbIHggXVxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgdCAoZiBbQGxvY2FsXSkgPSBiaW5kIHQgfmZcblxuICBvcGVuIHN0cnVjdFxuICAgIG1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBsZXQgbWFwMiA9IG1hcDJcbiAgICAgIGVuZClcblxuICAgIG1vZHVsZSBNb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGxldCBhbGwgPSBNb25hZC5hbGxcbiAgbGV0IGFsbF91bml0ID0gTW9uYWQuYWxsX3VuaXRcbiAgbGV0IGlnbm9yZV9tID0gTW9uYWQuaWdub3JlX21cbiAgbGV0IGpvaW4gPSBNb25hZC5qb2luXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG4gIGVuZFxuXG4gIGxldCBhcHBseSA9IEFwcGxpY2F0aXZlLmFwcGx5XG4gIGxldCBib3RoID0gQXBwbGljYXRpdmUuYm90aFxuICBsZXQgbWFwMyA9IEFwcGxpY2F0aXZlLm1hcDNcbiAgbGV0ICggPCo+ICkgPSBBcHBsaWNhdGl2ZS4oIDwqPiApXG4gIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgICBsZXQgKCA8KiApID0gQXBwbGljYXRpdmUuKCA8KiApXG4gIGVuZFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoQ2FydGVzaWFuX3Byb2R1Y3QgOiBNb25hZC5TX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbigqKiByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0X2V4biBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4geFxuICB8IF8gOjogdGwgLT4gbGFzdF9leG4gdGxcbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubGFzdFwiXG47O1xuXG4oKiogb3B0aW9uYWxseSByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0IGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbIHggXSAtPiBTb21lIHhcbiAgfCBfIDo6IHRsIC0+IGxhc3QgdGxcbiAgfCBbXSAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGlzX3ByZWZpeCBsaXN0IH5wcmVmaXggfmVxdWFsID1cbiAgbWF0Y2ggcHJlZml4IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgaGQgOjogdGwgLT5cbiAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgIHwgW10gLT4gZmFsc2VcbiAgICAgfCBoZCcgOjogdGwnIC0+IGVxdWFsIGhkIGhkJyAmJiBpc19wcmVmaXggdGwnIH5wcmVmaXg6dGwgfmVxdWFsKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGExIDo6IHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgYTEgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhMiA6OiB0IC0+IGlmIGVxdWFsIGExIGEyIHRoZW4gU29tZSAoYTEsIGEyKSBlbHNlIGxvb3AgYTIgdFxuICAgIGluXG4gICAgbG9vcCBhMSB0IFtAbm9udGFpbF1cbjs7XG5cbigqIHJldHVybnMgbGlzdCB3aXRob3V0IGFkamFjZW50IGR1cGxpY2F0ZXMgKilcbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyA/KHdoaWNoX3RvX2tlZXAgPSBgTGFzdCkgbGlzdCB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgdG9fa2VlcCBhY2N1bSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB0b19rZWVwIDo6IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgZXF1YWwgaGQgdG9fa2VlcFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0b19rZWVwID1cbiAgICAgICAgICBtYXRjaCB3aGljaF90b19rZWVwIHdpdGhcbiAgICAgICAgICB8IGBGaXJzdCAtPiB0b19rZWVwXG4gICAgICAgICAgfCBgTGFzdCAtPiBoZFxuICAgICAgICBpblxuICAgICAgICBsb29wIHRvX2tlZXAgYWNjdW0gdGwpXG4gICAgICBlbHNlIGxvb3AgaGQgKHRvX2tlZXAgOjogYWNjdW0pIHRsXG4gIGluXG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gcmV2IChsb29wIGhkIFtdIHRsKVxuOztcblxuKCoqIHJldHVybnMgc29ydGVkIHZlcnNpb24gb2YgbGlzdCB3aXRoIGR1cGxpY2F0ZXMgcmVtb3ZlZCAqKVxubGV0IGRlZHVwX2FuZF9zb3J0IGxpc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3QgKCogcGVyZm9ybWFuY2UgaGFjayAqKVxuICB8IF8gLT5cbiAgICBsZXQgZXF1YWwgeCB4JyA9IGNvbXBhcmUgeCB4JyA9IDAgaW5cbiAgICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsaXN0IGluXG4gICAgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgfmVxdWFsIHNvcnRlZCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9hX2R1cCBsIH5jb21wYXJlID1cbiAgbGV0IHNvcnRlZCA9IHNvcnQgbCB+Y29tcGFyZSBpblxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IE5vbmVcbiAgICB8IGhkMSA6OiAoaGQyIDo6IF8gYXMgdGwpIC0+IGlmIGNvbXBhcmUgaGQxIGhkMiA9IDAgdGhlbiBTb21lIGhkMSBlbHNlIGxvb3AgdGxcbiAgaW5cbiAgbG9vcCBzb3J0ZWQgW0Bub250YWlsXVxuOztcblxubGV0IGNvbnRhaW5zX2R1cCBsc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBmaW5kX2FfZHVwIGxzdCB+Y29tcGFyZSB3aXRoXG4gIHwgU29tZSBfIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZmluZF9hbGxfZHVwcyBsIH5jb21wYXJlID1cbiAgKCogV2UgYWRkIHRoaXMgcmV2ZXJzYWwsIHNvIHdlIGNhbiBza2lwIGEgW3Jldl0gYXQgdGhlIGVuZC4gV2UgY291bGQgc2tpcFxuICAgICBbcmV2XSBhbnl3YXkgc2luY2Ugd2UgZG9uIG5vdCBnaXZlIGFueSBvcmRlcmluZyBndWFyYW50ZWVzLCBidXQgaXQgaXNcbiAgICAgbmljZSB0byBnZXQgcmVzdWx0cyBpbiBuYXR1cmFsIG9yZGVyLiAqKVxuICBsZXQgY29tcGFyZSBhIGIgPSBjb21wYXJlIGIgYSBpblxuICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsIGluXG4gICgqIFdhbGsgdGhlIGxpc3QgYW5kIHJlY29yZCB0aGUgZmlyc3Qgb2YgZWFjaCBjb25zZWN1dGl2ZSBydW4gb2YgaWRlbnRpY2FsIGVsZW1lbnRzICopXG4gIGxldCByZWMgbG9vcCBzb3J0ZWQgcHJldiB+YWxyZWFkeV9yZWNvcmRlZCBhY2MgPVxuICAgIG1hdGNoIHNvcnRlZCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBjb21wYXJlIHByZXYgaGQgPD4gMFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIGFjY1xuICAgICAgZWxzZSBpZiBhbHJlYWR5X3JlY29yZGVkXG4gICAgICB0aGVuIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSBhY2NcbiAgICAgIGVsc2UgbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDp0cnVlIChoZCA6OiBhY2MpXG4gIGluXG4gIG1hdGNoIHNvcnRlZCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWMgYWxsX2VxdWFsX3RvIHQgdiB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgeCA6OiB4cyAtPiBlcXVhbCB4IHYgJiYgYWxsX2VxdWFsX3RvIHhzIHYgfmVxdWFsXG47O1xuXG5sZXQgYWxsX2VxdWFsIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogeHMgLT4gaWYgYWxsX2VxdWFsX3RvIHhzIHggfmVxdWFsIHRoZW4gU29tZSB4IGVsc2UgTm9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudCkgW0Bub250YWlsXVxuOztcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGFzc2VydCAoaSA+PSAwKTtcbiAgICBpZiBpID0gMCB0aGVuIGFjY3VtIGVsc2UgbG9vcCAoaSAtIDEpIChmIChpIC0gMSkgOjogYWNjdW0pXG4gIGluXG4gIGxvb3AgbiBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmV2X2ZpbHRlcl9tYXAgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgbCBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyX21hcCBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcCBsIH5mKVxuXG5sZXQgcmV2X2ZpbHRlcl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaSBoZCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gbG9vcCAoaSArIDEpIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgMCBsIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcGkgbCB+ZilcbmxldCBmaWx0ZXJfb3B0IGwgPSBmaWx0ZXJfbWFwIGwgfmY6Rm4uaWRcblxubGV0IHBhcnRpdGlvbjNfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kIHRyZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kLCByZXYgdHJkXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgYEZzdCB5IC0+IGxvb3AgdCAoeSA6OiBmc3QpIHNuZCB0cmRcbiAgICAgICB8IGBTbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkgdHJkXG4gICAgICAgfCBgVHJkIHkgLT4gbG9vcCB0IGZzdCBzbmQgKHkgOjogdHJkKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCBmIHggOiBfIEVpdGhlci50ID0gaWYgZiB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4IGluXG4gIHBhcnRpdGlvbl9tYXAgdCB+ZiBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcGFydGl0aW9uX3Jlc3VsdCB0ID0gcGFydGl0aW9uX21hcCB0IH5mOlJlc3VsdC50b19laXRoZXJcblxubW9kdWxlIEFzc29jID0gc3RydWN0XG4gIHR5cGUgJ2Ega2V5ID0gKCdhW0B0YWcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX2tleV90YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQga2V5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGtleSA9XG4gICAgZnVuIF9vZl9hX18wMThfIC0+IF9vZl9hX18wMThfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2Zfa2V5IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGtleSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biBfb2ZfYV9fMDIwXyAtPiBfb2ZfYV9fMDIwX1xuICA7O1xuXG4gIGxldCBrZXlfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGtleSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnXG4gICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIHZhbHVlID0gKCdhW0B0YWcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3ZhbHVlX3RhZyA9IExpc3QgW11dKVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB2YWx1ZV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB2YWx1ZSA9XG4gICAgZnVuIF9vZl9hX18wMjFfIC0+IF9vZl9hX18wMjFfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdmFsdWUgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdmFsdWUgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAyM18gLT4gX29mX2FfXzAyM19cbiAgOztcblxuICBsZXQgdmFsdWVfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdmFsdWUgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWdcbiAgICAgICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgKCgnYSBrZXkgKiAnYiB2YWx1ZSkgbGlzdFtAdGFnIFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY190YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMzJfID0gXCJsaXN0Lm1sLkFzc29jLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDI0XyBfb2ZfYl9fMDI1XyB4X18wMzNfIC0+XG4gICAgICBsaXN0X29mX3NleHBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wMjdfOyBhcmcxX18wMjhfIF0gLT5cbiAgICAgICAgICAgIGxldCByZXMwX18wMjlfID0ga2V5X29mX3NleHAgX29mX2FfXzAyNF8gYXJnMF9fMDI3X1xuICAgICAgICAgICAgYW5kIHJlczFfXzAzMF8gPSB2YWx1ZV9vZl9zZXhwIF9vZl9iX18wMjVfIGFyZzFfXzAyOF8gaW5cbiAgICAgICAgICAgIHJlczBfXzAyOV8sIHJlczFfXzAzMF9cbiAgICAgICAgICB8IHNleHBfXzAzMV8gLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMzJfXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgc2V4cF9fMDMxXylcbiAgICAgICAgeF9fMDMzX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfYV9fMDM0XyBfb2ZfYl9fMDM1XyB4X18wNDBfIC0+XG4gICAgICBzZXhwX29mX2xpc3RcbiAgICAgICAgKGZ1biAoYXJnMF9fMDM2XywgYXJnMV9fMDM3XykgLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAzOF8gPSBzZXhwX29mX2tleSBfb2ZfYV9fMDM0XyBhcmcwX18wMzZfXG4gICAgICAgICAgIGFuZCByZXMxX18wMzlfID0gc2V4cF9vZl92YWx1ZSBfb2ZfYl9fMDM1XyBhcmcxX18wMzdfIGluXG4gICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzAzOF87IHJlczFfXzAzOV8gXSlcbiAgICAgICAgeF9fMDQwX1xuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2EgJ2IuXG4gICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBUYWdnZWRcbiAgICAgICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3RhZ1xuICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgKGxpc3Rfc2V4cF9ncmFtbWFyXG4gICAgICAgICAgICAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoa2V5X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyKS51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zICgodmFsdWVfc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIpLnVudHlwZWQsIEVtcHR5KSApKVxuICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnVudHlwZWRcbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBwYWlyX29mX2dyb3VwID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgKGssIF8pIDo6IF8gYXMgbGlzdCAtPiBrLCBtYXAgbGlzdCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ3JvdXAgYWxpc3QgfmVxdWFsID1cbiAgICBncm91cCBhbGlzdCB+YnJlYWs6KGZ1biAoeCwgXykgKHksIF8pIC0+IG5vdCAoZXF1YWwgeCB5KSkgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgc29ydF9hbmRfZ3JvdXAgYWxpc3QgfmNvbXBhcmUgPVxuICAgIHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlOihmdW4gKHgsIF8pICh5LCBfKSAtPiBjb21wYXJlIHggeSlcbiAgICB8PiBtYXAgfmY6cGFpcl9vZl9ncm91cFxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5mOihmdW4gKGtleScsIF8pIC0+IGVxdWFsIGtleSBrZXknKSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIChzbmQgeClcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuQXNzb2MuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICAgIGxldCBmaW5kX2V4biB0IH5lcXVhbCBrZXkgPVxuICAgICAgbWF0Y2ggZmluZCB0IGtleSB+ZXF1YWwgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHZhbHVlIC0+IHZhbHVlXG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5lcXVhbCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBfIC0+IHRydWVcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgfmVxdWFsIGtleSA9IGZpbHRlciB0IH5mOihmdW4gKGtleScsIF8pIC0+IG5vdCAoZXF1YWwga2V5IGtleScpKSBbQG5vbnRhaWxdXG5cbiAgbGV0IGFkZCB0IH5lcXVhbCBrZXkgdmFsdWUgPVxuICAgICgqIHRoZSByZW1vdmUgZG9lc24ndCBjaGFuZ2UgdGhlIG1hcCBzZW1hbnRpY3MsIGJ1dCBrZWVwcyB0aGUgbGlzdCBzbWFsbCAqKVxuICAgIChrZXksIHZhbHVlKSA6OiByZW1vdmUgdCB+ZXF1YWwga2V5XG4gIDs7XG5cbiAgbGV0IGludmVyc2UgdCA9IG1hcCB0IH5mOihmdW4gKHgsIHkpIC0+IHksIHgpXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mOihmdW4gKGtleSwgdmFsdWUpIC0+IGtleSwgZiB2YWx1ZSkgW0Bub250YWlsXVxuZW5kXG5cbmxldCBzdWIgbCB+cG9zIH5sZW4gPVxuICAoKiBXZSB1c2UgW3BvcyA+IGxlbmd0aCBsIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gbGVuZ3RoIGxdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IGxlbmd0aCBsIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnN1YlwiO1xuICByZXZcbiAgICAoZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGVsIC0+XG4gICAgICAgaWYgaSA+PSBwb3MgJiYgaSA8IHBvcyArIGxlbiB0aGVuIGVsIDo6IGFjYyBlbHNlIGFjYykpXG47O1xuXG5sZXQgc3BsaXRfbiB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdLCB0X29yaWdcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW0sIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWcsIFtdICgqIGluIHRoaXMgY2FzZSwgdF9vcmlnID0gcmV2IGFjY3VtICopXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxuKCogY29waWVkIGZyb20gW3NwbGl0X25dIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2UgdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZ1xuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbmxldCByZWMgZHJvcCB0IG4gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBfIDo6IHRsIHdoZW4gbiA+IDAgLT4gZHJvcCB0bCAobiAtIDEpXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY2h1bmtzX29mIGwgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8PSAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5jaHVua3Nfb2Y6IEV4cGVjdGVkIGxlbmd0aCA+IDAsIGdvdCAlZFwiIGxlbmd0aCAoKTtcbiAgbGV0IHJlYyBhdXggb2ZfbGVuZ3RoIGFjYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IHN1Ymxpc3QsIGwgPSBzcGxpdF9uIGwgbGVuZ3RoIGluXG4gICAgICBhdXggb2ZfbGVuZ3RoIChzdWJsaXN0IDo6IGFjYykgbFxuICBpblxuICBhdXggbGVuZ3RoIFtdIGxcbjs7XG5cbmxldCBzcGxpdF93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IHQgLT4gcmV2IGFjYywgdFxuICBpblxuICBsb29wIFtdIHhzIFtAbm9udGFpbF1cbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF93aGlsZV0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZV93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IF8gLT4gcmV2IGFjY1xuICBpblxuICBsb29wIFtdIHhzIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWMgZHJvcF93aGlsZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGRyb3Bfd2hpbGUgdGwgfmZcbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBkcm9wX2xhc3QgdCA9XG4gIG1hdGNoIHJldiB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiBsc3QgLT4gU29tZSAocmV2IGxzdClcbjs7XG5cbmxldCBkcm9wX2xhc3RfZXhuIHQgPVxuICBtYXRjaCBkcm9wX2xhc3QgdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkxpc3QuZHJvcF9sYXN0X2V4bjogZW1wdHkgbGlzdFwiXG4gIHwgU29tZSBsc3QgLT4gbHN0XG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgbGlzdDEgbGlzdDIgPVxuICBpZiBpc19lbXB0eSBsaXN0MlxuICB0aGVuIFtdXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBsMSBsMiBhY2N1bSA9XG4gICAgICBtYXRjaCBsMSB3aXRoXG4gICAgICB8IFtdIC0+IGFjY3VtXG4gICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgdGwgbDIgKHJldl9hcHBlbmQgKG1hcCB+ZjooZnVuIHggLT4gaGQsIHgpIGwyKSBhY2N1bSlcbiAgICBpblxuICAgIHJldiAobG9vcCBsaXN0MSBsaXN0MiBbXSkpXG47O1xuXG5sZXQgY29uY2F0IGwgPSBmb2xkX3JpZ2h0IGwgfmluaXQ6W10gfmY6YXBwZW5kXG5sZXQgY29uY2F0X25vX29yZGVyIGwgPSBmb2xkIGwgfmluaXQ6W10gfmY6KGZ1biBhY2MgbCAtPiByZXZfYXBwZW5kIGwgYWNjKVxubGV0IGNvbnMgeCBsID0geCA6OiBsXG5cbmxldCBpc19zb3J0ZWQgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8PSAwICYmIGxvb3AgcmVzdFxuICBpblxuICBsb29wIGwgW0Bub250YWlsXVxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDwgMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsIFtAbm9udGFpbF1cbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gICgqIHNwZWNpYWwgY2FzZXMgdG8gc3BlZWQgdGhpbmdzIHVwIGluIHRyaXZpYWwgY2FzZXMgKilcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3RcbiAgfCBbIHg7IHkgXSAtPiBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGUgdGhlbiBbIHk7IHggXSBlbHNlIGxpc3RcbiAgfCBfIC0+XG4gICAgbGV0IGFyciA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIEFycmF5X3Blcm11dGUucGVybXV0ZSBhcnIgfnJhbmRvbV9zdGF0ZTtcbiAgICBBcnJheS50b19saXN0IGFyclxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgaWYgaXNfZW1wdHkgbGlzdFxuICB0aGVuIGZhaWx3aXRoIFwiTGlzdC5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGxpc3RcIlxuICBlbHNlIG50aF9leG4gbGlzdCAoUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCBsaXN0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIGxpc3QpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY29tcGFyZSBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgaWYgbiA9IDAgdGhlbiBjb21wYXJlIGNtcCB4cyB5cyBlbHNlIG5cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF9saXN0XG5cbmxldCBlcXVhbF9sb2NhbCAoKGVxdWFsIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB0MSB0MiA9XG4gIGxldCByZWMgbG9vcCB+ZXF1YWwgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgeDEgOjogdDEsIHgyIDo6IHQyIC0+IGVxdWFsIHgxIHgyICYmIGxvb3AgfmVxdWFsIHQxIHQyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgfmVxdWFsIHQxIHQyXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIGYgeCB5IC0+IGVxdWFsX2xvY2FsIGYgeCB5XG47O1xuXG5sZXQgdHJhbnNwb3NlID1cbiAgbGV0IHJlYyBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHQgY29sdW1uX2FjYyB0cmltbWVkIGZvdW5kX2VtcHR5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGNvbHVtbl9hY2MsIHRyaW1tZWQsIGZvdW5kX2VtcHR5XG4gICAgfCBbXSA6OiB0bCAtPiBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsIGNvbHVtbl9hY2MgdHJpbW1lZCB0cnVlXG4gICAgfCAoeCA6OiB4cykgOjogdGwgLT5cbiAgICAgIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdGwgKHggOjogY29sdW1uX2FjYykgKHhzIDo6IHRyaW1tZWQpIGZvdW5kX2VtcHR5XG4gIGluXG4gIGxldCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgPSBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgW10gW10gZmFsc2UgaW5cbiAgbGV0IHJlYyBsb29wIHJvd3MgY29sdW1ucyBkb19yZXYgPVxuICAgIG1hdGNoIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyB3aXRoXG4gICAgfCBbXSwgW10sIF8gLT4gU29tZSAocmV2IGNvbHVtbnMpXG4gICAgfCBjb2x1bW4sIHRyaW1tZWRfcm93cywgZm91bmRfZW1wdHkgLT5cbiAgICAgIGlmIGZvdW5kX2VtcHR5XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY29sdW1uID0gaWYgZG9fcmV2IHRoZW4gcmV2IGNvbHVtbiBlbHNlIGNvbHVtbiBpblxuICAgICAgICBsb29wIHRyaW1tZWRfcm93cyAoY29sdW1uIDo6IGNvbHVtbnMpIChub3QgZG9fcmV2KSlcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdIHRydWVcbjs7XG5cbmV4Y2VwdGlvbiBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIG9mIGludCBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzXVxuICAgIChmdW5jdGlvblxuICAgICAgfCBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIGFyZzBfXzA0MV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzA0Ml8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9pbnQgYXJnMF9fMDQxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpc3QubWwuVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc1wiXG4gICAgICAgICAgOyByZXMwX18wNDJfXG4gICAgICAgICAgXVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0cmFuc3Bvc2VfZXhuIGwgPVxuICBtYXRjaCB0cmFuc3Bvc2UgbCB3aXRoXG4gIHwgU29tZSBsIC0+IGxcbiAgfCBOb25lIC0+IHJhaXNlIChUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIChtYXAgbCB+ZjpsZW5ndGgpKVxuOztcblxubGV0IGludGVyc3BlcnNlIHQgfnNlcCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPiB4IDo6IGZvbGRfcmlnaHQgeHMgfmluaXQ6W10gfmY6KGZ1biB5IGFjYyAtPiBzZXAgOjogeSA6OiBhY2MpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcblxubGV0IGlzX3N1ZmZpeCBsaXN0IH5zdWZmaXggfmVxdWFsOigoZXF1YWxfZWx0IDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsaXN0X2xlbiA9IGxlbmd0aCBsaXN0IGluXG4gIGxldCBzdWZmaXhfbGVuID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsaXN0X2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGVxdWFsX2xvY2FsIGVxdWFsX2VsdCAoZHJvcCBsaXN0IChsaXN0X2xlbiAtIHN1ZmZpeF9sZW4pKSBzdWZmaXhcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBhcyBtYW55IHBsYWNlcyBhcyBwb3NzaWJsZS4gUGxlYXNlIGF2b2lkXG4gICBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9faW50ZlxubW9kdWxlIENoYXIgPSBDaGFyMFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgb2YgU2V4cC50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBFeG4gb2YgZXhuXG4gICAgfCBTZXhwIG9mIFNleHAudFxuICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24wLnQgb3B0aW9uXG4gICAgfCBUYWdfdCBvZiBzdHJpbmcgKiB0XG4gICAgfCBUYWdfYXJnIG9mIHN0cmluZyAqIFNleHAudCAqIHRcbiAgICB8IE9mX2xpc3Qgb2YgaW50IG9wdGlvbiAqIHQgbGlzdFxuICAgIHwgV2l0aF9iYWNrdHJhY2Ugb2YgdCAqIHN0cmluZyAoKiBiYWNrdHJhY2UgKilcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHJlYyBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IGFyZzBfXzAwMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwMl8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvdWxkX25vdF9jb25zdHJ1Y3RcIjsgcmVzMF9fMDAyXyBdXG4gICAgICB8IFN0cmluZyBhcmcwX18wMDNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDRfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDAzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTdHJpbmdcIjsgcmVzMF9fMDA0XyBdXG4gICAgICB8IEV4biBhcmcwX18wMDVfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDZfID0gc2V4cF9vZl9leG4gYXJnMF9fMDA1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeG5cIjsgcmVzMF9fMDA2XyBdXG4gICAgICB8IFNleHAgYXJnMF9fMDA3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA4XyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMDhfIF1cbiAgICAgIHwgVGFnX3NleHAgKGFyZzBfXzAwOV8sIGFyZzFfXzAxMF8sIGFyZzJfXzAxMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA5X1xuICAgICAgICBhbmQgcmVzMV9fMDEzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAxMF9cbiAgICAgICAgYW5kIHJlczJfXzAxNF8gPSBzZXhwX29mX29wdGlvbiBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGFyZzJfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfc2V4cFwiOyByZXMwX18wMTJfOyByZXMxX18wMTNfOyByZXMyX18wMTRfIF1cbiAgICAgIHwgVGFnX3QgKGFyZzBfXzAxNV8sIGFyZzFfXzAxNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE1X1xuICAgICAgICBhbmQgcmVzMV9fMDE4XyA9IHNleHBfb2ZfdCBhcmcxX18wMTZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ190XCI7IHJlczBfXzAxN187IHJlczFfXzAxOF8gXVxuICAgICAgfCBUYWdfYXJnIChhcmcwX18wMTlfLCBhcmcxX18wMjBfLCBhcmcyX18wMjFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxOV9cbiAgICAgICAgYW5kIHJlczFfXzAyM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMjBfXG4gICAgICAgIGFuZCByZXMyX18wMjRfID0gc2V4cF9vZl90IGFyZzJfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfYXJnXCI7IHJlczBfXzAyMl87IHJlczFfXzAyM187IHJlczJfXzAyNF8gXVxuICAgICAgfCBPZl9saXN0IChhcmcwX18wMjVfLCBhcmcxX18wMjZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfaW50IGFyZzBfXzAyNV9cbiAgICAgICAgYW5kIHJlczFfXzAyOF8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90IGFyZzFfXzAyNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2ZfbGlzdFwiOyByZXMwX18wMjdfOyByZXMxX18wMjhfIF1cbiAgICAgIHwgV2l0aF9iYWNrdHJhY2UgKGFyZzBfXzAyOV8sIGFyZzFfXzAzMF8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMzFfID0gc2V4cF9vZl90IGFyZzBfXzAyOV9cbiAgICAgICAgYW5kIHJlczFfXzAzMl8gPSBzZXhwX29mX3N0cmluZyBhcmcxX18wMzBfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIldpdGhfYmFja3RyYWNlXCI7IHJlczBfXzAzMV87IHJlczFfXzAzMl8gXVxuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHJlYyB0b19zdHJpbmdzX2h1bSB0IGFjID1cbiAgICAoKiBXZSB1c2UgW1NleHAudG9fc3RyaW5nX21hY2hdLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGltcGxlbWVudGluZ1xuICAgICAgIFt0b19zdHJpbmdzX2h1bV0sIGJlY2F1c2Ugd2Ugd2FudCB0aGUgaW5mbyB0byBmaXQgb24gYSBzaW5nbGUgbGluZSwgYW5kIG9uY2Ugd2UndmVcbiAgICAgICBoYWQgdG8gcmVzb3J0IHRvIHNleHBzLCB0aGUgbWVzc2FnZSBpcyBnb2luZyB0byBzdGFydCBub3QgbG9va2luZyBzbyBwcmV0dHlcbiAgICAgICBhbnl3YXkuICopXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IHNleHAgLT5cbiAgICAgIFwiY291bGQgbm90IGNvbnN0cnVjdCBpbmZvOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IFNleHAudG9fc3RyaW5nX21hY2ggKEV4bi5zZXhwX29mX3QgZXhuKSA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgXykgLT4gdGFnIDo6IFwiOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IHRhZyA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWMgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIGJvZHkgZWxzZSB0YWcgOjogXCI6IFwiIDo6IGJvZHlcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICB0b19zdHJpbmdzX2h1bSB0IChcIlxcbkJhY2t0cmFjZTpcXG5cIiA6OiBiYWNrdHJhY2UgOjogYWMpXG4gICAgfCBPZl9saXN0ICh0cnVuY19hZnRlciwgdHMpIC0+XG4gICAgICBsZXQgdHMgPVxuICAgICAgICBtYXRjaCB0cnVuY19hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0c1xuICAgICAgICB8IFNvbWUgbWF4IC0+XG4gICAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCB0cyBpblxuICAgICAgICAgIGlmIG4gPD0gbWF4XG4gICAgICAgICAgdGhlbiB0c1xuICAgICAgICAgIGVsc2UgTGlzdC50YWtlIHRzIG1heCBAIFsgU3RyaW5nIChQcmludGYuc3ByaW50ZiBcImFuZCAlZCBtb3JlIGluZm9cIiAobiAtIG1heCkpIF1cbiAgICAgIGluXG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT5cbiAgICAgICAgdG9fc3RyaW5nc19odW0gdCAoaWYgTGlzdC5pc19lbXB0eSBhYyB0aGVuIGFjIGVsc2UgXCI7IFwiIDo6IGFjKSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBTdHJpbmcuY29uY2F0ICh0b19zdHJpbmdzX2h1bSB0IFtdKVxuXG4gICgqIExpa2UgW1N0cmluZy5zcGxpdF9saW5lc10sIGJ1dCBsZXNzIG9wdGltaXplZCBhbmQgZG9lc24ndCBoYW5kbGUgW1xcclxcbl0uIEF2b2lkcyBhXG4gICAgIGRlcGVuZGVuY3kgY3ljbGUuIEltcHJvdmVzIG9uIG5haXZlIFtTdHJpbmcuc3BsaXRfb25fY2hhcl0gYnkgcmVtb3ZpbmcgZW1wdHkgZmluYWxcbiAgICAgbGluZS4gKilcbiAgbGV0IHNwbGl0X2xpbmVzIHN0cmluZyA9XG4gICAgbGV0IHN0cmluZyA9XG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAnXFxuJyAoU3RyaW5nLmdldCBzdHJpbmcgKGxlbiAtIDEpKVxuICAgICAgdGhlbiBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOjAgfmxlbjoobGVuIC0gMSlcbiAgICAgIGVsc2Ugc3RyaW5nXG4gICAgaW5cbiAgICBTdHJpbmcuc3BsaXRfb25fY2hhciBzdHJpbmcgfnNlcDonXFxuJ1xuICA7O1xuXG4gIGxldCByZWMgdG9fc2V4cHNfaHVtIHQgYWMgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBfIGFzIHQgLT4gc2V4cF9vZl90IHQgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gQXRvbSBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gRXhuLnNleHBfb2ZfdCBleG4gOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBoZXJlKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoQXRvbSB0YWdcbiAgICAgICAgIDo6IHNleHBcbiAgICAgICAgIDo6XG4gICAgICAgICAobWF0Y2ggaGVyZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGhlcmUgLT4gWyBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmUgXSkpXG4gICAgICA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gTGlzdCAoQXRvbSB0YWcgOjogdG9fc2V4cHNfaHVtIHQgW10pIDo6IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IHNleHAgOjogdG9fc2V4cHNfaHVtIHQgW10gaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIExpc3QgYm9keSA6OiBhYyBlbHNlIExpc3QgKEF0b20gdGFnIDo6IGJvZHkpIDo6IGFjXG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgU2V4cC5MaXN0IFsgdG9fc2V4cF9odW0gdDsgc2V4cF9vZl9saXN0IHNleHBfb2Zfc3RyaW5nIChzcGxpdF9saW5lcyBiYWNrdHJhY2UpIF1cbiAgICAgIDo6IGFjXG4gICAgfCBPZl9saXN0IChfLCB0cykgLT5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPiB0b19zZXhwc19odW0gdCBhYylcblxuICBhbmQgdG9fc2V4cF9odW0gdCA9XG4gICAgbWF0Y2ggdG9fc2V4cHNfaHVtIHQgW10gd2l0aFxuICAgIHwgWyBzZXhwIF0gLT4gc2V4cFxuICAgIHwgc2V4cHMgLT4gU2V4cC5MaXN0IHNleHBzXG4gIDs7XG5cbiAgKCogV2UgdXNlIFtwcm90ZWN0XSB0byBndWFyZCBhZ2FpbnN0IGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHVzZXItc3VwcGxpZWQgZnVuY3Rpb25zLCBzb1xuICAgICB0aGF0IGZhaWx1cmUgdG8gcHJvZHVjZSBvbmUgcGFydCBvZiBhbiBpbmZvIGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgcGFydHMuICopXG4gIGxldCBwcm90ZWN0IGYgPVxuICAgIHRyeSBmICgpIHdpdGhcbiAgICB8IGV4biAtPiBDb3VsZF9ub3RfY29uc3RydWN0IChFeG4uc2V4cF9vZl90IGV4bilcbiAgOztcblxuICBsZXQgb2ZfaW5mbyBpbmZvID0gcHJvdGVjdCAoZnVuICgpIC0+IExhenkuZm9yY2UgaW5mbylcbiAgbGV0IHRvX2luZm8gdCA9IGxhenkgdFxuZW5kXG5cbm9wZW4gTWVzc2FnZVxuXG50eXBlIHQgPSBNZXNzYWdlLnQgTGF6eS50XG5cbmxldCBpbnZhcmlhbnQgXyA9ICgpXG5sZXQgdG9fbWVzc2FnZSA9IE1lc3NhZ2Uub2ZfaW5mb1xubGV0IG9mX21lc3NhZ2UgPSBNZXNzYWdlLnRvX2luZm9cblxuKCogSXQgaXMgT0sgdG8gdXNlIFtNZXNzYWdlLnRvX3NleHBfaHVtXSwgd2hpY2ggaXMgbm90IHN0YWJsZSwgYmVjYXVzZSBbdF9vZl9zZXhwXSBiZWxvd1xuICAgY2FuIGhhbmRsZSBhbnkgc2V4cC4gKilcbmxldCBzZXhwX29mX3QgdCA9IE1lc3NhZ2UudG9fc2V4cF9odW0gKHRvX21lc3NhZ2UgdClcbmxldCB0X29mX3NleHAgc2V4cCA9IGxhenkgKE1lc3NhZ2UuU2V4cCBzZXhwKVxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gQW55IFwiSW5mby50XCIgfVxubGV0IGNvbXBhcmUgdDEgdDIgPSBTZXhwLmNvbXBhcmUgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBlcXVhbCB0MSB0MiA9IFNleHAuZXF1YWwgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gU2V4cC5oYXNoX2ZvbGRfdCBzdGF0ZSAoc2V4cF9vZl90IHQpXG5sZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuXG5sZXQgdG9fc3RyaW5nX2h1bSB0ID1cbiAgbWF0Y2ggdG9fbWVzc2FnZSB0IHdpdGhcbiAgfCBTdHJpbmcgcyAtPiBzXG4gIHwgbWVzc2FnZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gKE1lc3NhZ2UudG9fc2V4cF9odW0gbWVzc2FnZSlcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IE1lc3NhZ2UudG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkICh0b19tZXNzYWdlIHQpXG5sZXQgdG9fc3RyaW5nX21hY2ggdCA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfdCB0KVxubGV0IG9mX2xhenkgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfc2V4cCBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFNleHAgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfdCBsYXp5X3QgPSBMYXp5LmpvaW4gbGF6eV90XG5sZXQgb2Zfc3RyaW5nIG1lc3NhZ2UgPSBMYXp5LmZyb21fdmFsIChTdHJpbmcgbWVzc2FnZSlcbmxldCBjcmVhdGVmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBvZl9zdHJpbmcgZm9ybWF0XG5sZXQgb2ZfdGh1bmsgZiA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKGYgKCkpKSlcblxubGV0IGNyZWF0ZSA/aGVyZSA/c3RyaWN0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIG1hdGNoIHN0cmljdCB3aXRoXG4gIHwgTm9uZSAtPiBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKSlcbiAgfCBTb21lICgpIC0+IG9mX21lc3NhZ2UgKFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoU2V4cCBzZXhwKVxubGV0IHRhZyB0IH50YWcgPSBsYXp5IChUYWdfdCAodGFnLCB0b19tZXNzYWdlIHQpKVxuXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAoXCJcIiwgTGF6eS5mb3JjZSB0YWcsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IHRhZ19zIHQgfnRhZyA9IHRhZ19zX2xhenkgdCB+dGFnOihMYXp5LmZyb21fdmFsIHRhZylcblxubGV0IHRhZ19hcmcgdCB0YWcgeCBzZXhwX29mX3ggPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAodGFnLCBzZXhwX29mX3ggeCwgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgb2ZfbGlzdCA/dHJ1bmNfYWZ0ZXIgdHMgPSBsYXp5IChPZl9saXN0ICh0cnVuY19hZnRlciwgTGlzdC5tYXAgdHMgfmY6dG9fbWVzc2FnZSkpXG5cbmV4Y2VwdGlvbiBFeG4gb2YgdFxuXG5sZXQgKCkgPVxuICAoKiBXZSBpbnN0YWxsIGEgY3VzdG9tIGV4bi1jb252ZXJ0ZXIgcmF0aGVyIHRoYW4gdXNlXG4gICAgIFtleGNlcHRpb24gRXhuIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdIC4uLiBbQEBAZW5kXV0gdG8gZWxpbWluYXRlIHRoZSBleHRyYVxuICAgICB3cmFwcGluZyBvZiBcIihFeG4gLi4uKVwiLiAqKVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhuXSAoZnVuY3Rpb25cbiAgICB8IEV4biB0IC0+IHNleHBfb2ZfdCB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB0b19leG4gdCA9XG4gIGlmIG5vdCAoTGF6eS5pc192YWwgdClcbiAgdGhlbiBFeG4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBMYXp5LmZvcmNlIHQgd2l0aFxuICAgIHwgTWVzc2FnZS5FeG4gZXhuIC0+IGV4blxuICAgIHwgXyAtPiBFeG4gdClcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPVxuICBsZXQgYmFja3RyYWNlID1cbiAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGBHZXQgLT5cbiAgICAgIFNvbWUgKFN0ZGxpYi5QcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICAgIHwgU29tZSAoYFRoaXMgcykgLT4gU29tZSBzXG4gIGluXG4gIG1hdGNoIGV4biwgYmFja3RyYWNlIHdpdGhcbiAgfCBFeG4gdCwgTm9uZSAtPiB0XG4gIHwgRXhuIHQsIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlICh0b19tZXNzYWdlIHQsIGJhY2t0cmFjZSkpXG4gIHwgXywgTm9uZSAtPiBMYXp5LmZyb21fdmFsIChNZXNzYWdlLkV4biBleG4pXG4gIHwgXywgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKFNleHAgKEV4bi5zZXhwX29mX3QgZXhuKSwgYmFja3RyYWNlKSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW5mb1wiXG4gICAgbGV0IHBwIHBwZiB0ID0gU3RkbGliLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmdfaHVtIHQpXG4gIGVuZClcblxubW9kdWxlIEludGVybmFsX3JlcHIgPSBNZXNzYWdlXG5cbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0Vycm9yXSBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIHZhcmlvdXMgcGxhY2VzLiAgUGxlYXNlIGF2b2lkIGFkZGluZyBuZXdcbiAgIGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9cblxubGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIkVycm9yLnRcIiB9XG5sZXQgcmFpc2UgdCA9IHJhaXNlICh0b19leG4gdClcbmxldCByYWlzZV9zIHNleHAgPSByYWlzZSAoY3JlYXRlX3Mgc2V4cClcbmxldCB0b19pbmZvIHQgPSB0XG5sZXQgb2ZfaW5mbyB0ID0gdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkVycm9yXCJcbiAgICBsZXQgcHAgPSBwcFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW52YXJpYW50X2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbmxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmIDogdW5pdCA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIlxuICAgICAgICAgWyBcIlwiLCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmVcbiAgICAgICAgIDsgXCJleG5cIiwgc2V4cF9vZl9leG4gZXhuXG4gICAgICAgICA7IFwiXCIsIHNleHBfb2ZfdCB0XG4gICAgICAgICBdKVxuOztcblxubGV0IGNoZWNrX2ZpZWxkIHQgZiBmaWVsZCA9XG4gIHRyeSBmIChGaWVsZC5nZXQgZmllbGQgdCkgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwicHJvYmxlbSB3aXRoIGZpZWxkXCJcbiAgICAgICAgIFsgXCJmaWVsZFwiLCBzZXhwX29mX3N0cmluZyAoRmllbGQubmFtZSBmaWVsZCk7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAoJ2EsIEVycm9yLnQpIFJlc3VsdC50XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPiBSZXN1bHQuY29tcGFyZSBfY21wX19hIEVycm9yLmNvbXBhcmUgYV9fMDAxXyBiX18wMDJfXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+IFJlc3VsdC5lcXVhbCBfY21wX19hIEVycm9yLmVxdWFsIGFfXzAwN18gYl9fMDA4X1xuOztcblxubGV0IGhhc2hfZm9sZF90IDpcbiAgJ2EuXG4gIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgLT4gJ2EgdFxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIGhzdiBhcmcgLT4gUmVzdWx0Lmhhc2hfZm9sZF90IF9oYXNoX2ZvbGRfYSBFcnJvci5oYXNoX2ZvbGRfdCBoc3YgYXJnXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMTNfIHhfXzAxNV8gLT4gUmVzdWx0LnRfb2Zfc2V4cCBfb2ZfYV9fMDEzXyBFcnJvci50X29mX3NleHAgeF9fMDE1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE2XyB4X18wMTdfIC0+IFJlc3VsdC5zZXhwX29mX3QgX29mX2FfXzAxNl8gRXJyb3Iuc2V4cF9vZl90IHhfXzAxN19cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVzdWx0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIgRXJyb3IudF9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbmxldCAoID4+PSApID0gUmVzdWx0LiggPj49IClcbmxldCAoID4+fCApID0gUmVzdWx0LiggPj58IClcbmxldCBiaW5kID0gUmVzdWx0LmJpbmRcbmxldCBpZ25vcmVfbSA9IFJlc3VsdC5pZ25vcmVfbVxubGV0IGpvaW4gPSBSZXN1bHQuam9pblxubGV0IG1hcCA9IFJlc3VsdC5tYXBcbmxldCByZXR1cm4gPSBSZXN1bHQucmV0dXJuXG5cbm1vZHVsZSBNb25hZF9pbmZpeCA9IFJlc3VsdC5Nb25hZF9pbmZpeFxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBhIC0+IGludmFyaWFudF9hIGFcbiAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5pbnZhcmlhbnQgZXJyb3Jcbjs7XG5cbmxldCBtYXAyIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE9rIHgsIE9rIHkgLT4gT2sgKGYgeCB5KVxuICB8IE9rIF8sIChFcnJvciBfIGFzIGUpIHwgKEVycm9yIF8gYXMgZSksIE9rIF8gLT4gZVxuICB8IEVycm9yIGUxLCBFcnJvciBlMiAtPiBFcnJvciAoRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuOztcblxubW9kdWxlIEZvcl9hcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgbWFwMiA9IG1hcDJcbiAgZW5kKVxuXG5sZXQgKCAqPiApID0gRm9yX2FwcGxpY2F0aXZlLiggKj4gKVxubGV0ICggPCogKSA9IEZvcl9hcHBsaWNhdGl2ZS4oIDwqIClcbmxldCAoIDwqPiApID0gRm9yX2FwcGxpY2F0aXZlLiggPCo+IClcbmxldCBhcHBseSA9IEZvcl9hcHBsaWNhdGl2ZS5hcHBseVxubGV0IGJvdGggPSBGb3JfYXBwbGljYXRpdmUuYm90aFxubGV0IG1hcDMgPSBGb3JfYXBwbGljYXRpdmUubWFwM1xuXG5tb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBGb3JfYXBwbGljYXRpdmUuQXBwbGljYXRpdmVfaW5maXhcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCBvayA9IFJlc3VsdC5va1xubGV0IGlzX29rID0gUmVzdWx0LmlzX29rXG5sZXQgaXNfZXJyb3IgPSBSZXN1bHQuaXNfZXJyb3JcblxubGV0IHRyeV93aXRoID8oYmFja3RyYWNlID0gZmFsc2UpIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4gP2JhY2t0cmFjZTooaWYgYmFja3RyYWNlIHRoZW4gU29tZSBgR2V0IGVsc2UgTm9uZSkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/YmFja3RyYWNlIGYgPSBqb2luICh0cnlfd2l0aCA/YmFja3RyYWNlIGYpXG5cbmxldCBva19leG4gPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGVyciAtPiBFcnJvci5yYWlzZSBlcnJcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBFcnJvciAoRXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxuXG5sZXQgb2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlID0gZnVuY3Rpb25cbiAgfCBPayBfIGFzIHogLT4gelxuICB8IEVycm9yIGV4biAtPiBvZl9leG4gP2JhY2t0cmFjZSBleG5cbjs7XG5cbmxldCBlcnJvciA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBFcnJvciAoRXJyb3IuY3JlYXRlID9oZXJlID9zdHJpY3QgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCBlcnJvcl9zIHNleHAgPSBFcnJvciAoRXJyb3IuY3JlYXRlX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbWVzc2FnZSA9IEVycm9yIChFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSlcbmxldCBlcnJvcmYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihmdW4gZSAtPiBFcnJvci50YWdfYXJnIGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIHMgPSBlcnJvciBcInVuaW1wbGVtZW50ZWRcIiBzIHNleHBfb2Zfc3RyaW5nXG5cblxubGV0IGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2sgfm9uX2Vycm9yID1cbiAgbWF0Y2ggUmVzdWx0LmNvbWJpbmVfZXJyb3JzIGxpc3Qgd2l0aFxuICB8IE9rIHggLT4gT2sgKG9uX29rIHgpXG4gIHwgRXJyb3IgZXJycyAtPiBFcnJvciAob25fZXJyb3IgZXJycylcbjs7XG5cbmxldCBpZ25vcmVfdW5pdF9saXN0IChfIDogdW5pdCBsaXN0KSA9ICgpXG5cbmxldCBlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSA9IGZ1bmN0aW9uXG4gIHwgWyBlIF0gLT4gZVxuICB8IGxpc3QgLT4gRXJyb3Iub2ZfbGlzdCBsaXN0XG47O1xuXG5sZXQgYWxsIGxpc3QgPSBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rOkZuLmlkIH5vbl9lcnJvcjplcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeVxuXG5sZXQgYWxsX3VuaXQgbGlzdCA9XG4gIGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6aWdub3JlX3VuaXRfbGlzdCB+b25fZXJyb3I6ZXJyb3Jfb2ZfbGlzdF9pZl9uZWNlc3Nhcnlcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9ycyBsaXN0ID0gY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazpGbi5pZCB+b25fZXJyb3I6RXJyb3Iub2ZfbGlzdFxuXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsaXN0ID1cbiAgY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazppZ25vcmVfdW5pdF9saXN0IH5vbl9lcnJvcjpFcnJvci5vZl9saXN0XG47O1xuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdC5wYXJ0aXRpb25fbWFwIGwgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICBtYXRjaCBvayB3aXRoXG4gIHwgW10gLT4gRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJycylcbiAgfCBfIC0+IE9rIG9rXG47O1xuXG5sZXQgZmluZF9vayBsID1cbiAgbWF0Y2ggTGlzdC5maW5kX21hcCBsIH5mOlJlc3VsdC5vayB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgT2sgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBFcnJvclxuICAgICAgKEVycm9yLm9mX2xpc3RcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgICAgICB8IE9rIF8gYXMgeCAtPiByZXR1cm4geFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyKSkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwID0gUmVzdWx0Lm1hcFxubGV0IGl0ZXIgPSBSZXN1bHQuaXRlclxubGV0IGl0ZXJfZXJyb3IgPSBSZXN1bHQuaXRlcl9lcnJvclxuIiwiKCogVGhpcyBpcyBicm9rZW4gb2ZmIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBTaWduIGFuZCBDb21wYXJhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOZWdcbiAgfCBaZXJvXG4gIHwgUG9zXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbjAubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIC0+IFBvc1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDAyXyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgc2V4cF9fMDAyXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IE5lZyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOZWdcIlxuICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIk5lZ1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBQb3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5sZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3MgXSA6IHQgbGlzdClcblxuW0BAQGVuZF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogdCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogdCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xXG4gIHwgWmVybyAtPiAwXG4gIHwgUG9zIC0+IDFcbjs7XG5cbmxldCBfID0gaGFzaFxuXG4oKiBJZ25vcmUgdGhlIGhhc2ggZnVuY3Rpb24gcHJvZHVjZWQgYnkgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2hdICopXG5sZXQgaGFzaCA9IHRvX2ludFxubGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25cIlxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBOZWcgZWxzZSBpZiBuID0gMCB0aGVuIFplcm8gZWxzZSBQb3NcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcblxubW9kdWxlIFdpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG9wZW4gVFxuXG4gIGxldCBpc19wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPiAwXG4gIGxldCBpc19ub25fbmVnYXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID49IDBcbiAgbGV0IGlzX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA8IDBcbiAgbGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPD0gMFxuICBsZXQgc2lnbiB0ID0gU2lnbjAub2ZfaW50IChjb21wYXJlIHQgemVybylcbmVuZFxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIFBvbHlcbiAgZW5kXG5cbiAgaW5jbHVkZSBQb2x5XG5cbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlKVxuICBlbmRcblxuICBpbmNsdWRlIENcbmVuZFxuXG5sZXQgZ3QgY21wIGEgYiA9IGNtcCBhIGIgPiAwXG5sZXQgbHQgY21wIGEgYiA9IGNtcCBhIGIgPCAwXG5sZXQgZ2VxIGNtcCBhIGIgPSBjbXAgYSBiID49IDBcbmxldCBsZXEgY21wIGEgYiA9IGNtcCBhIGIgPD0gMFxubGV0IGVxdWFsIGNtcCBhIGIgPSBjbXAgYSBiID0gMFxubGV0IG5vdF9lcXVhbCBjbXAgYSBiID0gY21wIGEgYiA8PiAwXG5sZXQgbWluIGNtcCB0IHQnID0gaWYgbGVxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5sZXQgbWF4IGNtcCB0IHQnID0gaWYgZ2VxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5cbm1vZHVsZSBJbmZpeCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogSW5maXggd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGxldCAoID4gKSBhIGIgPSBndCBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDwgKSBhIGIgPSBsdCBULmNvbXBhcmUgYSBiXG4gIGxldCAoID49ICkgYSBiID0gZ2VxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD0gKSBhIGIgPSBsZXEgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA9ICkgYSBiID0gZXF1YWwgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8PiApIGEgYiA9IG5vdF9lcXVhbCBULmNvbXBhcmUgYSBiXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBDb21wYXJpc29ucyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXggKFQpXG5cbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0IG1pbiB0IHQnID0gbWluIGNvbXBhcmUgdCB0J1xuICBsZXQgbWF4IHQgdCcgPSBtYXggY29tcGFyZSB0IHQnXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJhdG9yLmNvbXBhcmVcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBDb21wYXJpc29ucyAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB0IHQnID0gY29tcGFyZSB0JyB0XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciBbQGlubGluZWQgaGludF0gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgICAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgICAgIFtAQEBlbmRdXG5cbiAgICAgICAgICB2YWwgY29tcG9uZW50IDogdCAtPiBDLnRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuKCogY29tcGFyZSBbeF0gYW5kIFt5XSBsZXhpY29ncmFwaGljYWxseSB1c2luZyBmdW5jdGlvbnMgaW4gdGhlIGxpc3QgW2NtcHNdICopXG5sZXQgbGV4aWNvZ3JhcGhpYyBjbXBzIHggeSA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBjbXAgOjogY21wcyAtPlxuICAgICAgbGV0IHJlcyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIHJlcyA9IDAgdGhlbiBsb29wIGNtcHMgZWxzZSByZXNcbiAgICB8IFtdIC0+IDBcbiAgaW5cbiAgbG9vcCBjbXBzXG47O1xuXG5sZXQgbGlmdCBjbXAgfmYgeCB5ID0gY21wIChmIHgpIChmIHkpXG5sZXQgcmV2ZXJzZSBjbXAgeCB5ID0gY21wIHkgeFxuXG50eXBlICdhIHJldmVyc2VkID0gJ2FcblxubGV0IGNvbXBhcmVfcmV2ZXJzZWQgY21wIHggeSA9IGNtcCB5IHhcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2hhYmxlLktleSAqKVxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIFZhbHVlcyByZXR1cm5lZCBieSBbaGFzaF0gbXVzdCBiZSBub24tbmVnYXRpdmUuICBBbiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaW4gdGhlXG4gICAgICBjYXNlIHRoYXQgW2hhc2hdIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZS4gKilcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gICgqKiBUaGlzIGZ1bmN0aW9uIGlzIHNvdW5kIGJ1dCBub3QgY29tcGxldGUsIG1lYW5pbmcgdGhhdCBpZiBpdCByZXR1cm5zIFt0cnVlXSB0aGVuIGl0J3NcbiAgICAgIHNhZmUgdG8gdXNlIHRoZSB0d28gaW50ZXJjaGFuZ2VhYmx5LiAgSWYgaXQncyBbZmFsc2VdLCB5b3UgaGF2ZSBubyBndWFyYW50ZWVzLiAgRm9yXG4gICAgICBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICA+IHV0b3BcbiAgICAgICAgb3BlbiBDb3JlOztcbiAgICAgICAgbGV0IGVxdWFsIChhIDogJ2EgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnQpIGIgPVxuICAgICAgICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgICAgICAgfHwgKHBoeXNfZXF1YWwgYS5oYXNoIGIuaGFzaFxuICAgICAgICAgICAgICAmJiBwaHlzX2VxdWFsIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdClcbiAgICAgICAgOztcbiAgICAgICAgbGV0IGEgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBsZXQgYiA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS57IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCA9IEludC5zZXhwX29mX3QgfTs7XG4gICAgICAgIGVxdWFsIGEgYjs7ICAoKiBmYWxzZT8hICopXG4gICAgICBdfVxuICAqKVxuICBsZXQgZXF1YWwgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGhhc2hfcGFyYW0gPSBTdGRsaWIuSGFzaHRibC5oYXNoX3BhcmFtXG4gIGxldCBoYXNoID0gU3RkbGliLkhhc2h0YmwuaGFzaFxuICBsZXQgcG9seSA9IHsgaGFzaDsgY29tcGFyZSA9IFBvbHkuY29tcGFyZTsgc2V4cF9vZl90ID0gKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgfVxuXG4gIGxldCBvZl9rZXkgKHR5cGUgYSkgKG1vZHVsZSBLZXkgOiBLZXkgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgeyBoYXNoID0gS2V5Lmhhc2g7IGNvbXBhcmUgPSBLZXkuY29tcGFyZTsgc2V4cF9vZl90ID0gS2V5LnNleHBfb2ZfdCB9XG4gIDs7XG5cbiAgbGV0IHRvX2tleSAodHlwZSBhKSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZCA6IEtleVxuICAgICAgd2l0aCB0eXBlIHQgPSBhKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgSGFzaGFibGVcblxubW9kdWxlIHR5cGUgSGFzaGFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSGFzaGFibGUudCA9XG4gICAgeyBoYXNoIDogJ2EgLT4gaW50XG4gICAgOyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHBvbHkgOiAnYSB0XG4gIHZhbCBvZl9rZXkgOiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKSAtPiAnYSB0XG4gIHZhbCB0b19rZXkgOiAnYSB0IC0+IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpXG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUIDogQXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBBcmdfd2l0aF9jb21wYXJhdG9yKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBhbGwgPSAoWyAoKSBdIDogdCBsaXN0KVxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV91bml0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3VuaXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX3VuaXQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHVuaXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdW5pdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB1bml0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGNvbXBhcmUgXyBfID0gMFxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCIoKVwiIC0+ICgpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQmFzZS5Vbml0Lm9mX3N0cmluZzogKCkgZXhwZWN0ZWRcIlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVuaXRcIlxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxubGV0IGludmFyaWFudCAoKSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBcblxubGV0IGdldF9wb3NfbGVuID9wb3MgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgdHJ5IFJlc3VsdC5PayAoZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IE9yX2Vycm9yLmVycm9yX3N0cmluZyBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoZXNlIGZ1bmN0aW9ucyBpbXBsZW1lbnQgYSBzZWFyY2ggZm9yIHRoZSBmaXJzdCAocmVzcC4gbGFzdCkgZWxlbWVudFxuICAgc2F0aXNmeWluZyBhIHByZWRpY2F0ZSwgYXNzdW1pbmcgdGhhdCB0aGUgcHJlZGljYXRlIGlzIGluY3JlYXNpbmcgb25cbiAgIHRoZSBjb250YWluZXIsIG1lYW5pbmcgdGhhdCwgaWYgdGhlIGNvbnRhaW5lciBpcyBbdTEuLi51bl0sIHRoZXJlIGV4aXN0cyBhXG4gICBrIHN1Y2ggdGhhdCBwKHUxKT0uLi4uPXAodWspID0gZmFsc2UgYW5kIHAodWsrMSk9Li4uLj1wKHVuKT0gdHJ1ZS5cbiAgIElmIHRoaXMgayA9IDEgKHJlc3AgbiksIGZpbmRfbGFzdF9ub3Rfc2F0aXNmeWluZyAocmVzcCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcpXG4gICB3aWxsIHJldHVybiBOb25lLiAqKVxuXG5sZXQgcmVjIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gIGlmIGxvID4gaGlcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgcHJlZCAoZ2V0IHQgbG8pXG4gIHRoZW4gU29tZSBsb1xuICBlbHNlIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihsbyArIDEpIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYSBjb250YWluZXIgW3RdLCBhIHByZWRpY2F0ZSBbcHJlZF0gYW5kIHR3byBpbmRpY2VzIFtsbyA8IGhpXSwgc3VjaCB0aGF0XG4gICBbcHJlZF0gaXMgaW5jcmVhc2luZyBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLlxuXG4gICByZXR1cm4gYSByYW5nZSAobG8sIGhpKSB3aGVyZTpcbiAgIC0gbG8gYW5kIGhpIGFyZSBjbG9zZSBlbm91Z2ggdG9nZXRoZXIgZm9yIGEgbGluZWFyIHNlYXJjaFxuICAgLSBJZiBbcHJlZF0gaXMgbm90IGNvbnN0YW50bHkgW2ZhbHNlXSBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICBvbiB3aGljaCBbcHJlZF0gaXMgW3RydWVdIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXS4gKilcbigqIEludmFyaWFudDogdGhlIGZpcnN0IGVsZW1lbnQgc2F0aXNmeWluZyBbcHJlZF0sIGlmIGl0IGV4aXN0cyBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0gKilcbmxldCByZWMgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICAoKiBXYXJuaW5nOiB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IHRlcm1pbmF0ZSBpZiB0aGUgY29uc3RhbnQgKGN1cnJlbnRseSA4KSBpc1xuICAgICBzZXQgPD0gMSAqKVxuICBpZiBoaSAtIGxvIDw9IDhcbiAgdGhlbiBsbywgaGlcbiAgZWxzZSAoXG4gICAgbGV0IG1pZCA9IGxvICsgKChoaSAtIGxvKSAvIDIpIGluXG4gICAgaWYgcHJlZCAoZ2V0IHQgbWlkKVxuICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCBpcyBiZXR3ZWVuIFtsb10gYW5kIFttaWRdICopXG4gICAgdGhlblxuICAgICAgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGk6bWlkIH5wcmVkXG4gICAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQsIGlmIGl0IGV4aXN0cyxcbiAgICAgICAgIGlzIGJldHdlZW4gW21pZCsxXSBhbmQgW2hpXSAqKVxuICAgIGVsc2UgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobWlkICsgMSkgfmhpIH5wcmVkKVxuOztcblxubGV0IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxvID0gcG9zIGluXG4gIGxldCBoaSA9IHBvcyArIGxlbiAtIDEgaW5cbiAgbGV0IGxvLCBoaSA9IGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkIGluXG4gIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYW4gYXJyYXkgd2l0aCBzaGFwZSBbdHJ1ZSwuLi50cnVlLGZhbHNlLC4uLmZhbHNlXSAoaS5lLiwgdGhlIF9yZXZlcnNlXyBvZiB3aGF0XG4gICBpcyBkZXNjcmliZWQgYWJvdmUpIGFuZCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB0cnVlIG9yIE5vbmUgaWYgdGhlcmUgYXJlIG5vXG4gICB0cnVlKilcbmxldCBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+cHJlZCB+Z2V0IH5sZW5ndGggPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgKCogVGhlIGxhc3Qgc2F0aXNmeWluZyBpcyB0aGUgb25lIGp1c3QgYmVmb3JlIHRoZSBmaXJzdCBub3Qgc2F0aXNmeWluZyAqKVxuICAgIG1hdGNoXG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgfnBvcyB+bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBub3QgKHByZWQgeCkpXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICgqIFRoaXMgbWVhbnMgdGhhdCBhbGwgZWxlbWVudHMgc2F0aXNmeSBwcmVkLlxuICAgICAgIFRoZXJlIGlzIGF0IGxlYXN0IGFuIGVsZW1lbnQgYXMgKGxlbiA+IDApICopXG4gICAgfCBTb21lIGkgd2hlbiBpID0gcG9zIC0+IE5vbmUgKCogbm8gZWxlbWVudCBzYXRpc2ZpZXMgcHJlZCAqKVxuICAgIHwgU29tZSBpIC0+IFNvbWUgKGkgLSAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoXG4gICAgICA/cG9zXG4gICAgICA/bGVuXG4gICAgICB0XG4gICAgICB+bGVuZ3RoOigobGVuZ3RoIDogXyAtPiBfKSBbQGxvY2FsXSlcbiAgICAgIH5nZXQ6KChnZXQgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICBob3dcbiAgICAgIHZcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKSBbQG5vbnRhaWxcbiAgICBdXG4gIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKSBbQG5vbnRhaWxcbiAgICBdXG4gIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgW0Bub250YWlsXG4gICAgXVxuICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApIFtAbm9udGFpbFxuICAgIF1cbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnNlZ21lbnRfb2YgaG93ID1cbiAgbGV0IGlzX2xlZnQgeCA9XG4gICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICB8IGBSaWdodCAtPiBmYWxzZVxuICBpblxuICBsZXQgaXNfcmlnaHQgeCA9IG5vdCAoaXNfbGVmdCB4KSBpblxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X29uX2xlZnQgLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfbGVmdCBbQG5vbnRhaWxdXG4gIHwgYEZpcnN0X29uX3JpZ2h0IC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+cHJlZDppc19yaWdodCBbQG5vbnRhaWxdXG47O1xuIiwiKCoqIE1vZHVsZSB0eXBlcyBmb3IgYSBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb24gZm9yIGEgc2VxdWVuY2UsIGFuZCBmdW5jdG9ycyBmb3IgYnVpbGRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIEFuIFtJbmRleGFibGVdIHR5cGUgaXMgYSBmaW5pdGUgc2VxdWVuY2Ugb2YgZWxlbWVudHMgaW5kZXhlZCBieSBjb25zZWN1dGl2ZSBpbnRlZ2Vyc1xuICAgIFswXSAuLi4gW2xlbmd0aCB0IC0gMV0uICBbZ2V0XSBhbmQgW2xlbmd0aF0gbXVzdCBiZSBPKDEpIGZvciB0aGUgcmVzdWx0aW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIHRvIGJlIGxnKG4pLiAqKVxubW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gIHZhbCBnZXQgOiB0IC0+IGludCAtPiBlbHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID1cbiAgICAoWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgOyBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgTGFzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgIF1cbiAgICAgOiB0IGxpc3QpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X29uX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID0gKFsgYExhc3Rfb25fbGVmdDsgYEZpcnN0X29uX3JpZ2h0IF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG50eXBlICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IGNvbXBhcmU6KCgnZWx0IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAtPiBXaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgLT4gJ2tleVxuICAtPiBpbnQgb3B0aW9uXG5cbnR5cGUgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IHNlZ21lbnRfb2Y6KCgnZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAtPiBpbnQgb3B0aW9uXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgKCoqIFNlZSBbQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKHQsIGVsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGluIGJpbmFyeV9zZWFyY2gubWwgKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKHQsIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgQmluYXJ5X3NlYXJjaGFibGUgPSBzaWdcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBJbmRleGFibGUgPSBJbmRleGFibGVcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IEluZGV4YWJsZTFcblxuICBtb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IFdoaWNoX3RhcmdldF9ieV9rZXlcbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnRcblxuICB0eXBlIG5vbnJlYyAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9ICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICBtb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCB3aXRoIHR5cGUgZWx0IDo9IFQuZWx0XG4gIG1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlICdhIGVsdFxuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgZWx0XG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogQXJnKSA9IHN0cnVjdFxuICBsZXQgZ2V0ID0gVC5nZXRcbiAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIEJpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfmNvbXBhcmUgaG93IHZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+c2VnbWVudF9vZiBob3dcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICB0eXBlICdhIGVsdCA9IFQuZWx0XG4gICAgdHlwZSAnYSB0ID0gVC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UxIChUIDogSW5kZXhhYmxlMSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gIGVuZClcbiIsIigqIFtCeXRlczBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW1N0ZGxpYi5CeXRlc10uIFtCeXRlczBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzc1xuICAgdGhlIHBhcnQgb2YgW1N0ZGxpYi5CeXRlc10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXJcbiAgIHRoYW4gYnl0ZXMwLm1sIHNob3VsZCB1c2UgW1N0ZGxpYi5CeXRlc10uIFtCeXRlczBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmRcbiAgIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQnl0ZXNdIGluXG4gICBidWlsZCBvcmRlciBzaG91bGQgZG86XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBCeXRlcyAgPSBCeXRlczBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgQnl0ZXMgPSBCeXRlczBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHNcbiAgIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQnl0ZXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiAoYnl0ZXNbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IChieXRlc1tAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gY2hhclxuICAgID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGNoYXJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoY2hhcltAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcblxuICAoKiBbdW5zYWZlX2JsaXRfc3RyaW5nXSBpcyBub3QgZXhwb3J0ZWQgaW4gdGhlIFtzdGRsaWJdIHNvIHdlIGV4cG9ydCBpdCBoZXJlICopXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIDogIHNyYzooc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50NjRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnQ2NFxuICAgID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50NjRbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50MzJcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnQzMlxuICAgID0gXCIlY2FtbF9ieXRlc19nZXQzMnVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzJcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50MzJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50MTZcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5lbmRcblxuaW5jbHVkZSBQcmltaXRpdmVzXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgYmxpdCA9IFN0ZGxpYi5CeXRlcy5ibGl0XG5sZXQgYmxpdF9zdHJpbmcgPSBTdGRsaWIuQnl0ZXMuYmxpdF9zdHJpbmdcbmxldCBjb21wYXJlID0gU3RkbGliLkJ5dGVzLmNvbXBhcmVcbmxldCBjb3B5ID0gU3RkbGliLkJ5dGVzLmNvcHlcbmxldCBjcmVhdGUgPSBTdGRsaWIuQnl0ZXMuY3JlYXRlXG5cbmV4dGVybmFsIHVuc2FmZV9jcmVhdGVfbG9jYWwgOiBpbnQgLT4gKGJ5dGVzW0Bsb2NhbF0pID0gXCJCYXNlX3Vuc2FmZV9jcmVhdGVfbG9jYWxfYnl0ZXNcIlxuW0BAbm9hbGxvY11cblxubGV0IGNyZWF0ZV9sb2NhbCBsZW4gPVxuICBcbiAgICAoaWYgbGVuID4gU3lzMC5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuY3JlYXRlX2xvY2FsXCI7XG4gICAgIHVuc2FmZV9jcmVhdGVfbG9jYWwgbGVuKVxuOztcblxubGV0IGZpbGwgPSBTdGRsaWIuQnl0ZXMuZmlsbFxubGV0IG1ha2UgPSBTdGRsaWIuQnl0ZXMubWFrZVxuXG5sZXQgbWFwIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGlmIGwgPSAwXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBtYXBpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgaWYgbCA9IDBcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgc3ViID0gU3RkbGliLkJ5dGVzLnN1YlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAtPiBzcmNfcG9zOmludFxuICAtPiBkc3Q6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImNhbWxfYmxpdF9ieXRlc1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLkJ5dGVzLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IFN0ZGxpYi5CeXRlcy5vZl9zdHJpbmdcblxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZ1xuICA6ICBub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgLT4gKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nX3Byb21pc2Vfbm9fbXV0YXRpb25cbiAgOiAgKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgLT4gKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNlcXVlbmNlX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgbGVuZ3RoIDogKF8gdFtAbG9jYWxdKSAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5cbiAgICAoU3JjIDogU2VxdWVuY2VfZ2VuKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgU3JjLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSBTcmMudCwgJ2EgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdW5zYWZlX2JsaXQgPSBEc3QudW5zYWZlX2JsaXRcblxuICBsZXQgYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpzcmNfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihTcmMubGVuZ3RoIHNyYyk7XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpkc3RfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihEc3QubGVuZ3RoIGRzdCk7XG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IGJsaXRvXG4gICAgICAgIH5zcmNcbiAgICAgICAgPyhzcmNfcG9zID0gMClcbiAgICAgICAgPyhzcmNfbGVuID0gU3JjLmxlbmd0aCBzcmMgLSBzcmNfcG9zKVxuICAgICAgICB+ZHN0XG4gICAgICAgID8oZHN0X3BvcyA9IDApXG4gICAgICAgICgpXG4gICAgPVxuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuOnNyY19sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gICgqIFtzdWJdIGFuZCBbc3Vib10gZW5zdXJlIHRoYXQgZXZlcnkgcG9zaXRpb24gb2YgdGhlIGNyZWF0ZWQgc2VxdWVuY2UgaXMgcG9wdWxhdGVkIGJ5XG4gICAgIGFuIGVsZW1lbnQgb2YgdGhlIHNvdXJjZSBhcnJheS4gIFRodXMgZXZlcnkgZWxlbWVudCBvZiBbZHN0XSBiZWxvdyBpcyB3ZWxsXG4gICAgIGRlZmluZWQuICopXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIGxldCBkc3QgPSBEc3QuY3JlYXRlX2xpa2UgfmxlbiBzcmMgaW5cbiAgICBpZiBsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gICAgc3ViXG4gICAgICBzcmNcbiAgICAgIH5wb3NcbiAgICAgIH5sZW46XG4gICAgICAgIChtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgfCBOb25lIC0+IFNyYy5sZW5ndGggc3JjIC0gcG9zKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMSAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIFNlcXVlbmNlX2dlblxuXG4gICAgdmFsIGNyZWF0ZV9saWtlIDogbGVuOmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgdCwgJ2EgdCkgYmxpdFxuICBlbmQpID1cbiAgTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlMV9nZW5lcmljIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSkgPSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcblxubW9kdWxlIE1ha2UgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gdFxuICAgIHZhbCB1bnNhZmVfYmxpdCA6ICh0LCB0KSBibGl0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IFNlcXVlbmNlLnRcblxuICAgIG9wZW4gU2VxdWVuY2VcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmRcblxuICBpbmNsdWRlIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0XG4gICAgKFNyYyA6IFNlcXVlbmNlKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBNYWtlX2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFNyYy50XG5cbiAgICAgIG9wZW4gU3JjXG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gRHN0LnRcblxuICAgICAgb3BlbiBEc3RcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICAgIGVuZClcblxubW9kdWxlIE1ha2VfdG9fc3RyaW5nIChUIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZClcbiAgICAoVG9fYnl0ZXMgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gVC50IHdpdGggdHlwZSBkc3QgOj0gYnl0ZXMpID1cbnN0cnVjdFxuICBvcGVuIFRvX2J5dGVzXG5cbiAgbGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgICBCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooc3ViIHNyYyB+cG9zIH5sZW4pXG4gIDs7XG5cbiAgbGV0IHN1Ym8gP3BvcyA/bGVuIHNyYyA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1Ym8gP3BvcyA/bGVuIHNyYylcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEVpdGhlcl9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEVpdGhlcjBcblxubGV0IHN3YXAgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gU2Vjb25kIHhcbiAgfCBTZWNvbmQgeCAtPiBGaXJzdCB4XG47O1xuXG5sZXQgaXNfZmlyc3QgPSBmdW5jdGlvblxuICB8IEZpcnN0IF8gLT4gdHJ1ZVxuICB8IFNlY29uZCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc2Vjb25kID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IGZhbHNlXG4gIHwgU2Vjb25kIF8gLT4gdHJ1ZVxuOztcblxubGV0IHZhbHVlIChGaXJzdCB4IHwgU2Vjb25kIHgpID0geFxuXG5sZXQgdmFsdWVfbWFwIHQgfmZpcnN0IH5zZWNvbmQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGaXJzdCB4IC0+IGZpcnN0IHhcbiAgfCBTZWNvbmQgeCAtPiBzZWNvbmQgeFxuOztcblxubGV0IGl0ZXIgPSB2YWx1ZV9tYXBcblxubGV0IG1hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBGaXJzdCAoZmlyc3QgeClcbiAgfCBTZWNvbmQgeCAtPiBTZWNvbmQgKHNlY29uZCB4KVxuOztcblxubGV0IGZpcnN0IHggPSBGaXJzdCB4XG5sZXQgc2Vjb25kIHggPSBTZWNvbmQgeFxuXG5sZXQgZXF1YWwgZXExIGVxMiB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBlcTEgeCB5XG4gIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IGVxMiB4IHlcbiAgfCBGaXJzdCBfLCBTZWNvbmQgXyB8IFNlY29uZCBfLCBGaXJzdCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaW52YXJpYW50IGYgcyA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBmIHhcbiAgfCBTZWNvbmQgeSAtPiBzIHlcbjs7XG5cbm1vZHVsZSBGb2N1cyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRm9jdXMgb2YgeyB2YWx1ZSA6ICdhIFtAZ2xvYmFsXSB9XG4gICAgfCBPdGhlciBvZiB7IHZhbHVlIDogJ2IgW0BnbG9iYWxdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZV9mb2N1c2VkIChNIDogc2lnXG4gICAgdHlwZSAoKydhLCArJ2IpIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICB2YWwgb3RoZXIgOiAnYiAtPiAoXywgJ2IpIHRcbiAgICB2YWwgZm9jdXMgOiAoJ2EsICdiKSB0IC0+ICgoJ2EsICdiKSBGb2N1cy50W0Bsb2NhbF0pXG5cbiAgICB2YWwgY29tYmluZVxuICAgICAgOiAgKCdhLCAnZCkgdFxuICAgICAgLT4gKCdiLCAnZCkgdFxuICAgICAgLT4gZjooKCdhIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgICAgLT4gb3RoZXI6KCgnZCAtPiAnZCAtPiAnZClbQGxvY2FsXSlcbiAgICAgIC0+ICgnYywgJ2QpIHRcblxuICAgIHZhbCBiaW5kIDogKCdhLCAnYikgdCAtPiBmOigoJ2EgLT4gKCdjLCAnYikgdClbQGxvY2FsXSkgLT4gKCdjLCAnYikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cbiAgb3BlbiBXaXRoX3JldHVyblxuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgbGV0IHJlcyA9IGJpbmQgdCB+ZjooZnVuIHggLT4gcmV0dXJuIChmIHgpKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFwcCA9IEFwcGxpY2F0aXZlLk1ha2UyX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5cbiAgICAgIGxldCBtYXAyIDogKCdhLCAneCkgdCAtPiAoJ2IsICd4KSB0IC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSkgLT4gKCdjLCAneCkgdCA9XG4gICAgICAgIGZ1biB0MSB0MiB+ZiAtPlxuICAgICAgICBiaW5kIHQxIH5mOihmdW4geCAtPiBiaW5kIHQyIH5mOihmdW4geSAtPiByZXR1cm4gKGYgeCB5KSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBcHBcblxuICBsZXQgY29tYmluZV9hbGwgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIChtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICAgICAgIHwgRm9jdXMgXyAtPiBvdGhlcl9sb29wIGYgYWNjIHRzXG4gICAgICAgICB8IE90aGVyIG8gLT4gb3RoZXJfbG9vcCBmIChmIGFjYyBvLnZhbHVlKSB0cylcbiAgICBpblxuICAgIGxldCByZWMgcmV0dXJuX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIHggLT4gcmV0dXJuX2xvb3AgZiAoeC52YWx1ZSA6OiBhY2MpIHRzXG4gICAgICAgICB8IE90aGVyIG8gLT4gb3RoZXJfbG9vcCBmIG8udmFsdWUgdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiBbXSB0c1xuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbF91bml0ID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIF8gLT4gb3RoZXJfbG9vcCBmIGFjYyB0c1xuICAgICAgICAgfCBPdGhlciBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2Mgby52YWx1ZSkgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIHsgdmFsdWUgPSAoKSB9IC0+IHJldHVybl9sb29wIGYgdHNcbiAgICAgICAgIHwgT3RoZXIgeyB2YWx1ZSA9IG8gfSAtPiBvdGhlcl9sb29wIGYgbyB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIHRzXG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID1cbiAgICBtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICB8IEZvY3VzIHggLT4gU29tZSB4LnZhbHVlXG4gICAgfCBPdGhlciBfIC0+IE5vbmVcbiAgOztcblxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgfCBGb2N1cyB4IC0+IHgudmFsdWVcbiAgICB8IE90aGVyIF8gLT4gZGVmYXVsdFxuICA7O1xuXG4gIGxldCB3aXRoX3JldHVybiBmID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHJldCAtPiBvdGhlciAoZiAoV2l0aF9yZXR1cm4ucHJlcGVuZCByZXQgfmY6cmV0dXJuKSkpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlyc3QgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gZmlyc3RcbiAgICBsZXQgb3RoZXIgPSBzZWNvbmRcblxuICAgIGxldCBmb2N1cyB0IDogXyBGb2N1cy50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IEZvY3VzIHsgdmFsdWUgPSB4IH1cbiAgICAgIHwgU2Vjb25kIHkgLT4gT3RoZXIgeyB2YWx1ZSA9IHkgfVxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAoZiB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKG90aGVyIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIF8gfCBfLCBTZWNvbmQgeCAtPiBTZWNvbmQgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24uICopXG4gICAgICB8IFNlY29uZCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFNlY29uZCA9IE1ha2VfZm9jdXNlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCByZXR1cm4gPSBzZWNvbmRcbiAgICBsZXQgb3RoZXIgPSBmaXJzdFxuXG4gICAgbGV0IGZvY3VzIHQgOiBfIEZvY3VzLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB4IC0+IEZvY3VzIHsgdmFsdWUgPSB4IH1cbiAgICAgIHwgRmlyc3QgeSAtPiBPdGhlciB7IHZhbHVlID0geSB9XG4gICAgOztcblxuICAgIGxldCBjb21iaW5lIHQxIHQyIH5mIH5vdGhlciA9XG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChmIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAob3RoZXIgeCB5KVxuICAgICAgfCBGaXJzdCB4LCBfIHwgXywgRmlyc3QgeCAtPiBGaXJzdCB4XG4gICAgOztcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24sIGxpa2UgW0ZpcnN0LmJpbmRdIGFib3ZlLiAqKVxuICAgICAgfCBGaXJzdCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlICgnZiwgJ3MpIF9laXRoZXIgPSAoJ2YsICdzKSB0ID1cbiAgICB8IEZpcnN0IG9mICdmXG4gICAgfCBTZWNvbmQgb2YgJ3NcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfb3B0aW9uXG5cbiAgbGV0IGdsb2JhbGl6ZSA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0ID1cbiAgICBmdW4gKHR5cGUgYV9fMDA1XylcbiAgICAgICAgOiAoKChhX18wMDVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8pIC0+IChhX18wMDVfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA1XyB0KSAtPlxuICAgICAgZ2xvYmFsaXplX29wdGlvblxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBoYXNoX2ZvbGRfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gICAgb3B0aW9uX29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBzZXhwX29mX29wdGlvblxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBvcHRpb25fc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSBvcHRpb25cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBnbG9iYWxpemUgOiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgfCBOb25lXG4gIHwgU29tZSBvZiAnYVxuXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NvbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHZhbHVlX21hcCBvIH5kZWZhdWx0IH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IGYgeFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuOztcblxubGV0IGl0ZXIgbyB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxuXG5sZXQgY2FsbCB4IH5mID1cbiAgbWF0Y2ggZiB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPiBmIHhcbjs7XG5cbmxldCB2YWx1ZSB0IH5kZWZhdWx0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBkZWZhdWx0XG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCB2YWx1ZV9leG4gP2hlcmUgP2Vycm9yID9tZXNzYWdlIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggaGVyZSwgZXJyb3IsIG1lc3NhZ2Ugd2l0aFxuICAgICAgfCBOb25lLCBOb25lLCBOb25lIC0+IEVycm9yLm9mX3N0cmluZyBcIk9wdGlvbi52YWx1ZV9leG4gTm9uZVwiXG4gICAgICB8IE5vbmUsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5vZl9zdHJpbmcgbVxuICAgICAgfCBOb25lLCBTb21lIGUsIE5vbmUgLT4gZVxuICAgICAgfCBOb25lLCBTb21lIGUsIFNvbWUgbSAtPiBFcnJvci50YWcgZSB+dGFnOm1cbiAgICAgIHwgU29tZSBwLCBOb25lLCBOb25lIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZSBcIk9wdGlvbi52YWx1ZV9leG5cIiBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBOb25lLCBTb21lIG0gLT4gRXJyb3IuY3JlYXRlIG0gcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgU29tZSBlLCBfIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICh2YWx1ZSBtZXNzYWdlIH5kZWZhdWx0OlwiXCIpXG4gICAgICAgICAgKGUsIHApXG4gICAgICAgICAgKHNleHBfb2ZfcGFpciBFcnJvci5zZXhwX29mX3QgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdClcbiAgICBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgdmFsdWVfb3JfdGh1bmsgbyB+ZGVmYXVsdCA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0ICgpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgeCAtPiBbfCB4IHxdXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgeCAtPiBbIHggXVxuOztcblxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZTpfID0gdFxubGV0IG1heF9lbHQgdCB+Y29tcGFyZTpfID0gdFxuXG5sZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICB2YWx1ZV9tYXAgdCB+ZGVmYXVsdDpNLnplcm8gfmZcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYScgLT4gZXF1YWwgYSBhJ1xuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBfIC0+IDFcbjs7XG5cbmxldCBpc19lbXB0eSA9IGlzX25vbmVcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgeCAtPiBmIGluaXQgeFxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGEgLT4gaWYgZiBhIHRoZW4gMSBlbHNlIDBcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gaWYgZiB4IHRoZW4gdCBlbHNlIE5vbmVcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGVxdWFsIGYgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeCcgLT4gZiB4IHgnXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNvbWUgeCA9IFNvbWUgeFxuXG5sZXQgZmlyc3Rfc29tZSB4IHkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIF8gLT4geFxuICB8IE5vbmUgLT4geVxuOztcblxubGV0IHNvbWVfaWYgY29uZCB4ID0gaWYgY29uZCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcblxubGV0IG1lcmdlIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBTb21lIChmIGEgYilcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgdiBhcyBvIHdoZW4gZiB2IC0+IG9cbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aCBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcbjs7XG5cbm1vZHVsZSBNb25hZF9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBiaW5kIG8gfmYgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBNb25hZC5NYWtlX2xvY2FsIChNb25hZF9hcmcpXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZV9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBtYXAyIHggeSB+ZiA9XG4gICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHgsIFNvbWUgeSAtPiBTb21lIChmIHggeSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMl9sb2NhbCAoQXBwbGljYXRpdmVfYXJnKVxuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCb29sMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBib29sXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfYm9vbCA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBmYWxzZTsgdHJ1ZSBdIDogdCBsaXN0KVxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9ib29sIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Jvb2xcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Jvb2wgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGJvb2xfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYm9vbCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBib29sX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICAgIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gICAgfCBzIC0+IGludmFsaWRfYXJnZiBcIkJvb2wub2Zfc3RyaW5nOiBleHBlY3RlZCB0cnVlIG9yIGZhbHNlIGJ1dCBnb3QgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfYm9vbFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJvb2xcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgdG9faW50IHggPSBib29sX3RvX2ludCB4XG5cbm1vZHVsZSBOb25fc2hvcnRfY2lyY3VpdGluZyA9IHN0cnVjdFxuICAoKiBXZSBkb24ndCBleHBvc2UgdGhpcywgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBicmVhayB0aGUgaW52YXJpYW50IG1lbnRpb25lZCBiZWxvdyBvZlxuICAgICAodG9faW50IHRydWUgPSAxKSBhbmQgKHRvX2ludCBmYWxzZSA9IDApLiAqKVxuICBsZXQgdW5zYWZlX29mX2ludCAoeCA6IGludCkgOiBib29sID0gU3RkbGliLk9iai5tYWdpYyB4XG4gIGxldCAoIHx8ICkgYSBiID0gdW5zYWZlX29mX2ludCAodG9faW50IGEgbG9yIHRvX2ludCBiKVxuICBsZXQgKCAmJiApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxhbmQgdG9faW50IGIpXG5lbmRcblxuKCogV2UgZG8gdGhpcyBhcyBhIGRpcmVjdCBhc3NlcnQgb24gdGhlIHRoZW9yeSB0aGF0IGl0J3MgYSBjaGVhcCB0aGluZyB0byB0ZXN0IGFuZCBhXG4gICByZWFsbHkgY29yZSBpbnZhcmlhbnQgdGhhdCB3ZSBuZXZlciBleHBlY3QgdG8gYnJlYWssIGFuZCB3ZSBzaG91bGQgYmUgaGFwcHkgZm9yIGFcbiAgIHByb2dyYW0gdG8gZmFpbCBpbW1lZGlhdGVseSBpZiB0aGlzIGlzIHZpb2xhdGVkLiAqKVxubGV0ICgpID0gYXNzZXJ0IChQb2x5LiggPSApICh0b19pbnQgdHJ1ZSkgMSAmJiBQb2x5LiggPSApICh0b19pbnQgZmFsc2UpIDApXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbnRhaW5lcl9pbnRmLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgTGlzdCA9IExpc3QxXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gICgqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZlxuICAgICB0aGUgc2VxdWVuY2UgKilcbiAgdHlwZSAoJ2EsICdzKSB0ID1cbiAgICB8IERvbmVcbiAgICB8IFNraXAgb2YgeyBzdGF0ZSA6ICdzIH1cbiAgICB8IFlpZWxkIG9mXG4gICAgICAgIHsgdmFsdWUgOiAnYVxuICAgICAgICA7IHN0YXRlIDogJ3NcbiAgICAgICAgfVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAncy5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgncyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAncykgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDExXyBzX18wMTJfKVxuICAgICAgICA6ICAoKGFfXzAxMV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDEyXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDExXywgc19fMDEyXykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzAwMV8gX29mX3NfXzAwMl8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBEb25lIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkRvbmVcIlxuICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHN0YXRlX18wMDRfIH0gLT5cbiAgICAgICAgICBsZXQgYm5kc19fMDAzXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgICAgICBsZXQgYXJnX18wMDVfID0gX29mX3NfXzAwMl8gc3RhdGVfXzAwNF8gaW5cbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGF0ZVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlNraXBcIiA6OiBibmRzX18wMDNfKVxuICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB2YWx1ZV9fMDA3Xzsgc3RhdGUgPSBzdGF0ZV9fMDA5XyB9IC0+XG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDEwXyA9IF9vZl9zX18wMDJfIHN0YXRlX18wMDlfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhdGVcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDA4XyA9IF9vZl9hX18wMDFfIHZhbHVlX18wMDdfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidmFsdWVcIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJZaWVsZFwiIDo6IGJuZHNfXzAwNl8pXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5vcGVuIFN0ZXBcblxuKCogJ2EgaXMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UsICdzIGlzIHRoZSBzdGF0ZSB0aGF0IHdpbGwgcHJvZHVjZSB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgc2VxdWVuY2UgKilcbnR5cGUgK18gdCA9XG4gIHwgU2VxdWVuY2UgOlxuICAgICAgeyBzdGF0ZSA6ICdzXG4gICAgICA7IG5leHQgOiAncyAtPiAoJ2EsICdzKSBTdGVwLnRcbiAgICAgIH1cbiAgICAgIC0+ICdhIHRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgbmV4dF9zdGVwIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSkgPVxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IH1cbiAgOztcblxuICBsZXQgZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGxvb3AgcyBuZXh0IGZpbmlzaCBmIGFjYyA9XG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGYgYWNjIE5vbmUgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gZiBhY2MgKFNvbWUgYSkgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgIGluXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0IGZpbmlzaCBmIGluaXRcbiAgOztcbmVuZFxuXG5sZXQgdW5mb2xkX3N0ZXAgfmluaXQgfmYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gaW5pdDsgbmV4dCA9IGYgfVxuXG5sZXQgdW5mb2xkIH5pbml0IH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQgfmY6KGZ1biBzIC0+XG4gICAgbWF0Y2ggZiBzIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RlcC5Eb25lXG4gICAgfCBTb21lIChhLCBzKSAtPiBTdGVwLllpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSlcbjs7XG5cbmxldCB1bmZvbGRfd2l0aCBzIH5pbml0IH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gaW5pdCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChzZWVkLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzZWVkLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGYgc2VlZCBhIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VlZCB9IC0+IFNraXAgeyBzdGF0ZSA9IHNlZWQsIHMgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gc2VlZCB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHNlZWQsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgdW5mb2xkX3dpdGhfYW5kX2ZpbmlzaCBzIH5pbml0IH5ydW5uaW5nX3N0ZXAgfmlubmVyX2ZpbmlzaGVkIH5maW5pc2hpbmdfc3RlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChpbml0LCBzKVxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHN0YXRlIC0+XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBuZXh0IGlubmVyX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX2ZpbmlzaGVkIChpbm5lcl9maW5pc2hlZCBzdGF0ZSkgfVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gaW5uZXJfc3RhdGUgfSAtPlxuICAgICAgICAgICAgICAgICAgU2tpcCB7IHN0YXRlID0gYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gaW5uZXJfc3RhdGUgfSAtPlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHJ1bm5pbmdfc3RlcCBzdGF0ZSB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlIH0gLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgfVxuICAgICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHk7IHN0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIH0pKVxuICAgICAgICAgICAgIHwgYElubmVyX2ZpbmlzaGVkIHN0YXRlIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggZmluaXNoaW5nX3N0ZXAgc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSW5uZXJfZmluaXNoZWQgc3RhdGUgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHk7IHN0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSA9IGBJbm5lcl9maW5pc2hlZCBzdGF0ZSB9KSlcbiAgICAgIH1cbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpsIH5mOihmdW5jdGlvblxuICAgIHwgW10gLT4gRG9uZVxuICAgIHwgeCA6OiBsIC0+IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IGwgfSlcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCB2IG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gdlxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyB2IG5leHQgZlxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoZiB2IGEpIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBpbml0IG5leHQgZlxuOztcblxubGV0IHRvX2xpc3RfcmV2IHQgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKVxuXG5cbmxldCB0b19saXN0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSA9XG4gIGxldCBzYWZlX3RvX2xpc3QgdCA9IExpc3QucmV2ICh0b19saXN0X3JldiB0KSBpblxuICBsZXQgcmVjIHRvX2xpc3QgcyBuZXh0IGkgPVxuICAgIGlmIGkgPSAwXG4gICAgdGhlbiBzYWZlX3RvX2xpc3QgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IFtdXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiB0b19saXN0IHMgbmV4dCBpXG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBhIDo6IHRvX2xpc3QgcyBuZXh0IChpIC0gMSkpXG4gIGluXG4gIHRvX2xpc3QgcyBuZXh0IDUwMFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X3Ygc3RvcF92ID1cbiAgbGV0IHN0ZXAgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgYGluY2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID4gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBpOyBzdGF0ZSA9IGkgKyBzdHJpZGUgfVxuICAgIHwgYGluY2x1c2l2ZSAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA8IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgICB8IGBleGNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gICAgfCBgZXhjbHVzaXZlIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpIDw9IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgaW5cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfdlxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBzdGFydF92ICsgc3RyaWRlXG4gIGluXG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOnN0ZXBcbjs7XG5cbmxldCBvZl9sYXp5IHRfbGF6eSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnRfbGF6eSB+ZjooZnVuIHRfbGF6eSAtPlxuICAgIGxldCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPSBMYXp5LmZvcmNlIHRfbGF6eSBpblxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgU2tpcFxuICAgICAgICB7IHN0YXRlID1cbiAgICAgICAgICAgIChsZXQgdiA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gaW5cbiAgICAgICAgICAgICBsYXp5IHYpXG4gICAgICAgIH1cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgWWllbGRcbiAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgOyBzdGF0ZSA9XG4gICAgICAgICAgICAobGV0IHYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IGluXG4gICAgICAgICAgICAgbGF6eSB2KVxuICAgICAgICB9KVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc2VlZFxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHNlZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGYgYTsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gZiBpIGE7IHN0YXRlID0gaSArIDEsIHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgYWNjIHggaW5cbiAgICBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBhY2MgfSlcbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQ6KDAsIGluaXQpIH5mOihmdW4gKGksIGFjYykgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGkgYWNjIHggaW5cbiAgICBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBpICsgMSwgYWNjIH0pXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBzZWVkXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gc2VlZCAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbWFwIH5mOnNuZCAoZmlsdGVyIChtYXBpIHQgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKSlcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIGxldCByZWMgbG9vcCBpIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gaVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgaSBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIChpICsgMSkgcyBuZXh0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6KFtdLCAwKSB+ZjooZnVuIChsLCBpKSB4IC0+IHggOjogbCwgaSArIDEpXG5cbmxldCB0b19hcnJheSB0ID1cbiAgbGV0IGwsIGxlbiA9IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IHggOjogbCAtPlxuICAgIGxldCBhID0gQXJyYXkuY3JlYXRlIH5sZW4geCBpblxuICAgIGxldCByZWMgbG9vcCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgYS4oaSkgPC0geDtcbiAgICAgICAgbG9vcCAoaSAtIDEpIGxcbiAgICBpblxuICAgIGxvb3AgKGxlbiAtIDIpIGw7XG4gICAgYVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gZiBhIC0+IFNvbWUgYVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZlxuICAgICAgIHwgc29tZV9iIC0+IHNvbWVfYilcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggZiBpIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBub3QgKGYgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gbm90IChmIGkgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgaSBhIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+ICgpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICBmIGE7XG4gICAgICBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIF8gLT4gZmFsc2VcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBhID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gXyB9IHdoZW4gZXF1YWwgYSBiIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBhXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgYSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZW1wdHkgPSBTZXF1ZW5jZSB7IHN0YXRlID0gKCk7IG5leHQgPSAoZnVuICgpIC0+IERvbmUpIH1cblxubGV0IGJpbmQgdCB+ZiA9XG4gIHVuZm9sZF9zdGVwXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0sIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICB8IERvbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGVtcHR5LCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGYgYSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSB9KSlcbiAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0sIHJlc3QgfVxuICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSwgcmVzdCB9KSlcbiAgICB+aW5pdDooZW1wdHksIHQpXG47O1xuXG5sZXQgcmV0dXJuIHggPVxuICB1bmZvbGRfc3RlcCB+aW5pdDooU29tZSB4KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRG9uZVxuICAgIHwgU29tZSB4IC0+IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IE5vbmUgfSlcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kKVxuXG5sZXQgbnRoIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBOb25lXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgcyBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICBpZiBwaHlzX2VxdWFsIGkgMCB0aGVuIFNvbWUgYSBlbHNlIGxvb3AgKGkgLSAxKSBzIG5leHRcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIG4gcyBuZXh0KVxuOztcblxubGV0IG50aF9leG4gcyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLm50aFwiXG4gIGVsc2UgKFxuICAgIG1hdGNoIG50aCBzIG4gd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLm50aFwiXG4gICAgfCBTb21lIHggLT4geClcbjs7XG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAxM18gYl9fMDE0XyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDEzXyBiX18wMTRfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTNfLCBiX18wMTRfIHdpdGhcbiAgICAgIHwgTGVmdCBfYV9fMDE1XywgTGVmdCBfYl9fMDE2XyAtPiBfY21wX19hIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IExlZnQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBMZWZ0IF8gLT4gMVxuICAgICAgfCBSaWdodCBfYV9fMDE3XywgUmlnaHQgX2JfXzAxOF8gLT4gX2NtcF9fYiBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBSaWdodCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFJpZ2h0IF8gLT4gMVxuICAgICAgfCBCb3RoIChfYV9fMDE5XywgX2FfXzAyMV8pLCBCb3RoIChfYl9fMDIwXywgX2JfXzAyMl8pIC0+XG4gICAgICAgIChtYXRjaCBfY21wX19hIF9hX18wMTlfIF9iX18wMjBfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19iIF9hX18wMjFfIF9iX18wMjJfXG4gICAgICAgICB8IG4gLT4gbikpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90XG4gICAgOiB0eXBlIGEgYi5cbiAgICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgICAtPiAoYSwgYikgdFxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICB8IExlZnQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgfCBSaWdodCBfYTAgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG4gICAgICB8IEJvdGggKF9hMCwgX2ExKSAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyIGluXG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgICBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNDZfIGJfXzA0N18pXG4gICAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzA0Nl8pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDQ3XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgICAtPiAoYV9fMDQ2XywgYl9fMDQ3XykgdCkgLT5cbiAgICAgIGxldCBlcnJvcl9zb3VyY2VfXzAyN18gPSBcInNlcXVlbmNlLm1sLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnRcIiBpblxuICAgICAgZnVuIF9vZl9hX18wMjNfIF9vZl9iX18wMjRfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJsZWZ0XCIgfCBcIkxlZnRcIikgYXMgX3RhZ19fMDMwXykgOjogc2V4cF9hcmdzX18wMzFfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMjlfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDMxXyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wMzJfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDMzXyA9IF9vZl9hX18wMjNfIGFyZzBfXzAzMl8gaW5cbiAgICAgICAgICAgICBMZWZ0IHJlczBfXzAzM19cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wMzBfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDI5XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIF90YWdfXzAzNV8pIDo6IHNleHBfYXJnc19fMDM2XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM0XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzNl8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDM3XyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzOF8gPSBfb2ZfYl9fMDI0XyBhcmcwX18wMzdfIGluXG4gICAgICAgICAgICAgUmlnaHQgcmVzMF9fMDM4X1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyN19cbiAgICAgICAgICAgICAgIF90YWdfXzAzNV9cbiAgICAgICAgICAgICAgIF9zZXhwX18wMzRfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiYm90aFwiIHwgXCJCb3RoXCIpIGFzIF90YWdfXzA0MF8pIDo6IHNleHBfYXJnc19fMDQxXykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM5XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA0MV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDQyXzsgYXJnMV9fMDQzXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzA0NF8gPSBfb2ZfYV9fMDIzXyBhcmcwX18wNDJfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzA0NV8gPSBfb2ZfYl9fMDI0XyBhcmcxX18wNDNfIGluXG4gICAgICAgICAgICAgQm90aCAocmVzMF9fMDQ0XywgcmVzMV9fMDQ1XylcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wNDBfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDM5XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIHNleHBfXzAyOF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIHNleHBfXzAyOF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBzZXhwX18wMjhfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgfCBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNThfIGJfXzA1OV8pXG4gICAgICAgIDogICgoYV9fMDU4XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wNTlfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wNThfLCBiX18wNTlfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDQ4XyBfb2ZfYl9fMDQ5XyAtPiBmdW5jdGlvblxuICAgICAgICB8IExlZnQgYXJnMF9fMDUwXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTFfID0gX29mX2FfXzA0OF8gYXJnMF9fMDUwXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgcmVzMF9fMDUxXyBdXG4gICAgICAgIHwgUmlnaHQgYXJnMF9fMDUyXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTNfID0gX29mX2JfXzA0OV8gYXJnMF9fMDUyXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IHJlczBfXzA1M18gXVxuICAgICAgICB8IEJvdGggKGFyZzBfXzA1NF8sIGFyZzFfXzA1NV8pIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1Nl8gPSBfb2ZfYV9fMDQ4XyBhcmcwX18wNTRfXG4gICAgICAgICAgYW5kIHJlczFfXzA1N18gPSBfb2ZfYl9fMDQ5XyBhcmcxX18wNTVfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiOyByZXMwX18wNTZfOyByZXMxX18wNTdfIF1cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAgICdhICdiLlxuICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiQm90aFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmxldCBtZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KVxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pXG4gICAgICB+Y29tcGFyZVxuICA9XG4gIGxldCB1bnNoYWRvd2VkX2NvbXBhcmUgPSBjb21wYXJlIGluXG4gIGxldCBvcGVuIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50IGluXG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICAgIHwgKFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxJyB9IGFzIHMxKSwgKFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyJyB9IGFzIHMyKVxuICAgICAgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gdW5zaGFkb3dlZF9jb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8IDBcbiAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IExlZnQgYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMScgfSwgczIgfVxuICAgICAgZWxzZSBpZiBjb21wYXJpc29uID0gMFxuICAgICAgdGhlblxuICAgICAgICBZaWVsZCB7IHZhbHVlID0gQm90aCAoYSwgYik7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEnIH0sIFNraXAgeyBzdGF0ZSA9IHMyJyB9IH1cbiAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IFJpZ2h0IGI7IHN0YXRlID0gczEsIFNraXAgeyBzdGF0ZSA9IHMyJyB9IH1cbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgRG9uZSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IExlZnQgYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBEb25lIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBSaWdodCBiOyBzdGF0ZSA9IERvbmUsIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgbWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIHMxIHMyIH5jb21wYXJlID1cbiAgbWFwIChtZXJnZV93aXRoX2R1cGxpY2F0ZXMgczEgczIgfmNvbXBhcmUpIH5mOihmdW5jdGlvblxuICAgIHwgTGVmdCB4IHwgUmlnaHQgeCB8IEJvdGggKHgsIF8pIC0+IHgpXG47O1xuXG5sZXQgKG1lcmdlIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMjEtMDddIEZvciBpZGVudGljYWwgYmVoYXZpb3IsIHVzZSBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkXSwgYnV0IGNvbnNpZGVyIHVzaW5nIFxcXG4gICAgICAgIFtTZXF1ZW5jZS5tZXJnZV9zb3J0ZWRdIGluc3RlYWQuXCJdKVxuICA9XG4gIG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZFxuOztcblxubGV0IG1lcmdlX3NvcnRlZFxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSlcbiAgICAgIH5jb21wYXJlXG4gID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gICAgfCAoWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEnIH0gYXMgczEpLCAoWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczInIH0gYXMgczIpXG4gICAgICAtPlxuICAgICAgbGV0IGNvbXBhcmlzb24gPSBjb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8PSAwXG4gICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxJyB9LCBzMiB9XG4gICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMxLCBTa2lwIHsgc3RhdGUgPSBzMicgfSB9XG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIERvbmUgLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIERvbmUgfVxuICAgIHwgRG9uZSwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczIgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gRG9uZSwgU2tpcCB7IHN0YXRlID0gczIgfSB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCBoZCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gLT4gU29tZSBhXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBoZF9leG4gcyA9XG4gIG1hdGNoIGhkIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJoZF9leG5cIlxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdGwgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gYSB9IC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgKG1hdGNoIGxvb3AgcyBuZXh0IHdpdGhcbiAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfCBTb21lIHMgLT4gU29tZSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkpXG47O1xuXG5sZXQgdGxfZWFnZXJseV9leG4gcyA9XG4gIG1hdGNoIHRsIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS50bF9leG5cIlxuICB8IFNvbWUgcyAtPiBzXG47O1xuXG5sZXQgbGlmdF9pZGVudGl0eSBuZXh0IHMgPVxuICBtYXRjaCBuZXh0IHMgd2l0aFxuICB8IERvbmUgLT4gRG9uZVxuICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9XG4gIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBJZGVudGl0eSBzIH1cbjs7XG5cbmxldCBuZXh0IHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBTb21lIChhLCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgZmlsdGVyX29wdCBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gTm9uZTsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gU29tZSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZmlsdGVyX21hcCBzIH5mID0gZmlsdGVyX29wdCAobWFwIHMgfmYpXG5sZXQgZmlsdGVyX21hcGkgcyB+ZiA9IGZpbHRlcl9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBzcGxpdF9uIHMgbiA9XG4gIGxldCByZWMgbG9vcCBzIGkgYWNjdW0gbmV4dCA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiBMaXN0LnJldiBhY2N1bSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBMaXN0LnJldiBhY2N1bSwgZW1wdHlcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBpIGFjY3VtIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoaSAtIDEpIChhIDo6IGFjY3VtKSBuZXh0KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuIFtdIG5leHRcbjs7XG5cbmxldCBjaHVua3NfZXhuIHQgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UuY2h1bmtzX2V4blwiXG4gIGVsc2VcbiAgICB1bmZvbGRfc3RlcCB+aW5pdDp0IH5mOihmdW4gdCAtPlxuICAgICAgbWF0Y2ggc3BsaXRfbiB0IG4gd2l0aFxuICAgICAgfCBbXSwgX2VtcHR5IC0+IERvbmVcbiAgICAgIHwgKF8gOjogXyBhcyB4cyksIHQgLT4gWWllbGQgeyB2YWx1ZSA9IHhzOyBzdGF0ZSA9IHQgfSlcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBpIGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgaSBhIC0+IFNvbWUgKGksIGEpXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgKGkgKyAxKSBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgMCBmXG47O1xuXG5sZXQgZmluZF9leG4gcyB+ZiA9XG4gIG1hdGNoIGZpbmQgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLmZpbmRfZXhuXCJcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IGFwcGVuZCBzMSBzMiA9XG4gIG1hdGNoIHMxLCBzMiB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gbmV4dDEgfSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYEZpcnN0X2xpc3QgczFcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBGaXJzdF9saXN0IHMxIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0MSBzMSB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gYFNlY29uZF9saXN0IHMyIH1cbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSAtPiBTa2lwIHsgc3RhdGUgPSBgRmlyc3RfbGlzdCBzMSB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0gLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYEZpcnN0X2xpc3QgczEgfSlcbiAgICAgICAgICAgIHwgYFNlY29uZF9saXN0IHMyIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0MiBzMiB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IGBTZWNvbmRfbGlzdCBzMiB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYFNlY29uZF9saXN0IHMyIH0pKVxuICAgICAgfVxuOztcblxubGV0IGNvbmNhdF9tYXAgcyB+ZiA9IGJpbmQgcyB+ZlxubGV0IGNvbmNhdCBzID0gY29uY2F0X21hcCBzIH5mOkZuLmlkXG5sZXQgY29uY2F0X21hcGkgcyB+ZiA9IGNvbmNhdF9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCB6aXAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pIChTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBuZXh0MiB9KSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhLCBiOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICAgIHwgRG9uZSwgXyB8IF8sIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCB6aXBfZnVsbFxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSlcbiAgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYEJvdGggKGEsIGIpOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBzMiAtPiBTa2lwIHsgc3RhdGUgPSBuZXh0MSBzMSwgczIgfVxuICAgIHwgczEsIFNraXAgeyBzdGF0ZSA9IHMyIH0gLT4gU2tpcCB7IHN0YXRlID0gczEsIG5leHQyIHMyIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBgUmlnaHQgYjsgc3RhdGUgPSBEb25lLCBuZXh0MiBzMiB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBEb25lIC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYExlZnQgYTsgc3RhdGUgPSBuZXh0MSBzMSwgRG9uZSB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCBib3VuZGVkX2xlbmd0aCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSkgfmF0X21vc3QgPVxuICBsZXQgcmVjIGxvb3AgaSBzZWVkIG5leHQgPVxuICAgIGlmIGkgPiBhdF9tb3N0XG4gICAgdGhlbiBgR3JlYXRlclxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBgSXMgaVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzZWVkIH0gLT4gbG9vcCBpIHNlZWQgbmV4dFxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzZWVkIH0gLT4gbG9vcCAoaSArIDEpIHNlZWQgbmV4dClcbiAgaW5cbiAgbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IGxlbmd0aF9pc19ib3VuZGVkX2J5ID8obWluID0gLTEpID9tYXggdCA9XG4gIGxldCBsZW5ndGhfaXNfYXRfbGVhc3QgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID1cbiAgICBsZXQgcmVjIGxvb3AgcyBhY2MgPVxuICAgICAgaWYgYWNjID49IG1pblxuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBhY2NcbiAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIChhY2MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgcyAwXG4gIGluXG4gIG1hdGNoIG1heCB3aXRoXG4gIHwgTm9uZSAtPiBsZW5ndGhfaXNfYXRfbGVhc3QgdFxuICB8IFNvbWUgbWF4IC0+XG4gICAgKG1hdGNoIGJvdW5kZWRfbGVuZ3RoIHQgfmF0X21vc3Q6bWF4IHdpdGhcbiAgICAgfCBgSXMgbGVuIHdoZW4gbGVuID49IG1pbiAtPiB0cnVlXG4gICAgIHwgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCBpdGVyaSBzIH5mID0gaXRlciAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcykgW0Bub250YWlsXVxuXG5sZXQgZm9sZGkgcyB+aW5pdCB+ZiA9XG4gIGZvbGQgfmluaXQgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biBhY2MgKGksIHMpIC0+IGYgaSBhY2MgcykgW0Bub250YWlsXVxuOztcblxubGV0IHJlZHVjZSBzIH5mID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChhLCBzKSAtPiBTb21lIChmb2xkIHMgfmluaXQ6YSB+Zilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHMgfmYgPVxuICBtYXRjaCByZWR1Y2UgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLnJlZHVjZV9leG5cIlxuICB8IFNvbWUgcmVzIC0+IHJlc1xuOztcblxubGV0IGdyb3VwIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSB+YnJlYWsgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5pbml0OihTb21lIChbXSwgcykpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgfCBTb21lIChhY2MsIHMpIC0+XG4gICAgICAgIChtYXRjaCBhY2MsIG5leHQgcyB3aXRoXG4gICAgICAgICB8IF8sIFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTb21lIChhY2MsIHMpIH1cbiAgICAgICAgIHwgW10sIERvbmUgLT4gRG9uZVxuICAgICAgICAgfCBhY2MsIERvbmUgLT4gWWllbGQgeyB2YWx1ZSA9IExpc3QucmV2IGFjYzsgc3RhdGUgPSBOb25lIH1cbiAgICAgICAgIHwgW10sIFlpZWxkIHsgdmFsdWUgPSBjdXI7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IFNvbWUgKFsgY3VyIF0sIHMpIH1cbiAgICAgICAgIHwgKHByZXYgOjogXyBhcyBhY2MpLCBZaWVsZCB7IHZhbHVlID0gY3VyOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICBpZiBicmVhayBwcmV2IGN1clxuICAgICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBMaXN0LnJldiBhY2M7IHN0YXRlID0gU29tZSAoWyBjdXIgXSwgcykgfVxuICAgICAgICAgICBlbHNlIFNraXAgeyBzdGF0ZSA9IFNvbWUgKGN1ciA6OiBhY2MsIHMpIH0pKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgbGFzdF9lbHQgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgbGFzdF9lbHQgc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggbGFzdF9lbHQgd2l0aFxuICAgICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNvbWUgKGIsIGEpXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IGxvb3AgKFNvbWUgYSkgcylcbiAgaW5cbiAgbG9vcCBOb25lIHMgW0Bub250YWlsXVxuOztcblxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIHMgfmVxdWFsID1cbiAgdW5mb2xkX3dpdGggcyB+aW5pdDpOb25lIH5mOihmdW4gcHJldiBhIC0+XG4gICAgbWF0Y2ggcHJldiB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU2tpcCB7IHN0YXRlID0gU29tZSBhIH1cbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU29tZSBhIH0pXG47O1xuXG5sZXQgY291bnQgcyB+ZiA9IGZvbGQgcyB+aW5pdDowIH5mOihmdW4gYWNjIGVsdCAtPiBhY2MgKyBCb29sLnRvX2ludCAoZiBlbHQpKSBbQG5vbnRhaWxdXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgYWNjIGVsdCAtPiBhY2MgKyBCb29sLnRvX2ludCAoZiBpIGVsdCkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT5cbiAgICBpZiBpID49IG4gdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGYgaTsgc3RhdGUgPSBpICsgMSB9KVxuOztcblxubGV0IHN1YiBzIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2Uuc3ViXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBpZiBpIC0gcG9zID49IGxlblxuICAgICAgICAgICAgIHRoZW4gRG9uZVxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IHdoZW4gaSA+PSBwb3MgLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSArIDEsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgdGFrZSBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnRha2VcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIGlmIGkgPj0gbGVuXG4gICAgICAgICAgICAgdGhlbiBEb25lXG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGksIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgZHJvcCBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLmRyb3BcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGkgPj0gbGVuIC0+XG4gICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBpICsgMSwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSArIDEsIHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCB0YWtlX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IF8gfSAtPiBEb25lKVxuICAgICAgfVxuOztcblxubGV0IGRyb3Bfd2hpbGUgcyB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBEcm9wcGluZyBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgRHJvcHBpbmcgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgRHJvcHBpbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBTa2lwIHsgc3RhdGUgPSBgRHJvcHBpbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9KVxuICAgICAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcylcbiAgICAgIH1cbjs7XG5cbmxldCBzaGlmdF9yaWdodCBzIHggPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgQ29uc2luZyAoc2VlZCwgeClcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBDb25zaW5nIChzZWVkLCB4KSAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBgSWRlbnRpdHkgc2VlZCB9XG4gICAgICAgICAgICB8IGBJZGVudGl0eSBzIC0+IGxpZnRfaWRlbnRpdHkgbmV4dCBzKVxuICAgICAgfVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0X3dpdGhfbGlzdCBzIGwgPSBhcHBlbmQgKG9mX2xpc3QgbCkgc1xubGV0IHNoaWZ0X2xlZnQgPSBkcm9wXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgaW50ZXJzcGVyc2UgcyB+c2VwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYEluaXQgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEluaXQgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSW5pdCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBSdW5uaW5nIHMgfSlcbiAgICAgICAgICAgIHwgYFJ1bm5pbmcgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgUnVubmluZyBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBzZXA7IHN0YXRlID0gYFB1dHRpbmcgKGEsIHMpIH0pXG4gICAgICAgICAgICB8IGBQdXR0aW5nIChhLCBzKSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgUnVubmluZyBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgcmVwZWF0IHggPSB1bmZvbGRfc3RlcCB+aW5pdDp4IH5mOihmdW4geCAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSB4IH0pXG5cbmxldCBjeWNsZV9saXN0X2V4biB4cyA9XG4gIGlmIExpc3QuaXNfZW1wdHkgeHMgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuXCI7XG4gIGxldCBzID0gb2ZfbGlzdCB4cyBpblxuICBjb25jYXRfbWFwIH5mOihmdW4gKCkgLT4gcykgKHJlcGVhdCAoKSlcbjs7XG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCBzYSBzYiA9IGNvbmNhdF9tYXAgc2EgfmY6KGZ1biBhIC0+IHppcCAocmVwZWF0IGEpIHNiKVxubGV0IHNpbmdsZXRvbiB4ID0gcmV0dXJuIHhcblxubGV0IGRlbGF5ZWRfZm9sZCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZmluaXNoIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IGsgYWNjXG4gICAgfCBTb21lIGEgLT4gZiBhY2MgYSB+aylcbjs7XG5cbmxldCBmb2xkX20gfmJpbmQgfnJldHVybiB0IH5pbml0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBhY2Mgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiBhY2MpIH5mOmtcbiAgICAgIHwgU29tZSBhIC0+IGJpbmQgKGYgYWNjIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBpdGVyX20gfmJpbmQgfnJldHVybiB0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0OigpXG4gICAgfmY6KGZ1biAoKSBvcHRpb24gfmsgLT5cbiAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYmluZCAocmV0dXJuICgpKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBmb2xkX3VudGlsIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoJ2EsICdiKSBDb250aW51ZV9vcl9zdG9wLnQpIHdpdGhcbiAgICAgICB8IFN0b3AgeCAtPiB4XG4gICAgICAgfCBDb250aW51ZSBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHQgZiBpbml0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCBzIH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGFjYyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gUmVzdWx0LnJldHVybiBhY2NcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoXywgXykgUmVzdWx0LnQpIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgICAgfCBPayBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHQgZiBpbml0XG47O1xuXG5sZXQgZm9yY2VfZWFnZXJseSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxuXG5sZXQgbWVtb2l6ZSAodHlwZSBhKSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIG9mIChhLCB0KSBTdGVwLnQgTGF6eS50XG4gIGVuZFxuICBpblxuICBsZXQgcmVjIG1lbW9pemUgcyA9IE0uVCAobGF6eSAoZmluZF9zdGVwIHMpKVxuICBhbmQgZmluZF9zdGVwIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBmaW5kX3N0ZXAgc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IG1lbW9pemUgcyB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBtZW1vaXplIHM7IG5leHQgPSAoZnVuIChNLlQgbCkgLT4gTGF6eS5mb3JjZSBsKSB9XG47O1xuXG5sZXQgZHJvcF9lYWdlcmx5IHMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGkgfmxlbiBzIG5leHQgPVxuICAgIGlmIGkgPj0gbGVuXG4gICAgdGhlbiBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGVtcHR5XG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgfmxlbiBzIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IGxvb3AgKGkgKyAxKSB+bGVuIHMgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIDAgfmxlbiBzIG5leHRcbjs7XG5cbmxldCBkcm9wX3doaWxlX29wdGlvbiAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3Agc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gcyB9IC0+XG4gICAgICBpZiBmIHggdGhlbiBsb29wIHMgZWxzZSBTb21lICh4LCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICBpblxuICBsb29wIHMgW0Bub250YWlsXVxuOztcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgICAgfCBgTGVmdCBfIC0+IHIucmV0dXJuIDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gci5yZXR1cm4gKC0xKVxuICAgICAgfCBgQm90aCAodjEsIHYyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlbiByLnJldHVybiBjKTtcbiAgICAwKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPVxuICBmb3JfYWxsICh6aXBfZnVsbCB0MSB0MikgfmY6KGZ1bmN0aW9uXG4gICAgfCBgQm90aCAoYTEsIGEyKSAtPiBlcXVhbF9hIGExIGEyXG4gICAgfCBgTGVmdCBfIHwgYFJpZ2h0IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgcm91bmRfcm9iaW4gbGlzdCA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZiBzIHdpdGhcbiAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgWWllbGRcbiAgICAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgICAgOyBzdGF0ZSA9IHRvZG9fc3RhY2ssIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IDo6IGRvbmVfc3RhY2tcbiAgICAgICAgICAgfVxuICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiB0b2RvX3N0YWNrLCBkb25lX3N0YWNrIH1cbiAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgZG9uZV9zdGFjayB9KVxuICAgIHwgW10gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgZG9uZV9zdGFjayB0aGVuIERvbmUgZWxzZSBTa2lwIHsgc3RhdGUgPSBMaXN0LnJldiBkb25lX3N0YWNrLCBbXSB9XG4gIGluXG4gIGxldCBzdGF0ZSA9IGxpc3QsIFtdIGluXG4gIFNlcXVlbmNlIHsgc3RhdGU7IG5leHQgfVxuOztcblxubGV0IGludGVybGVhdmUgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IGYxIH0pID1cbiAgbGV0IG5leHQgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBmMiB9IDo6IHRvZG9fc3RhY2sgLT5cbiAgICAgIChtYXRjaCBmMiBzMiB3aXRoXG4gICAgICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICBZaWVsZFxuICAgICAgICAgICB7IHZhbHVlID0geFxuICAgICAgICAgICA7IHN0YXRlID0gdG9kb19zdGFjaywgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gZjIgfSA6OiBkb25lX3N0YWNrLCBzMVxuICAgICAgICAgICB9XG4gICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICBTa2lwIHsgc3RhdGUgPSB0b2RvX3N0YWNrLCBTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBmMiB9IDo6IGRvbmVfc3RhY2ssIHMxIH1cbiAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgZG9uZV9zdGFjaywgczEgfSlcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggZjEgczEsIGRvbmVfc3RhY2sgd2l0aFxuICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHQ7IHN0YXRlID0gczEgfSwgXyAtPlxuICAgICAgICAgU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgKHQgOjogZG9uZV9zdGFjayksIFtdLCBzMSB9XG4gICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBfIC0+IFNraXAgeyBzdGF0ZSA9IExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSB9XG4gICAgICAgfCBEb25lLCBfIDo6IF8gLT4gU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxIH1cbiAgICAgICB8IERvbmUsIFtdIC0+IERvbmUpXG4gIGluXG4gIGxldCBzdGF0ZSA9IFtdLCBbXSwgczEgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZTsgbmV4dCB9XG47O1xuXG5sZXQgaW50ZXJsZWF2ZWRfY2FydGVzaWFuX3Byb2R1Y3QgczEgczIgPVxuICBtYXAgczEgfmY6KGZ1biB4MSAtPiBtYXAgczIgfmY6KGZ1biB4MiAtPiB4MSwgeDIpKSB8PiBpbnRlcmxlYXZlXG47O1xuXG5sZXQgb2Zfc2VxIChzZXEgOiBfIFN0ZGxpYi5TZXEudCkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpzZXEgfmY6KGZ1biBzZXEgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IERvbmVcbiAgICB8IENvbnMgKGhkLCB0bCkgLT4gWWllbGQgeyB2YWx1ZSA9IGhkOyBzdGF0ZSA9IHRsIH0pXG47O1xuXG5sZXQgdG9fc2VxIChTZXF1ZW5jZSB7IHN0YXRlOyBuZXh0IH0pID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBuZXh0IHN0YXRlIHdpdGhcbiAgICB8IERvbmUgLT4gU3RkbGliLlNlcS5OaWxcbiAgICB8IFNraXAgeyBzdGF0ZSB9IC0+IGxvb3Agc3RhdGVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBoZDsgc3RhdGUgfSAtPiBTdGRsaWIuU2VxLkNvbnMgKGhkLCBmdW4gKCkgLT4gbG9vcCBzdGF0ZSlcbiAgaW5cbiAgZnVuICgpIC0+IGxvb3Agc3RhdGVcbjs7XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnZWx0IHN0ZXBzID0gV3JhcCBvZiAoJ2VsdCwgdW5pdCAtPiAnZWx0IHN0ZXBzKSBTdGVwLnRcblxuICBsZXQgdW53cmFwIChXcmFwIHN0ZXApID0gc3RlcFxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlbHQpIHQgPSAoJ2EgLT4gJ2VsdCBzdGVwcykgLT4gJ2VsdCBzdGVwc1xuXG4gICAgbGV0IHJldHVybiB4IGsgPSBrIHhcblxuICAgIGxldCBiaW5kIG0gfmYgayA9XG4gICAgICBtIChmdW4gYSAtPlxuICAgICAgICBsZXQgbScgPSBmIGEgaW5cbiAgICAgICAgbScgaylcbiAgICA7O1xuXG4gICAgbGV0IG1hcCBtIH5mIGsgPSBtIChmdW4gYSAtPiBrIChmIGEpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNb25hZC5NYWtlMiAoVClcblxuICBsZXQgeWllbGQgZSBrID0gV3JhcCAoWWllbGQgeyB2YWx1ZSA9IGU7IHN0YXRlID0gayB9KVxuICBsZXQgdG9fc3RlcHMgdCA9IHQgKGZ1biAoKSAtPiBXcmFwIERvbmUpXG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBkZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biAoKSB4IH5rIGYgLT4gV3JhcCAoWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gKGZ1biAoKSAtPiBrICgpIGYpIH0pKVxuICAgICAgfmZpbmlzaDpyZXR1cm5cbiAgOztcblxuICBsZXQgcnVuIHQgPVxuICAgIGxldCBpbml0ICgpID0gdG9fc3RlcHMgdCBpblxuICAgIGxldCBmIHRodW5rID0gdW53cmFwICh0aHVuayAoKSkgaW5cbiAgICB1bmZvbGRfc3RlcCB+aW5pdCB+ZlxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGVcblxubW9kdWxlIE9mX3NleHBhYmxlXG4gICAgKFNleHBhYmxlIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6IHQgLT4gU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6IFNleHBhYmxlLnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUxXG4gICAgKFNleHBhYmxlIDogUzEpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICdhIHQgLT4gJ2EgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAnYSBTZXhwYWJsZS50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMlxuICAgIChTZXhwYWJsZSA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYikgU2V4cGFibGUudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTNcbiAgICAoU2V4cGFibGUgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIHQgPVxuICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zdHJpbmdhYmxlIChNIDogU3RyaW5nYWJsZS5TKSA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG53aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKE0udG9fc3RyaW5nIHQpXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogTS50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIHN0cmluZ19zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX2FycmF5XG5cbmxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gIGZ1biAodHlwZSBhX18wMDVfKVxuICAgICAgOiAoKChhX18wMDVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8pIC0+IChhX18wMDVfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA1XyB0KSAtPlxuICAgIGdsb2JhbGl6ZV9hcnJheVxuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGFycmF5X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2FycmF5XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gYXJyYXlfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbigqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSBuZXcgaW4tcGxhY2UsIGNvbnN0YW50IGhlYXAgc29ydGluZyBhbGdvcml0aG0gdG8gcmVwbGFjZSB0aGVcbiAgIG9uZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMuICBJdHMgb25seSBwdXJwb3NlIGlzIHRvIGJlIGZhc3RlciAoaG9wZWZ1bGx5XG4gICBzdHJpY3RseSBmYXN0ZXIpIHRoYW4gdGhlIGJhc2Ugc29ydCBhbmQgc3RhYmxlX3NvcnQuXG5cbiAgIEF0IGEgaGlnaCBsZXZlbCB0aGUgYWxnb3JpdGhtIGlzOlxuICAgLSBwaWNrIHR3byBwaXZvdCBwb2ludHMgYnk6XG4gICAtIHBpY2sgNSBhcmJpdHJhcnkgZWxlbWVudHMgZnJvbSB0aGUgYXJyYXlcbiAgIC0gc29ydCB0aGVtIHdpdGhpbiB0aGUgYXJyYXlcbiAgIC0gdGFrZSB0aGUgZWxlbWVudHMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIG1pZGRsZSBlbGVtZW50IG9mIHRoZSBzb3J0IGFzIHRoZSBwaXZvdHNcbiAgIC0gc29ydCB0aGUgYXJyYXkgd2l0aDpcbiAgIC0gYWxsIGVsZW1lbnRzIGxlc3MgdGhhbiBwaXZvdDEgdG8gdGhlIGxlZnQgKHJhbmdlIDEpXG4gICAtIGFsbCBlbGVtZW50cyA+PSBwaXZvdDEgYW5kIDw9IHBpdm90MiBpbiB0aGUgbWlkZGxlIChyYW5nZSAyKVxuICAgLSBhbGwgZWxlbWVudHMgPiBwaXZvdDIgdG8gdGhlIHJpZ2h0IChyYW5nZSAzKVxuICAgLSBpZiBwaXZvdDEgYW5kIHBpdm90MiBhcmUgZXF1YWwsIHRoZW4gdGhlIG1pZGRsZSByYW5nZSBpcyBzb3J0ZWQsIHNvIGlnbm9yZSBpdFxuICAgLSByZWN1cnNlIGludG8gcmFuZ2UgMSwgMiAoaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIHVuZXF1YWwpLCBhbmQgM1xuICAgLSBkdXJpbmcgcmVjdXJzaW9uIHRoZXJlIGFyZSB0d28gaW5mbGVjdGlvbiBwb2ludHM6XG4gICAtIGlmIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IHJhbmdlIGlzIHNtYWxsLCB1c2UgaW5zZXJ0aW9uIHNvcnQgdG8gc29ydCBpdFxuICAgLSBpZiB0aGUgc3RhY2sgZGVwdGggaXMgbGFyZ2UsIHNvcnQgdGhlIHJhbmdlIHdpdGggaGVhcC1zb3J0IHRvIGF2b2lkIG5eMiB3b3JzdC1jYXNlXG4gICAgIGJlaGF2aW9yXG5cbiAgIFNlZSB0aGUgZm9sbG93aW5nIGZvciBtb3JlIGluZm9ybWF0aW9uOlxuICAgLSBcIkR1YWwtUGl2b3QgUXVpY2tzb3J0XCIgYnkgVmxhZGltaXIgWWFyb3NsYXZza2l5LlxuICAgICBBdmFpbGFibGUgYXRcbiAgICAgaHR0cDovL3d3dy5rcmljaGUuY29tLmFyL3Jvb3QvcHJvZ3JhbW1pbmcvc3BhY2VUaW1lQ29tcGxleGl0eS9EdWFsUGl2b3RRdWlja3NvcnQucGRmXG4gICAtIFwiUXVpY2tzb3J0IGlzIE9wdGltYWxcIiBieSBTZWRnZXdpY2sgYW5kIEJlbnRsZXkuXG4gICAgIFNsaWRlcyBhdCBodHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvfnJzL3RhbGtzL1F1aWNrc29ydElzT3B0aW1hbC5wZGZcbiAgIC0gaHR0cDovL3d3dy5zb3J0aW5nLWFsZ29yaXRobXMuY29tL3F1aWNrLXNvcnQtMy13YXkgKilcblxubW9kdWxlIFNvcnRlciAoUyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gICAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IHN3YXAgYXJyIGkgaiA9XG4gICAgbGV0IHRtcCA9IGdldCBhcnIgaSBpblxuICAgIHNldCBhcnIgaSAoZ2V0IGFyciBqKTtcbiAgICBzZXQgYXJyIGogdG1wXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgU29ydCA9IHNpZ1xuICAgIHZhbCBzb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gbGVmdDppbnQgKCogbGVmdG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHJpZ2h0OmludCAoKiByaWdodG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHVuaXRcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnNlcnRpb25fc29ydCAqKVxuICBtb2R1bGUgSW5zZXJ0aW9uX3NvcnQgOiBTb3J0ID0gc3RydWN0XG4gICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4gaS0xXSBpcyBzb3J0ZWRcbiAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4gcG9zXSBpcyBzb3J0ZWQgYW5kIGNvbnRhaW5zIG9ubHkgZWxlbWVudHMgPiB2XG4gICAgICAgMy4gIGFycltpXSBtYXkgYmUgdGhvdWdodCBvZiBhcyBjb250YWluaW5nIHZcbiAgICAqKVxuICAgIGxldCByZWMgaW5zZXJ0X2xvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGkgdiA9XG4gICAgICBsZXQgaV9uZXh0ID0gaSAtIDEgaW5cbiAgICAgIGlmIGlfbmV4dCA+PSBsZWZ0ICYmIGNvbXBhcmUgKGdldCBhcnIgaV9uZXh0KSB2ID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHNldCBhcnIgaSAoZ2V0IGFyciBpX25leHQpO1xuICAgICAgICBpbnNlcnRfbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaV9uZXh0IHYpXG4gICAgICBlbHNlIGlcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICAgIFthcnJdIGlzIHNvcnRlZCBmcm9tIFtsZWZ0XSB0byBbcG9zIC0gMV0sIGluY2x1c2l2ZSAqKVxuICAgICAgZm9yIHBvcyA9IGxlZnQgKyAxIHRvIHJpZ2h0IGRvXG4gICAgICAgIGxldCB2ID0gZ2V0IGFyciBwb3MgaW5cbiAgICAgICAgbGV0IGZpbmFsX3BvcyA9IGluc2VydF9sb29wIGFyciB+bGVmdCB+Y29tcGFyZSBwb3MgdiBpblxuICAgICAgICBzZXQgYXJyIGZpbmFsX3BvcyB2XG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWFwc29ydCAqKVxuICBtb2R1bGUgSGVhcF9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgIHJvb3QncyBjaGlsZHJlbiBhcmUgYm90aCBlaXRoZXIgcm9vdHMgb2YgbWF4LWhlYXBzIG9yID4gcmlnaHQgKilcbiAgICBsZXQgcmVjIGhlYXBpZnkgYXJyIH5jb21wYXJlIHJvb3QgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCByZWxhdGl2ZV9yb290ID0gcm9vdCAtIGxlZnQgaW5cbiAgICAgIGxldCBsZWZ0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAxIGluXG4gICAgICBsZXQgcmlnaHRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDIgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgbGVmdF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIGxlZnRfY2hpbGQpIChnZXQgYXJyIHJvb3QpID4gMFxuICAgICAgICB0aGVuIGxlZnRfY2hpbGRcbiAgICAgICAgZWxzZSByb290XG4gICAgICBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiByaWdodF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIHJpZ2h0X2NoaWxkKSAoZ2V0IGFyciBsYXJnZXN0KSA+IDBcbiAgICAgICAgdGhlbiByaWdodF9jaGlsZFxuICAgICAgICBlbHNlIGxhcmdlc3RcbiAgICAgIGluXG4gICAgICBpZiBsYXJnZXN0IDw+IHJvb3RcbiAgICAgIHRoZW4gKFxuICAgICAgICBzd2FwIGFyciByb290IGxhcmdlc3Q7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxhcmdlc3QgfmxlZnQgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIEVsZW1lbnRzIGluIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgYXJyYXkgYXJlIGFscmVhZHkgaGVhcHMgb2Ygc2l6ZSAxLiAgV2UgbW92ZVxuICAgICAgICAgdGhyb3VnaCB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgYXJyYXkgZnJvbSBiYWNrIHRvIGZyb250IGV4YW1pbmluZyB0aGUgZWxlbWVudCBhdFxuICAgICAgICAgaGFuZCwgYW5kIHRoZSBsZWZ0IGFuZCByaWdodCBjaGlsZHJlbiwgZml4aW5nIHRoZSBoZWFwIHByb3BlcnR5IGFzIHdlIGdvLiAqKVxuICAgICAgZm9yIGkgPSAobGVmdCArIHJpZ2h0KSAvIDIgZG93bnRvIGxlZnQgZG9cbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgaSB+bGVmdCB+cmlnaHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ7XG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uLiBpXSBpcyBhIG1heC1oZWFwIEhcbiAgICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLi4gcmlnaHRdIGlzIHNvcnRlZCAoY2FsbCBpdCBTKVxuICAgICAgICAgMy4gIGV2ZXJ5IGVsZW1lbnQgb2YgSCBpcyBsZXNzIHRoYW4gZXZlcnkgZWxlbWVudCBvZiBTICopXG4gICAgICBmb3IgaSA9IHJpZ2h0IGRvd250byBsZWZ0ICsgMSBkb1xuICAgICAgICBzd2FwIGFyciBsZWZ0IGk7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxlZnQgfmxlZnQgfnJpZ2h0OihpIC0gMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJvc29ydCAqKVxuICBtb2R1bGUgSW50cm9fc29ydCA6IHNpZ1xuICAgIGluY2x1ZGUgU29ydFxuXG4gICAgdmFsIGZpdmVfZWxlbWVudF9zb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIG0xIG0yIG0zIG00IG01ID1cbiAgICAgIGxldCBjb21wYXJlX2FuZF9zd2FwIGkgaiA9XG4gICAgICAgIGlmIGNvbXBhcmUgKGdldCBhcnIgaSkgKGdldCBhcnIgaikgPiAwIHRoZW4gc3dhcCBhcnIgaSBqXG4gICAgICBpblxuICAgICAgKCogT3B0aW1hbCA1LWVsZW1lbnQgc29ydGluZyBuZXR3b3JrOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgMS0tby0tLS0tby0tLS0tby0tLS0tLS0tLS0tLS0tMVxuICAgICAgICAgICAgICAgfCAgICAgfCAgICAgfFxuICAgICAgICAgICAgMi0tby0tLS0tfC0tby0tfC0tLS0tby0tby0tLS0tMlxuICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfCAgICAgfCAgfFxuICAgICAgICAgICAgMy0tLS0tLS0tby0tby0tfC0tby0tfC0tby0tLS0tM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfFxuICAgICAgICAgICAgNC0tLS0tby0tLS0tLS0tby0tby0tfC0tLS0tby0tNFxuICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfFxuICAgICAgICAgICAgNS0tLS0tby0tLS0tLS0tLS0tLS0tby0tLS0tby0tNVxuICAgICAgICAgIHZ9ICopXG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0yO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTMgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTUgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICAoKiBjaG9vc2UgcGl2b3RzIGZvciB0aGUgYXJyYXkgYnkgc29ydGluZyA1IGVsZW1lbnRzIGFuZCBleGFtaW5pbmcgdGhlIGNlbnRlciB0aHJlZVxuICAgICAgIGVsZW1lbnRzLiAgVGhlIGdvYWwgaXMgdG8gY2hvb3NlIHR3byBwaXZvdHMgdGhhdCB3aWxsIGVpdGhlcjpcbiAgICAgICAtIGJyZWFrIHRoZSByYW5nZSB1cCBpbnRvIDMgZXZlbiBwYXJ0aXRpb25zXG4gICAgICAgICBvclxuICAgICAgIC0gZWxpbWluYXRlIGEgY29tbW9ubHkgYXBwZWFyaW5nIGVsZW1lbnQgYnkgc29ydGluZyBpdCBpbnRvIHRoZSBjZW50ZXIgcGFydGl0aW9uXG4gICAgICAgICBieSBpdHNlbGZcbiAgICAgICAgIFRvIHRoaXMgZW5kIHdlIGxvb2sgYXQgdGhlIGNlbnRlciAzIGVsZW1lbnRzIG9mIHRoZSA1IGFuZCByZXR1cm4gcGFpcnMgb2YgZXF1YWxcbiAgICAgICAgIGVsZW1lbnRzIG9yIHRoZSB3aWRlc3QgcmFuZ2UgKilcbiAgICBsZXQgY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHNpeHRoID0gKHJpZ2h0IC0gbGVmdCkgLyA2IGluXG4gICAgICBsZXQgbTEgPSBsZWZ0ICsgc2l4dGggaW5cbiAgICAgIGxldCBtMiA9IG0xICsgc2l4dGggaW5cbiAgICAgIGxldCBtMyA9IG0yICsgc2l4dGggaW5cbiAgICAgIGxldCBtNCA9IG0zICsgc2l4dGggaW5cbiAgICAgIGxldCBtNSA9IG00ICsgc2l4dGggaW5cbiAgICAgIGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZSBtMSBtMiBtMyBtNCBtNTtcbiAgICAgIGxldCBtMl92YWwgPSBnZXQgYXJyIG0yIGluXG4gICAgICBsZXQgbTNfdmFsID0gZ2V0IGFyciBtMyBpblxuICAgICAgbGV0IG00X3ZhbCA9IGdldCBhcnIgbTQgaW5cbiAgICAgIGlmIGNvbXBhcmUgbTJfdmFsIG0zX3ZhbCA9IDBcbiAgICAgIHRoZW4gbTJfdmFsLCBtM192YWwsIHRydWVcbiAgICAgIGVsc2UgaWYgY29tcGFyZSBtM192YWwgbTRfdmFsID0gMFxuICAgICAgdGhlbiBtM192YWwsIG00X3ZhbCwgdHJ1ZVxuICAgICAgZWxzZSBtMl92YWwsIG00X3ZhbCwgZmFsc2VcbiAgICA7O1xuXG4gICAgbGV0IGR1YWxfcGl2b3RfcGFydGl0aW9uIGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcGl2b3QxLCBwaXZvdDIsIHBpdm90c19lcXVhbCA9IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIGxlZnQgPD0gbCA8IHIgPD0gcmlnaHRcbiAgICAgICAgIDIuICBsIDw9IHAgPD0gclxuICAgICAgICAgMy4gIGwgPD0geCA8IHAgICAgIGltcGxpZXMgYXJyW3hdID49IHBpdm90MVxuICAgICAgICAgYW5kIGFyclt4XSA8PSBwaXZvdDJcbiAgICAgICAgIDQuICBsZWZ0IDw9IHggPCBsICBpbXBsaWVzIGFyclt4XSA8IHBpdm90MVxuICAgICAgICAgNS4gIHIgPCB4IDw9IHJpZ2h0IGltcGxpZXMgYXJyW3hdID4gcGl2b3QyICopXG4gICAgICBsZXQgcmVjIGxvb3AgbCBwIHIgPVxuICAgICAgICBsZXQgcHYgPSBnZXQgYXJyIHAgaW5cbiAgICAgICAgaWYgY29tcGFyZSBwdiBwaXZvdDEgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHN3YXAgYXJyIHAgbDtcbiAgICAgICAgICBjb250IChsICsgMSkgKHAgKyAxKSByKVxuICAgICAgICBlbHNlIGlmIGNvbXBhcmUgcHYgcGl2b3QyID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBsb29wIGludmFyaWFudHM6ICBzYW1lIGFzIHRob3NlIG9mIHRoZSBvdXRlciBsb29wICopXG4gICAgICAgICAgbGV0IHJlYyBzY2FuX2JhY2t3YXJkcyByID1cbiAgICAgICAgICAgIGlmIHIgPiBwICYmIGNvbXBhcmUgKGdldCBhcnIgcikgcGl2b3QyID4gMCB0aGVuIHNjYW5fYmFja3dhcmRzIChyIC0gMSkgZWxzZSByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgciA9IHNjYW5fYmFja3dhcmRzIHIgaW5cbiAgICAgICAgICBzd2FwIGFyciByIHA7XG4gICAgICAgICAgY29udCBsIHAgKHIgLSAxKSlcbiAgICAgICAgZWxzZSBjb250IGwgKHAgKyAxKSByXG4gICAgICBhbmQgY29udCBsIHAgciA9IGlmIHAgPiByIHRoZW4gbCwgciBlbHNlIGxvb3AgbCBwIHIgaW5cbiAgICAgIGxldCBsLCByID0gY29udCBsZWZ0IGxlZnQgcmlnaHQgaW5cbiAgICAgIGwsIHIsIHBpdm90c19lcXVhbFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBsZW4gPSByaWdodCAtIGxlZnQgKyAxIGluXG4gICAgICAoKiBUaGlzIHRha2VzIGNhcmUgb2Ygc29tZSBlZGdlIGNhc2VzLCBzdWNoIGFzIGxlZnQgPiByaWdodCBvciB2ZXJ5IHNob3J0IGFycmF5cyxcbiAgICAgICAgIHNpbmNlIEluc2VydGlvbl9zb3J0LnNvcnQgaGFuZGxlcyB0aGVzZSBjYXNlcyBwcm9wZXJseS4gIFRodXMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgbWFrZSBzdXJlIHRoYXQgbGVmdCBhbmQgcmlnaHQgYXJlIHZhbGlkIGluIHJlY3Vyc2l2ZSBjYWxscy4gKilcbiAgICAgIGlmIGxlbiA8PSAzMlxuICAgICAgdGhlbiBJbnNlcnRpb25fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgaWYgbWF4X2RlcHRoIDwgMFxuICAgICAgdGhlbiBIZWFwX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG1heF9kZXB0aCA9IG1heF9kZXB0aCAtIDEgaW5cbiAgICAgICAgbGV0IGwsIHIsIG1pZGRsZV9zb3J0ZWQgPSBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0OihsIC0gMSk7XG4gICAgICAgIGlmIG5vdCBtaWRkbGVfc29ydGVkIHRoZW4gaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDpsIH5yaWdodDpyO1xuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OihyICsgMSkgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBoZWFwX3NvcnRfc3dpdGNoX2RlcHRoID1cbiAgICAgICAgKCogV2UgYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0IGEgcmVjdXJzaW9uIGRlcHRoIG9mIDMyLiBHTlUgaW50cm9zb3J0IHVzZXMgMmxnKG4pLlxuICAgICAgICAgICBUaGUgZXhwZWN0ZWQgcmVjdXJzaW9uIGRlcHRoIGZvciBwZXJmZWN0IDMtd2F5IHNwbGl0cyBpcyBsb2dfMyhuKS5cblxuICAgICAgICAgICBVc2luZyAzMiBtZWFucyBhIGJhbGFuY2VkIDMtd2F5IHNwbGl0IHdvdWxkIHdvcmsgdXAgdG8gM14zMiBlbGVtZW50cyAocm91Z2hseVxuICAgICAgICAgICAyXjUwIG9yIDEwXjE1KS4gR05VIHJlYWNoZXMgYSBkZXB0aCBvZiAzMiBhdCA2NTUzNiBlbGVtZW50cy5cblxuICAgICAgICAgICBGb3Igc21hbGwgYXJyYXlzLCB0aGlzIG1ha2VzIHVzIGxlc3MgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCwgYnV0IHRoZVxuICAgICAgICAgICAzMipOIGNvc3QgYmVmb3JlIHdlIGRvIGlzIG5vdCB0aGF0IG11Y2guXG5cbiAgICAgICAgICAgRm9yIGxhcmdlIGFycmF5cywgdGhpcyBtZWFucyB3ZSBhcmUgbW9yZSBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0XG4gICAgICAgICAgIHNvbWUgcG9pbnQgaWYgd2UgZ2V0IHNvbWUgYmFkIHNwbGl0cyBvciBpZiB0aGUgYXJyYXkgaXMgaHVnZS4gQnV0IHRoYXQncyBvbmx5IGFcbiAgICAgICAgICAgY29uc3RhbnQgZmFjdG9yIGNvc3QgaW4gdGhlIGZpbmFsIHN0YWdlcyBvZiByZWN1cnNpb24uXG5cbiAgICAgICAgICAgQWxsIGluIGFsbCwgdGhpcyBzZWVtcyB0byBiZSBhIHNtYWxsIHRyYWRlb2ZmIGFuZCBhdm9pZHMgcGF5aW5nIGEgY29zdCB0b1xuICAgICAgICAgICBjb21wdXRlIGEgbG9nYXJpdGhtIGF0IHRoZSBzdGFydC4gKilcbiAgICAgICAgMzJcbiAgICAgIGluXG4gICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoOmhlYXBfc29ydF9zd2l0Y2hfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNvcnQgP3BvcyA/bGVuIGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCBhcnIpXG4gICAgaW5cbiAgICBJbnRyb19zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0OnBvcyB+cmlnaHQ6KHBvcyArIGxlbiAtIDEpXG4gIDs7XG5lbmRcbltAQGlubGluZV1cblxubW9kdWxlIFNvcnQgPSBTb3J0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldFxuICAgIGxldCBzZXQgPSB1bnNhZmVfc2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBlbmQpXG5cbmxldCBzb3J0ID0gU29ydC5zb3J0XG5sZXQgb2ZfYXJyYXkgdCA9IHRcbmxldCB0b19hcnJheSB0ID0gdFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGlzX3NvcnRlZCB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPiAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgaXNfc29ydGVkX3N0cmljdGx5IHQgfmNvbXBhcmUgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPiAwICYmICFyZXN1bHQgZG9cbiAgICBsZXQgZWx0X2kgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICBsZXQgZWx0X2lfbWludXNfMSA9IHVuc2FmZV9nZXQgdCAoIWkgLSAxKSBpblxuICAgIGlmIGNvbXBhcmUgZWx0X2lfbWludXNfMSBlbHRfaSA+PSAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVyZ2UgYTEgYTIgfmNvbXBhcmUgPVxuICBsZXQgbDEgPSBBcnJheS5sZW5ndGggYTEgaW5cbiAgbGV0IGwyID0gQXJyYXkubGVuZ3RoIGEyIGluXG4gIGlmIGwxID0gMFxuICB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsMiA9IDBcbiAgdGhlbiBjb3B5IGExXG4gIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhMiAwKSAodW5zYWZlX2dldCBhMSAobDEgLSAxKSkgPj0gMFxuICB0aGVuIGFwcGVuZCBhMSBhMlxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTEgMCkgKHVuc2FmZV9nZXQgYTIgKGwyIC0gMSkpID4gMFxuICB0aGVuIGFwcGVuZCBhMiBhMVxuICBlbHNlIChcbiAgICBsZXQgbGVuID0gbDEgKyBsMiBpblxuICAgIGxldCBtZXJnZWQgPSBjcmVhdGUgfmxlbiAodW5zYWZlX2dldCBhMSAwKSBpblxuICAgIGxldCBhMV9pbmRleCA9IHJlZiAwIGluXG4gICAgbGV0IGEyX2luZGV4ID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IHVzZV9hMSA9XG4gICAgICAgIGlmIGwxID0gIWExX2luZGV4XG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBpZiBsMiA9ICFhMl9pbmRleFxuICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgZWxzZSBjb21wYXJlICh1bnNhZmVfZ2V0IGExICFhMV9pbmRleCkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KSA8PSAwXG4gICAgICBpblxuICAgICAgaWYgdXNlX2ExXG4gICAgICB0aGVuIChcbiAgICAgICAgdW5zYWZlX3NldCBtZXJnZWQgaSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpO1xuICAgICAgICBhMV9pbmRleCA6PSAhYTFfaW5kZXggKyAxKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KTtcbiAgICAgICAgYTJfaW5kZXggOj0gIWEyX2luZGV4ICsgMSlcbiAgICBkb25lO1xuICAgIG1lcmdlZClcbjs7XG5cbmxldCBjb3B5X21hdHJpeCA9IG1hcCB+Zjpjb3B5XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudCkgW0Bub250YWlsXVxuOztcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAodG9fbGlzdCAobWFwIH5mIHQpKVxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcGkgfmYgdCkpXG5cbmxldCByZXZfaW5wbGFjZSB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICB3aGlsZSAhaSA8ICFqIGRvXG4gICAgc3dhcCB0ICFpICFqO1xuICAgIGluY3IgaTtcbiAgICBkZWNyIGpcbiAgZG9uZVxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IHQgPSBjb3B5IHQgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgYSA6OiBsIC0+XG4gICAgbGV0IGxlbiA9IDEgKyBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgICgqIFdlIHN0YXJ0IGF0IFtsZW4gLSAyXSBiZWNhdXNlIHdlIGFscmVhZHkgcHV0IFthXSBhdCBbdC4obGVuIC0gMSldLiAqKVxuICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIHQuKGkpIDwtIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgdFxuOztcblxuKCogW29mX2xpc3RfbWFwXSBhbmQgW29mX2xpc3RfcmV2X21hcF0gYXJlIGJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBPQ2FtbFxuICAgZGlzdHJpYnV0aW9uLiAqKVxuXG5sZXQgb2ZfbGlzdF9tYXAgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaGQpO1xuICAgICAgICBmaWxsIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgMSB0bCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgb2ZfbGlzdF9tYXBpIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgMCBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgYSBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpIGhkKTtcbiAgICAgICAgZmlsbCBhIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgYSAxIHRsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXAgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXBpIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcGkgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgciA9IHJlZiBbfHxdIGluXG4gIGxldCBrID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGYgaSAodW5zYWZlX2dldCB0IGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgaWYgIWsgPSAwIHRoZW4gciA6PSBjcmVhdGUgfmxlbjoobGVuZ3RoIHQpIGE7XG4gICAgICB1bnNhZmVfc2V0ICFyICFrIGE7XG4gICAgICBpbmNyIGtcbiAgZG9uZTtcbiAgaWYgIWsgPSBsZW5ndGggdCB0aGVuICFyIGVsc2UgaWYgIWsgPiAwIHRoZW4gc3ViIH5wb3M6MCB+bGVuOiFrICFyIGVsc2UgW3x8XVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfaSBhIC0+IGYgYSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9vcHQgdCA9IGZpbHRlcl9tYXAgdCB+ZjpGbi5pZFxuXG5sZXQgcmFpc2VfbGVuZ3RoX21pc21hdGNoIG5hbWUgbjEgbjIgPVxuICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIHQxIHQyID1cbiAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yXG47O1xuXG5sZXQgaXRlcjJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5pdGVyMl9leG5cIiB0MSB0MjtcbiAgaXRlcmkgdDEgfmY6KGZ1biBpIHgxIC0+IGYgeDEgKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkubWFwMl9leG5cIiB0MSB0MjtcbiAgaW5pdCAobGVuZ3RoIHQxKSB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGQyX2V4biB0MSB0MiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZm9sZDJfZXhuXCIgdDEgdDI7XG4gIGZvbGRpIHQxIH5pbml0IH5mOihmdW4gaSBhYyB4IC0+IGYgYWMgeCAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5sZXQgZmlsdGVyaSB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpIFtAbm9udGFpbF1cblxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPSBleGlzdHMgdCB+ZjooZXF1YWwgYSkgW0Bub250YWlsXVxuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0ICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHMyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZXhpc3RzMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvcl9hbGwyX2V4blwiIHQxIHQyO1xuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQxIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0MSAhaSkgKHVuc2FmZV9nZXQgdDIgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXF1YWwgZXF1YWwgdDEgdDIgPSBsZW5ndGggdDEgPSBsZW5ndGggdDIgJiYgZm9yX2FsbDJfZXhuIHQxIHQyIH5mOmVxdWFsXG5cblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBmaW5kaV9pbnRlcm5hbCB0IH5mIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBpZl9ub3RfZm91bmQgKClcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgKG5vdCAhZm91bmQpICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGYgIWkgdmFsdWVcbiAgICAgIHRoZW4gKFxuICAgICAgICB2YWx1ZV9mb3VuZCA6PSB2YWx1ZTtcbiAgICAgICAgZm91bmQgOj0gdHJ1ZSlcbiAgICAgIGVsc2UgaW5jciBpXG4gICAgZG9uZTtcbiAgICBpZiAhZm91bmQgdGhlbiBpZl9mb3VuZCB+aTohaSB+dmFsdWU6IXZhbHVlX2ZvdW5kIGVsc2UgaWZfbm90X2ZvdW5kICgpKVxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBTb21lIChpLCB2YWx1ZSkpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBpLCB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZGlfZXhuOiBub3QgZm91bmRcIikpKVxuOztcblxubGV0IGZpbmRfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZjooZnVuIF9pIHggLT4gZiB4KVxuICAgIH5pZl9mb3VuZDooZnVuIH5pOl8gfnZhbHVlIC0+IHZhbHVlKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiByYWlzZSAoTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX2V4bjogbm90IGZvdW5kXCIpKSlcbiAgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmQgdCB+ZiA9IE9wdGlvbi5tYXAgKGZpbmRpIHQgfmY6KGZ1biBfaSB4IC0+IGYgeCkpIH5mOihmdW4gKF9pLCB4KSAtPiB4KVxuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiAhaSB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXBpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBpX2V4blxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuIDw9IDFcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZXN1bHQgPSByZWYgTm9uZSBpblxuICAgIGxldCBpID0gcmVmIDEgaW5cbiAgICBsZXQgcHJldiA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgY3VyID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBlcXVhbCBjdXIgIXByZXZcbiAgICAgIHRoZW4gKFxuICAgICAgICByZXN1bHQgOj0gU29tZSAoIXByZXYsIGN1cik7XG4gICAgICAgIGkgOj0gbilcbiAgICAgIGVsc2UgKFxuICAgICAgICBwcmV2IDo9IGN1cjtcbiAgICAgICAgaW5jciBpKVxuICAgIGRvbmU7XG4gICAgIXJlc3VsdClcbjs7XG5cbmxldCByZWR1Y2UgdCB+ZiA9XG4gIGlmIGxlbmd0aCB0ID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHIgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIGZvciBpID0gMSB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gICAgZG9uZTtcbiAgICBTb21lICFyKVxuOztcblxubGV0IHJlZHVjZV9leG4gdCB+ZiA9XG4gIG1hdGNoIHJlZHVjZSB0IH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCBwZXJtdXRlID0gQXJyYXlfcGVybXV0ZS5wZXJtdXRlXG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnJhbmRvbV9lbGVtZW50X2V4bjogZW1wdHkgYXJyYXlcIlxuICBlbHNlIHQuKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgemlwIHQxIHQyID1cbiAgaWYgbGVuZ3RoIHQxIDw+IGxlbmd0aCB0MiB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4MikpXG47O1xuXG5sZXQgemlwX2V4biB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDJcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnppcF9leG5cIlxuICBlbHNlIG1hcDJfZXhuIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKVxuOztcblxubGV0IHVuemlwIHQgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIChcbiAgICBsZXQgeCwgeSA9IHQuKDApIGluXG4gICAgbGV0IHJlczEgPSBjcmVhdGUgfmxlbjpuIHggaW5cbiAgICBsZXQgcmVzMiA9IGNyZWF0ZSB+bGVuOm4geSBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IHgsIHkgPSB0LihpKSBpblxuICAgICAgcmVzMS4oaSkgPC0geDtcbiAgICAgIHJlczIuKGkpIDwtIHlcbiAgICBkb25lO1xuICAgIHJlczEsIHJlczIpXG47O1xuXG5sZXQgc29ydGVkX2NvcHkgdCB+Y29tcGFyZSA9XG4gIGxldCB0MSA9IGNvcHkgdCBpblxuICBzb3J0IHQxIH5jb21wYXJlO1xuICB0MVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgKGJvdGggOiBfIEVpdGhlci50IHQpID0gbWFwaSB0IH5mIGluXG4gIGxldCBmaXJzdHMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgeCAtPiBTb21lIHhcbiAgICAgIHwgU2Vjb25kIF8gLT4gTm9uZSlcbiAgaW5cbiAgbGV0IHNlY29uZHMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgXyAtPiBOb25lXG4gICAgICB8IFNlY29uZCB4IC0+IFNvbWUgeClcbiAgaW5cbiAgZmlyc3RzLCBzZWNvbmRzXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCkgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biBfIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biBfIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5sZXQgbGFzdCB0ID0gdC4obGVuZ3RoIHQgLSAxKVxuXG4oKiBDb252ZXJ0IHRvIGEgc2VxdWVuY2UgYnV0IGRvZXMgbm90IGF0dGVtcHQgdG8gcHJvdGVjdCBhZ2FpbnN0IG1vZGlmaWNhdGlvblxuICAgaW4gdGhlIGFycmF5LiAqKVxubGV0IHRvX3NlcXVlbmNlX211dGFibGUgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+XG4gICAgaWYgaSA+PSBsZW5ndGggdFxuICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSB0LihpKTsgc3RhdGUgPSBpICsgMSB9KVxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19zZXF1ZW5jZV9tdXRhYmxlIChjb3B5IHQpXG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCB0MSB0MiA9XG4gIGlmIGlzX2VtcHR5IHQxIHx8IGlzX2VtcHR5IHQyXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuOihuMSAqIG4yKSAodDEuKDApLCB0Mi4oMCkpIGluXG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIGZvciBpMSA9IDAgdG8gbjEgLSAxIGRvXG4gICAgICBmb3IgaTIgPSAwIHRvIG4yIC0gMSBkb1xuICAgICAgICB0LighcikgPC0gdDEuKGkxKSwgdDIuKGkyKTtcbiAgICAgICAgaW5jciByXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICB0KVxuOztcblxubGV0IHRyYW5zcG9zZSB0dCA9XG4gIGlmIGxlbmd0aCB0dCA9IDBcbiAgdGhlbiBTb21lIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHdpZHRoID0gbGVuZ3RoIHR0IGluXG4gICAgbGV0IGRlcHRoID0gbGVuZ3RoIHR0LigwKSBpblxuICAgIGlmIGV4aXN0cyB0dCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQgPD4gZGVwdGgpXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lIChpbml0IGRlcHRoIH5mOihmdW4gZCAtPiBpbml0IHdpZHRoIH5mOihmdW4gdyAtPiB0dC4odykuKGQpKSkpKVxuOztcblxubGV0IHRyYW5zcG9zZV9leG4gdHQgPVxuICBtYXRjaCB0cmFuc3Bvc2UgdHQgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJBcnJheS50cmFuc3Bvc2VfZXhuXCJcbiAgfCBTb21lIHR0JyAtPiB0dCdcbjs7XG5cbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBlbmQpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIHQgPVxuICAgICAgaWYgbGVuID0gMFxuICAgICAgdGhlbiBbfHxdXG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiB0LigwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNvcnQgPSBTb3J0XG4gIG1vZHVsZSBTb3J0ZXIgPSBTb3J0ZXJcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdCBhbGwgdmFsdWVzIG9mIHR5cGUgW3RdIGRvIG5vdCBoYXZlIHRoZSB0YWdcbiAgIFtkb3VibGVfYXJyYXlfdGFnXS4gIFNvbWUgZnVuY3Rpb25zIGJlbG93IGFzc3VtZSB0aGlzIGluIG9yZGVyIHRvIGF2b2lkIHRlc3RpbmcgdGhlXG4gICB0YWcsIGFuZCB3aWxsIHNlZ2ZhdWx0IGlmIHRoaXMgcHJvcGVydHkgZG9lc24ndCBob2xkLiAqKVxudHlwZSB0ID0gU3RkbGliLk9iai50IGFycmF5XG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIGFzc2VydCAoU3RkbGliLk9iai50YWcgKFN0ZGxpYi5PYmoucmVwciB0KSA8PiBTdGRsaWIuT2JqLmRvdWJsZV9hcnJheV90YWcpXG47O1xuXG5sZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoICgqIHdvdWxkIGNoZWNrIGZvciBmbG9hdCBhcnJheXMgaW4gMzIgYml0LCBidXQgd2hhdGV2ZXIgKilcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgU2V4cC5BdG9tXG4gICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgXCI8T2JqX2FycmF5LnQgb2YgbGVuZ3RoIFwiOyBJbnQudG9fc3RyaW5nIChsZW5ndGggdCk7IFwiPlwiIF0pXG47O1xuXG5sZXQgemVyb19vYmogPSBTdGRsaWIuT2JqLnJlcHIgKDAgOiBpbnQpXG5cbigqIFdlIGNhbGwgW0FycmF5LmNyZWF0ZV0gd2l0aCBhIHZhbHVlIHRoYXQgaXMgbm90IGEgZmxvYXQgc28gdGhhdCB0aGUgYXJyYXkgZG9lc24ndCBnZXRcbiAgIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbmxldCBjcmVhdGVfemVybyB+bGVuID0gQXJyYXkuY3JlYXRlIH5sZW4gemVyb19vYmpcbmxldCBlbXB0eSA9IFt8fF1cblxudHlwZSBub3RfYV9mbG9hdCA9XG4gIHwgTm90X2FfZmxvYXRfMFxuICB8IE5vdF9hX2Zsb2F0XzEgb2YgaW50XG5cbmxldCBfbm90X2FfZmxvYXRfMCA9IE5vdF9hX2Zsb2F0XzBcbmxldCBfbm90X2FfZmxvYXRfMSA9IE5vdF9hX2Zsb2F0XzEgNDJcblxubGV0IGdldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gIEl0IGlzIE5PVCBvayB0byB1c2UgW2ludCBhcnJheV0gc2luY2UgKGlmXG4gICAgIHRoaXMgZnVuY3Rpb24gaXMgaW5saW5lZCBhbmQgdGhlIGFycmF5IGNvbnRhaW5zIGluLWhlYXAgYm94ZWQgdmFsdWVzKSB3cm9uZyByZWdpc3RlclxuICAgICB0eXBpbmcgbWF5IHJlc3VsdCwgbGVhZGluZyB0byBhIGZhaWx1cmUgdG8gcmVnaXN0ZXIgbmVjZXNzYXJ5IEdDIHJvb3RzLiAqKVxuICBTdGRsaWIuT2JqLnJlcHJcbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gaXMgcmVxdWlyZWQgb24gdGhlIGFycmF5IGJlY2F1c2UgdGhpcyBjb2RlIGJyZWFrcyB0aGUgdXN1YWxcbiAgICAgICBhc3N1bXB0aW9ucyBhYm91dCBhcnJheSBraW5kcyB0aGF0IHRoZSBGbGFtYmRhIDIgb3B0aW1pc2VyIGNhbiBzZWUuICopXG4gICAgKChTeXMub3BhcXVlX2lkZW50aXR5IChTdGRsaWIuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpLihpKVxuICAgICA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxuICBTdGRsaWIuT2JqLnJlcHJcbiAgICAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgIChTeXMub3BhcXVlX2lkZW50aXR5IChPYmpfbG9jYWwubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSlcbiAgICAgICBpXG4gICAgIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogU2FtZSBjb21tZW50IGFzIFt1bnNhZmVfZ2V0XS4gU3lzLm9wYXF1ZV9pZGVudGl0eSBwcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbVxuICAgICBwb3RlbnRpYWxseSB3cm9uZ2x5IGd1ZXNzaW5nIHRoZSB0eXBlIG9mIHRoZSBhcnJheSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBlbGVtZW50LCB0aGF0XG4gICAgIGlzIHByZXZlbnQgdGhlIGltcGxpY2F0aW9uOiAoT2JqLnRhZyBvYmogPSBPYmouZG91YmxlX3RhZykgPT4gKE9iai50YWcgdCA9XG4gICAgIE9iai5kb3VibGVfYXJyYXlfdGFnKSB3aGljaCBmbGFtYmRhIGhhcyB0cmllZCBpbiB0aGUgcGFzdCAoYXQgbGVhc3QgdGhhdCdzIGFzc3VtaW5nXG4gICAgIHRoZSBjb21waWxlciByZXNwZWN0cyBTeXMub3BhcXVlX2lkZW50aXR5LCB3aGljaCBpcyBub3QgYWx3YXlzIHRoZSBjYXNlKS4gKilcbiAgQXJyYXkudW5zYWZlX3NldFxuICAgIChTeXMub3BhcXVlX2lkZW50aXR5IChPYmpfbG9jYWwubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSlcbiAgICBpXG4gICAgKFN0ZGxpYi5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIHNhbWUgYXMgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IGJ1dCBzYWZlICopXG4gIChTeXMub3BhcXVlX2lkZW50aXR5IChTdGRsaWIuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpLihpKVxuICA8LSAoU3RkbGliLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnQgPVxuICAoKiBUaGlzIHNraXBzIFtjYW1sX21vZGlmeV0sIHdoaWNoIGlzIE9LIGlmIGJvdGggdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmUgaW50ZWdlcnMuICopXG4gIEFycmF5LnVuc2FmZV9zZXRcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqX2xvY2FsLm1hZ2ljICh0IDogdCkgOiBpbnQgYXJyYXkpKVxuICAgIGlcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSBpbnQpXG47O1xuXG4oKiBGb3IgW3NldF0gYW5kIFt1bnNhZmVfc2V0XSwgaWYgYSBwb2ludGVyIGlzIGludm9sdmVkLCB3ZSBmaXJzdCBkbyBhIHBoeXNpY2FsLWVxdWFsaXR5XG4gICB0ZXN0IHRvIHNlZSBpZiB0aGUgcG9pbnRlciBpcyBjaGFuZ2luZy4gIElmIG5vdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyB0aGUgW3NldF0sIHdoaWNoXG4gICBzYXZlcyBhIGNhbGwgdG8gW2NhbWxfbW9kaWZ5XS4gIFdlIHRoaW5rIHRoaXMgcGh5c2ljYWwtZXF1YWxpdHkgdGVzdCBpcyB3b3J0aCBpdFxuICAgYmVjYXVzZSBpdCBpcyB2ZXJ5IGNoZWFwIChib3RoIHZhbHVlcyBhcmUgYWxyZWFkeSBhdmFpbGFibGUgZnJvbSB0aGUgW2lzX2ludF0gdGVzdClcbiAgIGFuZCBiZWNhdXNlIFtjYW1sX21vZGlmeV0gaXMgZXhwZW5zaXZlLiAqKVxuXG5sZXQgc2V0IHQgaSBvYmogPVxuICAoKiBXZSB1c2UgW2dldF0gZmlyc3QgYnV0IHRoZW4gd2UgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBzaW5jZSB3ZSBrbm93IHRoYXQgW2ldIGlzXG4gICAgIHZhbGlkLiAqKVxuICBsZXQgb2xkX29iaiA9IGdldCB0IGkgaW5cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2xkX29iaiAmJiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfb2JqIG9iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0IHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmogJiYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIG9iaiA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2xkX29iaiAmJiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBhID0gZ2V0IHQgaSBpblxuICBsZXQgYiA9IGdldCB0IGogaW5cbiAgdW5zYWZlX3NldCB0IGkgYjtcbiAgdW5zYWZlX3NldCB0IGogYVxuOztcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICAoKiBJZiB3ZSBjYW4sIHVzZSBbQXJyYXkuY3JlYXRlXSBkaXJlY3RseS4gRXZlbiB0aG91Z2ggW2lzX2ludF0gY2hlY2sgaXMgc3Vic3VtZWQgYnlcbiAgICAgdGhlIHRhZyBjaGVjaywgY2hlY2tpbmcgaXQgaXMgbXVjaCBmYXN0ZXIsIHNpbmNlIGl0IGF2b2lkcyBhIEMgZnVuY3Rpb24gY2FsbC4gICopXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IHggfHwgU3RkbGliLk9iai50YWcgeCA8PiBTdGRsaWIuT2JqLmRvdWJsZV90YWdcbiAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiB4XG4gIGVsc2UgKFxuICAgICgqIE90aGVyd2lzZSB1c2UgW2NyZWF0ZV96ZXJvXSBhbmQgc2V0IHRoZSBjb250ZW50cyAqKVxuICAgIGxldCB0ID0gY3JlYXRlX3plcm8gfmxlbiBpblxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeFxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCBzaW5nbGV0b24gb2JqID0gY3JlYXRlIH5sZW46MSBvYmpcblxuKCogUHJlLWNvbmRpdGlvbjogdC4oaSkgaXMgYW4gaW50ZWdlci4gKilcbmxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIG9iaiA9XG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChTdGRsaWIuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2VcbiAgICAoKiBbdC4oaSldIGlzIGFuIGludGVnZXIgYW5kIFtvYmpdIGlzIG5vdCwgc28gd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgdGhleSBhcmVcbiAgICAgICBlcXVhbC4gKilcbiAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50IHQgaSBpbnQgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnRcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChTdGRsaWIuT2JqLnJlcHIgaW50KVxuOztcblxubGV0IHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgaSA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgbm90IChTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciAwKVxuOztcblxuKCoqIFt1bnNhZmVfYmxpdF0gaXMgbGlrZSBbQXJyYXkuYmxpdF0sIGV4Y2VwdCBpdCB1c2VzIG91ciBvd24gZm9yLWxvb3AgdG8gYXZvaWRcbiAgICBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlLiAgSXRzIHBlcmZvcm1hbmNlIGlzIHN0aWxsIG5vdCBjb21wYXJhYmxlIHRvIGEgbWVtY3B5LiAqKVxubGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgKCogV2hlbiBbcGh5c19lcXVhbCBzcmMgZHN0XSwgd2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIFtkc3RfcG9zIDwgc3JjX3Bvc10gYW5kIGhhdmUgdGhlXG4gICAgIGZvciBsb29wIGdvIGluIHRoZSByaWdodCBkaXJlY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBvdmVyd3JpdGUgZGF0YSB0aGF0IHdlIHN0aWxsIG5lZWRcbiAgICAgdG8gcmVhZC4gIFdoZW4gW25vdCAocGh5c19lcXVhbCBzcmMgZHN0KV0sIGRvaW5nIHRoaXMgaXMgaGFybWxlc3MuICBGcm9tIGFcbiAgICAgbWVtb3J5LXBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIG9uZSBsb29wcyB1cCBvciBkb3duLlxuICAgICBDb25zdGFudC1zdHJpZGUgYWNjZXNzLCBmb3J3YXJkIG9yIGJhY2t3YXJkLCBzaG91bGQgYmUgaW5kaXN0aW5ndWlzaGFibGUgKGF0IGxlYXN0IG9uXG4gICAgIGFuIGludGVsIGk3KS4gIFNvLCB3ZSBkb24ndCBkbyBhIGNoZWNrIGZvciBbcGh5c19lcXVhbCBzcmMgZHN0XSBhbmQgYWx3YXlzIGxvb3AgdXAgaW5cbiAgICAgdGhhdCBjYXNlLiAqKVxuICBpZiBkc3RfcG9zIDwgc3JjX3Bvc1xuICB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgZHN0IChkc3RfcG9zICsgaSkgKHVuc2FmZV9nZXQgc3JjIChzcmNfcG9zICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbjs7XG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZV96ZXJvXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZV96ZXJvIH5sZW46KGxlbmd0aCBzcmMpIGluXG4gIGJsaXRvIH5zcmMgfmRzdCAoKTtcbiAgZHN0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFdBUk5JTkc6XG4gICBXZSB1c2Ugbm9uLW1lbW9yeS1zYWZlIHRoaW5ncyB0aHJvdWdob3V0IHRoZSBbVHJ1c3RlZF0gbW9kdWxlLlxuICAgTW9zdCBvZiBpdCBpcyBvbmx5IHNhZmUgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgdHlwZSBzaWduYXR1cmUgKGUuZy4gZXhwb3NpbmdcbiAgIFt2YWwgY29weSA6ICdhIHQgLT4gJ2IgdF0gd291bGQgYmUgYSBiaWcgbWlzdGFrZSkuICopXG5tb2R1bGUgVHJ1c3RlZCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV9vYmpfYXJyYXkgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHN3YXAgOiBfIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHVuc2FmZV9zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0X3dpdGhfY2FtbF9tb2RpZnkgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBsZW5ndGggOiAoJ2EgdFtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIEJsaXQuYmxpdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgOiBfIHQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBPYmpfYXJyYXkudFxuXG4gIGxldCBlbXB0eSA9IE9ial9hcnJheS5lbXB0eVxuICBsZXQgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlX29ial9hcnJheSB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZSB+bGVuIHggPSBPYmpfYXJyYXkuY3JlYXRlIH5sZW4gKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgc2luZ2xldG9uIHggPSBPYmpfYXJyYXkuc2luZ2xldG9uIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHN3YXAgdCBpIGogPSBPYmpfYXJyYXkuc3dhcCB0IGkgalxuICBsZXQgZ2V0IGFyciBpID0gU3RkbGliLk9iai5vYmogKE9ial9hcnJheS5nZXQgYXJyIGkpXG4gIGxldCBzZXQgYXJyIGkgeCA9IE9ial9hcnJheS5zZXQgYXJyIGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2dldCBhcnIgaSA9IFN0ZGxpYi5PYmoub2JqIChPYmpfYXJyYXkudW5zYWZlX2dldCBhcnIgaSlcbiAgbGV0IHVuc2FmZV9zZXQgYXJyIGkgeCA9IE9ial9hcnJheS51bnNhZmVfc2V0IGFyciBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9zZXRfaW50IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnQgYXJyIGkgeFxuXG4gIGxldCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHhcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBPYmpfYXJyYXkubGVuZ3RoXG4gIGxldCB1bnNhZmVfYmxpdCA9IE9ial9hcnJheS51bnNhZmVfYmxpdFxuICBsZXQgY29weSA9IE9ial9hcnJheS5jb3B5XG5cbiAgbGV0IHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID0gT2JqX2FycmF5LnNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA9IE9ial9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlclxuZW5kXG5cbmluY2x1ZGUgVHJ1c3RlZFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKFN0ZGxpYi5PYmoudGFnIChTdGRsaWIuT2JqLnJlcHIgdCkgPD4gU3RkbGliLk9iai5kb3VibGVfYXJyYXlfdGFnKVxuOztcblxubGV0IGluaXQgbCB+ZiA9XG4gIGlmIGwgPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJVbmlmb3JtX2FycmF5LmluaXRcIlxuICBlbHNlIChcbiAgICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46bCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgIGRvbmU7XG4gICAgcmVzKVxuOztcblxubGV0IG9mX2FycmF5IGFyciA9IGluaXQgfmY6KEFycmF5LnVuc2FmZV9nZXQgYXJyKSAoQXJyYXkubGVuZ3RoIGFycikgW0Bub250YWlsXVxubGV0IG1hcCBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpIFtAbm9udGFpbF1cbmxldCBtYXBpIGEgfmYgPSBpbml0IH5mOihmdW4gaSAtPiBmIGkgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKSBbQG5vbnRhaWxdXG5cbmxldCBpdGVyIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBmb2xkaSBhIH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IH5mOihnZXQgdCkgKGxlbmd0aCB0KVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgeCAtPiBzZXQgcmVzIGkgeCk7XG4gIHJlc1xuOztcblxuKCogSXQgaXMgbm90IHNhZmUgZm9yIFt0b19hcnJheV0gdG8gYmUgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGJlY2F1c2Ugd2UgaGF2ZSBjb2RlIHRoYXRcbiAgIHJlbGllcyBvbiBbZmxvYXQgYXJyYXldcyBiZWluZyB1bmJveGVkLCBmb3IgZXhhbXBsZSBpbiBbYmluX3dyaXRlX2FycmF5XS4gKilcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9XG4gICAgaWYgaSA8IDAgdGhlbiBmYWxzZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSB8fCBsb29wIHQgfmYgKGkgLSAxKVxuICBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID0gaWYgaSA8IDAgdGhlbiB0cnVlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpICYmIGxvb3AgdCB+ZiAoaSAtIDEpIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0MSBpblxuICBpZiBsZW5ndGggdDIgPD4gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyX2V4blwiO1xuICBpbml0IGxlbiB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKGdyYW1tYXIgOiBlbHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogZWx0IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChBcnJheS50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxuaW5jbHVkZVxuICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAoQXJyYXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2FycmF5XG4gICAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gZW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIChnZXQgdCAwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBwcHhfY29tcGFyZSBbY29tcGFyZV9hcnJheV0gYnV0IHVzZXMgb3VyIFt1bnNhZmVfZ2V0XSBhbmQgW2xlbmd0aF0uICopXG5sZXQgY29tcGFyZSBjb21wYXJlX2VsdCBhIGIgPVxuICBpZiBwaHlzX2VxdWFsIGEgYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGVuX2IgPSBsZW5ndGggYiBpblxuICAgIGxldCByZXQgPSBjb21wYXJlIGxlbl9hIGxlbl9iIGluXG4gICAgaWYgcmV0IDw+IDBcbiAgICB0aGVuIHJldFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgdGhlbiAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsID0gdW5zYWZlX2dldCBhIGlcbiAgICAgICAgICBhbmQgciA9IHVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgbG9vcCAoaSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCkpXG47O1xuXG5tb2R1bGUgU29ydCA9IEFycmF5LlByaXZhdGUuU29ydGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0XG4gICAgbGV0IHNldCA9IHVuc2FmZV9zZXRcbiAgZW5kKVxuXG5sZXQgc29ydCA9IFNvcnQuc29ydFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgY2VpbCA9IFN0ZGxpYi5jZWlsXG5sZXQgZmxvb3IgPSBTdGRsaWIuZmxvb3JcbmxldCBtb2RfZmxvYXQgPSBTdGRsaWIubW9kX2Zsb2F0XG5sZXQgbW9kZiA9IFN0ZGxpYi5tb2RmXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ1xubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IG5hbiA9IFN0ZGxpYi5uYW5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBtYXhfZmluaXRlX3ZhbHVlID0gU3RkbGliLm1heF9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxubGV0IGNsYXNzaWZ5X2Zsb2F0ID0gU3RkbGliLmNsYXNzaWZ5X2Zsb2F0XG5sZXQgYWJzX2Zsb2F0ID0gU3RkbGliLmFic19mbG9hdFxubGV0IGlzX2ludGVnZXIgPSBTdGRsaWIuRmxvYXQuaXNfaW50ZWdlclxubGV0ICggKiogKSA9IFN0ZGxpYi4oICoqIClcblxubGV0ICggJS4gKSBhIGIgPVxuICAoKiBSYWlzZSBpbiBjYXNlIG9mIGEgbmVnYXRpdmUgbW9kdWx1cywgYXMgZG9lcyBJbnQuKCAlICkuICopXG4gIGlmIGIgPCAwLlxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCIlZiAlJSAlZiBpbiBmbG9hdDAubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCIgYSBiICgpO1xuICBsZXQgbSA9IFN0ZGxpYi5tb2RfZmxvYXQgYSBiIGluXG4gICgqIFByb2R1Y2UgYSBub24tbmVnYXRpdmUgcmVzdWx0IGluIGFuYWxvZ3kgd2l0aCBJbnQuKCAlICkuICopXG4gIGlmIG0gPCAwLiB0aGVuIG0gKy4gYiBlbHNlIG1cbjs7XG5cbigqIFRoZSBiaXRzIG9mIElOUklBJ3MgW1BlcnZhc2l2ZXNdIHRoYXQgd2UganVzdCB3YW50IHRvIGV4cG9zZSBpbiBbRmxvYXRdLiBNb3N0IGFyZVxuICAgYWxyZWFkeSBkZXByZWNhdGVkIGluIFtQZXJ2YXNpdmVzXSwgYW5kIGV2ZW50dWFsbHkgYWxsIG9mIHRoZW0gc2hvdWxkIGJlLiAqKVxuaW5jbHVkZSAoXG4gIFN0ZGxpYiA6XG4gIHNpZ1xuICAgIGV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuXG4gICAgZXh0ZXJuYWwgbGRleHBcbiAgICAgIDogIChmbG9hdFtAdW5ib3hlZF0pXG4gICAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgICAtPiAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiXG4gICAgW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gIGVuZClcblxuKCogV2UgbmVlZCB0aGlzIGluZGlyZWN0aW9uIGJlY2F1c2UgdGhlc2UgYXJlIGV4cG9zZWQgYXMgXCJ2YWxcIiBpbnN0ZWFkIG9mIFwiZXh0ZXJuYWxcIiAqKVxubGV0IGZyZXhwID0gZnJleHBcbmxldCBsZGV4cCA9IGxkZXhwXG5sZXQgaXNfbmFuIHggPSAoeCA6IGZsb2F0KSA8PiB4XG5cbigqIEFuIG9yZGVyLXByZXNlcnZpbmcgYmlqZWN0aW9uIGJldHdlZW4gYWxsIGZsb2F0cyBleGNlcHQgZm9yIE5hTnMsIGFuZCA5OS45NSUgb2ZcbiAgIGludDY0cy5cblxuICAgTm90ZSB3ZSBkb24ndCBkaXN0aW5ndWlzaCAwLiBhbmQgLTAuIGFzIHNlcGFyYXRlIHZhbHVlcyBoZXJlLCB0aGV5IGJvdGggbWFwIHRvIDBMLCB3aGljaFxuICAgbWFwcyBiYWNrIHRvIDAuXG5cbiAgIFRoaXMgc2hvdWxkIHdvcmsgYm90aCBvbiBsaXR0bGUtZW5kaWFuIGFuZCBoaWdoLWVuZGlhbiBDUFVzLiAgV2lraXBlZGlhIHNheXM6IFwib25cbiAgIG1vZGVybiBzdGFuZGFyZCBjb21wdXRlcnMgKGkuZS4sIGltcGxlbWVudGluZyBJRUVFIDc1NCksIG9uZSBtYXkgaW4gcHJhY3RpY2Ugc2FmZWx5XG4gICBhc3N1bWUgdGhhdCB0aGUgZW5kaWFubmVzcyBpcyB0aGUgc2FtZSBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcyBmb3IgaW50ZWdlcnNcIlxuICAgKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW5kaWFubmVzcyNGbG9hdGluZy1wb2ludF9hbmRfZW5kaWFubmVzcykuXG4qKVxubGV0IHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgPVxuICBpZiBpc19uYW4gdFxuICB0aGVuIE5vbmVcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiAoKiBhbHNvIGluY2x1ZGVzIC0wLiAqKVxuICAgIFNvbWUgMExcbiAgZWxzZSBpZiB0ID4gMC5cbiAgdGhlbiBTb21lIChTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCB0KVxuICBlbHNlIFNvbWUgKFN0ZGxpYi5JbnQ2NC5uZWcgKFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0ICgtLnQpKSlcbjs7XG5cbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4geCA9IE9wdGlvbi52YWx1ZV9leG4gKHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHgpXG5cbmxldCBvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4ID1cbiAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSB4IDBMXG4gIHRoZW4gU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgeFxuICBlbHNlIH4tLihTdGRsaWIuSW50NjQuZmxvYXRfb2ZfYml0cyAoU3RkbGliLkludDY0Lm5lZyB4KSlcbjs7XG5cbmxldCBvbmVfdWxwIGRpciB0ID1cbiAgbWF0Y2ggdG9faW50NjRfcHJlc2VydmVfb3JkZXIgdCB3aXRoXG4gIHwgTm9uZSAtPiBTdGRsaWIubmFuXG4gIHwgU29tZSB4IC0+XG4gICAgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXJcbiAgICAgIChTdGRsaWIuSW50NjQuYWRkXG4gICAgICAgICB4XG4gICAgICAgICAobWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICB8IGBVcCAtPiAxTFxuICAgICAgICAgIHwgYERvd24gLT4gLTFMKSlcbjs7XG5cbigqIFt1cHBlcl9ib3VuZF9mb3JfaW50XSBhbmQgW2xvd2VyX2JvdW5kX2Zvcl9pbnRdIGFyZSBmb3IgY2FsY3VsYXRpbmcgdGhlIG1heC9taW4gZmxvYXRcbiAgIHRoYXQgZml0cyBpbiBhIGdpdmVuLXNpemUgaW50ZWdlciB3aGVuIHJvdW5kZWQgdG93YXJkcyAwICh1c2luZyBbaW50X29mX2Zsb2F0XSkuXG5cbiAgIG1heF9pbnQvbWluX2ludCBkZXBlbmQgb24gW251bV9iaXRzXSwgZS5nLiArLy0gMl4zMCwgKy8tIDJeNjIgaWYgMzEtYml0LCA2My1iaXRcbiAgIChyZXNwZWN0aXZlbHkpIHdoaWxlIGZsb2F0IGlzIElFRUUgc3RhbmRhcmQgZm9yIGRvdWJsZSAoNTIgc2lnbmlmaWNhbnQgYml0cykuXG5cbiAgIEluIGFsbCBjYXNlcywgd2Ugd2FudCB0byBndWFyYW50ZWUgdGhhdFxuICAgW2xvd2VyX2JvdW5kX2Zvcl9pbnQgPD0geCA8PSB1cHBlcl9ib3VuZF9mb3JfaW50XVxuICAgaWZmIFtpbnRfb2ZfZmxvYXQgeF0gZml0cyBpbiBhbiBpbnQgd2l0aCBbbnVtX2JpdHNdIGJpdHMuXG5cbiAgIFsyICoqIChudW1fYml0cyAtIDEpXSBpcyB0aGUgZmlyc3QgZmxvYXQgZ3JlYXRlciB0aGF0IG1heF9pbnQsIHdlIHVzZSB0aGUgcHJlY2VkaW5nXG4gICBmbG9hdCBhcyB1cHBlciBib3VuZC5cblxuICAgWy0gKDIgKiogKG51bV9iaXRzIC0gMSkpXSBpcyBlcXVhbCB0byBtaW5faW50LlxuICAgRm9yIGxvd2VyIGJvdW5kIHdlIGxvb2sgZm9yIHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXSBzbyB0aGF0XG4gICBbZl0gcm91bmRzIHRvd2FyZCB6ZXJvIHRvIFttaW5faW50XVxuXG4gICBTbyBpbiBwYXJ0aWN1bGFyIHdlIHdpbGwgaGF2ZTpcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IHggPD0gLSAoMiAqKiAoMS14KSldXG4gICBbdXBwZXJfYm91bmRfZm9yX2ludCB4ICA8ICAgIDIgKiogKDEteCkgXVxuKilcbmxldCB1cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzID1cbiAgbGV0IGV4cCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKG51bV9iaXRzIC0gMSkgaW5cbiAgb25lX3VscCBgRG93biAoMi4gKiogZXhwKVxuOztcblxubGV0IGlzX3hfbWludXNfb25lX2V4YWN0IHggPVxuICAoKiBbeCA9IHggLS4gMS5dIGRvZXMgbm90IHdvcmsgd2l0aCB4ODcgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBiYWNrZW5kICh3aGljaCBpcyB1c2VkXG4gICAgIG9uIDMyLWJpdCBvY2FtbCkgYmVjYXVzZSBvZiA4MC1iaXQgcmVnaXN0ZXIgcHJlY2lzaW9uIG9mIGludGVybWVkaWF0ZSBjb21wdXRhdGlvbnMuXG5cbiAgICAgQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIGNvbXB1dGluZyB0aGlzOiBbeCAtLiBvbmVfdWxwIGBEb3duIHggPD0gMS5dIGlzIGFsc28gcHJvbmUgdG9cbiAgICAgdGhlIHNhbWUgcHJlY2lzaW9uIGlzc3VlczogeW91IG5lZWQgdG8gbWFrZSBzdXJlIFt4XSBpcyA2NC1iaXQuXG4gICopXG4gIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBub3QgKFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHggPSBTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCAoeCAtLiAxLikpXG47O1xuXG5sZXQgbG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIGxldCBtaW5faW50X2FzX2Zsb2F0ID0gfi0uKDIuICoqIGV4cCkgaW5cbiAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiBudW1fYml0cyAtIDEgPCA1MyAoKiA1MyA9ICNiaXRzIGluIHRoZSBmbG9hdCdzIG1hbnRpc3NhIHdpdGggc2lnbiBpbmNsdWRlZCAqKVxuICB0aGVuIChcbiAgICAoKiBUaGUgc21hbGxlc3QgZmxvYXQgdGhhdCByb3VuZHMgdG93YXJkcyB6ZXJvIHRvIFttaW5faW50XSBpc1xuICAgICAgIFttaW5faW50IC0gMSArIGVwc2lsb25dICopXG4gICAgYXNzZXJ0IChpc194X21pbnVzX29uZV9leGFjdCBtaW5faW50X2FzX2Zsb2F0KTtcbiAgICBvbmVfdWxwIGBVcCAobWluX2ludF9hc19mbG9hdCAtLiAxLikpXG4gIGVsc2UgKFxuICAgICgqIFttaW5faW50X2FzX2Zsb2F0XSBpcyBhbHJlYWR5IHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXS4gKilcbiAgICBhc3NlcnQgKG5vdCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCkpO1xuICAgIG1pbl9pbnRfYXNfZmxvYXQpXG47O1xuXG4oKiBGbG9hdCBjbGFtcGluZyBpcyBzdHJ1Y3R1cmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4gY2xhbXBpbmcgZm9yIG90aGVyIHR5cGVzLCBzb1xuICAgdGhhdCB3ZSBnZXQgdGhlIGJlaGF2aW9yIG9mIFtjbGFtcF91bmNoZWNrZWQgbmFuIH5taW4gfm1heCA9IG5hbl0gKGZvciBhbnkgW21pbl0gYW5kXG4gICBbbWF4XSkgZm9yIGZyZWUuXG4qKVxubGV0IGNsYW1wX3VuY2hlY2tlZCAodCA6IGZsb2F0KSB+bWluIH5tYXggPVxuICBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgbWF4IDwgdCB0aGVuIG1heCBlbHNlIHRcbjs7XG5cbmxldCBib3ggPVxuICAoKiBQcmV2ZW50IHBvdGVudGlhbCBjb25zdGFudCBmb2xkaW5nIG9mIFsrLiAwLl0gaW4gdGhlIG5lYXIgb2NhbWxvcHQgZnV0dXJlLiAqKVxuICBsZXQgeCA9IFN5czAub3BhcXVlX2lkZW50aXR5IDAuIGluXG4gIGZ1biBmIC0+IGYgKy4geFxuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5pbmNsdWRlIENoYXIwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfY2hhciA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9jaGFyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9jaGFyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfY2hhciA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG4gIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9jaGFyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubWFrZSAxIHRcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggcyB3aXRoXG4gICAgfCAxIC0+IHMuWzBdXG4gICAgfCBfIC0+IGZhaWx3aXRoZiBcIkNoYXIub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQ2hhclwiXG4gIGVuZClcblxubGV0IHBwIGZtdCBjID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVDXCIgY1xuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGFsbCA9IEFycmF5LmluaXQgMjU2IH5mOnVuc2FmZV9vZl9pbnQgfD4gQXJyYXkudG9fbGlzdFxuXG5sZXQgaXNfbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfcHJpbnQgPSBmdW5jdGlvblxuICB8ICcgJyAuLiAnficgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnXFx0JyB8ICdcXG4nIHwgJ1xcMDExJyAoKiB2ZXJ0aWNhbCB0YWIgKikgfCAnXFwwMTInICgqIGZvcm0gZmVlZCAqKSB8ICdcXHInIHwgJyAnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19hbHBoYSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbigqIFdyaXRpbmcgdGhlc2Ugb3V0LCBpbnN0ZWFkIG9mIGNhbGxpbmcgW2lzX2FscGhhXSBhbmQgW2lzX2RpZ2l0XSwgcmVkdWNlc1xuICAgcnVudGltZSBieSBhcHByb3guIDMwJSAqKVxubGV0IGlzX2FscGhhbnVtID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfZGlnaXRfdW5zYWZlIHQgPSB0b19pbnQgdCAtIHRvX2ludCAnMCdcblxubGV0IGdldF9kaWdpdF9leG4gdCA9XG4gIGlmIGlzX2RpZ2l0IHRcbiAgdGhlbiBnZXRfZGlnaXRfdW5zYWZlIHRcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLmdldF9kaWdpdF9leG4gJUM6IG5vdCBhIGRpZ2l0XCIgdCAoKVxuOztcblxubGV0IGdldF9kaWdpdCB0ID0gaWYgaXNfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9kaWdpdF91bnNhZmUgdCkgZWxzZSBOb25lXG5cbmxldCBpc19oZXhfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF9sb3dlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfdXBwZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdF9leG4gPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnMCdcbiAgfCAnYScgLi4gJ2YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ2EnICsgMTBcbiAgfCAnQScgLi4gJ0YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ0EnICsgMTBcbiAgfCB0IC0+XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJDaGFyLmdldF9oZXhfZGlnaXRfZXhuOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiXG4gICAgICAgICBbIFwiY2hhclwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IGdldF9oZXhfZGlnaXQgdCA9IGlmIGlzX2hleF9kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2hleF9kaWdpdF9leG4gdCkgZWxzZSBOb25lXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgYzEgYzIgPSBjb21wYXJlIChsb3dlcmNhc2UgYzEpIChsb3dlcmNhc2UgYzIpXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfY2hhciBzdGF0ZSAobG93ZXJjYXNlIHQpXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0MC5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbigqIENvbnN0cnVjdCBhIGJ5dGUgc3RyaW5nIG9mIGxlbmd0aCAyNTYsIG1hcHBpbmcgZXZlcnkgaW5wdXQgY2hhcmFjdGVyIGNvZGUgdG9cbiAgIGl0cyBjb3JyZXNwb25kaW5nIG91dHB1dCBjaGFyYWN0ZXIuXG5cbiAgIEJlbmNobWFya3MgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuIHRoZSBsYW1iZGEgKGluY2x1ZGluZyBjb3N0IG9mXG4gICB0aGlzIGZ1bmN0aW9uKSwgZXZlbiBpZiB0YXJnZXQvcmVwbGFjZW1lbnQgYXJlIGp1c3QgMiBjaGFyYWN0ZXJzIGVhY2guXG5cbiAgIFJldHVybiBOb25lIGlmIHRoZSB0cmFuc2xhdGlvbiBtYXAgaXMgZXF1aXZhbGVudCB0byBqdXN0IHRoZSBpZGVudGl0eS4gKilcbmxldCB0cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgbGV0IHRyX21hcCA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGkgKENoYXIub2ZfaW50X2V4biBpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIC0gMSBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCAoU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgaSlcbiAgZG9uZTtcbiAgbGV0IGxhc3RfcmVwbGFjZW1lbnQgPSBTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCAtIDEpIGluXG4gIGZvclxuICAgIGkgPSBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgdG8gU3RyaW5nLmxlbmd0aCB0YXJnZXQgLSAxXG4gIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IGxhc3RfcmVwbGFjZW1lbnRcbiAgZG9uZTtcbiAgbGV0IHJlYyBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIGkgPVxuICAgIGlmIGkgPSAyNTZcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIGkpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgKGkgKyAxKVxuICBpblxuICAoKiBxdWljayBjaGVjayBvbiB0aGUgZmlyc3QgdGFyZ2V0IGNoYXJhY3RlciB3aGljaCB3aWxsIDk5JSBiZSB0cnVlICopXG4gIGxldCBmaXJzdF90YXJnZXQgPSB0YXJnZXQuWzBdIGluXG4gIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGZpcnN0X3RhcmdldCkpIGZpcnN0X3RhcmdldFxuICB8fCBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIDBcbiAgdGhlbiBTb21lIChCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0cl9tYXApXG4gIGVsc2UgTm9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYVxuXG5sZXQgc3RhZ2UgPSBGbi5pZFxubGV0IHVuc3RhZ2UgPSBGbi5pZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIEludCA9IEludDBcbmluY2x1ZGUgU3RyaW5nMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9zdHJpbmcgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfc3RyaW5nXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9zdHJpbmcgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gc3RyaW5nX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG50eXBlIGVsdCA9IGNoYXJcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxuKCogVGhpcyBpcyBjb3BpZWQvYWRhcHRlZCBmcm9tICdibGl0Lm1sJy5cbiAgIFtzdWJdLCBbc3Vib10gY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW0JsaXQuTWFrZShCeXRlcyldIHBsdXMgdW5zYWZlIGNhc3RzIHRvL2Zyb21cbiAgIHN0cmluZyBidXQgd2VyZSBpbmxpbmVkIGhlcmUgdG8gYXZvaWQgdXNpbmcgW0J5dGVzLnVuc2FmZV9vZl9zdHJpbmddIGFzIG11Y2ggYXMgcG9zc2libGUuXG4qKVxubGV0IHVuc2FmZV9zdWIgc3JjIH5wb3MgfmxlbiA9XG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBcIlwiXG4gIGVsc2UgKFxuICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuOztcblxubGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgaWYgcG9zID0gMCAmJiBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyY1xuICB0aGVuIHNyY1xuICBlbHNlIChcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggc3JjKTtcbiAgICB1bnNhZmVfc3ViIHNyYyB+cG9zIH5sZW4pXG47O1xuXG5sZXQgc3VibyA/KHBvcyA9IDApID9sZW4gc3JjID1cbiAgc3ViXG4gICAgc3JjXG4gICAgfnBvc1xuICAgIH5sZW46XG4gICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgfCBOb25lIC0+IGxlbmd0aCBzcmMgLSBwb3MpXG47O1xuXG5sZXQgcmVjIGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3MgfmVuZF8gY2hhciA9XG4gIHBvcyA8IGVuZF9cbiAgJiYgKENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgdCBwb3MpIGNoYXIgfHwgY29udGFpbnNfdW5zYWZlIHQgfnBvczoocG9zICsgMSkgfmVuZF8gY2hhcilcbjs7XG5cbmxldCBjb250YWlucyA/KHBvcyA9IDApID9sZW4gdCBjaGFyID1cbiAgbGV0IHRvdGFsX2xlbmd0aCA9IFN0cmluZy5sZW5ndGggdCBpblxuICBsZXQgbGVuID0gT3B0aW9uLnZhbHVlIGxlbiB+ZGVmYXVsdDoodG90YWxfbGVuZ3RoIC0gcG9zKSBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfOihwb3MgKyBsZW4pIGNoYXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCByZWMgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPj0gbGVuXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3M6KHBvcyArIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgaW5kZXhfZXhuIHQgY2hhciA9IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGluZGV4X2V4blxuOztcblxubGV0IGluZGV4X2Zyb21fZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IDAgfHwgcG9zID4gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9mcm9tX2V4blxuOztcblxubGV0IHJlYyByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPCAwXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgLSAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IHJpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczoobGVuIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJpbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2V4biB0IGNoYXIgPSByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2V4blxuOztcblxubGV0IHJpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IC0xIHx8IHBvcyA+PSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2Zyb21fZXhuXG47O1xuXG5sZXQgaW5kZXggdCBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCBpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgPSBfIH0gOiBTZXhwLnQgPVxuICAgIExpc3RcbiAgICAgIFsgTGlzdCBbIEF0b20gXCJwYXR0ZXJuXCI7IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm4gXVxuICAgICAgOyBMaXN0IFsgQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZSBdXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHBhdHRlcm4gdCA9IHQucGF0dGVyblxuICBsZXQgY2FzZV9zZW5zaXRpdmUgdCA9IHQuY2FzZV9zZW5zaXRpdmVcblxuICAoKiBGaW5kIG1heCBudW1iZXIgb2YgbWF0Y2hlZCBjaGFyYWN0ZXJzIGF0IFtuZXh0X3RleHRfY2hhcl0sIGdpdmVuIHRoZSBjdXJyZW50XG4gICAgIFttYXRjaGVkX2NoYXJzXS4gVHJ5IHRvIGV4dGVuZCB0aGUgY3VycmVudCBtYXRjaCwgaWYgY2hhcnMgZG9uJ3QgbWF0Y2gsIHRyeSB0byBtYXRjaFxuICAgICBmZXdlciBjaGFycy4gSWYgY2hhcnMgbWF0Y2ggdGhlbiBleHRlbmQgdGhlIG1hdGNoLiAqKVxuICBsZXQga21wX2ludGVybmFsX2xvb3Agfm1hdGNoZWRfY2hhcnMgfm5leHRfdGV4dF9jaGFyIH5wYXR0ZXJuIH5rbXBfYXJyYXkgfmNoYXJfZXF1YWwgPVxuICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIG1hdGNoZWRfY2hhcnMgaW5cbiAgICB3aGlsZVxuICAgICAgIW1hdGNoZWRfY2hhcnMgPiAwXG4gICAgICAmJiBub3QgKGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycykpXG4gICAgZG9cbiAgICAgIG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKCFtYXRjaGVkX2NoYXJzIC0gMSlcbiAgICBkb25lO1xuICAgIGlmIGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycylcbiAgICB0aGVuIG1hdGNoZWRfY2hhcnMgOj0gIW1hdGNoZWRfY2hhcnMgKyAxO1xuICAgICFtYXRjaGVkX2NoYXJzXG4gIDs7XG5cbiAgbGV0IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbWF0Y2ggY2FzZV9zZW5zaXRpdmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiBDaGFyLmVxdWFsXG4gICAgfCBmYWxzZSAtPiBDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVAgcHJlLXByb2Nlc3Npbmcgb2YgdGhlIHBhdHRlcm46IGJ1aWxkIHRoZSBpbnQgYXJyYXksIHdoaWNoLCBmb3IgZWFjaCBpLFxuICAgICBjb250YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IG5vbi10cml2aWFsIHByZWZpeCBvZiBzIHdoaWNoIGlzIGVxdWFsIHRvIGEgc3VmZml4XG4gICAgIGVuZGluZyBhdCBzLltpXSAqKVxuICBsZXQgY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBsZXQgbiA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgbGV0IGttcF9hcnJheSA9IEFycmF5LmNyZWF0ZSB+bGVuOm4gKC0xKSBpblxuICAgIGlmIG4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgMCAwO1xuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhcjoodW5zYWZlX2dldCBwYXR0ZXJuIGkpXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IGkgIW1hdGNoZWRfY2hhcnNcbiAgICAgIGRvbmUpO1xuICAgIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9XG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVA6IHVzZSB0aGUgcHJlLXByb2Nlc3NlZCBwYXR0ZXJuIHRvIG9wdGltaXplIGxvb2stYmVoaW5kcyBvbiBub24tbWF0Y2hlcy5cbiAgICAgV2UgcmV0dXJuIGludCB0byBhdm9pZCBhbGxvY2F0aW9uIGluIFtpbmRleF9leG5dLiAtMSBtZWFucyBubyBtYXRjaC4gKilcbiAgbGV0IGluZGV4X2ludGVybmFsID8ocG9zID0gMCkgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfmluXzp0ZXh0ID1cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlbmd0aCB0ZXh0IC0gbGVuZ3RoIHBhdHRlcm5cbiAgICB0aGVuIC0xXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IGogPSByZWYgcG9zIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICB3aGlsZSAhaiA8IG4gJiYgIW1hdGNoZWRfY2hhcnMgPCBrIGRvXG4gICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCAhaiBpblxuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgaiA6PSAhaiArIDFcbiAgICAgIGRvbmU7XG4gICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGsgdGhlbiAhaiAtIGsgZWxzZSAtMSlcbiAgOztcblxuICBsZXQgbWF0Y2hlcyB0IHN0ciA9IGluZGV4X2ludGVybmFsIHQgfmluXzpzdHIgPj0gMFxuXG4gIGxldCBpbmRleCA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcFxuICA7O1xuXG4gIGxldCBpbmRleF9leG4gP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwID49IDBcbiAgICB0aGVuIHBcbiAgICBlbHNlXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJTdWJzdHJpbmcgbm90IGZvdW5kXCIgWyBcInN1YnN0cmluZ1wiLCBzZXhwX29mX3N0cmluZyB0LnBhdHRlcm4gXSlcbiAgOztcblxuICBsZXQgaW5kZXhfYWxsIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5tYXlfb3ZlcmxhcCB+aW5fOnRleHQgPVxuICAgIGlmIGxlbmd0aCBwYXR0ZXJuID0gMFxuICAgIHRoZW4gTGlzdC5pbml0ICgxICsgbGVuZ3RoIHRleHQpIH5mOkZuLmlkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgbGV0IGZvdW5kID0gcmVmIFtdIGluXG4gICAgICBmb3IgaiA9IDAgdG8gbiBkb1xuICAgICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGtcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgZm91bmQgOj0gKGogLSBrKSA6OiAhZm91bmQ7XG4gICAgICAgICAgKCogd2UganVzdCBmb3VuZCBhIG1hdGNoIGluIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gKilcbiAgICAgICAgICBtYXRjaCBtYXlfb3ZlcmxhcCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+IG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKGsgLSAxKVxuICAgICAgICAgIHwgZmFsc2UgLT4gbWF0Y2hlZF9jaGFycyA6PSAwKTtcbiAgICAgICAgaWYgaiA8IG5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0IGogaW5cbiAgICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgICB+Y2hhcl9lcXVhbClcbiAgICAgIGRvbmU7XG4gICAgICBMaXN0LnJldiAhZm91bmQpXG4gIDs7XG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgP3BvcyB0IH5pbl86cyB+d2l0aF8gPVxuICAgIG1hdGNoIGluZGV4ID9wb3MgdCB+aW5fOnMgd2l0aFxuICAgIHwgTm9uZSAtPiBzXG4gICAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgbGVuX3dpdGggLSBsZW5fdCkgaW5cbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOndpdGhfIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczppIH5sZW46bGVuX3dpdGg7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6KGkgKyBsZW5fdClcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczooaSArIGxlbl93aXRoKVxuICAgICAgICB+bGVuOihsZW5fcyAtIGkgLSBsZW5fdCk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG5cbiAgbGV0IHJlcGxhY2VfYWxsIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBudW1fbWF0Y2hlcyA9IExpc3QubGVuZ3RoIG1hdGNoZXMgaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgKChsZW5fd2l0aCAtIGxlbl90KSAqIG51bV9tYXRjaGVzKSkgaW5cbiAgICAgIGxldCBuZXh0X2RzdF9wb3MgPSByZWYgMCBpblxuICAgICAgbGV0IG5leHRfc3JjX3BvcyA9IHJlZiAwIGluXG4gICAgICBMaXN0Lml0ZXIgbWF0Y2hlcyB+ZjooZnVuIGkgLT5cbiAgICAgICAgbGV0IGxlbiA9IGkgLSAhbmV4dF9zcmNfcG9zIGluXG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczohbmV4dF9zcmNfcG9zIH5kc3QgfmRzdF9wb3M6IW5leHRfZHN0X3BvcyB+bGVuO1xuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICAgIH5zcmM6d2l0aF9cbiAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgfmRzdFxuICAgICAgICAgIH5kc3RfcG9zOighbmV4dF9kc3RfcG9zICsgbGVuKVxuICAgICAgICAgIH5sZW46bGVuX3dpdGg7XG4gICAgICAgIG5leHRfZHN0X3BvcyA6PSAhbmV4dF9kc3RfcG9zICsgbGVuICsgbGVuX3dpdGg7XG4gICAgICAgIG5leHRfc3JjX3BvcyA6PSAhbmV4dF9zcmNfcG9zICsgbGVuICsgbGVuX3QpO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOiFuZXh0X3NyY19wb3NcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczohbmV4dF9kc3RfcG9zXG4gICAgICAgIH5sZW46KGxlbl9zIC0gIW5leHRfc3JjX3Bvcyk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG4gIGxldCBzcGxpdF9vbiB0IHMgPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgTGlzdC5tYXAyX2V4blxuICAgICAgKC1wYXR0ZXJuX2xlbiA6OiBtYXRjaGVzKVxuICAgICAgKG1hdGNoZXMgQCBbIFN0cmluZy5sZW5ndGggcyBdKVxuICAgICAgfmY6KGZ1biBpIGogLT4gc3ViIHMgfnBvczooaSArIHBhdHRlcm5fbGVuKSB+bGVuOihqIC0gaSAtIHBhdHRlcm5fbGVuKSlcbiAgOztcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgcHVibGljID0gdFxuXG4gICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgPVxuICAgICAgKGZ1biBhX18wMDNfIGJfXzAwNF8gLT5cbiAgICAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAzXyBiX18wMDRfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgIChlcXVhbF9zdHJpbmcgYV9fMDAzXy5wYXR0ZXJuIGJfXzAwNF8ucGF0dGVybilcbiAgICAgICAgICAgICAoU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgICAgIChlcXVhbF9ib29sIGFfXzAwM18uY2FzZV9zZW5zaXRpdmUgYl9fMDA0Xy5jYXNlX3NlbnNpdGl2ZSlcbiAgICAgICAgICAgICAgICAoZXF1YWxfYXJyYXkgZXF1YWxfaW50IGFfXzAwM18ua21wX2FycmF5IGJfXzAwNF8ua21wX2FycmF5KSlcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gYm9vbClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgcGF0dGVybiA9IHBhdHRlcm5fXzAwOF9cbiAgICAgICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA9IGNhc2Vfc2Vuc2l0aXZlX18wMTBfXG4gICAgICAgICAgIDsga21wX2FycmF5ID0ga21wX2FycmF5X18wMTJfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAwN18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTNfID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX2ludCBrbXBfYXJyYXlfXzAxMl8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwia21wX2FycmF5XCI7IGFyZ19fMDEzXyBdIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTFfID0gc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlX18wMTBfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IGFyZ19fMDExXyBdXG4gICAgICAgICAgIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9zdHJpbmcgcGF0dGVybl9fMDA4XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwYXR0ZXJuXCI7IGFyZ19fMDA5XyBdIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDdfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBGbi5pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm5faGVscGVyID0gc3RydWN0XG4gIG1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IFNlYXJjaF9wYXR0ZXJuMFxuZW5kXG5cbm9wZW4gU2VhcmNoX3BhdHRlcm5faGVscGVyXG5cbmxldCBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9leG4gP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+bWF5X292ZXJsYXAgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9hbGxcbiAgICAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKVxuICAgIH5tYXlfb3ZlcmxhcFxuICAgIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9maXJzdCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5yZXBsYWNlX2FsbCAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5zdWJzdHJpbmcgPVxuICBPcHRpb24uaXNfc29tZSAoc3Vic3RyX2luZGV4X2dlbiB0IH5wYXR0ZXJuOnN1YnN0cmluZyB+Y2FzZV9zZW5zaXRpdmUpXG47O1xuXG5sZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9hbGwgPSBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IGlzX3N1YnN0cmluZyA9IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcblxubGV0IGlzX3N1YnN0cmluZ19hdF9nZW4gPVxuICBsZXQgcmVjIGxvb3AgfnN0ciB+c3RyX3BvcyB+c3ViIH5zdWJfcG9zIH5zdWJfbGVuIH5jaGFyX2VxdWFsID1cbiAgICBpZiBzdWJfcG9zID0gc3ViX2xlblxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgY2hhcl9lcXVhbCAodW5zYWZlX2dldCBzdHIgc3RyX3BvcykgKHVuc2FmZV9nZXQgc3ViIHN1Yl9wb3MpXG4gICAgdGhlbiBsb29wIH5zdHIgfnN0cl9wb3M6KHN0cl9wb3MgKyAxKSB+c3ViIH5zdWJfcG9zOihzdWJfcG9zICsgMSkgfnN1Yl9sZW4gfmNoYXJfZXF1YWxcbiAgICBlbHNlIGZhbHNlXG4gIGluXG4gIGZ1biBzdHIgfnBvczpzdHJfcG9zIH5zdWJzdHJpbmc6c3ViIH5jaGFyX2VxdWFsIC0+XG4gICAgbGV0IHN0cl9sZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHN1Yl9sZW4gPSBsZW5ndGggc3ViIGluXG4gICAgaWYgc3RyX3BvcyA8IDAgfHwgc3RyX3BvcyA+IHN0cl9sZW5cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJTdHJpbmcuaXNfc3Vic3RyaW5nX2F0OiBpbnZhbGlkIGluZGV4ICVkIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgICAgc3RyX3Bvc1xuICAgICAgICBzdHJfbGVuXG4gICAgICAgICgpO1xuICAgIHN0cl9wb3MgKyBzdWJfbGVuIDw9IHN0cl9sZW5cbiAgICAmJiBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvczowIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfc3VmZml4X2dlbiBzdHJpbmcgfnN1ZmZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW5cbiAgICAgICBzdHJpbmdcbiAgICAgICB+cG9zOihzdHJpbmdfbGVuIC0gc3VmZml4X2xlbilcbiAgICAgICB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfcHJlZml4X2dlbiBzdHJpbmcgfnByZWZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgcHJlZml4X2xlbiA9IGxlbmd0aCBwcmVmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBwcmVmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW4gc3RyaW5nIH5wb3M6MCB+c3Vic3RyaW5nOnByZWZpeCB+Y2hhcl9lcXVhbFxuOztcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcl9jb21wYXJlX2Nhc2VsZXNzIGMxIGMyID0gQ2hhci5jb21wYXJlIChDaGFyLmxvd2VyY2FzZSBjMSkgKENoYXIubG93ZXJjYXNlIGMyKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2xvb3AgfnBvcyB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMiA9XG4gICAgICBpZiBwb3MgPSBsZW4xXG4gICAgICB0aGVuIGlmIHBvcyA9IGxlbjIgdGhlbiAwIGVsc2UgLTFcbiAgICAgIGVsc2UgaWYgcG9zID0gbGVuMlxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMgPSBjaGFyX2NvbXBhcmVfY2FzZWxlc3MgKHVuc2FmZV9nZXQgc3RyaW5nMSBwb3MpICh1bnNhZmVfZ2V0IHN0cmluZzIgcG9zKSBpblxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbG9vcCB+cG9zOihwb3MgKyAxKSB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMlxuICAgICAgICB8IF8gLT4gYylcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgc3RyaW5nMSBzdHJpbmcyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgc3RyaW5nMSBzdHJpbmcyXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2VcbiAgICAgICAgY29tcGFyZV9sb29wXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfnN0cmluZzFcbiAgICAgICAgICB+bGVuMTooU3RyaW5nLmxlbmd0aCBzdHJpbmcxKVxuICAgICAgICAgIH5zdHJpbmcyXG4gICAgICAgICAgfmxlbjI6KFN0cmluZy5sZW5ndGggc3RyaW5nMilcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPVxuICAgICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgICBsZXQgc3RhdGUgPSByZWYgKGhhc2hfZm9sZF9pbnQgc3RhdGUgbGVuKSBpblxuICAgICAgZm9yIHBvcyA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBzdGF0ZSA6PSBoYXNoX2ZvbGRfY2hhciAhc3RhdGUgKENoYXIubG93ZXJjYXNlICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgICAgIGRvbmU7XG4gICAgICAhc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgICBsZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2V4biA9IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9hbGwgPSBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmdfYXQgPSBpc19zdWJzdHJpbmdfYXRfZ2VuIH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGbi5pZFxubGV0IHRvX3N0cmluZyA9IEZuLmlkXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIlN0cmluZy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPCAwIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSAtIDEpIGluXG4gIGxvb3AgW10gKGxlbmd0aCBzIC0gMSlcbjs7XG5cbmxldCB0b19saXN0X3JldiBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPSBsZW4gdGhlbiBhY2MgZWxzZSBsb29wIChzLltpXSA6OiBhY2MpIChpICsgMSkgaW5cbiAgbG9vcCBbXSAwXG47O1xuXG5sZXQgcmV2IHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyBpICh1bnNhZmVfZ2V0IHQgKGxlbiAtIDEgLSBpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXNcbjs7XG5cbigqKiBFZmZpY2llbnQgc3RyaW5nIHNwbGl0dGluZyAqKVxuXG5sZXQgbHNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcubHNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgbHNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSBpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgbHNwbGl0Ml9leG5cbjs7XG5cbmxldCByc3BsaXQyX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yc3BsaXQyX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByc3BsaXQyX2V4biBsaW5lIH5vbjpkZWxpbSA9XG4gICAgbGV0IHBvcyA9IHJpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcnNwbGl0Ml9leG5cbjs7XG5cbmxldCBsc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKGxzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJzcGxpdDIgbGluZSB+b24gPVxuICB0cnkgU29tZSAocnNwbGl0Ml9leG4gbGluZSB+b24pIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNoYXJfbGlzdF9tZW0gbCAoYyA6IGNoYXIpID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCBoZCA6OiB0bCAtPiBDaGFyLmVxdWFsIGhkIGMgfHwgY2hhcl9saXN0X21lbSB0bCBjXG47O1xuXG5sZXQgc3BsaXRfZ2VuIHN0ciB+b24gPVxuICBsZXQgaXNfZGVsaW0gPVxuICAgIG1hdGNoIG9uIHdpdGhcbiAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgIHwgYGNoYXJfbGlzdCBsIC0+IGZ1biBjIC0+IGNoYXJfbGlzdF9tZW0gbCBjXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gIGxldCByZWMgbG9vcCBhY2MgbGFzdF9wb3MgcG9zID1cbiAgICBpZiBwb3MgPSAtMVxuICAgIHRoZW4gc3ViIHN0ciB+cG9zOjAgfmxlbjpsYXN0X3BvcyA6OiBhY2NcbiAgICBlbHNlIGlmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvczEgPSBwb3MgKyAxIGluXG4gICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpwb3MxIH5sZW46KGxhc3RfcG9zIC0gcG9zMSkgaW5cbiAgICAgIGxvb3AgKHN1Yl9zdHIgOjogYWNjKSBwb3MgKHBvcyAtIDEpKVxuICAgIGVsc2UgbG9vcCBhY2MgbGFzdF9wb3MgKHBvcyAtIDEpXG4gIGluXG4gIGxvb3AgW10gbGVuIChsZW4gLSAxKVxuOztcblxubGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG5sZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG5sZXQgc3BsaXRfbGluZXMgPVxuICBsZXQgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbCA9XG4gICAgcG9zIDo9ICFwb3MgLSBpZiAhcG9zID4gMCAmJiBDaGFyLmVxdWFsIHQuWyFwb3MgLSAxXSAnXFxyJyB0aGVuIDIgZWxzZSAxO1xuICAgIGVvbCA6PSAhcG9zICsgMVxuICBpblxuICBmdW4gdCAtPlxuICAgIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBuID0gMFxuICAgIHRoZW4gW11cbiAgICBlbHNlIChcbiAgICAgICgqIEludmFyaWFudDogWy0xIDw9IHBvcyA8IGVvbF0uICopXG4gICAgICBsZXQgcG9zID0gcmVmIChuIC0gMSkgaW5cbiAgICAgIGxldCBlb2wgPSByZWYgbiBpblxuICAgICAgbGV0IGFjID0gcmVmIFtdIGluXG4gICAgICAoKiBXZSB0cmVhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgc3BlY2lhbGx5LCBiZWNhdXNlIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGFcbiAgICAgICAgIG5ld2xpbmUsIHdlIGRvbid0IHdhbnQgYW4gZXh0cmEgZW1wdHkgc3RyaW5nIGF0IHRoZSBlbmQgb2YgdGhlIG91dHB1dC4gKilcbiAgICAgIGlmIENoYXIuZXF1YWwgdC5bIXBvc10gJ1xcbicgdGhlbiBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sO1xuICAgICAgd2hpbGUgIXBvcyA+PSAwIGRvXG4gICAgICAgIGlmIENoYXIuKCA8PiApIHQuWyFwb3NdICdcXG4nXG4gICAgICAgIHRoZW4gZGVjciBwb3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogQmVjYXVzZSBbcG9zIDwgZW9sXSwgd2Uga25vdyB0aGF0IFtzdGFydCA8PSBlb2xdLiAqKVxuICAgICAgICAgIGxldCBzdGFydCA9ICFwb3MgKyAxIGluXG4gICAgICAgICAgYWMgOj0gc3ViIHQgfnBvczpzdGFydCB+bGVuOighZW9sIC0gc3RhcnQpIDo6ICFhYztcbiAgICAgICAgICBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sKVxuICAgICAgZG9uZTtcbiAgICAgIHN1YiB0IH5wb3M6MCB+bGVuOiFlb2wgOjogIWFjKVxuOztcblxubGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5sZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcblxubGV0IGlzX3N1YnN0cmluZ19hdCBzIH5wb3MgfnN1YnN0cmluZyA9XG4gIGlzX3N1YnN0cmluZ19hdF9nZW4gcyB+cG9zIH5zdWJzdHJpbmcgfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuOztcblxubGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gIGVsc2UgKFxuICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgIHwgXyAtPiBvbl9lcnJvcilcbjs7XG5cbmxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9wcmVmaXhcIiB0IG4gfnBvczpuIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9zdWZmaXhcIiB0IG4gfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG5sZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxubGV0IGxmaW5kaSA/KHBvcyA9IDApIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA9IG4gdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gIGxvb3AgcG9zIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBmIGMpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT4gU29tZSB0LltpXVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gblxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZiB0LltpXSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzKVxuICBpblxuICBsb29wIDAgW0Bub250YWlsXVxuOztcblxubGV0IHJmaW5kaSA/cG9zIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgLSAxKSBpblxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gICAgfCBOb25lIC0+IGxlbmd0aCB0IC0gMVxuICBpblxuICBsb29wIHBvcyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbGFzdF9ub25fZHJvcCB+ZHJvcCB0ID0gcmZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gbm90IChkcm9wIGMpKSBbQG5vbnRhaWxdXG5cbmxldCByc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG47O1xuXG5sZXQgZmlyc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IGxmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSkgW0Bub250YWlsXVxuXG5sZXQgbHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgMCAtPiB0XG4gIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuOztcblxuKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgIGZpbmFsIHJlc3VsdC4gIFRoaXMgYWxzbyBzYXZlcyBzb21lIGFtb3VudCBvZiB0aW1lLiAqKVxubGV0IHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwIHx8IG5vdCAoZHJvcCB0LlswXSB8fCBkcm9wIHQuW2xlbmd0aCAtIDFdKVxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIChtYXRjaCBsYXN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGxldCB0JyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdCcgaSAoZiBpIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG4oKiByZXBlYXRlZCBjb2RlIHRvIGF2b2lkIHJlcXVpcmluZyBhbiBleHRyYSBhbGxvY2F0aW9uIGZvciBhIGNsb3N1cmUgb24gZWFjaCBjYWxsLiAqKVxubGV0IG1hcCB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgdC5baV0pXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dCdcbjs7XG5cbmxldCB0b19hcnJheSBzID0gQXJyYXkuaW5pdCAobGVuZ3RoIHMpIH5mOihmdW4gaSAtPiBzLltpXSlcblxubGV0IGV4aXN0cyA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPCBsZW4gJiYgKGYgcy5baV0gfHwgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9yX2FsbCA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPSBsZW4gfHwgKGYgcy5baV0gJiYgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgaSBhYyB0LltpXSkgfmYgfmxlblxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgMCBpbml0IH5mIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHRcbmxldCBtYXhfZWx0IHQgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0XG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmxldCBmaW5kX21hcGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxubGV0IGZpbmRpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kaSB+aXRlcmkgdCB+ZlxubGV0IGNvdW50aSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuY291bnRpIH5mb2xkaSB0IH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZvcl9hbGxpIH5pdGVyaSB0IH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZXhpc3RzaSB+aXRlcmkgdCB+ZlxuXG5sZXQgbWVtID1cbiAgbGV0IHJlYyBsb29wIHQgYyB+cG9zOmkgfmxlbiA9XG4gICAgaSA8IGxlbiAmJiAoQ2hhci5lcXVhbCBjICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IGMgfnBvczooaSArIDEpIH5sZW4pXG4gIGluXG4gIGZ1biB0IGMgLT4gbG9vcCB0IGMgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBpZiBDaGFyLmVxdWFsIHRhcmdldCByZXBsYWNlbWVudFxuICB0aGVuIHNcbiAgZWxzZSBpZiBtZW0gcyB0YXJnZXRcbiAgdGhlbiBtYXAgcyB+ZjooZnVuIGMgLT4gaWYgQ2hhci5lcXVhbCBjIHRhcmdldCB0aGVuIHJlcGxhY2VtZW50IGVsc2UgYylcbiAgZWxzZSBzXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBpc19lbXB0eSB0YXJnZXRcbiAgdGhlbiBzdGFnZSBGbi5pZFxuICBlbHNlIGlmIGlzX2VtcHR5IHJlcGxhY2VtZW50XG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aSByZXBsYWNlbWVudCBpcyBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgRm4uaWRcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgaWYgZXhpc3RzIHMgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgKHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSkpXG4gICAgICAgIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSlcbiAgICAgICAgZWxzZSBzKSlcbjs7XG5cbigqIGZhc3QgdmVyc2lvbiwgaWYgd2UgZXZlciBuZWVkIGl0OlxuICAge1tcbiAgICAgbGV0IGNvbmNhdF9hcnJheSB+c2VwIGFyID1cbiAgICAgICBsZXQgYXJfbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgICAgaWYgYXJfbGVuID0gMCB0aGVuIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBsZXQgc2VwX2xlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgIGxldCByZXNfbGVuX3JlZiA9IHJlZiAoc2VwX2xlbiAqIChhcl9sZW4gLSAxKSkgaW5cbiAgICAgICAgIGZvciBpID0gMCB0byBhcl9sZW4gLSAxIGRvXG4gICAgICAgICAgIHJlc19sZW5fcmVmIDo9ICFyZXNfbGVuX3JlZiArIGxlbmd0aCBhci4oaSlcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICBsZXQgcmVzID0gY3JlYXRlICFyZXNfbGVuX3JlZiBpblxuICAgICAgICAgbGV0IHN0cl8wID0gYXIuKDApIGluXG4gICAgICAgICBsZXQgbGVuXzAgPSBsZW5ndGggc3RyXzAgaW5cbiAgICAgICAgIGJsaXQgfnNyYzpzdHJfMCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjAgfmxlbjpsZW5fMDtcbiAgICAgICAgIGxldCBwb3NfcmVmID0gcmVmIGxlbl8wIGluXG4gICAgICAgICBmb3IgaSA9IDEgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgICAgICAgICAgYmxpdCB+c3JjOnNlcCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOnBvcyB+bGVuOnNlcF9sZW47XG4gICAgICAgICAgIGxldCBuZXdfcG9zID0gcG9zICsgc2VwX2xlbiBpblxuICAgICAgICAgICBsZXQgc3RyX2kgPSBhci4oaSkgaW5cbiAgICAgICAgICAgbGV0IGxlbl9pID0gbGVuZ3RoIHN0cl9pIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzdHJfaSB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOm5ld19wb3MgfmxlbjpsZW5faTtcbiAgICAgICAgICAgcG9zX3JlZiA6PSBuZXdfcG9zICsgbGVuX2lcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICByZXNcbiAgIF19ICopXG5cbmxldCBjb25jYXRfYXJyYXkgP3NlcCBhciA9IGNvbmNhdCA/c2VwIChBcnJheS50b19saXN0IGFyKVxubGV0IGNvbmNhdF9tYXAgP3NlcCBzIH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcCAodG9fYXJyYXkgcykgfmYpXG5sZXQgY29uY2F0X21hcGkgP3NlcCB0IH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcGkgKHRvX2FycmF5IHQpIH5mKVxuXG5sZXQgY29uY2F0X2xpbmVzID1cbiAgbGV0IHJlYyBsaW5lX2xlbmd0aHMgfmxpbmVzIH5uZXdsaW5lX2xlbiB+c3VtID1cbiAgICBtYXRjaCBsaW5lcyB3aXRoXG4gICAgfCBbXSAtPiBzdW1cbiAgICB8IGxpbmUgOjogbGluZXMgLT5cbiAgICAgIGxldCBzdW0gPSBzdW0gKyBTdHJpbmcubGVuZ3RoIGxpbmUgKyBuZXdsaW5lX2xlbiBpblxuICAgICAgbGluZV9sZW5ndGhzIH5saW5lcyB+bmV3bGluZV9sZW4gfnN1bVxuICBpblxuICBsZXQgcmVjIHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3MgPVxuICAgIG1hdGNoIGxpbmVzIHdpdGhcbiAgICB8IFtdIC0+IHBvc1xuICAgIHwgbGluZSA6OiBsaW5lcyAtPlxuICAgICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6bGluZVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5kc3Q6YnVmXG4gICAgICAgIH5kc3RfcG9zOnBvc1xuICAgICAgICB+bGVuOihTdHJpbmcubGVuZ3RoIGxpbmUpO1xuICAgICAgbGV0IHBvcyA9IHBvcyArIFN0cmluZy5sZW5ndGggbGluZSBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIGlmIGNybGZcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zICdcXHInO1xuICAgICAgICAgIHBvcyArIDEpXG4gICAgICAgIGVsc2UgcG9zXG4gICAgICBpblxuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zICdcXG4nO1xuICAgICAgbGV0IHBvcyA9IHBvcyArIDEgaW5cbiAgICAgIHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3NcbiAgaW5cbiAgZnVuID8oY3JsZiA9IGZhbHNlKSBsaW5lcyAtPlxuICAgIGxldCBuZXdsaW5lX2xlbiA9IGlmIGNybGYgdGhlbiAyIGVsc2UgMSBpblxuICAgIGxldCBsZW4gPSBsaW5lX2xlbmd0aHMgfm5ld2xpbmVfbGVuIH5saW5lcyB+c3VtOjAgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCB3cml0dGVuID0gd3JpdGVfbGluZXMgfmJ1ZiB+bGluZXMgfmNybGYgfnBvczowIGluXG4gICAgYXNzZXJ0ICh3cml0dGVuID0gbGVuKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuOztcblxuKCogW2ZpbHRlciB0IGZdIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtLlxuXG4gICBMZXQgW24gPSBsZW5ndGggdF0uXG5cbiAgIDEuIEZpbmQgdGhlIGxvd2VzdCBbaV0gc3VjaCB0aGF0IFtub3QgKGYgdC5baV0pXS5cblxuICAgMi4gSWYgdGhlcmUgaXMgbm8gc3VjaCBbaV0sIHRoZW4gcmV0dXJuIFt0XS5cblxuICAgMy4gSWYgdGhlcmUgaXMgc3VjaCBhbiBbaV0sIGFsbG9jYXRlIGEgc3RyaW5nLCBbb3V0XSwgdG8gaG9sZCB0aGUgcmVzdWx0LiAgW291dF0gaGFzXG4gICBsZW5ndGggW24gLSAxXSwgd2hpY2ggaXMgdGhlIG1heGltdW0gcG9zc2libGUgb3V0cHV0IHNpemUgZ2l2ZW4gdGhhdCB0aGVyZSBpcyBhdCBsZWFzdFxuICAgb25lIGNoYXJhY3RlciBub3Qgc2F0aXNmeWluZyBbZl0uXG5cbiAgIDQuIENvcHkgY2hhcmFjdGVycyBhdCBpbmRpY2VzIDAgLi4uIFtpIC0gMV0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDUuIFdhbGsgdGhyb3VnaCBjaGFyYWN0ZXJzIGF0IGluZGljZXMgW2krMV0gLi4uIFtuLTFdIG9mIFt0XSwgY29weWluZyB0aG9zZSB0aGF0XG4gICBzYXRpc2Z5IFtmXSBmcm9tIFt0XSB0byBbb3V0XS5cblxuICAgNi4gSWYgd2UgY29tcGxldGVseSBmaWxsZWQgW291dF0sIHRoZW4gcmV0dXJuIGl0LiAgSWYgbm90LCByZXR1cm4gdGhlIHByZWZpeCBvZiBbb3V0XVxuICAgdGhhdCB3ZSBkaWQgZmlsbCBpbi5cblxuICAgVGhpcyBhbGdvcml0aG0gaGFzIHRoZSBwcm9wZXJ0eSB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgYSBuZXcgc3RyaW5nIGlmIHRoZXJlJ3NcbiAgIG5vdGhpbmcgdG8gZmlsdGVyLCB3aGljaCBpcyBhIGNvbW1vbiBjYXNlLiAqKVxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBuICYmIGYgIWkgdC5bIWldIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGlmICFpID0gblxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IEJ5dGVzLmNyZWF0ZSAobiAtIDEpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpvdXQgfmRzdF9wb3M6MCB+bGVuOiFpO1xuICAgIGxldCBvdXRfcG9zID0gcmVmICFpIGluXG4gICAgaW5jciBpO1xuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGMgPSB0LlshaV0gaW5cbiAgICAgIGlmIGYgIWkgY1xuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXQgIW91dF9wb3MgYztcbiAgICAgICAgaW5jciBvdXRfcG9zKTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgbGV0IG91dCA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0IGluXG4gICAgaWYgIW91dF9wb3MgPSBuIC0gMSB0aGVuIG91dCBlbHNlIHN1YiBvdXQgfnBvczowIH5sZW46IW91dF9wb3MpXG47O1xuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIFNvbWUgKGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9pZl9leGlzdHMgcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3BfcHJlZml4X2V4biBzIH5wcmVmaXggPVxuICBtYXRjaCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3BfcHJlZml4X2V4biAlUyAlU1wiIHMgcHJlZml4ICgpXG47O1xuXG5sZXQgY2hvcF9zdWZmaXggcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIFNvbWUgKGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9pZl9leGlzdHMgcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3Bfc3VmZml4X2V4biBzIH5zdWZmaXggPVxuICBtYXRjaCBjaG9wX3N1ZmZpeCBzIH5zdWZmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3Bfc3VmZml4X2V4biAlUyAlU1wiIHMgc3VmZml4ICgpXG47O1xuXG5tb2R1bGUgRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeCA9IHN0cnVjdFxuICAoKiBXaGVuIHRha2luZyBhIHN0cmluZyBwcmVmaXggb3Igc3VmZml4LCB3ZSBleHRyYWN0IGZyb20gdGhlIHNob3J0ZXN0IGlucHV0IGF2YWlsYWJsZVxuICAgICBpbiBjYXNlIHdlIGNhbiBqdXN0IHJldHVybiBvbmUgb2Ygb3VyIGlucHV0cyB3aXRob3V0IGFsbG9jYXRpbmcgYSBuZXcgc3RyaW5nLiAqKVxuXG4gIGxldCBzaG9ydGVyIGEgYiA9IGlmIGxlbmd0aCBhIDw9IGxlbmd0aCBiIHRoZW4gYSBlbHNlIGJcblxuICBsZXQgc2hvcnRlc3QgbGlzdCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+IExpc3QuZm9sZCByZXN0IH5pbml0OmZpcnN0IH5mOnNob3J0ZXJcbiAgOztcblxuICAoKiBPdXIgZ2VuZXJpYyBhY2Nlc3NvcnMgZm9yIGNvbW1vbiBwcmVmaXgvc3VmZml4IGFic3RyYWN0IG92ZXIgW2dldF9wb3NdLCB3aGljaCBpc1xuICAgICBlaXRoZXIgW3Bvc19mcm9tX2xlZnRdIG9yIFtwb3NfZnJvbV9yaWdodF0uICopXG5cbiAgbGV0IHBvc19mcm9tX2xlZnQgKF8gOiB0KSAoaSA6IGludCkgPSBpXG4gIGxldCBwb3NfZnJvbV9yaWdodCB0IGkgPSBsZW5ndGggdCAtIGkgLSAxXG5cbiAgbGV0IHJlYyBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyID1cbiAgICBpZiBsZW5fc29fZmFyID49IG1heF9sZW5cbiAgICB0aGVuIG1heF9sZW5cbiAgICBlbHNlIGlmIENoYXIuZXF1YWxcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYSAoZ2V0X3BvcyBhIGxlbl9zb19mYXIpKVxuICAgICAgICAgICAgICAodW5zYWZlX2dldCBiIChnZXRfcG9zIGIgbGVuX3NvX2ZhcikpXG4gICAgdGhlbiBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOihsZW5fc29fZmFyICsgMSlcbiAgICBlbHNlIGxlbl9zb19mYXJcbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgPVxuICAgIGxldCBtYXhfbGVuID0gbWluIChsZW5ndGggYSkgKGxlbmd0aCBiKSBpblxuICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICA7O1xuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgbGlzdCB+Z2V0X3BvcyB+bWF4X2xlbiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBtYXhfbGVuXG4gICAgfCBzZWNvbmQgOjogcmVzdCAtPlxuICAgICAgbGV0IG1heF9sZW4gPVxuICAgICAgICAoKiBXZSBjYWxsIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoXSBzb1xuICAgICAgICAgICB0aGF0IFttYXhfbGVuXSBsaW1pdHMgb3VyIHRyYXZlcnNhbCBvZiBbZmlyc3RdIGFuZCBbc2Vjb25kXS4gKilcbiAgICAgICAgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGZpcnN0IHNlY29uZCB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjowXG4gICAgICBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3Agc2Vjb25kIHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3MgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gMFxuICAgIHwgZmlyc3QgOjogcmVzdCAtPlxuICAgICAgKCogUHJlY29tcHV0aW5nIFttYXhfbGVuXSBiYXNlZCBvbiBbc2hvcnRlc3QgbGlzdF0gc2F2ZXMgdXMgd29yayBpbiBsb25nZXIgc3RyaW5ncyxcbiAgICAgICAgIGF0IHRoZSBjb3N0IG9mIGFuIGV4dHJhIHBhc3Mgb3ZlciB0aGUgc3BpbmUgb2YgW2xpc3RdLlxuXG4gICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91J3JlIGxvb2tpbmcgZm9yIHRoZSBsb25nZXN0IHByZWZpeCBvZiB0aGUgc3RyaW5nczpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIGxldCBsb25nX2EgPSBMaXN0LmluaXQgMTAwMCB+ZjooRm4uY29uc3QgJ2EnKVxuICAgICAgICAgICAgWyBsb25nX2E7IGxvbmdfYTsgJ2FhJyBdXG4gICAgICAgICB2fVxuXG4gICAgICAgICB0aGUgYXBwcm9hY2ggYmVsb3cgd2lsbCBqdXN0IGNoZWNrIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiBhbGwgdGhlIHN0cmluZ3MuXG4gICAgICAqKVxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggKHNob3J0ZXN0IGxpc3QpIGluXG4gICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIHRoYXQgcHJvZHVjZSBhIHN0cmluZyBhYnN0cmFjdCBvdmVyIFt0YWtlXSwgd2hpY2ggaXMgZWl0aGVyXG4gICAgIFtwcmVmaXhdIG9yIFtzdWZmaXhdLiAqKVxuXG4gIGxldCBjb21tb25fZ2VuZXJpYzIgYSBiIH5nZXRfcG9zIH50YWtlID1cbiAgICBsZXQgbGVuID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgaW5cbiAgICAoKiBVc2UgdGhlIHNob3J0ZXIgb2YgdGhlIHR3byBzdHJpbmdzLCBzbyB0aGF0IGlmIHRoZSBzaG9ydGVyIG9uZSBpcyB0aGUgc2hhcmVkXG4gICAgICAgcHJlZml4LCBbdGFrZV0gd29uJ3QgYWxsb2NhdGUgYW5vdGhlciBzdHJpbmcuICopXG4gICAgdGFrZSAoc2hvcnRlciBhIGIpIGxlblxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpYyBsaXN0IH5nZXRfcG9zIH50YWtlID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIEFzIHdpdGggW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0sIHdlIGJhc2UgW21heF9sZW5dIG9uIFtzaG9ydGVzdCBsaXN0XS4gV2UgYWxzb1xuICAgICAgICAgdXNlIHRoaXMgcmVzdWx0IGZvciBbdGFrZV0sIGJlbG93LCB0byBwb3RlbnRpYWxseSBhdm9pZCBhbGxvY2F0aW5nIGEgc3RyaW5nLiAqKVxuICAgICAgbGV0IHMgPSBzaG9ydGVzdCBsaXN0IGluXG4gICAgICBsZXQgbWF4X2xlbiA9IGxlbmd0aCBzIGluXG4gICAgICBpZiBtYXhfbGVuID0gMFxuICAgICAgdGhlbiBcIlwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9XG4gICAgICAgICAgKCogV2UgY2FsbCBkaXJlY3RseSBpbnRvIFtjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcF0gcmF0aGVyIHRoYW5cbiAgICAgICAgICAgICBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoXSB0byBhdm9pZCByZWNvbXB1dGluZyBbc2hvcnRlc3QgbGlzdF0uICopXG4gICAgICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICAgICAgICBpblxuICAgICAgICB0YWtlIHMgbGVuKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeFxuXG4gIGxldCBjb21tb25fcHJlZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnByZWZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnN1ZmZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXhfbGVuZ3RoIGxpc3QgPSBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyX2xlbmd0aCBhIGIgPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbmVuZFxuXG4oKiBUaGVyZSB1c2VkIHRvIGJlIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIHRoYXQgd2FzIGZhc3RlciBmb3IgdmVyeSBzaG9ydCBzdHJpbmdzXG4gICAocGVha2luZyBhdCA0MCUgZmFzdGVyIGZvciA0LTYgY2hhciBsb25nIHN0cmluZ3MpLlxuICAgVGhpcyBuZXcgZnVuY3Rpb24gaXMgYXJvdW5kIDIwJSBmYXN0ZXIgdGhhbiB0aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uLCBidXQgc2xvd2VyXG4gICB0aGFuIHRoZSBwcmV2aW91cyBjdXN0b20gaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHRoZSBuZXcgT0NhbWwgZnVuY3Rpb24gaXMgd2VsbFxuICAgYmVoYXZlZCwgYW5kIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbGVzcyBsaWtlbHkgdG8gZGl2ZXJnZSBmcm9tIHRoZSBkZWZhdWx0IE9DYW1sXG4gICBpbXBsZW1lbnRhdGlvbiBkb2VzLCB3aGljaCBpcyBhIGRlc2lyYWJsZSBwcm9wZXJ0eS4gKFRoZSBvbmx5IHdheSB0byBhdm9pZCB0aGVcbiAgIGRpdmVyZ2VuY2UgaXMgdG8gZXhwb3NlIHRoZSBtYWNybyByZWRlZmluZWQgaW4gaGFzaF9zdHVicy5jIGluIHRoZSBoYXNoLmggaGVhZGVyIG9mXG4gICB0aGUgT0NhbWwgY29tcGlsZXIuKSAqKVxubW9kdWxlIEhhc2ggPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgaGFzaCA6IHN0cmluZyAtPiBpbnQgPSBcIkJhc2VfaGFzaF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZW5kXG5cbigqIFtpbmNsdWRlIEhhc2hdIHRvIG1ha2UgdGhlIFtleHRlcm5hbF0gdmVyc2lvbiBvdmVycmlkZSB0aGUgW2hhc2hdIGZyb21cbiAgIFtIYXNoYWJsZS5NYWtlX2JpbmFibGVdLCBzbyB0aGF0IHdlIGdldCBhIGxpdHRsZSBiaXQgb2YgYSBzcGVlZHVwIGJ5IGV4cG9zaW5nIGl0IGFzXG4gICBleHRlcm5hbCBpbiB0aGUgbWxpLiAqKVxubGV0IF8gPSBoYXNoXG5cbmluY2x1ZGUgSGFzaFxuXG4oKiBmb3IgaW50ZXJhY3RpdmUgdG9wLWxldmVscyAtLSBtb2R1bGVzIGRlcml2aW5nIGZyb20gU3RyaW5nIHNob3VsZCBoYXZlIFN0cmluZydzIHByZXR0eVxuICAgcHJpbnRlci4gKilcbmxldCBwcCBwcGYgc3RyaW5nID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiVTXCIgc3RyaW5nXG5sZXQgb2ZfY2hhciBjID0gbWFrZSAxIGNcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBCeXRlcy5zZXQgdCBpIGMpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbmxldCBvZl9saXN0ID0gb2ZfY2hhcl9saXN0XG5sZXQgb2ZfYXJyYXkgYSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhKSB+ZjooQXJyYXkuZ2V0IGEpXG5sZXQgYXBwZW5kID0gKCBeIClcblxubGV0IHBhZF9yaWdodCA/KGNoYXIgPSAnICcpIHMgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHMgaW5cbiAgaWYgc3JjX2xlbiA+PSBsZW5cbiAgdGhlbiBzXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5kc3Q6cmVzIH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnNyY19sZW47XG4gICAgQnl0ZXMuZmlsbCB+cG9zOnNyY19sZW4gfmxlbjoobGVuIC0gc3JjX2xlbikgcmVzIGNoYXI7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXMpXG47O1xuXG5sZXQgcGFkX2xlZnQgPyhjaGFyID0gJyAnKSBzIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzIGluXG4gIGlmIHNyY19sZW4gPj0gbGVuXG4gIHRoZW4gc1xuICBlbHNlIChcbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+ZHN0OnJlcyB+c3JjX3BvczowIH5kc3RfcG9zOihsZW4gLSBzcmNfbGVuKSB+bGVuOnNyY19sZW47XG4gICAgQnl0ZXMuZmlsbCB+cG9zOjAgfmxlbjoobGVuIC0gc3JjX2xlbikgcmVzIGNoYXI7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXMpXG47O1xuXG4oKiBDYWxsZWQgdXBvbiBmaXJzdCBkaWZmZXJlbmNlIGdlbmVyYXRlZCBieSBmaWx0ZXJpbmcuIEFsbG9jYXRlcyBbYnVmZmVyX2xlbl0gYnl0ZXNcbiAgIGZvciBuZXcgcmVzdWx0LCBhbmQgY29waWVzIFtwcmVmaXhfbGVuXSB1bmNoYW5nZWQgY2hhcmFjdGVycyBmcm9tIFtzcmNdLlxuICAgQWx3YXlzIHJldHVybnMgYSBsb2NhbCBidWZmZXIuICopXG5sZXQgbG9jYWxfY29weV9wcmVmaXggKHNyYyBbQGxvY2FsXSkgfnByZWZpeF9sZW4gfmJ1ZmZlcl9sZW4gPVxuICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlX2xvY2FsIGJ1ZmZlcl9sZW4gaW5cbiAgQnl0ZXMuUHJpbWl0aXZlcy51bnNhZmVfYmxpdF9zdHJpbmcgfnNyYyB+ZHN0IH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnByZWZpeF9sZW47XG4gICBkc3Rcbjs7XG5cbigqIENvcGllcyBhIHBlcmhhcHMtbG9jYWwgYnVmZmVyIGludG8gYSBkZWZpbml0ZWx5LWdsb2JhbCBzdHJpbmcuICopXG5sZXQgbG9jYWxfY29weV90b19zdHJpbmcgKGJ1ZiBbQGxvY2FsXSkgfnBvcyA9XG4gIGxldCBzdHIgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZiBpblxuICB1bnNhZmVfc3ViIHN0ciB+cG9zOjAgfmxlbjpwb3MgW0Bub250YWlsXVxuOztcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBzdHJ1Y3RcbiAgICAoKiBmaWx0ZXJfbWFwIGhlbHBlcnMgKilcblxuICAgICgqIEZpbHRlcnMgZnJvbSBzdHJpbmcgW3NyY10gaW50byBhbiBhbGxvY2F0ZWQgYnVmZmVyIFtkc3RdO1xuICAgICAgIGNvcGllcyB0aGUgYWxsb2NhdGVkIGJ1ZmZlciB0byBhIGhlYXAtYWxsb2NhdGVkIHJlc3VsdCBzdHJpbmcuXG5cbiAgICAgICBQcmUtY29uZGl0aW9uczpcbiAgICAgICBbc3JjX2xlbiA9IGxlbmd0aCBzcmNdXG4gICAgICAgW3NyYyAhPSBkc3RdXG4gICAgICAgWzAgPD0gc3JjX3BvcyA8IHNyY19sZW5dXG4gICAgICAgWzAgPD0gZHN0X3BvcyA8IGxlbmd0aCBkc3RdXG4gICAgKilcbiAgICBsZXQgZmlsdGVyX21hcGlfaW50byBzcmMgKGRzdCBbQGxvY2FsXSkgfmYgfnNyY19wb3MgfmRzdF9wb3MgfnNyY19sZW4gPVxuICAgICAgbGV0IGRzdF9wb3MgPSAgKHJlZiBkc3RfcG9zKSBpblxuICAgICAgZm9yIHNyY19wb3MgPSBzcmNfcG9zIHRvIHNyY19sZW4gLSAxIGRvXG4gICAgICAgIG1hdGNoIGYgc3JjX3BvcyAodW5zYWZlX2dldCBzcmMgc3JjX3Bvcykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGRzdCAhZHN0X3BvcyBjO1xuICAgICAgICAgIGluY3IgZHN0X3Bvc1xuICAgICAgZG9uZTtcbiAgICAgIGxvY2FsX2NvcHlfdG9fc3RyaW5nIGRzdCB+cG9zOiFkc3RfcG9zXG4gICAgOztcblxuICAgICgqIEZpbHRlcnMgW3RdLiBJZiB0aGUgcmVzdWx0IHR1cm5zIG91dCB0byBiZSBpZGVudGljYWwgdG8gdGhlIGlucHV0LCByZXR1cm5zIFt0XVxuICAgICAgIGRpcmVjdGx5IHdpdGhvdXQgbmVlZGluZyB0byBhbGxvY2F0ZSBhIGJ1ZmZlciBhbmQgdHJhdmVyc2UgdGhlIHN0cmluZyB0d2ljZS5cblxuICAgICAgIFByZS1jb25kaXRpb246IFtsZW4gPT0gbGVuZ3RoIHRdXG4gICAgICAgUHJlLWNvbmRpdGlvbjogWzAgPD0gcG9zIDw9IGxlbl0gKilcbiAgICBsZXQgcmVjIGZpbHRlcl9tYXBpX21heWJlX2lkIHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCB0IHBvcyBpblxuICAgICAgICBsZXQgbmV4dCA9IEludC5zdWNjIHBvcyBpblxuICAgICAgICBtYXRjaCBmIHBvcyBjMSB3aXRoXG4gICAgICAgIHwgU29tZSBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT5cbiAgICAgICAgICAoKiBpZiBub3RoaW5nIGhhcyBjaGFuZ2VkLCBjb250aW51ZSAqKVxuICAgICAgICAgIGZpbHRlcl9tYXBpX21heWJlX2lkIHQgfmYgfnBvczpuZXh0IH5sZW5cbiAgICAgICAgfCBvcHRpb24gLT5cbiAgICAgICAgICAoKiBJZiBhIGNoYXJhY3RlciBoYXMgYmVlbiBjaGFuZ2VkIG9yIGRyb3BwZWQsIGJlZ2luIGFuIG91dHB1dCBidWZmZXIgdXAgdG9cbiAgICAgICAgICAgICBbcG9zXSwgYW5kIHdyaXRlIHRoZSBuZXcgY2hhcmFjdGVyIGludG8gaXQuICopXG4gICAgICAgICAgbGV0IGNvcHkgPSBsb2NhbF9jb3B5X3ByZWZpeCB0IH5wcmVmaXhfbGVuOnBvcyB+YnVmZmVyX2xlbjpsZW4gaW5cbiAgICAgICAgICBsZXQgZHN0X3BvcyA9XG4gICAgICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHBvc1xuICAgICAgICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBjb3B5IHBvcyBjO1xuICAgICAgICAgICAgICBuZXh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBmaWx0ZXJfbWFwaV9pbnRvIHQgY29weSB+ZiB+c3JjX3BvczpuZXh0IH5kc3RfcG9zIH5zcmNfbGVuOmxlbiBbQG5vbnRhaWxdKVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGZpbHRlcl9tYXAgZnVuY3Rpb25zICopXG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPSBmaWx0ZXJfbWFwaV9tYXliZV9pZCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfIGMgLT4gZiBjKSBbQG5vbnRhaWxdXG5lbmRcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBzdHJ1Y3RcbiAgICAoKiBwYXJ0aXRpb24gaGVscGVycyAqKVxuXG4gICAgbGV0IHBhcnRpdGlvbl9tYXBfaW50byBzcmMgfmZzdHMgfnNuZHMgfmYgfmxlbiB+c3JjX3BvcyB+ZnN0X3BvcyB+c25kX3BvcyA9XG4gICAgICBsZXQgZnN0X3BvcyA9ICAocmVmIGZzdF9wb3MpIGluXG4gICAgICBsZXQgc25kX3BvcyA9ICAocmVmIHNuZF9wb3MpIGluXG4gICAgICBmb3Igc3JjX3BvcyA9IHNyY19wb3MgdG8gbGVuIC0gMSBkb1xuICAgICAgICBtYXRjaCAgKGYgKHVuc2FmZV9nZXQgc3JjIHNyY19wb3MpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgZnN0cyAhZnN0X3BvcyBjO1xuICAgICAgICAgIGluY3IgZnN0X3Bvc1xuICAgICAgICB8IFNlY29uZCBjIC0+XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzbmRzICFzbmRfcG9zIGM7XG4gICAgICAgICAgaW5jciBzbmRfcG9zXG4gICAgICBkb25lO1xuICAgICAgbG9jYWxfY29weV90b19zdHJpbmcgZnN0cyB+cG9zOiFmc3RfcG9zLCBsb2NhbF9jb3B5X3RvX3N0cmluZyBzbmRzIH5wb3M6IXNuZF9wb3NcbiAgICA7O1xuXG4gICAgbGV0IHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSBzcmMgfmYgfmxlbiB+cG9zOnNyY19wb3MgfmZzdF9wb3MgfnNuZF9wb3MgZWl0aGVyID1cbiAgICAgIGxldCBmc3RzID0gbG9jYWxfY29weV9wcmVmaXggc3JjIH5wcmVmaXhfbGVuOmZzdF9wb3MgfmJ1ZmZlcl9sZW46bGVuIGluXG4gICAgICBsZXQgc25kcyA9IGxvY2FsX2NvcHlfcHJlZml4IHNyYyB+cHJlZml4X2xlbjpzbmRfcG9zIH5idWZmZXJfbGVuOmxlbiBpblxuICAgICAgbGV0IGZzdF9wb3MsIHNuZF9wb3MgPVxuICAgICAgICBtYXRjaCAoZWl0aGVyIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgZnN0cyBmc3RfcG9zIGM7XG4gICAgICAgICAgIChmc3RfcG9zICsgMSwgc25kX3BvcylcbiAgICAgICAgfCBTZWNvbmQgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgc25kcyBzbmRfcG9zIGM7XG4gICAgICAgICAgIChmc3RfcG9zLCBzbmRfcG9zICsgMSlcbiAgICAgIGluXG4gICAgICBwYXJ0aXRpb25fbWFwX2ludG9cbiAgICAgICAgc3JjXG4gICAgICAgIH5mc3RzXG4gICAgICAgIH5zbmRzXG4gICAgICAgIH5mXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnNyY19wb3M6KHNyY19wb3MgKyAxKVxuICAgICAgICB+ZnN0X3Bvc1xuICAgICAgICB+c25kX3BvcyBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCByZWMgcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBzcmMsIFwiXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYzEgPSB1bnNhZmVfZ2V0IHNyYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgICAgcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOihwb3MgKyAxKVxuICAgICAgICB8IGVpdGhlciAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZVxuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgICB+ZlxuICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgfmZzdF9wb3M6cG9zXG4gICAgICAgICAgICB+c25kX3BvczowXG4gICAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb25fbWFwX3NlY29uZF9tYXliZV9pZCBzcmMgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBcIlwiLCBzcmNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYzEgPSB1bnNhZmVfZ2V0IHNyYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgU2Vjb25kIGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfc2Vjb25kX21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpXG4gICAgICAgIHwgZWl0aGVyIC0+XG4gICAgICAgICAgcGFydGl0aW9uX21hcF9kaWZmZXJlbmNlXG4gICAgICAgICAgICBzcmNcbiAgICAgICAgICAgIH5mXG4gICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICB+ZnN0X3BvczowXG4gICAgICAgICAgICB+c25kX3Bvczpwb3NcbiAgICAgICAgICAgIGVpdGhlciBbQG5vbnRhaWxdKVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIHBhcnRpdGlvbiBmdW5jdGlvbnMgKilcblxuICBsZXQgcGFydGl0aW9uX21hcCBzcmMgfmYgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggc3JjIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gXCJcIiwgXCJcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCBzcmMgMCBpblxuICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICB8IEZpcnN0IGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPiBwYXJ0aXRpb25fbWFwX2ZpcnN0X21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6MVxuICAgICAgfCBTZWNvbmQgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgIHBhcnRpdGlvbl9tYXBfc2Vjb25kX21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6MVxuICAgICAgfCBlaXRoZXIgLT5cbiAgICAgICAgcGFydGl0aW9uX21hcF9kaWZmZXJlbmNlXG4gICAgICAgICAgc3JjXG4gICAgICAgICAgfmZcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfmZzdF9wb3M6MFxuICAgICAgICAgIH5zbmRfcG9zOjBcbiAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIHBhcnRpdGlvbl9tYXAgdCB+ZjooZnVuIGMgLT4gaWYgZiBjIHRoZW4gIChGaXJzdCBjKSBlbHNlICAoU2Vjb25kIGMpKSBbQG5vbnRhaWxcbiAgICBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEVzY2FwaW5nID0gc3RydWN0XG4gICgqIElmIHRoaXMgaXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRvIHVwZGF0ZSBbZXNjYXBlXSwgd2hpY2ggYXR0ZW1wdHMgdG8gZW5zdXJlIGFsbCB0aGVcbiAgICAgaW52YXJpYW50cyBjaGVja2VkIGhlcmUuICAqKVxuICBsZXQgYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBmdW5jID1cbiAgICBsZXQgZXNjYXBld29ydGh5X21hcCA9XG4gICAgICBpZiBMaXN0LkFzc29jLm1lbSBlc2NhcGV3b3J0aHlfbWFwIH5lcXVhbDpDaGFyLmVxdWFsIGVzY2FwZV9jaGFyXG4gICAgICB0aGVuIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgIGVsc2UgKGVzY2FwZV9jaGFyLCBlc2NhcGVfY2hhcikgOjogZXNjYXBld29ydGh5X21hcFxuICAgIGluXG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOjI1NiAoLTEpIGluXG4gICAgbGV0IHZhbHMgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgZmFsc2UgaW5cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBPayBhcnJcbiAgICAgIHwgKGNfZnJvbSwgY190bykgOjogbCAtPlxuICAgICAgICBsZXQgaywgdiA9XG4gICAgICAgICAgbWF0Y2ggZnVuYyB3aXRoXG4gICAgICAgICAgfCBgRXNjYXBlIC0+IENoYXIudG9faW50IGNfZnJvbSwgY190b1xuICAgICAgICAgIHwgYFVuZXNjYXBlIC0+IENoYXIudG9faW50IGNfdG8sIGNfZnJvbVxuICAgICAgICBpblxuICAgICAgICBpZiBhcnIuKGspIDw+IC0xIHx8IHZhbHMuKENoYXIudG9faW50IHYpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgICBcImVzY2FwZXdvcnRoeV9tYXAgbm90IG9uZS10by1vbmVcIlxuICAgICAgICAgICAgICAgWyBcImNfZnJvbVwiLCBzZXhwX29mX2NoYXIgY19mcm9tXG4gICAgICAgICAgICAgICA7IFwiY190b1wiLCBzZXhwX29mX2NoYXIgY190b1xuICAgICAgICAgICAgICAgOyAoIFwiZXNjYXBld29ydGh5X21hcFwiXG4gICAgICAgICAgICAgICAgICwgc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9jaGFyIHNleHBfb2ZfY2hhcikgZXNjYXBld29ydGh5X21hcFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICBdKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhcnIuKGspIDwtIENoYXIudG9faW50IHY7XG4gICAgICAgICAgdmFscy4oQ2hhci50b19pbnQgdikgPC0gdHJ1ZTtcbiAgICAgICAgICBsb29wIGwpXG4gICAgaW5cbiAgICBsb29wIGVzY2FwZXdvcnRoeV9tYXBcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYEVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBjYWxjdWxhdGUgYSBsaXN0IG9mIChpbmRleCBvZiBjaGFyIHRvIGVzY2FwZSAqIGVzY2FwZWQgY2hhcikgZmlyc3QsIHRoZSBvcmRlclxuICAgICAgICAgICAgICBpcyBmcm9tIHRhaWwgdG8gaGVhZCAqKVxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlX2xlbiA9IHJlZiAwIGluXG4gICAgICAgICAgIGxldCB0b19lc2NhcGUgPVxuICAgICAgICAgICAgIGZvbGRpIHNyYyB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGMgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgYykgd2l0aFxuICAgICAgICAgICAgICAgfCAtMSAtPiBhY2NcbiAgICAgICAgICAgICAgIHwgbiAtPlxuICAgICAgICAgICAgICAgICAoKiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpICopXG4gICAgICAgICAgICAgICAgIGluY3IgdG9fZXNjYXBlX2xlbjtcbiAgICAgICAgICAgICAgICAgKGksIENoYXIudW5zYWZlX29mX2ludCBuKSA6OiBhY2MpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIHRvX2VzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICgqIFt0b19lc2NhcGVdIGRpdmlkZSBbc3JjXSB0byBbTGlzdC5sZW5ndGggdG9fZXNjYXBlICsgMV0gcGllY2VzIHNlcGFyYXRlZCBieVxuICAgICAgICAgICAgICAgIHRoZSBjaGFycyB0byBlc2NhcGUuXG5cbiAgICAgICAgICAgICAgICBMZXRzIHRha2VcbiAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgZXNjYXBlX2dlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgfmVzY2FwZXdvcnRoeV9tYXA6WygnYScsICdBJyk7ICgnYicsICdCJyk7ICgnYycsICdDJyldXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGVfY2hhcjonXydcbiAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgIGZvciBleGFtcGxlLCBhbmQgYXNzdW1lIHRoZSBzdHJpbmcgdG8gZXNjYXBlIGlzXG5cbiAgICAgICAgICAgICAgICBcIjAwMGExMTFiMjIyYzMzM1wiXG5cbiAgICAgICAgICAgICAgICB0aGVuIFt0b19lc2NhcGVdIGlzIFsoMTEsICdDJyk7ICg3LCAnQicpOyAoMywgJ0EnKV0uXG5cbiAgICAgICAgICAgICAgICBUaGVuIHdlIGNyZWF0ZSBhIFtkc3RdIG9mIGxlbmd0aCBbbGVuZ3RoIHNyYyArIDNdIHRvIHN0b3JlIHRoZVxuICAgICAgICAgICAgICAgIHJlc3VsdCwgY29weSBwaWVjZSBcIjMzM1wiIHRvIFtkc3RdIGRpcmVjdGx5LCB0aGVuIGNvcHkgJ18nIGFuZCAnQycgdG8gW2RzdF07XG4gICAgICAgICAgICAgICAgdGhlbiBtb3ZlIG9uIHRvIG5leHQ7IGFmdGVyIDMgaXRlcmF0aW9ucywgY29weSBwaWVjZSBcIjAwMFwiIGFuZCB3ZSBhcmUgZG9uZS5cblxuICAgICAgICAgICAgICAgIEZpbmFsbHkgdGhlIHJlc3VsdCB3aWxsIGJlXG5cbiAgICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiICopXG4gICAgICAgICAgICAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gICAgICAgICAgICAgbGV0IGRzdF9sZW4gPSBzcmNfbGVuICsgIXRvX2VzY2FwZV9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGRzdF9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IChpZHgsIGVzY2FwZWRfY2hhcikgOjogdG9fZXNjYXBlIC0+XG4gICAgICAgICAgICAgICAgICgqW2lkeF0gPSB0aGUgY2hhciB0byBlc2NhcGUqKVxuICAgICAgICAgICAgICAgICAoKiB0YWtlIGZpcnN0IGl0ZXJhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgICAgICAgICAgICAgICAoKiBjYWxjdWxhdGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDEgYmVjYXVzZSB3ZSBkb24ndCBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAxIGluXG4gICAgICAgICAgICAgICAgICgqIHNldCB0aGUgZHN0X3BvcyB0byBjb3B5IHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiwgc2V0IFtzcmNfcG9zXSB0byBbaWR4ICsgMV0gdG8gc2tpcCAnYycgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczooaWR4ICsgMSkgfmRzdCB+ZHN0X3BvcyB+bGVuO1xuICAgICAgICAgICAgICAgICAoKiBiYWNrb2ZmIFtkc3RfcG9zXSBieSAyIHRvIGNvcHkgJ18nIGFuZCAnQycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMiBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IGRzdF9wb3MgZXNjYXBlX2NoYXI7XG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBkc3QgKGRzdF9wb3MgKyAxKSBlc2NhcGVkX2NoYXI7XG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fZXNjYXBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSBmaXJzdCAqKVxuICAgICAgICAgICAgIGxvb3Agc3JjX2xlbiBkc3RfbGVuIHRvX2VzY2FwZTtcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBPcl9lcnJvci5va19leG4gKGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCBlc2NhcGUgfmVzY2FwZXdvcnRoeSB+ZXNjYXBlX2NoYXIgPVxuICAgICgqIEZvciBbZXNjYXBlX2dlbl9leG5dLCB3ZSBkb24ndCBrbm93IGhvdyB0byBmaXggaW52YWxpZCBlc2NhcGV3b3J0aHlfbWFwIHNvIHdlIGhhdmVcbiAgICAgICB0byByYWlzZSBleGNlcHRpb247IGJ1dCBpbiB0aGlzIGNhc2UsIHdlIGtub3cgaG93IHRvIGZpeCBkdXBsaWNhdGVkIGVsZW1lbnRzIGluXG4gICAgICAgZXNjYXBld29ydGh5IGxpc3QsIHNvIHdlIGp1c3QgZml4IGl0IGluc3RlYWQgb2YgcmFpc2luZyBleGNlcHRpb24gdG8gbWFrZSB0aGlzXG4gICAgICAgZnVuY3Rpb24gZWFzaWVyIHRvIHVzZS4gICopXG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgZXNjYXBld29ydGh5XG4gICAgICB8PiBMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOkNoYXIuY29tcGFyZVxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjIC0+IGMsIGMpXG4gICAgaW5cbiAgICBlc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXJcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYFVuZXNjYXBlIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgfCBPayBlc2NhcGV3b3J0aHkgLT5cbiAgICAgIE9rXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgICgqIENvbnRpbnVlIHRoZSBleGFtcGxlIGluIFtlc2NhcGVfZ2VuX2V4bl0sIG5vdyB3ZSB1bmVzY2FwZVxuXG4gICAgICAgICAgICAgIFwiMDAwX0ExMTFfQjIyMl9DMzMzXCJcblxuICAgICAgICAgICAgICBiYWNrIHRvXG5cbiAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgIFRoZW4gW3RvX3VuZXNjYXBlXSBpcyBbMTQ7IDk7IDRdLCB3aGljaCBpcyBpbmRleGVzIG9mICdfJ3MuXG5cbiAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBzdHJpbmcgW2RzdF0gdG8gc3RvcmUgdGhlIHJlc3VsdCwgY29weSBcIjMzM1wiIHRvIGl0LCB0aGVuIGNvcHlcbiAgICAgICAgICAgICAgJ2MnLCB0aGVuIG1vdmUgb24gdG8gbmV4dCBpdGVyYXRpb24uIEFmdGVyIDMgaXRlcmF0aW9ucyBjb3B5IFwiMDAwXCIgYW5kIHdlIGFyZVxuICAgICAgICAgICAgICBkb25lLiAgKilcbiAgICAgICAgICAgKCogaW5kZXhlcyBvZiBlc2NhcGUgY2hhcnMgKilcbiAgICAgICAgICAgbGV0IHRvX3VuZXNjYXBlID1cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgYWNjID1cbiAgICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHNyY1xuICAgICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3JjIH5lc2NhcGVfY2hhciBpIHN0YXR1cyBpblxuICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGluZyAtPiBpIDo6IGFjY1xuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gYWNjKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxvb3AgMCBgTGl0ZXJhbCBbXVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b191bmVzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgaWR4IDo6IHRvX3VuZXNjYXBlJyAtPlxuICAgICAgICAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbmd0aCBzcmMgLSBMaXN0Lmxlbmd0aCB0b191bmVzY2FwZSkgaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbaWR4XSA9IGluZGV4IG9mIGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSAxc3QgaXRlcmF0aW9uIGFzIGV4YW1wbGUsIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDIgdG9cbiAgICAgICAgICAgICAgICAgICAgc2tpcCAnX0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBsZW4gPSBsYXN0X2lkeCAtIGlkeCAtIDIgaW5cbiAgICAgICAgICAgICAgICAgKCogcG9pbnQgW2RzdF9wb3NdIHRvIHRoZSBwb3NpdGlvbiB0byBjb3B5IFwiMzMzXCIgdG8gKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBsYXN0X2RzdF9wb3MgLSBsZW4gaW5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjMzM1wiICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDIpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMSB0byBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGRzdF9wb3MgLSAxIGluXG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldFxuICAgICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgICAgICAgIGRzdF9wb3NcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXNjYXBld29ydGh5LihDaGFyLnRvX2ludCBzcmMuW2lkeCArIDFdKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgLTEgLT4gc3JjLltpZHggKyAxXVxuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gQ2hhci51bnNhZmVfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgICAoKiB1cGRhdGUgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gKilcbiAgICAgICAgICAgICAgICAgbG9vcCBpZHggZHN0X3BvcyB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgaWR4IDwgbGVuZ3RoIHNyYyAtIDFcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSAqKVxuICAgICAgICAgICAgICAgbG9vcCAobGVuZ3RoIHNyYykgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgKCogZm9yIGVzY2FwZWQgc3RyaW5nIGVuZGluZyB3aXRoIGFuIGVzY2FwaW5nIGNoYXIgbGlrZSBcIjAwMF9cIiwganVzdCBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIHRoZSBsYXN0IGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMgLSAxKSAoQnl0ZXMubGVuZ3RoIGRzdCkgdG9fdW5lc2NhcGUnO1xuICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuICh1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZSB+ZXNjYXBlX2NoYXIgPSB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwOltdIH5lc2NhcGVfY2hhclxuXG4gIGxldCBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgcmVjIGxvb3AgcCBjbnQgPVxuICAgICAgaWYgcCA8IDAgfHwgQ2hhci4oIDw+ICkgc3RyLltwXSBlc2NhcGVfY2hhciB0aGVuIGNudCBlbHNlIGxvb3AgKHAgLSAxKSAoY250ICsgMSlcbiAgICBpblxuICAgIGxvb3AgKHBvcyAtIDEpIDBcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGxldCBvZGQgPSBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIG1vZCAyID0gMSBpblxuICAgIG1hdGNoIG9kZCwgQ2hhci5lcXVhbCBzdHIuW3Bvc10gZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgdHJ1ZSwgKHRydWUgfCBmYWxzZSkgLT4gYEVzY2FwZWRcbiAgICB8IGZhbHNlLCB0cnVlIC0+IGBFc2NhcGluZ1xuICAgIHwgZmFsc2UsIGZhbHNlIC0+IGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2JvdW5kIHN0ciBwb3MgZnVuY3Rpb25fbmFtZSA9XG4gICAgaWYgcG9zID49IGxlbmd0aCBzdHIgfHwgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIiVzOiBvdXQgb2YgYm91bmRzXCIgZnVuY3Rpb25fbmFtZSAoKVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2VzY2FwaW5nIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGluZ1wiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwaW5nIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGVkIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGVkXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgRXNjYXBlZCAtPiB0cnVlXG4gICAgfCBgRXNjYXBpbmcgfCBgTGl0ZXJhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2xpdGVyYWwgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2xpdGVyYWxcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImluZGV4X2Zyb21cIjtcbiAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgPVxuICAgICAgaWYgaSA+PSBwb3NcbiAgICAgICYmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAmJiBDaGFyLmVxdWFsIHN0ci5baV0gY2hhclxuICAgICAgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaSA9IGkgKyAxIGluXG4gICAgICAgIGlmIGkgPj0gbGVuZ3RoIHN0clxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSBsb29wIGkgKHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMpKVxuICAgIGluXG4gICAgbG9vcCBwb3MgKGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCJcbiAgICAgICAgICAgWyBcInN0clwiLCBzZXhwX29mX3Qgc3RyXG4gICAgICAgICAgIDsgXCJlc2NhcGVfY2hhclwiLCBzZXhwX29mX2NoYXIgZXNjYXBlX2NoYXJcbiAgICAgICAgICAgOyBcInBvc1wiLCBzZXhwX29mX2ludCBwb3NcbiAgICAgICAgICAgOyBcImNoYXJcIiwgc2V4cF9vZl9jaGFyIGNoYXJcbiAgICAgICAgICAgXSlcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICA7O1xuXG4gIGxldCBpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPSBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG4gIGxldCBpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAwIGNoYXJcblxuICBsZXQgcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcInJpbmRleF9mcm9tXCI7XG4gICAgKCogaWYgdGhlIHRhcmdldCBjaGFyIGlzIHRoZSBzYW1lIGFzIFtlc2NhcGVfY2hhcl0sIHdlIGhhdmUgbm8gd2F5IHRvIGRldGVybWluZSB3aGljaFxuICAgICAgIGVzY2FwZV9jaGFyIGlzIGxpdGVyYWwsIHNvIGp1c3QgcmV0dXJuIE5vbmUgKilcbiAgICBpZiBDaGFyLmVxdWFsIGNoYXIgZXNjYXBlX2NoYXJcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBwb3MgPVxuICAgICAgICBpZiBwb3MgPCAwXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXNjYXBlX2NoYXJzID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBpblxuICAgICAgICAgIGlmIGVzY2FwZV9jaGFycyBtb2QgMiA9IDAgJiYgQ2hhci5lcXVhbCBzdHIuW3Bvc10gY2hhclxuICAgICAgICAgIHRoZW4gU29tZSBwb3NcbiAgICAgICAgICBlbHNlIGxvb3AgKHBvcyAtIGVzY2FwZV9jaGFycyAtIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgcG9zKVxuICA7O1xuXG4gIGxldCByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJyaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgcmluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgaWYgaXNfZW1wdHkgc3RyIHRoZW4gTm9uZSBlbHNlIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgbGV0IHJpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID1cbiAgICByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAobGVuZ3RoIHN0ciAtIDEpIGNoYXJcbiAgOztcblxuICAoKiBbc3BsaXRfZ2VuIHN0ciB+ZXNjYXBlX2NoYXIgfm9uXSB3b3JrcyBzaW1pbGFybHkgdG8gW1N0cmluZy5zcGxpdF9nZW5dLCB3aXRoIGFuXG4gICAgIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnQ6IG9ubHkgc3BsaXQgb24gbGl0ZXJhbCBjaGFycywgbm90IGVzY2FwaW5nIG9yIGVzY2FwZWQgKilcbiAgbGV0IHNwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbiA9XG4gICAgbGV0IGlzX2RlbGltID1cbiAgICAgIG1hdGNoIG9uIHdpdGhcbiAgICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICAgIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyBwb3MgPVxuICAgICAgaWYgcG9zID0gbGVuXG4gICAgICB0aGVuIExpc3QucmV2IChzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoobGVuIC0gbGFzdF9wb3MpIDo6IGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgc3RhdHVzIGluXG4gICAgICAgIGlmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAgICYmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpsYXN0X3BvcyB+bGVuOihwb3MgLSBsYXN0X3BvcykgaW5cbiAgICAgICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgc3RhdHVzIChwb3MgKyAxKSAocG9zICsgMSkpXG4gICAgICAgIGVsc2UgbG9vcCBhY2Mgc3RhdHVzIGxhc3RfcG9zIChwb3MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgW10gYExpdGVyYWwgMCAwXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG4gIGxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbiAgbGV0IHNwbGl0X2F0IHN0ciBwb3MgPVxuICAgIHN1YiBzdHIgfnBvczowIH5sZW46cG9zLCBzdWIgc3RyIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBzdHIgLSBwb3MgLSAxKVxuICA7O1xuXG4gIGxldCBsc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IHJzcGxpdDIgc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPVxuICAgIE9wdGlvbi5tYXAgKHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IGxzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBvbilcbiAgbGV0IHJzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChyaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG5cbiAgKCogW2xhc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYW5kIFtmaXJzdF9ub25fZHJvcF9saXRlcmFsXSBhcmUgZWl0aGVyIGJvdGggW05vbmVdIG9yIGJvdGhcbiAgICAgW1NvbWVdLiBJZiBbU29tZV0sIHRoZW4gdGhlIGZvcm1lciBpcyA+PSB0aGUgbGF0dGVyLiAqKVxuICBsZXQgbGFzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICByZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgbGZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgaSAtPiBpZiBpID0gbGVuZ3RoIHQgLSAxIHRoZW4gdCBlbHNlIHByZWZpeCB0IChpICsgMSlcbiAgOztcblxuICBsZXQgbHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgMCAtPiB0XG4gICAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG4gIDs7XG5cbiAgKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbiAgbGV0IHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gICAgKCogcGVyZm9ybWFuY2UgaGFjazogYXZvaWQgY29weWluZyBbdF0gaW4gY29tbW9uIGNhc2VzICopXG4gICAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuICA7O1xuZW5kXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuKCogT3ZlcnJpZGUgW1NlYXJjaF9wYXR0ZXJuXSB3aXRoIGRlZmF1bHQgY2FzZS1zZW5zaXRpdml0eSBhcmd1bWVudCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgZmlsZSwgc28gdGhhdCBjYWxsIHNpdGVzIGFib3ZlIGFyZSBmb3JjZWQgdG8gc3VwcGx5IGNhc2Utc2Vuc2l0aXZpdHkgZXhwbGljaXRseS4gKilcbm1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IHN0cnVjdFxuICBpbmNsdWRlIFNlYXJjaF9wYXR0ZXJuMFxuXG4gIGxldCBjcmVhdGUgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpIHBhdHRlcm4gPSBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmVcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9ieXRlcyA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG4gIGxldCB0X29mX3NleHAgPSAoYnl0ZXNfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYnl0ZXMgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYnl0ZXNfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIEJ5dGVzMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5CeXRlc1wiXG4gIGxldCBwcCBmbXQgdCA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiICh0b19zdHJpbmcgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFRvX2J5dGVzID0gQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFQpIChUb19ieXRlcylcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIGVuZClcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgbiAwXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIkJ5dGVzLmluaXQgJWRcIiBuICgpO1xuICBsZXQgdCA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gc2V0IHQgaSBjKTtcbiAgdFxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgKGkgLSAxKSAodW5zYWZlX2dldCB0IGkgOjogYWNjKVxuICBpblxuICBsb29wIHQgKGxlbmd0aCB0IC0gMSkgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcbmxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mXG5sZXQgbWFwaSB0IH5mID0gbWFwaSB0IH5mXG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBwb3MgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzIGkpIHRhcmdldCB0aGVuIHVuc2FmZV9zZXQgcyBpIHJlcGxhY2VtZW50XG4gIGRvbmVcbjs7XG5cbmxldCB0cl9tdWx0aSB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAwXG4gIHRoZW4gc3RhZ2UgaWdub3JlXG4gIGVsc2UgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgMFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGk6IHJlcGxhY2VtZW50IGlzIHRoZSBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgaWdub3JlXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHMgaSAoU3RyaW5nLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCAodW5zYWZlX2dldCBzIGkpKSlcbiAgICAgICAgZG9uZSkpXG47O1xuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgY29udGFpbnMgP3BvcyA/bGVuIHQgY2hhciA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbGFzdCA9IHBvcyArIGxlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIGxhc3RcbiAgICAmJiAoQ2hhci5lcXVhbCAoZ2V0IHQgaSkgY2hhciB8fCBsb29wIChpICsgMSkpXG4gIGluXG4gIGxvb3AgcG9zXG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIjIDEgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gXG50eXBlIHJlc3VsdCA9XG58IE5lZyBvZiBzdHJpbmdcbnwgUG9zIG9mIHN0cmluZ1xuXG4jIDggXCJzcmMvaGV4X2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDgyXFwwMDBcXDEwNVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBwYXJzZV9oZXggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxMzUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOZWcgYm9keSApXG4jIDEzOSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDE0NSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIFBvcyBib2R5IClcbiMgMTQ5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBjb252ZXJ0X2ZhaWx1cmUgeCBhIGIgdG9fc3RyaW5nID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiY29udmVyc2lvbiBmcm9tICVzIHRvICVzIGZhaWxlZDogJXMgaXMgb3V0IG9mIHJhbmdlXCJcbiAgICBhXG4gICAgYlxuICAgICh0b19zdHJpbmcgeClcbiAgICAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBudW1fYml0c19pbnQgPSBTeXMuaW50X3NpemVfaW5fYml0c1xubGV0IG51bV9iaXRzX2ludDMyID0gMzJcbmxldCBudW1fYml0c19pbnQ2NCA9IDY0XG5sZXQgbnVtX2JpdHNfbmF0aXZlaW50ID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50ID0gNjMgfHwgbnVtX2JpdHNfaW50ID0gMzEgfHwgbnVtX2JpdHNfaW50ID0gMzIpXG5sZXQgbWluX2ludDMyID0gU3RkbGliLkludDMyLm1pbl9pbnRcbmxldCBtYXhfaW50MzIgPSBTdGRsaWIuSW50MzIubWF4X2ludFxubGV0IG1pbl9pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5taW5faW50XG5sZXQgbWF4X2ludDY0ID0gU3RkbGliLkludDY0Lm1heF9pbnRcbmxldCBtaW5fbmF0aXZlaW50ID0gU3RkbGliLk5hdGl2ZWludC5taW5faW50XG5sZXQgbWF4X25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQubWF4X2ludFxubGV0IGludF90b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2ludFxubGV0IGludDMyX3RvX3N0cmluZyA9IFN0ZGxpYi5JbnQzMi50b19zdHJpbmdcbmxldCBpbnQ2NF90b19zdHJpbmcgPSBTdGRsaWIuSW50NjQudG9fc3RyaW5nXG5sZXQgbmF0aXZlaW50X3RvX3N0cmluZyA9IFN0ZGxpYi5OYXRpdmVpbnQudG9fc3RyaW5nXG5cbigqIGludCA8LT4gaW50MzIgKilcblxubGV0IGludF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludFwiIFwiaW50MzJcIiBpbnRfdG9fc3RyaW5nXG5sZXQgaW50MzJfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50MzJcIiBcImludFwiIGludDMyX3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF90cnVuYyA9IFN0ZGxpYi5JbnQzMi50b19pbnRcbmxldCBpbnRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuSW50MzIub2ZfaW50XG5cbmxldCBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX2ludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX2ludF90cnVuYyBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9faW50X3RydW5jIG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWluX3ZhbHVlIGluXG4gICAgbGV0IG1heCA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQzMiBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50MzIgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnRfdG9faW50MzIgeCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50MzJfdG9faW50IHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50MzJfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBpbnRfdG9faW50MzJfdHJ1bmMgeCBlbHNlIGludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbmxldCBpbnQzMl90b19pbnRfZXhuIHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50MzJfdG9faW50X3RydW5jIHggZWxzZSBpbnQzMl90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludF90b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9pbnRcbmxldCBpbnQ2NF90b19pbnRfdHJ1bmMgPSBTdGRsaWIuSW50NjQudG9faW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGxldCBtaW4gPSBpbnRfdG9faW50NjQgSW50Lm1pbl92YWx1ZSBpblxuICBsZXQgbWF4ID0gaW50X3RvX2ludDY0IEludC5tYXhfdmFsdWUgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50NjRfdG9faW50X3RydW5jIHggZWxzZSBpbnQ2NF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50XCIgbmF0aXZlaW50X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludF90b19uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm9mX2ludFxubGV0IG5hdGl2ZWludF90b19pbnRfdHJ1bmMgPSBTdGRsaWIuTmF0aXZlaW50LnRvX2ludFxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19uYXRpdmVpbnQgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9fbmF0aXZlaW50IEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludCB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnRfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnRfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDMyXCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50MzJfdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfaW50MzJcbmxldCBpbnQ2NF90b19pbnQzMl90cnVuYyA9IFN0ZGxpYi5JbnQ2NC50b19pbnQzMlxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGxldCBtaW4gPSBpbnQzMl90b19pbnQ2NCBtaW5faW50MzIgaW5cbiAgbGV0IG1heCA9IGludDMyX3RvX2ludDY0IG1heF9pbnQzMiBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzIgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gaW50NjRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeCA9XG4gIGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnQzMlwiIG5hdGl2ZWludF90b19zdHJpbmdcbjs7XG5cbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDMyX3RvX25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQub2ZfaW50MzJcbmxldCBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuTmF0aXZlaW50LnRvX2ludDMyXG5cbmxldCBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX25hdGl2ZWludCBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9fbmF0aXZlaW50IG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfbmF0aXZlaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9uYXRpdmVpbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzIgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnQzMl90cnVuYyB4XG4gIGVsc2UgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcIm5hdGl2ZWludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQ2NCA+PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X3RydW5jID0gU3RkbGliLkludDY0LnRvX25hdGl2ZWludFxubGV0IG5hdGl2ZWludF90b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9uYXRpdmVpbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50NjQgPD0gbnVtX2JpdHNfbmF0aXZlaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gbmF0aXZlaW50X3RvX2ludDY0IG1pbl9uYXRpdmVpbnQgaW5cbiAgICBsZXQgbWF4ID0gbmF0aXZlaW50X3RvX2ludDY0IG1heF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDY0X3RvX25hdGl2ZWludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIFNvbWUgKGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCB4XG4gIHRoZW4gaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gaW50NjMgKilcblxubGV0IGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDYzXCIgaW50NjRfdG9fc3RyaW5nXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzID1cbiAgbGV0IG1pbiA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBtaW5faW50NjQgMSBpblxuICBsZXQgbWF4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IG1heF9pbnQ2NCAxIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF9maXRfb25faW50NjNfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzIHggdGhlbiAoKSBlbHNlIGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeFxuOztcblxuKCogc3RyaW5nIGNvbnZlcnNpb25zICopXG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgPVxuICBsZXQgaW5wdXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBpZiBpbnB1dF9sZW5ndGggPD0gY2hhcnNfcGVyX2RlbGltaXRlclxuICB0aGVuIGlucHV0XG4gIGVsc2UgKFxuICAgIGxldCBoYXNfc2lnbiA9XG4gICAgICBtYXRjaCBpbnB1dC5bMF0gd2l0aFxuICAgICAgfCAnKycgfCAnLScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgbnVtX2RpZ2l0cyA9IGlmIGhhc19zaWduIHRoZW4gaW5wdXRfbGVuZ3RoIC0gMSBlbHNlIGlucHV0X2xlbmd0aCBpblxuICAgIGxldCBudW1fZGVsaW1pdGVycyA9IChudW1fZGlnaXRzIC0gMSkgLyBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IG91dHB1dF9sZW5ndGggPSBpbnB1dF9sZW5ndGggKyBudW1fZGVsaW1pdGVycyBpblxuICAgIGxldCBvdXRwdXQgPSBCeXRlcy5jcmVhdGUgb3V0cHV0X2xlbmd0aCBpblxuICAgIGxldCBpbnB1dF9wb3MgPSByZWYgKGlucHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG91dHB1dF9wb3MgPSByZWYgKG91dHB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gcmVmIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgZmlyc3RfZGlnaXRfcG9zID0gaWYgaGFzX3NpZ24gdGhlbiAxIGVsc2UgMCBpblxuICAgIHdoaWxlICFpbnB1dF9wb3MgPj0gZmlyc3RfZGlnaXRfcG9zIGRvXG4gICAgICBpZiAhbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGRlbGltaXRlcjtcbiAgICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgICBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIDo9IGNoYXJzX3Blcl9kZWxpbWl0ZXIpO1xuICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBpbnB1dC5bIWlucHV0X3Bvc107XG4gICAgICBkZWNyIGlucHV0X3BvcztcbiAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgIGRlY3IgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlclxuICAgIGRvbmU7XG4gICAgaWYgaGFzX3NpZ24gdGhlbiBCeXRlcy5zZXQgb3V0cHV0IDAgaW5wdXQuWzBdO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0cHV0KVxuOztcblxubGV0IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlciA9XG4gIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlcjozXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzIGlucHV0ID0gaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyOidfJ1xubGV0IHNleHBfb2ZfaW50X3N0eWxlID0gU2V4cC5vZl9pbnRfc3R5bGVcblxubW9kdWxlIE1ha2UgKEkgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIElcblxuICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDNcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9XG4gICAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAodG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBzID0gdG9fc3RyaW5nIHQgaW5cbiAgICBTZXhwLkF0b21cbiAgICAgIChtYXRjaCAhc2V4cF9vZl9pbnRfc3R5bGUgd2l0aFxuICAgICAgIHwgYFVuZGVyc2NvcmVzIC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgcyB+Y2hhcnNfcGVyX2RlbGltaXRlciB+ZGVsaW1pdGVyOidfJ1xuICAgICAgIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaGV4IChJIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRfaGV4ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSS50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoSS5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIEkuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gSS5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gNFxuXG4gICAgbGV0IHRvX3N0cmluZycgP2RlbGltaXRlciB0ID1cbiAgICAgIGxldCBtYWtlX3N1ZmZpeCA9XG4gICAgICAgIG1hdGNoIGRlbGltaXRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJLnRvX3N0cmluZ1xuICAgICAgICB8IFNvbWUgZGVsaW1pdGVyIC0+XG4gICAgICAgICAgZnVuIHQgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAoSS50b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICAgICAgaW5cbiAgICAgIGlmIEkuKCA8ICkgdCBJLnplcm8gdGhlbiBcIi0weFwiIF4gbWFrZV9zdWZmaXggKEkubmVnIHQpIGVsc2UgXCIweFwiIF4gbWFrZV9zdWZmaXggdFxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmcnIHQgP2RlbGltaXRlcjpOb25lXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPSB0b19zdHJpbmcnIHQgfmRlbGltaXRlclxuXG4gICAgbGV0IGludmFsaWQgc3RyID1cbiAgICAgIFByaW50Zi5mYWlsd2l0aGYgXCIlcy5vZl9zdHJpbmc6IGludmFsaWQgaW5wdXQgJVNcIiBJLm1vZHVsZV9uYW1lIHN0ciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIHN0ciA9XG4gICAgICBJLm9mX3N0cmluZyAoU3RyaW5nLmZpbHRlciBzdHIgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgJ18nKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgICAgbGV0IG1vZHVsZSBMID0gSGV4X2xleGVyIGluXG4gICAgICBsZXQgbGV4ID0gU3RkbGliLkxleGluZy5mcm9tX3N0cmluZyBzdHIgaW5cbiAgICAgIGxldCByZXN1bHQgPSBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBMLnBhcnNlX2hleCBsZXgpIGluXG4gICAgICBpZiBsZXgubGV4X2N1cnJfcG9zID0gbGV4LmxleF9idWZmZXJfbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWQgc3RyXG4gICAgICAgIHwgU29tZSAoTmVnIGJvZHkpIC0+IEkubmVnIChvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgYm9keSlcbiAgICAgICAgfCBTb21lIChQb3MgYm9keSkgLT4gb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICBlbHNlIGludmFsaWQgc3RyXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEhleCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVF9oZXhcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFRfaGV4KVxuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBmaWxlIHdhcyBhdXRvZ2VuZXJhdGVkIGJ5IC4uL2dlbmVyYXRlL2dlbmVyYXRlX3Bvd19vdmVyZmxvd19ib3VuZHMuZXhlICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgaGF2ZSB0byB1c2UgSW50NjQudG9faW50X2V4biBpbnN0ZWFkIG9mIGludCBjb25zdGFudHMgdG8gbWFrZVxuICAgc3VyZSB0aGF0IGZpbGUgY2FuIGJlIHByZXByb2Nlc3NlZCBvbiAzMi1iaXQgbWFjaGluZXMuICopXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUgOiBpbnQzMiA9XG4gIDIxNDc0ODM2NDdsXG5cbmxldCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQzMiBhcnJheSA9XG4gIFt8IDIxNDc0ODM2NDdsXG4gIDsgIDIxNDc0ODM2NDdsXG4gIDsgIDQ2MzQwbFxuICA7ICAxMjkwbFxuICA7ICAyMTVsXG4gIDsgIDczbFxuICA7ICAzNWxcbiAgOyAgMjFsXG4gIDsgIDE0bFxuICA7ICAxMGxcbiAgOyAgOGxcbiAgOyAgN2xcbiAgOyAgNWxcbiAgOyAgNWxcbiAgOyAgNGxcbiAgOyAgNGxcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUgOiBpbnQgPVxuICAoLTEpIGxzciAxXG5cbmxldCBpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50IGFycmF5ID1cbiAgbWF0Y2ggSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludCB3aXRoXG4gIHwgMzIgLT4gQXJyYXkubWFwIGludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyB+ZjpTdGRsaWIuSW50MzIudG9faW50XG4gIHwgNjMgLT5cbiAgICBbfCBTdGRsaWIuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgU3RkbGliLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIFN0ZGxpYi5JbnQ2NC50b19pbnQgMjE0NzQ4MzY0N0xcbiAgICA7ICAxNjY0NTEwXG4gICAgOyAgNDYzNDBcbiAgICA7ICA1NDA0XG4gICAgOyAgMTI5MFxuICAgIDsgIDQ2M1xuICAgIDsgIDIxNVxuICAgIDsgIDExOFxuICAgIDsgIDczXG4gICAgOyAgNDlcbiAgICA7ICAzNVxuICAgIDsgIDI3XG4gICAgOyAgMjFcbiAgICA7ICAxN1xuICAgIDsgIDE0XG4gICAgOyAgMTJcbiAgICA7ICAxMFxuICAgIDsgIDlcbiAgICA7ICA4XG4gICAgOyAgN1xuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgMzEgLT5cbiAgICBbfCAxMDczNzQxODIzXG4gICAgOyAgMTA3Mzc0MTgyM1xuICAgIDsgIDMyNzY3XG4gICAgOyAgMTAyM1xuICAgIDsgIDE4MVxuICAgIDsgIDYzXG4gICAgOyAgMzFcbiAgICA7ICAxOVxuICAgIDsgIDEzXG4gICAgOyAgMTBcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDQ2MTE2ODYwMTg0MjczODc5MDNMXG5cbmxldCBpbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDIxNDc0ODM2NDdMXG4gIDsgIDE2NjQ1MTBMXG4gIDsgIDQ2MzQwTFxuICA7ICA1NDA0TFxuICA7ICAxMjkwTFxuICA7ICA0NjNMXG4gIDsgIDIxNUxcbiAgOyAgMTE4TFxuICA7ICA3M0xcbiAgOyAgNDlMXG4gIDsgIDM1TFxuICA7ICAyN0xcbiAgOyAgMjFMXG4gIDsgIDE3TFxuICA7ICAxNExcbiAgOyAgMTJMXG4gIDsgIDEwTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuXG5sZXQgaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAzMDM3MDAwNDk5TFxuICA7ICAyMDk3MTUxTFxuICA7ICA1NTEwOExcbiAgOyAgNjIwOExcbiAgOyAgMTQ0OExcbiAgOyAgNTExTFxuICA7ICAyMzRMXG4gIDsgIDEyN0xcbiAgOyAgNzhMXG4gIDsgIDUyTFxuICA7ICAzOExcbiAgOyAgMjhMXG4gIDsgIDIyTFxuICA7ICAxOExcbiAgOyAgMTVMXG4gIDsgIDEzTFxuICA7ICAxMUxcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgfF1cblxubGV0IGludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtMzAzNzAwMDQ5OUxcbiAgOyAgLTIwOTcxNTFMXG4gIDsgIC01NTEwOExcbiAgOyAgLTYyMDhMXG4gIDsgIC0xNDQ4TFxuICA7ICAtNTExTFxuICA7ICAtMjM0TFxuICA7ICAtMTI3TFxuICA7ICAtNzhMXG4gIDsgIC01MkxcbiAgOyAgLTM4TFxuICA7ICAtMjhMXG4gIDsgIC0yMkxcbiAgOyAgLTE4TFxuICA7ICAtMTVMXG4gIDsgIC0xM0xcbiAgOyAgLTExTFxuICA7ICAtOUxcbiAgOyAgLThMXG4gIDsgIC03TFxuICA7ICAtN0xcbiAgOyAgLTZMXG4gIDsgIC02TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0xTFxuICB8XVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgbmVnYXRpdmVfZXhwb25lbnQgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiZXhwb25lbnQgY2FuIG5vdCBiZSBuZWdhdGl2ZVwiICgpXG5sZXQgb3ZlcmZsb3cgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiaW50ZWdlciBvdmVyZmxvdyBpbiBwb3dcIiAoKVxuXG4oKiBUbyBpbXBsZW1lbnQgW2ludDY0X3Bvd10sIHdlIHVzZSBDIGNvZGUgcmF0aGVyIHRoYW4gT0NhbWwgdG8gZWxpbWluYXRlIGFsbG9jYXRpb24uICopXG5leHRlcm5hbCBpbnRfbWF0aF9pbnRfcG93IDogaW50IC0+IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGludF9tYXRoX2ludDY0X3BvdyA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViXCJcblxubGV0IGludF9wb3cgYmFzZSBleHBvbmVudCA9XG4gIGlmIGV4cG9uZW50IDwgMCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFcbiAgJiYgKGV4cG9uZW50ID4gNjNcbiAgICAgIHx8IGFicyBiYXNlID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLihleHBvbmVudCkpXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIEludDY0X3dpdGhfY29tcGFyaXNvbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuSW50NjRcblxuICBleHRlcm5hbCAoIDwgKSA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoID49ICkgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5lbmRcblxuKCogd2UgZG9uJ3QgZG8gW2Fic10gaW4gaW50NjQgY2FzZSB0byBhdm9pZCBhbGxvY2F0aW9uICopXG5sZXQgaW50NjRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBsZXQgb3BlbiBJbnQ2NF93aXRoX2NvbXBhcmlzb25zIGluXG4gIGlmIGV4cG9uZW50IDwgMEwgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgKGJhc2UgPiAxTCB8fCBiYXNlIDwgLTFMKVxuICAmJiAoZXhwb25lbnQgPiA2M0xcbiAgICAgIHx8IChiYXNlID49IDBMXG4gICAgICAgICAgJiYgYmFzZVxuICAgICAgICAgICAgID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudCkpXG4gICAgICB8fCAoYmFzZSA8IDBMXG4gICAgICAgICAgJiYgYmFzZVxuICAgICAgICAgICAgIDwgUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudCkpKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubGV0IGludDYzX3Bvd19vbl9pbnQ2NCBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMUxcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCBhYnMgYmFzZVxuICAgICAgICAgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICApXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludDY0X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgdHlwZSBNYWtlX2FyZyA9IHNpZ1xuICB0eXBlIHRcblxuICBpbmNsdWRlIEZsb2F0YWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIH4tICkgOiB0IC0+IHRcblxuICBpbmNsdWRlIENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIE1ha2UgKFggOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgb3BlbiBYXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gWC5yZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgb25lID0gb2ZfaW50X2V4biAxXG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gICgqKiBmbG9hdCBkaXZpc2lvbiBvZiBpbnRlZ2VycyAqKVxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGxldCByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPSBpIC0gKGkgJSBtb2R1bHVzKVxuXG4gIGxldCByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBpZiByZW1haW5kZXIgPSB6ZXJvIHRoZW4gaSBlbHNlIGkgKyBtb2R1bHVzIC0gcmVtYWluZGVyXG4gIDs7XG5cbiAgbGV0IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgaWYgaSA9IHplcm9cbiAgICB0aGVuIHplcm9cbiAgICBlbHNlIGlmIGkgPiB6ZXJvXG4gICAgdGhlbiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgZWxzZSByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuXG4gIGxldCByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPVxuICAgIGxldCByZW1haW5kZXIgPSBpICUgbW9kdWx1cyBpblxuICAgIGxldCBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA9IG1vZHVsdXMgLSByZW1haW5kZXIgaW5cbiAgICBpZiBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA8PSByZW1haW5kZXJcbiAgICB0aGVuIGkgKyBtb2R1bHVzX21pbnVzX3JlbWFpbmRlclxuICAgIGVsc2UgaSAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgRG93biAtPiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgVXAgLT4gcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpbnRfcG93ID0gaW50X3Bvd1xuICBsZXQgaW50NjRfcG93ID0gaW50NjRfcG93XG4gIGxldCBpbnQ2M19wb3dfb25faW50NjQgPSBpbnQ2M19wb3dfb25faW50NjRcblxuICBtb2R1bGUgUG93X292ZXJmbG93X2JvdW5kcyA9IFBvd19vdmVyZmxvd19ib3VuZHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIEMgc3R1YiBmb3IgaW50IHBvcGNvdW50IHRvIHVzZSB0aGUgUE9QQ05UIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG5leHRlcm5hbCBpbnRfcG9wY291bnQgOiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudFwiIFtAQG5vYWxsb2NdXG5cbigqIFRvIG1haW50YWluIGphdmFzY3JpcHQgY29tcGF0aWJpbGl0eSBhbmQgZW5hYmxlIHVuYm94aW5nLCB3ZSBpbXBsZW1lbnQgcG9wY291bnQgaW5cbiAgIE9DYW1sIHJhdGhlciB0aGFuIHVzZSBDIHN0dWJzLiBJbXBsZW1lbnRhdGlvbiBhZGFwdGVkIGZyb206XG4gICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYW1taW5nX3dlaWdodCNFZmZpY2llbnRfaW1wbGVtZW50YXRpb24gKilcbmxldCBpbnQ2NF9wb3Bjb3VudCA9XG4gIGxldCBvcGVuIFN0ZGxpYi5JbnQ2NCBpblxuICBsZXQgKCArICkgPSBhZGQgaW5cbiAgbGV0ICggLSApID0gc3ViIGluXG4gIGxldCAoICogKSA9IG11bCBpblxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgaW5cbiAgbGV0ICggbGFuZCApID0gbG9nYW5kIGluXG4gIGxldCBtMSA9IDB4NTU1NTU1NTU1NTU1NTU1NUwgaW5cbiAgKCogMGIwMTAxMDEwMS4uLiAqKVxuICBsZXQgbTIgPSAweDMzMzMzMzMzMzMzMzMzMzNMIGluXG4gICgqIDBiMDAxMTAwMTEuLi4gKilcbiAgbGV0IG00ID0gMHgwZjBmMGYwZjBmMGYwZjBmTCBpblxuICAoKiAwYjAwMDAxMTExLi4uICopXG4gIGxldCBoMDEgPSAweDAxMDEwMTAxMDEwMTAxMDFMIGluXG4gICgqIDEgYml0IHNldCBwZXIgYnl0ZSAqKVxuICBmdW4gW0BpbmxpbmVdIHggLT5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgcGFpciBvZiBiaXRzICopXG4gICAgbGV0IHggPSB4IC0gKCh4IGxzciAxKSBsYW5kIG0xKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSA0IGJpdHMgKilcbiAgICBsZXQgeCA9ICh4IGxhbmQgbTIpICsgKCh4IGxzciAyKSBsYW5kIG0yKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSBieXRlICopXG4gICAgbGV0IHggPSAoeCArICh4IGxzciA0KSkgbGFuZCBtNCBpblxuICAgICgqIHN1bSB0aGUgYml0IGNvdW50cyBpbiB0aGUgdG9wIGJ5dGUgYW5kIHNoaWZ0IGl0IGRvd24gKilcbiAgICB0b19pbnQgKCh4ICogaDAxKSBsc3IgNTYpXG47O1xuXG5sZXQgaW50MzJfcG9wY291bnQgPVxuICAoKiBPbiA2NC1iaXQgc3lzdGVtcywgdGhpcyBpcyBmYXN0ZXIgdGhhbiBpbXBsZW1lbnRpbmcgdXNpbmcgW2ludDMyXSBhcml0aG1ldGljLiAqKVxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmTCBpblxuICBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKFN0ZGxpYi5JbnQ2NC5sb2dhbmQgKFN0ZGxpYi5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrKVxuOztcblxubGV0IG5hdGl2ZWludF9wb3Bjb3VudCA9XG4gIG1hdGNoIFN0ZGxpYi5OYXRpdmVpbnQuc2l6ZSB3aXRoXG4gIHwgMzIgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDMyX3BvcGNvdW50IChTdGRsaWIuTmF0aXZlaW50LnRvX2ludDMyIHgpXG4gIHwgNjQgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChTdGRsaWIuSW50NjQub2ZfbmF0aXZlaW50IHgpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2lnbjBcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFNpZ24wKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHRvX3N0cmluZ19odW0gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBcIm5lZ2F0aXZlXCJcbiAgfCBaZXJvIC0+IFwiemVyb1wiXG4gIHwgUG9zIC0+IFwicG9zaXRpdmVcIlxuOztcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTEuXG4gIHwgWmVybyAtPiAwLlxuICB8IFBvcyAtPiAxLlxuOztcblxubGV0IGZsaXAgPSBmdW5jdGlvblxuICB8IE5lZyAtPiBQb3NcbiAgfCBaZXJvIC0+IFplcm9cbiAgfCBQb3MgLT4gTmVnXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9IG9mX2ludCAodG9faW50IHQgKiB0b19pbnQgdCcpXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGF0IHRoZSBlbmQsIGFmdGVyIGFueVxuICAgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc29cbiAgIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpc1xuICAgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRfaW50ZlxuaW5jbHVkZSBJbnQwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgeCB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlIHggeVxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgdHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICB8IF8gLT4gUHJpbnRmLmZhaWx3aXRoZiBcIkludC5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbmVuZFxuXG5sZXQgbnVtX2JpdHMgPSBJbnRfY29udmVyc2lvbnMubnVtX2JpdHNfaW50XG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCB0b19mbG9hdCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBTdGRsaWIuaW50X29mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIFN0ZGxpYi5pbnRfb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIleFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIleFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiAodFtAbG9jYWxfb3B0XSkgLT4gKGludDMyW0Bsb2NhbF9vcHRdKSA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMl90cnVuYyA6IChpbnQzMltAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9pbnQ2NF90cnVuYyA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnRfdHJ1bmMgOiAobmF0aXZlaW50W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5cbmxldCBwcmVkIGkgPSBpIC0gMVxubGV0IHN1Y2MgaSA9IGkgKyAxXG5sZXQgdG9faW50IGkgPSBpXG5sZXQgdG9faW50X2V4biA9IHRvX2ludFxubGV0IG9mX2ludCBpID0gaVxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IFN0ZGxpYi5taW5faW50XG5sZXQgbWF4X3ZhbHVlXzMwX2JpdHMgPSAweDNGRkZfRkZGRlxubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19pbnRcbmxldCBvZl9pbnQzMl9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnQzMiA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IHRvX2ludDY0ID0gQ29udi5pbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBhYnMgeCA9IGFicyB4XG5cbigqIG5vdGUgdGhhdCByZW0gaXMgbm90IHNhbWUgYXMgJSAqKVxubGV0IHJlbSBhIGIgPSBhIG1vZCBiXG5sZXQgaW5jciA9IFN0ZGxpYi5pbmNyXG5sZXQgZGVjciA9IFN0ZGxpYi5kZWNyXG5sZXQgc2hpZnRfcmlnaHQgYSBiID0gYSBhc3IgYlxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYSBiID0gYSBsc3IgYlxubGV0IHNoaWZ0X2xlZnQgYSBiID0gYSBsc2wgYlxubGV0IGJpdF9ub3QgYSA9IGxub3QgYVxubGV0IGJpdF9vciBhIGIgPSBhIGxvciBiXG5sZXQgYml0X2FuZCBhIGIgPSBhIGxhbmQgYlxubGV0IGJpdF94b3IgYSBiID0gYSBseG9yIGJcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludF9wb3dcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCAtIDEgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggKyAxXG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4IC0gKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCAoeCAtIDEpID0gMFxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoKiBOb3RlIHRoYXQgd2UgcGFzcyB0aGUgdGFnZ2VkIGludCBoZXJlLiBTZWUgaW50X21hdGhfc3R1YnMuYyBmb3IgZGV0YWlscyBvbiB3aHlcbiAgICAgICAgICB0aGlzIGlzIGNvcnJlY3QuICopXG4gICAgaW50XG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2Nsel91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludFtAdW50YWdnZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jdHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBpZiBpID0gMSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoaSAtIDEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBzaWduID0gU2lnbi5vZl9pbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludF9wb3Bjb3VudFxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVhZGRpbnRcIlxuICBleHRlcm5hbCAoIC0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJXN1YmludFwiXG4gIGV4dGVybmFsICggKiApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlbXVsaW50XCJcbiAgZXh0ZXJuYWwgKCAvICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVkaXZpbnRcIlxuICBleHRlcm5hbCAoIH4tICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBtb2R1bGUgRiA9IEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgRlxuXG4gIGV4dGVybmFsIGJzd2FwMTYgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVic3dhcDE2XCJcblxuICAoKiBUaGVzZSBpbmxpbmVkIHZlcnNpb25zIG9mICglKSwgKC8lKSwgYW5kICgvLykgcGVyZm9ybSBiZXR0ZXIgdGhhbiB0aGVpciBmdW5jdG9yaXplZFxuICAgICBjb3VudGVycGFydHMgaW4gW0ZdIChzZWUgYmVuY2htYXJrcyBiZWxvdykuXG5cbiAgICAgVGhlIHJlYXNvbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZWQgaW4gW0ludF0gYnV0IG5vdCBpbiBhbnkgb2YgdGhlIG90aGVyIGludGVnZXJcbiAgICAgbW9kdWxlcyBpcyB0aGF0IHRoZXkgZXhpc3RlZCBpbiBbSW50XSBhbmQgW0ludF0gYWxvbmUgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZlxuICAgICB0aGUgW0ludF9tYXRoLk1ha2VdIGZ1bmN0b3IsIGFuZCB3ZSBkaWRuJ3Qgd2FudCB0byBkZWdyYWRlIHRoZWlyIHBlcmZvcm1hbmNlLlxuXG4gICAgIFdlIHdvbid0IHByZS1lbXB0aXZlbHkgZG8gdGhlIHNhbWUgZm9yIG5ldyBmdW5jdGlvbnMsIHVubGVzcyBzb21lb25lIGNhcmVzLCBvbiBhIGNhc2VcbiAgICAgYnkgY2FzZSBmYXNoaW9uLiAgKilcblxuICBsZXQgKCAlICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gcmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYW5kaW50XCJcbiAgZXh0ZXJuYWwgKCBsb3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJW9yaW50XCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG4gIGxldCBsbm90ID0gbG5vdFxuXG4gIGV4dGVybmFsICggbHNsICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuICBleHRlcm5hbCAoIGxzciApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlbHNyaW50XCJcbiAgZXh0ZXJuYWwgKCBhc3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFzcmludFwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnRdIGFuZCBbSW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9fRiA9IE8uRlxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBpbmNsdWRpbmcgZnVuY3RvclxuICAgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFVjaGFyMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5VY2hhclwiXG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gSGFzaC5mb2xkX2ludCBzdGF0ZSAodG9faW50IHQpXG4gIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGxldCB0b19zdHJpbmcgdCA9IFByaW50Zi5zcHJpbnRmIFwiVSslMDRYXCIgKHRvX2ludCB0KVxuXG4gICgqIERvIG5vdCBhY3R1YWxseSBleHBvcnQgdGhpcy4gU2VlIGRpc2N1c3Npb24gaW4gdGhlIC5tbGkgKilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIlUrJVhcIiAoZnVuIGkgLT4gVWNoYXIwLm9mX2ludCBpKSB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gb2YgdGhlIGZvcm0gVStYWFhYIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgaW50X2lzX3NjYWxhciA9IGlzX3ZhbGlkXG5cbmxldCBzdWNjX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5zdWNjIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnN1Y2NfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHN1Y2MgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAuc3VjYyBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBwcmVkX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5wcmVkIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnByZWRfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHByZWQgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAucHJlZCBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBvZl9zY2FsYXIgaSA9IGlmIGludF9pc19zY2FsYXIgaSB0aGVuIFNvbWUgKHVuc2FmZV9vZl9pbnQgaSkgZWxzZSBOb25lXG5cbmxldCBvZl9zY2FsYXJfZXhuIGkgPVxuICBpZiBpbnRfaXNfc2NhbGFyIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJVY2hhci5vZl9pbnRfZXhuIGdvdCBhIGludmFsaWQgVW5pY29kZSBzY2FsYXIgdmFsdWU6ICUwNFhcIiBpICgpXG47O1xuXG5sZXQgdG9fc2NhbGFyIHQgPSBVY2hhcjAudG9faW50IHRcbmxldCB0b19jaGFyIGMgPSBpZiBpc19jaGFyIGMgdGhlbiBTb21lICh1bnNhZmVfdG9fY2hhciBjKSBlbHNlIE5vbmVcblxubGV0IHRvX2NoYXJfZXhuIGMgPVxuICBpZiBpc19jaGFyIGNcbiAgdGhlbiB1bnNhZmVfdG9fY2hhciBjXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIudG9fY2hhcl9leG4gZ290IGEgbm9uIGxhdGluLTEgY2hhcmFjdGVyOiBVKyUwNFhcIiAodG9faW50IGMpICgpXG47O1xuXG5sZXQgdXRmOF9ieXRlX2xlbmd0aCB1Y2hhciA9XG4gIGxldCBjb2RlcG9pbnQgPSB0b19zY2FsYXIgdWNoYXIgaW5cbiAgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MDBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIDRcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYSkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMDNfIGJfXzAwNF8pXG4gICAgICA6ICAoKGFfXzAwM18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDA0XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAwM18sIGJfXzAwNF8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyBUIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlRcIlxuOztcblxuW0BAQGVuZF1cblxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgc3ltICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYiwgYSkgdCA9IFRcbmxldCB0cmFucyAodHlwZSBhIGIgYykgKFQgOiAoYSwgYikgdCkgKFQgOiAoYiwgYykgdCkgOiAoYSwgYykgdCA9IFRcbmxldCBjb252ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgKGEgOiBhKSA6IGIgPSBhXG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG5cbm1vZHVsZSBMaWZ0MiAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGExIGIxIGEyIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdClcbiAgICA6ICgoYTEsIGEyKSBYLnQsIChiMSwgYjIpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubW9kdWxlIExpZnQzIChYIDogc2lnXG4gICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMiBhMyBiMykgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIChUIDogKGEzLCBiMykgdClcbiAgICA6ICgoYTEsIGEyLCBhMykgWC50LCAoYjEsIGIyLCBiMykgWC50KSB0XG4gICAgPVxuICAgIFRcbiAgOztcbmVuZFxuXG5sZXQgZGV0dXBsZTIgKHR5cGUgYTEgYTIgYjEgYjIpIChUIDogKGExICogYTIsIGIxICogYjIpIHQpIDogKGExLCBiMSkgdCAqIChhMiwgYjIpIHQgPVxuICBULCBUXG47O1xuXG5sZXQgdHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdCkgOiAoYTEgKiBhMiwgYjEgKiBiMikgdCA9IFRcblxubW9kdWxlIHR5cGUgSW5qZWN0aXZlID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBzdHJpcCA6ICgnYSB0LCAnYiB0KSBlcXVhbCAtPiAoJ2EsICdiKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZTIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHRcblxuICB2YWwgc3RyaXAgOiAoKCdhMSwgJ2EyKSB0LCAoJ2IxLCAnYjIpIHQpIGVxdWFsIC0+ICgnYTEsICdiMSkgZXF1YWwgKiAoJ2EyLCAnYjIpIGVxdWFsXG5lbmRcblxubW9kdWxlIENvbXBvc2l0aW9uX3ByZXNlcnZlc19pbmplY3Rpdml0eSAoTTEgOiBJbmplY3RpdmUpIChNMiA6IEluamVjdGl2ZSkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgTTEudCBNMi50XG5cbiAgbGV0IHN0cmlwIGUgPSBNMS5zdHJpcCAoTTIuc3RyaXAgZSlcbmVuZFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVpZCA9IEludFxuXG4gIG1vZHVsZSBXaXRuZXNzID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSAuLlxuICAgICAgdHlwZSB0eXBlX3dpdG5lc3NfaW50ID0gWyBgdHlwZV93aXRuZXNzIG9mIGludCBdIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICBsZXQgc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50ID1cbiAgICAgICAgKGZ1biAoYHR5cGVfd2l0bmVzcyB2X18wMDVfKSAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ0eXBlX3dpdG5lc3NcIjsgc2V4cF9vZl9pbnQgdl9fMDA1XyBdXG4gICAgICAgICAgIDogdHlwZV93aXRuZXNzX2ludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICA7O1xuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICBsZXQgc2V4cF9vZl90IF9zZXhwX29mX2EgdCA9XG4gICAgICAgIGB0eXBlX3dpdG5lc3NcbiAgICAgICAgICAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWRcbiAgICAgICAgICAgICAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIHQpKVxuICAgICAgICB8PiBzZXhwX29mX3R5cGVfd2l0bmVzc19pbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgXyBLZXkudCArPSBLZXkgOiB0IEtleS50XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIGxldCBzZXhwX29mX3QgKHR5cGUgYSkgc2V4cF9vZl9hIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBNLktleSB8PiBLZXkuc2V4cF9vZl90IHNleHBfb2ZfYVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIHQpICgpID1cbiAgICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgOztcblxuICAgIGxldCB1aWQgKHR5cGUgYSkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAgIFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgTS5LZXkpXG4gICAgOztcblxuICAgICgqIFdlIHdhbnQgYSBjb25zdGFudCBhbGxvY2F0ZWQgb25jZSB0aGF0IFtzYW1lXSBjYW4gcmV0dXJuIHdoZW5ldmVyIGl0IGdldHMgdGhlIHNhbWVcbiAgICAgICB3aXRuZXNzZXMuICBJZiB3ZSB3cml0ZSB0aGUgY29uc3RhbnQgaW5zaWRlIHRoZSBib2R5IG9mIFtzYW1lXSwgdGhlIG5hdGl2ZS1jb2RlXG4gICAgICAgY29tcGlsZXIgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcgYW5kIGxpZnQgaXQgb3V0LiAgQnV0IGZvciBjbGFyaXR5IGFuZCByb2J1c3RuZXNzLFxuICAgICAgIHdlIGRvIGl0IG91cnNlbHZlcy4gKilcbiAgICBsZXQgc29tZV90ID0gU29tZSBUXG5cbiAgICBsZXQgc2FtZSAodHlwZSBhIGIpIChhIDogYSB0KSAoYiA6IGIgdCkgOiAoYSwgYikgZXF1YWwgb3B0aW9uID1cbiAgICAgIGxldCBtb2R1bGUgQSA9ICh2YWwgYSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBCID0gKHZhbCBiIDogUyB3aXRoIHR5cGUgdCA9IGIpIGluXG4gICAgICBtYXRjaCBBLktleSB3aXRoXG4gICAgICB8IEIuS2V5IC0+IHNvbWVfdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICA7O1xuICBlbmRcblxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3aXRuZXNzIDogJ2EgV2l0bmVzcy50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgOyB0b19zZXhwIDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgXyB7IHdpdG5lc3M7IG5hbWU7IHRvX3NleHAgfSA6IFNleHAudCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gQXRvbSBuYW1lXG4gICAgZWxzZVxuICAgICAgTGlzdFxuICAgICAgICBbIExpc3QgWyBBdG9tIFwibmFtZVwiOyBBdG9tIG5hbWUgXVxuICAgICAgICA7IExpc3QgWyBBdG9tIFwid2l0bmVzc1wiOyB3aXRuZXNzIHw+IFdpdG5lc3Muc2V4cF9vZl90IHRvX3NleHAgXVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3NleHAgdCA9IHQudG9fc2V4cFxuICBsZXQgbmFtZSB0ID0gdC5uYW1lXG4gIGxldCBjcmVhdGUgfm5hbWUgdG9fc2V4cCA9IHsgd2l0bmVzcyA9IFdpdG5lc3MuY3JlYXRlICgpOyBuYW1lOyB0b19zZXhwIH1cbiAgbGV0IHVpZCB0ID0gV2l0bmVzcy51aWQgdC53aXRuZXNzXG4gIGxldCBoYXNoIHQgPSB1aWQgdFxuICBsZXQgaGFzaF9mb2xkX3QgcyB0ID0gaGFzaF9mb2xkX2ludCBzICh1aWQgdClcbiAgbGV0IHNhbWVfd2l0bmVzcyB0MSB0MiA9IFdpdG5lc3Muc2FtZSB0MS53aXRuZXNzIHQyLndpdG5lc3NcbiAgbGV0IHNhbWUgdDEgdDIgPSBPcHRpb24uaXNfc29tZSAoc2FtZV93aXRuZXNzIHQxIHQyKVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIHQxIHQyID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgdDEgdDIgd2l0aFxuICAgIHwgU29tZSB3IC0+IHdcbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIlR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBnb3QgZGlmZmVyZW50IGlkc1wiXG4gICAgICAgICAgIFsgKCBcIlwiXG4gICAgICAgICAgICAgLCBzZXhwX29mX3BhaXIgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHQxLCB0MilcbiAgICAgICAgICAgICApXG4gICAgICAgICAgIF0pXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogWydhIENoZWFwX29wdGlvbi50XSBpcyBsaWtlIFsnYSBvcHRpb25dLCBidXQgaXQgZG9lc24ndCBib3ggW3NvbWUgX10gdmFsdWVzLlxuXG4gICAgVGhlcmUgYXJlIHNldmVyYWwgdGhpbmdzIHRoYXQgYXJlIHVuc2FmZSBhYm91dCBpdDpcblxuICAgIC0gW2Zsb2F0IHQgYXJyYXldIChvciBhbnkgYXJyYXktYmFja2VkIGNvbnRhaW5lcikgaXMgbm90IG1lbW9yeS1zYWZlXG4gICAgICBiZWNhdXNlIGZsb2F0IGFycmF5IG9wdGltaXphdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB1bmJveGVkIG9wdGlvblxuICAgICAgb3B0aW1pemF0aW9uLiBZb3UgaGF2ZSB0byB1c2UgW1VuaWZvcm1fYXJyYXkudF0gaW5zdGVhZCBvZiBbYXJyYXldLlxuXG4gICAgLSBOZXN0ZWQgb3B0aW9ucyAoWydhIHQgdF0pIGRvbid0IHdvcmsuIFRoZXkgYXJlIGJlbGlldmVkIHRvIGJlXG4gICAgICBtZW1vcnktc2FmZSwgYnV0IG5vdCBwYXJhbWV0cmljLlxuXG4gICAgLSBBIHJlY29yZCB3aXRoIFtmbG9hdCB0XXMgaW4gaXQgc2hvdWxkIGJlIHNhZmUsIGJ1dCBpdCdzIG9ubHkgW3RdIGJlaW5nXG4gICAgICBhYnN0cmFjdCB0aGF0IGdpdmVzIHlvdSBzYWZldHkuIElmIHRoZSBjb21waWxlciB3YXMgc21hcnQgZW5vdWdoIHRvIHBlZWtcbiAgICAgIHRocm91Z2ggdGhlIG1vZHVsZSBzaWduYXR1cmUgdGhlbiBpdCBjb3VsZCBkZWNpZGUgdG8gY29uc3RydWN0IGEgZmxvYXRcbiAgICAgIGFycmF5IGluc3RlYWQuICopXG5tb2R1bGUgQ2hlYXBfb3B0aW9uID0gc3RydWN0XG4gICgqIFRoaXMgaXMgdGFrZW4gZnJvbSBjb3JlLiBSYXRoZXIgdGhhbiBleHBvc2UgaXQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgYmFzZSwganVzdFxuICAgICBrZWVwIGEgY29weSBhcm91bmQgaGVyZS4gKilcbiAgbGV0IHBoeXNfc2FtZSAodHlwZSBhIGIpIChhIDogYSkgKGIgOiBiKSA9IHBoeXNfZXF1YWwgYSAoU3RkbGliLk9iai5tYWdpYyBiIDogYSlcblxuICBtb2R1bGUgVDAgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBub25lIDogXyB0XG4gICAgdmFsIHNvbWUgOiAnYSAtPiAnYSB0XG4gICAgdmFsIGlzX25vbmUgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc19zb21lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdmFsdWVfZXhuIDogJ2EgdCAtPiAnYVxuICAgIHZhbCB2YWx1ZV91bnNhZmUgOiAnYSB0IC0+ICdhXG4gICAgdmFsIGl0ZXJfc29tZSA6ICdhIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSArJ2EgdFxuXG4gICAgKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgICAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICAgICAgSXQgd291bGQgYmUgc2ltcGxlciB0byB1c2UgdGhpcyB2YWx1ZSBhcyBbbm9uZV0sIGJ1dCB3ZSB1c2UgYW4gaW1tZWRpYXRlIGluc3RlYWRcbiAgICAgICBiZWNhdXNlIGl0IGxldHMgdXMgYXZvaWQgY2FtbF9tb2RpZnkgd2hlbiBzZXR0aW5nIHRvIFtub25lXSwgbWFraW5nIGNlcnRhaW5cbiAgICAgICBiZW5jaG1hcmtzIHNpZ25pZmljYW50bHkgZmFzdGVyIChlLmcuIC4uL2JlbmNoL2FycmF5X3F1ZXVlLmV4ZSkuXG5cbiAgICAgICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBNb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlciBwbGFjZSB3aGVyZSB3ZSB3YW50XG4gICAgICAgaXQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgbWFraW5nIGl0IHNoYXJlZC4gKilcbiAgICBsZXQgbm9uZV9zdWJzdGl0dXRlIDogXyB0ID1cbiAgICAgIFN0ZGxpYi5PYmoub2JqIChTdGRsaWIuT2JqLm5ld19ibG9jayBTdGRsaWIuT2JqLmFic3RyYWN0X3RhZyAxKVxuICAgIDs7XG5cbiAgICBsZXQgbm9uZSA6IF8gdCA9XG4gICAgICAoKiBUaGUgbnVtYmVyIHdhcyBwcm9kdWNlZCBieVxuICAgICAgICAgWzwgL2Rldi91cmFuZG9tIHRyIC1jIC1kICcxMjM0NTY3ODkwYWJjZGVmJyB8IGhlYWQgLWMgMTZdLlxuXG4gICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IGEgcmFuZG9tIG51bWJlciB3aWxsIGhhdmUgbG93ZXIgcHJvYmFiaWxpdHkgdG8gY29sbGlkZSB3aXRoXG4gICAgICAgICBhbnl0aGluZyB0aGFuIGFueSBudW1iZXIgd2UgY2FuIGNob29zZSBvdXJzZWx2ZXMuXG5cbiAgICAgICAgIFdlIGFyZSB1c2luZyBhIHBvbHltb3JwaGljIHZhcmlhbnQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyIGNvbnN0YW50IGJlY2F1c2UgdGhlcmVcbiAgICAgICAgIGlzIGEgY29tcGlsZXIgYnVnIHdoZXJlIGl0IHdyb25nbHkgYXNzdW1lcyB0aGF0IHRoZSByZXN1bHQgb2YgW2lmIF8gdGhlbiBjIGVsc2VcbiAgICAgICAgIHldIGlzIG5vdCBhIHBvaW50ZXIgaWYgW2NdIGlzIGFuIGludGVnZXIgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgVGhpcyBpcyBiZWluZ1xuICAgICAgICAgZml4ZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL3B1bGwvNTU1LiAgVGhlIFwibWVtb3J5IGNvcnJ1cHRpb25cIiB0ZXN0XG4gICAgICAgICBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIGlzc3VlLiAgKilcbiAgICAgIFN0ZGxpYi5PYmoubWFnaWMgYHg2ZThlZTM0NzhlMWQ3NDQ5XG4gICAgOztcblxuICAgIGxldCBpc19ub25lIHggPSBwaHlzX2VxdWFsIHggbm9uZVxuICAgIGxldCBpc19zb21lIHggPSBub3QgKHBoeXNfZXF1YWwgeCBub25lKVxuXG4gICAgbGV0IHNvbWUgKHR5cGUgYSkgKHggOiBhKSA6IGEgdCA9XG4gICAgICBpZiBwaHlzX3NhbWUgeCBub25lIHRoZW4gbm9uZV9zdWJzdGl0dXRlIGVsc2UgU3RkbGliLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV91bnNhZmUgKHR5cGUgYSkgKHggOiBhIHQpIDogYSA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHggbm9uZV9zdWJzdGl0dXRlIHRoZW4gU3RkbGliLk9iai5tYWdpYyBub25lIGVsc2UgU3RkbGliLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV9leG4geCA9XG4gICAgICBpZiBpc19zb21lIHhcbiAgICAgIHRoZW4gdmFsdWVfdW5zYWZlIHhcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuOiB0aGUgZWxlbWVudCBpcyBbTm9uZV1cIlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcl9zb21lIHQgfmYgPSBpZiBpc19zb21lIHQgdGhlbiBmICh2YWx1ZV91bnNhZmUgdClcbiAgZW5kXG5cbiAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuXG4gICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgfCBTb21lIHggLT4gc29tZSB4XG4gICAgOztcblxuICAgIGxldFtAaW5saW5lXSB0b19vcHRpb24geCA9IGlmIGlzX3NvbWUgeCB0aGVuIFNvbWUgKHZhbHVlX3Vuc2FmZSB4KSBlbHNlIE5vbmVcbiAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19vcHRpb25cbiAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9vcHRpb25cblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgPVxuICAgICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoT3B0aW9uLnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUMVxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMSAoT3B0aW9uKSAoVDEpXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgQ2hlYXBfb3B0aW9uLnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gX29mX2FfXzAwMV8geF9fMDAzXyAtPlxuICBVbmlmb3JtX2FycmF5LnRfb2Zfc2V4cCAoQ2hlYXBfb3B0aW9uLnRfb2Zfc2V4cCBfb2ZfYV9fMDAxXykgeF9fMDAzX1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDA0XyB4X18wMDVfIC0+XG4gIFVuaWZvcm1fYXJyYXkuc2V4cF9vZl90IChDaGVhcF9vcHRpb24uc2V4cF9vZl90IF9vZl9hX18wMDRfKSB4X18wMDVfXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gIFVuaWZvcm1fYXJyYXkudF9zZXhwX2dyYW1tYXIgKENoZWFwX29wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyKVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVtcHR5ID0gVW5pZm9ybV9hcnJheS5lbXB0eVxubGV0IGNyZWF0ZSB+bGVuID0gVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbiBDaGVhcF9vcHRpb24ubm9uZVxubGV0IGluaXQgbiB+ZiA9IFVuaWZvcm1fYXJyYXkuaW5pdCBuIH5mOihmdW4gaSAtPiBDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIChmIGkpKSBbQG5vbnRhaWxdXG5sZXQgaW5pdF9zb21lIG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLnNvbWUgKGYgaSkpIFtAbm9udGFpbF1cbmxldCBsZW5ndGggPSBVbmlmb3JtX2FycmF5Lmxlbmd0aFxubGV0W0BpbmxpbmVdIGdldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgZ2V0X3NvbWVfZXhuIHQgaSA9IENoZWFwX29wdGlvbi52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBpc19ub25lIHQgaSA9IENoZWFwX29wdGlvbi5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IHNldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHNldF9zb21lIHQgaSB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHNldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSBDaGVhcF9vcHRpb24ubm9uZVxubGV0IHN3YXAgdCBpIGogPSBVbmlmb3JtX2FycmF5LnN3YXAgdCBpIGpcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IENoZWFwX29wdGlvbi50b19vcHRpb24gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX2dldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgdW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgdCBpID1cbiAgQ2hlYXBfb3B0aW9uLnZhbHVlX3Vuc2FmZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbjs7XG5cbmxldCB1bnNhZmVfaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSB4ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHVuc2FmZV9zZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5zb21lIHgpXG5sZXQgdW5zYWZlX3NldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcblxubGV0IGNsZWFyIHQgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldF9ub25lIHQgaVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgaW5wdXQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGlucHV0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBpbnB1dCBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlciBpbnB1dCB+ZiA9IGl0ZXJpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5cbmxldCBmb2xkaSBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBpdGVyaSBpbnB1dCB+ZjooZnVuIGkgZWxlbSAtPiBhY2MgOj0gZiBpICFhY2MgZWxlbSk7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkIGlucHV0IH5pbml0IH5mID0gZm9sZGkgaW5wdXQgfmluaXQgfmY6KGZ1biAoXyA6IGludCkgYWNjIHggLT4gZiBhY2MgeCkgW0Bub250YWlsXVxuXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyLk1ha2VfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsIF8pIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbHQgPSAnYSBvcHRpb25cblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbGVuZ3RoID0gVW5pZm9ybV9hcnJheS5sZW5ndGhcblxubGV0IG1hcGkgaW5wdXQgfmYgPVxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW46KGxlbmd0aCBpbnB1dCkgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gdW5zYWZlX3NldCBvdXRwdXQgaSAoZiBpIGVsZW0pKTtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbWFwIGlucHV0IH5mID0gbWFwaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSBlbGVtIC0+IGYgZWxlbSkgW0Bub250YWlsXVxuXG5sZXQgbWFwX3NvbWUgaW5wdXQgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0IGluXG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbiBpblxuICBsZXQgKCkgPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgb3B0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGlucHV0IGkgaW5cbiAgICAgIENoZWFwX29wdGlvbi5pdGVyX3NvbWUgb3B0IH5mOihmdW4geCAtPiB1bnNhZmVfc2V0X3NvbWUgb3V0cHV0IGkgKGYgeCkpXG4gICAgZG9uZVxuICBpblxuICBvdXRwdXRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcblxubGV0IG9mX2FycmF5X3NvbWUgYXJyYXkgPVxuICBpbml0X3NvbWUgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxuaW5jbHVkZSBCbGl0Lk1ha2UxX2dlbmVyaWMgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5ID0gVW5pZm9ybV9hcnJheS5jb3B5XG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlX2NoZWFwX29wdGlvbiA9IENoZWFwX29wdGlvblxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhY2tfaW50ZlxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIFtEZXF1ZV0gaW4gdGhhdCBpdCB1c2VzIGFuIGFycmF5IG9mIFsnYV0gYW5kXG4gICBhIG11dGFibGUgW2ludF0gdG8gaW5kaWNhdGUgd2hhdCBpbiB0aGUgYXJyYXkgaXMgdXNlZC4gIFdlIGNob29zZSB0byBpbXBsZW1lbnQgW1N0YWNrXVxuICAgZGlyZWN0bHkgcmF0aGVyIHRoYW4gb24gdG9wIG9mIFtEZXF1ZV0gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBFLmcuIGEgc2ltcGxlXG4gICBtaWNyb2JlbmNobWFyayBzaG93cyB0aGF0IHB1c2gvcG9wIGlzIGFib3V0IDIwJSBmYXN0ZXIuICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV8geyBsZW5ndGggPSBsZW5ndGhfXzAwM187IGVsdHMgPSBlbHRzX18wMDVfIH0gLT5cbiAgbGV0IGJuZHNfXzAwMl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDZfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMDVfIGluXG4gICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwM18gaW5cbiAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gIGluXG4gIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgc2V4cF9vZl90ID0gYFJlYm91bmRfbGF0ZXJcbmxldCBfID0gc2V4cF9vZl90XG5sZXQgY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgKHsgbGVuZ3RoOyBlbHRzIH0gYXMgdCkgOiB1bml0ID1cbiAgdHJ5XG4gICAgYXNzZXJ0ICgwIDw9IGxlbmd0aCAmJiBsZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgICAgaW52YXJpYW50X2EgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBpKVxuICAgIGRvbmU7XG4gICAgKCogV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHVudXNlZCBlbGVtZW50cyBhcmUgdW5zZXQgdG8gYXZvaWQgYSBzcGFjZVxuICAgICAgIGxlYWsuICopXG4gICAgZm9yIGkgPSBsZW5ndGggdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzIC0gMSBkb1xuICAgICAgYXNzZXJ0IChub3QgKE9wdGlvbl9hcnJheS5pc19zb21lIGVsdHMgaSkpXG4gICAgZG9uZVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJTdGFjay5pbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJleG5cIiwgZXhuIHw+IEV4bi5zZXhwX29mX3Q7IFwic3RhY2tcIiwgdCB8PiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9vcGFxdWUgXSlcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgKCkgOiBhIHQgPSB7IGxlbmd0aCA9IDA7IGVsdHMgPSBPcHRpb25fYXJyYXkuZW1wdHkgfVxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFRoZSBvcmRlciBpbiB3aGljaCBlbGVtZW50cyBhcmUgdmlzaXRlZCBoYXMgYmVlbiBjaG9zZW4gc28gYXMgdG8gYmUgYmFja3dhcmRzXG4gICBjb21wYXRpYmxlIHdpdGggW1N0ZGxpYi5TdGFja10gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICFyIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKVxuICBkb25lO1xuICAhclxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgZiAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IG1lbSA9IEMubWVtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgb2ZfbGlzdCAodHlwZSBhKSAobCA6IGEgbGlzdCkgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxcbiAgdGhlbiBjcmVhdGUgKClcbiAgZWxzZSAoXG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjooMiAqIGxlbmd0aCkgaW5cbiAgICBsZXQgciA9IHJlZiBsIGluXG4gICAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBhIDo6IGwgLT5cbiAgICAgICAgT3B0aW9uX2FycmF5LnNldF9zb21lIGVsdHMgaSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHsgbGVuZ3RoOyBlbHRzIH0pXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHJlc2l6ZSB0IHNpemUgPVxuICBsZXQgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOnNpemUgaW5cbiAgT3B0aW9uX2FycmF5LmJsaXQgfnNyYzp0LmVsdHMgfmRzdDphcnIgfnNyY19wb3M6MCB+ZHN0X3BvczowIH5sZW46dC5sZW5ndGg7XG4gIHQuZWx0cyA8LSBhcnJcbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBuZXdfY2FwYWNpdHkgPVxuICBsZXQgbmV3X2NhcGFjaXR5ID0gbWF4IG5ld19jYXBhY2l0eSAobGVuZ3RoIHQpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0IHRoZW4gcmVzaXplIHQgbmV3X2NhcGFjaXR5XG47O1xuXG5sZXQgcHVzaCB0IGEgPVxuICBpZiB0Lmxlbmd0aCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzIHRoZW4gcmVzaXplIHQgKDIgKiAodC5sZW5ndGggKyAxKSk7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmVsdHMgdC5sZW5ndGggYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IHQubGVuZ3RoIC0gMSBpblxuICBsZXQgcmVzdWx0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGk7XG4gIHQubGVuZ3RoIDwtIGk7XG4gIHJlc3VsdFxuOztcblxubGV0IHBvcF9lcnJvciA9IEVycm9yLm9mX3N0cmluZyBcIlN0YWNrLnBvcCBvZiBlbXB0eSBzdGFja1wiXG5sZXQgcG9wIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBvcF9ub25lbXB0eSB0KVxubGV0IHBvcF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBFcnJvci5yYWlzZSBwb3BfZXJyb3IgZWxzZSBwb3Bfbm9uZW1wdHkgdFxubGV0IHRvcF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgKHQubGVuZ3RoIC0gMSlcbmxldCB0b3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay50b3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHRvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh0b3Bfbm9uZW1wdHkgdClcbmxldCB0b3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgdG9wX2Vycm9yIGVsc2UgdG9wX25vbmVtcHR5IHRcbmxldCBjb3B5IHsgbGVuZ3RoOyBlbHRzIH0gPSB7IGxlbmd0aDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jb3B5IGVsdHMgfVxuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIHQubGVuZ3RoID4gMFxuICB0aGVuIChcbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDApXG47O1xuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBpZiB0Lmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGYgKHBvcF9ub25lbXB0eSB0KTtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKCkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgbWF0Y2ggZiAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IHB1c2ggdF9yZXN1bHQgeFxuICBkb25lO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgeCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkgaW5cbiAgICBpZiBmIHggdGhlbiBwdXNoIHRfcmVzdWx0IHhcbiAgZG9uZTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHdyaXRlX2luZGV4ID0gcmVmIDAgaW5cbiAgRXhuLnByb3RlY3RcbiAgICB+ZjooZnVuICgpIC0+XG4gICAgICBmb3IgcmVhZF9pbmRleCA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgIGxldCB4ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIHQuZWx0cyByZWFkX2luZGV4IGluXG4gICAgICAgIGlmIGYgeFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpZiAhd3JpdGVfaW5kZXggPCByZWFkX2luZGV4XG4gICAgICAgICAgdGhlbiBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyAhd3JpdGVfaW5kZXggeDtcbiAgICAgICAgICBpbmNyIHdyaXRlX2luZGV4KVxuICAgICAgZG9uZSlcbiAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICBmb3IgaSA9ICF3cml0ZV9pbmRleCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSB0LmVsdHMgaVxuICAgICAgZG9uZTtcbiAgICAgIHQubGVuZ3RoIDwtICF3cml0ZV9pbmRleCkgW0Bub250YWlsXVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgcHVzaCB0IHg7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhpcyBpcyBsaWZ0ZWQgb3V0IG9mIFtNXSBiZWNhdXNlIFtTb3VyY2VfY29kZV9wb3NpdGlvbjBdIGV4cG9ydHMgW1N0cmluZzBdXG4gICBhcyBbU3RyaW5nXSwgd2hpY2ggZG9lcyBub3QgZXhwb3J0IGEgaGFzaCBmdW5jdGlvbi4gKilcbmxldCBoYXNoX292ZXJyaWRlIHsgU3RkbGliLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9ID1cbiAgU3RyaW5nLmhhc2ggcG9zX2ZuYW1lXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2xudW1cbiAgbHhvciBJbnQuaGFzaCBwb3NfYm9sXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2NudW1cbjs7XG5cbm1vZHVsZSBNID0gc3RydWN0XG4gIGluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5cbiAgbGV0IGhhc2ggPSBoYXNoX292ZXJyaWRlXG5lbmRcblxuaW5jbHVkZSBNXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChNKVxuXG5sZXQgb2ZfcG9zIChwb3NfZm5hbWUsIHBvc19sbnVtLCBwb3NfY251bSwgXykgPVxuICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sID0gMCB9XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdcbiAgICB8IFplcm9cbiAgICB8IFBvc1xuICAgIHwgTmFuXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbl9vcl9uYW4ubWwuVC50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIChmdW4gaHN2IGFyZyAtPlxuICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgIHwgTmFuIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgM1xuICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvczsgTmFuIF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25fb3JfbmFuXCJcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogVC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogVC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBULnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogVC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IFQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IG9mX3NpZ24gPSBmdW5jdGlvblxuICB8IFNpZ24uTmVnIC0+IE5lZ1xuICB8IFNpZ24uWmVybyAtPiBaZXJvXG4gIHwgU2lnbi5Qb3MgLT4gUG9zXG47O1xuXG5sZXQgdG9fc2lnbl9leG4gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBTaWduLk5lZ1xuICB8IFplcm8gLT4gU2lnbi5aZXJvXG4gIHwgUG9zIC0+IFNpZ24uUG9zXG4gIHwgTmFuIC0+IGludmFsaWRfYXJnIFwiQmFzZS5TaWduX29yX25hbi50b19zaWduX2V4bjogTmFuXCJcbjs7XG5cbmxldCBvZl9pbnQgbiA9IG9mX3NpZ24gKFNpZ24ub2ZfaW50IG4pXG5sZXQgdG9faW50X2V4biB0ID0gU2lnbi50b19pbnQgKHRvX3NpZ25fZXhuIHQpXG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuICB8IE5hbiAtPiBOYW5cbjs7XG5cbmxldCAoICogKSB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5hbiwgXyB8IF8sIE5hbiAtPiBOYW5cbiAgfCBfIC0+IG9mX3NpZ24gKFNpZ24uKCAqICkgKHRvX3NpZ25fZXhuIHQpICh0b19zaWduX2V4biB0JykpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFwibmVnYXRpdmVcIlxuICB8IFplcm8gLT4gXCJ6ZXJvXCJcbiAgfCBQb3MgLT4gXCJwb3NpdGl2ZVwiXG4gIHwgTmFuIC0+IFwibm90LWEtbnVtYmVyXCJcbjs7XG5cbigqIEluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgYW55IGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXRcbiAgIGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgYWxsIDogJ2EuICdhIGxpc3QgLT4gJ2EgdCBsaXN0ID1cbiAgZnVuIF9hbGxfb2ZfYSAtPlxuICBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICB8IGVudW1lcmF0ZV9fMDAxXyA6OiBsIC0+IG1hcCBsIChJbmNsIGVudW1lcmF0ZV9fMDAxXyA6OiBhY2MpXG4gICAgIGluXG4gICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgKFBweF9lbnVtZXJhdGVfbGliLkxpc3QuYXBwZW5kXG4gICAgICAgKGxldCByZWMgbWFwIGwgYWNjID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFBweF9lbnVtZXJhdGVfbGliLkxpc3QucmV2IGFjY1xuICAgICAgICAgIHwgZW51bWVyYXRlX18wMDJfIDo6IGwgLT4gbWFwIGwgKEV4Y2wgZW51bWVyYXRlX18wMDJfIDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbWFwIF9hbGxfb2ZfYSBbXSlcbiAgICAgICBbIFVuYm91bmRlZCBdKVxuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biAodHlwZSBhX18wMThfKSA6ICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxOF8pIC0+IFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfIHQpIC0+XG4gIGxldCBlcnJvcl9zb3VyY2VfXzAwNl8gPSBcIm1heWJlX2JvdW5kLm1sLnRcIiBpblxuICBmdW4gX29mX2FfXzAwM18gLT4gZnVuY3Rpb25cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgX3RhZ19fMDA5XykgOjogc2V4cF9hcmdzX18wMTBfKSBhc1xuICAgICAgX3NleHBfXzAwOF8gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxMF8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTFfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTJfID0gX29mX2FfXzAwM18gYXJnMF9fMDExXyBpblxuICAgICAgICAgSW5jbCByZXMwX18wMTJfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMDlfXG4gICAgICAgICAgIF9zZXhwX18wMDhfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICBfc2V4cF9fMDEzXyAtPlxuICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgbGV0IHJlczBfXzAxN18gPSBfb2ZfYV9fMDAzXyBhcmcwX18wMTZfIGluXG4gICAgICAgICBFeGNsIHJlczBfXzAxN19cbiAgICAgICB8IF8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDZfXG4gICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSAtPiBVbmJvdW5kZWRcbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ1bmJvdW5kZWRcIiB8IFwiVW5ib3VuZGVkXCIpIDo6IF8pIGFzXG4gICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICB8IHNleHBfXzAwNV8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biAodHlwZSBhX18wMjRfKSA6ICgoYV9fMDI0XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAyNF8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gIGZ1biBfb2ZfYV9fMDE5XyAtPiBmdW5jdGlvblxuICAgIHwgSW5jbCBhcmcwX18wMjBfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIxXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkluY2xcIjsgcmVzMF9fMDIxXyBdXG4gICAgfCBFeGNsIGFyZzBfXzAyMl8gLT5cbiAgICAgIGxldCByZXMwX18wMjNfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhjbFwiOyByZXMwX18wMjNfIF1cbiAgICB8IFVuYm91bmRlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmJvdW5kZWRcIlxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiSW5jbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXhjbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlVuYm91bmRlZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG50eXBlIGludGVydmFsX2NvbXBhcmlzb24gPVxuICB8IEJlbG93X2xvd2VyX2JvdW5kXG4gIHwgSW5fcmFuZ2VcbiAgfCBBYm92ZV91cHBlcl9ib3VuZFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaF1cblxubGV0IGludGVydmFsX2NvbXBhcmlzb25fb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMjdfID0gXCJtYXliZV9ib3VuZC5tbC5pbnRlcnZhbF9jb21wYXJpc29uXCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJiZWxvd19sb3dlcl9ib3VuZFwiIHwgXCJCZWxvd19sb3dlcl9ib3VuZFwiKSAtPiBCZWxvd19sb3dlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5fcmFuZ2VcIiB8IFwiSW5fcmFuZ2VcIikgLT4gSW5fcmFuZ2VcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIC0+IEFib3ZlX3VwcGVyX2JvdW5kXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IHNleHBfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IGludGVydmFsX2NvbXBhcmlzb24pXG47O1xuXG5sZXQgc2V4cF9vZl9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJCZWxvd19sb3dlcl9ib3VuZFwiXG4gICAgfCBJbl9yYW5nZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbl9yYW5nZVwiXG4gICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJBYm92ZV91cHBlcl9ib3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0IChpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW1hciA6IGludGVydmFsX2NvbXBhcmlzb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJCZWxvd19sb3dlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiSW5fcmFuZ2VcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkFib3ZlX3VwcGVyX2JvdW5kXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24gPVxuICAoU3RkbGliLmNvbXBhcmUgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gaW50KVxuOztcblxubGV0IChoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiA6XG4gICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEluX3JhbmdlIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoX2ludGVydmFsX2NvbXBhcmlzb24gOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBJbmNsIChmIGluY2wpXG4gIHwgRXhjbCBleGNsIC0+IEV4Y2wgKGYgZXhjbClcbiAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG47O1xuXG5sZXQgaXNfbG93ZXJfYm91bmQgdCB+b2ZfOmEgfmNvbXBhcmUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gY29tcGFyZSBpbmNsIGEgPD0gMFxuICB8IEV4Y2wgZXhjbCAtPiBjb21wYXJlIGV4Y2wgYSA8IDBcbiAgfCBVbmJvdW5kZWQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX3VwcGVyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgYSBpbmNsIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBhIGV4Y2wgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlID1cbiAgbWF0Y2ggbG93ZXIgd2l0aFxuICB8IFVuYm91bmRlZCAtPiBmYWxzZVxuICB8IEluY2wgbG93ZXIgfCBFeGNsIGxvd2VyIC0+XG4gICAgKG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgICAgfCBJbmNsIHVwcGVyIHwgRXhjbCB1cHBlciAtPiBjb21wYXJlIGxvd2VyIHVwcGVyID4gMClcbjs7XG5cbmxldCBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIGlmIGJvdW5kc19jcm9zc2VkIH5sb3dlciB+dXBwZXIgfmNvbXBhcmVcbiAgdGhlbiBmYWlsd2l0aCBcIk1heWJlX2JvdW5kLmNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuOiBsb3dlciBib3VuZCA+IHVwcGVyIGJvdW5kXCJcbjs7XG5cbmxldCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZTtcbiAgaWYgbm90IChpc19sb3dlcl9ib3VuZCBsb3dlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQmVsb3dfbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBub3QgKGlzX3VwcGVyX2JvdW5kIHVwcGVyIH5vZl86YSB+Y29tcGFyZSlcbiAgdGhlbiBBYm92ZV91cHBlcl9ib3VuZFxuICBlbHNlIEluX3JhbmdlXG47O1xuXG5sZXQgaW50ZXJ2YWxfY29udGFpbnNfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSA9XG4gIG1hdGNoIGNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSB3aXRoXG4gIHwgSW5fcmFuZ2UgLT4gdHJ1ZVxuICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIE9yX2R1cGxpY2F0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIFsgYE9rIG9mICdhXG4gICAgfCBgRHVwbGljYXRlXG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgfCBgT2sgX2xlZnRfXzAwM18sIGBPayBfcmlnaHRfXzAwNF8gLT4gX2NtcF9fYSBfbGVmdF9fMDAzXyBfcmlnaHRfXzAwNF9cbiAgICAgIHwgYER1cGxpY2F0ZSwgYER1cGxpY2F0ZSAtPiAwXG4gICAgICB8IHgsIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwNV8gYl9fMDA2XyAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDVfIGJfXzAwNl9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzAwNV8sIGJfXzAwNl8gd2l0aFxuICAgICAgICB8IGBPayBfbGVmdF9fMDA3XywgYE9rIF9yaWdodF9fMDA4XyAtPiBfY21wX19hIF9sZWZ0X18wMDdfIF9yaWdodF9fMDA4X1xuICAgICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gdHJ1ZVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAwOV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYE9rIHZfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgX29mX2FfXzAwOV8gdl9fMDEwXyBdXG4gICAgICB8IGBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRHVwbGljYXRlXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAnelxuZW5kXG5cbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSBjb21wYXJhdG9yOigna2V5LCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnelxuZW5kXG5cbm1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2sgJ3YuICgnayAtPiAnayAtPiBpbnQpIC0+ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMTFfIGJfXzAxMl8gLT5cbiAgICBsZXQgdF9fMDEzXywgdF9fMDE0XyA9IGFfXzAxMV8gaW5cbiAgICBsZXQgdF9fMDE1XywgdF9fMDE2XyA9IGJfXzAxMl8gaW5cbiAgICBtYXRjaCBfY21wX19rIHRfXzAxM18gdF9fMDE1XyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBpZiBTdGRsaWIuKCA9PSApIHRfXzAxNF8gdF9fMDE2X1xuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdF9fMDE0XywgdF9fMDE2XyB3aXRoXG4gICAgICAgIHwgYExlZnQgX2xlZnRfXzAxN18sIGBMZWZ0IF9yaWdodF9fMDE4XyAtPiBfY21wX192IF9sZWZ0X18wMTdfIF9yaWdodF9fMDE4X1xuICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDE5XywgYFJpZ2h0IF9yaWdodF9fMDIwXyAtPiBfY21wX192IF9sZWZ0X18wMTlfIF9yaWdodF9fMDIwX1xuICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMjFfLCBgVW5lcXVhbCBfcmlnaHRfXzAyMl8gLT5cbiAgICAgICAgICBsZXQgdF9fMDIzXywgdF9fMDI0XyA9IF9sZWZ0X18wMjFfIGluXG4gICAgICAgICAgbGV0IHRfXzAyNV8sIHRfXzAyNl8gPSBfcmlnaHRfXzAyMl8gaW5cbiAgICAgICAgICAobWF0Y2ggX2NtcF9fdiB0X18wMjNfIHRfXzAyNV8gd2l0aFxuICAgICAgICAgICB8IDAgLT4gX2NtcF9fdiB0X18wMjRfIHRfXzAyNl9cbiAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgIHwgeCwgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHkpXG4gICAgfCBuIC0+IG5cbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdrICd2LlxuICAgICgnayAtPiAnayAtPiBib29sKSAtPiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndikgdCAtPiAoJ2ssICd2KSB0IC0+IGJvb2xcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgICAgIGxldCB0X18wMjlfLCB0X18wMzBfID0gYV9fMDI3XyBpblxuICAgICAgbGV0IHRfXzAzMV8sIHRfXzAzMl8gPSBiX18wMjhfIGluXG4gICAgICBTdGRsaWIuKCAmJiApXG4gICAgICAgIChfY21wX19rIHRfXzAyOV8gdF9fMDMxXylcbiAgICAgICAgKGlmIFN0ZGxpYi4oID09ICkgdF9fMDMwXyB0X18wMzJfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCB0X18wMzBfLCB0X18wMzJfIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDMzXywgYExlZnQgX3JpZ2h0X18wMzRfIC0+IF9jbXBfX3YgX2xlZnRfXzAzM18gX3JpZ2h0X18wMzRfXG4gICAgICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMzVfLCBgUmlnaHQgX3JpZ2h0X18wMzZfIC0+IF9jbXBfX3YgX2xlZnRfXzAzNV8gX3JpZ2h0X18wMzZfXG4gICAgICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAzN18sIGBVbmVxdWFsIF9yaWdodF9fMDM4XyAtPlxuICAgICAgICAgICAgIGxldCB0X18wMzlfLCB0X18wNDBfID0gX2xlZnRfXzAzN18gaW5cbiAgICAgICAgICAgICBsZXQgdF9fMDQxXywgdF9fMDQyXyA9IF9yaWdodF9fMDM4XyBpblxuICAgICAgICAgICAgIFN0ZGxpYi4oICYmICkgKF9jbXBfX3YgdF9fMDM5XyB0X18wNDFfKSAoX2NtcF9fdiB0X18wNDBfIHRfXzA0Ml8pXG4gICAgICAgICAgIHwgeCwgeSAtPiBTdGRsaWIuKCA9ICkgeCB5KSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnayAndi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdrKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wNTdfID0gXCJtYXBfaW50Zi5tbC5TeW1tZXRyaWNfZGlmZl9lbGVtZW50LnRcIiBpblxuICAgIGZ1biBfb2Zfa19fMDQzXyBfb2Zfdl9fMDQ0XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNjdfOyBhcmcxX18wNjhfIF0gLT5cbiAgICAgICAgbGV0IHJlczBfXzA2OV8gPSBfb2Zfa19fMDQzXyBhcmcwX18wNjdfXG4gICAgICAgIGFuZCByZXMxX18wNzBfID1cbiAgICAgICAgICBsZXQgc2V4cF9fMDY2XyA9IGFyZzFfXzA2OF8gaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIG1hdGNoIHNleHBfXzA2Nl8gd2l0aFxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyBhcyBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIDo6IHNleHBfYXJnc19fMDUwXykgYXNcbiAgICAgICAgICAgICAgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiBhcyBfdGFnX18wNjNfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2NF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDY1XyA9IF9vZl92X18wNDRfIGFyZzBfXzA2NF8gaW5cbiAgICAgICAgICAgICAgICAgICAgYExlZnQgcmVzMF9fMDY1X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjNfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiBhcyBfdGFnX18wNjBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2MV8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDYyXyA9IF9vZl92X18wNDRfIGFyZzBfXzA2MV8gaW5cbiAgICAgICAgICAgICAgICAgICAgYFJpZ2h0IHJlczBfXzA2Ml9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYwX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiBhcyBfdGFnX18wNTFfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA1OF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU5XyA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYXJnMF9fMDU4XyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNTJfOyBhcmcxX18wNTNfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTRfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDUyX1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlczFfXzA1NV8gPSBfb2Zfdl9fMDQ0XyBhcmcxX18wNTNfIGluXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMwX18wNTRfLCByZXMxX18wNTVfXG4gICAgICAgICAgICAgICAgICAgICAgfCBzZXhwX18wNTZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNleHBfXzA1Nl9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYFVuZXF1YWwgcmVzMF9fMDU5X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNTFfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgIHNleHBfXzA2Nl9cbiAgICAgICAgaW5cbiAgICAgICAgcmVzMF9fMDY5XywgcmVzMV9fMDcwX1xuICAgICAgfCBzZXhwX18wNzFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgZXJyb3Jfc291cmNlX18wNTdfIDIgc2V4cF9fMDcxX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdrICd2LlxuICAgICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2Zfa19fMDcyXyBfb2Zfdl9fMDczXyAoYXJnMF9fMDgxXywgYXJnMV9fMDgyXykgLT5cbiAgICAgIGxldCByZXMwX18wODNfID0gX29mX2tfXzA3Ml8gYXJnMF9fMDgxX1xuICAgICAgYW5kIHJlczFfXzA4NF8gPVxuICAgICAgICBtYXRjaCBhcmcxX18wODJfIHdpdGhcbiAgICAgICAgfCBgTGVmdCB2X18wNzRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2Zfdl9fMDczXyB2X18wNzRfIF1cbiAgICAgICAgfCBgUmlnaHQgdl9fMDc1XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl92X18wNzNfIHZfXzA3NV8gXVxuICAgICAgICB8IGBVbmVxdWFsIHZfXzA3Nl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbFwiXG4gICAgICAgICAgICA7IChsZXQgYXJnMF9fMDc3XywgYXJnMV9fMDc4XyA9IHZfXzA3Nl8gaW5cbiAgICAgICAgICAgICAgIGxldCByZXMwX18wNzlfID0gX29mX3ZfXzA3M18gYXJnMF9fMDc3X1xuICAgICAgICAgICAgICAgYW5kIHJlczFfXzA4MF8gPSBfb2Zfdl9fMDczXyBhcmcxX18wNzhfIGluXG4gICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wNzlfOyByZXMxX18wODBfIF0pXG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDgzXzsgcmVzMV9fMDg0XyBdXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgICAnayAndi5cbiAgICAnayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydrX3NleHBfZ3JhbW1hciBfJ3Zfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIExpc3RcbiAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAoIF8na19zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgLCBDb25zXG4gICAgICAgICAgICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIEVtcHR5IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpXG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wODVfIGJfXzA4Nl8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzA4NV8gYl9fMDg2X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDg1XywgYl9fMDg2XyB3aXRoXG4gICAgICB8IGBMZWZ0IF9sZWZ0X18wODdfLCBgTGVmdCBfcmlnaHRfXzA4OF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDg3XyBfcmlnaHRfXzA4OF9cbiAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wODlfLCBgUmlnaHQgX3JpZ2h0X18wOTBfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18wODlfIF9yaWdodF9fMDkwX1xuICAgICAgfCBgQm90aCBfbGVmdF9fMDkxXywgYEJvdGggX3JpZ2h0X18wOTJfIC0+XG4gICAgICAgIGxldCB0X18wOTNfLCB0X18wOTRfID0gX2xlZnRfXzA5MV8gaW5cbiAgICAgICAgbGV0IHRfXzA5NV8sIHRfXzA5Nl8gPSBfcmlnaHRfXzA5Ml8gaW5cbiAgICAgICAgKG1hdGNoIF9jbXBfX2xlZnQgdF9fMDkzXyB0X18wOTVfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19yaWdodCB0X18wOTRfIHRfXzA5Nl9cbiAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgfCB4LCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19sZWZ0IF9jbXBfX3JpZ2h0IGFfXzA5N18gYl9fMDk4XyAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wOTdfIGJfXzA5OF9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzA5N18sIGJfXzA5OF8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wOTlfLCBgTGVmdCBfcmlnaHRfXzEwMF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDk5XyBfcmlnaHRfXzEwMF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzEwMV8sIGBSaWdodCBfcmlnaHRfXzEwMl8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzEwMV8gX3JpZ2h0X18xMDJfXG4gICAgICAgIHwgYEJvdGggX2xlZnRfXzEwM18sIGBCb3RoIF9yaWdodF9fMTA0XyAtPlxuICAgICAgICAgIGxldCB0X18xMDVfLCB0X18xMDZfID0gX2xlZnRfXzEwM18gaW5cbiAgICAgICAgICBsZXQgdF9fMTA3XywgdF9fMTA4XyA9IF9yaWdodF9fMTA0XyBpblxuICAgICAgICAgIFN0ZGxpYi4oICYmICkgKF9jbXBfX2xlZnQgdF9fMTA1XyB0X18xMDdfKSAoX2NtcF9fcmlnaHQgdF9fMTA2XyB0X18xMDhfKVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2xlZnRfXzEwOV8gX29mX3JpZ2h0X18xMTBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IHZfXzExMV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2ZfbGVmdF9fMTA5XyB2X18xMTFfIF1cbiAgICAgIHwgYFJpZ2h0IHZfXzExMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3JpZ2h0X18xMTBfIHZfXzExMl8gXVxuICAgICAgfCBgQm90aCB2X18xMTNfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiXG4gICAgICAgICAgOyAobGV0IGFyZzBfXzExNF8sIGFyZzFfXzExNV8gPSB2X18xMTNfIGluXG4gICAgICAgICAgICAgbGV0IHJlczBfXzExNl8gPSBfb2ZfbGVmdF9fMTA5XyBhcmcwX18xMTRfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzExN18gPSBfb2ZfcmlnaHRfXzExMF8gYXJnMV9fMTE1XyBpblxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzExNl87IHJlczFfXzExN18gXSlcbiAgICAgICAgICBdXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wICopXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ29udGludWVcbiAgICB8IFN0b3BcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgQ29udGludWU7IFN0b3AgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFN0ZGxpYi4oID0gKSA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb250aW51ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJDb250aW51ZVwiXG4gICAgICB8IFN0b3AgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RvcFwiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWQgKilcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGaW5pc2hlZFxuICAgIHwgVW5maW5pc2hlZFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBGaW5pc2hlZDsgVW5maW5pc2hlZCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoU3RkbGliLiggPSApIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkZpbmlzaGVkXCJcbiAgICAgIHwgVW5maW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmZpbmlzaGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdjbXAgY21wXG4gIHR5cGUgKCdhLCAnY21wLCAneikgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgaW52YXJpYW50cyA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcblxuICB2YWwgYWRkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZF9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc2V0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZF9tdWx0aVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcmVtb3ZlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2IGxpc3QpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGNoYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gZjooKCd2IG9wdGlvbiAtPiAndiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgdXBkYXRlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gZjooKCd2IG9wdGlvbiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaW5kIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBvcHRpb24pIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBtZW0gOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAnayBrZXkgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOigoJ2sga2V5IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiB1bml0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooKCd2MSAtPiAndjIpW0Bsb2NhbF0pIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgdmFsIG1hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBmb2xkXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOlxuICAgICAgICAgKChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgICAgICAgIFtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0XG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZDJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGluaXQ6J2FjY1xuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgnayBrZXkgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBjb21iaW5lX2Vycm9yc1xuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBlcXVhbFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sga2V5IGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrIGtleSAqICd2KSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOigoa2V5OidrIGtleSAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21iaW5lOigoa2V5OidrIGtleSAtPiAndiAtPiAndiAtPiAndilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZGF0YV9lcXVhbDooKCd2IC0+ICd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgICAtPiBpbml0OidhY2NcbiAgICAgIC0+IGY6KCgnYWNjIC0+ICgnayBrZXksICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAgIC0+ICdhY2MgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayBrZXkgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNwbGl0X2xlX2d0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sdF9nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYXBwZW5kXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBsb3dlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IG1pbjonayBrZXlcbiAgICAgIC0+IG1heDonayBrZXlcbiAgICAgIC0+IGluaXQ6J2FjY1xuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayBrZXkgLT4gbWF4OidrIGtleSAtPiAoJ2sga2V5ICogJ3YpIGxpc3QgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBudGggOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IC0+ICdrIGtleSAqICd2XG4gIHZhbCByYW5rIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGludCBvcHRpb24pIGFjY2Vzc19vcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrIGtleVxuICAgICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgU2VxdWVuY2UudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gc2VnbWVudF9vZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pW0Bsb2NhbF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA6IHNpZ1xuICAgIHZhbCBtYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG5cbiAgICB2YWwgZmlsdGVyX21hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24gQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdHJlZVxuICB0eXBlICdrIGtleVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgKCdhLCAnY21wLCAneikgYWNjZXNzX29wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdrLCAnY21wLCAnayBrZXkgLT4gJ3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgbWFwX2tleXNcbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdFxuICAgICAgLT4gZjooKCdrMSBrZXkgLT4gJ2syIGtleSlbQGxvY2FsXSlcbiAgICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0IC0+IGY6KCgnazEga2V5IC0+ICdrMiBrZXkpW0Bsb2NhbF0pIC0+ICgnazIsICd2LCAnY21wMikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIHRyYW5zcG9zZV9rZXlzXG4gICAgOiAoICdrMVxuICAgICAgLCAnY21wMVxuICAgICAgLCAoICdrMlxuICAgICAgICAsICdjbXAyXG4gICAgICAgICwgKCdrMSwgKCdrMiwgJ2EsICdjbXAyKSB0LCAnY21wMSkgdCAtPiAoJ2syLCAoJ2sxLCAnYSwgJ2NtcDEpIHQsICdjbXAyKSB0IClcbiAgICAgICAgICBjcmVhdGVfb3B0aW9ucyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbGVuOmludCAtPiBmOigoaW50IC0+ICdrIGtleSAqICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIGxpc3RcbiAgICAgIC0+IGluaXQ6J3YyXG4gICAgICAtPiBmOigoJ3YyIC0+ICd2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgbGlzdCAtPiBmOigoJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXVxuICAgICAgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBTZXF1ZW5jZS50XG4gICAgICAtPiBpbml0Oid2MlxuICAgICAgLT4gZjooKCd2MiAtPiAndjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gZjooKCd2IC0+ICd2IC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3RcbiAgICAgIC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ3YgbGlzdCAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X2V4blxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3QgLT4gZ2V0X2tleTooKCd2IC0+ICdrIGtleSlbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0IC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pIC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KChmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooKGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdrLCAnY21wLCAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZSAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnYSBjbXBcbiAgdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbiAgdmFsIHNleHBfb2ZfbV9fdFxuICAgIDogIChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKCd2IC0+IFNleHAudClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdFxuICAgIDogIChtb2R1bGUgQ29tcGFyZV9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBpbnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKEhhc2guc3RhdGUgLT4gJ3YgLT4gSGFzaC5zdGF0ZSlcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+IEhhc2guc3RhdGVcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYXAgPSBzaWdcbiAgKCoqIFtNYXBdIGlzIGEgZnVuY3Rpb25hbCBkYXRhIHN0cnVjdHVyZSAoYmFsYW5jZWQgYmluYXJ5IHRyZWUpIGltcGxlbWVudGluZyBmaW5pdGUgbWFwc1xuICAgICAgb3ZlciBhIHRvdGFsbHktb3JkZXJlZCBkb21haW4sIGNhbGxlZCBhIFwia2V5XCIuICopXG5cbiAgdHlwZSAoISdrZXksICshJ3ZhbHVlLCAhJ2NtcCkgdFxuXG4gIG1vZHVsZSBPcl9kdXBsaWNhdGUgPSBPcl9kdXBsaWNhdGVcbiAgbW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250aW51ZV9vcl9zdG9wXG5cbiAgbW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBVbmZpbmlzaGVkXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2VudW1lcmF0ZV9saWIuRW51bWVyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBNYXBzIFtDb250aW51ZV0gdG8gW0ZpbmlzaGVkXSBhbmQgW1N0b3BdIHRvIFtVbmZpbmlzaGVkXS4gKilcbiAgICB2YWwgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0XG5cbiAgICAoKiogTWFwcyBbRmluaXNoZWRdIHRvIFtDb250aW51ZV0gYW5kIFtVbmZpbmlzaGVkXSB0byBbU3RvcF0uICopXG4gICAgdmFsIHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudFxuICBlbmRcblxuICBtb2R1bGUgTWVyZ2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdsZWZ0LCAncmlnaHQpIHQgPVxuICAgICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgICB8IGBCb3RoIG9mICdsZWZ0ICogJ3JpZ2h0XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgdmFsIGNvbXBhcmVcbiAgICAgIDogICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGludFxuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGJvb2wpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGJvb2xcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgbGVmdCA6ICgnbGVmdCwgXykgdCAtPiAnbGVmdCBvcHRpb25cbiAgICB2YWwgcmlnaHQgOiAoXywgJ3JpZ2h0KSB0IC0+ICdyaWdodCBvcHRpb25cbiAgICB2YWwgbGVmdF92YWx1ZSA6ICgnbGVmdCwgXykgdCAtPiBkZWZhdWx0OidsZWZ0IC0+ICdsZWZ0XG4gICAgdmFsIHJpZ2h0X3ZhbHVlIDogKF8sICdyaWdodCkgdCAtPiBkZWZhdWx0OidyaWdodCAtPiAncmlnaHRcblxuICAgIHZhbCB2YWx1ZXNcbiAgICAgIDogICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBsZWZ0X2RlZmF1bHQ6J2xlZnRcbiAgICAgIC0+IHJpZ2h0X2RlZmF1bHQ6J3JpZ2h0XG4gICAgICAtPiAnbGVmdCAqICdyaWdodFxuICBlbmRcblxuICB0eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9ICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTJdIHVzZSBbQ29tcGFyYXRvci5Nb2R1bGUudF0gaW5zdGVhZFwiXVxuXG4gICgqKiBUZXN0IGlmIHRoZSBpbnZhcmlhbnRzIG9mIHRoZSBpbnRlcm5hbCBBVkwgc2VhcmNoIHRyZWUgaG9sZC4gKilcbiAgdmFsIGludmFyaWFudHMgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBmaXJzdC1jbGFzcyBtb2R1bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBvdGhlciBtYXAvc2V0L2V0Yy5cbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogVGhlIGVtcHR5IG1hcC4gKilcbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQSBtYXAgd2l0aCBvbmUgKGtleSwgZGF0YSkgcGFpci4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAnYiAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMuICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmFpc2luZyBhbiBleGNlcHRpb24gaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LiAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiBUaGUgYWNjdW11bGF0b3IgaXMgcGVyLWtleS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgIyBsZXQgbWFwID0gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImFcIiwgMTsgXCJhXCIsIDEwOyBcImJcIiwgMjsgXCJiXCIsIDIwOyBcImJcIiwgMjAwIF1cbiAgICAgICAgICAgICAgICAgICAgICB+aW5pdDpJbnQuU2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgfmY6U2V0LmFkZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJpbnRfcyBbJXNleHAgKG1hcCA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTs7XG4gICAgICAgICgoYSAoMSAxMCkpIChiICgyIDIwIDIwMCkpKVxuICAgICAgICAtIDogdW5pdCA9ICgpXG4gICAgICBdfVxuICAqKVxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCgnYyAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBmOigoJ2IgLT4gJ2IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaXRlcmkgfml0ZXJpXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0XSwgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZiB0YWtpbmcgYSBjb25jcmV0ZVxuICAgICAgZGF0YSBzdHJ1Y3R1cmUsIGl0IHRha2VzIGFuIGl0ZXJhdGlvbiBmdW5jdGlvbi4gIEZvciBpbnN0YW5jZSwgdG8gY29udmVydCBhIHN0cmluZyB0YWJsZVxuICAgICAgaW50byBhIG1hcDogW29mX2l0ZXJpIChtb2R1bGUgU3RyaW5nKSB+ZjooSGFzaHRibC5pdGVyaSB0YWJsZSldLiAgSXQgaXMgZmFzdGVyIHRoYW5cbiAgICAgIGFkZGluZyB0aGUgZWxlbWVudHMgb25lIGJ5IG9uZS4gKilcbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaXRlcmk6KChmOigoa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBMaWtlIFtvZl9pdGVyaV0gZXhjZXB0IHRoYXQgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOigoZjooKGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYSBzb3J0ZWQgYXJyYXkgb2Yga2V5LWRhdGEgcGFpcnMuIFRoZSBpbnB1dCBhcnJheSBtdXN0IGJlIHNvcnRlZFxuICAgICAgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlciksIGFzIGdpdmVuIGJ5IHRoZSByZWxldmFudCBjb21wYXJhdG9yLCBhbmRcbiAgICAgIG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlIGtleXMuIElmIGVpdGhlciBvZiB0aGVzZSBjb25kaXRpb25zIGRvZXMgbm90IGhvbGQsXG4gICAgICBhbiBlcnJvciBpcyByZXR1cm5lZC4gICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogTGlrZSBbb2Zfc29ydGVkX2FycmF5XSBleGNlcHQgdGhhdCBpdCByZXR1cm5zIGEgbWFwIHdpdGggYnJva2VuIGludmFyaWFudHMgd2hlbiBhblxuICAgICAgW0Vycm9yXSB3b3VsZCBoYXZlIGJlZW4gcmV0dXJuZWQuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgYyB+bGVuIH5mXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgY1xuICAgICAgKEFycmF5LmluaXQgbGVuIH5mKV0sIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBhIGRlY3JlYXNpbmcgb3JkZXIgaXMgbm90XG4gICAgICBzdXBwb3J0ZWQuICBUaGUgYWR2YW50YWdlIGlzIG5vdCByZXF1aXJpbmcgeW91IHRvIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZSBhcnJheS4gIFtmXVxuICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCAwLCAxLCAuLi4gW2xlbiAtIDFdLCBpbiBvcmRlci4gKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheSBjIChTZXF1ZW5jZS50b19hcnJheVxuICAgICAgc2VxKV0sIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGFycmF5LlxuXG4gICAgICBUaGUgc2VxdWVuY2Ugd2lsbCBiZSBmb2xkZWQgb3ZlciBvbmNlLCBhbmQgdGhlIGFkZGl0aW9uYWwgdGltZSBjb21wbGV4aXR5IGlzIHtlIE8obil9LlxuICAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2UgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3QgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cblxuICAgICAgSWYgeW91ciBzZXF1ZW5jZSBpcyBpbmNyZWFzaW5nLCB1c2UgW29mX2luY3JlYXNpbmdfc2VxdWVuY2VdLlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLlxuXG4gICAgICBbb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3Rfb3JfZXJyb3IgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX2V4biBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9leG4gYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfbXVsdGkgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfZm9sZCBjIHNlcSB+aW5pdCB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9mb2xkIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+aW5pdCB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooKCdjIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gc2VxdWVuY2UgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfcmVkdWNlIGMgc2VxIH5mXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X3JlZHVjZSBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gZjooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ29uc3RydWN0cyBhIG1hcCBmcm9tIGEgbGlzdCBvZiB2YWx1ZXMsIHdoZXJlIFtnZXRfa2V5XSBleHRyYWN0cyBhIGtleSBmcm9tIGEgdmFsdWUuXG4gICopXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5XG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sgXVxuXG4gICgqKiBMaWtlIFtvZl9saXN0X3dpdGhfa2V5XTsgcmV0dXJucyBbRXJyb3JdIG9uIGR1cGxpY2F0ZSBrZXkuICopXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9leG5cbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBsaXN0XG4gICAgLT4gZ2V0X2tleTooKCd2IC0+ICdrKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHByb2R1Y2VzIGxpc3RzIG9mIGFsbCB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2gga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9tdWx0aVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIFRlc3RzIHdoZXRoZXIgYSBtYXAgaXMgZW1wdHkuICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW2xlbmd0aCBtYXBdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBbbWFwXS4gIE8oMSksIGJ1dCBbVHJlZS5sZW5ndGhdIGlzXG4gICAgICBPKG4pLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBuZXcgYmluZGluZzsgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBib3VuZCwgaXRzXG4gICAgICBwcmV2aW91cyBiaW5kaW5nIGRpc2FwcGVhcnMuICopXG4gIHZhbCBzZXQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FkZCB0IH5rZXkgfmRhdGFdIGFkZHMgYSBuZXcgZW50cnkgdG8gW3RdIG1hcHBpbmcgW2tleV0gdG8gW2RhdGFdIGFuZCByZXR1cm5zIFtgT2tdXG4gICAgICB3aXRoIHRoZSBuZXcgbWFwLCBvciBpZiBba2V5XSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gW3RdLCByZXR1cm5zIFtgRHVwbGljYXRlXS4gKilcbiAgdmFsIGFkZCA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuXG4gIHZhbCBhZGRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIElmIFtrZXldIGlzIG5vdCBwcmVzZW50IHRoZW4gYWRkIGEgc2luZ2xldG9uIGxpc3QsIG90aGVyd2lzZSwgY29ucyBkYXRhIG9udG8gdGhlXG4gICAgICBoZWFkIG9mIHRoZSBleGlzdGluZyBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBJZiB0aGUga2V5IGlzIHByZXNlbnQsIHRoZW4gcmVtb3ZlIGl0cyBoZWFkIGVsZW1lbnQ7IGlmIHRoZSByZXN1bHQgaXMgZW1wdHksIHJlbW92ZVxuICAgICAgdGhlIGtleS4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgdGhlIGVtcHR5IGxpc3QgaWYgdGhlcmUgaXMgbm9uZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gJ3YgbGlzdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSByZXR1cm5zIGEgbmV3IG1hcCBbbV0gdGhhdCBpcyB0aGUgc2FtZSBhcyBbdF0gb24gYWxsIGtleXMgZXhjZXB0XG4gICAgICBmb3IgW2tleV0sIGFuZCB3aG9zZSB2YWx1ZSBmb3IgW2tleV0gaXMgZGVmaW5lZCBieSBbZl0sIGkuZS4sIFtmaW5kIG0ga2V5ID0gZiAoZmluZFxuICAgICAgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAna1xuICAgIC0+IGY6KCgndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3VwZGF0ZSB0IGtleSB+Zl0gaXMgW2NoYW5nZSB0IGtleSB+ZjooZnVuIG8gLT4gU29tZSAoZiBvKSldLiAqKVxuICB2YWwgdXBkYXRlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBmOigoJ3Ygb3B0aW9uIC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cblxuICAoKiogUmV0dXJucyBbU29tZSB2YWx1ZV0gYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgW05vbmVdIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gJ3Ygb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIHJhaXNpbmcgW1N0ZGxpYi5Ob3RfZm91bmRdIG9yIFtOb3RfZm91bmRfc11cbiAgICAgIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYW55IGJpbmRpbmcgZm9yIHRoZSBrZXkgaW4gcXVlc3Rpb24gcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbbWVtIG1hcCBrZXldIHRlc3RzIHdoZXRoZXIgW21hcF0gY29udGFpbnMgYSBiaW5kaW5nIGZvciBba2V5XS4gKilcbiAgdmFsIG1lbSA6ICgnaywgXywgJ2NtcCkgdCAtPiAnayAtPiBib29sXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOigoJ2sgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIHVudGlsIHRoZSBmaXJzdCB0aW1lIFtmXSByZXR1cm5zIFtTdG9wXS4gSWYgW2ZdIHJldHVybnMgW1N0b3BdLCB0aGUgZmluYWxcbiAgICAgIHJlc3VsdCBpcyBbVW5maW5pc2hlZF0uIE90aGVyd2lzZSwgdGhlIGZpbmFsIHJlc3VsdCBpcyBbRmluaXNoZWRdLiAqKVxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICAoKiogSXRlcmF0ZXMgdHdvIG1hcHMgc2lkZSBieSBzaWRlLiBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIE8oTSArIE4pLiAgSWYgdHdvXG4gICAgICBpbnB1dHMgYXJlIFtbKDAsIGEpOyAoMSwgYSldXSBhbmQgW1soMSwgYik7ICgyLCBiKV1dLCBbZl0gd2lsbCBiZSBjYWxsZWQgd2l0aCBbWygwLFxuICAgICAgYExlZnQgYSk7ICgxLCBgQm90aCAoYSwgYikpOyAoMiwgYFJpZ2h0IGIpXV0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIHJlcGxhY2VkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuKilcbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCgndjEgLT4gJ3YyKVtAbG9jYWxdKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogQ29udmVydCBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdG8gYSBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdXNpbmcgW2ZdLiAqKVxuICB2YWwgbWFwX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCgnazEgLT4gJ2syKVtAbG9jYWxdKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgKCoqIExpa2UgW21hcF9rZXlzXSwgYnV0IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOigoJ2sxIC0+ICdrMilbQGxvY2FsXSlcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIHRcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0sIHVudGlsIHRoZSBmaXJzdFxuICAgICAgdGltZSB0aGF0IFtmXSByZXR1cm5zIFtTdG9wIF9dLiBJZiBbZl0gcmV0dXJucyBbU3RvcCBmaW5hbF0sIHRoaXMgZnVuY3Rpb24gcmV0dXJuc1xuICAgICAgaW1tZWRpYXRlbHkgd2l0aCB0aGUgdmFsdWUgW2ZpbmFsXS4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIGFuZCB0aGUgZmluYWxcbiAgICAgIGNhbGwgdG8gW2ZdIHJldHVybnMgW0NvbnRpbnVlIGxhc3RdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgW2ZpbmlzaCBsYXN0XS4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgICAgICAgIFtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogRm9sZHMgb3ZlciB0d28gbWFwcyBzaWRlIGJ5IHNpZGUsIGxpa2UgW2l0ZXIyXS4gKilcbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyX21hcGldIHJ1biBpbiBPKG4pXG4gICAgICB0aW1lLlxuXG4gICAgICBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbcGFydGl0aW9uX3RmXSBhbmQgW3BhcnRpdGlvbmlfdGZdIGtlZXAgYSBsb3RcbiAgICAgIG9mIHNoYXJpbmcgYmV0d2VlbiB0aGVpciByZXN1bHQgYW5kIHRoZSBvcmlnaW5hbCBtYXAuICBEcm9wcGluZyBvciBrZWVwaW5nIGEgcnVuIG9mXG4gICAgICBba10gY29uc2VjdXRpdmUgZWxlbWVudHMgY29zdHMgW08obG9nKGspKV0gZXh0cmEgbWVtb3J5LiBLZWVwaW5nIHRoZSBlbnRpcmUgbWFwXG4gICAgICBjb3N0cyBubyBleHRyYSBtZW1vcnkgYXQgYWxsOiBbZmlsdGVyIH5mOihmdW4gXyAtPiB0cnVlKV0gcmV0dXJucyB0aGUgb3JpZ2luYWwgbWFwLlxuICAqKVxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgnayAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlciA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIGZpbHRlcmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuICopXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRha2VzIGJvdGggW2tleV0gYW5kIFtkYXRhXSBhc1xuICAgICAgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcGkgdCB+Zl0gcmV0dXJucyB0d28gbmV3IFt0XXMsIHdpdGggZWFjaCBrZXkgaW4gW3RdIGFwcGVhcmluZyBpblxuICAgICAgZXhhY3RseSBvbmUgb2YgdGhlIHJlc3VsdGluZyBtYXBzIGRlcGVuZGluZyBvbiBpdHMgbWFwcGluZyBpbiBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKV0gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqXG4gICAgIHtbXG4gICAgICAgcGFydGl0aW9uaV90ZiB0IH5mXG4gICAgICAgPVxuICAgICAgIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICBpZiBmIH5rZXkgfmRhdGFcbiAgICAgICAgIHRoZW4gRmlyc3QgZGF0YVxuICAgICAgICAgZWxzZSBTZWNvbmQgZGF0YSlcbiAgICAgXX0gKilcbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogUHJvZHVjZXMgW09rXSBvZiBhIG1hcCBpbmNsdWRpbmcgYWxsIGtleXMgaWYgYWxsIGRhdGEgaXMgW09rXSwgb3IgYW4gW0Vycm9yXVxuICAgICAgaW5jbHVkaW5nIGFsbCBlcnJvcnMgb3RoZXJ3aXNlLiAqKVxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFJldHVybnMgYSB0b3RhbCBvcmRlcmluZyBiZXR3ZWVuIG1hcHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHRvdGFsIG9yZGVyaW5nIHVzZWRcbiAgICAgIHRvIGNvbXBhcmUgZGF0YSBhc3NvY2lhdGVkIHdpdGggZXF1YWwga2V5cyBpbiB0aGUgdHdvIG1hcHMuICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIG1hcHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgbSkuY29tcGFyZV0gb2YgdGhlIG1hcCBbbV0gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnayBIYXNoLmZvbGRlciAtPiAndiBIYXNoLmZvbGRlciAtPiAoJ2ssICd2LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCBjbXAgbTEgbTJdIHRlc3RzIHdoZXRoZXIgdGhlIG1hcHMgW20xXSBhbmQgW20yXSBhcmUgZXF1YWwsIHRoYXQgaXMsIGNvbnRhaW5cbiAgICAgIHRoZSBzYW1lIGtleXMgYW5kIGFzc29jaWF0ZSBlYWNoIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlLiAgW2NtcF0gaXMgdGhlIGVxdWFsaXR5XG4gICAgICBwcmVkaWNhdGUgdXNlZCB0byBjb21wYXJlIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXlzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGtleXMgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sgbGlzdFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgZGF0YSBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgKCoqIENyZWF0ZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBmcm9tIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gKCoqIGRlZmF1bHQgaXMgW2BJbmNyZWFzaW5nXSAqKVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiB7MiBBZGRpdGlvbmFsIG9wZXJhdGlvbnMgb24gbWFwc30gKilcblxuICAoKiogTWVyZ2VzIHR3byBtYXBzLiBUaGUgcnVudGltZSBpcyBPKGxlbmd0aCh0MSkgKyBsZW5ndGgodDIpKS4gWW91IHNob3VsZG4ndCB1c2UgdGhpc1xuICAgICAgZnVuY3Rpb24gdG8gbWVyZ2UgYSBsaXN0IG9mIG1hcHM7IGNvbnNpZGVyIHVzaW5nIFttZXJnZV9za2V3ZWRdIGluc3RlYWQuICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+ICgndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogQSBzcGVjaWFsIGNhc2Ugb2YgW21lcmdlXSwgW21lcmdlX3NrZXdlZCB0MSB0Ml0gaXMgYSBtYXAgY29udGFpbmluZyBhbGwgdGhlXG4gICAgICBiaW5kaW5ncyBvZiBbdDFdIGFuZCBbdDJdLiBCaW5kaW5ncyB0aGF0IGFwcGVhciBpbiBib3RoIFt0MV0gYW5kIFt0Ml0gYXJlXG4gICAgICBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHZhbHVlIHVzaW5nIHRoZSBbY29tYmluZV0gZnVuY3Rpb24uIEluIGEgY2FsbFxuICAgICAgW2NvbWJpbmUgfmtleSB2MSB2Ml0sIHRoZSB2YWx1ZSBbdjFdIGNvbWVzIGZyb20gW3QxXSBhbmQgW3YyXSBmcm9tIFt0Ml0uXG5cbiAgICAgIFRoZSBydW50aW1lIG9mIFttZXJnZV9za2V3ZWRdIGlzIFtPKG1pbihsMSwgbDIpICogbG9nKG1heChsMSwgbDIpKSldLCB3aGVyZSBbbDFdIGlzXG4gICAgICB0aGUgbGVuZ3RoIG9mIFt0MV0gYW5kIFtsMl0gdGhlIGxlbmd0aCBvZiBbdDJdLiBUaGlzIGlzIGxpa2VseSB0byBiZSBmYXN0ZXIgdGhhblxuICAgICAgW21lcmdlXSB3aGVuIG9uZSBvZiB0aGUgbWFwcyBpcyBhIGxvdCBzbWFsbGVyLCBvciB3aGVuIHlvdSBtZXJnZSBhIGxpc3Qgb2YgbWFwcy4gKilcbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tYmluZTooKGtleTonayAtPiAndiAtPiAndiAtPiAndilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgbW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgICAgOiAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsXSByZXR1cm5zIGEgbGlzdCBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS5cbiAgICAgIEl0IGlzIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50XG4gICAgICBvZiBzdHJ1Y3R1cmUuIFRoZSBrZXlzIGluIHRoZSBvdXRwdXQgc2VxdWVuY2Ugd2lsbCBiZSBpbiBzb3J0ZWQgb3JkZXIuXG5cbiAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBbZGF0YV9lcXVhbF0gaXMgYXQgbGVhc3QgYXMgZXF1YXRpbmcgYXMgcGh5c2ljYWwgZXF1YWxpdHk6IHRoYXRcbiAgICAgIFtwaHlzX2VxdWFsIHggeV0gaW1wbGllcyBbZGF0YV9lcXVhbCB4IHldLiBPdGhlcndpc2UsIFtzeW1tZXRyaWNfZGlmZl0gbWF5IGJlaGF2ZSBpblxuICAgICAgdW5leHBlY3RlZCB3YXlzLiBGb3IgZXhhbXBsZSwgd2l0aCBbfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gZmFsc2UpXSBpdCBpcyBOT1RcbiAgICAgIG5lY2Vzc2FyaWx5IHRoZSBjYXNlIHRoZSByZXN1bHRpbmcgY2hhbmdlIHNlcXVlbmNlIHdpbGwgY29udGFpbiBhbiBlbGVtZW50XG4gICAgICBbKGssIGBVbmVxdWFsIF8pXSBmb3IgZXZlcnkga2V5IFtrXSBzaGFyZWQgYnkgYm90aCBtYXBzLlxuXG4gICAgICBXYXJuaW5nOiBGbG9hdCBlcXVhbGl0eSB2aW9sYXRlcyB0aGlzIHByb3BlcnR5ISBbcGh5c19lcXVhbCBGbG9hdC5uYW4gRmxvYXQubmFuXSBpc1xuICAgICAgdHJ1ZSwgYnV0IFtGbG9hdC4oPSkgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXMgZmFsc2UuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gZm9sZHMgYWNyb3NzIGFuIGltcGxpY2l0IHNlcXVlbmNlIG9mIGNoYW5nZXNcbiAgICAgIGJldHdlZW4gW3QxXSBhbmQgW3QyXSwgaW4gc29ydGVkIG9yZGVyIGJ5IGtleXMuIEVxdWl2YWxlbnQgdG9cbiAgICAgIFtTZXF1ZW5jZS5mb2xkIChzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCldLCBhbmQgbW9yZSBlZmZpY2llbnQuICopXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOigoJ3YgLT4gJ3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIFttaW5fZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtaW5pbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogW21heF9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1heGltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIFttYXBdIGlzIGVtcHR5LiAqKVxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBTd2FwIHRoZSBpbm5lciBhbmQgb3V0ZXIga2V5cyBvZiBuZXN0ZWQgbWFwcy4gSWYgW3RyYW5zcG9zZV9rZXlzIG0gYSA9IGJdLCB0aGVuXG4gICAgICBbZmluZF9leG4gKGZpbmRfZXhuIGEgaSkgaiA9IGZpbmRfZXhuIChmaW5kX2V4biBiIGopIGldLiAqKVxuICB2YWwgdHJhbnNwb3NlX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICgnazIsICd2LCAnY21wMikgdCwgJ2NtcDEpIHRcbiAgICAtPiAoJ2syLCAoJ2sxLCAndiwgJ2NtcDEpIHQsICdjbXAyKSB0XG5cbiAgKCoqIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBhcyBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBbTGlzdF0uICopXG5cbiAgdmFsIGZvcl9hbGwgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cblxuICAoKiogW3NwbGl0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrZXldLCB0aGUgbWFwcGluZyBvZiBba2V5XSBpZlxuICAgICAgYW55LCBhbmQgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2xlX2d0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgdGhhdCBhcmUgbGVzcyBvciBlcXVhbCB0byBba2V5XSBhbmQgYVxuICAgICAgbWFwIG9mIGtleXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0X2xlX2d0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbc3BsaXRfbHRfZ2UgdCBrZXldIHJldHVybnMgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tleV0gYW5kIGEgbWFwIG9mXG4gICAgICBrZXlzIHRoYXQgYXJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRfbHRfZ2UgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnRdIHJldHVybnMgW2BPayBtYXBdIHdoZXJlIFttYXBdIGNvbnRhaW5zIGFsbCB0aGVcbiAgICAgIFsoa2V5LCB2YWx1ZSldIHBhaXJzIGZyb20gdGhlIHR3byBpbnB1dCBtYXBzIGlmIGFsbCB0aGUga2V5cyBmcm9tIFtsb3dlcl9wYXJ0XSBhcmVcbiAgICAgIGxlc3MgdGhhbiBhbGwgdGhlIGtleXMgZnJvbSBbdXBwZXJfcGFydF0uICBPdGhlcndpc2UgaXQgcmV0dXJuc1xuICAgICAgW2BPdmVybGFwcGluZ19rZXlfcmFuZ2VzXS5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBuKSB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBsYXJnZXIgaW5wdXQgbWFwLiAgVGhpcyBjYW4gYmVcbiAgICAgIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gW01hcC5tZXJnZV0gb3IgcmVwZWF0ZWQgW01hcC5hZGRdLlxuXG4gICAgICB7W1xuICAgICAgICBhc3NlcnQgKG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgIHwgYE9rIHdob2xlX21hcCAtPlxuICAgICAgICAgICAgTWFwLnRvX2FsaXN0IHdob2xlX21hcFxuICAgICAgICAgICAgPSBMaXN0LmFwcGVuZCAodG9fYWxpc3QgbG93ZXJfcGFydCkgKHRvX2FsaXN0IHVwcGVyX3BhcnQpXG4gICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiB0cnVlKTtcbiAgICAgIF19ICopXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gICgqKiBbc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXSByZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBlbnRyaWVzIGZyb21cbiAgICAgIFt0XSB3aG9zZSBrZXlzIGxpZSBpbnNpZGUgdGhlIGludGVydmFsIGluZGljYXRlZCBieSBbfmxvd2VyX2JvdW5kXSBhbmRcbiAgICAgIFt+dXBwZXJfYm91bmRdLiAgSWYgdGhpcyBpbnRlcnZhbCBpcyBlbXB0eSwgYW4gZW1wdHkgbWFwIGlzIHJldHVybmVkLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgb3V0cHV0IG1hcC4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZVxuICAgICAgb3V0cHV0IG1hcC4gKilcbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmZdIGZvbGRzIFtmXSAod2l0aCBpbml0aWFsIHZhbHVlIFt+aW5pdF0pXG4gICAgICBvdmVyIGFsbCBrZXlzIChhbmQgdGhlaXIgYXNzb2NpYXRlZCB2YWx1ZXMpIHRoYXQgYXJlIGluIHRoZSByYW5nZSBbW21pbiwgbWF4XV1cbiAgICAgIChpbmNsdXNpdmUpLiAgKilcbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IG1pbjona1xuICAgIC0+IG1heDona1xuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXhdIHJldHVybnMgYW4gYXNzb2NpYXRpdmUgbGlzdCBvZiB0aGUgZWxlbWVudHMgd2hvc2Uga2V5c1xuICAgICAgbGllIGluIFtbbWluLCBtYXhdXSAoaW5jbHVzaXZlKSwgd2l0aCB0aGUgc21hbGxlc3Qga2V5IGJlaW5nIGF0IHRoZSBoZWFkIG9mIHRoZVxuICAgICAgbGlzdC4gKilcbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sgLT4gbWF4OidrIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIFtjbG9zZXN0X2tleSB0IGRpciBrXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XSB3aXRoIFtrZXldIGNsb3Nlc3QgdG9cbiAgICAgIFtrXSB0aGF0IHNhdGlzZmllcyB0aGUgZ2l2ZW4gaW5lcXVhbGl0eSBib3VuZC5cblxuICAgICAgRm9yIGV4YW1wbGUsIFtjbG9zZXN0X2tleSB0IGBMZXNzX3RoYW4ga10gd291bGQgYmUgdGhlIHBhaXIgd2l0aCB0aGUgY2xvc2VzdCBrZXkgdG9cbiAgICAgIFtrXSB3aGVyZSBba2V5IDwga10uXG5cbiAgICAgIFt0b19zZXF1ZW5jZV0gY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBzYW1lIHJlc3VsdHMgYXMgW2Nsb3Nlc3Rfa2V5XS4gIEl0IGlzIGxlc3NcbiAgICAgIGVmZmljaWVudCBmb3IgaW5kaXZpZHVhbCBsb29rdXBzIGJ1dCBtb3JlIGVmZmljaWVudCBmb3IgZmluZGluZyBtYW55IGVsZW1lbnRzIHN0YXJ0aW5nXG4gICAgICBhdCBzb21lIHZhbHVlLiAqKVxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdrXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbbnRoIHQgbl0gZmluZHMgdGhlIChrZXksIHZhbHVlKSBwYWlyIG9mIHJhbmsgbiAoaS5lLiwgc3VjaCB0aGF0IHRoZXJlIGFyZSBleGFjdGx5IG5cbiAgICAgIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBmb3VuZCBrZXkpLCBpZiBvbmUgZXhpc3RzLiAgTyhsb2cobGVuZ3RoIHQpICsgbikgdGltZS4gKilcbiAgdmFsIG50aCA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICdrICogJ3ZcblxuICAoKiogW3JhbmsgdCBrXSBJZiBba10gaXMgaW4gW3RdLCByZXR1cm5zIHRoZSBudW1iZXIgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tdIGluXG4gICAgICBbdF0sIGFuZCBbTm9uZV0gb3RoZXJ3aXNlLiAqKVxuICB2YWwgcmFuayA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gaW50IG9wdGlvblxuXG5cblxuICAoKiogW3RvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdF1cbiAgICAgIGdpdmVzIGEgc2VxdWVuY2Ugb2Yga2V5LXZhbHVlIHBhaXJzIGJldHdlZW4gW2tleXNfbGVzc19vcl9lcXVhbF90b10gYW5kXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUsIHByZXNlbnRlZCBpbiBbb3JkZXJdLiAgSWZcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dLCB0aGUgc2VxdWVuY2UgaXNcbiAgICAgIGVtcHR5LlxuXG4gICAgICBXaGVuIG5laXRoZXIgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gbm9yIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFyZVxuICAgICAgcHJvdmlkZWQsIHRoZSBjb3N0IGlzIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSB0byBwcm9kdWNlXG4gICAgICBlYWNoIGVsZW1lbnQuIElmIGVpdGhlciBpcyBwcm92aWRlZCAoYW5kIGlzIHVzZWQgYnkgdGhlIG9yZGVyIHBhcmFtZXRlclxuICAgICAgcHJvdmlkZWQpLCB0aGVuIHRoZSB0aGUgY29zdCBpcyBPKG4pIHVwIGZyb250LCBhbmQgYW1vcnRpemVkIE8oMSkgdG9cbiAgICAgIHByb2R1Y2UgZWFjaCBlbGVtZW50LiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2tcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XVxuICAgICAgc3BlY2lmaWVkIGJ5IFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KChrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICAgICBdXG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBvbiB0aGUgYm91bmRhcnkgb2YgdGhlXG4gICAgICBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZVxuICAgICAgbGVmdCBzZWdtZW50LCB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuXG4gICAgICBJdCByZXR1cm5zIFtOb25lXSBpZiB0aGUgc2VnbWVudCBpcyBlbXB0eS5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtzZWdtZW50X29mXSBzZWdtZW50cyBbdF0gYXMgaW4gdGhlXG4gICAgICBkaWFncmFtLCBhbmQgYmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIGRvZXNuJ3Qgc2VnbWVudCBbdF0uICBCZWhhdmlvclxuICAgICAgaXMgYWxzbyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zdWJyYW5nZV0gdGFrZXMgYSBbY29tcGFyZV0gZnVuY3Rpb24gdGhhdCBkaXZpZGVzIFt0XSBpbnRvIHRocmVlXG4gICAgICAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzIHdpdGggcmVzcGVjdCB0byBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdOlxuXG4gICAgICB7dlxuICAgICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgSW5fcmFuZ2UgfCBBYm92ZV91cHBlcl9ib3VuZCB8XG4gICAgICB2fVxuXG4gICAgICBhbmQgcmV0dXJucyBhIG1hcCBvZiB0aGUgW0luX3JhbmdlXSBzZWdtZW50LlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG0gKyBuKSB3aGVyZSBbbV0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgbWFwIGFuZCBbbl0gaXMgdGhlXG4gICAgICBsZW5ndGggb2YgdGhlIG91dHB1dC4gVGhlIGxpbmVhciB0ZXJtIGluIFtuXSBpcyB0byBjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dC5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIFtjb21wYXJlXSBkb2VzIG5vdCBzZWdtZW50IFt0XSBhcyBzaG93biBhYm92ZSwgb3IgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIGl0cyBpbnB1dHMuICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgdHJhdmVyc2FscyB0byByZWNvbnN0cnVjdCBhIG1hcCB3aXRoaW4gYW4gYXBwbGljYXRpdmUuIFVzZXNcbiAgICAgIFtMYXp5X2FwcGxpY2F0aXZlXSBzbyB0aGF0IHRoZSBtYXAgY2FuIGJlIHRyYXZlcnNlZCB3aXRoaW4gdGhlIGFwcGxpY2F0aXZlLCByYXRoZXJcbiAgICAgIHRoYW4gbmVlZGluZyB0byBiZSB0cmF2ZXJzZWQgYWxsIGF0IG9uY2UsIG91dHNpZGUgdGhlIGFwcGxpY2F0aXZlLiAqKVxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgOiBzaWdcbiAgICB2YWwgbWFwaVxuICAgICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG5cbiAgICB2YWwgZmlsdGVyX21hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbiBBLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCBBLnRcbiAgZW5kXG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IGludCBNYXAuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSAoU3RyaW5nLnQsIGludCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgTWFwLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgTWFwLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kIHN5bnRheFxuICAgICAgZG9lc24ndCAoYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzLCBzYXksIFtTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3NdXG4gICAgICAtLSBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLlxuXG4gICAgICBJbiBhZGRpdGlvbiwgd2hlbiB1c2luZyBbQEBkZXJpdmluZ10sIHRoZSByZXF1aXJlbWVudHMgb24gdGhlIGtleSBtb2R1bGUgYXJlIG9ubHlcbiAgICAgIHRob3NlIG5lZWRlZCB0byBzYXRpc2Z5IHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZGVyaXZlIG9uIHRoZSBtYXAgaXRzZWxmLiBTYXkgeW91XG4gICAgICB3cml0ZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSB0ID0gaW50IE1hcC5NKFgpLnQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIF19XG5cbiAgICAgIHRoZW4gdGhpcyB3aWxsIGJlIHdlbGwgdHlwZWQgZXhhY3RseSBpZiBbWF0gY29udGFpbnMgYXQgbGVhc3Q6XG4gICAgICAtIGEgdHlwZSBbdF0gd2l0aCBubyBwYXJhbWV0ZXJzXG4gICAgICAtIGEgY29tcGFyYXRvciB3aXRuZXNzXG4gICAgICAtIGEgW2hhc2hfZm9sZF90XSBmdW5jdGlvbiB3aXRoIHRoZSByaWdodCB0eXBlICopXG4gIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgna2V5LCAndmFsdWUsICdjbXApIHQgOj0gKCdrZXksICd2YWx1ZSwgJ2NtcCkgdFxuXG4gICgqKiBbVXNpbmdfY29tcGFyYXRvcl0gaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW01hcF0sIGV4Y2VwdCB0aGVcbiAgICAgIGZ1bmN0aW9ucyB0YWtlIGEgW35jb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XSwgd2hlcmVhcyB0aGUgZnVuY3Rpb25zIGF0IHRoZVxuICAgICAgdG9wbGV2ZWwgb2YgW01hcF0gdGFrZSBhIFsoJ2ssICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnaywgKyd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgdHlwZSAoKydrLCArJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAna1xuICAgICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8sIF8pIHRcblxuICAgICAgKCoqIFtCdWlsZF9pbmNyZWFzaW5nXSBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBtYXAgaW5jcmVtZW50YWxseSBmcm9tIGFcbiAgICAgICAgICBzZXF1ZW5jZSB0aGF0IGlzIGtub3duIHRvIGJlIGluY3JlYXNpbmcuXG5cbiAgICAgICAgICBUaGUgdG90YWwgdGltZSBjb21wbGV4aXR5IG9mIGNvbnN0cnVjdGluZyBhIG1hcCB0aGlzIHdheSBpcyBPKG4pLCB3aGljaCBpcyBtb3JlXG4gICAgICAgICAgZWZmaWNpZW50IHRoYW4gdXNpbmcgW01hcC5hZGRdIGJ5IGEgbG9nYXJpdGhtaWMgZmFjdG9yLlxuXG4gICAgICAgICAgVGhpcyBpbnRlcmZhY2UgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBkdWFsIG9mIFt0b19zZXF1ZW5jZV0sIGJ1dCB3ZSBkb24ndCBoYXZlXG4gICAgICAgICAgYW4gZXF1YWxseSBuZWF0IGlkaW9tIGZvciB0aGUgZHVhbHMgb2Ygc2VxdWVuY2VzIChbb2Zfc2VxdWVuY2VdIGlzIG11Y2ggbGVzc1xuICAgICAgICAgIGdlbmVyYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgc2VxdWVuY2UgdG8gYmUgcHJvZHVjZWQgYXN5bmNocm9ub3VzbHkpLiAqKVxuICAgICAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB0eXBlICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgdmFsIGVtcHR5IDogKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IG9mIFthZGRfZXhuXSBpcyBhbW9ydGl6ZWQgY29uc3RhbnQtdGltZSAoaWYgW3RdIGlzIHVzZWRcbiAgICAgICAgICAgIGxpbmVhcmx5KSwgd2l0aCBhIHdvcnN0LWNhc2UgTyhsb2cobikpIHRpbWUuICopXG4gICAgICAgIHZhbCBhZGRfZXhuXG4gICAgICAgICAgOiAgKCdrLCAndiwgJ3cpIHRcbiAgICAgICAgICAtPiBjb21wYXJhdG9yOignaywgJ3cpIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+IGtleTona1xuICAgICAgICAgIC0+IGRhdGE6J3ZcbiAgICAgICAgICAtPiAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgICgqKiBUaW1lIGNvbXBsZXhpdHkgaXMgTyhsb2cobikpLiAqKVxuICAgICAgICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICd3KSB0IC0+ICgnaywgJ3YsICd3KSB0cmVlXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAna1xuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3RcbiAgICAgIDogICdrIEhhc2guZm9sZGVyXG4gICAgICAtPiAndiBIYXNoLmZvbGRlclxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgKCoqIFRvIGdldCBhcm91bmQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uLCBhcHBseSB0aGUgZnVuY3RvciBhbmQgaW5jbHVkZSBpdC4gWW91XG4gICAgICAgIGNhbiBzZWUgYW4gZXhhbXBsZSBvZiB0aGlzIGluIHRoZSBbUG9seV0gc3VibW9kdWxlIGJlbG93LiAqKVxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBNYXAuICopXG4gIG1vZHVsZSBQb2x5IDpcbiAgICBTX3BvbHlcbiAgICB3aXRoIHR5cGUgKCdrZXksICsndmFsdWUpIHQgPSAoJ2tleSwgJ3ZhbHVlLCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgIGFuZCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0cmVlID1cbiAgICAgICAgICAgKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICgqKiBDcmVhdGUgYSBtYXAgZnJvbSBhIHRyZWUgdXNpbmcgdGhlIGdpdmVuIGNvbXBhcmF0b3IuICopXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIEV4dHJhY3QgYSB0cmVlIGZyb20gYSBtYXAuICopXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG5cbiAgKCoqIHsyIE1vZHVsZXMgYW5kIG1vZHVsZSB0eXBlcyBmb3IgZXh0ZW5kaW5nIFtNYXBdfVxuXG4gICAgICBGb3IgdXNlIGluIGV4dGVuc2lvbnMgb2YgQmFzZSwgbGlrZSBbQ29yZV0uICopXG5cbiAgbW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFdpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxuICBtb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gV2l0aG91dF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwX2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxubW9kdWxlIE5hbWVkID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzZXQgOiAnYVxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5HZW5lcmljXG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICAoKiogVGhlIFthY2Nlc3Nfb3B0aW9uc10gdHlwZSBpcyB1c2VkIHRvIG1ha2UgW0FjY2Vzc29yc19nZW5lcmljXSBmbGV4aWJsZSBhcyB0byB3aGV0aGVyXG4gICAgICBhIGNvbXBhcmF0b3IgaXMgcmVxdWlyZWQgdG8gYmUgcGFzc2VkIHRvIGNlcnRhaW4gZnVuY3Rpb25zLiAqKVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGFjY2Vzc19vcHRpb25zXG5cbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcblxuICAoKiogb3ZlcnJpZGUgW0NvbnRhaW5lcl0ncyBbbWVtXSAqKVxuICB2YWwgbWVtIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdW5pb24gOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnYSBlbHQpIEVpdGhlci50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldFxuICAgICAgOiAoICdhXG4gICAgICAgICwgJ2NtcFxuICAgICAgICAsICgnYSwgJ2NtcCkgdCBOYW1lZC50IC0+IG9mXzooJ2EsICdjbXApIHQgTmFtZWQudCAtPiB1bml0IE9yX2Vycm9yLnQgKVxuICAgICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogKCAnYVxuICAgICAgICAsICdjbXBcbiAgICAgICAgLCAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiB1bml0IE9yX2Vycm9yLnQgKVxuICAgICAgICAgIGFjY2Vzc19vcHRpb25zXG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYSBlbHQgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGY6XG4gICAgICAgICAgICgoWyBgTGVmdCBvZiAnYSBlbHQgfCBgUmlnaHQgb2YgJ2EgZWx0IHwgYEJvdGggb2YgJ2EgZWx0ICogJ2EgZWx0IF0gLT4gdW5pdClcbiAgICAgICAgICAgIFtAbG9jYWxdKVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogJ2EgZWx0IG9wdGlvbiAqICgnYSwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNwbGl0X2xlX2d0XG4gICAgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sdF9nZVxuICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZ3JvdXBfYnlcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBlcXVpdjooKCdhIGVsdCAtPiAnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHQgbGlzdFxuXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIGVsdFxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnY21wIGNtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gJ2EgZWx0IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgZWx0IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAnYSBlbHQgb3B0aW9uIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KCgnYSBlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSBlbHQsICdhIGVsdCkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGVsdFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCwgJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXAsICdhIGVsdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wLCAnYSBlbHQgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICgnYSwgJ2NtcCwgbGVuOmludCAtPiBmOigoaW50IC0+ICdhIGVsdClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICgnYSwgXywgJ2EgZWx0IGxpc3QgLT4gJ2EgZWx0IGxpc3QpIGNyZWF0ZV9vcHRpb25zXG5cbiAgKCoqIFRoZSB0eXBlcyBvZiBbbWFwXSBhbmQgW2ZpbHRlcl9tYXBdIGFyZSBzdWJ0bGUuICBUaGUgaW5wdXQgc2V0LCBbKCdhLCBfKSBzZXRdLFxuICAgICAgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBhIHNldCBvZiAqYW55KiB0eXBlLCB3aXRoIGFueVxuICAgICAgY29tcGFyYXRvciwgd2hpbGUgdGhlIG91dHB1dCBzZXQsIFsoJ2IsICdjbXApIHRdLCByZWZsZWN0cyB0aGF0IHRoZSBvdXRwdXQgc2V0IGhhc1xuICAgICAgdGhlIHBhcnRpY3VsYXIgWydjbXBdIG9mIHRoZSBjcmVhdGlvbiBmdW5jdGlvbi4gIFRoZSBjb21wYXJhdG9yIGNhbiBjb21lIGluIG9uZSBvZlxuICAgICAgdGhyZWUgd2F5cywgZGVwZW5kaW5nIG9uIHdoaWNoIHNldCBtb2R1bGUgaXMgdXNlZFxuXG4gICAgICAtIFtTZXQubWFwXSAtLSBjb21wYXJhdG9yIGNvbWVzIGFzIGFuIGFyZ3VtZW50XG4gICAgICAtIFtTZXQuUG9seS5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgcG9seW1vcnBoaWMgY29tcGFyaXNvblxuICAgICAgLSBbRm9vLlNldC5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgW0Zvby5jb21wYXJhdG9yXSAqKVxuICB2YWwgbWFwXG4gICAgOiAoJ2IsICdjbXAsICgnYSwgXykgc2V0IC0+IGY6KCgnYSAtPiAnYiBlbHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogKCAnYlxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgXykgc2V0IC0+IGY6KCgnYSAtPiAnYiBlbHQgb3B0aW9uKVtAbG9jYWxdKSAtPiAoJ2IsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdhLCAnY21wLCAoJ2EgZWx0LCAnY21wIGNtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdlbHQsICdjbXApIHRcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdHJlZVxuICB0eXBlICdlbHQgZWx0XG4gIHR5cGUgJ2NtcCBjbXBcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgJ2VsdCB0XG4gIHR5cGUgJ2VsdCB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2VsdCwgJ2NtcCkgdCA6PSAnZWx0IHRcbiAgICB3aXRoIHR5cGUgKCdlbHQsICdjbXApIHRyZWUgOj0gJ2VsdCB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3QgOiAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCAnY21wKSB0IC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+ICgnZWx0LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdCA6IChtb2R1bGUgQ29tcGFyZV9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsX21fX3QgOiAobW9kdWxlIEVxdWFsX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdlbHQsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5cbiAgdmFsIGhhc2hfbV9fdCA6IChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgXykgdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgKCoqIFNldHMgYmFzZWQgb24geyFDb21wYXJhdG9yLlN9LlxuXG4gICAgICBDcmVhdG9ycyByZXF1aXJlIGEgY29tcGFyYXRvciBhcmd1bWVudCB0byBiZSBwYXNzZWQgaW4sIHdoZXJlYXMgYWNjZXNzb3JzIHVzZSB0aGVcbiAgICAgIGNvbXBhcmF0b3IgcHJvdmlkZWQgYnkgdGhlIGlucHV0IHNldC4gKilcblxuICAoKiogVGhlIHR5cGUgb2YgYSBzZXQuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCwgYW5kXG4gICAgICB0aGUgc2Vjb25kIGlkZW50aWZpZXMgdGhlIGNvbXBhcmF0b3IsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gdGhhdFxuICAgICAgaXMgdXNlZCBmb3Igb3JkZXJpbmcgZWxlbWVudHMgaW4gdGhpcyBzZXQuICBNYW55IG9wZXJhdGlvbnMgKGUuZy4sIHshdW5pb259KSxcbiAgICAgIHJlcXVpcmUgdGhhdCB0aGV5IGJlIHBhc3NlZCBzZXRzIHdpdGggdGhlIHNhbWUgZWxlbWVudCB0eXBlIGFuZCB0aGUgc2FtZSBjb21wYXJhdG9yXG4gICAgICB0eXBlLiAqKVxuICB0eXBlICghJ2VsdCwgISdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCEnZWx0LCAhJ2NtcCkgdCA6PSAoJ2VsdCwgJ2NtcCkgdFxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdHMgaW50ZXJuYWwgaW52YXJpYW50cyBvZiB0aGUgc2V0IGRhdGEgc3RydWN0dXJlLiAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGNcbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogQ3JlYXRlcyBhbiBlbXB0eSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIHNldCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29tcGFyYXRvciB0aGF0IGNvbnRhaW5zIG9ubHkgdGhlIHByb3ZpZGVkXG4gICAgICBlbGVtZW50LiAqKVxuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGUgc2V0LiBbTygxKV0uICopXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcblxuICAoKiogW2lzX2VtcHR5IHRdIGlzIFt0cnVlXSBpZmYgW3RdIGlzIGVtcHR5LiAgW08oMSldLiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFttZW0gdCBhXSByZXR1cm5zIFt0cnVlXSBpZmYgW2FdIGlzIGluIFt0XS4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gYm9vbFxuXG4gICgqKiBbYWRkIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gYWRkZWQgdG8gW3RdLCBvciByZXR1cm5zIFt0XSBpZiBbbWVtIHQgYV0uXG4gICAgICBbTyhsb2cgbildLiAqKVxuICB2YWwgYWRkIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbcmVtb3ZlIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gcmVtb3ZlZCBmcm9tIFt0XSBpZiBbbWVtIHQgYV0sIG9yIHJldHVybnMgW3RdXG4gICAgICBvdGhlcndpc2UuICBbTyhsb2cgbildLiAqKVxuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gdDEgdDJdIHJldHVybnMgdGhlIHVuaW9uIG9mIHRoZSB0d28gc2V0cy4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgdW5pb24gOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gYyBsaXN0XSByZXR1cm5zIHRoZSB1bmlvbiBvZiBhbGwgdGhlIHNldHMgaW4gW2xpc3RdLiAgVGhlXG4gICAgICBbY29tcGFyYXRvcl0gYXJndW1lbnQgaXMgcmVxdWlyZWQgZm9yIHRoZSBjYXNlIHdoZXJlIFtsaXN0XSBpcyBlbXB0eS5cbiAgICAgIFtPKG1heChMaXN0Lmxlbmd0aCBsaXN0LCBuIGxvZyBuKSldLCB3aGVyZSBbbl0gaXMgdGhlIHN1bSBvZiBzaXplcyBvZiB0aGUgaW5wdXQgc2V0cy4gKilcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtpbnRlciB0MSB0Ml0gY29tcHV0ZXMgdGhlIGludGVyc2VjdGlvbiBvZiBzZXRzIFt0MV0gYW5kIFt0Ml0uICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtkaWZmIHQxIHQyXSBjb21wdXRlcyB0aGUgc2V0IGRpZmZlcmVuY2UgW3QxIC0gdDJdLCBpLmUuLCB0aGUgc2V0IGNvbnRhaW5pbmcgYWxsXG4gICAgICBlbGVtZW50cyBpbiBbdDFdIHRoYXQgYXJlIG5vdCBpbiBbdDJdLiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBkaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyXSByZXR1cm5zIGEgc2VxdWVuY2Ugb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uIEl0IGlzXG4gICAgICBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudCBvZlxuICAgICAgc3RydWN0dXJlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcblxuICAoKiogW2NvbXBhcmVfZGlyZWN0IHQxIHQyXSBjb21wYXJlcyB0aGUgc2V0cyBbdDFdIGFuZCBbdDJdLiAgSXQgcmV0dXJucyB0aGUgc2FtZSByZXN1bHRcbiAgICAgIGFzIFtjb21wYXJlXSwgYnV0IHVubGlrZSBjb21wYXJlLCBkb2Vzbid0IHJlcXVpcmUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbiBmb3IgdGhlXG4gICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIHNldC4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludFxuXG4gICgqKiBIYXNoIGZ1bmN0aW9uOiBhIGJ1aWxkaW5nIGJsb2NrIHRvIHVzZSB3aGVuIGhhc2hpbmcgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgc2V0cyBpblxuICAgICAgdGhlbS4gW2hhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFtjb21wYXJlX2RpcmVjdF0gaWZmXG4gICAgICBbaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFsoY29tcGFyYXRvciBzKS5jb21wYXJlXSBvZiB0aGUgc2V0IFtzXSBiZWluZ1xuICAgICAgaGFzaGVkLiAqKVxuICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdhIEhhc2guZm9sZGVyIC0+ICgnYSwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgdDEgdDJdIHJldHVybnMgW3RydWVdIGlmZiB0aGUgdHdvIHNldHMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cy4gIFtPKGxlbmd0aCB0MSArXG4gICAgICBsZW5ndGggdDIpXSAqKVxuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2V4aXN0cyB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlcmUgZXhpc3RzIGFuIFthXSBpbiBbdF0gZm9yIHdoaWNoIFtmIGFdLiAgW08obildLFxuICAgICAgYnV0IHJldHVybnMgYXMgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtmIGFdLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFtmb3JfYWxsIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiBmb3IgYWxsIFthXSBpbiBbdF0sIFtmIGFdLiAgW08obildLCBidXQgcmV0dXJucyBhc1xuICAgICAgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtub3QgKGYgYSldLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBbY291bnQgdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgW3RydWVdLlxuICAgICAgW08obildLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBbc3VtIHRdIHJldHVybnMgdGhlIHN1bSBvZiBbZiB0XSBmb3IgZWFjaCBbdF0gaW4gdGhlIHNldC5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFtmaW5kIHQgZl0gcmV0dXJucyBhbiBlbGVtZW50IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgdHJ1ZSwgd2l0aCBubyBndWFyYW50ZWUgYXNcbiAgICAgIHRvIHdoaWNoIGVsZW1lbnQgaXMgcmV0dXJuZWQuICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZSBlbGVtZW50IGlzXG4gICAgICBmb3VuZC4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbZmluZF9tYXAgdCBmXSByZXR1cm5zIFtiXSBmb3Igc29tZSBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhID0gU29tZSBiXS4gIElmIG5vIHN1Y2hcbiAgICAgIFthXSBleGlzdHMsIHRoZW4gW2ZpbmRdIHJldHVybnMgW05vbmVdLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGVcbiAgICAgIGVsZW1lbnQgaXMgZm91bmQuICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICAoKiogTGlrZSBbZmluZF0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGZhaWx1cmUuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcblxuICAoKiogW250aCB0IGldIHJldHVybnMgdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgb2YgW3RdLCBpbiBbTyhsb2cgbildIHRpbWUuICBUaGVcbiAgICAgIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFtOb25lXSBpZiBbaSA8IDBdIG9yIFtpID49IGxlbmd0aCB0XS4gKilcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtyZW1vdmVfaW5kZXggdCBpXSByZXR1cm5zIGEgdmVyc2lvbiBvZiBbdF0gd2l0aCB0aGUgW2lddGggc21hbGxlc3QgZWxlbWVudCByZW1vdmVkLFxuICAgICAgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFt0XSBpZiBbaSA8IDBdIG9yXG4gICAgICBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaXNfc3Vic2V0IHQxIH5vZl86dDJdIHJldHVybnMgdHJ1ZSBpZmYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdLiAqKVxuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbYXJlX2Rpc2pvaW50IHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgW2lzX2VtcHR5IChpbnRlciB0MSB0MildLCBidXQgaXMgbW9yZVxuICAgICAgZWZmaWNpZW50LiAqKVxuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtOYW1lZF0gYWxsb3dzIHRoZSB2YWxpZGF0aW9uIG9mIHN1YnNldCBhbmQgZXF1YWxpdHkgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHNldHMuICBBXG4gICAgICBbTmFtZWQudF0gaXMgYSByZWNvcmQgb2YgYSBzZXQgYW5kIGEgbmFtZSwgd2hlcmUgdGhlIG5hbWUgaXMgdXNlZCBpbiBlcnJvciBtZXNzYWdlcyxcbiAgICAgIGFuZCBbTmFtZWQuaXNfc3Vic2V0XSBhbmQgW05hbWVkLmVxdWFsXSB2YWxpZGF0ZSBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHNcbiAgICAgIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgZm9yLCBlLmcuLFxuICAgICAge1tcbiAgICAgICAgTmFtZWQuaXNfc3Vic2V0IHsgc2V0ID0gc2V0MTsgbmFtZSA9IFwic2V0MVwiIH0gfm9mXzp7c2V0ID0gc2V0MjsgbmFtZSA9IFwic2V0MlwiIH1cbiAgICAgIF19XG5cbiAgICAgIGxvb2tzIGxpa2VcbiAgICAgIHt2XG4gICAgICAgIChcInNldDEgaXMgbm90IGEgc3Vic2V0IG9mIHNldDJcIiAoaW52YWxpZF9lbGVtZW50cyAoLi4uZWxlbWVudHMgb2Ygc2V0MSAtIHNldDIuLi4pKSlcbiAgICAgICB2fVxuXG4gICAgICBzbyBbbmFtZV0gc2hvdWxkIGJlIGEgbm91biBwaHJhc2UgdGhhdCBkb2Vzbid0IHNvdW5kIGF3a3dhcmQgaW4gdGhlIGFib3ZlIGVycm9yXG4gICAgICBtZXNzYWdlLiAgRXZlbiB0aG91Z2ggaXQgYWRkcyB2ZXJib3NpdHksIGNob29zaW5nIFtuYW1lXXMgdGhhdCBzdGFydCB3aXRoIHRoZSBwaHJhc2VcbiAgICAgIFwidGhlIHNldCBvZlwiIG9mdGVuIG1ha2VzIHRoZSBlcnJvciBtZXNzYWdlIHNvdW5kIG1vcmUgbmF0dXJhbC5cbiAgKilcbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdHlwZSAoJ2EsICdjbXApIHNldCA6PSAoJ2EsICdjbXApIHRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIE5hbWVkLnQgPVxuICAgICAgeyBzZXQgOiAnYVxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdIGFuZCBhXG4gICAgICAgIGh1bWFuLXJlYWRhYmxlIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgc2V0IHQgLT4gb2ZfOignYSwgJ2NtcCkgc2V0IHQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBlcXVhbCB0byBbdDJdIGFuZCBhIGh1bWFuLXJlYWRhYmxlXG4gICAgICAgIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSBzZXQgdCAtPiAoJ2EsICdjbXApIHNldCB0IC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICAoKiogVGhlIGxpc3Qgb3IgYXJyYXkgZ2l2ZW4gdG8gW29mX2xpc3RdIGFuZCBbb2ZfYXJyYXldIG5lZWQgbm90IGJlIHNvcnRlZC4gKilcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdG9fbGlzdF0gYW5kIFt0b19hcnJheV0gcHJvZHVjZSBzZXF1ZW5jZXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICBjb21wYXJhdG9yLiAqKVxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG5cbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIENyZWF0ZSBzZXQgZnJvbSBzb3J0ZWQgYXJyYXkuICBUaGUgaW5wdXQgbXVzdCBiZSBzb3J0ZWQgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3JcbiAgICAgIGRlc2NlbmRpbmcgb3JkZXIgYXMgZ2l2ZW4gYnkgdGhlIGNvbXBhcmF0b3IpIGFuZCBjb250YWluIG5vIGR1cGxpY2F0ZXMsIG90aGVyd2lzZSB0aGVcbiAgICAgIHJlc3VsdCBpcyBhbiBlcnJvci4gIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgW08obildLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBTaW1pbGFyIHRvIFtvZl9zb3J0ZWRfYXJyYXldLCBidXQgd2l0aG91dCBjaGVja2luZyB0aGUgaW5wdXQgYXJyYXkuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3RhYmxlX2RlZHVwX2xpc3RdIGlzIGhlcmUgcmF0aGVyIHRoYW4gaW4gdGhlIFtMaXN0XSBtb2R1bGUgYmVjYXVzZSB0aGVcbiAgICAgIGltcGxlbWVudGF0aW9uIHJlbGllcyBjcnVjaWFsbHkgb24gc2V0cywgYW5kIGJlY2F1c2UgZG9pbmcgc28gYWxsb3dzIG9uZSB0byBhdm9pZCB1c2VzXG4gICAgICBvZiBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGZ1bmN0b3IgYXQgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25cbiAgICAgIG9mIFtDb21wYXJhdG9yXSBhbmQgdXNpbmcgdGhlIHJlc3VsdGluZyBbc3RhYmxlX2RlZHVwX2xpc3RdLiAqKVxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgKCoqIFttYXAgYyB0IH5mXSByZXR1cm5zIGEgbmV3IHNldCBjcmVhdGVkIGJ5IGFwcGx5aW5nIFtmXSB0byBldmVyeSBlbGVtZW50IGluXG4gICAgICBbdF0uICBUaGUgcmV0dXJuZWQgc2V0IGlzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBbY29tcGFyYXRvcl0uICBbTyhuIGxvZyBuKV0uICopXG4gIHZhbCBtYXBcbiAgICA6ICAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgeyFtYXB9LCBleGNlcHQgZWxlbWVudHMgZm9yIHdoaWNoIFtmXSByZXR1cm5zIFtOb25lXSB3aWxsIGJlIGRyb3BwZWQuICAqKVxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyB0aGUgc3Vic2V0IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAgW08obiBsb2dcbiAgICAgIG4pXS4gKilcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0byBsYXJnZXN0LiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdCwgc2hvcnQgY2lyY3VpdGluZyB0aGUgZm9sZCBpZiBbZiBhY2N1bSB4XSBpcyBhbiBbRXJyb3IgX10gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cblxuICAoKiogTGlrZSB7IWZvbGR9LCBleGNlcHQgdGhhdCBpdCBnb2VzIGZyb20gdGhlIGxhcmdlc3QgdG8gdGhlIHNtYWxsZXN0IGVsZW1lbnQuICopXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2EgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtpdGVyIHQgfmZdIGNhbGxzIFtmXSBvbiBldmVyeSBlbGVtZW50IG9mIFt0XSwgZ29pbmcgaW4gb3JkZXIgZnJvbSB0aGUgc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QuICAqKVxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlIHR3byBzZXRzIHNpZGUgYnkgc2lkZS4gIENvbXBsZXhpdHkgaXMgW08obStuKV0gd2hlcmUgW21dIGFuZCBbbl0gYXJlIHRoZSBzaXplc1xuICAgICAgb2YgdGhlIHR3byBpbnB1dCBzZXRzLiAgQXMgYW4gZXhhbXBsZSwgd2l0aCB0aGUgaW5wdXRzIFswOyAxXSBhbmQgWzE7IDJdLCBbZl0gd2lsbCBiZVxuICAgICAgY2FsbGVkIHdpdGggW2BMZWZ0IDBdOyBbYEJvdGggKDEsIDEpXTsgYW5kIFtgUmlnaHQgMl0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KChbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBpZiBbYSwgYiA9IHBhcnRpdGlvbl90ZiBzZXQgfmZdIHRoZW4gW2FdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZWQgW3RydWVdLFxuICAgICAgYW5kIFtiXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VzIFtmYWxzZV0uICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogU2FtZSBhcyB7IXRvX2xpc3R9LiAqKVxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBzZXQuICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1pbl9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFJldHVybnMgdGhlIGxhcmdlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gICopXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshbWF4X2VsdH0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogcmV0dXJucyBhbiBhcmJpdHJhcnkgZWxlbWVudCwgb3IgW05vbmVdIGlmIHRoZSBzZXQgaXMgZW1wdHkuICopXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFjaG9vc2V9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFtzcGxpdCB0IHhdIHByb2R1Y2VzIGEgdHJpcGxlIFsodDEsIG1heWJlX3gsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLFxuICAgICAgW21heWJlX3hdIGlzIHRoZSBtZW1iZXIgKGlmIGFueSkgb2YgW3RdIHdoaWNoIGNvbXBhcmVzIGVxdWFsIHRvIFt4XSxcbiAgICAgIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsYXJnZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2xlX2d0IHQgeF0gcHJvZHVjZXMgYSBwYWlyIFsodDEsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gW3hdLFxuICAgICAgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdF9sZV9ndCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2x0X2dlIHQgeF0gcHJvZHVjZXMgYSBwYWlyIFsodDEsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLFxuICAgICAgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBbeF0uICopXG4gIHZhbCBzcGxpdF9sdF9nZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogaWYgW2VxdWl2XSBpcyBhbiBlcXVpdmFsZW5jZSBwcmVkaWNhdGUsIHRoZW4gW2dyb3VwX2J5IHNldCB+ZXF1aXZdIHByb2R1Y2VzIGEgbGlzdFxuICAgICAgb2YgZXF1aXZhbGVuY2UgY2xhc3NlcyAoaS5lLiwgYSBzZXQtdGhlb3JldGljIHF1b3RpZW50KS4gIEUuZy4sXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBjaGFycyA9IFNldC5vZl9saXN0IFsnQSc7ICdhJzsgJ2InOyAnYyddIGluXG4gICAgICAgIGxldCBlcXVpdiBjIGMnID0gQ2hhci5lcXVhbCAoQ2hhci51cHBlcmNhc2UgYykgKENoYXIudXBwZXJjYXNlIGMnKSBpblxuICAgICAgICBncm91cF9ieSBjaGFycyB+ZXF1aXZcbiAgICAgIF19XG5cbiAgICAgIHByb2R1Y2VzOlxuXG4gICAgICB7W1xuICAgICAgICBbU2V0Lm9mX2xpc3QgWydBJzsnYSddOyBTZXQuc2luZ2xldG9uICdiJzsgU2V0LnNpbmdsZXRvbiAnYyddXG4gICAgICBdfVxuXG4gICAgICBbZ3JvdXBfYnldIHJ1bnMgaW4gTyhuXjIpIHRpbWUsIHNvIGlmIHlvdSBoYXZlIGEgY29tcGFyaXNvbiBmdW5jdGlvbiwgaXQncyB1c3VhbGx5XG4gICAgICBtdWNoIGZhc3RlciB0byB1c2UgW1NldC5vZl9saXN0XS4gKilcbiAgdmFsIGdyb3VwX2J5IDogKCdhLCAnY21wKSB0IC0+IGVxdWl2OigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICAoKiogW3RvX3NlcXVlbmNlIHRdIGNvbnZlcnRzIHRoZSBzZXQgW3RdIHRvIGEgc2VxdWVuY2Ugb2YgdGhlIGVsZW1lbnRzIGJldHdlZW5cbiAgICAgIFtncmVhdGVyX29yX2VxdWFsX3RvXSBhbmQgW2xlc3Nfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSBpbiB0aGUgb3JkZXIgaW5kaWNhdGVkIGJ5XG4gICAgICBbb3JkZXJdLiAgSWYgW2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBsZXNzX29yX2VxdWFsX3RvXSB0aGUgc2VxdWVuY2UgaXMgZW1wdHkuICBDb3N0IGlzXG4gICAgICBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgZm9yIGVhY2ggZWxlbWVudCBwcm9kdWNlZC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIGVsZW1lbnQgaW4gW3RdIHNwZWNpZmllZCBieVxuICAgICAgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2tleSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2YgdGhlIHNlZ21lbnRzIGFzXG4gICAgICBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBsZWZ0IHNlZ21lbnQsXG4gICAgICB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuICBJdCByZXR1cm5zXG4gICAgICBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOigoJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFByb2R1Y2VzIHRoZSBlbGVtZW50cyBvZiB0aGUgdHdvIHNldHMgYmV0d2VlbiBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kXG4gICAgICBbbGVzc19vcl9lcXVhbF90b10gaW4gW29yZGVyXSwgbm90aW5nIHdoZXRoZXIgZWFjaCBlbGVtZW50IGFwcGVhcnMgaW4gdGhlIGxlZnQgc2V0LFxuICAgICAgdGhlIHJpZ2h0IHNldCwgb3IgYm90aC4gIEluIHRoZSBib3RoIGNhc2UsIGJvdGggZWxlbWVudHMgYXJlIHJldHVybmVkLCBpbiBjYXNlIHRoZVxuICAgICAgY2FsbGVyIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQgYXJlIGVxdWFsIHRvIHRoZSBzZXRzJyBjb21wYXJhdG9yLiAgUnVuc1xuICAgICAgaW4gTyhsZW5ndGggdCArIGxlbmd0aCB0JykuICopXG4gIG1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgICB8IExlZnQgb2YgJ2FcbiAgICAgIHwgUmlnaHQgb2YgJ2JcbiAgICAgIHwgQm90aCBvZiAnYSAqICdiXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IFNldC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfc2V0ID0gKFN0cmluZy50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBTZXQudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW1NldC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3MsXG4gICAgICBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLiAqKVxuICBtb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKiBBIHBvbHltb3JwaGljIFNldC4gKilcbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICdlbHQgdCA9ICgnZWx0LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgKCoqIFVzaW5nIGNvbXBhcmF0b3IgaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW1NldF0sIGV4Y2VwdCB0aGUgZnVuY3Rpb25zXG4gICAgICB0YWtlIGEgW35jb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRdIHdoZXJlIHRoZSBmdW5jdGlvbnMgYXQgdGhlIHRvcGxldmVsIG9mXG4gICAgICBbU2V0XSB0YWtlcyBhIFsoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnZWx0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgKCoqIEEgW1RyZWUudF0gY29udGFpbnMganVzdCB0aGUgdHJlZSBkYXRhIHN0cnVjdHVyZSB0aGF0IGEgc2V0IGlzIGJhc2VkIG9uLCB3aXRob3V0XG4gICAgICAgICAgaW5jbHVkaW5nIHRoZSBjb21wYXJhdG9yLiAgQWNjb3JkaW5nbHksIGFueSBvcGVyYXRpb24gb24gYSBbVHJlZS50XSBtdXN0IGFsc28gdGFrZVxuICAgICAgICAgIGFzIGFuIGFyZ3VtZW50IHRoZSBjb3JyZXNwb25kaW5nIGNvbXBhcmF0b3IuICopXG4gICAgICB0eXBlICgnYSwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2VsdClcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8pIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2VsdCBIYXNoLmZvbGRlciAtPiAoJ2VsdCwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhLCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbU2V0XX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgRWx0X3BsYWluID0gRWx0X3BsYWluXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNldF9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFbXB0eVxuICAgICgqIChMZWFmIHgpIGlzIHRoZSBzYW1lIGFzIChOb2RlIChFbXB0eSwgeCwgRW1wdHksIDEsIDEpKSBidXQgdXNlcyBsZXNzIHNwYWNlLiAqKVxuICAgIHwgTGVhZiBvZiAnYVxuICAgICgqIGZpcnN0IGludCBpcyBoZWlnaHQsIHNlY29uZCBpcyBzdWItdHJlZSBzaXplICopXG4gICAgfCBOb2RlIG9mICdhIHQgKiAnYSAqICdhIHQgKiBpbnQgKiBpbnRcblxuICB0eXBlICdhIHRyZWUgPSAnYSB0XG5cbiAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGUgY2hpbGRyZW4gZGlmZmVyIGJ5XG4gICAgIGF0IG1vc3QgMi4gKilcbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHYgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2VsdCBsb3dlciB2IDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfZWx0IHYgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIHYgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBoLCBuKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgbiA9IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSB2KSBjb21wYXJlX2VsdCBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgdikgdXBwZXIgY29tcGFyZV9lbHQgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfZWx0IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfZWx0IHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgIGlmIGggPSAxXG4gICAgdGhlbiBMZWFmIHZcbiAgICBlbHNlIChcbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLlNldCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgayA9IGYgaSBpblxuICAgICAgICBMZWFmIGtcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIEVtcHR5XG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgKExlYWYga3IpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICAoKiBXZSBkb24ndCBjaGVjayBpZiB0aGUgYXJyYXkgaXMgc29ydGVkIG9yIGtleXMgYXJlIGR1cGxpY2F0ZWQsIGJlY2F1c2UgdGhhdFxuICAgICAgICAgY2hlY2tpbmcgaXMgc2xvd2VyIHRoYW4gdGhlIHdob2xlIFtvZl9zb3J0ZWRfYXJyYXldIGZ1bmN0aW9uICopXG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyIHx8IGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+IFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKGkpIGFycmF5LihpICsgMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpKVxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICBsZXQgYmFsIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKGwpPmgocikrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBscnYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgbGwpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgRW1wdHkpIGxydiAoY3JlYXRlIEVtcHR5IHYgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscnIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBiZWNhdXNlIGgocik+aChsKSsyIGFuZCBoKGxlYWYpPTEgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByciwgXywgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybFxuICAgICAgICB0aGVuIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBMZWFmIHJsdiAtPlxuICAgICAgICAgICAgYXNzZXJ0IChpc19lbXB0eSBycik7XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgRW1wdHkpIHJsdiAoY3JlYXRlIEVtcHR5IHJ2IHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsciwgXywgXykgLT4gY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgaCA9IGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxIGluXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGlmIGggPSAxIHRoZW4gTGVhZiB2IGVsc2UgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gIGV4Y2VwdGlvbiBTYW1lXG5cbiAgbGV0IGFkZCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gY3JlYXRlIChMZWFmIHgpIHYgRW1wdHlcbiAgICAgICAgZWxzZSBjcmVhdGUgRW1wdHkgdiAoTGVhZiB4KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBiYWwgKGF1eCBsKSB2IHJcbiAgICAgICAgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbYWRkXSB0aGF0IGFzc3VtZXMgdGhhdCBbeF0gaXMgbGVzcyB0aGFuIGFsbCBleGlzdGluZyBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGFkZF9taW4geCB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgIHwgTGVhZiBfIC0+IE5vZGUgKEVtcHR5LCB4LCB0LCAyLCAyKVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChhZGRfbWluIHggbCkgdiByXG4gIDs7XG5cbiAgKCogc3BlY2lhbGl6YXRpb24gb2YgW2FkZF0gdGhhdCBhc3N1bWVzIHRoYXQgW3hdIGlzIGdyZWF0ZXIgdGhhbiBhbGwgZXhpc3RpbmcgZWxlbWVudHMgKilcbiAgbGV0IHJlYyBhZGRfbWF4IHQgeCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICB8IExlYWYgXyAtPiBOb2RlICh0LCB4LCBFbXB0eSwgMiwgMilcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCBsIHYgKGFkZF9tYXggciB4KVxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZFxuICAgICByLiAqKVxuICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gYWRkX21pbiB2IHJcbiAgICB8IF8sIEVtcHR5IC0+IGFkZF9tYXggbCB2XG4gICAgfCBMZWFmIGx2LCBfIC0+IGFkZF9taW4gbHYgKGFkZF9taW4gdiByKVxuICAgIHwgXywgTGVhZiBydiAtPiBhZGRfbWF4IChhZGRfbWF4IGwgdikgcnZcbiAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIGxoLCBfKSwgTm9kZSAocmwsIHJ2LCByciwgcmgsIF8pIC0+XG4gICAgICBpZiBsaCA+IHJoICsgMlxuICAgICAgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgMlxuICAgICAgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByclxuICAgICAgZWxzZSBjcmVhdGUgbCB2IHJcbiAgOztcblxuICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgYWNjID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiB2YWx1ZSAtPiBmIGFjYyB2YWx1ZSBbQG5vbnRhaWxdXG4gICAgICB8IE5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfaGVscGVyIH5mIGxlZnQgYWNjIHdpdGhcbiAgICAgICAgIHwgU3RvcCBfYSBhcyB4IC0+IHhcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIGFjYyB2YWx1ZSB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICAgICB8IENvbnRpbnVlIGEgLT4gZm9sZF91bnRpbF9oZWxwZXIgfmYgcmlnaHQgYSkpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGluaXQgd2l0aFxuICAgIHwgQ29udGludWUgeCAtPiBmaW5pc2ggeCBbQG5vbnRhaWxdXG4gICAgfCBTdG9wIHggLT4geFxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgfCBOb2RlIChfLCB2LCBFbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCBfLCByLCBfLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgciwgXywgXykgLT4gclxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gYmFsIHQxIChtaW5fZWx0X2V4biB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG4gIGxldCBjb25jYXQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gam9pbiB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICBsZXQgc3BsaXQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBzcGxpdCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gRW1wdHksIFNvbWUgdiwgRW1wdHlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIEVtcHR5LCBOb25lLCBMZWFmIHZcbiAgICAgICAgZWxzZSBMZWFmIHYsIE5vbmUsIEVtcHR5XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gbCwgU29tZSB2LCByXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxsLCBtYXliZV9lbHQsIHJsID0gc3BsaXQgbCBpblxuICAgICAgICAgIGxsLCBtYXliZV9lbHQsIGpvaW4gcmwgdiByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbHIsIG1heWJlX2VsdCwgcnIgPSBzcGxpdCByIGluXG4gICAgICAgICAgam9pbiBsIHYgbHIsIG1heWJlX2VsdCwgcnIpXG4gICAgaW5cbiAgICBzcGxpdCB0XG4gIDs7XG5cbiAgbGV0IHJlYyBzcGxpdF9sZV9ndCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5LCBFbXB0eVxuICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA+PSAwIHRoZW4gTGVhZiB2LCBFbXB0eSBlbHNlIEVtcHR5LCBMZWFmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gYWRkX21heCBsIHYsIHJcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIHJsID0gc3BsaXRfbGVfZ3QgbCB4IH5jb21wYXJlX2VsdCBpblxuICAgICAgICBsbCwgam9pbiBybCB2IHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxyLCByciA9IHNwbGl0X2xlX2d0IHIgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgam9pbiBsIHYgbHIsIHJyKVxuICA7O1xuXG4gIGxldCByZWMgc3BsaXRfbHRfZ2UgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPiAwIHRoZW4gTGVhZiB2LCBFbXB0eSBlbHNlIEVtcHR5LCBMZWFmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gbCwgYWRkX21pbiB2IHJcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIHJsID0gc3BsaXRfbHRfZ2UgbCB4IH5jb21wYXJlX2VsdCBpblxuICAgICAgICBsbCwgam9pbiBybCB2IHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxyLCByciA9IHNwbGl0X2x0X2dlIHIgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgam9pbiBsIHYgbHIsIHJyKVxuICA7O1xuXG4gICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IHJlYyBtZW0gdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDBcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDAgfHwgbWVtIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2VsdFxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24geCA9IExlYWYgeFxuXG4gIGxldCByZW1vdmUgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA9IDAgdGhlbiBFbXB0eSBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByIGVsc2UgaWYgYyA8IDAgdGhlbiBiYWwgKGF1eCBsKSB2IHIgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6XyA9XG4gICAgbGV0IHJlYyBhdXggdCBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBMZWFmIF8gLT4gaWYgaSA9IDAgdGhlbiBFbXB0eSBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsX3NpemUgPSBsZW5ndGggbCBpblxuICAgICAgICBsZXQgYyA9IFBvbHkuY29tcGFyZSBpIGxfc2l6ZSBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIG1lcmdlIGwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gYmFsIChhdXggbCBpKSB2IHJcbiAgICAgICAgZWxzZSBiYWwgbCB2IChhdXggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IGkgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHVuaW9uIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIHMxXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICAgICAgfCBMZWFmIHYxLCBfIC0+IHVuaW9uIChOb2RlIChFbXB0eSwgdjEsIEVtcHR5LCAxLCAxKSkgczJcbiAgICAgICAgfCBfLCBMZWFmIHYyIC0+IHVuaW9uIHMxIChOb2RlIChFbXB0eSwgdjIsIEVtcHR5LCAxLCAxKSlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBoMSwgXyksIE5vZGUgKGwyLCB2MiwgcjIsIGgyLCBfKSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxXG4gICAgICAgICAgICB0aGVuIGFkZCBzMSB2MiB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbDIsIF8sIHIyID0gc3BsaXQgczIgdjEgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpKVxuICAgICAgICAgIGVsc2UgaWYgaDEgPSAxXG4gICAgICAgICAgdGhlbiBhZGQgczIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbDEsIF8sIHIxID0gc3BsaXQgczEgdjIgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKSkpXG4gICAgaW5cbiAgICB1bmlvbiBzMSBzMlxuICA7O1xuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIHhzID1cbiAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIExpc3QuZm9sZCB4cyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjIHggLT4gdW5pb24gYWMgKHRvX3RyZWUgeCkgfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlciBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IChMZWFmIGVsdCBhcyBzaW5nbGV0b24pLCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIChMZWFmIGVsdCBhcyBzaW5nbGV0b24pIC0+XG4gICAgICAgICAgaWYgbWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0IHRoZW4gc2luZ2xldG9uIGVsc2UgRW1wdHlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgICB8IGwyLCBTb21lIHYxLCByMiAtPiBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKSkpXG4gICAgaW5cbiAgICBpbnRlciBzMSBzMlxuICA7O1xuXG4gIGxldCBkaWZmIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gRW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIC0+IEVtcHR5XG4gICAgICAgIHwgdDEsIEVtcHR5IC0+IHQxXG4gICAgICAgIHwgTGVhZiB2MSwgdDIgLT4gZGlmZiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHQyXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgICB8IGwyLCBTb21lIF8sIHIyIC0+IGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpKSlcbiAgICBpblxuICAgIGRpZmYgczEgczJcbiAgOztcblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2EsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnYSAqICdhIHRyZWUgKiAoJ2EsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyBzIChlIDogKF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiB2IC0+IE1vcmUgKHYsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgcyAoZSA6IChfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29uc19yaWdodCByIChNb3JlICh2LCBsLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3NldCBzIDogKF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHMgRW5kXG4gICAgbGV0IG9mX3NldF9yaWdodCBzIDogKF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHMgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmIHYgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIEVtcHR5LCAxLCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIHIsIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBfLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPiAwIC0+IGxvb3AgbCBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCByIChNb3JlICh2LCBsLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IGUxIGUyID1cbiAgICAgIGxldCByZWMgbG9vcCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIGUxLCBlMiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gMFxuICAgICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICAgIHwgTW9yZSAodjEsIHIxLCBlMSksIE1vcmUgKHYyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgaWYgcGh5c19lcXVhbCByMSByMlxuICAgICAgICAgIHRoZW4gbG9vcCBlMSBlMlxuICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpXG4gICAgICBpblxuICAgICAgbG9vcCBlMSBlMlxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGl0ZXIgfmYgPSBmdW5jdGlvblxuICAgICAgfCBFbmQgLT4gKClcbiAgICAgIHwgTW9yZSAoYSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgZiBhO1xuICAgICAgICBpdGVyIChjb25zIHRyZWUgZW51bSkgfmZcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIyIGNvbXBhcmVfZWx0IHQxIHQyIH5mID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gKClcbiAgICAgICAgfCBFbmQsIF8gLT4gaXRlciB0MiB+ZjooZnVuIGEgLT4gZiAoYFJpZ2h0IGEpKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgXywgRW5kIC0+IGl0ZXIgdDEgfmY6KGZ1biBhIC0+IGYgKGBMZWZ0IGEpKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBCb3RoIChhMSwgYTIpKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgZiAoYExlZnQgYTEpO1xuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBmIChgUmlnaHQgYTIpO1xuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MiBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQgPVxuICAgICAgbGV0IHN0ZXAgc3RhdGUgOiAoKF8sIF8pIEVpdGhlci50LCBfKSBTZXF1ZW5jZS5TdGVwLnQgPVxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoZWx0LCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBTZWNvbmQgZWx0OyBzdGF0ZSA9IEVuZCwgY29ucyB0cmVlIGVudW0gfVxuICAgICAgICB8IE1vcmUgKGVsdCwgdHJlZSwgZW51bSksIEVuZCAtPlxuICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBGaXJzdCBlbHQ7IHN0YXRlID0gY29ucyB0cmVlIGVudW0sIEVuZCB9XG4gICAgICAgIHwgKE1vcmUgKGExLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoYTIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID1cbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgICB0aGVuIGVudW0xLCBlbnVtMlxuICAgICAgICAgICAgICBlbHNlIGNvbnMgdHJlZTEgZW51bTEsIGNvbnMgdHJlZTIgZW51bTJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBuZXh0X3N0YXRlIH0pXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBGaXJzdCBhMTsgc3RhdGUgPSBjb25zIHRyZWUxIGVudW0xLCByaWdodCB9XG4gICAgICAgICAgZWxzZSBZaWVsZCB7IHZhbHVlID0gU2Vjb25kIGEyOyBzdGF0ZSA9IGxlZnQsIGNvbnMgdHJlZTIgZW51bTIgfVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OihvZl9zZXQgdDEsIG9mX3NldCB0MikgfmY6c3RlcFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGs7IHN0YXRlID0gRW51bS5jb25zIHQgZSB9XG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPlxuICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrOyBzdGF0ZSA9IEVudW0uY29uc19yaWdodCB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0X3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2VsdCA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2VsdCBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlbHQgLT4gYWRkIHQgZWx0IH5jb21wYXJlX2VsdFxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGdyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8IDApIFtAbm9udGFpbF1cbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID4gMCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgbGV0IGlzX2xlZnQgeCA9XG4gICAgICBtYXRjaCBzZWdtZW50X29mIHggd2l0aFxuICAgICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgICB8IGBSaWdodCAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOmlzX2xlZnQgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0IFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICAgICAgdCdcbiAgICA9XG4gICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdClcbiAgICAgICh0b19zZXF1ZW5jZSBjb21wYXJhdG9yIH5vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0JylcbiAgICAgIH5jb21wYXJlOlxuICAgICAgICAobWF0Y2ggb3JkZXIgd2l0aFxuICAgICAgICAgfCBgSW5jcmVhc2luZyAtPiBjb21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIHwgYERlY3JlYXNpbmcgLT4gRm4uZmxpcCBjb21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPVxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMilcbiAgOztcblxuICBsZXQgaXRlcjIgczEgczIgfmNvbXBhcmVfZWx0IH5mID1cbiAgICBFbnVtLml0ZXIyIGNvbXBhcmVfZWx0IChFbnVtLm9mX3NldCBzMSkgKEVudW0ub2Zfc2V0IHMyKSB+ZlxuICA7O1xuXG4gIGxldCBlcXVhbCBzMSBzMiB+Y29tcGFyZV9lbHQgPSBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID0gMFxuXG4gIGxldCBpc19zdWJzZXQgczEgfm9mXzpzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaXNfc3Vic2V0IHMxIH5vZl86czIgPVxuICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgIHwgRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBMZWFmIHYxLCB0MiAtPiBtZW0gdDIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCBMZWFmIHYyIC0+XG4gICAgICAgIChtYXRjaCBsMSwgcjEgd2l0aFxuICAgICAgICAgfCBFbXB0eSwgRW1wdHkgLT5cbiAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZG4ndCBvY2N1ciBpbiBwcmFjdGljZSBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGNvbnN0cnVjdGVkXG4gICAgICAgICAgICAgIGEgTGVhZiByYXRoZXIgdGhhbiBhIE5vZGUgd2l0aCB0d28gRW1wdHkgc3VidHJlZXMgKilcbiAgICAgICAgICAgY29tcGFyZV9lbHQgdjEgdjIgPSAwXG4gICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCAoTm9kZSAobDIsIHYyLCByMiwgXywgXykgYXMgdDIpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIHBoeXNfZXF1YWwgczEgczIgfHwgKGlzX3N1YnNldCBsMSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnIyKVxuICAgICAgICAgICgqIE5vdGUgdGhhdCBoZWlnaHQgYW5kIHNpemUgZG9uJ3QgbWF0dGVyIGhlcmUuICopXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBpc19zdWJzZXQgKE5vZGUgKGwxLCB2MSwgRW1wdHksIDAsIDApKSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnQyXG4gICAgICAgIGVsc2UgaXNfc3Vic2V0IChOb2RlIChFbXB0eSwgdjEsIHIxLCAwLCAwKSkgfm9mXzpyMiAmJiBpc19zdWJzZXQgbDEgfm9mXzp0MlxuICAgIGluXG4gICAgaXNfc3Vic2V0IHMxIH5vZl86czJcbiAgOztcblxuICBsZXQgcmVjIGFyZV9kaXNqb2ludCBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgfCBFbXB0eSwgXyB8IF8sIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgZWx0LCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIExlYWYgZWx0IC0+IG5vdCAobWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0KVxuICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIGZhbHNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT5cbiAgICAgICAgICBhcmVfZGlzam9pbnQgbDEgbDIgfmNvbXBhcmVfZWx0ICYmIGFyZV9kaXNqb2ludCByMSByMiB+Y29tcGFyZV9lbHRcbiAgICAgICAgfCBfLCBTb21lIF8sIF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgTGVhZiB2IC0+IGYgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBpdGVyIGw7XG4gICAgICAgIGYgdjtcbiAgICAgICAgaXRlciByXG4gICAgaW5cbiAgICBpdGVyIHQgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiA9IEVudW0uc3ltbWV0cmljX2RpZmZcblxuICBsZXQgcmVjIGZvbGQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIGFjY3UgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkgdilcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9lbGVtIHN0YXRlIHQgPVxuICAgIGZvbGQgdCB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKSB+ZjpoYXNoX2ZvbGRfZWxlbVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuXG4gIGxldCByZWMgZm9sZF9yaWdodCBzIH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IGYgdiBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX3JpZ2h0IH5mIGwgfmluaXQ6KGYgdiAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCByZWMgZm9yX2FsbCB0IH5mOnAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2ICYmIGZvcl9hbGwgfmY6cCBsICYmIGZvcl9hbGwgfmY6cCByXG4gIDs7XG5cbiAgbGV0IHJlYyBleGlzdHMgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT4gcCB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBwIHYgfHwgZXhpc3RzIH5mOnAgbCB8fCBleGlzdHMgfmY6cCByXG4gIDs7XG5cbiAgbGV0IGZpbHRlciBzIH5mOnAgPVxuICAgIGxldCByZWMgZmlsdCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IExlYWYgdiBhcyB0IC0+IGlmIHAgdiB0aGVuIHQgZWxzZSBFbXB0eVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSBhcyB0IC0+XG4gICAgICAgIGxldCBsJyA9IGZpbHQgbCBpblxuICAgICAgICBsZXQga2VlcF92ID0gcCB2IGluXG4gICAgICAgIGxldCByJyA9IGZpbHQgciBpblxuICAgICAgICBpZiBrZWVwX3YgJiYgcGh5c19lcXVhbCBsIGwnICYmIHBoeXNfZXF1YWwgciByJ1xuICAgICAgICB0aGVuIHRcbiAgICAgICAgZWxzZSBpZiBrZWVwX3ZcbiAgICAgICAgdGhlbiBqb2luIGwnIHYgcidcbiAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcbiAgICBpblxuICAgIGZpbHQgcyBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICAobWF0Y2ggcCB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgZmlsdFxuICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0KVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgclxuICAgIGluXG4gICAgZmlsdCBFbXB0eSBzIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHMgfmY6cCA9XG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgICB8IExlYWYgdiBhcyB0IC0+IGlmIHAgdiB0aGVuIHQsIEVtcHR5IGVsc2UgRW1wdHksIHRcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgbCd0LCBsJ2YgPSBsb29wIGwgaW5cbiAgICAgICAgbGV0IGtlZXBfdl90ID0gcCB2IGluXG4gICAgICAgIGxldCByJ3QsIHInZiA9IGxvb3AgciBpblxuICAgICAgICBsZXQgbWsga2VlcF92IGwnIHInID1cbiAgICAgICAgICBpZiBrZWVwX3YgJiYgcGh5c19lcXVhbCBsIGwnICYmIHBoeXNfZXF1YWwgciByJ1xuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgaWYga2VlcF92XG4gICAgICAgICAgdGhlbiBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuICAgICAgICBpblxuICAgICAgICBtayBrZWVwX3ZfdCBsJ3Qgcid0LCBtayAobm90IGtlZXBfdl90KSBsJ2YgcidmXG4gICAgaW5cbiAgICBsb29wIHMgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IHYgOjogYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcbiAgOztcblxuICBsZXQgZWxlbWVudHMgcyA9IGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgbGV0IGNob29zZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBjaG9vc2VfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTZXQuY2hvb3NlX2V4bjogZW1wdHkgc2V0XCIpIGluXG4gICAgbGV0IGNob29zZV9leG4gdCA9XG4gICAgICBtYXRjaCBjaG9vc2UgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgY2hvb3NlX2V4blxuICA7O1xuXG4gIGxldCBvZl9saXN0IGxzdCB+Y29tcGFyZV9lbHQgPVxuICAgIExpc3QuZm9sZCBsc3QgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlIH5jb21wYXJlX2VsdCA9XG4gICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgdG9fbGlzdCBzID0gZWxlbWVudHMgc1xuXG4gIGxldCBvZl9hcnJheSBhIH5jb21wYXJlX2VsdCA9XG4gICAgQXJyYXkuZm9sZCBhIH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gICgqIGZhc3RlciBidXQgZXF1aXZhbGVudCB0byBbQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KV0gKilcbiAgbGV0IHRvX2FycmF5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IFt8fF1cbiAgICB8IExlYWYgdiAtPiBbfCB2IHxdXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgbGV0IHJlcyA9IEFycmF5LmNyZWF0ZSB+bGVuOnMgdiBpblxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgKCogSW52YXJpYW50OiBvbiBlbnRyeSBhbmQgb24gZXhpdCB0byBbbG9vcF0sICFwb3NfcmVmIGlzIHRoZSBuZXh0XG4gICAgICAgICAgIGF2YWlsYWJsZSBjZWxsIGluIHRoZSBhcnJheS4gKilcbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IExlYWYgdiAtPlxuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgICBsb29wIGw7XG4gICAgICAgICAgcmVzLighcG9zX3JlZikgPC0gdjtcbiAgICAgICAgICBpbmNyIHBvc19yZWY7XG4gICAgICAgICAgbG9vcCByXG4gICAgICBpblxuICAgICAgbG9vcCBsO1xuICAgICAgKCogcmVzLighcG9zX3JlZikgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAoYnkgQXJyYXkuY3JlYXRlIH5sZW46YWJvdmUpLiAqKVxuICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgbG9vcCByO1xuICAgICAgcmVzXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mIH5jb21wYXJlX2VsdCA9XG4gICAgZm9sZCB0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IChmIHgpIH5jb21wYXJlX2VsdCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBncm91cF9ieSBzZXQgfmVxdWl2ID1cbiAgICBsZXQgcmVjIGxvb3Agc2V0IGVxdWl2X2NsYXNzZXMgPVxuICAgICAgaWYgaXNfZW1wdHkgc2V0XG4gICAgICB0aGVuIGVxdWl2X2NsYXNzZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeCA9IGNob29zZV9leG4gc2V0IGluXG4gICAgICAgIGxldCBlcXVpdl94LCBub3RfZXF1aXZfeCA9XG4gICAgICAgICAgcGFydGl0aW9uX3RmIHNldCB+ZjooZnVuIGVsdCAtPiBwaHlzX2VxdWFsIHggZWx0IHx8IGVxdWl2IHggZWx0KVxuICAgICAgICBpblxuICAgICAgICBsb29wIG5vdF9lcXVpdl94IChlcXVpdl94IDo6IGVxdWl2X2NsYXNzZXMpKVxuICAgIGluXG4gICAgbG9vcCBzZXQgW10gW0Bub250YWlsXVxuICA7O1xuXG5cbiAgbGV0IHJlYyBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gU29tZSB2XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggZmluZCBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbmQgciB+ZlxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX21hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAobWF0Y2ggZiB2IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBmaW5kX21hcCBsIH5mIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgciB+ZlxuICAgICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcikpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2V0LmZpbmRfZXhuIGZhaWxlZCB0byBmaW5kIGEgbWF0Y2hpbmcgZWxlbWVudFwiXG4gICAgfCBTb21lIGUgLT4gZVxuICA7O1xuXG4gIGxldCByZWMgbnRoIHQgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgaSA9IDAgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgaWYgaSA+PSBzXG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBudGggbCBpIGVsc2UgaWYgYyA9IDAgdGhlbiBTb21lIHYgZWxzZSBudGggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgbG9vcCB4cyBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuID1cbiAgICAgIG1hdGNoIHhzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgbGVmdG92ZXJzXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGlmIG1lbSBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0XG4gICAgICAgIHRoZW4gbG9vcCB0bCBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuXG4gICAgICAgIGVsc2UgbG9vcCB0bCAoaGQgOjogbGVmdG92ZXJzKSAoYWRkIGFscmVhZHlfc2VlbiBoZCB+Y29tcGFyZV9lbHQpXG4gICAgaW5cbiAgICBsb29wIHhzIFtdIGVtcHR5XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBsc3QgLT5cbiAgICAgIGxldCBlbHRfbHN0ID0gTGlzdC5tYXAgbHN0IH5mOmFfb2Zfc2V4cCBpblxuICAgICAgbGV0IHNldCA9IG9mX2xpc3QgZWx0X2xzdCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGxlbmd0aCBzZXQgPSBMaXN0Lmxlbmd0aCBsc3RcbiAgICAgIHRoZW4gc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNldCA9IHJlZiBlbXB0eSBpblxuICAgICAgICBMaXN0Lml0ZXIyX2V4biBsc3QgZWx0X2xzdCB+ZjooZnVuIGVsX3NleHAgZWwgLT5cbiAgICAgICAgICBpZiBtZW0gIXNldCBlbCB+Y29tcGFyZV9lbHRcbiAgICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJTZXQudF9vZl9zZXhwOiBkdXBsaWNhdGUgZWxlbWVudCBpbiBzZXRcIiBlbF9zZXhwXG4gICAgICAgICAgZWxzZSBzZXQgOj0gYWRkICFzZXQgZWwgfmNvbXBhcmVfZWx0KTtcbiAgICAgICAgYXNzZXJ0IGZhbHNlKVxuICAgIHwgc2V4cCAtPiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biBlbCBhY2MgLT4gc2V4cF9vZl9hIGVsIDo6IGFjYykpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgbGV0IGlzX3N1YnNldFxuICAgICAgICAgIChzdWJzZXQgOiBfIE5hbWVkLnQpXG4gICAgICAgICAgfm9mXzooc3VwZXJzZXQgOiBfIE5hbWVkLnQpXG4gICAgICAgICAgfnNleHBfb2ZfZWx0XG4gICAgICAgICAgfmNvbXBhcmVfZWx0XG4gICAgICA9XG4gICAgICBsZXQgaW52YWxpZF9lbGVtZW50cyA9IGRpZmYgc3Vic2V0LnNldCBzdXBlcnNldC5zZXQgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBpc19lbXB0eSBpbnZhbGlkX2VsZW1lbnRzXG4gICAgICB0aGVuIE9rICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGludmFsaWRfZWxlbWVudHNfc2V4cCA9IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBpbnZhbGlkX2VsZW1lbnRzIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgKHN1YnNldC5uYW1lIF4gXCIgaXMgbm90IGEgc3Vic2V0IG9mIFwiIF4gc3VwZXJzZXQubmFtZSlcbiAgICAgICAgICAgICBbIFwiaW52YWxpZF9lbGVtZW50c1wiLCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgXSkpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCBzMSBzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0ID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgICAgWyBpc19zdWJzZXQgczEgfm9mXzpzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIDsgaXNfc3Vic2V0IHMyIH5vZl86czEgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2EsICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogJ2EgVHJlZTAudFxuICB9XG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdHJlZSA9ICdhIFRyZWUwLnRcblxubGV0IGxpa2UgeyB0cmVlID0gXzsgY29tcGFyYXRvciB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3IgfVxuXG5sZXQgbGlrZV9tYXliZV9ub19vcCAoeyB0cmVlID0gb2xkX3RyZWU7IGNvbXBhcmF0b3IgfSBhcyBvbGRfdCkgdHJlZSA9XG4gIGlmIHBoeXNfZXF1YWwgb2xkX3RyZWUgdHJlZSB0aGVuIG9sZF90IGVsc2UgeyB0cmVlOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCBjb21wYXJlX2VsdCB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcblxuICBsZXQgY29tcGFyYXRvcl9zICh0eXBlIGsgY21wKSB0IDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGtcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gICAgZW5kKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0LnRyZWVcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0LnRyZWVcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdC50cmVlXG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHQudHJlZVxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0LnRyZWVcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0LnRyZWVcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdC50cmVlIH5pbml0IH5mIH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhLnRyZWUgYi50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0LnRyZWUgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdC50cmVlIH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdC50cmVlIH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdC50cmVlIH5mXG4gIGxldCBtZW0gdCBhID0gVHJlZTAubWVtIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcbiAgbGV0IGZpbHRlciB0IH5mID0gbGlrZV9tYXliZV9ub19vcCB0IChUcmVlMC5maWx0ZXIgdC50cmVlIH5mKVxuICBsZXQgYWRkIHQgYSA9IGxpa2UgdCAoVHJlZTAuYWRkIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCByZW1vdmUgdCBhID0gbGlrZSB0IChUcmVlMC5yZW1vdmUgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHVuaW9uIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAudW5pb24gdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgaW50ZXIgdDEgdDIgPSBsaWtlIHQxIChUcmVlMC5pbnRlciB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG4gIGxldCBkaWZmIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjb21wYXJlX2VsdCB0MSkgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBlcXVhbCB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICBsZXQgaXNfc3Vic2V0IHQgfm9mXyA9IFRyZWUwLmlzX3N1YnNldCB0LnRyZWUgfm9mXzpvZl8udHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGxldCB0b19uYW1lZF90cmVlIChuYW1lZCA6IChfLCBfKSB0IE5hbWVkLnQpID0geyBuYW1lZCB3aXRoIHNldCA9IG5hbWVkLnNldC50cmVlIH1cblxuICAgIGxldCBpc19zdWJzZXQgc3Vic2V0IH5vZl86c3VwZXJzZXQgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgICh0b19uYW1lZF90cmVlIHN1YnNldClcbiAgICAgICAgfm9mXzoodG9fbmFtZWRfdHJlZSBzdXBlcnNldClcbiAgICAgICAgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBzdWJzZXQuc2V0KVxuICAgICAgICB+c2V4cF9vZl9lbHQ6c3Vic2V0LnNldC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgdDEgdDIgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdCBbIGlzX3N1YnNldCB0MSB+b2ZfOnQyOyBpc19zdWJzZXQgdDIgfm9mXzp0MSBdXG4gICAgOztcblxuICAgIGluY2x1ZGUgTmFtZWRcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBsZXQgdHJlZV90LCB0cmVlX2YgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mIGluXG4gICAgbGlrZV9tYXliZV9ub19vcCB0IHRyZWVfdCwgbGlrZV9tYXliZV9ub19vcCB0IHRyZWVfZlxuICA7O1xuXG4gIGxldCBzcGxpdCB0IGEgPVxuICAgIGxldCB0cmVlMSwgYiwgdHJlZTIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWUxLCBiLCBsaWtlIHQgdHJlZTJcbiAgOztcblxuICBsZXQgc3BsaXRfbGVfZ3QgdCBhID1cbiAgICBsZXQgdHJlZTEsIHRyZWUyID0gVHJlZTAuc3BsaXRfbGVfZ3QgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2x0X2dlIHQgYSA9XG4gICAgbGV0IHRyZWUxLCB0cmVlMiA9IFRyZWUwLnNwbGl0X2x0X2dlIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9IExpc3QubWFwIChUcmVlMC5ncm91cF9ieSB0LnRyZWUgfmVxdWl2KSB+ZjoobGlrZSB0KVxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0LnRyZWUgaVxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlX2luZGV4IHQudHJlZSBpIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSB0LmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICAgICAgdCcudHJlZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgc3RhdGUgdC50cmVlXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID0gKCdhLCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBjZSBjb21wYXJhdG9yID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpIGFfb2Zfc2V4cCBzZXhwXG4gIDs7XG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGUgPSBUcmVlMC5zaW5nbGV0b24gZVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID0gVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdFxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdFxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0XG4gIGxldCB0b19saXN0IHQgPSBUcmVlMC50b19saXN0IHRcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQgfmluaXQgfmZcbiAgbGV0IG1hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAubWFwIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZmlsdGVyIHQgfmYgPSBUcmVlMC5maWx0ZXIgdCB+ZlxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gVHJlZTAucGFydGl0aW9uX3RmIHQgfmZcbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEgYiB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAubWVtIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuYWRkIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCByZW1vdmUgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAucmVtb3ZlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLnVuaW9uIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGludGVyIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuaW50ZXIgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmRpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNlIGNvbXBhcmF0b3IpIHQxIHQyXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgYXJlX2Rpc2pvaW50IH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGEgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl8gfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLnVuaW9uX2xpc3QgbCB+dG9fdHJlZTpGbi5pZCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9IFRyZWUwLmdyb3VwX2J5IHQgfmVxdWl2XG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5zcGxpdCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc3BsaXRfbGVfZ3QgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXRfbGVfZ3QgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNwbGl0X2x0X2dlIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0X2x0X2dlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQgaVxuICBsZXQgcmVtb3ZlX2luZGV4IH5jb21wYXJhdG9yIHQgaSA9IFRyZWUwLnJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0ID0gdFxuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0J1xuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWUwLk5hbWVkXG5cbiAgICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQxIH5vZl86dDIgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgIHQxXG4gICAgICAgIH5vZl86dDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgICAgVHJlZTAuTmFtZWQuZXF1YWxcbiAgICAgICAgdDFcbiAgICAgICAgdDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5jb21wYXJlIGFfb2Zfc2V4cCBzZXhwKVxuICA7O1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cbiAgZW5kXG5cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGUgfVxuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgfnRvX3RyZWUgbClcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgbGV0IHRyZWUgPVxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IuTW9uYWRfaW5maXguKFxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgPj58IGZ1biB0cmVlIC0+IHsgY29tcGFyYXRvcjsgdHJlZSB9KVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAubWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvclxuICAgIDsgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIH1cbiAgOztcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG50eXBlICgnZWx0LCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGVsdCBjbXApICgobW9kdWxlIE0pIDogKGVsdCwgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCB1bmlvbl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB+bGVuIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2Zfc2VxdWVuY2UgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBzdGFibGVfZGVkdXBfbGlzdCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBtYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxubGV0IGZpbHRlcl9tYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbmxldCB0b190cmVlID0gVXNpbmdfY29tcGFyYXRvci50b190cmVlXG5sZXQgb2ZfdHJlZSBtIHQgPSBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGVsdCBjbXApXG4gICAgICAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdClcbiAgOiAoZWx0LCBfKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9IGVsdCkgc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZVxuOztcblxubGV0IGhhc2hfbV9fdCBmb2xkZXIgdCA9XG4gIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9tX190IGZvbGRlciAoSGFzaC5jcmVhdGUgKCkpIHQgaW5cbiAgSGFzaC5nZXRfaGFzaF92YWx1ZSBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSBzZXQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgJ2VsdCB0cmVlID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuXG4gIGluY2x1ZGUgVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgbGV0IHNpbmdsZXRvbiBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgYVxuICBsZXQgdW5pb25fbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yIGFcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2Zfc2VxdWVuY2UgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvciBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfcmVmXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPSBlcXVhbF9yZWZcblxuICBsZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfKVxuICAgICAgICA6ICgoKGFfXzAwOV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA5XykgLT4gKGFfXzAwOV8gdFtAb2NhbWwubG9jYWxdKSAtPiBhX18wMDlfIHQpIC0+XG4gICAgICBnbG9iYWxpemVfcmVmXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IHJlZl9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX3JlZlxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiByZWZfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBnbG9iYWxpemUgOiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0XG5cbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbigqIEluIHRoZSBkZWZpbml0aW9uIG9mIFt0XSwgd2UgZG8gbm90IGhhdmUgW1tAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXSBiZWNhdXNlXG4gICBpbiBnZW5lcmFsLCBzeW50YXggZXh0ZW5zaW9ucyB0ZW5kIHRvIHVzZSB0aGUgaW1wbGVtZW50YXRpb24gd2hlbiBhdmFpbGFibGUgcmF0aGVyIHRoYW5cbiAgIHVzaW5nIHRoZSBhbGlhcy4gIEhlcmUgdGhhdCB3b3VsZCBsZWFkIHRvIHVzZSB0aGUgcmVjb3JkIHJlcHJlc2VudGF0aW9uIFsgeyBtdXRhYmxlXG4gICBjb250ZW50cyA6ICdhIH0gXSB3aGljaCB3b3VsZCByZXN1bHQgaW4gZGlmZmVyZW50IChhbmQgdW53YW50ZWQpIGJlaGF2aW9yLiAgKilcbnR5cGUgJ2EgdCA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuZXh0ZXJuYWwgY3JlYXRlIDogJ2EgLT4gKCdhIHRbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG5sZXQgc3dhcCB0MSB0MiA9XG4gIGxldCB0bXAgPSAhdDEgaW5cbiAgdDEgOj0gIXQyO1xuICB0MiA6PSB0bXBcbjs7XG5cbmxldCByZXBsYWNlIHQgZiA9IHQgOj0gZiAhdFxuXG5sZXQgc2V0X3RlbXBvcmFyaWx5IHQgYSB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gIXQgaW5cbiAgdCA6PSBhO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHQgOj0gcmVzdG9yZV90bylcbjs7XG5cbm1vZHVsZSBBbmRfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVCA6ICdhIHJlZiAqICdhIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V0IChUIChyLCBhKSkgPSByIDo9IGFcbiAgbGV0IHNldHMgdHMgPSBMaXN0Lml0ZXIgdHMgfmY6c2V0XG4gIGxldCBzbmFwc2hvdCAoVCAociwgXykpID0gVCAociwgIXIpXG4gIGxldCBzbmFwc2hvdHMgdHMgPSBMaXN0Lm1hcCB0cyB+ZjpzbmFwc2hvdFxuZW5kXG5cbmxldCBzZXRzX3RlbXBvcmFyaWx5IGFuZF92YWx1ZXMgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9IEFuZF92YWx1ZS5zbmFwc2hvdHMgYW5kX3ZhbHVlcyBpblxuICBBbmRfdmFsdWUuc2V0cyBhbmRfdmFsdWVzO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IEFuZF92YWx1ZS5zZXRzIHJlc3RvcmVfdG8pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cblxuKCogW3RdIHN0b3JlcyB0aGUgW3QubGVuZ3RoXSBxdWV1ZSBlbGVtZW50cyBhdCBjb25zZWN1dGl2ZSBpbmNyZWFzaW5nIGluZGljZXMgb2YgW3QuZWx0c10sXG4gICBtb2QgdGhlIGNhcGFjaXR5IG9mIFt0XSwgd2hpY2ggaXMgW09wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gIFRoZSBjYXBhY2l0eSBpc1xuICAgcmVxdWlyZWQgdG8gYmUgYSBwb3dlciBvZiB0d28gKHVzZXItcmVxdWVzdGVkIGNhcGFjaXRpZXMgYXJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3RcbiAgIHBvd2VyKSwgc28gdGhhdCBtb2QgY2FuIHF1aWNrbHkgYmUgY29tcHV0ZWQgdXNpbmcgW2xhbmQgdC5tYXNrXSwgd2hlcmUgW3QubWFzayA9XG4gICBjYXBhY2l0eSB0IC0gMV0uICBTbywgcXVldWUgZWxlbWVudCBbaV0gaXMgYXQgW3QuZWx0cy4oICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2sgKV0uXG5cbiAgIFtudW1fbXV0YXRpb25zXSBpcyB1c2VkIHRvIGRldGVjdCBtb2RpZmljYXRpb24gZHVyaW5nIGl0ZXJhdGlvbi4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBudW1fbXV0YXRpb25zIDogaW50XG4gIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbWFzayA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV9cbiAgICB7IG51bV9tdXRhdGlvbnMgPSBudW1fbXV0YXRpb25zX18wMDNfXG4gICAgOyBmcm9udCA9IGZyb250X18wMDVfXG4gICAgOyBtYXNrID0gbWFza19fMDA3X1xuICAgIDsgbGVuZ3RoID0gbGVuZ3RoX18wMDlfXG4gICAgOyBlbHRzID0gZWx0c19fMDExX1xuICAgIH0gLT5cbiAgICBsZXQgYm5kc19fMDAyXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTJfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMTFfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWx0c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDlfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX2ludCBtYXNrX18wMDdfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFza1wiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDZfID0gc2V4cF9vZl9pbnQgZnJvbnRfXzAwNV8gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmcm9udFwiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbnVtX211dGF0aW9uc19fMDAzXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm51bV9tdXRhdGlvbnNcIjsgYXJnX18wMDRfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMl9cbjs7XG5cbltAQEBlbmRdXG5cbm1vZHVsZSB0eXBlIFMgPSBRdWV1ZV9pbnRmLlNcblxubGV0IGluY19udW1fbXV0YXRpb25zIHQgPSB0Lm51bV9tdXRhdGlvbnMgPC0gdC5udW1fbXV0YXRpb25zICsgMVxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5sZXQgZWx0c19pbmRleCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9pc19zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9pc19zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgYSA9IE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSkgYVxubGV0IHVuc2FmZV91bnNldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5cbmxldCBjaGVja19pbmRleF9leG4gdCBpID1cbiAgaWYgaSA8IDAgfHwgaSA+PSB0Lmxlbmd0aFxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJRdWV1ZSBpbmRleCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIFsgXCJpbmRleFwiLCBpIHw+IEludC5zZXhwX29mX3Q7IFwibGVuZ3RoXCIsIHQubGVuZ3RoIHw+IEludC5zZXhwX29mX3QgXSlcbjs7XG5cbmxldCBnZXQgdCBpID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgdW5zYWZlX2dldCB0IGlcbjs7XG5cbmxldCBzZXQgdCBpIGEgPVxuICBjaGVja19pbmRleF9leG4gdCBpO1xuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICB1bnNhZmVfc2V0IHQgaSBhXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxubGV0IGxlbmd0aCB7IGxlbmd0aDsgXyB9ID0gbGVuZ3RoXG5cbmxldCBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zID1cbiAgaWYgdC5udW1fbXV0YXRpb25zIDw+IG51bV9tdXRhdGlvbnNcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwibXV0YXRpb24gb2YgcXVldWUgZHVyaW5nIGl0ZXJhdGlvblwiXG4gICAgICAgICBbIFwiXCIsIHQgfD4gc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIF0pXG47O1xuXG5sZXQgY29tcGFyZSA9XG4gIGxldCByZWMgdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCBwb3MgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MiA9XG4gICAgbWF0Y2ggcG9zID0gbGVuMSwgcG9zID0gbGVuMiB3aXRoXG4gICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiAxXG4gICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgIGxldCB4ID0gY29tcGFyZV9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MiBtdXQyO1xuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgIHwgMCAtPiB1bnNhZmVfY29tcGFyZV9mcm9tIGNvbXBhcmVfZWx0IChwb3MgKyAxKSB+dDEgfnQyIH5sZW4xIH5sZW4yIH5tdXQxIH5tdXQyXG4gICAgICAgfCBuIC0+IG4pXG4gIGluXG4gIGZ1biBjb21wYXJlX2VsdCB0MSB0MiAtPlxuICAgIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgICB0aGVuIDBcbiAgICBlbHNlXG4gICAgICB1bnNhZmVfY29tcGFyZV9mcm9tXG4gICAgICAgIGNvbXBhcmVfZWx0XG4gICAgICAgIDBcbiAgICAgICAgfnQxXG4gICAgICAgIH50MlxuICAgICAgICB+bGVuMTp0MS5sZW5ndGhcbiAgICAgICAgfmxlbjI6dDIubGVuZ3RoXG4gICAgICAgIH5tdXQxOnQxLm51bV9tdXRhdGlvbnNcbiAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGVxdWFsID1cbiAgbGV0IHJlYyB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgcG9zIH50MSB+dDIgfm11dDEgfm11dDIgfmxlbiA9XG4gICAgcG9zID0gbGVuXG4gICAgfHxcbiAgICBsZXQgYiA9IGVxdWFsX2VsdCAodW5zYWZlX2dldCB0MSBwb3MpICh1bnNhZmVfZ2V0IHQyIHBvcykgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICBiICYmIHVuc2FmZV9lcXVhbF9mcm9tIGVxdWFsX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bXV0MSB+bXV0MiB+bGVuXG4gIGluXG4gIGZ1biBlcXVhbF9lbHQgdDEgdDIgLT5cbiAgICBwaHlzX2VxdWFsIHQxIHQyXG4gICAgfHxcbiAgICBsZXQgbGVuMSA9IHQxLmxlbmd0aCBpblxuICAgIGxldCBsZW4yID0gdDIubGVuZ3RoIGluXG4gICAgbGVuMSA9IGxlbjJcbiAgICAmJiB1bnNhZmVfZXF1YWxfZnJvbVxuICAgICAgICAgZXF1YWxfZWx0XG4gICAgICAgICAwXG4gICAgICAgICB+dDFcbiAgICAgICAgIH50MlxuICAgICAgICAgfmxlbjpsZW4xXG4gICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgICB+bXV0Mjp0Mi5udW1fbXV0YXRpb25zXG47O1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgeyBudW1fbXV0YXRpb25zOyBtYXNrID0gXzsgZWx0czsgZnJvbnQ7IGxlbmd0aCB9ID0gdCBpblxuICBhc3NlcnQgKGZyb250ID49IDApO1xuICBhc3NlcnQgKGZyb250IDwgY2FwYWNpdHkgdCk7XG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgYXNzZXJ0IChjYXBhY2l0eSA9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gIGFzc2VydCAoY2FwYWNpdHkgPj0gMSk7XG4gIGFzc2VydCAoSW50LmlzX3BvdzIgY2FwYWNpdHkpO1xuICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkpO1xuICBmb3IgaSA9IDAgdG8gY2FwYWNpdHkgLSAxIGRvXG4gICAgaWYgaSA8IHQubGVuZ3RoXG4gICAgdGhlbiAoXG4gICAgICBpbnZhcmlhbnRfYSAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucylcbiAgICBlbHNlIGFzc2VydCAobm90ICh1bnNhZmVfaXNfc2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgP2NhcGFjaXR5ICgpIDogYSB0ID1cbiAgbGV0IGNhcGFjaXR5ID1cbiAgICBtYXRjaCBjYXBhY2l0eSB3aXRoXG4gICAgfCBOb25lIC0+IDJcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiY2Fubm90IGhhdmUgcXVldWUgd2l0aCBuZWdhdGl2ZSBjYXBhY2l0eVwiXG4gICAgICAgICAgICAgWyBcImNhcGFjaXR5XCIsIGNhcGFjaXR5IHw+IEludC5zZXhwX29mX3QgXSlcbiAgICAgIGVsc2UgaWYgY2FwYWNpdHkgPSAwXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgSW50LmNlaWxfcG93MiBjYXBhY2l0eVxuICBpblxuICB7IG51bV9tdXRhdGlvbnMgPSAwXG4gIDsgZnJvbnQgPSAwXG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGxlbmd0aCA9IDBcbiAgOyBlbHRzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmNhcGFjaXR5XG4gIH1cbjs7XG5cbmxldCBibGl0X3RvX2FycmF5IH5zcmMgZHN0ID1cbiAgYXNzZXJ0IChzcmMubGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZHN0KTtcbiAgbGV0IGZyb250X2xlbiA9IEludC5taW4gc3JjLmxlbmd0aCAoY2FwYWNpdHkgc3JjIC0gc3JjLmZyb250KSBpblxuICBsZXQgcmVzdF9sZW4gPSBzcmMubGVuZ3RoIC0gZnJvbnRfbGVuIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46ZnJvbnRfbGVuIH5zcmM6c3JjLmVsdHMgfnNyY19wb3M6c3JjLmZyb250IH5kc3QgfmRzdF9wb3M6MDtcbiAgT3B0aW9uX2FycmF5LmJsaXQgfmxlbjpyZXN0X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3Bvczpmcm9udF9sZW5cbjs7XG5cbmxldCBzZXRfY2FwYWNpdHlfaW50ZXJuYWwgdCBuZXdfY2FwYWNpdHkgPVxuICBsZXQgZHN0ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICBibGl0X3RvX2FycmF5IH5zcmM6dCBkc3Q7XG4gIHQuZnJvbnQgPC0gMDtcbiAgdC5tYXNrIDwtIG5ld19jYXBhY2l0eSAtIDE7XG4gIHQuZWx0cyA8LSBkc3Rcbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBkZXNpcmVkX2NhcGFjaXR5ID1cbiAgKCogV2UgYWxsb3cgYXJndW1lbnRzIGxlc3MgdGhhbiAxIHRvIFtzZXRfY2FwYWNpdHldLCBidXQgdHJhbnNsYXRlIHRoZW0gdG8gMSB0byBzaW1wbGlmeVxuICAgICB0aGUgY29kZSB0aGF0IHJlbGllcyBvbiB0aGUgYXJyYXkgbGVuZ3RoIGJlaW5nIGEgcG93ZXIgb2YgMi4gKilcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgbGV0IG5ld19jYXBhY2l0eSA9IEludC5jZWlsX3BvdzIgKG1heCAxIChtYXggZGVzaXJlZF9jYXBhY2l0eSB0Lmxlbmd0aCkpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0IHRoZW4gc2V0X2NhcGFjaXR5X2ludGVybmFsIHQgbmV3X2NhcGFjaXR5XG47O1xuXG5sZXQgZW5xdWV1ZSB0IGEgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBzZXRfY2FwYWNpdHlfaW50ZXJuYWwgdCAoMiAqIHQubGVuZ3RoKTtcbiAgdW5zYWZlX3NldCB0IHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGRlcXVldWVfbm9uZW1wdHkgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBlbHRzID0gdC5lbHRzIGluXG4gIGxldCBmcm9udCA9IHQuZnJvbnQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBmcm9udCBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgZWx0cyBmcm9udDtcbiAgdC5mcm9udCA8LSBlbHRzX2luZGV4IHQgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIFN0ZGxpYi5RdWV1ZS5FbXB0eSBlbHNlIGRlcXVldWVfbm9uZW1wdHkgdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9ub25lbXB0eSB0KVxubGV0IGRlcXVldWVfYW5kX2lnbm9yZV9leG4gKHR5cGUgZWx0KSAodCA6IGVsdCB0KSA9IGlnbm9yZSAoZGVxdWV1ZV9leG4gdCA6IGVsdClcbmxldCBmcm9udF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIHQuZnJvbnRcbmxldCBsYXN0X25vbmVtcHR5IHQgPSB1bnNhZmVfZ2V0IHQgKHQubGVuZ3RoIC0gMSlcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGZyb250X25vbmVtcHR5IHQpXG5sZXQgcGVla19leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBmcm9udF9ub25lbXB0eSB0XG5sZXQgbGFzdCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChsYXN0X25vbmVtcHR5IHQpXG5sZXQgbGFzdF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBsYXN0X25vbmVtcHR5IHRcblxubGV0IGNsZWFyIHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgdW5zYWZlX3Vuc2V0IHQgaVxuICAgIGRvbmU7XG4gICAgdC5sZW5ndGggPC0gMDtcbiAgICB0LmZyb250IDwtIDApXG47O1xuXG5sZXQgYmxpdF90cmFuc2ZlciB+c3JjIH5kc3QgP2xlbiAoKSA9XG4gIGluY19udW1fbXV0YXRpb25zIHNyYztcbiAgaW5jX251bV9tdXRhdGlvbnMgZHN0O1xuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBzcmMubGVuZ3RoXG4gICAgfCBTb21lIGxlbiAtPlxuICAgICAgaWYgbGVuIDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiUXVldWUuYmxpdF90cmFuc2ZlcjogbmVnYXRpdmUgbGVuZ3RoXCJcbiAgICAgICAgICAgICBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICAgICAgbWluIGxlbiBzcmMubGVuZ3RoXG4gIGluXG4gIGlmIGxlbiA+IDBcbiAgdGhlbiAoXG4gICAgc2V0X2NhcGFjaXR5IGRzdCAobWF4IChjYXBhY2l0eSBkc3QpIChkc3QubGVuZ3RoICsgbGVuKSk7XG4gICAgbGV0IGRzdF9zdGFydCA9IGRzdC5mcm9udCArIGRzdC5sZW5ndGggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgKCogVGhpcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHNpbXBseSBbZW5xdWV1ZSBkc3QgKGRlcXVldWVfbm9uZW1wdHkgc3JjKV0gKilcbiAgICAgIGxldCBzcmNfaSA9IChzcmMuZnJvbnQgKyBpKSBsYW5kIHNyYy5tYXNrIGluXG4gICAgICBsZXQgZHN0X2kgPSAoZHN0X3N0YXJ0ICsgaSkgbGFuZCBkc3QubWFzayBpblxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZVxuICAgICAgICBkc3QuZWx0c1xuICAgICAgICBkc3RfaVxuICAgICAgICAoT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gc3JjLmVsdHMgc3JjX2kpO1xuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBzcmMuZWx0cyBzcmNfaVxuICAgIGRvbmU7XG4gICAgZHN0Lmxlbmd0aCA8LSBkc3QubGVuZ3RoICsgbGVuO1xuICAgIHNyYy5mcm9udCA8LSAoc3JjLmZyb250ICsgbGVuKSBsYW5kIHNyYy5tYXNrO1xuICAgIHNyYy5sZW5ndGggPC0gc3JjLmxlbmd0aCAtIGxlbilcbjs7XG5cbmxldCBlbnF1ZXVlX2FsbCB0IGwgPVxuICAoKiBUcmF2ZXJzaW5nIHRoZSBsaXN0IHVwIGZyb250IHRvIGNvbXB1dGUgaXRzIGxlbmd0aCBpcyBwcm9iYWJseSAoYnV0IG5vdCBkZWZpbml0ZWx5KVxuICAgICBiZXR0ZXIgdGhhbiBkb3VibGluZyB0aGUgdW5kZXJseWluZyBhcnJheSBzaXplIHNldmVyYWwgdGltZXMgZm9yIGxhcmdlIHF1ZXVlcy4gKilcbiAgc2V0X2NhcGFjaXR5IHQgKEludC5tYXggKGNhcGFjaXR5IHQpICh0Lmxlbmd0aCArIExpc3QubGVuZ3RoIGwpKTtcbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgICBsZXQgciA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gICAgZG9uZTtcbiAgICAhcilcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgYSAtPlxuICAgIGxldCBhY2MgPSBmICFpIGFjYyBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgYWNjKSBbQG5vbnRhaWxdXG47O1xuXG5cbigqIFtpdGVyXSBpcyBpbXBsZW1lbnRlZCBkaXJlY3RseSBiZWNhdXNlIGltcGxlbWVudGluZyBpdCBpbiB0ZXJtcyBvZiBbZm9sZF0gaXNcbiAgIHNsb3dlci4gKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHJlc3VsdCA6PSB1bnNhZmVfZ2V0IHQgaSA6OiAhcmVzdWx0XG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYEN1c3RvbSBmb2xkaVxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuXG5cbigqIEZvciBbY29uY2F0X21hcF0sIFtmaWx0ZXJfbWFwXSwgYW5kIFtmaWx0ZXJdLCB3ZSBkb24ndCBjcmVhdGUgW3RfcmVzdWx0XSB3aXRoIFt0XSdzXG4gICBjYXBhY2l0eSBiZWNhdXNlIHdlIGhhdmUgbm8gaWRlYSBob3cgbWFueSBlbGVtZW50cyBbdF9yZXN1bHRdIHdpbGwgdWx0aW1hdGVseSBob2xkLiAqKVxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXIgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXJpIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6c3JjLmxlbmd0aCAoKSBpblxuICBibGl0X3RvX2FycmF5IH5zcmMgZHN0LmVsdHM7XG4gIGRzdC5sZW5ndGggPC0gc3JjLmxlbmd0aDtcbiAgZHN0XG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTooTGlzdC5sZW5ndGggbCkgKCkgaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxuKCogVGhlIHF1ZXVlIFt0XSByZXR1cm5lZCBieSBbY3JlYXRlXSB3aWxsIGhhdmUgW3QubGVuZ3RoID0gMF0sIFt0LmZyb250ID0gMF0sIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBJbnQuY2VpbF9wb3cyIGxlbl0uICBTbywgd2Ugb25seSBoYXZlIHRvIHNldCBbdC5sZW5ndGhdIHRvIFtsZW5dIGFmdGVyXG4gICB0aGUgYmxpdCB0byBtYWludGFpbiBhbGwgdGhlIGludmFyaWFudHM6IFt0Lmxlbmd0aF0gaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgaW4gdGhlIHF1ZXVlLCBbdC5mcm9udF0gaXMgdGhlIGFycmF5IGluZGV4IG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gKilcbmxldCBpbml0IGxlbiB+ZiA9XG4gIGlmIGxlbiA8IDBcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJRdWV1ZS5pbml0OiBuZWdhdGl2ZSBsZW5ndGhcIiBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6bGVuICgpIGluXG4gIGFzc2VydCAoT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgPj0gbGVuKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyBpIChmIGkpXG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIGxlbjtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGEgPSBpbml0IChBcnJheS5sZW5ndGggYSkgfmY6KEFycmF5LnVuc2FmZV9nZXQgYSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCB0Lmxlbmd0aCB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBtYXAgdGEgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHRhLm51bV9tdXRhdGlvbnMgaW5cbiAgbGV0IHRiID0gY3JlYXRlIH5jYXBhY2l0eTp0YS5sZW5ndGggKCkgaW5cbiAgdGIubGVuZ3RoIDwtIHRhLmxlbmd0aDtcbiAgZm9yIGkgPSAwIHRvIHRhLmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgYiA9IGYgKHVuc2FmZV9nZXQgdGEgaSkgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdGEgbnVtX211dGF0aW9ucztcbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHRiLmVsdHMgaSBiXG4gIGRvbmU7XG4gIHRiXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBtYXAgdCB+ZjooZnVuIGEgLT5cbiAgICBsZXQgcmVzdWx0ID0gZiAhaSBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgcmVzdWx0KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6MSAoKSBpblxuICBlbnF1ZXVlIHQgeDtcbiAgdFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHRvX2xpc3QgdCB8PiBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2FcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCB8PiBvZl9saXN0XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB8XG5cbiAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBmdW5jdGlvblxuICAgIHwgKF8gOiB0KSAtPiAuXG4gIDs7XG5cbiAgbGV0IGFsbCA9IFtdXG4gIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBcIkJhc2UuTm90aGluZy50XCIgc2V4cFxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG4gIGxldCB0b19zdHJpbmcgPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBvZl9zdHJpbmcgKF8gOiBzdHJpbmcpID0gZmFpbHdpdGggXCJCYXNlLk5vdGhpbmcub2Zfc3RyaW5nOiBub3Qgc3VwcG9ydGVkXCJcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTm90aGluZ1wiXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkbGliLk5hdGl2ZWludFxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9XG4gICAgKGdsb2JhbGl6ZV9uYXRpdmVpbnQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKG5hdGl2ZWludF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9uYXRpdmVpbnQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gbmF0aXZlaW50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgbGV0IG9mX3N0cmluZ19vcHQgPSBvZl9zdHJpbmdfb3B0XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX25hdGl2ZWludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJW54XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVueFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bV9iaXRzID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBvZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBvZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIk5hdGl2ZWludC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IFN0ZGxpYi5OYXRpdmVpbnQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuTmF0aXZlaW50LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gU3RkbGliLk5hdGl2ZWludC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgKHggOiBuYXRpdmVpbnQpID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gU3RkbGliLk5hdGl2ZWludC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgU3RkbGliLk5hdGl2ZWludC5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBTdGRsaWIuTmF0aXZlaW50LnByZWQgeCA9IDBuXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgbmF0aXZlaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgU3RkbGliLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBpZiBTdGRsaWIuTmF0aXZlaW50LmVxdWFsIGkgU3RkbGliLk5hdGl2ZWludC5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChTdGRsaWIuTmF0aXZlaW50LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcbmxldCBvZl9uYXRpdmVpbnQgdCA9IHRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50IHQgPSB0XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQubmF0aXZlaW50X3BvcGNvdW50XG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IHRvX2ludCA9IENvbnYubmF0aXZlaW50X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnRfZXhuXG5sZXQgdG9faW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50MzIgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX2V4blxubGV0IHRvX2ludDMyX3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuY1xubGV0IHRvX2ludDY0ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtOYXRpdmVpbnRdIGFuZCBbTmF0aXZlaW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuZXh0ZXJuYWwgYnN3YXAgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfbmF0aXZlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1hcF9pbnRmXG5cbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG4gICgqIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIHRlc3RlZCBpbiBbdGVzdF9tYXAubWxdIHRvIG1ha2Ugc3VyZSBvdXIgdXNlIG9mXG4gICAgIFtTdGRsaWIuT2JqLm1hZ2ljXSBpcyBjb3JyZWN0IGFuZCBzYWZlLiAqKVxuICBsZXQgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0ID0gU3RkbGliLk9iai5tYWdpY1xuICBsZXQgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50ID0gU3RkbGliLk9iai5tYWdpY1xuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuTWVyZ2VfZWxlbWVudFxuXG4gIGxldCBsZWZ0ID0gZnVuY3Rpb25cbiAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICB8IGBMZWZ0IGxlZnQgfCBgQm90aCAobGVmdCwgXykgLT4gU29tZSBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgIHwgYFJpZ2h0IHJpZ2h0IHwgYEJvdGggKF8sIHJpZ2h0KSAtPiBTb21lIHJpZ2h0XG4gIDs7XG5cbiAgbGV0IGxlZnRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgUmlnaHQgXyAtPiBkZWZhdWx0XG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IGxlZnRcbiAgOztcblxuICBsZXQgcmlnaHRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBfIC0+IGRlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gcmlnaHRcbiAgOztcblxuICBsZXQgdmFsdWVzIHQgfmxlZnRfZGVmYXVsdCB+cmlnaHRfZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBsZWZ0IC0+IGxlZnQsIHJpZ2h0X2RlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCAtPiBsZWZ0X2RlZmF1bHQsIHJpZ2h0XG4gICAgfCBgQm90aCAobGVmdCwgcmlnaHQpIC0+IGxlZnQsIHJpZ2h0XG4gIDs7XG5lbmRcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuZXhjZXB0aW9uIER1cGxpY2F0ZSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIER1cGxpY2F0ZV0gKGZ1bmN0aW9uXG4gICAgfCBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLkR1cGxpY2F0ZVwiXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbigqIFtXaXRoX2xlbmd0aC50XSBhbGxvd3MgdXMgdG8gc3RvcmUgbGVuZ3RoIGluZm9ybWF0aW9uIG9uIHRoZSBzdGFjayB3aGlsZVxuICAga2VlcGluZyB0aGUgdHJlZSBnbG9iYWwuIFRoaXMgc2F2ZXMgdXAgdG8gTyhsb2cgbikgYmxvY2tzIG9mIGhlYXAgYWxsb2NhdGlvbi4gKilcbm1vZHVsZSBXaXRoX2xlbmd0aCA6IHNpZ1xuICB0eXBlICdhIHQgPSBwcml2YXRlXG4gICAgeyB0cmVlIDogJ2FcbiAgICAgICAgICAgICBbQGdsb2JhbF1cbiAgICA7IGxlbmd0aCA6IGludCBbQGdsb2JhbF1cbiAgICB9XG5cbiAgdmFsIHdpdGhfbGVuZ3RoIDogJ2EgLT4gaW50IC0+ICgnYSB0W0Bsb2NhbF0pXG4gIHZhbCB3aXRoX2xlbmd0aF9nbG9iYWwgOiAnYSAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgZ2xvYmFsaXplIDogKCdhIHRbQGxvY2FsXSkgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB0cmVlIDogJ2EgW0BnbG9iYWxdXG4gICAgOyBsZW5ndGggOiBpbnQgW0BnbG9iYWxdXG4gICAgfVxuXG4gIGxldCB3aXRoX2xlbmd0aCB0cmVlIGxlbmd0aCA9ICB7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCB3aXRoX2xlbmd0aF9nbG9iYWwgdHJlZSBsZW5ndGggPSB7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCBnbG9iYWxpemUgKHsgdHJlZTsgbGVuZ3RoIH0gW0Bsb2NhbF0pID0geyB0cmVlOyBsZW5ndGggfVxuZW5kXG5cbm9wZW4gV2l0aF9sZW5ndGhcblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgTGVhZiBvZiAnayAqICd2XG4gICAgfCBOb2RlIG9mICgnaywgJ3YpIHQgKiAnayAqICd2ICogKCdrLCAndikgdCAqIGludFxuXG4gIHR5cGUgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIHRcblxuICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBoKSAtPiBoXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9rZXkgbG93ZXIgayA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2tleSBrIHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiAoaywgXykgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgfCBOb2RlIChsLCBrLCBfLCByLCBoKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgICAmJiBsb29wIGxvd2VyIChTb21lIGspIGNvbXBhcmVfa2V5IGxcbiAgICAgICAgJiYgbG9vcCAoU29tZSBrKSB1cHBlciBjb21wYXJlX2tleSByXG4gICAgaW5cbiAgICBmdW4gdCB+Y29tcGFyZV9rZXkgLT4gbG9vcCBOb25lIE5vbmUgY29tcGFyZV9rZXkgdFxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMiAqKVxuICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA9IDAgJiYgaHIgPSAwXG4gICAgdGhlbiBMZWFmICh4LCBkKVxuICAgIGVsc2UgTm9kZSAobCwgeCwgZCwgciwgaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpXG4gIDs7XG5cbiAgbGV0IHNpbmdsZXRvbiBrZXkgZGF0YSA9IExlYWYgKGtleSwgZGF0YSlcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5NYXAgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpIDogKF8sIF8pIHQgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgaywgdiA9IGYgaSBpblxuICAgICAgICBMZWFmIChrLCB2KVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgTm9kZSAoTGVhZiAoa2wsIHZsKSwgaywgdiwgRW1wdHksIDIpXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsLCB2bCA9IGYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IsIHZyID0gZiAoaSArIDIpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIExlYWYgKGtyLCB2ciksIDIpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgdiByaWdodFxuICAgIGluXG4gICAgbG9vcCBsZW4gfmYgMFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFycmF5X2xlbmd0aCA9IEFycmF5Lmxlbmd0aCBhcnJheSBpblxuICAgIGxldCBuZXh0ID1cbiAgICAgIGlmIGFycmF5X2xlbmd0aCA8IDJcbiAgICAgICAgIHx8XG4gICAgICAgICBsZXQgazAsIF8gPSBhcnJheS4oMCkgaW5cbiAgICAgICAgIGxldCBrMSwgXyA9IGFycmF5LigxKSBpblxuICAgICAgICAgY29tcGFyZV9rZXkgazAgazEgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBcbiAgICAgICh3aXRoX2xlbmd0aFxuICAgICAgICAgKG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHQpXG4gICAgICAgICBhcnJheV9sZW5ndGgpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+XG4gICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSlcbiAgICB8IF8gLT5cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgaW5jcmVhc2luZyA9XG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oMCkpIChmc3QgYXJyYXkuKDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT4gaSA8IDBcbiAgICAgICAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDIgZG9cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2tleSAoZnN0IGFycmF5LihpKSkgKGZzdCBhcnJheS4oaSArIDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT5cbiAgICAgICAgICAgIGlmIFBvbHkuKCA8PiApIChpIDwgMCkgaW5jcmVhc2luZ1xuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpKVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMyAqKVxuICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsIGluXG4gICAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBociArIDIgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsZCwgbHIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKGxydiwgbHJkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBFbXB0eSkgbHJ2IGxyZCAoY3JlYXRlIEVtcHR5IHggZCByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyZCwgbHJyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBobCArIDIgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByZCwgcnIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKHJsdiwgcmxkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBFbXB0eSkgcmx2IHJsZCAoY3JlYXRlIEVtcHR5IHJ2IHJkIHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsZCwgcmxyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKSkpXG4gICAgZWxzZSBjcmVhdGUgbCB4IGQgclxuICA7O1xuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5IH5zZXhwX29mX2tleSA9XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIltNYXAuYWRkX2V4bl0gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuXG4gIG1vZHVsZSBBZGRfb3Jfc2V0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbFxuICAgICAgfCBBZGRfZXhuXG4gICAgICB8IFNldFxuICBlbmRcblxuICBsZXQgcmVjIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgICAgIH5rZXk6eFxuICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICAgICB+KGFkZF9vcl9zZXQgOiBBZGRfb3Jfc2V0LnQpXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAoeCwgZGF0YSkpIChsZW5ndGggKyAxKSlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBhZGRfb3Jfc2V0IHdpdGhcbiAgICAgICAgfCBBZGRfZXhuX2ludGVybmFsIC0+ICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZSlcbiAgICAgICAgfCBBZGRfZXhuIC0+ICAocmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5KVxuICAgICAgICB8IFNldCAtPiAgKHdpdGhfbGVuZ3RoIChMZWFmICh4LCBkYXRhKSkgbGVuZ3RoKSlcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gICh3aXRoX2xlbmd0aCAoTm9kZSAoTGVhZiAoeCwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKSkgKGxlbmd0aCArIDEpKVxuICAgICAgZWxzZSAgKHdpdGhfbGVuZ3RoIChOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoeCwgZGF0YSksIDIpKSAobGVuZ3RoICsgMSkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGUpXG4gICAgICAgIHwgQWRkX2V4biAtPiAgKHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleSlcbiAgICAgICAgfCBTZXQgLT4gICh3aXRoX2xlbmd0aCAoTm9kZSAobCwgeCwgZGF0YSwgciwgaCkpIGxlbmd0aCkpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIGwgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPVxuICAgICAgICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgfmxlbmd0aCB+a2V5OnggfmRhdGEgciB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0XG4gICAgICAgIGluXG4gICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFtzZXQnXSBmb3IgdGhlIGNhc2Ugd2hlbiBba2V5XSBpcyBsZXNzIHRoYW4gYWxsIHRoZSBleGlzdGluZyBrZXlzICopXG4gIGxldCByZWMgc2V0X21pbiBrZXkgZGF0YSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgKGtleSwgZGF0YSlcbiAgICB8IExlYWYgKHYsIGQpIC0+IE5vZGUgKExlYWYgKGtleSwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBsID0gc2V0X21pbiBrZXkgZGF0YSBsIGluXG4gICAgICBiYWwgbCB2IGQgclxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFtzZXQnXSBmb3IgdGhlIGNhc2Ugd2hlbiBba2V5XSBpcyBncmVhdGVyIHRoYW4gYWxsIHRoZVxuICAgICBleGlzdGluZyBrZXlzICAqKVxuICBsZXQgcmVjIHNldF9tYXggdCBrZXkgZGF0YSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrZXksIGRhdGEpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoa2V5LCBkYXRhKSwgMilcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgciA9IHNldF9tYXggciBrZXkgZGF0YSBpblxuICAgICAgYmFsIGwgdiBkIHJcbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBcbiAgICAgIChmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICB0XG4gICAgICAgICB+bGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICB+c2V4cF9vZl9rZXlcbiAgICAgICAgIH5hZGRfb3Jfc2V0OkFkZF9leG4pXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgXG4gICAgICAoZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgdFxuICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICB+YWRkX29yX3NldDpBZGRfZXhuX2ludGVybmFsKVxuICA7O1xuXG4gIGxldCBzZXQgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBcbiAgICAgIChmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICB0XG4gICAgICAgICB+bGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICB+c2V4cF9vZl9rZXk6KGZ1biBfIC0+IExpc3QgW10pXG4gICAgICAgICB+YWRkX29yX3NldDpTZXQpXG4gIDs7XG5cbiAgbGV0IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXkgPSAoc2V0IHQgfmxlbmd0aDowIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5KS50cmVlXG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRnJhZ21lbnQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPVxuICAgICAgICB7IGxlZnRfc3VidHJlZSA6ICgnaywgJ3YpIHRcbiAgICAgICAgOyBrZXkgOiAna1xuICAgICAgICA7IGRhdGEgOiAndlxuICAgICAgICB9XG5cbiAgICAgIGxldCBzaW5nbGV0b25fdG9fdHJlZV9leG4gPSBmdW5jdGlvblxuICAgICAgICB8IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9IC0+IHNpbmdsZXRvbiBrZXkgZGF0YVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJNYXAuc2luZ2xldG9uX3RvX3RyZWVfZXhuOiBub3QgYSBzaW5nbGV0b25cIlxuICAgICAgOztcblxuICAgICAgbGV0IHNpbmdsZXRvbiB+a2V5IH5kYXRhID0geyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH1cblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGNvbGxhcHNlIGwgciA9IGNyZWF0ZSBsLmxlZnRfc3VidHJlZSBsLmtleSBsLmRhdGEgclxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIubGVmdF9zdWJ0cmVlKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGpvaW4gbCByID0geyByIHdpdGggbGVmdF9zdWJ0cmVlID0gY29sbGFwc2UgbCByLmxlZnRfc3VidHJlZSB9XG4gICAgICBsZXQgbWF4X2tleSB0ID0gdC5rZXlcbiAgICBlbmRcblxuICAgICgqKiBCdWlsZCB0cmVlcyBmcm9tIHNpbmdsZXRvbnMgaW4gYSBiYWxhbmNlZCB3YXkgYnkgdXNpbmcgc2tldyBiaW5hcnkgZW5jb2RpbmcuXG4gICAgICAgIEVhY2ggbGV2ZWwgY29udGFpbnMgdHJlZXMgb2YgdGhlIHNhbWUgaGVpZ2h0LCBjb25zZWN1dGl2ZSBsZXZlbHMgaGF2ZSBjb25zZWN1dGl2ZVxuICAgICAgICBoZWlnaHRzLiBUaGVyZSBhcmUgbm8gZ2Fwcy4gVGhlIGZpcnN0IGxldmVsIGFyZSBzaW5nbGUga2V5cy5cbiAgICAqKVxuICAgIHR5cGUgKCdrLCAndikgdCA9XG4gICAgICB8IFplcm8gb2YgdW5pdFxuICAgICAgKCogW3VuaXRdIHRvIG1ha2UgcGF0dGVybiBtYXRjaGluZyBmYXN0ZXIgKilcbiAgICAgIHwgT25lIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG4gICAgICB8IFR3byBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudCAqICgnaywgJ3YpIEZyYWdtZW50LnRcblxuICAgIGxldCBlbXB0eSA9IFplcm8gKClcblxuICAgIGxldCBhZGRfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCB4ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiBPbmUgKHQsIHgpXG4gICAgICAgIHwgT25lICh0LCB5KSAtPiBUd28gKHQsIHksIHgpXG4gICAgICAgIHwgVHdvICh0LCB6LCB5KSAtPiBPbmUgKGdvIHQgKEZyYWdtZW50LmpvaW4geiB5KSwgeClcbiAgICAgIGluXG4gICAgICBmdW4gdCB+a2V5IH5kYXRhIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbiB+a2V5IH5kYXRhKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZV91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHIgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IHJcbiAgICAgICAgfCBPbmUgKHQsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIGwgcilcbiAgICAgICAgfCBUd28gKHQsIGxsLCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSAoRnJhZ21lbnQuam9pbiBsbCBsKSByKVxuICAgICAgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gRW1wdHlcbiAgICAgIHwgT25lICh0LCByKSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICAgIHwgVHdvICh0LCBsLCByKSAtPiBnbyAoT25lICh0LCBsKSkgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gTm9uZVxuICAgICAgfCBPbmUgKF8sIHIpIHwgVHdvIChfLCBfLCByKSAtPiBTb21lIChGcmFnbWVudC5tYXhfa2V5IHIpXG4gICAgOztcbiAgZW5kXG5cblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5ID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGxldCB7IHRyZWUgPSBidWlsZGVyOyBsZW5ndGggfSA9XG4gICAgICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgICAgICBzZXFcbiAgICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIEJ1aWxkX2luY3JlYXNpbmcuZW1wdHkgMClcbiAgICAgICAgICB+ZjooZnVuIHsgdHJlZSA9IGJ1aWxkZXI7IGxlbmd0aCB9IChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBtYXRjaCBCdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgYnVpbGRlciB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJlX2tleSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICAgICAgICByZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX2luY3JlYXNpbmdfc2VxdWVuY2U6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHdpdGhfbGVuZ3RoX2dsb2JhbFxuICAgICAgICAgICAgICAgIChCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgYnVpbGRlciB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgIChsZW5ndGggKyAxKSlcbiAgICAgIGluXG4gICAgICBPayAod2l0aF9sZW5ndGhfZ2xvYmFsIChCdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIGJ1aWxkZXIpIGxlbmd0aCkpXG4gIDs7XG5cbiAgKCogTGlrZSBbYmFsXSBidXQgYWxsb3dzIGFueSBkaWZmZXJlbmNlIGluIGhlaWdodCBiZXR3ZWVuIFtsXSBhbmQgW3JdLlxuXG4gICAgIE8ofGhlaWdodCBsIC0gaGVpZ2h0IHJ8KSAqKVxuICBsZXQgcmVjIGpvaW4gbCBrIGQgciA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBzZXRfbWluIGsgZCByXG4gICAgfCBfLCBFbXB0eSAtPiBzZXRfbWF4IGwgayBkXG4gICAgfCBMZWFmIChsaywgbGQpLCBfIC0+IHNldF9taW4gbGsgbGQgKHNldF9taW4gayBkIHIpXG4gICAgfCBfLCBMZWFmIChyaywgcmQpIC0+IHNldF9tYXggKHNldF9tYXggbCBrIGQpIHJrIHJkXG4gICAgfCBOb2RlIChsbCwgbGssIGxkLCBsciwgbGgpLCBOb2RlIChybCwgcmssIHJkLCByciwgcmgpIC0+XG4gICAgICAoKiBbYmFsXSByZXF1aXJlcyBoZWlnaHQgZGlmZmVyZW5jZSA8PSAzLiAqKVxuICAgICAgaWYgbGggPiByaCArIDNcbiAgICAgICgqIFtoZWlnaHQgbHIgPj0gaGVpZ2h0IHJdLFxuICAgICAgICAgdGhlcmVmb3JlIFtoZWlnaHQgKGpvaW4gbHIgayBkIHIgLi4uKV0gaXMgW2hlaWdodCBybCArIDFdIG9yIFtoZWlnaHQgcmxdXG4gICAgICAgICB0aGVyZWZvcmUgdGhlIGhlaWdodCBkaWZmZXJlbmNlIHdpdGggW2xsXSB3aWxsIGJlIDw9IDMgKilcbiAgICAgIHRoZW4gYmFsIGxsIGxrIGxkIChqb2luIGxyIGsgZCByKVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgM1xuICAgICAgdGhlbiBiYWwgKGpvaW4gbCBrIGQgcmwpIHJrIHJkIHJyXG4gICAgICBlbHNlIGJhbCBsIGsgZCByXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmVdIHJlYyBzcGxpdF9nZW4gdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICB8IExlYWYgKGssIGQpIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBFbXB0eSwgU29tZSAoaywgZCksIEVtcHR5XG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gRW1wdHksIE5vbmUsIHRcbiAgICAgIGVsc2UgdCwgTm9uZSwgRW1wdHlcbiAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBsLCBTb21lIChrLCBkKSwgclxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBtYXliZSwgbHIgPSBzcGxpdF9nZW4gbCB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBsbCwgbWF5YmUsIGpvaW4gbHIgayBkIHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJsLCBtYXliZSwgcnIgPSBzcGxpdF9nZW4gciB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBqb2luIGwgayBkIHJsLCBtYXliZSwgcnIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgeCB+Y29tcGFyZV9rZXkgPSBzcGxpdF9nZW4gdCB4IH5jb21wYXJlX2tleTooZnVuIHkgLT4gY29tcGFyZV9rZXkgeCB5KVxuXG4gICgqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmVhbGx5IHJlaW5zZXJ0IFt4XSwgYnV0IGp1c3QgYXJyYW5nZXMgc28gdGhhdCBbc3BsaXRdXG4gICAgIHByb2R1Y2VzIHRoZSBlcXVpdmFsZW50IHRyZWUgaW4gdGhlIGZpcnN0IHBsYWNlLiAqKVxuICBsZXQgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG8geCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBsZWZ0LCBib3VuZGFyeV9vcHQsIHJpZ2h0ID1cbiAgICAgIHNwbGl0X2dlblxuICAgICAgICB0XG4gICAgICAgIHhcbiAgICAgICAgfmNvbXBhcmVfa2V5OlxuICAgICAgICAgIChtYXRjaCBpbnRvIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCAtPlxuICAgICAgICAgICAgIGZ1biB5IC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9rZXkgeCB5IHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gMVxuICAgICAgICAgICAgICAgIHwgcmVzIC0+IHJlcylcbiAgICAgICAgICAgfCBgUmlnaHQgLT5cbiAgICAgICAgICAgICBmdW4geSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IHggeSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IC0xXG4gICAgICAgICAgICAgICAgfCByZXMgLT4gcmVzKSlcbiAgICBpblxuICAgIGFzc2VydCAoT3B0aW9uLmlzX25vbmUgYm91bmRhcnlfb3B0KTtcbiAgICBsZWZ0LCByaWdodFxuICA7O1xuXG4gIGxldCBzcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH4obG93ZXJfYm91bmQgOiAnYSBNYXliZV9ib3VuZC50KVxuICAgICAgICB+KHVwcGVyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgPVxuICAgIGlmIE1heWJlX2JvdW5kLmJvdW5kc19jcm9zc2VkXG4gICAgICAgICB+Y29tcGFyZTpjb21wYXJlX2tleVxuICAgICAgICAgfmxvd2VyOmxvd2VyX2JvdW5kXG4gICAgICAgICB+dXBwZXI6dXBwZXJfYm91bmRcbiAgICB0aGVuIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZWZ0LCBtaWRfYW5kX3JpZ2h0ID1cbiAgICAgICAgbWF0Y2ggbG93ZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBlbXB0eSwgdFxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgICB8IEV4Y2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgbGV0IG1pZCwgcmlnaHQgPVxuICAgICAgICBtYXRjaCB1cHBlcl9ib3VuZCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkIC0+IG1pZF9hbmRfcmlnaHQsIGVtcHR5XG4gICAgICAgIHwgSW5jbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YExlZnQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+XG4gICAgICAgICAgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCBtaWRfYW5kX3JpZ2h0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxlZnQsIG1pZCwgcmlnaHQpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIFNvbWUgZCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGQgZWxzZSBmaW5kIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZGF0YSA9IGRhdGEgOjogT3B0aW9uLnZhbHVlIChmaW5kIHQga2V5IH5jb21wYXJlX2tleSkgfmRlZmF1bHQ6W10gaW5cbiAgICAgKHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggZmluZCB0IHggfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gW11cbiAgICB8IFNvbWUgbCAtPiBsXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgaWZfbm90X2ZvdW5kIGtleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgcmFpc2UgKE5vdF9mb3VuZF9zIChMaXN0IFsgQXRvbSBcIk1hcC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHNleHBfb2Zfa2V5IGtleSBdKSlcbiAgICBpblxuICAgIGxldCByZWMgZmluZF9leG4gdCB4IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBpZiBjb21wYXJlX2tleSB4IHYgPSAwIHRoZW4gZCBlbHNlIGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIGQgZWxzZSBmaW5kX2V4biAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgeCB+Y29tcGFyZV9rZXkgPSBPcHRpb24uaXNfc29tZSAoZmluZCB0IHggfmNvbXBhcmVfa2V5KVxuXG4gIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCBkKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoRW1wdHksIGssIGQsIF8sIF8pIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxcbiAgOztcblxuICBleGNlcHRpb24gTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBleGNlcHRpb24gTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWluX2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWluX2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIGssIGQsIEVtcHR5LCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoXywgXywgXywgciwgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIF8sIHIsIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHgsIGQsIHIsIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgeCBkIHJcbiAgOztcblxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggbWF4X2VsdCBsb3dlcl9wYXJ0LCBtaW5fZWx0IHVwcGVyX3BhcnQgd2l0aFxuICAgIHwgTm9uZSwgXyAtPiBgT2sgdXBwZXJfcGFydFxuICAgIHwgXywgTm9uZSAtPiBgT2sgbG93ZXJfcGFydFxuICAgIHwgU29tZSAobWF4X2xvd2VyLCBfKSwgU29tZSAobWluX3VwcGVyLCB2KSB3aGVuIGNvbXBhcmVfa2V5IG1heF9sb3dlciBtaW5fdXBwZXIgPCAwIC0+XG4gICAgICBsZXQgdXBwZXJfcGFydF93aXRob3V0X21pbiA9IHJlbW92ZV9taW5fZWx0IHVwcGVyX3BhcnQgaW5cbiAgICAgIGBPayAoam9pbiBsb3dlcl9wYXJ0IG1pbl91cHBlciB2IHVwcGVyX3BhcnRfd2l0aG91dF9taW4pXG4gICAgfCBfIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlID1cbiAgICAoKiBUaGlzIGFzc3VtZXMgdGhhdCBtaW4gPD0gbWF4LCB3aGljaCBpcyBjaGVja2VkIGJ5IHRoZSBvdXRlciBmdW5jdGlvbi4gKilcbiAgICBsZXQgcmVjIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW5pdFxuICAgICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSBrIG1pbiA8IDAgfHwgY29tcGFyZV9rZXkgayBtYXggPiAwXG4gICAgICAgIHRoZW4gKCogayA8IG1pbiB8fCBrID4gbWF4ICopXG4gICAgICAgICAgaW5pdFxuICAgICAgICBlbHNlIGYgfmtleTprIH5kYXRhOmQgaW5pdFxuICAgICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgY19taW4gPSBjb21wYXJlX2tleSBrIG1pbiBpblxuICAgICAgICBpZiBjX21pbiA8IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPCBtaW4sIHRoZW4gdGhpcyBub2RlIGFuZCBpdHMgbGVmdCBicmFuY2ggYXJlIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgaWYgY19taW4gPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrID0gbWluLCB0aGVuIHRoaXMgbm9kZSdzIGxlZnQgYnJhbmNoIGlzIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQ6KGYgfmtleTprIH5kYXRhOmQgaW5pdCkgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGsgPiBtaW4gKilcbiAgICAgICAgICBsZXQgeiA9IGdvIGwgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGxldCBjX21heCA9IGNvbXBhcmVfa2V5IGsgbWF4IGluXG4gICAgICAgICAgKCogaWYgayA+IG1heCwgd2UncmUgZG9uZSAqKVxuICAgICAgICAgIGlmIGNfbWF4ID4gMFxuICAgICAgICAgIHRoZW4gelxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHogPSBmIH5rZXk6ayB+ZGF0YTpkIHogaW5cbiAgICAgICAgICAgICgqIGlmIGsgPSBtYXgsIHRoZW4gd2UgZm9sZCBpbiB0aGlzIG9uZSBsYXN0IHZhbHVlIGFuZCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgICBpZiBjX21heCA9IDAgdGhlbiB6IGVsc2UgZ28gciB+bWluIH5tYXggfmluaXQ6eiB+ZiB+Y29tcGFyZV9rZXkpKVxuICAgIGluXG4gICAgZnVuIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgY29tcGFyZV9rZXkgbWluIG1heCA8PSAwIHRoZW4gZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGVsc2UgaW5pdFxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXkgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgICAgIHRcbiAgICAgICAgIH5taW5cbiAgICAgICAgIH5tYXhcbiAgICAgICAgIH5pbml0OltdXG4gICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgbCAtPiAoa2V5LCBkYXRhKSA6OiBsKVxuICAgICAgICAgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbnM6XG4gICAgIC0gYWxsIGVsZW1lbnRzIGluIHQxIGFyZSBsZXNzIHRoYW4gZWxlbWVudHMgaW4gdDJcbiAgICAgLSB8aGVpZ2h0KHQxKSAtIGhlaWdodCh0Mil8IDw9IDIgKilcbiAgbGV0IGNvbmNhdF91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICAoKiBzaW1pbGFyIHRvIFtjb25jYXRfdW5jaGVja2VkXSwgYW5kIGJhbGFuY2VzIHRyZWVzIG9mIGFyYml0cmFyeSBoZWlnaHQgZGlmZmVyZW5jZXMgKilcbiAgbGV0IGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFJlbW92ZV9ub19vcFxuXG4gIGxldCByZW1vdmUgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wKVxuICAgICAgfCBMZWFmICh2LCBfKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSB4IHYgPSAwXG4gICAgICAgIHRoZW4gICh3aXRoX2xlbmd0aCBFbXB0eSAobGVuZ3RoIC0gMSkpXG4gICAgICAgIGVsc2UgIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuICAod2l0aF9sZW5ndGggKGNvbmNhdF91bmNoZWNrZWQgbCByKSAobGVuZ3RoIC0gMSkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gcmVtb3ZlX2xvb3AgbCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHJlbW92ZV9sb29wIHIgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgIGluXG4gICAgdHJ5ICAocmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5KSB3aXRoXG4gICAgfCBSZW1vdmVfbm9fb3AgLT4gICh3aXRoX2xlbmd0aCB0IGxlbmd0aClcbiAgOztcblxuICAoKiBVc2UgZXhjZXB0aW9uIHRvIGF2b2lkIHRyZWUtcmVidWlsZCBpbiBuby1vcCBjYXNlICopXG4gIGV4Y2VwdGlvbiBDaGFuZ2Vfbm9fb3BcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIGNoYW5nZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICgqIGVxdWl2YWxlbnQgdG8gcmV0dXJuaW5nOiBFbXB0eSAqKVxuICAgICAgICAgICAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBDaGFuZ2Vfbm9fb3ApXG4gICAgICAgICB8IFNvbWUgZGF0YSAtPiAgKHdpdGhfbGVuZ3RoIChMZWFmIChrZXksIGRhdGEpKSAobGVuZ3RoICsgMSkpKVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAgKHdpdGhfbGVuZ3RoIEVtcHR5IChsZW5ndGggLSAxKSlcbiAgICAgICAgICB8IFNvbWUgZCcgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAodiwgZCcpKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIEVtcHR5KSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBFbXB0eSB2IGQgcikgbGVuZ3RoKSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gICh3aXRoX2xlbmd0aCAoY29uY2F0X3VuY2hlY2tlZCBsIHIpIChsZW5ndGggLSAxKSlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiAgKHdpdGhfbGVuZ3RoIChOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gY2hhbmdlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgIGluXG4gICAgdHJ5ICAoY2hhbmdlX2NvcmUgdCBrZXkgZikgd2l0aFxuICAgIHwgQ2hhbmdlX25vX29wIC0+ICAod2l0aF9sZW5ndGggdCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyB1cGRhdGVfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGYgTm9uZSBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChMZWFmIChrZXksIGRhdGEpKSAobGVuZ3RoICsgMSkpXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGQnID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKExlYWYgKHYsIGQnKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCBFbXB0eSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgRW1wdHkgdiBkIHIpIGxlbmd0aCkpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGRhdGEgPSBmIChTb21lIGQpIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHVwZGF0ZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICBpblxuICAgICAodXBkYXRlX2NvcmUgdCBrZXkgZilcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBcbiAgICAgIChjaGFuZ2UgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICB8IE5vbmUgfCBTb21lIChbXSB8IFsgXyBdKSAtPiBOb25lXG4gICAgICAgICB8IFNvbWUgKF8gOjogKF8gOjogXyBhcyBub25fZW1wdHlfdGFpbCkpIC0+IFNvbWUgbm9uX2VtcHR5X3RhaWwpKVxuICA7O1xuXG4gIGxldCByZWMgaXRlcl9rZXlzIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIF8pIC0+IGYgdlxuICAgIHwgTm9kZSAobCwgdiwgXywgciwgXykgLT5cbiAgICAgIGl0ZXJfa2V5cyB+ZiBsO1xuICAgICAgZiB2O1xuICAgICAgaXRlcl9rZXlzIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAoXywgZCkgLT4gZiBkXG4gICAgfCBOb2RlIChsLCBfLCBkLCByLCBfKSAtPlxuICAgICAgaXRlciB+ZiBsO1xuICAgICAgZiBkO1xuICAgICAgaXRlciB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgaXRlcmkgfmYgbDtcbiAgICAgIGYgfmtleTp2IH5kYXRhOmQ7XG4gICAgICBpdGVyaSB+ZiByXG4gIDs7XG5cbiAgbGV0IGl0ZXJpX3VudGlsID1cbiAgICBsZXQgcmVjIGl0ZXJpX3VudGlsX2xvb3AgdCB+ZiA6IENvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggaXRlcmlfdW50aWxfbG9vcCB+ZiBsIHdpdGhcbiAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICB8IENvbnRpbnVlIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICAgICB8IENvbnRpbnVlIC0+IGl0ZXJpX3VudGlsX2xvb3AgfmYgcikpXG4gICAgaW5cbiAgICBmdW4gdCB+ZiAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLm9mX2NvbnRpbnVlX29yX3N0b3AgKGl0ZXJpX3VudGlsX2xvb3AgdCB+ZilcbiAgOztcblxuICBsZXQgcmVjIG1hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIGQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgbGV0IHInID0gbWFwIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXBpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgfmtleTp2IH5kYXRhOmQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwaSB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBtYXBpIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBmb2xkIHQgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2xvb3AgdCB+YWNjIH5mIDogKF8sIF8pIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlIGFjY1xuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY1xuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9sb29wIGwgfmFjYyB+ZiB3aXRoXG4gICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgYWNjIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBmb2xkX3VudGlsX2xvb3AgciB+YWNjIH5mKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfbG9vcCB0IH5hY2M6aW5pdCB+ZiB3aXRoXG4gICAgfCBDb250aW51ZSBhY2MgLT4gZmluaXNoIGFjYyBbQG5vbnRhaWxdXG4gICAgfCBTdG9wIHN0b3AgLT4gc3RvcFxuICA7O1xuXG4gIGxldCByZWMgZm9sZF9yaWdodCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkX3JpZ2h0IH5mIHIgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaWx0ZXJfbWFwaSB0IH5mIH5sZW4gPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgfCBTb21lIG5ld19kYXRhIC0+IExlYWYgKHYsIG5ld19kYXRhKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICBFbXB0eSlcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwaSBsIH5mIH5sZW4gaW5cbiAgICAgIGxldCBuZXdfZGF0YSA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgIGxldCByJyA9IGZpbHRlcl9tYXBpIHIgfmYgfmxlbiBpblxuICAgICAgKG1hdGNoIG5ld19kYXRhIHdpdGhcbiAgICAgICB8IFNvbWUgbmV3X2RhdGEgLT4gam9pbiBsJyB2IG5ld19kYXRhIHInXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBkZWNyIGxlbjtcbiAgICAgICAgIGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaWx0ZXJpIHQgfmYgfmxlbiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICB8IHRydWUgLT4gdFxuICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgRW1wdHkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGwnID0gZmlsdGVyaSBsIH5mIH5sZW4gaW5cbiAgICAgIGxldCBrZWVwX2RhdGEgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBmaWx0ZXJpIHIgfmYgfmxlbiBpblxuICAgICAgaWYgcGh5c19lcXVhbCBsIGwnICYmIGtlZXBfZGF0YSAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgIHRoZW4gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGtlZXBfZGF0YSB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPiBqb2luIGwnIHYgZCByJ1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICAgY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCBsJyByJylcbiAgOztcblxuICBsZXQgZmlsdGVyIHQgfmYgfmxlbiA9IGZpbHRlcmkgdCB+bGVuIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiB+bGVuID0gZmlsdGVyaSB0IH5sZW4gfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiB+bGVuID0gZmlsdGVyX21hcGkgdCB+bGVuIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgICBsZXQgdDEsIHQyID1cbiAgICAgIGZvbGRcbiAgICAgICAgdFxuICAgICAgICB+aW5pdDooQnVpbGRfaW5jcmVhc2luZy5lbXB0eSwgQnVpbGRfaW5jcmVhc2luZy5lbXB0eSlcbiAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICh0MSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHggLT4gQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQxIH5rZXkgfmRhdGE6eCwgdDJcbiAgICAgICAgICB8IFNlY29uZCB5IC0+IHQxLCBCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgdDIgfmtleSB+ZGF0YTp5KVxuICAgIGluXG4gICAgQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0MSwgQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0MlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICAgIGxldCByZWMgbG9vcCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgICAgfCB0cnVlIC0+IHQsIEVtcHR5XG4gICAgICAgICB8IGZhbHNlIC0+IEVtcHR5LCB0KVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgbCd0LCBsJ2YgPSBsb29wIGwgfmYgaW5cbiAgICAgICAgbGV0IGtlZXBfZGF0YV90ID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgICBsZXQgcid0LCByJ2YgPSBsb29wIHIgfmYgaW5cbiAgICAgICAgbGV0IG1rIGwnIGtlZXBfZGF0YSByJyA9XG4gICAgICAgICAgaWYgcGh5c19lcXVhbCBsIGwnICYmIGtlZXBfZGF0YSAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgICAgICB0aGVuIHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGtlZXBfZGF0YSB3aXRoXG4gICAgICAgICAgICB8IHRydWUgLT4gam9pbiBsJyB2IGQgcidcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCBsJyByJylcbiAgICAgICAgaW5cbiAgICAgICAgbWsgbCd0IGtlZXBfZGF0YV90IHIndCwgbWsgbCdmIChub3Qga2VlcF9kYXRhX3QpIHInZlxuICAgIGluXG4gICAgbG9vcCB0IH5mXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnaywgJ3YsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnayAqICd2ICogKCdrLCAndikgdHJlZSAqICgnaywgJ3YsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyB0IChlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCB0IChlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl90cmVlIHRyZWUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9IGNvbnMgdHJlZSBFbmRcbiAgICBsZXQgb2ZfdHJlZV9yaWdodCB0cmVlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHRyZWUgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgXywgciwgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RlcF9kZWVwZXJfZXhuIHRyZWUgZSA9XG4gICAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IEVtcHR5LCBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbCwgTW9yZSAodiwgZCwgciwgZSlcbiAgICA7O1xuXG4gICAgKCogW2Ryb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyXSBkcm9wcyB0aGUgbGFyZ2VzdCBwaHlzaWNhbGx5LWVxdWFsXG4gICAgICAgcHJlZml4IG9mIHRyZWUxIGFuZCB0cmVlMiB0aGF0IHRoZXkgc2hhcmUsIGFuZCB0aGVuIHByZXBlbmRzIHRoZSByZW1haW5pbmcgZGF0YVxuICAgICAgIGludG8gYWNjMSBhbmQgYWNjMiwgcmVzcGVjdGl2ZWx5LlxuICAgICAgIFRoaXMgY2FuIGJlIGFzeW1wdG90aWNhbGx5IGZhc3RlciB0aGFuIFtjb25zXSBldmVuIGlmIGl0IHNraXBzIGEgc21hbGwgcHJvcG9ydGlvblxuICAgICAgIG9mIHRoZSB0cmVlIGJlY2F1c2UgW2NvbnNdIGlzIGFsd2F5cyBPKGxvZyhuKSkgaW4gdGhlIHNpemUgb2YgdGhlIHRyZWUsIHdoaWxlXG4gICAgICAgdGhpcyBmdW5jdGlvbiBpcyBPKGxvZyhuL20pKSB3aGVyZSBbbV0gaXMgdGhlIHNpemUgb2YgdGhlIHBhcnQgb2YgdGhlIHRyZWUgdGhhdFxuICAgICAgIGlzIHNraXBwZWQuICopXG4gICAgbGV0IHJlYyBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICB0aGVuIGFjYzEsIGFjYzJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaDIgPSBoZWlnaHQgdHJlZTIgaW5cbiAgICAgICAgbGV0IGgxID0gaGVpZ2h0IHRyZWUxIGluXG4gICAgICAgIGlmIGgyID0gaDFcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHRyZWUxLCBhY2MxID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUxIGFjYzEgaW5cbiAgICAgICAgICBsZXQgdHJlZTIsIGFjYzIgPSBzdGVwX2RlZXBlcl9leG4gdHJlZTIgYWNjMiBpblxuICAgICAgICAgIGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyKVxuICAgICAgICBlbHNlIGlmIGgyID4gaDFcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHRyZWUyLCBhY2MyID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUyIGFjYzIgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHRyZWUxLCBhY2MxID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUxIGFjYzEgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMikpXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2RhdGEgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGUxLCBlMiA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggcjEgZTEgcjIgZTIgaW5cbiAgICAgICAgICAgICAgbG9vcCBlMSBlMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgZGF0YV9lcXVhbCB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IHRydWVcbiAgICAgICAgfCBFbmQsIF8gfCBfLCBFbmQgLT4gZmFsc2VcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGNvbXBhcmVfa2V5IHYxIHYyID0gMFxuICAgICAgICAgICYmIGRhdGFfZXF1YWwgZDEgZDJcbiAgICAgICAgICAmJlxuICAgICAgICAgIGxldCBlMSwgZTIgPSBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHIxIGUxIHIyIGUyIGluXG4gICAgICAgICAgbG9vcCBlMSBlMlxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmb2xkIH5pbml0IH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+IGluaXRcbiAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBsZXQgbmV4dCA9IGYgfmtleSB+ZGF0YSBpbml0IGluXG4gICAgICAgIGZvbGQgKGNvbnMgdHJlZSBlbnVtKSB+aW5pdDpuZXh0IH5mXG4gICAgOztcblxuICAgIGxldCBmb2xkMiBjb21wYXJlX2tleSB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgY3VyciA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gY3VyclxuICAgICAgICB8IEVuZCwgXyAtPlxuICAgICAgICAgIGZvbGQgdDIgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYFJpZ2h0IGRhdGEpIGFjYykgW0Bub250YWlsXG4gICAgICAgICAgXVxuICAgICAgICB8IF8sIEVuZCAtPlxuICAgICAgICAgIGZvbGQgdDEgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYExlZnQgZGF0YSkgYWNjKSBbQG5vbnRhaWxcbiAgICAgICAgICBdXG4gICAgICAgIHwgTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpLCBNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBCb3RoICh2MSwgdjIpKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBMZWZ0IHYxKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSB0MiBuZXh0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azIgfmRhdGE6KGBSaWdodCB2MikgY3VyciBpblxuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyIGluaXQgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsID1cbiAgICAgIGxldCBzdGVwIHN0YXRlID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGtleSwgYFJpZ2h0IGRhdGE7IHN0YXRlID0gRW5kLCBjb25zIHRyZWUgZW51bSB9XG4gICAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSwgRW5kIC0+XG4gICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0ga2V5LCBgTGVmdCBkYXRhOyBzdGF0ZSA9IGNvbnMgdHJlZSBlbnVtLCBFbmQgfVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBlbnVtMSB0cmVlMiBlbnVtMiBpblxuICAgICAgICAgICAgaWYgZGF0YV9lcXVhbCB2MSB2MlxuICAgICAgICAgICAgdGhlbiBTZXF1ZW5jZS5TdGVwLlNraXAgeyBzdGF0ZSA9IG5leHRfc3RhdGUgfVxuICAgICAgICAgICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrMSwgYFVuZXF1YWwgKHYxLCB2Mik7IHN0YXRlID0gbmV4dF9zdGF0ZSB9KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazEsIGBMZWZ0IHYxOyBzdGF0ZSA9IGNvbnMgdHJlZTEgZW51bTEsIHJpZ2h0IH1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrMiwgYFJpZ2h0IHYyOyBzdGF0ZSA9IGxlZnQsIGNvbnMgdHJlZTIgZW51bTIgfVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0Oihkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHQxIEVuZCB0MiBFbmQpIH5mOnN0ZXBcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAgIGxldCBhZGQgYWNjIGsgdiA9IGYgYWNjIChrLCBgUmlnaHQgdikgaW5cbiAgICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgICAgbGV0IHJlYyBsb29wIGxlZnQgcmlnaHQgYWNjID1cbiAgICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgICB8IEVuZCwgZW51bSAtPlxuICAgICAgICAgIGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgZW51bSwgRW5kIC0+XG4gICAgICAgICAgZm9sZCBlbnVtIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaWYgZGF0YV9lcXVhbCB2MSB2MiB0aGVuIGFjYyBlbHNlIGYgYWNjIChrMSwgYFVuZXF1YWwgKHYxLCB2MikpIGluXG4gICAgICAgICAgICBsZXQgZW51bTEsIGVudW0yID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBlbnVtMSB0cmVlMiBlbnVtMiBpblxuICAgICAgICAgICAgbG9vcCBlbnVtMSBlbnVtMiBhY2MpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsxIHYxIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSByaWdodCBhY2MpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrMiB2MiBpblxuICAgICAgICAgICAgbG9vcCBsZWZ0IChjb25zIHRyZWUyIGVudW0yKSBhY2MpXG4gICAgICBpblxuICAgICAgbGV0IGxlZnQsIHJpZ2h0ID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgICBsb29wIGxlZnQgcmlnaHQgaW5pdCBbQG5vbnRhaWxdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT5cbiAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gaywgdjsgc3RhdGUgPSBFbnVtLmNvbnMgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWUgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPlxuICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrLCB2OyBzdGF0ZSA9IEVudW0uY29uc19yaWdodCB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9rZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2ZfdHJlZV9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZ19rZXkpXG4gICAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2tleSBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSAtPiBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19sZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBsZXQgZTEsIGUyID0gRW51bS5kcm9wX3BoeXNfZXF1YWxfcHJlZml4IHQxIEVuZCB0MiBFbmQgaW5cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIGUxIGUyXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgbGV0IGUxLCBlMiA9IEVudW0uZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgRW51bS5lcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgZTEgZTJcbiAgOztcblxuICBsZXQgaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyXG4gICAgICBjb21wYXJlX2tleVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MSlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDIpXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICgpIC0+IGYgfmtleSB+ZGF0YSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDIgY29tcGFyZV9rZXkgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MikgfmYgfmluaXRcbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAoKiBbRW51bS5mb2xkX2RpZmZzXSBpcyBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwgYnV0IGlzIGNvbnNpZGVyYWJseVxuICAgICAgIHNsb3dlciwgYXMgd2UgaGF2ZSB0byBhbGxvY2F0ZSBxdWl0ZSBhIGxvdCBvZiBzdGF0ZSB0byB0cmFjayBlbnVtZXJhdGlvbiBvZiBhIHRyZWUuXG4gICAgICAgQXZvaWQgaWYgd2UgY2FuLlxuICAgICopXG4gICAgbGV0IHNsb3cgeCB5IH5pbml0ID0gRW51bS5mb2xkX3N5bW1ldHJpY19kaWZmIHggeSB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmYgfmluaXQgaW5cbiAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgbGV0IGRlbHRhIGFjYyBrIHYgdicgPSBpZiBkYXRhX2VxdWFsIHYgdicgdGhlbiBhY2MgZWxzZSBmIGFjYyAoaywgYFVuZXF1YWwgKHYsIHYnKSkgaW5cbiAgICAoKiBJZiB0d28gdHJlZXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXQgdGhlIHJvb3QgKGFuZCB0aGUgc2FtZSBrZXksIGlmIHRoZXkncmVcbiAgICAgICBbTm9kZV1zKSB3ZSBjYW4gdHJpdmlhbGx5IGRpZmYgZWFjaCBzdWJwYXJ0IGluIG9idmlvdXMgd2F5cy4gKilcbiAgICBsZXQgcmVjIGxvb3AgdCB0JyBhY2MgPVxuICAgICAgaWYgcGh5c19lcXVhbCB0IHQnXG4gICAgICB0aGVuIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQsIHQnIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgbmV3X3ZhbHMgLT5cbiAgICAgICAgICBmb2xkIG5ld192YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCBvbGRfdmFscywgRW1wdHkgLT5cbiAgICAgICAgICBmb2xkIG9sZF92YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCBMZWFmIChrLCB2KSwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSBrIGsnIHdpdGhcbiAgICAgICAgICAgfCB4IHdoZW4geCA9IDAgLT4gZGVsdGEgYWNjIGsgdiB2J1xuICAgICAgICAgICB8IHggd2hlbiB4IDwgMCAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsgdiBpblxuICAgICAgICAgICAgIGFkZCBhY2MgaycgdidcbiAgICAgICAgICAgfCBfICgqIHdoZW4geCA+IDAgKikgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrJyB2JyBpblxuICAgICAgICAgICAgIHJlbW92ZSBhY2MgayB2KVxuICAgICAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pLCBOb2RlIChsJywgaycsIHYnLCByJywgXykgd2hlbiBjb21wYXJlX2tleSBrIGsnID0gMCAtPlxuICAgICAgICAgIGxldCBhY2MgPSBsb29wIGwgbCcgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IGRlbHRhIGFjYyBrIHYgdicgaW5cbiAgICAgICAgICBsb29wIHIgcicgYWNjXG4gICAgICAgICgqIE91ciByb290cyBhcmVuJ3QgdGhlIHNhbWUga2V5LiBGYWxsYmFjayB0byB0aGUgc2xvdyBtb2RlLiBUcmVlcyB3aXRoIHNtYWxsXG4gICAgICAgICAgIGRpZmZzIHdpbGwgb25seSBkbyB0aGlzIG9uIHZlcnkgc21hbGwgcGFydHMgb2YgdGhlIHRyZWUgKGhvcGVmdWxseSAtIGlmIHRoZVxuICAgICAgICAgICBvdmVyYWxsIHJvb3QgaXMgcmViYWxhbmNlZCwgd2UnbGwgZWF0IHRoZSB3aG9sZSBjb3N0LCB1bmZvcnR1bmF0ZWx5LikgKilcbiAgICAgICAgfCBOb2RlIF8sIE5vZGUgXyB8IE5vZGUgXywgTGVhZiBfIHwgTGVhZiBfLCBOb2RlIF8gLT4gc2xvdyB0IHQnIH5pbml0OmFjYylcbiAgICBpblxuICAgIGxvb3AgdDEgdDIgaW5pdCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJlYyBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKGwsIF8sIF8sIHIsIF8pIC0+IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIGZvbGRcbiAgICAgIHRcbiAgICAgIH5pbml0OihoYXNoX2ZvbGRfaW50IHN0YXRlIChsZW5ndGggdCkpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgc3RhdGUgLT4gaGFzaF9mb2xkX2RhdGEgKGhhc2hfZm9sZF9rZXkgc3RhdGUga2V5KSBkYXRhKVxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleSB+ZGF0YTpfIGxpc3QgLT4ga2V5IDo6IGxpc3QpIHQgfmluaXQ6W11cbiAgbGV0IGRhdGEgdCA9IGZvbGRfcmlnaHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIHQgfmluaXQ6W11cblxuICBtb2R1bGUgdHlwZSBGb2xkYWJsZSA9IHNpZ1xuICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuICBlbmRcblxuICBsZXRbQGlubGluZSBhbHdheXNdIG9mX2ZvbGRhYmxlJyB+Zm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIChmb2xkIFtAaW5saW5lZCBoaW50XSlcbiAgICAgIGZvbGRhYmxlXG4gICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICB+ZjooZnVuIHsgdHJlZSA9IGFjY3VtOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICBsZXQgcHJldl9kYXRhID1cbiAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbml0XG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldlxuICAgICAgICBpblxuICAgICAgICBsZXQgZGF0YSA9IGYgcHJldl9kYXRhIGRhdGEgaW5cbiAgICAgICAgKHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICA7O1xuXG4gIG1vZHVsZSBPZl9mb2xkYWJsZSAoTSA6IEZvbGRhYmxlKSA9IHN0cnVjdFxuICAgIGxldCBvZl9mb2xkYWJsZV9mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBvZl9mb2xkYWJsZScgfmZvbGQ6TS5mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfcmVkdWNlIGZvbGRhYmxlIH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBNLmZvbGRcbiAgICAgICAgZm9sZGFibGVcbiAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICB+ZjooZnVuIHsgdHJlZSA9IGFjY3VtOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIGxldCBuZXdfZGF0YSA9XG4gICAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgICAgICAgIHwgU29tZSBwcmV2IC0+IGYgcHJldiBkYXRhXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoc2V0IGFjY3VtIH5sZW5ndGggfmtleSB+ZGF0YTpuZXdfZGF0YSB+Y29tcGFyZV9rZXkgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxcbiAgICAgIF1cbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleSA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgTS5mb2xkXG4gICAgICAgICAgICBmb2xkYWJsZVxuICAgICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IGxlbmd0aCcgfSBhcyBhY2MpID1cbiAgICAgICAgICAgICAgICBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCdcbiAgICAgICAgICAgICAgdGhlbiByLnJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KVxuICAgICAgICAgICAgICBlbHNlIGdsb2JhbGl6ZSBhY2MgW0Bub250YWlsXSlcbiAgICAgICAgaW5cbiAgICAgICAgYE9rIG1hcClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX29yX2Vycm9yIGZvbGRhYmxlIH5jb21wYXJhdG9yID1cbiAgICAgIG1hdGNoIG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX29yX2Vycm9yOiBkdXBsaWNhdGUga2V5XCIpXG4gICAgICAgICAga2V5XG4gICAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX2V4biBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgKFwiTWFwLm9mX1wiIF4gTS5uYW1lIF4gXCJfZXhuOiBkdXBsaWNhdGUga2V5XCIpIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgIDs7XG5cbiAgICAoKiBSZXZlcnNlIHRoZSBpbnB1dCwgdGhlbiBmb2xkIGZyb20gbGVmdCB0byByaWdodC4gVGhlIHJlc3VsdGluZyBtYXAgdXNlcyB0aGUgZmlyc3RcbiAgICAgICBpbnN0YW5jZSBvZiBlYWNoIGtleSBmcm9tIHRoZSBpbnB1dCBsaXN0LiBUaGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgZWxlbWVudHMgaW4gZWFjaFxuICAgICAgIG91dHB1dCBsaXN0IGlzIHRoZSBzYW1lIGFzIGluIHRoZSBpbnB1dCBsaXN0LiAqKVxuICAgIGxldCBvZl9mb2xkYWJsZV9tdWx0aSBmb2xkYWJsZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgbGV0IGFsaXN0ID0gTS5mb2xkIGZvbGRhYmxlIH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgaW5cbiAgICAgIG9mX2ZvbGRhYmxlJyBhbGlzdCB+Zm9sZDpMaXN0LmZvbGQgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSB+Y29tcGFyZV9rZXlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgT2ZfYWxpc3QgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwiYWxpc3RcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBmb2xkID0gTGlzdC5mb2xkXG4gICAgZW5kKVxuXG4gIGxldCBvZl9hbGlzdF9mb2xkID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZm9sZFxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfcmVkdWNlXG4gIGxldCBvZl9hbGlzdCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX29yX2Vycm9yXG4gIGxldCBvZl9hbGlzdF9leG4gPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9leG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfbXVsdGlcblxuICBtb2R1bGUgT2Zfc2VxdWVuY2UgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwic2VxdWVuY2VcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICAgIGxldCBmb2xkID0gU2VxdWVuY2UuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2Zfc2VxdWVuY2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfZXhuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX211bHRpXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXkgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgbGV0IG1hcCA9XG4gICAgICAgIExpc3QuZm9sZFxuICAgICAgICAgIGxpc3RcbiAgICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQga2V5ID0gZ2V0X2tleSBkYXRhIGluXG4gICAgICAgICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IG5ld19sZW5ndGggfSBhcyBhY2MpID1cbiAgICAgICAgICAgICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGxlbmd0aCA9IG5ld19sZW5ndGhcbiAgICAgICAgICAgIHRoZW4gci5yZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSlcbiAgICAgICAgICAgIGVsc2UgZ2xvYmFsaXplIGFjYyBbQG5vbnRhaWxdKVxuICAgICAgaW5cbiAgICAgIGBPayBtYXApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yID1cbiAgICBtYXRjaCBvZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgIFwiTWFwLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3I6IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBrZXlcbiAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeCAtPiB4XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmNyZWF0ZSBcIk1hcC5vZl9saXN0X3dpdGhfa2V5X2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGxpc3QgPSBMaXN0LnJldiBsaXN0IGluXG4gICAgTGlzdC5mb2xkIGxpc3QgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKSB+ZjooZnVuIHsgdHJlZSA9IHQ7IGxlbmd0aCB9IGRhdGEgLT5cbiAgICAgIGxldCBrZXkgPSBnZXRfa2V5IGRhdGEgaW5cbiAgICAgICh1cGRhdGUgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1biBvcHRpb24gLT5cbiAgICAgICAgIGxldCBsaXN0ID0gT3B0aW9uLnZhbHVlIG9wdGlvbiB+ZGVmYXVsdDpbXSBpblxuICAgICAgICAgZGF0YSA6OiBsaXN0KVxuICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBub3QgKGYgZGF0YSkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgICB0cnVlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgbm90IChmIH5rZXkgfmRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIGYgZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXG4gICAgXVxuICA7O1xuXG4gIGxldCB0b19hbGlzdCA/KGtleV9vcmRlciA9IGBJbmNyZWFzaW5nKSB0ID1cbiAgICBtYXRjaCBrZXlfb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT4gZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gICAgfCBgRGVjcmVhc2luZyAtPiBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIHggLT4gKGtleSwgZGF0YSkgOjogeClcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZWx0cyA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46KGxlbmd0aCB0MSArIGxlbmd0aCB0MikgaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgaXRlcjIgdDEgdDIgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleSB+ZGF0YTp2YWx1ZXMgLT5cbiAgICAgIG1hdGNoIGYgfmtleSB2YWx1ZXMgd2l0aFxuICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgIFVuaWZvcm1fYXJyYXkuc2V0IGVsdHMgIWkgKGtleSwgdmFsdWUpO1xuICAgICAgICBpbmNyIGlcbiAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgbGV0IGxlbiA9ICFpIGluXG4gICAgbGV0IGdldCBpID0gVW5pZm9ybV9hcnJheS5nZXQgZWx0cyBpIGluXG4gICAgbGV0IHRyZWUgPSBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mOmdldCBpblxuICAgICAod2l0aF9sZW5ndGggdHJlZSBsZW4pXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCA9XG4gICAgbGV0IG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aF9sYXJnZSB0X2xhcmdlIHRfc21hbGwgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIGZvbGRcbiAgICAgICAgdF9zbWFsbFxuICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIHRfbGFyZ2UgbGVuZ3RoX2xhcmdlKVxuICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGE6ZGF0YScgeyB0cmVlID0gdDsgbGVuZ3RoIH0gLT5cbiAgICAgICAgICAodXBkYXRlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhJ1xuICAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IGNhbGwgY29tYmluZSB+a2V5IGRhdGEgZGF0YScpXG4gICAgICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgIGluXG4gICAgbGV0IGNhbGwgZiB+a2V5IHggeSA9IGYgfmtleSB4IHkgaW5cbiAgICBsZXQgc3dhcCBmIH5rZXkgeCB5ID0gZiB+a2V5IHkgeCBpblxuICAgIGZ1biB0MSB0MiB+bGVuZ3RoMSB+bGVuZ3RoMiB+Y29tYmluZSB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGxlbmd0aDIgPD0gbGVuZ3RoMVxuICAgICAgdGhlbiBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgxIHQxIHQyIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgyIHQyIHQxIH5jYWxsOnN3YXAgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIENsb3Nlc3Rfa2V5X2ltcGwgPSBzdHJ1Y3RcbiAgICAoKiBbbWFya2VyXSBhbmQgW3JlcGFja2FnZV0gYWxsb3cgdXMgdG8gY3JlYXRlIFwibG9naWNhbFwiIG9wdGlvbnMgd2l0aG91dCBhY3R1YWxseVxuICAgICAgIGFsbG9jYXRpbmcgYW55IG9wdGlvbnMuIFBhc3NpbmcgW0ZvdW5kIGtleSB2YWx1ZV0gdG8gYSBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgcGFzc2luZyBbU29tZSAoa2V5LCB2YWx1ZSldOyBwYXNzaW5nIFtNaXNzaW5nICgpICgpXSBpcyBlcXVpdmFsZW50IHRvIHBhc3NpbmdcbiAgICAgICBbTm9uZV0uICopXG4gICAgdHlwZSAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyID1cbiAgICAgIHwgTWlzc2luZyA6ICgnaywgJ3YsIHVuaXQsIHVuaXQpIG1hcmtlclxuICAgICAgfCBGb3VuZCA6ICgnaywgJ3YsICdrLCAndikgbWFya2VyXG5cbiAgICBsZXQgcmVwYWNrYWdlXG4gICAgICAgICAgKHR5cGUgayB2IGtfb3B0IHZfb3B0KVxuICAgICAgICAgIChtYXJrZXIgOiAoaywgdiwga19vcHQsIHZfb3B0KSBtYXJrZXIpXG4gICAgICAgICAgKGsgOiBrX29wdClcbiAgICAgICAgICAodiA6IHZfb3B0KVxuICAgICAgOiAoayAqIHYpIG9wdGlvblxuICAgICAgPVxuICAgICAgbWF0Y2ggbWFya2VyIHdpdGhcbiAgICAgIHwgTWlzc2luZyAtPiBOb25lXG4gICAgICB8IEZvdW5kIC0+IFNvbWUgKGssIHYpXG4gICAgOztcblxuICAgICgqIFRoZSB0eXBlIHNpZ25hdHVyZSBpcyBleHBsaWNpdCBoZXJlIHRvIGFsbG93IHBvbHltb3JwaGljIHJlY3Vyc2lvbi4gKilcbiAgICBsZXQgcmVjIGxvb3AgOlxuICAgICAgJ2sgJ3YgJ2tfb3B0ICd2X29wdC5cbiAgICAgICgnaywgJ3YpIHRyZWVcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrXG4gICAgICAtPiBjb21wYXJlX2tleTooJ2sgLT4gJ2sgLT4gaW50KVxuICAgICAgLT4gKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlclxuICAgICAgLT4gJ2tfb3B0XG4gICAgICAtPiAndl9vcHRcbiAgICAgIC0+ICgnayAqICd2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIGZ1biB0IGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIC0+XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIC0+IGMgPj0gMFxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+IGMgPiAwXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IGMgPD0gMFxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+IGMgPCAwXG4gICAgICAgICAgdGhlbiBTb21lIChrJywgdicpXG4gICAgICAgICAgZWxzZSByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IE5vZGUgKGwsIGsnLCB2JywgciwgXykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBjID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJhc2UgY2FzZSAobm8gcmVjdXJzaXZlIGNhbGwpLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgTGVzc19vcl9lcXVhbF90byAtPiBTb21lIChrJywgdicpXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgciB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWluX2VsdCByXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgbCB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWF4X2VsdCBsKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogV2UgYXJlIGd1YXJhbnRlZWQgaGVyZSB0aGF0IGsnIDw+IGsuICopXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHRoZSBvbmx5IHJlY3Vyc2l2ZSBjYXNlLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIgayB+Y29tcGFyZV9rZXkgPSBsb29wIHQgZGlyIGsgfmNvbXBhcmVfa2V5IE1pc3NpbmcgKCkgKClcbiAgZW5kXG5cbiAgbGV0IGNsb3Nlc3Rfa2V5ID0gQ2xvc2VzdF9rZXlfaW1wbC5jbG9zZXN0X2tleVxuXG4gIGxldCByZWMgcmFuayB0IGsgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGsnLCBfKSAtPiBpZiBjb21wYXJlX2tleSBrJyBrID0gMCB0aGVuIFNvbWUgMCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGsnLCBfLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiBTb21lIChsZW5ndGggbClcbiAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgIHRoZW4gcmFuayBsIGsgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIE9wdGlvbi5tYXAgKHJhbmsgciBrIH5jb21wYXJlX2tleSkgfmY6KGZ1biByYW5rIC0+IHJhbmsgKyAxICsgbGVuZ3RoIGwpXG4gIDs7XG5cbiAgKCogdGhpcyBjb3VsZCBiZSBpbXBsZW1lbnRlZCB1c2luZyBbU2VxdWVuY2VdIGludGVyZmFjZSBidXQgdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvblxuICAgICBhbGxvY2F0ZXMgb25seSAyIHdvcmRzIGFuZCBkb2Vzbid0IHJlcXVpcmUgd3JpdGUtYmFycmllciAqKVxuICBsZXQgcmVjIG50aCcgbnVtX3RvX3NlYXJjaCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPlxuICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICBOb25lKVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIChtYXRjaCBudGgnIG51bV90b19zZWFyY2ggbCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiBzb21lXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgICAgIG50aCcgbnVtX3RvX3NlYXJjaCByKSlcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IG50aCcgKHJlZiBuKSB0XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPCAwKSBbQG5vbnRhaWxdXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID49IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB+a2V5IH5kYXRhID0gbm90IChpc19sZWZ0IH5rZXkgfmRhdGEpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0IFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXSBmaW5kcyB0aGUga2V5IGluIFt0XSB3aGljaCBzYXRpc2ZpZXMgW21heWJlX2JvdW5kXVxuICAgICBhbmQgdGhlIHJlbGV2YW50IG9uZSBvZiBbaWZfZXhjbHVzaXZlXSBvciBbaWZfaW5jbHVzaXZlXSwgYXMganVkZ2VkIGJ5IFtjb21wYXJlXS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgfmlmX2V4Y2x1c2l2ZSB+aWZfaW5jbHVzaXZlID1cbiAgICBsZXQgZmluZF9ib3VuZCB0IGhvdyBib3VuZCB+Y29tcGFyZSA6IF8gTWF5YmVfYm91bmQudCBvcHRpb24gPVxuICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCB0IGhvdyBib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICB8IFNvbWUgKGJvdW5kLCBfKSAtPiBTb21lIChJbmNsIGJvdW5kKVxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIChtYXliZV9ib3VuZCA6IF8gTWF5YmVfYm91bmQudCkgd2l0aFxuICAgIHwgRXhjbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfZXhjbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBJbmNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9pbmNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IFVuYm91bmRlZCAtPiBTb21lIFVuYm91bmRlZFxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHNdIGZpbmRzIHRoZSAobm90IG5lY2Vzc2FyaWx5IGRpc3RpbmN0KSBrZXlzIGluIFt0XVxuICAgICB3aGljaCBtb3N0IGNsb3NlbHkgYXBwcm9hY2ggKGJ1dCBkbyBub3QgY3Jvc3MpIFtsb3dlcl9ib3VuZF0gYW5kIFt1cHBlcl9ib3VuZF0sIGFzXG4gICAgIGp1ZGdlZCBieSBbY29tcGFyZV0uIEl0IHJldHVybnMgW05vbmVdIGlmIG5vIGtleXMgaW4gW3RdIGFyZSB3aXRoaW4gdGhhdCByYW5nZS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBmaW5kX2xvd2VyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBsZXQgZmluZF91cHBlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIG1hdGNoIGZpbmRfbG93ZXJfYm91bmQgdCBsb3dlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbG93ZXJfYm91bmQgLT5cbiAgICAgIChtYXRjaCBmaW5kX3VwcGVyX2JvdW5kIHQgdXBwZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIHVwcGVyX2JvdW5kIC0+IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkpXG4gIDs7XG5cblxuICB0eXBlICgnaywgJ3YpIGFjYyA9XG4gICAgeyBtdXRhYmxlIGJhZF9rZXkgOiAnayBvcHRpb25cbiAgICA7IG11dGFibGUgbWFwX2xlbmd0aCA6ICgnaywgJ3YpIHQgV2l0aF9sZW5ndGgudFxuICAgIH1cblxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFjYyA9IHsgYmFkX2tleSA9IE5vbmU7IG1hcF9sZW5ndGggPSB3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMCB9IGluXG4gICAgaXRlcmkgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBsZXQgeyB0cmVlID0gbWFwOyBsZW5ndGggfSA9IGFjYy5tYXBfbGVuZ3RoIGluXG4gICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IGxlbmd0aCcgfSBhcyBwYWlyKSA9XG4gICAgICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgbWFwIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCcgJiYgT3B0aW9uLmlzX25vbmUgYWNjLmJhZF9rZXlcbiAgICAgIHRoZW4gYWNjLmJhZF9rZXkgPC0gU29tZSBrZXlcbiAgICAgIGVsc2UgYWNjLm1hcF9sZW5ndGggPC0gZ2xvYmFsaXplIHBhaXIpO1xuICAgIG1hdGNoIGFjYy5iYWRfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9rIGFjYy5tYXBfbGVuZ3RoXG4gICAgfCBTb21lIGtleSAtPiBgRHVwbGljYXRlX2tleSBrZXlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSB+KGNvbXBhcmF0b3IgOiBfIENvbXBhcmF0b3IudCkgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuY3JlYXRlIFwiTWFwLm9mX2l0ZXJpX2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwIHNleHAgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwKSBzZXhwIGluXG4gICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgbWF0Y2ggb2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgICBMaXN0Lml0ZXIyX29rIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBrMiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiTWFwLnRfb2Zfc2V4cF9kaXJlY3Q6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgIGxldCBmIH5rZXkgfmRhdGEgYWNjID0gU2V4cC5MaXN0IFsgc2V4cF9vZl9rZXkga2V5OyBzZXhwX29mX3ZhbHVlIGRhdGEgXSA6OiBhY2MgaW5cbiAgICBTZXhwLkxpc3QgKGZvbGRfcmlnaHQgfmYgdCB+aW5pdDpbXSlcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCB+c2V4cF9vZl9rZXkgPVxuICAgIGxldCBva3MsIGVycm9ycyA9IHBhcnRpdGlvbl9tYXAgdCB+ZjpSZXN1bHQudG9fZWl0aGVyIGluXG4gICAgaWYgaXNfZW1wdHkgZXJyb3JzXG4gICAgdGhlbiBPayBva3NcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yX3MgKHNleHBfb2ZfdCBzZXhwX29mX2tleSBFcnJvci5zZXhwX29mX3QgZXJyb3JzKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c1xuICAgICAgICB0MVxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcjooeyBjb21wYXJlID0gY29tcGFyZV9rZXk7IHNleHBfb2ZfdCA9IHNleHBfb2Zfa2V5IH0gOiBfIENvbXBhcmF0b3IudClcbiAgICA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBgT2tcbiAgICAgICAgKGZvbGRcbiAgICAgICAgICAgdDFcbiAgICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgeyB0cmVlID0gdDI7IGxlbmd0aCB9IC0+XG4gICAgICAgICAgICAgbGV0IGtleSA9IGYga2V5IGluXG4gICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICBhZGRfZXhuX2ludGVybmFsIHQyIH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IHw+IGdsb2JhbGl6ZVxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IER1cGxpY2F0ZSAtPiByZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSkpKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcmVzdWx0IC0+IHJlc3VsdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90IGluXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJNYXAubWFwX2tleXNfZXhuOiBkdXBsaWNhdGUga2V5XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcblxuICBsZXQgdHJhbnNwb3NlX2tleXMgfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3Igb3V0ZXJfdCA9XG4gICAgZm9sZFxuICAgICAgb3V0ZXJfdFxuICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgfmY6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl90IGFjYyAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgaW5uZXJfdFxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgeyB0cmVlID0gYWNjOyBsZW5ndGggPSBhY2NfbGVuIH0gLT5cbiAgICAgICAgICAgICh1cGRhdGVcbiAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgaW5uZXJfa2V5XG4gICAgICAgICAgICAgICB+bGVuZ3RoOmFjY19sZW5cbiAgICAgICAgICAgICAgIH5jb21wYXJlX2tleTppbm5lcl9jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB3aXRoX2xlbmd0aF9nbG9iYWwgKHNpbmdsZXRvbiBvdXRlcl9rZXkgZGF0YSkgMVxuICAgICAgICAgICAgICAgICB8IFNvbWUgeyB0cmVlID0gZWx0OyBsZW5ndGggPSBlbHRfbGVuIH0gLT5cbiAgICAgICAgICAgICAgICAgICAoc2V0XG4gICAgICAgICAgICAgICAgICAgICAgZWx0XG4gICAgICAgICAgICAgICAgICAgICAgfmtleTpvdXRlcl9rZXlcbiAgICAgICAgICAgICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgICAgICAgICAgIH5sZW5ndGg6ZWx0X2xlblxuICAgICAgICAgICAgICAgICAgICAgIH5jb21wYXJlX2tleTpvdXRlcl9jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgICAgICAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pXG4gICAgICAgICAgICAgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSlcbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgPSBzdHJ1Y3RcbiAgICBsZXQgcmVjIG1hcGkgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQS5yZXR1cm4gRW1wdHlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gQS5tYXAgKGYgfmtleTp2IH5kYXRhOmQpIH5mOihmdW4gbmV3X2RhdGEgLT4gTGVhZiAodiwgbmV3X2RhdGEpKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgbCcgPSBBLm9mX3RodW5rIChmdW4gKCkgLT4gbWFwaSB+ZiBsKSBpblxuICAgICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICAgIGxldCByJyA9IEEub2ZfdGh1bmsgKGZ1biAoKSAtPiBtYXBpIH5mIHIpIGluXG4gICAgICAgIEEubWFwMyBsJyBkJyByJyB+ZjooZnVuIGwnIGQnIHInIC0+IE5vZGUgKGwnLCB2LCBkJywgcicsIGgpKVxuICAgIDs7XG5cbiAgICAoKiBJbiB0aGVvcnkgdGhlIGNvbXB1dGF0aW9uIG9mIGxlbmd0aCBvbi10aGUtZmx5IGlzIG5vdCBuZWNlc3NhcnkgaGVyZSBiZWNhdXNlIGl0IGNhblxuICAgICAgIGJlIGRvbmUgYnkgd3JhcHBpbmcgdGhlIGFwcGxpY2F0aXZlIFtBXSB3aXRoIGxlbmd0aC1jb21wdXRpbmcgbG9naWMuIEhvd2V2ZXIsXG4gICAgICAgaW50cm9kdWNpbmcgYW4gYXBwbGljYXRpdmUgdHJhbnNmb3JtZXIgbGlrZSB0aGF0IG1ha2VzIHRoZSBtYXAgYmVuY2htYXJrcyBpblxuICAgICAgIGFzeW5jX2tlcm5lbC9iZW5jaC9zcmMvYmVuY2hfZGVmZXJyZWRfbWFwLm1sIG5vdGljZWFibHkgc2xvd2VyLiAqKVxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIGxldCByZWMgdHJlZV9maWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gQS5yZXR1cm4gKHdpdGhfbGVuZ3RoX2dsb2JhbCBFbXB0eSAwKVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgICAgQS5tYXAgKGYgfmtleTp2IH5kYXRhOmQpIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBTb21lIG5ld19kYXRhIC0+IHdpdGhfbGVuZ3RoX2dsb2JhbCAoTGVhZiAodiwgbmV3X2RhdGEpKSAxXG4gICAgICAgICAgICB8IE5vbmUgLT4gd2l0aF9sZW5ndGhfZ2xvYmFsIEVtcHR5IDApXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgICBBLm1hcDNcbiAgICAgICAgICAgIChBLm9mX3RodW5rIChmdW4gKCkgLT4gdHJlZV9maWx0ZXJfbWFwaSBsIH5mKSlcbiAgICAgICAgICAgIChmIH5rZXk6diB+ZGF0YTpkKVxuICAgICAgICAgICAgKEEub2ZfdGh1bmsgKGZ1biAoKSAtPiB0cmVlX2ZpbHRlcl9tYXBpIHIgfmYpKVxuICAgICAgICAgICAgfmY6XG4gICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICB7IHRyZWUgPSBsJzsgbGVuZ3RoID0gbF9sZW4gfSBuZXdfZGF0YSB7IHRyZWUgPSByJzsgbGVuZ3RoID0gcl9sZW4gfSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIG5ld19kYXRhIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgbmV3X2RhdGEgLT5cbiAgICAgICAgICAgICAgICAgIHdpdGhfbGVuZ3RoX2dsb2JhbCAoam9pbiBsJyB2IG5ld19kYXRhIHInKSAobF9sZW4gKyByX2xlbiArIDEpXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICB3aXRoX2xlbmd0aF9nbG9iYWwgKGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpIChsX2xlbiArIHJfbGVuKSlcbiAgICAgIGluXG4gICAgICB0cmVlX2ZpbHRlcl9tYXBpIHQgfmZcbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2ssICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogKCdrLCAndikgVHJlZTAudFxuICA7IGxlbmd0aCA6IGludFxuICB9XG5cbnR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG5cbmxldCBjb21wYXJlX2tleSB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGxlbmd0aCA9IF87IGNvbXBhcmF0b3IgfSAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudCkgPVxuICB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgbGlrZV9tYXliZV9ub19vcFxuICAgICAgKHsgdHJlZSA9IG9sZF90cmVlOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gYXMgb2xkX3QpXG4gICAgICAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudClcbiAgPVxuICBpZiBwaHlzX2VxdWFsIG9sZF90cmVlIHRyZWUgdGhlbiBvbGRfdCBlbHNlIHsgdHJlZTsgbGVuZ3RoOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCB3aXRoX3NhbWVfbGVuZ3RoIHsgdHJlZSA9IF87IGNvbXBhcmF0b3I7IGxlbmd0aCB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCB9XG5sZXQgb2ZfbGlrZV90cmVlIHQgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG5sZXQgb2ZfbGlrZV90cmVlX21heWJlX25vX29wIHQgdHJlZSA9XG4gIGlmIHBoeXNfZXF1YWwgdC50cmVlIHRyZWVcbiAgdGhlbiB0XG4gIGVsc2UgeyB0cmVlOyBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG47O1xuXG5sZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbigqIEV4cG9zaW5nIHRoaXMgZnVuY3Rpb24gd291bGQgbWFrZSBpdCB2ZXJ5IGVhc3kgZm9yIHRoZSBpbnZhcmlhbnRzXG4gICBvZiB0aGlzIG1vZHVsZSB0byBiZSBicm9rZW4uICopXG5sZXQgb2ZfdHJlZV91bnNhZmUgfmNvbXBhcmF0b3Igfmxlbmd0aCB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuXG4gIGxldCBpbnZhcmlhbnRzIHQgPVxuICAgIFRyZWUwLmludmFyaWFudHMgdC50cmVlIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgJiYgVHJlZTAubGVuZ3RoIHQudHJlZSA9IHQubGVuZ3RoXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLnNldCB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5cbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4bl9pbnRlcm5hbFxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgcmVzdWx0IC0+IGBPayByZXN1bHRcbiAgICB8IGV4Y2VwdGlvbiBEdXBsaWNhdGUgLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX211bHRpIHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLnJlbW92ZV9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCBrZXkgPSBUcmVlMC5maW5kX211bHRpIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5jaGFuZ2UgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC51cGRhdGUgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHQudHJlZVxuICAgICAga2V5XG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIHQga2V5ID0gVHJlZTAuZmluZCB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgcmVtb3ZlIHQga2V5ID1cbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICB0XG4gICAgICAoVHJlZTAucmVtb3ZlIHQudHJlZSBrZXkgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lbSB0IGtleSA9IFRyZWUwLm1lbSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQudHJlZSB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIHQxIHQyIH5mID0gVHJlZTAuaXRlcjIgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIGxldCBtYXAgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwIHQudHJlZSB+ZilcbiAgbGV0IG1hcGkgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwaSB0LnRyZWUgfmYpXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEudHJlZSB0Mi50cmVlIH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9rZXlzIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZV9tYXliZV9ub19vcCB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlsdGVyIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlciB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyaSB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2UgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXBpIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZSB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2ZfbGlrZV90cmVlMiB0ICh0MSwgdDIpID0gb2ZfbGlrZV90cmVlIHQgdDEsIG9mX2xpa2VfdHJlZSB0IHQyXG5cbiAgbGV0IG9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AgdCAodDEsIHQyKSA9XG4gICAgb2ZfbGlrZV90cmVlX21heWJlX25vX29wIHQgdDEsIG9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCB0IHQyXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBvZl9saWtlX3RyZWUyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQudHJlZSB+ZilcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IG9mX2xpa2VfdHJlZTIgdCAoVHJlZTAucGFydGl0aW9uX21hcCB0LnRyZWUgfmYpXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPSBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKFRyZWUwLnBhcnRpdGlvbmlfdGYgdC50cmVlIH5mKVxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYpXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KG9mX2xpa2VfdHJlZSB0KVxuICAgICAgKFRyZWUwLmNvbWJpbmVfZXJyb3JzIHQudHJlZSB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2RhdGEgdDEgdDIgPSBUcmVlMC5lcXVhbCAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdC50cmVlXG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHQudHJlZVxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0LnRyZWVcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MS50cmVlXG4gICAgICB0Mi50cmVlXG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiA9XG4gICAgbGlrZSB0MSAoVHJlZTAubWVyZ2UgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogVGhpcyBpcyBvbmx5IGEgbm8tb3AgaW4gdGhlIGNhc2Ugd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBtYXBzIGlzIGVtcHR5LiAqKVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIChpZiB0Mi5sZW5ndGggPD0gdDEubGVuZ3RoIHRoZW4gdDEgZWxzZSB0MilcbiAgICAgIChUcmVlMC5tZXJnZV9za2V3ZWRcbiAgICAgICAgIHQxLnRyZWVcbiAgICAgICAgIHQyLnRyZWVcbiAgICAgICAgIH5sZW5ndGgxOnQxLmxlbmd0aFxuICAgICAgICAgfmxlbmd0aDI6dDIubGVuZ3RoXG4gICAgICAgICB+Y29tYmluZVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQudHJlZSB+ZlxuXG4gIGxldCBzcGxpdCB0IGsgPVxuICAgIGxldCBsLCBtYXliZSwgciA9IFRyZWUwLnNwbGl0IHQudHJlZSBrIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgaW5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgYm90aF9sZW4gPSBpZiBPcHRpb24uaXNfc29tZSBtYXliZSB0aGVuIHQubGVuZ3RoIC0gMSBlbHNlIHQubGVuZ3RoIGluXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG1heWJlLCBvZl90cmVlX3Vuc2FmZSByIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIGwpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBvZl90cmVlIHIgfmNvbXBhcmF0b3IgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIGwgfmNvbXBhcmF0b3Igfmxlbmd0aDooYm90aF9sZW4gLSBsZW5ndGggciksIG1heWJlLCByKVxuICA7O1xuXG4gIGxldCBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdCB+aW50byBrID1cbiAgICBsZXQgbCwgciA9XG4gICAgICBUcmVlMC5zcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdC50cmVlIH5pbnRvIGsgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgIGluXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG9mX3RyZWVfdW5zYWZlIHIgfmNvbXBhcmF0b3Igfmxlbmd0aDoodC5sZW5ndGggLSBsZW5ndGggbCkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgciA9IG9mX3RyZWUgciB+Y29tcGFyYXRvciBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbCB+Y29tcGFyYXRvciB+bGVuZ3RoOih0Lmxlbmd0aCAtIGxlbmd0aCByKSwgcilcbiAgOztcblxuICBsZXQgc3BsaXRfbGVfZ3QgdCBrID0gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG86YExlZnQga1xuICBsZXQgc3BsaXRfbHRfZ2UgdCBrID0gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG86YFJpZ2h0IGtcblxuICBsZXQgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgbGVmdCwgbWlkLCByaWdodCA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZSB0LnRyZWUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IG91dGVyX2pvaW5lZF9oZWlnaHQgPVxuICAgICAgbGV0IGhfbCA9IFRyZWUwLmhlaWdodCBsZWZ0XG4gICAgICBhbmQgaF9yID0gVHJlZTAuaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoX2wgPSBoX3IgdGhlbiBoX2wgKyAxIGVsc2UgbWF4IGhfbCBoX3JcbiAgICBpblxuICAgIGlmIG91dGVyX2pvaW5lZF9oZWlnaHQgPCBUcmVlMC5oZWlnaHQgbWlkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbWlkX2xlbmd0aCA9IHQubGVuZ3RoIC0gKFRyZWUwLmxlbmd0aCBsZWZ0ICsgVHJlZTAubGVuZ3RoIHJpZ2h0KSBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpIH5sZW5ndGg6bWlkX2xlbmd0aClcbiAgICBlbHNlIG9mX3RyZWUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmFwcGVuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IGxvd2VyX3BhcnQpXG4gICAgICAgIH5sb3dlcl9wYXJ0Omxvd2VyX3BhcnQudHJlZVxuICAgICAgICB+dXBwZXJfcGFydDp1cHBlcl9wYXJ0LnRyZWVcbiAgICB3aXRoXG4gICAgfCBgT2sgdHJlZSAtPlxuICAgICAgYE9rXG4gICAgICAgIChvZl90cmVlX3Vuc2FmZVxuICAgICAgICAgICB0cmVlXG4gICAgICAgICAgIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIGxvd2VyX3BhcnQpXG4gICAgICAgICAgIH5sZW5ndGg6KGxvd2VyX3BhcnQubGVuZ3RoICsgdXBwZXJfcGFydC5sZW5ndGgpKVxuICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQudHJlZSB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdC50cmVlIH5taW4gfm1heCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdC50cmVlIGRpciBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQudHJlZSBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIHQga2V5ID0gVHJlZTAucmFuayB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdC50cmVlIH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIFRyZWUwLkVtcHR5IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHJlZV90cmF2ZXJzYWxzID0gVHJlZTAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBKVxuXG4gICAgbGV0IG1hcGkgdCB+ZiA9XG4gICAgICBBLm1hcCAoVHJlZV90cmF2ZXJzYWxzLm1hcGkgdC50cmVlIH5mKSB+ZjooZnVuIG5ld190cmVlIC0+XG4gICAgICAgIHdpdGhfc2FtZV9sZW5ndGggdCBuZXdfdHJlZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgICAgQS5tYXAgKFRyZWVfdHJhdmVyc2Fscy5maWx0ZXJfbWFwaSB0LnRyZWUgfmYpIH5mOihmdW4gbmV3X3RyZWVfd2l0aF9sZW5ndGggLT5cbiAgICAgICAgbGlrZSB0IG5ld190cmVlX3dpdGhfbGVuZ3RoKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbigqIFswXSBpcyB1c2VkIGFzIHRoZSBbbGVuZ3RoXSBhcmd1bWVudCBldmVyeXdoZXJlIGluIHRoaXMgbW9kdWxlLCBzaW5jZSB0cmVlcyBkbyBub3RcbiAgIGhhdmUgdGhlaXIgbGVuZ3RocyBzdG9yZWQgYXQgdGhlIHJvb3QsIHVubGlrZSBtYXBzLiBUaGUgdmFsdWVzIGFyZSBkaXNjYXJkZWQgYWx3YXlzLiAqKVxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9ICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0cmVlID0gdHJlZVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gayB2ID0gVHJlZTAuc2luZ2xldG9uIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvclxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdCA9IChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpLnRyZWVcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZiA9XG4gICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBtYXRjaCBUcmVlMC5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdHJlZVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSA9IChUcmVlMC5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yKS50cmVlXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl9yZXF1aXJlZF9ieV9pbnRmIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID0gKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpLnRyZWVcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBUcmVlMC5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcikudHJlZVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIChUcmVlMC5vZl9saXN0X3dpdGhfa2V5X211bHRpXG4gICAgICAgbGlzdFxuICAgICAgIH5nZXRfa2V5XG4gICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IHRvX3RyZWUgdCA9IHRcblxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0XG5cbiAgbGV0IHNldCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5zZXQgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgYWRkX2V4biB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgdFxuICAgICAgIH5rZXlcbiAgICAgICB+ZGF0YVxuICAgICAgIH5sZW5ndGg6MFxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgKFRyZWUwLmFkZF9leG5faW50ZXJuYWxcbiAgICAgICB0XG4gICAgICAgfmtleVxuICAgICAgIH5kYXRhXG4gICAgICAgfmxlbmd0aDowXG4gICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IGFkZCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIHRyeSBgT2sgKGFkZF9leG5faW50ZXJuYWwgdCB+Y29tcGFyYXRvciB+a2V5IH5kYXRhKSB3aXRoXG4gICAgfCBfIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgKFRyZWUwLmFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIChUcmVlMC5yZW1vdmVfbXVsdGkgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX211bHRpIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIChUcmVlMC5jaGFuZ2UgdCBrZXkgfmYgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIGNoYW5nZSB+Y29tcGFyYXRvciB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHRcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAuZmluZCB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICAoVHJlZTAucmVtb3ZlIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAubWVtIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICBsZXQgaXRlcl9rZXlzIHQgfmYgPSBUcmVlMC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdCB+ZlxuICBsZXQgaXRlcmlfdW50aWwgdCB+ZiA9IFRyZWUwLml0ZXJpX3VudGlsIHQgfmZcblxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIFRyZWUwLml0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mXG4gIGxldCBtYXBpIHQgfmYgPSBUcmVlMC5tYXBpIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQgfmYgfmluaXQgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIH5jb21wYXJhdG9yIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiA9IFRyZWUwLmZpbHRlcl9rZXlzIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlciB0IH5mID0gVHJlZTAuZmlsdGVyIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9IFRyZWUwLmZpbHRlcmkgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID0gVHJlZTAuZmlsdGVyX21hcGkgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl9tYXAgdCB+ZlxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gVHJlZTAucGFydGl0aW9uaV90ZiB0IH5mXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIH5jb21wYXJhdG9yIHQgPVxuICAgIFRyZWUwLmNvbWJpbmVfZXJyb3JzIHQgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmVxdWFsIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHRcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdFxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDFcbiAgICAgIHQyXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIChUcmVlMC5tZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkIH5jb21wYXJhdG9yIHQxIHQyIH5jb21iaW5lID1cbiAgICAoKiBMZW5ndGggY29tcHV0YXRpb24gbWFrZXMgdGhpcyBzaWduaWZpY2FudGx5IHNsb3dlciB0aGFuIFttZXJnZV9za2V3ZWRdIG9uIGEgbWFwXG4gICAgICAgd2l0aCBhIFtsZW5ndGhdIGZpZWxkLCBidXQgZG9lcyBwcmVzZXJ2ZSBhbW91bnQgb2YgYWxsb2NhdGlvbi4gKilcbiAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgdDFcbiAgICAgICB0MlxuICAgICAgIH5sZW5ndGgxOihsZW5ndGggdDEpXG4gICAgICAgfmxlbmd0aDI6KGxlbmd0aCB0MilcbiAgICAgICB+Y29tYmluZVxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0XG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBUcmVlMC5leGlzdHNpIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0IH5mXG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGsgPSBUcmVlMC5zcGxpdCB0IGsgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHNwbGl0X2xlX2d0IH5jb21wYXJhdG9yIHQgayA9XG4gICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5XG4gICAgICB0XG4gICAgICB+aW50bzpgTGVmdFxuICAgICAga1xuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2x0X2dlIH5jb21wYXJhdG9yIHQgayA9XG4gICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5XG4gICAgICB0XG4gICAgICB+aW50bzpgUmlnaHRcbiAgICAgIGtcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmNvbXBhcmF0b3Igfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIFRyZWUwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgXywgcmV0LCBfID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfmxvd2VyX2JvdW5kXG4gICAgICAgIH51cHBlcl9ib3VuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHJldFxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB+Y29tcGFyYXRvciB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgIHRcbiAgICAgIH5taW5cbiAgICAgIH5tYXhcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IH5jb21wYXJhdG9yIHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgfmNvbXBhcmF0b3IgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0IGRpciBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdCBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAucmFuayB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHRcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcikudHJlZVxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaCBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IEVtcHR5XG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyZWUwX3RyYXZlcnNhbHMgPSBUcmVlMC5NYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEpXG5cbiAgICBsZXQgbWFwaSB0IH5mID0gVHJlZTBfdHJhdmVyc2Fscy5tYXBpIHQgfmZcblxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIEEubWFwXG4gICAgICAgIChUcmVlMF90cmF2ZXJzYWxzLmZpbHRlcl9tYXBpIHQgfmYpXG4gICAgICAgIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiB3aXRoXG4gICAgfCBgT2sgeyB0cmVlID0gdDsgbGVuZ3RoID0gXyB9IC0+IGBPayB0XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPSAoVHJlZTAubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYpLnRyZWVcblxuICAoKiBUaGlzIGNhbGxpbmcgY29udmVudGlvbiBvZiBbfmNvbXBhcmF0b3IgfmNvbXBhcmF0b3JdIGlzIGNvbmZ1c2luZy4gSXQgaXMgcmVxdWlyZWRcbiAgICAgYmVjYXVzZSBbYWNjZXNzX29wdGlvbnNdIGFuZCBbY3JlYXRlX29wdGlvbnNdIGJvdGggZGVtYW5kIGEgW35jb21wYXJhdG9yXSBhcmd1bWVudCBpblxuICAgICBbTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZV0uXG5cbiAgICAgTWFraW5nIGl0IGxlc3MgY29uZnVzaW5nIHdvdWxkIHJlcXVpcmUgc29tZSB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5IGluIHNpZ25hdHVyZXMuXG4gICAgIEJldHRlciB0byBqdXN0IGxpdmUgd2l0aCBhbiB1bmRlc2lyYWJsZSBpbnRlcmZhY2UgaW4gYSBmdW5jdGlvbiB0aGF0IHdpbGwgcHJvYmFibHlcbiAgICAgbmV2ZXIgYmUgY2FsbGVkIGRpcmVjdGx5LiAqKVxuICBsZXQgdHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvciB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yIHQgPVxuICAgIChUcmVlMC50cmFuc3Bvc2Vfa2V5cyB+b3V0ZXJfY29tcGFyYXRvciB+aW5uZXJfY29tcGFyYXRvciB0KS50cmVlXG4gICAgfD4gbWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIHR5cGUgKCdrLCAndiwgJ3cpIHQgPSAoJ2ssICd2KSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRcblxuICAgIGxldCBlbXB0eSA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuZW1wdHlcblxuICAgIGxldCBhZGRfZXhuIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSA9XG4gICAgICBtYXRjaCBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgdCB3aXRoXG4gICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICBFcnJvci5yYWlzZV9zIChTZXhwLkF0b20gXCJNYXAuQnVpbGRfaW5jcmVhc2luZy5hZGQ6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgfCBfIC0+IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0IH5rZXkgfmRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWUgdCA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdiA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBrIHY7IGxlbmd0aCA9IDEgfVxuXG4gIGxldCBvZl90cmVlMCB+Y29tcGFyYXRvciAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudCkgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgOztcblxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAod2l0aF9sZW5ndGggdHJlZSAoVHJlZTAubGVuZ3RoIHRyZWUpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHRvX3RyZWUgPSB0b190cmVlXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgICAgfmY6KGZ1biB0cmVlIC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoIH0gLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5pdGVyaSB3aXRoXG4gICAgfCBgT2sgdHJlZV9sZW5ndGggLT4gYE9rIChvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlX2xlbmd0aClcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICh3aXRoX2xlbmd0aCAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZikgbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihmdW4geCAtPiBvZl90cmVlMCB+Y29tcGFyYXRvciB4KVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXEgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9tdWx0aSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBUcmVlMC5vZl9saXN0X3dpdGhfa2V5X211bHRpIGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gb2ZfdHJlZTAgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgdC50cmVlIH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBwYWlyIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgcGFpcilcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZHVwIC0+IGR1cFxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm1hcF9rZXlzX2V4biB0LnRyZWUgfmYgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3IgdCA9XG4gICAgbGV0IG91dGVyX2NvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3IgaW5cbiAgICBUcmVlMC50cmFuc3Bvc2Vfa2V5cyB+b3V0ZXJfY29tcGFyYXRvciB+aW5uZXJfY29tcGFyYXRvciAoVHJlZTAubWFwIHQudHJlZSB+Zjp0b190cmVlKVxuICAgIHw+IG9mX3RyZWUwIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3JcbiAgICB8PiBtYXAgfmY6KGZ1biB4IC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgeClcbiAgOztcblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3IgPSBLLmNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBlbmRcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX3RyZWUgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgdHJlZSA9XG4gIG9mX3RyZWUgfmNvbXBhcmF0b3I6TS5jb21wYXJhdG9yIHRyZWVcbjs7XG5cbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYWxpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0X211bHRpIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3RfZm9sZCBtIGEgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+aW5pdCB+ZlxuOztcblxubGV0IG9mX2FsaXN0X3JlZHVjZSBtIGEgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfaXRlcmkgbSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuXG5sZXQgb2ZfaXRlcmlfZXhuIG0gfml0ZXJpID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBtIHNlcSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzZXFcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZSBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcblxubGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIG0gcyA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuOztcblxubGV0IG9mX3NlcXVlbmNlX2V4biBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9tdWx0aSBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9mb2xkIG0gcyB+aW5pdCB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5pbml0IH5mXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIG0gcyB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHMgfmZcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5IG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBsIH5nZXRfa2V5XG47O1xuXG5sZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbSBsIH5nZXRfa2V5ID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBtYXBfa2V5cyBtIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcbmxldCBtYXBfa2V5c19leG4gbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdCB+ZlxubGV0IHRyYW5zcG9zZV9rZXlzIG0gdCA9IFVzaW5nX2NvbXBhcmF0b3IudHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgTSAoSyA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGspIHNleHBfb2ZfdiB0ID1cbiAgc2V4cF9vZl90IEsuc2V4cF9vZl90IHNleHBfb2ZfdiAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBrIGNtcClcbiAgICAgIChtb2R1bGUgSyA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgdl9vZl9zZXhwXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOksuY29tcGFyYXRvciBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrKVxuICAgICAgKG1vZHVsZSBLIDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBrKVxuICAgICAgKHZfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBUYWdnZWRcbiAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdGFnXG4gICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAgIChNYW55XG4gICAgICAgICAgICAgICAgIChMaXN0XG4gICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICggVGFnZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBncmFtbWFyID0gSy50X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICwgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUYWdnZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgZ3JhbW1hciA9IHZfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpKSlcbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9tX190IChtb2R1bGUgXyA6IENvbXBhcmVfbSkgY29tcGFyZV92IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY29tcGFyZV92IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuXG5sZXQgaGFzaF9mb2xkX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBrKSBoYXNoX2ZvbGRfdiBzdGF0ZSA9XG4gIGhhc2hfZm9sZF9kaXJlY3QgSy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfdiBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyYXRvciA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2V4biBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGEgfmluaXQgfmZcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYSB+ZlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHMgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzIH5mXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5IH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBtYXBfa2V5cyB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IHRyYW5zcG9zZV9rZXlzIHQgPSBVc2luZ19jb21wYXJhdG9yLnRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yIHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0MFxuXG50eXBlICdhIHQgPSAnYSBTdGRsaWIuUXVldWUudFxuXG5sZXQgY3JlYXRlID0gU3RkbGliLlF1ZXVlLmNyZWF0ZVxubGV0IGNsZWFyID0gU3RkbGliLlF1ZXVlLmNsZWFyXG5sZXQgY29weSA9IFN0ZGxpYi5RdWV1ZS5jb3B5XG5sZXQgaXNfZW1wdHkgPSBTdGRsaWIuUXVldWUuaXNfZW1wdHlcbmxldCBsZW5ndGggPSBTdGRsaWIuUXVldWUubGVuZ3RoXG5sZXQgcGVlayA9IFN0ZGxpYi5RdWV1ZS5wZWVrXG5sZXQgcG9wID0gU3RkbGliLlF1ZXVlLnBvcFxubGV0IHB1c2ggPSBTdGRsaWIuUXVldWUucHVzaFxubGV0IHRyYW5zZmVyID0gU3RkbGliLlF1ZXVlLnRyYW5zZmVyXG5cbmxldCBpdGVyIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgY2FtbF9pdGVyIDogKCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiAnYSB0IC0+IHVuaXQgPVxuICAgIFN0ZGxpYi5PYmoubWFnaWMgKFN0ZGxpYi5RdWV1ZS5pdGVyIDogKCdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdClcbiAgaW5cbiAgY2FtbF9pdGVyIGYgdFxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbWxfZm9sZCA6ICgoJ2IgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIC0+ICdhIHQgLT4gJ2IgPVxuICAgIFN0ZGxpYi5PYmoubWFnaWMgKFN0ZGxpYi5RdWV1ZS5mb2xkIDogKCdiIC0+ICdhIC0+ICdiKSAtPiAnYiAtPiAnYSB0IC0+ICdiKVxuICBpblxuICBjYW1sX2ZvbGQgZiBpbml0IHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlua2VkX3F1ZXVlMFxuXG5sZXQgZW5xdWV1ZSB0IHggPSBMaW5rZWRfcXVldWUwLnB1c2ggeCB0XG5sZXQgZGVxdWV1ZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBvcCB0KVxubGV0IGRlcXVldWVfZXhuID0gTGlua2VkX3F1ZXVlMC5wb3BcbmxldCBkZXF1ZXVlX2FuZF9pZ25vcmVfZXhuICh0eXBlIGVsdCkgKHQgOiBlbHQgdCkgPSBpZ25vcmUgKGRlcXVldWVfZXhuIHQgOiBlbHQpXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBlZWsgdClcbmxldCBwZWVrX2V4biA9IExpbmtlZF9xdWV1ZTAucGVla1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBpdGVyaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBtZW0gPSBDLm1lbVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBzdW0gPSBDLnN1bVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvbGRpID0gQy5mb2xkaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxubGV0IGl0ZXJpID0gQy5pdGVyaVxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9IExpbmtlZF9xdWV1ZTAudHJhbnNmZXIgc3JjIGRzdFxuXG5sZXQgY29uY2F0X21hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHJlcyBiKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgcmVzIGEpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gZW5xdWV1ZSByZXMgKGYgYSkpO1xuICByZXNcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gZW5xdWV1ZSByZXMgKGYgaSBhKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHEgfmYgPVxuICBsZXQgcScgPSBmaWx0ZXIgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyaSBxIH5mIGluXG4gIGNsZWFyIHE7XG4gIHRyYW5zZmVyIH5zcmM6cScgfmRzdDpxXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsaXN0ID0gTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuXG5sZXQgb2ZfbGlzdCBsaXN0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGFycmF5ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnJheSB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGVucXVldWUgdCAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIGxlbmd0aCB0IHdpdGhcbiAgfCAwIC0+IFt8fF1cbiAgfCBsZW4gLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW4gKHBlZWtfZXhuIHQpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIHYgLT5cbiAgICAgIGFyci4oIWkpIDwtIHY7XG4gICAgICBpbmNyIGkpO1xuICAgIGFyclxuOztcblxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKGxpc3Rfb2Zfc2V4cCBhX29mX3NleHAgc2V4cClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHNpbmdsZXRvbiBhID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZW5xdWV1ZSB0IGE7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5JbnQ2NFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50NjQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50NjRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQ2NCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgY29tcGFyZSA9IEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nX29wdCA9IG9mX3N0cmluZ19vcHRcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSA2NFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludDY0X3Bvd1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBTdGRsaWIuSW50NjQub2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2NC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwNjQgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMTYgeCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDQ4XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAzMiB4ID1cbiAgKCogVGhpcyBpcyBzdHJpY3RseSBiZXR0ZXIgdGhhbiBjb2VyY2luZyB0byBhbiBpbnQzMiB0byBwZXJmb3JtIGJ5dGVzd2FwLiBDb2VyY2luZ1xuICAgICBmcm9tIGFuIGludDMyIHdpbGwgYWRkIHVubmVjZXNzYXJ5IHNoaWZ0IG9wZXJhdGlvbnMgdG8gc2lnbiBleHRlbmQgdGhlIG51bWJlclxuICAgICBhcHByb3ByaWF0ZWx5LlxuICAqKVxuICBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAzMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDQ4IHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAxNlxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgaW5jciByID0gciA6PSBhZGQgIXIgb25lXG5sZXQgZGVjciByID0gciA6PSBzdWIgIXIgb25lXG5cbmV4dGVybmFsIG9mX2ludDY0IDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0XG5sZXQgdG9faW50NjQgdCA9IHRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDY0X3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmV4dGVybmFsIHRvX2ludF90cnVuYyA6ICh0W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQzMltAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludF90cnVuY1xuICA6ICAoaW50NjRbQGxvY2FsX29wdF0pXG4gIC0+IChuYXRpdmVpbnRbQGxvY2FsX29wdF0pXG4gID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgb2ZfaW50IDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMiA6IChpbnQzMltAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29mX2ludDMyXCJcblxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252LmludDY0X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IFN0ZGxpYi5JbnQ2NC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IFN0ZGxpYi5JbnQ2NC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5JbnQ2NC5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuSW50NjQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgU3RkbGliLkludDY0LnByZWQgeCA9IFN0ZGxpYi5JbnQ2NC56ZXJvXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDY0W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gU3RkbGliLkludDY0Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50NjQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBpZiBTdGRsaWIuSW50NjQuZXF1YWwgaSBTdGRsaWIuSW50NjQub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoU3RkbGliLkludDY0LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50NjRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVMeFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDY0XCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2FkZFwiXG4gIGV4dGVybmFsICggLSApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9zdWJcIlxuICBleHRlcm5hbCAoICogKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbXVsXCJcbiAgZXh0ZXJuYWwgKCAvICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2RpdlwiXG4gIGV4dGVybmFsICggfi0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgZXh0ZXJuYWwgKCBsYW5kICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2FuZFwiXG4gIGV4dGVybmFsICggbG9yICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29yXCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X3hvclwiXG5cbiAgbGV0IGxub3QgPSBiaXRfbm90XG5cbiAgZXh0ZXJuYWwgKCBsc2wgKVxuICAgIDogICh0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKHRbQGxvY2FsX29wdF0pXG4gICAgPSBcIiVpbnQ2NF9sc2xcIlxuXG4gIGV4dGVybmFsICggYXNyIClcbiAgICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICh0W0Bsb2NhbF9vcHRdKVxuICAgID0gXCIlaW50NjRfYXNyXCJcblxuICBleHRlcm5hbCAoIGxzciApXG4gICAgOiAgKHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAodFtAbG9jYWxfb3B0XSlcbiAgICA9IFwiJWludDY0X2xzclwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2NF0gYW5kIFtJbnQ2NC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEEgNjNiaXQgaW50ZWdlciBpcyBhIDY0Yml0IGludGVnZXIgd2l0aCBpdHMgYml0cyBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICBhbmQgaXRzIGxvd2VzdCBiaXQgc2V0IHRvIDAuXG4gICBUaGlzIGlzIHRoZSBzYW1lIGtpbmQgb2YgZW5jb2RpbmcgYXMgT0NhbWwgaW50IG9uIDY0Yml0IGFyY2hpdGVjdHVyZS5cbiAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmVpbmcgdGhlIGxvd2VzdCBiaXQgKGltbWVkaWF0ZSBiaXQpIHNldCB0byAxLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cblxubW9kdWxlIFQwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG4gICAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50NjQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5tb2R1bGUgVyA6IHNpZ1xuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuICBlbmRcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIHZhbCB3cmFwX2V4biA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIHdyYXBfbW9kdWxvIDogU3RkbGliLkludDY0LnQgLT4gdFxuICB2YWwgdW53cmFwIDogdCAtPiBTdGRsaWIuSW50NjQudFxuXG4gICgqKiBSZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIGludDY0IHRoYXQgaXMgZXF1YWwgdG8gdGhlIGlucHV0IGludDYzIG1vZHVsbyAyXjYzLiAqKVxuICB2YWwgdW53cmFwX3Vuc2lnbmVkIDogdCAtPiBTdGRsaWIuSW50NjQudFxuXG4gIHZhbCBpbnZhcmlhbnQgOiB0IC0+IHVuaXRcbiAgdmFsIGFkZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdWIgOiB0IC0+IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIHN1Y2MgOiB0IC0+IHRcbiAgdmFsIHByZWQgOiB0IC0+IHRcbiAgdmFsIG11bCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cgOiB0IC0+IHQgLT4gdFxuICB2YWwgZGl2IDogdCAtPiB0IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3Bjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBiaXRfbm90IDogdCAtPiB0XG4gIHZhbCBiaXRfeG9yIDogdCAtPiB0IC0+IHRcbiAgdmFsIGJpdF9vciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfYW5kIDogdCAtPiB0IC0+IHRcbiAgdmFsIHNoaWZ0X2xlZnQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG4gIHZhbCB0b19pbnQ2NCA6IHQgLT4gU3RkbGliLkludDY0LnRcbiAgdmFsIG9mX2ludDY0IDogU3RkbGliLkludDY0LnQgLT4gdCBvcHRpb25cbiAgdmFsIG9mX2ludDY0X2V4biA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIG9mX2ludDY0X3RydW5jIDogU3RkbGliLkludDY0LnQgLT4gdFxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGNlaWxfcG93MiA6IHQgLT4gdFxuICB2YWwgZmxvb3JfcG93MiA6IHQgLT4gdFxuICB2YWwgY2VpbF9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGZsb29yX2xvZzIgOiB0IC0+IGludFxuICB2YWwgaXNfcG93MiA6IHQgLT4gYm9vbFxuICB2YWwgY2x6IDogdCAtPiBpbnRcbiAgdmFsIGN0eiA6IHQgLT4gaW50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUMFxuXG4gIHR5cGUgdCA9IGludDY0XG5cbiAgbGV0IHdyYXBfZXhuIHggPVxuICAgICgqIFJhaXNlcyBpZiB0aGUgaW50NjQgdmFsdWUgZG9lcyBub3QgZml0IG9uIGludDYzLiAqKVxuICAgIENvbnYuaW50NjRfZml0X29uX2ludDYzX2V4biB4O1xuICAgIFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTFxuICA7O1xuXG4gIGxldCB3cmFwIHggPVxuICAgIGlmIENvbnYuaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gU29tZSAoU3RkbGliLkludDY0Lm11bCB4IDJMKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgd3JhcF9tb2R1bG8geCA9IFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTFxuICBsZXQgdW53cmFwIHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgeCAxXG4gIGxldCB1bndyYXBfdW5zaWduZWQgeCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMVxuXG4gICgqIFRoaXMgZG9lcyBub3QgdXNlIHdyYXAgb3IgdW53cmFwIHRvIGF2b2lkIGdlbmVyYXRpbmcgZXhjZXB0aW9ucyBpbiB0aGUgY2FzZSBvZlxuICAgICBvdmVyZmxvd3MuIFRoaXMgaXMgdG8gcHJlc2VydmUgdGhlIHNlbWFudGljcyBvZiBpbnQgdHlwZSBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlLiAqKVxuICBsZXQgZjIgZiBhIGIgPVxuICAgIFN0ZGxpYi5JbnQ2NC5tdWwgKGYgKFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBhIDEpIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgYiAxKSkgMkxcbiAgOztcblxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZUxcbiAgbGV0IG0geCA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmQgeCBtYXNrXG4gIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAobSB0ID0gdClcbiAgbGV0IGFkZCB4IHkgPSBTdGRsaWIuSW50NjQuYWRkIHggeVxuICBsZXQgc3ViIHggeSA9IFN0ZGxpYi5JbnQ2NC5zdWIgeCB5XG4gIGxldCBuZWcgeCA9IFN0ZGxpYi5JbnQ2NC5uZWcgeFxuICBsZXQgYWJzIHggPSBTdGRsaWIuSW50NjQuYWJzIHhcbiAgbGV0IG9uZSA9IHdyYXBfZXhuIDFMXG4gIGxldCBzdWNjIGEgPSBhZGQgYSBvbmVcbiAgbGV0IHByZWQgYSA9IHN1YiBhIG9uZVxuICBsZXQgbWluX3ZhbHVlID0gbSBTdGRsaWIuSW50NjQubWluX2ludFxuICBsZXQgbWF4X3ZhbHVlID0gbSBTdGRsaWIuSW50NjQubWF4X2ludFxuICBsZXQgYml0X25vdCB4ID0gbSAoU3RkbGliLkludDY0LmxvZ25vdCB4KVxuICBsZXQgYml0X2FuZCA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmRcbiAgbGV0IGJpdF94b3IgPSBTdGRsaWIuSW50NjQubG9neG9yXG4gIGxldCBiaXRfb3IgPSBTdGRsaWIuSW50NjQubG9nb3JcbiAgbGV0IHNoaWZ0X2xlZnQgeCBpID0gU3RkbGliLkludDY0LnNoaWZ0X2xlZnQgeCBpXG4gIGxldCBzaGlmdF9yaWdodCB4IGkgPSBtIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgeCBpKVxuICBsZXQgc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkgPSBtIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkpXG4gIGxldCBwb3cgPSBmMiBJbnRfbWF0aC5Qcml2YXRlLmludDYzX3Bvd19vbl9pbnQ2NFxuICBsZXQgbXVsIGEgYiA9IFN0ZGxpYi5JbnQ2NC5tdWwgYSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSlcbiAgbGV0IGRpdiBhIGIgPSB3cmFwX21vZHVsbyAoU3RkbGliLkludDY0LmRpdiBhIGIpXG4gIGxldCByZW0gYSBiID0gU3RkbGliLkludDY0LnJlbSBhIGJcbiAgbGV0IHBvcGNvdW50IHggPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudCB4XG4gIGxldCB0b19pbnQ2NCB0ID0gdW53cmFwIHRcbiAgbGV0IG9mX2ludDY0IHQgPSB3cmFwIHRcbiAgbGV0IG9mX2ludDY0X2V4biB0ID0gd3JhcF9leG4gdFxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgdCA9IHdyYXBfbW9kdWxvIHRcbiAgbGV0IHRfb2Zfc2V4cCB4ID0gd3JhcF9leG4gKGludDY0X29mX3NleHAgeClcbiAgbGV0IHNleHBfb2ZfdCB4ID0gc2V4cF9vZl9pbnQ2NCAodW53cmFwIHgpXG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBpc19wb3cyIHggPSBJbnQ2NC5pc19wb3cyICh1bndyYXAgeClcblxuICBsZXQgY2x6IHggPVxuICAgICgqIFdlIHJ1biBJbnQ2NC5jbHogZGlyZWN0bHkgb24gdGhlIHdyYXBwZWQgaW50NjMgdmFsdWUuIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHRoZVxuICAgICAgIGJpdHMgb2YgdGhlIGludDYzX2VtdWwgYXJlIGxlZnQtYWxpZ25lZCBpbiB0aGUgSW50NjQuICopXG4gICAgSW50NjQuY2x6IHhcbiAgOztcblxuICBsZXQgY3R6IHggPSBJbnQ2NC5jdHogKHVud3JhcCB4KVxuICBsZXQgZmxvb3JfcG93MiB4ID0gSW50NjQuZmxvb3JfcG93MiAodW53cmFwIHgpIHw+IHdyYXBfZXhuXG4gIGxldCBjZWlsX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgZmxvb3JfbG9nMiB4ID0gSW50NjQuZmxvb3JfbG9nMiAodW53cmFwIHgpXG4gIGxldCBjZWlsX2xvZzIgeCA9IEludDY0LmNlaWxfbG9nMiAodW53cmFwIHgpXG5lbmRcblxub3BlbiBXXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IFcudCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChXLmdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIFcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBXLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKFcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoVy5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBXLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVy5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlID0gVy5jb21wYXJlXG4gIGxldCBpbnZhcmlhbnQgPSBXLmludmFyaWFudFxuXG4gICgqIFdlIGRvbid0IGV4cGVjdCBbaGFzaF0gdG8gZm9sbG93IHRoZSBiZWhhdmlvciBvZiBpbnQgaW4gNjRiaXQgYXJjaGl0ZWN0dXJlICopXG4gIGxldCBfID0gaGFzaFxuICBsZXQgaGFzaCAoeCA6IHQpID0gU3RkbGliLkhhc2h0YmwuaGFzaCB4XG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGludmFsaWRfc3RyIHggPSBQcmludGYuZmFpbHdpdGhmIFwiSW50NjMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgeCAoKVxuXG4gICgqXG4gICAgIFwic2lnblwiIHJlZmVycyB0byB3aGV0aGVyIHRoZSBudW1iZXIgc3RhcnRzIHdpdGggYSAnLSdcbiAgICAgXCJzaWduZWRuZXNzID0gZmFsc2VcIiBtZWFucyB0aGUgcmVzdCBvZiB0aGUgbnVtYmVyIGlzIHBhcnNlZCBhcyB1bnNpZ25lZCBhbmQgdGhlbiBjYXN0XG4gICAgIHRvIHNpZ25lZCB3aXRoIHdyYXAtYXJvdW5kIG1vZHVsbyAyXmlcbiAgICAgXCJzaWduZWRuZXNzID0gdHJ1ZVwiIG1lYW5zIG5vIHN1Y2ggY3JhemluZXNzIGhhcHBlbnNcblxuICAgICBUaGUgdGVybWlub2xvZ3kgYW5kIHRoZSBsb2dpYyBpcyBkdWUgdG8gdGhlIGNvZGUgaW4gYnl0ZXJ1bi9pbnRzLmMgaW4gb2NhbWwgNC4wM1xuICAgICAoW3BhcnNlX3NpZ25fYW5kX2Jhc2VdIGZ1bmN0aW9uKS5cblxuICAgICBTaWduZWRuZXNzIGVxdWFscyB0cnVlIGZvciBwbGFpbiBkZWNpbWFsIG51bWJlciAoZS5nLiAxMjM1LCAtNjc4OSlcblxuICAgICBTaWduZWRuZXNzIGVxdWFscyBmYWxzZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAtIFsweGZmZmZdLCBbLTB4ZmZmZl0gKGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswYjAxMDFdLCBbLTBiMDEwMV0gKGJpbmFyeSByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMG8xMjM3XSwgWy0wbzEyMzddIChvY3RhbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMHU5ODEyXSwgWy0wdTk4MTJdICh1bnNpZ25lZCBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIC0gYXZhaWxhYmxlIGZyb20gT0NhbWwgNC4wMykgKilcbiAgbGV0IHNpZ25fYW5kX3NpZ25lZG5lc3MgeCA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggeCBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcG9zLCBzaWduID1cbiAgICAgIGlmIDAgPCBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCB4LlswXSB3aXRoXG4gICAgICAgIHwgJy0nIC0+IDEsIGBOZWdcbiAgICAgICAgfCAnKycgLT4gMSwgYFBvc1xuICAgICAgICB8IF8gLT4gMCwgYFBvcylcbiAgICAgIGVsc2UgMCwgYFBvc1xuICAgIGluXG4gICAgaWYgcG9zICsgMiA8IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IGMxID0geC5bcG9zXSBpblxuICAgICAgbGV0IGMyID0geC5bcG9zICsgMV0gaW5cbiAgICAgIG1hdGNoIGMxLCBjMiB3aXRoXG4gICAgICB8ICcwJywgJzAnIC4uICc5JyAtPiBzaWduLCB0cnVlXG4gICAgICB8ICcwJywgXyAtPiBzaWduLCBmYWxzZVxuICAgICAgfCBfIC0+IHNpZ24sIHRydWUpXG4gICAgZWxzZSBzaWduLCB0cnVlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gU3RkbGliLkludDY0LnRvX3N0cmluZyAodW53cmFwIHgpXG5cbiAgbGV0IG9mX3N0cmluZ19yYXcgc3RyID1cbiAgICBsZXQgc2lnbiwgc2lnbmVkbmVzcyA9IHNpZ25fYW5kX3NpZ25lZG5lc3Mgc3RyIGluXG4gICAgaWYgc2lnbmVkbmVzc1xuICAgIHRoZW4gb2ZfaW50NjRfZXhuIChTdGRsaWIuSW50NjQub2Zfc3RyaW5nIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb3Nfc3RyID1cbiAgICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICAgIHwgYE5lZyAtPiBTdHJpbmcuc3ViIHN0ciB+cG9zOjEgfmxlbjooU3RyaW5nLmxlbmd0aCBzdHIgLSAxKVxuICAgICAgICB8IGBQb3MgLT4gc3RyXG4gICAgICBpblxuICAgICAgbGV0IGludDY0ID0gU3RkbGliLkludDY0Lm9mX3N0cmluZyBwb3Nfc3RyIGluXG4gICAgICAoKiB1bnNpZ25lZCA2My1iaXQgaW50IG11c3QgcGFyc2UgYXMgYSBwb3NpdGl2ZSBzaWduZWQgNjQtYml0IGludCAqKVxuICAgICAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGludDY0IDBMIHRoZW4gaW52YWxpZF9zdHIgc3RyO1xuICAgICAgbGV0IGludDYzID0gd3JhcF9tb2R1bG8gaW50NjQgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBgTmVnIC0+IG5lZyBpbnQ2M1xuICAgICAgfCBgUG9zIC0+IGludDYzKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICB0cnkgb2Zfc3RyaW5nX3JhdyBzdHIgd2l0aFxuICAgIHwgXyAtPiBpbnZhbGlkX3N0ciBzdHJcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX29wdCBzdHIgPVxuICAgIG1hdGNoIG9mX3N0cmluZ19yYXcgc3RyIHdpdGhcbiAgICB8IHQgLT4gU29tZSB0XG4gICAgfCBleGNlcHRpb24gXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGJzd2FwMTYgdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDE2ICh1bndyYXAgdCkpXG4gIGxldCBic3dhcDMyIHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAzMiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXA0OCB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwNDggKHVud3JhcCB0KSlcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG51bV9iaXRzID0gNjNcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGJpdF9ub3RcbmxldCBiaXRfeG9yID0gYml0X3hvclxubGV0IGJpdF9vciA9IGJpdF9vclxubGV0IGJpdF9hbmQgPSBiaXRfYW5kXG5sZXQgcG9wY291bnQgPSBwb3Bjb3VudFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBwb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVcbmxldCBtaW51c19vbmUgPSB3cmFwX2V4biBTdGRsaWIuSW50NjQubWludXNfb25lXG5sZXQgb25lID0gd3JhcF9leG4gU3RkbGliLkludDY0Lm9uZVxubGV0IHplcm8gPSB3cmFwX2V4biBTdGRsaWIuSW50NjQuemVyb1xubGV0IGlzX3BvdzIgPSBpc19wb3cyXG5sZXQgZmxvb3JfcG93MiA9IGZsb29yX3BvdzJcbmxldCBjZWlsX3BvdzIgPSBjZWlsX3BvdzJcbmxldCBmbG9vcl9sb2cyID0gZmxvb3JfbG9nMlxubGV0IGNlaWxfbG9nMiA9IGNlaWxfbG9nMlxubGV0IGNseiA9IGNselxubGV0IGN0eiA9IGN0elxubGV0IHRvX2Zsb2F0IHggPSBTdGRsaWIuSW50NjQudG9fZmxvYXQgKHVud3JhcCB4KVxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCB4ID0gd3JhcF9tb2R1bG8gKFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdCB4KVxuXG5sZXQgb2ZfZmxvYXQgdCA9XG4gIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiB0ID49IGZsb2F0X2xvd2VyX2JvdW5kICYmIHQgPD0gZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiB3cmFwX21vZHVsbyAoU3RkbGliLkludDY0Lm9mX2Zsb2F0IHQpXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDYzLm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICgpXG47O1xuXG5sZXQgb2ZfaW50NjQgPSBvZl9pbnQ2NFxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gb2ZfaW50NjRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IHRvX2ludDY0XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxuXG4oKiBXZSBjYW4gcmV1c2UgY29udmVyc2lvbiBmdW5jdGlvbiBmcm9tL3RvIGludDY0IGhlcmUuICopXG5sZXQgb2ZfaW50IHggPSB3cmFwX2V4biAoQ29udi5pbnRfdG9faW50NjQgeClcbmxldCBvZl9pbnRfZXhuIHggPSBvZl9pbnQgeFxubGV0IHRvX2ludCB4ID0gQ29udi5pbnQ2NF90b19pbnQgKHVud3JhcCB4KVxubGV0IHRvX2ludF9leG4geCA9IENvbnYuaW50NjRfdG9faW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9faW50X3RydW5jIHggPSBDb252LmludDY0X3RvX2ludF90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfaW50MzIgeCA9IHdyYXBfZXhuIChDb252LmludDMyX3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50MzJfZXhuIHggPSBvZl9pbnQzMiB4XG5sZXQgdG9faW50MzIgeCA9IENvbnYuaW50NjRfdG9faW50MzIgKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX2V4biB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX3RydW5jIHggPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jICh1bndyYXAgeClcbmxldCBvZl9uYXRpdmVpbnQgeCA9IG9mX2ludDY0IChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF9leG4geCA9IHdyYXBfZXhuIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF90cnVuYyB4ID0gb2ZfaW50NjRfdHJ1bmMgKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgdG9fbmF0aXZlaW50IHggPSBDb252LmludDY0X3RvX25hdGl2ZWludCAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X2V4biB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuICh1bndyYXAgeClcbmxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X3RydW5jICh1bndyYXAgeClcblxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoVC5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIFQuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gVC5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuXG4gICAgbGV0IHRvX3N0cmluZyBpID1cbiAgICAgICgqIHRoZSB1c2Ugb2YgW3Vud3JhcF91bnNpZ25lZF0gaGVyZSBpcyBpbXBvcnRhbnQgZm9yIHRoZSBjYXNlIG9mIFttaW5fdmFsdWVdICopXG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVMeFwiICh1bndyYXBfdW5zaWduZWQgaSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gb2Zfc3RyaW5nIChcIjB4XCIgXiBzKVxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2My5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nIHggPSB0b19zdHJpbmcgeFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2M1wiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjNdIGFuZCBbSW50NjMuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG5tb2R1bGUgUmVwciA9IHN0cnVjdFxuICB0eXBlIGVtdWxhdGVkID0gdFxuXG4gIHR5cGUgKCd1bmRlcmx5aW5nX3R5cGUsICdpbnRlcm1lZGlhdGVfdHlwZSkgdCA9XG4gICAgfCBJbnQgOiAoaW50LCBpbnQpIHRcbiAgICB8IEludDY0IDogKGludDY0LCBlbXVsYXRlZCkgdFxuZW5kXG5cbmxldCByZXByID0gUmVwci5JbnQ2NFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5JbnQzMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50MzIgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50MzJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQzMl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQzMiA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQzMl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gIGxldCBvZl9zdHJpbmdfb3B0ID0gb2Zfc3RyaW5nX29wdFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDMyXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQzMi5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgSW5maXhfY29tcGFyZSA9IHN0cnVjdFxuICBvcGVuIFBvbHlcblxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IHggPj0geVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IHggPD0geVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IHggPiB5XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSB4IDwgeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IHggPD4geVxuZW5kXG5cbm1vZHVsZSBDb21wYXJlID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXhfY29tcGFyZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB4IHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfaW50MzIgdCA9IHRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyIHQgPSB0XG5sZXQgdG9faW50MzJfZXhuID0gdG9faW50MzJcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDMyX3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmxldCBvZl9pbnQgPSBDb252LmludF90b19pbnQzMlxubGV0IG9mX2ludF9leG4gPSBDb252LmludF90b19pbnQzMl9leG5cbmxldCBvZl9pbnRfdHJ1bmMgPSBDb252LmludF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludCA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50MzJfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYuaW50MzJfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYuaW50MzJfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IG9mX25hdGl2ZWludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxuZXh0ZXJuYWwgYnN3YXAzMiA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVic3dhcF9pbnQzMlwiXG5cbmxldCBic3dhcDE2IHggPSBTdGRsaWIuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXAzMiB4KSAxNlxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBTdGRsaWIuSW50MzIubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBTdGRsaWIuSW50MzIubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBTdGRsaWIuSW50MzIucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBTdGRsaWIuSW50MzIuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgU3RkbGliLkludDMyLnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIFN0ZGxpYi5JbnQzMi5wcmVkIHggPSBTdGRsaWIuSW50MzIuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludDMyIGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDMyW0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50MzJfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gU3RkbGliLkludDMyLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50MzIuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IFN0ZGxpYi5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICAoKiBUaGUgW2kgPSAxXSBjaGVjayBpcyBuZWVkZWQgYmVjYXVzZSBjbHooMCkgaXMgdW5kZWZpbmVkICopXG4gICAgaWYgU3RkbGliLkludDMyLmVxdWFsIGkgU3RkbGliLkludDMyLm9uZVxuICAgIHRoZW4gMFxuICAgIGVsc2UgbnVtX2JpdHMgLSBjbHogKFN0ZGxpYi5JbnQzMi5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50MzIgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50MzIgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlbHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJWx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzIuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQzMlwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKENvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDMyXSBhbmQgW0ludDMyLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFJlcHIgPSBJbnQ2M19lbXVsLlJlcHJcblxuKCogSW4gYSB3b3JsZCB3aGVyZSB0aGUgY29tcGlsZXIgd291bGQgdW5kZXJzdGFuZCBbQEBpbW1lZGlhdGU2NF0gYXR0cmlidXRlcyBvbiB0eXBlXG4gICBkZWNsYXJhdGlvbnMsIHRoaXMgbW9kdWxlIGlzIGhvdyBvbmUgd291bGQgcHJvZHVjZSBhIFt0eXBlIHRdIHdpdGggdGhpcyBhdHRyaWJ1dGUuICopXG5tb2R1bGUgSW1tZWRpYXRlNjQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW1tZWRpYXRlIDogSW1tZWRpYXRlKSAoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpIDogc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcblxuICAgIHZhbCByZXByIDogdCByZXByXG4gIGVuZFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICBleHRlcm5hbCB0cmFuc3BhcmVudF9tYWdpYyA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdiW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxuICAgIGxldCByZXByID1cbiAgICAgICgqIFtPYmoubWFnaWNdIGludm9sdmVzIG9wYXF1ZW5lc3MgdW5kZXIgRmxhbWJkYSAyIHdoaWNoIHdpbGwgaW5oaWJpdFxuICAgICAgICAgYXZhaWxhYmlsaXR5IG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlIGZvciBsYXRlciBpbmxpbmluZ1xuICAgICAgICAgKGUuZy4gaW50byBmbG9hdC5tbCkuIEFzIHN1Y2ggd2UgZXhwbGljaXRseSB1c2UgJWlkZW50aXR5IGhlcmUuICopXG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+ICh0cmFuc3BhcmVudF9tYWdpYyBJbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgICB8IFczMiAtPiAodHJhbnNwYXJlbnRfbWFnaWMgTm9uX2ltbWVkaWF0ZSA6IHQgcmVwcilcbiAgICA7O1xuICBlbmRcbiAgW0BAaW5saW5lIGFsd2F5c11cbmVuZFxuXG5pbmNsdWRlIEltbWVkaWF0ZTY0Lk1ha2UgKEludCkgKEludDYzX2VtdWwpXG5cbm1vZHVsZSBCYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgSW50X2ludGYuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludF90cnVuYyA6IHQgLT4gaW50XG4gICAgdmFsIG9mX2ludDMyIDogaW50MzIgLT4gdFxuICAgIHZhbCB0b19pbnQzMiA6IHQgLT4gSW50MzIudCBvcHRpb25cbiAgICB2YWwgdG9faW50MzJfdHJ1bmMgOiB0IC0+IEludDMyLnRcbiAgICB2YWwgb2ZfaW50NjQgOiBJbnQ2NC50IC0+IHQgb3B0aW9uXG4gICAgdmFsIG9mX2ludDY0X3RydW5jIDogSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0IG9wdGlvblxuICAgIHZhbCB0b19uYXRpdmVpbnQgOiB0IC0+IG5hdGl2ZWludCBvcHRpb25cbiAgICB2YWwgb2ZfbmF0aXZlaW50X3RydW5jIDogbmF0aXZlaW50IC0+IHRcbiAgICB2YWwgdG9fbmF0aXZlaW50X3RydW5jIDogdCAtPiBuYXRpdmVpbnRcbiAgICB2YWwgb2ZfZmxvYXRfdW5jaGVja2VkIDogZmxvYXQgLT4gdFxuICAgIHZhbCByZXByIDogKHQsIHQpIEludDYzX2VtdWwuUmVwci50XG4gICAgdmFsIGJzd2FwMTYgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXAzMiA6IHQgLT4gdFxuICAgIHZhbCBic3dhcDQ4IDogdCAtPiB0XG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE5hdGl2ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdG9faW50IHggPSBTb21lIHhcbiAgICBsZXQgdG9faW50X3RydW5jIHggPSB4XG5cbiAgICAoKiBbb2ZfaW50MzJfZXhuXSBpcyBhIHNhZmUgb3BlcmF0aW9uIG9uIHBsYXRmb3JtcyB3aXRoIDY0LWJpdCB3b3JkIHNpemVzLiAqKVxuICAgIGxldCBvZl9pbnQzMiA9IG9mX2ludDMyX2V4blxuICAgIGxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IHRvX25hdGl2ZWludCB4XG4gICAgbGV0IHRvX25hdGl2ZWludCB4ID0gU29tZSAodG9fbmF0aXZlaW50IHgpXG4gICAgbGV0IHJlcHIgPSBJbnQ2M19lbXVsLlJlcHIuSW50XG4gICAgbGV0IGJzd2FwMzIgdCA9IEludDY0LnRvX2ludF90cnVuYyAoSW50NjQuYnN3YXAzMiAoSW50NjQub2ZfaW50IHQpKVxuICAgIGxldCBic3dhcDQ4IHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwNDggKEludDY0Lm9mX2ludCB0KSlcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIFMpID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiAobW9kdWxlIE5hdGl2ZSA6IFMpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgSW50NjNfZW11bCA6IFMpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSAodmFsIEJhY2tlbmQuaW1wbCA6IEJhY2tlbmQuUylcblxubW9kdWxlIE92ZXJmbG93X2V4biA9IHN0cnVjdFxuICBsZXQgKCArICkgdCB1ID1cbiAgICBsZXQgc3VtID0gdCArIHUgaW5cbiAgICBpZiBiaXRfb3IgKGJpdF94b3IgdCB1KSAoYml0X3hvciB0IChiaXRfbm90IHN1bSkpIDwgemVyb1xuICAgIHRoZW4gc3VtXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCArICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInN1bVwiLCBzZXhwX29mX3Qgc3VtIF0pXG4gIDs7XG5cbiAgbGV0ICggLSApIHQgdSA9XG4gICAgbGV0IGRpZmYgPSB0IC0gdSBpblxuICAgIGxldCBwb3NfZGlmZiA9IHQgPiB1IGluXG4gICAgaWYgdCA8PiB1ICYmIEJvb2wuKCA8PiApIHBvc19kaWZmIChpc19wb3NpdGl2ZSBkaWZmKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLSApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJkaWZmXCIsIHNleHBfb2ZfdCBkaWZmIF0pXG4gICAgZWxzZSBkaWZmXG4gIDs7XG5cbiAgbGV0IG5lZ2F0aXZlX29uZSA9IG9mX2ludCAoLTEpXG4gIGxldCBkaXZfd291bGRfb3ZlcmZsb3cgdCB1ID0gdCA9IG1pbl92YWx1ZSAmJiB1ID0gbmVnYXRpdmVfb25lXG5cbiAgbGV0ICggKiApIHQgdSA9XG4gICAgbGV0IHByb2R1Y3QgPSB0ICogdSBpblxuICAgIGlmIHUgPD4gemVybyAmJiAoZGl2X3dvdWxkX292ZXJmbG93IHByb2R1Y3QgdSB8fCBwcm9kdWN0IC8gdSA8PiB0KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKiApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCBwcm9kdWN0IF0pXG4gICAgZWxzZSBwcm9kdWN0XG4gIDs7XG5cbiAgbGV0ICggLyApIHQgdSA9XG4gICAgaWYgZGl2X3dvdWxkX292ZXJmbG93IHQgdVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCAodCAvIHUpIF0pXG4gICAgZWxzZSB0IC8gdVxuICA7O1xuXG4gIGxldCBhYnMgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcImFicyBvdmVyZmxvd1wiIGVsc2UgYWJzIHRcbiAgbGV0IG5lZyB0ID0gaWYgdCA9IG1pbl92YWx1ZSB0aGVuIGZhaWx3aXRoIFwibmVnIG92ZXJmbG93XCIgZWxzZSBuZWcgdFxuZW5kXG5cbmxldCAoKSA9IGFzc2VydCAoSW50LiggPSApIG51bV9iaXRzIDYzKVxuXG5sZXQgcmFuZG9tX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGJvdW5kID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50IHN0YXRlICh0b19pbnRfZXhuIGJvdW5kKSlcbjs7XG5cbmxldCByYW5kb21fb2ZfaW50NjQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludDY0X2V4biAoUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlICh0b19pbnQ2NCBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHJhbmRvbV9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX29mX2ludDY0XG47O1xuXG5sZXQgcmFuZG9tX2luY2xfb2ZfaW50ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQgKFJhbmRvbS5TdGF0ZS5pbnRfaW5jbCBzdGF0ZSAodG9faW50X2V4biBsbykgKHRvX2ludF9leG4gaGkpKVxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHN0YXRlICh0b19pbnQ2NCBsbykgKHRvX2ludDY0IGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21faW5jbF9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX2luY2xfb2ZfaW50NjRcbjs7XG5cbmxldCBmbG9vcl9sb2cyIHQgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gdCB8PiB0b19pbnRfZXhuIHw+IEludC5mbG9vcl9sb2cyXG4gIHwgVzMyIC0+XG4gICAgaWYgdCA8PSB6ZXJvXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKTtcbiAgICBsZXQgZmxvb3JfbG9nMiA9IHJlZiAoSW50LiggLSApIG51bV9iaXRzIDIpIGluXG4gICAgd2hpbGUgZXF1YWwgemVybyAoYml0X2FuZCB0IChzaGlmdF9sZWZ0IG9uZSAhZmxvb3JfbG9nMikpIGRvXG4gICAgICBmbG9vcl9sb2cyIDo9IEludC4oIC0gKSAhZmxvb3JfbG9nMiAxXG4gICAgZG9uZTtcbiAgICAhZmxvb3JfbG9nMlxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcHIgPSBSZXByXG5cbiAgbGV0IHJlcHIgPSByZXByXG5cbiAgbW9kdWxlIEVtdWwgPSBJbnQ2M19lbXVsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2h0YmwuS2V5ICopXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIFR3byBbdF1zIHRoYXQgW2NvbXBhcmVdIGVxdWFsIG11c3QgaGF2ZSBlcXVhbCBoYXNoZXMgZm9yIHRoZSBoYXNodGFibGVcbiAgICAgICAgdG8gYmVoYXZlIHByb3Blcmx5LiAqKVxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLk1lcmdlX2ludG9fYWN0aW9uICopXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJlbW92ZVxuICAgIHwgU2V0X3RvIG9mICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gc2lnXG4gICgqKiB7MiBBY2Nlc3NvcnN9ICopXG5cbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG5cbiAgdmFsIHNleHBfb2Zfa2V5IDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBTZXhwLnRcbiAgdmFsIGNsZWFyIDogKF8sIF8pIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBBdHRlbXB0aW5nIHRvIG1vZGlmeSAoW3NldF0sIFtyZW1vdmVdLCBldGMuKSB0aGUgaGFzaHRhYmxlIGR1cmluZyBpdGVyYXRpb24gKFtmb2xkXSxcbiAgICAgIFtpdGVyXSwgW2l0ZXJfa2V5c10sIFtpdGVyaV0pIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAqKVxuICB2YWwgZm9sZFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXykgdCAtPiBmOigoJ2Ega2V5IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZXMgb3ZlciBib3RoIGtleXMgYW5kIHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuaXRlcmkgaCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgcHJpbnRfZW5kbGluZSAoUHJpbnRmLnNwcmludGYgXCIlZC0lZFwiIGtleSBkYXRhKSk7O1xuICAgICAgMS00XG4gICAgICA1LTZcbiAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIHZ9ICopXG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBjb3VudCA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBib29sXG4gIHZhbCByZW1vdmUgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogQ2hvb3NlIGFuIGFyYml0cmFyeSBrZXkvdmFsdWUgcGFpciBvZiBhIGhhc2ggdGFibGUuIFJldHVybnMgW05vbmVdIGlmIFt0XSBpcyBlbXB0eS5cblxuICAgICAgVGhlIGNob2ljZSBpcyBkZXRlcm1pbmlzdGljLiBDYWxsaW5nIFtjaG9vc2VdIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHRhYmxlXG4gICAgICByZXR1cm5zIHRoZSBzYW1lIGtleS92YWx1ZSBwYWlyLCBzbyBsb25nIGFzIHRoZSB0YWJsZSBpcyBub3QgbXV0YXRlZCBpbiBiZXR3ZWVuLlxuICAgICAgQmV5b25kIGRldGVybWluaXNtLCBubyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IGhvdyB0aGUgY2hvaWNlIGlzIG1hZGUuIEV4cGVjdFxuICAgICAgYmlhcyB0b3dhcmQgY2VydGFpbiBoYXNoIHZhbHVlcy5cblxuICAgICAgVGhpcyBoYXNoIGJpYXMgY2FuIGxlYWQgdG8gZGVnZW5lcmF0ZSBwZXJmb3JtYW5jZSBpbiBzb21lIGNhc2VzLCBzdWNoIGFzIGNsZWFyaW5nXG4gICAgICBhIGhhc2ggdGFibGUgdXNpbmcgcmVwZWF0ZWQgW2Nob29zZV0gYW5kIFtyZW1vdmVdLiBBdCBlYWNoIGl0ZXJhdGlvbiwgZmluZGluZyB0aGVcbiAgICAgIG5leHQgZWxlbWVudCBtYXkgaGF2ZSB0byBzY2FuIGZhcnRoZXIgZnJvbSBpdHMgaW5pdGlhbCBoYXNoIHZhbHVlLiAqKVxuICB2YWwgY2hvb3NlIDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIG9wdGlvblxuXG4gICgqKiBMaWtlIFtjaG9vc2VdLiBSYWlzZXMgaWYgW3RdIGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5ICogJ2JcblxuICAoKiogQ2hvb3NlcyBhIHJhbmRvbSBrZXkvdmFsdWUgcGFpciBvZiBhIGhhc2ggdGFibGUuIFJldHVybnMgW05vbmVdIGlmIFt0XSBpcyBlbXB0eS5cblxuICAgICAgVGhlIGNob2ljZSBpcyBkaXN0cmlidXRlZCB1bmlmb3JtbHkgYWNyb3NzIGhhc2ggdmFsdWVzLCByYXRoZXIgdGhhbiBhY3Jvc3Mga2V5c1xuICAgICAgdGhlbXNlbHZlcy4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGNsb3NlciB0aGUga2V5cyBhcmUgdG8gZXZlbmx5IHNwYWNlZCBvdXQgaW4gdGhlXG4gICAgICB0YWJsZSwgdGhlIGNsb3NlciB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgdG8gYSB1bmlmb3JtIGNob2ljZSBvZiBrZXlzLlxuXG4gICAgICBUaGlzIGZ1bmN0aW9uIG1heSBiZSBwcmVmZXJhYmxlIHRvIFtjaG9vc2VdIHdoZW4gbm9uZGV0ZXJtaW5pc3RpYyBjaG9pY2UgaXNcbiAgICAgIGFjY2VwdGFibGUsIGFuZCBiaWFzIHRvd2FyZCBjZXJ0YWluIGhhc2ggdmFsdWVzIGlzIHVuZGVzaXJhYmxlLiAqKVxuICB2YWwgY2hvb3NlX3JhbmRvbWx5XG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAoKiogZGVmYXVsdDogW1JhbmRvbS5TdGF0ZS5kZWZhdWx0XSAqKVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2Ega2V5ICogJ2IpIG9wdGlvblxuXG4gICgqKiBMaWtlIFtjaG9vc2VfcmFuZG9tbHldLiBSYWlzZXMgaWYgW3RdIGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlX3JhbmRvbWx5X2V4blxuICAgIDogID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgKCoqIGRlZmF1bHQ6IFtSYW5kb20uU3RhdGUuZGVmYXVsdF0gKilcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5ICogJ2JcblxuICAoKiogU2V0cyB0aGUgZ2l2ZW4gW2tleV0gdG8gW2RhdGFdLiAqKVxuICB2YWwgc2V0IDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbYWRkXSBhbmQgW2FkZF9leG5dIGxlYXZlIHRoZSB0YWJsZSB1bmNoYW5nZWQgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBwcmVzZW50LiAqKVxuICB2YWwgYWRkIDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gWyBgT2sgfCBgRHVwbGljYXRlIF1cblxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gY2hhbmdlcyBbdF0ncyB2YWx1ZSBmb3IgW2tleV0gdG8gYmUgW2YgKGZpbmQgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2IpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW3VwZGF0ZV9hbmRfcmV0dXJuIHQga2V5IH5mXSBpcyBbdXBkYXRlXSwgYnV0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBbZiBvXS4gKilcbiAgdmFsIHVwZGF0ZV9hbmRfcmV0dXJuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooKCdiIG9wdGlvbiAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogW21hcCB0IGZdIHJldHVybnMgYSBuZXcgdGFibGUgd2l0aCB2YWx1ZXMgcmVwbGFjZWQgYnkgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBbZl1cbiAgICAgIHRvIHRoZSBjdXJyZW50IHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIGxldCBoJyA9IEhhc2h0YmwubWFwIGggfmY6KChmdW4geCAtPiB4ICogMilbQGxvY2FsXSkgaW5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaCc7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDEyKTsgKDEsIDgpXVxuICAgICAgdn0gKilcbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdiIC0+ICdjKVtAbG9jYWxdKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogUmV0dXJucyBhIG5ldyB0YWJsZSBieSBmaWx0ZXJpbmcgdGhlIGdpdmVuIHRhYmxlJ3MgdmFsdWVzIGJ5IFtmXTogdGhlIGtleXMgZm9yIHdoaWNoXG4gICAgICBbZl0gYXBwbGllZCB0byB0aGUgY3VycmVudCB2YWx1ZSByZXR1cm5zIFtTb21lXSBhcmUga2VwdCwgYW5kIHRob3NlIGZvciB3aGljaCBpdFxuICAgICAgcmV0dXJucyBbTm9uZV0gYXJlIGRpc2NhcmRlZC5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuZmlsdGVyX21hcCBoIH5mOigoZnVuIHggLT4gaWYgeCA+IDUgdGhlbiBTb21lIHggZWxzZSBOb25lKVtAbG9jYWxdKVxuICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoNSwgNildXG4gICAgICB2fSAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdiIC0+ICdjIG9wdGlvbilbQGxvY2FsXSkgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IpIHQgLT4gZjooKCdhIGtleSAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogUmV0dXJucyBuZXcgdGFibGVzIHdpdGggYm91bmQgdmFsdWVzIHBhcnRpdGlvbmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZFxuICAgICAgdmFsdWVzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogUmV0dXJucyBhIHBhaXIgb2YgdGFibGVzIFsodDEsIHQyKV0sIHdoZXJlIFt0MV0gY29udGFpbnMgYWxsIHRoZSBlbGVtZW50cyBvZiB0aGVcbiAgICAgIGluaXRpYWwgdGFibGUgd2hpY2ggc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXSwgYW5kIFt0Ml0gY29udGFpbnMgdGhlIHJlc3QuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fdGZdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBbZmluZF9vcl9hZGQgdCBrIH5kZWZhdWx0XSByZXR1cm5zIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBrZXkgW2tdIGlmIGl0IGlzIGluIHRoZVxuICAgICAgdGFibGUgW3RdLCBhbmQgb3RoZXJ3aXNlIGFzc2lnbnMgW2tdIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBbZGVmYXVsdCAoKV0uICopXG4gIHZhbCBmaW5kX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KCh1bml0IC0+ICdiKVtAbG9jYWxdKSAtPiAnYlxuXG4gICgqKiBMaWtlIFtmaW5kX29yX2FkZF0gYnV0IFtkZWZhdWx0XSB0YWtlcyB0aGUga2V5IGFzIGFuIGFyZ3VtZW50LiAqKVxuICB2YWwgZmluZGlfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDooKCdhIGtleSAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogW2ZpbmQgdCBrXSByZXR1cm5zIFtTb21lXSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgW2tdIGluIFt0XSwgb3IgW05vbmVdIGlmIG5vIHN1Y2hcbiAgICAgIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBbZmluZF9leG4gdCBrXSByZXR1cm5zIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgW2tdIGluIFt0XSwgb3IgcmFpc2VzIFtTdGRsaWIuTm90X2ZvdW5kXVxuICAgICAgb3IgW05vdF9mb3VuZF9zXSBpZiBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYlxuXG4gICgqKiBbZmluZF9hbmRfY2FsbCB0IGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRdXG5cbiAgICAgIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIFttYXRjaCBmaW5kIHQgayB3aXRoIFNvbWUgdiAtPiBpZl9mb3VuZCB2IHwgTm9uZSAtPiBpZl9ub3RfZm91bmQga11cblxuICAgICAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSB0aGUgb3B0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gICgqKiBKdXN0IGxpa2UgW2ZpbmRfYW5kX2NhbGxdLCBidXQgdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQgd2hpY2ggaXMgcGFzc2VkIHRvIFtpZl9mb3VuZF1cbiAgICAgIGFuZCBbaWZfbm90X2ZvdW5kXSwgc28gdGhhdCB0aGUgY2xpZW50IGNvZGUgY2FuIGF2b2lkIGFsbG9jYXRpbmcgY2xvc3VyZXMgb3IgdXNpbmdcbiAgICAgIHJlZnMgdG8gcGFzcyB0aGlzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGluIGNvZGVcbiAgICAgIHdoaWNoIHRyaWVzIHRvIG1pbmltaXplIGhlYXAgYWxsb2NhdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdkIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOigoJ2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGlmX2ZvdW5kOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDFcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGlmX2ZvdW5kOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnZSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICAoKiogW2ZpbmRfYW5kX3JlbW92ZSB0IGtdIHJldHVybnMgU29tZSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgayBpbiB0IGFuZCByZW1vdmVzIGl0LFxuICAgICAgb3IgTm9uZSBpcyBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9hbmRfcmVtb3ZlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIE1lcmdlcyB0d28gaGFzaHRhYmxlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiBbbWVyZ2UgZiBoMSBoMl0gaGFzIGFzIGtleXMgdGhlIHNldCBvZiBhbGwgW2tdIGluIHRoZSB1bmlvbiBvZiB0aGVcbiAgICAgIHNldHMgb2Yga2V5cyBvZiBbaDFdIGFuZCBbaDJdIGZvciB3aGljaCBbZChrKV0gaXMgbm90IE5vbmUsIHdoZXJlOlxuXG4gICAgICBkKGspID1cbiAgICAgIC0gW2YgfmtleTprIChgTGVmdCBkMSldXG4gICAgICAgIGlmIFtrXSBpbiBbaDFdIG1hcHMgdG8gZDEsIGFuZCBbaDJdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYFJpZ2h0IGQyKV1cbiAgICAgICAgaWYgW2tdIGluIFtoMl0gbWFwcyB0byBkMiwgYW5kIFtoMV0gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciBba107XG5cbiAgICAgIC0gW2YgfmtleTprIChgQm90aCAoZDEsIGQyKSldXG4gICAgICAgIG90aGVyd2lzZSwgd2hlcmUgW2tdIGluIFtoMV0gbWFwcyB0byBbZDFdIGFuZCBba10gaW4gW2gyXSBtYXBzIHRvIFtkMl0uXG5cbiAgICAgIEVhY2gga2V5IFtrXSBpcyBtYXBwZWQgdG8gYSBzaW5nbGUgcGllY2Ugb2YgZGF0YSBbeF0sIHdoZXJlIFtkKGspID0gU29tZSB4XS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ2EpIHRcbiAgICAtPiAoJ2ssICdiKSB0XG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIGtleSAtPiBbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdiIHwgYEJvdGggb2YgJ2EgKiAnYiBdIC0+ICdjIG9wdGlvbilcbiAgICAgICAgICBbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICdjKSB0XG5cblxuICAoKiogRXZlcnkgW2tleV0gaW4gW3NyY10gd2lsbCBiZSByZW1vdmVkIG9yIHNldCBpbiBbZHN0XSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZVxuICAgICAgb2YgW2ZdLiAqKVxuICB2YWwgbWVyZ2VfaW50b1xuICAgIDogIHNyYzooJ2ssICdhKSB0XG4gICAgLT4gZHN0OignaywgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiAnYSAtPiAnYiBvcHRpb24gLT4gJ2IgTWVyZ2VfaW50b19hY3Rpb24udClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGtleXMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGtleXMgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgZGF0YSBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgZGF0YSA6IChfLCAnYikgdCAtPiAnYiBsaXN0XG5cbiAgKCoqIFtmaWx0ZXJfaW5wbGFjZSB0IH5mXSByZW1vdmVzIGFsbCB0aGUgZWxlbWVudHMgZnJvbSBbdF0gdGhhdCBkb24ndCBzYXRpc2Z5IFtmXS4gKilcbiAgdmFsIGZpbHRlcl9rZXlzX2lucGxhY2UgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGtleSAtPiBib29sKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbbWFwX2lucGxhY2UgdCB+Zl0gYXBwbGllcyBbZl0gdG8gYWxsIGVsZW1lbnRzIGluIFt0XSwgdHJhbnNmb3JtaW5nIHRoZW0gaW5cbiAgICAgIHBsYWNlLiAqKVxuICB2YWwgbWFwX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+ICdiKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIG1hcGlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZmlsdGVyX21hcF9pbnBsYWNlXSBjb21iaW5lcyB0aGUgZWZmZWN0cyBvZiBbbWFwX2lucGxhY2VdIGFuZCBbZmlsdGVyX2lucGxhY2VdLiAqKVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX21hcGlfaW5wbGFjZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtlcXVhbCBmIHQxIHQyXSBhbmQgW3NpbWlsYXIgZiB0MSB0Ml0gYm90aCByZXR1cm4gdHJ1ZSBpZmYgW3QxXSBhbmQgW3QyXSBoYXZlIHRoZVxuICAgICAgc2FtZSBrZXlzIGFuZCBmb3IgYWxsIGtleXMgW2tdLCBbZiAoZmluZF9leG4gdDEgaykgKGZpbmRfZXhuIHQyIGspXS4gIFtlcXVhbF0gYW5kXG4gICAgICBbc2ltaWxhcl0gb25seSBkaWZmZXIgaW4gdGhlaXIgdHlwZXMuICopXG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuXG4gIHZhbCBzaW1pbGFyIDogKCdiMSAtPiAnYjIgLT4gYm9vbCkgLT4gKCdhLCAnYjEpIHQgLT4gKCdhLCAnYjIpIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCAoa2V5LCBkYXRhKSBwYWlycyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgdG9fYWxpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgbGlzdFxuXG5cbiAgKCoqIFtyZW1vdmVfaWZfemVyb10ncyBkZWZhdWx0IGlzIFtmYWxzZV0uICopXG4gIHZhbCBpbmNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gIHZhbCBkZWNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE11bHRpID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gICgqKiBbYWRkX211bHRpIHQgfmtleSB+ZGF0YV0gaWYgW2tleV0gaXMgcHJlc2VudCBpbiB0aGUgdGFibGUgdGhlbiBjb25zXG4gICAgICBbZGF0YV0gb24gdGhlIGxpc3QsIG90aGVyd2lzZSBhZGQgW2tleV0gd2l0aCBhIHNpbmdsZSBlbGVtZW50IGxpc3QuICopXG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW3JlbW92ZV9tdWx0aSB0IGtleV0gdXBkYXRlcyB0aGUgdGFibGUsIHJlbW92aW5nIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGJvdW5kIHRvXG4gICAgICBba2V5XS4gSWYgdGhlIGxpc3QgaGFzIG9ubHkgb25lIGVsZW1lbnQgKG9yIGlzIGVtcHR5KSB0aGVuIHRoZSBiaW5kaW5nIGlzXG4gICAgICByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCBfIGxpc3QpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogW2ZpbmRfbXVsdGkgdCBrZXldIHJldHVybnMgdGhlIGVtcHR5IGxpc3QgaWYgW2tleV0gaXMgbm90IHByZXNlbnQgaW4gdGhlIHRhYmxlLFxuICAgICAgcmV0dXJucyBbdF0ncyB2YWx1ZXMgZm9yIFtrZXldIG90aGVyd2lzZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2Ega2V5IC0+ICdiIGxpc3RcbmVuZFxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ2tleSBLZXkudFxuICAtPiAnelxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ3pcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGUgOiAoJ2Ega2V5LCAnYiwgdW5pdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnYSBrZXksICdiLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAoJ2Ega2V5LCAnYiBsaXN0LCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYiBsaXN0KSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OigoJ3IgLT4gJ2Ega2V5KVtAbG9jYWxdKVxuICAgICAgICAtPiBnZXRfZGF0YTooKCdyIC0+ICdiKVtAbG9jYWxdKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MSwuLi4seG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCBPcl9lcnJvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBncm91cFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAgICAgLT4gY29tYmluZTooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+ICgnYSwgJ2IpIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gICgqKiB7MiBDcmVhdG9yc30gKilcblxuICAoKiogVGhlIG1vZHVsZSB5b3UgcGFzcyB0byBbY3JlYXRlXSBtdXN0IGhhdmUgYSB0eXBlIHRoYXQgaXMgaGFzaGFibGUsIHNleHBhYmxlLCBhbmRcbiAgICAgIGNvbXBhcmFibGUuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KTs7XG4gICAgICAgIC0gOiAoaW50LCAnX2EpIEhhc2h0YmwudCA9IDxhYnN0cj47O1xuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3QgKG1vZHVsZSBJbnQpIFsoMywgXCJzb21ldGhpbmdcIik7ICgyLCBcIndoYXRldmVyXCIpXVxuICAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXkgb2YgaW50IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBXaGVyZWFzIFtvZl9hbGlzdF0gd2lsbCByZXBvcnQgW0R1cGxpY2F0ZV9rZXldIG5vIG1hdHRlciBob3cgbWFueSBkdXBzIHRoZXJlIGFyZSBpblxuICAgICAgeW91ciBsaXN0LCBbb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXSB3aWxsIHJlcG9ydCBlYWNoIGFuZCBldmVyeSBkdXBsaWNhdGUgZW50cnkuXG5cbiAgICAgIEZvciBleGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXkgMVxuXG4gICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXlzIFsxOyAyXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQ3JlYXRlcyBhIHt7IU11bHRpfSBcIm11bHRpXCJ9IGhhc2h0YWJsZSwgaS5lLiwgYSBoYXNodGFibGUgd2hlcmUgZWFjaCBrZXkgcG9pbnRzIHRvIGFcbiAgICAgIGxpc3QgcG90ZW50aWFsbHkgY29udGFpbmluZyBtdWx0aXBsZSB2YWx1ZXMuIFNvIGluc3RlYWQgb2Ygc2hvcnQtY2lyY3VpdGluZyB3aXRoIGFcbiAgICAgIFtgRHVwbGljYXRlX2tleV0gdmFyaWFudCBvbiBkdXBsaWNhdGVzLCBhcyBpbiBbb2ZfYWxpc3RdLCBbb2ZfYWxpc3RfbXVsdGldIGZvbGRzXG4gICAgICB0aG9zZSB2YWx1ZXMgaW50byBhIGxpc3QgZm9yIHRoZSBnaXZlbiBrZXk6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfbXVsdGkgKG1vZHVsZSBJbnQpIFsoMSwgXCJhXCIpOyAoMSwgXCJiXCIpOyAoMiwgXCJjXCIpOyAoMiwgXCJkXCIpXTs7XG4gICAgICB2YWwgaCA6IChpbnQsIHN0cmluZyBsaXN0KSBIYXNodGJsLnQgPSA8YWJzdHI+XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgIC0gOiBzdHJpbmcgbGlzdCA9IFtcImJcIjsgXCJhXCJdXG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCkgdFxuXG4gICgqKiBBcHBsaWVzIHRoZSBbZ2V0X2tleV0gYW5kIFtnZXRfZGF0YV0gZnVuY3Rpb25zIHRvIHRoZSBbJ3IgbGlzdF0gdG8gY3JlYXRlIHRoZVxuICAgICAgaW5pdGlhbCBrZXlzIGFuZCB2YWx1ZXMsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBuZXcgaGFzaHRhYmxlLlxuXG4gICAgICB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxOy4uLjt4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXVxuICAgICAgXX1cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgbGV0IGggPVxuICAgICAgICAgIEhhc2h0YmwuY3JlYXRlX21hcHBlZCAobW9kdWxlIEludClcbiAgICAgICAgICAgIH5nZXRfa2V5OigoZnVuIHggLT4geClbQGxvY2FsXSlcbiAgICAgICAgICAgIH5nZXRfZGF0YTooKGZ1biB4IC0+IHggKyAxKVtAbG9jYWxdKVxuICAgICAgICAgICBbMTsgMjsgM107O1xuICAgICAgICB2YWwgaCA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIGludCkgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuXG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBtYXRjaCBoIHdpdGhcbiAgICAgICAgICB8IGBPayB4IC0+IHhcbiAgICAgICAgICB8IGBEdXBsaWNhdGVfa2V5cyBfIC0+IGZhaWx3aXRoIFwiXCJcbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgICAtIDogaW50ID0gMlxuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZV9tYXBwZWRcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdyKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdFxuXG4gICgqKiBMaWtlIFtjcmVhdGVfbWFwcGVkXSwgYXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyXG4gICAgICBsaXN0XSB0byBjcmVhdGUgdGhlIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZSAtLVxuICAgICAgYW5kIHRoZW4sIGxpa2UgW2FkZF9tdWx0aV0sIGZvbGRzIHRvZ2V0aGVyIHZhbHVlcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUga2V5cy4gSGVyZSxcbiAgICAgIHRob3VnaCwgdGhlIGZ1bmN0aW9uIHVzZWQgZm9yIHRoZSBmb2xkaW5nIGlzIGdpdmVuIGJ5IFtjb21iaW5lXSAoaW5zdGVhZCBvZiBqdXN0XG4gICAgICBiZWluZyBhIFtjb25zXSkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLmdyb3VwIChtb2R1bGUgSW50KVxuICAgICAgICAgICB+Z2V0X2tleTooKGZ1biB4IC0+IHggLyAyKVtAbG9jYWxdKVxuICAgICAgICAgICB+Z2V0X2RhdGE6KChmdW4geCAtPiB4KVtAbG9jYWxdKVxuICAgICAgICAgICB+Y29tYmluZTooKGZ1biB4IHkgLT4geCAqIHkpW0Bsb2NhbF0pXG4gICAgICAgICAgICBbIDE7IDI7IDM7IDRdXG4gICAgICAgICB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWygyLCA0KTsgKDEsIDYpOyAoMCwgMSldXG4gICAgICAgdn0gKilcbiAgdmFsIGdyb3VwXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gY29tYmluZTooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBzaWdcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuXG4gIHR5cGUgKCEnYSwgISdiKSB0XG5cbiAgKCoqIFdlIHByb3ZpZGUgYSBbc2V4cF9vZl90XSBidXQgbm90IGEgW3Rfb2Zfc2V4cF0gZm9yIHRoaXMgdHlwZSBiZWNhdXNlIG9uZSBuZWVkcyB0byBiZVxuICAgICAgZXhwbGljaXQgYWJvdXQgdGhlIGhhc2ggYW5kIGNvbXBhcmlzb24gZnVuY3Rpb25zIHVzZWQgd2hlbiBjcmVhdGluZyBhIGhhc2h0YWJsZS5cbiAgICAgIE5vdGUgdGhhdCBbSGFzaHRibC5Qb2x5LnRdIGRvZXMgaGF2ZSBbW0BAZGVyaXZpbmcgc2V4cF1dLCBhbmQgdXNlcyBPQ2FtbCdzIGJ1aWx0LWluXG4gICAgICBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGFuZCBhbmQgcG9seW1vcnBoaWMgaGFzaGluZy4gKilcbiAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYiAtPiBTZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cC50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ICgqKiBAaW5saW5lICopXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5ID0gJ2FcbiAgKCoqIEBpbmxpbmUgKilcblxuXG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAoKiogQGlubGluZSAqKVxuXG4gIHZhbCBoYXNoYWJsZV9zIDogKCdrZXksIF8pIHQgLT4gJ2tleSBLZXkudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyXG4gICAgOiAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuXG4gIHZhbCBoYXNoYWJsZSA6ICdhIEhhc2hhYmxlLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgaW5jbHVkZSBNdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdrLCAndikgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNodGJsID0gc2lnXG4gICgqKiBBIGhhc2ggdGFibGUgaXMgYSBtdXRhYmxlIGRhdGEgc3RydWN0dXJlIGltcGxlbWVudGluZyBhIG1hcCBiZXR3ZWVuIGtleXMgYW5kIHZhbHVlcy5cbiAgICAgIEl0IHN1cHBvcnRzIGNvbnN0YW50LXRpbWUgbG9va3VwIGFuZCBpbi1wbGFjZSBtb2RpZmljYXRpb24uXG5cbiAgICAgIHsxIFVzYWdlfVxuXG4gICAgICBBcyBhIHNpbXBsZSBleGFtcGxlLCB3ZSdsbCBjcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggc3RyaW5nIGtleXMgdXNpbmcgdGhlXG4gICAgICB7eyFjcmVhdGV9W2NyZWF0ZV19IGNvbnN0cnVjdG9yLCB3aGljaCBleHBlY3RzIGEgbW9kdWxlIGRlZmluaW5nIHRoZSBrZXkncyB0eXBlOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgaCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgU3RyaW5nKTs7XG4gICAgICAgIHZhbCBoIDogKHN0cmluZywgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+XG4gICAgICBdfVxuXG4gICAgICBXZSBjYW4gc2V0IHRoZSB2YWx1ZXMgb2YgaW5kaXZpZHVhbCBrZXlzIHdpdGgge3shc2V0fVtzZXRdfS4gSWYgdGhlIGtleSBhbHJlYWR5IGhhc1xuICAgICAgYSB2YWx1ZSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlbi5cblxuICAgICAge3ZcbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImZvb1wiIH5kYXRhOjU7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo2OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiYmFyXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fVxuXG4gICAgICBXZSBjYW4gYWNjZXNzIHZhbHVlcyBieSBrZXksIG9yIGR1bXAgYWxsIG9mIHRoZSBoYXNoIHRhYmxlJ3MgZGF0YTpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuZmluZCBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCBvcHRpb24gPSBTb21lIDZcblxuICAgICAgSGFzaHRibC5maW5kX2V4biBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCA9IDZcblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoOztcbiAgICAgIC0gOiAoc3RyaW5nICogaW50KSBsaXN0ID0gWyhcImZvb1wiLCA2KTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuICAgICAge3shY2hhbmdlfVtjaGFuZ2VdfSBsZXRzIHVzIGNoYW5nZSBhIGtleSdzIHZhbHVlIGJ5IGFwcGx5aW5nIHRoZSBnaXZlbiBmdW5jdGlvbjpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuY2hhbmdlIGggXCJmb29cIiAoZnVuIHggLT5cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBTb21lICh4ICogMilcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgKTs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgMTIpOyAoXCJiYXJcIiwgNildXG4gICAgICB2fVxuXG5cbiAgICAgIFdlIGNhbiB1c2Uge3shbWVyZ2V9W21lcmdlXX0gdG8gbWVyZ2UgdHdvIGhhc2h0YWJsZXMgd2l0aCBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyXG4gICAgICBob3cgd2UgY2hvb3NlIHZhbHVlcyB3aGVuIGEga2V5IGlzIHByZXNlbnQgaW4gdGhlIGZpcnN0IChcImxlZnRcIikgaGFzaHRhYmxlLCB0aGVcbiAgICAgIHNlY29uZCAoXCJyaWdodFwiKSwgb3IgYm90aC4gSGVyZSwgd2UnbGwgY29ucyB0aGUgdmFsdWVzIHdoZW4gYm90aCBoYXNodGFibGVzIGhhdmUgYVxuICAgICAga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGgxID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNSk7ICgyLCAzMjMyKV0gaW5cbiAgICAgIGxldCBoMiA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDMpXSBpblxuICAgICAgSGFzaHRibC5tZXJnZSBoMSBoMiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSAoYExlZnQgeClcbiAgICAgICAgfCBgUmlnaHQgeCAtPiBTb21lIChgUmlnaHQgeClcbiAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gaWYgeD15IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGBCb3RoICh4LHkpKVxuICAgICAgKSB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogWz4gYEJvdGggb2YgaW50ICogaW50IHwgYExlZnQgb2YgaW50IHwgYFJpZ2h0IG9mIGludCBdKSBsaXN0ID1cbiAgICAgIFsoMiwgYExlZnQgMzIzMik7ICgxLCBgQm90aCAoNSwgMykpXVxuICAgICAgdn1cblxuICAgICAgezEgSW50ZXJmYWNlfSAqKVxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N1Ym1vZHVsZXMgKCoqIEBpbmxpbmUgKilcblxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMgPSBBY2Nlc3NvcnNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMgPSBDcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBNdWx0aSA9IE11bHRpXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3VibW9kdWxlcyA9IFNfd2l0aG91dF9zdWJtb2R1bGVzXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuXG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gTWVyZ2VfaW50b19hY3Rpb25cblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9ICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zXG5cbiAgbW9kdWxlIENyZWF0b3JzIChLZXkgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICAgIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbiAgZW5kXG5cbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X3RhYmxlID0gaW50IEhhc2h0YmwuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IChTdHJpbmcudCwgaW50KSBIYXNodGJsLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgSGFzaHRibC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZFxuICAgICAgc3ludGF4IGRvZXNuJ3QgKGJlY2F1c2UgW3Rfb2Zfc2V4cF0gZG9lc24ndCBrbm93IHdoYXQgY29tcGFyaXNvbi9oYXNoIGZ1bmN0aW9uIHRvXG4gICAgICB1c2UpLiAqKVxuICBtb2R1bGUgTSAoSyA6IFQuVCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKi8qKilcblxuICAoKl8gU2VlIHRoZSBKYW5lIFN0cmVldCBTdHlsZSBHdWlkZSBmb3IgYW4gZXhwbGFuYXRpb24gb2YgW1ByaXZhdGVdIHN1Ym1vZHVsZXM6XG5cbiAgICBodHRwczovL29wZW5zb3VyY2UuamFuZXN0cmVldC5jb20vc3RhbmRhcmRzLyNwcml2YXRlLXN1Ym1vZHVsZXMgKilcbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gICAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICAgIHZhbCBoYXNoYWJsZSA6ICgna2V5LCBfKSB0IC0+ICdrZXkgSGFzaGFibGUudFxuICBlbmRcbmVuZFxuIiwiKCogQSBmZXcgc21hbGwgdGhpbmdzIGNvcGllZCBmcm9tIG90aGVyIHBhcnRzIG9mIEJhc2UgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiB1cywgc28gd2VcbiAgIGNhbid0IHVzZSB0aGVtLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuKCogSXRzIGltcG9ydGFudCB0aGF0IEVtcHR5IGhhdmUgbm8gYXJncy4gSXQncyB0ZW1wdGluZyB0byBtYWtlIHRoaXMgdHlwZSBhIHJlY29yZFxuICAgKGUuZy4gdG8gaG9sZCB0aGUgY29tcGFyZSBmdW5jdGlvbiksIGJ1dCBhIGxvdCBvZiBtZW1vcnkgaXMgc2F2ZWQgYnkgRW1wdHkgYmVpbmcgYW5cbiAgIGltbWVkaWF0ZSwgc2luY2UgYWxsIHVudXNlZCBidWNrZXRzIGluIHRoZSBoYXNodGJsIGRvbid0IHVzZSBhbnkgbWVtb3J5IChiZXNpZGVzIHRoZVxuICAgYXJyYXkgY2VsbCkgKilcbnR5cGUgKCdrLCAndikgdCA9XG4gIHwgRW1wdHlcbiAgfCBOb2RlIG9mXG4gICAgICB7IG11dGFibGUgbGVmdCA6ICgnaywgJ3YpIHRcbiAgICAgIDsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICA7IG11dGFibGUgaGVpZ2h0IDogaW50XG4gICAgICA7IG11dGFibGUgcmlnaHQgOiAoJ2ssICd2KSB0XG4gICAgICB9XG4gIHwgTGVhZiBvZlxuICAgICAgeyBrZXkgOiAna1xuICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZcbiAgICAgIH1cblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0OyByaWdodCA9IF8gfSAtPiBoZWlnaHRcbjs7XG5cbmxldCBpbnZhcmlhbnQgY29tcGFyZSA9XG4gIGxldCBsZWdhbF9sZWZ0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSBsZWZ0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT5cbiAgICAgIGFzc2VydCAoY29tcGFyZSBsZWZ0X2tleSBrZXkgPCAwKVxuICBpblxuICBsZXQgbGVnYWxfcmlnaHRfa2V5IGtleSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiB7IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gcmlnaHRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgcmlnaHRfa2V5IGtleSA+IDApXG4gIGluXG4gIGxldCByZWMgaW52ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IHwgTGVhZiBfIC0+ICgpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gazsgdmFsdWUgPSBfOyBoZWlnaHQgPSBoOyByaWdodCB9IC0+XG4gICAgICBsZXQgaGwsIGhyID0gaGVpZ2h0IGxlZnQsIGhlaWdodCByaWdodCBpblxuICAgICAgaW52IGxlZnQ7XG4gICAgICBpbnYgcmlnaHQ7XG4gICAgICBsZWdhbF9sZWZ0X2tleSBrIGxlZnQ7XG4gICAgICBsZWdhbF9yaWdodF9rZXkgayByaWdodDtcbiAgICAgIGFzc2VydCAoaCA9IEludC5tYXggaGwgaHIgKyAxKTtcbiAgICAgIGFzc2VydCAoYWJzIChobCAtIGhyKSA8PSAyKVxuICBpblxuICBpbnZcbjs7XG5cbmxldCBpbnZhcmlhbnQgdCB+Y29tcGFyZSA9IGludmFyaWFudCBjb21wYXJlIHRcblxuKCogSW4gdGhlIGZvbGxvd2luZyBjb21tZW50cyxcbiAgICd0IGlzIGJhbGFuY2VkJyBtZWFucyB0aGF0ICdpbnZhcmlhbnQgdCcgZG9lcyBub3RcbiAgIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFRoaXMgaW1wbGllcyBvZiBjb3Vyc2UgdGhhdCBlYWNoIG5vZGUncyBoZWlnaHQgZmllbGQgaXNcbiAgIGNvcnJlY3QuXG4gICAndCBpcyBiYWxhbmNlYWJsZScgbWVhbnMgdGhhdCBoZWlnaHQgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIG9mIHRcbiAgIGRpZmZlciBieSBhdCBtb3N0IDMuICopXG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGhhdmUgY29ycmVjdCBoZWlnaHRzXG4gICBAcG9zdDogb3V0cHV0IGhhcyB0aGUgY29ycmVjdCBoZWlnaHQgKilcbmxldCB1cGRhdGVfaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gb2xkX2hlaWdodDsgcmlnaHQgfSBhcyB4KSAtPlxuICAgIGxldCBuZXdfaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IGxlZnQpIChoZWlnaHQgcmlnaHQpICsgMSBpblxuICAgIGlmIG5ld19oZWlnaHQgPD4gb2xkX2hlaWdodCB0aGVuIHguaGVpZ2h0IDwtIG5ld19oZWlnaHRcbiAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGFyZSBiYWxhbmNlZFxuICAgQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHBvc3Q6IG91dHB1dCBpcyBiYWxhbmNlZCAoaW4gcGFydGljdWxhciwgaGVpZ2h0IGlzIGNvcnJlY3QpICopXG5sZXQgYmFsYW5jZSB0cmVlID1cbiAgbWF0Y2ggdHJlZSB3aXRoXG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gdHJlZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHJvb3Rfbm9kZSkgLT5cbiAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdFxuICAgIGFuZCBociA9IGhlaWdodCByaWdodCBpblxuICAgICgqICsgMiBpcyBjcml0aWNhbGx5IGltcG9ydGFudCwgbG93ZXJpbmcgaXQgdG8gMSB3aWxsIGJyZWFrIHRoZSBMZWFmXG4gICAgICAgYXNzdW1wdGlvbnMgaW4gdGhlIGNvZGUgYmVsb3csIGFuZCB3aWxsIGZvcmNlIHVzIHRvIHByb21vdGUgbGVhZiBub2RlcyBpblxuICAgICAgIHRoZSBiYWxhbmNlIHJvdXRpbmUuIEl0J3MgYWxzbyBmYXN0ZXIsIHNpbmNlIGl0IHdpbGwgYmFsYW5jZSBsZXNzIG9mdGVuLlxuICAgICAgIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgZGVsaWNhdGUuICBUaGUgdXBkYXRlX2hlaWdodCBjYWxscyBtdXN0XG4gICAgICAgb2NjdXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHNpbmNlIHVwZGF0ZV9oZWlnaHQgYXNzdW1lcyBpdHMgY2hpbGRyZW4gaGF2ZVxuICAgICAgIHRoZSBjb3JyZWN0IGhlaWdodHMuICAqKVxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICgqIEl0IGNhbm5vdCBiZSBhIGxlYWYsIGJlY2F1c2UgZXZlbiBpZiByaWdodCBpcyBlbXB0eSwgYSBsZWFmXG4gICAgICAgICBpcyBvbmx5IGhlaWdodCAxICopXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IGxlZnRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IGxlZnRfbm9kZV9yaWdodFxuICAgICAgICAgICB9IGFzIGxlZnRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxlZnRfbm9kZV9sZWZ0ID49IGhlaWdodCBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnQ7XG4gICAgICAgICAgbGVmdClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogaWYgcmlnaHQgaXMgYSBsZWFmLCB0aGVuIGxlZnQgbXVzdCBiZSBlbXB0eS4gVGhhdCBtZWFuc1xuICAgICAgICAgICAgIGhlaWdodCBpcyAyLiBFdmVuIGlmIGhyIGlzIGVtcHR5IHdlIHN0aWxsIGNhbid0IGdldCBoZXJlLiAqKVxuICAgICAgICAgIG1hdGNoIGxlZnRfbm9kZV9yaWdodCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IGxyX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBscl9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBscl9ub2RlKSAtPlxuICAgICAgICAgICAgbGVmdF9ub2RlLnJpZ2h0IDwtIGxyX2xlZnQ7XG4gICAgICAgICAgICByb290X25vZGUubGVmdCA8LSBscl9yaWdodDtcbiAgICAgICAgICAgIGxyX25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICAgIGxyX25vZGUubGVmdCA8LSBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0X25vZGVfcmlnaHQ7XG4gICAgICAgICAgICBsZWZ0X25vZGVfcmlnaHQpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHJpZ2h0IGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IE5vZGVcbiAgICAgICAgICAoeyBsZWZ0ID0gcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IHJpZ2h0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyByaWdodF9ub2RlKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcmlnaHRfbm9kZV9yaWdodCA+PSBoZWlnaHQgcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHQ7XG4gICAgICAgICAgcmlnaHQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgY2Fubm90IGJlIGEgbGVhZiAqKVxuICAgICAgICAgIG1hdGNoIHJpZ2h0X25vZGVfbGVmdCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IHJsX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBybF9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBybF9ub2RlKSAtPlxuICAgICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHJsX3JpZ2h0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLnJpZ2h0IDwtIHJsX2xlZnQ7XG4gICAgICAgICAgICBybF9ub2RlLmxlZnQgPC0gdHJlZTtcbiAgICAgICAgICAgIHJsX25vZGUucmlnaHQgPC0gcmlnaHQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgICByaWdodF9ub2RlX2xlZnQpKVxuICAgIGVsc2UgKFxuICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgdHJlZSlcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChyaWdodCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcbmxldCBzZXRfbGVmdCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIGxlZnQgdHJlZSB0aGVuICgpIGVsc2Ugci5sZWZ0IDwtIHRyZWU7XG4gICAgdXBkYXRlX2hlaWdodCBub2RlXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChsZWZ0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X3JpZ2h0IG5vZGUgdHJlZSA9XG4gIGxldCB0cmVlID0gYmFsYW5jZSB0cmVlIGluXG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IE5vZGUgKHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByKSAtPlxuICAgIGlmIHBoeXNfZXF1YWwgcmlnaHQgdHJlZSB0aGVuICgpIGVsc2Ugci5yaWdodCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0IGlzIGJhbGFuY2VkLlxuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlZCwgd2l0aCBuZXcgbm9kZSBpbnNlcnRlZFxuICAgQHBvc3Q6ICFhZGRlZCA9IHRydWUgaWZmIHRoZSBzaGFwZSBvZiB0aGUgaW5wdXQgdHJlZSBjaGFuZ2VkLiAgKilcbmxldCBhZGQgPVxuICBsZXQgcmVjIGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IExlYWYgKHsga2V5ID0gayc7IHZhbHVlID0gXyB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaycgayBpblxuICAgICAgKCogVGhpcyBjb21wYXJlIGlzIHJldmVyc2VkIG9uIHB1cnBvc2UsIHdlIGFyZSBwcmV0ZW5kaW5nXG4gICAgICAgICB0aGF0IHRoZSBsZWFmIHdhcyBqdXN0IGluc2VydGVkIGluc3RlYWQgb2YgdGhlIG90aGVyIHdheVxuICAgICAgICAgcm91bmQsIHRoYXQgd2F5IHdlIG9ubHkgYWxsb2NhdGUgb25lIG5vZGUuICopXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2O1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICAgIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gTm9kZSB7IGxlZnQgPSB0OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gRW1wdHkgfVxuICAgICAgICBlbHNlIE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gMjsgcmlnaHQgPSB0IH0pXG4gICAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiBzZXRfbGVmdCB0IChhZGQgbGVmdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KVxuICAgICAgZWxzZSBzZXRfcmlnaHQgdCAoYWRkIHJpZ2h0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYpO1xuICAgICAgdFxuICBpblxuICBmdW4gdCB+cmVwbGFjZSB+Y29tcGFyZSB+YWRkZWQgfmtleSB+ZGF0YSAtPlxuICAgIGxldCB0ID0gYWRkIHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGtleSBkYXRhIGluXG4gICAgaWYgIWFkZGVkIHRoZW4gYmFsYW5jZSB0IGVsc2UgdFxuOztcblxubGV0IHJlYyBmaXJzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IGw7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gZmlyc3QgbFxuOztcblxubGV0IHJlYyBsYXN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gRW1wdHkgfSAtPiBTb21lIChrLCB2KVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IHIgfSAtPiBsYXN0IHJcbjs7XG5cblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWMgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aWZfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX25vdF9mb3VuZFxuICA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBMZWFmIHsga2V5ID0gayc7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2UgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrIGFyZzEgYXJnMlxuICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2VcbiAgICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgKGlmIGMgPCAwIHRoZW4gbGVmdCBlbHNlIHJpZ2h0KVxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICBrXG4gICAgICAgIGFyZzFcbiAgICAgICAgYXJnMlxuICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIGRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZyAoKSA9IGlmX2ZvdW5kIGRhdGEgYXJnIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcgKCkgPSBpZl9ub3RfZm91bmQga2V5IGFyZyBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIGRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMiA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gPVxuICBsZXQgaWZfZm91bmQgXyA9IHRydWUgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gZmFsc2UgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayAtPiBmaW5kX2FuZF9jYWxsIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IHJlbW92ZSA9XG4gIGxldCByZWMgbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmIF8gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBtaW5fZWx0IGxlZnRcbiAgaW5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgIHwgTGVhZiBfIC0+IEVtcHR5ICgqIFRoaXMgbXVzdCBiZSB0aGUgcm9vdCAqKVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+IHJpZ2h0XG4gICAgfCBOb2RlIHsgbGVmdCA9IExlYWYgXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT5cbiAgICAgIExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgbm9kZSAtPlxuICAgICAgc2V0X2xlZnQgbm9kZSBFbXB0eTtcbiAgICAgIHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgKHJlbW92ZV9taW5fZWx0IGxlZnQpO1xuICAgICAgdHJlZVxuICBpblxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgdHJlZSA9IG1pbl9lbHQgdDIgaW5cbiAgICAgIChtYXRjaCB0cmVlIHdpdGhcbiAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgICAgICBsZXQgdDIgPSBiYWxhbmNlIChyZW1vdmVfbWluX2VsdCB0MikgaW5cbiAgICAgICAgIE5vZGVcbiAgICAgICAgICAgeyBsZWZ0ID0gdDFcbiAgICAgICAgICAgOyBrZXkgPSBrXG4gICAgICAgICAgIDsgdmFsdWUgPSB2XG4gICAgICAgICAgIDsgaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IHQxKSAoaGVpZ2h0IHQyKSArIDFcbiAgICAgICAgICAgOyByaWdodCA9IHQyXG4gICAgICAgICAgIH1cbiAgICAgICB8IE5vZGUgXyBhcyBub2RlIC0+XG4gICAgICAgICBzZXRfcmlnaHQgbm9kZSAocmVtb3ZlX21pbl9lbHQgdDIpO1xuICAgICAgICAgc2V0X2xlZnQgbm9kZSB0MTtcbiAgICAgICAgIG5vZGUpXG4gIGluXG4gIGxldCByZWMgcmVtb3ZlIHQgcmVtb3ZlZCBjb21wYXJlIGsgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICBFbXB0eVxuICAgIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZWQgOj0gdHJ1ZTtcbiAgICAgICAgRW1wdHkpXG4gICAgICBlbHNlIChcbiAgICAgICAgcmVtb3ZlZCA6PSBmYWxzZTtcbiAgICAgICAgdClcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIG1lcmdlIGxlZnQgcmlnaHQpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc2V0X2xlZnQgdCAocmVtb3ZlIGxlZnQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHNldF9yaWdodCB0IChyZW1vdmUgcmlnaHQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICBpblxuICBmdW4gdCB+cmVtb3ZlZCB+Y29tcGFyZSBrIC0+IGJhbGFuY2UgKHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrKVxuOztcblxubGV0IHJlYyBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBpbml0XG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhIGluaXRcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBFbXB0eVxuICAgICAgfSAtPiBmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gRW1wdHlcbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfVxuICAgICAgfSAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9IH1cbiAgICAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH07IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9XG4gICAgLT4gZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KSkgfmZcbiAgfCBOb2RlIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBmb2xkIHJpZ2h0IH5pbml0OihmIH5rZXkgfmRhdGEgKGZvbGQgbGVmdCB+aW5pdCB+ZikpIH5mXG47O1xuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgaXRlciBsZWZ0IH5mO1xuICAgIGYgfmtleSB+ZGF0YTtcbiAgICBpdGVyIHJpZ2h0IH5mXG47O1xuXG5sZXQgcmVjIG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmICh7IGtleTsgdmFsdWUgfSBhcyB0KSAtPiB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5OyB2YWx1ZTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyB0KSAtPlxuICAgIG1hcGlfaW5wbGFjZSB+ZiBsZWZ0O1xuICAgIHQudmFsdWUgPC0gZiB+a2V5IH5kYXRhOnZhbHVlO1xuICAgIG1hcGlfaW5wbGFjZSB+ZiByaWdodFxuOztcblxubGV0IGNob29zZV9leG4gPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltBdmx0cmVlLmNob29zZV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSlcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZTsgXyB9IHwgTm9kZSB7IGtleTsgdmFsdWU7IF8gfSAtPiBrZXksIHZhbHVlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2h0YmxfaW50ZlxuXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXkuU1xuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxubGV0IGhhc2hfcGFyYW0gPSBIYXNoYWJsZS5oYXNoX3BhcmFtXG5sZXQgaGFzaCA9IEhhc2hhYmxlLmhhc2hcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG50eXBlICgnaywgJ3YpIHQgPVxuICB7IG11dGFibGUgdGFibGUgOiAoJ2ssICd2KSBBdmx0cmVlLnQgYXJyYXlcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IGdyb3d0aF9hbGxvd2VkIDogYm9vbFxuICA7IGhhc2hhYmxlIDogJ2sgSGFzaGFibGUudFxuICA7IG11dGFibGUgbXV0YXRpb25fYWxsb3dlZCA6IGJvb2wgKCogU2V0IGR1cmluZyBhbGwgaXRlcmF0aW9uIG9wZXJhdGlvbnMgKilcbiAgfVxuXG50eXBlICdhIGtleSA9ICdhXG5cbmxldCBzZXhwX29mX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3RcbmxldCBjb21wYXJlX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlXG5cbmxldCBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0ID1cbiAgaWYgbm90IHQubXV0YXRpb25fYWxsb3dlZCB0aGVuIGZhaWx3aXRoIFwiSGFzaHRibDogbXV0YXRpb24gbm90IGFsbG93ZWQgZHVyaW5nIGl0ZXJhdGlvblwiXG47O1xuXG5sZXQgd2l0aG91dF9tdXRhdGluZyB0IGYgPVxuICBpZiB0Lm11dGF0aW9uX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICB4XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHJhaXNlIGV4bilcbiAgZWxzZSBmICgpXG47O1xuXG4oKiogSW50ZXJuYWxseSB1c2UgYSBtYXhpbXVtIHNpemUgdGhhdCBpcyBhIHBvd2VyIG9mIDIuIFJldmVyc2VzIHRoZSBhYm92ZSB0byBmaW5kIHRoZVxuICAgIGZsb29yIHBvd2VyIG9mIDIgYmVsb3cgdGhlIHN5c3RlbSBtYXggYXJyYXkgbGVuZ3RoICopXG5sZXQgbWF4X3RhYmxlX2xlbmd0aCA9IEludC5mbG9vcl9wb3cyIEFycmF5Lm1heF9sZW5ndGhcblxuKCogVGhlIGRlZmF1bHQgc2l6ZSBpcyBjaG9zZW4gdG8gYmUgMCAoYXMgb3Bwb3NlZCB0byAxMjggYXMgaXQgd2FzIGJlZm9yZSkgYmVjYXVzZTpcbiAgIC0gMTI4IGNhbiBjcmVhdGUgc3Vic3RhbnRpYWwgbWVtb3J5IG92ZXJoZWFkICh4MTApIHdoZW4gY3JlYXRpbmcgbWFueSB0YWJsZXMsIG1vc3RcbiAgICAgb2Ygd2hpY2ggYXJlIG5vdCBiaWcgKHNheSwgaWYgeW91IGhhdmUgYSBoYXNodGJsIG9mIGhhc2h0YmwpLiBBbmQgbWVtb3J5IG92ZXJoZWFkIGlzXG4gICAgIG5vdCB0aGF0IGVhc3kgdG8gcHJvZmlsZS5cbiAgIC0gaWYgYSBoYXNodGJsIGlzIGdvaW5nIHRvIGdyb3csIGl0J3Mgbm90IGNsZWFyIHdoeSAxMjggaXMgbWFya2VkbHkgYmV0dGVyIHRoYW4gb3RoZXJcbiAgICAgc2l6ZXMgKGlmIHlvdSBnb2luZyB0byBzdGljayAxMDAwIGVsZW1lbnRzLCB5b3UncmUgZ29pbmcgdG8gZ3JvdyB0aGUgaGFzaHRhYmxlIG9uY2VcbiAgICAgb3IgdHdpY2UgYW55d2F5KVxuICAgLSBpbiBvdGhlciBsYW5ndWFnZXMgKGxpa2UgcnVzdCwgcHl0aG9uLCBhbmQgYXBwYXJlbnRseSBnbyksIHRoZSBkZWZhdWx0IGlzIGFsc28gYVxuICAgICBzbWFsbCBzaXplLiAqKVxubGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMCkgfmhhc2hhYmxlICgpID1cbiAgbGV0IHNpemUgPSBJbnQubWluIChJbnQubWF4IDEgc2l6ZSkgbWF4X3RhYmxlX2xlbmd0aCBpblxuICBsZXQgc2l6ZSA9IEludC5jZWlsX3BvdzIgc2l6ZSBpblxuICB7IHRhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBBdmx0cmVlLmVtcHR5XG4gIDsgbGVuZ3RoID0gMFxuICA7IGdyb3d0aF9hbGxvd2VkXG4gIDsgaGFzaGFibGVcbiAgOyBtdXRhdGlvbl9hbGxvd2VkID0gdHJ1ZVxuICB9XG47O1xuXG4oKiogU3VwcGxlbWVudGFsIGhhc2guIFRoaXMgbWF5IG5vdCBiZSBuZWNlc3NhcnksIGl0IGlzIGludGVuZGVkIGFzIGEgZGVmZW5zZSBhZ2FpbnN0IHBvb3JcbiAgICBoYXNoIGZ1bmN0aW9ucywgZm9yIHdoaWNoIHRoZSBwb3dlciBvZiAyIHNpemVkIHRhYmxlIHdpbGwgYmUgZXNwZWNpYWxseSBzZW5zaXRpdmUuXG4gICAgV2l0aCBzb21lIHRlc3Rpbmcgd2UgbWF5IGNob29zZSB0byBhZGQgaXQsIGJ1dCB0aGlzIHRhYmxlIGlzIGRlc2lnbmVkIHRvIGJlIHJvYnVzdCB0b1xuICAgIGNvbGxpc2lvbnMsIGFuZCBpbiBtb3N0IG9mIG15IHRlc3RpbmcgdGhpcyBkZWdyYWRlcyBwZXJmb3JtYW5jZS4gKilcbmxldCBfc3VwcGxlbWVudGFsX2hhc2ggaCA9XG4gIGxldCBoID0gaCBseG9yICgoaCBsc3IgMjApIGx4b3IgKGggbHNyIDEyKSkgaW5cbiAgaCBseG9yIChoIGxzciA3KSBseG9yIChoIGxzciA0KVxuOztcblxubGV0IHNsb3QgdCBrZXkgPVxuICBsZXQgaGFzaCA9IHQuaGFzaGFibGUuSGFzaGFibGUuaGFzaCBrZXkgaW5cbiAgKCogdGhpcyBpcyBhbHdheXMgbm9uLW5lZ2F0aXZlIGJlY2F1c2Ugd2UgZG8gW2xhbmRdIHdpdGggbm9uLW5lZ2F0aXZlIG51bWJlciAqKVxuICBoYXNoIGxhbmQgKEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSlcbjs7XG5cbmxldCBhZGRfd29ya2VyIHQgfnJlcGxhY2UgfmtleSB+ZGF0YSA9XG4gIGxldCBpID0gc2xvdCB0IGtleSBpblxuICBsZXQgcm9vdCA9IHQudGFibGUuKGkpIGluXG4gIGxldCBhZGRlZCA9ICAocmVmIGZhbHNlKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgICgqIFRoZSBhdmwgdHJlZSBtaWdodCByZXBsYWNlIHRoZSB2YWx1ZSBbcmVwbGFjZT10cnVlXSBvciBkbyBub3RoaW5nIFtyZXBsYWNlPWZhbHNlXVxuICAgICAgIHRvIHRoZSBlbnRyeSwgaW4gdGhhdCBjYXNlIHRoZSB0YWJsZSBkaWQgbm90IGdldCBiaWdnZXIsIHNvIHdlIHNob3VsZCBub3RcbiAgICAgICBpbmNyZW1lbnQgbGVuZ3RoLCB3ZSBwYXNzIGluIHRoZSBib29sIHJlZiB0LmFkZGVkIHNvIHRoYXQgaXQgY2FuIHRlbGwgdXMgd2hldGhlclxuICAgICAgIGl0IGFkZGVkIG9yIHJlcGxhY2VkLiBXZSBkbyBpdCB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLiBTaW5jZSB0aGUgYm9vbFxuICAgICAgIGlzIGFuIGltbWVkaWF0ZSBpdCBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuICAgIEF2bHRyZWUuYWRkIH5yZXBsYWNlIHJvb3QgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIH5hZGRlZCB+a2V5IH5kYXRhXG4gIGluXG4gIGlmICFhZGRlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgKCogVGhpcyBsaXR0bGUgb3B0aW1pemF0aW9uIHNhdmVzIGEgY2FtbF9tb2RpZnkgd2hlbiB0aGUgdHJlZVxuICAgICBoYXNuJ3QgYmVlbiByZWJhbGFuY2VkLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV3X3Jvb3Qgcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdDtcbiAgIWFkZGVkXG47O1xuXG5sZXQgbWF5YmVfcmVzaXplX3RhYmxlIHQgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgbGV0IHNob3VsZF9ncm93ID0gdC5sZW5ndGggPiBsZW4gaW5cbiAgaWYgc2hvdWxkX2dyb3cgJiYgdC5ncm93dGhfYWxsb3dlZFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FycmF5X2xlbmd0aCA9IEludC5taW4gKGxlbiAqIDIpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgICBpZiBuZXdfYXJyYXlfbGVuZ3RoID4gbGVuXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbmV3X3RhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46bmV3X2FycmF5X2xlbmd0aCBBdmx0cmVlLmVtcHR5IGluXG4gICAgICBsZXQgb2xkX3RhYmxlID0gdC50YWJsZSBpblxuICAgICAgdC50YWJsZSA8LSBuZXdfdGFibGU7XG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IGYgfmtleSB+ZGF0YSA9IGlnbm9yZSAoYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YSA6IGJvb2wpIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9sZF90YWJsZSAtIDEgZG9cbiAgICAgICAgQXZsdHJlZS5pdGVyIG9sZF90YWJsZS4oaSkgfmZcbiAgICAgIGRvbmUpKVxuOztcblxubGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBpZ25vcmUgKGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGEgOiBib29sKTtcbiAgbWF5YmVfcmVzaXplX3RhYmxlIHRcbjs7XG5cbmxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgbGV0IGFkZGVkID0gYWRkX3dvcmtlciB+cmVwbGFjZTpmYWxzZSB0IH5rZXkgfmRhdGEgaW5cbiAgaWYgYWRkZWRcbiAgdGhlbiAoXG4gICAgbWF5YmVfcmVzaXplX3RhYmxlIHQ7XG4gICAgYE9rKVxuICBlbHNlIGBEdXBsaWNhdGVcbjs7XG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICB8IGBPayAtPiAoKVxuICB8IGBEdXBsaWNhdGUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleSB0IGluXG4gICAgbGV0IGVycm9yID0gRXJyb3IuY3JlYXRlIFwiSGFzaHRibC5hZGRfZXhuIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIga2V5IHNleHBfb2Zfa2V5IGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIHQudGFibGUuKGkpIDwtIEF2bHRyZWUuZW1wdHlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gMFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDIgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMlxuICAgICAgdHJlZVxuICAgICAgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gICAgICBrZXlcbiAgICAgIH5hXG4gICAgICB+YlxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQga2V5IC0+IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBmYWxzZVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gXyB9IC0+IGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwXG4gIHwgdHJlZSAtPiBBdmx0cmVlLm1lbSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXlcbjs7XG5cbmxldCByZW1vdmUgdCBrZXkgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWRfb3JfcmVtb3ZlZCA9ICAocmVmIGZhbHNlKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgIEF2bHRyZWUucmVtb3ZlIHJvb3QgfnJlbW92ZWQ6YWRkZWRfb3JfcmVtb3ZlZCB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG4gIGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCByb290IG5ld19yb290KSB0aGVuIHQudGFibGUuKGkpIDwtIG5ld19yb290O1xuICBpZiAhYWRkZWRfb3JfcmVtb3ZlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGFjYyA6PSBmIH5rZXkgfmRhdGEgIWFjY1xuICAgICAgICB8IGJ1Y2tldCAtPiBhY2MgOj0gQXZsdHJlZS5mb2xkIGJ1Y2tldCB+aW5pdDohYWNjIH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgIWFjY1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICByYWlzZSBleG4pXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICAgICAgICB8IGJ1Y2tldCAtPiBBdmx0cmVlLml0ZXIgYnVja2V0IH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT4gdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG1cbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgaXRlcl9rZXlzIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5cbmxldCByZWMgY2hvb3NlX25vbmVtcHR5IHRhYmxlIGkgPVxuICBsZXQgYXZsdHJlZSA9IEFycmF5LnVuc2FmZV9nZXQgdGFibGUgaSBpblxuICBpZiBBdmx0cmVlLmlzX2VtcHR5IGF2bHRyZWVcbiAgdGhlbiBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgKChpICsgMSkgbGFuZCAoQXJyYXkubGVuZ3RoIHRhYmxlIC0gMSkpXG4gIGVsc2UgQXZsdHJlZS5jaG9vc2VfZXhuIGF2bHRyZWVcbjs7XG5cbmxldCBjaG9vc2VfZXhuIHQgPVxuICBpZiB0Lmxlbmd0aCA9IDAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSGFzaHRibC5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pO1xuICBjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwXG47O1xuXG5sZXQgY2hvb3NlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9ub25lbXB0eSB0LnRhYmxlIDApXG5cbmxldCBjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkgfnJhbmRvbV9zdGF0ZSB0ID1cbiAgbGV0IHN0YXJ0X2lkeCA9IFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChBcnJheS5sZW5ndGggdC50YWJsZSkgaW5cbiAgY2hvb3NlX25vbmVtcHR5IHQudGFibGUgc3RhcnRfaWR4XG47O1xuXG5sZXQgY2hvb3NlX3JhbmRvbWx5ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9yYW5kb21seV9ub25lbXB0eSB+cmFuZG9tX3N0YXRlIHQpXG47O1xuXG5sZXQgY2hvb3NlX3JhbmRvbWx5X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0hhc2h0YmwuY2hvb3NlX3JhbmRvbWx5X2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKTtcbiAgY2hvb3NlX3JhbmRvbWx5X25vbmVtcHR5IH5yYW5kb21fc3RhdGUgdFxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IGludmFyaWFudF9kYXRhIHQgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgQXZsdHJlZS5pbnZhcmlhbnQgdC50YWJsZS4oaSkgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gIGRvbmU7XG4gIGxldCByZWFsX2xlbiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGkgLT5cbiAgICAgIGludmFyaWFudF9rZXkga2V5O1xuICAgICAgaW52YXJpYW50X2RhdGEgZGF0YTtcbiAgICAgIGkgKyAxKVxuICBpblxuICBhc3NlcnQgKHJlYWxfbGVuID0gdC5sZW5ndGgpXG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgaWZfZm91bmQgdiBfID0gdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIGsgdCA9XG4gICAgcmFpc2VcbiAgICAgIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJIYXNodGJsLmZpbmRfZXhuOiBub3QgZm91bmRcIjsgdC5oYXNoYWJsZS5zZXhwX29mX3QgayBdKSlcbiAgaW5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID0gZmluZF9hbmRfY2FsbDEgdCBrZXkgfmE6dCB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBmb3JfYWxsaSB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IG5vdCAoZiB+a2V5IH5kYXRhKSkpXG5sZXQgZm9yX2FsbCB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gbm90IChmIGRhdGEpKSlcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKSBbQG5vbnRhaWxcbiAgXVxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOihmIH5rZXkgfmRhdGEpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBjb3B5IHQgPSBtYXAgdCB+ZjpGbi5pZFxuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IFNvbWUgbmV3X2RhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICB8IE5vbmUgLT4gKCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgZmlsdGVyX2tleXMgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuXG5sZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gIGxldCB0MCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGxldCB0MSA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IG5ld19kYXRhIC0+IHNldCB0MCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBTZWNvbmQgbmV3X2RhdGEgLT4gc2V0IHQxIH5rZXkgfmRhdGE6bmV3X2RhdGEpO1xuICB0MCwgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKSBcbiAgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5cbmxldCBmaW5kX29yX2FkZCB0IGlkIH5kZWZhdWx0OihkZWZhdWx0IFtAbG9jYWxdKSA9XG4gIGZpbmRfYW5kX2NhbGxcbiAgICB0XG4gICAgaWRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIC0+IGRhdGEpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuIGtleSAtPlxuICAgICAgbGV0IGRlZmF1bHQgPSBkZWZhdWx0ICgpIGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGlfb3JfYWRkIHQgaWQgfmRlZmF1bHQgPVxuICBmaW5kX2FuZF9jYWxsXG4gICAgdFxuICAgIGlkXG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCBrZXkgaW5cbiAgICAgIHNldCB0IH5rZXkgfmRhdGE6ZGVmYXVsdDtcbiAgICAgIGRlZmF1bHQpIFtAbm9udGFpbF1cbjs7XG5cbigqIFNvbWUgaGFzaHRibCBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGFibGUgdG8gcGVyZm9ybSB0aGlzIG1vcmUgZWZmaWNpZW50bHkgdGhhbiB0d29cbiAgIHNlcGFyYXRlIGxvb2t1cHMgKilcbmxldCBmaW5kX2FuZF9yZW1vdmUgdCBpZCA9XG4gIGxldCByZXN1bHQgPSBmaW5kIHQgaWQgaW5cbiAgaWYgT3B0aW9uLmlzX3NvbWUgcmVzdWx0IHRoZW4gcmVtb3ZlIHQgaWQ7XG4gIHJlc3VsdFxuOztcblxuXG5sZXQgY2hhbmdlIHQgaWQgfmYgPVxuICBtYXRjaCBmIChmaW5kIHQgaWQpIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB0IGlkXG4gIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXk6aWQgfmRhdGFcbjs7XG5cbmxldCB1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mID1cbiAgbGV0IGRhdGEgPSBmIChmaW5kIHQgaWQpIGluXG4gIHNldCB0IH5rZXk6aWQgfmRhdGE7XG4gIGRhdGFcbjs7XG5cbmxldCB1cGRhdGUgdCBpZCB+ZiA9IGlnbm9yZSAodXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA6IF8pXG5cbmxldCBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieSA9XG4gIGlmIHJlbW92ZV9pZl96ZXJvXG4gIHRoZW5cbiAgICBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvcHQgLT5cbiAgICAgIG1hdGNoIGJ5ICsgT3B0aW9uLnZhbHVlIG9wdCB+ZGVmYXVsdDowIHdpdGhcbiAgICAgIHwgMCAtPiBOb25lXG4gICAgICB8IG4gLT4gU29tZSBuKVxuICBlbHNlXG4gICAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGJ5XG4gICAgICB8IFNvbWUgaSAtPiBieSArIGkpXG47O1xuXG5sZXQgaW5jciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5XG5sZXQgZGVjciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5ICgtYnkpXG5cbmxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBbIGRhdGEgXVxuICAgIHwgU29tZSBsIC0+IGRhdGEgOjogbClcbjs7XG5cbmxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBbXSB8IFNvbWUgWyBfIF0gLT4gcmVtb3ZlIHQga2V5XG4gIHwgU29tZSAoXyA6OiB0bCkgLT4gc2V0IHQgfmtleSB+ZGF0YTp0bFxuOztcblxubGV0IGZpbmRfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSBsIC0+IGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSB+c2l6ZSAoKSBpblxuICBsZXQgZHVwZXMgPSByZWYgW10gaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGlmIG1lbSByZXMga2V5IHRoZW4gZHVwZXMgOj0ga2V5IDo6ICFkdXBlcyBlbHNlIHNldCByZXMgfmtleSB+ZGF0YSk7XG4gIG1hdGNoICFkdXBlcyB3aXRoXG4gIHwgW10gLT4gYE9rIHJlc1xuICB8IGtleXMgLT4gYER1cGxpY2F0ZV9rZXlzIChMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmUga2V5cylcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIH5oYXNoYWJsZSAoKSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgYWRkX211bHRpIHJlcyB+a2V5IH5kYXRhKTtcbiAgcmVzXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0IHdpdGhcbiAgfCBgT2sgdCAtPiBgT2sgdFxuICB8IGBEdXBsaWNhdGVfa2V5cyBrIC0+IGBEdXBsaWNhdGVfa2V5IChMaXN0LmhkX2V4biBrKVxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBgT2sgdiAtPiBSZXN1bHQuT2sgdlxuICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yIFwiSGFzaHRibC5vZl9hbGlzdF9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgc2V4cF9vZl9rZXlcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgUmVzdWx0Lk9rIHYgLT4gdlxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEVycm9yLnJhaXNlIGVcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCB0b19hbGlzdCB0ID0gZm9sZCB+ZjooZnVuIH5rZXkgfmRhdGEgbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICB0XG4gIHw+IHRvX2FsaXN0XG4gIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIChrMSwgXykgKGsyLCBfKSAtPiB0Lmhhc2hhYmxlLmNvbXBhcmUgazEgazIpXG4gIHw+IHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSlcbjs7XG5cbmxldCB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9XG4gIGxldCBhbGlzdCA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHApIHNleHAgaW5cbiAgbWF0Y2ggb2ZfYWxpc3Qgfmhhc2hhYmxlIGFsaXN0IH5zaXplOihMaXN0Lmxlbmd0aCBhbGlzdCkgd2l0aFxuICB8IGBPayB2IC0+IHZcbiAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgKCogZmluZCB0aGUgc2V4cCBvZiBhIGR1cGxpY2F0ZSBrZXksIHNvIHRoZSBlcnJvciBpcyBuYXJyb3dlZCB0byBhIGtleSBhbmQgbm90XG4gICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgbGV0IGZvdW5kX2ZpcnN0X2sgPSByZWYgZmFsc2UgaW5cbiAgICBMaXN0Lml0ZXIyX2V4biBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICBpZiBoYXNoYWJsZS5jb21wYXJlIGsgazIgPSAwXG4gICAgICB0aGVuXG4gICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIkhhc2h0YmwudF9vZl9zZXhwOiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICBlbHNlIGZvdW5kX2ZpcnN0X2sgOj0gdHJ1ZSk7XG4gICAgYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGsgdilcbiAgICAgIChrX2dyYW1tYXIgOiBrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgKHZfZ3JhbW1hciA6IHYgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogKGssIHYpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG47O1xuXG5sZXQga2V5cyB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YTpfIGFjYyAtPiBrZXkgOjogYWNjKVxubGV0IGRhdGEgdCA9IGZvbGQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IGFkZF90b19ncm91cHMgZ3JvdXBzIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSB+cm93cyA9XG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gcm93IC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgcm93IGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByb3cgaW5cbiAgICBsZXQgZGF0YSA9XG4gICAgICBtYXRjaCBmaW5kIGdyb3VwcyBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgIHwgU29tZSBvbGQgLT4gY29tYmluZSBvbGQgZGF0YVxuICAgIGluXG4gICAgc2V0IGdyb3VwcyB+a2V5IH5kYXRhKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgcm93cyA9XG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSBpblxuICBhZGRfdG9fZ3JvdXBzIHJlcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3M7XG4gIHJlc1xuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhOkZuLmlkIHJvd3Ncbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgbWF0Y2ggY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyB3aXRoXG4gIHwgYE9rIHQgLT4gUmVzdWx0Lk9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMga2V5cyAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiSGFzaHRibC5jcmVhdGVfd2l0aF9rZXk6IGR1cGxpY2F0ZSBrZXlzXCJcbiAgICAgICAgIFsgXCJrZXlzXCIsIHNleHBfb2ZfbGlzdCBzZXhwX29mX2tleSBrZXlzIF0pXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBPcl9lcnJvci5va19leG4gKGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MpXG47O1xuXG5sZXQgbWVyZ2UgPVxuICBsZXQgbWF5YmVfc2V0IHQgfmtleSB+ZiBkID1cbiAgICBtYXRjaCBmIH5rZXkgZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gc2V0IHQgfmtleSB+ZGF0YTp2XG4gIGluXG4gIGZ1biB0X2xlZnQgdF9yaWdodCB+ZiAtPlxuICAgIGlmIG5vdCAoSGFzaGFibGUuZXF1YWwgdF9sZWZ0Lmhhc2hhYmxlIHRfcmlnaHQuaGFzaGFibGUpXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkhhc2h0YmwubWVyZ2U6IGRpZmZlcmVudCAnaGFzaGFibGUnIHZhbHVlc1wiO1xuICAgIGxldCBuZXdfdCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmdyb3d0aF9hbGxvd2VkOnRfbGVmdC5ncm93dGhfYWxsb3dlZFxuICAgICAgICB+aGFzaGFibGU6dF9sZWZ0Lmhhc2hhYmxlXG4gICAgICAgIH5zaXplOnRfbGVmdC5sZW5ndGhcbiAgICAgICAgKClcbiAgICBpblxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9sZWZ0IChmdW4gKCkgLT5cbiAgICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9yaWdodCAoZnVuICgpIC0+XG4gICAgICAgIGl0ZXJpIHRfbGVmdCB+ZjooZnVuIH5rZXkgfmRhdGE6bGVmdCAtPlxuICAgICAgICAgIG1hdGNoIGZpbmQgdF9yaWdodCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYExlZnQgbGVmdClcbiAgICAgICAgICB8IFNvbWUgcmlnaHQgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBCb3RoIChsZWZ0LCByaWdodCkpKTtcbiAgICAgICAgaXRlcmkgdF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6cmlnaHQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfbGVmdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYFJpZ2h0IHJpZ2h0KVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgICAgKCogYWxyZWFkeSBkb25lIGFib3ZlICopKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdKTtcbiAgICBuZXdfdFxuOztcblxubGV0IG1lcmdlX2ludG8gfnNyYyB+ZHN0IH5mID1cbiAgaXRlcmkgc3JjIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCBkc3RfZGF0YSA9IGZpbmQgZHN0IGtleSBpblxuICAgIGxldCBhY3Rpb24gPSB3aXRob3V0X211dGF0aW5nIGRzdCAoZnVuICgpIC0+IGYgfmtleSBkYXRhIGRzdF9kYXRhKSBpblxuICAgIG1hdGNoIChhY3Rpb24gOiBfIE1lcmdlX2ludG9fYWN0aW9uLnQpIHdpdGhcbiAgICB8IFJlbW92ZSAtPiByZW1vdmUgZHN0IGtleVxuICAgIHwgU2V0X3RvIGRhdGEgLT5cbiAgICAgIChtYXRjaCBkc3RfZGF0YSB3aXRoXG4gICAgICAgfCBOb25lIC0+IHNldCBkc3QgfmtleSB+ZGF0YVxuICAgICAgIHwgU29tZSBkc3RfZGF0YSAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZHN0X2RhdGEgZGF0YSkgdGhlbiBzZXQgZHN0IH5rZXkgfmRhdGEpKSBbQG5vbnRhaWxcbiAgXVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhYyBlbHNlIGtleSA6OiBhYylcbiAgaW5cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGtleSAtPiByZW1vdmUgdCBrZXkpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5cbmxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgbWFwX3Jlc3VsdHMgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFjIC0+IChrZXksIGYgfmtleSB+ZGF0YSkgOjogYWMpIGluXG4gIExpc3QuaXRlciBtYXBfcmVzdWx0cyB+ZjooZnVuIChrZXksIHJlc3VsdCkgLT5cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZW1vdmUgdCBrZXlcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhKVxuOztcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSB0IH5mID1cbiAgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgd2l0aG91dF9tdXRhdGluZyB0IChmdW4gKCkgLT5cbiAgICBBcnJheS5pdGVyIHQudGFibGUgfmY6KEF2bHRyZWUubWFwaV9pbnBsYWNlIH5mKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9IG1hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgZXF1YWwgZXF1YWwgdCB0JyA9XG4gIGxlbmd0aCB0ID0gbGVuZ3RoIHQnXG4gICYmICh3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICB3aXRob3V0X211dGF0aW5nIHQnIChmdW4gKCkgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIG1hdGNoIGZpbmQgdCcga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHIucmV0dXJuIGZhbHNlXG4gICAgICAgIHwgU29tZSBkYXRhJyAtPiBpZiBub3QgKGVxdWFsIGRhdGEgZGF0YScpIHRoZW4gci5yZXR1cm4gZmFsc2UpIFtAbm9udGFpbF0pO1xuICAgIHRydWUpIFtAbm9udGFpbF0pXG47O1xuXG5sZXQgc2ltaWxhciA9IGVxdWFsXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgY2hvb3NlID0gY2hvb3NlXG4gIGxldCBjaG9vc2VfZXhuID0gY2hvb3NlX2V4blxuICBsZXQgY2hvb3NlX3JhbmRvbWx5ID0gY2hvb3NlX3JhbmRvbWx5XG4gIGxldCBjaG9vc2VfcmFuZG9tbHlfZXhuID0gY2hvb3NlX3JhbmRvbWx5X2V4blxuICBsZXQgY2xlYXIgPSBjbGVhclxuICBsZXQgY29weSA9IGNvcHlcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZVxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGFkZF9leG4gPSBhZGRfZXhuXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbiAgbGV0IHVwZGF0ZSA9IHVwZGF0ZVxuICBsZXQgdXBkYXRlX2FuZF9yZXR1cm4gPSB1cGRhdGVfYW5kX3JldHVyblxuICBsZXQgYWRkX211bHRpID0gYWRkX211bHRpXG4gIGxldCByZW1vdmVfbXVsdGkgPSByZW1vdmVfbXVsdGlcbiAgbGV0IGZpbmRfbXVsdGkgPSBmaW5kX211bHRpXG4gIGxldCBtZW0gPSBtZW1cbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZpbHRlcl9tYXAgPSBmaWx0ZXJfbWFwXG4gIGxldCBmaWx0ZXJfbWFwaSA9IGZpbHRlcl9tYXBpXG4gIGxldCBmaWx0ZXJfa2V5cyA9IGZpbHRlcl9rZXlzXG4gIGxldCBmaWx0ZXIgPSBmaWx0ZXJcbiAgbGV0IGZpbHRlcmkgPSBmaWx0ZXJpXG4gIGxldCBwYXJ0aXRpb25fbWFwID0gcGFydGl0aW9uX21hcFxuICBsZXQgcGFydGl0aW9uX21hcGkgPSBwYXJ0aXRpb25fbWFwaVxuICBsZXQgcGFydGl0aW9uX3RmID0gcGFydGl0aW9uX3RmXG4gIGxldCBwYXJ0aXRpb25pX3RmID0gcGFydGl0aW9uaV90ZlxuICBsZXQgZmluZF9vcl9hZGQgPSBmaW5kX29yX2FkZFxuICBsZXQgZmluZGlfb3JfYWRkID0gZmluZGlfb3JfYWRkXG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgZmluZF9leG4gPSBmaW5kX2V4blxuICBsZXQgZmluZF9hbmRfY2FsbCA9IGZpbmRfYW5kX2NhbGxcbiAgbGV0IGZpbmRfYW5kX2NhbGwxID0gZmluZF9hbmRfY2FsbDFcbiAgbGV0IGZpbmRfYW5kX2NhbGwyID0gZmluZF9hbmRfY2FsbDJcbiAgbGV0IGZpbmRpX2FuZF9jYWxsID0gZmluZGlfYW5kX2NhbGxcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMSA9IGZpbmRpX2FuZF9jYWxsMVxuICBsZXQgZmluZGlfYW5kX2NhbGwyID0gZmluZGlfYW5kX2NhbGwyXG4gIGxldCBmaW5kX2FuZF9yZW1vdmUgPSBmaW5kX2FuZF9yZW1vdmVcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IG1lcmdlID0gbWVyZ2VcbiAgbGV0IG1lcmdlX2ludG8gPSBtZXJnZV9pbnRvXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgPSBmaWx0ZXJfa2V5c19pbnBsYWNlXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSA9IGZpbHRlcl9pbnBsYWNlXG4gIGxldCBmaWx0ZXJpX2lucGxhY2UgPSBmaWx0ZXJpX2lucGxhY2VcbiAgbGV0IG1hcF9pbnBsYWNlID0gbWFwX2lucGxhY2VcbiAgbGV0IG1hcGlfaW5wbGFjZSA9IG1hcGlfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlID0gZmlsdGVyX21hcGlfaW5wbGFjZVxuICBsZXQgZXF1YWwgPSBlcXVhbFxuICBsZXQgc2ltaWxhciA9IHNpbWlsYXJcbiAgbGV0IGluY3IgPSBpbmNyXG4gIGxldCBkZWNyID0gZGVjclxuICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleVxuZW5kXG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBLZXkuaGFzaGFibGVcblxuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKClcbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID0gb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHBcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG4gIDs7XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXkgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IEhhc2hhYmxlLnBvbHlcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEhhc2hhYmxlID0gSGFzaGFibGUuSGFzaGFibGVcblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBsZXQgaGFzaGFibGUgdCA9IHQuaGFzaGFibGVcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgY3JlYXRlIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKVxuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfbXVsdGkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgY3JlYXRlX21hcHBlZCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgZ3JvdXAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG47O1xuXG5sZXQgaGFzaGFibGVfcyB0ID0gSGFzaGFibGUudG9fa2V5IHQuaGFzaGFibGVcblxubW9kdWxlIE0gKEsgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBrKSAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrKSB2X29mX3NleHAgc2V4cCA9XG4gIHRfb2Zfc2V4cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEspKSBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGspIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaykgdl9ncmFtbWFyID1cbiAgdF9zZXhwX2dyYW1tYXIgSy50X3NleHBfZ3JhbW1hciB2X2dyYW1tYXJcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIGVxdWFsX3YgdDEgdDIgPSBlcXVhbCBlcXVhbF92IHQxIHQyXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuXG5sZXQgaGFzaGFibGVfcyA9IEhhc2h0YmwuaGFzaGFibGVfc1xubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5sZXQgcG9seV9oYXNoYWJsZSA9IEhhc2h0YmwuUG9seS5oYXNoYWJsZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAnYSB0ID0gKCdhLCB1bml0KSBIYXNodGJsLnRcbnR5cGUgJ2EgaGFzaF9zZXQgPSAnYSB0XG50eXBlICdhIGVsdCA9ICdhXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuICBsZXQgbGVuZ3RoID0gSGFzaHRibC5sZW5ndGhcbiAgbGV0IG1lbSA9IEhhc2h0YmwubWVtXG4gIGxldCBpc19lbXB0eSB0ID0gSGFzaHRibC5pc19lbXB0eSB0XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgSGFzaHRibC5pdGVyX2tleXMgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyBhcyBvIC0+IHIucmV0dXJuIG8pO1xuICAgICAgTm9uZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kX21hcCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBTb21lIGEgZWxzZSBOb25lKSBbQG5vbnRhaWxdXG4gIGxldCBhZGQgdCBrID0gSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KClcblxuICBsZXQgc3RyaWN0X2FkZCB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImVsZW1lbnQgYWxyZWFkeSBleGlzdHNcIlxuICAgIGVsc2UgKFxuICAgICAgSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KCk7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gIDs7XG5cbiAgbGV0IHN0cmljdF9hZGRfZXhuIHQgayA9IE9yX2Vycm9yLm9rX2V4biAoc3RyaWN0X2FkZCB0IGspXG4gIGxldCByZW1vdmUgPSBIYXNodGJsLnJlbW92ZVxuXG4gIGxldCBzdHJpY3RfcmVtb3ZlIHQgayA9XG4gICAgaWYgbWVtIHQga1xuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlIHQgaztcbiAgICAgIFJlc3VsdC5PayAoKSlcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yIFwiZWxlbWVudCBub3QgaW4gc2V0XCIgayAoSGFzaHRibC5zZXhwX29mX2tleSB0KVxuICA7O1xuXG4gIGxldCBzdHJpY3RfcmVtb3ZlX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9yZW1vdmUgdCBrKVxuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgIEhhc2h0YmwuZm9sZCB0IH5pbml0IH5mOihmdW4gfmtleSB+ZGF0YTooKSBhY2MgLT4gZiBhY2Mga2V5KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9IEhhc2h0YmwuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG4gIGxldCB0b19saXN0ID0gSGFzaHRibC5rZXlzXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2UgdCA9XG4gICAgc2V4cF9vZl9saXN0IHNleHBfb2ZfZSAodG9fbGlzdCB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTooaGFzaGFibGUgdCkuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IGluZGV4ID0gcmVmIChsZW4gLSAxKSBpblxuICAgIGZvbGQgdCB+aW5pdDpbfHxdIH5mOihmdW4gYWNjIGtleSAtPlxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGFjYyA9IDBcbiAgICAgIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4ga2V5XG4gICAgICBlbHNlIChcbiAgICAgICAgaW5kZXggOj0gIWluZGV4IC0gMTtcbiAgICAgICAgYWNjLighaW5kZXgpIDwtIGtleTtcbiAgICAgICAgYWNjKSlcbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgICBIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9yX2FsbCB0IH5mID0gbm90IChIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gbm90IChmIGtleSkpKVxuICBsZXQgZXF1YWwgdDEgdDIgPSBIYXNodGJsLmVxdWFsIChmdW4gKCkgKCkgLT4gdHJ1ZSkgdDEgdDJcbiAgbGV0IGNvcHkgdCA9IEhhc2h0YmwuY29weSB0XG4gIGxldCBmaWx0ZXIgdCB+ZiA9IEhhc2h0YmwuZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSkgW0Bub250YWlsXVxuICBsZXQgdW5pb24gdDEgdDIgPSBIYXNodGJsLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIF8gLT4gU29tZSAoKSlcbiAgbGV0IGRpZmYgdDEgdDIgPSBmaWx0ZXIgdDEgfmY6KGZ1biBrZXkgLT4gbm90IChIYXNodGJsLm1lbSB0MiBrZXkpKVxuXG4gIGxldCBpbnRlciB0MSB0MiA9XG4gICAgbGV0IHNtYWxsZXIsIGxhcmdlciA9IGlmIGxlbmd0aCB0MSA+IGxlbmd0aCB0MiB0aGVuIHQyLCB0MSBlbHNlIHQxLCB0MiBpblxuICAgIEhhc2h0YmwuZmlsdGVyaSBzbWFsbGVyIH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBIYXNodGJsLm1lbSBsYXJnZXIga2V5KVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgICBsZXQgdG9fcmVtb3ZlID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgeCAtPiBpZiBmIHggdGhlbiBhYyBlbHNlIHggOjogYWMpIGluXG4gICAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIHggLT4gcmVtb3ZlIHQgeClcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGhhc2h0YmwgPSBIYXNodGJsLm1hcCBoYXNodGJsIH5mOmlnbm9yZVxuICBsZXQgdG9faGFzaHRibCB0IH5mID0gSGFzaHRibC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBsXG4gIGluXG4gIGxldCB0ID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIG0gaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biBrIC0+IGFkZCB0IGspO1xuICB0XG47O1xuXG5sZXQgdF9vZl9zZXhwIG0gZV9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBTZXhwLkF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIHJlcXVpcmVzIGEgbGlzdFwiIHNleHBcbiAgfCBTZXhwLkxpc3QgbGlzdCAtPlxuICAgIGxldCB0ID0gY3JlYXRlIG0gfnNpemU6KExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biBzZXhwIC0+XG4gICAgICBsZXQgZSA9IGVfb2Zfc2V4cCBzZXhwIGluXG4gICAgICBtYXRjaCBzdHJpY3RfYWRkIHQgZSB3aXRoXG4gICAgICB8IE9rICgpIC0+ICgpXG4gICAgICB8IEVycm9yIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCBnb3QgYSBkdXBsaWNhdGUgZWxlbWVudFwiIHNleHApO1xuICAgIHRcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBFbHQudCkgLT4gU2V4cC50IC0+ICdhIEVsdC50IHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIEVsdC50IHRcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgd2l0aCB0eXBlICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGVfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBlX29mX3NleHAgc2V4cFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGhhc2hfc2V0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBwb2x5X2hhc2hhYmxlXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG5lbmRcblxubW9kdWxlIE0gKEVsdCA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IEVsdC50IHRcbmVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQpIHNleHAgPVxuICB0X29mX3NleHAgKG1vZHVsZSBFbHQpIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdCkgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChsaXN0X3NleHBfZ3JhbW1hciBFbHQudF9zZXhwX2dyYW1tYXIpXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFByaW50ZlxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5pbmNsdWRlIEZsb2F0MFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfZmxvYXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Zsb2F0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfZmxvYXQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICBsZXQgdF9vZl9zZXhwID0gKGZsb2F0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Zsb2F0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGZsb2F0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCB0b19mbG9hdCB4ID0geFxubGV0IG9mX2Zsb2F0IHggPSB4XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIHRyeSBmbG9hdF9vZl9zdHJpbmcgcyB3aXRoXG4gIHwgXyAtPiBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5vZl9zdHJpbmcgJXNcIiBzICgpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX29wdCA9IGZsb2F0X29mX3N0cmluZ19vcHRcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XS4gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGkgbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG4oKiBMZXQgW3ldIGJlIGEgcG93ZXIgb2YgMi4gIFRoZW4gdGhlIG5leHQgcmVwcmVzZW50YWJsZSBmbG9hdCBpczpcbiAgIFt6ID0geSAqICgxICsgMiAqKiAtNTIpXVxuICAgYW5kIHRoZSBwcmV2aW91cyBvbmUgaXNcbiAgIFt4ID0geSAqICgxIC0gMiAqKiAtNTMpXVxuXG4gICBJbiBnZW5lcmFsLCBldmVyeSB0d28gYWRqYWNlbnQgZmxvYXRzIGFyZSB3aXRoaW4gYSBmYWN0b3Igb2YgYmV0d2VlbiBbMSArIDIqKi01M11cbiAgIGFuZCBbMSArIDIqKi01Ml0gZnJvbSBlYWNoIG90aGVyLCB0aGF0IGlzIHdpdGhpbiBbMSArIDEuMWUtMTZdIGFuZCBbMSArIDIuM2UtMTZdLlxuXG4gICBTbyBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIGZsb2F0IHN0YXJ0cyB3aXRoIFwiMVwiLCB0aGVuIGl0cyBhZGphY2VudCBmbG9hdHNcbiAgIHdpbGwgdXN1YWxseSBkaWZmZXIgZnJvbSBpdCBieSAxLCBhbmQgc29tZXRpbWVzIGJ5IDIsIGF0IHRoZSAxN3RoIHNpZ25pZmljYW50IGRpZ2l0XG4gICAoY291bnRpbmcgZnJvbSAxKS5cblxuICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIHN0YXJ0cyB3aXRoIFwiOVwiLCB0aGVuIHRoZSBhZGphY2VudFxuICAgZmxvYXRzIHdpbGwgYmUgb2ZmIGJ5IG5vIG1vcmUgdGhhbiAyMyBhdCB0aGUgMTZ0aCBhbmQgMTd0aCBzaWduaWZpY2FudCBkaWdpdHMuXG5cbiAgIEUuZy46XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1NjdcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyMy45OTk5OTk5OTk5OTk5XCJcbiAgIHZ9XG4gICBQcmludGluZyBhIGNvdXBsZSBvZiBleHRyYSBkaWdpdHMgcmV2ZWFscyB0aGF0IHRoZSBkaWZmZXJlbmNlIGluZGVlZCBpcyByb3VnaGx5IDExIGF0XG4gICBkaWdpdHMgMTd0aCBhbmQgMTh0aCAodGhhdCBpcywgMTN0aCBhbmQgMTR0aCBhZnRlciBcIi5cIik6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTlnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2Nzg5XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5ODg2XCJcbiAgIHZ9XG5cbiAgIFRoZSB1bHAgKHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYWRqYWNlbnQgZmxvYXRzKSBpcyB0d2ljZSBhcyBiaWcgb24gdGhlIG90aGVyIHNpZGUgb2ZcbiAgIDEwMjQuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDI0LjAwMDAwMDAwMDAwMDIyN1wiXG4gICB2fVxuXG4gICBOb3cgdGFrZSBhIHBvd2VyIG9mIDIgd2hpY2ggc3RhcnRzIHdpdGggOTk6XG5cbiAgIHt2XG4gICAgICMgMi4qKjkzLiA7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgIDEgMjM0NTY3ODkwMTIzNDU2NzhcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDIyZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDQ0ZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDExZSsyN1xuICAgdn1cblxuICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAyKio5MyBhbmQgaXRzIHR3byBuZWlnaGJvcnMgaXMgc2xpZ2h0bHkgbW9yZSB0aGFuLCByZXNwZWN0aXZlbHksXG4gICAxIGFuZCAyIGF0IHNpZ25pZmljYW50IGRpZ2l0IDE2LlxuXG4gICBUaG9zZSBleGFtcGxlcyBzaG93IHRoYXQ6XG4gICAtIDE3IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBhbHdheXMgc3VmZmljaWVudCB0byByZXByZXNlbnQgYSBmbG9hdCB3aXRob3V0IGFtYmlndWl0eVxuICAgLSAxNXRoIHNpZ25pZmljYW50IGRpZ2l0IGNhbiBhbHdheXMgYmUgcmVwcmVzZW50ZWQgYWNjdXJhdGVseVxuICAgLSBjb252ZXJ0aW5nIGEgZGVjaW1hbCBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgdG8gaXRzIG5lYXJlc3QgZmxvYXQgYW5kIGJhY2tcbiAgICAgY2FuIGNoYW5nZSB0aGUgbGFzdCBkZWNpbWFsIGRpZ2l0IGJ5IG5vIG1vcmUgdGhhbiAxXG5cbiAgIFRvIG1ha2Ugc3VyZSB0aGF0IGZsb2F0cyBvYnRhaW5lZCBieSBjb252ZXJzaW9uIGZyb20gZGVjaW1hbCBmcmFjdGlvbnMgKGUuZy4gXCIzLjE0XCIpXG4gICBhcmUgcHJpbnRlZCB3aXRob3V0IHRyYWlsaW5nIG5vbi16ZXJvIGRpZ2l0cywgb25lIHNob3VsZCBjaG9vc2UgdGhlIGZpcnN0IGFtb25nIHRoZVxuICAgJyUuMTVnJywgJyUuMTZnJywgYW5kICclLjE3ZycgcmVwcmVzZW50YXRpb25zIHdoaWNoIGRvZXMgcm91bmQtdHJpcDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiICAgICAgICAgICAgICAgICAgICAgKCogcGljayB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0XCJcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUgKilcblxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOFwiICAgICAgICAgICAgICAgICAgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUtLWRvZXMgbm90IHJvdW5kLXRyaXAgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAyXCIgICAgICAgICgqIHByZWZlciB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOC4wMDAwMDAwMDAwMDAwMDE4XCIgICAgICAgKCogdGhpcyBvbmUgaGFzIG9uZSBkaWdpdCBvZiBqdW5rIGF0IHRoZSBlbmQgKilcbiAgIHZ9XG5cbiAgIFNraXBwaW5nIHRoZSAnJS4xNmcnIGluIHRoZSBhYm92ZSBwcm9jZWR1cmUgc2F2ZXMgdXMgc29tZSB0aW1lLCBidXQgaXQgbWVhbnMgdGhhdCwgYXNcbiAgIHNlZW4gaW4gdGhlIHNlY29uZCBleGFtcGxlIGFib3ZlLCBvY2Nhc2lvbmFsbHkgbnVtYmVycyB3aXRoIGV4YWN0bHkgMTYgc2lnbmlmaWNhbnRcbiAgIGRpZ2l0cyB3aWxsIGhhdmUgYW4gZXJyb3IgaW50cm9kdWNlZCBhdCB0aGUgMTd0aCBkaWdpdC4gIFRoYXQgaXMgcHJvYmFibHkgT0sgZm9yXG4gICB0eXBpY2FsIHVzZSwgYmVjYXVzZSBhIG51bWJlciB3aXRoIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBcInVnbHlcIiBhbHJlYWR5LiAgQWRkaW5nIG9uZVxuICAgbW9yZSBkb2Vzbid0IG1ha2UgaXQgbXVjaCB3b3JzZSBmb3IgYSBodW1hbiByZWFkZXIuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBjYW5ub3Qgc2tpcCAnJS4xNWcnIGFuZCBvbmx5IGxvb2sgYXQgJyUuMTZnJyBhbmQgJyUuMTdnJywgc2luY2VcbiAgIHRoZSBpbmFjY3VyYWN5IGF0IHRoZSAxNnRoIGRpZ2l0IG1pZ2h0IGludHJvZHVjZSB0aGUgbm9pc2Ugd2Ugd2FudCB0byBhdm9pZDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyXCIgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAxXCIgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1qdW5rIGF0IHRoZSBlbmQgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAwOVwiXG4gICB2fVxuKilcbmxldCB0b19zdHJpbmcgeCA9XG4gIHZhbGlkX2Zsb2F0X2xleGVtXG4gICAgKGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNWdcIiB4IGluXG4gICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3Z1wiIHgpXG47O1xuXG5sZXQgbWF4X3ZhbHVlID0gaW5maW5pdHlcbmxldCBtaW5fdmFsdWUgPSBuZWdfaW5maW5pdHlcbmxldCBtaW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID0gMi4gKiogLTEwNzQuXG5sZXQgbWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDIyLlxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgcGkgPSAweDMuMjQzRjZBODg4NUEzMDhEMzEzMTk4QTJFMDM3MDczXG5sZXQgc3FydF9waSA9IDB4MS5DNUJGODkxQjRFRjZBQTc5QzNCMDUyMEQ1REI5MzhcbmxldCBzcXJ0XzJwaSA9IDB4Mi44MUIyNjNGRUM0RTBCMkNBRjk0ODNGNUNFNDU5RENcbmxldCBldWxlciA9IDB4MC45M0M0NjdFMzdEQjBDN0E0RDFCRTNGODEwMTUyQ0JcbmxldCBvZl9pbnQgPSBJbnQudG9fZmxvYXRcbmxldCB0b19pbnQgPSBJbnQub2ZfZmxvYXRcbmxldCBvZl9pbnQ2MyBpID0gSW50NjMudG9fZmxvYXQgaVxubGV0IG9mX2ludDY0IGkgPSBTdGRsaWIuSW50NjQudG9fZmxvYXQgaVxubGV0IHRvX2ludDY0ID0gU3RkbGliLkludDY0Lm9mX2Zsb2F0XG5sZXQgaXJvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5sZXQgaXJvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5cbigqIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgXCJleG5cIiByb3VuZGluZyBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBzbyB0aGV5IGFyZSB3cml0dGVuXG4gICBvdXQgc2VwYXJhdGVseSwgYW5kIHR1bmVkIGluZGl2aWR1YWxseS4gIChXZSBjb3VsZCBoYXZlIHRoZSBvcHRpb24gdmVyc2lvbnMgY2FsbFxuICAgdGhlIFwiZXhuXCIgdmVyc2lvbnMsIGJ1dCB0aGF0IGltcG9zZXMgYXJndWFibHkgZ3JhdHVpdG91cyBvdmVyaGVhZC0tLWVzcGVjaWFsbHlcbiAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBjYXB0dXJlIG9mIGJhY2t0cmFjZXMgaXMgZW5hYmxlZCB1cG9uIFwid2l0aFwiLS0tYW5kIHRoYXQgc2VlbXNcbiAgIG5vdCB3b3J0aCBpdCB3aGVuIGNvbXBhcmVkIHRvIHRoZSByZWxhdGl2ZWx5IHNtYWxsIGFtb3VudCBvZiBjb2RlIGR1cGxpY2F0aW9uLikgKilcblxuKCogRXJyb3IgcmVwb3J0aW5nIGJlbG93IGlzIHZlcnkgY2FyZWZ1bGx5IGFycmFuZ2VkIHNvIHRoYXQsIGUuZy4sIFtpcm91bmRfbmVhcmVzdF9leG5dXG4gICBpdHNlbGYgY2FuIGJlIGlubGluZWQgaW50byBjYWxsZXJzIHN1Y2ggdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gYWxsb2NhdGUgYSBib3ggZm9yIHRoZVxuICAgW2Zsb2F0XSBhcmd1bWVudC4gIFRoaXMgaXMgZG9uZSB3aXRoIGEgYm94IFtib3hdIGZ1bmN0aW9uIGNhcmVmdWxseSBjaG9zZW4gdG8gYWxsb3cgdGhlXG4gICBjb21waWxlciB0byBjcmVhdGUgYSBzZXBhcmF0ZSBib3ggZm9yIHRoZSBmbG9hdCBvbmx5IGluIGVycm9yIGNhc2VzLiAgU2VlLCBlLmcuLFxuICAgWy4uLy4uL3plcm8vdGVzdC9wcmljZV90ZXN0Lm1sXSBmb3IgYSBtZWNoYW5pY2FsIHRlc3Qgb2YgdGhpcyBwcm9wZXJ0eSB3aGVuIGJ1aWxkaW5nXG4gICB3aXRoIFtYX0xJQlJBUllfSU5MSU5JTkc9dHJ1ZV0uICopXG5cbmxldCBpcm91bmRfdXAgdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX2Rvd24gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW4gaWYgdCA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KSBlbHNlIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldCBpcm91bmRfdG93YXJkc196ZXJvIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pcm91bmRfdG93YXJkc196ZXJvX2V4bjogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChib3ggdClcbiAgICAgICgpXG47O1xuXG4oKiBPdXRzaWRlIG9mIHRoZSByYW5nZSAocm91bmRfbmVhcmVzdF9sYi4ucm91bmRfbmVhcmVzdF91YiksIGFsbCByZXByZXNlbnRhYmxlIGRvdWJsZXNcbiAgIGFyZSBpbnRlZ2VycyBpbiB0aGUgbWF0aGVtYXRpY2FsIHNlbnNlLCBhbmQgW3JvdW5kX25lYXJlc3RdIHNob3VsZCBiZSBpZGVudGl0eS5cblxuICAgSG93ZXZlciwgZm9yIG9kZCBudW1iZXJzIHdpdGggdGhlIGFic29sdXRlIHZhbHVlIGJldHdlZW4gMioqNTIgYW5kIDIqKjUzLCB0aGUgZm9ybXVsYVxuICAgW3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsgMC41KV0gZG9lcyBub3QgaG9sZDpcblxuICAge3ZcbiAgICAgIyBsZXQgbmFpdmVfcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKy4gMC41KTs7XG4gICAgICMgbGV0IHggPSAyLiAqKiA1Mi4gKy4gMS47O1xuICAgICB2YWwgeCA6IGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5Ny5cbiAgICAgIyBuYWl2ZV9yb3VuZF9uZWFyZXN0IHg7O1xuICAgICAtIDogICAgIGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5OC5cbiAgIHZ9XG4qKVxuXG5sZXQgcm91bmRfbmVhcmVzdF9sYiA9IC0uKDIuICoqIDUyLilcbmxldCByb3VuZF9uZWFyZXN0X3ViID0gMi4gKiogNTIuXG5cbigqIEZvciBbeCA9IG9uZV91bHAgYERvd24gMC41XSwgdGhlIGZvcm11bGEgW2Zsb29yICh4ICsuIDAuNSldIGZvciByb3VuZGluZyB0byBuZWFyZXN0XG4gICBkb2VzIG5vdCB3b3JrLCBiZWNhdXNlIHRoZSBleGFjdCByZXN1bHQgaXMgaGFsZndheSBiZXR3ZWVuIFtvbmVfdWxwIGBEb3duIDEuXSBhbmQgWzEuXSxcbiAgIGFuZCBpdCBnZXRzIHJvdW5kZWQgdXAgdG8gWzEuXSBkdWUgdG8gdGhlIHJvdW5kLXRpZXMtdG8tZXZlbiBydWxlLiAqKVxubGV0IG9uZV91bHBfbGVzc190aGFuX2hhbGYgPSBvbmVfdWxwIGBEb3duIDAuNVxuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgPVxuICB0XG4gICsuXG4gIGlmIHQgPSBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmXG4gIHRoZW4gb25lX3VscF9sZXNzX3RoYW5faGFsZiAoKiBzaW5jZSB0IDwgMC41LCBtYWtlIHN1cmUgdGhlIHJlc3VsdCBpcyA8IDEuMCAqKVxuICBlbHNlIDAuNVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpKVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gICAgZWxzZSBOb25lXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0XzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0XzMyXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuXzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGxcIiAoYm94IHQpICgpKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfbmVhcmVzdF9leG5fNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF9leG5fMzJcbjs7XG5cbigqIFRoZSBmb2xsb3dpbmcgW2lyb3VuZF9leG5dIGFuZCBbaXJvdW5kXSBmdW5jdGlvbnMgYXJlIHNsb3dlciB0aGFuIHRoZSBvbmVzIGFib3ZlLlxuICAgVGhlaXIgZXF1aXZhbGVuY2UgdG8gdGhvc2UgZnVuY3Rpb25zIGlzIHRlc3RlZCBpbiB0aGUgdW5pdCB0ZXN0cyBiZWxvdy4gKilcblxubGV0W0BpbmxpbmVdIGlyb3VuZF9leG4gPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYFplcm8gLT4gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdFxuICB8IGBOZWFyZXN0IC0+IGlyb3VuZF9uZWFyZXN0X2V4biB0XG4gIHwgYFVwIC0+IGlyb3VuZF91cF9leG4gdFxuICB8IGBEb3duIC0+IGlyb3VuZF9kb3duX2V4biB0XG47O1xuXG5sZXQgaXJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICB0cnkgU29tZSAoaXJvdW5kX2V4biB+ZGlyIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBpc19pbmYgdCA9IDEuIC8uIHQgPSAwLlxubGV0IGlzX2Zpbml0ZSB0ID0gdCAtLiB0ID0gMC5cblxubGV0IG1pbl9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBtYXhfaW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgYWRkID0gKCArLiApXG5sZXQgc3ViID0gKCAtLiApXG5sZXQgbmVnID0gKCB+LS4gKVxubGV0IGFicyA9IGFic19mbG9hdFxubGV0IHNjYWxlID0gKCAqLiApXG5sZXQgc3F1YXJlIHggPSB4ICouIHhcblxubW9kdWxlIFBhcnRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBmcmFjdGlvbmFsIDogdCAtPiBmbG9hdFxuICB2YWwgaW50ZWdyYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBtb2RmIDogZmxvYXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0ICogZmxvYXRcblxuICBsZXQgZnJhY3Rpb25hbCB0ID0gZnN0IHRcbiAgbGV0IGludGVncmFsIHQgPSBzbmQgdFxuICBsZXQgbW9kZiA9IG1vZGZcbmVuZFxuXG5sZXQgbW9kZiA9IFBhcnRzLm1vZGZcbmxldCByb3VuZF9kb3duID0gZmxvb3JcbmxldCByb3VuZF91cCA9IGNlaWxcbmxldCByb3VuZF90b3dhcmRzX3plcm8gdCA9IGlmIHQgPj0gMC4gdGhlbiByb3VuZF9kb3duIHQgZWxzZSByb3VuZF91cCB0XG5cbigqIHNlZSB0aGUgY29tbWVudCBhYm92ZSBbcm91bmRfbmVhcmVzdF9sYl0gYW5kIFtyb3VuZF9uZWFyZXN0X3ViXSBmb3IgYW4gZXhwbGFuYXRpb24gKilcbmxldFtAb2NhbWwuaW5saW5lXSByb3VuZF9uZWFyZXN0X2lubGluZSB0ID1cbiAgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGIgJiYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiBmbG9vciAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgZWxzZSB0ICsuIDAuXG47O1xuXG5sZXQgcm91bmRfbmVhcmVzdCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0XG5cbmxldCByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiB0ID1cbiAgaWYgdCA8PSByb3VuZF9uZWFyZXN0X2xiIHx8IHQgPj0gcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIHQgKy4gMC5cbiAgZWxzZSAoXG4gICAgbGV0IGZsb29yID0gZmxvb3IgdCBpblxuICAgICgqIFtjZWlsX29yX3N1Y2MgPSBpZiB0IGlzIGFuIGludGVnZXIgdGhlbiB0ICsuIDEuIGVsc2UgY2VpbCB0XS4gIEZhc3RlciB0aGFuIFtjZWlsXS4gKilcbiAgICBsZXQgY2VpbF9vcl9zdWNjID0gZmxvb3IgKy4gMS4gaW5cbiAgICBsZXQgZGlmZl9mbG9vciA9IHQgLS4gZmxvb3IgaW5cbiAgICBsZXQgZGlmZl9jZWlsID0gY2VpbF9vcl9zdWNjIC0uIHQgaW5cbiAgICBpZiBkaWZmX2Zsb29yIDwgZGlmZl9jZWlsXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgaWYgZGlmZl9mbG9vciA+IGRpZmZfY2VpbFxuICAgIHRoZW4gY2VpbF9vcl9zdWNjXG4gICAgZWxzZSBpZiAoKiBleGFjdCB0aWUsIHBpY2sgdGhlIGV2ZW4gKilcbiAgICAgIG1vZF9mbG9hdCBmbG9vciAyLiA9IDAuXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgY2VpbF9vcl9zdWNjKVxuOztcblxubGV0IGludDYzX3JvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcbmxldCBpbnQ2M19yb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5cbmxldCBpbnQ2M19yb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGludDYzX3JvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuIHQwID1cbiAgbGV0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHQwIGluXG4gIGlmIHQgPiAwLlxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKGJveCB0MClcbiAgICAgICAgKClcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoYm94IHQwKVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4biBmID0gSW50NjMub2ZfaW50IChpcm91bmRfbmVhcmVzdF9leG4gZilcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuXG4gIHwgVzMyIC0+IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuXG47O1xuXG5sZXQgcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCB0XG4gIHwgYERvd24gLT4gcm91bmRfZG93biB0XG4gIHwgYFVwIC0+IHJvdW5kX3VwIHRcbiAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gdFxuOztcblxubW9kdWxlIENsYXNzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbmZpbml0ZVxuICAgIHwgTmFuXG4gICAgfCBOb3JtYWxcbiAgICB8IFN1Ym5vcm1hbFxuICAgIHwgWmVyb1xuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgSW5maW5pdGU7IE5hbjsgTm9ybWFsOyBTdWJub3JtYWw7IFplcm8gXSA6IHQgbGlzdClcblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDA3XyA9IFwiZmxvYXQubWwuQ2xhc3MudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIC0+IEluZmluaXRlXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgLT4gTm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgLT4gU3Vibm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDhfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwOF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSA6OiBfKSBhcyBzZXhwX18wMDhfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA4X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDhfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA4XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwNl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDZfXG4gICAgIHwgc2V4cF9fMDA2XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwNl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbmZpbml0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmZpbml0ZVwiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgfCBOb3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTm9ybWFsXCJcbiAgICAgIHwgU3Vibm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN1Ym5vcm1hbFwiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJJbmZpbml0ZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOYW5cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlN1Ym5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuZW5kXG5cbmxldCBjbGFzc2lmeSB0ID1cbiAgbGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgdCB3aXRoXG4gIHwgRlBfbm9ybWFsIC0+IEMuTm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsIC0+IEMuU3Vibm9ybWFsXG4gIHwgRlBfemVybyAtPiBDLlplcm9cbiAgfCBGUF9pbmZpbml0ZSAtPiBDLkluZmluaXRlXG4gIHwgRlBfbmFuIC0+IEMuTmFuXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzID8oZGVsaW1pdGVyID0gJ18nKSA/KHN0cmlwX3plcm8gPSBmYWxzZSkgc3RyaW5nID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyaW5nIH5vbjonLicgd2l0aFxuICB8IE5vbmUgLT4gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgc3RyaW5nIH5kZWxpbWl0ZXJcbiAgfCBTb21lIChsZWZ0LCByaWdodCkgLT5cbiAgICBsZXQgbGVmdCA9IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIGxlZnQgfmRlbGltaXRlciBpblxuICAgIGxldCByaWdodCA9XG4gICAgICBpZiBzdHJpcF96ZXJvIHRoZW4gU3RyaW5nLnJzdHJpcCByaWdodCB+ZHJvcDooZnVuIGMgLT4gQ2hhci4oID0gKSBjICcwJykgZWxzZSByaWdodFxuICAgIGluXG4gICAgKG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgfCBcIlwiIC0+IGxlZnRcbiAgICAgfCBfIC0+IGxlZnQgXiBcIi5cIiBeIHJpZ2h0KVxuOztcblxubGV0IHRvX3N0cmluZ19odW0gP2RlbGltaXRlciA/KGRlY2ltYWxzID0gMykgP3N0cmlwX3plcm8gPyhleHBsaWNpdF9wbHVzID0gZmFsc2UpIGYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGRlY2ltYWxzIDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJ0b19zdHJpbmdfaHVtOiBpbnZhbGlkIGFyZ3VtZW50IH5kZWNpbWFscz0lZFwiIGRlY2ltYWxzICgpO1xuICBtYXRjaCBjbGFzc2lmeSBmIHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiBmID4gMC4gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW5cIlxuICB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgcyA9XG4gICAgICBpZiBleHBsaWNpdF9wbHVzIHRoZW4gc3ByaW50ZiBcIiUrLipmXCIgZGVjaW1hbHMgZiBlbHNlIHNwcmludGYgXCIlLipmXCIgZGVjaW1hbHMgZlxuICAgIGluXG4gICAgaW5zZXJ0X3VuZGVyc2NvcmVzIHMgP2RlbGltaXRlciA/c3RyaXBfemVyb1xuOztcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgbGV0IHNleHAgPSBzZXhwX29mX3QgdCBpblxuICBtYXRjaCAhU2V4cC5vZl9mbG9hdF9zdHlsZSB3aXRoXG4gIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHNleHBcbiAgfCBgVW5kZXJzY29yZXMgLT5cbiAgICAobWF0Y2ggc2V4cCB3aXRoXG4gICAgIHwgTGlzdCBfIC0+XG4gICAgICAgcmFpc2Vfc1xuICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgXCJbc2V4cF9vZl9mbG9hdF0gcHJvZHVjZWQgc3RyYW5nZSBzZXhwXCJcbiAgICAgICAgICAgIFsgXCJzZXhwXCIsIFNleHAuc2V4cF9vZl90IHNleHAgXSlcbiAgICAgfCBBdG9tIHN0cmluZyAtPlxuICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzdHJpbmcgJ0UnIHRoZW4gc2V4cCBlbHNlIEF0b20gKGluc2VydF91bmRlcnNjb3JlcyBzdHJpbmcpKVxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCA/KHByZWZpeCA9IFwiXCIpIH5raWxvIH5tZWdhIH5naWdhIH50ZXJhID9wZXRhICgpID1cbiAgKCogUm91bmQgYSByYXRpbyB0b3dhcmQgdGhlIG5lYXJlc3QgaW50ZWdlciwgcmVzb2x2aW5nIHRpZXMgdG93YXJkIHRoZSBuZWFyZXN0IGV2ZW5cbiAgICAgbnVtYmVyLiAgRm9yIHNhbmUgaW5wdXRzIChpbiBwYXJ0aWN1bGFyLCB3aGVuIFtkZW5vbWluYXRvcl0gaXMgYW4gaW50ZWdlciBhbmRcbiAgICAgW2FicyBudW1lcmF0b3IgPCAyZTUyXSkgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUuICBPdGhlcndpc2UsIHRoZSByZXN1bHQgbWlnaHQgYmUgYVxuICAgICBsaXR0bGUgYml0IG9mZiwgYnV0IHdlIGRvbid0IHJlYWxseSB1c2UgdGhhdCBjYXNlLiAqKVxuICBsZXQgaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IGsgPSBmbG9vciAobnVtZXJhdG9yIC8uIGRlbm9taW5hdG9yKSBpblxuICAgICgqIGlmIFthYnMgayA8IDJlNTNdLCB0aGVuIGJvdGggW2tdIGFuZCBbayArLiAxLl0gYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGFuZCBpblxuICAgICAgIHBhcnRpY3VsYXIgW2sgKy4gMS4gPiBrXS4gIElmIFtkZW5vbWluYXRvcl0gaXMgYWxzbyBhbiBpbnRlZ2VyLCBhbmRcbiAgICAgICBbYWJzIChkZW5vbWluYXRvciAqLiAoayArLiAxKSkgPCAyZTUzXSAoYW5kIGluIHNvbWUgb3RoZXIgY2FzZXMsIHRvbyksIHRoZW4gW2xvd2VyXVxuICAgICAgIGFuZCBbaGlnaGVyXSBhcmUgYWN0dWFsbHkgYm90aCBhY2N1cmF0ZS4gIFNpbmNlIChyb3VnaGx5KVxuICAgICAgIFtudW1lcmF0b3IgPSBkZW5vbWluYXRvciAqLiBrXSB0aGVuIGZvciBbYWJzIG51bWVyYXRvciA8IDJlNTJdIHdlIHNob3VsZCBiZVxuICAgICAgIGZpbmUuICopXG4gICAgbGV0IGxvd2VyID0gZGVub21pbmF0b3IgKi4gayBpblxuICAgIGxldCBoaWdoZXIgPSBkZW5vbWluYXRvciAqLiAoayArLiAxLikgaW5cbiAgICAoKiBTdWJ0cmFjdGluZyBudW1iZXJzIHdpdGhpbiBhIGZhY3RvciBvZiB0d28gZnJvbSBlYWNoIG90aGVyIGlzIGFjY3VyYXRlLlxuICAgICAgIFNvIGVpdGhlciB0aGUgdHdvIHN1YnRyYWN0aW9ucyBiZWxvdyBhcmUgYWNjdXJhdGUsIG9yIGsgPSAwLCBvciBrID0gLTEuXG4gICAgICAgSW4gY2FzZSBvZiBhIHRpZSwgcm91bmQgdG8gZXZlbi4gKilcbiAgICBsZXQgZGlmZl9yaWdodCA9IGhpZ2hlciAtLiBudW1lcmF0b3IgaW5cbiAgICBsZXQgZGlmZl9sZWZ0ID0gbnVtZXJhdG9yIC0uIGxvd2VyIGluXG4gICAgbGV0IGsgPSBpcm91bmRfbmVhcmVzdF9leG4gayBpblxuICAgIGlmIGRpZmZfcmlnaHQgPCBkaWZmX2xlZnRcbiAgICB0aGVuIGsgKyAxXG4gICAgZWxzZSBpZiBkaWZmX3JpZ2h0ID4gZGlmZl9sZWZ0XG4gICAgdGhlbiBrXG4gICAgZWxzZSBpZiAoKiBhIHRpZSAqKVxuICAgICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoayBtb2QgMikgMFxuICAgIHRoZW4ga1xuICAgIGVsc2UgayArIDFcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgdCA8IDAuMCB0aGVuIFwiLWluZiAgXCIgZWxzZSBcImluZiAgXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW4gIFwiXG4gIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBnbyB0ID1cbiAgICAgIGxldCBjb252X29uZSB0ID1cbiAgICAgICAgYXNzZXJ0ICgwLiA8PSB0ICYmIHQgPCA5OTkuOTUpO1xuICAgICAgICBsZXQgeCA9IHByZWZpeCBeIGZvcm1hdF9mbG9hdCBcIiUuMWZcIiB0IGluXG4gICAgICAgICgqIEZpeCB0aGUgXCIuMFwiIHN1ZmZpeCAqKVxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHggfnN1ZmZpeDpcIi4wXCJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHggPSBCeXRlcy5vZl9zdHJpbmcgeCBpblxuICAgICAgICAgIGxldCBuID0gQnl0ZXMubGVuZ3RoIHggaW5cbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDEpICcgJztcbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDIpICcgJztcbiAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOngpXG4gICAgICAgIGVsc2UgeFxuICAgICAgaW5cbiAgICAgIGxldCBjb252IG1hZyB0IGRlbm9taW5hdG9yID1cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAoZGVub21pbmF0b3IgPSAxMDAuICYmIHQgPj0gOTk5Ljk1KVxuICAgICAgICAgIHx8IChkZW5vbWluYXRvciA+PSAxMDBfMDAwLiAmJiB0ID49IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDkuOTk5XzUpKSk7XG4gICAgICAgIGFzc2VydCAodCA8IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDlfOTk5LjUpKTtcbiAgICAgICAgbGV0IGksIGQgPVxuICAgICAgICAgIGxldCBrID0gaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yOnQgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICAgKCogW21vZF0gaXMgb2theSBoZXJlIGJlY2F1c2Ugd2Uga25vdyBpID49IDAuICopXG4gICAgICAgICAgayAvIDEwLCBrIG1vZCAxMFxuICAgICAgICBpblxuICAgICAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgICAgIGFzc2VydCAoMCA8PSBpICYmIGkgPCAxMDAwKTtcbiAgICAgICAgYXNzZXJ0ICgwIDw9IGQgJiYgZCA8IDEwKTtcbiAgICAgICAgaWYgZCA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiJXMlZCVzIFwiIHByZWZpeCBpIG1hZ1xuICAgICAgICBlbHNlIHNwcmludGYgXCIlcyVkJXMlZFwiIHByZWZpeCBpIG1hZyBkXG4gICAgICBpblxuICAgICAgKCogV2hpbGUgdGhlIHN0YW5kYXJkIG1ldHJpYyBwcmVmaXhlcyAoZS5nLiBjYXBpdGFsIFwiTVwiIHJhdGhlciB0aGFuIFwibVwiLCBbMV0pIGFyZVxuICAgICAgICAgbm9taW5hbGx5IG1vcmUgY29ycmVjdCwgdGhpcyBoaW5kZXJzIHJlYWRhYmlsaXR5IGluIG91ciBjYXNlLiAgRS5nLiwgMTBHNiBhbmRcbiAgICAgICAgIDEwNjYgbG9vayB0b28gc2ltaWxhci4gIFRoYXQncyBhbiBleHRyZW1lIGV4YW1wbGUsIGJ1dCBpbiBnZW5lcmFsIGssbSxnLHQscFxuICAgICAgICAgcHJvYmFibHkgc3RhbmQgb3V0IGJldHRlciB0aGFuIEssTSxHLFQsUCB3aGVuIGludGVyc3BlcnNlZCB3aXRoIGRpZ2l0cy5cblxuICAgICAgICAgWzFdIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWV0cmljX3ByZWZpeCAqKVxuICAgICAgKCogVGhlIHRyaWNrIGhlcmUgaXMgdGhhdDpcbiAgICAgICAgIC0gdGhlIGZpcnN0IGJvdW5kYXJ5ICg5OTkuOTUpIGFzIGEgZmxvYXQgaXMgc2xpZ2h0bHkgb3Zlci1yZXByZXNlbnRlZCAoc28gaXQgaXNcbiAgICAgICAgICAgYmV0dGVyIGFwcHJveGltYXRlZCBhcyBcIjFrXCIgdGhhbiBhcyBcIjk5OS45XCIpLFxuICAgICAgICAgLSB0aGUgb3RoZXIgYm91bmRhcmllcyBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYmVjYXVzZSB0aGV5IGFyZSBpbnRlZ2Vycy5cbiAgICAgICAgICAgVGhhdCdzIHdoeSB0aGUgc3RyaWN0IGVxdWFsaXRpZXMgYmVsb3cgZG8gZXhhY3RseSB3aGF0IHdlIHdhbnQuICopXG4gICAgICBpZiB0IDwgOTk5Ljk1RTBcbiAgICAgIHRoZW4gY29udl9vbmUgdFxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTNcbiAgICAgIHRoZW4gY29udiBraWxvIHQgMTAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTZcbiAgICAgIHRoZW4gY29udiBtZWdhIHQgMTAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU5XG4gICAgICB0aGVuIGNvbnYgZ2lnYSB0IDEwMF8wMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTEyXG4gICAgICB0aGVuIGNvbnYgdGVyYSB0IDEwMF8wMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBwZXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdFxuICAgICAgICB8IFNvbWUgcGV0YSAtPlxuICAgICAgICAgIGlmIHQgPCA5OTkuOTVFMTVcbiAgICAgICAgICB0aGVuIGNvbnYgcGV0YSB0IDEwMF8wMDBfMDAwXzAwMF8wMDAuXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHQpXG4gICAgaW5cbiAgICBpZiB0ID49IDAuIHRoZW4gZ28gdCBlbHNlIFwiLVwiIF4gZ28gfi0udFxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyB0ID1cbiAgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0IH5raWxvOlwia1wiIH5tZWdhOlwibVwiIH5naWdhOlwiZ1wiIH50ZXJhOlwidFwiIH5wZXRhOlwicFwiICgpXG47O1xuXG4oKiBQZXJmb3JtYW5jZSBub3RlOiBJbml0aWFsaXppbmcgdGhlIGFjY3VtdWxhdG9yIHRvIDEgcmVzdWx0cyBpbiBvbmUgZXh0cmFcbiAgIG11bHRpcGx5OyBlLmcuLCB0byBjb21wdXRlIHggKiogNCwgd2UgaW4gcHJpbmNpcGxlIG9ubHkgbmVlZCAyIG11bHRpcGxpZXMsXG4gICBidXQgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgMyBtdWx0aXBsaWVzLiAgSG93ZXZlciwgYXR0ZW1wdHMgdG8gYXZvaWQgdGhpc1xuICAgKGxpa2UgZGVjcmVtZW50aW5nIG4gYW5kIGluaXRpYWxpemluZyBhY2N1bSB0byBiZSB4LCBvciBoYW5kbGluZyBzbWFsbFxuICAgZXhwb25lbnRzIGFzIGEgc3BlY2lhbCBjYXNlKSBoYXZlIG5vdCB5aWVsZGVkIGFueXRoaW5nIHRoYXQgaXMgYSBuZXRcbiAgIGltcHJvdmVtZW50LlxuKilcbmxldCBpbnRfcG93IHggbiA9XG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAxLlxuICBlbHNlIChcbiAgICAoKiBVc2luZyBbeCArLiAoLTAuKV0gb24gdGhlIGZvbGxvd2luZyBsaW5lIGNvbnZpbmNlcyB0aGUgY29tcGlsZXIgdG8gYXZvaWQgYSBjZXJ0YWluXG4gICAgICAgYm94aW5nICh0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbGxvY2F0aW9uIGluIGVhY2ggaXRlcmF0aW9uKS4gIFNvb24sIHRoZSBjb21waWxlclxuICAgICAgIHNob3VsZG4ndCBuZWVkIHRoaXMgXCJoaW50XCIgdG8gYXZvaWQgdGhlIGJveGluZy4gIFRoZSByZWFzb24gd2UgYWRkIC0wIHJhdGhlciB0aGFuIDBcbiAgICAgICBpcyB0aGF0IFt4ICsuICgtMC4pXSBpcyBhcHBhcmVudGx5IGFsd2F5cyB0aGUgc2FtZSBhcyBbeF0sIHdoZXJlYXMgW3ggKy4gMC5dIGlzXG4gICAgICAgbm90LCBpbiB0aGF0IGl0IHNlbmRzIFstMC5dIHRvIFswLl0uICBUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBiZWNhdXNlIHdlIHdhbnRcbiAgICAgICBbaW50X3BvdyAoLTAuKSAoLTEpXSB0byByZXR1cm4gbmVnX2luZmluaXR5IGp1c3QgbGlrZSBbLTAuICoqIC0xLl0gd291bGQuICAqKVxuICAgIGxldCB4ID0gcmVmICh4ICsuIC0wLikgaW5cbiAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgbGV0IGFjY3VtID0gcmVmIDEuIGluXG4gICAgaWYgIW4gPCAwXG4gICAgdGhlbiAoXG4gICAgICAoKiB4ICoqIG4gPSAoMS94KSAqKiAtbiAqKVxuICAgICAgeCA6PSAxLiAvLiAheDtcbiAgICAgIG4gOj0gfi0gKCFuKTtcbiAgICAgIGlmICFuIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIG4gbXVzdCBoYXZlIGJlZW4gbWluX2ludCwgc28gaXQgaXMgbm93IHNvIGJpZyB0aGF0IGl0IGhhcyB3cmFwcGVkIGFyb3VuZC5cbiAgICAgICAgICAgV2UgZGVjcmVtZW50IGl0IHNvIHRoYXQgaXQgbG9va3MgcG9zaXRpdmUgYWdhaW4sIGJ1dCBhY2NvcmRpbmdseSBoYXZlXG4gICAgICAgICAgIHRvIHB1dCBhbiBleHRyYSBmYWN0b3Igb2YgeCBpbiB0aGUgYWNjdW11bGF0b3IuXG4gICAgICAgICopXG4gICAgICAgIGFjY3VtIDo9ICF4O1xuICAgICAgICBkZWNyIG4pKTtcbiAgICAoKiBMZXR0aW5nIFthXSBkZW5vdGUgKHRoZSBvcmlnaW5hbCB2YWx1ZSBvZikgW3ggKiogbl0sIHdlIG1haW50YWluXG4gICAgICAgdGhlIGludmFyaWFudCB0aGF0IFsoeCAqKiBuKSAqLiBhY2N1bSA9IGFdLiAqKVxuICAgIHdoaWxlICFuID4gMSBkb1xuICAgICAgaWYgIW4gbGFuZCAxIDw+IDAgdGhlbiBhY2N1bSA6PSAheCAqLiAhYWNjdW07XG4gICAgICB4IDo9ICF4ICouICF4O1xuICAgICAgbiA6PSAhbiBsc3IgMVxuICAgIGRvbmU7XG4gICAgKCogbiBpcyBuZWNlc3NhcmlseSAxIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsXG4gICAgICAgbXVsdGlwbGljYXRpb24gYnkgeC4gKilcbiAgICAheCAqLiAhYWNjdW0pXG47O1xuXG5sZXQgcm91bmRfZ2VuIHggfmhvdyA9XG4gIGlmIHggPSAwLlxuICB0aGVuIDAuXG4gIGVsc2UgaWYgbm90IChpc19maW5pdGUgeClcbiAgdGhlbiB4XG4gIGVsc2UgKFxuICAgICgqIFNpZ25pZmljYW50IGRpZ2l0cyBhbmQgZGVjaW1hbCBkaWdpdHMuICopXG4gICAgbGV0IHNkLCBkZCA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgc2lnbmlmaWNhbnRfZGlnaXRzIHNkIC0+XG4gICAgICAgIGxldCBkZCA9IHNkIC0gdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgICAgfCBgZGVjaW1hbF9kaWdpdHMgZGQgLT5cbiAgICAgICAgbGV0IHNkID0gZGQgKyB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgc2QgPCAwXG4gICAgdGhlbiAwLlxuICAgIGVsc2UgaWYgc2QgPj0gMTdcbiAgICB0aGVuIHhcbiAgICBlbHNlIChcbiAgICAgICgqIENob29zZSB0aGUgb3JkZXIgdGhhdCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdC4gU21hbGwgcG9zaXRpdmVcbiAgICAgICAgIGludGVnZXJzIGFyZSwgYnV0IHRoZWlyIGludmVyc2VzIGluIG1vc3QgY2FzZXMgYXJlIG5vdC4gKilcbiAgICAgIGxldCBhYnNfZGQgPSBJbnQuYWJzIGRkIGluXG4gICAgICBpZiBhYnNfZGQgPiAyMiB8fCBzZCA+PSAxNlxuICAgICAgKCogMTAqKjIyIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBidXQgMTAqKjIzIGlzIG5vdCwgc28gdXNlIHRoZSBzbG93XG4gICAgICAgICBwYXRoLiAgU2ltaWxhcmx5LCBpZiB3ZSBuZWVkIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpbiB0aGUgcmVzdWx0LCB0aGVuIHRoZSBpbnRlZ2VyXG4gICAgICAgICBbcm91bmRfbmVhcmVzdCAoeCA8b3A+IG9yZGVyKV0gbWlnaHQgbm90IGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBzaW5jZVxuICAgICAgICAgZm9yIHNvbWUgcmFuZ2VzIHdlIG9ubHkgaGF2ZSAxNSBkaWdpdHMgb2YgcHJlY2lzaW9uIGd1YXJhbnRlZWQuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgd2UgYXJlIHN0aWxsIHJvdW5kaW5nIHR3aWNlIGhlcmU6XG5cbiAgICAgICAgIDEpIGZpcnN0IHRpbWUgd2hlbiByb3VuZGluZyBbeCAqLiBvcmRlcl0gb3IgW3ggLy4gb3JkZXJdIHRvIHRoZSBuZWFyZXN0IGZsb2F0XG4gICAgICAgICAoanVzdCB0aGUgbm9ybWFsIHdheSBmbG9hdGluZy1wb2ludCBtdWx0aXBsaWNhdGlvbiBvciBkaXZpc2lvbiB3b3JrcyksXG5cbiAgICAgICAgIDIpIHNlY29uZCB0aW1lIHdoZW4gYXBwbHlpbmcgW3JvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuXSB0byB0aGUgcmVzdWx0IG9mIHRoZVxuICAgICAgICAgYWJvdmUgb3BlcmF0aW9uXG5cbiAgICAgICAgIFNvIGZvciBhcmd1bWVudHMgd2l0aGluIGFuIHVscCBmcm9tIGEgdGllIHdlIG1pZ2h0IHN0aWxsIHByb2R1Y2UgYW4gb2ZmLWJ5LW9uZVxuICAgICAgICAgcmVzdWx0LiAqKVxuICAgICAgdGhlbiBvZl9zdHJpbmcgKHNwcmludGYgXCIlLipnXCIgc2QgeClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3JkZXIgPSBpbnRfcG93IDEwLiBhYnNfZGQgaW5cbiAgICAgICAgaWYgZGQgPj0gMFxuICAgICAgICB0aGVuIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4ICouIG9yZGVyKSAvLiBvcmRlclxuICAgICAgICBlbHNlIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4IC8uIG9yZGVyKSAqLiBvcmRlcikpKVxuOztcblxubGV0IHJvdW5kX3NpZ25pZmljYW50IHggfnNpZ25pZmljYW50X2RpZ2l0cyA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIHNpZ25pZmljYW50X2RpZ2l0cyAwXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQucm91bmRfc2lnbmlmaWNhbnQ6IGludmFsaWQgYXJndW1lbnQgc2lnbmlmaWNhbnRfZGlnaXRzOiVkXCJcbiAgICAgIHNpZ25pZmljYW50X2RpZ2l0c1xuICAgICAgKClcbiAgZWxzZSByb3VuZF9nZW4geCB+aG93Oihgc2lnbmlmaWNhbnRfZGlnaXRzIHNpZ25pZmljYW50X2RpZ2l0cylcbjs7XG5cbmxldCByb3VuZF9kZWNpbWFsIHggfmRlY2ltYWxfZGlnaXRzID0gcm91bmRfZ2VuIHggfmhvdzooYGRlY2ltYWxfZGlnaXRzIGRlY2ltYWxfZGlnaXRzKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAoKiBjbGFtcF91bmNoZWNrZWQgaXMgaW4gZmxvYXQwLm1sICopXG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgaWYgbWluIDw9IG1heFxuICB0aGVuIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIGVsc2VcbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG47O1xuXG5sZXQgKCArICkgPSAoICsuIClcbmxldCAoIC0gKSA9ICggLS4gKVxubGV0ICggKiApID0gKCAqLiApXG5sZXQgKCAqKiApID0gKCAqKiApXG5sZXQgKCAvICkgPSAoIC8uIClcbmxldCAoICUgKSA9ICggJS4gKVxubGV0ICggfi0gKSA9ICggfi0uIClcblxubGV0IHNpZ25fZXhuIHQgOiBTaWduLnQgPVxuICBpZiB0ID4gMC5cbiAgdGhlbiBQb3NcbiAgZWxzZSBpZiB0IDwgMC5cbiAgdGhlbiBOZWdcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiBaZXJvXG4gIGVsc2UgRXJyb3IucmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiRmxvYXQuc2lnbl9leG4gb2YgTkFOXCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IHNpZ25fb3JfbmFuIHQgOiBTaWduX29yX25hbi50ID1cbiAgaWYgdCA+IDAuIHRoZW4gUG9zIGVsc2UgaWYgdCA8IDAuIHRoZW4gTmVnIGVsc2UgaWYgdCA9IDAuIHRoZW4gWmVybyBlbHNlIE5hblxuOztcblxubGV0IGllZWVfbmVnYXRpdmUgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBQb2x5LihiaXRzIDwgU3RkbGliLkludDY0Lnplcm8pXG47O1xuXG5sZXQgZXhwb25lbnRfYml0cyA9IDExXG5sZXQgbWFudGlzc2FfYml0cyA9IDUyXG5sZXQgZXhwb25lbnRfbWFzazY0ID0gSW50NjQuKHNoaWZ0X2xlZnQgb25lIGV4cG9uZW50X2JpdHMgLSBvbmUpXG5sZXQgZXhwb25lbnRfbWFzayA9IEludDY0LnRvX2ludF9leG4gZXhwb25lbnRfbWFzazY0XG5sZXQgbWFudGlzc2FfbWFzayA9IEludDYzLihzaGlmdF9sZWZ0IG9uZSBtYW50aXNzYV9iaXRzIC0gb25lKVxubGV0IG1hbnRpc3NhX21hc2s2NCA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhX21hc2tcblxubGV0IGllZWVfZXhwb25lbnQgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBJbnQ2NC4oYml0X2FuZCAoc2hpZnRfcmlnaHRfbG9naWNhbCBiaXRzIG1hbnRpc3NhX2JpdHMpIGV4cG9uZW50X21hc2s2NClcbiAgfD4gU3RkbGliLkludDY0LnRvX2ludFxuOztcblxubGV0IGllZWVfbWFudGlzc2EgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICAoKiBUaGlzIGlzIHNhZmUgYmVjYXVzZSBtYW50aXNzYV9tYXNrNjQgPCBJbnQ2My5tYXhfdmFsdWUgKilcbiAgKEludDYzLm9mX2ludDY0X3RydW5jKSBTdGRsaWIuSW50NjQuKGxvZ2FuZCBiaXRzIG1hbnRpc3NhX21hc2s2NClcbjs7XG5cbmxldCBjcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBpZiBJbnQuKGJpdF9hbmQgZXhwb25lbnQgZXhwb25lbnRfbWFzayA8PiBleHBvbmVudClcbiAgdGhlbiBmYWlsd2l0aGYgXCJleHBvbmVudCAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIGV4cG9uZW50IGV4cG9uZW50X21hc2sgKClcbiAgZWxzZSBpZiBJbnQ2My4oYml0X2FuZCBtYW50aXNzYSBtYW50aXNzYV9tYXNrIDw+IG1hbnRpc3NhKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIm1hbnRpc3NhICVzIG91dCBvZiByYW5nZSBbMCwgJXNdXCJcbiAgICAgIChJbnQ2My50b19zdHJpbmcgbWFudGlzc2EpXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhX21hc2spXG4gICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgc2lnbl9iaXRzID0gaWYgbmVnYXRpdmUgdGhlbiBTdGRsaWIuSW50NjQubWluX2ludCBlbHNlIFN0ZGxpYi5JbnQ2NC56ZXJvIGluXG4gICAgbGV0IGV4cHRfYml0cyA9XG4gICAgICBTdGRsaWIuSW50NjQuc2hpZnRfbGVmdCAoU3RkbGliLkludDY0Lm9mX2ludCBleHBvbmVudCkgbWFudGlzc2FfYml0c1xuICAgIGluXG4gICAgbGV0IG1hbnRfYml0cyA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhIGluXG4gICAgbGV0IGJpdHMgPSBTdGRsaWIuSW50NjQuKGxvZ29yIHNpZ25fYml0cyAobG9nb3IgZXhwdF9iaXRzIG1hbnRfYml0cykpIGluXG4gICAgU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgYml0cylcbjs7XG5cbmxldCBjcmVhdGVfaWVlZSB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSA9XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhKVxuOztcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdG9fc3RyaW5nIHggPSBQcmludGYuc3ByaW50ZiBcIiUuOEdcIiB4XG4gIGxldCBzZXhwX29mX3QgeCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX3N0cmluZyB4XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBUaGVzZSBhcmUgcGFydGx5IGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRvIGF2b2lkIHNvbWUgYm94aW5nIHdlJ3JlIGdldHRpbmcgd2l0aFxuICAgdGhlIHZlcnNpb25zIHdlIGdldCBmcm9tIFtXaXRoX3plcm9dLiAgVGhleSBhbHNvIG1ha2UgW0Zsb2F0LmlzX25lZ2F0aXZlIG5hbl0gYW5kXG4gICBbRmxvYXQuaXNfbm9uX3Bvc2l0aXZlIG5hbl0gcmV0dXJuIFtmYWxzZV07IHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXSByZXR1cm5cbiAgIFt0cnVlXS4gKilcbmxldCBpc19wb3NpdGl2ZSB0ID0gdCA+IDAuXG5sZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSB0ID49IDAuXG5sZXQgaXNfbmVnYXRpdmUgdCA9IHQgPCAwLlxubGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gdCA8PSAwLlxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5GbG9hdFwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoICUgKSA9ICggJSApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50ID0gb2ZfaW50XG4gIGxldCBvZl9mbG9hdCB4ID0geFxuZW5kXG5cbm1vZHVsZSBPX2RvdCA9IHN0cnVjdFxuICBsZXQgKCAqLiApID0gKCAqIClcbiAgbGV0ICggKy4gKSA9ICggKyApXG4gIGxldCAoIC0uICkgPSAoIC0gKVxuICBsZXQgKCAvLiApID0gKCAvIClcbiAgbGV0ICggJS4gKSA9ICggJSApXG4gIGxldCAoIH4tLiApID0gKCB+LSApXG4gIGxldCAoICoqLiApID0gKCAqKiApXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJveCA9IGJveFxuICBsZXQgY2xhbXBfdW5jaGVja2VkID0gY2xhbXBfdW5jaGVja2VkXG4gIGxldCBsb3dlcl9ib3VuZF9mb3JfaW50ID0gbG93ZXJfYm91bmRfZm9yX2ludFxuICBsZXQgdXBwZXJfYm91bmRfZm9yX2ludCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHNwZWNpYWxpemVkX2hhc2ggPSBoYXNoX2Zsb2F0XG4gIGxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICBsZXQgaXJvdW5kX25lYXJlc3RfZXhuXzY0ID0gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IHJlcGxhY2UgZGVmYXVsdHMgaW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLlxuXG4gICBUaGUgZGVzaXJlZCBiZWhhdmlvciBoZXJlIGlzIHRvIHByb3BhZ2F0ZSBhIG5hbiBpZiBlaXRoZXIgYXJndW1lbnQgaXMgbmFuLiBCZWNhdXNlIHRoZVxuICAgZmlyc3QgY29tcGFyaXNvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbiwgaXQgc3VmZmljZXMgdG9cbiAgIGNoZWNrIGlmIHggaXMgbmFuLiBUaGVuLCB3aGVuIHggaXMgbmFuIG9yIGJvdGggeCBhbmQgeSBhcmUgbmFuLCB3ZSByZXR1cm4geCA9IG5hbjsgYW5kXG4gICB3aGVuIHkgaXMgbmFuIGJ1dCBub3QgeCwgd2UgcmV0dXJuIHkgPSBuYW4uXG5cbiAgIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucy4gIFRoZSBiZW5jaG1hcmsgYmVsb3cgc2hvd3MgYSBmZXdcbiAgIGRpZmZlcmVudCB2ZXJzaW9ucy4gIFRoaXMgYmVuY2htYXJrIHdhcyBydW4gb3ZlciBhbiBhcnJheSBvZiByYW5kb20gZmxvYXRzIChub25lIG9mXG4gICB3aGljaCBhcmUgbmFuKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuNDJ1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDIuMDJ1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuODh1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuXG4gICBUaGUgYmVuY2htYXJrIGJlbG93IHdhcyBydW4gd2hlbiB4ID4geSBpcyBhbHdheXMgdHJ1ZSAoYWdhaW4sIG5vIG5hbiB2YWx1ZXMpLlxuXG4gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBUaW1lL1J1biDilIJcbiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAg4pSCIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHkg4pSCICAgMi44M3VzIOKUglxuICAg4pSCIGlmIGlzX25hbiB4IHx8IHggPCB5IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS45N3VzIOKUglxuICAg4pSCIGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS41NnVzIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4qKVxubGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5sZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCdWZmZXJfaW50ZlxuaW5jbHVkZSBTdGRsaWIuQnVmZmVyXG5cbmxldCBjb250ZW50c19ieXRlcyA9IHRvX2J5dGVzXG5sZXQgYWRkX3N1YnN0cmluZyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YnN0cmluZyB0IHMgcG9zIGxlblxubGV0IGFkZF9zdWJieXRlcyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YmJ5dGVzIHQgcyBwb3MgbGVuXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3N0cmluZyAoY29udGVudHMgdClcblxubGV0IGNhbWxfYnVmZmVyX2xlbmd0aCA9XG4gIChTdGRsaWIuT2JqLm1hZ2ljIChTdGRsaWIuQnVmZmVyLmxlbmd0aCA6IHQgLT4gaW50KSA6ICh0W0Bsb2NhbF0pIC0+IGludClcbjs7XG5cbmxldCBjYW1sX2J1ZmZlcl9ibGl0ID1cbiAgKFN0ZGxpYi5PYmoubWFnaWNcbiAgICAgKFN0ZGxpYi5CdWZmZXIuYmxpdCA6IFN0ZGxpYi5CdWZmZXIudCAtPiBpbnQgLT4gQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQpXG4gICA6IChTdGRsaWIuQnVmZmVyLnRbQGxvY2FsXSkgLT4gaW50IC0+IChCeXRlcy50W0Bsb2NhbF0pIC0+IGludCAtPiBpbnQgLT4gdW5pdClcbjs7XG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBsZW5ndGggPSBjYW1sX2J1ZmZlcl9sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgICAgIGNhbWxfYnVmZmVyX2JsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFN0ZGxpYi5CdWZmZXIpIChUb19ieXRlcylcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN5cyA9IFN5czBcblxudHlwZSB0ID0gU3RkbGliLlByaW50ZXhjLnJhd19iYWNrdHJhY2VcblxubGV0IGVsaWRlID0gcmVmIGZhbHNlXG5sZXQgZWxpZGVkX21lc3NhZ2UgPSBcIjxiYWNrdHJhY2UgZWxpZGVkIGluIHRlc3Q+XCJcblxubGV0IGdldCA/KGF0X21vc3RfbnVtX2ZyYW1lcyA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgU3RkbGliLlByaW50ZXhjLmdldF9jYWxsc3RhY2sgYXRfbW9zdF9udW1fZnJhbWVzXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBpZiAhZWxpZGUgdGhlbiBlbGlkZWRfbWVzc2FnZSBlbHNlIFN0ZGxpYi5QcmludGV4Yy5yYXdfYmFja3RyYWNlX3RvX3N0cmluZyB0XG47O1xuXG5sZXQgdG9fc3RyaW5nX2xpc3QgdCA9IFN0cmluZy5zcGxpdF9saW5lcyAodG9fc3RyaW5nIHQpXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkxpc3QgKExpc3QubWFwICh0b19zdHJpbmdfbGlzdCB0KSB+ZjooZnVuIHggLT4gU2V4cC5BdG9tIHgpKVxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBzZXRfcmVjb3JkaW5nID0gU3RkbGliLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbiAgbGV0IGFtX3JlY29yZGluZyA9IFN0ZGxpYi5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4gIGxldCBtb3N0X3JlY2VudCAoKSA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKVxuXG4gIGxldCBtb3N0X3JlY2VudF9mb3JfZXhuIGV4biA9XG4gICAgaWYgRXhuLmlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuIHRoZW4gU29tZSAobW9zdF9yZWNlbnQgKCkpIGVsc2UgTm9uZVxuICA7O1xuXG4gICgqIFdlIHR1cm4gb24gYmFja3RyYWNlcyBieSBkZWZhdWx0IGlmIE9DQU1MUlVOUEFSQU0gZG9lc24ndCBleHBsaWNpdGx5IG1lbnRpb24gdGhlbS4gKilcbiAgbGV0IG1heWJlX3NldF9yZWNvcmRpbmcgKCkgPVxuICAgIGxldCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgPVxuICAgICAgbWF0Y2ggU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSB4IC0+IExpc3QuZXhpc3RzIChTdHJpbmcuc3BsaXQgeCB+b246JywnKSB+ZjooU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4OlwiYlwiKVxuICAgIGluXG4gICAgaWYgbm90IG9jYW1scnVucGFyYW1fbWVudGlvbnNfYmFja3RyYWNlcyB0aGVuIHNldF9yZWNvcmRpbmcgdHJ1ZVxuICA7O1xuXG4gICgqIHRoZSBjYWxsZXIgc2V0IHNvbWV0aGluZywgdGhleSBhcmUgcmVzcG9uc2libGUgKilcblxuICBsZXQgd2l0aF9yZWNvcmRpbmcgYiB+ZiA9XG4gICAgbGV0IHNhdmVkID0gYW1fcmVjb3JkaW5nICgpIGluXG4gICAgc2V0X3JlY29yZGluZyBiO1xuICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gc2V0X3JlY29yZGluZyBzYXZlZClcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBFeG4ubWF5YmVfc2V0X3JlY29yZGluZyAoKVxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIHRoZSB0b3BsZXZlbCBvZiB0aGUgQmFzZSBsaWJyYXJ5OyBpdCdzIHdoYXQgeW91IGdldCB3aGVuIHlvdSB3cml0ZVxuICAgIFtvcGVuIEJhc2VdLlxuXG4gICAgVGhlIGdvYWwgb2YgQmFzZSBpcyBib3RoIHRvIGJlIGEgbW9yZSBjb21wbGV0ZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIHJpY2hlciBBUElzLFxuICAgIGFuZCB0byBiZSBtb3JlIGNvbnNpc3RlbnQgaW4gaXRzIGRlc2lnbi4gRm9yIGluc3RhbmNlLCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeVxuICAgIHNvbWUgdGhpbmdzIGhhdmUgbW9kdWxlcyBhbmQgb3RoZXJzIGRvbid0OyBpbiBCYXNlLCBldmVyeXRoaW5nIGlzIGEgbW9kdWxlLlxuXG4gICAgQmFzZSBleHRlbmRzIHNvbWUgbW9kdWxlcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIGxpa2UgW0FycmF5XSxcbiAgICBbQnVmZmVyXSwgW0J5dGVzXSwgW0NoYXJdLCBbSGFzaHRibF0sIFtJbnQzMl0sIFtJbnQ2NF0sIFtMYXp5XSwgW0xpc3RdLCBbTWFwXSxcbiAgICBbTmF0aXZlaW50XSwgW1ByaW50Zl0sIFtSYW5kb21dLCBbU2V0XSwgW1N0cmluZ10sIFtTeXNdLCBhbmQgW1VjaGFyXS4gT25lIGtleVxuICAgIGRpZmZlcmVuY2UgaXMgdGhhdCBCYXNlIGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMgYXMgbXVjaCBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeSBhbmRcbiAgICBpbnN0ZWFkIG1ha2VzIGhlYXZ5IHVzZSBvZiB0aGUgW1Jlc3VsdF0gdHlwZSwgYXMgaW46XG5cbiAgICB7WyB0eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYiBdfVxuXG4gICAgQmFzZSBhbHNvIGFkZHMgZW50aXJlbHkgbmV3IG1vZHVsZXMsIG1vc3Qgbm90YWJseTpcblxuICAgIC0gW0NvbXBhcmFibGVdLCBbQ29tcGFyYXRvcl0sIGFuZCBbQ29tcGFyaXNvbnNdIGluIGxpZXUgb2YgcG9seW1vcnBoaWMgY29tcGFyZS5cbiAgICAtIFtDb250YWluZXJdLCB3aGljaCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGFjcm9zcyBjb250YWluZXItbGlrZSBkYXRhXG4gICAgICBzdHJ1Y3R1cmVzIChhcnJheXMsIGxpc3RzLCBzdHJpbmdzKS5cbiAgICAtIFtSZXN1bHRdLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSwgc3VwcG9ydGluZyB0aGUgb3ItZXJyb3IgcGF0dGVybi5cbiopXG5cbigqXyBXZSBoaWRlIHRoaXMgZnJvbSB0aGUgd2ViIGRvY3MgYmVjYXVzZSB0aGUgbGluZSB3cmFwcGluZyBpcyBiYWQsIG1ha2luZyBpdFxuICBwcmV0dHkgbXVjaCBpbnNjcnV0YWJsZS4gKilcbigqKi8qKilcblxuKCogVGhlIGludGVudCBpcyB0byBzaGFkb3cgYWxsIG9mIElOUklBJ3Mgc3RhbmRhcmQgbGlicmFyeS4gIE1vZHVsZXMgYmVsb3cgd291bGQgY2F1c2VcbiAgIGNvbXBpbGF0aW9uIGVycm9ycyB3aXRob3V0IGJlaW5nIHJlbW92ZWQgZnJvbSBbU2hhZG93X3N0ZGxpYl0gYmVmb3JlIGluY2x1c2lvbi4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgKCogTW9kdWxlcyBkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW5fY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLkluX2NoYW5uZWxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBPdXRfY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLk91dF9jaGFubmVsXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0XG4gICgqIFN1cHBvcnQgZm9yIGdlbmVyYXRlZCBsZXhlcnMgKilcbiAgd2l0aCBtb2R1bGUgTGV4aW5nIDo9IFNoYWRvd19zdGRsaWIuTGV4aW5nXG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0IDo9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA6PSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmKVxuICBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiovKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmluYXJ5X3NlYXJjaFxubW9kdWxlIEJpbmFyeV9zZWFyY2hhYmxlID0gQmluYXJ5X3NlYXJjaGFibGVcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQnVmZmVyID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcXVhbCA9IEVxdWFsXG5tb2R1bGUgRXJyb3IgPSBFcnJvclxubW9kdWxlIEV4biA9IEV4blxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGbG9hdCA9IEZsb2F0XG5tb2R1bGUgRmxvYXRhYmxlID0gRmxvYXRhYmxlXG5tb2R1bGUgRm4gPSBGblxubW9kdWxlIEZvcm1hdHRlciA9IEZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVcbm1vZHVsZSBIYXNoZXIgPSBIYXNoZXJcbm1vZHVsZSBIYXNodGJsID0gSGFzaHRibFxubW9kdWxlIElkZW50aWZpYWJsZSA9IElkZW50aWZpYWJsZVxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludGFibGUgPSBJbnRhYmxlXG5tb2R1bGUgSW50X21hdGggPSBJbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE5hdGl2ZWludCA9IE5hdGl2ZWludFxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvclxubW9kdWxlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24gPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5tb2R1bGUgT3JkZXJpbmcgPSBPcmRlcmluZ1xubW9kdWxlIFBvbHkgPSBQb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IFBvcGNvdW50XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiB0aGUgaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIExpbmtlZF9xdWV1ZSA9IExpbmtlZF9xdWV1ZVxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBSYW5kb20gPSBSYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBTeXNcbm1vZHVsZSBUID0gVFxubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IFVuaWZvcm1fYXJyYXlcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxuKCogQXZvaWQgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiBmb3IgdXNlcyBvZiB0aGUgc2lnbmF0dXJlcyBkZWZpbmVkIGluIFtUXS4gKilcbmluY2x1ZGUgVFxuXG4oKiBUaGlzIGlzIGEgaGFjayBzbyB0aGF0IG9kb2MgY3JlYXRlcyBiZXR0ZXIgZG9jdW1lbnRhdGlvbi4gKilcbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cF93aXRoX2NvbXBhcmFibGUgKCoqIEBpbmxpbmUgKilcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcyA9IHN0cnVjdFxuICBtb2R1bGUgRmllbGRzbGliID0gRmllbGRzbGliXG4gIG1vZHVsZSBHbG9iYWxpemUgPSBHbG9iYWxpemVcbiAgbW9kdWxlIE9ial9sb2NhbCA9IE9ial9sb2NhbFxuICBtb2R1bGUgUHB4X2NvbXBhcmVfbGliID0gUHB4X2NvbXBhcmVfbGliXG4gIG1vZHVsZSBQcHhfZW51bWVyYXRlX2xpYiA9IFBweF9lbnVtZXJhdGVfbGliXG4gIG1vZHVsZSBQcHhfaGFzaF9saWIgPSBQcHhfaGFzaF9saWJcbiAgbW9kdWxlIFZhcmlhbnRzbGliID0gVmFyaWFudHNsaWJcblxuICBsZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmdcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCogW2Rlcml2aW5nIGhhc2hdIGlzIG1pc3NpbmcgZm9yIFthcnJheV0gYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZSBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+IGludCA9IEFycmF5LmNvbXBhcmVcbiAgbGV0IGVxdWFsX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBib29sID0gQXJyYXkuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX2FycmF5IDpcbiAgICAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIGFycmF5W0BvY2FtbC5sb2NhbF0pIC0+ICdhIGFycmF5XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfKVxuICAgICAgICA6ICAoKChhX18wMDlfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwOV8pIC0+IChhX18wMDlfIGFycmF5W0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18wMDlfIGFycmF5KSAtPlxuICAgICAgQXJyYXkuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGFycmF5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGFycmF5ID1cbiAgICBBcnJheS50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9hcnJheSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIEFycmF5LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBhcnJheV9zZXhwX2dyYW1tYXIgOlxuICAgICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBhcnJheSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBBcnJheS50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ib29sID0gKEJvb2wuY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQpXG4gIGxldCBlcXVhbF9ib29sID0gKEJvb2wuZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9ib29sIDogKGJvb2xbQG9jYW1sLmxvY2FsXSkgLT4gYm9vbCkgPVxuICAgIChCb29sLmdsb2JhbGl6ZSA6IChib29sW0BvY2FtbC5sb2NhbF0pIC0+IGJvb2wpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfYm9vbCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEJvb2wuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfYm9vbCA6IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEJvb2wuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBib29sX29mX3NleHAgPSAoQm9vbC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYm9vbClcbiAgbGV0IHNleHBfb2ZfYm9vbCA9IChCb29sLnNleHBfb2ZfdCA6IGJvb2wgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCb29sLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9jaGFyID0gKENoYXIuY29tcGFyZSA6IGNoYXIgLT4gY2hhciAtPiBpbnQpXG4gIGxldCBlcXVhbF9jaGFyID0gKENoYXIuZXF1YWwgOiBjaGFyIC0+IGNoYXIgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9jaGFyIDogKGNoYXJbQG9jYW1sLmxvY2FsXSkgLT4gY2hhcikgPVxuICAgIChDaGFyLmdsb2JhbGl6ZSA6IChjaGFyW0BvY2FtbC5sb2NhbF0pIC0+IGNoYXIpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfY2hhciA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIENoYXIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfY2hhciA6IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IENoYXIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBjaGFyX29mX3NleHAgPSAoQ2hhci50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gY2hhcilcbiAgbGV0IHNleHBfb2ZfY2hhciA9IChDaGFyLnNleHBfb2ZfdCA6IGNoYXIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBDaGFyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGV4biA9IEV4bi50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX2V4biA9IChFeG4uc2V4cF9vZl90IDogZXhuIC0+IFNleHBsaWIwLlNleHAudClcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfZmxvYXQgPSAoRmxvYXQuY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludClcbiAgbGV0IGVxdWFsX2Zsb2F0ID0gKEZsb2F0LmVxdWFsIDogZmxvYXQgLT4gZmxvYXQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9mbG9hdCA6IChmbG9hdFtAb2NhbWwubG9jYWxdKSAtPiBmbG9hdCkgPVxuICAgIChGbG9hdC5nbG9iYWxpemUgOiAoZmxvYXRbQG9jYW1sLmxvY2FsXSkgLT4gZmxvYXQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfZmxvYXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgRmxvYXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gRmxvYXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBmbG9hdF9vZl9zZXhwID0gKEZsb2F0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBmbG9hdClcbiAgbGV0IHNleHBfb2ZfZmxvYXQgPSAoRmxvYXQuc2V4cF9vZl90IDogZmxvYXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludCA9IEludC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50ID0gKEludC5jb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQgPSAoSW50LmVxdWFsIDogaW50IC0+IGludCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2ludCA6IChpbnRbQG9jYW1sLmxvY2FsXSkgLT4gaW50KSA9XG4gICAgKEludC5nbG9iYWxpemUgOiAoaW50W0BvY2FtbC5sb2NhbF0pIC0+IGludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIEludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQgOiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludF9vZl9zZXhwID0gKEludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50KVxuICBsZXQgc2V4cF9vZl9pbnQgPSAoSW50LnNleHBfb2ZfdCA6IGludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50MzIgPSAoSW50MzIuY29tcGFyZSA6IGludDMyIC0+IGludDMyIC0+IGludClcbiAgbGV0IGVxdWFsX2ludDMyID0gKEludDMyLmVxdWFsIDogaW50MzIgLT4gaW50MzIgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9pbnQzMiA6IChpbnQzMltAb2NhbWwubG9jYWxdKSAtPiBpbnQzMikgPVxuICAgIChJbnQzMi5nbG9iYWxpemUgOiAoaW50MzJbQG9jYW1sLmxvY2FsXSkgLT4gaW50MzIpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50MzIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50MzIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50MzIgOiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50MzIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQzMl9vZl9zZXhwID0gKEludDMyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQzMilcbiAgbGV0IHNleHBfb2ZfaW50MzIgPSAoSW50MzIuc2V4cF9vZl90IDogaW50MzIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDMyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDY0ID0gKEludDY0LmNvbXBhcmUgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQ2NCA9IChJbnQ2NC5lcXVhbCA6IGludDY0IC0+IGludDY0IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfaW50NjQgOiAoaW50NjRbQG9jYW1sLmxvY2FsXSkgLT4gaW50NjQpID1cbiAgICAoSW50NjQuZ2xvYmFsaXplIDogKGludDY0W0BvY2FtbC5sb2NhbF0pIC0+IGludDY0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2ludDY0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDY0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDY0IDogaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDY0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50NjRfb2Zfc2V4cCA9IChJbnQ2NC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50NjQpXG4gIGxldCBzZXhwX29mX2ludDY0ID0gKEludDY0LnNleHBfb2ZfdCA6IGludDY0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQ2NC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gaW50ID0gTGlzdC5jb21wYXJlXG4gIGxldCBlcXVhbF9saXN0IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gYm9vbCA9IExpc3QuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX2xpc3QgOlxuICAgICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgbGlzdFtAb2NhbWwubG9jYWxdKSAtPiAnYSBsaXN0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNjJfKVxuICAgICAgICA6ICAoKChhX18wNjJfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzA2Ml8pIC0+IChhX18wNjJfIGxpc3RbQG9jYW1sLmxvY2FsXSlcbiAgICAgICAgICAgIC0+IGFfXzA2Ml8gbGlzdCkgLT5cbiAgICAgIExpc3QuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBsaXN0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIExpc3QuaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgbGlzdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBsaXN0ID1cbiAgICBMaXN0LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2xpc3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgbGlzdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIExpc3Quc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGxpc3Rfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgbGlzdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBMaXN0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmNvbXBhcmUgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGludClcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA9IChOYXRpdmVpbnQuZXF1YWwgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfbmF0aXZlaW50IDogKG5hdGl2ZWludFtAb2NhbWwubG9jYWxdKSAtPiBuYXRpdmVpbnQpID1cbiAgICAoTmF0aXZlaW50Lmdsb2JhbGl6ZSA6IChuYXRpdmVpbnRbQG9jYW1sLmxvY2FsXSkgLT4gbmF0aXZlaW50KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX25hdGl2ZWludCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gTmF0aXZlaW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgbmF0aXZlaW50X29mX3NleHAgPSAoTmF0aXZlaW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBuYXRpdmVpbnQpXG4gIGxldCBzZXhwX29mX25hdGl2ZWludCA9IChOYXRpdmVpbnQuc2V4cF9vZl90IDogbmF0aXZlaW50IC0+IFNleHBsaWIwLlNleHAudClcblxuICBsZXQgKG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBOYXRpdmVpbnQudF9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2Egb3B0aW9uID0gJ2EgT3B0aW9uLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBpbnQgPVxuICAgIE9wdGlvbi5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBib29sID1cbiAgICBPcHRpb24uZXF1YWxcbiAgOztcblxuICBsZXQgZ2xvYmFsaXplX29wdGlvbiA6XG4gICAgJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSBvcHRpb25bQG9jYW1sLmxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wODVfKVxuICAgICAgICA6ICAoKChhX18wODVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzA4NV8pIC0+IChhX18wODVfIG9wdGlvbltAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMDg1XyBvcHRpb24pIC0+XG4gICAgICBPcHRpb24uZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIG9wdGlvblxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBPcHRpb24uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgb3B0aW9uX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIG9wdGlvbiA9XG4gICAgT3B0aW9uLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX29wdGlvbiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBvcHRpb24gLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBPcHRpb24uc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgOlxuICAgICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBvcHRpb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gT3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9yZWYgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBpbnQgPSBSZWYuY29tcGFyZVxuICBsZXQgZXF1YWxfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSByZWYgLT4gJ2EgcmVmIC0+IGJvb2wgPSBSZWYuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX3JlZiA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgcmVmW0BvY2FtbC5sb2NhbF0pIC0+ICdhIHJlZiA9XG4gICAgZnVuICh0eXBlIGFfXzEwMl8pXG4gICAgICAgIDogICgoKGFfXzEwMl9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMTAyXykgLT4gKGFfXzEwMl8gcmVmW0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18xMDJfIHJlZikgLT5cbiAgICAgIFJlZi5nbG9iYWxpemVcbiAgOztcblxuICBsZXQgcmVmX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHJlZiA9XG4gICAgUmVmLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3JlZiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSByZWYgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBSZWYuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IHJlZl9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgcmVmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBSZWYudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBzdHJpbmcgPSBTdHJpbmcudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3N0cmluZyA9IChTdHJpbmcuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICBsZXQgZXF1YWxfc3RyaW5nID0gKFN0cmluZy5lcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9zdHJpbmcgOiAoc3RyaW5nW0BvY2FtbC5sb2NhbF0pIC0+IHN0cmluZykgPVxuICAgIChTdHJpbmcuZ2xvYmFsaXplIDogKHN0cmluZ1tAb2NhbWwubG9jYWxdKSAtPiBzdHJpbmcpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfc3RyaW5nIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzdHJpbmcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBTdHJpbmcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfc3RyaW5nIDogc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBTdHJpbmcuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzdHJpbmdfb2Zfc2V4cCA9IChTdHJpbmcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHN0cmluZylcbiAgbGV0IHNleHBfb2Zfc3RyaW5nID0gKFN0cmluZy5zZXhwX29mX3QgOiBzdHJpbmcgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHN0cmluZ19zZXhwX2dyYW1tYXIgOiBzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJ5dGVzID0gQnl0ZXMudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2J5dGVzID0gKEJ5dGVzLmNvbXBhcmUgOiBieXRlcyAtPiBieXRlcyAtPiBpbnQpXG4gIGxldCBlcXVhbF9ieXRlcyA9IChCeXRlcy5lcXVhbCA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfYnl0ZXMgOiAoYnl0ZXNbQG9jYW1sLmxvY2FsXSkgLT4gYnl0ZXMpID1cbiAgICAoQnl0ZXMuZ2xvYmFsaXplIDogKGJ5dGVzW0BvY2FtbC5sb2NhbF0pIC0+IGJ5dGVzKVxuICA7O1xuXG4gIGxldCBieXRlc19vZl9zZXhwID0gKEJ5dGVzLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBieXRlcylcbiAgbGV0IHNleHBfb2ZfYnl0ZXMgPSAoQnl0ZXMuc2V4cF9vZl90IDogYnl0ZXMgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJ5dGVzLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV91bml0ID0gKFVuaXQuY29tcGFyZSA6IHVuaXQgLT4gdW5pdCAtPiBpbnQpXG4gIGxldCBlcXVhbF91bml0ID0gKFVuaXQuZXF1YWwgOiB1bml0IC0+IHVuaXQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV91bml0IDogKHVuaXRbQG9jYW1sLmxvY2FsXSkgLT4gdW5pdCkgPVxuICAgIChVbml0Lmdsb2JhbGl6ZSA6ICh1bml0W0BvY2FtbC5sb2NhbF0pIC0+IHVuaXQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdW5pdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFVuaXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfdW5pdCA6IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFVuaXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB1bml0X29mX3NleHAgPSAoVW5pdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdW5pdClcbiAgbGV0IHNleHBfb2ZfdW5pdCA9IChVbml0LnNleHBfb2ZfdCA6IHVuaXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBVbml0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICAoKiogRm9ybWF0IHN0dWZmICopXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcblxuICAoKiogTGlzdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIExpc3QuSW5maXhcblxuICAoKiogSW50IG9wZXJhdG9ycyBhbmQgY29tcGFyaXNvbnMgKilcblxuICBpbmNsdWRlIEludC5PXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICgqKiBGbG9hdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIEZsb2F0Lk9fZG90XG5cbiAgKCogVGhpcyBpcyBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBiZSBvcHRpbWl6ZWQgYXdheSBpbiBtb3JlIGNvbnRleHRzLiAqKVxuXG4gICgqKiBSZXZlcnNlIGFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbeCB8PiBnIHw+IGZdIGlzIGVxdWl2YWxlbnQgdG8gW2YgKGcgKHgpKV0uICopXG4gIGV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuICAoKiogQXBwbGljYXRpb24gb3BlcmF0b3IuIFtnIEBAIGYgQEAgeF0gaXMgZXF1aXZhbGVudCB0byBbZyAoZiAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCBAQCApIDogKCgnYSAtPiAnYilbQGxvY2FsX29wdF0pIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4gICgqKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuICAoKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuICBleHRlcm5hbCAoICYmICkgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgZXh0ZXJuYWwgKCB8fCApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgZXh0ZXJuYWwgbm90IDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuICAoKiBUaGlzIG11c3QgYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5LiAqKVxuICBleHRlcm5hbCBpZ25vcmUgOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbiAgKCoqIENvbW1vbiBzdHJpbmcgb3BlcmF0aW9ucyAqKVxuICBsZXQgKCBeICkgPSBTdHJpbmcuKCBeIClcblxuICAoKiogUmVmZXJlbmNlIG9wZXJhdGlvbnMgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfbW9kaWZ5IHdoZW4gcG9zc2libGUgYW5kXG4gICAgIHRvIGtlZXAgcmVmZXJlbmNlIHVuYm94aW5nIHdvcmtpbmcgKilcbiAgZXh0ZXJuYWwgKCAhICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIHJlZiA6ICdhIC0+ICgnYSByZWZbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuICBleHRlcm5hbCAoIDo9ICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuICAoKiogUGFpciBvcGVyYXRpb25zICopXG5cbiAgbGV0IGZzdCA9IGZzdFxuICBsZXQgc25kID0gc25kXG5cbiAgKCoqIEV4Y2VwdGlvbnMgc3R1ZmYgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBtYXkgcmV3cml0ZSAnJXJhaXNlJyBhcyAnJXJlcmFpc2UnLiAqKVxuICBleHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG4gIGxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG4gIGxldCBpbnZhbGlkX2FyZyA9IGludmFsaWRfYXJnXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gICgqKiBNaXNjICopXG5cbiAgZXh0ZXJuYWwgcGh5c19lcXVhbCA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXFcIlxuICBleHRlcm5hbCBmb3JjZSA6ICgnYSBMYXp5LnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuaW5jbHVkZSBDb250YWluZXJfaW50Zi5FeHBvcnQgKCoqIEBpbmxpbmUgKilcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gTm90X2ZvdW5kX3NcblxuKCogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgW0Jhc2VdLiAgSWYgdGhpcyB3ZXJlIGluIGFub3RoZXIgbW9kdWxlIGluIFtCYXNlXSB0aGF0IHdhcyBub3QgdXNlZCBpbiBzb21lIHByb2dyYW0sXG4gICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gW0Jhc2VdOyByZWZlcnJpbmcgdG8gdmFsdWVzIGluXG4gICBbQmFzZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gQmFja3RyYWNlLmluaXRpYWxpemVfbW9kdWxlICgpXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuXG5sZXQgc2V0X2lucHV0X25hbWUgbmFtZSA9IGlucHV0X25hbWUgOj0gbmFtZVxubGV0IHNldF9pbnB1dF9sZXhidWYgbGV4YnVmX29wdCA9IGlucHV0X2xleGJ1ZiA6PSBsZXhidWZfb3B0XG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zN1wiXVxuXG4gIHR5cGUgb2xkX3QgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopID0ge1xuICAgIGxvYzogdDtcbiAgICBtc2c6IHN0cmluZztcbiAgICBzdWI6IG9sZF90IGxpc3Q7XG4gICAgaWZfaGlnaGxpZ2h0OiBzdHJpbmc7XG4gIH1cblxuICB0eXBlIGxvY2F0aW9uX3JlcG9ydF9raW5kICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydF9raW5kICopID1cbiAgfCBSZXBvcnRfZXJyb3JcbiAgfCBSZXBvcnRfd2FybmluZyBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfd2FybmluZ19hc19lcnJvciBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfYWxlcnQgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0X2FzX2Vycm9yIG9mIHN0cmluZ1xuXG4gIHR5cGUgbG9jYXRpb25fbXNnID0gKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkgbG9jXG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24ucmVwb3J0ICopID0ge1xuICAgIGtpbmQgOiBsb2NhdGlvbl9yZXBvcnRfa2luZDtcbiAgICBtYWluIDogbG9jYXRpb25fbXNnO1xuICAgIHN1YiA6IGxvY2F0aW9uX21zZyBsaXN0O1xuICB9XG5cbiAgdHlwZSB0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IG9sZF90ICopXG4gICgqKiBPbiBvY2FtbCA+PSA0LjA4OiBbdF0gaXMgYSBbbG9jYXRpb25fcmVwb3J0XSBmb3Igd2hpY2ggW2xvY2F0aW9uX3JlcG9ydF9raW5kXSBtdXN0IGJlIFtSZXBvcnRfZXJyb3JdLiAqKVxuXG4gIHR5cGUgdmVyc2lvbl9zcGVjaWZpY190ID0gW2BOZXdfZXJyb3Igb2YgbG9jYXRpb25fcmVwb3J0IHwgYE9sZF9lcnJvciBvZiBvbGRfdF1cblxuICBsZXQgdmVyc2lvbl9zcGVjaWZpY190X29mX3QgOiB0IC0+IHZlcnNpb25fc3BlY2lmaWNfdCA9IGZ1biB4IC0+XG4gICAgKCpJRl9BVF9MRUFTVCA0MDggYE5ld19lcnJvciB4ICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IGBPbGRfZXJyb3IgeCAqKVxuXG4gIGxldCBpc193ZWxsX2Zvcm1lZCBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IGtpbmQgPSBSZXBvcnRfZXJyb3I7IF8gfSAtPiB0cnVlXG4gICAgfCBgTmV3X2Vycm9yIF8gLT4gZmFsc2VcbiAgICB8IGBPbGRfZXJyb3IgXyAtPiB0cnVlXG5cbiAgbGV0IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgKG1zZyA6IGxvY2F0aW9uX21zZykgPSBGb3JtYXQuYXNwcmludGYgXCIldFwiIG1zZy50eHRcblxuICBsZXQgbWFpbl9tc2cgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgeyB0eHQgPSBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIG1haW47IGxvYyA9IG1haW4ubG9jIH1cbiAgICB8IGBPbGRfZXJyb3IgeyBtc2c7IGxvYzsgXyB9IC0+IHsgdHh0ID0gbXNnOyBsb2MgfVxuXG4gIGxldCBzdWJfbXNncyBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IHN1YjsgXyB9IC0+XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBlcnIgLT4geyB0eHQgPSBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIGVycjsgbG9jID0gZXJyLmxvYyB9KVxuICAgICAgICAgIHN1YlxuICAgIHwgYE9sZF9lcnJvciB7IHN1YjsgXyB9IC0+XG4gICAgICAgIGxldCByZWMgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgICAgfCB7IGxvYzsgbXNnOyBzdWI7IF8gfSA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgKHsgdHh0ID0gbXNnOyBsb2MgfSA6OiBhY2MpIChzdWIgQCB0YWlsKVxuICAgICAgICBpblxuICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzIFtdIHN1YlxuXG4gIGxldCBvZl9leG4gZXhuID1cbiAgICAoKklGX0FUX0xFQVNUIDQwNiBtYXRjaCBlcnJvcl9vZl9leG4gZXhuIHdpdGggfCBTb21lIChgT2sgZSkgLT4gU29tZSBlIHwgTm9uZSB8IFNvbWUgYEFscmVhZHlfZGlzcGxheWVkIC0+IE5vbmUgKilcbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDYgZXJyb3Jfb2ZfZXhuIGV4biopXG5cbiAgbGV0IF9zZXRfbWFpbl9tc2dfb2xkIGVycm9yIG1zZyA9IHsgZXJyb3Igd2l0aCBtc2cgfVxuXG4gIGxldCBfc2V0X21haW5fbXNnX25ldyBlcnJvciBtc2cgPVxuICAgIGxldCB0eHQgcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgbXNnIGluXG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCB0eHQgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbXNnIGVycm9yIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfb2xkIGVycm9yIG1zZyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnKilcblxuICBsZXQgX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiB7IGxvYzsgdHh0IH0gPVxuICAgIGxldCBzdWIgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB7IGxvYzsgdHh0IH0gLT4geyBsb2M7IG1zZyA9IHR4dDsgc3ViID0gW107IGlmX2hpZ2hsaWdodCA9IHR4dCB9KVxuICAgICAgICBzdWJcbiAgICBpblxuICAgIHsgbG9jOyBtc2cgPSB0eHQ7IHN1YjsgaWZfaGlnaGxpZ2h0ID0gdHh0IH1cblxuICBsZXQgX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9uZXcgfnN1YiB7IGxvYzsgdHh0IH0gPVxuICAgIGxldCBta190eHQgeCBwcGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiB4IGluXG4gICAgbGV0IG1rIGxvYyB4ID0geyBsb2M7IHR4dCA9IG1rX3R4dCB4IH0gaW5cbiAgICB7XG4gICAgICBraW5kID0gUmVwb3J0X2Vycm9yO1xuICAgICAgbWFpbiA9IG1rIGxvYyB0eHQ7XG4gICAgICBzdWIgPSBMaXN0Lm1hcCAoZnVuIHsgbG9jOyB0eHQgfSAtPiBtayBsb2MgdHh0KSBzdWI7XG4gICAgfVxuXG4gIGxldCBtYWtlIH5zdWIgbXNnID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgbXNnKilcblxuICBsZXQgX3NldF9tYWluX2xvY19vbGQgZXJyb3IgbG9jID0geyBlcnJvciB3aXRoIGxvYyB9XG5cbiAgbGV0IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyA9XG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCBsb2MgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbG9jIGVycm9yIGxvYyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX2xvY19uZXcgZXJyb3IgbG9jKilcbmVuZFxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgbXNnID0gcmFpc2VfZXJyb3JmID9sb2MgbXNnXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcblxubGV0IHBhcnNlIHMgPVxuICAoKklGX05PVF9BVF9MRUFTVCA0MTEgcGFyc2UgcyAqKVxuICAoKklGX0FUX0xFQVNUIDQxMSBPY2FtbF9jb21tb24uUGFyc2UubG9uZ2lkZW50IEBAIExleGluZy5mcm9tX3N0cmluZyBAQCBzICopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzFcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzFcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICBUaG9tYXMgR2F6YWduYWlyZSwgT0NhbWxQcm8gICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBGYWJyaWNlIExlIEZlc3NhbnQsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIEhvbmdibyBaaGFuZywgVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9yaWdpbmFsIENvZGUgZnJvbSBCZXItbWV0YW9jYW1sLCBtb2RpZmllZCBmb3IgMy4xMi4wIGFuZCBmaXhlZCAqKVxuKCogUHJpbnRpbmcgY29kZSBleHByZXNzaW9ucyAqKVxuKCogQXV0aG9yczogIEVkIFBpenppLCBGYWJyaWNlIExlIEZlc3NhbnQgKilcbigqIEV4dGVuc2l2ZSBSZXdyaXRlOiBIb25nYm8gWmhhbmc6IFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICopXG4oKiBUT0RPIG1vcmUgZmluZS1ncmFpbmVkIHByZWNlZGVuY2UgcHJldHR5LXByaW50aW5nICopXG5cbm9wZW4gQXN0XzQxNFxub3BlbiBBc3R0eXBlc1xub3BlbiBGb3JtYXRcbm9wZW4gTG9jYXRpb25cbm9wZW4gTG9uZ2lkZW50XG5vcGVuIFBhcnNldHJlZVxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG5lbmRcblxubGV0IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgaWYgTGlzdC5tZW0gdiB2bCB0aGVuXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gIGluXG4gIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHZhcl9uYW1lcyBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgbGV0IGRlc2MgPVxuICAgICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2MgeDtcbiAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXNcbiAgICAgICAgLT5cbiAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHN0cmluZztcbiAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgIFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICBpblxuICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+IFJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgaW5cbiAgbG9vcCB0XG5cbmxldCBwcmVmaXhfc3ltYm9scyA9IFsgJyEnOyAnPyc7ICd+JyBdXG5cbmxldCBpbmZpeF9zeW1ib2xzID1cbiAgWyAnPSc7ICc8JzsgJz4nOyAnQCc7ICdeJzsgJ3wnOyAnJic7ICcrJzsgJy0nOyAnKic7ICcvJzsgJyQnOyAnJSc7ICcjJyBdXG5cbigqIHR5cGUgZml4aXR5ID0gSW5maXh8IFByZWZpeCAgKilcbmxldCBzcGVjaWFsX2luZml4X3N0cmluZ3MgPVxuICBbIFwiYXNyXCI7IFwibGFuZFwiOyBcImxvclwiOyBcImxzbFwiOyBcImxzclwiOyBcImx4b3JcIjsgXCJtb2RcIjsgXCJvclwiOyBcIjo9XCI7IFwiIT1cIjsgXCI6OlwiIF1cblxubGV0IGxldG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2wnXG4gICYmIHMuWzFdID0gJ2UnXG4gICYmIHMuWzJdID0gJ3QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxubGV0IGFuZG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2EnXG4gICYmIHMuWzFdID0gJ24nXG4gICYmIHMuWzJdID0gJ2QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxuKCogZGV0ZXJtaW5lcyBpZiB0aGUgc3RyaW5nIGlzIGFuIGluZml4IHN0cmluZy5cbiAgIGNoZWNrcyBiYWNrd2FyZHMsIGZpcnN0IGFsbG93aW5nIGEgcmVuYW1pbmcgcG9zdGZpeCAoXCJfMTAyXCIpIHdoaWNoXG4gICBtYXkgaGF2ZSByZXN1bHRlZCBmcm9tIFBleHAgLT4gVGV4cCAtPiBQZXhwIHRyYW5zbGF0aW9uLCB0aGVuIGNoZWNraW5nXG4gICBpZiBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGFyZSB2YWxpZCBpbmZpeFxuICAgY2hhcmFjdGVycy4gKilcbmxldCBmaXhpdHlfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcIlwiIC0+IGBOb3JtYWxcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcyBzcGVjaWFsX2luZml4X3N0cmluZ3MgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gaW5maXhfc3ltYm9scyAtPiBgSW5maXggc1xuICB8IHMgd2hlbiBMaXN0Lm1lbSBzLlswXSBwcmVmaXhfc3ltYm9scyAtPiBgUHJlZml4IHNcbiAgfCBzIHdoZW4gcy5bMF0gPSAnLicgLT4gYE1peGZpeCBzXG4gIHwgcyB3aGVuIGxldG9wIHMgLT4gYExldG9wIHNcbiAgfCBzIHdoZW4gYW5kb3AgcyAtPiBgQW5kb3Agc1xuICB8IF8gLT4gYE5vcm1hbFxuXG5sZXQgdmlld19maXhpdHlfb2ZfZXhwID0gZnVuY3Rpb25cbiAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICBmaXhpdHlfb2Zfc3RyaW5nIGxcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IGlzX2luZml4ID0gZnVuY3Rpb24gYEluZml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19taXhmaXggPSBmdW5jdGlvbiBgTWl4Zml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19rd2RvcCA9IGZ1bmN0aW9uIGBMZXRvcCBfIHwgYEFuZG9wIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBmaXJzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bMF0gPSBjXG5sZXQgbGFzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bU3RyaW5nLmxlbmd0aCBzdHIgLSAxXSA9IGNcbmxldCBmaXJzdF9pc19pbiBjcyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBMaXN0Lm1lbSBzdHIuWzBdIGNzXG5cbigqIHdoaWNoIGlkZW50aWZpZXJzIGFyZSBpbiBmYWN0IG9wZXJhdG9ycyBuZWVkaW5nIHBhcmVudGhlc2VzICopXG5sZXQgbmVlZHNfcGFyZW5zIHR4dCA9XG4gIGxldCBmaXggPSBmaXhpdHlfb2Zfc3RyaW5nIHR4dCBpblxuICBpc19pbmZpeCBmaXggfHwgaXNfbWl4Zml4IGZpeCB8fCBpc19rd2RvcCBmaXhcbiAgfHwgZmlyc3RfaXNfaW4gcHJlZml4X3N5bWJvbHMgdHh0XG5cbigqIHNvbWUgaW5maXhlcyBuZWVkIHNwYWNlcyBhcm91bmQgcGFyZW5zIHRvIGF2b2lkIGNsYXNoZXMgd2l0aCBjb21tZW50XG4gICBzeW50YXggKilcbmxldCBuZWVkc19zcGFjZXMgdHh0ID0gZmlyc3RfaXMgJyonIHR4dCB8fCBsYXN0X2lzICcqJyB0eHRcbmxldCBzdHJpbmdfbG9jIHBwZiB4ID0gZnByaW50ZiBwcGYgXCIlc1wiIHgudHh0XG5cbigqIGFkZCBwYXJlbnRoZXNlcyB0byBiaW5kZXJzIHdoZW4gdGhleSBhcmUgaW4gZmFjdCBpbmZpeCBvciBwcmVmaXggb3BlcmF0b3JzICopXG5sZXQgcHJvdGVjdF9pZGVudCBwcGYgdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIihAOyVzQDspXCJcbiAgICBlbHNlIFwiKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCB0eHRcblxubGV0IHByb3RlY3RfbG9uZ2lkZW50IHBwZiBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHQgPVxuICBsZXQgZm9ybWF0IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgaWYgbm90IChuZWVkc19wYXJlbnMgdHh0KSB0aGVuIFwiJWEuJXNcIlxuICAgIGVsc2UgaWYgbmVlZHNfc3BhY2VzIHR4dCB0aGVuIFwiJWEuKEA7JXNAOylcIlxuICAgIGVsc2UgXCIlYS4oJXMpXCJcbiAgaW5cbiAgZnByaW50ZiBwcGYgZm9ybWF0IHByaW50X2xvbmdpZGVudCBsb25ncHJlZml4IHR4dFxuXG50eXBlIHNwYWNlX2Zvcm1hdHRlciA9ICh1bml0LCBGb3JtYXQuZm9ybWF0dGVyLCB1bml0KSBmb3JtYXRcblxubGV0IG92ZXJyaWRlID0gZnVuY3Rpb24gT3ZlcnJpZGUgLT4gXCIhXCIgfCBGcmVzaCAtPiBcIlwiXG5cbigqIHZhcmlhbmNlIGVuY29kaW5nOiBuZWVkIHRvIHN5bmMgdXAgd2l0aCB0aGUgW3BhcnNlci5tbHldICopXG5sZXQgdHlwZV92YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgTm9WYXJpYW5jZSAtPiBcIlwiXG4gIHwgQ292YXJpYW50IC0+IFwiK1wiXG4gIHwgQ29udHJhdmFyaWFudCAtPiBcIi1cIlxuXG5sZXQgdHlwZV9pbmplY3Rpdml0eSA9IGZ1bmN0aW9uIE5vSW5qZWN0aXZpdHkgLT4gXCJcIiB8IEluamVjdGl2ZSAtPiBcIiFcIlxuXG50eXBlIGNvbnN0cnVjdCA9XG4gIFsgYGNvbnMgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYGxpc3Qgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYG5pbFxuICB8IGBub3JtYWxcbiAgfCBgc2ltcGxlIG9mIExvbmdpZGVudC50XG4gIHwgYHR1cGxlIF1cblxubGV0IHZpZXdfZXhwciB4ID1cbiAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIigpXCI7IF8gfSwgXykgLT4gYHR1cGxlXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSAtPiBgbmlsXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIF8pIC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZXhwIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cCB3aXRoXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgIFBleHBfY29uc3RydWN0XG4gICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSxcbiAgICAgICAgICAgICAgIFNvbWUgeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgZTE7IGUyIF07IHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgICAgICApO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGxvb3AgZTIgKGUxIDo6IGFjYylcbiAgICAgICAgfCBlIC0+IChMaXN0LnJldiAoZSA6OiBhY2MpLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgbHMsIGIgPSBsb29wIHggW10gaW5cbiAgICAgIGlmIGIgdGhlbiBgbGlzdCBscyBlbHNlIGBjb25zIGxzXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHgsIE5vbmUpIC0+IGBzaW1wbGUgeC50eHRcbiAgfCBfIC0+IGBub3JtYWxcblxubGV0IGlzX3NpbXBsZV9jb25zdHJ1Y3QgOiBjb25zdHJ1Y3QgLT4gYm9vbCA9IGZ1bmN0aW9uXG4gIHwgYG5pbCB8IGB0dXBsZSB8IGBsaXN0IF8gfCBgc2ltcGxlIF8gLT4gdHJ1ZVxuICB8IGBjb25zIF8gfCBgbm9ybWFsIC0+IGZhbHNlXG5cbmxldCBwcCA9IGZwcmludGZcblxudHlwZSBjdHh0ID0geyBwaXBlIDogYm9vbDsgc2VtaSA6IGJvb2w7IGlmdGhlbmVsc2UgOiBib29sIH1cblxubGV0IHJlc2V0X2N0eHQgPSB7IHBpcGUgPSBmYWxzZTsgc2VtaSA9IGZhbHNlOyBpZnRoZW5lbHNlID0gZmFsc2UgfVxubGV0IHVuZGVyX3BpcGUgY3R4dCA9IHsgY3R4dCB3aXRoIHBpcGUgPSB0cnVlIH1cbmxldCB1bmRlcl9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pID0gdHJ1ZSB9XG5sZXQgdW5kZXJfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZSA9IHRydWUgfVxuKCpcbmxldCByZXNldF9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pPWZhbHNlIH1cbmxldCByZXNldF9pZnRoZW5lbHNlIGN0eHQgPSB7IGN0eHQgd2l0aCBpZnRoZW5lbHNlPWZhbHNlIH1cbmxldCByZXNldF9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlPWZhbHNlIH1cbiopXG5cbmxldCBsaXN0IDpcbiAgICAgICdhLlxuICAgICAgP3NlcDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIGxpc3QgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/c2VwID9maXJzdCA/bGFzdCBmdSBmIHhzIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBzZXAgPSBtYXRjaCBzZXAgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiQCBcIiA6IF8gZm9ybWF0NikgaW5cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICB8IHhzIC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFsgeCBdIC0+IGZ1IGYgeFxuICAgICAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgICAgICBmdSBmIHg7XG4gICAgICAgICAgICAgIHBwIGYgc2VwO1xuICAgICAgICAgICAgICBsb29wIGYgeHNcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICAgIGxvb3AgZiB4cztcbiAgICAgICAgcHAgZiBsYXN0XG4gIGluXG4gIGF1eCBmIHhzXG5cbmxldCBvcHRpb24gOlxuICAgICAgJ2EuXG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBvcHRpb24gLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/Zmlyc3QgP2xhc3QgZnUgZiBhIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpIGluXG4gIG1hdGNoIGEgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICBmdSBmIHg7XG4gICAgICBwcCBmIGxhc3RcblxubGV0IHBhcmVuIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICBib29sIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2EgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/KGZpcnN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSA/KGxhc3QgPSAoXCJcIiA6IF8gZm9ybWF0NikpIGIgZnUgZiB4IC0+XG4gIGlmIGIgdGhlbiAoXG4gICAgcHAgZiBcIihcIjtcbiAgICBwcCBmIGZpcnN0O1xuICAgIGZ1IGYgeDtcbiAgICBwcCBmIGxhc3Q7XG4gICAgcHAgZiBcIilcIilcbiAgZWxzZSBmdSBmIHhcblxubGV0IHJlYyBsb25naWRlbnQgZiA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcHJvdGVjdF9pZGVudCBmIHNcbiAgfCBMZG90ICh5LCBzKSAtPiBwcm90ZWN0X2xvbmdpZGVudCBmIGxvbmdpZGVudCB5IHNcbiAgfCBMYXBwbHkgKHksIHMpIC0+IHBwIGYgXCIlYSglYSlcIiBsb25naWRlbnQgeSBsb25naWRlbnQgc1xuXG5sZXQgbG9uZ2lkZW50X2xvYyBmIHggPSBwcCBmIFwiJWFcIiBsb25naWRlbnQgeC50eHRcblxubGV0IGNvbnN0YW50IGYgPSBmdW5jdGlvblxuICB8IFBjb25zdF9jaGFyIGkgLT4gcHAgZiBcIiVDXCIgaVxuICB8IFBjb25zdF9zdHJpbmcgKGksIF8sIE5vbmUpIC0+IHBwIGYgXCIlU1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBTb21lIGRlbGltKSAtPiBwcCBmIFwieyVzfCVzfCVzfVwiIGRlbGltIGkgZGVsaW1cbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9pbnRlZ2VyIChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBOb25lKSAtPiBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAtPiBwcCBmIFwiJXNcIikgZiBpXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG5cbigqIHRyYWlsaW5nIHNwYWNlKilcbmxldCBtdXRhYmxlX2ZsYWcgZiA9IGZ1bmN0aW9uIEltbXV0YWJsZSAtPiAoKSB8IE11dGFibGUgLT4gcHAgZiBcIm11dGFibGVAO1wiXG5sZXQgdmlydHVhbF9mbGFnIGYgPSBmdW5jdGlvbiBDb25jcmV0ZSAtPiAoKSB8IFZpcnR1YWwgLT4gcHAgZiBcInZpcnR1YWxAO1wiXG5cbigqIHRyYWlsaW5nIHNwYWNlIGFkZGVkICopXG5sZXQgcmVjX2ZsYWcgZiByZiA9XG4gIG1hdGNoIHJmIHdpdGggTm9ucmVjdXJzaXZlIC0+ICgpIHwgUmVjdXJzaXZlIC0+IHBwIGYgXCJyZWMgXCJcblxubGV0IG5vbnJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiBwcCBmIFwibm9ucmVjIFwiIHwgUmVjdXJzaXZlIC0+ICgpXG5cbmxldCBkaXJlY3Rpb25fZmxhZyBmID0gZnVuY3Rpb25cbiAgfCBVcHRvIC0+IHBwIGYgXCJ0b0AgXCJcbiAgfCBEb3dudG8gLT4gcHAgZiBcImRvd250b0AgXCJcblxubGV0IHByaXZhdGVfZmxhZyBmID0gZnVuY3Rpb24gUHVibGljIC0+ICgpIHwgUHJpdmF0ZSAtPiBwcCBmIFwicHJpdmF0ZUAgXCJcbmxldCBpdGVyX2xvYyBmIGN0eHQgeyB0eHQ7IGxvYyA9IF8gfSA9IGYgY3R4dCB0eHRcbmxldCBjb25zdGFudF9zdHJpbmcgZiBzID0gcHAgZiBcIiVTXCIgc1xuXG5sZXQgdHl2YXIgcHBmIHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBzLlsxXSA9ICdcXCcnIHRoZW5cbiAgICAoKiB3aXRob3V0IHRoZSBzcGFjZSwgdGhpcyB3b3VsZCBiZSBwYXJzZWQgYXNcbiAgICAgICBhIGNoYXJhY3RlciBsaXRlcmFsICopXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJyAlc1wiIHNcbiAgZWxzZSBGb3JtYXQuZnByaW50ZiBwcGYgXCInJXNcIiBzXG5cbmxldCB0eXZhcl9sb2MgZiBzdHIgPSB0eXZhciBmIHN0ci50eHRcbmxldCBzdHJpbmdfcXVvdCBmIHggPSBwcCBmIFwiYCVzXCIgeFxuXG4oKiBjIFsnYSwnYl0gKilcbmxldCByZWMgY2xhc3NfcGFyYW1zX2RlZiBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiWyVhXSBcIiAoKiBzcGFjZSAqKSAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+c2VwOlwiLFwiKSBsXG5cbmFuZCB0eXBlX3dpdGhfbGFiZWwgY3R4dCBmIChsYWJlbCwgYykgPVxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgTm9sYWJlbCAtPiBjb3JlX3R5cGUxIGN0eHQgZiBjICgqIG90aGVyd2lzZSBwYXJlbnRoZXNpemUgKilcbiAgfCBMYWJlbGxlZCBzIC0+IHBwIGYgXCIlczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuICB8IE9wdGlvbmFsIHMgLT4gcHAgZiBcIj8lczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuXG5hbmQgY29yZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjb3JlX3R5cGUgY3R4dClcbiAgICAgIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHR5cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2Fycm93IChsLCBjdDEsIGN0MikgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAgICh0eXBlX3dpdGhfbGFiZWwgY3R4dCkgKGwsIGN0MSkgKGNvcmVfdHlwZSBjdHh0KSBjdDJcbiAgICB8IFB0eXBfYWxpYXMgKGN0LCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSBjdCB0eXZhciBzXG4gICAgfCBQdHlwX3BvbHkgKFtdLCBjdCkgLT4gY29yZV90eXBlIGN0eHQgZiBjdFxuICAgIHwgUHR5cF9wb2x5IChzbCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAXVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYVwiXG4gICAgICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgXyAtPiBwcCBmIFwiJWFAOy5AO1wiIChsaXN0IHR5dmFyX2xvYyB+c2VwOlwiQDtcIikgbClcbiAgICAgICAgICAgICAgbClcbiAgICAgICAgICBzbCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBfIC0+IHBwIGYgXCJAWzwyPiVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSB4XG5cbmFuZCBjb3JlX3R5cGUxIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFB0eXBfdmFyIHMgLT4gdHl2YXIgZiBzXG4gICAgfCBQdHlwX3R1cGxlIGwgLT4gcHAgZiBcIiglYSlcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgIHwgUHR5cF9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgICBwcCBmICgqIFwiJWElYUA7XCIgKikgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICB8IFsgeCBdIC0+IHBwIGYgXCIlYUA7XCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuICAgICAgICAgICAgfCBfIC0+IGxpc3QgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKUA7XCIgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLEA7XCIgZiBsKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF92YXJpYW50IChsLCBjbG9zZWQsIGxvdykgLT5cbiAgICAgICAgbGV0IGZpcnN0X2lzX2luaGVyaXQgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgeyBQYXJzZXRyZWUucHJmX2Rlc2MgPSBSaW5oZXJpdCBfIH0gOjogXyAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBlX3ZhcmlhbnRfaGVscGVyIGYgeCA9XG4gICAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgfCBSdGFnIChsLCBfLCBjdGwpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAOyVhQF1cIiAoaXRlcl9sb2Mgc3RyaW5nX3F1b3QpIGxcbiAgICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiJlwiKSBjdGwpXG4gICAgICAgICAgICAgICAgY3RsIChhdHRyaWJ1dGVzIGN0eHQpIHgucHJmX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IFJpbmhlcml0IGN0IC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+WyVhJWFdQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBtYXRjaCAobCwgY2xvc2VkKSB3aXRoXG4gICAgICAgICAgICB8IFtdLCBDbG9zZWQgLT4gKClcbiAgICAgICAgICAgIHwgW10sIE9wZW4gLT4gcHAgZiBcIj5cIiAoKiBDZiAjNzIwMDogcHJpbnQgWz5dIGNvcnJlY3RseSAqKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVzQDslYVwiXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggKGNsb3NlZCwgbG93KSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IENsb3NlZCwgTm9uZSAtPiBpZiBmaXJzdF9pc19pbmhlcml0IHRoZW4gXCIgfFwiIGVsc2UgXCJcIlxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIFNvbWUgXyAtPiBcIjxcIiAoKiBGSVhNRSBkZXN1Z2FyIHRoZSBzeW50YXggc3VnYXIqKVxuICAgICAgICAgICAgICAgICAgfCBPcGVuLCBfIC0+IFwiPlwiKVxuICAgICAgICAgICAgICAgICAgKGxpc3QgdHlwZV92YXJpYW50X2hlbHBlciB+c2VwOlwiQDs8MSAtMj58IFwiKVxuICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICBsXG4gICAgICAgICAgKGZ1biBmIGxvdyAtPlxuICAgICAgICAgICAgbWF0Y2ggbG93IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBbXSB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSB4cyAtPiBwcCBmIFwiPkAgJWFcIiAobGlzdCBzdHJpbmdfcXVvdCkgeHMpXG4gICAgICAgICAgbG93XG4gICAgfCBQdHlwX29iamVjdCAobCwgbykgLT5cbiAgICAgICAgbGV0IGNvcmVfZmllbGRfdHlwZSBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgT3RhZyAobCwgY3QpIC0+XG4gICAgICAgICAgICAgICgqIENmICM3MjAwICopXG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVzOiAlYUAgJWFAIEBdXCIgbC50eHQgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgICAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG9mX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IE9pbmhlcml0IGN0IC0+IHBwIGYgXCJAWzxob3YyPiVhQCBAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZpZWxkX3ZhciBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEFzdHR5cGVzLkNsb3NlZCAtPiAoKVxuICAgICAgICAgIHwgQXN0dHlwZXMuT3BlbiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBwcCBmIFwiLi5cIiB8IF8gLT4gcHAgZiBcIiA7Li5cIilcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+PEAgJWElYUAgPiBAXVwiXG4gICAgICAgICAgKGxpc3QgY29yZV9maWVsZF90eXBlIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbCBmaWVsZF92YXIgb1xuICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgIHwgUHR5cF9jbGFzcyAobGksIGwpIC0+XG4gICAgICAgICgqRklYTUUqKVxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYSMlYUBdXCJcbiAgICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF9wYWNrYWdlIChsaWQsIGNzdHJzKSAtPiAoXG4gICAgICAgIGxldCBhdXggZiAocywgY3QpID1cbiAgICAgICAgICBwcCBmIFwidHlwZSAlYUAgPUAgJWFcIiBsb25naWRlbnRfbG9jIHMgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjc3RycyB3aXRoXG4gICAgICAgIHwgW10gLT4gcHAgZiBcIkBbPGhvdjI+KG1vZHVsZUAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhQCB3aXRoQCAlYSlAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgICAgIChsaXN0IGF1eCB+c2VwOlwiQCBhbmRAIFwiKSBjc3RycylcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGNvcmVfdHlwZSBjdHh0KSBmIHhcblxuKCoqKioqKioqKioqKioqKioqKioqcGF0dGVybioqKioqKioqKioqKioqKioqKioqKVxuKCogYmUgY2F1dGlvdXMgd2hlbiB1c2UgW3BhdHRlcm5dLCBbcGF0dGVybjFdIGlzIHByZWZlcnJlZCAqKVxuYW5kIHBhdHRlcm4gY3R4dCBmIHggPVxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKHBhdHRlcm4gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHBhdF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2FsaWFzIChwLCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwIHByb3RlY3RfaWRlbnQgcy50eHRcbiAgICB8IF8gLT4gcGF0dGVybl9vciBjdHh0IGYgeFxuXG5hbmQgcGF0dGVybl9vciBjdHh0IGYgeCA9XG4gIGxldCByZWMgbGVmdF9hc3NvY2lhdGl2ZSB4IGFjYyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfb3IgKHAxLCBwMik7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgbGVmdF9hc3NvY2lhdGl2ZSBwMSAocDIgOjogYWNjKVxuICAgIHwgeCAtPiB4IDo6IGFjY1xuICBpblxuICBtYXRjaCBsZWZ0X2Fzc29jaWF0aXZlIHggW10gd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHBhdHRlcm4xIGN0eHQgZiB4XG4gIHwgb3JwYXRzIC0+IHBwIGYgXCJAWzxob3YwPiVhQF1cIiAobGlzdCB+c2VwOlwiQCB8IFwiIChwYXR0ZXJuMSBjdHh0KSkgb3JwYXRzXG5cbmFuZCBwYXR0ZXJuMSBjdHh0IChmIDogRm9ybWF0LmZvcm1hdHRlcikgKHggOiBwYXR0ZXJuKSA6IHVuaXQgPVxuICBsZXQgcmVjIHBhdHRlcm5fbGlzdF9oZWxwZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCB7XG4gICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgIFNvbWUgKFtdLCB7IHBwYXRfZGVzYyA9IFBwYXRfdHVwbGUgWyBwYXQxOyBwYXQyIF07IF8gfSkgKTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYTo6JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0MSBwYXR0ZXJuX2xpc3RfaGVscGVyIHBhdDIgKCpSQSopXG4gICAgfCBwIC0+IHBhdHRlcm4xIGN0eHQgZiBwXG4gIGluXG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF92YXJpYW50IChsLCBTb21lIHApIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoXCIoKVwiIHwgXCJbXVwiKTsgXyB9LCBfKSAtPlxuICAgICAgICBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKCh7IHR4dDsgXyB9IGFzIGxpKSwgcG8pIC0+IChcbiAgICAgICAgaWYgKCogRklYTUUgVGhlIHRoaXJkIGZpZWxkIGFsd2F5cyBmYWxzZSAqKVxuICAgICAgICAgICB0eHQgPSBMaWRlbnQgXCI6OlwiIHRoZW4gcHAgZiBcIiVhXCIgcGF0dGVybl9saXN0X2hlbHBlciB4XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBwbyB3aXRoXG4gICAgICAgICAgfCBTb21lIChbXSwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDslYVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IFNvbWUgKHZsLCB4KSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAICh0eXBlICVhKUA7JWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAgXCIgc3RyaW5nX2xvYylcbiAgICAgICAgICAgICAgICB2bCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgeFxuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpKVxuICAgIHwgXyAtPiBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX3BhdHRlcm4gY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwYXR0ZXJuIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKChcIigpXCIgfCBcIltdXCIpIGFzIHgpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgIHBwIGYgXCIlc1wiIHhcbiAgICB8IFBwYXRfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gcHJvdGVjdF9pZGVudCBmIHR4dFxuICAgIHwgUHBhdF9hcnJheSBsIC0+IHBwIGYgXCJAWzwyPlt8JWF8XUBdXCIgKGxpc3QgKHBhdHRlcm4xIGN0eHQpIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gTm9uZSB9IC0+IHBwIGYgXCIobW9kdWxlQCBfKUAgXCJcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gU29tZSBzIH0gLT4gcHAgZiBcIihtb2R1bGVAICVzKUAgXCIgc1xuICAgIHwgUHBhdF90eXBlIGxpIC0+IHBwIGYgXCIjJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQcGF0X3JlY29yZCAobCwgY2xvc2VkKSAtPiAoXG4gICAgICAgIGxldCBsb25naWRlbnRfeF9wYXR0ZXJuIGYgKGxpLCBwKSA9XG4gICAgICAgICAgbWF0Y2ggKGxpLCBwKSB3aXRoXG4gICAgICAgICAgfCAoIHsgdHh0ID0gTGlkZW50IHM7IF8gfSxcbiAgICAgICAgICAgICAgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9IClcbiAgICAgICAgICAgIHdoZW4gcyA9IHR4dCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUA7PUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHBhdHRlcm4xIGN0eHQpIHBcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY2xvc2VkIHdpdGhcbiAgICAgICAgfCBDbG9zZWQgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzwyPntAOyVhQDt9QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbFxuICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+e0A7JWE7X31AXVwiIChsaXN0IGxvbmdpZGVudF94X3BhdHRlcm4gfnNlcDpcIjtAO1wiKSBsKVxuICAgIHwgUHBhdF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzwxPiglYSlAXVwiIChsaXN0IH5zZXA6XCIsQDtcIiAocGF0dGVybjEgY3R4dCkpIGwgKCogbGV2ZWwxKilcbiAgICB8IFBwYXRfY29uc3RhbnQgYyAtPiBwcCBmIFwiJWFcIiBjb25zdGFudCBjXG4gICAgfCBQcGF0X2ludGVydmFsIChjMSwgYzIpIC0+IHBwIGYgXCIlYS4uJWFcIiBjb25zdGFudCBjMSBjb25zdGFudCBjMlxuICAgIHwgUHBhdF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+KCVhQDs6QDslYSlAXVwiIChwYXR0ZXJuMSBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBwYXRfbGF6eSBwIC0+IHBwIGYgXCJAWzwyPihsYXp5QDslYSlAXVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBwIC0+IHBwIGYgXCJAWzwyPmV4Y2VwdGlvbkA7JWFAXVwiIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUHBhdF9vcGVuIChsaWQsIHApIC0+XG4gICAgICAgIGxldCB3aXRoX3BhcmVuID1cbiAgICAgICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQcGF0X2FycmF5IF8gfCBQcGF0X3JlY29yZCBfXG4gICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgTm9uZSkgLT5cbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICB8IF8gLT4gdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYSBAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgKHBhcmVuIHdpdGhfcGFyZW4gQEAgcGF0dGVybjEgY3R4dClcbiAgICAgICAgICBwXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKHBhdHRlcm4gY3R4dCkgZiB4XG5cbmFuZCBsYWJlbF9leHAgY3R4dCBmIChsLCBvcHQsIHApID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgTm9sYWJlbCAtPlxuICAgICAgKCogc2luZ2xlIGNhc2UgcGF0dGVybiBwYXJlbnMgbmVlZGVkIGhlcmUgKilcbiAgICAgIHBwIGYgXCIlYUAgXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgfCBPcHRpb25hbCByZXN0IC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgd2hlbiB0eHQgPSByZXN0IC0+IChcbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgU29tZSBvIC0+IHBwIGYgXCI/KCVzPUA7JWEpQDtcIiByZXN0IChleHByZXNzaW9uIGN0eHQpIG9cbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIj8lc0AgXCIgcmVzdClcbiAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiPyVzOiglYT1AOyVhKUA7XCIgcmVzdCAocGF0dGVybjEgY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXM6JWFAO1wiIHJlc3QgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApKVxuICB8IExhYmVsbGVkIGwgLT4gKFxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSB3aGVuIHR4dCA9IGxcbiAgICAgICAgLT5cbiAgICAgICAgICBwcCBmIFwifiVzQDtcIiBsXG4gICAgICB8IF8gLT4gcHAgZiBcIn4lczolYUA7XCIgbCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcClcblxuYW5kIHN1Z2FyX2V4cHIgY3R4dCBmIGUgPVxuICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGZhbHNlXG4gIGVsc2VcbiAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2FwcGx5XG4gICAgICAgICggeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gaWQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSxcbiAgICAgICAgICBhcmdzIClcbiAgICAgIHdoZW4gTGlzdC5mb3JfYWxsIChmdW4gKGxhYiwgXykgLT4gbGFiID0gTm9sYWJlbCkgYXJncyAtPiAoXG4gICAgICAgIGxldCBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgc2VwIHJpZ2h0IHByaW50X2luZGV4XG4gICAgICAgICAgICBpbmRpY2VzIHJlbV9hcmdzID1cbiAgICAgICAgICBsZXQgcHJpbnRfcGF0aCBwcGYgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgbSAtPiBwcCBwcGYgXCIuJWFcIiBsb25naWRlbnQgbVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggKGFzc2lnbiwgcmVtX2FyZ3MpIHdpdGhcbiAgICAgICAgICB8IGZhbHNlLCBbXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgYSBwcmludF9wYXRoIHBhdGhfcHJlZml4XG4gICAgICAgICAgICAgICAgbGVmdCAobGlzdCB+c2VwIHByaW50X2luZGV4KSBpbmRpY2VzIHJpZ2h0O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCB0cnVlLCBbIHYgXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQCA8LUA7PDEgMj4lYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aFxuICAgICAgICAgICAgICAgIHBhdGhfcHJlZml4IGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodFxuICAgICAgICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSB2O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChpZCwgTGlzdC5tYXAgc25kIGFyZ3MpIHdpdGhcbiAgICAgICAgfCBMaWRlbnQgXCIhXCIsIFsgZSBdIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92PiElYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGU7XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIHwgTGRvdCAocGF0aCwgKChcImdldFwiIHwgXCJzZXRcIikgYXMgZnVuYykpLCBhIDo6IG90aGVyX2FyZ3MgLT4gKFxuICAgICAgICAgICAgbGV0IGFzc2lnbiA9IGZ1bmMgPSBcInNldFwiIGluXG4gICAgICAgICAgICBsZXQgcHJpbnQgPSBwcmludF9pbmRleG9wIGEgTm9uZSBhc3NpZ24gaW5cbiAgICAgICAgICAgIG1hdGNoIChwYXRoLCBvdGhlcl9hcmdzKSB3aXRoXG4gICAgICAgICAgICB8IExpZGVudCBcIkFycmF5XCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLihcIiBcIlwiIFwiKVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGlkZW50IFwiU3RyaW5nXCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLltcIiBcIlwiIFwiXVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTFcIiksIGkxIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTEgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkyXCIpLCBpMSA6OiBpMiA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMiBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTNcIiksIGkxIDo6IGkyIDo6IGkzIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTE7IGkyOyBpMyBdIHJlc3RcbiAgICAgICAgICAgIHwgKCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkdlbmFycmF5XCIpLFxuICAgICAgICAgICAgICAgIHsgcGV4cF9kZXNjID0gUGV4cF9hcnJheSBpbmRleGVzOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IDo6IHJlc3RcbiAgICAgICAgICAgICAgKSAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgaW5kZXhlcyByZXN0XG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIHwgKExpZGVudCBzIHwgTGRvdCAoXywgcykpLCBhIDo6IGkgOjogcmVzdCB3aGVuIGZpcnN0X2lzICcuJyBzIC0+XG4gICAgICAgICAgICAoKiBleHRyYWN0IG9wZXJhdG9yOlxuICAgICAgICAgICAgICAgYXNzaWdubWVudCBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXQgXiBcIjwtXCJdLFxuICAgICAgICAgICAgICAgYWNjZXNzIG9wZXJhdG9ycyBlbmQgd2l0aCBbcmlnaHRfYnJhY2tldF0gZGlyZWN0bHlcbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBsZXQgbXVsdGlfaW5kaWNlcyA9IFN0cmluZy5jb250YWlucyBzICc7JyBpblxuICAgICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgICBtYXRjaCBpLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hcnJheSBsIHdoZW4gbXVsdGlfaW5kaWNlcyAtPiBsXG4gICAgICAgICAgICAgIHwgXyAtPiBbIGkgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBsYXN0X2lzICctJyBzIGluXG4gICAgICAgICAgICBsZXQga2luZCA9XG4gICAgICAgICAgICAgICgqIGV4dHJhY3QgdGhlIHJpZ2h0IGVuZCBicmFja2V0ICopXG4gICAgICAgICAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIGlmIGFzc2lnbiB0aGVuIHMuW24gLSAzXSBlbHNlIHMuW24gLSAxXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0LCByaWdodCA9XG4gICAgICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgICB8ICcpJyAtPiAoJygnLCBcIilcIilcbiAgICAgICAgICAgICAgfCAnXScgLT4gKCdbJywgXCJdXCIpXG4gICAgICAgICAgICAgIHwgJ30nIC0+ICgneycsIFwifVwiKVxuICAgICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBhdGhfcHJlZml4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaWQgd2l0aCBMZG90IChtLCBfKSAtPiBTb21lIG0gfCBfIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCA9IFN0cmluZy5zdWIgcyAwICgxICsgU3RyaW5nLmluZGV4IHMgbGVmdCkgaW5cbiAgICAgICAgICAgIHByaW50X2luZGV4b3AgYSBwYXRoX3ByZWZpeCBhc3NpZ24gbGVmdCBcIjtcIiByaWdodFxuICAgICAgICAgICAgICAoaWYgbXVsdGlfaW5kaWNlcyB0aGVuIGV4cHJlc3Npb24gY3R4dCBlbHNlIHNpbXBsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgIGkgcmVzdFxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmFuZCBleHByZXNzaW9uIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKUAsJWEpXCIgKGV4cHJlc3Npb24gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGV4cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2Z1bmN0aW9uIF8gfCBQZXhwX2Z1biBfIHwgUGV4cF9tYXRjaCBfIHwgUGV4cF90cnkgXyB8IFBleHBfc2VxdWVuY2UgX1xuICAgIHwgUGV4cF9uZXd0eXBlIF9cbiAgICAgIHdoZW4gY3R4dC5waXBlIHx8IGN0eHQuc2VtaSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgKFBleHBfaWZ0aGVuZWxzZSBfIHwgUGV4cF9zZXF1ZW5jZSBfKSB3aGVuIGN0eHQuaWZ0aGVuZWxzZSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgUGV4cF9sZXQgXyB8IFBleHBfbGV0bW9kdWxlIF8gfCBQZXhwX29wZW4gXyB8IFBleHBfbGV0ZXhjZXB0aW9uIF9cbiAgICB8IFBleHBfbGV0b3AgX1xuICAgICAgd2hlbiBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfZnVuIChsLCBlMCwgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+ZnVuQDslYS0+QDslYUBdXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZTAsIHApXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9uZXd0eXBlIChsaWQsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7KHR5cGVAOyVzKUA7LT5AOyVhQF1cIiBsaWQudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfZnVuY3Rpb24gbCAtPiBwcCBmIFwiQFs8aHY+ZnVuY3Rpb24lYUBdXCIgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX21hdGNoIChlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2MD5AWzwyPm1hdGNoICVhQF1AIHdpdGhAXSVhQF1cIiAoZXhwcmVzc2lvbiByZXNldF9jdHh0KVxuICAgICAgICAgIGUgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX3RyeSAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8aHYyPnRyeUAgJWFAXUAgQFs8MD53aXRoJWFAXUBdXCJcbiAgICAgICAgICAoKiBcInRyeUA7QFs8Mj4lYUBdQFxcbndpdGhAXFxuJWFcIiopXG4gICAgICAgICAgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9sZXQgKHJmLCBsLCBlKSAtPlxuICAgICAgICAoKiBwcCBmIFwiQFs8Mj5sZXQgJWElYSBpbkA7PDEgLTI+JWFAXVwiXG4gICAgICAgICAgICgqbm8gaW5kZW50YXRpb24gaGVyZSwgYSBuZXcgbGluZSopICopXG4gICAgICAgICgqICAgcmVjX2ZsYWcgcmYgKilcbiAgICAgICAgcHAgZiBcIkBbPDI+JWEgaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ3MgcmVzZXRfY3R4dCkgKHJmLCBsKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXBwbHkgKGUsIGwpIC0+IChcbiAgICAgICAgaWYgbm90IChzdWdhcl9leHByIGN0eHQgZiB4KSB0aGVuXG4gICAgICAgICAgbWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIGUgd2l0aFxuICAgICAgICAgIHwgYEluZml4IHMgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbICgoTm9sYWJlbCwgXykgYXMgYXJnMSk7ICgoTm9sYWJlbCwgXykgYXMgYXJnMikgXSAtPlxuICAgICAgICAgICAgICAgICAgKCogRklYTUUgYXNzb2NpYXRpdml0eSBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gKilcbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhQDslc0A7JWFAXVwiXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMSBzXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgYFByZWZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMaXN0Lm1lbSBzIFsgXCJ+K1wiOyBcIn4tXCI7IFwifisuXCI7IFwifi0uXCIgXVxuICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgKCogU2VlICM3MjAwOiBhdm9pZCB0dXJuaW5nICh+LSAxKSBpbnRvICgtIDEpIHdoaWNoIGlzXG4gICAgICAgICAgICAgICAgICAgICBwYXJzZWQgYXMgYW4gaW50IGxpdGVyYWwgKilcbiAgICAgICAgICAgICAgICAgIHwgWyAoXywgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0YW50IF8gfSkgXSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgICAgICAgICAgICAgIGVsc2Ugc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbIChOb2xhYmVsLCB4KSBdIC0+IHBwIGYgXCJAWzwyPiVzQDslYUBdXCIgcyAoc2ltcGxlX2V4cHIgY3R4dCkgeFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUBdXCJcbiAgICAgICAgICAgICAgICAoZnVuIGYgKGUsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGV4cHJlc3Npb24yIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSByZXNldF9jdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgKCogcmVzZXQgaGVyZSBvbmx5IGJlY2F1c2UgW2Z1bmN0aW9uLG1hdGNoLHRyeSxzZXF1ZW5jZV1cbiAgICAgICAgICAgICAgICAgICAgIGFyZSBsb3dlciBwcmlvcml0eSAqKSlcbiAgICAgICAgICAgICAgICAoZSwgbCkpXG4gICAgfCBQZXhwX2NvbnN0cnVjdCAobGksIFNvbWUgZW8pIHdoZW4gbm90IChpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkpXG4gICAgICAtPiAoXG4gICAgICAgICgqIE5vdCBlZmZpY2llbnQgRklYTUUqKVxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYGNvbnMgbHMgLT4gbGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgZiBscyB+c2VwOlwiQDs6OkA7XCJcbiAgICAgICAgfCBgbm9ybWFsIC0+IHBwIGYgXCJAWzwyPiVhQDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZW9cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfc2V0ZmllbGQgKGUxLCBsaSwgZTIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhLiVhQCA8LUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlMSBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgKHNpbXBsZV9leHByIGN0eHQpIGUyXG4gICAgfCBQZXhwX2lmdGhlbmVsc2UgKGUxLCBlMiwgZW8pIC0+XG4gICAgICAgICgqIEA7QFs8Mj5lbHNlQCAlYUBdQF0gKilcbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPDI+aWZAICVhQF1AO0BbPDI+dGhlbkAgJWFAXSVhQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlID0gZXhwcmVzc2lvbiAodW5kZXJfaWZ0aGVuZWxzZSBjdHh0KSBpblxuICAgICAgICBwcCBmIGZtdCBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgZTEgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUyXG4gICAgICAgICAgKGZ1biBmIGVvIC0+XG4gICAgICAgICAgICBtYXRjaCBlbyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCJAO0BbPDI+ZWxzZUA7JWFAXVwiIChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICgqIHBwIGYgXCIoKVwiICopKVxuICAgICAgICAgIGVvXG4gICAgfCBQZXhwX3NlcXVlbmNlIF8gLT5cbiAgICAgICAgbGV0IHJlYyBzZXF1ZW5jZV9oZWxwZXIgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9zZXF1ZW5jZSAoZTEsIGUyKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBzZXF1ZW5jZV9oZWxwZXIgKGUxIDo6IGFjYykgZTJcbiAgICAgICAgICB8IHYgLT4gTGlzdC5yZXYgKHYgOjogYWNjKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbHN0ID0gc2VxdWVuY2VfaGVscGVyIFtdIHggaW5cbiAgICAgICAgcHAgZiBcIkBbPGh2PiVhQF1cIiAobGlzdCAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtAO1wiKSBsc3RcbiAgICB8IFBleHBfbmV3IGxpIC0+IHBwIGYgXCJAWzxob3YyPm5ld0AgJWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2V0aW5zdHZhciAocywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAIDwtQCAlYUBdXCIgcy50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9vdmVycmlkZSBsIC0+XG4gICAgICAgICgqIEZJWE1FICopXG4gICAgICAgIGxldCBzdHJpbmdfeF9leHByZXNzaW9uIGYgKHMsIGUpID1cbiAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lc0AgPUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+ezwlYT59QF1cIiAobGlzdCBzdHJpbmdfeF9leHByZXNzaW9uIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBleHBfbGV0bW9kdWxlIChzLCBtZSwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBtb2R1bGVAICVzQCA9QCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgKG1vZHVsZV9leHByIHJlc2V0X2N0eHQpIG1lIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChjZCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBleGNlcHRpb25AICVhQCBpbkAgJWFAXVwiXG4gICAgICAgICAgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KVxuICAgICAgICAgIGNkIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXNzZXJ0IGUgLT4gcHAgZiBcIkBbPGhvdjI+YXNzZXJ0QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfbGF6eSBlIC0+IHBwIGYgXCJAWzxob3YyPmxhenlAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICgqIFBleHBfcG9seTogaW1wb3NzaWJsZSBidXQgd2Ugc2hvdWxkIHByaW50IGl0IGFueXdheSwgcmF0aGVyIHRoYW5cbiAgICAgICBhc3NlcnQgZmFsc2UgKilcbiAgICB8IFBleHBfcG9seSAoZSwgTm9uZSkgLT4gcHAgZiBcIkBbPGhvdjI+IXBvbHkhQCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfcG9seSAoZSwgU29tZSBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCFwb2x5IUAgJWFAIDogJWEpQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG8ucG9wZW5fZXhwciAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIFNvbWUgZW8pIC0+IHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgfCBQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPkBbPHY+JWFALCVhQF0gaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ19vcCBjdHh0KSBsZXRfXG4gICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmdfb3AgY3R4dCkpXG4gICAgICAgICAgYW5kcyAoZXhwcmVzc2lvbiBjdHh0KSBib2R5XG4gICAgfCBQZXhwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBwcCBmIFwiLlwiXG4gICAgfCBfIC0+IGV4cHJlc3Npb24xIGN0eHQgZiB4XG5cbmFuZCBleHByZXNzaW9uMSBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9vYmplY3QgY3MgLT4gcHAgZiBcIiVhXCIgKGNsYXNzX3N0cnVjdHVyZSBjdHh0KSBjc1xuICAgIHwgXyAtPiBleHByZXNzaW9uMiBjdHh0IGYgeFxuKCogdXNlZCBpbiBbUGV4cF9hcHBseV0gKilcblxuYW5kIGV4cHJlc3Npb24yIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2ZpZWxkIChlLCBsaSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEuJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2VuZCAoZSwgcykgLT4gcHAgZiBcIkBbPGhvdjI+JWEjJXNAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIHMudHh0XG4gICAgfCBfIC0+IHNpbXBsZV9leHByIGN0eHQgZiB4XG5cbmFuZCBzaW1wbGVfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgXyB3aGVuIGlzX3NpbXBsZV9jb25zdHJ1Y3QgKHZpZXdfZXhwciB4KSAtPiAoXG4gICAgICAgIG1hdGNoIHZpZXdfZXhwciB4IHdpdGhcbiAgICAgICAgfCBgbmlsIC0+IHBwIGYgXCJbXVwiXG4gICAgICAgIHwgYHR1cGxlIC0+IHBwIGYgXCIoKVwiXG4gICAgICAgIHwgYGxpc3QgeHMgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxodjA+WyVhXUBdXCJcbiAgICAgICAgICAgICAgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICAgICAgeHNcbiAgICAgICAgfCBgc2ltcGxlIHggLT4gbG9uZ2lkZW50IGYgeFxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgUGV4cF9pZGVudCBsaSAtPiBsb25naWRlbnRfbG9jIGYgbGlcbiAgICAoKiAobWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIHggd2l0aCAqKVxuICAgICgqIHxgTm9ybWFsIC0+IGxvbmdpZGVudF9sb2MgZiBsaSAqKVxuICAgICgqIHwgYFByZWZpeCBfIHwgYEluZml4IF8gLT4gcHAgZiBcIiggJWEgKVwiIGxvbmdpZGVudF9sb2MgbGkpICopXG4gICAgfCBQZXhwX2NvbnN0YW50IGMgLT4gY29uc3RhbnQgZiBjXG4gICAgfCBQZXhwX3BhY2sgbWUgLT4gcHAgZiBcIihtb2R1bGVAOyVhKVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUGV4cF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYSlAXVwiIChsaXN0IChzaW1wbGVfZXhwciBjdHh0KSB+c2VwOlwiLEA7XCIpIGxcbiAgICB8IFBleHBfY29uc3RyYWludCAoZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWEgOiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfY29lcmNlIChlLCBjdG8xLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYSVhIDo+ICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICAob3B0aW9uIChjb3JlX3R5cGUgY3R4dCkgfmZpcnN0OlwiIDogXCIgfmxhc3Q6XCIgXCIpXG4gICAgICAgICAgY3RvMVxuICAgICAgICAgICgqIG5vIHNlcCBoaW50KikgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICAgIGN0XG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIE5vbmUpIC0+IHBwIGYgXCJgJXNcIiBsXG4gICAgfCBQZXhwX3JlY29yZCAobCwgZW8pIC0+XG4gICAgICAgIGxldCBsb25naWRlbnRfeF9leHByZXNzaW9uIGYgKGxpLCBlKSA9XG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfVxuICAgICAgICAgICAgd2hlbiBsaS50eHQgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPntAOyVhJWFAXUA7fUBdXCIgKCogXCJAWzxob3YyPnslYSVhfUBdXCIgKilcbiAgICAgICAgICAob3B0aW9uIH5sYXN0OlwiIHdpdGhAO1wiIChzaW1wbGVfZXhwciBjdHh0KSlcbiAgICAgICAgICBlb1xuICAgICAgICAgIChsaXN0IGxvbmdpZGVudF94X2V4cHJlc3Npb24gfnNlcDpcIjtAO1wiKVxuICAgICAgICAgIGxcbiAgICB8IFBleHBfYXJyYXkgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MD5AWzwyPlt8JWF8XUBdQF1cIlxuICAgICAgICAgIChsaXN0IChzaW1wbGVfZXhwciAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX3doaWxlIChlMSwgZTIpIC0+XG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID0gXCJAWzwyPndoaWxlQDslYUA7ZG9AOyVhQDtkb25lQF1cIiBpblxuICAgICAgICBwcCBmIGZtdCAoZXhwcmVzc2lvbiBjdHh0KSBlMSAoZXhwcmVzc2lvbiBjdHh0KSBlMlxuICAgIHwgUGV4cF9mb3IgKHMsIGUxLCBlMiwgZGYsIGUzKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgICAgICAgXCJAWzxodjA+QFs8aHYyPkBbPDI+Zm9yICVhID1AOyVhQDslYSVhQDtkb0BdQDslYUBdQDtkb25lQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24gY3R4dCBpblxuICAgICAgICBwcCBmIGZtdCAocGF0dGVybiBjdHh0KSBzIGV4cHJlc3Npb24gZTEgZGlyZWN0aW9uX2ZsYWcgZGYgZXhwcmVzc2lvbiBlMlxuICAgICAgICAgIGV4cHJlc3Npb24gZTNcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiBjdHh0KSBmIHhcblxuYW5kIGF0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGF0dHJpYnV0ZSBjdHh0IGYpIGxcbmFuZCBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGl0ZW1fYXR0cmlidXRlIGN0eHQgZikgbFxuXG5hbmQgYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBpdGVtX2F0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IGYgeCA9XG4gICgqIG5vdGU6IHZhbHVlX2Rlc2NyaXB0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgICAgICAgIGJ1dCB0aGV5J3JlIGFscmVhZHkgcHJpbnRlZCBieSB0aGUgY2FsbGVycyB0aGlzIG1ldGhvZCAqKVxuICBwcCBmIFwiQFs8aG92Mj4lYSVhQF1cIiAoY29yZV90eXBlIGN0eHQpIHgucHZhbF90eXBlXG4gICAgKGZ1biBmIHggLT5cbiAgICAgIGlmIHgucHZhbF9wcmltIDw+IFtdIHRoZW5cbiAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobGlzdCBjb25zdGFudF9zdHJpbmcpIHgucHZhbF9wcmltKVxuICAgIHhcblxuYW5kIGV4dGVuc2lvbiBjdHh0IGYgKHMsIGUpID0gcHAgZiBcIkBbPDI+WyUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgaXRlbV9leHRlbnNpb24gY3R4dCBmIChzLCBlKSA9XG4gIHBwIGYgXCJAWzwyPlslJSUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgcHAgZiBcIkBbPGhvdjI+ZXhjZXB0aW9uQCAlYUBdJWFcIlxuICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICB4LnB0eWV4bl9jb25zdHJ1Y3RvciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXhuX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3R5cGVfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdGZfZGVzYyB3aXRoXG4gIHwgUGN0Zl9pbmhlcml0IGN0IC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlYUBdJWFcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl92YWwgKHMsIG1mLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwgQCAlYSVhJXNAIDpAICVhQF0lYVwiIG11dGFibGVfZmxhZyBtZiB2aXJ0dWFsX2ZsYWcgdmYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9tZXRob2QgKHMsIHBmLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QgJWEgJWElcyA6QDslYUBdJWFcIiBwcml2YXRlX2ZsYWcgcGYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfY29uc3RyYWludCAoY3QxLCBjdDIpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5jb25zdHJhaW50QCAlYUAgPUAgJWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDFcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUGN0Zl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGN0Zl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgY3R4dCBmIHsgcGNzaWdfc2VsZiA9IGN0OyBwY3NpZ19maWVsZHMgPSBsOyBfIH0gPVxuICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5vYmplY3RAWzwxPiVhQF1AICVhQF1AIGVuZEBdXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FueTsgcHR5cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPiAoKVxuICAgICAgfCBjdCAtPiBwcCBmIFwiICglYSlcIiAoY29yZV90eXBlIGN0eHQpIGN0KVxuICAgIGN0XG4gICAgKGxpc3QgKGNsYXNzX3R5cGVfZmllbGQgY3R4dCkgfnNlcDpcIkA7XCIpXG4gICAgbFxuXG4oKiBjYWxsIFtjbGFzc19zaWduYXR1cmVdIGNhbGxlZCBieSBbY2xhc3Nfc2lnbmF0dXJlXSAqKVxuYW5kIGNsYXNzX3R5cGUgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdHlfZGVzYyB3aXRoXG4gIHwgUGN0eV9zaWduYXR1cmUgY3MgLT5cbiAgICAgIGNsYXNzX3NpZ25hdHVyZSBjdHh0IGYgY3M7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgIHBwIGYgXCIlYSVhJWFcIlxuICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpIChhdHRyaWJ1dGVzIGN0eHQpIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9hcnJvdyAobCwgY28sIGNsKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjbykgKGNsYXNzX3R5cGUgY3R4dCkgY2xcbiAgfCBQY3R5X2V4dGVuc2lvbiBlIC0+XG4gICAgICBleHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfb3BlbiAobywgZSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX3R5cGUgY3R4dCkgZVxuXG4oKiBbY2xhc3MgdHlwZSBhID0gb2JqZWN0IGVuZF0gKilcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGwgPVxuICBsZXQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBrd2QgZiB4ID1cbiAgICBsZXQgeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9ID0geCBpblxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0AgPUAgJWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHQgKGNsYXNzX3R5cGUgY3R4dCkgeC5wY2lfZXhwclxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiY2xhc3MgdHlwZVwiKVxuICAgICAgICB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICB4c1xuXG5hbmQgY2xhc3NfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjZl9kZXNjIHdpdGhcbiAgfCBQY2ZfaW5oZXJpdCAob3ZmLCBjZSwgc28pIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlc0AgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgICAgICAoZnVuIGYgc28gLT5cbiAgICAgICAgICBtYXRjaCBzbyB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHMgLT4gcHAgZiBcIkAgYXMgJXNcIiBzLnR4dClcbiAgICAgICAgc28gKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCVzICVhJXMgPUA7JWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kIHZpcnR1YWwgJWEgJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIHZpcnR1YWwgJWElcyA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfbWV0aG9kIChzLCBwZiwgQ2ZrX2NvbmNyZXRlIChvdmYsIGUpKSAtPlxuICAgICAgbGV0IGJpbmQgZSA9XG4gICAgICAgIGJpbmRpbmcgY3R4dCBmXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX3BhdCA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBzO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBlO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QlcyAlYSVhQF0lYVwiIChvdmVycmlkZSBvdmYpIHByaXZhdGVfZmxhZyBwZlxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBTb21lIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJXMgOkA7JWE9QDslYVwiIHMudHh0IChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3BvbHkgKGUsIE5vbmUpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+XG4gICAgICAgICAgICAgIGJpbmQgZVxuICAgICAgICAgIHwgXyAtPiBiaW5kIGUpXG4gICAgICAgIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludCAlYSA9QDslYUBdJWFcIiAoY29yZV90eXBlIGN0eHQpIGN0MSAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgIGN0MiAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgZSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5pdGlhbGl6ZXJAICVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjZl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGNmX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgeyBwY3N0cl9zZWxmID0gcDsgcGNzdHJfZmllbGRzID0gbCB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0JWFAOyVhQF1AO2VuZEBdXCJcbiAgICAoZnVuIGYgcCAtPlxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X2FueSAtPiAoKVxuICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgXyAtPiBwcCBmIFwiICVhXCIgKHBhdHRlcm4gY3R4dCkgcFxuICAgICAgfCBfIC0+IHBwIGYgXCIgKCVhKVwiIChwYXR0ZXJuIGN0eHQpIHApXG4gICAgcFxuICAgIChsaXN0IChjbGFzc19maWVsZCBjdHh0KSlcbiAgICBsXG5cbmFuZCBjbGFzc19leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wY2xfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wY2xfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wY2xfZGVzYyB3aXRoXG4gICAgfCBQY2xfc3RydWN0dXJlIGNzIC0+IGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgY3NcbiAgICB8IFBjbF9mdW4gKGwsIGVvLCBwLCBlKSAtPlxuICAgICAgICBwcCBmIFwiZnVuQCAlYUAgLT5AICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZW8sIHApIChjbGFzc19leHByIGN0eHQpIGVcbiAgICB8IFBjbF9sZXQgKHJmLCBsLCBjZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQCBpbkAgJWFcIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgIHwgUGNsX2FwcGx5IChjZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIigoJWEpQCAlYSlcIlxuICAgICAgICAgICgqIENmOiAjNzIwMCAqKSAoY2xhc3NfZXhwciBjdHh0KVxuICAgICAgICAgIGNlXG4gICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICBsXG4gICAgfCBQY2xfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIiVhJWFcIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBpZiBsIDw+IFtdIHRoZW4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBjbF9jb25zdHJhaW50IChjZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWFAIDpAICVhKVwiIChjbGFzc19leHByIGN0eHQpIGNlIChjbGFzc190eXBlIGN0eHQpIGN0XG4gICAgfCBQY2xfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQY2xfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX2V4cHIgY3R4dCkgZVxuXG5hbmQgbW9kdWxlX3R5cGUgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtdHlfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBtdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3IgKCkgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgfCBQbXR5X2Z1bmN0b3IgKE5hbWVkIChzLCBtdDEpLCBtdDIpIC0+IChcbiAgICAgICAgbWF0Y2ggcy50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCAtPkAgJWFAXVwiIChtb2R1bGVfdHlwZTEgY3R4dCkgbXQxXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDJcbiAgICAgICAgfCBTb21lIG5hbWUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3JAICglc0AgOkAgJWEpQCAtPkAgJWFAXVwiIG5hbWVcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10MSAobW9kdWxlX3R5cGUgY3R4dCkgbXQyKVxuICAgIHwgUG10eV93aXRoIChtdCwgW10pIC0+IG1vZHVsZV90eXBlIGN0eHQgZiBtdFxuICAgIHwgUG10eV93aXRoIChtdCwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAIHdpdGhAICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10XG4gICAgICAgICAgKGxpc3QgKHdpdGhfY29uc3RyYWludCBjdHh0KSB+c2VwOlwiQCBhbmRAIFwiKVxuICAgICAgICAgIGxcbiAgICB8IF8gLT4gbW9kdWxlX3R5cGUxIGN0eHQgZiB4XG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQd2l0aF90eXBlIChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2R1bGUgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGUgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgPUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcbiAgfCBQd2l0aF90eXBlc3Vic3QgKGxpLCAoeyBwdHlwZV9wYXJhbXMgPSBsczsgXyB9IGFzIHRkKSkgLT5cbiAgICAgIGxldCBscyA9IExpc3QubWFwIGZzdCBscyBpblxuICAgICAgcHAgZiBcInR5cGVAICVhICVhIDo9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2RzdWJzdCAobGksIGxpMikgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCAobGksIG10eSkgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgdHlwZSAlYSA6PUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcblxuYW5kIG1vZHVsZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucG10eV9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gbW9kdWxlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfaWRlbnQgbGkgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9hbGlhcyBsaSAtPiBwcCBmIFwiKG1vZHVsZSAlYSlcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBzIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPnNpZ0AgJWFAXUAgZW5kQF1cIiAoKiBcIkBbPGhvdj5zaWdAICVhQCBlbmRAXVwiICopXG4gICAgICAgICAgKGxpc3QgKHNpZ25hdHVyZV9pdGVtIGN0eHQpKVxuICAgICAgICAgIHNcbiAgICAgICAgKCogRklYTUUgd3JvbmcgaW5kZW50YXRpb24qKVxuICAgIHwgUG10eV90eXBlb2YgbWUgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCBvZkAgJWFAXVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG10eV9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAobW9kdWxlX3R5cGUgY3R4dCkgZiB4XG5cbmFuZCBzaWduYXR1cmUgY3R4dCBmIHggPSBsaXN0IH5zZXA6XCJAXFxuXCIgKHNpZ25hdHVyZV9pdGVtIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gY3R4dCBmIHggOiB1bml0ID1cbiAgbWF0Y2ggeC5wc2lnX2Rlc2Mgd2l0aFxuICB8IFBzaWdfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc2lnX3R5cGVzdWJzdCBsIC0+XG4gICAgICAoKiBQc2lnX3R5cGVzdWJzdCBpcyBuZXZlciByZWN1cnNpdmUsIGJ1dCB3ZSBzcGVjaWZ5IFtSZWN1cnNpdmVdIGhlcmUgdG9cbiAgICAgICAgIGF2b2lkIHByaW50aW5nIGEgW25vbnJlY10gZmxhZywgd2hpY2ggd291bGQgYmUgcmVqZWN0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICopXG4gICAgICB0eXBlX2RlZl9saXN0IGN0eHQgZiAoUmVjdXJzaXZlLCBmYWxzZSwgbClcbiAgfCBQc2lnX3ZhbHVlIHZkIC0+XG4gICAgICBsZXQgaW50cm8gPSBpZiB2ZC5wdmFsX3ByaW0gPSBbXSB0aGVuIFwidmFsXCIgZWxzZSBcImV4dGVybmFsXCIgaW5cbiAgICAgIHBwIGYgXCJAWzwyPiVzQCAlYUAgOkAgJWFAXSVhXCIgaW50cm8gcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzaWdfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzaWdfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc2lnX2NsYXNzIGwgLT4gKFxuICAgICAgbGV0IGNsYXNzX2Rlc2NyaXB0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0A7OkA7JWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVzY3JpcHRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZXNjcmlwdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzaWdfbW9kdWxlXG4gICAgICAoe1xuICAgICAgICAgcG1kX3R5cGUgPSB7IHBtdHlfZGVzYyA9IFBtdHlfYWxpYXMgYWxpYXM7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcG1kKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIGxvbmdpZGVudF9sb2MgYWxpYXMgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHVsZSBwbWQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOkAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2RzdWJzdCBwbXMgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOj1AICVhQF0lYVwiIHBtcy5wbXNfbmFtZS50eHQgbG9uZ2lkZW50X2xvY1xuICAgICAgICBwbXMucG1zX21hbmlmZXN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1zLnBtc19hdHRyaWJ1dGVzXG4gIHwgUHNpZ19vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5vcGVuJXNAICVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzaWdfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHR5cGUgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlcyVhQF0lYVwiIHMudHh0XG4gICAgICAgIChmdW4gZiBtZCAtPlxuICAgICAgICAgIG1hdGNoIG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgcHBfcHJpbnRfc3BhY2UgZiAoKTtcbiAgICAgICAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQpXG4gICAgICAgIG1kIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgLT5cbiAgICAgIGxldCBtZCA9XG4gICAgICAgIG1hdGNoIG1kIHdpdGggTm9uZSAtPiBhc3NlcnQgZmFsc2UgKCogYXN0IGludmFyaWFudCAqKSB8IFNvbWUgbXQgLT4gbXRcbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzQCA6PUAgJWFAXSVhXCIgcy50eHQgKG1vZHVsZV90eXBlIGN0eHQpIG1kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX2NsYXNzX3R5cGUgbCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGxcbiAgfCBQc2lnX3JlY21vZHVsZSBkZWNscyAtPlxuICAgICAgbGV0IHJlYyBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgPyhmaXJzdCA9IHRydWUpIGwgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IHBtZCA6OiB0bCAtPlxuICAgICAgICAgICAgaWYgbm90IGZpcnN0IHRoZW5cbiAgICAgICAgICAgICAgcHAgZiBcIkAgQFs8aG92Mj5hbmRAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUxIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmIH5maXJzdDpmYWxzZSB0bFxuICAgICAgaW5cbiAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiBkZWNsc1xuICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHNpZ19leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgbW9kdWxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBtb2RfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtb2RfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYyPnN0cnVjdEA7QFs8MD4lYUBdQDs8MSAtMj5lbmRAXVwiXG4gICAgICAgICAgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIGN0eHQpIH5zZXA6XCJAXFxuXCIpXG4gICAgICAgICAgc1xuICAgIHwgUG1vZF9jb25zdHJhaW50IChtZSwgbXQpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYUAgOkAgJWEpQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUgKG1vZHVsZV90eXBlIGN0eHQpIG10XG4gICAgfCBQbW9kX2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtb2RfZnVuY3RvciAoVW5pdCwgbWUpIC0+IHBwIGYgXCJmdW5jdG9yICgpQDstPkA7JWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKHMsIG10KSwgbWUpIC0+XG4gICAgICAgIHBwIGYgXCJmdW5jdG9yQCAoJXNAIDpAICVhKUA7LT5AOyVhXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfYXBwbHkgKG1lMSwgbWUyKSAtPlxuICAgICAgICBwcCBmIFwiKCVhKSglYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUxIChtb2R1bGVfZXhwciBjdHh0KSBtZTJcbiAgICAgICAgKCogQ2Y6ICM3MjAwICopXG4gICAgfCBQbW9kX3VucGFjayBlIC0+IHBwIGYgXCIodmFsQCAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuXG5hbmQgc3RydWN0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHBheWxvYWQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGUsIGF0dHJzKSB9IF0gLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBTdHIgeCAtPiBzdHJ1Y3R1cmUgY3R4dCBmIHhcbiAgfCBQVHlwIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIGNvcmVfdHlwZSBjdHh0IGYgeFxuICB8IFBTaWcgeCAtPlxuICAgICAgcHAgZiBcIjpAIFwiO1xuICAgICAgc2lnbmF0dXJlIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgTm9uZSkgLT5cbiAgICAgIHBwIGYgXCI/QCBcIjtcbiAgICAgIHBhdHRlcm4gY3R4dCBmIHhcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4O1xuICAgICAgcHAgZiBcIiB3aGVuIFwiO1xuICAgICAgZXhwcmVzc2lvbiBjdHh0IGYgZVxuXG4oKiB0cmFuc2Zvcm0gW2YgPSBmdW4gZyBoIC0+IC4uXSB0byBbZiBnIGggPSAuLi4gXSBjb3VsZCBiZSBpbXByb3ZlZCAqKVxuYW5kIGJpbmRpbmcgY3R4dCBmIHsgcHZiX3BhdCA9IHA7IHB2Yl9leHByID0geDsgXyB9ID1cbiAgKCogLnB2Yl9hdHRyaWJ1dGVzIGhhdmUgYWxyZWFkeSBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciwgI2JpbmRpbmdzICopXG4gIGxldCByZWMgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBmIHggPVxuICAgIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcHAgZiBcIj1AOyVhXCIgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9mdW4gKGxhYmVsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgICBpZiBsYWJlbCA9IE5vbGFiZWwgdGhlblxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAobGFiZWxfZXhwIGN0eHQpIChsYWJlbCwgZW8sIHApIHBwX3ByaW50X3BleHBfZnVuY3Rpb25cbiAgICAgICAgICAgICAgZVxuICAgICAgfCBQZXhwX25ld3R5cGUgKHN0ciwgZSkgLT5cbiAgICAgICAgICBwcCBmIFwiKHR5cGVAICVzKUAgJWFcIiBzdHIudHh0IHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgfCBfIC0+IHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgaW5cbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB0eXZhcnMgaW5cbiAgbGV0IGlzX2Rlc3VnYXJlZF9nYWR0IHAgZSA9XG4gICAgbGV0IGdhZHRfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoYXJnc190eXZhcnMsIHJ0KSB9ICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgU29tZSAocGF0LCBhcmdzX3R5dmFycywgcnQpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyBnYWR0X2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIGdhZHRfZXhwICh0eXZhciA6OiB0eXZhcnMpIGVcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIFNvbWUgKExpc3QucmV2IHR5dmFycywgZSwgY3QpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IGdhZHRfZXhwID0gZ2FkdF9leHAgW10gZSBpblxuICAgIG1hdGNoIChnYWR0X3BhdHRlcm4sIGdhZHRfZXhwKSB3aXRoXG4gICAgfCBTb21lIChwLCBwdF90eXZhcnMsIHB0X2N0KSwgU29tZSAoZV90eXZhcnMsIGUsIGVfY3QpXG4gICAgICB3aGVuIHR5dmFyc19zdHIgcHRfdHl2YXJzID0gdHl2YXJzX3N0ciBlX3R5dmFycyAtPlxuICAgICAgICBsZXQgZXR5ID0gdmFyaWZ5X3R5cGVfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlbiBTb21lIChwLCBwdF90eXZhcnMsIGVfY3QsIGUpIGVsc2UgTm9uZVxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IHtcbiAgICAgcHBhdF9kZXNjID1cbiAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICh7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwKSApO1xuICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgXztcbiAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiAlYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0IChjb3JlX3R5cGUgY3R4dCkgdHlwXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIHwgXyAtPiBwcCBmIFwiJWFAOz1AOyVhXCIgKHBhdHRlcm4gY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGVsc2VcbiAgICBtYXRjaCBpc19kZXN1Z2FyZWRfZ2FkdCBwIHggd2l0aFxuICAgIHwgU29tZSAocCwgW10sIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFNvbWUgKHAsIHR5dmFycywgY3QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiB0eXBlQDslYS5AOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgICAgICAgKGxpc3QgcHBfcHJpbnRfc3RyaW5nIH5zZXA6XCJAO1wiKVxuICAgICAgICAgICh0eXZhcnNfc3RyIHR5dmFycykgKGNvcmVfdHlwZSBjdHh0KSBjdCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cmFpbnQgKHAsIHR5KTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPiAoXG4gICAgICAgICAgICAoKiBzcGVjaWFsIGNhc2UgZm9yIHRoZSBmaXJzdCopXG4gICAgICAgICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICAgICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiJWFAOzpAOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICAgICAgICAgIHR5IChleHByZXNzaW9uIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJWFAOzpAOyVhKUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4KVxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24geFxuICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeClcblxuKCogW2luXSBpcyBub3QgcHJpbnRlZCAqKVxuYW5kIGJpbmRpbmdzIGN0eHQgZiAocmYsIGwpID1cbiAgbGV0IGJpbmRpbmcga3dkIHJmIGYgeCA9XG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYUBdJWFcIiBrd2QgcmVjX2ZsYWcgcmYgKGJpbmRpbmcgY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB2Yl9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gYmluZGluZyBcImxldFwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKGJpbmRpbmcgXCJsZXRcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoYmluZGluZyBcImFuZFwiIE5vbnJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCBiaW5kaW5nX29wIGN0eHQgZiB4ID1cbiAgbWF0Y2ggKHgucGJvcF9wYXQsIHgucGJvcF9leHApIHdpdGhcbiAgfCAoIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQgPSBwdmFyOyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICB7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgZXZhcjsgXyB9O1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgXztcbiAgICAgIH0gKVxuICAgIHdoZW4gcHZhciA9IGV2YXIgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVzQF1cIiB4LnBib3Bfb3AudHh0IGV2YXJcbiAgfCBwYXQsIGV4cCAtPlxuICAgICAgcHAgZiBcIkBbPDI+JXMgJWFAOz1AOyVhQF1cIiB4LnBib3Bfb3AudHh0IChwYXR0ZXJuIGN0eHQpIHBhdFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBleHBcblxuYW5kIHN0cnVjdHVyZV9pdGVtIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wc3RyX2Rlc2Mgd2l0aFxuICB8IFBzdHJfZXZhbCAoZSwgYXR0cnMpIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj47OyVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfdHlwZSAoXywgW10pIC0+IGFzc2VydCBmYWxzZVxuICB8IFBzdHJfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc3RyX3ZhbHVlIChyZiwgbCkgLT5cbiAgICAgICgqIHBwIGYgXCJAWzxob3YyPmxldCAlYSVhQF1cIiAgcmVjX2ZsYWcgcmYgYmluZGluZ3MgbCAqKVxuICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIChiaW5kaW5ncyBjdHh0KSAocmYsIGwpXG4gIHwgUHN0cl90eXBleHQgdGUgLT4gdHlwZV9leHRlbnNpb24gY3R4dCBmIHRlXG4gIHwgUHN0cl9leGNlcHRpb24gZWQgLT4gZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiBlZFxuICB8IFBzdHJfbW9kdWxlIHggLT5cbiAgICAgIGxldCByZWMgbW9kdWxlX2hlbHBlciA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKGFyZ19vcHQsIG1lJyk7IHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIChtYXRjaCBhcmdfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgVW5pdCAtPiBwcCBmIFwiKClcIlxuICAgICAgICAgICAgfCBOYW1lZCAocywgbXQpIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiglczolYSlcIlxuICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCk7XG4gICAgICAgICAgICBtb2R1bGVfaGVscGVyIG1lJ1xuICAgICAgICB8IG1lIC0+IG1lXG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlICVzJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSB4LnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKGZ1biBmIG1lIC0+XG4gICAgICAgICAgbGV0IG1lID0gbW9kdWxlX2hlbHBlciBtZSBpblxuICAgICAgICAgIG1hdGNoIG1lIHdpdGhcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcG1vZF9kZXNjID1cbiAgICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgIChtZScsICh7IHBtdHlfZGVzYyA9IFBtdHlfaWRlbnQgXyB8IFBtdHlfc2lnbmF0dXJlIF87IF8gfSBhcyBtdCkpO1xuICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIgOkA7JWFAOz1AOyVhQDtcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgICAgbWUnXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCIgPUAgJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUpXG4gICAgICAgIHgucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBtYl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5vcGVuJXNAOyVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG9kLnBvcGVuX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICBvZC5wb3Blbl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHN0cl9jbGFzcyBsIC0+IChcbiAgICAgIGxldCBleHRyYWN0X2NsYXNzX2FyZ3MgY2wgPVxuICAgICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGNsX2Rlc2MgPSBQY2xfZnVuIChsLCBlbywgcCwgY2wnKTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIGxvb3AgKChsLCBlbywgcCkgOjogYWNjKSBjbCdcbiAgICAgICAgICB8IGNsIC0+IChMaXN0LnJldiBhY2MsIGNsKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXJncywgY2wgPSBsb29wIFtdIGNsIGluXG4gICAgICAgIGxldCBjb25zdHIsIGNsID1cbiAgICAgICAgICBtYXRjaCBjbCB3aXRoXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2NvbnN0cmFpbnQgKGNsJywgY3QpOyBwY2xfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgKFNvbWUgY3QsIGNsJylcbiAgICAgICAgICB8IF8gLT4gKE5vbmUsIGNsKVxuICAgICAgICBpblxuICAgICAgICAoYXJncywgY29uc3RyLCBjbClcbiAgICAgIGluXG4gICAgICBsZXQgY2xhc3NfY29uc3RyYWludCBmIGN0ID0gcHAgZiBcIjogQFslYUBdIFwiIChjbGFzc190eXBlIGN0eHQpIGN0IGluXG4gICAgICBsZXQgY2xhc3NfZGVjbGFyYXRpb24ga3dkIGZcbiAgICAgICAgICAoeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9IGFzIHgpID1cbiAgICAgICAgbGV0IGFyZ3MsIGNvbnN0ciwgY2wgPSBleHRyYWN0X2NsYXNzX2FyZ3MgeC5wY2lfZXhwciBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMgJWElYT1AOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dFxuICAgICAgICAgIChsaXN0IChsYWJlbF9leHAgY3R4dCkpXG4gICAgICAgICAgYXJncyAob3B0aW9uIGNsYXNzX2NvbnN0cmFpbnQpIGNvbnN0ciAoY2xhc3NfZXhwciBjdHh0KSBjbFxuICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBbIHggXSAtPiBjbGFzc19kZWNsYXJhdGlvbiBcImNsYXNzXCIgZiB4XG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgICAgICAoY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiKVxuICAgICAgICAgICAgeFxuICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICAgICAgeHMpXG4gIHwgUHN0cl9jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHN0cl9wcmltaXRpdmUgdmQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmV4dGVybmFsQCAlYUAgOkAgJWFAXSVhXCIgcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzdHJfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX3JlY21vZHVsZSBkZWNscyAtPiAoXG4gICAgICAoKiAzLjA3ICopXG4gICAgICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1iX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfY29uc3RyYWludCAoZXhwciwgdHlwKSB9IH0gYXMgcG1iIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGFuZEAgJXM6JWFAID1AICVhQF0lYVwiXG4gICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICB8IHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBkZWNscyB3aXRoXG4gICAgICB8ICh7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYilcbiAgICAgICAgOjogbDIgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8aHY+QFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6JWFAID1AICVhQF0lYUAgJWFAXVwiXG4gICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgdHlwIChtb2R1bGVfZXhwciBjdHh0KSBleHByXG4gICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICAgICAgKGZ1biBmIGwyIC0+IExpc3QuaXRlciAoYXV4IGYpIGwyKVxuICAgICAgICAgICAgbDJcbiAgICAgIHwgcG1iIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIHBtYi5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHN0cl9leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgdHlwZV9wYXJhbSBjdHh0IGYgKGN0LCAoYSwgYikpID1cbiAgcHAgZiBcIiVzJXMlYVwiICh0eXBlX3ZhcmlhbmNlIGEpICh0eXBlX2luamVjdGl2aXR5IGIpIChjb3JlX3R5cGUgY3R4dCkgY3RcblxuYW5kIHR5cGVfcGFyYW1zIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBsIC0+IHBwIGYgXCIlYSBcIiAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIgfnNlcDpcIixAO1wiKSBsXG5cbmFuZCB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIGV4cG9ydGVkLCBsKSA9XG4gIGxldCB0eXBlX2RlY2wga3dkIHJmIGYgeCA9XG4gICAgbGV0IGVxID1cbiAgICAgIGlmIHgucHR5cGVfa2luZCA9IFB0eXBlX2Fic3RyYWN0ICYmIHgucHR5cGVfbWFuaWZlc3QgPSBOb25lIHRoZW4gXCJcIlxuICAgICAgZWxzZSBpZiBleHBvcnRlZCB0aGVuIFwiID1cIlxuICAgICAgZWxzZSBcIiA6PVwiXG4gICAgaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMlcyVhQF0lYVwiIGt3ZCBub25yZWNfZmxhZyByZiAodHlwZV9wYXJhbXMgY3R4dClcbiAgICAgIHgucHR5cGVfcGFyYW1zIHgucHR5cGVfbmFtZS50eHQgZXEgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgWyB4IF0gLT4gdHlwZV9kZWNsIFwidHlwZVwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKHR5cGVfZGVjbCBcInR5cGVcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAodHlwZV9kZWNsIFwiYW5kXCIgUmVjdXJzaXZlKSlcbiAgICAgICAgeHNcblxuYW5kIHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0IGYgbGJscyA9XG4gIGxldCB0eXBlX3JlY29yZF9maWVsZCBmIHBsZCA9XG4gICAgcHAgZiBcIkBbPDI+JWElczpAOyVhQDslYUBdXCIgbXV0YWJsZV9mbGFnIHBsZC5wbGRfbXV0YWJsZSBwbGQucGxkX25hbWUudHh0XG4gICAgICAoY29yZV90eXBlIGN0eHQpIHBsZC5wbGRfdHlwZSAoYXR0cmlidXRlcyBjdHh0KSBwbGQucGxkX2F0dHJpYnV0ZXNcbiAgaW5cbiAgcHAgZiBcIntAXFxuJWF9XCIgKGxpc3QgdHlwZV9yZWNvcmRfZmllbGQgfnNlcDpcIjtAXFxuXCIpIGxibHNcblxuYW5kIHR5cGVfZGVjbGFyYXRpb24gY3R4dCBmIHggPVxuICAoKiB0eXBlX2RlY2xhcmF0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgIGJ1dCBpdCdzIGJlZW4gcHJpbnRlZCBieSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kICopXG4gIGxldCBwcml2IGYgPVxuICAgIG1hdGNoIHgucHR5cGVfcHJpdmF0ZSB3aXRoIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcIkA7cHJpdmF0ZVwiXG4gIGluXG4gIGxldCBtYW5pZmVzdCBmID1cbiAgICBtYXRjaCB4LnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeSAtPlxuICAgICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCB0aGVuXG4gICAgICAgICAgcHAgZiBcIiV0QDslYVwiIHByaXYgKGNvcmVfdHlwZSBjdHh0KSB5XG4gICAgICAgIGVsc2UgcHAgZiBcIkA7JWFcIiAoY29yZV90eXBlIGN0eHQpIHlcbiAgaW5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGYgcGNkID1cbiAgICBwcCBmIFwifEA7XCI7XG4gICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAoIHBjZC5wY2RfbmFtZS50eHQsXG4gICAgICAgIHBjZC5wY2RfdmFycyxcbiAgICAgICAgcGNkLnBjZF9hcmdzLFxuICAgICAgICBwY2QucGNkX3JlcyxcbiAgICAgICAgcGNkLnBjZF9hdHRyaWJ1dGVzIClcbiAgaW5cbiAgbGV0IHJlcHIgZiA9XG4gICAgbGV0IGludHJvIGYgPSBpZiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuICgpIGVsc2UgcHAgZiBcIkA7PVwiIGluXG4gICAgbWF0Y2ggeC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgeHMgLT5cbiAgICAgICAgbGV0IHZhcmlhbnRzIGZtdCB4cyA9XG4gICAgICAgICAgaWYgeHMgPSBbXSB0aGVuIHBwIGZtdCBcIiB8XCJcbiAgICAgICAgICBlbHNlIHBwIGZtdCBcIkBcXG4lYVwiIChsaXN0IH5zZXA6XCJAXFxuXCIgY29uc3RydWN0b3JfZGVjbGFyYXRpb24pIHhzXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCIldCV0JWFcIiBpbnRybyBwcml2IHZhcmlhbnRzIHhzXG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoKVxuICAgIHwgUHR5cGVfcmVjb3JkIGwgLT4gcHAgZiBcIiV0JXRAOyVhXCIgaW50cm8gcHJpdiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGxcbiAgICB8IFB0eXBlX29wZW4gLT4gcHAgZiBcIiV0JXRAOy4uXCIgaW50cm8gcHJpdlxuICBpblxuICBsZXQgY29uc3RyYWludHMgZiA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChjdDEsIGN0MiwgXykgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBjb25zdHJhaW50QCAlYUAgPUAgJWFAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIpXG4gICAgICB4LnB0eXBlX2NzdHJzXG4gIGluXG4gIHBwIGYgXCIldCV0JXRcIiBtYW5pZmVzdCByZXByIGNvbnN0cmFpbnRzXG5cbmFuZCB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgeCA9XG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgZiB4ID1cbiAgICBwcCBmIFwiQFxcbnxAOyVhXCIgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KSB4XG4gIGluXG4gIHBwIGYgXCJAWzwyPnR5cGUgJWElYSArPSAlYUAgJWFAXSVhXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIHBwIGYgXCIlYUA7XCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsXCIpIGwpXG4gICAgeC5wdHlleHRfcGFyYW1zIGxvbmdpZGVudF9sb2MgeC5wdHlleHRfcGF0aCBwcml2YXRlX2ZsYWdcbiAgICB4LnB0eWV4dF9wcml2YXRlICgqIENmOiAjNzIwMCAqKVxuICAgIChsaXN0IH5zZXA6XCJcIiBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgeC5wdHlleHRfY29uc3RydWN0b3JzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlleHRfYXR0cmlidXRlc1xuXG5hbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmIChuYW1lLCB2YXJzLCBhcmdzLCByZXMsIGF0dHJzKSA9XG4gIGxldCBuYW1lID0gbWF0Y2ggbmFtZSB3aXRoIFwiOjpcIiAtPiBcIig6OilcIiB8IHMgLT4gcyBpblxuICBsZXQgcHBfdmFycyBmIHZzID1cbiAgICBtYXRjaCB2cyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdnMgLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIHZzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcHAgZiBcIiVzJWFAOyVhXCIgbmFtZVxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIFtdIC0+ICgpXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKSBsXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPiBwcCBmIFwiQDtvZkA7JWFcIiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGwpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBTb21lIHIgLT5cbiAgICAgIHBwIGYgXCIlczpAOyVhJWFAOyVhXCIgbmFtZSBwcF92YXJzIHZhcnNcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiBjb3JlX3R5cGUxIGN0eHQgZiByXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCJcbiAgICAgICAgICAgICAgICAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIilcbiAgICAgICAgICAgICAgICBsIChjb3JlX3R5cGUxIGN0eHQpIHJcbiAgICAgICAgICB8IFBjc3RyX3JlY29yZCBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsIChjb3JlX3R5cGUxIGN0eHQpIHIpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0IGYgeCA9XG4gICgqIENmOiAjNzIwMCAqKVxuICBtYXRjaCB4LnBleHRfa2luZCB3aXRoXG4gIHwgUGV4dF9kZWNsICh2LCBsLCByKSAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAgICh4LnBleHRfbmFtZS50eHQsIHYsIGwsIHIsIHgucGV4dF9hdHRyaWJ1dGVzKVxuICB8IFBleHRfcmViaW5kIGxpIC0+XG4gICAgICBwcCBmIFwiJXNAOz1AOyVhJWFcIiB4LnBleHRfbmFtZS50eHQgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBleHRfYXR0cmlidXRlc1xuXG5hbmQgY2FzZV9saXN0IGN0eHQgZiBsIDogdW5pdCA9XG4gIGxldCBhdXggZiB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9ID1cbiAgICBwcCBmIFwiQDt8IEBbPDI+JWElYUA7LT5AOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwY19saHNcbiAgICAgIChvcHRpb24gKGV4cHJlc3Npb24gY3R4dCkgfmZpcnN0OlwiQDt3aGVuQDtcIilcbiAgICAgIHBjX2d1YXJkXG4gICAgICAoZXhwcmVzc2lvbiAodW5kZXJfcGlwZSBjdHh0KSlcbiAgICAgIHBjX3Joc1xuICBpblxuICBsaXN0IGF1eCBmIGwgfnNlcDpcIlwiXG5cbmFuZCBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCBmIChsLCBlKSA9XG4gIGxldCBzaW1wbGVfbmFtZSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIFNvbWUgbFxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT4gZXhwcmVzc2lvbjIgY3R4dCBmIGUgKCogbGV2ZWwgMiopXG4gIHwgT3B0aW9uYWwgc3RyIC0+XG4gICAgICBpZiBTb21lIHN0ciA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIj8lc1wiIHN0clxuICAgICAgZWxzZSBwcCBmIFwiPyVzOiVhXCIgc3RyIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gIHwgTGFiZWxsZWQgbGJsIC0+XG4gICAgICBpZiBTb21lIGxibCA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIn4lc1wiIGxibFxuICAgICAgZWxzZSBwcCBmIFwifiVzOiVhXCIgbGJsIChzaW1wbGVfZXhwciBjdHh0KSBlXG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnQgZiB4ID1cbiAgbWF0Y2ggeC5wZGlyYV9kZXNjIHdpdGhcbiAgfCBQZGlyX3N0cmluZyBzIC0+IHBwIGYgXCJAICVTXCIgc1xuICB8IFBkaXJfaW50IChuLCBOb25lKSAtPiBwcCBmIFwiQCAlc1wiIG5cbiAgfCBQZGlyX2ludCAobiwgU29tZSBtKSAtPiBwcCBmIFwiQCAlcyVjXCIgbiBtXG4gIHwgUGRpcl9pZGVudCBsaSAtPiBwcCBmIFwiQCAlYVwiIGxvbmdpZGVudCBsaVxuICB8IFBkaXJfYm9vbCBiIC0+IHBwIGYgXCJAICVzXCIgKHN0cmluZ19vZl9ib29sIGIpXG5cbmxldCB0b3BsZXZlbF9waHJhc2UgZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgUHRvcF9kZWYgcyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHQpKSBzXG4gICgqIHBwX29wZW5faHZib3ggZiAwOyAqKVxuICAoKiBwcF9wcmludF9saXN0IHN0cnVjdHVyZV9pdGVtIGYgcyA7ICopXG4gICgqIHBwX2Nsb3NlX2JveCBmICgpOyAqKVxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IE5vbmU7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQF1cIiBwZGlyX25hbWUudHh0XG4gIHwgUHRvcF9kaXIgeyBwZGlyX25hbWU7IHBkaXJfYXJnID0gU29tZSBwZGlyX2FyZzsgXyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj4jJXNAICVhQF1cIiBwZGlyX25hbWUudHh0IGRpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZ1xuXG5sZXQgZXhwcmVzc2lvbiBmIHggPSBwcCBmIFwiQFslYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgeFxuXG5sZXQgc3RyaW5nX29mX2V4cHJlc3Npb24geCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBleHByZXNzaW9uIGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgc3RyaW5nX29mX3N0cnVjdHVyZSB4ID1cbiAgaWdub3JlIChmbHVzaF9zdHJfZm9ybWF0dGVyICgpKTtcbiAgbGV0IGYgPSBzdHJfZm9ybWF0dGVyIGluXG4gIHN0cnVjdHVyZSByZXNldF9jdHh0IGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgdG9wX3BocmFzZSBmIHggPVxuICBwcF9wcmludF9uZXdsaW5lIGYgKCk7XG4gIHRvcGxldmVsX3BocmFzZSBmIHg7XG4gIHBwIGYgXCI7O1wiO1xuICBwcF9wcmludF9uZXdsaW5lIGYgKClcblxubGV0IGNvcmVfdHlwZSA9IGNvcmVfdHlwZSByZXNldF9jdHh0XG5sZXQgcGF0dGVybiA9IHBhdHRlcm4gcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZSA9IHNpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgc3RydWN0dXJlID0gc3RydWN0dXJlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19leHByID0gY2xhc3NfZXhwciByZXNldF9jdHh0XG5sZXQgY2xhc3NfZmllbGQgPSBjbGFzc19maWVsZCByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZSA9IGNsYXNzX3R5cGUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3NpZ25hdHVyZSA9IGNsYXNzX3NpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZV9maWVsZCA9IGNsYXNzX3R5cGVfZmllbGQgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV9leHByID0gbW9kdWxlX2V4cHIgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV90eXBlID0gbW9kdWxlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZV9pdGVtID0gc2lnbmF0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZV9pdGVtID0gc3RydWN0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHR5cGVfZGVjbGFyYXRpb24gPSB0eXBlX2RlY2xhcmF0aW9uIHJlc2V0X2N0eHRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2FwcGx5X3VuaXQgb2YgbW9kdWxlX2V4cHIgKCoqIFtNRTEoKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQdmNfY29uc3RyYWludCBvZiB7XG4gICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM6c3RyaW5nIGxvYyBsaXN0O1xuICAgICAgdHlwOmNvcmVfdHlwZTtcbiAgICAgIH1cbiAgICB8IFB2Y19jb2VyY2lvbiBvZiB7Z3JvdW5kOmNvcmVfdHlwZSBvcHRpb247IGNvZXJjaW9uOmNvcmVfdHlwZSB9XG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9jb25zdHJhaW50OiB2YWx1ZV9jb25zdHJhaW50IG9wdGlvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzM1wiXG5lbmRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nIGxvYyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgKCoqIFtNLihUKV0gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mXG4gICAgICAgIGZ1bmN0aW9uX3BhcmFtIGxpc3QgKiB0eXBlX2NvbnN0cmFpbnQgb3B0aW9uICogZnVuY3Rpb25fYm9keVxuICAgICgqKiBbUGV4cF9mdW5jdGlvbiAoW1AxOyAuLi47IFBuXSwgQywgYm9keSldIHJlcHJlc2VudHMgYW55IGNvbnN0cnVjdFxuICAgICAgICBpbnZvbHZpbmcgW2Z1bl0gb3IgW2Z1bmN0aW9uXSwgaW5jbHVkaW5nOlxuICAgICAgICAtIFtmdW4gUDEgLi4uIFBuIC0+IEVdXG4gICAgICAgICAgd2hlbiBbYm9keSA9IFBmdW5jdGlvbl9ib2R5IEVdXG4gICAgICAgIC0gW2Z1biBQMSAuLi4gUG4gLT4gZnVuY3Rpb24gcDEgLT4gZTEgfCAuLi4gfCBwbSAtPiBlbV1cbiAgICAgICAgICB3aGVuIFtib2R5ID0gUGZ1bmN0aW9uX2Nhc2VzIFsgcDEgLT4gZTE7IC4uLjsgcG0gLT4gZW0gXV1cbiAgICAgICAgW0NdIHJlcHJlc2VudHMgYSB0eXBlIGNvbnN0cmFpbnQgb3IgY29lcmNpb24gcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGVcbiAgICAgICAgYXJyb3csIGUuZy4gW2Z1biBQMSAuLi4gUG4gOiB0eSAtPiAuLi5dIHdoZW4gW0MgPSBTb21lIChQY29uc3RyYWludCB0eSldLlxuICAgICAgICBBIGZ1bmN0aW9uIG11c3QgaGF2ZSBwYXJhbWV0ZXJzLiBbUGV4cF9mdW5jdGlvbiAocGFyYW1zLCBfLCBib2R5KV0gbXVzdFxuICAgICAgICBoYXZlIG5vbi1lbXB0eSBbcGFyYW1zXSBvciBhIFtQZnVuY3Rpb25fY2FzZXMgX10gYm9keS5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBmdW5jdGlvbl9wYXJhbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbV9kZXNjICopID1cbiAgICB8IFBwYXJhbV92YWwgb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuXG4gICAgKCoqIFtQcGFyYW1fdmFsIChsYmwsIGV4cDAsIFApXSByZXByZXNlbnRzIHRoZSBwYXJhbWV0ZXI6XG4gICAgICAgIC0gW1BdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbfmw6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6KFAgPSBFMCldXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgTm90ZTogSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAqKVxuICAgIHwgUHBhcmFtX25ld3R5cGUgb2Ygc3RyaW5nIGxvY1xuICAgICgqKiBbUHBhcmFtX25ld3R5cGUgeF0gcmVwcmVzZW50cyB0aGUgcGFyYW1ldGVyIFsodHlwZSB4KV0uXG4gICAgICAgIFt4XSBjYXJyaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgaWRlbnRpZmllciwgd2hlcmVhcyB0aGUgW3BwYXJhbV9sb2NdXG4gICAgICAgIG9uIHRoZSBlbmNsb3NpbmcgW2Z1bmN0aW9uX3BhcmFtXSBub2RlIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgWyh0eXBlIHgpXVxuICAgICAgICBhcyBhIHdob2xlLlxuXG4gICAgICAgIE11bHRpcGxlIHBhcmFtZXRlcnMgWyh0eXBlIGEgYiBjKV0gYXJlIHJlcHJlc2VudGVkIGFzIG11bHRpcGxlXG4gICAgICAgIFtQcGFyYW1fbmV3dHlwZV0gbm9kZXMsIGxldCdzIHNheTpcblxuICAgICAgICB7WyBbIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBhOyBwcGFyYW1fbG9jID0gbG9jMSB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBiOyBwcGFyYW1fbG9jID0gbG9jMiB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBjOyBwcGFyYW1fbG9jID0gbG9jMyB9O1xuICAgICAgICAgICBdXG4gICAgICAgIF19XG5cbiAgICAgICAgSGVyZSwgdGhlIGZpcnN0IGxvYyBbbG9jMV0gaXMgdGhlIGxvY2F0aW9uIG9mIFsodHlwZSBhIGIgYyldLCBhbmQgdGhlXG4gICAgICAgIHN1YnNlcXVlbnQgbG9jcyBbbG9jMl0gYW5kIFtsb2MzXSBhcmUgdGhlIHNhbWUgYXMgW2xvYzFdLCBleGNlcHQgbWFya2VkIGFzXG4gICAgICAgIGdob3N0IGxvY2F0aW9ucy4gVGhlIGxvY2F0aW9ucyBvbiBbYV0sIFtiXSwgW2NdLCBjb3JyZXNwb25kIHRvIHRoZVxuICAgICAgICB2YXJpYWJsZXMgW2FdLCBbYl0sIGFuZCBbY10gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgICopXG5cbiAgYW5kIGZ1bmN0aW9uX3BhcmFtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbSAqKSA9XG4gICAgeyBwcGFyYW1fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBwYXJhbV9kZXNjIDogZnVuY3Rpb25fcGFyYW1fZGVzYztcbiAgICB9XG5cbiAgYW5kIGZ1bmN0aW9uX2JvZHkgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0aW9uX2JvZHkgKikgPVxuICAgIHwgUGZ1bmN0aW9uX2JvZHkgb2YgZXhwcmVzc2lvblxuICAgIHwgUGZ1bmN0aW9uX2Nhc2VzIG9mIGNhc2UgbGlzdCAqIExvY2F0aW9uLnQgKiBhdHRyaWJ1dGVzXG4gICAgKCoqIEluIFtQZnVuY3Rpb25fY2FzZXMgKF8sIGxvYywgYXR0cnMpXSwgdGhlIGxvY2F0aW9uIGV4dGVuZHMgZnJvbSB0aGVcbiAgICAgICAgc3RhcnQgb2YgdGhlIFtmdW5jdGlvbl0ga2V5d29yZCB0byB0aGUgZW5kIG9mIHRoZSBsYXN0IGNhc2UuIFRoZSBjb21waWxlclxuICAgICAgICB3aWxsIG9ubHkgdXNlIHR5cGVjaGVja2luZy1yZWxhdGVkIGF0dHJpYnV0ZXMgZnJvbSBbYXR0cnNdLCBlLmcuIGVuYWJsaW5nXG4gICAgICAgIG9yIGRpc2FibGluZyBhIHdhcm5pbmcuXG4gICAgKilcbiAgKCoqIFNlZSB0aGUgY29tbWVudCBvbiB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW5jdGlvbn1bUGV4cF9mdW5jdGlvbl19LiAqKVxuXG4gIGFuZCB0eXBlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQY29uc3RyYWludCBvZiBjb3JlX3R5cGVcbiAgICB8IFBjb2VyY2Ugb2YgY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAoKiogU2VlIHRoZSBjb21tZW50IG9uIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bmN0aW9ufVtQZXhwX2Z1bmN0aW9uXX0uICopXG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9hcHBseV91bml0IG9mIG1vZHVsZV9leHByICgqKiBbTUUxKCldICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHZjX2NvbnN0cmFpbnQgb2Yge1xuICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzRcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzRcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMlxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA1LjAyXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCBta19naG9zdF9hdHRyIG5hbWUgPVxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0geyBMb2NhdGlvbi50eHQgPSBuYW1lOyBsb2MgPSBMb2NhdGlvbi5ub25lIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbXTtcbiAgICBhdHRyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gIH1cblxubGV0IHJlYyBjb25jYXRfbGlzdF9saXQgbGVmdCByaWdodCA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIGxldCBvcGVuIEFzdF81MDIuQXN0dHlwZXMgaW5cbiAgbWF0Y2ggKGxlZnQucGV4cF9kZXNjLCByaWdodC5wZXhwX2Rlc2MpIHdpdGhcbiAgfCBfLCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pIC0+IGxlZnRcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pLCBfIC0+IHJpZ2h0XG4gIHwgKCBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgbG9jIH0sXG4gICAgICAgICAgU29tZSAoeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgaGQ7IHRsIF07IF8gfSBhcyBhcmdfZXhwcikgKSxcbiAgICAgIF8gKSAtPlxuICAgICAge1xuICAgICAgICBsZWZ0IHdpdGhcbiAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IGxvYyB9LFxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXJnX2V4cHIgd2l0aFxuICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGhkOyBjb25jYXRfbGlzdF9saXQgdGwgcmlnaHQgXTtcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICB9XG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkludmFsaWQgb2NhbWwucHB4LmNvbnRleHQncyBsb2FkX3BhdGhcIlxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwciA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIGxldCBsb2MgPSBleHByLnBleHBfbG9jIGluXG4gIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX3R1cGxlIFsgdmlzaWJsZTsgaGlkZGVuIF0gLT5cbiAgICAgIGxldCBtaWdyYXRpb25fYXR0ciA9XG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyX25hbWUgPSB7IExvY2F0aW9uLnR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGhcIjsgbG9jIH07XG4gICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgYXR0cl9wYXlsb2FkID1cbiAgICAgICAgICAgIFBTdHIgWyB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGV4cHIsIFtdKSB9IF07XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwcicgPSBjb25jYXRfbGlzdF9saXQgdmlzaWJsZSBoaWRkZW4gaW5cbiAgICAgIHsgZXhwcicgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBtaWdyYXRpb25fYXR0ciA6OiBleHByLnBleHBfYXR0cmlidXRlcyB9XG4gIHwgXyAtPiBleHByXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gKGxpZGVudF9sb2MsIGV4cHIpIC0+XG4gICAgICBtYXRjaCBsaWRlbnRfbG9jLkFzdF81MDIuQXN0dHlwZXMudHh0IHdpdGhcbiAgICAgIHwgTG9uZ2lkZW50LkxpZGVudCBcImxvYWRfcGF0aFwiIC0+XG4gICAgICAgICAgKGxpZGVudF9sb2MsIG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIpXG4gICAgICB8IF8gLT4gKGxpZGVudF9sb2MsIGV4cHIpKVxuICAgIGZpZWxkc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIHBheWxvYWQgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyXG4gICAgICBbXG4gICAgICAgICh7XG4gICAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgICAgUHN0cl9ldmFsXG4gICAgICAgICAgICAgICAoKHsgcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgfSBhcyBleHByKSwgYXR0cmlidXRlcyk7XG4gICAgICAgICB9IGFzIHN0cmkpO1xuICAgICAgXSAtPlxuICAgICAgbGV0IG5ld19maWVsZHMgPSBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgaW5cbiAgICAgIGxldCBuZXdfZXhwciA9IHsgZXhwciB3aXRoIHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChuZXdfZmllbGRzLCBOb25lKSB9IGluXG4gICAgICBQU3RyIFsgeyBzdHJpIHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChuZXdfZXhwciwgYXR0cmlidXRlcykgfSBdXG4gIHwgXyAtPiBwYXlsb2FkXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChwYXJhbXMsIHRjb25zdHJhaW50LCBib2R5KSAtPlxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBQZnVuY3Rpb25fYm9keSBleHByIC0+IChcbiAgICAgICAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUGV4cF9mdW5jdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgKCogV2UgZG9uJ3Qgd2FudCB0aGlzIFtmdW5dIHRvIGJlIG1lcmdlZCB3aXRoIHRoZSBwYXJlbnQgZHVyaW5nXG4gICAgICAgICAgICAgICAgICAgdGhlIHJvdW5kLXRyaXAuIFRoaXMgYXR0cmlidXRlIHNpZ25hbHMgdGhhdCB0aGlzIGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICAgICByZWFsbHkgaXMgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiAqKVxuICAgICAgICAgICAgICAgIGxldCBhdHRyID0gbWtfZ2hvc3RfYXR0ciBcInBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcIiBpblxuICAgICAgICAgICAgICAgIGxldCBleHByID0gY29weV9leHByZXNzaW9uIGV4cHIgaW5cbiAgICAgICAgICAgICAgICB7IGV4cHIgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRyIDo6IGV4cHIucGV4cF9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICAgIHwgXyAtPiBjb3B5X2V4cHJlc3Npb24gZXhwcilcbiAgICAgICAgfCBQZnVuY3Rpb25fY2FzZXMgKGNhc2VzLCBsb2MsIGF0dHJzKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSBjYXNlcyk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gY29weV9sb2NhdGlvbiBsb2M7XG4gICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdHRycztcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIG1hdGNoIHRjb25zdHJhaW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGV4cHJcbiAgICAgICAgfCBTb21lIChQY29uc3RyYWludCBjKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoZXhwciwgY29weV9jb3JlX3R5cGUgYyk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gZXhwci5wZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIHwgU29tZSAoUGNvZXJjZSAoYzEsIGMyKSkgLT5cbiAgICAgICAgICAgIGxldCBjMSA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgYzEgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoZXhwciwgYzEsIGNvcHlfY29yZV90eXBlIGMyKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSBleHByLnBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgIChmdW4gcGFyYW0gZXhwciAtPlxuICAgICAgICAgICAgbWF0Y2ggcGFyYW0gd2l0aFxuICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2Rlc2MgPSBQcGFyYW1fdmFsIChsYmwsIGV4cDAsIHApO1xuICAgICAgICAgICAgIHBwYXJhbV9sb2M7XG4gICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgbGV0IHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAgICAgICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIGxibCxcbiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBleHAwLFxuICAgICAgICAgICAgICAgICAgICAgIGNvcHlfcGF0dGVybiBwLFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHIgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBwcGFyYW1fbG9jO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHwgeyBwcGFyYW1fZGVzYyA9IFBwYXJhbV9uZXd0eXBlIHg7IHBwYXJhbV9sb2MgfSAtPlxuICAgICAgICAgICAgICAgIGxldCBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeCwgZXhwcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gcHBhcmFtX2xvYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIHBhcmFtcyBleHByXG4gICAgICBpblxuICAgICAgZXhwci5wZXhwX2Rlc2NcbiAgICAgICgqIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MCkgKilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLmxldF87IEFzdF81MDIuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50ID1cbiAgICAgIE9wdGlvbi5tYXAgY29weV92YWx1ZV9jb25zdHJhaW50IHB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV92YWx1ZV9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAge1xuICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7XG4gICAgICAgICAgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwO1xuICAgICAgICB9XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9IC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb25cbiAgICAgICAge1xuICAgICAgICAgIGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kO1xuICAgICAgICAgIGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb247XG4gICAgICAgIH1cblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9sb2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyBsb2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MS50eHQpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIG9wZW4gaW4gdHlwZXNcIlxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPVxuICAgICAgKG1hdGNoIGF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLnBweC5jb250ZXh0XCIgLT5cbiAgICAgICAgICBjb3B5X3BheWxvYWQgKG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG4gICAgICB8IF8gLT4gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZCk7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQ7IEFzdF81MDIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDFcbm1vZHVsZSBUbyA9IEFzdF81MDJcblxuKCoqIExvb2sgZm9yIGEgcGFydGljdWxhciBhdHRyaWJ1dGUgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBsaXN0LiBBdHRyaWJ1dGVzIGFyZVxuICAgIHVzZWQgdG8gbWFrZSBjZXJ0YWluIG1pZ3JhdGlvbnMgcm91bmQtdHJpcC4gUmV0dXJucyBbTm9uZV0gaWYgdGhlIHNwZWNpZmllZFxuICAgIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuICopXG5sZXQgZXh0cmFjdF9hdHRyIG5hbWUgKGF0dHJzIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcykgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IChOb25lLCBMaXN0LnJldiBhY2MpXG4gICAgfCB7IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IHsgdHh0OyBfIH07IGF0dHJfcGF5bG9hZDsgXyB9IDo6IHFcbiAgICAgIHdoZW4gdHh0ID0gbmFtZSAtPlxuICAgICAgICAoU29tZSBhdHRyX3BheWxvYWQsIExpc3QucmV2X2FwcGVuZCBhY2MgcSlcbiAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgaW5cbiAgbG9vcCBbXSBhdHRyc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwciA9XG4gIGxldCBvcGVuIEFzdF81MDEuUGFyc2V0cmVlIGluXG4gIGxldCBwYXlsb2FkLCBvdGhlcl9hdHRycyA9XG4gICAgZXh0cmFjdF9hdHRyIFwicHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGhcIiBleHByLnBleHBfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBsZXQgcGV4cF9kZXNjID1cbiAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgbG9jID0gZXhwci5wZXhwX2xvYyB9LCBOb25lKVxuICAgICAgaW5cbiAgICAgIGxldCBoaWRkZW4gPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2M7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgIGxldCB2aXNpYmxlID0gZXhwciBpblxuICAgICAge1xuICAgICAgICBleHByIHdpdGhcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gb3RoZXJfYXR0cnM7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyB2aXNpYmxlOyBoaWRkZW4gXTtcbiAgICAgIH1cbiAgfCBTb21lIChQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGV4cHIsIFtdKTsgXyB9IF0pIC0+IGV4cHJcbiAgfCBTb21lIF8gLT4gaW52YWxpZF9hcmcgXCJJbnZhbGlkIHBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoIHBheWxvYWRcIlxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChsaWRlbnRfbG9jLCBleHByKSAtPlxuICAgICAgbWF0Y2ggbGlkZW50X2xvYy5Bc3RfNTAxLkFzdHR5cGVzLnR4dCB3aXRoXG4gICAgICB8IExvbmdpZGVudC5MaWRlbnQgXCJsb2FkX3BhdGhcIiAtPlxuICAgICAgICAgIChsaWRlbnRfbG9jLCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByKVxuICAgICAgfCBfIC0+IChsaWRlbnRfbG9jLCBleHByKSlcbiAgICBmaWVsZHNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBwYXlsb2FkID1cbiAgbGV0IG9wZW4gQXN0XzUwMS5QYXJzZXRyZWUgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0clxuICAgICAgW1xuICAgICAgICAoe1xuICAgICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICAgIFBzdHJfZXZhbFxuICAgICAgICAgICAgICAgKCh7IHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIH0gYXMgZXhwciksIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgfSBhcyBzdHJpKTtcbiAgICAgIF0gLT5cbiAgICAgIGxldCBuZXdfZmllbGRzID0gbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzIGluXG4gICAgICBsZXQgbmV3X2V4cHIgPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAobmV3X2ZpZWxkcywgTm9uZSkgfSBpblxuICAgICAgUFN0ciBbIHsgc3RyaSB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAobmV3X2V4cHIsIGF0dHJpYnV0ZXMpIH0gXVxuICB8IF8gLT4gcGF5bG9hZFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbGV0IHBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uXG4gICAgICAgICggW10sXG4gICAgICAgICAgTm9uZSxcbiAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXMgKExpc3QubWFwIGNvcHlfY2FzZSB4MCwgbG9jLCBbXSkgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuIChhcmdfbGFiZWwsIG9wdF9kZWZhdWx0LCBwYXQsIGV4cHIpIC0+XG4gICAgICBsZXQgdGFrZV9ib2R5IChlIDogQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbikgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiBjYXNlX2xpc3QgLT5cbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9jYXNlc1xuICAgICAgICAgICAgICAoIExpc3QubWFwIGNvcHlfY2FzZSBjYXNlX2xpc3QsXG4gICAgICAgICAgICAgICAgZS5wZXhwX2xvYyxcbiAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgZS5wZXhwX2F0dHJpYnV0ZXMgKVxuICAgICAgICB8IF8gLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2JvZHkgKGNvcHlfZXhwcmVzc2lvbiBlKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgdGFrZV9hcmd1bWVudHMgYWNjIChlIDogQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbikgPVxuICAgICAgICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgICAgICAgKCogVGhlIGF0dHJpYnV0ZSBsaXN0IGlzIG5vdCBlbXB0eSwgbm9uZSBvZiB0aGVzZSBub2RlcyBjb3VsZCBoYXZlXG4gICAgICAgICAgICAgYmVlbiBjcmVhdGVkIGJ5IHRoZSBkb3dud2FyZCBtaWdyYXRpb24uIEV4Y2VwdCBmb3IgW1BleHBfZnVuXSwgZm9yXG4gICAgICAgICAgICAgd2hpY2ggd2UgYWRkIGEgZ2hvc3QgYXR0cmlidXRlIHRvIGhlbHAgdXMgcm91bmR0cmlwLiAqKVxuICAgICAgICAgIGxldCBfLCBhdHRycyA9XG4gICAgICAgICAgICBleHRyYWN0X2F0dHIgXCJwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXCIgZS5wZXhwX2F0dHJpYnV0ZXNcbiAgICAgICAgICBpblxuICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgTm9uZSxcbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5XG4gICAgICAgICAgICAgIChjb3B5X2V4cHJlc3Npb24geyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfSkgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgYXJlIGxpa2VseSB0byBoYXZlIGJlZW4gc3ludGhldGl6ZWQgZHVyaW5nIHRoZVxuICAgICAgICAgICAgIGRvd253YXJkIG1pZ3JhdGlvbi4gKilcbiAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoYXJnX2xhYmVsLCBvcHRfZGVmYXVsdCwgcGF0LCBleHByKSAtPlxuICAgICAgICAgICAgICB0YWtlX2FyZ3VtZW50c19mdW4gYWNjIGFyZ19sYWJlbCBvcHRfZGVmYXVsdCBwYXQgZXhwclxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh0LCBleHByKSAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGFyYW1fbG9jID0gdC5sb2M7XG4gICAgICAgICAgICAgICAgICBwcGFyYW1fZGVzYyA9IFBwYXJhbV9uZXd0eXBlIHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB0YWtlX2FyZ3VtZW50cyBhY2MgZXhwclxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChleHAsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBUaGVzZSB0d28gZXhwcmVzc2lvbiBhcmUgcmVwcmVzZW50ZWQgdGhlIHNhbWUgb24gNS4xIGJ1dFxuICAgICAgICAgICAgICAgICBkaWZmZXJlbnRseSBvbiA1LjI6XG4gICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICAgbGV0IF8gPSBmdW4geCA6IChfIC0+IGludCkgLT4gZnVuIHkgLT4geCt5XG4gICAgICAgICAgICAgICAgICAgbGV0IF8gPSBmdW4geCAtPiAoKGZ1biB5IC0+IHgreSkgOiBfIC0+IGludClcbiAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgV2Ugbm9ybWFsaXplIHRoZSBzZWNvbmQgaW50byB0aGUgZmlyc3Qgd2hlbiBtaWdyYXRpbmcgdG8gNS4yLFxuICAgICAgICAgICAgICAgICBtYWtpbmcgdGhlIG1pZ3JhdGlvbiA1LjItPjUuMS0+NS4yIG5vdCByb3VuZHRyaXAgYnV0IGhvcGVmdWxseVxuICAgICAgICAgICAgICAgICB3aXRob3V0IGNoYW5nZSBpbiBzZW1hbnRpY3MuICopXG4gICAgICAgICAgICAgIGxldCBjdCA9XG4gICAgICAgICAgICAgICAgU29tZSAoQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0cmFpbnQgKGNvcHlfY29yZV90eXBlIGN0KSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGFjYywgY3QsIHRha2VfYm9keSBleHApXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoZXhwLCBjMSwgYzIpIC0+XG4gICAgICAgICAgICAgICgqIFNhbWUgYXMgYWJvdmUsIG1pZ2h0IG5vdCByb3VuZHRyaXAgYnV0IGhvcGVmdWxseSBPSy4gKilcbiAgICAgICAgICAgICAgbGV0IGMxID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBjMVxuICAgICAgICAgICAgICBhbmQgYzIgPSBjb3B5X2NvcmVfdHlwZSBjMiBpblxuICAgICAgICAgICAgICAoYWNjLCBTb21lIChBc3RfNTAyLlBhcnNldHJlZS5QY29lcmNlIChjMSwgYzIpKSwgdGFrZV9ib2R5IGV4cClcbiAgICAgICAgICB8IF8gLT4gKGFjYywgTm9uZSwgdGFrZV9ib2R5IGUpXG4gICAgICBhbmQgdGFrZV9hcmd1bWVudHNfZnVuIGFjYyBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHIgPVxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBsZXQgcHBhcmFtX2Rlc2MgPVxuICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhcmFtX3ZhbFxuICAgICAgICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIGFyZ19sYWJlbCxcbiAgICAgICAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBvcHRfZGVmYXVsdCxcbiAgICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4gcGF0IClcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIEJlc3QtZWZmb3J0IGxvY2F0aW9uLiAqKVxuICAgICAgICAgIHsgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2xvYyA9IHBhdC5wcGF0X2xvYzsgcHBhcmFtX2Rlc2MgfSA6OiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgdGFrZV9hcmd1bWVudHMgYWNjIGV4cHJcbiAgICAgIGluXG4gICAgICAoKiBUaGUgYXJndW1lbnQgbGlzdCByZXR1cm5lZCBieSBbdGFrZV9hcmd1bWVudHNdIGlzIHJldmVyc2VkICopXG4gICAgICBsZXQgYXJnX2xpc3QsIHR5cGVfY29uc3RyYWludCwgYm9keSA9XG4gICAgICAgIHRha2VfYXJndW1lbnRzX2Z1biBbXSBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHJcbiAgICAgIGluXG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0LnJldiBhcmdfbGlzdCwgdHlwZV9jb25zdHJhaW50LCBib2R5KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMS5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQgPVxuICAgICAgT3B0aW9uLm1hcCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgcHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9IC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID1cbiAgICAgICAgICAgIExpc3QubWFwIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycztcbiAgICAgICAgICB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXA7XG4gICAgICAgIH1cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0gLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb2VyY2lvblxuICAgICAgICB7XG4gICAgICAgICAgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQ7XG4gICAgICAgICAgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbjtcbiAgICAgICAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FsaWFzXG4gICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dCA9IHgxOyBsb2MgPSB4MC5wdHlwX2xvYyB9KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPVxuICAgICAgKG1hdGNoIGF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLnBweC5jb250ZXh0XCIgLT5cbiAgICAgICAgICBjb3B5X3BheWxvYWQgKG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG4gICAgICB8IF8gLT4gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZCk7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCogVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIDQuMTQgYW5kIDUuMCBmcm9tIGEgUGFyc2V0cmVlIHBvaW50IG9mIHZpZXcgYXJlIHRoZSBtYWdpYyBudW1iZXJzICopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuQXN0dHlwZXNcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5QYXJzZXRyZWVcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMlwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAxXG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLmxldF87IEFzdF81MDEuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICBsZXQgbWVyZ2VfbG9jIGxlZnQgcmlnaHQgPVxuICAgIExvY2F0aW9uLlxuICAgICAgeyBsb2Nfc3RhcnQgPSBsZWZ0LmxvY19zdGFydDsgbG9jX2VuZCA9IHJpZ2h0LmxvY19lbmQ7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgaW5cbiAgbGV0IGdob3N0X2xvYyBsb2MgPSB7IGxvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwID1cbiAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgZ2hvc3RfbG9jXG4gICAgICAgIChtZXJnZV9sb2MgcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICBpblxuICAgIHtcbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHBhdCwgdHlwKTtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgfVxuICBpblxuICBsZXQgcHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0IGFuZCBwdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICBsZXQgY29uc3RyYWluX3BhdCBwYXQgdHlwIGV4cHIgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCBpblxuICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByID1cbiAgICBtYXRjaCAocHZiX2NvbnN0cmFpbnQsIHB2Yl9wYXQpIHdpdGhcbiAgICB8ICggU29tZVxuICAgICAgICAgIChQdmNfY29uc3RyYWludFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTtcbiAgICAgICAgICAgICAgdHlwID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiB0aGUgc3VnYXJpbmcgb2YgW2xldCB4OiB1bml2YXJzIC4gdHlwID0gZXhwIF0gd2FzIGRlc3VnYXJlZCB0b1xuICAgICAgICAgICBbbGV0ICh4OnVuaXZhcnMgLiB0eXApID0gZXhwXSBpbiA1LjAgd2hpY2ggZG9lc24ndCBmaXQgdGhlIGNhc2UgYmVsb3cgKilcbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgKCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICAgICAgICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgICAgICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgICAgICAgbGV0IGRlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgICAgICAgICggTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyxcbiAgICAgICAgICAgICAgICAgICAgICBsYmxfbHN0X29wdGlvbiApXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPVxuICAgICAgICAgIG1hdGNoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBnaG9zdF9sb2MgdHlwLnB0eXBfbG9jXG4gICAgICAgICAgfCBfIDo6IF8gLT4gZ2hvc3RfbG9jIHBleHBfbG9jXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBfcG9seSA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwIHdpdGhcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgICAgICAgICAoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyxcbiAgICAgICAgICAgICAgICAgIHZhcmlmeV9jb25zdHJ1Y3RvcnMgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHR5cCApO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgICAgIGdob3N0X2xvY1xuICAgICAgICAgICAgKG1lcmdlX2xvYyBwdmJfcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jXG4gICAgICAgICAgICAgICB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0geyAoZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cF9wb2x5KSB3aXRoIHBwYXRfbG9jIH1cbiAgICAgICAgYW5kIHB2Yl9leHByID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBleHByIHZhciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwciB3aXRoXG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAodmFyLCBleHByKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAocHZiX2V4cHIsIHR5cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAoTGlzdC5yZXYgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzKVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdOyB0eXAgfSksIF8gLT5cbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgU29tZSAoUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KSwgXyAtPlxuICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbiBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBnaG9zdF9sb2MgY29lcmNpb24ucHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHR5cCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29lcmNpb24gd2l0aFxuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoW10sIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cCBpblxuICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHB2Yl9leHByLCBncm91bmQsIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IF8gLT4gKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBsZXQgbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBsb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxID0gY29weV9tb2R1bGVfZXhwciB4MSBpblxuICAgICAgbGV0IHgxID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IGxvYyA9IHsgeDEucG1vZF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID1cbiAgICAgICAgICAgICAgICAgIHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IGxvYyB9O1xuICAgICAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgW107XG4gICAgICAgICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogeDEucG1vZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9XG4gICAgICAgIHwgXyAtPiB4MVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgbGV0IGVtcHR5X3N0cnVjdCA9XG4gICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgZW1wdHlfc3RydWN0KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDEuQXN0dHlwZXMudHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAwLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAxLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAxLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIGxldCBkZXNjID1cbiAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+IFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuICBpblxuICAoKiBNYXRjaCB0aGUgZm9ybSBvZiB0aGUgZXhwciBhbmQgcGF0dGVybiB0byBkZWNpZGUgdGhlIHZhbHVlIG9mXG4gICAgIFtwdmJfY29uc3RyYWludF0uIEFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgUFByaW50ZXIuICopXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdHl2YXJzIGluXG4gIGxldCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHAgZSA9XG4gICAgbGV0IHZhbHVlX3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gYXMgdHlfZXh0KSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGFzc2VydCAobWF0Y2ggcnQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpO1xuICAgICAgICAgIGxldCB0eSA9IG1hdGNoIGFyZ3NfdHl2YXJzIHdpdGggW10gLT4gcnQgfCBfIC0+IHR5X2V4dCBpblxuICAgICAgICAgIGBWYXIgKHBhdCwgYXJnc190eXZhcnMsIHJ0LCB0eSlcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocGF0LCBydCk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYE5vblZhciAocGF0LCBydClcbiAgICAgIHwgXyAtPiBgTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyB2YWx1ZV9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICB2YWx1ZV9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgdmFsdWVfZXhwID0gdmFsdWVfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAodmFsdWVfcGF0dGVybiwgdmFsdWVfZXhwKSB3aXRoXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBTb21lIChlX3R5dmFycywgaW5uZXJfZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlblxuICAgICAgICAgIGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgcHRfdHl2YXJzLCBlX2N0LCBpbm5lcl9lKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogdGhlIGV4cHJlc3Npb24gY29uc3RyYWludCBhbmQgdGhlIHBhdHRlcm4gY29uc3RyYWludCxcbiAgICAgICAgICAgICBkb24ndCBtYXRjaCwgYnV0IHdlIHN0aWxsIGhhdmUgYSBQdHlwX3BvbHkgcGF0dGVybiBjb25zdHJhaW50IHRoYXRcbiAgICAgICAgICAgICBzaG91bGQgYmUgcmVzdWdhcmVkIHRvIGEgdmFsdWUgYmluZGluZyAqKVxuICAgICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIF8gLT5cbiAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYE5vblZhciAocGF0LCBjdCksIF8gLT4gYE5vblZhciAocGF0LCBjdCwgZSlcbiAgICB8IF8gLT4gYE5vbmVcbiAgaW5cbiAgbGV0IHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cCA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIFNvbWVcbiAgICAgIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICAgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSB0eV92YXJzOyB0eXAgfSlcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByLCBwdmJfY29uc3RyYWludCA9XG4gICAgbWF0Y2ggcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwdmJfcGF0IHB2Yl9leHByIHdpdGhcbiAgICB8IGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgdHlfdmFycywgdHlwLCBlKSAtPlxuICAgICAgICAocCwgZSwgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgW10sIGN0LCBleHByKSAtPiAoXG4gICAgICAgICgqIGNoZWNrIGlmIHdlIGFyZSBpbiB0aGUgW2xldCB4IDogdHk/IDo+IGNvZXIgPSBleHByIF0gY2FzZSAqKVxuICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29lcmNlIChleHByLCBnciwgY29lcmNlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBnciBpblxuICAgICAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNlIGluXG4gICAgICAgICAgICBsZXQgcHZiX2NvbnN0cmFpbnQgPVxuICAgICAgICAgICAgICBTb21lIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKHBhdCwgZXhwciwgcHZiX2NvbnN0cmFpbnQpXG4gICAgICAgIHwgXyAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgXywgY3QsIGV4cHIpIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdClcbiAgICB8IGBOb25WYXIgKHAsIHR5cCwgZSkgLT4gKHAsIGUsIHdpdGhfY29uc3RyYWludCBbXSB0eXApXG4gICAgfCBgTm9uZSAtPiAocHZiX3BhdCwgcHZiX2V4cHIsIE5vbmUpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxLCBpc191bml0ID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHIgYWNjIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBfID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IF8gfTtcbiAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IHEgLT5cbiAgICAgICAgICAgICAgICAgIChMaXN0LnJldl9hcHBlbmQgYWNjIHEsIGZhbHNlKVxuICAgICAgICAgICAgICB8IGhkIDo6IHRsIC0+IGV4dHJhY3RfYXR0ciAoaGQgOjogYWNjKSB0bFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMsIGIgPSBleHRyYWN0X2F0dHIgW10geDEucG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICAgICAoeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9LCBiKVxuICAgICAgICB8IF8gLT4gKHgxLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBpZiBpc191bml0IHRoZW4gQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICAgICAgZWxzZVxuICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDAuQXN0dHlwZXMudHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJtb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNTAwLlBhcnNldHJlZS4lcyAtPiBBc3RfNDE0LlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF80MTQuUGFyc2V0cmVlLiVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgKFtdLCBQKVxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICBDICh0eXBlIGEgYikgUCAgIFNvbWUgKFthOyBiXSwgUClcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgOj0gIC4uLiAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZCAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxNC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+IChcbiAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgICAgIHwgaGQgOjogXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJ0eXBlIHBhcmFtZXRlcnMgaW4gZXh0ZW5zaW9uIGNvbnN0cnVjdG9yc1wiKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcGNkX3ZhcnMgd2l0aFxuICB8IFtdIC0+XG4gICAgICB7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgICAgIH1cbiAgfCBoZCA6OiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJwY2RfdmFycyBpbiBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbnNcIlxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTQuQXN0dHlwZXMudHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTQuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKFtdLCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycyA9IFtdO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjlcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChtYXRjaCB4MCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgfCB0eSA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgdHkuQXN0XzQxMy5Bc3R0eXBlcy5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJleGlzdGVudGlhbHMgaW4gcGF0dGVybi1tYXRjaGluZ1wiKTtcbiAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHgxKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgXCJtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvY1xuICAgICAgICBcImRlc3RydWN0aXZlIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jXG4gICAgICAgIFwibG9jYWwgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gKFtdLCBjb3B5X3BhdHRlcm4geCkpIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyN1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyN1wiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBfLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgTG9jYXRpb24ubm9uZSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI2XCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTBcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2NcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFub255bW91cyBsZXQgbW9kdWxlXCJcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvY1xuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFueW55bW91cyB1bnBhY2tcIiB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBMb2NhdGlvbi50IGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtYl9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgYmluZGluZ1wiKVxuICAgICAgICBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+XG4gICAgc3RyaW5nIEFzdF80MDkuQXN0dHlwZXMubG9jICogQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgb3B0aW9uID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+ICh7IGxvYyA9IExvY2F0aW9uLm5vbmU7IHR4dCA9IFwiKlwiIH0sIE5vbmUpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICggY29weV9sb2MgKGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIHggLT4geCkgeDAsXG4gICAgICAgIFNvbWUgKGNvcHlfbW9kdWxlX3R5cGUgeDEpIClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1kX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gVGh1IE1hciAyMSAwOTo1MDo0MiBHTVQgMjAxOVxuICAgT0NhbWwgd2FzOlxuICAgY29tbWl0IDU1YzliYTQ2NjM2MmYzMDNlYjRkNWVkNTExZjZmZGExNDI4NzkxMzcgKEhFQUQgLT4gNC4wOCwgb3JpZ2luLzQuMDgpXG4gICAgIEF1dGhvcjogTmljb2zDoXMgT2plZGEgQsOkciA8bi5vamUuYmFyQGdtYWlsLmNvbT5cbiAgICAgRGF0ZTogICBUdWUgTWFyIDE5IDA4OjExOjAyIDIwMTkgKzAxMDBcblxuICAgICAgICAgTWVyZ2UgcHVsbCByZXF1ZXN0ICM4NTIxIGZyb20gbm9qYi9maXhfdW5peF90ZXN0c180MDhcblxuICAgICAgICAgQWN0dWFsbHkgcnVuIGFsbCBsaWItdW5peCB0ZXN0cyBbNC4wOF1cbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA5LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA5LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA4LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDguUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA4LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOC5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDguQXN0dHlwZXMudHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gV2VkIEFwciAxOCAxMDozMzoyOSBCU1QgMjAxOFxuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgYzBiZDZhMjdlMTM4OTExNTYwZjQzZGM3NWQ1ZmRlMmFkZTRkNmNmZSAoSEVBRCwgdGFnOiA0LjA3LjArYmV0YTIpXG4gICAgIEF1dGhvcjogRGFtaWVuIERvbGlnZXogPGRhbWllbi5kb2xpZ2V6QGlucmlhLmZyPlxuICAgICBEYXRlOiAgIFR1ZSBBcHIgMTAgMTQ6NTA6NDggMjAxOCArMDIwMFxuXG4gICAgICAgICBjaGFuZ2UgVkVSU0lPTiBmb3IgNC4wNy4wK2JldGEyXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIzXCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDhcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9sb2MgPSBfO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgICggcGRpcl9uYW1lLkxvY2F0aW9uLnR4dCxcbiAgICAgICAgICBtYXRjaCBwZGlyX2FyZyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IGFyZyApXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IF9wZGlyYV9sb2MgfSAtPlxuICBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2NcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZCxcbiAgICAgICAgICAgICAgY29weV9leHByZXNzaW9uIHgxIClcbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB7IGxldF87IGFuZHMgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbGV0Xy5wYm9wX29wLmxvYyBcImxldCBvcGVyYXRvcnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcHJmX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MSxcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwb2ZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX2xvYyA9IF87XG4gICAgIH0gLT5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWUsIGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPVxuICAgICAgICAgICAgICAgIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24geDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBsZXQgeDBfbG9jID1cbiAgICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgICB8IFtdIC0+IExvY2F0aW9uLm5vbmVcbiAgICAgICAgfCB7IEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYzsgXyB9IDo6IF8gLT4gcHR5cGVfbG9jXG4gICAgICBpblxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwX2xvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAucG1zX2xvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiBoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG4oKiBhbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICBGcm9tLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuICAgZnVuXG4gICAgIHsgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBwdHlleG5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuICAgICAgLT5cbiAgICAge1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSAoY29weV9sb2NhdGlvbiBwdHlleG5fbG9jKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgKGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcylcbiAgICAgfSopXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX25hbWUgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi50eHQgPSB4MDsgTG9jYXRpb24ubG9jID0gTG9jYXRpb24ubm9uZSB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2FyZyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb25cbiAgICA9XG4gIGxldCB3cmFwIHBkaXJhX2Rlc2MgPVxuICAgIFNvbWUgeyBUby5QYXJzZXRyZWUucGRpcmFfZGVzYzsgVG8uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IExvY2F0aW9uLm5vbmUgfVxuICBpblxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBOb25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MCkgfD4gd3JhcFxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9ib29sIHgyLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4Myk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID0gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4Mik7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID0gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDA7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCB4MTtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQpO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBwb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc3RyX2ZpZWxkc1xuICBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZClcbiAgICAgICAgICAgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzaWdfZmllbGRzXG4gIGluXG5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiBfIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IHB0eWV4dF9wYXRoLkxvY2F0aW9uLmxvYztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIE1vbiBPY3QgIDIgMTE6MjU6NTcgQ0VTVCAyMDE3XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCA2NTk0MGEyYzZiZTQzYzQyZjc1YzZjNmIyNTU5NzRmN2U2ZGUwM2NhIChIRUFEIC0+IDQuMDYsIG9yaWdpbi80LjA2KVxuICAgICBBdXRob3I6IENocmlzdG9waGUgUmFmZmFsbGkgPGNocmlzdG9waGVAcmFmZmFsbGkuZXU+XG4gICAgIERhdGU6ICAgU3VuIE9jdCAxIDE4OjI3OjA3IDIwMTcgKzAyMDBcblxuICAgICAgICAgZml4ZWQgcG9zaXRpb24gb2YgbGFzdCBvcHRpb25hbCBsYXN0IHNlbWljb2x1bW4gaW4gc2VxdWVuY2UgKCMxMzg3KVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyMlwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNlwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgTG9jYXRpb24ubm9uZSBcImluaGVyaXRhbmNlIGluIG9iamVjdCB0eXBlXCIpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAudHh0LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIGV4cHJlc3Npb25cIlxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBfOyBfIH0sIHgwKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgeDA7IGxvYyB9LCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSB4MDsgbG9jIH0sIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyBsb2M7IF8gfSwgX3gwKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgbG9jOyBfIH0sIF94MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgdHlwZVwiXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIHsgdHh0ID0gY29weV9sYWJlbCB4MDsgbG9jID0gTG9jYXRpb24ubm9uZSB9LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lLFxuICAgICAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MS5Gcm9tLkFzdHR5cGVzLnR4dClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbm9sb2MgeCA9IHsgTG9jYXRpb24udHh0ID0geDsgbG9jID0gTG9jYXRpb24ubm9uZSB9XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBub2xvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKG5vbG9jIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAobm9sb2MgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiBub2xvYyB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gbm9sb2MgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDRcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJsb2NhbCBleGNlcHRpb25zXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgb3BlbiBpbiBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBsYWIgbXVzdCBzdGFydCB3aXRoICc/Jy5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcblxuICAgIE5vdGU6IHdoZW4gdXNlZCB1bmRlciBQc3RyX3ByaW1pdGl2ZSwgcHJpbSBjYW5ub3QgYmUgZW1wdHlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb3JlX3R5cGUgbGlzdDtcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUpXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChhcmdzID0gW10sIHJlcyA9IFNvbWUgVDApXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29yZV90eXBlIGxpc3QgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIGludFxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxNVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDJcblxubGV0IGluamVjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIGQgPVxuICBsZXQgb3BlbiBUbyBpblxuICBsZXQgb3BlbiBQYXJzZXRyZWUgaW5cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgXyAtPlxuICAgICAgbGV0IGxvYyA9IHsgZC5wdHlwX2xvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHR4dCA9IExvbmdpZGVudC5MZG90IChMb25naWRlbnQuTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIikgaW5cbiAgICAgIGxldCBpZGVudCA9IHsgTG9jYXRpb24udHh0OyBsb2MgfSBpblxuICAgICAge1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWRlbnQsIFsgZCBdKTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuICB8IF8gLT4gZFxuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjAzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ1bnJlYWNoYWJsZSBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgbG9jIHgwLCBjb3B5X2NvbnN0YW50IGxvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIGxvYyA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJzaWduYXR1cmVzIGluIGF0dHJpYnV0ZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoZnJvbV9sb2MgcGV4dF9uYW1lKSBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKGZyb21fbG9jIHBjZF9uYW1lKSBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlIGxpc3QgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+IExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiaW5saW5lIHJlY29yZHNcIlxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gXCJcIlxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4geDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFwiP1wiIF4geDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IGxvYyA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLkFzdHR5cGVzLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdsJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQzMiAoSW50MzIub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdMJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQ2NCAoSW50NjQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICduJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgKE5hdGl2ZWludC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGludGVnZXIgbGl0ZXJhbHNcIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPiBUby5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGZsb2F0IGxpdGVyYWxzXCIpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHJlY2ZsYWcgdHlwZXMgPVxuICBtYXRjaCAocmVjZmxhZywgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzKSB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzIC0+IHR5cGVzXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIFtdIC0+IFtdXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHggOjogeHMgLT5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiX25vbmVfXCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gLTE7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICAoeyBUby5Bc3R0eXBlcy50eHQgPSBcIm5vbnJlY1wiOyBsb2MgfSwgVG8uUGFyc2V0cmVlLlBTdHIgW10pXG4gICAgICAgIDo6IHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIF94MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDJcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB0eXAgPVxuICBsZXQgb3BlbiBGcm9tIGluXG4gIGxldCBvcGVuIExvbmdpZGVudCBpblxuICBtYXRjaCAobGFiZWwsIHR5cC5QYXJzZXRyZWUucHR5cF9kZXNjKSB3aXRoXG4gIHwgKCBUby5Bc3R0eXBlcy5PcHRpb25hbCBfLFxuICAgICAgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKHsgTG9jYXRpb24udHh0ID0gTGRvdCAoTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIik7IF8gfSwgWyBkIF0pICkgLT5cbiAgICAgIGRcbiAgfCBfIC0+IHR5cFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHBjZF9hcmdzKTtcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuIGZ1biB4IC0+XG4gIGlmIHggPD4gXCJcIiB0aGVuXG4gICAgaWYgeC5bMF0gPSAnPycgdGhlblxuICAgICAgVG8uQXN0dHlwZXMuT3B0aW9uYWwgKFN0cmluZy5zdWIgeCAxIChTdHJpbmcubGVuZ3RoIHggLSAxKSlcbiAgICBlbHNlIFRvLkFzdHR5cGVzLkxhYmVsbGVkIHhcbiAgZWxzZSBUby5Bc3R0eXBlcy5Ob2xhYmVsXG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5Bc3R0eXBlcy5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50MzIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHgwLCBTb21lICdsJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDY0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB4MCwgU29tZSAnTCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB4MCwgU29tZSAnbicpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHR5cGVzID1cbiAgbGV0IGlzX25vbnJlYyAoYXR0ciwgXykgPSBhdHRyLkxvY2F0aW9uLnR4dCA9IFwibm9ucmVjXCIgaW5cbiAgbWF0Y2ggTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzIHdpdGhcbiAgfCB4IDo6IHhzIHdoZW4gTGlzdC5leGlzdHMgaXNfbm9ucmVjIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgLT5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoaXNfbm9ucmVjIHgpKSB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4cylcbiAgfCB0eXBlcyAtPiAoVG8uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcylcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2ludCAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsImxldCBpc19rZXl3b3JkID0gZnVuY3Rpb25cbiAgfCBcImFuZFwiIC0+IHRydWVcbiAgfCBcImFzXCIgLT4gdHJ1ZVxuICB8IFwiYXNzZXJ0XCIgLT4gdHJ1ZVxuICB8IFwiYmVnaW5cIiAtPiB0cnVlXG4gIHwgXCJjbGFzc1wiIC0+IHRydWVcbiAgfCBcImNvbnN0cmFpbnRcIiAtPiB0cnVlXG4gIHwgXCJkb1wiIC0+IHRydWVcbiAgfCBcImRvbmVcIiAtPiB0cnVlXG4gIHwgXCJkb3dudG9cIiAtPiB0cnVlXG4gIHwgXCJlbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZW5kXCIgLT4gdHJ1ZVxuICB8IFwiZXhjZXB0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZXh0ZXJuYWxcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IHRydWVcbiAgfCBcImZvclwiIC0+IHRydWVcbiAgfCBcImZ1blwiIC0+IHRydWVcbiAgfCBcImZ1bmN0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3RvclwiIC0+IHRydWVcbiAgfCBcImlmXCIgLT4gdHJ1ZVxuICB8IFwiaW5cIiAtPiB0cnVlXG4gIHwgXCJpbmNsdWRlXCIgLT4gdHJ1ZVxuICB8IFwiaW5oZXJpdFwiIC0+IHRydWVcbiAgfCBcImluaXRpYWxpemVyXCIgLT4gdHJ1ZVxuICB8IFwibGF6eVwiIC0+IHRydWVcbiAgfCBcImxldFwiIC0+IHRydWVcbiAgfCBcIm1hdGNoXCIgLT4gdHJ1ZVxuICB8IFwibWV0aG9kXCIgLT4gdHJ1ZVxuICB8IFwibW9kdWxlXCIgLT4gdHJ1ZVxuICB8IFwibXV0YWJsZVwiIC0+IHRydWVcbiAgfCBcIm5ld1wiIC0+IHRydWVcbiAgfCBcIm5vbnJlY1wiIC0+IHRydWVcbiAgfCBcIm9iamVjdFwiIC0+IHRydWVcbiAgfCBcIm9mXCIgLT4gdHJ1ZVxuICB8IFwib3BlblwiIC0+IHRydWVcbiAgfCBcIm9yXCIgLT4gdHJ1ZVxuICAoKiB8IFwicGFyc2VyXCIgLT4gdHJ1ZSAqKVxuICB8IFwicHJpdmF0ZVwiIC0+IHRydWVcbiAgfCBcInJlY1wiIC0+IHRydWVcbiAgfCBcInNpZ1wiIC0+IHRydWVcbiAgfCBcInN0cnVjdFwiIC0+IHRydWVcbiAgfCBcInRoZW5cIiAtPiB0cnVlXG4gIHwgXCJ0b1wiIC0+IHRydWVcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJ0cnlcIiAtPiB0cnVlXG4gIHwgXCJ0eXBlXCIgLT4gdHJ1ZVxuICB8IFwidmFsXCIgLT4gdHJ1ZVxuICB8IFwidmlydHVhbFwiIC0+IHRydWVcbiAgfCBcIndoZW5cIiAtPiB0cnVlXG4gIHwgXCJ3aGlsZVwiIC0+IHRydWVcbiAgfCBcIndpdGhcIiAtPiB0cnVlXG4gIHwgXCJsb3JcIiAtPiB0cnVlXG4gIHwgXCJseG9yXCIgLT4gdHJ1ZVxuICB8IFwibW9kXCIgLT4gdHJ1ZVxuICB8IFwibGFuZFwiIC0+IHRydWVcbiAgfCBcImxzbFwiIC0+IHRydWVcbiAgfCBcImxzclwiIC0+IHRydWVcbiAgfCBcImFzclwiIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnNcbiAgICBvcGVuIFByaW50ZiAkKilcblxuKCogQ29weSBvZiBPQ2FtbCBwYXJzZXRyZWVzICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uIChmdW4gc3VmZml4IF8gLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBBc3RfJXMgPSBBc3RfJXNcXG5cIiBzdWZmaXggc3VmZml4KVxuKilcbm1vZHVsZSBBc3RfNDAyID0gQXN0XzQwMlxubW9kdWxlIEFzdF80MDMgPSBBc3RfNDAzXG5tb2R1bGUgQXN0XzQwNCA9IEFzdF80MDRcbm1vZHVsZSBBc3RfNDA1ID0gQXN0XzQwNVxubW9kdWxlIEFzdF80MDYgPSBBc3RfNDA2XG5tb2R1bGUgQXN0XzQwNyA9IEFzdF80MDdcbm1vZHVsZSBBc3RfNDA4ID0gQXN0XzQwOFxubW9kdWxlIEFzdF80MDkgPSBBc3RfNDA5XG5tb2R1bGUgQXN0XzQxMCA9IEFzdF80MTBcbm1vZHVsZSBBc3RfNDExID0gQXN0XzQxMVxubW9kdWxlIEFzdF80MTIgPSBBc3RfNDEyXG5tb2R1bGUgQXN0XzQxMyA9IEFzdF80MTNcbm1vZHVsZSBBc3RfNDE0ID0gQXN0XzQxNFxubW9kdWxlIEFzdF81MDAgPSBBc3RfNTAwXG5tb2R1bGUgQXN0XzUwMSA9IEFzdF81MDFcbm1vZHVsZSBBc3RfNTAyID0gQXN0XzUwMlxuKCokKilcblxuKCogTWFudWFsIG1pZ3JhdGlvbiBiZXR3ZWVuIHZlcnNpb25zICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biB4IHkgLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBNaWdyYXRlXyVzXyVzID0gTWlncmF0ZV8lc18lc1xcblwiIHggeSB4IHk7XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB5IHggeSB4KVxuKilcbm1vZHVsZSBNaWdyYXRlXzQwMl80MDMgPSBNaWdyYXRlXzQwMl80MDNcbm1vZHVsZSBNaWdyYXRlXzQwM180MDIgPSBNaWdyYXRlXzQwM180MDJcbm1vZHVsZSBNaWdyYXRlXzQwM180MDQgPSBNaWdyYXRlXzQwM180MDRcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDMgPSBNaWdyYXRlXzQwNF80MDNcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDUgPSBNaWdyYXRlXzQwNF80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDQgPSBNaWdyYXRlXzQwNV80MDRcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDYgPSBNaWdyYXRlXzQwNV80MDZcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDUgPSBNaWdyYXRlXzQwNl80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDcgPSBNaWdyYXRlXzQwNl80MDdcbm1vZHVsZSBNaWdyYXRlXzQwN180MDYgPSBNaWdyYXRlXzQwN180MDZcbm1vZHVsZSBNaWdyYXRlXzQwN180MDggPSBNaWdyYXRlXzQwN180MDhcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDcgPSBNaWdyYXRlXzQwOF80MDdcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDkgPSBNaWdyYXRlXzQwOF80MDlcbm1vZHVsZSBNaWdyYXRlXzQwOV80MDggPSBNaWdyYXRlXzQwOV80MDhcbm1vZHVsZSBNaWdyYXRlXzQwOV80MTAgPSBNaWdyYXRlXzQwOV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMF80MDkgPSBNaWdyYXRlXzQxMF80MDlcbm1vZHVsZSBNaWdyYXRlXzQxMF80MTEgPSBNaWdyYXRlXzQxMF80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTAgPSBNaWdyYXRlXzQxMV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTIgPSBNaWdyYXRlXzQxMV80MTJcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTEgPSBNaWdyYXRlXzQxMl80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTMgPSBNaWdyYXRlXzQxMl80MTNcbm1vZHVsZSBNaWdyYXRlXzQxM180MTIgPSBNaWdyYXRlXzQxM180MTJcbm1vZHVsZSBNaWdyYXRlXzQxM180MTQgPSBNaWdyYXRlXzQxM180MTRcbm1vZHVsZSBNaWdyYXRlXzQxNF80MTMgPSBNaWdyYXRlXzQxNF80MTNcbm1vZHVsZSBNaWdyYXRlXzQxNF81MDAgPSBNaWdyYXRlXzQxNF81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMF80MTQgPSBNaWdyYXRlXzUwMF80MTRcbm1vZHVsZSBNaWdyYXRlXzUwMF81MDEgPSBNaWdyYXRlXzUwMF81MDFcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDAgPSBNaWdyYXRlXzUwMV81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDIgPSBNaWdyYXRlXzUwMV81MDJcbm1vZHVsZSBNaWdyYXRlXzUwMl81MDEgPSBNaWdyYXRlXzUwMl81MDFcbigqJCopXG5cbigqIENvbXBpbGVyIG1vZHVsZXMgKilcbm1vZHVsZSBBc3RfbWV0YWRhdGEgPSBBc3RfbWV0YWRhdGFcbm1vZHVsZSBDb25maWcgPSBDb25maWdcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBQYXJzZSA9IFBhcnNlXG5tb2R1bGUgUHByaW50YXN0ID0gUHByaW50YXN0XG5cbmxldCBpbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKSA9XG4gICgqSUZfQVRfTEVBU1QgNDA4IE9jYW1sX2NvbW1vbi5Db21wbWlzYy5yZWFkX2NsZmxhZ3NfZnJvbV9lbnYgKCkgKilcbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ICgpICopXG4oKiogQWRqdXN0IHRoZSByZXBvcnRpbmcgc3R5bGUgb2YgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBPQ0FNTF9DT0xPUiBhbmQgT0NBTUxfRVJST1JfU1RZTEUuICopXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRPRE86IHJlbW92ZSB0aGlzIG9wZW4gKilcbm9wZW4gU3RkbGliMFxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxub3BlbiBBc3RsaWIuQXN0XzUwMFxuXG5bQEBAd2FybmluZyBcIi05XCJdXG5cbm9wZW4gQXN0dHlwZXNcbm9wZW4gUGFyc2V0cmVlXG5cbnR5cGUgJ2Egd2l0aF9sb2MgPSAnYSBMb2NhdGlvbi5sb2NcbnR5cGUgbG9jID0gTG9jYXRpb24udFxudHlwZSBsaWQgPSBMb25naWRlbnQudCB3aXRoX2xvY1xudHlwZSBzdHIgPSBzdHJpbmcgd2l0aF9sb2NcbnR5cGUgc3RyX29wdCA9IHN0cmluZyBvcHRpb24gd2l0aF9sb2NcbnR5cGUgYXR0cnMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5sZXQgZGVmYXVsdF9sb2MgPSByZWYgTG9jYXRpb24ubm9uZVxuXG50eXBlIHJlZl9hbmRfdmFsdWUgPSBSIDogJ2EgcmVmICogJ2EgLT4gcmVmX2FuZF92YWx1ZVxuXG5sZXQgcHJvdGVjdF9yZWYgPVxuICBsZXQgc2V0X3JlZiAoUiAociwgdikpID0gciA6PSB2IGluXG4gIGZ1biByZWYgZiAtPlxuICAgIGxldCAoUiAociwgXykpID0gcmVmIGluXG4gICAgbGV0IGJhY2t1cCA9IFIgKHIsICFyKSBpblxuICAgIHNldF9yZWYgcmVmO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgICBzZXRfcmVmIGJhY2t1cDtcbiAgICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfZGVmYXVsdF9sb2MgbCBmID0gcHJvdGVjdF9yZWYgKFIgKGRlZmF1bHRfbG9jLCBsKSkgZlxuXG5tb2R1bGUgQ29uc3QgPSBzdHJ1Y3RcbiAgbGV0IGludGVnZXIgP3N1ZmZpeCBpID0gUGNvbnN0X2ludGVnZXIgKGksIHN1ZmZpeClcbiAgbGV0IGludCA/c3VmZml4IGkgPSBpbnRlZ2VyID9zdWZmaXggKEludC50b19zdHJpbmcgaSlcbiAgbGV0IGludDMyID8oc3VmZml4ID0gJ2wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQzMi50b19zdHJpbmcgaSlcbiAgbGV0IGludDY0ID8oc3VmZml4ID0gJ0wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQ2NC50b19zdHJpbmcgaSlcbiAgbGV0IG5hdGl2ZWludCA/KHN1ZmZpeCA9ICduJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxuICBsZXQgZmxvYXQgP3N1ZmZpeCBmID0gUGNvbnN0X2Zsb2F0IChmLCBzdWZmaXgpXG4gIGxldCBjaGFyIGMgPSBQY29uc3RfY2hhciBjXG5cbiAgbGV0IHN0cmluZyA/cXVvdGF0aW9uX2RlbGltaXRlciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgcyA9XG4gICAgUGNvbnN0X3N0cmluZyAocywgbG9jLCBxdW90YXRpb25fZGVsaW1pdGVyKVxuZW5kXG5cbm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgbmFtZSBwYXlsb2FkID1cbiAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgVHlwID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2MgPSBkO1xuICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGQucHR5cF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHR5cF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdmFyIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF90dXBsZSBhKVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NvbnN0ciAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX29iamVjdCAoYSwgYikpXG4gIGxldCBjbGFzc18gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfY2xhc3MgKGEsIGIpKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfYWxpYXMgKGEsIGIpKVxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9wb2x5IChhLCBiKSlcbiAgbGV0IHBhY2thZ2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcGFja2FnZSAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2V4dGVuc2lvbiBhKVxuXG4gIGxldCBmb3JjZV9wb2x5IHQgPVxuICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gdCB8IF8gLT4gcG9seSB+bG9jOnQucHR5cF9sb2MgW10gdFxuICAoKiAtPiBnaG9zdD8gKilcblxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gICAgaW5cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuZW5kXG5cbm1vZHVsZSBQYXQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYyA9IGQ7XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZC5wcGF0X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBhbnkgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQcGF0X2FueVxuICBsZXQgdmFyID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF92YXIgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2FsaWFzIChhLCBiKSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdGFudCBhKVxuICBsZXQgaW50ZXJ2YWwgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R1cGxlIGEpXG5cbiAgbGV0IGNvbnN0cnVjdCA/bG9jID9hdHRycyBhIGIgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cnVjdCAoYSwgT3B0aW9uLm1hcCAoZnVuIGIgLT4gKFtdLCBiKSkgYikpXG5cbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hcnJheSBhKVxuICBsZXQgb3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29yIChhLCBiKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgdHlwZV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R5cGUgYSlcbiAgbGV0IGxhenlfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9sYXp5IGEpXG4gIGxldCB1bnBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3VucGFjayBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfb3BlbiAoYSwgYikpXG4gIGxldCBleGNlcHRpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9leGNlcHRpb24gYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIEV4cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjID0gZDtcbiAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBkLnBleHBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9pZGVudCBhKVxuICBsZXQgY29uc3RhbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0YW50IGEpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0IChhLCBiLCBjKSlcbiAgbGV0IGZ1bl8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBmdW5jdGlvbl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1bmN0aW9uIGEpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcHBseSAoYSwgYikpXG4gIGxldCBtYXRjaF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbWF0Y2ggKGEsIGIpKVxuICBsZXQgdHJ5XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF90cnkgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3R1cGxlIGEpXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RydWN0IChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGZpZWxkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2ZpZWxkIChhLCBiKSlcbiAgbGV0IHNldGZpZWxkID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpKVxuICBsZXQgYXJyYXkgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2FycmF5IGEpXG4gIGxldCBpZnRoZW5lbHNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykpXG4gIGxldCBzZXF1ZW5jZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXF1ZW5jZSAoYSwgYikpXG4gIGxldCB3aGlsZV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfd2hpbGUgKGEsIGIpKVxuICBsZXQgZm9yXyA/bG9jID9hdHRycyBhIGIgYyBkIGUgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBjb2VyY2UgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb2VyY2UgKGEsIGIsIGMpKVxuICBsZXQgc2VuZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZW5kIChhLCBiKSlcbiAgbGV0IG5ld18gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX25ldyBhKVxuICBsZXQgc2V0aW5zdHZhciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSlcbiAgbGV0IG92ZXJyaWRlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vdmVycmlkZSBhKVxuICBsZXQgbGV0bW9kdWxlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSlcbiAgbGV0IGxldGV4Y2VwdGlvbiA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpKVxuICBsZXQgYXNzZXJ0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXNzZXJ0IGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGF6eSBhKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wb2x5IChhLCBiKSlcbiAgbGV0IG9iamVjdF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29iamVjdCBhKVxuICBsZXQgbmV3dHlwZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXd0eXBlIChhLCBiKSlcbiAgbGV0IHBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3BhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29wZW4gKGEsIGIpKVxuXG4gIGxldCBsZXRvcCA/bG9jID9hdHRycyBsZXRfIGFuZHMgYm9keSA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0pXG5cbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZXh0ZW5zaW9uIGEpXG4gIGxldCB1bnJlYWNoYWJsZSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFBleHBfdW5yZWFjaGFibGVcbiAgbGV0IGNhc2UgbGhzID9ndWFyZCByaHMgPSB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cblxuICBsZXQgYmluZGluZ19vcCBvcCBwYXQgZXhwIGxvYyA9XG4gICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNdHkgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcG10eV9kZXNjID0gZDsgcG10eV9sb2MgPSBsb2M7IHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBkLnBtdHlfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9pZGVudCBhKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2FsaWFzIGEpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3NpZ25hdHVyZSBhKVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZnVuY3RvciAoYSwgYikpXG4gIGxldCB3aXRoXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUG10eV93aXRoIChhLCBiKSlcbiAgbGV0IHR5cGVvZl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3R5cGVvZiBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgTW9kID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtb2RfZGVzYyA9IGQ7IHBtb2RfbG9jID0gbG9jOyBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gZC5wbW9kX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfaWRlbnQgeClcbiAgbGV0IHN0cnVjdHVyZSA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2Rfc3RydWN0dXJlIHgpXG4gIGxldCBmdW5jdG9yXyA/bG9jID9hdHRycyBhcmcgYm9keSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2Z1bmN0b3IgKGFyZywgYm9keSkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBtMSBtMiA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2FwcGx5IChtMSwgbTIpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgbSBtdHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9jb25zdHJhaW50IChtLCBtdHkpKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGUgPSBtayA/bG9jID9hdHRycyAoUG1vZF91bnBhY2sgZSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIFNpZyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIGQgPSB7IHBzaWdfZGVzYyA9IGQ7IHBzaWdfbG9jID0gbG9jIH1cbiAgbGV0IHZhbHVlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdmFsdWUgYSlcbiAgbGV0IHR5cGVfID9sb2MgcmVjX2ZsYWcgYSA9IG1rID9sb2MgKFBzaWdfdHlwZSAocmVjX2ZsYWcsIGEpKVxuICBsZXQgdHlwZV9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3R5cGVzdWJzdCBhKVxuICBsZXQgdHlwZV9leHRlbnNpb24gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBleHQgYSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19leGNlcHRpb24gYSlcbiAgbGV0IG1vZHVsZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2R1bGUgYSlcbiAgbGV0IG1vZF9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHN1YnN0IGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19vcGVuIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2luY2x1ZGUgYSlcbiAgbGV0IGNsYXNzXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzIGEpXG4gIGxldCBjbGFzc190eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfY2xhc3NfdHlwZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHNpZ19leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBTdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc3RyX2Rlc2MgPSBkOyBwc3RyX2xvYyA9IGxvYyB9XG4gIGxldCBldmFsID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9ldmFsIChhLCBhdHRycykpXG4gIGxldCB2YWx1ZSA/bG9jIGEgYiA9IG1rID9sb2MgKFBzdHJfdmFsdWUgKGEsIGIpKVxuICBsZXQgcHJpbWl0aXZlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcHJpbWl0aXZlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc3RyX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdWxlIGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9vcGVuIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGluY2x1ZGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfaW5jbHVkZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBDbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY2xfZGVzYyA9IGQ7IHBjbF9sb2MgPSBsb2M7IHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gZC5wY2xfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0ciAoYSwgYikpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2xfc3RydWN0dXJlIGEpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGNsX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2FwcGx5IChhLCBiKSlcbiAgbGV0IGxldF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNsX2xldCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3R5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdHlfZGVzYyA9IGQ7IHBjdHlfbG9jID0gbG9jOyBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gZC5wY3R5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfY29uc3RyIChhLCBiKSlcbiAgbGV0IHNpZ25hdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfc2lnbmF0dXJlIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfZXh0ZW5zaW9uIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0eV9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3RmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdGZfZGVzYyA9IGQ7IHBjdGZfbG9jID0gbG9jOyBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9pbmhlcml0IGEpXG4gIGxldCB2YWxfID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGN0Zl92YWwgKGEsIGIsIGMsIGQpKVxuICBsZXQgbWV0aG9kXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfbWV0aG9kIChhLCBiLCBjLCBkKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9leHRlbnNpb24gYSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQY3RmX2F0dHJpYnV0ZSBhKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBkLnBjdGZfYXR0cmlidXRlcyBAIFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgQ2YgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNmX2Rlc2MgPSBkOyBwY2ZfbG9jID0gbG9jOyBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgaW5oZXJpdF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaGVyaXQgKGEsIGIsIGMpKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfdmFsIChhLCBiLCBjKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX21ldGhvZCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgaW5pdGlhbGl6ZXJfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaXRpYWxpemVyIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2ZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGNmX2F0dHJpYnV0ZSBhKVxuICBsZXQgdmlydHVhbF8gY3QgPSBDZmtfdmlydHVhbCBjdFxuICBsZXQgY29uY3JldGUgbyBlID0gQ2ZrX2NvbmNyZXRlIChvLCBlKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGQucGNmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIFZhbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwcmltID0gW10pIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgcHZhbF90eXBlID0gdHlwO1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdmFsX2xvYyA9IGxvYztcbiAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSB0eXAgPVxuICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cDsgcG1kX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1kX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE1zID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIHN5biA9XG4gICAge1xuICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgcG1zX21hbmlmZXN0ID0gc3luO1xuICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtc19sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNdGQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID90eXAgbmFtZSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgIHBtdGRfdHlwZSA9IHR5cDtcbiAgICAgIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcG10ZF9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBleHByID1cbiAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IGF0dHJzOyBwbWJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgT3BuID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KG92ZXJyaWRlID0gRnJlc2gpIGV4cHIgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxubW9kdWxlIEluY2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG1leHByID1cbiAgICB7IHBpbmNsX21vZCA9IG1leHByOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5lbmRcblxubW9kdWxlIFZiID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBwYXQgZXhwciA9XG4gICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnM7IHB2Yl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBDaSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2aXJ0ID0gQ29uY3JldGUpID8ocGFyYW1zID0gW10pXG4gICAgICBuYW1lIGV4cHIgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICBwY2lfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8oY3N0cnMgPSBbXSlcbiAgICAgID8oa2luZCA9IFB0eXBlX2Fic3RyYWN0KSA/KHByaXYgPSBQdWJsaWMpID9tYW5pZmVzdCBuYW1lID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHB0eXBlX2xvYyA9IGxvYztcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgZmllbGQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhtdXQgPSBJbW11dGFibGUpIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbGRfbXV0YWJsZSA9IG11dDtcbiAgICAgIHBsZF90eXBlID0gdHlwO1xuICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbigqKiBUeXBlIGV4dGVuc2lvbnMgKilcbm1vZHVsZSBUZSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwYXJhbXMgPSBbXSkgPyhwcml2ID0gUHVibGljKVxuICAgICAgcGF0aCBjb25zdHJ1Y3RvcnMgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBta19leGNlcHRpb24gPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgY29uc3RydWN0b3IgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGtpbmQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGRlY2wgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2YXJzID0gW10pXG4gICAgICA/KGFyZ3MgPSBQY3N0cl90dXBsZSBbXSkgP3JlcyBuYW1lID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0gUGV4dF9kZWNsICh2YXJzLCBhcmdzLCByZXMpO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IHJlYmluZCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGxpZCA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfcmViaW5kIGxpZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBDc2lnID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxubW9kdWxlIENzdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rIHNlbGYgZmllbGRzID0geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbmVuZFxuXG4oKiogUm93IGZpZWxkcyAqKVxubW9kdWxlIFJmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHByZl9kZXNjID0gZGVzYzsgcHJmX2xvYyA9IGxvYzsgcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCBjb25zdCB0eXMgPVxuICAgIG1rID9sb2MgP2F0dHJzIChSdGFnIChsYWJlbCwgY29uc3QsIHR5cykpXG5cbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChSaW5oZXJpdCB0eSlcbmVuZFxuXG4oKiogT2JqZWN0IGZpZWxkcyAqKVxubW9kdWxlIE9mID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHBvZl9kZXNjID0gZGVzYzsgcG9mX2xvYyA9IGxvYzsgcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCB0eSA9IG1rID9sb2MgP2F0dHJzIChPdGFnIChsYWJlbCwgdHkpKVxuICBsZXQgaW5oZXJpdF8gP2xvYyB0eSA9IG1rID9sb2MgKE9pbmhlcml0IHR5KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCRUdJTiBvZiBCTEFDSyBNQUdJQyAqKVxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG50eXBlIF8gd2l0bmVzc2VzID0gLi5cblxudHlwZSBfIG1pZ3JhdGlvbiA9IC4uXG50eXBlIF8gbWlncmF0aW9uICs9IFVuZGVmaW5lZCA6IF8gbWlncmF0aW9uXG5cbnR5cGUgJ2EgbWlncmF0aW9uX2luZm8gPSB7XG4gIG11dGFibGUgbmV4dF92ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xuICBtdXRhYmxlIHByZXZpb3VzX3ZlcnNpb24gOiAnYSBtaWdyYXRpb247XG59XG5cbigqKiBBYnN0cmFjdCB2aWV3IG9mIGEgdmVyc2lvbiBvZiBhbiBPQ2FtbCBBc3QgKilcbm1vZHVsZSB0eXBlIEFzdCA9IHNpZ1xuICAoKiQgZm9yZWFjaF9tb2R1bGUgKGZ1biBtIHR5cGVzIC0+XG4gICAgICBwcmludGYgXCIgIG1vZHVsZSAlcyA6IHNpZ1xcblwiIG07XG4gICAgICBMaXN0Lml0ZXIgdHlwZXMgfmY6KHByaW50ZiBcIiAgICB0eXBlICVzXFxuXCIpO1xuICAgICAgcHJpbnRmIFwiICBlbmRcXG5cIlxuICAgIClcbiAgKilcbiAgbW9kdWxlIFBhcnNldHJlZSA6IHNpZ1xuICAgIHR5cGUgc3RydWN0dXJlXG4gICAgdHlwZSBzaWduYXR1cmVcbiAgICB0eXBlIHRvcGxldmVsX3BocmFzZVxuICAgIHR5cGUgY29yZV90eXBlXG4gICAgdHlwZSBleHByZXNzaW9uXG4gICAgdHlwZSBwYXR0ZXJuXG4gICAgdHlwZSBjYXNlXG4gICAgdHlwZSB0eXBlX2RlY2xhcmF0aW9uXG4gICAgdHlwZSB0eXBlX2V4dGVuc2lvblxuICAgIHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgdHlwZSBjbGFzc19leHByXG4gICAgdHlwZSBjbGFzc19maWVsZFxuICAgIHR5cGUgY2xhc3NfdHlwZVxuICAgIHR5cGUgY2xhc3Nfc2lnbmF0dXJlXG4gICAgdHlwZSBjbGFzc190eXBlX2ZpZWxkXG4gICAgdHlwZSBtb2R1bGVfZXhwclxuICAgIHR5cGUgbW9kdWxlX3R5cGVcbiAgICB0eXBlIHNpZ25hdHVyZV9pdGVtXG4gICAgdHlwZSBzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcbigqJCopXG4gIG1vZHVsZSBDb25maWcgOiBzaWdcbiAgICB2YWwgYXN0X2ltcGxfbWFnaWNfbnVtYmVyIDogc3RyaW5nXG4gICAgdmFsIGFzdF9pbnRmX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICBlbmRcbmVuZFxuXG4oKiBTaG9ydGN1dHMgZm9yIHRhbGtpbmcgYWJvdXQgYXN0IHR5cGVzIG91dHNpZGUgb2YgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG50eXBlICdhIF90eXBlcyA9ICdhIGNvbnN0cmFpbnQgJ2FcbiAgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBfO1xcblwiIHMpICopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBfO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IF87XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogXztcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBfO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IF87XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogXztcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBfO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IF87XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogXztcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IF87XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IF87XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogXztcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBfO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IF87XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogXztcbigqJCopXG4gID5cbjs7XG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICBwcmludGYgXCJ0eXBlICdhIGdldF8lcyA9XFxuXCIgcztcbiAgICBwcmludGYgXCIgICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCAlcyA6ICd4OyAuLiA+XFxuXCIgc1xuICApICopXG50eXBlICdhIGdldF9zdHJ1Y3R1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdG9wbGV2ZWxfcGhyYXNlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHRvcGxldmVsX3BocmFzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jb3JlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY29yZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2V4cHJlc3Npb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXhwcmVzc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9wYXR0ZXJuID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHBhdHRlcm4gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2FzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjYXNlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3R5cGVfZGVjbGFyYXRpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9kZWNsYXJhdGlvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2V4dGVuc2lvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0eXBlX2V4dGVuc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZXhwciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19maWVsZCA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3Nfc2lnbmF0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3NpZ25hdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlX2ZpZWxkID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGVfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc2lnbmF0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlX2l0ZW0gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc3RydWN0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlX2l0ZW0gOiAneDsgLi4gPlxuKCokKilcblxubW9kdWxlIHR5cGUgT0NhbWxfdmVyc2lvbiA9IHNpZ1xuICBtb2R1bGUgQXN0IDogQXN0XG4gIHZhbCB2ZXJzaW9uIDogaW50XG4gIHZhbCBzdHJpbmdfdmVyc2lvbiA6IHN0cmluZ1xuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIHZhbCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0bmVzcyhBc3QgOiBBc3QpID1cbnN0cnVjdFxuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIGxldCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvID1cbiAgICB7IG5leHRfdmVyc2lvbiA9IFVuZGVmaW5lZDsgcHJldmlvdXNfdmVyc2lvbiA9IFVuZGVmaW5lZCB9XG5lbmRcblxudHlwZSAndHlwZXMgb2NhbWxfdmVyc2lvbiA9XG4gIChtb2R1bGUgT0NhbWxfdmVyc2lvblxuICAgICgqJCBsZXQgc2VwID0gd2l0aF90aGVuX2FuZCAoKSBpblxuICAgICAgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICAgICAgcHJpbnRmIFwiICAgICV0IHR5cGUgQXN0LiVzLiVzID0gJ3R5cGVzIGdldF8lc1xcblwiIHNlcCBtIHMgcykgKilcbiAgICB3aXRoIHR5cGUgQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgPSAndHlwZXMgZ2V0X3N0cnVjdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSA9ICd0eXBlcyBnZXRfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gJ3R5cGVzIGdldF90b3BsZXZlbF9waHJhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUgPSAndHlwZXMgZ2V0X2NvcmVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gPSAndHlwZXMgZ2V0X2V4cHJlc3Npb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5wYXR0ZXJuID0gJ3R5cGVzIGdldF9wYXR0ZXJuXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2FzZSA9ICd0eXBlcyBnZXRfY2FzZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSAndHlwZXMgZ2V0X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9ICd0eXBlcyBnZXRfdHlwZV9leHRlbnNpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSAndHlwZXMgZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSAndHlwZXMgZ2V0X2NsYXNzX2V4cHJcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfZmllbGRcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlID0gJ3R5cGVzIGdldF9jbGFzc190eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0gJ3R5cGVzIGdldF9jbGFzc19zaWduYXR1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0gJ3R5cGVzIGdldF9jbGFzc190eXBlX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPSAndHlwZXMgZ2V0X21vZHVsZV9leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPSAndHlwZXMgZ2V0X21vZHVsZV90eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3NpZ25hdHVyZV9pdGVtXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICApXG5cbnR5cGUgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBwcmludGYgXCIgIGNvcHlfJXM6ICdmcm9tIGdldF8lcyAtPiAndG9fIGdldF8lcztcXG5cIiBzIHMgcykgKilcbiAgY29weV9zdHJ1Y3R1cmU6ICdmcm9tIGdldF9zdHJ1Y3R1cmUgLT4gJ3RvXyBnZXRfc3RydWN0dXJlO1xuICBjb3B5X3NpZ25hdHVyZTogJ2Zyb20gZ2V0X3NpZ25hdHVyZSAtPiAndG9fIGdldF9zaWduYXR1cmU7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlOiAnZnJvbSBnZXRfdG9wbGV2ZWxfcGhyYXNlIC0+ICd0b18gZ2V0X3RvcGxldmVsX3BocmFzZTtcbiAgY29weV9jb3JlX3R5cGU6ICdmcm9tIGdldF9jb3JlX3R5cGUgLT4gJ3RvXyBnZXRfY29yZV90eXBlO1xuICBjb3B5X2V4cHJlc3Npb246ICdmcm9tIGdldF9leHByZXNzaW9uIC0+ICd0b18gZ2V0X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybjogJ2Zyb20gZ2V0X3BhdHRlcm4gLT4gJ3RvXyBnZXRfcGF0dGVybjtcbiAgY29weV9jYXNlOiAnZnJvbSBnZXRfY2FzZSAtPiAndG9fIGdldF9jYXNlO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb246ICdmcm9tIGdldF90eXBlX2RlY2xhcmF0aW9uIC0+ICd0b18gZ2V0X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb246ICdmcm9tIGdldF90eXBlX2V4dGVuc2lvbiAtPiAndG9fIGdldF90eXBlX2V4dGVuc2lvbjtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6ICdmcm9tIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ3RvXyBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBjb3B5X2NsYXNzX2V4cHI6ICdmcm9tIGdldF9jbGFzc19leHByIC0+ICd0b18gZ2V0X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQ6ICdmcm9tIGdldF9jbGFzc19maWVsZCAtPiAndG9fIGdldF9jbGFzc19maWVsZDtcbiAgY29weV9jbGFzc190eXBlOiAnZnJvbSBnZXRfY2xhc3NfdHlwZSAtPiAndG9fIGdldF9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZTogJ2Zyb20gZ2V0X2NsYXNzX3NpZ25hdHVyZSAtPiAndG9fIGdldF9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZDogJ2Zyb20gZ2V0X2NsYXNzX3R5cGVfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwcjogJ2Zyb20gZ2V0X21vZHVsZV9leHByIC0+ICd0b18gZ2V0X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlOiAnZnJvbSBnZXRfbW9kdWxlX3R5cGUgLT4gJ3RvXyBnZXRfbW9kdWxlX3R5cGU7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW06ICdmcm9tIGdldF9zaWduYXR1cmVfaXRlbSAtPiAndG9fIGdldF9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbTogJ2Zyb20gZ2V0X3N0cnVjdHVyZV9pdGVtIC0+ICd0b18gZ2V0X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxubGV0IGlkIHggPSB4XG5sZXQgbWlncmF0aW9uX2lkZW50aXR5IDogKCdhLCAnYSkgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgIGNvcHlfJXMgPSBpZDtcXG5cIiBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZSA9IGlkO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSA9IGlkO1xuICBjb3B5X2NvcmVfdHlwZSA9IGlkO1xuICBjb3B5X2V4cHJlc3Npb24gPSBpZDtcbiAgY29weV9wYXR0ZXJuID0gaWQ7XG4gIGNvcHlfY2FzZSA9IGlkO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb24gPSBpZDtcbiAgY29weV90eXBlX2V4dGVuc2lvbiA9IGlkO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGlkO1xuICBjb3B5X2NsYXNzX2V4cHIgPSBpZDtcbiAgY29weV9jbGFzc19maWVsZCA9IGlkO1xuICBjb3B5X2NsYXNzX3R5cGUgPSBpZDtcbiAgY29weV9jbGFzc19zaWduYXR1cmUgPSBpZDtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkID0gaWQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgPSBpZDtcbiAgY29weV9tb2R1bGVfdHlwZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtID0gaWQ7XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gPSBpZDtcbigqJCopXG59XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IG1pZ3JhdGlvbl9jb21wb3NlIChhYiA6ICgnYSwgJ2IpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIChiYyA6ICgnYiwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIDogKCdhLCAnYykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyUtMjFzID0gY29tcG9zZSBiYy5jb3B5XyUtMjFzIGFiLmNvcHlfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgYWIuY29weV90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICBhYi5jb3B5X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgIGFiLmNvcHlfZXhwcmVzc2lvbjtcbiAgY29weV9wYXR0ZXJuICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfcGF0dGVybiAgICAgICAgICAgICAgIGFiLmNvcHlfcGF0dGVybjtcbiAgY29weV9jYXNlICAgICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2FzZSAgICAgICAgICAgICAgICAgIGFiLmNvcHlfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgIGFiLmNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgIGFiLmNvcHlfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gY29tcG9zZSBiYy5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhYi5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZXhwcjtcbiAgY29weV9jbGFzc19maWVsZCAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX3R5cGU7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICBhYi5jb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgIGFiLmNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwciAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgIGFiLmNvcHlfbW9kdWxlX2V4cHI7XG4gIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV90eXBlICAgICAgICAgICBhYi5jb3B5X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgYWIuY29weV9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxufVxuXG50eXBlIF8gbWlncmF0aW9uICs9IE1pZ3JhdGlvbiA6ICdmcm9tIG9jYW1sX3ZlcnNpb24gKiAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb24gLT4gJ2Zyb20gbWlncmF0aW9uXG5cbm1vZHVsZSB0eXBlIE1pZ3JhdGVfbW9kdWxlID0gc2lnXG4gIG1vZHVsZSBGcm9tIDogQXN0XG4gIG1vZHVsZSBUbyA6IEFzdFxuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICBwcmludGYgXCIgIHZhbCBjb3B5XyUtMjFzOiBGcm9tLiVzLiVzIC0+IFRvLiVzLiVzXFxuXCIgcyBtIHMgbSBzKSAqKVxuICB2YWwgY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgdmFsIGNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgOiBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICB2YWwgY29weV9jb3JlX3R5cGUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlXG4gIHZhbCBjb3B5X2V4cHJlc3Npb24gICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICB2YWwgY29weV9wYXR0ZXJuICAgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5cbiAgdmFsIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlXG4gIHZhbCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgIDogRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICB2YWwgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICB2YWwgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIHZhbCBjb3B5X2NsYXNzX2V4cHIgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICB2YWwgY29weV9jbGFzc19maWVsZCAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICB2YWwgY29weV9jbGFzc190eXBlICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgdmFsIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICB2YWwgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgdmFsIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgdmFsIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgdmFsIGNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgdmFsIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbigqJCopXG5lbmRcblxubW9kdWxlIE1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgICAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbilcbiAgICAoQV90b19CIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEEuQXN0IGFuZCBtb2R1bGUgVG8gPSBCLkFzdClcbj1cbnN0cnVjdFxuICBsZXQgbWlncmF0aW9uX2Z1bmN0aW9ucyA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBsZXQgb3BlbiBBX3RvX0IgaW5cbiAgICB7XG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICAgIGNvcHlfc3RydWN0dXJlO1xuICAgICAgY29weV9zaWduYXR1cmU7XG4gICAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICAgIGNvcHlfY29yZV90eXBlO1xuICAgICAgY29weV9leHByZXNzaW9uO1xuICAgICAgY29weV9wYXR0ZXJuO1xuICAgICAgY29weV9jYXNlO1xuICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgY29weV9jbGFzc19leHByO1xuICAgICAgY29weV9jbGFzc19maWVsZDtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZTtcbiAgICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgICAgY29weV9tb2R1bGVfZXhwcjtcbiAgICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgICAgY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9taWdyYXRpb24gKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG4gICAgKEJfdG9fQSA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBCLkFzdCBhbmQgbW9kdWxlIFRvID0gQS5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0ICgpID0gKFxuICAgIGxldCBpc191bmRlZmluZWQgOiB0eXBlIGEuIGEgbWlncmF0aW9uIC0+IGJvb2wgPSBmdW5jdGlvblxuICAgICAgfCBVbmRlZmluZWQgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBhc3NlcnQgKEEudmVyc2lvbiA8IEIudmVyc2lvbik7XG4gICAgYXNzZXJ0IChpc191bmRlZmluZWQgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEIubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvbik7XG4gICAgbGV0IG1vZHVsZSBBX3RvX0JfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhBKShCKShBX3RvX0IpIGluXG4gICAgbGV0IG1vZHVsZSBCX3RvX0FfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhCKShBKShCX3RvX0EpIGluXG4gICAgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBBKSwgQV90b19CX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEIpKTtcbiAgICBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBCKSwgQl90b19BX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEEpKTtcbiAgKVxuZW5kXG5cbnR5cGUgJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvbiA9XG4gIHwgTm9fbWlncmF0aW9uIDogJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvblxuICB8IEltbWVkaWF0ZV9taWdyYXRpb25cbiAgICA6ICAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb25cbiAgICAgIC0+ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cblxubGV0IGltbWVkaWF0ZV9taWdyYXRpb25cbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAodHlwZSAlcylcXG5cIiBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZSlcbiAgICAodHlwZSBzaWduYXR1cmUpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlKVxuICAgICh0eXBlIGNvcmVfdHlwZSlcbiAgICAodHlwZSBleHByZXNzaW9uKVxuICAgICh0eXBlIHBhdHRlcm4pXG4gICAgKHR5cGUgY2FzZSlcbiAgICAodHlwZSB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICAodHlwZSBjbGFzc19leHByKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkKVxuICAgICh0eXBlIGNsYXNzX3R5cGUpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0pXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0pXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiAgXCIgICAgICUtMjFzIDogJXM7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmU7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGU7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb247XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm47XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2U7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb247XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmU7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQ7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW07XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgIGRpcmVjdGlvblxuICA9XG4gIGxldCB2ZXJzaW9uID0gbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBOZXh0IC0+IEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uXG4gICAgfCBgUHJldmlvdXMgLT4gQS5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uXG4gIGluXG4gIG1hdGNoIHZlcnNpb24gd2l0aFxuICB8IFVuZGVmaW5lZCAtPiBOb19taWdyYXRpb25cbiAgfCBNaWdyYXRpb24gKF8sIGZ1bnMsIHRvXykgLT4gSW1tZWRpYXRlX21pZ3JhdGlvbiAoZnVucywgdG9fKVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBtaWdyYXRlXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMxKSAodHlwZSAlczIpXFxuXCIgcyBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZTEpICh0eXBlIHN0cnVjdHVyZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlMSkgKHR5cGUgc2lnbmF0dXJlMilcbiAgICAodHlwZSB0b3BsZXZlbF9waHJhc2UxKSAodHlwZSB0b3BsZXZlbF9waHJhc2UyKVxuICAgICh0eXBlIGNvcmVfdHlwZTEpICh0eXBlIGNvcmVfdHlwZTIpXG4gICAgKHR5cGUgZXhwcmVzc2lvbjEpICh0eXBlIGV4cHJlc3Npb24yKVxuICAgICh0eXBlIHBhdHRlcm4xKSAodHlwZSBwYXR0ZXJuMilcbiAgICAodHlwZSBjYXNlMSkgKHR5cGUgY2FzZTIpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbjEpICh0eXBlIHR5cGVfZGVjbGFyYXRpb24yKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uMSkgKHR5cGUgdHlwZV9leHRlbnNpb24yKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjEpICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjIpXG4gICAgKHR5cGUgY2xhc3NfZXhwcjEpICh0eXBlIGNsYXNzX2V4cHIyKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkMSkgKHR5cGUgY2xhc3NfZmllbGQyKVxuICAgICh0eXBlIGNsYXNzX3R5cGUxKSAodHlwZSBjbGFzc190eXBlMilcbiAgICAodHlwZSBjbGFzc19zaWduYXR1cmUxKSAodHlwZSBjbGFzc19zaWduYXR1cmUyKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQxKSAodHlwZSBjbGFzc190eXBlX2ZpZWxkMilcbiAgICAodHlwZSBtb2R1bGVfZXhwcjEpICh0eXBlIG1vZHVsZV9leHByMilcbiAgICAodHlwZSBtb2R1bGVfdHlwZTEpICh0eXBlIG1vZHVsZV90eXBlMilcbiAgICAodHlwZSBzaWduYXR1cmVfaXRlbTEpICh0eXBlIHNpZ25hdHVyZV9pdGVtMilcbiAgICAodHlwZSBzdHJ1Y3R1cmVfaXRlbTEpICh0eXBlIHN0cnVjdHVyZV9pdGVtMilcbigqJCopXG4gICAgKChtb2R1bGUgQSkgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAlLTIxcyA6ICVzMTtcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTE7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTE7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTE7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTE7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb24xO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuMTtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTE7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb24xO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjE7XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjE7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHIxO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDE7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGUxO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmUxO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkMTtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHIxO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTE7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtMTtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW0xO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgICgobW9kdWxlIEIpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczI7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUyO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUyO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UyO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUyO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMjtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjI7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UyO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMjtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24yO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IyO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMjtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQyO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMjtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMjtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDI7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUyO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTI7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMjtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9uc1xuICA9XG4gIG1hdGNoIEEuVmVyc2lvbiB3aXRoXG4gIHwgQi5WZXJzaW9uIC0+IG1pZ3JhdGlvbl9pZGVudGl0eVxuICB8IF8gLT5cbiAgICBsZXQgZGlyZWN0aW9uID0gaWYgQS52ZXJzaW9uIDwgQi52ZXJzaW9uIHRoZW4gYE5leHQgZWxzZSBgUHJldmlvdXMgaW5cbiAgICBsZXQgcmVjIG1pZ3JhdGUgKG0gOiBBLnR5cGVzIGltbWVkaWF0ZV9taWdyYXRpb24pIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgSW1tZWRpYXRlX21pZ3JhdGlvbiAoZiwgKG1vZHVsZSBUbykpIC0+XG4gICAgICAgIG1hdGNoIFRvLlZlcnNpb24gd2l0aFxuICAgICAgICB8IEIuVmVyc2lvbiAtPiBmXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1hdGNoIGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBUbykgZGlyZWN0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGcsIHRvMikgLT5cbiAgICAgICAgICAgIG1pZ3JhdGUgKEltbWVkaWF0ZV9taWdyYXRpb24gKG1pZ3JhdGlvbl9jb21wb3NlIGYgZywgdG8yKSlcbiAgICBpblxuICAgIG1pZ3JhdGUgKGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBBKSBkaXJlY3Rpb24pXG5cbm1vZHVsZSBDb252ZXJ0IChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKSA9IHN0cnVjdFxuICBsZXQge1xuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICBjb3B5X3NpZ25hdHVyZTtcbiAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICBjb3B5X2V4cHJlc3Npb247XG4gICAgY29weV9wYXR0ZXJuO1xuICAgIGNvcHlfY2FzZTtcbiAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjb3B5X2NsYXNzX2V4cHI7XG4gICAgY29weV9jbGFzc19maWVsZDtcbiAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgY29weV9jbGFzc19zaWduYXR1cmU7XG4gICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgY29weV9tb2R1bGVfdHlwZTtcbiAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICB9IDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgIG1pZ3JhdGUgKG1vZHVsZSBBKSAobW9kdWxlIEIpXG5lbmRcblxuKCokIGZvcmVhY2hfdmVyc2lvbiAoZnVuIG4gdmVyc2lvbiAtPlxuICAgIHByaW50ZiBcIm1vZHVsZSBPQ2FtbF8lZCA9IHN0cnVjdFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF8lZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XyVkKVxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgdmVyc2lvbiA9ICVkXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGxldCBzdHJpbmdfdmVyc2lvbiA9ICVTXFxuXCIgdmVyc2lvbjtcbiAgICBwcmludGYgXCJlbmRcXG5cIjtcbiAgICBwcmludGYgXCJsZXQgb2NhbWxfJWQgOiBPQ2FtbF8lZC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF8lZClcXG5cIlxuICAgICAgbiBuIG47XG4gIClcbiopXG5tb2R1bGUgT0NhbWxfNDAyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMilcbiAgbGV0IHZlcnNpb24gPSA0MDJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAyXCJcbmVuZFxubGV0IG9jYW1sXzQwMiA6IE9DYW1sXzQwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDIpXG5tb2R1bGUgT0NhbWxfNDAzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMylcbiAgbGV0IHZlcnNpb24gPSA0MDNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAzXCJcbmVuZFxubGV0IG9jYW1sXzQwMyA6IE9DYW1sXzQwMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDMpXG5tb2R1bGUgT0NhbWxfNDA0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNClcbiAgbGV0IHZlcnNpb24gPSA0MDRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA0XCJcbmVuZFxubGV0IG9jYW1sXzQwNCA6IE9DYW1sXzQwNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDQpXG5tb2R1bGUgT0NhbWxfNDA1ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNSlcbiAgbGV0IHZlcnNpb24gPSA0MDVcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA1XCJcbmVuZFxubGV0IG9jYW1sXzQwNSA6IE9DYW1sXzQwNS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDUpXG5tb2R1bGUgT0NhbWxfNDA2ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNilcbiAgbGV0IHZlcnNpb24gPSA0MDZcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA2XCJcbmVuZFxubGV0IG9jYW1sXzQwNiA6IE9DYW1sXzQwNi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDYpXG5tb2R1bGUgT0NhbWxfNDA3ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwN1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNylcbiAgbGV0IHZlcnNpb24gPSA0MDdcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA3XCJcbmVuZFxubGV0IG9jYW1sXzQwNyA6IE9DYW1sXzQwNy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDcpXG5tb2R1bGUgT0NhbWxfNDA4ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOClcbiAgbGV0IHZlcnNpb24gPSA0MDhcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA4XCJcbmVuZFxubGV0IG9jYW1sXzQwOCA6IE9DYW1sXzQwOC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDgpXG5tb2R1bGUgT0NhbWxfNDA5ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOSlcbiAgbGV0IHZlcnNpb24gPSA0MDlcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA5XCJcbmVuZFxubGV0IG9jYW1sXzQwOSA6IE9DYW1sXzQwOS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDkpXG5tb2R1bGUgT0NhbWxfNDEwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMClcbiAgbGV0IHZlcnNpb24gPSA0MTBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEwXCJcbmVuZFxubGV0IG9jYW1sXzQxMCA6IE9DYW1sXzQxMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTApXG5tb2R1bGUgT0NhbWxfNDExID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMSlcbiAgbGV0IHZlcnNpb24gPSA0MTFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjExXCJcbmVuZFxubGV0IG9jYW1sXzQxMSA6IE9DYW1sXzQxMS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTEpXG5tb2R1bGUgT0NhbWxfNDEyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMilcbiAgbGV0IHZlcnNpb24gPSA0MTJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEyXCJcbmVuZFxubGV0IG9jYW1sXzQxMiA6IE9DYW1sXzQxMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTIpXG5tb2R1bGUgT0NhbWxfNDEzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMylcbiAgbGV0IHZlcnNpb24gPSA0MTNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEzXCJcbmVuZFxubGV0IG9jYW1sXzQxMyA6IE9DYW1sXzQxMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTMpXG5tb2R1bGUgT0NhbWxfNDE0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxNClcbiAgbGV0IHZlcnNpb24gPSA0MTRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjE0XCJcbmVuZFxubGV0IG9jYW1sXzQxNCA6IE9DYW1sXzQxNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTQpXG5tb2R1bGUgT0NhbWxfNTAwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMClcbiAgbGV0IHZlcnNpb24gPSA1MDBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjBcIlxuZW5kXG5sZXQgb2NhbWxfNTAwIDogT0NhbWxfNTAwLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMClcbm1vZHVsZSBPQ2FtbF81MDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAxXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAxKVxuICBsZXQgdmVyc2lvbiA9IDUwMVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMVwiXG5lbmRcbmxldCBvY2FtbF81MDEgOiBPQ2FtbF81MDEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAxKVxubW9kdWxlIE9DYW1sXzUwMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDIpXG4gIGxldCB2ZXJzaW9uID0gNTAyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4yXCJcbmVuZFxubGV0IG9jYW1sXzUwMiA6IE9DYW1sXzUwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDIpXG4oKiQqKVxuXG5sZXQgYWxsX3ZlcnNpb25zIDogKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSBsaXN0ID0gW1xuICAoKiRmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIF8gLT5cbiAgICAgIHByaW50ZiBcIihtb2R1bGUgT0NhbWxfJWQgOiBPQ2FtbF92ZXJzaW9uKTtcXG5cIiBuKSopXG4obW9kdWxlIE9DYW1sXzQwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDMgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA0IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDYgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA3IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwOCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDkgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDAgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAxIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKCokKilcbl1cblxuKCokZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biBhIGIgLT5cbiAgICBwcmludGYgXCJpbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF8lZCkoT0NhbWxfJWQpXFxuXCIgYSBiO1xuICAgIHByaW50ZiBcIiAgICAoQXN0bGliLk1pZ3JhdGVfJWRfJWQpKEFzdGxpYi5NaWdyYXRlXyVkXyVkKVxcblwiIGEgYiBiIGFcbiAgKVxuKilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMikoT0NhbWxfNDAzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDJfNDAzKShBc3RsaWIuTWlncmF0ZV80MDNfNDAyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDAzKShPQ2FtbF80MDQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwM180MDQpKEFzdGxpYi5NaWdyYXRlXzQwNF80MDMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDQpKE9DYW1sXzQwNSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA0XzQwNSkoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNSkoT0NhbWxfNDA2KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDVfNDA2KShBc3RsaWIuTWlncmF0ZV80MDZfNDA1KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA2KShPQ2FtbF80MDcpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNl80MDcpKEFzdGxpYi5NaWdyYXRlXzQwN180MDYpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDcpKE9DYW1sXzQwOClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA3XzQwOCkoQXN0bGliLk1pZ3JhdGVfNDA4XzQwNylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOCkoT0NhbWxfNDA5KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDhfNDA5KShBc3RsaWIuTWlncmF0ZV80MDlfNDA4KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA5KShPQ2FtbF80MTApXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwOV80MTApKEFzdGxpYi5NaWdyYXRlXzQxMF80MDkpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTApKE9DYW1sXzQxMSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEwXzQxMSkoQXN0bGliLk1pZ3JhdGVfNDExXzQxMClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMSkoT0NhbWxfNDEyKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTFfNDEyKShBc3RsaWIuTWlncmF0ZV80MTJfNDExKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEyKShPQ2FtbF80MTMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMl80MTMpKEFzdGxpYi5NaWdyYXRlXzQxM180MTIpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTMpKE9DYW1sXzQxNClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEzXzQxNCkoQXN0bGliLk1pZ3JhdGVfNDE0XzQxMylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxNCkoT0NhbWxfNTAwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTRfNTAwKShBc3RsaWIuTWlncmF0ZV81MDBfNDE0KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAwKShPQ2FtbF81MDEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMF81MDEpKEFzdGxpYi5NaWdyYXRlXzUwMV81MDApXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF81MDEpKE9DYW1sXzUwMilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNTAxXzUwMikoQXN0bGliLk1pZ3JhdGVfNTAyXzUwMSlcbigqJCopXG5cbm1vZHVsZSBPQ2FtbF9jdXJyZW50ID0gT0NhbWxfT0NBTUxfVkVSU0lPTlxuXG5tb2R1bGUgRmluZF92ZXJzaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEltcGwgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IEludGYgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IFVua25vd25cblxuICBsZXQgZnJvbV9tYWdpYyBtYWdpYyA9XG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gVW5rbm93blxuICAgICAgfCAobW9kdWxlIFZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSA6OiB0YWlsIC0+XG4gICAgICAgICAgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEltcGwgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2UgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEludGYgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvb3AgdGFpbFxuICAgIGluXG4gICAgKCogVHJhdmVyc2UgdGhlIHZlcnNpb25zIGZyb20gbGFzdCB0byBmaXJzdDpcbiAgICAgICBpZiB0aGUgbWFnaWMgbnVtYmVycyBhcmVuJ3QgdW5pcXVlIGFtb25nIHZlcnNpb25zLFxuICAgICAgIHdlIHdhbnQgdGhlIGxhdGVzdCB2ZXJzaW9uIHdpdGggYSBtYWdpYyBudW1iZXIgbWF0Y2guXG4gICAgICAgVGhlIHNpdHVhdGlvbiBpbiBtaW5kIGlzIHRydW5rIHN1cHBvcnQuICopXG4gICAgICBsZXQgYWxsX3ZlcnNpb25zX3RvcF9kb3duID0gTGlzdC5yZXYgYWxsX3ZlcnNpb25zIGluXG4gICAgICBsb29wIGFsbF92ZXJzaW9uc190b3BfZG93blxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgdXNlZCB0byBjb250cm9sIHdoYXQgd2UgdXNlIGZyb20gdGhlIGN1cnJlbnQgY29tcGlsZXIgYW5kIHdoYXQgaXMgZW1iZWQgaW5cbiAgIHRoaXMgbGlicmFyeS5cblxuICAgSXQgbXVzdCBiZSBvcGVuZWQgaW4gYWxsIG1vZHVsZXMsIGVzcGVjaWFsbHkgdGhlIG9uZXMgY29taW5nIGZyb20gdGhlIGNvbXBpbGVyLlxuKilcblxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG5tb2R1bGUgSnMgPSBWZXJzaW9ucy5PQ2FtbF81MDBcbm1vZHVsZSBPY2FtbCA9IFZlcnNpb25zLk9DYW1sX2N1cnJlbnRcblxubW9kdWxlIFNlbGVjdF9hc3QgKE9jYW1sIDogVmVyc2lvbnMuT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc1xuXG4gIG1vZHVsZSBUeXBlID0gc3RydWN0XG4gICAgdHlwZSAoJ2pzLCAnb2NhbWwpIHQgPVxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlc1xcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLiVzLFxcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLiVzIClcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgIHRcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFRvcGxldmVsX3BocmFzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDb3JlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXhwcmVzc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFBhdHRlcm5cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5wYXR0ZXJuLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnBhdHRlcm4gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDYXNlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2FzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBNb2R1bGVfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbigqJCopXG4gICAgICB8IExpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBsaXN0LCAnYiBsaXN0KSB0XG4gICAgICB8IFBhaXIgOiAoJ2EsICdiKSB0ICogKCdjLCAnZCkgdCAtPiAoJ2EgKiAnYywgJ2IgKiAnZCkgdFxuICBlbmRcblxuICBvcGVuIFR5cGVcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcbiAgbW9kdWxlIFRvX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoSnMpIChPY2FtbClcblxuICBsZXQgcmVjIG9mX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IG9jYW1sIC0+IGpzID1cbiAgICBsZXQgb3BlbiBPZl9vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwIChvZl9vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gb2Zfb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gb2Zfb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCByZWMgdG9fb2NhbWwgOiB0eXBlIG9jYW1sIGpzLiAoanMsIG9jYW1sKSBUeXBlLnQgLT4ganMgLT4gb2NhbWwgPVxuICAgIGxldCBvcGVuIFRvX29jYW1sIGluXG4gICAgZnVuIG5vZGUgLT5cbiAgICAgIG1hdGNoIG5vZGUgd2l0aFxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlcyAtPiBjb3B5XyVzXFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZSAtPiBjb3B5X3N0cnVjdHVyZVxuICAgICAgfCBTaWduYXR1cmUgLT4gY29weV9zaWduYXR1cmVcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlIC0+IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gICAgICB8IENvcmVfdHlwZSAtPiBjb3B5X2NvcmVfdHlwZVxuICAgICAgfCBFeHByZXNzaW9uIC0+IGNvcHlfZXhwcmVzc2lvblxuICAgICAgfCBQYXR0ZXJuIC0+IGNvcHlfcGF0dGVyblxuICAgICAgfCBDYXNlIC0+IGNvcHlfY2FzZVxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgfCBDbGFzc19leHByIC0+IGNvcHlfY2xhc3NfZXhwclxuICAgICAgfCBDbGFzc19maWVsZCAtPiBjb3B5X2NsYXNzX2ZpZWxkXG4gICAgICB8IENsYXNzX3R5cGUgLT4gY29weV9jbGFzc190eXBlXG4gICAgICB8IENsYXNzX3NpZ25hdHVyZSAtPiBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICAgICAgfCBNb2R1bGVfZXhwciAtPiBjb3B5X21vZHVsZV9leHByXG4gICAgICB8IE1vZHVsZV90eXBlIC0+IGNvcHlfbW9kdWxlX3R5cGVcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gY29weV9zaWduYXR1cmVfaXRlbVxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBjb3B5X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICAgICAgfCBMaXN0IHQgLT4gTGlzdC5tYXAgKHRvX29jYW1sIHQpXG4gICAgICB8IFBhaXIgKGEsIGIpIC0+XG4gICAgICAgICAgbGV0IGYgPSB0b19vY2FtbCBhIGluXG4gICAgICAgICAgbGV0IGcgPSB0b19vY2FtbCBiIGluXG4gICAgICAgICAgZnVuICh4LCB5KSAtPiAoZiB4LCBnIHkpXG5cbiAgbGV0IG9mX29jYW1sX21hcHBlciBpdGVtIGYgY3R4dCB4ID0gdG9fb2NhbWwgaXRlbSB4IHw+IGYgY3R4dCB8PiBvZl9vY2FtbCBpdGVtXG4gIGxldCB0b19vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IG9mX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gdG9fb2NhbWwgaXRlbVxuZW5kXG5cbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBTZWxlY3RfYXN0IChPY2FtbClcbm1vZHVsZSBBc3RfaGVscGVyID0gQXN0X2hlbHBlcl9saXRlXG5cbigqIE1vZHVsZXMgZnJvbSBBc3RfPG4+IG9mIEFzdGxpYiwgd2hlcmUgPG4+IGlzIHRoZSBjb21waWxlciB2ZXJzaW9uIHRoZSBwcHhsaWIgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGggKilcbm1vZHVsZSBQYXJzZXRyZWUgPSBTZWxlY3RlZF9hc3QuQXN0LlBhcnNldHJlZVxubW9kdWxlIEFzdHR5cGVzID0gU2VsZWN0ZWRfYXN0LkFzdC5Bc3R0eXBlc1xuXG4oKiBPdGhlciBBc3RsaWIgbW9kdWxlcyAqKVxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxuXG5tb2R1bGUgUGFyc2UgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RsaWIuUGFyc2VcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcblxuICBsZXQgaW1wbGVtZW50YXRpb24gbGV4YnVmID0gaW1wbGVtZW50YXRpb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfc3RydWN0dXJlXG4gIGxldCBpbnRlcmZhY2UgbGV4YnVmID0gaW50ZXJmYWNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3NpZ25hdHVyZVxuXG4gIGxldCB0b3BsZXZlbF9waHJhc2UgbGV4YnVmID1cbiAgICB0b3BsZXZlbF9waHJhc2UgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IHVzZV9maWxlIGxleGJ1ZiA9XG4gICAgdXNlX2ZpbGUgbGV4YnVmIHw+IExpc3QubWFwIE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IGNvcmVfdHlwZSBsZXhidWYgPSBjb3JlX3R5cGUgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfY29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uIGxleGJ1ZiA9IGV4cHJlc3Npb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfZXhwcmVzc2lvblxuICBsZXQgcGF0dGVybiBsZXhidWYgPSBwYXR0ZXJuIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3BhdHRlcm5cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBkZWZhdWx0X3ByaW50X3dhcm5pbmcgX2xvYyA9ICgpXG5sZXQgYWJvdXRfaXRlX2JyYW5jaF9yZWYgPSByZWYgZGVmYXVsdF9wcmludF93YXJuaW5nXG5sZXQgY2FyZV9hYm91dF9pdGVfYnJhbmNoID0gcmVmIGZhbHNlXG5sZXQgYWJvdXRfaXRlX2JyYW5jaCBsb2MgPSAhYWJvdXRfaXRlX2JyYW5jaF9yZWYgbG9jXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBEZWZpbml0aW9uIG9mIHRoZSBPQ2FtbCBBU1QgKilcblxub3BlbiBJbXBvcnRcblxuKCogVGhpcyBmaWxlIGlzIG9idGFpbmVkIGJ5OlxuXG4gICAtIGNvcHlpbmcgYSBzdWJzZXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXN0X3h4eC5tbCBmaWxlIGZyb20gQXN0bGliXG4gICAoc3ViLW1vZHVsZXMgQXN0dHlwZXMgYW5kIFBhcnNldHJlZSlcbiAgIC0gYWRkaW5nIHRoZSB0eXBlIGRlZmluaXRpb25zIGZvciBwb3NpdGlvbiwgbG9jYXRpb24sIGxvYyBhbmQgbG9uZ2lkZW50XG4gICAtIGZsYXR0ZW5pbmcgYWxsIHRoZSBtb2R1bGVzXG4gICAtIHJlbW92aW5nIEFzdHR5cGVzLmNvbnN0YW50ICh1bnVzZWQgYW5kIGNvbmZsaWN0cyB3aXRoIFBhcnNldHJlZS5jb25zdGFudClcbiAgIC0gcmVuYW1pbmcgYSBmZXcgdHlwZXM6XG4gICAtIC0gTG9jYXRpb24udCAtPiBsb2NhdGlvblxuICAgLSAtIExvbmdpZGVudC50IC0+IGxvbmdpZGVudFxuICAgLSBhZGRpbmcgYSB0eXBlIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jIGFuZCByZXBsYWNpbmcgYWxsIHRoZSBvY2N1cnJlbmNlcyBvZiB0aGVcbiAgIGxhdHRlciBieSB0aGUgZm9ybWVyLiBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuIG92ZXJyaWRlIGl0ZXJhdGlvbiBhbiB0aGUgbGV2ZWwgb2YgYVxuICAgbG9uZ2lkZW50IGxvY1xuICAgLSBhZGRpbmcgYSB0eXBlIGNhc2VzID0gY2FzZSBsaXN0XG4gICAtIHJlcGxhY2luZyBhbGwgb2NjdXJlbmNlcyBvZiBcImNhc2UgbGlzdFwiIGJ5IFwiY2FzZXNcIlxuICAgLSByZXBsYWNpbmcgYWxsIHRoZSAoKklGX0NVUlJFTlQgPSBGb28uYmFyKikgYnk6ID0gRm9vLmJhclxuICAgLSByZW1vdmluZyB0aGUgZXh0cmEgdmFsdWVzIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGVcbiAgIC0gcmVwbGFjaW5nIGFwcCBbdHlwZSAuLi5dIGJ5IFthbmQgLi4uXSB0byBtYWtlIGV2ZXJ5dGhpbmcgb25lIHJlY3Vyc2l2ZSBibG9ja1xuICAgLSBhZGRpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHRyYXZlcnNlXVtAQEBlbmRdIGF0IHRoZSBlbmRcblxuICAgVG8gdXBkYXRlIGl0IHRvIGEgbmV3ZXIgT0NhbWwgdmVyc2lvbiwgY3JlYXRlIGEgbmV3IG1vZHVsZSB3aXRoIHRoZSBhYm92ZSBmcm9tIHRoZVxuICAgbGF0ZXN0IGNvbXBpbGVyIGFuZCBhZGQgdGhlIGZvbGxvd2luZyBtb2R1bGUgZGVmaW5pdGlvbnMgYW5kIG9wZW5zIHRvIGdldCBpdCB0b1xuICAgY29tcGlsZTpcbiAgIFt7XG4gICAgbW9kdWxlIEFzdCA9IFZlcnNpb25zLk9DYW1sXzR4eFxuICAgIG9wZW4gQXN0LkFzdFxuICAgIG1vZHVsZSBMb2NhdGlvbiAgID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uXG4gICAgbW9kdWxlIExvbmdpZGVudCA9IE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcbiAgIH1dXG5cbiAgIE9uY2UgeW91IGhhdmUgZ2VuZXJhdGVkIHRoZSBpbmxpbmVkIGRlcml2ZWQgdHJhdmVyc2FsIGNsYXNzZXMgYnkgcnVubmluZ1xuICAgW3sgZHVuZSBidWlsZCBAbGludCB9XSB5b3UgY2FuIHJlcGxhY2UgdGhlIGFib3ZlIG1lbnRpb25lZCBtb2R1bGUgZGVmaW5pdGlvbnMgYnkgYVxuICAgW29wZW4gSW1wb3J0XSBhbmQgdXBkYXRlIFtJbXBvcnRdIHNvIHRoYXQgdGhlIFtKc10gbW9kdWxlIHBvaW50cyB0b1xuICAgW1ZlcnNpb25zLk9DYW1sXzR4eF0uXG4qKVxuXG4oKiBTb3VyY2UgY29kZSBsb2NhdGlvbnMgKHJhbmdlcyBvZiBwb3NpdGlvbnMpLCB1c2VkIGluIHBhcnNldHJlZS4gKilcblxudHlwZSBwb3NpdGlvbiA9IExleGluZy5wb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmFuZCBsb2NhdGlvbiA9IExvY2F0aW9uLnQgPSB7XG4gIGxvY19zdGFydCA6IHBvc2l0aW9uO1xuICBsb2NfZW5kIDogcG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmFuZCBsb2NhdGlvbl9zdGFjayA9IGxvY2F0aW9uIGxpc3RcblxuKCogTm90ZSBvbiB0aGUgdXNlIG9mIExleGluZy5wb3NpdGlvbiBpbiB0aGlzIG1vZHVsZS5cbiAgIElmIFtwb3NfZm5hbWUgPSBcIlwiXSwgdGhlbiB1c2UgWyFpbnB1dF9uYW1lXSBpbnN0ZWFkLlxuICAgSWYgW3Bvc19sbnVtID0gLTFdLCB0aGVuIFtwb3NfYm9sID0gMF0uIFVzZSBbcG9zX2NudW1dIGFuZFxuICAgcmUtcGFyc2UgdGhlIGZpbGUgdG8gZ2V0IHRoZSBsaW5lIGFuZCBjaGFyYWN0ZXIgbnVtYmVycy5cbiAgIEVsc2UgYWxsIGZpZWxkcyBhcmUgY29ycmVjdC5cbiopXG5hbmQgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0geyB0eHQgOiAnYTsgbG9jIDogbG9jYXRpb24gfVxuXG4oKiBMb25nIGlkZW50aWZpZXJzLCB1c2VkIGluIHBhcnNldHJlZS4gKilcbmFuZCBsb25naWRlbnQgPSBMb25naWRlbnQudCA9XG4gIHwgTGlkZW50IG9mIHN0cmluZ1xuICB8IExkb3Qgb2YgbG9uZ2lkZW50ICogc3RyaW5nXG4gIHwgTGFwcGx5IG9mIGxvbmdpZGVudCAqIGxvbmdpZGVudFxuXG5hbmQgbG9uZ2lkZW50X2xvYyA9IGxvbmdpZGVudCBsb2NcblxuKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuYW5kIHJlY19mbGFnID0gQXN0dHlwZXMucmVjX2ZsYWcgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuYW5kIGRpcmVjdGlvbl9mbGFnID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBVcHRvIHwgRG93bnRvXG5cbigqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuYW5kIHByaXZhdGVfZmxhZyA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IFByaXZhdGUgfCBQdWJsaWNcbmFuZCBtdXRhYmxlX2ZsYWcgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5hbmQgdmlydHVhbF9mbGFnID0gQXN0dHlwZXMudmlydHVhbF9mbGFnID0gVmlydHVhbCB8IENvbmNyZXRlXG5hbmQgb3ZlcnJpZGVfZmxhZyA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBPdmVycmlkZSB8IEZyZXNoXG5hbmQgY2xvc2VkX2ZsYWcgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyA9IENsb3NlZCB8IE9wZW5cbmFuZCBsYWJlbCA9IHN0cmluZ1xuXG5hbmQgYXJnX2xhYmVsID0gQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgfCBOb2xhYmVsXG4gIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICB8IE9wdGlvbmFsIG9mIHN0cmluZyAgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbmFuZCB2YXJpYW5jZSA9IEFzdHR5cGVzLnZhcmlhbmNlID0gQ292YXJpYW50IHwgQ29udHJhdmFyaWFudCB8IE5vVmFyaWFuY2VcbmFuZCBpbmplY3Rpdml0eSA9IEFzdHR5cGVzLmluamVjdGl2aXR5ID0gSW5qZWN0aXZlIHwgTm9JbmplY3Rpdml0eVxuXG4oKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG5hbmQgY29uc3RhbnQgPSBQYXJzZXRyZWUuY29uc3RhbnQgPVxuICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGV4Y2VwdFxuICAgICAgICAgIFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlciAqKVxuICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIGxvY2F0aW9uICogc3RyaW5nIG9wdGlvblxuICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy4gKilcbiAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGFyZSByZWplY3RlZFxuICAgICAgICAgIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbmFuZCBhdHRyaWJ1dGUgPSBQYXJzZXRyZWUuYXR0cmlidXRlID0ge1xuICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICBhdHRyX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW0BpZCBBUkddXSBhbmQgW1tAQGlkIEFSR11dLlxuXG4gICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULiBUaGUgY29tcGlsZXIgaWdub3Jlc1xuICAgIHVua25vd24gYXR0cmlidXRlcy4gKilcblxuYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4oKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgcGF5bG9hZCA9IFBhcnNldHJlZS5wYXlsb2FkID1cbiAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbPyBQXSBvciBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuYW5kIGNvcmVfdHlwZSA9IFBhcnNldHJlZS5jb3JlX3R5cGUgPSB7XG4gIHB0eXBfZGVzYyA6IGNvcmVfdHlwZV9kZXNjO1xuICBwdHlwX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlwX2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwdHlwX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvcmVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19LFxuICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZF19LFxuICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19LiAqKVxuICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXSByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlXG4gICAgICAgICAgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS4gKilcbiAgfCBQdHlwX2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLiAqKVxuICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19LFxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19LiAqKVxuICB8IFB0eXBfY2xhc3Mgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsjdGNvbnN0cl0gd2hlbiBbbD1bXV0sXG4gICAgICAgICAgLSBbVCAjdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbWyBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWz4gYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfSxcbiAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWzwgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uICopXG4gIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVxuICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZyB0byBhIGNvbnN0cmFpbnQgb24gYVxuICAgICAgICAgICAgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICB7W1xuICAgICAgICAgICAgbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXG4gICAgICAgICAgXX1cbiAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9XG4gICAgICAgICAgICBbUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX0gW1BleHBfcG9seV19XG4gICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9IFtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fSBbUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX0gW3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LiAqKVxuICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuYW5kIHBhY2thZ2VfdHlwZSA9IGxvbmdpZGVudF9sb2MgKiAobG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSkgbGlzdFxuKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG5cbiAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV0gcmVwcmVzZW50c1xuICAgICAgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uICopXG5cbmFuZCByb3dfZmllbGQgPSBQYXJzZXRyZWUucm93X2ZpZWxkID0ge1xuICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICBwcmZfbG9jIDogbG9jYXRpb247XG4gIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIHJvd19maWVsZF9kZXNjID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgIC0gW2BBIG9mIFRdIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYSBjb25zdGFudCAoZW1wdHkpXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvciAoc2VlXG4gICAgICAgICAgICA0LjIgaW4gdGhlIG1hbnVhbCkgKilcbiAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuYW5kIG9iamVjdF9maWVsZCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgPSB7XG4gIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gIHBvZl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbigqKiB7MiBQYXR0ZXJuc30gKilcblxuYW5kIHBhdHRlcm4gPSBQYXJzZXRyZWUucGF0dGVybiA9IHtcbiAgcHBhdF9kZXNjIDogcGF0dGVybl9kZXNjO1xuICBwcGF0X2xvYyA6IGxvY2F0aW9uO1xuICBwcGF0X2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwcGF0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHBhdHRlcm5fZGVzYyA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPVxuICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlciBidXQgcmVqZWN0ZWQgYnlcbiAgICAgICAgICB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBwYXRfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgUF0gd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXSAqKVxuICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdICopXG4gIHwgUHBhdF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19XG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19XG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgfCBQcGF0X3R5cGUgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICB8IFBwYXRfb3BlbiBvZiBsb25naWRlbnRfbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBleHByZXNzaW9uID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gPSB7XG4gIHBleHBfZGVzYyA6IGV4cHJlc3Npb25fZGVzYztcbiAgcGV4cF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcGV4cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBleHByZXNzaW9uX2Rlc2MgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgfCBQZXhwX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF0gKilcbiAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSxcbiAgICAgICAgICBbMW5dICopXG4gIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXMgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF1cblxuICAgICAgICAgIE5vdGVzOlxuXG4gICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5IHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn0gW1BleHBfZnVuXX0uXG4gICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1cbiAgICAgICAgICAgIFtQZXhwX2Z1bl19LiAqKVxuICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICBbbGldIGNhbiBiZSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSAobm9uIGxhYmVsZWRcbiAgICAgICAgICBhcmd1bWVudCksIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH0gW0xhYmVsbGVkXX0gKGxhYmVsbGVkXG4gICAgICAgICAgYXJndW1lbnRzKSBvciB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbF19IChvcHRpb25hbFxuICAgICAgICAgIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBleHBfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbQyBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV0gKilcbiAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0gKilcbiAgfCBQZXhwX3JlY29yZCBvZiAobG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICAoKiogW0UubF0gKilcbiAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdIHdoZW4gW2RpcmVjdGlvbl0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99IFtVcHRvXX1cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99IFtEb3dudG9dfSAqKVxuICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gWyhFIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLiAqKVxuICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICB8IFBleHBfbmV3IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbbmV3IE0uY10gKilcbiAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9IFtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgdmFsdWVzKS4gKilcbiAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG5hbmQgY2FzZSA9IFBhcnNldHJlZS5jYXNlID0ge1xuICBwY19saHMgOiBwYXR0ZXJuO1xuICBwY19ndWFyZCA6IGV4cHJlc3Npb24gb3B0aW9uO1xuICBwY19yaHMgOiBleHByZXNzaW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG5hbmQgbGV0b3AgPSBQYXJzZXRyZWUubGV0b3AgPSB7XG4gIGxldF8gOiBiaW5kaW5nX29wO1xuICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICBib2R5IDogZXhwcmVzc2lvbjtcbn1cblxuYW5kIGJpbmRpbmdfb3AgPSBQYXJzZXRyZWUuYmluZGluZ19vcCA9IHtcbiAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gIHBib3BfcGF0IDogcGF0dGVybjtcbiAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICBwYm9wX2xvYyA6IGxvY2F0aW9uO1xufVxuXG4oKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPSB7XG4gIHB2YWxfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHB2YWxfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcHZhbF9wcmltIDogc3RyaW5nIGxpc3Q7XG4gIHB2YWxfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB2YWxfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcblxuICAgIC0gW3ZhbCB4OiBUXSwgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19IFtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXSB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1cbiAgICAgIFtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXSAqKVxuXG4oKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHB0eXBlX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdHlwZV9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgcHR5cGVfY3N0cnMgOiAoY29yZV90eXBlICogY29yZV90eXBlICogbG9jYXRpb24pIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICBwdHlwZV9raW5kIDogdHlwZV9raW5kO1xuICBwdHlwZV9wcml2YXRlIDogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgcHR5cGVfbWFuaWZlc3QgOiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgcHR5cGVfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB0eXBlX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbiwgZm9yIHZhcmlvdXNcbiAgICB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9IFtwdHlwZV9raW5kXX0gYW5kXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH0gW3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuXG4gICAgLSBbdHlwZSB0XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDBdIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVxuICAgICAgW1B0eXBlX2Fic3RyYWN0XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9XG4gICAgICBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXNcbiAgICAgIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fSBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1cbiAgICAgIFtQdHlwZV9yZWNvcmRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfSBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSAuLl0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn0gW1B0eXBlX29wZW5dfSxcbiAgICAgIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXS4gKilcblxuYW5kIHR5cGVfa2luZCA9IFBhcnNldHJlZS50eXBlX2tpbmQgPVxuICB8IFB0eXBlX2Fic3RyYWN0XG4gIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gIHwgUHR5cGVfb3BlblxuXG5hbmQgbGFiZWxfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPSB7XG4gIHBsZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGxkX211dGFibGUgOiBtdXRhYmxlX2ZsYWc7XG4gIHBsZF90eXBlIDogY29yZV90eXBlO1xuICBwbGRfbG9jIDogbG9jYXRpb247XG4gIHBsZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW0BpZDFdIFtAaWQyXV0gKilcbn1cbigqKiAtIFt7IC4uLjsgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9IFtwbGRfbXV0YWJsZV19XG4gICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0sXG4gICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9XG4gICAgICBbcGxkX211dGFibGVdfSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX0gW011dGFibGVdfS5cblxuICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9IFtQdHlwX3BvbHldfS4gKilcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0ge1xuICBwY2RfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBjZF92YXJzIDogc3RyaW5nIGxvYyBsaXN0O1xuICBwY2RfYXJncyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgcGNkX3JlcyA6IGNvcmVfdHlwZSBvcHRpb247XG4gIHBjZF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY29uc3RydWN0b3JfYXJndW1lbnRzID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259IHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yXG4gICAgICAgICAgYXJndW1lbnRzIG9mOlxuXG4gICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDOiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDIG9mIHsuLi59XSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAgICAgICAtIFtDOiB7Li4ufSAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLiAqKVxuXG5hbmQgdHlwZV9leHRlbnNpb24gPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSB7XG4gIHB0eWV4dF9wYXRoIDogbG9uZ2lkZW50X2xvYztcbiAgcHR5ZXh0X3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHB0eWV4dF9jb25zdHJ1Y3RvcnMgOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgcHR5ZXh0X3ByaXZhdGUgOiBwcml2YXRlX2ZsYWc7XG4gIHB0eWV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbn1cbigqKiBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAoW3R5cGUgdCArPSAuLi5dKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSB7XG4gIHBleHRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICBwZXh0X2xvYyA6IGxvY2F0aW9uO1xuICBwZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgdHlwZV9leGNlcHRpb24gPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPSB7XG4gIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgcHR5ZXhuX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXSBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uXG4gICAgICAgICAgY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcblxuICAgICAgICAgIHt1bFxuICAgICAgICAgICB7LSBbQyBvZiBUMSAqIC4uLiAqIFRuXVxuICAgICAgICAgICAgICB3aGVuOlxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbTm9uZV0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgIH0gKilcbiAgfCBQZXh0X3JlYmluZCBvZiBsb25naWRlbnRfbG9jXG4gICAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX3R5cGUgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSA9IHtcbiAgcGN0eV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjO1xuICBwY3R5X2xvYyA6IGxvY2F0aW9uO1xuICBwY3R5X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICB8IFBjdHlfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbVCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgLSBbP2w6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19LiAqKVxuICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0ge1xuICBwY3NpZ19zZWxmIDogY29yZV90eXBlO1xuICBwY3NpZ19maWVsZHMgOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcblxuICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn0gW3Bjc2lnX3NlbGZdfSBpc1xuICAgICAge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9IFtQdHlwX2FueV19ICopXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPSB7XG4gIHBjdGZfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgcGN0Zl9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0Zl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG4gIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgJ2EgY2xhc3NfaW5mb3MgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgPSB7XG4gIHBjaV92aXJ0IDogdmlydHVhbF9mbGFnO1xuICBwY2lfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgcGNpX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2lfZXhwciA6ICdhO1xuICBwY2lfbG9jIDogbG9jYXRpb247XG4gIHBjaV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcblxuICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uICopXG5cbmFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX2V4cHIgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciA9IHtcbiAgcGNsX2Rlc2MgOiBjbGFzc19leHByX2Rlc2M7XG4gIHBjbF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICB8IFBjbF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmdW4gUCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1cbiAgICAgICAgICAgIFtOb2xhYmVsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXNcbiAgICAgICAgICAgIFtTb21lIEUwXS4gKilcbiAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLiBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yXG4gICAgICAgICAgc3RhcnQgd2l0aCBbP10gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG5hbmQgY2xhc3Nfc3RydWN0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9IHtcbiAgcGNzdHJfc2VsZiA6IHBhdHRlcm47XG4gIHBjc3RyX2ZpZWxkcyA6IGNsYXNzX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn0gW3Bjc3RyX3NlbGZdfSBpc1xuICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fSBbUHBhdF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfZmllbGQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgPSB7XG4gIHBjZl9kZXNjIDogY2xhc3NfZmllbGRfZGVzYztcbiAgcGNmX2xvYyA6IGxvY2F0aW9uO1xuICBwY2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19maWVsZF9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbaW5oZXJpdCBDRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9XG4gICAgICAgICAgICBbT3ZlcnJpZGVdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbU29tZSB4XSAqKVxuICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3ZhbCB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1cbiAgICAgICAgICAgIFtJbW11dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9XG4gICAgICAgICAgICBbTXV0YWJsZV19IGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9XG4gICAgICAgICAgICBbQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX0gKilcbiAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV0gKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVxuICAgICAgICAgICAgW1BleHBfcG9seV19KVxuICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVxuICAgICAgICAgICAgW1B0eXBfcG9seV19KSAqKVxuICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgY2xhc3NfZmllbGRfa2luZCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4oKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbmFuZCBtb2R1bGVfdHlwZSA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSA9IHtcbiAgcG10eV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYztcbiAgcG10eV9sb2MgOiBsb2NhdGlvbjtcbiAgcG10eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBtb2R1bGVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICB8IFBtdHlfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUG10eV9hbGlhcyBvZiBsb25naWRlbnRfbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbmFuZCBmdW5jdG9yX3BhcmFtZXRlciA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbmFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbmFuZCBzaWduYXR1cmVfaXRlbSA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9IHtcbiAgcHNpZ19kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgcHNpZ19sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gKilcbiAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gKilcbiAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICopXG4gIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgbW9kdWxlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG1kX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1kX3R5cGUgOiBtb2R1bGVfdHlwZTtcbiAgcG1kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbWRfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG5hbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID0ge1xuICBwbXNfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtc19tYW5pZmVzdCA6IGxvbmdpZGVudF9sb2M7XG4gIHBtc19hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1zX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbmFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG10ZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcG10ZF90eXBlIDogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICBwbXRkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbXRkX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW1MgPSBNVF0sXG4gICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCB3aGVuXG4gICAgICB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9IFtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uICopXG5cbmFuZCAnYSBvcGVuX2luZm9zID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgPSB7XG4gIHBvcGVuX2V4cHIgOiAnYTtcbiAgcG9wZW5fb3ZlcnJpZGUgOiBvdmVycmlkZV9mbGFnO1xuICBwb3Blbl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9wZW5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfSBbT3ZlcnJpZGVdfSAoc2lsZW5jZXMgdGhlIFwidXNlZFxuICAgICAgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX0gW3BvcGVuX292ZXJyaWRlXX0gaXNcbiAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9IFtGcmVzaF19ICopXG5cbmFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gbG9uZ2lkZW50X2xvYyBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT10gKilcblxuYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT11cbiAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG5hbmQgJ2EgaW5jbHVkZV9pbmZvcyA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zID0ge1xuICBwaW5jbF9tb2QgOiAnYTtcbiAgcGluY2xfbG9jIDogbG9jYXRpb247XG4gIHBpbmNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgfCBQd2l0aF90eXBlIG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIHRoZVxuICAgICAgICAgIHR5cGVfZGVjbGFyYXRpb24uICopXG4gIHwgUHdpdGhfbW9kdWxlIG9mIGxvbmdpZGVudF9sb2MgKiBsb25naWRlbnRfbG9jICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gIHwgUHdpdGhfbW9kdHlwZSBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgfCBQd2l0aF9tb2RzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX2V4cHIgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgPSB7XG4gIHBtb2RfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2M7XG4gIHBtb2RfbG9jIDogbG9jYXRpb247XG4gIHBtb2RfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgfCBQbW9kX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbWF0gKilcbiAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbmFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9IHtcbiAgcHN0cl9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgcHN0cl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgdmFsdWVfYmluZGluZyA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID0ge1xuICBwdmJfcGF0IDogcGF0dGVybjtcbiAgcHZiX2V4cHIgOiBleHByZXNzaW9uO1xuICBwdmJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHB2Yl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIG1vZHVsZV9iaW5kaW5nID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID0ge1xuICBwbWJfbmFtZSA6IHN0cmluZyBvcHRpb24gbG9jO1xuICBwbWJfZXhwciA6IG1vZHVsZV9leHByO1xuICBwbWJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHBtYl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbigqKiB7MSBUb3BsZXZlbH0gKilcbigqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG5hbmQgdG9wbGV2ZWxfcGhyYXNlID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG5hbmQgdG9wbGV2ZWxfZGlyZWN0aXZlID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSA9IHtcbiAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICBwZGlyX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50ID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9IHtcbiAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICBwZGlyYV9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICB8IFBkaXJfaWRlbnQgb2YgbG9uZ2lkZW50XG4gIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuYW5kIGNhc2VzID0gY2FzZSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1cblxuY2xhc3MgdmlydHVhbCBtYXAgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gYm9vbFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gc3RyaW5nXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gbG9jYXRpb24gPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBMYXBwbHkgKGEsIGIpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gbGFiZWwgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBOb2xhYmVsXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IGNvbnN0YW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfaW50ZWdlciAoYSwgYilcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9mbG9hdCAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBpblxuICAgICAgICB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQU3RyIGFcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQdHlwX3ZhciBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgUHR5cF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudCAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUnRhZyAoYSwgYiwgYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBPdGFnIChhLCBiKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHBhdHRlcm4gPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHBhdF92YXIgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUHBhdF9jb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X3R1cGxlIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQcGF0X3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vciAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUHBhdF90eXBlIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUGV4cF9jb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX21hdGNoIChhLCBiKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfdHVwbGUgYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9hcnJheSBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9sYXp5IGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBleHBfb2JqZWN0IGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIFBleHBfcGFjayBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IGNhc2UgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IGxldG9wID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiBiaW5kaW5nX29wID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBQdHlwZV9hYnN0cmFjdFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUGNzdHJfcmVjb3JkIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXh0X2RlY2wgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGN0eV9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIFBjbF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9tZXRob2QgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGNmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBpblxuICAgICAgICAgICAgUG10eV93aXRoIChhLCBiKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2FsaWFzIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gVW5pdFxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGV4dCBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kc3Vic3QgYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzcyBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhIGluY2x1ZGVfaW5mb3MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R1bGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG1vZF9pZGVudCBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBQbW9kX2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdmFsdWUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfb3BlbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9pbmNsdWRlIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kZWYgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBkaXJfaW50IChhLCBiKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBpdGVyID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBsaXN0IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wdGlvbiAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHVuaXRcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBzZWxmI3N0cmluZyBwb3NfZm5hbWU7XG4gICAgICAgIHNlbGYjaW50IHBvc19sbnVtO1xuICAgICAgICBzZWxmI2ludCBwb3NfYm9sO1xuICAgICAgICBzZWxmI2ludCBwb3NfY251bVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgICAgIHNlbGYjYm9vbCBsb2NfZ2hvc3RcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbG9jIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBfYSB0eHQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gbG9jXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBiXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gdW5pdCA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IHVuaXQgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKClcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+IHNlbGYjc3RyaW5nIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGNcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWU7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gYXR0cl9sb2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBUeXAgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKClcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGNcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgIGJcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHByZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNib29sIGI7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFJpbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG9mX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGE7XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGJcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBleHBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBkXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2FzZXMgYlxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjO1xuICAgICAgICAgICAgc2VsZiNkaXJlY3Rpb25fZmxhZyBkO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGVcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYlxuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+ICgpXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNfbGhzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwY19yaHNcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHNlbGYjYmluZGluZ19vcCBsZXRfO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHM7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBib2R5XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcDtcbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBib3BfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGJvcF9sb2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNsb2NhdGlvbiBjKVxuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+ICgpXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWU7XG4gICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbGRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnM7XG4gICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGg7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lO1xuICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXh0X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGJcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBjbGFzc19pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwY2lfcGFyYW1zO1xuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZTtcbiAgICAgICAgX2EgcGNpX2V4cHI7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNpX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBkXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGJcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2ZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXR5X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGJcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+ICgpXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT4gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZTtcbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtZF9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWU7XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXNfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXRkX2xvY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wZW5faW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcG9wZW5fZXhwcjtcbiAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcGluY2xfbW9kO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGJcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHN0cl9sb2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPiBzZWxmI29wZW5fZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2Yl9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWJfbG9jXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGxvY19naG9zdCBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBsb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBhY2NcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGEgYWNjXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IGFjY1xuICAgICAgICB8IFB0eXBfdmFyIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT4gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IGFjY1xuICAgICAgICB8IFBwYXRfdmFyIGEgLT4gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPiBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPiBzZWxmI2Nhc2VzIGEgYWNjXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPiBzZWxmI21vZHVsZV9leHByIGEgYWNjXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+IHNlbGYjbGV0b3AgYSBhY2NcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBhY2NcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IGFjY1xuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBhY2NcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGEgYWNjXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBfYSBwY2lfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwb3Blbl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwaW5jbF9tb2QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjY1xuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYSBhY2NcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPiBzZWxmI2Jvb2wgYSBhY2NcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydhY2NdIGZvbGRfbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gYm9vbCAqICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+IGNoYXIgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdhY2MgLT4gaW50ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdFxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYSBsaXN0ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2Egb3B0aW9uICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gc3RyaW5nICogJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiBwb3NpdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSwgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2xudW0sIGFjYyA9IHNlbGYjaW50IHBvc19sbnVtIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2JvbCwgYWNjID0gc2VsZiNpbnQgcG9zX2JvbCBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgKHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiBsb2NhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZW5kLCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QsIGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgICh7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdhY2MgLT4gbG9jYXRpb25fc3RhY2sgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2EgbG9jICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgdHh0LCBhY2MgPSBfYSB0eHQgYWNjIGluXG4gICAgICAgIGxldCBsb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICAoeyB0eHQ7IGxvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdhY2MgLT4gbG9uZ2lkZW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKExpZGVudCBhLCBhY2MpXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoTGRvdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgKExhcHBseSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAnYWNjIC0+IGxvbmdpZGVudF9sb2MgKiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+IHJlY19mbGFnICogJ2FjYyA9IGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiBkaXJlY3Rpb25fZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gcHJpdmF0ZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiBtdXRhYmxlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAnYWNjIC0+IHZpcnR1YWxfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiBvdmVycmlkZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gY2xvc2VkX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ2FjYyAtPiBsYWJlbCAqICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+IGFyZ19sYWJlbCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIGFjYylcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMYWJlbGxlZCBhLCBhY2MpXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoT3B0aW9uYWwgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiB2YXJpYW5jZSAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gaW5qZWN0aXZpdHkgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ2FjYyAtPiBjb25zdGFudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2ludGVnZXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2hhciBhIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9jaGFyIGEsIGFjYylcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2NhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X3N0cmluZyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfZmxvYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gYXR0cmlidXRlICogJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkLCBhY2MgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgICh7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdhY2MgLT4gZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF5bG9hZCBiIGFjYyBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiBhdHRyaWJ1dGVzICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAnYWNjIC0+IHBheWxvYWQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTdHIgYSwgYWNjKVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFNpZyBhLCBhY2MpXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQVHlwIGEsIGFjYylcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBQYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gY29yZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MsIGFjYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXIgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NsYXNzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYWxpYXMgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXJpYW50IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3BhY2thZ2UgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ2FjYyAtPiBwYWNrYWdlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgICgoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiByb3dfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MsIGFjYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiByb3dfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFJ0YWcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUmluaGVyaXQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+IG9iamVjdF9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYywgYWNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAnYWNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChPdGFnIChhLCBiKSwgYWNjKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKE9pbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+IHBhdHRlcm4gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYywgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdhY2MgLT4gcGF0dGVybl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF92YXIgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9pbnRlcnZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FycmF5IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90eXBlIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAnYWNjIC0+IGV4cHJlc3Npb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYywgYWNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RhbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjYXNlcyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuY3Rpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbWF0Y2ggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdHJ5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9yZWNvcmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZpZWxkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRmaWVsZCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VxdWVuY2UgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3doaWxlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBlLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSksIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29lcmNlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZW5kIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ldyBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NldGluc3R2YXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX292ZXJyaWRlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXNzZXJ0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb2JqZWN0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ld3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGV0b3AgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG9wIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoUGV4cF91bnJlYWNoYWJsZSwgYWNjKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdhY2MgLT4gY2FzZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY19saHMsIGFjYyA9IHNlbGYjcGF0dGVybiBwY19saHMgYWNjIGluXG4gICAgICAgIGxldCBwY19ndWFyZCwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgcGNfcmhzLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGFjYyBpblxuICAgICAgICAoeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiBsZXRvcCAqICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgbGV0XywgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhbmRzLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBib2R5LCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgKHsgbGV0XzsgYW5kczsgYm9keSB9LCBhY2MpXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiBiaW5kaW5nX29wICogJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwYm9wX29wLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IHZhbHVlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9wcmltLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQsIGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QsIGFjYyA9XG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+IHR5cGVfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChQdHlwZV9hYnN0cmFjdCwgYWNjKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cGVfdmFyaWFudCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3JlY29yZCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoUHR5cGVfb3BlbiwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBsYWJlbF9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2RfdmFycywgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBwY2RfYXJncywgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgYWNjIGluXG4gICAgICAgIGxldCBwY2RfcmVzLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjc3RyX3JlY29yZCBhLCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAnYWNjIC0+IHR5cGVfZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gdHlwZV9leGNlcHRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciwgYWNjID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfZGVjbCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4dF9yZWJpbmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gY2xhc3NfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2Fycm93IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGFjYyBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjY1xuICAgICAgICBpblxuICAgICAgICAoeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc190eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9pbmhlcml0IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICBhY2MgLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0LCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2lfZXhwciwgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwY2lfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiBjbGFzc19leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNsX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBkIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjbF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19leHByIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2xldCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3N0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGFjYyBpblxuICAgICAgICAoeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiBjbGFzc19maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2luaGVyaXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9tZXRob2QgYSwgYWNjKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbml0aWFsaXplciBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gY2xhc3NfZmllbGRfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKENma192aXJ0dWFsIGEsIGFjYylcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoQ2ZrX2NvbmNyZXRlIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzY1xuICAgICAgICA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9zaWduYXR1cmUgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfZnVuY3RvciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfd2l0aCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfdHlwZW9mIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9hbGlhcyBhLCBhY2MpXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgYWNjKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoTmFtZWQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdhY2MgLT4gc2lnbmF0dXJlICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiBzaWduYXR1cmVfaXRlbSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjLCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgYWNjIGluXG4gICAgICAgICh7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3ZhbHVlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZXN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2luY2x1ZGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1kX3R5cGUsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1zX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciwgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCwgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgcGluY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiB3aXRoX2NvbnN0cmFpbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHVsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlc3Vic3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kc3Vic3QgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+IG1vZHVsZV9leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2Rfc3RydWN0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAnYWNjIC0+IHN0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gc3RydWN0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYywgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9ldmFsIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3ZhbHVlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9wcmltaXRpdmUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZXh0IGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzX3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAnYWNjIC0+IHZhbHVlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZiX3BhdCwgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwdmJfZXhwciwgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gbW9kdWxlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2V4cHIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiB0b3BsZXZlbF9waHJhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdG9wX2RlZiBhLCBhY2MpXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kaXIgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9hcmcsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ2FjYyAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYywgYWNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX3N0cmluZyBhLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2ludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNib29sIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9ib29sIGEsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gY2FzZXMgKiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogJ2N0eCAtPiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogJ2N0eCAtPiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9XG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiAnY3R4IC0+IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6ICdjdHggLT4gbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyA9XG4gICAgICBmdW4gX2EgY3R4IHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgY3R4IHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggbG9jIGluXG4gICAgICAgIHsgdHh0OyBsb2MgfVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6ICdjdHggLT4gbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIExkb3QgKGEsIGIpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBjdHggYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogJ2N0eCAtPiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbGFiZWwgOiAnY3R4IC0+IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExhYmVsbGVkIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjb25zdF9jaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGN0eCBjIGluXG4gICAgICAgICAgICBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogJ2N0eCAtPiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6ICdjdHggLT4gZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQU2lnIGFcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBQYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgY3R4IHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdHVwbGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogJ2N0eCAtPiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUmluaGVyaXQgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBPaW5oZXJpdCBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biBjdHggeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIGN0eCBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfYXJyYXkgYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2xhenkgYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9mdW5jdGlvbiBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfd2hpbGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VuZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2V0aW5zdHZhciAoYSwgYilcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBQZXhwX3VucmVhY2hhYmxlXG5cbiAgICBtZXRob2QgY2FzZSA6ICdjdHggLT4gY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfVxuXG4gICAgbWV0aG9kIGxldG9wIDogJ2N0eCAtPiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICB7IGxldF87IGFuZHM7IGJvZHkgfVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiAnY3R4IC0+IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiAnY3R4IC0+IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIGN0eCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6ICdjdHggLT4gdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3ZhcmlhbnQgYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXh0X3JlYmluZCBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biBjdHggeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgY3R4IHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjdHlfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGN0eV9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4gY3R4IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBjdHggcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBjdHggcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfaW5oZXJpdCBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX3ZhbCBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX21ldGhvZCBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBjdHggcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjbF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGN0eCBjIGluXG4gICAgICAgICAgICBQY2xfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9leHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIGN0eCBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBjdHggcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBjdHggcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl92YWwgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6ICdjdHggLT4gY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBDZmtfY29uY3JldGUgKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiAnY3R4IC0+IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfaWRlbnQgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG10eV9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfdHlwZW9mIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiAnY3R4IC0+IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHNpZ190eXBlIChhLCBiKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX29wZW4gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zXG4gICAgICAgID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2Rfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4gY3R4IHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgY3R4IHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V2YWwgKGEsIGIpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9wcmltaXRpdmUgYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3R5cGV4dCBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzcyBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RpciBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfaWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3B0aW9uIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIHBvc19mbmFtZSk7XG4gICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBwb3NfbG51bSk7XG4gICAgICAgICAgICAoXCJwb3NfYm9sXCIsIHBvc19ib2wpO1xuICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgcG9zX2NudW0pO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJsb2Nfc3RhcnRcIiwgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgIChcImxvY19lbmRcIiwgbG9jX2VuZCk7XG4gICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgbG9jX2dob3N0KTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxvYyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJ0eHRcIiwgdHh0KTsgKFwibG9jXCIsIGxvYykgXVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGlkZW50XCIgWyBhIF1cbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGRvdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGFwcGx5XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAncmVzID0gc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiTm9ucmVjdXJzaXZlXCIgW11cbiAgICAgICAgfCBSZWN1cnNpdmUgLT4gc2VsZiNjb25zdHIgXCJSZWN1cnNpdmVcIiBbXVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVcHRvIC0+IHNlbGYjY29uc3RyIFwiVXB0b1wiIFtdXG4gICAgICAgIHwgRG93bnRvIC0+IHNlbGYjY29uc3RyIFwiRG93bnRvXCIgW11cblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcml2YXRlIC0+IHNlbGYjY29uc3RyIFwiUHJpdmF0ZVwiIFtdXG4gICAgICAgIHwgUHVibGljIC0+IHNlbGYjY29uc3RyIFwiUHVibGljXCIgW11cblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbW11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJJbW11dGFibGVcIiBbXVxuICAgICAgICB8IE11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJNdXRhYmxlXCIgW11cblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBWaXJ0dWFsIC0+IHNlbGYjY29uc3RyIFwiVmlydHVhbFwiIFtdXG4gICAgICAgIHwgQ29uY3JldGUgLT4gc2VsZiNjb25zdHIgXCJDb25jcmV0ZVwiIFtdXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdmVycmlkZSAtPiBzZWxmI2NvbnN0ciBcIk92ZXJyaWRlXCIgW11cbiAgICAgICAgfCBGcmVzaCAtPiBzZWxmI2NvbnN0ciBcIkZyZXNoXCIgW11cblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+IHNlbGYjY29uc3RyIFwiQ2xvc2VkXCIgW11cbiAgICAgICAgfCBPcGVuIC0+IHNlbGYjY29uc3RyIFwiT3BlblwiIFtdXG5cbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IHNlbGYjY29uc3RyIFwiTm9sYWJlbFwiIFtdXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhYmVsbGVkXCIgWyBhIF1cbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3B0aW9uYWxcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDb3ZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb3ZhcmlhbnRcIiBbXVxuICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb250cmF2YXJpYW50XCIgW11cbiAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IHNlbGYjY29uc3RyIFwiTm9WYXJpYW5jZVwiIFtdXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IEluamVjdGl2ZSAtPiBzZWxmI2NvbnN0ciBcIkluamVjdGl2ZVwiIFtdXG4gICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiBzZWxmI2NvbnN0ciBcIk5vSW5qZWN0aXZpdHlcIiBbXVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfaW50ZWdlclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfY2hhclwiIFsgYSBdXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3Rfc3RyaW5nXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2Zsb2F0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJhdHRyX25hbWVcIiwgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBhdHRyX3BheWxvYWQpO1xuICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgYXR0cl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU3RyXCIgWyBhIF1cbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU2lnXCIgWyBhIF1cbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQVHlwXCIgWyBhIF1cbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQUGF0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBfZGVzY1wiLCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgcHR5cF9sb2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHR5cF9hdHRyaWJ1dGVzXCIsIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBzZWxmI2NvbnN0ciBcIlB0eXBfYW55XCIgW11cbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9vYmplY3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY2xhc3NcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJpYW50XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3BvbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wYWNrYWdlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwcmZfbG9jXCIsIHByZl9sb2MpO1xuICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgcHJmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlJ0YWdcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBwb2ZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIHBvZl9sb2MpO1xuICAgICAgICAgICAgKFwicG9mX2F0dHJpYnV0ZXNcIiwgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3RhZ1wiIFsgYTsgYiBdXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9pbmhlcml0XCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBwcGF0X2Rlc2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgcHBhdF9sb2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2Nfc3RhY2tcIiwgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIHBwYXRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IHNlbGYjY29uc3RyIFwiUHBhdF9hbnlcIiBbXVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhclwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9pbnRlcnZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RydWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhcmlhbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2xhenlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdW5wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBwZXhwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgcGV4cF9sb2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIHBleHBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuY3Rpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX21hdGNoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHJ5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZmllbGRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0ZmllbGRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lmdGhlbmVsc2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VxdWVuY2VcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfd2hpbGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mb3JcIiBbIGE7IGI7IGM7IGQ7IGUgXVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb2VyY2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VuZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld1wiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXRpbnN0dmFyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3ZlcnJpZGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0bW9kdWxlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Fzc2VydFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vYmplY3RcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3BhY2tcIiBbIGEgXVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vcGVuXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0b3BcIiBbIGEgXVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBzZWxmI2NvbnN0ciBcIlBleHBfdW5yZWFjaGFibGVcIiBbXVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY19saHNcIiwgcGNfbGhzKTsgKFwicGNfZ3VhcmRcIiwgcGNfZ3VhcmQpOyAoXCJwY19yaHNcIiwgcGNfcmhzKSBdXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJsZXRfXCIsIGxldF8pOyAoXCJhbmRzXCIsIGFuZHMpOyAoXCJib2R5XCIsIGJvZHkpIF1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGJvcF9vcFwiLCBwYm9wX29wKTtcbiAgICAgICAgICAgIChcInBib3BfcGF0XCIsIHBib3BfcGF0KTtcbiAgICAgICAgICAgIChcInBib3BfZXhwXCIsIHBib3BfZXhwKTtcbiAgICAgICAgICAgIChcInBib3BfbG9jXCIsIHBib3BfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBwdmFsX25hbWUpO1xuICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAoXCJwdmFsX3ByaW1cIiwgcHZhbF9wcmltKTtcbiAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBwdmFsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgcHZhbF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gYyBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgcHR5cGVfbmFtZSk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInB0eXBlX2NzdHJzXCIsIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgcHR5cGVfa2luZCk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5cGVfbWFuaWZlc3RcIiwgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBwdHlwZV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBwdHlwZV9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX2Fic3RyYWN0XCIgW11cbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV92YXJpYW50XCIgWyBhIF1cbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBlX3JlY29yZFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX29wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBsZF9uYW1lXCIsIHBsZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIHBsZF9tdXRhYmxlKTtcbiAgICAgICAgICAgIChcInBsZF90eXBlXCIsIHBsZF90eXBlKTtcbiAgICAgICAgICAgIChcInBsZF9sb2NcIiwgcGxkX2xvYyk7XG4gICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBwbGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2RfbmFtZVwiLCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBwY2RfdmFycyk7XG4gICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBwY2RfYXJncyk7XG4gICAgICAgICAgICAoXCJwY2RfcmVzXCIsIHBjZF9yZXMpO1xuICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBwY2RfbG9jKTtcbiAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl9yZWNvcmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIHB0eWV4dF9wYXRoKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfY29uc3RydWN0b3JzXCIsIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgcHR5ZXh0X3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9hdHRyaWJ1dGVzXCIsIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZXh0X2tpbmRcIiwgcGV4dF9raW5kKTtcbiAgICAgICAgICAgIChcInBleHRfbG9jXCIsIHBleHRfbG9jKTtcbiAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgIChcInB0eWV4bl9sb2NcIiwgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBwdHlleG5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHRfZGVjbFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X3JlYmluZFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdHlfbG9jXCIsIHBjdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBwY3R5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc2lnX3NlbGZcIiwgcGNzaWdfc2VsZik7IChcInBjc2lnX2ZpZWxkc1wiLCBwY3NpZ19maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9sb2NcIiwgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIHBjdGZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfaW5oZXJpdFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX3ZhbFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfY29uc3RyYWludFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIHBjaV92aXJ0KTtcbiAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwY2lfbmFtZVwiLCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBwY2lfZXhwcik7XG4gICAgICAgICAgICAoXCJwY2lfbG9jXCIsIHBjaV9sb2MpO1xuICAgICAgICAgICAgKFwicGNpX2F0dHJpYnV0ZXNcIiwgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBwY2xfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY2xfbG9jXCIsIHBjbF9sb2MpO1xuICAgICAgICAgICAgKFwicGNsX2F0dHJpYnV0ZXNcIiwgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9mdW5cIiBbIGE7IGI7IGM7IGQgXVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNzdHJfc2VsZlwiLCBwY3N0cl9zZWxmKTsgKFwicGNzdHJfZmllbGRzXCIsIHBjc3RyX2ZpZWxkcykgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgcGNmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBwY2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBjZl9hdHRyaWJ1dGVzXCIsIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbmhlcml0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbml0aWFsaXplclwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX3ZpcnR1YWxcIiBbIGEgXVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX2NvbmNyZXRlXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdHlfZGVzY1wiLCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgcG10eV9sb2MpO1xuICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZnVuY3RvclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV93aXRoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3R5cGVvZlwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9hbGlhc1wiIFsgYSBdXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gc2VsZiNjb25zdHIgXCJVbml0XCIgW11cbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJOYW1lZFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzaWdfZGVzY1wiLCBwc2lnX2Rlc2MpOyAoXCJwc2lnX2xvY1wiLCBwc2lnX2xvYykgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3ZhbHVlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgcG1kX25hbWUpO1xuICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgcG1kX3R5cGUpO1xuICAgICAgICAgICAgKFwicG1kX2F0dHJpYnV0ZXNcIiwgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBwbWRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtc19uYW1lXCIsIHBtc19uYW1lKTtcbiAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicG1zX2F0dHJpYnV0ZXNcIiwgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBwbXNfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgKFwicG10ZF90eXBlXCIsIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgcG10ZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIHBtdGRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9wZW5fZXhwclwiLCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIHBvcGVuX292ZXJyaWRlKTtcbiAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgKFwicG9wZW5fYXR0cmlidXRlc1wiLCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgcGluY2xfbW9kKTtcbiAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgKFwicGluY2xfYXR0cmlidXRlc1wiLCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHVsZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVzdWJzdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2RzdWJzdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgIChcInBtb2RfbG9jXCIsIHBtb2RfbG9jKTtcbiAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBwbW9kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9zdHJ1Y3R1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicHN0cl9kZXNjXCIsIHBzdHJfZGVzYyk7IChcInBzdHJfbG9jXCIsIHBzdHJfbG9jKSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ZhbHVlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ByaW1pdGl2ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl90eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX29wZW5cIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfaW5jbHVkZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4dGVuc2lvblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHB2Yl9wYXQpO1xuICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgcHZiX2V4cHIpO1xuICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBwdmJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1iX25hbWVcIiwgcG1iX25hbWUpO1xuICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgcG1iX2V4cHIpO1xuICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1iX2xvY1wiLCBwbWJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGVmXCIgWyBhIF1cbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHRvcF9kaXJcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGRpcl9uYW1lXCIsIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBwZGlyX2FyZyk7XG4gICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBwZGlyX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBkaXJhX2Rlc2NcIiwgcGRpcmFfZGVzYyk7IChcInBkaXJhX2xvY1wiLCBwZGlyYV9sb2MpIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfc3RyaW5nXCIgWyBhIF1cbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2ludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9ib29sXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2wgKiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICdjdHggLT4gaW50IC0+IGludCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZyAqICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBjdHggcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IGN0eCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IGN0eCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IGN0eCBwb3NfY251bSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvc19mbmFtZSA9IFN0ZGxpYi5mc3QgcG9zX2ZuYW1lO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBTdGRsaWIuZnN0IHBvc19sbnVtO1xuICAgICAgICAgICAgcG9zX2JvbCA9IFN0ZGxpYi5mc3QgcG9zX2JvbDtcbiAgICAgICAgICAgIHBvc19jbnVtID0gU3RkbGliLmZzdCBwb3NfY251bTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3NfZm5hbWVcIiwgU3RkbGliLnNuZCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBTdGRsaWIuc25kIHBvc19sbnVtKTtcbiAgICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBTdGRsaWIuc25kIHBvc19ib2wpO1xuICAgICAgICAgICAgICAoXCJwb3NfY251bVwiLCBTdGRsaWIuc25kIHBvc19jbnVtKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBjdHggbG9jX2dob3N0IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbG9jX3N0YXJ0ID0gU3RkbGliLmZzdCBsb2Nfc3RhcnQ7XG4gICAgICAgICAgICBsb2NfZW5kID0gU3RkbGliLmZzdCBsb2NfZW5kO1xuICAgICAgICAgICAgbG9jX2dob3N0ID0gU3RkbGliLmZzdCBsb2NfZ2hvc3Q7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIFN0ZGxpYi5zbmQgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgICAgKFwibG9jX2VuZFwiLCBTdGRsaWIuc25kIGxvY19lbmQpO1xuICAgICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgU3RkbGliLnNuZCBsb2NfZ2hvc3QpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICAoIHsgdHh0ID0gU3RkbGliLmZzdCB0eHQ7IGxvYyA9IFN0ZGxpYi5mc3QgbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4IFsgKFwidHh0XCIsIFN0ZGxpYi5zbmQgdHh0KTsgKFwibG9jXCIsIFN0ZGxpYi5zbmQgbG9jKSBdXG4gICAgICAgIClcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKExpZGVudCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiTGlkZW50XCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBMZG90IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxkb3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGFwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxhcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6ICdjdHggLT4gbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jICogJ3JlcyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6ICdjdHggLT4gcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogJ2N0eCAtPiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCAqICdyZXMgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6ICdjdHggLT4gYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIHNlbGYjY29uc3RyIGN0eCBcIk5vbGFiZWxcIiBbXSlcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIExhYmVsbGVkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYWJlbGxlZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggT3B0aW9uYWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9wdGlvbmFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiAnY3R4IC0+IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiAnY3R4IC0+IGNvbnN0YW50IC0+IGNvbnN0YW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfaW50ZWdlciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfaW50ZWdlclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2NoYXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9jaGFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgKCBQY29uc3Rfc3RyaW5nIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X3N0cmluZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjb25zdF9mbG9hdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfZmxvYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgY3R4IGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBhdHRyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGF0dHJfbmFtZSA9IFN0ZGxpYi5mc3QgYXR0cl9uYW1lO1xuICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gU3RkbGliLmZzdCBhdHRyX3BheWxvYWQ7XG4gICAgICAgICAgICBhdHRyX2xvYyA9IFN0ZGxpYi5mc3QgYXR0cl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIFN0ZGxpYi5zbmQgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9wYXlsb2FkXCIsIFN0ZGxpYi5zbmQgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgU3RkbGliLnNuZCBhdHRyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgY3R4IGIgaW5cbiAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6ICdjdHggLT4gYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU3RyIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU3RyXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU2lnIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU2lnXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQVHlwIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQVHlwXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBQYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUFBhdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gU3RkbGliLmZzdCBwdHlwX2Rlc2M7XG4gICAgICAgICAgICBwdHlwX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgU3RkbGliLnNuZCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwdHlwX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwdHlwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoUHR5cF9hbnksIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYW55XCIgW10pXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9vYmplY3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9jbGFzcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NsYXNzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3ZhcmlhbnRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfcGFja2FnZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wYWNrYWdlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgY3R4IHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHJmX2Rlc2MgPSBTdGRsaWIuZnN0IHByZl9kZXNjO1xuICAgICAgICAgICAgcHJmX2xvYyA9IFN0ZGxpYi5mc3QgcHJmX2xvYztcbiAgICAgICAgICAgIHByZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcmZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBTdGRsaWIuc25kIHByZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBTdGRsaWIuc25kIHByZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcmZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBSdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUnRhZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUmluaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJpbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogJ2N0eCAtPiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb2ZfZGVzYyA9IFN0ZGxpYi5mc3QgcG9mX2Rlc2M7XG4gICAgICAgICAgICBwb2ZfbG9jID0gU3RkbGliLmZzdCBwb2ZfbG9jO1xuICAgICAgICAgICAgcG9mX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIFN0ZGxpYi5zbmQgcG9mX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBPdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk90YWdcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggT2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IFN0ZGxpYi5mc3QgcHBhdF9kZXNjO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBTdGRsaWIuZnN0IHBwYXRfbG9jO1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHBhdF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgU3RkbGliLnNuZCBwcGF0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwcGF0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FueVwiIFtdKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfYWxpYXMgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbGlhc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2ludGVydmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfaW50ZXJ2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfcmVjb3JkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2FycmF5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FycmF5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X29yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF90eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF91bnBhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdW5wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6ICdjdHggLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IFN0ZGxpYi5mc3QgcGV4cF9kZXNjO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBTdGRsaWIuZnN0IHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBleHBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgU3RkbGliLnNuZCBwZXhwX2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwZXhwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogJ2N0eCAtPiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1bmN0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1bmN0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBleHBfZnVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9tYXRjaCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX21hdGNoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF90cnkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF90cnlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cnVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cnVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF92YXJpYW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2ZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZmllbGRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0ZmllbGQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGZpZWxkXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9pZnRoZW5lbHNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZnRoZW5lbHNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlcXVlbmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2VxdWVuY2VcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF93aGlsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3doaWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBjdHggZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGUgaW5cbiAgICAgICAgICAgICggUGV4cF9mb3JcbiAgICAgICAgICAgICAgICAoIFN0ZGxpYi5mc3QgYSxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYixcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYyxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZCxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZSApLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZvclwiXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBhO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBiO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBjO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBkO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBlO1xuICAgICAgICAgICAgICAgIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfY29lcmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb2VyY2VcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2VuZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlbmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXRpbnN0dmFyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2V0aW5zdHZhclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfb3ZlcnJpZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3ZlcnJpZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG1vZHVsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0bW9kdWxlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2xldGV4Y2VwdGlvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXNzZXJ0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Fzc2VydFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xhenkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGF6eVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9uZXd0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbmV3dHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3BhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG9wIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG9wXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICAgICAgICAoUGV4cF91bnJlYWNoYWJsZSwgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF91bnJlYWNoYWJsZVwiIFtdKVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gY3R4IHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX3JocyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjX2xocyA9IFN0ZGxpYi5mc3QgcGNfbGhzO1xuICAgICAgICAgICAgcGNfZ3VhcmQgPSBTdGRsaWIuZnN0IHBjX2d1YXJkO1xuICAgICAgICAgICAgcGNfcmhzID0gU3RkbGliLmZzdCBwY19yaHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNfbGhzXCIsIFN0ZGxpYi5zbmQgcGNfbGhzKTtcbiAgICAgICAgICAgICAgKFwicGNfZ3VhcmRcIiwgU3RkbGliLnNuZCBwY19ndWFyZCk7XG4gICAgICAgICAgICAgIChcInBjX3Joc1wiLCBTdGRsaWIuc25kIHBjX3Jocyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgY3R4IGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGN0eCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGN0eCBib2R5IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbGV0XyA9IFN0ZGxpYi5mc3QgbGV0XztcbiAgICAgICAgICAgIGFuZHMgPSBTdGRsaWIuZnN0IGFuZHM7XG4gICAgICAgICAgICBib2R5ID0gU3RkbGliLmZzdCBib2R5O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxldF9cIiwgU3RkbGliLnNuZCBsZXRfKTtcbiAgICAgICAgICAgICAgKFwiYW5kc1wiLCBTdGRsaWIuc25kIGFuZHMpO1xuICAgICAgICAgICAgICAoXCJib2R5XCIsIFN0ZGxpYi5zbmQgYm9keSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGJvcF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwYm9wX29wID0gU3RkbGliLmZzdCBwYm9wX29wO1xuICAgICAgICAgICAgcGJvcF9wYXQgPSBTdGRsaWIuZnN0IHBib3BfcGF0O1xuICAgICAgICAgICAgcGJvcF9leHAgPSBTdGRsaWIuZnN0IHBib3BfZXhwO1xuICAgICAgICAgICAgcGJvcF9sb2MgPSBTdGRsaWIuZnN0IHBib3BfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBib3Bfb3BcIiwgU3RkbGliLnNuZCBwYm9wX29wKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9wYXRcIiwgU3RkbGliLnNuZCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAgIChcInBib3BfZXhwXCIsIFN0ZGxpYi5zbmQgcGJvcF9leHApO1xuICAgICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBTdGRsaWIuc25kIHBib3BfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIGN0eCBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2YWxfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHZhbF9uYW1lID0gU3RkbGliLmZzdCBwdmFsX25hbWU7XG4gICAgICAgICAgICBwdmFsX3R5cGUgPSBTdGRsaWIuZnN0IHB2YWxfdHlwZTtcbiAgICAgICAgICAgIHB2YWxfcHJpbSA9IFN0ZGxpYi5mc3QgcHZhbF9wcmltO1xuICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmFsX2xvYyA9IFN0ZGxpYi5mc3QgcHZhbF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHZhbF9uYW1lXCIsIFN0ZGxpYi5zbmQgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIFN0ZGxpYi5zbmQgcHZhbF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIFN0ZGxpYi5zbmQgcHZhbF9wcmltKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgU3RkbGliLnNuZCBwdmFsX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZSA9IFN0ZGxpYi5mc3QgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBTdGRsaWIuZnN0IHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZCA9IFN0ZGxpYi5mc3QgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBTdGRsaWIuZnN0IHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IFN0ZGxpYi5mc3QgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jID0gU3RkbGliLmZzdCBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbmFtZVwiLCBTdGRsaWIuc25kIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlwZV9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBTdGRsaWIuc25kIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfa2luZFwiLCBTdGRsaWIuc25kIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIFN0ZGxpYi5zbmQgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBlX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX2Fic3RyYWN0XCIgW10pXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBlX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV9yZWNvcmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX29wZW5cIiBbXSlcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBjdHggcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGxkX25hbWUgPSBTdGRsaWIuZnN0IHBsZF9uYW1lO1xuICAgICAgICAgICAgcGxkX211dGFibGUgPSBTdGRsaWIuZnN0IHBsZF9tdXRhYmxlO1xuICAgICAgICAgICAgcGxkX3R5cGUgPSBTdGRsaWIuZnN0IHBsZF90eXBlO1xuICAgICAgICAgICAgcGxkX2xvYyA9IFN0ZGxpYi5mc3QgcGxkX2xvYztcbiAgICAgICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbGRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBTdGRsaWIuc25kIHBsZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGxkX211dGFibGVcIiwgU3RkbGliLnNuZCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAgIChcInBsZF90eXBlXCIsIFN0ZGxpYi5zbmQgcGxkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfbG9jXCIsIFN0ZGxpYi5zbmQgcGxkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBsZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNkX25hbWUgPSBTdGRsaWIuZnN0IHBjZF9uYW1lO1xuICAgICAgICAgICAgcGNkX3ZhcnMgPSBTdGRsaWIuZnN0IHBjZF92YXJzO1xuICAgICAgICAgICAgcGNkX2FyZ3MgPSBTdGRsaWIuZnN0IHBjZF9hcmdzO1xuICAgICAgICAgICAgcGNkX3JlcyA9IFN0ZGxpYi5mc3QgcGNkX3JlcztcbiAgICAgICAgICAgIHBjZF9sb2MgPSBTdGRsaWIuZnN0IHBjZF9sb2M7XG4gICAgICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgU3RkbGliLnNuZCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjZF92YXJzXCIsIFN0ZGxpYi5zbmQgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBTdGRsaWIuc25kIHBjZF9hcmdzKTtcbiAgICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBTdGRsaWIuc25kIHBjZF9yZXMpO1xuICAgICAgICAgICAgICAoXCJwY2RfbG9jXCIsIFN0ZGxpYi5zbmQgcGNkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjc3RyX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6ICdjdHggLT4gdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aCA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zID0gU3RkbGliLmZzdCBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3BhdGhcIiwgU3RkbGliLnNuZCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlleHRfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXh0X25hbWUgPSBTdGRsaWIuZnN0IHBleHRfbmFtZTtcbiAgICAgICAgICAgIHBleHRfa2luZCA9IFN0ZGxpYi5mc3QgcGV4dF9raW5kO1xuICAgICAgICAgICAgcGV4dF9sb2MgPSBTdGRsaWIuZnN0IHBleHRfbG9jO1xuICAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGV4dF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIFN0ZGxpYi5zbmQgcGV4dF9raW5kKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9sb2NcIiwgU3RkbGliLnNuZCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6ICdjdHggLT4gdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICAgICAgcHR5ZXhuX2xvYyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2xvYztcbiAgICAgICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgU3RkbGliLnNuZCBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eWV4bl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4dF9kZWNsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4dF9kZWNsXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4dF9yZWJpbmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfcmViaW5kXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gU3RkbGliLmZzdCBwY3R5X2Rlc2M7XG4gICAgICAgICAgICBwY3R5X2xvYyA9IFN0ZGxpYi5mc3QgcGN0eV9sb2M7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgU3RkbGliLnNuZCBwY3R5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBTdGRsaWIuc25kIHBjdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQY3R5X2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc2lnX3NlbGYgPSBTdGRsaWIuZnN0IHBjc2lnX3NlbGY7XG4gICAgICAgICAgICBwY3NpZ19maWVsZHMgPSBTdGRsaWIuZnN0IHBjc2lnX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3NpZ19zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzaWdfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc2lnX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc2lnX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjdGZfZGVzYztcbiAgICAgICAgICAgIHBjdGZfbG9jID0gU3RkbGliLmZzdCBwY3RmX2xvYztcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBTdGRsaWIuc25kIHBjdGZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIFN0ZGxpYi5zbmQgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHhcbiAgICAgICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfdmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNpX3ZpcnQgPSBTdGRsaWIuZnN0IHBjaV92aXJ0O1xuICAgICAgICAgICAgcGNpX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcGNpX3BhcmFtcztcbiAgICAgICAgICAgIHBjaV9uYW1lID0gU3RkbGliLmZzdCBwY2lfbmFtZTtcbiAgICAgICAgICAgIHBjaV9leHByID0gU3RkbGliLmZzdCBwY2lfZXhwcjtcbiAgICAgICAgICAgIHBjaV9sb2MgPSBTdGRsaWIuZnN0IHBjaV9sb2M7XG4gICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNpX3ZpcnRcIiwgU3RkbGliLnNuZCBwY2lfdmlydCk7XG4gICAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwY2lfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgU3RkbGliLnNuZCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjaV9leHByXCIsIFN0ZGxpYi5zbmQgcGNpX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwY2lfbG9jXCIsIFN0ZGxpYi5zbmQgcGNpX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogJ2N0eCAtPiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IFN0ZGxpYi5mc3QgcGNsX2Rlc2M7XG4gICAgICAgICAgICBwY2xfbG9jID0gU3RkbGliLmZzdCBwY2xfbG9jO1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjbF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfbG9jXCIsIFN0ZGxpYi5zbmQgcGNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogJ2N0eCAtPiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2xfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGQgaW5cbiAgICAgICAgICAgICggUGNsX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNsX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgKCBQY2xfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2xldFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc3RyX3NlbGYgPSBTdGRsaWIuZnN0IHBjc3RyX3NlbGY7XG4gICAgICAgICAgICBwY3N0cl9maWVsZHMgPSBTdGRsaWIuZnN0IHBjc3RyX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3N0cl9zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzdHJfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc3RyX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc3RyX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjZl9kZXNjO1xuICAgICAgICAgICAgcGNmX2xvYyA9IFN0ZGxpYi5mc3QgcGNmX2xvYztcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBjZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBTdGRsaWIuc25kIHBjZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfaW5oZXJpdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUGNmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX21ldGhvZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9pbml0aWFsaXplciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaXRpYWxpemVyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggQ2ZrX3ZpcnR1YWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkNma192aXJ0dWFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIENma19jb25jcmV0ZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfY29uY3JldGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6ICdjdHggLT4gbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10eV9kZXNjID0gU3RkbGliLmZzdCBwbXR5X2Rlc2M7XG4gICAgICAgICAgICBwbXR5X2xvYyA9IFN0ZGxpYi5mc3QgcG10eV9sb2M7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgU3RkbGliLnNuZCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbXR5X2xvY1wiLCBTdGRsaWIuc25kIHBtdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG10eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9zaWduYXR1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfc2lnbmF0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBjdHggYiBpblxuICAgICAgICAgICAgKCBQbXR5X3dpdGggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV93aXRoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV90eXBlb2YgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfdHlwZW9mXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfYWxpYXMgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlclxuICAgICAgICA6ICdjdHggLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IChVbml0LCBzZWxmI2NvbnN0ciBjdHggXCJVbml0XCIgW10pXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBOYW1lZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJOYW1lZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgKCB7IHBzaWdfZGVzYyA9IFN0ZGxpYi5mc3QgcHNpZ19kZXNjOyBwc2lnX2xvYyA9IFN0ZGxpYi5mc3QgcHNpZ19sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHNpZ19kZXNjXCIsIFN0ZGxpYi5zbmQgcHNpZ19kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHNpZ19sb2NcIiwgU3RkbGliLnNuZCBwc2lnX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3ZhbHVlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3ZhbHVlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3JlY21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19yZWNtb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc2lnX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1kX25hbWUgPSBTdGRsaWIuZnN0IHBtZF9uYW1lO1xuICAgICAgICAgICAgcG1kX3R5cGUgPSBTdGRsaWIuZnN0IHBtZF90eXBlO1xuICAgICAgICAgICAgcG1kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1kX2xvYyA9IFN0ZGxpYi5mc3QgcG1kX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWRfbmFtZVwiLCBTdGRsaWIuc25kIHBtZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgU3RkbGliLnNuZCBwbWRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWRfbG9jXCIsIFN0ZGxpYi5zbmQgcG1kX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXNfbmFtZSA9IFN0ZGxpYi5mc3QgcG1zX25hbWU7XG4gICAgICAgICAgICBwbXNfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHBtc19tYW5pZmVzdDtcbiAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtc19sb2MgPSBTdGRsaWIuZnN0IHBtc19sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1zX25hbWVcIiwgU3RkbGliLnNuZCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHBtc19tYW5pZmVzdCk7XG4gICAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXNfbG9jXCIsIFN0ZGxpYi5zbmQgcG1zX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10ZF9uYW1lID0gU3RkbGliLmZzdCBwbXRkX25hbWU7XG4gICAgICAgICAgICBwbXRkX3R5cGUgPSBTdGRsaWIuZnN0IHBtdGRfdHlwZTtcbiAgICAgICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG10ZF9sb2MgPSBTdGRsaWIuZnN0IHBtdGRfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBTdGRsaWIuc25kIHBtdGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBTdGRsaWIuc25kIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIFN0ZGxpYi5zbmQgcG10ZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3Blbl9leHByID0gU3RkbGliLmZzdCBwb3Blbl9leHByO1xuICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBTdGRsaWIuZnN0IHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgcG9wZW5fbG9jID0gU3RkbGliLmZzdCBwb3Blbl9sb2M7XG4gICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgU3RkbGliLnNuZCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fb3ZlcnJpZGVcIiwgU3RkbGliLnNuZCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBTdGRsaWIuc25kIHBvcGVuX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIGN0eCBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBpbmNsX21vZCA9IFN0ZGxpYi5mc3QgcGluY2xfbW9kO1xuICAgICAgICAgICAgcGluY2xfbG9jID0gU3RkbGliLmZzdCBwaW5jbF9sb2M7XG4gICAgICAgICAgICBwaW5jbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwaW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBpbmNsX21vZFwiLCBTdGRsaWIuc25kIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBTdGRsaWIuc25kIHBpbmNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF90eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVzdWJzdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6ICdjdHggLT4gbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gU3RkbGliLmZzdCBwbW9kX2Rlc2M7XG4gICAgICAgICAgICBwbW9kX2xvYyA9IFN0ZGxpYi5mc3QgcG1vZF9sb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgU3RkbGliLnNuZCBwbW9kX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBTdGRsaWIuc25kIHBtb2RfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9zdHJ1Y3R1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2Rfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogJ2N0eCAtPiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgKCB7IHBzdHJfZGVzYyA9IFN0ZGxpYi5mc3QgcHN0cl9kZXNjOyBwc3RyX2xvYyA9IFN0ZGxpYi5mc3QgcHN0cl9sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHN0cl9kZXNjXCIsIFN0ZGxpYi5zbmQgcHN0cl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHN0cl9sb2NcIiwgU3RkbGliLnNuZCBwc3RyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9ldmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXZhbFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdmFsdWUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl92YWx1ZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcHJpbWl0aXZlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3ByaW1pdGl2ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6ICdjdHggLT4gdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPSBTdGRsaWIuZnN0IHB2Yl9wYXQ7XG4gICAgICAgICAgICBwdmJfZXhwciA9IFN0ZGxpYi5mc3QgcHZiX2V4cHI7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmJfbG9jID0gU3RkbGliLmZzdCBwdmJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgU3RkbGliLnNuZCBwdmJfcGF0KTtcbiAgICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgU3RkbGliLnNuZCBwdmJfZXhwcik7XG4gICAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdmJfbG9jXCIsIFN0ZGxpYi5zbmQgcHZiX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6ICdjdHggLT4gbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbWJfbmFtZSA9IFN0ZGxpYi5mc3QgcG1iX25hbWU7XG4gICAgICAgICAgICBwbWJfZXhwciA9IFN0ZGxpYi5mc3QgcG1iX2V4cHI7XG4gICAgICAgICAgICBwbWJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbWJfbG9jID0gU3RkbGliLmZzdCBwbWJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIFN0ZGxpYi5zbmQgcG1iX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbWJfZXhwclwiLCBTdGRsaWIuc25kIHBtYl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbWJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtYl9sb2NcIiwgU3RkbGliLnNuZCBwbWJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6ICdjdHggLT4gdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kZWYgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGVmXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdG9wX2RpciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHRvcF9kaXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiAnY3R4IC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJfbmFtZSA9IFN0ZGxpYi5mc3QgcGRpcl9uYW1lO1xuICAgICAgICAgICAgcGRpcl9hcmcgPSBTdGRsaWIuZnN0IHBkaXJfYXJnO1xuICAgICAgICAgICAgcGRpcl9sb2MgPSBTdGRsaWIuZnN0IHBkaXJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBTdGRsaWIuc25kIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBkaXJfYXJnXCIsIFN0ZGxpYi5zbmQgcGRpcl9hcmcpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGRpcmFfZGVzYyA9IFN0ZGxpYi5mc3QgcGRpcmFfZGVzYztcbiAgICAgICAgICAgIHBkaXJhX2xvYyA9IFN0ZGxpYi5mc3QgcGRpcmFfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJhX2Rlc2NcIiwgU3RkbGliLnNuZCBwZGlyYV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGRpcmFfbG9jXCIsIFN0ZGxpYi5zbmQgcGRpcmFfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9zdHJpbmcgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfc3RyaW5nXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQZGlyX2ludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2ludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9ib29sIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2Jvb2xcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgKiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuW0BAQGVuZF1cbltAQEBlbmRdXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIHQgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IudFxuXG5sZXQgdG9fZXh0ZW5zaW9uIChlcnJvciA6IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci50KSA9XG4gIGxldCBvcGVuIEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBpblxuICBsZXQgb3BlbiBBc3RfaGVscGVyIGluXG4gIGlmIG5vdCAoaXNfd2VsbF9mb3JtZWQgZXJyb3IpIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcInRvX2V4dGVuc2lvbjogZXhwZWN0ZWQga2luZCBSZXBvcnRfZXJyb3JcIik7XG4gIGxldCBzdWJfbXNncyA9IHN1Yl9tc2dzIGVycm9yIGluXG4gIGxldCBtYWluX21zZyA9IG1haW5fbXNnIGVycm9yIGluXG4gIGxldCBlcnJfZXh0ZW5zaW9uX25hbWUgbG9jID0geyBMb2NhdGlvbi5sb2M7IHR4dCA9IFwib2NhbWwuZXJyb3JcIiB9IGluXG4gIGxldCBta19zdHJpbmdfY29uc3RhbnQgeCA9IFN0ci5ldmFsIChFeHAuY29uc3RhbnQgKENvbnN0LnN0cmluZyB4KSkgaW5cbiAgbGV0IGV4dGVuc2lvbl9vZl9zdWJfbXNnIChzdWJfbXNnIDogc3RyaW5nIExvY2F0aW9uLmxvYykgPVxuICAgIFN0ci5leHRlbnNpb25cbiAgICAgIChlcnJfZXh0ZW5zaW9uX25hbWUgc3ViX21zZy5sb2MsIFBTdHIgWyBta19zdHJpbmdfY29uc3RhbnQgc3ViX21zZy50eHQgXSlcbiAgaW5cbiAgKCBlcnJfZXh0ZW5zaW9uX25hbWUgbWFpbl9tc2cubG9jLFxuICAgIFBhcnNldHJlZS5QU3RyXG4gICAgICAobWtfc3RyaW5nX2NvbnN0YW50IG1haW5fbXNnLnR4dCA6OiBMaXN0Lm1hcCBleHRlbnNpb25fb2Zfc3ViX21zZyBzdWJfbXNncylcbiAgKVxuXG5sZXQgcmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLnJlZ2lzdGVyX2Vycm9yX29mX2V4blxuXG5sZXQgbWVzc2FnZSBlcnJvciA9XG4gIGxldCB7IEFzdGxpYi5Mb2NhdGlvbi50eHQ7IF8gfSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWluX21zZyBlcnJvciBpblxuICB0eHRcblxubGV0IHNldF9tZXNzYWdlID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX21zZ1xuXG5sZXQgbWFrZSB+bG9jIHR4dCB+c3ViID1cbiAgbGV0IHN1YiA9IExpc3QubWFwIChmdW4gKGxvYywgdHh0KSAtPiB7IEFzdGxpYi5Mb2NhdGlvbi5sb2M7IHR4dCB9KSBzdWIgaW5cbiAgQXN0bGliLkxvY2F0aW9uLkVycm9yLm1ha2UgfnN1YiB7IGxvYzsgdHh0IH1cblxubGV0IHVwZGF0ZV9sb2MgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iuc2V0X21haW5fbG9jXG5cbmxldCBnZXRfbG9jYXRpb24gZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24ubG9jOyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgbG9jXG5cbmxldCBvZl9leG4gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iub2ZfZXhuXG5sZXQgcmFpc2UgZXJyb3IgPSByYWlzZSAoQXN0bGliLkxvY2F0aW9uLkVycm9yIGVycm9yKVxuIiwibW9kdWxlIERvX25vdF91c2VfZGlyZWN0bHkgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgQWZsX2luc3RydW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWZsX2luc3RydW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIEFsaWFzX2FuYWx5c2lzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsaWFzX2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBBbGxvY2F0ZWRfY29uc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWxsb2NhdGVkX2NvbnN0IGluc3RlYWRcIl1cbm1vZHVsZSBBbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXJjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BcmNoIGluc3RlYWRcIl1cbm1vZHVsZSBBcmdfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXJnX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saW5rIGluc3RlYWRcIl1cbm1vZHVsZSBBc21wYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21wYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pdGVyYXRvciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdHR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBBdHRyX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkF0dHJfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBdWdtZW50X3NwZWNpYWxpc2VkX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBCYWNrZW5kX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEJhY2tlbmRfdmFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJhY2tlbmRfdmFyIGluc3RlYWRcIl1cbm1vZHVsZSBCaW51dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJpbnV0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBCcmFuY2hfcmVsYXhhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CcmFuY2hfcmVsYXhhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb25faW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQnR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfZXhwb3J0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnVpbGRfZXhwb3J0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX3BhdGhfcHJlZml4X21hcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWxkX3BhdGhfcHJlZml4X21hcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbHRpbl9hdHRyaWJ1dGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbHRpbl9hdHRyaWJ1dGVzIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVwYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlc2VjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CeXRlc2VjdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIENTRSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0UgaW5zdGVhZFwiXVxubW9kdWxlIENTRWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0VnZW4gaW5zdGVhZFwiXVxubW9kdWxlIENhbWxpbnRlcm5hbE1lbmhpckxpYiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNhbWxpbnRlcm5hbE1lbmhpckxpYiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2NvbXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DY29tcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBDbGZsYWdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2xmbGFncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb25fYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbl9hdXggaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfZWxlbWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2VsZW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vZmZzZXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb2Zmc2V0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIENtaV9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbWlfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faGVscGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faGVscGVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW4gaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbl9zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW5fc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIENtb19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENtdDJhbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdDJhbm5vdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ210X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdF9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENteF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENteHNfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb2xvcmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db2xvcmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tYmFsbG9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbWJhbGxvYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGF0aW9uX3VuaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsYXRpb25fdW5pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQ29tcGlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZV9jb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21waWxlX2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcG1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wbWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcHJlc3Npb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wcmVzc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29uZmlnIGluc3RlYWRcIl1cbm1vZHVsZSBDb25maWdfYm9vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29uZmlnX21haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbnNpc3RibCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbnNpc3RibCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29udmVydF9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbnZlcnRfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ3R5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGF0YWZsb3cgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRGF0YWZsb3cgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFyZXByID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGF0YXJlcHIgaW5zdGVhZFwiXVxubW9kdWxlIERlYWRjb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRlYWRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBEZWJ1Z2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZWJ1Z2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIERlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRGlmZmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmcgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmdfd2l0aF9rZXlzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGlmZmluZ193aXRoX2tleXMgaW5zdGVhZFwiXVxubW9kdWxlIERsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgRG9jc3RyaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvY3N0cmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIERvbWFpbnN0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRG9tYWluc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIEVmZmVjdF9hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FZmZlY3RfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FbWl0YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0Y29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuRW1pdGNvZGUgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgRW52YXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRW52YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVycm9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3J0cmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVycm9ydHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaWQgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mb19mb3JfcGFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mb19mb3JfcGFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwdW5nZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgRXh0cmFjdF9wcm9qZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHRyYWN0X3Byb2plY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGaW5kX3JlY3Vyc2l2ZV9mdW5jdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaXRlcmF0b3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfaXRlcmF0b3JzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3RvX2NsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV90b19jbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3V0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEZyZXNoZW5pbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRnJlc2hlbmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgR2VucHJpbnR2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLkdlbnByaW50dmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJZF90eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JZF90eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JZGVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnRpZmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBJbXBvcnRfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkltcG9ydF9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2RfZXJyb3JwcmludGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZW1vZF9lcnJvcnByaW50ZXIgaW5zdGVhZFwiXVxubW9kdWxlIEluY29uc3RhbnRfaWRlbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluY29uc3RhbnRfaWRlbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluaXRpYWxpemVfc3ltYm9sX3RvX2xldF9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2Nvc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfY29zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfZGVjaXNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfZGVjaXNpb24gaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIElubGluaW5nX3N0YXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3N0YXRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0c190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0c190eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfdHJhbnNmb3JtcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ190cmFuc2Zvcm1zIGluc3RlYWRcIl1cbm1vZHVsZSBJbnN0cnVjdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuSW5zdHJ1Y3QgaW5zdGVhZFwiXVxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJmIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcm5hbF92YXJpYWJsZV9uYW1lcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcm5hbF92YXJpYWJsZV9uYW1lcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJ2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJ2YWwgaW5zdGVhZFwiXVxubW9kdWxlIEludmFyaWFudF9wYXJhbXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW52YXJpYW50X3BhcmFtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBMYXp5X2JhY2t0cmFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhenlfYmFja3RyYWNrIGluc3RlYWRcIl1cbm1vZHVsZSBMZXhlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxleGVyIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcl9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyaXplID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcml6ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlua2FnZV9uYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmthZ2VfbmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluc2NhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5zY2FuIGluc3RlYWRcIl1cbm1vZHVsZSBMaXZlbmVzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaXZlbmVzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9hZF9wYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9hZF9wYXRoIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhbF9zdG9yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2FsX3N0b3JlIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2F0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBMb25naWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIE1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTWFjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgTWFpbl9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFpbl9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBNYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5NYWluZHJpdmVyIGluc3RlYWRcIl1cbm1vZHVsZSBNYWtlZGVwZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFrZWRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWF0Y2hpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYXRjaGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWV0YSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ldGEgaW5zdGVhZFwiXVxubW9kdWxlIE1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBNdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk10eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBNdXRhYmxlX3ZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk11dGFibGVfdmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIE51bWJlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5OdW1iZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBPcGNvZGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3Bjb2RlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3ByaW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3ByaW50IGluc3RlYWRcIl1cbm1vZHVsZSBPcHRjb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdGNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIE9wdGVycm9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRlcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIE9wdG1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE9wdG1haW5kcml2ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0bWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgT3V0Y29tZXRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFBhcmFtZXRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QYXJhbWV0ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2V0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXNzX3dyYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFzc193cmFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0dGVybnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXR0ZXJucyBpbnN0ZWFkXCJdXG5tb2R1bGUgUGVyc2lzdGVudF9lbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QZXJzaXN0ZW50X2VudiBpbnN0ZWFkXCJdXG5tb2R1bGUgUG9sbGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qb2xsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBQcGFyc2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBwcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBwcmludGFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJlZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJlZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBQcmltaXRpdmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmltaXRpdmUgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50YXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRpbnN0ciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuUHJpbnRpbnN0ciBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludGxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRsaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bWFjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludG1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIFByaW50cGF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRwYXQgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXAgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHR5cGVkIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2MgaW5zdGVhZFwiXVxubW9kdWxlIFByb2ZpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Qcm9maWxlIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9qZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2plY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFJlZl90b192YXJpYWJsZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVmX3RvX3ZhcmlhYmxlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUnVudGltZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJ1bnRpbWVkZWYgaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZHVsaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkdWxpbmcgaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3RnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFNlbWFudGljc19vZl9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbWFudGljc19vZl9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX2lkIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIFNoYXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2hhcGUgaW5zdGVhZFwiXVxubW9kdWxlIFNoYXBlX3JlZHVjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNoYXBlX3JlZHVjZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcmVfY29uc3RhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNoYXJlX2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2lnbmF0dXJlX2dyb3VwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2lnbmF0dXJlX2dyb3VwIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGVfdmFsdWVfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsZV92YWx1ZV9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaW1wbGlmIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHNfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgU2ltcGxpZnlfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTcGlsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TcGlsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BsaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BsaXQgaW5zdGVhZFwiXVxubW9kdWxlIFN0YWNrZnJhbWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhY2tmcmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RhY2tmcmFtZWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdGFja2ZyYW1lZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTdGF0aWNfZXhjZXB0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YXRpY19leGNlcHRpb24gaW5zdGVhZFwiXVxubW9kdWxlIFN0cm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0cm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBTdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFN1YnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Vic3QgaW5zdGVhZFwiXVxubW9kdWxlIFN3aXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN3aXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltdGFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW10YWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ludGF4ZXJyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ludGF4ZXJyIGluc3RlYWRcIl1cbm1vZHVsZSBUYWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVGFnIGluc3RlYWRcIl1cbm1vZHVsZSBUYXJnZXRpbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXJnZXRpbnQgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X2l0ZXJhdG9yIGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBUZXJtaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRlcm1pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBUaHJlYWRfc2FuaXRpemVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRocmVhZF9zYW5pdGl6ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFRtYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRtYyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bjb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFRvcGRpcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGRpcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGV2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGV2YWwgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGhvb2tzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUb3Bsb29wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bsb29wIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BtYWluIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BwcmludGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wcHJpbnRlcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcHN0YXJ0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUcmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGF0dHJpYnV0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGF0dHJpYnV0ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsb2JqID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsb2JqIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xwcmltID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNscHJpbSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhdmVyc2VfZm9yX2V4cG9ydGVkX3N5bWJvbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVHJhdmVyc2VfZm9yX2V4cG9ydGVkX3N5bWJvbHMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVfaW1tZWRpYWN5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZV9pbW1lZGlhY3kgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfaW1tZWRpYWN5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9wcm9wZXJ0aWVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfcHJvcGVydGllcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfc2VwYXJhYmlsaXR5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfc2VwYXJhYmlsaXR5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF91bmJveGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdW5ib3hlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdmFyaWFuY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF92YXJpYW5jZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWR0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWR0cmVlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZW1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW9wdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVvcHQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGV0ZXhwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZXRleHAgaW5zdGVhZFwiXVxubW9kdWxlIFVuX2FuZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Vbl9hbmYgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2Nsb3N1cmVzIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9mcmVlX3ZhcnNfb2ZfY2xvc3VyZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X3NwZWNpYWxpc2VkX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFVuaXRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlVuaXRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW50eXBlYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVW50eXBlYXN0IGluc3RlYWRcIl1cbm1vZHVsZSBWYWx1ZV9yZWNfY2hlY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5WYWx1ZV9yZWNfY2hlY2sgaW5zdGVhZFwiXVxubW9kdWxlIFZhbHVlX3JlY19jb21waWxlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlZhbHVlX3JlY19jb21waWxlciBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFsdWVfcmVjX3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBWYXJfd2l0aGluX2Nsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyX3dpdGhpbl9jbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBWYXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgV2FybmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5XYXJuaW5ncyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2FzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgWDg2X2RzbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZHNsIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfZ2FzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9nYXMgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9tYXNtID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9tYXNtIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfcHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfcHJvYyBpbnN0ZWFkXCJdXG4iLCJvcGVuIFN0ZExhYmVsc1xuXG5sZXQgcGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzID1cbiAgbGV0IGFyZ3MgPVxuICAgIExpc3QuY29uY2F0XG4gICAgICBbXG4gICAgICAgIFsgXCIta2VlcC13aGl0ZXNwYWNlXCIgXTtcbiAgICAgICAgWyBcIi1sb2NhdGlvbi1zdHlsZSBvbWFrZVwiIF07XG4gICAgICAgIChpZiB1c2VfY29sb3IgdGhlbiBbXSBlbHNlIFsgXCItYXNjaWlcIiBdKTtcbiAgICAgICAgZXh0cmFfcGF0ZGlmZl9hcmdzO1xuICAgICAgXVxuICBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKFwicGF0ZGlmZlwiIDo6IGFyZ3MpXG5cbmxldCBwcmludCA/ZGlmZl9jb21tYW5kID8oZXh0cmFfcGF0ZGlmZl9hcmdzID0gW10pID8odXNlX2NvbG9yID0gZmFsc2UpIH5maWxlMVxuICAgIH5maWxlMiAoKSA9XG4gIGxldCBleGVjIGNtZCA9XG4gICAgbGV0IGNtZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIDE+JjJcIiBjbWQgKEZpbGVuYW1lLnF1b3RlIGZpbGUxKVxuICAgICAgICAoRmlsZW5hbWUucXVvdGUgZmlsZTIpXG4gICAgaW5cbiAgICBtYXRjaCBTeXMuY29tbWFuZCBjbWQgd2l0aFxuICAgIHwgMCAtPiBgU2FtZVxuICAgIHwgMSAtPiBgRGlmZmVyZW50XG4gICAgfCBuIC0+IGBFcnJvciAobiwgY21kKVxuICBpblxuICBtYXRjaCBkaWZmX2NvbW1hbmQgd2l0aFxuICB8IFNvbWUgcyAtPiBpZ25vcmUgKGV4ZWMgcyA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIGV4ZWMgKHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncykgd2l0aFxuICAgICAgfCBgU2FtZSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgcHJvZHVjZWQgbm8gb3V0cHV0LCBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICAgICAgfCBgRGlmZmVyZW50IC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBzdWNjZXNzZnVsbHkgZm91bmQgYSBkaWZmZXJlbmNlICopXG4gICAgICAgICAgKClcbiAgICAgIHwgYEVycm9yIChlcnJfY29kZSwgY21kKSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgdGhyZXcgYW4gZXJyb3IuLi4gcGVyaGFwcyBpdCB3YXNuJ3QgaW5zdGFsbGVkPyBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRXJyb3I6XFxuXFxcbiAgICAgICAgICAgICA+ICVTIGV4aXRlZCB3aXRoIGNvZGUgJWRcXG5cXFxuICAgICAgICAgICAgID4gUGVyaGFwcyBwYXRkaWZmIGlzIG5vdCBpbnN0YWxsZWQ/IEhpbnQsIHRyeTogb3BhbSBpbnN0YWxsIHBhdGRpZmZcXG5cXFxuICAgICAgICAgICAgID4gRmFsbGluZyBiYWNrIHRvIGRpZmYgLXVcXG5cXG5cIlxuICAgICAgICAgICAgY21kIGVycl9jb2RlO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSkpXG4iLCJ0eXBlIGRlcml2ZXIgPSAuLlxuXG5sZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgNDJcblxubGV0IHJlZ2lzdGVyIG5hbWUgZGVyaXZlciA9XG4gIGlmIEhhc2h0YmwubWVtIGFsbCBuYW1lIHRoZW5cbiAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgIFwiUHB4X2Rlcml2aWVycy5yZWdpc3RlcjogJVMgaXMgYWxyZWFkeSByZWdpc3RlcmVkXCIgbmFtZTtcbiAgSGFzaHRibC5hZGQgYWxsIG5hbWUgZGVyaXZlclxuXG5sZXQgbG9va3VwIG5hbWUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgYWxsIG5hbWUgd2l0aFxuICB8IGRydiAtPiBTb21lIGRydlxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG5sZXQgZGVyaXZlcnMgKCkgPVxuICBIYXNodGJsLmZvbGQgKGZ1biBuYW1lIGRydiBhY2MgLT4gKG5hbWUsIGRydikgOjogYWNjKSBhbGwgW11cbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgbWFwID0gJ2EgLT4gJ2FcbiAgdHlwZSAnYSBpdGVyID0gJ2EgLT4gdW5pdFxuICB0eXBlICgnYSwgJ2FjYykgZm9sZCA9ICdhIC0+ICdhY2MgLT4gJ2FjY1xuICB0eXBlICgnYSwgJ2FjYykgZm9sZF9tYXAgPSAnYSAtPiAnYWNjIC0+ICdhICogJ2FjY1xuICB0eXBlICgnY3R4LCAnYSkgbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2FcbiAgdHlwZSAoJ2EsICdyZXMpIGxpZnQgPSAnYSAtPiAncmVzXG4gIHR5cGUgKCdjdHgsICdhLCAncmVzKSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhICogJ3Jlc1xuZW5kXG5cbmNsYXNzIG1hcCA9XG4gIGxldCBhbnkgeCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5tYXAgLT4gJ2Egb3B0aW9uIFQubWFwID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULm1hcCAtPiAnYSBsaXN0IFQubWFwID0gTGlzdC5tYXBcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgYXJyYXkgVC5tYXAgPSBBcnJheS5tYXBcbiAgZW5kXG5cbmNsYXNzIGl0ZXIgPVxuICBsZXQgYW55ID0gaWdub3JlIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQuaXRlciA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULml0ZXIgLT4gJ2Egb3B0aW9uIFQuaXRlciA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGxpc3QgVC5pdGVyID0gTGlzdC5pdGVyXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQuaXRlciAtPiAnYSBhcnJheSBULml0ZXIgPSBBcnJheS5pdGVyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZCA9XG4gIGxldCBhbnkgXyBhY2MgPSBhY2MgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIHggYWNjIC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IGFjYyB8IFNvbWUgeCAtPiBmIHggYWNjXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IGFjYyB8IHggOjogbCAtPiBsb29wIGYgbCAoZiB4IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICByIDo9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhclxuICAgICAgICBkb25lO1xuICAgICAgICAhclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGRfbWFwID1cbiAgbGV0IGFueSB4IGFjYyA9ICh4LCBhY2MpIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBhY2MpXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgKFNvbWUgeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBhY2MpXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgbGV0IGwsIGFjYyA9IGxvb3AgZiBsIGFjYyBpblxuICAgICAgICAgICAgKHggOjogbCwgYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gKGEsIGFjYylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgMCkgYWNjIGluXG4gICAgICAgICAgbGV0IGEnID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyIGluXG4gICAgICAgICAgICBBcnJheS51bnNhZmVfc2V0IGEnIGkgeDtcbiAgICAgICAgICAgIHIgOj0gYWNjXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAoYScsICFyKVxuICBlbmRcblxuY2xhc3MgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBsZXQgYW55IF8geCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2Egb3B0aW9uKSBULm1hcF93aXRoX2NvbnRleHRcbiAgICAgICAgPVxuICAgICAgZnVuIGYgY3R4IHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgbGlzdCkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+IExpc3QubWFwIChmIGN0eCkgbFxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGFycmF5KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGEgLT4gQXJyYXkubWFwIChmIGN0eCkgYVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZWxmI2NvbnN0ciBcIk5vbmVcIiBbXVxuICAgICAgICB8IFNvbWUgeCAtPiBzZWxmI2NvbnN0ciBcIlNvbWVcIiBbIGYgeCBdXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2VsZiNjb25zdHIgXCJbXVwiIFtdXG4gICAgICAgIHwgeCA6OiBsIC0+IHNlbGYjY29uc3RyIFwiOjpcIiBbIGYgeDsgc2VsZiNsaXN0IGYgbCBdXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBzZWxmI2NvbnN0ciBjdHggXCJOb25lXCIgW10pXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzID0gZiBjdHggeCBpblxuICAgICAgICAgICAgKFNvbWUgeCwgc2VsZiNjb25zdHIgY3R4IFwiU29tZVwiIFsgcmVzIF0pXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBzZWxmI2NvbnN0ciBjdHggXCJbXVwiIFtdKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlc19oZWFkID0gZiBjdHggeCBpblxuICAgICAgICAgICAgbGV0IGwsIHJlc190YWlsID0gc2VsZiNsaXN0IGYgY3R4IGwgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIHNlbGYjY29uc3RyIGN0eCBcIjo6XCIgWyByZXNfaGVhZDsgcmVzX3RhaWwgXSlcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydyZXNdIHN0ZF9saWZ0ZXJzID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdFxuICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0XG5lbmRcblxuY2xhc3MgdHlwZSBbJ2N0eCwgJ3Jlc10gc3RkX2xpZnRfbWFwcGVyc193aXRoX2NvbnRleHQgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICBtZXRob2QgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGFycmF5IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIG9wdGlvbiA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGxpc3QgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbmVuZFxuIiwibW9kdWxlIENhbWwgPSBTdGRsaWIgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTA2XSB1c2UgU3RkbGliIGluc3RlYWRcIl1cbm9wZW4gU3RkbGliXG5vcGVuIFN0ZExhYmVsc1xubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIHR5cGUgQ29tcGFyaXNvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPj0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBtaW4gOiB0IC0+IHQgLT4gdFxuICB2YWwgbWF4IDogdCAtPiB0IC0+IHRcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0IG1pbiA9IG1pblxuICBsZXQgbWF4ID0gbWF4XG5lbmRcblxuaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5cbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBib29sKVxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEJ5dGVzXG5cbiAgbGV0IHN1Yl9zdHJpbmcgdCB+cG9zIH5sZW4gPSBTdGRsaWIuQnl0ZXMuc3ViX3N0cmluZyB0IHBvcyBsZW5cblxuICBsZXQgYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIFN0ZGxpYi5CeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGNoYXIpXG5lbmRcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IHkgLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICB5XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgcmFpc2UgZXhuXG5lbmRcblxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfZmxvYXRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gZmxvYXQpXG5lbmRcblxubW9kdWxlIEZuID0gc3RydWN0XG4gIGxldCBpZCB4ID0geFxuZW5kXG5cbm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICB3aGlsZSBtZW0gdCBrZXkgZG9cbiAgICAgIHJlbW92ZSB0IGtleVxuICAgIGRvbmU7XG4gICAgYWRkIHQga2V5IGRhdGFcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgaWYgbWVtIHQga2V5IHRoZW4gRXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLmFkZF9leG5cIilcbiAgICBlbHNlIChcbiAgICAgIGFkZCB0IGtleSBkYXRhO1xuICAgICAgT2sgKCkpXG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGggT2sgKCkgLT4gKCkgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG5cbiAgbGV0IGZpbmRfb3B0IHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGggZGF0YSAtPiBTb21lIGRhdGEgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICAgIG1hdGNoIGZpbmRfb3B0IHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkYXRhID0gZGVmYXVsdCAoKSBpblxuICAgICAgICBhZGRfZXhuIHQgfmtleSB+ZGF0YTtcbiAgICAgICAgZGF0YVxuXG4gIGxldCByZWMgYWRkX2FsaXN0IHQgYWxpc3QgPVxuICAgIG1hdGNoIGFsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE9rICgpXG4gICAgfCAoa2V5LCBkYXRhKSA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gYWRkX2FsaXN0IHQgdGFpbFxuICAgICAgICB8IEVycm9yIChfIDogZXhuKSAtPiBFcnJvciBrZXkpXG5cbiAgbGV0IG9mX2FsaXN0ID9zaXplIGFsaXN0ID1cbiAgICBsZXQgc2l6ZSA9XG4gICAgICBtYXRjaCBzaXplIHdpdGggU29tZSBzaXplIC0+IHNpemUgfCBOb25lIC0+IExpc3QubGVuZ3RoIGFsaXN0XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSBzaXplIGluXG4gICAgbWF0Y2ggYWRkX2FsaXN0IHQgYWxpc3Qgd2l0aCBPayAoKSAtPiBPayB0IHwgRXJyb3IgXyBhcyBlcnJvciAtPiBlcnJvclxuXG4gIGxldCBvZl9hbGlzdF9leG4gP3NpemUgYWxpc3QgPVxuICAgIG1hdGNoIG9mX2FsaXN0ID9zaXplIGFsaXN0IHdpdGhcbiAgICB8IE9rIHQgLT4gdFxuICAgIHwgRXJyb3IgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuXCIpXG5lbmRcblxubW9kdWxlIEluX2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICAgIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGVuYW1lIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5IGZpbGVuYW1lIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2VfaW5cblxuICBsZXQgaW5wdXRfYWxsIHQgPVxuICAgIGxldCByZWMgcmVhZF9hbGxfaW50byB0IGJ1ZiA9XG4gICAgICBtYXRjaCBpbnB1dF9jaGFyIHQgd2l0aFxuICAgICAgfCBjaGFyIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgICAgICAgIHJlYWRfYWxsX2ludG8gdCBidWZcbiAgICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHJlYWRfYWxsX2ludG8gdCBidWY7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCByZWFkX2FsbCBmaWxlbmFtZSA9IHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjppbnB1dF9hbGxcbmVuZFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBtYXhfaW50ID0gbWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5lbmRcblxubW9kdWxlIEVpdGhlciA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcbmVuZFxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgICgqIHNoYWRvdyBub24tdGFpbC1yZWN1cnNpdmUgZnVuY3Rpb25zICopXG4gICAgbGV0IG1lcmdlID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzb2MgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NxID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuXG4gICAgbGV0IHJldl9tYXBpIGxpc3QgfmYgPVxuICAgICAgbGV0IHJlYyByZXZfbWFwaV9hdCBsaXN0IGkgfmYgfmFjYyA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPiByZXZfbWFwaV9hdCB0YWlsIChpICsgMSkgfmYgfmFjYzooZiBpIGhlYWQgOjogYWNjKVxuICAgICAgaW5cbiAgICAgIHJldl9tYXBpX2F0IGxpc3QgMCB+ZiB+YWNjOltdXG5cbiAgICBsZXQgZm9sZF9yaWdodDIgbGlzdDEgbGlzdDIgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0MiAocmV2IGxpc3QxKSAocmV2IGxpc3QyKSB+aW5pdCB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgYWNjKVxuXG4gICAgbGV0IG1hcCBsaXN0IH5mID0gcmV2IChyZXZfbWFwIGxpc3QgfmYpXG4gICAgbGV0IG1hcGkgbGlzdCB+ZiA9IHJldiAocmV2X21hcGkgbGlzdCB+ZilcblxuICAgIGxldCBmb2xkX3JpZ2h0IGxpc3QgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0IChMaXN0LnJldiBsaXN0KSB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+IGYgeCBhY2MpXG5cbiAgICBsZXQgYXBwZW5kIHggeSA9IHJldl9hcHBlbmQgKHJldiB4KSB5XG4gICAgbGV0IGNvbmNhdCBsaXN0ID0gZm9sZF9yaWdodCBsaXN0IH5pbml0OltdIH5mOmFwcGVuZFxuXG4gICAgbGV0IHJldl9jb21iaW5lIGxpc3QxIGxpc3QyID1cbiAgICAgIGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+ICh4LCB5KSA6OiBhY2MpXG5cbiAgICBsZXQgY29tYmluZSBsaXN0MSBsaXN0MiA9IHJldiAocmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIpXG5cbiAgICBsZXQgc3BsaXQgbGlzdCA9XG4gICAgICBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6KFtdLCBbXSkgfmY6KGZ1biAoeCwgeSkgKHhzLCB5cykgLT5cbiAgICAgICAgICAoeCA6OiB4cywgeSA6OiB5cykpXG5cbiAgICBsZXQgbWFwMiBsaXN0MSBsaXN0MiB+ZiA9XG4gICAgICByZXYgKGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IDo6IGFjYykpXG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gICAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBwIHggd2l0aFxuICAgICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbClcbiAgICBpblxuICAgIHBhcnQgW10gW10gbFxuXG4gIGxldCBpbml0IH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCB+bGVuIH5wb3MgfmYgfmFjYyA9XG4gICAgICBpZiBwb3MgPj0gbGVuIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICBlbHNlIGxvb3AgfmxlbiB+cG9zOihwb3MgKyAxKSB+ZiB+YWNjOihmIHBvcyA6OiBhY2MpXG4gICAgaW5cbiAgICBsb29wIH5sZW4gfnBvczowIH5mIH5hY2M6W11cblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBbXSAtPiB0cnVlIHwgXyA6OiBfIC0+IGZhbHNlXG5cbiAgbGV0IHJldl9maWx0ZXJfb3B0IGxpc3QgPVxuICAgIGZvbGRfbGVmdCBsaXN0IH5pbml0OltdIH5mOihmdW4gdGFpbCBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGggTm9uZSAtPiB0YWlsIHwgU29tZSBoZWFkIC0+IGhlYWQgOjogdGFpbClcblxuICBsZXQgZmlsdGVyX29wdCBsaXN0ID0gcmV2IChyZXZfZmlsdGVyX29wdCBsaXN0KVxuICBsZXQgZmlsdGVyX21hcCBsaXN0IH5mID0gcmV2X2ZpbHRlcl9vcHQgKHJldl9tYXAgbGlzdCB+ZilcbiAgbGV0IGNvbmNhdF9tYXAgbGlzdCB+ZiA9IGNvbmNhdCAobWFwIGxpc3QgfmYpXG5cbiAgbGV0IHJlYyBmaW5kX21hcCBsaXN0IH5mID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGhlYWQgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGYgaGVhZCB3aXRoIFNvbWUgXyBhcyBzb21lIC0+IHNvbWUgfCBOb25lIC0+IGZpbmRfbWFwIHRhaWwgfmYpXG5cbiAgbGV0IGZpbmRfbWFwX2V4biBsaXN0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCBsaXN0IH5mIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG4gIGxldCByZWMgbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbIHggXSAtPiBTb21lIHhcbiAgICB8IF8gOjogKF8gOjogXyBhcyByZXN0KSAtPiBsYXN0IHJlc3RcblxuICBsZXQgc3BsaXRfd2hpbGUgbGlzdCB+ZiA9XG4gICAgbGV0IHJlYyBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYyA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gZiBoZWFkIC0+IHNwbGl0X3doaWxlX2ludG8gdGFpbCB+ZiB+YWNjOihoZWFkIDo6IGFjYylcbiAgICAgIHwgXyA6OiBfIHwgW10gLT4gKExpc3QucmV2IGFjYywgbGlzdClcbiAgICBpblxuICAgIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjOltdXG5cbiAgbGV0IGZpbmRfYV9kdXAgKHR5cGUgZWx0KSBsaXN0IH5jb21wYXJlID1cbiAgICBsZXQgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZWx0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGVuZCBpblxuICAgIGxldCBtb2R1bGUgRWx0X3NldCA9IFNldC5NYWtlIChFbHQpIGluXG4gICAgbGV0IHJlYyBmaW5kX2FfZHVwX2luIGxpc3QgfnNldCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICBpZiBFbHRfc2V0Lm1lbSBoZWFkIHNldCB0aGVuIFNvbWUgaGVhZFxuICAgICAgICAgIGVsc2UgZmluZF9hX2R1cF9pbiB0YWlsIH5zZXQ6KEVsdF9zZXQuYWRkIGhlYWQgc2V0KVxuICAgIGluXG4gICAgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQ6RWx0X3NldC5lbXB0eVxuXG4gIGxldCBhc3NvY19vcHQga2V5IGFsaXN0ID1cbiAgICBtYXRjaCBhc3NvYyBrZXkgYWxpc3Qgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gICgqIHJlb3JkZXJzIGFyZ3VtZW50cyB0byBpbXByb3ZlIHR5cGUgaW5mZXJlbmNlICopXG4gIGxldCBpdGVyIGxpc3QgfmYgPSBpdGVyIGxpc3QgfmZcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG4gIGxldCBpdGVyIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG4gIGxldCB0b19saXN0IHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBbXSB8IFNvbWUgeCAtPiBbIHggXVxuZW5kXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGYgYSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGhhbmRsZV9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gYSB8IEVycm9yIGUgLT4gZiBlXG5lbmRcblxubW9kdWxlIE5vbkVtcHR5TGlzdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAqICdhIGxpc3RcblxuICBsZXQgKCBAICkgKHQxLCBxMSkgKHQyLCBxMikgPSAodDEsIHExIEAgKHQyIDo6IHEyKSlcbiAgbGV0IGhkID0gZnN0XG4gIGxldCB0b19saXN0ICh0LCBxKSA9IHQgOjogcVxuICBsZXQgbWFwIH5mICh0LCBxKSA9IChmIHQsIExpc3QubWFwIH5mIHEpXG5lbmRcblxubW9kdWxlIE91dF9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSA/KGFwcGVuZCA9IGZhbHNlKSA/KGZhaWxfaWZfZXhpc3RzID0gZmFsc2UpXG4gICAgICA/KHBlcm0gPSAwbzY2NikgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IGVsc2UgT3Blbl90ZXh0KSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2Vfb3V0XG5cbiAgbGV0IHdyaXRlX2FsbCBmaWxlbmFtZSB+ZGF0YSA9XG4gICAgd2l0aF9maWxlIGZpbGVuYW1lIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGlzX2VtcHR5ICh0IDogdCkgPSBsZW5ndGggdCA9IDBcbiAgbGV0IHByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuXG4gIGxldCBzdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOihsZW5ndGggdCAtIGxlbikgfmxlblxuICBsZXQgZHJvcF9wcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOmxlbiB+bGVuOihsZW5ndGggdCAtIGxlbilcbiAgbGV0IGRyb3Bfc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuXG4gIGxldCBpc19wcmVmaXggdCB+cHJlZml4ID1cbiAgICBsZXQgcmVjIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlblxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgcG9zKSAoZ2V0IHByZWZpeCBwb3MpXG4gICAgICAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczoocG9zICsgMSkgfmxlblxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHByZWZpeFxuICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOjAgfmxlbjoobGVuZ3RoIHByZWZpeClcblxuICBsZXQgaXNfc3VmZml4IHQgfnN1ZmZpeCA9XG4gICAgbGV0IHJlYyBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3MgfnN1ZmZpeF9vZmZzZXQgPVxuICAgICAgcG9zIDwgMFxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgKHN1ZmZpeF9vZmZzZXQgKyBwb3MpKSAoZ2V0IHN1ZmZpeCBwb3MpXG4gICAgICAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3M6KHBvcyAtIDEpIH5zdWZmaXhfb2Zmc2V0XG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggc3VmZml4XG4gICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeFxuICAgICAgICAgfnBvczoobGVuZ3RoIHN1ZmZpeCAtIDEpXG4gICAgICAgICB+c3VmZml4X29mZnNldDoobGVuZ3RoIHQgLSBsZW5ndGggc3VmZml4KVxuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgbGV0IHJlYyBleGlzdHNfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zIDwgbGVuICYmIChmIChnZXQgdCBwb3MpIHx8IGV4aXN0c19hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBleGlzdHNfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgbGV0IHJlYyBmb3JfYWxsX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW4gfHwgKGYgKGdldCB0IHBvcykgJiYgZm9yX2FsbF9hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBmb3JfYWxsX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCBpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCByaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGhcbiAgICB8IGkgLT4gU29tZSBpXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgbHNwbGl0MiB0IH5vbiA9XG4gICAgbWF0Y2ggaW5kZXhfb3B0IHQgb24gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICAgU29tZSAoc3ViIHQgfnBvczowIH5sZW46aSwgc3ViIHQgfnBvczooaSArIDEpIH5sZW46KGxlbmd0aCB0IC0gaSAtIDEpKVxuXG4gIGxldCBjYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBsb3dlcmNhc2VfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdW5jYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IHNwbGl0X29uX2NoYXIgdCB+c2VwID0gU3RkbGliLlN0cmluZy5zcGxpdF9vbl9jaGFyIHNlcCB0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHN0cmluZylcblxuICBtb2R1bGUgTWFwID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgbGV0IGZpbmRfb3B0IGtleSB0ID1cbiAgICAgIG1hdGNoIGZpbmQga2V5IHQgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICBlbmRcblxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFN0cmluZylcbmVuZFxuXG5sZXQgKCBAICkgPSBMaXN0LmFwcGVuZFxubGV0IG91dHB1dCBvYyBieXRlcyB+cG9zIH5sZW4gPSBvdXRwdXQgb2MgYnl0ZXMgcG9zIGxlblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIH5wb3MgfmxlbiA9IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIHBvcyBsZW5cbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTCA9IEFzdGxpYi5Mb2NhdGlvblxuXG50eXBlIHQgPSBsb2NhdGlvbiA9IHtcbiAgbG9jX3N0YXJ0IDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZW5kIDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5sZXQgaW5fZmlsZSBuYW1lID1cbiAgbGV0IGxvYyA9IHsgcG9zX2ZuYW1lID0gbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAtMSB9IGluXG4gIHsgbG9jX3N0YXJ0ID0gbG9jOyBsb2NfZW5kID0gbG9jOyBsb2NfZ2hvc3QgPSB0cnVlIH1cblxubGV0IHNldF9maWxlbmFtZSBsb2MgZm4gPVxuICBsZXQgbG9jX3N0YXJ0ID0geyBsb2MubG9jX3N0YXJ0IHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICBsZXQgbG9jX2VuZCA9IHsgbG9jLmxvY19lbmQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIHsgbG9jIHdpdGggbG9jX3N0YXJ0OyBsb2NfZW5kIH1cblxubGV0IG5vbmUgPSBpbl9maWxlIFwiX25vbmVfXCJcblxubGV0IGluaXQgbGV4YnVmIGZuYW1lID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAwIH1cblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIGZtdCA9IEwucmFpc2VfZXJyb3JmID9sb2MgZm10XG5sZXQgcmVwb3J0X2V4Y2VwdGlvbiA9IEwucmVwb3J0X2V4Y2VwdGlvblxuXG5sZXQgb2ZfbGV4YnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIHtcbiAgICBsb2Nfc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgbG9jX2VuZCA9IGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICB9XG5cbmxldCBwcmludCBwcGYgdCA9XG4gIFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XCJcbiAgICB0LmxvY19zdGFydC5wb3NfZm5hbWUgdC5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAodC5sb2Nfc3RhcnQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuICAgICh0LmxvY19lbmQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuXG50eXBlIG5vbnJlYyAnYSBsb2MgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiB0IH1cblxubGV0IGNvbXBhcmVfcG9zIHAxIHAyID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxldCBjb2x1bW4gcCA9XG4gICAgKCogTWFudWFsIGV4dHJhY3Q6XG4gICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3NfY251bSBhbmQgcG9zX2JvbCBpcyB0aGUgY2hhcmFjdGVyIG9mZnNldFxuICAgICAgIHdpdGhpbiB0aGUgbGluZSAoaS5lLiB0aGUgY29sdW1uIG51bWJlciwgYXNzdW1pbmcgZWFjaCBjaGFyYWN0ZXIgaXNcbiAgICAgICBvbmUgY29sdW1uIHdpZGUpLiAqKVxuICAgIHAucG9zX2NudW0gLSBwLnBvc19ib2xcbiAgaW5cbiAgbWF0Y2ggSW50LmNvbXBhcmUgcDEucG9zX2xudW0gcDIucG9zX2xudW0gd2l0aFxuICB8IDAgLT4gSW50LmNvbXBhcmUgKGNvbHVtbiBwMSkgKGNvbHVtbiBwMilcbiAgfCBuIC0+IG5cblxubGV0IG1pbl9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA8PSAwIHRoZW4gcDEgZWxzZSBwMlxubGV0IG1heF9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA+PSAwIHRoZW4gcDEgZWxzZSBwMlxuXG5sZXQgY29tcGFyZSBsb2MxIGxvYzIgPVxuICBtYXRjaCBjb21wYXJlX3BvcyBsb2MxLmxvY19zdGFydCBsb2MyLmxvY19zdGFydCB3aXRoXG4gIHwgMCAtPiBjb21wYXJlX3BvcyBsb2MxLmxvY19lbmQgbG9jMi5sb2NfZW5kXG4gIHwgbiAtPiBuXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBpbmNsdWRlIFBweGxpYl9hc3QuTG9jYXRpb25fZXJyb3JcblxuICBsZXQgY3JlYXRlZiB+bG9jIGZtdCA9IEZvcm1hdC5rYXNwcmludGYgKGZ1biBzdHIgLT4gbWFrZSB+bG9jIH5zdWI6W10gc3RyKSBmbXRcbmVuZFxuXG5sZXQgZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIGZtdCA9XG4gIEZvcm1hdC5rYXNwcmludGZcbiAgICAoZnVuIHN0ciAtPiBFcnJvci50b19leHRlbnNpb24gQEAgRXJyb3IubWFrZSB+bG9jIH5zdWI6W10gc3RyKVxuICAgIGZtdFxuXG5leGNlcHRpb24gRXJyb3IgPSBMLkVycm9yXG5cbmxldCAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgIHwgRXJyb3IgZSAtPiBTb21lIChFcnJvci5tZXNzYWdlIGUpXG4gICAgfCBfIC0+IE5vbmUpXG4iLCJvcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEV4cGVjdGVkIG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IGZhaWwgbG9jIGV4cGVjdGVkID0gcmFpc2UgKEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSlcblxudHlwZSBjb250ZXh0ID0ge1xuICAoKiBbbWF0Y2hlZF0gY291bnRzIGhvdyBtYW55IGNvbnN0cnVjdG9ycyBoYXZlIGJlZW4gbWF0Y2hlZC4gVGhpcyBpcyB1c2VkIHRvIGZpbmQgd2hhdFxuICAgICBwYXR0ZXJuIG1hdGNoZXMgdGhlIG1vc3Qgc29tZSBwaWVjZSBvZiBhc3QgaW4gW0FzdF9wYXR0ZXJuLmFsdF0uIEluIHRoZSBjYXNlIHdoZXJlXG4gICAgIGFsbCBicmFuY2hlcyBmYWlsIHRvIG1hdGNoLCB3ZSByZXBvcnQgdGhlIGVycm9yIGZyb20gdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlXG4gICAgIG1vc3QuXG5cbiAgICAgVGhpcyBpcyBvbmx5IGluY3JlbWVudGVkIGJ5IGNvbWJpbmF0b3JzIHRoYXQgY2FuIGZhaWwuICopXG4gIG11dGFibGUgbWF0Y2hlZCA6IGludDtcbn1cblxudHlwZSAoJ21hdGNoZWRfdmFsdWUsICdrLCAna19yZXN1bHQpIHQgPVxuICB8IFQgb2YgKGNvbnRleHQgLT4gTG9jYXRpb24udCAtPiAnbWF0Y2hlZF92YWx1ZSAtPiAnayAtPiAna19yZXN1bHQpXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIE0gPVxuICBzdHJ1Y3RcbiAgICBsZXQgYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnBheWxvYWQgLT5cbiAgICAgICAgICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgYmluZGluZ19vcCB+bG9jICA9XG4gICAgICAoKGZ1biB+b3AgLT5cbiAgICAgICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgICAgICgoZnVuIH5leHAgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9vcCA9IG9wO1xuICAgICAgICAgICAgICAgICAgICBwYm9wX3BhdCA9IHBhdDtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9leHAgPSBleHA7XG4gICAgICAgICAgICAgICAgICAgIHBib3BfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjYXNlIH5saHMgID1cbiAgICAgICgoZnVuIH5ndWFyZCAtPlxuICAgICAgICAgICgoZnVuIH5yaHMgLT4geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfc3RydWN0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfZnVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9sZXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9pbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfdmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX21ldGhvZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX21ldGhvZCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX2luZm9zIH5sb2MgID1cbiAgICAgICgoZnVuIH52aXJ0IC0+XG4gICAgICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmICA9XG4gICAgICAoKGZ1biB+ZmllbGRzIC0+IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2NvbnN0ciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfc2lnbmF0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9hcnJvdyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2luaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl92YWwgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9tZXRob2QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfbWV0aG9kIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfY29uc3RyYWludCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnZhcnMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmFyZ3MgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5yZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfYXJyb3cgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF90dXBsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY29uc3RyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX29iamVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FsaWFzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcG9seSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcGFja2FnZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9zdHJpbmcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2ludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2lkZW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2Jvb2wgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29uc3RhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZnVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbWF0Y2ggfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9tYXRjaCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF90cnkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHVwbGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF92YXJpYW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9yZWNvcmQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZmllbGQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FycmF5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3doaWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZm9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKChmdW4geDQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29lcmNlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NlbmQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ldyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX292ZXJyaWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Fzc2VydCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xhenkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcG9seSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb2JqZWN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vYmplY3QgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbmV3dHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcGFjayB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRvcCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgICAgICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgaW5jbHVkZV9pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biBtb2RfIC0+XG4gICAgICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+bXV0YWJsZV8gLT5cbiAgICAgICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgICAgICAgICAgICAgcGxkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbGV0b3AgfmxldF8gID1cbiAgICAgICgoZnVuIH5hbmRzIC0+ICgoZnVuIH5ib2R5IC0+IHsgbGV0XzsgYW5kczsgYm9keSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBsb2NhdGlvbiB+c3RhcnQgID1cbiAgICAgICgoZnVuIH5lbmRfIC0+XG4gICAgICAgICAgKChmdW4gfmdob3N0IC0+XG4gICAgICAgICAgICAgIHsgbG9jX3N0YXJ0ID0gc3RhcnQ7IGxvY19lbmQgPSBlbmRfOyBsb2NfZ2hvc3QgPSBnaG9zdCB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbWJfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG1iX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHBtYl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1iX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbWRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG1kX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwbWRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtZF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9mdW5jdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfYXBwbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX3VucGFjayB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9zaWduYXR1cmUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV93aXRoIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3dpdGggKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfdHlwZW9mIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2FsaWFzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbXRkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3RhZyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBvZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb2luaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE9pbmhlcml0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3Blbl9pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICgoZnVuIH5vdmVycmlkZSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgICAgICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FueSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hbGlhcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FsaWFzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0YW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdGFudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9pbnRlcnZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R1cGxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfcmVjb3JkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FycmF5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9vciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R5cGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfbGF6eSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfbGF6eSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF91bnBhY2sgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3VucGFjayB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9leGNlcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4Y2VwdGlvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICA9XG4gICAgICAoKGZ1biB+bG51bSAtPlxuICAgICAgICAgICgoZnVuIH5ib2wgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNudW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2ZuYW1lID0gZm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gbG51bTtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IGJvbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJ0YWcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwcmZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcmluaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ192YWx1ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXh0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4Y2VwdGlvbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kdWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHVsZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kc3Vic3QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHR5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19pbmNsdWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2NsYXNzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19jbGFzc190eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzX3R5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9ldmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl92YWx1ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGV4dCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX21vZHR5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9pbmNsdWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfmFyZyAtPiB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNzdHJzIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB+bWFuaWZlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIGNvbnN0cnVjdG9yIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+cGF0aCAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNvbnN0cnVjdG9ycyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfYmluZGluZyB+bG9jICA9XG4gICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB2Yl9wYXQgPSBwYXQ7XG4gICAgICAgICAgICAgICAgcHZiX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHZiX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAgKChmdW4gfnByaW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgZW5kXG5tb2R1bGUgTWFrZShMb2M6c2lnIHZhbCBsb2MgOiBMb2NhdGlvbi50IGVuZCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgbG9jID0gTG9jLmxvY1xuICAgIGxldCBhdHRyaWJ1dGUgfm5hbWUgID1cbiAgICAgICgoZnVuIH5wYXlsb2FkIC0+XG4gICAgICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGJpbmRpbmdfb3Agfm9wICA9XG4gICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgKChmdW4gfmV4cCAtPlxuICAgICAgICAgICAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjYXNlIH5saHMgID1cbiAgICAgICgoZnVuIH5ndWFyZCAtPlxuICAgICAgICAgICgoZnVuIH5yaHMgLT4geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfc3RydWN0dXJlIHgwID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX3N0cnVjdHVyZSB4MCkgfVxuICAgIGxldCBwY2xfZnVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfYXBwbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2xldCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfaW5oZXJpdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfdmFsIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX3ZhbCB4MCkgfVxuICAgIGxldCBwY2ZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY2ZfY29uc3RyYWludCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9jb25zdHJhaW50IHgwKSB9XG4gICAgbGV0IHBjZl9pbml0aWFsaXplciB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9pbml0aWFsaXplciB4MCkgfVxuICAgIGxldCBwY2ZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwY2ZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2V4dGVuc2lvbiB4MCkgfVxuICAgIGxldCBjbGFzc19pbmZvcyB+dmlydCAgPVxuICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgICAgICAgICAgICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmICA9XG4gICAgICAoKGZ1biB+ZmllbGRzIC0+IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2NvbnN0ciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfc2lnbmF0dXJlIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfYXJyb3cgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9pbmhlcml0IHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dmFycyAtPlxuICAgICAgICAgICgoZnVuIH5hcmdzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5yZXMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgICAgICAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FueSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY29uc3RyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfb2JqZWN0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY2xhc3MgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FsaWFzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcG9seSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcG9seSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9wYWNrYWdlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wYWNrYWdlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZGlyX3N0cmluZyB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9XG4gICAgbGV0IHBkaXJfaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9pZGVudCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH1cbiAgICBsZXQgcGRpcl9ib29sIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9XG4gICAgbGV0IHBleHBfaWRlbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0YW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Z1bmN0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW5jdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FwcGx5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9tYXRjaCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHJ5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3ZhcmlhbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcmVjb3JkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZmllbGQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZpZWxkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NldGZpZWxkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VxdWVuY2UgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3doaWxlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF93aGlsZSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mb3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4geDQgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29lcmNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZW5kIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ldyB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb3ZlcnJpZGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX292ZXJyaWRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG1vZHVsZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfYXNzZXJ0IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hc3NlcnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGF6eSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wb2x5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX29iamVjdCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ld3R5cGUgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldG9wIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRvcCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF91bnJlYWNoYWJsZVxuICAgICAgfVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3Igfm5hbWUgID1cbiAgICAgICgoZnVuIH5raW5kIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBpbmNsdWRlX2luZm9zIG1vZF8gPVxuICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+bXV0YWJsZV8gLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICAgICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxldG9wIH5sZXRfICA9XG4gICAgICAoKGZ1biB+YW5kcyAtPiAoKGZ1biB+Ym9keSAtPiB7IGxldF87IGFuZHM7IGJvZHkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICA9XG4gICAgICAoKGZ1biB+ZW5kXyAtPlxuICAgICAgICAgICgoZnVuIH5naG9zdCAtPlxuICAgICAgICAgICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWUgID1cbiAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtYl9sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1kX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1kX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbWRfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2lkZW50IHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9pZGVudCB4MCkgfVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2Rfc3RydWN0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2Z1bmN0b3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9hcHBseSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfdW5wYWNrIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApIH1cbiAgICBsZXQgcG1vZF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9pZGVudCB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApIH1cbiAgICBsZXQgcG10eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9mdW5jdG9yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfd2l0aCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3R5cGVvZiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfdHlwZW9mIHgwKSB9XG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfYWxpYXMgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKSB9XG4gICAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdGRfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBvdGFnIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPdGFnICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb2luaGVyaXQgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5leHByICA9XG4gICAgICAoKGZ1biB+b3ZlcnJpZGUgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfYW55ID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3JlY29yZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90eXBlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICA9XG4gICAgICAoKGZ1biB+bG51bSAtPlxuICAgICAgICAgICgoZnVuIH5ib2wgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNudW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2ZuYW1lID0gZm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gbG51bTtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IGJvbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJ0YWcgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcmZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCByaW5oZXJpdCB4MCA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9XG4gICAgbGV0IHBzaWdfdmFsdWUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGUgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZSAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2RzdWJzdCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4geDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzcyB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V2YWwgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfdmFsdWUgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH1cbiAgICBsZXQgcHN0cl90eXBlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGV4dCB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHN0cl9tb2R1bGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9yZWNtb2R1bGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdHlwZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9vcGVuIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH1cbiAgICBsZXQgcHN0cl9jbGFzc190eXBlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9pbmNsdWRlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHN0cl9leHRlbnNpb24geDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lICA9XG4gICAgICAoKGZ1biB+YXJnIC0+IHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICgoZnVuIH5jc3RycyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfnBhdGggID1cbiAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAoKGZ1biB+Y29uc3RydWN0b3JzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfYmluZGluZyB+cGF0ICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPSBwYXQ7XG4gICAgICAgICAgICBwdmJfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHZiX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICgoZnVuIH5wcmltIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgbG9jID0geyB0eHQgOiAnYTsgbG9jIDogTG9jYXRpb24udCB9XG5cbmxldCB0eHQgdCA9IHQudHh0XG5sZXQgbG9jIHQgPSB0LmxvY1xubGV0IG1ha2UgfmxvYyB0eHQgPSB7IGxvYzsgdHh0IH1cbmxldCBtYXAgdCB+ZiA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGxvbmdpZGVudCA9IExpZGVudCBvZiBzdHJpbmcgfCBMZG90IG9mIHQgKiBzdHJpbmcgfCBMYXBwbHkgb2YgdCAqIHRcblxuICBsZXQgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50X2NoYXIgPSBmdW5jdGlvblxuICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJ18nIHwgJ1xcJycgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBpc19ub3JtYWxfaWRlbnQgPSBmdW5jdGlvblxuICAgIHwgXCJhc3JcIiB8IFwibGFuZFwiIHwgXCJsb3JcIiB8IFwibHNsXCIgfCBcImxzclwiIHwgXCJseG9yXCIgfCBcIm1vZFwiIHwgXCJvclwiIC0+IGZhbHNlXG4gICAgfCBzdHJpbmcgLT4gU3RyaW5nLmZvcl9hbGwgc3RyaW5nIH5mOmlzX25vcm1hbF9pZGVudF9jaGFyXG5cbiAgbGV0IHNob3J0X25hbWUgc3RyaW5nID1cbiAgICBpZiBpc19ub3JtYWxfaWRlbnQgc3RyaW5nIHRoZW4gc3RyaW5nIGVsc2UgXCIoIFwiIF4gc3RyaW5nIF4gXCIgKVwiXG5cbiAgbGV0IHJlYyBuYW1lID0gZnVuY3Rpb25cbiAgICB8IExpZGVudCBzIC0+IHNob3J0X25hbWUgc1xuICAgIHwgTGRvdCAoYSwgYikgLT4gbmFtZSBhIF4gXCIuXCIgXiBzaG9ydF9uYW1lIGJcbiAgICB8IExhcHBseSAoYSwgYikgLT4gUHJpbnRmLnNwcmludGYgXCIlcyglcylcIiAobmFtZSBhKSAobmFtZSBiKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAobmFtZSB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgcmVjIGZsYXQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcyA6OiBhY2N1XG4gIHwgTGRvdCAobGlkLCBzKSAtPiBmbGF0IChzIDo6IGFjY3UpIGxpZFxuICB8IExhcHBseSAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuTG9uZ2lkZW50LmZsYXR0ZW5cIlxuXG5sZXQgZmxhdHRlbl9leG4gbGlkID0gZmxhdCBbXSBsaWRcblxubGV0IGxhc3RfZXhuID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBzXG4gIHwgTGRvdCAoXywgcykgLT4gc1xuICB8IExhcHBseSAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuTG9uZ2lkZW50LmZsYXR0ZW5cIlxuXG5sZXQgdW5mbGF0dGVuIH5pbml0IGwgPSBMaXN0LmZvbGRfbGVmdCBsIH5pbml0IH5mOihmdW4gYWNjIHMgLT4gTGRvdCAoYWNjLCBzKSlcblxuKCogZm9yIGNhc2VzIHdpdGhvdXQgZG90dGVkIG9wZXJhdG9ycyAoZS5nLiBbcGFyc2UgXCJBLkIuQ1wiXSkgKilcbmxldCBwYXJzZV9zaW1wbGUgcyA9XG4gIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIHMgfnNlcDonLicgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IHMgOjogbCAtPiB1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsXG5cbigqIGhhbmRsZSBbXCJBLkIuKCsuKylcIl0gb3IgW1wiVmVjLiguJS4oKTwtKVwiXSAqKVxubGV0IHBhcnNlIHMgPVxuICBsZXQgaW52YWxpZCAoKSA9XG4gICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwiUHB4bGliLkxvbmdpZGVudC5wYXJzZTogJVNcIiBzKVxuICBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPCAxIHRoZW4gaW52YWxpZCAoKTtcbiAgbGV0IG9wZW5fcGFyID0gU3RyaW5nLmluZGV4X29wdCBzICcoJyBpblxuICBsZXQgY2xvc2VfcGFyID0gU3RyaW5nLmluZGV4X29wdCBzICcpJyBpblxuICBtYXRjaCAocy5bMF0sIG9wZW5fcGFyLCBjbG9zZV9wYXIpIHdpdGhcbiAgfCAoJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnXycpLCBOb25lLCBOb25lIC0+IHBhcnNlX3NpbXBsZSBzXG4gIHwgXywgTm9uZSwgTm9uZSAtPiBMaWRlbnQgcyAoKiBUaGlzIGlzIGEgcmF3IG9wZXJhdG9yLCBubyBtb2R1bGUgcGF0aCAqKVxuICB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+IGludmFsaWQgKClcbiAgfCBfLCBTb21lIGwsIFNvbWUgciAtPiAoXG4gICAgICBpZiBJbnQuKHIgPD4gU3RyaW5nLmxlbmd0aCBzIC0gMSkgdGhlbiBpbnZhbGlkICgpO1xuICAgICAgbGV0IGdyb3VwID1cbiAgICAgICAgaWYgSW50LihyID0gbCArIDEpIHRoZW4gXCIoKVwiXG4gICAgICAgIGVsc2UgU3RyaW5nLnRyaW0gKFN0cmluZy5zdWIgcyB+cG9zOihsICsgMSkgfmxlbjoociAtIGwgLSAxKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQuKGwgPSAwKSB0aGVuIExpZGVudCBncm91cFxuICAgICAgZWxzZSBpZiBDaGFyLihzLltsIC0gMV0gPD4gJy4nKSB0aGVuIGludmFsaWQgKClcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGJlZm9yZSA9IFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjoobCAtIDEpIGluXG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIGJlZm9yZSB+c2VwOicuJyB3aXRoXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgcyA6OiBsIC0+IExkb3QgKHVuZmxhdHRlbiB+aW5pdDooTGlkZW50IHMpIGwsIGdyb3VwKSlcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlIChUKVxubW9kdWxlIFNldCA9IFNldC5NYWtlIChUKVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBEZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBMb2NhdGVkID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTG9jLnRcblxuICAgIGxldCBsb2MgKHggOiBfIHQpID0geC5sb2NcbiAgICBsZXQgbWsgfmxvYyB4ID0geyBsb2M7IHR4dCA9IHggfVxuICAgIGxldCBtYXAgZiB0ID0geyB0IHdpdGggdHh0ID0gZiB0LnR4dCB9XG4gICAgbGV0IG1hcF9saWRlbnQgeCA9IG1hcCAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4XG4gICAgbGV0IGxpZGVudCB+bG9jIHggPSBtayB+bG9jIChMb25naWRlbnQucGFyc2UgeClcbiAgZW5kXG5cbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTVxuXG4gIG1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgPSBwcGF0X2NvbnN0cnVjdFxuXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnZhcnMgfmFyZ3MgfnJlcyAoKSA9XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLS0gc3RhYmxlIGxheWVyIGFib3ZlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NIC0tLS0tKilcbiAgbGV0IHBwYXRfY29uc3RydWN0IH5sb2MgbGlkIHAgPVxuICAgIHtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJ1Y3QgKGxpZCwgT3B0aW9uLm1hcCBwIH5mOihmdW4gcCAtPiAoW10sIHApKSk7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbiAgbGV0IHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCB2YnMgLT4gWyBwc3RyX3ZhbHVlIH5sb2MgcmVjX2ZsYWcgdmJzIF1cblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfmxvYzpfIH5uYW1lOl8gfnBhcmFtczpfIH5jc3RyczpfIH5raW5kOl9cbiAgICAgIH5wcml2YXRlXzpfIH5tYW5pZmVzdDpfID1cbiAgICBmYWlsd2l0aFxuICAgICAgXCJQcHhsaWIuQXN0X2J1aWxkZXIubm9ucmVjX3R5cGVfZGVjbGFyYXRpb246IGRvbid0IHVzZSB0aGlzIGZ1bmN0aW9uXCJcblxuICBsZXQgZWludCB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQudG9fc3RyaW5nIHQsIE5vbmUpKVxuICBsZXQgZWNoYXIgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfY2hhciB0KVxuICBsZXQgZXN0cmluZyB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9zdHJpbmcgKHQsIGxvYywgTm9uZSkpXG4gIGxldCBlZmxvYXQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfZmxvYXQgKHQsIE5vbmUpKVxuXG4gIGxldCBlaW50MzIgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgdCwgU29tZSAnbCcpKVxuXG4gIGxldCBlaW50NjQgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgdCwgU29tZSAnTCcpKVxuXG4gIGxldCBlbmF0aXZlaW50IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB0LCBTb21lICduJykpXG5cbiAgbGV0IHBpbnQgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IHBjaGFyIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IHBzdHJpbmcgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgcGZsb2F0IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgcGludDMyIH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgcGludDY0IH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgcG5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBlYm9vbCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IHBib29sIH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyAoQm9vbC50b19zdHJpbmcgdCkpIE5vbmVcblxuICBsZXQgZXZhciB+bG9jIHYgPSBwZXhwX2lkZW50IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHYpKVxuICBsZXQgcHZhciB+bG9jIHYgPSBwcGF0X3ZhciB+bG9jIChMb2NhdGVkLm1rIH5sb2MgdilcbiAgbGV0IGV1bml0IH5sb2MgPSBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcHVuaXQgfmxvYyA9IHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiKSBOb25lXG4gIGxldCBwZXhwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHB0eXBfdHVwbGUgfmxvYyBsXG5cbiAgbGV0IHBleHBfdHVwbGVfb3B0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoIFtdIC0+IE5vbmUgfCBfIDo6IF8gLT4gU29tZSAocGV4cF90dXBsZSB+bG9jIGwpXG5cbiAgbGV0IHBwYXRfdHVwbGVfb3B0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoIFtdIC0+IE5vbmUgfCBfIDo6IF8gLT4gU29tZSAocHBhdF90dXBsZSB+bG9jIGwpXG5cbiAgbGV0IHB0eXBfcG9seSB+bG9jIHZhcnMgdHkgPVxuICAgIG1hdGNoIHZhcnMgd2l0aCBbXSAtPiB0eSB8IF8gLT4gcHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuXG4gIGxldCBwZXhwX2FwcGx5IH5sb2MgZSBlbCA9XG4gICAgbWF0Y2ggKGUsIGVsKSB3aXRoXG4gICAgfCBfLCBbXSAtPiBlXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGUsIGFyZ3MpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9LCBfIC0+XG4gICAgICAgIHsgZSB3aXRoIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGUsIGFyZ3MgQCBlbCkgfVxuICAgIHwgXyAtPiBwZXhwX2FwcGx5IH5sb2MgZSBlbFxuXG4gIGxldCBlYXBwbHkgfmxvYyBlIGVsID1cbiAgICBwZXhwX2FwcGx5IH5sb2MgZSAoTGlzdC5tYXAgZWwgfmY6KGZ1biBlIC0+IChBc3R0eXBlcy5Ob2xhYmVsLCBlKSkpXG5cbiAgbGV0IGVhYnN0cmFjdCB+bG9jIHBzIGUgPVxuICAgIExpc3QuZm9sZF9yaWdodCBwcyB+aW5pdDplIH5mOihmdW4gcCBlIC0+XG4gICAgICAgIHBleHBfZnVuIH5sb2MgQXN0dHlwZXMuTm9sYWJlbCBOb25lIHAgZSlcblxuICBsZXQgZXNlcXVlbmNlIH5sb2MgZWwgPVxuICAgIG1hdGNoIExpc3QucmV2IGVsIHdpdGhcbiAgICB8IFtdIC0+IGV1bml0IH5sb2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHRsIH5pbml0OmhkIH5mOihmdW4gYWNjIGUgLT4gcGV4cF9zZXF1ZW5jZSB+bG9jIGUgYWNjKVxuXG4gIGxldCBwY29uc3RydWN0IGNkIGFyZyA9XG4gICAgcHBhdF9jb25zdHJ1Y3QgfmxvYzpjZC5wY2RfbG9jIChMb2NhdGVkLm1hcF9saWRlbnQgY2QucGNkX25hbWUpIGFyZ1xuXG4gIGxldCBlY29uc3RydWN0IGNkIGFyZyA9XG4gICAgcGV4cF9jb25zdHJ1Y3QgfmxvYzpjZC5wY2RfbG9jIChMb2NhdGVkLm1hcF9saWRlbnQgY2QucGNkX25hbWUpIGFyZ1xuXG4gIGxldCByZWMgZWxpc3QgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgcGV4cF9jb25zdHJ1Y3QgfmxvY1xuICAgICAgICAgIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCI6OlwiKSlcbiAgICAgICAgICAoU29tZSAocGV4cF90dXBsZSB+bG9jIFsgeDsgZWxpc3QgfmxvYyBsIF0pKVxuXG4gIGxldCByZWMgcGxpc3QgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvY1xuICAgICAgICAgIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCI6OlwiKSlcbiAgICAgICAgICAoU29tZSAocHBhdF90dXBsZSB+bG9jIFsgeDsgcGxpc3QgfmxvYyBsIF0pKVxuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IH5sb2MgKGlkZW50IDogTG9uZ2lkZW50LnQpIH5mID1cbiAgICBtYXRjaCBpZGVudCB3aXRoXG4gICAgfCBMaWRlbnQgbiAtPiBwZXhwX2lkZW50IH5sb2MgeyB0eHQgPSBMaWRlbnQgKGYgbik7IGxvYyB9XG4gICAgfCBMZG90IChwYXRoLCBuKSAtPiBwZXhwX2lkZW50IH5sb2MgeyB0eHQgPSBMZG90IChwYXRoLCBmIG4pOyBsb2MgfVxuICAgIHwgTGFwcGx5IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bmV4cGVjdGVkIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZVwiXG5cbiAgbGV0IHR5cGVfY29uc3RyX2NvbnYgfmxvYzphcHBseV9sb2MgeyBMb2MubG9jOyB0eHQgPSBsb25naWRlbnQgfSB+ZiBhcmdzID1cbiAgICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCAobG9uZ2lkZW50IDogTG9uZ2lkZW50LnQpIHdpdGhcbiAgICB8IExpZGVudCBfIHwgTGRvdCAoKExpZGVudCBfIHwgTGRvdCBfKSwgXykgfCBMYXBwbHkgXyAtPiAoXG4gICAgICAgIGxldCBpZGVudCA9XG4gICAgICAgICAgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSBsb25naWRlbnQgfmxvYyB+ZlxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpZGVudFxuICAgICAgICB8IF8gOjogXyAtPiBlYXBwbHkgfmxvYzphcHBseV9sb2MgaWRlbnQgYXJncylcbiAgICB8IExkb3QgKChMYXBwbHkgXyBhcyBtb2R1bGVfcGF0aCksIG4pIC0+XG4gICAgICAgIGxldCBzdWZmaXhfbiBmdW5jdG9yXyA9IFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZnVuY3Rvcl8gXiBcIl9fXCIgXiBuIGluXG4gICAgICAgIGxldCByZWMgZ2F0aGVyX2xhcHBseSBmdW5jdG9yX2FyZ3MgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCAqIF8gPVxuICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgfCBMYXBwbHkgKHJlc3QsIGFyZykgLT4gZ2F0aGVyX2xhcHBseSAoYXJnIDo6IGZ1bmN0b3JfYXJncykgcmVzdFxuICAgICAgICAgIHwgTGlkZW50IGZ1bmN0b3JfIC0+IChMaWRlbnQgKHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICAgIHwgTGRvdCAoZnVuY3Rvcl9wYXRoLCBmdW5jdG9yXykgLT5cbiAgICAgICAgICAgICAgKExkb3QgKGZ1bmN0b3JfcGF0aCwgc3VmZml4X24gZnVuY3Rvcl8pLCBmdW5jdG9yX2FyZ3MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpZGVudCwgZnVuY3Rvcl9hcmdzID0gZ2F0aGVyX2xhcHBseSBbXSBtb2R1bGVfcGF0aCBpblxuICAgICAgICBlYXBwbHkgfmxvYzphcHBseV9sb2NcbiAgICAgICAgICAodW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSBpZGVudCB+bG9jIH5mKVxuICAgICAgICAgIChMaXN0Lm1hcCBmdW5jdG9yX2FyZ3MgfmY6KGZ1biBwYXRoIC0+XG4gICAgICAgICAgICAgICBwZXhwX3BhY2sgfmxvYyAocG1vZF9pZGVudCB+bG9jIHsgdHh0ID0gcGF0aDsgbG9jIH0pKVxuICAgICAgICAgIEAgYXJncylcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBsb25naWRlbnQgfmYgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgbG9uZ2lkZW50IH5sb2MgfmYgW11cblxuICBsZXQgZXRhX3JlZHVjZSA9XG4gICAgbGV0IHJlYyBnYXRoZXJfcGFyYW1zIGFjYyBleHByID1cbiAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgfCB7XG4gICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgIFBleHBfZnVuIChsYWJlbCwgTm9uZSAoKiBubyBkZWZhdWx0IGV4cHJlc3Npb24gKiksIHN1YnBhdCwgYm9keSk7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgIH0gLT4gKFxuICAgICAgICAgIG1hdGNoIHN1YnBhdCB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIG5hbWU7XG4gICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgTm9uZSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIHR5ICk7XG4gICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICgqIFdlIHJlZHVjZSBbZnVuICh4IDogdHkpIC0+IGYgeF0gYnkgcmV3cml0aW5nIGl0IFsoZiA6IHR5IC0+IF8pXS4gKilcbiAgICAgICAgICAgICAgZ2F0aGVyX3BhcmFtcyAoKGxhYmVsLCBuYW1lLCBTb21lIHR5KSA6OiBhY2MpIGJvZHlcbiAgICAgICAgICB8IF8gLT4gKExpc3QucmV2IGFjYywgZXhwcikpXG4gICAgICB8IF8gLT4gKExpc3QucmV2IGFjYywgZXhwcilcbiAgICBpblxuICAgIGxldCBhbm5vdGF0ZSB+bG9jIGV4cHIgcGFyYW1zID1cbiAgICAgIGlmIExpc3QuZXhpc3RzIHBhcmFtcyB+ZjooZnVuIChfLCBfLCB0eSkgLT4gT3B0aW9uLmlzX3NvbWUgdHkpIHRoZW5cbiAgICAgICAgbGV0IHR5ID1cbiAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQgcGFyYW1zIH5pbml0OihwdHlwX2FueSB+bG9jKVxuICAgICAgICAgICAgfmY6KGZ1biAocGFyYW1fbGFiZWwsIHBhcmFtLCB0eV9vcHQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgbG9jID0gcGFyYW0ubG9jIGluXG4gICAgICAgICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdHlfb3B0IHdpdGggTm9uZSAtPiBwdHlwX2FueSB+bG9jIHwgU29tZSB0eSAtPiB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwdHlwX2Fycm93IH5sb2MgcGFyYW1fbGFiZWwgdHkgYWNjKVxuICAgICAgICBpblxuICAgICAgICBwZXhwX2NvbnN0cmFpbnQgfmxvYyBleHByIHR5XG4gICAgICBlbHNlIGV4cHJcbiAgICBpblxuICAgIGxldCByZWMgZ2F0aGVyX2FyZ3MgbiB4ID1cbiAgICAgIGlmIG4gPSAwIHRoZW4gU29tZSAoeCwgW10pXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGJvZHksIGFyZ3MpO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGFyZ3MgPD0gbiB0aGVuXG4gICAgICAgICAgICAgIG1hdGNoIGdhdGhlcl9hcmdzIChuIC0gTGlzdC5sZW5ndGggYXJncykgYm9keSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSAoYm9keSwgYXJncycpIC0+IFNvbWUgKGJvZHksIGFyZ3MnIEAgYXJncylcbiAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgZnVuIGV4cHIgLT5cbiAgICAgIGxldCBwYXJhbXMsIGJvZHkgPSBnYXRoZXJfcGFyYW1zIFtdIGV4cHIgaW5cbiAgICAgIG1hdGNoIGdhdGhlcl9hcmdzIChMaXN0Lmxlbmd0aCBwYXJhbXMpIGJvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gYXMgZl9pZGVudCksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsMiBhcmdzIHBhcmFtc1xuICAgICAgICAgICAgICB+ZjooZnVuIChhcmdfbGFiZWwsIGFyZykgKHBhcmFtX2xhYmVsLCBwYXJhbSwgXykgLT5cbiAgICAgICAgICAgICAgICBQb2x5LiggPSApIChhcmdfbGFiZWwgOiBhcmdfbGFiZWwpIHBhcmFtX2xhYmVsXG4gICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IG5hbWUnOyBfIH07XG4gICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAgIFN0cmluZy4oID0gKSBuYW1lJyBwYXJhbS50eHRcbiAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgIHwgdHJ1ZSAtPiBTb21lIChhbm5vdGF0ZSB+bG9jOmV4cHIucGV4cF9sb2MgZl9pZGVudCBwYXJhbXMpKVxuICAgICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSBleHByID0gT3B0aW9uLnZhbHVlIChldGFfcmVkdWNlIGV4cHIpIH5kZWZhdWx0OmV4cHJcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIGV4cHIgfnJlY19mbGFnID1cbiAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgfCBSZWN1cnNpdmUgLT4gZXhwclxuICAgIHwgTm9ucmVjdXJzaXZlIC0+IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwclxuZW5kXG5cbm1vZHVsZSB0eXBlIExvYyA9IEFzdF9idWlsZGVyX2ludGYuTG9jXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9pbnRmLlNcblxuICBtb2R1bGUgTGF0ZXN0IDogc2lnXG4gICAgdmFsIHBwYXRfY29uc3RydWN0IDpcbiAgICAgIGxvbmdpZGVudCBsb2MgLT4gKGxhYmVsIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uIC0+IHBhdHRlcm5cblxuICAgIHZhbCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgICAgdmFyczpsYWJlbCBsb2MgbGlzdCAtPlxuICAgICAgYXJnczpjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICAgIHJlczpjb3JlX3R5cGUgb3B0aW9uIC0+XG4gICAgICB1bml0IC0+XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICBlbmRcblxuICB2YWwgcHBhdF9jb25zdHJ1Y3QgOiBsb25naWRlbnQgbG9jIC0+IHBhdHRlcm4gb3B0aW9uIC0+IHBhdHRlcm5cblxuICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIG5hbWU6bGFiZWwgbG9jIC0+XG4gICAgYXJnczpjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG5lbmRcblxubW9kdWxlIE1ha2UgKExvYyA6IHNpZ1xuICB2YWwgbG9jIDogTG9jYXRpb24udFxuZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTWFrZSAoTG9jKVxuXG4gIG1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgPSBwcGF0X2NvbnN0cnVjdFxuXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfnZhcnMgfmFyZ3MgfnJlc1xuICBlbmRcblxuICAoKi0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTWFrZSAoTG9jKSAtLS0tLSopXG5cbiAgbGV0IHBwYXRfY29uc3RydWN0IGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfmFyZ3MgfnJlcyA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSBbXTtcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgPSBEZWZhdWx0LnBzdHJfdmFsdWVfbGlzdFxuXG4gIGxldCBub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSB+cGFyYW1zIH5jc3RycyB+a2luZCB+cHJpdmF0ZV8gfm1hbmlmZXN0ID1cbiAgICBEZWZhdWx0Lm5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfXG4gICAgICB+bWFuaWZlc3RcblxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVmYXVsdC5Mb2NhdGVkXG5cbiAgICBsZXQgbG9jIF8gPSBMb2MubG9jXG4gICAgbGV0IG1rIHggPSBtayB+bG9jOkxvYy5sb2MgeFxuICAgIGxldCBsaWRlbnQgeCA9IGxpZGVudCB+bG9jOkxvYy5sb2MgeFxuICBlbmRcblxuICBsZXQgcGV4cF90dXBsZSBsID0gRGVmYXVsdC5wZXhwX3R1cGxlIH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZSBsID0gRGVmYXVsdC5wcGF0X3R1cGxlIH5sb2MgbFxuICBsZXQgcHR5cF90dXBsZSBsID0gRGVmYXVsdC5wdHlwX3R1cGxlIH5sb2MgbFxuICBsZXQgcGV4cF90dXBsZV9vcHQgbCA9IERlZmF1bHQucGV4cF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlX29wdCBsID0gRGVmYXVsdC5wcGF0X3R1cGxlX29wdCB+bG9jIGxcbiAgbGV0IHB0eXBfcG9seSB2YXJzIHR5ID0gRGVmYXVsdC5wdHlwX3BvbHkgfmxvYyB2YXJzIHR5XG4gIGxldCBwZXhwX2FwcGx5IGUgZWwgPSBEZWZhdWx0LnBleHBfYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlaW50IHQgPSBEZWZhdWx0LmVpbnQgfmxvYyB0XG4gIGxldCBlY2hhciB0ID0gRGVmYXVsdC5lY2hhciB+bG9jIHRcbiAgbGV0IGVzdHJpbmcgdCA9IERlZmF1bHQuZXN0cmluZyB+bG9jIHRcbiAgbGV0IGVmbG9hdCB0ID0gRGVmYXVsdC5lZmxvYXQgfmxvYyB0XG4gIGxldCBlaW50MzIgdCA9IERlZmF1bHQuZWludDMyIH5sb2MgdFxuICBsZXQgZWludDY0IHQgPSBEZWZhdWx0LmVpbnQ2NCB+bG9jIHRcbiAgbGV0IGVuYXRpdmVpbnQgdCA9IERlZmF1bHQuZW5hdGl2ZWludCB+bG9jIHRcbiAgbGV0IGVib29sIHQgPSBEZWZhdWx0LmVib29sIH5sb2MgdFxuICBsZXQgZXZhciB0ID0gRGVmYXVsdC5ldmFyIH5sb2MgdFxuICBsZXQgcGludCB0ID0gRGVmYXVsdC5waW50IH5sb2MgdFxuICBsZXQgcGNoYXIgdCA9IERlZmF1bHQucGNoYXIgfmxvYyB0XG4gIGxldCBwc3RyaW5nIHQgPSBEZWZhdWx0LnBzdHJpbmcgfmxvYyB0XG4gIGxldCBwZmxvYXQgdCA9IERlZmF1bHQucGZsb2F0IH5sb2MgdFxuICBsZXQgcGludDMyIHQgPSBEZWZhdWx0LnBpbnQzMiB+bG9jIHRcbiAgbGV0IHBpbnQ2NCB0ID0gRGVmYXVsdC5waW50NjQgfmxvYyB0XG4gIGxldCBwbmF0aXZlaW50IHQgPSBEZWZhdWx0LnBuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBwYm9vbCB0ID0gRGVmYXVsdC5wYm9vbCB+bG9jIHRcbiAgbGV0IHB2YXIgdCA9IERlZmF1bHQucHZhciB+bG9jIHRcbiAgbGV0IGV1bml0ID0gRGVmYXVsdC5ldW5pdCB+bG9jXG4gIGxldCBwdW5pdCA9IERlZmF1bHQucHVuaXQgfmxvY1xuICBsZXQgZWNvbnN0cnVjdCA9IERlZmF1bHQuZWNvbnN0cnVjdFxuICBsZXQgcGNvbnN0cnVjdCA9IERlZmF1bHQucGNvbnN0cnVjdFxuICBsZXQgZWFwcGx5IGUgZWwgPSBEZWZhdWx0LmVhcHBseSB+bG9jIGUgZWxcbiAgbGV0IGVhYnN0cmFjdCBwcyBlID0gRGVmYXVsdC5lYWJzdHJhY3QgfmxvYyBwcyBlXG4gIGxldCBlc2VxdWVuY2UgZWwgPSBEZWZhdWx0LmVzZXF1ZW5jZSB+bG9jIGVsXG4gIGxldCBlbGlzdCBsID0gRGVmYXVsdC5lbGlzdCB+bG9jIGxcbiAgbGV0IHBsaXN0IGwgPSBEZWZhdWx0LnBsaXN0IH5sb2MgbFxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IGlkZW50IH5mIGFyZ3MgPVxuICAgIERlZmF1bHQudHlwZV9jb25zdHJfY29udiB+bG9jIGlkZW50IH5mIGFyZ3NcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgaWRlbnQgfmYgPVxuICAgIERlZmF1bHQudW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZlxuXG4gIGxldCBldGFfcmVkdWNlID0gRGVmYXVsdC5ldGFfcmVkdWNlXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlID0gRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyA9XG4gICAgRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbmVuZFxuXG5sZXQgbWFrZSBsb2MgPVxuICAobW9kdWxlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBsb2MgPSBsb2NcbiAgZW5kKSA6IFMpXG4iLCIoKiogU21hbGwgaGVscGVyIHRvIGZpbmQgb3V0IHdobyBpcyB0aGUgY2FsbGVyIG9mIGEgZnVuY3Rpb24gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgUHJpbnRleGMgPSBTdGRsaWIuUHJpbnRleGNcblxudHlwZSB0ID0gUHJpbnRleGMubG9jYXRpb24gb3B0aW9uXG5cbmxldCBnZXQgfnNraXAgPVxuICBsZXQgc2tpcCA9IF9fRklMRV9fIDo6IHNraXAgaW5cbiAgbGV0IHN0YWNrID0gUHJpbnRleGMuZ2V0X2NhbGxzdGFjayAxNiBpblxuICBsZXQgbGVuID0gUHJpbnRleGMucmF3X2JhY2t0cmFjZV9sZW5ndGggc3RhY2sgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID0gbGVuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Qgc3RhY2sgcG9zXG4gICAgICAgIHw+IFByaW50ZXhjLmNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IHw+IFByaW50ZXhjLlNsb3QubG9jYXRpb25cbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgbG9jIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gfnNldDpza2lwIGxvYy5maWxlbmFtZSB0aGVuIGxvb3AgKHBvcyArIDEpIGVsc2UgU29tZSBsb2NcbiAgaW5cbiAgbG9vcCAwXG4iLCIoKiogSGVscGVycyB0byBwcm92aWRlIGhpbnRzIHRvIFBQWCB1c2VycyBmb3IgdHlwb3Mgb3Igc3BlbGxjaGVja3MuICopXG5cbm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gQ3V0b2ZmX21ldFxuXG4oKiBBcyBmb3VuZCBoZXJlIGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9MZXZlbnNodGVpbl9kaXN0YW5jZSNPQ2FtbCAqKVxubGV0IGxldmVuc2h0ZWluX2Rpc3RhbmNlIHMgdCBjdXRvZmYgPVxuICBsZXQgbSA9IFN0cmluZy5sZW5ndGggcyBhbmQgbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICBpZiBjdXRvZmYgPSAwIHx8IGFicyAobSAtIG4pID49IGN1dG9mZiB0aGVuIE5vbmVcbiAgZWxzZVxuICAgICgqIGZvciBhbGwgaSBhbmQgaiwgZC4oaSkuKGopIHdpbGwgaG9sZCB0aGUgTGV2ZW5zaHRlaW4gZGlzdGFuY2UgYmV0d2VlbiB0aGVcbiAgICAgICBmaXJzdCBpIGNoYXJhY3RlcnMgb2YgcyBhbmQgdGhlIGZpcnN0IGogY2hhcmFjdGVycyBvZiB0ICopXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlX21hdHJpeCB+ZGlteDoobSArIDEpIH5kaW15OihuICsgMSkgMCBpblxuICAgIGZvciBpID0gMCB0byBtIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IGZpcnN0IHN0cmluZyB0byBhbiBlbXB0eSBzZWNvbmQgc3RyaW5nICopXG4gICAgICBkLihpKS4oMCkgPC0gaVxuICAgIGRvbmU7XG4gICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICgqIHRoZSBkaXN0YW5jZSBvZiBhbnkgc2Vjb25kIHN0cmluZyB0byBhbiBlbXB0eSBmaXJzdCBzdHJpbmcgKilcbiAgICAgIGQuKDApLihqKSA8LSBqXG4gICAgZG9uZTtcbiAgICAoKiB0aGUgbWluaW11bSBvZiBlYWNoIGxpbmUgdG9nZXRoZXIgd2l0aCB0aGUgY29sdW1uIGluZGV4IHdpbGwgYmUgdXNlZFxuICAgICAgIHRvIG5vdGljZSBjdXRvZmYgZXhjZWVkaW5nIGFuZCByZXR1cm4gZWFybHkgaW4gdGhhdCBjYXNlICopXG4gICAgbGV0IGxpbmVfbWluID0gcmVmIDAgaW5cbiAgICBsZXQgZGlzdGFuY2UgPVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMSB0byBuIGRvXG4gICAgICAgICAgaWYgIWxpbmVfbWluID49IGN1dG9mZiAtIDEgJiYgaiA+PSBjdXRvZmYgLSAxIHRoZW4gcmFpc2UgQ3V0b2ZmX21ldDtcbiAgICAgICAgICBsaW5lX21pbiA6PSBtYXggbSBuO1xuICAgICAgICAgIGZvciBpID0gMSB0byBtIGRvXG4gICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICBpZiBDaGFyLmVxdWFsIHMuW2kgLSAxXSB0LltqIC0gMV0gdGhlbiBkLihpIC0gMSkuKGogLSAxKVxuICAgICAgICAgICAgICAgICgqIG5vIG9wZXJhdGlvbiByZXF1aXJlZCAqKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWluXG4gICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqKSArIDEpICgqIGEgZGVsZXRpb24gKilcbiAgICAgICAgICAgICAgICAgIChtaW5cbiAgICAgICAgICAgICAgICAgICAgIChkLihpKS4oaiAtIDEpICsgMSkgKCogYW4gaW5zZXJ0aW9uICopXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqIC0gMSkgKyAxKSAoKiBhIHN1YnN0aXR1dGlvbiAqKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBkLihpKS4oaikgPC0gdmFsdWU7XG4gICAgICAgICAgICBsaW5lX21pbiA6PSBtaW4gIWxpbmVfbWluIHZhbHVlXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lO1xuICAgICAgICBpZiBkLihtKS4obikgPCBjdXRvZmYgdGhlbiBTb21lIGQuKG0pLihuKSBlbHNlIE5vbmVcbiAgICAgIHdpdGggQ3V0b2ZmX21ldCAtPiBOb25lXG4gICAgaW5cbiAgICBkaXN0YW5jZVxuXG5sZXQgc3BlbGxjaGVjayBuYW1lcyBuYW1lID1cbiAgbGV0IGN1dG9mZiA9XG4gICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBuYW1lIHdpdGhcbiAgICB8IDEgfCAyIC0+IDBcbiAgICB8IDMgfCA0IC0+IDFcbiAgICB8IDUgfCA2IC0+IDJcbiAgICB8IF8gLT4gM1xuICBpblxuICBsZXQgXywgc3VnZ2VzdGlvbnMgPVxuICAgIExpc3QuZm9sZF9sZWZ0IG5hbWVzIH5pbml0OihJbnQubWF4X2ludCwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKChiZXN0X2Rpc3RhbmNlLCBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSBhcyBhY2MpIHJlZ2lzdGVyZWRfbmFtZSAtPlxuICAgICAgICBtYXRjaCBsZXZlbnNodGVpbl9kaXN0YW5jZSBuYW1lIHJlZ2lzdGVyZWRfbmFtZSBjdXRvZmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBkaXN0IC0+XG4gICAgICAgICAgICBpZiBkaXN0IDwgYmVzdF9kaXN0YW5jZSB0aGVuIChkaXN0LCBbIHJlZ2lzdGVyZWRfbmFtZSBdKVxuICAgICAgICAgICAgZWxzZSBpZiBkaXN0ID4gYmVzdF9kaXN0YW5jZSB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoZGlzdCwgcmVnaXN0ZXJlZF9uYW1lIDo6IG5hbWVzX2F0X2Jlc3RfZGlzdGFuY2UpKVxuICBpblxuICBtYXRjaCBMaXN0LnJldiBzdWdnZXN0aW9ucyB8PiBMaXN0LmZpbHRlciB+ZjooU3RyaW5nLiggPD4gKSBuYW1lKSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGxhc3QgOjogcmV2X3Jlc3QgLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiSGludDogRGlkIHlvdSBtZWFuICVzJXMlcz9cIlxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTGlzdC5yZXYgcmV2X3Jlc3QpKVxuICAgICAgICAgICAoaWYgTGlzdC5pc19lbXB0eSByZXZfcmVzdCB0aGVuIFwiXCIgZWxzZSBcIiBvciBcIilcbiAgICAgICAgICAgbGFzdClcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcblxubGV0IGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mID1cbiAgbGV0IHJlYyBjb2xsYXBzZV9hZnRlcl9hdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBpZiAobm90IChTdHJpbmcuaXNfZW1wdHkgcGFydCkpICYmIENoYXIuZXF1YWwgcGFydC5bMF0gJ0AnIHRoZW5cbiAgICAgICAgICBbIFN0cmluZy5jb25jYXQgKFN0cmluZy5kcm9wX3ByZWZpeCBwYXJ0IDEgOjogcGFydHMpIH5zZXA6XCIuXCIgXVxuICAgICAgICBlbHNlIHBhcnQgOjogY29sbGFwc2VfYWZ0ZXJfYXQgcGFydHNcbiAgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBwYXJ0cyA9XG4gICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBwYXJ0IDo6IHBhcnRzIC0+XG4gICAgICAgIGxvb3AgKGYgKFN0cmluZy5jb25jYXQgKHBhcnQgOjogcGFydHMpIH5zZXA6XCIuXCIpIGFjYykgcGFydHNcbiAgaW5cbiAgU3RyaW5nLnNwbGl0X29uX2NoYXIgbmFtZSB+c2VwOicuJyB8PiBjb2xsYXBzZV9hZnRlcl9hdCB8PiBsb29wIGFjY1xuXG5sZXQgZG90X3N1ZmZpeGVzIG5hbWUgPVxuICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OltdIH5mOihmdW4geCBhY2MgLT4geCA6OiBhY2MpXG5cbmxldCBzcGxpdF9wYXRoID1cbiAgbGV0IHJlYyBsb29wIHMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIChzLCBOb25lKVxuICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aCAnLicgLT4gYWZ0ZXJfZG90IHMgKGkgKyAxKSB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgYW5kIGFmdGVyX2RvdCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdBJyAuLiAnWicgLT4gKFN0cmluZy5wcmVmaXggcyAoaSAtIDEpLCBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggcyBpKSlcbiAgICAgIHwgJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSlcbiAgICAgIHwgXyAtPiBsb29wIHMgKGkgKyAxKVxuICBpblxuICBmdW4gcyAtPiBsb29wIHMgMFxuXG5tb2R1bGUgUGF0dGVybiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IG5hbWUgOiBzdHJpbmc7IGRvdF9zdWZmaXhlcyA6IFN0cmluZy5TZXQudCB9XG5cbiAgbGV0IG1ha2UgbmFtZSA9XG4gICAgeyBuYW1lOyBkb3Rfc3VmZml4ZXMgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKGRvdF9zdWZmaXhlcyBuYW1lKSB9XG5cbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgbWF0Y2hlcyB0IG1hdGNoZWQgPSBTdHJpbmcuU2V0Lm1lbSBtYXRjaGVkIHQuZG90X3N1ZmZpeGVzXG5lbmRcblxuKCogT24gdGhlIG5hbWVzcGFjZSBcImEuTkFNRVNQQUNFXCIsIHJldHVybiB0aGUgcGFpciAoXCJhXCIsIE5BTUVTUEFDRSkgKilcbmxldCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbmFtZSA9XG4gIG1hdGNoIFN0cmluZy5pbmRleF9vcHQgbmFtZSAnLicgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaSAtPlxuICAgICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIG5hbWUgaW5cbiAgICAgIGxldCBiZWZvcmVfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6MCB+bGVuOmkgaW5cbiAgICAgIGxldCBhZnRlcl9kb3QgPSBTdHJpbmcuc3ViIG5hbWUgfnBvczooaSArIDEpIH5sZW46KG4gLSBpIC0gMSkgaW5cbiAgICAgIFNvbWUgKGJlZm9yZV9kb3QsIGFmdGVyX2RvdClcblxubW9kdWxlIEFsbG93bGlzdGVkID0gc3RydWN0XG4gICgqIEFsbG93IGxpc3QgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLCBhcyB3ZWxsIGFzIGFsbCB0aGVpciBkb3Qgc3VmZml4ZXMuXG5cbiAgICAgU2luY2UgdGhlc2UgYXR0cmlidXRlcyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuXG4gICAgIFNhZGx5LCB0aGUgY29tcGlsZXIgc2lsZW50bHkgaWdub3JlcyB0aGVtIGlmIHRoZXkgYXJlIG1pc3BsYWNlZC4uLlxuICAqKVxuICBsZXQgY3JlYXRlX3NldCBmdWxseV9xdWFsaWZpZWRfbmFtZXMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICB+ZjooZnVuIGFjYyBuYW1lIC0+XG4gICAgICAgIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mOihmdW4geCBhY2MgLT4gU3RyaW5nLlNldC5hZGQgeCBhY2MpKVxuICAgICAgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSBmdWxseV9xdWFsaWZpZWRfbmFtZXNcblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgY3JlYXRlX3NldFxuICAgICAgW1xuICAgICAgICBcIm9jYW1sLmFsZXJ0XCI7XG4gICAgICAgIFwib2NhbWwuYm94ZWRcIjtcbiAgICAgICAgXCJvY2FtbC5kZXByZWNhdGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZF9tdXRhYmxlXCI7XG4gICAgICAgIFwib2NhbWwuZG9jXCI7XG4gICAgICAgIFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlNjRcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVkXCI7XG4gICAgICAgIFwib2NhbWwubG9jYWxcIjtcbiAgICAgICAgXCJvY2FtbC5ub2FsbG9jXCI7XG4gICAgICAgIFwib2NhbWwucHB3YXJuaW5nXCI7XG4gICAgICAgIFwib2NhbWwucmVtb3ZlX2FsaWFzZXNcIjtcbiAgICAgICAgXCJvY2FtbC5zcGVjaWFsaXNlXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZWRcIjtcbiAgICAgICAgXCJvY2FtbC50YWlsY2FsbFwiO1xuICAgICAgICBcIm9jYW1sLnRleHRcIjtcbiAgICAgICAgXCJvY2FtbC51bmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsZWRcIjtcbiAgICAgICAgXCJvY2FtbC51bnRhZ2dlZFwiO1xuICAgICAgICBcIm9jYW1sLndhcm5fb25fbGl0ZXJhbF9wYXR0ZXJuXCI7XG4gICAgICAgIFwib2NhbWwud2FybmVycm9yXCI7XG4gICAgICAgIFwib2NhbWwud2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICAgIFwidG9wbGV2ZWxfcHJpbnRlclwiICgqSW50ZXJwcmV0ZWQgYnkgdGhlIHRvcGxldmVsL3V0b3AqKTtcbiAgICAgIF1cblxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9ucy5cblxuICAgICBTaW5jZSB0aGVzZSBleHRlbnNpb25zIGFyZSBpbnRlcnByZXRlZCBieSB0aGUgY29tcGlsZXIgaXRzZWxmLCB3ZSBjYW5ub3QgY2hlY2tcbiAgICAgYXQgdGhlIGxldmVsIG9mIGEgcHB4IHJld3JpdGVyIHRoYXQgdGhleSBoYXZlIGJlZW4gcHJvcGVybHkgaW50ZXJwcmV0ZWQsIHNvXG4gICAgIHdlIGp1c3QgYWNjZXB0IHRoZW0gYW55d2hlcmUuXG4gICopXG4gIGxldCBleHRlbnNpb25zID0gY3JlYXRlX3NldCBbIFwib2NhbWwuZXJyb3JcIjsgXCJvY2FtbC5leHRlbnNpb25fY29uc3RydWN0b3JcIiBdXG5cbiAgbGV0IGlzX2FsbG93bGlzdGVkIH5raW5kIG5hbWUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEF0dHJpYnV0ZSAtPiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGF0dHJpYnV0ZXNcbiAgICB8IGBFeHRlbnNpb24gLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBleHRlbnNpb25zXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgYXR0cmlidXRlc1xuICBsZXQgZ2V0X2V4dGVuc2lvbl9saXN0ICgpID0gU3RyaW5nLlNldC5lbGVtZW50cyBleHRlbnNpb25zXG5lbmRcblxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBzdHJ1Y3RcbiAgdHlwZSByZXNlcnZlZCA9IChzdHJpbmcsIHN1Yl9uYW1lc3BhY2VzKSBIYXNodGJsLnRcbiAgYW5kIHN1Yl9uYW1lc3BhY2VzID0gQWxsIHwgU3ViX25hbWVzcGFjZXMgb2YgcmVzZXJ2ZWRcblxuICAoKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbQWxsXSwgdGhlbiBcInhcIiBhbmQgYWxsIHBhdGhzIHRoYXRcbiAgICogc3RhcnQgd2l0aCBcInguXCIgYXJlIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsXVxuICAgKlxuICAgKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbU3ViX25hbWVzcGFjZXMgdGJsJ10sIGFuZCBQIGlzXG4gICAqIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsJ10sIHRoZW4gYWxsIHBhdGhzIFwieC5QXCIgYXJlIHJlc2VydmVkIHdpdGhcbiAgICogcmVzcGVjdCB0byBbdGJsXS5cbiAgICopXG4gIGxldCBjcmVhdGVfcmVzZXJ2ZWQgKCkgOiByZXNlcnZlZCA9IEhhc2h0YmwuY3JlYXRlIDE2XG5cbiAgbGV0IHJlYyByZXNlcnZlIG5zIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5zIHdpdGhcbiAgICB8IE5vbmUgLT4gSGFzaHRibC5hZGRfZXhuIHRibCB+a2V5Om5zIH5kYXRhOkFsbFxuICAgIHwgU29tZSAob3V0ZXJfbnMsIHJlc3RfbnMpIC0+IChcbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBIYXNodGJsLmZpbmRfb3JfYWRkIHRibCBvdXRlcl9ucyB+ZGVmYXVsdDooZnVuICgpIC0+XG4gICAgICAgICAgICAgIFN1Yl9uYW1lc3BhY2VzIChjcmVhdGVfcmVzZXJ2ZWQgKCkpKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU3ViX25hbWVzcGFjZXMgcmVzdF90YmwgLT4gcmVzZXJ2ZSByZXN0X25zIHJlc3RfdGJsXG4gICAgICAgIHwgQWxsIC0+ICgpKVxuXG4gIGxldCByZWMgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgd2l0aFxuICAgIHwgU29tZSAobnMsIHJlc3QpIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbnMgd2l0aFxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsKSAtPlxuICAgICAgICAgICAgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyByZXN0IHJlc3RfdGJsXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IE5vbmUgLT4gZmFsc2UpXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbmFtZSB3aXRoXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIF8pIHwgTm9uZSAtPiBmYWxzZSlcblxuICBsZXQgdGJsID0gY3JlYXRlX3Jlc2VydmVkICgpXG4gIGxldCByZXNlcnZlIG5zID0gcmVzZXJ2ZSBucyB0YmxcbiAgbGV0IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSA9IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmxcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm1lcmxpblwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZWFzb25cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVmbXRcIiAoKiByZWFzb24gKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm5zXCIgKCogcmVzY3JpcHQgKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXRhb2NhbWxcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwib2NhbWxmb3JtYXRcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicHB4bGliLm1pZ3JhdGlvblwiXG5cbiAgbGV0IGNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lID1cbiAgICBsZXQga2luZCwgbGlzdCA9XG4gICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIHwgYEF0dHJpYnV0ZSAtPiAoXCJhdHRyaWJ1dGVcIiwgQWxsb3dsaXN0ZWQuYXR0cmlidXRlcylcbiAgICAgIHwgYEV4dGVuc2lvbiAtPiAoXCJleHRlbnNpb25cIiwgQWxsb3dsaXN0ZWQuZXh0ZW5zaW9ucylcbiAgICBpblxuICAgIGlmIFN0cmluZy5TZXQubWVtIG5hbWUgbGlzdCB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXQgbWF0Y2hlcyBhbiAlcyByZXNlcnZlZCBieSB0aGUgXFxcbiAgICAgICAgIGNvbXBpbGVyXCJcbiAgICAgICAga2luZCBuYW1lIGtpbmRcbiAgICBlbHNlIGlmIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXRzIG5hbWVzcGFjZSBpcyBtYXJrZWQgYXMgXFxcbiAgICAgICAgIHJlc2VydmVkXCJcbiAgICAgICAga2luZCBuYW1lXG5lbmRcblxubGV0IGlnbm9yZV9jaGVja3MgbmFtZSA9XG4gIFJlc2VydmVkX25hbWVzcGFjZXMuaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lXG4gIHx8IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OlwiX1wiXG5cbm1vZHVsZSBSZWdpc3RyYXIgPSBzdHJ1Y3RcbiAgdHlwZSBlbGVtZW50ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA6IHN0cmluZzsgZGVjbGFyZWRfYXQgOiBDYWxsZXJfaWQudCB9XG4gIHR5cGUgYWxsX2Zvcl9jb250ZXh0ID0geyBtdXRhYmxlIGFsbCA6IGVsZW1lbnQgU3RyaW5nLk1hcC50IH1cblxuICB0eXBlICdhIHQgPSB7XG4gICAgYWxsX2J5X2NvbnRleHQgOiAoJ2EsIGFsbF9mb3JfY29udGV4dCkgSGFzaHRibC50O1xuICAgIHNraXAgOiBzdHJpbmcgbGlzdDtcbiAgICBraW5kIDogc3RyaW5nO1xuICAgIHN0cmluZ19vZl9jb250ZXh0IDogJ2EgLT4gc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfmtpbmQgfmN1cnJlbnRfZmlsZSB+c3RyaW5nX29mX2NvbnRleHQgPVxuICAgIHtcbiAgICAgIGFsbF9ieV9jb250ZXh0ID0gSGFzaHRibC5jcmVhdGUgMTY7XG4gICAgICBza2lwID0gWyBjdXJyZW50X2ZpbGU7IF9fRklMRV9fIF07XG4gICAgICBraW5kO1xuICAgICAgc3RyaW5nX29mX2NvbnRleHQ7XG4gICAgfVxuXG4gIGxldCBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCA9XG4gICAgSGFzaHRibC5maW5kX29yX2FkZCB0LmFsbF9ieV9jb250ZXh0IGNvbnRleHQgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICB7IGFsbCA9IFN0cmluZy5NYXAuZW1wdHkgfSlcblxuICBsZXQgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWUgPVxuICAgIG1hdGNoIFN0cmluZy5NYXAuZmluZF9vcHQgbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZSAtPlxuICAgICAgICBsZXQgZGVjbGFyZWRfYXQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIChsb2MgOiBTdGRsaWIuUHJpbnRleGMubG9jYXRpb24pIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiIGRlY2xhcmVkIGF0ICVzOiVkXCIgbG9jLmZpbGVuYW1lIGxvYy5saW5lX251bWJlclxuICAgICAgICBpblxuICAgICAgICBsZXQgY29udGV4dCA9XG4gICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjb250ZXh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBzIC0+IFwiIG9uIFwiIF4gcyBeIFwic1wiXG4gICAgICAgIGluXG4gICAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICAgIFwiU29tZSBwcHgtZXMgdHJpZWQgdG8gcmVnaXN0ZXIgY29uZmxpY3RpbmcgdHJhbnNmb3JtYXRpb25zOiAlcyBcXFxuICAgICAgICAgICAnJXMnJXMlcyBtYXRjaGVzICVzICclcyclc1wiXG4gICAgICAgICAgKFN0cmluZy5jYXBpdGFsaXplX2FzY2lpIHQua2luZClcbiAgICAgICAgICBuYW1lIGNvbnRleHQgKGRlY2xhcmVkX2F0IGNhbGxlcikgdC5raW5kIGUuZnVsbHlfcXVhbGlmaWVkX25hbWVcbiAgICAgICAgICAoZGVjbGFyZWRfYXQgZS5kZWNsYXJlZF9hdClcblxuICBsZXQgY2hlY2tfY29sbGlzaW9ucyB0IGNvbnRleHQgbmFtZSA9XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbF9mb3JfY29udGV4dCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWVcblxuICBsZXQgcmVnaXN0ZXIgfmtpbmQgdCBjb250ZXh0IG5hbWUgPVxuICAgIFJlc2VydmVkX25hbWVzcGFjZXMuY2hlY2tfbm90X3Jlc2VydmVkIH5raW5kIG5hbWU7XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQ6YWxsIHQgY29udGV4dCBuYW1lO1xuICAgIGxldCB0ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA9IG5hbWU7IGRlY2xhcmVkX2F0ID0gY2FsbGVyIH0gaW5cbiAgICBhbGwuYWxsIDwtXG4gICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFsbC5hbGwgfmY6KGZ1biBuYW1lIGFjYyAtPlxuICAgICAgICAgIFN0cmluZy5NYXAuYWRkIG5hbWUgdCBhY2MpXG5cbiAgbGV0IHNwZWxsY2hlY2sgdCBjb250ZXh0ID8oYWxsb3dsaXN0ID0gW10pIG5hbWUgPVxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGxldCBhbGwgPVxuICAgICAgU3RyaW5nLk1hcC5mb2xkIChmdW4ga2V5IF8gYWNjIC0+IGtleSA6OiBhY2MpIGFsbF9mb3JfY29udGV4dC5hbGwgW11cbiAgICBpblxuICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoYWxsIEAgYWxsb3dsaXN0KSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgXyBhcyB4IC0+IHhcbiAgICB8IE5vbmUgd2hlbiBTdHJpbmcuTWFwLm1lbSBuYW1lIGFsbF9mb3JfY29udGV4dC5hbGwgLT4gTm9uZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIGxldCBvdGhlcl9jb250ZXh0cyA9XG4gICAgICAgICAgSGFzaHRibC5mb2xkXG4gICAgICAgICAgICAoZnVuIGN0eCBhbGxfZnJvbV9jb250ZXh0IGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIFBvbHkuKCA8PiApIGNvbnRleHQgY3R4XG4gICAgICAgICAgICAgICAgJiYgU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZnJvbV9jb250ZXh0LmFsbFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjdHggd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPiAocyBeIFwic1wiKSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZSBhY2MpXG4gICAgICAgICAgICB0LmFsbF9ieV9jb250ZXh0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcF90ZXh0ID0gRm9ybWF0LnBwX3ByaW50X3RleHQgaW5cbiAgICAgICAgbGV0IGN1cnJlbnRfY29udGV4dCBwcGYgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgbGV0IGFfb3JfYW4gPVxuICAgICAgICAgICAgICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyB8ICd5JyAtPiBcImFuXCJcbiAgICAgICAgICAgICAgICB8IF8gLT4gXCJhXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgcHBmXG4gICAgICAgICAgICAgICAgXCJAIGJ1dEAgaXNAIHVzZWRAIGhlcmVAIGluQCB0aGVAIGNvbnRleHRAIG9mQCAlc0AgJWFcIiBhX29yX2FuXG4gICAgICAgICAgICAgICAgcHBfdGV4dCBzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5zb3J0IH5jbXA6KGZ1biB4IHkgLT4gLVN0cmluZy5jb21wYXJlIHggeSkgb3RoZXJfY29udGV4dHNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgfCBbIGMgXSAtPlxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiQFtIaW50OkAgYCVzJ0AgaXNAIGF2YWlsYWJsZUAgZm9yQCAlYSV0LkBdQFxcblxcXG4gICAgICAgICAgICAgICAgICBEaWQgeW91IHB1dCBpdCBhdCB0aGUgd3JvbmcgbGV2ZWw/XCIgbmFtZSBwcF90ZXh0IGNcbiAgICAgICAgICAgICAgICAgY3VycmVudF9jb250ZXh0KVxuICAgICAgICB8IGxhc3QgOjogcmV2X290aGVycyAtPlxuICAgICAgICAgICAgbGV0IG90aGVycyA9IExpc3QucmV2IHJldl9vdGhlcnMgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWFAIGFuZEAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWVcbiAgICAgICAgICAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0IHBwX3RleHQgfnBwX3NlcDooZnVuIHBwZiAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKSlcbiAgICAgICAgICAgICAgICAgb3RoZXJzIHBwX3RleHQgbGFzdCBjdXJyZW50X2NvbnRleHQpKVxuXG4gIG1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICAgICgqIFRPRE86IGhpbnQgc3BlbGxpbmcgZXJyb3JzIHJlZ2FyZGluZyByZXNlcnZlZCBuYW1lc3BhY2VzIG5hbWVzIGFuZCBhbGxvd2xpc3RlZFxuICAgICAgIG5hbWVzIGluc3RlYWQgb2YgdGFraW5nIGFuIG9wdGlvbmFsIFthbGxvd2xpc3RdIHBhcmFtZXRlci4gKilcbiAgICBsZXQgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAoZnVuIG1zZyAtPlxuICAgICAgICAgIG1hdGNoIHNwZWxsY2hlY2sgdCBjb250ZXh0IG5hbWUudHh0ID9hbGxvd2xpc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlc1wiIG1zZ1xuICAgICAgICAgIHwgU29tZSBzIC0+IExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIiVzLlxcbiVzXCIgbXNnIHMpXG4gICAgICAgIGZtdCBuYW1lLnR4dFxuXG4gICAgbGV0IHJhaXNlX2Vycm9yZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnJhaXNlIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcblxuICAgIGxldCBlcnJvcl9leHRlbnNpb25mIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcbiAgZW5kXG5cbiAgbGV0IHJhaXNlX2Vycm9yZiA9IEVycm9yLnJhaXNlX2Vycm9yZlxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxubW9kdWxlIEJ1ZmZlciA9IFN0ZGxpYi5CdWZmZXJcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBsaWRlbnQgeCA9IExvbmdpZGVudC5MaWRlbnQgeFxuXG5sZXQgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgPVxuICBsZXQgbG9jID0gdGQucHR5cGVfbmFtZS5sb2MgaW5cbiAgcHR5cF9jb25zdHIgfmxvY1xuICAgIChMb2NhdGVkLm1hcCBsaWRlbnQgdGQucHR5cGVfbmFtZSlcbiAgICAoTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmZzdClcblxubGV0IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4ID1cbiAgbGV0IGNob3AgbiB+b3JfbW9yZSBzdHJpbmcgcG9zIGYgPVxuICAgIGxldCB0YXJnZXQgPSAhcG9zIC0gbiBpblxuICAgIHdoaWxlICFwb3MgPiAwICYmIChvcl9tb3JlIHx8ICFwb3MgPiB0YXJnZXQpICYmIGYgc3RyaW5nLlshcG9zIC0gMV0gZG9cbiAgICAgIHBvcyA6PSAhcG9zIC0gMVxuICAgIGRvbmU7XG4gICAgIXBvcyA8PSB0YXJnZXRcbiAgaW5cbiAgZnVuIHN0cmluZyAtPlxuICAgIGxldCBwb3MgPSByZWYgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGlmXG4gICAgICBjaG9wIDEgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgICAmJiBjaG9wIDMgfm9yX21vcmU6dHJ1ZSBzdHJpbmcgcG9zIChmdW5jdGlvblxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiBjaG9wIDIgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgdGhlbiBTdHJpbmcucHJlZml4IHN0cmluZyAhcG9zXG4gICAgZWxzZSBzdHJpbmdcblxubGV0IGdlbl9zeW1ib2wgPVxuICBsZXQgY250ID0gcmVmIDAgaW5cbiAgZnVuID8ocHJlZml4ID0gXCJfeFwiKSAoKSAtPlxuICAgIGNudCA6PSAhY250ICsgMTtcbiAgICBsZXQgcHJlZml4ID0gc3RyaXBfZ2VuX3N5bWJvbF9zdWZmaXggcHJlZml4IGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlc19fJTAzaV9cIiBwcmVmaXggIWNudFxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMgKHRkIDogdHlwZV9kZWNsYXJhdGlvbikgOlxuICAgICh0eXBlX2RlY2xhcmF0aW9uLCBfKSByZXN1bHQgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IHByZWZpeF9zdHJpbmcgaSA9XG4gICAgKCogYSwgYiwgLi4uLCB5LCB6LCBhYSwgYmIsIC4uLiAqKVxuICAgIFN0cmluZy5tYWtlICgoaSAvIDI2KSArIDEpIChDaGFyLmNociAoQ2hhci5jb2RlICdhJyArIChpIG1vZCAyNikpKVxuICBpblxuICBsZXQgbmFtZV9wYXJhbSBpICh0cCwgdmFyaWFuY2UpID1cbiAgICAobWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IE9rIChQdHlwX3ZhciAoZ2VuX3N5bWJvbCB+cHJlZml4OihwcmVmaXhfc3RyaW5nIGkpICgpKSlcbiAgICB8IFB0eXBfdmFyIF8gYXMgdiAtPiBPayB2XG4gICAgfCBfIC0+XG4gICAgICAgIEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6dHAucHR5cF9sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiKSlcbiAgICA+PnwgZnVuIHB0eXBfZGVzYyAtPiAoeyB0cCB3aXRoIHB0eXBfZGVzYyB9LCB2YXJpYW5jZSlcbiAgaW5cbiAgbGV0IHB0eXBlX3BhcmFtcywgZXJyb3JzID1cbiAgICB0ZC5wdHlwZV9wYXJhbXMgfD4gTGlzdC5tYXBpIH5mOm5hbWVfcGFyYW1cbiAgICB8PiBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE9rIG8gLT4gRWl0aGVyLkxlZnQgb1xuICAgICAgICAgfCBFcnJvciBlIC0+IEVpdGhlci5SaWdodCBlKVxuICBpblxuICBtYXRjaCBlcnJvcnMgd2l0aCBbXSAtPiBPayB7IHRkIHdpdGggcHR5cGVfcGFyYW1zIH0gfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpXG5cbmxldCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDogdHlwZV9kZWNsYXJhdGlvbiA9XG4gIG1hdGNoIG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzIHRkIHdpdGhcbiAgfCBPayByZXMgLT4gcmVzXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+ZiA9XG4gIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgbGV0IHJlc3VsdF90eXBlID1cbiAgICBmIH5sb2M6dGQucHR5cGVfbmFtZS5sb2MgKGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkKVxuICBpblxuICBMaXN0LmZvbGRfcmlnaHQgdGQucHR5cGVfcGFyYW1zIH5pbml0OnJlc3VsdF90eXBlXG4gICAgfmY6KGZ1biAodHAsIF92YXJpYW5jZSkgYWNjIC0+XG4gICAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICAgIHB0eXBfYXJyb3cgfmxvYyBOb2xhYmVsIChmIH5sb2MgdHApIGFjYylcblxubGV0IHN0cmluZ19vZl9jb3JlX3R5cGUgY3QgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBQcHJpbnRhc3QuY29yZV90eXBlIHBwZiBjdDtcbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgKHR5LCBfKSA9XG4gIGxldCBsb2MgPSB0eS5wdHlwX2xvYyBpblxuICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICB8IFB0eXBfdmFyIG5hbWUgLT4gT2sgKExvY2F0ZWQubWsgfmxvYyBuYW1lKVxuICB8IF8gLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIm5vdCBhIHR5cGUgcGFyYW1ldGVyXCIsIFtdKVxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZSB0ID1cbiAgbWF0Y2ggZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgdCB3aXRoXG4gIHwgT2sgZSAtPiBlXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG5jbGFzcyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcbiAgICB2YWwgdHlwZV9uYW1lcyA6IHN0cmluZyBsaXN0ID0gTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT4gdGQucHR5cGVfbmFtZS50eHQpXG4gICAgbWV0aG9kIHJldHVybl90cnVlICgpID0gcmFpc2Vfbm90cmFjZSBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hcnJvdyBfIC0+ICgpXG4gICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgaWQ7IF8gfSwgXylcbiAgICAgICAgd2hlbiBMaXN0Lm1lbSB+c2V0OnR5cGVfbmFtZXMgaWQgLT5cbiAgICAgICAgICBzZWxmI3JldHVybl90cnVlICgpXG4gICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIGN0eXBlXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkID1cbiAgICAgICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBjZC5wY2RfcmVzICopXG4gICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICB8IFBjc3RyX3R1cGxlIGFyZ3MgLT4gTGlzdC5pdGVyIGFyZ3MgfmY6c2VsZiNjb3JlX3R5cGVcbiAgICAgIHwgUGNzdHJfcmVjb3JkIGZpZWxkcyAtPiBMaXN0Lml0ZXIgZmllbGRzIH5mOnNlbGYjbGFiZWxfZGVjbGFyYXRpb25cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlcyBfID0gKCogRG9uJ3QgcmVjdXJzZSB0aHJvdWdoIGF0dHJpYnV0ZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpXG5cbiAgICBtZXRob2QgZ28gKCkgPVxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICB8IFJlY3Vyc2l2ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5pdGVyIHRkcyB+ZjpzZWxmI3R5cGVfZGVjbGFyYXRpb24gd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIFR5cGVfaXNfcmVjdXJzaXZlIC0+IFJlY3Vyc2l2ZVxuICAgICAgICAgIHwgKCkgLT4gTm9ucmVjdXJzaXZlKVxuICBlbmRcblxubGV0IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID0gKG5ldyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMpI2dvICgpXG5sZXQgcmVjIGxhc3QgeCBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHggfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxubGV0IGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZCA9XG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHIgW10gLT4gbmFtZS5sb2NcbiAgfCBQU3RyICh4IDo6IGwpIC0+IHsgeC5wc3RyX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzdHJfbG9jLmxvY19lbmQgfVxuICB8IFBTaWcgW10gLT4gbmFtZS5sb2NcbiAgfCBQU2lnICh4IDo6IGwpIC0+IHsgeC5wc2lnX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzaWdfbG9jLmxvY19lbmQgfVxuICB8IFBUeXAgdCAtPiB0LnB0eXBfbG9jXG4gIHwgUFBhdCAoeCwgTm9uZSkgLT4geC5wcGF0X2xvY1xuICB8IFBQYXQgKHgsIFNvbWUgZSkgLT4geyB4LnBwYXRfbG9jIHdpdGggbG9jX2VuZCA9IGUucGV4cF9sb2MubG9jX2VuZCB9XG5cbmxldCBsb2Nfb2ZfcGF5bG9hZCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyA9IF8gfSA9XG4gIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcblxubGV0IGxvY19vZl9hdHRyaWJ1dGUgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICAoKiBUT0RPOiBmaXggdGhpcyBpbiB0aGUgY29tcGlsZXIsIGFuZCBtb3ZlIHRoZSBsb2dpYyB0byBvbXAgd2hlbiBjb252ZXJ0aW5nXG4gICAgIGZyb20gb2xkZXIgYXN0cy4gKilcbiAgKCogXCJvY2FtbC5kb2NcIiBhdHRyaWJ1dGVzIGFyZSBnZW5lcmF0ZWQgd2l0aCBbTG9jYXRpb24ubm9uZV0sIHdoaWNoIGlzIG5vdCBoZWxwZnVsIGZvclxuICAgICBlcnJvciBtZXNzYWdlcy4gKilcbiAgaWYgUG9seS4oID0gKSBhdHRyX25hbWUubG9jIExvY2F0aW9uLm5vbmUgdGhlblxuICAgIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcbiAgZWxzZVxuICAgIHtcbiAgICAgIGF0dHJfbmFtZS5sb2Mgd2l0aFxuICAgICAgbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkKS5sb2NfZW5kO1xuICAgIH1cblxubGV0IGxvY19vZl9leHRlbnNpb24gKG5hbWUsIHBheWxvYWQpID1cbiAgaWYgUG9seS4oID0gKSBuYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW4gbG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkXG4gIGVsc2VcbiAgICB7IG5hbWUubG9jIHdpdGggbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQpLmxvY19lbmQgfVxuXG5sZXQgY3VycnlfYXBwbGljYXRpb25zIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSBpblxuICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9hcHBseSAoZiwgb3JpZ19mb3J3YXJkX2FyZ3MpIC0+XG4gICAgICBsZXQgbG9jID0gZXhwci5wZXhwX2xvYyBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBmXG4gICAgICAgIHwgbGFzdF9hcmcgOjogcmV2X2Zyb250X2FyZ3MgLT5cbiAgICAgICAgICAgIHBleHBfYXBwbHkgfmxvYyAobG9vcCByZXZfZnJvbnRfYXJncykgWyBsYXN0X2FyZyBdXG4gICAgICBpblxuICAgICAgbG9vcCAoTGlzdC5yZXYgb3JpZ19mb3J3YXJkX2FyZ3MpXG4gIHwgXyAtPiBleHByXG5cbmxldCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIExpc3QuZmlsdGVyX21hcCB+ZjooZnVuY3Rpb25cbiAgICB8IHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9sb2MgPSBfOyBhdHRyX3BheWxvYWQgPSBfIH1cbiAgICAgIHdoZW4gTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUuTG9jYXRpb24udHh0IC0+XG4gICAgICAgIE5vbmVcbiAgICB8IGF0dHIgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgICBTb21lIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGVzIG5vdCBhbGxvd2VkIGhlcmVcIikpXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGRcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSBhIGFjYyA9IGF0dHJpYnV0ZXNfZXJyb3JzIFsgYSBdIEAgYWNjXG4gIGVuZFxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXMgbCA9XG4gIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBhc3NlcnRfbm9fYXR0cmlidXRlc19pbiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSA9IGFzc2VydF9ub19hdHRyaWJ1dGVzIFsgYSBdXG4gIGVuZFxuXG5sZXQgYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMgPVxuICB7XG4gICAgYXR0cl9uYW1lID0geyBsb2M7IHR4dCA9IFwib2NhbWwucHB3YXJuaW5nXCIgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpc19wb2x5bW9ycGhpY192YXJpYW50ID1cbiAgbGV0IHJlYyBjaGVjayA9IGZ1bmN0aW9uXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCBfOyBfIH0gLT4gYERlZmluaXRlbHlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAodHlwLCBfKTsgXyB9IC0+IGNoZWNrIHR5cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciBfOyBfIH0gLT4gYE1heWJlXG4gICAgfCBfIC0+IGBTdXJlbHlfbm90XG4gICAgKCogVHlwZSB2YXJzIGdvIGhlcmUgZXZlbiB0aG91Z2ggdGhleSBjb3VsZCBiZSBwb2x5bW9ycGhpY1xuICAgICAgIHZhcmlhbnRzLCBob3dldmVyIHdlIGRvbid0IGhhbmRsZSBpdCBpZiB0aGV5IGdldCBzdWJzdGl0dXRlZFxuICAgICAgIGJ5IGEgcG9seW1vcnBoaWMgdmFyaWFudCB0aGF0IGlzIHRoZW4gaW5jbHVkZWQuICopXG4gIGluXG4gIGZ1biB0ZCB+c2lnXyAtPlxuICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCBfIHwgUHR5cGVfcmVjb3JkIF8gfCBQdHlwZV9vcGVuIC0+IGBTdXJlbHlfbm90XG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoXG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGlmIHNpZ18gdGhlbiBgTWF5YmUgZWxzZSBgU3VyZWx5X25vdFxuICAgICAgICB8IFNvbWUgdHlwIC0+IGNoZWNrIHR5cClcblxubGV0IG1rX25hbWVkX3NpZyB+bG9jIH5zZ19uYW1lIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgWyB0ZCBdXG4gICAgd2hlbiBTdHJpbmcuZXF1YWwgdGQucHR5cGVfbmFtZS50eHQgXCJ0XCIgJiYgTGlzdC5pc19lbXB0eSB0ZC5wdHlwZV9jc3RycyAtPlxuICAgICAgaWZcbiAgICAgICAgKG5vdCBoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudClcbiAgICAgICAgJiYgUG9seS4oID0gKSAoaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlKSBgRGVmaW5pdGVseVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBhcml0eSA9IExpc3QubGVuZ3RoIHRkLnB0eXBlX3BhcmFtcyBpblxuICAgICAgICBpZiBhcml0eSA+PSA0IHRoZW4gTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG10eSA9XG4gICAgICAgICAgICBpZiBhcml0eSA9IDAgdGhlbiBzZ19uYW1lIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlcyVkXCIgc2dfbmFtZSBhcml0eVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgICAgICAgIGxldCBmb3Jfc3Vic3QgPVxuICAgICAgICAgICAgQXN0X2hlbHBlci5UeXBlLm1rIH5sb2MgdGQucHR5cGVfbmFtZSB+cGFyYW1zOnRkLnB0eXBlX3BhcmFtc1xuICAgICAgICAgICAgICB+bWFuaWZlc3Q6XG4gICAgICAgICAgICAgICAgKHB0eXBfY29uc3RyIH5sb2NcbiAgICAgICAgICAgICAgICAgICAoTG9jYXRlZC5tYXBfbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgICAgICAgICAgKExpc3QubWFwIH5mOmZzdCB0ZC5wdHlwZV9wYXJhbXMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKGluY2x1ZGVfaW5mb3MgfmxvY1xuICAgICAgICAgICAgICAgKHBtdHlfd2l0aCB+bG9jXG4gICAgICAgICAgICAgICAgICAocG10eV9pZGVudCB+bG9jIChMb2NhdGVkLmxpZGVudCBtdHkgfmxvYykpXG4gICAgICAgICAgICAgICAgICBbIFB3aXRoX3R5cGVzdWJzdCAoTG9jYXRlZC5saWRlbnQgfmxvYyBcInRcIiwgZm9yX3N1YnN0KSBdKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGV4bl90b19sb2NfZXJyb3IgZXhuID1cbiAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoIFNvbWUgZXJyb3IgLT4gZXJyb3IgfCBOb25lIC0+IHJhaXNlIGV4blxuXG5tb2R1bGUgV2l0aF9lcnJvcnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgKiBMb2NhdGlvbi5FcnJvci50IGxpc3RcblxuICBsZXQgcmV0dXJuIGUgPSAoZSwgW10pXG5cbiAgbGV0ICggPj49ICkgKHgsIGVycm9yczEpIGYgPVxuICAgIGxldCB5LCBlcnJvcnMyID0gZiB4IGluXG4gICAgKHksIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gIGxldCAoID4+fCApICh4LCBlcnJvcnMpIGYgPSAoZiB4LCBlcnJvcnMpXG5cbiAgbGV0IG9mX3Jlc3VsdCByZXN1bHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBPayB4IC0+ICh4LCBbXSlcbiAgICB8IEVycm9yIGVycm9ycyAtPiAoZGVmYXVsdCwgTm9uRW1wdHlMaXN0LnRvX2xpc3QgZXJyb3JzKVxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyBsaXN0ID0gKExpc3QubWFwIGxpc3QgfmY6ZnN0LCBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjpzbmQpXG5lbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9wYXR0ZXJuMFxubGV0IG5vbGFiZWwgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9sYWJlbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9sYWJlbFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxhYmVsbGVkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBMYWJlbGxlZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFiZWxsZWRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG9wdGlvbmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPcHRpb25hbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3B0aW9uYWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGF0dHJpYnV0ZSB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+cGF5bG9hZDooVCBwYXlsb2FkKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHguYXR0cl9uYW1lKS5sb2MgKHguYXR0cl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBheWxvYWQgY3R4IGxvYyB4LmF0dHJfcGF5bG9hZCBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBiaW5kaW5nX29wIH5vcDooVCBvcCkgID1cbiAgKChmdW4gfnBhdDooVCBwYXQpIC0+XG4gICAgICAoKGZ1biB+ZXhwOihUIGV4cCkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG9wIGN0eCAoeC5wYm9wX29wKS5sb2MgKHgucGJvcF9vcCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcGF0IGN0eCBsb2MgeC5wYm9wX3BhdCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGV4cCBjdHggbG9jIHgucGJvcF9leHAgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgY2FzZSB+bGhzOihUIGxocykgID1cbiAgKChmdW4gfmd1YXJkOihUIGd1YXJkKSAtPlxuICAgICAgKChmdW4gfnJoczooVCByaHMpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsaHMgY3R4IGxvYyB4LnBjX2xocyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGd1YXJkIGN0eCBsb2MgeC5wY19ndWFyZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHJocyBjdHggbG9jIHgucGNfcmhzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9jb25zdHIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RydWN0dXJlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNsX2Z1biAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX2FwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9sZXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9jb25zdHJhaW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY2xfb3BlbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2luaGVyaXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2luaXRpYWxpemVyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaXRpYWxpemVyXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY2ZrX3ZpcnR1YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENma192aXJ0dWFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2aXJ0dWFsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjZmtfY29uY3JldGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25jcmV0ZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjaV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2lfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY2xhc3NfaW5mb3MgfnZpcnQ6KFQgdmlydCkgID1cbiAgKChmdW4gfnBhcmFtczooVCBwYXJhbXMpIC0+XG4gICAgICAoKGZ1biB+bmFtZTooVCBuYW1lKSAtPlxuICAgICAgICAgICgoZnVuIH5leHByOihUIGV4cHIpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gdmlydCBjdHggbG9jIHgucGNpX3ZpcnQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucGNpX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wY2lfbmFtZSkubG9jICh4LnBjaV9uYW1lKS50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wY2lfZXhwciBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZjooVCBzZWxmKSAgPVxuICAoKGZ1biB+ZmllbGRzOihUIGZpZWxkcykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc2lnX3NlbGYgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzaWdfZmllbGRzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZjooVCBzZWxmKSAgPVxuICAoKGZ1biB+ZmllbGRzOihUIGZpZWxkcykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc3RyX3NlbGYgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzdHJfZmllbGRzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfY29uc3RyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3R5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdHlfYXJyb3cgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJvd1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3R5X29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3RmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3RmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtZXRob2RcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjbG9zZWQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDbG9zZWRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBvcGVuXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNvbnN0X2ludGVnZXIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludGVnZXJcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY29uc3RfY2hhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2NoYXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNoYXJcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjb25zdF9zdHJpbmcgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjb25zdF9mbG9hdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZsb2F0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNzdHJfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNzdHJfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+dmFyczooVCB2YXJzKSAtPlxuICAgICAgKChmdW4gfmFyZ3M6KFQgYXJncykgLT5cbiAgICAgICAgICAoKGZ1biB+cmVzOihUIHJlcykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBjZF9uYW1lKS5sb2MgKHgucGNkX25hbWUpLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHZhcnMgY3R4IGxvYyB4LnBjZF92YXJzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBhcmdzIGN0eCBsb2MgeC5wY2RfYXJncyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcmVzIGN0eCBsb2MgeC5wY2RfcmVzIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwX2Fycm93IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9jb25zdHIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfb2JqZWN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfY2xhc3MgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX2FsaWFzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3ZhcmlhbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfcG9seSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfcGFja2FnZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrYWdlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB1cHRvID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVwdG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVwdG9cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBkb3dudG9fID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERvd250byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRG93bnRvXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcmFfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBkaXJfc3RyaW5nIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX3N0cmluZyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZGlyX2ludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZGlyX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcl9ib29sIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX2Jvb2wgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImJvb2xcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9sZXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2Z1bmN0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdGlvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfZnVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgKChmdW4gKFQgZjMpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9hcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9tYXRjaCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWF0Y2hcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF90cnkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2NvbnN0cnVjdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF92YXJpYW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9yZWNvcmQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9maWVsZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZpZWxkXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfc2V0ZmllbGQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2V0ZmllbGRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9pZnRoZW5lbHNlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZnRoZW5lbHNlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3NlcXVlbmNlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXF1ZW5jZVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3doaWxlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aGlsZVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2ZvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICAoKGZ1biAoVCBmNCkgLT5cbiAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjQgY3R4IGxvYyB4NCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZm9yXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2NvZXJjZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb2VyY2VcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfc2VuZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VuZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX25ldyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9uZXcgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXdcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX3NldGluc3R2YXIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGluc3R2YXJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9vdmVycmlkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3ZlcnJpZGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xldG1vZHVsZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0bW9kdWxlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2xldGV4Y2VwdGlvbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldGV4Y2VwdGlvblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2Fzc2VydCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFzc2VydFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9wb2x5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBvbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9vYmplY3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfb2JqZWN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX25ld3R5cGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld3R5cGVcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3BhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2tcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2xldG9wIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldG9wIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRvcFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucmVhY2hhYmxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+a2luZDooVCBraW5kKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucGV4dF9uYW1lKS5sb2MgKHgucGV4dF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wZXh0X2tpbmQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHRfZGVjbCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlY2xcIilcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4dF9yZWJpbmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBleHRfcmViaW5kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmViaW5kXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB1bml0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuaXQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVuaXRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBuYW1lZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5hbWVkXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5waW5jbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5waW5jbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGluY2x1ZGVfaW5mb3Mgfm1vZF86KFQgbW9kXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IG1vZF8gY3R4IGxvYyB4LnBpbmNsX21vZCBrIGluIGspKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGluamVjdGl2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBJbmplY3RpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkluamVjdGl2ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG5vaW5qZWN0aXZpdHkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9JbmplY3Rpdml0eVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBsZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbGFiZWxfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfm11dGFibGVfOihUIG11dGFibGVfKSAtPlxuICAgICAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBsZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBsZF9uYW1lKS5sb2MgKHgucGxkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBtdXRhYmxlXyBjdHggbG9jIHgucGxkX211dGFibGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBsZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBsZXRvcCB+bGV0XzooVCBsZXRfKSAgPVxuICAoKGZ1biB+YW5kczooVCBhbmRzKSAtPlxuICAgICAgKChmdW4gfmJvZHk6KFQgYm9keSkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGxldF8gY3R4IGxvYyB4LmxldF8gayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBhbmRzIGN0eCBsb2MgeC5hbmRzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYm9keSBjdHggbG9jIHguYm9keSBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBsb2NhdGlvbiB+c3RhcnQ6KFQgc3RhcnQpICA9XG4gICgoZnVuIH5lbmRfOihUIGVuZF8pIC0+XG4gICAgICAoKGZ1biB+Z2hvc3Q6KFQgZ2hvc3QpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBzdGFydCBjdHggbG9jIHgubG9jX3N0YXJ0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZW5kXyBjdHggbG9jIHgubG9jX2VuZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGdob3N0IGN0eCBsb2MgeC5sb2NfZ2hvc3QgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGlkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxpZGVudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbGRvdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBMZG90ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMZG90XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGFwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IExhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFwcGx5XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1iX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtYl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfYmluZGluZyB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+ZXhwcjooVCBleHByKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWJfbmFtZSkubG9jICh4LnBtYl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wbWJfZXhwciBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1kX25hbWUpLmxvYyAoeC5wbWRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbW9kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbW9kX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtb2RfZnVuY3RvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfYXBwbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG1vZF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtc19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXNfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtc19hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbXNfbmFtZSkubG9jICh4LnBtc19uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdCBjdHggKHgucG1zX21hbmlmZXN0KS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wbXNfbWFuaWZlc3QpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG10eV9mdW5jdG9yIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG10eV93aXRoIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIndpdGhcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG10eV90eXBlb2YgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlb2ZcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfYWxpYXMgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfYWxpYXMgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG10ZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucG10ZF9uYW1lKS5sb2MgKHgucG10ZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG10ZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBpbW11dGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgSW1tdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbW11dGFibGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtdXRhYmxlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBNdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJNdXRhYmxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG9mX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG9mX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wb2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3RhZyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBPdGFnICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk90YWdcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgb2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE9pbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG9wZW5faW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9wZW5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9wZW5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvcGVuX2luZm9zIH5leHByOihUIGV4cHIpICA9XG4gICgoZnVuIH5vdmVycmlkZTooVCBvdmVycmlkZSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBleHByIGN0eCBsb2MgeC5wb3Blbl9leHByIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gb3ZlcnJpZGUgY3R4IGxvYyB4LnBvcGVuX292ZXJyaWRlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBvdmVycmlkZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPdmVycmlkZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3ZlcnJpZGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBmcmVzaCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBGcmVzaCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRnJlc2hcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcGF0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2FsaWFzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9jb25zdGFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RhbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2ludGVydmFsIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlcnZhbFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfY29uc3RydWN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3ZhcmlhbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3JlY29yZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfb3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF90eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfb3BlbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQU3RyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU3RyXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQU2lnIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU2lnXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQVHlwIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQVHlwXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBQYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBQYXRcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwb3NpdGlvbiB+Zm5hbWU6KFQgZm5hbWUpICA9XG4gICgoZnVuIH5sbnVtOihUIGxudW0pIC0+XG4gICAgICAoKGZ1biB+Ym9sOihUIGJvbCkgLT5cbiAgICAgICAgICAoKGZ1biB+Y251bTooVCBjbnVtKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZm5hbWUgY3R4IGxvYyB4LnBvc19mbmFtZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsbnVtIGN0eCBsb2MgeC5wb3NfbG51bSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBib2wgY3R4IGxvYyB4LnBvc19ib2wgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gY251bSBjdHggbG9jIHgucG9zX2NudW0gayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHByaXZhdGVfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFByaXZhdGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlByaXZhdGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdWJsaWMgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHVibGljIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQdWJsaWNcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBub25yZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25yZWN1cnNpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCByZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSZWN1cnNpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcmZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcmZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnByZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBydGFnIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJ0YWdcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHJpbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBSaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmluaGVyaXRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzaWdfdmFsdWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3ZhbHVlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ190eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzaWdfdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ190eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19tb2RzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19tb2R0eXBlc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZXN1YnN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19leHRlbnNpb24gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHJfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHN0cl9ldmFsIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXZhbFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHJfdmFsdWUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3ByaW1pdGl2ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwcmltaXRpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9tb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfY2xhc3NfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NfdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9pbmNsdWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmNsdWRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfZXh0ZW5zaW9uIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfmFyZzooVCBhcmcpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5wZGlyX25hbWUpLmxvYyAoeC5wZGlyX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYXJnIGN0eCBsb2MgeC5wZGlyX2FyZyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdG9wX2RlZiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHRvcF9kZWYgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlZlwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHRvcF9kaXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0b3BfZGlyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkaXJcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cGVfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cGVfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfmNzdHJzOihUIGNzdHJzKSAtPlxuICAgICAgICAgICgoZnVuIH5raW5kOihUIGtpbmQpIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXzooVCBwcml2YXRlXykgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnB0eXBlX25hbWUpLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wdHlwZV9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyBjdHggbG9jIHgucHR5cGVfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGNzdHJzIGN0eCBsb2MgeC5wdHlwZV9jc3RycyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wdHlwZV9raW5kIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlXyBjdHggbG9jIHgucHR5cGVfcHJpdmF0ZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QgY3R4IGxvYyB4LnB0eXBlX21hbmlmZXN0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4bl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleG5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leGNlcHRpb24gfmNvbnN0cnVjdG9yOihUIGNvbnN0cnVjdG9yKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGNvbnN0cnVjdG9yIGN0eCBsb2MgeC5wdHlleG5fY29uc3RydWN0b3IgayBpbiBrKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoOihUIHBhdGgpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfmNvbnN0cnVjdG9yczooVCBjb25zdHJ1Y3RvcnMpIC0+XG4gICAgICAgICAgKChmdW4gfnByaXZhdGVfOihUIHByaXZhdGVfKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggY3R4ICh4LnB0eWV4dF9wYXRoKS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnB0eWV4dF9wYXRoKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucHR5ZXh0X3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcnMgY3R4IGxvYyB4LnB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwcml2YXRlXyBjdHggbG9jIHgucHR5ZXh0X3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwZV9hYnN0cmFjdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWJzdHJhY3RcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV92YXJpYW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV9vcGVuID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0eXBlX29wZW4gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB2YWx1ZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2Yl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdmJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfYmluZGluZyB+cGF0OihUIHBhdCkgID1cbiAgKChmdW4gfmV4cHI6KFQgZXhwcikgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gcGF0IGN0eCBsb2MgeC5wdmJfcGF0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucHZiX2V4cHIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2YWxfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZhbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgKChmdW4gfnByaW06KFQgcHJpbSkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucHZhbF9uYW1lKS5sb2MgKHgucHZhbF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnB2YWxfdHlwZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwcmltIGN0eCBsb2MgeC5wdmFsX3ByaW0gayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNvdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDb3ZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvdmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNvbnRyYXZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ29udHJhdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29udHJhdmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG5vdmFyaWFuY2UgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9WYXJpYW5jZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9WYXJpYW5jZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHZpcnR1YWxfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFZpcnR1YWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlZpcnR1YWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjb25jcmV0ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDb25jcmV0ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29uY3JldGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwd2l0aF90eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdWxlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF9tb2R0eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdHlwZXN1YnN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX3R5cGVzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF9tb2RzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFzdF9wYXR0ZXJuMFxuXG5sZXQgc2F2ZV9jb250ZXh0IGN0eCA9IGN0eC5tYXRjaGVkXG5sZXQgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXAgPSBjdHgubWF0Y2hlZCA8LSBiYWNrdXBcbmxldCBpbmNyX21hdGNoZWQgYyA9IGMubWF0Y2hlZCA8LSBjLm1hdGNoZWQgKyAxXG5cbmxldCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICB0cnkgT2sgKGYgeyBtYXRjaGVkID0gMCB9IGxvYyB4IGspXG4gIHdpdGggRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpIC0+IChcbiAgICBtYXRjaCBvbl9lcnJvciB3aXRoXG4gICAgfCBOb25lIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCIlcyBleHBlY3RlZFwiIGV4cGVjdGVkLCBbXSlcbiAgICB8IFNvbWUgZiAtPiBPayAoZiAoKSkpXG5cbmxldCBwYXJzZSAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIG1hdGNoIHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayB3aXRoXG4gIHwgT2sgciAtPiByXG4gIHwgRXJyb3IgKHIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIHJcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuMC50ICogJ2IgLT4gKCdhLCAnYykgdFxuXG4gIGxldCBjcmVhdGUgdCBmID0gVCAodCwgZilcbiAgbGV0IHBhcnNlX3JlcyAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2VfcmVzIHQgbG9jIHggZlxuICBsZXQgcGFyc2UgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlIHQgbG9jIHggZlxuZW5kXG5cbmxldCBfXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeClcblxubGV0IF9fJyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB7IGxvYzsgdHh0ID0geCB9KVxuXG5sZXQgZHJvcCA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIF8gayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGspXG5cbmxldCBhc19fIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeCAoayB4KSBpblxuICAgICAgaylcblxubGV0IGNzdCB+dG9fc3RyaW5nID8oZXF1YWwgPSBQb2x5LmVxdWFsKSB2ID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGlmIGVxdWFsIHggdiB0aGVuIChcbiAgICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgICAgaylcbiAgICAgIGVsc2UgZmFpbCBsb2MgKHRvX3N0cmluZyB2KSlcblxubGV0IGludCB2ID0gY3N0IH50b19zdHJpbmc6SW50LnRvX3N0cmluZyB2XG5sZXQgY2hhciB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJUNcIikgdlxubGV0IHN0cmluZyB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJVNcIikgdlxubGV0IGZsb2F0IHYgPSBjc3QgfnRvX3N0cmluZzpGbG9hdC50b19zdHJpbmcgdlxubGV0IGludDMyIHYgPSBjc3QgfnRvX3N0cmluZzpJbnQzMi50b19zdHJpbmcgdlxubGV0IGludDY0IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQ2NC50b19zdHJpbmcgdlxubGV0IG5hdGl2ZWludCB2ID0gY3N0IH50b19zdHJpbmc6TmF0aXZlaW50LnRvX3N0cmluZyB2XG5sZXQgYm9vbCB2ID0gY3N0IH50b19zdHJpbmc6Qm9vbC50b19zdHJpbmcgdlxuXG5sZXQgYm9vbCcgKFQgZnVuYykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFwidHJ1ZVwiIC0+IGZ1bmMgY3R4IGxvYyB0cnVlIGtcbiAgICAgIHwgXCJmYWxzZVwiIC0+IGZ1bmMgY3R4IGxvYyBmYWxzZSBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJCb29sXCIpXG5cbmxldCBmYWxzZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZhbHNlXCIpXG5cbmxldCB0cnVlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnVlXCIpXG5cbmxldCBuaWwgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIltdXCIpXG5cbmxldCAoIF46OiApIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHgwIDo6IHgxIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCI6OlwiKVxuXG5sZXQgbm9uZSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25lXCIpXG5cbmxldCBzb21lIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgU29tZSB4MCAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlNvbWVcIilcblxubGV0IHBhaXIgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MikgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBrKVxuXG5sZXQgKCAqKiApID0gcGFpclxuXG5sZXQgdHJpcGxlIChUIGYxKSAoVCBmMikgKFQgZjMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyLCB4MykgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpblxuICAgICAgaylcblxubGV0IGFsdCAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBiYWNrdXAgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICB0cnkgZjEgY3R4IGxvYyB4IGtcbiAgICAgIHdpdGggZTEgLT4gKFxuICAgICAgICBsZXQgbTEgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwO1xuICAgICAgICB0cnkgZjIgY3R4IGxvYyB4IGtcbiAgICAgICAgd2l0aCBlMiAtPlxuICAgICAgICAgIGxldCBtMiA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgICBpZiBtMSA+PSBtMiB0aGVuIChcbiAgICAgICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggbTE7XG4gICAgICAgICAgICByYWlzZSBlMSlcbiAgICAgICAgICBlbHNlIHJhaXNlIGUyKSlcblxubGV0ICggfHx8ICkgPSBhbHRcbmxldCBtYXAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgaykpXG5sZXQgbWFwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBsb2MgaykpXG5sZXQgbWFwX3Jlc3VsdCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIChmdW5jIGN0eCBsb2MgeCBrKSlcbmxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG5sZXQgbWFwMCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayBmKSlcbmxldCBtYXAxIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGEpKSlcblxubGV0IG1hcDIgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBhIGIpKSlcblxubGV0IG1hcDAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIChmIGxvYykpKVxuXG5sZXQgbWFwMScgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgbG9jIGEpKSlcblxubGV0IG1hcDInIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgbG9jIGEgYikpKVxuXG5sZXQgbWFwX3ZhbHVlIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiB4KSBrKVxubGV0IG1hcF92YWx1ZScgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIGxvYyB4KSBrKVxuXG5sZXQgYWx0X29wdGlvbiBzb21lIG5vbmUgPVxuICBhbHQgKG1hcDEgc29tZSB+ZjooZnVuIHggLT4gU29tZSB4KSkgKG1hcDAgbm9uZSB+ZjpOb25lKVxuXG5sZXQgbWFueSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgbCBrIC0+XG4gICAgICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBrIChMaXN0LnJldiBhY2N1KVxuICAgICAgICB8IHggOjogeHMgLT4gZiBjdHggbG9jIHggKGZ1biB4IC0+IGF1eCAoeCA6OiBhY2N1KSB4cylcbiAgICAgIGluXG4gICAgICBhdXggW10gbClcblxubGV0IGxvYyAoVCBmKSA9IFQgKGZ1biBjdHggX2xvYyAoeCA6IF8gTG9jLnQpIGsgLT4gZiBjdHggeC5sb2MgeC50eHQgaylcbmxldCBwYWNrMCB0ID0gbWFwIHQgfmY6KGZ1biBmIC0+IGYgKCkpXG5sZXQgcGFjazIgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgLT4gZiAoeCwgeSkpXG5sZXQgcGFjazMgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgeiAtPiBmICh4LCB5LCB6KSlcblxuaW5jbHVkZSBBc3RfcGF0dGVybl9nZW5lcmF0ZWRcblxubGV0IGVjaGFyIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IGVzdHJpbmcgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgZWZsb2F0IHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IHBjaGFyIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IHBzdHJpbmcgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgcGZsb2F0IHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IGludCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChpbnRfb2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50MzInIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50MzIub2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50NjQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50NjQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBuYXRpdmVpbnQnIChUIGYpID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoTmF0aXZlaW50Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgY29uc3RfaW50IHQgPSBwY29uc3RfaW50ZWdlciAoaW50JyB0KSBub25lXG5sZXQgY29uc3RfaW50MzIgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQzMicgdCkgKHNvbWUgKGNoYXIgJ2wnKSlcbmxldCBjb25zdF9pbnQ2NCB0ID0gcGNvbnN0X2ludGVnZXIgKGludDY0JyB0KSAoc29tZSAoY2hhciAnTCcpKVxubGV0IGNvbnN0X25hdGl2ZWludCB0ID0gcGNvbnN0X2ludGVnZXIgKG5hdGl2ZWludCcgdCkgKHNvbWUgKGNoYXIgJ24nKSlcbmxldCBlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBlaW50MzIgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgZWludDY0IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IGVuYXRpdmVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHBpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IHBpbnQzMiB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBwaW50NjQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgcG5hdGl2ZWludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgc2luZ2xlX2V4cHJfcGF5bG9hZCB0ID0gcHN0ciAocHN0cl9ldmFsIHQgbmlsIF46OiBuaWwpXG5sZXQgbm9fbGFiZWwgdCA9IGNzdCBBc3R0eXBlcy5Ob2xhYmVsIH50b19zdHJpbmc6KGZ1biBfIC0+IFwiTm9sYWJlbFwiKSAqKiB0XG5sZXQgZWJvb2wgdCA9IHBleHBfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5sZXQgcGJvb2wgdCA9IHBwYXRfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5cbmxldCBleHRlbnNpb24gKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKChuYW1lIDogXyBMb2MudCksIHBheWxvYWQpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IG5hbWUubG9jIG5hbWUudHh0IGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyBwYXlsb2FkIGsgaW5cbiAgICAgIGspXG5cbmxldCByZWMgcGFyc2VfZWxpc3QgKGUgOiBQYXJzZXRyZWUuZXhwcmVzc2lvbikgYWNjID1cbiAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGUucGV4cF9hdHRyaWJ1dGVzO1xuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBOb25lKSAtPiBMaXN0LnJldiBhY2NcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sIFNvbWUgYXJnKSAtPiAoXG4gICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXJnLnBleHBfYXR0cmlidXRlcztcbiAgICAgIG1hdGNoIGFyZy5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX3R1cGxlIFsgaGQ7IHRsIF0gLT4gcGFyc2VfZWxpc3QgdGwgKGhkIDo6IGFjYylcbiAgICAgIHwgXyAtPiBmYWlsIGFyZy5wZXhwX2xvYyBcImxpc3RcIilcbiAgfCBfIC0+IGZhaWwgZS5wZXhwX2xvYyBcImxpc3RcIlxuXG5sZXQgZWxpc3QgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCBsID0gcGFyc2VfZWxpc3QgZSBbXSBpblxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgKExpc3QubWFwIGwgfmY6KGZ1biB4IC0+IGYgY3R4IHguUGFyc2V0cmVlLnBleHBfbG9jIHggKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBlc2VxdWVuY2UgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCByZWMgcGFyc2Vfc2VxIGV4cHIgYWNjID1cbiAgICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGV4cHIsIG5leHQpIC0+IHBhcnNlX3NlcSBuZXh0IChleHByIDo6IGFjYylcbiAgICAgICAgfCBfIC0+IGV4cHIgOjogYWNjXG4gICAgICBpblxuICAgICAga1xuICAgICAgICAoTGlzdC5yZXZfbWFwIChwYXJzZV9zZXEgZSBbXSkgfmY6KGZ1biBleHByIC0+XG4gICAgICAgICAgICAgZiBjdHggZXhwci5wZXhwX2xvYyBleHByIChmdW4geCAtPiB4KSkpKVxuXG5sZXQgb2ZfZnVuYyBmID0gVCBmXG5sZXQgdG9fZnVuYyAoVCBmKSA9IGZcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcG9seV9lcXVhbCBhIGIgPVxuICBsZXQgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIDogXyAtPiB0XG4gIGVuZCBpblxuICBTdGRwcHguUG9seS5lcXVhbCAoUG9seS5UIGEpIChQb2x5LlQgYilcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gdFxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIHRcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gdFxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHRcbiAgICB8IFBhdHRlcm4gOiBwYXR0ZXJuIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENsYXNzX2luZm9zIDogXyBjbGFzc19pbmZvcyB0XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gdFxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gdFxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gdFxuICAgIHwgSW5jbHVkZV9pbmZvcyA6IF8gaW5jbHVkZV9pbmZvcyB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IFZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIHRcbiAgICB8IE1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgdFxuICAgIHwgUHN0cl9ldmFsIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHN0cl9leHRlbnNpb24gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc2lnX2V4dGVuc2lvbiA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFJ0YWcgOiByb3dfZmllbGQgdFxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgOiBvYmplY3RfZmllbGQgdFxuXG4gIGxldCBsYWJlbF9kZWNsYXJhdGlvbiA9IExhYmVsX2RlY2xhcmF0aW9uXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2RlY2xhcmF0aW9uID0gVHlwZV9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9leHRlbnNpb24gPSBUeXBlX2V4dGVuc2lvblxuICBsZXQgdHlwZV9leGNlcHRpb24gPSBUeXBlX2V4Y2VwdGlvblxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBwYXR0ZXJuID0gUGF0dGVyblxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gPSBWYWx1ZV9kZXNjcmlwdGlvblxuICBsZXQgY2xhc3NfdHlwZSA9IENsYXNzX3R5cGVcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG4gIGxldCBjbGFzc19pbmZvcyA9IENsYXNzX2luZm9zXG4gIGxldCBjbGFzc19leHByID0gQ2xhc3NfZXhwclxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uID0gTW9kdWxlX2RlY2xhcmF0aW9uXG4gIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gIGxldCBvcGVuX2Rlc2NyaXB0aW9uID0gT3Blbl9kZXNjcmlwdGlvblxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IEluY2x1ZGVfaW5mb3NcbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IHZhbHVlX2JpbmRpbmcgPSBWYWx1ZV9iaW5kaW5nXG4gIGxldCBtb2R1bGVfYmluZGluZyA9IE1vZHVsZV9iaW5kaW5nXG4gIGxldCBwc3RyX2V2YWwgPSBQc3RyX2V2YWxcbiAgbGV0IHBzdHJfZXh0ZW5zaW9uID0gUHN0cl9leHRlbnNpb25cbiAgbGV0IHBzaWdfZXh0ZW5zaW9uID0gUHNpZ19leHRlbnNpb25cbiAgbGV0IHJ0YWcgPSBSdGFnXG4gIGxldCBvYmplY3RfdHlwZV9maWVsZCA9IE9iamVjdF90eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9wc3RyX2V2YWwgc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V2YWwgKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V2YWxcIlxuXG4gIGxldCBnZXRfcHN0cl9leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X3BzaWdfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc2lnX2Rlc2Mgd2l0aFxuICAgIHwgUHNpZ19leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc2lnX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHgucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHgucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geC5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB4LnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB4LnB0eWV4bl9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geC5wZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFBhdHRlcm4gLT4geC5wcGF0X2F0dHJpYnV0ZXNcbiAgICB8IENvcmVfdHlwZSAtPiB4LnB0eXBfYXR0cmlidXRlc1xuICAgIHwgRXhwcmVzc2lvbiAtPiB4LnBleHBfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geC5wdmFsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGUgLT4geC5wY3R5X2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geC5wY3RmX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2luZm9zIC0+IHgucGNpX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2V4cHIgLT4geC5wY2xfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZmllbGQgLT4geC5wY2ZfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGUgLT4geC5wbXR5X2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB4LnBtZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB4LnBtdGRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB4LnBtc19hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geC5waW5jbF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZXhwciAtPiB4LnBtb2RfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfYmluZGluZyAtPiB4LnB2Yl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB4LnBtYl9hdHRyaWJ1dGVzXG4gICAgfCBQc3RyX2V2YWwgLT4gc25kIChnZXRfcHN0cl9ldmFsIHgpXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc3RyX2V4dGVuc2lvbiB4KVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gc25kIChnZXRfcHNpZ19leHRlbnNpb24geClcbiAgICB8IFJ0YWcgLT4geC5wcmZfYXR0cmlidXRlc1xuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geC5wb2ZfYXR0cmlidXRlc1xuXG4gIGxldCBzZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiBhID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGNkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB7IHggd2l0aCBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHsgeCB3aXRoIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHsgeCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBhdHRlcm4gLT4geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZSAtPiB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2luZm9zIC0+IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZXhwciAtPiB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geyB4IHdpdGggcGluY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBzdHJfZXZhbCAtPlxuICAgICAgICB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGdldF9wc3RyX2V2YWwgeCB8PiBmc3QsIGF0dHJzKSB9XG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGdldF9wc3RyX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGdldF9wc2lnX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBSdGFnIC0+IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4gXCJsYWJlbCBkZWNsYXJhdGlvblwiXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IFwidHlwZSBleHRlbnNpb25cIlxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4gXCJ0eXBlIGV4Y2VwdGlvblwiXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gXCJleHRlbnNpb24gY29uc3RydWN0b3JcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgQ29yZV90eXBlIC0+IFwiY29yZSB0eXBlXCJcbiAgICB8IEV4cHJlc3Npb24gLT4gXCJleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IFwidmFsdWVcIlxuICAgIHwgQ2xhc3NfdHlwZSAtPiBcImNsYXNzIHR5cGVcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuICAgIHwgQ2xhc3NfaW5mb3MgLT4gXCJjbGFzcyBkZWNsYXJhdGlvblwiXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBcIm1vZHVsZSBzdWJzdGl0dXRpb25cIlxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiBcImluY2x1ZGVcIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IFwidmFsdWUgYmluZGluZ1wiXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiBcIm1vZHVsZSBiaW5kaW5nXCJcbiAgICB8IFBzdHJfZXZhbCAtPiBcInRvcGxldmVsIGV4cHJlc3Npb25cIlxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBleHRlbnNpb25cIlxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBzaWduYXR1cmUgZXh0ZW5zaW9uXCJcbiAgICB8IFJ0YWcgLT4gXCJwb2x5bW9ycGhpYyB2YXJpYW50IHRhZ1wiXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiBcIm9iamVjdCB0eXBlIGZpZWxkXCJcblxuICAoKlxuICBsZXQgcGF0dGVybiA6IHR5cGUgYSBiIGMgZC4gYSB0XG4gICAgLT4gKGF0dHJpYnV0ZXMsIGIsIGMpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYywgZCkgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBiLCBkKSBBc3RfcGF0dGVybi50ID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uICAgICAgIC0+IEFzdF9wYXR0ZXJuLnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBBc3RfcGF0dGVybi5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gICAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAgIC0+IEFzdF9wYXR0ZXJuLnBleHRfYXR0cmlidXRlc1xuKilcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxubW9kdWxlIEZsb2F0aW5nX2NvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcblxuICBsZXQgc3RydWN0dXJlX2l0ZW0gPSBTdHJ1Y3R1cmVfaXRlbVxuICBsZXQgc2lnbmF0dXJlX2l0ZW0gPSBTaWduYXR1cmVfaXRlbVxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGUgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIHsgcHN0cl9kZXNjID0gUHN0cl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfZmllbGQsIHsgcGNmX2Rlc2MgPSBQY2ZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGUgdCB4ID1cbiAgICBtYXRjaCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgdCB4IHdpdGhcbiAgICB8IFNvbWUgYSAtPiBhXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZVwiXG5cbiAgbGV0IHJlcGxhY2VfYnlfZHVtbXkgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGEgPVxuICAgIGxldCBkdW1teV9leHQgPSAoeyB0eHQgPSBcIlwiOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sIFBTdHIgW10pIGluXG4gICAgZnVuIHQgeCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiBcInNpZ25hdHVyZSBpdGVtXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG50eXBlIHBhY2tlZF9jb250ZXh0ID1cbiAgfCBPbl9pdGVtIDogXyBDb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcbiAgfCBGbG9hdGluZyA6IF8gRmxvYXRpbmdfY29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG5cbnR5cGUgXyBwYXlsb2FkX3BhcnNlciA9XG4gIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgKHBheWxvYWQsICdhLCAnYikgQXN0X3BhdHRlcm4udFxuICAgICAgKiAoYXR0cl9sb2M6TG9jYXRpb24udCAtPiBuYW1lX2xvYzpMb2NhdGlvbi50IC0+ICdhKVxuICAgICAgLT4gJ2IgcGF5bG9hZF9wYXJzZXJcblxudHlwZSAoJ2EsICdiKSB0ID0ge1xuICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbn1cblxudHlwZSBwYWNrZWQgPSBUIDogKF8sIF8pIHQgLT4gcGFja2VkXG5cbmxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcbmxldCBjb250ZXh0IHQgPSB0LmNvbnRleHRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImF0dHJpYnV0ZVwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1bmN0aW9uXG4gICAgfCBPbl9pdGVtIHQgLT4gU29tZSAoQ29udGV4dC5kZXNjIHQpXG4gICAgfCBGbG9hdGluZyB0IC0+IFNvbWUgKEZsb2F0aW5nX2NvbnRleHQuZGVzYyB0IF4gXCIgKGZsb2F0aW5nKVwiKSlcblxubGV0IGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAge1xuICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgIGNvbnRleHQ7XG4gICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgfVxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gaylcblxubGV0IGRlY2xhcmVfd2l0aF9uYW1lX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jIC0+XG4gICAgICBrIH5uYW1lX2xvYylcblxubGV0IGRlY2xhcmVfd2l0aF9hdHRyX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jIH5uYW1lX2xvYzpfIC0+XG4gICAgICBrIH5hdHRyX2xvYylcblxudHlwZSAnYSBmbGFnID0gKCdhLCB1bml0KSB0XG5cbmxldCBkZWNsYXJlX2ZsYWcgbmFtZSBjb250ZXh0ID1cbiAgbGV0IHBheWxvYWRfcGF0dGVybiA9IEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgaW5cbiAgbGV0IGNvbnRpbnVhdGlvbiB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyA9ICgpIGluXG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF5bG9hZF9wYXR0ZXJuIGNvbnRpbnVhdGlvblxuXG5tb2R1bGUgQXR0cmlidXRlX3RhYmxlID0gU3RkbGliLkhhc2h0YmwuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsb2NcblxuICBsZXQgbm9ybWFsaXplIHQgPSB7IHQgd2l0aCBsb2MgPSB7IHQubG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IH1cbiAgbGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCAobm9ybWFsaXplIHQpXG4gIGxldCBlcXVhbCB4IHkgPSBQb2x5LmVxdWFsIChub3JtYWxpemUgeCkgKG5vcm1hbGl6ZSB5KVxuZW5kKVxuXG5sZXQgbm90X3NlZW4gPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIDEyOFxubGV0IG1hcmtfYXNfc2VlbiB7IGF0dHJfbmFtZTsgXyB9ID0gQXR0cmlidXRlX3RhYmxlLnJlbW92ZSBub3Rfc2VlbiBhdHRyX25hbWVcbmxldCBtYXJrX2FzX2hhbmRsZWRfbWFudWFsbHkgPSBtYXJrX2FzX3NlZW5cblxubGV0IGV4cGxpY2l0bHlfZHJvcCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgPSBtYXJrX2FzX3NlZW5cbiAgZW5kXG5cbmxldCBnZXRfaW50ZXJuYWwgPVxuICBsZXQgcmVjIGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgbG9uZ2VzdF9tYXRjaCA9XG4gICAgbWF0Y2ggYXR0cmlidXRlcyB3aXRoXG4gICAgfCBbXSAtPiBPayBsb25nZXN0X21hdGNoXG4gICAgfCAoeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gYXMgYXR0cikgOjogcmVzdCAtPlxuICAgICAgICBpZiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQgdGhlblxuICAgICAgICAgIG1hdGNoIGxvbmdlc3RfbWF0Y2ggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgfCBTb21lIHsgYXR0cl9uYW1lID0gbmFtZSc7IF8gfSAtPlxuICAgICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBuYW1lLnR4dCBpblxuICAgICAgICAgICAgICBsZXQgbGVuJyA9IFN0cmluZy5sZW5ndGggbmFtZScudHh0IGluXG4gICAgICAgICAgICAgIGlmIGxlbiA+IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgICAgIGVsc2UgaWYgbGVuIDwgbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiRHVwbGljYXRlZCBhdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgW10gKVxuICAgICAgICBlbHNlIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICBpblxuICBmdW4gdCBhdHRyaWJ1dGVzIC0+IGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgTm9uZVxuXG5sZXQgY29udmVydCA/KGRvX21hcmtfYXNfc2VlbiA9IHRydWUpIHBhdHRlcm4gYXR0ciA9XG4gIGlmIGRvX21hcmtfYXNfc2VlbiB0aGVuIG1hcmtfYXNfc2VlbiBhdHRyO1xuICBsZXQgKFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKSkgPSBwYXR0ZXJuIGluXG4gIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuXG4gICAgKENvbW1vbi5sb2Nfb2ZfcGF5bG9hZCBhdHRyKVxuICAgIGF0dHIuYXR0cl9wYXlsb2FkXG4gICAgKGsgfmF0dHJfbG9jOmF0dHIuYXR0cl9sb2Mgfm5hbWVfbG9jOmF0dHIuYXR0cl9uYW1lLmxvYylcblxubGV0IGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgP2RvX21hcmtfYXNfc2VlbiA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcblxubGV0IGdldCB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgbWF0Y2ggZ2V0X3JlcyA/bWFya19hc19zZWVuIHQgeCB3aXRoXG4gIHwgT2sgKFNvbWUgKCkpIC0+IE9rIHRydWVcbiAgfCBPayBOb25lIC0+IE9rIGZhbHNlXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcblxubGV0IGhhc19mbGFnIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBjb25zdW1lX3JlcyB0IHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgbGV0IGF0dHJzID0gTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKGF0dHIgPT0gYXR0cicpKSBpblxuICAgICAgbGV0IHggPSBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGF0dHJzIGluXG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSAoeCwgdmFsdWUpXG5cbmxldCBjb25zdW1lIHQgeCA9XG4gIGNvbnN1bWVfcmVzIHQgeFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcmVtb3ZlX3NlZW5fcmVzICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBpblxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE9rIGFjY1xuICAgIHwgVCB0IDo6IHJlc3QgLT5cbiAgICAgICAgaWYgQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCB0aGVuXG4gICAgICAgICAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgICAgICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgfCBTb21lIGF0dHIgLT5cbiAgICAgICAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICAgICAgICBpZiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWUgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgICAgIGVsc2UgbG9vcCAoYXR0ciA6OiBhY2MpIHJlc3RcbiAgICAgICAgZWxzZSBsb29wIGFjYyByZXN0XG4gIGluXG4gIGxvb3AgW10gcGFja2VkcyA+PnwgZnVuIG1hdGNoZWQgLT5cbiAgbGV0IGF0dHJzID1cbiAgICBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoTGlzdC5tZW1xIH5zZXQ6bWF0Y2hlZCBhdHRyJykpXG4gIGluXG4gIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGF0dHJzXG5cbmxldCByZW1vdmVfc2VlbiAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICByZW1vdmVfc2Vlbl9yZXMgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBwYXR0ZXJuX3JlcyB0IHAgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGYgPSBBc3RfcGF0dGVybi50b19mdW5jIHAgaW5cbiAgQXN0X3BhdHRlcm4ub2ZfZnVuYyAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBjb25zdW1lX3JlcyB0IHggPj58IGZ1biByZXMgLT5cbiAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZiBjdHggbG9jIHggKGsgTm9uZSlcbiAgICAgIHwgU29tZSAoeCwgdikgLT4gZiBjdHggbG9jIHggKGsgKFNvbWUgdikpKVxuXG5sZXQgcGF0dGVybiB0IHAgPVxuICBwYXR0ZXJuX3JlcyB0IHAgfD4gQXN0X3BhdHRlcm4udG9fZnVuY1xuICB8PiAoZnVuIGYgYSBiIGMgZCAtPlxuICAgICAgIGYgYSBiIGMgZFxuICAgICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpKVxuICB8PiBBc3RfcGF0dGVybi5vZl9mdW5jXG5cbm1vZHVsZSBGbG9hdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgQ29udGV4dCA9IEZsb2F0aW5nX2NvbnRleHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xuICB9XG5cbiAgbGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspO1xuICAgIH1cblxuICBsZXQgY29udmVydF9yZXMgdHMgeCA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgbWF0Y2ggdHMgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgeyBjb250ZXh0OyBfIH0gOjogXyAtPiAoXG4gICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIHRzIH5mOihmdW4gdCAtPiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0KSk7XG4gICAgICAgIGxldCBhdHRyID0gQ29udGV4dC5nZXRfYXR0cmlidXRlIGNvbnRleHQgeCBpblxuICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dClcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICAgICAgfCBbIHQgXSAtPiBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICBcIk11bHRpcGxlIG1hdGNoIGZvciBmbG9hdGluZyBhdHRyaWJ1dGVzOiAlc1wiXG4gICAgICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgICAgICBbXSApKVxuXG4gIGxldCBjb252ZXJ0IHRzIHggPVxuICAgIGNvbnZlcnRfcmVzIHRzIHhcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIGlmXG4gICAgKG5vdFxuICAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBBdHRyaWJ1dGUgbmFtZS50eHRcbiAgICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpKVxuICAgICYmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZVxuICB0aGVuXG4gICAgbGV0IGFsbG93bGlzdCA9IE5hbWUuQWxsb3dsaXN0ZWQuZ2V0X2F0dHJpYnV0ZV9saXN0ICgpIGluXG4gICAgW1xuICAgICAgTmFtZS5SZWdpc3RyYXIuRXJyb3IuY3JlYXRlZiByZWdpc3RyYXIgY29udGV4dCB+YWxsb3dsaXN0XG4gICAgICAgIFwiQXR0cmlidXRlIGAlcycgd2FzIG5vdCB1c2VkXCIgbmFtZTtcbiAgICBdXG4gIGVsc2UgW11cblxubGV0IGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBfID1cbiAgICAgIFtcbiAgICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICBdXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLlxuICAgICAgICBhIENvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBhdHRyc1xuICAgICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAgICAgICBjb2xsZWN0ZWRfZXJyb3JzKVxuICAgICAgICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXSwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfZmxvYXRpbmcgOiB0eXBlIGEuXG4gICAgICAgIGEgRmxvYXRpbmcuQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgY29udGV4dCBub2RlXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBTb21lICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgIChGbG9hdGluZy5Db250ZXh0LnJlcGxhY2VfYnlfZHVtbXkgY29udGV4dCBub2RlLCBjb2xsZWN0ZWRfZXJyb3JzKVxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTGFiZWxfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leHRlbnNpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4Y2VwdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4Y2VwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHRlbnNpb25fY29uc3RydWN0b3IgeCBpblxuICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBQYXR0ZXJuIHggaW5cbiAgICAgIHN1cGVyI3BhdHRlcm4gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29yZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXhwcmVzc2lvbiB4IGluXG4gICAgICBzdXBlciNleHByZXNzaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZXhwciB4IGluXG4gICAgICBzdXBlciNjbGFzc19leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9leHByIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4LnByZl9kZXNjIHdpdGggUnRhZyBfIC0+IHNlbGYjY2hlY2tfbm9kZSBSdGFnIHggfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNyb3dfZmllbGQgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpIC0+XG4gICAgICAgICAgICBsZXQgZmllbGRzLCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBmaWVsZHMgfmY6KHNlbGYjY2hlY2tfbm9kZSBPYmplY3RfdHlwZV9maWVsZClcbiAgICAgICAgICAgICAgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZyksIExpc3QuY29uY2F0IGVycm9ycylcbiAgICAgICAgfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFN0cnVjdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V2YWwgaXRlbVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTaWduYXR1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc2lnX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcbiAgZW5kXG5cbmxldCBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIG1hdGNoIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmFpc2VfaWZfbm9uX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY2hlY2tfdW51c2VkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLiBhIENvbnRleHQudCAtPiBhIC0+IGEgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gbm9kZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIExpc3QuaXRlciBhdHRyc1xuICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgICAgICAgICAgICBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyKTtcbiAgICAgICAgICAgIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2xhYmVsX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4dGVuc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXhjZXB0aW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3BhdHRlcm4geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHByZXNzaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZV9maWVsZCB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcm93X2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcbiAgZW5kXG5cbmxldCByZXNldF9jaGVja3MgKCkgPSBBdHRyaWJ1dGVfdGFibGUuY2xlYXIgbm90X3NlZW5cblxubGV0IGNvbGxlY3QgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpXG4gICAgICAgID1cbiAgICAgIGxldCBsb2MgPSBDb21tb24ubG9jX29mX2F0dHJpYnV0ZSBhdHRyIGluXG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUuYWRkIG5vdF9zZWVuIG5hbWUgbG9jXG4gIGVuZFxuXG5sZXQgY29sbGVjdF91bnNlZW5fZXJyb3JzICgpID1cbiAgbGV0IGZhaWwgbmFtZSBsb2MgYWNjID1cbiAgICBsZXQgdHh0ID0gbmFtZS50eHQgaW5cbiAgICBpZiBub3QgKE5hbWUuaWdub3JlX2NoZWNrcyB0eHQpIHRoZW5cbiAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBzaWxlbnRseSBkcm9wcGVkXCIgdHh0XG4gICAgICA6OiBhY2NcbiAgICBlbHNlIGFjY1xuICBpblxuICBBdHRyaWJ1dGVfdGFibGUuZm9sZCBmYWlsIG5vdF9zZWVuIFtdXG5cbmxldCBjaGVja19hbGxfc2VlbiAoKSA9XG4gIG1hdGNoIGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gPVxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLnJlbW92ZSB0YWJsZSBuYW1lXG4gIGVuZFxuXG5sZXQgY29weV9vZl9ub3Rfc2VlbiAoKSA9XG4gIGxldCBjb3B5ID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAoQXR0cmlidXRlX3RhYmxlLmxlbmd0aCBub3Rfc2VlbikgaW5cbiAgQXR0cmlidXRlX3RhYmxlLml0ZXIgKEF0dHJpYnV0ZV90YWJsZS5hZGQgY29weSkgbm90X3NlZW47XG4gIGNvcHlcblxubGV0IGRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSBzdCA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3N0cnVjdHVyZSBzdDtcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cblxubGV0IGRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSBzZyA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3NpZ25hdHVyZSBzZztcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSB7XG4gIGZpbGVfcGF0aCA6IHN0cmluZztcbiAgbWFpbl9tb2R1bGVfbmFtZSA6IHN0cmluZztcbiAgc3VibW9kdWxlX3BhdGggOiBzdHJpbmcgbG9jIGxpc3Q7XG4gIGVuY2xvc2luZ19tb2R1bGUgOiBzdHJpbmc7XG4gIGVuY2xvc2luZ192YWx1ZSA6IHN0cmluZyBvcHRpb247XG4gIHZhbHVlIDogc3RyaW5nIGxvYyBvcHRpb247XG4gIGluX2V4cHIgOiBib29sO1xufVxuXG5sZXQgdG9wX2xldmVsIH5maWxlX3BhdGggPVxuICBsZXQgbWFpbl9tb2R1bGVfbmFtZSA9XG4gICAgZmlsZV9wYXRoIHw+IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSB8PiBTdGRsaWIuRmlsZW5hbWUucmVtb3ZlX2V4dGVuc2lvblxuICAgIHw+IFN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGluXG4gIHtcbiAgICBmaWxlX3BhdGg7XG4gICAgbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBzdWJtb2R1bGVfcGF0aCA9IFtdO1xuICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtYWluX21vZHVsZV9uYW1lO1xuICAgIGVuY2xvc2luZ192YWx1ZSA9IE5vbmU7XG4gICAgdmFsdWUgPSBOb25lO1xuICAgIGluX2V4cHIgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZmlsZV9wYXRoIHQgPSB0LmZpbGVfcGF0aFxubGV0IG1haW5fbW9kdWxlX25hbWUgdCA9IHQubWFpbl9tb2R1bGVfbmFtZVxubGV0IGVuY2xvc2luZ19tb2R1bGUgdCA9IHQuZW5jbG9zaW5nX21vZHVsZVxubGV0IGVuY2xvc2luZ192YWx1ZSB0ID0gdC5lbmNsb3NpbmdfdmFsdWVcblxubGV0IHN1Ym1vZHVsZV9wYXRoIHQgPVxuICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG5cbmxldCB2YWx1ZSB0ID0gT3B0aW9uLm1hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQudmFsdWVcblxubGV0IGZ1bGx5X3F1YWxpZmllZF9wYXRoIHQgPVxuICBsZXQgdmFsdWUgPSB2YWx1ZSB0IGluXG4gIGxldCBzdWJtb2R1bGVfcGF0aCA9XG4gICAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBTb21lIGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG4gIGluXG4gIGxldCBuYW1lcyA9IChTb21lIHQubWFpbl9tb2R1bGVfbmFtZSA6OiBzdWJtb2R1bGVfcGF0aCkgQCBbIHZhbHVlIF0gaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIEBAIExpc3QuZmlsdGVyX29wdCBuYW1lc1xuXG5sZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggaW5fZXhwciA9IHRydWUgfVxuXG5sZXQgZW50ZXJfbW9kdWxlIH5sb2MgbW9kdWxlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHN1Ym1vZHVsZV9wYXRoID0geyB0eHQgPSBtb2R1bGVfbmFtZTsgbG9jIH0gOjogdC5zdWJtb2R1bGVfcGF0aDtcbiAgICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZTtcbiAgICB9XG5cbmxldCBlbnRlcl92YWx1ZSB+bG9jIHZhbHVlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHZhbHVlID0gU29tZSB7IHR4dCA9IHZhbHVlX25hbWU7IGxvYyB9O1xuICAgICAgZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lO1xuICAgIH1cblxubGV0IHRvX3N0cmluZ19wYXRoIHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgKHQuZmlsZV9wYXRoIDo6IHN1Ym1vZHVsZV9wYXRoIHQpXG5sZXQgd2l0aF9zdHJpbmdfcGF0aCBmIH5sb2MgfnBhdGggPSBmIH5sb2MgfnBhdGg6KHRvX3N0cmluZ19wYXRoIHBhdGgpOztcblxubGV0IG1vZHVsZSBNID0gc3RydWN0XG4gIGxldCBhID0gXCJsb2xcIlxuZW5kIGluXG5NLmFcbiIsIm1vZHVsZSBCYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgdG9vbF9uYW1lIDogc3RyaW5nOyBjb2RlX3BhdGggOiBDb2RlX3BhdGgudDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgbGV0IHRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWUgPVxuICAgIGxldCBjb2RlX3BhdGggPSBDb2RlX3BhdGgudG9wX2xldmVsIH5maWxlX3BhdGggaW5cbiAgICB7IHRvb2xfbmFtZTsgY29kZV9wYXRoOyBpbnB1dF9uYW1lIH1cblxuICBsZXQgY29kZV9wYXRoIHQgPSB0LmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQudG9vbF9uYW1lXG4gIGxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfZXhwciB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX21vZHVsZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX21vZHVsZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl92YWx1ZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2MgOiBMb2NhdGlvbi50OyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYyB+YmFzZSAoKSA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYzsgYmFzZSB9XG4gIGxldCBleHRlbnNpb25fcG9pbnRfbG9jIHQgPSB0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBkZXJpdmVkX2l0ZW1fbG9jIDogTG9jYXRpb24udDsgaW5saW5lIDogYm9vbDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmRlcml2ZWRfaXRlbV9sb2MgfmlubGluZSB+YmFzZSAoKSA9XG4gICAgeyBkZXJpdmVkX2l0ZW1fbG9jOyBiYXNlOyBpbmxpbmUgfVxuXG4gIGxldCBkZXJpdmVkX2l0ZW1fbG9jIHQgPSB0LmRlcml2ZWRfaXRlbV9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuICBsZXQgaW5saW5lIHQgPSB0LmlubGluZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5kZXJpdmVkX2l0ZW1fbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb24uV2l0aF9lcnJvcnNcbmluY2x1ZGUgQXN0X3RyYXZlcnNlMFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBQcHhsaWJfdHJhdmVyc2VfYnVpbHRpbnMubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gQXN0LmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBlbmRcblxubGV0IG1vZHVsZV9uYW1lID0gZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgbmFtZSAtPiBuYW1lXG5sZXQgZW50ZXIgbmFtZSBwYXRoID0gaWYgU3RyaW5nLmlzX2VtcHR5IHBhdGggdGhlbiBuYW1lIGVsc2UgcGF0aCBeIFwiLlwiIF4gbmFtZVxubGV0IGVudGVyX29wdCBuYW1lX29wdCBwYXRoID0gZW50ZXIgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBwYXRoXG5cbmNsYXNzIG1hcF93aXRoX3BhdGggPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmddIG1hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgICgqIFdBUzpcbiAgICAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4ID1cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFBzdHJfbW9kdWxlIG1iIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgKGVudGVyIG1iLnBtYl9uYW1lLnR4dCBwYXRoKSB4XG4gICAgICAgfCBfIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4XG5cbiAgICAgICBPdmVycmlkaW5nIFttb2R1bGVfYmluZGluZ10gc2VlbXMgdG8gYmUgT0sgYmVjYXVzZSBpdCBkb2VzIG5vdCBjYXRjaFxuICAgICAgIGxvY2FsIG1vZHVsZSBiaW5kaW5ncyBiZWNhdXNlIGF0IHRoZSBtb21lbnQgdGhlIHBhcnNldHJlZSBkb2Vzbid0IG1ha2VcbiAgICAgICB1c2Ugb2YgW21vZHVsZV9iaW5kaW5nXSBmb3IgbG9jYWwgbW9kdWxlcywgYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGluIHRoZVxuICAgICAgIGZ1dHVyZSwgc28gdGhpcyBtaWdodCBiZSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLlxuXG4gICAgICAgVGhlIGZvbGxvd2luZzpcblxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG5cbiAgICAgICBpcyBkaXNhbGxvd2VkLCBidXRcblxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuXG4gICAgICAgaXNuJ3QsIGFuZCB0aGUgXCJwYXRoXCIgY29uc3RydWN0ZWQgaGVyZSB3b3VsZCBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGVcbiAgICAgICBiZXR3ZWVuIHRoZW0uICopXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBwYXRoIG1iID1cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIChlbnRlcl9vcHQgbWIucG1iX25hbWUudHh0IHBhdGgpIG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBwYXRoIG1kID1cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiAoZW50ZXJfb3B0IG1kLnBtZF9uYW1lLnR4dCBwYXRoKSBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBwYXRoIG10ZCA9XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoZW50ZXIgbXRkLnBtdGRfbmFtZS50eHQgcGF0aCkgbXRkXG4gIGVuZFxuXG5sZXQgdmFyX25hbWVzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIGZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwIGFjYyA9XG4gICAgICBsZXQgYWNjID0gc3VwZXIjcGF0dGVybiBwIGFjYyBpblxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHR4dCA6OiBhY2MgfCBfIC0+IGFjY1xuICBlbmRcblxubGV0IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYyBuYW1lX29wdCBjdHh0ID1cbiAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyAobW9kdWxlX25hbWUgbmFtZV9vcHQpIGN0eHRcblxubGV0IGVudGVyX3ZhbHVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfdmFsdWVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfaWRlbnQgKGxpZGVudCBfXycpKSlcbiAgICBGbi5pZFxuXG5sZXQgZW50ZXJfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2V4cHJcbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9jb25zdHJ1Y3QgKGxpZGVudCBfXycpIG5vbmUpKVxuICAgIEZuLmlkXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxuY2xhc3MgbWFwX3dpdGhfZXhwYW5zaW9uX2NvbnRleHRfYW5kX2Vycm9ycyA9XG4gIGxldCByZXR1cm4gX2N0eCB4ID0gKHgsIFtdKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdFxuICAgICAgW0V4cGFuc2lvbl9jb250ZXh0LkJhc2UudCwgTG9jYXRpb24uRXJyb3IudCBsaXN0XSBsaWZ0X21hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBpbnQgPSByZXR1cm5cbiAgICBtZXRob2Qgc3RyaW5nID0gcmV0dXJuXG4gICAgbWV0aG9kIGJvb2wgPSByZXR1cm5cbiAgICBtZXRob2QgY2hhciA9IHJldHVyblxuICAgIG1ldGhvZCBmbG9hdCA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQzMiA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQ2NCA9IHJldHVyblxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSByZXR1cm5cbiAgICBtZXRob2QgdW5pdCA9IHJldHVyblxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCkgLT5cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgICAgICAnYSBhcnJheSAtPlxuICAgICAgICAgICdhIGFycmF5ICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+XG4gICAgICAgIGxldCBsaXN0LCBlcnJvcnMgPSBzZWxmI2xpc3QgZiBjdHggKEFycmF5LnRvX2xpc3QgYSkgaW5cbiAgICAgICAgKEFycmF5Lm9mX2xpc3QgbGlzdCwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIG90aGVyIDogJ2EuIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIF8gXyAtPiBbXVxuXG4gICAgbWV0aG9kIHJlY29yZCBfY3R4IGZpZWxkcyA9IExpc3QuY29uY2F0X21hcCBmaWVsZHMgfmY6c25kXG4gICAgbWV0aG9kIGNvbnN0ciBfY3R4IF90YWcgYXJncyA9IExpc3QuY29uY2F0IGFyZ3NcbiAgICBtZXRob2QgdHVwbGUgX2N0eCBsID0gTGlzdC5jb25jYXQgbFxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGN0eHRcbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFzIGV4cHIpID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfdmFsdWUgZXhwciB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlID4+PSBmdW4gY3R4dCAtPlxuICAgICAgbGV0IGN0eHQgPSBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX2V4cHIgY3R4dCBpblxuICAgICAgbGV0IHBleHBfZGVzYywgZGVzY19lcnJvcnMgPVxuICAgICAgICBtYXRjaCBwZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSkgLT5cbiAgICAgICAgICAgIGxldCBuYW1lLCBuYW1lX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4dCBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZV9leHByLCBtb2R1bGVfZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgICBsZXQgd2l0aF9sZXRfbW9kdWxlID1cbiAgICAgICAgICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSBleHByXG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bW9kdWxlX2V4cHIucG1vZF9sb2MgbmFtZS50eHQgY3R4dFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB3aXRoX2xldF9tb2R1bGUgPj49IGZ1biBjdHh0IC0+IHNlbGYjbW9kdWxlX2V4cHIgY3R4dCBtb2R1bGVfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBib2R5LCBib2R5X2Vycm9ycyA9IHNlbGYjZXhwcmVzc2lvbiBjdHh0IGJvZHkgaW5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHh0IFwiUGV4cF9sZXRtb2R1bGVcIlxuICAgICAgICAgICAgICAgIFsgbmFtZV9lcnJvcnM7IG1vZHVsZV9leHByX2Vycm9yczsgYm9keV9lcnJvcnMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpLCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHh0IHBleHBfZGVzY1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvYyBpblxuICAgICAgbGV0IHBleHBfbG9jX3N0YWNrLCBsb2Nfc3RhY2tfZXJyb3JzID1cbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvY19zdGFja1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGN0eHQgcGV4cF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBkZXNjX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIGxvY19zdGFja19lcnJvcnMpO1xuICAgICAgICAgICAgKFwiYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgXSApXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGN0eHQgbWUgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2V4cHIgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl9tb2R1bGUgbWUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2V4cHIgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9leHByIGN0eHQgbWVcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgY3R4dCBtYiA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfYmluZGluZyA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyBtYlxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptYi5wbWJfbG9jIG1iLnBtYl9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfYmluZGluZyA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgY3R4dCBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uIG1kXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1kLnBtZF9sb2MgbWQucG1kX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gbXRkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2M6bXRkLnBtdGRfbG9jXG4gICAgICAgICAgICAgIG10ZC5wbXRkX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPlxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGRcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZCA9XG4gICAgICBsZXQgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiB2ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6dmQucHZhbF9sb2MgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAgICAgICBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIGN0eHRcbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYXMgdmIpID1cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIHZiIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSAoKSAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIGN0eHQgdmJcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpbl9iaW5kaW5nX2N0eHQgPVxuICAgICAgICAgICAgbWF0Y2ggdmFyX25hbWVzX29mI3BhdHRlcm4gcHZiX3BhdCBbXSB3aXRoXG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT4gY3R4dFxuICAgICAgICAgICAgfCBbIHZhcl9uYW1lIF0gLT5cbiAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6cHZiX2xvYyB2YXJfbmFtZSBjdHh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX3BhdCwgcGF0X2Vycm9ycyA9IHNlbGYjcGF0dGVybiBjdHh0IHB2Yl9wYXQgaW5cbiAgICAgICAgICBsZXQgcHZiX2V4cHIsIGV4cHJfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBpbl9iaW5kaW5nX2N0eHQgcHZiX2V4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGluX2JpbmRpbmdfY3R4dCBwdmJfYXR0cmlidXRlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcHZiX2xvYyBpblxuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwYXRfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBleHByX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBlcnJvcnMpXG4gIGVuZFxuXG5jbGFzcyBzZXhwX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbU2V4cC50XSBBc3QubGlmdFxuICAgIG1ldGhvZCBpbnQgPSBzZXhwX29mX2ludFxuICAgIG1ldGhvZCBzdHJpbmcgPSBzZXhwX29mX3N0cmluZ1xuICAgIG1ldGhvZCBib29sID0gc2V4cF9vZl9ib29sXG4gICAgbWV0aG9kIGNoYXIgPSBzZXhwX29mX2NoYXJcbiAgICBtZXRob2QgZmxvYXQgPSBzZXhwX29mX2Zsb2F0XG4gICAgbWV0aG9kIGludDMyID0gc2V4cF9vZl9pbnQzMlxuICAgIG1ldGhvZCBpbnQ2NCA9IHNleHBfb2ZfaW50NjRcbiAgICBtZXRob2QgbmF0aXZlaW50ID0gc2V4cF9vZl9uYXRpdmVpbnRcbiAgICBtZXRob2QgdW5pdCA9IHNleHBfb2ZfdW5pdFxuICAgIG1ldGhvZCBvcHRpb24gPSBzZXhwX29mX29wdGlvblxuICAgIG1ldGhvZCBsaXN0ID0gc2V4cF9vZl9saXN0XG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSAtPiBTZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHAudCA9IHNleHBfb2ZfYXJyYXlcbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2EgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiXG5cbiAgICBtZXRob2QgcmVjb3JkIGZpZWxkcyA9XG4gICAgICBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAobGFiZWwsIHNleHApIC0+XG4gICAgICAgICAgICAgU2V4cC5MaXN0IFsgQXRvbSBsYWJlbDsgc2V4cCBdKSlcblxuICAgIG1ldGhvZCBjb25zdHIgdGFnIGFyZ3MgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoIFtdIC0+IEF0b20gdGFnIHwgXyAtPiBMaXN0IChBdG9tIHRhZyA6OiBhcmdzKVxuXG4gICAgbWV0aG9kIHR1cGxlIGwgPSBMaXN0IGxcbiAgZW5kXG5cbmxldCBzZXhwX29mID0gbmV3IHNleHBfb2ZcbiIsIiMgMSBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuIFxub3BlbiBMZXhpbmdcblxubGV0IHVwZGF0ZV9sb2MgbGV4YnVmIGxpbmVzX3RvX3NraXAgPVxuICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0geyBwb3Mgd2l0aFxuICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgbGluZXNfdG9fc2tpcDtcbiAgICBwb3NfYm9sID0gcG9zLnBvc19jbnVtO1xuICB9XG5cbiMgMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgc2tpcF9oYXNoX2JhbmcgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE0IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDMgKVxuIyAxMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMSAtPlxuIyAxNiBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAxIClcbiMgMTE4IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDIgLT5cbiMgMTcgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICAoICgpIClcbiMgMTIzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuIEltcG9ydFxuXG5sZXQgd2l0aF9vdXRwdXQgZm4gfmJpbmFyeSB+ZiA9XG4gIG1hdGNoIGZuIHdpdGhcbiAgfCBOb25lIHwgU29tZSBcIi1cIiAtPlxuICAgICAgKCogRmxpcHBpbmcgYmFjayBhbmQgZm9ydGggZnJvbSBiaW5hcnkgdG8gdGV4dCBpcyBub3RcbiAgICAgICAgIGEgZ29vZCBpZGVhLCBzbyB3ZSdsbCBtYWtlIHR3byBzaW1wbGlmeWluZyBhc3N1bXB0aW9uczpcbiAgICAgICAgIDEuIEFzc3VtZSB0aGF0IG5vdGhpbmcgaXMgYnVmZmVyZWQgb24gc3Rkb3V0IGJlZm9yZVxuICAgICAgICAgICAgZW50ZXJpbmcgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICAgICBmbHVzaCB0aGUgc3Rkb3V0IG9uIGVudHJ5LlxuICAgICAgICAgMi4gQXNzdW1lIHRoYXQgbm90aGluZyBlbHNlIGlzIHNlbnQgdG8gc3Rkb3V0IGFmdGVyXG4gICAgICAgICAgICBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIGl0IGlzIHNhZmUgdG8gbGVhdmUgc3Rkb3V0XG4gICAgICAgICAgICBjaGFubmVsIGluIGJpbmFyeSBtb2RlIChvciB0ZXh0IG1vZGUgaWYgW2JpbmFyeT10cnVlXSlcbiAgICAgICAgICAgIGFmdGVyIHRoZSBmdW5jdGlvbiBpcyBkb25lLiAqKVxuICAgICAgc2V0X2JpbmFyeV9tb2RlX291dCBzdGRvdXQgYmluYXJ5O1xuICAgICAgZiBzdGRvdXRcbiAgfCBTb21lIGZuIC0+IE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+YmluYXJ5IH5mXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgfCBJbXBsXG5cbiAgbGV0IG9mX2ZpbGVuYW1lIGZuIDogdCBvcHRpb24gPVxuICAgIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxcIiB0aGVuIFNvbWUgSW1wbFxuICAgIGVsc2UgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbGlcIiB0aGVuIFNvbWUgSW50ZlxuICAgIGVsc2UgTm9uZVxuXG4gIGxldCBkZXNjcmliZSA9IGZ1bmN0aW9uIEltcGwgLT4gXCJpbXBsZW1lbnRhdGlvblwiIHwgSW50ZiAtPiBcImludGVyZmFjZVwiXG4gIGxldCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gUG9seS5lcXVhbFxuZW5kXG5cbm1vZHVsZSBJbnRmX29yX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuXG4gIGxldCBtYXAgdCAobWFwIDogQXN0X3RyYXZlcnNlLm1hcCkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIHgpXG5cbiAgbGV0IG1hcF93aXRoX2NvbnRleHQgdCAobWFwIDogXyBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dCkgY3R4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIGN0eCB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgY3R4IHgpXG5cbiAgbGV0IGtpbmQgOiBfIC0+IEtpbmQudCA9IGZ1bmN0aW9uIEludGYgXyAtPiBJbnRmIHwgSW1wbCBfIC0+IEltcGxcbmVuZFxuXG5tb2R1bGUgQXN0X2lvID0gc3RydWN0XG4gIHR5cGUgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfdmVyc2lvbilcblxuICBsZXQgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKVxuICAoKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgaW5wdXQgdmVyc2lvbiBjYW4ndCBiZSBkZXRlcm1pbmVkIGR1ZSB0b1xuICAgICAgbG9hZGluZyBvciBwcmVwcm9jZXNzaW5nIGVycm9ycyAqKVxuXG4gIHR5cGUgdCA9IHtcbiAgICBpbnB1dF9uYW1lIDogc3RyaW5nO1xuICAgIGlucHV0X3ZlcnNpb24gOiBpbnB1dF92ZXJzaW9uO1xuICAgIGFzdCA6IEludGZfb3JfaW1wbC50O1xuICB9XG5cbiAgdHlwZSByZWFkX2Vycm9yID1cbiAgICB8IE5vdF9hX2JpbmFyeV9hc3RcbiAgICB8IFVua25vd25fdmVyc2lvbiBvZiBzdHJpbmcgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFN5c3RlbV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuXG4gIHR5cGUgaW5wdXRfc291cmNlID0gU3RkaW4gfCBGaWxlIG9mIHN0cmluZ1xuICB0eXBlIGlucHV0X2tpbmQgPSBQb3NzaWJseV9zb3VyY2Ugb2YgS2luZC50ICogc3RyaW5nIHwgTmVjZXNzYXJpbHlfYmluYXJ5XG5cbiAgbGV0IHJlYWRfZXJyb3JfdG9fc3RyaW5nIChlcnJvciA6IHJlYWRfZXJyb3IpID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0IC0+IFwiRXJyb3I6IE5vdCBhIGJpbmFyeSBhc3RcIlxuICAgIHwgVW5rbm93bl92ZXJzaW9uIChzLCBfKSAtPiBcIkVycm9yOiBVbmtub3duIHZlcnNpb24gXCIgXiBzXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3IgKGxvYywgXykgLT5cbiAgICAgICAgXCJTb3VyY2UgcGFyc2UgZXJyb3I6XCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuICAgIHwgU3lzdGVtX2Vycm9yIChsb2MsIF8pIC0+IFwiU3lzdGVtIGVycm9yOiBcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG5cbiAgbGV0IHBhcnNlX3NvdXJjZV9jb2RlIH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGljXG4gICAgICA9XG4gICAgKCogVGhlIGlucHV0IHZlcnNpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBpbnB1dCB3aWxsIGdldCBwYXJzZWQgYnlcbiAgICAgICB0aGUgY3VycmVudCBjb21waWxlciBQYXJzZSBtb2R1bGUgKilcbiAgICBsZXQgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIGluXG4gICAgdHJ5XG4gICAgICAoKiBUbyB0ZXN0IGlmIGEgZmlsZSBpcyBhbiBBU1QgZmlsZSwgd2UgaGF2ZSB0byByZWFkIHRoZSBmaXJzdCBmZXcgYnl0ZXMgb2YgdGhlXG4gICAgICAgICBmaWxlLiBJZiBpdCBpcyBub3QsIHdlIGhhdmUgdG8gcGFyc2UgdGhlc2UgYnl0ZXMgYW5kIHRoZSByZXN0IG9mIHRoZSBmaWxlIGFzXG4gICAgICAgICBzb3VyY2UgY29kZS5cbiAgICAgICAgIFRoZSBjb21waWxlciBqdXN0IGRvZXMgW3NlZWtfb24gMF0gaW4gdGhpcyBjYXNlLCBob3dldmVyIHRoaXMgZG9lc24ndCB3b3JrXG4gICAgICAgICB3aGVuIHRoZSBpbnB1dCBpcyBhIHBpcGUuXG4gICAgICAgICBXaGF0IHdlIGRvIGlzIHdlIGJ1aWxkIGEgc3RyaW5nIG9mIHRoZSB3aG9sZSBzb3VyY2UsIGFwcGVuZCB0aGUgcHJlZml4XG4gICAgICAgICBhbmQgYnVpbHQgYSBsZXhpbmcgYnVmZmVyIGZyb20gdGhhdC5cbiAgICAgICAgIFdlIGhhdmUgdG8gcHV0IGFsbCB0aGUgc291cmNlIGludG8gdGhlIGxleGluZyBidWZmZXIgYXQgb25jZSB0aGlzIHdheVxuICAgICAgICAgZm9yIHNvdXJjZSBxdW90YXRpb24gdG8gd29yayBpbiBlcnJvciBtZXNzYWdlcy5cbiAgICAgICAgIFNlZSBvY2FtbCMxMjIzOCBhbmQgb2NhbWwvZHJpdmVyL3BwYXJzZS5tbC4gKilcbiAgICAgIGxldCBhbGxfc291cmNlID0gcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgXiBJbl9jaGFubmVsLmlucHV0X2FsbCBpYyBpblxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBhbGxfc291cmNlIGluXG4gICAgICBsZXhidWYubGV4X2N1cnJfcCA8LSB7IGxleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gaW5wdXRfbmFtZSB9O1xuICAgICAgQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9sZXhidWYgKFNvbWUgbGV4YnVmKTtcbiAgICAgIFNraXBfaGFzaF9iYW5nLnNraXBfaGFzaF9iYW5nIGxleGJ1ZjtcbiAgICAgIGxldCBhc3QgOiBJbnRmX29yX2ltcGwudCA9XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IEludGYgLT4gSW50ZiAoUGFyc2UuaW50ZXJmYWNlIGxleGJ1ZilcbiAgICAgICAgfCBJbXBsIC0+IEltcGwgKFBhcnNlLmltcGxlbWVudGF0aW9uIGxleGJ1ZilcbiAgICAgIGluXG4gICAgICBPayB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgbWFnaWNfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG4gIGxldCByZWFkX21hZ2ljIGljID1cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIH5wb3M6MCB+bGVuIGluXG4gICAgaWYgbGVuID0gbWFnaWNfbGVuZ3RoIHRoZW4gT2sgcyBlbHNlIEVycm9yIHNcblxuICBsZXQgc2V0X2lucHV0X2xleGJ1ZiBpbnB1dF9uYW1lID1cbiAgICBsZXQgc2V0X2lucHV0X2xleGJ1ZiBpYyA9XG4gICAgICAoKiBzZXQgaW5wdXQgbGV4YnVmIGZvciBlcnJvciBtZXNzYWdlcy4gKilcbiAgICAgIGxldCBzb3VyY2UgPSBJbl9jaGFubmVsLmlucHV0X2FsbCBpYyBpblxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzb3VyY2UgaW5cbiAgICAgIEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbGV4YnVmIChTb21lIGxleGJ1Zik7XG4gICAgICBsZXhidWZcbiAgICBpblxuICAgIG1hdGNoIEluX2NoYW5uZWwud2l0aF9maWxlIH5iaW5hcnk6dHJ1ZSBpbnB1dF9uYW1lIH5mOnNldF9pbnB1dF9sZXhidWYgd2l0aFxuICAgIHwgKF8gOiBMZXhpbmcubGV4YnVmKSAtPiAoKVxuICAgIHwgZXhjZXB0aW9uIFN5c19lcnJvciBfIC0+ICgpXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBjaCB+aW5wdXRfa2luZCA9XG4gICAgbGV0IGhhbmRsZV9ub25fYmluYXJ5IHByZWZpeF9yZWFkX2Zyb21fc291cmNlID1cbiAgICAgIG1hdGNoIGlucHV0X2tpbmQgd2l0aFxuICAgICAgfCBQb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIC0+XG4gICAgICAgICAgcGFyc2Vfc291cmNlX2NvZGUgfmtpbmQgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGNoXG4gICAgICB8IE5lY2Vzc2FyaWx5X2JpbmFyeSAtPiBFcnJvciBOb3RfYV9iaW5hcnlfYXN0XG4gICAgaW5cbiAgICAoKiBNYXJzaGFsbGVkIEFTVCBtdXN0IGJlIHJlYWQgaW4gYmluYXJ5IG1vZGUuIEV2ZW4gdGhvdWdoIHdlIGRvbid0IGtub3dcbiAgICAgICBiZWZvcmUgcmVhZGluZyB0aGUgbWFnaWMgbnVtYmVyIHdoZW4gdGhlIGZpbGUgaGFzIGEgbWFyc2hhbGxlZCBBU1QsXG4gICAgICAgaXQgaXMgc2FmZSB0byByZWFkIHNvdXJjZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gKilcbiAgICBzZXRfYmluYXJ5X21vZGVfaW4gY2ggdHJ1ZTtcbiAgICBtYXRjaCByZWFkX21hZ2ljIGNoIHdpdGhcbiAgICB8IEVycm9yIHMgLT4gaGFuZGxlX25vbl9iaW5hcnkgc1xuICAgIHwgT2sgcyAtPiAoXG4gICAgICAgIG1hdGNoIEZpbmRfdmVyc2lvbi5mcm9tX21hZ2ljIHMgd2l0aFxuICAgICAgICB8IEludGYgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBzZXRfaW5wdXRfbGV4YnVmIGlucHV0X25hbWU7XG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkludGYgKElucHV0X3RvX3BweGxpYi5jb3B5X3NpZ25hdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgSW1wbCAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSAtPlxuICAgICAgICAgICAgbGV0IGlucHV0X25hbWUgOiBzdHJpbmcgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlIElucHV0X3RvX3BweGxpYiA9IENvbnZlcnQgKElucHV0X3ZlcnNpb24pIChKcykgaW5cbiAgICAgICAgICAgIHNldF9pbnB1dF9sZXhidWYgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGxldCBhc3QgPSBJbnRmX29yX2ltcGwuSW1wbCAoSW5wdXRfdG9fcHB4bGliLmNvcHlfc3RydWN0dXJlIGFzdCkgaW5cbiAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgICAgIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBhc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfCBVbmtub3duIC0+XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBTdHJpbmcuZXF1YWxcbiAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgQXN0bGliLkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgfHwgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICB0aGVuIEVycm9yIChVbmtub3duX3ZlcnNpb24gKHMsIGZhbGxfYmFja19pbnB1dF92ZXJzaW9uKSlcbiAgICAgICAgICAgIGVsc2UgaGFuZGxlX25vbl9iaW5hcnkgcylcblxuICBsZXQgcmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggaW5wdXRfc291cmNlIHdpdGhcbiAgICAgIHwgU3RkaW4gLT5cbiAgICAgICAgICBzZXRfYmluYXJ5X21vZGVfaW4gc3RkaW4gdHJ1ZTtcbiAgICAgICAgICBmcm9tX2NoYW5uZWwgc3RkaW4gfmlucHV0X2tpbmRcbiAgICAgIHwgRmlsZSBmbiAtPiBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kKVxuICAgIHdpdGggZXhuIC0+IChcbiAgICAgIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgfCBTb21lIGVycm9yIC0+IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCB3cml0ZSBvYyB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24pOyBhc3QgfVxuICAgICAgfmFkZF9wcHhfY29udGV4dCA9XG4gICAgbGV0IG1vZHVsZSBQcHhsaWJfdG9faW5wdXQgPSBDb252ZXJ0IChKcykgKElucHV0X3ZlcnNpb24pIGluXG4gICAgbGV0IG1vZHVsZSBPY2FtbF90b19pbnB1dCA9IENvbnZlcnQgKENvbXBpbGVyX3ZlcnNpb24pIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIG1hdGNoIGFzdCB3aXRoXG4gICAgfCBJbnRmIHNnIC0+XG4gICAgICAgIGxldCBzZyA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHNnXG4gICAgfCBJbXBsIHN0IC0+XG4gICAgICAgIGxldCBzdCA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc3RyIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHN0XG5cbiAgbW9kdWxlIFJlYWRfYmluID0gc3RydWN0XG4gICAgdHlwZSBhc3QgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG4gICAgdHlwZSB0ID0geyBhc3QgOiBhc3Q7IGlucHV0X25hbWUgOiBzdHJpbmcgfVxuXG4gICAgbGV0IHJlYWRfYmluYXJ5IGZuID1cbiAgICAgIG1hdGNoXG4gICAgICAgIEluX2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmcm9tX2NoYW5uZWwgfmlucHV0X2tpbmQ6TmVjZXNzYXJpbHlfYmluYXJ5KVxuICAgICAgd2l0aFxuICAgICAgfCBPayB7IGFzdDsgaW5wdXRfbmFtZTsgXyB9IC0+XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgICAgfCBJbXBsIHN0cnVjdHVyZSAtPiBJbXBsIHN0cnVjdHVyZVxuICAgICAgICAgICAgfCBJbnRmIHNpZ25hdHVyZSAtPiBJbnRmIHNpZ25hdHVyZVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgeyBhc3Q7IGlucHV0X25hbWUgfVxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChyZWFkX2Vycm9yX3RvX3N0cmluZyBlKVxuXG4gICAgbGV0IGdldF9hc3QgdCA9IHQuYXN0XG4gICAgbGV0IGdldF9pbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN5c3RlbSA9IHN0cnVjdFxuICBsZXQgcnVuX3ByZXByb2Nlc3NvciB+cHAgfmlucHV0IH5vdXRwdXQgPVxuICAgIGxldCBjb21tYW5kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgPiAlc1wiIHBwXG4gICAgICAgIChpZiBTdHJpbmcuZXF1YWwgaW5wdXQgXCItXCIgdGhlbiBcIlwiIGVsc2UgU3RkbGliLkZpbGVuYW1lLnF1b3RlIGlucHV0KVxuICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIG91dHB1dClcbiAgICBpblxuICAgIGlmIFN0ZGxpYi5TeXMuY29tbWFuZCBjb21tYW5kID0gMCB0aGVuIE9rICgpXG4gICAgZWxzZSBFcnJvciAoY29tbWFuZCwgQXN0X2lvLmZhbGxfYmFja19pbnB1dF92ZXJzaW9uKVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5tb2R1bGUgRmlsZW5hbWUgPSBTdGRsaWIuRmlsZW5hbWVcblxuKCogVE9ETzogbWFrZSB0aGUgXCJkZXJpdmluZy5cIiBkZXBlbmQgb24gdGhlIG1hdGNoaW5nIGF0dHJpYnV0ZSBuYW1lLiAqKVxubGV0IGVuZF9tYXJrZXJfc2lnID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTaWduYXR1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZW5kX21hcmtlcl9zdHIgPVxuICBBdHRyaWJ1dGUuRmxvYXRpbmcuZGVjbGFyZSBcImRlcml2aW5nLmVuZFwiIFN0cnVjdHVyZV9pdGVtXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbm1vZHVsZSB0eXBlIFQxID0gc2lnXG4gIHR5cGUgJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBnZXRfbG9jIDogdCAtPiBMb2NhdGlvbi50XG4gIHZhbCBlbmRfbWFya2VyIDogKHQsIHVuaXQpIEF0dHJpYnV0ZS5GbG9hdGluZy50XG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA6IHNpZ1xuICAgIHZhbCBhcHBseSA6XG4gICAgICA8IHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gVC50XG4gICAgICA7IHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gVC50XG4gICAgICA7IC4uID4gLT5cbiAgICAgIHQgVC50XG4gIGVuZFxuXG4gIHZhbCBwYXJzZSA6IExleGluZy5sZXhidWYgLT4gdCBsaXN0XG4gIHZhbCBwcCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19zZXhwIDogdCAtPiBTZXhwLnRcbmVuZCkgPVxuc3RydWN0XG4gIGxldCBleHRyYWN0X3ByZWZpeCB+cG9zIGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcInBweGxpYjogW0BAQEBAQCVzXSBhdHRyaWJ1dGUgbWlzc2luZ1wiXG4gICAgICAgICAgICAgICAgKEF0dHJpYnV0ZS5GbG9hdGluZy5uYW1lIE0uZW5kX21hcmtlciksXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBBdHRyaWJ1dGUuRmxvYXRpbmcuY29udmVydF9yZXMgWyBNLmVuZF9tYXJrZXIgXSB4IHdpdGhcbiAgICAgICAgICB8IE9rIE5vbmUgLT4gbG9vcCAoeCA6OiBhY2MpIGxcbiAgICAgICAgICB8IE9rIChTb21lICgpKSAtPiBPayAoTGlzdC5yZXYgYWNjLCAoTS5nZXRfbG9jIHgpLmxvY19zdGFydClcbiAgICAgICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgICAgIHwgZXhjZXB0aW9uIEZhaWx1cmUgXyAtPiBsb29wICh4IDo6IGFjYykgbClcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG4gIGxldCByZW1vdmVfbG9jID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgICAgbWV0aG9kISBsb2NhdGlvbiBfID0gTG9jYXRpb24ubm9uZVxuICAgICAgbWV0aG9kISBsb2NhdGlvbl9zdGFjayBfID0gW11cbiAgICBlbmRcblxuICBtb2R1bGUgTV9tYXAgPSBNLlRyYW5zZm9ybSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2FcbiAgZW5kKVxuXG4gIGxldCByZW1vdmVfbG9jIHggPSBNX21hcC5hcHBseSByZW1vdmVfbG9jIHhcbiAgbGV0IHJlYyBsYXN0IHByZXYgPSBmdW5jdGlvbiBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGRpZmZfYXN0cyB+Z2VuZXJhdGVkIH5yb3VuZF90cmlwID1cbiAgICBsZXQgd2l0aF90ZW1wX2ZpbGUgZiA9XG4gICAgICBFeG4ucHJvdGVjdHhcbiAgICAgICAgKEZpbGVuYW1lLnRlbXBfZmlsZSBcInBweGxpYlwiIFwiXCIpXG4gICAgICAgIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mXG4gICAgaW5cbiAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMSAtPlxuICAgICAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMiAtPlxuICAgICAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgZHVtcCBmbiBhc3QgPVxuICAgICAgICAgICAgICAgICAgT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgICAgICAgICAgICAgIFNleHAucHBfaHVtIHBwZiAoTS50b19zZXhwIGFzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGR1bXAgZm4xIGdlbmVyYXRlZDtcbiAgICAgICAgICAgICAgICBkdW1wIGZuMiByb3VuZF90cmlwO1xuICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgXCJwYXRkaWZmIC1hc2NpaSAtYWx0LW9sZCBnZW5lcmF0ZWQgLWFsdC1uZXcgXFxcbiAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgZm4xKSAoRmlsZW5hbWUucXVvdGUgZm4yKVxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9rID1cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgbGV0IGNtZCA9XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaWZmIC0tbGFiZWwgZ2VuZXJhdGVkIC0tbGFiZWwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC0+cHJpbnRlZC0+cGFyc2VkJyAlcyAlcyAmPiAlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBvayB0aGVuIEluX2NoYW5uZWwucmVhZF9hbGwgb3V0XG4gICAgICAgICAgICAgICAgZWxzZSBcIjxubyBkaWZmZXJlbmNlcyBwcm9kdWNlZCBieSBkaWZmPlwiKSkpXG5cbiAgbGV0IHBhcnNlX3N0cmluZyBzID1cbiAgICBtYXRjaCBNLnBhcnNlIChMZXhpbmcuZnJvbV9zdHJpbmcgcykgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgcmVjIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2UgPVxuICAgIG1hdGNoIChleHBlY3RlZCwgc291cmNlKSB3aXRoXG4gICAgfCBbXSwgW10gLT4gKClcbiAgICB8IFtdLCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyAoTS5nZXRfbG9jIHgpIHdpdGggbG9jX2VuZCA9IChNLmdldF9sb2MgKGxhc3QgeCBsKSkubG9jX2VuZCB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFtdXG4gICAgfCBfLCBbXSAtPlxuICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICB7IExvY2F0aW9uLmxvY19naG9zdCA9IGZhbHNlOyBsb2Nfc3RhcnQgPSBlbmRfcG9zOyBsb2NfZW5kID0gZW5kX3BvcyB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIGV4cGVjdGVkXG4gICAgfCB4IDo6IGV4cGVjdGVkLCB5IDo6IHNvdXJjZSAtPlxuICAgICAgICBsZXQgbG9jID0gTS5nZXRfbG9jIHkgaW5cbiAgICAgICAgbGV0IHggPSByZW1vdmVfbG9jIHggaW5cbiAgICAgICAgbGV0IHkgPSByZW1vdmVfbG9jIHkgaW5cbiAgICAgICAgaWYgUG9seS4oIDw+ICkgeCB5IHRoZW4gKFxuICAgICAgICAgIGxldCByb3VuZF90cmlwID1cbiAgICAgICAgICAgIHJlbW92ZV9sb2MgKHBhcnNlX3N0cmluZyAoRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIE0ucHAgeCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBQb2x5LiggPD4gKSB4IHJvdW5kX3RyaXAgdGhlblxuICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICAgICAgICAgICAgXCJwcHhsaWI6IHRoZSBjb3JyZWN0ZWQgY29kZSBkb2Vzbid0IHJvdW5kLXRyaXAuXFxuXFxcbiAgICAgICAgICAgICAgIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIE9DYW1sIHByaW50ZXI6XFxuXFxcbiAgICAgICAgICAgICAgICVzXCJcbiAgICAgICAgICAgICAgKGRpZmZfYXN0cyB+Z2VuZXJhdGVkOnggfnJvdW5kX3RyaXApO1xuICAgICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFsgeCBdKTtcbiAgICAgICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuXG4gIGxldCBkb19tYXRjaCB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBzb3VyY2UgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGV4dHJhY3RfcHJlZml4IH5wb3Mgc291cmNlID4+fCBmdW4gKHNvdXJjZSwgZW5kX3BvcykgLT5cbiAgICBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlXG5lbmRcblxuKCokKilcbm1vZHVsZSBTdHIgPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZ2V0X2xvYyB4ID0geC5wc3RyX2xvY1xuICBsZXQgZW5kX21hcmtlciA9IGVuZF9tYXJrZXJfc3RyXG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA9IHN0cnVjdFxuICAgIGxldCBhcHBseSBvID0gbyNzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcblxuICBsZXQgcGFyc2UgPSBQYXJzZS5pbXBsZW1lbnRhdGlvblxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmVfaXRlbVxuZW5kKVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5tb2R1bGUgU2lnID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHNpZ25hdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHNpZ19sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3NpZ1xuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc2lnbmF0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW50ZXJmYWNlXG4gIGxldCBwcCA9IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICBsZXQgdG9fc2V4cCA9IEFzdF90cmF2ZXJzZS5zZXhwX29mI3NpZ25hdHVyZV9pdGVtXG5lbmQpXG5cbigqJCopXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmVfcmVzID0gU3RyLmRvX21hdGNoXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmUgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbCA9XG4gIG1hdGNoX3N0cnVjdHVyZV9yZXMgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlX3JlcyA9IFNpZy5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zaWduYXR1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cblxudHlwZSAoXywgXykgZXF1YWxpdHkgPSBFcSA6ICgnYSwgJ2EpIGVxdWFsaXR5IHwgTmUgOiAoXywgXykgZXF1YWxpdHlcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHB4X2ltcG9ydCA6IHR5cGVfZGVjbGFyYXRpb24gdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFBweF9pbXBvcnQgLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcblxuICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgZnVuIGEgYiAtPlxuICAgIG1hdGNoIChhLCBiKSB3aXRoXG4gICAgfCBDbGFzc19leHByLCBDbGFzc19leHByIC0+IEVxXG4gICAgfCBDbGFzc19maWVsZCwgQ2xhc3NfZmllbGQgLT4gRXFcbiAgICB8IENsYXNzX3R5cGUsIENsYXNzX3R5cGUgLT4gRXFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIENsYXNzX3R5cGVfZmllbGQgLT4gRXFcbiAgICB8IENvcmVfdHlwZSwgQ29yZV90eXBlIC0+IEVxXG4gICAgfCBFeHByZXNzaW9uLCBFeHByZXNzaW9uIC0+IEVxXG4gICAgfCBNb2R1bGVfZXhwciwgTW9kdWxlX2V4cHIgLT4gRXFcbiAgICB8IE1vZHVsZV90eXBlLCBNb2R1bGVfdHlwZSAtPiBFcVxuICAgIHwgUGF0dGVybiwgUGF0dGVybiAtPiBFcVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIFNpZ25hdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgU3RydWN0dXJlX2l0ZW0gLT4gRXFcbiAgICB8IFBweF9pbXBvcnQsIFBweF9pbXBvcnQgLT4gRXFcbiAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChQb2x5LiggPD4gKSAoVCBhKSAoVCBiKSk7XG4gICAgICAgIE5lXG5cbiAgbGV0IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2wgPVxuICAgIG1hdGNoIHR5cGVfZGVjbCB3aXRoXG4gICAgfCB7IHB0eXBlX21hbmlmZXN0ID0gU29tZSB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIChuYW1lLCBfKTsgXyB9OyBfIH1cbiAgICAgIC0+XG4gICAgICAgIGxldCB2aXJ0dWFsX3BheWxvYWQgPVxuICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl90eXBlIH5sb2M6dHlwZV9kZWNsLnB0eXBlX2xvYyBSZWN1cnNpdmVcbiAgICAgICAgICAgIFsgdHlwZV9kZWNsIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHIgPSBbXSBpblxuICAgICAgICBTb21lICgobmFtZSwgUFN0ciBbIHZpcnR1YWxfcGF5bG9hZCBdKSwgYXR0cilcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfZXh0ZW5zaW9uIDogdHlwZSBhLiBhIHQgLT4gYSAtPiAoZXh0ZW5zaW9uICogYXR0cmlidXRlcykgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgeyBwY2xfZGVzYyA9IFBjbF9leHRlbnNpb24gZTsgcGNsX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBlOyBwY2ZfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfdHlwZSwgeyBwY3R5X2Rlc2MgPSBQY3R5X2V4dGVuc2lvbiBlOyBwY3R5X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZTsgcGN0Zl9hdHRyaWJ1dGVzID0gYTsgXyB9XG4gICAgICAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ29yZV90eXBlLCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIGU7IHB0eXBfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgRXhwcmVzc2lvbiwgeyBwZXhwX2Rlc2MgPSBQZXhwX2V4dGVuc2lvbiBlOyBwZXhwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV9leHByLCB7IHBtb2RfZGVzYyA9IFBtb2RfZXh0ZW5zaW9uIGU7IHBtb2RfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgTW9kdWxlX3R5cGUsIHsgcG10eV9kZXNjID0gUG10eV9leHRlbnNpb24gZTsgcG10eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBQYXR0ZXJuLCB7IHBwYXRfZGVzYyA9IFBwYXRfZXh0ZW5zaW9uIGU7IHBwYXRfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGUsIGEpOyBfIH0gLT4gU29tZSAoZSwgYSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBQcHhfaW1wb3J0LCB0eXBlX2RlY2wgLT4gZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uIHR5cGVfZGVjbFxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXNfcmVzIDpcbiAgICAgIHR5cGUgYS5cbiAgICAgIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gKGEsIExvY2F0aW9uLkVycm9yLnQgTm9uRW1wdHlMaXN0LnQpIHJlc3VsdCA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDbGFzc19leHByIC0+IE9rIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0geC5wY2xfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IE9rIHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0geC5wY2ZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4gT2sgeyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0geC5wY3R5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+XG4gICAgICAgIE9rIHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IHgucGN0Zl9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IE9rIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IHgucHR5cF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiBPayB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSB4LnBleHBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IE9rIHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IHgucG1vZF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4gT2sgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0geC5wbXR5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IE9rIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IHgucHBhdF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgUHB4X2ltcG9ydCAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWVyZ2VfYXR0cmlidXRlc19yZXMgdCB4IGF0dHJzXG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiZXh0ZW5zaW9uXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuIChDb250ZXh0LlQgY3R4KSAtPiBTb21lIChDb250ZXh0LmRlc2MgY3R4KSlcblxubW9kdWxlIE1ha2UgKENhbGxiYWNrIDogc2lnXG4gIHR5cGUgJ2EgdFxuZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSBwYXlsb2FkX3BhcnNlciA9XG4gICAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAgICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50ICogJ2IgQ2FsbGJhY2sudFxuICAgICAgICAtPiAoJ2EsICdjKSBwYXlsb2FkX3BhcnNlclxuXG4gIHR5cGUgKCdjb250ZXh0LCAncGF5bG9hZCkgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdjb250ZXh0IENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogKHBheWxvYWQsICdwYXlsb2FkKSBwYXlsb2FkX3BhcnNlcjtcbiAgICB3aXRoX2FyZyA6IGJvb2w7XG4gIH1cblxuICBsZXQgZGVjbGFyZSA6XG4gICAgICB0eXBlIGEuXG4gICAgICB3aXRoX2FyZzpib29sIC0+XG4gICAgICBzdHJpbmcgLT5cbiAgICAgIGEgQ29udGV4dC50IC0+XG4gICAgICAocGF5bG9hZCwgJ2IsICdwYXlsb2FkKSBBc3RfcGF0dGVybi50IC0+XG4gICAgICAnYiBDYWxsYmFjay50IC0+XG4gICAgICAoYSwgJ3BheWxvYWQpIHQgPVxuICAgZnVuIH53aXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrIC0+XG4gICAgKCogQ2hlY2sgdGhhdCB0aGVyZSBpcyBubyBjb2xsaXNpb25zIGJldHdlZW4gcHB4X2ltcG9ydCBhbmQgY29yZV90eXBlXG4gICAgICAgZXh0ZW5zaW9ucyAqKVxuICAgIChtYXRjaCBjb250ZXh0IHdpdGhcbiAgICB8IENvbnRleHQuUHB4X2ltcG9ydCAtPlxuICAgICAgICBOYW1lLlJlZ2lzdHJhci5jaGVja19jb2xsaXNpb25zIHJlZ2lzdHJhciAoQ29udGV4dC5UIENvcmVfdHlwZSkgbmFtZVxuICAgIHwgQ29udGV4dC5Db3JlX3R5cGUgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBQcHhfaW1wb3J0KSBuYW1lXG4gICAgfCBfIC0+ICgpKTtcbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgRXh0ZW5zaW9uIHJlZ2lzdHJhciAoQ29udGV4dC5UIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgICAgIHdpdGhfYXJnO1xuICAgIH1cblxuICBsZXQgZmluZCB0cyAoZXh0IDogZXh0ZW5zaW9uKSA9XG4gICAgbGV0IHsgdHh0ID0gbmFtZTsgbG9jIH0gPSBmc3QgZXh0IGluXG4gICAgbGV0IG5hbWUsIGFyZyA9IE5hbWUuc3BsaXRfcGF0aCBuYW1lIGluXG4gICAgbWF0Y2ggTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCBfIDo6IF8gOjogXyBhcyBsIC0+XG4gICAgICAgIEVycm9yXG4gICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZXh0ZW5zaW9uczogJXNcIlxuICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgW10gKVxuICAgIHwgWyB0IF0gLT5cbiAgICAgICAgaWYgKG5vdCB0LndpdGhfYXJnKSAmJiBPcHRpb24uaXNfc29tZSBhcmcgdGhlblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICAgICAgICAgIFwiRXh0ZW5zaW9uICVzIGRvZXNuJ3QgZXhwZWN0IGEgcGF0aCBhcmd1bWVudFwiIG5hbWUsXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBhcmcgPVxuICAgICAgICAgICAgT3B0aW9uLm1hcCBhcmcgfmY6KGZ1biBzIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNoaWZ0ID0gU3RyaW5nLmxlbmd0aCBuYW1lICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGxvYy5sb2Nfc3RhcnQgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eHQgPSBMb25naWRlbnQucGFyc2UgcztcbiAgICAgICAgICAgICAgICAgIGxvYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBsb2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXJ0IHdpdGggcG9zX2NudW0gPSBzdGFydC5wb3NfY251bSArIHNoaWZ0IH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIChTb21lICh0LCBhcmcpKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG4gIGVuZClcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY3R4IHBhdHQgZiA9XG4gICAgZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGN0eCBwYXR0IGZcblxuICBsZXQgZGVjbGFyZSBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY3R4IHBhdHQgKGZ1biB+YXJnOl8gLT4gZilcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmxvYyBleHQgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGZpbmQgdHMgZXh0ID4+PSBmdW4gciAtPlxuICAgIG1hdGNoIHIgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPlxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5hcmcpID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBTb21lIHBheWxvYWRcblxuICBsZXQgY29udmVydCB0cyB+bG9jIGV4dCA9XG4gICAgY29udmVydF9yZXMgdHMgfmxvYyBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbm1vZHVsZSBNID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24udCAtPiBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG5lbmQpXG5cbnR5cGUgJ2EgZXhwYW5kZXJfcmVzdWx0ID0gU2ltcGxlIG9mICdhIHwgSW5saW5lIG9mICdhIGxpc3RcblxubW9kdWxlIEZvcl9jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgJ2EgZXhwYW5kZXJfcmVzdWx0KSBNLnRcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aFxuICAgICAgICB8IFNpbXBsZSB4IC0+IFNvbWUgeFxuICAgICAgICB8IElubGluZSBfIC0+IGZhaWx3aXRoIFwiRXh0ZW5zaW9uLmNvbnZlcnRcIilcblxuICBsZXQgY29udmVydCB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHQgPVxuICAgIGxldCBsb2MgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24uZXh0ZW5zaW9uX3BvaW50X2xvYyBjdHh0IGluXG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgTS5maW5kIHRzIGV4dCA+Pj0gZnVuIGZvdW5kIC0+XG4gICAgbWF0Y2ggZm91bmQgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBNLlBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+IChcbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+Y3R4dCB+YXJnKVxuICAgICAgICA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgbWF0Y2ggcGF5bG9hZCB3aXRoIFNpbXBsZSB4IC0+IFNvbWUgWyB4IF0gfCBJbmxpbmUgbCAtPiBTb21lIGwpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lIHRzIH5jdHh0IGV4dCA9XG4gICAgY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxudHlwZSB0ID0gVCA6IF8gRm9yX2NvbnRleHQudCAtPiB0XG5cbmxldCBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgOiB0eXBlIGEuIGZ1bmM6c3RyaW5nIC0+IGEgQ29udGV4dC50IC0+IHVuaXQgPVxuIGZ1biB+ZnVuYyBjdHggLT5cbiAgbWF0Y2ggY3R4IHdpdGhcbiAgfCBDb250ZXh0LkNsYXNzX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5DbGFzc190eXBlX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5TaWduYXR1cmVfaXRlbSAtPiAoKVxuICB8IENvbnRleHQuU3RydWN0dXJlX2l0ZW0gLT4gKClcbiAgfCBjb250ZXh0IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCIlczogJXMgY2FuJ3QgYmUgaW5saW5lZFwiIGZ1bmNcbiAgICAgICAgKENvbnRleHQuZGVzYyBjb250ZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9ieV9jb250ZXh0IDpcbiAgICB0eXBlIGEuIGEgQ29udGV4dC50IC0+IHQgbGlzdCAtPiBhIEZvcl9jb250ZXh0LnQgbGlzdCA9XG4gZnVuIGNvbnRleHQgZXhwYW5kZXJzIC0+XG4gIG1hdGNoIGV4cGFuZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBUIHQgOjogcmVzdCAtPiAoXG4gICAgICBtYXRjaCBDb250ZXh0LmVxIGNvbnRleHQgdC5jb250ZXh0IHdpdGhcbiAgICAgIHwgRXEgLT4gdCA6OiBmaWx0ZXJfYnlfY29udGV4dCBjb250ZXh0IHJlc3RcbiAgICAgIHwgTmUgLT4gZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0KVxuXG5sZXQgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBjdHggKG5hbWUsIF8pID1cbiAgaWZcbiAgICBub3RcbiAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBFeHRlbnNpb24gbmFtZS50eHRcbiAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dClcbiAgdGhlblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIChDb250ZXh0LlQgY3R4KVxuICAgICAgICBcIkV4dGVuc2lvbiBgJXMnIHdhcyBub3QgdHJhbnNsYXRlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBleHRlbnNpb24gKG5hbWUsIF8pIGFjYyA9XG4gICAgICBhY2NcbiAgICAgIEAgW1xuICAgICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICAgIF1cblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENvcmVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFBhdHRlcm4gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgRXhwcmVzc2lvbiBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc190eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdGZfZXh0ZW5zaW9uIGV4dCAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZV9maWVsZCBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2V4cHIgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjZl9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZmllbGRfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbXR5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzaWdfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTaWduYXR1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtb2RfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIE1vZHVsZV9leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHN0cl9leHRlbnNpb24gKGV4dCwgXykgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFN0cnVjdHVyZV9pdGVtIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2NcbiAgZW5kXG5cbmxldCBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImV4dGVuc2lvbiBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkV4dGVuc2lvbiBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNwYXR0ZXJuX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNleHByZXNzaW9uX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc19leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZmllbGRfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNtb2R1bGVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZV9pdGVtX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX2V4cHJfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG4gIGVuZFxuXG5tb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gICAgVFxuICAgICAgKE0uZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+Y3R4dCB+YXJnOl8gLT5cbiAgICAgICAgICAgayB+Y3R4dCkpXG5cbiAgbGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0IH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgICB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuZW5kXG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gZiA9XG4gIFYzLmRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IGRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGxldCBrJyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBrIGluXG4gIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IF9fZGVjbGFyZV9wcHhfaW1wb3J0IG5hbWUgZXhwYW5kID1cbiAgKCogVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gdW53cmFwIHRoZSB0eXBlIGRlY2xhcmF0aW9uIGZyb20gdGhlIHBheWxvYWRcbiAgICAgYXNzZW1ibGVkIGJ5IFtDb250ZXh0LmdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbl0gKilcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl90eXBlIHJlY3Vyc2l2ZSAoX18gXjo6IG5pbCkgXjo6IG5pbCkpIGluXG4gIFYzLmRlY2xhcmUgbmFtZSBDb250ZXh0LlBweF9pbXBvcnQgcGF0dGVybiBleHBhbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgPSBkZWNsYXJlXG4gIGxldCBkZWNsYXJlX2lubGluZSA9IGRlY2xhcmVfaW5saW5lXG5lbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBFID0gRXh0ZW5zaW9uXG5tb2R1bGUgRUMgPSBFeHRlbnNpb24uQ29udGV4dFxubW9kdWxlIEEgPSBBdHRyaWJ1dGVcbm1vZHVsZSBBQyA9IEF0dHJpYnV0ZS5Db250ZXh0XG5cbm1vZHVsZSBSdWxlID0gc3RydWN0XG4gIG1vZHVsZSBBdHRyX2dyb3VwX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDpcbiAgICAgICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICAgICAgQXN0dHlwZXMucmVjX2ZsYWcgLT5cbiAgICAgICAgJ2IgbGlzdCAtPlxuICAgICAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICAgICAnYSBsaXN0O1xuICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCBfKSB1bnBhY2tlZCAtPiAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYXR0cl9uYW1lIChUIHQpID0gQXR0cmlidXRlLm5hbWUgdC5hdHRyaWJ1dGVcblxuICAgIGxldCBzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCBsID1cbiAgICAgIExpc3QucGFydGl0aW9uIGwgfmY6KGZ1biAoVCB0KSAtPiBub3QgdC5leHBlY3QpXG4gIGVuZFxuXG4gIG1vZHVsZSBBdHRyX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2MgLT4gJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgU3BlY2lhbF9mdW5jdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBpZGVudCA6IExvbmdpZGVudC50O1xuICAgICAgZXhwYW5kIDogUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gUGFyc2V0cmVlLmV4cHJlc3Npb24gb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50X2tpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBGbG9hdCB8IEludGVnZXJcbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3VmZml4IDogY2hhcjtcbiAgICAgIGtpbmQgOiBDb25zdGFudF9raW5kLnQ7XG4gICAgICBleHBhbmQgOiBMb2NhdGlvbi50IC0+IHN0cmluZyAtPiBQYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEV4dGVuc2lvbiA6IEV4dGVuc2lvbi50IHRcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiA6IFNwZWNpYWxfZnVuY3Rpb24udCB0XG4gICAgICB8IENvbnN0YW50IDogQ29uc3RhbnQudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZGVjbGFyYXRpb24pIEF0dHJfZ3JvdXBfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc3RydWN0dXJlX2l0ZW0sIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZXh0IDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leGNlcHRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcblxuICAgIHR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbiAgICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgICBmdW4gYSBiIC0+XG4gICAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgICAgfCBFeHRlbnNpb24sIEV4dGVuc2lvbiAtPiBFcVxuICAgICAgfCBTcGVjaWFsX2Z1bmN0aW9uLCBTcGVjaWFsX2Z1bmN0aW9uIC0+IEVxXG4gICAgICB8IENvbnN0YW50LCBDb25zdGFudCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2wsIEF0dHJfc3RyX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ190eXBlX2RlY2wsIEF0dHJfc2lnX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCwgQXR0cl9zdHJfdHlwZV9leHQgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9leHQsIEF0dHJfc2lnX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiwgQXR0cl9zdHJfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX2V4Y2VwdGlvbiwgQXR0cl9zaWdfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBfIC0+IE5lXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFQgOiAnYSBGaWVsZC50ICogJ2EgLT4gdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfZ3JvdXBfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPlxuICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgJ2IgbGlzdCAtPlxuICAgICdjIG9wdGlvbiBsaXN0IC0+XG4gICAgJ2EgbGlzdCkgLT5cbiAgICB0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYXR0cl9pbmxpbmUgPVxuICAgICgnYiwgJ2MpIEF0dHJpYnV0ZS50IC0+XG4gICAgKGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIGxldCByZWMgZmlsdGVyIDogdHlwZSBhLiBhIEZpZWxkLnQgLT4gdCBsaXN0IC0+IGEgbGlzdCA9XG4gICBmdW4gZmllbGQgbCAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IFQgKGZpZWxkJywgeCkgOjogbCAtPiAoXG4gICAgICAgIG1hdGNoIEZpZWxkLmVxIGZpZWxkIGZpZWxkJyB3aXRoXG4gICAgICAgIHwgRmllbGQuRXEgLT4geCA6OiBmaWx0ZXIgZmllbGQgbFxuICAgICAgICB8IEZpZWxkLk5lIC0+IGZpbHRlciBmaWVsZCBsKVxuXG4gIGxldCBleHRlbnNpb24gZXh0ID0gVCAoRXh0ZW5zaW9uLCBleHQpXG5cbiAgbGV0IHNwZWNpYWxfZnVuY3Rpb24gaWQgZiA9XG4gICAgVCAoU3BlY2lhbF9mdW5jdGlvbiwgeyBuYW1lID0gaWQ7IGlkZW50ID0gTG9uZ2lkZW50LnBhcnNlIGlkOyBleHBhbmQgPSBmIH0pXG5cbiAgbGV0IGNvbnN0YW50IGtpbmQgc3VmZml4IGV4cGFuZCA9IFQgKENvbnN0YW50LCB7IHN1ZmZpeDsga2luZDsgZXhwYW5kIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9uIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdGVkX2NvZGVfaG9vayA9IHN0cnVjdFxuICB0eXBlICdhIHNpbmdsZV9vcl9tYW55ID0gU2luZ2xlIG9mICdhIHwgTWFueSBvZiAnYSBsaXN0XG5cbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgRXh0ZW5zaW9uLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIHNpbmdsZV9vcl9tYW55IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuICBsZXQgcmVwbGFjZSB0IGNvbnRleHQgbG9jIHggPSB0LmYgY29udGV4dCBsb2MgeFxuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE1hbnkgW10gLT4gKClcbiAgICB8IF8gLT4gdC5mIGNvbnRleHQgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IHhcbmVuZFxuXG4oKiBVc2VkIHRvIGluc2VydCBlcnJvciBleHRlbnNpb25zICopXG5sZXQgd3JhcF9leHRlbnNpb24gOiB0eXBlIGEuIGxvYzpMb2NhdGlvbi50IC0+IGEgRUMudCAtPiBhIC0+IGV4dGVuc2lvbiAtPiBhID1cbiBmdW4gfmxvYyB0IG9yaWdpbmFsX25vZGUgZXh0ZW5zaW9uIC0+XG4gICgqIFByZWZpeGluZyBjb25zdHJ1Y3RvcnMgd2l0aCB0aGUgbW9kdWxlIHBhdGggaXMgbmVjZXNzYXJ5IGZvciBPQ2FtbCA8IDQuMDcsXG4gICAgIHNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvaXNzdWVzLzY4NTIgKilcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRUMuQ2xhc3NfZXhwciAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjbF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc19maWVsZCAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjZl9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc190eXBlIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGN0eV9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc190eXBlX2ZpZWxkIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGN0Zl9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Db3JlX3R5cGUgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wdHlwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLkV4cHJlc3Npb24gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wZXhwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLk1vZHVsZV9leHByIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucG1vZF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Nb2R1bGVfdHlwZSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBtdHlfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuUGF0dGVybiAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBwYXRfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuU2lnbmF0dXJlX2l0ZW0gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuICB8IEVDLlN0cnVjdHVyZV9pdGVtIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cbiAgfCBFQy5QcHhfaW1wb3J0IC0+XG4gICAgICAoKiBJbnNlcnQgdGhlIGVycm9yIGluIHRoZSB0eXBlIGRlY2wgbWFuaWZlc3QgKilcbiAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9XG4gICAgICAgIFNvbWUgKEFzdF9idWlsZGVyLkRlZmF1bHQucHR5cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb24pXG4gICAgICBpblxuICAgICAgeyBvcmlnaW5hbF9ub2RlIHdpdGggcHR5cGVfbWFuaWZlc3QgfVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gPVxuICBsZXQgZXJyb3IgPSBleG5fdG9fbG9jX2Vycm9yIGV4biBpblxuICBsZXQgbG9jID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yIGluXG4gIGxldCBleHRlbnNpb24gPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgKGV4dGVuc2lvbiwgbG9jKVxuXG5sZXQgZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IG9yaWdpbmFsX25vZGUgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgd3JhcF9leHRlbnNpb24gfmxvYyBjb250ZXh0IG9yaWdpbmFsX25vZGUgZXh0ZW5zaW9uXG5cbmxldCBleG5fdG9fc3RyaSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG5cbmxldCBleG5fdG9fc2lnaSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG5cbmxldCByZWMgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgeCBleG4pKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgRUMubWVyZ2VfYXR0cmlidXRlc19yZXMgY29udGV4dCB4IGF0dHJzXG4gICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzKVxuXG5sZXQgbWFwX25vZGUgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+aG9vayB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICBXaXRoX2Vycm9ycy5yZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCB4IGV4bikpKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHRcbiAgICAgICAgICAgIChFQy5tZXJnZV9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRycylcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICA+PnwgZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBsb2MgKFNpbmdsZSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgZ2VuZXJhdGVkX2NvZGUpXG5cbmxldCByZWMgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rIH5lbWJlZF9lcnJvcnNcbiAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gW11cbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhlc2UgdHdvIGxldHMgZm9yY2UgdGhlIGV2YWx1YXRpb24gb3JkZXIsIHNvIHRoYXQgZXJyb3JzIGFyZSByZXBvcnRlZCBpbiB0aGVcbiAgICAgICAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgZmlsZS4gKilcbiAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGdldF9sb2MgeCBpblxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIFsgZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IHggZXhuIF0pKVxuICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICAgICAgfCBTb21lIGNvbnZlcnRlZCAtPlxuICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgY29udmVydGVkIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICAgICAgICA+Pj0gZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBleHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAoTWFueSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gY29kZSAtPiBnZW5lcmF0ZWRfY29kZSBAIGNvZGUpKVxuXG5sZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG5sZXQgdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnMgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICBtYXRjaFxuICAgIExpc3QubWFwIHNwZWNpYWxfZnVuY3Rpb25zXG4gICAgICB+ZjooZnVuIHsgUnVsZS5TcGVjaWFsX2Z1bmN0aW9uLmlkZW50OyBleHBhbmQ7IF8gfSAtPiAoaWRlbnQsIGV4cGFuZCkpXG4gICAgKCogV2UgZXhwZWN0IHRoZSBsb29rdXAgdG8gZmFpbCBtb3N0IG9mIHRoZSB0aW1lLCBieSBtYWtpbmcgdGhlIHRhYmxlIGJpZyAoYW5kXG4gICAgICAgc3BhcnNlKSwgd2UgbWFrZSBpdCBtb3JlIGxpa2VseSB0byBmYWlsIHF1aWNrbHkgKilcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0IH5zaXplOihtYXggMTAyNCAoTGlzdC5sZW5ndGggc3BlY2lhbF9mdW5jdGlvbnMgKiAyKSlcbiAgd2l0aFxuICB8IE9rIHRhYmxlIC0+IHRhYmxlXG4gIHwgRXJyb3IgaWRlbnQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkNvbnRleHRfZnJlZS5WMS5tYXBfdG9wX2Rvd246ICVzIHByZXNlbnQgdHdpY2UgaW4gbGlzdCBvZiBzcGVjaWFsIFxcXG4gICAgICAgICBmdW5jdGlvbnNcIlxuICAgICAgICAoTGlzdC5maW5kX21hcF9leG4gc3BlY2lhbF9mdW5jdGlvbnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgaWYgUG9seS5lcXVhbCByLmlkZW50IGlkZW50IHRoZW4gU29tZSByLm5hbWUgZWxzZSBOb25lKSlcblxuKCogW2dldF9ncm91cCBhdHRyIGxdIHJldHVybnMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgZm9yIGVhY2hcbiAgIG5vZGUgaW4gW2xdLlxuICAgSWYgW2xdIGlzIGVtcHR5IG9yIGlmIG5vbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXZlIGFuIGF0dHJpYnV0ZSBhdHRhY2hlZCxcbiAgIFtnZXRfZ3JvdXBdIHJldHVybnMgW05vbmVdLlxuICAgSWYgW2xdIGlzIG5vdCBlbXB0eSBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGFzIGFuIGF0dHJpYnVlXG4gICBhdHRhY2hlZCwgW2dldF9ncm91cF0gcmV0dXJucyB0aGUgZXF1aXZhbGVudCBvZlxuICAgW1NvbWUgKExpc3QubWFwIH5mOihBdHRyaWJ1dGUuZ2V0IGF0dHIpIGwpXS4gKilcbmxldCByZWMgZ2V0X2dyb3VwIGF0dHIgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBOb25lXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIGdldF9ncm91cCBhdHRyIGwgPj49IGZ1biBncm91cCAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYXR0ciB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lID4+fCBmdW4gYXR0cjIgLT5cbiAgICAgIG1hdGNoIChhdHRyMiwgZ3JvdXApIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICB8IE5vbmUsIFNvbWUgdmFscyAtPiBTb21lIChOb25lIDo6IHZhbHMpXG4gICAgICB8IFNvbWUgdmFsdWUsIE5vbmUgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiBMaXN0Lm1hcCBsIH5mOihmdW4gXyAtPiBOb25lKSlcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSB2YWxzIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogdmFscykpXG5cbigqIFNhbWUgYXMgW0xpc3QucmV2XSB0aGVuIFtMaXN0LmNvbmNhdF0gYnV0IGV4cGVjdGluZyB0aGUgaW5wdXQgdG8gYmUgb2YgbGVuZ3RoIDw9IDIgKilcbmxldCByZXZfY29uY2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFsgeCBdIC0+IHhcbiAgfCBbIHg7IHkgXSAtPiB5IEAgeFxuICB8IGwgLT4gTGlzdC5jb25jYXQgKExpc3QucmV2IGwpXG5cbmxldCBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgc29ydF9hdHRyX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgPVxuICBFcnJvclxuICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgIFwiQSBjb250ZXh0LWZyZWUgcnVsZSBkZWxldGVkIG9yIGFkZGVkIGF0dHJpYnVlcyBvZiBhIHN0ci9zaWcgaXRlbVwiLFxuICAgICAgW10gKVxuXG4oKiBSZXR1cm5zIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBhdHRyaWJ1dGUgaGFuZGxlcnMuIFdlIGRvbid0IHJlbW92ZSB0aGVzZSBhdHRyaWJ1dGVzLCBhc1xuICAgYW5vdGhlciBwYXNzIG1pZ2h0IGludGVycHJldCB0aGVtIGxhdGVyLiBGb3IgaW5zdGFuY2UgYm90aCBwcHhfZGVyaXZpbmcgYW5kXG4gICBwcHhsaWJfZGVyaXZpbmcgaW50ZXJwcmV0cyBbQEBkZXJpdmluZ10gYXR0cmlidXRlcy5cblxuICAgVGhpcyBjb21wbGV4aXR5IGlzIGhvcnJpYmxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgZG9uJ3QgY2FyZSBhcyBbYXR0cnNdIGlzIGFsd2F5cyBhIGxpc3RcbiAgIG9mIG9uZSBlbGVtZW50OyBpdCBvbmx5IGhhcyBbQEBkZXJpdmluZ10uXG4qKVxubGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRycyByZiB+aXRlbXMgfmV4cGFuZGVkX2l0ZW1zIH5sb2MgfmJhc2VfY3R4dFxuICAgIH5lbWJlZF9lcnJvcnMgfmNvbnZlcnRfZXhuID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSlcbiAgICB+ZjooZnVuIGFjYyAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5UIGdyb3VwKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGl0ZW1zID4+PSBmdW4gZzEgLT5cbiAgICAgIGdldF9ncm91cCBncm91cC5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbXMgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWVzLCBTb21lIF8gLT4gKFxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIubWFrZSB+ZGVyaXZlZF9pdGVtX2xvYzpsb2NcbiAgICAgICAgICAgICAgfmlubGluZTpncm91cC5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBncm91cC5leHBhbmQgfmN0eHQgcmYgZXhwYW5kZWRfaXRlbXMgdmFsdWVzIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvcl9pdGVtID0gWyBjb252ZXJ0X2V4biBleG4gXSBpblxuICAgICAgICAgICAgcmV0dXJuIChlcnJvcl9pdGVtIDo6IGFjYykpKVxuXG5sZXQgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJzIH5jb252ZXJ0X2V4biB+aXRlbSB+ZXhwYW5kZWRfaXRlbSB+bG9jIH5iYXNlX2N0eHRcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSkgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9pbmxpbmUuVCBhKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBpdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcxIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBleHBhbmRlZF9pdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcyIC0+XG4gICAgICBtYXRjaCAoZzEsIGcyKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gcmV0dXJuIGFjY1xuICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDphY2NcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6YS5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBhLmV4cGFuZCB+Y3R4dCBleHBhbmRlZF9pdGVtIHZhbHVlIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvcl9pdGVtID0gWyBjb252ZXJ0X2V4biBleG4gXSBpblxuICAgICAgICAgICAgcmV0dXJuIChlcnJvcl9pdGVtIDo6IGFjYykpKVxuXG5tb2R1bGUgRXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIGxpc3QgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBub3AgPSB7IGYgPSAoZnVuIF8gXyBfIC0+ICgpKSB9XG5lbmRcblxuY2xhc3MgbWFwX3RvcF9kb3duID8oZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBFeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3ApXG4gID8oZ2VuZXJhdGVkX2NvZGVfaG9vayA9IEdlbmVyYXRlZF9jb2RlX2hvb2subm9wKSA/KGVtYmVkX2Vycm9ycyA9IGZhbHNlKSBydWxlc1xuICA9XG4gIGxldCBob29rID0gZ2VuZXJhdGVkX2NvZGVfaG9vayBpblxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9ucyA9XG4gICAgUnVsZS5maWx0ZXIgU3BlY2lhbF9mdW5jdGlvbiBydWxlcyB8PiB0YWJsZV9vZl9zcGVjaWFsX2Z1bmN0aW9uc1xuICBpblxuICBsZXQgY29uc3RhbnRzID1cbiAgICBSdWxlLmZpbHRlciBDb25zdGFudCBydWxlc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gKGMgOiBSdWxlLkNvbnN0YW50LnQpIC0+ICgoYy5zdWZmaXgsIGMua2luZCksIGMuZXhwYW5kKSlcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0X2V4blxuICBpblxuICBsZXQgZXh0ZW5zaW9ucyA9IFJ1bGUuZmlsdGVyIEV4dGVuc2lvbiBydWxlcyBpblxuICBsZXQgY2xhc3NfZXhwciA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZXhwciBleHRlbnNpb25zXG4gIGFuZCBjbGFzc19maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZmllbGQgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc190eXBlX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNvcmVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY29yZV90eXBlIGV4dGVuc2lvbnNcbiAgYW5kIGV4cHJlc3Npb24gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmV4cHJlc3Npb24gZXh0ZW5zaW9uc1xuICBhbmQgbW9kdWxlX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLm1vZHVsZV9leHByIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV90eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBwYXR0ZXJuID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5wYXR0ZXJuIGV4dGVuc2lvbnNcbiAgYW5kIHNpZ25hdHVyZV9pdGVtID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5zaWduYXR1cmVfaXRlbSBleHRlbnNpb25zXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc3RydWN0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgcHB4X2ltcG9ydCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuUHB4X2ltcG9ydCBleHRlbnNpb25zIGluXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbHMsIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbHMsIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dHMsIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dHMsIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbnMsIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl9leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbnMsIGF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ19leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgbWFwX25vZGUgPSBtYXBfbm9kZSB+aG9vayB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBtYXBfbm9kZXMgPSBtYXBfbm9kZXMgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lID0gaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2lubGluZSA9IGhhbmRsZV9hdHRyX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcF93aXRoX2V4cGFuc2lvbl9jb250ZXh0X2FuZF9lcnJvcnMgYXMgc3VwZXJcblxuICAgICgqIE5vIHBvaW50IHJlY3Vyc2luZyBpbnRvIGV2ZXJ5IGxvY2F0aW9uICopXG4gICAgbWV0aG9kISBsb2NhdGlvbiBfIHggPSByZXR1cm4geFxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY29yZV90eXBlIGNvcmVfdHlwZSBzdXBlciNjb3JlX3R5cGUgeC5wdHlwX2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnBhdHRlcm4gcGF0dGVybiBzdXBlciNwYXR0ZXJuIHgucHBhdF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSA9XG4gICAgICBsZXQgd2l0aF9jb250ZXh0ID1cbiAgICAgICAgKCogTWFrZSBzdXJlIGNvZGUtcGF0aCBhdHRyaWJ1dGUgaXMgYXBwbGllZCBiZWZvcmUgZXhwYW5kaW5nLiAqKVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfdmFsdWUgZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+Pj0gZnVuIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIGUpXG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgIEF0dHJpYnV0ZS5yZW1vdmVfc2Vlbl9yZXMgRXhwcmVzc2lvblxuICAgICAgICAgICAgICBbIFQgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIF1cbiAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmVcbiAgICAgICAgICAgID4+fCBmdW4gZSAtPlxuICAgICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgYmFzZV9jdHh0LCBlKVxuICAgICAgaW5cbiAgICAgIHdpdGhfY29udGV4dCA+Pj0gZnVuIChiYXNlX2N0eHQsIGUpIC0+XG4gICAgICBsZXQgZXhwYW5kZWQgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgICAgbWFwX25vZGUgRUMuZXhwcmVzc2lvbiBleHByZXNzaW9uXG4gICAgICAgICAgICAgIChmdW4gXyBlIC0+IHJldHVybiBlKVxuICAgICAgICAgICAgICBlLnBleHBfbG9jIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgXyAtPiByZXR1cm4gZVxuICAgICAgaW5cbiAgICAgIGV4cGFuZGVkID4+PSBmdW4gZSAtPlxuICAgICAgbGV0IGV4cGFuZF9jb25zdGFudCBraW5kIGNoYXIgdGV4dCA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgY29uc3RhbnRzIChjaGFyLCBraW5kKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgU29tZSBleHBhbmQgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCAoZXhwYW5kIGUucGV4cF9sb2MgdGV4dClcbiAgICAgIGluXG4gICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfYXBwbHkgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgaWQ7IF8gfSBhcyBmdW5jKSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgc3BlY2lhbF9mdW5jdGlvbnMgaWQudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jIGFyZ3NcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBzZWxmI3BleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmNcbiAgICAgICAgICAgICAgICAgICAgYXJnc1xuICAgICAgICAgICAgICB8IFNvbWUgZSAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGUpKVxuICAgICAgfCBQZXhwX2lkZW50IGlkIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2ludGVnZXIgKHMsIFNvbWUgYykpIC0+IChcbiAgICAgICAgICB0cnkgZXhwYW5kX2NvbnN0YW50IEludGVnZXIgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIHJldHVybiAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2Zsb2F0IChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBGbG9hdCBjIHNcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgcmV0dXJuIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcblxuICAgICgqIFByZS1jb25kaXRpb25zOlxuICAgICAgIC0gZS5wZXhwX2Rlc2MgPSBQZXhwX2FwcGx5KGZ1bmMsIGFyZ3MpXG4gICAgICAgLSBmdW5jLnBleHBfZGVzYyA9IFBleHBfaWRlbnQgX1xuICAgICopXG4gICAgbWV0aG9kIHByaXZhdGUgcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgID1cbiAgICAgIGxldCB7IHBleHBfZGVzYyA9IF87IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBlIGluXG4gICAgICBsZXQgZnVuYyA9XG4gICAgICAgIGxldCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfYXR0cmlidXRlczsgcGV4cF9sb2Nfc3RhY2sgfSA9IGZ1bmMgaW5cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgICAge1xuICAgICAgICAgIHBleHBfZGVzYztcbiAgICAgICAgICBwZXhwX2xvYyAoKiBsb2NhdGlvbiBkb2Vzbid0IG5lZWQgdG8gYmUgdHJhdmVyc2VkICopO1xuICAgICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGZ1bmMgPj49IGZ1biBmdW5jIC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biAobGFiLCBleHApIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGV4cCA+PnwgZnVuIGV4cCAtPiAobGFiLCBleHApKVxuICAgICAgICB8PiBjb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGFyZ3MgPj49IGZ1biBhcmdzIC0+XG4gICAgICBzZWxmI2F0dHJpYnV0ZXMgYmFzZV9jdHh0IHBleHBfYXR0cmlidXRlcyA+PnwgZnVuIHBleHBfYXR0cmlidXRlcyAtPlxuICAgICAge1xuICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChmdW5jLCBhcmdzKTtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICB9XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfdHlwZSBjbGFzc190eXBlIHN1cGVyI2NsYXNzX3R5cGUgeC5wY3R5X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIHgucGN0Zl9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc19leHByIGNsYXNzX2V4cHIgc3VwZXIjY2xhc3NfZXhwciB4LnBjbF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGQgeC5wY2ZfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV90eXBlIG1vZHVsZV90eXBlIHN1cGVyI21vZHVsZV90eXBlIHgucG10eV9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgKCgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIHgpXG4gICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIE1vZHVsZV9leHByXG4gICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl9tb2R1bGUgXVxuICAgICAgICAgICAgIHhcbiAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICAgPj58IGZ1biB4IC0+XG4gICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBiYXNlX2N0eHQsIHgpKVxuICAgICAgPj49IGZ1biAoYmFzZV9jdHh0LCB4KSAtPlxuICAgICAgbWFwX25vZGUgRUMubW9kdWxlX2V4cHIgbW9kdWxlX2V4cHIgc3VwZXIjbW9kdWxlX2V4cHIgeC5wbW9kX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zdHJ1Y3R1cmVfaXRlbSBzdHJ1Y3R1cmVfaXRlbSBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4LnBzdHJfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnNpZ25hdHVyZV9pdGVtIHNpZ25hdHVyZV9pdGVtIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHgucHNpZ19sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc3RydWN0dXJlIGJhc2VfY3R4dCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjcGF0dGVybiBiYXNlX2N0eHQgcGNzdHJfc2VsZiA+Pj0gZnVuIHBjc3RyX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc19maWVsZCBjbGFzc19maWVsZCBzdXBlciNjbGFzc19maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY2ZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzdHJfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc3RyX2ZpZWxkcyAtPiB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuUHB4X2ltcG9ydCBwcHhfaW1wb3J0IHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geC5wdHlwZV9sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc2lnbmF0dXJlIGJhc2VfY3R4dCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjY29yZV90eXBlIGJhc2VfY3R4dCBwY3NpZ19zZWxmID4+PSBmdW4gcGNzaWdfc2VsZiAtPlxuICAgICAgbWFwX25vZGVzIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIChmdW4geCAtPiB4LnBjdGZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzaWdfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc2lnX2ZpZWxkcyAtPiB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICAoKiBUT0RPOiB0cnkgdG8gZmFjdG9yaXplICNzdHJ1Y3R1cmUgYW5kICNzaWduYXR1cmUgd2l0aG91dCBtZXRhLXByb2dyYW1taW5nICopXG4gICAgKCokKilcbiAgICBtZXRob2QhIHN0cnVjdHVyZSBiYXNlX2N0eHQgc3QgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTdHJ1Y3R1cmVfaXRlbSBpdGVtLnBzdHJfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHN0cl9sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3N0cnVjdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTdHJ1Y3R1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzdHJ1Y3R1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc3RyX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRfZXhuID0gZXhuX3RvX3N0cmkgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCAoaXRlbS5wc3RyX2Rlc2MsIGV4cGFuZGVkX2l0ZW0ucHN0cl9kZXNjKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHJmLCB0ZHMpLCBQc3RyX3R5cGUgKGV4cF9yZiwgZXhwX3RkcykgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogTm8gY29udGV4dC1mcmVlIHJ1bGUgY2FuIHJld3JpdGUgcmVjIGZsYWdzIGF0bSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWN0cyBhcyBhIGZhaWxzYWZlIGluIGNhc2UgaXQgZXZlciBjaGFuZ2VzICopXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoUG9seS4ocmYgPSBleHBfcmYpKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHMgcmYgfml0ZW1zOnRkc1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSBtdGQsIFBzdHJfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW06bXRkIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBleHQgdGUsIFBzdHJfdHlwZXh0IGV4cF90ZSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzIH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzX2V4cGVjdCB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24gZWMsIFBzdHJfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZF9pdGVtIDo6IHJlc3QpKVxuICAgICAgaW5cbiAgICAgIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbiAgICAoKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG4gICAgbWV0aG9kISBzaWduYXR1cmUgYmFzZV9jdHh0IHNnID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU2lnbmF0dXJlX2l0ZW0gaXRlbS5wc2lnX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzaWdfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zaWduYXR1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU2lnbmF0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc2cgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc2cgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc2lnbmF0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc2lnbmF0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU2lnbmF0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHNpZ19sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2V4biA9IGV4bl90b19zaWdpIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHNpZ19kZXNjLCBleHBhbmRlZF9pdGVtLnBzaWdfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlIChyZiwgdGRzKSwgUHNpZ190eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgbXRkLCBQc2lnX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHRlLCBQc2lnX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGVjLCBQc2lnX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokKilcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBVdGlsc1xuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRXh0ZW5zaW9uIG9mICdhIEV4dGVuc2lvbi5Db250ZXh0LnRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBvZiAnYSBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC50XG5cbiAgbGV0IHBhcmVuIHBwIHBwZiB4ID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiglYSlcIiBwcCB4XG5cbiAgbGV0IHByaW50ZXIgOiB0eXBlIGEuIGEgdCAtPiBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlciAtPiBhIC0+IHVuaXQgPVxuICAgIGxldCBvcGVuIEV4dGVuc2lvbi5Db250ZXh0IGluXG4gICAgbGV0IG9wZW4gQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2V4cHIgLT4gUHByaW50YXN0LmNsYXNzX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlIC0+IFBwcmludGFzdC5jbGFzc190eXBlXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENvcmVfdHlwZSAtPiBwYXJlbiBQcHJpbnRhc3QuY29yZV90eXBlXG4gICAgfCBFeHRlbnNpb24gRXhwcmVzc2lvbiAtPiBwYXJlbiBQcHJpbnRhc3QuZXhwcmVzc2lvblxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV9leHByIC0+IFBwcmludGFzdC5tb2R1bGVfZXhwclxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV90eXBlIC0+IFBwcmludGFzdC5tb2R1bGVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIFBhdHRlcm4gLT4gcGFyZW4gUHByaW50YXN0LnBhdHRlcm5cbiAgICB8IEV4dGVuc2lvbiBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBQcHhfaW1wb3J0IC0+IFBwcmludGFzdC50eXBlX2RlY2xhcmF0aW9uXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlbWVudCA9IHN0cnVjdFxuICB0eXBlIGRhdGEgPVxuICAgIHwgVmFsdWVzIDpcbiAgICAgICAgJ2EgQ29udGV4dC50ICogJ2EgQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2suc2luZ2xlX29yX21hbnlcbiAgICAgICAgLT4gZGF0YVxuICAgIHwgVGV4dCBvZiBzdHJpbmdcblxuICB0eXBlIHQgPSB7IHN0YXJ0IDogTGV4aW5nLnBvc2l0aW9uOyBzdG9wIDogTGV4aW5nLnBvc2l0aW9uOyBkYXRhIDogZGF0YSB9XG5cbiAgbGV0IG1ha2UgfmNvbnRleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID1cbiAgICB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVmFsdWVzIChjb250ZXh0LCByZXBsKSB9XG5cbiAgbGV0IG1ha2VfdGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPSB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVGV4dCByZXBsIH1cblxuICBsZXQgdGV4dCBibG9jayA9XG4gICAgbWF0Y2ggYmxvY2suZGF0YSB3aXRoXG4gICAgfCBUZXh0IHMgLT4gc1xuICAgIHwgVmFsdWVzIChjb250ZXh0LCBnZW5lcmF0ZWQpIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgcHJpbnRlciA9IENvbnRleHQucHJpbnRlciBjb250ZXh0IGluXG4gICAgICAgICAgbWF0Y2ggZ2VuZXJhdGVkIHdpdGhcbiAgICAgICAgICB8IFNpbmdsZSB4IC0+IFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiIHByaW50ZXIgeFxuICAgICAgICAgIHwgTWFueSBsIC0+XG4gICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgKGZ1biBwcGYgbCAtPlxuICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRlciBwcGYgeDtcbiAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKSlcbiAgICAgICAgICAgICAgICBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc193cyA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UgaW5cbiAgICAgICAgbGV0IHN0cmlwX3dzIHMgaSBsZW4gPVxuICAgICAgICAgIGxldCBsZW4gPSByZWYgbGVuIGluXG4gICAgICAgICAgd2hpbGUgIWxlbiA+IDAgJiYgaXNfd3Mgcy5baSArICFsZW4gLSAxXSBkb1xuICAgICAgICAgICAgbGVuIDo9ICFsZW4gLSAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBTdHJpbmcuc3ViIHMgfnBvczppIH5sZW46IWxlblxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBwb3MgPVxuICAgICAgICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHMgdGhlbiBbXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBpZHggPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzdHJpcF93cyBzIHBvcyAoaWR4IC0gcG9zKSA6OiBcIlxcblwiIDo6IGxvb3AgcyAoaWR4ICsgMSlcbiAgICAgICAgaW5cbiAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKGxvb3AgcyAwKVxuZW5kXG5cbm9wZW4gUmVwbGFjZW1lbnRcblxubW9kdWxlIFJlcGxhY2VtZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBSZXBsYWNlbWVudC50IGxpc3RcblxuICAoKiBNZXJnZSBsb2NhdGlvbnMgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBPdmVybGFwcGluZyBsb2NhdGlvbnMgYXJlIG1lcmdlZCBpbnRvIG9uZS4gVGhlXG4gICAgIHJlc3VsdCBpcyBzb3J0ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIHRvIHRoZSBlbmQuICopXG4gIGxldCBjaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgPVxuICAgIExpc3QuaXRlciByZXBscyB+ZjooZnVuIHJlcGwgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBTdHJpbmcuKCA8PiApIHJlcGwuc3RhcnQucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgICB8fCBTdHJpbmcuKCA8PiApIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVuYW1lKVxuICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiB0aGUgcmV3cml0aW5nIGNvbnRhaW5zIHBhcnRzIGZyb20gYW5vdGhlciBmaWxlLlxcblxcXG4gICAgICAgICAgICAgSXQgaXMgdG9vIGNvbXBsaWNhdGVkIHRvIHJlY29uY2lsZSBpdCB3aXRoIHRoZSBzb3VyY2U6ICVzIG9yICVzIFxcXG4gICAgICAgICAgICAgYW5kICVzXCJcbiAgICAgICAgICAgIHJlcGwuc3RhcnQucG9zX2ZuYW1lIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgYXNzZXJ0IChyZXBsLnN0YXJ0LnBvc19jbnVtIDw9IHJlcGwuc3RvcC5wb3NfY251bSkpO1xuICAgIGxldCByZXBscyA9XG4gICAgICBMaXN0LnNvcnQgcmVwbHMgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgICAgIGxldCBkID0gY29tcGFyZSBhLnN0YXJ0LnBvc19jbnVtIGIuc3RvcC5wb3NfY251bSBpblxuICAgICAgICAgIGlmIGQgPSAwIHRoZW5cbiAgICAgICAgICAgICgqIFB1dCB0aGUgbGFyZ2VzdCBmaXJzdCwgc28gdGhhdCB0aGUgZm9sbG93aW5nIFtmaWx0ZXJdIGZ1bmN0aW9ucyBhbHdheXMgcGlja3MgdXBcbiAgICAgICAgICAgICAgIHRoZSBsYXJ0ZXN0IGZpcnN0IHdoZW4gc2V2ZXJhbCBnZW5lcmF0ZWQgcmVwbHMgc3RhcnQgYXQgdGhlIHNhbWUgcG9zaXRpb24gKilcbiAgICAgICAgICAgIGNvbXBhcmUgYi5zdG9wLnBvc19jbnVtIGEuc3RvcC5wb3NfY251bVxuICAgICAgICAgIGVsc2UgZClcbiAgICBpblxuICAgIGxldCByZWMgZmlsdGVyIHByZXYgcmVwbHMgfmFjYyA9XG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IChwcmV2IDo6IGFjYylcbiAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID49IHJlcGwuc3RvcC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgICgqIFtyZXBsXSBpcyBpbmNsdWRlZCBpbiBbcHJldl0gPT4gc2tpcCBbcmVwbF0gKilcbiAgICAgICAgICAgICAgZmlsdGVyIHByZXYgcmVwbHMgfmFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IGxvY2F0aW9ucyBvZiBnZW5lcmF0ZWQgY29kZSBhcmUgb3ZlcmxhcHBpbmcsIFxcXG4gICAgICAgICAgICAgICAgIGNhbm5vdCByZWNvbmNpbGVcIlxuICAgICAgICAgICAgICAgIH5sb2M6XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9IHJlcGwuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGxvY19lbmQgPSBwcmV2LnN0b3A7XG4gICAgICAgICAgICAgICAgICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzoocHJldiA6OiBhY2MpXG4gICAgaW5cbiAgICBtYXRjaCByZXBscyB3aXRoIFtdIC0+IFtdIHwgcmVwbCA6OiByZXBscyAtPiBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOltdXG5lbmRcblxubGV0IGNvdW50X25ld2xpbmVzIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIFN0cmluZy5pdGVyIHMgfmY6KGZ1bmN0aW9uICdcXG4nIC0+IG4gOj0gIW4gKyAxIHwgXyAtPiAoKSk7XG4gICFuXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9iZWdpbiA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEJFR0lOIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxubGV0IGdlbmVyYXRlZF9jb2RlX2VuZCA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEVORCAgIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxudHlwZSBtb2RlID0gVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzXG50eXBlIHRhcmdldCA9IE91dHB1dCBvZiBtb2RlIHwgQ29ycmVjdGVkXG5cbmxldCBza2lwX2JsYW5rX2VvbCBjb250ZW50cyAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSA9XG4gIGxldCByZWMgbG9vcCBjbnVtID1cbiAgICBpZiBjbnVtID0gU3RyaW5nLmxlbmd0aCBjb250ZW50cyB0aGVuIHsgcG9zIHdpdGggcG9zX2NudW0gPSBjbnVtIH1cbiAgICBlbHNlXG4gICAgICBtYXRjaCBjb250ZW50cy5bY251bV0gd2l0aFxuICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXHInIC0+IGxvb3AgKGNudW0gKyAxKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvcyB3aXRoXG4gICAgICAgICAgICBwb3NfY251bSA9IGNudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2JvbCA9IGNudW0gKyAxO1xuICAgICAgICAgIH1cbiAgICAgIHwgXyAtPiBwb3NcbiAgaW5cbiAgbG9vcCBwb3MucG9zX2NudW1cblxubGV0IHdpdGhfb3V0cHV0IH5zdHlsZXIgfihraW5kIDogS2luZC50KSBmbiB+ZiA9XG4gIG1hdGNoIHN0eWxlciB3aXRoXG4gIHwgTm9uZSAtPiB3aXRoX291dHB1dCBmbiB+YmluYXJ5OmZhbHNlIH5mXG4gIHwgU29tZSBjbWQgLT5cbiAgICAgIGxldCB0bXBfZm4sIG9jID1cbiAgICAgICAgU3RkbGliLkZpbGVuYW1lLm9wZW5fdGVtcF9maWxlIFwicHB4bGliX2RyaXZlclwiXG4gICAgICAgICAgKG1hdGNoIGtpbmQgd2l0aCBJbXBsIC0+IFwiLm1sXCIgfCBJbnRmIC0+IFwiLm1saVwiKVxuICAgICAgaW5cbiAgICAgIGxldCBjbWQgPVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzJXNcIiBjbWRcbiAgICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIHRtcF9mbilcbiAgICAgICAgICAobWF0Y2ggZm4gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIGZuIC0+IFwiID4gXCIgXiBTdGRsaWIuRmlsZW5hbWUucXVvdGUgZm4pXG4gICAgICBpblxuICAgICAgbGV0IG4gPVxuICAgICAgICBFeG4ucHJvdGVjdHggdG1wX2ZuIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mOihmdW4gXyAtPlxuICAgICAgICAgICAgRXhuLnByb3RlY3R4IG9jIH5maW5hbGx5OmNsb3NlX291dCB+ZjtcbiAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQpXG4gICAgICBpblxuICAgICAgaWYgbiA8PiAwIHRoZW4gKFxuICAgICAgICBQcmludGYuZXByaW50ZiBcImNvbW1hbmQgZXhpdGVkIHdpdGggY29kZSAlZDogJXNcXG5cIiBuIGNtZDtcbiAgICAgICAgU3RkbGliLmV4aXQgMSlcblxubGV0IHJlY29uY2lsZSA/c3R5bGVyIChyZXBscyA6IFJlcGxhY2VtZW50cy50KSB+a2luZCB+Y29udGVudHMgfmlucHV0X2ZpbGVuYW1lXG4gICAgfm91dHB1dCB+aW5wdXRfbmFtZSB+dGFyZ2V0ID1cbiAgbGV0IHJlcGxzID0gUmVwbGFjZW1lbnRzLmNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyBpblxuICBsZXQgb3V0cHV0X25hbWUgPSBtYXRjaCBvdXRwdXQgd2l0aCBOb25lIC0+IFwiPHN0ZG91dD5cIiB8IFNvbWUgZm4gLT4gZm4gaW5cbiAgd2l0aF9vdXRwdXQgb3V0cHV0IH5zdHlsZXIgfmtpbmQgfmY6KGZ1biBvYyAtPlxuICAgICAgbGV0IGNvcHlfaW5wdXQgcG9zIH51cF90byB+bGluZSB+bGFzdF9pc190ZXh0IH5pc190ZXh0ID1cbiAgICAgICAgbGV0IHBvcyA9IGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvcyBpblxuICAgICAgICBpZiBwb3MucG9zX2NudW0gPCB1cF90byB0aGVuIChcbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuJSpzXCIgcG9zLnBvc19sbnVtIGlucHV0X25hbWVcbiAgICAgICAgICAgICAgICAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyB8IENvcnJlY3RlZCAtPiAoKSk7XG4gICAgICAgICAgb3V0cHV0X3N1YnN0cmluZyBvYyBjb250ZW50cyB+cG9zOnBvcy5wb3NfY251bVxuICAgICAgICAgICAgfmxlbjoodXBfdG8gLSBwb3MucG9zX2NudW0pO1xuICAgICAgICAgIGxldCBsaW5lID0gcmVmIChsaW5lICsgMSkgaW5cbiAgICAgICAgICBmb3IgaSA9IHBvcy5wb3NfY251bSB0byB1cF90byAtIDEgZG9cbiAgICAgICAgICAgIGlmIENoYXIuZXF1YWwgY29udGVudHMuW2ldICdcXG4nIHRoZW4gbGluZSA6PSAhbGluZSArIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBsaW5lID0gIWxpbmUgaW5cbiAgICAgICAgICBpZiAobm90IGlzX3RleHQpICYmIENoYXIuKCA8PiApIGNvbnRlbnRzLlt1cF90byAtIDFdICdcXG4nIHRoZW4gKFxuICAgICAgICAgICAgb3V0cHV0X2NoYXIgb2MgJ1xcbic7XG4gICAgICAgICAgICBsaW5lICsgMSlcbiAgICAgICAgICBlbHNlIGxpbmUpXG4gICAgICAgIGVsc2UgbGluZVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoY29weV9pbnB1dCBwb3MgfnVwX3RvOihTdHJpbmcubGVuZ3RoIGNvbnRlbnRzKSB+bGluZVxuICAgICAgICAgICAgICAgICB+bGFzdF9pc190ZXh0IH5pc190ZXh0OmZhbHNlXG4gICAgICAgICAgICAgICAgOiBpbnQpXG4gICAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgICAgbGV0IGlzX3RleHQgPVxuICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBjb3B5X2lucHV0IHBvcyB+dXBfdG86cmVwbC5zdGFydC5wb3NfY251bSB+bGluZSB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICAgICAgfmlzX3RleHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcblwiIChsaW5lICsgMSkgb3V0cHV0X25hbWU7XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbjtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgQ29ycmVjdGVkIC0+IGxpbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzIH5sYXN0X2lzX3RleHQ6aXNfdGV4dFxuICAgICAgYW5kIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBsc1xuICAgICAgICAgIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT4gZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzJyAtPlxuICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgIGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgICAgbGV0IGxhc3RfaXNfdGV4dCA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzJyB+bGFzdF9pc190ZXh0XG4gICAgICBhbmQgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2VuZCk7XG4gICAgICAgIGxvb3AgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IGlucHV0X25hbWU7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgeyBzdGFydCA9IHsgcG9zX2NudW0gPSAwOyBfIH07IF8gfSA6OiBfIC0+XG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbik7XG4gICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlXG4gICAgICB8IF8gLT4gbG9vcCAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlKVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIG5leHRfaWQgOiBpbnQ7XG4gIG11dGFibGUgYmluZGluZ3MgOiBQYXJzZXRyZWUudmFsdWVfYmluZGluZyBsaXN0O1xufVxuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0X2lkID0gMDsgYmluZGluZ3MgPSBbXSB9XG5cbmxldCBzYW5pdGl6ZSB0IGUgPVxuICBtYXRjaCB0LmJpbmRpbmdzIHdpdGhcbiAgfCBbXSAtPiBlXG4gIHwgYmluZGluZ3MgLT5cbiAgICAgIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGUucGV4cF9sb2MgaW5cbiAgICAgIEFzdC5wZXhwX2xldCBOb25yZWN1cnNpdmUgYmluZGluZ3MgZVxuXG5sZXQgcXVvdGUgdCAoZSA6IGV4cHJlc3Npb24pID1cbiAgbGV0IGxvYyA9IGUucGV4cF9sb2MgaW5cbiAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgbG9jIGluXG4gIGxldCBuYW1lID0gXCJfX1wiIF4gSW50LnRvX3N0cmluZyB0Lm5leHRfaWQgaW5cbiAgbGV0IGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgICgqIE9wdGltaXplIGlkZW50aWZpZXIgcXVvdGluZyBieSBhdm9pZGluZyBjbG9zdXJlLlxuICAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtcHB4L3BweF9kZXJpdmluZy9wdWxsLzI1Mi4gKilcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT4gKGUsIEFzdC5ldmFyIG5hbWUpXG4gICAgfCBfIC0+XG4gICAgICAgIGxldCBiaW5kaW5nX2V4cHIgPVxuICAgICAgICAgIEFzdC5wZXhwX2Z1biBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgIChsZXQgdW5pdCA9IEFzdF9idWlsZGVyLkRlZmF1bHQuTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIgaW5cbiAgICAgICAgICAgICBBc3QucHBhdF9jb25zdHJ1Y3QgdW5pdCBOb25lKVxuICAgICAgICAgICAgZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcXVvdGVkX2V4cHIgPSBBc3QuZWFwcGx5IChBc3QuZXZhciBuYW1lKSBbIEFzdC5ldW5pdCBdIGluXG4gICAgICAgIChiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByKVxuICBpblxuICBsZXQgYmluZGluZyA9XG4gICAgbGV0IHBhdCA9IEFzdC5wdmFyIG5hbWUgaW5cbiAgICBBc3QudmFsdWVfYmluZGluZyB+cGF0IH5leHByOmJpbmRpbmdfZXhwclxuICBpblxuICB0LmJpbmRpbmdzIDwtIGJpbmRpbmcgOjogdC5iaW5kaW5ncztcbiAgdC5uZXh0X2lkIDwtIHQubmV4dF9pZCArIDE7XG4gIHF1b3RlZF9leHByXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IG1rX2F0dHJfbm9sb2MgdHh0ID0gQXN0X2hlbHBlci5BdHRyLm1rIExvY2F0aW9uLnsgdHh0OyBsb2MgPSBub25lIH1cbmxldCBoaWRlX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uaGlkZVwiIChQU3RyIFtdKVxubGV0IGZvY3VzX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uZm9jdXNcIiAoUFN0ciBbXSlcblxubGV0IGhpZGVfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBoaWRlX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuIiwib3BlbiBJbXBvcnRcblxubW9kdWxlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGluc2VydCA6IG5vZGVfbmFtZTpzdHJpbmcgLT4gTG9jYXRpb24udCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uIDogdCAtPiB0IC0+IHRcblxuICB2YWwgY292ZXJlZF9ieSA6IHQgLT4gbG9jOkxvY2F0aW9uLnQgLT4gYm9vbFxuICAoKiogW2NvdmVyZWRfYnkgdCB+bG9jID0gdHJ1ZV0gaWZmIFt0XSBpcyBjb3ZlcmVkIGJ5IFtsb2NdICopXG5cbiAgdmFsIGZpbmRfb3V0c2lkZSA6IExvY2F0aW9uLnQgLT4gdCAtPiBzdHJpbmcgKiBMb2NhdGlvbi50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1pbl9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIG1heF9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIHJhbmdlcyA6IChzdHJpbmcgKiBMb2NhdGlvbi50KSBsaXN0O1xuICB9XG5cbiAgbGV0IGVtcHR5ID0geyBtaW5fcG9zID0gTm9uZTsgbWF4X3BvcyA9IE5vbmU7IHJhbmdlcyA9IFtdIH1cblxuICBsZXQgcmVjIGluc2VydCByYW5nZXMgKChub2RlX25hbWUsIG5vZGVfbG9jKSBhcyBub2RlKSA9XG4gICAgbWF0Y2ggcmFuZ2VzIHdpdGhcbiAgICB8IFtdIC0+IFsgbm9kZSBdXG4gICAgfCAoKHhfbmFtZSwgeF9sb2MpIGFzIHgpIDo6IHhzIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uIGluXG4gICAgICAgIGlmIGNvbXBhcmVfcG9zIG5vZGVfbG9jLmxvY19zdGFydCB4X2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIG5vZGUgOjogeCA6OiB4c1xuICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcG9zIHhfbG9jLmxvY19zdGFydCBub2RlX2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIHggOjogaW5zZXJ0IHhzIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICAgICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4LCAlcyBvdmVybGFwcyB3aXRoICVzIGF0IGxvY2F0aW9uOkAuJWFcIlxuICAgICAgICAgICAgbm9kZV9uYW1lIHhfbmFtZSBMb2NhdGlvbi5wcmludCB4X2xvY1xuXG4gIGxldCBtaW5fcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWluX3BvcyBwMSBwMilcblxuICBsZXQgbWF4X3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1heF9wb3MgcDEgcDIpXG5cbiAgbGV0IGxvbmdlc3RfZmlyc3QgbDEgbDIgfnN0b3BfYWZ0ZXIgPVxuICAgIGxldCByZWMgbG9vcCB4cyB5cyBuID1cbiAgICAgIG1hdGNoICh4cywgeXMsIG4pIHdpdGhcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBfLCAwIC0+IChsMiwgbDEpXG4gICAgICB8IF8sIFtdLCBfIC0+IChsMSwgbDIpXG4gICAgICB8IF8gOjogeHMsIF8gOjogeXMsIG4gLT4gbG9vcCB4cyB5cyAobiAtIDEpXG4gICAgaW5cbiAgICBsb29wIGwxIGwyIHN0b3BfYWZ0ZXJcblxuICBsZXQgdW5pb24gdDEgdDIgPVxuICAgIGxldCBpbml0LCBsID0gbG9uZ2VzdF9maXJzdCB0MS5yYW5nZXMgdDIucmFuZ2VzIH5zdG9wX2FmdGVyOjQyIGluXG4gICAgbGV0IHJhbmdlcyA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6aW5zZXJ0IGluXG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgdDEubWluX3BvcyB0Mi5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgdDEubWF4X3BvcyB0Mi5tYXhfcG9zO1xuICAgICAgcmFuZ2VzO1xuICAgIH1cblxuICBsZXQgaW5zZXJ0IH5ub2RlX25hbWUgbG9jIHQgPVxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIChTb21lIGxvYy5sb2Nfc3RhcnQpIHQubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIChTb21lIGxvYy5sb2NfZW5kKSB0Lm1heF9wb3M7XG4gICAgICByYW5nZXMgPSBpbnNlcnQgdC5yYW5nZXMgKG5vZGVfbmFtZSwgbG9jKTtcbiAgICB9XG5cbiAgbGV0IGNvdmVyZWRfYnkgdCB+bG9jID1cbiAgICBtYXRjaCAodC5taW5fcG9zLCB0Lm1heF9wb3MpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBtaW5fcG9zLCBTb21lIG1heF9wb3MgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbWluX3BvcyBsb2MubG9jX3N0YXJ0ID49IDBcbiAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbWF4X3BvcyBsb2MubG9jX2VuZCA8PSAwXG4gICAgfCBfLCBfIC0+XG4gICAgICAgICgqIHRoZXJlIGFyZSBubyBvcGVuIHJhbmdlcyAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuICBsZXQgZmluZF9vdXRzaWRlIGxvYyB0ID1cbiAgICBMaXN0LmZpbmQgdC5yYW5nZXMgfmY6KGZ1biAoXywgbCkgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19zdGFydCBsLmxvY19zdGFydCA+IDBcbiAgICAgICAgfHwgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgbC5sb2NfZW5kIDwgMClcbmVuZFxuXG5sZXQgcmVsb2NfcG10eV9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbXR5X2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtdHlfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG10eV9sb2MgPSB7IHJlcy5wbXR5X2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgcmVsb2NfcG1vZF9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbW9kX2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtb2RfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG1vZF9sb2MgPSB7IHJlcy5wbW9kX2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYyA9XG4gIExpc3QuZm9yX2FsbCB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGF0dHIuYXR0cl9sb2MubG9jX2VuZCA+PSAwKVxuXG5sZXQgZmlsZSA6IHN0cmluZyBvcHRpb24gcmVmID0gcmVmIE5vbmVcbmxldCBzYW1lX2ZpbGVfc29fZmFyID0gcmVmIHRydWVcblxubGV0IHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGZuYW1lID1cbiAgKCogVE9ETzogcmVtb3ZlIHVzZXMgb2YgTG9jYXRpb24ubm9uZSBmcm9tIHRoZSBwcHhlcy4gKilcbiAgaWYgU3RyaW5nLmVxdWFsIGZuYW1lIFwiX25vbmVfXCIgdGhlbiB0cnVlICgqIGRvIG5vdGhpbmcgZm9yIG5vdy4gKilcbiAgZWxzZVxuICAgIG1hdGNoICFmaWxlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgZmlsZSA6PSBTb21lIGZuYW1lO1xuICAgICAgICB0cnVlXG4gICAgfCBTb21lIG9yaWdfZm5hbWUgLT5cbiAgICAgICAgU3RyaW5nLmVxdWFsIG9yaWdfZm5hbWUgZm5hbWVcbiAgICAgICAgfHxcbiAgICAgICAgKHNhbWVfZmlsZV9zb19mYXIgOj0gZmFsc2U7XG4gICAgICAgICBmYWxzZSlcblxubGV0IHNob3VsZF9pZ25vcmUgbG9jIGF0dHJzID1cbiAgKCogSWYgdGhlIGZpbGVuYW1lIGNoYW5nZWQsIHRoZW4gdGhlcmUgd2VyZSBsaW5lIGRpcmVjdGl2ZXMsIGFuZCB0aGUgbG9jYXRpb25zXG4gICAgIGFyZSBhbGwgbWVzc2VkIHVwLiAqKVxuICAobm90IChzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSkpXG4gIHx8ICgqIElnbm9yZSB0aGluZ3MgZXhwbGljaXRseSBtYXJrZWQuICopXG4gIExpc3QuZXhpc3RzXG4gICAgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBTdHJpbmcuZXF1YWwgYXR0ci5hdHRyX25hbWUudHh0XG4gICAgICAgIE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlLmF0dHJfbmFtZS50eHQpXG4gICAgYXR0cnNcblxubGV0IHJlYyBleHRyYWN0X2NvbnN0cmFpbnQgZSA9XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSB8IFBleHBfY29lcmNlIChlLCBfLCBjdCkgLT4gU29tZSAoZSwgY3QpXG4gIHwgUGV4cF9uZXd0eXBlIChuYW1lLCBleHApIC0+XG4gICAgICBPcHRpb24ubWFwIChleHRyYWN0X2NvbnN0cmFpbnQgZXhwKSB+ZjooZnVuIChleHAsIGN0KSAtPlxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlIChuYW1lLCBleHApO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdCApKVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZG9fY2hlY2sgfm5vZGVfbmFtZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzID1cbiAgaWYgbm90ICFzYW1lX2ZpbGVfc29fZmFyIHRoZW4gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgZWxzZSBpZiBub2RlX2xvYy5sb2NfZ2hvc3QgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnVuaW9uIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcbiAgZWxzZSBpZiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5jb3ZlcmVkX2J5IGNoaWxkcmVuc19sb2NzIH5sb2M6bm9kZV9sb2MgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lIG5vZGVfbG9jIHNpYmxpbmdzX2xvY3NcbiAgZWxzZVxuICAgIGxldCBjaGlsZF9uYW1lLCBjaGlsZF9sb2MgPVxuICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZmluZF9vdXRzaWRlIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgaW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweDpAIHRoaXMgJXMgaXMgYnVpbHQgZnJvbSBhJXMgd2hvc2UgbG9jYXRpb24gaXMgXFxcbiAgICAgICBvdXRzaWRlIG9mIHRoaXMgbm9kZSdzLkAuQ2hpbGQgJXMgZm91bmQgYXQ6QCAlYVwiXG4gICAgICBub2RlX25hbWVcbiAgICAgICgobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgY2hpbGRfbmFtZSAwIHdpdGhcbiAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyAtPiBcIm4gXCJcbiAgICAgICB8IF8gLT4gXCIgXCIpXG4gICAgICBeIGNoaWxkX25hbWUpXG4gICAgICBjaGlsZF9uYW1lIExvY2F0aW9uLnByaW50IGNoaWxkX2xvY1xuXG5sZXQgZW5mb3JjZV9pbnZhcmlhbnRzIGZuYW1lID1cbiAgbGV0ICgpID0gZmlsZSA6PSBmbmFtZSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICgqIFRPRE86IHdlIHNob3VsZCBnZW5lcmF0ZSBhIGNsYXNzIHdoaWNoIGVuZm9yY2VzIHRoZSBsb2NhdGlvbiBpbnZhcmlhbnQuXG4gICAgICAgQW5kIHRoZW4gd2Ugc2hvdWxkIG9ubHkgb3ZlcnJpZGUgdGhlIG1ldGhvZHMgd2hlcmUgd2UgbmVlZCBhbiBlc2NhcGVcbiAgICAgICBoYXRjaCBiZWNhdXNlIHRoZSBwYXJzZXIgaXNuJ3QgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLlxuXG4gICAgICAgVGhhdCB3b3VsZCBlbnN1cmUgdGhhdCB3ZSBzdGF5IHVwIHRvIGRhdGUgYXMgdGhlIEFTVCBjaGFuZ2VzLiAqKVxuXG4gICAgbWV0aG9kISBsb25naWRlbnRfbG9jIHggc2libGluZ3MgPVxuICAgICAgaWYgeC5sb2MubG9jX2dob3N0IHRoZW4gc2libGluZ3NcbiAgICAgIGVsc2UgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWU6XCJpZGVudFwiIHgubG9jIHNpYmxpbmdzXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnByZl9sb2MgeC5wcmZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjcm93X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInJvdyBmaWVsZFwiIHgucHJmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9iamVjdF9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvZl9sb2MgeC5wb2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvYmplY3RfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib2JqZWN0IGZpZWxkXCIgeC5wb2ZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBiaW5kaW5nX29wIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNiaW5kaW5nX29wIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJiaW5kaW5nIG9wZXJhdG9yXCIgeC5wYm9wX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZhbF9sb2MgeC5wdmFsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgZGVzY3JpcHRpb25cIiB4LnB2YWxfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cGVfbG9jIHgucHR5cGVfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZGVjbGFyYXRpb25cIiB4LnB0eXBlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbGRfbG9jIHgucGxkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibGFiZWwgZGVjbGFyYXRpb25cIiB4LnBsZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNkX2xvYyB4LnBjZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCIgeC5wY2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4dF9sb2MgeC5wdHlleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGV4dGVuc2lvblwiIHgucHR5ZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4dF9sb2MgeC5wZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiIHgucGV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3R5X2xvYyB4LnBjdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlXCIgeC5wY3R5X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3RmX2xvYyB4LnBjdGZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGUgZmllbGRcIiB4LnBjdGZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNpX2xvYyB4LnBjaV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3NcIiB4LnBjaV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNsX2xvYyB4LnBjbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc19leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGV4cHJlc3Npb25cIiB4LnBjbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNmX2xvYyB4LnBjZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGZpZWxkXCIgeC5wY2ZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc2lnX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzaWduYXR1cmUgaXRlbVwiIHgucHNpZ19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtZF9sb2MgeC5wbWRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGRlY2xhcmF0aW9uXCIgeC5wbWRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1zX2xvYyB4LnBtc19hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9zdWJzdGl0dXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHN1YnN0aXR1dGlvblwiIHgucG1zX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXRkX2xvYyB4LnBtdGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiIHgucG10ZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9wZW5faW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvcGVuX2xvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb3Blbl9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9wZW5cIiB4LnBvcGVuX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBpbmNsX2xvYyB4LnBpbmNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImluY2x1ZGVcIiB4LnBpbmNsX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHN0cl9sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic3RydWN0dXJlIGl0ZW1cIiB4LnBzdHJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtYl9sb2MgeC5wbWJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgYmluZGluZ1wiIHgucG1iX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgKilcbiAgICAoKiB0aGUgdHlwZSBjb25zdHJhaW50IGlzIGR1cGxpY2F0ZWQuICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmJfbG9jIHgucHZiX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgbWF0Y2ggKHgucHZiX3BhdC5wcGF0X2Rlc2MsIGV4dHJhY3RfY29uc3RyYWludCB4LnB2Yl9leHByKSB3aXRoXG4gICAgICAgICAgKCogbGV0IHggOiB0eXBlIGEgYiBjLiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfIDo6IF8sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAoKiBsZXQgeCA6ICBjdCA9IGVcbiAgICAgICAgICAgICBsZXQgeCA6PiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50IChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoW10sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdHAucHR5cF9sb2MgY3RlLnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgX2FjYyA9IHNlbGYjY29yZV90eXBlIGN0cCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjdmFsdWVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBiaW5kaW5nXCIgeC5wdmJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1UIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgdHlwZS4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSB0eXBlLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG10eV9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHgucG10eV9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlXCIgeC5wbXR5X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNRSBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIGV4cHIuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgZXhwci4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHJfZGVzYyB4LnBtb2RfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZXhwcmVzc2lvblwiIHgucG1vZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgeC5wdHlwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29yZSB0eXBlXCIgeC5wdHlwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogQW5kIGFnYWluIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNleHByZXNzaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgeC5wZXhwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhwcmVzc2lvblwiIHgucGV4cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIC4uLiBhbmQgYWdhaW4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjcGF0dGVybiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHgucHBhdF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInBhdHRlcm5cIiB4LnBwYXRfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgICopXG4gICAgKCogdGhlIGNvbnN0cnVjdCBlcXVhbHMgdGhlIGxvY2F0aW9uIG9mIHRoZSB0eXBlX2V4Y2VwdGlvbiAqKVxuICAgICgqIChhbmQgc28gY292ZXJzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYXR0cmlidXRlcykuICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXhuX2xvYyB4LnB0eWV4bl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgaW5pdCA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGxldCBjaGlsZHNfbG9jcyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgeC5wdHlleG5fY29uc3RydWN0b3IgaW5pdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cnNfbG9jcyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzIGluaXQgaW5cbiAgICAgICAgaWdub3JlXG4gICAgICAgICAgKGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgYXR0cnNfbG9jcyBzaWJsaW5nc19sb2NzKTtcbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBjaGlsZHNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgKilcbiAgICAoKiBsaHMgaXMgc29tZXRpbWVzIGluY2x1ZGVkIGluIHRoZSByaHMuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQd2l0aF90eXBlIChfLCB0ZGVjbCkgfCBQd2l0aF90eXBlc3Vic3QgKF8sIHRkZWNsKSAtPlxuICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiB0ZGVjbCBzaWJsaW5nc19sb2NcbiAgICAgIHwgXyAtPiBzdXBlciN3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6KilcbiAgICAoKiAtIEZvby57IGJhcjsgLi4uIH0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLlsgYmFyOyAuLi4gXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uKCBiYXI7IC4uLiApICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIG1ldGhvZCB4IDogdHlwZSBhLiAuLi4gPSAuLi4gICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpIDwtIGJheiAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdIDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9yZWNvcmQgKGxhYmVscywgZXhwcl9vKSAtPlxuICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGxpZCwgZSkgYWNjIC0+XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgZS5wZXhwX2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAoKiBwdW5uaW5nLiAqKVxuICAgICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gZXhwcl9vIGFjY1xuICAgICAgfCBQZXhwX29wZW5cbiAgICAgICAgICAoKHsgcG9wZW5fZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9pZGVudCBsaWQ7IF8gfTsgXyB9IGFzIG9wbiksIGUpXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnQgPSAwXG4gICAgICAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2NfZW5kIGUucGV4cF9sb2MubG9jX2VuZCA8PiAwIC0+XG4gICAgICAgICAgKCogbGV0J3MgcmVsb2NhdGUgLi4uICopXG4gICAgICAgICAgbGV0IGVfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX3N0YXJ0ID0gbGlkLmxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICBzdXBlciNleHByZXNzaW9uX2Rlc2NcbiAgICAgICAgICAgIChQZXhwX29wZW4gKG9wbiwgeyBlIHdpdGggcGV4cF9sb2MgPSBlX2xvYyB9KSlcbiAgICAgICAgICAgIGFjY1xuICAgICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8sIGN0KTsgXyB9KSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZXh0cmFjdF9jb25zdHJhaW50IGUgd2l0aFxuICAgICAgICAgIHwgU29tZSAoZSwgY3RlKSB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RlLnB0eXBfbG9jIGN0LnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgUGV4cF9hcHBseSAoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gbGlkOyBfIH07IF8gfSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIExvbmdpZGVudC5sYXN0X2V4biBsaWQgd2l0aFxuICAgICAgICAgIHwgaWRcbiAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCBpZCB+cHJlZml4OlwiLlwiXG4gICAgICAgICAgICAgICAgICYmIChTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9PC1cIikgLT5cbiAgICAgICAgICAgICAgc2VsZiNsaXN0IChmdW4gKF8sIGUpIC0+IHNlbGYjZXhwcmVzc2lvbiBlKSBhcmdzIGFjY1xuICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiAgICAgICAgICAgICAqKVxuICAgICgqIC0gcHVubmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gcmVjb3JkIGZpZWxkIHdpdGggdHlwZSBjb25zdHJhaW50LiAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gdW5wYWNrIGxvY2F0aW9ucyBiZWluZyBpbmNvcnJlY3Qgd2hlbiBjb25zdHJhaW5lZCAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfcmVjb3JkIChsYWJlbHMsIF8pIC0+XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChsaWQsIHBhdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgcGF0LnBwYXRfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIHBhdC5wcGF0X2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgKCogc2ltcGxlIHB1bm5pbmchICopXG4gICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwIGFjY1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHBhdCBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGF0IGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh7IHBwYXRfZGVzYyA9IFBwYXRfdW5wYWNrIGE7IF8gfSwgYikgLT5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIGZha2Ugc3RydWN0dXJlIGZvciBhIGdlbmVyYXRpdmUgYXJndW1lbnQgY292ZXJzIHRoZSAgICAgKilcbiAgICAoKiBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2FwcGx5IChtLCB7IHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdOyBwbW9kX2xvYzsgXyB9KVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIG0ucG1vZF9sb2MubG9jX3N0YXJ0IHBtb2RfbG9jLmxvY19zdGFydCA9IDAgLT5cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciBtIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogb3Blbl9pbmZvcyBmb3IgUGNsX29wZW4gb25seSBjb3ZlcnMgdGhlIFwib3BlblwiIGtleXdvcmQgICopXG4gICAgKCogYW5kIG5vdCB0aGUgbW9kdWxlIG9wZW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfb3BlbiAob2QsIGNlKSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgY2UgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X29wZW4gKG9kLCBjdCkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGN0IGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgZG9jc3RyaW5ncyBoYXZlICAgICopXG4gICAgKCogdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhlIGl0ZW0gdGhleSBnZXQgYXR0YWNoZWQgdG8uICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB4IGFjYyA9XG4gICAgICBtYXRjaCB4LmF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLmRvY1wiIHwgXCJvY2FtbC50ZXh0XCIgLT4gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjYXR0cmlidXRlIHggYWNjXG4gIGVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgQXJnID0gU3RkbGliLkFyZ1xuXG5sZXQgZXhlX25hbWUgPSBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgU3RkbGliLlN5cy5leGVjdXRhYmxlX25hbWVcbmxldCBhcmdzID0gcmVmIFtdXG5sZXQgYWRkX2FyZyBrZXkgc3BlYyB+ZG9jID0gYXJncyA6PSAoa2V5LCBzcGVjLCBkb2MpIDo6ICFhcmdzXG5sZXQgbG9jX2ZuYW1lID0gcmVmIE5vbmVcbmxldCBwZXJmb3JtX2NoZWNrcyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzXG5sZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnNcbmxldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA9IHJlZiBPcHRpb25zLnBlcmZvcm1fbG9jYXRpb25zX2NoZWNrXG5sZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AgPSByZWYgZmFsc2VcbmxldCBhcHBseV9saXN0ID0gcmVmIE5vbmVcbmxldCBwcmVwcm9jZXNzb3IgPSByZWYgTm9uZVxubGV0IG5vX21lcmdlID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF9wYXNzZXMgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyA9IHJlZiBmYWxzZVxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE9wdGlvbnMuZGlmZl9jb21tYW5kXG5sZXQgcHJldHR5ID0gcmVmIGZhbHNlXG5sZXQgc3R5bGVyID0gcmVmIE5vbmVcbmxldCBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgPSByZWYgTm9uZVxubGV0IGNvcnJlY3RlZF9zdWZmaXggPSByZWYgXCIucHB4LWNvcnJlY3RlZFwiXG5cbmxldCBnaG9zdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgIG1ldGhvZCEgbG9jYXRpb24gbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgZW5kXG5cbmxldCBjaG9wX3ByZWZpeCB+cHJlZml4IHggPVxuICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXggeCB0aGVuXG4gICAgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHggKFN0cmluZy5sZW5ndGggcHJlZml4KSlcbiAgZWxzZSBOb25lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoIChsb2MgOiBMb2NhdGlvbi50KSA9XG4gIGxldCBmbmFtZSA9IGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lIGluXG4gIG1hdGNoIGNob3BfcHJlZml4IH5wcmVmaXg6XCIuL1wiIGZuYW1lIHdpdGhcbiAgfCBTb21lIGZuYW1lIC0+IGZuYW1lXG4gIHwgTm9uZSAtPiBmbmFtZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zdHIgOiBzdHJ1Y3R1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc3RyX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc2lnIDogc2lnbmF0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHNpZ19sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbm1vZHVsZSBMaW50X2Vycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9IExvY2F0aW9uLnQgKiBzdHJpbmdcblxuICBsZXQgb2Zfc3RyaW5nIGxvYyBzID0gKGxvYywgcylcbmVuZFxuXG5tb2R1bGUgQ29va2llcyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUXG5cbiAgbGV0IGdpdmVuX3Rocm91Z2hfY2xpID0gcmVmIFtdXG5cbiAgbGV0IGdldCBUIG5hbWUgcGF0dGVybiA9XG4gICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2UgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG5cbiAgbGV0IGdldF9yZXMgVCBuYW1lIHBhdHRlcm4gPVxuICAgIG1hdGNoXG4gICAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoT2sgZSkgLT4gT2sgKFNvbWUgZSlcbiAgICB8IFNvbWUgKEVycm9yIGUpIC0+IEVycm9yIGVcblxuICBsZXQgc2V0IFQgbmFtZSBleHByID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLnNldF9jb29raWUgbmFtZSAoU2VsZWN0ZWRfYXN0LnRvX29jYW1sIEV4cHJlc3Npb24gZXhwcilcblxuICBsZXQgaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9oYW5kbGVyIGYgPSBoYW5kbGVycyA6PSAhaGFuZGxlcnMgQCBbIGYgXVxuXG4gIGxldCBhZGRfc2ltcGxlX2hhbmRsZXIgbmFtZSBwYXR0ZXJuIH5mID1cbiAgICBhZGRfaGFuZGxlciAoZnVuIFQgLT4gZiAoZ2V0IFQgbmFtZSBwYXR0ZXJuKSlcblxuICBsZXQgYWNrbm93bGVkZ2VfY29va2llcyBUID0gTGlzdC5pdGVyICFoYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuICBsZXQgcG9zdF9oYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX3Bvc3RfaGFuZGxlciBmID0gcG9zdF9oYW5kbGVycyA6PSAhcG9zdF9oYW5kbGVycyBAIFsgZiBdXG4gIGxldCBjYWxsX3Bvc3RfaGFuZGxlcnMgVCA9IExpc3QuaXRlciAhcG9zdF9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuZW5kXG5cbm1vZHVsZSBJbnN0cnVtZW50ID0gc3RydWN0XG4gIHR5cGUgcG9zID0gQmVmb3JlIHwgQWZ0ZXJcblxuICB0eXBlIHQgPSB7XG4gICAgdHJhbnNmb3JtYXRpb24gOlxuICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQ7XG4gICAgcG9zaXRpb24gOiBwb3M7XG4gIH1cblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgICAgbGV0IHRyYW5zZm9ybWF0aW9uIGN0eCBzdCA9IHJldHVybiAodHJhbnNmb3JtYXRpb24gY3R4IHN0KSBpblxuICAgICAgeyB0cmFuc2Zvcm1hdGlvbjsgcG9zaXRpb24gfVxuICBlbmRcblxuICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBfIHN0ID0gdHJhbnNmb3JtYXRpb24gc3QgaW5cbiAgICBWMi5tYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvblxuZW5kXG5cbm1vZHVsZSBUcmFuc2Zvcm0gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgYWxpYXNlcyA6IHN0cmluZyBsaXN0O1xuICAgIGltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlICogUGFyc2V0cmVlLnN0cnVjdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgKiBQYXJzZXRyZWUuc2lnbmF0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGluc3RydW1lbnQgOiBJbnN0cnVtZW50LnQgb3B0aW9uO1xuICAgIHJ1bGVzIDogQ29udGV4dF9mcmVlLlJ1bGUudCBsaXN0O1xuICAgIHJlZ2lzdGVyZWRfYXQgOiBDYWxsZXJfaWQudDtcbiAgfVxuXG4gIGxldCBoYXNfbmFtZSB0IG5hbWUgPVxuICAgIFN0cmluZy5lcXVhbCBuYW1lIHQubmFtZSB8fCBMaXN0LmV4aXN0cyB+ZjooU3RyaW5nLmVxdWFsIG5hbWUpIHQuYWxpYXNlc1xuXG4gIGxldCBhbGwgOiB0IGxpc3QgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHByaW50X2NhbGxlcl9pZCBvYyAoY2FsbGVyX2lkIDogQ2FsbGVyX2lkLnQpID1cbiAgICBtYXRjaCBjYWxsZXJfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRwdXRfc3RyaW5nIG9jIFwiPHVua25vd24gbG9jYXRpb24+XCJcbiAgICB8IFNvbWUgbG9jIC0+IFByaW50Zi5mcHJpbnRmIG9jIFwiJXM6JWRcIiBsb2MuZmlsZW5hbWUgbG9jLmxpbmVfbnVtYmVyXG5cbiAgbGV0IHJlZ2lzdGVyID8oZXh0ZW5zaW9ucyA9IFtdKSA/KHJ1bGVzID0gW10pID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuICAgICAgP2luc3RydW1lbnQgPyhhbGlhc2VzID0gW10pIG5hbWUgPVxuICAgIGxldCBydWxlcyA9IExpc3QubWFwIGV4dGVuc2lvbnMgfmY6Q29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIEAgcnVsZXMgaW5cbiAgICBsZXQgY2FsbGVyX2lkID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbIFN0ZGxpYi5fX0ZJTEVfXyBdIGluXG4gICAgKG1hdGNoIExpc3QuZmlsdGVyICFhbGwgfmY6KGZ1biBjdCAtPiBoYXNfbmFtZSBjdCBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgY3QgOjogXyAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIldhcm5pbmc6IGNvZGUgdHJhbnNmb3JtYXRpb24gJXMgcmVnaXN0ZXJlZCB0d2ljZS5cXG5cIlxuICAgICAgICAgIG5hbWU7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIGZpcnN0IHRpbWUgd2FzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkXG4gICAgICAgICAgY3QucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gc2Vjb25kIHRpbWUgaXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWQgY2FsbGVyX2lkKTtcbiAgICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgY3QgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBhbGlhc2VzO1xuICAgICAgICBydWxlcztcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGltcGw7XG4gICAgICAgIGludGY7XG4gICAgICAgIGxpbnRfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGY7XG4gICAgICAgIGxpbnRfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudDtcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IGNhbGxlcl9pZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGFsbCA6PSBjdCA6OiAhYWxsXG5cbiAgbGV0IHJlYyBsYXN0IHByZXYgbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGxvY19vZl9saXN0IH5nZXRfbG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBmaXJzdCA6IExvY2F0aW9uLnQgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgbGV0IGxhc3QgPSBnZXRfbG9jIChsYXN0IHggbCkgaW5cbiAgICAgICAgU29tZSB7IGZpcnN0IHdpdGggbG9jX2VuZCA9IGxhc3QubG9jX2VuZCB9XG5cbiAgbGV0IG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIHQgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWUgPVxuICAgIGxldCB7IHJ1bGVzOyBlbmNsb3NlX2ltcGw7IGVuY2xvc2VfaW50ZjsgaW1wbDsgaW50ZjsgXyB9ID0gdCBpblxuICAgIGxldCBtYXAgPVxuICAgICAgbmV3IENvbnRleHRfZnJlZS5tYXBfdG9wX2Rvd25cbiAgICAgICAgcnVsZXMgfmVtYmVkX2Vycm9ycyB+Z2VuZXJhdGVkX2NvZGVfaG9vazpob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgIGluXG4gICAgbGV0IGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBjb250ZXh0IHdob2xlX2xvYyBmID1cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9IGYgd2hvbGVfbG9jIGluXG4gICAgICAobWF0Y2ggd2hvbGVfbG9jIHdpdGhcbiAgICAgIHwgU29tZSAobG9jIDogTG9jYXRpb24udCkgLT4gKFxuICAgICAgICAgIGxldCBsb2NfaGVhZGVyID0geyBsb2Mgd2l0aCBsb2NfZW5kID0gbG9jLmxvY19zdGFydCB9IGluXG4gICAgICAgICAgbGV0IGxvY19mb290ZXIgPSB7IGxvYyB3aXRoIGxvY19zdGFydCA9IGxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICAobWF0Y2ggaGVhZGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19oZWFkZXIgKE1hbnkgaGVhZGVyKSk7XG4gICAgICAgICAgbWF0Y2ggZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19mb290ZXIgKE1hbnkgZm9vdGVyKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggaGVhZGVyIEAgZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBob29rLmYgY29udGV4dCBsb2MgKE1hbnkgbCkpKTtcbiAgICAgIChoZWFkZXIsIGZvb3RlcilcbiAgICBpblxuICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZSB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgIGluXG4gICAgbGV0IG1hcF9pbXBsIGN0eHQgc3Rfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHN0ID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzdF93aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ltcGwgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzdCB+Z2V0X2xvYzooZnVuIHN0IC0+IHN0LlBhcnNldHJlZS5wc3RyX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU3RydWN0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc3RydWN0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzdDsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHN0IC0+IG1hdGNoIGltcGwgd2l0aCBOb25lIC0+IHJldHVybiBzdCB8IFNvbWUgZiAtPiBmIGN0eHQgc3RcbiAgICBpblxuICAgIGxldCBtYXBfaW50ZiBjdHh0IHNnX3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzZyA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc2dfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbnRmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc2cgfmdldF9sb2M6KGZ1biBzZyAtPiBzZy5QYXJzZXRyZWUucHNpZ19sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFNpZ25hdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3NpZ25hdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc2c7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzZyAtPiBtYXRjaCBpbnRmIHdpdGggTm9uZSAtPiByZXR1cm4gc2cgfCBTb21lIGYgLT4gZiBjdHh0IHNnXG4gICAgaW5cbiAgICB7IHQgd2l0aCBpbXBsID0gU29tZSBtYXBfaW1wbDsgaW50ZiA9IFNvbWUgbWFwX2ludGYgfVxuXG4gIGxldCBidWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfmhvb2sgfnJ1bGVzIH5lbmNsb3NlX2ltcGwgfmVuY2xvc2VfaW50ZlxuICAgICAgfmlucHV0X25hbWUgPVxuICAgIG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5ob29rIH5pbnB1dF9uYW1lXG4gICAgICB7XG4gICAgICAgIG5hbWUgPSBcIjxidWlsdGluOmNvbnRleHQtZnJlZT5cIjtcbiAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOltdO1xuICAgICAgfVxuXG4gIGxldCBwYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIHRzID1cbiAgICBsZXQgYmVmb3JlX2luc3RycywgYWZ0ZXJfaW5zdHJzLCByZXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IHRzIH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChiZWZfaSwgYWZ0X2ksIHJlc3QpIHQgLT5cbiAgICAgICAgICBsZXQgcmVkdWNlZF90ID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdCB3aXRoXG4gICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZiBpbnN0ciA9XG4gICAgICAgICAgICAoaW5zdHIuSW5zdHJ1bWVudC5wb3NpdGlvbiwgaW5zdHIuSW5zdHJ1bWVudC50cmFuc2Zvcm1hdGlvbilcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIE9wdGlvbi5tYXAgdC5pbnN0cnVtZW50IH5mIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKEJlZm9yZSwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYmVmX2ksXG4gICAgICAgICAgICAgICAgYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgU29tZSAoQWZ0ZXIsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCBiZWZfaSxcbiAgICAgICAgICAgICAgICB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IE5vbmUgLT4gKGJlZl9pLCBhZnRfaSwgcmVkdWNlZF90IDo6IHJlc3QpKVxuICAgIGluXG4gICAgKCBgTGludGVyc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIHQubGludF9pbXBsIHx8IE9wdGlvbi5pc19zb21lIHQubGludF9pbnRmIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxsaW50OiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gdC5saW50X2ltcGw7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gdC5saW50X2ludGY7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBQcmVwcm9jZXNzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbXBsXG4gICAgICAgICAgICAgICB8fCBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW50ZlxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxwcmVwcm9jZXNzOiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IHQucHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSB0LnByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgIGBSZXN0IHJlc3QgKVxuZW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gPSBUcmFuc2Zvcm0ucmVnaXN0ZXJcblxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuICAgICAgPVxuICAgIGxldCBpbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgaW1wbCB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFN0cnVjdHVyZSlcbiAgICBpblxuICAgIGxldCBpbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgaW50ZiB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFNpZ25hdHVyZSlcbiAgICBpblxuICAgIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbmVuZFxuXG5sZXQgYWRkX2N0eHRfYXJnIChmIDogJ2EgLT4gJ2IpIDogRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdiID1cbiBmdW4gXyB4IC0+IGYgeFxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZiA/aW1wbFxuICAgID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ltcGwgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW50ZiA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbXBsID0gT3B0aW9uLm1hcCBsaW50X2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ludGYgPSBPcHRpb24ubWFwIGxpbnRfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW1wbCA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbnRmID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG5cbmxldCByZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIH5uYW1lID8oYWxpYXNlcyA9IFtdKSB+aW1wbCB+aW50ZiA9XG4gIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIG5hbWUgfmltcGwgfmludGYgfmFsaWFzZXNcbltAQHdhcm5pbmcgXCItMTZcIl1cbigqIFRoaXMgZnVuY3Rpb24gdHJpZ2dlcnMgYSB3YXJuaW5nIDE2IGFzIG9mIG9jYW1sIDQuMTIgKilcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZlxuXG5sZXQgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgbmFtZSB+b2xkX2Ryb3BwZWQgfm5ld19kcm9wcGVkID1cbiAgbGV0IHByaW50X2RpZmYgd2hhdCBhIGIgPVxuICAgIGxldCBkaWZmID1cbiAgICAgIExpc3QuZmlsdGVyIGEgfmY6KGZ1biAobmFtZSA6IF8gTG9jLnQpIC0+XG4gICAgICAgICAgbm90XG4gICAgICAgICAgICAoTGlzdC5leGlzdHMgYiB+ZjooZnVuIChuYW1lJyA6IF8gTG9jYXRpb24ubG9jKSAtPlxuICAgICAgICAgICAgICAgICBuYW1lLnR4dCA9PSBuYW1lJy50eHQpKSlcbiAgICBpblxuICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBkaWZmKSB0aGVuIChcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzICVzIGFmdGVyIGFwcGx5aW5nICVzOlxcblwiIHdoYXRcbiAgICAgICAgbmFtZTtcbiAgICAgIExpc3QuaXRlciBkaWZmIH5mOihmdW4geyBMb2NhdGlvbi50eHQ7IGxvYyB9IC0+XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiLSAlYTogJXNcXG5cIiBMb2NhdGlvbi5wcmludCBsb2MgdHh0KTtcbiAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIkAuXCIpXG4gIGluXG4gIHByaW50X2RpZmYgXCJkaXNhcHBlYXJlZFwiIG5ld19kcm9wcGVkIG9sZF9kcm9wcGVkO1xuICBwcmludF9kaWZmIFwicmVhcHBlYXJlZFwiIG9sZF9kcm9wcGVkIG5ld19kcm9wcGVkXG5cbmxldCBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgfmlucHV0X25hbWUgPVxuICBsZXQgY3RzID1cbiAgICBtYXRjaCAhYXBwbHlfbGlzdCB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QucmV2ICFUcmFuc2Zvcm0uYWxsXG4gICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgIExpc3QubWFwIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgICAgTGlzdC5maW5kICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICBpblxuICBsZXQgKCBgTGludGVycyBsaW50ZXJzLFxuICAgICAgICBgUHJlcHJvY2VzcyBwcmVwcm9jZXNzLFxuICAgICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgICAgYFJlc3QgY3RzICkgPVxuICAgIFRyYW5zZm9ybS5wYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIGN0c1xuICBpblxuICAoKiBBbGxvdyBvbmx5IG9uZSBwcmVwcm9jZXNzb3IgdG8gYXNzdXJlIGRldGVybWluaXN0aWMgb3JkZXIgKilcbiAgKGlmIExpc3QubGVuZ3RoIHByZXByb2Nlc3MgPiAxIHRoZW5cbiAgICAgbGV0IHBwID1cbiAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChMaXN0Lm1hcCBwcmVwcm9jZXNzIH5mOihmdW4gdCAtPiB0Lm5hbWUpKVxuICAgICBpblxuICAgICBsZXQgZXJyID1cbiAgICAgICBQcmludGYuc3ByaW50ZiBcIkF0IG1vc3Qgb25lIHByZXByb2Nlc3NvciBpcyBhbGxvd2VkLCB3aGlsZSBnb3Q6ICVzXCIgcHBcbiAgICAgaW5cbiAgICAgZmFpbHdpdGggZXJyKTtcbiAgbGV0IG1ha2VfZ2VuZXJpYyB0cmFuc2Zvcm1zID1cbiAgICBpZiAhbm9fbWVyZ2UgdGhlblxuICAgICAgTGlzdC5tYXAgdHJhbnNmb3Jtc1xuICAgICAgICB+ZjpcbiAgICAgICAgICAoVHJhbnNmb3JtLm1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfnRvb2xfbmFtZVxuICAgICAgICAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSlcbiAgICBlbHNlXG4gICAgICAobGV0IGdldF9lbmNsb3NlcnMgfmYgPVxuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBmIGN0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGN0Lm5hbWUsIHgpKVxuICAgICAgICAgKCogU29ydCB0aGVtIHRvIGVuc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyaW5nICopXG4gICAgICAgICB8PiBMaXN0LnNvcnQgfmNtcDooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKVxuICAgICAgICAgfD4gTGlzdC5tYXAgfmY6c25kXG4gICAgICAgaW5cblxuICAgICAgIGxldCBydWxlcyA9XG4gICAgICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LnJ1bGVzKVxuICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICBhbmQgaW1wbF9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbXBsKVxuICAgICAgIGFuZCBpbnRmX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ludGYpIGluXG4gICAgICAgbWF0Y2ggKHJ1bGVzLCBpbXBsX2VuY2xvc2VycywgaW50Zl9lbmNsb3NlcnMpIHdpdGhcbiAgICAgICB8IFtdLCBbXSwgW10gLT4gdHJhbnNmb3Jtc1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgICBsZXQgbWVyZ2VfZW5jbG9zZXIgPSBmdW5jdGlvblxuICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgIHwgZW5jbG9zZXJzIC0+XG4gICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAoZnVuIGN0eHQgbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycywgZm9vdGVycyA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwIGVuY2xvc2VycyB+ZjooZnVuIGYgLT4gZiBjdHh0IGxvYykgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzID0gTGlzdC5jb25jYXQgaGVhZGVycyBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGZvb3RlcnMgPSBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgZm9vdGVycykgaW5cbiAgICAgICAgICAgICAgICAgICAgIChoZWFkZXJzLCBmb290ZXJzKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgVHJhbnNmb3JtLmJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+cnVsZXMgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgIH5lbmNsb3NlX2ltcGw6KG1lcmdlX2VuY2xvc2VyIGltcGxfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH5lbmNsb3NlX2ludGY6KG1lcmdlX2VuY2xvc2VyIGludGZfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWVcbiAgICAgICAgICAgOjogdHJhbnNmb3JtcylcbiAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggKGN0LmltcGwsIGN0LmludGYpIHdpdGggTm9uZSwgTm9uZSAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgaW5cbiAgbGludGVycyBAIHByZXByb2Nlc3MgQCBiZWZvcmVfaW5zdHJzIEAgbWFrZV9nZW5lcmljIGN0cyBAIGFmdGVyX2luc3Ryc1xuXG5sZXQgYXBwbHlfdHJhbnNmb3JtcyB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmZpZWxkIH5saW50X2ZpZWxkIH5kcm9wcGVkX3NvX2ZhclxuICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzIGFzdCA9XG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH50b29sX25hbWUgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH5pbnB1dF9uYW1lXG4gIGluXG4gIGxldCBmaW5pc2ggKGFzdCwgX2Ryb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpID1cbiAgICAoIGFzdCxcbiAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzIH5mOihmdW4gKGxvYywgcykgLT5cbiAgICAgICAgICBDb21tb24uYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMpLFxuICAgICAgZXJyb3JzIClcbiAgaW5cbiAgbGV0IGFjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgY3RzIH5pbml0Oihhc3QsIFtdLCBbXSwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKGFzdCwgZHJvcHBlZCwgKGxpbnRfZXJyb3JzIDogXyBsaXN0KSwgZXJyb3JzKSAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aFxuICAgICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgICAgICAgIG1hdGNoIGxpbnRfZmllbGQgY3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAobGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSAobGludF9lcnJvcnMgQCBmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKGxpbnRfZXJyb3JzLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmaWVsZCBjdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IChhc3QsIG1vcmVfZXJyb3JzKSwgZXJyb3JzID1cbiAgICAgICAgICAgICAgdHJ5IChmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKChhc3QsIFtdKSwgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkcm9wcGVkID1cbiAgICAgICAgICAgICAgaWYgIWRlYnVnX2F0dHJpYnV0ZV9kcm9wIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBuZXdfZHJvcHBlZCA9IGRyb3BwZWRfc29fZmFyIGFzdCBpblxuICAgICAgICAgICAgICAgIGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIGN0Lm5hbWUgfm9sZF9kcm9wcGVkOmRyb3BwZWRcbiAgICAgICAgICAgICAgICAgIH5uZXdfZHJvcHBlZDtcbiAgICAgICAgICAgICAgICBuZXdfZHJvcHBlZClcbiAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMgQCBtb3JlX2Vycm9ycykpXG4gIGluXG4gIGZpbmlzaCBhY2NcblxuKCokKilcblxubGV0IGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH4oa2luZCA6IEtpbmQudCkgPVxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBJbnRmIC0+IEludGZfb3JfaW1wbC5JbnRmIFsgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciBdXG4gIHwgSW1wbCAtPiBJbnRmX29yX2ltcGwuSW1wbCBbIGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgXVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gfihraW5kIDogS2luZC50KSA9XG4gIGV4bl90b19sb2NfZXJyb3IgZXhuIHw+IGVycm9yX3RvX2V4dGVuc2lvbiB+a2luZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEFjdHVhbCByZXdyaXRpbmcgb2Ygc3RydWN0dXJlL3NpZ25hdHVyZXMgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBwcmludF9wYXNzZXMgKCkgPVxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhsaWJfZHJpdmVyXCIgaW5cbiAgbGV0IGVtYmVkX2Vycm9ycyA9IGZhbHNlIGluXG4gIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgICAgfmlucHV0X25hbWU6Tm9uZVxuICBpblxuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlblxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpmcmVzaGVuLWFuZC1jb2xsZWN0LWF0dHJpYnV0ZXM+XFxuXCI7XG4gIExpc3QuaXRlciBjdHMgfmY6KGZ1biBjdCAtPiBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5UcmFuc2Zvcm0ubmFtZSk7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWF0dHJpYnV0ZXM+XFxuXCI7XG4gICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1leHRlbnNpb25zPlxcblwiKVxuXG5sZXQgc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyA9XG4gIExpc3Quc29ydCBlcnJvcnMgfmNtcDooZnVuIGVycm9yIGVycm9yJyAtPlxuICAgICAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICAgICAgbGV0IGxvYycgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3InIGluXG4gICAgICBMb2NhdGlvbi5jb21wYXJlIGxvYyBsb2MnKVxuXG4oKiQqKVxuXG5sZXQgbWFwX3N0cnVjdHVyZV9nZW4gc3QgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3N0cnVjdHVyZSBzdCk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHN0ID1cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzdFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc3RcbiAgICBpblxuICAgIHN0XG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc3QgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3N0cnVjdHVyZV9pdGVtKVxuICAgIEAgc3RcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHN0ID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc3RydWN0dXJlIHN0XG4gICAgICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9ycylcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzdFxuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgbGV0IHN0LCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHN0IH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmltcGwpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ltcGwpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc3QgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9XG4gIG1hdGNoXG4gICAgbWFwX3N0cnVjdHVyZV9nZW4gc3RcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IG1hcF9zaWduYXR1cmVfZ2VuIHNnIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzaWduYXR1cmUgc2cpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzZyA9XG4gICAgbGV0IHNnID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc2dcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHNnXG4gICAgaW5cbiAgICBzZ1xuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHNnID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzaWduYXR1cmVfaXRlbSlcbiAgICBAIHNnXG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzZyA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnMpXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc2dcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gIGxldCBzZywgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzZyB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbnRmKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbnRmKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHNnIHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zaWduYXR1cmUgc2cgPVxuICBtYXRjaFxuICAgIG1hcF9zaWduYXR1cmVfZ2VuIHNnXG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQqKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEVudHJ5IHBvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzID1cbiAgbGV0IHRlc3QgbWFnaWNfbnVtYmVyID1cbiAgICBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDooU3RyaW5nLnN1YiBtYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgaW5cbiAgdGVzdCBBc3RfbWFnaWMuYXN0X2ludGZfbWFnaWNfbnVtYmVyIHx8IHRlc3QgQXN0X21hZ2ljLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG5sZXQgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGlucHV0X2ZpbGVfbmFtZSA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIG1zZyAtPlxuICAgICAgbGV0IGVyciA9XG4gICAgICAgIExvY2F0aW9uLkVycm9yLm1ha2UgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlX25hbWUpIG1zZyB+c3ViOltdXG4gICAgICBpblxuICAgICAgRXJyb3IgKGVyciwgaW5wdXRfdmVyc2lvbikpXG5cbmxldCByZW1vdmVfbm9fZXJyb3IgZm4gPSB0cnkgU3RkbGliLlN5cy5yZW1vdmUgZm4gd2l0aCBTeXNfZXJyb3IgXyAtPiAoKVxuXG5sZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgdiAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgdlxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICByYWlzZSBlXG5cbmxldCB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mID1cbiAgbWF0Y2ggIXByZXByb2Nlc3NvciB3aXRoXG4gIHwgTm9uZSAtPiBmIGZuXG4gIHwgU29tZSBwcCAtPlxuICAgICAgcHJvdGVjdHggKFN0ZGxpYi5GaWxlbmFtZS50ZW1wX2ZpbGUgXCJvY2FtbHBwXCIgXCJcIikgfmZpbmFsbHk6cmVtb3ZlX25vX2Vycm9yXG4gICAgICAgIH5mOihmdW4gdG1wZmlsZSAtPlxuICAgICAgICAgIG1hdGNoIFN5c3RlbS5ydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQ6Zm4gfm91dHB1dDp0bXBmaWxlIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IGYgdG1wZmlsZVxuICAgICAgICAgIHwgRXJyb3IgKGZhaWxlZF9jb21tYW5kLCBmYWxsX2JhY2tfdmVyc2lvbikgLT5cbiAgICAgICAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICAgICAgICAgIFwiRXJyb3Igd2hpbGUgcnVubmluZyBleHRlcm5hbCBwcmVwcm9jZXNzb3JcXG5Db21tYW5kIGxpbmU6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICBmYWlsZWRfY29tbWFuZClcblxubGV0IHJlbG9jYXRlX21hcHBlciA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyAqIHN0cmluZ10gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCEgcG9zaXRpb24gKG9sZF9mbiwgbmV3X2ZuKSBwb3MgPVxuICAgICAgaWYgU3RyaW5nLmVxdWFsIHBvcy5wb3NfZm5hbWUgb2xkX2ZuIHRoZW4geyBwb3Mgd2l0aCBwb3NfZm5hbWUgPSBuZXdfZm4gfVxuICAgICAgZWxzZSBwb3NcbiAgZW5kXG5cbigqIFNldCB0aGUgaW5wdXQgbmFtZSBnbG9iYWxseS4gVGhpcyBpcyB1c2VkIGJ5IHNvbWUgcHB4IHJld3JpdGVyc1xuICAgc3VjaCBhcyBiaXNlY3RfcHB4LiAqKVxubGV0IHNldF9pbnB1dF9uYW1lID0gQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9uYW1lXG5cbmxldCBsb2FkX2lucHV0IH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnJlbG9jYXRlIGZuID1cbiAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgbGV0IGlucHV0X3NvdXJjZSA9IGlmIFN0cmluZy5lcXVhbCBmbiBcIi1cIiB0aGVuIEFzdF9pby5TdGRpbiBlbHNlIEZpbGUgZm4gaW5cbiAgbGV0IGlucHV0X2tpbmQgPSBBc3RfaW8uUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSBpblxuICBtYXRjaCBBc3RfaW8ucmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdF9raW5kID0gSW50Zl9vcl9pbXBsLmtpbmQgYXN0IGluXG4gICAgICBpZiBub3QgKEtpbmQuZXF1YWwga2luZCBhc3Rfa2luZCkgdGhlblxuICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gZm5cbiAgICAgICAgICBcIkZpbGUgY29udGFpbnMgYSBiaW5hcnkgJXMgQVNUIGJ1dCBhbiAlcyB3YXMgZXhwZWN0ZWRcIlxuICAgICAgICAgIChLaW5kLmRlc2NyaWJlIGFzdF9raW5kKSAoS2luZC5kZXNjcmliZSBraW5kKVxuICAgICAgZWxzZSBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB8fCBub3QgcmVsb2NhdGUgdGhlbiAoXG4gICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICBPayAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIE9rXG4gICAgICAgICAgKCBpbnB1dF9uYW1lLFxuICAgICAgICAgICAgaW5wdXRfdmVyc2lvbixcbiAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKSApXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICBcIkZpbGUgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSlcbiAgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgRXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbilcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGZuID1cbiAgKCogSWYgdGhlcmUncyBhbiBlcnJvciB3aGlsZSBsb2FkaW5nIGluIHJ1bl9hc19wcHggbW9kZSwgdGhlIGtpbmQgb2YgQVNUIChpbXBsL2ludGYpIGlzIHN0aWxsIHVua25vd24uXG4gICAgIFRoYXQncyB3aHksIGFzIG9wcG9zZWQgdG8gbG9hZF9pbnB1dCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgZXJyb3JzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgcmVzdWx0OlxuICAgICBoYW5kbGluZyBhbiBlcnJvciBieSByZXR1cm5pbmcgYW4gQVNUIHdpdGggdGhlIGVycm9yIHBhY2tlZCBhcyBleHRlbnNpb24gbm9kZSB3b3VsZG4ndCBiZSBwb3NzaWJsZS4gKilcbiAgbWF0Y2ggQXN0X2lvLnJlYWQgKEZpbGUgZm4pIH5pbnB1dF9raW5kOkFzdF9pby5OZWNlc3NhcmlseV9iaW5hcnkgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICAgICAgYXN0XG4gICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgdGhlbiBhc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSlcbiAgICAgIGluXG4gICAgICAoKiBXaXRoIGAtLWFzLXBweGAsIG9jYW1sIGNhbGxzIHRoZSBzdGFuZGFsb25lIHNlcGFyYXRlbHkgZm9yIGV2ZXJ5IHN0cnVjdHVyZS9zaWduYXR1cmUgaXRlbVxuICAgICAgICAgd2l0aCB0aGUgZmlsZW5hbWUgYXMgbWV0YWRhdGEgdGhhdCBpdCBnZXRzIGZyb20gdGhlIHByZXZpb3VzIGNhbGwuIHJlbG9jYXRlX21hcHBlciBvbmx5XG4gICAgICAgICByZWxvY2F0ZXMgcG9zaXRpb25zIHdob3NlIHBvc2l0aW9uIGZpbGVuYW1lIGNvaW5jaWRlcyB3aXRoIHRoYXQgbWV0YWRhdGEgZmlsZW5hbWUuXG4gICAgICAgICBTbyBhbHdheXMgcmV0dXJuIHRoZSBtZXRhZGF0YSBmaWxlbmFtZSBpdHNlbGYsIGV2ZW4gaWYgYC1sb2MtZmlsZW5hbWVgIGlzIHByb3ZpZGVkLiAqKVxuICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgXykpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJUaGUgaW5wdXQgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiRXhwZWN0ZWQgYSBiaW5hcnkgQVNUIGFzIGlucHV0XCJcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgXykpIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIF8pKSAtPlxuICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmbiB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG5cbmxldCBsb2FkX3NvdXJjZV9maWxlIGZuID1cbiAgbGV0IHMgPSBJbl9jaGFubmVsLnJlYWRfYWxsIGZuIGluXG4gIGlmIHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgXCJwcHhsaWJfZHJpdmVyOiBjYW5ub3QgdXNlIC1yZWNvbmNpbGUgd2l0aCBiaW5hcnkgQVNUIGZpbGVzXCI7XG4gIHNcblxudHlwZSBvdXRwdXRfbW9kZSA9XG4gIHwgUHJldHR5X3ByaW50XG4gIHwgRHVtcF9hc3RcbiAgfCBEcGFyc2V0cmVlXG4gIHwgUmVjb25jaWxlIG9mIFJlY29uY2lsZS5tb2RlXG4gIHwgTnVsbFxuXG4oKiQqKVxubGV0IGV4dHJhY3RfY29va2llc19zdHIgc3QgPVxuICBsZXQgc3QgPVxuICAgIG1hdGNoIHN0IHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzdCAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU3RydWN0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3N0ciB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzdFxuICAgIHwgXyAtPiBzdFxuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHN0XG5cbmxldCBhZGRfY29va2llc19zdHIgc3QgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFN0cnVjdHVyZVxuICBpblxuICBwcmVmaXggQCBzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5sZXQgZXh0cmFjdF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBzZyA9XG4gICAgbWF0Y2ggc2cgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzaWdfZGVzYyA9XG4gICAgICAgICAgIFBzaWdfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHNnIC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTaWduYXR1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc2lnIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHNnXG4gICAgfCBfIC0+IHNnXG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc2dcblxubGV0IGFkZF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU2lnbmF0dXJlXG4gIGluXG4gIHByZWZpeCBAIHNnXG5cbigqJCopXG5cbmxldCBleHRyYWN0X2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoZXh0cmFjdF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChleHRyYWN0X2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBhZGRfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChhZGRfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoYWRkX2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBjb3JyZWN0aW9ucyA9IHJlZiBbXVxubGV0IGFkZF90b19saXN0IHIgeCA9IHIgOj0geCA6OiAhclxuXG5sZXQgcmVnaXN0ZXJfY29ycmVjdGlvbiB+bG9jIH5yZXBsID1cbiAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2VfdGV4dCAoKSB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZFxuICAgICAgIH5yZXBsKVxuXG5sZXQgcHJvY2Vzc19maWxlX2hvb2tzID0gcmVmIFtdXG5sZXQgcmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2sgZiA9IGFkZF90b19saXN0IHByb2Nlc3NfZmlsZV9ob29rcyBmXG5cbm1vZHVsZSBGaWxlX3Byb3BlcnR5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgICBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnQ7XG4gIH1cblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGFsbCA9IHJlZiBbXVxuICBsZXQgcmVnaXN0ZXIgdCA9IGFkZF90b19saXN0IGFsbCAoVCB0KVxuICBsZXQgcmVzZXRfYWxsICgpID0gTGlzdC5pdGVyICFhbGwgfmY6KGZ1biAoVCB0KSAtPiB0LmRhdGEgPC0gTm9uZSlcblxuICBsZXQgZHVtcF9hbmRfcmVzZXRfYWxsICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKExpc3QucmV2ICFhbGwpIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAgbWF0Y2ggdC5kYXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICAgIHQuZGF0YSA8LSBOb25lO1xuICAgICAgICAgICAgU29tZSAodC5uYW1lLCB0LnNleHBfb2ZfdCB2KSlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRlX2ZpbGVfcHJvcGVydHlcbiAgICAoTmFtZSA6IHNpZ1xuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmQpXG4gICAgKFQgOiBTZXhwYWJsZS5TKSA9XG5zdHJ1Y3RcbiAgbGV0IHQgOiBfIEZpbGVfcHJvcGVydHkudCA9XG4gICAgeyBuYW1lID0gTmFtZS5uYW1lOyBkYXRhID0gTm9uZTsgc2V4cF9vZl90ID0gVC5zZXhwX29mX3QgfVxuXG4gIGxldCAoKSA9IEZpbGVfcHJvcGVydHkucmVnaXN0ZXIgdFxuICBsZXQgc2V0IHggPSB0LmRhdGEgPC0gU29tZSB4XG5lbmRcblxubGV0IHByb2Nlc3NfYXN0IChhc3QgOiBJbnRmX29yX2ltcGwudCkgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9va1xuICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+ZW1iZWRfZXJyb3JzID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zaWduYXR1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW50ZiBhc3RcbiAgfCBJbXBsIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW1wbCBhc3RcblxubGV0IHByb2Nlc3NfZmlsZSAoa2luZCA6IEtpbmQudCkgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZVxuICAgIH5lbWJlZF9lcnJvcnMgfm91dHB1dCA9XG4gIEZpbGVfcHJvcGVydHkucmVzZXRfYWxsICgpO1xuICBMaXN0Lml0ZXIgKExpc3QucmV2ICFwcm9jZXNzX2ZpbGVfaG9va3MpIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgY29ycmVjdGlvbnMgOj0gW107XG4gIGxldCByZXBsYWNlbWVudHMgPSByZWYgW10gaW5cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4X2RyaXZlclwiIGluXG4gIGxldCBob29rIDogQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2sudCA9XG4gICAgbWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICAgIHwgUmVjb25jaWxlIChVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBmID1cbiAgICAgICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgICAgIGFkZF90b19saXN0IHJlcGxhY2VtZW50c1xuICAgICAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRXh0ZW5zaW9uIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6Z2VuZXJhdGVkKSk7XG4gICAgICAgIH1cbiAgICB8IF8gLT4gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA6IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci50ID1cbiAgICB7XG4gICAgICBmID1cbiAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihGbG9hdGluZ19hdHRyaWJ1dGUgY29udGV4dClcbiAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOihNYW55IGdlbmVyYXRlZCkpKTtcbiAgICB9XG4gIGluXG5cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9XG4gICAgbGV0IHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkID1cbiAgICAgIHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmY6KGxvYWRfaW5wdXQgfmtpbmQgfmlucHV0X25hbWUgfnJlbG9jYXRlKVxuICAgIGluXG4gICAgbWF0Y2ggcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgd2l0aFxuICAgIHwgT2sgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpIC0+IChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBleHRyYWN0X2Nvb2tpZXMgYXN0XG4gICAgICAgICAgICB8PiBwcm9jZXNzX2FzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kKSlcbiAgICB8IEVycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikgd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgKGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+a2luZClcbiAgICB8IEVycm9yIChlcnJvciwgXykgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuXG4gICAgICAgIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcbiAgaW5cbiAgT3B0aW9uLml0ZXIgIW91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSB+ZjooZnVuIGZuIC0+XG4gICAgICBsZXQgbWV0YWRhdGEgPSBGaWxlX3Byb3BlcnR5LmR1bXBfYW5kX3Jlc2V0X2FsbCAoKSBpblxuICAgICAgT3V0X2NoYW5uZWwud3JpdGVfYWxsIGZuXG4gICAgICAgIH5kYXRhOlxuICAgICAgICAgIChMaXN0Lm1hcCBtZXRhZGF0YSB+ZjooZnVuIChzLCBzZXhwKSAtPlxuICAgICAgICAgICAgICAgU2V4cC50b19zdHJpbmdfaHVtIChTZXhwLkxpc3QgWyBBdG9tIHM7IHNleHAgXSkgXiBcIlxcblwiKVxuICAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiKSk7XG5cbiAgbGV0IGlucHV0X2NvbnRlbnRzID0gbGF6eSAobG9hZF9zb3VyY2VfZmlsZSBmbikgaW5cbiAgbGV0IGNvcnJlY3RlZCA9IGZuIF4gIWNvcnJlY3RlZF9zdWZmaXggaW5cbiAgbGV0IG1pc21hdGNoZXNfZm91bmQgPVxuICAgIG1hdGNoICFjb3JyZWN0aW9ucyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgICBpZiBTdGRsaWIuU3lzLmZpbGVfZXhpc3RzIGNvcnJlY3RlZCB0aGVuIFN0ZGxpYi5TeXMucmVtb3ZlIGNvcnJlY3RlZDtcbiAgICAgICAgZmFsc2VcbiAgICB8IGNvcnJlY3Rpb25zIC0+XG4gICAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgY29ycmVjdGlvbnNcbiAgICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgICAgfm91dHB1dDooU29tZSBjb3JyZWN0ZWQpIH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZVxuICAgICAgICAgIH50YXJnZXQ6Q29ycmVjdGVkID9zdHlsZXI6IXN0eWxlciB+a2luZDtcbiAgICAgICAgdHJ1ZVxuICBpblxuXG4gIChtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gIHwgTnVsbCAtPiAoKVxuICB8IFByZXR0eV9wcmludCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gUHByaW50YXN0LnNpZ25hdHVyZSBwcGYgYXN0XG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBQcHJpbnRhc3Quc3RydWN0dXJlIHBwZiBhc3QpO1xuICAgICAgICAgIGxldCBudWxsX2FzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aCBJbnRmIFtdIHwgSW1wbCBbXSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IG51bGxfYXN0IHRoZW4gU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBEdW1wX2FzdCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgQXN0X2lvLndyaXRlIG9jXG4gICAgICAgICAgICB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgICAgICAgICB+YWRkX3BweF9jb250ZXh0OnRydWUpXG4gIHwgRHBhcnNldHJlZSAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIGxldCBhc3QgPSBhZGRfY29va2llcyBhc3QgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlIGFzdClcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlIGFzdCkpO1xuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgUmVjb25jaWxlIG1vZGUgLT5cbiAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgIXJlcGxhY2VtZW50c1xuICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgIH5vdXRwdXQgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lIH50YXJnZXQ6KE91dHB1dCBtb2RlKVxuICAgICAgICA/c3R5bGVyOiFzdHlsZXIgfmtpbmQpO1xuXG4gIGlmXG4gICAgbWlzbWF0Y2hlc19mb3VuZCAmJiBtYXRjaCAhZGlmZl9jb21tYW5kIHdpdGggU29tZSBcIi1cIiAtPiBmYWxzZSB8IF8gLT4gdHJ1ZVxuICB0aGVuIChcbiAgICBQcHhsaWJfcHJpbnRfZGlmZi5wcmludCAoKSB+ZmlsZTE6Zm4gfmZpbGUyOmNvcnJlY3RlZCB+dXNlX2NvbG9yOiF1c2VfY29sb3JcbiAgICAgID9kaWZmX2NvbW1hbmQ6IWRpZmZfY29tbWFuZDtcbiAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgb3V0cHV0X21vZGUgPSByZWYgUHJldHR5X3ByaW50XG5sZXQgb3V0cHV0ID0gcmVmIE5vbmVcbmxldCBraW5kID0gcmVmIE5vbmVcbmxldCBpbnB1dCA9IHJlZiBOb25lXG5sZXQgZW1iZWRfZXJyb3JzID0gcmVmIGZhbHNlXG5cbmxldCBzZXRfaW5wdXQgZm4gPVxuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT4gaW5wdXQgOj0gU29tZSBmblxuICB8IFNvbWUgXyAtPiByYWlzZSAoQXJnLkJhZCBcInRvbyBtYW55IGlucHV0IGZpbGVzXCIpXG5cbmxldCBzZXRfa2luZCBrID1cbiAgbWF0Y2ggIWtpbmQgd2l0aFxuICB8IFNvbWUgaycgd2hlbiBub3QgKEtpbmQuZXF1YWwgayBrJykgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwibXVzdCBzcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIC1pbXBsIG9yIC1pbnRmXCIpXG4gIHwgXyAtPiBraW5kIDo9IFNvbWUga1xuXG5sZXQgc2V0X291dHB1dF9tb2RlIG1vZGUgPVxuICBtYXRjaCAoIW91dHB1dF9tb2RlLCBtb2RlKSB3aXRoXG4gIHwgUHJldHR5X3ByaW50LCBfIC0+IG91dHB1dF9tb2RlIDo9IG1vZGVcbiAgfCBfLCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRHVtcF9hc3QsIER1bXBfYXN0IHwgRHBhcnNldHJlZSwgRHBhcnNldHJlZSAtPiAoKVxuICB8IFJlY29uY2lsZSBhLCBSZWNvbmNpbGUgYiB3aGVuIFBvbHkuZXF1YWwgYSBiIC0+ICgpXG4gIHwgeCwgeSAtPlxuICAgICAgbGV0IGFyZ19vZl9vdXRwdXRfbW9kZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IER1bXBfYXN0IC0+IFwiLWR1bXAtYXN0XCJcbiAgICAgICAgfCBEcGFyc2V0cmVlIC0+IFwiLWRwYXJzZXRyZWVcIlxuICAgICAgICB8IFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT4gXCItcmVjb25jaWxlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+IFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCJcbiAgICAgICAgfCBOdWxsIC0+IFwiLW51bGxcIlxuICAgICAgaW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzIGFuZCAlcyBhcmUgaW5jb21wYXRpYmxlXCIgKGFyZ19vZl9vdXRwdXRfbW9kZSB4KVxuICAgICAgICAgICAgICAoYXJnX29mX291dHB1dF9tb2RlIHkpKSlcblxubGV0IHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKSA9XG4gIExpc3QuaXRlciAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QubmFtZSlcblxubGV0IHBhcnNlX2FwcGx5X2xpc3QgcyA9XG4gIGxldCBuYW1lcyA9XG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIiB0aGVuIFtdIGVsc2UgU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicsJ1xuICBpblxuICBMaXN0Lml0ZXIgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICBpZlxuICAgICAgICBub3RcbiAgICAgICAgICAoTGlzdC5leGlzdHMgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoU3RkbGliLkFyZy5CYWRcbiAgICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJjb2RlIHRyYW5zZm9ybWF0aW9uICclcycgZG9lcyBub3QgZXhpc3RcIiBuYW1lKSkpO1xuICBuYW1lc1xuXG50eXBlIG1hc2sgPSB7XG4gIG11dGFibGUgYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG4gIG11dGFibGUgZG9udF9hcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbn1cblxubGV0IG1hc2sgPSB7IGFwcGx5ID0gTm9uZTsgZG9udF9hcHBseSA9IE5vbmUgfVxuXG5sZXQgaGFuZGxlX2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gICgqIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncyBtb3JlIGludHVpdGl2ZSAqKVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IG11c3QgYmUgY2FsbGVkIGJlZm9yZSAtZG9udC1hcHBseVwiKTtcbiAgbWFzay5hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBoYW5kbGVfZG9udF9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gIG1hc2suZG9udF9hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBpbnRlcnByZXRfbWFzayAoKSA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgfHwgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICBsZXQgc2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUgY3QgPVxuICAgICAgbGV0IGlzX2NhbmRpZGF0ZSA9XG4gICAgICAgIG1hdGNoIG1hc2suYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT4gTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdClcbiAgICAgIGluXG4gICAgICBsZXQgaXNfc2VsZWN0ZWQgPVxuICAgICAgICBtYXRjaCBtYXNrLmRvbnRfYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaXNfY2FuZGlkYXRlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICAgICAgaXNfY2FuZGlkYXRlICYmIG5vdCAoTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdCkpXG4gICAgICBpblxuICAgICAgaWYgaXNfc2VsZWN0ZWQgdGhlbiBTb21lIGN0Lm5hbWUgZWxzZSBOb25lXG4gICAgaW5cbiAgICBhcHBseV9saXN0IDo9XG4gICAgICBTb21lIChMaXN0LmZpbHRlcl9tYXAgIVRyYW5zZm9ybS5hbGwgfmY6c2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUpXG5cbmxldCBzZXRfY29va2llIHMgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonPScgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwiaW52YWxpZCBjb29raWUsIG11c3QgYmUgb2YgdGhlIGZvcm0gXFxcIjxuYW1lPj08ZXhwcj5cXFwiXCIpXG4gIHwgU29tZSAobmFtZSwgdmFsdWUpIC0+XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHZhbHVlIGluXG4gICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIjxjb21tYW5kLWxpbmU+XCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfTtcbiAgICAgIGxldCBleHByID0gUGFyc2UuZXhwcmVzc2lvbiBsZXhidWYgaW5cbiAgICAgIENvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgOj0gKG5hbWUsIGV4cHIpIDo6ICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpXG5cbmxldCBzaGFyZWRfYXJncyA9XG4gIFtcbiAgICAoIFwiLWxvYy1maWxlbmFtZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gbG9jX2ZuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIjxzdHJpbmc+IEZpbGUgbmFtZSB0byB1c2UgaW4gbG9jYXRpb25zXCIgKTtcbiAgICAoIFwiLXJlc2VydmUtbmFtZXNwYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlcy5yZXNlcnZlLFxuICAgICAgXCI8c3RyaW5nPiBNYXJrIHRoZSBnaXZlbiBuYW1lc3BhY2UgYXMgcmVzZXJ2ZWRcIiApO1xuICAgIChcIi1uby1jaGVja1wiLCBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3MsIFwiIERpc2FibGUgY2hlY2tzICh1bnNhZmUpXCIpO1xuICAgIChcIi1jaGVja1wiLCBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzLCBcIiBFbmFibGUgY2hlY2tzXCIpO1xuICAgICggXCItbm8tY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBEaXNhYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBFbmFibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLW5vLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRGlzYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBFbmFibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEFwcGx5IHRoZXNlIHRyYW5zZm9ybWF0aW9ucyBpbiBvcmRlciAoY29tbWEtc2VwYXJhdGVkIGxpc3QpXCIgKTtcbiAgICAoIFwiLWRvbnQtYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2RvbnRfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gRXhjbHVkZSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnNcIiApO1xuICAgICggXCItbm8tbWVyZ2VcIixcbiAgICAgIEFyZy5TZXQgbm9fbWVyZ2UsXG4gICAgICBcIiBEbyBub3QgbWVyZ2UgY29udGV4dCBmcmVlIHRyYW5zZm9ybWF0aW9ucyAoYmV0dGVyIGZvciBkZWJ1Z2dpbmcgXFxcbiAgICAgICByZXdyaXRlcnMpLiBBcyBhIHJlc3VsdCwgdGhlIGNvbnRleHQtZnJlZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIG5vdCBhbGwgXFxcbiAgICAgICBhcHBsaWVkIGJlZm9yZSBhbGwgaW1wbCBhbmQgaW50Zi5cIiApO1xuICAgIChcIi1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIk5BTUU9RVhQUiBTZXQgdGhlIGNvb2tpZSBOQU1FIHRvIEVYUFJcIik7XG4gICAgKFwiLS1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIiBTYW1lIGFzIC1jb29raWVcIik7XG4gIF1cblxubGV0ICgpID1cbiAgTGlzdC5pdGVyIHNoYXJlZF9hcmdzIH5mOihmdW4gKGtleSwgc3BlYywgZG9jKSAtPiBhZGRfYXJnIGtleSBzcGVjIH5kb2MpXG5cbmxldCBhc19wcCAoKSA9XG4gIHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdDtcbiAgZW1iZWRfZXJyb3JzIDo9IHRydWVcblxubGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gIFtcbiAgICAoIFwiLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgUnVuIGFzIGEgLXBweCByZXdyaXRlciAobXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnQpXCIgKTtcbiAgICAoIFwiLS1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBTYW1lIGFzIC1hcy1wcHhcIiApO1xuICAgIChcIi1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2hvcnRoYW5kIGZvcjogLWR1bXAtYXN0IC1lbWJlZC1lcnJvcnNcIik7XG4gICAgKFwiLS1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2FtZSBhcyAtYXMtcHBcIik7XG4gICAgKCBcIi1vXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXQgOj0gU29tZSBzKSxcbiAgICAgIFwiPGZpbGVuYW1lPiBPdXRwdXQgZmlsZSAodXNlICctJyBmb3Igc3Rkb3V0KVwiICk7XG4gICAgKFwiLVwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9pbnB1dCBcIi1cIiksIFwiIFJlYWQgaW5wdXQgZnJvbSBzdGRpblwiKTtcbiAgICAoIFwiLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBEdW1wIHRoZSBtYXJzaGFsZWQgYXN0IHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkIG9mIHByZXR0eS1wcmludGluZyBpdFwiXG4gICAgKTtcbiAgICAoIFwiLS1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgU2FtZSBhcyAtZHVtcC1hc3RcIiApO1xuICAgICggXCItZHBhcnNldHJlZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHBhcnNldHJlZSksXG4gICAgICBcIiBQcmludCB0aGUgcGFyc2V0cmVlIChzYW1lIGFzIG9jYW1sYyAtZHBhcnNldHJlZSlcIiApO1xuICAgICggXCItZW1iZWQtZXJyb3JzXCIsXG4gICAgICBBcmcuU2V0IGVtYmVkX2Vycm9ycyxcbiAgICAgIFwiIEVtYmVkIGVycm9ycyBpbiB0aGUgb3V0cHV0IEFTVCAoZGVmYXVsdDogdHJ1ZSB3aGVuIC1hcy1wcCwgZmFsc2UgXFxcbiAgICAgICBvdGhlcndpc2UpXCIgKTtcbiAgICAoIFwiLW51bGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIE51bGwpLFxuICAgICAgXCIgUHJvZHVjZSBubyBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJyb3JzXCIgKTtcbiAgICAoIFwiLWltcGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWwgZmlsZVwiICk7XG4gICAgKFwiLS1pbXBsXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksIFwiPGZpbGU+IFNhbWUgYXMgLWltcGxcIik7XG4gICAgKCBcIi1pbnRmXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1saSBmaWxlXCIgKTtcbiAgICAoXCItLWludGZcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW50ZlwiKTtcbiAgICAoIFwiLWRlYnVnLWF0dHJpYnV0ZS1kcm9wXCIsXG4gICAgICBBcmcuU2V0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wLFxuICAgICAgXCIgRGVidWcgYXR0cmlidXRlIGRyb3BwaW5nXCIgKTtcbiAgICAoIFwiLXByaW50LXRyYW5zZm9ybWF0aW9uc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyxcbiAgICAgIFwiIFByaW50IGxpbmtlZC1pbiBjb2RlIHRyYW5zZm9ybWF0aW9ucywgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGFwcGxpZWRcIiApO1xuICAgICggXCItcHJpbnQtcGFzc2VzXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfcGFzc2VzLFxuICAgICAgXCIgUHJpbnQgdGhlIGFjdHVhbCBwYXNzZXMgb3ZlciB0aGUgd2hvbGUgQVNUIGluIHRoZSBvcmRlciB0aGV5IGFyZSBcXFxuICAgICAgIGFwcGxpZWRcIiApO1xuICAgICggXCItaXRlLWNoZWNrXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiV2FybmluZzogdGhlIC1pdGUtY2hlY2sgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBoYXMgbm8gZWZmZWN0LlxcbiUhXCI7XG4gICAgICAgICAgRXh0cmFfd2FybmluZ3MuY2FyZV9hYm91dF9pdGVfYnJhbmNoIDo9IHRydWUpLFxuICAgICAgXCIgKG5vIGVmZmVjdCAtLSBrZXB0IGZvciBjb21wYXRpYmlsaXR5KVwiICk7XG4gICAgKCBcIi1wcFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gcHJlcHJvY2Vzc29yIDo9IFNvbWUgcyksXG4gICAgICBcIjxjb21tYW5kPiAgUGlwZSBzb3VyY2VzIHRocm91Z2ggcHJlcHJvY2Vzc29yIDxjb21tYW5kPiAoaW5jb21wYXRpYmxlIFxcXG4gICAgICAgd2l0aCAtYXMtcHB4KVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzKSksXG4gICAgICBcIiAoV0lQKSBQcmV0dHkgcHJpbnQgdGhlIG91dHB1dCB1c2luZyBhIG1peCBvZiB0aGUgaW5wdXQgc291cmNlIGFuZCB0aGUgXFxcbiAgICAgICBnZW5lcmF0ZWQgY29kZVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpKSxcbiAgICAgIFwiIChXSVApIHNhbWUgYXMgLXJlY29uY2lsZSBidXQgdXNlcyBjb21tZW50cyB0byBlbmNsb3NlIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgRG9uJ3QgdXNlIGNvbG9ycyB3aGVuIHByaW50aW5nIGVycm9yc1wiKTtcbiAgICAoIFwiLWRpZmYtY21kXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgIFwiIERpZmYgY29tbWFuZCB3aGVuIHVzaW5nIGNvZGUgZXhwZWN0YXRpb25zICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCIgKTtcbiAgICAoIFwiLXByZXR0eVwiLFxuICAgICAgQXJnLlNldCBwcmV0dHksXG4gICAgICBcIiBJbnN0cnVjdCBjb2RlIGdlbmVyYXRvcnMgdG8gaW1wcm92ZSB0aGUgcHJldHRpbmVzcyBvZiB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLXN0eWxlclwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzdHlsZXIgOj0gU29tZSBzKSwgXCIgQ29kZSBzdHlsZXJcIik7XG4gICAgKCBcIi1vdXRwdXQtbWV0YWRhdGFcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCJGSUxFIFdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgbWV0YWRhdGFcIiApO1xuICAgICggXCItY29ycmVjdGVkLXN1ZmZpeFwiLFxuICAgICAgQXJnLlNldF9zdHJpbmcgY29ycmVjdGVkX3N1ZmZpeCxcbiAgICAgIFwiU1VGRklYIFN1ZmZpeCB0byBhcHBlbmQgdG8gY29ycmVjdGVkIGZpbGVzXCIgKTtcbiAgXVxuXG5sZXQgZ2V0X2FyZ3MgPyhzdGFuZGFsb25lX2FyZ3MgPSBzdGFuZGFsb25lX2FyZ3MpICgpID1cbiAgc3RhbmRhbG9uZV9hcmdzIEAgTGlzdC5yZXYgIWFyZ3NcblxubGV0IHN0YW5kYWxvbmVfbWFpbiAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIFs8ZmlsZXM+XVwiIGV4ZV9uYW1lIGluXG4gIGxldCBhcmdzID0gZ2V0X2FyZ3MgKCkgaW5cbiAgQXJnLnBhcnNlIChBcmcuYWxpZ24gYXJncykgc2V0X2lucHV0IHVzYWdlO1xuICBpbnRlcnByZXRfbWFzayAoKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIHRoZW4gKFxuICAgIHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfcGFzc2VzIHRoZW4gKFxuICAgIHByaW50X3Bhc3NlcyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzOiBubyBpbnB1dCBmaWxlIGdpdmVuXFxuJSFcIiBleGVfbmFtZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBTb21lIGZuIC0+XG4gICAgICBsZXQga2luZCA9XG4gICAgICAgIG1hdGNoICFraW5kIHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgbWF0Y2ggS2luZC5vZl9maWxlbmFtZSBmbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgICAgICAgXCIlczogZG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJyVzJywgdXNlIC1pbXBsIG9yIC1pbnRmLlxcblwiXG4gICAgICAgICAgICAgICAgICBleGVfbmFtZSBmbjtcbiAgICAgICAgICAgICAgICBTdGRsaWIuZXhpdCAyKVxuICAgICAgaW5cbiAgICAgIGxldCBpbnB1dF9uYW1lLCByZWxvY2F0ZSA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aCBOb25lIC0+IChmbiwgZmFsc2UpIHwgU29tZSBmbiAtPiAoZm4sIHRydWUpXG4gICAgICBpblxuICAgICAgcHJvY2Vzc19maWxlIGtpbmQgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZTohb3V0cHV0X21vZGVcbiAgICAgICAgfm91dHB1dDohb3V0cHV0IH5lbWJlZF9lcnJvcnM6IWVtYmVkX2Vycm9yc1xuXG5sZXQgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuID1cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBpbnB1dF9mbiBpblxuICBsZXQgYXN0ID1cbiAgICB0cnlcbiAgICAgIGxldCBhc3QgPSBleHRyYWN0X2Nvb2tpZXMgYXN0IGluXG4gICAgICBsZXQgdG9vbF9uYW1lID0gQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkgaW5cbiAgICAgIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gICAgICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gICAgICBwcm9jZXNzX2FzdCBhc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgfmVtYmVkX2Vycm9yczp0cnVlXG4gICAgd2l0aCBleG4gLT4gZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQ6KEludGZfb3JfaW1wbC5raW5kIGFzdClcbiAgaW5cbiAgd2l0aF9vdXRwdXQgKFNvbWUgb3V0cHV0X2ZuKSB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgQXN0X2lvLndyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuXG5sZXQgcGFyc2VfaW5wdXQgcGFzc2VkX2luX2FyZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2cgPVxuICB0cnlcbiAgICBBcmcucGFyc2VfYXJndiBwYXNzZWRfaW5fYXJncyAoQXJnLmFsaWduIHZhbGlkX2FyZ3MpXG4gICAgICAoZnVuIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJhbm9ueW1vdXMgYXJndW1lbnRzIG5vdCBhY2NlcHRlZFwiKSlcbiAgICAgIGluY29ycmVjdF9pbnB1dF9tc2dcbiAgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IEFyZy5IZWxwIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDBcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBpbnB1dCA9XG4gIGxldCB2YWxpZF9hcmdzID0gZ2V0X2FyZ3MgfnN0YW5kYWxvbmVfYXJncyAoKSBpblxuICBtYXRjaCBMaXN0LnJldiBAQCBBcnJheS50b19saXN0IEBAIGlucHV0IHdpdGhcbiAgfCBvdXRwdXRfZm4gOjogaW5wdXRfZm4gOjogZmxhZ3NfYW5kX3Byb2dfbmFtZVxuICAgIHdoZW4gTGlzdC5sZW5ndGggZmxhZ3NfYW5kX3Byb2dfbmFtZSA+IDAgLT5cbiAgICAgIGxldCBwcm9nX25hbWVfYW5kX2ZsYWdzID0gTGlzdC5yZXYgZmxhZ3NfYW5kX3Byb2dfbmFtZSB8PiBBcnJheS5vZl9saXN0IGluXG4gICAgICBwYXJzZV9pbnB1dCBwcm9nX25hbWVfYW5kX2ZsYWdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgaW50ZXJwcmV0X21hc2sgKCk7XG4gICAgICByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm47XG4gICAgICBTdGRsaWIuZXhpdCAwXG4gIHwgWyBoZWxwOyBfIF0gd2hlbiBTdHJpbmcuZXF1YWwgaGVscCBcIi1oZWxwXCIgfHwgU3RyaW5nLmVxdWFsIGhlbHAgXCItLWhlbHBcIiAtPlxuICAgICAgcGFyc2VfaW5wdXQgaW5wdXQgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgfCBfIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIlVzYWdlOiAlc1xcbiUhXCIgdXNhZ2U7XG4gICAgICBTdGRsaWIuZXhpdCAyXG5cbmxldCBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgbGV0IHVzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzIC1hcy1wcHggW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lXG4gIGluXG4gIGxldCBhcmd2ID0gQXJyYXkubWFrZSAobiAtIDEpIFwiXCIgaW5cbiAgYXJndi4oMCkgPC0gU3RkbGliLlN5cy5hcmd2LigwKTtcbiAgZm9yIGkgPSAxIHRvIG4gLSAyIGRvXG4gICAgYXJndi4oaSkgPC0gU3RkbGliLlN5cy5hcmd2LihpICsgMSlcbiAgZG9uZTtcbiAgbGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gICAgTGlzdC5tYXAgc3RhbmRhbG9uZV9hcmdzIH5mOihmdW4gKGFyZywgc3BlYywgX2RvYykgLT5cbiAgICAgICAgKGFyZywgc3BlYywgXCIgVW51c2VkIHdpdGggLWFzLXBweFwiKSlcbiAgaW5cbiAgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGFyZ3ZcblxubGV0IHN0YW5kYWxvbmUgKCkgPVxuICBBc3RsaWIuaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCk7XG4gIHRyeVxuICAgIGlmXG4gICAgICBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2ID49IDJcbiAgICAgICYmXG4gICAgICBtYXRjaCBTdGRsaWIuU3lzLmFyZ3YuKDEpIHdpdGhcbiAgICAgIHwgXCItYXMtcHB4XCIgfCBcIi0tYXMtcHB4XCIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKClcbiAgICBlbHNlIHN0YW5kYWxvbmVfbWFpbiAoKTtcbiAgICBTdGRsaWIuZXhpdCAwXG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZSBpblxuICBsZXQgaW5wdXQgPSBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgdHJ5IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzOltdIH51c2FnZSBpbnB1dFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBwcmV0dHkgKCkgPSAhcHJldHR5XG5cbmxldCBlbmFibGVfY2hlY2tzICgpID1cbiAgKCogV2UgZG8gbm90IGVuYWJsZSB0aGUgbG9jYXRpb25zIGNoZWNrIGhlcmUsIHdlIGN1cnJlbnRseSByZXF1aXJlIHRoYXQgb25lXG4gICAgIHRvIGJlIHNwZWNpZmljYWxseSBlbmFibGVkLiAqKVxuICBwZXJmb3JtX2NoZWNrcyA6PSB0cnVlO1xuICBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIDo9IHRydWVcblxubGV0IGVuYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IHRydWVcbmxldCBkaXNhYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gZmFsc2VcbmxldCBtYXBfc3RydWN0dXJlIHN0ID0gbWFwX3N0cnVjdHVyZSBzdFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG5sZXQgdW5kZXJzY29yZV9iaW5kaW5nIGV4cCA9XG4gIGxldCBsb2MgPSBleHAucGV4cF9sb2MgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpIH5leHByOmV4cFxuXG5sZXQgdmFyc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvbmdpZGVudC50IExvY2F0ZWQudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdHQgYWNjID1cbiAgICAgIG1hdGNoIHBhdHQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF92YXIgdiAtPiBMb2NhdGVkLm1hcCAoZnVuIHZhciAtPiBMb25naWRlbnQuTGlkZW50IHZhcikgdiA6OiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdHQgYWNjXG4gIGVuZFxuXG4oKiBGb3IgZXZlcnkgW2xldCB4ID0gLi4uXSBzdHJ1Y3R1cmUgaXRlbSwgYWRkIGEgW2xldCBfID0geF0gKilcbmxldCBhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZSBzdCA9XG4gICAgICBsZXQgcmVjIGxvb3Agc3QgYWNjID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgICB8ICh7IHBzdHJfZGVzYyA9IFBzdHJfdmFsdWUgKF8sIHZicyk7IHBzdHJfbG9jID0gbG9jIH0gYXMgaXRlbSkgOjogcmVzdFxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgdmFycyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IHZicyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB2YiAtPlxuICAgICAgICAgICAgICAgICAgdmFyc19vZiNwYXR0ZXJuIHZiLnB2Yl9wYXQgYWNjKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpZ24gPVxuICAgICAgICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIHZhcnMgfmY6KGZ1biB2IC0+XG4gICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlX2JpbmRpbmcgKHBleHBfaWRlbnQgfmxvYzp2LmxvYyB2KSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbG9vcCByZXN0IChpZ24gQCAoaXRlbSA6OiBhY2MpKVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiBsb29wIHJlc3QgKGl0ZW0gOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKHN1cGVyI3N0cnVjdHVyZSBzdCkgW11cbiAgZW5kXG5cbmxldCBiaW5kc19tb2R1bGVfbmFtZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtib29sXSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBtYiBhY2MgPVxuICAgICAgbWF0Y2ggbWIucG1iX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIG1iIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjID1cbiAgICAgIG1hdGNoIG1kLnBtZF9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24gbXMgXyA9XG4gICAgICBtYXRjaCBtcy5wbXNfbmFtZS50eHQgd2l0aCAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuXG4gICAgbWV0aG9kISBmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgfCBOYW1lZCAobmFtZSwgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdW5wYWNrIG5hbWUgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGggU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZSB8IE5vbmUgLT4gYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGV4cHIgYWNjID1cbiAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIF8sIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjY1xuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxuKCogW2RvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGVdIC0tIElmIHRydWUsIGdlbmVyYXRlZCBjb2RlXG4gICBjb250YWlucyBjb21waWxlciBhdHRyaWJ1dGUgdG8gZGlzYWJsZSB1bnVzZWQgd2FybmluZ3MsIGluc3RlYWQgb2ZcbiAgIGluc2VydGluZyBbbGV0IF8gPSAuLi4gXS4gKilcbmxldCBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3czMl9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIGxldCBjb252X3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiY29kZVwiOyBcImF0dHJpYnV0ZVwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJjb2RlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSBmYWxzZVxuICAgICAgICB8IFwiYXR0cmlidXRlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgSG93IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmcta2VlcC13MzJcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LXczMlwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCJcblxubGV0IGtlZXBfdzMyX2ltcGwgKCkgPSAha2VlcF93MzJfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93MzJfaW50ZiAoKSA9ICFrZWVwX3czMl9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93NjBfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93NjBfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93NjBfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13NjBcIiBrZWVwX3c2MF9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyA2MCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCJcblxubGV0IGtlZXBfdzYwX2ltcGwgKCkgPSAha2VlcF93NjBfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW50ZiAoKSA9ICFrZWVwX3c2MF9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyA9IHJlZiBPcHRpb25zLmRlZmF1bHRfYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubGV0ICgpID1cbiAgRHJpdmVyLmFkZF9hcmcgXCItdW51c2VkLWNvZGUtd2FybmluZ3NcIlxuICAgIChCb29sICgoIDo9ICkgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MpKVxuICAgIH5kb2M6XCJfIEFsbG93IHBweCBkZXJpdmVycyB0byBlbmFibGUgdW51c2VkIGNvZGUgd2FybmluZ3NcIlxuXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKCkgPSAhYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubW9kdWxlIEFyZ3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgQXN0X3BhdHRlcm4gOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQXN0X3BhdHRlcm5cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50KVxuXG4gIHR5cGUgJ2EgcGFyYW0gPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBwYXR0ZXJuIDogKGV4cHJlc3Npb24sICdhKSBBc3RfcGF0dGVybi5QYWNrZWQudDtcbiAgICBkZWZhdWx0IDogJ2E7XG4gIH1cblxuICBsZXQgYXJnIG5hbWUgcGF0dGVybiA9XG4gICAge1xuICAgICAgbmFtZTtcbiAgICAgIGRlZmF1bHQgPSBOb25lO1xuICAgICAgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiAoZnVuIHggLT4gU29tZSB4KTtcbiAgICB9XG5cbiAgbGV0IGZsYWcgbmFtZSA9XG4gICAgbGV0IHBhdHRlcm4gPSBwZXhwX2lkZW50IChsaWRlbnQgKHN0cmluZyBuYW1lKSkgaW5cbiAgICB7IG5hbWU7IGRlZmF1bHQgPSBmYWxzZTsgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiB0cnVlIH1cblxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IE5pbCA6ICgnbSwgJ20pIHRcbiAgICB8IENvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIHQgKiAnYSBwYXJhbSAtPiAoJ20xLCAnbTIpIHRcblxuICBsZXQgZW1wdHkgPSBOaWxcbiAgbGV0ICggKz4gKSBhIGIgPSBDb25zIChhLCBiKVxuXG4gIGxldCByZWMgbmFtZXMgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gc3RyaW5nIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh0LCBwKSAtPiBwLm5hbWUgOjogbmFtZXMgdFxuXG4gIG1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgKF8sIF8pIGluc3RhbmNlID1cbiAgICAgIHwgSV9uaWwgOiAoJ20sICdtKSBpbnN0YW5jZVxuICAgICAgfCBJX2NvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIGluc3RhbmNlICogJ2EgLT4gKCdtMSwgJ20yKSBpbnN0YW5jZVxuXG4gICAgbGV0IHJlYyBjcmVhdGUgOlxuICAgICAgICB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QgLT4gKGEsIGIpIGluc3RhbmNlID1cbiAgICAgZnVuIHNwZWMgYXJncyAtPlxuICAgICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgICB8IE5pbCAtPiBJX25pbFxuICAgICAgfCBDb25zICh0LCBwKSAtPlxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jX29wdCBwLm5hbWUgYXJncyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcC5kZWZhdWx0XG4gICAgICAgICAgICB8IFNvbWUgZXhwciAtPiBBc3RfcGF0dGVybi5QYWNrZWQucGFyc2UgcC5wYXR0ZXJuIGV4cHIucGV4cF9sb2MgZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgSV9jb25zIChjcmVhdGUgdCBhcmdzLCB2YWx1ZSlcblxuICAgIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYi4gKGEsIGIpIGluc3RhbmNlIC0+IGEgLT4gYiA9XG4gICAgIGZ1biB0IGYgLT4gbWF0Y2ggdCB3aXRoIElfbmlsIC0+IGYgfCBJX2NvbnMgKHQsIHgpIC0+IGFwcGx5IHQgZiB4XG4gIGVuZFxuXG4gIGxldCBhcHBseSB0IGFyZ3MgZiA9IEluc3RhbmNlLmFwcGx5IChJbnN0YW5jZS5jcmVhdGUgdCBhcmdzKSBmXG5lbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBHZW5lcmF0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGlnbm9yZSAoXyA6IHQpID0gKClcblxudHlwZSBwYXJzZWRfYXJncyA9XG4gIHwgQXJncyBvZiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdFxuICB8IFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxudHlwZSAnaXRlbSBkZXJpdmVkX2NvZGUgPSB7IGl0ZW1zIDogJ2l0ZW0gbGlzdDsgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sIH1cblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlIGRlcml2ZXIgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFQgOiB7XG4gICAgICAgIHNwZWMgOiAoJ2MsICdhKSBBcmdzLnQ7XG4gICAgICAgIGdlbiA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjO1xuICAgICAgICBhcmdfbmFtZXMgOiBTdHJpbmcuU2V0LnQ7XG4gICAgICAgIGRlcHMgOiBkZXJpdmVyIGxpc3Q7XG4gICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbDtcbiAgICAgIH1cbiAgICAgICAgLT4gKCdhLCAnYikgdFxuXG4gIGxldCBkZXBzIChUIHQpID0gdC5kZXBzXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgP2F0dHJpYnV0ZXM6KF8gPSBbXSkgPyhkZXBzID0gW10pID8odW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSlcbiAgICAgICAgc3BlYyBnZW4gPVxuICAgICAgbGV0IGFyZ19uYW1lcyA9IFN0cmluZy5TZXQub2ZfbGlzdCAoQXJncy5uYW1lcyBzcGVjKSBpblxuICAgICAgVCB7IHNwZWM7IGdlbjsgYXJnX25hbWVzOyBkZXBzOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9XG5cbiAgICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG4gIGVuZFxuXG4gIGxldCBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjIGdlbiA9XG4gICAgVjIubWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlY1xuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIud2l0aF9sb2NfYW5kX3BhdGggZ2VuKVxuXG4gIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG5cbiAgbGV0IG1lcmdlX2FjY2VwdGVkX2FyZ3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBUIHQgOjogcmVzdCAtPiBsb29wIChTdHJpbmcuU2V0LnVuaW9uIGFjYyB0LmFyZ19uYW1lcykgcmVzdFxuICAgIGluXG4gICAgbG9vcCBTdHJpbmcuU2V0LmVtcHR5IGxcblxuICBsZXQgY2hlY2tfYXJndW1lbnRzIG5hbWUgZ2VuZXJhdG9ycyAoYXJncyA6IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0KSA9XG4gICAgbGV0IGVtcHR5X2xhYmVsX2Vycm9yID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBsYWJlbCB0aGVuXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yIGFyZ3VtZW50cyBtdXN0IGJlIGxhYmVsbGVkXCIpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciA9XG4gICAgICBPcHRpb24ubWFwXG4gICAgICAgIChMaXN0LmZpbmRfYV9kdXAgYXJncyB+Y29tcGFyZTooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbiAgICAgICAgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBhcmd1bWVudCBsYWJlbGxlZCAnJXMnIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2VcIlxuICAgICAgICAgICAgbGFiZWwpXG4gICAgICB8PiBPcHRpb24udG9fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjY2VwdGVkX2FyZ3MgPSBtZXJnZV9hY2NlcHRlZF9hcmdzIGdlbmVyYXRvcnMgaW5cbiAgICBsZXQgdW5hY2NlcHRlZF9hcmd1bWVudCA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5TZXQubWVtIGxhYmVsIGFjY2VwdGVkX2FyZ3MpIHRoZW5cbiAgICAgICAgICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU3BlbGxjaGVjay5zcGVsbGNoZWNrIChTdHJpbmcuU2V0LmVsZW1lbnRzIGFjY2VwdGVkX2FyZ3MpIGxhYmVsXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciAnJXMnIGRvZXNuJ3QgYWNjZXB0IGFyZ3VtZW50IFxcXG4gICAgICAgICAgICAgICAgICAnJXMnJXNcIlxuICAgICAgICAgICAgICAgICBuYW1lIGxhYmVsIHNwZWxsY2hlY2tfbXNnKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBlcnJvcnMgPVxuICAgICAgZW1wdHlfbGFiZWxfZXJyb3IgQCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgQCB1bmFjY2VwdGVkX2FyZ3VtZW50XG4gICAgaW5cbiAgICBpZiBMaXN0Lmxlbmd0aCBlcnJvcnMgPSAwIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvcnNcblxuICBsZXQgYXBwbHkgKFQgdCkgfm5hbWU6XyB+Y3R4dCB4IGFyZ3MgPSBBcmdzLmFwcGx5IHQuc3BlYyBhcmdzICh0LmdlbiB+Y3R4dCB4KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgKG5hbWUsIGdlbmVyYXRvcnMsIGFyZ3MpID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBjaGVja19hcmd1bWVudHMgbmFtZS50eHQgZ2VuZXJhdG9ycyBhcmdzID4+fCBmdW4gKCkgLT5cbiAgICBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIGl0ZW1zID0gYXBwbHkgKFQgdCkgfm5hbWU6bmFtZS50eHQgfmN0eHQgZW50cnkgYXJncztcbiAgICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA9IHQudW51c2VkX2NvZGVfd2FybmluZ3M7XG4gICAgICAgIH0pXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSBnZW5lcmF0b3JzIGV4dF90b19pdGVtID1cbiAgICBsZXQgbCA9IExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSkgaW5cbiAgICBsZXQgbDEsIGxlcnIgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvbiBPayBlIC0+IExlZnQgZSB8IEVycm9yIGUgLT4gUmlnaHQgZSkgbFxuICAgIGluXG4gICAgbGV0IGxlcnIgPVxuICAgICAgTGlzdC5jb25jYXQgbGVyclxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBlcnIgLT4gZXh0X3RvX2l0ZW0gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICBpblxuICAgIExpc3QuY29uY2F0IGwxIEAgWyB7IGl0ZW1zID0gbGVycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9IF1cbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICBtb2R1bGUgQWN0dWFsX2Rlcml2ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgc3RyX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2V4dCA6IChzaWduYXR1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGV4dGVuc2lvbiA6XG4gICAgICAgIChsb2M6TG9jYXRpb24udCAtPiBwYXRoOnN0cmluZyAtPiBjb3JlX3R5cGUgLT4gZXhwcmVzc2lvbikgb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEFsaWFzID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3RyX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSBraW5kID0gU3RyIHwgU2lnXG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAga2luZCA6IGtpbmQ7XG4gICAgICBnZXQgOiBBY3R1YWxfZGVyaXZlci50IC0+ICgnYSwgJ2IpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGdldF9zZXQgOiBBbGlhcy50IC0+IHN0cmluZyBsaXN0O1xuICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcIm1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG4gIGVuZFxuXG4gIHR5cGUgdCA9IEFjdHVhbF9kZXJpdmVyIG9mIEFjdHVhbF9kZXJpdmVyLnQgfCBBbGlhcyBvZiBBbGlhcy50XG4gIHR5cGUgUHB4X2Rlcml2ZXJzLmRlcml2ZXIgKz0gVCBvZiB0XG5cbiAgbGV0IGRlcml2ZXJzICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKFBweF9kZXJpdmVycy5kZXJpdmVycyAoKSkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIFQgdCAtPiBTb21lIChuYW1lLCB0KVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbiAgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBsZXQgcmVjIGxvb3AgbmFtZSBjb2xsZWN0ZWQgPVxuICAgICAgaWZcbiAgICAgICAgTGlzdC5leGlzdHMgY29sbGVjdGVkIH5mOihmdW4gKGQgOiBBY3R1YWxfZGVyaXZlci50KSAtPlxuICAgICAgICAgICAgU3RyaW5nLmVxdWFsIGQubmFtZSBuYW1lKVxuICAgICAgdGhlbiBjb2xsZWN0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lIHdpdGhcbiAgICAgICAgfCBTb21lIChUIChBY3R1YWxfZGVyaXZlciBkcnYpKSAtPiBkcnYgOjogY29sbGVjdGVkXG4gICAgICAgIHwgU29tZSAoVCAoQWxpYXMgYWxpYXMpKSAtPlxuICAgICAgICAgICAgbGV0IHNldCA9IGZpZWxkLmdldF9zZXQgYWxpYXMgaW5cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBzZXQgfmluaXQ6Y29sbGVjdGVkIH5mOmxvb3BcbiAgICAgICAgfCBfIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgaW5cbiAgICBMaXN0LnJldiAobG9vcCBuYW1lIFtdKVxuXG4gIGxldCByZXNvbHZlX2ludGVybmFsIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBMaXN0Lm1hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgbmFtZSkgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgbWF0Y2ggZmllbGQuZ2V0IGRydiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgICAgICB8IFNvbWUgZyAtPiAoZHJ2Lm5hbWUsIGcpKVxuXG4gIGxldCBzdXBwb3J0ZWRfZm9yIGZpZWxkID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZGVyaXZlcnMgKCkpIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIF8pIC0+XG4gICAgICAgIG1hdGNoIHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgIHwgXyAtPiBTdHJpbmcuU2V0LmFkZCBuYW1lIGFjY1xuICAgICAgICB8IGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIF8gLT4gYWNjKVxuICAgIHw+IFN0cmluZy5TZXQuZWxlbWVudHNcblxuICBsZXQgbm90X3N1cHBvcnRlZCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgPyhzcGVsbGNoZWNrID0gdHJ1ZSkgbmFtZSA9XG4gICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgIGlmIHNwZWxsY2hlY2sgdGhlblxuICAgICAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKHN1cHBvcnRlZF9mb3IgZmllbGQpIG5hbWUudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICBlbHNlIFwiXCJcbiAgICBpblxuICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6ICclcycgaXMgbm90IGEgc3VwcG9ydGVkICVzIGRlcml2aW5nIGdlbmVyYXRvciVzXCJcbiAgICAgIG5hbWUudHh0IGZpZWxkLm5hbWUgc3BlbGxjaGVja19tc2dcblxuICBsZXQgcmVzb2x2ZSBmaWVsZCBuYW1lID1cbiAgICB0cnkgT2sgKHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZS50eHQpXG4gICAgd2l0aCBOb3Rfc3VwcG9ydGVkIG5hbWUnIC0+XG4gICAgICBFcnJvciAobm90X3N1cHBvcnRlZCBmaWVsZCB+c3BlbGxjaGVjazooU3RyaW5nLmVxdWFsIG5hbWUudHh0IG5hbWUnKSBuYW1lKVxuXG4gIGxldCByZXNvbHZlX2FsbCBmaWVsZCBkZXJpdmVycyA9XG4gICAgbGV0IGRlcml2ZXJzX2FuZF9hcmdzLCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwXG4gICAgICAgIChmdW4gKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVpdGhlci5SaWdodCAobm90X3N1cHBvcnRlZCBmaWVsZCBuYW1lKVxuICAgICAgICAgIHwgU29tZSAoVCBfKSAtPiAoXG4gICAgICAgICAgICAgICgqIEl0J3Mgb25lIG9mIG91cnMsIHBhcnNlIHRoZSBhcmd1bWVudHMgbm93LiBXZSBjYW4ndCBkbyBpdCBiZWZvcmUgc2luY2VcbiAgICAgICAgICAgICAgICAgcHB4X2Rlcml2aW5nIHVzZXMgYSBkaWZmZXJlbnQgc3ludGF4IGZvciBhcmd1bWVudHMuICopXG4gICAgICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IEFyZ3MgbCAtPiBFaXRoZXIuTGVmdCAoU29tZSAobmFtZSwgbCkpXG4gICAgICAgICAgICAgIHwgVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPlxuICAgICAgICAgICAgICAgICAgRWl0aGVyLlJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2MgXCJQcHhsaWIuRGVyaXZpbmc6ICVzXCIgbXNnKSlcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAoKiBJdCdzIG5vdCBvbmUgb2Ygb3VycywgaWdub3JlIGl0LiAqKVxuICAgICAgICAgICAgICBFaXRoZXIuTGVmdCBOb25lKVxuICAgICAgICBkZXJpdmVyc1xuICAgICAgfD4gZnVuIChsMSwgbDIpIC0+IChMaXN0LmZpbHRlcl9vcHQgbDEsIGwyKVxuICAgIGluXG4gICAgKCogU2V0IG9mIGFjdHVhbCBkZXJpdmVyIG5hbWVzICopXG4gICAgbGV0IHNlZW4gPSBIYXNodGJsLmNyZWF0ZSAxNiBpblxuICAgIGxldCByZXN1bHQsIGRlcF9lcnJvcnMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmluaXQ6KFtdLCBbXSkgZGVyaXZlcnNfYW5kX2FyZ3NcbiAgICAgICAgfmY6KGZ1biAocmVzdWx0LCBlcnJvcnMpIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIHJlc29sdmUgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+IChyZXN1bHQsIGVycm9ycyBAIFsgZSBdKVxuICAgICAgICAgIHwgT2sgbmFtZWRfZ2VuZXJhdG9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCBuYW1lZF9nZW5lcmF0b3JzXG4gICAgICAgICAgICAgICAgICB+ZjooZnVuIChhY3R1YWxfZGVyaXZlcl9uYW1lLCBnZW4pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBkdXBfZXJyb3IgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zLmZhaWxfb25fZHVwbGljYXRlX2Rlcml2ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBIYXNodGJsLm1lbSBzZWVuIGFjdHVhbF9kZXJpdmVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBhcHBlYXJzIHR3aWNlXCIgYWN0dWFsX2Rlcml2ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIChHZW5lcmF0b3IuZGVwcyBnZW4pIH5mOihmdW4gZGVwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgZGVwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwX25hbWUgPSBkcnYubmFtZSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChIYXNodGJsLm1lbSBzZWVuIGRlcF9uYW1lKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGlzIG5lZWRlZCBmb3IgJXMsIHlvdSBuZWVkIHRvIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBpdCBiZWZvcmUgaW4gdGhlIGxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcF9uYW1lIG5hbWUudHh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgSGFzaHRibC5zZXQgc2VlbiB+a2V5OmFjdHVhbF9kZXJpdmVyX25hbWUgfmRhdGE6KCk7XG4gICAgICAgICAgICAgICAgICAgIGR1cF9lcnJvciBAIGxfZXJyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHJlc3VsdCBAIFsgKG5hbWUsIExpc3QubWFwIG5hbWVkX2dlbmVyYXRvcnMgfmY6c25kLCBhcmdzKSBdLFxuICAgICAgICAgICAgICAgIGVycm9ycyBAIGxfZXJyICkpXG4gICAgaW5cbiAgICAocmVzdWx0LCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgQCBkZXBfZXJyb3JzKVxuXG4gIGxldCBhZGQgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvbiA/c3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb24gP3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/ZXh0ZW5zaW9uIG5hbWUgPVxuICAgIGxldCBhY3R1YWxfZGVyaXZlciA6IEFjdHVhbF9kZXJpdmVyLnQgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBleHRlbnNpb247XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWN0dWFsX2Rlcml2ZXIgYWN0dWFsX2Rlcml2ZXIpKTtcbiAgICAobWF0Y2ggZXh0ZW5zaW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPlxuICAgICAgICBsZXQgZXh0ZW5zaW9uID1cbiAgICAgICAgICBFeHRlbnNpb24uZGVjbGFyZSBuYW1lIEV4cHJlc3Npb24gQXN0X3BhdHRlcm4uKHB0eXAgX18pIGZcbiAgICAgICAgaW5cbiAgICAgICAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgKFwiUHB4bGliLkRlcml2aW5nLlwiIF4gbmFtZSlcbiAgICAgICAgICB+cnVsZXM6WyBDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gZXh0ZW5zaW9uIF0pO1xuICAgIG5hbWVcblxuICBsZXQgYWRkX2FsaWFzIG5hbWUgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvblxuICAgICAgP3N0cl9tb2R1bGVfdHlwZV9kZWNsID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb25cbiAgICAgID9zaWdfbW9kdWxlX3R5cGVfZGVjbCBzZXQgPVxuICAgIGxldCBhbGlhcyA6IEFsaWFzLnQgPVxuICAgICAgbGV0IGdldCA9IGZ1bmN0aW9uIE5vbmUgLT4gc2V0IHwgU29tZSBzZXQgLT4gc2V0IGluXG4gICAgICB7XG4gICAgICAgIHN0cl90eXBlX2RlY2wgPSBnZXQgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0ID0gZ2V0IHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbiA9IGdldCBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbCA9IGdldCBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQgPSBnZXQgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uID0gZ2V0IHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFsaWFzIGFsaWFzKSk7XG4gICAgbmFtZVxuZW5kXG5cbmxldCBhZGQgPSBEZXJpdmVyLmFkZFxubGV0IGFkZF9hbGlhcyA9IERlcml2ZXIuYWRkX2FsaWFzXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgW0BAZGVyaXZpbmcgXSBwYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGludmFsaWRfd2l0aCB+bG9jID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJpbnZhbGlkIFtAQGRlcml2aW5nIF0gYXR0cmlidXRlIHN5bnRheFwiXG5cbmxldCBnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQgPVxuICBtYXRjaCBMb25naWRlbnQuZmxhdHRlbl9leG4gaWQgd2l0aFxuICB8IGwgLT4geyBsb2M7IHR4dCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBsIH1cbiAgfCBleGNlcHRpb24gXyAtPiBpbnZhbGlkX3dpdGggfmxvY1xuXG5leGNlcHRpb24gVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgcGFyc2VfYXJndW1lbnRzIGwgPVxuICB0cnlcbiAgICBBcmdzXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IFsgKE5vbGFiZWwsIGUpIF0gLT4gKFxuICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIC0+XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChpZCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggaWQudHh0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgcyAtPiBzXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXggKGlkLmxvYywgXCJzaW1wbGUgaWRlbnRpZmllciBleHBlY3RlZFwiKSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAobmFtZSwgZXhwcikpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAoIGUucGV4cF9sb2MsXG4gICAgICAgICAgICAgICAgICAgICBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBvciByZWNvcmQgZXhwZWN0ZWRcIiApKSlcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIExpc3QubWFwIGwgfmY6KGZ1biAobGFiZWwsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGxhYmVsIHdpdGhcbiAgICAgICAgICAgICAgfCBMYWJlbGxlZCBzIC0+IChzLCBleHByKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgICAgIChleHByLnBleHBfbG9jLCBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBleHBlY3RlZFwiKSkpKVxuICB3aXRoIFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT4gVW5rbm93bl9zeW50YXggKGxvYywgbXNnKVxuXG5sZXQgbWtfZGVyaXZpbmdfYXR0ciBjb250ZXh0IH5wcmVmaXggfnN1ZmZpeCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgKHByZWZpeCBeIFwiZGVyaXZpbmdcIiBeIHN1ZmZpeClcbiAgICBjb250ZXh0XG4gICAgQXN0X3BhdHRlcm4uKFxuICAgICAgbGV0IGdlbmVyYXRvcl9uYW1lICgpID1cbiAgICAgICAgbWFwJyAocGV4cF9pZGVudCBfXykgfmY6KGZ1biBsb2MgZiBpZCAtPlxuICAgICAgICAgICAgZiAoZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9yICgpID1cbiAgICAgICAgbWFwIChnZW5lcmF0b3JfbmFtZSAoKSkgfmY6KGZ1biBmIHggLT4gZiAoeCwgQXJncyBbXSkpXG4gICAgICAgIHx8fCBwYWNrMlxuICAgICAgICAgICAgICAocGV4cF9hcHBseSAoZ2VuZXJhdG9yX25hbWUgKCkpXG4gICAgICAgICAgICAgICAgIChtYXAxIChtYW55IF9fKSB+ZjpwYXJzZV9hcmd1bWVudHMpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3JzID1cbiAgICAgICAgcGV4cF90dXBsZSAobWFueSAoZ2VuZXJhdG9yICgpKSlcbiAgICAgICAgfHx8IG1hcCAoZ2VuZXJhdG9yICgpKSB+ZjooZnVuIGYgeCAtPiBmIFsgeCBdKVxuICAgICAgaW5cbiAgICAgIHBzdHIgKHBzdHJfZXZhbCBnZW5lcmF0b3JzIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBVbnVzZWQgd2FybmluZyBzdHVmZiArIGxvY2F0aW9ucyBjaGVjayBzaWxlbmNpbmcgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgc3RyaW5nID1cbiAgICBMaXN0LnNvcnQgd2FybmluZ3MgfmNtcDpJbnQuY29tcGFyZVxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gd2FybmluZyAtPiBcIi1cIiBeIEludC50b19zdHJpbmcgd2FybmluZylcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIlxuICBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLndhcm5pbmdcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2Mgc3RyaW5nKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpbmxpbmVfZG9jX2F0dHIgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLmRvY1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBcIkBpbmxpbmVcIikgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG4oKiB3cmFwIGEgc3RydWN0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtb2Rfc3RydWN0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc3RyX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc3RydWN0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc3RyXSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHN0ID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgdW51c2VkX2NvZGVfd2FybmluZ3MgJiYgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWYga2VlcF93MzJfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIChbXSwgc3QpXG4gICAgZWxzZSBpZiBub3QgIWRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgdGhlblxuICAgICAgKFtdLCBJZ25vcmVfdW51c2VkX3dhcm5pbmcuYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyNzdHJ1Y3R1cmUgc3QpXG4gICAgZWxzZSAoWyAzMiBdLCBzdClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgIHx8IG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzdHJ1Y3R1cmUgc3QgZmFsc2UpXG4gICAgdGhlbiAod2FybmluZ3MsIHN0KVxuICAgIGVsc2UgKDYwIDo6IHdhcm5pbmdzLCBzdClcbiAgaW5cbiAgbGV0IHdyYXAsIHN0ID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHN0KVxuICAgIGVsc2UgKHRydWUsIHBzdHJfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzdClcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgZWxzZSBzdFxuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3N0cl0gYWJvdmUgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogd3JhcCBhIHNpZ25hdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbXR5X3NpZ25hdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHNpZ19pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHNpZ25hdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3NpZ10gKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzZyA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzICYmIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWYga2VlcF93MzJfaW50ZiAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIFtdIGVsc2UgWyAzMiBdXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ludGYgKClcbiAgICAgIHx8IChub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc2lnbmF0dXJlIHNnIGZhbHNlKSlcbiAgICAgIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgdGhlbiB3YXJuaW5nc1xuICAgIGVsc2UgNjAgOjogd2FybmluZ3NcbiAgaW5cbiAgbGV0IHdyYXAsIHNnID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHNnKVxuICAgIGVsc2UgKHRydWUsIHBzaWdfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzZylcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc2lnIH5sb2MgfmhpZGUgc2cgZWxzZSBzZ1xuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3NpZ10gYWJvdmUgKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBNYWluIGV4cGFuc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgdHlwZXNfdXNlZF9ieV9kZXJpdmluZyAodGRzIDogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSA6IHN0cnVjdHVyZV9pdGVtIGxpc3QgPVxuICBpZiBrZWVwX3czMl9pbXBsICgpIHRoZW4gW11cbiAgZWxzZVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgIGxldCB0eXAgPSBDb21tb24uY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgICBwc3RyX3ZhbHVlIH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpXG4gICAgICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgICAgIChwZXhwX2Z1biB+bG9jIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgICAgICAgIChwcGF0X2NvbnN0cmFpbnQgfmxvYyAocHBhdF9hbnkgfmxvYykgdHlwKVxuICAgICAgICAgICAgICAgICAgIChldW5pdCB+bG9jKSk7XG4gICAgICAgICAgXSlcblxubGV0IG1lcmdlX2dlbmVyYXRvcnMgZmllbGQgbCA9XG4gIExpc3QuZmlsdGVyX21hcCBsIH5mOihmdW4geCAtPiB4KSB8PiBMaXN0LmNvbmNhdCB8PiBEZXJpdmVyLnJlc29sdmVfYWxsIGZpZWxkXG5cbigqIFRoaXMgZnVuY3Rpb24gbWVyZ2VzIFsnYSBkZXJpdmVkXSBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXS4gVGhpc1xuICAgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGFkZCBbaW5jbHVkZSBzdHJ1Y3QgLi4uIGVuZF0gdG8gZGlzYWJsZSB3YXJuaW5ncy4gKilcbmxldCBtZXJnZV9kZXJpdmVkIGxpc3RzID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGxpc3RzIH5pbml0OltdIH5mOihmdW4gZGVyaXZlZCBhY2MgLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IG90aGVyIDo6IG90aGVyc1xuICAgICAgICB3aGVuIEJvb2wuZXF1YWwgZGVyaXZlZC51bnVzZWRfY29kZV93YXJuaW5ncyBvdGhlci51bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgICAtPlxuICAgICAgICAgIHsgb3RoZXIgd2l0aCBpdGVtcyA9IGRlcml2ZWQuaXRlbXMgQCBvdGhlci5pdGVtcyB9IDo6IG90aGVyc1xuICAgICAgfCBfIC0+IGRlcml2ZWQgOjogYWNjKVxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgKCogVE9ETzogaW5zdGVhZCBvZiBkaXNhYmxpbmcgdGhlIHVudXNlZCB3YXJuaW5nIGZvciB0eXBlcyB0aGVtc2VsdmVzLCB3ZVxuICAgICBzaG91bGQgYWRkIGEgdGFnIFtAQHVudXNlZF0uICopXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSB0eXBlc191c2VkX2J5X2Rlcml2aW5nIHRkcyBAIGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgcnVsZXMgfnR5cCB+ZXhwYW5kX3NpZyB+ZXhwYW5kX3N0ciB+cnVsZV9zdHIgfnJ1bGVfc2lnIH5ydWxlX3N0cl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0ID1cbiAgbGV0IHByZWZpeCA9IFwicHB4bGliLlwiIGluXG4gIGxldCBkZXJpdmluZ19hdHRyID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiXCIgfnByZWZpeCB0eXAgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHJfZXhwZWN0ID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiX2lubGluZVwiIH5wcmVmaXggdHlwIGluXG4gIFtcbiAgICBydWxlX3NpZyBkZXJpdmluZ19hdHRyIGV4cGFuZF9zaWc7XG4gICAgcnVsZV9zdHIgZGVyaXZpbmdfYXR0ciBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc3RyX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc2lnX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc2lnO1xuICBdXG5cbmxldCBydWxlc190eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOlR5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2RlY2xzXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2RlY2xzXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3RcblxubGV0IHJ1bGVzX3R5cGVfZXh0ID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4dGVuc2lvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZXh0XG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dF9leHBlY3RcblxubGV0IHJ1bGVzX2V4Y2VwdGlvbiA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leGNlcHRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9leGNlcHRpb25cbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25cbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0XG5cbmxldCBydWxlc19tb2R1bGVfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcblxubGV0ICgpID1cbiAgbGV0IHJ1bGVzID1cbiAgICBbIHJ1bGVzX3R5cGVfZGVjbDsgcnVsZXNfdHlwZV9leHQ7IHJ1bGVzX2V4Y2VwdGlvbjsgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCBdXG4gICAgfD4gTGlzdC5jb25jYXRcbiAgaW5cbiAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIFwiZGVyaXZpbmdcIiB+YWxpYXNlczpbIFwidHlwZV9jb252XCIgXSB+cnVsZXNcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgYWZmaXggPVxuICB8IFByZWZpeCBvZiBzdHJpbmdcbiAgfCBTdWZmaXggb2Ygc3RyaW5nXG4gIHwgUHJlZml4U3VmZml4IG9mIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgbWFuZ2xlID8oZml4cG9pbnQgPSBcInRcIikgYWZmaXggbmFtZSA9XG4gIG1hdGNoIChTdHJpbmcuKG5hbWUgPSBmaXhwb2ludCksIGFmZml4KSB3aXRoXG4gIHwgdHJ1ZSwgKFByZWZpeCB4IHwgU3VmZml4IHgpIC0+IHhcbiAgfCB0cnVlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBuYW1lIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeCB4IC0+IHggXiBcIl9cIiBeIG5hbWVcbiAgfCBmYWxzZSwgU3VmZml4IHggLT4gbmFtZSBeIFwiX1wiIF4geFxuXG5sZXQgbWFuZ2xlX3R5cGVfZGVjbCA/Zml4cG9pbnQgYWZmaXggeyBwdHlwZV9uYW1lID0geyB0eHQgPSBuYW1lOyBfIH07IF8gfSA9XG4gIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggbmFtZVxuXG5sZXQgbWFuZ2xlX2xpZCA/Zml4cG9pbnQgYWZmaXggbGlkID1cbiAgbWF0Y2ggbGlkIHdpdGhcbiAgfCBMaWRlbnQgcyAtPiBMaWRlbnQgKG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMZG90IChwLCBzKSAtPiBMZG90IChwLCBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGFwcGx5IF8gLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuRXhwYW5zaW9uX2hlbHBlcnMubWFuZ2xlX2xpZDogTGFwcGx5XCJcblxubW9kdWxlIFF1b3RlciA9IFF1b3RlclxuIiwiKCoqIFN0YW5kYXJkIGxpYnJhcnkgZm9yIHBweCByZXdyaXRlcnMgKilcblxuKCoqIFtwcHhsaWJdIGlzIG1lYW50IHRvIGJlIG9wZW5lZCBnbG9iYWxseSBpbiB5b3VyIFBQWCBzb3VyY2UgZmlsZXMuXG5cbiAgICBPcGVuaW5nIGl0IGNvbWVzIHdpdGggdHdvIGFkdmFudGFnZXMuIEZpcnN0LCBpdCB3aWxsIHNoYWRvdyB0aGVcbiAgICBbY29tcGlsZXItbGlic10gbW9kdWxlcy4gVGhlIFtjb21waWxlci1saWJzXSBtb2R1bGVzIGFyZSB1bnN0YWJsZSBhbmQgYXJlbid0XG4gICAgbWVhbnQgdG8gYmUgdXNlZCwgc28gc2hhZG93aW5nIHRoZW0gaXMgYSBnb29kIHByb3RlY3Rpb24gbWVjaGFuaXNtLiBJbiBjYXNlXG4gICAgeW91IGRvbid0IHdhbnQgdG8gb3BlbiBbUHB4bGliXSwgeW91IGNhbiBvcGVuIFtPY2FtbF9zaGFkb3ddIHRvIGdldCB0aGUgc2FtZVxuICAgIHByb3RlY3Rpb24uIFNlY29uZCwgaXQgd2lsbCBicmluZyBzZXZlcmFsIG1vZHVsZXMgaW4gc2NvcGUsIHRoYXQgYXJlIHVzZWZ1bFxuICAgIHRvIGhhdmUgd2hlbiB3cml0aW5nIGEgcmV3cml0ZXI6XG5cbiAgICAtIFRoZSBtYWluIFtwcHhsaWJdIG1vZHVsZXMsIHN1Y2ggYXMgbW9kdWxlcyB0byBoZWxwIG1hbmlwdWxhdGUgdGhlIEFTVFxuICAgICAgKHshQXN0X2J1aWxkZXJ9LCB7IUFzdF9wYXR0ZXJufSksIGFuZCBhIGZldyBmdW5jdGlvbnMuXG4gICAgLSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzLCBzdWNoIGFzIHshQXN0X2hlbHBlcn0gb3IgeyFQcHJpbnRhc3R9LFxuICAgIC0gVGhlIHdob2xlIEFTVCB0eXBlcyAoYnkgW2luY2x1ZGluZ10gdGhlIHshQXN0fSBtb2R1bGUpLlxuXG4gICAgezEgVGhlIGNvcmUgW3BweGxpYl0gZW50cmllc30gKilcblxuKCoqIHsyIE1hbmlwdWxhdGluZyB0aGUgQVNUfSAqKVxuXG5tb2R1bGUgQXN0X2J1aWxkZXIgPSBBc3RfYnVpbGRlclxubW9kdWxlIEFzdF9wYXR0ZXJuID0gQXN0X3BhdHRlcm5cbm1vZHVsZSBBc3RfdHJhdmVyc2UgPSBBc3RfdHJhdmVyc2VcblxuKCoqIHsyIENvbnRleHQtZnJlZSByZXdyaXRpbmd9ICopXG5cbm1vZHVsZSBDb250ZXh0X2ZyZWUgPSBDb250ZXh0X2ZyZWVcbm1vZHVsZSBEZXJpdmluZyA9IERlcml2aW5nXG5tb2R1bGUgRXh0ZW5zaW9uID0gRXh0ZW5zaW9uXG5tb2R1bGUgRXhwYW5zaW9uX2NvbnRleHQgPSBFeHBhbnNpb25fY29udGV4dFxubW9kdWxlIENvZGVfcGF0aCA9IENvZGVfcGF0aFxuXG4oKiogezIgT3RoZXIgaGVscGVyc30gKilcblxubW9kdWxlIEV4cGFuc2lvbl9oZWxwZXJzID0gRXhwYW5zaW9uX2hlbHBlcnNcbm1vZHVsZSBNZXJsaW5faGVscGVycyA9IE1lcmxpbl9oZWxwZXJzXG5tb2R1bGUgU3BlbGxjaGVjayA9IFNwZWxsY2hlY2tcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxuXG4oKiogezIgRHJpdmVyLXJlbGF0ZWQgbW9kdWxlc30gKilcblxubW9kdWxlIERyaXZlciA9IERyaXZlclxubW9kdWxlIENhbGxlcl9pZCA9IENhbGxlcl9pZFxubW9kdWxlIEFzdF9pbyA9IFV0aWxzLkFzdF9pby5SZWFkX2JpblxuXG4oKiogezIgQ2hlY2tzfSAqKVxuXG5tb2R1bGUgQXR0cmlidXRlID0gQXR0cmlidXRlXG5tb2R1bGUgUmVzZXJ2ZWRfbmFtZXNwYWNlcyA9IE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlc1xuXG4oKiogezIgQ29tbW9uIGhlbHBlciBmdW5jdGlvbnN9ICopXG5cbmluY2x1ZGUgQ29tbW9uXG5cbigqKiB7MSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzfVxuXG4gICAgRXhwb3NlIHNvbWUgbW9kdWxlcyBmcm9tIHshUHB4bGliX2FzdH0uICopXG5cbm1vZHVsZSBBc3QgPSBQcHhsaWJfYXN0LkFzdFxubW9kdWxlIEFzdF9oZWxwZXIgPSBQcHhsaWJfYXN0LkFzdF9oZWxwZXJcbm1vZHVsZSBBc3R0eXBlcyA9IFBweGxpYl9hc3QuQXN0dHlwZXNcbm1vZHVsZSBQYXJzZSA9IFBweGxpYl9hc3QuUGFyc2Vcbm1vZHVsZSBQYXJzZXRyZWUgPSBQcHhsaWJfYXN0LlBhcnNldHJlZVxubW9kdWxlIFBwcmludGFzdCA9IFBweGxpYl9hc3QuUHByaW50YXN0XG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Rcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgTG9jID0gTG9jXG5cbigqKiB7MSBUaGUgd2hvbGUgQVNUIHR5cGVzfSAqKVxuXG5pbmNsdWRlIEFzdFxuKCoqIEluY2x1ZGUgYWxsIHRoZSBBc3QgZGVmaW5pdGlvbnMgc2luY2Ugd2UgbmVlZCB0aGVtIGluIGV2ZXJ5IHNpbmdsZSBwcHhcblxuICAgIEBjbG9zZWQgKilcblxuKCoqIE1ha2Ugc3VyZSBjb2RlIHVzaW5nIFBweGxpYiBkb2Vzbid0IHJlZmVyIHRvIGNvbXBpbGVyLWxpYnMgd2l0aG91dCBiZWluZ1xuICAgIGV4cGxpY2l0IGFib3V0IGl0OlxuXG4gICAgQGNsb3NlZCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItM1wiXVxuXG4gIG9wZW4gT2NhbWxfc2hhZG93XG5cbiAgaW5jbHVkZSAoXG4gICAgT2NhbWxfc2hhZG93IDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE9jYW1sX3NoYWRvd1xuICAgICAgZW5kXG4gICAgICB3aXRoIG1vZHVsZSBBc3RfaGVscGVyIDo9IEFzdF9oZWxwZXJcbiAgICAgIHdpdGggbW9kdWxlIEFzdHR5cGVzIDo9IEFzdHR5cGVzXG4gICAgICB3aXRoIG1vZHVsZSBEb2NzdHJpbmdzIDo9IERvY3N0cmluZ3NcbiAgICAgIHdpdGggbW9kdWxlIElkZW50aWZpYWJsZSA6PSBJZGVudGlmaWFibGVcbiAgICAgIHdpdGggbW9kdWxlIExleGVyIDo9IExleGVyXG4gICAgICB3aXRoIG1vZHVsZSBMb2NhdGlvbiA6PSBMb2NhdGlvblxuICAgICAgd2l0aCBtb2R1bGUgTG9uZ2lkZW50IDo9IExvbmdpZGVudFxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2UgOj0gUGFyc2VcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNldHJlZSA6PSBQYXJzZXRyZWVcbiAgICAgIHdpdGggbW9kdWxlIFBwcmludGFzdCA6PSBQcHJpbnRhc3RcbiAgICAgIHdpdGggbW9kdWxlIFN5bnRheGVyciA6PSBTeW50YXhlcnIpXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBGb3IgdGVzdHMgYW5kIFBweF9jb3JlIGNvbXBhdGliaWxpdHkgbGF5ZXIgKilcbm1vZHVsZSBQcHhsaWJfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29tbW9uID0gQ29tbW9uXG4gIG1vZHVsZSBOYW1lID0gTmFtZVxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBQcHhsaWJcblxubGV0IGRlZmF1bHQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmRlZmF1bHRcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi55b2pzb25fZHJvcF9kZWZhdWx0XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChhbHRfb3B0aW9uIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpIG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X2VxdWFsID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC5lcXVhbFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfY29tcGFyZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQuY29tcGFyZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfeW9qc29uID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25cIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9pZiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ueW9qc29uX2Ryb3BfaWZcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgb3BhcXVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJ5b2pzb24ub3BhcXVlXCIgQXR0cmlidXRlLkNvbnRleHQuY29yZV90eXBlIEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgKClcbjs7XG5cbmxldCBvcHRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm9wdGlvblwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBhbGxvd19leHRyYV9maWVsZHNfdGQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmFsbG93X2V4dHJhX2ZpZWxkc1wiXG4gICAgQXR0cmlidXRlLkNvbnRleHQudHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGFsbG93X2V4dHJhX2ZpZWxkc19jZCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uYWxsb3dfZXh0cmFfZmllbGRzXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IHlvanNvbl9rZXkgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmtleVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQuY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQucnRhZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIGF0dHIgZGVzY3JpcHRpb24gPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICB+bG9jXG4gICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAJXNdIGlzIG9ubHkgYWxsb3dlZCBvbiB0eXBlIFslc10uXCJcbiAgICAoQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgICBkZXNjcmlwdGlvblxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX2NkIHgpXG4gIHRoZW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgIH5sb2NcbiAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiBpbmxpbmUgcmVjb3Jkcy5cIlxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX3RkIHgpXG4gIHRoZW4gKFxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IGNkc1xuICAgICAgd2hlbiBMaXN0LmV4aXN0cyBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIF8gLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIG9ubHkgd29ya3Mgb24gcmVjb3Jkcy4gRm9yIGlubGluZSBcXFxuICAgICAgICAgcmVjb3JkcywgZG86IHR5cGUgdCA9IEEgb2YgeyBhIDogaW50IH0gW0BAYWxsb3dfZXh0cmFfZmllbGRzXSB8IEIgW0BAQEBkZXJpdmluZyBcXFxuICAgICAgICAgeW9qc29uXVwiXG4gICAgfCBfIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiByZWNvcmRzLlwiKVxuOztcblxubW9kdWxlIFJlY29yZF9maWVsZF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgY29tbW9uID0gWyBgeW9qc29uX29wdGlvbiBvZiBjb3JlX3R5cGUgXVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIGF0dHIgbGQgfmYgPVxuICAgIE9wdGlvbi5tYXAgKEF0dHJpYnV0ZS5nZXQgYXR0ciBsZCkgfmY6KGZ1biB4IC0+IGYgeCwgQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgOztcblxuICBsZXQgY3JlYXRlIH5sb2MgZ2V0dGVycyBsZCA9XG4gICAgbGV0IGNvbW1vbl9nZXR0ZXJzID1cbiAgICAgIFsgKGZ1biBsZCAtPlxuICAgICAgICAgIG1hdGNoIEF0dHJpYnV0ZS5nZXQgb3B0aW9uIGxkIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICAgICAgfCBbJXR5cGU6IFsldD8gdHldIG9wdGlvbl0gLT4gU29tZSAoYHlvanNvbl9vcHRpb24gdHksIFwiW0B5b2pzb24ub3B0aW9uXVwiKVxuICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIG9wdGlvbiBcIl8gb3B0aW9uXCIpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICBdXG4gICAgaW5cbiAgICBtYXRjaCBMaXN0LmZpbHRlcl9tYXAgKGdldHRlcnMgQCBjb21tb25fZ2V0dGVycykgfmY6KGZ1biBmIC0+IGYgbGQpIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgKHYsIF8pIF0gLT4gU29tZSB2XG4gICAgfCBfIDo6IF8gOjogXyBhcyBhdHRyaWJ1dGVzIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlRoZSBmb2xsb3dpbmcgZWxlbWVudHMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZTogJXNcIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChMaXN0Lm1hcCBhdHRyaWJ1dGVzIH5mOnNuZCkpXG4gIDs7XG5cbiAgbW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIGNvbW1vblxuICAgICAgfCBgZGVmYXVsdCBvZiBleHByZXNzaW9uXG4gICAgICBdXG5cbiAgICBsZXQgY3JlYXRlIH5sb2MgbGQgPVxuICAgICAgY3JlYXRlIH5sb2MgWyBnZXRfYXR0cmlidXRlIGRlZmF1bHQgfmY6KGZ1biBkZWZhdWx0IC0+IGBkZWZhdWx0IGRlZmF1bHQpIF0gbGRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgY29tbW9uXG4gICAgICB8IGBkcm9wX2RlZmF1bHQgb2YgWyBgbm9fYXJnIHwgYGNvbXBhcmUgfCBgZXF1YWwgfCBgeW9qc29uIHwgYGZ1bmMgb2YgZXhwcmVzc2lvbiBdXG4gICAgICB8IGBkcm9wX2lmIG9mIGV4cHJlc3Npb25cbiAgICAgIHwgYGtlZXBcbiAgICAgIF1cblxuICAgIGxldCBjcmVhdGUgfmxvYyBsZCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmxvY1xuICAgICAgICBbIGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IGBkcm9wX2RlZmF1bHQgYG5vX2FyZ1xuICAgICAgICAgICAgfCBTb21lIGUgLT4gYGRyb3BfZGVmYXVsdCAoYGZ1bmMgZSkpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfZXF1YWwgfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGBlcXVhbClcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF9jb21wYXJlIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgY29tcGFyZSlcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF95b2pzb24gfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGB5b2pzb24pXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2lmIH5mOihmdW4geCAtPiBgZHJvcF9pZiB4KVxuICAgICAgICBdXG4gICAgICAgIGxkXG4gICAgICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6YGtlZXBcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPVxuICB7IGxhYmVsIDogc3RyaW5nXG4gIDsgbmFtZV9vdmVycmlkZSA6IHN0cmluZyBvcHRpb25cbiAgfVxuXG5sZXQgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZSA9IHsgbGFiZWw7IG5hbWVfb3ZlcnJpZGUgfVxuXG5sZXQgb2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKGNkIDogUHB4bGliLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSA9XG4gIGxldCBsYWJlbCA9IGNkLnBjZF9uYW1lLnR4dCBpblxuICBsZXQgbmFtZV9vdmVycmlkZSA9IFBweGxpYi5BdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl92YXJpYW50X25hbWUgY2QgaW5cbiAgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZVxuOztcblxubGV0IGxhYmVsIHQgPSB0LmxhYmVsXG5sZXQgbmFtZSB0ID0gT3B0aW9uLnZhbHVlIHQubmFtZV9vdmVycmlkZSB+ZGVmYXVsdDp0LmxhYmVsXG4iLCJvcGVuIEJhc2Vcbm9wZW4gUHB4bGliXG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBBdHRycyA9IEF0dHJzXG5cbmxldCAoIC0tPiApIGxocyByaHMgPSBjYXNlIH5ndWFyZDpOb25lIH5saHMgfnJoc1xuXG4oKiBTaW1wbGlmaWVzIG1hdGNoIGNhc2VzLCBmb3IgcmVhZGFiaWxpdHkgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBJdCdzIG5vdCBvYnZpb3VzIHdlIGNhblxuICAgc3RpY2sgdGhpcyBpbiBwcHhfY29yZSwgYXMgKG1hdGNoIGUxIHdpdGggcCAtPiBlMikgYW5kIChsZXQgcCA9IGUxIGluIGUyKSBhcmUgbm90IHR5cGVkXG4gICBleGFjdGx5IHRoZSBzYW1lICh0eXBlIGluZmVyZW5jZSBnb2VzIGluIGRpZmZlcmVudCBvcmRlciwgbWVhbmluZyB0eXBlIGRpc2FtYmlndWF0aW9uXG4gICBkaWZmZXJzKS4gKilcbmxldCBwZXhwX21hdGNoIH5sb2MgZXhwciBjYXNlcyA9XG4gIG1hdGNoIGNhc2VzIHdpdGhcbiAgfCBbIHsgcGNfbGhzOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyB9IF0gLT5cbiAgICAobWF0Y2ggcGNfbGhzLCBleHByIHdpdGhcbiAgICAgfCAoIHsgcHBhdF9hdHRyaWJ1dGVzID0gW107IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gaWRlbnQ7IF8gfTsgXyB9XG4gICAgICAgLCB7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGlkZW50JzsgXyB9OyBfIH0gKVxuICAgICAgIHdoZW4gU3RyaW5nLmVxdWFsIGlkZW50IGlkZW50JyAtPiBwY19yaHNcbiAgICAgfCBfIC0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGNfbGhzIH5leHByIF0gcGNfcmhzKVxuICB8IF8gLT4gcGV4cF9tYXRjaCB+bG9jIGV4cHIgY2FzZXNcbjs7XG5cbm1vZHVsZSBGdW5fb3JfbWF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEZ1biBvZiBleHByZXNzaW9uXG4gICAgfCBNYXRjaCBvZiBjYXNlIGxpc3RcblxuICBsZXQgZXhwciB+bG9jIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRnVuIGYgLT4gZlxuICAgIHwgTWF0Y2ggY2FzZXMgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIGNhc2VzXG4gIDs7XG5cbiAgbGV0IHVucm9sbCB+bG9jIGUgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBGdW4gZiAtPiBlYXBwbHkgfmxvYyBmIFsgZSBdXG4gICAgfCBNYXRjaCBjYXNlcyAtPiBwZXhwX21hdGNoIH5sb2MgZSBjYXNlc1xuICA7O1xuXG4gIGxldCBtYXBfdG1wX3ZhcnMgfmxvYyB0cyA9XG4gICAgbGV0IHZhcnMgPSBMaXN0Lm1hcGkgdHMgfmY6KGZ1biBpIF8gLT4gXCJ2XCIgXiBJbnQudG9fc3RyaW5nIGkpIGluXG4gICAgbGV0IGJpbmRpbmdzID1cbiAgICAgIExpc3QubWFwMl9leG4gdmFycyB0cyB+ZjooZnVuIHZhciB0IC0+XG4gICAgICAgIGxldCBleHByID0gdW5yb2xsIH5sb2MgKGV2YXIgfmxvYyB2YXIpIHQgaW5cbiAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHB2YXIgfmxvYyB2YXIpIH5leHByKVxuICAgIGluXG4gICAgYmluZGluZ3MsIExpc3QubWFwIHZhcnMgfmY6KHB2YXIgfmxvYyksIExpc3QubWFwIHZhcnMgfmY6KGV2YXIgfmxvYylcbiAgOztcbmVuZFxuXG4oKiBBIHJlbmFtaW5nIGlzIGEgbWFwcGluZyBmcm9tIHR5cGUgdmFyaWFibGUgbmFtZSB0byB0eXBlIHZhcmlhYmxlIG5hbWUuXG4gICBJbiBkZWZpbml0aW9ucyBzdWNoIGFzOlxuXG4gICB0eXBlICdhIHQgPVxuICAgfCBBIDogPHR5cGU+IC0+ICdiIHRcbiAgIHwgQiBvZiAnYVxuXG4gICB3ZSBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4geW9qc29uX29mIHBhcmFtZXRlciBuYW1lZCBhZnRlciAnYSwgYnV0ICdhIGlzIG5vdCBpblxuICAgc2NvcGUgaW4gPHR5cGU+IHdoZW4gaGFuZGxpbmcgdGhlIGNvbnN0cnVjdG9yIEEgKGJlY2F1c2UgQSBpcyBhIGdhZHQgY29uc3RydWN0b3IpLlxuICAgSW5zdGVhZCB0aGUgdHlwZSB2YXJpYWJsZXMgaW4gc2NvcGUgYXJlIHRoZSBvbmVzIGRlZmluZWQgaW4gdGhlIHJldHVybiB0eXBlIG9mIEEsXG4gICBuYW1lbHkgJ2IuIFRoZXJlIGNvdWxkIGJlIGxlc3Mgb3IgbW9yZSB0eXBlIHZhcmlhYmxlIGluIGNhc2VzIHN1Y2ggYXM6XG5cbiAgIHR5cGUgXyBsZXNzID0gTGVzcyA6IGludCBsZXNzXG4gICB0eXBlIF8gbW9yZSA9IE1vcmUgOiAoJ2EgKiAnYSkgbW9yZVxuXG4gICBJZiBmb3IgaW5zdGFuY2UsIDx0eXBlPiBpcyBbJ2IgKiAnY10sIHdoZW4gd2UgZmluZCAnYiwgd2Ugd2lsbCBsb29rIGZvciBbJ2JdIGluIHRoZVxuICAgcmVuYW1pbmcgYW5kIGZpbmQgWydhXSAob25seSBpbiB0aGF0IGdhZHQgYnJhbmNoLCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSBpbiBvdGhlclxuICAgYnJhbmNoZXMpLCBhdCB3aGljaCBwb2ludCB3ZSBjYW4gY2FsbCB0aGUgcHJldmlvdXNseSBib3VuZCB5b2pzb25fb2YgcGFyYW1ldGVyIG5hbWVkXG4gICBhZnRlciAnYS5cbiAgIElmIHdlIGNhbid0IGZpbmQgYSByZXN1bHRpbmcgbmFtZSwgbGlrZSB3aGVuIGxvb2tpbmcgdXAgWydjXSBpbiB0aGUgcmVuYW1pbmcsIHRoZW4gd2VcbiAgIGFzc3VtZSB0aGUgdmFyaWFibGUgaXMgZXhpc3RlbnRpYWxseSBxdWFudGlmaWVkIGFuZCB0cmVhdCBpdCBhcyBbX10gKHdoaWNoIGlzIG9rLFxuICAgYXNzdW1pbmcgdGhlcmUgYXJlIG5vIGNvbnN0cmFpbnRzKS4gKilcbm1vZHVsZSBSZW5hbWluZyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgaWRlbnRpdHkgOiB0XG4gIHZhbCBhZGRfdW5pdmVyc2FsbHlfYm91bmQgOiB0IC0+IHN0cmluZyBsb2MgLT4gdFxuXG4gIHR5cGUgYmluZGluZ19raW5kID1cbiAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZFxuXG4gIHZhbCBiaW5kaW5nX2tpbmQgOiB0IC0+IHN0cmluZyAtPiBiaW5kaW5nX2tpbmRcbiAgdmFsIG9mX2dhZHQgOiBzdHJpbmcgbGlzdCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvciA9IHN0cmluZyBMb2MudFxuICB0eXBlIHQgPSAoc3RyaW5nLCBlcnJvcikgUmVzdWx0LnQgTWFwLk0oU3RyaW5nKS50IG9wdGlvblxuXG4gIGxldCBpZGVudGl0eSA9IE5vbmVcblxuICB0eXBlIGJpbmRpbmdfa2luZCA9XG4gICAgfCBVbml2ZXJzYWxseV9ib3VuZCBvZiBzdHJpbmdcbiAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmRcblxuICBsZXQgYWRkX3VuaXZlcnNhbGx5X2JvdW5kICh0IDogdCkgbmFtZSA6IHQgPVxuICAgIGxldCBuYW1lID0gbmFtZS50eHQgaW5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBtYXAgLT4gU29tZSAoTWFwLnNldCB+a2V5Om5hbWUgfmRhdGE6KE9rIG5hbWUpIG1hcClcbiAgOztcblxuICBsZXQgYmluZGluZ19raW5kIHQgdmFyID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFyXG4gICAgfCBTb21lIG1hcCAtPlxuICAgICAgKG1hdGNoIE1hcC5maW5kIG1hcCB2YXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBFeGlzdGVudGlhbGx5X2JvdW5kXG4gICAgICAgfCBTb21lIChPayB2YWx1ZSkgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFsdWVcbiAgICAgICB8IFNvbWUgKEVycm9yIHsgbG9jOyB0eHQgfSkgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCIlc1wiIHR4dClcbiAgOztcblxuICAoKiBSZXR1cm4gYSBtYXAgdHJhbnNsYXRpbmcgdHlwZSB2YXJpYWJsZXMgYXBwZWFyaW5nIGluIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdBRFRcbiAgICAgY29uc3RydWN0b3IgdG8gdGhlaXIgbmFtZSBpbiB0aGUgdHlwZSBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICBGb3IgaW5zdGFuY2U6XG5cbiAgICAge1tcbiAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSBYIDogJ3ggKiAneSAtPiAoJ3gsICd5KSB0XG4gICAgIF19XG5cbiAgICAgd2lsbCBwcm9kdWNlOlxuXG4gICAgIHtbXG4gICAgICAgXCJ4XCIgLT4gT2sgXCJhXCJcbiAgICAgICAgICAgICAgICBcInlcIiAtPiBPayBcImJcIlxuICAgICBdfVxuXG4gICAgIElmIGEgdmFyaWFibGUgYXBwZWFycyB0d2ljZSBpbiB0aGUgcmV0dXJuIHR5cGUgaXQgd2lsbCBtYXAgdG8gW0Vycm9yIF9dLiBJZiBhXG4gICAgIHZhcmlhYmxlIGNhbm5vdCBiZSBtYXBwZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgZGVjbGFyYXRpb24sIGl0IHdpbGwgbWFwIHRvXG4gICAgIFtFcnJvcl0gKGZvciBpbnN0YW5jZSBbQSA6ICdhIC0+ICdhIGxpc3QgdF0pLlxuXG4gICAgIEl0IHJldHVybnMgTm9uZSBvbiB1c2VyIGVycm9yLCB0byBsZXQgdGhlIHR5cGVyIGdpdmUgdGhlIGVycm9yIG1lc3NhZ2UgKilcbiAgbGV0IG9mX2dhZHQgPVxuICAgICgqIEFkZCBhbGwgdHlwZSB2YXJpYWJsZXMgb2YgYSB0eXBlIHRvIGEgbWFwLiAqKVxuICAgIGxldCBhZGRfdHlwZXZhcnMgPVxuICAgICAgb2JqZWN0XG4gICAgICAgIGluaGVyaXQgWyhzdHJpbmcsIGVycm9yKSBSZXN1bHQudCBNYXAuTShTdHJpbmcpLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgICAgbWV0aG9kISBjb3JlX3R5cGUgdHkgbWFwID1cbiAgICAgICAgICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICB7IGxvYyA9IHR5LnB0eXBfbG9jXG4gICAgICAgICAgICAgIDsgdHh0ID1cbiAgICAgICAgICAgICAgICAgIFwicHB4X3lvanNvbl9jb252OiB2YXJpYWJsZSBpcyBub3QgYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgY29uc3RydWN0b3JcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTWFwLnNldCBtYXAgfmtleTp2YXIgfmRhdGE6KEVycm9yIGVycm9yKVxuICAgICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgdHkgbWFwXG4gICAgICBlbmRcbiAgICBpblxuICAgIGxldCBhdXggbWFwIHRwX25hbWUgdHBfaW5fcmV0dXJuX3R5cGUgPVxuICAgICAgbWF0Y2ggdHBfaW5fcmV0dXJuX3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICBpZiBNYXAubWVtIG1hcCB2YXJcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBsb2MgPSB0cF9pbl9yZXR1cm5fdHlwZS5wdHlwX2xvYyBpblxuICAgICAgICAgICAgRXJyb3IgeyBsb2M7IHR4dCA9IFwicHB4X3lvanNvbl9jb252OiBkdXBsaWNhdGUgdmFyaWFibGVcIiB9KVxuICAgICAgICAgIGVsc2UgT2sgdHBfbmFtZVxuICAgICAgICBpblxuICAgICAgICBNYXAuc2V0IG1hcCB+a2V5OnZhciB+ZGF0YVxuICAgICAgfCBfIC0+IGFkZF90eXBldmFycyNjb3JlX3R5cGUgdHBfaW5fcmV0dXJuX3R5cGUgbWFwXG4gICAgaW5cbiAgICBmdW4gdHBzIGNkIC0+XG4gICAgICBtYXRjaCBjZC5wY2RfcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgKG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICB8IFB0eXBfY29uc3RyIChfLCBwYXJhbXMpIC0+XG4gICAgICAgICAgIGlmIExpc3QubGVuZ3RoIHBhcmFtcyA8PiBMaXN0Lmxlbmd0aCB0cHNcbiAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoU3RkbGliLkxpc3RMYWJlbHMuZm9sZF9sZWZ0MlxuICAgICAgICAgICAgICAgICAgdHBzXG4gICAgICAgICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICAgICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpKVxuICAgICAgICAgICAgICAgICAgfmY6YXV4KVxuICAgICAgICAgfCBfIC0+IE5vbmUpXG4gIDs7XG5lbmRcblxuKCogVXRpbGl0eSBmdW5jdGlvbnMgKilcblxubGV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzID1cbiAgbGV0IG1hcCA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgUHR5cF92YXIgXyAtPiBQdHlwX2FueVxuICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgIGVuZFxuICBpblxuICBtYXAjY29yZV90eXBlXG47O1xuXG5sZXQgcmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSB4ID1cbiAgbGV0IHByZWZpeCA9IFwicmlnaWRfXCIgaW5cbiAgaWYgU3RyaW5nLmVxdWFsIHggdHlwZV9uYW1lIHx8IFN0cmluZy5pc19wcmVmaXggeCB+cHJlZml4XG4gIHRoZW4gcHJlZml4IF4geCBeIFwiX29mX3R5cGVfXCIgXiB0eXBlX25hbWVcbiAgZWxzZSB4XG47O1xuXG5sZXQgbWFrZV90eXBlX3JpZ2lkIH50eXBlX25hbWUgPVxuICBsZXQgbWFwID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZSB0eSA9XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPVxuICAgICAgICAgIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3ZhciBzIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoTG9jYXRlZC5saWRlbnQgfmxvYzp0eS5wdHlwX2xvYyAocmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSBzKSwgW10pXG4gICAgICAgICAgfCBkZXNjIC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIGRlc2NcbiAgICAgICAgaW5cbiAgICAgICAgeyB0eSB3aXRoIHB0eXBfZGVzYyB9XG4gICAgZW5kXG4gIGluXG4gIG1hcCNjb3JlX3R5cGVcbjs7XG5cbigqIEdlbmVyYXRlcyB0aGUgcXVhbnRpZmllZCB0eXBlIFsgISAnYSAuLiAneiAuIChtYWtlX21vbm9fdHlwZSB0ICgnYSAuLiAneikpIF0gb3JcbiAgIFt0eXBlIGEgLi4gei4gbWFrZV9tb25vX3R5cGUgdCAoYSAuLiB6KV0gd2hlbiBbdXNlX3JpZ2lkX3ZhcmlhYmxlc10gaXMgdHJ1ZS5cbiAgIEFubm90YXRpb24gYXJlIG5lZWRlZCBmb3Igbm9uIHJlZ3VsYXIgcmVjdXJzaXZlIGRhdGF0eXBlcyBhbmQgZ2FkdCB3aGVuIHRoZSByZXR1cm4gdHlwZVxuICAgb2YgY29uc3RydWN0b3JzIGFyZSBjb25zdHJhaW5lZC4gVW5mb3J0dW5hdGVseSwgcHV0dGluZyByaWdpZCB2YXJpYWJsZXMgZXZlcnl3aGVyZSBkb2VzXG4gICBub3Qgd29yayBiZWNhdXNlIG9mIGNlcnRhaW5zIHR5cGVzIHdpdGggY29uc3RyYWludHMuIFdlIHRodXMgb25seSB1c2UgcmlnaWQgdmFyaWFibGVzXG4gICBmb3Igc3VtIHR5cGVzLCB3aGljaCBpbmNsdWRlcyBhbGwgR0FEVHMuICopXG5cbmxldCB0dmFyc19vZl9jb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gc3RyaW5nIGxpc3QgPVxuICBsZXQgdHZhcnMgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFB0eXBfdmFyIHggLT4gaWYgTGlzdC5tZW0gYWNjIHggfmVxdWFsOlN0cmluZy5lcXVhbCB0aGVuIGFjYyBlbHNlIHggOjogYWNjXG4gICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgeCBhY2NcbiAgICBlbmRcbiAgaW5cbiAgZnVuIHR5cCAtPiBMaXN0LnJldiAodHZhcnMjY29yZV90eXBlIHR5cCBbXSlcbjs7XG5cbmxldCBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nXG4gICAgICAoKiBwbGFjaW5nIGEgc3VpdGFibHkgcG9seW1vcnBoaWMgb3IgcmlnaWQgdHlwZSBjb25zdHJhaW50IG9uIHRoZSBwYXR0ZXJuIG9yIGJvZHkgKilcbiAgICAgIChsb2MgOiBMb2NhdGlvbi50KVxuICAgICAgKHRkIDogdHlwZV9kZWNsYXJhdGlvbilcbiAgICAgICh0eXAgOiBjb3JlX3R5cGUpXG4gICAgICB+KHRwcyA6IHN0cmluZyBsb2MgbGlzdClcbiAgICAgIH4oZnVuY19uYW1lIDogc3RyaW5nKVxuICAgICAgKGJvZHkgOiBleHByZXNzaW9uKVxuICA9XG4gIGxldCB2YXJzID0gdHZhcnNfb2ZfY29yZV90eXBlIHR5cCBpblxuICBsZXQgaGFzX3ZhcnMgPVxuICAgIG1hdGNoIHZhcnMgd2l0aFxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IF8gOjogXyAtPiB0cnVlXG4gIGluXG4gIGxldCBwYXQgPVxuICAgIGxldCBwYXQgPSBwdmFyIH5sb2MgZnVuY19uYW1lIGluXG4gICAgaWYgbm90IGhhc192YXJzXG4gICAgdGhlbiBwYXRcbiAgICBlbHNlIChcbiAgICAgIGxldCB2YXJzID0gTGlzdC5tYXAgfmY6KGZ1biB0eHQgLT4geyB0eHQ7IGxvYyB9KSB2YXJzIGluXG4gICAgICBwcGF0X2NvbnN0cmFpbnQgfmxvYyBwYXQgKHB0eXBfcG9seSB+bG9jIHZhcnMgdHlwKSlcbiAgaW5cbiAgbGV0IGJvZHkgPVxuICAgIGxldCB1c2VfcmlnaWRfdmFyaWFibGVzID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgfCBQdHlwZV92YXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiB1c2VfcmlnaWRfdmFyaWFibGVzXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdHlwZV9uYW1lID0gdGQucHR5cGVfbmFtZS50eHQgaW5cbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICB0cHNcbiAgICAgICAgfmY6KGZ1biB0cCBib2R5IC0+XG4gICAgICAgICAgcGV4cF9uZXd0eXBlIH5sb2MgeyB0eHQgPSByaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHRwLnR4dDsgbG9jID0gdHAubG9jIH0gYm9keSlcbiAgICAgICAgfmluaXQ6KHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgKG1ha2VfdHlwZV9yaWdpZCB+dHlwZV9uYW1lIHR5cCkpKVxuICAgIGVsc2UgaWYgaGFzX3ZhcnNcbiAgICB0aGVuIGJvZHlcbiAgICBlbHNlIHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgdHlwXG4gIGluXG4gIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0IH5leHByOmJvZHlcbjs7XG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9XG4gIChvYmplY3RcbiAgICBpbmhlcml0IHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUgd2l0aFxuICAgICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgfm1hcmtfYXNfc2VlbjpmYWxzZSBBdHRycy5vcGFxdWUgY3R5cGUpIC0+XG4gICAgICAgICgpXG4gICAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSAtPiAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuICBlbmQpXG4gICNnb1xuICAgICgpXG47O1xuXG4oKiBHZW5lcmF0ZXMgdGhlIHNpZ25hdHVyZSBmb3IgdHlwZSBjb252ZXJzaW9uIHRvIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX29mX3lvanNvbl9vZiB+bG9jIHQgPSBbJXR5cGU6IFsldCB0XSAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnRdXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl95b2pzb25fb2ZcblxuICBsZXQgbWtfc2lnIH5sb2M6XyB+cGF0aDpfIChfcmYsIHRkcykgPVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICBsZXQgbG9jID0gdGQucHR5cGVfbG9jIGluXG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwICgoIF4gKSBcInlvanNvbl9vZl9cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgfnR5cGVfOihta190eXBlIHRkKVxuICAgICAgICAgICB+cHJpbTpbXSkpXG4gIDs7XG5lbmRcblxuKCogR2VuZXJhdGVzIHRoZSBzaWduYXR1cmUgZm9yIHR5cGUgY29udmVyc2lvbiBmcm9tIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uID0gc3RydWN0XG4gIGxldCB0eXBlX29mX29mX3lvanNvbiB+bG9jIHQgPSBbJXR5cGU6IFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudCAtPiBbJXQgdF1dXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl9vZl95b2pzb25cblxuICBsZXQgc2lnX29mX3RkIHdpdGhfcG9seSB0ZCA9XG4gICAgbGV0IG9mX3lvanNvbl90eXBlID0gbWtfdHlwZSB0ZCBpblxuICAgIGxldCBsb2MgPSB7IHRkLnB0eXBlX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBvZl95b2pzb25faXRlbSA9XG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwIChmdW4gcyAtPiBzIF4gXCJfb2ZfeW9qc29uXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICB+cHJpbTpbXSlcbiAgICBpblxuICAgIG1hdGNoIHdpdGhfcG9seSwgaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlIHdpdGhcbiAgICB8IHRydWUsIGBTdXJlbHlfbm90IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlNpZ19nZW5lcmF0ZV9vZl95b2pzb24uc2lnX29mX3RkOiB5b2pzb25fcG9seSBhbm5vdGF0aW9uIGJ1dCB0eXBlIGlzIHN1cmVseSBub3QgXFxcbiAgICAgICAgIGEgcG9seW1vcnBoaWMgdmFyaWFudFwiXG4gICAgfCBmYWxzZSwgKGBTdXJlbHlfbm90IHwgYE1heWJlKSAtPiBbIG9mX3lvanNvbl9pdGVtIF1cbiAgICB8ICh0cnVlIHwgZmFsc2UpLCBgRGVmaW5pdGVseSB8IHRydWUsIGBNYXliZSAtPlxuICAgICAgWyBvZl95b2pzb25faXRlbVxuICAgICAgOyBwc2lnX3ZhbHVlXG4gICAgICAgICAgfmxvY1xuICAgICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKGZ1biBzIC0+IFwiX19cIiBeIHMgXiBcIl9vZl95b2pzb25fX1wiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICAgIH5wcmltOltdKVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBta19zaWcgfnBvbHkgfmxvYzpfIH5wYXRoOl8gKF9yZiwgdGRzKSA9IExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KHNpZ19vZl90ZCBwb2x5KVxuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gICgqIEhhbmRsaW5nIG9mIHJlY29yZCBkZWZhdWx0cyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdHlwZV9jb25zdHIgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IH5sb2MgaWQgfmY6KGZ1biBzIC0+IFwieW9qc29uX29mX1wiIF4gcykgYXJnc1xuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB5b2pzb25fb2ZfdHlwZVxuICAgICAgICAgICAgfih0eXBldmFyX2hhbmRsaW5nIDogWyBgb2sgb2YgUmVuYW1pbmcudCB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciBdKVxuICAgICAgICAgICAgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IFsldHlwZTogX10gLT4gRnVuIFslZXhwciBmdW4gXyAtPiBgU3RyaW5nIFwiX1wiXVxuICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF90dXBsZSB0cDsgXyB9IC0+XG4gICAgICBNYXRjaCBbIHlvanNvbl9vZl90dXBsZSB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cCkgXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSV5b2pzb25fb2Y6IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIlxuICAgICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYmluZGluZ19raW5kIHJlbmFtaW5nIHBhcm0gd2l0aFxuICAgICAgICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgcGFybSAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmQgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgWyV0eXBlOiBfXSkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgYXJncyk7IF8gfSAtPlxuICAgICAgRnVuXG4gICAgICAgICh5b2pzb25fb2ZfdHlwZV9jb25zdHJcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBpZFxuICAgICAgICAgICAoTGlzdC5tYXAgYXJncyB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHRwKSkpKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2Fycm93IChfLCBfLCBfKTsgXyB9IC0+XG4gICAgICBGdW5cbiAgICAgICAgWyVleHByXG4gICAgICAgICAgZnVuIF9mIC0+XG4gICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9mdW4gUHB4X3lvanNvbl9jb252X2xpYi5pZ25vcmVdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkcywgXywgXyk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3ZhcmlhbnQgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFt5b2pzb25fb2ZdIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB5b2pzb25fb2ZfdHVwbGUgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOihmdW4gdHAgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHApIHRwcyBpblxuICAgIGxldCBiaW5kaW5ncywgcHZhcnMsIGV2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgIGxldCBpbl9leHByID0gWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIGV2YXJzXV0gaW5cbiAgICBsZXQgZXhwciA9IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGluX2V4cHIgaW5cbiAgICBwcGF0X3R1cGxlIH5sb2MgcHZhcnMgLS0+IGV4cHJcblxuICAoKiBDb252ZXJzaW9uIG9mIHZhcmlhbnQgdHlwZXMgKilcbiAgYW5kIHlvanNvbl9vZl92YXJpYW50XG4gICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICgobG9jLCByb3dfZmllbGRzKSA6IExvY2F0aW9uLnQgKiByb3dfZmllbGQgbGlzdClcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBpdGVtIHJvdyA9XG4gICAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3cgaW5cbiAgICAgIG1hdGNoIHJvdy5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGNuc3RyLCB0cnVlLCBbXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIHBwYXRfdmFyaWFudCB+bG9jIChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIE5vbmVcbiAgICAgICAgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGVzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXSBdXVxuICAgICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBlc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV1dIGluXG4gICAgICAgIGxldCB5b2pzb25fb2ZfYXJncyA9IExpc3QubWFwIH5mOih5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZykgYXJncyBpblxuICAgICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIHlvanNvbl9vZl9hcmdzIGluXG4gICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICBtYXRjaCBwYXR0cyB3aXRoXG4gICAgICAgICAgfCBbIHBhdHQgXSAtPiBwYXR0XG4gICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICBpblxuICAgICAgICBwcGF0X3ZhcmlhbnQgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgfmxvYyAoU29tZSBwYXR0KVxuICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIChjbnN0cl9leHByIDo6IHZhcnMpXV1cbiAgICAgIHwgUmluaGVyaXQgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIFtdKTsgXyB9IC0+XG4gICAgICAgIHBwYXRfYWxpYXMgfmxvYyAocHBhdF90eXBlIH5sb2MgaWQpIChMb2MubWFrZSBcInZcIiB+bG9jKVxuICAgICAgICAtLT4geW9qc29uX29mX3R5cGVfY29uc3RyIH5sb2MgaWQgWyBbJWV4cHIgdl0gXVxuICAgICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUnRhZy8mXCJcbiAgICAgIHwgUmluaGVyaXQgKHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBfIDo6IF8pOyBfIH0gYXMgdHlwKSAtPlxuICAgICAgICBsZXQgY2FsbCA9IEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHR5cCkgaW5cbiAgICAgICAgcHBhdF9hbGlhcyB+bG9jIChwcGF0X3R5cGUgfmxvYyBpZCkgKExvYy5tYWtlIFwidlwiIH5sb2MpIC0tPiBbJWV4cHIgWyVlIGNhbGxdIHZdXG4gICAgICB8IFJpbmhlcml0IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUmluaGVyaXQvbm9uLWlkXCJcbiAgICAgICgqIGltcG9zc2libGU/KilcbiAgICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgICBpblxuICAgIE1hdGNoIChMaXN0Lm1hcCB+ZjppdGVtIHJvd19maWVsZHMpXG5cbiAgKCogUG9seW1vcnBoaWMgcmVjb3JkIGZpZWxkcyAqKVxuICBhbmQgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAoKiBTaG91bGQgYmUgaW1wb3NzaWJsZSBiZWNhdXNlIFt5b2pzb25fb2ZfcG9seV0gaXMgb25seSBjYWxsZWQgb24gcG9seW1vcnBoaWMgcmVjb3JkXG4gICAgICAgICBmaWVsZHMgYW5kIHJlY29yZCB0eXBlIGRlZmluaXRpb25zIGNhbid0IG9jY3VyIGluIHR5cGUgZXhwcmVzc2lvbnMuICopXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBvbHltb3JwaGljIHR5cGUgaW4gYSB0eXBlIGV4cHJlc3Npb25cIlxuICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgICAgfmV4cHI6WyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgICAgaW5cbiAgICAgIGxldCByZW5hbWluZyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHBhcm1zIH5pbml0OnJlbmFtaW5nIH5mOlJlbmFtaW5nLmFkZF91bml2ZXJzYWxseV9ib3VuZFxuICAgICAgaW5cbiAgICAgIChtYXRjaCB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cCB3aXRoXG4gICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gRnVuIChwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBmdW5fZXhwcilcbiAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPlxuICAgICAgICAgTWF0Y2hcbiAgICAgICAgICAgWyBbJXBhdD8gYXJnXVxuICAgICAgICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICAgICAgIChwZXhwX21hdGNoIH5sb2MgWyVleHByIGFyZ10gbWF0Y2hpbmdzKVxuICAgICAgICAgICBdKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgcmVjb3JkIHR5cGVzICopXG5cbiAgbGV0IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgPVxuICAgIGxldCBwID0gTG9jLm1ha2UgKExvbmdpZGVudC5MaWRlbnQgbmFtZSkgfmxvYywgcHZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgIHBhdHQgQCBbIHAgXVxuICA7O1xuXG4gIHR5cGUgaXNfZW1wdHlfZXhwciA9XG4gICAgfCBJbnNwZWN0X3ZhbHVlIG9mIChsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG4gICAgfCBJbnNwZWN0X3lvanNvbiBvZiAoY252X2V4cHI6ZXhwcmVzc2lvbiAtPiBsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG5cbiAgbGV0IHlvanNvbl9vZl9yZWNvcmRfZmllbGQgfnJlbmFtaW5nIHBhdHQgZXhwciBuYW1lIHRwID95b2pzb25fb2YgaXNfZW1wdHlfZXhwciBrZXkgPVxuICAgIGxldCBsb2MgPSB7IHRwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgbGV0IGNudl9leHByID1cbiAgICAgIG1hdGNoIHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwIHdpdGhcbiAgICAgIHwgRnVuIGV4cCAtPiBleHBcbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gZWwgLT4gWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZWxdIG1hdGNoaW5nc11dXG4gICAgaW5cbiAgICBsZXQgY252X2V4cHIgPVxuICAgICAgbWF0Y2ggeW9qc29uX29mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjbnZfZXhwclxuICAgICAgfCBTb21lIHlvanNvbl9vZiAtPiBbJWV4cHIgWyVlIHlvanNvbl9vZl0gWyVlIGNudl9leHByXV1cbiAgICBpblxuICAgIGxldCBleHByID1cbiAgICAgIGxldCB2X25hbWUgPSBcInZfXCIgXiBuYW1lIGluXG4gICAgICBbJWV4cHJcbiAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgIFslZVxuICAgICAgICAgICAgbWF0Y2ggaXNfZW1wdHlfZXhwciB3aXRoXG4gICAgICAgICAgICB8IEluc3BlY3RfdmFsdWUgaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciBsb2MgKGV2YXIgfmxvYyB2X25hbWUpXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gWyVlIGV2YXIgfmxvYyB2X25hbWVdIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzKV1cbiAgICAgICAgICAgIHwgSW5zcGVjdF95b2pzb24gaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBbJWUgZXZhciB+bG9jIHZfbmFtZV0gaW5cbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciB+Y252X2V4cHIgbG9jIFslZXhwciBhcmddXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgICBibmQgOjogYm5kcyldXVxuICAgICAgICBpblxuICAgICAgICBbJWUgZXhwcl1dXG4gICAgaW5cbiAgICBwYXR0LCBleHByXG4gIDs7XG5cbiAgbGV0IGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXMgfnR5cGVzX2JlaW5nX2RlZmluZWQgfmxvYyB+d2h5IHRwID1cbiAgICBsZXQgZGlzYWxsb3dfdmFyaWFibGVzID1cbiAgICAgIGxldCBpdGVyID1cbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgfCBQdHlwX3ZhciB2IC0+XG4gICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgY29udGFpbnMgXFxcbiAgICAgICAgICAgICAgICAgYSB0eXBlIHZhcmlhYmxlOiAnJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgQ29tcGFyaXNvbiBpcyBub3QgYXZhaWFibGUgZm9yIHR5cGUgdmFyaWFibGVzLlxcblxcXG4gICAgICAgICAgICAgICAgIENvbnNpZGVyIHVzaW5nIFtAeW9qc29uX2Ryb3BfaWYgX10gb3IgW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gXFxcbiAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgIChtYXRjaCB3aHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBjb21wYXJlIC0+IFwiY29tcGFyZVwiXG4gICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBpdGVyI2NvcmVfdHlwZVxuICAgIGluXG4gICAgbGV0IGRpc2FsbG93X3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyA9XG4gICAgICBtYXRjaCB0eXBlc19iZWluZ19kZWZpbmVkIHdpdGhcbiAgICAgIHwgYE5vbnJlY3Vyc2l2ZSAtPiBmdW4gXyAtPiAoKVxuICAgICAgfCBgUmVjdXJzaXZlIHR5cGVzX2JlaW5nX2RlZmluZWQgLT5cbiAgICAgICAgbGV0IGl0ZXIgPVxuICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyBsb2MgPSBfOyB0eHQgPSBMaWRlbnQgcyB9LCBfKSBhcyB0IC0+XG4gICAgICAgICAgICAgICAgaWYgU2V0Lm1lbSB0eXBlc19iZWluZ19kZWZpbmVkIHNcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgXFxcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEgdHlwZSBkZWZpbmVkIGluIHRoZSBjdXJyZW50IHJlY3Vyc2l2ZSBibG9jazogJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgbm90IHN1cHBvcnRlZC5cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdXNpbmcgW0B5b2pzb25fZHJvcF9pZiBfXSBvciBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBcXFxuICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggd2h5IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgYGNvbXBhcmUgLT4gXCJjb21wYXJlXCJcbiAgICAgICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIjY29yZV90eXBlXG4gICAgaW5cbiAgICBkaXNhbGxvd192YXJpYWJsZXMgdHA7XG4gICAgZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIHRwXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9kZWZhdWx0X2ZpZWxkXG4gICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgIGhvd1xuICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgcGF0dFxuICAgICAgICBleHByXG4gICAgICAgIG5hbWVcbiAgICAgICAgdHBcbiAgICAgICAgP3lvanNvbl9vZlxuICAgICAgICBkZWZhdWx0XG4gICAgICAgIGtleVxuICAgID1cbiAgICBsZXQgaXNfZW1wdHkgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHlvanNvbiAtPlxuICAgICAgICBJbnNwZWN0X3lvanNvblxuICAgICAgICAgIChmdW4gfmNudl9leHByIGxvYyB5b2pzb25fZXhwciAtPlxuICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIChbJWUgY252X2V4cHJdIFslZSBkZWZhdWx0XSkgWyVlIHlvanNvbl9leHByXV0pXG4gICAgICB8IChgbm9fYXJnIHwgYGZ1bmMgXyB8IGBjb21wYXJlIHwgYGVxdWFsKSBhcyBob3cgLT5cbiAgICAgICAgbGV0IGVxdWFsaXR5X2YgbG9jID1cbiAgICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgIHwgYG5vX2FyZyAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCBbQG9jYW1sLnBwd2FybmluZ1xuICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0XSBpcyBkZXByZWNhdGVkOiBcXFxuICAgICAgICAgICAgICAgICBwbGVhc2UgdXNlIG9uZSBvZjpcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdCBmXSBhbmQgZ2l2ZSBhbiBcXFxuICAgICAgICAgICAgICAgICBleHBsaWNpdCBlcXVhbGl0eSBmdW5jdGlvbiAoW2YgPSBcXFxuICAgICAgICAgICAgICAgICBQb2x5Lig9KV0gY29ycmVzcG9uZHMgdG8gdGhlIG9sZCBcXFxuICAgICAgICAgICAgICAgICBiZWhhdmlvcilcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC5jb21wYXJlXSBpZiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgdHlwZSBzdXBwb3J0cyBbJWNvbXBhcmVdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQuZXF1YWxdIGlmIHRoZSBcXFxuICAgICAgICAgICAgICAgICB0eXBlIHN1cHBvcnRzIFslZXF1YWxdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBpZiB5b3UgXFxcbiAgICAgICAgICAgICAgICAgd2FudCB0byBjb21wYXJlIHRoZSB5b2pzb24gXFxcbiAgICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpb25zXFxuXCJdXVxuICAgICAgICAgIHwgYGZ1bmMgZiAtPiBmXG4gICAgICAgICAgfCBgY29tcGFyZSAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBjb21wYXJlXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgdHA7XG4gICAgICAgICAgICBbJWV4cHIgWyVjb21wYXJlLmVxdWFsOiBbJXQgdHBdXV1cbiAgICAgICAgICB8IGBlcXVhbCAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBlcXVhbFxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIHRwO1xuICAgICAgICAgICAgWyVleHByIFslZXF1YWw6IFsldCB0cF1dXVxuICAgICAgICBpblxuICAgICAgICBJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSBlcXVhbGl0eV9mIGxvY10gWyVlIGRlZmF1bHRdIFslZSBleHByXV0pXG4gICAgaW5cbiAgICB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkIH5yZW5hbWluZyBwYXR0IGV4cHIgbmFtZSB0cCA/eW9qc29uX29mIGlzX2VtcHR5IGtleVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCB+dHlwZXNfYmVpbmdfZGVmaW5lZCB+cmVuYW1pbmcgbG9jIGZsZHMgfndyYXBfZXhwciA9XG4gICAgbGV0IGNvbGwgKChwYXR0IDogKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QpLCBleHByKSBsZCA9XG4gICAgICBsZXQgbmFtZSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpsZC5wbGRfbmFtZS50eHQgKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZClcbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBsZC5wbGRfbmFtZS5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLllvanNvbl9vZi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICB8IGB5b2pzb25fb3B0aW9uIHRwIC0+XG4gICAgICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgICAgICBsZXQgdm5hbWUgPSBbJWV4cHIgdl0gaW5cbiAgICAgICAgbGV0IGNudl9leHByID1cbiAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB2bmFtZVxuICAgICAgICAgICAgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwKVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpXSB3aXRoXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPiBibmRzXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSB2IC0+XG4gICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICBibmQgOjogYm5kc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFslZSBleHByXV1cbiAgICAgICAgaW5cbiAgICAgICAgcGF0dCwgZXhwclxuICAgICAgfCBgZHJvcF9kZWZhdWx0IGhvdyAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICAobWF0Y2ggQXR0cmlidXRlLmdldCBBdHRycy5kZWZhdWx0IGxkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm5vIGRlZmF1bHQgdG8gZHJvcFwiXG4gICAgICAgICB8IFNvbWUgZGVmYXVsdCAtPlxuICAgICAgICAgICB5b2pzb25fb2ZfZGVmYXVsdF9maWVsZFxuICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgaG93XG4gICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgcGF0dFxuICAgICAgICAgICAgIGV4cHJcbiAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgdHBcbiAgICAgICAgICAgICBkZWZhdWx0XG4gICAgICAgICAgICAga2V5KVxuICAgICAgfCBgZHJvcF9pZiB0ZXN0IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIHlvanNvbl9vZl9yZWNvcmRfZmllbGRcbiAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICBwYXR0XG4gICAgICAgICAgZXhwclxuICAgICAgICAgIG5hbWVcbiAgICAgICAgICB0cFxuICAgICAgICAgIChJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSB0ZXN0XSBbJWUgZXhwcl1dKSlcbiAgICAgICAgICBrZXlcbiAgICAgIHwgYGtlZXAgYXMgdGVzdCAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICAgICAgbGV0IHZuYW1lID0gZXZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgICAgICBsZXQgY252X2V4cHIgPVxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIHZuYW1lXG4gICAgICAgICAgICAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IGBrZWVwIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgKFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnKSA6OiBibmRzXVxuICAgICAgICAgIHwgYG9taXRfbmlsIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbWF0Y2ggWyVlIGNudl9leHByXSB3aXRoXG4gICAgICAgICAgICAgIHwgYE51bGwgLT4gYm5kc1xuICAgICAgICAgICAgICB8IGFyZyAtPiAoWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcpIDo6IGJuZHNdXG4gICAgICAgIGluXG4gICAgICAgICggcGF0dFxuICAgICAgICAsIFslZXhwclxuICAgICAgICAgIGxldCBibmRzID0gWyVlIGJuZHNdIGluXG4gICAgICAgICAgWyVlIGV4cHJdXSApXG4gICAgaW5cbiAgICBsZXQgaW5pdF9leHByID0gd3JhcF9leHByIFslZXhwciBibmRzXSBpblxuICAgIGxldCBwYXR0LCBleHByID0gTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDooW10sIGluaXRfZXhwcikgZmxkcyBpblxuICAgICggcHBhdF9yZWNvcmQgfmxvYyBwYXR0IENsb3NlZFxuICAgICwgWyVleHByXG4gICAgICBsZXQgYm5kcyA6IChzdHJpbmcgKiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnQpIGxpc3QgPSBbXSBpblxuICAgICAgWyVlIGV4cHJdXSApXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiBzdW0gdHlwZXMgKilcblxuICBsZXQgYnJhbmNoX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCByZW5hbWluZyB+bG9jIGNvbnN0cl9saWQgY29uc3RyX3N0ciBhcmdzID1cbiAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IFBjc3RyX3JlY29yZCBsZHMgLT5cbiAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdXSBpblxuICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdFxuICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgbG9jXG4gICAgICAgICAgbGRzXG4gICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBMaXN0IFsgWyVlIGNuc3RyX2V4cHJdOyBgQXNzb2MgWyVlIGV4cHJdIF1dKVxuICAgICAgaW5cbiAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KSAtLT4gZXhwclxuICAgIHwgUGNzdHJfdHVwbGUgcGNkX2FyZ3MgLT5cbiAgICAgIChtYXRjaCBwY2RfYXJncyB3aXRoXG4gICAgICAgfCBbXSAtPlxuICAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIE5vbmUgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdIF1dXG4gICAgICAgfCBhcmdzIC0+XG4gICAgICAgICBsZXQgeW9qc29uX29mX2FyZ3MgPVxuICAgICAgICAgICBMaXN0Lm1hcCB+ZjooeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykpIGFyZ3NcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBjb25zdHJfc3RyXV0gaW5cbiAgICAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgeW9qc29uX29mX2FyZ3MgaW5cbiAgICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICAgbWF0Y2ggcGF0dHMgd2l0aFxuICAgICAgICAgICB8IFsgcGF0dCBdIC0+IHBhdHRcbiAgICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICAgaW5cbiAgICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KVxuICAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgICBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgKGNuc3RyX2V4cHIgOjogdmFycyldXSlcbiAgOztcblxuICBsZXQgeW9qc29uX29mX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCB0cHMgY2RzID1cbiAgICBGdW5fb3JfbWF0Y2guTWF0Y2hcbiAgICAgIChMaXN0Lm1hcCBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICAgbGV0IHJlbmFtaW5nID0gUmVuYW1pbmcub2ZfZ2FkdCB0cHMgY2QgaW5cbiAgICAgICAgIGxldCBjb25zdHJfbGlkID0gTG9jYXRlZC5tYXAgbGlkZW50IGNkLnBjZF9uYW1lIGluXG4gICAgICAgICBsZXQgY29uc3RyX25hbWUgPVxuICAgICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QgaW5cbiAgICAgICAgICAgTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgfD4gZXN0cmluZyB+bG9jOmNkLnBjZF9uYW1lLmxvY1xuICAgICAgICAgaW5cbiAgICAgICAgIGJyYW5jaF9zdW1cbiAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgcmVuYW1pbmdcbiAgICAgICAgICAgfmxvYzpjZC5wY2RfbG9jXG4gICAgICAgICAgIGNvbnN0cl9saWRcbiAgICAgICAgICAgY29uc3RyX25hbWVcbiAgICAgICAgICAgY2QucGNkX2FyZ3MpKVxuICA7O1xuXG4gICgqIEVtcHR5IHR5cGUgKilcbiAgbGV0IHlvanNvbl9vZl9uaWwgbG9jID0gRnVuX29yX21hdGNoLkZ1biBbJWV4cHIgZnVuIF92IC0+IGFzc2VydCBmYWxzZV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdGQgfnR5cGVzX2JlaW5nX2RlZmluZWQgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBjZHMgLT5cbiAgICAgICAgICB5b2pzb25fb2Zfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIChMaXN0Lm1hcCB0cHMgfmY6KGZ1biB4IC0+IHgudHh0KSkgY2RzXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPlxuICAgICAgICAgIGxldCByZW5hbWluZyA9IFJlbmFtaW5nLmlkZW50aXR5IGluXG4gICAgICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICAgICAgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3RcbiAgICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICBsZHNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBBc3NvYyBbJWUgZXhwcl1dKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTWF0Y2ggWyBwYXR0IC0tPiBleHByIF1cbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+XG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IG9wZW4gdHlwZXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4geW9qc29uX29mX25pbCBsb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgUmVuYW1pbmcuaWRlbnRpdHkpIHR5KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19wcml2YXRlX2FsaWFzID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCwgdGQucHR5cGVfbWFuaWZlc3QsIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0LCBTb21lIF8sIFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBpc19wcml2YXRlX2FsaWFzXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogUmVwbGFjZSBhbGwgdHlwZSB2YXJpYWJsZSBieSBfIHRvIGF2b2lkIGdlbmVyYWxpemF0aW9uIHByb2JsZW1zICopXG4gICAgICAgIGxldCB0eV9zcmMgPVxuICAgICAgICAgIGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIHw+IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtYW5pZmVzdCA9XG4gICAgICAgICAgbWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgIHwgU29tZSBtYW5pZmVzdCAtPiBtYW5pZmVzdFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInlvanNvbl9vZl90ZC9uby1tYW5pZmVzdFwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eV9kc3QgPSByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBtYW5pZmVzdCBpblxuICAgICAgICBsZXQgY29lcmNpb24gPSBbJWV4cHIgKHYgOiBbJXQgdHlfc3JjXSA6PiBbJXQgdHlfZHN0XSldIGluXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgY29lcmNpb24gXV1dXG4gICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgcGV4cF9tYXRjaCB+bG9jIGNvZXJjaW9uIG1hdGNoaW5nc11dKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAoKiBQcmV2ZW50IHZpb2xhdGlvbiBvZiB2YWx1ZSByZXN0cmljdGlvbiBhbmQgcHJvYmxlbXMgd2l0aCByZWN1cnNpdmUgdHlwZXMgYnlcbiAgICAgICAgICAgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHZdIF1dXVxuICAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgbWF0Y2hpbmdzKVxuICAgIGluXG4gICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfdHlwZSB0ZCBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9vZl9cIiBeIHR5cGVfbmFtZSBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBwYXR0cyA9IExpc3QubWFwIHRwcyB+ZjooZnVuIGlkIC0+IHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBpZC50eHQpKSBpblxuICAgICAgbGV0IHJlY19mbGFnID1cbiAgICAgICAgbWF0Y2ggdHlwZXNfYmVpbmdfZGVmaW5lZCB3aXRoXG4gICAgICAgIHwgYFJlY3Vyc2l2ZSBfIC0+IFJlY3Vyc2l2ZVxuICAgICAgICB8IGBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICBpblxuICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgcGF0dHMgYm9keSlcbiAgICBpblxuICAgIFsgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5IF1cbiAgOztcblxuICBsZXQgeW9qc29uX29mX3RkcyB+bG9jIH5wYXRoOl8gKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgcmVjX2ZsYWcgPSByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBpblxuICAgIGxldCB0eXBlc19iZWluZ19kZWZpbmVkID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IGBOb25yZWN1cnNpdmVcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGBSZWN1cnNpdmVcbiAgICAgICAgICAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpIChMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPiB0ZC5wdHlwZV9uYW1lLnR4dCkpKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzID0gTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooeW9qc29uX29mX3RkIH50eXBlc19iZWluZ19kZWZpbmVkKSBpblxuICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzID0gc3RydWN0XG4gIGxldCB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGZsZHMgPVxuICAgIGxldCBjb2xsIGxkID1cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bGQucGxkX25hbWUudHh0IChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpXG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgZXN0cmluZyB+bG9jIGtleVxuICAgIGluXG4gICAgZWxpc3QgfmxvYyAoTGlzdC5tYXAgfmY6Y29sbCBmbGRzKVxuICA7O1xuXG4gIGxldCB5b2pzb25fZmllbGRzX29mX3RkIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPiB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGxkc1xuICAgICAgfCBQdHlwZV92YXJpYW50IF8gfCBQdHlwZV9vcGVuIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IHlvanNvbl9maWVsZHMgb25seSB3b3JrcyBvbiByZWNvcmRzXCJcbiAgICBpblxuICAgIGxldCB0eXAgPSBbJXR5cGU6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9maWVsZHNfb2ZfXCIgXiB0eXBlX25hbWUgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgcGF0dHMgPSBMaXN0Lm1hcCB0cHMgfmY6KGZ1biBpZCAtPiBwdmFyIH5sb2MgKFwiX2ZpZWxkc19vZl9cIiBeIGlkLnR4dCkpIGluXG4gICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIChlYWJzdHJhY3QgfmxvYyBwYXR0cyBib2R5KVxuICAgIGluXG4gICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gIDs7XG5cbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfdGRzIH5sb2MgfnBhdGg6XyAoXywgdGRzKSA9XG4gICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIChMaXN0Lm1hcCB0ZHMgfmY6eW9qc29uX2ZpZWxkc19vZl90ZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX29mX3lvanNvbiA9IHN0cnVjdFxuICAoKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuICAoKiBIYW5kbGUgYmFja3RyYWNraW5nIHdoZW4gdmFyaWFudHMgZG8gbm90IG1hdGNoICopXG4gIGxldCBoYW5kbGVfbm9fdmFyaWFudF9tYXRjaCBsb2MgZXhwciA9XG4gICAgWyBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoXSAtLT4gZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBkZXBlbmRpbmcgb24gd2hldGhlciB0byBnZW5lcmF0ZSBhIG1hdGNoIGZvciB0aGUgbGFzdFxuICAgICBjYXNlIG9mIG1hdGNoaW5nIGEgdmFyaWFudCAqKVxuICBsZXQgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hlcyA9XG4gICAgbWF0Y2ggbWF0Y2hfbGFzdCwgbWF0Y2hlcyB3aXRoXG4gICAgfCB0cnVlLCBbIHsgcGNfbGhzID0gXzsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXVxuICAgIHwgXywgWyB7IHBjX2xocyA9IFslcGF0PyBfXTsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXSAtPiBleHByXG4gICAgfCBfIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXRvbV0gbWF0Y2hlc1xuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIG1hbGZvcm1lZCBZb2pzb25zICopXG4gIGxldCBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzIGNhbGwgPVxuICAgIGxldCBjb2xsX3N0cnVjdHMgYWNjIChsb2MsIGxhYmVsKSA9XG4gICAgICAocHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbClcbiAgICAgICAtLT5cbiAgICAgICBtYXRjaCBjYWxsIHdpdGhcbiAgICAgICB8IGBwdGFnX25vX2FyZ3MgLT5cbiAgICAgICAgIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfbm9fYXJncyBfdHBfbG9jIF95b2pzb25dXG4gICAgICAgfCBgcHRhZ190YWtlc19hcmdzIC0+XG4gICAgICAgICBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgX3RwX2xvYyBfeW9qc29uXSlcbiAgICAgIDo6IGFjY1xuICAgIGluXG4gICAgbGV0IGV4Y19ub192YXJpYW50X21hdGNoID1cbiAgICAgIFslcGF0PyBfXSAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKV1cbiAgICBpblxuICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGxfc3RydWN0cyB+aW5pdDpbIGV4Y19ub192YXJpYW50X21hdGNoIF0gcmV2X2Vsc1xuICA7O1xuXG4gICgqIFNwbGl0IHRoZSByb3cgZmllbGRzIG9mIGEgdmFyaWFudCB0eXBlIGludG8gbGlzdHMgb2YgYXRvbWljIHZhcmlhbnRzLFxuICAgICBzdHJ1Y3R1cmVkIHZhcmlhbnRzLCBhdG9taWMgdmFyaWFudHMgKyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzLFxuICAgICBhbmQgc3RydWN0dXJlZCB2YXJpYW50cyArIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMuICopXG4gIGxldCBzcGxpdF9yb3dfZmllbGQgfmxvYyAoYXRvbXMsIHN0cnVjdHMsIGFpbmhzLCBzaW5ocykgcm93X2ZpZWxkID1cbiAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3dfZmllbGQgaW5cbiAgICBtYXRjaCByb3dfZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgIHwgUnRhZyAoY25zdHIsIHRydWUsIFtdKSAtPlxuICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICBsZXQgdHBsID0gbG9jLCBsYWJlbCBpblxuICAgICAgdHBsIDo6IGF0b21zLCBzdHJ1Y3RzLCBgQSB0cGwgOjogYWluaHMsIHNpbmhzXG4gICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBhdG9tcywgKGxvYywgbGFiZWwpIDo6IHN0cnVjdHMsIGFpbmhzLCBgUyAobG9jLCBsYWJlbCwgdHAsIHJvd19maWVsZCkgOjogc2luaHNcbiAgICB8IFJpbmhlcml0IGluaCAtPlxuICAgICAgbGV0IGlpbmggPSBgSSBpbmggaW5cbiAgICAgIGF0b21zLCBzdHJ1Y3RzLCBpaW5oIDo6IGFpbmhzLCBpaW5oIDo6IHNpbmhzXG4gICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwic3BsaXRfcm93X2ZpZWxkLyZcIlxuICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgdHlwZV9jb25zdHJfb2ZfeW9qc29uID8oaW50ZXJuYWwgPSBmYWxzZSkgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGlkIGFyZ3MgfmxvYyB+ZjooZnVuIHMgLT5cbiAgICAgIGxldCBzID0gcyBeIFwiX29mX3lvanNvblwiIGluXG4gICAgICBpZiBpbnRlcm5hbCB0aGVuIFwiX19cIiBeIHMgXiBcIl9fXCIgZWxzZSBzKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlID8oaW50ZXJuYWwgPSBmYWxzZSkgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYub3BhcXVlX29mX3lvanNvbl1cbiAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSB8IFsldHlwZTogX10gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5vcGFxdWVfb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3R1cGxlIHRwOyBfIH0gLT5cbiAgICAgIE1hdGNoICh0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHApKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBvayAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSVvZl95b2pzb246IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIilcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBhcmdzKTsgXyB9IC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biBhcmcgLT5cbiAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBhcmcpKVxuICAgICAgaW5cbiAgICAgIEZ1biAodHlwZV9jb25zdHJfb2ZfeW9qc29uIH5sb2MgfmludGVybmFsIGlkIGFyZ3MpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYXJyb3cgKF8sIF8sIF8pOyBfIH0gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5mdW5fb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZHMsIF8sIF8pOyBfIH0gLT5cbiAgICAgIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFtvZl95b2pzb25dIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGZwcyBpblxuICAgIFsgWyVwYXQ/IGBMaXN0IFslcCBwbGlzdCB+bG9jIHBhdHRzXV1cbiAgICAgIC0tPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyAocGV4cF90dXBsZSB+bG9jIHZhcnMpXG4gICAgOyBbJXBhdD8geW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICBbJWUgZWludCB+bG9jIG5dXG4gICAgICAgICAgeW9qc29uXVxuICAgIF1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzICopXG4gIGFuZCBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oID1cbiAgICBsZXQgbG9jID0gaW5oLnB0eXBfbG9jIGluXG4gICAgbGV0IGZ1bmNfZXhwciA9IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5pbnRlcm5hbDp0cnVlIGluaCBpblxuICAgIGxldCBhcHAgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgICBsZXQgZnVuX2V4cHIgPSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jIGZ1bmNfZXhwciBpblxuICAgICAgRnVuIFslZXhwciBbJWUgZnVuX2V4cHJdIF95b2pzb25dXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZXhjID1cbiAgICAgIGhhbmRsZV9ub192YXJpYW50X21hdGNoXG4gICAgICAgIGxvY1xuICAgICAgICAoaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcylcbiAgICBpblxuICAgIGxldCBuZXdfb3RoZXJfbWF0Y2hlcyA9XG4gICAgICBbIFslcGF0PyBfXVxuICAgICAgICAtLT4gcGV4cF90cnlcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICAoWyVlIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgYXBwXVxuICAgICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgICAgIG1hdGNoX2V4Y1xuICAgICAgXVxuICAgIGluXG4gICAgbmV3X290aGVyX21hdGNoZXMsIHRydWVcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBhdG9taWMgdmFyaWFudHMgKilcbiAgYW5kIG1rX3ZhcmlhbnRfbWF0Y2hfYXRvbSB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfYXRvbXNfaW5ocyB+cmV2X3N0cnVjdHMgPVxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBBIChsb2MsIGxhYmVsKSAtPlxuICAgICAgICBsZXQgbmV3X21hdGNoID1cbiAgICAgICAgICBwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKVxuICAgICAgICAgIC0tPiBwZXhwX3ZhcmlhbnQgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSBOb25lXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPVxuICAgICAgbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VsczpyZXZfc3RydWN0cyBgcHRhZ190YWtlc19hcmdzXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfYXRvbXNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X2F0b21zX2luaHNcbiAgICBpblxuICAgIGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoX2F0b21zX2luaHNcblxuICAoKiBWYXJpYW50IGNvbnZlcnNpb25zICopXG5cbiAgKCogTWF0Y2ggYXJndW1lbnRzIG9mIGNvbnN0cnVjdG9ycyAodmFyaWFudHMgb3Igc3VtIHR5cGVzKSAqKVxuICBhbmQgbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50IGxhYmVsIHRwcyA9XG4gICAgbGV0IGNuc3RyX2xhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsIGluXG4gICAgbGV0IGNuc3RyIHZhcnNfZXhwciA9XG4gICAgICBpZiBpc192YXJpYW50XG4gICAgICB0aGVuIHBleHBfdmFyaWFudCB+bG9jIGNuc3RyX2xhYmVsIChTb21lIHZhcnNfZXhwcilcbiAgICAgIGVsc2UgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgKFNvbWUgdmFyc19leHByKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgZ29vZF9hcmdfbWF0Y2ggPVxuICAgICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgICAgbGV0IGdvb2RfYXJnX21hdGNoID1cbiAgICAgICAgbGV0IHZhcnNfZXhwciA9XG4gICAgICAgICAgbWF0Y2ggdmFycyB3aXRoXG4gICAgICAgICAgfCBbIHZhcl9leHByIF0gLT4gdmFyX2V4cHJcbiAgICAgICAgICB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIHZhcnNcbiAgICAgICAgaW5cbiAgICAgICAgY25zdHIgdmFyc19leHByXG4gICAgICBpblxuICAgICAgYmluZGluZ3MsIHBhdHRzLCBnb29kX2FyZ19tYXRjaFxuICAgIGluXG4gICAgWyVleHByXG4gICAgICBtYXRjaCB5b2pzb25fYXJncyB3aXRoXG4gICAgICB8IFslcCBwbGlzdCB+bG9jIHBhdHRzXSAtPiBbJWUgcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZ29vZF9hcmdfbWF0Y2hdXG4gICAgICB8IF8gLT5cbiAgICAgICAgWyVlXG4gICAgICAgICAgaWYgaXNfdmFyaWFudFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICBfdGFnXG4gICAgICAgICAgICAgICAgX3lvanNvbl1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgX3RhZ1xuICAgICAgICAgICAgICAgIF95b2pzb25dXV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBzdHJ1Y3R1cmVkIHZhcmlhbnRzICopXG4gIGFuZCBta192YXJpYW50X21hdGNoX3N0cnVjdCB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfc3RydWN0c19pbmhzIH5yZXZfYXRvbXNcbiAgICA9XG4gICAgbGV0IGhhc19zdHJ1Y3RzX3JlZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBTIChsb2MsIGxhYmVsLCB0cCwgX3JvdykgLT5cbiAgICAgICAgaGFzX3N0cnVjdHNfcmVmIDo9IHRydWU7XG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbWtfY25zdHJfYXJnc19tYXRjaFxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5sb2M6dHAucHR5cF9sb2NcbiAgICAgICAgICAgIH5pc192YXJpYW50OnRydWVcbiAgICAgICAgICAgIGxhYmVsXG4gICAgICAgICAgICBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuZXdfbWF0Y2ggPVxuICAgICAgICAgIFslcGF0PyBbJXAgcHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldIGFzIF90YWddIC0tPiBleHByXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPSBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzOnJldl9hdG9tcyBgcHRhZ19ub19hcmdzIGluXG4gICAgbGV0IG1hdGNoX3N0cnVjdHNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X3N0cnVjdHNfaW5oc1xuICAgIGluXG4gICAgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hfc3RydWN0c19pbmhzLCAhaGFzX3N0cnVjdHNfcmVmXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgaGFuZGxpbmcgYXRvbWljIGFuZCBzdHJ1Y3R1cmVkIHZhcmlhbnRzIChpLmUuIG5vdFxuICAgICBpbmNsdWRlZCB2YXJpYW50IHR5cGVzKSAqKVxuICBhbmQgaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkX2xpc3QgPVxuICAgIGxldCByZXZfYXRvbXMsIHJldl9zdHJ1Y3RzLCByZXZfYXRvbXNfaW5ocywgcmV2X3N0cnVjdHNfaW5ocyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjooc3BsaXRfcm93X2ZpZWxkIH5sb2MpIH5pbml0OihbXSwgW10sIFtdLCBbXSkgcm93X2ZpZWxkX2xpc3RcbiAgICBpblxuICAgIGxldCBtYXRjaF9zdHJ1Y3QsIGhhc19zdHJ1Y3RzID1cbiAgICAgIG1rX3ZhcmlhbnRfbWF0Y2hfc3RydWN0IH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9zdHJ1Y3RzX2luaHMgfnJldl9hdG9tc1xuICAgIGluXG4gICAgbGV0IG1heWJlX3lvanNvbl9hcmdzX3BhdHQgPSBpZiBoYXNfc3RydWN0cyB0aGVuIFslcGF0PyB5b2pzb25fYXJnc10gZWxzZSBbJXBhdD8gX10gaW5cbiAgICBbIFslcGF0PyBgTGlzdCBbIGBTdHJpbmcgYXRvbSBdIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWtfdmFyaWFudF9tYXRjaF9hdG9tXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBmdWxsX3R5cGVcbiAgICAgICAgICAgIH5yZXZfYXRvbXNfaW5oc1xuICAgICAgICAgICAgfnJldl9zdHJ1Y3RzXG4gICAgOyBbJXBhdD8gYExpc3QgKGBTdHJpbmcgYXRvbSA6OiBbJXAgbWF5YmVfeW9qc29uX2FyZ3NfcGF0dF0pIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWF0Y2hfc3RydWN0XG4gICAgOyBbJXBhdD8gYExpc3QgKGBMaXN0IF8gOjogXykgYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IGBMaXN0IFtdIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICBdXG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgdmFyaWFudHMgKilcbiAgYW5kIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcykgPVxuICAgIGxldCBpc19jb250YWluZWQsIGZ1bGxfdHlwZSA9XG4gICAgICBtYXRjaCBmdWxsX3R5cGUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIHB0eXBfdmFyaWFudCB+bG9jIHJvd19maWVsZHMgQ2xvc2VkIE5vbmVcbiAgICAgIHwgU29tZSBmdWxsX3R5cGUgLT4gZmFsc2UsIGZ1bGxfdHlwZVxuICAgIGluXG4gICAgbGV0IHRvcF9tYXRjaCA9XG4gICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgIHwgeyBwcmZfZGVzYyA9IFJpbmhlcml0IGluaDsgXyB9IDo6IHJlc3QgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGluaCByb3dfZmllbGRzID1cbiAgICAgICAgICBsZXQgY2FsbCA9XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgKFslZVxuICAgICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByXG4gICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmludGVybmFsOnRydWUgaW5oKV1cbiAgICAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGNhbGxcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgICAgICBtYXRjaCBoLnByZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCBpbmggLT4gbG9vcCBpbmggdFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcmZ0YWdfbWF0Y2hlcyA9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gcmZ0YWdfbWF0Y2hlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHBleHBfdHJ5IH5sb2MgY2FsbCAoaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2ggbG9jIGV4cHIpXG4gICAgICAgIGluXG4gICAgICAgIFsgWyVwYXQ/IHlvanNvbl0gLS0+IGxvb3AgaW5oIHJlc3QgXVxuICAgICAgfCBfIDo6IF8gLT4gaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkc1xuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIGltcG9zc2libGUgKilcbiAgICBpblxuICAgIGlmIGlzX2NvbnRhaW5lZFxuICAgIHRoZW5cbiAgICAgIEZ1blxuICAgICAgICBbJWV4cHJcbiAgICAgICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgICAgICB0cnkgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSB0b3BfbWF0Y2hdIHdpdGhcbiAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoIC0+XG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgZWxzZSBNYXRjaCB0b3BfbWF0Y2hcblxuICBhbmQgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgIH5sb2NcbiAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlXG4gICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICBpblxuICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgIGluXG4gICAgbWF0Y2ggdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgdHAgd2l0aFxuICAgIHwgRnVuIGZ1bl9leHByIC0+IEZ1biAocGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZnVuX2V4cHIpXG4gICAgfCBNYXRjaCBtYXRjaGluZ3MgLT5cbiAgICAgIE1hdGNoXG4gICAgICAgIFsgWyVwYXQ/IGFyZ11cbiAgICAgICAgICAtLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgKHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXJnXSBtYXRjaGluZ3MpXG4gICAgICAgIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBleHRyYWN0aW5nIHJlY29yZCBmaWVsZHMgKilcbiAgbGV0IG1rX2V4dHJhY3RfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgPVxuICAgIGxldCByZWMgbG9vcCBpbml0cyBub19hcmdzIGFyZ3MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpbml0cywgbm9fYXJncywgYXJnc1xuICAgICAgfCBsZCA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgICBsZXQgbm0gPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgICAgbGV0IGtleSA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpubSAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKSBpblxuICAgICAgICAobWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkLCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGB5b2pzb25fb3B0aW9uIHRwKSwgXyB8IChOb25lIHwgU29tZSAoYGRlZmF1bHQgXykpLCB0cCAtPlxuICAgICAgICAgICBsZXQgaW5pdHMgPSBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZV0gOjogaW5pdHMgaW5cbiAgICAgICAgICAgbGV0IHVucm9sbGVkID1cbiAgICAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBbJWV4cHIgX2ZpZWxkX3lvanNvbl1cbiAgICAgICAgICAgICAgICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB0cClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgICAgIChwc3RyaW5nIH5sb2Mga2V5XG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWUgPSBbJWUgdW5yb2xsZWRdIGluXG4gICAgICAgICAgICAgICAgICBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXVxuICAgICAgICAgICAgICAgICAgOj0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBmdmFsdWVcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgZHVwbGljYXRlcyA6PSBmaWVsZF9uYW1lIDo6IFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlc10pXG4gICAgICAgICAgICAgOjogYXJnc1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsb29wIGluaXRzIG5vX2FyZ3MgYXJncyBtb3JlX2ZsZHMpXG4gICAgaW5cbiAgICBsZXQgaGFuZGxlX2V4dHJhID1cbiAgICAgIFsgKFslcGF0PyBfXVxuICAgICAgICAgLS0+XG4gICAgICAgICBpZiBhbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgIHRoZW4gWyVleHByICgpXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICBpZiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApXG4gICAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICB0aGVuIGV4dHJhIDo9IGZpZWxkX25hbWUgOjogUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYVxuICAgICAgICAgICAgIGVsc2UgKCldKVxuICAgICAgXVxuICAgIGluXG4gICAgbG9vcCBbXSBoYW5kbGVfZXh0cmEgaGFuZGxlX2V4dHJhIChMaXN0LnJldiBmbGRzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGhhbmRsaW5nIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgcmVjb3JkIGZpZWxkcyAqKVxuICBsZXQgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwciA9XG4gICAgbGV0IGhhc19ub25vcHRfZmllbGRzID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHJlc190cGxzLCBiaV9sc3QsIGdvb2RfcGF0dHMgPVxuICAgICAgbGV0IHJlYyBsb29wICgocmVzX3RwbHMsIGJpX2xzdCwgZ29vZF9wYXR0cykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKHsgcGxkX25hbWUgPSB7IHR4dCA9IG5tOyBsb2MgfTsgXyB9IGFzIGxkKSA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgICBsZXQgZmxkID0gWyVleHByIFBweF95b2pzb25fY29udl9saWIuKCAhICkgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV1dIGluXG4gICAgICAgICAgbGV0IG1rX2RlZmF1bHQgbG9jID1cbiAgICAgICAgICAgIGJpX2xzdCwgWyVwYXQ/IFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXSA6OiBnb29kX3BhdHRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbmV3X2JpX2xzdCwgbmV3X2dvb2RfcGF0dHMgPVxuICAgICAgICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoYGRlZmF1bHQgXyB8IGB5b2pzb25fb3B0aW9uIF8pIC0+IG1rX2RlZmF1bHQgbG9jXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaGFzX25vbm9wdF9maWVsZHMgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgKCBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgWyVlIGZsZF0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAsIFslZSBlc3RyaW5nIH5sb2Mgbm1dXVxuICAgICAgICAgICAgICAgIDo6IGJpX2xzdFxuICAgICAgICAgICAgICAsIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXVxuICAgICAgICAgICAgICAgIDo6IGdvb2RfcGF0dHMgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFjYyA9IFslZXhwciBbJWUgZmxkXV0gOjogcmVzX3RwbHMsIG5ld19iaV9sc3QsIG5ld19nb29kX3BhdHRzIGluXG4gICAgICAgICAgbG9vcCBhY2MgbW9yZV9mbGRzXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICBpblxuICAgICAgbG9vcCAoW10sIFtdLCBbXSkgKExpc3QucmV2IGZsZHMpXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZ29vZF9leHByID1cbiAgICAgIGlmIGhhc19wb2x5XG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGNudnQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwbGRfbmFtZSA9IHsgdHh0ID0gbm07IF8gfTsgXyB9IC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMgd2l0aFxuICAgICAgICB8IFsgbWF0Y2hfZ29vZF9leHByIF0gLT4gbWF0Y2hfZ29vZF9leHByXG4gICAgICAgIHwgbWF0Y2hfZ29vZF9leHBycyAtPiBwZXhwX3R1cGxlIH5sb2MgbWF0Y2hfZ29vZF9leHBycylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY252dCBsZCA9XG4gICAgICAgICAgbGV0IG5tID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGBkZWZhdWx0IGRlZmF1bHQpIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT4gWyVlIGRlZmF1bHRdXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIHYgLT4gdl1cbiAgICAgICAgICAgIHwgU29tZSAoYHlvanNvbl9vcHRpb24gXykgfCBOb25lIC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9jYXRlZC5saWRlbnQgfmxvYyBubSwgdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgd3JhcF9leHByIChwZXhwX3JlY29yZCB+bG9jIChMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMpIE5vbmUpKVxuICAgIGluXG4gICAgbGV0IGV4cHIsIHBhdHQgPVxuICAgICAgbWF0Y2ggcmVzX3RwbHMsIGdvb2RfcGF0dHMgd2l0aFxuICAgICAgfCBbIHJlc19leHByIF0sIFsgcmVzX3BhdHQgXSAtPiByZXNfZXhwciwgcmVzX3BhdHRcbiAgICAgIHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgcmVzX3RwbHMsIHBwYXRfdHVwbGUgfmxvYyBnb29kX3BhdHRzXG4gICAgaW5cbiAgICBpZiAhaGFzX25vbm9wdF9maWVsZHNcbiAgICB0aGVuXG4gICAgICBwZXhwX21hdGNoXG4gICAgICAgIH5sb2NcbiAgICAgICAgZXhwclxuICAgICAgICBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwclxuICAgICAgICA7IFslcGF0PyBfXVxuICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50c1xuICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICAgICBbJWUgZWxpc3QgfmxvYyBiaV9sc3RdXVxuICAgICAgICBdXG4gICAgZWxzZSBwZXhwX21hdGNoIH5sb2MgZXhwciBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgY29udmVydGluZyByZWNvcmQgZmllbGRzICopXG5cbiAgbGV0IG1rX2Nudl9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByID1cbiAgICBsZXQgZXhwcl9yZWZfaW5pdHMsIF9tY19ub19hcmdzX2ZpZWxkcywgbWNfZmllbGRzX3dpdGhfYXJncyA9XG4gICAgICBta19leHRyYWN0X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpXG4gICAgaW5cbiAgICBsZXQgZmllbGRfcmVmcyA9XG4gICAgICBMaXN0Lm1hcDJfZXhuXG4gICAgICAgIGZsZHNcbiAgICAgICAgZXhwcl9yZWZfaW5pdHNcbiAgICAgICAgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IGluaXQgLT5cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHZhciB+bG9jIChuYW1lIF4gXCJfZmllbGRcIikpIH5leHByOlslZXhwciByZWYgWyVlIGluaXRdXSlcbiAgICBpblxuICAgIHBleHBfbGV0XG4gICAgICB+bG9jXG4gICAgICBOb25yZWN1cnNpdmVcbiAgICAgIChmaWVsZF9yZWZzXG4gICAgICAgQCBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OlslcGF0PyBkdXBsaWNhdGVzXSB+ZXhwcjpbJWV4cHIgcmVmIFtdXVxuICAgICAgICAgOyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpbJXBhdD8gZXh0cmFdIH5leHByOlslZXhwciByZWYgW11dXG4gICAgICAgICBdKVxuICAgICAgWyVleHByXG4gICAgICAgIGxldCByZWMgaXRlciA9XG4gICAgICAgICAgWyVlXG4gICAgICAgICAgICBwZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgWyBbJXBhdD8gKGZpZWxkX25hbWUsIF9maWVsZF95b2pzb24pIDo6IHRhaWxdXG4gICAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgICAgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZmllbGRfbmFtZV0gbWNfZmllbGRzX3dpdGhfYXJnc107XG4gICAgICAgICAgICAgICAgICBpdGVyIHRhaWxdXG4gICAgICAgICAgICAgIDsgWyVwYXQ/IFtdXSAtLT4gWyVleHByICgpXVxuICAgICAgICAgICAgICBdXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIGZpZWxkX3lvanNvbnM7XG4gICAgICAgIG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcyB3aXRoXG4gICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfZHVwbGljYXRlX2ZpZWxkc1xuICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcylcbiAgICAgICAgICAgIHlvanNvblxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgKG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEgd2l0aFxuICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEpXG4gICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgfCBbXSAtPiBbJWUgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwcl0pXVxuICA7O1xuXG4gIGxldCBpc19wb2x5IChfLCBmbGRzKSA9XG4gICAgTGlzdC5leGlzdHMgZmxkcyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgeyBwbGRfdHlwZSA9IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfTsgXyB9IC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgOztcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICBsb2NcbiAgICAgICAgZmxkc1xuICAgICAgICB+d3JhcF9leHByXG4gICAgPVxuICAgIGxldCBoYXNfcG9seSA9IGlzX3BvbHkgKGxvYywgZmxkcykgaW5cbiAgICBsZXQgY252X2ZpZWxkcyA9XG4gICAgICBta19jbnZfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwclxuICAgIGluXG4gICAgaWYgaGFzX3BvbHlcbiAgICB0aGVuIChcbiAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgbGV0IHBhdHMgPVxuICAgICAgICAgIExpc3QubWFwIGZsZHMgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IC0+IHB2YXIgfmxvYyBuYW1lKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwYXRzIHdpdGhcbiAgICAgICAgfCBbIHBhdCBdIC0+IHBhdFxuICAgICAgICB8IHBhdHMgLT4gcHBhdF90dXBsZSB+bG9jIHBhdHNcbiAgICAgIGluXG4gICAgICBsZXQgcmVjb3JkX2RlZiA9XG4gICAgICAgIHdyYXBfZXhwclxuICAgICAgICAgIChwZXhwX3JlY29yZFxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAoTGlzdC5tYXAgZmxkcyB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gLT5cbiAgICAgICAgICAgICAgICBMb2NhdGVkLmxpZGVudCB+bG9jIG5hbWUsIGV2YXIgfmxvYyBuYW1lKSlcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgaW5cbiAgICAgIHBleHBfbGV0XG4gICAgICAgIH5sb2NcbiAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGF0dCB+ZXhwcjpjbnZfZmllbGRzIF1cbiAgICAgICAgcmVjb3JkX2RlZilcbiAgICBlbHNlIGNudl9maWVsZHNcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciByZWNvcmRzICopXG4gIGxldCByZWNvcmRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgTWF0Y2hcbiAgICAgIFsgWyVwYXQ/IGBBc3NvYyBmaWVsZF95b2pzb25zIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgIGZsZHNcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIHggLT4geClcbiAgICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b21cbiAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgIHlvanNvbl1cbiAgICAgIF1cbiAgOztcblxuICAoKiBTdW0gdHlwZSBjb252ZXJzaW9ucyAqKVxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciB3ZWxsLWZvcm1lZCBZb2pzb25zIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbGFiZWwgPSBMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwgaW5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3JlY29yZCBmaWVsZHM7IF8gfSAtPlxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX2NkIGNkKSlcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICB+d3JhcF9leHByOihmdW4gZSAtPlxuICAgICAgICAgICAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSAoU29tZSBlKSlcbiAgICAgICAgaW5cbiAgICAgICAgWyVwYXQ/XG4gICAgICAgICAgICAgICBgTGlzdCBbIGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZyk7IGBBc3NvYyBmaWVsZF95b2pzb25zIF1cbiAgICAgICAgICBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBleHByXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyBjZDtcbiAgICAgICAgWyVwYXQ/IGBMaXN0IFsgYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIF1dXG4gICAgICAgIC0tPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSBOb25lXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSAoXyA6OiBfIGFzIHRwcyk7IF8gfSAtPlxuICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgY2Q7XG4gICAgICAgIFslcGF0P1xuICAgICAgICAgICAgICAgYExpc3QgKGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZykgOjogeW9qc29uX2FyZ3MpIGFzIF95b2pzb25dXG4gICAgICAgIC0tPiBta19jbnN0cl9hcmdzX21hdGNoIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfmlzX3ZhcmlhbnQ6ZmFsc2UgbGFiZWwgdHBzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIG1hbGZvcm1lZCBZb2pzb25zIHdpdGggZ29vZCB0YWdzXG4gICAgIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19iYWRfc3VtX21hdGNoZXMgKGxvYywgY2RzKSA9XG4gICAgTGlzdC5tYXAgY2RzIH5mOihmdW4gKGNkLCBsYWJlbCkgLT5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIFtdOyBfIH0gLT5cbiAgICAgICAgWyVwYXQ/IGBMaXN0IChgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gOjogXykgYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIF90cF9sb2MgeW9qc29uXVxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgKF8gOjogXykgfCBQY3N0cl9yZWNvcmQgXzsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIF90cF9sb2MgeW9qc29uXSlcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBzdW0gdHlwZXMgKilcbiAgbGV0IHN1bV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgYWx0cykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgbGV0IGFsdHMgPVxuICAgICAgTGlzdC5tYXAgYWx0cyB+ZjooZnVuIGNkIC0+IGNkLCBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QpXG4gICAgaW5cbiAgICBNYXRjaFxuICAgICAgKExpc3QuY29uY2F0XG4gICAgICAgICBbIG1rX2dvb2Rfc3VtX21hdGNoZXMgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgYWx0cylcbiAgICAgICAgIDsgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGFsdHMpXG4gICAgICAgICA7IFsgWyVwYXQ/IGBMaXN0IChgTGlzdCBfIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtXG4gICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICA7IFslcGF0PyBgTGlzdCBbXSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtXG4gICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICAgICAgICAgXVxuICAgICAgICAgXSlcbiAgOztcblxuICAoKiBFbXB0eSB0eXBlICopXG4gIGxldCBuaWxfb2ZfeW9qc29uIGxvYyA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBGdW5cbiAgICAgIFslZXhwclxuICAgICAgICBmdW4geW9qc29uIC0+IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBfdHBfbG9jIHlvanNvbl1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYzpfIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGZ1bGxfdHlwZSA9XG4gICAgICBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB8PiByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3Jlc1xuICAgIGluXG4gICAgbGV0IGlzX3ByaXZhdGUgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfcHJpdmF0ZSB3aXRoXG4gICAgICB8IFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgfCBQdWJsaWMgLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIGlzX3ByaXZhdGVcbiAgICB0aGVuIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwib2ZfeW9qc29uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgdHlwZVwiO1xuICAgIGxldCBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb24gPVxuICAgICAgbWF0Y2ggaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzpmYWxzZSB3aXRoXG4gICAgICB8IGBEZWZpbml0ZWx5IC0+IHRydWVcbiAgICAgIHwgYE1heWJlIC0+IHBvbHlcbiAgICAgIHwgYFN1cmVseV9ub3QgLT5cbiAgICAgICAgaWYgcG9seVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICBcInlvanNvbl9wb2x5IGFubm90YXRpb24gb24gYSB0eXBlIHRoYXQgaXMgc3VyZWx5IG5vdCBhIHBvbHltb3JwaGljIHZhcmlhbnRcIjtcbiAgICAgICAgZmFsc2VcbiAgICBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhbHRzIC0+XG4gICAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHRkO1xuICAgICAgICAgIHN1bV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKHRkLnB0eXBlX2xvYywgYWx0cylcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgbGJscyAtPlxuICAgICAgICAgIHJlY29yZF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX3RkIHRkKSlcbiAgICAgICAgICAgIChsb2MsIGxibHMpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPlxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiBvcGVuIHR5cGVzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHRkO1xuICAgICAgICAgIChtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBuaWxfb2ZfeW9qc29uIHRkLnB0eXBlX2xvY1xuICAgICAgICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgICAgICB0eXBlX29mX3lvanNvblxuICAgICAgICAgICAgICAgfmZ1bGxfdHlwZVxuICAgICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgICAgIH5pbnRlcm5hbDpjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHR5KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgKCogUHJldmVudCB2aW9sYXRpb24gb2YgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHByb2JsZW1zIHdpdGhcbiAgICAgICAgIHJlY3Vyc2l2ZSB0eXBlcyBieSBldGEtZXhwYW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zICopXG4gICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHQgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHRdIF1dXVxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIG1hdGNoaW5nc1xuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX25hbWUgPSB0eXBlX25hbWUgXiBcIl9vZl95b2pzb25cIiBpblxuICAgIGxldCBpbnRlcm5hbF9uYW1lID0gXCJfX1wiIF4gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uX19cIiBpblxuICAgIGxldCBhcmdfcGF0dHMsIGFyZ19leHBycyA9XG4gICAgICBMaXN0LnVuemlwXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgbGV0IG5hbWUgPSBcIl9vZl9cIiBeIHRwLnR4dCBpblxuICAgICAgICAgICAgIHB2YXIgfmxvYyBuYW1lLCBldmFyIH5sb2MgbmFtZSlcbiAgICAgICAgICAgdHBzKVxuICAgIGluXG4gICAgbGV0IGJpbmRfdHBfbG9jX2luID1cbiAgICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMuJXNcIiBwYXRoIHR5cGVfbmFtZSBpblxuICAgICAgZnVuIGUgLT5cbiAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSAtPlxuICAgICAgICAgICgqIHdlIGRlZmluaXRlbHkgZG9uJ3QgdXNlIHRoZSBzdHJpbmcsIHNvIGNsZWFuIHVwIHRoZSBnZW5lcmF0ZWQgY29kZSBhIGJpdCAqKVxuICAgICAgICAgIGVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgX3RwX2xvYyA9IFslZSBlc3RyaW5nIH5sb2MgZnVsbF90eXBlX25hbWVdIGluXG4gICAgICAgICAgICBbJWUgZV1dXG4gICAgaW5cbiAgICBsZXQgaW50ZXJuYWxfZnVuX2JvZHkgPVxuICAgICAgaWYgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICB0aGVuXG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoYmluZF90cF9sb2NfaW5cbiAgICAgICAgICAgICAoZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHkpKSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGxldCBuZWVkX3RwX2xvYywgYm9keV9iZWxvd19sYW1iZGFzID1cbiAgICAgICAgaWYgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBub192YXJpYW50X21hdGNoX21jID1cbiAgICAgICAgICAgIFsgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaF1cbiAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGludGVybmFsX2NhbGwgPVxuICAgICAgICAgICAgbGV0IGludGVybmFsX2V4cHIgPSBldmFyIH5sb2MgaW50ZXJuYWxfbmFtZSBpblxuICAgICAgICAgICAgZWFwcGx5IH5sb2MgaW50ZXJuYWxfZXhwciAoYXJnX2V4cHJzIEAgWyBbJWV4cHIgeW9qc29uXSBdKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyeV93aXRoID0gcGV4cF90cnkgfmxvYyBpbnRlcm5hbF9jYWxsIG5vX3ZhcmlhbnRfbWF0Y2hfbWMgaW5cbiAgICAgICAgICBmYWxzZSwgYmluZF90cF9sb2NfaW4gWyVleHByIGZ1biB5b2pzb24gLT4gWyVlIHRyeV93aXRoXV0pXG4gICAgICAgIGVsc2UgdHJ1ZSwgYm9keVxuICAgICAgaW5cbiAgICAgIGxldCBib2R5X3dpdGhfbGFtYmRhcyA9XG4gICAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlY1xuICAgICAgICAgIH5yZWNfZmxhZ1xuICAgICAgICAgIChlYWJzdHJhY3QgfmxvYyBhcmdfcGF0dHMgYm9keV9iZWxvd19sYW1iZGFzKVxuICAgICAgaW5cbiAgICAgIGlmIG5lZWRfdHBfbG9jIHRoZW4gYmluZF90cF9sb2NfaW4gYm9keV93aXRoX2xhbWJkYXMgZWxzZSBib2R5X3dpdGhfbGFtYmRhc1xuICAgIGluXG4gICAgbGV0IG1rX2JpbmRpbmcgZnVuY19uYW1lIGJvZHkgPVxuICAgICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfdHlwZSB0ZCBpblxuICAgICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gICAgaW5cbiAgICBsZXQgaW50ZXJuYWxfYmluZGluZ3MgPVxuICAgICAgbWF0Y2ggaW50ZXJuYWxfZnVuX2JvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgYm9keSAtPiBbIG1rX2JpbmRpbmcgaW50ZXJuYWxfbmFtZSBib2R5IF1cbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9iaW5kaW5nID0gbWtfYmluZGluZyBleHRlcm5hbF9uYW1lIGV4dGVybmFsX2Z1bl9ib2R5IGluXG4gICAgaW50ZXJuYWxfYmluZGluZ3MsIFsgZXh0ZXJuYWxfYmluZGluZyBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcbiAgbGV0IHRkc19vZl95b2pzb24gfmxvYyB+cG9seSB+cGF0aCAocmVjX2ZsYWcsIHRkcykgPVxuICAgIGxldCB0eXBldmFyX2hhbmRsaW5nID0gYG9rIGluXG4gICAgbGV0IHNpbmdsZXRvbiA9XG4gICAgICBtYXRjaCB0ZHMgd2l0aFxuICAgICAgfCBbIF8gXSAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIHNpbmdsZXRvblxuICAgIHRoZW4gKFxuICAgICAgbGV0IHJlY19mbGFnID0gcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgaW5cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpbnRlcm5hbHMgQCBleHRlcm5hbHMpXG4gICAgICAgIGluXG4gICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIFJlY3Vyc2l2ZSBiaW5kaW5nc1xuICAgICAgfCBOb25yZWN1cnNpdmUgLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIGludGVybmFsc1xuICAgICAgICAgIEAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIGV4dGVybmFscykpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5wb2x5IH5sb2MgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnRlcm5hbHMgQCBleHRlcm5hbHMpXG4gICAgICBpblxuICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgYmluZGluZ3MpXG4gIDs7XG5cbiAgbGV0IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5wYXRoIGN0eXAgPVxuICAgIGxldCBsb2MgPSB7IGN0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgZnAgPSB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBjdHlwIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIFslZSBmdW5fZXhwcl0geW9qc29uXVxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIG1hdGNoaW5nc1xuICAgIGluXG4gICAgbGV0IGZ1bGxfdHlwZV9uYW1lID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgbGluZSAlaTogJXNcIlxuICAgICAgICBwYXRoXG4gICAgICAgIGxvYy5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAgICAgKHN0cmluZ19vZl9jb3JlX3R5cGUgY3R5cClcbiAgICBpblxuICAgIFslZXhwclxuICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICBsZXQgX3RwX2xvYyA9IFslZSBlc3RyaW5nIH5sb2MgZnVsbF90eXBlX25hbWVdIGluXG4gICAgICAgIFslZSBib2R5XV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX2V4dGVuc2lvbiB0eSA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi50eXBlX29mX3lvanNvbl9vZiB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gdHlcbiAgOztcblxuICBsZXQgY29yZV90eXBlIHR5ID1cbiAgICBTdHJfZ2VuZXJhdGVfeW9qc29uX29mLnlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOmBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciB0eVxuICAgIHw+IEZ1bl9vcl9tYXRjaC5leHByIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfVxuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsID0gU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWdcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mLnlvanNvbl9vZl90ZHNcbmVuZFxuXG5tb2R1bGUgWW9qc29uX2ZpZWxkcyA9IHN0cnVjdFxuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzLnlvanNvbl9maWVsZHNfb2ZfdGRzXG5lbmRcblxubW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl9vZl95b2pzb24gfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSA9XG4gICAgU3RyX2dlbmVyYXRlX29mX3lvanNvbi50eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHJcbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX29mX3lvanNvbi50ZHNfb2ZfeW9qc29uXG5lbmRcblxubW9kdWxlIFNpZ195b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IG1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzID1cbiAgICBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzXG4gICAgQCBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZyB+cG9seTpmYWxzZSB+bG9jIH5wYXRoIGRlY2xzXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgfmxvYyB+cGF0aCAoKF9yZiwgdGRzKSBhcyBkZWNscykgPVxuICAgIG1hdGNoXG4gICAgICBta19uYW1lZF9zaWdcbiAgICAgICAgfmxvY1xuICAgICAgICB+c2dfbmFtZTpcIlBweF95b2pzb25fY29udl9saWIuWW9qc29uYWJsZS5TXCJcbiAgICAgICAgfmhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50OmZhbHNlXG4gICAgICAgIHRkc1xuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5jbHVkZV9pbmZvcyAtPiBbIHBzaWdfaW5jbHVkZSB+bG9jIGluY2x1ZGVfaW5mb3MgXVxuICAgIHwgTm9uZSAtPiBta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc29vX3J1bnRpbWUuUnVudGltZV92ZXJzaW9uICopXG5tb2R1bGUgUnVudGltZV92ZXJzaW9uID0gSnNvb19ydW50aW1lX19SdW50aW1lX3ZlcnNpb25cblxubW9kdWxlIEpzb29fcnVudGltZV9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCJtb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgdHlwZSAnYSBqc19hcnJheSA9IHRcblxuICB0eXBlICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2sgPSB0XG5cbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuICBleHRlcm5hbCBib29sIDogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgdG9fYm9vbCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuICBleHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXkgOiB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG4gIGV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgaW50MzJfb2ZfbnVtYmVyIDogdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCBuYXRpdmVpbnRfb2ZfbnVtYmVyIDogdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCB0eXBlb2YgOiB0IC0+IHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuICBleHRlcm5hbCBpbnN0YW5jZW9mIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBleHRlcm5hbCBnZXQgOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICBleHRlcm5hbCBkZWxldGUgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gIGV4dGVybmFsIGNhbGwgOiB0IC0+IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gIGV4dGVybmFsIGZ1bl9jYWxsIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbCA6IHQgLT4gc3RyaW5nIC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gIGV4dGVybmFsIG5ld19vYmogOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuXG4gIGV4dGVybmFsIG5ld19vYmpfYXJyIDogdCAtPiB0IGpzX2FycmF5IC0+IHQgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICh0IGpzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIHQganNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAoJ2IgLT4gdCBqc19hcnJheSAtPiAnYSkgLT4gKCdiLCB0IGpzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5lbmRcblxubW9kdWxlIFN5cyA9IHN0cnVjdFxuICB0eXBlICdhIGNhbGxiYWNrID0gJ2FcblxuICBleHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG4gIGV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6IG91dF9jaGFubmVsIC0+IChqc19zdHJpbmc6SnMudCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG4gIGV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDogc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbiAgZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG4gIHR5cGUgcmVkaXJlY3Rpb25cblxuICBleHRlcm5hbCByZWRpcmVjdF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gaW50bzpvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvblxuICAgID0gXCJjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3RcIlxuXG4gIGV4dGVybmFsIHJlc3RvcmVfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHJlZGlyZWN0aW9uIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmVcIlxuXG4gIG1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgICBleHRlcm5hbCB1c2VfanNfc3RyaW5nIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBlZmZlY3RzIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1wiXG4gIGVuZFxuXG4gIGxldCB2ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLnNcblxuICBsZXQgZ2l0X3ZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbmVuZFxuXG5tb2R1bGUgRXJyb3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHJhaXNlXyA6IHQgLT4gJ2FcblxuICB2YWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4blxuICAoKiogQXR0YWNoIGEgSmF2YXNTY3JpcHQgZXJyb3IgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLiAgaWYgW2ZvcmNlID0gZmFsc2VdIGFuZCBhXG4gICAgSmF2YXNTY3JpcHQgZXJyb3IgaXMgYWxyZWFkeSBhdHRhY2hlZCwgaXQgd2lsbCBkbyBub3RoaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0b1xuICAgIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBKYXZhU2NyaXB0IHN0YWNrIHRyYWNlcy5cblxuICAgIEF0dGFjaGluZyBKYXZhc1NjcmlwdCBlcnJvcnMgd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseSB3aGVuIGNvbXBpbGluZyB3aXRoXG4gICAgWy0tZW5hYmxlIHdpdGgtanMtZXJyb3JdLiAqKVxuXG4gIHZhbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb25cbiAgKCoqIEV4dHJhY3QgYSBKYXZhU2NyaXB0IGVycm9yIGF0dGFjaGVkIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbiwgaWYgYW55LiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgICAgIGluc3BlY3QgYW4gZXZlbnR1YWwgc3RhY2sgc3RyYWNlLCBlc3BlY2lhbGx5IHdoZW4gc291cmNlbWFwIGlzIGVuYWJsZWQuICopXG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG4gICgqKiBUaGUgW0Vycm9yXSBleGNlcHRpb24gd3JhcCBqYXZhc2NyaXB0IGV4Y2VwdGlvbnMgd2hlbiBjYXVnaHQgYnkgT0NhbWwgY29kZS5cbiAgICAgIEluIGNhc2UgdGhlIGphdmFzY3JpcHQgZXhjZXB0aW9uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBqYXZhc2NyaXB0IFtFcnJvcl0sXG4gICAgICBpdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYW5kIHdyYXBwZWQgaW50byBhIFtGYWlsdXJlXSBleGNlcHRpb24uXG4gICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG5cbiAgbGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJqc0Vycm9yXCIgKEV4biAoT2JqLm1hZ2ljIFt8fF0pKVxuXG4gIGxldCByYWlzZV8gOiB0IC0+ICdhID0gSnMuanNfZXhwciBcIihmdW5jdGlvbiAoZXhuKSB7IHRocm93IGV4biB9KVwiXG5cbiAgZXh0ZXJuYWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uID0gXCJjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cIlxuXG4gIGV4dGVybmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG4gPSBcImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXCJcbmVuZFxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMi02MFwiXVxuXG5tb2R1bGUgRm9yX2NvbXBhdGliaWxpdHlfb25seSA9IHN0cnVjdFxuICAoKiBBZGQgcHJpbWl0aXZlcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLiBFeGlzdGluZyB1c2VycyBtaWdodFxuICAgICBkZXBlbmQgb24gaXQgKGUuZy4gZ2VuX2pzX2FwaSksIHdlIGRvbnQgd2FudCB0aGUgb2NhbWwgY29tcGlsZXJcbiAgICAgdG8gY29tcGxhaW4gYWJvdXQgdGhlc2VzIG1pc3NpbmcgcHJpbWl0aXZlcy4gKilcblxuICBleHRlcm5hbCBjYW1sX2pzX2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IEpzLnQgPSBcImNhbWxfanNfZnJvbV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19ieXRlX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF9vZl9qc19hcnJheSA6ICdhIEpzLmpzX2FycmF5IC0+ICdhIGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X3RvX2pzX2FycmF5IDogJ2EgbGlzdCAtPiAnYSBKcy5qc19hcnJheSA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuZW5kXG5cbm1vZHVsZSBUeXBlZF9hcnJheSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHR5cGVkQXJyYXkgPSBKcy50XG5cbiAgdHlwZSBhcnJheUJ1ZmZlciA9IEpzLnRcblxuICB0eXBlIHVpbnQ4QXJyYXkgPSBKcy50XG5cbiAgZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICAgID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXlcbiAgICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICAgIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG4gIGVuZFxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGVfaW50NjRfbG9fbWlfaGkgOiBpbnQgLT4gaW50IC0+IGludCAtPiBJbnQ2NC50XG4gICAgPSBcImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXCJcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuQ1NTICopXG5tb2R1bGUgQ1NTID0gSnNfb2Zfb2NhbWxfX0NTU1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb20gKilcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbF9fRG9tXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9ldmVudHMgKilcbm1vZHVsZSBEb21fZXZlbnRzID0gSnNfb2Zfb2NhbWxfX0RvbV9ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2h0bWwgKilcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sX19Eb21faHRtbFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fc3ZnICopXG5tb2R1bGUgRG9tX3N2ZyA9IEpzX29mX29jYW1sX19Eb21fc3ZnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkV2ZW50U291cmNlICopXG5tb2R1bGUgRXZlbnRTb3VyY2UgPSBKc19vZl9vY2FtbF9fRXZlbnRTb3VyY2VcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlsZSAqKVxubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbF9fRmlsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaXJlYnVnICopXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sX19GaXJlYnVnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZvcm0gKilcbm1vZHVsZSBGb3JtID0gSnNfb2Zfb2NhbWxfX0Zvcm1cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuR2VvbG9jYXRpb24gKilcbm1vZHVsZSBHZW9sb2NhdGlvbiA9IEpzX29mX29jYW1sX19HZW9sb2NhdGlvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGVyc2VjdGlvbk9ic2VydmVyICopXG5tb2R1bGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50bCAqKVxubW9kdWxlIEludGwgPSBKc19vZl9vY2FtbF9fSW50bFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5KcyAqKVxubW9kdWxlIEpzID0gSnNfb2Zfb2NhbWxfX0pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzb24gKilcbm1vZHVsZSBKc29uID0gSnNfb2Zfb2NhbWxfX0pzb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnN0YWJsZSAqKVxubW9kdWxlIEpzdGFibGUgPSBKc19vZl9vY2FtbF9fSnN0YWJsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5MaWJfdmVyc2lvbiAqKVxubW9kdWxlIExpYl92ZXJzaW9uID0gSnNfb2Zfb2NhbWxfX0xpYl92ZXJzaW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLk11dGF0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBNdXRhdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX011dGF0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUGVyZm9ybWFuY2VPYnNlcnZlciAqKVxubW9kdWxlIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZWdleHAgKilcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbF9fUmVnZXhwXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlc2l6ZU9ic2VydmVyICopXG5tb2R1bGUgUmVzaXplT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUmVzaXplT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuU3lzX2pzICopXG5tb2R1bGUgU3lzX2pzID0gSnNfb2Zfb2NhbWxfX1N5c19qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5UeXBlZF9hcnJheSAqKVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWxfX1R5cGVkX2FycmF5XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlVybCAqKVxubW9kdWxlIFVybCA9IEpzX29mX29jYW1sX19VcmxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViR0wgKilcbm1vZHVsZSBXZWJHTCA9IEpzX29mX29jYW1sX19XZWJHTFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJTb2NrZXRzICopXG5tb2R1bGUgV2ViU29ja2V0cyA9IEpzX29mX29jYW1sX19XZWJTb2NrZXRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldvcmtlciAqKVxubW9kdWxlIFdvcmtlciA9IEpzX29mX29jYW1sX19Xb3JrZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuWG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBYbWxIdHRwUmVxdWVzdCA9IEpzX29mX29jYW1sX19YbWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGxvY2FsIG1vZHVsZSBbSnNdIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBwcHhfanMgZXh0ZW5zaW9uIHdvcmsgd2l0aGluIHRoYXQgZmlsZS4gKilcbm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG5cbiAgdHlwZSAoLSdhLCArJ2IpIG1ldGhfY2FsbGJhY2tcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgdHlwZSB0b3BcblxuICAgIHR5cGUgYW55ID0gdG9wIHRcblxuICAgIHR5cGUgYW55X2pzX2FycmF5ID0gYW55XG5cbiAgICBleHRlcm5hbCBpbmplY3QgOiAnYSAtPiBhbnkgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBjb2VyY2UgOiBfIHQgLT4gXyB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgZ2V0IDogJ2EgLT4gJ2IgLT4gJ2MgPSBcImNhbWxfanNfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldCA6ICdhIC0+ICdiIC0+ICdjIC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICAgIGV4dGVybmFsIGRlbGV0ZSA6ICdhIC0+ICdiIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICAgIGV4dGVybmFsIGNhbGwgOiAnYSAtPiAnYiAtPiBhbnkgYXJyYXkgLT4gJ2MgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBmdW5fY2FsbCA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGwgOiAnYSAtPiBzdHJpbmcgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqX2FyciA6ICdhIC0+IGFueV9qc19hcnJheSAtPiAnYiA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogYW55KSBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICAgIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICAgIGxldCBnbG9iYWwgPSBwdXJlX2pzX2V4cHIgXCJnbG9iYWxUaGlzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoYW55X2pzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIGFueV9qc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgICgnYiAtPiBhbnlfanNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgYW55X2pzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgICgqIERFUFJFQ0FURUQgKilcbiAgICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuICBlbmRcblxuICAoKioqKilcblxuICB0eXBlICdhIG9wdCA9ICdhXG5cbiAgdHlwZSAnYSBvcHRkZWYgPSAnYVxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgbGV0IG51bGwgOiAnYSBvcHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG5cbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIG9wdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgdW5kZWZpbmVkIDogJ2Egb3B0ZGVmID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5cbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2Egb3B0ZGVmID0gXCIlaWRlbnRpdHlcIlxuXG4gIG1vZHVsZSB0eXBlIE9QVCA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVtcHR5IDogJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuXG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgICB2YWwgdGVzdCA6ICdhIHQgLT4gYm9vbFxuXG4gICAgdmFsIGl0ZXIgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgY2FzZSA6ICdhIHQgLT4gKHVuaXQgLT4gJ2IpIC0+ICgnYSAtPiAnYikgLT4gJ2JcblxuICAgIHZhbCBnZXQgOiAnYSB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYVxuXG4gICAgdmFsIG9wdGlvbiA6ICdhIG9wdGlvbiAtPiAnYSB0XG5cbiAgICB2YWwgdG9fb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb25cblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdCA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdFxuXG4gICAgbGV0IGVtcHR5ID0gbnVsbFxuXG4gICAgbGV0IHJldHVybiA9IHNvbWVcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChlcXVhbHMgeCBudWxsKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChlcXVhbHMgeCBudWxsKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRkZWYgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHRkZWYgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRkZWZcblxuICAgIGxldCBlbXB0eSA9IHVuZGVmaW5lZFxuXG4gICAgbGV0IHJldHVybiA9IGRlZlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIGxldCBjb2VyY2UgeCBmIGcgPSBPcHQuZ2V0IChmIHgpIChmdW4gKCkgLT4gZyB4KVxuXG4gIGxldCBjb2VyY2Vfb3B0IHggZiBnID0gT3B0LmdldCAoT3B0LmJpbmQgeCBmKSAoZnVuICgpIC0+IGcgeClcblxuICAoKioqKilcblxuICB0eXBlICsnYSBtZXRoXG5cbiAgdHlwZSArJ2EgZ2VuX3Byb3BcblxuICB0eXBlICdhIHJlYWRvbmx5X3Byb3AgPSA8IGdldCA6ICdhID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHdyaXRlb25seV9wcm9wID0gPCBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHByb3AgPSA8IGdldCA6ICdhIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBvcHRkZWZfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSArJ2EgY29uc3RyXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBjYWxsYmFjayA9ICh1bml0LCAnYSkgbWV0aF9jYWxsYmFja1xuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuXG4gICgqKioqKVxuXG4gIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgKCoqKiopXG5cbiAgbGV0IF90cnVlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInRydWVcIlxuXG4gIGxldCBfZmFsc2UgPSBVbnNhZmUucHVyZV9qc19leHByIFwiZmFsc2VcIlxuXG4gIHR5cGUgbWF0Y2hfcmVzdWx0X2hhbmRsZVxuXG4gIHR5cGUgc3RyaW5nX2FycmF5XG5cbiAgdHlwZSBudW1iZXJfdCA9IGZsb2F0XG5cbiAgY2xhc3MgdHlwZSBudW1iZXIgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmdfcmFkaXggOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRml4ZWQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbF9kaWdpdHMgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvUHJlY2lzaW9uIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgZW5kXG5cbiAgYW5kIGpzX3N0cmluZyA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB2YWx1ZU9mIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJBdCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckNvZGVBdCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICAoKiBUaGlzIG1heSByZXR1cm4gTmFOLi4uICopXG4gICAgbWV0aG9kIGNvbmNhdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfNCA6XG4gICAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsb2NhbGVDb21wYXJlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgbWV0aG9kIF9tYXRjaCA6IHJlZ0V4cCB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemVfZm9ybSA6IG5vcm1hbGl6YXRpb24gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZSA6IHJlZ0V4cCB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzZWFyY2ggOiByZWdFeHAgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdCA6IGpzX3N0cmluZyB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9saW1pdGVkIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHAgOiByZWdFeHAgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwTGltaXRlZCA6IHJlZ0V4cCB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nX3RvRW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZUxvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1VwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVVwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0cmltIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGFuZCByZWdFeHAgPSBvYmplY3RcbiAgICBtZXRob2QgZXhlYyA6IGpzX3N0cmluZyB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIHRlc3QgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNvdXJjZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBnbG9iYWwgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZUNhc2UgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG11bHRpbGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbGFzdEluZGV4IDogaW50IHByb3BcbiAgZW5kXG5cbiAgYW5kIG5vcm1hbGl6YXRpb24gPSBqc19zdHJpbmdcblxuICAoKiBzdHJpbmcgaXMgdXNlZCBieSBwcHhfanMsIGl0IG5lZWRzIHRvIGNvbWUgYmVmb3JlIGFueSB1c2Ugb2YgdGhlXG4gICAgIG5ldyBzeW50YXggaW4gdGhpcyBmaWxlICopXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGxldCBuZmMgPSBzdHJpbmcgXCJORkNcIlxuXG4gIGxldCBuZmQgPSBzdHJpbmcgXCJORkRcIlxuXG4gIGxldCBuZmtjID0gc3RyaW5nIFwiTkZLQ1wiXG5cbiAgbGV0IG5ma2QgPSBzdHJpbmcgXCJORktEXCJcbmVuZFxuXG5pbmNsdWRlIEpzXG5cbmNsYXNzIHR5cGUgc3RyaW5nX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgZnJvbUNoYXJDb2RlIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgc3RyaW5nX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fU3RyaW5nXG5cbmxldCByZWdFeHAgPSBVbnNhZmUuZ2xvYmFsIyMuX1JlZ0V4cFxuXG5sZXQgcmVnRXhwX2NvcHkgPSByZWdFeHBcblxubGV0IHJlZ0V4cF93aXRoRmxhZ3MgPSByZWdFeHBcblxuY2xhc3MgdHlwZSBbJ2FdIGpzX2FycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmNhdCA6ICdhIGpzX2FycmF5IHQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGpvaW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHBvcCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHB1c2ggOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCByZXZlcnNlIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNoaWZ0IDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnQgOiAoJ2EgLT4gJ2EgLT4gbnVtYmVyX3QpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0X2FzU3RyaW5ncyA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8yIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzMgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfNCA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnQgOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzb21lIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZXZlcnkgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb3JFYWNoIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtYXAgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBmaWx0ZXIgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgcmVkdWNlX2luaXQgOiAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlIDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0X2luaXQgOlxuICAgICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodCA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuZW5kXG5cbmxldCBvYmplY3RfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgb2JqZWN0X2tleXMgbyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBvYmplY3RfY29uc3RydWN0b3IjI2tleXMgb1xuXG5sZXQgYXJyYXlfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX0FycmF5XG5cbmxldCBhcnJheV9lbXB0eSA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9sZW5ndGggPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfZ2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IFVuc2FmZS5nZXRcblxubGV0IGFycmF5X3NldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gVW5zYWZlLnNldFxuXG5sZXQgYXJyYXlfbWFwX3BvbHkgOlxuICAgICdhICNqc19hcnJheSB0IC0+ICgnYSAtPiBpbnQgLT4gJ2EgI2pzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiICNqc19hcnJheSB0ID1cbiBmdW4gYSBjYiAtPiAoVW5zYWZlLmNvZXJjZSBhKSMjbWFwIGNiXG5cbmxldCBhcnJheV9tYXAgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggX2lkeCBfIC0+IGYgeCkpXG5cbmxldCBhcnJheV9tYXBpIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IGlkeCBfIC0+IGYgaWR4IHgpKVxuXG5jbGFzcyB0eXBlIG1hdGNoX3Jlc3VsdCA9IG9iamVjdFxuICBpbmhlcml0IFtqc19zdHJpbmcgdF0ganNfYXJyYXlcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnB1dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgc3RyX2FycmF5IDogc3RyaW5nX2FycmF5IHQgLT4ganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IFVuc2FmZS5jb2VyY2VcblxubGV0IG1hdGNoX3Jlc3VsdCA6IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCAtPiBtYXRjaF9yZXN1bHQgdCA9IFVuc2FmZS5jb2VyY2VcblxuY2xhc3MgdHlwZSBkYXRlID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1RpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZURhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdmFsdWVPZiA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEhvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDSG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZXpvbmVPZmZzZXQgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0Z1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0U2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ1NlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0b1VUQ1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9JU09TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSlNPTiA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRhdGVfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tb250aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2RheSA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2hvdXIgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21pbiA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX3NlYyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tcyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG5vdyA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgZGF0ZV9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RhdGVcblxubGV0IGRhdGUgOiBkYXRlX2NvbnN0ciB0ID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbm93IDogZGF0ZSB0IGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2Zyb21UaW1lVmFsdWUgOiAobnVtYmVyX3QgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tb250aCA6IChpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZGF5IDogKGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfaG91ciA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9taW4gOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX3NlYyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21zIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9XG4gIGRhdGVfY29uc3RyXG5cbmNsYXNzIHR5cGUgbWF0aCA9IG9iamVjdFxuICBtZXRob2QgX0UgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjEwIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMkUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cxMEUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QSSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQxXzJfIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFicyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYWNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbjIgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNlaWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZXhwIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBmbG9vciA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbG9nIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHBvdyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcmFuZG9tIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByb3VuZCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzcXJ0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IG1hdGggPSBVbnNhZmUuZ2xvYmFsIyMuX01hdGhcblxuY2xhc3MgdHlwZSBlcnJvciA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhY2sgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgZXJyb3JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9FcnJvclxuXG5tb2R1bGUgSnNfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvcl90ID0gZXJyb3IgdFxuXG4gIGluY2x1ZGUgSnNvb19ydW50aW1lLkVycm9yXG5cbiAgZXh0ZXJuYWwgb2ZfZXJyb3IgOiBlcnJvcl90IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgZXh0ZXJuYWwgdG9fZXJyb3IgOiB0IC0+IGVycm9yX3QgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IG5hbWUgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5uYW1lXG5cbiAgbGV0IG1lc3NhZ2UgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5tZXNzYWdlXG5cbiAgbGV0IHN0YWNrIChlIDogdCkgOiBzdHJpbmcgb3B0aW9uID1cbiAgICBPcHQudG9fb3B0aW9uIChPcHQubWFwICh0b19lcnJvciBlKSMjLnN0YWNrIHRvX3N0cmluZylcblxuICBsZXQgdG9fc3RyaW5nIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyN0b1N0cmluZ1xuZW5kXG5cbm1vZHVsZSBNYWdpYyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgZXhjZXB0aW9uIEVycm9yIG9mIGVycm9yIHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdiKSBlcSA9IEVxIDogKCdhLCAnYSkgZXFcblxuICBsZXQgKGVxIDogKGVycm9yIHQsIEpzX2Vycm9yLnQpIGVxKSA9IE9iai5tYWdpYyBFcVxuXG4gIGxldCBtID1cbiAgICBtYXRjaCBlcSB3aXRoXG4gICAgfCBFcSAtPlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIGV4Y2VwdGlvbiBFcnJvciA9IEpzX2Vycm9yLkV4blxuICAgICAgICBlbmQgOiBUKVxuXG4gIG1vZHVsZSBFcnJvciA9ICh2YWwgbSA6IFQpXG5lbmRcblxuaW5jbHVkZSBNYWdpYy5FcnJvclxuXG5sZXQgcmFpc2VfanNfZXJyb3IgZSA9IEpzX2Vycm9yLnJhaXNlXyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IHN0cmluZ19vZl9lcnJvciBlID0gSnNfZXJyb3IudG9fc3RyaW5nIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgZXhuX3dpdGhfanNfYmFja3RyYWNlID0gSnNfZXJyb3IuYXR0YWNoX2pzX2JhY2t0cmFjZVxuXG5leHRlcm5hbCBqc19lcnJvcl9vZl9leG4gOiBleG4gLT4gZXJyb3IgdCBvcHQgPSBcImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXCJcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBfSlNPTiA6IGpzb24gdCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgZGVjb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGRlY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCB1bmVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy51bmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxuZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbmV4dGVybmFsIHRvX2Jvb2wgOiBib29sIHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiAnYSBqc19hcnJheSB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG5leHRlcm5hbCB0b19hcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG5leHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbmV4dGVybmFsIGZsb2F0IDogZmxvYXQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogbnVtYmVyX3QgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiBudW1iZXIgdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogbnVtYmVyIHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBpbnQzMiA6IGludDMyIC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG5leHRlcm5hbCB0b19pbnQzMiA6IG51bWJlcl90IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuZXh0ZXJuYWwgbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogbnVtYmVyX3QgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHR5cGVvZiA6IF8gdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG5leHRlcm5hbCBpbnN0YW5jZW9mIDogXyB0IC0+IF8gY29uc3RyIC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbmxldCBpc05hTiAoaSA6ICdhKSA6IGJvb2wgPVxuICB0b19ib29sIChVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmlzTmFOIFt8IFVuc2FmZS5pbmplY3QgaSB8XSlcblxubGV0IHBhcnNlSW50IChzIDoganNfc3RyaW5nIHQpIDogaW50ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlSW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUludFwiIGVsc2Ugc1xuXG5sZXQgcGFyc2VGbG9hdCAocyA6IGpzX3N0cmluZyB0KSA6IG51bWJlcl90ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlRmxvYXQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlRmxvYXRcIiBlbHNlIHNcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgICAgfCBKc19lcnJvci5FeG4gZSAtPiBTb21lIChKc19lcnJvci50b19zdHJpbmcgZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBlIC0+XG4gICAgICBsZXQgZSA6IDwgLi4gPiB0ID0gT2JqLm1hZ2ljIGUgaW5cbiAgICAgIGlmIGluc3RhbmNlb2YgZSBhcnJheV9jb25zdHJ1Y3RvciB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19zdHJpbmcgZSMjdG9TdHJpbmcpKVxuXG5sZXQgZXhwb3J0X2pzIChmaWVsZCA6IGpzX3N0cmluZyB0KSB4ID1cbiAgVW5zYWZlLnNldFxuICAgIChVbnNhZmUucHVyZV9qc19leHByIFwianNvb19leHBvcnRzXCIpXG4gICAgZmllbGRcbiAgICAoaWYgU3RyaW5nLmVxdWFsIChKcy50b19zdHJpbmcgKHR5cGVvZiAoT2JqLm1hZ2ljIHgpKSkgXCJmdW5jdGlvblwiXG4gICAgICAgICgqIGZ1bmN0aW9uIHdpdGggYXJpdHkvbGVuZ3RoIGVxdWFsIHRvIHplcm8gYXJlIGFscmVhZHkgd3JhcHBlZCAqKVxuICAgICAgICAmJiBVbnNhZmUuZ2V0IChPYmoubWFnaWMgeCkgKEpzLnN0cmluZyBcImxlbmd0aFwiKSA+IDBcbiAgICAgdGhlbiBPYmoubWFnaWMgKHdyYXBfY2FsbGJhY2sgKE9iai5tYWdpYyB4KSlcbiAgICAgZWxzZSB4KVxuXG5sZXQgZXhwb3J0IGZpZWxkIHggPSBleHBvcnRfanMgKHN0cmluZyBmaWVsZCkgeFxuXG5sZXQgZXhwb3J0X2FsbCBvYmogPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG9iaiBpblxuICBrZXlzIyNmb3JFYWNoXG4gICAgKHdyYXBfY2FsbGJhY2sgKGZ1biAoa2V5IDoganNfc3RyaW5nIHQpIF8gXyAtPiBleHBvcnRfanMga2V5IChVbnNhZmUuZ2V0IG9iaiBrZXkpKSlcblxuKCoqKiopXG5cbigqIERFUFJFQ0FURUQgKilcblxudHlwZSBmbG9hdF9wcm9wID0gbnVtYmVyX3QgcHJvcFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gbm9kZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBsaXN0X29mX25vZGVMaXN0IChub2RlTGlzdCA6ICdhIG5vZGVMaXN0IHQpID1cbiAgbGV0IGxlbmd0aCA9IG5vZGVMaXN0IyMubGVuZ3RoIGluXG4gIGxldCByZWMgYWRkX2l0ZW0gYWNjIGkgPVxuICAgIGlmIGkgPCBsZW5ndGhcbiAgICB0aGVuXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChub2RlTGlzdCMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWRkX2l0ZW0gYWNjIChpICsgMSlcbiAgICAgIHwgU29tZSBlIC0+IGFkZF9pdGVtIChlIDo6IGFjYykgKGkgKyAxKVxuICAgIGVsc2UgTGlzdC5yZXYgYWNjXG4gIGluXG4gIGFkZF9pdGVtIFtdIDBcblxudHlwZSBub2RlVHlwZSA9XG4gIHwgT1RIRVJcbiAgKCogV2lsbCBub3QgaGFwcGVuICopXG4gIHwgRUxFTUVOVFxuICB8IEFUVFJJQlVURVxuICB8IFRFWFRcbiAgfCBDREFUQV9TRUNUSU9OXG4gIHwgRU5USVRZX1JFRkVSRU5DRVxuICB8IEVOVElUWVxuICB8IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05cbiAgfCBDT01NRU5UXG4gIHwgRE9DVU1FTlRcbiAgfCBET0NVTUVOVF9UWVBFXG4gIHwgRE9DVU1FTlRfRlJBR01FTlRcbiAgfCBOT1RBVElPTlxuXG5tb2R1bGUgRG9jdW1lbnRQb3NpdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICB0eXBlIG1hc2sgPSBpbnRcblxuICBsZXQgZGlzY29ubmVjdGVkID0gMHgwMVxuXG4gIGxldCBwcmVjZWRpbmcgPSAweDAyXG5cbiAgbGV0IGZvbGxvd2luZyA9IDB4MDRcblxuICBsZXQgY29udGFpbnMgPSAweDA4XG5cbiAgbGV0IGNvbnRhaW5lZF9ieSA9IDB4MTBcblxuICBsZXQgaW1wbGVtZW50YXRpb25fc3BlY2lmaWMgPSAweDIwXG5cbiAgbGV0IGhhcyB0IG1hc2sgPSB0IGxhbmQgbWFzayA9IG1hc2tcblxuICBsZXQgYWRkIHggeSA9IHggbG9yIHlcblxuICBsZXQgKCArICkgPSBhZGRcbmVuZFxuXG5jbGFzcyB0eXBlIG5vZGUgPSBvYmplY3RcbiAgbWV0aG9kIG5vZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVHlwZSA6IG5vZGVUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogbm9kZSBub2RlTGlzdCB0IHByb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydEJlZm9yZSA6IG5vZGUgdCAtPiBub2RlIHQgb3B0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgaGFzQ2hpbGROb2RlcyA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lTm9kZSA6IGJvb2wgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA6IG5vZGUgdCAtPiBEb2N1bWVudFBvc2l0aW9uLnQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBOYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBQcmVmaXggOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBhcHBlbmRDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI2FwcGVuZENoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZW1vdmVDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI3JlbW92ZUNoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZXBsYWNlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCkgPVxuICBpZ25vcmUgKHAjI3JlcGxhY2VDaGlsZCAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCkpXG5cbmxldCBpbnNlcnRCZWZvcmUgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCBvcHQpID1cbiAgaWdub3JlIChwIyNpbnNlcnRCZWZvcmUgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQgb3B0KSlcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0F0dHJdIG9iamVjdHMuICopXG5jbGFzcyB0eXBlIGF0dHIgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWNpZmllZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lckVsZW1lbnQgOiBlbGVtZW50IHQgcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtOYW1lZE5vZGVNYXBdIG9iamVjdHMuICopXG5hbmQgWydub2RlXSBuYW1lZE5vZGVNYXAgPSBvYmplY3RcbiAgbWV0aG9kIGdldE5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0TmFtZWRJdGVtIDogJ25vZGUgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZU5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0VsZW1lbnRdIG9iamVjdHMuICopXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgdGFnTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlTlMgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHIgbmFtZWROb2RlTWFwIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgY2hhcmFjdGVyRGF0YSA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VianNfc3RyaW5nRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmREYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydERhdGEgOiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZURhdGEgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBjb21tZW50ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIHRleHQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnRGcmFnbWVudCA9IG5vZGVcblxuY2xhc3MgdHlwZSBbJ2VsZW1lbnRdIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiAnZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6IGRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudE5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHROb2RlIDoganNfc3RyaW5nIHQgLT4gdGV4dCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ29tbWVudCA6IGpzX3N0cmluZyB0IC0+IGNvbW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBpbXBvcnROb2RlIDogZWxlbWVudCB0IC0+IGJvb2wgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgYWRvcHROb2RlIDogZWxlbWVudCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9kZV90eXBlID1cbiAgfCBFbGVtZW50IG9mIGVsZW1lbnQgdFxuICB8IEF0dHIgb2YgYXR0ciB0XG4gIHwgVGV4dCBvZiB0ZXh0IHRcbiAgfCBPdGhlciBvZiBub2RlIHRcblxubGV0IG5vZGVUeXBlIGUgPVxuICBtYXRjaCBlIyMubm9kZVR5cGUgd2l0aFxuICB8IEVMRU1FTlQgLT4gRWxlbWVudCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IEFUVFJJQlVURSAtPiBBdHRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQ0RBVEFfU0VDVElPTiB8IFRFWFQgLT4gVGV4dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IF8gLT4gT3RoZXIgKGUgOj4gbm9kZSB0KVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGNhc3QgKGUgOiAjbm9kZSBKcy50KSB0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gdCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGVsZW1lbnQgZSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPSBjYXN0IGUgRUxFTUVOVFxuXG4gIGxldCB0ZXh0IGUgOiB0ZXh0IEpzLnQgSnMub3B0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gVEVYVCB8fCBlIyMubm9kZVR5cGUgPT0gQ0RBVEFfU0VDVElPTlxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhdHRyIGUgOiBhdHRyIEpzLnQgSnMub3B0ID0gY2FzdCBlIEFUVFJJQlVURVxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiIC0+IGJvb2wgdCkgbWV0aF9jYWxsYmFjayBvcHRcbigqKiBUaGUgdHlwZSBvZiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbnMuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXJcbiAgICAgIFsnYV0gaXMgdGhlIHR5cGUgb2YgdGhlIHRhcmdldCBvYmplY3Q7IHRoZSBzZWNvbmQgcGFyYW1ldGVyXG4gICAgICBbJ2JdIGlzIHRoZSB0eXBlIG9mIHRoZSBldmVudCBvYmplY3QuICopXG5cbmNsYXNzIHR5cGUgWydhXSBldmVudCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICAoKiBMZWdhY3kgbWV0aG9kcyAqKVxuICBtZXRob2Qgc3JjRWxlbWVudCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiAnYiBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBKcy5udWxsXG5cbmxldCB3aW5kb3dfZXZlbnQgKCkgOiAnYSAjZXZlbnQgdCA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJldmVudFwiXG5cbigqIFRoZSBmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdCBtdXN0IGJlIGNhbGxlZCBleHBsaWNpdGx5IHdoZW5cbiAgIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIuLi4gKilcbmxldCBoYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQuICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBmdWxsX2hhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLm1ldGhfY2FsbGJhY2sgKGZ1biB0aGlzIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQgKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBpbnZva2VfaGFuZGxlciAoZiA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyKSAodGhpcyA6ICdhKSAoZXZlbnQgOiAnYikgOiBib29sIHQgPVxuICBKcy5VbnNhZmUuY2FsbCBmIHRoaXMgW3wgSnMuVW5zYWZlLmluamVjdCBldmVudCB8XVxuXG5sZXQgZXZlbnRUYXJnZXQgKGUgOiAoPCAuLiA+IGFzICdhKSAjZXZlbnQgdCkgOiAnYSB0ID1cbiAgbGV0IHRhcmdldCA9XG4gICAgT3B0LmdldCBlIyMudGFyZ2V0IChmdW4gKCkgLT4gT3B0LmdldCBlIyMuc3JjRWxlbWVudCAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZCkpXG4gIGluXG4gIGlmIEpzLmluc3RhbmNlb2YgdGFyZ2V0IEpzLlVuc2FmZS5nbG9iYWwjIy5fTm9kZVxuICB0aGVuXG4gICAgKCogV29ya2Fyb3VuZCBmb3IgU2FmYXJpIGJ1ZyAqKVxuICAgIGxldCB0YXJnZXQnIDogbm9kZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZSB0YXJnZXQgaW5cbiAgICBpZiB0YXJnZXQnIyMubm9kZVR5cGUgPT0gVEVYVFxuICAgIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoT3B0LmdldCB0YXJnZXQnIyMucGFyZW50Tm9kZSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgZWxzZSB0YXJnZXRcbiAgZWxzZSB0YXJnZXRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQgbWFrZSBzID0gSnMuc3RyaW5nIHNcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gdW5pdCAtPiB1bml0XG5cbmNsYXNzIHR5cGUgZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgY2FwdHVyZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhc3NpdmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGUpIyMuYWRkRXZlbnRMaXN0ZW5lcilcbiAgdGhlblxuICAgIGxldCBldiA9IChKcy5zdHJpbmcgXCJvblwiKSMjY29uY2F0IHR5cCBpblxuICAgIGxldCBjYWxsYmFjayBlID0gSnMuVW5zYWZlLmNhbGwgKGgsIGUsIFt8fF0pIGluXG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2F0dGFjaEV2ZW50IGV2IGNhbGxiYWNrIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNkZXRhY2hFdmVudCBldiBjYWxsYmFja1xuICBlbHNlXG4gICAgbGV0IG9wdHMgOiBldmVudF9saXN0ZW5lcl9vcHRpb25zIHQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBsZXQgaXRlciB0IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBiIC0+IGYgYlxuICAgIGluXG4gICAgaXRlciBjYXB0dXJlIChmdW4gYiAtPiBvcHRzIyMuY2FwdHVyZSA6PSBiKTtcbiAgICBpdGVyIG9uY2UgKGZ1biBiIC0+IG9wdHMjIy5vbmNlIDo9IGIpO1xuICAgIGl0ZXIgcGFzc2l2ZSAoZnVuIGIgLT4gb3B0cyMjLnBhc3NpdmUgOj0gYik7XG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2FkZEV2ZW50TGlzdGVuZXIgdHlwIGggb3B0cyBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcmVtb3ZlRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzXG5cbmxldCBhZGRFdmVudExpc3RlbmVyIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwIGggY2FwdCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlIHR5cCB+Y2FwdHVyZTpjYXB0IGhcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgaWQgPSBpZCAoKVxuXG5sZXQgcHJldmVudERlZmF1bHQgZXYgPVxuICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5wcmV2ZW50RGVmYXVsdCAoKiBJRSBoYWNrICopXG4gIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyNwcmV2ZW50RGVmYXVsdFxuICBlbHNlIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnJldHVyblZhbHVlIDo9IEpzLmJvb2wgZmFsc2VcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID9idWJibGVzID9jYW5jZWxhYmxlID9kZXRhaWwgdHlwID1cbiAgbGV0IG9wdF9pdGVyIGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb3B0cyA9IFVuc2FmZS5vYmogW3x8XSBpblxuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmJ1YmJsZXMgOj0gYm9vbCB4KSBidWJibGVzO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmNhbmNlbGFibGUgOj0gYm9vbCB4KSBjYW5jZWxhYmxlO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmRldGFpbCA6PSBzb21lIHgpIGRldGFpbDtcbiAgbGV0IGNvbnN0ciA6XG4gICAgICAoICAgKCdhLCAnYikgI2N1c3RvbUV2ZW50IEpzLnQgRXZlbnQudHlwXG4gICAgICAgLT4gPCBkZXRhaWwgOiAnYiBvcHQgcHJvcCA+IHRcbiAgICAgICAtPiAoJ2EsICdiKSBjdXN0b21FdmVudCB0KVxuICAgICAgY29uc3RyID1cbiAgICBVbnNhZmUuZ2xvYmFsIyMuX0N1c3RvbUV2ZW50XG4gIGluXG4gIG5ldyVqcyBjb25zdHIgdHlwIG9wdHNcblxuKCogSUUgPCA5ICopXG5cbmNsYXNzIHR5cGUgc3RyaW5nTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5vcGVuIEpzXG5cbnR5cGUgdWludDMyID0gZmxvYXRcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlciA9IG9iamVjdFxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5lbmRcblxubGV0IGFycmF5QnVmZmVyIDogKGludCAtPiBhcnJheUJ1ZmZlciB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0FycmF5QnVmZmVyXG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXJWaWV3ID0gb2JqZWN0XG4gIG1ldGhvZCBidWZmZXIgOiBhcnJheUJ1ZmZlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZU9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gdHlwZWRBcnJheSA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBfQllURVNfUEVSX0VMRU1FTlQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRfZnJvbUFycmF5IDogJ2EganNfYXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldF9mcm9tVHlwZWRBcnJheSA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5IDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICAoKiBUaGlzIGZha2UgbWV0aG9kIGlzIG5lZWRlZCBmb3IgdHlwaW5nIHB1cnBvc2VzLlxuICAgICBXaXRob3V0IGl0LCBbJ2JdIHdvdWxkIG5vdCBiZSBjb25zdHJhaW5lZC4gKilcbiAgbWV0aG9kIF9jb250ZW50X3R5cGVfIDogJ2Igb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG50eXBlIGludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQzMkFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0NjRBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQ2NF9lbHQpIHR5cGVkQXJyYXlcblxuZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0XG4gID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbmxldCBpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21BcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2luQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21BcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2luQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgaW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9pbkJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfaW5CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgaW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9pbkJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfaW5CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9pbkJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9pbkJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgc2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID1cbiBmdW4gYSBpIHYgLT4gYXJyYXlfc2V0IChVbnNhZmUuY29lcmNlIGEpIGkgdlxuXG5sZXQgZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmxldCB1bnNhZmVfZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxuY2xhc3MgdHlwZSBkYXRhVmlldyA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBnZXRJbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyIDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyXyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyIDogaW50IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyXyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NF8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyXyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzJfIDogaW50IC0+IHVpbnQzMiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzJfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NF8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBkYXRhVmlldyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRGF0YVZpZXdcblxubGV0IGRhdGFWaWV3X2luQnVmZmVyID0gZGF0YVZpZXdcblxubW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciBKcy50ID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5IEpzLnQgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5cbiAgbGV0IG9mX2FycmF5QnVmZmVyIGFiID1cbiAgICBsZXQgdWludDggPSBuZXclanMgdWludDhBcnJheV9mcm9tQnVmZmVyIGFiIGluXG4gICAgb2ZfdWludDhBcnJheSB1aW50OFxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IGJ5dGVzID0gXCJjYW1sX2J5dGVzX29mX2FycmF5XCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogYnl0ZXMgLT4gdWludDhBcnJheSBKcy50ID0gXCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXCJcblxuICBsZXQgb2ZfYXJyYXlCdWZmZXIgYWIgPVxuICAgIGxldCB1aW50OCA9IG5ldyVqcyB1aW50OEFycmF5X2Zyb21CdWZmZXIgYWIgaW5cbiAgICBvZl91aW50OEFycmF5IHVpbnQ4XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGJsb2IgPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGJsb2IgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3dpdGhDb250ZW50VHlwZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gYmxvYiB0IG1ldGhcbmVuZFxuXG5sZXQgYmxvYl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Jsb2JcblxudHlwZSAnYSBtYWtlX2Jsb2IgPVxuICA/Y29udGVudFR5cGU6c3RyaW5nIC0+ID9lbmRpbmdzOlsgYFRyYW5zcGFyZW50IHwgYE5hdGl2ZSBdIC0+ICdhIC0+IGJsb2IgdFxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5sZXQgbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyA9XG4gIGxldCBvcHRpb25zID1cbiAgICBmaWx0ZXJfbWFwXG4gICAgICAoZnVuIChuYW1lLCB2KSAtPlxuICAgICAgICBtYXRjaCB2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gU29tZSAobmFtZSwgVW5zYWZlLmluamVjdCAoc3RyaW5nIHYpKSlcbiAgICAgIFsgXCJ0eXBlXCIsIGNvbnRlbnRUeXBlXG4gICAgICA7ICggXCJlbmRpbmdzXCJcbiAgICAgICAgLCBtYXRjaCBlbmRpbmdzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBgVHJhbnNwYXJlbnQgLT4gU29tZSBcInRyYW5zcGFyZW50XCJcbiAgICAgICAgICB8IFNvbWUgYE5hdGl2ZSAtPiBTb21lIFwibmF0aXZlXCIgKVxuICAgICAgXVxuICBpblxuICBtYXRjaCBvcHRpb25zIHdpdGhcbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBsIC0+IFVuc2FmZS5vYmogKEFycmF5Lm9mX2xpc3QgbClcblxubGV0IGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBhID1cbiAgbGV0IG9wdGlvbnMgPSBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzIGluXG4gIG5ldyVqcyBibG9iX2NvbnN0ciAoYXJyYXkgYSkgb3B0aW9uc1xuXG5sZXQgYmxvYl9mcm9tX3N0cmluZyA/Y29udGVudFR5cGUgP2VuZGluZ3MgcyA9XG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBbfCBzdHJpbmcgcyB8XVxuXG5sZXQgYmxvYl9mcm9tX2FueSA/Y29udGVudFR5cGUgP2VuZGluZ3MgbCA9XG4gIGxldCBsID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYGFycmF5QnVmZmVyIGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYGFycmF5QnVmZmVyVmlldyBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBzdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcylcbiAgICAgICAgfCBganNfc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCBzXG4gICAgICAgIHwgYGJsb2IgYiAtPiBVbnNhZmUuaW5qZWN0IGIpXG4gICAgICBsXG4gIGluXG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyAoQXJyYXkub2ZfbGlzdCBsKVxuXG5jbGFzcyB0eXBlIGZpbGUgPSBvYmplY3RcbiAgaW5oZXJpdCBibG9iXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RNb2RpZmllZERhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW4gZmlyZWZveCAzLjAtMy41IGZpbGUubmFtZSBpcyBub3QgYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIG5vbnN0YW5kYXJkIGZpbGVOYW1lIGluc3RlYWQgKilcbmNsYXNzIHR5cGUgZmlsZV9uYW1lX29ubHkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlTmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGZpbGVuYW1lIGZpbGUgPVxuICBsZXQgZmlsZSA6IGZpbGVfbmFtZV9vbmx5IHQgPSBKcy5VbnNhZmUuY29lcmNlIGZpbGUgaW5cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMubmFtZSB3aXRoXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5maWxlTmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW4ndCByZXRyaWV2ZSBmaWxlIG5hbWU6IG5vdCBpbXBsZW1lbnRlZFwiXG4gICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lKVxuICB8IFNvbWUgbmFtZSAtPiBuYW1lXG5cbnR5cGUgZmlsZV9hbnkgPSA8ID4gdFxuXG5sZXQgZG9jX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRG9jdW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGV4dGVybmFsIGpzb24gOiBmaWxlX2FueSAtPiAnYSBPcHQudCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgZG9jdW1lbnQgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBkb2NfY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBlbGVtZW50IGRvY3VtZW50IHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGJsb2IgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBibG9iX2NvbnN0ciB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6ICNibG9iIHQpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBzdHJpbmcgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIGUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGpzX3N0cmluZyB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhcnJheUJ1ZmZlciAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIFR5cGVkX2FycmF5LmFycmF5QnVmZmVyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0KVxuICAgIGVsc2UgSnMubnVsbFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbZmlsZV0gRG9tLm5vZGVMaXN0XG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9ncmVzc0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBsZW5ndGhDb21wdXRhYmxlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9hZGVkIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG90YWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJvZ3Jlc3NFdmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVuZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBFTVBUWVxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbmNsYXNzIHR5cGUgZmlsZVJlYWRlciA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCByZWFkQXNBcnJheUJ1ZmZlciA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0JpbmFyeVN0cmluZyA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHQgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0X3dpdGhFbmNvZGluZyA6ICNibG9iIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0RhdGFVUkwgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3VsdCA6IGZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBmaWxlRXJyb3IgdCByZWFkb25seV9wcm9wXG5cbiAgaW5oZXJpdCBwcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIFJlYWRlckV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0gZmlsZVJlYWRlciBwcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBsb2Fkc3RhcnQgPSBFdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBFdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IEV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IEV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgbG9hZGVuZCA9IEV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5sZXQgZmlsZVJlYWRlciA6IGZpbGVSZWFkZXIgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ZpbGVSZWFkZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjYW1sX2pzX29uX2llIDogdW5pdCAtPiBib29sIHQgPSBcImNhbWxfanNfb25faWVcIlxuXG5sZXQgb25JRSA9IEpzLnRvX2Jvb2wgKGNhbWxfanNfb25faWUgKCkpXG5cbmV4dGVybmFsIGh0bWxfZXNjYXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lc2NhcGVcIlxuXG5leHRlcm5hbCBkZWNvZGVfaHRtbF9lbnRpdGllcyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZW50aXRpZXNcIlxuXG5jbGFzcyB0eXBlIGNzc1N0eWxlRGVjbGFyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIHNldFByb3BlcnR5IDpcbiAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVZhbHVlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVByaW9yaXR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVQcm9wZXJ0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EZWxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EdXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRmlsbE1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25QbGF5U3RhdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQXR0YWNobWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFJlcGVhdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21TdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbGxhcHNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmFkaXVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2FwdGlvblNpZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGlwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlckluY3JlbWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlclJlc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NGbG9hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Vyc29yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc3BsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVtcHR5Q2VsbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRGYW1pbHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTaXplIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRWYXJpYW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250V2VpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxldHRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4SGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3BhY2l0eSA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZU9mZnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0JvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0xlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1RvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQWZ0ZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0JlZm9yZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9pbnRlckV2ZW50cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJsZUxheW91dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QW5jaG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0RGVjb3JhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEluZGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dFRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZlcnRpY2FsQWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpc2liaWxpdHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdoaXRlU3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3b3JkU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgekluZGV4IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiKSBEb20uZXZlbnRfbGlzdGVuZXJcblxudHlwZSBtb3VzZV9idXR0b24gPVxuICB8IE5vX2J1dHRvblxuICB8IExlZnRfYnV0dG9uXG4gIHwgTWlkZGxlX2J1dHRvblxuICB8IFJpZ2h0X2J1dHRvblxuXG50eXBlIGRlbHRhX21vZGUgPVxuICB8IERlbHRhX3BpeGVsXG4gIHwgRGVsdGFfbGluZVxuICB8IERlbHRhX3BhZ2VcblxuY2xhc3MgdHlwZSBldmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZXZlbnRcbmVuZFxuXG5hbmQgWydhXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50LCAnYV0gRG9tLmN1c3RvbUV2ZW50XG5lbmRcblxuYW5kIGZvY3VzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1dHRvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogbW91c2VfYnV0dG9uIG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyb21FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b0VsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGtleWJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhckNvZGUgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5Q29kZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE1vZGlmaWVyU3RhdGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBrZXlJZGVudGlmaWVyIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2V3aGVlbEV2ZW50ID0gb2JqZWN0XG4gICgqIEFsbCBtb2Rlcm4gYnJvd3NlcnMgKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHdoZWVsRGVsdGEgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFaIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YU1vZGUgOiBkZWx0YV9tb2RlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VTY3JvbGxFdmVudCA9IG9iamVjdFxuICAoKiBGaXJlZm94ICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBheGlzIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9IT1JJWk9OVEFMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRJQ0FMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYW5nZWRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IHRvdWNoIHQgb3B0ZGVmIG1ldGhcbmVuZFxuXG5hbmQgdG91Y2ggPSBvYmplY3RcbiAgbWV0aG9kIGlkZW50aWZpZXIgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdWJtaXRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN1Ym1pdHRlciA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkcmFnRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRhdGFUcmFuc2ZlciA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpcGJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBjbGlwYm9hcmREYXRhIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkYXRhVHJhbnNmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGRyb3BFZmZlY3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVmZmVjdEFsbG93ZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHlwZXMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkRWxlbWVudCA6IGVsZW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YV9hbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXREcmFnSW1hZ2UgOiBlbGVtZW50IHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25jbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZGJsY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlZG93biA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2V1cCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdmVyIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW1vdmUgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3V0IDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlwcmVzcyA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5ZG93biA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5dXAgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNjcm9sbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndoZWVsIDogKCdzZWxmIHQsIG1vdXNld2hlZWxFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdzdGFydCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW5kIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbnRlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnb3ZlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnbGVhdmUgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZyA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcm9wIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbnN0YXJ0IDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uZW5kIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uaXRlcmF0aW9uIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uY2FuY2VsIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnJ1biA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmVuZCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uY2FuY2VsIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmdvdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvc3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZW50ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmNhbmNlbCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZG93biA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybGVhdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm1vdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm91dCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3ZlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVydXAgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc3BhdGNoRXZlbnQgOiBldmVudCB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuYW5kIHBvcFN0YXRlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBwb2ludGVyRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHBvaW50ZXJJZCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YW5nZW50aWFsUHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRYIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFkgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0d2lzdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc1ByaW1hcnkgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXJsIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9yYWdlQXJlYSA6IHN0b3JhZ2UgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBoYXNoQ2hhbmdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBvbGRVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgYW5pbWF0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdHJhbnNpdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcHJvcGVydHlOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbWVkaWFFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5lbmRcblxuYW5kIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNvdXJjZSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbm9kZVNlbGVjdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3JBbGwgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcbmVuZFxuXG5hbmQgdG9rZW5MaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgYWRkIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0b2dnbGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZmllciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NMaXN0IDogdG9rZW5MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZXN0IDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHN0eWxlIDogY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHByb3BcblxuICBtZXRob2QgaW5uZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRDb250ZW50IDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5uZXJUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0UGFyZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Nyb2xsTGVmdCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFRvcCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsSGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgZ2V0Q2xpZW50UmVjdHMgOiBjbGllbnRSZWN0TGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IDogY2xpZW50UmVjdCB0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsSW50b1ZpZXcgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuYW5kIGNsaWVudFJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHRvcCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmlnaHQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVmdCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0TGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBjbGllbnRSZWN0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gRG9tLm5vX2hhbmRsZXJcblxubGV0IGhhbmRsZXIgPSBEb20uaGFuZGxlclxuXG5sZXQgZnVsbF9oYW5kbGVyID0gRG9tLmZ1bGxfaGFuZGxlclxuXG5sZXQgaW52b2tlX2hhbmRsZXIgPSBEb20uaW52b2tlX2hhbmRsZXJcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gJ2EgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcImNhbmNlbFwiXG5cbiAgbGV0IGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJjbGlja1wiXG5cbiAgbGV0IGNsb3NlID0gRG9tLkV2ZW50Lm1ha2UgXCJjbG9zZVwiXG5cbiAgbGV0IGNvcHkgPSBEb20uRXZlbnQubWFrZSBcImNvcHlcIlxuXG4gIGxldCBjdXQgPSBEb20uRXZlbnQubWFrZSBcImN1dFwiXG5cbiAgbGV0IHBhc3RlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXN0ZVwiXG5cbiAgbGV0IGRibGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJkYmxjbGlja1wiXG5cbiAgbGV0IG1vdXNlZG93biA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vkb3duXCJcblxuICBsZXQgbW91c2V1cCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V1cFwiXG5cbiAgbGV0IG1vdXNlb3ZlciA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdmVyXCJcblxuICBsZXQgbW91c2Vtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW1vdmVcIlxuXG4gIGxldCBtb3VzZW91dCA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdXRcIlxuXG4gIGxldCBrZXlwcmVzcyA9IERvbS5FdmVudC5tYWtlIFwia2V5cHJlc3NcIlxuXG4gIGxldCBrZXlkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlkb3duXCJcblxuICBsZXQga2V5dXAgPSBEb20uRXZlbnQubWFrZSBcImtleXVwXCJcblxuICBsZXQgbW91c2V3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V3aGVlbFwiXG5cbiAgbGV0IHdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJ3aGVlbFwiXG5cbiAgbGV0IF9ET01Nb3VzZVNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwiRE9NTW91c2VTY3JvbGxcIlxuXG4gIGxldCB0b3VjaHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaHN0YXJ0XCJcblxuICBsZXQgdG91Y2htb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaG1vdmVcIlxuXG4gIGxldCB0b3VjaGVuZCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hlbmRcIlxuXG4gIGxldCB0b3VjaGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hjYW5jZWxcIlxuXG4gIGxldCBkcmFnc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdzdGFydFwiXG5cbiAgbGV0IGRyYWdlbmQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbmRcIlxuXG4gIGxldCBkcmFnZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbnRlclwiXG5cbiAgbGV0IGRyYWdvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnb3ZlclwiXG5cbiAgbGV0IGRyYWdsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2xlYXZlXCJcblxuICBsZXQgZHJhZyA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ1wiXG5cbiAgbGV0IGRyb3AgPSBEb20uRXZlbnQubWFrZSBcImRyb3BcIlxuXG4gIGxldCBoYXNoY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICBsZXQgY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGFuZ2VcIlxuXG4gIGxldCBpbnB1dCA9IERvbS5FdmVudC5tYWtlIFwiaW5wdXRcIlxuXG4gIGxldCB0aW1ldXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1ldXBkYXRlXCJcblxuICBsZXQgc3VibWl0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzdWJtaXRcIlxuXG4gIGxldCBzY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcInNjcm9sbFwiXG5cbiAgbGV0IGZvY3VzID0gRG9tLkV2ZW50Lm1ha2UgXCJmb2N1c1wiXG5cbiAgbGV0IGJsdXIgPSBEb20uRXZlbnQubWFrZSBcImJsdXJcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJ1bmxvYWRcIlxuXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcImJlZm9yZXVubG9hZFwiXG5cbiAgbGV0IHJlc2l6ZSA9IERvbS5FdmVudC5tYWtlIFwicmVzaXplXCJcblxuICBsZXQgb3JpZW50YXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcIm9yaWVudGF0aW9uY2hhbmdlXCJcblxuICBsZXQgcG9wc3RhdGUgPSBEb20uRXZlbnQubWFrZSBcInBvcHN0YXRlXCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgc2VsZWN0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWxlY3RcIlxuXG4gIGxldCBvbmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9ubGluZVwiXG5cbiAgbGV0IG9mZmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9mZmxpbmVcIlxuXG4gIGxldCBjaGVja2luZyA9IERvbS5FdmVudC5tYWtlIFwiY2hlY2tpbmdcIlxuXG4gIGxldCBub3VwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwibm91cGRhdGVcIlxuXG4gIGxldCBkb3dubG9hZGluZyA9IERvbS5FdmVudC5tYWtlIFwiZG93bmxvYWRpbmdcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCB1cGRhdGVyZWFkeSA9IERvbS5FdmVudC5tYWtlIFwidXBkYXRlcmVhZHlcIlxuXG4gIGxldCBjYWNoZWQgPSBEb20uRXZlbnQubWFrZSBcImNhY2hlZFwiXG5cbiAgbGV0IG9ic29sZXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJvYnNvbGV0ZVwiXG5cbiAgbGV0IGRvbUNvbnRlbnRMb2FkZWQgPSBEb20uRXZlbnQubWFrZSBcIkRPTUNvbnRlbnRMb2FkZWRcIlxuXG4gIGxldCBhbmltYXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uc3RhcnRcIlxuXG4gIGxldCBhbmltYXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmVuZFwiXG5cbiAgbGV0IGFuaW1hdGlvbml0ZXJhdGlvbiA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uaXRlcmF0aW9uXCJcblxuICBsZXQgYW5pbWF0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25jYW5jZWxcIlxuXG4gIGxldCB0cmFuc2l0aW9ucnVuID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9ucnVuXCJcblxuICBsZXQgdHJhbnNpdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uc3RhcnRcIlxuXG4gIGxldCB0cmFuc2l0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uZW5kXCJcblxuICBsZXQgdHJhbnNpdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmNhbmNlbFwiXG5cbiAgbGV0IGNhbnBsYXkgPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXlcIlxuXG4gIGxldCBjYW5wbGF5dGhyb3VnaCA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheXRocm91Z2hcIlxuXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiZHVyYXRpb25jaGFuZ2VcIlxuXG4gIGxldCBlbXB0aWVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbXB0aWVkXCJcblxuICBsZXQgZW5kZWQgPSBEb20uRXZlbnQubWFrZSBcImVuZGVkXCJcblxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImdvdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbG9hZGVkZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkZGF0YVwiXG5cbiAgbGV0IGxvYWRlZG1ldGFkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRtZXRhZGF0YVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBtZXNzYWdlID0gRG9tLkV2ZW50Lm1ha2UgXCJtZXNzYWdlXCJcblxuICBsZXQgcGF1c2UgPSBEb20uRXZlbnQubWFrZSBcInBhdXNlXCJcblxuICBsZXQgcGxheSA9IERvbS5FdmVudC5tYWtlIFwicGxheVwiXG5cbiAgbGV0IHBsYXlpbmcgPSBEb20uRXZlbnQubWFrZSBcInBsYXlpbmdcIlxuXG4gIGxldCBwb2ludGVyZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJlbnRlclwiXG5cbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJjYW5jZWxcIlxuXG4gIGxldCBwb2ludGVyZG93biA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmRvd25cIlxuXG4gIGxldCBwb2ludGVybGVhdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJsZWF2ZVwiXG5cbiAgbGV0IHBvaW50ZXJtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybW92ZVwiXG5cbiAgbGV0IHBvaW50ZXJvdXQgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdXRcIlxuXG4gIGxldCBwb2ludGVyb3ZlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm92ZXJcIlxuXG4gIGxldCBwb2ludGVydXAgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJ1cFwiXG5cbiAgbGV0IHJhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJhdGVjaGFuZ2VcIlxuXG4gIGxldCBzZWVrZWQgPSBEb20uRXZlbnQubWFrZSBcInNlZWtlZFwiXG5cbiAgbGV0IHNlZWtpbmcgPSBEb20uRXZlbnQubWFrZSBcInNlZWtpbmdcIlxuXG4gIGxldCBzdGFsbGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJzdGFsbGVkXCJcblxuICBsZXQgc3VzcGVuZCA9IERvbS5FdmVudC5tYWtlIFwic3VzcGVuZFwiXG5cbiAgbGV0IHZvbHVtZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwidm9sdW1lY2hhbmdlXCJcblxuICBsZXQgd2FpdGluZyA9IERvbS5FdmVudC5tYWtlIFwid2FpdGluZ1wiXG5cbiAgbGV0IG1ha2UgPSBEb20uRXZlbnQubWFrZVxuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSBEb20uZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IERvbS5yZW1vdmVFdmVudExpc3RlbmVyXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA9IERvbS5jcmVhdGVDdXN0b21FdmVudFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gY29sbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIG5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGh0bWxFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBwcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGlua0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Jvc3NvcmlnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtZXRhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHR0cEVxdWl2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY2hlbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBiYXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJvZHlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGZvcm1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBlbGVtZW50cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0Q2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbmN0eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfbWV0aG9kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1Ym1pdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXNldCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbnN1Ym1pdCA6ICgnc2VsZiB0LCBzdWJtaXRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0R3JvdXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGxhYmVsIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG9wdEdyb3VwRWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0U2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzZWxlY3RFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZEluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wdGlvbnMgOiBvcHRpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBhZGQgOiAjb3B0R3JvdXBFbGVtZW50IHQgLT4gI29wdEdyb3VwRWxlbWVudCB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW5wdXRFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmYXVsdENoZWNrZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGVja2VkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhMZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRleHRBcmVhRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29scyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJ1dHRvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxhYmVsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodG1sRm9yIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZmllbGRTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGVnZW5kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdUxpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG9MaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbGlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRpYWxvZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3JldHVyblZhbHVlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9wZW5fIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcmV0dXJuVmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNob3cgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hvd01vZGFsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2FuY2VsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jbG9zZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBkaXZFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHBhcmFncmFwaEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZGluZ0VsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcXVvdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJlRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBickVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaHJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG1vZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGVUaW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYW5jaG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvd25sb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbWFnZUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaXNNYXAgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxXaWR0aCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsSGVpZ2h0IDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbXBsZXRlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXJjaGl2ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZUJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWNsYXJlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFuZGJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwYXJhbUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXJlYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vSHJlZiA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1hcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFyZWFzIDogYXJlYUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXN5bmMgOiBib29sIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZW1iZWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDZWxsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2VsbEluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJiciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sU3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlYWRlcnMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd1NwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY29wZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVSb3dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCByb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlY3Rpb25Sb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNlbGxzIDogdGFibGVDZWxsRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydENlbGwgOiBpbnQgLT4gdGFibGVDZWxsRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2VsbCA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ29sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVNlY3Rpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDYXB0aW9uRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSB0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0SGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0Qm9kaWVzIDogdGFibGVTZWN0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsUGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZyYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBydWxlcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VtbWFyeSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZVRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEhlYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVURm9vdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2FwdGlvbiA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0aW1lUmFuZ2VzID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGVuZF8gOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbnR5cGUgbmV0d29ya1N0YXRlID1cbiAgfCBORVRXT1JLX0VNUFRZXG4gIHwgTkVUV09SS19JRExFXG4gIHwgTkVUV09SS19MT0FESU5HXG4gIHwgTkVUV09SS19OT19TT1VSQ0VcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBIQVZFX05PVEhJTkdcbiAgfCBIQVZFX01FVEFEQVRBXG4gIHwgSEFWRV9DVVJSRU5UX0RBVEFcbiAgfCBIQVZFX0ZVVFVSRV9EQVRBXG4gIHwgSEFWRV9FTk9VR0hfREFUQVxuXG4oKiBodHRwOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9yZWZfYXZfZG9tLmFzcCAqKVxuKCogb25seSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXIuIChJRTkrKSAqKVxuY2xhc3MgdHlwZSBtZWRpYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhblBsYXlUeXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBsb2FkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBsYXkgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYXV0b3BsYXkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRyb2xzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY3VycmVudFNyYyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRpbWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvb3AgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYWdyb3VwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtdXRlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGUgOiBuZXR3b3JrU3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXVzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF5YmFja1JhdGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHBsYXllZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVrYWJsZSA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWtpbmcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZvbHVtZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgb25jYW5wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jYW5wbGF5dGhyb3VnaCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHVyYXRpb25jaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVtcHRpZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVuZGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRtZXRhZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wYXVzZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheWluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucmF0ZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2VkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVraW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdGFsbGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdXNwZW5kIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb252b2x1bWVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndhaXRpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXVkaW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxuY2xhc3MgdHlwZSB2aWRlb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG50eXBlIGNvbnRleHQgPSBqc19zdHJpbmcgdFxuXG5sZXQgXzJkXyA9IEpzLnN0cmluZyBcIjJkXCJcblxudHlwZSBjYW52YXNQYXR0ZXJuXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0b0RhdGFVUkwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZV9jb21wcmVzc2lvbiA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEID0gb2JqZWN0XG4gIG1ldGhvZCBjYW52YXMgOiBjYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzYXZlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3RvcmUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnbG9iYWxBbHBoYSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlTGluZWFyR3JhZGllbnQgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYWRpYWxHcmFkaWVudCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm4gOiBpbWFnZUVsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tVmlkZW8gOiB2aWRlb0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVDYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVKb2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaXRlckxpbWl0IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRYIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRZIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dCbHVyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXJSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmVnaW5QYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb3ZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbGluZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHF1YWRyYXRpY0N1cnZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmV6aWVyQ3VydmVUbyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyY1RvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVsbGlwc2UgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaXAgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNQb2ludEluUGF0aCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdGb2N1c1JpbmcgOiAjZWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRCYXNlbGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbFRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFRleHRfd2l0aFdpZHRoIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dF93aXRoV2lkdGggOlxuICAgIGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtZWFzdXJlVGV4dCA6IGpzX3N0cmluZyB0IC0+IHRleHRNZXRyaWNzIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2UgOiBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX3dpdGhTaXplIDpcbiAgICBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGwgOlxuICAgICAgIGltYWdlRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXNXaXRoU2l6ZSA6XG4gICAgY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21DYW52YXMgOlxuICAgICAgIGNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhWaWRlbyA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoU2l6ZSA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbVZpZGVvIDpcbiAgICAgICB2aWRlb0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlSW1hZ2VEYXRhIDogaW50IC0+IGludCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEltYWdlRGF0YSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgcHV0SW1hZ2VEYXRhIDogaW1hZ2VEYXRhIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc0dyYWRpZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBhZGRDb2xvclN0b3AgOiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgdGV4dE1ldHJpY3MgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBpbWFnZURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YSA6IGNhbnZhc1BpeGVsQXJyYXkgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNhbnZhc1BpeGVsQXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuZXh0ZXJuYWwgcGl4ZWxfZ2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfanNfZ2V0XCJcblxuZXh0ZXJuYWwgcGl4ZWxfc2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG5jbGFzcyB0eXBlIHJhbmdlID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0Q29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRTdGFydCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZUNvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lQ29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZXh0cmFjdENvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNvbnRlbnRzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdXJyb3VuZENvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG4oKiogSW5mb3JtYXRpb24gb24gY3VycmVudCBzZWxlY3Rpb24gKilcbmNsYXNzIHR5cGUgc2VsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBhbmNob3JOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvck9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c09mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzQ29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VDb3VudCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJhbmdlQXQgOiBpbnQgLT4gcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleHRlbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbW9kaWZ5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9TdGFydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdEFsbENoaWxkcmVuIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWRkUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUFsbFJhbmdlcyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcm9tRG9jdW1lbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udGFpbnNOb2RlIDogRG9tLm5vZGUgdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWQgOiBoZWFkRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgYm9keSA6IGJvZHlFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiBodG1sRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW1hZ2VzIDogaW1hZ2VFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxldHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmtzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb3JtcyA6IGZvcm1FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvcnMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVzaWduTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3Blbl8gOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgd3JpdGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXhlY0NvbW1hbmQgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGFjdGl2ZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlkZGVuIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25mdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG50eXBlIGludGVydmFsX2lkXG5cbnR5cGUgdGltZW91dF9pZFxuXG50eXBlIGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG5cbmNsYXNzIHR5cGUgbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0bmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9ydCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGF0aG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlYXJjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGFzaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXNzaWduIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2UgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVsb2FkIDogdW5pdCBtZXRoXG5lbmRcblxubGV0IGxvY2F0aW9uX29yaWdpbiAobG9jIDogbG9jYXRpb24gdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGxvYyMjLm9yaWdpblxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCBwcm90b2NvbCA9IGxvYyMjLnByb3RvY29sIGluXG4gICAgICBsZXQgaG9zdG5hbWUgPSBsb2MjIy5ob3N0bmFtZSBpblxuICAgICAgbGV0IHBvcnQgPSBsb2MjIy5wb3J0IGluXG4gICAgICBpZiBwcm90b2NvbCMjLmxlbmd0aCA9IDAgJiYgaG9zdG5hbWUjIy5sZW5ndGggPSAwXG4gICAgICB0aGVuIEpzLnN0cmluZyBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBvcmlnaW4gPSBwcm90b2NvbCMjY29uY2F0XzIgKEpzLnN0cmluZyBcIi8vXCIpIGhvc3RuYW1lIGluXG4gICAgICAgIGlmIHBvcnQjIy5sZW5ndGggPiAwIHRoZW4gb3JpZ2luIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiOlwiKSBsb2MjIy5wb3J0IGVsc2Ugb3JpZ2luKVxuICAgIChmdW4gbyAtPiBvKVxuXG5jbGFzcyB0eXBlIGhpc3RvcnkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdvIDogaW50IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmFjayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3J3YXJkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB1bmRvTWFuYWdlciA9IG9iamVjdCBlbmRcblxuY2xhc3MgdHlwZSBuYXZpZ2F0b3IgPSBvYmplY3RcbiAgbWV0aG9kIGFwcENvZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBWZXJzaW9uIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWVFbmFibGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25MaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhdGZvcm0gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZlbmRvciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckFnZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJMYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heFRvdWNoUG9pbnRzIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmVlbiA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXBwbGljYXRpb25DYWNoZSA9IG9iamVjdFxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXBkYXRlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN3YXBDYWNoZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNoZWNraW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm5vdXBkYXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmRvd25sb2FkaW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVwZGF0ZXJlYWR5IDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNhY2hlZCA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vYnNvbGV0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuY2xhc3MgdHlwZSBfVVJMID0gb2JqZWN0XG4gIG1ldGhvZCBjcmVhdGVPYmplY3RVUkwgOiAjRmlsZS5ibG9iIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXZva2VPYmplY3RVUkwgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHdpbmRvdyA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGRvY3VtZW50IDogZG9jdW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxpY2F0aW9uQ2FjaGUgOiBhcHBsaWNhdGlvbkNhY2hlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaXN0b3J5IDogaGlzdG9yeSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdW5kb01hbmFnZXIgOiB1bmRvTWFuYWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF2aWdhdG9yIDogbmF2aWdhdG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTZWxlY3Rpb24gOiBzZWxlY3Rpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3AgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGwgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxCeSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlc3Npb25TdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2FsU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJhbWVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHdpbmRvdyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGFsZXJ0IDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmZpcm0gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBwcm9tcHQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBwcmludCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnRlcnZhbCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IGludGVydmFsX2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJJbnRlcnZhbCA6IGludGVydmFsX2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lb3V0IDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gdGltZW91dF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyVGltZW91dCA6IHRpbWVvdXRfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVlc3RBbmltYXRpb25GcmFtZSA6XG4gICAgKG51bWJlcl90IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIG1ldGhcblxuICBtZXRob2QgY2FuY2VsQW5pbWF0aW9uRnJhbWUgOiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NyZWVuIDogc2NyZWVuIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlIDogI2VsZW1lbnQgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlX3BzZXVkb0VsdCA6XG4gICAgI2VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBhdG9iIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBidG9hIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25iZWZvcmV1bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucmVzaXplIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub3JpZW50YXRpb25jaGFuZ2UgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wb3BzdGF0ZSA6ICh3aW5kb3cgdCwgcG9wU3RhdGVFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaGFzaGNoYW5nZSA6ICh3aW5kb3cgdCwgaGFzaENoYW5nZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vbmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub2ZmbGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgX1VSTCA6IF9VUkwgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRldmljZVBpeGVsUmF0aW8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdpbmRvdyA6IHdpbmRvdyB0ID0gSnMuVW5zYWZlLmdsb2JhbFxuXG4oKiBUaGUgdG9wbGV2ZWwgb2JqZWN0ICopXG5cbmxldCBkb2N1bWVudCA9IHdpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfZXhuIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiZ2V0RWxlbWVudEJ5SWRfZXhuOiAlUyBub3QgZm91bmRcIiBpZCkpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX29wdCBpZCA9IEpzLk9wdC50b19vcHRpb24gKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2NvZXJjZSBpZCBjb2VyY2UgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBOb25lKVxuICAgIChmdW4gZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2UgZSkpXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGZyYW1lU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29scyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub1Jlc2l6ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpRnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRXaW5kb3cgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqKiopXG5cbigqWFhYIFNob3VsZCBwcm92aWRlIGNyZWF0aW9uIGZ1bmN0aW9ucyBhIGxhIGxhYmxndGsuLi4gKilcblxubGV0IG9wdF9pdGVyIHggZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHYgLT4gZiB2XG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlRWxlbWVudFN5bnRheCA9IHJlZiBgVW5rbm93blxuXG5sZXQgcmVjIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdCA9XG4gIGlmIFBvbHkuKF90eXBlID0gTm9uZSkgJiYgUG9seS4obmFtZSA9IE5vbmUpXG4gIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KVxuICBlbHNlXG4gICAgbWF0Y2ggIWNyZWF0ZUVsZW1lbnRTeW50YXggd2l0aFxuICAgIHwgYFN0YW5kYXJkIC0+XG4gICAgICAgIGxldCByZXMgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpIGluXG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPiByZXMjIy5fdHlwZSA6PSB0KTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT4gcmVzIyMubmFtZSA6PSBuKTtcbiAgICAgICAgcmVzXG4gICAgfCBgRXh0ZW5kZWQgLT5cbiAgICAgICAgbGV0IGEgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgICAgICAgaWdub3JlIChhIyNwdXNoXzIgKEpzLnN0cmluZyBcIjxcIikgKEpzLnN0cmluZyBlbHQpKTtcbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIHR5cGU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgdCkgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgbmFtZT1cXFwiXCIpIChodG1sX2VzY2FwZSBuKSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBpZ25vcmUgKGEjI3B1c2ggKEpzLnN0cmluZyBcIj5cIikpO1xuICAgICAgICBKcy5VbnNhZmUuY29lcmNlIChkb2MjI2NyZWF0ZUVsZW1lbnQgKGEjI2pvaW4gKEpzLnN0cmluZyBcIlwiKSkpXG4gICAgfCBgVW5rbm93biAtPlxuICAgICAgICBjcmVhdGVFbGVtZW50U3ludGF4IDo9XG4gICAgICAgICAgaWYgdHJ5XG4gICAgICAgICAgICAgICBsZXQgZWwgOiBpbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBcIjxpbnB1dCBuYW1lPVxcXCJ4XFxcIj5cIikpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgSnMuZXF1YWxzIGVsIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyBcImlucHV0XCIpXG4gICAgICAgICAgICAgICAmJiBKcy5lcXVhbHMgZWwjIy5uYW1lIChKcy5zdHJpbmcgXCJ4XCIpXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGZhbHNlXG4gICAgICAgICAgdGhlbiBgRXh0ZW5kZWRcbiAgICAgICAgICBlbHNlIGBTdGFuZGFyZDtcbiAgICAgICAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0XG5cbmxldCBjcmVhdGVIdG1sIGRvYyA6IGh0bWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImh0bWxcIlxuXG5sZXQgY3JlYXRlSGVhZCBkb2MgOiBoZWFkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoZWFkXCJcblxubGV0IGNyZWF0ZUxpbmsgZG9jIDogbGlua0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlua1wiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlTWV0YSBkb2MgOiBtZXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhXCJcblxubGV0IGNyZWF0ZUJhc2UgZG9jIDogYmFzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmFzZVwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlQm9keSBkb2MgOiBib2R5RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJib2R5XCJcblxubGV0IGNyZWF0ZUZvcm0gZG9jIDogZm9ybUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9ybVwiXG5cbmxldCBjcmVhdGVPcHRncm91cCBkb2MgOiBvcHRHcm91cEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0Z3JvdXBcIlxuXG5sZXQgY3JlYXRlT3B0aW9uIGRvYyA6IG9wdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0aW9uXCJcblxubGV0IGNyZWF0ZVNlbGVjdCA/X3R5cGUgP25hbWUgZG9jIDogc2VsZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJzZWxlY3RcIlxuXG5sZXQgY3JlYXRlSW5wdXQgP190eXBlID9uYW1lIGRvYyA6IGlucHV0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJpbnB1dFwiXG5cbmxldCBjcmVhdGVUZXh0YXJlYSA/X3R5cGUgP25hbWUgZG9jIDogdGV4dEFyZWFFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInRleHRhcmVhXCJcblxubGV0IGNyZWF0ZUJ1dHRvbiA/X3R5cGUgP25hbWUgZG9jIDogYnV0dG9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJidXR0b25cIlxuXG5sZXQgY3JlYXRlTGFiZWwgZG9jIDogbGFiZWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxhYmVsXCJcblxubGV0IGNyZWF0ZUZpZWxkc2V0IGRvYyA6IGZpZWxkU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWVsZHNldFwiXG5cbmxldCBjcmVhdGVMZWdlbmQgZG9jIDogbGVnZW5kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsZWdlbmRcIlxuXG5sZXQgY3JlYXRlVWwgZG9jIDogdUxpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVsXCJcblxubGV0IGNyZWF0ZU9sIGRvYyA6IG9MaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvbFwiXG5cbmxldCBjcmVhdGVEbCBkb2MgOiBkTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGxcIlxuXG5sZXQgY3JlYXRlTGkgZG9jIDogbGlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpXCJcblxubGV0IGNyZWF0ZURpYWxvZyBkb2MgOiBkaWFsb2dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpYWxvZ1wiXG5cbmxldCBjcmVhdGVEaXYgZG9jIDogZGl2RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkaXZcIlxuXG5sZXQgY3JlYXRlRW1iZWQgZG9jIDogZW1iZWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVtYmVkXCJcblxubGV0IGNyZWF0ZVAgZG9jIDogcGFyYWdyYXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwXCJcblxubGV0IGNyZWF0ZUgxIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgxXCJcblxubGV0IGNyZWF0ZUgyIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgyXCJcblxubGV0IGNyZWF0ZUgzIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgzXCJcblxubGV0IGNyZWF0ZUg0IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg0XCJcblxubGV0IGNyZWF0ZUg1IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg1XCJcblxubGV0IGNyZWF0ZUg2IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg2XCJcblxubGV0IGNyZWF0ZVEgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInFcIlxuXG5sZXQgY3JlYXRlQmxvY2txdW90ZSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmxvY2txdW90ZVwiXG5cbmxldCBjcmVhdGVQcmUgZG9jIDogcHJlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwcmVcIlxuXG5sZXQgY3JlYXRlQnIgZG9jIDogYnJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJyXCJcblxubGV0IGNyZWF0ZUhyIGRvYyA6IGhyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoclwiXG5cbmxldCBjcmVhdGVJbnMgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbnNcIlxuXG5sZXQgY3JlYXRlRGVsIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVsXCJcblxubGV0IGNyZWF0ZUEgZG9jIDogYW5jaG9yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUltZyBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1nXCJcblxubGV0IGNyZWF0ZU9iamVjdCBkb2MgOiBvYmplY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9iamVjdFwiXG5cbmxldCBjcmVhdGVQYXJhbSBkb2MgOiBwYXJhbUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGFyYW1cIlxuXG5sZXQgY3JlYXRlTWFwIGRvYyA6IG1hcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFwXCJcblxubGV0IGNyZWF0ZUFyZWEgZG9jIDogYXJlYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXJlYVwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlVGFibGUgZG9jIDogdGFibGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRhYmxlXCJcblxubGV0IGNyZWF0ZUNhcHRpb24gZG9jIDogdGFibGVDYXB0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYXB0aW9uXCJcblxubGV0IGNyZWF0ZUNvbCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sXCJcblxubGV0IGNyZWF0ZUNvbGdyb3VwIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xncm91cFwiXG5cbmxldCBjcmVhdGVUaGVhZCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoZWFkXCJcblxubGV0IGNyZWF0ZVRmb290IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGZvb3RcIlxuXG5sZXQgY3JlYXRlVGJvZHkgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Ym9keVwiXG5cbmxldCBjcmVhdGVUciBkb2MgOiB0YWJsZVJvd0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJcIlxuXG5sZXQgY3JlYXRlVGggZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aFwiXG5cbmxldCBjcmVhdGVUZCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRkXCJcblxubGV0IGNyZWF0ZVN1YiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1YlwiXG5cbmxldCBjcmVhdGVTdXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdXBcIlxuXG5sZXQgY3JlYXRlU3BhbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNwYW5cIlxuXG5sZXQgY3JlYXRlVHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ0dFwiXG5cbmxldCBjcmVhdGVJIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiaVwiXG5cbmxldCBjcmVhdGVCIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYlwiXG5cbmxldCBjcmVhdGVCaWcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiaWdcIlxuXG5sZXQgY3JlYXRlU21hbGwgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzbWFsbFwiXG5cbmxldCBjcmVhdGVFbSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImVtXCJcblxubGV0IGNyZWF0ZVN0cm9uZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN0cm9uZ1wiXG5cbmxldCBjcmVhdGVDaXRlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY2l0ZVwiXG5cbmxldCBjcmVhdGVEZm4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZm5cIlxuXG5sZXQgY3JlYXRlQ29kZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNvZGVcIlxuXG5sZXQgY3JlYXRlU2FtcCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNhbXBcIlxuXG5sZXQgY3JlYXRlS2JkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwia2JkXCJcblxubGV0IGNyZWF0ZVZhciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInZhclwiXG5cbmxldCBjcmVhdGVBYmJyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWJiclwiXG5cbmxldCBjcmVhdGVEZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRkXCJcblxubGV0IGNyZWF0ZUR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZHRcIlxuXG5sZXQgY3JlYXRlTm9zY3JpcHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJub3NjcmlwdFwiXG5cbmxldCBjcmVhdGVBZGRyZXNzIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWRkcmVzc1wiXG5cbmxldCBjcmVhdGVGcmFtZXNldCBkb2MgOiBmcmFtZVNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVzZXRcIlxuXG5sZXQgY3JlYXRlRnJhbWUgZG9jIDogZnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lXCJcblxubGV0IGNyZWF0ZUlmcmFtZSBkb2MgOiBpRnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImlmcmFtZVwiXG5cbmxldCBjcmVhdGVBdWRpbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXVkaW9cIlxuXG5sZXQgY3JlYXRlVmlkZW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZGVvXCJcblxuZXhjZXB0aW9uIENhbnZhc19ub3RfYXZhaWxhYmxlXG5cbmxldCBjcmVhdGVDYW52YXMgZG9jIDogY2FudmFzRWxlbWVudCB0ID1cbiAgbGV0IGMgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhbnZhc1wiIGluXG4gIGlmIG5vdCAoT3B0LnRlc3QgYyMjLmdldENvbnRleHQpIHRoZW4gcmFpc2UgQ2FudmFzX25vdF9hdmFpbGFibGU7XG4gIGNcblxubGV0IGh0bWxfZWxlbWVudCA6IGh0bWxFbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9IVE1MRWxlbWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgOiAjRG9tLm5vZGUgSnMudCAtPiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgaHRtbF9lbGVtZW50KSlcbiAgICB0aGVuXG4gICAgICAoKiBpZSA8IDkgZG9lcyBub3QgaGF2ZSBIVE1MRWxlbWVudDogd2UgaGF2ZSB0byBjaGVhdCB0byBjaGVja1xuICAgICAgICAgdGhhdCBzb21ldGhpbmcgaXMgYW4gaHRtbCBlbGVtZW50ICopXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIChKcy5VbnNhZmUuY29lcmNlIGUpIyMuaW5uZXJIVE1MKSlcbiAgICAgIHRoZW4gSnMubnVsbFxuICAgICAgZWxzZSBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIEpzLmluc3RhbmNlb2YgZSBodG1sX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgdGFnIChlIDogI2VsZW1lbnQgdCkgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA9IHVuc2FmZUNvZXJjZSBcImFcIiBlXG5cbiAgbGV0IGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcImFyZWFcIiBlXG5cbiAgbGV0IGJhc2UgZSA9IHVuc2FmZUNvZXJjZSBcImJhc2VcIiBlXG5cbiAgbGV0IGJsb2NrcXVvdGUgZSA9IHVuc2FmZUNvZXJjZSBcImJsb2NrcXVvdGVcIiBlXG5cbiAgbGV0IGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcImJvZHlcIiBlXG5cbiAgbGV0IGJyIGUgPSB1bnNhZmVDb2VyY2UgXCJiclwiIGVcblxuICBsZXQgYnV0dG9uIGUgPSB1bnNhZmVDb2VyY2UgXCJidXR0b25cIiBlXG5cbiAgbGV0IGNhbnZhcyBlID0gdW5zYWZlQ29lcmNlIFwiY2FudmFzXCIgZVxuXG4gIGxldCBjYXB0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJjYXB0aW9uXCIgZVxuXG4gIGxldCBjb2wgZSA9IHVuc2FmZUNvZXJjZSBcImNvbFwiIGVcblxuICBsZXQgY29sZ3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcImNvbGdyb3VwXCIgZVxuXG4gIGxldCBkZWwgZSA9IHVuc2FmZUNvZXJjZSBcImRlbFwiIGVcblxuICBsZXQgZGl2IGUgPSB1bnNhZmVDb2VyY2UgXCJkaXZcIiBlXG5cbiAgbGV0IGRsIGUgPSB1bnNhZmVDb2VyY2UgXCJkbFwiIGVcblxuICBsZXQgZmllbGRzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZpZWxkc2V0XCIgZVxuXG4gIGxldCBlbWJlZCBlID0gdW5zYWZlQ29lcmNlIFwiZW1iZWRcIiBlXG5cbiAgbGV0IGZvcm0gZSA9IHVuc2FmZUNvZXJjZSBcImZvcm1cIiBlXG5cbiAgbGV0IGZyYW1lc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZXNldFwiIGVcblxuICBsZXQgZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lXCIgZVxuXG4gIGxldCBoMSBlID0gdW5zYWZlQ29lcmNlIFwiaDFcIiBlXG5cbiAgbGV0IGgyIGUgPSB1bnNhZmVDb2VyY2UgXCJoMlwiIGVcblxuICBsZXQgaDMgZSA9IHVuc2FmZUNvZXJjZSBcImgzXCIgZVxuXG4gIGxldCBoNCBlID0gdW5zYWZlQ29lcmNlIFwiaDRcIiBlXG5cbiAgbGV0IGg1IGUgPSB1bnNhZmVDb2VyY2UgXCJoNVwiIGVcblxuICBsZXQgaDYgZSA9IHVuc2FmZUNvZXJjZSBcImg2XCIgZVxuXG4gIGxldCBoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJoZWFkXCIgZVxuXG4gIGxldCBociBlID0gdW5zYWZlQ29lcmNlIFwiaHJcIiBlXG5cbiAgbGV0IGh0bWwgZSA9IHVuc2FmZUNvZXJjZSBcImh0bWxcIiBlXG5cbiAgbGV0IGlmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiaWZyYW1lXCIgZVxuXG4gIGxldCBpbWcgZSA9IHVuc2FmZUNvZXJjZSBcImltZ1wiIGVcblxuICBsZXQgaW5wdXQgZSA9IHVuc2FmZUNvZXJjZSBcImlucHV0XCIgZVxuXG4gIGxldCBpbnMgZSA9IHVuc2FmZUNvZXJjZSBcImluc1wiIGVcblxuICBsZXQgbGFiZWwgZSA9IHVuc2FmZUNvZXJjZSBcImxhYmVsXCIgZVxuXG4gIGxldCBsZWdlbmQgZSA9IHVuc2FmZUNvZXJjZSBcImxlZ2VuZFwiIGVcblxuICBsZXQgbGkgZSA9IHVuc2FmZUNvZXJjZSBcImxpXCIgZVxuXG4gIGxldCBsaW5rIGUgPSB1bnNhZmVDb2VyY2UgXCJsaW5rXCIgZVxuXG4gIGxldCBtYXAgZSA9IHVuc2FmZUNvZXJjZSBcIm1hcFwiIGVcblxuICBsZXQgbWV0YSBlID0gdW5zYWZlQ29lcmNlIFwibWV0YVwiIGVcblxuICBsZXQgX29iamVjdCBlID0gdW5zYWZlQ29lcmNlIFwib2JqZWN0XCIgZVxuXG4gIGxldCBvbCBlID0gdW5zYWZlQ29lcmNlIFwib2xcIiBlXG5cbiAgbGV0IG9wdGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRncm91cFwiIGVcblxuICBsZXQgb3B0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRpb25cIiBlXG5cbiAgbGV0IHAgZSA9IHVuc2FmZUNvZXJjZSBcInBcIiBlXG5cbiAgbGV0IHBhcmFtIGUgPSB1bnNhZmVDb2VyY2UgXCJwYXJhbVwiIGVcblxuICBsZXQgcHJlIGUgPSB1bnNhZmVDb2VyY2UgXCJwcmVcIiBlXG5cbiAgbGV0IHEgZSA9IHVuc2FmZUNvZXJjZSBcInFcIiBlXG5cbiAgbGV0IHNjcmlwdCBlID0gdW5zYWZlQ29lcmNlIFwic2NyaXB0XCIgZVxuXG4gIGxldCBzZWxlY3QgZSA9IHVuc2FmZUNvZXJjZSBcInNlbGVjdFwiIGVcblxuICBsZXQgc3R5bGUgZSA9IHVuc2FmZUNvZXJjZSBcInN0eWxlXCIgZVxuXG4gIGxldCB0YWJsZSBlID0gdW5zYWZlQ29lcmNlIFwidGFibGVcIiBlXG5cbiAgbGV0IHRib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Ym9keVwiIGVcblxuICBsZXQgdGQgZSA9IHVuc2FmZUNvZXJjZSBcInRkXCIgZVxuXG4gIGxldCB0ZXh0YXJlYSBlID0gdW5zYWZlQ29lcmNlIFwidGV4dGFyZWFcIiBlXG5cbiAgbGV0IHRmb290IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Zm9vdFwiIGVcblxuICBsZXQgdGggZSA9IHVuc2FmZUNvZXJjZSBcInRoXCIgZVxuXG4gIGxldCB0aGVhZCBlID0gdW5zYWZlQ29lcmNlIFwidGhlYWRcIiBlXG5cbiAgbGV0IHRpdGxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aXRsZVwiIGVcblxuICBsZXQgdHIgZSA9IHVuc2FmZUNvZXJjZSBcInRyXCIgZVxuXG4gIGxldCB1bCBlID0gdW5zYWZlQ29lcmNlIFwidWxcIiBlXG5cbiAgbGV0IGF1ZGlvIGUgPSB1bnNhZmVDb2VyY2UgXCJhdWRpb1wiIGVcblxuICBsZXQgdmlkZW8gZSA9IHVuc2FmZUNvZXJjZSBcInZpZGVvXCIgZVxuXG4gIGxldCB1bnNhZmVDb2VyY2VFdmVudCBjb25zdHIgKGV2IDogI2V2ZW50IHQpID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoZGVmIGNvbnN0cikgJiYgSnMuaW5zdGFuY2VvZiBldiBjb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZXYpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IG1vdXNlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlRXZlbnQgZXZcblxuICBsZXQga2V5Ym9hcmRFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fS2V5Ym9hcmRFdmVudCBldlxuXG4gIGxldCB3aGVlbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9XaGVlbEV2ZW50IGV2XG5cbiAgbGV0IG1vdXNlU2Nyb2xsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlU2Nyb2xsRXZlbnQgZXZcblxuICBsZXQgcG9wU3RhdGVFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fUG9wU3RhdGVFdmVudCBldlxuXG4gIGxldCBtZXNzYWdlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01lc3NhZ2VFdmVudCBldlxuZW5kXG5cbigqKioqKVxuXG5sZXQgZXZlbnRUYXJnZXQgPSBEb20uZXZlbnRUYXJnZXRcblxubGV0IGV2ZW50UmVsYXRlZFRhcmdldCAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmdldCBlIyMucmVsYXRlZFRhcmdldCAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBKcy50b19zdHJpbmcgZSMjLl90eXBlIHdpdGhcbiAgICAgIHwgXCJtb3VzZW92ZXJcIiAtPiBPcHRkZWYuZ2V0IGUjIy5mcm9tRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXCJtb3VzZW91dFwiIC0+IE9wdGRlZi5nZXQgZSMjLnRvRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXyAtPiBKcy5udWxsKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIGUjIy5jbGllbnRYICsgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdFxuICAsIGUjIy5jbGllbnRZICsgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3AgKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5wYWdlWFxuICAgIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKVxuICAgIChmdW4geCAtPiBPcHRkZWYuY2FzZSBlIyMucGFnZVkgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpIChmdW4geSAtPiB4LCB5KSlcblxubGV0IGVsZW1lbnRDbGllbnRQb3NpdGlvbiAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHIgPSBlIyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMubGVmdCkgLSBib2R5IyMuY2xpZW50TGVmdCAtIGh0bWwjIy5jbGllbnRMZWZ0XG4gICwgdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy50b3ApIC0gYm9keSMjLmNsaWVudFRvcCAtIGh0bWwjIy5jbGllbnRUb3AgKVxuXG5sZXQgZ2V0RG9jdW1lbnRTY3JvbGwgKCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnQsIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wXG5cbmxldCBidXR0b25QcmVzc2VkIChldiA6ICNtb3VzZUV2ZW50IEpzLnQpID1cbiAgSnMuT3B0ZGVmLmNhc2VcbiAgICBldiMjLndoaWNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggZXYjIy5idXR0b24gd2l0aFxuICAgICAgfCAxIC0+IExlZnRfYnV0dG9uXG4gICAgICB8IDIgLT4gUmlnaHRfYnV0dG9uXG4gICAgICB8IDQgLT4gTWlkZGxlX2J1dHRvblxuICAgICAgfCBfIC0+IE5vX2J1dHRvbilcbiAgICAoZnVuIHggLT4geClcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgP2NhcHR1cmVcbiAgICA/b25jZVxuICAgID9wYXNzaXZlXG4gICAgZVxuICAgIEV2ZW50LndoZWVsXG4gICAgKGhhbmRsZXIgKGZ1biAoZSA6IG1vdXNld2hlZWxFdmVudCB0KSAtPlxuICAgICAgICAgbGV0IGR4ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFYIChmdW4gKCkgLT4gMCkgLyA0MCBpblxuICAgICAgICAgbGV0IGR5ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFZIChmdW4gKCkgLT4gZSMjLndoZWVsRGVsdGEpIC8gNDAgaW5cbiAgICAgICAgIGggKGUgOj4gbW91c2VFdmVudCB0KSB+ZHggfmR5KSlcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIGUgaCBjYXB0ID1cbiAgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyB+Y2FwdHVyZTpjYXB0IGUgaFxuXG4oKioqKiopXG5cbm1vZHVsZSBLZXlib2FyZF9jb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBVbmlkZW50aWZpZWRcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IEtleUFcbiAgICB8IEtleUJcbiAgICB8IEtleUNcbiAgICB8IEtleURcbiAgICB8IEtleUVcbiAgICB8IEtleUZcbiAgICB8IEtleUdcbiAgICB8IEtleUhcbiAgICB8IEtleUlcbiAgICB8IEtleUpcbiAgICB8IEtleUtcbiAgICB8IEtleUxcbiAgICB8IEtleU1cbiAgICB8IEtleU5cbiAgICB8IEtleU9cbiAgICB8IEtleVBcbiAgICB8IEtleVFcbiAgICB8IEtleVJcbiAgICB8IEtleVNcbiAgICB8IEtleVRcbiAgICB8IEtleVVcbiAgICB8IEtleVZcbiAgICB8IEtleVdcbiAgICB8IEtleVhcbiAgICB8IEtleVlcbiAgICB8IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IERpZ2l0MFxuICAgIHwgRGlnaXQxXG4gICAgfCBEaWdpdDJcbiAgICB8IERpZ2l0M1xuICAgIHwgRGlnaXQ0XG4gICAgfCBEaWdpdDVcbiAgICB8IERpZ2l0NlxuICAgIHwgRGlnaXQ3XG4gICAgfCBEaWdpdDhcbiAgICB8IERpZ2l0OVxuICAgIHwgTWludXNcbiAgICB8IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgVGFiXG4gICAgfCBFbnRlclxuICAgIHwgU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBFc2NhcGVcbiAgICB8IEJhY2tzcGFjZVxuICAgIHwgSW5zZXJ0XG4gICAgfCBEZWxldGVcbiAgICB8IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IEJyYWNrZXRMZWZ0XG4gICAgfCBCcmFja2V0UmlnaHRcbiAgICB8IFNlbWljb2xvblxuICAgIHwgUXVvdGVcbiAgICB8IEJhY2txdW90ZVxuICAgIHwgQmFja3NsYXNoXG4gICAgfCBDb21tYVxuICAgIHwgUGVyaW9kXG4gICAgfCBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IEYxXG4gICAgfCBGMlxuICAgIHwgRjNcbiAgICB8IEY0XG4gICAgfCBGNVxuICAgIHwgRjZcbiAgICB8IEY3XG4gICAgfCBGOFxuICAgIHwgRjlcbiAgICB8IEYxMFxuICAgIHwgRjExXG4gICAgfCBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgTnVtcGFkMFxuICAgIHwgTnVtcGFkMVxuICAgIHwgTnVtcGFkMlxuICAgIHwgTnVtcGFkM1xuICAgIHwgTnVtcGFkNFxuICAgIHwgTnVtcGFkNVxuICAgIHwgTnVtcGFkNlxuICAgIHwgTnVtcGFkN1xuICAgIHwgTnVtcGFkOFxuICAgIHwgTnVtcGFkOVxuICAgIHwgTnVtcGFkTXVsdGlwbHlcbiAgICB8IE51bXBhZFN1YnRyYWN0XG4gICAgfCBOdW1wYWRBZGRcbiAgICB8IE51bXBhZERlY2ltYWxcbiAgICB8IE51bXBhZEVxdWFsXG4gICAgfCBOdW1wYWRFbnRlclxuICAgIHwgTnVtcGFkRGl2aWRlXG4gICAgfCBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgQ29udHJvbExlZnRcbiAgICB8IENvbnRyb2xSaWdodFxuICAgIHwgTWV0YUxlZnRcbiAgICB8IE1ldGFSaWdodFxuICAgIHwgU2hpZnRMZWZ0XG4gICAgfCBTaGlmdFJpZ2h0XG4gICAgfCBBbHRMZWZ0XG4gICAgfCBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IEFycm93TGVmdFxuICAgIHwgQXJyb3dSaWdodFxuICAgIHwgQXJyb3dVcFxuICAgIHwgQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgUGFnZVVwXG4gICAgfCBQYWdlRG93blxuICAgIHwgSG9tZVxuICAgIHwgRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFZvbHVtZU11dGVcbiAgICB8IFZvbHVtZURvd25cbiAgICB8IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgTWVkaWFUcmFja05leHRcbiAgICB8IE1lZGlhUGxheVBhdXNlXG4gICAgfCBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IENvbnRleHRNZW51XG4gICAgfCBCcm93c2VyU2VhcmNoXG4gICAgfCBCcm93c2VySG9tZVxuICAgIHwgQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgQnJvd3NlclJlZnJlc2hcbiAgICB8IEJyb3dzZXJTdG9wXG4gICAgfCBCcm93c2VyRm9yd2FyZFxuICAgIHwgQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBPU0xlZnRcbiAgICB8IE9TUmlnaHRcbiAgICB8IFNjcm9sbExvY2tcbiAgICB8IFByaW50U2NyZWVuXG4gICAgfCBJbnRsQmFja3NsYXNoXG4gICAgfCBJbnRsWWVuXG4gICAgfCBQYXVzZVxuXG4gIGxldCB0cnlfY29kZSB2ID1cbiAgICBtYXRjaCBKcy50b19zdHJpbmcgdiB3aXRoXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBcIktleUFcIiAtPiBLZXlBXG4gICAgfCBcIktleUJcIiAtPiBLZXlCXG4gICAgfCBcIktleUNcIiAtPiBLZXlDXG4gICAgfCBcIktleURcIiAtPiBLZXlEXG4gICAgfCBcIktleUVcIiAtPiBLZXlFXG4gICAgfCBcIktleUZcIiAtPiBLZXlGXG4gICAgfCBcIktleUdcIiAtPiBLZXlHXG4gICAgfCBcIktleUhcIiAtPiBLZXlIXG4gICAgfCBcIktleUlcIiAtPiBLZXlJXG4gICAgfCBcIktleUpcIiAtPiBLZXlKXG4gICAgfCBcIktleUtcIiAtPiBLZXlLXG4gICAgfCBcIktleUxcIiAtPiBLZXlMXG4gICAgfCBcIktleU1cIiAtPiBLZXlNXG4gICAgfCBcIktleU5cIiAtPiBLZXlOXG4gICAgfCBcIktleU9cIiAtPiBLZXlPXG4gICAgfCBcIktleVBcIiAtPiBLZXlQXG4gICAgfCBcIktleVFcIiAtPiBLZXlRXG4gICAgfCBcIktleVJcIiAtPiBLZXlSXG4gICAgfCBcIktleVNcIiAtPiBLZXlTXG4gICAgfCBcIktleVRcIiAtPiBLZXlUXG4gICAgfCBcIktleVVcIiAtPiBLZXlVXG4gICAgfCBcIktleVZcIiAtPiBLZXlWXG4gICAgfCBcIktleVdcIiAtPiBLZXlXXG4gICAgfCBcIktleVhcIiAtPiBLZXlYXG4gICAgfCBcIktleVlcIiAtPiBLZXlZXG4gICAgfCBcIktleVpcIiAtPiBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBcIkRpZ2l0MFwiIC0+IERpZ2l0MFxuICAgIHwgXCJEaWdpdDFcIiAtPiBEaWdpdDFcbiAgICB8IFwiRGlnaXQyXCIgLT4gRGlnaXQyXG4gICAgfCBcIkRpZ2l0M1wiIC0+IERpZ2l0M1xuICAgIHwgXCJEaWdpdDRcIiAtPiBEaWdpdDRcbiAgICB8IFwiRGlnaXQ1XCIgLT4gRGlnaXQ1XG4gICAgfCBcIkRpZ2l0NlwiIC0+IERpZ2l0NlxuICAgIHwgXCJEaWdpdDdcIiAtPiBEaWdpdDdcbiAgICB8IFwiRGlnaXQ4XCIgLT4gRGlnaXQ4XG4gICAgfCBcIkRpZ2l0OVwiIC0+IERpZ2l0OVxuICAgIHwgXCJNaW51c1wiIC0+IE1pbnVzXG4gICAgfCBcIkVxdWFsXCIgLT4gRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBcIlRhYlwiIC0+IFRhYlxuICAgIHwgXCJFbnRlclwiIC0+IEVudGVyXG4gICAgfCBcIlNwYWNlXCIgLT4gU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBcIkVzY2FwZVwiIC0+IEVzY2FwZVxuICAgIHwgXCJCYWNrc3BhY2VcIiAtPiBCYWNrc3BhY2VcbiAgICB8IFwiSW5zZXJ0XCIgLT4gSW5zZXJ0XG4gICAgfCBcIkRlbGV0ZVwiIC0+IERlbGV0ZVxuICAgIHwgXCJDYXBzTG9ja1wiIC0+IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IFwiQnJhY2tldExlZnRcIiAtPiBCcmFja2V0TGVmdFxuICAgIHwgXCJCcmFja2V0UmlnaHRcIiAtPiBCcmFja2V0UmlnaHRcbiAgICB8IFwiU2VtaWNvbG9uXCIgLT4gU2VtaWNvbG9uXG4gICAgfCBcIlF1b3RlXCIgLT4gUXVvdGVcbiAgICB8IFwiQmFja3F1b3RlXCIgLT4gQmFja3F1b3RlXG4gICAgfCBcIkJhY2tzbGFzaFwiIC0+IEJhY2tzbGFzaFxuICAgIHwgXCJDb21tYVwiIC0+IENvbW1hXG4gICAgfCBcIlBlcmlvZFwiIC0+IFBlcmlvZFxuICAgIHwgXCJTbGFzaFwiIC0+IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgXCJGMVwiIC0+IEYxXG4gICAgfCBcIkYyXCIgLT4gRjJcbiAgICB8IFwiRjNcIiAtPiBGM1xuICAgIHwgXCJGNFwiIC0+IEY0XG4gICAgfCBcIkY1XCIgLT4gRjVcbiAgICB8IFwiRjZcIiAtPiBGNlxuICAgIHwgXCJGN1wiIC0+IEY3XG4gICAgfCBcIkY4XCIgLT4gRjhcbiAgICB8IFwiRjlcIiAtPiBGOVxuICAgIHwgXCJGMTBcIiAtPiBGMTBcbiAgICB8IFwiRjExXCIgLT4gRjExXG4gICAgfCBcIkYxMlwiIC0+IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBcIk51bXBhZDBcIiAtPiBOdW1wYWQwXG4gICAgfCBcIk51bXBhZDFcIiAtPiBOdW1wYWQxXG4gICAgfCBcIk51bXBhZDJcIiAtPiBOdW1wYWQyXG4gICAgfCBcIk51bXBhZDNcIiAtPiBOdW1wYWQzXG4gICAgfCBcIk51bXBhZDRcIiAtPiBOdW1wYWQ0XG4gICAgfCBcIk51bXBhZDVcIiAtPiBOdW1wYWQ1XG4gICAgfCBcIk51bXBhZDZcIiAtPiBOdW1wYWQ2XG4gICAgfCBcIk51bXBhZDdcIiAtPiBOdW1wYWQ3XG4gICAgfCBcIk51bXBhZDhcIiAtPiBOdW1wYWQ4XG4gICAgfCBcIk51bXBhZDlcIiAtPiBOdW1wYWQ5XG4gICAgfCBcIk51bXBhZE11bHRpcGx5XCIgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IFwiTnVtcGFkU3VidHJhY3RcIiAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgXCJOdW1wYWRBZGRcIiAtPiBOdW1wYWRBZGRcbiAgICB8IFwiTnVtcGFkRGVjaW1hbFwiIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IFwiTnVtcGFkRXF1YWxcIiAtPiBOdW1wYWRFcXVhbFxuICAgIHwgXCJOdW1wYWRFbnRlclwiIC0+IE51bXBhZEVudGVyXG4gICAgfCBcIk51bXBhZERpdmlkZVwiIC0+IE51bXBhZERpdmlkZVxuICAgIHwgXCJOdW1Mb2NrXCIgLT4gTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IFwiQ29udHJvbExlZnRcIiAtPiBDb250cm9sTGVmdFxuICAgIHwgXCJDb250cm9sUmlnaHRcIiAtPiBDb250cm9sUmlnaHRcbiAgICB8IFwiTWV0YUxlZnRcIiAtPiBNZXRhTGVmdFxuICAgIHwgXCJNZXRhUmlnaHRcIiAtPiBNZXRhUmlnaHRcbiAgICB8IFwiU2hpZnRMZWZ0XCIgLT4gU2hpZnRMZWZ0XG4gICAgfCBcIlNoaWZ0UmlnaHRcIiAtPiBTaGlmdFJpZ2h0XG4gICAgfCBcIkFsdExlZnRcIiAtPiBBbHRMZWZ0XG4gICAgfCBcIkFsdFJpZ2h0XCIgLT4gQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBcIkFycm93TGVmdFwiIC0+IEFycm93TGVmdFxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgLT4gQXJyb3dSaWdodFxuICAgIHwgXCJBcnJvd1VwXCIgLT4gQXJyb3dVcFxuICAgIHwgXCJBcnJvd0Rvd25cIiAtPiBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBcIlBhZ2VVcFwiIC0+IFBhZ2VVcFxuICAgIHwgXCJQYWdlRG93blwiIC0+IFBhZ2VEb3duXG4gICAgfCBcIkhvbWVcIiAtPiBIb21lXG4gICAgfCBcIkVuZFwiIC0+IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBcIlZvbHVtZU11dGVcIiAtPiBWb2x1bWVNdXRlXG4gICAgfCBcIlZvbHVtZURvd25cIiAtPiBWb2x1bWVEb3duXG4gICAgfCBcIlZvbHVtZVVwXCIgLT4gVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgXCJNZWRpYVRyYWNrUHJldmlvdXNcIiAtPiBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IFwiTWVkaWFUcmFja05leHRcIiAtPiBNZWRpYVRyYWNrTmV4dFxuICAgIHwgXCJNZWRpYVBsYXlQYXVzZVwiIC0+IE1lZGlhUGxheVBhdXNlXG4gICAgfCBcIk1lZGlhU3RvcFwiIC0+IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgXCJDb250ZXh0TWVudVwiIC0+IENvbnRleHRNZW51XG4gICAgfCBcIkJyb3dzZXJTZWFyY2hcIiAtPiBCcm93c2VyU2VhcmNoXG4gICAgfCBcIkJyb3dzZXJIb21lXCIgLT4gQnJvd3NlckhvbWVcbiAgICB8IFwiQnJvd3NlckZhdm9yaXRlc1wiIC0+IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IFwiQnJvd3NlclJlZnJlc2hcIiAtPiBCcm93c2VyUmVmcmVzaFxuICAgIHwgXCJCcm93c2VyU3RvcFwiIC0+IEJyb3dzZXJTdG9wXG4gICAgfCBcIkJyb3dzZXJGb3J3YXJkXCIgLT4gQnJvd3NlckZvcndhcmRcbiAgICB8IFwiQnJvd3NlckJhY2tcIiAtPiBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IFwiT1NMZWZ0XCIgLT4gT1NMZWZ0XG4gICAgfCBcIk9TUmlnaHRcIiAtPiBPU1JpZ2h0XG4gICAgfCBcIlNjcm9sbExvY2tcIiAtPiBTY3JvbGxMb2NrXG4gICAgfCBcIlByaW50U2NyZWVuXCIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IFwiSW50bEJhY2tzbGFzaFwiIC0+IEludGxCYWNrc2xhc2hcbiAgICB8IFwiSW50bFllblwiIC0+IEludGxZZW5cbiAgICB8IFwiUGF1c2VcIiAtPiBQYXVzZVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX2xlZnQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRMZWZ0XG4gICAgfCAxNyAtPiBDb250cm9sTGVmdFxuICAgIHwgMTggLT4gQWx0TGVmdFxuICAgIHwgOTEgLT4gTWV0YUxlZnRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9yaWdodCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdFJpZ2h0XG4gICAgfCAxNyAtPiBDb250cm9sUmlnaHRcbiAgICB8IDE4IC0+IEFsdFJpZ2h0XG4gICAgfCA5MSAtPiBNZXRhUmlnaHRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9udW1wYWQgPSBmdW5jdGlvblxuICAgIHwgNDYgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgNDUgLT4gTnVtcGFkMFxuICAgIHwgMzUgLT4gTnVtcGFkMVxuICAgIHwgNDAgLT4gTnVtcGFkMlxuICAgIHwgMzQgLT4gTnVtcGFkM1xuICAgIHwgMzcgLT4gTnVtcGFkNFxuICAgIHwgMTIgLT4gTnVtcGFkNVxuICAgIHwgMzkgLT4gTnVtcGFkNlxuICAgIHwgMzYgLT4gTnVtcGFkN1xuICAgIHwgMzggLT4gTnVtcGFkOFxuICAgIHwgMzMgLT4gTnVtcGFkOVxuICAgIHwgMTMgLT4gTnVtcGFkRW50ZXJcbiAgICB8IDExMSAtPiBOdW1wYWREaXZpZGVcbiAgICB8IDEwNyAtPiBOdW1wYWRBZGRcbiAgICB8IDEwOSAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgMTA2IC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCAxMTAgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgOTYgLT4gTnVtcGFkMFxuICAgIHwgOTcgLT4gTnVtcGFkMVxuICAgIHwgOTggLT4gTnVtcGFkMlxuICAgIHwgOTkgLT4gTnVtcGFkM1xuICAgIHwgMTAwIC0+IE51bXBhZDRcbiAgICB8IDEwMSAtPiBOdW1wYWQ1XG4gICAgfCAxMDIgLT4gTnVtcGFkNlxuICAgIHwgMTAzIC0+IE51bXBhZDdcbiAgICB8IDEwNCAtPiBOdW1wYWQ4XG4gICAgfCAxMDUgLT4gTnVtcGFkOVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX25vcm1hbCA9IGZ1bmN0aW9uXG4gICAgfCAyNyAtPiBFc2NhcGVcbiAgICB8IDExMiAtPiBGMVxuICAgIHwgMTEzIC0+IEYyXG4gICAgfCAxMTQgLT4gRjNcbiAgICB8IDExNSAtPiBGNFxuICAgIHwgMTE2IC0+IEY1XG4gICAgfCAxMTcgLT4gRjZcbiAgICB8IDExOCAtPiBGN1xuICAgIHwgMTE5IC0+IEY4XG4gICAgfCAxMjAgLT4gRjlcbiAgICB8IDEyMSAtPiBGMTBcbiAgICB8IDEyMiAtPiBGMTFcbiAgICB8IDEyMyAtPiBGMTJcbiAgICB8IDQyIC0+IFByaW50U2NyZWVuXG4gICAgfCAxNDUgLT4gU2Nyb2xsTG9ja1xuICAgIHwgMTkgLT4gUGF1c2VcbiAgICB8IDE5MiAtPiBCYWNrcXVvdGVcbiAgICB8IDQ5IC0+IERpZ2l0MVxuICAgIHwgNTAgLT4gRGlnaXQyXG4gICAgfCA1MSAtPiBEaWdpdDNcbiAgICB8IDUyIC0+IERpZ2l0NFxuICAgIHwgNTMgLT4gRGlnaXQ1XG4gICAgfCA1NCAtPiBEaWdpdDZcbiAgICB8IDU1IC0+IERpZ2l0N1xuICAgIHwgNTYgLT4gRGlnaXQ4XG4gICAgfCA1NyAtPiBEaWdpdDlcbiAgICB8IDQ4IC0+IERpZ2l0MFxuICAgIHwgMTg5IC0+IE1pbnVzXG4gICAgfCAxODcgLT4gRXF1YWxcbiAgICB8IDggLT4gQmFja3NwYWNlXG4gICAgfCA5IC0+IFRhYlxuICAgIHwgODEgLT4gS2V5UVxuICAgIHwgODcgLT4gS2V5V1xuICAgIHwgNjkgLT4gS2V5RVxuICAgIHwgODIgLT4gS2V5UlxuICAgIHwgODQgLT4gS2V5VFxuICAgIHwgODkgLT4gS2V5WVxuICAgIHwgODUgLT4gS2V5VVxuICAgIHwgNzMgLT4gS2V5SVxuICAgIHwgNzkgLT4gS2V5T1xuICAgIHwgODAgLT4gS2V5UFxuICAgIHwgMjE5IC0+IEJyYWNrZXRMZWZ0XG4gICAgfCAyMjEgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCAyMjAgLT4gQmFja3NsYXNoXG4gICAgfCAyMCAtPiBDYXBzTG9ja1xuICAgIHwgNjUgLT4gS2V5QVxuICAgIHwgODMgLT4gS2V5U1xuICAgIHwgNjggLT4gS2V5RFxuICAgIHwgNzAgLT4gS2V5RlxuICAgIHwgNzEgLT4gS2V5R1xuICAgIHwgNzIgLT4gS2V5SFxuICAgIHwgNzQgLT4gS2V5SlxuICAgIHwgNzUgLT4gS2V5S1xuICAgIHwgNzYgLT4gS2V5TFxuICAgIHwgMTg2IC0+IFNlbWljb2xvblxuICAgIHwgMjIyIC0+IFF1b3RlXG4gICAgfCAxMyAtPiBFbnRlclxuICAgIHwgOTAgLT4gS2V5WlxuICAgIHwgODggLT4gS2V5WFxuICAgIHwgNjcgLT4gS2V5Q1xuICAgIHwgODYgLT4gS2V5VlxuICAgIHwgNjYgLT4gS2V5QlxuICAgIHwgNzggLT4gS2V5TlxuICAgIHwgNzcgLT4gS2V5TVxuICAgIHwgMTg4IC0+IENvbW1hXG4gICAgfCAxOTAgLT4gUGVyaW9kXG4gICAgfCAxOTEgLT4gU2xhc2hcbiAgICB8IDMyIC0+IFNwYWNlXG4gICAgfCA5MyAtPiBDb250ZXh0TWVudVxuICAgIHwgNDUgLT4gSW5zZXJ0XG4gICAgfCAzNiAtPiBIb21lXG4gICAgfCAzMyAtPiBQYWdlVXBcbiAgICB8IDQ2IC0+IERlbGV0ZVxuICAgIHwgMzUgLT4gRW5kXG4gICAgfCAzNCAtPiBQYWdlRG93blxuICAgIHwgMzcgLT4gQXJyb3dMZWZ0XG4gICAgfCA0MCAtPiBBcnJvd0Rvd25cbiAgICB8IDM5IC0+IEFycm93UmlnaHRcbiAgICB8IDM4IC0+IEFycm93VXBcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IG1ha2VfdW5pZGVudGlmaWVkIF8gPSBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gT3B0ZGVmLmNhc2UgdmFsdWUgbWFrZV91bmlkZW50aWZpZWQgZlxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IHJ1bl9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IGYgdmFsdWVcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBnZXRfa2V5X2NvZGUgZXZ0ID0gZXZ0IyMua2V5Q29kZVxuXG4gIGxldCB0cnlfa2V5X2xvY2F0aW9uIGV2dCA9XG4gICAgbWF0Y2ggZXZ0IyMubG9jYXRpb24gd2l0aFxuICAgIHwgMSAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX2xlZnRcbiAgICB8IDIgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9yaWdodFxuICAgIHwgMyAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX251bXBhZFxuICAgIHwgXyAtPiBtYWtlX3VuaWRlbnRpZmllZFxuXG4gIGxldCAoIHw+ICkgeCBmID0gZiB4XG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgVW5pZGVudGlmaWVkXG4gICAgfD4gdHJ5X25leHQgZXZ0IyMuY29kZSB0cnlfY29kZVxuICAgIHw+IHRyeV9rZXlfbG9jYXRpb24gZXZ0XG4gICAgfD4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9ub3JtYWxcblxuICBsZXQgb2Zfa2V5X2NvZGUgPSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5lbmRcblxubW9kdWxlIEtleWJvYXJkX2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBVY2hhci50IG9wdGlvblxuXG4gIGxldCBjaGFyX29mX2ludCB2YWx1ZSA9XG4gICAgaWYgMCA8IHZhbHVlIHRoZW4gdHJ5IFNvbWUgKFVjaGFyLm9mX2ludCB2YWx1ZSkgd2l0aCBfIC0+IE5vbmUgZWxzZSBOb25lXG5cbiAgbGV0IGVtcHR5X3N0cmluZyBfID0gSnMuc3RyaW5nIFwiXCJcblxuICBsZXQgbm9uZSBfID0gTm9uZVxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIGxldCBrZXkgPSBPcHRkZWYuZ2V0IGV2dCMjLmtleSBlbXB0eV9zdHJpbmcgaW5cbiAgICBtYXRjaCBrZXkjIy5sZW5ndGggd2l0aFxuICAgIHwgMCAtPiBPcHRkZWYuY2FzZSBldnQjIy5jaGFyQ29kZSBub25lIGNoYXJfb2ZfaW50XG4gICAgfCAxIC0+IGNoYXJfb2ZfaW50IChpbnRfb2ZfZmxvYXQgKEpzLnRvX2Zsb2F0IChrZXkjI2NoYXJDb2RlQXQgMCkpKVxuICAgIHwgXyAtPiBOb25lXG5lbmRcblxuKCoqKioqKVxuXG5sZXQgZWxlbWVudCA6ICNEb20uZWxlbWVudCB0IC0+IGVsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2VcblxudHlwZSB0YWdnZWRFbGVtZW50ID1cbiAgfCBBIG9mIGFuY2hvckVsZW1lbnQgdFxuICB8IEFyZWEgb2YgYXJlYUVsZW1lbnQgdFxuICB8IEF1ZGlvIG9mIGF1ZGlvRWxlbWVudCB0XG4gIHwgQmFzZSBvZiBiYXNlRWxlbWVudCB0XG4gIHwgQmxvY2txdW90ZSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IEJvZHkgb2YgYm9keUVsZW1lbnQgdFxuICB8IEJyIG9mIGJyRWxlbWVudCB0XG4gIHwgQnV0dG9uIG9mIGJ1dHRvbkVsZW1lbnQgdFxuICB8IENhbnZhcyBvZiBjYW52YXNFbGVtZW50IHRcbiAgfCBDYXB0aW9uIG9mIHRhYmxlQ2FwdGlvbkVsZW1lbnQgdFxuICB8IENvbCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IENvbGdyb3VwIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgRGVsIG9mIG1vZEVsZW1lbnQgdFxuICB8IERpYWxvZyBvZiBkaWFsb2dFbGVtZW50IHRcbiAgfCBEaXYgb2YgZGl2RWxlbWVudCB0XG4gIHwgRGwgb2YgZExpc3RFbGVtZW50IHRcbiAgfCBFbWJlZCBvZiBlbWJlZEVsZW1lbnQgdFxuICB8IEZpZWxkc2V0IG9mIGZpZWxkU2V0RWxlbWVudCB0XG4gIHwgRm9ybSBvZiBmb3JtRWxlbWVudCB0XG4gIHwgRnJhbWVzZXQgb2YgZnJhbWVTZXRFbGVtZW50IHRcbiAgfCBGcmFtZSBvZiBmcmFtZUVsZW1lbnQgdFxuICB8IEgxIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDMgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg0IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDYgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEhlYWQgb2YgaGVhZEVsZW1lbnQgdFxuICB8IEhyIG9mIGhyRWxlbWVudCB0XG4gIHwgSHRtbCBvZiBodG1sRWxlbWVudCB0XG4gIHwgSWZyYW1lIG9mIGlGcmFtZUVsZW1lbnQgdFxuICB8IEltZyBvZiBpbWFnZUVsZW1lbnQgdFxuICB8IElucHV0IG9mIGlucHV0RWxlbWVudCB0XG4gIHwgSW5zIG9mIG1vZEVsZW1lbnQgdFxuICB8IExhYmVsIG9mIGxhYmVsRWxlbWVudCB0XG4gIHwgTGVnZW5kIG9mIGxlZ2VuZEVsZW1lbnQgdFxuICB8IExpIG9mIGxpRWxlbWVudCB0XG4gIHwgTGluayBvZiBsaW5rRWxlbWVudCB0XG4gIHwgTWFwIG9mIG1hcEVsZW1lbnQgdFxuICB8IE1ldGEgb2YgbWV0YUVsZW1lbnQgdFxuICB8IE9iamVjdCBvZiBvYmplY3RFbGVtZW50IHRcbiAgfCBPbCBvZiBvTGlzdEVsZW1lbnQgdFxuICB8IE9wdGdyb3VwIG9mIG9wdEdyb3VwRWxlbWVudCB0XG4gIHwgT3B0aW9uIG9mIG9wdGlvbkVsZW1lbnQgdFxuICB8IFAgb2YgcGFyYWdyYXBoRWxlbWVudCB0XG4gIHwgUGFyYW0gb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQcmUgb2YgcHJlRWxlbWVudCB0XG4gIHwgUSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IFNjcmlwdCBvZiBzY3JpcHRFbGVtZW50IHRcbiAgfCBTZWxlY3Qgb2Ygc2VsZWN0RWxlbWVudCB0XG4gIHwgU3R5bGUgb2Ygc3R5bGVFbGVtZW50IHRcbiAgfCBUYWJsZSBvZiB0YWJsZUVsZW1lbnQgdFxuICB8IFRib2R5IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRkIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRleHRhcmVhIG9mIHRleHRBcmVhRWxlbWVudCB0XG4gIHwgVGZvb3Qgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGggb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGhlYWQgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGl0bGUgb2YgdGl0bGVFbGVtZW50IHRcbiAgfCBUciBvZiB0YWJsZVJvd0VsZW1lbnQgdFxuICB8IFVsIG9mIHVMaXN0RWxlbWVudCB0XG4gIHwgVmlkZW8gb2YgdmlkZW9FbGVtZW50IHRcbiAgfCBPdGhlciBvZiBlbGVtZW50IHRcblxubGV0IG90aGVyIGUgPSBPdGhlciAoZSA6ICNlbGVtZW50IHQgOj4gZWxlbWVudCB0KVxuXG5sZXQgdGFnZ2VkIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgdGFnID0gSnMudG9fYnl0ZXN0cmluZyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwXG4gIHRoZW4gb3RoZXIgZVxuICBlbHNlXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgdGFnIDAgd2l0aFxuICAgIHwgJ2EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImFcIiAtPiBBIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhcmVhXCIgLT4gQXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXVkaW9cIiAtPiBBdWRpbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdiJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJiYXNlXCIgLT4gQmFzZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYmxvY2txdW90ZVwiIC0+IEJsb2NrcXVvdGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJvZHlcIiAtPiBCb2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJiclwiIC0+IEJyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJidXR0b25cIiAtPiBCdXR0b24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiY2FudmFzXCIgLT4gQ2FudmFzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjYXB0aW9uXCIgLT4gQ2FwdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sXCIgLT4gQ29sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xncm91cFwiIC0+IENvbGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImRlbFwiIC0+IERlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGl2XCIgLT4gRGl2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkbFwiIC0+IERsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImVtYmVkXCIgLT4gRW1iZWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZmllbGRzZXRcIiAtPiBGaWVsZHNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZm9ybVwiIC0+IEZvcm0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lc2V0XCIgLT4gRnJhbWVzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lXCIgLT4gRnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaDFcIiAtPiBIMSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDJcIiAtPiBIMiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDNcIiAtPiBIMyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDRcIiAtPiBINCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDVcIiAtPiBINSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDZcIiAtPiBINiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaGVhZFwiIC0+IEhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhyXCIgLT4gSHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImh0bWxcIiAtPiBIdG1sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2knIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImlmcmFtZVwiIC0+IElmcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW1nXCIgLT4gSW1nIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnB1dFwiIC0+IElucHV0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnNcIiAtPiBJbnMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibGFiZWxcIiAtPiBMYWJlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGVnZW5kXCIgLT4gTGVnZW5kIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaVwiIC0+IExpIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaW5rXCIgLT4gTGluayAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdtJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJtYXBcIiAtPiBNYXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm1ldGFcIiAtPiBNZXRhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ28nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm9iamVjdFwiIC0+IE9iamVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib2xcIiAtPiBPbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0Z3JvdXBcIiAtPiBPcHRncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0aW9uXCIgLT4gT3B0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3AnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInBcIiAtPiBQIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwYXJhbVwiIC0+IFBhcmFtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwcmVcIiAtPiBQcmUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicVwiIC0+IFEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwic2NyaXB0XCIgLT4gU2NyaXB0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzZWxlY3RcIiAtPiBTZWxlY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInN0eWxlXCIgLT4gU3R5bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidGFibGVcIiAtPiBUYWJsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGJvZHlcIiAtPiBUYm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGRcIiAtPiBUZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGV4dGFyZWFcIiAtPiBUZXh0YXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGZvb3RcIiAtPiBUZm9vdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhcIiAtPiBUaCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhlYWRcIiAtPiBUaGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGl0bGVcIiAtPiBUaXRsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidHJcIiAtPiBUciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd1JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ1bFwiIC0+IFVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInZpZGVvXCIgLT4gVmlkZW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCBfIC0+IG90aGVyIGVcblxubGV0IG9wdF90YWdnZWQgZSA9IE9wdC5jYXNlIGUgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGUgLT4gU29tZSAodGFnZ2VkIGUpKVxuXG50eXBlIHRhZ2dlZEV2ZW50ID1cbiAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlRXZlbnQgdFxuICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRFdmVudCB0XG4gIHwgTWVzc2FnZUV2ZW50IG9mIG1lc3NhZ2VFdmVudCB0XG4gIHwgTW91c2V3aGVlbEV2ZW50IG9mIG1vdXNld2hlZWxFdmVudCB0XG4gIHwgTW91c2VTY3JvbGxFdmVudCBvZiBtb3VzZVNjcm9sbEV2ZW50IHRcbiAgfCBQb3BTdGF0ZUV2ZW50IG9mIHBvcFN0YXRlRXZlbnQgdFxuICB8IE90aGVyRXZlbnQgb2YgZXZlbnQgdFxuXG5sZXQgdGFnZ2VkRXZlbnQgKGV2IDogI2V2ZW50IEpzLnQpID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoQ29lcmNlVG8ubW91c2VFdmVudCBldilcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoQ29lcmNlVG8ua2V5Ym9hcmRFdmVudCBldilcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoQ29lcmNlVG8ud2hlZWxFdmVudCBldilcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubW91c2VTY3JvbGxFdmVudCBldilcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ucG9wU3RhdGVFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubWVzc2FnZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBPdGhlckV2ZW50IChldiA6PiBldmVudCB0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTWVzc2FnZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBQb3BTdGF0ZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNlU2Nyb2xsRXZlbnQgZXYpKVxuICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZXdoZWVsRXZlbnQgZXYpKVxuICAgICAgICAoZnVuIGV2IC0+IEtleWJvYXJkRXZlbnQgZXYpKVxuICAgIChmdW4gZXYgLT4gTW91c2VFdmVudCBldilcblxubGV0IG9wdF90YWdnZWRFdmVudCBldiA9IE9wdC5jYXNlIGV2IChmdW4gKCkgLT4gTm9uZSkgKGZ1biBldiAtPiBTb21lICh0YWdnZWRFdmVudCBldikpXG5cbmxldCBzdG9wUHJvcGFnYXRpb24gZXYgPVxuICBsZXQgZSA9IEpzLlVuc2FmZS5jb2VyY2UgZXYgaW5cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMuc3RvcFByb3BhZ2F0aW9uXG4gICAgKGZ1biAoKSAtPiBlIyMuY2FuY2VsQnViYmxlIDo9IEpzLl90cnVlKVxuICAgIChmdW4gXyAtPiBlIyNfc3RvcFByb3BhZ2F0aW9uKVxuXG5sZXQgX3JlcXVlc3RBbmltYXRpb25GcmFtZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXQgPVxuICBKcy5VbnNhZmUucHVyZV9leHByIChmdW4gXyAtPlxuICAgICAgbGV0IHcgPSBKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyBpblxuICAgICAgbGV0IGwgPVxuICAgICAgICBbIHcjIy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHJlcSA9IExpc3QuZmluZCAoZnVuIGMgLT4gSnMuT3B0ZGVmLnRlc3QgYykgbCBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIHJlcSBbfCBKcy5VbnNhZmUuaW5qZWN0IGNhbGxiYWNrIHxdXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgbm93ICgpID0gSnMudG9fZmxvYXQgKG5ldyVqcyBKcy5kYXRlX25vdykjI2dldFRpbWUgaW5cbiAgICAgICAgbGV0IGxhc3QgPSByZWYgKG5vdyAoKSkgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+XG4gICAgICAgICAgbGV0IHQgPSBub3cgKCkgaW5cbiAgICAgICAgICBsZXQgZHQgPSAhbGFzdCArLiAoMTAwMC4gLy4gNjAuKSAtLiB0IGluXG4gICAgICAgICAgbGV0IGR0ID0gaWYgUG9seS4oZHQgPCAwLikgdGhlbiAwLiBlbHNlIGR0IGluXG4gICAgICAgICAgbGFzdCA6PSB0O1xuICAgICAgICAgIGlnbm9yZSAod2luZG93IyNzZXRUaW1lb3V0IGNhbGxiYWNrIChKcy5mbG9hdCBkdCkpKVxuXG4oKioqKilcblxubGV0IGhhc1B1c2hTdGF0ZSAoKSA9IEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyMjLmhpc3RvcnkpIyMucHVzaFN0YXRlXG5cbmxldCBoYXNQbGFjZWhvbGRlciAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5wbGFjZWhvbGRlclxuXG5sZXQgaGFzUmVxdWlyZWQgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucmVxdWlyZWRcblxubGV0IG92ZXJmbG93X2xpbWl0ID0gMjE0NzQ4M18wMDAuXG5cbigqIG1zICopXG5cbnR5cGUgdGltZW91dF9pZF9zYWZlID0gdGltZW91dF9pZCBvcHRpb24gcmVmXG5cbmxldCBzZXRUaW1lb3V0IGNhbGxiYWNrIGQgOiB0aW1lb3V0X2lkX3NhZmUgPVxuICBsZXQgaWQgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgZCAoKSA9XG4gICAgbGV0IHN0ZXAsIHJlbWFpbiA9XG4gICAgICBpZiBQb2x5LihkID4gb3ZlcmZsb3dfbGltaXQpIHRoZW4gb3ZlcmZsb3dfbGltaXQsIGQgLS4gb3ZlcmZsb3dfbGltaXQgZWxzZSBkLCAwLlxuICAgIGluXG4gICAgbGV0IGNiID0gaWYgUG9seS4ocmVtYWluID0gMC4pIHRoZW4gY2FsbGJhY2sgZWxzZSBsb29wIHJlbWFpbiBpblxuICAgIGlkIDo9IFNvbWUgKHdpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBjYikgKEpzLmZsb2F0IHN0ZXApKVxuICBpblxuICBsb29wIGQgKCk7XG4gIGlkXG5cbmxldCBjbGVhclRpbWVvdXQgKGlkIDogdGltZW91dF9pZF9zYWZlKSA9XG4gIG1hdGNoICFpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgaWQgOj0gTm9uZTtcbiAgICAgIHdpbmRvdyMjY2xlYXJUaW1lb3V0IHhcblxubGV0IGpzX2FycmF5X29mX2NvbGxlY3Rpb24gKGMgOiAjZWxlbWVudCBjb2xsZWN0aW9uIEpzLnQpIDogI2VsZW1lbnQgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgPVxuICBKcy5VbnNhZmUuKG1ldGhfY2FsbCAoanNfZXhwciBcIltdLnNsaWNlXCIpIFwiY2FsbFwiIFt8IGluamVjdCBjIHxdKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBmb3JtRGF0YSA9IG9iamVjdFxuICBtZXRob2QgYXBwZW5kIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZF9ibG9iIDoganNfc3RyaW5nIHQgLT4gRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGZvcm1EYXRhIDogZm9ybURhdGEgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbmxldCBmb3JtRGF0YV9mb3JtIDogKGZvcm1FbGVtZW50IHQgLT4gZm9ybURhdGEgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG50eXBlIGZvcm1fZWx0ID1cbiAgWyBgU3RyaW5nIG9mIGpzX3N0cmluZyB0XG4gIHwgYEZpbGUgb2YgRmlsZS5maWxlIHRcbiAgXVxuXG50eXBlIGZvcm1fY29udGVudHMgPVxuICBbIGBGaWVsZHMgb2YgKHN0cmluZyAqIGZvcm1fZWx0KSBsaXN0IHJlZlxuICB8IGBGb3JtRGF0YSBvZiBmb3JtRGF0YSB0XG4gIF1cblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxuY2xhc3MgdHlwZSBzdWJtaXR0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxubGV0IGhhdmVfY29udGVudCAoZWx0IDogc3VibWl0dGFibGVFbGVtZW50IHQpID1cbiAgZWx0IyMubmFtZSMjLmxlbmd0aCA+IDAgJiYgbm90IChKcy50b19ib29sIGVsdCMjLmRpc2FibGVkKVxuXG5sZXQgZ2V0X3RleHRhcmVhX3ZhbCAoZWx0IDogdGV4dEFyZWFFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X3NlbGVjdF92YWwgKGVsdCA6IHNlbGVjdEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBpZiB0b19ib29sIGVsdCMjLm11bHRpcGxlXG4gICAgdGhlblxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBBcnJheS5pbml0IGVsdCMjLm9wdGlvbnMjIy5sZW5ndGggKGZ1biBpIC0+IE9wdC50b19vcHRpb24gKGVsdCMjLm9wdGlvbnMjI2l0ZW0gaSkpXG4gICAgICBpblxuICAgICAgZmlsdGVyX21hcFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAgIGlmIEpzLnRvX2Jvb2wgZSMjLnNlbGVjdGVkIHRoZW4gU29tZSAobmFtZSwgYFN0cmluZyBlIyMudmFsdWUpIGVsc2UgTm9uZSlcbiAgICAgICAgKEFycmF5LnRvX2xpc3Qgb3B0aW9ucylcbiAgICBlbHNlIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxuY2xhc3MgdHlwZSBmaWxlX2lucHV0ID0gb2JqZWN0XG4gIGluaGVyaXQgaW5wdXRFbGVtZW50XG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBnZXRfaW5wdXRfdmFsID8oZ2V0ID0gZmFsc2UpIChlbHQgOiBpbnB1dEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBsZXQgdmFsdWUgPSBlbHQjIy52YWx1ZSBpblxuICAgIG1hdGNoIHRvX2J5dGVzdHJpbmcgZWx0IyMuX3R5cGUjI3RvTG93ZXJDYXNlIHdpdGhcbiAgICB8IFwiY2hlY2tib3hcIiB8IFwicmFkaW9cIiAtPlxuICAgICAgICBpZiB0b19ib29sIGVsdCMjLmNoZWNrZWQgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXSBlbHNlIFtdXG4gICAgfCBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIC0+IFtdXG4gICAgfCBcInRleHRcIiB8IFwicGFzc3dvcmRcIiAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgIHwgXCJmaWxlXCIgLT4gKFxuICAgICAgICBpZiBnZXRcbiAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGVsdCA6IGZpbGVfaW5wdXQgdCA9IFVuc2FmZS5jb2VyY2UgZWx0IGluXG4gICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5maWxlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGxpc3QgLT4gKFxuICAgICAgICAgICAgICBpZiBsaXN0IyMubGVuZ3RoID0gMFxuICAgICAgICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyAoSnMuc3RyaW5nIFwiXCIpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMubXVsdGlwbGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChsaXN0IyNpdGVtIDApIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFsgbmFtZSwgYEZpbGUgZmlsZSBdKVxuICAgICAgICAgICAgICAgIHwgU29tZSB0cnVlIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gZiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gU29tZSAobmFtZSwgYEZpbGUgZmlsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgKEFycmF5LnRvX2xpc3QgKEFycmF5LmluaXQgbGlzdCMjLmxlbmd0aCAoZnVuIGkgLT4gbGlzdCMjaXRlbSBpKSkpKSlcbiAgICB8IF8gLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X2Zvcm1fZWxlbWVudHMgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGZvcm0jIy5lbGVtZW50cyMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgKGkgLSBpKVxuICAgICAgfCBTb21lIHggLT4gbG9vcCAoeCA6OiBhY2MpIChpIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSAoZm9ybSMjLmVsZW1lbnRzIyMubGVuZ3RoIC0gMSlcblxubGV0IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2ID1cbiAgbWF0Y2ggdGFnZ2VkIHYgd2l0aFxuICB8IFNlbGVjdCB2IC0+IGdldF9zZWxlY3RfdmFsIHZcbiAgfCBJbnB1dCB2IC0+IGdldF9pbnB1dF92YWwgP2dldCB2XG4gIHwgVGV4dGFyZWEgdiAtPiBnZXRfdGV4dGFyZWFfdmFsIHZcbiAgfCBfIC0+IFtdXG5cbmxldCBmb3JtX2VsZW1lbnRzID9nZXQgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biB2IC0+IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2KSAoZ2V0X2Zvcm1fZWxlbWVudHMgZm9ybSkpXG5cbmxldCBhcHBlbmQgKGZvcm1fY29udGVudHMgOiBmb3JtX2NvbnRlbnRzKSAoZm9ybV9lbHQgOiBzdHJpbmcgKiBmb3JtX2VsdCkgPVxuICBtYXRjaCBmb3JtX2NvbnRlbnRzIHdpdGhcbiAgfCBgRmllbGRzIGxpc3QgLT4gbGlzdCA6PSBmb3JtX2VsdCA6OiAhbGlzdFxuICB8IGBGb3JtRGF0YSBmIC0+IChcbiAgICAgIG1hdGNoIGZvcm1fZWx0IHdpdGhcbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IGYjI2FwcGVuZCAoc3RyaW5nIG5hbWUpIHNcbiAgICAgIHwgbmFtZSwgYEZpbGUgZmlsZSAtPiBmIyNhcHBlbmRfYmxvYiAoc3RyaW5nIG5hbWUpIChmaWxlIDo+IEZpbGUuYmxvYiB0KSlcblxubGV0IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIChKcy5kZWYgZm9ybURhdGEpIHdpdGhcbiAgfCBOb25lIC0+IGBGaWVsZHMgKHJlZiBbXSlcbiAgfCBTb21lIGNvbnN0ciAtPiBgRm9ybURhdGEgKG5ldyVqcyBjb25zdHIpXG5cbmxldCBwb3N0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIGxldCBjb250ZW50cyA9IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgaW5cbiAgTGlzdC5pdGVyIChhcHBlbmQgY29udGVudHMpIChmb3JtX2VsZW1lbnRzIGZvcm0pO1xuICBjb250ZW50c1xuXG5sZXQgZ2V0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBuYW1lLCB0b19zdHJpbmcgc1xuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAoZm9ybV9lbGVtZW50cyB+Z2V0OnRydWUgZm9ybSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBVTlNFTlRcbiAgfCBPUEVORURcbiAgfCBIRUFERVJTX1JFQ0VJVkVEXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxudHlwZSBfIHJlc3BvbnNlID1cbiAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBCbG9iIDogI0ZpbGUuYmxvYiB0IE9wdC50IHJlc3BvbnNlXG4gIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBPcHQudCByZXNwb25zZVxuICB8IEpTT04gOiAnYSBPcHQudCByZXNwb25zZVxuICB8IFRleHQgOiBqc19zdHJpbmcgdCByZXNwb25zZVxuICB8IERlZmF1bHQgOiBzdHJpbmcgcmVzcG9uc2VcblxuY2xhc3MgdHlwZSB4bWxIdHRwUmVxdWVzdCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbnJlYWR5c3RhdGVjaGFuZ2UgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9vcGVuIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBfb3Blbl9mdWxsIDpcbiAgICAgICBqc19zdHJpbmcgdFxuICAgIC0+IGpzX3N0cmluZyB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJlcXVlc3RIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3ZlcnJpZGVNaW1lVHlwZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kIDoganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiAjRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9mb3JtRGF0YSA6IEZvcm0uZm9ybURhdGEgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdHVzVGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmVzcG9uc2VIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3BvbnNlIDogRmlsZS5maWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVGV4dCA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlWE1MIDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbnRpbWVvdXQgOlxuICAgICgnc2VsZiB0LCAnc2VsZiBGaWxlLnByb2dyZXNzRXZlbnQgdCkgRG9tLmV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwbG9hZCA6IHhtbEh0dHBSZXF1ZXN0VXBsb2FkIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IHhtbEh0dHBSZXF1ZXN0IEZpbGUucHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHRpbWVvdXQgPSBEb20uRXZlbnQubWFrZSBcInRpbWVvdXRcIlxuXG4gIGxldCBsb2FkZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5leHRlcm5hbCBjcmVhdGUgOiB1bml0IC0+IHhtbEh0dHBSZXF1ZXN0IEpzLnQgPSBcImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXCJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgT0NhbWxQcm86IEdyw6lnb2lyZSBIZW5yeSwgw4dhxJ9kYcWfIEJvem1hbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd29ya2VyID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGVycm9yRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdiIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3N0TWVzc2FnZSA6ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXJtaW5hdGUgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXJyb3JFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5lbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2xubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6ICdhIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd29ya2VyID0gVW5zYWZlLmdsb2JhbCMjLl9Xb3JrZXJcblxubGV0IGNyZWF0ZSBzY3JpcHQgPSBuZXclanMgd29ya2VyIChzdHJpbmcgc2NyaXB0KVxuXG5sZXQgaW1wb3J0X3NjcmlwdHMgc2NyaXB0cyA6IHVuaXQgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLmltcG9ydF9zY3JpcHRzIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZnVuX2NhbGxcbiAgICBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0c1xuICAgIChBcnJheS5tYXAgKGZ1biBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKSkgKEFycmF5Lm9mX2xpc3Qgc2NyaXB0cykpXG5cbmxldCBzZXRfb25tZXNzYWdlIGhhbmRsZXIgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBsZXQganNfaGFuZGxlciAoZXYgOiAnYSBtZXNzYWdlRXZlbnQgSnMudCkgPSBoYW5kbGVyIGV2IyMuZGF0YSBpblxuICBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlIDo9IHdyYXBfY2FsbGJhY2sganNfaGFuZGxlclxuXG5sZXQgcG9zdF9tZXNzYWdlIG1zZyA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLnBvc3RNZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmdsb2JhbCMjcG9zdE1lc3NhZ2UgbXNnXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIEphY3F1ZXMtUGFzY2FsIERlcGxhaXhcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NJTkdcbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIGNsb3NlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBjb2RlIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3YXNDbGVhbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYmxvYiA6IEZpbGUuYmxvYiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHdlYlNvY2tldCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdXJsIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkQW1vdW50IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jbG9zZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIGNsb3NlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBleHRlbnNpb25zIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGUgOiBpbnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlQW5kUmVhc29uIDogaW50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBtZXNzYWdlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGJpbmFyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIHNlbmQgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgd2ViU29ja2V0ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2wgPSB3ZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2xzID0gd2ViU29ja2V0XG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCB3ZWJTb2NrZXRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuKCoqIDUuMSBUeXBlcyAqKVxuXG50eXBlIHNpemVpID0gaW50XG5cbnR5cGUgc2l6ZWlwdHIgPSBpbnRcblxudHlwZSBpbnRwdHIgPSBpbnRcblxudHlwZSB1aW50ID0gaW50XG5cbnR5cGUgY2xhbXBmID0gbnVtYmVyX3RcblxudHlwZSB2b2lkXG5cbnR5cGUgY2xlYXJCdWZmZXJNYXNrID0gaW50XG5cbnR5cGUgYmVnaW5Nb2RlXG5cbnR5cGUgYmxlbmRpbmdGYWN0b3JcblxudHlwZSBibGVuZE1vZGVcblxudHlwZSBidWZmZXJUYXJnZXRcblxudHlwZSBidWZmZXJVc2FnZVxuXG50eXBlIGN1bGxGYWNlTW9kZVxuXG50eXBlIGRlcHRoRnVuY3Rpb25cblxudHlwZSBlbmFibGVDYXBcblxudHlwZSBlcnJvckNvZGVcblxudHlwZSBmcm9udEZhY2VEaXJcblxudHlwZSBoaW50VGFyZ2V0XG5cbnR5cGUgaGludE1vZGVcblxudHlwZSB0ZXh0dXJlVW5pdCA9IGludFxuXG50eXBlICdhIHBpeGVsU3RvcmVQYXJhbVxuXG50eXBlIHN0ZW5jaWxPcFxuXG50eXBlIGZiVGFyZ2V0XG5cbnR5cGUgYXR0YWNobWVudFBvaW50XG5cbnR5cGUgcmJUYXJnZXRcblxudHlwZSB0ZXhUYXJnZXRcblxudHlwZSAnYSBwYXJhbWV0ZXJcblxudHlwZSAnYSBidWZmZXJQYXJhbWV0ZXJcblxudHlwZSAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbVxuXG50eXBlIHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbVxuXG50eXBlICdhIGF0dGFjaFBhcmFtXG5cbnR5cGUgZnJhbWVidWZmZXJTdGF0dXNcblxudHlwZSAnYSByZW5kZXJidWZmZXJQYXJhbVxuXG50eXBlIGZvcm1hdFxuXG50eXBlIHBpeGVsRm9ybWF0XG5cbnR5cGUgcGl4ZWxUeXBlXG5cbnR5cGUgJ2EgdGV4UGFyYW1cblxudHlwZSBkYXRhVHlwZVxuXG50eXBlIHNoYWRlclR5cGVcblxudHlwZSAnYSBwcm9ncmFtUGFyYW1cblxudHlwZSAnYSBzaGFkZXJQYXJhbVxuXG50eXBlIHRleHR1cmVGaWx0ZXJcblxudHlwZSB3cmFwTW9kZVxuXG50eXBlIHRleEZpbHRlclxuXG50eXBlIHVuaWZvcm1UeXBlXG5cbnR5cGUgY29sb3JzcGFjZUNvbnZlcnNpb25cblxudHlwZSBzaGFkZXJQcmVjaXNpb25UeXBlXG5cbnR5cGUgb2JqZWN0VHlwZVxuXG4oKiogNS4yIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgKilcbmNsYXNzIHR5cGUgY29udGV4dEF0dHJpYnV0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGVwdGggOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGVuY2lsIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYW50aWFsaWFzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlbXVsdGlwbGllZEFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlc2VydmVEcmF3aW5nQnVmZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQgOiBib29sIHQgcHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMgPVxuICBKcy5VbnNhZmUuKFxuICAgIG9ialxuICAgICAgW3wgXCJhbHBoYVwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwiZGVwdGhcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInN0ZW5jaWxcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJhbnRpYWxpYXNcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInByZW11bHRpcGxpZWRBbHBoYVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2VcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCIsIGluamVjdCBfZmFsc2VcbiAgICAgIHxdKVxuXG50eXBlIGJ1ZmZlclxuXG50eXBlIGZyYW1lYnVmZmVyXG5cbnR5cGUgcHJvZ3JhbVxuXG50eXBlIHJlbmRlcmJ1ZmZlclxuXG50eXBlIHNoYWRlclxuXG50eXBlIHRleHR1cmVcblxudHlwZSAnYSB1bmlmb3JtTG9jYXRpb25cblxuY2xhc3MgdHlwZSBhY3RpdmVJbmZvID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBvYmplY3RcbiAgbWV0aG9kIHJhbmdlTWluIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VNYXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVjaXNpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVuZGVyaW5nQ29udGV4dCA9IG9iamVjdFxuICAoKiogNS4xMy4xIEF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgY2FudmFzIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlcldpZHRoIDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVySGVpZ2h0IDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gICgqKiA1LjEzLjIgR2V0dGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCAqKVxuXG4gIG1ldGhvZCBnZXRDb250ZXh0QXR0cmlidXRlcyA6IGNvbnRleHRBdHRyaWJ1dGVzIHQgbWV0aFxuXG4gICgqKiA1LjEzLjMgU2V0dGluZyBhbmQgZ2V0dGluZyBzdGF0ZSAqKVxuXG4gIG1ldGhvZCBhY3RpdmVUZXh0dXJlIDogdGV4dHVyZVVuaXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb24gOiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA6IGJsZW5kTW9kZSAtPiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuYyA6IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmNTZXBhcmF0ZSA6XG4gICAgYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGVwdGggOiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyU3RlbmNpbCA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sb3JNYXNrIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjdWxsRmFjZSA6IGN1bGxGYWNlTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhNYXNrIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aFJhbmdlIDogY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlzYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcm9udEZhY2UgOiBmcm9udEZhY2VEaXIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhcmFtZXRlciA6ICdhLiAnYSBwYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRFcnJvciA6IGVycm9yQ29kZSBtZXRoXG5cbiAgbWV0aG9kIGhpbnQgOiBoaW50VGFyZ2V0IC0+IGhpbnRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc0VuYWJsZWQgOiBlbmFibGVDYXAgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBpeGVsU3RvcmVpIDogJ2EuICdhIHBpeGVsU3RvcmVQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcG9seWdvbk9mZnNldCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzYW1wbGVDb3ZlcmFnZSA6IGNsYW1wZiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFzayA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wIDogc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcFNlcGFyYXRlIDpcbiAgICBjdWxsRmFjZU1vZGUgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNCBWaWV3aW5nIGFuZCBjbGlwcGluZyAqKVxuXG4gIG1ldGhvZCBzY2lzc29yIDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgdmlld3BvcnQgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjUgQnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEJ1ZmZlciA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEJ1ZmZlcl8gOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX2NyZWF0ZSA6IGJ1ZmZlclRhcmdldCAtPiBzaXplaXB0ciAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQnVmZmVyIDogYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVCdWZmZXIgOiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QnVmZmVyUGFyYW1ldGVyIDogJ2EuIGJ1ZmZlclRhcmdldCAtPiAnYSBidWZmZXJQYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0J1ZmZlciA6IGJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNiBGcmFtZWJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlciA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlcl8gOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyU3RhdHVzIG1ldGhcblxuICBtZXRob2QgY3JlYXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgOlxuICAgICdhLiBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gJ2EgYXR0YWNoUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0ZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjcgUmVuZGVyYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlciA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyXyA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIDogJ2EuIHJiVGFyZ2V0IC0+ICdhIHJlbmRlcmJ1ZmZlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCByZW5kZXJidWZmZXJTdG9yYWdlIDogcmJUYXJnZXQgLT4gZm9ybWF0IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjggVGV4dHVyZSBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFRleHR1cmVfIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleFN1YkltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4SW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBwaXhlbEZvcm1hdCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleFN1YkltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0dXJlIDogdGV4dHVyZSB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVGV4dHVyZSA6IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2VuZXJhdGVNaXBtYXAgOiB0ZXhUYXJnZXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRleFBhcmFtZXRlciA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzVGV4dHVyZSA6IHRleHR1cmUgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX25ldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiB2b2lkIG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoge1tcbiAgICAgIG1ldGhvZCB0ZXhQYXJhbWV0ZXJmIDogdGV4VGFyZ2V0IC0+IHRleFBhcmFtIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuICAgICBdfVxuICAqKVxuICBtZXRob2QgdGV4UGFyYW1ldGVyaSA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOSBQcm9ncmFtcyBhbmQgU2hhZGVycyAqKVxuXG4gIG1ldGhvZCBhdHRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21waWxlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTaGFkZXIgOiBzaGFkZXJUeXBlIC0+IHNoYWRlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRldGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0YWNoZWRTaGFkZXJzIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtUGFyYW1ldGVyIDogJ2EuIHByb2dyYW0gdCAtPiAnYSBwcm9ncmFtUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtSW5mb0xvZyA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclBhcmFtZXRlciA6ICdhLiBzaGFkZXIgdCAtPiAnYSBzaGFkZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA6XG4gICAgc2hhZGVyVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25UeXBlIC0+IHNoYWRlclByZWNpc2lvbkZvcm1hdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVySW5mb0xvZyA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgaXNTaGFkZXIgOiBzaGFkZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5rUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVzZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZhbGlkYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMCBVbmlmb3JtcyBhbmQgYXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZUF0dHJpYiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZVVuaWZvcm0gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtIDogJ2EgJ2IuIHByb2dyYW0gdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm1Mb2NhdGlvbiA6ICdhLiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWIgOiAnYS4gdWludCAtPiAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYk9mZnNldCA6IHVpbnQgLT4gdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIC0+IHNpemVpcHRyIG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmIDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnZfdHlwZWQgOlxuICAgIG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2IDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdl90eXBlZCA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXYgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdl90eXBlZCA6XG4gICAgWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2IDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaSA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdiA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2YgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdl90eXBlZCA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2IDogWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaSA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXYgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2X3R5cGVkIDpcbiAgICBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmIDpcbiAgICAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2X3R5cGVkIDpcbiAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnYgOiBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpIDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXYgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2X3R5cGVkIDpcbiAgICBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdiA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2X3R5cGVkIDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2IDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnZfdHlwZWQgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnYgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdl90eXBlZCA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWYgOiB1aW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGYgOlxuICAgIHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliUG9pbnRlciA6XG4gICAgdWludCAtPiBpbnQgLT4gZGF0YVR5cGUgLT4gYm9vbCB0IC0+IHNpemVpIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMSBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqKVxuXG4gIG1ldGhvZCBjbGVhciA6IGNsZWFyQnVmZmVyTWFzayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0FycmF5cyA6IGJlZ2luTW9kZSAtPiBpbnQgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdFbGVtZW50cyA6IGJlZ2luTW9kZSAtPiBzaXplaSAtPiBkYXRhVHlwZSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbmlzaCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmbHVzaCA6IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEyIFJlYWRpbmcgYmFjayBwaXhlbHMgKilcblxuICBtZXRob2QgcmVhZFBpeGVscyA6XG4gICAgICAgaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTMgRGV0ZWN0aW5nIGNvbnRleHQgbG9zdCBldmVudHMgKilcblxuICBtZXRob2QgaXNDb250ZXh0TG9zdCA6IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTQgRGV0ZWN0aW5nIGFuZCBlbmFibGluZyBleHRlbnNpb25zICopXG5cbiAgbWV0aG9kIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW5zaW9uIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIHQgb3B0IG1ldGhcblxuICAoKiBVbnR5cGVkISAqKVxuICAoKiogQ29uc3RhbnRzICopXG5cbiAgbWV0aG9kIF9ERVBUSF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPSU5UUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX0xPT1BfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfRkFOXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBX1NBVFVSQVRFXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfQUREXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUUkVBTV9EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUQVRJQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RZTkFNSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVCA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CQUNLIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0FORF9CQUNLXyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUiA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PX0VSUk9SXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0VOVU1fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfVkFMVUVfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PVVRfT0ZfTUVNT1JZXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05URVhUX0xPU1RfV0VCR0xfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRE9OVF9DQVJFXyA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZBU1RFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OSUNFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF8gOiBoaW50VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fUkdCXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fQUxQSEFfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfQ09MT1JfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUl9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfV0lEVEhfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfTU9ERV8gOiBjdWxsRmFjZU1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0ZBQ0VfIDogZnJvbnRGYWNlRGlyIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfV1JJVEVNQVNLXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ0xFQVJfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0ZVTkNfIDogZGVwdGhGdW5jdGlvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9DTEVBUl9WQUxVRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZJRVdQT1JUIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX0JPWF8gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0NMRUFSX1ZBTFVFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9XUklURU1BU0tfIDogYm9vbCB0IGpzX2FycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfUEFSQU0gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BBQ0tfQUxJR05NRU5UXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WSUVXUE9SVF9ESU1TXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1VCUElYRUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFRF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFRU5fQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMVUVfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfVU5JVFNfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUl8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HXzJEXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR19DVUJFX01BUF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQlVGRkVSU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlRfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBUeXBlZF9hcnJheS51aW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF9QQVJBTV8gOiBoaW50TW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1NJWkVfIDogaW50IGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfVVNBR0VfIDogYnVmZmVyVXNhZ2UgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JZVEUgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFX0RUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hPUlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9JTlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF80XzRfNF80XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzZfNV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0IgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFX0FMUEhBXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVhfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlRfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBR01FTlRfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfQVRUUklCU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZBUllJTkdfVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBREVSX1RZUEVfIDogc2hhZGVyVHlwZSBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QSUxFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU19QUk9HIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5LX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZBTElEQVRFX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FUVEFDSEVEX1NIQURFUlNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVU5JRk9STVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfQVRUUklCVVRFU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTl8gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9QUk9HUkFNXyA6IHByb2dyYW0gdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFTkRPUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJFUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJTSU9OIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVEVYVFVSRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0JJTkRJTkdfIDogZnJhbWVidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CSU5ESU5HXyA6IHJlbmRlcmJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1JFTkRFUkJVRkZFUl9TSVpFIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORVZFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVTUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFQVRFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9URVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxXQVlTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9LRUVQIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUExBQ0UgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkVSVCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVST18gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVCA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVIgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01BR19GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUlOX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1NfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1RfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFXzJEXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUEVBVCA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NMQU1QX1RPX0VER0VfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUlSUk9SRURfUkVQRUFUXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQ0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfMkRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl9DVUJFXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUl8gOiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR18gOlxuICAgIGJ1ZmZlciB0IG9wdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUJfIDpcbiAgICBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSIDogZmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSIDogcmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQTQgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNV9BMV8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNTY1IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVDE2XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYOF8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1dJRFRIXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSEVJR0hUXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUXyA6IGZvcm1hdCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfUkVEX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfIDogb2JqZWN0VHlwZSBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1JFTkRFUkJVRkZFUiA6XG4gICAgcmVuZGVyYnVmZmVyIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9URVhUVVJFIDogdGV4dHVyZSB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTF8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0FUVEFDSE1FTlQwXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQ09NUExFVEVfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU18gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfUEFSQU0gOlxuICAgIGNvbG9yc3BhY2VDb252ZXJzaW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlJPV1NFUl9ERUZBVUxUX1dFQkdMXyA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogNS4xNCBXZWJHTENvbnRleHRFdmVudCAqKVxuXG5jbGFzcyB0eXBlIGNvbnRleHRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50XG5cbiAgbWV0aG9kIHN0YXR1c01lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCB3ZWJnbGNvbnRleHRsb3N0ID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGxvc3RcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvclwiXG5lbmRcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0XyA6IGpzX3N0cmluZyB0IC0+IGNvbnRleHRBdHRyaWJ1dGVzIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGdldENvbnRleHQgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHQgKEpzLnN0cmluZyBcIndlYmdsXCIpIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMgIyMgKGdldENvbnRleHQgKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSlcblxubGV0IGdldENvbnRleHRXaXRoQXR0cmlidXRlcyAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgYXR0cmlicyA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwid2ViZ2xcIikgYXR0cmlicyBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpIGF0dHJpYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0LCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWdleHAgPSBKcy5yZWdFeHAgSnMudFxuXG50eXBlIHJlc3VsdCA9IEpzLm1hdGNoX3Jlc3VsdCBKcy50XG5cbmxldCByZWdleHAgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ2lcIilcblxubGV0IHJlZ2V4cF93aXRoX2ZsYWcgcyBmID1cbiAgbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyAoXCJnXCIgXiBmKSlcblxubGV0IGJsdW50X3N0cl9hcnJheV9nZXQgYSBpID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGEgaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuXG5sZXQgc3RyaW5nX21hdGNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQubWFwIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKSBKcy5tYXRjaF9yZXN1bHQpXG5cbmxldCBzZWFyY2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb25cbiAgICAoSnMuT3B0Lm1hcFxuICAgICAgIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgIChmdW4gcmVzX3ByZSAtPlxuICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCByZXNfcHJlIGluXG4gICAgICAgICByZXMjIy5pbmRleCwgcmVzKSlcblxubGV0IHNlYXJjaF9mb3J3YXJkID0gc2VhcmNoXG5cbmxldCBtYXRjaGVkX3N0cmluZyByID0gYmx1bnRfc3RyX2FycmF5X2dldCByIDBcblxubGV0IG1hdGNoZWRfZ3JvdXAgciBpID1cbiAgSnMuT3B0ZGVmLnRvX29wdGlvbiAoSnMuT3B0ZGVmLm1hcCAoSnMuYXJyYXlfZ2V0IHIgaSkgSnMudG9fYnl0ZXN0cmluZylcblxubGV0IHF1b3RlX3JlcGxfcmUgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiWyRdXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCBxdW90ZV9yZXBsIHMgPSAoSnMuYnl0ZXN0cmluZyBzKSMjcmVwbGFjZSBxdW90ZV9yZXBsX3JlIChKcy5zdHJpbmcgXCIkJCQkXCIpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSByIHMgc19ieSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgcmVwbGFjZV9maXJzdCByIHMgc19ieSA9XG4gIGxldCBmbGFncyA9XG4gICAgbWF0Y2ggSnMudG9fYm9vbCByIyMuaWdub3JlQ2FzZSwgSnMudG9fYm9vbCByIyMubXVsdGlsaW5lIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJcIlxuICAgIHwgZmFsc2UsIHRydWUgLT4gSnMuc3RyaW5nIFwibVwiXG4gICAgfCB0cnVlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJpXCJcbiAgICB8IHRydWUsIHRydWUgLT4gSnMuc3RyaW5nIFwibWlcIlxuICBpblxuICBsZXQgcicgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyByIyMuc291cmNlIGZsYWdzIGluXG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcicgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCBsaXN0X29mX2pzX2FycmF5IGEgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGlkeCA9XG4gICAgaWYgaWR4IDwgMCB0aGVuIGFjY3UgZWxzZSBhdXggKGJsdW50X3N0cl9hcnJheV9nZXQgYSBpZHggOjogYWNjdSkgKGlkeCAtIDEpXG4gIGluXG4gIGF1eCBbXSAoYSMjLmxlbmd0aCAtIDEpXG5cbmxldCBzcGxpdCByIHMgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwIHIpKVxuXG5sZXQgYm91bmRlZF9zcGxpdCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHBMaW1pdGVkIHIgaSkpXG5cbigqIE1vcmUgY29uc3RydWN0b3JzICopXG5cbmxldCBxdW90ZV9yZSA9IHJlZ2V4cCBcIltcXFxcXVsoKVxcXFxcXFxcfCsqLj97fV4kXVwiXG5cbmxldCBxdW90ZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSBxdW90ZV9yZSAoSnMuc3RyaW5nIFwiXFxcXCQmXCIpKVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gcmVnZXhwIChxdW90ZSBzKVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IHJlZ2V4cF9jYXNlX2ZvbGQgKHF1b3RlIHMpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVXJsIHRhbXBlcmluZy4gKilcblxubGV0IHNwbGl0IGMgcyA9IEpzLnN0cl9hcnJheSAocyMjc3BsaXQgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkpXG5cbmxldCBzcGxpdF8yIGMgcyA9XG4gIGxldCBpbmRleCA9IHMjI2luZGV4T2YgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkgaW5cbiAgaWYgaW5kZXggPCAwIHRoZW4gSnMudW5kZWZpbmVkIGVsc2UgSnMuZGVmIChzIyNzbGljZSAwIGluZGV4LCBzIyNzbGljZV9lbmQgKGluZGV4ICsgMSkpXG5cbmV4Y2VwdGlvbiBMb2NhbF9leG5cblxubGV0IGludGVycnVwdCAoKSA9IHJhaXNlIExvY2FsX2V4blxuXG4oKiB1cmwgKEFLQSBwZXJjZW50KSBlbmNvZGluZy9kZWNvZGluZyAqKVxuXG5sZXQgcGx1c19yZSA9IFJlZ2V4cC5yZWdleHBfc3RyaW5nIFwiK1wiXG5cbmxldCBlc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiUyQlwiXG5cbmxldCB1bmVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiIFwiXG5cbmxldCBwbHVzX3JlX2pzX3N0cmluZyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJcXFxcK1wiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgdW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcyA9XG4gIHBsdXNfcmVfanNfc3RyaW5nIyMubGFzdEluZGV4IDo9IDA7XG4gIHMjI3JlcGxhY2UgcGx1c19yZV9qc19zdHJpbmcgKEpzLnN0cmluZyBcIiBcIilcblxubGV0IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAodW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcykpXG5cbmxldCB1cmxkZWNvZGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlIChKcy5ieXRlc3RyaW5nICh1bmVzY2FwZV9wbHVzIHMpKSlcblxuKCpsZXQgdXJsZW5jb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSBzKSopXG5cbmxldCB1cmxlbmNvZGUgPyh3aXRoX3BsdXMgPSB0cnVlKSBzID1cbiAgaWYgd2l0aF9wbHVzXG4gIHRoZW4gZXNjYXBlX3BsdXMgKEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSkpXG4gIGVsc2UgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKVxuXG50eXBlIGh0dHBfdXJsID1cbiAgeyBodV9ob3N0IDogc3RyaW5nICAoKiogVGhlIGhvc3QgcGFydCBvZiB0aGUgdXJsLiAqKVxuICA7IGh1X3BvcnQgOiBpbnQgICgqKiBUaGUgcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb24gaWYgYW55LiAqKVxuICA7IGh1X3BhdGggOiBzdHJpbmcgbGlzdCAgKCoqIFRoZSBwYXRoIHNwbGl0IG9uIFsnLyddIGNoYXJhY3RlcnMuICopXG4gIDsgaHVfcGF0aF9zdHJpbmcgOiBzdHJpbmcgICgqKiBUaGUgb3JpZ2luYWwgZW50aXJlIHBhdGguICopXG4gIDsgaHVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgICAgICAoKiogQXJndW1lbnRzIGFzIGEgZmllbGQtdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0aW9uIGxpc3QuKilcbiAgOyBodV9mcmFnbWVudCA6IHN0cmluZyAgKCoqIFRoZSBmcmFnbWVudCBwYXJ0IChhZnRlciB0aGUgWycjJ10gY2hhcmFjdGVyKS4gKilcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBIVFRQIHVybC4gKilcblxudHlwZSBmaWxlX3VybCA9XG4gIHsgZnVfcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZnVfcGF0aF9zdHJpbmcgOiBzdHJpbmdcbiAgOyBmdV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIDsgZnVfZnJhZ21lbnQgOiBzdHJpbmdcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBsb2NhbCBmaWxlIHVybHMuICopXG5cbnR5cGUgdXJsID1cbiAgfCBIdHRwIG9mIGh0dHBfdXJsXG4gIHwgSHR0cHMgb2YgaHR0cF91cmxcbiAgfCBGaWxlIG9mIGZpbGVfdXJsXG4gICAgICAoKiogVGhlIHR5cGUgZm9yIHVybHMuIFtGaWxlXSBpcyBmb3IgbG9jYWwgZmlsZXMgYW5kIFtFeG90aWMgc10gaXMgZm9yXG4gICAgdW5rbm93bi91bnN1cHBvcnRlZCBwcm90b2NvbHMuICopXG5cbmV4Y2VwdGlvbiBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG5sZXQgaXNfc2VjdXJlIHByb3Rfc3RyaW5nID1cbiAgbWF0Y2ggSnMudG9fYnl0ZXN0cmluZyBwcm90X3N0cmluZyMjdG9Mb3dlckNhc2Ugd2l0aFxuICB8IFwiaHR0cHM6XCIgfCBcImh0dHBzXCIgLT4gdHJ1ZVxuICB8IFwiaHR0cDpcIiB8IFwiaHR0cFwiIC0+IGZhbHNlXG4gIHwgXCJmaWxlOlwiIHwgXCJmaWxlXCIgfCBfIC0+IHJhaXNlIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbigqIHBvcnQgbnVtYmVyICopXG5sZXQgZGVmYXVsdF9odHRwX3BvcnQgPSA4MFxuXG5sZXQgZGVmYXVsdF9odHRwc19wb3J0ID0gNDQzXG5cbigqIHBhdGggKilcbmxldCBwYXRoX29mX3BhdGhfc3RyaW5nIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBsZXQgaiA9IHRyeSBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgJy8nIHdpdGggTm90X2ZvdW5kIC0+IGwgaW5cbiAgICBsZXQgd29yZCA9IFN0cmluZy5zdWIgcyBpIChqIC0gaSkgaW5cbiAgICBpZiBqID49IGwgdGhlbiBbIHdvcmQgXSBlbHNlIHdvcmQgOjogYXV4IChqICsgMSlcbiAgaW5cbiAgbWF0Y2ggYXV4IDAgd2l0aFxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgWyBcIlwiOyBcIlwiIF0gLT4gWyBcIlwiIF1cbiAgfCBhIC0+IGFcblxuKCogQXJndW1lbnRzICopXG5sZXQgZW5jb2RlX2FyZ3VtZW50cyBsID1cbiAgU3RyaW5nLmNvbmNhdCBcIiZcIiAoTGlzdC5tYXAgKGZ1biAobiwgdikgLT4gdXJsZW5jb2RlIG4gXiBcIj1cIiBeIHVybGVuY29kZSB2KSBsKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgcyA9XG4gIGxldCBhcnIgPSBzcGxpdCAnJicgcyBpblxuICBsZXQgbGVuID0gYXJyIyMubGVuZ3RoIGluXG4gIGxldCBuYW1lX3ZhbHVlX3NwbGl0IHMgPSBzcGxpdF8yICc9JyBzIGluXG4gIGxldCByZWMgYXV4IGFjYyBpZHggPVxuICAgIGlmIGlkeCA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBhdXhcbiAgICAgICAgICAoSnMuT3B0ZGVmLmNhc2UgKEpzLmFycmF5X2dldCBhcnIgaWR4KSBpbnRlcnJ1cHQgKGZ1biBzIC0+XG4gICAgICAgICAgICAgICBKcy5PcHRkZWYuY2FzZSAobmFtZV92YWx1ZV9zcGxpdCBzKSBpbnRlcnJ1cHQgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZ2V0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICBnZXQgeCwgZ2V0IHkpKVxuICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAocHJlZCBpZHgpXG4gICAgICB3aXRoIExvY2FsX2V4biAtPiBhdXggYWNjIChwcmVkIGlkeClcbiAgaW5cbiAgYXV4IFtdIChsZW4gLSAxKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50cyBzID0gZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHVybF9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZ1xuICAgICAgIFwiXihbSGhdW1R0XVtUdF1bUHBdW1NzXT8pOi8vKFswLTlhLXpBLVouLV0rfFxcXFxbWzAtOWEtekEtWi4tXStcXFxcXXxcXFxcW1swLTlBLUZhLWY6Ll0rXFxcXF0pPyg6KFswLTldKykpPygvKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8pPyRcIilcblxubGV0IGZpbGVfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmcgXCJeKFtGZl1bSWldW0xsXVtFZV0pOi8vKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8kXCIpXG5cbmxldCB1cmxfb2ZfanNfc3RyaW5nIHMgPVxuICBKcy5PcHQuY2FzZVxuICAgICh1cmxfcmUjI2V4ZWMgcylcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoZmlsZV9yZSMjZXhlYyBzKVxuICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKEZpbGVcbiAgICAgICAgICAgICAgIHsgZnVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICA7IGZ1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgICAgICAgICBKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICB9KSkpXG4gICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICBsZXQgc3NsID0gaXNfc2VjdXJlIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEpIGludGVycnVwdCkgaW5cbiAgICAgIGxldCBwb3J0X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBpZiBzc2wgdGhlbiA0NDMgZWxzZSA4MFxuICAgICAgICB8IHMgLT4gaW50X29mX3N0cmluZyBzXG4gICAgICBpblxuICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICBpblxuICAgICAgbGV0IHVybCA9XG4gICAgICAgIHsgaHVfaG9zdCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgIDsgaHVfcG9ydCA9XG4gICAgICAgICAgICBwb3J0X29mX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpKVxuICAgICAgICA7IGh1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgIDsgaHVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICA7IGh1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA4KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIDsgaHVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMTApIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIFNvbWUgKGlmIHNzbCB0aGVuIEh0dHBzIHVybCBlbHNlIEh0dHAgdXJsKSlcblxubGV0IHVybF9vZl9zdHJpbmcgcyA9IHVybF9vZl9qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHN0cmluZ19vZl91cmwgPSBmdW5jdGlvblxuICB8IEZpbGUgeyBmdV9wYXRoID0gcGF0aDsgZnVfYXJndW1lbnRzID0gYXJnczsgZnVfZnJhZ21lbnQgPSBmcmFnOyBfIH0gLT4gKFxuICAgICAgXCJmaWxlOi8vXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDgwIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBzXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwczovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA0NDMgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG5cbm1vZHVsZSBDdXJyZW50ID0gc3RydWN0XG4gIGxldCBsID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuT3B0ZGVmLnJldHVybiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbilcbiAgICB0aGVuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uXG4gICAgZWxzZVxuICAgICAgbGV0IGVtcHR5ID0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgICAgIG9iamVjdCVqc1xuICAgICAgICB2YWwgbXV0YWJsZSBocmVmID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwcm90b2NvbCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBvcnQgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBhdGhuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBzZWFyY2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhhc2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBvcmlnaW4gPSBKcy51bmRlZmluZWRcblxuICAgICAgICBtZXRob2QgcmVsb2FkID0gKClcblxuICAgICAgICBtZXRob2QgcmVwbGFjZSBfID0gKClcblxuICAgICAgICBtZXRob2QgYXNzaWduIF8gPSAoKVxuICAgICAgZW5kXG5cbiAgbGV0IGhvc3QgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaG9zdG5hbWVcblxuICBsZXQgcHJvdG9jb2wgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucHJvdG9jb2xcblxuICBsZXQgcG9ydCA9XG4gICAgKGZ1biAoKSAtPlxuICAgICAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKEpzLnRvX2J5dGVzdHJpbmcgbCMjLnBvcnQpKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lKVxuICAgICAgKClcblxuICBsZXQgcGF0aF9zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucGF0aG5hbWVcblxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJpbmdcblxuICBsZXQgYXJndW1lbnRzID1cbiAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgKGlmIEpzLmVxdWFscyAobCMjLnNlYXJjaCMjY2hhckF0IDApIChKcy5zdHJpbmcgXCI/XCIpXG4gICAgICAgdGhlbiBsIyMuc2VhcmNoIyNzbGljZV9lbmQgMVxuICAgICAgIGVsc2UgbCMjLnNlYXJjaClcblxuICBsZXQgZ2V0X2ZyYWdtZW50ICgpID1cbiAgICBsZXQgcyA9IEpzLnRvX2J5dGVzdHJpbmcgbCMjLmhhc2ggaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIENoYXIuZXF1YWwgcy5bMF0gJyMnXG4gICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICBlbHNlIHNcblxuICBsZXQgc2V0X2ZyYWdtZW50IHMgPSBsIyMuaGFzaCA6PSBKcy5ieXRlc3RyaW5nIHNcblxuICBsZXQgZ2V0ICgpID0gdXJsX29mX2pzX3N0cmluZyBsIyMuaHJlZlxuXG4gIGxldCBzZXQgdSA9IGwjIy5ocmVmIDo9IEpzLmJ5dGVzdHJpbmcgKHN0cmluZ19vZl91cmwgdSlcblxuICBsZXQgYXNfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhyZWZcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG5leHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG5sZXQgdXBkYXRlX2ZpbGUgfm5hbWUgfmNvbnRlbnQgPVxuICBsZXQgb2MgPSBvcGVuX291dCBuYW1lIGluXG4gIG91dHB1dF9zdHJpbmcgb2MgY29udGVudDtcbiAgY2xvc2Vfb3V0IG9jXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOlxuICBvdXRfY2hhbm5lbCAtPiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG5sZXQgc2V0X2NoYW5uZWxfZmx1c2hlciAob3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCkgKGYgOiBzdHJpbmcgLT4gdW5pdCkgPVxuICBsZXQgZicgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgPVxuICAgIEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzIC0+IGYgKEpzLnRvX2J5dGVzdHJpbmcgcykpXG4gIGluXG4gIHNldF9jaGFubmVsX291dHB1dCcgb3V0X2NoYW5uZWwgZidcblxubGV0IHNldF9jaGFubmVsX2ZpbGxlciAoaW5fY2hhbm5lbCA6IGluX2NoYW5uZWwpIChmIDogdW5pdCAtPiBzdHJpbmcpID1cbiAgbGV0IGYnIDogKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgZiBpblxuICBzZXRfY2hhbm5lbF9pbnB1dCcgaW5fY2hhbm5lbCBmJ1xuXG5leHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbmV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDpcbiAgc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG5leHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbmxldCBtb3VudCB+cGF0aCBmID1cbiAgbW91bnRfYXV0b2xvYWQgcGF0aCAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZWZpeCBwYXRoIC0+IGYgfnByZWZpeCB+cGF0aCkpXG5cbmxldCB1bm1vdW50IH5wYXRoID0gdW5tb3VudCBwYXRoXG5cbmxldCBqc19vZl9vY2FtbF92ZXJzaW9uID1cbiAgaWYgU3RyaW5nLmVxdWFsIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uIFwiXCJcbiAgdGhlbiBMaWJfdmVyc2lvbi5zXG4gIGVsc2UgTGliX3ZlcnNpb24ucyBeIFwiK1wiIF4gTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWxleGFuZGVyIFlhbmluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlclNpemUgPSBvYmplY3RcbiAgbWV0aG9kIGlubGluZVNpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJsb2NrU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudEJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgYm94IDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ic2VydmVfd2l0aE9wdGlvbnMgOlxuICAgICNEb20ubm9kZSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCByZXNpemVPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUmVzaXplT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHJlc2l6ZU9ic2VydmVyXG5cbmxldCByZXNpemVPYnNlcnZlciA6XG4gICAgKCAgIChyZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcmVzaXplT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiByZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhib3ggOiBKcy5qc19zdHJpbmcgSnMudCBvcHRpb24pXG4gICAgKCkgOiByZXNpemVPYnNlcnZlciBKcy50ID1cbiAgbGV0IG9icyA9IG5ldyVqcyByZXNpemVPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICAobWF0Y2ggYm94IHdpdGhcbiAgfCBOb25lIC0+IG9icyMjb2JzZXJ2ZSBub2RlXG4gIHwgU29tZSBib3ggLT5cbiAgICAgIGxldCBvcHRzID0gZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgaW5cbiAgICAgIG9wdHMjIy5ib3ggOj0gYm94O1xuICAgICAgb2JzIyNvYnNlcnZlX3dpdGhPcHRpb25zIG5vZGUgb3B0cyk7XG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAyMSBQaGlsaXAgV2hpdGVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGVudHJ5VHlwZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZUVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbnRyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0VGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRFbnRyaWVzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgOlxuICAgICggICAocGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCBKcy50IC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZSB+ZW50cnlfdHlwZXMgfmYgPVxuICBsZXQgZW50cnlfdHlwZXMgPSBlbnRyeV90eXBlcyB8PiBMaXN0Lm1hcCBKcy5zdHJpbmcgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSBpblxuICBsZXQgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgbGV0ICgpID0gcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCMjLmVudHJ5VHlwZXMgOj0gZW50cnlfdHlwZXMgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBwZXJmb3JtYW5jZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGNoaWxkTGlzdCA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VidHJlZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlRmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25SZWNvcmQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVtb3ZlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZXNwYWNlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIDogbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fTXV0YXRpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA6XG4gICAgKCAgIChtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oY2hpbGRfbGlzdCA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlcyA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGEgOiBib29sIG9wdGlvbilcbiAgICA/KHN1YnRyZWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX2ZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3Qgb3B0aW9uKVxuICAgICgpIDogbXV0YXRpb25PYnNlcnZlciBKcy50ID1cbiAgbGV0IG9wdF9pdGVyIHggZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvYnMgPSBuZXclanMgbXV0YXRpb25PYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgY2ZnID0gZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGlsZF9saXN0IChmdW4gdiAtPiBjZmcjIy5jaGlsZExpc3QgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlcyAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlcyA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBzdWJ0cmVlIChmdW4gdiAtPiBjZmcjIy5zdWJ0cmVlIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZU9sZFZhbHVlIDo9IHYpIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOj0gdilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBhdHRyaWJ1dGVfZmlsdGVyIChmdW4gbCAtPlxuICAgICAgICBjZmcjIy5hdHRyaWJ1dGVGaWx0ZXIgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkpXG4gIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBub2RlIGNmZyBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgUGllcnJlIENoYW1iYXJ0IDIwMTIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gPCA+IEpzLnRcblxubGV0IG9iaiA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgKHYgOiAnYSkgPVxuICAoKiAnXycgaXMgYWRkZWQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb2JqZWN0cyBtZXRob2RzICopXG4gIEpzLlVuc2FmZS5zZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKSB2XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA9XG4gIEpzLlVuc2FmZS5kZWxldGUgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpIDogJ2EgSnMuT3B0ZGVmLnQgPVxuICBKcy5VbnNhZmUuZ2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3QgPVxuICBsZXQga2V5X2FycmF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gICAgSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3QjI2tleXMgdFxuICBpblxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBwcmVkIGtleV9hcnJheSMjLmxlbmd0aCBkb1xuICAgIGxldCBrZXkgPVxuICAgICAgSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGtleV9hcnJheSBpKSAoZnVuICgpIC0+IGZhaWx3aXRoIFwiSnN0YWJsZS5rZXlzXCIpXG4gICAgaW5cbiAgICByZXMgOj0ga2V5IyNzdWJzdHJpbmcgMCAocHJlZCBrZXkjIy5sZW5ndGgpIDo6ICFyZXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXJlc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBHcsOpZ29pcmUgSGVucnkgMjAxMC5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBwYXJzZV8gOlxuICAgICdhICdiICdjICdkLiBqc19zdHJpbmcgdCAtPiAoJ2IgdCwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnlfIDpcbiAgICAnYSAnYiAnYyAnZC4gJ2EgLT4gKCdiLCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGpzb24gOiBqc29uIEpzLnQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGlucHV0X3Jldml2ZXIgPVxuICBsZXQgcmV2aXZlciBfdGhpcyBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIHZhbHVlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBPYmoucmVwciAodG9fYnl0ZXN0cmluZyAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkpXG4gICAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIEpzLmFycmF5X2VtcHR5XG4gICAgICAgICAgICAmJiAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkjIy5sZW5ndGggPT0gNFxuICAgICAgICAgICAgJiYgVW5zYWZlLmdldCB2YWx1ZSAwID09IDI1NVxuICAgIHRoZW5cbiAgICAgIE9iai5yZXByXG4gICAgICAgIChKc29vX3J1bnRpbWUuSW50NjQuY3JlYXRlX2ludDY0X2xvX21pX2hpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDEpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDIpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDMpKVxuICAgIGVsc2UgT2JqLnJlcHIgdmFsdWVcbiAgaW5cbiAgd3JhcF9tZXRoX2NhbGxiYWNrIHJldml2ZXJcblxubGV0IHVuc2FmZV9pbnB1dCBzID0ganNvbiMjcGFyc2VfIHMgaW5wdXRfcmV2aXZlclxuXG5jbGFzcyB0eXBlIG9iaiA9IG9iamVjdFxuICBtZXRob2QgY29uc3RydWN0b3IgOiAnYS4gJ2EgY29uc3RyIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbWxJbnQ2NF9jb25zdHIgPVxuICBsZXQgZHVtbXlfaW50NjQgPSAxTCBpblxuICBsZXQgZHVtbXlfb2JqIDogb2JqIHQgPSBPYmoubWFnaWMgZHVtbXlfaW50NjQgaW5cbiAgZHVtbXlfb2JqIyMuY29uc3RydWN0b3JcblxubGV0IG91dHB1dF9yZXZpdmVyIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gIGlmIE9iai50YWcgKE9iai5yZXByIHZhbHVlKSA9IE9iai5zdHJpbmdfdGFnXG4gIHRoZW4gT2JqLnJlcHIgKGJ5dGVzdHJpbmcgKE9iai5tYWdpYyB2YWx1ZSA6IHN0cmluZykpXG4gIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBtbEludDY0X2NvbnN0clxuICB0aGVuXG4gICAgbGV0IHZhbHVlID0gVW5zYWZlLmNvZXJjZSB2YWx1ZSBpblxuICAgIE9iai5yZXByIChhcnJheSBbfCAyNTU7IHZhbHVlIyMubG87IHZhbHVlIyMubWk7IHZhbHVlIyMuaGkgfF0pXG4gIGVsc2UgT2JqLnJlcHIgdmFsdWVcblxubGV0IG91dHB1dCBvYmogPSBqc29uIyNzdHJpbmdpZnlfIG9iaiAoSnMud3JhcF9jYWxsYmFjayBvdXRwdXRfcmV2aXZlcilcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICAoKiBUaGUgdHlwZSBvZiBDU1MgY29sb3JzLiBGaXJzdCBieSBuYW1lIGFuZCB0aGVuIGJ5IGNvbnN0cnVjdG9yLiAqKVxuICB0eXBlIG5hbWUgPVxuICAgIHwgQWxpY2VibHVlXG4gICAgfCBBbnRpcXVld2hpdGVcbiAgICB8IEFxdWFcbiAgICB8IEFxdWFtYXJpbmVcbiAgICB8IEF6dXJlXG4gICAgfCBCZWlnZVxuICAgIHwgQmlzcXVlXG4gICAgfCBCbGFja1xuICAgIHwgQmxhbmNoZWRhbG1vbmRcbiAgICB8IEJsdWVcbiAgICB8IEJsdWV2aW9sZXRcbiAgICB8IEJyb3duXG4gICAgfCBCdXJseXdvb2RcbiAgICB8IENhZGV0Ymx1ZVxuICAgIHwgQ2hhcnRyZXVzZVxuICAgIHwgQ2hvY29sYXRlXG4gICAgfCBDb3JhbFxuICAgIHwgQ29ybmZsb3dlcmJsdWVcbiAgICB8IENvcm5zaWxrXG4gICAgfCBDcmltc29uXG4gICAgfCBDeWFuXG4gICAgfCBEYXJrYmx1ZVxuICAgIHwgRGFya2N5YW5cbiAgICB8IERhcmtnb2xkZW5yb2RcbiAgICB8IERhcmtncmF5XG4gICAgfCBEYXJrZ3JlZW5cbiAgICB8IERhcmtncmV5XG4gICAgfCBEYXJra2hha2lcbiAgICB8IERhcmttYWdlbnRhXG4gICAgfCBEYXJrb2xpdmVncmVlblxuICAgIHwgRGFya29yYW5nZVxuICAgIHwgRGFya29yY2hpZFxuICAgIHwgRGFya3JlZFxuICAgIHwgRGFya3NhbG1vblxuICAgIHwgRGFya3NlYWdyZWVuXG4gICAgfCBEYXJrc2xhdGVibHVlXG4gICAgfCBEYXJrc2xhdGVncmF5XG4gICAgfCBEYXJrc2xhdGVncmV5XG4gICAgfCBEYXJrdHVycXVvaXNlXG4gICAgfCBEYXJrdmlvbGV0XG4gICAgfCBEZWVwcGlua1xuICAgIHwgRGVlcHNreWJsdWVcbiAgICB8IERpbWdyYXlcbiAgICB8IERpbWdyZXlcbiAgICB8IERvZGdlcmJsdWVcbiAgICB8IEZpcmVicmlja1xuICAgIHwgRmxvcmFsd2hpdGVcbiAgICB8IEZvcmVzdGdyZWVuXG4gICAgfCBGdWNoc2lhXG4gICAgfCBHYWluc2Jvcm9cbiAgICB8IEdob3N0d2hpdGVcbiAgICB8IEdvbGRcbiAgICB8IEdvbGRlbnJvZFxuICAgIHwgR3JheVxuICAgIHwgR3JleVxuICAgIHwgR3JlZW5cbiAgICB8IEdyZWVueWVsbG93XG4gICAgfCBIb25leWRld1xuICAgIHwgSG90cGlua1xuICAgIHwgSW5kaWFucmVkXG4gICAgfCBJbmRpZ29cbiAgICB8IEl2b3J5XG4gICAgfCBLaGFraVxuICAgIHwgTGF2ZW5kZXJcbiAgICB8IExhdmVuZGVyYmx1c2hcbiAgICB8IExhd25ncmVlblxuICAgIHwgTGVtb25jaGlmZm9uXG4gICAgfCBMaWdodGJsdWVcbiAgICB8IExpZ2h0Y29yYWxcbiAgICB8IExpZ2h0Y3lhblxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IExpZ2h0Z3JheVxuICAgIHwgTGlnaHRncmVlblxuICAgIHwgTGlnaHRncmV5XG4gICAgfCBMaWdodHBpbmtcbiAgICB8IExpZ2h0c2FsbW9uXG4gICAgfCBMaWdodHNlYWdyZWVuXG4gICAgfCBMaWdodHNreWJsdWVcbiAgICB8IExpZ2h0c2xhdGVncmF5XG4gICAgfCBMaWdodHNsYXRlZ3JleVxuICAgIHwgTGlnaHRzdGVlbGJsdWVcbiAgICB8IExpZ2h0eWVsbG93XG4gICAgfCBMaW1lXG4gICAgfCBMaW1lZ3JlZW5cbiAgICB8IExpbmVuXG4gICAgfCBNYWdlbnRhXG4gICAgfCBNYXJvb25cbiAgICB8IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IE1lZGl1bWJsdWVcbiAgICB8IE1lZGl1bW9yY2hpZFxuICAgIHwgTWVkaXVtcHVycGxlXG4gICAgfCBNZWRpdW1zZWFncmVlblxuICAgIHwgTWVkaXVtc2xhdGVibHVlXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgTWVkaXVtdHVycXVvaXNlXG4gICAgfCBNZWRpdW12aW9sZXRyZWRcbiAgICB8IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgTWludGNyZWFtXG4gICAgfCBNaXN0eXJvc2VcbiAgICB8IE1vY2Nhc2luXG4gICAgfCBOYXZham93aGl0ZVxuICAgIHwgTmF2eVxuICAgIHwgT2xkbGFjZVxuICAgIHwgT2xpdmVcbiAgICB8IE9saXZlZHJhYlxuICAgIHwgT3JhbmdlXG4gICAgfCBPcmFuZ2VyZWRcbiAgICB8IE9yY2hpZFxuICAgIHwgUGFsZWdvbGRlbnJvZFxuICAgIHwgUGFsZWdyZWVuXG4gICAgfCBQYWxldHVycXVvaXNlXG4gICAgfCBQYWxldmlvbGV0cmVkXG4gICAgfCBQYXBheWF3aGlwXG4gICAgfCBQZWFjaHB1ZmZcbiAgICB8IFBlcnVcbiAgICB8IFBpbmtcbiAgICB8IFBsdW1cbiAgICB8IFBvd2RlcmJsdWVcbiAgICB8IFB1cnBsZVxuICAgIHwgUmVkXG4gICAgfCBSb3N5YnJvd25cbiAgICB8IFJveWFsYmx1ZVxuICAgIHwgU2FkZGxlYnJvd25cbiAgICB8IFNhbG1vblxuICAgIHwgU2FuZHlicm93blxuICAgIHwgU2VhZ3JlZW5cbiAgICB8IFNlYXNoZWxsXG4gICAgfCBTaWVubmFcbiAgICB8IFNpbHZlclxuICAgIHwgU2t5Ymx1ZVxuICAgIHwgU2xhdGVibHVlXG4gICAgfCBTbGF0ZWdyYXlcbiAgICB8IFNsYXRlZ3JleVxuICAgIHwgU25vd1xuICAgIHwgU3ByaW5nZ3JlZW5cbiAgICB8IFN0ZWVsYmx1ZVxuICAgIHwgVGFuXG4gICAgfCBUZWFsXG4gICAgfCBUaGlzdGxlXG4gICAgfCBUb21hdG9cbiAgICB8IFR1cnF1b2lzZVxuICAgIHwgVmlvbGV0XG4gICAgfCBXaGVhdFxuICAgIHwgV2hpdGVcbiAgICB8IFdoaXRlc21va2VcbiAgICB8IFllbGxvd1xuICAgIHwgWWVsbG93Z3JlZW5cblxuICBsZXQgc3RyaW5nX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IFwiYWxpY2VibHVlXCJcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiBcImFudGlxdWV3aGl0ZVwiXG4gICAgfCBBcXVhIC0+IFwiYXF1YVwiXG4gICAgfCBBcXVhbWFyaW5lIC0+IFwiYXF1YW1hcmluZVwiXG4gICAgfCBBenVyZSAtPiBcImF6dXJlXCJcbiAgICB8IEJlaWdlIC0+IFwiYmVpZ2VcIlxuICAgIHwgQmlzcXVlIC0+IFwiYmlzcXVlXCJcbiAgICB8IEJsYWNrIC0+IFwiYmxhY2tcIlxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgfCBCbHVlIC0+IFwiYmx1ZVwiXG4gICAgfCBCbHVldmlvbGV0IC0+IFwiYmx1ZXZpb2xldFwiXG4gICAgfCBCcm93biAtPiBcImJyb3duXCJcbiAgICB8IEJ1cmx5d29vZCAtPiBcImJ1cmx5d29vZFwiXG4gICAgfCBDYWRldGJsdWUgLT4gXCJjYWRldGJsdWVcIlxuICAgIHwgQ2hhcnRyZXVzZSAtPiBcImNoYXJ0cmV1c2VcIlxuICAgIHwgQ2hvY29sYXRlIC0+IFwiY2hvY29sYXRlXCJcbiAgICB8IENvcmFsIC0+IFwiY29yYWxcIlxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgfCBDb3Juc2lsayAtPiBcImNvcm5zaWxrXCJcbiAgICB8IENyaW1zb24gLT4gXCJjcmltc29uXCJcbiAgICB8IEN5YW4gLT4gXCJjeWFuXCJcbiAgICB8IERhcmtibHVlIC0+IFwiZGFya2JsdWVcIlxuICAgIHwgRGFya2N5YW4gLT4gXCJkYXJrY3lhblwiXG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgfCBEYXJrZ3JheSAtPiBcImRhcmtncmF5XCJcbiAgICB8IERhcmtncmVlbiAtPiBcImRhcmtncmVlblwiXG4gICAgfCBEYXJrZ3JleSAtPiBcImRhcmtncmV5XCJcbiAgICB8IERhcmtraGFraSAtPiBcImRhcmtraGFraVwiXG4gICAgfCBEYXJrbWFnZW50YSAtPiBcImRhcmttYWdlbnRhXCJcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IFwiZGFya29saXZlZ3JlZW5cIlxuICAgIHwgRGFya29yYW5nZSAtPiBcImRhcmtvcmFuZ2VcIlxuICAgIHwgRGFya29yY2hpZCAtPiBcImRhcmtvcmNoaWRcIlxuICAgIHwgRGFya3JlZCAtPiBcImRhcmtyZWRcIlxuICAgIHwgRGFya3NhbG1vbiAtPiBcImRhcmtzYWxtb25cIlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IFwiZGFya3NlYWdyZWVuXCJcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gXCJkYXJrc2xhdGVibHVlXCJcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gXCJkYXJrc2xhdGVncmF5XCJcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gXCJkYXJrc2xhdGVncmV5XCJcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gXCJkYXJrdHVycXVvaXNlXCJcbiAgICB8IERhcmt2aW9sZXQgLT4gXCJkYXJrdmlvbGV0XCJcbiAgICB8IERlZXBwaW5rIC0+IFwiZGVlcHBpbmtcIlxuICAgIHwgRGVlcHNreWJsdWUgLT4gXCJkZWVwc2t5Ymx1ZVwiXG4gICAgfCBEaW1ncmF5IC0+IFwiZGltZ3JheVwiXG4gICAgfCBEaW1ncmV5IC0+IFwiZGltZ3JleVwiXG4gICAgfCBEb2RnZXJibHVlIC0+IFwiZG9kZ2VyYmx1ZVwiXG4gICAgfCBGaXJlYnJpY2sgLT4gXCJmaXJlYnJpY2tcIlxuICAgIHwgRmxvcmFsd2hpdGUgLT4gXCJmbG9yYWx3aGl0ZVwiXG4gICAgfCBGb3Jlc3RncmVlbiAtPiBcImZvcmVzdGdyZWVuXCJcbiAgICB8IEZ1Y2hzaWEgLT4gXCJmdWNoc2lhXCJcbiAgICB8IEdhaW5zYm9ybyAtPiBcImdhaW5zYm9yb1wiXG4gICAgfCBHaG9zdHdoaXRlIC0+IFwiZ2hvc3R3aGl0ZVwiXG4gICAgfCBHb2xkIC0+IFwiZ29sZFwiXG4gICAgfCBHb2xkZW5yb2QgLT4gXCJnb2xkZW5yb2RcIlxuICAgIHwgR3JheSAtPiBcImdyYXlcIlxuICAgIHwgR3JlZW4gLT4gXCJncmVlblwiXG4gICAgfCBHcmVlbnllbGxvdyAtPiBcImdyZWVueWVsbG93XCJcbiAgICB8IEdyZXkgLT4gXCJncmV5XCJcbiAgICB8IEhvbmV5ZGV3IC0+IFwiaG9uZXlkZXdcIlxuICAgIHwgSG90cGluayAtPiBcImhvdHBpbmtcIlxuICAgIHwgSW5kaWFucmVkIC0+IFwiaW5kaWFucmVkXCJcbiAgICB8IEluZGlnbyAtPiBcImluZGlnb1wiXG4gICAgfCBJdm9yeSAtPiBcIml2b3J5XCJcbiAgICB8IEtoYWtpIC0+IFwia2hha2lcIlxuICAgIHwgTGF2ZW5kZXIgLT4gXCJsYXZlbmRlclwiXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgfCBMYXduZ3JlZW4gLT4gXCJsYXduZ3JlZW5cIlxuICAgIHwgTGVtb25jaGlmZm9uIC0+IFwibGVtb25jaGlmZm9uXCJcbiAgICB8IExpZ2h0Ymx1ZSAtPiBcImxpZ2h0Ymx1ZVwiXG4gICAgfCBMaWdodGNvcmFsIC0+IFwibGlnaHRjb3JhbFwiXG4gICAgfCBMaWdodGN5YW4gLT4gXCJsaWdodGN5YW5cIlxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgfCBMaWdodGdyYXkgLT4gXCJsaWdodGdyYXlcIlxuICAgIHwgTGlnaHRncmVlbiAtPiBcImxpZ2h0Z3JlZW5cIlxuICAgIHwgTGlnaHRncmV5IC0+IFwibGlnaHRncmV5XCJcbiAgICB8IExpZ2h0cGluayAtPiBcImxpZ2h0cGlua1wiXG4gICAgfCBMaWdodHNhbG1vbiAtPiBcImxpZ2h0c2FsbW9uXCJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gXCJsaWdodHNlYWdyZWVuXCJcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgfCBMaWdodHllbGxvdyAtPiBcImxpZ2h0eWVsbG93XCJcbiAgICB8IExpbWUgLT4gXCJsaW1lXCJcbiAgICB8IExpbWVncmVlbiAtPiBcImxpbWVncmVlblwiXG4gICAgfCBMaW5lbiAtPiBcImxpbmVuXCJcbiAgICB8IE1hZ2VudGEgLT4gXCJtYWdlbnRhXCJcbiAgICB8IE1hcm9vbiAtPiBcIm1hcm9vblwiXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgfCBNZWRpdW1ibHVlIC0+IFwibWVkaXVtYmx1ZVwiXG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gXCJtZWRpdW1vcmNoaWRcIlxuICAgIHwgTWVkaXVtcHVycGxlIC0+IFwibWVkaXVtcHVycGxlXCJcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gXCJtaWRuaWdodGJsdWVcIlxuICAgIHwgTWludGNyZWFtIC0+IFwibWludGNyZWFtXCJcbiAgICB8IE1pc3R5cm9zZSAtPiBcIm1pc3R5cm9zZVwiXG4gICAgfCBNb2NjYXNpbiAtPiBcIm1vY2Nhc2luXCJcbiAgICB8IE5hdmFqb3doaXRlIC0+IFwibmF2YWpvd2hpdGVcIlxuICAgIHwgTmF2eSAtPiBcIm5hdnlcIlxuICAgIHwgT2xkbGFjZSAtPiBcIm9sZGxhY2VcIlxuICAgIHwgT2xpdmUgLT4gXCJvbGl2ZVwiXG4gICAgfCBPbGl2ZWRyYWIgLT4gXCJvbGl2ZWRyYWJcIlxuICAgIHwgT3JhbmdlIC0+IFwib3JhbmdlXCJcbiAgICB8IE9yYW5nZXJlZCAtPiBcIm9yYW5nZXJlZFwiXG4gICAgfCBPcmNoaWQgLT4gXCJvcmNoaWRcIlxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiBcInBhbGVnb2xkZW5yb2RcIlxuICAgIHwgUGFsZWdyZWVuIC0+IFwicGFsZWdyZWVuXCJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gXCJwYWxldHVycXVvaXNlXCJcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gXCJwYWxldmlvbGV0cmVkXCJcbiAgICB8IFBhcGF5YXdoaXAgLT4gXCJwYXBheWF3aGlwXCJcbiAgICB8IFBlYWNocHVmZiAtPiBcInBlYWNocHVmZlwiXG4gICAgfCBQZXJ1IC0+IFwicGVydVwiXG4gICAgfCBQaW5rIC0+IFwicGlua1wiXG4gICAgfCBQbHVtIC0+IFwicGx1bVwiXG4gICAgfCBQb3dkZXJibHVlIC0+IFwicG93ZGVyYmx1ZVwiXG4gICAgfCBQdXJwbGUgLT4gXCJwdXJwbGVcIlxuICAgIHwgUmVkIC0+IFwicmVkXCJcbiAgICB8IFJvc3licm93biAtPiBcInJvc3licm93blwiXG4gICAgfCBSb3lhbGJsdWUgLT4gXCJyb3lhbGJsdWVcIlxuICAgIHwgU2FkZGxlYnJvd24gLT4gXCJzYWRkbGVicm93blwiXG4gICAgfCBTYWxtb24gLT4gXCJzYWxtb25cIlxuICAgIHwgU2FuZHlicm93biAtPiBcInNhbmR5YnJvd25cIlxuICAgIHwgU2VhZ3JlZW4gLT4gXCJzZWFncmVlblwiXG4gICAgfCBTZWFzaGVsbCAtPiBcInNlYXNoZWxsXCJcbiAgICB8IFNpZW5uYSAtPiBcInNpZW5uYVwiXG4gICAgfCBTaWx2ZXIgLT4gXCJzaWx2ZXJcIlxuICAgIHwgU2t5Ymx1ZSAtPiBcInNreWJsdWVcIlxuICAgIHwgU2xhdGVibHVlIC0+IFwic2xhdGVibHVlXCJcbiAgICB8IFNsYXRlZ3JheSAtPiBcInNsYXRlZ3JheVwiXG4gICAgfCBTbGF0ZWdyZXkgLT4gXCJzbGF0ZWdyZXlcIlxuICAgIHwgU25vdyAtPiBcInNub3dcIlxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gXCJzcHJpbmdncmVlblwiXG4gICAgfCBTdGVlbGJsdWUgLT4gXCJzdGVlbGJsdWVcIlxuICAgIHwgVGFuIC0+IFwidGFuXCJcbiAgICB8IFRlYWwgLT4gXCJ0ZWFsXCJcbiAgICB8IFRoaXN0bGUgLT4gXCJ0aGlzdGxlXCJcbiAgICB8IFRvbWF0byAtPiBcInRvbWF0b1wiXG4gICAgfCBUdXJxdW9pc2UgLT4gXCJ0dXJxdW9pc2VcIlxuICAgIHwgVmlvbGV0IC0+IFwidmlvbGV0XCJcbiAgICB8IFdoZWF0IC0+IFwid2hlYXRcIlxuICAgIHwgV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gICAgfCBXaGl0ZXNtb2tlIC0+IFwid2hpdGVzbW9rZVwiXG4gICAgfCBZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICAgIHwgWWVsbG93Z3JlZW4gLT4gXCJ5ZWxsb3dncmVlblwiXG5cbiAgbGV0IG5hbWVfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiYWxpY2VibHVlXCIgLT4gQWxpY2VibHVlXG4gICAgfCBcImFudGlxdWV3aGl0ZVwiIC0+IEFudGlxdWV3aGl0ZVxuICAgIHwgXCJhcXVhXCIgLT4gQXF1YVxuICAgIHwgXCJhcXVhbWFyaW5lXCIgLT4gQXF1YW1hcmluZVxuICAgIHwgXCJhenVyZVwiIC0+IEF6dXJlXG4gICAgfCBcImJlaWdlXCIgLT4gQmVpZ2VcbiAgICB8IFwiYmlzcXVlXCIgLT4gQmlzcXVlXG4gICAgfCBcImJsYWNrXCIgLT4gQmxhY2tcbiAgICB8IFwiYmxhbmNoZWRhbG1vbmRcIiAtPiBCbGFuY2hlZGFsbW9uZFxuICAgIHwgXCJibHVlXCIgLT4gQmx1ZVxuICAgIHwgXCJibHVldmlvbGV0XCIgLT4gQmx1ZXZpb2xldFxuICAgIHwgXCJicm93blwiIC0+IEJyb3duXG4gICAgfCBcImJ1cmx5d29vZFwiIC0+IEJ1cmx5d29vZFxuICAgIHwgXCJjYWRldGJsdWVcIiAtPiBDYWRldGJsdWVcbiAgICB8IFwiY2hhcnRyZXVzZVwiIC0+IENoYXJ0cmV1c2VcbiAgICB8IFwiY2hvY29sYXRlXCIgLT4gQ2hvY29sYXRlXG4gICAgfCBcImNvcmFsXCIgLT4gQ29yYWxcbiAgICB8IFwiY29ybmZsb3dlcmJsdWVcIiAtPiBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgXCJjb3Juc2lsa1wiIC0+IENvcm5zaWxrXG4gICAgfCBcImNyaW1zb25cIiAtPiBDcmltc29uXG4gICAgfCBcImN5YW5cIiAtPiBDeWFuXG4gICAgfCBcImRhcmtibHVlXCIgLT4gRGFya2JsdWVcbiAgICB8IFwiZGFya2N5YW5cIiAtPiBEYXJrY3lhblxuICAgIHwgXCJkYXJrZ29sZGVucm9kXCIgLT4gRGFya2dvbGRlbnJvZFxuICAgIHwgXCJkYXJrZ3JheVwiIC0+IERhcmtncmF5XG4gICAgfCBcImRhcmtncmVlblwiIC0+IERhcmtncmVlblxuICAgIHwgXCJkYXJrZ3JleVwiIC0+IERhcmtncmV5XG4gICAgfCBcImRhcmtraGFraVwiIC0+IERhcmtraGFraVxuICAgIHwgXCJkYXJrbWFnZW50YVwiIC0+IERhcmttYWdlbnRhXG4gICAgfCBcImRhcmtvbGl2ZWdyZWVuXCIgLT4gRGFya29saXZlZ3JlZW5cbiAgICB8IFwiZGFya29yYW5nZVwiIC0+IERhcmtvcmFuZ2VcbiAgICB8IFwiZGFya29yY2hpZFwiIC0+IERhcmtvcmNoaWRcbiAgICB8IFwiZGFya3JlZFwiIC0+IERhcmtyZWRcbiAgICB8IFwiZGFya3NhbG1vblwiIC0+IERhcmtzYWxtb25cbiAgICB8IFwiZGFya3NlYWdyZWVuXCIgLT4gRGFya3NlYWdyZWVuXG4gICAgfCBcImRhcmtzbGF0ZWJsdWVcIiAtPiBEYXJrc2xhdGVibHVlXG4gICAgfCBcImRhcmtzbGF0ZWdyYXlcIiAtPiBEYXJrc2xhdGVncmF5XG4gICAgfCBcImRhcmtzbGF0ZWdyZXlcIiAtPiBEYXJrc2xhdGVncmV5XG4gICAgfCBcImRhcmt0dXJxdW9pc2VcIiAtPiBEYXJrdHVycXVvaXNlXG4gICAgfCBcImRhcmt2aW9sZXRcIiAtPiBEYXJrdmlvbGV0XG4gICAgfCBcImRlZXBwaW5rXCIgLT4gRGVlcHBpbmtcbiAgICB8IFwiZGVlcHNreWJsdWVcIiAtPiBEZWVwc2t5Ymx1ZVxuICAgIHwgXCJkaW1ncmF5XCIgLT4gRGltZ3JheVxuICAgIHwgXCJkaW1ncmV5XCIgLT4gRGltZ3JleVxuICAgIHwgXCJkb2RnZXJibHVlXCIgLT4gRG9kZ2VyYmx1ZVxuICAgIHwgXCJmaXJlYnJpY2tcIiAtPiBGaXJlYnJpY2tcbiAgICB8IFwiZmxvcmFsd2hpdGVcIiAtPiBGbG9yYWx3aGl0ZVxuICAgIHwgXCJmb3Jlc3RncmVlblwiIC0+IEZvcmVzdGdyZWVuXG4gICAgfCBcImZ1Y2hzaWFcIiAtPiBGdWNoc2lhXG4gICAgfCBcImdhaW5zYm9yb1wiIC0+IEdhaW5zYm9yb1xuICAgIHwgXCJnaG9zdHdoaXRlXCIgLT4gR2hvc3R3aGl0ZVxuICAgIHwgXCJnb2xkXCIgLT4gR29sZFxuICAgIHwgXCJnb2xkZW5yb2RcIiAtPiBHb2xkZW5yb2RcbiAgICB8IFwiZ3JheVwiIC0+IEdyYXlcbiAgICB8IFwiZ3JlZW5cIiAtPiBHcmVlblxuICAgIHwgXCJncmVlbnllbGxvd1wiIC0+IEdyZWVueWVsbG93XG4gICAgfCBcImdyZXlcIiAtPiBHcmV5XG4gICAgfCBcImhvbmV5ZGV3XCIgLT4gSG9uZXlkZXdcbiAgICB8IFwiaG90cGlua1wiIC0+IEhvdHBpbmtcbiAgICB8IFwiaW5kaWFucmVkXCIgLT4gSW5kaWFucmVkXG4gICAgfCBcImluZGlnb1wiIC0+IEluZGlnb1xuICAgIHwgXCJpdm9yeVwiIC0+IEl2b3J5XG4gICAgfCBcImtoYWtpXCIgLT4gS2hha2lcbiAgICB8IFwibGF2ZW5kZXJcIiAtPiBMYXZlbmRlclxuICAgIHwgXCJsYXZlbmRlcmJsdXNoXCIgLT4gTGF2ZW5kZXJibHVzaFxuICAgIHwgXCJsYXduZ3JlZW5cIiAtPiBMYXduZ3JlZW5cbiAgICB8IFwibGVtb25jaGlmZm9uXCIgLT4gTGVtb25jaGlmZm9uXG4gICAgfCBcImxpZ2h0Ymx1ZVwiIC0+IExpZ2h0Ymx1ZVxuICAgIHwgXCJsaWdodGNvcmFsXCIgLT4gTGlnaHRjb3JhbFxuICAgIHwgXCJsaWdodGN5YW5cIiAtPiBMaWdodGN5YW5cbiAgICB8IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIiAtPiBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgXCJsaWdodGdyYXlcIiAtPiBMaWdodGdyYXlcbiAgICB8IFwibGlnaHRncmVlblwiIC0+IExpZ2h0Z3JlZW5cbiAgICB8IFwibGlnaHRncmV5XCIgLT4gTGlnaHRncmV5XG4gICAgfCBcImxpZ2h0cGlua1wiIC0+IExpZ2h0cGlua1xuICAgIHwgXCJsaWdodHNhbG1vblwiIC0+IExpZ2h0c2FsbW9uXG4gICAgfCBcImxpZ2h0c2VhZ3JlZW5cIiAtPiBMaWdodHNlYWdyZWVuXG4gICAgfCBcImxpZ2h0c2t5Ymx1ZVwiIC0+IExpZ2h0c2t5Ymx1ZVxuICAgIHwgXCJsaWdodHNsYXRlZ3JheVwiIC0+IExpZ2h0c2xhdGVncmF5XG4gICAgfCBcImxpZ2h0c2xhdGVncmV5XCIgLT4gTGlnaHRzbGF0ZWdyZXlcbiAgICB8IFwibGlnaHRzdGVlbGJsdWVcIiAtPiBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgXCJsaWdodHllbGxvd1wiIC0+IExpZ2h0eWVsbG93XG4gICAgfCBcImxpbWVcIiAtPiBMaW1lXG4gICAgfCBcImxpbWVncmVlblwiIC0+IExpbWVncmVlblxuICAgIHwgXCJsaW5lblwiIC0+IExpbmVuXG4gICAgfCBcIm1hZ2VudGFcIiAtPiBNYWdlbnRhXG4gICAgfCBcIm1hcm9vblwiIC0+IE1hcm9vblxuICAgIHwgXCJtZWRpdW1hcXVhbWFyaW5lXCIgLT4gTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgXCJtZWRpdW1ibHVlXCIgLT4gTWVkaXVtYmx1ZVxuICAgIHwgXCJtZWRpdW1vcmNoaWRcIiAtPiBNZWRpdW1vcmNoaWRcbiAgICB8IFwibWVkaXVtcHVycGxlXCIgLT4gTWVkaXVtcHVycGxlXG4gICAgfCBcIm1lZGl1bXNlYWdyZWVuXCIgLT4gTWVkaXVtc2VhZ3JlZW5cbiAgICB8IFwibWVkaXVtc2xhdGVibHVlXCIgLT4gTWVkaXVtc2xhdGVibHVlXG4gICAgfCBcIm1lZGl1bXNwcmluZ2dyZWVuXCIgLT4gTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IFwibWVkaXVtdHVycXVvaXNlXCIgLT4gTWVkaXVtdHVycXVvaXNlXG4gICAgfCBcIm1lZGl1bXZpb2xldHJlZFwiIC0+IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgXCJtaWRuaWdodGJsdWVcIiAtPiBNaWRuaWdodGJsdWVcbiAgICB8IFwibWludGNyZWFtXCIgLT4gTWludGNyZWFtXG4gICAgfCBcIm1pc3R5cm9zZVwiIC0+IE1pc3R5cm9zZVxuICAgIHwgXCJtb2NjYXNpblwiIC0+IE1vY2Nhc2luXG4gICAgfCBcIm5hdmFqb3doaXRlXCIgLT4gTmF2YWpvd2hpdGVcbiAgICB8IFwibmF2eVwiIC0+IE5hdnlcbiAgICB8IFwib2xkbGFjZVwiIC0+IE9sZGxhY2VcbiAgICB8IFwib2xpdmVcIiAtPiBPbGl2ZVxuICAgIHwgXCJvbGl2ZWRyYWJcIiAtPiBPbGl2ZWRyYWJcbiAgICB8IFwib3JhbmdlXCIgLT4gT3JhbmdlXG4gICAgfCBcIm9yYW5nZXJlZFwiIC0+IE9yYW5nZXJlZFxuICAgIHwgXCJvcmNoaWRcIiAtPiBPcmNoaWRcbiAgICB8IFwicGFsZWdvbGRlbnJvZFwiIC0+IFBhbGVnb2xkZW5yb2RcbiAgICB8IFwicGFsZWdyZWVuXCIgLT4gUGFsZWdyZWVuXG4gICAgfCBcInBhbGV0dXJxdW9pc2VcIiAtPiBQYWxldHVycXVvaXNlXG4gICAgfCBcInBhbGV2aW9sZXRyZWRcIiAtPiBQYWxldmlvbGV0cmVkXG4gICAgfCBcInBhcGF5YXdoaXBcIiAtPiBQYXBheWF3aGlwXG4gICAgfCBcInBlYWNocHVmZlwiIC0+IFBlYWNocHVmZlxuICAgIHwgXCJwZXJ1XCIgLT4gUGVydVxuICAgIHwgXCJwaW5rXCIgLT4gUGlua1xuICAgIHwgXCJwbHVtXCIgLT4gUGx1bVxuICAgIHwgXCJwb3dkZXJibHVlXCIgLT4gUG93ZGVyYmx1ZVxuICAgIHwgXCJwdXJwbGVcIiAtPiBQdXJwbGVcbiAgICB8IFwicmVkXCIgLT4gUmVkXG4gICAgfCBcInJvc3licm93blwiIC0+IFJvc3licm93blxuICAgIHwgXCJyb3lhbGJsdWVcIiAtPiBSb3lhbGJsdWVcbiAgICB8IFwic2FkZGxlYnJvd25cIiAtPiBTYWRkbGVicm93blxuICAgIHwgXCJzYWxtb25cIiAtPiBTYWxtb25cbiAgICB8IFwic2FuZHlicm93blwiIC0+IFNhbmR5YnJvd25cbiAgICB8IFwic2VhZ3JlZW5cIiAtPiBTZWFncmVlblxuICAgIHwgXCJzZWFzaGVsbFwiIC0+IFNlYXNoZWxsXG4gICAgfCBcInNpZW5uYVwiIC0+IFNpZW5uYVxuICAgIHwgXCJzaWx2ZXJcIiAtPiBTaWx2ZXJcbiAgICB8IFwic2t5Ymx1ZVwiIC0+IFNreWJsdWVcbiAgICB8IFwic2xhdGVibHVlXCIgLT4gU2xhdGVibHVlXG4gICAgfCBcInNsYXRlZ3JheVwiIC0+IFNsYXRlZ3JheVxuICAgIHwgXCJzbGF0ZWdyZXlcIiAtPiBTbGF0ZWdyZXlcbiAgICB8IFwic25vd1wiIC0+IFNub3dcbiAgICB8IFwic3ByaW5nZ3JlZW5cIiAtPiBTcHJpbmdncmVlblxuICAgIHwgXCJzdGVlbGJsdWVcIiAtPiBTdGVlbGJsdWVcbiAgICB8IFwidGFuXCIgLT4gVGFuXG4gICAgfCBcInRlYWxcIiAtPiBUZWFsXG4gICAgfCBcInRoaXN0bGVcIiAtPiBUaGlzdGxlXG4gICAgfCBcInRvbWF0b1wiIC0+IFRvbWF0b1xuICAgIHwgXCJ0dXJxdW9pc2VcIiAtPiBUdXJxdW9pc2VcbiAgICB8IFwidmlvbGV0XCIgLT4gVmlvbGV0XG4gICAgfCBcIndoZWF0XCIgLT4gV2hlYXRcbiAgICB8IFwid2hpdGVcIiAtPiBXaGl0ZVxuICAgIHwgXCJ3aGl0ZXNtb2tlXCIgLT4gV2hpdGVzbW9rZVxuICAgIHwgXCJ5ZWxsb3dcIiAtPiBZZWxsb3dcbiAgICB8IFwieWVsbG93Z3JlZW5cIiAtPiBZZWxsb3dncmVlblxuICAgIHwgcyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yIG5hbWVcIikpXG5cbiAgbGV0IHJnYl9vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiAyNDAsIDI0OCwgMjU1XG4gICAgfCBBbnRpcXVld2hpdGUgLT4gMjUwLCAyMzUsIDIxNVxuICAgIHwgQXF1YSAtPiAwLCAyNTUsIDI1NVxuICAgIHwgQXF1YW1hcmluZSAtPiAxMjcsIDI1NSwgMjEyXG4gICAgfCBBenVyZSAtPiAyNDAsIDI1NSwgMjU1XG4gICAgfCBCZWlnZSAtPiAyNDUsIDI0NSwgMjIwXG4gICAgfCBCaXNxdWUgLT4gMjU1LCAyMjgsIDE5NlxuICAgIHwgQmxhY2sgLT4gMCwgMCwgMFxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gMjU1LCAyMzUsIDIwNVxuICAgIHwgQmx1ZSAtPiAwLCAwLCAyNTVcbiAgICB8IEJsdWV2aW9sZXQgLT4gMTM4LCA0MywgMjI2XG4gICAgfCBCcm93biAtPiAxNjUsIDQyLCA0MlxuICAgIHwgQnVybHl3b29kIC0+IDIyMiwgMTg0LCAxMzVcbiAgICB8IENhZGV0Ymx1ZSAtPiA5NSwgMTU4LCAxNjBcbiAgICB8IENoYXJ0cmV1c2UgLT4gMTI3LCAyNTUsIDBcbiAgICB8IENob2NvbGF0ZSAtPiAyMTAsIDEwNSwgMzBcbiAgICB8IENvcmFsIC0+IDI1NSwgMTI3LCA4MFxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gMTAwLCAxNDksIDIzN1xuICAgIHwgQ29ybnNpbGsgLT4gMjU1LCAyNDgsIDIyMFxuICAgIHwgQ3JpbXNvbiAtPiAyMjAsIDIwLCA2MFxuICAgIHwgQ3lhbiAtPiAwLCAyNTUsIDI1NVxuICAgIHwgRGFya2JsdWUgLT4gMCwgMCwgMTM5XG4gICAgfCBEYXJrY3lhbiAtPiAwLCAxMzksIDEzOVxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiAxODQsIDEzNCwgMTFcbiAgICB8IERhcmtncmF5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtncmVlbiAtPiAwLCAxMDAsIDBcbiAgICB8IERhcmtncmV5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtraGFraSAtPiAxODksIDE4MywgMTA3XG4gICAgfCBEYXJrbWFnZW50YSAtPiAxMzksIDAsIDEzOVxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gODUsIDEwNywgNDdcbiAgICB8IERhcmtvcmFuZ2UgLT4gMjU1LCAxNDAsIDBcbiAgICB8IERhcmtvcmNoaWQgLT4gMTUzLCA1MCwgMjA0XG4gICAgfCBEYXJrcmVkIC0+IDEzOSwgMCwgMFxuICAgIHwgRGFya3NhbG1vbiAtPiAyMzMsIDE1MCwgMTIyXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gMTQzLCAxODgsIDE0M1xuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiA3MiwgNjEsIDEzOVxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gMCwgMjA2LCAyMDlcbiAgICB8IERhcmt2aW9sZXQgLT4gMTQ4LCAwLCAyMTFcbiAgICB8IERlZXBwaW5rIC0+IDI1NSwgMjAsIDE0N1xuICAgIHwgRGVlcHNreWJsdWUgLT4gMCwgMTkxLCAyNTVcbiAgICB8IERpbWdyYXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRGltZ3JleSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEb2RnZXJibHVlIC0+IDMwLCAxNDQsIDI1NVxuICAgIHwgRmlyZWJyaWNrIC0+IDE3OCwgMzQsIDM0XG4gICAgfCBGbG9yYWx3aGl0ZSAtPiAyNTUsIDI1MCwgMjQwXG4gICAgfCBGb3Jlc3RncmVlbiAtPiAzNCwgMTM5LCAzNFxuICAgIHwgRnVjaHNpYSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgR2FpbnNib3JvIC0+IDIyMCwgMjIwLCAyMjBcbiAgICB8IEdob3N0d2hpdGUgLT4gMjQ4LCAyNDgsIDI1NVxuICAgIHwgR29sZCAtPiAyNTUsIDIxNSwgMFxuICAgIHwgR29sZGVucm9kIC0+IDIxOCwgMTY1LCAzMlxuICAgIHwgR3JheSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBHcmVlbiAtPiAwLCAxMjgsIDBcbiAgICB8IEdyZWVueWVsbG93IC0+IDE3MywgMjU1LCA0N1xuICAgIHwgR3JleSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBIb25leWRldyAtPiAyNDAsIDI1NSwgMjQwXG4gICAgfCBIb3RwaW5rIC0+IDI1NSwgMTA1LCAxODBcbiAgICB8IEluZGlhbnJlZCAtPiAyMDUsIDkyLCA5MlxuICAgIHwgSW5kaWdvIC0+IDc1LCAwLCAxMzBcbiAgICB8IEl2b3J5IC0+IDI1NSwgMjU1LCAyNDBcbiAgICB8IEtoYWtpIC0+IDI0MCwgMjMwLCAxNDBcbiAgICB8IExhdmVuZGVyIC0+IDIzMCwgMjMwLCAyNTBcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gMjU1LCAyNDAsIDI0NVxuICAgIHwgTGF3bmdyZWVuIC0+IDEyNCwgMjUyLCAwXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gMjU1LCAyNTAsIDIwNVxuICAgIHwgTGlnaHRibHVlIC0+IDE3MywgMjE2LCAyMzBcbiAgICB8IExpZ2h0Y29yYWwgLT4gMjQwLCAxMjgsIDEyOFxuICAgIHwgTGlnaHRjeWFuIC0+IDIyNCwgMjU1LCAyNTVcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IDI1MCwgMjUwLCAyMTBcbiAgICB8IExpZ2h0Z3JheSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodGdyZWVuIC0+IDE0NCwgMjM4LCAxNDRcbiAgICB8IExpZ2h0Z3JleSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodHBpbmsgLT4gMjU1LCAxODIsIDE5M1xuICAgIHwgTGlnaHRzYWxtb24gLT4gMjU1LCAxNjAsIDEyMlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiAzMiwgMTc4LCAxNzBcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjUwXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiAxNzYsIDE5NiwgMjIyXG4gICAgfCBMaWdodHllbGxvdyAtPiAyNTUsIDI1NSwgMjI0XG4gICAgfCBMaW1lIC0+IDAsIDI1NSwgMFxuICAgIHwgTGltZWdyZWVuIC0+IDUwLCAyMDUsIDUwXG4gICAgfCBMaW5lbiAtPiAyNTAsIDI0MCwgMjMwXG4gICAgfCBNYWdlbnRhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBNYXJvb24gLT4gMTI4LCAwLCAwXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IDEwMiwgMjA1LCAxNzBcbiAgICB8IE1lZGl1bWJsdWUgLT4gMCwgMCwgMjA1XG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gMTg2LCA4NSwgMjExXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gMTQ3LCAxMTIsIDIxOVxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gNjAsIDE3OSwgMTEzXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gMTIzLCAxMDQsIDIzOFxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gMCwgMjUwLCAxNTRcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiA3MiwgMjA5LCAyMDRcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiAxOTksIDIxLCAxMzNcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiAyNSwgMjUsIDExMlxuICAgIHwgTWludGNyZWFtIC0+IDI0NSwgMjU1LCAyNTBcbiAgICB8IE1pc3R5cm9zZSAtPiAyNTUsIDIyOCwgMjI1XG4gICAgfCBNb2NjYXNpbiAtPiAyNTUsIDIyOCwgMTgxXG4gICAgfCBOYXZham93aGl0ZSAtPiAyNTUsIDIyMiwgMTczXG4gICAgfCBOYXZ5IC0+IDAsIDAsIDEyOFxuICAgIHwgT2xkbGFjZSAtPiAyNTMsIDI0NSwgMjMwXG4gICAgfCBPbGl2ZSAtPiAxMjgsIDEyOCwgMFxuICAgIHwgT2xpdmVkcmFiIC0+IDEwNywgMTQyLCAzNVxuICAgIHwgT3JhbmdlIC0+IDI1NSwgMTY1LCAwXG4gICAgfCBPcmFuZ2VyZWQgLT4gMjU1LCA2OSwgMFxuICAgIHwgT3JjaGlkIC0+IDIxOCwgMTEyLCAyMTRcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gMjM4LCAyMzIsIDE3MFxuICAgIHwgUGFsZWdyZWVuIC0+IDE1MiwgMjUxLCAxNTJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gMTc1LCAyMzgsIDIzOFxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiAyMTksIDExMiwgMTQ3XG4gICAgfCBQYXBheWF3aGlwIC0+IDI1NSwgMjM5LCAyMTNcbiAgICB8IFBlYWNocHVmZiAtPiAyNTUsIDIxOCwgMTg1XG4gICAgfCBQZXJ1IC0+IDIwNSwgMTMzLCA2M1xuICAgIHwgUGluayAtPiAyNTUsIDE5MiwgMjAzXG4gICAgfCBQbHVtIC0+IDIyMSwgMTYwLCAyMjFcbiAgICB8IFBvd2RlcmJsdWUgLT4gMTc2LCAyMjQsIDIzMFxuICAgIHwgUHVycGxlIC0+IDEyOCwgMCwgMTI4XG4gICAgfCBSZWQgLT4gMjU1LCAwLCAwXG4gICAgfCBSb3N5YnJvd24gLT4gMTg4LCAxNDMsIDE0M1xuICAgIHwgUm95YWxibHVlIC0+IDY1LCAxMDUsIDIyNVxuICAgIHwgU2FkZGxlYnJvd24gLT4gMTM5LCA2OSwgMTlcbiAgICB8IFNhbG1vbiAtPiAyNTAsIDEyOCwgMTE0XG4gICAgfCBTYW5keWJyb3duIC0+IDI0NCwgMTY0LCA5NlxuICAgIHwgU2VhZ3JlZW4gLT4gNDYsIDEzOSwgODdcbiAgICB8IFNlYXNoZWxsIC0+IDI1NSwgMjQ1LCAyMzhcbiAgICB8IFNpZW5uYSAtPiAxNjAsIDgyLCA0NVxuICAgIHwgU2lsdmVyIC0+IDE5MiwgMTkyLCAxOTJcbiAgICB8IFNreWJsdWUgLT4gMTM1LCAyMDYsIDIzNVxuICAgIHwgU2xhdGVibHVlIC0+IDEwNiwgOTAsIDIwNVxuICAgIHwgU2xhdGVncmF5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNsYXRlZ3JleSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbm93IC0+IDI1NSwgMjUwLCAyNTBcbiAgICB8IFNwcmluZ2dyZWVuIC0+IDAsIDI1NSwgMTI3XG4gICAgfCBTdGVlbGJsdWUgLT4gNzAsIDEzMCwgMTgwXG4gICAgfCBUYW4gLT4gMjEwLCAxODAsIDE0MFxuICAgIHwgVGVhbCAtPiAwLCAxMjgsIDEyOFxuICAgIHwgVGhpc3RsZSAtPiAyMTYsIDE5MSwgMjE2XG4gICAgfCBUb21hdG8gLT4gMjU1LCA5OSwgNzFcbiAgICB8IFR1cnF1b2lzZSAtPiA2NCwgMjI0LCAyMDhcbiAgICB8IFZpb2xldCAtPiAyMzgsIDEzMCwgMjM4XG4gICAgfCBXaGVhdCAtPiAyNDUsIDIyMiwgMTc5XG4gICAgfCBXaGl0ZSAtPiAyNTUsIDI1NSwgMjU1XG4gICAgfCBXaGl0ZXNtb2tlIC0+IDI0NSwgMjQ1LCAyNDVcbiAgICB8IFllbGxvdyAtPiAyNTUsIDI1NSwgMFxuICAgIHwgWWVsbG93Z3JlZW4gLT4gMTU0LCAyMDUsIDUwXG5cbiAgdHlwZSB0ID1cbiAgICB8IE5hbWUgb2YgbmFtZVxuICAgIHwgUkdCIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSZWQsIEdyZWVuIGFuZCBCbHVlIHZhbHVlcy4gQ2xpcHBlZCB0byBbWzAuLjI1NV1dIGJ5IG1vc3QgKEFsbD8pXG4gICAgICAgICAgICBicm93c2Vycy4gKilcbiAgICB8IFJHQl9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgYXJlIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gKilcbiAgICB8IFJHQkEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBSR0Igd2l0aCBhZGRpdGlvbmFsIHRyYW5zcGFyZW5jeSBhcmd1bWVudC4gT3BhY2l0eSBzaG91bGQgYmUgaW5cbiAgICAgICAgICAgIFswLl0gKGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQpIGFuZCBbMS5dIChjb21wbGV0ZWx5IG9wYXF1ZSkuICopXG4gICAgfCBSR0JBX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuIEFscGhhXG4gICAgICAgICAgICBjaGFubmVsIChvcGFjaXR5KSBpcyBzdGlsbCBhIFswLl0gdG8gWzEuXSBmbG9hdC4gKilcbiAgICB8IEhTTCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogSHVlLCBTYXR1cmF0aW9uIGFuZCBMaWdodG5lc3MgdmFsdWVzLiBIdWUgaXMgYW4gYW5nbGUgaW4gZGVncmVlIChpblxuICAgICAgICAgICAgaW50ZXJ2YWwgW1swLi4zNjBbXSkuIFNhdHVyYXRpb24gaXMgYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgY29sb3JsZXNzLiBMaWdodG5lc3MgaXMgYWxzbyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBibGFjay4gKilcbiAgICB8IEhTTEEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBIU0wgd2l0aCBhbiBvcGFjaXR5IGFyZ3VtZW50IGJldHdlZW4gWzAuXSBhbmQgWzEuXS4gKilcblxuICBsZXQgcmdiID9hIHIgZyBiID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gUkdCIChyLCBnLCBiKVxuICAgIHwgU29tZSBhIC0+IFJHQkEgKHIsIGcsIGIsIGEpXG5cbiAgbGV0IGhzbCA/YSBoIHMgbCA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IEhTTCAoaCwgcywgbClcbiAgICB8IFNvbWUgYSAtPiBIU0xBIChoLCBzLCBsLCBhKVxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gc3RyaW5nX29mX25hbWUgblxuICAgIHwgUkdCIChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCwlZCwlZClcIiByIGcgYlxuICAgIHwgUkdCX3BlcmNlbnQgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkJSUsJWQlJSwlZCUlKVwiIHIgZyBiXG4gICAgfCBSR0JBIChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQsJWQsJWQsJWYpXCIgciBnIGIgYVxuICAgIHwgUkdCQV9wZXJjZW50IChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQlJSwlZCUlLCVkJSUsJWYpXCIgciBnIGIgYVxuICAgIHwgSFNMIChoLCBzLCBsKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbCglZCwlZCUlLCVkJSUpXCIgaCBzIGxcbiAgICB8IEhTTEEgKGgsIHMsIGwsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsYSglZCwlZCUlLCVkJSUsJWYpXCIgaCBzIGwgYVxuXG4gIGxldCBoZXhfb2ZfcmdiIChyZWQsIGdyZWVuLCBibHVlKSA9XG4gICAgbGV0IGluX3JhbmdlIGkgPVxuICAgICAgaWYgaSA8IDAgfHwgaSA+IDI1NVxuICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoc3RyaW5nX29mX2ludCBpIF4gXCIgaXMgb3V0IG9mIHZhbGlkIHJhbmdlXCIpKVxuICAgIGluXG4gICAgaW5fcmFuZ2UgcmVkO1xuICAgIGluX3JhbmdlIGdyZWVuO1xuICAgIGluX3JhbmdlIGJsdWU7XG4gICAgUHJpbnRmLnNwcmludGYgXCIjJTAyWCUwMlglMDJYXCIgcmVkIGdyZWVuIGJsdWVcblxuICAoKiBPY2FtbCA8LT4gSlMgcmVwcmVzZW50YXRpb24gKilcbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICAoKiBUT0RPPyBiZSBtb3JlIHJlc3RyaWN0aXZlLCBjbGlwIHZhbHVlcyBpbnRvIHN0YW5kYXJkIHJhbmdlICopXG4gIGxldCBqc190X29mX2pzX3N0cmluZyBzID1cbiAgICBsZXQgcmdiX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYl9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXmhzbGFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBpZiBKcy50b19ib29sIChyZ2JfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsYV9yZSMjdGVzdCBzKVxuICAgIHRoZW4gc1xuICAgIGVsc2UgaWYgTGlzdC5tZW1cbiAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBzKVxuICAgICAgICAgICAgICBbIFwiYWxpY2VibHVlXCJcbiAgICAgICAgICAgICAgOyBcImFudGlxdWV3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwiYXp1cmVcIlxuICAgICAgICAgICAgICA7IFwiYmVpZ2VcIlxuICAgICAgICAgICAgICA7IFwiYmlzcXVlXCJcbiAgICAgICAgICAgICAgOyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgOyBcImJsYW5jaGVkYWxtb25kXCJcbiAgICAgICAgICAgICAgOyBcImJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZXZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJicm93blwiXG4gICAgICAgICAgICAgIDsgXCJidXJseXdvb2RcIlxuICAgICAgICAgICAgICA7IFwiY2FkZXRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNoYXJ0cmV1c2VcIlxuICAgICAgICAgICAgICA7IFwiY2hvY29sYXRlXCJcbiAgICAgICAgICAgICAgOyBcImNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5mbG93ZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5zaWxrXCJcbiAgICAgICAgICAgICAgOyBcImNyaW1zb25cIlxuICAgICAgICAgICAgICA7IFwiY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJra2hha2lcIlxuICAgICAgICAgICAgICA7IFwiZGFya21hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwiZGFya29saXZlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya29yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtyZWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImRlZXBwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImRlZXBza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkb2RnZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImZpcmVicmlja1wiXG4gICAgICAgICAgICAgIDsgXCJmbG9yYWx3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJmb3Jlc3RncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJmdWNoc2lhXCJcbiAgICAgICAgICAgICAgOyBcImdhaW5zYm9yb1wiXG4gICAgICAgICAgICAgIDsgXCJnaG9zdHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRcIlxuICAgICAgICAgICAgICA7IFwiZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW55ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwiZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJob25leWRld1wiXG4gICAgICAgICAgICAgIDsgXCJob3RwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImluZGlhbnJlZFwiXG4gICAgICAgICAgICAgIDsgXCJpbmRpZ29cIlxuICAgICAgICAgICAgICA7IFwiaXZvcnlcIlxuICAgICAgICAgICAgICA7IFwia2hha2lcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgICAgICAgICAgIDsgXCJsYXduZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGVtb25jaGlmZm9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y3lhblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0eWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpbWVcIlxuICAgICAgICAgICAgICA7IFwibGltZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpbmVuXCJcbiAgICAgICAgICAgICAgOyBcIm1hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwibWFyb29uXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1vcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtcHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtaW50Y3JlYW1cIlxuICAgICAgICAgICAgICA7IFwibWlzdHlyb3NlXCJcbiAgICAgICAgICAgICAgOyBcIm1vY2Nhc2luXCJcbiAgICAgICAgICAgICAgOyBcIm5hdmFqb3doaXRlXCJcbiAgICAgICAgICAgICAgOyBcIm5hdnlcIlxuICAgICAgICAgICAgICA7IFwib2xkbGFjZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZWRyYWJcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZXJlZFwiXG4gICAgICAgICAgICAgIDsgXCJvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcInBhcGF5YXdoaXBcIlxuICAgICAgICAgICAgICA7IFwicGVhY2hwdWZmXCJcbiAgICAgICAgICAgICAgOyBcInBlcnVcIlxuICAgICAgICAgICAgICA7IFwicGlua1wiXG4gICAgICAgICAgICAgIDsgXCJwbHVtXCJcbiAgICAgICAgICAgICAgOyBcInBvd2RlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwicHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcInJlZFwiXG4gICAgICAgICAgICAgIDsgXCJyb3N5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwicm95YWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNhZGRsZWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJzYW5keWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInNlYXNoZWxsXCJcbiAgICAgICAgICAgICAgOyBcInNpZW5uYVwiXG4gICAgICAgICAgICAgIDsgXCJzaWx2ZXJcIlxuICAgICAgICAgICAgICA7IFwic2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJzbm93XCJcbiAgICAgICAgICAgICAgOyBcInNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJ0YW5cIlxuICAgICAgICAgICAgICA7IFwidGVhbFwiXG4gICAgICAgICAgICAgIDsgXCJ0aGlzdGxlXCJcbiAgICAgICAgICAgICAgOyBcInRvbWF0b1wiXG4gICAgICAgICAgICAgIDsgXCJ0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwidmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcIndoZWF0XCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlXCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlc21va2VcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd2dyZWVuXCJcbiAgICAgICAgICAgICAgXVxuICAgIHRoZW4gc1xuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKEpzLnRvX3N0cmluZyBzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpXG5cbiAgbGV0IG5hbWUgY24gPSBKcy5zdHJpbmcgKHN0cmluZ19vZl9uYW1lIGNuKVxuXG4gIGxldCBqcyA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gbmFtZSBuXG4gICAgfCAoUkdCIF8gfCBSR0JfcGVyY2VudCBfIHwgUkdCQSBfIHwgUkdCQV9wZXJjZW50IF8gfCBIU0wgXyB8IEhTTEEgXykgYXMgYyAtPlxuICAgICAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl90IGMpXG5cbiAgbGV0IG1sIGMgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGMgaW5cbiAgICB0cnkgTmFtZSAobmFtZV9vZl9zdHJpbmcgcylcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiAoXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpIGluXG4gICAgICBsZXQgcmVfcmdiID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopLChcXFxcZCopKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfcmdiX3BjdCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSUsKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX2hzbCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIoaHNsYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgaV9vZl9zX28gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICB8IFNvbWUgaSAtPiAoXG4gICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpXG4gICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGkgXiBcIik6IFwiIF4gcykpKVxuICAgICAgaW5cbiAgICAgIGxldCBmX29mX3MgZiA9XG4gICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gZiBeIFwiKTogXCIgXiBzKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYiBzIDAgd2l0aFxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQiAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBSR0JBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiX3BjdCBzIDAgd2l0aFxuICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0JfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICBSR0JBX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX2hzbCBzIDAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gSFNMIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbGFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSFNMQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpKSkpXG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICAoKiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jbGVuZ3RocyAqKVxuXG4gICgqIFRPRE86XG4gICAgIHtbXG4gICAgICAgdHlwZSBqc190ID0gcHJpdmF0ZSBKcy5zdHJpbmcgSnMudFxuICAgICAgIHZhbCBqc190X29mX3RcbiAgICAgICB2YWwgdF9vZl9qc190XG4gICAgICAgdmFsIHRfb2Zfc3RyaW5nXG4gICAgIF19XG4gICopXG5cbiAgdHlwZSB0ID1cbiAgICB8IFplcm9cbiAgICAoKiByZWxhdGl2ZSAqKVxuICAgIHwgRW0gb2YgZmxvYXRcbiAgICB8IEV4IG9mIGZsb2F0XG4gICAgfCBQeCBvZiBmbG9hdFxuICAgIHwgR2Qgb2YgZmxvYXRcbiAgICB8IFJlbSBvZiBmbG9hdFxuICAgIHwgVncgb2YgZmxvYXRcbiAgICB8IFZoIG9mIGZsb2F0XG4gICAgfCBWbSBvZiBmbG9hdFxuICAgIHwgQ2ggb2YgZmxvYXRcbiAgICAoKiBhYnNvbHV0ZSAqKVxuICAgIHwgTW0gb2YgZmxvYXRcbiAgICB8IENtIG9mIGZsb2F0XG4gICAgfCBJbiBvZiBmbG9hdFxuICAgIHwgUHQgb2YgZmxvYXRcbiAgICB8IFBjIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IFplcm8gLT4gXCIwXCJcbiAgICB8IEVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImVtXCJcbiAgICB8IEV4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImV4XCJcbiAgICB8IFB4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB4XCJcbiAgICB8IEdkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdkXCJcbiAgICB8IFJlbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyZW1cIlxuICAgIHwgVncgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidndcIlxuICAgIHwgVmggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidmhcIlxuICAgIHwgVm0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidm1cIlxuICAgIHwgQ2ggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY2hcIlxuICAgIHwgTW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwibW1cIlxuICAgIHwgQ20gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY21cIlxuICAgIHwgSW4gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiaW5cIlxuICAgIHwgUHQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHRcIlxuICAgIHwgUGMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicGNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIHQgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIHQgaW5cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIjBcIlxuICAgIHRoZW4gWmVyb1xuICAgIGVsc2VcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKik/KVxcXFxzKihcXFxcUyopJFwiIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCBmID1cbiAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIFwiZW1cIiAtPiBFbSBmXG4gICAgICAgICAgfCBTb21lIFwiZXhcIiAtPiBFeCBmXG4gICAgICAgICAgfCBTb21lIFwicHhcIiAtPiBQeCBmXG4gICAgICAgICAgfCBTb21lIFwiZ2RcIiAtPiBHZCBmXG4gICAgICAgICAgfCBTb21lIFwicmVtXCIgLT4gUmVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2d1wiIC0+IFZ3IGZcbiAgICAgICAgICB8IFNvbWUgXCJ2aFwiIC0+IFZoIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2bVwiIC0+IFZtIGZcbiAgICAgICAgICB8IFNvbWUgXCJjaFwiIC0+IENoIGZcbiAgICAgICAgICB8IFNvbWUgXCJtbVwiIC0+IE1tIGZcbiAgICAgICAgICB8IFNvbWUgXCJjbVwiIC0+IENtIGZcbiAgICAgICAgICB8IFNvbWUgXCJpblwiIC0+IEluIGZcbiAgICAgICAgICB8IFNvbWUgXCJwdFwiIC0+IFB0IGZcbiAgICAgICAgICB8IFNvbWUgXCJwY1wiIC0+IFBjIGZcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpKVxuZW5kXG5cbm1vZHVsZSBBbmdsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRGVnIG9mIGZsb2F0XG4gICAgfCBHcmFkIG9mIGZsb2F0XG4gICAgfCBSYWQgb2YgZmxvYXRcbiAgICB8IFR1cm5zIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IERlZyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJkZWdcIlxuICAgIHwgR3JhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJncmFkXCJcbiAgICB8IFJhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyYWRcIlxuICAgIHwgVHVybnMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidHVybnNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIGogPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGogaW5cbiAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKikpKGRlZ3xncmFkfHJhZHx0dXJucykkXCIgaW5cbiAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgfCBTb21lIFwiZGVnXCIgLT4gRGVnIGZcbiAgICAgICAgfCBTb21lIFwiZ3JhZFwiIC0+IEdyYWQgZlxuICAgICAgICB8IFNvbWUgXCJyYWRcIiAtPiBSYWQgZlxuICAgICAgICB8IFNvbWUgXCJ0dXJuc1wiIC0+IFR1cm5zIGZcbiAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiogSmF2YXNjcmlwdCBldmVudHMuICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFR5cCA9IERvbV9odG1sLkV2ZW50XG5cbnR5cGUgbGlzdGVuZXIgPSBEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgbGlzdGVuID8oY2FwdHVyZSA9IGZhbHNlKSB0YXJnZXQgdHlwIGNiID1cbiAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lclxuICAgIHRhcmdldFxuICAgIHR5cFxuICAgIChEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBuIGUgLT4gSnMuYm9vbCAoY2IgbiBlKSkpXG4gICAgKEpzLmJvb2wgY2FwdHVyZSlcblxubGV0IHN0b3BfbGlzdGVuID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxubGV0IHhtbG5zID0gSnMuc3RyaW5nIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXG4oKiB0cmFuc2xhdGUgc3BlYyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pZGwuaHRtbCAqKVxuKCogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1sICopXG5cbnR5cGUgZXJyb3JfY29kZSA9XG4gIHwgV1JPTkdfVFlQRV9FUlJcbiAgfCBJTlZBTElEX1ZBTFVFX0VSUlxuICB8IE1BVFJJWF9OT1RfSU5WRVJUQUJMRVxuXG5jbGFzcyB0eXBlIHN2Z19lcnJvciA9IG9iamVjdFxuICBpbmhlcml0IEpzLmVycm9yXG5cbiAgbWV0aG9kIGNvZGUgOiBlcnJvcl9jb2RlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4Y2VwdGlvbiBTVkdFcnJvciBvZiBzdmdfZXJyb3JcblxudHlwZSBsZW5ndGhVbml0VHlwZSA9XG4gIHwgTEVOR1RIVFlQRV9VTktOT1dOXG4gIHwgTEVOR1RIVFlQRV9OVU1CRVJcbiAgfCBMRU5HVEhUWVBFX1BFUkNFTlRBR0VcbiAgfCBMRU5HVEhUWVBFX0VNU1xuICB8IExFTkdUSFRZUEVfRVhTXG4gIHwgTEVOR1RIVFlQRV9QWFxuICB8IExFTkdUSFRZUEVfQ01cbiAgfCBMRU5HVEhUWVBFX01NXG4gIHwgTEVOR1RIVFlQRV9JTlxuICB8IExFTkdUSFRZUEVfUFRcbiAgfCBMRU5HVEhUWVBFX1BDXG5cbnR5cGUgYW5nbGVVbml0VHlwZSA9XG4gIHwgQU5HTEVUWVBFX1VOS05PV05cbiAgfCBBTkdMRVRZUEVfVU5TUEVDSUZJRURcbiAgfCBBTkdMRVRZUEVfREVHXG4gIHwgQU5HTEVUWVBFX1JBRFxuICB8IEFOR0xFVFlQRV9HUkFEXG5cbnR5cGUgY29sb3JUeXBlID1cbiAgfCBDT0xPUlRZUEVfVU5LTk9XTlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUlxuICB8IENPTE9SVFlQRV9DVVJSRU5UQ09MT1JcblxudHlwZSBhbGlnbm1lbnRUeXBlID1cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV05cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX05PTkVcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVhcblxudHlwZSBtZWV0T3JTbGljZVR5cGUgPVxuICB8IE1FRVRPUlNMSUNFX1VOS05PV05cbiAgfCBNRUVUT1JTTElDRV9NRUVUXG4gIHwgTUVFVE9SU0xJQ0VfU0xJQ0VcblxudHlwZSB0cmFuc2Zvcm1UeXBlID1cbiAgfCBUUkFOU0ZPUk1fVU5LTk9XTlxuICB8IFRSQU5TRk9STV9NQVRSSVhcbiAgfCBUUkFOU0ZPUk1fVFJBTlNMQVRFXG4gIHwgVFJBTlNGT1JNX1NDQUxFXG4gIHwgVFJBTlNGT1JNX1JPVEFURVxuICB8IFRSQU5TRk9STV9TS0VXWFxuICB8IFRSQU5TRk9STV9TS0VXWVxuXG50eXBlIHpvb21BbmRQYW5UeXBlID1cbiAgfCBaT09NQU5EUEFOX1VOS05PV05cbiAgfCBaT09NQU5EUEFOX0RJU0FCTEVcbiAgfCBaT09NQU5EUEFOX01BR05JRllcblxudHlwZSBsZW5ndGhBZGp1c3QgPVxuICB8IExFTkdUSEFESlVTVF9VTktOT1dOXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdcbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIU1xuXG50eXBlIHVuaXRUeXBlID1cbiAgfCBVTklUX1RZUEVfVU5LTk9XTlxuICB8IFVOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRVxuICB8IFVOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVuZGVyaW5nSW50ZW50ICopXG50eXBlIGludGVudFR5cGUgPVxuICB8IFJFTkRFUklOR19JTlRFTlRfVU5LTk9XTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQVVUT1xuICB8IFJFTkRFUklOR19JTlRFTlRfUEVSQ0VQVFVBTFxuICB8IFJFTkRFUklOR19JTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9TQVRVUkFUSU9OXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUNcblxuKCogUGF0aCBTZWdtZW50IFR5cGVzICopXG50eXBlIHBhdGhTZWdtZW50VHlwZSA9XG4gIHwgUEFUSFNFR19VTktOT1dOXG4gIHwgUEFUSFNFR19DTE9TRVBBVEhcbiAgfCBQQVRIU0VHX01PVkVUT19BQlNcbiAgfCBQQVRIU0VHX01PVkVUT19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUxcbiAgfCBQQVRIU0VHX0FSQ19BQlNcbiAgfCBQQVRIU0VHX0FSQ19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTFxuXG4oKiB0ZXh0UGF0aCBNZXRob2QgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhNZXRob2RUeXBlID1cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIXG5cbigqIHRleHRQYXRoIFNwYWNpbmcgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhTcGFjaW5nVHlwZSA9XG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE9cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVFxuXG4oKiBTcHJlYWQgTWV0aG9kIFR5cGVzICopXG50eXBlIHNwcmVhZE1ldGhvZFR5cGUgPVxuICB8IFNQUkVBRE1FVEhPRF9VTktOT1dOXG4gIHwgU1BSRUFETUVUSE9EX1BBRFxuICB8IFNQUkVBRE1FVEhPRF9SRUZMRUNUXG4gIHwgU1BSRUFETUVUSE9EX1JFUEVBVFxuXG50eXBlIHN1c3BlbmRIYW5kbGVJRFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBbJ2FdIGFuaW1hdGVkID0gb2JqZWN0XG4gIG1ldGhvZCBiYXNlVmFsIDogJ2EgcHJvcFxuXG4gIG1ldGhvZCBhbmltVmFsIDogJ2EgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBsaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBudW1iZXJPZkl0ZW1zIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5pdGlhbGl6ZSA6ICdhIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGluc2VydEl0ZW1CZWZvcmUgOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlSXRlbSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRJdGVtIDogJ2EgLT4gJ2EgbWV0aFxuZW5kXG5cbigqKioqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbGJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyU1ZHRWxlbWVudCA6IHN2Z0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkU3RyaW5nICopXG5hbmQgYW5pbWF0ZWRTdHJpbmcgPSBbanNfc3RyaW5nIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEJvb2xlYW4gKilcbmFuZCBhbmltYXRlZEJvb2xlYW4gPSBbYm9vbCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RyaW5nTGlzdCAqKVxuYW5kIHN0cmluZ0xpc3QgPSBbanNfc3RyaW5nIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gKilcbmFuZCBhbmltYXRlZEVudW1lcmF0aW9uID0gW2ludCAoKnNob3J0KildIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEludGVnZXIgKilcbmFuZCBhbmltYXRlZEludGVnZXIgPSBbaW50XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXIgKilcbmFuZCBhbmltYXRlZE51bWJlciA9IFtudW1iZXJfdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR051bWJlckxpc3QgKilcbmFuZCBudW1iZXJMaXN0ID0gW251bWJlciB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlckxpc3QgKilcbmFuZCBhbmltYXRlZE51bWJlckxpc3QgPSBbbnVtYmVyTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoICopXG5hbmQgbGVuZ3RoID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGxlbmd0aFVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoID0gW2xlbmd0aCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCAqKVxuYW5kIGxlbmd0aExpc3QgPSBbbGVuZ3RoIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoTGlzdCA9IFtsZW5ndGhMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmdsZSAqKVxuYW5kIGFuZ2xlID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGFuZ2xlVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEFuZ2xlICopXG5hbmQgYW5pbWF0ZWRBbmdsZSA9IFthbmdsZSB0XSBhbmltYXRlZFxuXG4oKiBYWFhYWCBNb3ZlIGl0ICopXG5hbmQgcmdiQ29sb3IgPSBvYmplY3QgZW5kXG5cbigqIGludGVyZmFjZSBTVkdDb2xvciAqKVxuYW5kIGNvbG9yID0gb2JqZWN0XG4gICgqIFhYWCBpbmhlcml0IGNzc1ZhbHVlICopXG4gIG1ldGhvZCBjb2xvclR5cGUgOiBjb2xvclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZ2JDb2xvciA6IHJnYkNvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpY2NDb2xvciA6IGljY0NvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvciA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvcklDQ0NvbG9yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldENvbG9yIDogY29sb3JUeXBlIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJQ0NDb2xvciAqKVxuYW5kIGljY0NvbG9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xvclByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9ycyA6IG51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3QgKilcbmFuZCByZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFJlY3QgKilcbmFuZCBhbmltYXRlZFJlY3QgPSBbcmVjdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGFibGUgKilcbmFuZCBzdHlsYWJsZSA9IG9iamVjdFxuICBtZXRob2QgY2xhc3NOYW1lIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0eWxlIDogRG9tX2h0bWwuY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHJlYWRvbmx5X3Byb3BcbiAgKCogICBDU1NWYWx1ZSBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMb2NhdGFibGUgKilcbmFuZCBsb2NhdGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEJCb3ggOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNjcmVlbkNUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0VHJhbnNmb3JtVG9FbGVtZW50IDogZWxlbWVudCB0IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtYWJsZSAqKVxuYW5kIHRyYW5zZm9ybWFibGUgPSBvYmplY3RcbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBtZXRob2QgdHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXN0cyAqKVxuYW5kIHRlc3RzID0gb2JqZWN0XG4gIG1ldGhvZCByZXF1aXJlZEZlYXR1cmVzIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVxdWlyZWRFeHRlbnNpb25zIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3lzdGVtTGFuZ3VhZ2UgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoYXNFeHRlbnNpb24gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMYW5nU3BhY2UgKilcbmFuZCBsYW5nU3BhY2UgPSBvYmplY3RcbiAgbWV0aG9kIHhtbGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbHNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICopXG5hbmQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IG9iamVjdFxuICBtZXRob2QgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA6IGFuaW1hdGVkQm9vbGVhbiB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94ICopXG5hbmQgZml0VG9WaWV3Qm94ID0gb2JqZWN0XG4gIG1ldGhvZCB2aWV3Qm94IDogYW5pbWF0ZWRSZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tQW5kUGFuICopXG5hbmQgem9vbUFuZFBhbiA9IG9iamVjdFxuICBtZXRob2Qgem9vbUFuZFBhbiA6IHpvb21BbmRQYW5UeXBlIHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld1NwZWMgKilcbmFuZCB2aWV3U3BlYyA9IG9iamVjdFxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiB0cmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld0JveFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpb1N0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHJhbnNmb3JtU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2UgKilcbmFuZCB1cmlSZWZlcmVuY2UgPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ1NTUnVsZSA6IENTU1J1bGUgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ09MT1JfUFJPRklMRV9SVUxFID0gNzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdEb2N1bWVudCAqKVxuYW5kIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRFdmVudCAqKVxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RFbGVtZW50IDogc3ZnRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG4gICgqIHJvb3RFbGVtZW50IHdpbGwgYmUgbnVsbCBvciB1bmRlZmluZWQgaW4gYW4gaHRtbCBjb250ZXh0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NWR0VsZW1lbnQgKilcbmFuZCBzdmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudGV2ZW50LCB2aWV3Y3NzLCBkb2N1bWVudGNzcyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U2NyaXB0VHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdmlld3BvcnQgOiByZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VDdXJyZW50VmlldyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRWaWV3IDogdmlld1NwZWMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTY2FsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgY3VycmVudFRyYW5zbGF0ZSA6IHBvaW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdXNwZW5kUmVkcmF3IDogaW50IC0+IHN1c3BlbmRIYW5kbGVJRCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhdyA6IHN1c3BlbmRIYW5kbGVJRCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcmNlUmVkcmF3IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb25zUGF1c2VkIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEN1cnJlbnRUaW1lIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnRlcnNlY3Rpb25MaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5jbG9zdXJlTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrSW50ZXJzZWN0aW9uIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgY2hlY2tFbmNsb3N1cmUgOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBkZXNlbGVjdEFsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdOdW1iZXIgOiBudW1iZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0xlbmd0aCA6IGxlbmd0aCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHQW5nbGUgOiBhbmdsZSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUG9pbnQgOiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTWF0cml4IDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdSZWN0IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtIDogdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IHQgLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+IERvbS5lbGVtZW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHRWxlbWVudCAqKVxuYW5kIGdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0RlZnNFbGVtZW50ICopXG5hbmQgZGVmc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZXNjRWxlbWVudCAqKVxuYW5kIGRlc2NFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUaXRsZUVsZW1lbnQgKilcbmFuZCB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N5bWJvbEVsZW1lbnQgKilcbmFuZCBzeW1ib2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVc2VFbGVtZW50ICopXG5hbmQgdXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkSW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50SW5zdGFuY2UgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nRWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IDogdXNlRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IGVsZW1lbnRJbnN0YW5jZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudEluc3RhbmNlTGlzdCAqKVxuYW5kIGVsZW1lbnRJbnN0YW5jZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gZWxlbWVudEluc3RhbmNlIHRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSW1hZ2VFbGVtZW50ICopXG5hbmQgaW1hZ2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG4gICgqIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuZW5kXG5cbmFuZCBzd2l0Y2hFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG4oKiBYWFggZGVwcmVjYXRlZCA9PiBpbnRlcmZhY2UgR2V0U1ZHRG9jdW1lbnQgPT4gU1ZHRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKSAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGVFbGVtZW50ICopXG5hbmQgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50ICopXG5hbmQgcG9pbnQgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeFRyYW5zZm9ybSA6IG1hdHJpeCB0IC0+IHBvaW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludExpc3QgKilcbmFuZCBwb2ludExpc3QgPSBbcG9pbnQgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWF0cml4ICopXG5hbmQgbWF0cml4ID0gb2JqZWN0XG4gIG1ldGhvZCBhIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBseSA6IG1hdHJpeCB0IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgaW52ZXJzZSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGVOb25Vbmlmb3JtIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZUZyb21WZWN0b3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBYIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1ggOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdZIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm0gKilcbmFuZCB0cmFuc2Zvcm0gPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogdHJhbnNmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeCA6IG1hdHJpeCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldE1hdHJpeCA6IG1hdHJpeCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Um90YXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdYIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdZIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybUxpc3QgKilcbmFuZCB0cmFuc2Zvcm1MaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW3RyYW5zZm9ybSB0XSBsaXN0XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25zb2xpZGF0ZSA6IHRyYW5zZm9ybSB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ICopXG5hbmQgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gW3RyYW5zZm9ybUxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvID0gb2JqZWN0XG4gIG1ldGhvZCBhbGlnbiA6IGFsaWdubWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZWV0T3JTbGljZSA6IG1lZXRPclNsaWNlVHlwZSByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFtwcmVzZXJ2ZUFzcGVjdFJhdGlvIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnICopXG5hbmQgcGF0aFNlZyA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ1R5cGUgOiBwYXRoU2VnbWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXRoU2VnVHlwZUFzTGV0dGVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ2xvc2VQYXRoICopXG5hbmQgcGF0aFNlZ0Nsb3NlUGF0aCA9IHBhdGhTZWdcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvUmVsICopXG5hbmQgcGF0aFNlZ01vdmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9SZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNSZWwqKVxuYW5kIHBhdGhTZWdBcmMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxhcmdlQXJjRmxhZyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN3ZWVwRmxhZyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0xpc3QgPSBbcGF0aFNlZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBhdGhEYXRhICopXG5hbmQgYW5pbWF0ZWRQYXRoRGF0YSA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2Qgbm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aEVsZW1lbnQgKilcbmFuZCBwYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBhdGhEYXRhXG5cbiAgbWV0aG9kIHBhdGhMZW5ndGggOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0VG90YWxMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBvaW50QXRMZW5ndGggOiBudW1iZXJfdCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0UGF0aFNlZ0F0TGVuZ3RoIDogbnVtYmVyX3QgLT4gaW50XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGggOiBwYXRoU2VnQ2xvc2VQYXRoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdEVsZW1lbnQgKilcbmFuZCByZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2lyY2xlRWxlbWVudCAqKVxuYW5kIGNpcmNsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsbGlwc2VFbGVtZW50ICopXG5hbmQgZWxsaXBzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBsaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBvaW50cyAqKVxuYW5kIGFuaW1hdGVkUG9pbnRzID0gb2JqZWN0XG4gIG1ldGhvZCBwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5bGluZUVsZW1lbnQgKilcbmFuZCBwb2x5TGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWdvbkVsZW1lbnQgKilcbmFuZCBwb2x5Z29uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0Q29udGVudEVsZW1lbnQgKilcbmFuZCB0ZXh0Q29udGVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGV4dExlbmd0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGhBZGp1c3QgOiBsZW5ndGhBZGp1c3QgYW5pbWF0ZWQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE51bWJlck9mQ2hhcnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFRleHRMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN1YlN0cmluZ0xlbmd0aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW50T2ZDaGFyIDogaW50IC0+IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJvdGF0aW9uT2ZDaGFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q2hhck51bUF0UG9zaXRpb24gOiBwb2ludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RTdWJTdHJpbmcgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50ICopXG5hbmQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IGFuaW1hdGVkTnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dEVsZW1lbnQgKilcbmFuZCB0ZXh0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG5hbmQgdHNwYW5FbGVtZW50ID0gdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG5hbmQgdHJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBhdGhFbGVtZW50ICopXG5hbmQgdGV4dFBhdGhFbGVtZW50TWV0aG9kID0gW3RleHRQYXRoTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudFNwYWNpbmcgPSBbdGV4dFBhdGhTcGFjaW5nVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGhvZF8gOiB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGFjaW5nIDogdGV4dFBhdGhFbGVtZW50U3BhY2luZyByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaERlZkVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaERlZkVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50ICopXG5hbmQgYWx0R2x5cGhJdGVtRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoUmVmRWxlbWVudCAqKVxuYW5kIGdseXBoUmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYWludCA6IFNWR0NvbG9yIHsgKilcblxuKCogICAvLyBQYWludCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfTk9ORSA9IDEwMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IgPSAxMDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgPSAxMDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiA9IDEwNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgPSAxMDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SID0gMTA2OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSSA9IDEwNzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsgKilcblxuKCogICB2b2lkIHNldFVyaShpbiBET01TdHJpbmcgdXJpKTsgKilcbigqICAgdm9pZCBzZXRQYWludChpbiB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGUsIGluIERPTVN0cmluZyB1cmksIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKSByYWlzZXMoU1ZHRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdNYXJrZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdTdHlsYWJsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRml0VG9WaWV3Qm94IHsgKilcblxuKCogICAvLyBNYXJrZXIgVW5pdCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCA9IDI7ICopXG5cbigqICAgLy8gTWFya2VyIE9yaWVudGF0aW9uIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFya2VyVW5pdHM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJXaWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlckhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3JpZW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQW5nbGUgb3JpZW50QW5nbGU7ICopXG5cbigqICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGluIFNWR0FuZ2xlIGFuZ2xlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlUnVsZSA6IFNWR0NTU1J1bGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3JjIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWUgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHR3JhZGllbnRFbGVtZW50ICopXG5hbmQgYW5pbWF0ZWRTcHJlYWRNZXRob2QgPSBbc3ByZWFkTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIGdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGdyYWRpZW50VW5pdHM7ICopXG4gIG1ldGhvZCBncmFkaWVudFRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3ByZWFkTWV0aG9kIDogYW5pbWF0ZWRTcHJlYWRNZXRob2QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCAqKVxuYW5kIGxpbmVhckdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQgKilcbmFuZCByYWRpYWxHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTdG9wRWxlbWVudCAqKVxuYW5kIHN0b3BFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2Qgb2Zmc2V0IDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdHRlcm5FbGVtZW50ICopXG5hbmQgcGF0dGVybkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Vbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgcGF0dGVyblRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDbGlwUGF0aEVsZW1lbnQgKilcbmFuZCBjbGlwUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGNsaXBQYXRoVW5pdHM7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR01hc2tFbGVtZW50ICopXG5hbmQgbWFza0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza1VuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tDb250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlckVsZW1lbnQgKilcbmFuZCBmaWx0ZXJFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBmaWx0ZXJVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwcmltaXRpdmVVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWCA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWSA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0RmlsdGVyUmVzIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogU1ZHU3R5bGFibGUgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB3aWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIGhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIHJlc3VsdDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUJsZW5kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEJsZW5kIE1vZGUgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX01VTFRJUExZID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JFRU4gPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0RBUktFTiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTElHSFRFTiA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbW9kZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbG9yIE1hdHJpeCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB2YWx1ZXM7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuXG4oKiAgIC8vIENvbXBvbmVudCBUcmFuc2ZlciBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JFVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdGFibGVWYWx1ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzbG9wZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGludGVyY2VwdDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGFtcGxpdHVkZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgb2Zmc2V0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY1JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0dFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb21wb3NpdGUgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1AgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SID0gNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGszOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBFZGdlIE1vZGUgVmFsdWVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9XUkFQID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX05PTkUgPSAzOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBrZXJuZWxNYXRyaXg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaXZpc29yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmlhczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGVkZ2VNb2RlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQm9vbGVhbiBwcmVzZXJ2ZUFscGhhOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpZmZ1c2VDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhemltdXRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZWxldmF0aW9uOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwb3RMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBsaW1pdGluZ0NvbmVBbmdsZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ2hhbm5lbCBTZWxlY3RvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9HID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0EgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geENoYW5uZWxTZWxlY3RvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geUNoYW5uZWxTZWxlY3RvcjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblk7ICopXG5cbigqICAgdm9pZCBzZXRTdGREZXZpYXRpb24oaW4gZmxvYXQgc3RkRGV2aWF0aW9uWCwgaW4gZmxvYXQgc3RkRGV2aWF0aW9uWSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVJbWFnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIE1vcnBob2xvZ3kgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU9mZnNldEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR5OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVGlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIFR1cmJ1bGVuY2UgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UgPSAyOyAqKVxuXG4oKiAgIC8vIFN0aXRjaCBPcHRpb25zICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9TVElUQ0ggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgbnVtT2N0YXZlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNlZWQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHN0aXRjaFRpbGVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0N1cnNvckVsZW1lbnQgKilcbmFuZCBjdXJzb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQUVsZW1lbnQgKilcbmFuZCBhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgdGFyZ2V0IDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdFbGVtZW50ICopXG5hbmQgdmlld0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBtZXRob2Qgdmlld1RhcmdldCA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NjcmlwdEVsZW1lbnQgKilcbmFuZCBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdSZWN0IHpvb21SZWN0U2NyZWVuOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcHJldmlvdXNTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgbmV3U2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBuZXdUcmFuc2xhdGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gICgqIGluaGVyaXQgZWxlbWVudFRpbWVDb250cm9sICopXG4gIG1ldGhvZCB0YXJnZXRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U3RhcnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U2ltcGxlRHVyYXRpb24gOiBudW1iZXJfdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTZXRFbGVtZW50ICopXG5hbmQgc2V0RWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0ZU1vdGlvbkVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNUGF0aEVsZW1lbnQgKilcbmFuZCBtUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVDb2xvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEVsZW1lbnQgKilcbmFuZCBmb250RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQqKVxuYW5kIGdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0hLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdWS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VTcmNFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlU3JjRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlVXJpRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVVyaUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VGb3JtYXRFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZU5hbWVFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWV0YWRhdGFFbGVtZW50ICopXG5jbGFzcyB0eXBlIG1ldGFkYXRhRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvcmVpZ25PYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50TlMgeG1sbnMgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGggZG9jIDogYWx0R2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoRGVmIGRvYyA6IGFsdEdseXBoRGVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGRlZlwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaEl0ZW0gZG9jIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGl0ZW1cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZSBkb2MgOiBhbmltYXRlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVDb2xvciBkb2MgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVjb2xvclwiXG5cbmxldCBjcmVhdGVBbmltYXRlTW90aW9uIGRvYyA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVtb3Rpb25cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSBkb2MgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRldHJhbnNmb3JtXCJcblxubGV0IGNyZWF0ZUNpcmNsZSBkb2MgOiBjaXJjbGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNpcmNsZVwiXG5cbmxldCBjcmVhdGVDbGlwUGF0aCBkb2MgOiBjbGlwUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2xpcHBhdGhcIlxuXG4oKiBsZXQgY3JlYXRlQ29sb3JQcm9maWxlIGRvYyA6IGNvbG9yUHJvZmlsZSB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xvci1wcm9maWxlXCIgKilcbmxldCBjcmVhdGVDdXJzb3IgZG9jIDogY3Vyc29yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjdXJzb3JcIlxuXG5sZXQgY3JlYXRlRGVmcyBkb2MgOiBkZWZzRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWZzXCJcblxubGV0IGNyZWF0ZURlc2MgZG9jIDogZGVzY0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVzY1wiXG5cbmxldCBjcmVhdGVFbGxpcHNlIGRvYyA6IGVsbGlwc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVsbGlwc2VcIlxuXG4oKiBsZXQgY3JlYXRlRmUqICopXG5sZXQgY3JlYXRlRmlsdGVyIGRvYyA6IGZpbHRlckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmlsdGVyXCJcblxubGV0IGNyZWF0ZUZvbnQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udFwiXG5cbmxldCBjcmVhdGVGb250RmFjZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2VcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VGb3JtYXQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbmxldCBjcmVhdGVGb250RmFjZU5hbWUgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLW5hbWVcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VTcmMgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXNyY1wiXG5cbmxldCBjcmVhdGVGb250RmFjZVVyaSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtdXJpXCJcblxubGV0IGNyZWF0ZUZvcmVpZ25PYmplY3QgZG9jIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9yZWlnbk9iamVjdFwiXG5cbmxldCBjcmVhdGVHIGRvYyA6IGdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdcIlxuXG5sZXQgY3JlYXRlR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBoXCJcblxubGV0IGNyZWF0ZUdseXBoUmVmIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaHJlZlwiXG5cbmxldCBjcmVhdGVoa2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhrZXJuXCJcblxubGV0IGNyZWF0ZUltYWdlIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWFnZVwiXG5cbmxldCBjcmVhdGVMaW5lRWxlbWVudCBkb2MgOiBsaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lXCJcblxubGV0IGNyZWF0ZUxpbmVhckVsZW1lbnQgZG9jIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVhcmdyYWRpZW50XCJcblxuKCogbGV0IGNyZWF0ZU1hcmtlciBkb2MgOiBtYXJrZXJFbGVtZW50ICopXG5sZXQgY3JlYXRlTWFzayBkb2MgOiBtYXNrRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXNrXCJcblxubGV0IGNyZWF0ZU1ldGFEYXRhIGRvYyA6IG1ldGFkYXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhZGF0YVwiXG5cbmxldCBjcmVhdGVNaXNzaW5nR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1pc3NpbmctZ2x5cGhcIlxuXG5sZXQgY3JlYXRlTVBhdGggZG9jIDogbVBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1wYXRoXCJcblxubGV0IGNyZWF0ZVBhdGggZG9jIDogcGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0aFwiXG5cbmxldCBjcmVhdGVQYXR0ZXJuIGRvYyA6IHBhdHRlcm5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdHRlcm5cIlxuXG5sZXQgY3JlYXRlUG9seWdvbiBkb2MgOiBwb2x5Z29uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5Z29uXCJcblxubGV0IGNyZWF0ZVBvbHlsaW5lIGRvYyA6IHBvbHlMaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5bGluZVwiXG5cbmxldCBjcmVhdGVSYWRpYWxncmFkaWVudCBkb2MgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmFkaWFsZ3JhZGllbnRcIlxuXG5sZXQgY3JlYXRlUmVjdCBkb2MgOiByZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyZWN0XCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVTZXQgZG9jIDogc2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzZXRcIlxuXG5sZXQgY3JlYXRlU3RvcCBkb2MgOiBzdG9wRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdG9wXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVTdmcgZG9jIDogc3ZnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdmdcIlxuXG5sZXQgY3JlYXRlU3dpdGNoIGRvYyA6IHN3aXRjaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3dpdGNoXCJcblxubGV0IGNyZWF0ZVN5bWJvbCBkb2MgOiBzeW1ib2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN5bWJvbFwiXG5cbmxldCBjcmVhdGVUZXh0RWxlbWVudCBkb2MgOiB0ZXh0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0XCJcblxubGV0IGNyZWF0ZVRleHRwYXRoIGRvYyA6IHRleHRQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0cGF0aFwiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlVHJlZiBkb2MgOiB0cmVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0cmVmXCJcblxubGV0IGNyZWF0ZVRzcGFuIGRvYyA6IHRzcGFuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0c3BhblwiXG5cbmxldCBjcmVhdGVVc2UgZG9jIDogdXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1c2VcIlxuXG5sZXQgY3JlYXRlVmlldyBkb2MgOiB2aWV3RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWV3XCJcblxubGV0IGNyZWF0ZXZrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmtlcm5cIlxuXG4oKioqKilcblxubGV0IHN2Z19lbGVtZW50IDogZWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fU1ZHRWxlbWVudFxuXG5sZXQgZG9jdW1lbnQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkIDogZWxlbWVudCB0ID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIGUgLT4gaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gZSBlbHNlIHJhaXNlIE5vdF9mb3VuZClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IChlIDogI0RvbS5ub2RlIEpzLnQpIDogZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIChlIDogI2VsZW1lbnQgdCkgdGFnID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgOiBhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYVwiXG5cbiAgbGV0IGFsdEdseXBoIGUgOiBhbHRHbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgZSA6IGFsdEdseXBoRGVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhkZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gZSA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoaXRlbVwiXG5cbiAgbGV0IGFuaW1hdGUgZSA6IGFuaW1hdGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yIGUgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlY29sb3JcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uIGUgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZW1vdGlvblwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gZSA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgb3B0ID1cbiAgICB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG4gIGxldCBjaXJjbGUgZSA6IGNpcmNsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNpcmNsZVwiXG5cbiAgbGV0IGNsaXBQYXRoIGUgOiBjbGlwUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNsaXBwYXRoXCJcblxuICAoKiBsZXQgQ29sb3JQcm9maWxlIGUgOiBjb2xvclByb2ZpbGUgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNvbG9yLXByb2ZpbGVcIiAqKVxuICBsZXQgY3Vyc29yIGUgOiBjdXJzb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjdXJzb3JcIlxuXG4gIGxldCBkZWZzIGUgOiBkZWZzRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgZSA6IGRlc2NFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZXNjXCJcblxuICBsZXQgZWxsaXBzZSBlIDogZWxsaXBzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImVsbGlwc2VcIlxuXG4gICgqIGxldCBGZSogKilcbiAgbGV0IGZpbHRlciBlIDogZmlsdGVyRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZmlsdGVyXCJcblxuICBsZXQgZm9udCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnRcIlxuXG4gIGxldCBmb250RmFjZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRGYWNlRm9ybWF0IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbiAgbGV0IGZvbnRGYWNlTmFtZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICBsZXQgZm9udEZhY2VTcmMgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udEZhY2VVcmkgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9yZWlnbk9iamVjdCBlIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvcmVpZ25vYmplY3RcIlxuXG4gIGxldCBnIGUgOiBnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ1wiXG5cbiAgbGV0IGdseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBoXCJcblxuICBsZXQgZ2x5cGhSZWYgZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhyZWZcIlxuXG4gIGxldCBoa2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaGtlcm5cIlxuXG4gIGxldCBpbWFnZSBlIDogaW1hZ2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJpbWFnZVwiXG5cbiAgbGV0IGxpbmVFbGVtZW50IGUgOiBsaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZVwiXG5cbiAgbGV0IGxpbmVhckVsZW1lbnQgZSA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZWFyZ3JhZGllbnRcIlxuXG4gICgqIGxldCBNYXJrZXIgZSA6IG1hcmtlckVsZW1lbnQgKilcbiAgbGV0IG1hc2sgZSA6IG1hc2tFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtYXNrXCJcblxuICBsZXQgbWV0YURhdGEgZSA6IG1ldGFkYXRhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWV0YWRhdGFcIlxuXG4gIGxldCBtaXNzaW5nR2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IG1QYXRoIGUgOiBtUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1wYXRoXCJcblxuICBsZXQgcGF0aCBlIDogcGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdGhcIlxuXG4gIGxldCBwYXR0ZXJuIGUgOiBwYXR0ZXJuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0dGVyblwiXG5cbiAgbGV0IHBvbHlnb24gZSA6IHBvbHlnb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5Z29uXCJcblxuICBsZXQgcG9seWxpbmUgZSA6IHBvbHlMaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWxpbmVcIlxuXG4gIGxldCByYWRpYWxncmFkaWVudCBlIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyYWRpYWxncmFkaWVudFwiXG5cbiAgbGV0IHJlY3QgZSA6IHJlY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyZWN0XCJcblxuICBsZXQgc2NyaXB0IGUgOiBzY3JpcHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzY3JpcHRcIlxuXG4gIGxldCBzZXQgZSA6IHNldEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNldFwiXG5cbiAgbGV0IHN0b3AgZSA6IHN0b3BFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdG9wXCJcblxuICBsZXQgc3R5bGUgZSA6IHN0eWxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3R5bGVcIlxuXG4gIGxldCBzdmcgZSA6IHN2Z0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN2Z1wiXG5cbiAgbGV0IHN3aXRjaCBlIDogc3dpdGNoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3dpdGNoXCJcblxuICBsZXQgc3ltYm9sIGUgOiBzeW1ib2xFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzeW1ib2xcIlxuXG4gIGxldCB0ZXh0RWxlbWVudCBlIDogdGV4dEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRcIlxuXG4gIGxldCB0ZXh0cGF0aCBlIDogdGV4dFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0cGF0aFwiXG5cbiAgbGV0IHRpdGxlIGUgOiB0aXRsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRpdGxlXCJcblxuICBsZXQgdHJlZiBlIDogdHJlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRyZWZcIlxuXG4gIGxldCB0c3BhbiBlIDogdHNwYW5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0c3BhblwiXG5cbiAgbGV0IHVzZSBlIDogdXNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidXNlXCJcblxuICBsZXQgdmlldyBlIDogdmlld0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZpZXdcIlxuXG4gIGxldCB2a2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmtlcm5cIlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRTb3VyY2UgKilcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxudHlwZSBzdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdEV2ZW50SWQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG4gICgqIG1ldGhvZCBzb3VyY2UgOiB1bml0ICopXG5lbmRcblxuY2xhc3MgdHlwZSBldmVudFNvdXJjZSA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCB1cmwgOiBzdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBzdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IHdpdGhDcmVkZW50aWFscyBiIDogb3B0aW9ucyB0ID1cbiAgbGV0IGluaXQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgaW5pdCMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGI7XG4gIGluaXRcblxubGV0IGV2ZW50U291cmNlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgZXZlbnRTb3VyY2Vfb3B0aW9ucyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGNvbnNvbGUgPSBvYmplY3RcbiAgbWV0aG9kIGxvZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNiA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNyA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ184IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1ZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm8gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm4gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzEgOiBib29sIHQgLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzIgOiBib29sIHQgLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMyA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzQgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzUgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXIgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXJ4bWwgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFjZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBFbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lRW5kIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuZXh0ZXJuYWwgZ2V0X2NvbnNvbGUgOiB1bml0IC0+IGNvbnNvbGUgdCA9IFwiY2FtbF9qc19nZXRfY29uc29sZVwiXG5cbmxldCBjb25zb2xlID0gZ2V0X2NvbnNvbGUgKClcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvc2l0aW9uRXJyb3JDb2RlXG5cbnR5cGUgd2F0Y2hJZFxuXG5jbGFzcyB0eXBlIGNvb3JkaW5hdGVzID0gb2JqZWN0XG4gIG1ldGhvZCBsYXRpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9uZ2l0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZUFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZGluZyA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWVkIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb29yZHMgOiBjb29yZGluYXRlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZXN0YW1wIDogSnMuZGF0ZSBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbk9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGVuYWJsZUhpZ2hBY2N1cmFjeSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZW91dCA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhpbXVtQWdlIDogaW50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbkVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBfUEVSTUlTU0lPTl9ERU5JRURfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9TSVRJT05fVU5BVkFJTEFCTEVfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVElNRU9VVCA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGdlb2xvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDdXJyZW50UG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHdhdGNoUG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gd2F0Y2hJZCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsZWFyV2F0Y2ggOiB3YXRjaElkIC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9wb3NpdGlvbl9vcHRpb25zICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBnZW9sb2NhdGlvbiA9XG4gIGxldCB4ID0gSnMuVW5zYWZlLmdsb2JhbCMjLm5hdmlnYXRvciBpblxuICBpZiBKcy5PcHRkZWYudGVzdCB4IHRoZW4geCMjLmdlb2xvY2F0aW9uIGVsc2UgeFxuXG4oKiB1bmRlZmluZWQgKilcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGdlb2xvY2F0aW9uXG4iLCJjbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3VuZGluZ0NsaWVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290Qm91bmRzIDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SYXRpbyA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNJbnRlcnNlY3RpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZHMgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcHRpb25zICgpIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPVxuICBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAoICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnRcbiAgICAgICAgIC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50XG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE4IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgU2hhcmVkID0gc2lnXG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgdmFsIG9iamVjdF9vcHRpb25zIDogdW5pdCAtPiBvYmplY3Rfb3B0aW9ucyBKcy50XG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTaGFyZWQgOiBTaGFyZWQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb2JqZWN0X29wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbGxhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY29sbGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdXNhZ2UgPSBKcy5zdHJpbmcgXCJzb3J0XCJcblxuICAgICAgdmFsIG11dGFibGUgc2Vuc2l0aXZpdHkgPSBKcy5zdHJpbmcgXCJ2YXJpYW50XCJcblxuICAgICAgdmFsIG11dGFibGUgaWdub3JlUHVuY3R1YXRpb24gPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgbnVtZXJpYyA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBjYXNlRmlyc3QgPSBKcy5zdHJpbmcgXCJmYWxzZVwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhcmUgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gaW50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRGF0ZVRpbWVGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBkYXRlU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheVBlcmlvZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyQ3ljbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdE1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGRhdGVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY2FsZW5kYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5UGVyaW9kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyMTIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ckN5Y2xlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZvcm1hdE1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHdlZWtkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZXJhID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHllYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbW9udGggPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWludXRlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlY29uZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lTmFtZSA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLmRhdGUgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMuZGF0ZSBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIE51bWJlckZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFjdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5U2lnbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBub3RhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzaWduRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ01vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nUHJpb3JpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nSW5jcmVtZW50IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0cmFpbGluZ1plcm9EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBjb21wYWN0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeURpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lTaWduID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIG5vdGF0aW9uID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzaWduRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzdHlsZSA9IEpzLnN0cmluZyBcImRlY2ltYWxcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXREaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzZUdyb3VwaW5nID0gSnMuX3RydWVcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdNb2RlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nUHJpb3JpdHkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdJbmNyZW1lbnQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdHJhaWxpbmdaZXJvRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGx1cmFsUnVsZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHBsdXJhbENhdGVnb3JpZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgX3R5cGUgPSBKcy5zdHJpbmcgXCJjYXJkaW5hbFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHNlbGVjdCA6IEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50bCA9IG9iamVjdFxuICBtZXRob2QgX0NvbGxhdG9yIDogQ29sbGF0b3IuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RhdGVUaW1lRm9ybWF0IDogRGF0ZVRpbWVGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX051bWJlckZvcm1hdCA6IE51bWJlckZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUGx1cmFsUnVsZXMgOiBQbHVyYWxSdWxlcy5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDYW5vbmljYWxMb2NhbGVzIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBpbnRsID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsXG5cbmxldCBjb2xsYXRvcl9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fQ29sbGF0b3JcblxubGV0IGRhdGVUaW1lRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9EYXRlVGltZUZvcm1hdFxuXG5sZXQgbnVtYmVyRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9OdW1iZXJGb3JtYXRcblxubGV0IHBsdXJhbFJ1bGVzX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9QbHVyYWxSdWxlc1xuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50bFxuIiwiaW5jbHVkZSBKc19vZl9vY2FtbC5Kc1xubW9kdWxlIFVybCA9IEpzX29mX29jYW1sLlVybFxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWwuRmlyZWJ1Z1xubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbC5GaWxlXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWwuRG9tXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbC5UeXBlZF9hcnJheVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sLlJlZ2V4cFxuXG50eXBlICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIFN0ZGxpYi5yZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbnR5cGUgd2luZG93ID0gRG9tX2h0bWwud2luZG93XG5cbmxldCB0b19hcnJheWYgZiBhID0gQXJyYXkubWFwIGYgKHRvX2FycmF5IGEpXG5cbmxldCBvZl9hcnJheWYgZiBhID0gYXJyYXkgKEFycmF5Lm1hcCBmIGEpXG5cbmxldCB0b19saXN0IGEgPSBBcnJheS50b19saXN0IEBAIHRvX2FycmF5IGFcblxubGV0IG9mX2xpc3QgbCA9IGFycmF5IEBAIEFycmF5Lm9mX2xpc3QgQEAgbFxuXG5sZXQgdG9fbGlzdGYgZiBhID0gQXJyYXkudG9fbGlzdCBAQCB0b19hcnJheWYgZiBhXG5cbmxldCBvZl9saXN0ZiBmIGEgPSBvZl9hcnJheWYgZiBAQCBBcnJheS5vZl9saXN0IGFcblxubGV0IG9wdGRlZiBmID0gZnVuY3Rpb24gTm9uZSAtPiB1bmRlZmluZWQgfCBTb21lIHggLT4gZGVmIChmIHgpXG5cbmxldCB0b19vcHRkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHVub3B0ZGVmX2YgZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gZGVmIHwgU29tZSB4IC0+IGYgeFxuXG5sZXQgdW5vcHRkZWYgZGVmIHggPSBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IGRlZiB8IFNvbWUgeCAtPiB4XG5cbmxldCBjb252ZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gdW5kZWZpbmVkIHwgU29tZSB4IC0+IGRlZiAoZiB4KVxuXG5sZXQgdG9fb3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCBvcHQgZiA9IGZ1bmN0aW9uIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBjb252b3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBqc19sb2cgbyA9IEZpcmVidWcuY29uc29sZSMjbG9nIG9cblxubGV0IGxvZ19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChzdHJpbmcgcylcblxubGV0IGxvZyBmbXQgPVxuICBGb3JtYXQua2ZwcmludGZcbiAgICAoZnVuIF9mbXQgLT4ganNfbG9nIChzdHJpbmcgKEZvcm1hdC5mbHVzaF9zdHJfZm9ybWF0dGVyICgpKSkpXG4gICAgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgZm10XG5cbmxldCBlcnJvcl9vZl9zdHJpbmcgcyA9IG5ldyVqcyBlcnJvcl9jb25zdHIgKHN0cmluZyBzKVxubGV0IGNhdGNoX2V4biBmID0gZnVuY3Rpb25cbiAgfCBKc19lcnJvci5FeG4gZSAtPiBmIChKc19lcnJvci50b19lcnJvciBlKVxuICB8IGV4biAtPiBmIEBAIGVycm9yX29mX3N0cmluZyBAQCBQcmludGV4Yy50b19zdHJpbmcgZXhuXG5cbm1vZHVsZSBBT3B0ID0gc3RydWN0XG4gIHR5cGUgKydhIHRcbiAgbGV0IG51bGwgOiAnYSB0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IHVuZGVmaW5lZCA6ICdhIHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgcmV0dXJuIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgY29lcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwganNfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuICBsZXQgaXNfbm9uZSAoeCA6ICdhIHQpIDogYm9vbCA9IHggPT0gdW5kZWZpbmVkIHx8IGpzX2VxdWFscyB4IG51bGxcbiAgbGV0IG1hcCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IpIDogJ2IgdCA9XG4gICAgaWYgaXNfbm9uZSB4IHRoZW4gbm9uZSBlbHNlIHJldHVybiAoZiAoY29lcmNlIHgpKVxuICBsZXQgYmluZCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IgdCkgOiAnYiB0ID1cbiAgICBpZiBpc19ub25lIHggdGhlbiBub25lIGVsc2UgZiAoY29lcmNlIHgpXG4gIGxldCB0ZXN0ICh4IDogJ2EgdCkgOiBib29sID0gbm90IChpc19ub25lIHgpXG4gIGxldCBpdGVyICh4IDogJ2EgdCkgKGYgOiAnYSAtPiB1bml0KSA6IHVuaXQgPSBpZiBub3QgKGlzX25vbmUgeCkgdGhlbiBmIChjb2VyY2UgeClcbiAgbGV0IGNhc2UgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2IpIChnIDogJ2EgLT4gJ2IpIDogJ2IgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgZyAoY29lcmNlIHgpXG4gIGxldCBnZXQgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2EpIDogJ2EgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgKGNvZXJjZSB4KVxuICBsZXQgb3B0aW9uID8obm9uZT11bmRlZmluZWQpICh4IDogJ2Egb3B0aW9uKSA6ICdhIHQgPSBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gIGxldCB0b19vcHRpb24gKHggOiAnYSB0KSA6ICdhIG9wdGlvbiA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGxldCBhb3B0ID8obm9uZT0odW5kZWZpbmVkIDogJ2IgdCkpIChmIDogJ2EgLT4gJ2IpIDogJ2Egb3B0aW9uIC0+ICdiIHQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIChmIHgpXG4gIGxldCB0b19hb3B0IChmIDogJ2EgLT4gJ2IpICh4IDogJ2EgdCkgOiAnYiBvcHRpb24gPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSAoZiB4KSlcbmVuZFxudHlwZSAnYSBhb3B0ID0gJ2EgQU9wdC50XG5cbnR5cGUgJ2EgY2FzZV9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgPiBnZW5fcHJvcFxuXG5sZXQgcmVjIGNob29zZV9jYXNlX29wdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgaCA6OiB0IC0+IG1hdGNoIE9wdGRlZi50b19vcHRpb24gaCB3aXRoIE5vbmUgLT4gY2hvb3NlX2Nhc2Vfb3B0IHQgfCBTb21lIF8gLT4gaFxuXG5sZXQgY2hvb3NlX2Nhc2UgbCA9IGNob29zZV9jYXNlX29wdCAoTGlzdC5tYXAgT3B0ZGVmLnJldHVybiBsKVxuXG5sZXQgb2JqZWN0X2NzID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcbmxldCBhc3NpZ24gKG8xIDogXyB0KSAobzIgOiBfIHQpID0gVW5zYWZlLmNvZXJjZSAob2JqZWN0X2NzIyNhc3NpZ24gbzEgbzIpXG5sZXQgYXNzaWduX2xpc3QgbCA9IFVuc2FmZS5jb2VyY2UgKFVuc2FmZS5tZXRoX2NhbGwgb2JqZWN0X2NzIFwiYXNzaWduXCIgKEFycmF5Lm9mX2xpc3QgbCkpXG5cbmxldCByZW1vdmVfdW5kZWZpbmVkIG8gPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG8gaW5cbiAga2V5cyMjZm9yRWFjaCAod3JhcF9jYWxsYmFjayAoZnVuIGsgXyBfIC0+XG4gICAgICBpZiBub3QgKE9wdGRlZi50ZXN0IChVbnNhZmUuZ2V0IG8gaykpIHRoZW4gVW5zYWZlLmRlbGV0ZSBvIGspKVxuIiwib3BlbiBKc1xuXG50eXBlIG5vbnJlYyAnYSB0ID0gPCA+IHRcblxubGV0IG9iaiA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpICh2IDogJ2EpID0gVW5zYWZlLnNldCB0IChzdHJpbmcgaykgdlxuXG5sZXQgYWRkX2xpc3QgKHQgOiAnYSB0KSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgPVxuICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayB2KSBsXG5cbmxldCBhZGRfbGlzdGYgKHQgOiAnYiB0KSAoZiA6ICgnYSAtPiAnYikpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA9XG4gIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIChmIHYpKSBsXG5cbmxldCBtYWtlIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBhZGRfbGlzdCB0IGw7XG4gIHRcblxubGV0IG1ha2VmIChmIDogKCdhIC0+ICdiKSkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2IgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGFkZF9saXN0ZiB0IGYgbDtcbiAgdFxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpID0gVW5zYWZlLmRlbGV0ZSB0IChzdHJpbmcgaylcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgOiAnYSBvcHRpb24gPVxuICBPcHRkZWYudG9fb3B0aW9uIChVbnNhZmUuZ2V0IHQgKHN0cmluZyBrKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IHN0cmluZyBsaXN0ID1cbiAgdG9fbGlzdGYgdG9fc3RyaW5nIEBAIG9iaiMja2V5cyB0XG5cbmxldCBpdGVtcyAodCA6ICdhIHQpIDogKHN0cmluZyAqICdhKSBsaXN0ID1cbiAgdG9fbGlzdGYgKGZ1biBrIC0+IHRvX3N0cmluZyBrLCBVbnNhZmUuZ2V0IHQgaykgQEAgb2JqIyNrZXlzIHRcblxubGV0IGl0ZW1zZiAoZiA6ICgnYSAtPiAnYikpICh0IDogJ2EgdCkgOiAoc3RyaW5nICogJ2IpIGxpc3QgPVxuICB0b19saXN0ZiAoZnVuIGsgLT4gdG9fc3RyaW5nIGssIGYgQEAgVW5zYWZlLmdldCB0IGspIEBAIG9iaiMja2V5cyB0XG5cbmxldCBsZW5ndGggKHQgOiAnYSB0KSA9IChvYmojI2tleXMgdCkjIy5sZW5ndGhcblxubGV0IG1lcmdlIChsIDogJ2EgdCBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgKGZ1biB4IC0+IExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIHYpIChpdGVtcyB4KSkgbDtcbiAgdFxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHByb21pc2UwID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHRoZW5fIDogKCdhIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQgbWV0aFxuICAgIG1ldGhvZCBjYXRjaCA6ICgnYiAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0IG1ldGhcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9taXNlID0gWydhLCBlcnJvciB0XSBwcm9taXNlMFxuXG50eXBlICgnYSwgJ2IpIHByb21pc2VfY3MgPVxuICAoKCgnYSAtPiB1bml0KSAtPiAoJ2IgLT4gdW5pdCkgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdClcbiAgY29uc3RyXG5cbmxldCBwcm9taXNlIGYgPVxuICBsZXQgY3MgOiAoJ2EsICdiKSBwcm9taXNlX2NzID0gVW5zYWZlLmdsb2JhbCMjLl9Qcm9taXNlIGluXG4gIG5ldyVqcyBjcyAod3JhcF9jYWxsYmFjayBmKVxuXG5sZXQganRoZW4wID9lcnJvciAocHJvbSA6ICgnYSwgJ2IgdCkgcHJvbWlzZTAgdCkgZiA9XG4gIGxldCBjYXRjaF9leG4gZXhuID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biAoZnVuIHggLT4gZWYgKFVuc2FmZS5jb2VyY2UgeCkpIGV4biBpblxuICBsZXQgcCA9IHByb20jI3RoZW5fICh3cmFwX2NhbGxiYWNrIChmdW4geCAtPiB0cnkgZiB4IHdpdGggZXhuIC0+IGNhdGNoX2V4biBleG4pKSBpblxuICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVycm9yIC0+IGlnbm9yZSAocCMjY2F0Y2ggKHdyYXBfY2FsbGJhY2sgZXJyb3IpKVxuXG5sZXQganRoZW4gP2Vycm9yIChwcm9tIDogJ2EgcHJvbWlzZSB0KSBmID1cbiAgbGV0IGNhdGNoX2V4biBleG4gPSBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biBlZiBleG4gaW5cbiAgbGV0IHAgPSBwcm9tIyN0aGVuXyAod3JhcF9jYWxsYmFjayAoZnVuIHggLT4gdHJ5IGYgeCB3aXRoIGV4biAtPiBjYXRjaF9leG4gZXhuKSkgaW5cbiAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlcnJvciAtPiBpZ25vcmUgKHAjI2NhdGNoICh3cmFwX2NhbGxiYWNrIGVycm9yKSlcblxubGV0IGp0aGVuMF9vcHQgcHJvbSA9IGZ1bmN0aW9uIE5vbmUgLT4gaWdub3JlIHByb20gfCBTb21lIGYgLT4ganRoZW4wIHByb20gZlxubGV0IGp0aGVuX29wdCBwcm9tID0gZnVuY3Rpb24gTm9uZSAtPiBpZ25vcmUgcHJvbSB8IFNvbWUgZiAtPiBqdGhlbiBwcm9tIGZcblxubGV0IHJ0aGVuIHByb20gZiA9XG4gIGp0aGVuIH5lcnJvcjooZnVuIGUgLT4gZiBAQCBFcnJvciBlKSBwcm9tIChmdW4geCAtPiBmIChPayB4KSlcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IGxvZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgb1xuXG5sZXQgbG9nMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgbzEgbzJcblxubGV0IGxvZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18zIG8xIG8yIG8zXG5cbmxldCBsb2dfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBsb2dfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGxvZ19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgZGVidWcgbyA9IEZpcmVidWcuY29uc29sZSMjZGVidWcgb1xuXG5sZXQgZGVidWcyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIG8xIG8yXG5cbmxldCBkZWJ1ZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzMgbzEgbzIgbzNcblxubGV0IGRlYnVnX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBkZWJ1Z19zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBkZWJ1Z19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCB3YXJuIG8gPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm4gb1xuXG5sZXQgd2FybjIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiBvMSBvMlxuXG5sZXQgd2FybjMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMyBvMSBvMiBvM1xuXG5sZXQgd2Fybl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjd2FybiAoSnMuc3RyaW5nIHMpXG5cbmxldCB3YXJuX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgd2Fybl9zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IGVycm9yIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIG9cblxubGV0IGVycm9yMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiBvMSBvMlxuXG5sZXQgZXJyb3IzIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIG8xIG8yIG8zXG5cbmxldCBlcnJvcl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBzKVxuXG5sZXQgZXJyb3Jfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgZXJyb3Jfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIGJpZ0ludCA9IG9iamVjdFxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBvcHRkZWYgLT4gXyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbiAgbWV0aG9kIHZhbHVlT2YgOiBiaWdJbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub25yZWMgdCA9IGJpZ0ludCB0XG5cbmxldCBiaWdJbnQgOiAoVW5zYWZlLmFueSAtPiB0KSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJCaWdJbnRcIlxuXG5sZXQgb2Zfc3RyaW5nIHMgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgc3RyaW5nIHMpXG5sZXQgb2ZfaW50IChpIDogaW50KSA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBpKVxubGV0IG9mX2ludDY0IChpIDogaW50NjQpID0gb2Zfc3RyaW5nIChJbnQ2NC50b19zdHJpbmcgaSlcbmxldCBvZl9uYXRpdmUgKGkgOiBuYXRpdmVpbnQpID0gb2Zfc3RyaW5nIChOYXRpdmVpbnQudG9fc3RyaW5nIGkpXG5sZXQgb2ZfZmxvYXQgZiA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBudW1iZXJfb2ZfZmxvYXQgZilcblxubGV0IHRvX2xvY2FsZV9zdHJpbmcgP2ZtdCA/b3B0aW9ucyAobiA6IHQpID1cbiAgdG9fc3RyaW5nIChuIyN0b0xvY2FsZVN0cmluZyAob3B0ZGVmIHN0cmluZyBmbXQpIChPcHRkZWYub3B0aW9uIG9wdGlvbnMpKVxubGV0IHRvX3N0cmluZyAobiA6IHQpID0gdG9fc3RyaW5nIG4jI3RvU3RyaW5nXG4iLCJvcGVuIEpzXG5cbmxldCBzZXRJbm5lckh0bWwgZWx0IHMgPSBlbHQjIy5pbm5lckhUTUwgOj0gc3RyaW5nIHNcblxubGV0IHNldFRleHQgZWx0ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgcyAtPlxuICAgICAgZWx0IyMudGV4dENvbnRlbnQgOj0gc29tZSAoc3RyaW5nIHMpXG5cbmxldCBhZGRDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjYWRkIChzdHJpbmcgcylcblxubGV0IGFkZENsYXNzZXMgZWx0IGwgPSBMaXN0Lml0ZXIgKGFkZENsYXNzIGVsdCkgbFxuXG5sZXQgcmVtb3ZlQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI3JlbW92ZSAoc3RyaW5nIHMpXG5cbmxldCBjb250YWluc0NsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNjb250YWlucyAoc3RyaW5nIHMpXG5cbmxldCBzZXRBdHRyaWJ1dGUgZWx0IGtleSB2YWx1ZSA9IGVsdCMjc2V0QXR0cmlidXRlIChzdHJpbmcga2V5KSAoc3RyaW5nIHZhbHVlKVxuXG5sZXQgcmVtb3ZlQXR0cmlidXRlIGVsdCBrZXkgPSBlbHQjI3JlbW92ZUF0dHJpYnV0ZSAoc3RyaW5nIGtleSlcblxubGV0IGdldEF0dHJpYnV0ZSBlbHQga2V5ID0gT3B0LnRvX29wdGlvbiAoZWx0IyNnZXRBdHRyaWJ1dGUgKHN0cmluZyBrZXkpKVxuXG5sZXQgc2V0Q1NTIGVsdCBzdHlsZXMgPVxuICBsZXQgc3R5bGVzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiOyBcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gayBeIFwiOiBcIiBeIHYpIHN0eWxlcylcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhZGRDU1MgZWx0IHN0eWxlcyA9XG4gIGxldCBzdHlsZXMgPVxuICAgIFN0cmluZy5jb25jYXQgXCI7IFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBrIF4gXCI6IFwiIF4gdikgc3R5bGVzKVxuICBpblxuICBsZXQgc3R5bGVzID1cbiAgICBtYXRjaCBnZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIHN0eWxlc1xuICAgIHwgU29tZSBvbGRfc3R5bGVzIC0+XG4gICAgICAgIG9sZF9zdHlsZXMgXiBcIjsgXCIgXiBzdHlsZXNcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhcHBlbmRDaGlsZCA9IERvbS5hcHBlbmRDaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGQgPSBEb20ucmVtb3ZlQ2hpbGRcblxubGV0IGFwcGVuZENoaWxkcmVuIHBhcmVudCBjaGlsZHJlbiA9IExpc3QuaXRlciAoRG9tLmFwcGVuZENoaWxkIHBhcmVudCkgY2hpbGRyZW5cblxubGV0IGNoaWxkcmVuIHBhcmVudCA9IERvbS5saXN0X29mX25vZGVMaXN0IHBhcmVudCMjLmNoaWxkTm9kZXNcblxubGV0IHJlbW92ZUNoaWxkaSBwYXJlbnQgaSA9XG4gIG1hdGNoIExpc3QubnRoX29wdCAoY2hpbGRyZW4gcGFyZW50KSBpIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgY2hpbGQgLT5cbiAgICAgIHJlbW92ZUNoaWxkIHBhcmVudCBjaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50ID0gTGlzdC5pdGVyIChyZW1vdmVDaGlsZCBwYXJlbnQpIChjaGlsZHJlbiBwYXJlbnQpXG5cbmxldCByZXBsYWNlQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuID1cbiAgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50IDtcbiAgYXBwZW5kQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuXG5cbmxldCBieV9pZCBzID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWQgc1xuXG5sZXQgYWRkTGlzdGVuZXIgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgZWx0IGV2IGYgPVxuICBsZXQgY2FwdHVyZSA9IE9wdGlvbi5tYXAgYm9vbCBjYXB0dXJlIGluXG4gIGxldCBvbmNlID0gT3B0aW9uLm1hcCBib29sIG9uY2UgaW5cbiAgbGV0IHBhc3NpdmUgPSBPcHRpb24ubWFwIGJvb2wgcGFzc2l2ZSBpblxuICBpZ25vcmUgQEBcbiAgRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBlbHQgKERvbS5FdmVudC5tYWtlIGV2KVxuICAgIChEb20uaGFuZGxlciAoZnVuIGUgLT4gYm9vbCAoZiBlKSkpXG5cbm1vZHVsZSBFbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oY2xhc3NlcyA9IFtdKSA/KHN0eWxlcyA9IFtdKSA/KGxpc3RlbiA9IFtdKSA/KGF0dHIgPSBbXSkgP3RleHQgZlxuICAgICAgY2hpbGRyZW4gPVxuICAgIGxldCBlbHQgPSBmIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgTGlzdC5pdGVyIChmdW4gKGV2LCBmKSAtPiBhZGRMaXN0ZW5lciBlbHQgZXYgZikgbGlzdGVuIDtcbiAgICBhZGRDbGFzc2VzIGVsdCBjbGFzc2VzIDtcbiAgICBzZXRDU1MgZWx0IHN0eWxlcyA7XG4gICAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IHNldEF0dHJpYnV0ZSBlbHQgayB2KSBhdHRyIDtcbiAgICBzZXRUZXh0IGVsdCB0ZXh0IDtcbiAgICBhcHBlbmRDaGlsZHJlbiBlbHQgY2hpbGRyZW4gO1xuICAgIGVsdFxuXG4gIGxldCBidXR0b24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUJ1dHRvbiBjaGlsZHJlblxuXG4gIGxldCBkaXYgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZURpdiBjaGlsZHJlblxuXG4gIGxldCBhID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVBIGNoaWxkcmVuXG5cbiAgbGV0IHNwYW4gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNwYW4gY2hpbGRyZW5cblxuICBsZXQgZm9ybSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlRm9ybSBjaGlsZHJlblxuXG4gIGxldCBvcHRpb24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZU9wdGlvbiBjaGlsZHJlblxuXG4gIGxldCBzZWxlY3QgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNlbGVjdCBjaGlsZHJlblxuXG4gIGxldCBpbnB1dCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgKCkgPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSW5wdXQgW11cblxuICBsZXQgaWZyYW1lID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJZnJhbWUgY2hpbGRyZW5cblxuICBsZXQgbGFiZWwgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUxhYmVsIGNoaWxkcmVuXG5cbiAgbGV0IHVsID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVVbCBjaGlsZHJlblxuXG4gIGxldCBsaSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlTGkgY2hpbGRyZW5cblxuICBsZXQgaW1nID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJbWcgY2hpbGRyZW5cblxuICBsZXQgc2NyaXB0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTY3JpcHQgY2hpbGRyZW5cblxuICBsZXQgdGFibGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRhYmxlIGNoaWxkcmVuXG5cbiAgbGV0IHRyID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUciBjaGlsZHJlblxuXG4gIGxldCB0aCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGggY2hpbGRyZW5cblxuICBsZXQgdGQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRkIGNoaWxkcmVuXG5lbmRcblxubGV0IGVuY2Fwc2UgcyA9IFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiXG5cbmxldCBzdHJpbmdzX3RvX2FycmF5IGwgPSBcIltcIiBeIFN0cmluZy5jb25jYXQgXCIsXCIgbCBeIFwiXVwiXG5cbmxldCBzdHJpbmdzX3RvX29iamVjdCBsID1cbiAgbGV0IHMgPVxuICAgIFwie1wiXG4gICAgXiBTdHJpbmcuY29uY2F0IFwiLFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBlbmNhcHNlIGsgXiBcIjpcIiBeIHYpIGwpXG4gICAgXiBcIn1cIlxuICBpblxuICB0cnkgX0pTT04jI3BhcnNlIChzdHJpbmcgcylcbiAgd2l0aCBfIC0+XG4gICAgbG9nX3N0ciAoXCJjYW5ub3QgcGFyc2UganNvbiBcIiBeIHMpIDtcbiAgICBVbnNhZmUub2JqIFt8fF1cbiIsIm9wZW4gRXpqc19taW5cblxubW9kdWxlIFR5cGVzID0gRXpqc19pZGJfdHlwZXNcbm9wZW4gVHlwZXNcblxudHlwZSBtb2RlID0gUkVBRE9OTFkgfCBSRUFEV1JJVEUgfCBWRVJTSU9OQ0hBTkdFXG50eXBlIGRpcmVjdGlvbiA9IE5FWFQgfCBQUkVWIHwgTkVYVFVOSVFVRSB8IFBSRVZVTklRVUVcblxudHlwZSBkYl9vcHRpb25zID0geyBrZXlfcGF0aCA6IHN0cmluZyBvcHRpb247IGF1dG9faW5jcmVtZW50IDogYm9vbCBvcHRpb24gfVxuXG50eXBlIGRiX3VwZ3JhZGUgPSB7IG9sZF92ZXJzaW9uIDogaW50OyBuZXdfdmVyc2lvbiA6IGludCB9XG5cbnR5cGUgaW5kZXhfb3B0aW9ucyA9IHsgdW5pcXVlIDogYm9vbCBvcHRpb247IG11bHRpX2VudHJ5IDogYm9vbCBvcHRpb247IGxvY2FsZSA6IGJvb2wgb3B0aW9uIH1cblxubW9kdWxlIHR5cGUgVHJfc2lnID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGpzXG4gIHZhbCB0b19qcyA6IHQgLT4ganNcbiAgdmFsIG9mX2pzIDoganMgLT4gdFxuZW5kXG5cbmxldCBzdHJfb2ZfbW9kZSA9IGZ1bmN0aW9uXG4gIHwgUkVBRE9OTFkgLT4gc3RyaW5nIFwicmVhZG9ubHlcIlxuICB8IFJFQURXUklURSAtPiBzdHJpbmcgXCJyZWFkd3JpdGVcIlxuICB8IFZFUlNJT05DSEFOR0UgLT4gc3RyaW5nIFwidmVyc2lvbmNoYW5nZVwiXG5cbmxldCBzdHJfb2ZfZGlyZWN0aW9uID0gZnVuY3Rpb25cbiAgfCBORVhUIC0+IHN0cmluZyBcIm5leHRcIlxuICB8IFBSRVYgLT4gc3RyaW5nIFwicHJldlwiXG4gIHwgTkVYVFVOSVFVRSAtPiBzdHJpbmcgXCJuZXh0dW5pcXVlXCJcbiAgfCBQUkVWVU5JUVVFIC0+IHN0cmluZyBcInByZXZ1bmlxdWVcIlxuXG5sZXQgaURCS2V5UmFuZ2UgOiBVbnNhZmUuYW55IGlEQktleVJhbmdlIHQgPSBVbnNhZmUudmFyaWFibGUgXCJJREJLZXlSYW5nZVwiXG5sZXQgaW5kZXhlZERCIDoganNfc3RyaW5nIHQgaURCRmFjdG9yeSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwid2luZG93LmluZGV4ZWREQlwiXG5cbmxldCByZXN1bHQgciA9IHIjIy5yZXN1bHRcblxubGV0IHdyYXAgP2Vycm9yID9jYWxsYmFjayByID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgICByIyMub25zdWNjZXNzIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgKHJlc3VsdCByKSkpIGNhbGxiYWNrO1xuICAgIHIjIy5vbmVycm9yIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgcikpIGVycm9yXG4gIHdpdGggZXhuIC0+XG4gICAgbWF0Y2ggZXJyb3Igd2l0aCBOb25lIC0+IHJhaXNlIGV4biB8IFNvbWUgZiAtPiBjYXRjaF9leG4gKGZ1biBlIC0+IGYgKFVuc2FmZS5jb2VyY2UgZSkpIGV4blxuXG5sZXQgd3JhcGYgP2Vycm9yID9jYWxsYmFjayBnIHIgPVxuICB0cnlcbiAgICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICAgIHIjIy5vbnN1Y2Nlc3MgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiAoZyBAQCByZXN1bHQgcikpKSBjYWxsYmFjaztcbiAgICByIyMub25lcnJvciA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIHIpKSBlcnJvclxuICB3aXRoIGV4biAtPlxuICAgIG1hdGNoIGVycm9yIHdpdGggTm9uZSAtPiByYWlzZSBleG4gfCBTb21lIGYgLT4gY2F0Y2hfZXhuIChmdW4gZSAtPiBmIChVbnNhZmUuY29lcmNlIGUpKSBleG5cblxubGV0IGRiX3VwZ3JhZGVfZXZlbnQgKGUgOiBpREJWZXJzaW9uQ2hhbmdlRXZlbnQgdCkgPSB7XG4gIG9sZF92ZXJzaW9uID0gZSMjLm9sZFZlcnNpb247XG4gIG5ld192ZXJzaW9uID0gZSMjLm5ld1ZlcnNpb247XG59XG5cbmxldCBvcGVuREIgP3VwZ3JhZGUgP2Vycm9yID92ZXJzaW9uIG5hbWUgY2FsbGJhY2sgPVxuICBsZXQgaW5kZXhlZERCIDogXyBpREJGYWN0b3J5IHQgPSBVbnNhZmUudmFyaWFibGUgXCJ3aW5kb3cuaW5kZXhlZERCXCIgaW5cbiAgbGV0IHIgPSBsYXp5IChpbmRleGVkREIjI19vcGVuIChzdHJpbmcgbmFtZSkgKEFPcHQub3B0aW9uIHZlcnNpb24pKSBpblxuICB3cmFwID9lcnJvciB+Y2FsbGJhY2sgcjtcbiAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgciMjLm9udXBncmFkZW5lZWRlZCA6PVxuICAgIEFPcHQuYW9wdCAoZnVuIHUgLT4gd3JhcF9jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgbGV0IHYgPSBkYl91cGdyYWRlX2V2ZW50IGUgaW5cbiAgICAgICAgbGV0IGRiID0gcmVzdWx0IHIgaW5cbiAgICAgICAgdSBkYiB2KSkgdXBncmFkZVxuXG5sZXQgdHJhbnNhY3Rpb24gciA6IGlEQlRyYW5zYWN0aW9uIHQgPSByIyMudHJhbnNhY3Rpb25cblxubGV0IGNyZWF0ZV9kYl9vcHRpb25zIHtrZXlfcGF0aDsgYXV0b19pbmNyZW1lbnR9IDogY3JlYXRlX2RiX29wdGlvbnMgdCA9IG9iamVjdCVqc1xuICB2YWwga2V5UGF0aCA9IEFPcHQuYW9wdCBzdHJpbmcga2V5X3BhdGhcbiAgdmFsIGF1dG9JbmNyZW1lbnQgPSBBT3B0LmFvcHQgYm9vbCBhdXRvX2luY3JlbWVudFxuZW5kXG5cbmxldCBjcmVhdGVfc3RvcmUgP29wdGlvbnMgKGRiIDogaURCRGF0YWJhc2UgdCkgbmFtZSA9XG4gIFVuc2FmZS5jb2VyY2UgQEBcbiAgZGIjI2NyZWF0ZU9iamVjdFN0b3JlIChzdHJpbmcgbmFtZSkgKEFPcHQuYW9wdCBjcmVhdGVfZGJfb3B0aW9ucyBvcHRpb25zKVxuXG5sZXQgZ2V0X3N0b3JlID9tb2RlIChkYiA6IGlEQkRhdGFiYXNlIHQpIG5hbWUgOiAoXywgXykgaURCT2JqZWN0U3RvcmUgdCA9XG4gIGxldCB0ciA9IGRiIyN0cmFuc2FjdGlvbiAoYXJyYXkgW3wgc3RyaW5nIG5hbWUgfF0pIChBT3B0LmFvcHQgc3RyX29mX21vZGUgbW9kZSkgaW5cbiAgVW5zYWZlLmNvZXJjZSBAQCB0ciMjb2JqZWN0U3RvcmUgKHN0cmluZyBuYW1lKVxuXG5tb2R1bGUgU3RvcmUoSyA6IFRyX3NpZykoRCA6IFRyX3NpZykgPSBzdHJ1Y3RcblxuICB0eXBlIHN0b3JlID0gKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHRcbiAgdHlwZSBrZXlzID0gSyBvZiBLLnQgfCBLUiBvZiBLLmpzIGlEQktleVJhbmdlIHRcblxuICBsZXQgY3JlYXRlID9vcHRpb25zIGRiIG5hbWUgOiBzdG9yZSA9XG4gICAgY3JlYXRlX3N0b3JlID9vcHRpb25zIGRiIG5hbWVcblxuICBsZXQgc3RvcmUgP21vZGUgZGIgbmFtZSA6IHN0b3JlID1cbiAgICBnZXRfc3RvcmUgP21vZGUgZGIgbmFtZVxuXG4gIGxldCBhZGQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXBmID9jYWxsYmFjayA/ZXJyb3IgSy5vZl9qcyBAQCBsYXp5IChzdCMjYWRkIChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCBwdXQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXAgP2NhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjcHV0IChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCByYW5nZSA/b2xvd2VyID9vdXBwZXIgP2xvd2VyID91cHBlciAoKSA9XG4gICAgbGV0IGlEQktleVJhbmdlIDogSy5qcyBpREJLZXlSYW5nZSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwiSURCS2V5UmFuZ2VcIiBpblxuICAgIG1hdGNoIGxvd2VyLCB1cHBlciB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBsb3dlciwgTm9uZSAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyNsb3dlckJvdW5kIChLLnRvX2pzIGxvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSlcbiAgICB8IE5vbmUsIFNvbWUgdXBwZXIgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjdXBwZXJCb3VuZCAoSy50b19qcyB1cHBlcikgKEFPcHQuYW9wdCBib29sIG91cHBlcikpXG4gICAgfCBTb21lIGxvd2VyLCBTb21lIHVwcGVyIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI2JvdW5kXG4gICAgICAgICAgICAoSy50b19qcyBsb3dlcikgKEsudG9fanMgdXBwZXIpXG4gICAgICAgICAgICAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb3VwcGVyKSlcblxuICBsZXQgY291bnQgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpIChjYWxsYmFjayA6IGludCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCBBT3B0LnVuZGVmaW5lZClcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCAoQU9wdC5kZWYgKEsudG9fanMgaykpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudF9yYW5nZSAoQU9wdC5kZWYgcikpXG5cbiAgbGV0IGdldCA/ZXJyb3IgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEQudCBvcHRpb24gLT4gdW5pdCkgayA9XG4gICAgbGV0IG9mX2pzIGpzID0gbWF0Y2ggQU9wdC50b19vcHRpb24ganMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBqcyAtPiBTb21lIChELm9mX2pzIGpzKSBpblxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgSyBrZXkgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0IChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGdldF9hbGwgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBELnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbCBBT3B0LnVuZGVmaW5lZCAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGdldF9rZXkgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgb3B0aW9uIC0+IHVuaXQpIGsgPVxuICAgIGxldCBvZl9qcyBqcyA9IG1hdGNoIEFPcHQudG9fb3B0aW9uIGpzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUganMgLT4gU29tZSAoSy5vZl9qcyBqcykgaW5cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEsga2V5IC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldEtleSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0S2V5X3JhbmdlIHJhbmdlKVxuXG4gIGxldCBnZXRfYWxsX2tleXMgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgQU9wdC51bmRlZmluZWQgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXNfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGRlbGV0ZSA/Y2FsbGJhY2sgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSA9IGZ1bmN0aW9uXG4gICAgfCBLIGtleSAtPiB3cmFwID9lcnJvciA/Y2FsbGJhY2sgQEAgbGF6eSAoc3QjI2RlbGV0ZSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIEBAIGxhenkgKHN0IyNkZWxldGVfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGl0ZXIgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IEQudCAtPiB1bml0KSA9XG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGYgayAoRC5vZl9qcyBjIyMudmFsdWUpO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiBELnQgLT4gJ2EgLT4gJ2EpIChzdGFydCA6ICdhKSAoY2FsbGJhY2sgOiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGFjYyA9IHJlZiBzdGFydCBpblxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNhbGxiYWNrICFhY2NcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGFjYyA6PSBmIGsgKEQub2ZfanMgYyMjLnZhbHVlKSAhYWNjO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBpdGVyX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IHVuaXQpID1cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgZiBrO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+ICdhIC0+ICdhKSAoc3RhcnQgOiAnYSkgKGNhbGxiYWNrIDogJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBhY2MgPSByZWYgc3RhcnQgaW5cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjYWxsYmFjayAhYWNjXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBhY2MgOj0gZiBrICFhY2M7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGNsZWFyID9lcnJvciA/Y2FsbGJhY2sgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpID1cbiAgICB3cmFwZiA/Y2FsbGJhY2sgP2Vycm9yIChmdW4gXyAtPiAoKSkgQEAgbGF6eSBzdCMjY2xlYXJcblxuICBsZXQgY3JlYXRlX2luZGV4X29wdGlvbnMge3VuaXF1ZTsgbXVsdGlfZW50cnk7IGxvY2FsZX0gOiBjcmVhdGVfaW5kZXhfb3B0aW9ucyB0ID0gb2JqZWN0JWpzXG4gICAgdmFsIHVuaXF1ZSA9IEFPcHQuYW9wdCBib29sIHVuaXF1ZVxuICAgIHZhbCBtdWx0aUVudHJ5ID0gQU9wdC5hb3B0IGJvb2wgbXVsdGlfZW50cnlcbiAgICB2YWwgbG9jYWxlID0gQU9wdC5hb3B0IGJvb2wgbG9jYWxlXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVfaW5kZXggP29wdGlvbnMgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUga2V5X3BhdGggPVxuICAgIGxldCBvcHRpb25zID0gQU9wdC5hb3B0IGNyZWF0ZV9pbmRleF9vcHRpb25zIG9wdGlvbnMgaW5cbiAgICBzdCMjY3JlYXRlSW5kZXggKHN0cmluZyBuYW1lKSAoc3RyaW5nIGtleV9wYXRoKSBvcHRpb25zXG5cbiAgbGV0IGRlbGV0ZV9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgaWdub3JlIEBAIHN0IyNkZWxldGVJbmRleCAoc3RyaW5nIG5hbWUpXG5cbiAgbGV0IGdldF9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgc3QjI2luZGV4IChzdHJpbmcgbmFtZSlcblxuZW5kXG5cbm1vZHVsZSBOb1RyKFMgOiBzaWcgdHlwZSB0IGVuZCkgOiBUcl9zaWcgd2l0aCB0eXBlIHQgPSBTLnQgYW5kIHR5cGUganMgPSBTLnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUy50XG4gIHR5cGUganMgPSBTLnRcbiAgbGV0IHRvX2pzIHggPSB4XG4gIGxldCBvZl9qcyB4ID0geFxuZW5kXG5cbm1vZHVsZSBJbnRUciA6IChUcl9zaWcgd2l0aCB0eXBlIGpzID0gaW50IGFuZCB0eXBlIHQgPSBpbnQpID0gTm9UcihzdHJ1Y3QgdHlwZSB0ID0gaW50IGVuZClcblxubW9kdWxlIFN0cmluZ1RyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGpzX3N0cmluZyB0IGFuZCB0eXBlIHQgPSBzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IGpzX3N0cmluZyB0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdG9fanMgeCA9IHN0cmluZyB4XG4gIGxldCBvZl9qcyB4ID0gdG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgTnVtYmVyVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0gbnVtYmVyIHQgYW5kIHR5cGUgdCA9IGZsb2F0ID0gc3RydWN0XG4gIHR5cGUganMgPSBudW1iZXIgdFxuICB0eXBlIHQgPSBmbG9hdFxuICBsZXQgdG9fanMgeCA9IG51bWJlcl9vZl9mbG9hdCB4XG4gIGxldCBvZl9qcyB4ID0gZmxvYXRfb2ZfbnVtYmVyIHhcbmVuZFxuXG5tb2R1bGUgRGF0ZVRyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGRhdGUgdCBhbmQgdHlwZSB0ID0gc3RyaW5nID0gc3RydWN0XG4gIHR5cGUganMgPSBkYXRlIHRcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0b19qcyB4ID0gbmV3JWpzIGRhdGVfZnJvbVRpbWVWYWx1ZSAoZGF0ZSMjcGFyc2UgKHN0cmluZyB4KSlcbiAgbGV0IG9mX2pzIHggPSB0b19zdHJpbmcgeCMjdG9Mb2NhbGVTdHJpbmdcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPSBTdGRsaWIuaW5fY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19pblxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZGluID0gU3RkbGliLnN0ZGluXG5cbmxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSBmaWxlID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3Jkb25seSBdIGluXG4gIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgU3RkbGliLm9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcbjs7XG5cbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGUgfmYgPSBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5IGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG5cbmxldCBtYXlfZW9mIGYgPVxuICB0cnkgU29tZSAoZiAoKSkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IE5vbmVcbjs7XG5cbmxldCBpbnB1dCB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLmlucHV0IHQgYnVmIHBvcyBsZW5cbmxldCByZWFsbHlfaW5wdXQgdCB+YnVmIH5wb3MgfmxlbiA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIucmVhbGx5X2lucHV0IHQgYnVmIHBvcyBsZW4pXG5sZXQgcmVhbGx5X2lucHV0X2V4biB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgaW5wdXRfYnl0ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9ieXRlIHQpXG5sZXQgaW5wdXRfY2hhciB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9jaGFyIHQpXG5sZXQgaW5wdXRfYmluYXJ5X2ludCB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9iaW5hcnlfaW50IHQpXG5sZXQgdW5zYWZlX2lucHV0X3ZhbHVlIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X3ZhbHVlIHQpXG5sZXQgaW5wdXRfYnVmZmVyIHQgYnVmIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWYgdCBsZW4pXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9pblxuXG5sZXQgaW5wdXRfYWxsIHQgPVxuICAoKiBXZSB1c2UgNjU1MzYgYmVjYXVzZSB0aGF0IGlzIHRoZSBzaXplIG9mIE9DYW1sJ3MgSU8gYnVmZmVycy4gKilcbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpblxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBjaHVua19zaXplIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgU3RkbGliLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWZmZXIgdCBjaHVua19zaXplO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgdHJ5IGxvb3AgKCkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBidWZmZXJcbjs7XG5cbmxldCB0cmltIH5maXhfd2luX2VvbCBsaW5lID1cbiAgaWYgZml4X3dpbl9lb2xcbiAgdGhlbiAoXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggbGluZSBpblxuICAgIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAoU3RyaW5nLmdldCBsaW5lIChsZW4gLSAxKSkgJ1xccidcbiAgICB0aGVuIFN0cmluZy5zdWIgbGluZSB+cG9zOjAgfmxlbjoobGVuIC0gMSlcbiAgICBlbHNlIGxpbmUpXG4gIGVsc2UgbGluZVxuOztcblxubGV0IGlucHV0X2xpbmUgPyhmaXhfd2luX2VvbCA9IHRydWUpIHQgPVxuICBtYXRjaCBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X2xpbmUgdCkgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgbGluZSAtPiBTb21lICh0cmltIH5maXhfd2luX2VvbCBsaW5lKVxuOztcblxubGV0IGlucHV0X2xpbmVfZXhuID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbGV0IGxpbmUgPSBTdGRsaWIuaW5wdXRfbGluZSB0IGluXG4gIHRyaW0gfmZpeF93aW5fZW9sIGxpbmVcbjs7XG5cbmxldCBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIGFjID1cbiAgICBtYXRjaCBpbnB1dF9saW5lID9maXhfd2luX2VvbCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNcbiAgICB8IFNvbWUgbGluZSAtPiBsb29wIChmIGFjIGxpbmUpXG4gIGluXG4gIGxvb3AgaW5pdFxuOztcblxubGV0IGlucHV0X2xpbmVzID9maXhfd2luX2VvbCB0ID1cbiAgTGlzdC5yZXYgKGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQ6W10gfmY6KGZ1biBsaW5lcyBsaW5lIC0+IGxpbmUgOjogbGluZXMpKVxuOztcblxubGV0IGl0ZXJfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmYgPVxuICBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OigpIH5mOihmdW4gKCkgbGluZSAtPiBmIGxpbmUpXG47O1xuXG5sZXQgcmVhZF9saW5lcyA/Zml4X3dpbl9lb2wgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6KGlucHV0X2xpbmVzID9maXhfd2luX2VvbClcbmxldCByZWFkX2FsbCBmbmFtZSA9IHdpdGhfZmlsZSBmbmFtZSB+ZjppbnB1dF9hbGxcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gU3RkbGliLm91dF9jaGFubmVsXG5cbmxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgc3Rkb3V0ID0gU3RkbGliLnN0ZG91dFxubGV0IHN0ZGVyciA9IFN0ZGxpYi5zdGRlcnJcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgaWYgcGh5c19lcXVhbCB0IHN0ZGVyclxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRlcnI+XCJcbiAgZWxzZSBpZiBwaHlzX2VxdWFsIHQgc3Rkb3V0XG4gIHRoZW4gU2V4cC5BdG9tIFwiPHN0ZG91dD5cIlxuICBlbHNlIFNleHAuQXRvbSBcIjxPdXRfY2hhbm5lbC50PlwiXG47O1xuXG50eXBlICdhIHdpdGhfY3JlYXRlX2FyZ3MgPVxuICA/YmluYXJ5OmJvb2wgLT4gP2FwcGVuZDpib29sIC0+ID9mYWlsX2lmX2V4aXN0czpib29sIC0+ID9wZXJtOmludCAtPiAnYVxuXG5sZXQgY3JlYXRlXG4gICAgICA/KGJpbmFyeSA9IHRydWUpXG4gICAgICA/KGFwcGVuZCA9IGZhbHNlKVxuICAgICAgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpXG4gICAgICBmaWxlXG4gID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICBTdGRsaWIub3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0gZmlsZVxuOztcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfb3V0XG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub19lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgb3V0cHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBTdGRsaWIub3V0cHV0IHQgYnVmIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIHQgfmJ1ZiB+cG9zIH5sZW4gPSBTdGRsaWIub3V0cHV0X3N1YnN0cmluZyB0IGJ1ZiBwb3MgbGVuXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dF9jaGFyID0gU3RkbGliLm91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X2J5dGUgPSBTdGRsaWIub3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IFN0ZGxpYi5vdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF9idWZmZXIgPSBTdGRsaWIuQnVmZmVyLm91dHB1dF9idWZmZXJcbmxldCBvdXRwdXRfdmFsdWUgPSBTdGRsaWIub3V0cHV0X3ZhbHVlXG5sZXQgbmV3bGluZSB0ID0gb3V0cHV0X3N0cmluZyB0IFwiXFxuXCJcblxubGV0IG91dHB1dF9saW5lcyB0IGxpbmVzID1cbiAgTGlzdC5pdGVyIGxpbmVzIH5mOihmdW4gbGluZSAtPlxuICAgIG91dHB1dF9zdHJpbmcgdCBsaW5lO1xuICAgIG5ld2xpbmUgdClcbjs7XG5cbmxldCBwcmludGYgPSBTdGRsaWIuUHJpbnRmLnByaW50ZlxubGV0IGVwcmludGYgPSBTdGRsaWIuUHJpbnRmLmVwcmludGZcbmxldCBmcHJpbnRmID0gU3RkbGliLlByaW50Zi5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBTdGRsaWIuUHJpbnRmLmtmcHJpbnRmXG5sZXQgcHJpbnRfc3RyaW5nID0gU3RkbGliLnByaW50X3N0cmluZ1xubGV0IHByaW50X2VuZGxpbmUgPSBTdGRsaWIucHJpbnRfZW5kbGluZVxubGV0IHByZXJyX2VuZGxpbmUgPSBTdGRsaWIucHJlcnJfZW5kbGluZVxuXG5sZXQgcHJpbnRfcyA/bWFjaCBzZXhwID1cbiAgcHJpbnRfZW5kbGluZVxuICAgIChtYXRjaCBtYWNoIHdpdGhcbiAgICAgfCBTb21lICgpIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cFxuICAgICB8IE5vbmUgLT4gU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG47O1xuXG5sZXQgZXByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByZXJyX2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG47O1xuXG5sZXQgd3JpdGVfbGluZXMgZmlsZSBsaW5lcyA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfbGluZXMgdCBsaW5lcylcbmxldCB3cml0ZV9hbGwgZmlsZSB+ZGF0YSA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbiIsIm1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG5tb2R1bGUgQ29udl9lcnJvciA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvclxubW9kdWxlIFNleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiBCYXNlXG5cbnR5cGUgJ2EgdGVzdF9wcmVkXG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ICgnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9lcVxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiA/ZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gIC0+ICdhXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxudHlwZSAnYSB0ZXN0X3Jlc3VsdFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiA/ZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gIC0+IGV4cGVjdDonYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbmV4Y2VwdGlvbiBFIG9mIHN0cmluZyAqIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnIGJvZHkgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgbWF0Y2ggbWVzc2FnZSB3aXRoXG4gICAgfCBOb25lIC0+IHRhZ1xuICAgIHwgU29tZSBzIC0+IHMgXiBcIjogXCIgXiB0YWdcbiAgaW5cbiAgbGV0IHNleHAgPVxuICAgIFNleHAuTGlzdCAoXG4gICAgICBib2R5XG4gICAgICBAIFsgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiTG9jXCI7IFNleHAuQXRvbSBwb3MgXSBdXG4gICAgICBAIGJlZ2luIG1hdGNoIGhlcmUgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgXyAtPiBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIlN0YWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgWyVzZXhwX29mOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IGxpc3RdIGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gXVxuICAgICAgZW5kXG4gICAgKVxuICBpblxuICAoKiBIZXJlIGFuZCBpbiBvdGhlciBwbGFjZXMgd2UgcmV0dXJuIGV4Y2VwdGlvbnMsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHJhaXNpbmcsIGFuZFxuICAgICBpbnN0ZWFkIHJhaXNlIGF0IHRoZSBsYXRlc3QgbW9tZW50IHBvc3NpYmxlLCBzbyBiYWNrdHJhY2UgZG9uJ3QgaW5jbHVkZSBub2lzZSBmcm9tXG4gICAgIHRoZXNlIGZ1bmN0aW9ucyB0aGF0IGNvbnN0cnVjdCBleGNlcHRpb25zLiAqKVxuICBFIChtZXNzYWdlLCBzZXhwKVxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9wcmVkIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnNleHBpZmllciB0ID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwicHJlZGljYXRlIGZhaWxlZFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcIlZhbHVlXCI7IHNleHBpZmllciB0XVxuICBdXG5cbmxldCB0ZXN0X3ByZWQgfnBvcyB+c2V4cGlmaWVyIH5oZXJlID9tZXNzYWdlIHByZWRpY2F0ZSB0ID1cbiAgaWYgbm90IChwcmVkaWNhdGUgdCkgdGhlblxuICAgIHJhaXNlIChleG5fdGVzdF9wcmVkIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnNleHBpZmllciB0KVxuXG5sZXQgcl9kaWZmIDogKGZyb21fOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHVuaXQpIG9wdGlvbiByZWYgPSByZWYgICBOb25lXG5sZXQgc2V0X2RpZmZfZnVuY3Rpb24gZiA9IHJfZGlmZiA6PSBmXG5cbmxldCBbQGNvbGRdIHRlc3RfcmVzdWx0X29yX2VxX2ZhaWxlZCB+c2V4cGlmaWVyIH5leHBlY3QgfmdvdCA9XG4gIGxldCBnb3QgPSBzZXhwaWZpZXIgZ290IGluXG4gIGxldCBleHBlY3QgPSBzZXhwaWZpZXIgZXhwZWN0IGluXG4gIGJlZ2luIG1hdGNoICFyX2RpZmYgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRpZmYgLT5cbiAgICBsZXQgZnJvbV8gPSBTZXhwLnRvX3N0cmluZ19odW0gZXhwZWN0IGluXG4gICAgbGV0IHRvXyAgID0gU2V4cC50b19zdHJpbmdfaHVtIGdvdCBpblxuICAgIGRpZmYgfmZyb21fIH50b19cbiAgZW5kO1xuICBgRmFpbCAoZXhwZWN0LCBnb3QpXG5cbmxldCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgcGFzcyA9XG4gICAgbWF0Y2ggZXF1YWwgd2l0aFxuICAgIHwgTm9uZSAtPiBjb21wYXJhdG9yIGdvdCBleHBlY3QgPSAwXG4gICAgfCBTb21lIGYgLT4gZiBnb3QgZXhwZWN0XG4gIGluXG4gIGlmIHBhc3NcbiAgdGhlbiBgUGFzc1xuICBlbHNlIHRlc3RfcmVzdWx0X29yX2VxX2ZhaWxlZCB+c2V4cGlmaWVyIH5leHBlY3QgfmdvdFxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJjb21wYXJpc29uIGZhaWxlZFwiIFtcbiAgICB0MTtcbiAgICBTZXhwLkF0b20gXCJ2c1wiO1xuICAgIHQyO1xuICBdXG5cbmxldCB0ZXN0X2VxIH5wb3MgfnNleHBpZmllciB+Y29tcGFyYXRvciB+aGVyZSA/bWVzc2FnZSA/ZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0OnQxIH5nb3Q6dDIgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKHQxLCB0MikgLT4gcmFpc2UgKGV4bl90ZXN0X2VxIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnQxIH50MilcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290ID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiZ290IHVuZXhwZWN0ZWQgcmVzdWx0XCIgW1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiZXhwZWN0ZWRcIjsgZXhwZWN0XTtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImdvdFwiOyBnb3RdO1xuICBdXG5cbmxldFtAd2FybmluZyBcIi0xNlwiXSB0ZXN0X3Jlc3VsdCB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIH5leHBlY3QgfmdvdCA9XG4gIG1hdGNoIHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3QgfmdvdCB3aXRoXG4gIHwgYFBhc3MgLT4gKClcbiAgfCBgRmFpbCAoZXhwZWN0LCBnb3QpIC0+IHJhaXNlIChleG5fdGVzdF9yZXN1bHQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+ZXhwZWN0IH5nb3QpXG4iLCJsZXQgdW5pcXVlX2lkID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG5cbigqIFVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQgbGlibmFtZSBpbiBzdWNoIGEgd2F5IHRoYXQgZm9yIGZ1bmN0b3IgYXBwbGljYXRpb25zLCBpdCBpc1xuICAgdGhlIGNhbGxpbmcgbGlicmFyaWVzIG5hbWUgdGhhdCBnZXRzIHJlZ2lzdGVyZWQuICopXG5tb2R1bGUgQ3VycmVudF9saWJuYW1lID0gc3RydWN0XG4gIGxldCBudWxsID0gXCI8dW5rbm93bj5cIlxuICBsZXQgbGlibmFtZV9yZWYgPSByZWYgbnVsbFxuICBsZXQgc2V0IHN0ciA9IGxpYm5hbWVfcmVmIDo9IHN0clxuICBsZXQgdW5zZXQgKCkgPSBsaWJuYW1lX3JlZiA6PSBudWxsXG4gIGxldCBnZXQgKCkgPSAhbGlibmFtZV9yZWZcbmVuZFxuXG5tb2R1bGUgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sgPSBzdHJ1Y3RcbiAgbGV0IHQgPSByZWYgW11cbiAgbGV0IHB1c2ggcyA9IHQgOj0gcyA6OiAhdFxuICBsZXQgcG9wX2V4biAoKSA9IHQgOj0gTGlzdC50bCAhdFxuXG4gIGxldCB0b19uYW1lICgpID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBtcyAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLlwiIChMaXN0LnJldiBtcykpXG4gIDs7XG5lbmRcblxuKCogVGhpcyBpcyB0aGUgbWFpbiBkYXRhIHN0cnVjdHVyZSBvZiB0aGlzIG1vZHVsZS4gQW4gW0VudHJ5LnRdIHJlcHJlc2VudHMgYSBiZW5jaG1hcmtcbiAgIGFsb25nIHdpdGggc29tZSBtZXRhZGF0YSBhYm91dCBpcyBwb3NpdGlvbiwgYXJndW1lbnRzIGV0Yy4gKilcbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICB0eXBlICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgPVxuICAgIHsgYXJnX25hbWUgOiBzdHJpbmdcbiAgICA7IHBhcmFtcyA6IChzdHJpbmcgKiAncGFyYW0pIGxpc3RcbiAgICA7IHRodW5rIDogJ3BhcmFtIC0+IHVuaXQgLT4gJ2FcbiAgICB9XG5cbiAgdHlwZSB0ZXN0X3NwZWMgPVxuICAgIHwgUmVndWxhcl90aHVuayA6IChbIGBpbml0IF0gLT4gdW5pdCAtPiAnYSkgLT4gdGVzdF9zcGVjXG4gICAgfCBQYXJhbWV0ZXJpc2VkX3RodW5rIDogKCdwYXJhbSwgJ2EpIHBhcmFtZXRlcmlzZWRfc3BlYyAtPiB0ZXN0X3NwZWNcblxuICB0eXBlIHQgPVxuICAgIHsgdW5pcXVlX2lkIDogaW50XG4gICAgOyBjb2RlIDogc3RyaW5nXG4gICAgOyB0eXBlX2NvbnZfcGF0aCA6IHN0cmluZ1xuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgICA7IGxpbmUgOiBpbnRcbiAgICA7IHN0YXJ0cG9zIDogaW50XG4gICAgOyBlbmRwb3MgOiBpbnRcbiAgICA7IHRlc3Rfc3BlYyA6IHRlc3Rfc3BlY1xuICAgIDsgYmVuY2hfbW9kdWxlX25hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZSB0MS51bmlxdWVfaWQgdDIudW5pcXVlX2lkXG5cbiAgKCogRXh0cmFjdHMgbW9kdWxlIG5hbWUgZnJvbSBbXCJmaWxlbmFtZS5tbC5Nb2R1bGVcIl0sIHdoaWNoIGlzIHRoZSBmb3JtYXQgb2YgW2V4dF9uYW1lXVxuICAgICBhcyBzZXQgYnkgW3R5cGVjb252XS4gKilcbiAgbGV0IGdldF9tb2R1bGVfbmFtZV9vcHQgdCA9XG4gICAgbGV0IHN0ciA9IHQudHlwZV9jb252X3BhdGggaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpICsgNCA8PSBsZW5cbiAgICAgIHRoZW5cbiAgICAgICAgaWYgU3RyaW5nLnN1YiBzdHIgaSA0ID0gXCIubWwuXCJcbiAgICAgICAgdGhlbiBTb21lIChTdHJpbmcuc3ViIHN0ciAoaSArIDQpIChsZW4gLSBpIC0gNCkpXG4gICAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCB3aXRoX3Rlc3Rfc3BlYyB0IHRlc3Rfc3BlYyA9IHsgdCB3aXRoIHRlc3Rfc3BlYyB9XG5lbmRcblxuKCogSW5zcGVjdCBzeXN0ZW0gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGRlY2lkZSBpZiBiZW5jaG1hcmtzIGFyZSBiZWluZyBydW4uIFRoaXMgaXNcbiAgIGNhbGxlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIFtwYV9iZW5jaF0gc3ludGF4IHRvIGRlY2lkZSBpZiB0aGUgZ2xvYmFsIGhhc2h0YWJsZVxuICAgc2hvdWxkIGJlIHBvcHVsYXRlZC4gKilcbmxldCBhZGRfZW52aXJvbm1lbnRfdmFyID1cbiAgbGV0IHYgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQkVOQ0hNQVJLU19SVU5ORVJcIiB3aXRoXG4gICAgfCBOb3RfZm91bmQgLT4gXCJcIlxuICBpblxuICB2ID0gXCJUUlVFXCJcbjs7XG5cbigqIFRoaXMgaGFzaHRhYmxlIGNvbnRhaW5zIGFsbCB0aGUgYmVuY2htYXJrcyBmcm9tIGFsbCB0aGUgb2YgbGlicmFyaWVzIHRoYXQgaGF2ZSBiZWVuXG4gICBsb2FkZWQuIEF0IHRoZSB0aW1lIHRoZSBiZW5jaG1hcmtzIGFyZSByZWdpc3RlcmluZyB0aGVtc2VsdmVzIHdpdGggW3BweF9iZW5jaF9saWJdIHdlXG4gICBkb24ndCB5ZXQga25vdyB3aGljaCBsaWJyYXJpZXMgd2lsbCBuZWVkIHRvIGJlIHJ1bi4gICopXG5sZXQgbGlic190b19lbnRyaWVzIDogKHN0cmluZywgRW50cnkudCBsaXN0KSBIYXNodGJsLnQgPSBIYXNodGJsLmNyZWF0ZSAxMFxuXG5sZXQgbG9va3VwX3Jldl9saWIgfmxpYm5hbWUgPVxuICB0cnkgSGFzaHRibC5maW5kIGxpYnNfdG9fZW50cmllcyBsaWJuYW1lIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gW11cbjs7XG5cbmxldCBsb29rdXBfbGliIH5saWJuYW1lID0gTGlzdC5yZXYgKGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuXG5sZXQgZm9yY2VfZHJvcCA9XG4gICgqIFVzZWZ1bCBmb3IganNfb2Zfb2NhbWwgdG8gcGVyZm9ybSBkZWFkY29kZSBlbGltaW5hdGlvbi5cbiAgICAgc2VlIHBweC9wcHhfaW5saW5lX3Rlc3QvcnVudGltZS1saWIvcnVudGltZS5tbCBbQWN0aW9uLmdldF0gZm9yIG1vcmUgZGV0YWlscyAqKVxuICB0cnlcbiAgICBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0JFTkNIXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICB8IE5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxubGV0IGdldF9tb2RlICgpID0gaWYgZm9yY2VfZHJvcCB0aGVuIGBJZ25vcmUgZWxzZSBgQ29sbGVjdFxuXG5sZXRbQGlubGluZSBuZXZlcl0gYWRkX2JlbmNoXG4gICAgICAgICAgICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmNvZGVcbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfnR5cGVfY29udl9wYXRoXG4gICAgICAgICAgICAgICAgICAgICB+bGluZVxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0cG9zXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zXG4gICAgICAgICAgICAgICAgICAgICB0ZXN0X3NwZWNcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgbGV0IGxpYm5hbWUgPSBDdXJyZW50X2xpYm5hbWUuZ2V0ICgpIGluXG4gICAgbGV0IGVudHJ5ID1cbiAgICAgIHsgRW50cnkuY29kZVxuICAgICAgOyB1bmlxdWVfaWQgPSB1bmlxdWVfaWQgKClcbiAgICAgIDsgdHlwZV9jb252X3BhdGhcbiAgICAgIDsgYmVuY2hfbW9kdWxlX25hbWUgPSBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay50b19uYW1lICgpXG4gICAgICA7IG5hbWVcbiAgICAgIDsgZmlsZW5hbWVcbiAgICAgIDsgbGluZVxuICAgICAgOyBzdGFydHBvc1xuICAgICAgOyBlbmRwb3NcbiAgICAgIDsgdGVzdF9zcGVjXG4gICAgICB9XG4gICAgaW5cbiAgICBIYXNodGJsLmFkZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSAoZW50cnkgOjogbG9va3VwX3Jldl9saWIgfmxpYm5hbWUpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gYWRkX2JlbmNoX21vZHVsZVxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlOl9cbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aDpfXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6X1xuICAgICAgICAgICAgICAgICAgICAgfmxpbmU6X1xuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0cG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIH5lbmRwb3M6X1xuICAgICAgICAgICAgICAgICAgICAgZlxuICA9XG4gIG1hdGNoIGdldF9tb2RlICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYENvbGxlY3QgLT5cbiAgICAoKiBSdW5uaW5nIGYgcmVnaXN0ZXJzIHRoZSBiZW5jaG1hcmtzIHVzaW5nIEJFTkNIICopXG4gICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucHVzaCBuYW1lO1xuICAgICh0cnlcbiAgICAgICBmICgpO1xuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKClcbiAgICAgd2l0aFxuICAgICB8IGV4IC0+XG4gICAgICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucG9wX2V4biAoKTtcbiAgICAgICByYWlzZSBleClcbjs7XG4iLCJ0eXBlIHQgPSBzdHJpbmdcblxuKCogU2hhcmUgdGhlIGRpZ2VzdCBvZiB0aGUgZW1wdHkgc3RyaW5nICopXG5sZXQgZW1wdHkgPSBEaWdlc3Quc3RyaW5nIFwiXCJcbmxldCBtYWtlIHMgPVxuICBpZiBzID0gZW1wdHkgdGhlblxuICAgIGVtcHR5XG4gIGVsc2VcbiAgICBzXG5cbmxldCBjb21wYXJlID0gY29tcGFyZVxuXG5sZXQgbGVuZ3RoID0gMTZcblxubGV0IHRvX2JpbmFyeSBzID0gc1xubGV0IG9mX2JpbmFyeV9leG4gcyA9IGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzID0gbGVuZ3RoKTsgbWFrZSBzXG5sZXQgdW5zYWZlX29mX2JpbmFyeSA9IG1ha2VcblxubGV0IHRvX2hleCA9IERpZ2VzdC50b19oZXhcbmxldCBvZl9oZXhfZXhuIHMgPSBtYWtlIChEaWdlc3QuZnJvbV9oZXggcylcblxubGV0IHN0cmluZyBzID0gbWFrZSAoRGlnZXN0LnN0cmluZyBzKVxuXG5sZXQgYnl0ZXMgcyA9IG1ha2UgKERpZ2VzdC5ieXRlcyBzKVxuXG5sZXQgc3ViYnl0ZXMgYnl0ZXMgfnBvcyB+bGVuID0gbWFrZSAoRGlnZXN0LnN1YmJ5dGVzIGJ5dGVzIHBvcyBsZW4pXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBMb2NhdGlvbiA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgVXVpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5sZXQgZXZhbF9mYWlsIGxvYyBmbXQgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBzIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiAhXCIle0xvY2F0aW9ufTogJXNcIiBsb2MgcykpIGZtdFxuOztcblxubGV0IGVxdWFsX29wdGlvbiBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBTb21lIF8sIE5vbmUgfCBOb25lLCBTb21lIF8gLT4gZmFsc2VcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbjs7XG5cbm1vZHVsZSBTb3J0ZWRfdGFibGUgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIGNyZWF0ZSA6IExvY2F0aW9uLnQgLT4gZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+IChzdHJpbmcgKiAnYSkgbGlzdCAtPiAnYSB0XG4gIHZhbCBleHBvc2UgOiAnYSB0IC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHsgc29ydGVkIDogKHN0cmluZyAqICdhKSBsaXN0IH0gW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgbWVyZ2VfY2hlY2tfYWRqYWNlbnRfZHVwc1xuICAgIDogIGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICAgIC0+IFsgYE9rIG9mIChzdHJpbmcgKiAnYSkgbGlzdCB8IGBNaXNtYXRjaCBvZiBzdHJpbmcgXVxuICAgID1cbiAgICBmdW4gfmVxIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjYyB+bGFzdF9rZXkgfmxhc3RfdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBgT2sgKExpc3QucmV2IGFjYylcbiAgICAgIHwgKGtleSwgdmFsdWUpIDo6IHhzIC0+XG4gICAgICAgIGlmIFN0cmluZy4obGFzdF9rZXkgPSBrZXkpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiBlcSBsYXN0X3ZhbHVlIHZhbHVlIHRoZW4gbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlIHhzIGVsc2UgYE1pc21hdGNoIGtleVxuICAgICAgICBlbHNlIGxvb3AgKChrZXksIHZhbHVlKSA6OiBhY2MpIH5sYXN0X2tleTprZXkgfmxhc3RfdmFsdWU6dmFsdWUgeHNcbiAgICBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBgT2sgW11cbiAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPiBsb29wIFsga2V5LCB2YWx1ZSBdIH5sYXN0X2tleTprZXkgfmxhc3RfdmFsdWU6dmFsdWUgeHNcbiAgOztcblxuICBsZXQgY3JlYXRlIGxvYyB+ZXEgeHMgPVxuICAgIGxldCBzb3J0ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biAoczEsIF8pIChzMiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgczEgczIpIHhzIGluXG4gICAgbWF0Y2ggbWVyZ2VfY2hlY2tfYWRqYWNlbnRfZHVwcyB+ZXEgc29ydGVkIHdpdGhcbiAgICB8IGBPayBzb3J0ZWQgLT4geyBzb3J0ZWQgfVxuICAgIHwgYE1pc21hdGNoIHMgLT5cbiAgICAgIGV2YWxfZmFpbCBsb2MgXCJEaWZmZXJlbnQgc2hhcGVzIGZvciBkdXBsaWNhdGVkIHBvbHltb3JwaGljIGNvbnN0cnVjdG9yOiBgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IGV4cG9zZSB0ID0gdC5zb3J0ZWRcbiAgbGV0IG1hcCB0IH5mID0geyBzb3J0ZWQgPSBMaXN0Lm1hcCB0LnNvcnRlZCB+ZjooZnVuIChrLCB2KSAtPiBrLCBmIHYpIH1cbmVuZFxuXG5tb2R1bGUgRGlnZXN0IDogc2lnXG4gIHR5cGUgdCA9IE1kNV9saWIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCB0b19tZDUgOiB0IC0+IE1kNV9saWIudFxuICB2YWwgb2ZfbWQ1IDogTWQ1X2xpYi50IC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBjb25zdHJ1Y3RvciA6IHN0cmluZyAtPiB0IGxpc3QgLT4gdFxuICB2YWwgbGlzdCA6IHQgbGlzdCAtPiB0XG4gIHZhbCBwYWlyIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN0cmluZyA6IHN0cmluZyAtPiB0XG4gIHZhbCB1dWlkIDogVXVpZC50IC0+IHRcbiAgdmFsIGludCA6IGludCAtPiB0XG4gIHZhbCBvcHRpb24gOiB0IG9wdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZDVfbGliXG5cbiAgbGV0IHRvX21kNSB0ID0gdFxuICBsZXQgb2ZfbWQ1IHQgPSB0XG4gIGxldCBzZXhwX29mX3QgdCA9IHQgfD4gdG9faGV4IHw+IHNleHBfb2Zfc3RyaW5nXG4gIGxldCB0X29mX3NleHAgcyA9IHMgfD4gc3RyaW5nX29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdXVpZCB1ID0gc3RyaW5nIChVdWlkLnRvX3N0cmluZyB1KVxuICBsZXQgaW50IHggPSBzdHJpbmcgKEludC50b19zdHJpbmcgeClcbiAgbGV0IHBhaXIgeCB5ID0gc3RyaW5nICh0b19iaW5hcnkgeCBeIHRvX2JpbmFyeSB5KVxuICBsZXQgbGlzdCBsID0gc3RyaW5nIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiAoTGlzdC5tYXAgfmY6dG9fYmluYXJ5IGwpKVxuICBsZXQgY29uc3RydWN0b3IgcyBsID0gc3RyaW5nIChzIF4gdG9fYmluYXJ5IChsaXN0IGwpKVxuXG4gIGxldCBvcHRpb24gPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBjb25zdHJ1Y3RvciBcIm5vbmVcIiBbXVxuICAgIHwgU29tZSB4IC0+IGNvbnN0cnVjdG9yIFwic29tZVwiIFsgeCBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IgPSBzdHJ1Y3RcbiAgKCogWydhIHRdIGlzIGEgbm9uLXJlY3Vyc2l2ZSB0eXBlLCB1c2VkIHRvIHJlcHJlc2VudCAxLWxheWVyIG9mIGV4cHJlc3Npb24uICBUaGVcbiAgICAgcmVjdXJzaXZlIGtub3QgaXMgdGllZCBiZWxvdyBpbiBbQ2Fub25pY2FsX2Z1bGwuRXhwLnRdLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogJ2FcbiAgICB8IEJhc2Ugb2YgVXVpZC50ICogJ2EgbGlzdFxuICAgIHwgVHVwbGUgb2YgJ2EgbGlzdFxuICAgIHwgUmVjb3JkIG9mIChzdHJpbmcgKiAnYSkgbGlzdFxuICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogJ2EgbGlzdCkgbGlzdFxuICAgICgqIFBvbHltb3JwaGljIHZhcmlhbnRzIGFyZSBpbnNlbnNpdGl2ZSB0byB0aGUgb3JkZXIgdGhlIGNvbnN0cnVjdG9ycyBhcmUgbGlzdGVkICopXG4gICAgfCBQb2x5X3ZhcmlhbnQgb2YgJ2Egb3B0aW9uIFNvcnRlZF90YWJsZS50XG4gICAgKCogTGVmdC1oYW5kLXNpZGUgb2YgW0FwcGxpY2F0aW9uXSBpcyBhIHBvdGVudGlhbGx5IHJlY3Vyc2l2ZSBkZWZpbml0aW9uOiBpdFxuICAgICAgIGNhbiByZWZlciB0byBpdHNlbGYgdXNpbmcgW1JlY19hcHAgKGksIF8pXSB3aGVyZSBbaV0gaXMgdGhlIGRlcHRoIG9mIHRoaXNcbiAgICAgICBhcHBsaWNhdGlvbiBub2RlIChob3cgbWFueSBhcHBsaWNhdGlvbiBub2RlcyBhcmUgYWJvdmUgaXQpLlxuICAgICAgIEl0IGFsc28gaGFzIGl0cyBvd24gc2NvcGUgb2YgdHlwZSB2YXJpYWJsZXMgc28gaXQgY2FuIG5vdCByZWZlciB0byB0eXBlIHZhcmlhYmxlc1xuICAgICAgIG9mIHRoZSBlbmNsb3Npbmcgc2NvcGUuXG4gICAgKilcbiAgICB8IEFwcGxpY2F0aW9uIG9mICdhICogJ2EgbGlzdFxuICAgIHwgUmVjX2FwcCBvZiBpbnQgKiAnYSBsaXN0XG4gICAgfCBWYXIgb2YgaW50XG4gIFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG5cbiAgbGV0IG1hcCB4IH5mID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEFubm90YXRlICh1LCB4KSAtPiBBbm5vdGF0ZSAodSwgZiB4KVxuICAgIHwgQmFzZSAocywgeHMpIC0+IEJhc2UgKHMsIExpc3QubWFwIH5mIHhzKVxuICAgIHwgVHVwbGUgeHMgLT4gVHVwbGUgKExpc3QubWFwIH5mIHhzKVxuICAgIHwgUmVjb3JkIGwgLT4gUmVjb3JkIChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHgpIC0+IHMsIGYgeCkpXG4gICAgfCBWYXJpYW50IGwgLT4gVmFyaWFudCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4cykgLT4gcywgTGlzdC5tYXAgfmYgeHMpKVxuICAgIHwgUG9seV92YXJpYW50IHQgLT4gUG9seV92YXJpYW50IChTb3J0ZWRfdGFibGUubWFwIHQgfmY6KE9wdGlvbi5tYXAgfmYpKVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IEFwcGxpY2F0aW9uIChmIHgsIExpc3QubWFwIH5mIGwpXG4gICAgfCBSZWNfYXBwICh0LCBsKSAtPiBSZWNfYXBwICh0LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgVmFyIHYgLT4gVmFyIHZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IChmdW4gXyAtPiBBdG9tIFwiLi4uXCIpIHQpXG5lbmRcblxubW9kdWxlIENyZWF0ZV9kaWdlc3QgOiBzaWdcbiAgKCogRGlnZXN0IHZhcmlvdXMgZXhwcmVzc2lvbiBmb3JtcyAqKVxuXG4gIHZhbCBkaWdlc3RfbGF5ZXIgOiBEaWdlc3QudCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnQgLT4gRGlnZXN0LnRcbmVuZCA9IHN0cnVjdFxuICBsZXQgZGlnZXN0X2xheWVyID0gZnVuY3Rpb25cbiAgICB8IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuQW5ub3RhdGUgKHUsIHgpIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3IgXCJhbm5vdGF0ZVwiIFsgRGlnZXN0LnV1aWQgdTsgeCBdXG4gICAgfCBCYXNlICh1LCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJiYXNlXCIgWyBEaWdlc3QudXVpZCB1OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFR1cGxlIGwgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwidHVwbGVcIiBbIERpZ2VzdC5saXN0IGwgXVxuICAgIHwgUmVjb3JkIGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInJlY29yZFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3QgKExpc3QubWFwIGwgfmY6KGZ1biAocywgdCkgLT4gRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgcykgdCkpIF1cbiAgICB8IFZhcmlhbnQgbCAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwidmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIGwpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIChEaWdlc3QubGlzdCBsKSkpXG4gICAgICAgIF1cbiAgICB8IFBvbHlfdmFyaWFudCB0YWJsZSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwicG9seV92YXJpYW50XCJcbiAgICAgICAgWyBEaWdlc3QubGlzdFxuICAgICAgICAgICAgKExpc3QubWFwIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYmxlKSB+ZjooZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgeCkgKERpZ2VzdC5vcHRpb24geSkpKVxuICAgICAgICBdXG4gICAgfCBBcHBsaWNhdGlvbiAoeCwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYXBwbGljYXRpb25cIiBbIHg7IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgUmVjX2FwcCAobiwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwicmVjX2FwcFwiIFsgRGlnZXN0LmludCBuOyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFZhciBuIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInZhclwiIFsgRGlnZXN0LmludCBuIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgVmlzaWJpbGl0eSA9IHN0cnVjdFxuICB0eXBlIHZpc2libGUgPSBWaXNpYmxlXG4gIHR5cGUgb3BhcXVlID0gT3BhcXVlXG5cbiAgbGV0IF8gPSBWaXNpYmxlXG4gIGxldCBfID0gT3BhcXVlXG5lbmRcblxubW9kdWxlIHR5cGUgQ2Fub25pY2FsID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19kaWdlc3QgOiB0IC0+IERpZ2VzdC50XG5cbiAgbW9kdWxlIEV4cDEgOiBzaWdcbiAgICB0eXBlIF8gdFxuXG4gICAgdmFsIHZhciA6IGludCAtPiBfIHRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIHQgbGlzdCAtPiBfIHRcbiAgICB2YWwgYXBwbHkgOiAnYSB0IC0+ICdhIHQgbGlzdCAtPiBfIHRcbiAgICB2YWwgb3BhcXVlIDogXyB0IC0+IFZpc2liaWxpdHkub3BhcXVlIHRcblxuICAgIHZhbCBnZXRfcG9seV92YXJpYW50XG4gICAgICA6ICBWaXNpYmlsaXR5LnZpc2libGUgdFxuICAgICAgLT4gKFZpc2liaWxpdHkub3BhcXVlIHQgb3B0aW9uIFNvcnRlZF90YWJsZS50LCBzdHJpbmcpIFJlc3VsdC50XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgOiBzaWdcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgOiBzaWdcbiAgICB2YWwgYW5ub3RhdGUgOiBVdWlkLnQgLT4gXyBFeHAxLnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgYmFzZXR5cGUgOiBVdWlkLnQgLT4gXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB0dXBsZSA6IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgcG9seV92YXJpYW50IDogTG9jYXRpb24udCAtPiAoc3RyaW5nICogXyBFeHAxLnQgb3B0aW9uKSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhciA6IGludCAtPiBfIEV4cDEudFxuICAgIHZhbCByZWN1cnNlIDogaW50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgYXBwbHkgOiAnYSBFeHAxLnQgLT4gJ2EgRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgZGVmaW5lIDogVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudCAtPiBEZWYudFxuICAgIHZhbCByZWNvcmQgOiAoc3RyaW5nICogXyBFeHAxLnQpIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdmFyaWFudCA6IChzdHJpbmcgKiBfIEV4cDEudCBsaXN0KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGNyZWF0ZSA6IF8gRXhwMS50IC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9kaWdlc3QgOiBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQ2Fub25pY2FsIG9mIERpZ2VzdC50XG5cbiAgbGV0IHRvX2RpZ2VzdCAoQ2Fub25pY2FsIHgpID0geFxuXG4gIG1vZHVsZSBDRCA9IENyZWF0ZV9kaWdlc3RcblxuICBtb2R1bGUgRXhwMSA9IHN0cnVjdFxuICAgIHR5cGUgb3BhcXVlID0gRGlnZXN0LnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFBvbHlfdmFyaWFudCBvZiBvcGFxdWUgb3B0aW9uIFNvcnRlZF90YWJsZS50XG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgb2YgKHN0cmluZyAqIG9wYXF1ZSlcbiAgICAgIHwgT3BhcXVlIDogb3BhcXVlIC0+IFZpc2liaWxpdHkub3BhcXVlIHRcblxuICAgIGxldCB0b19kaWdlc3QgKHR5cGUgYSkgKHggOiBhIHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPcGFxdWUgeCAtPiB4XG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgKF8sIHgpIC0+IHhcbiAgICAgIHwgUG9seV92YXJpYW50IHggLT4gQ0QuZGlnZXN0X2xheWVyIChQb2x5X3ZhcmlhbnQgeClcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsICh0eXBlIGEpICh4IDogYSB0KSAoeSA6IGEgdCkgPVxuICAgICAgRGlnZXN0LmNvbXBhcmUgKHRvX2RpZ2VzdCB4KSAodG9fZGlnZXN0IHkpID0gMFxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHggPSBPcGFxdWUgKHRvX2RpZ2VzdCB4KVxuXG4gICAgbGV0IGNyZWF0ZSB4ID1cbiAgICAgIGxldCB4ID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IHggaW5cbiAgICAgIGxldCBkZXNjID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50b19zdHJpbmcgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUG9seV92YXJpYW50IGwgLT4gUG9seV92YXJpYW50IGxcbiAgICAgIHwgQmFzZSBfIC0+IE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBBbm5vdGF0ZSBfIC0+XG4gICAgICAgICgqIEl0J3MgdW5zYWZlIHRvIHVzZSBkZXJpdmluZyBiaW5faW8gd2hlbiBpbmhlcml0aW5nIGZyb20gYSBwb2x5bW9ycGhpYyB2YXJpYW50XG4gICAgICAgICAgIHRoYXQgaGFzIGEgY3VzdG9tIGJpbl9pby4gIElmIHdlIGZvcmJpZCB0aGF0LCB3ZSBjYW4gaGFwcGlseSByZWplY3QgaGVyZVxuICAgICAgICAgICBhbnl0aGluZyB0aGF0J3MgYW5ub3RhdGVkLiAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQXBwbGljYXRpb24gXyAtPlxuICAgICAgICAoKiBBcHBsaWNhdGlvbiBjYW4gcmVhbGx5IGJlIGEgcG9seS12YXJpYW50IHlvdSBjYW4gaW5oZXJpdCBmcm9tISAgQnV0IGl0J3MgYVxuICAgICAgICAgICByYXJlIHNpdHVhdGlvbiB0aGF0IG1vc3RseSAob25seT8pIGFyaXNlcyB3aXRoIGluaGVyaXRhbmNlIGZyb20gcmVjdXJzaXZlXG4gICAgICAgICAgIHBvbHltb3JwaWMgdmFyaWFudHMsIHdoaWNoIHdlJ3ZlIG5vdCBzZWVuIGFueXdoZXJlIHlldC4gIFNvIHdlIHJlamVjdCBpdC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFJlY19hcHAgXyAtPlxuICAgICAgICAoKiBZb3UgY2FuIG9ubHkgZ2V0IHRoZSBbUmVjX2FwcF0gY29uc3RydWN0b3IgZm9yIHR5cGUtcmVmZXJlbmNlcyB3aXRoaW4gdGhlXG4gICAgICAgICAgIG11dHVhbCBncm91cCBiZWluZyBkZWZpbmVkLiBSZWZlcmVuY2VzIHdoaWNoXG4gICAgICAgICAgIGZvbGxvdyBhZnRlciB0aGUgY3VycmVudCBncm91cCB3aWxsIGFsd2F5cyBiZSBbQXBwbGljYXRpb25dcy5cblxuICAgICAgICAgICBBbmQgc2luY2Ugb2NhbWwgcmVqZWN0cyByZWZlcmVuY2VzIGluIGBpbmhlcml0YW5jZScgcG9zaXRpb24gdG8gdHlwZXMgd2l0aGluXG4gICAgICAgICAgIHRoZSBjdXJyZW50IGdyb3VwIChzZWUgZXhhbXBsZSkgd2l0aDpcblxuICAgICAgICAgICBFcnJvcjogVGhlIHR5cGUgY29uc3RydWN0b3IgdFxuICAgICAgICAgICBpcyBub3QgeWV0IGNvbXBsZXRlbHkgZGVmaW5lZFxuXG4gICAgICAgICAgIHRoZW4gaXRzIG9rIHRvIHNheSB0aGF0IGEgcmVjLWFwcCBpcyBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBpbmhlcml0ZWQgZnJvbSBhbmRcbiAgICAgICAgICAgcmV0dXJuIFtOb25fcG9seV92YXJpYW50XS5cblxuICAgICAgICAgICBBbmQgdW5saWtlIHRoZSBbQXBwbGljYXRpb25dIGNhc2UsIGl0IHNob3VsZCBuZXZlciBiZSBwb3NzaWJsZSB0byBzZWVcbiAgICAgICAgICAgYW4gZXJyb3IgbWVzc2FnZSB3aXRoIHRoZSBbZGVzY10gPSBbUmVjX2FwcF0uXG5cbiAgICAgICAgICAgRXhhbXBsZTogW3R5cGUgdCA9IFtgYSBvZiBbIHwgdF0gXV1cbiAgICAgICAgICAgSGVyZSwgW3wgdF0gd291bGQgYmUgYW4gZXhhbXBsZSBvZiBpbmhlcml0YW5jZSBmcm9tIGEgUmVjX2FwcCwgd2hpY2hcbiAgICAgICAgICAgaXMgcmVqZWN0ZWQgYnkgdGhlIGNvbXBpbGVyLlxuICAgICAgICAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgVmFyIF8gfCBUdXBsZSBfIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT5cbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgOztcblxuICAgIGxldCB2YXIgeCA9IGNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IGRlZiBsID0gY3JlYXRlIChBcHBsaWNhdGlvbiAoZGVmLCBsKSlcbiAgICBsZXQgcmVjdXJzZSB0aWQgbCA9IGNyZWF0ZSAoUmVjX2FwcCAodGlkLCBsKSlcblxuICAgIGxldCBnZXRfcG9seV92YXJpYW50ICh4IDogVmlzaWJpbGl0eS52aXNpYmxlIHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChkZXNjLCBfKSAtPiBFcnJvciBkZXNjXG4gICAgICB8IFBvbHlfdmFyaWFudCBsIC0+IE9rIChTb3J0ZWRfdGFibGUubWFwIH5mOihPcHRpb24ubWFwIH5mOihmdW4geCAtPiBPcGFxdWUgeCkpIGwpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLmNyZWF0ZSAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IGwgPSBFeHAxLmNyZWF0ZSAoQmFzZSAodSwgbCkpXG4gICAgbGV0IHR1cGxlIGwgPSBFeHAxLmNyZWF0ZSAoVHVwbGUgbClcblxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIGwgPVxuICAgICAgRXhwMS5jcmVhdGUgKFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gRXhwMS5lcXVhbCkgbCkpXG4gICAgOztcblxuICAgIGxldCB2YXIgeCA9IEV4cDEuY3JlYXRlIChWYXIgeClcbiAgICBsZXQgYXBwbHkgeCBsID0gRXhwMS5jcmVhdGUgKEFwcGxpY2F0aW9uICh4LCBsKSlcbiAgICBsZXQgcmVjdXJzZSB0IGwgPSBFeHAxLmNyZWF0ZSAoUmVjX2FwcCAodCwgbCkpXG4gICAgbGV0IGRlZmluZSB4ID0geFxuICAgIGxldCByZWNvcmQgbCA9IEV4cDEuY3JlYXRlIChSZWNvcmQgbClcbiAgICBsZXQgdmFyaWFudCBsID0gRXhwMS5jcmVhdGUgKFZhcmlhbnQgbClcbiAgICBsZXQgY3JlYXRlIGUgPSBDYW5vbmljYWwgKEV4cDEudG9fZGlnZXN0IGUpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZnVsbCA9IHN0cnVjdFxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQwID0gRXhwIG9mIHQwIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsX3QwIHggeSA9IGNvbXBhcmVfdDAgeCB5ID0gMFxuXG4gICAgdHlwZSAnYSB0ID0gdDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB2YXIgeCA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5WYXIgeClcbiAgICBsZXQgYXBwbHkgZCB4cyA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5BcHBsaWNhdGlvbiAoZCwgeHMpKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUmVjX2FwcCAociwgeHMpKVxuXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPVxuICAgICAgRXhwXG4gICAgICAgIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudFxuICAgICAgICAgICAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gZXF1YWxfdDApIHhzKSlcbiAgICA7O1xuXG4gICAgbGV0IGdldF9wb2x5X3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgKFBvbHlfdmFyaWFudCB0YWIpIC0+IE9rIHRhYlxuICAgICAgfCBFeHAgY2MgLT4gRXJyb3IgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIGNjKVxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHQgPSB0XG5cbiAgICBsZXQgcmVjIHRvX2RpZ2VzdCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4cCBlIC0+IENELmRpZ2VzdF9sYXllciAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgICgqIEEgW0RlZi50XSBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG1heSBiZSBhcHBsaWVkICopXG4gICAgdHlwZSB0ID0gRXhwMS50MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICAoKiBBIGNhbm9uaWNhbCBzaGFwZSBbdF0gaXMgYW4gW0V4cDEudF0uICopXG4gIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fZGlnZXN0IGUgPSBFeHAxLnRvX2RpZ2VzdCBlXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLkV4cCAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IHhzID0gRXhwMS5FeHAgKEJhc2UgKHUsIHhzKSlcbiAgICBsZXQgdHVwbGUgeHMgPSBFeHAxLkV4cCAoVHVwbGUgeHMpXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBFeHAxLnBvbHlfdmFyaWFudCBsb2MgeHNcbiAgICBsZXQgdmFyIG4gPSBFeHAxLkV4cCAoVmFyIG4pXG4gICAgbGV0IHJlY3Vyc2UgciB4cyA9IEV4cDEucmVjdXJzZSByIHhzXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAxLmFwcGx5IGQgeHNcbiAgICBsZXQgZGVmaW5lIHggPSB4XG4gICAgbGV0IHJlY29yZCB4cyA9IEV4cDEuRXhwIChSZWNvcmQgeHMpXG4gICAgbGV0IHZhcmlhbnQgeHMgPSBFeHAxLkV4cCAoVmFyaWFudCB4cylcbiAgICBsZXQgY3JlYXRlIGV4cCA9IGV4cFxuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nX2h1bSB0ID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgdClcbmVuZFxuXG5tb2R1bGUgVGlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBWaWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIEdpZCA6IHNpZ1xuICAoKiB1bmlxdWUgZ3JvdXAtaWQsIHVzZWQgYXMga2V5IGZvciBUZW52IGJlbG93ICopXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gIGxldCByID0gcmVmIDBcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgdSA9ICFyIGluXG4gICAgciA6PSAxICsgdTtcbiAgICB1XG4gIDs7XG5lbmRcblxubW9kdWxlIEV4cHJlc3Npb24gPSBzdHJ1Y3RcbiAgdHlwZSAndCBwb2x5X2NvbnN0ciA9XG4gICAgWyBgQ29uc3RyIG9mIHN0cmluZyAqICd0IG9wdGlvblxuICAgIHwgYEluaGVyaXQgb2YgTG9jYXRpb24udCAqICd0XG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgICB2YWwgY3JlYXRlIDogTG9jYXRpb24udCAtPiAoVGlkLnQgKiBWaWQudCBsaXN0ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBpZCA6ICdhIHQgLT4gR2lkLnRcbiAgICB2YWwgbG9va3VwIDogJ2EgdCAtPiBUaWQudCAtPiBWaWQudCBsaXN0ICogJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgZ2lkIDogR2lkLnRcbiAgICAgIDsgbG9jIDogTG9jYXRpb24udFxuICAgICAgOyBtZW1iZXJzIDogKFRpZC50ICogKFZpZC50IGxpc3QgKiAnYSkpIGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICAgIGxldCBjcmVhdGUgbG9jIHRyaXBzID1cbiAgICAgIGxldCBnaWQgPSBHaWQuY3JlYXRlICgpIGluXG4gICAgICBsZXQgbWVtYmVycyA9IExpc3QubWFwIHRyaXBzIH5mOihmdW4gKHgsIHZzLCB0KSAtPiB4LCAodnMsIHQpKSBpblxuICAgICAgeyBnaWQ7IGxvYzsgbWVtYmVycyB9XG4gICAgOztcblxuICAgIGxldCBpZCBnID0gZy5naWRcblxuICAgIGxldCBsb29rdXAgZyB0aWQgPVxuICAgICAgbWF0Y2ggTGlzdC5Bc3NvYy5maW5kIGcubWVtYmVycyB+ZXF1YWw6VGlkLiggPSApIHRpZCB3aXRoXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+IHNjaGVtZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGV2YWxfZmFpbFxuICAgICAgICAgIGcubG9jXG4gICAgICAgICAgIVwiaW1wb3NzaWJsZTogbG9va3VwX2dyb3VwLCB1bmJvdW5kIHR5cGUtaWRlbnRpZmllcjogJXtUaWR9XCJcbiAgICAgICAgICB0aWRcbiAgICAgICAgICAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogdFxuICAgICAgICB8IEJhc2Ugb2YgVXVpZC50ICogdCBsaXN0XG4gICAgICAgIHwgUmVjb3JkIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogdCBsaXN0KSBsaXN0XG4gICAgICAgIHwgVHVwbGUgb2YgdCBsaXN0XG4gICAgICAgIHwgUG9seV92YXJpYW50IG9mIChMb2NhdGlvbi50ICogdCBwb2x5X2NvbnN0ciBsaXN0KVxuICAgICAgICB8IFZhciBvZiAoTG9jYXRpb24udCAqIFZpZC50KVxuICAgICAgICB8IFJlY19hcHAgb2YgVGlkLnQgKiB0IGxpc3RcbiAgICAgICAgfCBUb3BfYXBwIG9mIHQgR3JvdXAudCAqIFRpZC50ICogdCBsaXN0XG4gICAgICBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgdmFyaWFudHNdXG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgdHlwZSBncm91cCA9IHQgR3JvdXAudFxuXG4gIGxldCBncm91cCA9IEdyb3VwLmNyZWF0ZVxuXG4gIHR5cGUgcG9seV92YXJpYW50X3JvdyA9IHQgcG9seV9jb25zdHJcblxuICBsZXQgY29uc3RyIHMgdCA9IGBDb25zdHIgKHMsIHQpXG4gIGxldCBpbmhlcml0XyBsb2MgdCA9IGBJbmhlcml0IChsb2MsIHQpXG4gIGxldCB2YXIgbG9jIHQgPSBWYXIgKGxvYywgdClcbiAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBQb2x5X3ZhcmlhbnQgKGxvYywgeHMpXG4gIGxldCBiYXNldHlwZSA9IGJhc2VcblxuICAoKiBcIlZSXCIgc3RhbmRzIGZvciBcInZhcmlhbnQgb3IgcmVjb3JkXCIgKilcblxuICBsZXQgaXNfY3ljbGljXzAgfih2aWFfVlIgOiBib29sKSA6IGdyb3VwIC0+IFRpZC50IC0+IGJvb2wgPVxuICAgIGZ1biBncm91cCB0aWQgLT5cbiAgICBsZXQgc2V0ID0gcmVmIFtdIGluXG4gICAgbGV0IHZpc2l0ZWQgdGlkID0gTGlzdC5tZW0gIXNldCB0aWQgfmVxdWFsOlRpZC5lcXVhbCBpblxuICAgIGxldCBhZGQgdGlkID0gc2V0IDo9IHRpZCA6OiAhc2V0IGluXG4gICAgbGV0IHJlYyB0cmF2ID0gZnVuY3Rpb25cbiAgICAgICgqIFdlIGxvb2sgZm9yIGN5Y2xlcyBieSB0cmF2ZXJzaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdHlwZS1leHByZXNzaW9ucyAqKVxuICAgICAgfCBBbm5vdGF0ZSAoXywgdCkgLT4gdHJhdiB0XG4gICAgICB8IEJhc2UgKF8sIHRzKSB8IFR1cGxlIHRzIHwgVG9wX2FwcCAoXywgXywgdHMpIC0+IExpc3QuaXRlciB0cyB+Zjp0cmF2XG4gICAgICAoKiAuLmluY2x1ZGluZyBwb2x5LXZhcmlhbnRzICopXG4gICAgICB8IFBvbHlfdmFyaWFudCAoXywgY3MpIC0+XG4gICAgICAgIExpc3QuaXRlciBjcyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IGBDb25zdHIgKF8sIE5vbmUpIC0+ICgpXG4gICAgICAgICAgfCBgQ29uc3RyIChfLCBTb21lIHQpIC0+IHRyYXYgdFxuICAgICAgICAgIHwgYEluaGVyaXQgKF9sb2MsIHQpIC0+IHRyYXYgdClcbiAgICAgICgqIC4uIGFuZCByZWNvcmRzICYgKG5vcm1hbCkgdmFyaWFudHMgKilcbiAgICAgIHwgUmVjb3JkIHhzIC0+IGlmIHZpYV9WUiB0aGVuIExpc3QuaXRlciB4cyB+ZjooZnVuIChfLCB0KSAtPiB0cmF2IHQpIGVsc2UgKClcbiAgICAgIHwgVmFyaWFudCB4cyAtPlxuICAgICAgICBpZiB2aWFfVlIgdGhlbiBMaXN0Lml0ZXIgeHMgfmY6KGZ1biAoXywgdHMpIC0+IExpc3QuaXRlciB+Zjp0cmF2IHRzKSBlbHNlICgpXG4gICAgICAoKiBXZSBkb250IGZvbGxvdyB0eXBlLXZhcnMgKilcbiAgICAgIHwgVmFyIF8gLT4gKClcbiAgICAgICgqIHRyYXZlcnNlIChyZWN1cnNpdmUpIHR5cGUtYXBwcyB3aGVuIGZpcnN0IGVuY291bnRlcmVkICopXG4gICAgICB8IFJlY19hcHAgKHRpZCwgdHMpIC0+XG4gICAgICAgIGlmIHZpc2l0ZWQgdGlkXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYWRkIHRpZDtcbiAgICAgICAgICB0cmF2X3RpZCB0aWQpO1xuICAgICAgICBMaXN0Lml0ZXIgdHMgfmY6dHJhdlxuICAgIGFuZCB0cmF2X3RpZCB0aWQgPVxuICAgICAgbGV0IF8sIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICB0cmF2IGJvZHlcbiAgICBpblxuICAgIHRyYXZfdGlkIHRpZDtcbiAgICBsZXQgcmVzID0gdmlzaXRlZCB0aWQgaW5cbiAgICAoKmxldCBfc3MgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKExpc3QubWFwICghc2V0KSB+Zjooc3ByaW50ZiAhXCIle1RpZH1cIikpIGluKilcbiAgICAoKlByaW50Zi5wcmludGYgIVwiaXNfY3lsaWM6ICV7VGlkfSAtLT4gKCVzKSAlYiAgLS0gJXMlIVwiIHRpZCBfc3MgcmVzIChHcm91cC5sb2MgZ3JvdXApOyopXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGlzX2N5Y2xpYyA9IGlzX2N5Y2xpY18wIH52aWFfVlI6dHJ1ZVxuICBsZXQgaXNfY3ljbGljX3dpdGhfbm9faW50ZXJ2ZW5pbmdfVlIgPSBpc19jeWNsaWNfMCB+dmlhX1ZSOmZhbHNlXG5lbmRcblxuaW5jbHVkZSBFeHByZXNzaW9uXG5cbm1vZHVsZSBFdmFsdWF0aW9uIChDYW5vbmljYWwgOiBDYW5vbmljYWwpID0gc3RydWN0XG4gICgqIFtWZW52LnRdXG4gICAgIEVudmlyb25tZW50IGZvciByZXNvbHZpbmcgdHlwZS12YXJzICopXG4gIG1vZHVsZSBWZW52IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbG9va3VwIDogdCAtPiBWaWQudCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBvcHRpb25cbiAgICB2YWwgY3JlYXRlIDogKFZpZC50ICogVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQpIGxpc3QgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBNYXAuTShWaWQpLnRcblxuICAgIGxldCBjcmVhdGUgPVxuICAgICAgTGlzdC5mb2xkXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBWaWQpKVxuICAgICAgICB+ZjooZnVuIHQgKGssIHYpIC0+IE1hcC5zZXQgfmtleTprIH5kYXRhOnYgdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cCB0IGsgPSBNYXAuZmluZCB0IGtcbiAgZW5kXG5cbiAgbW9kdWxlIEFwcGxpY2FuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnRcbiAgICAgIHwgRGVmaW5pdGlvbiBvZiBDYW5vbmljYWwuRGVmLnRcbiAgZW5kXG5cbiAgKCogW1RlbnYudF1cbiAgICAgRW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyB0eXBlLWRlZmluaXRpb25zICopXG4gIG1vZHVsZSBUZW52IDogc2lnXG4gICAgdHlwZSBrZXkgPSBHaWQudCAqIFRpZC50XG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZmluZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBvcHRpb25cbiAgICB2YWwgZW1wdHkgOiB0XG4gICAgdmFsIGV4dGVuZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEdpZC50ICogVGlkLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZFxuXG4gICAgdHlwZSBrZXkgPSBLZXkudFxuICAgIHR5cGUgdCA9IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBNYXAuTShLZXkpLnRcblxuICAgIGxldCBmaW5kIHQgayA9IE1hcC5maW5kIHQga1xuICAgIGxldCBlbXB0eSA9IE1hcC5lbXB0eSAobW9kdWxlIEtleSlcbiAgICBsZXQgZXh0ZW5kIHQgayB2ID0gTWFwLnNldCB+a2V5OmsgfmRhdGE6diB0XG4gIGVuZFxuXG4gICgqIFtEZWZpbmluZy50XVxuICAgICBNb25hZCBmb3IgbWFuYWdpbmcgdW4tcm9sbGluZyBkZXB0aCwgYW5kIG1haW50YWluZyBhIFtUZW52LnRdICopXG4gIG1vZHVsZSBEZWZpbmluZyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgICB2YWwgbG9va19lbnYgOiBUZW52LmtleSAtPiBBcHBsaWNhbmQudCBvcHRpb24gdFxuICAgIHZhbCBleHRlbmRfbmV3X3RpZCA6IFRlbnYua2V5IC0+IENhbm9uaWNhbC5EZWYudCB0IC0+IEFwcGxpY2FuZC50IHRcbiAgICB2YWwgZXhlYyA6ICdhIHQgLT4gJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gZGVwdGg6aW50IC0+IFRlbnYudCAtPiAnYVxuXG4gICAgbGV0IHJldHVybiB4IH5kZXB0aDpfIF90ZW52ID0geFxuXG4gICAgbGV0IGJpbmQgdCBmIH5kZXB0aCB0ZW52ID1cbiAgICAgIGxldCB4ID0gdCB+ZGVwdGggdGVudiBpblxuICAgICAgKGYgeCkgfmRlcHRoIHRlbnZcbiAgICA7O1xuXG4gICAgbGV0IGxvb2tfZW52IGtleSB+ZGVwdGg6XyB0ZW52ID1cbiAgICAgIGxldCByZXN1bHQgPSBUZW52LmZpbmQgdGVudiBrZXkgaW5cbiAgICAgIE9wdGlvbi5tYXAgfmY6KGZ1biAoYFJlY3Vyc2lvbl9sZXZlbCB4KSAtPiBBcHBsaWNhbmQuUmVjdXJzaW9uX2xldmVsIHgpIHJlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgZXh0ZW5kX25ld190aWQga2V5IGRlZl90IH5kZXB0aCB0ZW52ID1cbiAgICAgIEFwcGxpY2FuZC5EZWZpbml0aW9uXG4gICAgICAgIChsZXQgdmFsdWUgPSBgUmVjdXJzaW9uX2xldmVsIGRlcHRoIGluXG4gICAgICAgICBsZXQgdGVudiA9IFRlbnYuZXh0ZW5kIHRlbnYga2V5IHZhbHVlIGluXG4gICAgICAgICBkZWZfdCB+ZGVwdGg6KGRlcHRoICsgMSkgdGVudilcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgdCA9IHQgfmRlcHRoOjAgVGVudi5lbXB0eVxuICBlbmRcblxuICB0eXBlICdhIGRlZmluaW5nID0gJ2EgRGVmaW5pbmcudFxuXG4gIGxldCAoID4+PSApID0gRGVmaW5pbmcuYmluZFxuICBsZXQgcmV0dXJuID0gRGVmaW5pbmcucmV0dXJuXG5cbiAgbGV0IHNlcXVlbmNlX2RlZmluaW5nIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYiBkZWZpbmluZykgLT4gJ2IgbGlzdCBkZWZpbmluZyA9XG4gICAgZnVuIHhzIH5mIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjY195cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgYWNjX3lzKVxuICAgICAgfCB4IDo6IHhzIC0+IGYgeCA+Pj0gZnVuIHkgLT4gbG9vcCAoeSA6OiBhY2NfeXMpIHhzXG4gICAgaW5cbiAgICBsb29wIFtdIHhzXG4gIDs7XG5cbiAgKCpcbiAgICAgU2hhcGUgZXZhbHVhdGlvbi5cblxuICAgICBTaGFwZXMgYXJlIGV2YWx1YXRlZCB0byBjYW5vbmljYWwtc2hhcGUgKGV4cHJlc3Npb25zKSwgd2l0aCBhZGRpdGlvbmFsIGRlZnMgY29sbGVjdGVkXG4gICAgIGluIHRoZSBbZGVmaW5pbmddIG1vbmFkLCB3aGljaCBhbHNvIG1hbmFnZXMgZ2VuZXJhdGlvbi9tYXBwaW5nIHRvIFtDYW5vbmljYWwuVGlkLnRdXG5cbiAgICAgVGhlcmUgaXMgZG93bndhcmRzIGNvbnRleHQgb2YgW2dyb3VwXSBhbmQgW1ZlbnYudF1cbiAgICAgVGhlIChjdXJyZW50KSBbZ3JvdXBdIGNoYW5nZXMgd2hlbiB0aGUgY2FzZSBmb3IgW1RvcF9hcHBdIGNhbGxzIFtldmFsX2FwcF0uXG5cbiAgICAgVGhlIGN1cnJlbnQgW1ZlbnYudF0gaXMgYWJhbmRvbmVkIHdoZW4gW2V2YWxfYXBwXSBpcyBjYWxsZWQsIGFuZCB0aGVuIHJlLWNyZWF0ZWQgYWZ0ZXJcbiAgICAgdGhlIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgdG8gZWl0aGVyIGlubGluZSB0aGUgdHlwZS1hcHBsaWNhdGlvbiwgb3IgbWFrZSBhIHJlZmVyZW5jZVxuICAgICB0byBhIHR5cGUtZGVmaW5pdGlvbiwgd2hpY2ggaXMgY3JlYXRlZCBhdCBtb3N0IG9uY2UgZm9yIGVhY2ggKEdpZC50ICogVGlkLnQpLlxuXG4gICAgIFdlIG1ha2UgYSB0eXBlLWRlZmluaXRpb24gYWx3YXlzIGZvciBSZWNvcmRzIGFuZCBWYXJpYW50cywgYW5kIGluIGFkZGl0aW9uIGZvciBhbnlcbiAgICAgb3RoZXIgY3ljbGljIHR5cGUtZGVmaW5pdGlvbi5cbiAgKilcblxuICBsZXQgcmVjIGV2YWwgOiBncm91cCAtPiBWZW52LnQgLT4gdCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHZlbnYgdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFJlY29yZCBiaW5kcyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBiaW5kcyB+ZjooZnVuIChzLCB4KSAtPlxuICAgICAgICAgIGV2YWwgZ3JvdXAgdmVudiB4ID4+PSBmdW4geSAtPiByZXR1cm4gKHMsIHkpKVxuICAgICAgICA+Pj0gZnVuIGJpbmRzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5yZWNvcmQgYmluZHMpXG4gICAgICB8IFZhcmlhbnQgYWx0cyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBhbHRzIH5mOihmdW4gKHMsIHhzKSAtPlxuICAgICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IHhzID4+PSBmdW4geXMgLT4gcmV0dXJuIChzLCB5cykpXG4gICAgICAgID4+PSBmdW4gYWx0cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudmFyaWFudCBhbHRzKVxuICAgICAgfCBWYXIgKGxvYywgdmlkKSAtPlxuICAgICAgICAobWF0Y2ggVmVudi5sb29rdXAgdmVudiB2aWQgd2l0aFxuICAgICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICAgICAgIHwgTm9uZSAtPiBldmFsX2ZhaWwgbG9jICFcIkZyZWUgdHlwZSB2YXJpYWJsZTogJyV7VmlkfVwiIHZpZCAoKSlcbiAgICAgIHwgQW5ub3RhdGUgKHMsIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYW5ub3RhdGUgcyB2KVxuICAgICAgfCBCYXNlIChzLCB0cykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYmFzZXR5cGUgcyB2cylcbiAgICAgIHwgVHVwbGUgdHMgLT4gZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudHVwbGUgdnMpXG4gICAgICB8IFRvcF9hcHAgKGluX2dyb3VwLCB0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3NcbiAgICAgICAgPj49IGZ1biBhcmdzIC0+XG4gICAgICAgICgqIGFyZ3MgZXZhbHVhdGVkIGluIGN1cnJlbnQgZ3JvdXAgKilcbiAgICAgICAgZXZhbF9hcHAgaW5fZ3JvdXAgdGlkIGFyZ3NcbiAgICAgICgqIGdyb3VwIGNoYW5nZWQgaGVyZSAqKVxuICAgICAgfCBSZWNfYXBwICh0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3MgPj49IGZ1biBhcmdzIC0+IGV2YWxfYXBwIGdyb3VwIHRpZCBhcmdzXG4gICAgICB8IFBvbHlfdmFyaWFudCAobG9jLCBjcykgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgfmY6KGV2YWxfcG9seV9jb25zdHIgZ3JvdXAgdmVudikgY3NcbiAgICAgICAgPj49IGZ1biB4c3MgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnBvbHlfdmFyaWFudCBsb2MgKExpc3QuY29uY2F0IHhzcykpXG5cbiAgYW5kIGV2YWxfbGlzdCA6IGdyb3VwIC0+IFZlbnYudCAtPiB0IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB2ZW52IHRzIC0+IHNlcXVlbmNlX2RlZmluaW5nIHRzIH5mOihldmFsIGdyb3VwIHZlbnYpXG5cbiAgYW5kIGV2YWxfcG9seV9jb25zdHJcbiAgICA6ICBncm91cCAtPiBWZW52LnQgLT4gdCBwb2x5X2NvbnN0clxuICAgICAgLT4gKHN0cmluZyAqIFZpc2liaWxpdHkub3BhcXVlIENhbm9uaWNhbC5FeHAxLnQgb3B0aW9uKSBsaXN0IGRlZmluaW5nXG4gICAgPVxuICAgIGZ1biBncm91cCB2ZW52IGMgLT5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCBgQ29uc3RyIChzLCBOb25lKSAtPiByZXR1cm4gWyBzLCBOb25lIF1cbiAgICAgIHwgYENvbnN0ciAocywgU29tZSB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdCA+Pj0gZnVuIHYgLT4gcmV0dXJuIFsgcywgU29tZSAoQ2Fub25pY2FsLkV4cDEub3BhcXVlIHYpIF1cbiAgICAgIHwgYEluaGVyaXQgKGxvYywgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHRcbiAgICAgICAgPj49IGZ1biB2IC0+XG4gICAgICAgIChtYXRjaCBDYW5vbmljYWwuRXhwMS5nZXRfcG9seV92YXJpYW50IHYgd2l0aFxuICAgICAgICAgfCBPayB0YWIgLT4gcmV0dXJuIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYilcbiAgICAgICAgIHwgRXJyb3IgZGVzYyAtPlxuICAgICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICBcIlRoZSBzaGFwZSBmb3IgYW4gaW5oZXJpdGVkIHR5cGUgaXMgbm90IGRlc2NyaWJlZCBhcyBhIHBvbHltb3JwaGljLXZhcmlhbnQ6ICVzXCJcbiAgICAgICAgICAgICBkZXNjXG4gICAgICAgICAgICAgKCkpXG5cbiAgYW5kIGV2YWxfZGVmaW5pdGlvbiA6IGdyb3VwIC0+IFZpZC50IGxpc3QgLT4gdCAtPiBDYW5vbmljYWwuRGVmLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCBmb3JtYWxzIGJvZHkgLT5cbiAgICAgIGxldCB2ZW52ID0gVmVudi5jcmVhdGUgKExpc3QubWFwaSBmb3JtYWxzIH5mOihmdW4gaSB4IC0+IHgsIENhbm9uaWNhbC5FeHAxLnZhciBpKSkgaW5cbiAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuZGVmaW5lIHYpXG5cbiAgYW5kIGV2YWxfYXBwIDogZ3JvdXAgLT4gVGlkLnQgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdGlkIGFyZ3MgLT5cbiAgICAgIGxldCBnaWQgPSBHcm91cC5pZCBncm91cCBpblxuICAgICAgbGV0IGZvcm1hbHMsIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICBsZXQgcmVjb3JkX29yX25vcm1hbF92YXJpYW50ID1cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgICB8IFR1cGxlIF8gfCBBbm5vdGF0ZSBfIHwgQmFzZSBfIHwgUG9seV92YXJpYW50IF8gfCBWYXIgXyB8IFJlY19hcHAgXyB8IFRvcF9hcHAgXyAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGN5Y2xpYyA9IGlzX2N5Y2xpYyBncm91cCB0aWQgaW5cbiAgICAgIGxldCBjeWNsaWNfbm9fVlIgPSBpc19jeWNsaWNfd2l0aF9ub19pbnRlcnZlbmluZ19WUiBncm91cCB0aWQgaW5cbiAgICAgIGlmIChyZWNvcmRfb3Jfbm9ybWFsX3ZhcmlhbnQgJiYgY3ljbGljKSB8fCBjeWNsaWNfbm9fVlJcbiAgICAgIHRoZW5cbiAgICAgICAgRGVmaW5pbmcubG9va19lbnYgKGdpZCwgdGlkKVxuICAgICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHJlY3Vyc2UgLT4gcmV0dXJuIHJlY3Vyc2VcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIERlZmluaW5nLmV4dGVuZF9uZXdfdGlkIChnaWQsIHRpZCkgKGV2YWxfZGVmaW5pdGlvbiBncm91cCBmb3JtYWxzIGJvZHkpKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBSZWN1cnNpb25fbGV2ZWwgciAtPiByZXR1cm4gKENhbm9uaWNhbC5FeHAxLnJlY3Vyc2UgciBhcmdzKVxuICAgICAgICB8IERlZmluaXRpb24gZGVmIC0+IHJldHVybiAoQ2Fub25pY2FsLkV4cDEuYXBwbHkgZGVmIGFyZ3MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHZlbnYgPVxuICAgICAgICAgIG1hdGNoIExpc3QuemlwIGZvcm1hbHMgYXJncyB3aXRoXG4gICAgICAgICAgfCBPayB4IC0+IFZlbnYuY3JlYXRlIHhcbiAgICAgICAgICB8IFVuZXF1YWxfbGVuZ3RocyAtPiBmYWlsd2l0aCBcImFwcGx5LCBpbmNvcnJlY3QgdHlwZSBhcHBsaWNhdGlvbiBhcml0eVwiXG4gICAgICAgIGluXG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5KVxuICA7O1xuXG4gICgqIHRvcCBsZXZlbCBlbnRyeSBwb2ludCBmb3IgZXZhbHVhdGlvbiAqKVxuICBsZXQgZXZhbCA6IHQgLT4gQ2Fub25pY2FsLnQgPVxuICAgIGZ1biB0IC0+XG4gICAgICBsZXQgZ3JvdXAgPSBncm91cCAoTG9jYXRpb24ub2Zfc3RyaW5nIFwidG9wLWxldmVsXCIpIFtdIGluXG4gICAgICBsZXQgdmVudiA9IFZlbnYuY3JlYXRlIFtdIGluXG4gICAgICBsZXQgdiA9IERlZmluaW5nLmV4ZWMgKGV2YWwgZ3JvdXAgdmVudiB0KSBpblxuICAgICAgQ2Fub25pY2FsLkNyZWF0ZS5jcmVhdGUgdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDYW5vbmljYWxfZnVsbFxuXG4gIG1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgRXZhbHVhdGlvbiAoQ2Fub25pY2FsX2Z1bGwpXG5tb2R1bGUgQ2Fub25pY2FsX3NlbGVjdGVkID0gQ2Fub25pY2FsX2RpZ2VzdFxubW9kdWxlIEV2YWx1YXRpb25fdG9fZGlnZXN0ID0gRXZhbHVhdGlvbiAoQ2Fub25pY2FsX3NlbGVjdGVkKVxuXG5sZXQgZXZhbF90b19kaWdlc3QgZXhwID0gQ2Fub25pY2FsX3NlbGVjdGVkLnRvX2RpZ2VzdCAoRXZhbHVhdGlvbl90b19kaWdlc3QuZXZhbCBleHApXG5sZXQgZXZhbF90b19kaWdlc3Rfc3RyaW5nIGV4cCA9IERpZ2VzdC50b19oZXggKGV2YWxfdG9fZGlnZXN0IGV4cClcblxubW9kdWxlIEZvcl90eXBlcmVwID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBOb3RfYV90dXBsZSBvZiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGRlY29uc3RydWN0X3R1cGxlX2V4biB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFR1cGxlIHRzIC0+IHRzXG4gICAgfCBfIC0+IHJhaXNlIChOb3RfYV90dXBsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNvcnRlZF90YWJsZSA9IFNvcnRlZF90YWJsZVxuICBtb2R1bGUgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3RvciA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3JcbiAgbW9kdWxlIENhbm9uaWNhbCA9IENhbm9uaWNhbFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMiAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogU2FtZSBhcyB7IUJ5dGVzLmJsaXRfc3RyaW5nfSB3aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cbiAgICBJZiBbc10gaXMgZW1wdHksIHRoZSByZXN1bHQgaXMgdGhlIHNpbmdsZXRvbiBsaXN0IFtbXCJcIl1dLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0ICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYWNjIC0+IGNoYXIgLT4gJ2FjYykgLT4gJ2FjYyAtPiBzdHJpbmcgLT4gJ2FjY1xuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYWNjIC0+ICdhY2MpIC0+IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCJpbmNsdWRlIFN0YWJsZV93aXRuZXNzX2ludGZcblxuKCogVGhlIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24gb2Ygc3RhYmxlIHdpdG5lc3NlcyBkb2VzIG5vdCBtYXR0ZXIuICopXG50eXBlIF8gdCA9IHVuaXRcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYXJyYXkgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYm9vbCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19ieXRlcyA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19jaGFyID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2V4biA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19mbG9hdCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19pbnQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50MzIgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50NjQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbGF6eV90ICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2xpc3QgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbmF0aXZlaW50ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX29wdGlvbiAoKSA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19yZWYgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3Nfc3RyaW5nID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX3VuaXQgPSAoKVxuZW5kXG5cbmxldCBvZl9zZXJpYWxpemFibGUgKCkgXyBfID0gKClcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTEgKF8gOiBUMSkgKF8gOiBUMSkgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyAoKSA9ICgpXG5lbmRcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTIgKF8gOiBUMikgKF8gOiBUMikgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyAoKSAoKSA9ICgpXG5lbmRcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTMgKF8gOiBUMykgKF8gOiBUMykgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyBfICgpICgpID0gKClcbmVuZFxuXG5sZXQgYXNzZXJ0X3N0YWJsZSA9ICgpXG4iLCIoKiBDb21tb246IGNvbW1vbiBkZWZpbml0aW9ucyB1c2VkIGJ5IGJpbmFyeSBwcm90b2NvbCBjb252ZXJ0ZXJzICopXG5cbm9wZW4gQmFzZVxub3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcblxudHlwZSBwb3MgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogRXJyb3JzIGFuZCBleGNlcHRpb25zICopXG5cbmV4Y2VwdGlvbiBCdWZmZXJfc2hvcnRcbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbm1vZHVsZSBSZWFkRXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5lZ19pbnQ4XG4gICAgfCBJbnRfY29kZVxuICAgIHwgSW50X292ZXJmbG93XG4gICAgfCBOYXQwX2NvZGVcbiAgICB8IE5hdDBfb3ZlcmZsb3dcbiAgICB8IEludDMyX2NvZGVcbiAgICB8IEludDY0X2NvZGVcbiAgICB8IE5hdGl2ZWludF9jb2RlXG4gICAgfCBVbml0X2NvZGVcbiAgICB8IEJvb2xfY29kZVxuICAgIHwgT3B0aW9uX2NvZGVcbiAgICB8IFN0cmluZ190b29fbG9uZ1xuICAgIHwgVmFyaWFudF90YWdcbiAgICB8IEFycmF5X3Rvb19sb25nXG4gICAgfCBMaXN0X3Rvb19sb25nIG9mXG4gICAgICAgIHsgbGVuIDogaW50XG4gICAgICAgIDsgbWF4X2xlbiA6IGludFxuICAgICAgICB9XG4gICAgfCBIYXNodGJsX3Rvb19sb25nXG4gICAgfCBTdW1fdGFnIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudCBvZiBzdHJpbmdcbiAgICB8IFBvbHlfcmVjX2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIG9mIHN0cmluZ1xuICAgIHwgU2lsbHlfdHlwZSBvZiBzdHJpbmdcbiAgICB8IEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBOZWdfaW50OCAtPiBcIk5lZ19pbnQ4XCJcbiAgICB8IEludF9jb2RlIC0+IFwiSW50X2NvZGVcIlxuICAgIHwgSW50X292ZXJmbG93IC0+IFwiSW50X292ZXJmbG93XCJcbiAgICB8IE5hdDBfY29kZSAtPiBcIk5hdDBfY29kZVwiXG4gICAgfCBOYXQwX292ZXJmbG93IC0+IFwiTmF0MF9vdmVyZmxvd1wiXG4gICAgfCBJbnQzMl9jb2RlIC0+IFwiSW50MzJfY29kZVwiXG4gICAgfCBJbnQ2NF9jb2RlIC0+IFwiSW50NjRfY29kZVwiXG4gICAgfCBOYXRpdmVpbnRfY29kZSAtPiBcIk5hdGl2ZWludF9jb2RlXCJcbiAgICB8IFVuaXRfY29kZSAtPiBcIlVuaXRfY29kZVwiXG4gICAgfCBCb29sX2NvZGUgLT4gXCJCb29sX2NvZGVcIlxuICAgIHwgT3B0aW9uX2NvZGUgLT4gXCJPcHRpb25fY29kZVwiXG4gICAgfCBTdHJpbmdfdG9vX2xvbmcgLT4gXCJTdHJpbmdfdG9vX2xvbmdcIlxuICAgIHwgVmFyaWFudF90YWcgLT4gXCJWYXJpYW50X3RhZ1wiXG4gICAgfCBBcnJheV90b29fbG9uZyAtPiBcIkFycmF5X3Rvb19sb25nXCJcbiAgICB8IExpc3RfdG9vX2xvbmcgeyBsZW47IG1heF9sZW4gfSAtPiBzcHJpbnRmIFwiTGlzdF90b29fbG9uZyAvICVkIChtYXggJWQpXCIgbGVuIG1heF9sZW5cbiAgICB8IEhhc2h0YmxfdG9vX2xvbmcgLT4gXCJIYXNodGJsX3Rvb19sb25nXCJcbiAgICB8IFN1bV90YWcgbG9jIC0+IFwiU3VtX3RhZyAvIFwiIF4gbG9jXG4gICAgfCBWYXJpYW50IGxvYyAtPiBcIlZhcmlhbnQgLyBcIiBeIGxvY1xuICAgIHwgUG9seV9yZWNfYm91bmQgbG9jIC0+IFwiUG9seV9yZWNfYm91bmQgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIGxvYyAtPiBcIlZhcmlhbnRfd3JvbmdfdHlwZSAvIFwiIF4gbG9jXG4gICAgfCBTaWxseV90eXBlIGxvYyAtPiBcIlNpbGx5X3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgRW1wdHlfdHlwZSBsb2MgLT4gXCJFbXB0eV90eXBlIC8gXCIgXiBsb2NcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmV4Y2VwdGlvbiBSZWFkX2Vycm9yIG9mIFJlYWRFcnJvci50ICogcG9zIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5leGNlcHRpb24gUG9seV9yZWNfd3JpdGUgb2Ygc3RyaW5nXG5leGNlcHRpb24gRW1wdHlfdHlwZSBvZiBzdHJpbmdcblxubGV0IHJhaXNlX3JlYWRfZXJyb3IgZXJyIHBvcyA9IHJhaXNlIChSZWFkX2Vycm9yIChlcnIsIHBvcykpXG5cbmxldCByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSBwb3MgPVxuICByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lLCBwb3MpKVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIGxvYyA9IGZhaWx3aXRoIChsb2MgXiBcIjogY29uY3VycmVudCBtb2RpZmljYXRpb25cIilcbmxldCBhcnJheV9ib3VuZF9lcnJvciAoKSA9IGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiXG5cbigqIEJ1ZmZlcnMgKilcblxudHlwZSBwb3NfcmVmID0gcG9zIHJlZlxudHlwZSBidWYgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5sZXQgY3JlYXRlX2J1ZiBuID0gQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIGNfbGF5b3V0IG5cbmxldCBidWZfbGVuIGJ1ZiA9IEFycmF5MS5kaW0gYnVmXG5sZXQgYXNzZXJ0X3BvcyBwb3MgPSBpZiBwb3MgPCAwIHRoZW4gYXJyYXlfYm91bmRfZXJyb3IgKClcbmxldCBjaGVja19wb3MgKGJ1ZiA6IGJ1ZikgcG9zID0gaWYgcG9zID49IEFycmF5MS5kaW0gYnVmIHRoZW4gcmFpc2UgQnVmZmVyX3Nob3J0XG5cbmxldCBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHBvc1xuOztcblxubGV0IGNoZWNrX25leHQgKGJ1ZiA6IGJ1ZikgbmV4dCA9IGlmIG5leHQgPiBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgZ2V0X29wdF9wb3MgfmxvYyB+dmFyID0gZnVuY3Rpb25cbiAgfCBTb21lIHBvcyAtPlxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpbl9wcm90LkNvbW1vbi4lczogJXMgPCAwXCIgbG9jIHZhcik7XG4gICAgcG9zXG4gIHwgTm9uZSAtPiAwXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gc3JjOmJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBkc3Q6YnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfc3R1YlwiXG5cbmxldCBibGl0X2J1ZiA/c3JjX3BvcyB+c3JjID9kc3RfcG9zIH5kc3QgbGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBBcnJheTEuZGltIHNyY1xuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgPiBzcmNfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gZHN0XG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyA+IGRzdF9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBzcmNcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zjogc3JjX3BvcyArIGxlbiA+IHNyY19sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGRzdFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBkc3RfcG9zICsgbGVuID4gZHN0X2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmIH5zcmNfcG9zIH5zcmMgfmRzdF9wb3MgfmRzdCB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHN0cmluZ1xuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9ieXRlc19idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9zdHJpbmdfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfc3RyaW5nX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gYnVmXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gYnVmXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxubGV0IGJsaXRfYnl0ZXNfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnl0ZXNfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBzdHJfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX3N0cmluZ1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9ieXRlc1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBibGl0X2J1Zl9ieXRlcyA/c3JjX3BvcyBidWYgP2RzdF9wb3Mgc3RyIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J1Zl9zdHJpbmdcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IGJ1Zl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zID4gc3RyX2xlblwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IGJ1Zl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zIGJ1ZiB+ZHN0X3BvcyBzdHIgfmxlblxuOztcblxubGV0IGJsaXRfYnVmX3N0cmluZyA9IGJsaXRfYnVmX2J5dGVzXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxubGV0IHJlYyBjb3B5X2h0YmxfbGlzdCBodGJsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBodGJsXG4gIHwgKGssIHYpIDo6IHJlc3QgLT5cbiAgICBTdGRsaWIuSGFzaHRibC5hZGQgaHRibCBrIHY7XG4gICAgY29weV9odGJsX2xpc3QgaHRibCByZXN0XG47O1xuXG4oKiBCaWdhcnJheXMgKilcblxudHlwZSB2ZWMzMiA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWM2NCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWMgPSB2ZWM2NFxudHlwZSBtYXQzMiA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQ2NCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQgPSBtYXQ2NFxuXG4oKiBGbG9hdCBhcnJheXMgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0IGFycmF5XG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdGFycmF5XG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBmbG9hdGFycmF5XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG4oKioqKVxuXG5sZXQgKCArICkgPSAoICsgKVxuIiwiKCogTmF0MDogbmF0dXJhbCBudW1iZXJzIChpbmNsdWRpbmcgemVybykgKilcblxudHlwZSB0ID0gaW50XG5cbmxldCBvZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHRoZW4gZmFpbHdpdGggXCJCaW5fcHJvdC5OYXQwLm9mX2ludDogbiA8IDBcIjtcbiAgblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuIiwiKCogV3JpdGVfbWw6IHdyaXRpbmcgdmFsdWVzIHRvIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2Egd3JpdGVyID0gYnVmIC0+IHBvczpwb3MgLT4gJ2EgLT4gcG9zXG50eXBlICgnYSwgJ2IpIHdyaXRlcjEgPSAnYSB3cml0ZXIgLT4gJ2Igd3JpdGVyXG50eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIyID0gJ2Egd3JpdGVyIC0+ICgnYiwgJ2MpIHdyaXRlcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSB3cml0ZXIzID0gJ2Egd3JpdGVyIC0+ICgnYiwgJ2MsICdkKSB3cml0ZXIyXG5cbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBidWYgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ4IDogYnVmIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDMyIDogYnVmIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ2NCA6IGJ1ZiAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMgJCopXG5cbmxldCBjb2RlX05FR19JTlQ4ID0gKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSAnXFx4ZmYnICgqJCopXG5sZXQgY29kZV9JTlQxNiA9ICgqJCBDb2RlLmNoYXIgSU5UMTYgKikgJ1xceGZlJyAoKiQqKVxubGV0IGNvZGVfSU5UMzIgPSAoKiQgQ29kZS5jaGFyIElOVDMyICopICdcXHhmZCcgKCokKilcbmxldCBjb2RlX0lOVDY0ID0gKCokIENvZGUuY2hhciBJTlQ2NCAqKSAnXFx4ZmMnICgqJCopXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxuXG5sZXQgdW5zYWZlX3NldDE2YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MTZcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MzJcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0NjRcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDE2bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG4gIGVsc2UgdW5zYWZlX3NldDMyXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG4gIGVsc2UgdW5zYWZlX3NldDY0XG47O1xuXG5sZXQgYmluX3dyaXRlX3VuaXQgYnVmIH5wb3MgKCkgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAnXFwwMDAnO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgYiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIChpZiBiIHRoZW4gJ1xcMDAxJyBlbHNlICdcXDAwMCcpO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuID1cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiBwb3MgbjtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX05FR19JTlQ4O1xuICB1bnNhZmVfc2V0OCBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMyBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQxNjtcbiAgdW5zYWZlX3NldDE2bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMzI7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA5IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDY0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfY2hhciBidWYgfnBvcyBjID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgYztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiBuID49IDBcbiAgdGhlblxuICAgIGlmIG4gPCAweDAwMDAwMDgwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG5cbiAgICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICAgIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAxIGxzbCAzMVxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8IC0oMSBsc2wgMzEpXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIG5hdDAgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA8IDB4MDAwMTAwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzJcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX3N0cmluZyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBuZXdfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IG5ld19wb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgKCogVE9ETzogb3B0aW1pemUgZm9yIHNtYWxsIHN0cmluZ3MgKilcbiAgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3BvczpuZXdfcG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2J5dGVzIGJ1ZiB+cG9zIHN0ciA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBieXRlcyAqKVxuICB1bnNhZmVfYmxpdF9ieXRlc19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5iaXRzX29mX2Zsb2F0IHgpO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFzc2VydF9wb3MgcG9zO1xuICAgICAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgbilcbiAgICAgIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIG4pXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbiAgZWxzZSBpZiBuID49IDB4MDAwMDgwMDBMIHx8IG4gPCAtMHgwMDAwODAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQ2NC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0aXZlaW50IGJ1ZiB+cG9zIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICAmJiAobiA+PSAoKiAweDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMVxuICAgICAgfHwgbiA8ICgqIC0weDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQubmVnIChOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMSkpXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfbmF0aXZlaW50IG4pKVxuICBlbHNlIGlmICgobm90IGFyY2hfc2l4dHlmb3VyKSAmJiBuID49IDB4ODAwMG4pIHx8IG4gPCAtMHg4MDAwblxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKE5hdGl2ZWludC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChOYXRpdmVpbnQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgciA9IGJpbl93cml0ZV9lbCBidWYgfnBvcyAhclxuXG5sZXQgYmluX3dyaXRlX2xhenkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGx2ID1cbiAgbGV0IHYgPSBMYXp5LmZvcmNlIGx2IGluXG4gIGJpbl93cml0ZV9lbCBidWYgfnBvcyB2XG47O1xuXG5sZXQgYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgZmFsc2VcbiAgfCBTb21lIHYgLT5cbiAgICBsZXQgbmV4dCA9IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIHRydWUgaW5cbiAgICBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6bmV4dCB2XG47O1xuXG5sZXQgYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgKGEsIGIpID1cbiAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYSBidWYgfnBvcyBhIGluXG4gIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOm5leHQgYlxuOztcblxubGV0IGJpbl93cml0ZV90cmlwbGUgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3MgKGEsIGIsIGMpID1cbiAgbGV0IG5leHQxID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBsZXQgbmV4dDIgPSBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0MSBiIGluXG4gIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOm5leHQyIGNcbjs7XG5cbmxldCBiaW5fd3JpdGVfbGlzdCA9XG4gIGxldCByZWMgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gZWxzX3Bvc1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9lbCBidWYgfnBvczplbHNfcG9zIGhkIGluXG4gICAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvczpuZXdfZWxzX3BvcyB0bFxuICBpblxuICBmdW4gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGxzdCAtPlxuICAgIGxldCBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKExpc3QubGVuZ3RoIGxzdCkgaW5cbiAgICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIGxlbiBpblxuICAgIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuIH5sZW5ndGggfmJsaXQgYnVmIH5wb3MgYSA9XG4gIGxldCBsZW4gPSBsZW5ndGggYSBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBibGl0IH5zcmNfcG9zOjAgYSB+ZHN0X3Bvczpwb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6RmxvYXQuQXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgICBidWZcbiAgICB+cG9zXG4gICAgYVxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdF9hcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6QXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyID1cbiAgbGV0IGVsc19wb3NfcmVmID0gcmVmIGVsc19wb3MgaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgZWxzX3Bvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFlbHNfcG9zX3JlZiAoQXJyYXkudW5zYWZlX2dldCBhciBpKVxuICBkb25lO1xuICAhZWxzX3Bvc19yZWZcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXkgKHR5cGUgYSkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3dyaXRlX2VsIDogYSB3cml0ZXIpIDogZmxvYXQgd3JpdGVyKSA9PSBiaW5fd3JpdGVfZmxvYXRcbiAgdGhlbiBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCBwbiA9IE5hdDAudW5zYWZlX29mX2ludCBuIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbiBpblxuICAgIGJpbl93cml0ZV9hcnJheV9sb29wIGJpbl93cml0ZV9lbCBidWYgfmVsc19wb3Mgfm4gYXIpXG47O1xuXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlX2tleSBiaW5fd3JpdGVfdmFsIGJ1ZiB+cG9zIGh0YmwgPVxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgZWxzX3BvcyA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9rZXkgYnVmIH5wb3M6ZWxzX3BvcyBrIGluXG4gICAgYmluX3dyaXRlX3ZhbCBidWYgfnBvczpuZXdfZWxzX3BvcyB2XG4gIGluXG4gIGxldCByZXNfcG9zID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIGVsc19wb3MgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fd3JpdGVfaGFzaHRibFwiO1xuICByZXNfcG9zXG47O1xuXG5leHRlcm5hbCBidWZfb2ZfdmVjMzIgOiB2ZWMzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfdmVjNjQgOiB2ZWM2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0MzIgOiBtYXQzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0NjQgOiBtYXQ2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWMzMiB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWM2NCB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmVjID0gYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgYnVmIH5wb3MgbSA9XG4gIGxldCBsZW4xID0gQXJyYXkyLmRpbTEgbSBpblxuICBsZXQgbGVuMiA9IEFycmF5Mi5kaW0yIG0gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMSkgaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMikgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfbWF0MzIgbSkgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDY0IG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9tYXQgPSBiaW5fd3JpdGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgYnVmIH5wb3MgcyA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHMgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV92YXJpYW50X2ludCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJsZSBidWYgcG9zIChJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IHgpIDEpIDFsKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfOGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzE2Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfMzJiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF82NGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50NjRfYml0cyBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazE2X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIChJbnQzMi5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nX2dldDMyIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nX2dldDY0IDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0dVwiXG5cbmxldCBiaW5fd3JpdGVfbWQ1IGJ1ZiB+cG9zIHggPVxuICBsZXQgeCA9IE1kNV9saWIudG9fYmluYXJ5IHggaW5cbiAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHggPSAxNik7XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDE2IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX3N0cmluZ19nZXQ2NCB4IDAgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCA4IGluXG4gICAgdW5zYWZlX3NldDY0IGJ1ZiBwb3MgYTtcbiAgICB1bnNhZmVfc2V0NjQgYnVmIChwb3MgKyA4KSBiKVxuICBlbHNlIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggNCBpblxuICAgIGxldCBjID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDggaW5cbiAgICBsZXQgZCA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCAxMiBpblxuICAgIHVuc2FmZV9zZXQzMiBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgNCkgYjtcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyA4KSBjO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDEyKSBkKTtcbiAgbmV4dFxuOztcbiIsIigqIFJlYWRfbWw6IHJlYWRpbmcgdmFsdWVzIGZyb20gdGhlIGJpbmFyeSBwcm90b2NvbCB1c2luZyAobW9zdGx5KSBPQ2FtbC4gKilcblxuKCogTm90ZTogdGhlIGNvZGUgaXMgdGhpcyBmaWxlIGlzIGNhcmVmdWxseSB3cml0dGVuIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGFsbG9jYXRpb25zLiBXaGVuXG4gICB0b3VjaGluZyB0aGlzIGNvZGUsIGJlIHN1cmUgdG8gcnVuIHRoZSBiZW5jaG1hcmtzIHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4gKilcblxub3BlbiBCaWdhcnJheVxub3BlbiBDb21tb25cblxudHlwZSAnYSByZWFkZXIgPSBidWYgLT4gcG9zX3JlZjpwb3NfcmVmIC0+ICdhXG50eXBlICgnYSwgJ2IpIHJlYWRlcjEgPSAnYSByZWFkZXIgLT4gJ2IgcmVhZGVyXG50eXBlICgnYSwgJ2IsICdjKSByZWFkZXIyID0gJ2EgcmVhZGVyIC0+ICgnYiwgJ2MpIHJlYWRlcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIzID0gJ2EgcmVhZGVyIC0+ICgnYiwgJ2MsICdkKSByZWFkZXIyXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBidWYgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuXG5sZXQgdW5zYWZlX2dldDhfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgYyA9IHVuc2FmZV9nZXQ4IGJ1ZiBwb3MgaW5cbiAgaWYgYyA+PSAxMjggdGhlbiBjIC0gMjU2IGVsc2UgY1xuOztcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxubGV0IG1heF9pbnRfaW50MzIgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIEludDMyLm1heF9pbnQgZWxzZSBJbnQzMi5vZl9pbnQgbWF4X2ludFxubGV0IG1pbl9pbnRfaW50MzIgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIEludDMyLm1heF9pbnQgZWxzZSBJbnQzMi5vZl9pbnQgbWluX2ludFxubGV0IG1heF9pbnRfaW50NjQgPSBJbnQ2NC5vZl9pbnQgbWF4X2ludFxubGV0IG1pbl9pbnRfaW50NjQgPSBJbnQ2NC5vZl9pbnQgbWluX2ludFxuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDMyIHBvcyB4ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBJbnQzMi50b19pbnQgeFxuICBlbHNlIGlmIHggPj0gbWluX2ludF9pbnQzMiAmJiB4IDw9IG1heF9pbnRfaW50MzJcbiAgdGhlbiBJbnQzMi50b19pbnQgeFxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2FmZV9pbnRfb2ZfaW50NjQgcG9zIHggPVxuICBpZiB4ID49IG1pbl9pbnRfaW50NjQgJiYgeCA8PSBtYXhfaW50X2ludDY0XG4gIHRoZW4gSW50NjQudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXQgc2FmZV9uYXRpdmVpbnRfb2ZfaW50NjQgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfcG9zIHggLT4gSW50NjQudG9fbmF0aXZlaW50IHhcbiAgZWxzZVxuICAgIGZ1biBbQGlubGluZSBhbHdheXNdIHBvcyB4IC0+XG4gICAgICBpZiB4ID49IEludDY0Lm9mX25hdGl2ZWludCBOYXRpdmVpbnQubWluX2ludFxuICAgICAgJiYgeCA8PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1heF9pbnRcbiAgICAgIHRoZW4gSW50NjQudG9fbmF0aXZlaW50IHhcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2dldDE2IDogYnVmIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDMyIDogYnVmIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBic3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBic3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0MTZiZV91bnNpZ25lZCA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQxNiBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQxNiBidWYgcG9zIHw+IGJzd2FwMTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MzJiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQzMiBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQzMiBidWYgcG9zIHw+IGJzd2FwMzJcbjs7XG5cbmxldCB1bnNhZmVfZ2V0NjRiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQ2NCBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQ2NCBidWYgcG9zIHw+IGJzd2FwNjRcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQxNiBidWYgcG9zIHw+IGJzd2FwMTYgZWxzZSB1bnNhZmVfZ2V0MTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MzJsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQzMiBidWYgcG9zIHw+IGJzd2FwMzIgZWxzZSB1bnNhZmVfZ2V0MzJcbjs7XG5cbmxldCB1bnNhZmVfZ2V0NjRsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQ2NCBidWYgcG9zIHw+IGJzd2FwNjQgZWxzZSB1bnNhZmVfZ2V0NjRcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MTZsZV9zaWduZWQgYnVmIHBvcyA9XG4gIGxldCB4ID0gdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvcyBpblxuICBpZiB4ID4gMzI3NjcgdGhlbiB4IC0gNjU1MzYgZWxzZSB4XG47O1xuXG5sZXQgYmluX3JlYWRfdW5pdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiB1bnNhZmVfZ2V0IGJ1ZiBwb3MgPSAnXFwwMDAnXG4gIHRoZW4gcG9zX3JlZiA6PSBwb3MgKyAxXG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuVW5pdF9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2Jvb2wgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGZhbHNlXG4gIHwgJ1xcMDAxJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICB0cnVlXG4gIHwgXyAtPiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5Cb29sX2NvZGUgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zIGluXG4gIGlmIG4gPj0gMCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5lZ19pbnQ4ICFwb3NfcmVmO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogQ2FuIGJlIGFib3ZlIG5leHQgbGluZSAobm8gZXJyb3JzIHBvc3NpYmxlIHdpdGggMTZiaXQpLlxuICAgICBUaGlzIHNob3VsZCBpbXByb3ZlIHRoZSBnZW5lcmF0ZWQgY29kZS4gKilcbiAgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDY0bGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDMyICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9pbnRfb2ZfaW50NjQgIXBvc19yZWYgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIEludDY0Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBOYXRpdmVpbnQub2ZfaW50MzIgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfbmF0aXZlaW50X29mX2ludDY0IHBvcyBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF8xNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIE5hdDAudW5zYWZlX29mX2ludCAodW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvcylcbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgbWFza18zMmJpdCA9IEludDY0LnRvX2ludCAweGZmZmZfZmZmZkwgaW5cbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgIGxldCBuID0gSW50MzIudG9faW50ICh1bnNhZmVfZ2V0MzJsZSBidWYgcG9zKSBpblxuICAgICAgaWYgbiA+PSAwXG4gICAgICB0aGVuIE5hdDAudW5zYWZlX29mX2ludCBuXG4gICAgICBlbHNlXG4gICAgICAgICgqIEVyYXNlIHRoZSB1cHBlciBiaXRzIHRoYXQgd2VyZSBzZXQgdG8gMSBkdXJpbmcgdGhlIGludDMyIC0+IGludCBjb252ZXJzaW9uLiAqKVxuICAgICAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKG4gbGFuZCBtYXNrXzMyYml0KSlcbiAgZWxzZVxuICAgIGZ1biBidWYgfnBvc19yZWYgfnBvcyAtPlxuICAgICAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gICAgICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gICAgICBpZiBuID49IDBsICYmIG4gPD0gbWF4X2ludF9pbnQzMlxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBuID0gTmF0MC51bnNhZmVfb2ZfaW50IChJbnQzMi50b19pbnQgbikgaW5cbiAgICAgICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgICAgICBuKVxuICAgICAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93ICFwb3NfcmVmXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBpZiBuID49IDBMICYmIG4gPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIChcbiAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50NjQudG9faW50IG4pIGluXG4gICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgIG4pXG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5hdDAudW5zYWZlX29mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmF0MF8zMiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlblxuICAgICAgc2FmZV9iaW5fcmVhZF9uYXQwXzY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgcG9zXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfYnl0ZXMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHN0YXJ0X3BvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5TdHJpbmdfdG9vX2xvbmcgc3RhcnRfcG9zO1xuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWZfYnl0ZXMgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIHN0ciB+bGVuO1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9zdHJpbmcgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHN0ciA9IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiBpblxuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuOztcblxubGV0IGJpbl9yZWFkX2NoYXIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0IGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIENoYXIuY29kZSBjaFxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlblxuICAgICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gICAgZWxzZVxuICAgICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfZmxvYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICBJbnQ2NC5mbG9hdF9vZl9iaXRzICh1bnNhZmVfZ2V0NjRsZSBidWYgcG9zKVxuOztcblxubGV0IGJpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQzMi5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50MzIub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50MzIub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50MzJfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIEludDY0Lm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBJbnQ2NC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBJbnQ2NC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnQ2NF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5hdGl2ZWludC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIHdoZW4gYXJjaF9zaXh0eWZvdXIgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0aXZlaW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX3JlZiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgcmVmIGVsXG47O1xuXG5sZXQgYmluX3JlYWRfbGF6eSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgTGF6eS5mcm9tX3ZhbCBlbFxuOztcblxubGV0IGJpbl9yZWFkX29wdGlvbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXDAwMCcgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTm9uZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgU29tZSBlbFxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuT3B0aW9uX2NvZGUgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfcGFpciBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYiA9IGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGJcbjs7XG5cbmxldCBiaW5fcmVhZF90cmlwbGUgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYiA9IGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBjID0gYmluX3JlYWRfYyBidWYgfnBvc19yZWYgaW5cbiAgYSwgYiwgY1xuOztcblxubGV0IGJpbl9yZWFkX25fcmV2X2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGxlbiA9XG4gIGxldCByZWMgbG9vcCBuIGFjYyA9XG4gICAgaWYgbiA9IDAgdGhlbiBhY2MgZWxzZSBsb29wIChuIC0gMSkgKGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA6OiBhY2MpXG4gIGluXG4gIGxvb3AgbGVuIFtdXG47O1xuXG5sZXQgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IG1heF9sZW4gdGhlbiByYWlzZV9yZWFkX2Vycm9yIChMaXN0X3Rvb19sb25nIHsgbGVuOyBtYXhfbGVuIH0pICFwb3NfcmVmO1xuICBsZXQgcmV2X2xzdCA9IGJpbl9yZWFkX25fcmV2X2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGxlbiBpblxuICBMaXN0LnJldiByZXZfbHN0XG47O1xuXG5sZXQgYmluX3JlYWRfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbjptYXhfaW50IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZlxuOztcblxubGV0IGR1bW15X2Zsb2F0X2J1ZiA9IGNyZWF0ZV9idWYgOFxubGV0ICgpID0gaWdub3JlIChXcml0ZS5iaW5fd3JpdGVfZmxvYXQgZHVtbXlfZmxvYXRfYnVmIH5wb3M6MCAzLjEpXG5cbmxldCBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoID1cbiAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC8gMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4gfmNyZWF0ZSB+YmxpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IG1heF9mbG9hdF9hcnJheV9sZW5ndGggdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBwb3M7XG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBhcnIgPSBjcmVhdGUgbGVuIGluXG4gIGJsaXQgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIGFyciB+bGVuO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGFyclxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0YXJyYXkgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmNyZWF0ZTpGbG9hdC5BcnJheS5jcmVhdGVcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICAgIGJ1ZlxuICAgIH5wb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXRfYXJyYXkgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmNyZWF0ZTpBcnJheS5jcmVhdGVfZmxvYXRcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9idWZfZmxvYXRfYXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2FycmF5ICh0eXBlIGEpIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl9yZWFkX2VsIDogYSByZWFkZXIpIDogZmxvYXQgcmVhZGVyKSA9PSBiaW5fcmVhZF9mbG9hdFxuICB0aGVuIChPYmoubWFnaWMgKGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA6IGZsb2F0IGFycmF5KSA6IGEgYXJyYXkpXG4gIGVsc2UgKFxuICAgIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICAgIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFt8fF1cbiAgICBlbHNlIChcbiAgICAgIGlmIGFyY2hfc2l4dHlmb3VyXG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpXG4gICAgICBlbHNlIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC8gMlxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBtYXliZV9mbG9hdCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBkdW1teV9mbG9hdF9idWYgfnBvc19yZWY6KHJlZiAwKSBpblxuICAgICAgICAgICAgU29tZSBlbFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBtYXliZV9mbG9hdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3NcbiAgICAgICAgfCBTb21lIGVsIC0+XG4gICAgICAgICAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgZWwpID0gT2JqLmRvdWJsZV90YWcgfHwgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3Bvcyk7XG4gICAgICBsZXQgZmlyc3QgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiBmaXJzdCBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIGkgZWxcbiAgICAgIGRvbmU7XG4gICAgICByZXMpKVxuOztcblxubGV0IGJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRfa2V5IGJpbl9yZWFkX3ZhbCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYWRfa3ZfcGFpciA9IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfa2V5IGJpbl9yZWFkX3ZhbCBpblxuICBsZXQgZWxzID0gYmluX3JlYWRfbl9yZXZfbGlzdCByZWFkX2t2X3BhaXIgYnVmIH5wb3NfcmVmIGxlbiBpblxuICBjb3B5X2h0YmxfbGlzdCBodGJsIGVsc1xuOztcblxuZXh0ZXJuYWwgYnVmX29mX3ZlYzMyIDogdmVjMzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX3ZlYzY0IDogdmVjNjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDMyIDogbWF0MzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDY0IDogbWF0NjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCB2ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXQgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX3ZlYzMyIHZlYykgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdmVjXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCB2ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX3ZlYzY0IHZlYykgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdmVjXG47O1xuXG5sZXQgYmluX3JlYWRfdmVjID0gYmluX3JlYWRfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogNCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDMyIG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbjEgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgbGVuMiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG1hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dCBsZW4xIGxlbjIgaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfbWF0NjQgbWF0KSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBtYXRcbjs7XG5cbmxldCBiaW5fcmVhZF9tYXQgPSBiaW5fcmVhZF9mbG9hdDY0X21hdFxuXG5sZXQgYmluX3JlYWRfYmlnc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHN0ciA9IGNyZWF0ZV9idWYgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDpzdHIgfmRzdF9wb3M6MCB+bGVuO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHN0clxuOztcblxubGV0IGJpbl9yZWFkX3ZhcmlhbnRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAoKiBbbl0gbXVzdCBjb250YWluIGFuIGludGVnZXIgYWxyZWFkeSBlbmNvZGVkLCBpLmUuIFtuID0gMiAqIGsgKyAxXS4gKilcbiAgaWYgSW50MzIubG9nYW5kIG4gMWwgPSAwbFxuICB0aGVuIHJhaXNlIChSZWFkX2Vycm9yIChSZWFkRXJyb3IuVmFyaWFudF90YWcsIHBvcykpXG4gIGVsc2UgKFxuICAgICgqIFdlIHNoaWZ0IGl0IGJ5IG9uZSBiaXQgdG8gdGhlIHJpZ2h0IHNlIHdlIGdldCBiYWNrIFsyICogayArIDFdIGluIHRoZSBlbmQuICopXG4gICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgIEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHQgbiAxKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfOGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gIHVuc2FmZV9nZXQ4IGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfMTZiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzMyYml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzY0Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDY0IHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfaW50NjRfYml0cyBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMTZfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmszMl9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50MzIgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazY0X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0YmUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3Ncbjs7XG5cblslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMDcsIDApXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfc3RyaW5nX3NldDY0dVwiXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5cblslJWVuZGlmXVxuXG5sZXQgYmluX3JlYWRfbWQ1IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IGEgPSB1bnNhZmVfZ2V0NjQgYnVmIHBvcyBpblxuICAgIGxldCBiID0gdW5zYWZlX2dldDY0IGJ1ZiAocG9zICsgOCkgaW5cbiAgICB1bnNhZmVfYnl0ZXNfc2V0NjQgcmVzIDAgYTtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0NjQgcmVzIDggYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfZ2V0MzIgYnVmIHBvcyBpblxuICAgIGxldCBiID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgNCkgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDgpIGluXG4gICAgbGV0IGQgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyAxMikgaW5cbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDAgYTtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDQgYjtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDggYztcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDEyIGQpO1xuICBNZDVfbGliLnVuc2FmZV9vZl9iaW5hcnkgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzKVxuOztcbiIsImluY2x1ZGUgQmluX3NoYXBlXG5cbigqIG5ldyBiYXNlIHNoYXBlcyAqKVxubGV0IGJpbl9zaGFwZV91bml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidW5pdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9ib29sID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYm9vbFwiKSBbXVxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJieXRlc1wiKSBbXVxubGV0IGJpbl9zaGFwZV9jaGFyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiY2hhclwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDMyXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDYzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjNcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXRpdmVpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0MCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5hdDBcIikgW11cbmxldCBiaW5fc2hhcGVfZGlnZXN0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZGlnZXN0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X3ZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDMyX21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0NjRfbWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm1hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJiaWdzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0YXJyYXlcIikgW11cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2YXJpYW50X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF84Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF8xNmJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMzJiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzY0Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NF9iaXRzXCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMTZfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmszMl9pbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrNjRfaW50NjRcIikgW11cblxuKCogbmV3IHNoYXBlIGNvbnN0cnVjdG9ycyAqKVxubGV0IGJpbl9zaGFwZV9yZWYgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInJlZlwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9vcHRpb24geCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm9wdGlvblwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9saXN0IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJsaXN0XCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2FycmF5IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJhcnJheVwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHggeSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImhhc2h0YmxcIikgWyB4OyB5IF1cblxuKCogc2hhcGUtY29uc3RydWN0b3IgYWxpYXNlcyAqKVxubGV0IGJpbl9zaGFwZV9sYXp5IHggPSB4XG5sZXQgYmluX3NoYXBlX3BhaXIgeCB5ID0gdHVwbGUgWyB4OyB5IF1cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHggeSB6ID0gdHVwbGUgWyB4OyB5OyB6IF1cbiIsIigqIFNpemU6IGNvbXB1dGUgc2l6ZSBvZiB2YWx1ZXMgaW4gdGhlIGJpbmFyeSBwcm90b2NvbC4gKilcblxub3BlbiBCaWdhcnJheVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcblxub3BlbiBDb21tb25cblxubW9kdWxlIE1heGltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSAxXG4gIGxldCBiaW5fc2l6ZV9ib29sID0gMVxuICBsZXQgYmluX3NpemVfY2hhciA9IDFcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1heCBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gOFxuICBsZXQgYmluX3NpemVfaW50MzIgPSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NCA9IDlcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IGJpbl9zaXplX2ludF9uYXQwXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gMVxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gMlxuICBsZXQgYmluX3NpemVfaW50XzMyYml0ID0gNFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gOFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSAyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50ID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludCA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IDhcbmVuZFxuXG5tb2R1bGUgTWluaW11bSA9IHN0cnVjdFxuICBsZXQgYmluX3NpemVfdW5pdCA9IE1heGltdW0uYmluX3NpemVfdW5pdFxuICBsZXQgYmluX3NpemVfYm9vbCA9IE1heGltdW0uYmluX3NpemVfYm9vbFxuICBsZXQgYmluX3NpemVfY2hhciA9IE1heGltdW0uYmluX3NpemVfY2hhclxuICBsZXQgYmluX3NpemVfbWQ1ID0gMTZcbiAgbGV0IGJpbl9zaXplX2ludF9uYXQwID0gMVxuICBsZXQgYmluX3NpemVfaW50X25lZ2F0aXZlID0gMlxuICBsZXQgYmluX3NpemVfaW50ID0gbWluIGJpbl9zaXplX2ludF9uYXQwIGJpbl9zaXplX2ludF9uZWdhdGl2ZVxuICBsZXQgYmluX3NpemVfZmxvYXQgPSBNYXhpbXVtLmJpbl9zaXplX2Zsb2F0XG4gIGxldCBiaW5fc2l6ZV9pbnQzMiA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfaW50NjQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX3JlZiA9IDFcbiAgbGV0IGJpbl9zaXplX2xhenlfdCA9IDFcbiAgbGV0IGJpbl9zaXplX29wdGlvbiA9IDFcbiAgbGV0IGJpbl9zaXplX3BhaXIgPSAxICsgMVxuICBsZXQgYmluX3NpemVfdHJpcGxlID0gMSArIDEgKyAxXG4gIGxldCBiaW5fc2l6ZV9sZW4gPSBiaW5fc2l6ZV9uYXQwXG4gIGxldCBiaW5fc2l6ZV9saXN0ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfaGFzaHRibCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9ieXRlcyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDMyX3ZlYyA9IGJpbl9zaXplX3ZlY1xuICBsZXQgYmluX3NpemVfZmxvYXQ2NF92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2xlbiArIGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgPSBiaW5fc2l6ZV9tYXRcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9iaWdzdHJpbmcgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0YXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IE1heGltdW0uYmluX3NpemVfdmFyaWFudF9pbnRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfOGJpdFxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfMTZiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzMyYml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF82NGJpdFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IE1heGltdW0uYmluX3NpemVfaW50NjRfYml0c1xuICBsZXQgYmluX3NpemVfbmV0d29yazE2X2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazE2X2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzJcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazY0X2ludDY0XG5lbmRcblxudHlwZSAnYSBzaXplciA9ICdhIC0+IGludFxudHlwZSAoJ2EsICdiKSBzaXplcjEgPSAnYSBzaXplciAtPiAnYiBzaXplclxudHlwZSAoJ2EsICdiLCAnYykgc2l6ZXIyID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYykgc2l6ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2l6ZXIzID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYywgJ2QpIHNpemVyMlxuXG5sZXQgYmluX3NpemVfdW5pdCAoKSA9IDFcbmxldCBiaW5fc2l6ZV9ib29sIF8gPSAxXG5cbmxldCBiaW5fc2l6ZV9pbnRfbmF0MCBuID1cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgbiA8IDB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAoKiAweDgwMDAwMDAwICopIDEgbHNsIDMxXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgbiA9XG4gIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuIDwgKCogLTB4ODAwMDAwMDAgKikgLSgxIGxzbCAzMSlcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX2NoYXIgXyA9IDFcbmxldCBiaW5fc2l6ZV9pbnQgbiA9IGlmIG4gPj0gMCB0aGVuIGJpbl9zaXplX2ludF9uYXQwIG4gZWxzZSBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgblxuXG5sZXQgYmluX3NpemVfbmF0MCBuYXQwID1cbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHgxMDAwMDAwMDAgKikgMSBsc2wgMzJcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHNpemVfbGVuID0gYmluX3NpemVfbmF0MCBwbGVuIGluXG4gIHNpemVfbGVuICsgbGVuXG47O1xuXG5sZXQgYmluX3NpemVfc3RyaW5nIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoU3RyaW5nLmxlbmd0aCBzdHIpXG5sZXQgYmluX3NpemVfYnl0ZXMgc3RyID0gYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIChCeXRlcy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX21kNSBfID0gMTZcblxubGV0IGJpbl9zaXplX2Zsb2F0IGYgPVxuICAoKiBJZiB3ZSBqdXN0IGlnbm9yZSB0aGUgYXJndW1lbnQgdGhlIGNvbXBpbGVyIHdpbGwgc3RpbGwgcmVxdWlyZSBpdCB0byBleGlzdCBhbmQgYmVcbiAgICAgYm94ZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBmb3IgaW5zdGFuY2Ugd2UgY2FsbCB0aGlzIGZvciBhIGZpZWxkIG9mIGEgZmxvYXQgcmVjb3JkLFxuICAgICB0aGUgY29tcGlsZXIgd2lsbCBhbGxvY2F0ZSB0aGUgZmxvYXQgZm9yIG5vdGhpbmcuXG5cbiAgICAgV2l0aCB0aGlzIGxpbmUgdGhlIGNvbXBpbGVyIHJlYWxseSBpZ25vcmVzIHRoZSBmbG9hdC4gKilcbiAgaWdub3JlICh0cnVuY2F0ZSBmKTtcbiAgOFxuOztcblxubGV0IGJpbl9zaXplX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbCB0aGVuIDUgZWxzZSBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl9zaXplX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50IChJbnQ2NC50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50MzIgKEludDY0LnRvX2ludDMyIG4pXG47O1xuXG5sZXQgYmluX3NpemVfbmF0aXZlaW50ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQ2NCAoSW50NjQub2ZfbmF0aXZlaW50IG4pXG4gIGVsc2UgZnVuIG4gLT4gYmluX3NpemVfaW50MzIgKE5hdGl2ZWludC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX3JlZiBiaW5fc2l6ZV9lbCByID0gYmluX3NpemVfZWwgIXJcbmxldCBiaW5fc2l6ZV9sYXp5X3QgYmluX3NpemVfZWwgbHYgPSBiaW5fc2l6ZV9lbCAoTGF6eS5mb3JjZSBsdilcbmxldCBiaW5fc2l6ZV9sYXp5ID0gYmluX3NpemVfbGF6eV90XG5cbmxldCBiaW5fc2l6ZV9vcHRpb24gYmluX3NpemVfZWwgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMVxuICB8IFNvbWUgdiAtPiAxICsgYmluX3NpemVfZWwgdlxuOztcblxubGV0IGJpbl9zaXplX3BhaXIgYmluX3NpemVfYSBiaW5fc2l6ZV9iIChhLCBiKSA9IGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYlxuXG5sZXQgYmluX3NpemVfdHJpcGxlIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIChhLCBiLCBjKSA9XG4gIGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYiArIGJpbl9zaXplX2MgY1xuOztcblxubGV0IGJpbl9zaXplX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYyB+bGVuX2FjYyBsc3QgPVxuICAgIG1hdGNoIGxzdCB3aXRoXG4gICAgfCBbXSAtPiBzaXplX2FjYyArIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW5fYWNjKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzooc2l6ZV9hY2MgKyBiaW5fc2l6ZV9lbCBoZCkgfmxlbl9hY2M6KGxlbl9hY2MgKyAxKSB0bFxuICBpblxuICBmdW4gYmluX3NpemVfZWwgbHN0IC0+IGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzowIH5sZW5fYWNjOjAgbHN0XG47O1xuXG5sZXQgYmluX3NpemVfbGVuIGxlbiA9XG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBiaW5fc2l6ZV9uYXQwIHBsZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdGFycmF5IGFyID1cbiAgbGV0IGxlbiA9IEZsb2F0LkFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRfYXJyYXkgYXIgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAoOCAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4gPVxuICBsZXQgdG90YWxfbGVuX3JlZiA9IHJlZiB0b3RhbF9sZW4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgbGV0IGVsID0gQXJyYXkudW5zYWZlX2dldCBhciBpIGluXG4gICAgdG90YWxfbGVuX3JlZiA6PSAhdG90YWxfbGVuX3JlZiArIGJpbl9zaXplX2VsIGVsXG4gIGRvbmU7XG4gICF0b3RhbF9sZW5fcmVmXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXkgKHR5cGUgYSkgYmluX3NpemVfZWwgYXIgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fc2l6ZV9lbCA6IGEgc2l6ZXIpIDogZmxvYXQgc2l6ZXIpID09IGJpbl9zaXplX2Zsb2F0XG4gIHRoZW4gYmluX3NpemVfZmxvYXRfYXJyYXkgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCB0b3RhbF9sZW4gPSBiaW5fc2l6ZV9sZW4gbiBpblxuICAgIGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbiB+bilcbjs7XG5cbmxldCBiaW5fc2l6ZV9oYXNodGJsIGJpbl9zaXplX2tleSBiaW5fc2l6ZV92YWwgaHRibCA9XG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgdG90YWxfbGVuID1cbiAgICBpbmNyIGNudF9yZWY7XG4gICAgdG90YWxfbGVuICsgYmluX3NpemVfa2V5IGsgKyBiaW5fc2l6ZV92YWwgdlxuICBpblxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgdG90YWxfbGVuID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIChiaW5fc2l6ZV9sZW4gbGVuKSBpblxuICBpZiAhY250X3JlZiA8PiBsZW4gdGhlbiByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBcImJpbl9zaXplX2hhc2h0YmxcIjtcbiAgdG90YWxfbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZ2VuX3ZlYyB2ZWMgbXVsdGlwbGllciA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHZlYyBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKG11bHRpcGxpZXIgKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgdmVjID0gYmluX3NpemVfZ2VuX3ZlYyB2ZWMgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDhcbmxldCBiaW5fc2l6ZV92ZWMgPSBiaW5fc2l6ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3NpemVfZ2VuX21hdCBtYXQgbXVsdGlwbGllciA9XG4gIGxldCBkaW0xID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBkaW0yID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBzaXplID0gZGltMSAqIGRpbTIgaW5cbiAgYmluX3NpemVfbGVuIGRpbTEgKyBiaW5fc2l6ZV9sZW4gZGltMiArIChtdWx0aXBsaWVyICogc2l6ZSlcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdDMyX21hdCBtYXQgPSBiaW5fc2l6ZV9nZW5fbWF0IG1hdCA0XG5sZXQgYmluX3NpemVfZmxvYXQ2NF9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgOFxubGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NpemVfYmlnc3RyaW5nIGJ1ZiA9IGJpbl9zaXplX2dlbl92ZWMgYnVmIDFcbmxldCBiaW5fc2l6ZV92YXJpYW50X2ludCBfID0gNFxubGV0IGJpbl9zaXplX2ludF84Yml0IF8gPSAxXG5sZXQgYmluX3NpemVfaW50XzE2Yml0IF8gPSAyXG5sZXQgYmluX3NpemVfaW50XzMyYml0IF8gPSA0XG5sZXQgYmluX3NpemVfaW50XzY0Yml0IF8gPSA4XG5sZXQgYmluX3NpemVfaW50NjRfYml0cyBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgXyA9IDJcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50IF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyIF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazY0X2ludCBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCBfID0gOFxuIiwiKCogVHBfY2xhc3M6IHNpemVycywgd3JpdGVycywgYW5kIHJlYWRlcnMgaW4gcmVjb3JkcyAqKVxuXG50eXBlICdhIHdyaXRlciA9XG4gIHsgc2l6ZSA6ICdhIFNpemUuc2l6ZXJcbiAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICB9XG5cbnR5cGUgJ2EgcmVhZGVyID1cbiAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICB9XG5cbnR5cGUgJ2EgdCA9XG4gIHsgc2hhcGUgOiBTaGFwZS50XG4gIDsgd3JpdGVyIDogJ2Egd3JpdGVyXG4gIDsgcmVhZGVyIDogJ2EgcmVhZGVyXG4gIH1cblxudHlwZSAnYSB3cml0ZXIwID0gJ2Egd3JpdGVyXG50eXBlICdhIHJlYWRlcjAgPSAnYSByZWFkZXJcbnR5cGUgJ2EgdDAgPSAnYSB0XG5cbm1vZHVsZSBTMSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gJ2Igd3JpdGVyMFxuICB0eXBlICgnYSwgJ2IpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gJ2IgcmVhZGVyMFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSB0MCAtPiAnYiB0MFxuZW5kXG5cbm1vZHVsZSBTMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICgnYiwgJ2MpIFMxLndyaXRlclxuICB0eXBlICgnYSwgJ2IsICdjKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MpIFMxLnJlYWRlclxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgdDAgLT4gKCdiLCAnYykgUzEudFxuZW5kXG5cbm1vZHVsZSBTMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAoJ2IsICdjLCAnZCkgUzIud3JpdGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MsICdkKSBTMi5yZWFkZXJcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSB0MCAtPiAoJ2IsICdjLCAnZCkgUzIudFxuZW5kXG5cbmxldCB2YXJpYW50X3dyb25nX3R5cGUgbmFtZSBfYnVmIH5wb3NfcmVmIF94ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lICFwb3NfcmVmXG47O1xuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMuU3RyICopXG4oKiQgbWtfYmFzZSBcInVuaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfdW5pdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdW5pdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdCB9XG5sZXQgYmluX3JlYWRlcl91bml0ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF91bml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgfVxubGV0IGJpbl9zaGFwZV91bml0ID0gU2hhcGUuYmluX3NoYXBlX3VuaXRcblxubGV0IGJpbl91bml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV91bml0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3VuaXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfdW5pdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImJvb2xcIiAqKVxubGV0IGJpbl93cml0ZXJfYm9vbCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYm9vbDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYm9vbCB9XG5sZXQgYmluX3JlYWRlcl9ib29sID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9ib29sOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJib29sXCIgfVxubGV0IGJpbl9zaGFwZV9ib29sID0gU2hhcGUuYmluX3NoYXBlX2Jvb2xcblxubGV0IGJpbl9ib29sID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9ib29sOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Jvb2w7IHJlYWRlciA9IGJpbl9yZWFkZXJfYm9vbCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcInN0cmluZ1wiICopXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3N0cmluZzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfc3RyaW5nIH1cblxubGV0IGJpbl9yZWFkZXJfc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9zdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX3N0cmluZ1xuXG5sZXQgYmluX3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfc3RyaW5nOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3N0cmluZzsgcmVhZGVyID0gYmluX3JlYWRlcl9zdHJpbmcgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJieXRlc1wiICopXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYnl0ZXM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2J5dGVzIH1cblxubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2J5dGVzOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBTaGFwZS5iaW5fc2hhcGVfYnl0ZXNcblxubGV0IGJpbl9ieXRlcyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYnl0ZXM7IHdyaXRlciA9IGJpbl93cml0ZXJfYnl0ZXM7IHJlYWRlciA9IGJpbl9yZWFkZXJfYnl0ZXMgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJjaGFyXCIgKilcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2NoYXI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2NoYXIgfVxubGV0IGJpbl9yZWFkZXJfY2hhciA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfY2hhcjsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiIH1cbmxldCBiaW5fc2hhcGVfY2hhciA9IFNoYXBlLmJpbl9zaGFwZV9jaGFyXG5cbmxldCBiaW5fY2hhciA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfY2hhcjsgd3JpdGVyID0gYmluX3dyaXRlcl9jaGFyOyByZWFkZXIgPSBiaW5fcmVhZGVyX2NoYXIgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludCB9XG5sZXQgYmluX3JlYWRlcl9pbnQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XCIgfVxubGV0IGJpbl9zaGFwZV9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XG5sZXQgYmluX2ludCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQgfVxuXG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdFxuXG5sZXQgYmluX2Zsb2F0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDMyID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQzMjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50MzIgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50MzI7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9pbnQzMlxuXG5sZXQgYmluX2ludDMyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQzMjsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQzMjsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQzMiB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDY0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjQgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50NjQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFNoYXBlLmJpbl9zaGFwZV9pbnQ2NFxuXG5sZXQgYmluX2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ2NDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ2NDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQ2NCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5hdGl2ZWludFwiICopXG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdGl2ZWludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0aXZlaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFNoYXBlLmJpbl9zaGFwZV9uYXRpdmVpbnRcblxubGV0IGJpbl9uYXRpdmVpbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25hdGl2ZWludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmF0aXZlaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uYXRpdmVpbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuYXQwXCIgKilcbmxldCBiaW5fd3JpdGVyX25hdDAgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdDA7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25hdDAgfVxubGV0IGJpbl9yZWFkZXJfbmF0MCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0MDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmF0MFwiIH1cbmxldCBiaW5fc2hhcGVfbmF0MCA9IFNoYXBlLmJpbl9zaGFwZV9uYXQwXG5cbmxldCBiaW5fbmF0MCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmF0MDsgd3JpdGVyID0gYmluX3dyaXRlcl9uYXQwOyByZWFkZXIgPSBiaW5fcmVhZGVyX25hdDAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwicmVmXCIgKilcbmxldCBiaW5fd3JpdGVyX3JlZiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfcmVmIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9yZWYgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9yZWYgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfcmVmIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9yZWYgeDEgPSBTaGFwZS5iaW5fc2hhcGVfcmVmIHgxXG5cbmxldCBiaW5fcmVmIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcmVmIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfcmVmIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3JlZiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImxhenlcIiAqKVxubGV0IGJpbl93cml0ZXJfbGF6eSBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfbGF6eSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfbGF6eSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2xhenkgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfbGF6eSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2xhenkgeDEgPSBTaGFwZS5iaW5fc2hhcGVfbGF6eSB4MVxuXG5sZXQgYmluX2xhenkgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9sYXp5IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbGF6eSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9sYXp5IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwib3B0aW9uXCIgKilcbmxldCBiaW5fd3JpdGVyX29wdGlvbiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfb3B0aW9uIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9vcHRpb24gYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfb3B0aW9uIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9vcHRpb24geDEgPSBTaGFwZS5iaW5fc2hhcGVfb3B0aW9uIHgxXG5cbmxldCBiaW5fb3B0aW9uIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfb3B0aW9uIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfb3B0aW9uIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX29wdGlvbiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcInBhaXJcIiAqKVxubGV0IGJpbl93cml0ZXJfcGFpciBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX3BhaXIgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfcGFpciBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9wYWlyIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX3BhaXIgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJwYWlyXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9wYWlyIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX3BhaXIgeDEgeDJcblxubGV0IGJpbl9wYWlyIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcGFpciBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3BhaXIgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3BhaXIgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UzIFwidHJpcGxlXCIgKilcbmxldCBiaW5fd3JpdGVyX3RyaXBsZSBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiBiaW5fd3JpdGVyX2VsMyA9XG4gIHsgc2l6ZSA9XG4gICAgICAoZnVuIHYgLT5cbiAgICAgICAgIFNpemUuYmluX3NpemVfdHJpcGxlIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSBiaW5fd3JpdGVyX2VsMy5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfdHJpcGxlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwxLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwyLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwzLndyaXRlXG4gICAgICAgICAgIGJ1ZlxuICAgICAgICAgICB+cG9zXG4gICAgICAgICAgIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiBiaW5fcmVhZGVyX2VsMyA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF90cmlwbGVcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDEucmVhZFxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMi5yZWFkXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwzLnJlYWRcbiAgICAgICAgICAgYnVmXG4gICAgICAgICAgIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInRyaXBsZVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHgxIHgyIHgzID0gU2hhcGUuYmluX3NoYXBlX3RyaXBsZSB4MSB4MiB4M1xuXG5sZXQgYmluX3RyaXBsZSBiaW5fZWwxIGJpbl9lbDIgYmluX2VsMyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdHJpcGxlIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZSBiaW5fZWwzLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl90cmlwbGUgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXIgYmluX2VsMy53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlciBiaW5fZWwzLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJsaXN0XCIgKilcbmxldCBiaW5fd3JpdGVyX2xpc3QgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2xpc3QgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2xpc3QgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9saXN0IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2xpc3QgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJsaXN0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9saXN0IHgxID0gU2hhcGUuYmluX3NoYXBlX2xpc3QgeDFcblxubGV0IGJpbl9saXN0IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbGlzdCBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2xpc3QgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbGlzdCBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImFycmF5XCIgKilcbmxldCBiaW5fd3JpdGVyX2FycmF5IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9hcnJheSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfYXJyYXkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9hcnJheSBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9hcnJheSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImFycmF5XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9hcnJheSB4MSA9IFNoYXBlLmJpbl9zaGFwZV9hcnJheSB4MVxuXG5sZXQgYmluX2FycmF5IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYXJyYXkgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9hcnJheSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9hcnJheSBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcImhhc2h0YmxcIiAqKVxubGV0IGJpbl93cml0ZXJfaGFzaHRibCBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibCBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX2hhc2h0YmwgeDEgeDJcblxubGV0IGJpbl9oYXNodGJsIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaGFzaHRibCBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2hhc2h0YmwgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2hhc2h0YmwgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDMyX3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQzMl92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG5cbmxldCBiaW5fZmxvYXQzMl92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDMyX3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDY0X3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ2NF92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fZmxvYXQ2NF92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDY0X3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJ2ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfdmVjID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3ZlYyB9XG5sZXQgYmluX3JlYWRlcl92ZWMgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidmVjXCIgfVxubGV0IGJpbl9zaGFwZV92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3ZlYyA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdmVjOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3ZlYzsgcmVhZGVyID0gYmluX3JlYWRlcl92ZWMgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0MzJfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDMyX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcblxubGV0IGJpbl9mbG9hdDMyX21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQzMl9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDMyX21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0NjRfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDY0X21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDY0X21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm1hdFwiICopXG5sZXQgYmluX3dyaXRlcl9tYXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbWF0IH1cbmxldCBiaW5fcmVhZGVyX21hdCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiB9XG5sZXQgYmluX3NoYXBlX21hdCA9IFNoYXBlLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fbWF0ID0geyBzaGFwZSA9IGJpbl9zaGFwZV9tYXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfbWF0OyByZWFkZXIgPSBiaW5fcmVhZGVyX21hdCB9XG5cbigqJCBta19iYXNlIFwiYmlnc3RyaW5nXCIgKilcbmxldCBiaW5fd3JpdGVyX2JpZ3N0cmluZyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYmlnc3RyaW5nOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmcgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfYmlnc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX2JpZ3N0cmluZ1xuXG5sZXQgYmluX2JpZ3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYmlnc3RyaW5nXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9iaWdzdHJpbmdcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2JpZ3N0cmluZ1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0YXJyYXlcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXRhcnJheTsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheSB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0YXJyYXlcblxubGV0IGJpbl9mbG9hdGFycmF5ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdGFycmF5XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdGFycmF5XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdGFycmF5XG4gIH1cbjs7XG5cbigqJCopXG5cbigqJCBta19iYXNlIFwidmFyaWFudF9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfdmFyaWFudF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX3ZhcmlhbnRfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV92YXJpYW50X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl92YXJpYW50X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdmFyaWFudF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInZhcmlhbnRfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV92YXJpYW50X2ludCA9IFNoYXBlLmJpbl9zaGFwZV92YXJpYW50X2ludFxuXG5sZXQgYmluX3ZhcmlhbnRfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV92YXJpYW50X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdmFyaWFudF9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3ZhcmlhbnRfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzhiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzhiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF84Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfOGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfOGJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzhiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF84Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfOGJpdFxuXG5sZXQgYmluX2ludF84Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfOGJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzhiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF84Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzE2Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF8xNmJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzE2Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfMTZiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzE2Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfMTZiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF8xNmJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzE2Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF8xNmJpdFxuXG5sZXQgYmluX2ludF8xNmJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzE2Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfMTZiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF8xNmJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF8zMmJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfMzJiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF8zMmJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzMyYml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF8zMmJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzMyYml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfMzJiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF8zMmJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfMzJiaXRcblxubGV0IGJpbl9pbnRfMzJiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF8zMmJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzMyYml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfMzJiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfNjRiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzY0Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfNjRiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfNjRiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF82NGJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzY0Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfNjRiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzY0Yml0XG5cbmxldCBiaW5faW50XzY0Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfNjRiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF82NGJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzY0Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50NjRfYml0c1wiICopXG5sZXQgYmluX3dyaXRlcl9pbnQ2NF9iaXRzID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NF9iaXRzOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NF9iaXRzIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludDY0X2JpdHMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDY0X2JpdHM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0X2JpdHNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBTaGFwZS5iaW5fc2hhcGVfaW50NjRfYml0c1xuXG5sZXQgYmluX2ludDY0X2JpdHMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDY0X2JpdHNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDY0X2JpdHNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDY0X2JpdHNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMTZfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmsxNl9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmsxNl9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazE2X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazE2X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazE2X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMTZfaW50XG5cbmxldCBiaW5fbmV0d29yazE2X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazE2X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazE2X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmszMl9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazMyX2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazMyX2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmszMl9pbnRcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazMyX2ludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDMyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMzJfaW50MzIgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50MzJcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50MzJcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzJcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMlxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrNjRfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcms2NF9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrNjRfaW50XG5cbmxldCBiaW5fbmV0d29yazY0X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazY0X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazY0X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcms2NF9pbnQ2NFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDY0XG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludDY0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazY0X2ludDY0XG5cbmxldCBiaW5fbmV0d29yazY0X2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0XG4gIH1cbjs7XG5cbigqJCopXG5cbigqIENvbnZlcnNpb24gb2YgYmluYWJsZSB0eXBlcyAqKVxuXG5sZXQgY252X3dyaXRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gdHBfY2xhc3Muc2l6ZSAoY252IHYpKVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IHRwX2NsYXNzLndyaXRlIGJ1ZiB+cG9zIChjbnYgdikpXG4gIH1cbjs7XG5cbmxldCBjbnZfcmVhZGVyIGNudiB0cF9jbGFzcyA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGNudiAodHBfY2xhc3MucmVhZCBidWYgfnBvc19yZWYpKVxuICA7IHZ0YWdfcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIHZ0YWcgLT4gY252ICh0cF9jbGFzcy52dGFnX3JlYWQgYnVmIH5wb3NfcmVmIHZ0YWcpKVxuICB9XG47O1xuXG5sZXQgY252IGZvcl9zaGFwZSBmb3Jfd3JpdGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MgPVxuICB7IHNoYXBlID0gZm9yX3NoYXBlIHRwX2NsYXNzLnNoYXBlXG4gIDsgd3JpdGVyID0gY252X3dyaXRlciBmb3Jfd3JpdGVyIHRwX2NsYXNzLndyaXRlclxuICA7IHJlYWRlciA9IGNudl9yZWFkZXIgZm9yX3JlYWRlciB0cF9jbGFzcy5yZWFkZXJcbiAgfVxuOztcbiIsIigqIEJpbmFibGU6IHNpZ25hdHVyZXMgZGVmaW5pbmcgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBmb3IgdGhlIGJpbmFyeSBwcm90b2NvbC5cbiAgIFtTLCBTMSwgZXRjXSBhcmUgdGhlIHNpZ25hdHVyZXMgc2F0aXNmaWVkIGJ5IHRoZSBnZW5lcmF0ZWQgY29kZSBhbmRcbiAgIFtNaW5pbWFsLlMsIE1pbmltYWwuUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHRoYXQgZ2VuZXJhdGVkIGNvZGUgdXNlcy4gKilcblxuKCogdGhlIHN1YnNldCBvZiBTIGNvbnRhaW5pbmcgb25seSBmdW5jdGlvbnMsIHNvIHRoYXQgb25lIGNhbiByZWN1cnNpdmVseSBkZWZpbmUgbW9kdWxlc1xuICAgaW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlICopXG5tb2R1bGUgdHlwZSBTX29ubHlfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfdCA6IHQgV3JpdGUud3JpdGVyXG4gIHZhbCBiaW5fcmVhZF90IDogdCBSZWFkLnJlYWRlclxuXG4gICgqKlxuICAgICBUaGlzIGZ1bmN0aW9uIG9ubHkgbmVlZHMgaW1wbGVtZW50YXRpb24gaWYgW3RdIGV4cG9zZWQgdG8gYmUgYSBwb2x5bW9ycGhpYyB2YXJpYW50LlxuICAgICBEZXNwaXRlIHdoYXQgdGhlIHR5cGUgcmVhZHMsIHRoaXMgZG9lcyAqbm90KiBwcm9kdWNlIGEgZnVuY3Rpb24gYWZ0ZXIgcmVhZGluZztcbiAgICAgaW5zdGVhZCBpdCB0YWtlcyB0aGUgY29uc3RydWN0b3IgdGFnIChpbnQpIGJlZm9yZSByZWFkaW5nIGFuZCByZWFkcyB0aGUgcmVzdCBvZiB0aGVcbiAgICAgdmFyaWFudCBbdF0gYWZ0ZXJ3YXJkcy5cbiAgKilcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKGludCAtPiB0KSBSZWFkLnJlYWRlclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBTX29ubHlfZnVuY3Rpb25zIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gIHZhbCBiaW5fd3JpdGVyX3QgOiB0IFR5cGVfY2xhc3Mud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiB0IFR5cGVfY2xhc3MucmVhZGVyXG4gIHZhbCBiaW5fdCA6IHQgVHlwZV9jbGFzcy50XG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYSB0KSBTaXplLnNpemVyMVxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdhIHQpIFJlYWQucmVhZGVyMVxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsIGludCAtPiAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFNpemUuc2l6ZXIyXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFdyaXRlLndyaXRlcjJcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgaW50IC0+ICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFdyaXRlLndyaXRlcjNcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLnRcbmVuZFxuXG5tb2R1bGUgTWluaW1hbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiB0IFNpemUuc2l6ZXJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICAgIHZhbCBiaW5fcmVhZF90IDogdCBSZWFkLnJlYWRlclxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYSB0KSBTaXplLnNpemVyMVxuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2EgdCkgV3JpdGUud3JpdGVyMVxuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsIGludCAtPiAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFdyaXRlLndyaXRlcjJcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFNpemUuc2l6ZXIzXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsICdjLCBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICBlbmRcbmVuZFxuIiwiKCogVXRpbHM6IHV0aWxpdHkgZnVuY3Rpb25zIGZvciB1c2VyIGNvbnZlbmllbmNlICopXG5cbm9wZW4gQ29tbW9uXG5vcGVuIFNpemVcbm9wZW4gVHlwZV9jbGFzc1xuaW5jbHVkZSBVdGlsc19pbnRmXG5cbmxldCBzaXplX2hlYWRlcl9sZW5ndGggPSA4XG5sZXQgYmluX3dyaXRlX3NpemVfaGVhZGVyID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdFxubGV0IGJpbl9yZWFkX3NpemVfaGVhZGVyID0gUmVhZC5iaW5fcmVhZF9pbnRfNjRiaXRcblxubGV0IGJpbl9kdW1wID8oaGVhZGVyID0gZmFsc2UpIHdyaXRlciB2ID1cbiAgbGV0IGJ1ZiwgcG9zLCBwb3NfbGVuID1cbiAgICBsZXQgdl9sZW4gPSB3cml0ZXIuc2l6ZSB2IGluXG4gICAgaWYgaGVhZGVyXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdG90X2xlbiA9IHZfbGVuICsgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB0b3RfbGVuIGluXG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zOjAgdl9sZW4gaW5cbiAgICAgIGJ1ZiwgcG9zLCBwb3MgKyB2X2xlbilcbiAgICBlbHNlIChcbiAgICAgIGxldCBidWYgPSBjcmVhdGVfYnVmIHZfbGVuIGluXG4gICAgICBidWYsIDAsIHZfbGVuKVxuICBpblxuICBsZXQgcG9zID0gd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYgaW5cbiAgaWYgcG9zID0gcG9zX2xlblxuICB0aGVuIGJ1ZlxuICBlbHNlIGZhaWx3aXRoIFwiQmluX3Byb3QuVXRpbHMuYmluX2R1bXA6IHNpemUgY2hhbmdlZCBkdXJpbmcgd3JpdGluZ1wiXG47O1xuXG4oKiBSZWFkaW5nIGZyb20gc3RyZWFtcyAqKVxuXG5sZXQgYmluX3JlYWRfc3RyZWFtID9tYXhfc2l6ZSB+cmVhZCByZWFkZXIgPVxuICBsZXQgYnVmID0gY3JlYXRlX2J1ZiBzaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgcmVhZCBidWYgfnBvczowIH5sZW46c2l6ZV9oZWFkZXJfbGVuZ3RoO1xuICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gIGxldCBsZW4gPSBiaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgbWF0Y2ggbWF4X3NpemUgd2l0aFxuICB8IFNvbWUgbWF4X3NpemUgd2hlbiBsZW4gPiBtYXhfc2l6ZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc3RyZWFtOiBzaXplIGV4Y2VlZHMgbWF4X3NpemU6ICVkID4gJWRcIlxuICAgICAgICAgbGVuXG4gICAgICAgICBtYXhfc2l6ZSlcbiAgfCBfIC0+XG4gICAgbGV0IGJ1ZiA9IGlmIGxlbiA+IHNpemVfaGVhZGVyX2xlbmd0aCB0aGVuIGNyZWF0ZV9idWYgbGVuIGVsc2UgYnVmIGluXG4gICAgcmVhZCBidWYgfnBvczowIH5sZW47XG4gICAgcG9zX3JlZiA6PSAwO1xuICAgIGxldCByZXMgPSByZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBpZiAhcG9zX3JlZiA9IGxlblxuICAgIHRoZW4gcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbXNnID1cbiAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogcHJvdG9jb2wgbGllZCBhYm91dCBsZW5ndGggb2YgdmFsdWU6IGV4cGVjdGVkIFxcXG4gICAgICAgICAgICVkLCByZWNlaXZlZCAlZFwiXG4gICAgICAgICAgbGVuXG4gICAgICAgICAgIXBvc19yZWZcbiAgICAgIGluXG4gICAgICBmYWlsd2l0aCBtc2cpXG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubW9kdWxlIE9mX21pbmltYWwgKFMgOiBCaW5hYmxlLk1pbmltYWwuUykgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gUy50ID0gc3RydWN0XG4gIGluY2x1ZGUgU1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgPSB7IHNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgcmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgbGV0IGJpbl90ID0geyBzaGFwZSA9IGJpbl9zaGFwZV90OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3Q7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB9XG5lbmRcblxubGV0IG1heWJlX2Fubm90YXRlX3NoYXBlIG1heWJlX3V1aWQgc2hhcGUgPVxuICBtYXRjaCBtYXliZV91dWlkIHdpdGhcbiAgfCBOb25lIC0+IHNoYXBlXG4gIHwgU29tZSB1dWlkIC0+IFNoYXBlLmFubm90YXRlIHV1aWQgc2hhcGVcbjs7XG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgT2ZfbWluaW1hbCAoc3RydWN0XG4gICAgICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gICAgICB0eXBlIHQgPSBTLnRcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gbWF5YmVfYW5ub3RhdGVfc2hhcGUgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHkgQi5iaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IEIuYmluX3NpemVfdCAoUy50b19iaW5hYmxlIHQpXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9IEIuYmluX3dyaXRlX3QgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID0gUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmKVxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIGJ1ZiB+cG9zX3JlZiBuID0gUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbCA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGUgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHkgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsIHQgPSBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwgKFMudG9fYmluYWJsZSB0KVxuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTEuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzcy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzcy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlXG4gICAgICBTLm1heWJlX2NhbGxlcl9pZGVudGl0eVxuICAgICAgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgdCA9XG4gICAgQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMi5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM19nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiBiaW5fc2hhcGVfZWwzID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiBiaW5fc2hhcGVfZWwzKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgYmluX3NpemVfZWwzIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJpbl93cml0ZV9lbDMgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgdHlwZV9jbGFzczMgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZSB0eXBlX2NsYXNzMy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXIgdHlwZV9jbGFzczMud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlciB0eXBlX2NsYXNzMy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGVfd2l0aF91dWlkX3NwZWMpID0gTWFrZV9iaW5hYmxlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTFfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUyX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTJfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlM193aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUzX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5sZXQgd2l0aF9tb2R1bGVfbmFtZSBmIH5tb2R1bGVfbmFtZSBmdW5jdGlvbl9uYW1lID1cbiAgbWF0Y2ggbW9kdWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gZiBmdW5jdGlvbl9uYW1lXG4gIHwgU29tZSBtb2R1bGVfbmFtZSAtPiBQcmludGYua3NwcmludGYgZiBcIiVzLiVzXCIgbW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uID0gd2l0aF9tb2R1bGVfbmFtZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvblxuXG5sZXQgcmFpc2VfcmVhZF90b29fbXVjaCA9XG4gIHdpdGhfbW9kdWxlX25hbWVcbiAgICAoUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoIFwiJXM6IHRyaWVkIHRvIHJlYWQgbW9yZSBlbGVtZW50cyB0aGFuIGF2YWlsYWJsZVwiKVxuOztcblxubGV0IHJhaXNlX3JlYWRfbm90X2Vub3VnaCA9XG4gIHdpdGhfbW9kdWxlX25hbWUgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiBkaWRuJ3QgcmVhZCBhbGwgZWxlbWVudHNcIilcbjs7XG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGVfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiNjU5MjM3MWEtNDk5NC0xMWU2LTkyM2EtNzc0OGU0MTgyNzY0XCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlMV9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImFjOGE5ZmY0LTQ5OTQtMTFlNi05YTFiLTlmYjRlOTMzYmQ5ZFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0IF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYnVmIH5wb3NfcmVmIF9uID0gcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyLnNpemUgdilcbiAgICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyID1cbiAgICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiBfbiAtPiBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIF9uKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlMl9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdDEgdDIgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJiNGU1NGFkMi00OTk0LTExZTYtYjhkZi04N2MyOTk3ZjlmNTJcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdDEgdDIgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYmluX3NpemVfYiB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2Jpbl9yZWFkX2IgX2J1ZiB+cG9zX3JlZiBfbiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiBuIC0+XG4gICAgICAgICAgIF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYgbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMyAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTNfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyIHQzID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiZjIxMTJlZGEtZTdkNy0xMWU2LWJiMzYtMDcyZTljZTE1OWRiXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIHQzIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2Jpbl9yZWFkX2IgX2Jpbl9yZWFkX2MgX2J1ZiB+cG9zX3JlZiBfbiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiBiaW5fd3JpdGVyMyA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIGJpbl93cml0ZXIzLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAgIGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJpbl93cml0ZXIzLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgYmluX3JlYWRlcjMgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICAgIGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYgbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG4iLCIoKipcbiAgIFRoaXMgbW9kdWxlIGRlZmluZXMgZGVmYXVsdCBjb252ZXJ0ZXJzIGZvciB0aGUgdHlwZXMgZGVmaW5lZCBpbiB0aGUgT0NhbWxcbiAgIHN0YW5kYXJkIGxpYnJhcnkuXG4qKVxuXG5pbmNsdWRlIFNpemVcblxubGV0IGJpbl91bml0ID0gVHlwZV9jbGFzcy5iaW5fdW5pdFxubGV0IGJpbl9zaGFwZV91bml0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfdW5pdFxubGV0IGJpbl93cml0ZXJfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl91bml0XG5sZXQgYmluX3dyaXRlX3VuaXQgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdFxubGV0IGJpbl9yZWFkZXJfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl91bml0XG5sZXQgYmluX3JlYWRfdW5pdCA9IFJlYWQuYmluX3JlYWRfdW5pdFxuXG5sZXQgX19iaW5fcmVhZF91bml0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYm9vbCA9IFR5cGVfY2xhc3MuYmluX2Jvb2xcbmxldCBiaW5fc2hhcGVfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Jvb2xcbmxldCBiaW5fd3JpdGVyX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYm9vbFxubGV0IGJpbl93cml0ZV9ib29sID0gV3JpdGUuYmluX3dyaXRlX2Jvb2xcbmxldCBiaW5fcmVhZGVyX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYm9vbFxubGV0IGJpbl9yZWFkX2Jvb2wgPSBSZWFkLmJpbl9yZWFkX2Jvb2xcblxubGV0IF9fYmluX3JlYWRfYm9vbF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYm9vbFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3N0cmluZ1xubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9zdHJpbmdcbmxldCBiaW5fd3JpdGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9zdHJpbmdcbmxldCBiaW5fd3JpdGVfc3RyaW5nID0gV3JpdGUuYmluX3dyaXRlX3N0cmluZ1xubGV0IGJpbl9yZWFkZXJfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3N0cmluZ1xubGV0IGJpbl9yZWFkX3N0cmluZyA9IFJlYWQuYmluX3JlYWRfc3RyaW5nXG5cbmxldCBfX2Jpbl9yZWFkX3N0cmluZ19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwic3RyaW5nXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9ieXRlc1xubGV0IGJpbl9zaGFwZV9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2J5dGVzXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9ieXRlc1xubGV0IGJpbl93cml0ZV9ieXRlcyA9IFdyaXRlLmJpbl93cml0ZV9ieXRlc1xubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYnl0ZXNcbmxldCBiaW5fcmVhZF9ieXRlcyA9IFJlYWQuYmluX3JlYWRfYnl0ZXNcblxubGV0IF9fYmluX3JlYWRfYnl0ZXNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJ5dGVzXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fY2hhciA9IFR5cGVfY2xhc3MuYmluX2NoYXJcbmxldCBiaW5fc2hhcGVfY2hhciA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2NoYXJcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfY2hhclxubGV0IGJpbl93cml0ZV9jaGFyID0gV3JpdGUuYmluX3dyaXRlX2NoYXJcbmxldCBiaW5fcmVhZGVyX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfY2hhclxubGV0IGJpbl9yZWFkX2NoYXIgPSBSZWFkLmJpbl9yZWFkX2NoYXJcblxubGV0IF9fYmluX3JlYWRfY2hhcl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2ludCA9IFR5cGVfY2xhc3MuYmluX2ludFxubGV0IGJpbl9zaGFwZV9pbnQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9pbnRcbmxldCBiaW5fd3JpdGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnRcbmxldCBiaW5fd3JpdGVfaW50ID0gV3JpdGUuYmluX3dyaXRlX2ludFxubGV0IGJpbl9yZWFkZXJfaW50ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2ludFxubGV0IGJpbl9yZWFkX2ludCA9IFJlYWQuYmluX3JlYWRfaW50XG5sZXQgX19iaW5fcmVhZF9pbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0XG5sZXQgYmluX3JlYWRfZmxvYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdGFycmF5XG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlcl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0YXJyYXlcbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0YXJyYXlcbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5ID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0YXJyYXlfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0YXJyYXlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX2ludDMyXG5sZXQgYmluX3NoYXBlX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50MzJcbmxldCBiaW5fd3JpdGVyX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDMyXG5sZXQgYmluX3dyaXRlX2ludDMyID0gV3JpdGUuYmluX3dyaXRlX2ludDMyXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQzMlxubGV0IGJpbl9yZWFkX2ludDMyID0gUmVhZC5iaW5fcmVhZF9pbnQzMlxuXG5sZXQgX19iaW5fcmVhZF9pbnQzMl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX2ludDY0XG5sZXQgYmluX3NoYXBlX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50NjRcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDY0XG5sZXQgYmluX3dyaXRlX2ludDY0ID0gV3JpdGUuYmluX3dyaXRlX2ludDY0XG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQ2NFxubGV0IGJpbl9yZWFkX2ludDY0ID0gUmVhZC5iaW5fcmVhZF9pbnQ2NFxuXG5sZXQgX19iaW5fcmVhZF9pbnQ2NF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9uYXRpdmVpbnRcbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludFxuXG5sZXQgX19iaW5fcmVhZF9uYXRpdmVpbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlZlxubGV0IGJpbl9zaGFwZV9yZWYgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9yZWZcbmxldCBiaW5fd3JpdGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9yZWZcbmxldCBiaW5fd3JpdGVfcmVmID0gV3JpdGUuYmluX3dyaXRlX3JlZlxubGV0IGJpbl9yZWFkZXJfcmVmID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3JlZlxubGV0IGJpbl9yZWFkX3JlZiA9IFJlYWQuYmluX3JlYWRfcmVmXG5cbmxldCBfX2Jpbl9yZWFkX3JlZl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fbGF6eVxubGV0IGJpbl9zaGFwZV9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5X3QgPSBXcml0ZS5iaW5fd3JpdGVfbGF6eVxubGV0IGJpbl9yZWFkZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5X3QgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV90X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eSA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xhenlcbmxldCBiaW5fd3JpdGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGF6eVxubGV0IGJpbl9yZWFkX2xhenkgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX29wdGlvblxubGV0IGJpbl9zaGFwZV9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9vcHRpb25cbmxldCBiaW5fd3JpdGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9vcHRpb25cbmxldCBiaW5fd3JpdGVfb3B0aW9uID0gV3JpdGUuYmluX3dyaXRlX29wdGlvblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX29wdGlvblxubGV0IGJpbl9yZWFkX29wdGlvbiA9IFJlYWQuYmluX3JlYWRfb3B0aW9uXG5cbmxldCBfX2Jpbl9yZWFkX29wdGlvbl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGlzdCA9IFR5cGVfY2xhc3MuYmluX2xpc3RcbmxldCBiaW5fc2hhcGVfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xpc3RcbmxldCBiaW5fd3JpdGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGlzdFxubGV0IGJpbl93cml0ZV9saXN0ID0gV3JpdGUuYmluX3dyaXRlX2xpc3RcbmxldCBiaW5fcmVhZGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGlzdFxubGV0IGJpbl9yZWFkX2xpc3QgPSBSZWFkLmJpbl9yZWFkX2xpc3RcblxubGV0IF9fYmluX3JlYWRfbGlzdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fYXJyYXlcbmxldCBiaW5fc2hhcGVfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9hcnJheVxubGV0IGJpbl93cml0ZXJfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYXJyYXlcbmxldCBiaW5fd3JpdGVfYXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfYXJyYXlcbmxldCBiaW5fcmVhZGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2FycmF5XG5sZXQgYmluX3JlYWRfYXJyYXkgPSBSZWFkLmJpbl9yZWFkX2FycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2FycmF5X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9oYXNodGJsXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9oYXNodGJsXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2hhc2h0YmxcbmxldCBiaW5fd3JpdGVfaGFzaHRibCA9IFdyaXRlLmJpbl93cml0ZV9oYXNodGJsXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2hhc2h0YmxcbmxldCBiaW5fcmVhZF9oYXNodGJsID0gUmVhZC5iaW5fcmVhZF9oYXNodGJsXG5cbmxldCBfX2Jpbl9yZWFkX2hhc2h0YmxfXyBfZiBfZyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9iaWdzdHJpbmdcbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlX2JpZ3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZF9iaWdzdHJpbmcgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9iaWdzdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX21hdCA9IFR5cGVfY2xhc3MuYmluX21hdFxubGV0IGJpbl9zaGFwZV9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fd3JpdGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9tYXRcbmxldCBiaW5fd3JpdGVfbWF0ID0gV3JpdGUuYmluX3dyaXRlX21hdFxubGV0IGJpbl9yZWFkZXJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX21hdFxubGV0IGJpbl9yZWFkX21hdCA9IFJlYWQuYmluX3JlYWRfbWF0XG5sZXQgX19iaW5fcmVhZF9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQzMl9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3ZlY1xubGV0IGJpbl9zaGFwZV92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl92ZWNcbmxldCBiaW5fd3JpdGVfdmVjID0gV3JpdGUuYmluX3dyaXRlX3ZlY1xubGV0IGJpbl9yZWFkZXJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3ZlY1xubGV0IGJpbl9yZWFkX3ZlYyA9IFJlYWQuYmluX3JlYWRfdmVjXG5sZXQgX19iaW5fcmVhZF92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiICFwb3NfcmVmXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1kNV9saWJcblxuICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICBTaGFwZS5iYXNldHlwZSAoU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJmNmJkY2RkMC05Zjc1LTExZTYtOWE3ZS1kMzAyMDQyOGVmZWRcIikgW11cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX3QgPSBTaXplLmJpbl9zaXplX21kNVxuICAgIGxldCBiaW5fd3JpdGVfdCA9IFdyaXRlLmJpbl93cml0ZV9tZDVcbiAgICBsZXQgYmluX3JlYWRfdCA9IFJlYWQuYmluX3JlYWRfbWQ1XG5cbiAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfdmRpZ2VzdCA9XG4gICAgICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiU2hhcGUuTWQ1LnRcIiAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgKCogd2UgYXNzdW1lIHRoaXMgdHlwZSB0byBoYXZlIGEgc3RhYmxlIGZvcm1hdCAqKVxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG4iLCJvcGVuIENvbW1vblxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBiaW5fc2hhcGVfdCB0ID1cbiAgICBTaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiODVhMjU1N2UtNDkwYS0xMWU2LTk4YWMtNGI4OTUzZDUyNWZlXCIpIFsgdCBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYSA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJpbl9zaXplX2EgYVxuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBidWYgfnBvcyBhID1cbiAgICBsZXQgc3RhcnRfYSA9IHBvcyArIFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgIGxldCBlbmRfYSA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zOnN0YXJ0X2EgYSBpblxuICAgIGxldCBzaXplID0gZW5kX2EgLSBzdGFydF9hIGluXG4gICAgbGV0IHdyaXR0ZW4gPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgIGFzc2VydCAod3JpdHRlbiA9IHN0YXJ0X2EpO1xuICAgIGVuZF9hXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBleHBlY3RlZF9zaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IHN0YXJ0X2EgPSAhcG9zX3JlZiBpblxuICAgIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgZW5kX2EgPSAhcG9zX3JlZiBpblxuICAgIGlmIGVuZF9hIC0gc3RhcnRfYSA8PiBleHBlY3RlZF9zaXplXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgIFwiQmluX3Byb3QuQmxvYi5iaW5fcmVhZF90OiBzaXplICglZCkgPD4gZXhwZWN0ZWQgKCVkKVwiXG4gICAgICAgICAgIChlbmRfYSAtIHN0YXJ0X2EpXG4gICAgICAgICAgIGV4cGVjdGVkX3NpemUpO1xuICAgIGFcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyBfIH5wb3NfcmVmID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLnRcIiAhcG9zX3JlZlxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgaWQgPSAnYVxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBVdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgbW9kdWxlIEJpbmFibGUgPSBUXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBvZl9iaW5hYmxlIHQgPSB0XG4gICAgbGV0IHRvX2JpbmFibGUgdCA9IHRcbiAgZW5kKVxuXG5tb2R1bGUgT3BhcXVlID0gc3RydWN0XG4gICgqIFtCaWdzdHJpbmddIGFuZCBbU3RyaW5nXSBzaGFyZSBbYmluX3NoYXBlX3RdIGJlY2F1c2UgdGhleSBoYXZlIGV4YWN0bHkgdGhlIHNhbWVcbiAgICAgc2VyaWFsaXphdGlvbiBmb3JtYXQgYW5kIHRoZXkgZGVub3RlIHRoZSBzYW1lIHZhbHVlcy5cblxuICAgICBJbiBmYWN0IGFsbW9zdCBjZXJ0YWlubHkgW0Jsb2IudF0gaXRzZWxmIHNob3VsZCBoYXZlIHRoZSBzYW1lIGJpbl9zaGFwZV90IGFzIHdlbGwuICopXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTFmNzZlLTQ5MGEtMTFlNi04NmE5LTViZWY1ODVmMjYwMlwiKSBbXSlcbiAgOztcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgKCogW2J1Zl0gaXMgdGhlIGJpbi1pbyBkYXRhIGV4Y2x1ZGluZyB0aGUgc2l6ZSBoZWFkZXIuIFdoZW4gKGRlLSlzZXJpYWxpemVkLCB0aGUgc2l6ZVxuICAgICAgIGhlYWRlciBpcyBpbmNsdWRlZC4gKilcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYnVmXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IGJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgYnVmX2xlbiB0XG5cbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgbGV0IHNpemUgPSBidWZfbGVuIHQgaW5cbiAgICAgICAgbGV0IHBvcyA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgICAgIGJsaXRfYnVmIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyBzaXplO1xuICAgICAgICBwb3MgKyBzaXplXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBsZXQgdCA9IGNyZWF0ZV9idWYgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3BvczohcG9zX3JlZiB+ZHN0OnQgfmRzdF9wb3M6MCBzaXplO1xuICAgICAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgc2l6ZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLk9wYXF1ZS50XCIgIXBvc19yZWZcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFV0aWxzLk9mX21pbmltYWwgKFQpXG5cbiAgICBsZXQgdG9fb3BhcXVlIGJsb2IgYmluX3dyaXRlciA9IFV0aWxzLmJpbl9kdW1wIGJpbl93cml0ZXIgYmxvYlxuICAgIGxldCBvZl9vcGFxdWVfZXhuICh0IDogdCkgYmluX3JlYWRlciA9IGJpbl9yZWFkZXIuVHlwZV9jbGFzcy5yZWFkIHQgfnBvc19yZWY6KHJlZiAwKVxuXG4gICAgKCogQmlnc3RyaW5ncyBhcmUgYSBwcmltaXRpdmUgdHlwZSB0aGF0IHBvbHltb3JwaGljIGNvbXBhcmUgaGFuZGxlcyB3ZWxsLiAqKVxuICAgIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogYnVmIC0+IGJ1ZiAtPiBpbnQpXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgUHB4X3NleHBfY29udl9saWIuU2V4cC5BdG9tIChvZl9vcGFxdWVfZXhuIHQgVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3N0cmluZylcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIFN0cmluZy5sZW5ndGggdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBDb21tb24uYmxpdF9zdHJpbmdfYnVmIHQgfnNyY19wb3M6MCBidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgIGJsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgIGxldCBsZW4gPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zOiFwb3NfcmVmIH5sZW4gaW5cbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIGxlbjtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLk9wYXF1ZS50XCIgIXBvc19yZWZcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFV0aWxzLk9mX21pbmltYWwgKFQpXG5cbiAgICBsZXQgbGVuZ3RoIHQgPSBTdHJpbmcubGVuZ3RoIHRcblxuICAgIGxldCB0b19vcGFxdWUgfmJ1ZiB2IGJpbl93cml0ZXJfdiA6IHQgPVxuICAgICAgbGV0IHBvcyA9IDAgaW5cbiAgICAgIGxldCBsZW4gPSBiaW5fd3JpdGVyX3YuVHlwZV9jbGFzcy53cml0ZSBidWYgfnBvcyB2IGluXG4gICAgICBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IG9mX29wYXF1ZV9leG4gfmJ1ZiAodCA6IHQpIGJpbl9yZWFkZXJfdiA9XG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gICAgICBDb21tb24uYmxpdF9zdHJpbmdfYnVmIHQgYnVmIH5sZW47XG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVzID0gYmluX3JlYWRlcl92LlR5cGVfY2xhc3MucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgIGlmICFwb3NfcmVmIDw+IGxlblxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgIFwiT3BhcXVlIGJsb2IgaGFzICVkIGJ5dGVzIGJ1dCBbb2Zfb3BhcXVlX2V4bl0gcmVhZCAlZFwiXG4gICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICFwb3NfcmVmXG4gICAgICAgIGluXG4gICAgICAgIGZhaWx3aXRoIGVycm9yKVxuICAgICAgZWxzZSByZXNcbiAgICA7O1xuXG4gICAgKCogU3RyaW5ncyBhcmUgYSBwcmltaXRpdmUgdHlwZSB0aGF0IHBvbHltb3JwaGljIGNvbXBhcmUgaGFuZGxlcyB3ZWxsLiAqKVxuICAgIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBpbnQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IFBweF9zZXhwX2NvbnZfbGliLkNvbnYuc2V4cF9vZl9zdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIElnbm9yZWQgPSBzdHJ1Y3RcbiAgKCogVGhlIHJlcHJlc2VudGF0aW9uIG9mIGFuIGlnbm9yZWQgdmFsdWUgaXMganVzdCB0aGUgc2l6ZSBvZiB0aGUgdmFsdWUgaXQgd2FzIGNyZWF0ZWRcbiAgICAgZnJvbSAoaS5lLiwgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdlcmUgaWdub3JlZCBmcm9tIHRoZSBidWZmZXIgd2Ugd2VyZSByZWFkaW5nXG4gICAgIC0tIHdlIGV4Y2x1ZGUgdGhlIDggYnl0ZSBzaXplIGhlYWRlciBmcm9tIHdoaWNoIHRoZSBzaXplIHdhcyByZWFkKS4gKilcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IGJpbl9zaXplX3Qgc2l6ZSA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIHNpemVcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBzaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgc2l6ZVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLklnbm9yZWQudFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuZW5kXG4iLCJtb2R1bGUgdHlwZSBTID0gc2lnXG4gIHZhbCBwcmVfdGVzdF9ob29rIDogdW5pdCAtPiB1bml0XG5lbmRcblxubGV0IHByZV90ZXN0X2hvb2sgPSBpZ25vcmVcbiIsIlslJWltcG9ydCBcImNvbmZpZy5oXCJdXG5cbm9wZW4hIEJhc2VcblxuWyUlaWZkZWYgSlNDX0FSQ0hfU0lYVFlGT1VSXVxuXG5leHRlcm5hbCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbiAgOiAgdW5pdFxuICAtPiBJbnQ2My50XG4gID0gXCJ0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cIlxuW0BAbm9hbGxvY11cblxuWyUlZWxzZV1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcblxuWyUlZW5kaWZdXG5bJSVpZmRlZiBKU0NfUE9TSVhfVElNRVJTXVxuXG5sZXRbQGNvbGRdIGdldHRpbWVfZmFpbGVkICgpID0gZmFpbHdpdGggXCJjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSBmYWlsZWRcIlxuXG5bJSVlbHNlXVxuXG5sZXRbQGNvbGRdIGdldHRpbWVfZmFpbGVkICgpID0gZmFpbHdpdGggXCJnZXR0aW1lb2ZkYXkgZmFpbGVkXCJcblxuWyUlZW5kaWZdXG5cbmxldCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpID1cbiAgbGV0IHQgPSBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm8gKCkgaW5cbiAgaWYgSW50NjMuKCA8PiApIHQgSW50NjMuemVybyB0aGVuIHQgZWxzZSBnZXR0aW1lX2ZhaWxlZCAoKVxuOztcbiIsIm1vZHVsZSBUZXN0X3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU3VjY2Vzc1xuICAgIHwgRmFpbHVyZVxuICAgIHwgRXJyb3JcblxuICBsZXQgdG9fZXhpdF9jb2RlID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gMFxuICAgIHwgRmFpbHVyZSAtPiAyXG4gICAgfCBFcnJvciAtPiAxXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdWNjZXNzIC0+IFwic3VjY2Vzc1wiXG4gICAgfCBGYWlsdXJlIC0+IFwiZmFpbHVyZVwiXG4gICAgfCBFcnJvciAtPiBcImVycm9yXCJcbiAgOztcblxuICBsZXQgY29tYmluZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFN1Y2Nlc3MsIFN1Y2Nlc3MgLT4gU3VjY2Vzc1xuICAgIHwgRXJyb3IsIF8gfCBfLCBFcnJvciAtPiBFcnJvclxuICAgIHwgRmFpbHVyZSwgXyB8IF8sIEZhaWx1cmUgLT4gRmFpbHVyZVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbCB0cyA9IExpc3QuZm9sZF9sZWZ0IGNvbWJpbmUgU3VjY2VzcyB0c1xuZW5kXG5cbmxldCBwYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZyA9XG4gIHRyeSBBcmcucGFyc2VfYXJndiBhcmd2IGwgZiBtc2cgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICBleGl0IDFcbiAgfCBBcmcuSGVscCBtc2cgLT5cbiAgICBQcmludGYucHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgZXhpdCAwXG47O1xuXG50eXBlIGRlc2NyID0gc3RyaW5nXG5cbmxldCB0ZXN0X21vZHVsZXNfcmFuID0gcmVmIDBcbmxldCB0ZXN0X21vZHVsZXNfZmFpbGVkID0gcmVmIDBcbmxldCB0ZXN0c19yYW4gPSByZWYgMFxubGV0IHRlc3RzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgZHluYW1pY19saWIgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG5cbnR5cGUgZmlsZW5hbWUgPSBzdHJpbmdcbnR5cGUgbGluZV9udW1iZXIgPSBpbnRcbnR5cGUgc3RhcnRfcG9zID0gaW50XG50eXBlIGVuZF9wb3MgPSBpbnRcbnR5cGUgY29uZmlnID0gKG1vZHVsZSBJbmxpbmVfdGVzdF9jb25maWcuUylcblxudHlwZSAnYSB0ZXN0X2Z1bmN0aW9uX2FyZ3MgPVxuICBjb25maWc6Y29uZmlnXG4gIC0+IGRlc2NyOmRlc2NyIExhenkudFxuICAtPiB0YWdzOnN0cmluZyBsaXN0XG4gIC0+IGZpbGVuYW1lOmZpbGVuYW1lXG4gIC0+IGxpbmVfbnVtYmVyOmxpbmVfbnVtYmVyXG4gIC0+IHN0YXJ0X3BvczpzdGFydF9wb3NcbiAgLT4gZW5kX3BvczplbmRfcG9zXG4gIC0+ICdhXG5cbm1vZHVsZSBUYWdfcHJlZGljYXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyByZXF1aXJlZF90YWdzIDogc3RyaW5nIGxpc3RcbiAgICA7IGRyb3BwZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgfVxuXG4gIGxldCBpbml0aWFsID0geyByZXF1aXJlZF90YWdzID0gW107IGRyb3BwZWRfdGFncyA9IFsgXCJkaXNhYmxlZFwiIF0gfVxuXG4gIGxldCBkcm9wIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IHRhZyA6OiB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IExpc3QuZmlsdGVyICgoIDw+ICkgdGFnKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlcXVpcmUgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gTGlzdC5maWx0ZXIgKCggPD4gKSB0YWcpIHQuZHJvcHBlZF90YWdzXG4gICAgOyByZXF1aXJlZF90YWdzID0gdGFnIDo6IHQucmVxdWlyZWRfdGFnc1xuICAgIH1cbiAgOztcblxuICBsZXQgZW50aXJlX21vZHVsZV9kaXNhYmxlZCB0IH5wYXJ0aWFsX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biBkcm9wcGVkIC0+IExpc3QubWVtIGRyb3BwZWQgdGFncykgdC5kcm9wcGVkX3RhZ3NcbiAgOztcblxuICBsZXQgZGlzYWJsZWQgdCB+Y29tcGxldGVfdGFnczp0YWdzID1cbiAgICBMaXN0LmV4aXN0cyAoZnVuIHJlcSAtPiBub3QgKExpc3QubWVtIHJlcSB0YWdzKSkgdC5yZXF1aXJlZF90YWdzXG4gICAgfHwgTGlzdC5leGlzdHMgKGZ1biBkcm9wcGVkIC0+IExpc3QubWVtIGRyb3BwZWQgdGFncykgdC5kcm9wcGVkX3RhZ3NcbiAgOztcbmVuZFxuXG50eXBlIHdoaWNoX3Rlc3RzID1cbiAgeyBsaWJuYW1lIDogc3RyaW5nXG4gIDsgb25seV90ZXN0X2xvY2F0aW9uIDogKGZpbGVuYW1lICogbGluZV9udW1iZXIgb3B0aW9uICogYm9vbCByZWYpIGxpc3RcbiAgOyBuYW1lX2ZpbHRlciA6IHN0cmluZyBsaXN0XG4gIDsgd2hpY2hfdGFncyA6IFRhZ19wcmVkaWNhdGUudFxuICB9XG5cbnR5cGUgdGVzdF9tb2RlID1cbiAgeyB3aGljaF90ZXN0cyA6IHdoaWNoX3Rlc3RzXG4gIDsgd2hhdF90b19kbyA6IFsgYFJ1bl9wYXJ0aXRpb24gb2Ygc3RyaW5nIG9wdGlvbiB8IGBMaXN0X3BhcnRpdGlvbnMgXVxuICB9XG5cbm1vZHVsZSBBY3Rpb24gOiBzaWdcbiAgdHlwZSB0ID1cbiAgICBbIGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gICAgXVxuXG4gIHZhbCBnZXQgOiB1bml0IC0+IHRcbiAgdmFsIHNldCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICAgIF1cblxuICBsZXQgYWN0aW9uIDogdCByZWYgPSByZWYgYElnbm9yZVxuXG4gIGxldCBmb3JjZV9kcm9wID1cbiAgICB0cnlcbiAgICAgIGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIiA6IHN0cmluZyk7XG4gICAgICB0cnVlXG4gICAgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGdldCAoKSA9XG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBjb21waWxpbmcgdG8gamF2YXNjcmlwdC5cbiAgICAgICBKc19vZl9vY2FtbCBjYW4gc3RhdGljYWxseSBldmFsdWF0ZSBbU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIl1cbiAgICAgICBhbmQgaW5saW5lIHRoZSByZXN1bHQgKFtgSWdub3JlXSkgd2hlbmV2ZXIgW2dldCAoKV0gaXMgY2FsbGVkLlxuICAgICAgIFVuaXQgdGVzdHMgY2FuIHRoZW4gYmUgdHJlYXRlZCBhcyBkZWFkY29kZSBzaW5jZSB0aGUgYXJndW1lbnQgW2ZdIG9mIHRoZSBbdGVzdF1cbiAgICAgICBmdW5jdGlvbiBiZWxvdyBpcyBuZXZlciB1c2VkLiAqKVxuICAgIGlmIGZvcmNlX2Ryb3AgdGhlbiBgSWdub3JlIGVsc2UgIWFjdGlvblxuICA7O1xuXG4gIGxldCBzZXQgdiA9IGFjdGlvbiA6PSB2XG5lbmRcblxubW9kdWxlIFBhcnRpdGlvbiA6IHNpZ1xuICB2YWwgZm91bmRfdGVzdCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgc2V0X2N1cnJlbnQgOiBzdHJpbmcgLT4gdW5pdFxuICB2YWwgaXNfY3VycmVudCA6IHN0cmluZyBvcHRpb24gLT4gYm9vbFxuICB2YWwgYWxsIDogdW5pdCAtPiBzdHJpbmcgbGlzdFxuZW5kID0gc3RydWN0XG4gIGxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSAyM1xuICBsZXQgY3VycmVudCA9IHJlZiBcIlwiXG4gIGxldCBzZXRfY3VycmVudCB4ID0gY3VycmVudCA6PSB4XG5cbiAgbGV0IGZvdW5kX3Rlc3QgKCkgPVxuICAgIGlmICFjdXJyZW50IDw+IFwiXCIgJiYgbm90IChIYXNodGJsLm1lbSBhbGwgIWN1cnJlbnQpIHRoZW4gSGFzaHRibC5hZGQgYWxsICFjdXJyZW50ICgpXG4gIDs7XG5cbiAgbGV0IGlzX2N1cnJlbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIHAgLT4gcCA9ICFjdXJyZW50XG4gIDs7XG5cbiAgbGV0IGFsbCAoKSA9IExpc3Quc29ydCBTdHJpbmcuY29tcGFyZSAoSGFzaHRibC5mb2xkIChmdW4gayAoKSBhY2MgLT4gayA6OiBhY2MpIGFsbCBbXSlcbmVuZFxuXG5tb2R1bGUgTW9kdWxlX2NvbnRleHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG9uZV9tb2R1bGUgPVxuICAgICAgeyBkZXNjciA6IHN0cmluZ1xuICAgICAgOyB0YWdzIDogc3RyaW5nIGxpc3RcbiAgICAgIH1cblxuICAgIHR5cGUgdCA9IG9uZV9tb2R1bGUgbGlzdFxuXG4gICAgbGV0IGRlc2NyIHQgPSBMaXN0Lm1hcCAoZnVuIG0gLT4gbS5kZXNjcikgdFxuICAgIGxldCB0YWdzIHQgPSBMaXN0LmNvbmNhdCAoTGlzdC5tYXAgKGZ1biBtIC0+IG0udGFncykgdClcbiAgZW5kXG5cbiAgbGV0IGN1cnJlbnQgOiBULnQgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHdpdGhfIH5kZXNjciB+dGFncyBmID1cbiAgICBsZXQgcHJldiA9ICFjdXJyZW50IGluXG4gICAgY3VycmVudCA6PSB7IFQuZGVzY3I7IHRhZ3MgfSA6OiBwcmV2O1xuICAgIHRyeVxuICAgICAgbGV0IHggPSBmICgpIGluXG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICB4XG4gICAgd2l0aFxuICAgIHwgZSAtPlxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgcmFpc2UgZVxuICA7O1xuXG4gIGxldCBjdXJyZW50X2Rlc2NyICgpID0gVC5kZXNjciAhY3VycmVudFxuICBsZXQgY3VycmVudF90YWdzICgpID0gVC50YWdzICFjdXJyZW50XG5lbmRcblxubGV0IHZlcmJvc2UgPSByZWYgZmFsc2VcbmxldCBzdHJpY3QgPSByZWYgZmFsc2VcbmxldCBzaG93X2NvdW50cyA9IHJlZiBmYWxzZVxubGV0IGxpc3RfdGVzdF9uYW1lcyA9IHJlZiBmYWxzZVxubGV0IGRlbGF5ZWRfZXJyb3JzID0gcmVmIFtdXG5sZXQgc3RvcF9vbl9lcnJvciA9IHJlZiBmYWxzZVxubGV0IGxvZyA9IHJlZiBOb25lXG5sZXQgdGltZV9zZWMgPSByZWYgMC5cbmxldCB1c2VfY29sb3IgPSByZWYgdHJ1ZVxubGV0IGluX3BsYWNlID0gcmVmIGZhbHNlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE5vbmVcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gcmVmIE5vbmVcbmxldCBkaWZmX3BhdGhfcHJlZml4ID0gcmVmIE5vbmVcblxubGV0IGRpc3BsYXllZF9kZXNjciBkZXNjciBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zID1cbiAgbGV0IChsYXp5IGRlc2NyKSA9IGRlc2NyIGluXG4gIFByaW50Zi5zcHJpbnRmXG4gICAgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkJXNcIlxuICAgIGZpbGVuYW1lXG4gICAgbGluZVxuICAgIHN0YXJ0X3Bvc1xuICAgIGVuZF9wb3NcbiAgICAoaWYgZGVzY3IgPSBcIlwiIHRoZW4gXCJcIiBlbHNlIFwiOiBcIiBeIGRlc2NyKVxuOztcblxubGV0IHBhcnNlX2Rlc2NyIHN0ciA9XG4gIHRyeVxuICAgIFNvbWVcbiAgICAgIChTY2FuZi5zc2NhbmZcbiAgICAgICAgIHN0clxuICAgICAgICAgXCIgRmlsZSAlUyAsIGxpbmUgJWQgLCBjaGFyYWN0ZXJzICVkIC0gJWQgJSFcIlxuICAgICAgICAgKGZ1biBmaWxlIGxpbmUgX3N0YXJ0X3BvcyBfZW5kX3BvcyAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoXG4gIHwgXyAtPlxuICAgICh0cnlcbiAgICAgICBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICUhXCIgKGZ1biBmaWxlIGxpbmUgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgICAgd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAlIVwiIChmdW4gZmlsZSAtPiBmaWxlLCBOb25lKSkgd2l0aFxuICAgICAgICB8IF8gLT4gTm9uZSkpXG47O1xuXG5sZXQgKCkgPVxuICBpZiBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLmFtX3Rlc3RpbmdcbiAgdGhlbiAoXG4gICAgbWF0Y2ggQXJyYXkudG9fbGlzdCBTeXMuYXJndiB3aXRoXG4gICAgfCBuYW1lIDo6IFwiaW5saW5lLXRlc3QtcnVubmVyXCIgOjogbGliIDo6IHJlc3QgLT5cbiAgICAgICgqIHdoZW4gd2Ugc2VlIHRoaXMgYXJndW1lbnQsIHdlIHN3aXRjaCB0byB0ZXN0IG1vZGUgKilcbiAgICAgIGxldCB0ZXN0cyA9IHJlZiBbXSBpblxuICAgICAgbGV0IGxpc3RfcGFydGl0aW9ucyA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IHBhcnRpdGlvbiA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgdGFnX3ByZWRpY2F0ZSA9IHJlZiBUYWdfcHJlZGljYXRlLmluaXRpYWwgaW5cbiAgICAgIGxldCBuYW1lX2ZpbHRlciA9IHJlZiBbXSBpblxuICAgICAgcGFyc2VfYXJndlxuICAgICAgICAoQXJyYXkub2ZfbGlzdCAobmFtZSA6OiByZXN0KSlcbiAgICAgICAgKEFyZy5hbGlnblxuICAgICAgICAgICBbICggXCItbGlzdC10ZXN0LW5hbWVzXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0XG4gICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbGlzdF90ZXN0X25hbWVzIDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgOj0gdHJ1ZSlcbiAgICAgICAgICAgICAsIFwiIERvIG5vdCBydW4gdGVzdHMgYnV0IHNob3cgd2hhdCB3b3VsZCBoYXZlIGJlZW4gcnVuXCIgKVxuICAgICAgICAgICA7ICggXCItbGlzdC1wYXJ0aXRpb25zXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF9wYXJ0aXRpb25zIDo9IHRydWUpXG4gICAgICAgICAgICAgLCBcIiBMaXN0cyBhbGwgdGhlIHBhcnRpdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0IG9uZSB0ZXN0IG9yIHRlc3RfbW9kdWxlXCIgKVxuICAgICAgICAgICA7ICggXCItcGFydGl0aW9uXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBpIC0+IHBhcnRpdGlvbiA6PSBTb21lIGkpXG4gICAgICAgICAgICAgLCBcIiBPbmx5IHJ1biB0aGUgdGVzdHMgaW4gdGhlIGdpdmVuIHBhcnRpdGlvblwiIClcbiAgICAgICAgICAgOyBcIi12ZXJib3NlXCIsIEFyZy5TZXQgdmVyYm9zZSwgXCIgU2hvdyB0aGUgdGVzdHMgYXMgdGhleSBydW5cIlxuICAgICAgICAgICA7ICggXCItc3RvcC1vbi1lcnJvclwiXG4gICAgICAgICAgICAgLCBBcmcuU2V0IHN0b3Bfb25fZXJyb3JcbiAgICAgICAgICAgICAsIFwiIFJ1biB0ZXN0cyBvbmx5IHVwIHRvIHRoZSBmaXJzdCBlcnJvciAoZG9lc24ndCB3b3JrIGZvciBleHBlY3QgdGVzdHMpXCIgKVxuICAgICAgICAgICA7IFwiLXN0cmljdFwiLCBBcmcuU2V0IHN0cmljdCwgXCIgRW5kIHdpdGggYW4gZXJyb3IgaWYgbm8gdGVzdHMgd2VyZSBydW5cIlxuICAgICAgICAgICA7IFwiLXNob3ctY291bnRzXCIsIEFyZy5TZXQgc2hvd19jb3VudHMsIFwiIFNob3cgdGhlIG51bWJlciBvZiB0ZXN0cyByYW5cIlxuICAgICAgICAgICA7ICggXCItbG9nXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0XG4gICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKHRyeSBTeXMucmVtb3ZlIFwiaW5saW5lX3Rlc3RzLmxvZ1wiIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICAgICAgICAgICAgICAgIGxvZyA6PSBTb21lIChvcGVuX291dCBcImlubGluZV90ZXN0cy5sb2dcIikpXG4gICAgICAgICAgICAgLCBcIiBMb2cgdGhlIHRlc3RzIHJ1biBpbiBpbmxpbmVfdGVzdHMubG9nXCIgKVxuICAgICAgICAgICA7ICggXCItZHJvcC10YWdcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLmRyb3AgIXRhZ19wcmVkaWNhdGUgcylcbiAgICAgICAgICAgICAsIFwidGFnIE9ubHkgcnVuIHRlc3RzIG5vdCB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIFxcXG4gICAgICAgICAgICAgICAgLXJlcXVpcmUtdGFnKVwiIClcbiAgICAgICAgICAgOyAoIFwiLXJlcXVpcmUtdGFnXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmdcbiAgICAgICAgICAgICAgICAgKGZ1biBzIC0+IHRhZ19wcmVkaWNhdGUgOj0gVGFnX3ByZWRpY2F0ZS5yZXF1aXJlICF0YWdfcHJlZGljYXRlIHMpXG4gICAgICAgICAgICAgLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1kcm9wLXRhZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1tYXRjaGluZ1wiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBuYW1lX2ZpbHRlciA6PSBzIDo6ICFuYW1lX2ZpbHRlcilcbiAgICAgICAgICAgICAsIFwic3Vic3RyaW5nIE9ubHkgcnVuIHRlc3RzIHdob3NlIG5hbWVzIGNvbnRhaW4gdGhlIGdpdmVuIHN1YnN0cmluZ1wiIClcbiAgICAgICAgICAgOyAoIFwiLW9ubHktdGVzdFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUsIGluZGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwYXJzZV9kZXNjciBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKGZpbGUsIGluZGV4KSAtPiBmaWxlLCBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJzonXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnOicgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gU3RyaW5nLnN1YiBzIDAgaSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXhfc3RyaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuc3ViIHMgKGkgKyAxKSAoU3RyaW5nLmxlbmd0aCBzIC0gaSAtIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaW5kZXhfc3RyaW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmd1bWVudCAlcyBkb2Vzbid0IGZpdCB0aGUgZm9ybWF0IGZpbGVuYW1lWzpsaW5lX251bWJlcl1cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBTb21lIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzLCBOb25lXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIHRlc3RzIDo9IChmaWxlbmFtZSwgaW5kZXgsIHJlZiBmYWxzZSkgOjogIXRlc3RzKVxuICAgICAgICAgICAgICwgXCJsb2NhdGlvbiBSdW4gb25seSB0aGUgdGVzdHMgc3BlY2lmaWVkIGJ5IGFsbCB0aGUgLW9ubHktdGVzdCBvcHRpb25zLlxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbnMgY2FuIGJlIG9uZSBvZiB0aGVzZSBmb3JtczpcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLm1sXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbDpsaW5lX251bWJlclxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjNcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyMywgY2hhcmFjdGVycyAyLTNcIiApXG4gICAgICAgICAgIDsgXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgU3VtbWFyaXplIHRlc3RzIHdpdGhvdXQgdXNpbmcgY29sb3JcIlxuICAgICAgICAgICA7IFwiLWluLXBsYWNlXCIsIEFyZy5TZXQgaW5fcGxhY2UsIFwiIFVwZGF0ZSBleHBlY3QgdGVzdHMgaW4gcGxhY2VcIlxuICAgICAgICAgICA7ICggXCItZGlmZi1jbWRcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcylcbiAgICAgICAgICAgICAsIFwiIERpZmYgY29tbWFuZCBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIGRpZmZpbmcgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1zb3VyY2UtdHJlZS1yb290XCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHNvdXJjZV90cmVlX3Jvb3QgOj0gU29tZSBzKVxuICAgICAgICAgICAgICwgXCIgUGF0aCB0byB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWVcIiApXG4gICAgICAgICAgIDsgKCBcIi1kaWZmLXBhdGgtcHJlZml4XCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfcGF0aF9wcmVmaXggOj0gU29tZSBzKVxuICAgICAgICAgICAgICwgXCIgUHJlZml4IHRvIHByZXBlbmQgdG8gZmlsZXBhdGhzIGluIHRlc3Qgb3V0cHV0XCIgKVxuICAgICAgICAgICBdKVxuICAgICAgICAoZnVuIGFub24gLT5cbiAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogdW5leHBlY3RlZCBhbm9ueW1vdXMgYXJndW1lbnQgJXNcXG4lIVwiIG5hbWUgYW5vbjtcbiAgICAgICAgICAgZXhpdCAxKVxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyBbYXJnc11cIiBuYW1lIFwiaW5saW5lLXRlc3QtcnVubmVyXCIgbGliKTtcbiAgICAgIEFjdGlvbi5zZXRcbiAgICAgICAgKGBUZXN0X21vZGVcbiAgICAgICAgICAgeyB3aGljaF90ZXN0cyA9XG4gICAgICAgICAgICAgICB7IGxpYm5hbWUgPSBsaWJcbiAgICAgICAgICAgICAgIDsgb25seV90ZXN0X2xvY2F0aW9uID0gIXRlc3RzXG4gICAgICAgICAgICAgICA7IHdoaWNoX3RhZ3MgPSAhdGFnX3ByZWRpY2F0ZVxuICAgICAgICAgICAgICAgOyBuYW1lX2ZpbHRlciA9ICFuYW1lX2ZpbHRlclxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICA7IHdoYXRfdG9fZG8gPVxuICAgICAgICAgICAgICAgKGlmICFsaXN0X3BhcnRpdGlvbnMgdGhlbiBgTGlzdF9wYXJ0aXRpb25zIGVsc2UgYFJ1bl9wYXJ0aXRpb24gIXBhcnRpdGlvbilcbiAgICAgICAgICAgfSlcbiAgICB8IF8gLT4gKCkpXG47O1xuXG5sZXQgYW1fdGVzdF9ydW5uZXIgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgVGVzdF9tb2RlIF8gLT4gdHJ1ZVxuICB8IGBJZ25vcmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBhbV9ydW5uaW5nX2Vudl92YXIgPVxuICAoKiBmb3IgYXBwcm94aW1hdGUgY29tcGF0aWJpbGl0eSwgZ2l2ZW4gdGhhdCB0aGUgdmFyaWFibGUgaXMgbm90IGV4YWN0bHkgZXF1aXZhbGVudFxuICAgICB0byB3aGF0IFBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVCB1c2VkIHRvIGJlICopXG4gIFwiVEVTVElOR19GUkFNRVdPUktcIlxuOztcblxuKCogVGhpcyB2YWx1ZSBpcyBkZXByZWNhdGVkIGluIHByaW5jaXBsZSwgaW4gZmF2b3Igb2YgQ29yZS5hbV9ydW5uaW5nX3Rlc3QsIHNvXG4gICB3ZSdyZSBnb2luZyB0byBsaXZlIHdpdGggdGhlIHVnbHkgcGF0dGVybiBtYXRjaC4gKilcbmxldCBhbV9ydW5uaW5nID1cbiAgbWF0Y2ggU3lzLmdldGVudiBcIlBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVFwiIHdpdGhcbiAgfCAoXyA6IHN0cmluZykgLT5cbiAgICB0cnVlICgqIGZvciBjb21wYXRpYmlsaXR5IHdpdGggcGVvcGxlIHNldHRpbmcgdGhpcyB2YXJpYWJsZSBkaXJlY3RseSAqKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAobWF0Y2ggU3lzLmdldGVudiBhbV9ydW5uaW5nX2Vudl92YXIgd2l0aFxuICAgICB8IFwiaW5saW5lLXRlc3RcIiAtPiB0cnVlXG4gICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBmYWxzZVxuICAgICB8IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgdGVzdGluZyA9XG4gIGlmIGFtX3Rlc3RfcnVubmVyXG4gIHRoZW4gYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyXG4gIGVsc2UgaWYgYW1fcnVubmluZ1xuICB0aGVuIGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lclxuICBlbHNlIGBOb3RfdGVzdGluZ1xuOztcblxubGV0IHdhbGxfdGltZV9jbG9ja19ucyAoKSA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKClcblxubGV0IHdoZXJlX3RvX2N1dF9iYWNrdHJhY2UgPVxuICBsYXp5XG4gICAgKEJhc2UuU3RyaW5nLlNlYXJjaF9wYXR0ZXJuLmNyZWF0ZVxuICAgICAgIChfX01PRFVMRV9fIF4gXCIuXCIgXiBcInRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXCIpKVxuOztcblxubGV0IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgYmVmb3JlX25zID0gd2FsbF90aW1lX2Nsb2NrX25zICgpIGluXG4gIGxldCByZXMgPVxuICAgICgqIFRvIGF2b2lkIG5vaXNlIGluIGJhY2t0cmFjZXMsIHdlIGRvIHR3byB0aGluZ3MuXG5cbiAgICAgICBXZSB1c2UgW3doZXJlX3RvX2N1dF9iYWNrdHJhY2VdIGFib3ZlIHRvIHJlbW92ZSB0aGUgc3RhY2sgZnJhbWVzIGZvciB0aGUgY3VycmVudFxuICAgICAgIGZ1bmN0aW9uIGFuZCBhbnkgZnVuY3Rpb24gaXQgZ2V0cyBpbmxpbmVkIGludG8sIGFzIGl0J3Mgbm90IG9mIGFueSBpbnRlcmVzdCB0byB0aGVcbiAgICAgICB1c2VyLCBzaW5jZSBpdCdzIG5vdCB0YWxraW5nIGFib3V0IHRoZWlyIHRlc3QgYnV0IGluc3RlYWQgdGFsa2luZyBhYm91dCB0aGVcbiAgICAgICBwcHhfaW5saW5lX3Rlc3QgbWFjaGluZXJ5LlxuXG4gICAgICAgV2UgYWxzbyBhdm9pZCBpbnNlcnRpbmcgYW55IGNvZGUgYmV0d2VlbiB0aGUgW2ZdIHRoYXQgY29tZXMgZnJvbSB0aGUgdXNlcidzIGZpbGVcbiAgICAgICBhbmQgZ3JhYmJpbmcgdGhlIGJhY2t0cmFjZSBmcm9tIGl0cyBleGNlcHRpb25zIChubyB3cmFwcGluZyBvZiBbZl0gd2l0aCBoaWdoIG9yZGVyXG4gICAgICAgZnVuY3Rpb25zIGxpa2UgRXhuLnByb3RlY3QsIG9yIChmdW4gKCkgLT4gZiAoKTsgdHJ1ZSkpLiAqKVxuICAgIHRyeSBPayAoZiAoKSkgd2l0aFxuICAgIHwgZXhuIC0+IEVycm9yIChleG4sIFByaW50ZXhjLmdldF9iYWNrdHJhY2UgKCkpXG4gIGluXG4gIHRpbWVfc2VjIDo9IEJhc2UuSW50NjMuKHdhbGxfdGltZV9jbG9ja19ucyAoKSAtIGJlZm9yZV9ucyB8PiB0b19mbG9hdCkgLy4gMWU5O1xuICByZXNcbjs7XG5cbmxldCBzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSA9IGxhenkgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBbfCAxMDA7IDIwMDsgMzAwIHxdKVxubGV0IHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlID0gbGF6eSAoQmFzZS5SYW5kb20uU3RhdGUubWFrZSBbfCAxMTE7IDIyMjsgMzMzIHxdKVxuXG5sZXQgdGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgY2FtbF9yYW5kb21fc3RhdGUgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICBsZXQgYmFzZV9yYW5kb21fc3RhdGUgPSBCYXNlLlJhbmRvbS5TdGF0ZS5jb3B5IEJhc2UuUmFuZG9tLlN0YXRlLmRlZmF1bHQgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUpO1xuICBCYXNlLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUpO1xuICBsZXQgcmVzdWx0ID0gdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZiBpblxuICBTdGRsaWIuUmFuZG9tLnNldF9zdGF0ZSBjYW1sX3JhbmRvbV9zdGF0ZTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIGJhc2VfcmFuZG9tX3N0YXRlO1xuICByZXN1bHRcbjs7XG5cbmxldCBzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpID1cbiAgU3RyaW5nLmNvbmNhdFxuICAgIFwiXCJcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoZnVuIHMgLT4gXCIgIGluIFRFU1wiIF4gXCJUX01PRFVMRSBhdCBcIiBeIFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgcyBeIFwiXFxuXCIpXG4gICAgICAgKE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfZGVzY3IgKCkpKVxuOztcblxubGV0IHBvc2l0aW9uX21hdGNoIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgbCA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgdXNlZCkgLT5cbiAgICAgICBsZXQgcG9zaXRpb25fc3RhcnQgPSBTdHJpbmcubGVuZ3RoIGRlZl9maWxlbmFtZSAtIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICAgICBsZXQgZm91bmQgPVxuICAgICAgICAgcG9zaXRpb25fc3RhcnQgPj0gMFxuICAgICAgICAgJiZcbiAgICAgICAgIGxldCBlbmRfb2ZfZGVmX2ZpbGVuYW1lID1cbiAgICAgICAgICAgU3RyaW5nLnN1YiBkZWZfZmlsZW5hbWUgcG9zaXRpb25fc3RhcnQgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpXG4gICAgICAgICBpblxuICAgICAgICAgZW5kX29mX2RlZl9maWxlbmFtZSA9IGZpbGVuYW1lXG4gICAgICAgICAmJiAocG9zaXRpb25fc3RhcnQgPSAwIHx8IGRlZl9maWxlbmFtZS5bcG9zaXRpb25fc3RhcnQgLSAxXSA9ICcvJylcbiAgICAgICAgICYmXG4gICAgICAgICBtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgIHwgU29tZSBsaW5lX251bWJlciAtPiBkZWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlclxuICAgICAgIGluXG4gICAgICAgaWYgZm91bmQgdGhlbiB1c2VkIDo9IHRydWU7XG4gICAgICAgZm91bmQpXG4gICAgbFxuOztcblxubGV0IG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciBkZXNjciA9XG4gIG1hdGNoIG5hbWVfZmlsdGVyIHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyA6OiBfIC0+XG4gICAgTGlzdC5leGlzdHMgKGZ1biBzdWJzdHJpbmcgLT4gQmFzZS5TdHJpbmcuaXNfc3Vic3RyaW5nIH5zdWJzdHJpbmcgZGVzY3IpIG5hbWVfZmlsdGVyXG47O1xuXG5sZXQgcHJpbnRfZGVsYXllZF9lcnJvcnMgKCkgPVxuICBtYXRjaCBMaXN0LnJldiAhZGVsYXllZF9lcnJvcnMgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgXyA6OiBfIGFzIGRlbGF5ZWRfZXJyb3JzIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJcXG4lc1xcbiUhXCIgKFN0cmluZy5tYWtlIDcwICc9Jyk7XG4gICAgTGlzdC5pdGVyIChmdW4gbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBtZXNzYWdlKSBkZWxheWVkX2Vycm9yc1xuOztcblxubGV0IGVwcmludGZfb3JfZGVsYXkgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmXG4gICAgKGZ1biBzIC0+XG4gICAgICAgaWYgIXZlcmJvc2UgdGhlbiBkZWxheWVkX2Vycm9ycyA6PSBzIDo6ICFkZWxheWVkX2Vycm9ycyBlbHNlIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHM7XG4gICAgICAgaWYgIXN0b3Bfb25fZXJyb3JcbiAgICAgICB0aGVuIChcbiAgICAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgICAgZXhpdCAyKSlcbiAgICBmbXRcbjs7XG5cbmxldCBhZGRfaG9va3MgKChtb2R1bGUgQykgOiBjb25maWcpIGYgKCkgPVxuICBDLnByZV90ZXN0X2hvb2sgKCk7XG4gIGYgKClcbjs7XG5cbmxldCBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSA9XG4gIGxldCBvcGVuIEJhc2UgaW5cbiAgYmFja3RyYWNlXG4gIHw+IFN0cmluZy5zcGxpdF9saW5lc1xuICB8PiBMaXN0LnRha2Vfd2hpbGUgfmY6KGZ1biBzdHIgLT5cbiAgICBub3QgKFN0cmluZy5TZWFyY2hfcGF0dGVybi5tYXRjaGVzIChmb3JjZSB3aGVyZV90b19jdXRfYmFja3RyYWNlKSBzdHIpKVxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIgXiBcIlxcblwiKVxuICB8PiBTdHJpbmcuY29uY2F0XG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9pbm5lclxuICAgICAgICAgICAgICAgICAgICAgfmNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgfmRlc2NyXG4gICAgICAgICAgICAgICAgICAgICB+dGFnc1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOmRlZl9maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgICAgICAgICAgICAgICAgICAgIGJvb2xfb2ZfZlxuICA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlXG4gICAgICB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb247IHdoaWNoX3RhZ3M7IG5hbWVfZmlsdGVyIH1cbiAgICAgIDsgd2hhdF90b19kb1xuICAgICAgfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyID1cbiAgICAgIGxhenkgKGRpc3BsYXllZF9kZXNjciBkZXNjciBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIHN0YXJ0X3BvcyBlbmRfcG9zKVxuICAgIGluXG4gICAgbGV0IGNvbXBsZXRlX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAmJiAobWF0Y2ggb25seV90ZXN0X2xvY2F0aW9uIHdpdGhcbiAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgIHwgXyA6OiBfIC0+IHBvc2l0aW9uX21hdGNoIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgb25seV90ZXN0X2xvY2F0aW9uKVxuICAgICAgJiYgKG5vdCAoVGFnX3ByZWRpY2F0ZS5kaXNhYmxlZCB3aGljaF90YWdzIH5jb21wbGV0ZV90YWdzKSlcbiAgICAgICYmIG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciAoTGF6eS5mb3JjZSBkZXNjcilcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW5cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGRlc2NyID0gTGF6eS5mb3JjZSBkZXNjciBpblxuICAgICAgICAgIGluY3IgdGVzdHNfcmFuO1xuICAgICAgICAgIChtYXRjaCAhbG9nIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgIHwgU29tZSBjaCAtPiBQcmludGYuZnByaW50ZiBjaCBcIiVzXFxuJXNcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpO1xuICAgICAgICAgIGlmICF2ZXJib3NlIHRoZW4gUHJpbnRmLnByaW50ZiBcIiVzJSFcIiBkZXNjcjtcbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGlmICFsaXN0X3Rlc3RfbmFtZXNcbiAgICAgICAgICAgIHRoZW4gT2sgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBTZWUgW3RpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXSBmb3Igd2h5IHdlIHVzZSBbYm9vbF9vZl9mXVxuICAgICAgICAgICAgICAgICByYXRoZXIgaGF2ZSB0aGUgY2FsbGVyIHdyYXAgW2ZdIHRvIGFkanVzdCBpdHMgcmV0dXJuIHZhbHVlLiAqKVxuICAgICAgICAgICAgICBSZXN1bHQubWFwIGJvb2xfb2ZfZiAodGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBJZiAhbGlzdF90ZXN0X25hbWVzLCB0aGlzIGlzIGlzIGEgaGFybWxlc3MgemVyby4gKilcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIgKCUuM2Ygc2VjKVxcbiUhXCIgIXRpbWVfc2VjO1xuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayB0cnVlIC0+ICgpXG4gICAgICAgICAgfCBPayBmYWxzZSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgaXMgZmFsc2UuXFxuJXNcXG4lIVwiIGRlc2NyIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgaW5cbiAgICAgICAgICAgIGxldCBleG5fc3RyID0gU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biBpblxuICAgICAgICAgICAgbGV0IHNlcCA9IGlmIFN0cmluZy5jb250YWlucyBleG5fc3RyICdcXG4nIHRoZW4gXCJcXG5cIiBlbHNlIFwiIFwiIGluXG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5XG4gICAgICAgICAgICAgIFwiJXMgdGhyZXclcyVzLlxcbiVzJXNcXG4lIVwiXG4gICAgICAgICAgICAgIGRlc2NyXG4gICAgICAgICAgICAgIHNlcFxuICAgICAgICAgICAgICBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpKVxuOztcblxubGV0IHNldF9saWJfYW5kX3BhcnRpdGlvbiBzdGF0aWNfbGliIHBhcnRpdGlvbiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgU29tZSBfIC0+XG4gICAgKCogcG9zc2libGUgaWYgdGhlIGludGVyZmFjZSBpcyB1c2VkIGV4cGxpY2l0bHkgb3IgaWYgd2UgaGFwcGVuIHRvIGR5bmxpbmsgc29tZXRoaW5nXG4gICAgICAgdGhhdCBjb250YWluIHRlc3RzICopXG4gICAgKClcbiAgfCBOb25lIC0+XG4gICAgZHluYW1pY19saWIgOj0gU29tZSBzdGF0aWNfbGliO1xuICAgIChtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgICAgfCBgSWdub3JlIC0+ICgpXG4gICAgIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzOyB3aGF0X3RvX2RvIH0gLT5cbiAgICAgICBpZiB3aGljaF90ZXN0cy5saWJuYW1lID0gc3RhdGljX2xpYlxuICAgICAgIHRoZW4gKFxuICAgICAgICAgbGV0IHJlcXVpcmVzX3BhcnRpdGlvbiA9XG4gICAgICAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgfCBgUnVuX3BhcnRpdGlvbiAoU29tZSBfKSAtPiB0cnVlXG4gICAgICAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gTm9uZSAtPiBmYWxzZVxuICAgICAgICAgaW5cbiAgICAgICAgIGlmIHBhcnRpdGlvbiA9IFwiXCIgJiYgcmVxdWlyZXNfcGFydGl0aW9uXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgXCJwcHhfaW5saW5lX3Rlc3Q6IGNhbm5vdCB1c2UgLWxpc3QtcGFydGl0aW9uIG9yIC1wYXJ0aXRpb24gd2l0aG91dCBcXFxuICAgICAgICAgICAgICBzcGVjaWZ5aW5nIGEgcGFydGl0aW9uIGF0IHByZXByb2Nlc3NpbmcgdGltZVwiXG4gICAgICAgICBlbHNlIFBhcnRpdGlvbi5zZXRfY3VycmVudCBwYXJ0aXRpb24pKVxuOztcblxubGV0IHVuc2V0X2xpYiBzdGF0aWNfbGliID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKCogbm90IGdpdmluZyBhbiBlcnJvciwgYmVjYXVzZSB3aGVuIHNvbWUgYW5ub3lpbmcgcGVvcGxlIHB1dCBwYV9vdW5pdCBpbiB0aGVpciBsaXN0XG4gICAgICAgb2YgcHJlcHJvY2Vzc29ycywgcGFfb3VuaXQgaXMgc2V0IHVwIHR3aWNlIGFuZCB3ZSBoYXZlIHR3byBjYWxscyB0byB1bnNldF9saWIgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBmaWxlLCBhbmQgdGhlIHNlY29uZCBvbmUgY29tZXMgaW4gdGhpcyBicmFuY2ggKilcbiAgICAoKVxuICB8IFNvbWUgbGliIC0+IGlmIGxpYiA9IHN0YXRpY19saWIgdGhlbiBkeW5hbWljX2xpYiA6PSBOb25lXG47O1xuXG5sZXQgdGVzdCB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiA9XG4gIHRlc3RfaW5uZXIgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgKGZ1biBiIC0+XG4gICAgYilcbjs7XG5cbmxldCB0ZXN0X3VuaXQgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIChmdW4gKCkgLT5cbiAgICB0cnVlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfbW9kdWxlXG4gICAgICAgICAgICAgICAgICAgICB+Y29uZmlnXG4gICAgICAgICAgICAgICAgICAgICB+ZGVzY3JcbiAgICAgICAgICAgICAgICAgICAgIH50YWdzXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6ZGVmX2ZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICB+bGluZV9udW1iZXI6ZGVmX2xpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICAgZlxuICA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlXG4gICAgICB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSBfOyBuYW1lX2ZpbHRlciA9IF87IHdoaWNoX3RhZ3MgfVxuICAgICAgOyB3aGF0X3RvX2RvXG4gICAgICB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgKCkgPSBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcyBpblxuICAgIGxldCBwYXJ0aWFsX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAoKiBJZiwgbm8gbWF0dGVyIHdoYXQgdGFncyBhIHRlc3QgZGVmaW5lcywgd2UgY2VydGFpbmx5IHdpbGwgZHJvcCBhbGwgdGVzdHMgd2l0aGluXG4gICAgICAgICB0aGlzIG1vZHVsZSwgdGhlbiBkb24ndCBydW4gdGhlIG1vZHVsZSBhdCBhbGwuIFRoaXMgbWVhbnMgcGVvcGxlIGNhbiB3cml0ZVxuICAgICAgICAgdGhpbmdzIGxpa2UgdGhlIGZvbGxvd2luZyB3aXRob3V0IGJyZWFraW5nIHRoZSAzMi1iaXQgYnVpbGQ6XG4gICAgICAgICBsZXQldGVzdF9tb2R1bGUgW0B0YWdzIFwiNjQtYml0cy1vbmx5XCJdID0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgIGxldCBpID0gSW50NjQudG9faW50X2V4biAuLi4uXG4gICAgICAgICBlbmQpXG4gICAgICAgICBXZSBkb24ndCBzaG9ydGN1dCBiYXNlZCBvbiBwb3NpdGlvbiwgYXMgd2UgY2FuJ3QgdGVsbCB3aGF0IHBvc2l0aW9ucyB0aGVcbiAgICAgICAgIGlubmVyIHRlc3RzIHdpbGwgaGF2ZS4gKilcbiAgICAgICYmIG5vdCAoVGFnX3ByZWRpY2F0ZS5lbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHdoaWNoX3RhZ3MgfnBhcnRpYWxfdGFncylcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW5cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgICAgIGxldCBkZXNjciA9IGRlc2NyICgpIGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1vZHVsZV9jb250ZXh0LndpdGhfIH5kZXNjciB+dGFncyAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICgqIFdlIGRvIG5vdCByZXNldCByYW5kb20gc3RhdGVzIHVwb24gZW50ZXJpbmcgW2xldCV0ZXN0X21vZHVsZV0uXG5cbiAgICAgICAgICAgICAgICAgQ29uOiBDb2RlIGluIHRlc3QgbW9kdWxlcyBjYW4gYWNjaWRlbnRhbGx5IGRlcGVuZCBvbiB0b3AtbGV2ZWwgcmFuZG9tXG4gICAgICAgICAgICAgICAgIHN0YXRlIGVmZmVjdHMuXG5cbiAgICAgICAgICAgICAgICAgUHJvczogKDEpIFdlIGRvbid0IHJlc2V0IHRvIHRoZSBzYW1lIHNlZWQgb24gZW50ZXJpbmcgYSBbbGV0JXRlc3RfbW9kdWxlXVxuICAgICAgICAgICAgICAgICBhbmQgdGhlbiBhIFtsZXQldGVzdF0gaW5zaWRlIHRoYXQgbW9kdWxlLCB3aGljaCBjb3VsZCBsZWFkIHRvXG4gICAgICAgICAgICAgICAgIGFjY2lkZW50YWxseSByYW5kb21seSBnZW5lcmF0aW5nIHRoZSBzYW1lIHZhbHVlcyBpbiBzb21lIHRlc3QuICgyKSBNb3ZpbmdcbiAgICAgICAgICAgICAgICAgY29kZSBpbnRvIGFuZCBvdXQgb2YgW2xldCV0ZXN0X21vZHVsZV0gZG9lcyBub3QgY2hhbmdlIGl0cyByYW5kb20gc2VlZC5cbiAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheVxuICAgICAgICAgICAgICAoXCJURVNcIiBeXiBcIlRfTU9EVUxFIGF0ICVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIilcbiAgICAgICAgICAgICAgKFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZGVzY3IpXG4gICAgICAgICAgICAgIHNlcFxuICAgICAgICAgICAgICBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpKVxuOztcblxubGV0IHN1bW1hcml6ZSAoKSA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT5cbiAgICBpZiBTeXMuYXJndiA8PiBbfHxdICYmIEZpbGVuYW1lLmJhc2VuYW1lIFN5cy5hcmd2LigwKSA9IFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGVcIlxuICAgIHRoZW5cbiAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgIFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGUgaXMgbm90IHN1cHBvc2VkIHRvIGJlIHJ1biBieSBoYW5kLCB5b3UgXFxuXFxcbiAgICAgICAgIHNob3VsZCBydW4gdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IGluc3RlYWQuXFxuXFxcbiAgICAgICAgICUhXCJcbiAgICBlbHNlXG4gICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICBcIllvdSBhcmUgZG9pbmcgc29tZXRoaW5nIHVuZXhwZWN0ZWQgd2l0aCB0aGUgdGVzdHMuIE5vIHRlc3RzIGhhdmUgXFxuXFxcbiAgICAgICAgIGJlZW4gcnVuLiBZb3Ugc2hvdWxkIHVzZSB0aGUgaW5saW5lX3Rlc3RzX3J1bm5lciBzY3JpcHQgdG8gcnVuIFxcblxcXG4gICAgICAgICB0ZXN0cy5cXG5cXFxuICAgICAgICAgJSFcIjtcbiAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IF87IHdoYXRfdG9fZG8gPSBgTGlzdF9wYXJ0aXRpb25zIH0gLT5cbiAgICBMaXN0Lml0ZXIgKFByaW50Zi5wcmludGYgXCIlc1xcblwiKSAoUGFydGl0aW9uLmFsbCAoKSk7XG4gICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICB8IGBUZXN0X21vZGUgeyB3aGF0X3RvX2RvID0gYFJ1bl9wYXJ0aXRpb24gXzsgd2hpY2hfdGVzdHMgfSAtPlxuICAgIChtYXRjaCAhbG9nIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBjaCAtPiBjbG9zZV9vdXQgY2gpO1xuICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgIChtYXRjaCAhdGVzdHNfZmFpbGVkLCAhdGVzdF9tb2R1bGVzX2ZhaWxlZCB3aXRoXG4gICAgIHwgMCwgMCAtPlxuICAgICAgIGlmICFzaG93X2NvdW50c1xuICAgICAgIHRoZW5cbiAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgIFwiJWQgdGVzdHMgcmFuLCAlZCB0ZXN0X21vZHVsZXMgcmFuXFxuJSFcIlxuICAgICAgICAgICAhdGVzdHNfcmFuXG4gICAgICAgICAgICF0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgbGV0IHVudXNlZF90ZXN0cyA9XG4gICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gKF8sIF8sIHVzZWQpIC0+IG5vdCAhdXNlZCkgd2hpY2hfdGVzdHMub25seV90ZXN0X2xvY2F0aW9uXG4gICAgICAgICBpblxuICAgICAgICAgbWF0Y2ggdW51c2VkX3Rlc3RzIHdpdGhcbiAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgfCBfIDo6IF8gLT4gU29tZSB1bnVzZWRfdGVzdHNcbiAgICAgICBpblxuICAgICAgIChtYXRjaCBlcnJvcnMgd2l0aFxuICAgICAgICB8IFNvbWUgdGVzdHMgLT5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IHRoZSBmb2xsb3dpbmcgLW9ubHktdGVzdCBmbGFncyBtYXRjaGVkIG5vdGhpbmc6XCI7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCBfKSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBQcmludGYuZXByaW50ZiBcIiAlc1wiIGZpbGVuYW1lXG4gICAgICAgICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gUHJpbnRmLmVwcmludGYgXCIgJXM6JWRcIiBmaWxlbmFtZSBsaW5lX251bWJlcilcbiAgICAgICAgICAgIHRlc3RzO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiLlxcbiUhXCI7XG4gICAgICAgICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgIXRlc3RzX3JhbiA9IDAgJiYgIXN0cmljdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IG5vIHRlc3RzIGhhdmUgYmVlbiBydW4uXFxuJSFcIjtcbiAgICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yKVxuICAgICAgICAgIGVsc2UgVGVzdF9yZXN1bHQuU3VjY2VzcylcbiAgICAgfCBjb3VudCwgY291bnRfdGVzdF9tb2R1bGVzIC0+XG4gICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgIFwiRkFJTEVEICVkIC8gJWQgdGVzdHMlc1xcbiUhXCJcbiAgICAgICAgIGNvdW50XG4gICAgICAgICAhdGVzdHNfcmFuXG4gICAgICAgICAoaWYgY291bnRfdGVzdF9tb2R1bGVzID0gMFxuICAgICAgICAgIHRoZW4gXCJcIlxuICAgICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgKFwiLCAlZCBURVNcIiBeXiBcIlRfTU9EVUxFU1wiKSBjb3VudF90ZXN0X21vZHVsZXMpO1xuICAgICAgIFRlc3RfcmVzdWx0LkZhaWx1cmUpXG47O1xuXG5sZXQgdXNlX2NvbG9yID0gIXVzZV9jb2xvclxubGV0IGluX3BsYWNlID0gIWluX3BsYWNlXG5sZXQgZGlmZl9jb21tYW5kID0gIWRpZmZfY29tbWFuZFxubGV0IGRpZmZfcGF0aF9wcmVmaXggPSAhZGlmZl9wYXRoX3ByZWZpeFxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSAhc291cmNlX3RyZWVfcm9vdFxubGV0IGV2YWx1YXRvcnMgPSByZWYgWyBzdW1tYXJpemUgXVxubGV0IGFkZF9ldmFsdWF0b3IgfmYgPSBldmFsdWF0b3JzIDo9IGYgOjogIWV2YWx1YXRvcnNcblxubGV0IGV4aXQgKCkgPVxuICBMaXN0Lm1hcCAoZnVuIGYgLT4gZiAoKSkgKExpc3QucmV2ICFldmFsdWF0b3JzKVxuICB8PiBUZXN0X3Jlc3VsdC5jb21iaW5lX2FsbFxuICB8PiBUZXN0X3Jlc3VsdC50b19leGl0X2NvZGVcbiAgfD4gZXhpdFxuOztcbiIsIm9wZW4hIEJhc2Vcbm1vZHVsZSBHYyA9IFN0ZGxpYi5HY1xuXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5cbmxldCBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgPSBcIlBQWF9NT0RVTEVfVElNRVJcIlxuXG5sZXQgZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKSA9XG4gICgqIGF2b2lkIFN0ZGxpYi5TeXMuZ2V0ZW52X29wdCB0byBwcmVzZXJ2ZSA0LjA0LnggY29tcGF0aWJpbGl0eSAqKVxuICBtYXRjaCBTdGRsaWIuU3lzLmdldGVudiBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgd2l0aFxuICB8IHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgYW1fcmVjb3JkaW5nX3ZhbHVlID0gZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKVxubGV0IGFtX3JlY29yZGluZyA9IE9wdGlvbi5pc19zb21lIGFtX3JlY29yZGluZ192YWx1ZVxuXG5tb2R1bGUgRHVyYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudFxuXG4gIGxldCB0b19uYW5vc2Vjb25kcyB0ID0gdFxuICBsZXQgb2ZfbmFub3NlY29uZHMgdCA9IHRcblxuICBtb2R1bGUgdHlwZSBGb3JtYXQgPSBzaWdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IDogdCBsaXN0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA9IHN0cnVjdFxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeDpcIm5zXCIgfD4gSW50NjMub2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyBuYW5vcyA9IEludDYzLnRvX3N0cmluZyBuYW5vcyBeIFwibnNcIlxuICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6dG9fc3RyaW5nXG4gIGVuZFxuXG4gIGxldCBmb3JtYXQgPSByZWYgKG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA6IEZvcm1hdClcblxuICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQub2Zfc3RyaW5nIHN0cmluZ1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nID1cbiAgICBsZXQgKG1vZHVsZSBGb3JtYXQpID0gIWZvcm1hdCBpblxuICAgIEZvcm1hdC50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nXG4gIDs7XG5lbmRcblxubW9kdWxlIEdjX2V2ZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltaW5nX2V2ZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBkZXNjcmlwdGlvbiA6IHN0cmluZ1xuICAgIDsgcnVudGltZSA6IER1cmF0aW9uLnRcbiAgICA7IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50XG4gICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA6IHQgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA6IER1cmF0aW9uLnRcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgOiBHYy5zdGF0XG4gICAgOyBtdXRhYmxlIG5lc3RlZF90aW1lciA6IHQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDogVGltaW5nX2V2ZW50LnQgbGlzdFxuICAgIH1cblxuICBsZXQgY3JlYXRlID9uZXN0ZWRfdGltZXIgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPSBcIlwiXG4gICAgOyBjdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lID0gSW50NjMuemVyb1xuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPSBHYy5xdWlja19zdGF0ICgpXG4gICAgOyBuZXN0ZWRfdGltZXJcbiAgICA7IHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyID0gW11cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgPVxuICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPC0gXCJcIjtcbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gSW50NjMuemVybztcbiAgICBtYXRjaCB0Lm5lc3RlZF90aW1lciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5lc3RlZCAtPiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgPC0gW11cbiAgOztcblxuICBsZXQgcmVjb3JkX3N0YXJ0IHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChTdHJpbmcuaXNfZW1wdHkgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbik7XG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIGRlc2NyaXB0aW9uO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA8LSBHYy5xdWlja19zdGF0ICgpO1xuICAgICAgKCogY2FsbCBbVGltZV9ub3ddIGFzIGxhdGUgYXMgcG9zc2libGUgYmVmb3JlIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSlcbiAgOztcblxuICBsZXQgcmVjb3JkX3VudGlsIHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogY29tcHV0ZSBbVGltZV9ub3ddIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgcnVubmluZyB0aGUgbW9kdWxlIGJvZHkgKilcbiAgICAgIGxldCB1bnRpbCA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgaW5cbiAgICAgIGxldCBzdGFydCA9IHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2FmdGVyID0gR2MucXVpY2tfc3RhdCAoKSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2JlZm9yZSA9IHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgaW5cbiAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAtICkgdW50aWwgc3RhcnQgaW5cbiAgICAgIGFzc2VydCAoU3RyaW5nLmVxdWFsIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gZGVzY3JpcHRpb24pO1xuICAgICAgbGV0IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50ID1cbiAgICAgICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgICAgIGdjX3N0YXRzX2FmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgICAgIDsgY29tcGFjdGlvbnMgPSBnY19zdGF0c19hZnRlci5jb21wYWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5jb21wYWN0aW9uc1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIG5lc3RlZCAtPiBMaXN0LnJldiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXJcbiAgICAgIGluXG4gICAgICBsZXQgdGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQgPVxuICAgICAgICB7IGRlc2NyaXB0aW9uOyBydW50aW1lOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH1cbiAgICAgIGluXG4gICAgICB0LnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICA8LSB0aW1pbmdfZXZlbnQgOjogdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcjtcbiAgICAgIHJlc2V0IHQpXG4gIDs7XG5lbmRcblxubGV0IGRlZmluaXRpb25fdGltZXIgPSBUaW1lci5jcmVhdGUgKClcbmxldCBtb2R1bGVfdGltZXIgPSBUaW1lci5jcmVhdGUgfm5lc3RlZF90aW1lcjpkZWZpbml0aW9uX3RpbWVyICgpXG5sZXQgcmVjb3JkX3N0YXJ0IG1vZHVsZV9uYW1lID0gVGltZXIucmVjb3JkX3N0YXJ0IG1vZHVsZV90aW1lciBtb2R1bGVfbmFtZVxubGV0IHJlY29yZF91bnRpbCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF91bnRpbCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfZGVmaW5pdGlvbl9zdGFydCBsb2MgPSBUaW1lci5yZWNvcmRfc3RhcnQgZGVmaW5pdGlvbl90aW1lciBsb2NcbmxldCByZWNvcmRfZGVmaW5pdGlvbl91bnRpbCBsb2MgPSBUaW1lci5yZWNvcmRfdW50aWwgZGVmaW5pdGlvbl90aW1lciBsb2NcblxubGV0IGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nXG4gICAgICAoeyBtaW5vcl9jb2xsZWN0aW9uczsgbWFqb3JfY29sbGVjdGlvbnM7IGNvbXBhY3Rpb25zIH0gOiBHY19ldmVudHMudClcbiAgPVxuICBsZXQgdG9fbGlzdCBkZXNjcmlwdGlvbiBjb3VudCA9XG4gICAgaWYgY291bnQgPSAwIHRoZW4gW10gZWxzZSBbIEludC50b19zdHJpbmcgY291bnQgXiBcIiBcIiBeIGRlc2NyaXB0aW9uIF1cbiAgaW5cbiAgbGV0IHN0cmluZ3MgPVxuICAgIHRvX2xpc3QgXCJtaW5vciBjb2xsZWN0aW9uc1wiIG1pbm9yX2NvbGxlY3Rpb25zXG4gICAgQCB0b19saXN0IFwibWFqb3IgY29sbGVjdGlvbnNcIiBtYWpvcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcImNvbXBhY3Rpb25zXCIgY29tcGFjdGlvbnNcbiAgaW5cbiAgaWYgTGlzdC5pc19lbXB0eSBzdHJpbmdzIHRoZW4gXCJcIiBlbHNlIFwiOyBHQzogXCIgXiBTdHJpbmcuY29uY2F0IHN0cmluZ3MgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZCBsaXN0ID1cbiAgbGV0IGxlZnRfY29sdW1uX3dpZHRoID1cbiAgICBMaXN0LmZvbGQgbGlzdCB+aW5pdDowIH5mOihmdW4gd2lkdGggKGxlZnQsIF8pIC0+IEludC5tYXggd2lkdGggKFN0cmluZy5sZW5ndGggbGVmdCkpXG4gIGluXG4gIExpc3QubWFwIGxpc3QgfmY6KGZ1biAobGVmdCwgcmlnaHQpIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCIlKnMgJXNcIiBsZWZ0X2NvbHVtbl93aWR0aCBsZWZ0IHJpZ2h0KVxuOztcblxubGV0IHJlYyB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbGlzdCB+aW5kZW50ID1cbiAgbGV0IGR1cmF0aW9uX3N0cmluZ3MgPVxuICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+IHRpbWluZ19ldmVudC5ydW50aW1lKVxuICAgIHw+IER1cmF0aW9uLnRvX3N0cmluZ193aXRoX3NhbWVfdW5pdFxuICBpblxuICBsZXQgcHJlZml4ID0gU3RyaW5nLm1ha2UgaW5kZW50ICcgJyBpblxuICBMaXN0Lm1hcDJfZXhuXG4gICAgZHVyYXRpb25fc3RyaW5nc1xuICAgIGxpc3RcbiAgICB+ZjpcbiAgICAgIChmdW5cbiAgICAgICAgZHVyYXRpb25fc3RyaW5nIHsgcnVudGltZSA9IF87IGRlc2NyaXB0aW9uOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH0gLT5cbiAgICAgICAgKCBkdXJhdGlvbl9zdHJpbmdcbiAgICAgICAgLCBkZXNjcmlwdGlvblxuICAgICAgICAgIF4gZ2NfZXZlbnRzX3N1ZmZpeF9zdHJpbmcgZ2NfZXZlbnRzXG4gICAgICAgICAgXiBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAodGltaW5nX2V2ZW50c190b19zdHJpbmdzIG5lc3RlZF90aW1pbmdfZXZlbnRzIH5pbmRlbnQ6KGluZGVudCArIDQpKVxuICAgICAgICAgICAgICAgICB+ZjooZnVuIGxpbmUgLT4gXCJcXG5cIiBeIGxpbmUpKSApKVxuICB8PiB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZFxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGxpbmUgLT4gcHJlZml4IF4gbGluZSlcbjs7XG5cbmxldCBmYWtlX3RpbWluZ19ldmVudHMgPVxuICBsZXQgZ2NfZXZlbnRzIGkgOiBHY19ldmVudHMudCA9XG4gICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9IChpZiBpICUgMiA9IDEgdGhlbiAxIGVsc2UgMClcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gKGlmIGkgJSA0ID0gMyB0aGVuIDEgZWxzZSAwKVxuICAgIDsgY29tcGFjdGlvbnMgPSAoaWYgaSAlIDggPSA3IHRoZW4gMSBlbHNlIDApXG4gICAgfVxuICBpblxuICBsYXp5XG4gICAgKExpc3QuaW5pdCAxMiB+ZjooZnVuIGkgOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkZha2VfX0RlcGVuZGVuY3lfJWRcIiAoaSArIDEpXG4gICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaSArIDEpKVxuICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGlcbiAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgICAgKGlmIChpICsgMSkgJSA0ID0gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBMaXN0LmluaXQgKGkgKyAxKSB+ZjooZnVuIGogOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkxpbmUgJWRcIiAoaiArIDEpXG4gICAgICAgICAgICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaiArIDEpKVxuICAgICAgICAgICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGpcbiAgICAgICAgICAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID0gW11cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZWxzZSBbXSlcbiAgICAgICB9KSlcbjs7XG5cbmxldCBwcmludF9yZWNvcmRlZF90aW1pbmdfZXZlbnRzIHRpbWluZ19ldmVudHMgPVxuICBsZXQgbm90aWZ5X29mX292ZXJyaWRpbmcgKCkgPVxuICAgIFN0ZGlvLnByaW50X2VuZGxpbmUgXCJwcHhfbW9kdWxlX3RpbWVyOiBvdmVycmlkaW5nIHRpbWUgbWVhc3VyZW1lbnRzIGZvciB0ZXN0aW5nXCJcbiAgaW5cbiAgbGV0IHRpbWluZ19ldmVudHMgPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZV9leG4gYW1fcmVjb3JkaW5nX3ZhbHVlIHdpdGhcbiAgICB8IFwiRkFLRV9NT0RVTEVTXCIgLT5cbiAgICAgIG5vdGlmeV9vZl9vdmVycmlkaW5nICgpO1xuICAgICAgZm9yY2UgZmFrZV90aW1pbmdfZXZlbnRzXG4gICAgfCBzdHJpbmcgLT5cbiAgICAgIChtYXRjaCBEdXJhdGlvbi5vZl9zdHJpbmcgc3RyaW5nIHdpdGhcbiAgICAgICB8IG92ZXJyaWRlIC0+XG4gICAgICAgICBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKTtcbiAgICAgICAgIExpc3QubWFwaSB0aW1pbmdfZXZlbnRzIH5mOihmdW4gaW5kZXggKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPlxuICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgICAgICAgTGlzdC5tYXBpXG4gICAgICAgICAgICAgICB0aW1pbmdfZXZlbnQubmVzdGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgICAgICAgIH5mOihmdW4gaW5kZXggbmVzdGVkX3RpbWluZ19ldmVudCAtPlxuICAgICAgICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgICAgICAgIHsgbmVzdGVkX3RpbWluZ19ldmVudCB3aXRoIHJ1bnRpbWUgfSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgeyB0aW1pbmdfZXZlbnQgd2l0aCBydW50aW1lOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9KVxuICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdGltaW5nX2V2ZW50cylcbiAgaW5cbiAgdGltaW5nX2V2ZW50cyB8PiB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgfmluZGVudDowIHw+IExpc3QuaXRlciB+ZjpTdGRpby5wcmludF9lbmRsaW5lXG47O1xuXG5sZXQgKCkgPVxuICBpZiBhbV9yZWNvcmRpbmdcbiAgdGhlblxuICAgIFN0ZGxpYi5hdF9leGl0IChmdW4gKCkgLT5cbiAgICAgIHByaW50X3JlY29yZGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgKExpc3QucmV2IG1vZHVsZV90aW1lci50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcikpXG47O1xuIiwidHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmFzZS5UeXBlX2VxdWFsLnQgPSBUIDogKCdhLCAnYSkgdFxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgY29udiA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBhIC0+IGIgPSBmdW4gVCB4IC0+IHhcblxubW9kdWxlIExpZnQgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChhIFgudCwgYiBYLnQpIHQgPSBUXG5lbmRcbiIsIigqIHRoaXMgbGliIHNob3VsZCBub3QgZGVwZW5kIG9uIGNvcmUgKilcbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGxldCBjb21wYXJlIGNtcCBhIGIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiAwXG4gICAgICB8IFtdLCBfIC0+IC0xXG4gICAgICB8IF8sIFtdIC0+IDFcbiAgICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgICBsZXQgbiA9IGNtcCB4IHkgaW5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiBsb29wIHhzIHlzIGVsc2UgblxuICAgIGluXG4gICAgbG9vcCBhIGJcbiAgOztcbmVuZFxuXG5tb2R1bGUgVWlkIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgbmV4dCA6IHN0cmluZyAtPiB0XG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgdmFsIG5hbWUgOiB0IC0+IHN0cmluZ1xuICB2YWwgc3RhdGljIDogdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb2RlIDogaW50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIGEgYiA9IGNvbXBhcmUgKGEuY29kZSA6IGludCkgYi5jb2RlXG4gIGxldCBlcXVhbCBhIGIgPSAoYS5jb2RlIDogaW50KSA9IGIuY29kZVxuICBsZXQgdWlkID0gcmVmIDBcblxuICBsZXQgbmV4dCBuYW1lID1cbiAgICBsZXQgY29kZSA9ICF1aWQgaW5cbiAgICBpbmNyIHVpZDtcbiAgICB7IGNvZGU7IG5hbWUgfVxuICA7O1xuXG4gIGxldCBoYXNoIGEgPSBIYXNodGJsLmhhc2ggYS5jb2RlXG4gIGxldCBuYW1lIGEgPSBhLm5hbWVcbiAgbGV0IHN0YXRpYyA9IG5leHQgXCJzdGF0aWNcIlxuZW5kXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHVpZCA6IFVpZC50XG4gICAgOyBwYXJhbXMgOiB0IGxpc3RcbiAgICB9XG5cbiAgbGV0IHJlYyBjb21wYXJlIGsxIGsyID1cbiAgICBpZiBrMSA9PSBrMlxuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNtcCA9IFVpZC5jb21wYXJlIGsxLnVpZCBrMi51aWQgaW5cbiAgICAgIGlmIGNtcCA8PiAwIHRoZW4gY21wIGVsc2UgTGlzdC5jb21wYXJlIGNvbXBhcmUgazEucGFyYW1zIGsyLnBhcmFtcylcbiAgOztcblxuICBsZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG4gIGxldCBoYXNoID0gKEhhc2h0YmwuaGFzaCA6IHQgLT4gaW50KVxuICBsZXQgc3RhdGljID0geyB1aWQgPSBVaWQuc3RhdGljOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxudHlwZSAnYSB0ID0gS2V5LnRcbnR5cGUgJ2EgdHlwZW5hbWUgPSAnYSB0XG5cbmxldCBrZXkgdCA9IHRcbmxldCB1aWQgdCA9IHQuS2V5LnVpZFxubGV0IG5hbWUgdCA9IFVpZC5uYW1lIHQuS2V5LnVpZFxubGV0IHN0YXRpYyA9IEtleS5zdGF0aWNcbmxldCBjcmVhdGUgPyhuYW1lID0gXCJUeXBlbmFtZS5jcmVhdGVcIikgKCkgPSB7IEtleS51aWQgPSBVaWQubmV4dCBuYW1lOyBwYXJhbXMgPSBbXSB9XG5cbmluY2x1ZGUgc3RydWN0XG4gICgqIFRoZSBhcmd1bWVudCBmb3IgT2JqLm1hZ2ljIGhlcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbiBjb3JlL3R5cGVfZXF1YWwgKilcblxuICBsZXQgc2FtZSAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID0gS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcblxuICBsZXQgc2FtZV93aXRuZXNzICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPVxuICAgIGlmIEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG4gICAgdGhlbiBTb21lIChPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIDogKGEsIGIpIFR5cGVfZXF1YWwudClcbiAgICBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID1cbiAgICBpZiBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuICAgIHRoZW4gKE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgOiAoYSwgYikgVHlwZV9lcXVhbC50KVxuICAgIGVsc2UgZmFpbHdpdGggXCJUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuXCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdhIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdiIHR5cGVuYW1lIC0+ICgnYSwgJ2IpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYiB0eXBlbmFtZSAtPiAnYyB0eXBlbmFtZSAtPiAoJ2EsICdiLCAnYykgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3RcbiAgICA6ICAnYSB0eXBlbmFtZVxuICAgIC0+ICdiIHR5cGVuYW1lXG4gICAgLT4gJ2MgdHlwZW5hbWVcbiAgICAtPiAnZCB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90XG4gICAgOiAgJ2EgdHlwZW5hbWVcbiAgICAtPiAnYiB0eXBlbmFtZVxuICAgIC0+ICdjIHR5cGVuYW1lXG4gICAgLT4gJ2QgdHlwZW5hbWVcbiAgICAtPiAnZSB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90ID0geyBLZXkudWlkOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGEgXSB9XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYiBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGMgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGM7IGQgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkIGUgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYzsgZDsgZSBdIH1cbmVuZFxuXG5tb2R1bGUgS2V5X3RhYmxlID0gSGFzaHRibC5NYWtlIChLZXkpXG5cbm1vZHVsZSBUYWJsZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGRhdGEgPSBEYXRhIDogJ2EgdCAqICdhIFgudCAtPiBkYXRhXG4gIHR5cGUgdCA9IGRhdGEgS2V5X3RhYmxlLnRcblxuICBsZXQgY3JlYXRlIGludCA9IEtleV90YWJsZS5jcmVhdGUgaW50XG4gIGxldCBtZW0gdGFibGUgbmFtZSA9IEtleV90YWJsZS5tZW0gdGFibGUgKGtleSBuYW1lKVxuICBsZXQgc2V0IHRhYmxlIG5hbWUgZGF0YSA9IEtleV90YWJsZS5yZXBsYWNlIHRhYmxlIChrZXkgbmFtZSkgKERhdGEgKG5hbWUsIGRhdGEpKVxuXG4gIGxldCBmaW5kICh0eXBlIGEpIHRhYmxlIChuYW1lIDogYSB0eXBlbmFtZSkgPVxuICAgIGxldCBkYXRhID1cbiAgICAgIHRyeSBTb21lIChLZXlfdGFibGUuZmluZCB0YWJsZSAoa2V5IG5hbWUpKSB3aXRoXG4gICAgICB8IEJhc2UuTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKERhdGEgKG5hbWUnLCBkYXRhKSkgLT5cbiAgICAgIChmdW4gKHR5cGUgYikgKG5hbWUnIDogYiB0eXBlbmFtZSkgKGRhdGEgOiBiIFgudCkgLT5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSAoc2FtZV93aXRuZXNzX2V4biBuYW1lJyBuYW1lIDogKGIsIGEpIFR5cGVfZXF1YWwudCkgaW5cbiAgICAgICAgIFNvbWUgKGRhdGEgOiBhIFgudCkpXG4gICAgICAgIG5hbWUnXG4gICAgICAgIGRhdGFcbiAgOztcbmVuZFxuXG5sZXQgZmFpbCB1aWRfYSB1aWRfYiA9XG4gIGxldCBtc2cgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4biAlUyAlU1wiIChVaWQubmFtZSB1aWRfYSkgKFVpZC5uYW1lIHVpZF9iKVxuICBpblxuICBmYWlsd2l0aCBtc2dcbjs7XG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzEgKEEgOiBTMSkgKEIgOiBTMSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhLiAoJ2EgQS50LCAnYSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8yIChBIDogUzIpIChCIDogUzIpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYi4gKCgnYSwgJ2IpIEEudCwgKCdhLCAnYikgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8zIChBIDogUzMpIChCIDogUzMpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYiAnYy4gKCgnYSwgJ2IsICdjKSBBLnQsICgnYSwgJ2IsICdjKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNCAoQSA6IFM0KSAoQiA6IFM0KSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MgJ2QuICgoJ2EsICdiLCAnYywgJ2QpIEEudCwgKCdhLCAnYiwgJ2MsICdkKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl81IChBIDogUzUpIChCIDogUzUpID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBlcSA6XG4gICAgICAgICdhICdiICdjICdkICdlLiAoKCdhLCAnYiwgJ2MsICdkLCAnZSkgQS50LCAoJ2EsICdiLCAnYywgJ2QsICdlKSBCLnQpIFR5cGVfZXF1YWwudFxuICAgIH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcbiIsIigqKlxuICAgUGxhY2UgaG9sZGVyIGZvciBjb21tb24gVmFyaWFudHMgYW5kIEZpZWxkcyBpbnRlcmZhY2VcbiopXG5cbm1vZHVsZSBNIChYIDogc2lnXG4gICAgKCoqXG4gICAgICAgVGhpcyBmdW5jdG9yIGlzIGVzc2VudGlhbGx5IHRoZXJlIGJlY2F1c2Ugd2UgdXNlIHRoaXMgc2FtZSBpbnRlcmZhY2UgaW4gZGlmZmVyZW50XG4gICAgICAgY29udGV4dHMsIHdpdGggZGlmZmVyZW50IHR5cGVzIGZvciBbJ2EgdF0uXG5cbiAgICAgICAxKSBPbmUgdXNlIGNhc2UgZm9yIGl0IGlzIHdoZXJlIFsnYSBYLnQgPSAnYSBUeXBlcmVwLnRdLiAgVGhlc2UgaW50ZXJmYWNlcyBhcmUgdGhlblxuICAgICAgIHBhcnQgb2YgdGhlIHR5cGUgd2l0bmVzcyBidWlsdCBmb3IgYSB0eXBlIGNvbnRhaW5pbmcgYSByZWNvcmQgb3IgYSB2YXJpYW50IGluIGl0c1xuICAgICAgIHN0cnVjdHVyZS4gW3RyYXZlcnNlXSB3aWxsIGdpdmUgYSB3YXkgb2YgYWNjZXNzaW5nIHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIGZvciB0aGVcbiAgICAgICBhcmd1bWVudHMgb2YgYSB2YXJpYW50IG9yIHJlY29yZCB0eXBlLlxuXG4gICAgICAgMikgQW5vdGhlciB1c2UgY2FzZSBpcyBmb3IgYnVpbGRpbmcgXCJzdGFnZWQgZ2VuZXJpYyBjb21wdXRhdGlvbnNcIi4gSW4gdGhhdCBjYXNlLCB0aGVcbiAgICAgICB0eXBlIFsnYSBYLnRdIGlzIHRoZSB0eXBlIG9mIHRoZSBjb21wdXRhdGlvbiB0aGF0IGlzIGJlaW5nIGJ1aWx0LiAgW3RyYXZlcnNlXVxuICAgICAgIHJldHVybnMgdGhlIGNvbXB1dGF0aW9uIGJ1aWx0IGZvciB0aGUgYXJndW1lbnQuIFRoZSBpbnRlcmZhY2Ugbm8gbG9uZ2VyIGV4cG9ydHNcbiAgICAgICB0aGUgdHlwZXJlcCBvZiB0aGUgYXJndW1lbnRzIGluIGhvcGVzIG9mIGVuZm9yY2luZyB0aGF0IG5vIHR5cGVyZXAgdHJhdmVyc2FsXG4gICAgICAgaGFwcGVucyBhdCBydW50aW1lIGlmIHRoZSBjb21wdXRhdGlvbiBoYXBwZW4gdG8gYmUgYSBmdW5jdGlvbi5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgZnVuY3Rpb25zIHByZWZpeGVkIGJ5IFtpbnRlcm5hbF0gYXMgd2VsbCBhcyB0aGUgbW9kdWxlIHN1ZmZpeGVkIGJ5IFtfaW50ZXJuYWxdXG4gICAgIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiBbd2l0aCB0eXBlcmVwXSBhcyB3ZWxsIGFzIHNvbWVcbiAgICAgaW50ZXJuYWxzIG9mIHRoZSB0eXBlcmVwIGxpYnJhcnkuIERvIG5vdCBjb25zaWRlciB1c2luZyB0aGVzZSBzb21ld2hlcmUgZWxzZS4gIFRoZXlcbiAgICAgc2hvdWxkIGlkZWFsbHkgbm90IGJlIGV4cG9ydGVkIG91dHNpZGUgdGhlIHR5cGVyZXAgbGlicmFyeSwgYnV0IHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgICBuZWVkcyBzb21laG93IHRvIGFjY2VzcyB0aGlzLCBldmVuIG91dHNpZGUuICopXG5cbiAgbW9kdWxlIFRhZ19pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHQgPVxuICAgICAgeyBsYWJlbCA6IHN0cmluZ1xuICAgICAgOyByZXAgOiAnYXJncyBYLnRcbiAgICAgIDsgYXJpdHkgOiBpbnRcbiAgICAgIDsgYXJnc19sYWJlbHMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyBvY2FtbF9yZXByIDogaW50XG4gICAgICA7IHR5aWQgOiAnYXJncyBUeXBlbmFtZS50XG4gICAgICA7IGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZVxuICAgICAgfVxuICBlbmRcblxuICAoKipcbiAgICAgV2l0bmVzcyBvZiBhIHRhZywgdGhhdCBpcyBhbiBpdGVtIGluIGEgdmFyaWFudCB0eXBlLCBhbHNvIGNhbGxlZCBhbiBcImFwcGxpZWRcbiAgICAgdmFyaWFudCBDb25zdHJ1Y3RvclwiXG5cbiAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSB0YWdcbiAgICAgcGFyYW1ldGVycy4gIEV4YW1wbGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPVxuICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICB8IEIgb2Ygc3RyaW5nXG4gICAgICAgICB8IEMgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgXX1cblxuICAgICB0aGlzIHR5cGUgaGFzIHRocmVlIGNvbnN0cnVjdG9ycy4gRm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZ1xuICAgICBbVGFnLnRdOlxuXG4gICAgIHtbXG4gICAgICAgdmFsIHRhZ19BIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICAgIHZhbCB0YWdfQiA6ICh0LCBzdHJpbmcgICAgICAgICkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0MgOiAodCwgKGludCAqIHN0cmluZykpIFRhZy50XG4gICAgIF19XG5cbiAgICAgTm90ZSwgaW5saW5lIHJlY29yZCBpbiB2YXJpYW50IGFyZSB0eXBlZCBhcyBpZiB0aGVpciBkZWZpbml0aW9uIHdhcyB1c2luZyB0dXBsZXMsXG4gICAgIHdpdGhvdXQgdGhlIHBhcmVudGhlc2lzLiAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlaXIgcnVudGltZSByZXByZXNlbnRhdGlvbi4gIEJ1dFxuICAgICB0aGUgZGlzdGluY3Rpb24gaXMgY2FycmllZCBhbmQgYXZhaWxhYmxlIGZvciBpbnRyb3NwZWN0aW9uIGFzIHBhcnQgb2YgdGhlIFtUYWcudF0uXG4gICAgIFNlZSBbYXJnc19sYWJlbHNdLiAqKVxuICBtb2R1bGUgVGFnIDogc2lnXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGUgPVxuICAgICAgfCBBcmdzIG9mICgnYXJncyAtPiAndmFyaWFudClcbiAgICAgIHwgQ29uc3Qgb2YgJ3ZhcmlhbnRcblxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIG5hbWUgb2YgdGhlIGNvbnN0cnVjdG9yIGFzIGl0IGlzIGdpdmVuIGluIHRoZSBjb25jcmV0ZSBzeW50YXhcbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHt2XG4gICAgICAgICBDb25zdHJ1Y3RvciAgICAgICAgfCBsYWJlbFxuICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgfCBBIG9mIGludCAgICAgICAgIHwgIFwiQVwiXG4gICAgICAgICB8IGBhIG9mIGludCAgICAgICAgfCAgXCJhXCJcbiAgICAgICAgIHwgYEEgb2YgaW50ICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9IHwgIFwiQVwiXG4gICAgICAgdn1cblxuICAgICAgIGZvciBzdGFuZGFyZCB2YXJpYW50LCB0aGUgb2NhbWwgc3ludGF4IGltcGxpZXMgdGhhdCB0aGlzIGxhYmVsIHdpbGwgYWx3YXlzIHN0YXJ0c1xuICAgICAgIHdpdGggYSBjYXBpdGFsIGxldHRlci4gRm9yIHBvbHltb3JwaGljIHZhcmlhbnRzLCB0aGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIGNoYXIuXG4gICAgICAgRm9yIHBvbHltb3JwaGljIHZhcmlhbnQsIHRoaXMgbGFiZWwgZG9lcyBub3QgaW5jbHVkZSB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIHNpemUgb2YgdGhlIG9jYW1sIGhlYXAgYmxvY2sgY29udGFpbmluZyB0aGUgYXJndW1lbnRzXG5cbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7dlxuICAgICAgICAgIDA6IHwgQSB8ICdBXG4gICAgICAgICAgMTogfCBBIG9mIGludCB8IGBBIG9mIGludCB8IEEgb2YgKGludCAqIGludCkgfCBgQSBvZiAoaW50ICogaW50KVxuICAgICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludH1cbiAgICAgICAgICAyOiB8IEEgb2YgaW50ICogZmxvYXRcbiAgICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICAgICBldGMuXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcml0eSA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqIFRoZSBsYWJlbCBvZiB0aGUgZmllbGRzIGZvciBpbmxpbmUgcmVjb3Jkcy4gIEZvciBvdGhlciBmb3JtcyBvZiB0YWdzLCB0aGlzIGlzIHRoZVxuICAgICAgICBlbXB0eSBsaXN0LiAgV2hlbiB0aGlzIHJldHVybnMgYSBub24gZW1wdHkgbGlzdCwgdGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgbGlzdFxuICAgICAgICBpcyBlcXVhbCB0byB0aGUgYXJpdHkuXG5cbiAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICB7dlxuICAgICAgICAgKDEpIEVtcHR5OlxuXG4gICAgICAgICAgIHwgQSB8ICdBXG4gICAgICAgICAgIHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgfCBgQSBvZiBpbnQgKiBpbnRcbiAgICAgICAgICAgfCBBIG9mIGludCAqIGZsb2F0XG5cbiAgICAgICAgICgyKSBOb24gZW1wdHk6XG5cbiAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9ICAgICAgICAgICAgICAgLT4gWyBcInhcIiBdXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfSAgIC0+IFsgXCJ4XCIgOyBcInlcIiBdXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcmdzX2xhYmVscyA6IChfLCBfKSB0IC0+IHN0cmluZyBsaXN0XG5cbiAgICAoKipcbiAgICAgICBUaGUgaW5kZXggb2YgdGhlIGNvbnN0cnVjdG9yIGluIHRoZSBsaXN0IG9mIGFsbCB0aGUgdmFyaWFudCB0eXBlJ3MgY29uc3RydWN0b3JzXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBDIG9mIGludCAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRCBvZiBjaGFyICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEUgb2YgeyB4IDogaW50IH0gICgqIDQgKilcbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBvY2FtbF9yZXByIGlzIHJlbGF0ZWQgdG8gdGhlIHJ1bnRpbWUgb2Ygb2JqZWN0cy4gdGhpcyBpcyBlc3NlbnRpYWxseSBhIHdheSBvZlxuICAgICAgIGdpdmluZyBvbmUgdGhlIGFiaWxpdHkgdG8gcmVidWlsZCBkeW5hbWljYWxseSBhbiBbT2JqLnRdIHJlcHJlc2VudGluZyBhIHRhZy5cblxuICAgICAgIFBvbHltb3JwaGljIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSBoYXNoIG9mIHRoZSBsYWJlbCwgYXMgZG9uZSBieSB0aGUgY29tcGlsZXIuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyBgYmFyKSAgKCogNDg5NTE4NyAqKVxuICAgICAgIHByaW50X2ludCAoT2JqLm1hZ2ljICdmb28pICAoKiA1MDk3MjIyICopXG5cbiAgICAgICBTdGFuZGFyZHMgdmFyaWFudHM6XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSB0YWcgY29ycmVzcG9uZGluZyB0byB0aGUgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlLlxuICAgICAgIHRoZSB3YXkgaXQgd29ya3MgaW4gdGhlIG9jYW1sIHJ1bnRpbWUgaXMgYnkgcGFydGl0aW9uaW5nIHRoZSBjb25zdHJ1Y3RvcnMgcmVnYXJkaW5nXG4gICAgICAgaWYgdGhleSBoYXZlIHNvbWUgYXJndW1lbnRzIG9yIG5vdCwgcHJlc2VydmluZyB0aGUgb3JkZXIsIHRoZW4gYXNzaWduIGluY3JlYXNpbmdcbiAgICAgICBpbmRleCB3aXRoaW5nIGVhY2ggcGFydGl0aW9uLlxuICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0gICAgICAgICAgICAgICAgICAoKiBubyBhcmcgKikgICgqIGFyZ3MgKilcbiAgICAgICAgICAgfCBBICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQiBvZiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQyAgICAgICAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEQgb2YgKGZsb2F0ICogc3RyaW5nKSAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEUgICAgICAgICAgICAgICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBGICAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgICAgIHwgRyBvZiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgSCBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBvY2FtbF9yZXByIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHaXZlIGJhY2sgYSB3YXkgb2YgY29uc3RydWN0aW5nIGEgdmFsdWUgb2YgdGhhdCBjb25zdHJ1Y3RvciBmcm9tIGl0cyBhcmd1bWVudHMuXG5cbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgKGludCAqIHN0cmluZylcbiAgICAgICAgICAgfCBCIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgIHwgQ1xuICAgICAgICAgICB8IEQgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICBdfVxuXG4gICAgICAgW2NyZWF0ZV0gd2lsbCByZXR1cm4gc29tZXRoaW5nIGVxdWl2YWxlbnQgdG86XG4gICAgICAgdGFnX0EgOiBbQXJncyAoZnVuIChkIDogKGludCAqIHN0cmluZykgLT4gQSBkKV1cbiAgICAgICB0YWdfQiA6IFtBcmdzIChmdW4gKGksIGYpIC0+IEIgKGksIGYpKV1cbiAgICAgICB0YWdfQyA6IFtDb25zdCBDXVxuICAgICAgIHRhZ19EIDogW0FyZ3MgKGZ1biAoeCwgeSkgLT4gRCB7IHg7IHkgfSldXG4gICAgKilcbiAgICB2YWwgY3JlYXRlIDogKCd2YXJpYW50LCAnYXJncykgdCAtPiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiBtaWdodCBiZSB1c2VkIHRvIHBlcmZvcm0gc29tZSBsb29rdXAgYmFzZWRcbiAgICAgICAgb24gaXQgd2hpbGUgYnVpbGRpbmcgYSBjb21wdXRhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFR5cGVuYW1lLnRcblxuICAgICgqKiBnZXQgdGhlIHJlcHJlc2VudGF0aW9uL2NvbXB1dGF0aW9uIG9mIHRoZSBhcmd1bWVudHMgKilcbiAgICB2YWwgdHJhdmVyc2UgOiAoXywgJ2FyZ3MpIHQgLT4gJ2FyZ3MgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBUYWdfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVGFnX2ludGVybmFsXG5cbiAgICBsZXQgbGFiZWwgdCA9IHQubGFiZWxcbiAgICBsZXQgYXJpdHkgdCA9IHQuYXJpdHlcbiAgICBsZXQgYXJnc19sYWJlbHMgdCA9IHQuYXJnc19sYWJlbHNcbiAgICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgICBsZXQgb2NhbWxfcmVwciB0ID0gdC5vY2FtbF9yZXByXG4gICAgbGV0IGNyZWF0ZSB0ID0gdC5jcmVhdGVcbiAgICBsZXQgdHlpZCB0ID0gdC50eWlkXG4gICAgbGV0IHRyYXZlcnNlIHQgPSB0LnJlcFxuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAtPiAndmFyaWFudCB0YWdcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2EpIFRhZy50ICogJ2EgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyB0YWdzIDogJ2EgdGFnIGFycmF5XG4gICAgICA7IHBvbHltb3JwaGljIDogYm9vbFxuICAgICAgOyB2YWx1ZSA6ICdhIC0+ICdhIHZhbHVlXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBWYXJpYW50IDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIHRhZ3MgY29uc3RpdHVpbmcgYSB2YXJpYW50XG4gICAgICAgdHlwZS4gdGhlIFsndmFyaWFudF0gcGFyYW1ldGVyIGlzIHRoZSB2YXJpYW50IHR5cGUsIGl0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhlXG4gICAgICAgY29uc3RydWN0b3JzIG9mIHRoYXQgdmFyaWFudCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVycyBtaWdodCBiZSBkaWZmZXJlbnRcbiAgICAgICBmb3IgZWFjaCBjb25zdHJ1Y3RvciBhbmQgaXMgdGh1cyBleGlzdGVudGlhbFxuICAgICopXG4gICAgdHlwZSBfIHRhZyA9IFRhZyA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50IC0+ICd2YXJpYW50IHRhZ1xuXG4gICAgKCoqXG4gICAgICAgQSBzaW1pbGFyIGV4aXN0ZW50aWFsIGNvbnN0cnVjdG9yIHRvIFtfIHRhZ10gYnV0IHRoaXMgb25lIGhvbGRzIGEgdmFsdWUgd2hvc2UgdHlwZVxuICAgICAgIGlzIHRoZSBhcmd1bWVudHMgb2YgdGhlIHRhZyBjb25zdHJ1Y3Rvci4gIEEgdmFsdWUgb2YgdHlwZSBbJ2EgdmFsdWVdIGlzIGEgcGFpciBvZlxuICAgICAgICgxKSBhIHZhbHVlIG9mIHZhcmlhbnQgdHlwZSBbJ2FdIGFsb25nIHdpdGggKDIpIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAgICAgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlIFsnYV1cbiAgICAqKVxuICAgIHR5cGUgXyB2YWx1ZSA9IFZhbHVlIDogKCd2YXJpYW50LCAnYXJncykgVGFnLnQgKiAnYXJncyAtPiAndmFyaWFudCB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgV2l0bmVzcyBvZiBhIHZhcmlhbnQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgdmFyaWFudCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB0YWdzIG9mIHRoaXMgdmFyaWFudCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIHRhZyBvZiB0aGlzIHZhcmlhbnQgdHlwZSwgaW5kZXhlZCBmcm9tIDAuXG4gICAgKilcbiAgICB2YWwgdGFnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgdGFnXG5cbiAgICAoKipcbiAgICAgICBEaXN0aW5ndWlzaCBwb2x5bW9ycGhpYyB2YXJpYW50cyBhbmQgc3RhbmRhcmQgdmFyaWFudHMuIFR5cGljYWxseSwgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cyB0YWdzIHN0YXJ0cyB3aXRoIHRoZSBbYF0gY2hhcmFjdGVyLlxuICAgICAgIEV4YW1wbGVcbiAgICAgICBwb2x5bW9ycGhpYyB2YXJpYW50OiB0eXBlIHQgPSBbIGBBIHwgYEIgXVxuICAgICAgIHN0YW5kYXJkIHZhcmlhbnQ6ICAgIHR5cGUgdCA9IEEgfCBCXG4gICAgKilcbiAgICB2YWwgaXNfcG9seW1vcnBoaWMgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgUGF0dGVybiBtYXRjaGluZyBvbiBhIHZhbHVlIG9mIHRoaXMgdmFyaWFudCB0eXBlLlxuICAgICopXG4gICAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYSAtPiAnYSB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgdGFnIC0+ICdhY2MpIC0+ICdhY2NcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICdhIFZhcmlhbnRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyaWFudF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC50YWdzXG4gICAgbGV0IHRhZyB0IGluZGV4ID0gdC50YWdzLihpbmRleClcbiAgICBsZXQgaXNfcG9seW1vcnBoaWMgdCA9IHQucG9seW1vcnBoaWNcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gQXJyYXkuZm9sZF9sZWZ0IGYgaW5pdCB0LnRhZ3NcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2ZpZWxkIFgudFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyB0eWlkIDogJ2ZpZWxkIFR5cGVuYW1lLnRcbiAgICAgIDsgZ2V0IDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICAgIDsgKCogc2V0IDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvbjsgKFxcKiBtdXRhYmxlIGZpZWxkICpcXCkgKilcbiAgICAgICAgaXNfbXV0YWJsZSA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSBmaWVsZCwgdGhhdCBpcyBhbiBpdGVtIGluIGEgcmVjb3JkIHR5cGUuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC5cbiAgICAgRXhhbXBsZTpcbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQgOyB5IDogc3RyaW5nIH1cbiAgICAgXX1cbiAgICAgVGhpcyB0eXBlIGhhcyB0d28gZmllbGRzLiBmb3IgZWFjaCBvZiB0aGVtIHdlJ2xsIGhhdmUgYSBjb3JyZXNwb25kaW5nIFtGaWVsZC50XVxuXG4gICAgIHZhbCBmaWVsZF94IDogKHQsIGludCkgRmllbGQudFxuICAgICB2YWwgZmllbGRfeSA6ICh0LCBzdHJpbmcpIEZpZWxkLnRcbiAgKilcbiAgbW9kdWxlIEZpZWxkIDogc2lnXG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0XG5cblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHsgeCAgIDogaW50OyAgICAgKCogXCJ4XCIgKilcbiAgICAgICAgICAgZm9vIDogc3RyaW5nOyAgKCogXCJmb29cIiAqKVxuICAgICAgICAgICBiYXIgOiBmbG9hdDsgICAoKiBcImJhclwiICopXG4gICAgICAgICB9XG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlIGZpZWxkIGluIHRoZSBsaXN0IG9mIGFsbCBmaWVsZHMgZm9yIHRoaXMgcmVjb3JkIHR5cGUuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgICB4ICAgOiBpbnQ7ICAgICAoKiAwICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIDEgKilcbiAgICAgICAgICAgYmFyIDogc3RyaW5nOyAgKCogMiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgaW5kZXggOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEZpZWxkIGFjY2Vzc29ycy4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgZG90IG9wZXJhdGlvbi5cbiAgICAgICBbRmllbGQuZ2V0IGJhcl9maWVsZCB0XSByZXR1cm5zIHRoZSBmaWVsZCBbYmFyXSBvZiB0aGUgcmVjb3JkIHZhbHVlIFt0XSwganVzdCB0aGVcbiAgICAgICBzYW1lIGFzIFt0LmJhcl1cbiAgICAqKVxuICAgIHZhbCBnZXQgOiAoJ3JlY29yZCwgJ2ZpZWxkKSB0IC0+ICdyZWNvcmQgLT4gJ2ZpZWxkXG5cbiAgICAoKiogcmV0dXJuIHdoZXRoZXIgdGhlIGZpZWxkIGlzIG11dGFibGUsIGkuZS4gd2hldGhlciBpdHMgZGVjbGFyYXRpb24gaXMgcHJlZml4ZWQgd2l0aFxuICAgICAgICB0aGUga2V5d29yZCBbbXV0YWJsZV0gKilcbiAgICB2YWwgaXNfbXV0YWJsZSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiAgTWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0ICopXG4gICAgdmFsIHR5aWQgOiAoXywgJ2ZpZWxkKSB0IC0+ICdmaWVsZCBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBGaWVsZF9pbnRlcm5hbC50IC0+ICgnYSwgJ2IpIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBGaWVsZF9pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IGdldCB0ID0gdC5nZXRcbiAgICBsZXQgaXNfbXV0YWJsZSB0ID0gdC5pc19tdXRhYmxlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFJlY29yZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyBmaWVsZCA9IEZpZWxkIDogKCdyZWNvcmQsICdhKSBGaWVsZC50IC0+ICdyZWNvcmQgZmllbGRcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyBmaWVsZHMgOiAnYSBmaWVsZCBhcnJheVxuICAgICAgOyBoYXNfZG91YmxlX2FycmF5X3RhZyA6IGJvb2xcbiAgICAgIDsgY3JlYXRlIDogJ2EgZmllbGRzIC0+ICdhXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmQgOiBzaWdcbiAgICAoKipcbiAgICAgICBBbiBleGlzdGVudGlhbCB0eXBlIHVzZWQgdG8gZ2F0aGVyIGFsbCB0aGUgZmllbGRzIGNvbnN0aXR1aW5nIGEgcmVjb3JkIHR5cGUuIHRoZVxuICAgICAgIFsncmVjb3JkXSBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZSBmaWVsZCBvZiB0aGF0XG4gICAgICAgcmVjb3JkIHR5cGUuIFRoZSB0eXBlIG9mIHRoZSBmaWVsZHMgbWlnaHQgYmUgZGlmZmVyZW50IGZvciBlYWNoIGZpZWxkIGFuZCBpcyB0aHVzXG4gICAgICAgZXhpc3RlbnRpYWwuXG4gICAgKilcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBbJ3JlY29yZCBmaWVsZHNdIGlzIGEgdHlwZSBpc29tb3JwaGljIHRvIFsncmVjb3JkXS4gIFRoaXMgZ2l2ZXMgYSB3YXkgdG8gZ2V0IHRoZVxuICAgICAgIGZpZWxkIHZhbHVlIGZvciBlYWNoIGZpZWxkIG9mIHRoZSByZWNvcmQuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICB0aGF0IGl0IGlzIGNvbnZlbmllbnQgZm9yIHdyaXRpbmcgZ2VuZXJpYyBjb21wdXRhdGlvbnMuXG4gICAgKilcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSByZWNvcmQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgcmVjb3JkIHR5cGUgd2l0bmVzc2VkLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuXG4gICAgKCoqXG4gICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBvZiB0aGlzIHJlY29yZCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIGZpZWxkIG9mIHRoaXMgcmVjb3JkIHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIGZpZWxkIDogJ2EgdCAtPiBpbnQgLT4gJ2EgZmllbGRcblxuICAgICgqKlxuICAgICAgIFRoaXMgaXMgYSBsb3cgbGV2ZWwgbWV0YWRhdGEgcmVnYXJkaW5nIHRoZSB3YXkgdGhlIG9jYW1sIGNvbXBpbGVyIHJlcHJlc2VudCB0aGVcbiAgICAgICBhcnJheSB1bmRlcm5lYXRoIHRoYXQgaXMgdGhlIHJ1bnRpbWUgdmFsdWUgb2YgYSByZWNvcmQgb2YgdHlwZSBbJ2FdIGdpdmVuIGEgd2l0bmVzc1xuICAgICAgIG9mIHR5cGUgWydhIHRdLiBbaGFzX2RvdWJsZV9hcnJheV90YWcgd10gcmV0dXJucyBbdHJ1ZV0gaWYgdGhlIGFycmF5IHRoYXRcbiAgICAgICByZXByZXNlbnRzIHJ1bnRpbWUgdmFsdWVzIG9mIHRoaXMgdHlwZSBpcyBhbiBvcHRpbWl6ZWQgb2NhbWwgZmxvYXQgYXJyYXkuXG4gICAgICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgYmUgdHJ1ZSBmb3IgcmVjb3JkIHdoZXJlIGFsbCBmaWVsZHMgYXJlIHN0YXRpY2FsbHkga25vd24gYXMgdG9cbiAgICAgICBiZSBbZmxvYXRzXS5cblxuICAgICAgIE5vdGUgdGhhdCB5b3UgY2FuJ3QgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZHluYW1pY2FsbHkgYnkgaW5zcGVjdGluZyB0aGUgdHlwZXJlcCBvbmNlXG4gICAgICAgaXQgaXMgYXBwbGllZCwgYmVjYXVzZSB0aGVyZSBpcyBhdCB0aGlzIHBvaW50IG5vIHdheSB0byB0ZWxsIHdoZXRoZXIgb25lIG9mIHRoZVxuICAgICAgIGZpZWxkIGlzIHBvbHltb3JwaGljIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgRXhwb3NlIG9uZSBkaXJlY3Rpb24gb2YgdGhlIGlzb21vcnBoaXNtIGJldHdlZW4gYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYW5kIGEgdmFsdWUgb2ZcbiAgICAgICB0eXBlIFsnYSBmaWVsZHNdLiBCYXNpY2FsbHksIGdpdmVuIGFuIGVuY29kaW5nIHdheSBvZiBhY2Nlc3NpbmcgdGhlIHZhbHVlIG9mIGFsbFxuICAgICAgIHRoZSBmaWVsZHMgb2YgYSByZWNvcmQsIGNyZWF0ZSB0aGF0IHJlY29yZCBhbmQgcmV0dXJuIGl0LlxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICdhIHQgLT4gJ2EgZmllbGRzIC0+ICdhXG5cbiAgICAoKipcbiAgICAgICBmb2xkaW5nIGFsb25nIHRoZSB0YWdzIG9mIHRoZSB2YXJpYW50IHR5cGVcbiAgICAqKVxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooJ2FjYyAtPiAnYSBmaWVsZCAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBSZWNvcmRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUmVjb3JkX2ludGVybmFsXG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCB0ID0gdC50eXBlbmFtZVxuICAgIGxldCBsZW5ndGggdCA9IEFycmF5Lmxlbmd0aCB0LmZpZWxkc1xuICAgIGxldCBmaWVsZCB0IGluZGV4ID0gdC5maWVsZHMuKGluZGV4KVxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyB0ID0gdC5oYXNfZG91YmxlX2FycmF5X3RhZ1xuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC5maWVsZHNcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSBOYW1lX29mID0gc3RydWN0XG4gIGxldCB0eXBlbmFtZV9vZl9pbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDMyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQzMlxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQzMlwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfaW50NjQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludDY0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludDY0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9uYXRpdmVpbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG5hdGl2ZWludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJuYXRpdmVpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2NoYXIgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGNoYXJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiY2hhclwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfZmxvYXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImZsb2F0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9zdHJpbmcgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJzdHJpbmdcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2J5dGVzID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJieXRlc1wiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfYm9vbCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYm9vbFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJib29sXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl91bml0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcInVuaXRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbW9kdWxlIE1fb3B0aW9uID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgICAgIGxldCBuYW1lID0gXCJvcHRpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2Zfb3B0aW9uID0gTV9vcHRpb24udHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xpc3QgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBuYW1lID0gXCJsaXN0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xpc3QgPSBNX2xpc3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2FycmF5ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICAgICAgbGV0IG5hbWUgPSBcImFycmF5XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2FycmF5ID0gTV9hcnJheS50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fbGF6eV90ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbiAgICAgIGxldCBuYW1lID0gXCJsYXp5X3RcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfbGF6eV90ID0gTV9sYXp5X3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3JlZiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlZlxuXG4gICAgICBsZXQgbmFtZSA9IFwicmVmXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3JlZiA9IE1fcmVmLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9mdW5jdGlvbiA9IFR5cGVuYW1lLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIC0+ICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJmdW5jdGlvblwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9mdW5jdGlvbiA9IE1fZnVuY3Rpb24udHlwZW5hbWVfb2ZfdFxuXG4gIHR5cGUgdHVwbGUwID0gdW5pdFxuXG4gIG1vZHVsZSBNX3R1cGxlMCA9IFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHR1cGxlMFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUwXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMCA9IE1fdHVwbGUwLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTIgPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTJcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUyID0gTV90dXBsZTIudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlMyA9IFR5cGVuYW1lLk1ha2UzIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2NcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlM1wiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTMgPSBNX3R1cGxlMy50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU0ID0gVHlwZW5hbWUuTWFrZTQgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSAqICdiICogJ2MgKiAnZFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNCA9IE1fdHVwbGU0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTUgPSBUeXBlbmFtZS5NYWtlNSAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTVcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGU1ID0gTV90dXBsZTUudHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSByZWMgVHlwZXJlcCA6IHNpZ1xuICB0eXBlIF8gdCA9XG4gICAgfCBJbnQgOiBpbnQgdFxuICAgIHwgSW50MzIgOiBpbnQzMiB0XG4gICAgfCBJbnQ2NCA6IGludDY0IHRcbiAgICB8IE5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgfCBDaGFyIDogY2hhciB0XG4gICAgfCBGbG9hdCA6IGZsb2F0IHRcbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCeXRlcyA6IGJ5dGVzIHRcbiAgICB8IEJvb2wgOiBib29sIHRcbiAgICB8IFVuaXQgOiB1bml0IHRcbiAgICB8IE9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB8IExpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHwgQXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgICB8IExhenkgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gICAgfCBSZWYgOiAnYSB0IC0+ICdhIHJlZiB0XG4gICAgfCBGdW5jdGlvbiA6ICgnZG9tIHQgKiAncm5nIHQpIC0+ICgnZG9tIC0+ICdybmcpIHRcbiAgICB8IFR1cGxlIDogJ2EgVHlwZXJlcC5UdXBsZS50IC0+ICdhIHRcbiAgICB8IFJlY29yZCA6ICdhIFR5cGVyZXAuUmVjb3JkLnQgLT4gJ2EgdFxuICAgIHwgVmFyaWFudCA6ICdhIFR5cGVyZXAuVmFyaWFudC50IC0+ICdhIHRcbiAgICB8IE5hbWVkIDogKCdhIFR5cGVyZXAuTmFtZWQudCAqICdhIHQgbGF6eV90IG9wdGlvbikgLT4gJ2EgdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgVDAgPSBzaWdcbiAgICAgIHR5cGUgbmFtZWRcbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgICAgIHR5cGUgJ2EgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdhIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBhIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQyID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYiBUeXBlbmFtZS50IC0+ICgnYSwgJ2IpIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYikgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDMgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYykgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDQgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ1ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGVcblxuICAgICAgdmFsIGUgOiBlIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2UgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCwgZSkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgKCogdGhlcmUgdGhlIG1vZHVsZSBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBhIHR5cGUgW3RdIHdpdGhcbiAgICAgICBwYXJhbWV0ZXJzIHdob3NlIGtpbmQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSB0eXBlIHZhcmlhYmxlOiBbJ2EgJ3RdLCBldmVuIHdpdGhcbiAgICAgICBhIGdhZHQuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVDAgb2YgKG1vZHVsZSBUMCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMSBvZiAobW9kdWxlIFQxIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQyIG9mIChtb2R1bGUgVDIgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDMgb2YgKG1vZHVsZSBUMyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNCBvZiAobW9kdWxlIFQ0IHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ1IG9mIChtb2R1bGUgVDUgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICAgIHZhbCBuYW1lIDogXyB0IC0+IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgVHVwbGUgOiBzaWdcbiAgICAoKiB0aGVzZSBjb25zdHJ1Y3RvcnMgY291bGQgYmUgcGx1bmdlZCBhdCB0b3BsZXZlbCBvZiBUeXBlcmVwLnQsIGhvd2V2ZXIgaXQgaXMgbGVzc1xuICAgICAgIHZlcmJvc2UgdGhhdCB3YXkgKilcbiAgICB0eXBlIF8gdCA9XG4gICAgICB8IFQyIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCkgLT4gKCdhICogJ2IpIHRcbiAgICAgIHwgVDMgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gICAgICB8IFQ0IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICAgICAgfCBUNSA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudCAqICdlIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuXG4gICAgdmFsIGFyaXR5IDogXyB0IC0+IGludFxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBUeXBlcmVwLnRcblxuICB2YWwgc2FtZSA6IF8gdCAtPiBfIHQgLT4gYm9vbFxuICB2YWwgc2FtZV93aXRuZXNzIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbiAgdmFsIHNhbWVfd2l0bmVzc19leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50XG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIHZhbCBoZWFkIDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBUMCBfIC0+IDBcbiAgICAgIHwgVDEgXyAtPiAxXG4gICAgICB8IFQyIF8gLT4gMlxuICAgICAgfCBUMyBfIC0+IDNcbiAgICAgIHwgVDQgXyAtPiA0XG4gICAgICB8IFQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCAodHlwZSBhKSA9IGZ1bmN0aW9uXG4gICAgICB8IFQwIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQwIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQxIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQxIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQyIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQzIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ0IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ1IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ1IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgOztcblxuICAgIGxldCBuYW1lIHJlcCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgKHR5cGVuYW1lX29mX3QgcmVwKSlcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlID0gc3RydWN0XG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoaXMgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIGxldCBhcml0eSA6IHR5cGUgYS4gYSB0IC0+IGludCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgXyAtPiAyXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgXyAtPiAzXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgXyAtPiA0XG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgXyAtPiA1XG4gICAgOztcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICAgIHwgVDIgKGEsIGIpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUyIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSkgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgfCBUMyAoYSwgYiwgYykgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTNcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgIHwgVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU0XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgfCBUNSAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTVcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGQpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlcFxuICAgIGVuZClcblxuICBsZXQgcmVjIHR5cGVuYW1lX29mX3QgOiB0eXBlIGEuIGEgdCAtPiBhIFR5cGVuYW1lLnQgPSBmdW5jdGlvblxuICAgIHwgSW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50XG4gICAgfCBJbnQzMiAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDMyXG4gICAgfCBJbnQ2NCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDY0XG4gICAgfCBOYXRpdmVpbnQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICB8IENoYXIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9jaGFyXG4gICAgfCBGbG9hdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2Zsb2F0XG4gICAgfCBTdHJpbmcgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9zdHJpbmdcbiAgICB8IEJ5dGVzIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICB8IEJvb2wgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9ib29sXG4gICAgfCBVbml0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfdW5pdFxuICAgIHwgT3B0aW9uIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX29wdGlvbiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBMaXN0IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2xpc3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgQXJyYXkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYXJyYXkgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGF6eSByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9sYXp5X3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgUmVmIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3JlZiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBGdW5jdGlvbiAoZG9tLCBybmcpIC0+XG4gICAgICBOYW1lX29mLnR5cGVuYW1lX29mX2Z1bmN0aW9uICh0eXBlbmFtZV9vZl90IGRvbSkgKHR5cGVuYW1lX29mX3Qgcm5nKVxuICAgIHwgVHVwbGUgcmVwIC0+IFR5cGVyZXAuVHVwbGUudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFJlY29yZCByZXAgLT4gVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFZhcmlhbnQgcmVwIC0+IFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZVxuICA7O1xuXG4gIGxldCByZWMgc2FtZV93aXRuZXNzIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIFR5cGVfZXF1YWwudCBvcHRpb24gPVxuICAgIGZ1biB0MSB0MiAtPlxuICAgICAgbGV0IG1vZHVsZSBFID0gVHlwZV9lcXVhbCBpblxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgTmFtZWQgKG5hbWUxLCByMSksIE5hbWVkIChuYW1lMiwgcjIpIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3MgKE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZTEpIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUyKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggcjEsIHIyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBTb21lIChsYXp5IHQxKSwgTm9uZSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgTm9uZSwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZSkpXG4gICAgICB8IE5hbWVkIChfLCByMSksIHQyIC0+XG4gICAgICAgIChtYXRjaCByMSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDEpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IHQxLCBOYW1lZCAoXywgcjIpIC0+XG4gICAgICAgIChtYXRjaCByMiB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IEludCwgSW50IC0+IFNvbWUgRS5UXG4gICAgICB8IEludDMyLCBJbnQzMiAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQ2NCwgSW50NjQgLT4gU29tZSBFLlRcbiAgICAgIHwgTmF0aXZlaW50LCBOYXRpdmVpbnQgLT4gU29tZSBFLlRcbiAgICAgIHwgQ2hhciwgQ2hhciAtPiBTb21lIEUuVFxuICAgICAgfCBGbG9hdCwgRmxvYXQgLT4gU29tZSBFLlRcbiAgICAgIHwgU3RyaW5nLCBTdHJpbmcgLT4gU29tZSBFLlRcbiAgICAgIHwgQnl0ZXMsIEJ5dGVzIC0+IFNvbWUgRS5UXG4gICAgICB8IEJvb2wsIEJvb2wgLT4gU29tZSBFLlRcbiAgICAgIHwgVW5pdCwgVW5pdCAtPiBTb21lIEUuVFxuICAgICAgfCBPcHRpb24gcjEsIE9wdGlvbiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMaXN0IHIxLCBMaXN0IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEFycmF5IHIxLCBBcnJheSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMYXp5IHIxLCBMYXp5IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IFJlZiByMSwgUmVmIHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEZ1bmN0aW9uIChkb20xLCBybmcxKSwgRnVuY3Rpb24gKGRvbTIsIHJuZzIpIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgZG9tMSBkb20yLCBzYW1lX3dpdG5lc3Mgcm5nMSBybmcyIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICB8IFR1cGxlIHQxLCBUdXBsZSB0MiAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSBUeXBlcmVwLlR1cGxlIGluXG4gICAgICAgIChtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgfCBULlQyIChhMSwgYjEpLCBULlQyIChhMiwgYjIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQzIChhMSwgYjEsIGMxKSwgVC5UMyAoYTIsIGIyLCBjMikgLT5cbiAgICAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8gfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQ0IChhMSwgYjEsIGMxLCBkMSksIFQuVDQgKGEyLCBiMiwgYzIsIGQyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIsIHNhbWVfd2l0bmVzcyBjMSBjMiwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8gfCBfLCBOb25lLCBfLCBfIHwgXywgXywgTm9uZSwgXyB8IF8sIF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNSAoYTEsIGIxLCBjMSwgZDEsIGUxKSwgVC5UNSAoYTIsIGIyLCBjMiwgZDIsIGUyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgKCBzYW1lX3dpdG5lc3MgYTEgYTJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYjEgYjJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYzEgYzJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZDEgZDJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZTEgZTIgKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBOb25lLCBfLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIE5vbmUsIF8sIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgTm9uZSwgX1xuICAgICAgICAgICAgfCBfLCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDIgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDMgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDQgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDUgXywgXyAtPiBOb25lKVxuICAgICAgfCBSZWNvcmQgcjEsIFJlY29yZCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMSlcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgVmFyaWFudCByMSwgVmFyaWFudCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIyKVxuICAgICAgfCBJbnQsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQzMiwgXyAtPiBOb25lXG4gICAgICB8IEludDY0LCBfIC0+IE5vbmVcbiAgICAgIHwgTmF0aXZlaW50LCBfIC0+IE5vbmVcbiAgICAgIHwgQ2hhciwgXyAtPiBOb25lXG4gICAgICB8IEZsb2F0LCBfIC0+IE5vbmVcbiAgICAgIHwgU3RyaW5nLCBfIC0+IE5vbmVcbiAgICAgIHwgQnl0ZXMsIF8gLT4gTm9uZVxuICAgICAgfCBCb29sLCBfIC0+IE5vbmVcbiAgICAgIHwgVW5pdCwgXyAtPiBOb25lXG4gICAgICB8IE9wdGlvbiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgTGlzdCBfLCBfIC0+IE5vbmVcbiAgICAgIHwgQXJyYXkgXywgXyAtPiBOb25lXG4gICAgICB8IExhenkgXywgXyAtPiBOb25lXG4gICAgICB8IFJlZiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgRnVuY3Rpb24gXywgXyAtPiBOb25lXG4gICAgICB8IFR1cGxlIF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWNvcmQgXywgXyAtPiBOb25lXG4gICAgICB8IFZhcmlhbnQgXywgXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWUgYSBiID0gc2FtZV93aXRuZXNzIGEgYiA8PiBOb25lXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gYSBiID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgYSBiIHdpdGhcbiAgICB8IFNvbWUgcHJvb2YgLT4gcHJvb2ZcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWFkID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQgKF8sIFNvbWUgKGxhenkgdCkpIC0+IGhlYWQgdFxuICAgIHwgdCAtPiB0XG4gIDs7XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfaW50ID0gVHlwZXJlcC5JbnRcbmxldCB0eXBlcmVwX29mX2ludDMyID0gVHlwZXJlcC5JbnQzMlxubGV0IHR5cGVyZXBfb2ZfaW50NjQgPSBUeXBlcmVwLkludDY0XG5sZXQgdHlwZXJlcF9vZl9uYXRpdmVpbnQgPSBUeXBlcmVwLk5hdGl2ZWludFxubGV0IHR5cGVyZXBfb2ZfY2hhciA9IFR5cGVyZXAuQ2hhclxubGV0IHR5cGVyZXBfb2ZfZmxvYXQgPSBUeXBlcmVwLkZsb2F0XG5sZXQgdHlwZXJlcF9vZl9zdHJpbmcgPSBUeXBlcmVwLlN0cmluZ1xubGV0IHR5cGVyZXBfb2ZfYnl0ZXMgPSBUeXBlcmVwLkJ5dGVzXG5sZXQgdHlwZXJlcF9vZl9ib29sID0gVHlwZXJlcC5Cb29sXG5sZXQgdHlwZXJlcF9vZl91bml0ID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl9vcHRpb24gcmVwID0gVHlwZXJlcC5PcHRpb24gcmVwXG5sZXQgdHlwZXJlcF9vZl9saXN0IHJlcCA9IFR5cGVyZXAuTGlzdCByZXBcbmxldCB0eXBlcmVwX29mX2FycmF5IHJlcCA9IFR5cGVyZXAuQXJyYXkgcmVwXG5sZXQgdHlwZXJlcF9vZl9sYXp5X3QgcmVwID0gVHlwZXJlcC5MYXp5IHJlcFxubGV0IHR5cGVyZXBfb2ZfcmVmIHJlcCA9IFR5cGVyZXAuUmVmIHJlcFxubGV0IHR5cGVyZXBfb2ZfZnVuY3Rpb24gZG9tIHJuZyA9IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUwID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl90dXBsZTIgYSBiID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMiAoYSwgYikpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTMgYSBiIGMgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQzIChhLCBiLCBjKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlNCBhIGIgYyBkID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTUgYSBiIGMgZCBlID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNSAoYSwgYiwgYywgZCwgZSkpXG5cbmluY2x1ZGUgTmFtZV9vZlxuXG5sZXQgdmFsdWVfdHVwbGUwID0gKClcblxubGV0IHR5cGVyZXBfb2ZfaW50NjMsIHR5cGVuYW1lX29mX2ludDYzID1cbiAgbGV0IHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHJcbiAgICA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBhIFR5cGVyZXAudCAqIGEgVHlwZW5hbWUudFxuICAgID0gZnVuY3Rpb25cbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IHR5cGVyZXBfb2ZfaW50LCB0eXBlbmFtZV9vZl9pbnRcbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gdHlwZXJlcF9vZl9pbnQ2NCwgdHlwZW5hbWVfb2ZfaW50NjRcbiAgaW5cbiAgdHlwZXJlcF9hbmRfdHlwZW5hbWVfb2ZfaW50NjNfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuOztcbiIsIigqIHVzaW5nIHRoZSBoYXNoX3ZhcmlhbnQgb2YgcGFfdHlwZV9jb252IGF0IGNvbXBpbGUgdGltZSAqKVxubGV0IHJlcHJfb2ZfcG9seV92YXJpYW50IDogWz4gXSAtPiBpbnQgPVxuICBmdW4gdmFyaWFudCAtPlxuICBsZXQgb2JqID0gT2JqLnJlcHIgdmFyaWFudCBpblxuICBpZiBPYmouaXNfaW50IG9ialxuICB0aGVuIE9iai5vYmogb2JqXG4gIGVsc2UgKFxuICAgIGxldCBzaXplID0gT2JqLnNpemUgb2JqIGluXG4gICAgYXNzZXJ0IChzaXplID0gMik7XG4gICAgbGV0IHJlcHIgPSBPYmouZmllbGQgb2JqIDAgaW5cbiAgICBhc3NlcnQgKE9iai5pc19pbnQgcmVwcik7XG4gICAgT2JqLm9iaiByZXByKVxuOztcblxubGV0IGhhc2hfdmFyaWFudCBzID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gKDIyMyAqICFhY2N1KSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKCgxIGxzbCAzMSkgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdVxuOztcblxuKCogYSBmZXcgdW5pdCB0ZXN0cyBvZiBjYXNlcyB0aGF0IGhhdmUgdHJpZ2dlcmVkIGRpZmZzIGluIHRoZSBwYXN0IG9mIHRoaXNcbiAgIGxpYiAqKVxubGV0ICgpID0gYXNzZXJ0IChyZXByX29mX3BvbHlfdmFyaWFudCBgTGF0ZW5jeV9zdGF0cyA9IGhhc2hfdmFyaWFudCBcIkxhdGVuY3lfc3RhdHNcIilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYHplcm8gPSBoYXNoX3ZhcmlhbnQgXCJ6ZXJvXCIpXG5sZXRbQGlubGluZSBuZXZlcl0gZG91YmxlX2FycmF5X3ZhbHVlICgpID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqLm1hZ2ljIDAuKVxubGV0IGhhc19kb3VibGVfYXJyYXlfdGFnIGEgPSBPYmouZG91YmxlX2FycmF5X3RhZyA9IE9iai50YWcgKE9iai5yZXByIGEpXG5cbmxldCAoKSA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgZG91YmxlID1cbiAgICAgIHsgYSA6IGZsb2F0XG4gICAgICA7IGIgOiBmbG9hdFxuICAgICAgfVxuXG4gICAgdHlwZSBzaW1wbGUgPVxuICAgICAgeyBjIDogZmxvYXRcbiAgICAgIDsgZCA6IGludFxuICAgICAgfVxuXG4gICAgbGV0IGRvdWJsZSA9IHsgYSA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKTsgYiA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKSB9XG4gICAgbGV0IHNpbXBsZSA9IHsgYyA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKTsgZCA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKSB9XG4gIGVuZFxuICBpblxuICBhc3NlcnQgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uZG91YmxlKTtcbiAgYXNzZXJ0IChub3QgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uc2ltcGxlKSlcbjs7XG4iLCJtb2R1bGUgTSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGNvbXB1dGUgOiB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gKCdhLCAnYikgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAoJ2EsICdiLCAnYykgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAnZCBYLnQgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgWC50XG4gICAgICAtPiAnYiBYLnRcbiAgICAgIC0+ICdjIFgudFxuICAgICAgLT4gJ2QgWC50XG4gICAgICAtPiAnZSBYLnRcbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgWC50XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50ZiA9IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmXG5cbm1vZHVsZSBIZWxwZXIgKEEgOiBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TKSAoQiA6IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMpID0gc3RydWN0XG4gIHR5cGUgbWFwID0geyBtYXAgOiAnYS4gJ2EgQS50IC0+ICdhIEIudCB9XG5cbiAgbGV0IG1hcF92YXJpYW50ICh0eXBlIHZhcmlhbnQpIHsgbWFwIH0gKHZhcmlhbnQgOiB2YXJpYW50IEEuVmFyaWFudC50KSA9XG4gICAgbGV0IG1hcF9jcmVhdGUgPSBmdW5jdGlvblxuICAgICAgfCBBLlRhZy5BcmdzIGZjdCAtPiBCLlRhZ19pbnRlcm5hbC5BcmdzIGZjdFxuICAgICAgfCBBLlRhZy5Db25zdCBrIC0+IEIuVGFnX2ludGVybmFsLkNvbnN0IGtcbiAgICBpblxuICAgIGxldCBtYXBfdGFnIHRhZyA9XG4gICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVGFnIHRhZyAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBBLlRhZy5sYWJlbCB0YWcgaW5cbiAgICAgICAgbGV0IHJlcCA9IG1hcCAoQS5UYWcudHJhdmVyc2UgdGFnKSBpblxuICAgICAgICBsZXQgYXJpdHkgPSBBLlRhZy5hcml0eSB0YWcgaW5cbiAgICAgICAgbGV0IGFyZ3NfbGFiZWxzID0gQS5UYWcuYXJnc19sYWJlbHMgdGFnIGluXG4gICAgICAgIGxldCBpbmRleCA9IEEuVGFnLmluZGV4IHRhZyBpblxuICAgICAgICBsZXQgb2NhbWxfcmVwciA9IEEuVGFnLm9jYW1sX3JlcHIgdGFnIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5UYWcudHlpZCB0YWcgaW5cbiAgICAgICAgbGV0IGNyZWF0ZSA9IG1hcF9jcmVhdGUgKEEuVGFnLmNyZWF0ZSB0YWcpIGluXG4gICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5UYWdcbiAgICAgICAgICAoQi5UYWcuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgICAgICAgICB7IEIuVGFnX2ludGVybmFsLmxhYmVsXG4gICAgICAgICAgICAgOyByZXBcbiAgICAgICAgICAgICA7IGFyaXR5XG4gICAgICAgICAgICAgOyBhcmdzX2xhYmVsc1xuICAgICAgICAgICAgIDsgaW5kZXhcbiAgICAgICAgICAgICA7IG9jYW1sX3JlcHJcbiAgICAgICAgICAgICA7IHR5aWRcbiAgICAgICAgICAgICA7IGNyZWF0ZVxuICAgICAgICAgICAgIH0pXG4gICAgaW5cbiAgICBsZXQgdHlwZW5hbWUgPSBBLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50IGluXG4gICAgbGV0IHBvbHltb3JwaGljID0gQS5WYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQgaW5cbiAgICBsZXQgdGFncyA9XG4gICAgICBBcnJheS5pbml0IChBLlZhcmlhbnQubGVuZ3RoIHZhcmlhbnQpIChmdW4gaW5kZXggLT5cbiAgICAgICAgbWFwX3RhZyAoQS5WYXJpYW50LnRhZyB2YXJpYW50IGluZGV4KSlcbiAgICBpblxuICAgIGxldCB2YWx1ZSAoYSA6IHZhcmlhbnQpID1cbiAgICAgIG1hdGNoIEEuVmFyaWFudC52YWx1ZSB2YXJpYW50IGEgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVmFsdWUgKGF0YWcsIGEpIC0+XG4gICAgICAgIChmdW4gKHR5cGUgYXJncykgKGF0YWcgOiAodmFyaWFudCwgYXJncykgQS5UYWcudCkgKGEgOiBhcmdzKSAtPlxuICAgICAgICAgICBsZXQgKEIuVmFyaWFudF9pbnRlcm5hbC5UYWcgYnRhZykgPSB0YWdzLihBLlRhZy5pbmRleCBhdGFnKSBpblxuICAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYnRhZyA6ICh2YXJpYW50LCBleCkgQi5UYWcudCkgLT5cbiAgICAgICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biAoQS5UYWcudHlpZCBhdGFnKSAoQi5UYWcudHlpZCBidGFnKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYnRhZyA9IChidGFnIDogKHZhcmlhbnQsIGFyZ3MpIEIuVGFnLnQpIGluXG4gICAgICAgICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5WYWx1ZSAoYnRhZywgYSkpXG4gICAgICAgICAgICAgYnRhZylcbiAgICAgICAgICBhdGFnXG4gICAgICAgICAgYVxuICAgIGluXG4gICAgQi5WYXJpYW50LmludGVybmFsX3VzZV9vbmx5IHsgQi5WYXJpYW50X2ludGVybmFsLnR5cGVuYW1lOyB0YWdzOyBwb2x5bW9ycGhpYzsgdmFsdWUgfVxuICA7O1xuXG4gIGxldCBtYXBfcmVjb3JkICh0eXBlIHJlY29yZCkgeyBtYXAgfSAocmVjb3JkIDogcmVjb3JkIEEuUmVjb3JkLnQpID1cbiAgICBsZXQgbWFwX2ZpZWxkIGZpZWxkID1cbiAgICAgIG1hdGNoIGZpZWxkIHdpdGhcbiAgICAgIHwgQS5SZWNvcmQuRmllbGQgZmllbGQgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gQS5GaWVsZC5sYWJlbCBmaWVsZCBpblxuICAgICAgICBsZXQgcmVwID0gbWFwIChBLkZpZWxkLnRyYXZlcnNlIGZpZWxkKSBpblxuICAgICAgICBsZXQgaW5kZXggPSBBLkZpZWxkLmluZGV4IGZpZWxkIGluXG4gICAgICAgIGxldCBpc19tdXRhYmxlID0gQS5GaWVsZC5pc19tdXRhYmxlIGZpZWxkIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5GaWVsZC50eWlkIGZpZWxkIGluXG4gICAgICAgIGxldCBnZXQgPSBBLkZpZWxkLmdldCBmaWVsZCBpblxuICAgICAgICBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZFxuICAgICAgICAgIChCLkZpZWxkLmludGVybmFsX3VzZV9vbmx5XG4gICAgICAgICAgICAgeyBCLkZpZWxkX2ludGVybmFsLmxhYmVsOyByZXA7IGluZGV4OyBpc19tdXRhYmxlOyB0eWlkOyBnZXQgfSlcbiAgICBpblxuICAgIGxldCB0eXBlbmFtZSA9IEEuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVjb3JkIGluXG4gICAgbGV0IGhhc19kb3VibGVfYXJyYXlfdGFnID0gQS5SZWNvcmQuaGFzX2RvdWJsZV9hcnJheV90YWcgcmVjb3JkIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBBcnJheS5pbml0IChBLlJlY29yZC5sZW5ndGggcmVjb3JkKSAoZnVuIGluZGV4IC0+XG4gICAgICAgIG1hcF9maWVsZCAoQS5SZWNvcmQuZmllbGQgcmVjb3JkIGluZGV4KSlcbiAgICBpblxuICAgIGxldCBjcmVhdGUgeyBCLlJlY29yZF9pbnRlcm5hbC5nZXQgfSA9XG4gICAgICBsZXQgZ2V0ICh0eXBlIGEpIChhZmllbGQgOiAoXywgYSkgQS5GaWVsZC50KSA9XG4gICAgICAgIG1hdGNoIGZpZWxkcy4oQS5GaWVsZC5pbmRleCBhZmllbGQpIHdpdGhcbiAgICAgICAgfCBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZCBiZmllbGQgLT5cbiAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYmZpZWxkIDogKHJlY29yZCwgZXgpIEIuRmllbGQudCkgLT5cbiAgICAgICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gKEEuRmllbGQudHlpZCBhZmllbGQpIChCLkZpZWxkLnR5aWQgYmZpZWxkKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IGJmaWVsZCA9IChiZmllbGQgOiAocmVjb3JkLCBhKSBCLkZpZWxkLnQpIGluXG4gICAgICAgICAgICAgZ2V0IGJmaWVsZClcbiAgICAgICAgICAgIGJmaWVsZFxuICAgICAgaW5cbiAgICAgIEEuUmVjb3JkLmNyZWF0ZSByZWNvcmQgeyBBLlJlY29yZC5nZXQgfVxuICAgIGluXG4gICAgQi5SZWNvcmQuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgIHsgQi5SZWNvcmRfaW50ZXJuYWwudHlwZW5hbWU7IGZpZWxkczsgaGFzX2RvdWJsZV9hcnJheV90YWc7IGNyZWF0ZSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgTmFtZWQgPSBzaWdcbiAgdHlwZSAnYSBjb21wdXRhdGlvblxuXG4gIG1vZHVsZSBDb250ZXh0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBpbml0IDogQ29udGV4dC50IC0+ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgZ2V0X3dpcF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNldF9maW5hbF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNoYXJlIDogXyBUeXBlcmVwLnQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXB1dGF0aW9uID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIGludCA6IGludCB0XG4gIHZhbCBpbnQzMiA6IGludDMyIHRcbiAgdmFsIGludDY0IDogaW50NjQgdFxuICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgdmFsIGZsb2F0IDogZmxvYXQgdFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICB2YWwgYm9vbCA6IGJvb2wgdFxuICB2YWwgdW5pdCA6IHVuaXQgdFxuICB2YWwgb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICB2YWwgbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gIHZhbCBhcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICB2YWwgbGF6eV90IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICB2YWwgcmVmXyA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgdmFsIGZ1bmN0aW9uXyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgLT4gJ2IpIHRcbiAgdmFsIHR1cGxlMiA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHVwbGUzIDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gKCdhICogJ2IgKiAnYykgdFxuICB2YWwgdHVwbGU0IDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gJ2QgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgdmFsIHR1cGxlNSA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICdkIHQgLT4gJ2UgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuICB2YWwgcmVjb3JkIDogJ2EgUmVjb3JkLnQgLT4gJ2EgdFxuICB2YWwgdmFyaWFudCA6ICdhIFZhcmlhbnQudCAtPiAnYSB0XG5cbiAgbW9kdWxlIE5hbWVkIDogTmFtZWQgd2l0aCB0eXBlICdhIGNvbXB1dGF0aW9uIDo9ICdhIHRcbmVuZFxuXG4oKiBzcGVjaWFsIGZ1bmN0b3IgYXBwbGljYXRpb24gZm9yIGNvbXB1dGF0aW9uIGFzIGNsb3N1cmUgb2YgdGhlIGZvcm0gW2EgLT4gYl0gKilcbm1vZHVsZSBNYWtlX25hbWVkX2Zvcl9jbG9zdXJlIChYIDogc2lnXG4gICAgdHlwZSAnYSBpbnB1dFxuICAgIHR5cGUgJ2Egb3V0cHV0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaW5wdXQgLT4gJ2Egb3V0cHV0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGlnbm9yZVxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcnVudGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudFxuICAgIDsgcnVudGltZV9yZWZlcmVuY2UgOiAnYSBYLnQgcmVmXG4gICAgOyBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudCBvcHRpb24gcmVmXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IGluaXQgKCkgbmFtZSA9XG4gICAgbGV0IHBhdGggPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIG5hbWUpIGluXG4gICAgbGV0IHIgPSByZWYgKGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWQgcGF0aCkpIGluXG4gICAgeyBydW50aW1lX2RlcmVmZXJlbmNlID0gKGZ1biBpbnB1dCAtPiAhciBpbnB1dClcbiAgICA7IHJ1bnRpbWVfcmVmZXJlbmNlID0gclxuICAgIDsgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSByZWYgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWQgPVxuICAgIG1hdGNoIHNoYXJlZC5jb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIGNsb3MgLT4gY2xvc1xuICAgIHwgTm9uZSAtPiBzaGFyZWQucnVudGltZV9kZXJlZmVyZW5jZVxuICA7O1xuXG4gIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uID1cbiAgICBsZXQgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSBzaGFyZWQuY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgaW5cbiAgICBtYXRjaCBjb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBCYXNlLnBoeXNfZXF1YWwgc2hhcmVkLnJ1bnRpbWVfZGVyZWZlcmVuY2UgY29tcHV0YXRpb24gdGhlbiBhc3NlcnQgZmFsc2U7XG4gICAgICBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6PSBTb21lIGNvbXB1dGF0aW9uO1xuICAgICAgc2hhcmVkLnJ1bnRpbWVfcmVmZXJlbmNlIDo9IGNvbXB1dGF0aW9uO1xuICAgICAgY29tcHV0YXRpb25cbiAgOztcblxuICBsZXQgc2hhcmUgXyA9IHRydWVcbmVuZFxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGltcGxlbWVudHMgOiBUeXBlbmFtZS5VaWQudCAtPiBib29sXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBCcm9rZW5fZGVwZW5kZW5jeSBvZiBzdHJpbmdcblxuICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzIG5hbWUgcmVxdWlyZWQgPVxuICAgIG1hdGNoIHJlcXVpcmVkIHdpdGhcbiAgICB8IFtdIC0+IGZ1biBfIC0+ICgpXG4gICAgfCBfIC0+XG4gICAgICBmdW4gdWlkIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4geyBuYW1lID0gbmFtZSc7IGltcGxlbWVudHMgfSAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoaW1wbGVtZW50cyB1aWQpXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAoKiBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgc2V0IHVwLCB0aGlzIGlzIGFuIGVycm9yIGR1cmluZyB0aGVcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwcm9ncmFtLCB3ZSByYXRoZXIgZmFpbCB3aXRoIGEgaHVtYW5cbiAgICAgICAgICAgICAgICAgIHJlYWRhYmxlIG91dHB1dCAqKVxuICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiVHlwZV9nZW5lcmljICVTIHJlcXVpcmVzICVTIGZvciB1aWQgJVNcXG5cIlxuICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgICBuYW1lJ1xuICAgICAgICAgICAgICAgICAgIChUeXBlbmFtZS5VaWQubmFtZSB1aWQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgcHJlcnJfZW5kbGluZSBtZXNzYWdlO1xuICAgICAgICAgICAgICAgcmFpc2UgKEJyb2tlbl9kZXBlbmRlbmN5IG1lc3NhZ2UpKSlcbiAgICAgICAgICByZXF1aXJlZFxuICA7O1xuZW5kXG5cbigqIEV4dGVuZGluZyBhbiBleGlzdGluZyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBFeHRlbmRpbmcgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG5cbiAgdmFsIGlkZW50IDogSWRlbnQudFxuXG4gICgqIGdlbmVyaWNfaWRlbnQgKiB0eXBlbmFtZSBvciBpbmZvICopXG4gIGV4Y2VwdGlvbiBOb3RfaW1wbGVtZW50ZWQgb2Ygc3RyaW5nICogc3RyaW5nXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBjb21wdXRlIDogdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIGNvbXB1dGF0aW9uIC0+ICdhIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBjb21wdXRhdGlvbiAtPiAnYiBjb21wdXRhdGlvbiAtPiAoJ2EsICdiKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICdlIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIHZhbCByZWdpc3RlcjAgOiAobW9kdWxlIFMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMSA6IChtb2R1bGUgUzEpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMiA6IChtb2R1bGUgUzIpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMyA6IChtb2R1bGUgUzMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNCA6IChtb2R1bGUgUzQpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNSA6IChtb2R1bGUgUzUpIC0+IHVuaXRcblxuICAoKiBzcGVjaWFsIGxlc3Mgc2NhcnkgdHlwZSB3aGVuIHRoZSB0eXBlIGhhcyBubyBwYXJhbWV0ZXJzICopXG4gIHZhbCByZWdpc3RlciA6ICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiAtPiB1bml0XG5cbiAgKCpcbiAgICAgRXNzZW50aWFsbHkgYmVjYXVzZSB3ZSBjYW5ub3QgdGFsayBhYm91dCBhIHZhcmlhYmxlIG9mIGtpbmQgKiAtPiBrXG4gICAgIHZhbCByZWdpc3RlcjEgOiAnYSAndCBUeXBlcmVwLnQgLT4gKCdhIGNvbXB1dGF0aW9uIC0+ICdhICd0IGNvbXB1dGF0aW9uKSAtPiB1bml0XG4gICAgIC4uLlxuICAqKVxuZW5kXG5cbigqIEltcGxlbWVudGluZyBhIG5ldyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBTX2ltcGxlbWVudGF0aW9uID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5kaW5nXG5cbiAgKCogcmFpc2UgdXNpbmcgdGhlIGN1cnJlbnQgaWRlbnQgKilcbiAgdmFsIHJhaXNlX25vdF9pbXBsZW1lbnRlZCA6IHN0cmluZyAtPiAnYVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICAoKlxuICAgICBTdGFuZGFyZCBjYXNlLCBmaW5kIGEgZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24sIG9yIGxvb2sgaW4gdGhlIGNvbnRlbnRcbiAgKilcbiAgdmFsIF91c2luZ19leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgVHlwZXJlcC50IGxhenlfdCBvcHRpb25cbiAgICAtPiAnYSBjb21wdXRhdGlvblxuXG4gICgqXG4gICAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSBtb3JlIGNvbnRyb2wgb24gd2hhdCB5b3Ugd2FudCB0byBkb1xuICAqKVxuICB2YWwgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgY29tcHV0YXRpb24gb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuZGluZ1xuXG4gIHZhbCBvZl90eXBlcmVwIDogJ2EgVHlwZXJlcC50IC0+IFsgYGdlbmVyaWMgb2YgJ2EgY29tcHV0YXRpb24gXVxuXG4gIG1vZHVsZSBDb21wdXRhdGlvbiA6IENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfaW1wbGVtZW50YXRpb24gKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG4gIGVuZCkgOiBTX2ltcGxlbWVudGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFgudFxuICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcblxuICAoKiB3ZSBkbyBub3QgdXNlIGNvcmUgc2luY2Ugd2UgYXJlIGVhcmxpZXIgaW4gdGhlIGRlcGVuZGVuY2llcyBncmFwaCAqKVxuICBtb2R1bGUgVWlkX3RhYmxlID0gc3RydWN0XG4gICAgaW5jbHVkZSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLlVpZClcblxuICAgIGxldCBmaW5kIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgdHJ5IFNvbWUgKGZpbmQgdGFibGUga2V5KSB3aXRoXG4gICAgICAgIHwgQmFzZS5Ob3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgZWxzZSBOb25lXG4gICAgOztcblxuICAgIGxldCBjaGVja19kZXBlbmRlbmNpZXMgPSBJZGVudC5jaGVja19kZXBlbmRlbmNpZXMgWC5uYW1lIFgucmVxdWlyZWRcblxuICAgIGxldCByZXBsYWNlIHRhYmxlIGtleSB2YWx1ZSA9XG4gICAgICBjaGVja19kZXBlbmRlbmNpZXMga2V5O1xuICAgICAgcmVwbGFjZSAoTGF6eS5mb3JjZSB0YWJsZSkga2V5IHZhbHVlXG4gICAgOztcblxuICAgIGxldCBtZW0gdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICBtZW0gdGFibGUga2V5KVxuICAgICAgZWxzZSBmYWxzZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzaXplID0gMjU2XG4gIGxldCB0YWJsZTAgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTEgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTIgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTMgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTQgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTUgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG5cbiAgbGV0IGlzX3JlZ2lzdGVyZWQgdWlkID1cbiAgICBVaWRfdGFibGUubWVtIHRhYmxlMCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMSB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMiB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMyB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNSB1aWRcbiAgOztcblxuICBsZXQgaWRlbnQgPSB7IElkZW50Lm5hbWUgPSBYLm5hbWU7IGltcGxlbWVudHMgPSBpc19yZWdpc3RlcmVkIH1cblxuICBtb2R1bGUgRmluZDAgKFQgOiBUeXBlcmVwLk5hbWVkLlQwKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlIDogdW5pdCAtPiBULm5hbWVkIGNvbXB1dGF0aW9uIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTAgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUyA9ICh2YWwgcmVwIDogUykgaW5cbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIFMudHlwZW5hbWVfb2ZfdCBULnR5cGVuYW1lX29mX25hbWVkIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCB3aXRuZXNzKSBTLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQxIChUIDogVHlwZXJlcC5OYW1lZC5UMSkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMSAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgcmVwIDogUzEpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8xXG4gICAgICAgICAgICAoUzEpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gVC5hIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzEuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDIgKFQgOiBUeXBlcmVwLk5hbWVkLlQyKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTIgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIHJlcCA6IFMyKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMlxuICAgICAgICAgICAgKFMyKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMi5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMyAoVCA6IFR5cGVyZXAuTmFtZWQuVDMpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYykgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMyAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgcmVwIDogUzMpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8zXG4gICAgICAgICAgICAoUzMpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+IFQuYyBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMzLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQ0IChUIDogVHlwZXJlcC5OYW1lZC5UNCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTQgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzQgPSAodmFsIHJlcCA6IFM0KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNFxuICAgICAgICAgICAgKFM0KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICgnYSwgJ2IsICdjLCAnZCkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNC5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNSAoVCA6IFR5cGVyZXAuTmFtZWQuVDUpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTUgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIHJlcCA6IFM1KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNVxuICAgICAgICAgICAgKFM1KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAoJ2EsICdiLCAnYywgJ2QsICdlKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNS5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB1bml0ID0gVHlwZW5hbWUuc3RhdGljXG5cbiAgbGV0IHJlZ2lzdGVyMCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMgPSAodmFsIGNvbXB1dGUgOiBTKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgUy50eXBlbmFtZV9vZl90IGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUwIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMxID0gKHZhbCBjb21wdXRlIDogUzEpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzEudHlwZW5hbWVfb2ZfdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjIgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMiA9ICh2YWwgY29tcHV0ZSA6IFMyKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMyLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMiB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjMgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgY29tcHV0ZSA6IFMzKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMzLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUzIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyNCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCBjb21wdXRlIDogUzQpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzQudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjUgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNSA9ICh2YWwgY29tcHV0ZSA6IFM1KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM1LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlciAodHlwZSBhKSB0eXBlcmVwX29mX2EgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IGNvbXB1dGUgPSBjb21wdXRlXG4gICAgZW5kXG4gICAgaW5cbiAgICByZWdpc3RlcjAgKG1vZHVsZSBTIDogUylcbiAgOztcblxuICAoKiBJTVBMRU1FTlRBVElPTiAqKVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICBsZXQgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiAodHlwZSBhKSBhdXggPSBmdW5jdGlvblxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMCByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQwIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQxIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID0gKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSA6IFQuYSBULm5hbWVkIGNvbXB1dGF0aW9uKSBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDIgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDIgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMiAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgOiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDMgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMyAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDQgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDQgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYykgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UNSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQ1IChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5hKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5iKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5jKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5kKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5lKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgOztcblxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIGxldCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgc3RyaW5nID0gcmFpc2UgKE5vdF9pbXBsZW1lbnRlZCAoWC5uYW1lLCBzdHJpbmcpKVxuXG4gIGxldCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gYXV4IHJlcCBjb250ZW50ID1cbiAgICBtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgd2l0aFxuICAgIHwgU29tZSBjb21wdXRhdGlvbiAtPiBjb21wdXRhdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPiBhdXguZ2VuZXJpYyBjb250ZW50XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgcmVwIGluXG4gICAgICAgICBsZXQgbmFtZSA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgdHlwZW5hbWUpIGluXG4gICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgXyA9IEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuS2V5KVxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcblxuICAgIGluY2x1ZGUgQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29tcHV0YXRpb24gPSBYXG4gIGluY2x1ZGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYKVxuXG4gIG1vZHVsZSBNZW1vID0gVHlwZW5hbWUuVGFibGUgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgWC5OYW1lZC50XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZWxwZXIgPSBIZWxwZXIgKFR5cGVyZXApIChDb21wdXRhdGlvbilcblxuICBsZXQgb2ZfdHlwZXJlcCByZXAgPVxuICAgIGxldCBjb250ZXh0ID0gWC5OYW1lZC5Db250ZXh0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBtZW1vX3RhYmxlID0gTWVtby5jcmVhdGUgMzIgaW5cbiAgICBsZXQgcmVjIG9mX3R5cGVyZXAgOiB0eXBlIGEuIGEgVHlwZXJlcC50IC0+IGEgdCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuSW50IC0+IFguaW50XG4gICAgICB8IFR5cGVyZXAuSW50MzIgLT4gWC5pbnQzMlxuICAgICAgfCBUeXBlcmVwLkludDY0IC0+IFguaW50NjRcbiAgICAgIHwgVHlwZXJlcC5OYXRpdmVpbnQgLT4gWC5uYXRpdmVpbnRcbiAgICAgIHwgVHlwZXJlcC5DaGFyIC0+IFguY2hhclxuICAgICAgfCBUeXBlcmVwLkZsb2F0IC0+IFguZmxvYXRcbiAgICAgIHwgVHlwZXJlcC5TdHJpbmcgLT4gWC5zdHJpbmdcbiAgICAgIHwgVHlwZXJlcC5CeXRlcyAtPiBYLmJ5dGVzXG4gICAgICB8IFR5cGVyZXAuQm9vbCAtPiBYLmJvb2xcbiAgICAgIHwgVHlwZXJlcC5Vbml0IC0+IFgudW5pdFxuICAgICAgfCBUeXBlcmVwLk9wdGlvbiByZXAgLT4gWC5vcHRpb24gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxpc3QgcmVwIC0+IFgubGlzdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuQXJyYXkgcmVwIC0+IFguYXJyYXkgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxhenkgcmVwIC0+IFgubGF6eV90IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5SZWYgcmVwIC0+IFgucmVmXyAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKSAtPiBYLmZ1bmN0aW9uXyAob2ZfdHlwZXJlcCBkb20pIChvZl90eXBlcmVwIHJuZylcbiAgICAgIHwgVHlwZXJlcC5UdXBsZSB0dXBsZSAtPlxuICAgICAgICAoKiBkbyBOT1Qgd3JpdGUgW1gudHVwbGUyIChvZl90eXBlcmVwIGEpIChvZl90eXBlcmVwIGIpXVxuICAgICAgICAgICBiZWNhdXNlIG9mX3R5cGVyZXAgY2FuIGNvbnRhaW4gYSBzaWRlIGVmZmVjdCBhbmQgW2FdIHNob3VsZCBiZSBleGVjdXRlZFxuICAgICAgICAgICBiZWZvcmUgW2JdICopXG4gICAgICAgIChtYXRjaCB0dXBsZSB3aXRoXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgWC50dXBsZTIgcmEgcmJcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgWC50dXBsZTMgcmEgcmIgcmNcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgbGV0IHJkID0gb2ZfdHlwZXJlcCBkIGluXG4gICAgICAgICAgIFgudHVwbGU0IHJhIHJiIHJjIHJkXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBsZXQgcmUgPSBvZl90eXBlcmVwIGUgaW5cbiAgICAgICAgICAgWC50dXBsZTUgcmEgcmIgcmMgcmQgcmUpXG4gICAgICB8IFR5cGVyZXAuUmVjb3JkIHJlY29yZCAtPlxuICAgICAgICBYLnJlY29yZCAoSGVscGVyLm1hcF9yZWNvcmQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHJlY29yZClcbiAgICAgIHwgVHlwZXJlcC5WYXJpYW50IHZhcmlhbnQgLT5cbiAgICAgICAgWC52YXJpYW50IChIZWxwZXIubWFwX3ZhcmlhbnQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHZhcmlhbnQpXG4gICAgICB8IFR5cGVyZXAuTmFtZWQgKG5hbWVkLCBjb250ZW50KSAtPlxuICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZWQgaW5cbiAgICAgICAgKG1hdGNoIE1lbW8uZmluZCBtZW1vX3RhYmxlIHR5cGVuYW1lIHdpdGhcbiAgICAgICAgIHwgU29tZSBzaGFyZWQgLT4gWC5OYW1lZC5nZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIChtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIHsgZ2VuZXJpYyA9IG9mX3R5cGVyZXAgfSBuYW1lZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29udGVudCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZVxuICAgICAgICAgICAgICAgfCBTb21lIChsYXp5IGNvbnRlbnQpIC0+XG4gICAgICAgICAgICAgICAgIGlmIFguTmFtZWQuc2hhcmUgY29udGVudFxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgc2hhcmVkID0gWC5OYW1lZC5pbml0IGNvbnRleHQgdHlwZW5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICBNZW1vLnNldCBtZW1vX3RhYmxlIHR5cGVuYW1lIHNoYXJlZDtcbiAgICAgICAgICAgICAgICAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgICAgICBYLk5hbWVkLnNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgICAgICAgIGVsc2Ugb2ZfdHlwZXJlcCBjb250ZW50KSkpXG4gICAgaW5cbiAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIHJlcCBpblxuICAgIGBnZW5lcmljIGNvbXB1dGF0aW9uXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkID1cbiAgICBUeXBlcmVwLk5hbWVkLlQwXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIG5hbWVkID0gWC50XG4gICAgICAgIHR5cGUgdCA9IFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgICB3aXRoIHR5cGUgdCA9IFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTEgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSkgb2ZfcDEgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3QgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSkgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQxXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICdhIG5hbWVkID0gJ2EgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgdCA9IHAxIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgICB3aXRoIHR5cGUgdCA9IHAxIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMikgb2ZfcDEgb2ZfcDIgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQyXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkID0gKCdhLCAnYikgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMykgb2ZfcDEgb2ZfcDIgb2ZfcDMgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQzXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZCA9ICgnYSwgJ2IsICdjKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U0IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSBkID0gcDRcblxuICAgICAgICBsZXQgZCA9IG9mX3A0XG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTUgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMyBwNCBwNSkgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDQpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDUpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQ1XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgZSA9IHA1XG5cbiAgICAgICAgbGV0IGUgPSBvZl9wNVxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudClcbiAgOztcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgOiBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgOiBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpIDogVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgWC50ID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgOlxuICBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgOlxuICBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgOlxuICBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIE5hbWUgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCByZWxhdGl2ZV90byA6IGRpcjpzdHJpbmcgLT4gdCAtPiBzdHJpbmdcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCByZWxhdGl2ZV90byB+ZGlyIHQgPVxuICAgIGlmIG5vdCAoU3RkbGliLkZpbGVuYW1lLmlzX3JlbGF0aXZlIHQpIHRoZW4gdCBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5jb25jYXQgZGlyIHRcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbF9kaXIgPVxuICBsZXQgZGlyX29yX2Vycm9yID1cbiAgICBtYXRjaCBTdGRsaWIuU3lzLmdldGN3ZCAoKSB3aXRoXG4gICAgfCB2IC0+IGBPayB2XG4gICAgfCBleGNlcHRpb24gZXhuIC0+IGBFeG4gZXhuXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoIGRpcl9vcl9lcnJvciB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRXhuIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbm1vZHVsZSBMb2NhdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbGVuYW1lIDogTmFtZS50XG4gICAgICA7IGxpbmVfbnVtYmVyIDogaW50XG4gICAgICA7IGxpbmVfc3RhcnQgOiBpbnRcbiAgICAgIDsgc3RhcnRfcG9zIDogaW50XG4gICAgICA7IGVuZF9wb3MgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcblxuICAgIGxldCB0X29mX3NleHAgPVxuICAgICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwMl8gPSBcImZpbGUubWwuTG9jYXRpb24uVC50XCIgaW5cbiAgICAgICBmdW4geF9fMDAzXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X3JlY29yZC5yZWNvcmRfb2Zfc2V4cFxuICAgICAgICAgICB+Y2FsbGVyOmVycm9yX3NvdXJjZV9fMDAyX1xuICAgICAgICAgICB+ZmllbGRzOlxuICAgICAgICAgICAgIChGaWVsZFxuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiZmlsZW5hbWVcIlxuICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgOyBjb252ID0gTmFtZS50X29mX3NleHBcbiAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwibGluZV9udW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwibGluZV9zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNvbnYgPSBpbnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcmVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJzdGFydF9wb3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiZW5kX3Bvc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNvbnYgPSBpbnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcmVzdCA9IEVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgIH5pbmRleF9vZl9maWVsZDooZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFwiZmlsZW5hbWVcIiAtPiAwXG4gICAgICAgICAgICAgfCBcImxpbmVfbnVtYmVyXCIgLT4gMVxuICAgICAgICAgICAgIHwgXCJsaW5lX3N0YXJ0XCIgLT4gMlxuICAgICAgICAgICAgIHwgXCJzdGFydF9wb3NcIiAtPiAzXG4gICAgICAgICAgICAgfCBcImVuZF9wb3NcIiAtPiA0XG4gICAgICAgICAgICAgfCBfIC0+IC0xKVxuICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOmZhbHNlXG4gICAgICAgICAgIH5jcmVhdGU6XG4gICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgKGZpbGVuYW1lLCAobGluZV9udW1iZXIsIChsaW5lX3N0YXJ0LCAoc3RhcnRfcG9zLCAoZW5kX3BvcywgKCkpKSkpKSA6IHQgLT5cbiAgICAgICAgICAgICAgIHsgZmlsZW5hbWU7IGxpbmVfbnVtYmVyOyBsaW5lX3N0YXJ0OyBzdGFydF9wb3M7IGVuZF9wb3MgfSlcbiAgICAgICAgICAgeF9fMDAzX1xuICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSB0X29mX3NleHBcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IGZpbGVuYW1lID0gZmlsZW5hbWVfXzAwNV9cbiAgICAgICAgICAgOyBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyX18wMDdfXG4gICAgICAgICAgIDsgbGluZV9zdGFydCA9IGxpbmVfc3RhcnRfXzAwOV9cbiAgICAgICAgICAgOyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAxMV9cbiAgICAgICAgICAgOyBlbmRfcG9zID0gZW5kX3Bvc19fMDEzX1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMDRfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDE0XyA9IHNleHBfb2ZfaW50IGVuZF9wb3NfXzAxM18gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZW5kX3Bvc1wiOyBhcmdfXzAxNF8gXSA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfaW50IHN0YXJ0X3Bvc19fMDExXyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGFydF9wb3NcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2ludCBsaW5lX3N0YXJ0X18wMDlfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVfc3RhcnRcIjsgYXJnX18wMTBfIF1cbiAgICAgICAgICAgOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX2ludCBsaW5lX251bWJlcl9fMDA3XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX251bWJlclwiOyBhcmdfXzAwOF8gXVxuICAgICAgICAgICA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDA2XyA9IE5hbWUuc2V4cF9vZl90IGZpbGVuYW1lX18wMDVfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImZpbGVuYW1lXCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDRfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIGxldCBfID0gc2V4cF9vZl90XG5cbiAgICBsZXQgY29tcGFyZSA9XG4gICAgICAoZnVuIGFfXzAxNV8gYl9fMDE2XyAtPlxuICAgICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTVfIGJfXzAxNl9cbiAgICAgICAgIHRoZW4gMFxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIG1hdGNoIE5hbWUuY29tcGFyZSBhX18wMTVfLmZpbGVuYW1lIGJfXzAxNl8uZmlsZW5hbWUgd2l0aFxuICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDE1Xy5saW5lX251bWJlciBiX18wMTZfLmxpbmVfbnVtYmVyIHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAxNV8ubGluZV9zdGFydCBiX18wMTZfLmxpbmVfc3RhcnQgd2l0aFxuICAgICAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDE1Xy5zdGFydF9wb3MgYl9fMDE2Xy5zdGFydF9wb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDE1Xy5lbmRfcG9zIGJfXzAxNl8uZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IGNvbXBhcmVcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuICBsZXQgYmVnaW5uaW5nX29mX2ZpbGUgZmlsZW5hbWUgPVxuICAgIHsgZmlsZW5hbWU7IGxpbmVfbnVtYmVyID0gMTsgbGluZV9zdGFydCA9IDA7IHN0YXJ0X3BvcyA9IDA7IGVuZF9wb3MgPSAwIH1cbiAgOztcblxuICBsZXQgb2Zfc291cmNlX2NvZGVfcG9zaXRpb24gKHBvcyA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpID1cbiAgICB7IGZpbGVuYW1lID0gTmFtZS5vZl9zdHJpbmcgKFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSBwb3MucG9zX2ZuYW1lKVxuICAgIDsgbGluZV9udW1iZXIgPSBwb3MucG9zX2xudW1cbiAgICA7IGxpbmVfc3RhcnQgPSBwb3MucG9zX2JvbFxuICAgIDsgc3RhcnRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgOyBlbmRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaWdlc3QgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfc3RyaW5nIDogdCAtPiB0IC0+IGludClcbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgZXhwZWN0ZWRfbGVuZ3RoID0gMzIgaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gZXhwZWN0ZWRfbGVuZ3RoXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmcsIHVuZXhwZWN0ZWQgbGVuZ3RoXCI7XG4gICAgZm9yIGkgPSAwIHRvIGV4cGVjdGVkX2xlbmd0aCAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gKClcbiAgICAgIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmdcIlxuICAgIGRvbmU7XG4gICAgc1xuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMiAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogU2FtZSBhcyB7IUJ5dGVzLmJsaXRfc3RyaW5nfSB3aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cbiAgICBJZiBbc10gaXMgZW1wdHksIHRoZSByZXN1bHQgaXMgdGhlIHNpbmdsZXRvbiBsaXN0IFtbXCJcIl1dLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0ICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYWNjIC0+IGNoYXIgLT4gJ2FjYykgLT4gJ2FjYyAtPiBzdHJpbmcgLT4gJ2FjY1xuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYWNjIC0+ICdhY2MpIC0+IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCJvcGVuISBCYXNlXG5vcGVuIEltcG9ydFxub3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxub3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIEJvZHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEV4YWN0IG9mIHN0cmluZ1xuICAgIHwgT3V0cHV0XG4gICAgfCBQcmV0dHkgb2YgJ2FcbiAgICB8IFVucmVhY2hhYmxlXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlLCBlcXVhbF1cblxuICBsZXQgXyA9IGZ1biAoXyA6ICdhIHQpIC0+ICgpXG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuICh0eXBlIGFfXzAwNl8pIDogKChhX18wMDZfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDA2XyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRXhhY3QgYXJnMF9fMDAyXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwMl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhhY3RcIjsgcmVzMF9fMDAzXyBdXG4gICAgICB8IE91dHB1dCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJPdXRwdXRcIlxuICAgICAgfCBQcmV0dHkgYXJnMF9fMDA0XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA1XyA9IF9vZl9hX18wMDFfIGFyZzBfXzAwNF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUHJldHR5XCI7IHJlczBfXzAwNV8gXVxuICAgICAgfCBVbnJlYWNoYWJsZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbnJlYWNoYWJsZVwiXG4gIDs7XG5cbiAgbGV0IF8gPSBzZXhwX29mX3RcblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDdfIGJfXzAwOF8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwN18gYl9fMDA4X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDA3XywgYl9fMDA4XyB3aXRoXG4gICAgICB8IEV4YWN0IF9hX18wMDlfLCBFeGFjdCBfYl9fMDEwXyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDA5XyBfYl9fMDEwX1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gMVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiAwXG4gICAgICB8IE91dHB1dCwgXyAtPiAtMVxuICAgICAgfCBfLCBPdXRwdXQgLT4gMVxuICAgICAgfCBQcmV0dHkgX2FfXzAxMV8sIFByZXR0eSBfYl9fMDEyXyAtPiBfY21wX19hIF9hX18wMTFfIF9iX18wMTJfXG4gICAgICB8IFByZXR0eSBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFByZXR0eSBfIC0+IDFcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IDApXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDEzXyBiX18wMTRfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTNfIGJfXzAxNF9cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxM18sIGJfXzAxNF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDE1XywgRXhhY3QgX2JfXzAxNl8gLT4gZXF1YWxfc3RyaW5nIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgRXhhY3QgXyAtPiBmYWxzZVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiB0cnVlXG4gICAgICB8IE91dHB1dCwgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBPdXRwdXQgLT4gZmFsc2VcbiAgICAgIHwgUHJldHR5IF9hX18wMTdfLCBQcmV0dHkgX2JfXzAxOF8gLT4gX2NtcF9fYSBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiBmYWxzZVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gdHJ1ZSlcbiAgOztcblxuICBsZXQgXyA9IGVxdWFsXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWFwX3ByZXR0eSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IChFeGFjdCBfIHwgT3V0cHV0IHwgVW5yZWFjaGFibGUpIGFzIHQgLT4gdFxuICAgIHwgUHJldHR5IHggLT4gUHJldHR5IChmIHgpXG4gIDs7XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyB0YWcgOiBzdHJpbmcgb3B0aW9uXG4gIDsgYm9keSA6ICdhIEJvZHkudFxuICA7IGV4dGlkX2xvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gIDsgYm9keV9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbmxldCBfID0gZnVuIChfIDogJ2EgdCkgLT4gKClcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE5X1xuICAgIHsgdGFnID0gdGFnX18wMjFfXG4gICAgOyBib2R5ID0gYm9keV9fMDIzX1xuICAgIDsgZXh0aWRfbG9jYXRpb24gPSBleHRpZF9sb2NhdGlvbl9fMDI1X1xuICAgIDsgYm9keV9sb2NhdGlvbiA9IGJvZHlfbG9jYXRpb25fXzAyN19cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAyMF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI4XyA9IEZpbGUuTG9jYXRpb24uc2V4cF9vZl90IGJvZHlfbG9jYXRpb25fXzAyN18gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJib2R5X2xvY2F0aW9uXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNl8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBleHRpZF9sb2NhdGlvbl9fMDI1XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4dGlkX2xvY2F0aW9uXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNF8gPSBCb2R5LnNleHBfb2ZfdCBfb2ZfYV9fMDE5XyBib2R5X18wMjNfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYm9keVwiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjJfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9zdHJpbmcgdGFnX18wMjFfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidGFnXCI7IGFyZ19fMDIyXyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMjBfXG47O1xuXG5sZXQgXyA9IHNleHBfb2ZfdFxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgZnVuIF9jbXBfX2EgYV9fMDI5XyBiX18wMzBfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDI5XyBiX18wMzBfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBjb21wYXJlX29wdGlvbiBjb21wYXJlX3N0cmluZyBhX18wMjlfLnRhZyBiX18wMzBfLnRhZyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAobWF0Y2ggQm9keS5jb21wYXJlIF9jbXBfX2EgYV9fMDI5Xy5ib2R5IGJfXzAzMF8uYm9keSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAobWF0Y2ggRmlsZS5Mb2NhdGlvbi5jb21wYXJlIGFfXzAyOV8uZXh0aWRfbG9jYXRpb24gYl9fMDMwXy5leHRpZF9sb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCAwIC0+IEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmJvZHlfbG9jYXRpb24gYl9fMDMwXy5ib2R5X2xvY2F0aW9uXG4gICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgfCBuIC0+IG4pXG4gICAgfCBuIC0+IG4pXG47O1xuXG5sZXQgXyA9IGNvbXBhcmVcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAzNV8gYl9fMDM2XyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAzNV8gYl9fMDM2X1xuICB0aGVuIHRydWVcbiAgZWxzZVxuICAgIFN0ZGxpYi4oICYmIClcbiAgICAgIChlcXVhbF9vcHRpb24gZXF1YWxfc3RyaW5nIGFfXzAzNV8udGFnIGJfXzAzNl8udGFnKVxuICAgICAgKFN0ZGxpYi4oICYmIClcbiAgICAgICAgIChCb2R5LmVxdWFsIF9jbXBfX2EgYV9fMDM1Xy5ib2R5IGJfXzAzNl8uYm9keSlcbiAgICAgICAgIChTdGRsaWIuKCAmJiApXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmV4dGlkX2xvY2F0aW9uIGJfXzAzNl8uZXh0aWRfbG9jYXRpb24pXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmJvZHlfbG9jYXRpb24gYl9fMDM2Xy5ib2R5X2xvY2F0aW9uKSkpXG47O1xuXG5sZXQgXyA9IGVxdWFsXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHN0cmluZyB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChmdW4geF9fMDQxXyAtPiBzZXhwX29mX3Qgc2V4cF9vZl9zdHJpbmcgeF9fMDQxXyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzA0Ml8gYl9fMDQzXyAtPiBjb21wYXJlIGNvbXBhcmVfc3RyaW5nIGFfXzA0Ml8gYl9fMDQzXyA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWFwX3ByZXR0eSB0IH5mID0geyB0IHdpdGggYm9keSA9IEJvZHkubWFwX3ByZXR0eSB0LmJvZHkgfmYgfVxuIiwibW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgRmlsZSA9IEZpbGVcbiAgbW9kdWxlIEV4cGVjdGF0aW9uID0gRXhwZWN0YXRpb25cbmVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSB1c2UgW0V4cGVjdF90ZXN0X2NvbW1vbl0gaW5zdGVhZFwiXVxuXG5pbmNsdWRlIFN0ZCBbQEBhbGVydCBcIi1kZXByZWNhdGVkXCJdXG4iLCJtb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBDUiAoKiogTGVhdmVzIGEgQ1IsIHNvIHRoYXQgZmVhdHVyZXMgY2Fubm90IGJlIHJlbGVhc2VkLiAqKVxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nICgqKiBPbmx5IGZvciBwcHhfZXhwZWN0IHRlc3Rpbmc7IGRvIG5vdCB1c2UuICopXG4gICAgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIElPIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICBlbmRcblxuICAoKiogUnVuIGFuIElPIG9wZXJhdGlvbiB1bnRpbCBjb21wbGV0aW9uICopXG4gIHZhbCBydW4gOiAodW5pdCAtPiB1bml0IElPLnQpIC0+IHVuaXRcblxuICAoKiogW3Nhbml0aXplXSBjYW4gYmUgdXNlZCB0byBtYXAgYWxsIG91dHB1dCBzdHJpbmdzLCBlLmcuIGZvciBjbGVhbnNpbmcuICopXG4gIHZhbCBzYW5pdGl6ZSA6IHN0cmluZyAtPiBzdHJpbmdcblxuXG4gICgqKiBbdXBvbl91bnJlbGVhc2FibGVfaXNzdWVdIHNwZWNpZmllcyBob3cgdG8gZGVhbCB3aXRoIG91dHB1dCB0aGF0IHNob3VsZCBub3QgYmVcbiAgICAgIHJlbGVhc2VkIGV2ZW4gaWYgaXQgaXMgYWNjZXB0ZWQgKGUuZy4gYmFja3RyYWNlcykuIFRoZSBkZWZhdWx0IGlzIFtgQ1JdLiAgKilcbiAgdmFsIHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogVXBvbl91bnJlbGVhc2FibGVfaXNzdWUudFxuZW5kXG5cbigqKiBDb25maWd1cmF0aW9uIGZvciBydW5uaW5nIGV4cGVjdCB0ZXN0cyAqKVxubW9kdWxlIHR5cGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzID0gc2lnXG4gICgqKiBUbyBjb25maWd1cmUgZXhwZWN0X3Rlc3QsIGFkZCB0aGUgZm9sbG93aW5nIGF0IHRoZSB0b3Agb2YgeW91ciAubWwgZmlsZSwgb3IgaW4gc29tZVxuICAgICAgaW1wb3J0Lm1sOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdcbiAgICAgICAgICBsZXQgcHJlX3JlZGlyZWN0X2hvb2sgKCkgPSAuLi5cbiAgICAgICAgZW5kXG4gICAgICBdfVxuXG4gICAgICBOb3RlIHRoYXQgc2luY2UgYWxsIGV4cGVjdCB0ZXN0IGFyZSBhbHNvIGlubGluZSB0ZXN0cywgdGhlIGlubGluZSB0ZXN0IGNvbmZpZ3VyYXRpb25cbiAgICAgIGFsc28gYXBwbGllcyB0byBhbGwgZXhwZWN0IHRlc3QuXG4gICopXG5cbiAgbW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgY29tbWVudF9wcmVmaXggOiB0IC0+IHN0cmluZ1xuXG4gICAgKCoqIE1lc3NhZ2UgdG8gcHJpbnQgd2hlbiBhbiBleHBlY3RhdGlvbiBjb250YWlucyBhIGJhY2t0cmFjZSAqKVxuICAgIHZhbCBtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlIDogdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IFNcbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLlNcblxubW9kdWxlIHR5cGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzID1cbiAgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzXG5cbm1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IHN0cnVjdFxuICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gdDEgPSB0MlxuXG4gIGxldCBjb21tZW50X3ByZWZpeCA9IGZ1bmN0aW9uXG4gICAgfCBgQ1IgLT4gXCJDUiBcIlxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nIC0+IFwiXCJcbiAgOztcblxuICBsZXQgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSB0ID1cbiAgICBQcmludGYuc3ByaW50ZlxuICAgICAge3xcbigqICVzZXhwZWN0X3Rlc3RfY29sbGVjdG9yOiBUaGlzIHRlc3QgZXhwZWN0YXRpb24gYXBwZWFycyB0byBjb250YWluIGEgYmFja3RyYWNlLlxuICAgVGhpcyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBhcyBiYWNrdHJhY2VzIGFyZSBmcmFnaWxlLlxuICAgUGxlYXNlIGNoYW5nZSB0aGlzIHRlc3QgdG8gbm90IGluY2x1ZGUgYSBiYWNrdHJhY2UuICopXG5cbnx9XG4gICAgICAoY29tbWVudF9wcmVmaXggdClcbiAgOztcbmVuZFxuIiwibGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwOVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjhcXDAwMFxcMDA1XFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXDAwNlxcMDAwXFwwODVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA0MFxcMDAwXFwwMzFcXDAwMFxcMDQ2XFwwMDBcXDA0OFxcMDAwXFwwMDdcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDA2MlxcMDAwXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDEwM1xcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDVcXDAwMFxcMDk1XFwwMDBcXDEwN1xcMDAwXFwwOTVcXDAwMFxcMTEzXFwwMDBcXDAxMFxcMDAwXFwxMDRcXDAwMFxcXG4gICAgXFwxMDRcXDAwMFxcMTE2XFwwMDBcXDEwNFxcMDAwXFwxMjJcXDAwMFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMTFcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDExNlxcMDAwXFwxMTdcXDAwMFxcMTI1XFwwMDBcXDEyN1xcMDAwXFwwMTJcXDAwMFxcMTI2XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDExOVxcMDAwXFwxMjJcXDAwMFxcMDEzXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOFxcMDAwXFwwMTJcXDAwMFxcMDE0XFwwMDBcXDAyNFxcMDAwXFwwMTJcXDAwMFxcMDM5XFwwMDBcXDAxMlxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDYxXFwwMDBcXDA3MVxcMDAwXFwwNTlcXDAwMFxcMDg2XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDNcXDAwMFxcMDI5XFwwMDBcXDAwN1xcMDAwXFwwMDZcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDE4XFwwMDBcXDAyN1xcMDAwXFwwMjVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDI2XFwwMDBcXDAxNlxcMDAwXFwwMDVcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjJcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMDMwXFwwMDBcXDAxM1xcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFxcbiAgICBcXDAzOFxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNjBcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTZcXDAwMFxcMDU4XFwwMDBcXDA2MlxcMDAwXFwwNDZcXDAwMFxcMDYzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDIzXFwwMDBcXDAzM1xcMDAwXFwwMzhcXDAwMFxcMDQzXFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNjBcXDAwMFxcMDcwXFwwMDBcXDA4MFxcMDAwXFwwODVcXDAwMFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjhcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDAyMFxcMDAwXFwwMTdcXDAwMFxcMDI2XFwwMDBcXDAyNFxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMjVcXDAwMFxcMDE1XFwwMDBcXDAwNFxcMDAwXFwwMTBcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDA5XFwwMDBcXDAzMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDM3XFwwMDBcXDAzOVxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDYxXFwwMDBcXDA0NFxcMDAwXFwwNjJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDczXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgY2hlY2sgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjMgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAxIC0+XG4jIDUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxNjggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG5vdF9hdF9ib3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiA0NFxuYW5kIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxODAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAxIC0+XG4jIDkgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgKCBub3RfYXRfYm9zIGxleGJ1ZiApXG4jIDE4NSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDIgLT5cbiMgMTAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAoIGZhbHNlIClcbiMgMTkwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMiBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gXG4gIGxldCBjb250YWluc19iYWNrdHJhY2VzIHMgPSBjaGVjayAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiMgMjAxIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuIiwib3BlbiBFeHBlY3RfdGVzdF9jb21tb25cbm1vZHVsZSBMaXN0ID0gTGlzdExhYmVsc1xuXG5tb2R1bGUgVGVzdF9vdXRjb21lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBmaWxlX2RpZ2VzdCA6IEZpbGUuRGlnZXN0LnRcbiAgICA7IGxvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gICAgOyBleHBlY3RhdGlvbnMgOiBFeHBlY3RhdGlvbi5SYXcudCBsaXN0XG4gICAgOyB1bmNhdWdodF9leG5fZXhwZWN0YXRpb24gOiBFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICA7IHNhdmVkX291dHB1dCA6IChGaWxlLkxvY2F0aW9uLnQgKiBzdHJpbmcpIGxpc3RcbiAgICA7IHRyYWlsaW5nX291dHB1dCA6IHN0cmluZ1xuICAgIDsgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuVXBvbl91bnJlbGVhc2FibGVfaXNzdWUudFxuICAgIDsgdW5jYXVnaHRfZXhuIDogKGV4biAqIFByaW50ZXhjLnJhd19iYWNrdHJhY2UpIG9wdGlvblxuICAgIH1cbmVuZFxuXG5sZXQgdGVzdHNfcnVuIDogVGVzdF9vdXRjb21lLnQgbGlzdCByZWYgPSByZWYgW11cblxubGV0IHByb3RlY3QgfmZpbmFsbHkgfmYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+XG4gICAgZmluYWxseSAoKTtcbiAgICB4XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICBmaW5hbGx5ICgpO1xuICAgIHJhaXNlIGVcbjs7XG5cbm1vZHVsZSBDdXJyZW50X2ZpbGUgPSBzdHJ1Y3RcbiAgbGV0IGN1cnJlbnQgPSByZWYgTm9uZVxuXG4gIGxldCBzZXQgfmFic29sdXRlX2ZpbGVuYW1lID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGN1cnJlbnQgOj0gU29tZSBhYnNvbHV0ZV9maWxlbmFtZVxuICAgIHwgU29tZSBfIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLnNldDogYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCB1bnNldCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgU29tZSBfIC0+IGN1cnJlbnQgOj0gTm9uZVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci51bnNldDogbm90IHNldFwiXG4gIDs7XG5cbiAgbGV0IGdldCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgU29tZSBmbiAtPiBmblxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5nZXQ6IG5vdCBzZXRcIlxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzYXZlZCA6IChGaWxlLkxvY2F0aW9uLnQgKiBpbnQpIGxpc3RcbiAgICA7IGNoYW4gOiBvdXRfY2hhbm5lbFxuICAgIDsgZmlsZW5hbWUgOiBGaWxlLk5hbWUudFxuICAgIH1cblxuICBleHRlcm5hbCBiZWZvcmVfdGVzdFxuICAgIDogIG91dHB1dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0XCJcblxuICBleHRlcm5hbCBhZnRlcl90ZXN0XG4gICAgOiAgc3Rkb3V0Om91dF9jaGFubmVsXG4gICAgLT4gc3RkZXJyOm91dF9jaGFubmVsXG4gICAgLT4gdW5pdFxuICAgID0gXCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcIlxuXG4gIGxldCBnZXRfcG9zaXRpb24gKCkgPSBwb3Nfb3V0IHN0ZG91dFxuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIGxldCBmaWxlbmFtZSA9IEZpbGVuYW1lLnRlbXBfZmlsZSBcImV4cGVjdC10ZXN0XCIgXCJvdXRwdXRcIiBpblxuICAgIGxldCBjaGFuID0gb3Blbl9vdXRfYmluIGZpbGVuYW1lIGluXG4gICAgYmVmb3JlX3Rlc3Qgfm91dHB1dDpjaGFuIH5zdGRvdXQgfnN0ZGVycjtcbiAgICB7IGNoYW47IGZpbGVuYW1lID0gRmlsZS5OYW1lLm9mX3N0cmluZyBmaWxlbmFtZTsgc2F2ZWQgPSBbXSB9XG4gIDs7XG5cbiAgbGV0IHJlbGF0aXZlX2ZpbGVuYW1lIHQgPSBGaWxlLk5hbWUucmVsYXRpdmVfdG8gfmRpcjooRmlsZS5pbml0aWFsX2RpciAoKSkgdC5maWxlbmFtZVxuXG4gIGxldCB3aXRoX2ljIGZuYW1lIH5mID1cbiAgICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICAgIHByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBjbG9zZV9pbiBpYykgfmY6KGZ1biAoKSAtPiBmIGljKVxuICA7O1xuXG4gIGxldCBjdXJyZW50X3Rlc3QgOiAoRmlsZS5Mb2NhdGlvbi50ICogdCkgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG4gIGxldCBhbV9ydW5uaW5nX2V4cGVjdF90ZXN0ICgpID0gT3B0aW9uLmlzX3NvbWUgIWN1cnJlbnRfdGVzdFxuXG4gIGxldCBnZXRfY3VycmVudCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnRfdGVzdCB3aXRoXG4gICAgfCBTb21lIChfLCB0KSAtPiB0XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkluc3RhbmNlLmdldF9jdXJyZW50IGNhbGxlZCBvdXRzaWRlIGEgdGVzdC5cIlxuICA7O1xuXG4gIGxldCBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb24gPVxuICAgIGxldCBwb3MgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICB0LnNhdmVkIDwtIChsb2NhdGlvbiwgcG9zKSA6OiB0LnNhdmVkXG4gIDs7XG5cbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgbGV0IHByZXZfcG9zID1cbiAgICAgIG1hdGNoIHQuc2F2ZWQgd2l0aFxuICAgICAgfCBbXSAtPiAwXG4gICAgICB8IChfLCBwcmV2X3BvcykgOjogXyAtPiBwcmV2X3Bvc1xuICAgIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZDtcbiAgICBmbHVzaCB0LmNoYW47XG4gICAgbGV0IGxlbiA9IHBvcyAtIHByZXZfcG9zIGluXG4gICAgd2l0aF9pYyAocmVsYXRpdmVfZmlsZW5hbWUgdCkgfmY6KGZ1biBpYyAtPlxuICAgICAgc2Vla19pbiBpYyBwcmV2X3BvcztcbiAgICAgIHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuKVxuICA7O1xuZW5kXG5cbmxldCBhbV9ydW5uaW5nX2V4cGVjdF90ZXN0ID0gSW5zdGFuY2UuYW1fcnVubmluZ19leHBlY3RfdGVzdFxuXG5sZXQgZmx1c2ggKCkgPVxuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKCk7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuZXJyX2Zvcm1hdHRlciAoKTtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRvdXQ7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3RkZXJyXG47O1xuXG5sZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gIGxldCBpbnN0YW5jZSA9IEluc3RhbmNlLmdldF9jdXJyZW50ICgpIGluXG4gIGZsdXNoICgpO1xuICBJbnN0YW5jZS5zYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggaW5zdGFuY2UgbG9jYXRpb25cbjs7XG5cbm1vZHVsZSBNYWtlIChDIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlMpID0gc3RydWN0XG4gIG1vZHVsZSBJbnN0YW5jZV9pbyA6IHNpZ1xuICAgIHZhbCBzYXZlX291dHB1dCA6IEZpbGUuTG9jYXRpb24udCAtPiB1bml0XG4gICAgdmFsIHNhdmVfYW5kX3JldHVybl9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gc3RyaW5nXG5cbiAgICB2YWwgZXhlY1xuICAgICAgOiAgZmlsZV9kaWdlc3Q6RmlsZS5EaWdlc3QudFxuICAgICAgLT4gbG9jYXRpb246RmlsZS5Mb2NhdGlvbi50XG4gICAgICAtPiBleHBlY3RhdGlvbnM6RXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgICAgLT4gdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uOkV4cGVjdGF0aW9uLlJhdy50IG9wdGlvblxuICAgICAgLT4gZjoodW5pdCAtPiB1bml0IEMuSU8udClcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgb3BlbiBJbnN0YW5jZVxuXG4gICAgbGV0IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyBsZW4gPVxuICAgICAgbGV0IHMgPSByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiB8PiBDLnNhbml0aXplIGluXG4gICAgICBpZiBub3QgKENoZWNrX2JhY2t0cmFjZXMuY29udGFpbnNfYmFja3RyYWNlcyBzKVxuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAubWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZVxuICAgICAgICAgIEMudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgXiBzXG4gICAgOztcblxuICAgIGxldCBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0ID1cbiAgICAgIFN5cy5jaGRpciAoRmlsZS5pbml0aWFsX2RpciAoKSk7XG4gICAgICBsZXQgbGFzdF9vZnMgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICAgIGFmdGVyX3Rlc3QgfnN0ZG91dCB+c3RkZXJyO1xuICAgICAgY2xvc2Vfb3V0IHQuY2hhbjtcbiAgICAgIGxldCBmbmFtZSA9IHJlbGF0aXZlX2ZpbGVuYW1lIHQgaW5cbiAgICAgIHByb3RlY3RcbiAgICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPiBTeXMucmVtb3ZlIGZuYW1lKVxuICAgICAgICB+ZjooZnVuICgpIC0+XG4gICAgICAgICAgd2l0aF9pYyBmbmFtZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICBsZXQgb2ZzLCBvdXRwdXRzID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgdC5zYXZlZClcbiAgICAgICAgICAgICAgICB+aW5pdDooMCwgW10pXG4gICAgICAgICAgICAgICAgfmY6KGZ1biAob2ZzLCBhY2MpIChsb2MsIG5leHRfb2ZzKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgKG5leHRfb2ZzIC0gb2ZzKSBpblxuICAgICAgICAgICAgICAgICAgbmV4dF9vZnMsIChsb2MsIHMpIDo6IGFjYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdHJhaWxpbmdfb3V0cHV0ID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChsYXN0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgIExpc3QucmV2IG91dHB1dHMsIHRyYWlsaW5nX291dHB1dCkpXG4gICAgOztcblxuICAgIGxldCBzYXZlX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBmbHVzaCAoKTtcbiAgICAgIHNhdmVfb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvblxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBmbHVzaCAoKTtcbiAgICAgIHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uXG4gICAgOztcblxuICAgIGxldCAoKSA9XG4gICAgICBTdGRsaWIuYXRfZXhpdCAoZnVuICgpIC0+XG4gICAgICAgIG1hdGNoICFjdXJyZW50X3Rlc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIChsb2MsIHQpIC0+XG4gICAgICAgICAgbGV0IGJsb2NrcywgdHJhaWxpbmcgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICAgICAgICAgIEVycm9yOiBwcm9ncmFtIGV4aXRlZCB3aGlsZSBleHBlY3QgdGVzdCB3YXMgcnVubmluZyFcXG5cXFxuICAgICAgICAgICAgIE91dHB1dCBjYXB0dXJlZCBzbyBmYXI6XFxuXFxcbiAgICAgICAgICAgICAlIVwiXG4gICAgICAgICAgICAoRmlsZS5OYW1lLnRvX3N0cmluZyBsb2MuZmlsZW5hbWUpXG4gICAgICAgICAgICBsb2MubGluZV9udW1iZXJcbiAgICAgICAgICAgIChsb2Muc3RhcnRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpXG4gICAgICAgICAgICAobG9jLmVuZF9wb3MgLSBsb2MubGluZV9zdGFydCk7XG4gICAgICAgICAgTGlzdC5pdGVyIGJsb2NrcyB+ZjooZnVuIChfLCBzKSAtPiBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzKTtcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIiVzJSFcIiB0cmFpbGluZylcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgfmZpbGVfZGlnZXN0IH5sb2NhdGlvbiB+ZXhwZWN0YXRpb25zIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb24gfmYgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgICAgIGN1cnJlbnRfdGVzdCA6PSBTb21lIChsb2NhdGlvbiwgdCk7XG4gICAgICBsZXQgZmluYWxseSB1bmNhdWdodF9leG4gPVxuICAgICAgICBDLnJ1biAoZnVuICgpIC0+XG4gICAgICAgICAgQy5JTy5yZXR1cm5cbiAgICAgICAgICAgIChmbHVzaCAoKTtcbiAgICAgICAgICAgICBjdXJyZW50X3Rlc3QgOj0gTm9uZTtcbiAgICAgICAgICAgICBsZXQgc2F2ZWRfb3V0cHV0LCB0cmFpbGluZ19vdXRwdXQgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgICAgdGVzdHNfcnVuXG4gICAgICAgICAgICAgOj0geyBmaWxlX2RpZ2VzdFxuICAgICAgICAgICAgICAgIDsgbG9jYXRpb25cbiAgICAgICAgICAgICAgICA7IGV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgICAgICAgICAgOyBzYXZlZF9vdXRwdXRcbiAgICAgICAgICAgICAgICA7IHRyYWlsaW5nX291dHB1dFxuICAgICAgICAgICAgICAgIDsgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBDLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgICAgICAgICAgOyB1bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogIXRlc3RzX3J1bikpXG4gICAgICBpblxuICAgICAgbWF0Y2ggQy5ydW4gZiB3aXRoXG4gICAgICB8ICgpIC0+IGZpbmFsbHkgTm9uZVxuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICAgIGZpbmFsbHkgKFNvbWUgKGV4biwgYnQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzYXZlX291dHB1dCA9IEluc3RhbmNlX2lvLnNhdmVfb3V0cHV0XG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0ID0gSW5zdGFuY2VfaW8uc2F2ZV9hbmRfcmV0dXJuX291dHB1dFxuXG4gIGxldCBydW5cbiAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgIH4obG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnQpXG4gICAgICAgIH5hYnNvbHV0ZV9maWxlbmFtZTpkZWZpbmVkX2luXG4gICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICB+dGFnc1xuICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgfmlubGluZV90ZXN0X2NvbmZpZ1xuICAgICAgICBmXG4gICAgPVxuICAgIFBweF9pbmxpbmVfdGVzdF9saWIudGVzdFxuICAgICAgfmNvbmZpZzppbmxpbmVfdGVzdF9jb25maWdcbiAgICAgIH5kZXNjcjpcbiAgICAgICAgKGxhenlcbiAgICAgICAgICAobWF0Y2ggZGVzY3JpcHRpb24gd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgcyAtPiBzKSlcbiAgICAgIH50YWdzXG4gICAgICB+ZmlsZW5hbWU6KEZpbGUuTmFtZS50b19zdHJpbmcgbG9jYXRpb24uZmlsZW5hbWUpXG4gICAgICB+bGluZV9udW1iZXI6bG9jYXRpb24ubGluZV9udW1iZXJcbiAgICAgIH5zdGFydF9wb3M6KGxvY2F0aW9uLnN0YXJ0X3BvcyAtIGxvY2F0aW9uLmxpbmVfc3RhcnQpXG4gICAgICB+ZW5kX3BvczoobG9jYXRpb24uZW5kX3BvcyAtIGxvY2F0aW9uLmxpbmVfc3RhcnQpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQgcmVnaXN0ZXJpbmdfdGVzdHNfZm9yID0gQ3VycmVudF9maWxlLmdldCAoKSBpblxuICAgICAgICAgaWYgZGVmaW5lZF9pbiA8PiByZWdpc3RlcmluZ190ZXN0c19mb3JcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICBcIlRyeWluZyB0byBydW4gYW4gZXhwZWN0IHRlc3QgZnJvbSB0aGUgd3JvbmcgZmlsZS5cXG5cXFxuICAgICAgICAgICAgICAtIHRlc3QgZGVjbGFyZWQgYXQgJXM6JWRcXG5cXFxuICAgICAgICAgICAgICAtIHRyeWluZyB0byBydW4gaXQgZnJvbSAlc1xcblwiXG4gICAgICAgICAgICAgZGVmaW5lZF9pblxuICAgICAgICAgICAgIGxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAgcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgKCogVG8gYXZvaWQgY2FwdHVyaW5nIG5vdC15ZXQgZmx1c2hlZCBkYXRhIG9mIHRoZSBzdGRvdXQgYnVmZmVyICopXG4gICAgICAgICAgIEMucnVuIChmdW4gKCkgLT4gQy5JTy5yZXR1cm4gKGZsdXNoICgpKSk7XG4gICAgICAgICAgIEluc3RhbmNlX2lvLmV4ZWNcbiAgICAgICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICB+bG9jYXRpb25cbiAgICAgICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgIH5mO1xuICAgICAgICAgICB0cnVlKSlcbiAgOztcbmVuZFxuW0BAaW5saW5lIG5ldmVyXVxuXG5sZXQgdGVzdHNfcnVuICgpID1cbiAgKCogV2UgcHJlcGVuZCB0ZXN0cyB3aGVuIHdlIGVuY291bnRlciB0aGVtLCBzbyByZXZlcnNlIHRoZSBsaXN0IHRvIHJlaW5zdGF0ZSBvcmRlciAqKVxuICBMaXN0LnJldiAhdGVzdHNfcnVuXG47O1xuIiwibW9kdWxlIElPID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHJldHVybiB4ID0geFxuZW5kXG5cbmxldCBzYW5pdGl6ZSBzID0gc1xubGV0IHJ1biBmID0gZiAoKVxubGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gYENSXG4iLCJtb2R1bGUgUHB4X3NleHBfY29udl9saWIgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3JcbiAgbW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbiAgbW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5lbmRcblxubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIExpc3QgPSBMaXN0TGFiZWxzXG4iLCIoKiBUaGlzIG1vZHVsZSBidWlsZHMgYSBidWZmZXIgb2YgXCJpbnN0cnVjdGlvbnNcIiwgaW4gb3JkZXIgdG8gcmVwcmVzZW50IGEgY29tcGFjdCBzZXF1ZW5jZVxuICAgb2YgZGVsaW1pdGluZyBwb3NpdGlvbnMgYW5kIG5ld2xpbmVzLiBUaGUgcGFyc2VyIHN0b3JlcyB0aGUgcG9zaXRpb25zIG9mIGVhY2g6XG5cbiAgIC0gbmV3bGluZVxuICAgLSBiZWdpbm5pbmcgb2YgYXRvbVxuICAgLSBlbmQgb2YgYXRvbVxuICAgLSBsZWZ0IHBhcmVudGhlc2lzXG4gICAtIHJpZ2h0IHBhcmVudGhlc2lzXG5cbiAgIEluc3RydWN0aW9ucyBhcmUgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIGJpdHMuIFRoZSBuZXh0IGluc3RydWN0aW9uIGlzIGRldGVybWluZWQgYnlcbiAgIGxvb2tpbmcgYXQgdGhlIG5leHQgZmV3IGJpdHM6XG5cbiAgIC0gYml0IDAgcmVwcmVzZW50cyBhIHNhdmVkIHBvc2l0aW9uIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMCByZXByZXNlbnQgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMCBhcmUgZm9sbG93ZWQgYnkgNSBiaXRzIG9mIHBheWxvYWQuIFRoZSA1LWJpdCBwYXlsb2FkcyBvZiBhbnkgc3Vic2VxdWVudCAxMTAtXG4gICAgIGluc3RydWN0aW9ucyBhcmUgc3F1YXNoZWQgdG8gZm9ybSBhIG51bWJlciAobGVhc3Qgc2lnbmlmaWNhbnQgNS1iaXQgY2h1bmsgZmlyc3QpLlxuICAgICBUaGlzIG51bWJlciArIDUgcmVwcmVzZW50cyBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTExMCBtYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgbmV3IGxpbmUgKHdpdGggb2Zmc2V0IGluY3JlbWVudGVkKVxuICAgLSBiaXRzIDExMTEgcmVwcmVzZW50IGEgcG9zaXRpb24gc2F2ZWQgdHdpY2UgZm9sbG93ZWQgYnkgYW4gb2Zmc2V0IGluY3JlbWVudFxuXG4gICBGb3IgaW5zdGFuY2UgbGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzZXhwOlxuXG4gICB7W1xuICAgICB7fFxuKGFiY1xuICAgICAgXCJmb29cbiBiYXJcIlxuKVxufH1cbiAgIF19XG5cbiAgIHRoZSBzZXF1ZW5jZSBvZiBpbnN0cnVjdGlvbnMgdG8gcmVjb3JkIGluIG9yZGVyIHRvIHJlY29uc3RydWN0IHRoZSBwb3NpdGlvbiBvZiBhbnlcbiAgIHN1Yi1zZXhwIGlzOlxuXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGZpcnN0ICcoJ1xuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImFiY1wiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiYWJjXCJcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAxIGFkdmFuY2UgNlxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImZvb1xcbiAgYmFyXCJcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAwIGFkdmFuY2UgNVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBlbmQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGxhc3QgJyknXG5cbiAgICh3ZSBzYXZlIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgY2xvc2luZyBwYXJlbnRoZXNpcylcblxuICAgVGhlIHRvdGFsIHNlcXVlbmNlIGlzIDQyIGJpdHMsIHNvIHdlIG5lZWQgNiBieXRlcyB0byBzdG9yZSBpdFxuXG4gICBUaGUgc2VxdWVuY2Ugb2YgYml0cyBpcyBlbmNvZGVkIGFzIGEgc2VxdWVuY2Ugb2YgMTYtYml0IHZhbHVlcywgd2hlcmUgdGhlIGVhcmxpZXIgYml0c1xuICAgYXJlIG1vc3Qgc2lnbmlmaWNhbnQuXG5cbiAgIE5vdGUgdGhhdCB0aGUgcGFyc2VyIHN0b3JlcyB0aGUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUuIFRoaXMgd2F5IG9ubHkgc2luZ2xlXG4gICBjaGFyYWN0ZXIgYXRvbXMgcmVxdWlyZSBhIGRvdWJsZSBwb3NpdGlvbnMuIElmIHdlIHdlcmUgc3RvcmluZyBlbmQgcG9zaXRpb25zIGFzXG4gICBleGNsdXNpdmUsIHdlIHdvdWxkIG5lZWQgZG91YmxlIHBvc2l0aW9ucyBmb3IgWykoXSBhbmQgW2EoXSwgd2hpY2ggYXJlIGxpa2VseSB0byBiZVxuICAgZnJlcXVlbnQgaW4gcy1leHByZXNzaW9ucyBwcmludGVkIHdpdGggdGhlIG5vbiBbX2h1bV0gcHJpbnRlci4gV2UgZXhwZWN0IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHRvIGJlIGxlc3MgZnJlcXVlbnQgc28gaXQgbWFrZXMgc2Vuc2UgdG8gcGVuYWxpemUgdGhlbSBpbnN0ZWFkLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zID1cbiAgeyBsaW5lIDogaW50XG4gIDsgY29sIDogaW50XG4gIDsgb2Zmc2V0IDogaW50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9wb3MgPVxuICAoZnVuIHsgbGluZSA9IGxpbmVfXzAwMl87IGNvbCA9IGNvbF9fMDA0Xzsgb2Zmc2V0ID0gb2Zmc2V0X18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgb2Zmc2V0X18wMDZfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mZnNldFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2ZfaW50IGNvbF9fMDA0XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb2xcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2ludCBsaW5lX18wMDJfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMV9cbiAgICAgOiBwb3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcG9zID0gU3RkbGliLmNvbXBhcmVcbmxldCBiZWdpbm5pbmdfb2ZfZmlsZSA9IHsgbGluZSA9IDE7IGNvbCA9IDA7IG9mZnNldCA9IDAgfVxubGV0IHNoaWZ0X3BvcyBwb3MgfmNvbHMgPSB7IHBvcyB3aXRoIGNvbCA9IHBvcy5jb2wgKyBjb2xzOyBvZmZzZXQgPSBwb3Mub2Zmc2V0ICsgY29scyB9XG5cbnR5cGUgcmFuZ2UgPVxuICB7IHN0YXJ0X3BvcyA6IHBvc1xuICA7IGVuZF9wb3MgOiBwb3NcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3JhbmdlID1cbiAgKGZ1biB7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDA5XzsgZW5kX3BvcyA9IGVuZF9wb3NfXzAxMV8gfSAtPlxuICAgICBsZXQgYm5kc19fMDA4XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX3BvcyBlbmRfcG9zX18wMTFfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVuZF9wb3NcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA4X1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX3BvcyBzdGFydF9wb3NfXzAwOV8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDhfXG4gICAgIDogcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcmFuZ2UgPSBTdGRsaWIuY29tcGFyZVxuXG5sZXQgbWFrZV9yYW5nZV9pbmNsIH5zdGFydF9wb3Mgfmxhc3RfcG9zID1cbiAgeyBzdGFydF9wb3M7IGVuZF9wb3MgPSBzaGlmdF9wb3MgbGFzdF9wb3MgfmNvbHM6MSB9XG47O1xuXG5tb2R1bGUgQ2h1bmsgOiBzaWdcbiAgKCoqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgW2xlbmd0aC8yXSBzaWduZWQgMTYtYml0IHZhbHVlcyAqKVxuICB0eXBlIHRcblxuICAoKiogTGVuZ3RoIGluIGJ5dGVzLiAqKVxuICB2YWwgbGVuZ3RoIDogaW50XG5cbiAgdmFsIGFsbG9jIDogdW5pdCAtPiB0XG5cbiAgKCoqIFtnZXQxNiB+cG9zXSBhbmQgW3NldDE2IH5wb3NdIG1hbmlwdWxhdGUgdGhlIFtwb3MvMl10aCBzdG9yZWQgdmFsdWUuXG4gICAgICBbcG9zXSBtdXN0IGJlIGV2ZW4uXG4gICAgICBbc2V0MTYgeF0gb25seSB1c2VzIHRoZSAxNiBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFt4XS4gKilcbiAgdmFsIGdldDE2IDogdCAtPiBwb3M6aW50IC0+IGludFxuXG4gIHZhbCBzZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgKCogT0NhbWwgc3RyaW5ncyBhbHdheXMgd2FzdGUgdHdvIGJ5dGVzIGF0IHRoZSBlbmQsIHNvIHdlIHRha2UgYSBwb3dlciBvZiB0d28gbWludXMgdHdvXG4gICAgIHRvIGJlIHN1cmUgd2UgZG9uJ3Qgd2FzdGUgc3BhY2UuICopXG4gIGxldCBsZW5ndGggPSA2MlxuICBsZXQgYWxsb2MgKCkgPSBCeXRlcy5jcmVhdGUgbGVuZ3RoXG5cbiAgZXh0ZXJuYWwgZ2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuICBleHRlcm5hbCBzZXQxNiA6IGJ5dGVzIC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcblxuICAoKiBJZiB3ZSB3YW50IHRvIG1ha2UgYSBbUG9zaXRpb25zLnRdIHNlcmlhbGl6YWJsZTpcblxuICAgICB7W1xuICAgICAgIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiOztcblxuICAgICAgIGxldCBnZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgLT4gZ2V0MTYgYnVmIH5wb3MgfD4gYnN3YXAxNlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBnZXQxNlxuXG4gICAgICAgbGV0IHNldDE2ID1cbiAgICAgICAgIGlmIENhbWwuU3lzLmFyY2hfYmlnX2VuZGlhbiB0aGVuXG4gICAgICAgICAgIGZ1biBidWYgfnBvcyB4IC0+IHNldDE2IGJ1ZiB+cG9zIChic3dhcDE2IHgpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIHNldDE2XG4gICAgIF19XG5cbiAgKilcbmVuZFxuXG50eXBlIHRfID1cbiAgeyBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2NodW5rc10uXG4gICAgICAgVGhlIGxhc3QgW2V4dHJhX2JpdHNdIGJpdHMgd2lsbCBiZSBzdG9yZWQgYXMgdGhlICpsZWFzdCogc2lnbmlmaWNhbnQgYml0c1xuICAgICAgIG9mIHRoZSBhcHByb3ByaWF0ZSBwYWlyIG9mIGJ5dGVzIG9mIHRoZSBsYXN0IGNodW5rLiAqKVxuICAgIG51bV9ieXRlcyA6IGludFxuICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgOyBpbml0aWFsX3BvcyA6IHBvc1xuICB9XG5cbnR5cGUgdCA9IHRfIExhenkudFxuXG5sZXQgbWVtb3J5X2Zvb3RwcmludF9pbl9ieXRlcyAobGF6eSB0KSA9XG4gIGxldCBudW1fZmllbGRzID0gNCBpblxuICBsZXQgaGVhZGVyX3dvcmRzID0gMSBpblxuICBsZXQgd29yZF9ieXRlcyA9XG4gICAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgfCAzMiAtPiA0XG4gICAgfCA2NCAtPiA4XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsZXQgY2h1bmtfd29yZHMgPVxuICAgIGxldCBkaXZfY2VpbCBhIGIgPSAoYSArIGIgLSAxKSAvIGIgaW5cbiAgICBsZXQgbiA9XG4gICAgICBkaXZfY2VpbFxuICAgICAgICAoQ2h1bmsubGVuZ3RoXG4gICAgICAgICArIDEgKCogTlVMIHRlcm1pbmF0aW5nIGJ5dGVzICopXG4gICAgICAgICArIDEgKCogbnVtYmVyIG9mIHdhc3RlZCBieXRlcyB0byBmaWxsIGEgd29yZCAqKSlcbiAgICAgICAgd29yZF9ieXRlc1xuICAgIGluXG4gICAgbiArIGhlYWRlcl93b3Jkc1xuICBpblxuICBsZXQgcG9zX2ZpZWxkcyA9IDMgaW5cbiAgbGV0IHBvc193b3JkcyA9IGhlYWRlcl93b3JkcyArIHBvc19maWVsZHMgaW5cbiAgbGV0IGxpc3RfY29uc193b3JkcyA9IGhlYWRlcl93b3JkcyArIDIgaW5cbiAgKGhlYWRlcl93b3Jkc1xuICAgKyBudW1fZmllbGRzXG4gICArIHBvc193b3Jkc1xuICAgKyAoTGlzdC5sZW5ndGggdC5jaHVua3MgKiAoY2h1bmtfd29yZHMgKyBsaXN0X2NvbnNfd29yZHMpKSlcbiAgKiB3b3JkX2J5dGVzXG47O1xuXG5tb2R1bGUgQnVpbGRlciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtfcG9zIDogaW50XG4gICAgOyBtdXRhYmxlIGZpbGxlZF9jaHVua3MgOiBDaHVuay50IGxpc3QgKCogRmlsbGVkIGNodW5rcyBpbiByZXZlcnNlIG9yZGVyICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgICgqIE9mZnNldCBvZiB0aGUgbGFzdCBzYXZlZCBwb3NpdGlvbiBvciBuZXdsaW5lIHBsdXNcbiAgICAgICBvbmUsIG9yIFtpbml0aWFsX3Bvc10gKilcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgICgqIHRoZSBbbnVtX2JpdHNdIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgW2ludF9idWZdXG4gICAgICAgYXJlIHRoZSBiaXRzIG5vdCB5ZXQgcHVzaGVkIHRvIFtjaHVua10uICopXG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIG51bWJlciBvZiBiaXRzIHN0b3JlZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgaW5pdGlhbF9wb3MgOiBwb3NcbiAgICB9XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQuY2h1bmtfcG9zID49IDAgJiYgdC5jaHVua19wb3MgPD0gQ2h1bmsubGVuZ3RoKTtcbiAgICBhc3NlcnQgKHQub2Zmc2V0ID49IHQuaW5pdGlhbF9wb3Mub2Zmc2V0KTtcbiAgICBhc3NlcnQgKHQubnVtX2JpdHMgPD0gMTUpXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IGZhbHNlXG4gIGxldCBpbnZhcmlhbnQgdCA9IGlmIGNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0XG5cbiAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gYmVnaW5uaW5nX29mX2ZpbGUpICgpID1cbiAgICB7IGNodW5rID0gQ2h1bmsuYWxsb2MgKClcbiAgICA7IGNodW5rX3BvcyA9IDBcbiAgICA7IGZpbGxlZF9jaHVua3MgPSBbXVxuICAgIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgOyBpbnRfYnVmID0gMFxuICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgOyBpbml0aWFsX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXQgdCAocG9zIDogcG9zKSA9XG4gICAgKCogV2UgbmVlZCBhIG5ldyBjaHVuayBhcyBbY29udGVudHNdIGtlZXBzIHRoZSBjdXJyZW50IGNodW5rIGluIHRoZSBjbG9zdXJlIG9mIHRoZVxuICAgICAgIGxhenkgdmFsdWUuICopXG4gICAgdC5jaHVuayA8LSBDaHVuay5hbGxvYyAoKTtcbiAgICB0LmNodW5rX3BvcyA8LSAwO1xuICAgIHQuZmlsbGVkX2NodW5rcyA8LSBbXTtcbiAgICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICAgIHQuaW50X2J1ZiA8LSAwO1xuICAgIHQubnVtX2JpdHMgPC0gMDtcbiAgICB0LmluaXRpYWxfcG9zIDwtIHBvc1xuICA7O1xuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhbGxvY19uZXdfY2h1bmsgdCA9XG4gICAgdC5maWxsZWRfY2h1bmtzIDwtIHQuY2h1bmsgOjogdC5maWxsZWRfY2h1bmtzO1xuICAgIHQuY2h1bmsgPC0gQ2h1bmsuYWxsb2MgKCk7XG4gICAgdC5jaHVua19wb3MgPC0gMFxuICA7O1xuXG4gIGxldCBhZGRfdWludDE2IHQgbiA9XG4gICAgaWYgdC5jaHVua19wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBhbGxvY19uZXdfY2h1bmsgdDtcbiAgICBDaHVuay5zZXQxNiB0LmNodW5rIH5wb3M6dC5jaHVua19wb3MgblxuICA7O1xuXG4gIGxldCBhZGRfYml0cyB0IG4gfm51bV9iaXRzID1cbiAgICBsZXQgaW50X2J1ZiA9ICh0LmludF9idWYgbHNsIG51bV9iaXRzKSBsb3IgbiBpblxuICAgIGxldCBudW1fYml0cyA9IHQubnVtX2JpdHMgKyBudW1fYml0cyBpblxuICAgIHQuaW50X2J1ZiA8LSBpbnRfYnVmO1xuICAgIGlmIG51bV9iaXRzIDwgMTZcbiAgICB0aGVuIHQubnVtX2JpdHMgPC0gbnVtX2JpdHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBudW1fYml0cyA9IG51bV9iaXRzIC0gMTYgaW5cbiAgICAgIHQubnVtX2JpdHMgPC0gbnVtX2JpdHM7XG4gICAgICBhZGRfdWludDE2IHQgKGludF9idWYgbHNyIG51bV9iaXRzKTtcbiAgICAgIHQuY2h1bmtfcG9zIDwtIHQuY2h1bmtfcG9zICsgMlxuICAgICAgKCogbm8gbmVlZCB0byBjbGVhciB0aGUgYml0cyBvZiBpbnRfYnVmIHdlIGp1c3Qgd3JvdGUsIGFzIGZ1cnRoZXIgc2V0MTYgd2lsbCBpZ25vcmVcbiAgICAgICAgIHRoZXNlIGV4dHJhIGJpdHMuICopKVxuICA7O1xuXG4gIGxldCBjb250ZW50cyB0ID1cbiAgICAoKiBGbHVzaCB0aGUgY3VycmVudCBbdC5pbnRfYnVmXSAqKVxuICAgIGFkZF91aW50MTYgdCB0LmludF9idWY7XG4gICAgbGV0IHJldl9jaHVua3MgPSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcyBpblxuICAgIGxldCBjaHVua19wb3MgPSB0LmNodW5rX3BvcyBpblxuICAgIGxldCBleHRyYV9iaXRzID0gdC5udW1fYml0cyBpblxuICAgIGxldCBpbml0aWFsX3BvcyA9IHQuaW5pdGlhbF9wb3MgaW5cbiAgICBsYXp5XG4gICAgICB7IGNodW5rcyA9IExpc3QucmV2IHJldl9jaHVua3NcbiAgICAgIDsgbnVtX2J5dGVzID0gKChMaXN0Lmxlbmd0aCByZXZfY2h1bmtzIC0gMSkgKiBDaHVuay5sZW5ndGgpICsgY2h1bmtfcG9zXG4gICAgICA7IGV4dHJhX2JpdHNcbiAgICAgIDsgaW5pdGlhbF9wb3NcbiAgICAgIH1cbiAgOztcblxuICBsZXQgbG9uZ19zaGlmdCB0IG4gPVxuICAgIGxldCBuID0gcmVmIChuIC0gNSkgaW5cbiAgICB3aGlsZSAhbiA+IDAgZG9cbiAgICAgIGFkZF9iaXRzIHQgKDBiMTEwMF8wMDAwIGxvciAoIW4gbGFuZCAwYjAwMDFfMTExMSkpIH5udW1fYml0czo4O1xuICAgICAgbiA6PSAhbiBsc3IgNVxuICAgIGRvbmVcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IG4gPj0gNSAqKVxuICBsZXRbQGlubGluZSBuZXZlcl0gYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHMgPVxuICAgIGxvbmdfc2hpZnQgdCBuO1xuICAgIGFkZF9iaXRzIHQgaW5zdHIgfm51bV9iaXRzOmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgc2hpZnQ0ID0gMGIxMF8xMF8xMF8xMFxuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyIH5pbnN0cl9iaXRzID1cbiAgICBpbnZhcmlhbnQgdDtcbiAgICBsZXQgbiA9IG9mZnNldCAtIHQub2Zmc2V0IGluXG4gICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDAgfCAxIHwgMiB8IDMgfCA0IC0+XG4gICAgICBsZXQgbnVtX2JpdHMgPSAobiBsc2wgMSkgKyBpbnN0cl9iaXRzIGluXG4gICAgICBhZGRfYml0cyB0ICgoc2hpZnQ0IGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIgbGFuZCAoKDEgbHNsIG51bV9iaXRzKSAtIDEpKSB+bnVtX2JpdHNcbiAgICB8IDVcbiAgICB8IDZcbiAgICB8IDdcbiAgICB8IDhcbiAgICB8IDlcbiAgICB8IDEwXG4gICAgfCAxMVxuICAgIHwgMTJcbiAgICB8IDEzXG4gICAgfCAxNFxuICAgIHwgMTVcbiAgICB8IDE2XG4gICAgfCAxN1xuICAgIHwgMThcbiAgICB8IDE5XG4gICAgfCAyMFxuICAgIHwgMjFcbiAgICB8IDIyXG4gICAgfCAyM1xuICAgIHwgMjRcbiAgICB8IDI1XG4gICAgfCAyNlxuICAgIHwgMjdcbiAgICB8IDI4XG4gICAgfCAyOVxuICAgIHwgMzBcbiAgICB8IDMxXG4gICAgfCAzMlxuICAgIHwgMzNcbiAgICB8IDM0XG4gICAgfCAzNVxuICAgIHwgMzYgLT5cbiAgICAgIGFkZF9iaXRzXG4gICAgICAgIHRcbiAgICAgICAgKCgoMGIxMTAwXzAwMDAgbG9yIChuIC0gNSkpIGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIpXG4gICAgICAgIH5udW1fYml0czooOCArIGluc3RyX2JpdHMpXG4gICAgfCBfIC0+XG4gICAgICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5Qb3NpdGlvbnMuYWRkX2dlblwiO1xuICAgICAgYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgYWRkIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjAgfmluc3RyX2JpdHM6MVxuICBsZXQgYWRkX3R3aWNlIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjExMTEgfmluc3RyX2JpdHM6NFxuICBsZXQgYWRkX25ld2xpbmUgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMTExMCB+aW5zdHJfYml0czo0XG5lbmRcblxudHlwZSBwb3NpdGlvbnMgPSB0XG5cbm1vZHVsZSBJdGVyYXRvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogcG9zaXRpb25zIC0+IHRcblxuICBleGNlcHRpb24gTm9fbW9yZVxuXG4gICgqIFthZHZhbmNlIHQgfnNraXBdIGlnbm9yZXMgW3NraXBdIHNhdmVkIHBvc2l0aW9ucyBhbmQgcmV0dXJucyB0aGUgbmV4dCBzYXZlZCBwb3NpdGlvbi5cbiAgICAgUmFpc2VzIFtOb19tb3JlXSB3aGVuIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIHBvc2l0aW9uIHNldC4gKilcbiAgdmFsIGFkdmFuY2VfZXhuIDogdCAtPiBza2lwOmludCAtPiBwb3NcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gICAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBhdmFpbGFibGUgZnJvbSBbaW5zdHJfcG9zXSBpblxuICAgICAgICAgW2NodW5rIDo6IGNodW5rc10uICopXG4gICAgICBtdXRhYmxlIG51bV9ieXRlcyA6IGludFxuICAgIDsgZXh0cmFfYml0cyA6IGludFxuICAgIDsgbXV0YWJsZSBpbnN0cl9wb3MgOiBpbnQgKCogcG9zaXRpb24gaW4gW2NodW5rXSAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgbGluZSA6IGludFxuICAgIDsgbXV0YWJsZSBib2wgOiBpbnRcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBOdW1iZXIgb2YgYml0cyBub3QgeWV0IGNvbnN1bWVkIGluIFtpbnRfYnVmXSAqKVxuICAgIDsgbXV0YWJsZSBwZW5kaW5nIDogcG9zIG9wdGlvblxuICAgIH1cblxuICBsZXQgY3JlYXRlICgobGF6eSBwKSA6IHBvc2l0aW9ucykgPVxuICAgIG1hdGNoIHAuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB7IGNodW5rXG4gICAgICA7IGNodW5rc1xuICAgICAgOyBudW1fYnl0ZXMgPSBwLm51bV9ieXRlc1xuICAgICAgOyBleHRyYV9iaXRzID0gcC5leHRyYV9iaXRzXG4gICAgICA7IGluc3RyX3BvcyA9IDBcbiAgICAgIDsgb2Zmc2V0ID0gcC5pbml0aWFsX3Bvcy5vZmZzZXRcbiAgICAgIDsgbGluZSA9IHAuaW5pdGlhbF9wb3MubGluZVxuICAgICAgOyBib2wgPSBwLmluaXRpYWxfcG9zLm9mZnNldCAtIHAuaW5pdGlhbF9wb3MuY29sXG4gICAgICA7IGludF9idWYgPSAwXG4gICAgICA7IG51bV9iaXRzID0gMFxuICAgICAgOyBwZW5kaW5nID0gTm9uZVxuICAgICAgfVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBOb19tb3JlXG5cbiAgbGV0IG5vX21vcmUgKCkgPSByYWlzZV9ub3RyYWNlIE5vX21vcmVcblxuICBsZXRbQGlubGluZSBuZXZlcl0gZmV0Y2hfY2h1bmsgdCA9XG4gICAgbWF0Y2ggdC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHQuaW5zdHJfcG9zIDwtIDA7XG4gICAgICB0Lm51bV9ieXRlcyA8LSB0Lm51bV9ieXRlcyAtIENodW5rLmxlbmd0aDtcbiAgICAgIHQuY2h1bmsgPC0gY2h1bms7XG4gICAgICB0LmNodW5rcyA8LSBjaHVua3NcbiAgOztcblxuICBsZXQgZmV0Y2ggdCA9XG4gICAgaWYgdC5pbnN0cl9wb3MgPiB0Lm51bV9ieXRlcyB0aGVuIG5vX21vcmUgKCk7XG4gICAgaWYgdC5pbnN0cl9wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBmZXRjaF9jaHVuayB0O1xuICAgIGxldCB2ID0gQ2h1bmsuZ2V0MTYgdC5jaHVuayB+cG9zOnQuaW5zdHJfcG9zIGluXG4gICAgbGV0IGFkZGVkX2JpdHMgPSBpZiB0Lmluc3RyX3BvcyA9IHQubnVtX2J5dGVzIHRoZW4gdC5leHRyYV9iaXRzIGVsc2UgMTYgaW5cbiAgICB0LmludF9idWYgPC0gKHQuaW50X2J1ZiBsc2wgYWRkZWRfYml0cykgbG9yICh2IGxhbmQgKCgxIGxzbCBhZGRlZF9iaXRzKSAtIDEpKTtcbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgKyBhZGRlZF9iaXRzO1xuICAgIHQuaW5zdHJfcG9zIDwtIHQuaW5zdHJfcG9zICsgMlxuICA7O1xuXG4gIGxldCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHMgPVxuICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0c1xuICAgIHRoZW4gKFxuICAgICAgZmV0Y2ggdDtcbiAgICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0cyB0aGVuIG5vX21vcmUgKCkpO1xuICAgIGxldCBuID0gKHQuaW50X2J1ZiBsc3IgKHQubnVtX2JpdHMgLSBudW1fYml0cykpIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSBpblxuICAgIHQubnVtX2JpdHMgPC0gdC5udW1fYml0cyAtIG51bV9iaXRzO1xuICAgIG5cbiAgOztcblxuICAoKiBbb2Zmc2V0X3NoaWZ0XSBhbmQgW29mZnNldF9zaGlmdF9udW1fYml0c10gZW5jb2RlIHRoZSBvZmZzZXQgbnVtYmVyXG4gICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIFsxMTBdIGluc3RydWN0aW9ucy4gKilcbiAgbGV0IHJlYyBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzID1cbiAgICBtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAoKiBiaXQgc2VxIDAgLT4gbmV3IGl0ZW0gKilcbiAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9XG4gICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDEpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICB8IF8gLT5cbiAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAoKiBiaXQgc2VxIDEwIC0+IHNoaWZ0ICopXG4gICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgICAgIHwgXyAtPlxuICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICgqIGJpdCBzZXEgMTEwIC0+IGxvbmcgc2hpZnQgKilcbiAgICAgICAgICAgIGxldCBuID0gbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjUgaW5cbiAgICAgICAgICAgIGxldCBvZmZzZXRfc2hpZnQgPSBpZiBvZmZzZXRfc2hpZnRfbnVtX2JpdHMgPSAwIHRoZW4gNSBlbHNlIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgYWR2YW5jZVxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIH5za2lwXG4gICAgICAgICAgICAgIH5vZmZzZXRfc2hpZnQ6KG9mZnNldF9zaGlmdCArIChuIGxzbCBvZmZzZXRfc2hpZnRfbnVtX2JpdHMpKVxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOihvZmZzZXRfc2hpZnRfbnVtX2JpdHMgKyA1KVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMCAtPiBuZXdsaW5lICopXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICAgICAgICB0LmJvbCA8LSB0Lm9mZnNldDtcbiAgICAgICAgICAgICAgIHQubGluZSA8LSB0LmxpbmUgKyAxO1xuICAgICAgICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMSAtPiAyIG5ldyBpdGVtcyAqKVxuICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0IGluXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgaWYgc2tpcCA8PSAxXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9IGluXG4gICAgICAgICAgICAgICAgIGlmIHNraXAgPSAwIHRoZW4gdC5wZW5kaW5nIDwtIFNvbWUgcG9zO1xuICAgICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDIpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjApKSlcbiAgOztcblxuICBsZXQgYWR2YW5jZV9leG4gdCB+c2tpcCA9XG4gICAgbWF0Y2ggdC5wZW5kaW5nIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+XG4gICAgICB0LnBlbmRpbmcgPC0gTm9uZTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHBvc1xuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBOb25lIC0+IGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gIDs7XG5lbmRcblxubGV0IGZpbmQgdCBhIGIgPVxuICBpZiBhIDwgMCB8fCBiIDw9IGEgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmZpbmRcIjtcbiAgbGV0IGl0ZXIgPSBJdGVyYXRvci5jcmVhdGUgdCBpblxuICB0cnlcbiAgICBsZXQgc3RhcnRfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDphIGluXG4gICAgbGV0IGxhc3RfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDooYiAtIGEgLSAxKSBpblxuICAgIG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3Bvc1xuICB3aXRoXG4gIHwgSXRlcmF0b3IuTm9fbW9yZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUG9zaXRpb24uZmluZFwiXG47O1xuXG5sZXQgcmVjIHN1Yl9zZXhwX2NvdW50IChzZXhwIDogU2V4cC50KSA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gXyAtPiAxXG4gIHwgTGlzdCBsIC0+IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQ6MSB+ZjooZnVuIGFjYyB4IC0+IGFjYyArIHN1Yl9zZXhwX2NvdW50IHgpXG47O1xuXG5tb2R1bGUgU2V4cF9zZWFyY2ggPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIEZvdW5kIG9mIGludFxuXG4gIGxldCByZWMgbG9vcCB+c3ViIGluZGV4IChzZXhwIDogU2V4cC50KSA9XG4gICAgaWYgc2V4cCA9PSBzdWJcbiAgICB0aGVuIHJhaXNlX25vdHJhY2UgKEZvdW5kIGluZGV4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IEF0b20gXyAtPiBpbmRleCArIDJcbiAgICAgIHwgTGlzdCBsIC0+XG4gICAgICAgIGxldCBpbmRleCA9IGxvb3BfbGlzdCB+c3ViIChpbmRleCArIDEpIGwgaW5cbiAgICAgICAgaW5kZXggKyAxKVxuXG4gIGFuZCBsb29wX2xpc3QgfnN1YiBpbmRleCAoc2V4cHMgOiBTZXhwLnQgbGlzdCkgPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNleHBzIH5pbml0OmluZGV4IH5mOihsb29wIH5zdWIpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplIHQgfnN1YiBhID1cbiAgICBsZXQgYiA9IGEgKyAoc3ViX3NleHBfY291bnQgc3ViICogMikgLSAxIGluXG4gICAgU29tZSAoZmluZCB0IGEgYilcbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9waHlzIHQgc2V4cCB+c3ViID1cbiAgICBtYXRjaCBsb29wIH5zdWIgMCBzZXhwIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuXG4gIGxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyB0IHNleHBzIH5zdWIgPVxuICAgIG1hdGNoIGxvb3BfbGlzdCB+c3ViIDAgc2V4cHMgd2l0aFxuICAgIHwgKF8gOiBpbnQpIC0+IE5vbmVcbiAgICB8IGV4Y2VwdGlvbiBGb3VuZCBuIC0+IGZpbmFsaXplIHQgfnN1YiBuXG4gIDs7XG5lbmRcblxubGV0IGZpbmRfc3ViX3NleHBfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfcGh5c1xubGV0IGZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzID0gU2V4cF9zZWFyY2guZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBJdGVyYXRvci5Ob19tb3JlIC0+IExpc3QucmV2IGFjY1xuICAgIHwgcG9zIC0+IGxvb3AgKHBvcyA6OiBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gdG9fbGlzdCB0IHw+IEFycmF5Lm9mX2xpc3RcbmxldCBjb21wYXJlIHQxIHQyID0gU3RkbGliLmNvbXBhcmUgKHRvX2FycmF5IHQxKSAodG9fYXJyYXkgdDIpXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX2FycmF5IHNleHBfb2ZfcG9zICh0b19hcnJheSB0KVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgQXRvbSBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgYXRvbSA6IHN0cmluZ1xuICAgICAgOyB1bmVzY2FwZWQgOiBzdHJpbmcgb3B0aW9uXG4gICAgICB9XG4gIHwgTGlzdCBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgZWxlbWVudHMgOiB0X29yX2NvbW1lbnQgbGlzdFxuICAgICAgfVxuXG5hbmQgdF9vcl9jb21tZW50ID1cbiAgfCBTZXhwIG9mIHRcbiAgfCBDb21tZW50IG9mIGNvbW1lbnRcblxuYW5kIGNvbW1lbnQgPVxuICB8IFBsYWluX2NvbW1lbnQgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGNvbW1lbnQgOiBzdHJpbmdcbiAgICAgIH1cbiAgfCBTZXhwX2NvbW1lbnQgb2ZcbiAgICAgIHsgaGFzaF9zZW1pX3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICAgIDsgY29tbWVudHMgOiBjb21tZW50IGxpc3RcbiAgICAgIDsgc2V4cCA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgcmVjIHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgQXRvbSB7IGxvYyA9IGxvY19fMDAyXzsgYXRvbSA9IGF0b21fXzAwNF87IHVuZXNjYXBlZCA9IHVuZXNjYXBlZF9fMDA2XyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDAxXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHVuZXNjYXBlZF9fMDA2XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidW5lc2NhcGVkXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIGF0b21fXzAwNF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImF0b21cIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDNfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMDJfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJBdG9tXCIgOjogYm5kc19fMDAxXylcbiAgICB8IExpc3QgeyBsb2MgPSBsb2NfXzAwOV87IGVsZW1lbnRzID0gZWxlbWVudHNfXzAxMV8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwOF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90X29yX2NvbW1lbnQgZWxlbWVudHNfXzAxMV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsZW1lbnRzXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICAgbGV0IGFyZ19fMDEwXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDA5XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGlzdFwiIDo6IGJuZHNfXzAwOF8pXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5hbmQgc2V4cF9vZl90X29yX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFNleHAgYXJnMF9fMDEzXyAtPlxuICAgICAgbGV0IHJlczBfXzAxNF8gPSBzZXhwX29mX3QgYXJnMF9fMDEzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMTRfIF1cbiAgICB8IENvbW1lbnQgYXJnMF9fMDE1XyAtPlxuICAgICAgbGV0IHJlczBfXzAxNl8gPSBzZXhwX29mX2NvbW1lbnQgYXJnMF9fMDE1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29tbWVudFwiOyByZXMwX18wMTZfIF1cbiAgICAgIDogdF9vcl9jb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfY29tbWVudCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCB7IGxvYyA9IGxvY19fMDE4XzsgY29tbWVudCA9IGNvbW1lbnRfXzAyMF8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAxN18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAyMV8gPSBzZXhwX29mX3N0cmluZyBjb21tZW50X18wMjBfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50XCI7IGFyZ19fMDIxXyBdIDo6IGJuZHNfXzAxN19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMTdfID1cbiAgICAgICAgbGV0IGFyZ19fMDE5XyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDE4XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDE5XyBdIDo6IGJuZHNfXzAxN19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGxhaW5fY29tbWVudFwiIDo6IGJuZHNfXzAxN18pXG4gICAgfCBTZXhwX2NvbW1lbnRcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zID0gaGFzaF9zZW1pX3Bvc19fMDIzX1xuICAgICAgICA7IGNvbW1lbnRzID0gY29tbWVudHNfXzAyNV9cbiAgICAgICAgOyBzZXhwID0gc2V4cF9fMDI3X1xuICAgICAgICB9IC0+XG4gICAgICBsZXQgYm5kc19fMDIyXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI4XyA9IHNleHBfb2ZfdCBzZXhwX18wMjdfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXhwXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI2XyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2NvbW1lbnQgY29tbWVudHNfXzAyNV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNvbW1lbnRzXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI0XyA9IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBoYXNoX3NlbWlfcG9zX18wMjNfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJoYXNoX3NlbWlfcG9zXCI7IGFyZ19fMDI0XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cF9jb21tZW50XCIgOjogYm5kc19fMDIyXylcbiAgICAgIDogY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZSA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgY29tcGFyZV90X29yX2NvbW1lbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGNvbXBhcmVfY29tbWVudCA9IFN0ZGxpYi5jb21wYXJlXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFNleHAudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoU2V4cC50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoU2V4cC50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIHsgYXRvbTsgXyB9IC0+IGsgKFNleHAuQXRvbSBhdG9tKVxuICAgICAgfCBMaXN0IHsgZWxlbWVudHM7IF8gfSAtPiBmb3JnZXRfdG9jcyBlbGVtZW50cyAoZnVuIHhzIC0+IGsgKFNleHAuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEF1dG9tYXRvbl9zdGFja19pbnRmXG5cbm1vZHVsZSBGb3JfY3N0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgVF9vcl9jb21tZW50IG9mIENzdC50X29yX2NvbW1lbnQgKiB0XG4gICAgfCBPcGVuIG9mIFBvc2l0aW9ucy5wb3MgKiB0XG4gICAgfCBJbl9zZXhwX2NvbW1lbnQgb2ZcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgICAgICA7IHJldl9jb21tZW50cyA6IENzdC5jb21tZW50IGxpc3RcbiAgICAgICAgOyBzdGFjayA6IHRcbiAgICAgICAgfVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGdldF9tYW55ID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgICB8IFRfb3JfY29tbWVudCAodCwgc3RhY2spIC0+IGxvb3AgKHQgOjogYWNjKSBzdGFja1xuICAgICAgfCBPcGVuIF8gfCBJbl9zZXhwX2NvbW1lbnQgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55XCJcbiAgICBpblxuICAgIGZ1biBzdGFjayAtPiBsb29wIFtdIHN0YWNrXG4gIDs7XG5lbmRcblxubW9kdWxlIEp1c3RfcG9zaXRpb25zID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXRcblxuICBsZXQgZW1wdHkgPSAoKVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgRW1wdHlcbiAgfCBPcGVuIG9mIHRcbiAgfCBTZXhwIG9mIFNleHAudCAqIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGdldF9zaW5nbGUgPSBmdW5jdGlvblxuICB8IFNleHAgKHNleHAsIEVtcHR5KSAtPiBzZXhwXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlXCJcbjs7XG5cbmxldCBnZXRfbWFueSA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBPcGVuIF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suZ2V0X21hbnlcIlxuICAgIHwgU2V4cCAoc2V4cCwgc3RhY2spIC0+IGxvb3AgKHNleHAgOjogYWNjKSBzdGFja1xuICBpblxuICBmdW4gc3RhY2sgLT4gbG9vcCBbXSBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgfCBTZXhwXG5lbmRcblxubW9kdWxlIEZvcl9jc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRva2VuX2J1ZmZlciA6IEJ1ZmZlci50ICgqKiBTdGFydGluZyBwb3NpdGlvbnMgb2YgdGhlIGN1cnJlbnQgdG9rZW4gKiopXG4gICAgOyBtdXRhYmxlIHRva2VuX3N0YXJ0X3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFBvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCB1bml0KSB0XG4gICAgfCBTZXhwIDogKHVuaXQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBDc3QgOiAoRm9yX2NzdC50LCBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KSB0XG5lbmRcblxubW9kdWxlIHJlYyBTdGF0ZSA6IHNpZ1xuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHsgbXV0YWJsZSBhdXRvbWF0b25fc3RhdGUgOiBpbnRcbiAgICA7IGtpbmQgOiAoJ3UsICdzKSBLaW5kLnRcbiAgICA7IG11dGFibGUgZGVwdGggOiBpbnQgKCoqIE51bWJlciBvZiBvcGVuZWQgI3wgd2hlbiBwYXJzaW5nIGEgYmxvY2sgY29tbWVudCAqKVxuICAgIDsgbXV0YWJsZSBibG9ja19jb21tZW50X2RlcHRoIDogaW50XG4gICAgKCoqIFN0YWNrIG9mIGlnbm9yaW5nIGRlcHRoczsgdGhlIGN1cnJlbnQgZGVwdGggaXMgcHVzaGVkXG4gICAgICAgIGVhY2ggdGltZSBhICM7IGNvbW1lbnQgaXMgZW50ZXJlZC4gKilcbiAgICA7IG11dGFibGUgaWdub3Jpbmdfc3RhY2sgOiBpbnQgbGlzdFxuICAgICgqKiBXaGVuIHBhcnNpbmcgYW4gZXNjYXBlIHNlcXVlbmNlIG9mIHRoZSBmb3JtIFwiXFxcXE5OTlwiIG9yIFwiXFxcXFhYXCIsIHRoaXMgYWNjdW11bGF0ZXNcbiAgICAgICAgdGhlIGNvbXB1dGVkIG51bWJlciAqKVxuICAgIDsgbXV0YWJsZSBlc2NhcGVkX3ZhbHVlIDogaW50ICgqKiBCdWZmZXIgZm9yIGFjY3VtdWxhdGluZyBhdG9tcyAqKVxuICAgIDsgYXRvbV9idWZmZXIgOiBCdWZmZXIudFxuICAgIDsgdXNlcl9zdGF0ZSA6ICd1XG4gICAgOyBtb2RlIDogKCd1LCAncykgTW9kZS50XG4gICAgOyBtdXRhYmxlIGZ1bGxfc2V4cHMgOiBpbnRcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50ICgqKiBnbG9iYWwgb2Zmc2V0ICoqKVxuICAgIDsgbXV0YWJsZSBsaW5lX251bWJlciA6IGludFxuICAgIDsgbXV0YWJsZSBib2xfb2Zmc2V0IDogaW50ICgqKiBvZmZzZXQgb2YgYmVnaW5uaW5nIG9mIGxpbmUgKiopXG4gICAgfVxuZW5kID1cbiAgU3RhdGVcblxuYW5kIE1vZGUgOiBzaWdcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFNpbmdsZVxuICAgIHwgTWFueVxuICAgIHwgRWFnZXIgb2ZcbiAgICAgICAgeyBnb3Rfc2V4cCA6ICgndSwgJ3MpIFN0YXRlLnQgLT4gJ3MgLT4gJ3NcbiAgICAgICAgOyBtdXRhYmxlIG5vX3NleHBfaXNfZXJyb3IgOiBib29sXG4gICAgICAgIH1cbmVuZCA9XG4gIE1vZGVcblxubW9kdWxlIHR5cGUgQXV0b21hdG9uX3N0YXRlID0gc2lnXG4gIG1vZHVsZSBDb250ZXh0ID0gQ29udGV4dFxuICBtb2R1bGUgRm9yX2NzdCA9IEZvcl9jc3RcbiAgbW9kdWxlIEtpbmQgPSBLaW5kXG4gIG1vZHVsZSBNb2RlID0gTW9kZVxuICBtb2R1bGUgU3RhdGUgPSBTdGF0ZVxuXG4gIHR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIFN0YXRlLnRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2luaXRpYWxfcG9zOlBvc2l0aW9ucy5wb3NcbiAgICAtPiAoJ3UsICdzKSBNb2RlLnRcbiAgICAtPiAoJ3UsICdzKSBLaW5kLnRcbiAgICAtPiAoJ3UsICdzKSB0XG5cbiAgdmFsIHJlc2V0IDogP3BvczpQb3NpdGlvbnMucG9zIC0+IF8gdCAtPiB1bml0XG4gIHZhbCBwb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgXykgdCAtPiBQb3NpdGlvbnMudFxuICB2YWwgbW9kZSA6ICgndSwgJ3MpIHQgLT4gKCd1LCAncykgTW9kZS50XG5cbiAgKCoqIE51bWJlciBvZiBjaGFyYWN0ZXJzIGZlZCB0byB0aGUgcGFyc2VyICopXG4gIHZhbCBvZmZzZXQgOiBfIHQgLT4gaW50XG5cbiAgKCoqIFBvc2l0aW9uIGluIHRoZSB0ZXh0ICopXG4gIHZhbCBsaW5lIDogXyB0IC0+IGludFxuXG4gIHZhbCBjb2x1bW4gOiBfIHQgLT4gaW50XG5cbiAgKCoqIFdoZXRoZXIgdGhlcmUgYXJlIHNvbWUgdW5jbG9zZWQgcGFyZW50aGVzZXMgKilcbiAgdmFsIGhhc191bmNsb3NlZF9wYXJlbiA6ICgndSwgJ3MpIHQgLT4gYm9vbFxuXG4gIHZhbCBzZXRfZXJyb3Jfc3RhdGUgOiBfIHQgLT4gdW5pdFxuXG4gICgqKi8qKilcblxuICAoKl8gT25seSBmb3IgY29udmVydGluZyBlcnJvcnMgdG8gdGhlIG9sZCBwYXJzZXIgZXJyb3JzICopXG4gIHZhbCBhdG9tX2J1ZmZlciA6IF8gdCAtPiBCdWZmZXIudFxuXG4gICgqXyBGb3IgY292ZXJhdGUgdGVzdHMgKilcbiAgdmFsIGF1dG9tYXRvbl9zdGF0ZSA6ICgndSwgJ3MpIHQgLT4gaW50XG4gIHZhbCBjb250ZXh0IDogXyB0IC0+IENvbnRleHQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXV0b21hdG9uX3N0YXRlX2ludGZcblxudHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgU3RhdGUudFxuXG5vcGVuIFN0YXRlXG5cbmxldCBpbml0aWFsX3VzZXJfc3RhdGUgOiB0eXBlIHUgcy4gKHUsIHMpIEtpbmQudCAtPiBQb3NpdGlvbnMucG9zIC0+IHUgPVxuICBmdW4ga2luZCBpbml0aWFsX3BvcyAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuY3JlYXRlIH5pbml0aWFsX3BvcyAoKVxuICB8IFNleHAgLT4gKClcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmNyZWF0ZSB+aW5pdGlhbF9wb3MgKClcbiAgfCBDc3QgLT5cbiAgICAoKiBbdG9rZW5fc3RhcnRfcG9zXSBpcyBzZXQgdG8gYSBkdW1teSBsb2NhdGlvbiBoZXJlLiBJdCBpcyBwcm9wZXJseSBzZXQgd2hlbiB3ZVxuICAgICAgIHN0YXJ0IHRvIGNhcHR1cmUgYSB0b2tlbiBmcm9tIHRoZSBpbnB1dCAqKVxuICAgIHsgdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAxMjg7IHRva2VuX3N0YXJ0X3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSB9XG47O1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3N0YXRlLnByaW50X2NvbnN0YW50cyAoKSAqKVxubGV0IGluaXRpYWxfc3RhdGUgPSAwXG5sZXQgZXJyb3Jfc3RhdGUgPSAxXG5cbigqJCopXG5cbmxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSkgbW9kZSBraW5kID1cbiAgeyBraW5kXG4gIDsgZGVwdGggPSAwXG4gIDsgYXV0b21hdG9uX3N0YXRlID0gaW5pdGlhbF9zdGF0ZVxuICA7IGJsb2NrX2NvbW1lbnRfZGVwdGggPSAwXG4gIDsgaWdub3Jpbmdfc3RhY2sgPSBbXVxuICA7IGVzY2FwZWRfdmFsdWUgPSAwXG4gIDsgYXRvbV9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDEyOFxuICA7IHVzZXJfc3RhdGUgPSBpbml0aWFsX3VzZXJfc3RhdGUga2luZCBpbml0aWFsX3Bvc1xuICA7IG1vZGVcbiAgOyBmdWxsX3NleHBzID0gMFxuICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICA7IGxpbmVfbnVtYmVyID0gaW5pdGlhbF9wb3MubGluZVxuICA7IGJvbF9vZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXQgLSBpbml0aWFsX3Bvcy5jb2xcbiAgfVxuOztcblxubGV0IG1vZGUgdCA9IHQubW9kZVxubGV0IHBvc2l0aW9ucyB0ID0gUG9zaXRpb25zLkJ1aWxkZXIuY29udGVudHMgdC51c2VyX3N0YXRlXG5sZXQgYXRvbV9idWZmZXIgdCA9IHQuYXRvbV9idWZmZXJcbmxldCBvZmZzZXQgc3RhdGUgPSBzdGF0ZS5vZmZzZXRcbmxldCBsaW5lIHN0YXRlID0gc3RhdGUubGluZV9udW1iZXJcbmxldCBjb2x1bW4gc3RhdGUgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG5sZXQgcG9zaXRpb24gdCA9IHsgUG9zaXRpb25zLmNvbCA9IGNvbHVtbiB0OyBsaW5lID0gbGluZSB0OyBvZmZzZXQgPSBvZmZzZXQgdCB9XG5cbmxldCByZXNldF91c2VyX3N0YXRlIDogdHlwZSB1IHMuICh1LCBzKSB0IC0+IHVuaXQgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5yZXNldCB0LnVzZXJfc3RhdGUgKHBvc2l0aW9uIHQpXG4gIHwgU2V4cCAtPiAoKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIucmVzZXQgdC51c2VyX3N0YXRlIChwb3NpdGlvbiB0KVxuICB8IENzdCAtPiBCdWZmZXIuY2xlYXIgdC51c2VyX3N0YXRlLnRva2VuX2J1ZmZlclxuOztcblxubGV0IHJlc2V0ID8ocG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlKSB0ID1cbiAgdC5kZXB0aCA8LSAwO1xuICB0LmF1dG9tYXRvbl9zdGF0ZSA8LSBpbml0aWFsX3N0YXRlO1xuICB0LmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gMDtcbiAgdC5pZ25vcmluZ19zdGFjayA8LSBbXTtcbiAgdC5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIHQuZnVsbF9zZXhwcyA8LSAwO1xuICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICB0LmxpbmVfbnVtYmVyIDwtIHBvcy5saW5lO1xuICB0LmJvbF9vZmZzZXQgPC0gcG9zLm9mZnNldCAtIHBvcy5jb2w7XG4gIHJlc2V0X3VzZXJfc3RhdGUgdDtcbiAgQnVmZmVyLmNsZWFyIHQuYXRvbV9idWZmZXJcbjs7XG5cbmxldCBjb250ZXh0IHN0YXRlIDogQ29udGV4dC50ID1cbiAgbWF0Y2ggc3RhdGUuaWdub3Jpbmdfc3RhY2sgd2l0aFxuICB8IF8gOjogXyAtPiBTZXhwX2NvbW1lbnRcbiAgfCBbXSAtPiBTZXhwXG47O1xuXG5sZXQgaGFzX3VuY2xvc2VkX3BhcmVuIHN0YXRlID0gc3RhdGUuZGVwdGggPiAwXG5sZXQgc2V0X2Vycm9yX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIGVycm9yX3N0YXRlXG5sZXQgYXV0b21hdG9uX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFJlYXNvbiA9IHN0cnVjdFxuICAoKl8gU29tZSBvZiB0aGVzZSBjb21lIGZyb20gW1BhcnNleHBfc3ltYm9saWNfYXV0b21hdG9uLlBhcnNlX2Vycm9yX3JlYXNvbl0uICopXG4gIHR5cGUgdCA9XG4gICAgKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX3BhcnNlX2Vycm9yLnByaW50X2NvbnN0cnVjdG9ycyAoKSAqKVxuICAgIHwgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b21cbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG4gICAgfCBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxuICAgIHwgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbiAgICAoKiQqKVxuICAgIHwgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkXG4gICAgfCBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0XG4gICAgfCBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwXG4gICAgfCBUb29fbWFueV9zZXhwc1xuICAgIHwgVW5jbG9zZWRfcGFyZW5cbmVuZFxuXG5tb2R1bGUgdHlwZSBQYXJzZV9lcnJvciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcG9zaXRpb24gOiB0IC0+IFBvc2l0aW9ucy5wb3NcbiAgdmFsIG1lc3NhZ2UgOiB0IC0+IHN0cmluZ1xuXG4gICgqKiBSZXBvcnQgYW4gZXJyb3IgaW4gYSBzdHlsZSBzaW1pbGFyIHRvIE9DYW1sLCBmb3IgaW5zdGFuY2U6XG5cbiAgICAgIEZpbGUgXCJibGFoXCIsIGxpbmUgNDIsIGNoYXJhY3RlciAxMDpcbiAgICAgIEVycm9yOiBzLWV4cHJlc3Npb24gcGFyc2luZyBlcnJvcjtcbiAgICAgIHVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nLlxuICAqKVxuICB2YWwgcmVwb3J0IDogRm9ybWF0LmZvcm1hdHRlciAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdCAtPiB1bml0XG5cbiAgZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHRcblxuICAoKiovKiopXG5cbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgICAoKiogVG8gbWF0Y2ggdGhlIG9sZCBiZWhhdmlvciwgdGhlIG9sZCBwYXJzZXIgc29tZXRpbWVzIHJhaXNlZCBbRmFpbHVyZV0gYW5kIHNvbWV0aW1lc1xuICAgICAgICByYWlzZWQgW1BhcnNlX2Vycm9yXSAqKVxuICAgIHZhbCBvbGRfcGFyc2VyX2V4biA6IHQgLT4gWyBgUGFyc2VfZXJyb3IgfCBgRmFpbHVyZSBdXG5cbiAgICB2YWwgcmFpc2UgOiBSZWFzb24udCAtPiBQb3NpdGlvbnMucG9zIC0+IGF0X2VvZjpib29sIC0+IGF0b21fYnVmZmVyOkJ1ZmZlci50IC0+ICdhXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VfZXJyb3JfaW50ZlxuXG50eXBlIHQgPVxuICB7IHBvc2l0aW9uIDogUG9zaXRpb25zLnBvc1xuICA7IG1lc3NhZ2UgOiBzdHJpbmdcbiAgOyBvbGRfcGFyc2VyX2V4biA6IFsgYFBhcnNlX2Vycm9yIHwgYEZhaWx1cmUgXVxuICB9XG5cbmxldCBzZXhwX29mX3QgeyBwb3NpdGlvbjsgbWVzc2FnZTsgb2xkX3BhcnNlcl9leG4gPSBfIH0gOiBTZXhwLnQgPVxuICBMaXN0XG4gICAgWyBMaXN0IFsgQXRvbSBcInBvc2l0aW9uXCI7IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBwb3NpdGlvbiBdXG4gICAgOyBMaXN0IFsgQXRvbSBcIm1lc3NhZ2VcIjsgc2V4cF9vZl9zdHJpbmcgbWVzc2FnZSBdXG4gICAgXVxuOztcblxubGV0IHBvc2l0aW9uIHQgPSB0LnBvc2l0aW9uXG5sZXQgbWVzc2FnZSB0ID0gdC5tZXNzYWdlXG5sZXQgb2xkX3BhcnNlcl9leG4gdCA9IHQub2xkX3BhcnNlcl9leG5cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgcG9zID0gcG9zaXRpb24gdCBpblxuICBsZXQgbXNnID0gbWVzc2FnZSB0IGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlciAlZDpcXG5FcnJvcjogcy1leHByZXNzaW9uIHBhcnNpbmcgZXJyb3I7XFxuJXNcXG5cIlxuICAgIGZpbGVuYW1lXG4gICAgcG9zLmxpbmVcbiAgICBwb3MuY29sXG4gICAgbXNnXG47O1xuXG5leGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBhcnNlX2Vycm9yLm1sLlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmFpc2UgKHJlYXNvbiA6IFJlYXNvbi50KSBwb3NpdGlvbiB+YXRfZW9mIH5hdG9tX2J1ZmZlciA9XG4gIGxldCBtZXNzYWdlID1cbiAgICAoKiBUaGVzZSBtZXNzYWdlcyB3aGVyZSBjaG9vc2VuIHN1Y2ggdGhhdCB3ZSBjYW4gYnVpbGQgdGhlIHZhcmlvdXMgU2V4cGxpYiBwYXJzaW5nXG4gICAgICAgZnVuY3Rpb25zIG9uIHRvcCBvZiBQYXJzZXhwIGFuZCBrZWVwIHRoZSBzYW1lIGV4Y2VwdGlvbnMuXG5cbiAgICAgICBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMsIGEgc2ltcGxlIGxheWVyIG9uIHRvcCBvZiBwYXJzZXhwIHRvIGltcGxlbWVudCB0aGVcbiAgICAgICBzZXhwbGliIEFQSSBpcyBwYXNzaW5nIGFsbCB0aGUgc2V4cGxpYiB0ZXN0cy5cblxuICAgICAgIE5vdGUgdGhhdCBwYXJzZXhwIG1hdGNoZXMgdGhlIHNlbWFudGljIG9mIFNleHAucGFyc2Ugd2hpY2ggaXMgc2xpZ2h0bHlcbiAgICAgICBkaWZmZXJlbnQgZnJvbSB0aGUgb2NhbWxsZXgvb2NhbWx5YWNjIGJhc2VkIHBhcnNlciBvZiBTZXhwbGliLiBUaGUgbGF0dGVyIG9uZVxuICAgICAgIGlzIGxlc3MgdGVzdGVkIGFuZCBhc3N1bWVkIHRvIGJlIGxlc3MgdXNlZC4gKilcbiAgICBtYXRjaCByZWFzb24gd2l0aFxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2VcIlxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiXG4gICAgfCBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZyAtPiBcInVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nXCJcbiAgICB8IFVudGVybWluYXRlZF9ibG9ja19jb21tZW50IC0+IFwidW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnRcIlxuICAgIHwgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZSAtPiBcImVzY2FwZSBzZXF1ZW5jZSBpbiBxdW90ZWQgc3RyaW5nIG91dCBvZiByYW5nZVwiXG4gICAgfCBVbmNsb3NlZF9wYXJlbiAtPiBcInVuY2xvc2VkIHBhcmVudGhlc2VzIGF0IGVuZCBvZiBpbnB1dFwiXG4gICAgfCBUb29fbWFueV9zZXhwcyAtPiBcInMtZXhwcmVzc2lvbiBmb2xsb3dlZCBieSBkYXRhXCJcbiAgICB8IENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZCAtPiBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyOiAnKSdcIlxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tIC0+XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgKEJ1ZmZlci5jb250ZW50cyBhdG9tX2J1ZmZlcikgXCJ8XCJcbiAgICAgIHRoZW4gXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCJcbiAgICAgIGVsc2UgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCJcbiAgICB8IFNleHBfY29tbWVudF93aXRob3V0X3NleHAgLT4gXCJ1bnRlcm1pbmF0ZWQgc2V4cCBjb21tZW50XCJcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyIC0+XG4gICAgICBpZiBhdF9lb2ZcbiAgICAgIHRoZW4gXCJ1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBhZnRlciBjYXJyaWFnZSByZXR1cm5cIlxuICAgICAgZWxzZSBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyIGFmdGVyIGNhcnJpYWdlIHJldHVyblwiXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0IC0+IFwibm8gcy1leHByZXNzaW9uIGZvdW5kIGluIGlucHV0XCJcbiAgICB8IEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUGFyc2VyX2F1dG9tYXRvbjogcGFyc2VyIGlzIGRlYWRcIlxuICBpblxuICBsZXQgb2xkX3BhcnNlcl9leG4gPVxuICAgIG1hdGNoIHJlYXNvbiwgYXRfZW9mIHdpdGhcbiAgICB8IFRvb19tYW55X3NleHBzLCBfIHwgXywgdHJ1ZSAtPiBgRmFpbHVyZVxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tLCBfXG4gICAgICB3aGVuIFN0cmluZy5lcXVhbCAoQnVmZmVyLmNvbnRlbnRzIGF0b21fYnVmZmVyKSBcInxcIiAtPiBgRmFpbHVyZVxuICAgIHwgXyAtPiBgUGFyc2VfZXJyb3JcbiAgaW5cbiAgcmFpc2UgKFBhcnNlX2Vycm9yIHsgcG9zaXRpb247IG1lc3NhZ2U7IG9sZF9wYXJzZXJfZXhuIH0pXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgbGV0IG9sZF9wYXJzZXJfZXhuID0gb2xkX3BhcnNlcl9leG5cbiAgbGV0IHJhaXNlID0gcmFpc2VcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEF1dG9tYXRvbl9zdGF0ZVxub3BlbiBTdGF0ZVxuXG5sZXQgcmFpc2VfZXJyb3IgOiB0eXBlIGEgYi4gKGEsIGIpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IF8gPVxuICBmdW4gc3RhdGUgfmF0X2VvZiByZWFzb24gLT5cbiAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICBQYXJzZV9lcnJvci5Qcml2YXRlLnJhaXNlXG4gICAgcmVhc29uXG4gICAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXJcbiAgICA7IGNvbCA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbiAgICA7IG9mZnNldCA9IHN0YXRlLm9mZnNldFxuICAgIH1cbiAgICB+YXRfZW9mXG4gICAgfmF0b21fYnVmZmVyOnN0YXRlLmF0b21fYnVmZmVyXG47O1xuXG50eXBlIG5vbnJlYyBjb250ZXh0ID0gQXV0b21hdG9uX3N0YXRlLkNvbnRleHQudCA9XG4gIHwgU2V4cF9jb21tZW50XG4gIHwgU2V4cFxuXG5sZXQgY29udGV4dCA9IEF1dG9tYXRvbl9zdGF0ZS5jb250ZXh0XG5cbnR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gJ3MgLT4gJ3NcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbmVuZFxuXG5tb2R1bGUgRXBzaWxvbiA9IHN0cnVjdFxuICB0eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBBdXRvbWF0b25fc3RhdGUudCAtPiAncyAtPiAnc1xuXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmRcblxubGV0IGN1cnJlbnRfcG9zID8oZGVsdGEgPSAwKSBzdGF0ZSA6IFBvc2l0aW9ucy5wb3MgPVxuICBsZXQgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0ICsgZGVsdGEgaW5cbiAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXI7IGNvbCA9IG9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXQ7IG9mZnNldCB9XG47O1xuXG5sZXQgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSB4ID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIHhcbmxldCBhZHZhbmNlIHN0YXRlID0gc3RhdGUub2Zmc2V0IDwtIHN0YXRlLm9mZnNldCArIDFcblxubGV0IGFkdmFuY2VfZW9sIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIGxldCBuZXdsaW5lX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICBzdGF0ZS5vZmZzZXQgPC0gbmV3bGluZV9vZmZzZXQgKyAxO1xuICBzdGF0ZS5ib2xfb2Zmc2V0IDwtIHN0YXRlLm9mZnNldDtcbiAgc3RhdGUubGluZV9udW1iZXIgPC0gc3RhdGUubGluZV9udW1iZXIgKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuYWRkX25ld2xpbmUgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0Om5ld2xpbmVfb2Zmc2V0XG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIFBvc2l0aW9ucy5CdWlsZGVyLmFkZF9uZXdsaW5lIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDpuZXdsaW5lX29mZnNldFxuICB8IF8gLT4gKClcbjs7XG5cbmxldCBibG9ja19jb21tZW50X2RlcHRoIHN0YXRlID0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aFxuXG5sZXQgYWRkX3Rva2VuX2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBhZGRfYXRvbV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYztcbiAgc3RhY2tcbjs7XG5cbmxldCBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBpc19pZ25vcmluZyBzdGF0ZSA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHAgLT4gZmFsc2VcbiAgfCBTZXhwX2NvbW1lbnQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX25vdF9pZ25vcmluZyBzdGF0ZSA9IG5vdCAoaXNfaWdub3Jpbmcgc3RhdGUpXG5cbmxldCBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlID1cbiAgbGV0IGlzX3NpbmdsZSA9XG4gICAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gICAgfCBTaW5nbGUgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBpc19zaW5nbGUgJiYgc3RhdGUuZnVsbF9zZXhwcyA+IDAgJiYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBUb29fbWFueV9zZXhwc1xuOztcblxubGV0IGFkZF9wb3Mgc3RhdGUgfmRlbHRhID1cbiAgUG9zaXRpb25zLkJ1aWxkZXIuYWRkIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDooc3RhdGUub2Zmc2V0ICsgZGVsdGEpXG47O1xuXG5sZXQgYWRkX2ZpcnN0X2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgY2hhcjtcbiAgKCogRm9yIG5vbi1xdW90ZWQgYXRvbXMsIHdlIHNhdmUgYm90aCBwb3NpdGlvbnMgYXQgdGhlIGVuZC4gV2UgY2FuIGFsd2F5cyBkZXRlcm1pbmUgdGhlXG4gICAgIHN0YXJ0IHBvc2l0aW9uIGZyb20gdGhlIGVuZCBwb3NpdGlvbiBhbmQgdGhlIGF0b20gbGVuZ3RoIGZvciBub24tcXVvdGVkIGF0b21zLlxuXG4gICAgIERvaW5nIGl0IHRoaXMgd2F5IGFsbG93cyB1cyB0byBkZXRlY3Qgc2luZ2xlIGNoYXJhY2F0ZXIgYXRvbXMgZm9yIHdoaWNoIHdlIG5lZWQgdG9cbiAgICAgc2F2ZSB0aGUgcG9zaXRpb24gdHdpY2UuICopXG4gIHN0YWNrXG47O1xuXG5sZXQgZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJyMnO1xuICBzdGFja1xuOztcblxubGV0IHN0YXJ0X3F1b3RlZF9zdHJpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGU7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyICdcIic7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG47O1xuXG5sZXQgYWRkX2VzY2FwZWQgc3RhdGUgYyBzdGFjayA9XG4gIGxldCBjJyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnbicgLT4gJ1xcbidcbiAgICB8ICdyJyAtPiAnXFxyJ1xuICAgIHwgJ2InIC0+ICdcXGInXG4gICAgfCAndCcgLT4gJ1xcdCdcbiAgICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1wiJyAtPiBjXG4gICAgfCBfIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xcXFwnO1xuICAgICAgY1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYyc7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xccic7XG4gIHN0YWNrXG47O1xuXG5sZXQgZGVjX3ZhbCBjID0gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG5cbmxldCBoZXhfdmFsIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICB8ICdhJyAuLiAnZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgfCBfIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG47O1xuXG5sZXQgYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBjb21tZW50X2FkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgbHNsIDQpIGxvciBoZXhfdmFsIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfbGFzdF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlIGxzbCA0KSBsb3IgaGV4X3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBvcGVuaW5nIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBzdGF0ZS5kZXB0aCA8LSBzdGF0ZS5kZXB0aCArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIE9wZW4gc3RhY2sgZWxzZSBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICB0aGVuIChcbiAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICBPcGVuIHN0YWNrKVxuICAgIGVsc2Ugc3RhY2tcbiAgfCBDc3QgLT4gT3BlbiAoY3VycmVudF9wb3Mgc3RhdGUsIHN0YWNrKVxuOztcblxubGV0IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZSA9XG4gIFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0XG4gICAgc3RhdGUudXNlcl9zdGF0ZVxuICAgIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG4gICAgOyBjb2wgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG4gICAgOyBvZmZzZXQgPSBzdGF0ZS5vZmZzZXRcbiAgICB9XG47O1xuXG5sZXQgcmVzZXRfcG9zaXRpb25zIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGVcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZVxuICB8IFNleHAgLT4gKClcbiAgfCBDc3QgLT4gKClcbjs7XG5cbmxldCB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhID1cbiAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gIHwgU2luZ2xlIHwgTWFueSAtPiBzdGFja1xuICB8IEVhZ2VyIHsgZ290X3NleHAgPSBmOyBfIH0gLT5cbiAgICAoKiBNb2RpZnkgdGhlIG9mZnNldCBzbyB0aGF0IFtmXSBnZXQgYSBzdGF0ZSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50XG4gICAgICAgcy1leHByZXNzaW9uICopXG4gICAgbGV0IHNhdmVkX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICAgIHN0YXRlLm9mZnNldCA8LSBzdGF0ZS5vZmZzZXQgKyBkZWx0YTtcbiAgICBsZXQgc2F2ZWRfZnVsbF9zZXhwcyA9IHN0YXRlLmZ1bGxfc2V4cHMgaW5cbiAgICAobWF0Y2ggZiBzdGF0ZSBzdGFjayB3aXRoXG4gICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gICAgICAgcmFpc2UgZVxuICAgICB8IHN0YWNrIC0+XG4gICAgICAgKCogVGhpcyBhc3NlcnQgaXMgbm90IGEgZnVsbCBwcm90ZWN0aW9uIGFnYWluc3QgdGhlIHVzZXIgbXV0YXRpbmcgdGhlIHN0YXRlIGJ1dFxuICAgICAgICAgIGl0IHNob3VsZCBjYXRjaCBtb3N0IGNhc2VzLiAqKVxuICAgICAgIGFzc2VydCAoc3RhdGUub2Zmc2V0ID0gc2F2ZWRfb2Zmc2V0ICsgZGVsdGEgJiYgc3RhdGUuZnVsbF9zZXhwcyA9IHNhdmVkX2Z1bGxfc2V4cHMpO1xuICAgICAgIHN0YXRlLm9mZnNldCA8LSBzYXZlZF9vZmZzZXQ7XG4gICAgICAgcmVzZXRfcG9zaXRpb25zIHN0YXRlO1xuICAgICAgIHN0YWNrKVxuOztcblxubGV0IGlzX3RvcF9sZXZlbCBzdGF0ZSA9IGlzX25vdF9pZ25vcmluZyBzdGF0ZSAmJiBzdGF0ZS5kZXB0aCA9IDBcblxubGV0IGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YSA9XG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZSB0aGVuIHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGEgZWxzZSBzdGFja1xuOztcblxubGV0IG1heWJlX3BvcF9pZ25vcmluZ19zdGFjayBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlLmlnbm9yaW5nX3N0YWNrIHdpdGhcbiAgfCBpbm5lcl9jb21tZW50X2RlcHRoIDo6IF90bCB3aGVuIGlubmVyX2NvbW1lbnRfZGVwdGggPiBzdGF0ZS5kZXB0aCAtPlxuICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cFxuICB8IGlubmVyX2NvbW1lbnRfZGVwdGggOjogdGwgd2hlbiBpbm5lcl9jb21tZW50X2RlcHRoID0gc3RhdGUuZGVwdGggLT5cbiAgICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSB0bDtcbiAgICB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNleHBfYWRkZWQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHMgLT4gZGVsdGE6aW50IC0+IHMgPVxuICBmdW4gc3RhdGUgc3RhY2sgfmRlbHRhIC0+XG4gIGxldCBpc19jb21tZW50ID0gbWF5YmVfcG9wX2lnbm9yaW5nX3N0YWNrIHN0YXRlIGluXG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZVxuICB0aGVuIChcbiAgICBpZiBub3QgaXNfY29tbWVudCB0aGVuIHN0YXRlLmZ1bGxfc2V4cHMgPC0gc3RhdGUuZnVsbF9zZXhwcyArIDE7XG4gICAgaWYgKG5vdCBpc19jb21tZW50KVxuICAgICAgIHx8XG4gICAgICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgICAgfCBDc3QgLT4gdHJ1ZVxuICAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW4gdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YVxuICAgIGVsc2Ugc3RhY2spXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCByZWMgbWFrZV9saXN0IGFjYyA6IEF1dG9tYXRvbl9zdGFjay50IC0+IEF1dG9tYXRvbl9zdGFjay50ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBPcGVuIHN0YWNrIC0+IFNleHAgKExpc3QgYWNjLCBzdGFjaylcbiAgfCBTZXhwIChzZXhwLCBzdGFjaykgLT4gbWFrZV9saXN0IChzZXhwIDo6IGFjYykgc3RhY2tcbjs7XG5cbmxldCBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCAoc3RhY2sgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KVxuICA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPVxuICBtYXRjaCBzdGFjayB3aXRoXG4gIHwgSW5fc2V4cF9jb21tZW50IHIgLT5cbiAgICBJbl9zZXhwX2NvbW1lbnQgeyByIHdpdGggcmV2X2NvbW1lbnRzID0gY29tbWVudCA6OiByLnJldl9jb21tZW50cyB9XG4gIHwgXyAtPiBUX29yX2NvbW1lbnQgKENvbW1lbnQgY29tbWVudCwgc3RhY2spXG47O1xuXG5sZXQgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgSW5fc2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgcmV2X2NvbW1lbnRzOyBzdGFjayB9IC0+XG4gICAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID1cbiAgICAgICAgU2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgY29tbWVudHMgPSBMaXN0LnJldiByZXZfY29tbWVudHM7IHNleHAgfVxuICAgICAgaW5cbiAgICAgIGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrXG4gICAgfCBzdGFjayAtPiBUX29yX2NvbW1lbnQgKFNleHAgc2V4cCwgc3RhY2spXG47O1xuXG5sZXQgcmVjIG1ha2VfbGlzdF9jc3QgZW5kX3BvcyBhY2MgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgVF9vcl9jb21tZW50ICh0LCBzdGFjaykgLT4gbWFrZV9saXN0X2NzdCBlbmRfcG9zICh0IDo6IGFjYykgc3RhY2tcbiAgICB8IE9wZW4gKHN0YXJ0X3Bvcywgc3RhY2spIC0+XG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gTGlzdCB7IGxvYyA9IHsgc3RhcnRfcG9zOyBlbmRfcG9zIH07IGVsZW1lbnRzID0gYWNjIH0gaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gICAgfCBFbXB0eSB8IEluX3NleHBfY29tbWVudCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxubGV0IGNsb3NpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGlmIHN0YXRlLmRlcHRoID4gMFxuICB0aGVuIChcbiAgICBsZXQgc3RhY2sgOiBzID1cbiAgICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgICAgKCogTm90ZSB3ZSBzdG9yZSBlbmQgcG9zaXRpb25zIGFzIGluY2x1c2l2ZSBpbiBbUG9zaXRpb25zLnRdLCBzbyB3ZSB1c2UgW2RlbHRhOjBdLFxuICAgICAgICAgICB3aGlsZSBpbiB0aGUgW0NzdF0gY2FzZSB3ZSBzYXZlIGRpcmVjdGx5IHRoZSBmaW5hbCByYW5nZXMsIHNvIHdlIHVzZVxuICAgICAgICAgICBbZGVsdGE6MV0uICopXG4gICAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgIHN0YWNrXG4gICAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gbWFrZV9saXN0IFtdIHN0YWNrIGVsc2Ugc3RhY2tcbiAgICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgICBtYWtlX2xpc3QgW10gc3RhY2spXG4gICAgICAgIGVsc2Ugc3RhY2tcbiAgICAgIHwgQ3N0IC0+IG1ha2VfbGlzdF9jc3QgKGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YToxKSBbXSBzdGFja1xuICAgIGluXG4gICAgc3RhdGUuZGVwdGggPC0gc3RhdGUuZGVwdGggLSAxO1xuICAgIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gIGVsc2UgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWRcbjs7XG5cbmxldCBtYWtlX2xvYyA/KGRlbHRhID0gMCkgKHN0YXRlIDogKEF1dG9tYXRvbl9zdGF0ZS5Gb3JfY3N0LnQsIF8pIEF1dG9tYXRvbl9zdGF0ZS50KVxuICA6IFBvc2l0aW9ucy5yYW5nZVxuICA9XG4gIHsgc3RhcnRfcG9zID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3M7IGVuZF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGEgfVxuOztcblxuKCogVGhpcyBpcyBhbHdheXMgY2FsbGVkIG9uIHRoZSBwb3NpdGlvbiBleGFjdGx5IGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYVxuICAgbm9uLXF1b3RlZCBhdG9tICopXG5sZXQgYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b20gPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBhdG9tIGluXG4gIGlmIGxlbiA9IDFcbiAgdGhlbiBQb3NpdGlvbnMuQnVpbGRlci5hZGRfdHdpY2Ugc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0OihzdGF0ZS5vZmZzZXQgLSAxKVxuICBlbHNlIChcbiAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTooLWxlbik7XG4gICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKSlcbjs7XG5cbmxldCBlcHNfcHVzaF9hdG9tIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbTpzdHI7XG4gICAgICBzdGFja1xuICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBTZXhwIChBdG9tIHN0ciwgc3RhY2spIGVsc2Ugc3RhY2tcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tOnN0cjtcbiAgICAgICAgU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICB8IENzdCAtPlxuICAgICAgbGV0IGxvYyA6IFBvc2l0aW9ucy5yYW5nZSA9XG4gICAgICAgIHsgc3RhcnRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgICAgIDsgZW5kX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTowXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gQXRvbSB7IGxvYzsgYXRvbSA9IHN0cjsgdW5lc2NhcGVkID0gU29tZSBzdHIgfSBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MFxuOztcblxubGV0IHB1c2hfcXVvdGVkX2F0b20gOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgc3RhY2tcbiAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSBlbHNlIHN0YWNrXG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICBTZXhwIChBdG9tIHN0ciwgc3RhY2spKVxuICAgICAgZWxzZSBzdGFja1xuICAgIHwgQ3N0IC0+XG4gICAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1wiJztcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPVxuICAgICAgICBBdG9tIHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGF0b20gPSBzdHI7IHVuZXNjYXBlZCA9IFNvbWUgcyB9XG4gICAgICBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MVxuOztcblxubGV0IHN0YXJ0X3NleHBfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSBzdGF0ZS5kZXB0aCA6OiBzdGF0ZS5pZ25vcmluZ19zdGFjaztcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgSW5fc2V4cF9jb21tZW50XG4gICAgICB7IGhhc2hfc2VtaV9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTsgcmV2X2NvbW1lbnRzID0gW107IHN0YWNrIH1cbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfYmxvY2tfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIDwtIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGlmIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPSAxXG4gICAgdGhlbiAoXG4gICAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciAnIycpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG47O1xuXG5sZXQgZW5kX2Jsb2NrX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA8LSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIC0gMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgaWYgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA9IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPVxuICAgICAgICBQbGFpbl9jb21tZW50IHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGNvbW1lbnQgPSBzIH1cbiAgICAgIGluXG4gICAgICBsZXQgc3RhY2sgPSBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFjayBpblxuICAgICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gICAgZWxzZSBzdGFja1xuOztcblxubGV0IHN0YXJ0X2xpbmVfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IGVuZF9saW5lX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBtYWtlX2xvYyBzdGF0ZTsgY29tbWVudCA9IHMgfSBpblxuICAgIGxldCBzdGFjayA9IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrIGluXG4gICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjBcbjs7XG5cbmxldCBlcHNfZW9pX2NoZWNrIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgaWYgc3RhdGUuZGVwdGggPiAwIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIFVuY2xvc2VkX3BhcmVuO1xuICBpZiBpc19pZ25vcmluZyBzdGF0ZSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwO1xuICBpZiBzdGF0ZS5mdWxsX3NleHBzID0gMFxuICB0aGVuIChcbiAgICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgICB8IE1hbnkgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZTsgXyB9IC0+ICgpXG4gICAgfCBTaW5nbGUgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSB0cnVlOyBfIH0gLT5cbiAgICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBOb19zZXhwX2ZvdW5kX2luX2lucHV0KTtcbiAgc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgfCBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gIHwgUGFyc2luZ19hdG9tXG4gIHwgUGFyc2luZ19saXN0XG4gIHwgUGFyc2luZ19zZXhwX2NvbW1lbnRcbiAgfCBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXCJcbiAgICB8IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVwiXG4gICAgfCBQYXJzaW5nX2F0b20gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19hdG9tXCJcbiAgICB8IFBhcnNpbmdfbGlzdCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2xpc3RcIlxuICAgIHwgUGFyc2luZ19zZXhwX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19zZXhwX2NvbW1lbnRcIlxuICAgIHwgUGFyc2luZ19ibG9ja19jb21tZW50IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfYmxvY2tfY29tbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIG1hdGNoIHNleHBfb2ZfdCB0IHdpdGhcbiAgfCBBdG9tIHMgLT4gc1xuICB8IExpc3QgXyAtPiBmYWlsd2l0aCBcIkJVRzogW3NleHBfb2ZfdF0gcmV0dXJuZWQgYSBbTGlzdCBfXVwiXG47O1xuIiwib3BlbiBBdXRvbWF0b25fYWN0aW9uXG5cbmxldCByYWlzZSA9IEF1dG9tYXRvbl9hY3Rpb24ucmFpc2VfZXJyb3JcblxudHlwZSB1J1xudHlwZSBzJ1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3RhYmxlcy5wcmludF9jb2RlICgpICopXG5sZXQgdHJfMDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2ZpcnN0X2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAwX2YgfVxuXG5sZXQgdHJfMDFfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDFfZiB9XG5cbmxldCB0cl8wMl9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDJfZiB9XG5cbmxldCB0cl8wM19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wM19mIH1cblxubGV0IHRyXzA0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA0X2YgfVxuXG5sZXQgdHJfMDVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDVfZiB9XG5cbmxldCB0cl8wNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNl9mIH1cblxubGV0IHRyXzA3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA3X2YgfVxuXG5sZXQgdHJfMDhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOF9mIH1cblxubGV0IHRyXzA5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9maXJzdF9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOV9mIH1cbmxldCB0cl8xMF9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPSByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbmxldCB0cl8xMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTBfZiB9XG5sZXQgdHJfMTFfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID0gcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbmxldCB0cl8xMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTFfZiB9XG5cbmxldCB0cl8xMl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzEyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMl9mIH1cblxubGV0IHRyXzEzX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTNfZiB9XG5cbmxldCB0cl8xNF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNF9mIH1cblxubGV0IHRyXzE1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTVfZiB9XG5cbmxldCB0cl8xNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE2X2YgfVxuXG5sZXQgdHJfMTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTdfZiB9XG5cbmxldCB0cl8xOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE4X2YgfVxuXG5sZXQgdHJfMTlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xOV9mIH1cblxubGV0IHRyXzIwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMF9mIH1cblxubGV0IHRyXzIxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIxX2YgfVxuXG5sZXQgdHJfMjJfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tXG47O1xuXG5sZXQgdHJfMjIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIyX2YgfVxuXG5sZXQgdHJfMjNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIzX2YgfVxuXG5sZXQgdHJfMjRfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjRfZiB9XG5cbmxldCB0cl8yNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI1X2YgfVxuXG5sZXQgdHJfMjZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjZfZiB9XG5cbmxldCB0cl8yN19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI3X2YgfVxuXG5sZXQgdHJfMjhfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjhfZiB9XG5cbmxldCB0cl8yOV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI5X2YgfVxuXG5sZXQgdHJfMzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMF9mIH1cblxubGV0IHRyXzMxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMxX2YgfVxuXG5sZXQgdHJfMzJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMl9mIH1cblxubGV0IHRyXzMzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzNfZiB9XG5cbmxldCB0cl8zNF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9zZXhwX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM0X2YgfVxuXG5sZXQgdHJfMzVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM1X2YgfVxuXG5sZXQgdHJfMzZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM2X2YgfVxuXG5sZXQgdHJfMzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zN19mIH1cblxubGV0IHRyXzM4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM4X2YgfVxuXG5sZXQgdHJfMzlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM5X2YgfVxuXG5sZXQgdHJfNDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2VzY2FwZWQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQwX2YgfVxuXG5sZXQgdHJfNDFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE1O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDFfZiB9XG5cbmxldCB0cl80Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQyX2YgfVxuXG5sZXQgdHJfNDNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQzX2YgfVxuXG5sZXQgdHJfNDRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80NF9mIH1cblxubGV0IHRyXzQ1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDVfZiB9XG5cbmxldCB0cl80Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDZfZiB9XG5cbmxldCB0cl80N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ3X2YgfVxuXG5sZXQgdHJfNDhfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZVxuOztcblxubGV0IHRyXzQ4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OF9mIH1cblxubGV0IHRyXzQ5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OV9mIH1cblxubGV0IHRyXzUwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTBfZiB9XG5cbmxldCB0cl81MV9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlXG47O1xuXG5sZXQgdHJfNTEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUxX2YgfVxuXG5sZXQgdHJfNTJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUyX2YgfVxuXG5sZXQgdHJfNTNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2xhc3RfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81M19mIH1cblxubGV0IHRyXzU0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81NF9mIH1cblxubGV0IHRyXzU1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTVfZiB9XG5cbmxldCB0cl81Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU2X2YgfVxuXG5sZXQgdHJfNTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTdfZiB9XG5cbmxldCB0cl81OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNThfZiB9XG5cbmxldCB0cl81OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU5X2YgfVxuXG5sZXQgdHJfNjBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjBfZiB9XG5cbmxldCB0cl82MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYxX2YgfVxuXG5sZXQgdHJfNjJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82Ml9mIH1cblxubGV0IHRyXzYzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjNfZiB9XG5cbmxldCB0cl82NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgKGlmIGJsb2NrX2NvbW1lbnRfZGVwdGggc3RhdGUgPD4gMCB0aGVuIDE2IGVsc2UgMCk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY0X2YgfVxuXG5sZXQgdHJfNjVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjVfZiB9XG5cbmxldCB0cl82Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY2X2YgfVxuXG5sZXQgdHJfNjdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjdfZiB9XG5cbmxldCB0cl82OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY4X2YgfVxuXG5sZXQgdHJfNjlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY5X2YgfVxuXG5sZXQgdHJfNzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83MF9mIH1cblxubGV0IHRyXzcxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzFfZiB9XG5cbmxldCB0cl83Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcyX2YgfVxuXG5sZXQgdHJfNzNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzczIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83M19mIH1cblxubGV0IHRyXzc0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83NF9mIH1cblxubGV0IHRyXzc1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNvbW1lbnRfYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzVfZiB9XG5cbmxldCB0cl83Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc2X2YgfVxuXG5sZXQgdHJfNzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83N19mIH1cblxubGV0IHRyXzc4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc4X2YgfVxubGV0IHRyX2VvaV8wMF9mIHN0YXRlIHN0YWNrID0gZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xubGV0IHRyX2VvaV8wMCA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDBfZiB9XG5sZXQgdHJfZW9pXzAxX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxubGV0IHRyX2VvaV8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDFfZiB9XG5sZXQgdHJfZW9pXzAyX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG5sZXQgdHJfZW9pXzAyIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMl9mIH1cblxubGV0IHRyX2VvaV8wM19mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzAzIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wM19mIH1cblxubGV0IHRyX2VvaV8wNF9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA0IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNF9mIH1cblxubGV0IHRyX2VvaV8wNV9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA1IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNV9mIH1cbmxldCB0cl9lb2lfMDZfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbmxldCB0cl9lb2lfMDYgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA2X2YgfVxubGV0IHRyX2VvaV8wN19mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxubGV0IHRyX2VvaV8wNyA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDdfZiB9XG5cbmxldCB0cmFuc2l0aW9ucyA9XG4gIFt8IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAyXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAzXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAwXG4gICA7IHRyXzA0XG4gICA7IHRyXzA1XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA2XG4gICA7IHRyXzA3XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA4XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA5XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzAyXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI0XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI1XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI4XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI5XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI2XG4gICA7IHRyXzMwXG4gICA7IHRyXzMxXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzMyXG4gICA7IHRyXzMzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM0XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM1XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM3XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM4XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM5XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQxXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQyXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ0XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQxXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ2XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ3XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU2XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU0XG4gICA7IHRyXzU3XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU4XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzY0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzM1XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY1XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY2XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY3XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY4XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcwXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzY3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzc4XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gIHxdXG47O1xuXG5sZXQgdHJhbnNpdGlvbnNfZW9pID1cbiAgW3wgdHJfZW9pXzAwXG4gICA7IHRyX2VvaV8wMVxuICAgOyB0cl9lb2lfMDJcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzA0XG4gICA7IHRyX2VvaV8wNVxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgfF1cbjs7XG5cbmxldCBvbGRfcGFyc2VyX2FwcHJveF9jb250X3N0YXRlcyA6IE9sZF9wYXJzZXJfY29udF9zdGF0ZS50IGFycmF5ID1cbiAgW3wgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gIHxdXG47O1xuKCokKilcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN0YWNrID0gQXV0b21hdG9uX3N0YWNrXG5pbmNsdWRlIEF1dG9tYXRvbl9zdGF0ZVxuXG5sZXQgZmVlZCAodHlwZSB1IHMpIChzdGF0ZSA6ICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCkgY2hhciAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgaWR4ID0gKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSBsc2wgOCkgbG9yIENoYXIuY29kZSBjaGFyIGluXG4gIEF1dG9tYXRvbl90YWJsZXMudHJhbnNpdGlvbnMuKGlkeCkuZiBzdGF0ZSBjaGFyIHN0YWNrXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGZlZWRfZW9pICh0eXBlIHUgcykgKHN0YXRlIDogKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50KSAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgc3RhY2sgPSBBdXRvbWF0b25fdGFibGVzLnRyYW5zaXRpb25zX2VvaS4oYXV0b21hdG9uX3N0YXRlIHN0YXRlKS5mIHN0YXRlIHN0YWNrIGluXG4gIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCBvbGRfcGFyc2VyX2NvbnRfc3RhdGUgc3RhdGUgOiBPbGRfcGFyc2VyX2NvbnRfc3RhdGUudCA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHBfY29tbWVudCAtPiBQYXJzaW5nX3NleHBfY29tbWVudFxuICB8IFNleHAgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIEF1dG9tYXRvbl90YWJsZXMub2xkX3BhcnNlcl9hcHByb3hfY29udF9zdGF0ZXMuKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSlcbiAgICAgICAsIGhhc191bmNsb3NlZF9wYXJlbiBzdGF0ZSApXG4gICAgIHdpdGhcbiAgICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIHRydWUgLT4gUGFyc2luZ19saXN0XG4gICAgIHwgcywgXyAtPiBzKVxuOztcblxubGV0IHJlYyBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIGkgc3RvcCA9XG4gIGlmIGkgPCBzdG9wXG4gIHRoZW4gKFxuICAgIGxldCBjID0gU3RyaW5nLnVuc2FmZV9nZXQgc3RyIGkgaW5cbiAgICBsZXQgc3RhY2sgPSBmZWVkIHN0YXRlIGMgc3RhY2sgaW5cbiAgICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IHJlYyBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgaSBzdG9wID1cbiAgaWYgaSA8IHN0b3BcbiAgdGhlbiAoXG4gICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IHN0ciBpIGluXG4gICAgbGV0IHN0YWNrID0gZmVlZCBzdGF0ZSBjIHN0YWNrIGluXG4gICAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IGZlZWRfc3Vic3RyaW5nIHN0YXRlIHN0ciB+cG9zIH5sZW4gc3RhY2sgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3Vic3RyaW5nXCI7XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgcG9zIChwb3MgKyBsZW4pXG47O1xuXG5sZXQgZmVlZF9zdWJieXRlcyBzdGF0ZSBzdHIgfnBvcyB+bGVuIHN0YWNrID1cbiAgbGV0IHN0cl9sZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3ViYnl0ZXNcIjtcbiAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIHBvcyAocG9zICsgbGVuKVxuOztcblxubGV0IGZlZWRfc3RyaW5nIHN0YXRlIHN0ciBzdGFjayA9XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG47O1xuXG5sZXQgZmVlZF9ieXRlcyBzdGF0ZSBzdHIgc3RhY2sgPSBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoQnl0ZXMubGVuZ3RoIHN0cilcblxubGV0IGVtcHR5X3N0YWNrIDogdHlwZSB1IHMuICh1LCBzKSBLaW5kLnQgLT4gcyA9IGZ1bmN0aW9uXG4gIHwgU2V4cCAtPiBTdGFjay5lbXB0eVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gU3RhY2suZW1wdHlcbiAgfCBQb3NpdGlvbnMgLT4gU3RhY2suSnVzdF9wb3NpdGlvbnMuZW1wdHlcbiAgfCBDc3QgLT4gU3RhY2suRm9yX2NzdC5lbXB0eVxuOztcblxubGV0IG9mX3N1YnN0cmluZyAodHlwZSB1IHMpIChtb2RlIDogKHUsIHMpIE1vZGUudCkgKGtpbmQgOiAodSwgcykgS2luZC50KSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzdGF0ZSA9IGNyZWF0ZSBtb2RlIGtpbmQgaW5cbiAgbGV0IHN0YWNrID0gZmVlZF9zdWJzdHJpbmcgc3RhdGUgcyB+cG9zIH5sZW4gKGVtcHR5X3N0YWNrIGtpbmQpIGluXG4gIHN0YXRlLCBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IHVzZXJfZXhuIDogZXhuXG4gIDsgc3ViX3NleHAgOiBTZXhwLnRcbiAgOyBsb2NhdGlvbiA6IFBvc2l0aW9ucy5yYW5nZSBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuIHsgdXNlcl9leG4gPSB1c2VyX2V4bl9fMDAyXzsgc3ViX3NleHAgPSBzdWJfc2V4cF9fMDA0XzsgbG9jYXRpb24gPSBsb2NhdGlvbl9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY2F0aW9uX18wMDZfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY2F0aW9uXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDVfID0gU2V4cC5zZXhwX29mX3Qgc3ViX3NleHBfXzAwNF8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3ViX3NleHBcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2V4biB1c2VyX2V4bl9fMDAyXyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ1c2VyX2V4blwiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAxX1xuICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHVzZXJfZXhuIHQgPSB0LnVzZXJfZXhuXG5sZXQgc3ViX3NleHAgdCA9IHQuc3ViX3NleHBcbmxldCBsb2NhdGlvbiB0ID0gdC5sb2NhdGlvblxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBsaW5lLCBzdGFydCwgc3RvcCA9XG4gICAgbWF0Y2ggdC5sb2NhdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IDEsIDAsIDBcbiAgICB8IFNvbWUgeyBzdGFydF9wb3M7IGVuZF9wb3MgfSAtPlxuICAgICAgc3RhcnRfcG9zLmxpbmUsIHN0YXJ0X3Bvcy5jb2wsIHN0YXJ0X3Bvcy5jb2wgKyBlbmRfcG9zLm9mZnNldCAtIHN0YXJ0X3Bvcy5vZmZzZXRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICBFcnJvcjogcy1leHByZXNzaW9uIGNvbnZlcnNpb24gZXJyb3I7XFxuXFxcbiAgICAgZXhjZXB0aW9uICVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIGxpbmVcbiAgICBzdGFydFxuICAgIHN0b3BcbiAgICAoU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIHQudXNlcl9leG4pXG47O1xuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwOF8gLT5cbiAgICAgIGxldCByZXMwX18wMDlfID0gc2V4cF9vZl90IGFyZzBfXzAwOF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mX3NleHBfZXJyb3IubWwuT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDlfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIH51c2VyX2V4biB+c3ViX3NleHAgfmxvY2F0aW9uID1cbiAgcmFpc2UgKE9mX3NleHBfZXJyb3IgeyB1c2VyX2V4bjsgc3ViX3NleHA7IGxvY2F0aW9uIH0pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2VfZXJyb3Igb2YgUGFyc2VfZXJyb3IudFxuICB8IE9mX3NleHBfZXJyb3Igb2YgT2Zfc2V4cF9lcnJvci50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBQYXJzZV9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwM18gLT5cbiAgICAgIGxldCByZXMwX18wMDRfID0gT2Zfc2V4cF9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDRfIF1cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFBhcnNlX2Vycm9yIGUgLT4gUGFyc2VfZXJyb3IucmVwb3J0IHBwZiB+ZmlsZW5hbWUgZVxuICB8IE9mX3NleHBfZXJyb3IgZSAtPiBPZl9zZXhwX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VyX2ludGZcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmxldCBraW5kX3RvX3N0YWNrXG4gIDogdHlwZSBzdGFjay5cbiAgICAoJ3N0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLktpbmQudCAtPiAobW9kdWxlIFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gID1cbiAgZnVuICh0eXBlIHN0YXRlKSAoa2luZCA6IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQpIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFNleHAgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFBvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5KdXN0X3Bvc2l0aW9ucyA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjayA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgQ3N0IC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuOztcblxubGV0IG1ha2UgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1vZGUgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgU1xuICAgICAgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuICAgICAgIGFuZCB0eXBlIFN0YXRlLnQgPSAoc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUudFxuICAgICAgIGFuZCB0eXBlIFN0YWNrLnQgPSBzdGFjaylcbiAgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuXG4gICAgbW9kdWxlIFN0YWNrID0gKHZhbCBraW5kX3RvX3N0YWNrIGtpbmQgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyAoKSA9IEEuY3JlYXRlID9pbml0aWFsX3Bvczpwb3MgbW9kZSBraW5kXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgb2Zmc2V0ID0gQS5vZmZzZXRcbiAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgbGV0IHBvc2l0aW9uIHQgOiBQb3NpdGlvbnMucG9zID1cbiAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IHN0b3Agc3RhdGUgPSBBLnNldF9lcnJvcl9zdGF0ZSBzdGF0ZVxuICAgIGVuZFxuXG4gICAgbGV0IGZlZWQgPSBBLmZlZWRcbiAgICBsZXQgZmVlZF9lb2kgc3RhdGUgc3RhY2sgPSBtYWtlX3ZhbHVlIHN0YXRlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrKVxuICAgIGxldCBmZWVkX3N1YnN0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N1YnN0cmluZ1xuICAgIGxldCBmZWVkX3N0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N0cmluZ1xuICAgIGxldCBmZWVkX3N1YmJ5dGVzID0gQXV0b21hdG9uLmZlZWRfc3ViYnl0ZXNcbiAgICBsZXQgZmVlZF9ieXRlcyA9IEF1dG9tYXRvbi5mZWVkX2J5dGVzXG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgPVxuICAgICAgbGV0IHN0YXRlID0gU3RhdGUuY3JlYXRlICgpIGluXG4gICAgICBmZWVkX2VvaSBzdGF0ZSAoZmVlZF9zdHJpbmcgc3RhdGUgc3RyIFN0YWNrLmVtcHR5KVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciA9XG4gICAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciB3aXRoXG4gICAgICB8IHggLT4gT2sgeFxuICAgICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciBlXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IG1ha2VfZWFnZXIgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFNfZWFnZXJcbiAgICAgIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcbiAgICAgICBhbmQgdHlwZSBTdGF0ZS50ID0gKHN0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLnRcbiAgICAgICBhbmQgdHlwZSBTdGFjay50ID0gc3RhY2spXG4gID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcblxuICAgIG1vZHVsZSBTdGFjayA9ICh2YWwga2luZF90b19zdGFjayBraW5kIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IEEub2Zmc2V0XG4gICAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICAgIGxldCBjb2x1bW4gPSBBLmNvbHVtblxuXG4gICAgICAgIGxldCBwb3NpdGlvbiB0IDogUG9zaXRpb25zLnBvcyA9XG4gICAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgUmVhZF9vbmx5XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyA/KG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZSkgZiA9XG4gICAgICAgIGxldCBnb3Rfc2V4cCBzdGF0ZSBzdGFjayA9XG4gICAgICAgICAgbGV0IHBhcnNlZF92YWx1ZSA9IG1ha2VfdmFsdWUgc3RhdGUgc3RhY2sgaW5cbiAgICAgICAgICBmIHN0YXRlIHBhcnNlZF92YWx1ZTtcbiAgICAgICAgICBTdGFjay5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBBLmNyZWF0ZSA/aW5pdGlhbF9wb3M6cG9zIChFYWdlciB7IGdvdF9zZXhwOyBub19zZXhwX2lzX2Vycm9yIH0pIGtpbmRcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZXNldCA9IEEucmVzZXRcbiAgICAgIGxldCBzdG9wIHQgPSBBLnNldF9lcnJvcl9zdGF0ZSB0XG4gICAgICBsZXQgb2xkX3BhcnNlcl9jb250X3N0YXRlIHQgPSBBdXRvbWF0b24ub2xkX3BhcnNlcl9jb250X3N0YXRlIHRcbiAgICBlbmRcblxuICAgIGxldCBmZWVkID0gQS5mZWVkXG4gICAgbGV0IGZlZWRfZW9pIHN0YXRlIHN0YWNrID0gaWdub3JlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrIDogU3RhY2sudClcbiAgICBsZXQgZmVlZF9zdWJzdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdWJzdHJpbmdcbiAgICBsZXQgZmVlZF9zdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdHJpbmdcbiAgICBsZXQgZmVlZF9zdWJieXRlcyA9IEF1dG9tYXRvbi5mZWVkX3N1YmJ5dGVzXG4gICAgbGV0IGZlZWRfYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9ieXRlc1xuXG4gICAgbW9kdWxlIExleGJ1Zl9jb25zdW1lciA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gU3RhdGUudFxuXG4gICAgICBleGNlcHRpb24gR290X3NleHAgb2YgcGFyc2VkX3ZhbHVlICogUG9zaXRpb25zLnBvc1xuXG4gICAgICBsZXQgZ290X3NleHAgc3RhdGUgcGFyc2VkX3ZhbHVlID1cbiAgICAgICAgcmFpc2Vfbm90cmFjZSAoR290X3NleHAgKHBhcnNlZF92YWx1ZSwgU3RhdGUucG9zaXRpb24gc3RhdGUpKVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IFN0YXRlLmNyZWF0ZSBnb3Rfc2V4cFxuXG4gICAgICBsZXQgcG9zX29mX2xleGJ1ZiBsZXhidWYgPVxuICAgICAgICBsZXQgcCA9IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCBpblxuICAgICAgICB7IFBvc2l0aW9ucy5saW5lID0gcC5wb3NfbG51bTsgY29sID0gcC5wb3NfY251bSAtIHAucG9zX2JvbDsgb2Zmc2V0ID0gcC5wb3NfY251bSB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdXBkYXRlX2xleGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgKHBvcyA6IFBvc2l0aW9ucy5wb3MpID1cbiAgICAgICAgbGV0IHAgPSBwb3Mub2Zmc2V0IC0gbGV4YnVmLmxleF9hYnNfcG9zIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gcDtcbiAgICAgICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gcDtcbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BcbiAgICAgICAgPC0geyBsZXhidWYubGV4X2N1cnJfcCB3aXRoXG4gICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MubGluZVxuICAgICAgICAgICA7IHBvc19jbnVtID0gcG9zLm9mZnNldFxuICAgICAgICAgICA7IHBvc19ib2wgPSBwb3Mub2Zmc2V0IC0gcG9zLmNvbFxuICAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIGZlZWRfbGV4YnVmIHQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIHN0YWNrID1cbiAgICAgICAgbGV0IHN0YWNrID1cbiAgICAgICAgICBmZWVkX3N1YmJ5dGVzXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlclxuICAgICAgICAgICAgc3RhY2tcbiAgICAgICAgICAgIH5wb3M6bGV4YnVmLmxleF9jdXJyX3Bvc1xuICAgICAgICAgICAgfmxlbjoobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9jdXJyX3BvcylcbiAgICAgICAgaW5cbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbjtcbiAgICAgICAgaWYgbm90IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV4YnVmLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgICAgICBmZWVkX2xleGJ1ZiB0IGxleGJ1ZiBzdGFjaylcbiAgICAgICAgZWxzZSBmZWVkX2VvaSB0IHN0YWNrXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfZ2VuIHQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICAgICAgQS5yZXNldCB0IH5wb3M6KHBvc19vZl9sZXhidWYgbGV4YnVmKTtcbiAgICAgICAgbWF0Y2ggZmVlZF9sZXhidWYgdCBsZXhidWYgU3RhY2suZW1wdHkgd2l0aFxuICAgICAgICB8ICgpIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIE5vbmVcbiAgICAgICAgfCBleGNlcHRpb24gR290X3NleHAgKHBhcnNlZF92YWx1ZSwgcG9zKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIHBvcztcbiAgICAgICAgICBTb21lIHBhcnNlZF92YWx1ZVxuICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiAoU3RhdGUucG9zaXRpb24gdCk7XG4gICAgICAgICAgcmFpc2UgZXhuXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V0X25vX3NleHBfaXNfZXJyb3IgdCB4ID1cbiAgICAgICAgbWF0Y2ggQS5tb2RlIHQgd2l0aFxuICAgICAgICB8IEVhZ2VyIGUgLT4gZS5ub19zZXhwX2lzX2Vycm9yIDwtIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlIHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCB0cnVlO1xuICAgICAgICBtYXRjaCBwYXJzZV9nZW4gdCBsZXhidWYgd2l0aFxuICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAucGFyc2VfZ2VuOiBOb25lXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9vcHQgdCBsZXhidWYgPVxuICAgICAgICBzZXRfbm9fc2V4cF9pc19lcnJvciB0IGZhbHNlO1xuICAgICAgICBwYXJzZV9nZW4gdCBsZXhidWZcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZClcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29udl9pbnRmXG5cbm1vZHVsZSBNYWtlXG4gICAgKE1vZGUgOiBNb2RlKVxuICAgIChTZXhwX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBNb2RlLnBhcnNlZF9zZXhwKVxuICAgIChQb3NpdGlvbnNfcGFyc2VyIDogUGFyc2VyLlMgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IFBvc2l0aW9ucy50KSA9XG5zdHJ1Y3RcbiAgbGV0IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSB+c3ViIHVzZXJfZXhuID1cbiAgICBsZXQgbG9jYXRpb24gPSBNb2RlLmZpbmQgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSB+c3ViIGluXG4gICAgT2Zfc2V4cF9lcnJvci5yYWlzZSB+dXNlcl9leG4gfnN1Yl9zZXhwOnN1YiB+bG9jYXRpb25cbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgZiA9XG4gICAgbGV0IHBhcnNlZF92YWx1ZSA9IFNleHBfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgbWF0Y2ggTW9kZS5hcHBseV9mIHBhcnNlZF92YWx1ZSB+ZiB3aXRoXG4gICAgfCB4IC0+IHhcbiAgICB8IGV4Y2VwdGlvbiBTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc3ViKSAtPlxuICAgICAgbGV0IHBvc2l0aW9ucyA9IFBvc2l0aW9uc19wYXJzZXIucGFyc2Vfc3RyaW5nX2V4biBzdHIgaW5cbiAgICAgIHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBwYXJzZV9zdHJpbmcgc3RyIGYgOiAoXywgQ29udl9lcnJvci50KSByZXN1bHQgPVxuICAgIG1hdGNoIHBhcnNlX3N0cmluZ19leG4gc3RyIGYgd2l0aFxuICAgIHwgeCAtPiBPayB4XG4gICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKVxuICA7O1xuXG4gIGxldCBjb252X2V4biAocGFyc2VkX3ZhbHVlLCBwb3NpdGlvbnMpIGYgPVxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT4gcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIGV4biB+c3ViXG4gIDs7XG5cbiAgbGV0IGNvbnYgeCBmID1cbiAgICBtYXRjaCBjb252X2V4biB4IGYgd2l0aFxuICAgIHwgeCAtPiBPayB4XG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgZVxuICA7O1xuXG4gIGxldCBjb252X2NvbWJpbmUgcmVzdWx0IGYgOiAoXywgQ29udl9lcnJvci50KSByZXN1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBlIC0+IEVycm9yIChQYXJzZV9lcnJvciBlKVxuICAgIHwgT2sgeCAtPlxuICAgICAgKG1hdGNoIGNvbnYgeCBmIHdpdGhcbiAgICAgICB8IE9rIF8gYXMgciAtPiByXG4gICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChPZl9zZXhwX2Vycm9yIGUpKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQ29udiA9IENvbnYuU1xubW9kdWxlIHR5cGUgUGFyc2VyID0gUGFyc2VyLlNcbm1vZHVsZSB0eXBlIEVhZ2VyX3BhcnNlciA9IFBhcnNlci5TX2VhZ2VyXG5cbm1vZHVsZSBDb252X2Vycm9yID0gQ29udl9lcnJvclxubW9kdWxlIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5tb2R1bGUgT2xkX3BhcnNlcl9jb250X3N0YXRlID0gT2xkX3BhcnNlcl9jb250X3N0YXRlXG5tb2R1bGUgUGFyc2VfZXJyb3IgPSBQYXJzZV9lcnJvclxubW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xubW9kdWxlIENzdCA9IENzdFxubW9kdWxlIEEgPSBBdXRvbWF0b25cblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yXG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbm1vZHVsZSBTaW5nbGUgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgU2luZ2xlIChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSkpXG5tb2R1bGUgTWFueSA9ICh2YWwgUGFyc2VyLm1ha2UgU2V4cCBNYW55IChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X21hbnkpKVxubW9kdWxlIEVhZ2VyID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBTZXhwIChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSkpXG5cbmxldCBhbmRfZ2V0X3Bvc2l0aW9ucyBnZXRfc2V4cCBzdGF0ZSBzdGFjayA9IGdldF9zZXhwIHN0YWNrLCBBLnBvc2l0aW9ucyBzdGF0ZVxuXG5sZXQgYW5kX3Bvc2l0aW9ucyBtb2RlIGdldF9zZXhwID1cbiAgUGFyc2VyLm1ha2UgU2V4cF93aXRoX3Bvc2l0aW9ucyBtb2RlIChhbmRfZ2V0X3Bvc2l0aW9ucyBnZXRfc2V4cClcbjs7XG5cbm1vZHVsZSBTaW5nbGVfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBTaW5nbGUgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpXG5tb2R1bGUgTWFueV9hbmRfcG9zaXRpb25zID0gKHZhbCBhbmRfcG9zaXRpb25zIE1hbnkgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfYW5kX3Bvc2l0aW9ucyA9XG4gICh2YWwgUGFyc2VyLm1ha2VfZWFnZXJcbiAgICAgICAgIFNleHBfd2l0aF9wb3NpdGlvbnNcbiAgICAgICAgIChBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSB8PiBhbmRfZ2V0X3Bvc2l0aW9ucykpXG5cbmxldCBqdXN0X2dldF9wb3NpdGlvbnMgc3RhdGUgKCkgPSBBLnBvc2l0aW9ucyBzdGF0ZVxubGV0IGp1c3RfcG9zaXRpb25zIG1vZGUgPSBQYXJzZXIubWFrZSBQb3NpdGlvbnMgbW9kZSBqdXN0X2dldF9wb3NpdGlvbnNcblxubW9kdWxlIFNpbmdsZV9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwganVzdF9wb3NpdGlvbnMgU2luZ2xlKVxubW9kdWxlIE1hbnlfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIE1hbnkpXG5tb2R1bGUgRWFnZXJfanVzdF9wb3NpdGlvbnMgPSAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIFBvc2l0aW9ucyBqdXN0X2dldF9wb3NpdGlvbnMpXG5cbmxldCBjc3QgbW9kZSBmID0gUGFyc2VyLm1ha2UgQ3N0IG1vZGUgKGNvbnN0IGYpXG5cbm1vZHVsZSBNYW55X2NzdCA9ICh2YWwgY3N0IE1hbnkgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnkpXG5cbm1vZHVsZSBFYWdlcl9jc3QgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIENzdCAoZnVuIF8gc3RhY2sgLT5cbiAgICAgbWF0Y2ggQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnkgc3RhY2sgd2l0aFxuICAgICB8IFsgc2V4cCBdIC0+IHNleHBcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG5cbnR5cGUgJ2EgaWQgPSAnYVxudHlwZSBzZXhwX2xpc3QgPSBTZXhwLnQgbGlzdFxuXG5tb2R1bGUgQ29udl9zaW5nbGUgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhXG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnRcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IGYgeFxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9waHlzXG4gICAgZW5kKVxuICAgIChTaW5nbGUpXG4gICAgKFNpbmdsZV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2EgbGlzdFxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnRcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgeCB+ZilcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG4gICAgZW5kKVxuICAgIChNYW55KVxuICAgIChNYW55X2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgQ29udl9tYW55X2F0X29uY2UgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhXG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50IGxpc3RcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudCBsaXN0XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG4gICAgZW5kKVxuICAgIChNYW55KVxuICAgIChNYW55X2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQXV0b21hdG9uID0gQXV0b21hdG9uXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgPSBBdXRvbWF0b25fc3RhY2tcbiAgbW9kdWxlIEF1dG9tYXRvbl9zdGF0ZSA9IEF1dG9tYXRvbl9zdGF0ZVxuICBtb2R1bGUgUG9zaXRpb25zID0gUG9zaXRpb25zXG5lbmRcbiIsIigqIGZvciBsZXhpbmcgcG9zaXRpb25zOlxuICAgLSBsbnVtIHN0YXJ0cyBmcm9tIDFcbiAgIC0gY251bSBzdGFydHMgZnJvbSAwXG4gICAtIHBvc19ib2wgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGxpbmVcblxuICAgZm9yIGFic29sdXRlIHBvczpcbiAgIC0gcm93IHN0YXJ0cyBmcm9tIDFcbiAgIC0gY29sIHN0YXJ0cyBmcm9tIDFcblxuICAgZm9yIHJlbGF0aXZlIHBvcywgb2J2aW91c2x5IDAgbWVhbnMgc2FtZSBwb3NpdGlvblxuKilcblxuKCogb3BlcmF0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9yIGJvdGggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHBvc2l0aW9ucyAqKVxubW9kdWxlIFBvcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcm93IDogaW50XG4gICAgOyBjb2wgOiBpbnRcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHJvdzsgY29sIH0gPSBUeXBlLkF0b20gKFByaW50Zi5zcHJpbnRmIFwiJWQ6JWRcIiByb3cgY29sKVxuICBsZXQgYWRkIHQxIHQyID0geyByb3cgPSB0MS5yb3cgKyB0Mi5yb3c7IGNvbCA9IHQxLmNvbCArIHQyLmNvbCB9XG4gIGxldCBzdWIgdDEgdDIgPSB7IHJvdyA9IHQxLnJvdyAtIHQyLnJvdzsgY29sID0gdDEuY29sIC0gdDIuY29sIH1cblxuICBsZXQgY29tcGFyZSB7IHJvdyA9IHIxOyBjb2wgPSBjMSB9IHsgcm93ID0gcjI7IGNvbCA9IGMyIH0gPVxuICAgIGlmIHIxID0gcjIgdGhlbiBjMSAtIGMyIGVsc2UgcjEgLSByMlxuICA7O1xuXG4gIGxldCBnZXEgdDEgdDIgPSBjb21wYXJlIHQxIHQyID49IDBcbmVuZFxuXG5tb2R1bGUgUmVsYXRpdmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb3NcblxuICBsZXQgemVybyA9IHsgcm93ID0gMDsgY29sID0gMCB9XG5lbmRcblxubW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IG9yaWdpbiA9IHsgcm93ID0gMTsgY29sID0gMSB9XG5cbiAgbGV0IG9mX2xleGluZyB7IExleGluZy5wb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2w7IHBvc19mbmFtZSA9IF8gfSA9XG4gICAgeyByb3cgPSBwb3NfbG51bTsgY29sID0gcG9zX2NudW0gLSBwb3NfYm9sICsgMSB9XG4gIDs7XG5cbiAgbGV0IGRpZmYgPSBzdWJcbmVuZFxuIiwiKCoqIFR5cGUgb2YgYW5ub3RhdGVkIFMtZXhwcmVzc2lvbnMgKilcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IG1hcCB0IH5mID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBmIHQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFBvcyA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gVHlwZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgKCoqIEluIFtBdG9tIChfLCBzLCBvcHQpXSwgW3NdIGlzIHRoZSB1bmVzY2FwZWQgc3RyaW5nLCB0aGF0IGlzIHRoZSBhcmd1bWVudCBvZlxuICAgICAgICBbVHlwZS5BdG9tXS4gV2hlbiBbb3B0XSBpcyBkZWZpbmVkLCBpdCBpcyB0aGUgc291cmNlIHN5bnRheCBvZiBbc10sIHRoYXQgaXMgYVxuICAgICAgICBzdHJpbmcgdGhhdCBjYW4gYmUgcHJpbnRlZCBhcyBpcyBpZiBvbmUgd2FudHMgdG8gcGFyc2UgYW5kIHByaW50IHByZXNlcnZpbmdcbiAgICAgICAgc3ludGF4LiBUaGlzIGlzIHVzdWFsbHkgc2V0IGZvciBxdW90ZWQgYXRvbXMgKHRvIHByZXNlcnZlIHRoZSBmYWN0IHRoYXQgd2VyZVxuICAgICAgICBxdW90ZWQpLCBidXQgaXQgY2FuIGJlIHVzZWZ1bCB0byBkbyB0aGUgcmV2ZXJzZTogc2V0IGl0IGZvciBhdG9tcyB0aGF0IGNhbiBiZVxuICAgICAgICBwYXJzZWQgdW5xdW90ZWQgYnV0IHdvdWxkIGJlIHByaW50ZWQgd2l0aCBxdW90ZXMsIHRvIHByZXNlcnZlIHRoZSBsYWNrIG9mIHF1b3Rlcy5cbiAgICAgICAgRm9yIGluc3RhbmNlOlxuICAgICAgICBBdG9tIChfLCBcImFcIiwgTm9uZSkgc2hvdWxkIGJlIHByaW50ZWQge3xhfH1cbiAgICAgICAgQXRvbSAoXywgXCJhIGJcIiwgTm9uZSkgc2hvdWxkIGJlIHByaW50ZWQge3xcImEgYlwifH1cbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIFNvbWUgXCJcXFwiYVxcXCJcIikgc2hvdWxkIGJlIHByaW50ZWQge3xcImFcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIFNvbWUgXCJhIGJcIikgc2hvdWxkIGJlIHByaW50ZWQge3xhIGJ8fSBvciBtYXkgcmFpc2UsIGFzIGl0IGlzXG4gICAgICAgIGFuIGVycm9yIHRvIGNvbnN0cnVjdGVkIHN1Y2ggYW4gYXRvbSAoZG9lc24ndCBwYXJzZSBiYWNrKSAqKVxuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0b20gb2YgUG9zLnQgKiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgICB8IExpc3Qgb2YgUG9zLnQgKiB0X29yX2NvbW1lbnQgbGlzdCAqIFBvcy50XG5cbiAgICAoKiBwb3NpdGlvbnMgb2YgbGVmdCBhbmQgcmlnaHQgcGFyZW5zICopXG4gICAgYW5kIHRfb3JfY29tbWVudCA9XG4gICAgICB8IFNleHAgb2YgdFxuICAgICAgfCBDb21tZW50IG9mIGNvbW1lbnRcblxuICAgIGFuZCBjb21tZW50ID1cbiAgICAgIHwgUGxhaW5fY29tbWVudCBvZiBQb3MudCAqIHN0cmluZ1xuICAgICAgfCBTZXhwX2NvbW1lbnQgb2YgUG9zLnQgKiBjb21tZW50IGxpc3QgKiB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIFRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBzZXhwX29mX2NvbW1lbnQgOiBjb21tZW50IC0+IFR5cGUudFxuICAgIHZhbCBzZXhwX29mX3Rfb3JfY29tbWVudCA6IHRfb3JfY29tbWVudCAtPiBUeXBlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFRvX3NleHAgOiBzaWdcbiAgICB2YWwgb2ZfdCA6IHQgLT4gVHlwZS50XG4gICAgdmFsIG9mX2NvbW1lbnQgOiBjb21tZW50IC0+IFR5cGUudFxuICAgIHZhbCBvZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIG1heWJlIHdlIGNhbiBhY3R1YWxseSB1c2UgY29udiBoZXJlLCBpbnN0ZWFkIG9mIGlubGluaW5nIGl0ICopXG5cbiAgICBsZXQgb2ZfcG9zID0gUG9zLnNleHBfb2ZfdFxuICAgIGxldCBvZl9zdHJpbmcgeCA9IFR5cGUuQXRvbSB4XG4gICAgbGV0IG9mX2xpc3Qgb2ZfYSB4cyA9IFR5cGUuTGlzdCAoTGlzdC5tYXAgfmY6b2ZfYSB4cylcblxuICAgIGxldCBvZl9vcHRpb24gb2ZfYSA9IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgeCAtPiBUeXBlLkxpc3QgWyBvZl9hIHggXVxuICAgICAgfCBOb25lIC0+IFR5cGUuTGlzdCBbXVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIG9mX3QgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJBdG9tXCI7IG9mX3BvcyB2MTsgb2Zfc3RyaW5nIHYyOyBvZl9vcHRpb24gb2Zfc3RyaW5nIHYzIF1cbiAgICAgIHwgTGlzdCAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiTGlzdFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfdF9vcl9jb21tZW50IHYyOyBvZl9wb3MgdjMgXVxuXG4gICAgYW5kIG9mX3Rfb3JfY29tbWVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAgdCAtPiBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJTZXhwXCI7IG9mX3QgdCBdXG4gICAgICB8IENvbW1lbnQgYyAtPiBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJDb21tZW50XCI7IG9mX2NvbW1lbnQgYyBdXG5cbiAgICBhbmQgb2ZfY29tbWVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFBsYWluX2NvbW1lbnQgKHYxLCB2MikgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiUGxhaW5fY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2MiBdXG4gICAgICB8IFNleHBfY29tbWVudCAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cF9jb21tZW50XCI7IG9mX3BvcyB2MTsgb2ZfbGlzdCBvZl9jb21tZW50IHYyOyBvZl90IHYzIF1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2V4cF9vZl90ID0gVG9fc2V4cC5vZl90XG4gIGxldCBzZXhwX29mX2NvbW1lbnQgPSBUb19zZXhwLm9mX2NvbW1lbnRcbiAgbGV0IHNleHBfb2ZfdF9vcl9jb21tZW50ID0gVG9fc2V4cC5vZl90X29yX2NvbW1lbnRcbmVuZFxuXG5pbmNsdWRlIE1ha2UgKFNyY19wb3MuUmVsYXRpdmUpXG5tb2R1bGUgUGFyc2VkID0gTWFrZSAoU3JjX3Bvcy5BYnNvbHV0ZSlcblxubGV0IHJlbGF0aXZpemUgPVxuICBsZXQgcmVsIH5vdXRlcl9wIHAgPSBTcmNfcG9zLkFic29sdXRlLmRpZmYgcCBvdXRlcl9wIGluXG4gIGxldCByZWMgYXV4X3Qgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLkF0b20gKHBvcywgcywgc29wdCkgLT4gQXRvbSAocmVsIHBvcyB+b3V0ZXJfcCwgcywgc29wdClcbiAgICB8IFBhcnNlZC5MaXN0IChzdGFydF9wb3MsIHRvY3MsIGVuZF9wb3MpIC0+XG4gICAgICBMaXN0XG4gICAgICAgICggcmVsIHN0YXJ0X3BvcyB+b3V0ZXJfcFxuICAgICAgICAsIExpc3QubWFwIHRvY3MgfmY6KGZ1biB0b2MgLT4gYXV4X3RvYyB+b3V0ZXJfcDpzdGFydF9wb3MgdG9jKVxuICAgICAgICAsIHJlbCBlbmRfcG9zIH5vdXRlcl9wIClcbiAgYW5kIGF1eF90b2Mgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLlNleHAgdCAtPiBTZXhwIChhdXhfdCB0IH5vdXRlcl9wKVxuICAgIHwgUGFyc2VkLkNvbW1lbnQgYyAtPiBDb21tZW50IChhdXhfYyBjIH5vdXRlcl9wKVxuICBhbmQgYXV4X2Mgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLlBsYWluX2NvbW1lbnQgKHBvcywgdHh0KSAtPiBQbGFpbl9jb21tZW50IChyZWwgcG9zIH5vdXRlcl9wLCB0eHQpXG4gICAgfCBQYXJzZWQuU2V4cF9jb21tZW50IChwb3MsIGNzLCB0KSAtPlxuICAgICAgU2V4cF9jb21tZW50XG4gICAgICAgIChyZWwgcG9zIH5vdXRlcl9wLCBMaXN0Lm1hcCBjcyB+ZjooZnVuIGMgLT4gYXV4X2Mgfm91dGVyX3AgYyksIGF1eF90IHQgfm91dGVyX3ApXG4gIGluXG4gIGZ1biB0b2MgLT4gYXV4X3RvYyB0b2Mgfm91dGVyX3A6U3JjX3Bvcy5BYnNvbHV0ZS5vcmlnaW5cbjs7XG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKFxuIyAxNSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgc3RyaW5nXG4jIDYgXCJzcmMvcGFyc2VyLm1sXCJcbilcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nXG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IHBhcnNlX2ZhaWx1cmUgd2hhdCA9XG4gICAgbGV0IHBvcyA9IFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSBpblxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCJTZXhwbGliLlBhcnNlcjogZmFpbGVkIHRvIHBhcnNlIGxpbmUgJWQgY2hhciAlZDogJXNcIlxuICAgICAgICBwb3MucG9zX2xudW0gKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKSB3aGF0IGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiMgMjcgXCJzcmMvcGFyc2VyLm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OCAoKiBMUEFSRU4gKik7XG4gIDI1OSAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MCAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDlcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMjJcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAxMFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDA1XFwwMDBcXDAwOFxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDE1XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDEzXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDQwXFwwMDBcXFxuXFwwMzRcXDI1NVxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwyNTVcXFxuXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMjU1XFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NFxcMjU1XFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAyOVxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjg2XG5sZXQgeXl0YWJsZSA9IFwiXFwwMTZcXDAwMFxcXG5cXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAyOVxcMDAwXFwwMjdcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAzOVxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjJcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcXG5cXDAzMVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjZcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDhcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyOFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDhcXDAwMFxcMDA0XFwwMDFcXDI1NVxcMjU1XFwwMTFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG5cXDAyOFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDE3NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMTgxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgKCBUeXBlLkF0b20gXzEgKVxuIyAxODggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgW10gKVxuIyAxOTQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAzOCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgKExpc3QucmV2IF8yKSApXG4jIDIwMSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjA3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIxNCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyMiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyOSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMzcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfMSApXG4jIDI0NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzIgKVxuIyAyNTIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggTm9uZSApXG4jIDI1OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBPYmoucmVwcihcbiMgNTMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBOb25lIClcbiMgMjY1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDI3MiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggW10gKVxuIyAyNzkgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyODcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjk1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMwMiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMDggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzE1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDMyMSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHJldl9zZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzZXhwIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBUeXBlLnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogVHlwZS50IGxpc3QpXG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKFxuIyA1MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgc3RyaW5nICogKExleGluZy5wb3NpdGlvbiAqIHN0cmluZykgb3B0aW9uXG4jIDYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbilcbiAgfCBDT01NRU5UIG9mIChcbiMgNTQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgIHN0cmluZyAqIExleGluZy5wb3NpdGlvbiBvcHRpb25cbiMgMTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbilcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nXG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuICAoKiBjb21wYXJlIHRvIHBhcnNlci5tbHkgKilcblxuICBvcGVuIExleGluZ1xuXG4gIGxldCBwYXJzZV9mYWlsdXJlIHdoYXQgPVxuICAgIGxldCBwb3MgPSBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiU2V4cGxpYi5QYXJzZXI6IGZhaWxlZCB0byBwYXJzZSBsaW5lICVkIGNoYXIgJWQ6ICVzXCJcbiAgICAgICAgcG9zLnBvc19sbnVtIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbCkgd2hhdCBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIG1vZHVsZSBXaXRoX3BvcyA9IHN0cnVjdFxuXG4gICAgb3BlbiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZFxuXG4gICAgbGV0IGNvZXJjZSA9IFNyY19wb3MuQWJzb2x1dGUub2ZfbGV4aW5nXG5cbiAgICBsZXQgc3RhcnRfcG9zICgpID0gY29lcmNlIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpXG5cbiAgICBsZXQgZW5kX3BvcyAoKSA9XG4gICAgICBsZXQgcCA9IFBhcnNpbmcuc3ltYm9sX2VuZF9wb3MgKCkgaW5cbiAgICAgIGNvZXJjZSB7IHAgd2l0aCBMZXhpbmcucG9zX2NudW0gPSBwLkxleGluZy5wb3NfY251bSAtIDEgfVxuXG4gICAgbGV0IGF0b20gKHgsIHkpID1cbiAgICAgIGxldCAocG9zLCB5KSA9XG4gICAgICAgIG1hdGNoIHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKHN0YXJ0X3BvcyAoKSwgU29tZSB4KVxuICAgICAgICB8IFNvbWUgKHBvcywgeCkgLT4gKGNvZXJjZSBwb3MsIFNvbWUgeClcbiAgICAgIGluXG4gICAgICBBdG9tIChwb3MsIHgsIHkpXG5cbiAgICBsZXQgbGlzdCB0cyA9IExpc3QgKHN0YXJ0X3BvcyAoKSwgdHMsIGVuZF9wb3MgKCkpXG5cbiAgICBsZXQgc2V4cCAgICB4ID0gU2V4cCAgICB4XG4gICAgbGV0IGNvbW1lbnQgeCA9IENvbW1lbnQgeFxuXG4gICAgbGV0IHNleHBfY29tbWVudCBjcyB0ID0gU2V4cF9jb21tZW50IChzdGFydF9wb3MgKCksIGNzLCB0KVxuXG4gICAgbGV0IHBsYWluX2NvbW1lbnQgKHgsIHBvc19vcHQpID1cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBtYXRjaCBwb3Nfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHN0YXJ0X3BvcyAoKVxuICAgICAgICB8IFNvbWUgcG9zIC0+IGNvZXJjZSBwb3NcbiAgICAgIGluXG4gICAgICBQbGFpbl9jb21tZW50IChwb3MsIHgpXG5cbiAgZW5kXG5cbiMgNzAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OSAoKiBMUEFSRU4gKik7XG4gIDI2MCAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MSAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gIDI1OCAoKiBDT01NRU5UICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMTBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAwNlxcMDAwXFwwMjJcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTJcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTNcXDAwMFxcMDIzXFwwMDBcXDAyMFxcMDAwXFwwMTVcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTZcXDAwMFxcMDIxXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDE3XFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDZcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMThcXDAwMFxcMDIxXFwwMDBcXDAyM1xcMDAwXFwwMjZcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMTVcXDAwMFxcMDIyXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDM3XFwwMDBcXFxuXFwwMDlcXDI1NVxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDI1NVxcMDA5XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyN1xcMjU1XFwyNTFcXDI1NVxcMjM1XFwyNTVcXFxuXFwwMDBcXDAwMFxcMjM0XFwyNTVcXDAxMFxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjkyXG5sZXQgeXl0YWJsZSA9IFwiXFwwMzZcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMzNcXDAwMFxcMDEyXFwwMDBcXDAxN1xcMDAwXFwwMjhcXDAwMFxcMDMzXFwwMDBcXDAxOVxcMDAwXFwwMzdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMjVcXDAwMFxcMDExXFwwMDBcXDAyN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAzNVxcMDAwXFwwMTFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDI5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDEwXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwNVxcMDAxXFwwMDVcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBMUEFSRU5cXDAwMFxcXG4gIFJQQVJFTlxcMDAwXFxcbiAgRU9GXFwwMDBcXFxuICBIQVNIX1NFTUlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBTVFJJTkdcXDAwMFxcXG4gIENPTU1FTlRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICggV2l0aF9wb3MuYXRvbSBfMSApXG4jIDIyMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA3NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5saXN0IChMaXN0LnJldiBfMikgKVxuIyAyMjkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3NyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAoIHBhcnNlX2ZhaWx1cmUgXCJzZXhwXCIgKVxuIyAyMzUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA4MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICggV2l0aF9wb3MucGxhaW5fY29tbWVudCBfMSApXG4jIDI0MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfY29tbWVudHNfYWJzKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3Muc2V4cF9jb21tZW50IChMaXN0LnJldiBfMikgXzMgKVxuIyAyNTAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICggW10gKVxuIyAyNTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfY29tbWVudHNfYWJzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI2NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X2NvbW1lbnRzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHAgXzEgKVxuIyAyNzEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICggV2l0aF9wb3MuY29tbWVudCBfMSApXG4jIDI3OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDkyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICggW10gKVxuIyAyODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDkzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI5MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAoIFR5cGVfd2l0aF9sYXlvdXQucmVsYXRpdml6ZSBfMSApXG4jIDI5OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgKCBTb21lIF8xIClcbiMgMzA2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIE5vbmUgKVxuIyAzMTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTAzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgKCBbXzFdIClcbiMgMzE5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDMyNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMzM0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwOCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDM0MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTExIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzNDcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTEyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzUzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDM2MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzX2FicyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSByZXZfc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc2V4cCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbilcbmxldCBzZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdClcbmxldCBzZXhwc19hYnMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkLnRfb3JfY29tbWVudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNSBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdClcbiIsIiMgMSBcInNyYy9sZXhlci5tbGxcIlxuIFxuICAoKiogTGV4ZXI6IExleGVyIFNwZWNpZmljYXRpb24gZm9yIFMtZXhwcmVzc2lvbnMgKilcblxuICBvcGVuIFByaW50ZlxuICBvcGVuIExleGluZ1xuXG4gIGxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICAgIHwgJ24nIC0+ICdcXDAxMCdcbiAgICB8ICdyJyAtPiAnXFwwMTMnXG4gICAgfCAnYicgLT4gJ1xcMDA4J1xuICAgIHwgJ3QnIC0+ICdcXDAwOSdcbiAgICB8IGMgLT4gY1xuXG4gIGxldCBsZiA9ICdcXDAxMCdcblxuICBsZXQgZGVjX2NvZGUgYzEgYzIgYzMgPVxuICAgIDEwMCAqIChDaGFyLmNvZGUgYzEgLSA0OCkgKyAxMCAqIChDaGFyLmNvZGUgYzIgLSA0OCkgKyAoQ2hhci5jb2RlIGMzIC0gNDgpXG5cbiAgbGV0IGhleF9jb2RlIGMxIGMyID1cbiAgICBsZXQgZDEgPSBDaGFyLmNvZGUgYzEgaW5cbiAgICBsZXQgdmFsMSA9XG4gICAgICBpZiBkMSA+PSA5NyB0aGVuIGQxIC0gODdcbiAgICAgIGVsc2UgaWYgZDEgPj0gNjUgdGhlbiBkMSAtIDU1XG4gICAgICBlbHNlIGQxIC0gNDggaW5cbiAgICBsZXQgZDIgPSBDaGFyLmNvZGUgYzIgaW5cbiAgICBsZXQgdmFsMiA9XG4gICAgICBpZiBkMiA+PSA5NyB0aGVuIGQyIC0gODdcbiAgICAgIGVsc2UgaWYgZDIgPj0gNjUgdGhlbiBkMiAtIDU1XG4gICAgICBlbHNlIGQyIC0gNDggaW5cbiAgICB2YWwxICogMTYgKyB2YWwyXG5cbiAgbGV0IGZvdW5kX25ld2xpbmUgbGV4YnVmIGRpZmYgPVxuICAgIGxldCBsZXhfY3Vycl9wID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAge1xuICAgICAgICBsZXhfY3Vycl9wIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsZXhfY3Vycl9wLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxleF9jdXJyX3AucG9zX2NudW0gLSBkaWZmO1xuICAgICAgfVxuXG4gICgqIHNhbWUgbGVuZ3RoIGNvbXB1dGF0aW9uIGFzIGluIFtMZXhpbmcubGV4ZW1lXSAqKVxuICBsZXQgbGV4ZW1lX2xlbiB7IGxleF9zdGFydF9wb3M7IGxleF9jdXJyX3BvczsgXyB9ID0gbGV4X2N1cnJfcG9zIC0gbGV4X3N0YXJ0X3Bvc1xuXG4gIGxldCBtYWluX2ZhaWx1cmUgbGV4YnVmIG1zZyA9XG4gICAgbGV0IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gPSBsZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgXCJTZXhwbGliLkxleGVyLm1haW46ICVzIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgIG1zZyBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgIGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgICAgIHZhbCBhZGRfY2hhciA6IHQgLT4gY2hhciAtPiB1bml0XG4gICAgICB2YWwgYWRkX3N1YmJ5dGVzIDogdCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgIHZhbCBhZGRfbGV4ZW1lIDogdCAtPiBsZXhidWYgLT4gdW5pdFxuICAgICAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gICAgICB2YWwgb2ZfYnVmZmVyIDogQnVmZmVyLnQgLT4gdFxuICAgIGVuZFxuICAgIG1vZHVsZSBUb2tlbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgbHBhcmVuIDogdFxuICAgICAgdmFsIHJwYXJlbiA6IHRcbiAgICAgIHZhbCBlb2YgOiB0XG4gICAgICB2YWwgc2ltcGxlX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICB2YWwgaGFzaF9zZW1pIDogdFxuICAgICAgdmFsIHF1b3RlZF9zdHJpbmcgOiBMZXhpbmcucG9zaXRpb24gLT4gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiB0XG4gICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgdmFsIGNvbW1lbnQgOiBzdHJpbmcgLT4gbWFpbjpzIC0+IHNcbiAgICAgIHZhbCBibG9ja19jb21tZW50IDogTGV4aW5nLnBvc2l0aW9uIC0+IG1haW46cyAtPiBzXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChYIDogVCkgOiBzaWdcbiAgICB2YWwgbWFpbiA6ID9idWY6QnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiBYLlRva2VuLnRcbiAgZW5kID0gc3RydWN0ICgqIEJFR0lOIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG4gICAgb3BlbiBYXG5cbiMgODQgXCJzcmMvbGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjQ0XFwyNTVcXDAxMFxcMDAwXFwwNDNcXDAwMFxcMDUzXFwwMDBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDA4NlxcMDAwXFwyNDhcXDI1NVxcMjQ5XFwyNTVcXDA5NlxcMDAwXFxcbiAgICBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTcyXFwwMDBcXDE4MlxcMDAwXFwyMjBcXDAwMFxcMjMwXFwwMDBcXDAwN1xcMDAxXFwyNDdcXDI1NVxcXG4gICAgXFwwMTdcXDAwMVxcMDUwXFwwMDFcXDA2MFxcMDAxXFwwOTNcXDAwMVxcMTAzXFwwMDFcXDEzNlxcMDAxXFwxNDZcXDAwMVxcMTgxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDIyNFxcMDAxXFwyMzRcXDAwMVxcMDExXFwwMDJcXDAzN1xcMDAwXFwyNDZcXDI1NVxcMDgwXFwwMDBcXDI0OFxcMjU1XFxcbiAgICBcXDAyM1xcMDAyXFwyNTVcXDI1NVxcMjQ5XFwyNTVcXDA1N1xcMDAyXFwwMzNcXDAwMlxcMjUyXFwyNTVcXDAwN1xcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMTdcXDAwMFxcMTEyXFwwMDJcXDI1MVxcMjU1XFwxNDRcXDAwMlxcMjUwXFwyNTVcXDA4MVxcMDAwXFwyNTBcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMTIyXFwwMDBcXDI1NVxcMjU1XFwxNjZcXDAwMFxcMTMwXFwwMDFcXDI1MlxcMjU1XFwyNTFcXDI1NVxcMTczXFwwMDFcXDI1MVxcMDAxXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDAyXFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDIzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTJcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU4XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAxN1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzVcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDQ2XFwwMDBcXDAwOVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMzZcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE3XFwwMDBcXDAzOFxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDUzXFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzZcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDI0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDM4XFwwMDBcXDA1M1xcMDAwXFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAxN1xcMDAwXFwwNTlcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDBcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDE5XFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMjlcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFxcbiAgICBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDI1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDA0MFxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBtYWluIGJ1ZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICggZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgbWFpbiBidWYgbGV4YnVmIClcbiMgMzcwIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgOTcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgKCBtYWluIGJ1ZiBsZXhidWYgKVxuIyAzNzUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRcbiMgMzgxIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA5OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uY29tbWVudCB0ZXh0IH5tYWluIGJ1ZiBsZXhidWYgKVxuIyAzODUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyA5OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmxwYXJlbiApXG4jIDM5MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDEwMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLnJwYXJlbiApXG4jIDM5NSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDEwMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgcG9zID0gTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBwb3MgbGV4YnVmO1xuICAgICAgICBsZXQgdG9rID0gVG9rZW4ucXVvdGVkX3N0cmluZyBwb3MgYnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQwNyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA2IC0+XG4jIDExMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBUb2tlbi5oYXNoX3NlbWkgKVxuIyA0MTIgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxuIyAxMTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIFtwb3NdIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLmJsb2NrX2NvbW1lbnQgcG9zIH5tYWluIGJ1ZiBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICB0b2tcbiAgICAgIClcbiMgNDI0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTIwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCIgKVxuIyA0MjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxMjYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggbWFpbl9mYWlsdXJlIGxleGJ1ZiBcImNvbW1lbnQgdG9rZW5zIGluIHVucXVvdGVkIGF0b21cIiApXG4jIDQzNCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxMCAtPlxubGV0XG4jIDEyNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJcbiMgNDQwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uc2ltcGxlX3N0cmluZyBzdHIgKVxuIyA0NDQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTI4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4uZW9mIClcbiMgNDQ5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiAzNlxuYW5kIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMzEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7ICgpIClcbiMgNDYxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTMzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBsZW4gPSBsZXhlbWVfbGVuIGxleGJ1ZiAtIDIgaW5cbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDcxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMTQwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBsZW4gPSBsZXhlbWVfbGVuIGxleGJ1ZiAtIDMgaW5cbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDgxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbmxldFxuIyAxNDYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDQ4NyBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBpblxuIyAxNDcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChjaGFyX2Zvcl9iYWNrc2xhc2ggYyk7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0OTUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxubGV0XG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgIGMxXG4jIDUwMSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTA2IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTUyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzXG4jIDUxMSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBpblxuIyAxNTMgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHYgPSBkZWNfY29kZSBjMSBjMiBjMyBpblxuICAgICAgICBpZiB2ID4gMjU1IHRoZW4gKFxuICAgICAgICAgIGxldCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9ID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9zdHJpbmc6IFxcXG4gICAgICAgICAgICAgICBpbGxlZ2FsIGVzY2FwZSBhdCBsaW5lICVkIGNoYXIgJWQ6IGBcXFxcJWMlYyVjJ1wiXG4gICAgICAgICAgICAgIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wgLSAzKVxuICAgICAgICAgICAgICBjMSBjMiBjMyBpblxuICAgICAgICAgIGZhaWx3aXRoIG1zZyk7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1MjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxubGV0XG4jIDE2OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMVxuIyA1MzUgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAxNjggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMlxuIyA1NDAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTY5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gaGV4X2NvZGUgYzEgYzIgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociB2KTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU0OSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMTc1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICBjXG4jIDU1NSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBpblxuIyAxNzYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIGM7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NjQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxuIyAxODMgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIGxmO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTc0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTkwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBvZnMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIG9mcyBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIG9mcyBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1ODUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxOTggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiB1bnRlcm1pbmF0ZWQgc3RyaW5nIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgICAgICBzdGFydC5wb3NfbG51bSAoc3RhcnQucG9zX2NudW0gLSBzdGFydC5wb3NfYm9sKVxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBtc2dcbiAgICAgIClcbiMgNTk3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgNTNcbmFuZCBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjA5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgMDsgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiApXG4jIDYxMCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDIxMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MTYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAyMTUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBsZXQgY3VyID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMSB9IGluXG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWZcbiAgICAgIClcbiMgNjI3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgMjIzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgKFxuICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgIGxldCBzdGFydCA9IHsgY3VyIHdpdGggcG9zX2NudW0gPSBjdXIucG9zX2NudW0gLSAyIH0gaW5cbiAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgKHN0YXJ0IDo6IGxvY3MpIGxleGJ1ZlxuICAgIClcbiMgNjM3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgMjMwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbWF0Y2ggbG9jcyB3aXRoXG4gICAgICAgIHwgW19dIC0+ICgpICgqIHRoZSBjb21tZW50IGlzIGZpbmlzaGVkICopXG4gICAgICAgIHwgXyA6OiAoXyA6OiBfIGFzIHQpIC0+IHNjYW5fYmxvY2tfY29tbWVudCBidWYgdCBsZXhidWZcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2UgICgqIGltcG9zc2libGUgKilcbiAgICAgIClcbiMgNjQ4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbiMgMjM4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gOjogXyAtPlxuICAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgIHNwcmludGYgXCJTZXhwbGliLkxleGVyLnNjYW5fYmxvY2tfY29tbWVudDogXFxcbiAgICAgICAgICAgICAgICB1bnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudCBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgICAgIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDY2MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMjUwIFwic3JjL2xleGVyLm1sbFwiXG4gICgqIFJFU1VNRSBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gICAgbGV0IG1haW4gP2J1ZiA9XG4gICAgICBsZXQgYnVmID1cbiAgICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNyZWF0ZSA2NFxuICAgICAgICB8IFNvbWUgYnVmIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5vZl9idWZmZXIgYnVmXG4gICAgICBpblxuICAgICAgbWFpbiBidWZcblxuICBlbmQgKCogRU5EIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG5cbiAgbW9kdWxlIFZhbmlsbGEgPVxuICAgIE1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQnVmZmVyXG4gICAgICAgIGxldCBhZGRfbGV4ZW1lIF8gXyA9ICgpXG4gICAgICAgIGxldCBvZl9idWZmZXIgYiA9IGJcbiAgICAgIGVuZFxuICAgICAgbW9kdWxlIFRva2VuID0gc3RydWN0XG4gICAgICAgIG9wZW4gUGFyc2VyXG4gICAgICAgIHR5cGUgdCA9IHRva2VuXG4gICAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICAgIGxldCBlb2YgPSBFT0ZcbiAgICAgICAgbGV0IGxwYXJlbiA9IExQQVJFTlxuICAgICAgICBsZXQgcnBhcmVuID0gUlBBUkVOXG4gICAgICAgIGxldCBoYXNoX3NlbWkgPSBIQVNIX1NFTUlcbiAgICAgICAgbGV0IHNpbXBsZV9zdHJpbmcgeCA9IFNUUklORyB4XG4gICAgICAgIGxldCBxdW90ZWRfc3RyaW5nIF8gYnVmID0gU1RSSU5HIChCdWZmZXIuY29udGVudHMgYnVmKVxuICAgICAgICBsZXQgYmxvY2tfY29tbWVudCBfcG9zIH5tYWluIGJ1ZiBsZXhidWYgPVxuICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZlxuICAgICAgICBsZXQgY29tbWVudCBfdGV4dCB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWYgKCogc2tpcCBhbmQgY29udGludWUgbGV4aW5nICopXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFdpdGhfbGF5b3V0ID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB7XG4gICAgICAgICAgY29udGVudHMgOiBCdWZmZXIudDtcbiAgICAgICAgICBsZXhlbWUgOiBCdWZmZXIudDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3JlYXRlIG4gPSB7Y29udGVudHMgPSBCdWZmZXIuY3JlYXRlIG47IGxleGVtZSA9IEJ1ZmZlci5jcmVhdGUgbn1cbiAgICAgICAgbGV0IG9mX2J1ZmZlciBjb250ZW50cyA9IHsgY29udGVudHM7IGxleGVtZSA9IEJ1ZmZlci5jcmVhdGUgNjQgfVxuICAgICAgICBsZXQgYWRkX2NoYXIgdCBjaCA9IEJ1ZmZlci5hZGRfY2hhciB0LmNvbnRlbnRzIGNoXG4gICAgICAgIGxldCBhZGRfc3ViYnl0ZXMgdCBzdHIgb2ZzIGxlbiA9IEJ1ZmZlci5hZGRfc3ViYnl0ZXMgdC5jb250ZW50cyBzdHIgb2ZzIGxlblxuICAgICAgICBsZXQgYWRkX2xleGVtZSB0IGxleGJ1ZiA9IEJ1ZmZlci5hZGRfc3RyaW5nIHQubGV4ZW1lIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgbGV0IGNsZWFyIHQgPSBCdWZmZXIuY2xlYXIgdC5sZXhlbWU7IEJ1ZmZlci5jbGVhciB0LmNvbnRlbnRzXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlcl93aXRoX2xheW91dFxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgKHgsIE5vbmUpXG4gICAgICAgIGxldCBxdW90ZWRfc3RyaW5nIHBvcyB7UXVvdGVkX3N0cmluZ19idWZmZXIuY29udGVudHM7IGxleGVtZX0gPVxuICAgICAgICAgIFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGNvbnRlbnRzLCBTb21lIChwb3MsIEJ1ZmZlci5jb250ZW50cyBsZXhlbWUpKVxuICAgICAgICBsZXQgYmxvY2tfY29tbWVudCBwb3Mgfm1haW46XyB7UXVvdGVkX3N0cmluZ19idWZmZXIuY29udGVudHMgPSBfOyBsZXhlbWV9IF9sZXhidWYgPVxuICAgICAgICAgIENPTU1FTlQgKEJ1ZmZlci5jb250ZW50cyBsZXhlbWUsIFNvbWUgcG9zKVxuICAgICAgICBsZXQgY29tbWVudCB0ZXh0IH5tYWluOl8gX2J1ZiBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UICh0ZXh0LCBOb25lKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIGxldCBtYWluID0gVmFuaWxsYS5tYWluXG4gIGxldCBtYWluX3dpdGhfbGF5b3V0ID0gV2l0aF9sYXlvdXQubWFpblxuXG5cbiMgNzQ1IFwic3JjL2xleGVyLm1sXCJcbiIsIigqIFNleHA6IE1vZHVsZSBmb3IgaGFuZGxpbmcgUy1leHByZXNzaW9ucyAoSS9PLCBldGMuKSAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBCaWdhcnJheVxubW9kdWxlIFNleHBsaWIgPSBTZXhwbGliMFxubW9kdWxlIENvbnYgPSBTZXhwbGliLlNleHBfY29udlxuXG4oKiBjb252Lm1sIGRlcGVuZHMgb24gdXMgc28gd2UgY2FuIG9ubHkgdXNlIHRoaXMgbW9kdWxlICopXG5cbmluY2x1ZGUgVHlwZVxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbmluY2x1ZGUgKFxuICBTZXhwbGliLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGxpYi5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByaXZhdGVcblxubGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5cbigqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIEkvTy1jaGFubmVscyAqKVxuXG5sZXQgd2l0aF9uZXdfYnVmZmVyIG9jIGYgPVxuICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gIGYgYnVmO1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBidWZcbjs7XG5cbmxldCBvdXRwdXRfaHVtIG9jIHNleHAgPSB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSBzZXhwIH5idWYpXG5cbmxldCBvdXRwdXRfaHVtX2luZGVudCBpbmRlbnQgb2Mgc2V4cCA9XG4gIHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfaHVtIH5pbmRlbnQgc2V4cCB+YnVmKVxuOztcblxubGV0IG91dHB1dF9tYWNoIG9jIHNleHAgPSB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX21hY2ggc2V4cCB+YnVmKVxubGV0IG91dHB1dCA9IG91dHB1dF9tYWNoXG5cbigqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIGZpbGUgKilcblxuKCogVGhlIHRlbXAgZmlsZSBmdW5jdGlvbnMgaW4gdGhlIE9DYW1sIEZpbGVuYW1lIG1vZHVsZSBkbyBub3Qgc3VwcG9ydFxuICAgcGVybWlzc2lvbnMuICBCdXQgb3BlbmluZyBhIGZpbGUgd2l0aCBnaXZlbiBwZXJtaXNzaW9ucyBpcyBkaWZmZXJlbnRcbiAgIGZyb20gb3BlbmluZyBpdCBhbmQgY2htb2RpbmcgaXQgdG8gdGhlc2UgcGVybWlzc2lvbnMsIGJlY2F1c2UgdGhlIHVtYXNrXG4gICBpcyB0YWtlbiBpbiBhY2NvdW50LiAgVW5kZXIgVW5peCB0aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGdldCB0aGUgdW1hc2sgaW5cbiAgIGEgdGhyZWFkLXNhZmUgd2F5LiAqKVxubW9kdWxlIFRtcF9maWxlID0gc3RydWN0XG4gIGxldCBwcm5nID0gcmVmIE5vbmVcblxuICBsZXQgdGVtcF9maWxlX25hbWUgcHJlZml4IHN1ZmZpeCA9XG4gICAgbGV0IHJhbmRfc3RhdGUgPVxuICAgICAgbWF0Y2ggIXBybmcgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCByZXQgPSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkgaW5cbiAgICAgICAgcHJuZyA6PSBTb21lIHJldDtcbiAgICAgICAgcmV0XG4gICAgaW5cbiAgICBsZXQgcm5kID0gUmFuZG9tLlN0YXRlLmJpdHMgcmFuZF9zdGF0ZSBsYW5kIDB4RkZGRkZGIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4XG4gIDs7XG5cbiAgKCogS2VlcCB0aGUgcGVybWlzc2lvbnMgbG9vc2UuIFNleHBzIGFyZSB1c3VhbGx5IHNoYXJlZCBhbmQgcmFyZWx5IHByaXZhdGUqKVxuICBsZXQgb3Blbl90ZW1wX2ZpbGUgPyhwZXJtID0gMG82NjYpIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgb2MgPVxuICAgICAgICAgIG9wZW5fb3V0X2dlbiBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2w7IE9wZW5fdGV4dCBdIHBlcm0gbmFtZVxuICAgICAgICBpblxuICAgICAgICBuYW1lLCBvY1xuICAgICAgd2l0aFxuICAgICAgfCBTeXNfZXJyb3IgXyBhcyBlIC0+IGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gICAgaW5cbiAgICB0cnlfbmFtZSAwXG4gIDs7XG5lbmRcblxubGV0IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIG91dHB1dF9mdW5jdGlvbiBmaWxlIHNleHAgPVxuICBsZXQgdG1wX25hbWUsIG9jID0gVG1wX2ZpbGUub3Blbl90ZW1wX2ZpbGUgP3Blcm0gZmlsZSBcInRtcFwiIGluXG4gICh0cnlcbiAgICAgb3V0cHV0X2Z1bmN0aW9uIG9jIHNleHA7XG4gICAgIGNsb3NlX291dCBvY1xuICAgd2l0aFxuICAgfCBlIC0+XG4gICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICAgKHRyeSBTeXMucmVtb3ZlIHRtcF9uYW1lIHdpdGhcbiAgICAgIHwgXyAtPiAoKSk7XG4gICAgIHJhaXNlIGUpO1xuICBTeXMucmVuYW1lIHRtcF9uYW1lIGZpbGVcbjs7XG5cbmxldCBvdXRwdXRfc2V4cF9ubCBkb19vdXRwdXQgb2Mgc2V4cCA9XG4gIGRvX291dHB1dCBvYyBzZXhwO1xuICBvdXRwdXRfc3RyaW5nIG9jIFwiXFxuXCJcbjs7XG5cbmxldCBzYXZlX2h1bSA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwXG5sZXQgc2F2ZV9tYWNoID9wZXJtIGZpbGUgc2V4cCA9IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIG91dHB1dF9tYWNoIGZpbGUgc2V4cFxubGV0IHNhdmUgPSBzYXZlX21hY2hcbmxldCBvdXRwdXRfc2V4cHNfbmwgZG9fb3V0cHV0IG9jIHNleHBzID0gTGlzdC5pdGVyIChvdXRwdXRfc2V4cF9ubCBkb19vdXRwdXQgb2MpIHNleHBzXG5cbmxldCBzYXZlX3NleHBzX2h1bSA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfaHVtKSBmaWxlIHNleHBzXG47O1xuXG5sZXQgc2F2ZV9zZXhwc19tYWNoID9wZXJtIGZpbGUgc2V4cHMgPVxuICBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBzX25sIG91dHB1dF9tYWNoKSBmaWxlIHNleHBzXG47O1xuXG5sZXQgc2F2ZV9zZXhwcyA9IHNhdmVfc2V4cHNfbWFjaFxuXG4oKiBTY2FuIGZ1bmN0aW9ucyAqKVxuXG5sZXQgc2Nhbl9zZXhwID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHAgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwX29wdCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwX29wdCAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3NleHBzID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHBzIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fcmV2X3NleHBzID9idWYgbGV4YnVmID0gUGFyc2VyLnJldl9zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcblxubGV0IGdldF9tYWluX2J1ZiBidWYgPVxuICBsZXQgYnVmID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgIHwgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDEyOFxuICAgIHwgU29tZSBidWYgLT4gYnVmXG4gIGluXG4gIExleGVyLm1haW4gfmJ1ZlxuOztcblxubGV0IHNjYW5fZm9sZF9zZXhwcyA/YnVmIH5mIH5pbml0IGxleGJ1ZiA9XG4gIGxldCBtYWluID0gZ2V0X21haW5fYnVmIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBtYXRjaCBQYXJzZXIuc2V4cF9vcHQgbWFpbiBsZXhidWYgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgc2V4cCAtPiBsb29wIChmIGFjYyBzZXhwKVxuICBpblxuICBsb29wIGluaXRcbjs7XG5cbmxldCBzY2FuX2l0ZXJfc2V4cHMgP2J1ZiB+ZiBsZXhidWYgPVxuICBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiBsZXhidWYgfmluaXQ6KCkgfmY6KGZ1biAoKSBzZXhwIC0+IGYgc2V4cClcbjs7XG5cbmxldCBzY2FuX3NleHBzX2NvbnYgP2J1ZiB+ZiBsZXhidWYgPVxuICBsZXQgY29sbCBhY2Mgc2V4cCA9IGYgc2V4cCA6OiBhY2MgaW5cbiAgTGlzdC5yZXYgKHNjYW5fZm9sZF9zZXhwcyA/YnVmIH5mOmNvbGwgfmluaXQ6W10gbGV4YnVmKVxuOztcblxubGV0IHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlID9jb250YWluaW5nX3NleHAgP2xvY2F0aW9uID9pbnZhbGlkX3NleHAgKCkgfmV4biA6IHQgPVxuICBMaXN0XG4gICAgKExpc3QuY29uY2F0XG4gICAgICAgWyBbIEF0b20gXCJPZl9zZXhwX2Vycm9yXCIgXVxuICAgICAgIDsgKG1hdGNoIGxvY2F0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIEF0b20geCBdKVxuICAgICAgIDsgWyAobWF0Y2ggZXhuIHdpdGhcbiAgICAgICAgICAgICB8IEZhaWx1cmUgeCAtPiBBdG9tIHhcbiAgICAgICAgICAgICB8IF8gLT4gQ29udi5zZXhwX29mX2V4biBleG4pXG4gICAgICAgICBdXG4gICAgICAgOyAobWF0Y2ggaW52YWxpZF9zZXhwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIExpc3QgWyBBdG9tIFwiaW52YWxpZF9zZXhwXCI7IHggXSBdKVxuICAgICAgIDsgKG1hdGNoIGNvbnRhaW5pbmdfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImNvbnRhaW5pbmdfc2V4cFwiOyB4IF0gXSlcbiAgICAgICBdKVxuOztcblxuKCogUGFydGlhbCBwYXJzaW5nICopXG5cbm1vZHVsZSBBbm5vdCA9IHN0cnVjdFxuICB0eXBlIHBvcyA9IFBhcnNleHAuUG9zaXRpb25zLnBvcyA9XG4gICAgeyBsaW5lIDogaW50XG4gICAgOyBjb2wgOiBpbnRcbiAgICA7IG9mZnNldCA6IGludFxuICAgIH1cblxuICB0eXBlIHJhbmdlID0gUGFyc2V4cC5Qb3NpdGlvbnMucmFuZ2UgPVxuICAgIHsgc3RhcnRfcG9zIDogcG9zXG4gICAgOyBlbmRfcG9zIDogcG9zXG4gICAgfVxuXG4gIHR5cGUgdCA9XG4gICAgfCBBdG9tIG9mIHJhbmdlICogVHlwZS50XG4gICAgfCBMaXN0IG9mIHJhbmdlICogdCBsaXN0ICogVHlwZS50XG5cbiAgdHlwZSAnYSBjb252ID1cbiAgICBbIGBSZXN1bHQgb2YgJ2FcbiAgICB8IGBFcnJvciBvZiBleG4gKiB0XG4gICAgXVxuXG4gIGV4Y2VwdGlvbiBDb252X2V4biBvZiBzdHJpbmcgKiBleG5cblxuICBsZXQgKCkgPVxuICAgIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENvbnZfZXhuXSAoZnVuY3Rpb25cbiAgICAgIHwgQ29udl9leG4gKGxvY2F0aW9uLCBleG4pIC0+IHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+ZXhuXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIHR5cGUgc3RhY2sgPVxuICAgIHsgbXV0YWJsZSBwb3NpdGlvbnMgOiBwb3MgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGFjayA6IHQgbGlzdCBsaXN0XG4gICAgfVxuXG4gIGxldCBnZXRfc2V4cCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChfLCBzZXhwKSB8IExpc3QgKF8sIF8sIHNleHApIC0+IHNleHBcbiAgOztcblxuICBsZXQgZ2V0X3JhbmdlID0gZnVuY3Rpb25cbiAgICB8IEF0b20gKHJhbmdlLCBfKSB8IExpc3QgKHJhbmdlLCBfLCBfKSAtPiByYW5nZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX2NvbnYgc2V4cF9vZl9hID0gZnVuY3Rpb25cbiAgICB8IGBSZXN1bHQgYSAtPiBUeXBlLkxpc3QgWyBBdG9tIFwiUmVzdWx0XCI7IGEgfD4gc2V4cF9vZl9hIF1cbiAgICB8IGBFcnJvciAoZXhuLCB0KSAtPlxuICAgICAgTGlzdCBbIEF0b20gXCJFcnJvclwiOyBMaXN0IFsgZXhuIHw+IENvbnYuc2V4cF9vZl9leG47IHQgfD4gZ2V0X3NleHAgXSBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIEFubm90X3NleHAgb2YgdFxuXG4gIGxldCBmaW5kX3NleHAgYW5ub3Rfc2V4cCBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgYW5ub3Rfc2V4cCA9XG4gICAgICBtYXRjaCBhbm5vdF9zZXhwIHdpdGhcbiAgICAgIHwgKEF0b20gKF8sIHN1Yl9zZXhwKSB8IExpc3QgKF8sIF8sIHN1Yl9zZXhwKSkgd2hlbiBzZXhwID09IHN1Yl9zZXhwIC0+XG4gICAgICAgIHJhaXNlIChBbm5vdF9zZXhwIGFubm90X3NleHApXG4gICAgICB8IExpc3QgKF8sIGFubm90cywgXykgLT4gTGlzdC5pdGVyIGxvb3AgYW5ub3RzXG4gICAgICB8IEF0b20gXyAtPiAoKVxuICAgIGluXG4gICAgdHJ5XG4gICAgICBsb29wIGFubm90X3NleHA7XG4gICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgQW5ub3Rfc2V4cCByZXMgLT4gU29tZSByZXNcbiAgOztcbmVuZFxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IE9mX3NleHBfZXJyb3IgKEFubm90LkNvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmxvY2F0aW9uIH5pbnZhbGlkX3NleHAgfmV4blxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhuLCBpbnZhbGlkX3NleHApIC0+XG4gICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlX3BvcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSB0ZXh0X2xpbmUgOiBpbnRcbiAgICA7IG11dGFibGUgdGV4dF9jaGFyIDogaW50XG4gICAgOyBtdXRhYmxlIGdsb2JhbF9vZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgYnVmX3BvcyA6IGludFxuICAgIH1cblxuICBsZXQgY3JlYXRlID8odGV4dF9saW5lID0gMSkgPyh0ZXh0X2NoYXIgPSAwKSA/KGJ1Zl9wb3MgPSAwKSA/KGdsb2JhbF9vZmZzZXQgPSAwKSAoKSA9XG4gICAgbGV0IGZhaWwgbXNnID0gZmFpbHdpdGggKFwiU2V4cGxpYi5TZXhwLlBhcnNlX3Bvcy5jcmVhdGU6IFwiIF4gbXNnKSBpblxuICAgIGlmIHRleHRfbGluZSA8IDFcbiAgICB0aGVuIGZhaWwgXCJ0ZXh0X2xpbmUgPCAxXCJcbiAgICBlbHNlIGlmIHRleHRfY2hhciA8IDBcbiAgICB0aGVuIGZhaWwgXCJ0ZXh0X2NoYXIgPCAwXCJcbiAgICBlbHNlIGlmIGdsb2JhbF9vZmZzZXQgPCAwXG4gICAgdGhlbiBmYWlsIFwiZ2xvYmFsX29mZnNldCA8IDBcIlxuICAgIGVsc2UgaWYgYnVmX3BvcyA8IDBcbiAgICB0aGVuIGZhaWwgXCJidWZfcG9zIDwgMFwiXG4gICAgZWxzZSB7IHRleHRfbGluZTsgdGV4dF9jaGFyOyBnbG9iYWxfb2Zmc2V0OyBidWZfcG9zIH1cbiAgOztcblxuICBsZXQgd2l0aF9idWZfcG9zIHQgYnVmX3BvcyA9IHsgdCB3aXRoIGJ1Zl9wb3MgfVxuZW5kXG5cbm1vZHVsZSBDb250X3N0YXRlID0gUGFyc2V4cC5PbGRfcGFyc2VyX2NvbnRfc3RhdGVcblxudHlwZSAoJ2EsICd0KSBwYXJzZV9yZXN1bHQgPVxuICB8IERvbmUgb2YgJ3QgKiBQYXJzZV9wb3MudFxuICB8IENvbnQgb2YgQ29udF9zdGF0ZS50ICogKCdhLCAndCkgcGFyc2VfZnVuXG5cbmFuZCAoJ2EsICd0KSBwYXJzZV9mdW4gPSBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gKCdhLCAndCkgcGFyc2VfcmVzdWx0XG5cbnR5cGUgJ3QgcGFyc2Vfc3RhdGUgPSB7IHBhcnNlX3BvcyA6IFBhcnNlX3Bvcy50IH1cblxudHlwZSBwYXJzZV9lcnJvciA9XG4gIHsgZXJyX21zZyA6IHN0cmluZ1xuICA7IHBhcnNlX3N0YXRlIDogWyBgU2V4cCBvZiB0IGxpc3QgbGlzdCBwYXJzZV9zdGF0ZSB8IGBBbm5vdCBvZiBBbm5vdC5zdGFjayBwYXJzZV9zdGF0ZSBdXG4gIH1cblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHBhcnNlX2Vycm9yXG5cbmxldCAoKSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIHBlIC0+XG4gICAgICBsZXQgcHBvcyA9XG4gICAgICAgIG1hdGNoIHBlLnBhcnNlX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgU2V4cCB7IHBhcnNlX3BvcyB9IHwgYEFubm90IHsgcGFyc2VfcG9zIH0gLT4gcGFyc2VfcG9zXG4gICAgICBpblxuICAgICAgTGlzdFxuICAgICAgICBbIEF0b20gXCJTZXhwbGliLlNleHAuUGFyc2VfZXJyb3JcIlxuICAgICAgICA7IExpc3RcbiAgICAgICAgICAgIFsgTGlzdCBbIEF0b20gXCJlcnJfbXNnXCI7IEF0b20gcGUuZXJyX21zZyBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9saW5lXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9saW5lIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJ0ZXh0X2NoYXJcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy50ZXh0X2NoYXIgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcImdsb2JhbF9vZmZzZXRcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0IF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJidWZfcG9zXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuYnVmX3BvcyBdXG4gICAgICAgICAgICBdXG4gICAgICAgIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlcl9vdXRwdXQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhcmVfc2V4cCA6IFQgd2l0aCB0eXBlIG91dHB1dCA9IFR5cGUudFxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEkgPSBQYXJzZXhwLlBvc2l0aW9ucy5JdGVyYXRvclxuXG4gIGxldCByZWMgYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgVHlwZS5BdG9tIF8gLT5cbiAgICAgIGxldCBzdGFydF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgbGV0IGVuZF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgQW5ub3QuQXRvbSAoeyBzdGFydF9wb3M7IGVuZF9wb3MgfSwgc2V4cClcbiAgICB8IFR5cGUuTGlzdCBsIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHBfbGlzdCBsIGl0ZXIgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90Lkxpc3QgKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIGFubm90LCBzZXhwKVxuXG4gIGFuZCBhbm5vdGF0ZV9zZXhwX2xpc3Qgc2V4cHMgaXRlciA9XG4gICAgTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIpIHNleHBzKVxuICA7O1xuXG4gIG1vZHVsZSBCYXJlX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJcblxuICAgIHR5cGUgb3V0cHV0ID0gVHlwZS50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIHNleHAgPSByYWlzZV9ub3RyYWNlIChGb3VuZCBzZXhwKVxuICBlbmRcblxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJfYW5kX3Bvc2l0aW9uc1xuXG4gICAgdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIChzZXhwLCBwb3NpdGlvbnMpID1cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHAgc2V4cCAoSS5jcmVhdGUgcG9zaXRpb25zKSBpblxuICAgICAgcmFpc2Vfbm90cmFjZSAoRm91bmQgYW5ub3QpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfcGFyc2VyIChUIDogc2lnXG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LlRcblxuICAgIHR5cGUgaW5wdXRcblxuICAgIHZhbCBsZW5ndGggOiBpbnB1dCAtPiBpbnRcblxuICAgIHZhbCB1bnNhZmVfZmVlZF9sb29wXG4gICAgICA6ICBJbXBsLlN0YXRlLnRcbiAgICAgIC0+IEltcGwuU3RhY2sudFxuICAgICAgLT4gaW5wdXRcbiAgICAgIC0+IG1heF9wb3M6aW50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgcGFyc2VcbiAgICA6ICA/cGFyc2VfcG9zOlBhcnNlX3Bvcy50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiBULmlucHV0XG4gICAgLT4gKFQuaW5wdXQsIFQub3V0cHV0KSBwYXJzZV9yZXN1bHRcbmVuZCA9IHN0cnVjdFxuICBsZXQgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIGJ1Zl9wb3MgPVxuICAgIHsgUGFyc2VfcG9zLnRleHRfbGluZSA9IFQuSW1wbC5TdGF0ZS5saW5lIHN0YXRlXG4gICAgOyBQYXJzZV9wb3MudGV4dF9jaGFyID0gVC5JbXBsLlN0YXRlLmNvbHVtbiBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmdsb2JhbF9vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlXG4gICAgOyBQYXJzZV9wb3MuYnVmX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zIDwgMFwiO1xuICAgIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBsZW4gPCAwXCI7XG4gICAgbGV0IHN0cl9sZW4gPSBULmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcG9zX2xlbiA9IHBvcyArIGxlbiBpblxuICAgIGlmIHBvc19sZW4gPiBzdHJfbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zICsgbGVuID4gc3RyX2xlblwiO1xuICAgIHBvc19sZW4gLSAxXG4gIDs7XG5cbiAgbGV0IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2cgPVxuICAgIGxldCBwYXJzZV9zdGF0ZSA9IHsgcGFyc2VfcG9zID0gcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIHBvcyB9IGluXG4gICAgbGV0IHBhcnNlX2Vycm9yID0geyBlcnJfbXNnID0gbXNnOyBwYXJzZV9zdGF0ZSA9IGBTZXhwIHBhcnNlX3N0YXRlIH0gaW5cbiAgICByYWlzZSAoUGFyc2VfZXJyb3IgcGFyc2VfZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9wYXJzZXhwX2Vycm9yIHN0YXRlIHBvcyBlID1cbiAgICBsZXQgbXNnID0gUGFyc2V4cC5QYXJzZV9lcnJvci5tZXNzYWdlIGUgaW5cbiAgICBtYXRjaCBQYXJzZXhwLlBhcnNlX2Vycm9yLlByaXZhdGUub2xkX3BhcnNlcl9leG4gZSB3aXRoXG4gICAgfCBgUGFyc2VfZXJyb3IgLT4gcmFpc2VfcGFyc2VfZXJyb3Igc3RhdGUgcG9zIG1zZ1xuICAgIHwgYEZhaWx1cmUgLT4gZmFpbHdpdGggbXNnXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIH5wb3MgfmxlbiBzdHIgPVxuICAgIGxldCBtYXhfcG9zID0gY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyIGluXG4gICAgbGV0IHByZXZpb3VzX29mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICBtYXRjaCBULnVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3Mgd2l0aFxuICAgIHwgc3RhY2sgLT4gbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFja1xuICAgIHwgZXhjZXB0aW9uIFQuRm91bmQgcmVzdWx0IC0+XG4gICAgICBsZXQgb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSBpblxuICAgICAgbGV0IG5leHRfcG9zID0gcG9zICsgKG9mZnNldCAtIHByZXZpb3VzX29mZnNldCkgaW5cbiAgICAgIERvbmUgKHJlc3VsdCwgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIG5leHRfcG9zKVxuICAgIHwgZXhjZXB0aW9uIFBhcnNleHAuUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZXJyIC0+XG4gICAgICBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSAocG9zICsgKFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgLSBwcmV2aW91c19vZmZzZXQpKSBlcnJcblxuICBhbmQgbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFjayA9XG4gICAgbGV0IHBhcnNlX2Z1biA9XG4gICAgICBsZXQgdXNlZF9yZWYgPSByZWYgZmFsc2UgaW5cbiAgICAgIGZ1biB+cG9zIH5sZW4gc3RyIC0+XG4gICAgICAgIGlmICF1c2VkX3JlZlxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwOiBwYXJzZXIgY29udGludWF0aW9uIGNhbGxlZCB0d2ljZVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHVzZWRfcmVmIDo9IHRydWU7XG4gICAgICAgICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyKVxuICAgIGluXG4gICAgbGV0IGNvbnRfc3RhdGUgPSBULkltcGwuU3RhdGUub2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIGluXG4gICAgQ29udCAoY29udF9zdGF0ZSwgcGFyc2VfZnVuKVxuICA7O1xuXG4gIGxldCBwYXJzZSA/KHBhcnNlX3BvcyA9IFBhcnNlX3Bvcy5jcmVhdGUgKCkpID9sZW4gc3RyID1cbiAgICBsZXQgcG9zLCBidWZfcG9zID1cbiAgICAgIGxldCB7IFBhcnNlX3Bvcy50ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9ID0gcGFyc2VfcG9zIGluXG4gICAgICAoIHsgUGFyc2V4cC5Qb3NpdGlvbnMubGluZSA9IHRleHRfbGluZTsgY29sID0gdGV4dF9jaGFyOyBvZmZzZXQgPSBnbG9iYWxfb2Zmc2V0IH1cbiAgICAgICwgYnVmX3BvcyApXG4gICAgaW5cbiAgICBsZXQgc3RhdGUgPSBULkltcGwuU3RhdGUuY3JlYXRlIH5wb3Mgfm5vX3NleHBfaXNfZXJyb3I6ZmFsc2UgVC5yYWlzZV9mb3VuZCBpblxuICAgIGxldCBzdGFjayA9IFQuSW1wbC5TdGFjay5lbXB0eSBpblxuICAgIGxldCBsZW4gPVxuICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgIHwgTm9uZSAtPiBULmxlbmd0aCBzdHIgLSBidWZfcG9zXG4gICAgaW5cbiAgICBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+cG9zOmJ1Zl9wb3MgfmxlblxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0ciA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxubGV0IHBhcnNlID0gU3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBTdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2Vfc3RyX2Fubm90ID0gU3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG5tb2R1bGUgQmlnc3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBiaWdzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgKHN0ciA6IGlucHV0KSB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChBcnJheTEudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgPSBCaWdzdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkFubm90YXRlZF9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nX2Fubm90ID0gQmlnc3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgKilcblxubGV0IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSA9XG4gICgpO1xuICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgIGxldCBwYXJzZV9wb3MgPVxuICAgICAgbWF0Y2ggcGFyc2VfcG9zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzZV9wb3MuY3JlYXRlIH5idWZfcG9zOnBvcyAoKVxuICAgICAgfCBTb21lIHBhcnNlX3BvcyAtPlxuICAgICAgICBwYXJzZV9wb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgPC0gcG9zO1xuICAgICAgICBwYXJzZV9wb3NcbiAgICBpblxuICAgIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOihTb21lIGxlbikgc3RyXG47O1xuXG4oKiBbd3NfYnVmXSBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyICopXG5sZXQgZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiA9XG4gICgqIFdoZW4gcGFyc2luZyBhdG9tcywgdGhlIGluY3JlbWVudGFsIHBhcnNlciBjYW5ub3QgdGVsbCB3aGV0aGVyXG4gICAgIGl0IGlzIGF0IHRoZSBlbmQgdW50aWwgaXQgaGl0cyB3aGl0ZXNwYWNlLiAgV2UgdGhlcmVmb3JlIGZlZWQgaXRcbiAgICAgb25lIHNwYWNlIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGZpbmlzaGVkLiAqKVxuICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgd3NfYnVmIHdpdGhcbiAgfCBEb25lIChzZXhwLCBfKSAtPiBPayBzZXhwXG4gIHwgQ29udCAoY29udF9zdGF0ZSwgXykgLT4gRXJyb3IgY29udF9zdGF0ZVxuOztcblxubGV0IGdlbl9pbnB1dF9zZXhwIG15X3BhcnNlID9wYXJzZV9wb3MgaWMgPVxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+XG4gICAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgICB8IEVycm9yIF8gLT4gcmFpc2UgRW5kX29mX2ZpbGUpXG4gICAgfCBjIC0+XG4gICAgICBCeXRlcy5zZXQgYnVmIDAgYztcbiAgICAgIChtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIGxvb3AgKG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSlcbjs7XG5cbmxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG5cbmxldCBnZW5faW5wdXRfcmV2X3NleHBzIG15X3BhcnNlIH53c19idWYgP3BhcnNlX3BvcyA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBpYyA9XG4gIGxldCByZXZfc2V4cHNfcmVmID0gcmVmIFtdIGluXG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIC0+XG4gICAgICAgIHJldl9zZXhwc19yZWYgOj0gc2V4cCA6OiAhcmV2X3NleHBzX3JlZjtcbiAgICAgICAgbGV0IG5fcGFyc2VkID0gYnVmX3BvcyAtIHBvcyBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBpZiBuX3BhcnNlZCA9IGxlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV3X2xlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICAgICAgICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46bmV3X2xlbilcbiAgICAgICAgZWxzZSBsb29wIHRoaXNfcGFyc2UgfnBvczpidWZfcG9zIH5sZW46KGxlbiAtIG5fcGFyc2VkKVxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46KGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4pKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cCA6OiAhcmV2X3NleHBzX3JlZlxuICAgICAgfCBFcnJvciBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgIChcIlNleHBsaWIuU2V4cC5pbnB1dF9yZXZfc2V4cHM6IHJlYWNoZWQgRU9GIHdoaWxlIGluIHN0YXRlIFwiXG4gICAgICAgICAgIF4gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSkpXG4gIGluXG4gIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gIGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlblxuOztcblxubGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICBnZW5faW5wdXRfcmV2X3NleHBzIHBhcnNlIH53c19idWY6XCIgXCIgP3BhcnNlX3BvcyA/YnVmIGljXG47O1xuXG5sZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbigqIG9mX3N0cmluZyBhbmQgb2ZfYmlnc3RyaW5nICopXG5cbmxldCBvZl9zdHJpbmdfYmlnc3RyaW5nIGxvYyBteV9wYXJzZSB3c19idWYgZ2V0X2xlbiBnZXRfc3ViIHN0ciA9XG4gIG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6Tm9uZSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgfCBEb25lIChzZXhwLCBwYXJzZV9wb3MpIC0+XG4gICAgKG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgICAgfCBEb25lIChfc2V4cDIsIF8pIC0+XG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogZ290IG11bHRpcGxlIFMtZXhwcmVzc2lvbnMgd2hlcmUgb25seSBvbmUgd2FzIGV4cGVjdGVkLlwiXG4gICAgICAgICAgICBsb2MpXG4gICAgIHwgQ29udCAoQ29udF9zdGF0ZS5QYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIF8pIC0+IHNleHBcbiAgICAgfCBDb250IChfLCBfKSAtPlxuICAgICAgICgqIG5vdCB1c2luZyBbZmVlZF9lbmRfb2ZfaW5wdXRdIGhlcmUgbWVhbnMgXCJhIGJcIiB3aWxsIGVuZCB1cCBoZXJlIGFuZCBub3QgaW5cbiAgICAgICAgICBcIm11bHRpcGxlIFMtZXhwcmVzc2lvbnNcIiBicmFuY2gsIGJ1dCBpdCBkb2Vzbid0IG1hdHRlciB0aGF0IG11Y2ggKilcbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBTLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YSBhdCBwb3NpdGlvbiAlZC4uLlwiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIHBhcnNlX3Bvcy5idWZfcG9zKSlcbiAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPlxuICAgIChtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmIHdpdGhcbiAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgbGV0IGNvbnRfc3RhdGVfc3RyID0gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSBpblxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGluY29tcGxldGUgUy1leHByZXNzaW9uIHdoaWxlIGluIHN0YXRlICVzOiAlc1wiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGNvbnRfc3RhdGVfc3RyXG4gICAgICAgICAgICAoZ2V0X3N1YiBzdHIgMCAoZ2V0X2xlbiBzdHIpKSkpXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHN0ciA9IG9mX3N0cmluZ19iaWdzdHJpbmcgXCJvZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG5sZXQgb2Zfc3RyaW5nX21hbnkgc3RyID0gUGFyc2V4cC5NYW55LnBhcnNlX3N0cmluZ19leG4gc3RyXG5cbmxldCBnZXRfYnN0cl9zdWJfc3RyIGJzdHIgcG9zIGxlbiA9XG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue3BvcyArIGl9XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG47O1xuXG5sZXQgYnN0cl93c19idWYgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgMVxubGV0ICgpID0gYnN0cl93c19idWYuezB9IDwtICcgJ1xuXG5sZXQgb2ZfYmlnc3RyaW5nIGJzdHIgPVxuICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgXCJvZl9iaWdzdHJpbmdcIlxuICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgIGJzdHJfd3NfYnVmXG4gICAgQXJyYXkxLmRpbVxuICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICBic3RyXG47O1xuXG4oKiBMb2FkaW5nICopXG5cbmxldCBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICB0cnlcbiAgICBsZXQgc2V4cHMgPSBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvczpOb25lID9idWYgaWMgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwc1xuICB3aXRoXG4gIHwgZXhjIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZXhjXG47O1xuXG5sZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbmxldCBsb2FkX3NleHBzID9idWYgZmlsZSA9IExpc3QucmV2IChsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUpXG5sZXQgZ2VuX2xvYWRfc2V4cF9sb2MgPSBcIlNleHBsaWIuU2V4cC5nZW5fbG9hZF9zZXhwXCJcblxubGV0IGdlbl9sb2FkX3NleHAgbXlfcGFyc2UgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlID1cbiAgbGV0IGJ1Zl9sZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSA9XG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmOlwiIFwiIHdpdGhcbiAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIFwiJXM6IEVPRiBpbiAlcyB3aGlsZSBpbiBzdGF0ZSAlc1wiXG4gICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICB8IERvbmUgKHNleHAsICh7IFBhcnNlX3Bvcy5idWZfcG9zOyBfIH0gYXMgcGFyc2VfcG9zKSkgd2hlbiBzdHJpY3QgLT5cbiAgICAgICAgbGV0IHJlYyBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3MgfmxlbiA9XG4gICAgICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgICAgfCBEb25lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChzcHJpbnRmIFwiJXM6IG1vcmUgdGhhbiBvbmUgUy1leHByZXNzaW9uIGluIGZpbGUgJXNcIiBnZW5fbG9hZF9zZXhwX2xvYyBmaWxlKVxuICAgICAgICAgIHwgQ29udCAoY29udF9zdGF0ZSwgdGhpc19wYXJzZSkgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgICBpZiBsZW4gPiAwXG4gICAgICAgICAgICB0aGVuIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbiAgICAgICAgICAgIGVsc2UgaWYgY29udF9zdGF0ZSA9IENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICAgICAgICAgICB0aGVuIHNleHBcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiJXM6ICVzIGluIHN0YXRlICVzIGxvYWRpbmcgZmlsZSAlc1wiXG4gICAgICAgICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICAgICAgICBcImFkZGl0aW9uYWwgaW5jb21wbGV0ZSBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAoQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSlcbiAgICAgICAgICAgICAgICAgICBmaWxlKVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBidWZfcG9zKVxuICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHAgPSBsb29wIChta190aGlzX3BhcnNlIG15X3BhcnNlKSBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHNleHBcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxubW9kdWxlIEFubm90YXRlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEFubm90XG5cbiAgbGV0IHBhcnNlID0gcGFyc2Vfc3RyX2Fubm90XG4gIGxldCBwYXJzZV9iaWdzdHJpbmcgPSBwYXJzZV9iaWdzdHJpbmdfYW5ub3RcblxuICBsZXQgaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9XG4gICAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuICA7O1xuXG4gIGxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG4gIGxldCBpbnB1dF9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPSBMaXN0LnJldiAoaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYylcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZyBcIkFubm90YXRlZC5vZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG4gIDs7XG5cbiAgbGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgICBcIkFubm90YXRlZC5vZl9iaWdzdHJpbmdcIlxuICAgICAgcGFyc2VfYmlnc3RyaW5nXG4gICAgICBic3RyX3dzX2J1ZlxuICAgICAgQXJyYXkxLmRpbVxuICAgICAgZ2V0X2JzdHJfc3ViX3N0clxuICAgICAgYnN0clxuICA7O1xuXG4gIGxldCBsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUgPSBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZVxuICBsZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxuICBsZXQgbG9hZF9zZXhwID9zdHJpY3QgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfc2V4cCBwYXJzZSA/c3RyaWN0ID9idWYgZmlsZVxuXG4gIGxldCBjb252IGYgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHNleHAgPSBnZXRfc2V4cCBhbm5vdF9zZXhwIGluXG4gICAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBiYWRfc2V4cCkgYXMgZSAtPlxuICAgICAgKG1hdGNoIGZpbmRfc2V4cCBhbm5vdF9zZXhwIGJhZF9zZXhwIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gcmFpc2UgZVxuICAgICAgIHwgU29tZSBiYWRfYW5ub3Rfc2V4cCAtPiBgRXJyb3IgKGV4YywgYmFkX2Fubm90X3NleHApKVxuICA7O1xuXG4gIGxldCBnZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwID1cbiAgICBsZXQgcmFuZ2UgPSBnZXRfcmFuZ2UgYW5ub3Rfc2V4cCBpblxuICAgIGxldCB7IHN0YXJ0X3BvcyA9IHsgbGluZTsgY29sOyBvZmZzZXQgPSBfIH07IGVuZF9wb3MgPSBfIH0gPSByYW5nZSBpblxuICAgIGxldCBsb2MgPSBzcHJpbnRmIFwiJXM6JWQ6JWRcIiBmaWxlIGxpbmUgY29sIGluXG4gICAgT2Zfc2V4cF9lcnJvciAoQW5ub3QuQ29udl9leG4gKGxvYywgZXhjKSwgZ2V0X3NleHAgYW5ub3Rfc2V4cClcbiAgOztcbmVuZFxuXG5sZXQgbG9hZF9zZXhwX2NvbnYgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgc2V4cCA9IGxvYWRfc2V4cCB+c3RyaWN0IH5idWYgZmlsZSBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKEFubm90YXRlZC5sb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUpXG47O1xuXG5sZXQgcmFpc2VfY29udl9leG4gfmZpbGUgPSBmdW5jdGlvblxuICB8IGBSZXN1bHQgcmVzIC0+IHJlc1xuICB8IGBFcnJvciAoZXhjLCBhbm5vdF9zZXhwKSAtPiByYWlzZSAoQW5ub3RhdGVkLmdldF9jb252X2V4biB+ZmlsZSB+ZXhjIGFubm90X3NleHApXG47O1xuXG5sZXQgbG9hZF9zZXhwX2NvbnZfZXhuID9zdHJpY3QgP2J1ZiBmaWxlIGYgPVxuICByYWlzZV9jb252X2V4biB+ZmlsZSAobG9hZF9zZXhwX2NvbnYgP3N0cmljdCA/YnVmIGZpbGUgZilcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnYgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHJldl9zZXhwcyA9IGxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSBpblxuICB0cnkgTGlzdC5yZXZfbWFwIChmdW4gc2V4cCAtPiBgUmVzdWx0IChmIHNleHApKSByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwIChmdW4gYW5ub3Rfc2V4cCAtPiBBbm5vdGF0ZWQuY29udiBmIGFubm90X3NleHApIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnZfZXhuID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCBmIHJldl9zZXhwcyB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT5cbiAgICAobWF0Y2ggQW5ub3RhdGVkLmxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSB3aXRoXG4gICAgIHwgW10gLT5cbiAgICAgICAoKiBGaWxlIGlzIG5vdyBlbXB0eSAtIHBlcmhhcHMgaXQgd2FzIGEgdGVtcG9yYXJ5IGZpbGUgaGFuZGxlPyAqKVxuICAgICAgIHJhaXNlIGVcbiAgICAgfCByZXZfYW5ub3Rfc2V4cHMgLT5cbiAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgIChmdW4gYW5ub3Rfc2V4cCAtPiByYWlzZV9jb252X2V4biB+ZmlsZSAoQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSlcbiAgICAgICAgIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIGFubm90X29mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKGFubm90X29mX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnYgc3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIEFubm90YXRlZC5vZl9zdHJpbmcgc3RyIGZcblxubGV0IG9mX2JpZ3N0cmluZ19jb252IGJzdHIgZiA9XG4gIGdlbl9vZl9zdHJpbmdfY29udiBvZl9iaWdzdHJpbmcgQW5ub3RhdGVkLm9mX2JpZ3N0cmluZyBic3RyIGZcbjs7XG5cbm1vZHVsZSBPZl9zdHJpbmdfY29udl9leG4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGV4YyA6IGV4blxuICAgIDsgc2V4cCA6IFR5cGUudFxuICAgIDsgc3ViX3NleHAgOiBUeXBlLnRcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEUgb2YgdFxuXG4gIGxldCAoKSA9XG4gICAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRV0gKGZ1bmN0aW9uXG4gICAgICB8IEUgb3NjZSAtPlxuICAgICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZVxuICAgICAgICAgICgpXG4gICAgICAgICAgfmludmFsaWRfc2V4cDpvc2NlLnN1Yl9zZXhwXG4gICAgICAgICAgfmV4bjpvc2NlLmV4Y1xuICAgICAgICAgIH5jb250YWluaW5nX3NleHA6b3NjZS5zZXhwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuZW5kXG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgZiBzZXhwIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHN1Yl9zZXhwKSAtPlxuICAgIHJhaXNlIChPZl9zdHJpbmdfY29udl9leG4uRSB7IE9mX3N0cmluZ19jb252X2V4bi5leGM7IHNleHA7IHN1Yl9zZXhwIH0pXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnZfZXhuIHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGZcbmxldCBvZl9iaWdzdHJpbmdfY29udl9leG4gYnN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9iaWdzdHJpbmcgYnN0ciBmXG5cbmxldCBvZl9zdHJpbmdfbWFueV9jb252X2V4biBzdHIgZiA9XG4gIGxldCBzZXhwcyA9IG9mX3N0cmluZ19tYW55IHN0ciBpblxuICBMaXN0Lm1hcCAoZnVuIHNleHAgLT4gZ2VuX29mX3N0cmluZ19jb252X2V4biAoZnVuIHggLT4geCkgc2V4cCBmKSBzZXhwc1xuOztcblxuKCogVXRpbGl0aWVzIGZvciBhdXRvbWF0ZWQgdHlwZSBjb252ZXJzaW9ucyAqKVxuXG5sZXQgdW5pdCA9IExpc3QgW11cblxubGV0IGlzX3VuaXQgPSBmdW5jdGlvblxuICB8IExpc3QgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmV4dGVybmFsIHNleHBfb2ZfdCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRfb2Zfc2V4cCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuKCogVXRpbGl0aWVzIGZvciBjb252ZXJzaW9uIGVycm9yIGhhbmRsaW5nICopXG5cbnR5cGUgZm91bmQgPVxuICBbIGBGb3VuZFxuICB8IGBQb3Mgb2YgaW50ICogZm91bmRcbiAgXVxuXG50eXBlIHNlYXJjaF9yZXN1bHQgPVxuICBbIGBOb3RfZm91bmRcbiAgfCBmb3VuZFxuICBdXG5cbmxldCByZWMgc2VhcmNoX3BoeXNpY2FsIHNleHAgfmNvbnRhaW5lZCA9XG4gIGlmIHNleHAgPT0gY29udGFpbmVkXG4gIHRoZW4gYEZvdW5kXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSBfIC0+IGBOb3RfZm91bmRcbiAgICB8IExpc3QgbHN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYE5vdF9mb3VuZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCByZXMgPSBzZWFyY2hfcGh5c2ljYWwgaCB+Y29udGFpbmVkIGluXG4gICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgIHwgYE5vdF9mb3VuZCAtPiBsb29wIChpICsgMSkgdFxuICAgICAgICAgICB8ICNmb3VuZCBhcyBmb3VuZCAtPiBgUG9zIChpLCBmb3VuZCkpXG4gICAgICBpblxuICAgICAgbG9vcCAwIGxzdClcbjs7XG5cbmxldCByZWMgc3Vic3RfZm91bmQgc2V4cCB+c3Vic3QgPSBmdW5jdGlvblxuICB8IGBGb3VuZCAtPiBzdWJzdFxuICB8IGBQb3MgKHBvcywgZm91bmQpIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IEF0b20gXyAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogYXRvbSB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgIHwgTGlzdCBsc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgYWNjIHBvcyA9IGZ1bmN0aW9uXG4gICAgICAgICB8IFtdIC0+IGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwLnN1YnN0X2ZvdW5kOiBzaG9ydCBsaXN0IHdoZW4gcG9zaXRpb24gcmVxdWVzdGVkXCJcbiAgICAgICAgIHwgaCA6OiB0IHdoZW4gcG9zIDw+IDAgLT4gbG9vcCAoaCA6OiBhY2MpIChwb3MgLSAxKSB0XG4gICAgICAgICB8IGggOjogdCAtPiBMaXN0IChMaXN0LnJldl9hcHBlbmQgYWNjIChzdWJzdF9mb3VuZCBoIH5zdWJzdCBmb3VuZCA6OiB0KSlcbiAgICAgICBpblxuICAgICAgIGxvb3AgW10gcG9zIGxzdClcbjs7XG4iLCIoKiBwYWNrYWdpbmcgb2YgYW5ub3RhdGVkIHNleHAgZnVuY3Rpb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgZiB0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbmluY2x1ZGUgVHlwZV93aXRoX2xheW91dFxuXG50eXBlIHBvcyA9IFNyY19wb3MuUmVsYXRpdmUudCA9XG4gIHsgcm93IDogaW50XG4gIDsgY29sIDogaW50XG4gIH1cblxubGV0IHNleHBfb2ZfcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZS5zZXhwX29mX3RcblxubW9kdWxlIExleGVyID0gc3RydWN0XG4gIGxldCBtYWluID0gTGV4ZXIubWFpbl93aXRoX2xheW91dFxuZW5kXG5cbm1vZHVsZSBQYXJzZXIgPSBQYXJzZXJfd2l0aF9sYXlvdXRcblxubW9kdWxlIFJlbmRlciA9IHN0cnVjdFxuICBtb2R1bGUgUmVsX3BvcyA9IFNyY19wb3MuUmVsYXRpdmVcbiAgbW9kdWxlIEFic19wb3MgPSBTcmNfcG9zLkFic29sdXRlXG5cbiAgdHlwZSBsYXN0X2F0b20gPVxuICAgIHsgaW1tZWRfYWZ0ZXIgOiBBYnNfcG9zLnRcbiAgICA7IHVuZXNjYXBlZCA6IGJvb2xcbiAgICB9XG5cbiAgdHlwZSBzdGF0ZSA9XG4gICAgeyBtdXRhYmxlIHJvd19zaGlmdCA6IFJlbF9wb3MudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50IDogQWJzX3Bvcy50XG4gICAgOyBtdXRhYmxlIGxhc3RfYXRvbSA6IGxhc3RfYXRvbSBvcHRpb25cbiAgICA7IG11dGFibGUgbGFzdF9jb21tZW50X3JvdyA6IGludFxuICAgIH1cblxuICAoKiB0aGUgcG9pbnQgb2YgW2ltbWVkX2FmdGVyX2xhc3RfYXRvbV0gaXMgdG8gcHJldmVudFxuICAgICAoQSBCIEMpIGZyb20gcmVuZGVyaW5nIGFzIChBIEJCQykgYWZ0ZXIgd2UgcmVwbGFjZSBCIHdpdGggQkIgKilcblxuICB0eXBlICdhIHQgPSAoY2hhciAtPiB1bml0KSAtPiBzdGF0ZSAtPiAnYVxuXG4gIGxldCByZXR1cm4gYSBfcHV0YyBfc3QgPSBhXG4gIGxldCBiaW5kIG0gfmYgcHV0YyBzdCA9IGYgKG0gcHV0YyBzdCkgcHV0YyBzdFxuXG4gIGxldCBydW4gcHV0YyBtID1cbiAgICBtXG4gICAgICBwdXRjXG4gICAgICB7IHJvd19zaGlmdCA9IFJlbF9wb3MuemVyb1xuICAgICAgOyBjdXJyZW50ID0gQWJzX3Bvcy5vcmlnaW5cbiAgICAgIDsgbGFzdF9hdG9tID0gTm9uZVxuICAgICAgOyBsYXN0X2NvbW1lbnRfcm93ID0gMCAoKiBiZWZvcmUgdGhlIGZpbGUgc3RhcnRzICopXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfY2hhciBwdXRjIHN0IGMgPVxuICAgIGxldCB7IEFic19wb3MuY29sOyByb3cgfSA9IHN0LmN1cnJlbnQgaW5cbiAgICBwdXRjIGM7XG4gICAgaWYgYyA9ICdcXG4nXG4gICAgdGhlbiBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3cgPSAxICsgcm93OyBjb2wgPSAxIH1cbiAgICBlbHNlIHN0LmN1cnJlbnQgPC0geyBBYnNfcG9zLnJvdzsgY29sID0gMSArIGNvbCB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfc3RyaW5nIHB1dGMgc3Qgc3RyID1cbiAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCBzdHIuW2ldXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXJzIHB1dGMgc3QgYyB+biA9IGVtaXRfc3RyaW5nIHB1dGMgc3QgKFN0cmluZy5tYWtlIG4gYylcblxuICBsZXQgYWR2YW5jZSBwdXRjIH5hbmNob3Igc3QgfmJ5OmRlbHRhIH51bmVzY2FwZWRfYXRvbSB+bGluZV9jb21tZW50ID1cbiAgICBsZXQgbmV3X3BvcyA9IEFic19wb3MuYWRkIChBYnNfcG9zLmFkZCBhbmNob3IgZGVsdGEpIHN0LnJvd19zaGlmdCBpblxuICAgIGxldCBuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d29fdW5lc2NhcGVkX2F0b21zX2xlc3RfdGhleV9iZWNvbWVfb25lID1cbiAgICAgIHVuZXNjYXBlZF9hdG9tXG4gICAgICAmJlxuICAgICAgbWF0Y2ggc3QubGFzdF9hdG9tIHdpdGhcbiAgICAgIHwgU29tZSB7IGltbWVkX2FmdGVyOyB1bmVzY2FwZWQgPSBwcmV2X3VuZXNjYXBlZCB9IC0+XG4gICAgICAgIG5ld19wb3MgPSBpbW1lZF9hZnRlciAmJiBwcmV2X3VuZXNjYXBlZFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgaW5cbiAgICAoKiBhdm9pZCBqb2luaW5nIHN1YnNlcXVlbnQgaXRlbXMgaW50byBhIHByZWNlZGluZyBsaW5lIGNvbW1lbnQgKilcbiAgICBsZXQgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnQgPSBuZXdfcG9zLnJvdyA9IHN0Lmxhc3RfY29tbWVudF9yb3cgaW5cbiAgICBsZXQgbmVlZF90b19yZXBvc2l0aW9uID1cbiAgICAgIChub3QgKEFic19wb3MuZ2VxIG5ld19wb3Mgc3QuY3VycmVudCkpXG4gICAgICB8fCBuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudFxuICAgICAgfHwgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZVxuICAgIGluXG4gICAgbGV0IHJvd19kZWx0YSwgbmV3X3BvcyA9XG4gICAgICBpZiBuZWVkX3RvX3JlcG9zaXRpb25cbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiByZXBvc2l0aW9uaW5nIGhldXJpc3RpYzoganVzdCBtb3ZlIHRvIHRoZSBuZXh0IGZyZXNoIHJvdyAqKVxuICAgICAgICBsZXQgbmV3X3JvdyA9IDEgKyBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICAgIGxldCByb3dfZGVsdGEgPSBuZXdfcm93IC0gbmV3X3Bvcy5BYnNfcG9zLnJvdyBpblxuICAgICAgICByb3dfZGVsdGEsIHsgQWJzX3Bvcy5yb3cgPSBuZXdfcm93OyBjb2wgPSBuZXdfcG9zLkFic19wb3MuY29sIH0pXG4gICAgICBlbHNlIDAsIG5ld19wb3NcbiAgICBpblxuICAgICgqIGFkdmFuY2UgdG8gbmV3X3BvcyBieSBlbWl0dGluZyB3aGl0ZXNwYWNlICopXG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLnJvdyA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3dcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLnJvdyAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3cgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnXFxuJyB+bik7XG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLmNvbCA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2xcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2wgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnICcgfm4pO1xuICAgIGFzc2VydCAobmV3X3BvcyA9IHN0LmN1cnJlbnQpO1xuICAgIGlmIGxpbmVfY29tbWVudCB0aGVuIHN0Lmxhc3RfY29tbWVudF9yb3cgPC0gc3QuY3VycmVudC5yb3c7XG4gICAgc3Qucm93X3NoaWZ0XG4gICAgPC0geyBzdC5yb3dfc2hpZnQgd2l0aCBSZWxfcG9zLnJvdyA9IHN0LnJvd19zaGlmdC5SZWxfcG9zLnJvdyArIHJvd19kZWx0YSB9XG4gIDs7XG5cbiAgbGV0IHJlYyByZW5kZXJfdCBwdXRjIH5hbmNob3IgKHN0IDogc3RhdGUpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQXRvbSAoZGVsdGEsIHRleHQsIGZtdF90ZXh0KSAtPlxuICAgICAgbGV0IGZtdF90ZXh0ID1cbiAgICAgICAgbWF0Y2ggZm10X3RleHQgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT4gUHJlX3NleHAubWFjaF9tYXliZV9lc2Nfc3RyIHRleHRcbiAgICAgICAgfCBTb21lIHRleHQgLT4gdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCB1bmVzY2FwZWQgPSBmbXRfdGV4dC5bMF0gPD4gJ1wiJyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTp1bmVzY2FwZWQgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgZm10X3RleHQ7XG4gICAgICBzdC5sYXN0X2F0b20gPC0gU29tZSB7IGltbWVkX2FmdGVyID0gc3QuY3VycmVudDsgdW5lc2NhcGVkIH1cbiAgICB8IExpc3QgKHN0YXJ0X2RlbHRhLCB0b2NzLCBlbmRfZGVsdGEpIC0+XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OnN0YXJ0X2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBsZXQgY2hpbGRfYW5jaG9yID0gQWJzX3Bvcy5zdWIgc3QuY3VycmVudCBzdC5yb3dfc2hpZnQgaW5cbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcoJztcbiAgICAgIExpc3QuaXRlciB0b2NzIH5mOihmdW4gdG9jIC0+IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOmNoaWxkX2FuY2hvciBzdCB0b2MpO1xuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTplbmRfZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcpJztcbiAgICAgICgpXG5cbiAgYW5kIHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yIHN0ID0gZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICAgIHwgQ29tbWVudCBjIC0+IHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCBjXG5cbiAgYW5kIHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBQbGFpbl9jb21tZW50IChkZWx0YSwgdGV4dCkgLT5cbiAgICAgIGxldCBsaW5lX2NvbW1lbnQgPSBTdHJpbmcubGVuZ3RoIHRleHQgPiAwICYmIHRleHQuWzBdID0gJzsnIGluXG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IHRleHRcbiAgICB8IFNleHBfY29tbWVudCAoZGVsdGEsIGNzLCB0KSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCBcIiM7XCI7XG4gICAgICBMaXN0Lml0ZXIgY3MgfmY6KHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCk7XG4gICAgICByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICA7O1xuXG4gIGxldCByZW5kZXIgYXNleHAgcHV0YyBzdCA9IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOkFic19wb3Mub3JpZ2luIHN0IGFzZXhwXG4gIGxldCBzZXhwID0gcmVuZGVyXG5lbmRcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoVHlwZS50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChUeXBlLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChUeXBlLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20gKF8sIHgsIF8pIC0+IGsgKFR5cGUuQXRvbSB4KVxuICAgICAgfCBMaXN0IChfLCB0b2NzLCBfKSAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoVHlwZS5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuIFByaW50Zlxub3BlbiBCaWdhcnJheVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm9wZW4gU2V4cFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0MzJfdmVjID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0NjRfdmVjID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYyA9IGZsb2F0NjRfdmVjXG50eXBlIGZsb2F0MzJfbWF0ID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIGZsb2F0NjRfbWF0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdCA9IGZsb2F0NjRfbWF0XG5cbmxldCBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWMgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5MS5kaW0gdmVjIGRvd250byAxIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX2Zsb2F0IHZlYy57aX0gOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfYmlnc3RyaW5nIChic3RyIDogYmlnc3RyaW5nKSA9XG4gIGxldCBuID0gQXJyYXkxLmRpbSBic3RyIGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgc3RyIGkgYnN0ci57aX1cbiAgZG9uZTtcbiAgQXRvbSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgc2V4cF9vZl9mbG9hdDMyX3ZlYyAodmVjIDogZmxvYXQzMl92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl9mbG9hdDY0X3ZlYyAodmVjIDogZmxvYXQ2NF92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl92ZWMgKHZlYyA6IHZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcblxubGV0IHNleHBfb2ZfZmxvYXRfbWF0IG1hdCA9XG4gIGxldCBtID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBuID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gICgqIEl0J3Mgc3VycHJpc2luZyB0aGF0IHdlIHNlcmlhbGl6ZSBbRm9ydHJhbl9sYXlvdXRdIG1hdHJpY2VzIGluIHJvdy1tYWpvciBvcmRlci4gSSBjYW5cbiAgICAgb25seSBzcGVjdWxhdGUgdGhhdCBpdCB3YXMgY2hvc2VuIGZvciByZWFkYWJpbGl0eS4gVGhlIGNhY2hlIHBlcmZvcm1hbmNlIGlzXG4gICAgIGlycmVsZXZhbnQgYmVjYXVzZSBwZW9wbGUgd2hvIGNhcmUgd29uJ3Qgc2VyaWFsaXplIHRvIHNleHAuICopXG4gIGZvciByb3cgPSBuIGRvd250byAxIGRvXG4gICAgZm9yIGNvbCA9IG0gZG93bnRvIDEgZG9cbiAgICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCBtYXQue2NvbCwgcm93fSA6OiAhbHN0X3JlZlxuICAgIGRvbmVcbiAgZG9uZTtcbiAgTGlzdCAoc2V4cF9vZl9pbnQgbSA6OiBzZXhwX29mX2ludCBuIDo6ICFsc3RfcmVmKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl9tYXQgKG1hdCA6IGZsb2F0MzJfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfZmxvYXQ2NF9tYXQgKG1hdCA6IGZsb2F0NjRfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfbWF0IChtYXQgOiBtYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgYmlnc3RyaW5nX3NleHBfZ3JhbW1hciA6IGJpZ3N0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5cbmxldCBiaWdzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgYnN0ciA9IEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCBsZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgYnN0ci57aX0gPC0gc3RyLltpXVxuICAgIGRvbmU7XG4gICAgYnN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0X3ZlYyBjcmVhdGVfZmxvYXRfdmVjIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IGVtcHR5X2Zsb2F0X3ZlY1xuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGxzdCBpblxuICAgIGxldCByZXMgPSBjcmVhdGVfZmxvYXRfdmVjIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMue2l9IDwtIGZsb2F0X29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSBsc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X3ZlY19vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBlbXB0eV9mbG9hdDMyX3ZlYyA9IGNyZWF0ZV9mbG9hdDMyX3ZlYyAwXG5sZXQgZW1wdHlfZmxvYXQ2NF92ZWMgPSBjcmVhdGVfZmxvYXQ2NF92ZWMgMFxubGV0IGZsb2F0MzJfdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDMyX3ZlYyBjcmVhdGVfZmxvYXQzMl92ZWNcbmxldCBmbG9hdDY0X3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDY0X3ZlYyBjcmVhdGVfZmxvYXQ2NF92ZWNcbmxldCB2ZWNfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgKE1hbnkgRmxvYXQpIH1cbmxldCBmbG9hdDMyX3ZlY19zZXhwX2dyYW1tYXIgPSB2ZWNfc2V4cF9ncmFtbWFyXG5sZXQgZmxvYXQ2NF92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxuXG5sZXQgY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzID1cbiAgaWYgZGF0YSA9IFtdIHRoZW4gcmVzIGVsc2Ugb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiB0b28gbXVjaCBkYXRhXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdF9tYXQgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgKHNtIDo6IHNuIDo6IGRhdGEpIC0+XG4gICAgbGV0IG0gPSBpbnRfb2Zfc2V4cCBzbSBpblxuICAgIGxldCBuID0gaW50X29mX3NleHAgc24gaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X21hdCBtIG4gaW5cbiAgICBpZiBtID0gMCB8fCBuID0gMFxuICAgIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3BfY29scyBjb2wgZGF0YSA9XG4gICAgICAgIGxldCB2ZWMgPSBBcnJheTIuc2xpY2VfcmlnaHQgcmVzIGNvbCBpblxuICAgICAgICBsZXQgcmVjIGxvb3Bfcm93cyByb3cgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBub3QgZW5vdWdoIGRhdGFcIiBzZXhwXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIHZlYy57cm93fSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgICAgICBpZiByb3cgPSBtXG4gICAgICAgICAgICB0aGVuIGlmIGNvbCA9IG4gdGhlbiBjaGVja190b29fbXVjaF9kYXRhIHNleHAgdCByZXMgZWxzZSBsb29wX2NvbHMgKGNvbCArIDEpIHRcbiAgICAgICAgICAgIGVsc2UgbG9vcF9yb3dzIChyb3cgKyAxKSB0XG4gICAgICAgIGluXG4gICAgICAgIGxvb3Bfcm93cyAxIGRhdGFcbiAgICAgIGluXG4gICAgICBsb29wX2NvbHMgMSBkYXRhKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgdG9vIHNob3J0XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNyZWF0ZV9mbG9hdDMyX21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dFxubGV0IGNyZWF0ZV9mbG9hdDY0X21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dFxubGV0IGZsb2F0MzJfbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQzMl9tYXRcbmxldCBmbG9hdDY0X21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5sZXQgbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQ2NF9tYXRcblxubGV0IG1hdF9zZXhwX2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoQ29ucyAoSW50ZWdlciwgQ29ucyAoSW50ZWdlciwgTWFueSBGbG9hdCkpKSB9XG47O1xuXG5sZXQgZmxvYXQzMl9tYXRfc2V4cF9ncmFtbWFyID0gbWF0X3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBzdHJpbmdfb2ZfX29mX19zZXhwX29mIHRvX3NleHAgeCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwIHgpXG5cbmxldCBvZl9zdHJpbmdfX29mX19vZl9zZXhwIG9mX3NleHAgcyA9XG4gIHRyeVxuICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgcyBpblxuICAgIG9mX3NleHAgc2V4cFxuICB3aXRoXG4gIHwgZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoc3ByaW50ZiBcIm9mX3N0cmluZyBmYWlsZWQgb24gJXMgd2l0aCAlc1wiIHMgKFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSkpKVxuOztcbiIsIm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXhwX29mX3QgPSBDb252LnNleHBfb2ZfaGFzaHRibFxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5oYXNodGJsX29mX3NleHBcbmVuZFxuXG5tb2R1bGUgTGF6eSA9IHN0cnVjdFxuICBpbmNsdWRlIExhenlcblxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2xhenlfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5sZXQgc2V4cF9vZl91bml0ID0gQ29udi5zZXhwX29mX3VuaXRcbmxldCB1bml0X29mX3NleHAgPSBDb252LnVuaXRfb2Zfc2V4cFxubGV0IHVuaXRfc2V4cF9ncmFtbWFyID0gQ29udi51bml0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYm9vbCA9IENvbnYuc2V4cF9vZl9ib29sXG5sZXQgYm9vbF9vZl9zZXhwID0gQ29udi5ib29sX29mX3NleHBcbmxldCBib29sX3NleHBfZ3JhbW1hciA9IENvbnYuYm9vbF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX3N0cmluZyA9IENvbnYuc2V4cF9vZl9zdHJpbmdcbmxldCBzdHJpbmdfb2Zfc2V4cCA9IENvbnYuc3RyaW5nX29mX3NleHBcbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyID0gQ29udi5zdHJpbmdfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9jaGFyID0gQ29udi5zZXhwX29mX2NoYXJcbmxldCBjaGFyX29mX3NleHAgPSBDb252LmNoYXJfb2Zfc2V4cFxubGV0IGNoYXJfc2V4cF9ncmFtbWFyID0gQ29udi5jaGFyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50ID0gQ29udi5zZXhwX29mX2ludFxubGV0IGludF9vZl9zZXhwID0gQ29udi5pbnRfb2Zfc2V4cFxubGV0IGludF9zZXhwX2dyYW1tYXIgPSBDb252LmludF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Zsb2F0ID0gQ29udi5zZXhwX29mX2Zsb2F0XG5sZXQgZmxvYXRfb2Zfc2V4cCA9IENvbnYuZmxvYXRfb2Zfc2V4cFxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA9IENvbnYuZmxvYXRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQzMiA9IENvbnYuc2V4cF9vZl9pbnQzMlxubGV0IGludDMyX29mX3NleHAgPSBDb252LmludDMyX29mX3NleHBcbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgPSBDb252LmludDMyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50NjQgPSBDb252LnNleHBfb2ZfaW50NjRcbmxldCBpbnQ2NF9vZl9zZXhwID0gQ29udi5pbnQ2NF9vZl9zZXhwXG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQ2NF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX25hdGl2ZWludCA9IENvbnYuc2V4cF9vZl9uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IENvbnYubmF0aXZlaW50X29mX3NleHBcbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5uYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9yZWYgPSBDb252LnNleHBfb2ZfcmVmXG5sZXQgcmVmX29mX3NleHAgPSBDb252LnJlZl9vZl9zZXhwXG5sZXQgcmVmX3NleHBfZ3JhbW1hciA9IENvbnYucmVmX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGF6eV90ID0gQ29udi5zZXhwX29mX2xhenlfdFxubGV0IGxhenlfdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX29wdGlvbiA9IENvbnYuc2V4cF9vZl9vcHRpb25cbmxldCBvcHRpb25fb2Zfc2V4cCA9IENvbnYub3B0aW9uX29mX3NleHBcbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyID0gQ29udi5vcHRpb25fc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9saXN0ID0gQ29udi5zZXhwX29mX2xpc3RcbmxldCBsaXN0X29mX3NleHAgPSBDb252Lmxpc3Rfb2Zfc2V4cFxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyID0gQ29udi5saXN0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYXJyYXkgPSBDb252LnNleHBfb2ZfYXJyYXlcbmxldCBhcnJheV9vZl9zZXhwID0gQ29udi5hcnJheV9vZl9zZXhwXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyID0gQ29udi5hcnJheV9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2V4biA9IENvbnYuc2V4cF9vZl9leG5cbmxldCBleG5fc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG4iLCJpbmNsdWRlIFNleHBfZ3JhbW1hcl9pbnRmXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5sZXQgcmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0aGVyIH50X29mX3NleHAgfnRfc2V4cF9ncmFtbWFyID1cbiAgdF9vZl9zZXhwLCB0X3NleHBfZ3JhbW1hclxuOztcbiIsIigqIFBhdGg6IE1vZHVsZSBmb3IgU3Vic3RpdHV0aW9ucyB3aXRoaW4gUy1leHByZXNzaW9ucyAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBTZXhwXG5cbnR5cGUgZWwgPVxuICB8IFBvcyBvZiBpbnRcbiAgfCBNYXRjaCBvZiBzdHJpbmcgKiBpbnRcbiAgfCBSZWMgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IGVsIGxpc3RcblxubGV0IGlsbGVnYWxfYXRvbSBsb2Mgc2V4cCA9XG4gIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBhdG9tOiAlc1wiIGxvYyAoU2V4cC50b19zdHJpbmcgc2V4cCkpXG47O1xuXG5sZXQgZXh0cmFjdF9wb3NfbHN0IGxvYyBzZXhwIGl4IGxzdCA9XG4gIGxldCByZWMgbG9vcCBhY2MgbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLiVzOiBpbGxlZ2FsIGluZGV4ICVkIGluOiAlc1wiIGxvYyBpeCBzZXhwX3N0cilcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3Vic3QgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgICB8IFNvbWUgeCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjICh4IDo6IHQpXG4gICAgICAgIGluXG4gICAgICAgIHN1YnN0LCBoKVxuICAgICAgZWxzZSBsb29wIChoIDo6IGFjYykgKG4gLSAxKSB0XG4gIGluXG4gIGxvb3AgW10gaXggbHN0XG47O1xuXG5sZXQgZXh0cmFjdF9wb3MgbiA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBsc3QgYXMgc2V4cCAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X3Bvc1wiIHNleHAgbiBsc3QgaW5cbiAgICAoZnVuIHggLT4gTGlzdCAoc3Vic3QgeCkpLCBlbFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcG9zXCIgc2V4cFxuOztcblxubGV0IGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCA9IGZ1bmN0aW9uXG4gIHwgTGlzdCAoKEF0b20gc3RyIGFzIHNleHApIDo6IGFyZ3MpIHdoZW4gc3RyID0gdGFnIC0+XG4gICAgbGV0IHN1YnN0LCBlbCA9IGV4dHJhY3RfcG9zX2xzdCBcImV4dHJhY3RfbWF0Y2hcIiAoTGlzdCBhcmdzKSBhcmdfaXggYXJncyBpblxuICAgIChmdW4gbWF5YmVfeCAtPiBMaXN0IChzZXhwIDo6IHN1YnN0IG1heWJlX3gpKSwgZWxcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICBmYWlsd2l0aCAoXCJQYXRoLmV4dHJhY3RfbWF0Y2g6IHVuZXhwZWN0ZWQgbmVzdGVkIGxpc3QgaW46IFwiIF4gc2V4cF9zdHIpXG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9tYXRjaFwiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguZXh0cmFjdF9yZWM6IGtleSBcXFwiJXNcXFwiIG5vdCBmb3VuZCBpbjogJXNcIiBrZXkgc2V4cF9zdHIpXG4gICAgICB8IExpc3QgWyAoQXRvbSBzdHIgYXMgc2V4cCk7IHYgXSA6OiByZXN0IHdoZW4gc3RyID0ga2V5IC0+XG4gICAgICAgIGxldCBzdWJzdCB4ID0gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoTGlzdCBbIHNleHA7IHggXSA6OiByZXN0KSkgaW5cbiAgICAgICAgc3Vic3QsIHZcbiAgICAgIHwgaCA6OiB0IC0+IGxvb3AgKGggOjogYWNjKSB0XG4gICAgaW5cbiAgICBsb29wIFtdIGxzdFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcmVjXCIgc2V4cFxuOztcblxubGV0IGlkIHggPSB4XG5cbmxldCByZWMgc3Vic3Rfb3B0aW9uIChzdXBfc3Vic3QsIGVsKSByZXN0ID1cbiAgbGV0IHN1Yl9zdWJzdCwgc3ViX2VsID0gc3Vic3RfcGF0aCBlbCByZXN0IGluXG4gIGxldCBzdWJzdCB4ID0gc3VwX3N1YnN0IChTb21lIChzdWJfc3Vic3QgeCkpIGluXG4gIHN1YnN0LCBzdWJfZWxcblxuYW5kIHN1YnN0X3BhdGggc2V4cCA9IGZ1bmN0aW9uXG4gIHwgUG9zIG4gOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfcG9zIG4gc2V4cCkgdFxuICB8IE1hdGNoICh0YWcsIGFyZ19peCkgOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCBzZXhwKSB0XG4gIHwgUmVjIGtleSA6OiByZXN0IC0+XG4gICAgbGV0IHJlY19zdWJzdCwgZWwgPSBleHRyYWN0X3JlYyBrZXkgc2V4cCBpblxuICAgIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICAgIGxldCBzdWJzdCB4ID0gcmVjX3N1YnN0IChzdWJfc3Vic3QgeCkgaW5cbiAgICBzdWJzdCwgc3ViX2VsXG4gIHwgW10gLT4gaWQsIHNleHBcbjs7XG5cbmxldCBpbXBsb2RlIGxzdCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGl4ID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgQnl0ZXMuc2V0IHN0ciBpeCBoO1xuICAgICAgbG9vcCAoaXggKyAxKSB0XG4gICAgfCBbXSAtPiBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuICBpblxuICBsb29wIDAgbHN0XG47O1xuXG5sZXQgZmFpbF9wYXJzZSBtc2cgPSBmYWlsd2l0aCAoXCJQYXRoLnBhcnNlOiBcIiBeIG1zZylcblxubGV0IHBhcnNlIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gZmFpbF9wYXJzZSBcInBhdGggZW1wdHlcIlxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgYWNjIGRvdF9peCA9XG4gICAgICBtYXRjaCBzdHIuW2RvdF9peF0gd2l0aFxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IGRvdF9peDEgPSBkb3RfaXggKyAxIGluXG4gICAgICAgIGlmIGRvdF9peDEgPSBsZW5cbiAgICAgICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBwYXJzZV9kb3QgYWNjIHN0cl9hY2MgaXggPVxuICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIFJlYyAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYykpIF1cbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICAgICAgICAgIHwgJ1snIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBwYXJzZV9pbmRleCBpbmRleF9hY2MgaXggPVxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgICAgICAgIHRoZW4gZmFpbF9wYXJzZSBcIkVPRiByZWFkaW5nIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSwgaW5kZXhfYWNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IChTb21lIChpbnRfb2ZfY2hhciBjIC0gNDgpKSAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICgnMCcgLi4gJzknIGFzIGMpLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfaW5kZXhfYWNjID0gU29tZSAoKDEwICogaW5kZXhfYWNjKSArIGludF9vZl9jaGFyIGMgLSA0OCkgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCBuZXdfaW5kZXhfYWNjIChpeCArIDEpXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBOb25lIC0+IGZhaWxfcGFyc2UgXCJlbXB0eSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBQb3MgaW5kZXhfYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hdGNoIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSwgaW5kZXhfYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGl4MSA9IGl4ICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4MSA9IGxlblxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIHBhdGhfZWwgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbG9vcCAocGF0aF9lbCA6OiBhY2MpIGl4MVxuICAgICAgICAgICAgICAgICAgICB8IGMsIF8gLT4gZmFpbF9wYXJzZSAoc3ByaW50ZiBcImlsbGVnYWwgY2hhcmFjdGVyIGluIGluZGV4OiAlY1wiIGMpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggTm9uZSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICdcXFxcJyAtPlxuICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgYWZ0ZXIgZXNjYXBlXCJcbiAgICAgICAgICAgICAgICBlbHNlIHBhcnNlX2RvdCBhY2MgKHN0ci5baXgxXSA6OiBzdHJfYWNjKSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXSB0aGVuIGZhaWxfcGFyc2UgXCJkb3VibGUgJy4nXCI7XG4gICAgICAgICAgICAgICAgbGV0IHBhdGhfZWwgPSBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2RvdCAocGF0aF9lbCA6OiBhY2MpIFtdIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgYyAtPiBwYXJzZV9kb3QgYWNjIChjIDo6IHN0cl9hY2MpIChpeCArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZG90IGFjYyBbXSBkb3RfaXgxKVxuICAgICAgfCBjIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCInLicgZXhwZWN0ZWQ7IGdvdCAnJWMnXCIgYylcbiAgICBpblxuICAgIGxvb3AgW10gMClcbjs7XG5cbmxldCBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCA9XG4gIGxldCBwYXRoID1cbiAgICBtYXRjaCBwYXRoLCBzdHIgd2l0aFxuICAgIHwgU29tZSBwYXRoLCBfIC0+IHBhdGhcbiAgICB8IE5vbmUsIFNvbWUgc3RyIC0+IHBhcnNlIHN0clxuICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICBpblxuICBzdWJzdF9wYXRoIHNleHAgcGF0aFxuOztcblxubGV0IGdldCA/cGF0aCA/c3RyIHNleHAgPSBzbmQgKGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwKVxuXG5sZXQgcmVwbGFjZSA/cGF0aCA/c3RyIHNleHAgfnN1YnN0ID1cbiAgbGV0IHN1YnN0X2Z1biwgXyA9IGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwIGluXG4gIHN1YnN0X2Z1biBzdWJzdFxuOztcblxubGV0IHJlcGxhY2Vfbm9fcGF0aCB+c3RyIHNleHAgfnN1YnN0ID0gcmVwbGFjZSB+c3RyIHNleHAgfnN1YnN0XG4iLCJsZXQgcmVnaXN0ZXIgZXhjIGV4Y19uYW1lID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIF9leGMgLT5cbiAgICBTZXhwLkF0b20gZXhjX25hbWUpXG47O1xuXG5sZXQgbWFnaWNfZmllbGQgcmVwciBuID0gT2JqLm1hZ2ljIChPYmouZmllbGQgcmVwciBuKVxuXG5sZXQgcmVnaXN0ZXIxIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDEgXSlcbjs7XG5cbmxldCByZWdpc3RlcjIgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDIgXSlcbjs7XG5cbmxldCByZWdpc3RlcjMgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiBzZXhwX29mX2FyZzMgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI0IG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczIHNleHBfb2ZfYXJnNCA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNCBdKVxuOztcblxubGV0IHJlZ2lzdGVyNVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI2XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDYgXSlcbjs7XG5cbmxldCByZWdpc3RlcjdcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNyBdKVxuOztcblxubGV0IHJlZ2lzdGVyOFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDY7IHNleHA3OyBzZXhwOCBdKVxuOztcblxubGV0IHJlZ2lzdGVyOVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgXSlcbjs7XG5cbmxldCByZWdpc3RlcjEwXG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gICAgICBzZXhwX29mX2FyZzlcbiAgICAgIHNleHBfb2ZfYXJnMTBcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBsZXQgc2V4cDkgPSBzZXhwX29mX2FyZzkgKG1hZ2ljX2ZpZWxkIHJlcHIgOSkgaW5cbiAgICBsZXQgc2V4cDEwID0gc2V4cF9vZl9hcmcxMCAobWFnaWNfZmllbGQgcmVwciAxMCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lXG4gICAgICA7IHNleHAxXG4gICAgICA7IHNleHAyXG4gICAgICA7IHNleHAzXG4gICAgICA7IHNleHA0XG4gICAgICA7IHNleHA1XG4gICAgICA7IHNleHA2XG4gICAgICA7IHNleHA3XG4gICAgICA7IHNleHA4XG4gICAgICA7IHNleHA5XG4gICAgICA7IHNleHAxMFxuICAgICAgXSlcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBcIkZhc3QgU3BsaXR0YWJsZSBQc2V1ZG9yYW5kb20gTnVtYmVyIEdlbmVyYXRvcnNcIiBieSBTdGVlbGUgZXQuXG4gICAgYWwuICgxKS4gIFRoZSBwYXBlcidzIGFsZ29yaXRobSBwcm92aWRlcyBkZWNlbnQgcmFuZG9tbmVzcyBmb3IgbW9zdCBwdXJwb3NlcywgYnV0XG4gICAgc2FjcmlmaWNlcyBjcnlwdG9ncmFwaGljLXF1YWxpdHkgcmFuZG9tbmVzcyBpbiBmYXZvciBvZiBwZXJmb3JtYW5jZS4gIFRoZSBvcmlnaW5hbFxuICAgIGltcGxlbWVudGF0aW9uIHdhcyB0ZXN0ZWQgd2l0aCBEaWVIYXJkZXIgYW5kIEJpZ0NydXNoOyBzZWUgdGhlIHBhcGVyIGZvciBkZXRhaWxzLlxuXG4gICAgT3VyIGltcGxlbWVudGF0aW9uIGlzIGEgcG9ydCBmcm9tIEphdmEgdG8gT0NhbWwgb2YgdGhlIHBhcGVyJ3MgYWxnb3JpdGhtLiAgT3RoZXIgdGhhblxuICAgIHRoZSBjaG9pY2Ugb2YgaW5pdGlhbCBzZWVkIGZvciBbY3JlYXRlXSwgb3VyIHBvcnQgc2hvdWxkIGJlIGZhaXRoZnVsLiAgV2UgaGF2ZSBub3RcbiAgICByZS1ydW4gdGhlIERpZUhhcmRlciBvciBCaWdDcnVzaCB0ZXN0cyBvbiBvdXIgaW1wbGVtZW50YXRpb24uICBPdXIgcG9ydCBpcyBhbHNvIG5vdCBhc1xuICAgIHBlcmZvcm1hbnQgYXMgdGhlIG9yaWdpbmFsOyB0d28gZmFjdG9ycyB0aGF0IGh1cnQgdXMgYXJlIGJveGVkIFtpbnQ2NF0gdmFsdWVzIGFuZCBsYWNrXG4gICAgb2YgYSBQT1BDTlQgcHJpbWl0aXZlLlxuXG4gICAgKDEpIGh0dHA6Ly8yMDE0LnNwbGFzaGNvbi5vcmcvZXZlbnQvb29wc2xhMjAxNC1mYXN0LXNwbGl0dGFibGUtcHNldWRvcmFuZG9tLW51bWJlci1nZW5lcmF0b3JzXG4gICAgKGFsc28gbWlycm9yZWQgYXQgaHR0cDovL2dlZS5jcy5vc3dlZ28uZWR1L2RsL3BhcGVycy9vb3BzbGExNC5wZGYpXG5cbiAgICBCZXdhcmUgd2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2U7IGl0IGlzIGVhc3kgdG8gaW1wbGVtZW50IGEgW3NwbGl0XSBvcGVyYXRpb25cbiAgICB3aG9zZSBvdXRwdXQgaXMgbm90IGFzIFwiaW5kZXBlbmRlbnRcIiBhcyBpdCBzZWVtcyAoMikuICBUaGlzIGJ1ZyBjYXVzZWQgcHJvYmxlbXMgZm9yXG4gICAgSGFza2VsbCdzIFF1aWNrY2hlY2sgbGlicmFyeSBmb3IgYSBsb25nIHRpbWUuXG5cbiAgICAoMikgU2NoYWF0aHVuLCBcIkV2YWx1YXRpb24gb2Ygc3BsaXR0YWJsZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnNcIiwgSkZQIDIwMTUuXG4gICAgaHR0cDovL3d3dy5oZy5zY2hhYXRodW4ubmV0L3Jlc2VhcmNoL1BhcGVycy9oZ3MyMDE1amZwLnBkZlxuKilcblxub3BlbiEgQmFzZVxub3BlbiAgSW50NjQuT1xuXG5sZXQgaXNfb2RkIHggPSB4IGxvciAxTCA9IHhcblxubGV0IHBvcGNvdW50ID0gSW50NjQucG9wY291bnRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2VlZCA6IGludDY0XG4gICAgOyBvZGRfZ2FtbWEgICAgOiBpbnQ2NFxuICAgIH1cblxuICBsZXQgZ29sZGVuX2dhbW1hID0gMHg5ZTM3Xzc5YjlfN2Y0YV83YzE1TFxuXG4gIGxldCBvZl9pbnQgc2VlZCA9XG4gICAgeyBzZWVkICAgICAgPSBJbnQ2NC5vZl9pbnQgc2VlZFxuICAgIDsgb2RkX2dhbW1hID0gZ29sZGVuX2dhbW1hXG4gICAgfVxuXG4gIGxldCBjb3B5IHsgc2VlZCA7IG9kZF9nYW1tYSB9ID0geyBzZWVkIDsgb2RkX2dhbW1hIH1cblxuICBsZXQgbWl4X2JpdHMgeiBuID1cbiAgICB6IGx4b3IgKHogbHNyIG4pXG5cbiAgbGV0IG1peDY0IHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhmZjUxX2FmZDdfZWQ1NV84Y2NkTCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhjNGNlX2I5ZmVfMWE4NV9lYzUzTCBpblxuICAgIG1peF9iaXRzIHogMzNcblxuICBsZXQgbWl4NjRfdmFyaWFudDEzIHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzApICogMHhiZjU4XzQ3NmRfMWNlNF9lNWI5TCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMjcpICogMHg5NGQwXzQ5YmJfMTMzMV8xMWViTCBpblxuICAgIG1peF9iaXRzIHogMzFcblxuICBsZXQgbWl4X29kZF9nYW1tYSB6ID1cbiAgICBsZXQgeiA9IChtaXg2NF92YXJpYW50MTMgeikgbG9yIDFMIGluXG4gICAgbGV0IG4gPSBwb3Bjb3VudCAoeiBseG9yICh6IGxzciAxKSkgaW5cbiAgICAoKiBUaGUgb3JpZ2luYWwgcGFwZXIgdXNlcyBbPj1dIGluIHRoZSBjb25kaXRpb25hbCBpbW1lZGlhdGVseSBiZWxvdzsgaG93ZXZlciB0aGlzIGlzXG4gICAgICAgYSB0eXBvLCBhbmQgd2UgY29ycmVjdCBpdCBieSB1c2luZyBbPF0uIFRoaXMgd2FzIGZpeGVkIGluIHJlc3BvbnNlIHRvIFsxXSBhbmQgWzJdLlxuXG4gICAgICAgWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3NwbGl0dGFibGVfcmFuZG9tL2lzc3Vlcy8xXG4gICAgICAgWzJdIGh0dHA6Ly93d3cucGNnLXJhbmRvbS5vcmcvcG9zdHMvYnVncy1pbi1zcGxpdG1peC5odG1sXG4gICAgKilcbiAgICBpZiBJbnQuKCA8ICkgbiAyNFxuICAgIHRoZW4geiBseG9yIDB4YWFhYV9hYWFhX2FhYWFfYWFhYUxcbiAgICBlbHNlIHpcblxuICBsZXQldGVzdF91bml0IFwib2RkIGdhbW1hXCIgPVxuICAgIGZvciBpbnB1dCA9IC0xXzAwMF8wMDAgdG8gMV8wMDBfMDAwIGRvXG4gICAgICBsZXQgb3V0cHV0ID0gbWl4X29kZF9nYW1tYSAoSW50NjQub2ZfaW50IGlucHV0KSBpblxuICAgICAgaWYgbm90IChpc19vZGQgb3V0cHV0KSB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgICAgXCJnYW1tYSB2YWx1ZSBpcyBub3Qgb2RkXCJcbiAgICAgICAgICAgIChpbnB1dCAgOiBpbnQpXG4gICAgICAgICAgICAob3V0cHV0IDogaW50NjQpXVxuICAgIGRvbmVcblxuICBsZXQgbmV4dF9zZWVkIHQgPVxuICAgIGxldCBuZXh0ID0gdC5zZWVkICsgdC5vZGRfZ2FtbWEgaW5cbiAgICB0LnNlZWQgPC0gbmV4dDtcbiAgICBuZXh0XG5cbiAgbGV0IG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYSA9XG4gICAgbGV0IHNlZWQgICAgICA9IG1peDY0ICAgICAgICAgc2VlZCAgaW5cbiAgICBsZXQgb2RkX2dhbW1hID0gbWl4X29kZF9nYW1tYSBnYW1tYSBpblxuICAgIHsgc2VlZDsgb2RkX2dhbW1hIH1cblxuICBsZXQgcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSA9XG4gICAgUmFuZG9tLlN0YXRlLmludDY0X2luY2wgcmFuZG9tX3N0YXRlIEludDY0Lm1pbl92YWx1ZSBJbnQ2NC5tYXhfdmFsdWVcblxuICBsZXQgY3JlYXRlIHJhbmRvbV9zdGF0ZSA9XG4gICAgbGV0IHNlZWQgID0gcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSBpblxuICAgIGxldCBnYW1tYSA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgc3BsaXQgdCA9XG4gICAgbGV0IHNlZWQgID0gbmV4dF9zZWVkIHQgaW5cbiAgICBsZXQgZ2FtbWEgPSBuZXh0X3NlZWQgdCBpblxuICAgIG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYVxuXG4gIGxldCBuZXh0X2ludDY0IHQgPSBtaXg2NCAobmV4dF9zZWVkIHQpXG5cbiAgKCogW3BlcnR1cmJdIGlzIG5vdCBmcm9tIGFueSBleHRlcm5hbCBzb3VyY2UsIGJ1dCBwcm92aWRlcyBhIHdheSB0byBtaXggaW4gZXh0ZXJuYWxcbiAgICAgZW50cm9weSB3aXRoIGEgcHNldWRvLXJhbmRvbSBzdGF0ZS4gKilcbiAgbGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIG1peDY0IChJbnQ2NC5vZl9pbnQgc2FsdCkgaW5cbiAgICB0LnNlZWQgPC0gbmV4dFxuXG5lbmRcblxubGV0IGJvb2wgc3RhdGUgPSBpc19vZGQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIFdlIGFidXNlIHRlcm1pbm9sb2d5IGFuZCByZWZlciB0byBpbmRpdmlkdWFsIHZhbHVlcyBhcyBiaWFzZWQgb3IgdW5iaWFzZWQuICBNb3JlXG4gICBwcm9wZXJseSwgd2hhdCBpcyB1bmJpYXNlZCBpcyB0aGUgc2FtcGxlciB0aGF0IHJlc3VsdHMgaWYgd2Uga2VlcCBvbmx5IHRoZXNlIFwidW5iaWFzZWRcIlxuICAgdmFsdWVzLiAqKVxubGV0IHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgfmRyYXdcbiAgICAgIH5yZW1haW5kZXJcbiAgICAgIH5kcmF3X21heGltdW1cbiAgICAgIH5yZW1haW5kZXJfbWF4aW11bVxuICA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgZHJhdyAtIHJlbWFpbmRlciA8PSBkcmF3X21heGltdW0gLSByZW1haW5kZXJfbWF4aW11bVxuXG5sZXQldGVzdF91bml0IFwicmVtYWluZGVyX2lzX3VuYmlhc2VkXCIgPVxuICAoKiBjaG9vc2luZyBhIHJhbmdlIG9mIDEwIHZhbHVlcyBiYXNlZCBvbiBhIHJhbmdlIG9mIDEwNSB2YWx1ZXMgKilcbiAgbGV0IGRyYXdfbWF4aW11bSA9IDEwNEwgaW5cbiAgbGV0IHJlbWFpbmRlcl9tYXhpbXVtID0gOUwgaW5cbiAgbGV0IGlzX3VuYmlhc2VkIGRyYXcgPVxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyByZW1haW5kZXJfbWF4aW11bSkgaW5cbiAgICByZW1haW5kZXJfaXNfdW5iaWFzZWQgfmRyYXcgfnJlbWFpbmRlciB+ZHJhd19tYXhpbXVtIH5yZW1haW5kZXJfbWF4aW11bVxuICBpblxuICBmb3IgaSA9IDAgdG8gOTkgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OnRydWVcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMTAwIHRvIDEwNCBkb1xuICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAoaXNfdW5iaWFzZWQgKEludDY0Lm9mX2ludCBpKSlcbiAgICAgIH5leHBlY3Q6ZmFsc2VcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmVcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBib3VuZGVkIHJhbmRvbW5lc3MgaXMgYWRhcHRlZCBmcm9tIFtSYW5kb20uU3RhdGUuaW50Kl0gaW4gdGhlXG4gICBPQ2FtbCBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhlIHB1cnBvc2UgaXMgdG8gdXNlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0b1xuICAgW25leHRfaW50NjRdIHRvIHByb2R1Y2UgYSBudW1iZXIgdW5pZm9ybWx5IGNob3NlbiB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLiAqKVxubGV0IGludDY0ID1cbiAgbGV0IG9wZW4gSW50NjQuTyBpblxuICBsZXQgcmVjIGJldHdlZW4gc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGluXG4gICAgaWYgbG8gPD0gZHJhdyAmJiBkcmF3IDw9IGhpXG4gICAgdGhlbiBkcmF3XG4gICAgZWxzZSBiZXR3ZWVuIHN0YXRlIH5sbyB+aGlcbiAgaW5cbiAgbGV0IHJlYyBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGxhbmQgSW50NjQubWF4X3ZhbHVlIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDY0LnJlbSBkcmF3IChJbnQ2NC5zdWNjIG1heGltdW0pIGluXG4gICAgaWYgcmVtYWluZGVyX2lzX3VuYmlhc2VkXG4gICAgICAgICB+ZHJhd1xuICAgICAgICAgfnJlbWFpbmRlclxuICAgICAgICAgfmRyYXdfbWF4aW11bTpJbnQ2NC5tYXhfdmFsdWVcbiAgICAgICAgIH5yZW1haW5kZXJfbWF4aW11bTptYXhpbXVtXG4gICAgdGhlbiByZW1haW5kZXJcbiAgICBlbHNlIG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBtYXhpbXVtXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbG8gPiBoaSB0aGVuIGJlZ2luXG4gICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludDY0OiBjcm9zc2VkIGJvdW5kc1wiIChsbyA6IGludDY0KSAoaGkgOiBpbnQ2NCldXG4gICAgZW5kO1xuICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgIGlmIGRpZmYgPSBJbnQ2NC5tYXhfdmFsdWVcbiAgICB0aGVuICgoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSkgbGFuZCBJbnQ2NC5tYXhfdmFsdWUpICsgbG9cbiAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICB0aGVuIChub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgZGlmZikgKyBsb1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG5cbmxldCBpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9pbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQzMiBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfaW50MzIgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50MzIgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnQzMl90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IG5hdGl2ZWludCBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfbmF0aXZlaW50IGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX25hdGl2ZWludCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX25hdGl2ZWludF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGludDYzIHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2My50b19pbnQ2NCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2My50b19pbnQ2NCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDYzLm9mX2ludDY0X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgZG91YmxlX3VscCA9IDIuICoqLiAtNTMuXG5cbmxldCV0ZXN0X3VuaXQgXCJkb3VibGVfdWxwXCIgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPlxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAxLjApO1xuICAgIGFzc2VydCAoMS4wIC0uIChkb3VibGVfdWxwIC8uIDIuMCkgPSAxLjApXG4gIHwgVzMyIC0+XG4gICAgKCogMzItYml0IE9DYW1sIHVzZXMgYSA2NC1iaXQgZmxvYXQgcmVwcmVzZW50YXRpb24gYnV0IDgwLWJpdCBmbG9hdCBpbnN0cnVjdGlvbnMsIHNvXG4gICAgICAgcm91bmRpbmcgd29ya3MgZGlmZmVyZW50bHkgZHVlIHRvIHRoZSBjb252ZXJzaW9uIGJhY2sgYW5kIGZvcnRoLiAqKVxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApIDw9IDEuMClcblxubGV0IHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCBpbnQ2NCA9XG4gIChJbnQ2NC50b19mbG9hdCAoaW50NjQgbHNyIDExKSkgKi4gZG91YmxlX3VscFxuXG5sZXQldGVzdF91bml0IFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPSBiZWdpblxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4MDAwMF8wMDAwXzAwMDBfMDAwMEwgPSAwLik7XG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZkwgPCAxLjApO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMID0gKDEuMCAtLiBkb3VibGVfdWxwKSk7XG5lbmRcblxubGV0IHVuaXRfZmxvYXQgc3RhdGUgPVxuICB1bml0X2Zsb2F0X2Zyb21faW50NjQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIE5vdGUgYWJvdXQgcm91bmRvZmYgZXJyb3I6XG5cbiAgIEFsdGhvdWdoIFtmbG9hdCBzdGF0ZSB+bG8gfmhpXSBpcyBub21pbmFsbHkgaW5jbHVzaXZlIG9mIGVuZHBvaW50cywgd2UgYXJlIHJlbHlpbmcgb25cbiAgIHRoZSBmYWN0IHRoYXQgW3VuaXRfZmxvYXRdIG5ldmVyIHJldHVybnMgMS4sIGJlY2F1c2UgdGhlcmUgYXJlIHBhaXJzIFsobG8saGkpXSBmb3JcbiAgIHdoaWNoIFtsbyArLiAxLiAqLiAoaGkgLS4gbG8pID4gaGldLiAgVGhlcmUgYXJlIGFsc28gcGFpcnMgWyhsbyxoaSldIGFuZCB2YWx1ZXMgb2YgW3hdXG4gICB3aXRoIFt4IDwgMS5dIHN1Y2ggdGhhdCBbbG8gKy4geCAqLiAoaGkgLS4gbG8pID0gaGldLCBzbyBpdCB3b3VsZCBub3QgYmUgY29ycmVjdCB0b1xuICAgZG9jdW1lbnQgdGhpcyBhcyBiZWluZyBleGNsdXNpdmUgb2YgW2hpXS5cbiopXG5sZXQgZmxvYXQgPVxuICBsZXQgcmVjIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpID1cbiAgICBsZXQgcmFuZ2UgPSBoaSAtLiBsbyBpblxuICAgIGlmIEZsb2F0LmlzX2Zpbml0ZSByYW5nZVxuICAgIHRoZW4gKGxvICsuICh1bml0X2Zsb2F0IHN0YXRlICouIHJhbmdlKSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICAoKiBJZiBbaGkgLSBsb10gaXMgaW5maW5pdGUsIHRoZW4gW2hpICsgbG9dIGlzIGZpbml0ZSBiZWNhdXNlIFtoaV0gYW5kIFtsb10gaGF2ZVxuICAgICAgICAgb3Bwb3NpdGUgc2lnbnMuICopXG4gICAgICBsZXQgbWlkID0gKGhpICsuIGxvKSAvLiAyLiBpblxuICAgICAgaWYgYm9vbCBzdGF0ZVxuICAgICAgKCogRGVwZW5kaW5nIG9uIHJvdW5kaW5nLCB0aGUgcmVjdXJzaW9uIHdpdGggW35oaTptaWRdIG1pZ2h0IGJlIGluY2x1c2l2ZSBvZiBbbWlkXSxcbiAgICAgICAgIHdoaWNoIHdvdWxkIG1lYW4gdGhlIHR3byBjYXNlcyBvdmVybGFwIG9uIFttaWRdLiBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gaW5jcmVtZW50XG4gICAgICAgICBvciBkZWNyZW1lbnQgW21pZF0gdXNpbmcgW29uZV91bHBdIGluIGVpdGhlciBvZiB0aGUgY2FsbHMsIGJ1dCB0aGVuIGlmIHRoZSBmaXJzdFxuICAgICAgICAgY2FzZSBpcyBleGNsdXNpdmUgd2UgbGVhdmUgYSBcImdhcFwiIGJldHdlZW4gdGhlIHR3byByYW5nZXMuIFRoZXJlJ3Mgbm8gcGVyZmVjdGx5XG4gICAgICAgICB1bmlmb3JtIHNvbHV0aW9uLCBzbyB3ZSB1c2UgdGhlIHNpbXBsZXIgY29kZSB0aGF0IGRvZXMgbm90IGNhbGwgW29uZV91bHBdLiAqKVxuICAgICAgdGhlbiBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaTptaWRcbiAgICAgIGVsc2UgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbzptaWQgfmhpXG4gICAgZW5kXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgbG8gJiYgRmxvYXQuaXNfZmluaXRlIGhpKVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgbm90IGZpbml0ZSBudW1iZXJzXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGlmIEZsb2F0LiggPiApIGxvIGhpXG4gICAgdGhlbiBiZWdpblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgXCJmbG9hdDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpXG5cbmxldCViZW5jaF9mdW4gXCJ1bml0X2Zsb2F0X2Zyb21faW50NjRcIiA9XG4gIGxldCBpbnQ2NCA9IDFMIGluXG4gIGZ1biAoKSAtPiB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjRcblxubW9kdWxlIExvZ191bmlmb3JtID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlIChNIDogc2lnIGluY2x1ZGUgSW50LlMgdmFsIHVuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0IGVuZCkgOiBzaWdcbiAgICB2YWwgbG9nX3VuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOk0udCAtPiBoaTpNLnQgLT4gTS50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gTVxuXG4gICAgbGV0IGJpdHNfdG9fcmVwcmVzZW50IHQgPVxuICAgICAgYXNzZXJ0ICh0ID49IHplcm8pO1xuICAgICAgbGV0IHQgPSByZWYgdCBpblxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgd2hpbGUgIXQgPiB6ZXJvIGRvXG4gICAgICAgIHQgOj0gc2hpZnRfcmlnaHQgIXQgMTtcbiAgICAgICAgSW50LmluY3IgbjtcbiAgICAgIGRvbmU7XG4gICAgICAhblxuXG4gICAgbGV0JXRlc3RfdW5pdCBcImJpdHNfdG9fcmVwcmVzZW50XCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBpbnRdIChiaXRzX3RvX3JlcHJlc2VudCBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDApICAgMDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxKSAgIDE7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMikgICAyO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDMpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA0KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNSkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDYpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA3KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gOCkgICA0O1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDEwMCkgNztcbiAgICAgIHRlc3QgTS5tYXhfdmFsdWUgKEludC5wcmVkIE0ubnVtX2JpdHMpO1xuICAgIDs7XG5cbiAgICBsZXQgbWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIGlmIEludC5lcXVhbCBuIDBcbiAgICAgIHRoZW4gemVyb1xuICAgICAgZWxzZSBzaGlmdF9sZWZ0IG9uZSAoSW50LnByZWQgbilcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzXCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBNLnRdIChtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4pIH5leHBlY3QgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAyKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDQpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gOCk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biA2NCk7XG4gICAgICB0ZXN0IChJbnQucHJlZCBNLm51bV9iaXRzKSAoTS5zaGlmdF9yaWdodF9sb2dpY2FsIE0ubWluX3ZhbHVlIDEpO1xuICAgIDs7XG5cbiAgICBsZXQgbWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIHByZWQgKHNoaWZ0X2xlZnQgb25lIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWF4X3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAwIChNLm9mX2ludF9leG4gMCk7XG4gICAgICB0ZXN0IDEgKE0ub2ZfaW50X2V4biAxKTtcbiAgICAgIHRlc3QgMiAoTS5vZl9pbnRfZXhuIDMpO1xuICAgICAgdGVzdCAzIChNLm9mX2ludF9leG4gNyk7XG4gICAgICB0ZXN0IDQgKE0ub2ZfaW50X2V4biAxNSk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biAxMjcpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgTS5tYXhfdmFsdWU7XG4gICAgOztcblxuICAgIGxldCBsb2dfdW5pZm9ybSBzdGF0ZSB+bG8gfmhpID1cbiAgICAgIGxldCBtaW5fYml0cyA9IGJpdHNfdG9fcmVwcmVzZW50IGxvIGluXG4gICAgICBsZXQgbWF4X2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBoaSBpblxuICAgICAgbGV0IGJpdHMgPSBpbnQgc3RhdGUgfmxvOm1pbl9iaXRzIH5oaTptYXhfYml0cyBpblxuICAgICAgdW5pZm9ybSBzdGF0ZVxuICAgICAgICB+bG86KG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtYXggbG8pXG4gICAgICAgIH5oaToobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBiaXRzIHw+IG1pbiBoaSlcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9pbnQgICAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQgICAgICAgbGV0IHVuaWZvcm0gPSBpbnQgICAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDMyICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDMyICAgICBsZXQgdW5pZm9ybSA9IGludDMyICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjMgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjMgICAgIGxldCB1bmlmb3JtID0gaW50NjMgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQ2NCAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQ2NCAgICAgbGV0IHVuaWZvcm0gPSBpbnQ2NCAgICAgZW5kKVxuICBtb2R1bGUgRm9yX25hdGl2ZWludCA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIE5hdGl2ZWludCBsZXQgdW5pZm9ybSA9IG5hdGl2ZWludCBlbmQpXG5cbiAgbGV0IGludCAgICAgICA9IEZvcl9pbnQubG9nX3VuaWZvcm1cbiAgbGV0IGludDMyICAgICA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjMgICAgID0gRm9yX2ludDYzLmxvZ191bmlmb3JtXG4gIGxldCBpbnQ2NCAgICAgPSBGb3JfaW50NjQubG9nX3VuaWZvcm1cbiAgbGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1cbmVuZFxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBzdWNjIDogaW50NjQgLT4gaW50NjRcbigqKiBTdWNjZXNzb3IuICBbSW50NjQuc3VjYyB4XSBpcyBbSW50NjQuYWRkIHggSW50NjQub25lXS4gKilcblxudmFsIHByZWQgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFByZWRlY2Vzc29yLiAgW0ludDY0LnByZWQgeF0gaXMgW0ludDY0LnN1YiB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBhYnMgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFthYnMgeF0gaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIFt4XS4gT24gW21pbl9pbnRdIHRoaXNcbiAgIGlzIFttaW5faW50XSBpdHNlbGYgYW5kIHRodXMgcmVtYWlucyBuZWdhdGl2ZS4gKilcblxudmFsIG1heF9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBncmVhdGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAye142M30gLSAxLiAqKVxuXG52YWwgbWluX2ludCA6IGludDY0XG4oKiogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIC0ye142M30uICopXG5cbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgYW5kLiAqKVxuXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBvci4gKilcblxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBleGNsdXNpdmUgb3IuICopXG5cbnZhbCBsb2dub3QgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIEJpdHdpc2UgbG9naWNhbCBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG4oKiogW0ludDY0LnNoaWZ0X2xlZnQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSBsZWZ0IGJ5IFt5XSBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhbiBhcml0aG1ldGljIHNoaWZ0OiB0aGUgc2lnbiBiaXQgb2YgW3hdIGlzIHJlcGxpY2F0ZWRcbiAgIGFuZCBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYSBsb2dpY2FsIHNoaWZ0OiB6ZXJvZXMgYXJlIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHNcbiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpZ24gb2YgW3hdLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBpbnRlZ2VyICh0eXBlIFtpbnRdKSB0byBhIDY0LWJpdCBpbnRlZ2VyXG4gICAgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYW5cbiAgIGludGVnZXIgKHR5cGUgW2ludF0pLiAgT24gNjQtYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteNjN9LCBpLmUuIHRoZSBoaWdoLW9yZGVyIGJpdCBpcyBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMX0sIGkuZS4gdGhlIHRvcCAzMyBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICopXG5cbnZhbCB1bnNpZ25lZF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgb3B0aW9uXG4oKiogU2FtZSBhcyB7IXRvX2ludH0sIGJ1dCBpbnRlcnByZXRzIHRoZSBhcmd1bWVudCBhcyBhbiB7ZSB1bnNpZ25lZH0gaW50ZWdlci5cbiAgICBSZXR1cm5zIFtOb25lXSBpZiB0aGUgdW5zaWduZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBmaXQgaW50byBhblxuICAgIFtpbnRdLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzICopXG5cbnZhbCBtaW46IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjEgKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMSAqKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTGF5b3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpZ2FycmF5LmxheW91dFxuXG4gIGxldCBvZmZzZXQgOiB0eXBlIGEuIGEgdCAtPiBpbnQgPSBmdW5jdGlvblxuICAgIHwgQmlnYXJyYXkuRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIHwgQmlnYXJyYXkuQ19sYXlvdXQgLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkxLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTEuZGltIHQgLSAxIGRvXG4gICAgICBmIChpICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0fVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbSB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTEuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIChfIDogZWx0KSAtPiB0LntpfSA8LSBmIGkpO1xuICAgIHRcbiAgOztcblxuICBsZXQgZm9sZCAodHlwZSBlbHQpICh0IDogKGVsdCwgXywgXykgdCkgfmluaXQgfmYgPVxuICAgIGxldCBpbml0ID0gcmVmIGluaXQgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gaW5pdCA6PSBmICFpbml0IHQue2l9KTtcbiAgICAhaW5pdFxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkxLmxheW91dCB0KSBpblxuICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgfmY6KGZ1biBpIC0+IHQue2kgKyBvZmZzZXR9KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkxLmRpbSB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIEJpZ2FycmF5LkFycmF5Mi50XG5cbiAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQgLSAxIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCAtIDEgZG9cbiAgICAgICAgZiAoaSArIG9mZnNldCkgKGogKyBvZmZzZXQpIHQue2kgKyBvZmZzZXQsIGogKyBvZmZzZXR9XG4gICAgICBkb25lXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpbml0ICh0eXBlIGVsdCkgKGtpbmQgOiAoZWx0LCBfKSBCaWdhcnJheS5raW5kKSBsYXlvdXQgZGltMSBkaW0yIH5mID1cbiAgICBsZXQgdCA9IEJpZ2FycmF5LkFycmF5Mi5jcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgaiAoXyA6IGVsdCkgLT4gdC57aSwgan0gPC0gZiBpIGopO1xuICAgIHRcbiAgOztcblxuICBsZXQgZm9sZCAodHlwZSBlbHQpICh0IDogKGVsdCwgXywgXykgdCkgfmluaXQgfmYgPVxuICAgIGxldCBpbml0ID0gcmVmIGluaXQgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gKF8gOiBpbnQpIChfIDogaW50KSBlbHQgLT4gaW5pdCA6PSBmICFpbml0IGVsdCk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMSB0KSB+ZjooZnVuIGkgLT5cbiAgICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQpIH5mOihmdW4gaiAtPiB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fSkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBfc2V4cF9vZl9wYWNrIF9zZXhwX29mX2xheW91dCB0ID1cbiAgICBbJXNleHAgKHRvX2FycmF5IHQgOiBlbHQgYXJyYXkgYXJyYXkpXVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGQgaGFzaF9mb2xkX2VsdCBzdGF0ZSB0ID1cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMSB0KSBpblxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQpIGluXG4gICAgZm9sZCB0IH5pbml0OnN0YXRlIH5mOmhhc2hfZm9sZF9lbHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSAtPiBzaXplOmludCAtPiBoYXNoOkhhc2guc3RhdGUgLT4gSGFzaC5zdGF0ZVxuXG5sZXQgY3JlYXRlIGYgOiBfIHQgPSBmXG5cbmxldCBvYnNlcnZlICh0IDogXyB0KSB4IH5zaXplIH5oYXNoID1cbiAgaWYgc2l6ZSA8IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vYnNlcnZlOiBzaXplIDwgMFwiIChzaXplIDogaW50KV1cbiAgZWxzZSB0IHggfnNpemUgfmhhc2hcbjs7XG5cbmxldCBvcGFxdWUgXyB+c2l6ZTpfIH5oYXNoID0gaGFzaFxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICsnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgZ2VuZXJhdGUgOiAnYSB0IC0+IHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhKSBTdGFnZWQudFxuXG4gIGxldCBjcmVhdGUgZiA6IF8gdCA9IFN0YWdlZC5zdGFnZSBmXG5cbiAgbGV0IGdlbmVyYXRlICh0IDogXyB0KSB+c2l6ZSB+cmFuZG9tID1cbiAgICBpZiBzaXplIDwgMFxuICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmdlbmVyYXRlOiBzaXplIDwgMFwiIChzaXplIDogaW50KV1cbiAgICBlbHNlIFN0YWdlZC51bnN0YWdlIHQgfnNpemUgfnJhbmRvbVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgc2l6ZSA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb206XyAtPiBzaXplKVxuXG5sZXQgZm4gZG9tIHJuZyA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuc3BsaXQgcmFuZG9tIGluXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBoYXNoID0gT2JzZXJ2ZXIwLm9ic2VydmUgZG9tIHggfnNpemUgfmhhc2g6KEhhc2guYWxsb2MgKCkpIGluXG4gICAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY29weSByYW5kb20gaW5cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpO1xuICAgICAgZ2VuZXJhdGUgcm5nIH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgd2l0aF9zaXplIHQgfnNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgcGVydHVyYiB0IHNhbHQgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUucGVydHVyYiByYW5kb20gc2FsdDtcbiAgICBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIH5zaXplIH5yYW5kb20gPVxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IFNvbWUgeSAtPiB5XG4gICAgfCBOb25lIC0+IGxvb3AgfnNpemU6KHNpemUgKyAxKSB+cmFuZG9tXG4gIGluXG4gIGNyZWF0ZSBsb29wXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5sZXQgcmV0dXJuIHggPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb206XyAtPiB4KVxubGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBmIChnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pKVxuXG5sZXQgYXBwbHkgdGYgdHggPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGYgPSBnZW5lcmF0ZSB0ZiB+c2l6ZSB+cmFuZG9tIGluXG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0eCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgZiB4KVxuOztcblxubGV0IGJpbmQgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIGdlbmVyYXRlIChmIHgpIH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgYWxsIGxpc3QgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QubWFwIGxpc3QgfmY6KGdlbmVyYXRlIH5zaXplIH5yYW5kb20pKVxuXG5sZXQgYWxsX3VuaXQgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gTGlzdC5pdGVyIGxpc3QgfmY6KGdlbmVyYXRlIH5zaXplIH5yYW5kb20pKVxuOztcblxubW9kdWxlIEZvcl9hcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgYm90aCA9IEZvcl9hcHBsaWNhdGl2ZS5ib3RoXG5sZXQgbWFwMiA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAyXG5sZXQgbWFwMyA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAzXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IEZvcl9hcHBsaWNhdGl2ZS5BcHBsaWNhdGl2ZV9pbmZpeFxuaW5jbHVkZSBBcHBsaWNhdGl2ZV9pbmZpeFxuXG5tb2R1bGUgRm9yX21vbmFkID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgaWdub3JlX20gPSBGb3JfbW9uYWQuaWdub3JlX21cbmxldCBqb2luID0gRm9yX21vbmFkLmpvaW5cblxubW9kdWxlIE1vbmFkX2luZml4ID0gRm9yX21vbmFkLk1vbmFkX2luZml4XG5pbmNsdWRlIE1vbmFkX2luZml4XG5tb2R1bGUgTGV0X3N5bnRheCA9IEZvcl9tb25hZC5MZXRfc3ludGF4XG5vcGVuIExldF9zeW50YXhcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGlmIExpc3QuaXNfZW1wdHkgbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgYXJyYXkgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgbGV0IGxvID0gMCBpblxuICBsZXQgaGkgPSBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBpbmRleCA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvIH5oaSBpblxuICAgIGFycmF5LihpbmRleCkpXG47O1xuXG5sZXQgdW5pb24gbGlzdCA9IGpvaW4gKG9mX2xpc3QgbGlzdClcblxubGV0IG9mX3dlaWdodGVkX2xpc3QgYWxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGFsaXN0XG4gIHRoZW4gRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IGVtcHR5IGxpc3RcIl07XG4gIGxldCB3ZWlnaHRzLCB2YWx1ZXMgPSBMaXN0LnVuemlwIGFsaXN0IGluXG4gIGxldCB2YWx1ZV9hcnJheSA9IEFycmF5Lm9mX2xpc3QgdmFsdWVzIGluXG4gIGxldCB0b3RhbF93ZWlnaHQsIGN1bXVsYXRpdmVfd2VpZ2h0X2FycmF5ID1cbiAgICBsZXQgYXJyYXkgPSBBcnJheS5pbml0IChBcnJheS5sZW5ndGggdmFsdWVfYXJyYXkpIH5mOihmdW4gXyAtPiAwLikgaW5cbiAgICBsZXQgc3VtID1cbiAgICAgIExpc3QuZm9sZGkgd2VpZ2h0cyB+aW5pdDowLiB+ZjooZnVuIGluZGV4IGFjYyB3ZWlnaHQgLT5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgd2VpZ2h0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB3ZWlnaHQgaXMgbm90IGZpbml0ZVwiXG4gICAgICAgICAgICAgICAgKHdlaWdodCA6IGZsb2F0KV07XG4gICAgICAgIGlmIEZsb2F0LiggPCApIHdlaWdodCAwLlxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB3ZWlnaHQgaXMgbmVnYXRpdmVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBsZXQgY3VtdWxhdGl2ZSA9IGFjYyArLiB3ZWlnaHQgaW5cbiAgICAgICAgYXJyYXkuKGluZGV4KSA8LSBjdW11bGF0aXZlO1xuICAgICAgICBjdW11bGF0aXZlKVxuICAgIGluXG4gICAgaWYgRmxvYXQuKCA8PSApIHN1bSAwLlxuICAgIHRoZW5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB0b3RhbCB3ZWlnaHQgaXMgemVyb1wiXTtcbiAgICBzdW0sIGFycmF5XG4gIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBjaG9pY2UgPSBTcGxpdHRhYmxlX3JhbmRvbS5mbG9hdCByYW5kb20gfmxvOjAuIH5oaTp0b3RhbF93ZWlnaHQgaW5cbiAgICBtYXRjaFxuICAgICAgQXJyYXkuYmluYXJ5X3NlYXJjaFxuICAgICAgICBjdW11bGF0aXZlX3dlaWdodF9hcnJheVxuICAgICAgICB+Y29tcGFyZTpGbG9hdC5jb21wYXJlXG4gICAgICAgIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgICAgY2hvaWNlXG4gICAgd2l0aFxuICAgIHwgU29tZSBpbmRleCAtPiB2YWx1ZV9hcnJheS4oaW5kZXgpXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB3ZWlnaHRlZF91bmlvbiBhbGlzdCA9IGpvaW4gKG9mX3dlaWdodGVkX2xpc3QgYWxpc3QpXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGdlbmVyYXRlIChmb3JjZSBsYXp5X3QpIH5zaXplIH5yYW5kb20pXG5cbmxldCBmaXhlZF9wb2ludCBvZl9nZW5lcmF0b3IgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX2dlbmVyYXRvciAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBmb3JjZSBsYXp5X3Rcbjs7XG5cbmxldCB3ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb24gbm9ucmVjX2xpc3QgfmYgPVxuICBmaXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgcmVjX2xpc3QgPVxuICAgICAgTGlzdC5tYXAgKGYgc2VsZikgfmY6KGZ1biAodywgdCkgLT5cbiAgICAgICAgKCB3XG4gICAgICAgICwgbGV0JWJpbmQgbiA9IHNpemUgaW5cbiAgICAgICAgICB3aXRoX3NpemUgfnNpemU6KG4gLSAxKSB0ICkpXG4gICAgaW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IG5vbnJlY19saXN0IHx8IExpc3QuaXNfZW1wdHkgcmVjX2xpc3RcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci53ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb246IGxpc3RzIG11c3QgYmUgbm9uLWVtcHR5XCJdO1xuICAgIGxldCBub25yZWNfZ2VuID0gd2VpZ2h0ZWRfdW5pb24gbm9ucmVjX2xpc3QgaW5cbiAgICBsZXQgcmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIChub25yZWNfbGlzdCBAIHJlY19saXN0KSBpblxuICAgIG1hdGNoJWJpbmQgc2l6ZSB3aXRoXG4gICAgfCAwIC0+IG5vbnJlY19nZW5cbiAgICB8IF8gLT4gcmVjX2dlbilcbjs7XG5cbmxldCByZWN1cnNpdmVfdW5pb24gbm9ucmVjX2xpc3QgfmYgPVxuICBsZXQgd2VpZ2h0ZWQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6KGZ1biB0IC0+IDEuLCB0KSBpblxuICB3ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb24gKHdlaWdodGVkIG5vbnJlY19saXN0KSB+ZjooZnVuIHNlbGYgLT4gd2VpZ2h0ZWQgKGYgc2VsZikpXG47O1xuXG5sZXQgc2l6ZXMgPyhtaW5fbGVuZ3RoID0gMCkgPyhtYXhfbGVuZ3RoID0gSW50Lm1heF92YWx1ZSkgKCkgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgYXNzZXJ0IChtaW5fbGVuZ3RoIDw9IG1heF9sZW5ndGgpO1xuICAgIGxldCB1cHBlcl9ib3VuZCA9IG1pbl9sZW5ndGggKyBzaXplIGluXG4gICAgbGV0IG1heF9sZW5ndGggPVxuICAgICAgaWYgdXBwZXJfYm91bmQgPj0gbWluX2xlbmd0aCAoKiBndWFyZCBhZ2FpbnN0IG92ZXJmbG93ICopXG4gICAgICB0aGVuIG1pbiBtYXhfbGVuZ3RoIHVwcGVyX2JvdW5kXG4gICAgICBlbHNlIG1heF9sZW5ndGhcbiAgICBpblxuICAgICgqIHBpY2sgYSBsZW5ndGgsIHdlaWdodGVkIGxvdyBzbyB0aGF0IG1vc3Qgb2YgdGhlIHNpemUgaXMgc3BlbnQgb24gZWxlbWVudHMgKilcbiAgICBsZXQgbGVuID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86bWluX2xlbmd0aCB+aGk6bWF4X2xlbmd0aCBpblxuICAgICgqIGlmIHRoZXJlIGFyZSBubyBlbGVtZW50cyByZXR1cm4gYW4gZW1wdHkgYXJyYXksIG90aGVyd2lzZSByZXR1cm4gYSBub24tZW1wdHkgYXJyYXlcbiAgICAgICB3aXRoIHRoZSBzaXplIGRpc3RyaWJ1dGVkIGFtb25nIHRoZSBlbGVtZW50cyAqKVxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFtdXG4gICAgZWxzZSAoXG4gICAgICBsZXQgc2l6ZXMgPSBBcnJheS5pbml0IGxlbiB+ZjooZnVuIF8gLT4gMCkgaW5cbiAgICAgIGxldCByZW1haW5pbmcgPSBzaXplIC0gKGxlbiAtIG1pbl9sZW5ndGgpIGluXG4gICAgICBsZXQgbWF4X2luZGV4ID0gbGVuIC0gMSBpblxuICAgICAgZm9yIF8gPSAxIHRvIHJlbWFpbmluZyBkb1xuICAgICAgICAoKiBwaWNrIGFuIGluZGV4LCB3ZWlnaHRlZCBsb3cgc28gdGhhdCB3ZSBzZWUgdW5iYWxhbmNlZCBkaXN0cmlidXRpb25zIG9mdGVuICopXG4gICAgICAgIGxldCBpbmRleCA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOm1heF9pbmRleCBpblxuICAgICAgICBzaXplcy4oaW5kZXgpIDwtIHNpemVzLihpbmRleCkgKyAxXG4gICAgICBkb25lO1xuICAgICAgKCogcGVybXV0ZSB0aGUgYXJyYXkgc28gdGhhdCBubyBpbmRleCBpcyBmYXZvcmVkIG92ZXIgYW5vdGhlciAqKVxuICAgICAgZm9yIGkgPSAwIHRvIG1heF9pbmRleCAtIDEgZG9cbiAgICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgQXJyYXkuc3dhcCBzaXplcyBpIGpcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgKEFycmF5LnN1bSAobW9kdWxlIEludCkgc2l6ZXMgfmY6Rm4uaWQgKyAobGVuIC0gbWluX2xlbmd0aCkgPSBzaXplKTtcbiAgICAgIEFycmF5LnRvX2xpc3Qgc2l6ZXMpKVxuOztcblxubGV0IHVuaXQgPSByZXR1cm4gKClcbmxldCBib29sID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IFNwbGl0dGFibGVfcmFuZG9tLmJvb2wgcmFuZG9tKVxubGV0IG9wdGlvbiB2YWx1ZV90ID0gdW5pb24gWyByZXR1cm4gTm9uZTsgbWFwIHZhbHVlX3QgfmY6T3B0aW9uLnJldHVybiBdXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID0gdW5pb24gWyBtYXAgZnN0X3QgfmY6RWl0aGVyLmZpcnN0OyBtYXAgc25kX3QgfmY6RWl0aGVyLnNlY29uZCBdXG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICB8IFNlY29uZCBlcnIgLT4gRXJyb3IgZXJyKVxuOztcblxubGV0IGxpc3RfZ2VuZXJpYyA/bWluX2xlbmd0aCA/bWF4X2xlbmd0aCBlbHRfZ2VuID1cbiAgbGV0JWJpbmQgc2l6ZXMgPSBzaXplcyA/bWluX2xlbmd0aCA/bWF4X2xlbmd0aCAoKSBpblxuICBMaXN0Lm1hcCBzaXplcyB+ZjooZnVuIHNpemUgLT4gd2l0aF9zaXplIH5zaXplIGVsdF9nZW4pIHw+IGFsbFxuOztcblxubGV0IGxpc3QgZWx0X2dlbiA9IGxpc3RfZ2VuZXJpYyBlbHRfZ2VuXG5sZXQgbGlzdF9ub25fZW1wdHkgZWx0X2dlbiA9IGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDoxIGVsdF9nZW5cblxubGV0IGxpc3Rfd2l0aF9sZW5ndGggZWx0X2dlbiB+bGVuZ3RoID1cbiAgbGlzdF9nZW5lcmljIH5taW5fbGVuZ3RoOmxlbmd0aCB+bWF4X2xlbmd0aDpsZW5ndGggZWx0X2dlblxuOztcblxubGV0IGxpc3RfZmlsdGVyZWQgZWx0cyA9XG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBsZW5ndGhfb2ZfaW5wdXQgPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgbGVuZ3RoX29mX291dHB1dCA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmxlbmd0aF9vZl9pbnB1dCBpblxuICAgIGxldCBpbmRpY2VzID0gQXJyYXkuaW5pdCBsZW5ndGhfb2ZfaW5wdXQgfmY6Rm4uaWQgaW5cbiAgICAoKiBDaG9vc2UgW2xlbmd0aF9vZl9vdXRwdXRdIHJhbmRvbSB2YWx1ZXMgaW4gdGhlIHByZWZpeCBvZiBbaW5kaWNlc10uICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aF9vZl9vdXRwdXQgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOmkgfmhpOihsZW5ndGhfb2ZfaW5wdXQgLSAxKSBpblxuICAgICAgQXJyYXkuc3dhcCBpbmRpY2VzIGkgalxuICAgIGRvbmU7XG4gICAgKCogU29ydCB0aGUgY2hvc2VuIGluZGljZXMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHJlb3JkZXIgdGhlbS4gKilcbiAgICBBcnJheS5zb3J0IGluZGljZXMgfnBvczowIH5sZW46bGVuZ3RoX29mX291dHB1dCB+Y29tcGFyZTpJbnQuY29tcGFyZTtcbiAgICAoKiBSZXR1cm4gdGhlIGNob3NlbiBlbGVtZW50cy4gKilcbiAgICBMaXN0LmluaXQgbGVuZ3RoX29mX291dHB1dCB+ZjooZnVuIGkgLT4gZWx0cy4oaW5kaWNlcy4oaSkpKSlcbjs7XG5cbmxldCBsaXN0X3Blcm11dGF0aW9ucyBsaXN0ID1cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDEgZG9cbiAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86MCB+aGk6aSBpblxuICAgICAgQXJyYXkuc3dhcCBhcnJheSBpIGpcbiAgICBkb25lO1xuICAgIEFycmF5LnRvX2xpc3QgYXJyYXkpXG47O1xuXG5sZXQgYXJyYXkgdCA9IG1hcCAobGlzdCB0KSB+ZjpBcnJheS5vZl9saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsXG5cbmxldCBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86KENoYXIudG9faW50IGxvKSB+aGk6KENoYXIudG9faW50IGhpKVxuICAgIHw+IENoYXIudW5zYWZlX29mX2ludClcbjs7XG5cbmxldCBjaGFyX3VwcGVyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ0EnICdaJ1xubGV0IGNoYXJfbG93ZXJjYXNlID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnYScgJ3onXG5sZXQgY2hhcl9kaWdpdCA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJzAnICc5J1xubGV0IGNoYXJfcHJpbnRfdW5pZm9ybSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJyAnICd+J1xubGV0IGNoYXJfdW5pZm9ybSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgQ2hhci5taW5fdmFsdWUgQ2hhci5tYXhfdmFsdWVcbmxldCBjaGFyX2FscGhhID0gdW5pb24gWyBjaGFyX2xvd2VyY2FzZTsgY2hhcl91cHBlcmNhc2UgXVxuXG5sZXQgY2hhcl9hbHBoYW51bSA9XG4gIHdlaWdodGVkX3VuaW9uXG4gICAgKCogTW9zdCBwZW9wbGUgcHJvYmFibHkgZXhwZWN0IHRoaXMgdG8gYmUgYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiwgbm90IHdlaWdodGVkXG4gICAgICAgdG93YXJkIGRpZ2l0cyBsaWtlIHdlIHdvdWxkIGdldCB3aXRoIFt1bmlvbl0gKHNpbmNlIHRoZXJlIGFyZSBmZXdlciBkaWdpdHMgdGhhblxuICAgICAgIGxldHRlcnMpLiAqKVxuICAgIFsgNTIuLCBjaGFyX2FscGhhOyAxMC4sIGNoYXJfZGlnaXQgXVxuOztcblxubGV0IGNoYXJfd2hpdGVzcGFjZSA9IG9mX2xpc3QgKExpc3QuZmlsdGVyIENoYXIuYWxsIH5mOkNoYXIuaXNfd2hpdGVzcGFjZSlcbmxldCBjaGFyX3ByaW50ID0gd2VpZ2h0ZWRfdW5pb24gWyAxMC4sIGNoYXJfYWxwaGFudW07IDEuLCBjaGFyX3ByaW50X3VuaWZvcm0gXVxuXG5sZXQgY2hhciA9XG4gIHdlaWdodGVkX3VuaW9uXG4gICAgWyAxMDAuLCBjaGFyX3ByaW50XG4gICAgOyAxMC4sIGNoYXJfdW5pZm9ybVxuICAgIDsgMS4sIHJldHVybiBDaGFyLm1pbl92YWx1ZVxuICAgIDsgMS4sIHJldHVybiBDaGFyLm1heF92YWx1ZVxuICAgIF1cbjs7XG5cbigqIFByb2R1Y2VzIGEgbnVtYmVyIGZyb20gMCBvciAxIHRvIHNpemUgKyAxLCB3ZWlnaHRlZCBoaWdoLiBXZSBoYXZlIGZvdW5kIHRoaXNcbiAgIGRpc3RyaWJ1dGlvbiBlbXBpcmljYWxseSB1c2VmdWwgZm9yIHN0cmluZyBsZW5ndGhzLiAqKVxubGV0IHNtYWxsX2ludCB+YWxsb3dfemVybyA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgbG93ZXJfYm91bmQgPSBpZiBhbGxvd196ZXJvIHRoZW4gMCBlbHNlIDEgaW5cbiAgICBsZXQgdXBwZXJfYm91bmQgPSBzaXplICsgMSBpblxuICAgIGxldCB3ZWlnaHRlZF9sb3cgPVxuICAgICAgU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86MCB+aGk6KHVwcGVyX2JvdW5kIC0gbG93ZXJfYm91bmQpXG4gICAgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfaGlnaCA9IHVwcGVyX2JvdW5kIC0gd2VpZ2h0ZWRfbG93IGluXG4gICAgd2VpZ2h0ZWRfaGlnaClcbjs7XG5cbmxldCBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzp0cnVlXG5sZXQgc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50ID0gc21hbGxfaW50IH5hbGxvd196ZXJvOmZhbHNlXG5cbm1vZHVsZSB0eXBlIEludF93aXRoX3JhbmRvbSA9IHNpZ1xuICBpbmNsdWRlIEludC5TXG5cbiAgdmFsIHVuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG4gIHZhbCBsb2dfdW5pZm9ybSA6IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gbG86dCAtPiBoaTp0IC0+IHRcbmVuZFxuXG5tb2R1bGUgRm9yX2ludGVnZXIgKEludGVnZXIgOiBJbnRfd2l0aF9yYW5kb20pID0gc3RydWN0XG4gIGxldCBnZW9tZXRyaWMgbG8gfnAgPVxuICAgIGlmIEZsb2F0LmVxdWFsIHAgMS5cbiAgICB0aGVuIHJldHVybiBsb1xuICAgIGVsc2UgaWYgRmxvYXQuZXF1YWwgcCAwLlxuICAgIHRoZW4gcmV0dXJuIEludGVnZXIubWF4X3ZhbHVlXG4gICAgZWxzZSBpZiBGbG9hdC4oIDwgKSBwIDAuIHx8IEZsb2F0LiggPiApIHAgMS4gfHwgRmxvYXQuaXNfbmFuIHBcbiAgICB0aGVuXG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcImdlb21ldHJpYyBkaXN0cmlidXRpb246IHAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDFcIiAocCA6IGZsb2F0KV1cbiAgICBlbHNlIChcbiAgICAgICgqIFdlIHN0YXJ0IHdpdGggYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbi4gV2UgY29udmVydCB0byBleHBvbmVudGlhbCBkaXN0cmlidXRpb25cbiAgICAgICAgIHVzaW5nIFtsb2ddLiBXZSBjb252ZXJ0IHRvIGdlb21ldHJpYyB3aXRoIFtyb3VuZF9kb3duXS4gVGhlbiB3ZSBib3VuZHMgY2hlY2sgYW5kXG4gICAgICAgICByZXR1cm4uICopXG4gICAgICBsZXQgZGVub21pbmF0b3IgPSBGbG9hdC5sb2cxcCAoLS5wKSBpblxuICAgICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20udW5pdF9mbG9hdCByYW5kb20gaW5cbiAgICAgICAgbGV0IGV4cG9uZW50aWFsID0gRmxvYXQubG9nIHVuaWZvcm0gLy4gZGVub21pbmF0b3IgaW5cbiAgICAgICAgbGV0IGZsb2F0ID0gRmxvYXQucm91bmRfZG93biBleHBvbmVudGlhbCBpblxuICAgICAgICBtYXRjaCBJbnRlZ2VyLm9mX2Zsb2F0IGZsb2F0IHdpdGhcbiAgICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+IEludGVnZXIubWF4X3ZhbHVlXG4gICAgICAgIHwgaW50IC0+XG4gICAgICAgICAgbGV0IGludCA9IEludGVnZXIuKCArICkgbG8gaW50IGluXG4gICAgICAgICAgaWYgSW50ZWdlci4oIDwgKSBpbnQgbG8gdGhlbiBJbnRlZ2VyLm1heF92YWx1ZSBlbHNlIGludCkpXG4gIDs7XG5cbiAgbGV0IHVuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gSW50ZWdlci51bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBsb2dfdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBJbnRlZ2VyLmxvZ191bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBub25fdW5pZm9ybSBmIGxvIGhpID1cbiAgICB3ZWlnaHRlZF91bmlvbiBbIDAuMDUsIHJldHVybiBsbzsgMC4wNSwgcmV0dXJuIGhpOyAwLjksIGYgbG8gaGkgXVxuICA7O1xuXG4gIGxldCBpbmNsdXNpdmUgPSBub25fdW5pZm9ybSB1bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgbG9nX2luY2x1c2l2ZSA9IG5vbl91bmlmb3JtIGxvZ191bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgdW5pZm9ybV9hbGwgPSB1bmlmb3JtX2luY2x1c2l2ZSBJbnRlZ2VyLm1pbl92YWx1ZSBJbnRlZ2VyLm1heF92YWx1ZVxuXG4gIGxldCBhbGwgPVxuICAgIFslbWFwXG4gICAgICBsZXQgbmVnYXRpdmUgPSBib29sXG4gICAgICBhbmQgbWFnbml0dWRlID0gbG9nX2luY2x1c2l2ZSBJbnRlZ2VyLnplcm8gSW50ZWdlci5tYXhfdmFsdWUgaW5cbiAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gSW50ZWdlci5iaXRfbm90IG1hZ25pdHVkZSBlbHNlIG1hZ25pdHVkZV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2ludCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnRcbiAgZW5kKVxuXG5sZXQgaW50ID0gRm9yX2ludC5hbGxcbmxldCBpbnRfdW5pZm9ybSA9IEZvcl9pbnQudW5pZm9ybV9hbGxcbmxldCBpbnRfaW5jbHVzaXZlID0gRm9yX2ludC5pbmNsdXNpdmVcbmxldCBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmVcbmxldCBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnRfZ2VvbWV0cmljID0gRm9yX2ludC5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9pbnQzMiA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDMyXG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDMyXG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50MzJcbiAgZW5kKVxuXG5sZXQgaW50MzIgPSBGb3JfaW50MzIuYWxsXG5sZXQgaW50MzJfdW5pZm9ybSA9IEZvcl9pbnQzMi51bmlmb3JtX2FsbFxubGV0IGludDMyX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5pbmNsdXNpdmVcbmxldCBpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50MzIubG9nX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQzMl9nZW9tZXRyaWMgPSBGb3JfaW50MzIuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfaW50NjMgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQ2M1xuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDYzXG4gIGVuZClcblxubGV0IGludDYzID0gRm9yX2ludDYzLmFsbFxubGV0IGludDYzX3VuaWZvcm0gPSBGb3JfaW50NjMudW5pZm9ybV9hbGxcbmxldCBpbnQ2M19pbmNsdXNpdmUgPSBGb3JfaW50NjMuaW5jbHVzaXZlXG5sZXQgaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjMudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2M19sb2dfaW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ19pbmNsdXNpdmVcbmxldCBpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjMubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjNfZ2VvbWV0cmljID0gRm9yX2ludDYzLmdlb21ldHJpY1xuXG5tb2R1bGUgRm9yX2ludDY0ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2NFxuICBlbmQpXG5cbmxldCBpbnQ2NCA9IEZvcl9pbnQ2NC5hbGxcbmxldCBpbnQ2NF91bmlmb3JtID0gRm9yX2ludDY0LnVuaWZvcm1fYWxsXG5sZXQgaW50NjRfaW5jbHVzaXZlID0gRm9yX2ludDY0LmluY2x1c2l2ZVxubGV0IGludDY0X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDY0X2dlb21ldHJpYyA9IEZvcl9pbnQ2NC5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBOYXRpdmVpbnRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20ubmF0aXZlaW50XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0ubmF0aXZlaW50XG4gIGVuZClcblxubGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQuYWxsXG5sZXQgbmF0aXZlaW50X3VuaWZvcm0gPSBGb3JfbmF0aXZlaW50LnVuaWZvcm1fYWxsXG5sZXQgbmF0aXZlaW50X2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQuaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9sb2dfaW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5sb2dfaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2dlb21ldHJpYyA9IEZvcl9uYXRpdmVpbnQuZ2VvbWV0cmljXG5sZXQgZmxvYXRfemVyb19leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgMC5cbmxldCBmbG9hdF96ZXJvX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSAwLlxuXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9XG4gIEZsb2F0Lm9uZV91bHAgYERvd24gRmxvYXQubWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxuOztcblxubGV0IGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIEZsb2F0Lm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBmbG9hdF9tYXhfcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IEZsb2F0Lm1heF9maW5pdGVfdmFsdWVcbmxldCBmbG9hdF9taW5fbm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5taW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X25vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9pbmZfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0LmluZmluaXR5XG5sZXQgZmxvYXRfaW5mX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBGbG9hdC5pbmZpbml0eVxubGV0IGZsb2F0X25hbl9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubmFuXG5sZXQgZmxvYXRfbWluX25hbl9tYW50aXNzYSA9IEludDYzLnN1Y2MgZmxvYXRfaW5mX21hbnRpc3NhXG5sZXQgZmxvYXRfbWF4X25hbl9tYW50aXNzYSA9IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2FcbmxldCBmbG9hdF9udW1fbWFudGlzc2FfYml0cyA9IDUyXG5cbigqIFdlIHdlaWdodCBtYW50aXNzYXMgc28gdGhhdCBcImludGVnZXItbGlrZVwiIHZhbHVlcywgYW5kIHZhbHVlcyB3aXRoIG9ubHkgYSBmZXcgZGlnaXRzXG4gICBwYXN0IHRoZSBkZWNpbWFsLCBhcmUgcmVhc29uYWJseSBjb21tb24uICopXG5sZXQgZmxvYXRfbm9ybWFsX21hbnRpc3NhID1cbiAgbGV0JWJpbmQgbnVtX2JpdHMgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlIDAgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgaW5cbiAgbGV0JW1hcCBiaXRzID1cbiAgICBGb3JfaW50NjMuaW5jbHVzaXZlIEludDYzLnplcm8gKEludDYzLnByZWQgKEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzKSlcbiAgaW5cbiAgSW50NjMuc2hpZnRfbGVmdCBiaXRzIChJbnQuKCAtICkgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgbnVtX2JpdHMpXG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfbG93IGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0JW1hcCBvZmZzZXQgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmUgMCAoSW50LiggLSApIHVwcGVyX2JvdW5kIGxvd2VyX2JvdW5kKSBpblxuICBJbnQuKCArICkgbG93ZXJfYm91bmQgb2Zmc2V0XG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfaGlnaCBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCVtYXAgb2Zmc2V0ID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlIDAgKEludC4oIC0gKSB1cHBlcl9ib3VuZCBsb3dlcl9ib3VuZCkgaW5cbiAgSW50LiggLSApIHVwcGVyX2JvdW5kIG9mZnNldFxuOztcblxuKCogV2Ugd2VpZ2h0IGV4cG9uZW50cyBzdWNoIHRoYXQgdmFsdWVzIG5lYXIgMSBhcmUgbW9yZSBsaWtlbHkuICopXG5sZXQgZmxvYXRfZXhwb25lbnQgPVxuICBsZXQgbWlkcG9pbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IDEuIGluXG4gIHVuaW9uXG4gICAgWyBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9oaWdoIGZsb2F0X21pbl9ub3JtYWxfZXhwb25lbnQgbWlkcG9pbnRcbiAgICA7IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2xvdyBtaWRwb2ludCBmbG9hdF9tYXhfbm9ybWFsX2V4cG9uZW50XG4gICAgXVxuOztcblxubGV0IGZsb2F0X3plcm8gPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfemVyb19leHBvbmVudFxuICAgIH5tYW50aXNzYTpmbG9hdF96ZXJvX21hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfc3Vibm9ybWFsID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gcmV0dXJuIGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPVxuICAgIEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlIGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgZmxvYXRfbWF4X3N1Ym5vcm1hbF9tYW50aXNzYVxuICBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9ub3JtYWwgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSBmbG9hdF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPSBmbG9hdF9ub3JtYWxfbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfaW5maW5pdGUgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfaW5mX2V4cG9uZW50XG4gICAgfm1hbnRpc3NhOmZsb2F0X2luZl9tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X25hbiA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IHJldHVybiBmbG9hdF9uYW5fZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID0gRm9yX2ludDYzLmluY2x1c2l2ZSBmbG9hdF9taW5fbmFuX21hbnRpc3NhIGZsb2F0X21heF9uYW5fbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfb2ZfY2xhc3MgYyA9XG4gIG1hdGNoIChjIDogRmxvYXQuQ2xhc3MudCkgd2l0aFxuICB8IFplcm8gLT4gZmxvYXRfemVyb1xuICB8IFN1Ym5vcm1hbCAtPiBmbG9hdF9zdWJub3JtYWxcbiAgfCBOb3JtYWwgLT4gZmxvYXRfbm9ybWFsXG4gIHwgSW5maW5pdGUgLT4gZmxvYXRfaW5maW5pdGVcbiAgfCBOYW4gLT4gZmxvYXRfbmFuXG47O1xuXG5sZXQgZmxvYXRfd2VpZ2h0X29mX2NsYXNzIGMgPVxuICBtYXRjaCAoYyA6IEZsb2F0LkNsYXNzLnQpIHdpdGhcbiAgfCBaZXJvIC0+IDEuXG4gIHwgU3Vibm9ybWFsIC0+IDEwLlxuICB8IE5vcm1hbCAtPiAxMDAuXG4gIHwgSW5maW5pdGUgLT4gMS5cbiAgfCBOYW4gLT4gMS5cbjs7XG5cbmxldCBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIGZpbHRlciA9XG4gIExpc3QuZmlsdGVyX21hcCBGbG9hdC5DbGFzcy5hbGwgfmY6KGZ1biBjIC0+XG4gICAgaWYgZmlsdGVyIGMgdGhlbiBTb21lIChmbG9hdF93ZWlnaHRfb2ZfY2xhc3MgYywgZmxvYXRfb2ZfY2xhc3MgYykgZWxzZSBOb25lKVxuICB8PiB3ZWlnaHRlZF91bmlvblxuOztcblxubGV0IGZsb2F0X2Zpbml0ZSA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBaZXJvIHwgU3Vibm9ybWFsIHwgTm9ybWFsIC0+IHRydWVcbiAgICB8IEluZmluaXRlIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0X3dpdGhvdXRfbmFuID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFplcm8gfCBTdWJub3JtYWwgfCBOb3JtYWwgfCBJbmZpbml0ZSAtPiB0cnVlXG4gICAgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXQgPSBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW4gXyAtPiB0cnVlKVxuXG5sZXQgZmxvYXRfZmluaXRlX25vbl96ZXJvID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFN1Ym5vcm1hbCB8IE5vcm1hbCAtPiB0cnVlXG4gICAgfCBaZXJvIHwgSW5maW5pdGUgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUgPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGVfbm9uX3plcm8gaW5cbiAgRmxvYXQuYWJzIHRcbjs7XG5cbmxldCBmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZV9ub25femVybyBpblxuICB+LS4oRmxvYXQuYWJzIHQpXG47O1xuXG5sZXQgZmxvYXRfcG9zaXRpdmVfb3JfemVybyA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZSBpblxuICBGbG9hdC5hYnMgdFxuOztcblxubGV0IGZsb2F0X25lZ2F0aXZlX29yX3plcm8gPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGUgaW5cbiAgfi0uKEZsb2F0LmFicyB0KVxuOztcblxubGV0IGZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBpZiAobm90IChGbG9hdC5pc19maW5pdGUgbG93ZXJfYm91bmQpKSB8fCBub3QgKEZsb2F0LmlzX2Zpbml0ZSB1cHBlcl9ib3VuZClcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiBib3VuZHMgYXJlIG5vdCBmaW5pdGVcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGxldCBsb3dlcl9pbmNsdXNpdmUgPSBGbG9hdC5vbmVfdWxwIGBVcCBsb3dlcl9ib3VuZCBpblxuICBsZXQgdXBwZXJfaW5jbHVzaXZlID0gRmxvYXQub25lX3VscCBgRG93biB1cHBlcl9ib3VuZCBpblxuICBpZiBsb3dlcl9pbmNsdXNpdmUgPiB1cHBlcl9pbmNsdXNpdmVcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiByZXF1ZXN0ZWQgcmFuZ2UgaXMgZW1wdHlcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmZsb2F0IHJhbmRvbSB+bG86bG93ZXJfaW5jbHVzaXZlIH5oaTp1cHBlcl9pbmNsdXNpdmUpXG47O1xuXG5sZXQgZmxvYXRfaW5jbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgaWYgRmxvYXQuZXF1YWwgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgdGhlbiByZXR1cm4gbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBGbG9hdC4oID0gKSAoRmxvYXQub25lX3VscCBgVXAgbG93ZXJfYm91bmQpIHVwcGVyX2JvdW5kXG4gIHRoZW4gdW5pb24gWyByZXR1cm4gbG93ZXJfYm91bmQ7IHJldHVybiB1cHBlcl9ib3VuZCBdXG4gIGVsc2VcbiAgICB3ZWlnaHRlZF91bmlvblxuICAgICAgWyAwLjA1LCByZXR1cm4gbG93ZXJfYm91bmRcbiAgICAgIDsgMC4wNSwgcmV0dXJuIHVwcGVyX2JvdW5kXG4gICAgICA7IDAuOSwgZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgICAgIF1cbjs7XG5cbmxldCBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aCA9XG4gIGxpc3Rfd2l0aF9sZW5ndGggY2hhcl9nZW4gfmxlbmd0aCB8PiBtYXAgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdFxuOztcblxubGV0IHN0cmluZ19vZiBjaGFyX2dlbiA9XG4gIGJpbmQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJfZ2VuID1cbiAgYmluZCBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmcgPSBzdHJpbmdfb2YgY2hhclxubGV0IHN0cmluZ19ub25fZW1wdHkgPSBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJcbmxldCBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aCA9IHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyIH5sZW5ndGhcblxubW9kdWxlIEVkaXRfc3RyaW5nID0gc3RydWN0XG4gIGxldCBlZGl0X2luc2VydCBzdHJpbmcgPVxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfZ2VvbWV0cmljIDEgfnA6MC41IGluXG4gICAgbGV0JWJpbmQgc3RyID0gc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGg6bGVuIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyBwb3M7IHN0cjsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyBwb3MgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9yZW1vdmUgc3RyaW5nID1cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIGxlbikgaW5cbiAgICBbIFN0cmluZy5wcmVmaXggc3RyaW5nIHBvczsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyAocG9zICsgbGVuKSBdXG4gICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIHw+IHJldHVyblxuICA7O1xuXG4gIGxldCBlZGl0X3JlcGxhY2Ugc3RyaW5nID1cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIGxlbikgaW5cbiAgICBsZXQlYmluZCBzdHIgPSBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aDpsZW4gaW5cbiAgICBbIFN0cmluZy5wcmVmaXggc3RyaW5nIHBvczsgc3RyOyBTdHJpbmcuZHJvcF9wcmVmaXggc3RyaW5nIChwb3MgKyBsZW4pIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfZG91YmxlIHN0cmluZyA9XG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSBsZW4pIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyAocG9zICsgbGVuKTsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyBwb3MgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9ub25lbXB0eSBzdHJpbmcgPVxuICAgIFsgZWRpdF9pbnNlcnQgc3RyaW5nOyBlZGl0X3JlbW92ZSBzdHJpbmc7IGVkaXRfcmVwbGFjZSBzdHJpbmc7IGVkaXRfZG91YmxlIHN0cmluZyBdXG4gICAgfD4gdW5pb25cbiAgOztcblxuICBsZXQgcmVjIGVkaXQgc3RyaW5nIG5fdGltZXMgPVxuICAgIGlmIG5fdGltZXMgPD0gMFxuICAgIHRoZW4gcmV0dXJuIHN0cmluZ1xuICAgIGVsc2UgKFxuICAgICAgbGV0JWJpbmQgc3RyaW5nID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZyB0aGVuIGVkaXRfaW5zZXJ0IHN0cmluZyBlbHNlIGVkaXRfbm9uZW1wdHkgc3RyaW5nXG4gICAgICBpblxuICAgICAgZWRpdCBzdHJpbmcgKG5fdGltZXMgLSAxKSlcbiAgOztcbmVuZFxuXG5sZXQgc3RyaW5nX2xpa2Ugc3RyaW5nID1cbiAgbGV0JWJpbmQgbl90aW1lcyA9IGludF9nZW9tZXRyaWMgMCB+cDowLjUgaW5cbiAgRWRpdF9zdHJpbmcuZWRpdCBzdHJpbmcgbl90aW1lc1xuOztcblxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmdcblxubGV0IHNleHBfb2YgYXRvbSA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCViaW5kIHNpemUgPSBzaXplIGluXG4gICAgKCogY2hvb3NlIGEgbnVtYmVyIHdlaWdodGVkIGxvdyBzbyB3ZSBoYXZlIGEgZGVjcmVhc2luZywgYnV0IG5vdCB2YW5pc2hpbmcsIGNoYW5jZVxuICAgICAgIHRvIGdlbmVyYXRlIGF0b21zIGFzIHNpemUgZ3Jvd3MgKilcbiAgICBtYXRjaCViaW5kIEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgKHNpemUgKyAxKSB3aXRoXG4gICAgKCogZ2VuZXJhdGUgYW4gYXRvbSB1c2luZyB0aGUgZ2l2ZW4gc2l6ZSAqKVxuICAgIHwgMCAtPlxuICAgICAgbGV0JW1hcCBhdG9tID0gYXRvbSBpblxuICAgICAgU2V4cC5BdG9tIGF0b21cbiAgICAoKiByZWx5aW5nIG9uIFtMaXN0Lmdlbl0gdG8gZGlzdHJpYnV0ZSBbc2l6ZV0gb3ZlciBzdWItc2V4cHMgKilcbiAgICB8IF8gLT5cbiAgICAgIGxldCVtYXAgbGlzdCA9IGxpc3Qgc2VsZiBpblxuICAgICAgU2V4cC5MaXN0IGxpc3QpXG47O1xuXG5sZXQgc2V4cCA9IHNleHBfb2Ygc3RyaW5nXG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW4gPVxuICBsZXQlYmluZCBrZXlzID0gbGlzdCBrZXlfZ2VuIGluXG4gIGxldCBrZXlzID0gTGlzdC5kZWR1cF9hbmRfc29ydCBrZXlzIH5jb21wYXJlOmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gIGxldCViaW5kIGRhdGEgPSBsaXN0X3dpdGhfbGVuZ3RoIGRhdGFfZ2VuIH5sZW5ndGg6KExpc3QubGVuZ3RoIGtleXMpIGluXG4gIHJldHVybiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgKExpc3QuemlwX2V4biBrZXlzIGRhdGEpKVxuOztcblxubGV0IHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gIG1hcCAobGlzdCBlbHRfZ2VuKSB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9saXN0IH5jb21wYXJhdG9yKVxuOztcblxubGV0IGNvbXBhcmF0b3Jfb2ZfbVxuICAgICAgKHR5cGUgYSBjKVxuICAgICAgKG1vZHVsZSBNIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjKVxuICA9XG4gIE0uY29tcGFyYXRvclxuOztcblxubGV0IG1hcF90X20gbSBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW5cbiAgfD4gbWFwIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IHNldF90X20gbSBlbHRfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgfD4gbWFwIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IGJpZ2FycmF5MSB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JW1hcCBlbHRzID0gbGlzdCB0IGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBkaW0gPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IGRpbSB+ZjooZnVuIGkgLT4gZWx0cy4oaSAtIG9mZnNldCkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gYmlnYXJyYXkxIGNoYXIgQ2hhciBDX2xheW91dFxubGV0IGZsb2F0MzJfdmVjID0gYmlnYXJyYXkxIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbmxldCBiaWdhcnJheTJfZGltID1cbiAgbWF0Y2glYmluZCBzaXplIHdpdGhcbiAgfCAwIC0+IHJldHVybiAoMCwgMClcbiAgfCBtYXhfdG90YWxfc2l6ZSAtPlxuICAgIGxldCViaW5kIGEgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZV0sIHdlaWdodGVkIGxvdyB0byBnaXZlIHRoZSBvdGhlclxuICAgICAgICAgZGltZW5zaW9uIGEgZ29vZCBjaGFuY2Ugb2YgYmVpbmcgY29tcGFyYXRpdmVseSBoaWdoICopXG4gICAgICBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgbWF4X3RvdGFsX3NpemVcbiAgICBpblxuICAgIGxldCViaW5kIGIgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZSAvIGFdLCB3ZWlnaHRlZCBoaWdoIHRvIHJlYWNoIGNsb3NlIHRvXG4gICAgICAgICBbbWF4X3RvdGFsX3NpemVdIG1vc3Qgb2YgdGhlIHRpbWUgKilcbiAgICAgIGxldCBtYXhfYiA9IG1heF90b3RhbF9zaXplIC8gYSBpblxuICAgICAgbGV0JW1hcCBiX3dlaWdodGVkX2xvdyA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMCBtYXhfYiBpblxuICAgICAgbWF4X2IgLSBiX3dlaWdodGVkX2xvd1xuICAgIGluXG4gICAgKCogYXZvaWQgYW55IHNrZXcgb2YgYSB2cyBiIGJ5IHJhbmRvbWx5IHN3YXBwaW5nICopXG4gICAgaWYlbWFwIGJvb2wgdGhlbiBhLCBiIGVsc2UgYiwgYVxuOztcblxubGV0IGJpZ2FycmF5MiB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JWJpbmQgZGltMSwgZGltMiA9IGJpZ2FycmF5Ml9kaW0gaW5cbiAgbGV0JW1hcCBlbHRzID0gbGlzdF93aXRoX2xlbmd0aCB+bGVuZ3RoOmRpbTEgKGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0yIHQpIGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdF9tYXAgfmY6QXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gaSBqIC0+XG4gICAgZWx0cy4oaSAtIG9mZnNldCkuKGogLSBvZmZzZXQpKVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gYmlnYXJyYXkyIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBEZWJ1ZyA9IHN0cnVjdFxuICBsZXQgY292ZXJhZ2VcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgQ21wIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHNhbXBsZVxuICAgID1cbiAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICBzYW1wbGVcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBDbXApKVxuICAgICAgfmY6KGZ1biBjb3VudHMgdmFsdWUgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBjb3VudHMgdmFsdWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2ICsgMSkpXG4gIDs7XG5cbiAgbGV0IG1vbml0b3IgdCB+ZiA9XG4gICAgbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgZiB2YWx1ZTtcbiAgICAgIHZhbHVlKVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBzdWNjIDogaW50NjQgLT4gaW50NjRcbigqKiBTdWNjZXNzb3IuICBbSW50NjQuc3VjYyB4XSBpcyBbSW50NjQuYWRkIHggSW50NjQub25lXS4gKilcblxudmFsIHByZWQgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFByZWRlY2Vzc29yLiAgW0ludDY0LnByZWQgeF0gaXMgW0ludDY0LnN1YiB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBhYnMgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFthYnMgeF0gaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIFt4XS4gT24gW21pbl9pbnRdIHRoaXNcbiAgIGlzIFttaW5faW50XSBpdHNlbGYgYW5kIHRodXMgcmVtYWlucyBuZWdhdGl2ZS4gKilcblxudmFsIG1heF9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBncmVhdGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAye142M30gLSAxLiAqKVxuXG52YWwgbWluX2ludCA6IGludDY0XG4oKiogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIC0ye142M30uICopXG5cbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgYW5kLiAqKVxuXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBvci4gKilcblxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBleGNsdXNpdmUgb3IuICopXG5cbnZhbCBsb2dub3QgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIEJpdHdpc2UgbG9naWNhbCBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG4oKiogW0ludDY0LnNoaWZ0X2xlZnQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSBsZWZ0IGJ5IFt5XSBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhbiBhcml0aG1ldGljIHNoaWZ0OiB0aGUgc2lnbiBiaXQgb2YgW3hdIGlzIHJlcGxpY2F0ZWRcbiAgIGFuZCBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYSBsb2dpY2FsIHNoaWZ0OiB6ZXJvZXMgYXJlIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHNcbiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpZ24gb2YgW3hdLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBpbnRlZ2VyICh0eXBlIFtpbnRdKSB0byBhIDY0LWJpdCBpbnRlZ2VyXG4gICAgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYW5cbiAgIGludGVnZXIgKHR5cGUgW2ludF0pLiAgT24gNjQtYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteNjN9LCBpLmUuIHRoZSBoaWdoLW9yZGVyIGJpdCBpcyBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMX0sIGkuZS4gdGhlIHRvcCAzMyBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICopXG5cbnZhbCB1bnNpZ25lZF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgb3B0aW9uXG4oKiogU2FtZSBhcyB7IXRvX2ludH0sIGJ1dCBpbnRlcnByZXRzIHRoZSBhcmd1bWVudCBhcyBhbiB7ZSB1bnNpZ25lZH0gaW50ZWdlci5cbiAgICBSZXR1cm5zIFtOb25lXSBpZiB0aGUgdW5zaWduZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBmaXQgaW50byBhblxuICAgIFtpbnRdLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzICopXG5cbnZhbCBtaW46IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjEgKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMSAqKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYXRvbWljIDogXyB0XG4gIHZhbCBjcmVhdGUgOiAoJ2EgLT4gJ2EgU2VxdWVuY2UudCkgLT4gJ2EgdFxuICB2YWwgc2hyaW5rIDogJ2EgdCAtPiAnYSAtPiAnYSBTZXF1ZW5jZS50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGxldCBhdG9taWMgXyA9IFNlcXVlbmNlLmVtcHR5XG4gIGxldCBjcmVhdGUgPSBGbi5pZFxuICBsZXQgc2hyaW5rID0gRm4uaWRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG1hcCB0IH5mIH5mX2ludmVyc2UgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLm1hcCB+ZiAoc2hyaW5rIHQgKGZfaW52ZXJzZSB4KSkpXG5sZXQgZmlsdGVyIHQgfmYgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlciB+ZiAoc2hyaW5rIHQgeCkpXG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgfmZfaW52ZXJzZSA9XG4gIGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UuZmlsdGVyX21hcCB+ZiAoc2hyaW5rIHQgKGZfaW52ZXJzZSB4KSkpXG47O1xuXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLm9mX2xhenkgKGxhenkgKHNocmluayAoZm9yY2UgbGF6eV90KSB4KSkpXG5cbmxldCBmaXhlZF9wb2ludCBvZl9zaHJpbmtlciA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAob2Zfc2hyaW5rZXIgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgb2ZfbGF6eSBsYXp5X3Rcbjs7XG5cbmxldCBib3RoIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gKGZzdCwgc25kKSAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICBbIFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6KGZ1biBmc3QgLT4gZnN0LCBzbmQpXG4gICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6KGZ1biBzbmQgLT4gZnN0LCBzbmQpXG4gICAgICBdKVxuOztcblxubGV0IHVuaXQgPSBhdG9taWNcbmxldCBib29sID0gYXRvbWljXG5sZXQgY2hhciA9IGF0b21pY1xubGV0IGludCA9IGF0b21pY1xubGV0IGludDMyID0gYXRvbWljXG5sZXQgaW50NjMgPSBhdG9taWNcbmxldCBpbnQ2NCA9IGF0b21pY1xubGV0IG5hdGl2ZWludCA9IGF0b21pY1xubGV0IGZsb2F0ID0gYXRvbWljXG5cbmxldCBiaWdhcnJheTEgc3JjID1cbiAgbGV0IGRpbSA9IEJpZ2FycmF5LkFycmF5MS5kaW0gc3JjIGluXG4gIG1hdGNoIGRpbSB3aXRoXG4gIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICB8IF8gLT5cbiAgICBsZXQga2luZCA9IEJpZ2FycmF5LkFycmF5MS5raW5kIHNyYyBpblxuICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTEubGF5b3V0IHNyYyBpblxuICAgIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gICAgU2VxdWVuY2UuaW5pdCBkaW0gfmY6KGZ1biB0b19za2lwIC0+XG4gICAgICBsZXQgdG9fc2tpcCA9IHRvX3NraXAgKyBvZmZzZXQgaW5cbiAgICAgIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmluaXQga2luZCBsYXlvdXQgKGRpbSAtIDEpIH5mOihmdW4gaSAtPlxuICAgICAgICBzcmMue2lmIGkgPCB0b19za2lwIHRoZW4gaSBlbHNlIGkgKyAxfSkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gY3JlYXRlIGJpZ2FycmF5MVxubGV0IGZsb2F0MzJfdmVjID0gY3JlYXRlIGJpZ2FycmF5MVxubGV0IGZsb2F0NjRfdmVjID0gY3JlYXRlIGJpZ2FycmF5MVxuXG5sZXQgYmlnYXJyYXkyID1cbiAgbGV0IG1vZHVsZSBEaW1zID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZGltMSA6IGludFxuICAgICAgOyBkaW0yIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSBhID0gQmlnYXJyYXkuQXJyYXkyLnsgZGltMSA9IGRpbTEgYTsgZGltMiA9IGRpbTIgYSB9XG4gIGVuZFxuICBpblxuICBsZXQgc2hyaW5rIGZpZWxkIHNyYyA9XG4gICAgbGV0IGRpbXMgPSBEaW1zLmNyZWF0ZSBzcmMgaW5cbiAgICBtYXRjaCBGaWVsZC5nZXQgZmllbGQgZGltcyB3aXRoXG4gICAgfCAwIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBfIC0+XG4gICAgICBsZXQga2luZCA9IEJpZ2FycmF5LkFycmF5Mi5raW5kIHNyYyBpblxuICAgICAgbGV0IGxheW91dCA9IEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgc3JjIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgICAgbGV0ICh7IGRpbTE7IGRpbTIgfSA6IERpbXMudCkgPSBGaWVsZC5tYXAgZmllbGQgZGltcyB+ZjpJbnQucHJlZCBpblxuICAgICAgU2VxdWVuY2UuaW5pdCAoRmllbGQuZ2V0IGZpZWxkIGRpbXMpIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgICBsZXQgdG9fc2tpcCA9IHRvX3NraXAgKyBvZmZzZXQgaW5cbiAgICAgICAgbGV0IHNraXAgaSA9IGlmIGkgPCB0b19za2lwIHRoZW4gaSBlbHNlIGkgKyAxIGluXG4gICAgICAgIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gZGltMSBkaW0yIC0+XG4gICAgICAgICAgbGV0ICh7IGRpbTE7IGRpbTIgfSA6IERpbXMudCkgPSBGaWVsZC5tYXAgZmllbGQgeyBkaW0xOyBkaW0yIH0gfmY6c2tpcCBpblxuICAgICAgICAgIHNyYy57ZGltMSwgZGltMn0pKVxuICBpblxuICBmdW4gc3JjIC0+XG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMSBzcmM7IHNocmluayBEaW1zLkZpZWxkcy5kaW0yIHNyYyBdXG47O1xuXG5sZXQgZmxvYXQzMl9tYXQgPSBjcmVhdGUgYmlnYXJyYXkyXG5sZXQgZmxvYXQ2NF9tYXQgPSBjcmVhdGUgYmlnYXJyYXkyXG5cbmxldCBvcHRpb24gdmFsdWVfdCA9XG4gIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgIFNlcXVlbmNlLmFwcGVuZFxuICAgICAgICAoU2VxdWVuY2Uuc2luZ2xldG9uIE5vbmUpXG4gICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6T3B0aW9uLnJldHVybiAoc2hyaW5rIHZhbHVlX3QgdmFsdWUpKSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBsaXN0X3QgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIHRhaWxcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGVsdF90IGhlYWQpIH5mOihmdW4gaGVhZCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBsaXN0X3QgdGFpbCkgfmY6KGZ1biB0YWlsIC0+IGhlYWQgOjogdGFpbClcbiAgICAgICAgICBdKSlcbjs7XG5cbmxldCBzdHJpbmcgPSBtYXAgKGxpc3QgY2hhcikgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdCB+Zl9pbnZlcnNlOlN0cmluZy50b19saXN0XG5sZXQgYnl0ZXMgPSBtYXAgc3RyaW5nIH5mOkJ5dGVzLm9mX3N0cmluZyB+Zl9pbnZlcnNlOkJ5dGVzLnRvX3N0cmluZ1xubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdCB+Zl9pbnZlcnNlOkFycmF5LnRvX2xpc3RcbmxldCByZWYgdCA9IG1hcCB0IH5mOlJlZi5jcmVhdGUgfmZfaW52ZXJzZTpSZWYuKCAhIClcbmxldCBsYXp5X3QgdCA9IG1hcCB0IH5mOkxhenkuZnJvbV92YWwgfmZfaW52ZXJzZTpMYXp5LmZvcmNlXG5cbmxldCBzZXhwID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzaHJpbmtlciAtPlxuICAgIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIF8gLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgU2V4cC5MaXN0IGwgLT5cbiAgICAgICAgbGV0IHNocmlua19saXN0ID1cbiAgICAgICAgICBzaHJpbmsgKGxpc3Qgc2hyaW5rZXIpIGwgfD4gU2VxdWVuY2UubWFwIH5mOihmdW4gbCAtPiBTZXhwLkxpc3QgbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNocmlua190cmVlID0gU2VxdWVuY2Uub2ZfbGlzdCBsIGluXG4gICAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rX2xpc3Q7IHNocmlua190cmVlIF0pKVxuOztcblxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIGVpdGhlciAtPlxuICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBmc3QgLT4gU2VxdWVuY2UubWFwIChzaHJpbmsgZnN0X3QgZnN0KSB+ZjpFaXRoZXIuZmlyc3RcbiAgICB8IFNlY29uZCBzbmQgLT4gU2VxdWVuY2UubWFwIChzaHJpbmsgc25kX3Qgc25kKSB+ZjpFaXRoZXIuc2Vjb25kKVxuOztcblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgbWFwXG4gICAgKGVpdGhlciBva190IGVycl90KVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCBvayAtPiBPayBva1xuICAgICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbiAgICB+Zl9pbnZlcnNlOihmdW5jdGlvblxuICAgICAgfCBPayBvayAtPiBGaXJzdCBva1xuICAgICAgfCBFcnJvciBlcnIgLT4gU2Vjb25kIGVycilcbjs7XG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgYWxpc3QgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2FsaXN0IHRyZWUgaW5cbiAgICBsZXQgZHJvcF9rZXlzID1cbiAgICAgIFNlcXVlbmNlLm1hcCAoU2VxdWVuY2Uub2ZfbGlzdCBhbGlzdCkgfmY6KGZ1biAoaywgXykgLT5cbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBrKVxuICAgIGluXG4gICAgbGV0IHNocmlua19rZXlzID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgIGxldCB0cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBrZXkgaW5cbiAgICAgICAgICAgU2VxdWVuY2UuZmlsdGVyX21hcCAoc2hyaW5rIGtleV90IGtleSkgfmY6KGZ1biBzbWFsbGVyX2tleSAtPlxuICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLmFkZCB+Y29tcGFyYXRvciB0cmVlIH5rZXk6c21hbGxlcl9rZXkgfmRhdGFcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBgT2sgdHJlZSAtPiBTb21lIHRyZWVcbiAgICAgICAgICAgICB8IGBEdXBsaWNhdGUgLT4gTm9uZSkpKVxuICAgIGluXG4gICAgbGV0IHNocmlua19kYXRhID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgIFNlcXVlbmNlLm1hcCAoc2hyaW5rIGRhdGFfdCBkYXRhKSB+ZjooZnVuIHNtYWxsZXJfZGF0YSAtPlxuICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuc2V0IH5jb21wYXJhdG9yIHRyZWUgfmtleSB+ZGF0YTpzbWFsbGVyX2RhdGEpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9rZXlzOyBzaHJpbmtfa2V5czsgc2hyaW5rX2RhdGEgXSlcbjs7XG5cbmxldCBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90ID1cbiAgY3JlYXRlIChmdW4gdHJlZSAtPlxuICAgIGxldCBsaXN0ID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0IHRyZWUgaW5cbiAgICBsZXQgZHJvcF9lbHRzID1cbiAgICAgIFNlcXVlbmNlLm1hcCAoU2VxdWVuY2Uub2ZfbGlzdCBsaXN0KSB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdClcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgZWx0IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBlbHRfdCBlbHQpIH5mOihmdW4gc21hbGxlcl9lbHQgLT5cbiAgICAgICAgICAgICBtYXRjaCBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLm1lbSB+Y29tcGFyYXRvciB0cmVlIHNtYWxsZXJfZWx0IHdpdGhcbiAgICAgICAgICAgICB8IHRydWUgLT4gTm9uZVxuICAgICAgICAgICAgIHwgZmFsc2UgLT4gU29tZSAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgdHJlZSB+Y29tcGFyYXRvciBzbWFsbGVyX2VsdCkpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9lbHRzOyBzaHJpbmtfZWx0cyBdKVxuOztcblxubGV0IG1hcF90IGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIG1hcF90IC0+XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBtYXBfdCBpblxuICAgIGxldCB0ID1cbiAgICAgIG1hcFxuICAgICAgICAobWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QpXG4gICAgICAgIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuICAgICAgICB+Zl9pbnZlcnNlOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgICBpblxuICAgIHNocmluayB0IG1hcF90KVxuOztcblxubGV0IHNldF90IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gc2V0X3QgLT5cbiAgICBsZXQgY29tcGFyYXRvciA9IFNldC5jb21wYXJhdG9yIHNldF90IGluXG4gICAgbGV0IHQgPVxuICAgICAgbWFwXG4gICAgICAgIChzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90KVxuICAgICAgICB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbiAgICAgICAgfmZfaW52ZXJzZTpTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gICAgaW5cbiAgICBzaHJpbmsgdCBzZXRfdClcbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFRlc3RfaW50ZlxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIG1vZHVsZSBTZWVkID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9uZGV0ZXJtaW5pc3RpY1xuICAgICAgfCBEZXRlcm1pbmlzdGljIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIG1vZHVsZSBQb3RlbnRpYWxseV9pbmZpbml0ZV9zZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFNlcXVlbmNlLnRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgc2VxdWVuY2UgPVxuICAgICAgbGV0IHByZWZpeCwgc3VmZml4ID0gU2VxdWVuY2Uuc3BsaXRfbiBzZXF1ZW5jZSAxMDAgaW5cbiAgICAgIGxldCBwcmVmaXggPSBMaXN0Lm1hcCBwcmVmaXggfmY6c2V4cF9vZl9lbHQgaW5cbiAgICAgIGxldCBzdWZmaXggPVxuICAgICAgICBtYXRjaCBTZXF1ZW5jZS5pc19lbXB0eSBzdWZmaXggd2l0aFxuICAgICAgICB8IHRydWUgLT4gW11cbiAgICAgICAgfCBmYWxzZSAtPiBbIFslbWVzc2FnZSBcIi4uLlwiXSBdXG4gICAgICBpblxuICAgICAgU2V4cC5MaXN0IChwcmVmaXggQCBzdWZmaXgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHNlZWQgOiBTZWVkLnRcbiAgICA7IHRlc3RfY291bnQgOiBpbnRcbiAgICA7IHNocmlua19jb3VudCA6IGludFxuICAgIDsgc2l6ZXMgOiBpbnQgUG90ZW50aWFsbHlfaW5maW5pdGVfc2VxdWVuY2UudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuZW5kXG5cbmxldCBkZWZhdWx0X2NvbmZpZyA6IENvbmZpZy50ID1cbiAgeyBzZWVkID0gRGV0ZXJtaW5pc3RpYyBcImFuIGFyYml0cmFyeSBidXQgZGV0ZXJtaW5pc3RpYyBzdHJpbmdcIlxuICA7IHRlc3RfY291bnQgPVxuICAgICAgKCogW1NwbGl0dGFibGVfcmFuZG9tXSBpcyBiYXNlZCBvbiA2NC1iaXQgYXJpdGhtZXRpYywgYW5kIHNvIHRlc3RzIHJ1biBtdWNoIHNsb3dlclxuICAgICAgICAgb24gMzItYml0IHRhcmdldHMuIFdlIHJ1biBhbiBvcmRlciBvZiBtYWduaXR1ZGUgZmV3ZXIgdHJpYWxzIHNvIGFzIG5vdCB0b1xuICAgICAgICAgY29tcGxldGVseSBib2cgZG93biBjb250aW51b3VzIGludGVncmF0aW9uIHN5c3RlbXMuICopXG4gICAgICAobWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICAgfCBXNjQgLT4gMTBfMDAwXG4gICAgICAgfCBXMzIgLT4gMV8wMDApXG4gIDsgc2hyaW5rX2NvdW50ID0gMTBfMDAwXG4gIDsgc2l6ZXMgPSBTZXF1ZW5jZS5jeWNsZV9saXN0X2V4biAoTGlzdC5yYW5nZSAwIH5zdGFydDpgaW5jbHVzaXZlIDMwIH5zdG9wOmBpbmNsdXNpdmUpXG4gIH1cbjs7XG5cbmxldCBsYXp5X25vbmRldGVybWluaXN0aWNfc3RhdGUgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCBpbml0aWFsX3JhbmRvbV9zdGF0ZSB+Y29uZmlnID1cbiAgbWF0Y2ggQ29uZmlnLnNlZWQgY29uZmlnIHdpdGhcbiAgfCBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2UgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlKVxuICB8IERldGVybWluaXN0aWMgc3RyaW5nIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoU3RyaW5nLmhhc2ggc3RyaW5nKVxuOztcblxubGV0IG9uZV9zaXplX3Blcl90ZXN0IH4oY29uZmlnIDogQ29uZmlnLnQpID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0Oihjb25maWcuc2l6ZXMsIDApIH5mOihmdW4gKHNpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMpIC0+XG4gICAgbWF0Y2ggbnVtYmVyX29mX3NpemVfdmFsdWVzID49IGNvbmZpZy50ZXN0X2NvdW50IHdpdGhcbiAgICB8IHRydWUgLT4gTm9uZVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChtYXRjaCBTZXF1ZW5jZS5uZXh0IHNpemVzIHdpdGhcbiAgICAgICB8IFNvbWUgKHNpemUsIHJlbWFpbmluZ19zaXplcykgLT5cbiAgICAgICAgIFNvbWUgKHNpemUsIChyZW1haW5pbmdfc2l6ZXMsIG51bWJlcl9vZl9zaXplX3ZhbHVlcyArIDEpKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogaW5zdWZmaWNpZW50IHNpemUgdmFsdWVzIGZvciB0ZXN0IGNvdW50XCJcbiAgICAgICAgICAgICAgIH50ZXN0X2NvdW50Oihjb25maWcudGVzdF9jb3VudCA6IGludClcbiAgICAgICAgICAgICAgIChudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgOiBpbnQpXSkpXG47O1xuXG5sZXQgc2hyaW5rX2Vycm9yIH5zaHJpbmtlciB+Y29uZmlnIH5mIGlucHV0IGVycm9yID1cbiAgbGV0IHJlYyBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3IgPVxuICAgIG1hdGNoIHNocmlua19jb3VudCB3aXRoXG4gICAgfCAwIC0+IGlucHV0LCBlcnJvclxuICAgIHwgXyAtPlxuICAgICAgbGV0IHNocmlua19jb3VudCA9IHNocmlua19jb3VudCAtIDEgaW5cbiAgICAgIChtYXRjaCBTZXF1ZW5jZS5uZXh0IGFsdGVybmF0ZXMgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBpbnB1dCwgZXJyb3JcbiAgICAgICB8IFNvbWUgKGFsdGVybmF0ZSwgYWx0ZXJuYXRlcykgLT5cbiAgICAgICAgIChtYXRjaCBmIGFsdGVybmF0ZSB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3JcbiAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICBsZXQgYWx0ZXJuYXRlcyA9IFNocmlua2VyLnNocmluayBzaHJpbmtlciBhbHRlcm5hdGUgaW5cbiAgICAgICAgICAgIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBhbHRlcm5hdGUgZXJyb3IpKVxuICBpblxuICBsZXQgc2hyaW5rX2NvdW50ID0gQ29uZmlnLnNocmlua19jb3VudCBjb25maWcgaW5cbiAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgaW5wdXQgaW5cbiAgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG47O1xuXG5sZXQgaW5wdXRfc2VxdWVuY2UgfmNvbmZpZyB+ZXhhbXBsZXMgfmdlbmVyYXRvciA9XG4gIGxldCByYW5kb20gPSBpbml0aWFsX3JhbmRvbV9zdGF0ZSB+Y29uZmlnIGluXG4gIFNlcXVlbmNlLmFwcGVuZFxuICAgIChTZXF1ZW5jZS5vZl9saXN0IGV4YW1wbGVzKVxuICAgIChvbmVfc2l6ZV9wZXJfdGVzdCB+Y29uZmlnXG4gICAgIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIHNpemUgLT4gR2VuZXJhdG9yLmdlbmVyYXRlIGdlbmVyYXRvciB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbmxldCB3aXRoX3NhbXBsZSB+ZiA/KGNvbmZpZyA9IGRlZmF1bHRfY29uZmlnKSA/KGV4YW1wbGVzID0gW10pIGdlbmVyYXRvciA9XG4gIGxldCBzZXF1ZW5jZSA9IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgaW5cbiAgZiBzZXF1ZW5jZVxuOztcblxubGV0IHJlc3VsdCAodHlwZSBhKSB+ZiA/KGNvbmZpZyA9IGRlZmF1bHRfY29uZmlnKSA/KGV4YW1wbGVzID0gW10pIG0gPVxuICBsZXQgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID0gbSBpblxuICB3aXRoX3NhbXBsZSBNLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb25maWcgfmV4YW1wbGVzIH5mOihmdW4gc2VxdWVuY2UgLT5cbiAgICBtYXRjaFxuICAgICAgU2VxdWVuY2UuZm9sZF9yZXN1bHQgc2VxdWVuY2UgfmluaXQ6KCkgfmY6KGZ1biAoKSBpbnB1dCAtPlxuICAgICAgICBtYXRjaCBmIGlucHV0IHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChpbnB1dCwgZXJyb3IpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgICAgbGV0IHNocmlua2VyID0gTS5xdWlja2NoZWNrX3Nocmlua2VyIGluXG4gICAgICBsZXQgaW5wdXQsIGVycm9yID0gc2hyaW5rX2Vycm9yIH5zaHJpbmtlciB+Y29uZmlnIH5mIGlucHV0IGVycm9yIGluXG4gICAgICBFcnJvciAoaW5wdXQsIGVycm9yKSlcbjs7XG5cbmxldCBydW4gKHR5cGUgYSkgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGhfam9pbiB+YmFja3RyYWNlOihCYWNrdHJhY2UuRXhuLmFtX3JlY29yZGluZyAoKSkgKGZ1biAoKSAtPiBmIHgpXG4gIGluXG4gIG1hdGNoIHJlc3VsdCB+ZiA/Y29uZmlnID9leGFtcGxlcyAobW9kdWxlIE0pIHdpdGhcbiAgfCBPayAoKSAtPiBPayAoKVxuICB8IEVycm9yIChpbnB1dCwgZXJyb3IpIC0+XG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLlRlc3QucnVuOiB0ZXN0IGZhaWxlZFwiIChpbnB1dCA6IE0udCkgKGVycm9yIDogRXJyb3IudCldXG47O1xuXG5sZXQgd2l0aF9zYW1wbGVfZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciA9XG4gIGxldCBmIHggPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGYgeCkgaW5cbiAgd2l0aF9zYW1wbGUgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgZ2VuZXJhdG9yIHw+IE9yX2Vycm9yLm9rX2V4blxuOztcblxubGV0IHJ1bl9leG4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgPVxuICBsZXQgZiB4ID1cbiAgICBPcl9lcnJvci50cnlfd2l0aCB+YmFja3RyYWNlOihCYWNrdHJhY2UuRXhuLmFtX3JlY29yZGluZyAoKSkgKGZ1biAoKSAtPiBmIHgpXG4gIGluXG4gIHJ1biB+ZiA/Y29uZmlnID9leGFtcGxlcyB0ZXN0YWJsZSB8PiBPcl9lcnJvci5va19leG5cbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIE9ic2VydmVyMFxuXG5sZXQgdW5tYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSB0IChmIHgpIH5zaXplIH5oYXNoKVxubGV0IG9mX2hhc2hfZm9sZCBmID0gY3JlYXRlIChmdW4geCB+c2l6ZTpfIH5oYXNoIC0+IGYgaGFzaCB4KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmb3JjZSBsYXp5X3QpIHggfnNpemUgfmhhc2gpXG5cbmxldCBmaXhlZF9wb2ludCB3cmFwID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5ICh3cmFwIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgdW5pdCA9IG9wYXF1ZVxubGV0IGJvb2wgPSBvZl9oYXNoX2ZvbGQgQm9vbC5oYXNoX2ZvbGRfdFxubGV0IGNoYXIgPSBvZl9oYXNoX2ZvbGQgQ2hhci5oYXNoX2ZvbGRfdFxubGV0IGludCA9IG9mX2hhc2hfZm9sZCBJbnQuaGFzaF9mb2xkX3RcbmxldCBpbnQzMiA9IG9mX2hhc2hfZm9sZCBJbnQzMi5oYXNoX2ZvbGRfdFxubGV0IGludDYzID0gb2ZfaGFzaF9mb2xkIEludDYzLmhhc2hfZm9sZF90XG5sZXQgaW50NjQgPSBvZl9oYXNoX2ZvbGQgSW50NjQuaGFzaF9mb2xkX3RcbmxldCBuYXRpdmVpbnQgPSBvZl9oYXNoX2ZvbGQgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5sZXQgZmxvYXQgPSBvZl9oYXNoX2ZvbGQgRmxvYXQuaGFzaF9mb2xkX3RcbmxldCBzdHJpbmcgPSBvZl9oYXNoX2ZvbGQgU3RyaW5nLmhhc2hfZm9sZF90XG5sZXQgc2V4cCA9IG9mX2hhc2hfZm9sZCBTZXhwLmhhc2hfZm9sZF90XG5sZXQgYmlnc3RyaW5nID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2NoYXIpXG5sZXQgZmxvYXQzMl92ZWMgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQ2NF92ZWMgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQzMl9tYXQgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQ2NF9tYXQgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgYnl0ZXMgPSB1bm1hcCBzdHJpbmcgfmY6Qnl0ZXMudG9fc3RyaW5nXG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgfnNpemUgfmhhc2ggLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IG9ic2VydmUgZnN0X3QgZnN0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSlcbiAgICB8IFNlY29uZCBzbmQgLT4gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAyKSlcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIHVubWFwIChlaXRoZXIgb2tfdCBlcnJfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBPayBvayAtPiBGaXJzdCBva1xuICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgaGFzaCA9IG9ic2VydmUgZnN0X3QgZnN0IH5zaXplIH5oYXNoIGluXG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIHNuZF90IHNuZCB+c2l6ZSB+aGFzaCBpblxuICAgIGhhc2gpXG47O1xuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9wYXF1ZSB2YWx1ZV90KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRmlyc3QgKClcbiAgICB8IFNvbWUgdmFsdWUgLT4gU2Vjb25kIHZhbHVlKVxuOztcblxubGV0IGxpc3QgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biBsaXN0IH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKSBpblxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgbGV0IHNpemVzID1cbiAgICAgIEdlbmVyYXRvci5zaXplcyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoICgpXG4gICAgICB8PiBHZW5lcmF0b3IuZ2VuZXJhdGUgfnNpemUgfnJhbmRvbVxuICAgIGluXG4gICAgTGlzdC5mb2xkMl9leG4gbGlzdCBzaXplcyB+aW5pdDooaGFzaF9mb2xkX2ludCBoYXNoIDApIH5mOihmdW4gaGFzaCBlbHQgc2l6ZSAtPlxuICAgICAgb2JzZXJ2ZSBlbHRfdCBlbHQgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAxKSkpXG47O1xuXG5sZXQgYXJyYXkgdCA9IHVubWFwIChsaXN0IHQpIH5mOkFycmF5LnRvX2xpc3RcbmxldCByZWYgdCA9IHVubWFwIHQgfmY6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSB1bm1hcCB0IH5mOkxhenkuZm9yY2VcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biBmIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKSBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICAoKiBFbXBpcmljYWxseSwgZG91YmxpbmcgdGhlIHNpemUgd2hlbiBnZW5lcmF0aW5nIHRoZSBsaXN0IG9mIGlucHV0cyBnaXZlcyB1cyBtdWNoXG4gICAgICAgICBiZXR0ZXIgY292ZXJhZ2Ugb2YgdGhlIHNwYWNlIG9mIGZ1bmN0aW9ucy4gKilcbiAgICAgIEdlbmVyYXRvci5nZW5lcmF0ZSAoR2VuZXJhdG9yLnNpemVzICgpKSB+c2l6ZTooc2l6ZSAqIDIpIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZCBzaXplcyB+aW5pdDpoYXNoIH5mOihmdW4gaGFzaCBzaXplIC0+XG4gICAgICBsZXQgeCA9IEdlbmVyYXRvci5nZW5lcmF0ZSBkb20gfnNpemUgfnJhbmRvbSBpblxuICAgICAgb2JzZXJ2ZSBybmcgKGYgeCkgfnNpemUgfmhhc2gpKVxuOztcblxubGV0IG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMgPVxuICB1bm1hcCAobGlzdCAoYm90aCBrZXlfb2JzIGRhdGFfb2JzKSkgfmY6TWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdFxuOztcblxubGV0IHNldF90cmVlIGVsdF9vYnMgPSB1bm1hcCAobGlzdCBlbHRfb2JzKSB+ZjpTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2xpc3RcblxubGV0IG1hcF90IGtleV9vYnMgZGF0YV9vYnMgPVxuICB1bm1hcCAobWFwX3RyZWUga2V5X29icyBkYXRhX29icykgfmY6TWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuOztcblxubGV0IHNldF90IGVsdF9vYnMgPSB1bm1hcCAoc2V0X3RyZWUgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuIiwibW9kdWxlIEdlbmVyYXRvciA9IEdlbmVyYXRvclxubW9kdWxlIE9ic2VydmVyID0gT2JzZXJ2ZXJcbm1vZHVsZSBTaHJpbmtlciA9IFNocmlua2VyXG5tb2R1bGUgVGVzdCA9IFRlc3Rcbm1vZHVsZSBFeHBvcnQgPSBFeHBvcnRcbmluY2x1ZGUgRXhwb3J0XG5cbigqKi8qKilcblxuKCpfIFRoaXMgbW9kdWxlIGlzIGV4cG9zZWQgb25seSB0byBtYWtlIG9jYW1sZG9jIG91dHB1dCBtb3JlIHJlYWRhYmxlLiAqKVxubW9kdWxlIFdpdGhfYmFzaWNfdHlwZXMgPSBXaXRoX2Jhc2ljX3R5cGVzXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBCaWdhcnJheV9oZWxwZXJzID0gQmlnYXJyYXlfaGVscGVyc1xuZW5kXG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFVpX2VmZmVjdF9pbnRmXG5cbnR5cGUgJ2EgdCA9IC4uXG50eXBlICdhIHQgKz0gSWdub3JlIDogdW5pdCB0IHwgTWFueSA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuXG4oKiBXZSB1c2UgdGhpcyB0YWJsZSBmb3IgZGlzcGF0Y2hpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgaW4gYW4gZWZmaWNpZW50IHdheS4gICopXG50eXBlIGhpZGRlbiA9IFQgOiAoJ2EgdCAqICgnYSAtPiB1bml0KSkgLT4gaGlkZGVuXG5cbmxldCBoYW5kbGVycyA6IChoaWRkZW4gLT4gdW5pdCkgSGFzaHRibC5NKEludCkudCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KSB+c2l6ZTo4XG5cbm1vZHVsZSBEZWZpbmUgKEhhbmRsZXIgOiBIYW5kbGVyKSA6XG4gIFMgd2l0aCB0eXBlIGFjdGlvbiA6PSBIYW5kbGVyLkFjdGlvbi50IGFuZCB0eXBlICdhIHQgOj0gJ2EgdCA9IHN0cnVjdFxuICB0eXBlIF8gdCArPSBDIDogSGFuZGxlci5BY3Rpb24udCAtPiB1bml0IHRcblxuICBsZXQga2V5ID0gU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ11cblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuYWRkX2V4biBoYW5kbGVycyB+a2V5IH5kYXRhOihmdW4gaW5wIC0+XG4gICAgICBtYXRjaCBpbnAgd2l0aFxuICAgICAgfCBUIChDIHZhbHVlLCBjYWxsYmFjaykgLT5cbiAgICAgICAgSGFuZGxlci5oYW5kbGUgdmFsdWU7XG4gICAgICAgIGNhbGxiYWNrICgpXG4gICAgICB8IF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJVbnJlY29nbml6ZWQgdmFyaWFudFwiXSlcbiAgOztcblxuICBsZXQgaW5qZWN0IHYgPSBDIHZcbmVuZFxuXG5tb2R1bGUgRGVmaW5lMSAoSGFuZGxlciA6IEhhbmRsZXIxKSA6XG4gIFMxIHdpdGggdHlwZSAnYSBhY3Rpb24gOj0gJ2EgSGFuZGxlci5BY3Rpb24udCBhbmQgdHlwZSAnYSB0IDo9ICdhIHQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgKz0gQyA6ICdhIEhhbmRsZXIuQWN0aW9uLnQgLT4gJ2EgdFxuXG4gIGxldCBrZXkgPSBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDXVxuXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5hZGRfZXhuIGhhbmRsZXJzIH5rZXkgfmRhdGE6KGZ1biBpbnAgLT5cbiAgICAgIG1hdGNoIGlucCB3aXRoXG4gICAgICB8IFQgKEMgdmFsdWUsIGNhbGxiYWNrKSAtPlxuICAgICAgICBsZXQgY2FsbGVkID0gcmVmIGZhbHNlIGluXG4gICAgICAgIGxldCBjYWxsYmFjayBhID1cbiAgICAgICAgICBpZiAhY2FsbGVkXG4gICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIm9uX3Jlc3BvbnNlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyFcIlxuICAgICAgICAgIGVsc2UgY2FsbGVkIDo9IHRydWU7XG4gICAgICAgICAgY2FsbGJhY2sgYVxuICAgICAgICBpblxuICAgICAgICBIYW5kbGVyLmhhbmRsZSB2YWx1ZSB+b25fcmVzcG9uc2U6Y2FsbGJhY2tcbiAgICAgIHwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlVucmVjb2duaXplZCB2YXJpYW50XCJdKVxuICA7O1xuXG4gIGxldCBpbmplY3QgdiA9IEMgdlxuZW5kXG5cbmxldCBnZXRfa2V5IHQgPSBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCB0KSlcblxubGV0IGhhbmRsZV9yZWdpc3RlcmVkX2V2ZW50IChUICh0LCBjYikpID1cbiAgSGFzaHRibC5maW5kX2V4biBoYW5kbGVycyAoZ2V0X2tleSB0KSAoVCAodCwgY2IpKVxuOztcblxubW9kdWxlIFByaW50X3MgPSBEZWZpbmUgKHN0cnVjdFxuICAgIG1vZHVsZSBBY3Rpb24gPSBTZXhwXG5cbiAgICBsZXQgaGFuZGxlIHMgPSBTdGRpby5wcmludF9zIHNcbiAgZW5kKVxuXG5sZXQgcHJpbnRfcyA9IFByaW50X3MuaW5qZWN0XG5cbigqIEVmZmVjdGZ1bCB0aGluZ3MgKilcbnR5cGUgJ2EgdCArPVxuICB8IFJldHVybiA6ICdhIC0+ICdhIHRcbiAgfCBMYXp5IDogJ2EgdCBMYXp5LnQgLT4gJ2EgdFxuICB8IEJpbmQgOlxuICAgICAgeyB0IDogJ2EgdFxuICAgICAgOyBmIDogJ2EgLT4gJ2IgdFxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE1hcCA6XG4gICAgICB7IHQgOiAnYSB0XG4gICAgICA7IGYgOiAnYSAtPiAnYlxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE5ldmVyIDogJ2IgdFxuICB8IEZ1biA6IChjYWxsYmFjazooJ2EgLT4gdW5pdCkgLT4gdW5pdCkgLT4gJ2EgdFxuXG5sZXQgcmV0dXJuIGEgPSBSZXR1cm4gYVxubGV0IGJpbmQgKHR5cGUgYSkgKHQgOiBhIHQpIH5mID0gQmluZCB7IHQ7IGYgfVxubGV0IG1hcCAodHlwZSBhIGIpICh0IDogYSB0KSB+ZiA6IGIgdCA9IE1hcCB7IHQ7IGYgfVxubGV0IG5ldmVyID0gTmV2ZXJcbmxldCBvZl9mdW4gfmYgPSBGdW4gZlxubGV0IGxhenlfIGEgPSBMYXp5IGFcblxuaW5jbHVkZSBCYXNlLk1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IHJlYyBldmFsIDogdHlwZSBhLiBhIHQgLT4gY2FsbGJhY2s6KGEgLT4gdW5pdCkgLT4gdW5pdCA9XG4gIGZ1biB0IH5jYWxsYmFjayAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBGdW4gZiAtPiBmIH5jYWxsYmFja1xuICB8IElnbm9yZSAtPiBjYWxsYmFjayAoKVxuICB8IFJldHVybiBhIC0+IGNhbGxiYWNrIGFcbiAgfCBMYXp5IChsYXp5IHQpIC0+IGV2YWwgdCB+Y2FsbGJhY2tcbiAgfCBNYW55IGwgLT5cbiAgICBMaXN0Lml0ZXIgbCB+ZjooZXZhbCB+Y2FsbGJhY2s6aWdub3JlKTtcbiAgICBjYWxsYmFjayAoKVxuICB8IEJpbmQgeyB0OyBmIH0gLT4gZXZhbCB0IH5jYWxsYmFjazooZnVuIGEgLT4gZXZhbCAoZiBhKSB+Y2FsbGJhY2spXG4gIHwgTWFwIHsgdDsgZiB9IC0+IGV2YWwgdCB+Y2FsbGJhY2s6KGZ1biBhIC0+IGNhbGxiYWNrIChmIGEpKVxuICB8IE5ldmVyIC0+ICgpXG4gIHwgdCAtPiBoYW5kbGVfcmVnaXN0ZXJlZF9ldmVudCAoVCAodCwgY2FsbGJhY2spKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlID0gZXZhbCB+Y2FsbGJhY2s6aWdub3JlXG5cbiAgdHlwZSBoaWRlID0gaGlkZGVuID0gVCA6ICgnYSB0ICogKCdhIC0+IHVuaXQpKSAtPiBoaWRlXG5cbiAgbGV0IGhhbmRsZXJzID0gaGFuZGxlcnNcbiAgbGV0IG9mX2Z1biA9IG9mX2Z1blxuZW5kXG5cbm1vZHVsZSBBZHZhbmNlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3luY19mdW5fYXJnID0gc3RydWN0XG4gICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgdHlwZSAnciB0ID0gVCA6ICdhICogKCdhIC0+ICdyKSAtPiAnciB0XG4gICAgZW5kXG5cbiAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IG9uX3Jlc3BvbnNlIChmIGEpXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW5jX2Z1biA9IERlZmluZTEgKFN5bmNfZnVuX2FyZylcblxuICBsZXQgb2Zfc3luY19mdW4gZiBhID0gU3luY19mdW4uaW5qZWN0IChUIChhLCBmKSlcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBDYWxsYmFjayA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9XG4gICAgICAgIHsgcmVxdWVzdCA6ICdhXG4gICAgICAgIDsgb25fcmVzcG9uc2UgOiAnYiAtPiB1bml0IHRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2UgPSB7IHJlcXVlc3Q7IG9uX3Jlc3BvbnNlIH1cbiAgICAgIGxldCByZXF1ZXN0IHsgcmVxdWVzdDsgXyB9ID0gcmVxdWVzdFxuICAgICAgbGV0IHJlc3BvbmRfdG8geyBvbl9yZXNwb25zZTsgXyB9IHJlc3BvbnNlID0gb25fcmVzcG9uc2UgcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIGxldCBtYWtlIDogcmVxdWVzdDonYSAtPiBldmFsdWF0b3I6KCgnYSwgJ2IpIENhbGxiYWNrLnQgLT4gdW5pdCB0KSAtPiAnYiB0ID1cbiAgICAgIGZ1biB+cmVxdWVzdCB+ZXZhbHVhdG9yIC0+XG4gICAgICBFeHBlcnQub2ZfZnVuIH5mOihmdW4gfmNhbGxiYWNrIC0+XG4gICAgICAgIGxldCBjYWxsYmFjayA9XG4gICAgICAgICAgQ2FsbGJhY2subWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2U6KGZ1biByZXNwb25zZSAtPlxuICAgICAgICAgICAgY2FsbGJhY2sgcmVzcG9uc2U7XG4gICAgICAgICAgICBJZ25vcmUpXG4gICAgICAgIGluXG4gICAgICAgIEV4cGVydC5oYW5kbGUgKGV2YWx1YXRvciBjYWxsYmFjaykpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFN2YXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2Egc3RhdGUgPVxuICAgICAgICB8IEVtcHR5IG9mIHsgbXV0YWJsZSBoYW5kbGVycyA6ICgnYSAtPiB1bml0KSBsaXN0IH1cbiAgICAgICAgfCBGdWxsIG9mICdhXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHN0YXRlIHJlZlxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gcmVmIChFbXB0eSB7IGhhbmRsZXJzID0gW10gfSlcblxuICAgICAgbGV0IHVwb24gdCBoYW5kbGVyID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IHQgLT4gdC5oYW5kbGVycyA8LSBoYW5kbGVyIDo6IHQuaGFuZGxlcnNcbiAgICAgICAgfCBGdWxsIHggLT4gaGFuZGxlciB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmlsbF9pZl9lbXB0eSB0IHggPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRnVsbCBfIC0+ICgpXG4gICAgICAgIHwgRW1wdHkgeyBoYW5kbGVycyB9IC0+XG4gICAgICAgICAgTGlzdC5pdGVyIGhhbmRsZXJzIH5mOihmdW4gaGFuZGxlciAtPiBoYW5kbGVyIHgpO1xuICAgICAgICAgIHQgOj0gRnVsbCB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGVlayB0ID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IF8gLT4gTm9uZVxuICAgICAgICB8IEZ1bGwgeCAtPiBTb21lIHhcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3Zhcl9mdW5fYXJnID0gc3RydWN0XG4gICAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICAgIHR5cGUgJ3IgdCA9IFQgOiAnYSAqICgnYSAtPiAnciBTdmFyLnQpIC0+ICdyIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IFN2YXIudXBvbiAoZiBhKSBvbl9yZXNwb25zZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuID0gRGVmaW5lMSAoU3Zhcl9mdW5fYXJnKVxuXG4gICAgbGV0IG9mX3N2YXJfZnVuIGYgYSA9IFN2YXJfZnVuLmluamVjdCAoVCAoYSwgZikpXG5cbiAgICBtb2R1bGUgUXVlcnlfcmVzcG9uc2VfdHJhY2tlciA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ3EsICdyKSBycGMgPVxuICAgICAgICB7IHF1ZXJ5IDogJ3FcbiAgICAgICAgOyByZXNwb25zZSA6ICdyIFN2YXIudFxuICAgICAgICB9XG5cbiAgICAgIHR5cGUgKCdxLCAncikgdCA9ICgncSwgJ3IpIHJwYyBsaXN0IHJlZlxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gcmVmIFtdXG5cbiAgICAgIGxldCBhZGRfcXVlcnkgdCBxdWVyeSA9XG4gICAgICAgIGxldCByZXNwb25zZSA9IFN2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIHQgOj0geyBxdWVyeTsgcmVzcG9uc2UgfSA6OiAhdDtcbiAgICAgICAgcmVzcG9uc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWVyaWVzX3BlbmRpbmdfcmVzcG9uc2UgdCA9XG4gICAgICAgIExpc3QubWFwICF0IH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgPSBfIH0gLT4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICB0eXBlICdyIG1heWJlX3Jlc3BvbmQgPVxuICAgICAgICB8IE5vX3Jlc3BvbnNlX3lldFxuICAgICAgICB8IFJlc3BvbmQgb2YgJ3JcblxuICAgICAgbGV0IG1heWJlX3Jlc3BvbmQgdCB+ZiA9XG4gICAgICAgIHRcbiAgICAgICAgOj0gTGlzdC5maWx0ZXIgIXQgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSB9IC0+XG4gICAgICAgICAgbWF0Y2ggZiBxdWVyeSB3aXRoXG4gICAgICAgICAgfCBOb19yZXNwb25zZV95ZXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgUmVzcG9uZCByZXNwIC0+XG4gICAgICAgICAgICBTdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzcDtcbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIHFydCA9IG9mX3N2YXJfZnVuIChRdWVyeV9yZXNwb25zZV90cmFja2VyLmFkZF9xdWVyeSBxcnQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQWR2YW5jZWRcbiIsIm1vZHVsZSBEb21faHRtbCA9IHN0cnVjdFxuICBvcGVuIEpzX29mX29jYW1sLkRvbV9odG1sXG4gIG9wZW4gSnNfb2Zfb2NhbWwuSnNcblxuICAoKiBObyBqc19vZl9vY2FtbCBQUiB5ZXQuICopXG4gIGNsYXNzIHR5cGUgd2hlZWxFdmVudCA9IG9iamVjdFxuICAgIGluaGVyaXQgbW91c2VFdmVudFxuICAgIG1ldGhvZCBkZWx0YVggOiBmbG9hdCByZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbHRhWSA6IGZsb2F0IHJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVsdGFaIDogZmxvYXQgcmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZWx0YU1vZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHAsIHR5cGVyZXBdXG5cbiAgdmFsIHNpZ25lZCA6IGJvb2xcbiAgdmFsIG51bV9iaXRzIDogaW50XG4gIHZhbCBudW1fYnl0ZXMgOiBpbnRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgTyA6IHNpZ1xuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBtb2R1bGUgV3JhcCA6IHNpZ1xuICAgICAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgICBlbmRcbiAgZW5kXG5cbmVuZFxuXG5sZXQgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIEJhc2UucmFpc2VfcyBbJW1lc3NhZ2UgKG1vZF9uYW1lIF4gXCI6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZFwiKSB+XzoodG9fc3RyaW5nIHgpXVxuW0BAY29sZF1cbjs7XG5cbmxldCB0cnVuY191bnNpZ25lZCA6IHR5cGUgYSBiLiBjb252OihhIC0+IGIpIC0+IGxvZ2FuZDooYSAtPiBhIC0+IGEpIC0+IG1hc2s6YSAtPiBhIC0+IGIgPVxuICBmdW4gfmNvbnYgfmxvZ2FuZCB+bWFzayB4IC0+IGNvbnYgKGxvZ2FuZCB4IG1hc2spXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGV4bl91bnNpZ25lZFxuICA6IHR5cGUgYSBiLlxuICAgIGNvbnY6KGEgLT4gYilcbiAgICAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKVxuICAgIC0+IG1hc2s6YVxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBiXG4gID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIGNvbnYgeSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgdHJ1bmNfc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdDppbnQgLT4gYSAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCAtPiBzaGlmdF9yaWdodCAoc2hpZnRfbGVmdCB4IHNoaWZ0KSBzaGlmdFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnRfcmlnaHQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnQ6aW50XG4gICAgLT4gZXF1YWw6KGEgLT4gYSAtPiBib29sKVxuICAgIC0+IG1vZF9uYW1lOnN0cmluZ1xuICAgIC0+IHRvX3N0cmluZzooYSAtPiBzdHJpbmcpXG4gICAgLT4gYVxuICAgIC0+IGFcbiAgPVxuICBmdW4gfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeCAtPlxuICBsZXQgeSA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggaW5cbiAgaWYgZXF1YWwgeCB5IHRoZW4geSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbjs7XG5cbmxldCBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4ID1cbiAgaWYgZ3JlYXRlcl9lcXVhbCB4IHplcm8gdGhlbiB4IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9XG4gIHJhaXNlIChTZXhwbGliMC5TZXhwX2NvbnYuT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcbjs7XG5cbm1vZHVsZSBSZXByMzIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuU3lzLkltbWVkaWF0ZTY0Lk1ha2UgKEJhc2UuSW50KSAoQmFzZS5JbnQzMilcblxuICBsZXQgdG9faW50MzIgKHggOiB0KSA6IEJhc2UuSW50MzIudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiB4XG4gIDs7XG5cbiAgKCogc2lnbi1leHRlbmRpbmcgY29udmVyc2lvbiB0byBpbnQ2NCAqKVxuICBsZXQgdG9faW50NjQgKHggOiB0KSA6IEJhc2UuSW50NjQudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiBCYXNlLkludDY0Lm9mX2ludDMyIHhcbiAgOztcbmVuZFxuXG4oKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0eXBlcyAqKVxudHlwZSBpbnQ4ID0gaW50XG50eXBlIHVpbnQ4ID0gaW50XG50eXBlIGludDE2ID0gaW50XG50eXBlIHVpbnQxNiA9IGludFxudHlwZSBpbnQzMiA9IFJlcHIzMi50XG50eXBlIHVpbnQzMiA9IFJlcHIzMi50XG50eXBlIGludDYzID0gQmFzZS5JbnQ2My50XG50eXBlIHVpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSBpbnQ2NCA9IEJhc2UuSW50NjQudFxudHlwZSB1aW50NjQgPSBCYXNlLkludDY0LnRcblxubW9kdWxlIEludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMTI4XG4gIGxldCBtYXhfdmFsdWUgPSAxMjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICBsZXQgbW9kX25hbWUgPSBcIkludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfaW50MzJfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDMyLnRvX2ludF90cnVuYyAoUmVwcjMyLnRvX2ludDMyIHgpKVxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfZXhuIChSZXByMzIudG9faW50MzIgeCkpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50OCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IDI1NVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gIGxldCBtYXNrID0gMHhGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50OFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuNjQgeCA9XG4gICAgZXhuX3Vuc2lnbmVkXG4gICAgICB+Y29udlxuICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgfm1hc2s6bWFzazY0XG4gICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgfm1vZF9uYW1lXG4gICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJbnQxNiA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IC0zMjc2OFxuICBsZXQgbWF4X3ZhbHVlID0gMzI3NjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQxNlwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSA2NTUzNVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl90cnVuYyB4ID0gdHJ1bmM2NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfZXhuIHggPSBleG42NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQxNl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYWNrZW5kMzJfUyA9IHNpZ1xuICBtb2R1bGUgU2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMiA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzIgOiB0IC0+IEJhc2UuSW50MzIudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQ4IDogaW50OCAtPiB0XG4gICAgdmFsIG9mX2ludDE2IDogaW50MTYgLT4gdFxuICAgIHZhbCBvZl9pbnQ2M190cnVuYyA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogaW50NjMgLT4gdFxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IGludDY0IC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfZXhuIDogaW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDMyX3dyYXAgOiB1aW50MzIgLT4gdFxuICAgIHZhbCBvZl91aW50MzJfZXhuIDogdWludDMyIC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFVuc2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMl90cnVuYyA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfZXhuIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMl90cnVuYyA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfZXhuIDogdCAtPiBCYXNlLkludDMyLnRcbiAgICB2YWwgb2ZfYmFzZV9pbnQ2NF90cnVuYyA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfZXhuIDogQmFzZS5JbnQ2NC50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQ2NCA6IHQgLT4gQmFzZS5JbnQ2NC50XG4gICAgdmFsIG9mX2Jhc2VfaW50X2V4biA6IEJhc2UuSW50LnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludF9leG4gOiB0IC0+IEJhc2UuSW50LnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDggOiB1aW50OCAtPiB0XG4gICAgdmFsIG9mX3VpbnQxNiA6IHVpbnQxNiAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M190cnVuYyA6IHVpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M19leG4gOiB1aW50NjMgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfdHJ1bmMgOiB1aW50NjQgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfZXhuIDogdWludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2ludDMyX3dyYXAgOiBpbnQzMiAtPiB0XG4gICAgdmFsIG9mX2ludDMyX2V4biA6IGludDMyIC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJhY2tlbmQzMiA6IHNpZ1xuICB2YWwgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICAgICAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgICAgIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyIHggPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50OCB4ID0gKHggOiBJbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDE2IHggPSAoeCA6IEludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0gdHJ1bmMgeFxuICAgICAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4biB4XG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBVbnNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQub2ZfaW50NjRfdHJ1bmMgNDI5NDk2NzI5NUxcbiAgICAgIGxldCBzaWduZWQgPSBmYWxzZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gICAgICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgICAgIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgICAgIGxldCBtYXNrID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgMHhGRkZGRkZGRkxcbiAgICAgIGxldCBtYXNrNjQgPSBCYXNlLkludDY0Lm9mX2ludCBtYXNrXG4gICAgICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICAgICAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gICAgICBsZXQgbW9kX25hbWUgPSBcIlVpbnQzMlwiXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBleG42NCB4ID1cbiAgICAgICAgZXhuX3Vuc2lnbmVkXG4gICAgICAgICAgfmNvbnZcbiAgICAgICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICAgICAgfm1hc2s6bWFzazY0XG4gICAgICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgICAgICB+bW9kX25hbWVcbiAgICAgICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICAgICAgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9XG4gICAgICAgIEJhc2UuSW50NjQudG9faW50X3RydW5jIChsb2dhbmQ2NCAoQmFzZS5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrNjQpXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl90cnVuYyB4ID0gQmFzZS5JbnQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50LiggPD0gKSB4IChCYXNlLkludC5vZl9pbnQ2NF90cnVuYyAyMTQ3NDgzNjQ3TClcbiAgICAgICAgdGhlbiBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4XG4gICAgICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludC50b19pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9ICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50MzJcbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQzMlxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50MzJcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi5taW5fdmFsdWVcbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDMyLm1heF92YWx1ZVxuICAgICAgbGV0IHNpZ25lZCA9IHRydWVcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJJbnQzMlwiXG4gICAgICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQzMi50b19zdHJpbmdcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMiB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBJbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfZXhuIHggPSBCYXNlLkludDYzLnRvX2ludDMyX2V4biB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gQmFzZS5JbnQ2NC50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQzMl93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl91aW50MzJfZXhuIHggOiB0ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQzMi4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQzMi4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludDMyLiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50MzIuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50MzIuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBCYXNlLkludDMyLiggLyApXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVW5zaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50MzIudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgY29tcGFyZSB4IHkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfY29tcGFyZSB4IHkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQzMlxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50MzJcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gLTFsXG4gICAgICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJVaW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50MzIub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMEwgJiYgQmFzZS5JbnQ2NC4oIDw9ICkgeCA0Mjk0OTY3Mjk1TFxuICAgICAgICB0aGVuIEJhc2UuSW50NjQudG9faW50MzJfdHJ1bmMgeFxuICAgICAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50NjQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQzMi50b19pbnQ2NCB4KSAweEZGRkZGRkZGTFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludF9leG4geCA9XG4gICAgICAgIEJhc2UuSW50MzIub2ZfaW50X2V4biB4XG4gICAgICAgIHw+IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgICB8PiBCYXNlLkludDMyLnRvX2ludF9leG5cbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KVxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBvZl9iYXNlX2ludDY0X2V4biAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gb2ZfYmFzZV9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJWx1XCIgeClcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJWx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgICAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICAgICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgICAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICAgICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfZGl2XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpID1cbiAgICBtYXRjaCBSZXByMzIucmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBJIDogQmFja2VuZDMyX1MpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgTiA6IEJhY2tlbmQzMl9TKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnQzMiA9IHN0cnVjdFxuICBtb2R1bGUgTSA9ICh2YWwgQmFja2VuZDMyLmltcGwgOiBCYWNrZW5kMzJfUylcbiAgaW5jbHVkZSBNLlNpZ25lZFxuZW5kXG5cbm1vZHVsZSBVaW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5VbnNpZ25lZFxuZW5kXG5cbm1vZHVsZSBJbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAaW1tZWRpYXRlNjRdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2M1xuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2M1xuICBsZXQgemVybyA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2My5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjNcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjMuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBCYXNlLkludDYzLm9mX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludDYzLiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDYzLiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50NjMuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludDYzLiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQ2My4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDYzLiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50NjMuKCAvIClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICAoKiB4IGFuZCB5IGFyZSBzaWduLWV4dGVuZGVkLCB3aGljaCBwcmVzZXJ2ZXMgdGhlIGhpZ2ggYml0ICopXG4gICAgU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmUgKEJhc2UuSW50NjMudG9faW50NjQgeCkgKEJhc2UuSW50NjMudG9faW50NjQgeSlcbiAgOztcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjNcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2M1wiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyAoVWludDMyLnRvX2Jhc2VfaW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2NF9leG4gKHggOiB1aW50NjQpIDogdCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDYzX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgKHRvX2Jhc2VfaW50NjQgeCkpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2My50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHVcIiBvZl9iYXNlX2ludDY0X2V4biB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjMudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcblxuICAgICAgbGV0ICggLyApIHggeSA9XG4gICAgICAgIG9mX2Jhc2VfaW50NjRfdHJ1bmMgKEJhc2UuSW50NjQuKCAvICkgKHRvX2Jhc2VfaW50NjQgeCkgKHRvX2Jhc2VfaW50NjQgeSkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDY0LnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2NFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2NFxuICBsZXQgemVybyA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2NC5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjQubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDY0XG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjRcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjQuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjMgeCA9IEJhc2UuSW50NjMudG9faW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50NjRfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQ2NC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQ2NC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludDY0LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQ2NC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50NjQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQ2NC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDY0LiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDY0LiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDY0LiggKiApXG4gICAgICBsZXQgKCAvICkgPSBCYXNlLkludDY0LiggLyApXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50NjRcbiAgbGV0IGNvbXBhcmUgPSBTdGRsaWIuSW50NjQudW5zaWduZWRfY29tcGFyZVxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gLTFMXG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjQuKCA+PSApXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDY0XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCBleG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQ2NF90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyIHggPSBVaW50MzIudG9fYmFzZV9pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2MyAoeCA6IHVpbnQ2MykgOiBpbnQ2NCA9XG4gICAgQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSAweDdGRkZGRkZGRkZGRkZGRkZMXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgeClcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDY0LnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVMdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjQudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjQuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjQuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjQuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9kaXZcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZXQgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50OCA6IHQgLT4gcG9zOmludCAtPiBpbnQ4XG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50OCA6IHQgLT4gcG9zOmludCAtPiB1aW50OFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNlxuICB2YWwgZ2V0X2ludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDE2XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNlxuICB2YWwgZ2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTZcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MzJcbiAgdmFsIGdldF9pbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMlxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzJcbiAgdmFsIGdldF91aW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyXG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDY0XG4gIHZhbCBnZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjRcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0XG4gIHZhbCBnZXRfdWludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ4IDogdCAtPiBwb3M6aW50IC0+IGludDggLT4gdW5pdFxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IHBvczppbnQgLT4gdWludDggLT4gdW5pdFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MTYgLT4gdW5pdFxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MzIgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjQgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdldF9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB1c2UgbmF0aXZlIGVuZGlhbm5lc3MgKGhlbmNlIHRoZSBgX25lYCBzdWZmaXgpLiAqKVxuICB2YWwgZ2V0X3VpbnQ4IDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudFxuICB2YWwgZ2V0X3VpbnQxNl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnRcbiAgdmFsIGdldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudFxuICB2YWwgZ2V0X2ludDY0X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQ2NC50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHVzZSBuYXRpdmUgZW5kaWFubmVzcyAoaGVuY2UgdGhlIGBfbmVgIHN1ZmZpeCkuICopXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF91aW50MTZfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDY0LnQgLT4gdW5pdFxuZW5kXG5cbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IFN0ZGxpYi5JbnQzMi50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogU3RkbGliLkludDY0LnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbm1vZHVsZSBNYWtlX2dldCAoRiA6IEdldF9mdW5jdGlvbnMpIDogR2V0IHdpdGggdHlwZSB0IDo9IEYudCA9IHN0cnVjdFxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ4IHQgfnBvcyA9IEludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDggdCB+cG9zID0gVWludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQxNl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgSW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcbiAgOztcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgSW50MzIub2ZfYmFzZV9pbnQzMiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIFVpbnQzMi5vZl9iYXNlX2ludDMyX3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDY0X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4XG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBVaW50NjQub2ZfYmFzZV9pbnQ2NF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgTWFrZV9zZXQgKEYgOiBTZXRfZnVuY3Rpb25zKSA6IFNldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50OCB0IH5wb3MgeCA9IEYuc2V0X3VpbnQ4IHQgcG9zIHhcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ4IHQgfnBvcyB4ID0gc2V0X3VpbnQ4IHQgfnBvcyAoVWludDgub2ZfaW50OF93cmFwIHgpXG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDE2X2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4IGluXG4gICAgRi5zZXRfdWludDE2X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X3VpbnQxNl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDE2X2xlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9sZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG4gIGxldCBzZXRfaW50MTZfYmUgdCB+cG9zIHggPSBzZXRfdWludDE2X2JlIHQgfnBvcyAoVWludDE2Lm9mX2ludDE2X3dyYXAgeClcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50MzJfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gSW50MzIudG9fYmFzZV9pbnQzMiB4IGluXG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDMyX25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDMyX2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDMyX2xlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2xlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcbiAgbGV0IHNldF91aW50MzJfYmUgdCB+cG9zIHggPSBzZXRfaW50MzJfYmUgdCB+cG9zIChJbnQzMi5vZl91aW50MzJfd3JhcCB4KVxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ2NF9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDY0X2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4IGluXG4gICAgRi5zZXRfaW50NjRfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQ2NF9sZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9sZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG4gIGxldCBzZXRfdWludDY0X2JlIHQgfnBvcyB4ID0gc2V0X2ludDY0X2JlIHQgfnBvcyAoSW50NjQub2ZfdWludDY0X3dyYXAgeClcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIEJ5dGVzMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCeXRlcy50XG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9ieXRlc19nZXQzMnVcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjR1XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQxNl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuICBleHRlcm5hbCBzZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuICBleHRlcm5hbCBzZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlcylcbiAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKEJ5dGVzMFVuc2FmZSlcbiAgICBpbmNsdWRlIE1ha2Vfc2V0IChCeXRlczBVbnNhZmUpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdHJpbmcwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gU3RkbGliLkludDMyLnQgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQ2NC50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzApXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzBVbnNhZmUpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBCaWdzdHJpbmcwID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgKCBjaGFyXG4gICAgLCBTdGRsaWIuQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHRcbiAgICAsIFN0ZGxpYi5CaWdhcnJheS5jX2xheW91dCApXG4gICAgICBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLnRcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgU3RkbGliLkJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgoJ2EsICdiLCAnYykgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcblxuICBleHRlcm5hbCBkaW0gOiAoKCdhLCAnYiwgJ2MpIHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuZW5kXG5cbmluY2x1ZGUgQmlnc3RyaW5nMFxuXG5leHRlcm5hbCBhdXhfY3JlYXRlIDogbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzOmludCAtPiBzaXplOmludCAtPiB0ID0gXCJiaWdzdHJpbmdfYWxsb2NcIlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIE9uZSBuZWVkcyB0byB1c2UgW0NhbWwuU3lzLndvcmRfc2l6ZV0gc28gdGhhdCBpdHMgdmFsdWUgaXMga25vd24gYXQgY29tcGlsZS10aW1lLiAqKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3RkbGliLlN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IFN0ZGxpYi5TeXMuYmlnX2VuZGlhblxubGV0IG5vdF9vbl8zMmJpdCA9IFN0ZGxpYi5TeXMud29yZF9zaXplID4gMzJcblxubGV0IGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIHNpemUgPVxuICBsZXQgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzID1cbiAgICBPcHRpb24udmFsdWUgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5kZWZhdWx0OigtMSlcbiAgaW5cbiAgKCogVGhpcyBjaGVjayBpcyBpbXBvcnRhbnQgYmVjYXVzZSBbYXV4X2NyZWF0ZSB+c2l6ZTooLTEpXSByYWlzZXMgW091dF9vZl9tZW1vcnldLCB3aGljaFxuICAgICBjb3VsZCBiZSBjb25mdXNpbmcgZHVyaW5nIGRlYnVnZ2luZy4gKilcbiAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcImNyZWF0ZTogc2l6ZSA9ICVkIDwgMFwiIHNpemUpO1xuICBhdXhfY3JlYXRlIH5tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgfnNpemVcbjs7XG5cbmxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbmV4dGVybmFsIGlzX21tYXBwZWQgOiB0IC0+IGJvb2wgPSBcImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWJcIiBbQEBub2FsbG9jXVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB0LntpfSA8LSBmIGlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGNoZWNrX2FyZ3Nfc2xvdyB+bG9jIH5wb3MgfmxlbiAoYnN0ciA6IHQpID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogcG9zIDwgMFwiKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogbGVuIDwgMFwiKTtcbiAgbGV0IGJzdHJfbGVuID0gbGVuZ3RoIGJzdHIgaW5cbiAgKCogQmUgY2FyZWZ1bCB3aXRoIG92ZXJmbG93ISAgV2UgY291bGQgaGF2ZSBib2dvbnMgbGlrZSBbcG9zID0gSW50Lm1heF92YWx1ZV0gb3IgW2xlbiA9XG4gICAgIEludC5tYXhfdmFsdWVdIHBhc3NlZCBieSB0aGUgdXNlci4gKilcbiAgaWYgYnN0cl9sZW4gLSBwb3MgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpZ3N0cmluZy4lczogbGVuZ3RoKGJzdHIpIDwgcG9zICsgbGVuXCIgbG9jKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBjaGVja19hcmdzIH5sb2MgfnBvcyB+bGVuIChic3RyIDogdCkgPVxuICBsZXQgb3BlbiBCb29sLk5vbl9zaG9ydF9jaXJjdWl0aW5nIGluXG4gIGxldCBic3RyX2xlbiA9IGxlbmd0aCBic3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBic3RyX2xlbiAtIHBvcyA8IGxlbiB0aGVuIGNoZWNrX2FyZ3Nfc2xvdyB+bG9jIH5wb3MgfmxlbiBic3RyXG47O1xuXG5sZXQgZ2V0X29wdF9sZW4gYnN0ciB+cG9zID0gZnVuY3Rpb25cbiAgfCBTb21lIGxlbiAtPiBsZW5cbiAgfCBOb25lIC0+IGxlbmd0aCBic3RyIC0gcG9zXG47O1xuXG4oKiBCbGl0dGluZyAqKVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6KHRbQGxvY2FsX29wdF0pXG4gIC0+IHNyY19wb3M6aW50XG4gIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaWdzdHJpbmdfYmxpdF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbigqIEV4cG9zaW5nIHRoZSBleHRlcm5hbCB2ZXJzaW9uIG9mIGdldC9zZXQgc3VwcG9ydHMgYmV0dGVyIGlubGluaW5nLiAqKVxuZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXNcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbmVuZFxuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubW9kdWxlIEZyb21fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQnl0ZXNfc2VxdWVuY2UpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0W0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQmlnc3RyaW5nX3NlcXVlbmNlKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJ5dGVzX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOihzdHJpbmdbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUb19ieXRlc1xuICBpbmNsdWRlIEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ3N0cmluZzApIChUb19ieXRlcylcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRnJvbV9zdHJpbmcuc3Vib1xubGV0IG9mX2J5dGVzID0gRnJvbV9ieXRlcy5zdWJvXG5sZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnN1Ym9cbmxldCB0b19ieXRlcyA9IFRvX2J5dGVzLnN1Ym9cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbmxldCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdCA9IGZ1bmN0aW9uXG4gIHwgQXRvbSBzdHIgLT4gb2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyBhcyBzZXhwIC0+XG4gICAgU2V4cGxpYjAuU2V4cF9jb252Lm9mX3NleHBfZXJyb3IgXCJiaWdzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY29weSB0IDogdCA9IHN1YiB0IH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxubGV0IGNvbmNhdCA9XG4gIGxldCBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzcmMgaW5cbiAgICBsZXQgc3JjX3BvcyA9IDAgaW5cbiAgICBsZXQgZHN0X3BvcyA9ICFkc3RfcG9zX3JlZiBpblxuICAgIGJsaXQgfmRzdCB+ZHN0X3BvcyB+c3JjIH5zcmNfcG9zIH5sZW47XG4gICAgZHN0X3Bvc19yZWYgOj0gZHN0X3BvcyArIGxlblxuICBpblxuICBmdW4gP3NlcCBsaXN0IC0+XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBjcmVhdGUgMFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBsZXQgaGVhZF9sZW4gPSBsZW5ndGggaGVhZCBpblxuICAgICAgbGV0IHNlcF9sZW4gPSBPcHRpb24udmFsdWVfbWFwIHNlcCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQpIH5kZWZhdWx0OjAgaW5cbiAgICAgIGxldCB0YWlsX2NvdW50ID0gTGlzdC5sZW5ndGggdGFpbCBpblxuICAgICAgbGV0IGxlbiA9XG4gICAgICAgIGhlYWRfbGVuXG4gICAgICAgICsgKHNlcF9sZW4gKiB0YWlsX2NvdW50KVxuICAgICAgICArIExpc3Quc3VtIChtb2R1bGUgSW50KSB0YWlsIH5mOihmdW4gdCAtPiBsZW5ndGggdClcbiAgICAgIGluXG4gICAgICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgbGV0IGRzdF9wb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGFwcGVuZCB+c3JjOmhlYWQgfmRzdCB+ZHN0X3Bvc19yZWY7XG4gICAgICBMaXN0Lml0ZXIgdGFpbCB+ZjooZnVuIHNyYyAtPlxuICAgICAgICAobWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHNlcCAtPiBhcHBlbmQgfnNyYzpzZXAgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgICBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZik7XG4gICAgICBhc3NlcnQgKCFkc3RfcG9zX3JlZiA9IGxlbik7XG4gICAgICBkc3Rcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1zZXQgOiB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBjaGFyIC0+IHVuaXQgPSBcImJpZ3N0cmluZ19tZW1zZXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtc2V0IHQgfnBvcyB+bGVuIGMgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdCk7XG4gIHVuc2FmZV9tZW1zZXQgdCB+cG9zIH5sZW4gY1xuOztcblxuKCogQ29tcGFyaXNvbiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gdFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXAgdDEgfnBvczEgdDIgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczIgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDIpO1xuICB1bnNhZmVfbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBfYnl0ZXNcbiAgOiAgdFxuICAtPiBwb3MxOmludFxuICAtPiBCeXRlcy50XG4gIC0+IHBvczI6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbWNtcF9ieXRlcyB0MSB+cG9zMSBieXRlcyB+cG9zMiB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczEgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDEpO1xuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvczpwb3MyXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJ5dGVzLmxlbmd0aCBieXRlcyk7XG4gIHVuc2FmZV9tZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlblxuOztcblxubGV0IGNvbXBhcmUgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBsZXQgbGVuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBsZW4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IGxlbiA9IEludC5taW4gbGVuMSBsZW4yIGluXG4gICAgbWF0Y2ggdW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbiB3aXRoXG4gICAgfCAwIC0+IGlmIGxlbjEgPCBsZW4yIHRoZW4gLTEgZWxzZSBpZiBsZW4xID4gbGVuMiB0aGVuIDEgZWxzZSAwXG4gICAgfCBuIC0+IG4pXG47O1xuXG5leHRlcm5hbCBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbiAgOiAgSGFzaC5zdGF0ZVxuICAtPiB0XG4gIC0+IEhhc2guc3RhdGVcbiAgPSBcImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgX21ha2luZ19zdXJlX3RoZV9DX2JpbmRpbmdfdGFrZXNfYW5faW50ICh4IDogSGFzaC5zdGF0ZSkgPSAoeCA6PiBpbnQpXG5sZXQgaGFzaF9mb2xkX3QgPSBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbmxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcblxudHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubGV0IGVxdWFsIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIEludC5lcXVhbCBsZW4xIGxlbjIgJiYgSW50LmVxdWFsICh1bnNhZmVfbWVtY21wIHQxIH5wb3MxOjAgdDIgfnBvczI6MCB+bGVuOmxlbjEpIDApXG47O1xuXG4oKiBTZWFyY2ggKilcblxuZXh0ZXJuYWwgdW5zYWZlX2ZpbmQgOiB0IC0+IGNoYXIgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludCA9IFwiYmlnc3RyaW5nX2ZpbmRcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbW1lbVxuICA6ICBoYXlzdGFjazp0XG4gIC0+IG5lZWRsZTp0XG4gIC0+IGhheXN0YWNrX3BvczppbnRcbiAgLT4gaGF5c3RhY2tfbGVuOmludFxuICAtPiBuZWVkbGVfcG9zOmludFxuICAtPiBuZWVkbGVfbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGVcIiBcImJpZ3N0cmluZ19tZW1tZW1cIlxuW0BAbm9hbGxvY11cblxubGV0IGZpbmQgPyhwb3MgPSAwKSA/bGVuIGNociBic3RyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgY2hlY2tfYXJncyB+bG9jOlwiZmluZFwiIH5wb3MgfmxlbiBic3RyO1xuICBsZXQgcmVzID0gdW5zYWZlX2ZpbmQgYnN0ciBjaHIgfnBvcyB+bGVuIGluXG4gIGlmIHJlcyA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSByZXNcbjs7XG5cbmxldCBtZW1tZW1cbiAgICAgIH5oYXlzdGFja1xuICAgICAgfm5lZWRsZVxuICAgICAgPyhoYXlzdGFja19wb3MgPSAwKVxuICAgICAgP2hheXN0YWNrX2xlblxuICAgICAgPyhuZWVkbGVfcG9zID0gMClcbiAgICAgID9uZWVkbGVfbGVuXG4gICAgICAoKVxuICA9XG4gIGxldCBoYXlzdGFja19sZW4gPSBnZXRfb3B0X2xlbiBoYXlzdGFjayB+cG9zOmhheXN0YWNrX3BvcyBoYXlzdGFja19sZW4gaW5cbiAgbGV0IG5lZWRsZV9sZW4gPSBnZXRfb3B0X2xlbiBuZWVkbGUgfnBvczpuZWVkbGVfcG9zIG5lZWRsZV9sZW4gaW5cbiAgbGV0IHJlcyA9XG4gICAgdW5zYWZlX21lbW1lbSB+aGF5c3RhY2sgfm5lZWRsZSB+aGF5c3RhY2tfcG9zIH5oYXlzdGFja19sZW4gfm5lZWRsZV9wb3Mgfm5lZWRsZV9sZW5cbiAgaW5cbiAgaWYgcmVzIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHJlc1xuOztcblxuKCogdmltOiBzZXQgZmlsZXR5cGU9b2NhbWwgOiAqKVxuXG4oKiBCaW5hcnktcGFja2luZyBsaWtlIGFjY2Vzc29ycyAqKVxuXG5leHRlcm5hbCBpbnQzMl9vZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50MzJfdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIGludDY0X29mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBpbnQ2NF90b19pbnQgOiAoaW50NjRbQGxvY2FsXSkgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogKGludDY0W0Bsb2NhbF0pIC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF8xNiA6IHQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzMyIDogdCAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF82NCA6IHQgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfMTYgOiAodFtAbG9jYWxfb3B0XSkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF8zMlxuICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgLT4gaW50XG4gIC0+IGludDMyXG4gIC0+IHVuaXRcbiAgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0XzY0IDogdCAtPiBpbnQgLT4gKGludDY0W0Bsb2NhbF0pIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGdldF8xNiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX2dldF8xNiB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfMzIgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDMyID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzMyXCIgfnBvcyB+bGVuOjQgdDtcbiAgdW5zYWZlX2dldF8zMiB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfNjQgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDY0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzY0XCIgfnBvcyB+bGVuOjggdDtcbiAgdW5zYWZlX2dldF82NCB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfMTZfdHJ1bmMgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludCkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX3NldF8xNiB0IHBvcyB2XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF8zMiAodCA6IHQpIChwb3MgOiBpbnQpICh2IDogaW50MzIpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8zMlwiIH5wb3Mgfmxlbjo0IHQ7XG4gIHVuc2FmZV9zZXRfMzIgdCBwb3MgdlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfNjQgKHQgOiB0KSAocG9zIDogaW50KSAoKHYgOiBpbnQ2NCkgW0Bsb2NhbF0pIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9zZXRfNjQgdCBwb3MgdlxuOztcblxubGV0IHNpZ25fZXh0ZW5kXzE2IHUgPSAodSBsc2wgKEludC5udW1fYml0cyAtIDE2KSkgYXNyIChJbnQubnVtX2JpdHMgLSAxNilcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgLTB4ODAwMCB8fCB4ID4gMHg3RkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50OCB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQ4IHggfmxvYyA9XG4gIGlmIHggPCAtMHg4MCB8fCB4ID4gMHg3RlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQzMiA9XG4gIGlmIG5vdCBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfIH5sb2M6XyAtPiAoKVxuICBlbHNlXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAtMSBsc2wgMzEgJiYgeCA8IDEgbHNsIDMxXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDMyID1cbiAgaWYgbm90IGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IDBcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbiAgZWxzZVxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gMCAmJiB4IDwgMSBsc2wgMzJcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50NjQgeCB+bG9jID1cbiAgaWYgeCA+PSAwXG4gIHRoZW4gKClcbiAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHN3YXAxNiAodW5zYWZlX2dldF8xNiB0IHBvcykpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChnZXRfMTYgdCBwb3MpXG5sZXQgcmVhZF9pbnQxNl9zd2FwIHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChzd2FwMTYgKGdldF8xNiB0IHBvcykpXG5cbmxldCB3cml0ZV9pbnQxNl9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF9pbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIHhcbjs7XG5cbmxldCB3cml0ZV9pbnQxNl9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgKHN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX3VpbnQxNiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzE2IHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgdCB+cG9zID0gc3dhcDE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV93cml0ZV91aW50MTYgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX3VpbnQxNiB0IH5wb3MgPSBnZXRfMTYgdCBwb3NcbmxldCByZWFkX3VpbnQxNl9zd2FwIHQgfnBvcyA9IHN3YXAxNiAoZ2V0XzE2IHQgcG9zKVxuXG5sZXQgd3JpdGVfdWludDE2X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfdWludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyB4XG47O1xuXG5sZXQgd3JpdGVfdWludDE2X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV91aW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIChzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50ICh1bnNhZmVfZ2V0XzMyIHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIHQgfnBvcyA9IGludDMyX3RvX2ludCAoc3dhcDMyICh1bnNhZmVfZ2V0XzMyIHQgcG9zKSlcbmxldCB1bnNhZmVfcmVhZF9pbnQzMiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzMyIHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKHVuc2FmZV9nZXRfMzIgdCBwb3MpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChzd2FwMzIgeClcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoaW50MzJfb2ZfaW50IHgpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoc3dhcDMyIChpbnQzMl9vZl9pbnQgeCkpXG5sZXQgcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50IChnZXRfMzIgdCBwb3MpXG5sZXQgcmVhZF9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHN3YXAzMiAoZ2V0XzMyIHQgcG9zKSlcbmxldCByZWFkX2ludDMyIHQgfnBvcyA9IGdldF8zMiB0IHBvc1xubGV0IHJlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKGdldF8zMiB0IHBvcylcbmxldCB3cml0ZV9pbnQzMiB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyB4XG5sZXQgd3JpdGVfaW50MzJfc3dhcCB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyAoc3dhcDMyIHgpXG5cbmxldCB3cml0ZV9pbnQzMl9pbnRfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfaW50MzIgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDMyX2ludFwiO1xuICBzZXRfMzIgdCBwb3MgKGludDMyX29mX2ludCB4KVxuOztcblxubGV0IHdyaXRlX2ludDMyX2ludF9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDMyIHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQzMl9pbnRcIjtcbiAgc2V0XzMyIHQgcG9zIChzd2FwMzIgKGludDMyX29mX2ludCB4KSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAodW5zYWZlX2dldF82NCB0IHBvcylcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnQgKHN3YXA2NCAodW5zYWZlX2dldF82NCB0IHBvcykpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0IHQgfnBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfc3dhcCB0IH5wb3MgPSBzd2FwNjQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgKHN3YXA2NCB4KVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyAoaW50NjRfb2ZfaW50IHgpXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID1cbiAgdW5zYWZlX3NldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAoZ2V0XzY0IHQgcG9zKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2ludF9zd2FwIHQgfnBvcyA9IGludDY0X3RvX2ludCAoc3dhcDY0IChnZXRfNjQgdCBwb3MpKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0IHQgfnBvcyA9IGdldF82NCB0IHBvc1xubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X3N3YXAgdCB+cG9zID0gc3dhcDY0IChnZXRfNjQgdCBwb3MpXG5sZXQgd3JpdGVfaW50NjQgdCB+cG9zICh4IFtAbG9jYWxdKSA9IHNldF82NCB0IHBvcyB4XG5sZXQgd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgKHggW0Bsb2NhbF0pID0gc2V0XzY0IHQgcG9zIChzd2FwNjQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnQgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgKGludDY0X29mX2ludCB4KVxubGV0IHdyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChzd2FwNjQgKGludDY0X29mX2ludCB4KSlcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQxNiBlbHNlIHVuc2FmZV9yZWFkX2ludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTZfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF91aW50MTYgZWxzZSB1bnNhZmVfcmVhZF91aW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF91aW50MTZcbjs7XG5cbmxldCBnZXRfaW50MTZfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDE2IGVsc2UgcmVhZF9pbnQxNl9zd2FwXG5sZXQgZ2V0X2ludDE2X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNl9zd2FwIGVsc2UgcmVhZF9pbnQxNlxubGV0IGdldF91aW50MTZfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX3VpbnQxNiBlbHNlIHJlYWRfdWludDE2X3N3YXBcbmxldCBnZXRfdWludDE2X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTZfc3dhcCBlbHNlIHJlYWRfdWludDE2XG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDE2IGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MTZcbjs7XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV91aW50MTYgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV91aW50MTZfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV91aW50MTZcbjs7XG5cbmxldCBzZXRfaW50MTZfYmVfZXhuID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MTZfZXhuIGVsc2Ugd3JpdGVfaW50MTZfc3dhcF9leG5cbmxldCBzZXRfaW50MTZfbGVfZXhuID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MTZfc3dhcF9leG4gZWxzZSB3cml0ZV9pbnQxNl9leG5cblxubGV0IHNldF91aW50MTZfYmVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfdWludDE2X2V4biBlbHNlIHdyaXRlX3VpbnQxNl9zd2FwX2V4blxuOztcblxubGV0IHNldF91aW50MTZfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfdWludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfdWludDE2X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMlxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMiBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJcbjs7XG5cbmxldCBnZXRfaW50MzJfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzIgZWxzZSByZWFkX2ludDMyX3N3YXBcbmxldCBnZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfc3dhcCBlbHNlIHJlYWRfaW50MzJcbmxldCBzZXRfaW50MzJfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyIGVsc2Ugd3JpdGVfaW50MzJfc3dhcFxubGV0IHNldF9pbnQzMl90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfc3dhcCBlbHNlIHdyaXRlX2ludDMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfaW50IGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9pbnRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50XG47O1xuXG5sZXQgZ2V0X2ludDMyX2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9pbnQgZWxzZSByZWFkX2ludDMyX2ludF9zd2FwXG5sZXQgZ2V0X2ludDMyX2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9pbnRfc3dhcCBlbHNlIHJlYWRfaW50MzJfaW50XG5cbmxldCBzZXRfaW50MzJfYmVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X2V4biBlbHNlIHdyaXRlX2ludDMyX2ludF9zd2FwX2V4blxuOztcblxubGV0IHNldF9pbnQzMl9sZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfZXhuXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZV90cnVuYyA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZV90cnVuYyA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludFxuOztcblxubGV0IGdldF9pbnQ2NF9iZV90cnVuYyA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfaW50IGVsc2UgcmVhZF9pbnQ2NF9pbnRfc3dhcFxubGV0IGdldF9pbnQ2NF9sZV90cnVuYyA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfaW50X3N3YXAgZWxzZSByZWFkX2ludDY0X2ludFxubGV0IHNldF9pbnQ2NF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludCBlbHNlIHdyaXRlX2ludDY0X2ludF9zd2FwXG5sZXQgc2V0X2ludDY0X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfaW50X3N3YXAgZWxzZSB3cml0ZV9pbnQ2NF9pbnRcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0IGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRcbjs7XG5cbm1vZHVsZSBMb2NhbCA9IHN0cnVjdFxuICBsZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAodW5zYWZlX3JlYWRfaW50NjQgdCB+cG9zKSlcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBfbG9jYWwgdCB+cG9zID1cbiAgICAgKEludDY0LiggKyApIDBMICh1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAocmVhZF9pbnQ2NCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAocmVhZF9pbnQ2NF9zd2FwIHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9nZXRfaW50NjRfdF9iZSA9XG4gICAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfbG9jYWwgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwX2xvY2FsXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9nZXRfaW50NjRfdF9sZSA9XG4gICAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsXG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9sb2NhbCBlbHNlIHJlYWRfaW50NjRfc3dhcF9sb2NhbFxuICBsZXQgZ2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X3N3YXBfbG9jYWwgZWxzZSByZWFkX2ludDY0X2xvY2FsXG5lbmRcblxubGV0IGdldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NCBlbHNlIHJlYWRfaW50NjRfc3dhcFxubGV0IGdldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9zd2FwIGVsc2UgcmVhZF9pbnQ2NFxubGV0IHNldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjQgZWxzZSB3cml0ZV9pbnQ2NF9zd2FwXG5sZXQgc2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRcblxubGV0IGludDY0X2NvbnZfZXJyb3IgKCkgPVxuICBmYWlsd2l0aCBcInVuc2FmZV9yZWFkX2ludDY0OiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdW5ib3hlZCFcIlxuOztcblxubGV0IHVpbnQ2NF9jb252X2Vycm9yICgpID1cbiAgZmFpbHdpdGggXCJ1bnNhZmVfcmVhZF91aW50NjQ6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCB1bmJveGVkIVwiXG47O1xuXG4oKiBbUG9seV0gaXMgcmVxdWlyZWQgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSB1bmJveGVkIFtpbnQ2NF0uICopXG5sZXRbQGlubGluZSBhbHdheXNdIGludDY0X3RvX2ludF9leG4gKG4gW0Bsb2NhbF0pID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gLTB4NDAwMF8wMDAwXzAwMDBfMDAwMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gLTB4MDAwMF8wMDAwXzQwMDBfMDAwMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSBpbnQ2NF9jb252X2Vycm9yICgpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQ2NF90b19pbnRfZXhuIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgaWYgUG9seS4obiA+PSAwTCAmJiBuIDwgMHg0MDAwXzAwMDBfMDAwMF8wMDAwTClcbiAgICB0aGVuIGludDY0X3RvX2ludCBuXG4gICAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgaW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2xlIHQgfnBvcylcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDY0X2JlX2V4biB0IH5wb3MgPVxuICB1aW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2JlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfdWludDY0X2xlX2V4biB0IH5wb3MgPSB1aW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2JlID0gdW5zYWZlX3NldF9pbnQ2NF9iZVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2xlID0gdW5zYWZlX3NldF9pbnQ2NF9sZVxuXG5sZXQgc2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50NjQgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDY0X2JlX2V4blwiIG47XG4gIHNldF9pbnQ2NF9iZSB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50NjRfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9sZV9leG5cIiBuO1xuICBzZXRfaW50NjRfbGUgdCB+cG9zIG5cbjs7XG5cbigqIFR5cGUgYW5ub3RhdGlvbnMgb24gdGhlIFt0XXMgYXJlIGltcG9ydGFudCBoZXJlOiBpbiBvcmRlciBmb3IgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlXG4gICBvcHRpbWl6ZWQgY29kZSwgaXQgbmVlZHMgdG8ga25vdyB0aGUgZnVsbHkgaW5zdGFudGlhdGVkIHR5cGUgb2YgdGhlIGJpZ2FycmF5LiBUaGlzIGlzXG4gICBiZWNhdXNlIHRoZSB0eXBlIG9mIHRoZSBiaWdhcnJheSBlbmNvZGVzIHRoZSBlbGVtZW50IGtpbmQgYW5kIHRoZSBsYXlvdXQgb2YgdGhlXG4gICBiaWdhcnJheS4gV2l0aG91dCB0aGUgYW5ub3RhdGlvbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgQyBjYWxsIHRvIHRoZSBnZW5lcmljIGFjY2Vzc1xuICAgZnVuY3Rpb25zLiAqKVxubGV0IHVuc2FmZV9zZXRfdWludDggKHQgOiB0KSB+cG9zIG4gPSBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG5cbmxldCB1bnNhZmVfc2V0X2ludDggKHQgOiB0KSB+cG9zIG4gPVxuICAoKiBJbiBhbGwgdGhlIHNldCBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgYXJlIHRoZXNlIHRlc3RzLCBpdCBsb29rcyBsaWtlIHRoZSB0ZXN0IGNvdWxkIGJlXG4gICAgIHJlbW92ZWQsIHNpbmNlIHRoZXkgYXJlIG9ubHkgY2hhbmdpbmcgdGhlIHZhbHVlcyBvZiB0aGUgYnl0ZXMgdGhhdCBhcmUgbm90XG4gICAgIHdyaXR0ZW4uICopXG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50OCAodCA6IHQpIH5wb3MgPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpIGluXG4gIGlmIG4gPj0gMTI4IHRoZW4gbiAtIDI1NiBlbHNlIG5cbjs7XG5cbmxldCBzZXRfdWludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDhfZXhuXCIgbjtcbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgc2V0X2ludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfaW50OCB+bG9jOlwiQmlnc3RyaW5nLnNldF9pbnQ4X2V4blwiIG47XG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCBnZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS5nZXQgdCBwb3MpXG5cbmxldCBnZXRfaW50OCAodCA6IHQpIH5wb3MgPVxuICBsZXQgbiA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgbWFzazMyX24gPSBTdGRsaWIuTmF0aXZlaW50LihzdWIgKHNoaWZ0X2xlZnQgMW4gMzIpIDFuKVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQzMl9vZl9pbnQzMl90IG4gPVxuICBpZiBub3Rfb25fMzJiaXRcbiAgdGhlblxuICAgICgqIHVzZSBDYW1sLk5hdGl2ZWludCB0byBlbnN1cmUgaW5saW5pbmcgZXZlbiB3aXRob3V0IHgtbGlicmFyeS1pbmxpbmluZyAqKVxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuKHRvX2ludCAobG9nYW5kIChvZl9pbnQzMiBuKSBtYXNrMzJfbikpXG4gIGVsc2UgaW50MzJfdG9faW50IG5cbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfc2V0X3VpbnQzMl9sZSB0IH5wb3MgbiA9IHVuc2FmZV9zZXRfaW50MzJfdF9sZSB0IH5wb3MgKGludDMyX29mX2ludCBuKVxubGV0W0BpbmxpbmVdIHVuc2FmZV9zZXRfdWludDMyX2JlIHQgfnBvcyBuID0gdW5zYWZlX3NldF9pbnQzMl90X2JlIHQgfnBvcyAoaW50MzJfb2ZfaW50IG4pXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2xlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2JlIHQgfnBvcylcbjs7XG5cbmxldCBzZXRfdWludDMyX2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQzMiB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50MzJfbGVfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBub3Rfb25fMzJiaXQgJiYgbiA+PSAxIGxzbCAzMSB0aGVuIG4gLSAoMSBsc2wgMzIpIGVsc2UgbiBpblxuICBzZXRfaW50MzJfbGVfZXhuIHQgfnBvcyBuXG47O1xuXG5sZXQgc2V0X3VpbnQzMl9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50MzIgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDMyX2JlX2V4blwiIG47XG4gIGxldCBuID0gaWYgbm90X29uXzMyYml0ICYmIG4gPj0gMSBsc2wgMzEgdGhlbiBuIC0gKDEgbHNsIDMyKSBlbHNlIG4gaW5cbiAgc2V0X2ludDMyX2JlX2V4biB0IH5wb3MgblxuOztcblxubGV0IGdldF91aW50MzJfbGUgdCB+cG9zID0gdWludDMyX29mX2ludDMyX3QgKGdldF9pbnQzMl90X2xlIHQgfnBvcylcbmxldCBnZXRfdWludDMyX2JlIHQgfnBvcyA9IHVpbnQzMl9vZl9pbnQzMl90IChnZXRfaW50MzJfdF9iZSB0IH5wb3MpXG5cbm1vZHVsZSBJbnRfcmVwciA9IHN0cnVjdFxuICBtb2R1bGUgRiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHRfZnJvemVuXG5cbiAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gZ2V0X3VpbnQ4IHQgfnBvc1xuICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCB4KVxuICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gZ2V0XzE2IHQgcG9zXG4gICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHNldF8xNl90cnVuYyB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IGdldF8zMiB0IHBvc1xuICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHNldF8zMiB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IGdldF82NCB0IHBvc1xuICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHNldF82NCB0IHBvcyB4XG4gIGVuZFxuXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9nZXQgKEYpXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9zZXQgKEYpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB0X2Zyb3plblxuXG4gICAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gdW5zYWZlX2dldF91aW50OCB0IH5wb3NcbiAgICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IHVuc2FmZV9zZXRfdWludDggdCB+cG9zIHhcbiAgICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gdW5zYWZlX2dldF8xNiB0IHBvc1xuICAgICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfMzIgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX2dldCAoRilcbiAgICBpbmNsdWRlIEludF9yZXByLk1ha2Vfc2V0IChGKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc2lnbl9leHRlbmRfMTYgPSBzaWduX2V4dGVuZF8xNlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBCbGl0XG5pbmNsdWRlIFRlc3RfYmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmxpdFxuXG4gIHR5cGUgJ2Egc3JjXG4gIHR5cGUgJ2EgZHN0XG5cbiAgKCogIHZhbCBibGl0ICAgICAgICA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdCopXG4gIHZhbCBibGl0byA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdG9cblxuICAoKiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHNyYywgJ2EgZHN0KSBibGl0KilcbiAgdmFsIHN1YiA6ICgnYSBzcmMsICdhIGRzdCkgc3ViXG5cbiAgKCp2YWwgc3VibyAgICAgICAgOiAoJ2Egc3JjLCAnYSBkc3QpIHN1Ym8qKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl90ZXN0c19nZW4gPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVxdWFsIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sXG5cbiAgICB2YWwgb2ZfYm9vbCA6IGJvb2wgLT4gYm9vbCB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgelxuXG4gIG1vZHVsZSBTcmMgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiAoXyB0W0Bsb2NhbF0pIC0+IGludFxuICAgIHZhbCBjcmVhdGVfYm9vbCA6IGxlbjppbnQgLT4gYm9vbCB6IHRcbiAgICB2YWwgZ2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudFxuICAgIHZhbCBzZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50IC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIERzdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGxlbmd0aCA6IChfIHRbQGxvY2FsXSkgLT4gaW50XG4gICAgdmFsIGNyZWF0ZV9ib29sIDogbGVuOmludCAtPiBib29sIHogdFxuICAgIHZhbCBnZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50XG4gICAgdmFsIHNldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuICAgIHZhbCBvdmVybGFwcGluZ19zcmNfZHN0IDogWyBgRG9fbm90X2NoZWNrIHwgYENoZWNrIG9mICdhIFNyYy50IC0+ICdhIHQgXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW5cbiAgICAoRm9yX3Rlc3RzIDogRm9yX3Rlc3RzX2dlbilcbiAgICAoVGVzdGVkIDogU19nZW5cbiAgICAgd2l0aCB0eXBlICdhIHNyYyA6PSAnYSBGb3JfdGVzdHMuU3JjLnRcbiAgICAgd2l0aCB0eXBlICdhIGRzdCA6PSAnYSBGb3JfdGVzdHMuRHN0LnQpID1cbnN0cnVjdFxuICBvcGVuIFRlc3RlZFxuICBvcGVuIEZvcl90ZXN0c1xuXG4gIGxldCBpbml0IH5sZW4gfmNyZWF0ZSB+c2V0IH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHNldCB0IGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHRcbiAgOztcblxuICBsZXQgZWx0MSA9IEVsdC5vZl9ib29sIHRydWVcbiAgbGV0IGVsdDIgPSBFbHQub2ZfYm9vbCBmYWxzZVxuICBsZXQgKCkgPSBhc3NlcnQgKG5vdCAoRWx0LmVxdWFsIGVsdDEgZWx0MikpXG4gIGxldCBzcmNfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDEgZWxzZSBlbHQyXG4gIGxldCBkc3RfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDIgZWxzZSBlbHQxXG5cbiAgKCogVGVzdCBbYmxpdF0uICopXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IG4gPSA0IGluXG4gICAgZm9yIHNyY19sZW5ndGggPSAwIHRvIG4gZG9cbiAgICAgIGZvciBkc3RfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICAgIGZvciBzcmNfcG9zID0gMCB0byBzcmNfbGVuZ3RoIGRvXG4gICAgICAgICAgZm9yIGRzdF9wb3MgPSAwIHRvIGRzdF9sZW5ndGggZG9cbiAgICAgICAgICAgIGZvciBzcmNfbGVuID0gMCB0byBtaW4gKHNyY19sZW5ndGggLSBzcmNfcG9zKSAoZHN0X2xlbmd0aCAtIGRzdF9wb3MpIGRvXG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIGxldCBpc19pbl9yYW5nZSBpID0gaSA+PSBkc3RfcG9zICYmIGkgPCBkc3RfcG9zICsgc3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVjayBsZW5ndGggZ2V0IG5hbWUgc2VxdWVuY2UgfmV4cGVjdCA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHNlcXVlbmNlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEVsdC5lcXVhbCAoZ2V0IHNlcXVlbmNlIGkpIChleHBlY3QgaSkpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJidWdcIiAobmFtZSA6IHN0cmluZykgKGkgOiBpbnQpXVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrX3NyYyA9IGNoZWNrIFNyYy5sZW5ndGggU3JjLmdldCBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19kc3QgPSBjaGVjayBEc3QubGVuZ3RoIERzdC5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3JjID1cbiAgICAgICAgICAgICAgICAgIGluaXQgfmxlbjpzcmNfbGVuZ3RoIH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhc3NlcnQgKFNyYy5sZW5ndGggc3JjID0gc3JjX2xlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46ZHN0X2xlbmd0aCB+Y3JlYXRlOkRzdC5jcmVhdGVfYm9vbCB+c2V0OkRzdC5zZXQgfmY6ZHN0X2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChEc3QubGVuZ3RoIGRzdCA9IGRzdF9sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBpbml0X3NyYyAoKSA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gc3JjX2xlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgU3JjLnNldCBzcmMgaSAoc3JjX2JpdCBpKVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcImJsaXQgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdFwiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfaW5fcmFuZ2UgaSB0aGVuIHNyY19iaXQgKHNyY19wb3MgKyBpIC0gZHN0X3BvcykgZWxzZSBkc3RfYml0IGkpO1xuICAgICAgICAgICAgICAgIChtYXRjaCBEc3Qub3ZlcmxhcHBpbmdfc3JjX2RzdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYERvX25vdF9jaGVjayAtPiAoKVxuICAgICAgICAgICAgICAgICB8IGBDaGVjayBzcmNfdG9fZHN0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgZHN0X3BvcyArIHNyY19sZW4gPD0gc3JjX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZHN0ID0gc3JjX3RvX2RzdCBzcmMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdCBvdmVybGFwcGluZ1wiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19iaXQgKGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfcG9zICsgaSAtIGRzdF9wb3MgZWxzZSBpKSkpKSk7XG4gICAgICAgICAgICAgICAgKCogQ2hlY2sgW3N1Yl0uICopXG4gICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9IHN1YiBzcmMgfnBvczpzcmNfcG9zIH5sZW46c3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcInN1YiBzcmNcIiBzcmMgfmV4cGVjdDpzcmNfYml0O1xuICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcInN1YiBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT4gc3JjX2JpdCAoc3JjX3BvcyArIGkpKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIFwiYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfcG9zIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfcG9zIDogaW50KV1cbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgc3JjID0gaW5pdCB+bGVuOjQgfmNyZWF0ZTpTcmMuY3JlYXRlX2Jvb2wgfnNldDpTcmMuc2V0IH5mOnNyY19iaXQgaW5cbiAgICBsZXQgZHN0ID0gaW5pdCB+bGVuOjggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXQgaW5cbiAgICBsZXQgYXNzZXJ0X3JhaXNlcyBmID0gYXNzZXJ0IChFeG4uZG9lc19yYWlzZSBmKSBpblxuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOigtMSkgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOigtMSkgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjUgfnNyY19sZW46MSB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46OCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjUgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjggKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QxXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seSlcbiAgICAoVGVzdGVkIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgICBsZXQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gICAgICAgIGxldCBvZl9ib29sID0gRm4uaWRcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBUZXN0MV9nZW5lcmljXG4gICAgKEVsdCA6IEVsdDEpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICAgIHR5cGUgJ2EgeiA9ICdhIFNlcXVlbmNlLnpcblxuICAgICAgbW9kdWxlIFNyYyA9IFNlcXVlbmNlXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIEVsdF90b19lbHQxIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IEVsdC50XG5cbiAgbGV0IGVxdWFsID0gRWx0LmVxdWFsXG4gIGxldCBvZl9ib29sID0gRWx0Lm9mX2Jvb2xcbmVuZFxuXG5tb2R1bGUgVGVzdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoVGVzdGVkIDogUyB3aXRoIHR5cGUgdCA6PSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU3JjXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdF9kaXN0aW5jdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNyYyA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKERzdCA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBTcmMudCB3aXRoIHR5cGUgZHN0IDo9IERzdC50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNyY1xuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBvcGVuIERzdFxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYERvX25vdF9jaGVja1xuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdCkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlX2Rpc3RpbmN0IChTcmMpIChEc3QpXG4gIGluY2x1ZGUgVGVzdF9kaXN0aW5jdCAoRWx0KSAoU3JjKSAoRHN0KSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0MSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpY19hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQxKSAoU2VxdWVuY2UgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBCbGl0LlNlcXVlbmNlMVxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDFfZ2VuZXJpYyAoRWx0KSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmluYXJ5X3NlYXJjaGFibGVcbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmluYXJ5X3NlYXJjaGFibGVcblxuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSBlbHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EgZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0ID0gc2lnXG4gIGluY2x1ZGUgU19nZW5cblxuICBtb2R1bGUgRm9yX3Rlc3QgOiBzaWdcbiAgICB2YWwgY29tcGFyZSA6IGJvb2wgZWx0IC0+IGJvb2wgZWx0IC0+IGludFxuICAgIHZhbCBzbWFsbCA6IGJvb2wgZWx0XG4gICAgdmFsIGJpZyA6IGJvb2wgZWx0XG4gICAgdmFsIG9mX2FycmF5IDogYm9vbCBlbHQgYXJyYXkgLT4gYm9vbCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUZXN0X2dlbiAoTSA6IEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBvcGVuIE1cblxuICBsZXQldGVzdF9tb2R1bGUgXCJ0ZXN0X2JpbmFyeV9zZWFyY2hhYmxlXCIgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBlbHRfY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBzID0gRm9yX3Rlc3Quc21hbGxcbiAgICAgIGxldCBiID0gRm9yX3Rlc3QuYmlnXG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB+Y29tcGFyZSB0IGhvdyB2ID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgKEZvcl90ZXN0Lm9mX2FycmF5IHQpIGhvdyB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgKCA9ICkgPSBQb2x5LmVxdWFsXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzIHxdIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgTGFzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHMgfF0gYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgMlxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYiB8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiIHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gcyA9IE5vbmVcblxuICAgICAgbGV0IGNyZWF0ZV90ZXN0X2Nhc2UgKG51bV9zLCBudW1fYikgPVxuICAgICAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIGIgfmxlbjoobnVtX3MgKyBudW1fYikgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG51bV9zIC0gMSBkb1xuICAgICAgICAgIGFyci4oaSkgPC0gc1xuICAgICAgICBkb25lO1xuICAgICAgICBhcnJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvbmx5X3NtYWxsID0gMTBfMDAwLCAwXG4gICAgICBsZXQgb25seV9iaWcgPSAwLCAxMF8wMDBcbiAgICAgIGxldCBib3RoID0gMjUzMSwgNDcxN1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCAoY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsKSB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgXyAtPiB0cnVlXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2UgYm90aCBpblxuICAgICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgdiAtPiB2ID0gMjUzMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSA9XG4gICAgICAgIEFycmF5LmluaXQgMTAwXzAwMCB+ZjooZnVuIGkgLT4gaWYgaSA+IDUwXzAwMCB0aGVuIGIgZWxzZSBzKVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgKCogdGVzdHMgYXJvdW5kIGEgZ2FwKilcbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3QgYmVnaW5uaW5nIG9mIGFycmF5ICopXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgKCogdGVzdCBlbmQgb2YgYXJyYXkgKilcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgOV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICAgIGZvciBsZW5ndGggPSAwIHRvIDUgZG9cbiAgICAgICAgICBmb3IgbnVtX3MgPSAwIHRvIGxlbmd0aCBkb1xuICAgICAgICAgICAgbGV0IGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIH5mOihmdW4gaSAtPiBpZiBpIDwgbnVtX3MgdGhlbiBzIGVsc2UgYikgaW5cbiAgICAgICAgICAgIGZvciBwb3MgPSAtMSB0byBsZW5ndGggZG9cbiAgICAgICAgICAgICAgZm9yIGxlbiA9IC0xIHRvIGxlbmd0aCArIDEgZG9cbiAgICAgICAgICAgICAgICAoKnRyeSopXG4gICAgICAgICAgICAgICAgbGV0IHNob3VsZF9yYWlzZSA9XG4gICAgICAgICAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgICAgICAgIH50b3RhbF9sZW5ndGg6bGVuZ3RoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+cG9zIH5sZW4gfmNvbXBhcmU6ZWx0X2NvbXBhcmUgYExhc3RfZXF1YWxfdG8gcylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIHNob3VsZF9yYWlzZSwgcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgICB8IHRydWUsIEVycm9yIF8gLT4gKClcbiAgICAgICAgICAgICAgICB8IHRydWUsIE9rIF8gLT4gZmFpbHdpdGggXCJleHBlY3RlZCBpdCB0byByYWlzZSBidXQgaXQgZGlkbid0XCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBFcnJvciBfIC0+IGZhaWx3aXRoIFwiZXhwZWN0ZWQgaXQgdG8gbm90IHJhaXNlLCBidXQgaXQgcmFpc2VkXCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBPayByZXN1bHQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzZWFyY2hlZCA9IG51bV9zIC0gMSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGNvcnJlY3RfcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICAgaWYgc2VhcmNoZWQgPCBwb3NcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgbGVuID0gMFxuICAgICAgICAgICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBzZWFyY2hlZCA+PSBwb3MgKyBsZW5cbiAgICAgICAgICAgICAgICAgICAgdGhlbiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIFNvbWUgc2VhcmNoZWRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBub3QgKGNvcnJlY3RfcmVzdWx0ID0gcmVzdWx0KSB0aGVuIGZhaWx3aXRoIFwiV3JvbmcgcmVzdWx0XCJcbiAgICAgICAgICAgICAgICAgICgqd2l0aCBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGhzIFwiYmluYXJ5X3NlYXJjaCBidWdcIlxuICAgICAgICAgICAgICAgICAgICAoZXhuLCBgbGVuZ3RoIGxlbmd0aCwgYHNlYXJjaF9rZXkgc2VhcmNoX2tleSwgYHBvcyBwb3MsIGBsZW4gbGVuKVxuICAgICAgICAgICAgICAgICAgICA8OnNleHBfb2Y8IGV4biAqIFsgYGxlbmd0aCBvZiBpbnQgXSAqIFsgYHNlYXJjaF9rZXkgb2YgaW50IF1cbiAgICAgICAgICAgICAgICAgICAqIFsgYHBvcyBvZiBpbnQgXSAqIFsgYGxlbiBvZiBpbnQgXSA+PiopXG4gICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhID0gYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgKEZvcl90ZXN0Lm9mX2FycmF5IGEpXG5cbiAgICAgICgqdGVzdCBmb3IgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQqKVxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIHggPSBpZiB4ID0gYiB0aGVuIGBSaWdodCBlbHNlIGBMZWZ0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gU29tZSA1MF8wMDBcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgXyA9IGBSaWdodCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IE5vbmVcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIF8gPSBgTGVmdCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IFNvbWUgOTlfOTk5XG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBOb25lXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVGVzdCAoTSA6IEJpbmFyeV9zZWFyY2hhYmxlX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gTS50XG4gICAgdHlwZSAnYSBlbHQgPSBNLmVsdFxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gIGVuZClcblxubW9kdWxlIFRlc3QxIChNIDogQmluYXJ5X3NlYXJjaGFibGUxX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTS50XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSA9IE0uRm9yX3Rlc3Qub2ZfYXJyYXlcbiAgICAgIGxldCBjb21wYXJlID0gQm9vbC5jb21wYXJlXG4gICAgICBsZXQgc21hbGwgPSBmYWxzZVxuICAgICAgbGV0IGJpZyA9IHRydWVcbiAgICBlbmRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdCAoTSA6IEluZGV4YWJsZV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZSAoTSlcbiAgaW5jbHVkZSBCXG5cbiAgaW5jbHVkZSBUZXN0IChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IE0udFxuICAgICAgdHlwZSBlbHQgPSBNLmVsdFxuXG4gICAgICBpbmNsdWRlIEJcbiAgICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChNIDogSW5kZXhhYmxlMV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKE0pXG4gIGluY2x1ZGUgQlxuXG4gIGluY2x1ZGUgVGVzdDEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgTS50XG5cbiAgICAgIGluY2x1ZGUgQlxuICAgICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG5pbmNsdWRlIChcbiAgU3RyaW5nIDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZClcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBTdGRsaWIuRmlsZW5hbWVcblxuICBsZXQgY2hlY2tfc3VmZml4ID0gY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX2V4dGVuc2lvbiA9IGNob3BfZXh0ZW5zaW9uXG4gIGxldCBjaG9wX3N1ZmZpeCA9IGNob3Bfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBjaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBpc19pbXBsaWNpdCA9IGlzX2ltcGxpY2l0XG4gIGxldCBpc19yZWxhdGl2ZSA9IGlzX3JlbGF0aXZlXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBwYXJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcl9zZXAgPSBkaXJfc2VwXG4gIGxldCBxdW90ZSA9IHF1b3RlXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gZ2V0X3RlbXBfZGlyX25hbWUgKClcbiAgbGV0IGRpcm5hbWUgPSBkaXJuYW1lXG4gIGxldCBiYXNlbmFtZSA9IGJhc2VuYW1lXG5lbmRcblxubGV0IGlzX2Fic29sdXRlIHAgPSBub3QgKGlzX3JlbGF0aXZlIHApXG5cbmxldCBjb25jYXQgcDEgcDIgPVxuICBpZiBTdHJpbmcuaXNfZW1wdHkgcDFcbiAgdGhlblxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUuY29uY2F0IGNhbGxlZCB3aXRoIGFuIGVtcHR5IHN0cmluZyBhcyBpdHMgZmlyc3QgYXJndW1lbnQgKHNlY29uZCBcXFxuICAgICAgIGFyZ3VtZW50OiAlcylcIlxuICAgICAgcDJcbiAgICAgICgpO1xuICBsZXQgcmVjIGNvbGxhcHNlX3RyYWlsaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lIChcIlwiLCAoXCIuXCIgfCBcIlwiKSkgLT4gXCJcIlxuICAgIHwgU29tZSAocywgKFwiLlwiIHwgXCJcIikpIC0+IGNvbGxhcHNlX3RyYWlsaW5nIHNcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gc1xuICBpblxuICBsZXQgcmVjIGNvbGxhcHNlX2xlYWRpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jy8nIHdpdGhcbiAgICB8IFNvbWUgKChcIi5cIiB8IFwiXCIpLCBzKSAtPiBjb2xsYXBzZV9sZWFkaW5nIHNcbiAgICB8IFNvbWUgXyB8IE5vbmUgLT4gc1xuICBpblxuICBjb2xsYXBzZV90cmFpbGluZyBwMSBeIFwiL1wiIF4gY29sbGFwc2VfbGVhZGluZyBwMlxuOztcblxubGV0IHRvX2Fic29sdXRlX2V4biBwIH5yZWxhdGl2ZV90byA9XG4gIGlmIGlzX3JlbGF0aXZlIHJlbGF0aXZlX3RvXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLnRvX2Fic29sdXRlX2V4biBjYWxsZWQgd2l0aCBhIFtyZWxhdGl2ZV90b10gdGhhdCBpcyBhIHJlbGF0aXZlIHBhdGg6ICVzXCJcbiAgICAgIHJlbGF0aXZlX3RvXG4gICAgICAoKVxuICBlbHNlIGlmIGlzX2Fic29sdXRlIHBcbiAgdGhlbiBwXG4gIGVsc2UgY29uY2F0IHJlbGF0aXZlX3RvIHBcbjs7XG5cbmxldCBzcGxpdCBzID0gZGlybmFtZSBzLCBiYXNlbmFtZSBzXG5cbigqIFttYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemVdIGNvbWVzIGZyb20gZ2V0Y29uZiBfUE9TSVhfTkFNRV9NQVggLyAqKVxubGV0IG1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSA9IDI1NVxuXG5sZXQgaXNfcG9zaXhfcGF0aG5hbWVfY29tcG9uZW50IHMgPVxuICBsZXQgbW9kdWxlIFMgPSBTdHJpbmcgaW5cbiAgcyA8PiBcIi5cIlxuICAmJiBzIDw+IFwiLi5cIlxuICAmJiBJbnQuKDAgPCBTLmxlbmd0aCBzKVxuICAmJiBJbnQuKFMubGVuZ3RoIHMgPD0gbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplKVxuICAmJiAobm90IChTLmNvbnRhaW5zIHMgJy8nKSlcbiAgJiYgbm90IChTLmNvbnRhaW5zIHMgJ1xcMDAwJylcbjs7XG5cbmxldCByb290ID0gXCIvXCJcblxubGV0IHNwbGl0X2V4dGVuc2lvbiBmbiA9XG4gIGxldCBkaXIsIGZuID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy8nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgZm5cbiAgICB8IFNvbWUgKHBhdGgsIGZuKSAtPiBTb21lIHBhdGgsIGZuXG4gIGluXG4gIGxldCBmbiwgZXh0ID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy4nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gZm4sIE5vbmVcbiAgICB8IFNvbWUgKGJhc2VfZm4sIGV4dCkgLT4gYmFzZV9mbiwgU29tZSBleHRcbiAgaW5cbiAgbGV0IGZuID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgTm9uZSAtPiBmblxuICAgIHwgU29tZSBkaXIgLT4gZGlyIF4gXCIvXCIgXiBmblxuICBpblxuICBmbiwgZXh0XG47O1xuXG5sZXQgcGFydHMgZmlsZW5hbWUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGZpbGVuYW1lID1cbiAgICBtYXRjaCBzcGxpdCBmaWxlbmFtZSB3aXRoXG4gICAgfCAoXCIuXCIgYXMgYmFzZSksIFwiLlwiIC0+IGJhc2UgOjogYWNjXG4gICAgfCAoXCIvXCIgYXMgYmFzZSksIFwiL1wiIC0+IGJhc2UgOjogYWNjXG4gICAgfCByZXN0LCBkaXIgLT4gbG9vcCAoZGlyIDo6IGFjYykgcmVzdFxuICBpblxuICBsb29wIFtdIGZpbGVuYW1lXG47O1xuXG5sZXQgb2ZfcGFydHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwiRmlsZW5hbWUub2ZfcGFydHM6IGVtcHR5IHBhcnRzIGxpc3RcIlxuICB8IHJvb3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpyb290IH5mOlN0ZGxpYi5GaWxlbmFtZS5jb25jYXRcbjs7XG5cbmxldCByZWMgc2tpcF9jb21tb25fcHJlZml4IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgd2hlbiBTdHJpbmcuZXF1YWwgaDEgaDIgLT4gc2tpcF9jb21tb25fcHJlZml4IHQxIHQyXG4gIHwgXyAtPiBsMSwgbDJcbjs7XG5cbmxldCBvZl9hYnNvbHV0ZV9leG4gYSB+cmVsYXRpdmVfdG86YiA9XG4gIGlmIGlzX3JlbGF0aXZlIGFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+Zmlyc3RfYXJnOihhIDogc3RyaW5nKV07XG4gIGlmIGlzX3JlbGF0aXZlIGJcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogW35yZWxhdGl2ZV90b10gbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+cmVsYXRpdmVfdG86KGIgOiBzdHJpbmcpXTtcbiAgbGV0IGFfcGFydHMgPSBwYXJ0cyBhIGluXG4gIGxldCBiX3BhcnRzID0gcGFydHMgYiBpblxuICBsZXQgYV9zdWZmaXgsIGJfc3VmZml4ID0gc2tpcF9jb21tb25fcHJlZml4IGFfcGFydHMgYl9wYXJ0cyBpblxuICBsZXQgZ29fdXAgPSBMaXN0Lm1hcCB+ZjooZnVuIF8gLT4gcGFyZW50X2Rpcl9uYW1lKSBiX3N1ZmZpeCBpblxuICBtYXRjaCBnb191cCBAIGFfc3VmZml4IHdpdGhcbiAgfCBbXSAtPiBjdXJyZW50X2Rpcl9uYW1lXG4gIHwgcmVscGF0aCAtPiBvZl9wYXJ0cyByZWxwYXRoXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBjcmVhdGVfYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IG9wZW5fdGVtcF9maWxlX2ZkID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgcmVhbHBhdGggPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2RpciA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHRlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBVbml2X21hcF9pbnRmXG5tb2R1bGUgVWlkID0gVHlwZV9lcXVhbC5JZC5VaWRcblxubW9kdWxlIE1ha2UxXG4gICAgKEtleSA6IEtleSkgKERhdGEgOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICgncywgJ2EpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogQSB3cmFwcGVyIGZvciB0aGUgW0tleV0gbW9kdWxlIHRoYXQgYWRkcyBhIGR5bmFtaWMgY2hlY2sgdG8gW0tleS50eXBlX2lkXS5cblxuICAgICBJdCdzIGEgYnVnIGlmIHRoZSB1c2VyLXByb3ZpZGVkIFtLZXkudHlwZV9pZF0gZ2l2ZXMgZGlmZmVyZW50IHR5cGUgaWRzIG9uIGRpZmZlcmVudFxuICAgICBjYWxscy4gIEJlY2F1c2UgdGhpcyBjaGVjayBzaG91bGQgYmUgZmFpcmx5IGNoZWFwLCB3ZSBkbyBpdCBkeW5hbWljYWxseSB0byBhdm9pZFxuICAgICBzdWJ0bGVyIHByb2JsZW1zIGxhdGVyLlxuXG4gICAgIE9mIGNvdXJzZSwgd2UncmUgbm90IGNoZWNraW5nIHRydWx5IHBhdGhvbG9naWNhbCB0aGluZ3MgbGlrZSB0aGUgcHJvdmlkZWRcbiAgICAgW0tleS50eXBlX2lkXSBvbmx5IGNoYW5nZXMgdGhlIHZhbHVlIGl0IHJldHVybnMgb24gZXZlcnkgdGhpcmQgY2FsbC4uLiAqKVxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgS2V5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIHRlc3QtZnJpZW5kbHkgc2V4cCBjb252ZXJzaW9uICopXG4gICAgbGV0IHNleHBfb2ZfdHlwZV9pZCB0eXBlX2lkID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IG5hbWUgPSAoVHlwZV9lcXVhbC5JZC5uYW1lIHR5cGVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDsgdWlkID1cbiAgICAgICAgICAgIChpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmdcbiAgICAgICAgICAgICB0aGVuIFNleHAuQXRvbSBcIjx1aWQ+XCJcbiAgICAgICAgICAgICBlbHNlIFR5cGVfZXF1YWwuSWQuVWlkLnNleHBfb2ZfdCAoVHlwZV9lcXVhbC5JZC51aWQgdHlwZV9pZClcbiAgICAgICAgICAgICAgICAgIDogU2V4cC50KVxuICAgICAgICB9XVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZV9pZCBrZXkgPVxuICAgICAgbGV0IHR5cGVfaWQxID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBsZXQgdHlwZV9pZDIgPSBLZXkudHlwZV9pZCBrZXkgaW5cbiAgICAgIGlmIFR5cGVfZXF1YWwuSWQuc2FtZSB0eXBlX2lkMSB0eXBlX2lkMlxuICAgICAgdGhlbiB0eXBlX2lkMVxuICAgICAgZWxzZVxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIltLZXkudHlwZV9pZF0gbXVzdCBub3QgcHJvdmlkZSBkaWZmZXJlbnQgdHlwZSBpZHMgd2hlbiBjYWxsZWQgb24gdGhlIHNhbWUgXFxcbiAgICAgICAgICAgICBpbnB1dFwiXG4gICAgICAgICAgICAgIChrZXkgOiBfIEtleS50KVxuICAgICAgICAgICAgICAodHlwZV9pZDEgOiB0eXBlX2lkKVxuICAgICAgICAgICAgICAodHlwZV9pZDIgOiB0eXBlX2lkKV1cbiAgICA7O1xuICBlbmRcblxuICB0eXBlICgncywgJ2EpIGRhdGEgPSAoJ3MsICdhKSBEYXRhLnRcblxuICBsZXQgbmFtZV9vZl9rZXkga2V5ID0gVHlwZV9lcXVhbC5JZC5uYW1lIChLZXkudHlwZV9pZCBrZXkpXG4gIGxldCB1aWRfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQudWlkIChLZXkudHlwZV9pZCBrZXkpXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ3MgdCA9IFQgOiAnYSBLZXkudCAqICgncywgJ2EpIERhdGEudCAtPiAncyB0XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSAoVCAoa2V5LCBkYXRhKSkgPVxuICAgICAgRGF0YS5zZXhwX29mX3Qgc2V4cF9vZl9hIChUeXBlX2VxdWFsLklkLnRvX3NleHAgKEtleS50eXBlX2lkIGtleSkpIGRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWRfbmFtZSAoVCAoa2V5LCBfKSkgPSBuYW1lX29mX2tleSBrZXlcbiAgICBsZXQgdHlwZV9pZF91aWQgKFQgKGtleSwgXykpID0gdWlkX29mX2tleSBrZXlcblxuICAgIGxldCBjb21wYXJlIHQxIHQyID1cbiAgICAgIGxldCBjID0gU3RyaW5nLmNvbXBhcmUgKHR5cGVfaWRfbmFtZSB0MSkgKHR5cGVfaWRfbmFtZSB0MikgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBVaWQuY29tcGFyZSAodHlwZV9pZF91aWQgdDEpICh0eXBlX2lkX3VpZCB0MilcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdzIHQgPSAncyBQYWNrZWQudCBNYXAuTShVaWQpLnRcblxuICBsZXQgdG9fYWxpc3QgdCA9IE1hcC5kYXRhIHQgfD4gTGlzdC5zb3J0IH5jb21wYXJlOlBhY2tlZC5jb21wYXJlXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgdG9fYWxpc3QgdFxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gcGFja2VkIC0+IFBhY2tlZC50eXBlX2lkX25hbWUgcGFja2VkLCBwYWNrZWQpXG4gICAgfD4gWyVzZXhwX29mOiAoc3RyaW5nICogYSBQYWNrZWQudCkgbGlzdF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50ICh0IDogXyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIE1hcC5pdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBhc3NlcnQgKFVpZC5lcXVhbCBrZXkgKFBhY2tlZC50eXBlX2lkX3VpZCBkYXRhKSkpKVxuICA7O1xuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID0gTWFwLnNldCB0IH5rZXk6KHVpZF9vZl9rZXkga2V5KSB+ZGF0YTooUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gIGxldCBtZW1fYnlfaWQgdCBpZCA9IE1hcC5tZW0gdCBpZFxuICBsZXQgbWVtIHQga2V5ID0gbWVtX2J5X2lkIHQgKHVpZF9vZl9rZXkga2V5KVxuICBsZXQgcmVtb3ZlX2J5X2lkIHQgaWQgPSBNYXAucmVtb3ZlIHQgaWRcbiAgbGV0IHJlbW92ZSB0IGtleSA9IHJlbW92ZV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IGVtcHR5ID0gTWFwLmVtcHR5IChtb2R1bGUgVWlkKVxuXG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPVxuICAgIE1hcC5zaW5nbGV0b24gKG1vZHVsZSBVaWQpICh1aWRfb2Zfa2V5IGtleSkgKFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICA7O1xuXG4gIGxldCBpc19lbXB0eSA9IE1hcC5pc19lbXB0eVxuXG4gIGxldCBmaW5kICh0eXBlIGIpIHQgKGtleSA6IGIgS2V5LnQpID1cbiAgICBtYXRjaCBNYXAuZmluZCB0ICh1aWRfb2Zfa2V5IGtleSkgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChQYWNrZWQuVCAoa2V5JywgdmFsdWUpKSAtPlxuICAgICAgKCogY2Fubm90IHJhaXNlIC0tIHNlZSBbaW52YXJpYW50XSAqKVxuICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQga2V5KSAoS2V5LnR5cGVfaWQga2V5JylcbiAgICAgIGluXG4gICAgICBTb21lICh2YWx1ZSA6IChfLCBiKSBEYXRhLnQpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+IFByaW50Zi5mYWlsd2l0aGYgXCJVbml2X21hcC5maW5kX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPSBpZiBtZW0gdCBrZXkgdGhlbiBgRHVwbGljYXRlIGVsc2UgYE9rIChzZXQgdCB+a2V5IH5kYXRhKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBgT2sgdCAtPiB0XG4gICAgfCBgRHVwbGljYXRlIC0+XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuYWRkX2V4biBvbiBleGlzdGluZyBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBjaGFuZ2VfZXhuIHQga2V5IH5mOnVwZGF0ZSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIGRhdGEpXG4gICAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuY2hhbmdlX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIGxldCBvcmlnID0gZmluZCB0IGtleSBpblxuICAgIGxldCBuZXh0ID0gdXBkYXRlIG9yaWcgaW5cbiAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgfCBOb25lIC0+IGlmIE9wdGlvbi5pc19ub25lIG9yaWcgdGhlbiB0IGVsc2UgcmVtb3ZlIHQga2V5XG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiA9IGNoYW5nZSB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSlcblxuICBsZXQgb2ZfYWxpc3RfZXhuIHQgPVxuICAgIE1hcC5vZl9hbGlzdF9leG4gKG1vZHVsZSBVaWQpIChMaXN0Lm1hcCB0IH5mOihmdW4gcCAtPiBQYWNrZWQudHlwZV9pZF91aWQgcCwgcCkpXG4gIDs7XG5cbiAgbGV0IHR5cGVfZXF1YWwgOiAoJ3MgdCwgJ3MgUGFja2VkLnQgTWFwLk0oVHlwZV9lcXVhbC5JZC5VaWQpLnQpIFR5cGVfZXF1YWwudCA9IFRcbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBNID1cbiAgICBNYWtlMVxuICAgICAgKEtleSlcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgJ2EpIHQgPSAnYSBEYXRhLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZClcblxuICB0eXBlIHQgPSB1bml0IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBLZXkgPSBLZXlcblxuICB0eXBlICdhIGRhdGEgPSAnYSBEYXRhLnRcblxuICBsZXQgaW52YXJpYW50ID0gTS5pbnZhcmlhbnRcbiAgbGV0IGVtcHR5ID0gTS5lbXB0eVxuICBsZXQgc2luZ2xldG9uID0gTS5zaW5nbGV0b25cbiAgbGV0IGlzX2VtcHR5ID0gTS5pc19lbXB0eVxuICBsZXQgc2V0ID0gTS5zZXRcbiAgbGV0IG1lbSA9IE0ubWVtXG4gIGxldCBtZW1fYnlfaWQgPSBNLm1lbV9ieV9pZFxuICBsZXQgZmluZCA9IE0uZmluZFxuICBsZXQgZmluZF9leG4gPSBNLmZpbmRfZXhuXG4gIGxldCBhZGQgPSBNLmFkZFxuICBsZXQgYWRkX2V4biA9IE0uYWRkX2V4blxuICBsZXQgY2hhbmdlID0gTS5jaGFuZ2VcbiAgbGV0IGNoYW5nZV9leG4gPSBNLmNoYW5nZV9leG5cbiAgbGV0IHVwZGF0ZSA9IE0udXBkYXRlXG4gIGxldCByZW1vdmUgPSBNLnJlbW92ZVxuICBsZXQgcmVtb3ZlX2J5X2lkID0gTS5yZW1vdmVfYnlfaWRcblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAncyB0MSA9ICdzIE0uUGFja2VkLnQgPSBUIDogJ2EgS2V5LnQgKiAnYSBEYXRhLnQgLT4gJ3MgdDFcbiAgICB0eXBlIHQgPSB1bml0IHQxXG4gIGVuZFxuXG4gIGxldCB0b19hbGlzdCA9IE0udG9fYWxpc3RcbiAgbGV0IG9mX2FsaXN0X2V4biA9IE0ub2ZfYWxpc3RfZXhuXG4gIGxldCB0eXBlX2VxdWFsIDogKHQsIFBhY2tlZC50IE1hcC5NKFR5cGVfZXF1YWwuSWQuVWlkKS50KSBUeXBlX2VxdWFsLnQgPSBUXG5lbmRcblxubW9kdWxlIE1lcmdlIChLZXkgOiBLZXkpIChJbnB1dDFfZGF0YSA6IERhdGEpIChJbnB1dDJfZGF0YSA6IERhdGEpIChPdXRwdXRfZGF0YSA6IERhdGEpID1cbnN0cnVjdFxuICB0eXBlIGYgPVxuICAgIHsgZiA6XG4gICAgICAgICdhLlxuICAgICAgICAgIGtleTonYSBLZXkudFxuICAgICAgICAtPiBbIGBMZWZ0IG9mICdhIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgJ2EgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICB8IGBCb3RoIG9mICdhIElucHV0MV9kYXRhLnQgKiAnYSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gJ2EgT3V0cHV0X2RhdGEudCBvcHRpb25cbiAgICB9XG5cbiAgbW9kdWxlIE91dHB1dCA9IE1ha2UgKEtleSkgKE91dHB1dF9kYXRhKVxuXG4gIGxldCBtZXJnZSAodDEgOiBNYWtlKEtleSkoSW5wdXQxX2RhdGEpLnQpICh0MiA6IE1ha2UoS2V5KShJbnB1dDJfZGF0YSkudCkgfmY6eyBmIH1cbiAgICA6IE1ha2UoS2V5KShPdXRwdXRfZGF0YSkudFxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0Lk0uUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gICAgaW5cbiAgICBNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYExlZnQgZGF0YSlcbiAgICAgIHwgYFJpZ2h0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBSaWdodCBkYXRhKVxuICAgICAgfCBgQm90aCAoVCAobGVmdF9rZXksIGxlZnRfZGF0YSksIFQgKHJpZ2h0X2tleSwgcmlnaHRfZGF0YSkpIC0+XG4gICAgICAgICgqIENhbid0IHJhaXNlIGR1ZSB0byB0aGUgaW52YXJpYW50ICopXG4gICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQgbGVmdF9rZXkpIChLZXkudHlwZV9pZCByaWdodF9rZXkpXG4gICAgICAgIGluXG4gICAgICAgIGYgfmtleTpsZWZ0X2tleSAoYEJvdGggKGxlZnRfZGF0YSwgcmlnaHRfZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNZXJnZTFcbiAgICAoS2V5IDogS2V5KVxuICAgIChJbnB1dDFfZGF0YSA6IERhdGExKVxuICAgIChJbnB1dDJfZGF0YSA6IERhdGExKVxuICAgIChPdXRwdXRfZGF0YSA6IERhdGExKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ3MxLCAnczIsICdzMykgZiA9XG4gICAgeyBmIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICAga2V5OidhIEtleS50XG4gICAgICAgIC0+IFsgYExlZnQgb2YgKCdzMSwgJ2EpIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgKCdzMiwgJ2EpIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgfCBgQm90aCBvZiAoJ3MxLCAnYSkgSW5wdXQxX2RhdGEudCAqICgnczIsICdhKSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gKCdzMywgJ2EpIE91dHB1dF9kYXRhLnQgb3B0aW9uXG4gICAgfVxuXG4gIG1vZHVsZSBPdXRwdXQgPSBNYWtlMSAoS2V5KSAoT3V0cHV0X2RhdGEpXG5cbiAgbGV0IG1lcmdlXG4gICAgICAgICh0eXBlIHMxIHMyKVxuICAgICAgICAodDEgOiBzMSBNYWtlMShLZXkpKElucHV0MV9kYXRhKS50KVxuICAgICAgICAodDIgOiBzMiBNYWtlMShLZXkpKElucHV0Ml9kYXRhKS50KVxuICAgICAgICB+Zjp7IGYgfVxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0LlBhY2tlZC5UIChrZXksIGRhdGEpKVxuICAgIGluXG4gICAgTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBMZWZ0IGRhdGEpXG4gICAgICB8IGBSaWdodCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgUmlnaHQgZGF0YSlcbiAgICAgIHwgYEJvdGggKFQgKGxlZnRfa2V5LCBsZWZ0X2RhdGEpLCBUIChyaWdodF9rZXksIHJpZ2h0X2RhdGEpKSAtPlxuICAgICAgICAoKiBDYW4ndCByYWlzZSBkdWUgdG8gdGhlIGludmFyaWFudCAqKVxuICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGxlZnRfa2V5KSAoS2V5LnR5cGVfaWQgcmlnaHRfa2V5KVxuICAgICAgICBpblxuICAgICAgICBmIH5rZXk6bGVmdF9rZXkgKGBCb3RoIChsZWZ0X2RhdGEsIHJpZ2h0X2RhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgVHlwZV9pZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVHlwZV9lcXVhbC5JZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHR5cGVfaWQgPSBGbi5pZFxuZW5kXG5cbmluY2x1ZGUgKFxuICBNYWtlXG4gICAgKFR5cGVfaWRfa2V5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kKSA6XG4gICAgUyB3aXRoIHR5cGUgJ2EgZGF0YSA9ICdhIGFuZCBtb2R1bGUgS2V5IDo9IFR5cGVfaWRfa2V5KVxuXG5tb2R1bGUgS2V5ID0gVHlwZV9lcXVhbC5JZFxuXG5tb2R1bGUgV2l0aF9kZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBrZXkgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgIDsgZGVmYXVsdCA6ICdhXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5kZWZhdWx0IH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBkZWZhdWx0OyBrZXkgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSBzZXhwX29mIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIHQgPSB0LmtleVxuICBlbmRcblxuICBsZXQgZmluZCB0IHsgS2V5LmtleTsgZGVmYXVsdCB9ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0IChmaW5kIHQga2V5KVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGRlZmF1bHQgPSBfIH0gfmRhdGEgPSBzZXQgdCB+a2V5IH5kYXRhXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmY6dXBkYXRlID0gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIChmaW5kIHQga2V5KSlcbmVuZFxuXG5tb2R1bGUgV2l0aF9mb2xkID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgeyBrZXkgOiAnYiBXaXRoX2RlZmF1bHQuS2V5LnRcbiAgICAgIDsgZiA6ICdiIC0+ICdhIC0+ICdiXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5pbml0IH5mIH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBmOyBrZXkgPSBXaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDppbml0IH5uYW1lIHNleHBfb2YgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgdCA9IFdpdGhfZGVmYXVsdC5LZXkuaWQgdC5rZXlcbiAgZW5kXG5cbiAgbGV0IGZpbmQgdCB7IEtleS5rZXk7IGYgPSBfIH0gPSBXaXRoX2RlZmF1bHQuZmluZCB0IGtleVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGYgPSBfIH0gfmRhdGEgPSBXaXRoX2RlZmF1bHQuc2V0IHQgfmtleSB+ZGF0YVxuICBsZXQgY2hhbmdlIHQgeyBLZXkua2V5OyBmID0gXyB9IH5mOnVwZGF0ZSA9IFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6dXBkYXRlXG5cbiAgbGV0IGFkZCB0IH5rZXk6eyBLZXkua2V5OyBmIH0gfmRhdGEgPVxuICAgIFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6KGZ1biBhY2MgLT4gZiBhY2MgZGF0YSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcbiAgb3BlbiBXaXRoX2ZvbGRcblxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCAnYSBsaXN0KSBLZXkudFxuXG4gICAgbGV0IGNyZWF0ZSB+bmFtZSBzZXhwX29mID1cbiAgICAgIEtleS5jcmVhdGUgfmluaXQ6W10gfmY6KGZ1biB4cyB4IC0+IHggOjogeHMpIH5uYW1lIChMaXN0LnNleHBfb2ZfdCBzZXhwX29mKVxuICAgIDs7XG5cbiAgICBsZXQgaWQgPSBXaXRoX2ZvbGQuS2V5LmlkXG4gIGVuZFxuXG4gIGxldCBzZXQgPSBzZXRcbiAgbGV0IGZpbmQgPSBmaW5kXG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGNoYW5nZSA9IGNoYW5nZVxuZW5kXG4iLCJpbmNsdWRlIHN0cnVjdFxuICBvcGVuIFN0ZGlvXG5cbiAgbGV0IGVwcmludGYgPSBlcHJpbnRmXG4gIGxldCBwcmludGYgPSBwcmludGZcbiAgbGV0IHByaW50X3MgPSBwcmludF9zXG4gIGxldCBwcmludF9zdHJpbmcgPSBwcmludF9zdHJpbmdcbiAgbGV0IHByaW50X2VuZGxpbmUgPSBwcmludF9lbmRsaW5lXG4gIGxldCBwcmVycl9lbmRsaW5lID0gcHJlcnJfZW5kbGluZVxuXG4gIG1vZHVsZSBJbl9jaGFubmVsID0gSW5fY2hhbm5lbFxuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gQmFzZS5QcmludGZcblxuICBsZXQgc3ByaW50ZiA9IHNwcmludGZcbiAgbGV0IGZhaWx3aXRoZiA9IGZhaWx3aXRoZlxuICBsZXQga3NwcmludGYgPSBrc3ByaW50ZlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBDT01NQU5EX09VVFBVVF9JTlNUQUxMQVRJT05fQkFTSFxuICB8IENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuICB8IENPTVBfQ1dPUkRcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF9vZl1cblxubGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCB0KVxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFNleHBsaWIwLlNleHBfY29udlxuICBvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG4gIG9wZW4gUHB4X3N0YWJsZV93aXRuZXNzX3J1bnRpbWUuU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5cbiAgbW9kdWxlIExhenkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3QgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgY29tcGFyZSA9IEJhc2UuTGF6eS5jb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICAgIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB8IFplcm9cbiAgICAgICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgICAgICB8IE1hbnkgb2YgdFxuICAgICAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBsZXQgcmVjIGludmFyaWFudCB0ID1cbiAgICAgICAgICBCYXNlLkludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IFplcm8gLT4gKClcbiAgICAgICAgICAgIHwgT25lIF8gLT4gKClcbiAgICAgICAgICAgIHwgTWFueSBaZXJvIC0+IGZhaWx3aXRoIFwiTWFueSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYW55IHQgLT4gaW52YXJpYW50IHRcbiAgICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcIk1heWJlIFplcm8gc2hvdWxkIGJlIGp1c3QgWmVyb1wiXG4gICAgICAgICAgICB8IE1heWJlIHQgLT4gaW52YXJpYW50IHRcbiAgICAgICAgICAgIHwgQ29uY2F0IFtdIHwgQ29uY2F0IFsgXyBdIC0+IGZhaWx3aXRoIFwiRmxhdHRlbiB6ZXJvIGFuZCBvbmUtZWxlbWVudCBDb25jYXRcIlxuICAgICAgICAgICAgfCBDb25jYXQgdHMgLT4gQmFzZS5MaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50XG4gICAgICAgICAgICB8IEFkX2hvYyBfIC0+ICgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IHQgPSBbJW9mX3NleHA6IHRdIHNleHAgaW5cbiAgICAgICAgICBpbnZhcmlhbnQgdDtcbiAgICAgICAgICB0XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyB1c2FnZSA9XG4gICAgICAgICAgbGV0IG9wZW4gSW1wb3J0IGluXG4gICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IFplcm8gLT4gXCJcIlxuICAgICAgICAgIHwgT25lIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgfCBNYW55IFplcm8gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICAgfCBNYW55IChPbmUgXyBhcyB0KSAtPiBzcHJpbnRmIFwiWyVzIC4uLl1cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IE1hbnkgdCAtPiBzcHJpbnRmIFwiWyglcykgLi4uXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgICB8IE1heWJlIHQgLT4gc3ByaW50ZiBcIlslc11cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IENvbmNhdCB0cyAtPiBCYXNlLlN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoQmFzZS5MaXN0Lm1hcCB0cyB+Zjp1c2FnZSlcbiAgICAgICAgICB8IEFkX2hvYyB1c2FnZSAtPiB1c2FnZVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IGFub25zIDogQW5vbnMuVjIudFxuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgdXNhZ2UgOiBzdHJpbmdcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgeyBzdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFncyB9ID1cbiAgICAgICAgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zID0gVXNhZ2UgdXNhZ2U7IGZsYWdzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zOyBmbGFncyB9ID1cbiAgICAgICAgeyBzdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lXG4gICAgICAgIDsgdXNhZ2UgPVxuICAgICAgICAgICAgKG1hdGNoIGFub25zIHdpdGhcbiAgICAgICAgICAgICB8IFVzYWdlIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgICAgfCBHcmFtbWFyIGdyYW1tYXIgLT4gQW5vbnMuR3JhbW1hci5WMS51c2FnZSBncmFtbWFyKVxuICAgICAgICA7IGZsYWdzXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuICBlbmRcblxuICBtb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICAgIHR5cGUgYSA9IER1bW15X3R5cGVfYmVjYXVzZV93ZV9jYW5ub3RfZGlnZXN0X3R5cGVfY29uc3RydWN0b3JzX29ubHlfY29uY3JldGVfdHlwZXNcbiAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdCBMYXp5LnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICAgeyB0IHdpdGggc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCB0LnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZikgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgb3BlbiEgQmFzZVxuXG4gICAgICBsZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCBzdWJjb21tYW5kcyA9IExpc3QuQXNzb2MubWFwIHQuc3ViY29tbWFuZHMgfmYgfVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0IHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCA9XG4gICAgICAgIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IExhenkuZnJvbV92YWwgc3ViY29tbWFuZHMgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzIH0gOiAnYSBNb2RlbC50KSA6ICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZvcmNlIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgICBsZXQgYWJzX3BhdGggfmRpciBwYXRoID1cbiAgICAgIGlmIEZpbGVuYW1lX2Jhc2UuaXNfYWJzb2x1dGUgcGF0aCB0aGVuIHBhdGggZWxzZSBGaWxlbmFtZV9iYXNlLmNvbmNhdCBkaXIgcGF0aFxuICAgIDs7XG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fdjMgdCA6IFYzLnQgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgPSBbXVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjMgKHQgOiBWMy50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSB0LndvcmtpbmdfZGlyXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIFYzLnRvX2xhdGVzdCB0b192M1xuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBvZl92MyBWMy5vZl9sYXRlc3RcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7ICgqIFtwYXRoX3RvX2V4ZV0gbXVzdCBiZSBhYnNvbHV0ZS4gKilcbiAgICAgICAgICBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX3YyIHQgOiBWMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IFwiL1wiXG4gICAgICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl92MiAodCA6IFYyLnQpID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBCYXNlLkZuLmNvbXBvc2UgVjIudG9fbGF0ZXN0IHRvX3YyXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIG9mX3YyIFYyLm9mX2xhdGVzdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50ICogdFxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudFxuICAgICAgICB8IExhenkgb2YgdCBMYXp5LnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjIudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi50b19sYXRlc3QgZSlcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLnRvX2xhdGVzdCAoR3JvdXBfaW5mby5WMS5tYXAgZyB+Zjp0b19sYXRlc3QpKVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBvZl9sYXRlc3QgOiBNb2RlbC50IC0+IHQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIGJcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYyLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjEudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjEudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSAoQmFzZV9pbmZvLlYxLnRvX2xhdGVzdCBiKVxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjEudG9fbGF0ZXN0IGUpXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS50b19sYXRlc3QgKEdyb3VwX2luZm8uVjEubWFwIGcgfmY6dG9fbGF0ZXN0KSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgb2ZfbGF0ZXN0IDogTW9kZWwudCAtPiB0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSAoQmFzZV9pbmZvLlYxLm9mX2xhdGVzdCBiKVxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjEub2ZfbGF0ZXN0IGUpXG4gICAgICAgIHwgTGF6eSB0aHVuayAtPiBvZl9sYXRlc3QgKEJhc2UuTGF6eS5mb3JjZSB0aHVuaylcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLm1hcCAoR3JvdXBfaW5mby5WMS5vZl9sYXRlc3QgZykgfmY6b2ZfbGF0ZXN0KVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWZXJzaW9uZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVjEgb2YgVjEudFxuICAgICAgICB8IFYyIG9mIFYyLnRcbiAgICAgICAgfCBWMyBvZiBWMy50ICgqIGF2YWlsYWJsZSBhdCBsZWFzdCBzaW5jZSAyMDIwLTA0ICopXG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCB2YXJpYW50cywgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBmdW5jdGlvblxuICAgICAgICB8IFYxIHQgLT4gVjEudG9fbGF0ZXN0IHRcbiAgICAgICAgfCBWMiB0IC0+IFYyLnRvX2xhdGVzdCB0XG4gICAgICAgIHwgVjMgdCAtPiBWMy50b19sYXRlc3QgdFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCB+dmVyc2lvbl90b191c2UgbGF0ZXN0ID1cbiAgICAgICAgbWF0Y2ggdmVyc2lvbl90b191c2Ugd2l0aFxuICAgICAgICB8IDEgLT4gVjEgKFYxLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgMiAtPiBWMiAoVjIub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCAzIC0+IFYzIChWMy5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IG90aGVyIC0+XG4gICAgICAgICAgQmFzZS5FcnJvci5jcmVhdGVcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwidW5zdXBwb3J0ZWQgdmVyc2lvbl90b191c2VcIlxuICAgICAgICAgICAgb3RoZXJcbiAgICAgICAgICAgIFslc2V4cF9vZjogaW50XVxuICAgICAgICAgIHw+IEJhc2UuRXJyb3IucmFpc2VcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEJhc2Vcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEdyYW1tYXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgaW52YXJpYW50ID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwuaW52YXJpYW50XG4gICAgbGV0IHVzYWdlID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwudXNhZ2VcbiAgZW5kXG5cbiAgdHlwZSB0ID0gU3RhYmxlLkFub25zLk1vZGVsLnQgPVxuICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIudFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgbWF5YmVfbWlzc2luZ19wcmVmaXggPSBcIltcIlxuICBsZXQgbWF5YmVfbWlzc2luZ19zdWZmaXggPSBcIl1cIlxuICBsZXQgbWF5YmVfbW9yZV9zdWZmaXggPSBcIiAuLi5cIlxuXG4gIGxldCB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgPVxuICAgIGxldCB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9ID0gdCBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBpZiBhdF9sZWFzdF9vbmNlXG4gICAgICB0aGVuIGZsYWdfbmFtZVxuICAgICAgZWxzZSBTdHJpbmcuY29uY2F0IFsgbWF5YmVfbWlzc2luZ19wcmVmaXg7IGZsYWdfbmFtZTsgbWF5YmVfbWlzc2luZ19zdWZmaXggXVxuICAgIGluXG4gICAgaWYgYXRfbW9zdF9vbmNlIHRoZW4gZGVzY3JpcHRpb24gZWxzZSBTdHJpbmcuY29uY2F0IFsgZGVzY3JpcHRpb247IG1heWJlX21vcmVfc3VmZml4IF1cbiAgOztcblxuICBsZXQgb2ZfaGVscF9zdHJpbmcgbmFtZSA9XG4gICAgbGV0IGF0X21vc3Rfb25jZSwgbmFtZSA9XG4gICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggbmFtZSB+c3VmZml4Om1heWJlX21vcmVfc3VmZml4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBuYW1lXG4gICAgICB8IFNvbWUgbmFtZSAtPiBmYWxzZSwgbmFtZVxuICAgIGluXG4gICAgbGV0IGF0X2xlYXN0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgU3RyaW5nLmNob3BfcHJlZml4IG5hbWUgfnByZWZpeDptYXliZV9taXNzaW5nX3ByZWZpeFxuICAgICAgICB8PiBPcHRpb24uYmluZCB+ZjooU3RyaW5nLmNob3Bfc3VmZml4IH5zdWZmaXg6bWF5YmVfbWlzc2luZ19zdWZmaXgpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlIH0sIG5hbWVcbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJ0b19oZWxwX3N0cmluZ1wiID1cbiAgICBsZXQgZmxhZ19uYW1lID0gXCJuYW1lXCIgaW5cbiAgICBMaXN0Lml0ZXIgWyVhbGw6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgbGV0IHMgPSB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgaW5cbiAgICAgIHByaW50X3MgWyVtZXNzYWdlIFwiXCIgfl86KHQgOiB0KSBzXTtcbiAgICAgIGxldCB0JywgZmxhZ19uYW1lJyA9IG9mX2hlbHBfc3RyaW5nIHMgaW5cbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSB0IHQnKTtcbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiBzdHJpbmddIGZsYWdfbmFtZSBmbGFnX25hbWUnKSk7XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgZmFsc2UpIChhdF9tb3N0X29uY2UgZmFsc2UpKSBcIltuYW1lXSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSB0cnVlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJuYW1lIC4uLlwiKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIHRydWUpKSBbbmFtZV0pXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgbmFtZSkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRmxhZ19pbmZvLk1vZGVsLnQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZG9jIDogc3RyaW5nXG4gICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgcGFyc2VfbmFtZSB0ID1cbiAgICBsZXQgbnVtX29jY3VycmVuY2VzLCBmbGFnX25hbWUgPSBOdW1fb2NjdXJyZW5jZXMub2ZfaGVscF9zdHJpbmcgdC5uYW1lIGluXG4gICAgbWF0Y2ggU3RyaW5nLnNwbGl0IGZsYWdfbmFtZSB+b246JyAnIHdpdGhcbiAgICB8IFsgZmxhZ19uYW1lIF0gLT4gT2sgKG51bV9vY2N1cnJlbmNlcywgZmFsc2UsIGZsYWdfbmFtZSlcbiAgICB8IFsgZmxhZ19uYW1lOyBfYXJnX2RvYyBdIC0+IE9rIChudW1fb2NjdXJyZW5jZXMsIHRydWUsIGZsYWdfbmFtZSlcbiAgICB8IF8gLT4gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuYWJsZSB0byBwYXJzZVwiIGZsYWdfbmFtZV0pXG4gIDs7XG5cbiAgKCogVXNlcnMgYXJlIGxpa2VseSB0byBjYWxsIGFsbCB0aHJlZSBvZiB0aGVzZSBmdW5jdGlvbnMsIGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCByZS1wYXJzZVxuICAgICB0aGUgW25hbWVdIHNldmVyYWwgdGltZXMuIFdlIGRvbid0IGV4cGVjdCB1c2VycyBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gY2FyZSBhYm91dCB0aGVcbiAgICAgaW5lZmZpY2llbmN5LiAqKVxuICBsZXQgZmxhZ19uYW1lIHQgPVxuICAgIHBhcnNlX25hbWUgdFxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICgoXyA6IE51bV9vY2N1cnJlbmNlcy50KSwgKF8gOiBib29sKSwgZmxhZ19uYW1lKSAtPiBmbGFnX25hbWUpXG4gIDs7XG5cbiAgbGV0IG51bV9vY2N1cnJlbmNlcyB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAobnVtX29jY3VycmVuY2VzLCAoXyA6IGJvb2wpLCAoXyA6IHN0cmluZykpIC0+XG4gICAgICBudW1fb2NjdXJyZW5jZXMpXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVzX2FyZyB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoKF8gOiBOdW1fb2NjdXJyZW5jZXMudCksIHJlcXVpcmVzX2FyZywgKF8gOiBzdHJpbmcpKSAtPlxuICAgICAgcmVxdWlyZXNfYXJnKVxuICA7O1xuXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBfLCBcIlstaGVscF1cIiAtPiAtMVxuICAgIHwgXCJbLWhlbHBdXCIsIF8gLT4gMVxuICAgIHwgXywgXCJbLXZlcnNpb25dXCIgLT4gLTFcbiAgICB8IFwiWy12ZXJzaW9uXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiWy1idWlsZC1pbmZvXVwiIC0+IC0xXG4gICAgfCBcIlstYnVpbGQtaW5mb11cIiwgXyAtPiAxXG4gICAgfCBfLCBcImhlbHBcIiAtPiAtMVxuICAgIHwgXCJoZWxwXCIsIF8gLT4gMVxuICAgIHwgXywgXCJ2ZXJzaW9uXCIgLT4gLTFcbiAgICB8IFwidmVyc2lvblwiLCBfIC0+IDFcbiAgICB8IF8gLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2hlbHBfZGlzcGxheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBGbGFnX2luZm8udCBsaXN0XG5cbiAgbGV0IHNvcnQgdCA9XG4gICAgTGlzdC5zdGFibGVfc29ydCB0IH5jb21wYXJlOihmdW4gYSBiIC0+XG4gICAgICBGbGFnX2luZm8uaGVscF9zY3JlZW5fY29tcGFyZSBhLkZsYWdfaW5mby5uYW1lIGIuRmxhZ19pbmZvLm5hbWUpXG4gIDs7XG5cbiAgbGV0IHdvcmRfd3JhcF9hbmRfc3RyaXAgdGV4dCB3aWR0aCA9XG4gICAgbGV0IGNodW5rcyA9IFN0cmluZy5zcGxpdCB0ZXh0IH5vbjonXFxuJyBpblxuICAgIExpc3QuY29uY2F0X21hcCBjaHVua3MgfmY6KGZ1biB0ZXh0IC0+XG4gICAgICBsZXQgd29yZHMgPVxuICAgICAgICBTdHJpbmcuc3BsaXQgdGV4dCB+b246JyAnXG4gICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gd29yZCAtPiBub3QgKFN0cmluZy5pc19lbXB0eSB3b3JkKSlcbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBMaXN0LmZvbGQgd29yZHMgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyB3b3JkIC0+XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKG1hdGNoIGFjYyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IFtdLCB3b3JkXG4gICAgICAgICAgICAgfCBTb21lIChsaW5lcywgbGluZSkgLT5cbiAgICAgICAgICAgICAgICgqIGVmZmljaWVuY3kgaXMgbm90IGEgY29uY2VybiBmb3IgdGhlIHN0cmluZyBsZW5ndGhzIHdlIGV4cGVjdCAqKVxuICAgICAgICAgICAgICAgbGV0IGxpbmVfYW5kX3dvcmQgPSBsaW5lIF4gXCIgXCIgXiB3b3JkIGluXG4gICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGxpbmVfYW5kX3dvcmQgPD0gd2lkdGhcbiAgICAgICAgICAgICAgIHRoZW4gbGluZXMsIGxpbmVfYW5kX3dvcmRcbiAgICAgICAgICAgICAgIGVsc2UgbGluZSA6OiBsaW5lcywgd29yZCkpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSAobGluZXMsIGxpbmUpIC0+IExpc3QucmV2IChsaW5lIDo6IGxpbmVzKSlcbiAgOztcblxuICBtb2R1bGUgRGlzcGxheSA6IHNpZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbnVtX2NvbHMgPSA4MFxuICAgIGxldCBzcGFjZXNfc3RyaW5nIHdpZHRoID0gU3RyaW5nLm1ha2Ugd2lkdGggJyAnXG5cbiAgICBsZXQgcGFkX3NwYWNlc190b19zdWZmaXggeCB+d2lkdGggPVxuICAgICAgbGV0IHNsYWNrID0gd2lkdGggLSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICAgIHggXiBzcGFjZXNfc3RyaW5nIHNsYWNrXG4gICAgOztcblxuICAgIGxldCBpbmRlbnRhdGlvbiA9IFwiICBcIlxuICAgIGxldCBpbmRlbnRfYW5kX25ld2xpbmUgeCA9IExpc3QuY29uY2F0IFsgWyBpbmRlbnRhdGlvbiBdOyB4OyBbIFwiXFxuXCIgXSBdXG4gICAgbGV0IHNwYWNpbmdfZG90ID0gXCIuIFwiXG5cbiAgICBsZXQgZG90X2luZGVudGF0aW9uX29mZnNldCA9XG4gICAgICAyN1xuICAgIDs7XG5cbiAgICBsZXQgZG9jdW1lbnRhdGlvbl9zdGFydF9jb2x1bW4gPSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvblxuICAgIGxldCBsaHNfd2lkdGggPSBkb2N1bWVudGF0aW9uX3N0YXJ0X2NvbHVtblxuICAgIGxldCBsaHNfcGFkX3dpZHRoID0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb25cbiAgICBsZXQgbGhzX3BhZCA9IHNwYWNlc19zdHJpbmcgbGhzX3BhZF93aWR0aFxuXG4gICAgbGV0IGxoc19wYWRfYW5kX25ld2xpbmVfdGVybWluYXRlID1cbiAgICAgIExpc3QubWFwIH5mOihmdW4gdiAtPiBpbmRlbnRfYW5kX25ld2xpbmUgWyBsaHNfcGFkOyB2IF0pXG4gICAgOztcblxuICAgIGxldCByb3dzIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgZG9jdW1lbnRhdGlvbiA9XG4gICAgICBsZXQgZmxhZ19vbl9pdHNfb3duX2xpbmUgPVxuICAgICAgICBsZXQgZmxhZ193aWR0aCA9XG4gICAgICAgICAgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvbiArIFN0cmluZy5sZW5ndGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICBpblxuICAgICAgICBpZiBmbGFnX3dpZHRoID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIHNwYWNpbmdfZG90XG4gICAgICAgIHRoZW4gaW5kZW50X2FuZF9uZXdsaW5lIFsgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbmRlbnRfYW5kX25ld2xpbmVcbiAgICAgICAgICAgIFsgcGFkX3NwYWNlc190b19zdWZmaXggfndpZHRoOmRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICAgICAgOyBzcGFjaW5nX2RvdFxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIGxldCB3cmFwcGVkX2RvY3VtZW50YXRpb24gPVxuICAgICAgICB3b3JkX3dyYXBfYW5kX3N0cmlwXG4gICAgICAgICAgZG9jdW1lbnRhdGlvblxuICAgICAgICAgIChudW1fY29scyAtIGxoc193aWR0aCAtIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb24pXG4gICAgICBpblxuICAgICAgbWF0Y2ggd3JhcHBlZF9kb2N1bWVudGF0aW9uIHdpdGhcbiAgICAgIHwgW10gLT4gWyBmbGFnX29uX2l0c19vd25fbGluZSBdXG4gICAgICB8IGRvY193cmFwcGVkX2ZpcnN0X2xpbmUgOjogZG9jX3dyYXBwZWRfcmVzdF9saW5lcyAtPlxuICAgICAgICBsZXQgd3JhcHBlZF9kb2NfbGluZXMgPSBsaHNfcGFkX2FuZF9uZXdsaW5lX3Rlcm1pbmF0ZSBkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIGluXG4gICAgICAgIGxldCBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIHggPVxuICAgICAgICAgIGluZGVudF9hbmRfbmV3bGluZVxuICAgICAgICAgICAgWyBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB+d2lkdGg6ZG90X2luZGVudGF0aW9uX29mZnNldCB4XG4gICAgICAgICAgICA7IHNwYWNpbmdfZG90XG4gICAgICAgICAgICA7IGRvY193cmFwcGVkX2ZpcnN0X2xpbmVcbiAgICAgICAgICAgIF1cbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXRcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZsYWdfb25faXRzX293bl9saW5lXG4gICAgICAgICAgOjogcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCBcIlwiXG4gICAgICAgICAgOjogd3JhcHBlZF9kb2NfbGluZXNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA6OiB3cmFwcGVkX2RvY19saW5lc1xuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgTGlzdC5jb25jYXRfbWFwIHQgfmY6KGZ1biB0IC0+XG4gICAgICAgIGxldCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID1cbiAgICAgICAgICBsZXQgZmxhZyA9IHQuRmxhZ19pbmZvLm5hbWUgaW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChmbGFnIDo6IHQuYWxpYXNlcylcbiAgICAgICAgaW5cbiAgICAgICAgcm93cyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIHQuZG9jIHw+IExpc3QuY29uY2F0KVxuICAgICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IERpc3BsYXkudG9fc3RyaW5nIHRcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFN1YmNvbW1hbmRcbiAgICB8IEZsYWdcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN1YmNvbW1hbmQgLT4gXCJzdWJjb21tYW5kXCJcbiAgICB8IEZsYWcgLT4gXCJmbGFnXCJcbiAgOztcbmVuZFxuXG5sZXQgbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGUgPVxuICBsZXQgaXNfZGFzaCA9IENoYXIuZXF1YWwgJy0nIGluXG4gIGxldCBhbGlzdCA9XG4gICAgKCogbm8gcGFydGlhbCBtYXRjaGVzIHVubGVzcyBzb21lIG5vbi1kYXNoIGNoYXIgaXMgcHJlc2VudCAqKVxuICAgIGlmIFN0cmluZy5mb3JfYWxsIHByZWZpeCB+Zjppc19kYXNoXG4gICAgdGhlbiBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIChkYXRhLCBfKSkgLT4ga2V5LCAoZGF0YSwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpKVxuICAgIGVsc2UgYWxpc3RcbiAgaW5cbiAgbWF0Y2hcbiAgICBMaXN0LmZpbHRlciBhbGlzdCB+ZjooZnVuY3Rpb25cbiAgICAgIHwga2V5LCAoXywgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpIC0+IFN0cmluZy4oID0gKSBrZXkgcHJlZml4XG4gICAgICB8IGtleSwgKF8sIGBQcmVmaXgpIC0+IFN0cmluZy5pc19wcmVmaXgga2V5IH5wcmVmaXgpXG4gIHdpdGhcbiAgfCBbIChrZXksIChkYXRhLCBfbmFtZV9tYXRjaGluZykpIF0gLT4gT2sgKGtleSwgZGF0YSlcbiAgfCBbXSAtPiBFcnJvciAoc3ByaW50ZiAhXCJ1bmtub3duICV7S2V5X3R5cGV9ICVzXCIga2V5X3R5cGUgcHJlZml4KVxuICB8IG1hdGNoZXMgLT5cbiAgICAobWF0Y2ggTGlzdC5maW5kIG1hdGNoZXMgfmY6KGZ1biAoa2V5LCBfKSAtPiBTdHJpbmcuKCA9ICkga2V5IHByZWZpeCkgd2l0aFxuICAgICB8IFNvbWUgKGtleSwgKGRhdGEsIF9uYW1lX21hdGNoaW5nKSkgLT4gT2sgKGtleSwgZGF0YSlcbiAgICAgfCBOb25lIC0+XG4gICAgICAgbGV0IG1hdGNoaW5nX2tleXMgPSBMaXN0Lm1hcCB+Zjpmc3QgbWF0Y2hlcyBpblxuICAgICAgIEVycm9yXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIVwiJXtLZXlfdHlwZX0gJXMgaXMgYW4gYW1iaWd1b3VzIHByZWZpeDogJXNcIlxuICAgICAgICAgICAga2V5X3R5cGVcbiAgICAgICAgICAgIHByZWZpeFxuICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgbWF0Y2hpbmdfa2V5cykpKVxuOztcblxubW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuQmFzZV9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgYW5vbnMgOiBBbm9ucy50XG4gICAgOyBmbGFncyA6IEZsYWdfaW5mby50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgZmluZF9mbGFnIHQgcHJlZml4ID1cbiAgICBtYXRjaCBTdHJpbmcuaXNfcHJlZml4IHByZWZpeCB+cHJlZml4OlwiLVwiIHdpdGhcbiAgICB8IGZhbHNlIC0+IEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJGbGFncyBtdXN0IGJlZ2luIHdpdGggJy0nXCIgcHJlZml4XSlcbiAgICB8IHRydWUgLT5cbiAgICAgIGxldCViaW5kLk9yX2Vycm9yIGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCB0LmZsYWdzIH5mOihmdW4gKGZsYWdfaW5mbyA6IEZsYWdfaW5mby50KSAtPlxuICAgICAgICAgIGxldCViaW5kLk9yX2Vycm9yIGZsYWdfbmFtZSA9IEZsYWdfaW5mby5mbGFnX25hbWUgZmxhZ19pbmZvIGluXG4gICAgICAgICAgT2tcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoZmxhZ19uYW1lIDo6IGZsYWdfaW5mby5hbGlhc2VzKSB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgICAgICAga2V5LCAoZmxhZ19pbmZvLCBgUHJlZml4KSkpKVxuICAgICAgICB8PiBPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGxvb2t1cF9leHBhbmQgKExpc3QuY29uY2F0IGNob2ljZXMpIHByZWZpeCBGbGFnXG4gICAgICB8PiBSZXN1bHQubWFwX2Vycm9yIH5mOkVycm9yLm9mX3N0cmluZ1xuICAgICAgfD4gT3JfZXJyb3IubWFwIH5mOnNuZFxuICA7O1xuXG4gIGxldCBnZXRfdXNhZ2UgdCA9XG4gICAgbWF0Y2ggdC5hbm9ucyB3aXRoXG4gICAgfCBVc2FnZSB1c2FnZSAtPiB1c2FnZVxuICAgIHwgR3JhbW1hciBncmFtbWFyIC0+IEFub25zLkdyYW1tYXIudXNhZ2UgZ3JhbW1hclxuICA7O1xuZW5kXG5cbm1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QudCBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgZmluZF9zdWJjb21tYW5kIHQgcHJlZml4ID1cbiAgICBtYXRjaCBTdHJpbmcuaXNfcHJlZml4IHByZWZpeCB+cHJlZml4OlwiLVwiIHdpdGhcbiAgICB8IHRydWUgLT5cbiAgICAgIEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJTdWJjb21tYW5kcyBtdXN0IG5vdCBiZWdpbiB3aXRoICctJ1wiIHByZWZpeF0pXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCAoZm9yY2UgdC5zdWJjb21tYW5kcykgfmY6KGZ1biAoa2V5LCBhKSAtPiBrZXksIChhLCBgUHJlZml4KSlcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIGNob2ljZXMgcHJlZml4IFN1YmNvbW1hbmRcbiAgICAgIHw+IFJlc3VsdC5tYXBfZXJyb3IgfmY6RXJyb3Iub2Zfc3RyaW5nXG4gICAgICB8PiBPcl9lcnJvci5tYXAgfmY6c25kXG4gIDs7XG5cbiAgbGV0IG1hcCA9IFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLm1hcFxuZW5kXG5cbm1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkV4ZWNfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5lbmRcblxubW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRnVsbHlfZm9yY2VkLk1vZGVsLnQgPVxuICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gICAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogdFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBleHBhbmRlZF9zdWJjb21tYW5kcyB0ID1cbiAgICBsZXQgcmVjIGV4cGFuZCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4ZWMgKF8sIHQpIC0+IGV4cGFuZCB0XG4gICAgICB8IEJhc2ljIF8gLT4gWyBbXSBdXG4gICAgICB8IEdyb3VwIHsgc3ViY29tbWFuZHM7IF8gfSAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgKExhenkuZm9yY2Ugc3ViY29tbWFuZHMpIH5mOihmdW4gKG5hbWUsIHQpIC0+XG4gICAgICAgICAgTGlzdC5tYXAgfmY6KGZ1biBwYXRoIC0+IG5hbWUgOjogcGF0aCkgKGV4cGFuZCB0KSlcbiAgICBpblxuICAgICgqIFJldmVyc2luZyBzbyB0aGF0IHRoZSBjb21tYW5kcyBzaG93IHVwIGluIHRoZSBzYW1lIG9yZGVyIGFzIGhlbHAgaXMgb3V0cHV0ICopXG4gICAgTGlzdC5yZXYgKGV4cGFuZCB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuU2V4cGFibGUuTW9kZWwudCA9XG4gICAgfCBCYXNlIG9mIEJhc2VfaW5mby50XG4gICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICAgIHwgRXhlYyBvZiBFeGVjX2luZm8udFxuICAgIHwgTGF6eSBvZiB0IExhenkudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBleHRyYWN0aW9uX3ZhciA9IEVudl92YXIudG9fc3RyaW5nIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuXG4gIG1vZHVsZSBWZXJzaW9uZWQgPSBTdGFibGUuU2V4cGFibGUuVmVyc2lvbmVkXG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9XG4gICAgbGV0IGYgaSBzdXBwb3J0ZWQgXyA9IFNldC5hZGQgc3VwcG9ydGVkIGkgaW5cbiAgICBWZXJzaW9uZWQuVmFyaWFudHMuZm9sZCB+aW5pdDooU2V0LmVtcHR5IChtb2R1bGUgSW50KSkgfnYxOihmIDEpIH52MjooZiAyKSB+djM6KGYgMylcbiAgOztcblxuICBsZXQgb2ZfdmVyc2lvbmVkID0gVmVyc2lvbmVkLnRvX2xhdGVzdFxuICBsZXQgdG9fdmVyc2lvbmVkIHQgfnZlcnNpb25fdG9fdXNlID0gVmVyc2lvbmVkLm9mX2xhdGVzdCB0IH52ZXJzaW9uX3RvX3VzZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiAodW5pdCAtPiB0KVxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBmdWxseV9mb3JjZWQgOiB0IC0+IEZ1bGx5X2ZvcmNlZC50ID0gZnVuY3Rpb25cbiAgfCBCYXNpYyBiIC0+IEJhc2ljIGJcbiAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLm1hcCBnIH5mOmZ1bGx5X2ZvcmNlZClcbiAgfCBFeGVjIChlLCBmKSAtPiBFeGVjIChlLCBmdWxseV9mb3JjZWQgKGYgKCkpKVxuICB8IExhenkgdGh1bmsgLT4gZnVsbHlfZm9yY2VkIChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IHJlYyBnZXRfc3VtbWFyeSA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBiLnN1bW1hcnlcbiAgfCBHcm91cCBnIC0+IGcuc3VtbWFyeVxuICB8IEV4ZWMgKGUsIF8pIC0+IGUuc3VtbWFyeVxuICB8IExhenkgdGh1bmsgLT4gZ2V0X3N1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5sZXQgaGVscF90ZXh0ID0gYFVzZV9Db21tYW5kX3VuaXhcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleV90eXBlID0gS2V5X3R5cGVcblxuICBsZXQgYWJzX3BhdGggPSBTdGFibGUuRXhlY19pbmZvLmFic19wYXRoXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlID0gRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmVcbiAgbGV0IHdvcmRfd3JhcCA9IEZsYWdfaGVscF9kaXNwbGF5LndvcmRfd3JhcF9hbmRfc3RyaXBcbiAgbGV0IGxvb2t1cF9leHBhbmQgPSBsb29rdXBfZXhwYW5kXG5lbmRcbiIsIlxub3BlbiEgQmFzZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbW1hbmRfaW50ZlxubW9kdWxlIFNoYXBlID0gU2hhcGVcblxuKCogaW4gb3JkZXIgdG8gZGVmaW5lIGV4cGVjdCB0ZXN0cywgd2Ugd2FudCB0byByYWlzZSByYXRoZXIgdGhhbiBleGl0IGlmIHRoZSBjb2RlIGlzXG4gICBydW5uaW5nIGluIHRoZSB0ZXN0IHJ1bm5lciBwcm9jZXNzICopXG5sZXQgcmFpc2VfaW5zdGVhZF9vZl9leGl0ID1cbiAgbWF0Y2ggUHB4X2lubGluZV90ZXN0X2xpYi50ZXN0aW5nIHdpdGhcbiAgfCBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXIgLT4gdHJ1ZVxuICB8IGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lciB8IGBOb3RfdGVzdGluZyAtPiBmYWxzZVxuOztcblxuZXhjZXB0aW9uIEV4aXRfY2FsbGVkIG9mIHsgc3RhdHVzIDogaW50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogW3JhaXNlX2luc3RlYWRfb2ZfZXhpdF0tcmVzcGVjdGluZyB3cmFwcGVycyBmb3IgW2V4aXRdIGFuZCBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0ICopXG5pbmNsdWRlIHN0cnVjdFxuICBsZXQgZXhpdCBzdGF0dXMgPVxuICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdCB0aGVuIHJhaXNlIChFeGl0X2NhbGxlZCB7IHN0YXR1cyB9KSBlbHNlIFN0ZGxpYi5leGl0IHN0YXR1c1xuICA7O1xuXG4gIG1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgICBsZXQgaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYgPVxuICAgICAgaWYgcmFpc2VfaW5zdGVhZF9vZl9leGl0XG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IGYgKCkgd2l0aFxuICAgICAgICB8IEV4aXRfY2FsbGVkIHsgc3RhdHVzID0gMCB9IGFzIGV4biAtPiBwcmludF9zIFslc2V4cCAoZXhuIDogZXhuKV0pXG4gICAgICBlbHNlIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZlxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCB1bndvcmRzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHhzXG5sZXQgdW5wYXJhZ3JhcGhzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXFxuXCIgeHNcblxuZXhjZXB0aW9uIEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgb2Ygc3RyaW5nXG5cbmxldCBkaWUgZm10ID0ga3NwcmludGYgKGZ1biBtc2cgKCkgLT4gcmFpc2UgKEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnKSkgZm10XG5sZXQgaGVscF9zY3JlZW5fY29tcGFyZSA9IFNoYXBlLlByaXZhdGUuaGVscF9zY3JlZW5fY29tcGFyZVxuXG4oKiB1bml2ZXJzYWwgbWFwcyBhcmUgdXNlZCB0byBwYXNzIGFyb3VuZCB2YWx1ZXMgYmV0d2VlbiBkaWZmZXJlbnQgYml0c1xuICAgb2YgY29tbWFuZCBsaW5lIHBhcnNpbmcgY29kZSB3aXRob3V0IGhhdmluZyBhIGh1Z2UgaW1wYWN0IG9uIHRoZVxuICAgdHlwZXMgaW52b2x2ZWRcblxuICAgMS4gcGFzc2luZyB2YWx1ZXMgZnJvbSBwYXJzZWQgYXJncyB0byBjb21tYW5kLWxpbmUgYXV0b2NvbXBsZXRlIGZ1bmN0aW9uc1xuICAgMi4gcGFzc2luZyBzcGVjaWFsIHZhbHVlcyB0byBhIGJhc2UgY29tbWFuZHMgdGhhdCByZXF1ZXN0IHRoZW0gaW4gdGhlaXIgc3BlY1xuICogZXhwYW5kZWQgc3ViY29tbWFuZCBwYXRoXG4gKiBhcmdzIHBhc3NlZCB0byB0aGUgYmFzZSBjb21tYW5kXG4gKiBoZWxwIHRleHQgZm9yIHRoZSBiYXNlIGNvbW1hbmRcbiopXG5tb2R1bGUgRW52ID0gc3RydWN0XG4gIGluY2x1ZGUgVW5pdl9tYXBcblxuICBsZXQga2V5X2NyZWF0ZSBuYW1lID0gVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZSBTZXhwbGliLkNvbnYuc2V4cF9vZl9vcGFxdWVcbiAgbGV0IG11bHRpX2FkZCA9IFVuaXZfbWFwLk11bHRpLmFkZFxuICBsZXQgc2V0X3dpdGhfZGVmYXVsdCA9IFVuaXZfbWFwLldpdGhfZGVmYXVsdC5zZXRcbmVuZFxuXG5tb2R1bGUgUGFyc2luZ19vdXRjb21lIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyByZXN1bHQgOiAoJ2EsIFsgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb2YgRXJyb3IudCBdKSBSZXN1bHQudFxuICAgIDsgaGFzX2FyZyA6IGJvb2xcbiAgICB9XG5cbiAgdmFsIHJldHVybl9ub19hcmcgOiAnYSAtPiAnYSB0XG4gIHZhbCByZXR1cm5fd2l0aF9hcmcgOiAnYSAtPiAnYSB0XG4gIHZhbCBlcnJvciA6IGhhc19hcmc6Ym9vbCAtPiBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSAtPiAnYSB0XG4gIHZhbCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyA6ICdhIHQgLT4gJ2EgdCB0XG5cbiAgdmFsIGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgOiAgKCdhLCBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSkgUmVzdWx0LnQgdFxuICAgIC0+ICdhIHRcblxuICBpbmNsdWRlIEFwcGxpY2F0aXZlLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyByZXN1bHQgOiAoJ2EsIFsgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb2YgRXJyb3IudCBdKSBSZXN1bHQudFxuICAgIDsgaGFzX2FyZyA6IGJvb2xcbiAgICB9XG5cbiAgbGV0IGFwcGx5IGYgeCA9XG4gICAgeyByZXN1bHQgPVxuICAgICAgICBSZXN1bHQuY29tYmluZVxuICAgICAgICAgIGYucmVzdWx0XG4gICAgICAgICAgeC5yZXN1bHRcbiAgICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICAgIH5lcnI6KGZ1biAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyXzEpIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBfZXJyXzIpIC0+XG4gICAgICAgICAgICBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnJfMSlcbiAgICA7IGhhc19hcmcgPSBmLmhhc19hcmcgfHwgeC5oYXNfYXJnXG4gICAgfVxuICA7O1xuXG4gIGxldCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyB0ID0geyByZXN1bHQgPSBPayB0OyBoYXNfYXJnID0gdC5oYXNfYXJnIH1cblxuICBsZXQgaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9XG4gICAgeyByZXN1bHQgPSBSZXN1bHQuam9pbiB0LnJlc3VsdDsgaGFzX2FyZyA9IHQuaGFzX2FyZyB9XG4gIDs7XG5cbiAgbGV0IG1hcCB7IHJlc3VsdDsgaGFzX2FyZyB9IH5mID0geyByZXN1bHQgPSBSZXN1bHQubWFwIHJlc3VsdCB+ZjsgaGFzX2FyZyB9XG4gIGxldCByZXR1cm5fbm9fYXJnIHYgPSB7IHJlc3VsdCA9IE9rIHY7IGhhc19hcmcgPSBmYWxzZSB9XG4gIGxldCByZXR1cm5fd2l0aF9hcmcgdiA9IHsgcmVzdWx0ID0gT2sgdjsgaGFzX2FyZyA9IHRydWUgfVxuICBsZXQgZXJyb3Igfmhhc19hcmcgZXJyID0geyByZXN1bHQgPSBFcnJvciBlcnI7IGhhc19hcmcgfVxuXG4gIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuX25vX2FyZ1xuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgQXV0b19jb21wbGV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBzdHJpbmcgbGlzdFxuXG4gIG1vZHVsZSBGb3JfZXNjYXBlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRW52LnQgLT4gcGFydDpzdHJpbmcgbGlzdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29tcGxldGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IEF1dG9fY29tcGxldGUudCBvcHRpb25cblxuICBtb2R1bGUgRm9yX2VzY2FwZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEF1dG9fY29tcGxldGUuRm9yX2VzY2FwZS50IG9wdGlvblxuICBlbmRcblxuICBsZXQgcnVuX2FuZF9leGl0IHQgZW52IH5wYXJ0IDogTm90aGluZy50ID1cbiAgICBPcHRpb24uaXRlciB0IH5mOihmdW4gY29tcGxldGlvbnMgLT5cbiAgICAgIExpc3QuaXRlciB+ZjpwcmludF9lbmRsaW5lIChjb21wbGV0aW9ucyBlbnYgfnBhcnQpKTtcbiAgICBleGl0IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJnX3R5cGUgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGV4dHJhX2RvYyA6ICdhIHQgLT4gc3RyaW5nIG9wdGlvbiBsYXp5X3RcbiAgdmFsIGtleSA6ICdhIHQgLT4gJ2EgRW52Lk11bHRpLktleS50IG9wdGlvblxuICB2YWwgY29tcGxldGUgOiAnYSB0IC0+IENvbXBsZXRlci50XG4gIHZhbCBwYXJzZSA6ICdhIHQgLT4gc3RyaW5nIC0+ICdhIE9yX2Vycm9yLnRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAtPiAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG1hcCA6ID9rZXk6J2EgRW52Lk11bHRpLktleS50IC0+ICdiIHQgLT4gZjooJ2IgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX2xhenkgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYSB0IGxhenlfdCAtPiAnYSB0XG5cbiAgdmFsIG9mX21hcFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+ICdhIE1hcC5NKFN0cmluZykudFxuICAgIC0+ICdhIHRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAobW9kdWxlIEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGNvbW1hX3NlcGFyYXRlZFxuICAgIDogID9hbGxvd19lbXB0eTpib29sXG4gICAgLT4gP2tleTonYSBsaXN0IEVudi5NdWx0aS5LZXkudFxuICAgIC0+ID9zdHJpcF93aGl0ZXNwYWNlOmJvb2xcbiAgICAtPiA/dW5pcXVlX3ZhbHVlczpib29sXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIGxpc3QgdFxuXG4gIG1vZHVsZSBFeHBvcnQgOiBzaWdcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgaW50IDogaW50IHRcbiAgICB2YWwgY2hhciA6IGNoYXIgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgYm9vbCA6IGJvb2wgdFxuICAgIHZhbCBzZXhwIDogU2V4cC50IHRcbiAgICB2YWwgc2V4cF9jb252IDogP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudCAtPiAoU2V4cC50IC0+ICdhKSAtPiAnYSB0XG4gIGVuZFxuXG4gIHZhbCBhdXRvX2NvbXBsZXRlIDogXyB0IC0+IEF1dG9fY29tcGxldGUudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwYXJzZSA6IHN0cmluZyAtPiAnYVxuICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgIDsga2V5IDogJ2EgVW5pdl9tYXAuTXVsdGkuS2V5LnQgb3B0aW9uXG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBwYXJzZSB0IHMgPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IHQucGFyc2UgcylcbiAgbGV0IGNyZWF0ZScgP2NvbXBsZXRlID9rZXkgcGFyc2UgfmV4dHJhX2RvYyA9IHsgcGFyc2U7IGtleTsgY29tcGxldGU7IGV4dHJhX2RvYyB9XG5cbiAgbGV0IGNyZWF0ZSA/Y29tcGxldGUgP2tleSBvZl9zdHJpbmcgPVxuICAgIGNyZWF0ZScgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nIH5leHRyYV9kb2M6KExhenkuZnJvbV92YWwgTm9uZSlcbiAgOztcblxuICBsZXQgbWFwID9rZXkgdCB+ZiA9IHsgdCB3aXRoIGtleTsgcGFyc2UgPSAoZnVuIHMgLT4gZiAodC5wYXJzZSBzKSkgfVxuXG4gIGxldCBvZl9sYXp5ID9rZXkgdCA9XG4gICAgbGV0IHBhcnNlIHN0ciA9IChmb3JjZSB0KS5wYXJzZSBzdHIgaW5cbiAgICBsZXQgY29tcGxldGUgZW52IH5wYXJ0ID1cbiAgICAgIG1hdGNoIChmb3JjZSB0KS5jb21wbGV0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogU2VlIFtydW5fYW5kX2V4aXRdIC0gbm8gY29tcGxldGlvbnMgaXMgZXF1aXZhbGVudCB0byBub3QgaGF2aW5nIGFcbiAgICAgICAgICAgW0NvbXBsZXRlXS4gKilcbiAgICAgICAgW11cbiAgICAgIHwgU29tZSBjb21wbGV0ZSAtPiBjb21wbGV0ZSBlbnYgfnBhcnRcbiAgICBpblxuICAgIGxldCBleHRyYV9kb2MgPSBMYXp5LmJpbmQgdCB+ZjpleHRyYV9kb2MgaW5cbiAgICB7IHBhcnNlOyBjb21wbGV0ZSA9IFNvbWUgY29tcGxldGU7IGtleTsgZXh0cmFfZG9jIH1cbiAgOztcblxuICBsZXQgc3RyaW5nID0gY3JlYXRlIEZuLmlkXG4gIGxldCBpbnQgPSBjcmVhdGUgSW50Lm9mX3N0cmluZ1xuICBsZXQgY2hhciA9IGNyZWF0ZSBDaGFyLm9mX3N0cmluZ1xuICBsZXQgZmxvYXQgPSBjcmVhdGUgRmxvYXQub2Zfc3RyaW5nXG4gIGxldCBzZXhwID0gY3JlYXRlIFBhcnNleHAuU2luZ2xlLnBhcnNlX3N0cmluZ19leG5cblxuICBsZXQgc2V4cF9jb252ID9jb21wbGV0ZSBvZl9zZXhwID1cbiAgICBjcmVhdGUgP2NvbXBsZXRlIChmdW4gcyAtPiBvZl9zZXhwIChQYXJzZXhwLlNpbmdsZS5wYXJzZV9zdHJpbmdfZXhuIHMpKVxuICA7O1xuXG4gIGxldCBhc3NvY2lhdGl2ZVxuICAgICAgICA/KGFjY2VwdF91bmlxdWVfcHJlZml4ZXMgPSB0cnVlKVxuICAgICAgICA/KGxpc3RfdmFsdWVzX2luX2hlbHAgPSB0cnVlKVxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIH5jYXNlX3NlbnNpdGl2ZVxuICAgICAgICBhbGlzdFxuICAgID1cbiAgICBsZXQgb3BlbiBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICB2YWwgaXNfcHJlZml4IDogc3RyaW5nIC0+IHByZWZpeDpzdHJpbmcgLT4gYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgVCA6XG4gICAgICAgICAgICB7IGNtcCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAgICAgICAgIDsgbWFwIDogKHN0cmluZywgJ2EsICdjbXApIE1hcC50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAtPiAnYSB0XG4gICAgZW5kIGluXG4gICAgbGV0IChUIHsgY21wID0gKG1vZHVsZSBTKTsgbWFwIH0pID1cbiAgICAgIGxldCBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5XG4gICAgICAgICAgICAodHlwZSBjbXApXG4gICAgICAgICAgICAobW9kdWxlIFMgOiBTIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgICAgICBhbGlzdFxuICAgICAgICA9XG4gICAgICAgIG1hdGNoIE1hcC5vZl9hbGlzdCAobW9kdWxlIFMpIGFsaXN0IHdpdGhcbiAgICAgICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgICAgICB8IGBEdXBsaWNhdGVfa2V5IChfIDogUy50KSAtPlxuICAgICAgICAgIGxldCBkdXBsaWNhdGVfa2V5cyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrLCAoXyA6ICdhKSkgLT4gaywgaylcbiAgICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdF9tdWx0aSAobW9kdWxlIFMpXG4gICAgICAgICAgICB8PiBNYXAuZmlsdGVyIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIHwgWyBfIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyAtPiB0cnVlKVxuICAgICAgICAgICAgfD4gTWFwLmRhdGFcbiAgICAgICAgICBpblxuICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5vZl9hbGlzdF9leG5cIiAoZHVwbGljYXRlX2tleXMgOiBzdHJpbmcgbGlzdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICBsZXQgbWFrZSBjbXAgPSBUIHsgY21wOyBtYXAgPSBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5IGNtcCBhbGlzdCB9IGluXG4gICAgICBpZiBjYXNlX3NlbnNpdGl2ZSB0aGVuIG1ha2UgKG1vZHVsZSBTdHJpbmcpIGVsc2UgbWFrZSAobW9kdWxlIFN0cmluZy5DYXNlbGVzcylcbiAgICBpblxuICAgIGxldCBjb21wbGV0ZSB1bml2X21hcCB+cGFydDpwcmVmaXggPVxuICAgICAgbWF0Y2ggYXV0b19jb21wbGV0ZSB3aXRoXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgdW5pdl9tYXAgfnBhcnQ6cHJlZml4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChNYXAudG9fYWxpc3QgbWFwKSB+ZjooZnVuIChuYW1lLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIFMuaXNfcHJlZml4IG5hbWUgfnByZWZpeCB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAoKiBCYXNoIGNvbXBsZXRpb24gd2lsbCBub3QgYWNjZXB0IFtGb29dIGFzIGEgY29tcGxldGlvbiBmb3IgW2ZdLiBTbyB3ZSBuZWVkXG4gICAgICAgICAgICAgICB0byBtYXRjaCB0aGUgY2FwaXRhbGl6YXRpb24gZ2l2ZW4uICopXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1Ym8gbmFtZSB+cG9zOihTdHJpbmcubGVuZ3RoIHByZWZpeCkgaW5cbiAgICAgICAgICAgIGxldCBuYW1lID0gcHJlZml4IF4gc3VmZml4IGluXG4gICAgICAgICAgICBTb21lIG5hbWUpXG4gICAgaW5cbiAgICBsZXQgZmluZCBhcmcgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgbWFwIGFyZyB3aXRoXG4gICAgICB8IFNvbWUgXyBhcyBzIC0+IHNcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyB3aXRoXG4gICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgTWFwLnRvX2FsaXN0IG1hcFxuICAgICAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIChuYW1lLCBfKSAtPiBTLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6YXJnKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIChfc2luZ2xldG9uX2tleSwgdikgXSAtPiBTb21lIHZcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPlxuICAgICAgICAgICAgICAoKiBJbiB0aGUgdHdvLW9yLW1vcmUgY2FzZSB3ZSBjb3VsZCBwcm92aWRlIGZpbHRlcmVkIGhlbHAgdGV4dCwgYnV0IGl0J3NcbiAgICAgICAgICAgICAgICAgbW9yZSBnZW5lcmFsbHkgdXNlZnVsIHRvIGxpc3QgYWxsIHRoZSBvcHRpb25zLCB3aGljaCB3ZSBkbyBiZWxvdy4gKilcbiAgICAgICAgICAgICAgTm9uZSkpXG4gICAgaW5cbiAgICBjcmVhdGUnXG4gICAgICB+ZXh0cmFfZG9jOlxuICAgICAgICAobGF6eVxuICAgICAgICAgIChpZiBsaXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChNYXAua2V5cyBtYXApIGluXG4gICAgICAgICAgICAgU29tZSBbJXN0cmluZyBcIihjYW4gYmU6ICV7dmFsdWVzfSlcIl0pXG4gICAgICAgICAgIGVsc2UgTm9uZSkpXG4gICAgICA/a2V5XG4gICAgICB+Y29tcGxldGVcbiAgICAgIChmdW4gYXJnIC0+XG4gICAgICAgICBtYXRjaCBmaW5kIGFyZyB3aXRoXG4gICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHZhbGlkX2FyZ3VtZW50c19leHRyYSA9XG4gICAgICAgICAgICAgaWYgY2FzZV9zZW5zaXRpdmUgdGhlbiBcIlwiIGVsc2UgXCIgKGNhc2UgaW5zZW5zaXRpdmUpXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgXCJ2YWxpZCBhcmd1bWVudHMlczogeyVzfVwiXG4gICAgICAgICAgICAgdmFsaWRfYXJndW1lbnRzX2V4dHJhXG4gICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAoTWFwLmtleXMgbWFwKSlcbiAgICAgICAgICAgICAoKSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIGFsaXN0XG4gICAgPVxuICAgIGFzc29jaWF0aXZlXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICB+Y2FzZV9zZW5zaXRpdmVcbiAgICAgIGFsaXN0XG4gIDs7XG5cbiAgbGV0IG9mX21hcFxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICBtYXBcbiAgICA9XG4gICAgb2ZfYWxpc3RfZXhuXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChNYXAudG9fYWxpc3QgbWFwKVxuICA7O1xuXG4gIGxldCBlbnVtZXJhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIChtb2R1bGUgRSA6IEVudW1lcmFibGVfc3RyaW5nYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIG9mX2FsaXN0X2V4blxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAobGV0JW1hcC5MaXN0IHQgPSBFLmFsbCBpblxuICAgICAgIEUudG9fc3RyaW5nIHQsIHQpXG4gIDs7XG5cbiAgbGV0IGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgKG1vZHVsZSBFIDogRW51bWVyYWJsZV9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIGVudW1lcmF0ZWRcbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBFXG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgWyVzZXhwICh0IDogRS50KV1cbiAgICAgIGVuZClcbiAgOztcblxuICBsZXQgYm9vbCA9IGVudW1lcmF0ZWQgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2UgKG1vZHVsZSBCb29sKVxuXG4gIGxldCBjb21tYV9zZXBhcmF0ZWRcbiAgICAgICAgPyhhbGxvd19lbXB0eSA9IGZhbHNlKVxuICAgICAgICA/a2V5XG4gICAgICAgID8oc3RyaXBfd2hpdGVzcGFjZSA9IGZhbHNlKVxuICAgICAgICA/KHVuaXF1ZV92YWx1ZXMgPSBmYWxzZSlcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgc3RyaXAgPSBpZiBzdHJpcF93aGl0ZXNwYWNlIHRoZW4gZnVuIHN0ciAtPiBTdHJpbmcuc3RyaXAgc3RyIGVsc2UgRm4uaWQgaW5cbiAgICBsZXQgY29tcGxldGUgPVxuICAgICAgT3B0aW9uLm1hcCB0LmNvbXBsZXRlIH5mOihmdW4gY29tcGxldGVfZWx0IGVudiB+cGFydCAtPlxuICAgICAgICBsZXQgcHJlZml4ZXMsIHN1ZmZpeCA9XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHBhcnQgfm9uOicsJyB8PiBMaXN0LnJldiB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBbXSwgcGFydFxuICAgICAgICAgIHwgaGQgOjogdGwgLT4gTGlzdC5yZXYgdGwsIGhkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc19hbGxvd2VkID1cbiAgICAgICAgICBpZiBub3QgdW5pcXVlX3ZhbHVlc1xuICAgICAgICAgIHRoZW4gZnVuIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgc2Vlbl9hbHJlYWR5ID1cbiAgICAgICAgICAgICAgcHJlZml4ZXMgfD4gTGlzdC5tYXAgfmY6c3RyaXAgfD4gU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZnVuIGNob2ljZSAtPiBub3QgKFNldC5tZW0gc2Vlbl9hbHJlYWR5IChzdHJpcCBjaG9pY2UpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoY29tcGxldGVfZWx0IGVudiB+cGFydDpzdWZmaXgpIH5mOihmdW4gY2hvaWNlIC0+XG4gICAgICAgICAgICAgIChub3QgKFN0cmluZy5tZW0gY2hvaWNlICcsJykpICYmIGlzX2FsbG93ZWQgY2hvaWNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICAoKiBJZiB0aGVyZSBpcyBleGFjdGx5IG9uZSBjaG9pY2UgdG8gYXV0by1jb21wbGV0ZSwgYWRkIGEgc2Vjb25kIGNob2ljZSB3aXRoXG4gICAgICAgICAgICAgYSB0cmFpbGluZyBjb21tYSBzbyB0aGF0IGF1dG8tY29tcGxldGlvbiB3aWxsIGdvIHRvIHRoZSBlbmQgYnV0IGJhc2hcbiAgICAgICAgICAgICB3b24ndCBhZGQgYSBzcGFjZS4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjaG9pY2VzLCBvciBhIHNpbmdsZSBjaG9pY2VcbiAgICAgICAgICAgICB0aGF0IG11c3QgYmUgZmluYWwsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgZHVtbXkgb3B0aW9uLiAqKVxuICAgICAgICAgIHwgWyBjaG9pY2UgXSAtPiBbIGNob2ljZTsgY2hvaWNlIF4gXCIsXCIgXVxuICAgICAgICAgIHwgY2hvaWNlcyAtPiBjaG9pY2VzXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIGNob2ljZXMgfmY6KGZ1biBjaG9pY2UgLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChwcmVmaXhlcyBAIFsgY2hvaWNlIF0pKSlcbiAgICBpblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBzdHJpbmcgPSBzdHJpcCBzdHJpbmcgaW5cbiAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYWxsb3dfZW1wdHlcbiAgICAgICAgdGhlbiBbXVxuICAgICAgICBlbHNlIGZhaWx3aXRoIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLmNvbW1hX3NlcGFyYXRlZDogZW1wdHkgbGlzdCBub3QgYWxsb3dlZFwiXG4gICAgICBlbHNlIExpc3QubWFwIChTdHJpbmcuc3BsaXQgc3RyaW5nIH5vbjonLCcpIH5mOihmdW4gc3RyIC0+IHQucGFyc2UgKHN0cmlwIHN0cikpXG4gICAgaW5cbiAgICBjcmVhdGUgP2tleSA/Y29tcGxldGUgb2Zfc3RyaW5nXG4gIDs7XG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIGxldCBzdHJpbmcgPSBzdHJpbmdcbiAgICBsZXQgaW50ID0gaW50XG4gICAgbGV0IGNoYXIgPSBjaGFyXG4gICAgbGV0IGZsb2F0ID0gZmxvYXRcbiAgICBsZXQgYm9vbCA9IGJvb2xcbiAgICBsZXQgc2V4cCA9IHNleHBcbiAgICBsZXQgc2V4cF9jb252ID0gc2V4cF9jb252XG4gIGVuZFxuXG4gIGxldCBhdXRvX2NvbXBsZXRlIHQgPVxuICAgIG1hdGNoIHQuY29tcGxldGUgd2l0aFxuICAgIHwgU29tZSBmIC0+IGZcbiAgICB8IE5vbmUgLT4gZnVuIF8gfnBhcnQ6XyAtPiBbXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnID0gc3RydWN0XG4gIG1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudCA9XG4gICAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgICA7IGF0X21vc3Rfb25jZSA6IGJvb2xcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCB0b19oZWxwX3N0cmluZyA9IFNoYXBlLk51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ1xuXG4gICAgbGV0IHRvX2hlbHBfc3RyaW5nX2RlcHJlY2F0ZWQgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgPSBfIH0gZmxhZ19uYW1lID1cbiAgICAgIHRvX2hlbHBfc3RyaW5nIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9IH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbGV0IGFueSA9IHsgYXRfbGVhc3Rfb25jZSA9IGZhbHNlOyBhdF9tb3N0X29uY2UgPSBmYWxzZSB9XG4gICAgbGV0IGF0X2xlYXN0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSB0cnVlOyBhdF9tb3N0X29uY2UgPSBmYWxzZSB9XG4gICAgbGV0IGF0X21vc3Rfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IGZhbHNlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH1cbiAgICBsZXQgZXhhY3RseV9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gIGVuZFxuXG4gIHR5cGUgYWN0aW9uID1cbiAgICB8IE5vX2FyZyBvZiAoRW52LnQgLT4gRW52LnQpXG4gICAgfCBQcmludF9pbmZvX2FuZF9xdWl0IG9mIChFbnYudCAtPiBzdHJpbmcpXG4gICAgfCBBcmcgb2YgKEVudi50IC0+IHN0cmluZyAtPiBFbnYudCkgKiBDb21wbGV0ZXIudFxuICAgIHwgUmVzdCBvZiAoRW52LnQgLT4gc3RyaW5nIGxpc3QgLT4gRW52LnQpICogQ29tcGxldGVyLkZvcl9lc2NhcGUudFxuXG4gIG1vZHVsZSBJbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIDogc3RyaW5nIGxpc3RcbiAgICAgICgqIFthbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscF0gYXJlIGFsaWFzZXMgdGhhdCBkb24ndCBzaG93IHVwIGluIC1oZWxwIG91dHB1dC5cbiAgICAgICAgIEN1cnJlbnRseSB0aGV5J3JlIG9ubHkgdXNlZCBmb3IgZG91YmxlLWRhc2ggYnVpbHQtaW4gZmxhZ3MgbGlrZSAtLWhlbHAgYW5kXG4gICAgICAgICAtLXZlcnNpb24uICopXG4gICAgICA7IGFjdGlvbiA6IGFjdGlvblxuICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICAgIDsgY2hlY2tfYXZhaWxhYmxlIDogRW52LnQgLT4gdW5pdFxuICAgICAgOyBuYW1lX21hdGNoaW5nIDogWyBgUHJlZml4IHwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQgXVxuICAgICAgfVxuXG4gICAgbGV0IHdyYXBfaWZfb3B0aW9uYWwgdCBmbGFnX25hbWUgPVxuICAgICAgTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nIHQubnVtX29jY3VycmVuY2VzIH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbW9kdWxlIERvYyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBhcmdfZG9jIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICB9XG5cbiAgICAgIGxldCBwYXJzZSB+YWN0aW9uIH5kb2MgPVxuICAgICAgICBsZXQgYXJnX2RvYywgZG9jID1cbiAgICAgICAgICBtYXRjaCAoYWN0aW9uIDogYWN0aW9uKSwgU3RyaW5nLmxzcGxpdDIgZG9jIH5vbjonICcgd2l0aFxuICAgICAgICAgIHwgKE5vX2FyZyBfIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBfKSwgXyAtPiBOb25lLCBkb2NcbiAgICAgICAgICB8IEFyZyBfLCAoTm9uZSB8IFNvbWUgKFwiXCIsIF8pKSAtPiBTb21lIFwiX1wiLCBkb2NcbiAgICAgICAgICB8IFJlc3QgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCAoQXJnIF8gfCBSZXN0IF8pLCBTb21lIChhcmcsIGRvYykgLT4gU29tZSBhcmcsIGRvY1xuICAgICAgICBpblxuICAgICAgICB7IGRvYyA9IFN0cmluZy5zdHJpcCBkb2M7IGFyZ19kb2MgfVxuICAgICAgOztcblxuICAgICAgbGV0IGNvbmNhdCB+bmFtZSB+YXJnX2RvYyA9XG4gICAgICAgIG1hdGNoIGFyZ19kb2Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbmFtZVxuICAgICAgICB8IFNvbWUgYXJnX2RvYyAtPiBuYW1lIF4gXCIgXCIgXiBhcmdfZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgeCA9XG4gICAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHQubnVtX29jY3VycmVuY2VzIHhcbiAgICAgIDs7XG5cbiAgICAgICgqIGZsYWcgaGVscCBpbiB0aGUgZm9ybWF0IG9mIHRoZSBvbGQgY29tbWFuZC4gdXNlZCBmb3IgaW5qZWN0aW9uICopXG4gICAgICBsZXQgaGVscFxuICAgICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICAgIDsgZG9jXG4gICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA9IF9cbiAgICAgICAgICAgICB9IGFzIHQpXG4gICAgICAgID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBkb2MgfnByZWZpeDpcIiBcIlxuICAgICAgICB0aGVuXG4gICAgICAgICAgKG5hbWUsIFN0cmluZy5sc3RyaXAgZG9jKVxuICAgICAgICAgIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biB4IC0+IHgsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICAgICAgKHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYyksIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgKCB3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWU6eCB+YXJnX2RvYylcbiAgICAgICAgICAgICwgc3ByaW50ZiBcInNhbWUgYXMgXFxcIiVzXFxcIlwiIG5hbWUgKSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFsaWduXG4gICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgIH0gYXMgdClcbiAgICAgIDogU2hhcGUuRmxhZ19pbmZvLnRcbiAgICAgID1cbiAgICAgIGxldCB7IERvYy5hcmdfZG9jOyBkb2MgfSA9IERvYy5wYXJzZSB+YWN0aW9uIH5kb2MgaW5cbiAgICAgIGxldCBuYW1lID0gd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lIH5hcmdfZG9jKSBpblxuICAgICAgeyBuYW1lOyBkb2M7IGFsaWFzZXMgfVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIGZsYWdzID1cbiAgICAgIG1hdGNoXG4gICAgICAgIE1hcC5vZl9hbGlzdCAobW9kdWxlIFN0cmluZykgKExpc3QubWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUsIGZsYWcpKVxuICAgICAgd2l0aFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBmbGFnIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG5hbWVkICVzXCIgZmxhZyAoKVxuICAgICAgfCBgT2sgbWFwIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lIDo6IGZsYWcuYWxpYXNlcylcbiAgICAgICAgfD4gTGlzdC5maW5kX2FfZHVwIH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXVxuICAgICAgICB8PiBPcHRpb24uaXRlciB+ZjooZnVuIHggLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3Mgb3IgYWxpYXNlcyBuYW1lZCAlc1wiIHggKCkpO1xuICAgICAgICBtYXBcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB7IGFjdGlvbiA6IGFjdGlvblxuICAgIDsgcmVhZCA6IEVudi50IC0+ICdhIFBhcnNpbmdfb3V0Y29tZS50XG4gICAgOyBudW1fb2NjdXJyZW5jZXMgOiBOdW1fb2NjdXJyZW5jZXMudFxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gc3RyaW5nIC0+ICdhIHN0YXRlXG5cbiAgbGV0IGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBudW1fb2NjdXJyZW5jZXMgPVxuICAgIHsgcmVhZFxuICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgOyBhY3Rpb24gPVxuICAgICAgICAobGV0IHVwZGF0ZSBlbnYgYXJnID1cbiAgICAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYXJnIHdpdGhcbiAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVMuXFxuJXNcIlxuICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgYXJnXG4gICAgICAgICAgICAgICAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcilcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIHwgT2sgYXJnIC0+XG4gICAgICAgICAgICAgbGV0IGVudiA9IHdyaXRlIGVudiBhcmcgaW5cbiAgICAgICAgICAgICAobWF0Y2ggQXJnX3R5cGUua2V5IGFyZ190eXBlIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGVudlxuICAgICAgICAgICAgICB8IFNvbWUga2V5IC0+IEVudi5tdWx0aV9hZGQgZW52IH5rZXkgfmRhdGE6YXJnKVxuICAgICAgICAgaW5cbiAgICAgICAgIEFyZyAodXBkYXRlLCBBcmdfdHlwZS5jb21wbGV0ZSBhcmdfdHlwZSkpXG4gICAgOyBleHRyYV9kb2MgPSBBcmdfdHlwZS5leHRyYV9kb2MgYXJnX3R5cGVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1hcF9mbGFnICh0IDogXyB0KSB+ZiBpbnB1dCA9XG4gICAgbGV0IHsgYWN0aW9uOyByZWFkOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gdCBpbnB1dCBpblxuICAgIHsgYWN0aW9uXG4gICAgOyByZWFkID0gKGZ1biBlbnYgLT4gUGFyc2luZ19vdXRjb21lLm1hcCAocmVhZCBlbnYpIH5mKVxuICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgOyBleHRyYV9kb2NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnID1cbiAgICBFbnYudXBkYXRlIGVudiBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYXJnXG4gICAgICB8IFNvbWUgXyAtPiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKCkpXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkX3ZhbHVlID9kZWZhdWx0IGFyZ190eXBlIG5hbWUgbnVtX29jY3VycmVuY2VzID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBfXSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBkZWZhdWx0IHdpdGhcbiAgICAgICAgIHwgU29tZSB2IC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHZcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuZXJyb3JcbiAgICAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgKHNwcmludGYgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSkpKSlcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgbnVtX29jY3VycmVuY2VzXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkIGFyZ190eXBlIG5hbWUgPSByZXF1aXJlZF92YWx1ZSBhcmdfdHlwZSBuYW1lIE51bV9vY2N1cnJlbmNlcy5leGFjdGx5X29uY2VcblxuICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0IGRlZmF1bHQgYXJnX3R5cGUgbmFtZSA9XG4gICAgcmVxdWlyZWRfdmFsdWUgfmRlZmF1bHQgYXJnX3R5cGUgbmFtZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG9wdGlvbmFsIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IF9dIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5maW5kIGVudiBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIE5vbmVcbiAgICAgIHwgU29tZSBfIGFzIHZhbHVlIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdmFsdWVcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICA7O1xuXG4gIGxldCBub19hcmdfZ2VuZXJhbCB+aXNfcmVxdWlyZWQgfmtleV92YWx1ZSB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHVuaXRdIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5tZW0gZW52IGtleSB3aXRoXG4gICAgICB8IHRydWUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB0cnVlXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgIGlmIGlzX3JlcXVpcmVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBQYXJzaW5nX291dGNvbWUuZXJyb3JcbiAgICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgKHNwcmludGYgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSkpKVxuICAgICAgICBlbHNlIFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52ID1cbiAgICAgIGlmIEVudi5tZW0gZW52IGtleVxuICAgICAgdGhlbiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKClcbiAgICAgIGVsc2UgRW52LnNldCBlbnYgfmtleSB+ZGF0YTooKVxuICAgIGluXG4gICAgbGV0IGFjdGlvbiBlbnYgPVxuICAgICAgbGV0IGVudiA9XG4gICAgICAgIE9wdGlvbi5mb2xkIGtleV92YWx1ZSB+aW5pdDplbnYgfmY6KGZ1biBlbnYgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgICAgRW52LnNldF93aXRoX2RlZmF1bHQgZW52IH5rZXkgfmRhdGE6dmFsdWUpXG4gICAgICBpblxuICAgICAgd3JpdGUgZW52XG4gICAgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IC0+XG4gICAgICAgICAgbGV0IGVudiA9IGFjdGlvbiBlbnYgaW5cbiAgICAgICAgICBmICgpO1xuICAgICAgICAgIGVudlxuICAgIGluXG4gICAgeyByZWFkXG4gICAgOyBhY3Rpb24gPSBOb19hcmcgYWN0aW9uXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPVxuICAgICAgICAoaWYgaXNfcmVxdWlyZWRcbiAgICAgICAgIHRoZW4gTnVtX29jY3VycmVuY2VzLmV4YWN0bHlfb25jZVxuICAgICAgICAgZWxzZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlKVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBub19hcmcgbmFtZSA9XG4gICAgbm9fYXJnX2dlbmVyYWwgbmFtZSB+aXNfcmVxdWlyZWQ6ZmFsc2UgfmtleV92YWx1ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfcmVxdWlyZWQgdiBuYW1lID1cbiAgICBtYXBfZmxhZ1xuICAgICAgKG5vX2FyZ19nZW5lcmFsIH5pc19yZXF1aXJlZDp0cnVlIH5rZXlfdmFsdWU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmUpXG4gICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+IHZcbiAgICAgICAgfCBmYWxzZSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICBuYW1lXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19yZWdpc3RlciB+a2V5IH52YWx1ZSBuYW1lID1cbiAgICBub19hcmdfZ2VuZXJhbFxuICAgICAgbmFtZVxuICAgICAgfmlzX3JlcXVpcmVkOmZhbHNlXG4gICAgICB+a2V5X3ZhbHVlOihTb21lIChrZXksIHZhbHVlKSlcbiAgICAgIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfc29tZSB2YWx1ZSA9XG4gICAgbWFwX2ZsYWcgbm9fYXJnIH5mOihmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IFNvbWUgdmFsdWVcbiAgICAgIHwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBsZXQgbGlzdGVkIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6W10gfm5hbWUgWyVzZXhwX29mOiBfIGxpc3RdIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIExpc3QucmV2IChFbnYuV2l0aF9kZWZhdWx0LmZpbmQgZW52IGtleSkgd2l0aFxuICAgICAgfCBbXSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBbXVxuICAgICAgfCBfIDo6IF8gYXMgdmFsdWVfbGlzdCAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlX2xpc3RcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIGxpc3QgLT4gYXJnIDo6IGxpc3QpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hbnlcbiAgOztcblxuICBsZXQgb25lX29yX21vcmVfYXNfcGFpciBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LldpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OltdIH5uYW1lIFslc2V4cF9vZjogXyBsaXN0XSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBMaXN0LnJldiAoRW52LldpdGhfZGVmYXVsdC5maW5kIGVudiBrZXkpIHdpdGhcbiAgICAgIHwgZmlyc3QgOjogcmVzdCAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIChmaXJzdCwgcmVzdClcbiAgICAgIHwgW10gLT5cbiAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgfmhhc19hcmc6ZmFsc2VcbiAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUpKSlcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIHEgLT4gYXJnIDo6IHEpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgYXJnX3R5cGUgPVxuICAgIG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgfD4gbWFwX2ZsYWcgfmY6KGZ1biAoeCwgeHMpIC0+IHggOjogeHMpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZSB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBhY3Rpb24gZW52IGNtZF9saW5lID0gRW52LnNldCBlbnYgfmtleSB+ZGF0YTpjbWRfbGluZSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBOb25lXG4gICAgICB8IFNvbWUgXyBhcyB2YWx1ZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IHggLT5cbiAgICAgICAgICBmIHg7XG4gICAgICAgICAgYWN0aW9uIGVudiB4XG4gICAgaW5cbiAgICB7IGFjdGlvbiA9IFJlc3QgKGFjdGlvbiwgY29tcGxldGUpXG4gICAgOyByZWFkXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19hYm9ydCB+ZXhpdCBfbmFtZSA9XG4gICAgeyBhY3Rpb24gPSBOb19hcmcgKGZ1biBfIC0+IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoZXhpdCAoKSkpXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyByZWFkID1cbiAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICgqIFdlIGtub3cgdGhhdCB0aGUgZmxhZyB3YXNuJ3QgcGFzc2VkIGhlcmUgYmVjYXVzZSBpZiBpdCB3YXMgcGFzc2VkXG4gICAgICAgICAgICAgIHRoZW4gdGhlIFthY3Rpb25dIHdvdWxkIGhhdmUgY2FsbGVkIFtleGl0XS4gKilcbiAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgKCkpXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGVzY2FwZSBuYW1lID0gZXNjYXBlX2dlbmVyYWwgfmNvbXBsZXRlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazpOb25lIG5hbWVcblxuICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIH5jb21wbGV0ZSBuYW1lID1cbiAgICBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGU6KFNvbWUgY29tcGxldGUpIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSBuYW1lXG4gIDs7XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fYXJnIH5ob29rIG5hbWUgPVxuICAgICAgbm9fYXJnX2dlbmVyYWwgfmlzX3JlcXVpcmVkOmZhbHNlIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaykgfmtleV92YWx1ZTpOb25lIG5hbWVcbiAgICA7O1xuXG4gICAgbGV0IGVzY2FwZSB+aG9vayA9IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaylcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBhdGggOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgY3JlYXRlIDogcGF0aF90b19leGU6c3RyaW5nIC0+IHRcbiAgdmFsIG9mX3BhcnRzIDogc3RyaW5nIGxpc3QgLT4gdFxuICB2YWwgYXBwZW5kIDogdCAtPiBzdWJjb21tYW5kOnN0cmluZyAtPiB0XG4gIHZhbCByZXBsYWNlX2ZpcnN0IDogdCAtPiBmcm9tOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHRcbiAgdmFsIHBhcnRzIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgcGFydHNfZXhlX2Jhc2VuYW1lIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19kb3RzIDogdCAtPiBzdHJpbmdcbiAgdmFsIHBvcF9oZWxwIDogdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBlbXB0eSA9IFtdXG4gIGxldCBjcmVhdGUgfnBhdGhfdG9fZXhlID0gWyBwYXRoX3RvX2V4ZSBdXG4gIGxldCBvZl9wYXJ0cyBwYXJ0cyA9IExpc3QucmV2IHBhcnRzXG4gIGxldCBhcHBlbmQgdCB+c3ViY29tbWFuZCA9IHN1YmNvbW1hbmQgOjogdFxuICBsZXQgcGFydHMgPSBMaXN0LnJldlxuXG4gIGxldCBwYXJ0c19leGVfYmFzZW5hbWUgdCA9XG4gICAgbWF0Y2ggTGlzdC5yZXYgdCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGQgOjogdGwgLT4gRmlsZW5hbWVfYmFzZS5iYXNlbmFtZSBoZCA6OiB0bFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9IHVud29yZHMgKHBhcnRzX2V4ZV9iYXNlbmFtZSB0KVxuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGhcblxuICBsZXQgcmVwbGFjZV9maXJzdCB0IH5mcm9tIH50b18gPVxuICAgIGxldCByZWMgYXV4IHBhcnRzIH5hY2MgfmZyb20gfnRvXyA9XG4gICAgICBtYXRjaCBwYXJ0cyB3aXRoXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBTdHJpbmcuKCA9ICkgaGQgZnJvbVxuICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCB0bCAodG9fIDo6IGFjYylcbiAgICAgICAgZWxzZSBhdXggdGwgfmFjYzooaGQgOjogYWNjKSB+ZnJvbSB+dG9fXG4gICAgaW5cbiAgICBhdXggKHBhcnRzIHQpIH5hY2M6W10gfmZyb20gfnRvX1xuICA7O1xuXG4gIGxldCBwb3BfaGVscCA9IGZ1bmN0aW9uXG4gICAgfCBcImhlbHBcIiA6OiB0IC0+IHRcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19kb3RzIHQgPVxuICAgIChtYXRjaCB0IHdpdGhcbiAgICAgfCBbXSAtPiBbXVxuICAgICB8IGxhc3QgOjogaW5pdCAtPiBsYXN0IDo6IExpc3QubWFwIGluaXQgfmY6KEZuLmNvbnN0IFwiLlwiKSlcbiAgICB8PiB0b19zdHJpbmdcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5lbmRcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyIDogc2lnXG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgb25lIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgbWFueSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZV9pZGVtcG90ZW50IDogdCAtPiB0XG4gICAgdmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0XG4gICAgdmFsIGFkX2hvYyA6IHVzYWdlOnN0cmluZyAtPiB0XG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBuYW1lcyA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuXG4gICAgbGV0IGludmFyaWFudCA9IFNoYXBlLkFub25zLkdyYW1tYXIuaW52YXJpYW50XG4gICAgbGV0IHVzYWdlID0gU2hhcGUuQW5vbnMuR3JhbW1hci51c2FnZVxuXG4gICAgbGV0IHJlYyBpc19maXhlZF9hcml0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gdHJ1ZVxuICAgICAgfCBPbmUgXyAtPiB0cnVlXG4gICAgICB8IE1hbnkgXyAtPiBmYWxzZVxuICAgICAgfCBNYXliZSBfIC0+IGZhbHNlXG4gICAgICB8IEFkX2hvYyBfIC0+IGZhbHNlXG4gICAgICB8IENvbmNhdCB0cyAtPlxuICAgICAgICAobWF0Y2ggTGlzdC5yZXYgdHMgd2l0aFxuICAgICAgICAgfCBbXSAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgIHwgbGFzdCA6OiBvdGhlcnMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgb3RoZXJzIH5mOmlzX2ZpeGVkX2FyaXR5KTtcbiAgICAgICAgICAgaXNfZml4ZWRfYXJpdHkgbGFzdClcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBuYW1lcyA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gW11cbiAgICAgIHwgT25lIHMgLT4gWyBzIF1cbiAgICAgIHwgTWFueSB0IC0+IG5hbWVzIHRcbiAgICAgIHwgTWF5YmUgdCAtPiBuYW1lcyB0XG4gICAgICB8IEFkX2hvYyBzIC0+IFsgcyBdXG4gICAgICB8IENvbmNhdCB0cyAtPiBMaXN0LmNvbmNhdF9tYXAgdHMgfmY6bmFtZXNcbiAgICA7O1xuXG4gICAgbGV0IHplcm8gPSBaZXJvXG4gICAgbGV0IG9uZSBuYW1lID0gT25lIG5hbWVcblxuICAgIGxldCBtYW55ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT5cbiAgICAgICAgaWYgbm90IChpc19maXhlZF9hcml0eSB0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICBcIml0ZXJhdGlvbiBvZiB2YXJpYWJsZS1sZW5ndGggZ3JhbW1hcnMgc3VjaCBhcyAlcyBpcyBkaXNhbGxvd2VkXCJcbiAgICAgICAgICAgICh1c2FnZSB0KVxuICAgICAgICAgICAgKCk7XG4gICAgICAgIE1hbnkgdFxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmUgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFplcm8gKCogc3RyYW5nZSwgYnV0IG5vdCBub24tc2Vuc2UgKilcbiAgICAgIHwgdCAtPiBNYXliZSB0XG4gICAgOztcblxuICAgIGxldCBtYXliZV9pZGVtcG90ZW50ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IE1heWJlIHQgLT4gTWF5YmUgdFxuICAgICAgfCBNYW55IHQgLT4gTWFueSB0XG4gICAgICB8IHQgLT4gTWF5YmUgdFxuICAgIDs7XG5cbiAgICBsZXQgY29uY2F0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gWmVyb1xuICAgICAgfCBjYXIgOjogY2RyIC0+XG4gICAgICAgIGxldCBjYXIsIGNkciA9XG4gICAgICAgICAgTGlzdC5mb2xkIGNkciB+aW5pdDooY2FyLCBbXSkgfmY6KGZ1biAodDEsIGFjYykgdDIgLT5cbiAgICAgICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgICAgICB8IFplcm8sIHQgfCB0LCBaZXJvIC0+IHQsIGFjY1xuICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2ZpeGVkX2FyaXR5IHQxXG4gICAgICAgICAgICAgIHRoZW4gdDIsIHQxIDo6IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgICAgICBcInRoZSBncmFtbWFyICVzIGZvciBhbm9ueW1vdXMgYXJndW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSB0aGVyZSBcXFxuICAgICAgICAgICAgICAgICAgIGlzIHRoZSBwb3NzaWJpbGl0eSBmb3IgYXJndW1lbnRzICglcykgZm9sbG93aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgYXJndW1lbnRzICglcykuICBTdXBwb3J0aW5nIHN1Y2ggZ3JhbW1hcnMgd291bGQgY29tcGxpY2F0ZSB0aGUgXFxcbiAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBzaWduaWZpY2FudGx5LlwiXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgKENvbmNhdCAoTGlzdC5yZXYgKHQyIDo6IHQxIDo6IGFjYykpKSlcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MilcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MSlcbiAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggY2RyIHdpdGhcbiAgICAgICAgIHwgW10gLT4gY2FyXG4gICAgICAgICB8IF8gOjogXyAtPiBDb25jYXQgKExpc3QucmV2IChjYXIgOjogY2RyKSkpXG4gICAgOztcblxuICAgIGxldCBhZF9ob2MgfnVzYWdlID0gQWRfaG9jIHVzYWdlXG4gIGVuZFxuXG4gIG1vZHVsZSBQYXJzZXIgOiBzaWdcbiAgICBtb2R1bGUgQmFzaWMgOiBzaWdcbiAgICAgIHR5cGUgKydhIHRcblxuICAgICAgbW9kdWxlIEZvcl9vcGVuaW5nIDogc2lnXG4gICAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICAgIHZhbCAoIDwqPiApIDogKCdhIC0+ICdiKSB0IC0+ICdhIHQgLT4gJ2IgdFxuICAgICAgICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICBlbmRcblxuICAgICAgdmFsIGZyb21fZW52IDogKEVudi50IC0+ICdhKSAtPiAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICsnYSB0ID0gJ2EgUGFyc2luZ19vdXRjb21lLnQgQmFzaWMudFxuXG4gICAgdmFsIG9uZSA6IG5hbWU6c3RyaW5nIC0+ICdhIEFyZ190eXBlLnQgLT4gJ2EgdFxuICAgIHZhbCBtYXliZSA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB2YWwgc2VxdWVuY2UgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHZhbCBzdG9wX3BhcnNpbmcgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmluYWxfdmFsdWUgOiAnYSBCYXNpYy50IC0+IEVudi50IC0+ICdhXG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7ICgqIElmIGVtYWNzIGhpZ2hsaWdodHMgW3BhcnNlcl0gYXMgaWYgaXQgd2VyZSBhIGtleXdvcmQsIHRoYXQncyBvbmx5IGJlY2F1c2VcbiAgICAgICAgICAgICBbcGFyc2VyXSB3YXMgYSBrZXl3b3JkIGluIGNhbWxwNC4gW3BhcnNlcl0gaXMgYSByZWd1bGFyIG5hbWUgaW4gT0NhbWwuICopXG4gICAgICAgICAgcGFyc2VyIDogJ2EgQmFzaWMudFxuICAgICAgICA7IHBhcnNlX2ZsYWdzIDogYm9vbFxuICAgICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB2YWwgY29uc3VtZSA6ICdhIEJhc2ljLnQgLT4gc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgQ29uc3VtZV9yZXN1bHQudFxuICAgIHZhbCBjb21wbGV0ZSA6ICdhIEJhc2ljLnQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gTm90aGluZy50XG5cbiAgICBtb2R1bGUgRm9yX29wZW5pbmcgOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgKCA8Kj4gKSA6ICgnYSAtPiAnYikgdCAtPiAnYSB0IC0+ICdiIHRcbiAgICAgIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICBlbmRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEJhc2ljID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IERvbmUgb2YgKEVudi50IC0+ICdhKVxuICAgICAgICB8IE1vcmUgb2YgJ2EgbW9yZVxuICAgICAgICAoKiBBIFtUZXN0XSB3aWxsIChnZW5lcmFsbHkpIHJldHVybiBhIFtEb25lIF9dIHZhbHVlIGlmIHRoZXJlIGlzIG5vIG1vcmUgaW5wdXQgYW5kXG4gICAgICAgICAgIGEgW01vcmVdIHBhcnNlciB0byB1c2UgaWYgdGhlcmUgaXMgYW55IG1vcmUgaW5wdXQuICopXG4gICAgICAgIHwgVGVzdCBvZiAobW9yZTpib29sIC0+ICdhIHQpXG4gICAgICAgICgqIElmIHdlJ3JlIG9ubHkgY29tcGxldGluZywgd2UgY2FuJ3QgcHVsbCB2YWx1ZXMgb3V0LCBidXQgd2UgY2FuIHN0aWxsIHN0ZXAgdGhyb3VnaFxuICAgICAgICAgICBbdF1zICh3aGljaCBtYXkgaGF2ZSBjb21wbGV0aW9uIHNldCB1cCkuICopXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBvZiBwYWNrZWQgbGlzdFxuICAgICAgICB8IFN0b3BfcGFyc2luZyBvZiAnYSB0XG5cbiAgICAgIGFuZCAnYSBtb3JlID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgcGFyc2UgOiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiAnYSBwYXJzZV9yZXN1bHRcbiAgICAgICAgOyBjb21wbGV0ZSA6IENvbXBsZXRlci50XG4gICAgICAgIH1cblxuICAgICAgYW5kIHBhY2tlZCA9IFBhY2tlZCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgICAgIGFuZCAnYSBwYXJzZV9yZXN1bHQgPVxuICAgICAgICB7IHBhcnNlciA6ICdhIHRcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgcGFyc2VfbW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9IH5mID1cbiAgICAgICAgbGV0IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gPVxuICAgICAgICAgIGxldCB7IHBhcnNlcjsgdXBkYXRlX2VudiB9ID0gcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiBpblxuICAgICAgICAgIHsgcGFyc2VyID0gZiBwYXJzZXI7IHVwZGF0ZV9lbnYgfVxuICAgICAgICBpblxuICAgICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYWNrX2Zvcl9jb21wbGV0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBEb25lIF8gLT4gW10gKCogd29uJ3QgY29tcGxldGUgb3IgY29uc3VtZSBhbnl0aGluZyAqKVxuICAgICAgICB8IChNb3JlIF8gfCBUZXN0IF8gfCBTdG9wX3BhcnNpbmcgXykgYXMgeCAtPiBbIFBhY2tlZCB4IF1cbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBzIC0+IHBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjICggPCo+ICkgdF9sZWZ0IHRfcmlnaHQgPVxuICAgICAgICBtYXRjaCB0X2xlZnQsIHRfcmlnaHQgd2l0aFxuICAgICAgICAoKiBbRG9uZV0gKilcbiAgICAgICAgfCBEb25lIGYsIERvbmUgeCAtPlxuICAgICAgICAgIERvbmVcbiAgICAgICAgICAgIChmdW4gZW52IC0+XG4gICAgICAgICAgICAgICBsZXQgZl9vdXRjb21lID0gZiBlbnYgaW5cbiAgICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4IGVudiBpblxuICAgICAgICAgICAgICAgZl9vdXRjb21lIHhfb3V0Y29tZSlcbiAgICAgICAgKCogbmV4dCBzdGVwIFtNb3JlXSAqKVxuICAgICAgICB8IE1vcmUgbW9yZSwgXyAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0bCAtPiB0bCA8Kj4gdF9yaWdodClcbiAgICAgICAgfCBEb25lIF8sIE1vcmUgbW9yZSAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0ciAtPiB0X2xlZnQgPCo+IHRyKVxuICAgICAgICAoKiBuZXh0IHN0ZXAgW09ubHlfZm9yX2NvbXBsZXRpb25dICopXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfLCBfIHwgRG9uZSBfLCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgICBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHRfbGVmdCBAIHBhY2tfZm9yX2NvbXBsZXRpb24gdF9yaWdodClcbiAgICAgICAgKCogbmV4dCBzdGVwIFtTdG9wX3BhcnNpbmddICopXG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHRsLCB0ciB8IChEb25lIF8gYXMgdGwpLCBTdG9wX3BhcnNpbmcgdHIgLT4gU3RvcF9wYXJzaW5nICh0bCA8Kj4gdHIpXG4gICAgICAgICgqIG5leHQgc3RlcCBbVGVzdF0gKilcbiAgICAgICAgfCBUZXN0IHRlc3QsIF8gLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRlc3Qgfm1vcmUgPCo+IHRfcmlnaHQpXG4gICAgICAgIHwgRG9uZSBfLCBUZXN0IHRlc3QgLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRfbGVmdCA8Kj4gdGVzdCB+bW9yZSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IERvbmUgKGZ1biBfIC0+IGEpXG4gICAgICBsZXQgKCA+PnwgKSB0IGYgPSByZXR1cm4gZiA8Kj4gdFxuICAgICAgbGV0IGZyb21fZW52IGYgPSBEb25lIChmdW4gZW52IC0+IGYgZW52KVxuXG4gICAgICBtb2R1bGUgRm9yX29wZW5pbmcgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG9wZW4gQmFzaWNcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFBhcnNpbmdfb3V0Y29tZS50IEJhc2ljLnRcblxuICAgIGxldCAoID4+fCApIHQgZiA9IHQgPj58IFBhcnNpbmdfb3V0Y29tZS5tYXAgfmZcbiAgICBsZXQgKCA8Kj4gKSB0X2xlZnQgdF9yaWdodCA9IHJldHVybiBQYXJzaW5nX291dGNvbWUuKCA8Kj4gKSA8Kj4gdF9sZWZ0IDwqPiB0X3JpZ2h0XG4gICAgbGV0IHJldHVybiBhID0gcmV0dXJuIChQYXJzaW5nX291dGNvbWUucmV0dXJuIGEpXG4gICAgbGV0IHJldHVybl93aXRoX2FyZyBhID0gRG9uZSAoZnVuIF8gLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyBhKVxuICAgIGxldCBzdG9wX3BhcnNpbmcgdCA9IFN0b3BfcGFyc2luZyB0XG5cbiAgICBsZXQgb25lX21vcmUgfm5hbWUgYXJnX3R5cGUgPVxuICAgICAgbGV0IHBhcnNlIGFub24gfmZvcl9jb21wbGV0aW9uID1cbiAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYW5vbiB3aXRoXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICBpZiBmb3JfY29tcGxldGlvblxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIHdlIGRvbid0ICpyZWFsbHkqIGNhcmUgYWJvdXQgdGhpcyB2YWx1ZSwgc28ganVzdCBwdXQgaW4gYSBkdW1teSB2YWx1ZSBzb1xuICAgICAgICAgICAgICAgY29tcGxldGlvbiBjYW4gY29udGludWUgKilcbiAgICAgICAgICAgIHsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiBbXTsgdXBkYXRlX2VudiA9IEZuLmlkIH1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBkaWUgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVNcXG4lc1wiIG5hbWUgYW5vbiAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcikgKClcbiAgICAgICAgfCBPayB2IC0+XG4gICAgICAgICAgeyBwYXJzZXIgPSByZXR1cm5fd2l0aF9hcmcgdlxuICAgICAgICAgIDsgdXBkYXRlX2VudiA9XG4gICAgICAgICAgICAgIChmdW4gZW52IC0+XG4gICAgICAgICAgICAgICAgIE9wdGlvbi5mb2xkIChBcmdfdHlwZS5rZXkgYXJnX3R5cGUpIH5pbml0OmVudiB+ZjooZnVuIGVudiBrZXkgLT5cbiAgICAgICAgICAgICAgICAgICBFbnYubXVsdGlfYWRkIGVudiB+a2V5IH5kYXRhOnYpKVxuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlID0gQXJnX3R5cGUuY29tcGxldGUgYXJnX3R5cGUgfVxuICAgIDs7XG5cbiAgICBsZXQgb25lIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIFRlc3RcbiAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICBpZiBtb3JlXG4gICAgICAgICAgIHRoZW4gb25lX21vcmUgfm5hbWUgYXJnX3R5cGVcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIERvbmVcbiAgICAgICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyBhbm9ueW1vdXMgYXJndW1lbnQ6ICVzXCIgbmFtZSkpKSkpXG4gICAgOztcblxuICAgIGxldCBtYXliZSB0ID1cbiAgICAgIFRlc3RcbiAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICBpZiBtb3JlIHRoZW4gcmV0dXJuX3dpdGhfYXJnIChmdW4gYSAtPiBTb21lIGEpIDwqPiB0IGVsc2UgcmV0dXJuIE5vbmUpXG4gICAgOztcblxuICAgIGxldCBzZXF1ZW5jZSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCA9XG4gICAgICAgIFRlc3RcbiAgICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgICAgaWYgbW9yZSB0aGVuIHJldHVybiAoZnVuIHYgYWNjIC0+IHYgOjogYWNjKSA8Kj4gdCA8Kj4gbG9vcCBlbHNlIHJldHVybiBbXSlcbiAgICAgIGluXG4gICAgICBsb29wXG4gICAgOztcblxuICAgIGxldCByZWMgZmluYWxfdmFsdWUgdCBlbnYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgYSAtPiBhIGVudlxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiBmaW5hbF92YWx1ZSB0IGVudlxuICAgICAgfCBUZXN0IGYgLT4gZmluYWxfdmFsdWUgKGYgfm1vcmU6ZmFsc2UpIGVudlxuICAgICAgfCBNb3JlIF8gLT5cbiAgICAgICAgKCogdGhpcyBkb2Vzbid0IGhhcHBlbiBiZWNhdXNlIGFsbCBvY2N1cnJlbmNlcyBvZiBbTW9yZV0gYXJlIHByb3RlY3RlZFxuICAgICAgICAgICBieSBbVGVzdF0sIHdoaWNoIG1lYW5zIHRoZXJlIHdpbGwgYWx3YXlzIGJlIGFuIGV4dHJhIGFyZ3VtZW50IHRvIGdpdmVcbiAgICAgICAgICAgYmVmb3JlIHJlcXVlc3RpbmcgdGhlIGZpbmFsIHZhbHVlICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgZmFpbHdpdGggXCJCVUc6IGFza2VkIGZvciBmaW5hbCB2YWx1ZSB3aGVuIGRvaW5nIGNvbXBsZXRpb25cIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7IHBhcnNlciA6ICdhIEJhc2ljLnRcbiAgICAgICAgOyBwYXJzZV9mbGFncyA6IGJvb2xcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgbGV0IHJlYyBjb25zdW1lXG4gICAgICA6IHR5cGUgYS4gYSBCYXNpYy50IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+IGEgQ29uc3VtZV9yZXN1bHQudFxuICAgICAgPVxuICAgICAgZnVuIHQgYXJnIH5mb3JfY29tcGxldGlvbiAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgXyAtPiBkaWUgXCJ0b28gbWFueSBhbm9ueW1vdXMgYXJndW1lbnRzXCIgKClcbiAgICAgIHwgVGVzdCBmIC0+IGNvbnN1bWUgKGYgfm1vcmU6dHJ1ZSkgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgfCBNb3JlIHsgcGFyc2U7IF8gfSAtPlxuICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgeyBwYXJzZXI7IHBhcnNlX2ZsYWdzID0gdHJ1ZTsgdXBkYXRlX2VudiB9XG4gICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IHsgKGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uKSB3aXRoIHBhcnNlX2ZsYWdzID0gZmFsc2UgfVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBhY2tlZCAtPlxuICAgICAgICAobWF0Y2ggcGFja2VkIHdpdGhcbiAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgeyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIFtdOyBwYXJzZV9mbGFncyA9IHRydWU7IHVwZGF0ZV9lbnYgPSBGbi5pZCB9XG4gICAgICAgICB8IFBhY2tlZCB0IDo6IHJlc3QgLT5cbiAgICAgICAgICAgbGV0ICh7IHVwZGF0ZV9lbnY7IHBhcnNlX2ZsYWdzOyBwYXJzZXIgfSA6IF8gQ29uc3VtZV9yZXN1bHQudCkgPVxuICAgICAgICAgICAgIGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHsgdXBkYXRlX2VudlxuICAgICAgICAgICA7IHBhcnNlX2ZsYWdzXG4gICAgICAgICAgIDsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiBwYXJzZXIgQCByZXN0KVxuICAgICAgICAgICB9KVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbXBsZXRlIDogdHlwZSBhLiBhIEJhc2ljLnQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gTm90aGluZy50ID1cbiAgICAgIGZ1biB0IGVudiB+cGFydCAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBEb25lIF8gLT4gZXhpdCAwXG4gICAgICAgIHwgVGVzdCBmIC0+IGNvbXBsZXRlIChmIH5tb3JlOnRydWUpIGVudiB+cGFydFxuICAgICAgICB8IE1vcmUgeyBjb21wbGV0ZTsgXyB9IC0+IENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcGxldGUgZW52IH5wYXJ0XG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gY29tcGxldGUgdCBlbnYgfnBhcnRcbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHQgLT5cbiAgICAgICAgICAobWF0Y2ggdCB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gZXhpdCAwXG4gICAgICAgICAgIHwgUGFja2VkIHQgOjogXyAtPiBjb21wbGV0ZSB0IGVudiB+cGFydClcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIFBhcnNlci5Gb3Jfb3BlbmluZ1xuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwIDogJ2EgUGFyc2VyLnRcbiAgICA7IGdyYW1tYXIgOiBHcmFtbWFyLnRcbiAgICB9XG5cbiAgbGV0IHQyIHQxIHQyID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiAtPiBhMSwgYTIpIDwqPiB0MS5wIDwqPiB0Mi5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHQzIHQxIHQyIHQzID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiBhMyAtPiBhMSwgYTIsIGEzKSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0NCB0MSB0MiB0MyB0NCA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgYTQgLT4gYTEsIGEyLCBhMywgYTQpIDwqPiB0MS5wIDwqPiB0Mi5wIDwqPiB0My5wIDwqPiB0NC5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyOyB0My5ncmFtbWFyOyB0NC5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZSBzdHIgPVxuICAgICgqIFZlcmlmeSB0aGUgc3RyaW5nIGlzIG5vdCBlbXB0eSBvciBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2UgKilcbiAgICBsZXQgc3RybGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBzdHJsZW4gPSAwIHRoZW4gZmFpbHdpdGggXCJFbXB0eSBhbm9ueW1vdXMgYXJndW1lbnQgbmFtZSBwcm92aWRlZFwiO1xuICAgIGlmIFN0cmluZy4oIDw+ICkgKFN0cmluZy5zdHJpcCBzdHIpIHN0clxuICAgIHRoZW4gZmFpbHdpdGhmIFwiYXJndW1lbnQgbmFtZSAlUyBoYXMgc3Vycm91bmRpbmcgd2hpdGVzcGFjZVwiIHN0ciAoKTtcbiAgICAoKiBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIHNwZWNpYWwgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgZG9uJ3QgZG8gYW55dGhpbmcgKilcbiAgICBsZXQgaGFzX3NwZWNpYWxfY2hhcnMgPVxuICAgICAgbGV0IHNwZWNpYWxfY2hhcnMgPVxuICAgICAgICBTZXQub2ZfbGlzdCAobW9kdWxlIENoYXIpIFsgJzwnOyAnPic7ICdbJzsgJ10nOyAnKCc7ICcpJzsgJ3snOyAnfScgXVxuICAgICAgaW5cbiAgICAgIFN0cmluZy5leGlzdHMgc3RyIH5mOihTZXQubWVtIHNwZWNpYWxfY2hhcnMpXG4gICAgaW5cbiAgICBpZiBoYXNfc3BlY2lhbF9jaGFycyB0aGVuIHN0ciBlbHNlIFN0cmluZy51cHBlcmNhc2Ugc3RyXG4gIDs7XG5cbiAgbGV0ICggJTogKSBuYW1lIGFyZ190eXBlID1cbiAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgeyBwID0gUGFyc2VyLm9uZSB+bmFtZSBhcmdfdHlwZTsgZ3JhbW1hciA9IEdyYW1tYXIub25lIG5hbWUgfVxuICA7O1xuXG4gIGxldCBtYXBfYW5vbnMgdCB+ZiA9IHsgcCA9IHQucCA+PnwgZjsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG4gIGxldCBtYXliZSB0ID0geyBwID0gUGFyc2VyLm1heWJlIHQucDsgZ3JhbW1hciA9IEdyYW1tYXIubWF5YmUgdC5ncmFtbWFyIH1cblxuICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0IGRlZmF1bHQgdCA9XG4gICAgbGV0IHQgPSBtYXliZSB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biB2IC0+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdCB2KSB9XG4gIDs7XG5cbiAgbGV0IHNlcXVlbmNlIHQgPSB7IHAgPSBQYXJzZXIuc2VxdWVuY2UgdC5wOyBncmFtbWFyID0gR3JhbW1hci5tYW55IHQuZ3JhbW1hciB9XG4gIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0ID0gdDIgdCAoc2VxdWVuY2UgdClcblxuICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgdCA9XG4gICAgbGV0IHQgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biAoeCwgeHMpIC0+IHggOjogeHMpIH1cbiAgOztcblxuICBsZXQgZXNjYXBlIHQgPSB7IHAgPSBQYXJzZXIuc3RvcF9wYXJzaW5nIHQucDsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgYWRfaG9jIH51c2FnZV9hcmcgPVxuICAgICAgeyBwID1cbiAgICAgICAgICBQYXJzZXIuc2VxdWVuY2VcbiAgICAgICAgICAgIChQYXJzZXIub25lIH5uYW1lOlwiV0lMTCBORVZFUiBCRSBQUklOVEVEXCIgQXJnX3R5cGUuRXhwb3J0LnN0cmluZylcbiAgICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuYWRfaG9jIH51c2FnZTp1c2FnZV9hcmdcbiAgICAgIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ21kbGluZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mIHN0cmluZyAqIHRcbiAgICB8IENvbXBsZXRlIG9mIHN0cmluZ1xuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBvZl9saXN0IGFyZ3MgPSBMaXN0LmZvbGRfcmlnaHQgYXJncyB+aW5pdDpOaWwgfmY6KGZ1biBhcmcgYXJncyAtPiBDb25zIChhcmcsIGFyZ3MpKVxuXG4gIGxldCByZWMgdG9fbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHgsIHhzKSAtPiB4IDo6IHRvX2xpc3QgeHNcbiAgICB8IENvbXBsZXRlIHggLT4gWyB4IF1cbiAgOztcblxuICBsZXQgcmVjIGVuZHNfaW5fY29tcGxldGUgPSBmdW5jdGlvblxuICAgIHwgQ29tcGxldGUgXyAtPiB0cnVlXG4gICAgfCBOaWwgLT4gZmFsc2VcbiAgICB8IENvbnMgKF8sIGFyZ3MpIC0+IGVuZHNfaW5fY29tcGxldGUgYXJnc1xuICA7O1xuXG4gIGxldCBleHRlbmQgdCB+ZXh0ZW5kIH5wYXRoID1cbiAgICBpZiBlbmRzX2luX2NvbXBsZXRlIHRcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBwYXRoX2xpc3QgPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6W10gKExpc3QudGwgKFBhdGgucGFydHMgcGF0aCkpIGluXG4gICAgICBvZl9saXN0ICh0b19saXN0IHQgQCBleHRlbmQgcGF0aF9saXN0KSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBTaGFwZS5Qcml2YXRlLktleV90eXBlXG5cbmxldCBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUgZmxhZ19vcl9zdWJjb21tYW5kID1cbiAgaWYgU3RyaW5nLmV4aXN0cyBmbGFnX29yX3N1YmNvbW1hbmQgfmY6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnXycpXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiJXMgJXMgY29udGFpbnMgYW4gdW5kZXJzY29yZS4gVXNlIGEgZGFzaCBpbnN0ZWFkLlwiXG4gICAgICAoS2V5X3R5cGUudG9fc3RyaW5nIGtleV90eXBlKVxuICAgICAgZmxhZ19vcl9zdWJjb21tYW5kXG4gICAgICAoKVxuOztcblxubGV0IG5vcm1hbGl6ZSBrZXlfdHlwZSBrZXkgPVxuICBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUga2V5O1xuICBtYXRjaCBrZXlfdHlwZSB3aXRoXG4gIHwgS2V5X3R5cGUuRmxhZyAtPlxuICAgIGlmIFN0cmluZy5lcXVhbCBrZXkgXCItXCIgdGhlbiBmYWlsd2l0aGYgIVwiaW52YWxpZCAle0tleV90eXBlfSBuYW1lOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuZXhpc3RzIGtleSB+ZjpDaGFyLmlzX3doaXRlc3BhY2VcbiAgICB0aGVuIGZhaWx3aXRoZiAhXCJpbnZhbGlkICV7S2V5X3R5cGV9IG5hbWUgKGNvbnRhaW5zIHdoaXRlc3BhY2UpOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXg6XCItXCIga2V5IHRoZW4ga2V5IGVsc2UgXCItXCIgXiBrZXlcbiAgfCBLZXlfdHlwZS5TdWJjb21tYW5kIC0+IFN0cmluZy5sb3dlcmNhc2Uga2V5XG47O1xuXG5sZXQgbG9va3VwX2V4cGFuZCA9IFNoYXBlLlByaXZhdGUubG9va3VwX2V4cGFuZFxuXG5sZXQgbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgbWFwIHByZWZpeCBrZXlfdHlwZSA9XG4gIGxldCBhbGlzdCA9XG4gICAgTGlzdC5jb25jYXRfbWFwIChNYXAuZGF0YSBtYXApIH5mOihmdW4gZmxhZyAtPlxuICAgICAgbGV0IHsgRmxhZy5JbnRlcm5hbC5uYW1lXG4gICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgIDsgYWN0aW9uID0gX1xuICAgICAgICAgIDsgZG9jID0gX1xuICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgPVxuICAgICAgICBmbGFnXG4gICAgICBpblxuICAgICAgbGV0IGRhdGEgPSBmbGFnLCBuYW1lX21hdGNoaW5nIGluXG4gICAgICBsZXQgYWxpYXNlcyA9IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIEAgYWxpYXNlcyBpblxuICAgICAgKG5hbWUsIGRhdGEpIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biBhbGlhcyAtPiBhbGlhcywgZGF0YSkpXG4gIGluXG4gIG1hdGNoIExpc3QuZmluZF9hX2R1cCBhbGlzdCB+Y29tcGFyZTooZnVuIChzMSwgXykgKHMyLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBzMSBzMikgd2l0aFxuICB8IE5vbmUgLT4gbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGVcbiAgfCBTb21lIChmbGFnLCBfKSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbjs7XG5cbm1vZHVsZSBDb21tYW5kX2Jhc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBmbGFncyA6IEZsYWcuSW50ZXJuYWwudCBNYXAuTShTdHJpbmcpLnRcbiAgICA7XG4gICAgICBhbm9ucyA6IHVuaXQgLT4gKFsgYFBhcnNlX2FyZ3MgXSAtPiBbIGBSdW5fbWFpbiBdIC0+IHVuaXQpIEFub25zLlBhcnNlci5CYXNpYy50XG4gICAgOyB1c2FnZSA6IEFub25zLkdyYW1tYXIudFxuICAgIH1cblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBzdWJjb21tYW5kX2NtcF9mc3QgKGEsIF8pIChjLCBfKSA9IGhlbHBfc2NyZWVuX2NvbXBhcmUgYSBjXG5cbiAgICBsZXQgZmxhZ3NfaGVscCA/KGRpc3BsYXlfaGVscF9mbGFncyA9IHRydWUpIHQgPVxuICAgICAgbGV0IGZsYWdzID0gTWFwLmRhdGEgdC5mbGFncyBpblxuICAgICAgbGV0IGZsYWdzID1cbiAgICAgICAgaWYgZGlzcGxheV9oZWxwX2ZsYWdzXG4gICAgICAgIHRoZW4gZmxhZ3NcbiAgICAgICAgZWxzZSBMaXN0LmZpbHRlciBmbGFncyB+ZjooZnVuIGYgLT4gU3RyaW5nLiggPD4gKSBmLm5hbWUgXCItaGVscFwiKVxuICAgICAgaW5cbiAgICAgIExpc3QuY29uY2F0X21hcCB+ZjpGbGFnLkludGVybmFsLkRlcHJlY2F0ZWQuaGVscCBmbGFnc1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmb3JtYXR0ZWRfZmxhZ3MgdCA9XG4gICAgTWFwLmRhdGEgdC5mbGFnc1xuICAgIHw+IExpc3QubWFwIH5mOkZsYWcuSW50ZXJuYWwuYWxpZ25cbiAgICAoKiB0aGlzIHNvcnQgcHV0cyBvcHRpb25hbCBmbGFncyBhZnRlciByZXF1aXJlZCBvbmVzICopXG4gICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IFN0cmluZy5jb21wYXJlIGEubmFtZSBiLm5hbWUpXG4gICAgfD4gU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkuc29ydFxuICA7O1xuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuQmFzZV9pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB0LnJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpXG4gICAgOyBhbm9ucyA9IEdyYW1tYXIgdC51c2FnZVxuICAgIDsgZmxhZ3MgPSBmb3JtYXR0ZWRfZmxhZ3MgdFxuICAgIH1cbiAgOztcblxuICBsZXQgcGF0aF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcInBhdGhcIlxuICBsZXQgYXJnc19rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImFyZ3NcIlxuICBsZXQgaGVscF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImhlbHBcIlxuXG4gIGxldCBpbmRlbnRfYnlfMiBzdHIgPVxuICAgIFN0cmluZy5zcGxpdCB+b246J1xcbicgc3RyXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IFwiICBcIiBeIGxpbmUpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgZ2V0X2ZsYWdfYW5kX2FjdGlvbiB0IGFyZyA9XG4gICAgbWF0Y2ggbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgdC5mbGFncyBhcmcgRmxhZyB3aXRoXG4gICAgfCBFcnJvciBtc2cgLT4gZGllIFwiJXNcIiBtc2cgKClcbiAgICB8IE9rIChmbGFnX25hbWUsIGZsYWcpIC0+IGZsYWdfbmFtZSwgZmxhZy5hY3Rpb25cbiAgOztcblxuICBsZXQgcnVuX2ZsYWcgdCBlbnYgYXJnIChhcmdzIDogQ21kbGluZS50KSA9XG4gICAgbGV0IGZsYWcsIGFjdGlvbiA9IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgaW5cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBpbmZvIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICAoKiBJZiB3ZSdyZSBkb2luZyBjb21wbGV0aW9uLCB2ZXJzaW9uL2hlbHAgaW5mbyBhcmVuJ3QgdXNlZnVsIGNvbXBsZXRpb25cbiAgICAgICAgIHJlc3BvbnNlcy4gKilcbiAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgIHRoZW4gZW52LCBhcmdzXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJpbnRfZW5kbGluZSAoaW5mbyBlbnYpO1xuICAgICAgICBleGl0IDApXG4gICAgfCBOb19hcmcgZiAtPiBmIGVudiwgYXJnc1xuICAgIHwgQXJnIChmLCBjb21wKSAtPlxuICAgICAgKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgIHwgTmlsIC0+IGRpZSBcIm1pc3NpbmcgYXJndW1lbnQgZm9yIGZsYWcgJXNcIiBmbGFnICgpXG4gICAgICAgfCBDb25zIChhcmcsIHJlc3QpIC0+XG4gICAgICAgICBsZXQgZW52ID1cbiAgICAgICAgICAgdHJ5IGYgZW52IGFyZyB3aXRoXG4gICAgICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIGFzIGUgLT5cbiAgICAgICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgcmVzdCB0aGVuIGVudiBlbHNlIHJhaXNlIGVcbiAgICAgICAgIGluXG4gICAgICAgICBlbnYsIHJlc3RcbiAgICAgICB8IENvbXBsZXRlIHBhcnQgLT4gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlIChDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXAgZW52IH5wYXJ0KSlcbiAgICB8IFJlc3QgKGYsIGNvbXApIC0+XG4gICAgICBsZXQgYXJnX2xpc3QgPSBDbWRsaW5lLnRvX2xpc3QgYXJncyBpblxuICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3NcbiAgICAgIHRoZW4gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlIChDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXAgZW52IH5wYXJ0OmFyZ19saXN0KTtcbiAgICAgIGYgZW52IGFyZ19saXN0LCBOaWxcbiAgOztcblxuICBsZXQgcmVjIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciAoY21kbGluZSA6IENtZGxpbmUudCkgfmZvcl9jb21wbGV0aW9uIH5wYXJzZV9mbGFncyA9XG4gICAgbWF0Y2ggY21kbGluZSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIExpc3QuaXRlciAoTWFwLmRhdGEgdC5mbGFncykgfmY6KGZ1biBmbGFnIC0+IGZsYWcuY2hlY2tfYXZhaWxhYmxlIGVudik7XG4gICAgICBBbm9ucy5QYXJzZXIuZmluYWxfdmFsdWUgcGFyc2VyIGVudlxuICAgIHwgQ29tcGxldGUgcGFydCAtPlxuICAgICAgaWYgcGFyc2VfZmxhZ3MgJiYgU3RyaW5nLmlzX3ByZWZpeCBwYXJ0IH5wcmVmaXg6XCItXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICBMaXN0Lml0ZXIgKE1hcC5rZXlzIHQuZmxhZ3MpIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQgdGhlbiBwcmludF9lbmRsaW5lIG5hbWUpO1xuICAgICAgICBleGl0IDApXG4gICAgICBlbHNlIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoQW5vbnMuUGFyc2VyLmNvbXBsZXRlIHBhcnNlciBlbnYgfnBhcnQpXG4gICAgfCBDb25zIChhcmcsIGFyZ3MpIC0+XG4gICAgICBsZXQgYXJnLCBhcmdzLCBhcmdfaXNfZmxhZyA9XG4gICAgICAgIG1hdGNoIHBhcnNlX2ZsYWdzIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIChtYXRjaCBhcmcsIGFyZ3Mgd2l0aFxuICAgICAgICAgICAoKiB0aGUgJy1hbm9uJyBmbGFnIGlzIGhlcmUgYXMgYW4gZXNjYXBlIGhhdGNoIGluIGNhc2UgeW91IGhhdmUgYW5cbiAgICAgICAgICAgICAgYW5vbnltb3VzIGFyZ3VtZW50IHRoYXQgc3RhcnRzIHdpdGggYSBoeXBoZW4uICopXG4gICAgICAgICAgIHwgXCItYW5vblwiLCBDb25zIChhcmcsIGFyZ3MpIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgICAgKCogc3VwcG9ydCB0aGUgY29tbW9uIFVuaXggY29udmVudGlvbiB3aGVyZSBcIi1cIiBtZWFucyBzdGRpbiAqKVxuICAgICAgICAgICB8IFwiLVwiLCBfIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgICAgfCBfLCBfIC0+IGFyZywgYXJncywgU3RyaW5nLmlzX3ByZWZpeCBhcmcgfnByZWZpeDpcIi1cIilcbiAgICAgIGluXG4gICAgICAobWF0Y2ggYXJnX2lzX2ZsYWcgd2l0aFxuICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgbGV0IGVudiwgYXJncyA9IHJ1bl9mbGFnIHQgZW52IGFyZyBhcmdzIGluXG4gICAgICAgICBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgYXJncyB+cGFyc2VfZmxhZ3MgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgbGV0IHBhcnNlX2ZsYWdzMSA9IHBhcnNlX2ZsYWdzIGluXG4gICAgICAgICBsZXQgKHsgcGFyc2VyOyBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMjsgdXBkYXRlX2VudiB9XG4gICAgICAgICAgICAgIDogXyBBbm9ucy5QYXJzZXIuQ29uc3VtZV9yZXN1bHQudClcbiAgICAgICAgICAgPVxuICAgICAgICAgICBBbm9ucy5QYXJzZXIuY29uc3VtZSBwYXJzZXIgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBlbnYgPSB1cGRhdGVfZW52IGVudiBpblxuICAgICAgICAgbGV0IHBhcnNlX2ZsYWdzID0gcGFyc2VfZmxhZ3MxICYmIHBhcnNlX2ZsYWdzMiBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIH5wYXJzZV9mbGFncyBhcmdzIH5mb3JfY29tcGxldGlvbilcbiAgOztcblxuICBsZXQgcnVuX2V4biBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIHdoZW4gZm9yX2NvbXBsZXRpb24gLT4gZXhpdCAwXG4gICAgfCBFeGl0X2NhbGxlZCB7IHN0YXR1cyB9IC0+IGV4aXQgc3RhdHVzXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZXhuX3N0ciA9XG4gICAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBtc2cgLT4gbXNnXG4gICAgICAgIHwgXyAtPiBTZXhwLnRvX3N0cmluZ19odW0gWyVzZXhwIChleG4gOiBleG4pXVxuICAgICAgaW5cbiAgICAgIGxldCB2ZXJib3NlID0gT3B0aW9uLnZhbHVlIHZlcmJvc2Vfb25fcGFyc2VfZXJyb3IgfmRlZmF1bHQ6dHJ1ZSBpblxuICAgICAgbGV0IGVycm9yX21zZyA9XG4gICAgICAgIGlmIHZlcmJvc2VcbiAgICAgICAgdGhlblxuICAgICAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgICAgIH5zZXA6XCJcXG5cXG5cIlxuICAgICAgICAgICAgWyBcIkVycm9yIHBhcnNpbmcgY29tbWFuZCBsaW5lOlwiXG4gICAgICAgICAgICA7IGluZGVudF9ieV8yIGV4bl9zdHJcbiAgICAgICAgICAgIDsgXCJGb3IgdXNhZ2UgaW5mb3JtYXRpb24sIHJ1blwiXG4gICAgICAgICAgICA7IFwiICBcIiBeIFBhdGgudG9fc3RyaW5nIHBhdGggXiBcIiAtaGVscFxcblwiXG4gICAgICAgICAgICBdXG4gICAgICAgIGVsc2UgZXhuX3N0clxuICAgICAgaW5cbiAgICAgIHByZXJyX2VuZGxpbmUgZXJyb3JfbXNnO1xuICAgICAgZXhpdCAxXG4gIDs7XG5cbiAgbGV0IHJ1blxuICAgICAgICB0XG4gICAgICAgIGVudlxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH5oZWxwX3RleHRcbiAgICAgICAgfm9uX2ZhaWx1cmVcbiAgICA9XG4gICAgbGV0IGZvcl9jb21wbGV0aW9uID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICBsZXQgZW52ID1cbiAgICAgIGVudlxuICAgICAgfD4gRW52LnNldCB+a2V5OnBhdGhfa2V5IH5kYXRhOnBhdGhcbiAgICAgIHw+IEVudi5zZXQgfmtleTphcmdzX2tleSB+ZGF0YTooQ21kbGluZS50b19saXN0IGFyZ3MpXG4gICAgICB8PiBFbnYuc2V0IH5rZXk6aGVscF9rZXkgfmRhdGE6aGVscF90ZXh0XG4gICAgaW5cbiAgICBtYXRjaFxuICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IG1haW4gPVxuICAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52ICh0LmFub25zICgpKSB+Zm9yX2NvbXBsZXRpb24gfnBhcnNlX2ZsYWdzOnRydWUgYXJnc1xuICAgICAgICBpblxuICAgICAgICBtYWluIGBQYXJzZV9hcmdzKVxuICAgIHdpdGhcbiAgICB8IE9rIHRodW5rIC0+XG4gICAgICB3aGVuX3BhcnNpbmdfc3VjY2VlZHMgKCk7XG4gICAgICB0aHVuayBgUnVuX21haW5cbiAgICB8IEVycm9yIGV4biAtPiBvbl9mYWlsdXJlIGV4biB+Zm9yX2NvbXBsZXRpb24gfnBhdGggfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgOztcblxuICBtb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgICB0eXBlICsnYSB0ID1cbiAgICAgIHsgZiA6IHVuaXQgLT4gKHVuaXQgLT4gJ2EgUGFyc2luZ19vdXRjb21lLnQpIEFub25zLlBhcnNlci5CYXNpYy50XG4gICAgICA7IHVzYWdlIDogdW5pdCAtPiBBbm9ucy5HcmFtbWFyLnRcbiAgICAgIDsgZmxhZ3MgOiB1bml0IC0+IEZsYWcuSW50ZXJuYWwudCBsaXN0XG4gICAgICB9XG5cbiAgICBvcGVuIEFub25zLlBhcnNlci5CYXNpYy5Gb3Jfb3BlbmluZ1xuXG4gICAgbGV0IHdyYXBfdmFsdWUgdiAoKSA9IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHZcblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgeyBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgcmV0dXJuIChmdW4gZiB4ICgpIC0+XG4gICAgICAgICAgICAgICAoKiBvcmRlciBvZiBldmFsdWF0aW9uIGhlcmUgYWZmZWN0cyBpbiB3aGF0IG9yZGVyIHRoZSB1c2VycycgY2FsbGJhY2tzXG4gICAgICAgICAgICAgICAgICBhcmUgZXZhbHVhdGVkLCBzbyBpdCdzIGltcG9ydGFudCB0byBjYWxsIFtmXSBiZWZvcmUgW3hdICopXG4gICAgICAgICAgICAgICBsZXQgZl9vdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgICAgbGV0IHhfb3V0Y29tZSA9IHggKCkgaW5cbiAgICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5hcHBseSBmX291dGNvbWUgeF9vdXRjb21lKVxuICAgICAgICAgICAgIDwqPiBmLmYgKClcbiAgICAgICAgICAgICA8Kj4geC5mICgpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4geC5mbGFncyAoKSBAIGYuZmxhZ3MgKCkpXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLmNvbmNhdCBbIGYudXNhZ2UgKCk7IHgudXNhZ2UgKCkgXSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGVtcHR5X3NwZWMgOiAnbS4gKCdtIC0+ICdtKSB0ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gKCkgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgRm4uaWQpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBtYXBfb3V0Y29tZSB4IH5mID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHguZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4geCAoKSAtPlxuICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4ICgpIGluXG4gICAgICAgICAgICAgZiB4X291dGNvbWUpXG4gICAgICA7IGZsYWdzID0geC5mbGFnc1xuICAgICAgOyB1c2FnZSA9IHgudXNhZ2VcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG1hcCB4IH5mID0gbWFwX291dGNvbWUgeCB+ZjooUGFyc2luZ19vdXRjb21lLm1hcCB+ZilcblxuICAgIGxldCBsb29rdXAga2V5ID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIEFub25zLlBhcnNlci5CYXNpYy5mcm9tX2VudiAoZnVuIGVudiAtPiBFbnYuZmluZF9leG4gZW52IGtleSkgPj58IHdyYXBfdmFsdWUpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHBhdGggOiBQYXRoLnQgdCA9IGxvb2t1cCBwYXRoX2tleVxuICAgIGxldCBhcmdzIDogc3RyaW5nIGxpc3QgdCA9IGxvb2t1cCBhcmdzX2tleVxuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCB0ID0gbG9va3VwIGhlbHBfa2V5XG5cbiAgICAoKiBUaGlzIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LCBmb3IgdGhlIGhlbHAgY29tbWFuZC4gKilcbiAgICBsZXQgZW52ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gQW5vbnMuUGFyc2VyLkJhc2ljLmZyb21fZW52IChmdW4gZW52IC0+IGVudikgPj58IHdyYXBfdmFsdWUpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gICAgICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gQW5vbnNcblxuICAgICAgbGV0ICggJTogKSA9ICggJTogKVxuICAgICAgbGV0IG1hcF9hbm9ucyA9IG1hcF9hbm9uc1xuICAgICAgbGV0IG1heWJlID0gbWF5YmVcbiAgICAgIGxldCBtYXliZV93aXRoX2RlZmF1bHQgPSBtYXliZV93aXRoX2RlZmF1bHRcbiAgICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpclxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICAgIGxldCB0MiA9IHQyXG4gICAgICBsZXQgdDMgPSB0M1xuICAgICAgbGV0IHQ0ID0gdDRcblxuICAgICAgbGV0IGFub24gc3BlYyA9XG4gICAgICAgIEFub25zLkdyYW1tYXIuaW52YXJpYW50IHNwZWMuZ3JhbW1hcjtcbiAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBzcGVjLnAgPj58IGZ1biBvdXRjb21lICgpIC0+IG91dGNvbWUpXG4gICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBzcGVjLmdyYW1tYXIpXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZXNjYXBlX2Fub24gfmZpbmFsX2Fub24gPVxuICAgICAgQW5vbnMuZXNjYXBlICh0MiBmaW5hbF9hbm9uIChzZXF1ZW5jZSAoXCJBUkdcIiAlOiBzdHJpbmcpKSkgfD4gYW5vblxuICAgIDs7XG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBGbGFnXG5cbiAgICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlID0gZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlXG4gICAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfcGFpciA9IG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgICAgbGV0IG5vX2FyZ19yZXF1aXJlZCA9IG5vX2FyZ19yZXF1aXJlZFxuICAgICAgbGV0IG5vX2FyZ19yZWdpc3RlciA9IG5vX2FyZ19yZWdpc3RlclxuICAgICAgbGV0IG5vX2FyZ19hYm9ydCA9IG5vX2FyZ19hYm9ydFxuICAgICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0ID0gb3B0aW9uYWxfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgcmVxdWlyZWQgPSByZXF1aXJlZFxuXG4gICAgICBsZXQgZmxhZ19pbnRlcm5hbFxuICAgICAgICAgICAgPyhhbGlhc2VzID0gW10pXG4gICAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBtb2RlXG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgPVxuICAgICAgICBsZXQgbm9ybWFsaXplIGZsYWcgPSBub3JtYWxpemUgS2V5X3R5cGUuRmxhZyBmbGFnIGluXG4gICAgICAgIGxldCBuYW1lID0gbm9ybWFsaXplIG5hbWUgaW5cbiAgICAgICAgbGV0IGFsaWFzZXMgPSBMaXN0Lm1hcCB+Zjpub3JtYWxpemUgYWxpYXNlcyBpblxuICAgICAgICBsZXQgeyByZWFkOyBhY3Rpb247IG51bV9vY2N1cnJlbmNlczsgZXh0cmFfZG9jIH0gPSBtb2RlIG5hbWUgaW5cbiAgICAgICAgbGV0IGNoZWNrX2F2YWlsYWJsZSA9XG4gICAgICAgICAgbWF0Y2ggbnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2Ugd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gKGlnbm9yZSA6IFVuaXZfbWFwLnQgLT4gdW5pdClcbiAgICAgICAgICB8IHRydWUgLT4gZnVuIGVudiAtPiBpZ25vcmUgKHJlYWQgZW52IDogXylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5hbWVfbWF0Y2hpbmcgPVxuICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIGZ1bGxfZmxhZ19yZXF1aXJlZCB0aGVuIGBGdWxsX21hdGNoX3JlcXVpcmVkIGVsc2UgYFByZWZpeFxuICAgICAgICBpblxuICAgICAgICB7IGYgPVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgQW5vbnMuUGFyc2VyLkJhc2ljLmZyb21fZW52IChmdW4gZW52IC0+IHJlYWQgZW52KSA+PnwgZnVuIHYgKCkgLT4gdilcbiAgICAgICAgOyBmbGFncyA9XG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBbIHsgbmFtZVxuICAgICAgICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgICAgICAgICA7IGRvYyA9XG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZm9yY2UgZXh0cmFfZG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZXh0cmFfZG9jIC0+IFslc3RyaW5nIFwiJXtkb2N9ICV7ZXh0cmFfZG9jfVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBkb2MpXG4gICAgICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBdKVxuICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBmbGFnID0gZmxhZ19pbnRlcm5hbCB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6W11cblxuICAgICAgbGV0IGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuICAgICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIGFyZ190eXBlXG4gICAgICAgICAgICBzZXhwX29mX2RlZmF1bHRcbiAgICAgICAgICAgIH5kZWZhdWx0XG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgID1cbiAgICAgICAgbGV0IGRvYyA9XG4gICAgICAgICAgbWF0Y2ggc2V4cF9vZl9kZWZhdWx0IGRlZmF1bHQgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIFwiX1wiIC0+IGRvY1xuICAgICAgICAgIHwgZGVmYXVsdF9zZXhwIC0+IHNwcmludGYgIVwiJXMgKGRlZmF1bHQ6ICV7U2V4cH0pXCIgZG9jIGRlZmF1bHRfc2V4cFxuICAgICAgICBpblxuICAgICAgICBmbGFnXG4gICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIChvcHRpb25hbF93aXRoX2RlZmF1bHQgZGVmYXVsdCBhcmdfdHlwZSlcbiAgICAgICAgICB+ZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHJldHVybiB2ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gKCkgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgdikpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHJlY292ZXJfZnJvbV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPVxuICAgICAgeyB0IHdpdGhcbiAgICAgICAgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHQuZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4gZiAoKSAtPlxuICAgICAgICAgICAgIGxldCBvdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5yZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyBvdXRjb21lKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9XG4gICAgICB7IHQgd2l0aFxuICAgICAgICBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgdC5mICgpXG4gICAgICAgICAgICAgPj58IGZ1biBmICgpIC0+XG4gICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBmICgpIGluXG4gICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG91dGNvbWUpXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBvcHRpb25hbF90b19yZXF1aXJlZCB0ID1cbiAgICAgIHsgdCB3aXRoXG4gICAgICAgIGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB0LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIGYgKCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgIChQYXJzaW5nX291dGNvbWUubWFwIG91dGNvbWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIFwiW29wdGlvbmFsX3RvX3JlcXVpcmVkXSBnb3QgYSBbTm9uZV0gcmVzdWx0XCIpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gT2sgdikpKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICBlbmQpXG5cbiAgICBsZXQgYXJnX25hbWVzIHQgPVxuICAgICAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgKHQuZmxhZ3MgKCkpIGluXG4gICAgICBsZXQgZmxhZ19uYW1lcyA9IE1hcC5rZXlzIGZsYWdzIGluXG4gICAgICBsZXQgYW5vbl9uYW1lcyA9IEFub25zLkdyYW1tYXIubmFtZXMgKHQudXNhZ2UgKCkpIGluXG4gICAgICBMaXN0LmNvbmNhdCBbIGZsYWdfbmFtZXM7IGFub25fbmFtZXMgXVxuICAgIDs7XG5cbiAgICBsZXQgcmVxdWlyZWRfYXJnX25hbWVzIHQgPVxuICAgICAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgKHQuZmxhZ3MgKCkpIGluXG4gICAgICBMaXN0LmZpbHRlcl9tYXAgKE1hcC50b19hbGlzdCBmbGFncykgfmY6KGZ1biAobmFtZSwgZmxhZykgLT5cbiAgICAgICAgaWYgZmxhZy5udW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZSB0aGVuIFNvbWUgbmFtZSBlbHNlIE5vbmUpXG4gICAgOztcblxuICAgIG1vZHVsZSBDaG9vc2Vfb25lID0gc3RydWN0XG4gICAgICB0eXBlICdhIHBhcmFtID0gJ2EgdFxuXG4gICAgICBtb2R1bGUgQ2hvaWNlX25hbWUgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgbGlzdF90b19zdHJpbmcgOiB0IGxpc3QgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBjcmVhdGVfZXhuIDogJ2EgcGFyYW0gLT4gdFxuICAgICAgICB2YWwgZW51bWVyYXRlX3JlcXVpcmVkX2ZsYWdzIDogdCAtPiBleGNlcHQ6c3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICB7IGFsbF9hcmdzIDogc3RyaW5nIGxpc3RcbiAgICAgICAgICAgIDsgcmVxdWlyZWRfYXJncyA6IHN0cmluZyBsaXN0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodC5hbGxfYXJncyA6IHN0cmluZyBsaXN0KV1cbiAgICAgICAgZW5kXG5cbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4gICAgICAgIGxldCBjcmVhdGVfZXhuIHBhcmFtID1cbiAgICAgICAgICBsZXQgcmVxdWlyZWRfYXJncyA9IHJlcXVpcmVkX2FyZ19uYW1lcyBwYXJhbSBpblxuICAgICAgICAgIGxldCBuYW1lcyA9IGFyZ19uYW1lcyBwYXJhbSBpblxuICAgICAgICAgIGxldCBuYW1lc193aXRoX2NvbW1hcyA9IExpc3QuZmlsdGVyIG5hbWVzIH5mOihmdW4gcyAtPiBTdHJpbmcuY29udGFpbnMgcyAnLCcpIGluXG4gICAgICAgICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IG5hbWVzX3dpdGhfY29tbWFzKVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiRm9yIHNpbXBsaWNpdHksIFtDb21tYW5kLlNwZWMuY2hvb3NlX29uZV0gZG9lcyBub3Qgc3VwcG9ydCBuYW1lcyB3aXRoIFxcXG4gICAgICAgICAgICAgICBjb21tYXMuXCJcbiAgICAgICAgICAgICAgbmFtZXNfd2l0aF9jb21tYXNcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgbGlzdF1cbiAgICAgICAgICAgIHw+IEVycm9yLnJhaXNlO1xuICAgICAgICAgIG1hdGNoIG5hbWVzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZSBcIltjaG9vc2Vfb25lXSBleHBlY3RzIGNob2ljZXMgdG8gcmVhZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlwiXVxuICAgICAgICAgIHwgXyA6OiBfIC0+IHsgYWxsX2FyZ3MgPSBuYW1lczsgcmVxdWlyZWRfYXJncyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgICBtYXRjaCB0LnJlcXVpcmVkX2FyZ3Mgd2l0aFxuICAgICAgICAgIHwgW10gLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIHQuYWxsX2FyZ3NcbiAgICAgICAgICB8IF8gOjogXyAtPiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgdC5yZXF1aXJlZF9hcmdzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGVudW1lcmF0ZV9yZXF1aXJlZF9mbGFncyB0IH5leGNlcHQgPVxuICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIHQucmVxdWlyZWRfYXJncyB+ZjooZnVuIHggLT4gbm90IChTdHJpbmcuZXF1YWwgZXhjZXB0IHgpKSB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgfCBfIDo6IF8gYXMgbCAtPiBTb21lIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgbClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbGlzdF90b19zdHJpbmcgdHMgPSBMaXN0Lm1hcCB0cyB+Zjp0b19zdHJpbmcgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuICBcIlxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IHN0cnVjdFxuICAgICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgICAgICAgICh0eXBlIGEgYilcbiAgICAgICAgICAgID8obmV3X2JlaGF2aW9yID0gdHJ1ZSlcbiAgICAgICAgICAgICh0cyA6IGEgcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBsZXQgZml4X2ZsYWcgdCA9XG4gICAgICAgICAgaWYgbmV3X2JlaGF2aW9yXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmFtZV9vZl90aGVfZ3JvdXAgPSBDaG9pY2VfbmFtZS5jcmVhdGVfZXhuIHQgaW5cbiAgICAgICAgICAgIGxldCBmaXhfbnVtX29jY3VycmVuY2VzIGZsYWcgPVxuICAgICAgICAgICAgICB7IGZsYWcgd2l0aFxuICAgICAgICAgICAgICAgIEZsYWcuSW50ZXJuYWwubnVtX29jY3VycmVuY2VzID1cbiAgICAgICAgICAgICAgICAgIHsgZmxhZy5GbGFnLkludGVybmFsLm51bV9vY2N1cnJlbmNlcyB3aXRoIGF0X2xlYXN0X29uY2UgPSBmYWxzZSB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuZCBmaXhfZG9jIGZsYWcgPVxuICAgICAgICAgICAgICB7IGZsYWcgd2l0aFxuICAgICAgICAgICAgICAgIEZsYWcuSW50ZXJuYWwuZG9jID1cbiAgICAgICAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgXCIlcyVzXCJcbiAgICAgICAgICAgICAgICAgICAgZmxhZy5GbGFnLkludGVybmFsLmRvY1xuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgQ2hvaWNlX25hbWUuZW51bWVyYXRlX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2VwdDpmbGFnLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29mX3RoZV9ncm91cFxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBncm91cCAtPiBzcHJpbnRmIFwiIFtyZXF1aXJlczogXFxcIiVzXFxcIl1cIiBncm91cClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW5kIG1ha2VfYW5vbnNfb3B0aW9uYWwgKGFub24gOiBBbm9ucy5HcmFtbWFyLnQpID1cbiAgICAgICAgICAgICAgQW5vbnMuR3JhbW1hci5tYXliZV9pZGVtcG90ZW50IGFub25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aFxuICAgICAgICAgICAgICB1c2FnZSA9IChmdW4gKCkgLT4gbWFrZV9hbm9uc19vcHRpb25hbCAodC51c2FnZSAoKSkpXG4gICAgICAgICAgICA7IGZsYWdzID1cbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgKHQuZmxhZ3MgKCkpIH5mOihmdW4gZmxhZ19pbnRlcm5hbCAtPlxuICAgICAgICAgICAgICAgICAgICAgZmxhZ19pbnRlcm5hbCB8PiBmaXhfbnVtX29jY3VycmVuY2VzIHw+IGZpeF9kb2MpKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBlbHNlIHRcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gQ2hvaWNlX25hbWUuY3JlYXRlX2V4biB0LCBmaXhfZmxhZyB0KVxuICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdCAobW9kdWxlIENob2ljZV9uYW1lKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPlxuICAgICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGNhbGxlZCB3aXRoIGR1cGxpY2F0ZSBuYW1lXCJcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIFslc2V4cF9vZjogQ2hvaWNlX25hbWUudF1cbiAgICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgICAgICB8IGBPayB0cyAtPlxuICAgICAgICAgIE1hcC5mb2xkIHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOnQgYWNjIC0+XG4gICAgICAgICAgICBtYXAyXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAocmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdClcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgeyByZXN1bHQgPSB2YWx1ZTsgaGFzX2FyZyB9IC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggaGFzX2FyZyB3aXRoXG4gICAgICAgICAgICAgICAgfCBmYWxzZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IHRydWUgLT4gKG5hbWUsIHZhbHVlKSA6OiBhY2MpKVxuICAgICAgICAgIHw+IG1hcCB+ZjooZnVuIHZhbHVlX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCBhcmdfY291bnRlciA9IExpc3QubGVuZ3RoIHZhbHVlX2xpc3QgaW5cbiAgICAgICAgICAgIGxldCBtaXNzaW5nX2ZsYWdfZXJyb3IgZm10ID1cbiAgICAgICAgICAgICAga3NwcmludGZcbiAgICAgICAgICAgICAgICAoZnVuIG1zZyAoKSAtPiBFcnJvciAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgKEVycm9yLm9mX3N0cmluZyBtc2cpKSlcbiAgICAgICAgICAgICAgICBmbXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbW9yZV90aGFuX29uZV9lcnJvciBwYXNzZWQgPVxuICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAhXCJDYW5ub3QgcGFzcyBtb3JlIHRoYW4gb25lIG9mIHRoZXNlOiBcXG5cXFxuICAgICAgICAgICAgICAgICBcXCAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBwYXNzZWQgfmY6ZnN0KVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICBhbmQgc3VjY2Vzc19saXN0LCBlcnJvcl9saXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIHZhbHVlX2xpc3QgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBuYW1lLCBPayB2YWx1ZSAtPiBGaXJzdCAobmFtZSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgfCBuYW1lLCBFcnJvciBlcnIgLT4gU2Vjb25kIChuYW1lLCBlcnIpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIHN1Y2Nlc3NfbGlzdCB3aXRoXG4gICAgICAgICAgICB8IF8gOjogXyA6OiBfIGFzIHBhc3NlZCAtPiBtb3JlX3RoYW5fb25lX2Vycm9yIHBhc3NlZFxuICAgICAgICAgICAgfCBbIChfLCAodmFsdWUgOiBhKSkgXSAtPlxuICAgICAgICAgICAgICBpZiBhcmdfY291bnRlciA+IDFcbiAgICAgICAgICAgICAgdGhlbiBtb3JlX3RoYW5fb25lX2Vycm9yIHZhbHVlX2xpc3RcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgRGVmYXVsdF90byAoXyA6IGEpIC0+ICh2YWx1ZSA6IGIpXG4gICAgICAgICAgICAgICAgICAgfCBSYWlzZSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gKFNvbWUgdmFsdWUgOiBiKSlcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGVycm9yX2xpc3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBbIChuYW1lLCBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnIpIF0gLT5cbiAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk5vdCBhbGwgZmxhZ3MgaW4gZ3JvdXAgXFxcIiVzXFxcIiBhcmUgZ2l2ZW46ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ2hvaWNlX25hbWUudG9fc3RyaW5nIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyKSkpKVxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBpZl9ub3RoaW5nX2Nob3NlbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gdmFsdWUgLT4gT2sgdmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gT2sgTm9uZVxuICAgICAgICAgICAgICAgICAgfCBSYWlzZSAtPlxuICAgICAgICAgICAgICAgICAgICBtaXNzaW5nX2ZsYWdfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAhXCJNdXN0IHBhc3Mgb25lIG9mIHRoZXNlOlxcbiAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgICAgICAgIChNYXAua2V5cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAoKSkpKVxuICAgICAgICAgIHw+IGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICA7O1xuXG4gICAgICBsZXQgY2hvb3NlX29uZVxuICAgICAgICAgICAgKHR5cGUgYSBiKVxuICAgICAgICAgICAgKHRzIDogYSBvcHRpb24gcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBjaG9vc2Vfb25lX25vbl9vcHRpb25hbFxuICAgICAgICAgIH5uZXdfYmVoYXZpb3I6ZmFsc2VcbiAgICAgICAgICB+aWZfbm90aGluZ19jaG9zZW5cbiAgICAgICAgICAoTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgbWFwX291dGNvbWUgdCB+ZjooZnVuIHsgUGFyc2luZ19vdXRjb21lLnJlc3VsdDsgaGFzX2FyZyB9IC0+XG4gICAgICAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBPayAoU29tZSB2YWx1ZSkgLT4geyBQYXJzaW5nX291dGNvbWUucmVzdWx0ID0gT2sgdmFsdWU7IGhhc19hcmcgPSB0cnVlIH1cbiAgICAgICAgICAgICAgIHwgT2sgTm9uZSAtPlxuICAgICAgICAgICAgICAgICB7IGhhc19hcmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgICA7IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgKEVycm9yLm9mX3N0cmluZyBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZ1wiKSlcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgfCBFcnJvciBfIGFzIHJlc3VsdCAtPiB7IGhhc19hcmc7IHJlc3VsdCB9KSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gQ2hvb3NlX29uZS5JZl9ub3RoaW5nX2Nob3NlblxuXG4gICAgbGV0IGNob29zZV9vbmUgPSBDaG9vc2Vfb25lLmNob29zZV9vbmVcblxuICAgIGxldCBjaG9vc2Vfb25lX25vbl9vcHRpb25hbCBsc3QgfmlmX25vdGhpbmdfY2hvc2VuID1cbiAgICAgIENob29zZV9vbmUuY2hvb3NlX29uZV9ub25fb3B0aW9uYWwgbHN0IH5pZl9ub3RoaW5nX2Nob3NlblxuICAgIDs7XG5cbiAgICBsZXQgYW5kX2FyZ19uYW1lcyB0ID0gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgYXJnX25hbWVzIHQpXG5cbiAgICBsZXQgYW5kX2FyZ19uYW1lIHQgPVxuICAgICAgbWF0Y2ggYXJnX25hbWVzIHQgd2l0aFxuICAgICAgfCBbIG5hbWUgXSAtPiBtYXAgdCB+ZjooZnVuIHZhbHVlIC0+IHZhbHVlLCBuYW1lKVxuICAgICAgfCBuYW1lcyAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlthbmRfYXJnX25hbWVdIGV4cGVjdHMgZXhhY3RseSBvbmUgbmFtZSwgZ290XCIgfl86KG5hbWVzIDogc3RyaW5nIGxpc3QpXVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2UgeyBmbGFnczsgdXNhZ2UgPSBfOyBmIH0gYXJncyA9XG4gICAgICBsZXQgY21kbGluZSA9IENtZGxpbmUub2ZfbGlzdCBhcmdzIGluXG4gICAgICBsZXQgcmVzdWx0ID0gcmVmIE5vbmUgaW5cbiAgICAgIHJ1blxuICAgICAgICB7IHN1bW1hcnkgPSBcIlwiXG4gICAgICAgIDsgcmVhZG1lID0gTm9uZVxuICAgICAgICA7IGZsYWdzID0gZmxhZ3MgKCkgfD4gRmxhZy5JbnRlcm5hbC5jcmVhdGVcbiAgICAgICAgOyBhbm9ucyA9XG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgb3BlbiBBbm9ucy5QYXJzZXIuQmFzaWMuRm9yX29wZW5pbmcgaW5cbiAgICAgICAgICAgICAgIGYgKClcbiAgICAgICAgICAgICAgID4+fCBmdW4gcGFyYW1zIGBQYXJzZV9hcmdzIGBSdW5fbWFpbiAtPlxuICAgICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBwYXJhbXMgKCkgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIG91dGNvbWUucmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycikgLT4gcmVzdWx0IDo9IFNvbWUgKEVycm9yIGVycilcbiAgICAgICAgICAgICAgIHwgT2sgeCAtPiByZXN1bHQgOj0gU29tZSAoT2sgeCkpXG4gICAgICAgIDsgdXNhZ2UgPSBBbm9ucy5HcmFtbWFyLnplcm9cbiAgICAgICAgfVxuICAgICAgICBVbml2X21hcC5lbXB0eVxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzOkZuLmlkXG4gICAgICAgIH5hcmdzOmNtZGxpbmVcbiAgICAgICAgfnBhdGg6UGF0aC5lbXB0eVxuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvcjooU29tZSB0cnVlKVxuICAgICAgICB+aGVscF90ZXh0OihsYXp5IFwiTm8gaGVscCBmb3IgcGFyc2luZ1wiKVxuICAgICAgICB+b25fZmFpbHVyZTpcbiAgICAgICAgICAoZnVuXG4gICAgICAgICAgICBleG5cbiAgICAgICAgICAgIH5mb3JfY29tcGxldGlvbjooXyA6IGJvb2wpXG4gICAgICAgICAgICB+cGF0aDooXyA6IFBhdGgudClcbiAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yOihfIDogYm9vbCBvcHRpb24pXG4gICAgICAgICAgICAtPiByZXN1bHQgOj0gU29tZSAoRXJyb3IgKEVycm9yLm9mX2V4biBleG4pKSk7XG4gICAgICBPcHRpb24udmFsdWVfZXhuIH5oZXJlOlslaGVyZV0gIXJlc3VsdFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTcGVjID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhIC0+ICdiKSBQYXJhbS50XG4gICAgdHlwZSAnYSBwYXJhbSA9ICdhIFBhcmFtLnRcblxuICAgIGxldCBhcHBseSA9IFBhcmFtLmFwcGx5XG4gICAgbGV0ICggKysgKSB0MSB0MiA9IFBhcmFtLm1hcDIgdDEgdDIgfmY6KGZ1biBmMSBmMiB4IC0+IGYyIChmMSB4KSlcbiAgICBsZXQgKCArPiApIHQxIHAyID0gUGFyYW0ubWFwMiB0MSBwMiB+ZjooZnVuIGYxIHAyIHggLT4gKGYxIHgpIHAyKVxuICAgIGxldCAoICs8ICkgdDEgcDIgPSBQYXJhbS5tYXAyIHAyIHQxIH5mOihmdW4gcDIgZjEgeCAtPiBmMSAoeCBwMikpXG4gICAgbGV0IHN0ZXAgZiA9IFBhcmFtLnJldHVybiBmXG5cbiAgICAoKiBJZGVhbGx5IHRoaXMgd291bGQgYmUgW2xldCBlbXB0eSA9IFBhcmFtLnJldHVybiBGbi5pZF0sIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoYXRcbiAgICAgICBkb2Vzbid0IGNvbXBpbGUgYmVjYXVzZSBvZiB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gKilcbiAgICBsZXQgZW1wdHkgPSBQYXJhbS5lbXB0eV9zcGVjXG4gICAgbGV0IGNvbnN0IHggPSBQYXJhbS5yZXR1cm4geFxuICAgIGxldCBtYXAgPSBQYXJhbS5tYXBcbiAgICBsZXQgd3JhcCBmIHQgPSBQYXJhbS5tYXAgdCB+ZjooZnVuIHJ1biBtYWluIC0+IGYgfnJ1biB+bWFpbilcbiAgICBsZXQgb2ZfcGFyYW0gcCA9IG1hcCBwIH5mOihmdW4gZiBrIC0+IGsgZilcbiAgICBsZXQgdG9fcGFyYW0gdCBtID0gbWFwIHQgfmY6KGZ1biBmIC0+IGYgbSlcbiAgICBsZXQgcGF0aCA6IFBhdGgudCBwYXJhbSA9IFBhcmFtLnBhdGhcbiAgICBsZXQgYXJncyA6IHN0cmluZyBsaXN0IHBhcmFtID0gUGFyYW0uYXJnc1xuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCBwYXJhbSA9IFBhcmFtLmhlbHBcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICAgICAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEFub25zXG5cbiAgICAgIHR5cGUgJ2EgYW5vbnMgPSAnYSB0XG5cbiAgICAgIGxldCAoICU6ICkgPSAoICU6IClcbiAgICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICAgIGxldCBtYXliZSA9IG1heWJlXG4gICAgICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0ID0gbWF5YmVfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXJcbiAgICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgICBsZXQgdDIgPSB0MlxuICAgICAgbGV0IHQzID0gdDNcbiAgICAgIGxldCB0NCA9IHQ0XG4gICAgICBsZXQgYW5vbiA9IFBhcmFtLmFub25cbiAgICBlbmRcblxuICAgIGxldCBlc2NhcGVfYW5vbiA9IFBhcmFtLmVzY2FwZV9hbm9uXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBGbGFnXG5cbiAgICAgIHR5cGUgJ2EgZmxhZyA9ICdhIHRcblxuICAgICAgbGV0IG1hcF9mbGFnID0gbWFwX2ZsYWdcbiAgICAgIGxldCBlc2NhcGUgPSBlc2NhcGVcbiAgICAgIGxldCBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUgPSBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGVcbiAgICAgIGxldCBsaXN0ZWQgPSBsaXN0ZWRcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyID0gb25lX29yX21vcmVfYXNfcGFpclxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgPSBvbmVfb3JfbW9yZV9hc19saXN0XG4gICAgICBsZXQgbm9fYXJnID0gbm9fYXJnXG4gICAgICBsZXQgbm9fYXJnX3JlcXVpcmVkID0gbm9fYXJnX3JlcXVpcmVkXG4gICAgICBsZXQgbm9fYXJnX3JlZ2lzdGVyID0gbm9fYXJnX3JlZ2lzdGVyXG4gICAgICBsZXQgbm9fYXJnX2Fib3J0ID0gbm9fYXJnX2Fib3J0XG4gICAgICBsZXQgbm9fYXJnX3NvbWUgPSBub19hcmdfc29tZVxuICAgICAgbGV0IG9wdGlvbmFsID0gb3B0aW9uYWxcbiAgICAgIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgPSBvcHRpb25hbF93aXRoX2RlZmF1bHRcbiAgICAgIGxldCByZXF1aXJlZCA9IHJlcXVpcmVkXG4gICAgICBsZXQgZmxhZyA9IFBhcmFtLmZsYWdcbiAgICAgIGxldCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2MgPSBQYXJhbS5mbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcblxuICAgICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgUGFyYW0udFxuXG4gICAgICAgICAgbGV0IHJldHVybiA9IFBhcmFtLnJldHVyblxuICAgICAgICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHBhaXIgPSBQYXJhbS5ib3RoXG4gICAgZW5kXG5cbiAgICBsZXQgZmxhZ3Nfb2ZfYXJnc19leG4gYXJncyA9XG4gICAgICBMaXN0LmZvbGQgYXJncyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjYyAobmFtZSwgc3BlYywgZG9jKSAtPlxuICAgICAgICBsZXQgZ2VuIGYgZmxhZ190eXBlID1cbiAgICAgICAgICBzdGVwIChmdW4gbSB4IC0+XG4gICAgICAgICAgICBmIHg7XG4gICAgICAgICAgICBtKVxuICAgICAgICAgICs+IFBhcmFtLmZsYWcgbmFtZSBmbGFnX3R5cGUgfmRvY1xuICAgICAgICBpblxuICAgICAgICBsZXQgY2FsbCBmIGFyZ190eXBlID0gZ2VuIChmdW4geCAtPiBPcHRpb24uaXRlciB4IH5mKSAoUGFyYW0ub3B0aW9uYWwgYXJnX3R5cGUpIGluXG4gICAgICAgIGxldCBzZXQgciBhcmdfdHlwZSA9IGNhbGwgKGZ1biB4IC0+IHIgOj0geCkgYXJnX3R5cGUgaW5cbiAgICAgICAgbGV0IHNldF9ib29sIHIgYiA9IGdlbiAoZnVuIHBhc3NlZCAtPiBpZiBwYXNzZWQgdGhlbiByIDo9IGIpIFBhcmFtLm5vX2FyZyBpblxuICAgICAgICBhY2NcbiAgICAgICAgKytcbiAgICAgICAgbWF0Y2ggKHNwZWMgOiBTdGRsaWIuQXJnLnNwZWMpIHdpdGhcbiAgICAgICAgfCBVbml0IGYgLT4gZ2VuIChmdW4gcGFzc2VkIC0+IGlmIHBhc3NlZCB0aGVuIGYgKCkpIFBhcmFtLm5vX2FyZ1xuICAgICAgICB8IFNldCByIC0+IHNldF9ib29sIHIgdHJ1ZVxuICAgICAgICB8IENsZWFyIHIgLT4gc2V0X2Jvb2wgciBmYWxzZVxuICAgICAgICB8IFN0cmluZyBmIC0+IGNhbGwgZiBzdHJpbmdcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT4gc2V0IHIgc3RyaW5nXG4gICAgICAgIHwgSW50IGYgLT4gY2FsbCBmIGludFxuICAgICAgICB8IFNldF9pbnQgciAtPiBzZXQgciBpbnRcbiAgICAgICAgfCBGbG9hdCBmIC0+IGNhbGwgZiBmbG9hdFxuICAgICAgICB8IFNldF9mbG9hdCByIC0+IHNldCByIGZsb2F0XG4gICAgICAgIHwgQm9vbCBmIC0+IGNhbGwgZiBib29sXG4gICAgICAgIHwgU3ltYm9sIChzeW1zLCBmKSAtPlxuICAgICAgICAgIGxldCBhcmdfdHlwZSA9XG4gICAgICAgICAgICBBcmdfdHlwZS5vZl9hbGlzdF9leG5cbiAgICAgICAgICAgICAgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2VcbiAgICAgICAgICAgICAgKExpc3QubWFwIHN5bXMgfmY6KGZ1biBzeW0gLT4gc3ltLCBzeW0pKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY2FsbCBmIGFyZ190eXBlXG4gICAgICAgIHwgUmVzdCBmIC0+IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZjooTGlzdC5pdGVyIH5mKSkgUGFyYW0uZXNjYXBlXG4gICAgICAgIHwgVHVwbGUgXyAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlR1cGxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKEV4cGFuZCBfKSBbQGlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDA1LCAwKV0pIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuRXhwYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKFJlc3RfYWxsIF8pIFtAaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMTIsIDApXSkgLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5SZXN0X2FsbCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBGbGFnLkRlcHJlY2F0ZWRcbiAgICAgIGluY2x1ZGUgQW5vbnMuRGVwcmVjYXRlZFxuICAgIGVuZFxuXG4gICAgbGV0IGFyZ19uYW1lcyA9IFBhcmFtLmFyZ19uYW1lc1xuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gUGFyYW0uQ2hvb3NlX29uZS5JZl9ub3RoaW5nX2Nob3NlblxuXG4gICAgbGV0IGNob29zZV9vbmUgPSBQYXJhbS5jaG9vc2Vfb25lXG4gICAgbGV0IGNob29zZV9vbmVfbm9uX29wdGlvbmFsID0gUGFyYW0uY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICBsZXQgYW5kX2FyZ19uYW1lcyA9IFBhcmFtLmFuZF9hcmdfbmFtZXNcbiAgICBsZXQgYW5kX2FyZ19uYW1lID0gUGFyYW0uYW5kX2FyZ19uYW1lXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBsaXN0IExhenkudFxuICAgIDsgYm9keSA6IChwYXRoOnN0cmluZyBsaXN0IC0+IHVuaXQpIG9wdGlvblxuICAgIH1cblxuICBsZXQgc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGUgdCA6IF8gU2hhcGUuR3JvdXBfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSB0LnJlYWRtZVxuICAgIDsgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCB0LnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzdWJjb21tYW5kX3RvX3NoYXBlKVxuICAgIH1cbiAgOztcbmVuZFxuXG5sZXQgYWJzX3BhdGggPSBTaGFwZS5Qcml2YXRlLmFic19wYXRoXG5sZXQgY29tcF9jd29yZCA9IEVudl92YXIuQ09NUF9DV09SRFxuXG5tb2R1bGUgRXhlYyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7ICgqIElmIFtwYXRoX3RvX2V4ZV0gaXMgcmVsYXRpdmUsIGludGVycHJldCB3LnIudC4gW3dvcmtpbmdfZGlyXSAqKVxuICAgICAgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGVudiA6IGVudiBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIHQgOiBTaGFwZS5FeGVjX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kID0gdC5jaGlsZF9zdWJjb21tYW5kXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEEgcHJveHkgY29tbWFuZCBpcyB0aGUgc3RydWN0dXJlIG9mIGFuIEV4ZWMgY29tbWFuZCBvYnRhaW5lZCBieSBydW5uaW5nIGl0IGluIGFcbiAgIHNwZWNpYWwgd2F5ICopXG5tb2R1bGUgUHJveHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBCYXNlIG9mIFNoYXBlLkJhc2VfaW5mby50XG4gICAgICB8IEdyb3VwIG9mICdhIFNoYXBlLkdyb3VwX2luZm8udFxuICAgICAgfCBFeGVjIG9mIFNoYXBlLkV4ZWNfaW5mby50XG4gICAgICB8IExhenkgb2YgJ2EgdCBMYXp5LnRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsga2luZCA6IHQgS2luZC50XG4gICAgfVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzZSBvZiBDb21tYW5kX2Jhc2UudFxuICB8IEdyb3VwIG9mIHQgR3JvdXAudFxuICB8IEV4ZWMgb2YgRXhlYy50XG4gIHwgTGF6eSBvZiB0IExhenkudFxuXG5sZXQgcmVjIHNleHBhYmxlX3NoYXBlIDogdCAtPiBTaGFwZS5TZXhwYWJsZS50ID0gZnVuY3Rpb25cbiAgfCBCYXNlIGJhc2UgLT4gQmFzZSAoQ29tbWFuZF9iYXNlLnNoYXBlIGJhc2UpXG4gIHwgRXhlYyBleGVjIC0+IEV4ZWMgKEV4ZWMuc2hhcGUgZXhlYylcbiAgfCBHcm91cCBncm91cCAtPiBHcm91cCAoR3JvdXAuc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGU6c2V4cGFibGVfc2hhcGUgZ3JvdXApXG4gIHwgTGF6eSB0aHVuayAtPiBMYXp5IChMYXp5Lm1hcCB+ZjpzZXhwYWJsZV9zaGFwZSB0aHVuaylcbjs7XG5cbnR5cGUgKCdtYWluLCAncmVzdWx0KSBiYXNpY19zcGVjX2NvbW1hbmQgPVxuICBzdW1tYXJ5OnN0cmluZ1xuICAtPiA/cmVhZG1lOih1bml0IC0+IHN0cmluZylcbiAgLT4gKCdtYWluLCB1bml0IC0+ICdyZXN1bHQpIENvbW1hbmRfYmFzZS5TcGVjLnRcbiAgLT4gJ21haW5cbiAgLT4gdFxuXG5sZXQgZXh0ZW5kX2V4biB+bWVtIH5hZGQgbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGlmIG1lbSBtYXAga2V5XG4gIHRoZW4gZmFpbHdpdGhmIFwidGhlcmUgaXMgYWxyZWFkeSBhICVzIG5hbWVkICVzXCIgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSkga2V5ICgpO1xuICBhZGQgbWFwIH5rZXkgfmRhdGFcbjs7XG5cbmxldCBleHRlbmRfbWFwX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgZXh0ZW5kX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhIH5tZW06TWFwLm1lbSB+YWRkOk1hcC5zZXRcbjs7XG5cbmxldCBleHRlbmRfYWxpc3RfZXhuIGFsaXN0IGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG5cbiAgICBhbGlzdFxuICAgIGtleV90eXBlXG4gICAgfmtleVxuICAgIGRhdGFcbiAgICB+bWVtOihmdW4gYWxpc3Qga2V5IC0+IExpc3QuQXNzb2MubWVtIGFsaXN0IGtleSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuICAgIH5hZGQ6KGZ1biBhbGlzdCB+a2V5IH5kYXRhIC0+IExpc3QuQXNzb2MuYWRkIGFsaXN0IGtleSBkYXRhIH5lcXVhbDpTdHJpbmcuZXF1YWwpXG47O1xuXG5tb2R1bGUgQmFpbG91dF9kdW1wX2ZsYWcgPSBzdHJ1Y3RcbiAgbGV0IGFkZCBiYXNlIH5uYW1lIH5hbGlhc2VzIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCB+dGV4dCB+dGV4dF9zdW1tYXJ5ID1cbiAgICBsZXQgZmxhZ3MgPSBiYXNlLkNvbW1hbmRfYmFzZS5mbGFncyBpblxuICAgIGxldCBmbGFncyA9XG4gICAgICBleHRlbmRfbWFwX2V4blxuICAgICAgICBmbGFnc1xuICAgICAgICBLZXlfdHlwZS5GbGFnXG4gICAgICAgIH5rZXk6bmFtZVxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBGbGFnLk51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBpZ25vcmVcbiAgICAgICAgOyBhY3Rpb24gPSBQcmludF9pbmZvX2FuZF9xdWl0IChmdW4gZW52IC0+IHRleHQgZW52KVxuICAgICAgICA7IGRvYyA9IHNwcmludGYgXCIgcHJpbnQgJXMgYW5kIGV4aXRcIiB0ZXh0X3N1bW1hcnlcbiAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gYFByZWZpeFxuICAgICAgICB9XG4gICAgaW5cbiAgICB7IGJhc2Ugd2l0aCBmbGFncyB9XG4gIDs7XG5lbmRcblxubGV0IGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgeyBDb21tYW5kX2Jhc2UuUGFyYW0udXNhZ2U7IGZsYWdzOyBmIH0gPVxuICBsZXQgZmxhZ3MgPSBmbGFncyAoKSBpblxuICBsZXQgdXNhZ2UgPSB1c2FnZSAoKSBpblxuICBsZXQgYW5vbnMgKCkgPVxuICAgIGxldCBvcGVuIEFub25zLlBhcnNlci5CYXNpYy5Gb3Jfb3BlbmluZyBpblxuICAgIGYgKClcbiAgICA+PnwgZnVuIHBhcmFtcyBgUGFyc2VfYXJncyAtPlxuICAgIGxldCBvdXRjb21lID0gcGFyYW1zICgpIGluXG4gICAgbWF0Y2ggb3V0Y29tZS5yZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycikgLT4gZGllIFwiJXNcIiAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnIpICgpXG4gICAgfCBPayB0aHVuayAtPiBmdW4gYFJ1bl9tYWluIC0+IHRodW5rICgpXG4gIGluXG4gIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlIGZsYWdzIGluXG4gIGxldCBiYXNlID0geyBDb21tYW5kX2Jhc2Uuc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3M7IGFub25zIH0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgYmFzZVxuICAgICAgfm5hbWU6XCItaGVscFwiXG4gICAgICB+YWxpYXNlczpbIFwiLT9cIiBdXG4gICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0taGVscFwiIF1cbiAgICAgIH50ZXh0X3N1bW1hcnk6XCJ0aGlzIGhlbHAgdGV4dFwiXG4gICAgICB+dGV4dDooZnVuIGVudiAtPiBMYXp5LmZvcmNlIChFbnYuZmluZF9leG4gZW52IENvbW1hbmRfYmFzZS5oZWxwX2tleSkpXG4gIGluXG4gIEJhc2UgYmFzZVxuOztcblxubGV0IGJhc2ljX3NwZWMgfnN1bW1hcnkgP3JlYWRtZSBzcGVjIG1haW4gPVxuICBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIChDb21tYW5kX2Jhc2UuU3BlYy50b19wYXJhbSBzcGVjIG1haW4pXG47O1xuXG5sZXQgc3Vic19rZXkgOiAoc3RyaW5nICogdCkgbGlzdCBFbnYuS2V5LnQgPSBFbnYua2V5X2NyZWF0ZSBcInN1YmNvbW1hbmRzXCJcblxubGV0IGxhenlfZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCBzdWJjb21tYW5kcyA9XG4gICAgTGF6eS5tYXAgYWxpc3QgfmY6KGZ1biBhbGlzdCAtPlxuICAgICAgbGV0IGFsaXN0ID1cbiAgICAgICAgTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAobmFtZSwgdCkgLT4gbm9ybWFsaXplIEtleV90eXBlLlN1YmNvbW1hbmQgbmFtZSwgdClcbiAgICAgIGluXG4gICAgICBtYXRjaCBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTdHJpbmcpIGFsaXN0IHdpdGhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBzdWJjb21tYW5kcyBuYW1lZCAlc1wiIG5hbWUgKClcbiAgICAgIHwgYE9rIG1hcCAtPlxuICAgICAgICAobWF0Y2ggcHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciB3aXRoXG4gICAgICAgICB8IFNvbWUgKCkgLT4gYWxpc3RcbiAgICAgICAgIHwgTm9uZSAtPiBNYXAudG9fYWxpc3QgbWFwKSlcbiAgaW5cbiAgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH1cbjs7XG5cbmxldCBncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IGFsaXN0ID1cbiAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gZiAoKSAtPiBTdHJpbmcuc3RyaXAgKGYgKCkpKSBpblxuICBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgKExhenkuZnJvbV92YWwgYWxpc3QpXG47O1xuXG5sZXQgZXhlYyB+c3VtbWFyeSA/cmVhZG1lID8oY2hpbGRfc3ViY29tbWFuZCA9IFtdKSA/ZW52IH5wYXRoX3RvX2V4ZSAoKSA9XG4gIGxldCB3b3JraW5nX2RpciA9XG4gICAgRmlsZW5hbWVfYmFzZS5kaXJuYW1lXG4gICAgQEBcbiAgICBtYXRjaCBwYXRoX3RvX2V4ZSB3aXRoXG4gICAgfCBgQWJzb2x1dGUgXyB8IGBSZWxhdGl2ZV90b19tZSBfIC0+IFN0ZGxpYi5TeXMuZXhlY3V0YWJsZV9uYW1lXG4gICAgfCBgUmVsYXRpdmVfdG9fYXJndjAgXyAtPiBTdGRsaWIuU3lzLmFyZ3YuKDApXG4gIGluXG4gIGxldCBwYXRoX3RvX2V4ZSA9XG4gICAgbWF0Y2ggcGF0aF90b19leGUgd2l0aFxuICAgIHwgYEFic29sdXRlIHAgLT5cbiAgICAgIGlmIG5vdCAoRmlsZW5hbWVfYmFzZS5pc19hYnNvbHV0ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBBYnNvbHV0ZSBtdXN0IGJlIGFic29sdXRlXCJcbiAgICAgIGVsc2UgcFxuICAgIHwgYFJlbGF0aXZlX3RvX21lIHAgfCBgUmVsYXRpdmVfdG9fYXJndjAgcCAtPlxuICAgICAgaWYgbm90IChGaWxlbmFtZV9iYXNlLmlzX3JlbGF0aXZlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYFJlbGF0aXZlX3RvX21lIG11c3QgYmUgcmVsYXRpdmVcIlxuICAgICAgZWxzZSBwXG4gIGluXG4gIEV4ZWMgeyBzdW1tYXJ5OyByZWFkbWU7IHdvcmtpbmdfZGlyOyBwYXRoX3RvX2V4ZTsgY2hpbGRfc3ViY29tbWFuZDsgZW52IH1cbjs7XG5cbmxldCBvZl9sYXp5IHRodW5rID0gTGF6eSB0aHVua1xuXG5sZXQgcmVjIHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgOiBQcm94eS50XG4gID1cbiAgbGV0IGtpbmQgPVxuICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgIHNleHBhYmxlXG4gICAgICB+d29ya2luZ19kaXJcbiAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgaW5cbiAgeyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IHBhdGhfdG9fc3ViY29tbWFuZDsgY2hpbGRfc3ViY29tbWFuZDsga2luZCB9XG5cbmFuZCBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gID1cbiAgbWF0Y2ggKHNleHBhYmxlIDogU2hhcGUuU2V4cGFibGUudCkgd2l0aFxuICB8IEJhc2UgYiAtPiBQcm94eS5LaW5kLkJhc2UgYlxuICB8IEV4ZWMgZSAtPiBQcm94eS5LaW5kLkV4ZWMgZVxuICB8IExhenkgbCAtPlxuICAgIFByb3h5LktpbmQuTGF6eVxuICAgICAgKExhenkubWFwIGwgfmY6KGZ1biBzZXhwYWJsZSAtPlxuICAgICAgICAga2luZF9vZl9zZXhwYWJsZVxuICAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQpKVxuICB8IEdyb3VwIGcgLT5cbiAgICBQcm94eS5LaW5kLkdyb3VwXG4gICAgICB7IGcgd2l0aFxuICAgICAgICBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgTGF6eS5tYXBcbiAgICAgICAgICAgIGcuc3ViY29tbWFuZHNcbiAgICAgICAgICAgIH5mOlxuICAgICAgICAgICAgICAoTGlzdC5tYXAgfmY6KGZ1biAoc3RyLCBzZXhwYWJsZSkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHBhdGhfdG9fc3ViY29tbWFuZCA9IHBhdGhfdG9fc3ViY29tbWFuZCBAIFsgc3RyIF0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IHByb3h5ID1cbiAgICAgICAgICAgICAgICAgICBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgICAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBzdHIsIHByb3h5KSlcbiAgICAgIH1cbjs7XG5cbm1vZHVsZSBWZXJzaW9uX2luZm8gKFZlcnNpb25fdXRpbCA6IFZlcnNpb25fdXRpbCkgPSBzdHJ1Y3RcbiAgbGV0IHByaW50X3ZlcnNpb24gfnZlcnNpb24gPSBwcmludF9lbmRsaW5lIChmb3JjZSB2ZXJzaW9uKVxuICBsZXQgcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbyA9IHByaW50X2VuZGxpbmUgKGZvcmNlIGJ1aWxkX2luZm8pXG5cbiAgbGV0IGNvbW1hbmQgfnZlcnNpb24gfmJ1aWxkX2luZm8gPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcInByaW50IHZlcnNpb24gaW5mb3JtYXRpb25cIlxuICAgICAgQ29tbWFuZF9iYXNlLlBhcmFtLihcbiAgICAgICAgcmV0dXJuIChmdW4gdmVyc2lvbl9mbGFnIGJ1aWxkX2luZm9fZmxhZyAtPlxuICAgICAgICAgIGlmIGJ1aWxkX2luZm9fZmxhZ1xuICAgICAgICAgIHRoZW4gcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mb1xuICAgICAgICAgIGVsc2UgaWYgdmVyc2lvbl9mbGFnXG4gICAgICAgICAgdGhlbiBwcmludF92ZXJzaW9uIH52ZXJzaW9uXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvO1xuICAgICAgICAgICAgcHJpbnRfdmVyc2lvbiB+dmVyc2lvbik7XG4gICAgICAgICAgZXhpdCAwKVxuICAgICAgICA8Kj4gZmxhZyBcIi12ZXJzaW9uXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgdGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgIDwqPiBmbGFnIFwiLWJ1aWxkLWluZm9cIiBub19hcmcgfmRvYzpcIiBwcmludCBidWlsZCBpbmZvIGZvciB0aGlzIGJ1aWxkXCIpXG4gIDs7XG5cbiAgbGV0IHJlYyBhZGQgfnZlcnNpb24gfmJ1aWxkX2luZm8gdW52ZXJzaW9uZWQgPVxuICAgIG1hdGNoIHVudmVyc2lvbmVkIHdpdGhcbiAgICB8IEJhc2UgYmFzZSAtPlxuICAgICAgbGV0IGJhc2UgPVxuICAgICAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgICAgICBiYXNlXG4gICAgICAgICAgfm5hbWU6XCItdmVyc2lvblwiXG4gICAgICAgICAgfmFsaWFzZXM6W11cbiAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0tdmVyc2lvblwiIF1cbiAgICAgICAgICB+dGV4dF9zdW1tYXJ5OlwidGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIHZlcnNpb24pXG4gICAgICBpblxuICAgICAgbGV0IGJhc2UgPVxuICAgICAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgICAgICBiYXNlXG4gICAgICAgICAgfm5hbWU6XCItYnVpbGQtaW5mb1wiXG4gICAgICAgICAgfmFsaWFzZXM6W11cbiAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0tYnVpbGQtaW5mb1wiIF1cbiAgICAgICAgICB+dGV4dF9zdW1tYXJ5OlwiaW5mbyBhYm91dCB0aGlzIGJ1aWxkXCJcbiAgICAgICAgICB+dGV4dDooZnVuIF8gLT4gZm9yY2UgYnVpbGRfaW5mbylcbiAgICAgIGluXG4gICAgICBCYXNlIGJhc2VcbiAgICB8IEdyb3VwIGdyb3VwIC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBncm91cC5Hcm91cC5zdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgc3ViY29tbWFuZHNcbiAgICAgICAgICAgIEtleV90eXBlLlN1YmNvbW1hbmRcbiAgICAgICAgICAgIH5rZXk6XCJ2ZXJzaW9uXCJcbiAgICAgICAgICAgIChjb21tYW5kIH52ZXJzaW9uIH5idWlsZF9pbmZvKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IGdyb3VwIHdpdGggR3JvdXAuc3ViY29tbWFuZHMgfVxuICAgIHwgRXhlYyBleGVjIC0+IEV4ZWMgZXhlY1xuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGQgfnZlcnNpb24gfmJ1aWxkX2luZm8gKExhenkuZm9yY2UgdGh1bmspKSlcbiAgOztcblxuICBsZXQgbm9ybWFsaXplX3ZlcnNpb25fbGluZXMgbGluZXMgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiIChMaXN0LnNvcnQgbGluZXMgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdmVyc2lvbiA9IGxhenkgKG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIFZlcnNpb25fdXRpbC52ZXJzaW9uX2xpc3QpXG5cbiAgbGV0IGRlZmF1bHRfYnVpbGRfaW5mbyA9XG4gICAgbGF6eVxuICAgICAgKCogbGF6eSB0byBhdm9pZCBsb2FkaW5nIGFsbCB0aGUgdGltZSB6b25lIHN0dWZmIGF0IHRvcGxldmVsICopXG4gICAgICAoVmVyc2lvbl91dGlsLnJlcHJpbnRfYnVpbGRfaW5mbyBWZXJzaW9uX3V0aWwuVGltZS5zZXhwX29mX3QpXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVmVyc2lvbl9pbmZvXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKHN0cnVjdFxuICAgICAgICBsZXQgdmVyc2lvbl9saXN0ID0gWyBcImhnOi8vc29tZS9wYXRoXzB4ZGVhZGJlZWZcIjsgXCJzc2g6Ly9hL3BhdGhfOGJhZGYwMGRcIiBdXG4gICAgICAgIGxldCByZXByaW50X2J1aWxkX2luZm8gdG9fc2V4cCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwICgpKVxuXG4gICAgICAgIG1vZHVsZSBUaW1lID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICBlbmRcbiAgICAgIGVuZClcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IHZlcnNpb24gd2hlcmUgbXVsdGlwbGUgcmVwb3MgYXJlIHVzZWRcIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjpWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAgICAgaGc6Ly9zb21lL3BhdGhfMHhkZWFkYmVlZlxuICAgICAgICBzc2g6Ly9hL3BhdGhfOGJhZGYwMGQgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IGJ1aWxkIGluZm9cIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbzoobGF6eSBcInNvbWUgYnVpbGQgaW5mb1wiKTtcbiAgICAgIFslZXhwZWN0IHt8IHNvbWUgYnVpbGQgaW5mbyB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgcmVjIHN1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2UgeCAtPiB4LnN1bW1hcnlcbiAgfCBHcm91cCB4IC0+IHguc3VtbWFyeVxuICB8IEV4ZWMgeCAtPiB4LnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IHN1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5tb2R1bGUgU3BlYyA9IHN0cnVjdFxuICBpbmNsdWRlIENvbW1hbmRfYmFzZS5TcGVjXG5cbiAgbGV0IHBhdGggPSBtYXAgfmY6UGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gIG1vZHVsZSBTcGVjID0gU3BlYy5EZXByZWNhdGVkXG5cbiAgbGV0IHN1bW1hcnkgPSBzdW1tYXJ5XG5cbiAgbGV0IHJlYyBnZXRfZmxhZ19uYW1lcyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIGJhc2UgLT4gYmFzZS5Db21tYW5kX2Jhc2UuZmxhZ3MgfD4gTWFwLmtleXNcbiAgICB8IExhenkgdGh1bmsgLT4gZ2V0X2ZsYWdfbmFtZXMgKExhenkuZm9yY2UgdGh1bmspXG4gICAgfCBHcm91cCBfIHwgRXhlYyBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBoZWxwX3JlY3Vyc2l2ZSB+Y21kIH53aXRoX2ZsYWdzIH5leHBhbmRfZG90cyB0IHMgPVxuICAgIGxldCByZWMgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzID1cbiAgICAgIGxldCBuZXdfcyA9IHMgXiAoaWYgZXhwYW5kX2RvdHMgdGhlbiBjbWQgZWxzZSBcIi5cIikgXiBcIiBcIiBpblxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IExhenkgdGh1bmsgLT5cbiAgICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICAgICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgICAgbGV0IGJhc2VfaGVscCA9IHMgXiBjbWQsIHN1bW1hcnkgKEJhc2UgYmFzZSkgaW5cbiAgICAgICAgaWYgd2l0aF9mbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYmFzZV9oZWxwXG4gICAgICAgICAgOjogTGlzdC5tYXBcbiAgICAgICAgICAgICAgIH5mOihmdW4gKGZsYWcsIGgpIC0+IG5ld19zIF4gZmxhZywgaClcbiAgICAgICAgICAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgICAgICAgICAgIH5jb21wYXJlOkNvbW1hbmRfYmFzZS5EZXByZWNhdGVkLnN1YmNvbW1hbmRfY21wX2ZzdFxuICAgICAgICAgICAgICAgICAgKENvbW1hbmRfYmFzZS5EZXByZWNhdGVkLmZsYWdzX2hlbHAgfmRpc3BsYXlfaGVscF9mbGFnczpmYWxzZSBiYXNlKSlcbiAgICAgICAgZWxzZSBbIGJhc2VfaGVscCBdXG4gICAgICB8IEdyb3VwIHsgc3VtbWFyeTsgc3ViY29tbWFuZHM7IHJlYWRtZSA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgICAgKHMgXiBjbWQsIHN1bW1hcnkpXG4gICAgICAgIDo6IChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6Q29tbWFuZF9iYXNlLkRlcHJlY2F0ZWQuc3ViY29tbWFuZF9jbXBfZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KGZ1biAoY21kJywgdCkgLT4gaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQ6Y21kJyB0IG5ld19zKVxuICAgICAgICAgICApXG4gICAgICB8IEV4ZWMgXyAtPlxuICAgICAgICAoKiBDb21tYW5kLmV4ZWMgZG9lcyBub3Qgc3VwcG9ydCBkZXByZWNhdGVkIGNvbW1hbmRzICopXG4gICAgICAgIFtdXG4gICAgaW5cbiAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX3VuaXggKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBzdHJpbmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyLlZlcnNpb25fdXRpbClcblxuICBtb2R1bGUgRm9yX3VuaXhfd2l0aF9jb21tYW5kX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBFbnZfdmFyLnQgPSBzdHJ1Y3RcbiAgICAoKiBXZSBmb3JjZSBhY2Nlc3MgdG8gZW52IHZhcnMgdG8gZ28gdGhyb3VnaCBbQ29tbWFuZF9lbnZfdmFyXSBzbyB0aGF0IHdlIGNhbiBrZWVwIGFuXG4gICAgICAgYWNjdXJhdGUgZW51bWVyYXRpb24gb2YgdGhlIHZhcmlhYmxlcyB3ZSB1c2UuICopXG5cbiAgICBpbmNsdWRlIEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXJcblxuICAgIG1vZHVsZSBVbml4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFVuaXhcblxuICAgICAgbGV0IHB1dGVudiB+a2V5IH5kYXRhID0gcHV0ZW52IH5rZXk6KEVudl92YXIudG9fc3RyaW5nIGtleSkgfmRhdGFcbiAgICAgIGxldCB1bnNldGVudiBrZXkgPSB1bnNldGVudiAoRW52X3Zhci50b19zdHJpbmcga2V5KVxuICAgICAgbGV0IHVuc2FmZV9nZXRlbnYga2V5ID0gdW5zYWZlX2dldGVudiAoRW52X3Zhci50b19zdHJpbmcga2V5KVxuXG4gICAgICBsZXQgY29udmVydF9lbnYgZW52ID1cbiAgICAgICAgbGV0IGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0ID1cbiAgICAgICAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGVudl92YXIsIHN0cikgLT4gRW52X3Zhci50b19zdHJpbmcgZW52X3Zhciwgc3RyKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBlbnYgd2l0aFxuICAgICAgICB8IGBSZXBsYWNlIGxpc3QgLT4gYFJlcGxhY2UgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBFeHRlbmQgbGlzdCAtPiBgRXh0ZW5kIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgT3ZlcnJpZGUgbGlzdCAtPiBgT3ZlcnJpZGUgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBSZXBsYWNlX3JhdyBfIGFzIHJlcGxhY2UgLT4gcmVwbGFjZVxuICAgICAgOztcblxuICAgICAgbGV0IGV4ZWMgfnByb2cgfmFyZ3YgP3VzZV9wYXRoID9lbnYgKCkgPVxuICAgICAgICBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52OihPcHRpb24ubWFwIGVudiB+Zjpjb252ZXJ0X2VudikgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGVfcHJvY2Vzc19lbnYgP3dvcmtpbmdfZGlyID9wcm9nX3NlYXJjaF9wYXRoID9hcmd2MCB+cHJvZyB+YXJncyB+ZW52ICgpID1cbiAgICAgICAgY3JlYXRlX3Byb2Nlc3NfZW52XG4gICAgICAgICAgP3dvcmtpbmdfZGlyXG4gICAgICAgICAgP3Byb2dfc2VhcmNoX3BhdGhcbiAgICAgICAgICA/YXJndjBcbiAgICAgICAgICB+cHJvZ1xuICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgfmVudjooY29udmVydF9lbnYgZW52KVxuICAgICAgICAgICgpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyXG5cbiAgKCogQ2xlYXIgdGhlIHNldHRpbmcgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUgYXNzb2NpYXRlZCB3aXRoIGNvbW1hbmQtbGluZVxuICAgICBjb21wbGV0aW9uIGFuZCByZWN1cnNpdmUgaGVscCBzbyB0aGF0IHN1YnByb2Nlc3NlcyBkb24ndCBzZWUgdGhlbS5cblxuICAgICBVc2UgW3Vuc2FmZV9nZXRlbnZdIHNvIHNldHVpZC1yb290IHByb2dyYW1zIGNhbiBzdGlsbCByZWFkIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICAgVGhlcmUgaXMgbm8gc2VjdXJpdHkgcmlzayBoZXJlIGJlY2F1c2UgdGhlIHZhbHVlcyBhcmUgb25seSB1c2VkIGFzIHRyaWdnZXJzIHRvIGR1bXBcbiAgICAgb3V0IGNvbW1hbmQgaW5mb3JtYXRpb24uICopXG4gIGxldCBnZXRlbnZfYW5kX2NsZWFyIHZhciA9XG4gICAgbGV0IHZhbHVlID0gVW5peC51bnNhZmVfZ2V0ZW52IHZhciBpblxuICAgIGlmIE9wdGlvbi5pc19zb21lIHZhbHVlIHRoZW4gVW5peC51bnNldGVudiB2YXI7XG4gICAgdmFsdWVcbiAgOztcblxuICBsZXQgbWF5YmVfY29tcF9jd29yZCAoKSA9IGdldGVudl9hbmRfY2xlYXIgY29tcF9jd29yZCB8PiBPcHRpb24ubWFwIH5mOkludC5vZl9zdHJpbmdcblxuICBsZXQgc2V0X2NvbXBfY3dvcmQgbmV3X3ZhbHVlID1cbiAgICBsZXQgbmV3X3ZhbHVlID0gSW50LnRvX3N0cmluZyBuZXdfdmFsdWUgaW5cbiAgICBVbml4LnB1dGVudiB+a2V5OmNvbXBfY3dvcmQgfmRhdGE6bmV3X3ZhbHVlXG4gIDs7XG5cbiAgbW9kdWxlIEV4ZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4ZWNcblxuICAgIGxldCBleGVjX3dpdGhfYXJncyB0IH5hcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZCA9XG4gICAgICBsZXQgcHJvZyA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlIGluXG4gICAgICBsZXQgYXJncyA9IHQuY2hpbGRfc3ViY29tbWFuZCBAIGFyZ3MgaW5cbiAgICAgIGxldCBlbnYgPSB0LmVudiBpblxuICAgICAgT3B0aW9uLml0ZXIgbWF5YmVfbmV3X2NvbXBfY3dvcmQgfmY6KGZ1biBuIC0+XG4gICAgICAgICgqIFRoZSBsb2dpYyBmb3IgdHJhY2tpbmcgW21heWJlX25ld19jb21wX2N3b3JkXSBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHdoZXRoZXJcbiAgICAgICAgICAgdGhpcyBleGVjIHNwZWNpZmllcyBhIGNoaWxkIHN1YmNvbW1hbmQuIElmIGl0IGRvZXMsIENPTVBfQ1dPUkQgbmVlZHMgdG8gYmUgc2V0XG4gICAgICAgICAgIGhpZ2hlciB0byBhY2NvdW50IGZvciB0aGUgYXJndW1lbnRzIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2hpbGQgc3ViY29tbWFuZC4gKilcbiAgICAgICAgc2V0X2NvbXBfY3dvcmQgKG4gKyBMaXN0Lmxlbmd0aCB0LmNoaWxkX3N1YmNvbW1hbmQpKTtcbiAgICAgIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICAgICAgICAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3Zhci5Vbml4LmV4ZWMgP2VudiB+cHJvZyB+YXJndjoocHJvZyA6OiBhcmdzKSAoKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYXBlLlNleHBhYmxlXG5cbiAgICBsZXQgcmVhZF9zdGRvdXRfYW5kX3N0ZGVyciAocHJvY2Vzc19pbmZvIDogVW5peC5Qcm9jZXNzX2luZm8udCkgPVxuICAgICAgKCogV2UgbmVlZCB0byByZWFkIGVhY2ggb2Ygc3Rkb3V0IGFuZCBzdGRlcnIgaW4gYSBzZXBhcmF0ZSB0aHJlYWQgdG8gYXZvaWQgZGVhZGxvY2tzXG4gICAgICAgICBpZiB0aGUgY2hpbGQgcHJvY2VzcyBkZWNpZGVzIHRvIHdhaXQgZm9yIGEgcmVhZCBvbiBvbmUgYmVmb3JlIGNsb3NpbmcgdGhlIG90aGVyLlxuICAgICAgICAgQnVmZmVyaW5nIG1heSBoaWRlIHRoaXMgcHJvYmxlbSB1bnRpbCBvdXRwdXQgaXMgXCJzdWZmaWNpZW50bHkgbGFyZ2VcIi4gKilcbiAgICAgIGxldCBzdGFydF9yZWFkaW5nIGRlc2NyIGluZm8gPVxuICAgICAgICBsZXQgb3V0cHV0ID0gcmVmIE5vbmUgaW5cbiAgICAgICAgbGV0IHRocmVhZCA9XG4gICAgICAgICAgVGhyZWFkLmNyZWF0ZVxuICAgICAgICAgICAgfm9uX3VuY2F1Z2h0X2V4bjpgUHJpbnRfdG9fc3RkZXJyXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICBkZXNjciB8PiBVbml4LmluX2NoYW5uZWxfb2ZfZGVzY3IgfD4gSW5fY2hhbm5lbC5pbnB1dF9hbGwpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgb3V0cHV0IDo9IFNvbWUgcmVzdWx0KVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgU3RhZ2VkLnN0YWdlIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJlYWQuam9pbiB0aHJlYWQ7XG4gICAgICAgICAgVW5peC5jbG9zZSBkZXNjcjtcbiAgICAgICAgICBtYXRjaCAhb3V0cHV0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUcgZmFpbGVkIHRvIHJlYWRcIiAoaW5mbyA6IEluZm8udCldXG4gICAgICAgICAgfCBTb21lIChPayBvdXRwdXQpIC0+IG91dHB1dFxuICAgICAgICAgIHwgU29tZSAoRXJyb3IgZXhuKSAtPiByYWlzZSBleG4pXG4gICAgICBpblxuICAgICAgKCogV2UgbWlnaHQgaGFuZyBmb3JldmVyIHRyeWluZyB0byBqb2luIHRoZSByZWFkaW5nIHRocmVhZHMgaWYgdGhlIGNoaWxkIHByb2Nlc3Mga2VlcHNcbiAgICAgICAgIHRoZSBmaWxlIGRlc2NyaXB0b3Igb3Blbi4gTm90IGhhbmRsaW5nIHRoaXMgYmVjYXVzZSBJIHRoaW5rIHdlJ3ZlIG5ldmVyIHNlZW4gaXRcbiAgICAgICAgIGluIHRoZSB3aWxkIGRlc3BpdGUgcnVubmluZyB2dWxuZXJhYmxlIGNvZGUgZm9yIHllYXJzLiAqKVxuICAgICAgKCogV2UgaGF2ZSB0byBzdGFydCBib3RoIHRocmVhZHMgYmVmb3JlIGpvaW5pbmcgYW55IG9mIHRoZW0uICopXG4gICAgICBsZXQgZmluaXNoX3N0ZG91dCA9IHN0YXJ0X3JlYWRpbmcgcHJvY2Vzc19pbmZvLnN0ZG91dCAoSW5mby5vZl9zdHJpbmcgXCJzdGRvdXRcIikgaW5cbiAgICAgIGxldCBmaW5pc2hfc3RkZXJyID0gc3RhcnRfcmVhZGluZyBwcm9jZXNzX2luZm8uc3RkZXJyIChJbmZvLm9mX3N0cmluZyBcInN0ZGVyclwiKSBpblxuICAgICAgU3RhZ2VkLnVuc3RhZ2UgZmluaXNoX3N0ZG91dCAoKSwgU3RhZ2VkLnVuc3RhZ2UgZmluaXNoX3N0ZGVyciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCA9XG4gICAgICBsZXQgcHJvY2Vzc19pbmZvID1cbiAgICAgICAgVW5peC5jcmVhdGVfcHJvY2Vzc19lbnZcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5wcm9nOihhYnNfcGF0aCB+ZGlyOndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlKVxuICAgICAgICAgIH5hcmdzOmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+ZW52OlxuICAgICAgICAgICAgKGxldCBoZWxwX3NleHAgPVxuICAgICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zIHw+IFNldC5zZXhwX29mX21fX3QgKG1vZHVsZSBJbnQpIHw+IFNleHAudG9fc3RyaW5nXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBgRXh0ZW5kIFsgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQLCBoZWxwX3NleHAgXSlcbiAgICAgIGluXG4gICAgICBVbml4LmNsb3NlIHByb2Nlc3NfaW5mby5zdGRpbjtcbiAgICAgIGxldCBzdGRvdXQsIHN0ZGVyciA9IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgcHJvY2Vzc19pbmZvIGluXG4gICAgICBVbml4LndhaXQgcHJvY2Vzc19pbmZvLnBpZDtcbiAgICAgICgqIE5vdyB3ZSd2ZSBraWxsZWQgYWxsIHRoZSBwcm9jZXNzZXMgYW5kIHRocmVhZHMgd2UgbWFkZS4gKilcbiAgICAgIG1hdGNoIHN0ZG91dCB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IFZlcnNpb25lZC50X29mX3NleHAgfD4gb2ZfdmVyc2lvbmVkIHdpdGhcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcImNhbm5vdCBwYXJzZSBjb21tYW5kIHNoYXBlXCJcbiAgICAgICAgICAgICAgfl86KGV4biA6IGV4bilcbiAgICAgICAgICAgICAgKHN0ZG91dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgKHN0ZGVyciA6IHN0cmluZyldXG4gICAgICB8IHQgLT4gdFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmQgKHQgOiB0KSB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICAgIG1hdGNoIHBhdGhfdG9fc3ViY29tbWFuZCB3aXRoXG4gICAgICB8IFtdIC0+IHRcbiAgICAgIHwgc3ViIDo6IHN1YnMgLT5cbiAgICAgICAgKG1hdGNoIHQgd2l0aFxuICAgICAgICAgfCBCYXNlIF8gLT4gZmFpbHdpdGhmIFwidW5leHBlY3RlZCBzdWJjb21tYW5kICVTXCIgc3ViICgpXG4gICAgICAgICB8IExhenkgdGh1bmsgLT4gZmluZCAoTGF6eS5mb3JjZSB0aHVuaykgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgfCBFeGVjIHsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBjaGlsZF9zdWJjb21tYW5kOyBfIH0gLT5cbiAgICAgICAgICAgZmluZFxuICAgICAgICAgICAgIChvZl9leHRlcm5hbCB+d29ya2luZ19kaXIgfnBhdGhfdG9fZXhlIH5jaGlsZF9zdWJjb21tYW5kKVxuICAgICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQ6KHN1YiA6OiAoc3VicyBAIGNoaWxkX3N1YmNvbW1hbmQpKVxuICAgICAgICAgfCBHcm91cCBnIC0+XG4gICAgICAgICAgIChtYXRjaCBMaXN0LkFzc29jLmZpbmQgKExhenkuZm9yY2UgZy5zdWJjb21tYW5kcykgfmVxdWFsOlN0cmluZy5lcXVhbCBzdWIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcInVua25vd24gc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgICAgfCBTb21lIHQgLT4gZmluZCB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6c3VicykpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHByb3h5X29mX2V4ZSB+d29ya2luZ19kaXIgcGF0aF90b19leGUgY2hpbGRfc3ViY29tbWFuZCA9XG4gICAgU2V4cGFibGUub2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZFxuICAgIHw+IHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQ6W11cbiAgOztcblxuICBsZXQgcmVjIHNoYXBlX29mX3Byb3h5IHByb3h5IDogU2hhcGUudCA9IHNoYXBlX29mX3Byb3h5X2tpbmQgcHJveHkuUHJveHkua2luZFxuXG4gIGFuZCBzaGFwZV9vZl9leGUgKCkgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpciA9XG4gICAgc2hhcGVfb2ZfcHJveHkgKHByb3h5X29mX2V4ZSB+d29ya2luZ19kaXIgcGF0aF90b19leGUgY2hpbGRfc3ViY29tbWFuZClcblxuICBhbmQgc2hhcGVfb2ZfcHJveHlfa2luZCBraW5kID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IEJhc2UgYiAtPiBCYXNpYyBiXG4gICAgfCBMYXp5IGwgLT4gTGF6eSAoTGF6eS5tYXAgfmY6c2hhcGVfb2ZfcHJveHlfa2luZCBsKVxuICAgIHwgR3JvdXAgZyAtPlxuICAgICAgR3JvdXBcbiAgICAgICAgeyBnIHdpdGhcbiAgICAgICAgICBzdWJjb21tYW5kcyA9IExhenkubWFwIGcuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mOnNoYXBlX29mX3Byb3h5KVxuICAgICAgICB9XG4gICAgfCBFeGVjICh7IGNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChlLCBzaGFwZV9vZl9leGUgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpcilcbiAgOztcblxuICBsZXQgcmVjIHNoYXBlIHQgOiBTaGFwZS50ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJhc2UgYiAtPiBCYXNpYyAoQ29tbWFuZF9iYXNlLnNoYXBlIGIpXG4gICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cC5zaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZTpzaGFwZSBnKVxuICAgIHwgRXhlYyAoeyBFeGVjLmNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChFeGVjLnNoYXBlIGUsIHNoYXBlX29mX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyKVxuICAgIHwgTGF6eSB0aHVuayAtPiBzaGFwZSAoTGF6eS5mb3JjZSB0aHVuaylcbiAgOztcblxuICBsZXQgZ2F0aGVyX2hlbHAgfnJlY3Vyc2l2ZSB+ZmxhZ3MgfmV4cGFuZF9kb3RzIHNoYXBlID1cbiAgICBsZXQgcmVjIGxvb3AgcGF0aCBhY2Mgc2hhcGUgPVxuICAgICAgbGV0IHN0cmluZ19vZl9wYXRoID0gaWYgZXhwYW5kX2RvdHMgdGhlbiBQYXRoLnRvX3N0cmluZyBlbHNlIFBhdGgudG9fc3RyaW5nX2RvdHMgaW5cbiAgICAgIGxldCBnYXRoZXJfZ3JvdXAgcGF0aCBhY2Mgc3ViY29tbWFuZHMgPVxuICAgICAgICBsZXQgZmlsdGVyZWRfc3ViY29tbWFuZHMgPVxuICAgICAgICAgICgqIE9ubHkgc2hvdyB0aGUgW2hlbHBdIHN1YmNvbW1hbmQgYXQgdG9wLWxldmVsLiAqKVxuICAgICAgICAgIGlmIFBhdGguaXNfZW1wdHkgcGF0aFxuICAgICAgICAgIHRoZW4gc3ViY29tbWFuZHNcbiAgICAgICAgICBlbHNlIExpc3QuQXNzb2MucmVtb3ZlIH5lcXVhbDpTdHJpbmcuKCA9ICkgc3ViY29tbWFuZHMgXCJoZWxwXCJcbiAgICAgICAgaW5cbiAgICAgICAgZmlsdGVyZWRfc3ViY29tbWFuZHNcbiAgICAgICAgfD4gTGlzdC5zdGFibGVfc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBoZWxwX3NjcmVlbl9jb21wYXJlIChmc3QgYSkgKGZzdCBiKSlcbiAgICAgICAgfD4gTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyAoc3ViY29tbWFuZCwgc2hhcGUpIC0+XG4gICAgICAgICAgbGV0IHBhdGggPSBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kIGluXG4gICAgICAgICAgbGV0IG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIGluXG4gICAgICAgICAgbGV0IGRvYyA9IFNoYXBlLmdldF9zdW1tYXJ5IHNoYXBlIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHsgU2hhcGUuRmxhZ19pbmZvLm5hbWU7IGRvYzsgYWxpYXNlcyA9IFtdIH0gOjogYWNjIGluXG4gICAgICAgICAgaWYgcmVjdXJzaXZlIHRoZW4gbG9vcCBwYXRoIGFjYyBzaGFwZSBlbHNlIGFjYylcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgICB8IEV4ZWMgKF8sIHNoYXBlKSAtPlxuICAgICAgICAoKiBJZiB0aGUgZXhlY3V0YWJsZSBiZWluZyBjYWxsZWQgZG9lc24ndCB1c2UgW0NvcmUuQ29tbWFuZF0sIHRoZW4gc2V4cCBleHRyYWN0aW9uXG4gICAgICAgICAgIHdpbGwgZmFpbC4gKilcbiAgICAgICAgKHRyeSBsb29wIHBhdGggYWNjIChzaGFwZSAoKSkgd2l0aFxuICAgICAgICAgfCBfIC0+IGFjYylcbiAgICAgIHwgR3JvdXAgZyAtPiBnYXRoZXJfZ3JvdXAgcGF0aCBhY2MgKExhenkuZm9yY2UgZy5zdWJjb21tYW5kcylcbiAgICAgIHwgQmFzaWMgYiAtPlxuICAgICAgICBpZiBmbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYi5mbGFnc1xuICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gZm10IC0+IFN0cmluZy4oIDw+ICkgZm10Lm5hbWUgXCJbLWhlbHBdXCIpXG4gICAgICAgICAgfD4gTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyBmbXQgLT5cbiAgICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZDpmbXQubmFtZSBpblxuICAgICAgICAgICAgbGV0IGZtdCA9IHsgZm10IHdpdGggbmFtZSA9IHN0cmluZ19vZl9wYXRoIHBhdGggfSBpblxuICAgICAgICAgICAgZm10IDo6IGFjYylcbiAgICAgICAgZWxzZSBhY2NcbiAgICAgIHwgTGF6eSB0aHVuayAtPiBsb29wIHBhdGggYWNjIChMYXp5LmZvcmNlIHRodW5rKVxuICAgIGluXG4gICAgbG9vcCBQYXRoLmVtcHR5IFtdIHNoYXBlIHw+IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IH5mbGFncyB+cGF0aCB+c3VtbWFyeSB+cmVhZG1lIH5mb3JtYXRfbGlzdCA9XG4gICAgdW5wYXJhZ3JhcGhzXG4gICAgICAoTGlzdC5maWx0ZXJfb3B0XG4gICAgICAgICBbIFNvbWUgc3VtbWFyeVxuICAgICAgICAgOyBTb21lIChTdHJpbmcuY29uY2F0IFsgXCIgIFwiOyBQYXRoLnRvX3N0cmluZyBwYXRoOyBcIiBTVUJDT01NQU5EXCIgXSlcbiAgICAgICAgIDsgcmVhZG1lXG4gICAgICAgICA7IFNvbWUgKGlmIGZsYWdzIHRoZW4gXCI9PT0gc3ViY29tbWFuZHMgYW5kIGZsYWdzID09PVwiIGVsc2UgXCI9PT0gc3ViY29tbWFuZHMgPT09XCIpXG4gICAgICAgICA7IFNvbWUgKFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnRvX3N0cmluZyBmb3JtYXRfbGlzdClcbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZSA9XG4gICAgbGV0IGZvcm1hdF9saXN0ID0gZ2F0aGVyX2hlbHAgfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlIHNoYXBlIGluXG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgQmFzaWMgYiAtPlxuICAgICAgbGV0IHVzYWdlID0gU2hhcGUuQmFzZV9pbmZvLmdldF91c2FnZSBiIGluXG4gICAgICB1bnBhcmFncmFwaHNcbiAgICAgICAgKExpc3QuZmlsdGVyX29wdFxuICAgICAgICAgICBbIFNvbWUgYi5zdW1tYXJ5XG4gICAgICAgICAgIDsgU29tZSAoXCIgIFwiIF4gUGF0aC50b19zdHJpbmcgcGF0aCBeIFwiIFwiIF4gdXNhZ2UpXG4gICAgICAgICAgIDsgYi5yZWFkbWVcbiAgICAgICAgICAgOyBTb21lIFwiPT09IGZsYWdzID09PVwiXG4gICAgICAgICAgIDsgU29tZSAoU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkudG9fc3RyaW5nIGIuZmxhZ3MpXG4gICAgICAgICAgIF0pXG4gICAgfCBHcm91cCBnIC0+XG4gICAgICBncm91cF9vcl9leGVjX2hlbHBfdGV4dFxuICAgICAgICB+ZmxhZ3NcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfnJlYWRtZTpnLnJlYWRtZVxuICAgICAgICB+c3VtbWFyeTpnLnN1bW1hcnlcbiAgICAgICAgfmZvcm1hdF9saXN0XG4gICAgfCBFeGVjIChlLCBfKSAtPlxuICAgICAgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHRcbiAgICAgICAgfmZsYWdzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5yZWFkbWU6ZS5yZWFkbWVcbiAgICAgICAgfnN1bW1hcnk6ZS5zdW1tYXJ5XG4gICAgICAgIH5mb3JtYXRfbGlzdFxuICAgIHwgTGF6eSB0aHVuayAtPiBoZWxwX2Zvcl9zaGFwZSAoTGF6eS5mb3JjZSB0aHVuaykgcGF0aCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmVcbiAgOztcblxuICBsZXQgaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUgPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcImV4cGxhaW4gYSBnaXZlbiBzdWJjb21tYW5kIChwZXJoYXBzIHJlY3Vyc2l2ZWx5KVwiXG4gICAgICBDb21tYW5kX2Jhc2UuUGFyYW0uKFxuICAgICAgICByZXR1cm4gKGZ1biByZWN1cnNpdmUgZmxhZ3MgZXhwYW5kX2RvdHMgcGF0aCAoZW52IDogRW52LnQpIGNtZF9vcHQgKCkgLT5cbiAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICBtYXRjaCBFbnYuZmluZCBlbnYgc3Vic19rZXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHN1YnMgLT4gc3Vic1xuICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgKCogbWFpbnRhaW5lZCBieSBbZGlzcGF0Y2hdICopXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcGF0aCA9XG4gICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGgucG9wX2hlbHAgcGF0aCBpblxuICAgICAgICAgICAgT3B0aW9uLmZvbGQgY21kX29wdCB+aW5pdDpwYXRoIH5mOihmdW4gcGF0aCBzdWJjb21tYW5kIC0+XG4gICAgICAgICAgICAgIFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcGF0aCwgc2hhcGUgPVxuICAgICAgICAgICAgbWF0Y2ggY21kX29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID0gTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjpzaGFwZSB8PiBMYXp5LmZyb21fdmFsIGluXG4gICAgICAgICAgICAgIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIGluXG4gICAgICAgICAgICAgIHBhdGgsIFNoYXBlLkdyb3VwIHsgcmVhZG1lOyBzdW1tYXJ5OyBzdWJjb21tYW5kcyB9XG4gICAgICAgICAgICB8IFNvbWUgY21kIC0+XG4gICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICBsb29rdXBfZXhwYW5kXG4gICAgICAgICAgICAgICAgICAgKExpc3QuQXNzb2MubWFwIHN1YnMgfmY6KGZ1biB4IC0+IHgsIGBQcmVmaXgpKVxuICAgICAgICAgICAgICAgICAgIGNtZFxuICAgICAgICAgICAgICAgICAgIFN1YmNvbW1hbmRcbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAgICBcInVua25vd24gc3ViY29tbWFuZCAlcyBmb3IgY29tbWFuZCAlczogJXNcIlxuICAgICAgICAgICAgICAgICAgIGNtZFxuICAgICAgICAgICAgICAgICAgIChQYXRoLnRvX3N0cmluZyBwYXRoKVxuICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBPayAocG9zc2libHlfZXhwYW5kZWRfbmFtZSwgdCkgLT5cbiAgICAgICAgICAgICAgICAgKCogRml4IHRoZSB1bmV4cGFuZGVkIHZhbHVlICopXG4gICAgICAgICAgICAgICAgIGxldCBwYXRoID1cbiAgICAgICAgICAgICAgICAgICBQYXRoLnJlcGxhY2VfZmlyc3QgfmZyb206Y21kIH50b186cG9zc2libHlfZXhwYW5kZWRfbmFtZSBwYXRoXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHBhdGgsIHNoYXBlIHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmludF9lbmRsaW5lIChoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cykpXG4gICAgICAgIDwqPiBmbGFnIFwiLXJlY3Vyc2l2ZVwiIG5vX2FyZyB+ZG9jOlwiIHNob3cgc3ViY29tbWFuZHMgb2Ygc3ViY29tbWFuZHMsIGV0Yy5cIlxuICAgICAgICA8Kj4gZmxhZyBcIi1mbGFnc1wiIG5vX2FyZyB+ZG9jOlwiIHNob3cgZmxhZ3MgYXMgd2VsbCBpbiByZWN1cnNpdmUgaGVscFwiXG4gICAgICAgIDwqPiBmbGFnIFwiLWV4cGFuZC1kb3RzXCIgbm9fYXJnIH5kb2M6XCIgZXhwYW5kIHN1YmNvbW1hbmRzIGluIHJlY3Vyc2l2ZSBoZWxwXCJcbiAgICAgICAgPCo+IHBhdGhcbiAgICAgICAgPCo+IGVudlxuICAgICAgICA8Kj4gYW5vbiAobWF5YmUgKFwiU1VCQ09NTUFORFwiICU6IHN0cmluZykpKVxuICA7O1xuXG4gICgqIFRoaXMgc2NyaXB0IHdvcmtzIGluIGJvdGggYmFzaCAodmlhIHJlYWRhcnJheSkgYW5kIHpzaCAodmlhIHJlYWQgLUEpLiAgSWYgeW91IGNoYW5nZVxuICAgICBpdCwgcGxlYXNlIHRlc3QgaW4gYm90aCBiYXNoIGFuZCB6c2guICBJdCBkb2VzIG5vdCB3b3JrIHRjc2ggKGRpZmZlcmVudCBmdW5jdGlvblxuICAgICBzeW50YXgpLiAqKVxuICBsZXQgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCkgPVxuICAgIGxldCBmbmFtZSA9IHNwcmludGYgXCJfanNhdXRvY29tXyVzXCIgKFBpZC50b19zdHJpbmcgKFVuaXguZ2V0cGlkICgpKSkgaW5cbiAgICBsZXQgYXJndl8wID0gU3RkbGliLlN5cy5hcmd2LigwKSBpblxuICAgIHByaW50ZlxuICAgICAgXCJmdW5jdGlvbiAlcyB7XFxuXFxcbiAgICAgIFxcICBleHBvcnQgQ09NUF9DV09SRFxcblxcXG4gICAgICBcXCAgQ09NUF9XT1JEU1swXT0lc1xcblxcXG4gICAgICBcXCAgaWYgdHlwZSByZWFkYXJyYXkgPiAvZGV2L251bGxcXG5cXFxuICAgICAgXFwgIHRoZW4gcmVhZGFycmF5IC10IENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZWxzZSBJRlM9XFxcIlxcblxcXG4gICAgICAgXFxcIiByZWFkIC1kIFxcXCJcXFwiIC1BIENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZmlcXG5cXFxuICAgICAgIH1cXG5cXFxuICAgICAgIGNvbXBsZXRlIC1GICVzICVzXFxuXFxcbiAgICAgICAlIVwiXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gIDs7XG5cbiAgbGV0IGR1bXBfaGVscF9zZXhwIH5zdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICBTZXQuaW50ZXIgU2V4cGFibGUuc3VwcG9ydGVkX3ZlcnNpb25zIHN1cHBvcnRlZF92ZXJzaW9uc1xuICAgIHw+IFNldC5tYXhfZWx0XG4gICAgfD4gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiQ291bGRuJ3QgY2hvb3NlIGEgc3VwcG9ydGVkIGhlbHAgb3V0cHV0IHZlcnNpb24gZm9yIENvbW1hbmQuZXhlYyBmcm9tIHRoZSBnaXZlbiBcXFxuICAgICAgICAgc3VwcG9ydGVkIHZlcnNpb25zLlwiXG4gICAgICAgIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9uc1xuICAgICAgICAoU2V0LnNleHBfb2ZfbV9fdCAobW9kdWxlIEludCkpXG4gICAgICB8PiBFcnJvci5yYWlzZVxuICAgIHwgU29tZSB2ZXJzaW9uX3RvX3VzZSAtPlxuICAgICAgc2V4cGFibGVfc2hhcGUgdFxuICAgICAgfD4gU2V4cGFibGUuZmluZCB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICB8PiBTZXhwYWJsZS50b192ZXJzaW9uZWQgfnZlcnNpb25fdG9fdXNlXG4gICAgICB8PiBTZXhwYWJsZS5WZXJzaW9uZWQuc2V4cF9vZl90XG4gICAgICB8PiBTZXhwLnRvX3N0cmluZ1xuICAgICAgfD4gcHJpbnRfc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2ID1cbiAgICBtYXRjaCBhcmd2IHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibWlzc2luZyBleGVjdXRhYmxlIG5hbWVcIlxuICAgIHwgY21kIDo6IGFyZ3MgLT5cbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCkgfmY6KGZ1biB2ZXJzaW9uIC0+XG4gICAgICAgIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgICAgICAgIFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgdmVyc2lvbiB8PiBTZXQubV9fdF9vZl9zZXhwIChtb2R1bGUgSW50KVxuICAgICAgICBpblxuICAgICAgICBkdW1wX2hlbHBfc2V4cCB+c3VwcG9ydGVkX3ZlcnNpb25zIHQgfnBhdGhfdG9fc3ViY29tbWFuZDphcmdzO1xuICAgICAgICBleGl0IDApO1xuICAgICAgT3B0aW9uLml0ZXIgKGdldGVudl9hbmRfY2xlYXIgQ09NTUFORF9PVVRQVVRfSU5TVEFMTEFUSU9OX0JBU0gpIH5mOihmdW4gXyAtPlxuICAgICAgICBkdW1wX2F1dG9jb21wbGV0ZV9mdW5jdGlvbiAoKTtcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIGNtZCwgYXJnc1xuICA7O1xuXG4gIGxldCBwcm9jZXNzX2FyZ3MgfmNtZCB+YXJncyA9XG4gICAgbGV0IG1heWJlX2NvbXBfY3dvcmQgPSBtYXliZV9jb21wX2N3b3JkICgpIGluXG4gICAgbGV0IGFyZ3MgPVxuICAgICAgbWF0Y2ggbWF5YmVfY29tcF9jd29yZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gQ21kbGluZS5vZl9saXN0IGFyZ3NcbiAgICAgIHwgU29tZSBjb21wX2N3b3JkIC0+XG4gICAgICAgIGxldCBhcmdzID0gTGlzdC50YWtlIChhcmdzIEAgWyBcIlwiIF0pIGNvbXBfY3dvcmQgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IGFyZ3MgfmluaXQ6Q21kbGluZS5OaWwgfmY6KGZ1biBhcmcgYXJncyAtPlxuICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgIHwgQ21kbGluZS5OaWwgLT4gQ21kbGluZS5Db21wbGV0ZSBhcmdcbiAgICAgICAgICB8IF8gLT4gQ21kbGluZS5Db25zIChhcmcsIGFyZ3MpKVxuICAgIGluXG4gICAgUGF0aC5jcmVhdGUgfnBhdGhfdG9fZXhlOmNtZCwgYXJncywgbWF5YmVfY29tcF9jd29yZFxuICA7O1xuXG4gIGxldCByZWMgYWRkX2hlbHBfc3ViY29tbWFuZHMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBfIGFzIHQgLT4gdFxuICAgIHwgRXhlYyBfIGFzIHQgLT4gdFxuICAgIHwgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH0gLT5cbiAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgIExhenkubWFwIHN1YmNvbW1hbmRzIH5mOihmdW4gc3ViY29tbWFuZHMgLT5cbiAgICAgICAgICBleHRlbmRfYWxpc3RfZXhuXG4gICAgICAgICAgICAoTGlzdC5Bc3NvYy5tYXAgc3ViY29tbWFuZHMgfmY6YWRkX2hlbHBfc3ViY29tbWFuZHMpXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwiaGVscFwiXG4gICAgICAgICAgICAoaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUpKVxuICAgICAgaW5cbiAgICAgIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG4gICAgfCBMYXp5IHRodW5rIC0+IExhenkgKGxhenkgKGFkZF9oZWxwX3N1YmNvbW1hbmRzIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggPVxuICAgIE9wdGlvbi52YWx1ZV9tYXAgZXh0ZW5kIH5kZWZhdWx0OmFyZ3MgfmY6KGZ1biBmIC0+XG4gICAgICBDbWRsaW5lLmV4dGVuZCBhcmdzIH5leHRlbmQ6ZiB+cGF0aClcbiAgOztcblxuICBsZXQgcmVjIGRpc3BhdGNoXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBlbnZcbiAgICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgICB+YXJnc1xuICAgICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYXp5IHRodW5rIC0+XG4gICAgICBsZXQgdCA9IExhenkuZm9yY2UgdGh1bmsgaW5cbiAgICAgIGRpc3BhdGNoXG4gICAgICAgIHRcbiAgICAgICAgZW52XG4gICAgICAgIH5leHRlbmRcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfmFyZ3NcbiAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBhcmdzID0gbWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCBpblxuICAgICAgbGV0IGhlbHBfdGV4dCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoaGVscF9mb3Jfc2hhcGUgKHNoYXBlIHQpIHBhdGggfnJlY3Vyc2l2ZTpmYWxzZSB+ZmxhZ3M6dHJ1ZSB+ZXhwYW5kX2RvdHM6ZmFsc2UpXG4gICAgICBpblxuICAgICAgQ29tbWFuZF9iYXNlLnJ1blxuICAgICAgICBiYXNlXG4gICAgICAgIGVudlxuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+aGVscF90ZXh0XG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgfm9uX2ZhaWx1cmU6Q29tbWFuZF9iYXNlLnJ1bl9leG5cbiAgICB8IEV4ZWMgZXhlYyAtPlxuICAgICAgbGV0IGFyZ3MgPSBDbWRsaW5lLnRvX2xpc3QgKG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGgpIGluXG4gICAgICBFeGVjLmV4ZWNfd2l0aF9hcmdzIH5hcmdzIGV4ZWMgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgfCBHcm91cCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9IGFzIGdyb3VwKSAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgbGV0IGVudiA9IEVudi5zZXQgZW52IH5rZXk6c3Vic19rZXkgfmRhdGE6KExhenkuZm9yY2Ugc3VicykgaW5cbiAgICAgIGxldCBkaWVfc2hvd2luZ19oZWxwIG1zZyA9XG4gICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgdGhlbiBleGl0IDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIlc1xcbiUhXCJcbiAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgfnJlY3Vyc2l2ZTpmYWxzZVxuICAgICAgICAgICAgICAgfmZsYWdzOmZhbHNlXG4gICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgIChzaGFwZSAoR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9KSlcbiAgICAgICAgICAgICAgIHBhdGgpO1xuICAgICAgICAgIGRpZSBcIiVzXCIgbXNnICgpKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgcGFyc2VfZ3JvdXAgYXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgICBsZXQgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBPcHRpb24ubWFwIH5mOkludC5wcmVkIG1heWJlX25ld19jb21wX2N3b3JkIGluXG4gICAgICAgIGxldCBza2lwIHJlc3QgPSBwYXJzZV9ncm91cCByZXN0IH5tYXliZV9uZXdfY29tcF9jd29yZCBpblxuICAgICAgICBsZXQgcmVzb2x2ZSBzdWIgcmVzdCA9XG4gICAgICAgICAgbGV0IHN1YnMgPSBMaXN0LkFzc29jLm1hcCAoTGF6eS5mb3JjZSBzdWJzKSB+ZjooZnVuIHggLT4geCwgYFByZWZpeCkgaW5cbiAgICAgICAgICBtYXRjaCBsb29rdXBfZXhwYW5kIHN1YnMgc3ViIFN1YmNvbW1hbmQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgbXNnIC0+IGRpZV9zaG93aW5nX2hlbHAgbXNnXG4gICAgICAgICAgfCBPayAoc3ViLCB0KSAtPlxuICAgICAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICBlbnZcbiAgICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICAgIH5wYXRoOihQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kOnN1YilcbiAgICAgICAgICAgICAgfmFyZ3M6cmVzdFxuICAgICAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChhcmdzIDogQ21kbGluZS50KSB3aXRoXG4gICAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBkaWVfc2hvd2luZ19oZWxwXG4gICAgICAgICAgICAgICAoc3ByaW50ZiBcIm1pc3Npbmcgc3ViY29tbWFuZCBmb3IgY29tbWFuZCAlc1wiIChQYXRoLnRvX3N0cmluZyBwYXRoKSlcbiAgICAgICAgICAgfCBTb21lIGJvZHkgLT4gYm9keSB+cGF0aDooUGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aCkpXG4gICAgICAgIHwgQ29ucyAoc3ViLCByZXN0KSAtPlxuICAgICAgICAgICgqIE1hdGNoIGZvciBmbGFncyByZWNvZ25pemVkIHdoZW4gc3ViY29tbWFuZHMgYXJlIGV4cGVjdGVkIG5leHQgKilcbiAgICAgICAgICAobWF0Y2ggc3ViIHdpdGhcbiAgICAgICAgICAgKCogUmVjb2duaXplZCBhdCB0aGUgdG9wIGxldmVsIGNvbW1hbmQgb25seSAqKVxuICAgICAgICAgICB8IChcIi12ZXJzaW9uXCIgfCBcIi0tdmVyc2lvblwiKSB3aGVuIFBhdGgubGVuZ3RoIHBhdGggPSAxIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjtcbiAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgfCAoXCItYnVpbGQtaW5mb1wiIHwgXCItLWJ1aWxkLWluZm9cIikgd2hlbiBQYXRoLmxlbmd0aCBwYXRoID0gMSAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm87XG4gICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgICgqIFJlY29nbml6ZWQgZXZlcnl3aGVyZSAqKVxuICAgICAgICAgICB8IFwiLWhlbHBcIiB8IFwiLS1oZWxwXCIgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBOaWwgfCBDb21wbGV0ZSAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgICAgICAgIH5yZWN1cnNpdmU6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZmxhZ3M6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoc2hhcGUgKEdyb3VwIHsgZ3JvdXAgd2l0aCBzdWJjb21tYW5kcyA9IHN1YnMgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aCk7XG4gICAgICAgICAgICAgICAgIGV4aXQgMFxuICAgICAgICAgICAgICAgfCBDbWRsaW5lLkNvbnMgKGZpcnN0X29mX3Jlc3QsIHJlc3Rfb2ZfcmVzdCkgLT5cbiAgICAgICAgICAgICAgICAgcmVzb2x2ZSBmaXJzdF9vZl9yZXN0IChDb25zIChzdWIsIHJlc3Rfb2ZfcmVzdCkpKVxuICAgICAgICAgICB8IChfIDogc3RyaW5nKSAtPiByZXNvbHZlIHN1YiByZXN0KVxuICAgICAgICB8IENvbXBsZXRlIHBhcnQgLT5cbiAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICBMYXp5LmZvcmNlIHN1YnNcbiAgICAgICAgICAgIHw+IExpc3QubWFwIH5mOmZzdFxuICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBuYW1lIC0+IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQpXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmVcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBjb21wbGV0ZV9zdWJjb21tYW5kcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgICAgICAgIHNoYXBlIHQgfD4gU2hhcGUuZnVsbHlfZm9yY2VkIHw+IFNoYXBlLkZ1bGx5X2ZvcmNlZC5leHBhbmRlZF9zdWJjb21tYW5kc1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKG1hdGNoIGYgfnBhdGg6KFBhdGgucGFydHMgcGF0aCkgfnBhcnQgc3ViY29tbWFuZHMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZXhpdCAxXG4gICAgICAgICAgICAgIHwgU29tZSB0b19vdXRwdXQgLT5cbiAgICAgICAgICAgICAgICBwcmludF9lbmRsaW5lIChTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgdG9fb3V0cHV0KTtcbiAgICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIExpc3QuaXRlciBzdWJzIH5mOnByaW50X2VuZGxpbmU7XG4gICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgaW5cbiAgICAgIHBhcnNlX2dyb3VwIGFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkXG4gIDs7XG5cbiAgbGV0IHJ1blxuICAgICAgICA/dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICA/dmVyc2lvblxuICAgICAgICA/YnVpbGRfaW5mb1xuICAgICAgICA/KGFyZ3YgPSBBcnJheS50b19saXN0IFN0ZGxpYi5TeXMuYXJndilcbiAgICAgICAgP2V4dGVuZFxuICAgICAgICA/KHdoZW5fcGFyc2luZ19zdWNjZWVkcyA9IEZuLmlkKVxuICAgICAgICA/Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgYnVpbGRfaW5mbyA9XG4gICAgICBtYXRjaCBidWlsZF9pbmZvIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGxhenkgdlxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICBpblxuICAgIGxldCB2ZXJzaW9uID1cbiAgICAgIG1hdGNoIHZlcnNpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICgqIFt2ZXJzaW9uXSB3YXMgc3BhY2UgZGVsaW1pdGVkIGF0IHNvbWUgcG9pbnQgYW5kIG5ld2xpbmUgZGVsaW1pdGVkXG4gICAgICAgICAgIGF0IGFub3RoZXIuICBXZSBhbHdheXMgcHJpbnQgb25lIChyZXBvLCByZXZpc2lvbikgcGFpciBwZXIgbGluZVxuICAgICAgICAgICBhbmQgZW5zdXJlIHNvcnRlZCBvcmRlciAqKVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKFZlcnNpb25faW5mby5ub3JtYWxpemVfdmVyc2lvbl9saW5lc1xuICAgICAgICAgICAgIChTdHJpbmcuc3BsaXQgdiB+b246JyAnIHw+IExpc3QuY29uY2F0X21hcCB+ZjooU3RyaW5nLnNwbGl0IH5vbjonXFxuJykpKVxuICAgIGluXG4gICAgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBsZXQgdCA9IFZlcnNpb25faW5mby5hZGQgdCB+dmVyc2lvbiB+YnVpbGRfaW5mbyBpblxuICAgICAgbGV0IHQgPSBhZGRfaGVscF9zdWJjb21tYW5kcyB0IGluXG4gICAgICBsZXQgY21kLCBhcmdzID0gaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgaW5cbiAgICAgIGxldCBwYXRoLCBhcmdzLCBtYXliZV9uZXdfY29tcF9jd29yZCA9IHByb2Nlc3NfYXJncyB+Y21kIH5hcmdzIGluXG4gICAgICB0cnlcbiAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICB0XG4gICAgICAgICAgRW52LmVtcHR5XG4gICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgfmFyZ3NcbiAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICB3aXRoXG4gICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+XG4gICAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHByZXJyX2VuZGxpbmUgbXNnO1xuICAgICAgICAgIGV4aXQgMSkpXG4gIDs7XG5cbiAgbGV0IGRlcHJlY2F0ZWRfcnVuIHQgfmNtZCB+YXJncyB+aXNfaGVscCB+aXNfaGVscF9yZWMgfmlzX2hlbHBfcmVjX2ZsYWdzIH5pc19leHBhbmRfZG90c1xuICAgID1cbiAgICBsZXQgcGF0aF9zdHJpbmdzID0gU3RyaW5nLnNwbGl0IGNtZCB+b246JyAnIGluXG4gICAgbGV0IHBhdGggPSBQYXRoLm9mX3BhcnRzIHBhdGhfc3RyaW5ncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfZXhwYW5kX2RvdHMgdGhlbiBcIi1leHBhbmQtZG90c1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlY19mbGFncyB0aGVuIFwiLWZsYWdzXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHBfcmVjIHRoZW4gXCItclwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwIHRoZW4gXCItaGVscFwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBDbWRsaW5lLm9mX2xpc3QgYXJncyBpblxuICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgIGRpc3BhdGNoXG4gICAgICB0XG4gICAgICBFbnYuZW1wdHlcbiAgICAgIH5wYXRoXG4gICAgICB+YXJnc1xuICAgICAgfmV4dGVuZDpOb25lXG4gICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmQ6Tm9uZVxuICAgICAgfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvblxuICAgICAgfmJ1aWxkX2luZm86VmVyc2lvbl9pbmZvLmRlZmF1bHRfYnVpbGRfaW5mb1xuICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6Tm9uZVxuICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkczpGbi5pZFxuICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzOk5vbmVcbiAgOztcbmVuZFxuXG5tb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgKydhIHRcblxuICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgaGVscCA6IHN0cmluZyBMYXp5LnQgdFxuICAgIHZhbCBwYXRoIDogc3RyaW5nIGxpc3QgdFxuICAgIHZhbCBhcmdzIDogc3RyaW5nIGxpc3QgdFxuXG4gICAgdmFsIGZsYWdcbiAgICAgIDogID9hbGlhc2VzOnN0cmluZyBsaXN0XG4gICAgICAtPiA/ZnVsbF9mbGFnX3JlcXVpcmVkOnVuaXRcbiAgICAgIC0+IHN0cmluZ1xuICAgICAgLT4gJ2EgRmxhZy50XG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG4gICAgICA6ICA/YWxpYXNlczpzdHJpbmcgbGlzdFxuICAgICAgLT4gP2Z1bGxfZmxhZ19yZXF1aXJlZDp1bml0XG4gICAgICAtPiBzdHJpbmdcbiAgICAgIC0+ICdhIEFyZ190eXBlLnRcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiBkZWZhdWx0OidhXG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgYW5vbiA6ICdhIEFub25zLnQgLT4gJ2EgdFxuICAgIHZhbCBlc2NhcGVfYW5vbiA6IGZpbmFsX2Fub246J2EgQW5vbnMudCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuIDogc2lnXG4gICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICB8IFJhaXNlIDogKCdhLCAnYSkgdFxuICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICBlbmRcblxuICAgIHZhbCBjaG9vc2Vfb25lXG4gICAgICA6ICAnYSBvcHRpb24gdCBsaXN0XG4gICAgICAtPiBpZl9ub3RoaW5nX2Nob3NlbjooJ2EsICdiKSBJZl9ub3RoaW5nX2Nob3Nlbi50XG4gICAgICAtPiAnYiB0XG5cbiAgICB2YWwgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgIDogICdhIHQgbGlzdFxuICAgICAgLT4gaWZfbm90aGluZ19jaG9zZW46KCdhLCAnYikgSWZfbm90aGluZ19jaG9zZW4udFxuICAgICAgLT4gJ2IgdFxuXG4gICAgdmFsIGFuZF9hcmdfbmFtZXMgOiAnYSB0IC0+ICgnYSAqIHN0cmluZyBsaXN0KSB0XG4gICAgdmFsIGFuZF9hcmdfbmFtZSA6ICdhIHQgLT4gKCdhICogc3RyaW5nKSB0XG4gICAgdmFsIGFyZ19uYW1lcyA6ICdhIHQgLT4gc3RyaW5nIGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDb21tYW5kX2Jhc2UuUGFyYW1cblxuICBsZXQgcGF0aCA9IG1hcCB+ZjpQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJhbVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBQYXJhbVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IFBhcmFtXG4gIGVuZFxuZW5kXG5cbnR5cGUgJ3Jlc3VsdCBiYXNpY19jb21tYW5kID1cbiAgc3VtbWFyeTpzdHJpbmcgLT4gP3JlYWRtZToodW5pdCAtPiBzdHJpbmcpIC0+ICh1bml0IC0+ICdyZXN1bHQpIFBhcmFtLnQgLT4gdFxuXG5sZXQgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBwYXJhbSA9XG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBwYXJhbVxuOztcblxubGV0IGJhc2ljX29yX2Vycm9yIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW0gPVxuICBiYXNpY1xuICAgIH5zdW1tYXJ5XG4gICAgP3JlYWRtZVxuICAgIChsZXQlbWFwIHJ1biA9IHBhcmFtIGluXG4gICAgIGZ1biAoKSAtPlxuICAgICAgIG1hdGNoIHJ1biAoKSB3aXRoXG4gICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgU3RkaW8ucHJlcnJfZW5kbGluZSAoRXJyb3IudG9fc3RyaW5nX2h1bSBlKTtcbiAgICAgICAgIGV4aXQgMSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBhYnNfcGF0aCA9IGFic19wYXRoXG4gIGxldCB3b3JkX3dyYXAgPSBTaGFwZS5Qcml2YXRlLndvcmRfd3JhcFxuXG4gIG1vZHVsZSBBbm9ucyA9IEFub25zXG4gIG1vZHVsZSBDbWRsaW5lID0gQ21kbGluZVxuICBtb2R1bGUgRm9yX3VuaXggPSBGb3JfdW5peFxuICBtb2R1bGUgUGF0aCA9IFBhdGhcblxuICBtb2R1bGUgU3BlYyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3BlY1xuXG4gICAgbGV0IHRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSBwYXJhbSA9XG4gICAgICBDb21tYW5kX2Jhc2UuUGFyYW0uQ2hvb3NlX29uZS5DaG9pY2VfbmFtZS4oY3JlYXRlX2V4biBwYXJhbSB8PiB0b19zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHJ1biA9IGBVc2VfQ29tbWFuZF91bml4XG5sZXQgc2hhcGUgPSBgVXNlX0NvbW1hbmRfdW5peFxuIiwib3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5leHRlcm5hbCBpc19oZWFwX2Jsb2NrIDogU3RkbGliLk9iai50IC0+IGJvb2wgPSBcImNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrXCJcbltAQG5vYWxsb2NdXG5cbmxldCBpc19vayB2ID0gaXNfaGVhcF9ibG9jayAoU3RkbGliLk9iai5yZXByIHYpXG5sZXQgY3JlYXRlIHYgPSBpZiBpc19vayB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuXG5sZXQgY3JlYXRlX2V4biB2ID1cbiAgaWYgaXNfb2sgdiB0aGVuIHYgZWxzZSBmYWlsd2l0aCBcIkhlYXBfYmxvY2suY3JlYXRlX2V4biBjYWxsZWQgd2l0aCBub24gaGVhcCBibG9ja1wiXG47O1xuXG5sZXQgdmFsdWUgdCA9IHRcbmxldCBieXRlc19wZXJfd29yZCA9IFdvcmRfc2l6ZS4obnVtX2JpdHMgd29yZF9zaXplKSAvIDhcblxubGV0IGJ5dGVzICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIChTdGRsaWIuT2JqLnNpemUgKFN0ZGxpYi5PYmoucmVwciAodCA6IGEgdCkpICsgMSkgKiBieXRlc19wZXJfd29yZFxuOztcbiIsIm9wZW4gQmFzZVxuXG4oKiogRWFjaCBzaW5nbGVfZXJyb3IgaXMgYSBwYXRoIGluZGljYXRpbmcgdGhlIGxvY2F0aW9uIHdpdGhpbiB0aGUgZGF0YXN0cnVjdHVyZSBpblxuICAgIHF1ZXN0aW9uIHRoYXQgaXMgYmVpbmcgdmFsaWRhdGVkLCBhbG9uZyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuICopXG50eXBlIHNpbmdsZV9lcnJvciA9XG4gIHsgcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZXJyb3IgOiBFcnJvci50XG4gIH1cblxudHlwZSB0ID0gc2luZ2xlX2Vycm9yIGxpc3RcbnR5cGUgJ2EgY2hlY2sgPSAnYSAtPiB0XG5cbmxldCBwYXNzIDogdCA9IFtdXG5cbmxldCBmYWlscyBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSB9IF1cbjs7XG5cbmxldCBmYWlsIG1lc3NhZ2UgPSBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLm9mX3N0cmluZyBtZXNzYWdlIH0gXVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IGZhaWxfcyBzZXhwID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5jcmVhdGVfcyBzZXhwIH0gXVxubGV0IGNvbWJpbmUgdDEgdDIgPSB0MSBAIHQyXG5sZXQgb2ZfbGlzdCA9IExpc3QuY29uY2F0XG5cbmxldCBuYW1lIG5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdICgqIHdoZW4gc3VjY2Vzc2Z1bCwgYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYSBjbG9zdXJlIGZvciBbfmZdLCBiZWxvdyAqKVxuICB8IF8gLT4gTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiB7IHBhdGggPSBuYW1lIDo6IHBhdGg7IGVycm9yIH0pXG47O1xuXG5sZXQgbmFtZV9saXN0IG4gbCA9IG5hbWUgbiAob2ZfbGlzdCBsKVxubGV0IGZhaWxfZm4gbWVzc2FnZSBfID0gZmFpbCBtZXNzYWdlXG5sZXQgcGFzc19ib29sIChfIDogYm9vbCkgPSBwYXNzXG5sZXQgcGFzc191bml0IChfIDogdW5pdCkgPSBwYXNzXG5cbmxldCBwcm90ZWN0IGYgdiA9XG4gIHRyeSBmIHYgd2l0aFxuICB8IGV4biAtPlxuICAgIGZhaWxfcyAoU2V4cC5tZXNzYWdlIFwiRXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcgdmFsaWRhdGlvblwiIFsgXCJcIiwgc2V4cF9vZl9leG4gZXhuIF0pXG47O1xuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIHByb3RlY3RcbiAgICAoZnVuICgpIC0+XG4gICAgICAgZiAoKTtcbiAgICAgICBwYXNzKVxuICAgICgpXG47O1xuXG5sZXQgcGF0aF9zdHJpbmcgcGF0aCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBwYXRoXG5cbmxldCBlcnJvcnMgdCA9XG4gIExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT5cbiAgICBFcnJvci50b19zdHJpbmdfaHVtIChFcnJvci50YWcgZXJyb3IgfnRhZzoocGF0aF9zdHJpbmcgcGF0aCkpKVxuOztcblxubGV0IHJlc3VsdF9mYWlsIHQgPVxuICBPcl9lcnJvci5lcnJvclxuICAgIFwidmFsaWRhdGlvbiBlcnJvcnNcIlxuICAgIChMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+IHBhdGhfc3RyaW5nIHBhdGgsIGVycm9yKSlcbiAgICBbJXNleHBfb2Y6IChzdHJpbmcgKiBFcnJvci50KSBMaXN0LnRdXG5bQEBjb2xkXVxuOztcblxuKCoqIFtyZXN1bHRdIGlzIGNhcmVmdWxseSBpbXBsZW1lbnRlZCBzbyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVkIC0tIGNhbGxpbmcgW3Jlc3VsdF9mYWlsXSxcbiAgICB3aGljaCBpcyBub3QgaW5saW5lYWJsZSwgaXMga2V5IHRvIHRoaXMuICopXG5sZXQgcmVzdWx0IHQgPSBpZiBMaXN0LmlzX2VtcHR5IHQgdGhlbiBPayAoKSBlbHNlIHJlc3VsdF9mYWlsIHRcblxubGV0IG1heWJlX3JhaXNlIHQgPSBPcl9lcnJvci5va19leG4gKHJlc3VsdCB0KVxubGV0IHZhbGlkX29yX2Vycm9yIGNoZWNrIHggPSBPcl9lcnJvci5tYXAgKHJlc3VsdCAocHJvdGVjdCBjaGVjayB4KSkgfmY6KGZ1biAoKSAtPiB4KVxuXG5sZXQgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCBfcmVjb3JkIHYgPVxuICBsZXQgcmVzdWx0ID0gcHJvdGVjdCBjaGVjayB2IGluXG4gIG5hbWUgKEZpZWxkLm5hbWUgZmxkKSByZXN1bHRcbjs7XG5cbmxldCBmaWVsZCBjaGVjayByZWNvcmQgZmxkID1cbiAgbGV0IHYgPSBGaWVsZC5nZXQgZmxkIHJlY29yZCBpblxuICBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIHJlY29yZCB2XG47O1xuXG5sZXQgZmllbGRfZm9sZGVyIGNoZWNrIHJlY29yZCA9XG4gICgpO1xuICBmdW4gYWNjIGZsZCAtPiBmaWVsZCBjaGVjayByZWNvcmQgZmxkIDo6IGFjY1xuOztcblxubGV0IGZpZWxkX2RpcmVjdF9mb2xkZXIgY2hlY2sgPVxuICBTdGFnZWQuc3RhZ2UgKGZ1biBhY2MgZmxkIHJlY29yZCB2IC0+XG4gICAgbWF0Y2ggZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdiB3aXRoXG4gICAgfCBbXSAtPiBhY2MgKCogQXZvaWQgYWxsb2NhdGluZyBhIG5ldyBsaXN0IGluIHRoZSBzdWNjZXNzIGNhc2UgKilcbiAgICB8IHJlc3VsdCAtPiByZXN1bHQgOjogYWNjKVxuOztcblxubGV0IGFsbCBjaGVja3MgdiA9XG4gIGxldCByZWMgbG9vcCBjaGVja3MgdiBlcnJzID1cbiAgICBtYXRjaCBjaGVja3Mgd2l0aFxuICAgIHwgW10gLT4gZXJyc1xuICAgIHwgY2hlY2sgOjogY2hlY2tzIC0+XG4gICAgICAobWF0Y2ggcHJvdGVjdCBjaGVjayB2IHdpdGhcbiAgICAgICB8IFtdIC0+IGxvb3AgY2hlY2tzIHYgZXJyc1xuICAgICAgIHwgZXJyIC0+IGxvb3AgY2hlY2tzIHYgKGVyciA6OiBlcnJzKSlcbiAgaW5cbiAgb2ZfbGlzdCAoTGlzdC5yZXYgKGxvb3AgY2hlY2tzIHYgW10pKVxuOztcblxubGV0IG9mX3Jlc3VsdCBmID1cbiAgcHJvdGVjdCAoZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgT2sgKCkgLT4gcGFzc1xuICAgIHwgRXJyb3IgZXJyb3IgLT4gZmFpbCBlcnJvcilcbjs7XG5cbmxldCBvZl9lcnJvciBmID1cbiAgcHJvdGVjdCAoZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgT2sgKCkgLT4gcGFzc1xuICAgIHwgRXJyb3IgZXJyb3IgLT4gWyB7IHBhdGggPSBbXTsgZXJyb3IgfSBdKVxuOztcblxubGV0IGJvb2x0ZXN0IGYgfmlmX2ZhbHNlID0gcHJvdGVjdCAoZnVuIHYgLT4gaWYgZiB2IHRoZW4gcGFzcyBlbHNlIGZhaWwgaWZfZmFsc2UpXG5cbmxldCBwYWlyIH5mc3QgfnNuZCAoZnN0X3ZhbHVlLCBzbmRfdmFsdWUpID1cbiAgb2ZfbGlzdCBbIG5hbWUgXCJmc3RcIiAocHJvdGVjdCBmc3QgZnN0X3ZhbHVlKTsgbmFtZSBcInNuZFwiIChwcm90ZWN0IHNuZCBzbmRfdmFsdWUpIF1cbjs7XG5cbmxldCBsaXN0X2luZGV4ZWQgY2hlY2sgbGlzdCA9XG4gIExpc3QubWFwaSBsaXN0IH5mOihmdW4gaSBlbCAtPiBuYW1lIChJbnQudG9fc3RyaW5nIChpICsgMSkpIChwcm90ZWN0IGNoZWNrIGVsKSlcbiAgfD4gb2ZfbGlzdFxuOztcblxubGV0IGxpc3Qgfm5hbWU6ZXh0cmFjdF9uYW1lIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gZWwgLT5cbiAgICBtYXRjaCBwcm90ZWN0IGNoZWNrIGVsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCB0IC0+XG4gICAgICAoKiBleHRyYSBsZXZlbCBvZiBwcm90ZWN0aW9uIGluIGNhc2UgZXh0cmFjdF9uYW1lIHRocm93cyBhbiBleGNlcHRpb24gKilcbiAgICAgIHByb3RlY3QgKGZ1biB0IC0+IG5hbWUgKGV4dHJhY3RfbmFtZSBlbCkgdCkgdClcbiAgfD4gb2ZfbGlzdFxuOztcblxubGV0IGFsaXN0IH5uYW1lIGYgbGlzdCcgPSBsaXN0IChmdW4gKF8sIHgpIC0+IGYgeCkgbGlzdCcgfm5hbWU6KGZ1biAoa2V5LCBfKSAtPiBuYW1lIGtleSlcbmxldCBmaXJzdF9mYWlsdXJlIHQxIHQyID0gaWYgTGlzdC5pc19lbXB0eSB0MSB0aGVuIHQyIGVsc2UgdDFcblxubGV0IG9mX2Vycm9yX29wdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBwYXNzXG4gIHwgU29tZSBlcnJvciAtPiBmYWlsIGVycm9yXG47O1xuXG5sZXQgYm91bmRlZCB+bmFtZSB+bG93ZXIgfnVwcGVyIH5jb21wYXJlIHggPVxuICBtYXRjaCBNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlIHggd2l0aFxuICB8IEluX3JhbmdlIC0+IHBhc3NcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPlxuICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IEluY2wgaW5jbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzIDwgYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBpbmNsKSlcbiAgICAgfCBFeGNsIGV4Y2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8PSBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGV4Y2wpKSlcbiAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IEluY2wgaW5jbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzID4gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBpbmNsKSlcbiAgICAgfCBFeGNsIGV4Y2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+PSBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGV4Y2wpKSlcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCArKyApIHQxIHQyID0gY29tYmluZSB0MSB0MlxuZW5kXG4iLCJcbigqIFdlIGRvIG5vdCBbaW5jbHVkZSBCYXNlXSBoZXJlLCBhbmQgaW5zdGVhZCBpbXBvcnQgbW9kdWxlcyB0aGF0IFtDb3JlXSBkb2Vzbid0IGV4dGVuZCxcbiAgIGJlY2F1c2Ugd2Ugd2FudCBjb2RlIGluIFtDb3JlXSB0byBiZSBjbGVhciB3aGVuIGl0IHJlZmVyZW5jZXMgYSBbQmFzZV0gbW9kdWxlIHRoYXRcbiAgIFtDb3JlXSBpcyBvdmVycmlkaW5nLiAqKVxubW9kdWxlIEFwcGxpY2F0aXZlID0gQmFzZS5BcHBsaWNhdGl2ZVxubW9kdWxlIEF2bHRyZWUgPSBCYXNlLkF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYXNlLkJhY2t0cmFjZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCYXNlLkJpbmFyeV9zZWFyY2hcbm1vZHVsZSBDb21wYXJpc29ucyA9IEJhc2UuQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQmFzZS5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRXF1YWwgPSBCYXNlLkVxdWFsXG5tb2R1bGUgRXhuID0gQmFzZS5FeG5cbm1vZHVsZSBGbG9hdGFibGUgPSBCYXNlLkZsb2F0YWJsZVxubW9kdWxlIEZvcm1hdHRlciA9IEJhc2UuRm9ybWF0dGVyXG5tb2R1bGUgSGFzaCA9IEJhc2UuSGFzaFxubW9kdWxlIEhhc2hlciA9IEJhc2UuSGFzaGVyXG5tb2R1bGUgSW50YWJsZSA9IEJhc2UuSW50YWJsZVxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEJhc2UuSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X21hdGggPSBCYXNlLkludF9tYXRoXG5tb2R1bGUgSW52YXJpYW50ID0gQmFzZS5JbnZhcmlhbnRcbm1vZHVsZSBNb25hZCA9IEJhc2UuTW9uYWRcbm1vZHVsZSBQb2x5ID0gQmFzZS5Qb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IEJhc2UuUG9wY291bnRcbltAQHdhcm5pbmcgXCItM1wiXVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBCYXNlLlByZXR0eV9wcmludGVyXG5tb2R1bGUgUmFuZG9tID0gQmFzZS5SYW5kb21cbm1vZHVsZSBTdGFnZWQgPSBCYXNlLlN0YWdlZFxubW9kdWxlIFN0cmluZ2FibGUgPSBCYXNlLlN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBCYXNlLlN5c1xubW9kdWxlIFVjaGFyID0gQmFzZS5VY2hhclxubW9kdWxlIFdpdGhfcmV0dXJuID0gQmFzZS5XaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IEJhc2UuV29yZF9zaXplXG5cbigqIFdlIGRvIGluY2x1ZGUgW0Jhc2VdJ3MgdG9wLWxldmVsIHZhbHVlIGFuZCB0eXBlIGJpbmRpbmdzLCBiZWNhdXNlIHRoZXkgZG9uJ3QgY2F1c2VcbiAgIGFueSBjb25mdXNpb24sIGFuZCBkdXBsaWNhdGluZyB0aGVtIHdvdWxkIGJlIGVycm9yIHByb25lLiAqKVxuaW5jbHVkZSBCYXNlLkV4cG9ydFxuaW5jbHVkZSBTdGRpb1xuaW5jbHVkZSBCYXNlX2Zvcl90ZXN0c1xuaW5jbHVkZSBCaW5fcHJvdC5TdGRcbmluY2x1ZGUgU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5tb2R1bGUgRmllbGQgPSBGaWVsZHNsaWIuRmllbGRcblxubW9kdWxlIEZyb21fc2V4cGxpYiA6IHNpZ1xuICB0eXBlIGJpZ3N0cmluZyA9IFNleHBsaWIuQ29udi5iaWdzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBtYXQgPSBTZXhwbGliLkNvbnYubWF0IFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdmVjID0gU2V4cGxpYi5Db252LnZlYyBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICgqIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0gYXJlIHVzZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGZyb21cbiAgICAgW1tAQGRlcml2aW5nIHNleHBdXSwgW1slc2V4cF9vZjogXV0sIGFuZCBbWyVvZl9zZXhwOiBdXS4gIFRoZSB0eXBlIFtfIHNleHBfb3BhcXVlXVxuICAgICBleHBhbmRzIHRvIHVzZXMgb2YgW3NleHBfb2Zfb3BhcXVlXSBhbmQgW29wYXF1ZV9vZl9zZXhwXS4gKilcblxuICB2YWwgc2V4cF9vZl9vcGFxdWUgOiBfIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBvcGFxdWVfb2Zfc2V4cCA6IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIHNleHBfb2ZfcGFpciA6ICgnYSAtPiBCYXNlLlNleHAudCkgLT4gKCdiIC0+IEJhc2UuU2V4cC50KSAtPiAnYSAqICdiIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBwYWlyX29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EpIC0+IChCYXNlLlNleHAudCAtPiAnYikgLT4gQmFzZS5TZXhwLnQgLT4gJ2EgKiAnYlxuXG4gIGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIEJhc2UuU2V4cC50XG5cbiAgdmFsIG9mX3NleHBfZXJyb3IgOiBzdHJpbmcgLT4gQmFzZS5TZXhwLnQgLT4gX1xuICB2YWwgb2Zfc2V4cF9lcnJvcl9leG4gOiBleG4gLT4gQmFzZS5TZXhwLnQgLT4gX1xuZW5kID1cbiAgU2V4cGxpYi5Db252XG5cbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5cbigqIFtzZXhwX29wYXF1ZV0gaW5kaWNhdGVzIHRvIFtwcHhfc2V4cF9jb252XSB0aGF0IGEgdmFsdWUgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIFtfXSwgaS5lLlxuICAgW1NleHAuQXRvbSBcIl9cIl0uICBIZXJlIHdlIGV4cG9zZSB0aGUgW0BAZGVyaXZpbmddIGFzcGVjdHMgb2YgW3NleHBfb3BhcXVlXSBzbyB0aGF0XG4gICBvdGhlciBwcHgncyB0cmVhdCBbc2V4cF9vcGFxdWVdIGNvcnJlY3RseSwgYnkgaWdub3JpbmcgaXQgYW5kIHByb2Nlc3NpbmcgdGhlIHVuZGVybHlpbmdcbiAgIHR5cGUuICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHNleHBfb3BhcXVlID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHNleHBfb3BhcXVlIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIHNleHBfb3BhcXVlIDo9ICdhKVxuXG5pbmNsdWRlIChcbiAgVHlwZXJlcF9saWIuU3RkIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFR5cGVyZXBfbGliLlN0ZFxuICBlbmRcbiAgd2l0aCBtb2R1bGUgVHlwZV9lcXVhbCA6PSBUeXBlcmVwX2xpYi5TdGQuVHlwZV9lcXVhbClcblxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50c2xpYi5WYXJpYW50XG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmxldCBhbV9ydW5uaW5nX3Rlc3QgPVxuICB0cnlcbiAgICBpZ25vcmUgKFN0ZGxpYi5TeXMuZ2V0ZW52IFwiVEVTVElOR19GUkFNRVdPUktcIiA6IHN0cmluZyk7XG4gICAgdHJ1ZVxuICB3aXRoXG4gICgqIFtDYW1sLipdIG5ldmVyIHJhaXNlcyBbTm90X2ZvdW5kX3NdICopXG4gIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxudHlwZSAnYSBpZGVudGl0eSA9ICdhXG5cbm1vZHVsZSBOb3RfZm91bmQgPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uXG4gICAgTm90X2ZvdW5kID0gTm90X2ZvdW5kXG4gICAgICAgICAgICAgICAgW0BkZXByZWNhdGVkXG4gICAgICAgICAgICAgICAgICB7fFtzaW5jZSAyMDE4LTAyXSBJbnN0ZWFkIG9mIHJhaXNpbmcgW05vdF9mb3VuZF0sIGNvbnNpZGVyIHVzaW5nIFtyYWlzZV9zXSB3aXRoIGFuXG5pbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLiAgSWYgY29kZSBuZWVkcyB0byBkaXN0aW5ndWlzaCBbTm90X2ZvdW5kXSBmcm9tIG90aGVyXG5leGNlcHRpb25zLCBwbGVhc2UgY2hhbmdlIGl0IHRvIGhhbmRsZSBib3RoIFtOb3RfZm91bmRdIGFuZCBbTm90X2ZvdW5kX3NdLiAgVGhlbiwgaW5zdGVhZFxub2YgcmFpc2luZyBbTm90X2ZvdW5kXSwgcmFpc2UgW05vdF9mb3VuZF9zXSB3aXRoIGFuIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UufH1dXG5cbiAgZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gQmFzZS5Ob3RfZm91bmRfc1xuZW5kXG5cbmluY2x1ZGUgTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXhwYWJsZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogU2V4cGFibGUudCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMSkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICdhIFNleHBhYmxlLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICAgICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgdCA9XG4gICAgICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXVxuXG4gICAgICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgU2V4cGxpYi5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgICAgICB8IFNleHBsaWIuU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgICAgIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBsaWIuU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgOiBNLnQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBzdHJpbmdfc2V4cF9ncmFtbWFyXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVG9fc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFMpIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX3N0cmluZyB4ID0gU2V4cGxpYi5Db252Lm9mX3N0cmluZ19fb2ZfX29mX3NleHAgTS50X29mX3NleHAgeFxuICAgICAgbGV0IHRvX3N0cmluZyB4ID0gU2V4cGxpYi5Db252LnN0cmluZ19vZl9fb2ZfX3NleHBfb2YgTS5zZXhwX29mX3QgeFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVG9fc3RyaW5nYWJsZSA9IFN0YWJsZS5Ub19zdHJpbmdhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbl9wcm90LkJpbmFibGVcbm1vZHVsZSBTaGFwZSA9IEJpbl9wcm90LlNoYXBlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX2JpbmFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udl93aXRob3V0X3V1aWQgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udiB3aXRoIHR5cGUgYmluYWJsZSA6PSBCaW5hYmxlLnQpIDpcbiAgICAgIFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMSlcbiAgICAgICAgKE0gOiBDb252MV93aXRob3V0X3V1aWQgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoQmluYWJsZSA6IE1pbmltYWwuUzEpIChNIDogQ29udjEgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252Ml93aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IpIGJpbmFibGUgOj0gKCdhLCAnYikgQmluYWJsZS50KSA6XG4gICAgICBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMyKVxuICAgICAgICAoTSA6IENvbnYyIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYmluYWJsZSA6PSAoJ2EsICdiLCAnYykgQmluYWJsZS50KSA6XG4gICAgICBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU2V4cGFibGUuUykgPVxuICAgICAgT2ZfYmluYWJsZS5WMVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICBlbmQpXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3NleHBhYmxlKSA9XG4gICAgICBPZl9iaW5hYmxlLlYyXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICAgICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gTS5zZXhwX29mX3RcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IE0udF9vZl9zZXhwXG4gICAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3N0cmluZ2FibGUpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4gQmlnYXJyYXlcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5cbnR5cGUgJ2EgbSA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG5sZXQgb2ZfYmlnc3RyaW5nICh0eXBlIGEpIG0gYmlnc3RyaW5nID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgbGV0IHQgPSBNLmJpbl9yZWFkX3QgYmlnc3RyaW5nIH5wb3NfcmVmIGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID0gQXJyYXkxLmRpbSBiaWdzdHJpbmcgaW5cbiAgKG1hdGNoICFwb3NfcmVmID0gYmlnc3RyaW5nX2xlbmd0aCB3aXRoXG4gICB8IHRydWUgLT4gKClcbiAgIHwgZmFsc2UgLT5cbiAgICAgcmFpc2Vfc1xuICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgXCJiaW5fcmVhZF90IGRpZCBub3QgY29uc3VtZSB0aGUgZW50aXJlIGJ1ZmZlclwiXG4gICAgICAgICAgIH5jb25zdW1lZDooIXBvc19yZWYgOiBpbnQpXG4gICAgICAgICAgIChiaWdzdHJpbmdfbGVuZ3RoIDogaW50KV0pO1xuICB0XG47O1xuXG4oKiBVc2luZyB0aGUgW0JpZ3N0cmluZ10gbW9kdWxlIHdvdWxkIGludHJvZHVjZSBhIGN5Y2xpYyBkZXBlbmRlbmN5LiAqKVxubGV0IGNyZWF0ZV9iaWdzdHJpbmcgc2l6ZSA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBzaXplXG5cbmxldCB0b19iaWdzdHJpbmcgPyhwcmVmaXhfd2l0aF9sZW5ndGggPSBmYWxzZSkgKHR5cGUgYSkgbSB0ID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCB0X2xlbmd0aCA9IE0uYmluX3NpemVfdCB0IGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGggdGhlbiB0X2xlbmd0aCArIDggKCogdGhlIHNpemUgb2YgYSA2NC1iaXQgaW50ICopIGVsc2UgdF9sZW5ndGhcbiAgaW5cbiAgbGV0IGJpZ3N0cmluZyA9IGNyZWF0ZV9iaWdzdHJpbmcgYmlnc3RyaW5nX2xlbmd0aCBpblxuICBsZXQgcG9zID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGhcbiAgICB0aGVuIEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgYmlnc3RyaW5nIH5wb3M6MCB0X2xlbmd0aFxuICAgIGVsc2UgMFxuICBpblxuICBsZXQgcG9zID0gTS5iaW5fd3JpdGVfdCBiaWdzdHJpbmcgfnBvcyB0IGluXG4gIGFzc2VydCAocG9zID0gYmlnc3RyaW5nX2xlbmd0aCk7XG4gIGJpZ3N0cmluZ1xuOztcblxubW9kdWxlIE9mX2JpbmFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjJcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjJcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjJcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZS5WMVxubW9kdWxlIE9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMS5WMVxubW9kdWxlIE9mX2JpbmFibGUyX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMi5WMVxubW9kdWxlIE9mX2JpbmFibGUzX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMy5WMVxubW9kdWxlIE9mX3NleHBhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zZXhwYWJsZS5WMVxubW9kdWxlIE9mX3N0cmluZ2FibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX3N0cmluZ2FibGUuVjFcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlID0gc2lnXG4gICAgICBpbmNsdWRlIFNfb25seV9mdW5jdGlvbnNcblxuICAgICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIGVuZFxuXG4gICAgKCogQ2hlY2sgdGhhdCBvbmx5IHRoZSBmdW5jdGlvbnMgJiBzaGFwZSBhcmUgc3VmZmljaWVudCBmb3IgW0BAZGVyaXZpbmcgYmluX2lvXS4gVGhlXG4gICAgICAgZmFjdCB0aGF0IHRoaXMgZnVuY3RvciB0eXBlY2hlY2tzIGlzLCBpdHNlbGYsIHRoZSB0ZXN0LiAqKVxuICAgIG1vZHVsZSBfIChYIDogU19vbmx5X2Z1bmN0aW9uc19hbmRfc2hhcGUpIDogUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gWC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcbiAgZW5kKVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuUHJpbnRmfVtCYXNlLlByaW50Zl19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZSBCYXNlLlByaW50ZiAoKiogQG9wZW4gKilcblxubGV0IGVwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmZwcmludGZcbmxldCBrZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmtmcHJpbnRmXG5sZXQgcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwucHJpbnRmXG5cblxuKCoqIHByaW50IHRvIHN0ZGVycjsgZXhpdCAxICopXG5sZXQgZXhpdGYgZm10ID1cbiAga3NwcmludGZcbiAgICAoZnVuIHMgKCkgLT5cbiAgICAgICBlcHJpbnRmIFwiJXNcXG4lIVwiIHM7XG4gICAgICAgZXhpdCAxKVxuICAgIGZtdFxuOztcblxudHlwZSBwcmludGYgPSB7IHByaW50ZiA6ICdhLiAoJ2EsIEJ1ZmZlci50LCB1bml0KSBmb3JtYXQgLT4gJ2EgfVxuXG5sZXQgY29sbGVjdF90b19zdHJpbmcgZiA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBkb25lXyA9IHJlZiBmYWxzZSBpblxuICBsZXQgcHJpbnRmIGZtdCA9XG4gICAga2JwcmludGZcbiAgICAgIChmdW4gYnVmIC0+XG4gICAgICAgICBpZiAhZG9uZV9cbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBCdWZmZXIucmVzZXQgYnVmO1xuICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIltwcmludGZdIHVzZWQgYWZ0ZXIgW2NvbGxlY3RfdG9fc3RyaW5nXSByZXR1cm5lZFwiXSkpXG4gICAgICBidWZcbiAgICAgIGZtdFxuICBpblxuICBmIHsgcHJpbnRmIH07XG4gIGRvbmVfIDo9IHRydWU7XG4gIGxldCBvdXRwdXQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIG91dHB1dFxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG4oKiBBbGwgdGhlIHR5cGVzIGFzIGV4cG9zZWQgaW4gdGhlIG1saSBhcmUgZGVmaW5lZCBpbiB0aGlzIFtUeXBlc10gbW9kdWxlLiAgVGhlIHJlc3Qgb2ZcbiAgIHRoaXMgZmlsZSBpcyBzaW1wbHkgb3ZlcnJpZGluZyBhbGwgdGhlIGJpbl9pbywgY29tcGFyZSwgYW5kIHNleHAgZnVuY3Rpb25zIHRvIHJhaXNlXG4gICBleGNlcHRpb25zLiAqKVxubW9kdWxlIFR5cGVzID0gc3RydWN0XG4gIG1vZHVsZSBOb2JvZHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk5vYm9keVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBNZSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiTWVcIlxuICBlbmRcblxuICBtb2R1bGUgUmVhZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFJlYWQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBXcml0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFdob19jYW5fd3JpdGUgb2YgTWUudCBdIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJXcml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBJbW11dGFibGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgYFdob19jYW5fd3JpdGUgb2YgTm9ib2R5LnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiSW1tdXRhYmxlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgV3JpdGUudFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJSZWFkX3dyaXRlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFVwcGVyX2JvdW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mICdhXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlVwcGVyX2JvdW5kXCJcbiAgZW5kXG5lbmRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuKCogVGhpcyBpcyBhbiBleHBsaWNpdCBtb2R1bGUgdHlwZSBpbnN0ZWFkIG9mIGp1c3QgZ2l2ZW4gaW5saW5lIGFzIHRoZSByZXR1cm4gc2lnbmF0dXJlIG9mXG4gICBbT25seV91c2VkX2FzX3BoYW50b21fdHlwZTFdIHRvIGF2b2lkIGFuIHVudXNlZCB2YWx1ZSB3YXJuaW5nIHdpdGggYmluX2lvIHZhbHVlcy4gKilcbm1vZHVsZSB0eXBlIFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCBzdGFibGVfd2l0bmVzc11cbmVuZFxuXG4oKiBPdmVycmlkZSBhbGwgYmluX2lvLCBzZXhwLCBjb21wYXJlIGZ1bmN0aW9ucyB0byByYWlzZSBleGNlcHRpb25zICopXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKE5hbWUgOiBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogU2V4cGFibGVfYmluYWJsZV9jb21wYXJhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHNleHBfb2ZfdCBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5zZXhwX29mX3RdXCIgTmFtZS5uYW1lICgpXG4gIGxldCB0X29mX3NleHAgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMudF9vZl9zZXhwXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgY29tcGFyZSBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmNvbXBhcmVdXCIgTmFtZS5uYW1lICgpXG4gIGxldCBoYXNoX2ZvbGRfdCBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmhhc2hfZm9sZF90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLk5vdGhpbmcudF9zZXhwX2dyYW1tYXJcbiAgbGV0IHN0YWJsZV93aXRuZXNzIF8gPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIGxldCBnbG9iYWxpemUgXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmdsb2JhbGl6ZV1cIiBOYW1lLm5hbWUgKClcblxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgZW5kKVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBzZXJpYWxpemF0aW9uXCIgTmFtZS5uYW1lICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgXyA9XG4gICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IHVzZWQgJXMgYmluX2lvIGRlc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogc2lnXG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cF9wb2x5LCBzdGFibGVfd2l0bmVzc11cbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChUKVxuXG4gIHR5cGUgdCA9IFQudCBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gIGxldCBfX3Rfb2Zfc2V4cF9fID0gdF9vZl9zZXhwXG4gIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgbGV0IGdsb2JhbGl6ZSBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuZ2xvYmFsaXplXVwiIFQubmFtZSAoKVxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE5vYm9keSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5Ob2JvZHkpXG4gICAgbW9kdWxlIE1lID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLk1lKVxuICAgIG1vZHVsZSBSZWFkID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWQpXG4gICAgbW9kdWxlIFdyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLldyaXRlKVxuICAgIG1vZHVsZSBSZWFkX3dyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWRfd3JpdGUpXG4gICAgbW9kdWxlIEltbXV0YWJsZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5JbW11dGFibGUpXG5cbiAgICB0eXBlIG5vYm9keSA9IE5vYm9keS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgdHlwZSBtZSA9IE1lLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVHlwZXMuVXBwZXJfYm91bmQpXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFR5cGVzLlVwcGVyX2JvdW5kLnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIF8gPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgICBsZXQgX190X29mX3NleHBfXyA9IHRfb2Zfc2V4cFxuXG4gICAgICBsZXQgZ2xvYmFsaXplIF8gPVxuICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5nbG9iYWxpemVdXCIgVHlwZXMuVXBwZXJfYm91bmQubmFtZSAoKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgcmVhZCA9IFYxLlJlYWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgd3JpdGUgPSBWMS5Xcml0ZS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICB0eXBlIGltbXV0YWJsZSA9IFYxLkltbXV0YWJsZS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSByZWFkX3dyaXRlID0gVjEuUmVhZF93cml0ZS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSAnYSBwZXJtcyA9ICdhIFYxLlVwcGVyX2JvdW5kLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5tb2R1bGUgRXhwb3J0ID0gU3RhYmxlLkV4cG9ydFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ29tcGFyYXRvciA9IEJhc2UuQ29tcGFyYXRvclxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPSAoJ2EsICd3aXRuZXNzKSBDb21wYXJhdG9yLnQgPSBwcml2YXRlXG4gIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICA7IHNleHBfb2ZfdCA6ICdhIC0+IEJhc2UuU2V4cC50XG4gIH1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQ29tcGFyYXRvciB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbmluY2x1ZGUgKENvbXBhcmF0b3IgOiBCYXNlX21hc2spXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnd2l0bmVzcykgdCA9ICgnYSwgJ3dpdG5lc3MpIHQgPSBwcml2YXRlXG4gICAgICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gQmFzZS5TZXhwLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgY29tcGFyYXRvciA9ICgnYSwgJ2IpIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuXG4gICAgbGV0IG1ha2UgPSBtYWtlXG5cbiAgICBtb2R1bGUgTWFrZSA9IE1ha2VcbiAgICBtb2R1bGUgTWFrZTEgPSBNYWtlMVxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnZiwgJ3MpIHQgPSAoJ2YsICdzKSBCYXNlLkVpdGhlci50ID1cbiAgICAgIHwgRmlyc3Qgb2YgJ2ZcbiAgICAgIHwgU2Vjb25kIG9mICdzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBGaXJzdCB4MSAtPiBGaXJzdCAoZjEgeDEpXG4gICAgICB8IFNlY29uZCB4MiAtPiBTZWNvbmQgKGYyIHgyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuRWl0aGVyXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuZWl0aGVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5laXRoZXJcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTMF93aXRob3V0X2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICBpbmNsdWRlIFMwX3dpdGhvdXRfY29tcGFyYXRvclxuICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbigqKiBUaGUgcG9seW1vcnBoaWMgc2lnbmF0dXJlcyByZXF1aXJlIGEgbWFwcGluZyBmdW5jdGlvbiBzbyBwZW9wbGUgY2FuIHdyaXRlIGNvbnZlcnNpb25cbiAgICBmdW5jdGlvbnMgd2l0aG91dCBlaXRoZXIgKDEpIHJlLWltcGxlbWVudGluZyB0aGUgbWFwcGluZyBmdW5jdGlvbiBpbmxpbmUgb3IgKDIpXG4gICAgcmVhY2hpbmcgaW50byB0aGUgdW5zdGFibGUgcGFydCBvZiB0aGUgbW9kdWxlLiAqKVxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwXG4gICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyLCAnYTMsICdhNCkgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIG1hcFxuICAgIDogICgnYTEsICdhMiwgJ2EzLCAnYTQpIHRcbiAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAtPiBmNDooJ2E0IC0+ICdiNClcbiAgICAtPiAoJ2IxLCAnYjIsICdiMywgJ2I0KSB0XG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUzBfd2l0aG91dF9jb21wYXJhdG9yID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5cbiAgICB0eXBlIHQgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgPVxuICAgICAgeyBwb3NfZm5hbWUgOiBzdHJpbmdcbiAgICAgIDsgcG9zX2xudW0gOiBpbnRcbiAgICAgIDsgcG9zX2JvbCA6IGludFxuICAgICAgOyBwb3NfY251bSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IHRvX3N0cmluZyA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nXG5sZXQgc2V4cF9vZl90ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi5zZXhwX29mX3RcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGlzIG1hbnkgcGxhY2VzIHBsYWNlcyBhcyBwb3NzaWJsZS5cbiAgIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuISBJbmZvX2ludGZcblxubW9kdWxlIHR5cGUgUyA9IEJhc2UuSW5mby5TXG5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlX2V4biA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBleG4gW0BAZGVyaXZpbmcgc2V4cF9vZiwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSB0IHw+IFslc2V4cF9vZjogdF1cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gRXhuLmNyZWF0ZV9zXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIFNleHAuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kIChJbmZvIDogQmFzZS5JbmZvLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgSW5mb1xuXG4gIG1vZHVsZSBJbnRlcm5hbF9yZXByID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJpbmFibGVfZXhuID0gQmluYWJsZV9leG4uU3RhYmxlXG5cbiAgICAgIG1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgICAgKCogW3NleHBfb2ZfdF0gYXMgZGVmaW5lZCBoZXJlIGlzIHVuc3RhYmxlOyB0aGlzIGlzIE9LIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgICBbdF9vZl9zZXhwXS4gIFtzZXhwX29mX3RdIGlzIG9ubHkgdXNlZCB0byBwcm9kdWNlIGEgc2V4cCB0aGF0IGlzIG5ldmVyXG4gICAgICAgICAgICAgZGVzZXJpYWxpemVkIGFzIGEgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uXS4gKilcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLkludGVybmFsX3JlcHIudCA9XG4gICAgICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgICAgICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgICAgICAgIHwgRXhuIG9mIEJpbmFibGVfZXhuLlYxLnRcbiAgICAgICAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgICAgICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi5WMS50IG9wdGlvblxuICAgICAgICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgICAgICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgICAgICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICAgICAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZiwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgU3RhYmxlLlYyXG5cbiAgICBsZXQgdG9faW5mbyA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG4gICAgbGV0IG9mX2luZm8gPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IEluZm8uSW50ZXJuYWxfcmVwci5vZl9pbmZvXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnRlcm5hbF9yZXByLlN0YWJsZS5WMilcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgSW50ZXJuYWxfcmVwci5TdGFibGUuVjIuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9iaW5hYmxlXG4gICAgICAgICAgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgICAgKFNleHApXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gSW5mby5zZXhwX29mX3RcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gSW5mby50X29mX3NleHBcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSBzZXhwX29mX3RcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gdF9vZl9zZXhwXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgU2V4cC5zdGFibGVfd2l0bmVzcyBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5WMi50IFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5pbmNsdWRlIEV4dGVuZCAoQmFzZS5JbmZvKVxuXG4iLCJpbmNsdWRlIEJhc2UuRXJyb3JcbmluY2x1ZGUgSW5mby5FeHRlbmQgKEJhc2UuRXJyb3IpXG5cbmxldCBmYWlsd2l0aHMgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgcmFpc2UgKGNyZWF0ZSA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZmFpbHdpdGhwID9zdHJpY3QgaGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgcmFpc2UgKGNyZWF0ZSA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUmVzdWx0ID0gQmFzZS5SZXN1bHRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBSZXN1bHQudCA9XG4gICAgICB8IE9rIG9mICdhXG4gICAgICB8IEVycm9yIG9mICdiXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mMSB+ZjIgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIGVyciAtPiBFcnJvciAoZjIgZXJyKVxuICAgICAgfCBPayB4IC0+IE9rIChmMSB4KVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMV9zdGFibGVfdW5pdF90ZXN0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKHN0cmluZywgaW50KSBWMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICAgIGxldCB0ZXN0cyA9XG4gICAgICBbIFYxLk9rIFwiZm9vXCIsIFwiKE9rIGZvbylcIiwgXCJcXDAwMFxcMDAzZm9vXCI7IFYxLkVycm9yIDcsIFwiKEVycm9yIDcpXCIsIFwiXFwwMDFcXDAwN1wiIF1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBSZXN1bHRcbiIsIigqKiBBbiBpbnRlcmZhY2UgZm9yIGNyZWF0aW5nIHVuaXQgdGVzdHMgdG8gY2hlY2sgc3RhYmlsaXR5IG9mIHNleHAgYW5kIGJpbi1pb1xuICAgIHNlcmlhbGl6YXRpb25zICopXG5cbm9wZW4hIEltcG9ydFxuXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG5cblxuICAoKiogW3Rlc3RzXSBpcyBhIGxpc3Qgb2YgKHZhbHVlLCBzZXhwLXJlcHJlc2VudGF0aW9uLCBiaW4taW8tcmVwcmVzZW50YXRpb24pIHRyaXBsZXMuXG4gICAgICBUaGUgdW5pdCB0ZXN0cyBjaGVjayB0aGF0IHRoZSB0eXBlIHByb3Blcmx5IHNlcmlhbGl6ZXMgYW5kXG4gICAgICBkZS1zZXJpYWxpemVzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gcmVwcmVzZW50YXRpb25zLiAqKVxuICB2YWwgdGVzdHMgOiAodCAqIHN0cmluZyAqIHN0cmluZykgbGlzdFxuZW5kXG5cbigqKiBVbm9yZGVyZWQgY29udGFpbmVyIHRlc3RzIGFyZSBmb3IgdHlwZXMgd2l0aCBzZXJpYWxpemF0aW9ucyB0aGF0IHdpbGwgY29udGFpbiBhXG4gICAgY2VydGFpbiBzZXQgb2YgZWxlbWVudHMgKGVhY2ggcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgc2V4cCBvciBiaW4taW8gc3RyaW5nKSB3aGljaCBtYXlcbiAgICBhcHBlYXIgaW4gYW55IG9yZGVyLCBzdWNoIGFzIGhhc2ggdGFibGVzIGFuZCBoYXNoIHNldHMuICopXG5tb2R1bGUgVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzZXhwcyA6IHN0cmluZyBsaXN0XG4gICAgOyBiaW5faW9faGVhZGVyIDogc3RyaW5nXG4gICAgOyBiaW5faW9fZWxlbWVudHMgOiBzdHJpbmcgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgdHlwZSBVbm9yZGVyZWRfY29udGFpbmVyX2FyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCB0ZXN0cyA6ICh0ICogVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0LnQpIGxpc3RcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuT3JfZXJyb3JcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIElPID0gQmFzZS5Pcl9lcnJvclxuXG4gIGxldCBydW4gZiA9IG9rX2V4biAoZiAoKSlcbiAgbGV0IHNhbml0aXplIHMgPSBzXG4gIGxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEV4cGVjdF90ZXN0X2NvbmZpZy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuZW5kXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWdfd2l0aF91bml0X2V4cGVjdCA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IuU3RhYmxlLlYxLnQpIFJlc3VsdC5TdGFibGUuVjEudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwIHggfmYgPSBSZXN1bHQuU3RhYmxlLlYxLm1hcCB4IH5mMTpmIH5mMjpGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsIEVycm9yLlN0YWJsZS5WMi50KSBSZXN1bHQuU3RhYmxlLlYxLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNlcXVlbmNlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuU2VxdWVuY2UudFxuXG4gICAgbGV0IG9mX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLm9mX2xpc3RcbiAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuU2VxdWVuY2UudG9fbGlzdFxuICBlbmQpXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RlcFxuXG4gIHR5cGUgKCdhLCAncykgdCA9ICgnYSwgJ3MpIFN0ZXAudCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mIHsgc3RhdGUgOiAncyB9XG4gICAgfCBZaWVsZCBvZlxuICAgICAgICB7IHZhbHVlIDogJ2FcbiAgICAgICAgOyBzdGF0ZSA6ICdzXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgfCBMZWZ0IG9mICdhXG4gICAgfCBSaWdodCBvZiAnYlxuICAgIHwgQm90aCBvZiAnYSAqICdiXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgdHlwZSBIZWFwID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgcG9wX21pbiA6ICdhIHQgLT4gKCdhICogJ2EgdCkgb3B0aW9uXG5lbmRcblxubGV0IG1lcmdlX2FsbCAobW9kdWxlIEhlYXAgOiBIZWFwKSBzZXFzIH5jb21wYXJlID1cbiAgbGV0IG1vZHVsZSBNZXJnZV9hbGxfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBoZWFwIDogKCdhICogJ2EgQmFzZS5TZXF1ZW5jZS50KSBIZWFwLnRcbiAgICAgIDsgbm90X3lldF9pbl9oZWFwIDogJ2EgQmFzZS5TZXF1ZW5jZS50IGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgY3JlYXRlID0gRmllbGRzLmNyZWF0ZVxuICBlbmRcbiAgaW5cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDpcbiAgICAgIChNZXJnZV9hbGxfc3RhdGUuY3JlYXRlXG4gICAgICAgICB+aGVhcDooSGVhcC5jcmVhdGUgfmNvbXBhcmU6KGZ1biBhIGIgLT4gQmFzZS5Db21wYXJhYmxlLmxpZnQgY29tcGFyZSB+Zjpmc3QgYSBiKSlcbiAgICAgICAgIH5ub3RfeWV0X2luX2hlYXA6c2VxcylcbiAgICB+ZjooZnVuIHsgaGVhcDsgbm90X3lldF9pbl9oZWFwIH0gLT5cbiAgICAgIG1hdGNoIG5vdF95ZXRfaW5faGVhcCB3aXRoXG4gICAgICB8IHNlcSA6OiBub3RfeWV0X2luX2hlYXAgLT5cbiAgICAgICAgKG1hdGNoIEV4cGVydC5uZXh0X3N0ZXAgc2VxIHdpdGhcbiAgICAgICAgIHwgRG9uZSAtPiBTa2lwIHsgc3RhdGUgPSB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9IH1cbiAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VxIH0gLT5cbiAgICAgICAgICAgU2tpcCB7IHN0YXRlID0geyBub3RfeWV0X2luX2hlYXAgPSBzZXEgOjogbm90X3lldF9pbl9oZWFwOyBoZWFwIH0gfVxuICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gZWx0OyBzdGF0ZSA9IHNlcSB9IC0+XG4gICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IHsgbm90X3lldF9pbl9oZWFwOyBoZWFwID0gSGVhcC5hZGQgaGVhcCAoZWx0LCBzZXEpIH0gfSlcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIEhlYXAucG9wX21pbiBoZWFwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBEb25lXG4gICAgICAgICB8IFNvbWUgKChlbHQsIHNlcSksIGhlYXApIC0+XG4gICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBlbHQ7IHN0YXRlID0geyBoZWFwOyBub3RfeWV0X2luX2hlYXAgPSBbIHNlcSBdIH0gfSkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFF1aWNrY2hlY2tfaW50Zlxub3BlbiBCYXNlX3F1aWNrY2hlY2tcbm1vZHVsZSBGbG9hdCA9IEJhc2UuRmxvYXRcbm1vZHVsZSBJbnQgPSBCYXNlLkludFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBPcHRpb24gPSBCYXNlLk9wdGlvblxubW9kdWxlIFNldCA9IEJhc2UuU2V0XG5tb2R1bGUgU2V4cCA9IEJhc2UuU2V4cFxuXG5tb2R1bGUgUG9seW1vcnBoaWNfdHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB2YXJpYW50MiA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdmFyaWFudDMgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdmFyaWFudDQgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB2YXJpYW50NSA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIHwgYEUgb2YgJ2VcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdmFyaWFudDYgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgfCBgRiBvZiAnZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IpIHR1cGxlMiA9ICdhICogJ2IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYykgdHVwbGUzID0gJ2EgKiAnYiAqICdjIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0dXBsZTQgPSAnYSAqICdiICogJ2MgKiAnZCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHR1cGxlNSA9ICdhICogJ2IgKiAnYyAqICdkICogJ2UgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSB0dXBsZTYgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlICogJ2ZcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgJ3IpIGZuMiA9ICdhIC0+ICdiIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsICdyKSBmbjMgPSAnYSAtPiAnYiAtPiAnYyAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsICdyKSBmbjQgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgLSdlLCAncikgZm41ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ3JcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgLSdmLCAncikgZm42ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ2YgLT4gJ3JcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbmVuZFxuXG5tb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPYnNlcnZlclxuXG4gIGxldCBvZl9oYXNoICh0eXBlIGEpIChtb2R1bGUgTSA6IERlcml2aW5nX2hhc2ggd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgb2ZfaGFzaF9mb2xkIE0uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNlxuICBsZXQgb2ZfcHJlZGljYXRlIGEgYiB+ZiA9IHVubWFwICh2YXJpYW50MiBhIGIpIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBgQSB4IGVsc2UgYEIgeClcbiAgbGV0IHNpbmdsZXRvbiAoKSA9IG9wYXF1ZVxuICBsZXQgZG91YmxldG9uIGYgPSBvZl9wcmVkaWNhdGUgKHNpbmdsZXRvbiAoKSkgKHNpbmdsZXRvbiAoKSkgfmZcbiAgbGV0IGVudW0gXyB+ZiA9IHVubWFwIGludCB+ZlxuXG4gIGxldCBvZl9saXN0IGxpc3QgfmVxdWFsID1cbiAgICBsZXQgZiB4ID1cbiAgICAgIG1hdGNoIExpc3QuZmluZGkgbGlzdCB+ZjooZnVuIF8geSAtPiBlcXVhbCB4IHkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlF1aWNrY2hlY2suT2JzZXJ2ZXIub2ZfbGlzdDogdmFsdWUgbm90IGZvdW5kXCJcbiAgICAgIHwgU29tZSAoaSwgXykgLT4gaVxuICAgIGluXG4gICAgZW51bSAoTGlzdC5sZW5ndGggbGlzdCkgfmZcbiAgOztcblxuICBsZXQgb2ZfZnVuIGYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgKGYgKCkpIHggfnNpemUgfmhhc2gpXG5cbiAgbGV0IGNvbXBhcmlzb24gfmNvbXBhcmUgfmVxIH5sdCB+Z3QgPVxuICAgIHVubWFwXG4gICAgICAodmFyaWFudDMgbHQgKHNpbmdsZXRvbiAoKSkgZ3QpXG4gICAgICB+ZjooZnVuIHggLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlIHggZXEgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBgQSB4IGVsc2UgaWYgYyA+IDAgdGhlbiBgQyB4IGVsc2UgYEIgeClcbiAgOztcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJhdG9yXG4gIG9wZW4gTGV0X3N5bnRheFxuXG4gIGxldCBzaW5nbGV0b24gPSByZXR1cm5cblxuICBsZXQgZG91YmxldG9uIHggeSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGlmIFNwbGl0dGFibGVfcmFuZG9tLmJvb2wgcmFuZG9tIHRoZW4geCBlbHNlIHkpXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZiAoKSkgfnNpemUgfnJhbmRvbSlcblxuICBsZXQgb2Zfc2VxdWVuY2UgfnAgc2VxID1cbiAgICBpZiBGbG9hdC4oIDw9ICkgcCAwLiB8fCBGbG9hdC4oID4gKSBwIDEuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiR2VuZXJhdG9yLm9mX3NlcXVlbmNlOiBwcm9iYWJpbGl0eSBbJWZdIG91dCBvZiBib3VuZHNcIiBwKTtcbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5maW5pc2g6KGZ1biAoKSAtPiBmYWlsd2l0aCBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcmFuIG91dCBvZiB2YWx1ZXNcIilcbiAgICAgIH5mOihmdW4gKCkgeCB+ayAtPiB3ZWlnaHRlZF91bmlvbiBbIHAsIHNpbmdsZXRvbiB4OyAxLiAtLiBwLCBvZl9mdW4gayBdKVxuICA7O1xuXG4gIGxldCBnZW9tZXRyaWMgPSBHZW5lcmF0b3IuaW50X2dlb21ldHJpY1xuICBsZXQgc21hbGxfbm9uX25lZ2F0aXZlX2ludCA9IHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50XG4gIGxldCBzbWFsbF9wb3NpdGl2ZV9pbnQgPSBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnRcbiAgbGV0IGxpc3Rfd2l0aF9sZW5ndGggbGVuZ3RoIHQgPSBsaXN0X3dpdGhfbGVuZ3RoIHQgfmxlbmd0aFxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTZcbiAgbGV0IGZuMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMlxuICBsZXQgZm4zID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm4zXG4gIGxldCBmbjQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjRcbiAgbGV0IGZuNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNVxuICBsZXQgZm42ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm42XG5cbiAgbGV0IGNvbXBhcmVfZm4gZG9tID1cbiAgICBmbiBkb20gaW50ID4+fCBmdW4gZ2V0X2luZGV4IHggeSAtPiBbJWNvbXBhcmU6IGludF0gKGdldF9pbmRleCB4KSAoZ2V0X2luZGV4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsX2ZuIGRvbSA9IGNvbXBhcmVfZm4gZG9tID4+fCBmdW4gY21wIHggeSAtPiBJbnQuKCA9ICkgKGNtcCB4IHkpIDBcbmVuZFxuXG5tb2R1bGUgU2hyaW5rZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaHJpbmtlclxuXG4gIGxldCBlbXB0eSAoKSA9IGF0b21pY1xuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNlxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBHZW5lcmF0b3JcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBHZW5lcmF0b3JcbiAgZW5kXG5cbiAgaW5jbHVkZSBHZW5lcmF0b3IuTW9uYWRfaW5maXhcblxuICBsZXQgcmV0dXJuID0gR2VuZXJhdG9yLnJldHVyblxuZW5kXG5cbm1vZHVsZSBDb25maWd1cmUgKENvbmZpZyA6IFF1aWNrY2hlY2tfY29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIGxldCBub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG4gIGxldCByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2Ugbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0ciAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFslaGFzaDogc3RyaW5nXSBzdHIpXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc2VlZCBzZWVkIDogVGVzdC5Db25maWcuU2VlZC50ID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IE5vbmRldGVybWluaXN0aWNcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBEZXRlcm1pbmlzdGljIHN0cmluZ1xuICA7O1xuXG4gIGxldCBtYWtlX3Nocmlua19jb3VudCA9IGZ1bmN0aW9uXG4gICAgfCBgRXhoYXVzdGl2ZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBgTGltaXQgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgOiBUZXN0LkNvbmZpZy50ID1cbiAgICB7IHNlZWQgPSBtYWtlX3NlZWQgKE9wdGlvbi52YWx1ZSBzZWVkIH5kZWZhdWx0OmRlZmF1bHRfc2VlZClcbiAgICA7IHNpemVzID0gT3B0aW9uLnZhbHVlIHNpemVzIH5kZWZhdWx0OmRlZmF1bHRfc2l6ZXNcbiAgICA7IHRlc3RfY291bnQgPSBPcHRpb24udmFsdWUgdHJpYWxzIH5kZWZhdWx0OmRlZmF1bHRfdHJpYWxfY291bnRcbiAgICA7IHNocmlua19jb3VudCA9XG4gICAgICAgIG1ha2Vfc2hyaW5rX2NvdW50IChPcHRpb24udmFsdWUgc2hyaW5rX2F0dGVtcHRzIH5kZWZhdWx0OmRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzKVxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV90ZXN0X20gKHR5cGUgYSkgfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgOiAobW9kdWxlIFRlc3QuUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IE9wdGlvbi52YWx1ZSBzaHJpbmtlciB+ZGVmYXVsdDpTaHJpbmtlci5hdG9taWNcbiAgICAgIGxldCBzZXhwX29mX3QgPSBPcHRpb24udmFsdWUgc2V4cF9vZiB+ZGVmYXVsdDpbJXNleHBfb2Y6IF9dXG4gICAgZW5kXG4gICAgaW5cbiAgICAobW9kdWxlIE0pXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV92YWx1ZSA/KHNlZWQgPSBkZWZhdWx0X3NlZWQpID8oc2l6ZSA9IDMwKSBnZW4gPVxuICAgIGxldCByYW5kb20gPSByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkIGluXG4gICAgR2VuZXJhdG9yLmdlbmVyYXRlIGdlbiB+c2l6ZSB+cmFuZG9tXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV9zZXF1ZW5jZSA/c2VlZCA/c2l6ZXMgZ2VuID1cbiAgICBsZXQgY29uZmlnID1cbiAgICAgIG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzOihTb21lIEludC5tYXhfdmFsdWUpIH5zaHJpbmtfYXR0ZW1wdHM6Tm9uZVxuICAgIGluXG4gICAgbGV0IHJldHVybiA9IHJlZiBTZXF1ZW5jZS5lbXB0eSBpblxuICAgIFRlc3Qud2l0aF9zYW1wbGVfZXhuIH5jb25maWcgZ2VuIH5mOihmdW4gc2VxdWVuY2UgLT4gcmV0dXJuIDo9IHNlcXVlbmNlKTtcbiAgICAhcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGl0ZXIgP3NlZWQgP3NpemVzID90cmlhbHMgZ2VuIH5mID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0czpOb25lIGluXG4gICAgVGVzdC53aXRoX3NhbXBsZV9leG4gfmNvbmZpZyBnZW4gfmY6KGZ1biBzZXF1ZW5jZSAtPiBTZXF1ZW5jZS5pdGVyIHNlcXVlbmNlIH5mKVxuICA7O1xuXG4gIGxldCB0ZXN0ID9zZWVkID9zaXplcyA/dHJpYWxzID9zaHJpbmtlciA/c2hyaW5rX2F0dGVtcHRzID9zZXhwX29mID9leGFtcGxlcyBnZW4gfmYgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIGluXG4gICAgbGV0IHRlc3RfbSA9IG1ha2VfdGVzdF9tIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIGluXG4gICAgVGVzdC5ydW5fZXhuIH5jb25maWcgP2V4YW1wbGVzIH5mIHRlc3RfbVxuICA7O1xuXG4gIGxldCB0ZXN0X29yX2Vycm9yXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/dHJpYWxzXG4gICAgICAgID9zaHJpbmtlclxuICAgICAgICA/c2hyaW5rX2F0dGVtcHRzXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgID9leGFtcGxlc1xuICAgICAgICBnZW5cbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgaW5cbiAgICBsZXQgdGVzdF9tID0gbWFrZV90ZXN0X20gfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgaW5cbiAgICBUZXN0LnJ1biB+Y29uZmlnID9leGFtcGxlcyB+ZiB0ZXN0X21cbiAgOztcblxuICBsZXQgdGVzdF9kaXN0aW5jdF92YWx1ZXNcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH50cmlhbHNcbiAgICAgICAgfmRpc3RpbmN0X3ZhbHVlc1xuICAgICAgICB+Y29tcGFyZVxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGtleVxuXG4gICAgICBsZXQgKGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KSA9IGNvbXBhcmVcblxuICAgICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAgIG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgICB8IFNvbWUgc2V4cF9vZiAtPiBzZXhwX29mXG4gICAgICAgIHwgTm9uZSAtPiBzZXhwX29mX29wYXF1ZVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuICAgIGluXG4gICAgbGV0IGZhaWwgc2V0ID1cbiAgICAgIGxldCBleHBlY3RfY291bnQgPSBkaXN0aW5jdF92YWx1ZXMgaW5cbiAgICAgIGxldCBhY3R1YWxfY291bnQgPSBTZXQubGVuZ3RoIHNldCBpblxuICAgICAgbGV0IHZhbHVlcyA9XG4gICAgICAgIG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgc2V4cF9vZl9lbHQgLT4gU29tZSBbJXNleHAgKFNldC50b19saXN0IHNldCA6IGVsdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW5zdWZmaWNpZW50IGRpc3RpbmN0IHZhbHVlc1wiXG4gICAgICAgICAgICAodHJpYWxzIDogaW50KVxuICAgICAgICAgICAgKGV4cGVjdF9jb3VudCA6IGludClcbiAgICAgICAgICAgIChhY3R1YWxfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAodmFsdWVzIDogKFNleHAudCBvcHRpb25bQHNleHAub3B0aW9uXSkpXVxuICAgIGluXG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBsZXQgc2V0ID0gcmVmIChTZXQuZW1wdHkgKG1vZHVsZSBNKSkgaW5cbiAgICAgIGl0ZXIgP3NlZWQgP3NpemVzIH50cmlhbHMgZ2VuIH5mOihmdW4gZWx0IC0+XG4gICAgICAgIHNldCA6PSBTZXQuYWRkICFzZXQgZWx0O1xuICAgICAgICBpZiBTZXQubGVuZ3RoICFzZXQgPj0gZGlzdGluY3RfdmFsdWVzIHRoZW4gci5yZXR1cm4gKCkpO1xuICAgICAgZmFpbCAhc2V0KVxuICA7O1xuXG4gIGxldCB0ZXN0X2Nhbl9nZW5lcmF0ZVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgPyh0cmlhbHMgPSBkZWZhdWx0X2Nhbl9nZW5lcmF0ZV90cmlhbF9jb3VudClcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCByID0gcmVmIFtdIGluXG4gICAgbGV0IGZfYW5kX2VucXVldWUgcmV0dXJuIHggPSBpZiBmIHggdGhlbiByZXR1cm4gYENhbl9nZW5lcmF0ZSBlbHNlIHIgOj0geCA6OiAhciBpblxuICAgIG1hdGNoXG4gICAgICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHJldHVybiAtPlxuICAgICAgICBpdGVyID9zZWVkID9zaXplcyB+dHJpYWxzIGdlbiB+ZjooZl9hbmRfZW5xdWV1ZSByZXR1cm4ucmV0dXJuKTtcbiAgICAgICAgYENhbm5vdF9nZW5lcmF0ZSlcbiAgICB3aXRoXG4gICAgfCBgQ2FuX2dlbmVyYXRlIC0+ICgpXG4gICAgfCBgQ2Fubm90X2dlbmVyYXRlIC0+XG4gICAgICAobWF0Y2ggc2V4cF9vZiB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2Fubm90IGdlbmVyYXRlXCJcbiAgICAgICB8IFNvbWUgc2V4cF9vZl92YWx1ZSAtPlxuICAgICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJjYW5ub3QgZ2VuZXJhdGVcIiB+YXR0ZW1wdHM6KCFyIDogdmFsdWUgbGlzdCldKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQ29uZmlndXJlIChzdHJ1Y3RcbiAgICBsZXQgZGVmYXVsdF9zZWVkID0gYERldGVybWluaXN0aWMgXCJhbiBhcmJpdHJhcnkgYnV0IGRldGVybWluaXN0aWMgc3RyaW5nXCJcblxuICAgIGxldCBkZWZhdWx0X3RyaWFsX2NvdW50ID1cbiAgICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgfCBXNjQgLT4gMTBfMDAwXG4gICAgICB8IFczMiAtPiAxXzAwMFxuICAgIDs7XG5cbiAgICBsZXQgZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQgPSAxMF8wMDBcbiAgICBsZXQgZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMgPSBgTGltaXQgMTAwMFxuXG4gICAgbGV0IGRlZmF1bHRfc2l6ZXMgPVxuICAgICAgU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFMxID0gUzFcbm1vZHVsZSB0eXBlIFMyID0gUzJcbm1vZHVsZSB0eXBlIFNfaW50ID0gU19pbnRcbm1vZHVsZSB0eXBlIFNfcmFuZ2UgPSBTX3JhbmdlXG5cbnR5cGUgbm9ucmVjIHNlZWQgPSBzZWVkXG50eXBlIG5vbnJlYyBzaHJpbmtfYXR0ZW1wdHMgPSBzaHJpbmtfYXR0ZW1wdHNcblxubW9kdWxlIHR5cGUgUXVpY2tjaGVja19jb25maWcgPSBRdWlja2NoZWNrX2NvbmZpZ1xubW9kdWxlIHR5cGUgUXVpY2tjaGVja19jb25maWd1cmVkID0gUXVpY2tjaGVja19jb25maWd1cmVkXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gUXVpY2tjaGVja2FibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBDb252ID0gQ29udlxubW9kdWxlIHR5cGUgQ29udl9maWx0ZXJlZCA9IENvbnZfZmlsdGVyZWRcbm1vZHVsZSB0eXBlIENvbnYxID0gQ29udjFcbm1vZHVsZSB0eXBlIENvbnZfZmlsdGVyZWQxID0gQ29udl9maWx0ZXJlZDFcbm1vZHVsZSB0eXBlIFMgPSBRdWlja2NoZWNrLlNcbm1vZHVsZSB0eXBlIFMxID0gUXVpY2tjaGVjay5TMVxubW9kdWxlIHR5cGUgUzIgPSBRdWlja2NoZWNrLlMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFF1aWNrY2hlY2suU19pbnRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnYgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDogUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPVxuc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZTFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnYxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSlcbiAgICAgIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZDFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EpXG4gICAgICB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuIiwiaW5jbHVkZSBCYXNlLk9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cblxubGV0IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IGkgPSBpZiBpIDwgMCB0aGVuIGkgKyBsZW5ndGhfZnVuIHQgZWxzZSBpXG5cbmxldCBzbGljZSB+bGVuZ3RoX2Z1biB+c3ViX2Z1biB0IHN0YXJ0IHN0b3AgPVxuICBsZXQgc3RvcCA9IGlmIHN0b3AgPSAwIHRoZW4gbGVuZ3RoX2Z1biB0IGVsc2Ugc3RvcCBpblxuICBsZXQgcG9zID0gbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgc3RhcnQgaW5cbiAgbGV0IGxlbiA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0b3AgLSBwb3MgaW5cbiAgc3ViX2Z1biB0IH5wb3MgfmxlblxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5vcGVuIFBlcm1zLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQmFzZS5BcnJheVxubW9kdWxlIENvcmVfc2VxdWVuY2UgPSBTZXF1ZW5jZVxuXG5pbmNsdWRlIChcbiAgQmFzZS5BcnJheSA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGdsb2JhbGl6ZSwgc2V4cF9ncmFtbWFyXVxuICBlbmQpXG5cbnR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxubW9kdWxlIFByaXZhdGUgPSBCYXNlLkFycmF5LlByaXZhdGVcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkFycmF5XG5cbiAgbGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbiAgbGV0IHNsaWNlIHQgc3RhcnQgc3RvcCA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIHQgc3RhcnQgc3RvcFxuICA7O1xuXG4gIGxldCBuZ2V0IHQgaSA9IHQuKG5vcm1hbGl6ZSB0IGkpXG4gIGxldCBuc2V0IHQgaSB2ID0gdC4obm9ybWFsaXplIHQgaSkgPC0gdlxuXG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIG9wZW4gQmFzZS5BcnJheVxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgc2V0ID0gc2V0XG4gIGVuZFxuXG4gICgqIFNlZSBPQ2FtbCBwZXJmIG5vdGVzIGZvciB3aHkgdGhlc2UgYXJyYXkgYmxpdHMgYXJlIHNwZWNpYWwgY2FzZWQgLS0gaW4gcGFydGljdWxhcixcbiAgICAgdGhlIHNlY3Rpb24gZW50aXRsZWQgXCJGYXN0LCBTbG93IGFuZCBJbmNvcnJlY3QgQXJyYXkgYmxpdHNcIiBvZlxuICAgICBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMzAyMjAwMDAyMjkvaHR0cDovL2phbmVzdHJlZXQuZ2l0aHViLmNvbS9vY2FtbC1wZXJmLW5vdGVzLmh0bWwgKilcbiAgbW9kdWxlIEludCA9IHN0cnVjdFxuICAgIHR5cGUgdF8gPSBpbnQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSAoID0gKVxuICAgICAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gMSBlbHNlIDBcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDBcblxuICAgICAgICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcIlxuICAgICAgW0BAbm9hbGxvY11cbiAgICBlbmRcblxuICAgIGV4dGVybmFsIGdldCA6ICh0X1tAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldFxuICAgICAgOiAgKHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgICA6ICAodF9bQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICAgIDogICh0X1tAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgICAgIGxldCBlcXVhbCA9IEJhc2UuRmxvYXQuZXF1YWxcbiAgICAgICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuIDEuIGVsc2UgMC5cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDAuXG5cbiAgICAgICAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUGVybWlzc2lvbmVkID0gc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0XG5cbiAgaW5jbHVkZVxuICAgIEluZGV4ZWRfY29udGFpbmVyLlMxX3dpdGhfY3JlYXRvcnNfcGVybWlzc2lvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcblxuICBpbmNsdWRlIEJsaXQuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG4gIGluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCgnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gIGV4dGVybmFsIGdldFxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKCgnYSwgWz4gd3JpdGUgXSkgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgoJ2EsIFs+IHdyaXRlIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIHZhbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gKGZsb2F0LCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNyZWF0ZV9sb2NhbCA6IGxlbjppbnQgLT4gJ2EgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0W0Bsb2NhbF0pXG4gIHZhbCBpbml0IDogaW50IC0+IGY6KChpbnQgLT4gJ2EpW0Bsb2NhbF0pIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvcHlfbWF0cml4XG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBhcHBlbmQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29uY2F0IDogKCdhLCBbPiByZWFkIF0pIHQgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29weSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWxsIDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkaW5nX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG1hcGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgaXRlcmkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgZm9sZGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZGluZ19tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAnYWNjICogKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiAnYWNjXG5cbiAgdmFsIHNvcnRcbiAgICA6ICA/cG9zOmludFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gKCdhLCBbPiByZWFkX3dyaXRlIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICB2YWwgc3RhYmxlX3NvcnQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgdHJhbnNwb3NlXG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cblxuICB2YWwgdHJhbnNwb3NlX2V4blxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgbm9ybWFsaXplIDogKCdhLCBfKSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbmdldCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICgnYSBvcHRpb24sIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICB2YWwgaXRlcjJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGQyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYiAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9yX2FsbDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgZXhpc3RzMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gYm9vbFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHN3YXAgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gZjooKCdhIC0+ICdhKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcbiAgdmFsIGZpbmRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZGlfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYlxuXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSAqICdhKSBvcHRpb25cblxuICB2YWwgcmVkdWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+ICdhXG5cbiAgdmFsIHBlcm11dGVcbiAgICA6ICA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50XG4gICAgLT4gP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gdW5pdFxuXG4gIHZhbCByYW5kb21fZWxlbWVudCA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByYW5kb21fZWxlbWVudF9leG4gOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0IG9wdGlvblxuICB2YWwgemlwX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIHVuemlwIDogKCdhICogJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHNvcnRlZF9jb3B5XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGxhc3QgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gYm9vbFxuICB2YWwgdG9fc2VxdWVuY2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG4gIHZhbCB0b19zZXF1ZW5jZV9tdXRhYmxlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSBQZXJtaXNzaW9uZWQgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIG1vZHVsZSBJbnQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAtJ3Blcm1zIHQgPSAoaW50LCAncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBCbGl0LlNfcGVybWlzc2lvbnMgd2l0aCB0eXBlICdwZXJtcyB0IDo9ICdwZXJtcyB0XG5cbiAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgOiAgc3JjOihbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6KFs+IHdyaXRlIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcIlxuICAgIFtAQG5vYWxsb2NdXG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIC0ncGVybXMgdCA9IChmbG9hdCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgZ2V0XG4gICAgICA6ICAoWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXRcbiAgICAgIDogIChbPiB3cml0ZSBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGZsb2F0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICAgIDogIChbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBmbG9hdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgICAgOiAgKFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICA6ICBzcmM6KFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDooWz4gd3JpdGUgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XCJcbiAgICBbQEBub2FsbG9jXVxuICBlbmRcblxuICB2YWwgb2ZfYXJyYXlfaWQgOiAnYSBhcnJheSAtPiAoJ2EsIFs8IHJlYWRfd3JpdGUgXSkgdFxuICB2YWwgdG9fYXJyYXlfaWQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiAnYSBhcnJheVxuICB2YWwgdG9fc2VxdWVuY2VfaW1tdXRhYmxlIDogKCdhLCBbPiBpbW11dGFibGUgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgaW5jbHVkZSBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHR5cGVyZXBdXG5cbiAgbW9kdWxlIEludCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVC5JbnRcblxuICAgIHR5cGUgLSdwZXJtcyB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuRmxvYXRcblxuICAgIHR5cGUgLSdwZXJtcyB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICBsZXQgdG9fYXJyYXlfaWQgPSBGbi5pZFxuICBsZXQgb2ZfYXJyYXlfaWQgPSBGbi5pZFxuXG4gIGluY2x1ZGUgKFQgOiBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICBsZXQgdG9fYXJyYXkgPSBjb3B5XG4gIGxldCB0b19zZXF1ZW5jZV9pbW11dGFibGUgPSB0b19zZXF1ZW5jZV9tdXRhYmxlXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lci5TMV93aXRoX2NyZWF0b3JzIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBleHRlcm5hbCBsZW5ndGggOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogKCdhIHRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKCdhIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgnYSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfbG9jYWwgOiBsZW46aW50IC0+ICdhIC0+ICgnYSB0W0Bsb2NhbF0pXG4gIHZhbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gZmxvYXQgdFxuICB2YWwgaW5pdCA6IGludCAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICdhIHQgdFxuICB2YWwgY29weV9tYXRyaXggOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBhcHBlbmQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgY29uY2F0IDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGZpbGwgOiAnYSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG5cbiAgaW5jbHVkZSBCbGl0LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZvbGRpbmdfbWFwIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmb2xkX21hcCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSkgLT4gJ2FjYyAqICdiIHRcbiAgdmFsIG1hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGl0ZXJpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KChpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgdmFsIGZvbGRpbmdfbWFwaVxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdiIHRcblxuICB2YWwgZm9sZF9tYXBpXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICdiIHRcblxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSkgLT4gaW5pdDonYWNjIC0+ICdhY2NcbiAgdmFsIHNvcnQgOiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIHN0YWJsZV9zb3J0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBjb25jYXRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgY29uY2F0X21hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHBhcnRpdGlvbmlfdGYgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0IDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB0cmFuc3Bvc2UgOiAnYSB0IHQgLT4gJ2EgdCB0IG9wdGlvblxuICB2YWwgdHJhbnNwb3NlX2V4biA6ICdhIHQgdCAtPiAnYSB0IHRcbiAgdmFsIG5vcm1hbGl6ZSA6ICdhIHQgLT4gaW50IC0+IGludFxuICB2YWwgc2xpY2UgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgbmdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBuc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICdhIG9wdGlvbiB0IC0+ICdhIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBpdGVyMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooKCdhIC0+ICdiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIG1hcDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSkgLT4gJ2MgdFxuXG4gIHZhbCBmb2xkMl9leG5cbiAgICA6ICAnYSB0XG4gICAgLT4gJ2IgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdiIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBmb3JfYWxsMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooKCdhIC0+ICdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0czJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHRcbiAgdmFsIHN3YXAgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgcmV2X2lucGxhY2UgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdF9yZXYgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcbiAgdmFsIGZpbmRpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBmaW5kaV9leG4gOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG5cbiAgdmFsIGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlXG4gICAgOiAgJ2EgdFxuICAgIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIHJlZHVjZSA6ICdhIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAnYSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIHBlcm11dGUgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ID9wb3M6aW50IC0+ID9sZW46aW50IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByYW5kb21fZWxlbWVudF9leG4gOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICdhIHQgLT4gJ2FcbiAgdmFsIHppcCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHVuemlwIDogKCdhICogJ2IpIHQgLT4gJ2EgdCAqICdiIHRcbiAgdmFsIHNvcnRlZF9jb3B5IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBsYXN0IDogJ2EgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbiAgdmFsIHRvX3NlcXVlbmNlX211dGFibGUgOiAnYSB0IC0+ICdhIENvcmVfc2VxdWVuY2UudFxuZW5kXG5cbmluY2x1ZGUgKFQgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIGFycmF5KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuSW50XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuRmxvYXRcblxuICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIF8gKE0gOiBTKSA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtKSB0X1xuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtKSB0IDo9ICgnYSwgJ3Blcm0pIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF8gPSAnYSB0XG5lbmRcblxubW9kdWxlIF8gKE0gOiBQZXJtaXNzaW9uZWQpIDogc2lnXG4gIHR5cGUgJ2EgdF9cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdF9cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlICdhIHRfID0gKCdhLCByZWFkX3dyaXRlKSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVHlwZXJlcF9saWIuU3RkXG5pbmNsdWRlIEJhc2UuTGlzdFxuXG50eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzc29jXG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhICogJ2IpIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCBjb21wYXJlICh0eXBlIGEgYikgY29tcGFyZV9hIGNvbXBhcmVfYiA9IFslY29tcGFyZTogKGEgKiBiKSBsaXN0XVxuZW5kXG5cbmxldCB0b19zdHJpbmcgfmYgdCA9XG4gIFNleHBsaWIuU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIHggLT4gU2V4cGxpYi5TZXhwLkF0b20geCkgKG1hcCB0IH5mKSlcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdFxubGV0IGdlbl9ub25fZW1wdHkgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3Rfbm9uX2VtcHR5XG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuZ3RoIHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X3dpdGhfbGVuZ3RoIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5sZW5ndGhcbjs7XG5cbmxldCBnZW5fZmlsdGVyZWQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RfZmlsdGVyZWRcbmxldCBnZW5fcGVybXV0YXRpb25zID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X3Blcm11dGF0aW9uc1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubGlzdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubGlzdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEhhc2h0YmxfaW50ZlxubW9kdWxlIEhhc2hhYmxlID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBIYXNodGJsX2ludGYuTWVyZ2VfaW50b19hY3Rpb25cbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgQ3JlYXRvcnMgPSBIYXNodGJsLkNyZWF0b3JzXG5cbmluY2x1ZGUgKFxuICBIYXNodGJsIDpcbiAgc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEJhc2UuSGFzaHRibC5TX3dpdGhvdXRfc3VibW9kdWxlcyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZFxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIH5nZXRfZGF0YVxuICAgICAgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXBcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICB+Z2V0X2RhdGFcbiAgICAgIH5jb21iaW5lXG4gICAgICBsXG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZSB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfc3RhYmxlID0gU19zdGFibGUgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBLZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBLZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgS2V5X3N0YWJsZSA9IEtleV9zdGFibGVcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsLlBvbHlcblxuICBsZXQgdmFsaWRhdGUgPSB2YWxpZGF0ZVxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICAgICAgdHlwZSAoJ2EsICdiKSBlbCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZjNlNDQ1Yy00OTkyLTExZTYtYTI3OS0zNzAzYmUzMTFlN2JcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbHdpdGggXCJDb3JlX2hhc2h0YmwuYmluX3JlYWRfdF86IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5cbiAgdHlwZSBrZXkgPSBULktleS50XG4gIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSB0ID0gKFQuS2V5LnQsICdhKSBoYXNodGJsXG4gIHR5cGUgJ2Ega2V5XyA9IFQuS2V5LnRcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuS2V5LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSAoXG4gICAgSGFzaHRibCA6XG4gICAgc2lnXG4gICAgICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBoYXNodGJsXG4gICAgZW5kKVxuXG4gIGxldCBlcXVhbCA9IEhhc2h0YmwuZXF1YWxcbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IHQgPSBpbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9rZXkgdFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gUG9seS5zZXhwX29mX3QgVC5LZXkuc2V4cF9vZl90IHNleHBfb2ZfdiB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFQuS2V5XG4gICAgICAgIGluY2x1ZGUgS2V5J1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gS2V5LnQgKiAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjhmYWJhYjBhLTQ5OTItMTFlNi04Y2NhLTliYTJjNDY4NmQ5ZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNodGJsXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBrZXksIGRhdGEgPSBuZXh0ICgpIGluXG4gICAgICAgICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJIYXNodGJsLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBLZXkudF1cbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gIHN0cnVjdFxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgaGFzaHRibCBpcyByZWxpZWQgb24gYnkgc3RhYmxlIG1vZHVsZXNcbiAgICAgICAoZS5nLiBIYXNodGFibGUuU3RhYmxlKSBhbmQgaXMgdGhlcmVmb3JlIGFzc3VtZWQgdG8gYmUgc3RhYmxlLiAgU28sIGlmIHRoZSBrZXkgYW5kXG4gICAgICAgZGF0YSBjYW4gcHJvdmlkZSBhIHN0YWJsZSB3aXRuZXNzZXMsIHRoZW4gd2UgY2FuIHNhZmVseSB0aGUgaGFzaHRibCBpcyBhbHNvXG4gICAgICAgc3RhYmxlLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAodHlwZSBkYXRhKSAoX2RhdGFfc3RhYmxlX3dpdG5lc3MgOiBkYXRhIFN0YWJsZV93aXRuZXNzLnQpXG4gICAgICA6IGRhdGEgdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICA9XG4gICAgICBsZXQgKF8gOiBrZXkgU3RhYmxlX3dpdG5lc3MudCkgPSBLZXknLnN0YWJsZV93aXRuZXNzIGluXG4gICAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9zdGFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgbGV0IGhhc2hhYmxlID1cbiAgICAgIHsgSGFzaGFibGUuaGFzaCA9IEtleS5oYXNoOyBjb21wYXJlID0gS2V5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IEtleS5zZXhwX29mX3QgfVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKEtleSA6IEtleSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2Vfc3RhYmxlIChLZXkgOiBLZXlfc3RhYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZSAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleSlcbmVuZFxuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTVxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIEZvcl9kZXJpdmluZyA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ID0gc3RydWN0XG4gIGluY2x1ZGUgKEhhc2h0YmwgOiBIYXNodGJsLkZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KVxuXG4gIG1vZHVsZSB0eXBlIE1fcXVpY2tjaGVjayA9IE1fcXVpY2tjaGVja1xuXG4gIGxldCBvZl9hbGlzdF9vcHRpb24gbSBhbGlzdCA9IFJlc3VsdC5vayAob2ZfYWxpc3Rfb3JfZXJyb3IgbSBhbGlzdClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IChLZXkudCAqIGRhdGEpIExpc3QudF1cbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwIH5mOihvZl9hbGlzdF9vcHRpb24gKG1vZHVsZSBLZXkpKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19vYnNlcnZlcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5vYnNlcnZlcjogKEtleS50ICogZGF0YSkgTGlzdC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2FsaXN0XG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX3Nocmlua2VyX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLnNocmlua2VyOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdXG4gICAgfD4gUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICAgICB+Zjoob2ZfYWxpc3Rfb3B0aW9uIChtb2R1bGUgS2V5KSlcbiAgICAgICAgIH5mX2ludmVyc2U6dG9fYWxpc3RcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5sZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoX3NldF9pbnRmXG5pbmNsdWRlIEJhc2UuSGFzaF9zZXRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGUgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFNfc3RhYmxlID0gU19zdGFibGUgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEhhc2h0YmwuS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBFbHQgPSBIYXNodGJsLktleVxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBIYXNodGJsLktleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBFbHRfc3RhYmxlID0gSGFzaHRibC5LZXlfc3RhYmxlXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X3BsYWluXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBlbHQgPSBULkVsdC50XG4gIHR5cGUgbm9ucmVjIHQgPSBlbHQgdFxuXG4gIGxldCBlcXVhbCA9IGVxdWFsXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULkVsdC50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gUG9seS5zZXhwX29mX3QgVC5FbHQuc2V4cF9vZl90IHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gICAgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBULkVsdFxuICAgICAgICBpbmNsdWRlIFhcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgdHlwZSBlbCA9IEVsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYWQzODE2NzItNDk5Mi0xMWU2LTllMzYtYjc2ZGM4Y2Q0NjZmXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2hfc2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCB2ID0gbmV4dCAoKSBpblxuICAgICAgICAgIGFkZCB0IHZcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gIHN0cnVjdFxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgaGFzaF9zZXQgaXMgdXNlZCBpbiB0aGUgc3RhYmxlIG1vZHVsZXMgYmVsb3csIHNvIGl0J3NcbiAgICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGVsdCBpcyBzdGFibGUpIC4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgbGV0IChfIDogZWx0IFN0YWJsZV93aXRuZXNzLnQpID0gWC5zdGFibGVfd2l0bmVzcyBpblxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0XG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULkVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2Vfc3RhYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X3N0YWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEVsdCA6IEVsdF9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBFbHQgPSBFbHRcblxuICAgIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEVsdCA6IEVsdF9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZSAoRWx0IDogRWx0X3N0YWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGUgKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChFbHQpXG5lbmRcblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5lbmRcblxubGV0IGhhc2hhYmxlID0gUHJpdmF0ZS5oYXNoYWJsZVxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+Zjoob2ZfbGlzdCAobW9kdWxlIEtleSkpXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLm9ic2VydmVyOiBLZXkudCBMaXN0MC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2xpc3Rcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2suc2hyaW5rZXI6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suU2hyaW5rZXIubWFwIH5mOihvZl9saXN0IChtb2R1bGUgS2V5KSkgfmZfaW52ZXJzZTp0b19saXN0XG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgaW50ZXJmYWNlcyB1c2VkIGluIHt7IU1hcH1bTWFwXX0uIFNlZSB0aG9zZSBkb2NzIGZvciBhIGRlc2NyaXB0aW9uXG4gICAgb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezEsMiwzLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW01hcF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMzXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5tb2R1bGUgTWFwID0gQmFzZS5NYXBcbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBNYXAuT3JfZHVwbGljYXRlXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gTWFwLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gTWFwLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFRyZWUgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXkgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGVfaGFzaGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgS2V5X2Jpbl9pbyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcbiAgZW5kXG5cbiAgdHlwZSAoJ3QsICdjKSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ3QgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2MpXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzX2dlbmVyaWNcblxuICB2YWwga2V5X3NldFxuICAgIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gKCdrIGtleSwgJ2NtcCBjbXApIEJhc2UuU2V0LnQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAndiBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAoJ2sga2V5ICogJ3YpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2sga2V5IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnayBrZXkgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaHRibF9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YpIEhhc2h0YmwudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbU2V0LnRdLiAqKVxuICB2YWwgb2Zfa2V5X3NldFxuICAgIDogICgnayBrZXksICdjbXAgY21wKSBCYXNlLlNldC50XG4gICAgLT4gZjooKCdrIGtleSAtPiAndilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdhIGNtcFxuICB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX3BsYWluX3RyZWUgKEtleSA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gJ2IgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICdiIHRcbiAgICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gS2V5LnRcbiAgICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChLIDogc2lnXG4gICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgICAgZW5kXG4gICAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICAgIHR5cGUgXyB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSArJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIE1hcC50XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICdiIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKEtleS50LCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gICAgd2l0aCB0eXBlICdrIGtleSA6PSBLZXkudFxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBCaW5hYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChLZXkgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogIEtleS50IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBLZXkudCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFNfcGxhaW4gd2l0aCBtb2R1bGUgS2V5IDo9IEtleVxuICBpbmNsdWRlIFNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgUyB3aXRoIG1vZHVsZSBLZXkgOj0gS2V5XG4gIGluY2x1ZGUgQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5NYXAuRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSBNID0gQmFzZS5NYXAuTVxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFsqYmluKl0gZnVuY3Rpb25zIHN1cHBvcnQgYmluLWlvIG9uIGJhc2Utc3R5bGUgbWFwcyxcbiAgICAgIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IGludCBNYXAuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2MpIEtleV9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50IC0+IEJpbl9wcm90LlNoYXBlLnRcblxuICB2YWwgYmluX3NpemVfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlNpemUuc2l6ZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5TaXplLnNpemVyXG5cbiAgdmFsIGJpbl93cml0ZV9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuV3JpdGUud3JpdGVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuV3JpdGUud3JpdGVyXG5cbiAgdmFsIGJpbl9yZWFkX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5SZWFkLnJlYWRlclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuUmVhZC5yZWFkZXJcbiAgICAtPiAoaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlIG1hcHMsXG4gICAgICBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBpbnQgTWFwLk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZ19zdGFibGUgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIHZhbCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgOiAgKG1vZHVsZSBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBTdGFibGVfd2l0bmVzcy50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBTdGFibGVfd2l0bmVzcy50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBNYXBfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IChpbnQsIHN0cmluZykgdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDAwNjc0YmU5ZmU4ZGZlOWU5YWQ0NzYwNjdkN2Q4MTAxIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IG1hcCAoaywgZGlmZikgfmYxIH5mMiA9XG4gICAgICAgIGxldCBrID0gZjEgayBpblxuICAgICAgICBsZXQgZGlmZiA9XG4gICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgfCBgTGVmdCB2IC0+IGBMZWZ0IChmMiB2KVxuICAgICAgICAgIHwgYFJpZ2h0IHYgLT4gYFJpZ2h0IChmMiB2KVxuICAgICAgICAgIHwgYFVuZXF1YWwgKHYxLCB2MikgLT4gYFVuZXF1YWwgKGYyIHYxLCBmMiB2MilcbiAgICAgICAgaW5cbiAgICAgICAgaywgZGlmZlxuICAgICAgOztcblxuICAgICAgbGV0IG1hcF9kYXRhIHQgfmYgPSBtYXAgdCB+ZjE6Rm4uaWQgfmYyOmZcblxuICAgICAgbGV0IGxlZnQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYExlZnQgeCB8IGBVbmVxdWFsICh4LCBfKSAtPiBTb21lIHhcbiAgICAgICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmlnaHQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gQmFzZS5NYXAuTWVyZ2VfZWxlbWVudFxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBrX2dlbiB2X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikga19nZW4gdl9nZW5cbiAgOztcblxuICBsZXQgb2JzX3RyZWUga19vYnMgdl9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubWFwX3RyZWUga19vYnMgdl9vYnNcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3Iga19zaHIgdl9zaHIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfc2hyIHZfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdF9tXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5tYXBfdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubWFwX3RcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXAuVXNpbmdfY29tcGFyYXRvclxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaTooSGFzaHRibC5pdGVyaSBoYXNodGJsKSB3aXRoXG4gICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5mYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIk1hcC5vZl9oYXNodGJsX2V4bjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgIGtleVxuICAgICAgICBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCB0cmVlX29mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIHRvX3RyZWUgKG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXQgfmNvbXBhcmF0b3IgdCA9XG4gICAgQmFzZS5TZXQuVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKExpc3QudG9fYXJyYXkgKGtleXMgdCkpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0ID0ga2V5X3NldCB+Y29tcGFyYXRvciAob2ZfdHJlZSB+Y29tcGFyYXRvciB0KVxuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPVxuICAgIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICAgIH5jb21wYXJhdG9yOihCYXNlLlNldC5jb21wYXJhdG9yIGtleV9zZXQpXG4gICAgICAoQXJyYXkubWFwIChCYXNlLlNldC50b19hcnJheSBrZXlfc2V0KSB+ZjooZnVuIGtleSAtPiBrZXksIGYga2V5KSlcbiAgOztcblxuICBsZXQgdHJlZV9vZl9rZXlfc2V0IGtleV9zZXQgfmYgPSB0b190cmVlIChvZl9rZXlfc2V0IGtleV9zZXQgfmYpXG5lbmRcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBNYXAuVXNpbmdfY29tcGFyYXRvciA6XG4gICAgICBNYXAuQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTWFwLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjKVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGsgdiA9IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2XG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgdCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpXG5lbmRcblxubGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpIHRcbmxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3IgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3JcbmxldCBjb21wYXJhdG9yX3MgPSBCYXNlLk1hcC5jb21wYXJhdG9yX3NcblxudHlwZSAnayBrZXkgPSAna1xudHlwZSAnYyBjbXAgPSAnY1xuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIE1hcFxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl90cmVlIG0gPSBNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG4gIGxldCB0b190cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbiAgaW5jbHVkZVxuICAgIE1hcC5DcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2EsICdiLCAnYykgTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBNYXAuV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2sga2V5XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYyBjbXBcblxuICB2YWwgdmFsaWRhdGVcbiAgICA6ICBuYW1lOignayAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcbmVuZClcblxubW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cblxubGV0IGZpbmRfb3JfZXJyb3IgdCBrZXkgPVxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBTb21lIGRhdGEgLT4gT2sgZGF0YVxuICB8IE5vbmUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwia2V5IG5vdCBmb3VuZFwiIH5fOihrZXkgOiBrZXkpXVxuOztcblxubGV0IG1lcmdlX3NrZXdlZCA9IE1hcC5tZXJnZV9za2V3ZWRcbmxldCBvZl9oYXNodGJsX2V4biBtIHQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIENyZWF0b3JzIChLZXkgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIHZhbCB0X29mX3NleHBcbiAgICA6ICAoQmFzZS5TZXhwLnQgLT4gJ2EgS2V5LnQpXG4gICAgLT4gKEJhc2UuU2V4cC50IC0+ICdiKVxuICAgIC0+IEJhc2UuU2V4cC50XG4gICAgLT4gKCdhLCAnYiwgXykgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcblxuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoS2V5KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBzaW5nbGV0b24gayB2ID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmZcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9hbGlzdF9leG4gYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfaGFzaHRibF9leG4gaGFzaHRibCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibFxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZlxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmlcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmlcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2tleV9zZXQga2V5X3NldCB+ZlxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gVXNpbmdfY29tcGFyYXRvci50cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvciB0XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbl9rIGdlbl92ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGdlbl9rIGdlbl92XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9TMSAoS2V5IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgb3BlbiBUcmVlXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBLZXkuY29tcGFyYXRvclxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgYSBiIGMgPSB0X29mX3NleHBfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiBhID0gc2luZ2xldG9uIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBvZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBvZl9zZXF1ZW5jZSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzID0gb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBvZl9zZXF1ZW5jZV9leG4gcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IG9mX3NlcXVlbmNlX211bHRpIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3QgYSA9IG9mX2FsaXN0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBvZl9hbGlzdF9vcl9lcnJvciBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IG9mX2FsaXN0X2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNodGJsX2V4biBhID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBvZl9hbGlzdF9tdWx0aSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgPSBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gb2ZfYWxpc3RfcmVkdWNlIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSA9IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGwgfmdldF9rZXkgPVxuICAgIG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsIH5nZXRfa2V5ID0gb2ZfbGlzdF93aXRoX2tleV9leG4gbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5ID0gb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5IH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBvZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2tleV9zZXRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IGludmFyaWFudHMgYSA9IGludmFyaWFudHMgYSB+Y29tcGFyYXRvclxuICBsZXQgaXNfZW1wdHkgYSA9IGlzX2VtcHR5IGFcbiAgbGV0IGxlbmd0aCBhID0gbGVuZ3RoIGFcbiAgbGV0IHNldCBhIH5rZXkgfmRhdGEgPSBzZXQgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGQgYSB+a2V5IH5kYXRhID0gYWRkIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX2V4biBhIH5rZXkgfmRhdGEgPSBhZGRfZXhuIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX211bHRpIGEgfmtleSB+ZGF0YSA9IGFkZF9tdWx0aSBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZV9tdWx0aSBhIGIgPSByZW1vdmVfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kX211bHRpIGEgYiA9IGZpbmRfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBjaGFuZ2UgYSBiIH5mID0gY2hhbmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgdXBkYXRlIGEgYiB+ZiA9IHVwZGF0ZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmRfZXhuIGEgYiA9IGZpbmRfZXhuIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgZmluZCBhIGIgPSBmaW5kIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlIGEgYiA9IHJlbW92ZSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IG1lbSBhIGIgPSBtZW0gYSBiIH5jb21wYXJhdG9yXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBpdGVyaV91bnRpbCA9IGl0ZXJpX3VudGlsXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBpdGVyMiBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBmb2xkX3VudGlsID0gZm9sZF91bnRpbFxuICBsZXQgZm9sZF9yaWdodCA9IGZvbGRfcmlnaHRcbiAgbGV0IGZvbGQyIGEgYiB+aW5pdCB+ZiA9IGZvbGQyIGEgYiB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX2tleXMgYSB+ZiA9IGZpbHRlcl9rZXlzIGEgfmZcbiAgbGV0IGZpbHRlciBhIH5mID0gZmlsdGVyIGEgfmZcbiAgbGV0IGZpbHRlcmkgYSB+ZiA9IGZpbHRlcmkgYSB+ZlxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gZmlsdGVyX21hcCBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwaSBhIH5mID0gZmlsdGVyX21hcGkgYSB+ZlxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXAgdCB+ZlxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbl90ZiB0IH5mXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID0gY29tYmluZV9lcnJvcnMgdCB+Y29tcGFyYXRvclxuICBsZXQgY29tcGFyZV9kaXJlY3QgYSBiIGMgPSBjb21wYXJlX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZXF1YWwgYSBiIGMgPSBlcXVhbCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgPSBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmNvbXBhcmF0b3JcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIGZvbGRfc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5mIH5pbml0IH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG1lcmdlIGEgYiB+ZiA9IG1lcmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWVyZ2Vfc2tld2VkIGEgYiB+Y29tYmluZSA9IG1lcmdlX3NrZXdlZCBhIGIgfmNvbWJpbmUgfmNvbXBhcmF0b3JcbiAgbGV0IG1pbl9lbHQgPSBtaW5fZWx0XG4gIGxldCBtaW5fZWx0X2V4biA9IG1pbl9lbHRfZXhuXG4gIGxldCBtYXhfZWx0ID0gbWF4X2VsdFxuICBsZXQgbWF4X2VsdF9leG4gPSBtYXhfZWx0X2V4blxuICBsZXQgZm9yX2FsbCA9IGZvcl9hbGxcbiAgbGV0IGZvcl9hbGxpID0gZm9yX2FsbGlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGNvdW50ID0gY291bnRcbiAgbGV0IGNvdW50aSA9IGNvdW50aVxuICBsZXQgc3BsaXQgYSBiID0gc3BsaXQgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBzcGxpdF9sZV9ndCBhIGIgPSBzcGxpdF9sZV9ndCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IHNwbGl0X2x0X2dlIGEgYiA9IHNwbGl0X2x0X2dlIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID0gYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJhdG9yXG5cbiAgbGV0IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJhdG9yXG4gIGxldCBjbG9zZXN0X2tleSBhIGIgYyA9IGNsb3Nlc3Rfa2V5IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBudGggPSBudGhcbiAgbGV0IG50aF9leG4gPSBudGhfZXhuXG4gIGxldCByYW5rIGEgYiA9IHJhbmsgYSBiIH5jb21wYXJhdG9yXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3IgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyYXZlcnNhbHMgPSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEpXG5cbiAgICBsZXQgbWFwaSA9IFRyYXZlcnNhbHMubWFwaVxuICAgIGxldCBmaWx0ZXJfbWFwaSA9IFRyYXZlcnNhbHMuZmlsdGVyX21hcGlcbiAgZW5kXG5cbiAgbGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldF9vZl90cmVlIH5jb21wYXJhdG9yIHRcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBtYXBfa2V5cyB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IG1hcF9rZXlzX2V4biB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gdHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3IgfmNvbXBhcmF0b3IgdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoS2V5X1MxKVxuXG4gIHR5cGUgKyd2IHQgPSAoS2V5LnQsICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IG1hcCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvciBpblxuICBpZiBpbnZhcmlhbnRzIG1hcFxuICB0aGVuIG1hcFxuICBlbHNlIChcbiAgICAoKiBUaGUgaW52YXJpYW50cyBhcmUgYnJva2VuLCBidXQgd2UgY2FuIHN0aWxsIHRyYXZlcnNlIHRoZSBzdHJ1Y3R1cmUuICopXG4gICAgbWF0Y2ggVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmk6KGl0ZXJpIG1hcCkgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF9rZXkgLT4gZmFpbHdpdGggXCJNYXAuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gbWFwXCIpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBpbmNsdWRlIENyZWF0b3JzIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgbWFwID0gKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2ssICd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgOztcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjdkN2IxYTAtNDk5Mi0xMWU2LThhMzItYmJiMjIxZmEwMjVjXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgVHJlZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV90cmVlX1MxIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgICB0eXBlICgnaywgKyd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IEtleV9wbGFpblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IEtleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBLZXlfaGFzaGFibGVcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gS2V5X2JpbmFibGVfaGFzaGFibGVcbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBLZXlfYmluX2lvID0gS2V5X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEtleSA6IEtleV9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgJ3YgZWwgPSBLZXkudCAqICd2IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBfID0gYmluX2VsXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZGZiMzAwZjgtNDk5Mi0xMWU2LTljMTUtNzNhMmFjNmI4MTVjXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTWFwXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOktleS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIG1hcCBpcyB1c2VkIGluIHRoZSBzdGFibGUgbW9kdWxlcyBiZWxvdywgc28gaXQnc1xuICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGtleSBhbmQgZGF0YSBhcmUgc3RhYmxlKSAuICopXG4gIGxldCBzdGFibGVfd2l0bmVzcyAodHlwZSBkYXRhKSAoX2RhdGFfc3RhYmxlX3dpdG5lc3MgOiBkYXRhIFN0YWJsZV93aXRuZXNzLnQpXG4gICAgOiAoS2V5LnQsIGRhdGEsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHQgU3RhYmxlX3dpdG5lc3MudFxuICAgID1cbiAgICBsZXQgKF8gOiBLZXkudCBTdGFibGVfd2l0bmVzcy50KSA9IEtleS5zdGFibGVfd2l0bmVzcyBpblxuICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgS2V5X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChLZXkpXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEtleV9TMSlcblxuICB0eXBlIGtleSA9IEtleS50XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgJ3YgdCA9IChrZXksICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBtYXBcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIGNtcHYgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjbXB2IHQxIHQyXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3QgS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG4gIDs7XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEtleScgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3QgKHR5cGUgYSkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgKHQgOiBhIHQpID1cbiAgICAgIFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBLZXknLmhhc2hfZm9sZF90IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcblxuICBtb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzc1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICAgIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5cbiAgbW9kdWxlIF8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWVcbiAgICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFwLk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X2dlbmVyYXRvclxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEtleSkgS2V5LnF1aWNrY2hlY2tfZ2VuZXJhdG9yIHZfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9vYnNlcnZlclxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEtleS5xdWlja2NoZWNrX29ic2VydmVyIHZfb2JzZXJ2ZXJcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X3Nocmlua2VyXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgS2V5LnF1aWNrY2hlY2tfc2hyaW5rZXIgdl9zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IE1hcC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChNYXAgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0KVxuZW5kXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIGxldCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFN0YWJsZV93aXRuZXNzX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5KSBpblxuICAgIE0uc3RhYmxlX3dpdG5lc3NcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfaGFzaHRibF9leG4gPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2ZfaGFzaHRibF9leG5cbiAgbGV0IGtleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZVxuICBsZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSB+Y29tcGFyYXRvciBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2ID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWUgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIH5jb21wYXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlIH5jb21wYXJhdG9yIGsgdlxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUga2V5XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IChrZXksICdhLCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAgICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdfc3RhYmxlXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleSlcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgU1xuXG4gICAgICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6ICdhIFN0YWJsZV93aXRuZXNzLnQgLT4gJ2EgdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEtleV9zdGFibGUgOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTWFrZSAoS2V5X3N0YWJsZSlcbiAgICAgICAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChLZXlfc3RhYmxlKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gU3ltbWV0cmljX2RpZmZfZWxlbWVudC5TdGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgQmFzZS5NYXliZV9ib3VuZC50ID1cbiAgICAgIHwgSW5jbCBvZiAnYVxuICAgICAgfCBFeGNsIG9mICdhXG4gICAgICB8IFVuYm91bmRlZFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBJbmNsIHggLT4gSW5jbCAoZiB4KVxuICAgICAgfCBFeGNsIHggLT4gRXhjbCAoZiB4KVxuICAgICAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBCYXNlLk1heWJlX2JvdW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5WMS50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cF1cblxubGV0IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgVW5ib3VuZGVkLCBVbmJvdW5kZWQgLT4gMFxuICB8IFVuYm91bmRlZCwgXyAtPlxuICAgIChtYXRjaCBzaWRlIHdpdGhcbiAgICAgfCBgTG93ZXIgLT4gLTFcbiAgICAgfCBgVXBwZXIgLT4gMSlcbiAgfCBfLCBVbmJvdW5kZWQgLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IDFcbiAgICAgfCBgVXBwZXIgLT4gLTEpXG4gIHwgSW5jbCBhMSwgSW5jbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBFeGNsIGExLCBFeGNsIGEyIC0+IGNvbXBhcmVfYSBhMSBhMlxuICB8IEluY2wgYTEsIEV4Y2wgYTIgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmVfYSBhMSBhMiBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICAgIHwgYExvd2VyIC0+IC0xXG4gICAgICB8IGBVcHBlciAtPiAxKVxuICAgIGVsc2UgY1xuICB8IEV4Y2wgYTEsIEluY2wgYTIgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmVfYSBhMSBhMiBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICAgIHwgYExvd2VyIC0+IDFcbiAgICAgIHwgYFVwcGVyIC0+IC0xKVxuICAgIGVsc2UgY1xuOztcblxubW9kdWxlIEFzX2xvd2VyX2JvdW5kID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBMb3dlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuXG5tb2R1bGUgQXNfdXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID0gY29tcGFyZV9vbmVfc2lkZWQgfnNpZGU6YFVwcGVyIGNvbXBhcmVfYSB0MSB0MlxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBpbnRlcmZhY2VzIHVzZWQgaW4ge3shQ29yZS5TZXR9W1NldF19LiBTZWUgdGhlXG4gICAgeyFNYXB9IGRvY3MgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezAsMSwyLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW1NldF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMyXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cbigqXG4gICBDUnMgYW5kIGNvbW1lbnRzIGFib3V0IFtTZXRdIGZ1bmN0aW9ucyBkbyBub3QgYmVsb25nIGluIHRoaXMgZmlsZS4gIFRoZXkgYmVsb25nIG5leHRcbiAgIHRvIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiBpbiBzZXQubWxpLlxuKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5tb2R1bGUgU2V0ID0gQmFzZS5TZXRcbm1vZHVsZSBUcmVlID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxubW9kdWxlIENvbnRhaW5lciA9IEJhc2UuQ29udGFpbmVyXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IFNldC5FbHRfcGxhaW5cblxubW9kdWxlIHR5cGUgRWx0ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIEVsdF9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuU2V0LkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuU2V0Lk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIHNldHMsIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IFNldC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5TaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYikgRWx0X2Jpbl9pby50XG4gICAgLT4gKGludCAtPiAoJ2EsICdiKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlXG4gICAgICBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIHZhbCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgOiAgKG1vZHVsZSBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgU3RhYmxlX3dpdG5lc3MudFxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBTZXQuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gU2V0LldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gU2V0LldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIHRvX21hcFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgZWx0IC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2EgZWx0LCAnYiwgJ2NtcCBjbXApIEJhc2UuTWFwLnRcbiAgICAgIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdhIGVsdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnYSBlbHQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNoX3NldCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKCdhLCAnY21wLCAoJ2EgZWx0LCBfKSBIYXNodGJsLnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbTWFwLnRdLiAqKVxuICB2YWwgb2ZfbWFwX2tleXMgOiAoJ2EgZWx0LCBfLCAnY21wIGNtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnYSBlbHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdlbHQsICdjbXApIHRcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdHJlZVxuICB0eXBlICdlbHQgZWx0XG4gIHR5cGUgJ2NtcCBjbXBcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIE1ha2VfU19wbGFpbl90cmVlIChFbHQgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSB0XG4gICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG4gICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgICBlbmRcbiAgICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSBTZXQudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gRWx0LnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEVsdCA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogRWx0LnQgUXVpY2tjaGVjay5PYnNlcnZlci50IC0+IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogRWx0LnQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgU19wbGFpbiB3aXRoIG1vZHVsZSBFbHQgOj0gRWx0XG4gIGluY2x1ZGUgU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFMgd2l0aCBtb2R1bGUgRWx0IDo9IEVsdFxuICBpbmNsdWRlIEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxub3BlbiBTZXRfaW50ZlxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gRWx0XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEVsdF9iaW5hYmxlXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikgZWx0X2dlblxuICA7O1xuXG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3QgZWx0X29ic1xuICBsZXQgb2JzX3RyZWUgZWx0X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXRfdHJlZSBlbHRfb2JzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGVsdF9zaHIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3QgZWx0X3NoclxuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBlbHRfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIG0gZWx0X2dlbiA9XG4gIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGVsdF9nZW5cbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB0b19tYXAgfmNvbXBhcmF0b3IgdCA9IE1hcC5vZl9rZXlfc2V0IChTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIHQgfmNvbXBhcmF0b3IpXG4gIGxldCBvZl9tYXBfa2V5cyBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZSAoTWFwLmtleV9zZXQgbSlcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgSGFzaF9zZXQuZm9sZCBoc2V0IH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIEhhc2h0YmwuZm9sZCBoYXNodGJsIH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB+a2V5OnggfmRhdGE6XyB0IC0+XG4gICAgICBhZGQgdCB4IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWVcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgU2V0LkFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgU2V0LnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50KVxuZW5kXG5cbnR5cGUgJ2EgY21wID0gJ2FcbnR5cGUgJ2EgZWx0ID0gJ2FcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBTZXRcblxuICBsZXQgb2ZfdHJlZSBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgbGV0IHNleHBfb2ZfdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdFxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTZXQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTZXQuQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdhLCAnYiwgJ2MpIFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgU2V0LldpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIG1vZHVsZSBOYW1lZCA9IFNldC5OYW1lZFxuZW5kKVxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIFNldC5Vc2luZ19jb21wYXJhdG9yXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgVHJlZSA6PSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlKVxuXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxuXG4gIGxldCBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoc2V0ID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2hfc2V0IGhzZXQgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsIH5jb21wYXJhdG9yKVxuICA7O1xuZW5kXG5cbmxldCB0b19tYXAgPSBNYXAub2Zfa2V5X3NldFxubGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbmxldCBoYXNoX2ZvbGRfZGlyZWN0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0XG5sZXQgY29tcGFyYXRvcl9zID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yX3NcbmxldCBjb21wYXJhdG9yID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yXG5sZXQgb2ZfaGFzaF9zZXQgbSBoc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNoX3NldCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBoc2V0XG5cbmxldCBvZl9oYXNodGJsX2tleXMgbSBoYXNodGJsID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaGFzaHRibFxuOztcblxubW9kdWxlIENyZWF0b3JzIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICB0eXBlIG5vbnJlYyAoJ2EsICdjb21wYXJhdG9yKSB0XyA9ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWUgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICB0eXBlICdhIGVsdF8gPSAnYSBFbHQudFxuICB0eXBlICdhIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IChCYXNlLlNleHAudCAtPiAnYSBFbHQudCkgLT4gQmFzZS5TZXhwLnQgLT4gKCdhLCAnY29tcGFyYXRvcikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBfXG5lbmQgPSBzdHJ1Y3RcbiAgb3BlbiBVc2luZ19jb21wYXJhdG9yXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnY21wIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0gb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID0gb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSA9IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiBlID0gc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IHVuaW9uX2xpc3QgbCA9IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2ZfbGlzdCBsID0gb2ZfbGlzdCB+Y29tcGFyYXRvciBsXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2FycmF5IGEgPSBvZl9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyA9IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmZcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlIChUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGVsdFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IGVtcHR5ID0gVHJlZS5lbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gZSA9IFRyZWUuc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IG1hcCB0IH5mID0gVHJlZS5tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gVHJlZS5maWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZS5jb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MlxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlLmVxdWFsIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBvZl9saXN0IGwgPSBUcmVlLm9mX2xpc3QgbCB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFRyZWUub2Zfc2VxdWVuY2UgcyB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IFRyZWUub2ZfaGFzaF9zZXQgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGggPSBUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hcnJheSBhID0gVHJlZS5vZl9hcnJheSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPSBUcmVlLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBUcmVlLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBUcmVlLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJhdG9yXG4gIGxldCB1bmlvbl9saXN0IGwgPSBUcmVlLnVuaW9uX2xpc3QgbCB+Y29tcGFyYXRvclxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgPSBUcmVlLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHQgPSB0XG4gIGxldCBvZl9tYXBfa2V5cyA9IFRyZWUub2ZfbWFwX2tleXNcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIGVsdCB+Y29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfcGxhaW4gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgRWx0X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChFbHQpXG4gIGluY2x1ZGUgTWFrZV90cmVlX1MxIChFbHRfUzEpXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IFRyZWUuc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgWC50X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcjpFbHRfUzEuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiBpblxuICBpZiBpbnZhcmlhbnRzIHNldFxuICB0aGVuIHNldFxuICBlbHNlXG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKGZvbGQgc2V0IH5pbml0OihUcmVlLmVtcHR5IH5jb21wYXJhdG9yKSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICAgICAgIGlmIFRyZWUubWVtIGFjYyBlbHQgfmNvbXBhcmF0b3JcbiAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJTZXQuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gc2V0XCJcbiAgICAgICAgIGVsc2UgVHJlZS5hZGQgYWNjIGVsdCB+Y29tcGFyYXRvcikpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gQ29tcGFyYXRvci5Qb2x5XG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEVsdClcblxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgdCA9IHNleHBfb2ZfdCBzZXhwX29mX2sgWyVzZXhwX29mOiBfXSB0XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG4gIDs7XG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OGJjYzQ3OC00OTkyLTExZTYtYTk1ZC1mZjQ4MzFhY2Y0MTBcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuU2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIH5mOihmdW4ga2V5IC0+IGYga2V5KSB0XG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gICAgdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gVHJlZS5zZXhwX29mX3Qgc2V4cF9vZl9lbHQgWyVzZXhwX29mOiBfXSB0XG5cbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPVxuICAgICAgVHJlZS50X29mX3NleHBfZGlyZWN0IGVsdF9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGVcblxubW9kdWxlIEVsdF9iaW5faW8gPSBFbHRfYmluX2lvXG5cbm1vZHVsZSBQcm92aWRlX2Jpbl9pbyAoRWx0IDogRWx0X2Jpbl9pby5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgZWwgPSBFbHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjg5ODkyNzhlLTQ5OTItMTFlNi04ZjRhLTZiODk3NzZiMWU1M1wiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIH5mOihmdW4ga2V5IC0+IGYga2V5KSB0XG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHNldCBpcyB1c2VkIGluIHRoZSBzdGFibGUgbW9kdWxlcyBiZWxvdywgc28gaXQnc1xuICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGVsdCBpcyBzdGFibGUpLiAqKVxuICBsZXQgc3RhYmxlX3dpdG5lc3MgOiAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgbGV0IChfIDogRWx0LnQgU3RhYmxlX3dpdG5lc3MudCkgPSBFbHQuc3RhYmxlX3dpdG5lc3MgaW5cbiAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBFbHRcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHRfUzEpXG5cbiAgdHlwZSAoJ2EsICdiKSBzZXQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgc2V0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBFbHQudF9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoRWx0IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgRWx0Lmhhc2hfZm9sZF90IHN0YXRlIHRcblxuICAgIGxldCBoYXNoIHQgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChoYXNoX2ZvbGRfdCAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSkgdClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQnIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFbHRcbiAgICAgIGluY2x1ZGUgRWx0J1xuICAgIGVuZClcblxuICBtb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzc1xuICAgICAgKEVsdCcgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICAgIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFbHRcbiAgICAgIGluY2x1ZGUgRWx0J1xuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBxdWlja2NoZWNrX3Nocmlua2VyXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEVsdCA6IEVsdF9wbGFpbikgPSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChFbHRfc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHApXG4gIG1vZHVsZSBFbHQgPSBFbHRfc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbHQgOiBFbHQpID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChFbHRfYmluX3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X2Jpbl9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBTZXQuTVxuXG4gIGxldCBiaW5fc2hhcGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NoYXBlX3RcbiAgOztcblxuICBsZXQgYmluX3NpemVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NpemVfdFxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3dyaXRlX3RcbiAgOztcblxuICBsZXQgYmluX3JlYWRfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3JlYWRfdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX21fX3RfXyAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uX19iaW5fcmVhZF90X19cbiAgOztcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgRWx0KSBFbHQucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEVsdC5xdWlja2NoZWNrX29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19zaHJpbmtlciBFbHQucXVpY2tjaGVja19zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IFNldC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChTZXQgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdClcbmVuZFxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdCkgaW5cbiAgICBNLnN0YWJsZV93aXRuZXNzXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPSAoJ2EsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgZWx0XG4gICAgICB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSAoZWx0LCBlbHRfY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ19zdGFibGVcbiAgICBtb2R1bGUgTWFrZSAoRWx0IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0KVxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBTXG5cbiAgICAgICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEVsdF9zdGFibGUgOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zdGFibGUpXG4gICAgICAgIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0X3N0YWJsZSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxubW9kdWxlIEluZml4ID0gQmFzZS5Db21wYXJhYmxlLkluZml4XG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBCYXNlLkNvbXBhcmFibGUuQ29tcGFyaXNvbnNcblxubW9kdWxlIFZhbGlkYXRlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIGVuZCkgOiBWYWxpZGF0ZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYgPSBWYWxpZGF0ZVxuICBvcGVuIE1heWJlX2JvdW5kXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gQmFzZS5TZXhwLnRvX3N0cmluZyAoVC5zZXhwX29mX3QgdClcblxuICBsZXQgdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4IHQgPVxuICAgIFYuYm91bmRlZCB+bmFtZTp0b19zdHJpbmcgfmxvd2VyOm1pbiB+dXBwZXI6bWF4IH5jb21wYXJlOlQuY29tcGFyZSB0XG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPSB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXg6VW5ib3VuZGVkIHRcbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCB+bWF4IHQgPSB2YWxpZGF0ZV9ib3VuZCB+bWF4IH5taW46VW5ib3VuZGVkIHRcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVfd2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFYgPSBWYWxpZGF0ZSAoVClcbiAgaW5jbHVkZSBWXG5cbiAgKCogUHJlYWxsb2NhdGUgdGhlIGludGVyZXN0aW5nIGJvdW5kcyB0byBtaW5pbWl6ZSBhbGxvY2F0aW9uIGluIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgW3ZhbGlkYXRlXypdLiAqKVxuICBsZXQgZXhjbF96ZXJvID0gTWF5YmVfYm91bmQuRXhjbCBULnplcm9cbiAgbGV0IGluY2xfemVybyA9IE1heWJlX2JvdW5kLkluY2wgVC56ZXJvXG4gIGxldCB2YWxpZGF0ZV9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfbGJvdW5kIH5taW46ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfbGJvdW5kIH5taW46aW5jbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25lZ2F0aXZlIHQgPSB2YWxpZGF0ZV91Ym91bmQgfm1heDpleGNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbm9uX3Bvc2l0aXZlIHQgPSB2YWxpZGF0ZV91Ym91bmQgfm1heDppbmNsX3plcm8gdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlX3dpdGhfemVybyAoVClcbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuV2l0aF96ZXJvIChUKVxuZW5kXG5cbm1vZHVsZSBNYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgPVxuICBNYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBQb2x5IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuUG9seSAoVClcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG4gIGluY2x1ZGUgVmFsaWRhdGUgKEMpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gQ1xuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoQylcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpID1cbiAgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBjb21wYXJlID0gVC5jb21wYXJhdG9yLmNvbXBhcmVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBNXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEV4dGVuZF9iaW5hYmxlXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoVClcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEluaGVyaXQgKEMgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cbiAgZW5kKSAoVCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCBjb21wYXJlIHQgdCcgPSBDLmNvbXBhcmUgKFQuY29tcG9uZW50IHQpIChULmNvbXBvbmVudCB0JylcbiAgZW5kKVxuXG5pbmNsdWRlIChCYXNlLkNvbXBhcmFibGUgOiBXaXRoX2NvbXBhcmUpXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjb21wYXJhYmxlXG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBtb2R1bGUgTWFwIDpcbiAgICAgICAgTWFwLlN0YWJsZS5WMS5TXG4gICAgICAgIHdpdGggdHlwZSBrZXkgOj0gY29tcGFyYWJsZVxuICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBtb2R1bGUgU2V0IDpcbiAgICAgICAgU2V0LlN0YWJsZS5WMS5TXG4gICAgICAgIHdpdGggdHlwZSBlbHQgOj0gY29tcGFyYWJsZVxuICAgICAgICB3aXRoIHR5cGUgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChYIDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlLlYxLk1ha2UgKFgpXG4gICAgICBtb2R1bGUgU2V0ID0gU2V0LlN0YWJsZS5WMS5NYWtlIChYKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgdHlwZSBjb21wYXJhYmxlXG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbW9kdWxlIE1hcCA6XG4gICAgICAgICAgTWFwLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcbiAgICAgICAgICB3aXRoIHR5cGUga2V5IDo9IGNvbXBhcmFibGVcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIG1vZHVsZSBTZXQgOlxuICAgICAgICAgIFNldC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICAgICAgd2l0aCB0eXBlIGVsdCA6PSBjb21wYXJhYmxlXG4gICAgICAgICAgd2l0aCB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKFggOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoWClcbiAgICAgICAgbW9kdWxlIFNldCA9IFNldC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChYKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJpbmNsdWRlIExpc3QwICgqKiBAaW5saW5lICopXG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgc3RhZ2VkIHRvIGluZGljYXRlIHRoYXQgcmVhbCB3b3JrICh0aGUgZnVuY3RvciBhcHBsaWNhdGlvbikgdGFrZXNcbiAgIHBsYWNlIGFmdGVyIGEgcGFydGlhbCBhcHBsaWNhdGlvbi4gKilcbmxldCBzdGFibGVfZGVkdXBfc3RhZ2VkICh0eXBlIGEpIH4oY29tcGFyZSA6IGEgLT4gYSAtPiBpbnQpXG4gIDogKGEgbGlzdCAtPiBhIGxpc3QpIEJhc2UuU3RhZ2VkLnRcbiAgPVxuICBsZXQgbW9kdWxlIFNldCA9XG4gICAgU2V0Lk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcblxuICAgICAgKCogW3N0YWJsZV9kZWR1cF9saXN0XSBuZXZlciBjYWxscyB0aGVzZSAqKVxuICAgICAgbGV0IHRfb2Zfc2V4cCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBhc3NlcnQgZmFsc2VcbiAgICBlbmQpXG4gIGluXG4gIEJhc2UuU3RhZ2VkLnN0YWdlIFNldC5zdGFibGVfZGVkdXBfbGlzdFxuOztcblxubGV0IHppcF93aXRoX3JlbWFpbmRlciA9XG4gIGxldCByZWMgemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgYWNjIHhzIHlzID1cbiAgICBtYXRjaCB4cywgeXMgd2l0aFxuICAgIHwgW10sIFtdIC0+IHJldiBhY2MsIE5vbmVcbiAgICB8IGZzdCwgW10gLT4gcmV2IGFjYywgU29tZSAoRWl0aGVyLkZpcnN0IGZzdClcbiAgICB8IFtdLCBzbmQgLT4gcmV2IGFjYywgU29tZSAoRWl0aGVyLlNlY29uZCBzbmQpXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyICgoeCwgeSkgOjogYWNjKSB4cyB5c1xuICBpblxuICBmdW4geHMgeXMgLT4gemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgW10geHMgeXNcbjs7XG5cbnR5cGUgc2V4cF90aHVuayA9IHVuaXQgLT4gQmFzZS5TZXhwLnRcblxubGV0IHNleHBfb2Zfc2V4cF90aHVuayB4ID0geCAoKVxuXG5leGNlcHRpb24gRHVwbGljYXRlX2ZvdW5kIG9mIHNleHBfdGh1bmsgKiBCYXNlLlN0cmluZy50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBleG5faWZfZHVwIH5jb21wYXJlID8oY29udGV4dCA9IFwiZXhuX2lmX2R1cFwiKSB0IH50b19zZXhwID1cbiAgbWF0Y2ggZmluZF9hX2R1cCB+Y29tcGFyZSB0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkdXAgLT4gcmFpc2UgKER1cGxpY2F0ZV9mb3VuZCAoKGZ1biAoKSAtPiB0b19zZXhwIGR1cCksIGNvbnRleHQpKVxuOztcblxubGV0IHNsaWNlIGEgc3RhcnQgc3RvcCA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiBhIHN0YXJ0IHN0b3Bcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPSBMaXN0MC5zdGFibGVfd2l0bmVzcyBbQEBhbGVydCBcIi1mb3JfaW50ZXJuYWxfdXNlX29ubHlcIl1cbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvblxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5ub25lIH5zb21lIHQgPVxuICBsZXQgbW9kdWxlIFYgPSBWYWxpZGF0ZSBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFYubmFtZSBcIm5vbmVcIiAoVi5wcm90ZWN0IG5vbmUgKCkpXG4gIHwgU29tZSB4IC0+IFYubmFtZSBcInNvbWVcIiAoVi5wcm90ZWN0IHNvbWUgeClcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub3B0aW9uXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vcHRpb25cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm9wdGlvblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG5cbiAgICAoKiBbdW5zYWZlX3ZhbHVlXSBpcyBvbmx5IHNhZmUgdG8gY2FsbCB3aGVuIFtpc19ub25lXSByZXR1cm5zIFtmYWxzZV0uIFRvIGF2b2lkXG4gICAgICAgcmVwZWF0aW5nIHRoZSBbaXNfbm9uZV0gY2hlY2ssIHdlIGRlY2xhcmUgW1VuY2hlY2tlZF9zb21lXS4gW1VuY2hlY2tlZF9zb21lIHhdXG4gICAgICAgaGFzIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIGFzIFtTb21lIHhdLCBidXQgdGhlIHR5cGUgaGFzIG5vIFtOb25lXSBjbGF1c2UuXG5cbiAgICAgICBXZSBtYWtlIHN1cmUgYWxsIHRoaXMgd29ya3Mgd2l0aCB0ZXN0cyBvZiBbdW5zYWZlX3ZhbHVlXSBpbiB0ZXN0X29wdGlvbi5tbC5cblxuICAgICAgIFdlIHRyaWVkIHVzaW5nIFtPYmouZmllbGRdIGluc3RlYWQuIEl0IGdlbmVyYXRlcyBtdWNoIHdvcnNlIG5hdGl2ZSBjb2RlIGR1ZSB0b1xuICAgICAgIGZsb2F0IGFycmF5IHJlcHJlc2VudGF0aW9ucy4gKilcblxuICAgIG1vZHVsZSBVbmNoZWNrZWRfc29tZSA9IHN0cnVjdFxuICAgICAgKCogV2FybmluZyAzNyB0ZWxscyB1cyBbVW5jaGVja2VkX3NvbWVdIGlzIG5ldmVyIHVzZWQgYXMgYSBjb25zdHJ1Y3Rvci4gVGhpcyBpc1xuICAgICAgICAgaW50ZW50aW9uYWwsIHNvIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcuICopXG4gICAgICB0eXBlICdhIHQgPSBVbmNoZWNrZWRfc29tZSBvZiAnYSBbQEBvY2FtbC5ib3hlZF0gW0BAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuICAgIGVuZFxuXG4gICAgbGV0IHVuc2FmZV92YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgOiBhID1cbiAgICAgIGxldCAoVW5jaGVja2VkX3NvbWUgdmFsdWUpID0gKE9iai5tYWdpYyB0IDogYSBVbmNoZWNrZWRfc29tZS50KSBpblxuICAgICAgdmFsdWVcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBNTHRvbiBsaWJyYXJ5IHNldC9kaXNqb2ludC5mdW4sIHdoaWNoIGhhcyB0aGVcbiAgIGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlLlxuKilcbigqIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IEhlbnJ5IENlanRpbiwgTWF0dGhldyBGbHVldCwgU3VyZXNoXG4gKiAgICBKYWdhbm5hdGhhbiwgYW5kIFN0ZXBoZW4gV2Vla3MuXG4gKlxuICogTUx0b24gaXMgcmVsZWFzZWQgdW5kZXIgYSBCU0Qtc3R5bGUgbGljZW5zZS5cbiAqIFNlZSB0aGUgZmlsZSBNTHRvbi1MSUNFTlNFIGZvciBkZXRhaWxzLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbigqXG4gICB7dlxuICAgICAgICAgICBSb290XG4gICAgICAgICAgICAgfFxuICAgICAgICAgICBJbm5lclxuICAgICAgICAvIC4uIHwgLi4gXFxcbiAgICAgSW5uZXIgSW5uZXIgSW5uZXJcbiAgICAgIC98XFwgICAvfFxcICAgL3xcXFxuICAgICAgLi4uICAgLi4uICAgLi4uXG4gICB2fVxuXG4gICBXZSBjb25zdHJ1Y3QgdGhlIGBpbnZlcnRlZCcgdHJlZSBpbiB0aGUgTUwgcmVwcmVzZW50YXRpb24uXG4gICBUaGUgZGlyZWN0aW9uIG9mIHRoZSBlZGdlcyBpcyBVUFdBUkRTLlxuICAgU3RhcnRpbmcgd2l0aCBhbnkgWydhIHRdIHdlIGNhbiBzdGVwIGRpcmVjdGx5IHRvIGl0cyBwYXJlbnQuXG4gICBCdXQgd2UgY2FuJ3QgKGFuZCBkb24ndCBuZWVkIHRvKSBzdGFydCBmcm9tIHRoZSByb290IGFuZCBzdGVwIHRvIGl0cyBjaGlsZHJlbi5cbiopXG5cbigqXG4gICBbcmFua10gaXMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGRlcHRoIG9mIGFueSBub2RlIGluIHRoZSB1cC10cmVlLlxuXG4gICBJbWFnaW5lIGFuIHVubHVja3kgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBpbiB3aGljaCB5b3UgY3JlYXRlIE5cbiAgIGluZGl2aWR1YWwgW3RdLXZhbHVlcyBhbmQgdGhlbiB1bmlvbiB0aGVtIHRvZ2V0aGVyIGluIHN1Y2ggYSB3YXlcbiAgIHRoYXQgeW91IGFsd2F5cyBwaWNrIHRoZSByb290IG9mIGVhY2ggdHJlZSB0byB1bmlvbiB0b2dldGhlciwgc28gdGhhdFxuICAgbm8gcGF0aCBjb21wcmVzc2lvbiB0YWtlcyBwbGFjZS4gIElmIHlvdSBkb24ndCB0YWtlIGNhcmUgdG8gc29tZWhvd1xuICAgYmFsYW5jZSB0aGUgcmVzdWx0aW5nIHVwLXRyZWUsIGl0IGlzIHBvc3NpYmxlIHRoYXQgeW91IGVuZCB1cCB3aXRoIG9uZVxuICAgYmlnIGxvbmcgY2hhaW4gb2YgTiBsaW5rcywgYW5kIHRoZW4gY2FsbGluZyBbcmVwcmVzZW50YXRpdmVdIG9uIHRoZVxuICAgZGVlcGVzdCBub2RlIHRha2VzIFRoZXRhKE4pIHRpbWUuICBXaXRoIHRoZSBiYWxhbmNpbmcgc2NoZW1lIG9mIG5ldmVyXG4gICBpbmNyZWFzaW5nIHRoZSByYW5rIG9mIGEgbm9kZSB1bm5lY2Vzc2FyaWx5LCBpdCB3b3VsZCB0YWtlIE8obG9nIE4pLlxuKilcbnR5cGUgJ2Egcm9vdCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgbXV0YWJsZSByYW5rIDogaW50XG4gIH1cblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIG5vZGUgOiAnYSBub2RlIH1cblxuYW5kICdhIG5vZGUgPVxuICB8IElubmVyIG9mICdhIHRcbiAgKCogW0lubmVyIHhdIGlzIGEgbm9kZSB3aG9zZSBwYXJlbnQgaXMgW3hdLiAqKVxuICB8IFJvb3Qgb2YgJ2Egcm9vdFxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIGxldCByZWMgbG9vcCB0IGRlcHRoID1cbiAgICBtYXRjaCB0Lm5vZGUgd2l0aFxuICAgIHwgSW5uZXIgdCAtPiBsb29wIHQgKGRlcHRoICsgMSlcbiAgICB8IFJvb3QgciAtPiBhc3NlcnQgKGRlcHRoIDw9IHIucmFuaylcbiAgaW5cbiAgbG9vcCB0IDBcbjs7XG5cbmxldCBjcmVhdGUgdiA9IHsgbm9kZSA9IFJvb3QgeyB2YWx1ZSA9IHY7IHJhbmsgPSAwIH0gfVxuXG4oKiBpbnZhcmlhbnRzOlxuICAgW2lubmVyLm5vZGVdID0gW2lubmVyX25vZGVdID0gW0lubmVyIHRdLlxuICAgW2Rlc2NlbmRhbnRzXSBhcmUgdGhlIHByb3BlciBkZXNjZW5kYW50cyBvZiBbaW5uZXJdIHdlJ3ZlIHZpc2l0ZWQuXG4qKVxubGV0IHJlYyBjb21wcmVzcyB0IH5pbm5lcl9ub2RlIH5pbm5lciB+ZGVzY2VuZGFudHMgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIHQgaXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gICAgICAgUmUtcG9pbnQgYWxsIGRlc2NlbmRhbnRzIGRpcmVjdGx5IHRvIGl0IGJ5IHNldHRpbmcgdGhlbSB0byBbSW5uZXIgdF0uXG4gICAgICAgTm90ZTogd2UgZG9uJ3QgcmUtcG9pbnQgW2lubmVyXSBhcyBpdCBhbHJlYWR5IHBvaW50cyB0aGVyZS4gKilcbiAgICBMaXN0Lml0ZXIgZGVzY2VuZGFudHMgfmY6KGZ1biB0IC0+IHQubm9kZSA8LSBpbm5lcl9ub2RlKTtcbiAgICB0LCByXG4gIHwgSW5uZXIgdCcgYXMgbm9kZSAtPlxuICAgIGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOihpbm5lciA6OiBkZXNjZW5kYW50cylcbjs7XG5cbmxldCByZXByZXNlbnRhdGl2ZSB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT4gdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT4gY29tcHJlc3MgdCcgfmlubmVyX25vZGU6bm9kZSB+aW5uZXI6dCB+ZGVzY2VuZGFudHM6W11cbjs7XG5cbmxldCByb290IHQgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIGF2b2lkIHR1cGxlIGFsbG9jYXRpb24gaW4gdGhlIGZhc3QgcGF0aCAqKVxuICAgIHJcbiAgfCBfIC0+IHNuZCAocmVwcmVzZW50YXRpdmUgdClcbjs7XG5cbmxldCByYW5rIHQgPSAocm9vdCB0KS5yYW5rXG5sZXQgZ2V0IHQgPSAocm9vdCB0KS52YWx1ZVxubGV0IHNldCB0IHYgPSAocm9vdCB0KS52YWx1ZSA8LSB2XG5sZXQgc2FtZV9jbGFzcyB0MSB0MiA9IHBoeXNfZXF1YWwgKHJvb3QgdDEpIChyb290IHQyKVxuXG5sZXQgdW5pb24gdDEgdDIgPVxuICBsZXQgdDEsIHIxID0gcmVwcmVzZW50YXRpdmUgdDEgaW5cbiAgbGV0IHQyLCByMiA9IHJlcHJlc2VudGF0aXZlIHQyIGluXG4gIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSByMS5yYW5rIGluXG4gICAgbGV0IG4yID0gcjIucmFuayBpblxuICAgIGlmIG4xIDwgbjJcbiAgICB0aGVuIHQxLm5vZGUgPC0gSW5uZXIgdDJcbiAgICBlbHNlIChcbiAgICAgIHQyLm5vZGUgPC0gSW5uZXIgdDE7XG4gICAgICBpZiBuMSA9IG4yIHRoZW4gcjEucmFuayA8LSByMS5yYW5rICsgMSkpXG47O1xuXG5sZXQgaXNfY29tcHJlc3NlZCB0ID1cbiAgaW52YXJpYW50IGlnbm9yZSB0O1xuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgXyAtPiB0cnVlXG4gIHwgSW5uZXIgdCAtPlxuICAgIChtYXRjaCB0Lm5vZGUgd2l0aFxuICAgICB8IFJvb3QgXyAtPiB0cnVlXG4gICAgIHwgSW5uZXIgXyAtPiBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpc19jb21wcmVzc2VkID0gaXNfY29tcHJlc3NlZFxuICBsZXQgcmFuayA9IHJhbmtcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERvdWJseV9saW5rZWRfaW50ZlxuXG4oKiBJTlZBUklBTlQ6IFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhIGxpc3QgaXMgbXV0YXRlZCBkdXJpbmcgYSBwZW5kaW5nIGl0ZXJhdGlvbi5cblxuICAgVGhpcyBpbnZhcmlhbnQgaXMgZ3VhcmFudGVlZCBieSB0aGUgSGVhZGVyIGFuZCBFbHQgbW9kdWxlcyBpbiBjb25qdW5jdGlvbi4gIEFsbFxuICAgZG93bnN0cmVhbSBjb2RlIGluIHRoaXMgbW9kdWxlIG5lZWQgbm90IGJlIGNvbmNlcm5lZCB3aXRoIHRoaXMgaW52YXJpYW50LiAqKVxuZXhjZXB0aW9uIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvblxuXG5sZXQgcGh5c19lcXVhbCA9ICggPT0gKVxuXG5tb2R1bGUgSGVhZGVyIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBpbmNyX2xlbmd0aCA6IGJ5OmludCAtPiB0IC0+IHVuaXRcbiAgdmFsIGNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyA6IHQgLT4gdW5pdFxuXG4gICgqIFVuZm9ydHVuYXRlLCBidXQgYnkgc3BlY2lhbGl6aW5nIFt3aXRoX2l0ZXJhdGlvbl0gZm9yIGRpZmZlcmVudCBhcml0aWVzLCBhIGxhcmdlXG4gICAgIGFtb3VudCBvZiBhbGxvY2F0aW9uIGR1cmluZyBmb2xkcyBhbmQgaXRlcmF0aW9ucyBpcyBhdm9pZGVkLlxuXG4gICAgIFRoZSBvcmlnaW5hbCB0eXBlIG9mIFt3aXRoX2l0ZXJhdGlvbl0gd2FzXG4gICAgIFt2YWwgd2l0aF9pdGVyYXRpb24gOiB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYV1cblxuICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuXG4gICAgIHtbXG4gICAgICAgbGV0IHggPSBlIGluXG4gICAgICAgbGV0IGYgKCkgPSBnIHggaW5cbiAgICAgICBmICgpXG4gICAgIF19XG4gICAgIGFuZFxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmIHggPSBnIHggaW5cbiAgICAgICBmIHhcbiAgICAgXX1cbiAgICAgaXMgdGhhdCBpbiB0aGUgZmlyc3QgY2FzZSB0aGUgY2xvc3VyZSBmb3IgW2ZdIGNvbnRhaW5zIGEgcG9pbnRlciB0byBbeF0sXG4gICAgIGFuZCBpbiB0aGUgc2Vjb25kIGNhc2UgaXQgZG9lc24ndC4gQSBjbG9zdXJlIHdpdGhvdXQgcG9pbnRlcnMgdG8gZW5jbG9zaW5nXG4gICAgIGVudmlyb25tZW50IGlzIGltcGxlbWVudGVkIGFzIGEgbmFrZWQgZnVuY3Rpb24gcG9pbnRlciwgc28gd2UgZG9uJ3RcbiAgICAgYWxsb2NhdGUgYXQgYWxsLlxuXG4gICAgIEZvciB0aGUgc2FtZSByZWFzb24gd2UgbWFrZSBzdXJlIG5vdCB0byBjYWxsIFtSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiAuLi4pXVxuICAgICBpbnNpZGUgW3dpdGhfaXRlcmF0aW9uXSBhbmQgZG8gYW4gZXhwbGljaXQgbWF0Y2ggc3RhdGVtZW50IGluc3RlYWQuICopXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzJsXG4gICAgOiAgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdiW0Bsb2NhbF0pXG4gICAgLT4gKCgnYSAtPiAoJ2JbQGxvY2FsXSkgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgd2l0aF9pdGVyYXRpb25fMyA6IHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkKSAtPiAnZFxuICB2YWwgd2l0aF9pdGVyYXRpb25fNCA6IHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlKSAtPiAnZVxuXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl80bFxuICAgIDogIHRcbiAgICAtPiAoJ2FbQGxvY2FsXSlcbiAgICAtPiAoJ2JbQGxvY2FsXSlcbiAgICAtPiAnY1xuICAgIC0+ICdkXG4gICAgLT4gKCgoJ2FbQGxvY2FsXSkgLT4gKCdiW0Bsb2NhbF0pIC0+ICdjIC0+ICdkIC0+ICdlKVtAbG9jYWxdKVxuICAgIC0+ICdlXG5cbiAgdmFsIG1lcmdlIDogdCAtPiB0IC0+IFsgYFNhbWVfYWxyZWFkeSB8IGBNZXJnZWQgXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgcyA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGVuZGluZ19pdGVyYXRpb25zIDogaW50XG4gICAgfVxuXG4gIHR5cGUgdCA9IHMgVW5pb25fZmluZC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA9IFVuaW9uX2ZpbmQuY3JlYXRlIHsgbGVuZ3RoID0gMTsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9XG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICBsZXQgbGVuZ3RoIHQgPSAoVW5pb25fZmluZC5nZXQgdCkubGVuZ3RoXG5cbiAgbGV0IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaWYgcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPiAwIHRoZW4gcmFpc2UgQXR0ZW1wdF90b19tdXRhdGVfbGlzdF9kdXJpbmdfaXRlcmF0aW9uIGVsc2Ugc1xuICA7O1xuXG4gIGxldCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgaWdub3JlICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgOiBzKVxuICA7O1xuXG4gIGxldCBpbmNyX2xlbmd0aCB+Ynk6biB0ID1cbiAgICBsZXQgcyA9IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCBpblxuICAgIHMubGVuZ3RoIDwtIHMubGVuZ3RoICsgblxuICA7O1xuXG4gICgqIENhcmUgaXMgdGFrZW4gbm90IHRvIGFsbG9jYXRlIGluIFt3aXRoX2l0ZXJhdGlvbl8qXSwgc2luY2UgaXQgaXMgY2FsbGVkIGV2ZXJ5IHNlY29uZFxuICAgICBieSBbZXZlcnlfc2Vjb25kXSBpbiBbd3JpdGVyMC5tbF0gKilcblxuICBsZXQgaW5jcl9wZW5kaW5nX2l0ZXJzIHMgPSBzLnBlbmRpbmdfaXRlcmF0aW9ucyA8LSBzLnBlbmRpbmdfaXRlcmF0aW9ucyArIDFcbiAgbGV0IGRlY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgLSAxXG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzJsIHQgYSAoYiBbQGxvY2FsXSkgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8zIHQgYSBiIGMgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzQgdCBhIGIgYyBkIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgZCB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzRsIHQgKGEgW0Bsb2NhbF0pIChiIFtAbG9jYWxdKSBjIGQgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyBkIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgbWVyZ2UgKHQxIDogdCkgdDIgPVxuICAgIGlmIFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICAgIHRoZW4gYFNhbWVfYWxyZWFkeVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG4xID0gKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEpLmxlbmd0aCBpblxuICAgICAgbGV0IG4yID0gKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIpLmxlbmd0aCBpblxuICAgICAgd2l0aF9pdGVyYXRpb25fNCB0MSB0MSB0MiBuMSBuMiAoZnVuIHQxIHQyIG4xIG4yIC0+XG4gICAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDIgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICAgIFVuaW9uX2ZpbmQudW5pb24gdDEgdDI7XG4gICAgICAgICAgVW5pb25fZmluZC5zZXQgdDEgeyBsZW5ndGggPSBuMSArIG4yOyBwZW5kaW5nX2l0ZXJhdGlvbnMgPSAwIH0pKTtcbiAgICAgIGBNZXJnZWQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEVsdCA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgaGVhZGVyIDogJ2EgdCAtPiBIZWFkZXIudFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgY3JlYXRlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVubGluayA6ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgaW5zZXJ0X2FmdGVyIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBpbnNlcnRfYmVmb3JlIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCB1bmxpbmtfYmVmb3JlIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBuZXh0IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBwcmV2IDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSBwcmV2IDogJ2EgdFxuICAgIDsgbXV0YWJsZSBuZXh0IDogJ2EgdFxuICAgIDsgbXV0YWJsZSBoZWFkZXIgOiBIZWFkZXIudFxuICAgIH1cblxuICBsZXQgZXF1YWwgPSBwaHlzX2VxdWFsXG4gIGxldCBuZXh0IHQgPSB0Lm5leHRcbiAgbGV0IHByZXYgdCA9IHQucHJldlxuICBsZXQgaGVhZGVyIHQgPSB0LmhlYWRlclxuXG4gIGxldCBjcmVhdGVfYXV4IHYgaGVhZGVyID1cbiAgICBsZXQgcmVjIHQgPSB7IHZhbHVlID0gdjsgcHJldiA9IHQ7IG5leHQgPSB0OyBoZWFkZXIgfSBpblxuICAgIHRcbiAgOztcblxuICBsZXQgaXNfc2luZ2xldG9uIHQgPSBlcXVhbCB0IHQucHJldlxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9hIHQudmFsdWVcbiAgbGV0IGNyZWF0ZSB2ID0gY3JlYXRlX2F1eCB2IChIZWFkZXIuY3JlYXRlICgpKVxuICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgbGV0IHNldCB0IHYgPSB0LnZhbHVlIDwtIHZcblxuICAoKlxuICAgICBbc3BsaXRfb3Jfc3BsaWNlXSBpcyBzdWZmaWNpZW50IGFzIHRoZSBsb25lIHByaW1pdGl2ZSBmb3JcbiAgICAgYWNjb21wbGlzaGluZyBhbGwgcG9pbnRlciB1cGRhdGVzIG9uIGN5Y2xpYyBsb29wcyBvZiBsaXN0IG5vZGVzLlxuICAgICBJdCB0YWtlcyB0d28gXCJnYXBzXCIgYmV0d2VlbiBhZGphY2VudCBsaW5rZWQgbGlzdCBub2Rlcy4gIElmIHRoZSBnYXBzXG4gICAgIHBvaW50IGludG8gdGhlIHNhbWUgbGlzdCwgdGhlIHJlc3VsdCBpcyB0aGF0IGl0IHdpbGwgYmUgc3BsaXQgaW50b1xuICAgICB0d28gbGlzdHMgYWZ0ZXJ3YXJkcy4gIElmIHRoZSBnYXBzIHBvaW50IGludG8gZGlmZmVyZW50IGxpc3RzLCB0aGVcbiAgICAgcmVzdWx0IGlzIHRoYXQgdGhleSB3aWxsIGJlIHNwbGljZWQgdG9nZXRoZXIgaW50byBvbmUgbGlzdCBhZnRlcndhcmRzLlxuXG4gICAgIHt2XG4gICAgICAgQmVmb3JlICAgICAgICAgICAgICAgICAgICAgIEFmdGVyXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgIEEgfCAgPC0tPiAgfCBCICAgICAgICAgICAgICAgQSB8ICA8LS0tICAgLS0tPiAgfCBCXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgXFwgLyAgICAgICstLS0tLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgLyBcXCAgICAgICstLS0tLVxuICAgICAgICAgICAgICBDIHwgIDwtLT4gIHwgRCAgICAgICAgICAgICAgIEMgfCAgPC0tLSAgIC0tLT4gIHwgRFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICB2fSAqKVxuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlIH5wcmV2MTphIH5uZXh0MTpiIH5wcmV2MjpjIH5uZXh0MjpkID1cbiAgICBhLm5leHQgPC0gZDtcbiAgICBkLnByZXYgPC0gYTtcbiAgICBjLm5leHQgPC0gYjtcbiAgICBiLnByZXYgPC0gY1xuICA7O1xuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+bmV4dDE6dDEubmV4dFxuICAgICAgfnByZXYxOnQxLm5leHQucHJldlxuICAgICAgfm5leHQyOnQyLm5leHRcbiAgICAgIH5wcmV2Mjp0Mi5uZXh0LnByZXZcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDIgPVxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VcbiAgICAgIH5wcmV2MTp0MS5wcmV2XG4gICAgICB+bmV4dDE6dDEucHJldi5uZXh0XG4gICAgICB+cHJldjI6dDIucHJldlxuICAgICAgfm5leHQyOnQyLnByZXYubmV4dFxuICA7O1xuXG4gIGxldCBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyID1cbiAgICBIZWFkZXIuY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxLmhlYWRlcjtcbiAgICBpZiBub3QgKEhlYWRlci5lcXVhbCB0MS5oZWFkZXIgdDIuaGVhZGVyKVxuICAgIHRoZW4gSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0Mi5oZWFkZXJcbiAgOztcblxuICAoKiBXZSByZWRlZmluZSBzYWZlIHZlcnNpb25zIGZvciBleHBvcnQgKilcbiAgbGV0IHNwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MjtcbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDJcbiAgOztcblxuICBsZXQgaW5zZXJ0X2JlZm9yZSB0IHYgPVxuICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6MTtcbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9hdXggdiB0LmhlYWRlciBpblxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGluc2VydF9hZnRlciB0IHYgPVxuICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6MTtcbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9hdXggdiB0LmhlYWRlciBpblxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdCBub2RlO1xuICAgIG5vZGVcbiAgOztcblxuICBsZXQgZHVtbXlfaGVhZGVyID0gSGVhZGVyLmNyZWF0ZSAoKVxuXG4gIGxldCB1bmxpbmtfYmVmb3JlIHQgPVxuICAgIGxldCBub2RlID0gdC5wcmV2IGluXG4gICAgaWYgaXNfc2luZ2xldG9uIG5vZGVcbiAgICB0aGVuIG5vZGVcbiAgICBlbHNlIChcbiAgICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6KC0xKTtcbiAgICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQgbm9kZTtcbiAgICAgIG5vZGUuaGVhZGVyIDwtIGR1bW15X2hlYWRlcjtcbiAgICAgIG5vZGUpXG4gIDs7XG5cbiAgbGV0IHVubGlua19hZnRlciB0ID1cbiAgICBsZXQgbm9kZSA9IHQubmV4dCBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICAgIG5vZGUuaGVhZGVyIDwtIGR1bW15X2hlYWRlcjtcbiAgICAgIG5vZGUpXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID0gaWdub3JlICh1bmxpbmtfYWZ0ZXIgdC5wcmV2IDogXyB0KVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIEVsdC50IG9wdGlvbiByZWZcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGhlYWQgLT5cbiAgICBsZXQgaGVhZGVyID0gRWx0LmhlYWRlciBoZWFkIGluXG4gICAgbGV0IHJlYyBsb29wIG4gZWx0ID1cbiAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgbGV0IHByZXZfZWx0ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICBhc3NlcnQgKEVsdC5lcXVhbCBlbHQgKEVsdC5wcmV2IG5leHRfZWx0KSk7XG4gICAgICBhc3NlcnQgKEVsdC5lcXVhbCBlbHQgKEVsdC5uZXh0IHByZXZfZWx0KSk7XG4gICAgICBhc3NlcnQgKEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBlbHQpIGhlYWRlcik7XG4gICAgICBpbnZhcmlhbnRfYSAoRWx0LnZhbHVlIGVsdCk7XG4gICAgICBpZiBFbHQuZXF1YWwgbmV4dF9lbHQgaGVhZCB0aGVuIG4gZWxzZSBsb29wIChuICsgMSkgbmV4dF9lbHRcbiAgICBpblxuICAgIGxldCBsZW4gPSBsb29wIDEgaGVhZCBpblxuICAgIGFzc2VydCAobGVuID0gSGVhZGVyLmxlbmd0aCBoZWFkZXIpXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0gcmVmIE5vbmVcbmxldCBlcXVhbCAodCA6IF8gdCkgdCcgPSBwaHlzX2VxdWFsIHQgdCdcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICB8IFtdIC0+IGNyZWF0ZSAoKVxuICB8IHggOjogeHMgLT5cbiAgICBsZXQgZmlyc3QgPSBFbHQuY3JlYXRlIHggaW5cbiAgICBsZXQgX2xhc3QgPSBMaXN0LmZvbGQgeHMgfmluaXQ6Zmlyc3QgfmY6KGZ1biBhIGIgLT4gRWx0Lmluc2VydF9hZnRlciBhIGIpIGluXG4gICAgcmVmIChTb21lIGZpcnN0KVxuOztcblxubGV0IG9mX2FycmF5ID0gZnVuY3Rpb25cbiAgfCBbfHxdIC0+IGNyZWF0ZSAoKVxuICB8IGFyciAtPlxuICAgIGxldCBmaXJzdCA9IEVsdC5jcmVhdGUgYXJyLigwKSBpblxuICAgIGxldCByZWMgbG9vcCBhcnIgZWx0IGkgPVxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBsb29wIGFyciAoRWx0Lmluc2VydF9hZnRlciBlbHQgYXJyLihpKSkgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCBhcnIgZmlyc3QgMTtcbiAgICByZWYgKFNvbWUgZmlyc3QpXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19maXJzdCA9IEVsdC5jcmVhdGUgKGYgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gRWx0Lmluc2VydF9hZnRlciBhY2MgKGYgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X2ZpcnN0IGZpcnN0IG5leHQpO1xuICAgIHJlZiAoU29tZSBuZXdfZmlyc3QpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZmlyc3QgPSBFbHQuY3JlYXRlIChmIDAgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBFbHQuaW5zZXJ0X2FmdGVyIGFjYyAoZiBpIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgMSBuZXdfZmlyc3QgZmlyc3QgbmV4dCk7XG4gICAgcmVmIChTb21lIG5ld19maXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIDAgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzRsIChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBhIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgYSBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRpX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgYSBpbml0IGZpcnN0IChmdW4gZiBhIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIChpICsgMSkgYSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiAwIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBpdGVyX2VsdCB0IH5mID0gZm9sZF9lbHRfMSB0IH5pbml0OigpIH5mOihmdW4gZiAoKSBlbHQgLT4gZiBlbHQpIGZcbmxldCBpdGVyaV9lbHQgdCB+ZiA9IGZvbGRpX2VsdCB0IH5pbml0OigpIH5mOihmdW4gaSAoKSBlbHQgLT4gZiBpIGVsdClcblxub3BlbiBXaXRoX3JldHVyblxuXG5sZXQgZmluZF9lbHQgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGZvbGRfZWx0XzEgdCBmIH5pbml0OigpIH5mOihmdW4gZiAoKSBlbHQgLT5cbiAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgZWx0KSk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCBmaW5kaV9lbHQgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGZvbGRpX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGkgZiAoKSBlbHQgLT5cbiAgICAgIGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiByLnJldHVybiAoU29tZSAoaSwgZWx0KSkpO1xuICAgIE5vbmUpXG47O1xuXG4oKiB0aGlzIGZ1bmN0aW9uIGlzIGxhbWJkYSBsaWZ0ZWQgZm9yIHBlcmZvcm1hbmNlLCB0byBtYWtlIGRpcmVjdCByZWN1cnNpdmUgY2FsbHMgaW5zdGVhZFxuICAgb2YgY2FsbHMgdGhyb3VnaCBpdHMgY2xvc3VyZS4gSXQgYWxzbyBhdm9pZHMgdGhlIGluaXRpYWwgY2xvc3VyZSBhbGxvY2F0aW9uLiAqKVxubGV0IHJlYyBpdGVyX2xvb3AgZmlyc3QgZiBlbHQgPVxuICBmIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcl9sb29wIGZpcnN0IGYgbmV4dFxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8ybCAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJfbG9vcCBmaXJzdCBmIGZpcnN0KVxuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgZmlyc3QgLT4gSGVhZGVyLmxlbmd0aCAoRWx0LmhlYWRlciBmaXJzdClcbjs7XG5cbmxldCByZWMgaXRlcmlfbG9vcCBmaXJzdCBmIGkgZWx0ID1cbiAgZiBpIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcmlfbG9vcCBmaXJzdCBmIChpICsgMSkgbmV4dFxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMmwgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyaV9sb29wIGZpcnN0IGYgMCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgZm9sZGlfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gaSBmIGFjYyBlbHQgLT4gZiBpIGFjYyAoRWx0LnZhbHVlIGVsdCkpXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgciA9IGZvbGRfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gZiBhY2MgZWx0IC0+IGYgYWNjIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgIHJcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkID0gQy5mb2xkXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1lbSA9IEMubWVtXG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCB1bmNoZWNrZWRfaXRlciB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgZiBlbHQgPVxuICAgICAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgKCogdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGJhZyBtYXkgaGF2ZSBiZWVuIGNoYW5nZWQgYnkgW2ZdICopXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZmlyc3QgbmV4dCkgdGhlbiBsb29wIHQgZiBuZXh0XG4gICAgaW5cbiAgICBsb29wIHQgZiBmaXJzdFxuOztcblxubGV0IGlzX2VtcHR5IHQgPSBPcHRpb24uaXNfbm9uZSAhdFxuXG4oKiBtb3JlIGVmZmljaWVudCB0aGFuIHdoYXQgQ29udGFpbmVyLk1ha2UgcmV0dXJucyAqKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZWx0ID1cbiAgICAgICAgbGV0IHByZXYgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgICAgbGV0IGFjYyA9IGYgKEVsdC52YWx1ZSBwcmV2KSBhY2MgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBwcmV2IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBwcmV2XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9yaWdodF9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIHByZXYgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IHRvX2xpc3QgdCA9IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIHggdGwgLT4geCA6OiB0bClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHMgPSBvZl9saXN0IChMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgcylcblxubGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChCYXNlLkxpc3QudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG5sZXQgY29weSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxubGV0IGNsZWFyIHQgPSB0IDo9IE5vbmVcblxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgdDEgdDIgPVxuICBtYXRjaCAhdDEsICF0MiB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiAwXG4gIHwgTm9uZSwgXyAtPiAtMVxuICB8IF8sIE5vbmUgLT4gMVxuICB8IFNvbWUgZjEsIFNvbWUgZjIgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmMSkgY29tcGFyZV9lbHQgZjEgZjIgKGZ1biBjb21wYXJlX2VsdCBmMSBmMiAtPlxuICAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZjIpIGNvbXBhcmVfZWx0IGYxIGYyIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGNvbXBhcmVfZWx0IGVsdDEgZjEgZWx0MiBmMiA9XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgKEVsdC52YWx1ZSBlbHQxKSAoRWx0LnZhbHVlIGVsdDIpIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPD4gMFxuICAgICAgICAgIHRoZW4gY29tcGFyZV9yZXN1bHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0MSA9IEVsdC5uZXh0IGVsdDEgaW5cbiAgICAgICAgICAgIGxldCBuZXh0MiA9IEVsdC5uZXh0IGVsdDIgaW5cbiAgICAgICAgICAgIG1hdGNoIHBoeXNfZXF1YWwgbmV4dDEgZjEsIHBoeXNfZXF1YWwgbmV4dDIgZjIgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT4gLTFcbiAgICAgICAgICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gbG9vcCBjb21wYXJlX2VsdCBuZXh0MSBmMSBuZXh0MiBmMilcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCBjb21wYXJlX2VsdCBmMSBmMSBmMiBmMikpXG47O1xuXG5leGNlcHRpb24gVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdFxuXG5sZXQgdHJhbnNmZXIgfnNyYyB+ZHN0ID1cbiAgaWYgcGh5c19lcXVhbCBzcmMgZHN0IHRoZW4gcmFpc2UgVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdDtcbiAgbWF0Y2ggIXNyYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgc3JjX2hlYWQgLT5cbiAgICAobWF0Y2ggIWRzdCB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGRzdCA6PSBTb21lIHNyY19oZWFkO1xuICAgICAgIGNsZWFyIHNyY1xuICAgICB8IFNvbWUgZHN0X2hlYWQgLT5cbiAgICAgICAobWF0Y2ggSGVhZGVyLm1lcmdlIChFbHQuaGVhZGVyIHNyY19oZWFkKSAoRWx0LmhlYWRlciBkc3RfaGVhZCkgd2l0aFxuICAgICAgICB8IGBTYW1lX2FscmVhZHkgLT4gcmFpc2UgVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdFxuICAgICAgICB8IGBNZXJnZWQgLT5cbiAgICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBkc3RfaGVhZCBzcmNfaGVhZDtcbiAgICAgICAgICBjbGVhciBzcmMpKVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBpdGVyX2VsdCB0IH5mOihmdW4gZWx0IC0+IEVsdC5zZXQgZWx0IChmIChFbHQudmFsdWUgZWx0KSkpXG5sZXQgbWFwaV9pbnBsYWNlIHQgfmYgPSBpdGVyaV9lbHQgdCB+ZjooZnVuIGkgZWx0IC0+IEVsdC5zZXQgZWx0IChmIGkgKEVsdC52YWx1ZSBlbHQpKSlcblxubGV0IHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlID1cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGVsdCAtPlxuICAgIChtYXRjaCAhdCB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgaGVhZCAtPlxuICAgICAgIGlmIEVsdC5lcXVhbCBoZWFkIGVsdFxuICAgICAgIHRoZW4gKFxuICAgICAgICAgbGV0IG5leHRfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICB0IDo9IGlmIEVsdC5lcXVhbCBoZWFkIG5leHRfZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgbmV4dF9lbHQpKTtcbiAgICBFbHQudW5saW5rIGVsdClcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX2VsdCB0IH5pbml0OltdIH5mOihmdW4gZWx0cyBlbHQgLT5cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gZWx0cyBlbHNlIGVsdCA6OiBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gZWx0cyBlbHNlIGVsdCA6OiBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZWx0IDo6IGVsdHNcbiAgICAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICAgICBFbHQuc2V0IGVsdCB2YWx1ZTtcbiAgICAgICAgICAgZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkaV9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGkgZWx0cyBlbHQgLT5cbiAgICAgICAgIG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxuZXhjZXB0aW9uIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuXG5sZXQgZmlyc3RfZWx0IHQgPSAhdFxubGV0IGxhc3RfZWx0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC5wcmV2ICF0XG5sZXQgZmlyc3QgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnZhbHVlIChmaXJzdF9lbHQgdClcbmxldCBsYXN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAobGFzdF9lbHQgdClcbmxldCBmaXJzdF9leG4gKHQgOiAnYSB0KSA9IE9wdGlvbi52YWx1ZV9leG4gIXQgfD4gRWx0LnZhbHVlXG5sZXQgbGFzdF9leG4gKHQgOiAnYSB0KSA9IE9wdGlvbi52YWx1ZV9leG4gIXQgfD4gRWx0LnByZXYgfD4gRWx0LnZhbHVlXG5cbmxldCBpc19maXJzdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGlzX2xhc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgICBFbHQuZXF1YWwgZWx0IGxhc3QpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtZW1fZWx0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuOztcblxubGV0IHByZXYgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBTb21lIChFbHQucHJldiBlbHQpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBuZXh0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGxhc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0Lm5leHQgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2FmdGVyIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2FmdGVyIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfYmVmb3JlIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgICAgIG5ld19lbHQpXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5pbnNlcnRfYmVmb3JlIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfZW1wdHkgdCB2ID1cbiAgbGV0IG5ld19lbHQgPSBFbHQuY3JlYXRlIHYgaW5cbiAgdCA6PSBTb21lIG5ld19lbHQ7XG4gIG5ld19lbHRcbjs7XG5cbmxldCBpbnNlcnRfbGFzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPiBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2XG47O1xuXG5sZXQgaW5zZXJ0X2ZpcnN0IHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluc2VydF9lbXB0eSB0IHZcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgbmV3X2VsdFxuOztcblxubGV0IHJlbW92ZV9sYXN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnVubGlua19iZWZvcmUgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZmlyc3QgbGFzdCB0aGVuIHQgOj0gTm9uZTtcbiAgICBTb21lIChFbHQudmFsdWUgbGFzdClcbjs7XG5cbmxldCByZW1vdmVfZmlyc3QgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHNlY29uZCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgRWx0LnVubGluayBmaXJzdDtcbiAgICB0IDo9IGlmIEVsdC5lcXVhbCBmaXJzdCBzZWNvbmQgdGhlbiBOb25lIGVsc2UgU29tZSBzZWNvbmQ7XG4gICAgU29tZSAoRWx0LnZhbHVlIGZpcnN0KVxuOztcblxubGV0IHJlbW92ZSB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiBpZ25vcmUgKHJlbW92ZV9maXJzdCB0IDogXyBvcHRpb24pXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC51bmxpbmsgZWx0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHZhbHVlIC0+IGluc2VydF9sYXN0IG5ld190IHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICBpbnNlcnRfbGFzdCAoaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgaSAoRWx0LnZhbHVlIGVsdCkgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHZhbHVlIC0+IGluc2VydF9sYXN0IHQxIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG4gICAgICAgICAgfCBTZWNvbmQgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDIgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxuZXhjZXB0aW9uIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3JcblxubGV0IG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdCA6PSBTb21lIGFmdGVyX2VsdDtcbiAgICAgICAgICAgIGFmdGVyX2VsdClcbiAgICAgICAgICBlbHNlIGZpcnN0XG4gICAgICAgIGluXG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBiZWZvcmUgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgYW5jaG9yIGVsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGFuY2hvciB0aGVuIHQgOj0gU29tZSBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2Zyb250IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKEVsdC5lcXVhbCBlbHQgZmlyc3QpIHRoZW4gbW92ZV9iZWZvcmUgdCBlbHQgfmFuY2hvcjpmaXJzdFxuOztcblxubGV0IG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvciA9XG4gIGlmIEVsdC5lcXVhbCBhbmNob3IgZWx0IHRoZW4gcmFpc2UgSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvcjtcbiAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGFuY2hvcikgKEVsdC5oZWFkZXIgZWx0KVxuICB0aGVuIChcbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogdW5saW5rIFtlbHRdICopXG4gICAgICAgIGxldCBhZnRlcl9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZWx0IGFmdGVyX2VsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdCB0aGVuIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBhZnRlciBbYW5jaG9yXSAqKVxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIGFuY2hvciBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2JhY2sgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgIGlmIG5vdCAoRWx0LmVxdWFsIGVsdCBsYXN0KSB0aGVuIG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvcjpsYXN0XG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX2xpc3QgdCB8PiBTZXF1ZW5jZS5vZl9saXN0XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHAudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgdF9vZl9zZXhwID0gU2V4cGxpYi5TZXhwLnRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgPSBTZXhwbGliLlNleHAuc2V4cF9vZl90XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmluY2x1ZGUgKFxuICBCYXNlLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgdHlwZSBzZXhwID0gQmFzZS5TZXhwLnQgPVxuICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICB8IExpc3Qgb2YgdCBsaXN0XG5lbmRcblxubW9kdWxlIFNleHBfbWF5YmUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgdCAqIEVycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFJlc3VsdC5PayBhIC0+IHNleHBfb2ZfYSBhXG4gICAgfCBSZXN1bHQuRXJyb3IgKHNleHAsIGVycikgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwic2V4cF9wYXJzZV9lcnJvclwiOyBzZXhwOyBFcnJvci5zZXhwX29mX3QgZXJyIF1cbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgWyBBdG9tIFwic2V4cF9wYXJzZV9lcnJvclwiOyBzZXhwOyBfIF0gfCBzZXhwIC0+XG4gICAgICAodHJ5IFJlc3VsdC5PayAoYV9vZl9zZXhwIHNleHApIHdpdGhcbiAgICAgICB8IGV4biAtPiBSZXN1bHQuRXJyb3IgKHNleHAsIEVycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciAoZ3JhbW1hciA6IF8gU2V4cGxpYi5TZXhwX2dyYW1tYXIudCkgOiBfIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgeyB1bnR5cGVkID0gVW5pb24gWyBncmFtbWFyLnVudHlwZWQ7IEJhc2UuU2V4cC50X3NleHBfZ3JhbW1hci51bnR5cGVkIF0gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBXaXRoX3RleHQgPSBzdHJ1Y3RcbiAgb3BlbiBSZXN1bHQuRXhwb3J0XG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHZhbHVlIDogJ2FcbiAgICA7IHRleHQgOiBzdHJpbmdcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IEF0b20gdC50ZXh0XG5cbiAgbGV0IG9mX3RleHQgdmFsdWVfb2Zfc2V4cCA/KGZpbGVuYW1lID0gXCJcIikgdGV4dCA9XG4gICAgbWF0Y2ggT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBvZl9zdHJpbmdfY29udiB0ZXh0IHZhbHVlX29mX3NleHApIHdpdGhcbiAgICB8IE9rIChgUmVzdWx0IHZhbHVlKSAtPiBPayB7IHZhbHVlOyB0ZXh0IH1cbiAgICB8IEVycm9yIF8gYXMgZXJyIC0+IGVyclxuICAgIHwgT2sgKGBFcnJvciAoZXhuLCBhbm5vdGF0ZWQpKSAtPlxuICAgICAgRXJyb3IgKEVycm9yLm9mX2V4biAoQW5ub3RhdGVkLmdldF9jb252X2V4biBhbm5vdGF0ZWQgfmZpbGU6ZmlsZW5hbWUgfmV4YzpleG4pKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBfIC0+XG4gICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgIFwiV2l0aF90ZXh0LnQgc2hvdWxkIGJlIHN0b3JlZCBhcyBhbiBhdG9tLCBidXQgaW5zdGVhZCBhIGxpc3Qgd2FzIGZvdW5kLlwiXG4gICAgICAgIHNleHBcbiAgICB8IEF0b20gdGV4dCAtPiBvZl90ZXh0IGFfb2Zfc2V4cCB0ZXh0IHw+IE9yX2Vycm9yLm9rX2V4blxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBfID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIEJhc2UuU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGxldCB0ZXh0IHQgPSB0LnRleHRcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgbGV0IG9mX3ZhbHVlIHNleHBfb2ZfdmFsdWUgdmFsdWUgPVxuICAgIGxldCB0ZXh0ID0gc2V4cF9vZl92YWx1ZSB2YWx1ZSB8PiB0b19zdHJpbmdfaHVtIGluXG4gICAgeyB2YWx1ZTsgdGV4dCB9XG4gIDs7XG5lbmRcblxudHlwZSAnYSBub19yYWlzZSA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxubGV0IHNleHBfb2Zfbm9fcmFpc2Ugc2V4cF9vZl9hIGEgPVxuICB0cnkgc2V4cF9vZl9hIGEgd2l0aFxuICB8IGV4biAtPlxuICAgICh0cnkgTGlzdCBbIEF0b20gXCJmYWlsdXJlIGJ1aWxkaW5nIHNleHBcIjsgc2V4cF9vZl9leG4gZXhuIF0gd2l0aFxuICAgICB8IF8gLT4gQXRvbSBcImNvdWxkIG5vdCBidWlsZCBzZXhwIGZvciBleG4gcmFpc2VkIHdoZW4gYnVpbGRpbmcgc2V4cCBmb3IgdmFsdWVcIilcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmQgKEJhc2UuU2V4cCkgKEJhc2UuU2V4cClcblxubGV0IG9mX3NleHBfYWxsb3dfZXh0cmFfZmllbGRzX3JlY3Vyc2l2ZWx5IG9mX3NleHAgc2V4cCA9XG4gIGxldCByID0gU2V4cGxpYi5Db252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHMgaW5cbiAgbGV0IHByZXYgPSAhciBpblxuICBFeG4ucHJvdGVjdFxuICAgIH5maW5hbGx5OihmdW4gKCkgLT4gciA6PSBwcmV2KVxuICAgIH5mOihmdW4gKCkgLT5cbiAgICAgIHIgOj0gZmFsc2U7XG4gICAgICBvZl9zZXhwIHNleHApXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNleHBcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNleHBcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNleHBcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBIYXNoX3F1ZXVlX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBTX2JhY2tlbmQgPSBTX2JhY2tlbmRcblxubW9kdWxlIE1ha2VfYmFja2VuZCAoVGFibGUgOiBIYXNodGJsX2ludGYuSGFzaHRibCkgOiBTX2JhY2tlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgQmFja2VuZCA9XG4gICAgUzFcbiAgICB3aXRoIHR5cGUgJ2tleSBjcmVhdGVfYXJnIDo9ICdrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2tleSA6PSAna2V5XG5cbiAgbW9kdWxlIEJhY2tlbmQgOiBCYWNrZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEtleV92YWx1ZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2tleSwgJ3ZhbHVlKSB0ID1cbiAgICAgICAgICB7IGtleSA6ICdrZXlcbiAgICAgICAgICA7IG11dGFibGUgdmFsdWUgOiAndmFsdWVcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBrZXkgdCA9IHQua2V5XG4gICAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgeyBrZXk7IHZhbHVlIH0gPVxuICAgICAgICBbJXNleHBfb2Y6IGtleSAqIGRhdGFdIChrZXksIHZhbHVlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG9wZW4gS2V5X3ZhbHVlLlRcbiAgICBtb2R1bGUgRWx0ID0gRG91Ymx5X2xpbmtlZC5FbHRcblxuICAgIHR5cGUgKCdrZXksICdkYXRhKSB0ID1cbiAgICAgIHsgbXV0YWJsZSBudW1fcmVhZGVycyA6IGludFxuICAgICAgOyBxdWV1ZSA6ICgna2V5LCAnZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XG4gICAgICA7IHRhYmxlIDogKCdrZXksICgna2V5LCAnZGF0YSkgS2V5X3ZhbHVlLnQgRWx0LnQpIFRhYmxlLnRcbiAgICAgIH1cblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICAgICAgWyVzZXhwX29mOiAoa2V5LCBkYXRhKSBLZXlfdmFsdWUudCBEb3VibHlfbGlua2VkLnRdIHQucXVldWVcbiAgICA7O1xuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIGFzc2VydCAoRG91Ymx5X2xpbmtlZC5sZW5ndGggdC5xdWV1ZSA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlKTtcbiAgICAgICgqIExvb2sgYXQgZWFjaCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgY2hlY2tpbmc6XG4gICAgICAgKiAgIC0gZXZlcnkgZWxlbWVudCBpbiB0aGUgcXVldWUgaXMgaW4gdGhlIGhhc2ggdGFibGVcbiAgICAgICAqICAgLSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXNcbiAgICAgICopXG4gICAgICBsZXQga2V5cyA9IFRhYmxlLmNyZWF0ZSB+c2l6ZTooVGFibGUubGVuZ3RoIHQudGFibGUpIChUYWJsZS5oYXNoYWJsZV9zIHQudGFibGUpIGluXG4gICAgICBEb3VibHlfbGlua2VkLml0ZXIgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+XG4gICAgICAgIGxldCBrZXkgPSBrdi5rZXkgaW5cbiAgICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICBhc3NlcnQgKG5vdCAoVGFibGUubWVtIGtleXMga2V5KSk7XG4gICAgICAgICAgVGFibGUuc2V0IGtleXMgfmtleSB+ZGF0YTooKSlcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMTYpIGhhc2hhYmxlID1cbiAgICAgIHsgbnVtX3JlYWRlcnMgPSAwXG4gICAgICA7IHF1ZXVlID0gRG91Ymx5X2xpbmtlZC5jcmVhdGUgKClcbiAgICAgIDsgdGFibGUgPSBUYWJsZS5jcmVhdGUgfmdyb3d0aF9hbGxvd2VkIH5zaXplIChUYWJsZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCByZWFkIHQgZiA9XG4gICAgICB0Lm51bV9yZWFkZXJzIDwtIHQubnVtX3JlYWRlcnMgKyAxO1xuICAgICAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiB0Lm51bV9yZWFkZXJzIDwtIHQubnVtX3JlYWRlcnMgLSAxKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBlbnN1cmVfY2FuX21vZGlmeSB0ID1cbiAgICAgIGlmIHQubnVtX3JlYWRlcnMgPiAwXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiSXQgaXMgYW4gZXJyb3IgdG8gbW9kaWZ5IGEgSGFzaF9xdWV1ZS50IHdoaWxlIGl0ZXJhdGluZyBvdmVyIGl0LlwiXG4gICAgOztcblxuICAgIGxldCBjbGVhciB0ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBEb3VibHlfbGlua2VkLmNsZWFyIHQucXVldWU7XG4gICAgICBUYWJsZS5jbGVhciB0LnRhYmxlXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggdCA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlXG4gICAgbGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuICAgIGxldCBsb29rdXAgdCBrID1cbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgZWx0IC0+IFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfZXhuIHQgayA9IChFbHQudmFsdWUgKFRhYmxlLmZpbmRfZXhuIHQudGFibGUgaykpLnZhbHVlXG4gICAgbGV0IG1lbSB0IGsgPSBUYWJsZS5tZW0gdC50YWJsZSBrXG5cbiAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgdGFpbC1yZWN1cnNpdmUgQ29yZV9saXN0Lm1hcCAqKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuICAgIGxldCB0b19hcnJheSB0ID0gQXJyYXkubWFwIChEb3VibHlfbGlua2VkLnRvX2FycmF5IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuXG4gICAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLmZvcl9hbGwgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZXhpc3RzIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSBbQG5vbnRhaWxdKSBcbiAgICAgIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5maW5kX21hcCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAoRG91Ymx5X2xpbmtlZC5maW5kIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICAgICAgICB+ZjpLZXlfdmFsdWUudmFsdWUpIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfdW5jaGVja2VkIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgbGV0IGNvbnRlbnRzID0geyBLZXlfdmFsdWUua2V5OyB2YWx1ZSB9IGluXG4gICAgICBsZXQgZWx0ID1cbiAgICAgICAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gICAgICAgIHwgYGJhY2sgLT4gRG91Ymx5X2xpbmtlZC5pbnNlcnRfbGFzdCB0LnF1ZXVlIGNvbnRlbnRzXG4gICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2ZpcnN0IHQucXVldWUgY29udGVudHNcbiAgICAgIGluXG4gICAgICBUYWJsZS5zZXQgdC50YWJsZSB+a2V5IH5kYXRhOmVsdFxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBpZiBUYWJsZS5tZW0gdC50YWJsZSBrZXlcbiAgICAgIHRoZW4gYEtleV9hbHJlYWR5X3ByZXNlbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBlbnF1ZXVlX3VuY2hlY2tlZCB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlO1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2JhY2sgdCA9IGVucXVldWUgdCBgYmFja1xuICAgIGxldCBlbnF1ZXVlX2Zyb250IHQgPSBlbnF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgcmFpc2VfZW5xdWV1ZV9kdXBsaWNhdGVfa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLmVucXVldWVfZXhuOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIG1hdGNoIGVucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSB3aXRoXG4gICAgICB8IGBLZXlfYWxyZWFkeV9wcmVzZW50IC0+IHJhaXNlX2VucXVldWVfZHVwbGljYXRlX2tleSB0IGtleVxuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfYmFja19leG4gdCA9IGVucXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZW5xdWV1ZV9mcm9udF9leG4gdCA9IGVucXVldWVfZXhuIHQgYGZyb250XG5cbiAgICAoKiBQZXJmb3JtYW5jZSBoYWNrOiB3ZSBpbXBsZW1lbnQgdGhpcyB2ZXJzaW9uIHNlcGFyYXRlbHkgdG8gYXZvaWQgYWxsb2NhdGlvbiBmcm9tIHRoZVxuICAgICAgIG9wdGlvbi4gKilcbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIHQga2V5ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgZWx0ID0gVGFibGUuZmluZF9leG4gdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250X2V4biB0IGtleSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IGVsdCA9IFRhYmxlLmZpbmRfZXhuIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fZnJvbnQgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19mcm9udCB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgbWF5YmVfa3YgPVxuICAgICAgICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgICAgfCBgYmFjayAtPiBEb3VibHlfbGlua2VkLnJlbW92ZV9sYXN0IHQucXVldWVcbiAgICAgICAgfCBgZnJvbnQgLT4gRG91Ymx5X2xpbmtlZC5yZW1vdmVfZmlyc3QgdC5xdWV1ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIG1heWJlX2t2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT5cbiAgICAgICAgVGFibGUucmVtb3ZlIHQudGFibGUga3Yua2V5O1xuICAgICAgICBTb21lIChrdi5rZXksIGt2LnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKSA9XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkhhc2hfcXVldWUuZGVxdWV1ZV93aXRoX2tleTogZW1wdHkgcXVldWVcIl1cbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKVxuICAgICAgfCBTb21lIChrLCB2KSAtPiBrLCB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIHQgPSBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnRfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgZnJvbnRcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4gdCA9IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYGZyb250XG5cbiAgICBsZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoXywgdikgLT4gU29tZSB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2sgdCA9IGRlcXVldWUgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250IHQgPSBkZXF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgbGFzdF93aXRoX2tleSB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQubGFzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGxhc3QgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmxhc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+IFNvbWUga3YudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0X3dpdGhfa2V5IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT4gU29tZSBrdi52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV9lbXB0eSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwiSGFzaF9xdWV1ZS5kZXF1ZXVlX2V4bjogZW1wdHkgcXVldWVcIl1cblxuICAgIGxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlX2RlcXVldWVfZW1wdHkgKClcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFja19leG4gdCA9IGRlcXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9IGRlcXVldWVfZXhuIHQgYGZyb250XG5cbiAgICBsZXQga2V5cyB0ID1cbiAgICAgICgqIFJldHVybiB0aGUga2V5cyBpbiB0aGUgb3JkZXIgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUua2V5XG4gICAgOztcblxuICAgIGxldCB0b19hbGlzdCB0ID1cbiAgICAgIExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6KGZ1biBrdiAtPiBrdi5rZXksIGt2LnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLml0ZXIgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpIFtAbm9udGFpbF0pIFxuICAgICAgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICAgIGxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuZm9sZCB0LnF1ZXVlIH5pbml0IH5mOihmdW4gYWMga3YgLT4gZiBhYyB+a2V5Omt2LmtleSB+ZGF0YTprdi52YWx1ZSkgXG4gICAgICAgIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBhYyB+a2V5Ol8gfmRhdGEgLT4gZiBhYyBkYXRhKSBbQG5vbnRhaWxdXG4gICAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICAgIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSBtIH5mb2xkIHQgfmZcbiAgICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gICAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICAgIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuXG4gICAgbGV0IGRlcXVldWVfYWxsIHQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgbWF0Y2ggZGVxdWV1ZV9mcm9udCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgZiB2O1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgIGluXG4gICAgICBsb29wICgpIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IGBOb19zdWNoX2tleVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgYE9rXG4gICAgOztcblxuICAgIGxldCByYWlzZV9yZW1vdmVfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVtb3ZlX2V4bjogdW5rbm93biBrZXlcIiB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgcmVtb3ZlX2V4biB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIHJlbW92ZSB0IGsgd2l0aFxuICAgICAgfCBgTm9fc3VjaF9rZXkgLT4gcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfcmVtb3ZlIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZF9hbmRfcmVtb3ZlIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2UgdCBrIHYgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHY7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGVucXVldWVfdW5jaGVja2VkIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWVcbiAgICAgIHwgU29tZSBlbHQgLT4gKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHZhbHVlXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlX29yX2VucXVldWVfZnJvbnQgdCBrZXkgdmFsdWUgPSByZXBsYWNlX29yX2VucXVldWUgdCBgZnJvbnQga2V5IHZhbHVlXG4gICAgbGV0IHJlcGxhY2Vfb3JfZW5xdWV1ZV9iYWNrIHQga2V5IHZhbHVlID0gcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYGJhY2sga2V5IHZhbHVlXG5cbiAgICBsZXQgcmFpc2VfcmVwbGFjZV91bmtub3duX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5yZXBsYWNlX2V4bjogdW5rbm93biBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2VfZXhuIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZXBsYWNlIHQgayB2IHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrXG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcCA/KG4gPSAxKSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgaWYgbiA+PSBsZW5ndGggdFxuICAgICAgdGhlbiBjbGVhciB0XG4gICAgICBlbHNlXG4gICAgICAgIGZvciBfID0gMSB0byBuIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA6IF8gb3B0aW9uKVxuICAgICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3AgP24gdCBgYmFja1xuICAgIGxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wID9uIHQgYGZyb250XG5cbiAgICBsZXQgY29weSB0ID1cbiAgICAgIGxldCBjb3BpZWQgPSBjcmVhdGUgfnNpemU6KGxlbmd0aCB0KSAoVGFibGUuaGFzaGFibGUgdC50YWJsZSkgaW5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGVucXVldWVfYmFja19leG4gY29waWVkIGtleSBkYXRhKTtcbiAgICAgIGNvcGllZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTMCB3aXRoIHR5cGUgKCdrZXksICdkYXRhKSBoYXNoX3F1ZXVlIDo9ICgna2V5LCAnZGF0YSkgQmFja2VuZC50XG5cbiAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICBlbmQpIDogUyB3aXRoIHR5cGUga2V5ID0gVC5LZXkudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKEJhY2tlbmQgOiBCYWNrZW5kIHdpdGggdHlwZSAoJ2ssICdkKSB0IDo9ICgnaywgJ2QpIEJhY2tlbmQudClcblxuICAgIHR5cGUga2V5ID0gVC5LZXkudFxuICAgIHR5cGUgJ2RhdGEgdCA9IChULktleS50LCAnZGF0YSkgQmFja2VuZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChLZXkgOiBLZXkpIDogUyB3aXRoIHR5cGUga2V5ID0gS2V5LnQgPSBNYWtlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBUYWJsZS5IYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLZXkpXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQmFja2VuZFxuZW5kXG5cbmluY2x1ZGUgTWFrZV9iYWNrZW5kIChIYXNodGJsKVxuIiwiKCoqIEZ1bmN0b3JzIGFuZCBpbnRlcmZhY2VzIHVzZWQgdG8gbWFrZSBtb2R1bGVzIGhhc2hhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaGFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9wbGFpbikgOlxuICBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfcGxhaW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXkpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuICBpbmNsdWRlIFRcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBULktleVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9iaW5hYmxlKSA6XG4gIFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuXG4gICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0ID0gKGtleSwgJ2EpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0IDogc2lnXG4gICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICAgIGVuZFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfYmluYWJsZSkgOiBTIHdpdGggdHlwZSBrZXkgOj0gS2V5LnQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChLZXkpXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKEtleSlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGVcblxuICAgICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgdHlwZSBrZXlcblxuICAgICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgICB0eXBlICdhIHQgPSAoa2V5LCAnYSkgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBIYXNoX3NldCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHZhbCBoYXNoYWJsZSA6IGtleSBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfc3RhYmxlKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBLZXkudCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2Vfc3RhYmxlIChLZXkpXG4gICAgICAgIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2Vfc3RhYmxlIChLZXkpXG5cbiAgICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X3N0YWJsZVxuXG4gICAgICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICAgICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgICAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2hhciA9IEJhc2UuQ2hhclxubW9kdWxlIEludCA9IEJhc2UuSW50XG5tb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmdcbmluY2x1ZGUgSGV4ZHVtcF9pbnRmXG5cbmxldCBieXRlc19wZXJfbGluZSA9IDE2XG5cbigqIEluaXRpYWxpemUgdG8gZW5vdWdoIGxpbmVzIHRvIGRpc3BsYXkgNDA5NiBieXRlcyAtLSBsYXJnZSBlbm91Z2ggdGhhdCwgZm9yIGV4YW1wbGUsIGFcbiAgIGNvbXBsZXRlIEV0aGVybmV0IHBhY2tldCBjYW4gYWx3YXlzIGJlIGRpc3BsYXllZCAtLSBpbmNsdWRpbmcgdGhlIGxpbmUgY29udGFpbmluZyB0aGVcbiAgIGZpbmFsIGluZGV4LiAqKVxubGV0IGRlZmF1bHRfbWF4X2xpbmVzID0gcmVmICgoNDA5NiAvIGJ5dGVzX3Blcl9saW5lKSArIDEpXG5cbm1vZHVsZSBPZl9pbmRleGFibGUyIChUIDogSW5kZXhhYmxlMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoZXhfb2ZfcG9zIHBvcyA9IFByaW50Zi5zcHJpbnRmIFwiJTA4eFwiIHBvc1xuXG4gICAgbGV0IGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCBvZmZzZXQgPVxuICAgICAgbGV0IHBvcyA9IHN0YXJ0ICsgb2Zmc2V0IGluXG4gICAgICBpZiBwb3MgPj0gdW50aWwgdGhlbiBcIiAgXCIgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUwMnhcIiAoQ2hhci50b19pbnQgKGdldCB0IHBvcykpXG4gICAgOztcblxuICAgIGxldCBoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyAlcyAlcyAlcyAlcyAlcyAlcyAlcyAgJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXNcIlxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA1KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDYpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA4KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDkpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTIpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTUpXG4gICAgOztcblxuICAgIGxldCBwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbCA9XG4gICAgICBTdHJpbmcuaW5pdCAodW50aWwgLSBzdGFydCkgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBjaGFyID0gZ2V0IHQgKHN0YXJ0ICsgaSkgaW5cbiAgICAgICAgaWYgQ2hhci5pc19wcmludCBjaGFyIHRoZW4gY2hhciBlbHNlICcuJylcbiAgICA7O1xuXG4gICAgbGV0IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXggPVxuICAgICAgbGV0IHN0YXJ0ID0gcG9zICsgKGxpbmVfaW5kZXggKiBieXRlc19wZXJfbGluZSkgaW5cbiAgICAgIGxldCB1bnRpbCA9IG1pbiAoc3RhcnQgKyBieXRlc19wZXJfbGluZSkgKHBvcyArIGxlbikgaW5cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgICVzICB8JXN8XCJcbiAgICAgICAgKGhleF9vZl9wb3Mgc3RhcnQpXG4gICAgICAgIChoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwpXG4gICAgICAgIChwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbClcbiAgICA7O1xuXG4gICAgbGV0IHRvX3NlcXVlbmNlID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgbGV0IHBvcywgbGVuID1cbiAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgICAgaW5cbiAgICAgIGxldCBtYXhfbGluZXMgPVxuICAgICAgICBtYXRjaCBtYXhfbGluZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbWF4X2xpbmVzIC0+IG1heF9saW5lc1xuICAgICAgICB8IE5vbmUgLT4gIWRlZmF1bHRfbWF4X2xpbmVzXG4gICAgICBpblxuICAgICAgKCogYWx3YXlzIHByb2R1Y2UgYXQgbGVhc3QgMyBsaW5lczogZmlyc3QgbGluZSBvZiBoZXgsIGVsbGlwc2lzLCBsYXN0IGxpbmUgb2YgaGV4ICopXG4gICAgICBsZXQgbWF4X2xpbmVzID0gbWF4IG1heF9saW5lcyAzIGluXG4gICAgICAoKiB1bmFicmlkZ2VkIGxpbmVzID0gbGluZXMgb2YgaGV4ICsgbGluZSB3aXRoIGZpbmFsIGluZGV4ICopXG4gICAgICBsZXQgdW5hYnJpZGdlZF9saW5lcyA9XG4gICAgICAgIEludC5yb3VuZF91cCBsZW4gfnRvX211bHRpcGxlX29mOmJ5dGVzX3Blcl9saW5lIC8gYnl0ZXNfcGVyX2xpbmVcbiAgICAgIGluXG4gICAgICAoKiBGaWd1cmUgb3V0IHdoZXJlIHdlIG5lZWQgdG8gc2tpcCBmcm9tIGFuZCB0byBpZiBbbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc10uXG4gICAgICAgICBTa2lwIGFmdGVyIGhhbGYgdGhlIGFjdHVhbCBoZXggbGluZXMgKHN1YnRyYWN0aW5nIG9uZSBsaW5lIGZvciB0aGUgZWxsaXBzaXMpLlxuICAgICAgICAgU2tpcCB0byBuZWFyIHRoZSBlbmQsIGxlc3MgdGhlIG51bWJlciBvZiBsaW5lcyByZW1haW5pbmcgdG8gcHJvZHVjZSwgcGx1cyB0aGVcbiAgICAgICAgIGVsbGlwc2lzIGxpbmUuICopXG4gICAgICBsZXQgc2tpcF9mcm9tID0gKG1heF9saW5lcyAtIDEpIC8gMiBpblxuICAgICAgbGV0IHNraXBfdG8gPSB1bmFicmlkZ2VkX2xpbmVzIC0gKG1heF9saW5lcyAtIHNraXBfZnJvbSkgKyAxIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gbGluZV9pbmRleCAtPlxuICAgICAgICBpZiBsaW5lX2luZGV4ID49IHVuYWJyaWRnZWRfbGluZXNcbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgaWYgbGluZV9pbmRleCA9IHNraXBfZnJvbSAmJiBtYXhfbGluZXMgPCB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IFwiLi4uXCI7IHN0YXRlID0gc2tpcF90byB9XG4gICAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXg7IHN0YXRlID0gbGluZV9pbmRleCArIDEgfSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZ19odW0gP21heF9saW5lcyA/cG9zID9sZW4gdCA9XG4gICAgICB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBfIF8gdCA9IHRvX3NlcXVlbmNlIHQgfD4gU2VxdWVuY2UudG9fbGlzdCB8PiBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBwcmludGFibGUgPVxuICAgICAgICBsZXQgcmVjIHByaW50YWJsZV9mcm9tIHQgfnBvcyB+bGVuZ3RoID1cbiAgICAgICAgICBwb3MgPj0gbGVuZ3RoXG4gICAgICAgICAgfHwgKENoYXIuaXNfcHJpbnQgKGdldCB0IHBvcykgJiYgcHJpbnRhYmxlX2Zyb20gdCB+cG9zOihwb3MgKyAxKSB+bGVuZ3RoKVxuICAgICAgICBpblxuICAgICAgICBmdW4gdCAtPiBwcmludGFibGVfZnJvbSB0IH5wb3M6MCB+bGVuZ3RoOihsZW5ndGggdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBwb3MgLT4gZ2V0IHQgcG9zKVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIGlmIHByaW50YWJsZSB0IHRoZW4gWyVzZXhwICh0b19zdHJpbmcgdCA6IHN0cmluZyldIGVsc2UgWyVzZXhwICh0IDogKGEsIGIpIHQpXVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX2luZGV4YWJsZTEgKFQgOiBJbmRleGFibGUxKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgeCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCB4IFslc2V4cF9vZjogX10gdFxuICAgIGxldCB0b19zZXF1ZW5jZSA9IE0uSGV4ZHVtcC50b19zZXF1ZW5jZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID0gTS5IZXhkdW1wLnRvX3N0cmluZ19odW1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0IDogKGEsIF8pIE0uSGV4ZHVtcC5QcmV0dHkudCldXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUgKFQgOiBJbmRleGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT2ZfaW5kZXhhYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIF8gdCA9IFQudFxuXG4gICAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgICAgIGxldCBnZXQgPSBULmdldFxuICAgIGVuZClcblxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IDogXyBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfcGxhaW4gKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3NleHBfZ3JhbW1hciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3JfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBFeHRlbmQgKE0gOiBCYXNlLklkZW50aWZpYWJsZS5TKSAoQiA6IEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSBNLnQpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG4gICAgaW5jbHVkZSAoQiA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZF9iaW5hYmxlIChNKSAoVClcblxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBUXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IE0uaGFzaGFibGVcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFYxID0gc2lnXG4gIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMFxuXG4gIGluY2x1ZGVcbiAgICBDb21wYXJhYmxlLlN0YWJsZS5WMS5TXG4gICAgd2l0aCB0eXBlIGNvbXBhcmFibGUgOj0gdFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVjEgPSBzaWdcbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICB3aXRoIHR5cGUgY29tcGFyYWJsZSA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU3RyaW5nXG5cbigqIFRoZXNlIHR3byBhcmUgbmVlZGVkIGJlY2F1c2UgW2luY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZF0gKHByZXNlbnQgbGF0ZXIgaW4gdGhlIGZpbGUpXG4gICBiaW5kcyBuZXcgW01hcF0gYW5kIFtTZXRdIG1vZHVsZXMuICopXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgIGxldCBvZl9zdHJpbmcgPSBGbi5pZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG5cbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmVuZFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4gICAgICBsZXQgaGFzaGFibGUgPSBTdGFibGUuVjEuaGFzaGFibGVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5TdHJpbmcpXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zdHJpbmdcbmxldCBnZW5fbm9uZW1wdHkgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19ub25fZW1wdHlcbmxldCBnZW4nID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfb2ZcbmxldCBnZW5fbm9uZW1wdHknID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5X29mXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuZ3RoIGNoYXJzID1cbiAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcnMgfmxlbmd0aFxuOztcblxubGV0IHRha2Vfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIGxmaW5kaSB0IH5mOihmdW4gXyBlbHQgLT4gbm90IChmIGVsdCkpIHdpdGhcbiAgfCBOb25lIC0+IHRcbiAgfCBTb21lIGkgLT4gc3ViIHQgfnBvczowIH5sZW46aVxuOztcblxubGV0IHJ0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCByZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6KGkgKyAxKSB+bGVuOihsZW5ndGggdCAtIGkgLSAxKVxuOztcblxuKCoqIFNlZSB7IUFycmF5Lm5vcm1hbGl6ZX0gZm9yIHRoZSBmb2xsb3dpbmcgNCBmdW5jdGlvbnMuICopXG5sZXQgbm9ybWFsaXplIHQgaSA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubm9ybWFsaXplIH5sZW5ndGhfZnVuOmxlbmd0aCB0IGlcblxubGV0IHNsaWNlIHQgc3RhcnQgc3RvcCA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3Bcbjs7XG5cbmxldCBuZ2V0IHggaSA9XG4gIGxldCBtb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmcgaW5cbiAgeC5bbm9ybWFsaXplIHggaV1cbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLlN0cmluZ31bQmFzZS5TdHJpbmddfS4gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5TdHJpbmdcbmVuZFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4oKiogW0Nhc2VsZXNzXSBjb21wYXJlcyBhbmQgaGFzaGVzIHN0cmluZ3MgaWdub3JpbmcgY2FzZSwgc28gdGhhdCBmb3IgZXhhbXBsZVxuICAgIFtDYXNlbGVzcy5lcXVhbCBcIk9DYW1sXCIgXCJvY2FtbFwiXSBhbmQgW0Nhc2VsZXNzLihcImFwcGxlXCIgPCBcIkJhbmFuYVwiKV0gYXJlIFt0cnVlXSwgYW5kXG4gICAgW0Nhc2VsZXNzLk1hcF0sIFtDYXNlbGVzcy5UYWJsZV0gbG9va3VwIGFuZCBbQ2FzZWxlc3MuU2V0XSBtZW1iZXJzaGlwIGlzXG4gICAgY2FzZS1pbnNlbnNpdGl2ZS5cblxuICAgIFtDYXNlbGVzc10gYWxzbyBwcm92aWRlcyBjYXNlLWluc2Vuc2l0aXZlIFtpc19zdWZmaXhdIGFuZCBbaXNfcHJlZml4XSBmdW5jdGlvbnMsIHNvXG4gICAgdGhhdCBmb3IgZXhhbXBsZSBbQ2FzZWxlc3MuaXNfc3VmZml4IFwiT0NhbWxcIiB+c3VmZml4OlwiQW1MXCJdIGFuZCBbQ2FzZWxlc3MuaXNfcHJlZml4XG4gICAgXCJPQ2FtbFwiIH5wcmVmaXg6XCJvY1wiXSBhcmUgW3RydWVdLiAqKVxubW9kdWxlIENhc2VsZXNzIDogc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuICBlbmRcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHNleHBdXG5cblxuICBpbmNsdWRlIENvbXBhcmFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cblxuKCoqIFtzbGljZSB0IHN0YXJ0IHN0b3BdIHJldHVybnMgYSBuZXcgc3RyaW5nIGluY2x1ZGluZyBlbGVtZW50cyBbdC4oc3RhcnQpXSB0aHJvdWdoXG4gICAgW3QuKHN0b3AtMSldLCBub3JtYWxpemVkIFB5dGhvbi1zdHlsZSB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBbc3RvcCA9IDBdIGlzIHRyZWF0ZWQgYXNcbiAgICBbc3RvcCA9IGxlbmd0aCB0XS4gKilcbnZhbCBzbGljZSA6IHQgLT4gaW50IC0+IGludCAtPiB0XG5cbigqKiBbbmdldCBzIGldIGdldHMgdGhlIGNoYXIgYXQgbm9ybWFsaXplZCBwb3NpdGlvbiBbaV0gaW4gW3NdLiAqKVxudmFsIG5nZXQgOiB0IC0+IGludCAtPiBjaGFyXG5cbigqKiBbdGFrZV93aGlsZSBzIH5mXSByZXR1cm5zIHRoZSBsb25nZXN0IHByZWZpeCBvZiBbc10gc2F0aXNmeWluZyBbZm9yX2FsbCBwcmVmaXggfmZdXG4gICAgKFNlZSBbbHN0cmlwXSB0byBkcm9wIHN1Y2ggYSBwcmVmaXgpICopXG52YWwgdGFrZV93aGlsZSA6IHQgLT4gZjooKGNoYXIgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG4oKiogW3J0YWtlX3doaWxlIHMgfmZdIHJldHVybnMgdGhlIGxvbmdlc3Qgc3VmZml4IG9mIFtzXSBzYXRpc2Z5aW5nIFtmb3JfYWxsIHN1ZmZpeCB+Zl1cbiAgICAoU2VlIFtyc3RyaXBdIHRvIGRyb3Agc3VjaCBhIHN1ZmZpeCkgKilcbnZhbCBydGFrZV93aGlsZSA6IHQgLT4gZjooKGNoYXIgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IHdpdGhvdXQgZW1wdHkgc3RyaW5ncy4gKilcbnZhbCBnZW5fbm9uZW1wdHkgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IGdlbmVyYXRlIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gZGlzdHJpYnV0aW9uIG9mXG4gICAgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCB3aXRob3V0IGVtcHR5IHN0cmluZ3MuICopXG52YWwgZ2VuX25vbmVtcHR5JyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgZ2VuZXJhdGUgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbc3RyaW5nXSBpcyBhbHJlYWR5IHN0YWJsZSBieSBpdHNlbGYsIHNpbmNlIGFzIGEgcHJpbWl0aXZlIHR5cGUgaXQgaXMgYW5cbiAgICBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBzZXhwIC8gYmluX2lvIHByb3RvY29sLiBbU3RyaW5nLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gaW50cm9kdWNlXG4gICAgW1N0cmluZy5TdGFibGUuU2V0XSwgW1N0cmluZy5TdGFibGUuTWFwXSwgW1N0cmluZy5TdGFibGUuVGFibGVdLCBhbmQgcHJvdmlkZSBpbnRlcmZhY2VcbiAgICB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBTdGFibGVfY29tcGFyYWJsZS5XaXRoX3N0YWJsZV93aXRuZXNzLlYxXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gIGVuZFxuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxudHlwZSB0ID0gYm9vbCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Cb29sKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkJvb2xcblxuaW5jbHVkZSAoXG4gIEJhc2UuQm9vbCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkJvb2xcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5Cb29sKVxuXG5sZXQgb2Zfc3RyaW5nX2h1bSA9XG4gIGxldCB0YWJsZSA9XG4gICAgbGF6eVxuICAgICAgKGxldCB0YWJsZSA9IFN0cmluZy5DYXNlbGVzcy5UYWJsZS5jcmVhdGUgKCkgaW5cbiAgICAgICBbIGZhbHNlLCBbIFwiZmFsc2VcIjsgXCJub1wiOyBcIjBcIiBdOyB0cnVlLCBbIFwidHJ1ZVwiOyBcInllc1wiOyBcIjFcIiBdIF1cbiAgICAgICB8PiBMaXN0Lml0ZXIgfmY6KGZ1biAoYm9vbCwgc3RyaW5ncykgLT5cbiAgICAgICAgIExpc3QuaXRlciBzdHJpbmdzIH5mOihmdW4gc3RyaW5nIC0+XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6c3RyaW5nIH5kYXRhOmJvb2w7XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy5wcmVmaXggc3RyaW5nIDEpIH5kYXRhOmJvb2wpKTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgbGV0IHJhaXNlX2ludmFsaWQgaW5wdXQgPVxuICAgIGxldCBleHBlY3RlZF9jYXNlX2luc2Vuc2l0aXZlID0gU3RyaW5nLlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgKGZvcmNlIHRhYmxlKSkgaW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJCb29sLm9mX3N0cmluZ19odW06IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgIChpbnB1dCA6IHN0cmluZylcbiAgICAgICAgICAoZXhwZWN0ZWRfY2FzZV9pbnNlbnNpdGl2ZSA6IFN0cmluZy5TZXQudCldXG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBIYXNodGJsLmZpbmRfYW5kX2NhbGwgKGZvcmNlIHRhYmxlKSBzdHJpbmcgfmlmX2ZvdW5kOkZuLmlkIH5pZl9ub3RfZm91bmQ6cmFpc2VfaW52YWxpZFxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5ib29sXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5ib29sXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5ib29sXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5CeXRlc1xuXG4gICAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5CeXRlcylcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IGdlbicgY2hhcl9nZW4gPSBTdHJpbmcuZ2VuJyBjaGFyX2dlbiB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3RyaW5nXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuIGNoYXJfZ2VuID1cbiAgU3RyaW5nLmdlbl93aXRoX2xlbmd0aCBsZW4gY2hhcl9nZW4gfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3N0cmluZ1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkNoYXIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG4oKiBpbmNsdWRlIFtCYXNlLkNoYXJdIGFmdGVyIHRoZSBhcHBsaWNhdGlvbiBvZiBbSWRlbnRpZmlhYmxlLkV4dGVuZF0gdG8gcmVwbGFjZSB0aGVcbiAgIFtDb21wYXJhYmxlXSBmdW5jdGlvbnMgd2l0aCB0aGUgcGVydmFzaXZlIHZlcnNpb25zICopXG5pbmNsdWRlIChcbiAgQmFzZS5DaGFyIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQ2hhclxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkNoYXJcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5jaGFyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5jaGFyXG5sZXQgZ2VuX2RpZ2l0ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2RpZ2l0XG5sZXQgZ2VuX2xvd2VyY2FzZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9sb3dlcmNhc2VcbmxldCBnZW5fdXBwZXJjYXNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3VwcGVyY2FzZVxubGV0IGdlbl9hbHBoYSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYVxubGV0IGdlbl9hbHBoYW51bSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYW51bVxubGV0IGdlbl9wcmludCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9wcmludFxubGV0IGdlbl93aGl0ZXNwYWNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3doaXRlc3BhY2VcbmxldCBnZW5fdW5pZm9ybV9pbmNsdXNpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNpZ24gPSBCYXNlLlNpZ25cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduLnQgPVxuICAgICAgfCBOZWdcbiAgICAgIHwgWmVyb1xuICAgICAgfCBQb3NcbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduKSAoU3RhYmxlLlYxKVxuIiwiZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XSAqKVxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsXG4gICAgdGhlbiBzIF4gXCIuXCJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgXyAtPiBzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkZsb2F0XG5cbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3MsIHR5cGVyZXBdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQxKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IFN0YWJsZS5WMVxuaW5jbHVkZSBUXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChUKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdCA9IFRcblxubGV0IHZhbGlkYXRlX29yZGluYXJ5IHQgPVxuICBWYWxpZGF0ZS5vZl9lcnJvcl9vcHRcbiAgICAobGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgICAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPiBOb25lXG4gICAgIHwgQy5JbmZpbml0ZSAtPiBTb21lIFwidmFsdWUgaXMgaW5maW5pdGVcIlxuICAgICB8IEMuTmFuIC0+IFNvbWUgXCJ2YWx1ZSBpcyBOYU5cIilcbjs7XG5cbm1vZHVsZSBWID0gc3RydWN0XG4gIG1vZHVsZSBaWiA9IENvbXBhcmFibGUuVmFsaWRhdGUgKFQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfYm91bmQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV9sYm91bmQgdCB+bWluKVxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfdWJvdW5kIHQgfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFZcblxubW9kdWxlIFJvYnVzdF9jb21wYXJlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAoKiBpbnRlbmRlZCB0byBiZSBhIHRvbGVyYW5jZSBvbiBodW1hbi1lbnRlcmVkIGZsb2F0cyAqKVxuXG4gICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG5cbiAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSBmbG9hdFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG4gICAgZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgICAoKiBXZSBoYXZlIHRlc3QgaW4gdGhlIHRyZWUgdGhhdCByZWx5IG9uIHRoZXNlIGZ1bmN0aW9ucyBub3QgYWxsb2NhdGluZywgZXZlbiB3aXRob3V0XG4gICAgICAgWF9MSUJSQVJZX0lOTElORy4gVGhlIG9ubHkgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZXNlIGRvbid0IGNyZWF0ZSB0ZW1wb3JhcnkgYm94ZWRcbiAgICAgICBmbG9hdHMgd2l0aG91dCBYX0xJQlJBUllfSU5MSU5HIGlzIGZvciB0aGlzIGNvZGUgdG8gc2VlIHRoZSBmbG9hdCBvcGVyYXRpb25zIGFzXG4gICAgICAgZXh0ZXJuYWxzLCBhcyBkZWZpbmVkIGluIFtQZXJ2YXNpdmVzXS4gVGhhdCdzIHdoeSB3ZSB1c2UgW1BvbHldIGFuZCBmbG9hdFxuICAgICAgIGFyaXRobWV0aWMgZnJvbSBbQ2FtbF0uICopXG4gICAgb3BlbiBQb2x5XG5cbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gVC5yb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA+PS4gKSB4IHkgPSB4ID49IFN0ZGxpYi4oIC0uICkgeSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA8PS4gKSB4IHkgPSB5ID49LiB4XG4gICAgbGV0ICggPS4gKSB4IHkgPSB4ID49LiB5ICYmIHkgPj0uIHhcbiAgICBsZXQgKCA+LiApIHggeSA9IHggPiBTdGRsaWIuKCArLiApIHkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPC4gKSB4IHkgPSB5ID4uIHhcbiAgICBsZXQgKCA8Pi4gKSB4IHkgPSBub3QgKHggPS4geSlcblxuICAgIGxldCByb2J1c3RseV9jb21wYXJlIHggeSA9XG4gICAgICBsZXQgZCA9IFN0ZGxpYi4oIC0uICkgeCB5IGluXG4gICAgICBpZiBkIDwgU3RkbGliLiggfi0uICkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIC0xXG4gICAgICBlbHNlIGlmIGQgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAwXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtN1xuICBlbmQpXG5cbmluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuRmxvYXQuT1xuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcbmVuZFxuXG5tb2R1bGUgVGVyc2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGluY2x1ZGUgKFxuICAgIEJhc2UuRmxvYXQuVGVyc2UgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuRmxvYXQuVGVyc2VcbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmxldCByb2J1c3Rfc2lnbiB0IDogU2lnbi50ID0gaWYgdCA+LiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPC4gMC4gdGhlbiBOZWcgZWxzZSBaZXJvXG5cbigqIFRoZXJlIGFyZSB0d28gaXNzdWVzOlxuICAgLSBGbG9hdC5zaWduIHVzZWQgdG8gdXNlIHJvYnVzdCBjb21wYXJpc29uLCBhbmQgdXNlcnMgb2YgW0NvcmVdIG1pZ2h0IGhhdmUgY29tZSB0b1xuICAgICBkZXBlbmQgb24gdGhpcy5cbiAgIC0gUm9idXN0bmVzcyBhc2lkZSwgd2hhdCB3ZSBnZXQgZnJvbSBDb21wYXJhYmxlLldpdGhfemVybyB3b3VsZCBtYXAgbmFuIHRvIE5lZy5cbiopXG5sZXQgc2lnbiA9IHJvYnVzdF9zaWduXG5cbigqIFN0YW5kYXJkIDEyIHNpZ25pZmljYW50IGRpZ2l0cywgZXhwb25lbnRpYWwgbm90YXRpb24gdXNlZCBhcyBuZWNlc3NhcnksIGd1YXJhbnRlZWQgdG9cbiAgIGJlIGEgdmFsaWQgT0NhbWwgZmxvYXQgbGV4ZW0sIG5vdCB0byBsb29rIGxpa2UgYW4gaW50LiAqKVxubGV0IHRvX3N0cmluZ18xMiB4ID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgeClcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmZsb2F0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5mbG9hdFxubGV0IGdlbl91bmlmb3JtX2V4Y2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X2luY2x1c2l2ZVxubGV0IGdlbl93aXRob3V0X25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfd2l0aG91dF9uYW5cbmxldCBnZW5fZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9maW5pdGVcbmxldCBnZW5fcG9zaXRpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlXG5sZXQgZ2VuX25lZ2F0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9uZWdhdGl2ZVxubGV0IGdlbl96ZXJvID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBaZXJvXG5sZXQgZ2VuX25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTmFuXG5sZXQgZ2VuX3N1Ym5vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgU3Vibm9ybWFsXG5sZXQgZ2VuX25vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTm9ybWFsXG5sZXQgZ2VuX2luZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBJbmZpbml0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5JbnRcblxuICAgICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5JbnRcbmluY2x1ZGUgQmFzZS5JbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50KVxuXG4oKiBUaGlzIGlzIGFscmVhZHkgZGVmaW5lZCBieSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybywgYnV0IFNpZ24ub2ZfaW50IGlzXG4gICBtb3JlIGRpcmVjdC4gKilcbmxldCBzaWduID0gU2lnbi5vZl9pbnRcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50X2ludGZ9W0Jhc2UuSW50X2ludGZdfS4gKilcblxubW9kdWxlIHR5cGUgUm91bmQgPSBCYXNlLkludC5Sb3VuZFxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RhYmxlX2NvbXBhcmFibGUuV2l0aF9zdGFibGVfd2l0bmVzcy5WMSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhleGFibGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgbW9kdWxlIEhleCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nX2h1bSA6ID9kZWxpbWl0ZXI6Y2hhciAtPiB0IC0+IHN0cmluZ1xuICBlbmRcblxuICAoKl8gRW5zdXJlIHRoYXQgdGhpcyBtb2R1bGUgaXMgYW4gZXh0ZW5zaW9uIG9mIFtCYXNlLkludC5IZXhhYmxlXS4gKilcbiAgaW5jbHVkZSBCYXNlLkludC5IZXhhYmxlIHdpdGggdHlwZSB0IDo9IHQgYW5kIG1vZHVsZSBIZXggOj0gSGV4XG5lbmRcblxubW9kdWxlIHR5cGUgRXh0ZW5zaW9uID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbiAgaW5jbHVkZSBIZXhhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIFF1aWNrY2hlY2thYmxlLlNfaW50IHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3VuYm91bmRlZCA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNfdW5ib3VuZGVkXG4gIGluY2x1ZGUgRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5JbnQuU1xuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgRXh0ZW5zaW9uX3dpdGhfc3RhYmxlID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5zaW9uXG5cbiAgbW9kdWxlIFN0YWJsZSA6XG4gICAgU3RhYmxlIHdpdGggdHlwZSBWMS50ID0gdCBhbmQgdHlwZSBWMS5jb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDMyKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQzMlxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQzMilcblxudHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50MzJcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50NjQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLkludDY0XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDY0KVxuXG50eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDY0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2NFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50NjR9W0Jhc2UuSW50NjRdfS4gKilcblxuKCoqIHsyIEludGVyZmFjZSBmcm9tIEJhc2V9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuSW50NjRcbmVuZFxuXG4oKiogezIgRXh0ZW5zaW9uc30gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGVcbiAgSW50X2ludGYuRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBCaW4gOiBCaW5hYmxlMC5TIHdpdGggdHlwZSB0IDo9IEJhc2UuSW50NjMudCA9IHN0cnVjdFxuICBtb2R1bGUgQmluX2VtdWxhdGVkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDY0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwuVy53cmFwX2V4blxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwuVy51bndyYXBcbiAgICAgICAgZW5kKVxuICBlbmRcblxuICB0eXBlICdhIGJpbmFibGUgPSAobW9kdWxlIEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICBsZXQgYmluYWJsZV9vZl9yZXByIDogdHlwZSBhIGIuIChhLCBiKSBCYXNlLkludDYzLlByaXZhdGUuUmVwci50IC0+IGIgYmluYWJsZSA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQgLT4gKG1vZHVsZSBJbnQpXG4gICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQ2NCAtPiAobW9kdWxlIEJpbl9lbXVsYXRlZClcbiAgOztcblxuICBsZXQgYmluYWJsZSA6IEJhc2UuSW50NjMudCBiaW5hYmxlID0gYmluYWJsZV9vZl9yZXByIEJhc2UuSW50NjMuUHJpdmF0ZS5yZXByXG5cbiAgaW5jbHVkZSAodmFsIGJpbmFibGUpXG5cbiAgbGV0IGJpbl9zaGFwZV90ID0gQmluX3Byb3QuU2hhcGUuYmluX3NoYXBlX2ludDYzXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGRlcml2aW5nIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICAgaW5jbHVkZSBCaW5cblxuICAgICAgaW5jbHVkZSAoXG4gICAgICAgIEJhc2UuSW50NjMgOlxuICAgICAgICAgIEJhc2UuQ29tcGFyYWJsZS5TXG4gICAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IEJhc2UuSW50NjMuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgICAoKiBUaGlzIHNlcmlhbGl6YXRpb24gaXMgc3RhYmxlLCBzaW5jZSBpdCBlaXRoZXIgZGVsZWdhdGVzIHRvIFtpbnRdIG9yXG4gICAgICAgICBbSW50NjNfZW11bF0uICopXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuKCogVGhpcyBbaW5jbHVkZSBzdHJ1Y3RdIGlzIHJlcXVpcmVkIGJlY2F1c2UgaXQgbGV0cyB1cyBzaGFkb3cgW3RdIHdoZW4gd2UgaW5jbHVkZVxuICAgW0Jhc2UuSW50NjNdIGxhdGVyIG9uLiAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfaW50NjNcbmxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfaW50NjNcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50NjMpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBCaW5cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJhYmxlLkNvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBCYXNlLkludDYzXG5pbmNsdWRlIEJhc2UuSW50NjNcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50NjMpXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjNcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG5cbiAgKCoqIFt0b19pbnQ2M10gYW5kIFtvZl9pbnQ2M19leG5dIGVuY29kZSBbdF0gZm9yIHVzZSBpbiB3aXJlIHByb3RvY29sczsgdGhleSBhcmVcbiAgICAgIGludGVuZGVkIHRvIGF2b2lkIGFsbG9jYXRpb24gb24gNjQtYml0IG1hY2hpbmVzIGFuZCBzaG91bGQgYmUgaW1wbGVtZW50ZWRcbiAgICAgIGVmZmljaWVudGx5LiAgW29mX2ludDYzX2V4biAodG9faW50NjMgdCkgPSB0XSBmb3IgYWxsIFt0XTsgW29mX2ludDYzX2V4bl0gcmFpc2VzIGZvclxuICAgICAgaW5wdXRzIG5vdCBwcm9kdWNlZCBieSBbdG9faW50NjNdLiAqKVxuICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcblxuICB2YWwgb2ZfaW50NjNfZXhuIDogSW50NjMudCAtPiB0XG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG5cbiAgICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogSW50NjMudCAtPiB0XG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5cbiAgb3BlbiBCYXNlLkV4cG9ydFxuICBvcGVuIEJpbl9wcm90LlN0ZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IFYxLmNvbXBhcmF0b3JcbiAgICBsZXQgYmluX25hbWUgPSBcInVuaXRfdjJcIlxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIChfIDogQmluX3Byb3QuQ29tbW9uLmJ1ZikgfnBvc19yZWYgKF8gOiBpbnQpID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgYmluX25hbWUgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkX3QgKF8gOiBCaW5fcHJvdC5Db21tb24uYnVmKSB+cG9zX3JlZjooXyA6IGludCByZWYpID0gKClcblxuICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2hhcGVfdCA9IEJpbl9wcm90LlNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgYmluX25hbWUpKSBbXVxuICAgIGxldCBiaW5fc2l6ZV90ICgpID0gMFxuICAgIGxldCBiaW5fd3JpdGVfdCAoXyA6IEJpbl9wcm90LkNvbW1vbi5idWYpIH5wb3MgKCkgPSBwb3NcbiAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgIGxldCBiaW5fdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IGZmYmQxYTMwN2E0ZjdlYmU4MDIzMDQwZmVjZWJmNjk3IHx9XVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Vbml0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLlVuaXRcblxudHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnVuaXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVuaXRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnVuaXRcblxubW9kdWxlIHR5cGUgUyA9IHNpZyBlbmRcblxudHlwZSBtID0gKG1vZHVsZSBTKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBvcGVuIFNleHBsaWIuU3RkXG5cbiAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3RcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwID0gQmFzZS5MYXp5Lm1hcFxuICAgIGxldCBjb21wYXJlID0gQmFzZS5MYXp5LmNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIFN0YWJsZS5WMS50XG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIChCYXNlLkxhenkgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuTmF0aXZlaW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuTmF0aXZlaW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLk5hdGl2ZWludClcblxudHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm5hdGl2ZWludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubmF0aXZlaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuTm90aGluZy50ID0gfFxuXG4gICAgbW9kdWxlIFNoYXBlID0gc3RydWN0XG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX3NoYXBlXVxuICAgIGVuZFxuXG4gICAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBCYXNlLk5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBiaW5fc2hhcGVfdCA9IFNoYXBlLmJpbl9zaGFwZV90XG4gICAgbGV0IHRwX2xvYyA9IFslaGVyZV0ucG9zX2ZuYW1lIF4gXCIuU3RhYmxlLlYxLnRcIlxuICAgIGxldCBhbGwgPSBbXVxuICAgIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgICBsZXQgaGFzaCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgICBsZXQgYmluX3NpemVfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgYmluX3dyaXRlX3QgX2J1ZiB+cG9zOl8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgXyA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIHRwX2xvYyAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRfdCBfYnVmIH5wb3NfcmVmID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV9yZWFkX2Vycm9yIChFbXB0eV90eXBlIHRwX2xvYykgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliLkNvbnZfZXJyb3IuZW1wdHlfdHlwZSB0cF9sb2Mgc2V4cFxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQmFzZS5Ob3RoaW5nXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKEJhc2UuTm90aGluZykgKFN0YWJsZS5WMSlcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIG5ldmVyX3JldHVybnMgPSBOb3RoaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5ldmVyX3JldHVybnMgPSBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBCYXNlLk9yZGVyaW5nLnQgPVxuICB8IExlc3NcbiAgfCBFcXVhbFxuICB8IEdyZWF0ZXJcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5PcmRlcmluZyB3aXRoIHR5cGUgdCA6PSB0XG5cbmluY2x1ZGUgKEJhc2UuT3JkZXJpbmcgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuUmVmXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgVC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICBsZXQgcmVhZF9vbmx5ID0gRm4uaWRcbiAgbGV0IG9mX3JlZiA9IEZuLmlkXG4gIGxldCB0b19yZWYgPSBGbi5pZFxuICBsZXQgc2V0ID0gKCA6PSApXG4gIGxldCBnZXQgPSAoICEgKVxuZW5kXG4iLCIoKiBXZSBkb24ndCBqdXN0IGluY2x1ZGUgU2V4cGxpYi5TdGQgYmVjYXVzZSBvbmUgY2FuIG9ubHkgZGVmaW5lIEhhc2h0Ymwgb25jZSBpbiB0aGlzXG4gICBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogW2luY2x1ZGVdZCBmaXJzdCBzbyB0aGF0IGV2ZXJ5dGhpbmcgZWxzZSBzaGFkb3dzIGl0ICopXG5pbmNsdWRlIENvcmVfcGVydmFzaXZlc1xuXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuaW5jbHVkZSBEZXByZWNhdGVfcGlwZV9iYW5nXG5pbmNsdWRlIEVpdGhlci5FeHBvcnRcbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5pbmNsdWRlIEludGVyZmFjZXNcbmluY2x1ZGUgTGlzdC5JbmZpeFxuaW5jbHVkZSBOZXZlcl9yZXR1cm5zXG5pbmNsdWRlIE9yZGVyaW5nLkV4cG9ydFxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcbmluY2x1ZGUgUmVzdWx0LkV4cG9ydFxuXG50eXBlIC0nYSByZXR1cm4gPSAnYSBXaXRoX3JldHVybi5yZXR1cm4gPSBwcml2YXRlIHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxuXG4oKiogUmFpc2VkIGlmIG1hbGxvYyBpbiBDIGJpbmRpbmdzIGZhaWwgKGVycm5vICogc2l6ZSkuICopXG5leGNlcHRpb24gQ19tYWxsb2NfZXhuIG9mIGludCAqIGludFxuXG4oKiBlcnJubywgc2l6ZSAqKVxubGV0ICgpID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiQ19tYWxsb2NfZXhuXCIgKENfbWFsbG9jX2V4biAoMCwgMCkpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5ID0gRXhuLkZpbmFsbHlcblxubGV0IGZzdDMgKHgsIF8sIF8pID0geFxubGV0IHNuZDMgKF8sIHksIF8pID0geVxubGV0IHRyZDMgKF8sIF8sIHopID0gelxuXG4oKiogW3BoeXNfc2FtZV0gaXMgbGlrZSBbcGh5c19lcXVhbF0sIGJ1dCB3aXRoIGEgbW9yZSBnZW5lcmFsIHR5cGUuICBbcGh5c19zYW1lXSBpcyB1c2VmdWxcbiAgICB3aGVuIGRlYWxpbmcgd2l0aCBleGlzdGVudGlhbCB0eXBlcywgd2hlbiBvbmUgaGFzIGEgcGFja2VkIHZhbHVlIGFuZCBhbiB1bnBhY2tlZCB2YWx1ZVxuICAgIHRoYXQgb25lIHdhbnRzIHRvIGNoZWNrIGFyZSBwaHlzaWNhbGx5IGVxdWFsLiAgT25lIGNhbid0IHVzZSBbcGh5c19lcXVhbF0gaW4gc3VjaCBhXG4gICAgc2l0dWF0aW9uIGJlY2F1c2UgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQuICopXG5leHRlcm5hbCBwaHlzX3NhbWUgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYltAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcblxubGV0ICggJSApID0gSW50LiggJSApXG5sZXQgKCAvJSApID0gSW50LiggLyUgKVxubGV0ICggLy8gKSA9IEludC4oIC8vIClcbmxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxubGV0IGJwcmludGYgPSBQcmludGYuYnByaW50ZlxubGV0IGNvbnN0ID0gRm4uY29uc3RcbmxldCBlcHJpbnRmID0gUHJpbnRmLmVwcmludGZcbmxldCBlcnJvciA9IE9yX2Vycm9yLmVycm9yXG5sZXQgZXJyb3JfcyA9IE9yX2Vycm9yLmVycm9yX3NcbmxldCBmYWlsd2l0aGYgPSBCYXNlLlByaW50Zi5mYWlsd2l0aGZcbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcbmxldCBmb3JjZSA9IEJhc2UuTGF6eS5mb3JjZVxubGV0IGZwcmludGYgPSBQcmludGYuZnByaW50ZlxubGV0IGludmFsaWRfYXJnZiA9IEJhc2UuUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IGlmcHJpbnRmID0gUHJpbnRmLmlmcHJpbnRmXG5sZXQgaXNfbm9uZSA9IE9wdGlvbi5pc19ub25lXG5sZXQgaXNfc29tZSA9IE9wdGlvbi5pc19zb21lXG5sZXQga3NwcmludGYgPSBQcmludGYua3NwcmludGZcbmxldCBva19leG4gPSBPcl9lcnJvci5va19leG5cbmxldCBwaHlzX2VxdWFsID0gQmFzZS5waHlzX2VxdWFsXG5sZXQgcHJpbnRfcyA9IFN0ZGlvLnByaW50X3NcbmxldCBlcHJpbnRfcyA9IFN0ZGlvLmVwcmludF9zXG5sZXQgcHJpbnRmID0gUHJpbnRmLnByaW50ZlxubGV0IHByb3RlY3QgPSBFeG4ucHJvdGVjdFxubGV0IHByb3RlY3R4ID0gRXhuLnByb3RlY3R4XG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCByb3VuZCA9IEZsb2F0LnJvdW5kXG5sZXQgKCAqKi4gKSA9IEJhc2UuKCAqKi4gKVxubGV0ICggJS4gKSA9IEJhc2UuKCAlLiApXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxubGV0IHVuc3RhZ2UgPSBTdGFnZWQudW5zdGFnZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gPSBXaXRoX3JldHVybi53aXRoX3JldHVybl9vcHRpb25cblxuKCogV2l0aCB0aGUgZm9sbG93aW5nIGFsaWFzZXMsIHdlIGFyZSBqdXN0IG1ha2luZyBleHRyYSBzdXJlIHRoYXQgdGhlIHRvcGxldmVsIHNleHBcbiAgIGNvbnZlcnRlcnMgbGluZSB1cCB3aXRoIHRoZSBvbmVzIGluIG91ciBtb2R1bGVzLiAqKVxuXG5cbmluY2x1ZGUgVHlwZXJlcF9saWIuU3RkX2ludGVybmFsXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldLCBbYnl0ZXNdLCBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlXG4gICAgIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYm9vbCA9IEJvb2wudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQgPSBJbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDMyID0gSW50MzIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxhenlfdCA9ICdhIExhenkudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxpc3QgPSAnYSBMaXN0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnQgPSBOYXRpdmVpbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgKCogQmluX3Byb3QgaGFzIG9wdGltaXplZCBmdW5jdGlvbnMgZm9yIGZsb2F0IGFycmF5cyAqKVxuICBpbmNsdWRlIHN0cnVjdFxuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IEZsb2F0LnQgYXJyYXkgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlIGZsb2F0X2FycmF5IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgZW5kXG4gIHdpdGggdHlwZSBmbG9hdF9hcnJheSA6PSBmbG9hdF9hcnJheSlcbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBhcnJheVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJvb2xcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBjaGFyXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgZmxvYXRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQzMlxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGF6eV90IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGlzdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvblxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZ1xuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJ5dGVzXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgcmVmXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgdW5pdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIGFycmF5IDo9ICdhIGFycmF5XG53aXRoIHR5cGUgYm9vbCA6PSBib29sXG53aXRoIHR5cGUgY2hhciA6PSBjaGFyXG53aXRoIHR5cGUgZmxvYXQgOj0gZmxvYXRcbndpdGggdHlwZSBpbnQgOj0gaW50XG53aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbndpdGggdHlwZSBpbnQ2NCA6PSBpbnQ2NFxud2l0aCB0eXBlICdhIGxpc3QgOj0gJ2EgbGlzdFxud2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbndpdGggdHlwZSAnYSBvcHRpb24gOj0gJ2Egb3B0aW9uXG53aXRoIHR5cGUgc3RyaW5nIDo9IHN0cmluZ1xud2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG53aXRoIHR5cGUgJ2EgbGF6eV90IDo9ICdhIGxhenlfdFxud2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbndpdGggdHlwZSB1bml0IDo9IHVuaXQpXG5cbmxldCBzZXhwX29mX2V4biA9IEV4bi5zZXhwX29mX3RcblxuXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgUmVwciA9IEludDYzXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXSBbQEBpbW1lZGlhdGU2NF1cblxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX3JlcHIgOiBSZXByLnQgLT4gdFxuICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmVwci50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IG9mX3JlcHIgPSBGbi5pZFxuICBsZXQgdG9fcmVwciA9IEZuLmlkXG5cbiAgbGV0IHRvX3N0cmluZyBuID1cbiAgICBsZXQgb3BlbiBSZXByIGluXG4gICAgbGV0IGtpYiA9IG9mX2ludCAxMDI0IGluXG4gICAgbGV0IG1pYiA9IGtpYiAqIGtpYiBpblxuICAgIGxldCBnaWIgPSBraWIgKiBtaWIgaW5cbiAgICBsZXQgbl9hYnMgPSBhYnMgbiBpblxuICAgIGlmIG5fYWJzIDwga2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWRCXCIgKHRvX2ludF9leG4gbilcbiAgICBlbHNlIGlmIG5fYWJzIDwgbWliXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdLXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQga2liKVxuICAgIGVsc2UgaWYgbl9hYnMgPCBnaWJcbiAgICB0aGVuIHNwcmludGYgXCIlZ01cIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBtaWIpXG4gICAgZWxzZSBzcHJpbnRmIFwiJWdHXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgZ2liKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nIG4pXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBieXRlc19pbnRfZXhuIHQgPSBSZXByLnRvX2ludF9leG4gKHRvX3JlcHIgdClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gQmlnYXJyYXlcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2VfYmlnc3RyaW5nXG5cbiAgICBtb2R1bGUgWiA6IHNpZ1xuICAgICAgdHlwZSB0ID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBiaWdzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAoKiBiaWdzdHJpbmcncyBzZXJpYWxpemF0aW9uIGlzIGludGVuZGVkIHRvIGJlIHN0YWJsZS4gIFdlIGFzc2VydCBpdCBoZXJlIHJhdGhlclxuICAgICAgICAgdGhhbiBhc3NlcnRpbmcgaXQgaW4gdHdvIHNlcGFyYXRlIHBsYWNlcyBmb3IgdGhlIGJpbl9pbyBhbmQgc2V4cCBkZWZpbml0aW9ucy4gKilcbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgWlxuXG4gICAgdHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBTdGFibGUuVjFcbmluY2x1ZGUgVFxubW9kdWxlIFVuc3RhYmxlID0gVFxuXG5sZXQgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2Mgc2l6ZSA9XG4gIGxldCBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgPVxuICAgIE9wdGlvbi5tYXAgbWF4X21lbV93YWl0aW5nX2djIH5mOkJ5dGVfdW5pdHMwLmJ5dGVzX2ludF9leG5cbiAgaW5cbiAgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgc2l6ZVxuOztcblxubGV0IHN1Yl9zaGFyZWQgPyhwb3MgPSAwKSA/bGVuIChic3RyIDogdCkgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gYnN0ciB+cG9zIGxlbiBpblxuICBBcnJheTEuc3ViIGJzdHIgcG9zIGxlblxuOztcblxuKCogRGVzdHJ1Y3Rpb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3kgOiB0IC0+IHVuaXQgPSBcImJpZ3N0cmluZ19kZXN0cm95X3N0dWJcIlxuXG5leHRlcm5hbCB1bnNhZmVfZGVzdHJveV9hbmRfcmVzaXplIDogdCAtPiBsZW46aW50IC0+IHQgPSBcImJpZ3N0cmluZ19yZWFsbG9jXCJcblxuKCogUmVhZGluZyAvIHdyaXRpbmcgYmluLXByb3QgKilcblxubGV0IHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/KHBvcyA9IDApID9sZW4gcmVhZGVyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIHQgbGVuIH5wb3MgaW5cbiAgbGV0IGxpbWl0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnNcIiB0IH5wb3MgfmxlbjtcbiAgbGV0IGludmFsaWRfZGF0YSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgICBgSW52YWxpZF9kYXRhIChFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbiAgaW5cbiAgbGV0IHJlYWQgYmluX3JlYWRlciB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IGxpbWl0IC0gcG9zXG4gICAgdGhlbiBgTm90X2Vub3VnaF9kYXRhXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeSBgT2sgKGJpbl9yZWFkZXIgdCB+cG9zX3JlZikgd2l0aFxuICAgICAgICB8IGV4biAtPiBgSW52YWxpZF9kYXRhIChFcnJvci5vZl9leG4gZXhuKVxuICAgICAgd2l0aFxuICAgICAgfCBgSW52YWxpZF9kYXRhIF8gYXMgeCAtPiB4XG4gICAgICB8IGBPayByZXN1bHQgLT5cbiAgICAgICAgbGV0IGV4cGVjdGVkX3BvcyA9IHBvcyArIGxlbiBpblxuICAgICAgICBpZiAhcG9zX3JlZiA9IGV4cGVjdGVkX3Bvc1xuICAgICAgICB0aGVuIGBPayAocmVzdWx0LCBleHBlY3RlZF9wb3MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX2RhdGFcbiAgICAgICAgICAgIFwicG9zX3JlZiA8PiBleHBlY3RlZF9wb3NcIlxuICAgICAgICAgICAgKCFwb3NfcmVmLCBleHBlY3RlZF9wb3MpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludCAqIGludF0pXG4gIGluXG4gIG1hdGNoXG4gICAgcmVhZCBCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciB+cG9zIH5sZW46QmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoXG4gIHdpdGhcbiAgfCAoYE5vdF9lbm91Z2hfZGF0YSB8IGBJbnZhbGlkX2RhdGEgXykgYXMgeCAtPiB4XG4gIHwgYE9rIChlbGVtZW50X2xlbmd0aCwgcG9zKSAtPlxuICAgIGlmIGVsZW1lbnRfbGVuZ3RoIDwgMFxuICAgIHRoZW4gaW52YWxpZF9kYXRhIFwibmVnYXRpdmUgZWxlbWVudCBsZW5ndGggJWRcIiBlbGVtZW50X2xlbmd0aCBbJXNleHBfb2Y6IGludF1cbiAgICBlbHNlIHJlYWQgcmVhZGVyLkJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCB+cG9zIH5sZW46ZWxlbWVudF9sZW5ndGhcbjs7XG5cbmxldCByZWFkX2Jpbl9wcm90IHQgP3BvcyA/bGVuIHJlYWRlciA9XG4gIG1hdGNoIHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/cG9zID9sZW4gcmVhZGVyIHdpdGhcbiAgfCBgT2sgeCAtPiBPayB4XG4gIHwgYEludmFsaWRfZGF0YSBlIC0+IEVycm9yIChFcnJvci50YWcgZSB+dGFnOlwiSW52YWxpZCBkYXRhXCIpXG4gIHwgYE5vdF9lbm91Z2hfZGF0YSAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJub3QgZW5vdWdoIGRhdGFcIlxuOztcblxubGV0IHdyaXRlX2Jpbl9wcm90X2tub3duX3NpemUgdCA/KHBvcyA9IDApIHdyaXRlIH5zaXplOmRhdGFfbGVuIHYgPVxuICBsZXQgdG90YWxfbGVuID0gZGF0YV9sZW4gKyBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgaWYgcG9zIDwgMFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3Q6IG5lZ2F0aXZlIHBvc1wiIHBvcyBbJXNleHBfb2Y6IGludF07XG4gIGlmIHBvcyArIHRvdGFsX2xlbiA+IGxlbmd0aCB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBub3QgZW5vdWdoIHJvb21cIlxuICAgICAgKGBwb3MgcG9zLCBgcG9zX2FmdGVyX3dyaXRpbmcgKHBvcyArIHRvdGFsX2xlbiksIGBiaWdzdHJpbmdfbGVuZ3RoIChsZW5ndGggdCkpXG4gICAgICBbJXNleHBfb2Y6XG4gICAgICAgIFsgYHBvcyBvZiBpbnQgXSAqIFsgYHBvc19hZnRlcl93cml0aW5nIG9mIGludCBdICogWyBgYmlnc3RyaW5nX2xlbmd0aCBvZiBpbnQgXV07XG4gIGxldCBwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgPSBCaW5fcHJvdC5VdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgdCB+cG9zIGRhdGFfbGVuIGluXG4gIGxldCBwb3NfYWZ0ZXJfZGF0YSA9IHdyaXRlIHQgfnBvczpwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgdiBpblxuICBpZiBwb3NfYWZ0ZXJfZGF0YSAtIHBvcyA8PiB0b3RhbF9sZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3QgYnVnIVwiXG4gICAgICAoIGBwb3NfYWZ0ZXJfZGF0YSBwb3NfYWZ0ZXJfZGF0YVxuICAgICAgLCBgc3RhcnRfcG9zIHBvc1xuICAgICAgLCBgYmluX3Byb3Rfc2l6ZV9oZWFkZXJfbGVuZ3RoIEJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICAgICAgLCBgZGF0YV9sZW4gZGF0YV9sZW5cbiAgICAgICwgYHRvdGFsX2xlbiB0b3RhbF9sZW4gKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3NfYWZ0ZXJfZGF0YSBvZiBpbnQgXVxuICAgICAgICAqIFsgYHN0YXJ0X3BvcyBvZiBpbnQgXVxuICAgICAgICAqIFsgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBvZiBpbnQgXVxuICAgICAgICAqIFsgYGRhdGFfbGVuIG9mIGludCBdXG4gICAgICAgICogWyBgdG90YWxfbGVuIG9mIGludCBdXTtcbiAgcG9zX2FmdGVyX2RhdGFcbjs7XG5cbmxldCB3cml0ZV9iaW5fcHJvdCB0ID9wb3MgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHYgPVxuICBsZXQgc2l6ZSA9IHdyaXRlci5zaXplIHYgaW5cbiAgd3JpdGVfYmluX3Byb3Rfa25vd25fc2l6ZSB0ID9wb3Mgd3JpdGVyLndyaXRlIH5zaXplIHZcbjs7XG5cbigqIEhleCBkdW1wICopXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCByZWMgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmIH5taW5fcG9zIH5wb3MgfmNoYXIgPVxuICBsZXQgcG9zJyA9IHBvcyAtIDEgaW5cbiAgaWYgcG9zJyA+PSBtaW5fcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zJykgY2hhclxuICB0aGVuIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zOnBvcycgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfZW5kID1cbiAgICBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWY6dCB+bWluX3Bvczpwb3MgfnBvczoocG9zICsgbGVuKSB+Y2hhcjpwYWRkaW5nXG4gIGluXG4gIHRvX3N0cmluZyB0IH5wb3MgfmxlbjooZGF0YV9lbmQgLSBwb3MpXG47O1xuXG5sZXQgZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sb2NhbCB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIFxuICAgIChsZXQgZGF0YV9lbmQgPVxuICAgICAgIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1Zjp0IH5taW5fcG9zOnBvcyB+cG9zOihwb3MgKyBsZW4pIH5jaGFyOnBhZGRpbmdcbiAgICAgaW5cbiAgICAgbGV0IGxlbiA9IGRhdGFfZW5kIC0gcG9zIGluXG4gICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGVfbG9jYWwgbGVuIGluXG4gICAgIFRvX2J5dGVzLmJsaXQgfnNyYzp0IH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG47O1xuXG5sZXRbQGNvbGRdIHNldF9wYWRkZWRfZml4ZWRfc3RyaW5nX2ZhaWxlZCB+aGVhZF9vcl90YWlsIH52YWx1ZSB+bGVuID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiQmlnc3RyaW5nLnNldF8lc19wYWRkZWRfZml4ZWRfc3RyaW5nOiAlUyBpcyBsb25nZXIgdGhhbiAlZFwiXG4gICAgaGVhZF9vcl90YWlsXG4gICAgKFslZ2xvYmFsaXplOiBzdHJpbmddIHZhbHVlKVxuICAgIGxlblxuICAgICgpXG47O1xuXG5sZXQgc2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAodmFsdWUgW0Bsb2NhbF0pID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW4gdGhlbiBzZXRfcGFkZGVkX2ZpeGVkX3N0cmluZ19mYWlsZWQgfmhlYWRfb3JfdGFpbDpcInRhaWxcIiB+dmFsdWUgfmxlbjtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOnBvcyB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zICsgc2xlbiB0byBwb3MgKyBsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCByZWMgZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zIH5tYXhfcG9zIH5jaGFyID1cbiAgaWYgcG9zIDw9IG1heF9wb3MgJiYgQ2hhci4oID0gKSAoZ2V0IGJ1ZiBwb3MpIGNoYXJcbiAgdGhlbiBmaXJzdF9ub25tYXRjaCB+YnVmIH5wb3M6KEludC5zdWNjIHBvcykgfm1heF9wb3MgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICh2YWx1ZSBbQGxvY2FsXSkgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggdmFsdWUgaW5cbiAgaWYgc2xlbiA+IGxlbiB0aGVuIHNldF9wYWRkZWRfZml4ZWRfc3RyaW5nX2ZhaWxlZCB+aGVhZF9vcl90YWlsOlwiaGVhZFwiIH52YWx1ZSB+bGVuO1xuICBGcm9tX3N0cmluZy5ibGl0IH5zcmM6dmFsdWUgfmRzdDp0IH5zcmNfcG9zOjAgfmRzdF9wb3M6KHBvcyArIGxlbiAtIHNsZW4pIH5sZW46c2xlbjtcbiAgZm9yIGkgPSBwb3MgdG8gcG9zICsgbGVuIC0gc2xlbiAtIDEgZG9cbiAgICBzZXQgdCBpIHBhZGRpbmdcbiAgZG9uZVxuOztcblxubGV0IGdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gIHRvX3N0cmluZyB0IH5wb3M6ZGF0YV9iZWdpbiB+bGVuOihsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykpXG47O1xuXG5sZXQgZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZ19sb2NhbCB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIFxuICAgIChsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gICAgIGxldCBsZW4gPSBsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykgaW5cbiAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZV9sb2NhbCBsZW4gaW5cbiAgICAgVG9fYnl0ZXMuYmxpdCB+c3JjOnQgfnNyY19wb3M6ZGF0YV9iZWdpbiB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYmlnc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5iaWdzdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gICAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICAgIH1cblxuICBsZXQgdG9fc3RyaW5nIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmIGluXG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICBzdHJcbiAgOztcblxuICBsZXQgdG9fYnl0ZXMgdCB2ID1cbiAgICBsZXQgbGVuID0gdC5zaXplIHYgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcG9zID0gdC53cml0ZSBidWYgfnBvczowIHYgaW5cbiAgICBhc3NlcnQgKHBvcyA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBsZXQgc3RyID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9XG4gICAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gICAgfVxuXG4gIGxldCBvZl9zdHJpbmcgdCBzdHJpbmcgPVxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHN0cmluZyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuXG4gIGxldCBvZl9ieXRlcyB0IGJ5dGVzID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX2J5dGVzIGJ5dGVzIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgIGxldCB2ID0gdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGFzc2VydCAoIXBvc19yZWYgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICB2XG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmluX3Byb3QuTWQ1XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gdCB8PiB0b19oZXggfD4gU3RyaW5nLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IFN0cmluZy50X29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IGhhc2hfZm9sZF90IGFjY3VtIHQgPSBTdHJpbmcuaGFzaF9mb2xkX3QgYWNjdW0gKFQudG9fYmluYXJ5IHQpXG5sZXQgaGFzaCB0ID0gU3RyaW5nLmhhc2ggKFQudG9fYmluYXJ5IHQpXG5cbm1vZHVsZSBBc19iaW5hcnlfc3RyaW5nID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBTdHJpbmcuc2V4cF9vZl90IChULnRvX2JpbmFyeSB4KVxuICAgICAgbGV0IHRfb2Zfc2V4cCB4ID0gVC5vZl9iaW5hcnlfZXhuIChTdHJpbmcudF9vZl9zZXhwIHgpXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IFQudG9fYmluYXJ5XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IFQub2ZfYmluYXJ5X2V4blxuXG4gICAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBCaW5hYmxlID0gU3RyaW5nLlN0YWJsZS5WMVxuXG4gICAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0cmluZy5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9iaW5hYmxlXG4gICAgICAgICAgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgbGV0IG9mX2JpbmFibGUgPSBGbi5pZFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5fcHJvdC5NZDUuU3RhYmxlLlYxXG5cbiAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICBlbmQpXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgIEJpbl9wcm90Lk1kNS5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgb2ZfYmluYWJsZVxuICAgICAgICB0b19iaW5hYmxlXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGRpZ2VzdF9zdHJpbmcgcyA9IE1kNV9saWIuc3RyaW5nIHNcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuXG5sZXQgZGlnZXN0X251bV9ieXRlcyA9IDE2XG5sZXQgdG9faGV4ID0gVC50b19oZXhcbmxldCBmcm9tX2hleCA9IFQub2ZfaGV4X2V4blxubGV0IG9mX2hleF9leG4gPSBULm9mX2hleF9leG5cbmxldCBvZl9iaW5hcnlfZXhuID0gVC5vZl9iaW5hcnlfZXhuXG5sZXQgdG9fYmluYXJ5ID0gVC50b19iaW5hcnlcbmxldCBkaWdlc3Rfc3RyaW5nID0gU3RhYmxlLmRpZ2VzdF9zdHJpbmdcbmxldCBkaWdlc3RfYnl0ZXMgPSBNZDVfbGliLmJ5dGVzXG5cbmV4dGVybmFsIGNhbWxfc3lzX29wZW5cbiAgOiAgc3RyaW5nXG4gIC0+IFN0ZGxpYi5vcGVuX2ZsYWcgbGlzdFxuICAtPiBwZXJtOmludFxuICAtPiBpbnRcbiAgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBjYW1sX3N5c19jbG9zZSA6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5leHRlcm5hbCBkaWdlc3RfZmRfYmxvY2tpbmcgOiBpbnQgLT4gc3RyaW5nID0gXCJjb3JlX21kNV9mZFwiXG5cbmxldCBkaWdlc3RfZmlsZV9ibG9ja2luZyBwYXRoID1cbiAgb2ZfYmluYXJ5X2V4blxuICAgIChCYXNlLkV4bi5wcm90ZWN0eFxuICAgICAgIChjYW1sX3N5c19vcGVuIHBhdGggWyBPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnkgXSB+cGVybTowbzAwMClcbiAgICAgICB+ZjpkaWdlc3RfZmRfYmxvY2tpbmdcbiAgICAgICB+ZmluYWxseTpjYW1sX3N5c19jbG9zZSlcbjs7XG5cbmxldCBmaWxlID0gZGlnZXN0X2ZpbGVfYmxvY2tpbmdcblxubGV0IGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW4gPVxuICBvZl9iaW5hcnlfZXhuIChTdGRsaWIuRGlnZXN0LmNoYW5uZWwgY2hhbm5lbCBsZW4pXG47O1xuXG5sZXQgY2hhbm5lbCBjaGFubmVsIGxlbiA9XG4gIGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW5cbjs7XG5cbmxldCBvdXRwdXRfYmxvY2tpbmcgdCBvYyA9IFN0ZGxpYi5EaWdlc3Qub3V0cHV0IG9jICh0b19iaW5hcnkgdClcbmxldCBvdXRwdXQgb2MgdCA9IG91dHB1dF9ibG9ja2luZyB0IG9jXG5sZXQgaW5wdXRfYmxvY2tpbmcgaWMgPSBvZl9iaW5hcnlfZXhuIChTdGRsaWIuRGlnZXN0LmlucHV0IGljKVxubGV0IGlucHV0ID0gaW5wdXRfYmxvY2tpbmdcbmxldCBkaWdlc3Rfc3ViYnl0ZXMgPSBNZDVfbGliLnN1YmJ5dGVzXG5sZXQgc3RyaW5nID0gZGlnZXN0X3N0cmluZ1xubGV0IGJ5dGVzID0gZGlnZXN0X2J5dGVzXG5sZXQgc3ViYnl0ZXMgcyBwb3MgbGVuID0gZGlnZXN0X3N1YmJ5dGVzIHMgfnBvcyB+bGVuXG5cbmxldCBkaWdlc3RfYmluX3Byb3Qgd3JpdGVyIHZhbHVlID1cbiAgZGlnZXN0X3N0cmluZyAoQ29yZV9iaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nIHdyaXRlciB2YWx1ZSlcbjs7XG5cbmV4dGVybmFsIGNfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuICA6ICBCaWdzdHJpbmcudFxuICAtPiBwb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gcmVzOkJ5dGVzLnRcbiAgLT4gdW5pdFxuICA9IFwiY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1wiXG5cbmxldCB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgKCogSXQncyBtb3JlIGVmZmljaWVudCB0byBhbGxvY2F0ZSB0aGUgcmVzdWx0IG9uIHRoZSBPQ2FtbCBzaWRlIGFuZCBkZWNsYXJlIHRoZSBDXG4gICAgIGZ1bmN0aW9uIGFzIG5vYWxsb2MgdGhhbiB0byBsZXQgdGhlIEMgZnVuY3Rpb24gYWxsb2NhdGUuICopXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgY19kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gfnJlcztcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5XG4gICAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxubGV0IGRpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICB+cG9zXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlblxuOztcblxubGV0IGRpZ2VzdF9iaWdzdHJpbmcgYnVmID1cbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3M6MCB+bGVuOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zilcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbmFibGUwXG5cbigqIFtvZl9zdHJpbmddIGFuZCBbdG9fc3RyaW5nXSBjYW4ndCBnbyBpbiBiaW5hYmxlMC5tbCBkdWUgdG8gYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBvZl9zdHJpbmcgbSBzdHJpbmcgPSBvZl9iaWdzdHJpbmcgbSAoQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nIG0gdCA9IEJpZ3N0cmluZy50b19zdHJpbmcgKHRvX2JpZ3N0cmluZyBtIHQpXG4iLCIoKiBGdW5jdGlvbnMgZm9yIHBhcnNpbmcgdGltZSB6b25lIGRhdGFiYXNlIGZpbGVzICh6aWMgZmlsZXMpLlxuXG4gICBBIHRpbWUgem9uZSBmaWxlIGNvbnNpc3RzIChjb25jZXB0dWFsbHkgLSB0aGUgcmVwcmVzZW50YXRpb24gaXMgbW9yZVxuICAgY29tcGFjdCkgb2YgYW4gb3JkZXJlZCBsaXN0IG9mIChUaW1lLnQgKiBbbG9jYWxfdGltZV90eXBlXSkgdGhhdCBtYXJrXG4gICB0aGUgYm91bmRhcmllcyAobWFya2VkIGZyb20gdGhlIGVwb2NoKSBhdCB3aGljaCB2YXJpb3VzIHRpbWUgYWRqdXN0bWVudFxuICAgcmVnaW1lcyBhcmUgaW4gZWZmZWN0LiAgVGhpcyBjYW4gYWxzbyBiZSB0aG91Z2h0IG9mIGFzIGJyZWFraW5nIGRvd24gYWxsXG4gICB0aW1lIHBhc3QgdGhlIGVwb2NoIGludG8gcmFuZ2VzIHdpdGggYSBbbG9jYWxfdGltZV90eXBlXSB0aGF0IGRlc2NyaWJlcyB0aGVcbiAgIG9mZnNldCBmcm9tIEdNVCB0byBhcHBseSB0byBlYWNoIHJhbmdlIHRvIGdldCBsb2NhbCB0aW1lLlxuKilcblxub3BlbiBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFpvbmVfaW50ZlxuXG5leGNlcHRpb24gSW52YWxpZF9maWxlX2Zvcm1hdCBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgRnVsbF9kYXRhID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgSW5kZXggPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgbGV0IG5leHQgPSBJbnQuc3VjY1xuICAgICAgICBsZXQgcHJldiA9IEludC5wcmVkXG4gICAgICAgIGxldCBiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiA9IC0xXG5cbiAgICAgICAgKCogU29tZSBleGlzdGluZyBjbGllbnRzIGV4cGVjdCBbaW5kZXggPj0gMF0sIHNvIHdlIG5ldmVyIHNlcmlhbGl6ZSBhIG5lZ2F0aXZlXG4gICAgICAgICAgIGluZGV4LiBUaGlzIGNvbnZlcnNpb24gY2FuIGJlIHJlbW92ZWQgaWYgbmV3IHN0YWJsZSB2ZXJzaW9ucyBhcmUgbWludGVkLiAqKVxuICAgICAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IG1heCAwIHRcblxuICAgICAgICAoKiBXaGVuIHRoZSBpbmRleCBvZiBhIHRpbWUgem9uZSB3aXRoIG5vIHRyYW5zaXRpb25zIGlzIGNvbnZlcnRlZCB2aWEgdG9fZXh0ZXJuYWwsXG4gICAgICAgICAgIGl0cyB2YWx1ZSBiZWNvbWVzIDAgZXZlbiB0aG91Z2ggaXRzIHRyYW5zaXRpb24gYXJyYXkgaXMgZW1wdHkgKGFuZCBpdCBzaG91bGRcbiAgICAgICAgICAgaGF2ZSBiZWVuIC0xKS4gV2hlbiB0aGUgY29udmVydGVkIHZhbHVlIGlzIGNoYW5nZWQgYmFjayB0byBhIFpvbmUudCB0aHJvdWdoXG4gICAgICAgICAgIG9mX2V4dGVybmFsLCByZXR1cm5pbmcgdGhpcyB2YWx1ZSBmb3IgaXRzIGluZGV4IGNvdWxkIHJlc3VsdCBpbiB1bnNhZmUgYXJyYXlcbiAgICAgICAgICAgYWNjZXNzZXMgdG8gdGhlIHRyYW5zaXRpb24gYXJyYXkgb2YgdGhlIHpvbmUgKHNpbmNlIHRoZXJlIGlzIG5vIHRyYW5zaXRpb24gYXRcbiAgICAgICAgICAgaW5kZXggMCkuIEFsc28sIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8ga2VlcCB0aGUgY29udmVydGVkIGluZGV4IGJlY2F1c2UgaXRcbiAgICAgICAgICAgaXMgaW50ZW5kZWQgdG8gYmUgYSBtdXRhYmxlIHZhbHVlIHVzZWQgZm9yIGNhY2hpbmcuIFNvIG9mX2V4dGVybmFsIGFsd2F5cyBzZXRzXG4gICAgICAgICAgIHRoZSBpbmRleCB0byAtMSwgd2hpY2ggaXMgYSBzYWZlIHZhbHVlLiAqKVxuICAgICAgICBsZXQgb2ZfZXh0ZXJuYWwgKF8gOiB0KSA9IC0xXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgSW50LlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgICAgb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIHRvX2V4dGVybmFsXG4gICAgICAgIDs7XG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlXG4gICAgICAgICAgICAoSW50KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9leHRlcm5hbFxuICAgICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpbWUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBpc19kc3QgOiBib29sXG4gICAgICAgICAgOyBhYmJydiA6IHN0cmluZ1xuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZFxuXG4gICAgICAoKiBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCB3aGVuIGxlYXAgc2Vjb25kcyBzaG91bGQgYmUgYXBwbGllZCAtIHVudXNlZFxuICAgICAgICAgYmVjYXVzZSB3ZSBhcmUgdHJhbnNsYXRpbmcgYmFzZWQgb24gYSBlcG9jaCBzeXN0ZW0gY2xvY2sgKHNlZSB0aGUgQ29yZV96b25lXG4gICAgICAgICBkb2N1bWVudGF0aW9uKS4gKilcbiAgICAgIG1vZHVsZSBMZWFwX3NlY29uZCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IHNlY29uZHMgOiBpbnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRyYW5zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBuZXdfcmVnaW1lIDogUmVnaW1lLnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDtcbiAgICAgICAgICBkaWdlc3QgOiBNZDUuQXNfYmluYXJ5X3N0cmluZy5TdGFibGUuVjEudCBvcHRpb25cbiAgICAgICAgOyB0cmFuc2l0aW9ucyA6IFRyYW5zaXRpb24udCBhcnJheVxuICAgICAgICA7ICgqIGNhY2hlcyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdHJhbnNpdGlvbiB3ZSB1c2VkIHRvIG1ha2UgbG9va3VwcyBmYXN0ZXIgKilcbiAgICAgICAgICBtdXRhYmxlIGxhc3RfcmVnaW1lX2luZGV4IDogSW5kZXgudFxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlIDogUmVnaW1lLnRcbiAgICAgICAgOyBsZWFwX3NlY29uZHMgOiBMZWFwX3NlY29uZC50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgKCogdGhpcyByZWxpZXMgb24gem9uZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGhhdmluZyB0aGUgc2FtZSB0cmFuc2l0aW9ucyAqKVxuICAgICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBTdHJpbmcuY29tcGFyZSB0MS5uYW1lIHQyLm5hbWVcbiAgICAgIGxldCBvcmlnaW5hbF9maWxlbmFtZSB6b25lID0gem9uZS5vcmlnaW5hbF9maWxlbmFtZVxuICAgICAgbGV0IGRpZ2VzdCB6b25lID0gem9uZS5kaWdlc3RcblxuICAgICAgbW9kdWxlIFpvbmVfZmlsZSA6IHNpZ1xuICAgICAgICB2YWwgaW5wdXRfdHpfZmlsZSA6IHpvbmVuYW1lOnN0cmluZyAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIGxldCBib29sX29mX2ludCBpID0gaSA8PiAwXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50MzIgPVxuICAgICAgICAgIGxldCBsb25nID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgICAgICAgICBsZXQgaW50MzJfb2ZfY2hhciBjaHIgPSBJbnQzMi5vZl9pbnRfZXhuIChpbnRfb2ZfY2hhciBjaHIpIGluXG4gICAgICAgICAgZnVuIGljIC0+XG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nIH5wb3M6MCB+bGVuOjQ7XG4gICAgICAgICAgICBsZXQgc2IxID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMCkpIDI0IGluXG4gICAgICAgICAgICBsZXQgc2IyID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMSkpIDE2IGluXG4gICAgICAgICAgICBsZXQgc2IzID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMikpIDggaW5cbiAgICAgICAgICAgIGxldCBzYjQgPSBpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAzKSBpblxuICAgICAgICAgICAgSW50MzIuYml0X29yIChJbnQzMi5iaXRfb3Igc2IxIHNiMikgKEludDMyLmJpdF9vciBzYjMgc2I0KVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugb24gbnVtYmVycyB0aGF0IHdpbGwgZml0IGludG8gYSAzMS1iaXRcbiAgICAgICAgICAgaW50LiBVTklYIHRpbWVzdGFtcHMgd29uJ3QsIGZvciBleGFtcGxlLiAgSW4gb3VyIGNhc2UgdGhpcyBpcyBvbmx5IHVzZWRcbiAgICAgICAgICAgdG8gaG9sZCBzbWFsbCBudW1iZXJzIHRoYXQgYXJlIG5ldmVyIGludGVycHJldGVkIGFzIHRpbWVzdGFtcHMuICopXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludCBpYyA9IEludDMyLnRvX2ludF9leG4gKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDYzIGljID0gSW50NjMub2ZfaW50MzIgKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfbG9uZ19hc19pbnQ2MyBpYyA9XG4gICAgICAgICAgbGV0IGludDYzX29mX2NoYXIgY2hyID0gSW50NjMub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGxldCBzaGlmdCBjIGJpdHMgPSBJbnQ2My5zaGlmdF9sZWZ0IChpbnQ2M19vZl9jaGFyIGMpIGJpdHMgaW5cbiAgICAgICAgICBsZXQgbG9uZ19sb25nID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nX2xvbmcgfnBvczowIH5sZW46ODtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMCkgNTYgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMSkgNDgpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDIpIDQwKSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAzKSAzMikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNCkgMjQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDUpIDE2KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA2KSA4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChpbnQ2M19vZl9jaGFyIChCeXRlcy5nZXQgbG9uZ19sb25nIDcpKSBpblxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9saXN0IGljIH5sZW4gfmYgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBjIGxzdCA9XG4gICAgICAgICAgICBpZiBjID4gMCB0aGVuIGxvb3AgKGMgLSAxKSAoZiBpYyA6OiBsc3QpIGVsc2UgTGlzdC5yZXYgbHN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIGxlbiBbXVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hcnJheSBpYyB+bGVuIH5mID0gQXJyYXkub2ZfbGlzdCAoaW5wdXRfbGlzdCBpYyB+bGVuIH5mKVxuXG4gICAgICAgIGxldCBpbnB1dF9yZWdpbWUgaWMgPVxuICAgICAgICAgIGxldCB1dGNfb2Zmc2V0X2luX3NlY29uZHMgPSBpbnB1dF9sb25nX2FzX2ludDYzIGljIGluXG4gICAgICAgICAgbGV0IGlzX2RzdCA9IGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSBpblxuICAgICAgICAgIGxldCBhYmJydl9pbmRleCA9IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykgaW5cbiAgICAgICAgICBsZXQgbHQgYWJicnYgPSB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdDsgYWJicnYgfSBpblxuICAgICAgICAgIGx0LCBhYmJydl9pbmRleFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hYmJyZXZpYXRpb25zIGljIH5sZW4gPVxuICAgICAgICAgIGxldCByYXdfYWJicnZzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmxlbiB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBsZXQgXywgaW5kZXhlZF9hYmJydnMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkIHJhd19hYmJydnMgfmluaXQ6KDAsIE1hcC5Qb2x5LmVtcHR5KSB+ZjooZnVuIChpbmRleCwgYWJicnZzKSBjIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICB8ICdcXDAwMCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dF9pbmRleCA9IGluZGV4ICsgU3RyaW5nLmxlbmd0aCBkYXRhICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBhYmJydnMgPSBNYXAuc2V0IGFiYnJ2cyB+a2V5OmluZGV4IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICAgICAgICBuZXh0X2luZGV4LCBhYmJydnNcbiAgICAgICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICAgICAgICAgIGluZGV4LCBhYmJydnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA8PiAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEludmFsaWRfZmlsZV9mb3JtYXRcbiAgICAgICAgICAgICAgICAgXCJtaXNzaW5nIFxcMDAwIHRlcm1pbmF0aW5nIGNoYXJhY3RlciBpbiBpbnB1dF9hYmJyZXZpYXRpb25zXCIpO1xuICAgICAgICAgIGluZGV4ZWRfYWJicnZzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uIH5pbnB1dF9sZWFwX3NlY29uZCBpYyA9XG4gICAgICAgICAgbGV0IHV0Y19sb2NhbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHN0ZF93YWxsX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgbGVhcF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0eXBlX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgYWJicnZfY2hhcl9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fdGltZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF90cmFuc2l0aW9uIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25faW5kaWNlcyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0XG4gICAgICAgICAgICAgIGljXG4gICAgICAgICAgICAgIH5mOihmdW4gaWMgLT4gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSlcbiAgICAgICAgICAgICAgfmxlbjp0cmFuc2l0aW9uX2NvdW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfcmVnaW1lIH5sZW46dHlwZV9jb3VudCBpblxuICAgICAgICAgIGxldCBhYmJyZXZpYXRpb25zID0gaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuOmFiYnJ2X2NoYXJfY291bnQgaW5cbiAgICAgICAgICBsZXQgbGVhcF9zZWNvbmRzID0gaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF9sZWFwX3NlY29uZCB+bGVuOmxlYXBfY291bnQgaW5cbiAgICAgICAgICAoKiBUaGUgZm9sbG93aW5nIHR3byBhcnJheXMgaW5kaWNhdGUgdHdvIGJvb2xlYW4gdmFsdWVzIHBlciByZWdpbWUgdGhhdFxuICAgICAgICAgICAgIHJlcHJlc2VudCBhIHRocmVlLXZhbHVlIHR5cGUgdGhhdCB3b3VsZCB0cmFuc2xhdGUgdG86XG5cbiAgICAgICAgICAgICB0eXBlIHRyYW5zaXRpb25fdHlwZSA9IFVUQyB8IFN0YW5kYXJkIHwgV2FsbF9jbG9ja1xuXG4gICAgICAgICAgICAgSG93ZXZlciwgdGhlc2UgYXJlIG9ubHkgdXNlZCBieSB0aGUgc3lzdGVtIGxpYnJhcnkgd2hlbiBoYW5kbGluZyB0aGUgY2FzZSB3aGVyZSB0aGVcbiAgICAgICAgICAgICBUWiB2YXJpYWJsZSBpcyBzZXQsIG5vdCB0byBhIHRpbWUgem9uZSBuYW1lLCBidXQgaW5zdGVhZCBpcyBvZiB0aGUgZm9ybTpcblxuICAgICAgICAgICAgIFRaID0gXCJzdGQgb2Zmc2V0IGRzdCBvZmZzZXQsIHJ1bGVcIlxuXG4gICAgICAgICAgICAgV2hpY2ggaXMgZGVlcGx5IG9ic2N1cmUsIGFuZCBhbG1vc3QgY2VydGFpbmx5IGEgbWlzdGFrZSB0byB1c2UuICBUaGlzIGxpYnJhcnkgbWFrZXNcbiAgICAgICAgICAgICBubyBwcmV0ZW5zZSBhYm91dCBoYW5kbGluZyB0aGlzIGNhc2UuICBXZSBjb250aW51ZSB0byByZWFkIHRoZW0gaW4gZm9yXG4gICAgICAgICAgICAgY29tcGxldGVuZXNzLCBhbmQgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIHRoYXQgd2Ugd2lsbCBsYXRlciBkaXNjb3ZlciBhIGNhc2Ugd2hlcmVcbiAgICAgICAgICAgICB0aGV5IGFyZSB1c2VkLiAqKVxuICAgICAgICAgIGxldCBfc3RkX3dhbGxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnN0ZF93YWxsX2NvdW50IH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF91dGNfbG9jYWxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnV0Y19sb2NhbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWdpbWVzID1cbiAgICAgICAgICAgIEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgKExpc3QubWFwIHJlZ2ltZXMgfmY6KGZ1biAobHQsIGFiYnJ2X2luZGV4KSAtPlxuICAgICAgICAgICAgICAgICBsZXQgYWJicnYgPSBNYXAuZmluZF9leG4gYWJicmV2aWF0aW9ucyBhYmJydl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBsdCBhYmJydikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmF3X3RyYW5zaXRpb25zID1cbiAgICAgICAgICAgIExpc3QubWFwMl9leG4gdHJhbnNpdGlvbl90aW1lcyB0cmFuc2l0aW9uX2luZGljZXMgfmY6KGZ1biB0aW1lIGluZGV4IC0+XG4gICAgICAgICAgICAgIGxldCByZWdpbWUgPSByZWdpbWVzLihpbmRleCkgaW5cbiAgICAgICAgICAgICAgdGltZSwgcmVnaW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25zID1cbiAgICAgICAgICAgIGxldCByZWMgbWFrZV90cmFuc2l0aW9ucyBhY2MgbCA9XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IEFycmF5Lm9mX2xpc3QgKExpc3QucmV2IGFjYylcbiAgICAgICAgICAgICAgfCAoc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoLCBuZXdfcmVnaW1lKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgICAgICAgKHsgVHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IG5ld19yZWdpbWUgfSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9ucyBbXSByYXdfdHJhbnNpdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICBtYXRjaCBBcnJheS5maW5kIHJlZ2ltZXMgfmY6KGZ1biByIC0+IG5vdCByLlJlZ2ltZS5pc19kc3QpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByZWdpbWVzLigwKVxuICAgICAgICAgICAgfCBTb21lIGx0dCAtPiBsdHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGZ1biBuYW1lIH5vcmlnaW5hbF9maWxlbmFtZSB+ZGlnZXN0IC0+XG4gICAgICAgICAgICB7IG5hbWVcbiAgICAgICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBTb21lIG9yaWdpbmFsX2ZpbGVuYW1lXG4gICAgICAgICAgICA7IGRpZ2VzdCA9IFNvbWUgZGlnZXN0XG4gICAgICAgICAgICA7IHRyYW5zaXRpb25zXG4gICAgICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVcbiAgICAgICAgICAgIDsgbGVhcF9zZWNvbmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggPSBpbnB1dF9sZWFwX3NlY29uZCBpYyBpblxuICAgICAgICAgIGxldCBzZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICB7IExlYXBfc2Vjb25kLnRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaDsgc2Vjb25kcyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYWRfaGVhZGVyIGljID1cbiAgICAgICAgICBsZXQgbWFnaWMgPVxuICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZiB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLmVxdWFsIG1hZ2ljIFwiVFppZlwiKVxuICAgICAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJtYWdpYyBjaGFyYWN0ZXJzIFRaaWYgbm90IHByZXNlbnRcIik7XG4gICAgICAgICAgbGV0IHZlcnNpb24gPVxuICAgICAgICAgICAgbWF0Y2ggSW5fY2hhbm5lbC5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAnXFwwMDAnIC0+IGBWMVxuICAgICAgICAgICAgfCBTb21lICcyJyAtPiBgVjJcbiAgICAgICAgICAgIHwgU29tZSAnMycgLT4gYFYzXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJleHBlY3RlZCB2ZXJzaW9uLCBmb3VuZCBub3RoaW5nXCIpXG4gICAgICAgICAgICB8IFNvbWUgYmFkX3ZlcnNpb24gLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCJ2ZXJzaW9uICglYykgaXMgaW52YWxpZFwiIGJhZF92ZXJzaW9uKSlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHNwYWNlIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGluIHRoZSBmb3JtYXQgKilcbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZjooQnl0ZXMuY3JlYXRlIDE1KSB+cG9zOjAgfmxlbjoxNTtcbiAgICAgICAgICB2ZXJzaW9uXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjEgaWMgPVxuICAgICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZCA9XG4gICAgICAgICAgICBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kOmlucHV0X2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uOmlucHV0X2xvbmdfYXNfaW50NjMgfmlucHV0X2xlYXBfc2Vjb25kIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgKCpcbiAgICAgICAgICAgdmVyc2lvbiAyIHRpbWV6b25lIGZpbGVzIGhhdmUgdGhlIGZvcm1hdDpcblxuICAgICAgICAgICBwYXJ0IDEgLSBleGFjdGx5IHRoZSBzYW1lIGFzIHYxXG5cbiAgICAgICAgICAgcGFydCAyIC0gc2FtZSBmb3JtYXQgYXMgdjEsIGV4Y2VwdCB0aGF0IDggYnl0ZXMgYXJlIHVzZWQgdG8gc3RvcmVcbiAgICAgICAgICAgdHJhbnNpdGlvbiB0aW1lcyBhbmQgbGVhcCBzZWNvbmRzXG5cbiAgICAgICAgICAgcGFydCAzIC0gYSBuZXdsaW5lLWVuY2xvZGVkLCBQT1NJWC1UWi1lbnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZVxuICAgICAgICAgICBzdHJpbmcgZm9yIHVzZSBpbiBoYW5kbGluZyBpbnN0YW50cyBhZnRlciB0aGUgbGFzdCB0cmFuc2l0aW9uIHRpbWVcbiAgICAgICAgICAgc3RvcmVkIGluIHRoZSBmaWxlICh3aXRoIG5vdGhpbmcgYmV0d2VlbiB0aGUgbmV3bGluZXMgaWYgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgUE9TSVggcmVwcmVzZW50YXRpb24gZm9yIHN1Y2ggaW5zdGFudHMpXG5cbiAgICAgICAgICAgV2UgaGFuZGxlIGZpbGVzIGluIHRoaXMgZm9ybWF0IGJ5IHBhcnNpbmcgdGhlIGZpcnN0IHBhcnQgZXhhY3RseSBhcyBhIHYxXG4gICAgICAgICAgIHRpbWV6b25lIGZpbGUgYW5kIHRoZW4gY29udGludWluZyB0byBwYXJzZSB3aXRoIDY0Yml0IHJlYWRpbmcgZnVuY3Rpb25zIGluIHRoZVxuICAgICAgICAgICByaWdodCBwbGFjZXMuXG5cbiAgICAgICAgICAgVmVyc2lvbiAzIHRpbWV6b25lIGZpbGVzIGFyZSB0aGUgc2FtZSBhcyB2ZXJzaW9uIDIsIGV4Y2VwdCB0aGVcbiAgICAgICAgICAgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGUgc3RyaW5nIGluIHBhcnQgMyBtYXkgdXNlIHR3byBtaW5vclxuICAgICAgICAgICBleHRlbnNpb25zIHRvIHRoZSBQT1NJWCBUWiBmb3JtYXQgKHRoZSBob3VycyBwYXJ0IG9mIGl0cyB0cmFuc2l0aW9uXG4gICAgICAgICAgIHRpbWVzIG1heSBiZSBzaWduZWQgYW5kIHJhbmdlIGZyb20gLTE2NyB0aHJvdWdoIDE2NyBpbnN0ZWFkIG9mIHRoZVxuICAgICAgICAgICBQT1NJWC1yZXF1aXJlZCB1bnNpZ25lZCB2YWx1ZXMgZnJvbSAwIHRocm91Z2ggMjQ7IGFuZCBEU1QgaXMgaW4gZWZmZWN0IGFsbFxuICAgICAgICAgICB5ZWFyIGlmIGl0IHN0YXJ0cyBKYW51YXJ5IDEgYXQgMDA6MDAgYW5kIGVuZHMgRGVjZW1iZXIgMzEgYXQgMjQ6MDAgcGx1cyB0aGVcbiAgICAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIGRheWxpZ2h0IHNhdmluZyBhbmQgc3RhbmRhcmQgdGltZSkuXG5cbiAgICAgICAgICAgQXMgd2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgd2l0aCBwYXJ0IDMgYW55d2F5LCB3ZSBjYW4ganVzdCByZWFkIHYzXG4gICAgICAgICAgIGZpbGVzIGFzIHYyLlxuICAgICAgICAqKVxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV92Ml9vcl92MyB+dmVyc2lvbiBpYyA9XG4gICAgICAgICAgbGV0IChfIDogc3RyaW5nIC0+IG9yaWdpbmFsX2ZpbGVuYW1lOnN0cmluZyAtPiBkaWdlc3Q6TWQ1X2xpYi50IC0+IHQpID1cbiAgICAgICAgICAgIGlucHV0X3R6X2ZpbGVfdjEgaWNcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHRoZSBoZWFkZXIgaXMgZnVsbHkgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogWyBgVjEgfCBgVjIgfCBgVjMgXV0gKHJlYWRfaGVhZGVyIGljKSB2ZXJzaW9uKTtcbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuXG4gICAgICAgICAgICB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICAgIH5pbnB1dF9sZWFwX3NlY29uZFxuICAgICAgICAgICAgaWNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZSB+em9uZW5hbWUgfmZpbGVuYW1lID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHByb3RlY3R4IChJbl9jaGFubmVsLmNyZWF0ZSBmaWxlbmFtZSkgfmZpbmFsbHk6SW5fY2hhbm5lbC5jbG9zZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGxldCBtYWtlX3pvbmUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlYWRfaGVhZGVyIGljIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBWMSAtPiBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgICAgICAgfCAoYFYyIHwgYFYzKSBhcyB2ZXJzaW9uIC0+IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2VzdCA9IE1kNS5kaWdlc3RfZmlsZV9ibG9ja2luZyBmaWxlbmFtZSBpblxuICAgICAgICAgICAgICBsZXQgciA9IG1ha2Vfem9uZSB6b25lbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWU6ZmlsZW5hbWUgfmRpZ2VzdCBpblxuICAgICAgICAgICAgICByKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IEludmFsaWRfZmlsZV9mb3JtYXQgcmVhc29uIC0+XG4gICAgICAgICAgICByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCAoc3ByaW50ZiBcIiVzIC0gJXNcIiBmaWxlbmFtZSByZWFzb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGFzc2VydCAob2Zmc2V0ID49IC0yNCAmJiBvZmZzZXQgPD0gMjQpO1xuICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gSW50NjMub2ZfaW50IChvZmZzZXQgKiA2MCAqIDYwKSBpblxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA9IE5vbmVcbiAgICAgICAgOyBkaWdlc3QgPSBOb25lXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgPSBbfHxdXG4gICAgICAgIDsgbGFzdF9yZWdpbWVfaW5kZXggPSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlID1cbiAgICAgICAgICAgIHsgUmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kczsgaXNfZHN0ID0gZmFsc2U7IGFiYnJ2ID0gbmFtZSB9XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3V0Y19vZmZzZXQgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSAwXG4gICAgICAgICAgdGhlbiBcIlVUQ1wiXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiVVRDJXMlZFwiIChpZiBvZmZzZXQgPCAwIHRoZW4gXCItXCIgZWxzZSBcIitcIikgKGFicyBvZmZzZXQpXG4gICAgICAgIGluXG4gICAgICAgIG9mX3V0Y19vZmZzZXRfZXhwbGljaXRfbmFtZSB+bmFtZSB+aG91cnM6b2Zmc2V0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5GdWxsX2RhdGEuVjFcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIHQubmFtZVxuXG5sZXQgbGlrZWx5X21hY2hpbmVfem9uZXMgPVxuICByZWYgWyBcIkFtZXJpY2EvTmV3X1lvcmtcIjsgXCJFdXJvcGUvTG9uZG9uXCI7IFwiQXNpYS9Ib25nX0tvbmdcIjsgXCJBbWVyaWNhL0NoaWNhZ29cIiBdXG47O1xuXG5sZXQgaW5wdXRfdHpfZmlsZSA9IFpvbmVfZmlsZS5pbnB1dF90el9maWxlXG5sZXQgdXRjID0gb2ZfdXRjX29mZnNldCB+aG91cnM6MFxubGV0IG5hbWUgem9uZSA9IHpvbmUubmFtZVxubGV0IHJlc2V0X3RyYW5zaXRpb25fY2FjaGUgdCA9IHQubGFzdF9yZWdpbWVfaW5kZXggPC0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cblxuKCogUmFpc2VzIGlmIFtpbmRleCA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc10gKilcbmxldCBnZXRfcmVnaW1lX2V4biB0IGluZGV4ID1cbiAgaWYgaW5kZXggPCAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4KS5uZXdfcmVnaW1lXG47O1xuXG4oKiBJbiBcImFic29sdXRlIG1vZGVcIiwgYSBudW1iZXIgb2Ygc2Vjb25kcyBpcyBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgb2YgdGhhdCBtYW55XG4gICBzZWNvbmRzIGZyb20gdGhlIFVOSVggZXBvY2gsIGlnbm9yaW5nIGxlYXAgc2Vjb25kcy5cblxuICAgSW4gXCJkYXRlIGFuZCBvZmRheSBtb2RlXCIsIHlvdSBpbnRlcnByZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGFzIGEgbnVtYmVyIG9mIGRheXMgaW5cbiAgIGNvbWJpbmF0aW9uIHdpdGggYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodCwgd2hpY2ggZ2l2ZXMgeW91IGEgY2FsZW5kYXIgZGF5IGFuZFxuICAgYSBjbG9jayBmYWNlIHRpbWUuIFRoZW4geW91IHRha2UgdGhlIHRpbWUgdGhhdCB0aG9zZSByZXByZXNlbnQgaW4gc29tZSByZWxldmFudFxuICAgdGltZXpvbmUuXG5cbiAgIE9mIGNvdXJzZSwgaWYgdGhlIHRpbWV6b25lIGluIHF1ZXN0aW9uIGhhcyBEU1Qgc2hpZnRzLCB0aGUgZGF0ZSBhbmQgb2ZkYXkgbWlnaHRcbiAgIHJlcHJlc2VudCB0d28gb3IgemVybyB0aW1lcy4gVGhlc2UgdGltZXMgd2lsbCBiZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZWl0aGVyIHRoZVxuICAgcHJldmlvdXMgVVRDIG9mZnNldCBvciB0aGUgbmV4dCBvbmUsIGluIGEgd2F5IHdob3NlIHByZWNpc2UgZGV0YWlscyB5b3UgcHJvYmFibHlcbiAgIHNob3VsZG4ndCBkZXBlbmQgb24uXG5cbiAgIChGb3IgdGhlIGN1cmlvdXMsIHdoYXQgd2UgZG8gaXM6IGNvbXB1dGUgdGhlIFwicmVsYXRpdmUgdGltZVwiIG9mIHRoZSBzaGlmdCBhY2NvcmRpbmcgdG9cbiAgIHRoZSBuZXcgcmVnaW1lLCBhbmQgYXNzaWduIHJlbGF0aXZlIHRpbWVzIHRvIHRoZSBvbGQgcmVnaW1lIG9yIG5ldyByZWdpbWUgZGVwZW5kaW5nIG9uXG4gICB3aGljaCBzaWRlIG9mIHRoZSBzaGlmdCB0aW1lIHRoZXkgb2NjdXIuIFNpbmNlIHRoaXMgYW1vdW50cyB0byB1c2luZyB0aGUgb2xkIHJlZ2ltZVxuICAgd2hlbiB0aGUgY2xvY2tzIG1vdmUgZm9yd2FyZCBhbmQgdGhlIG5ldyByZWdpbWUgd2hlbiB0aGUgY2xvY2tzIG1vdmUgYmFjaywgaXQnc1xuICAgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB0aGUgY29ycmVzcG9uZGluZyBUaW1lLnQncyByZWxhdGl2ZSB0byBib3RoIHRoZSBvbGQgYW5kIHRoZVxuICAgbmV3IHJlZ2ltZSBhbmQgcGlja2luZyB0aGUgb25lIHRoYXQgb2NjdXJzIGxhdGVyLiBZZXMsIGxhdGVyLiBJIGhhZCB0byBkcmF3IGEgZGlhZ3JhbVxuICAgdG8gcGVyc3VhZGUgbXlzZWxmIHRoYXQgaXQncyB0aGF0IHdheSByb3VuZCwgYnV0IGl0IGlzLilcbiopXG5tb2R1bGUgTW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWJzb2x1dGVcbiAgICB8IERhdGVfYW5kX29mZGF5XG5lbmRcblxubGV0IGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlICh4IDogVHJhbnNpdGlvbi50KSA9XG4gIGxldCBvcGVuIEludDYzLk8gaW5cbiAgbWF0Y2ggKG1vZGUgOiBNb2RlLnQpIHdpdGhcbiAgfCBBYnNvbHV0ZSAtPiB4LnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaFxuICB8IERhdGVfYW5kX29mZGF5IC0+XG4gICAgeC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggKyB4Lm5ld19yZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCA8IDAgfHwgSW50NjMuKCA+PSApIHNlY29uZHMgKGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlIHQudHJhbnNpdGlvbnMuKGluZGV4KSlcbjs7XG5cbmxldCBpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcyA9XG4gIGluZGV4ICsgMSA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc1xuICB8fCBJbnQ2My4oIDwgKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCArIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgOiBJbmRleC50ID1cbiAgQXJyYXkuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmFuc2l0aW9ucyBgTGFzdF9vbl9sZWZ0IH5zZWdtZW50X29mOihmdW4gdHJhbnNpdGlvbiAtPlxuICAgIGlmIEludDYzLiggPD0gKSAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgdHJhbnNpdGlvbiB+bW9kZSkgc2Vjb25kcyB0aGVuIGBMZWZ0IGVsc2UgYFJpZ2h0KVxuICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbjs7XG5cbmxldCBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kcyA9XG4gIGxldCBpbmRleCA9XG4gICAgbGV0IGluZGV4ID0gdC5sYXN0X3JlZ2ltZV9pbmRleCBpblxuICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBiZWZvcmUgY2FjaGVkIGluZGV4OyB0cnkgcHJldmlvdXMgaW5kZXggKilcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmRleCA9IGluZGV4IC0gMSBpblxuICAgICAgaWYgbm90IChpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAgICgqIHRpbWUgaXMgYmVmb3JlIHByZXZpb3VzIGluZGV4OyBmYWxsIGJhY2sgb24gYmluYXJ5IHNlYXJjaCAqKVxuICAgICAgdGhlblxuICAgICAgICBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzXG4gICAgICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleCBhbmQgbm90IGJlZm9yZSBwcmV2aW91cywgc28gd2l0aGluIHByZXZpb3VzICopXG4gICAgICBlbHNlIGluZGV4KVxuICAgIGVsc2UgaWYgbm90IChpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAoKiB0aW1lIGlzIGFmdGVyIGNhY2hlZCBpbmRleDsgdHJ5IG5leHQgaW5kZXggKilcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmRleCA9IGluZGV4ICsgMSBpblxuICAgICAgaWYgbm90IChpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAgICgqIHRpbWUgaXMgYWZ0ZXIgbmV4dCBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGFmdGVyIGNhY2hlZCBpbmRleCBhbmQgbm90IGFmdGVyIG5leHQsIHNvIHdpdGhpbiBuZXh0ICopXG4gICAgICBlbHNlIGluZGV4ICgqIHRpbWUgaXMgd2l0aGluIGNhY2hlZCBpbmRleCAqKSlcbiAgICBlbHNlIGluZGV4XG4gIGluXG4gIHQubGFzdF9yZWdpbWVfaW5kZXggPC0gaW5kZXg7XG4gIGluZGV4XG47O1xuXG5tb2R1bGUgVGltZV9pbl9zZWNvbmRzIDogc2lnXG4gIGluY2x1ZGUgWm9uZV9pbnRmLlRpbWVfaW5fc2Vjb25kc1xuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBTcGFuID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX2ludDYzX3NlY29uZHMgPSBGbi5pZFxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuID0gRm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICAgIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICBlbmRcblxuICBpbmNsdWRlIEFic29sdXRlXG5lbmRcblxubGV0IGluZGV4IHQgdGltZSA9XG4gIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6QWJzb2x1dGVcbjs7XG5cbmxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gIHw+IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZTpEYXRlX2FuZF9vZmRheVxuOztcblxubGV0IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleCA+PSAwICYmIGluZGV4IDwgQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNcbmxldCBpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggKyAxKVxuXG5sZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgdHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCAoaW5kZXggKyAxKVxuXG5sZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICBsZXQgdHJhbnNpdGlvbiA9IHQudHJhbnNpdGlvbnMuKGluZGV4KSBpblxuICBsZXQgYWZ0ZXIgPSB0cmFuc2l0aW9uLm5ld19yZWdpbWUgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaW5kZXggPSAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4IC0gMSkubmV3X3JlZ2ltZVxuICBpblxuICBJbnQ2My4oIC0gKSBhZnRlci51dGNfb2Zmc2V0X2luX3NlY29uZHMgYmVmb3JlLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCAoaW5kZXggKyAxKVxuOztcblxubGV0IGluZGV4X2FiYnJldmlhdGlvbl9leG4gdCBpbmRleCA9XG4gIGxldCByZWdpbWUgPSBnZXRfcmVnaW1lX2V4biB0IGluZGV4IGluXG4gIHJlZ2ltZS5hYmJydlxuOztcblxubGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gIGxldCByZWdpbWUgPSBnZXRfcmVnaW1lX2V4biB0IGluZGV4IGluXG4gIFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHMgcmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5pbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZCAoQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbikgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uMClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU291cmNlX2NvZGVfcG9zaXRpb24wKVxuIiwiaW5jbHVkZSBCYXNlLlR5cGVfZXF1YWxcblxubW9kdWxlIElkID0gc3RydWN0XG4gIGluY2x1ZGUgSWRcblxuICBtb2R1bGUgVWlkID0gc3RydWN0XG4gICAgbW9kdWxlIFVwc3RyZWFtID0gQmFzZS5UeXBlX2VxdWFsLklkLlVpZFxuICAgIGluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsLklkLlVpZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5FeHRlbmRcbiAgICAgICAgKFVwc3RyZWFtKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5UeXBlX2VxdWFsLklkLlVpZC50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoVXBzdHJlYW0pXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIFZhbGlkYXRlZF9pbnRmXG5cbm1vZHVsZSB0eXBlIFJhdyA9IFJhd1xuXG50eXBlICgncmF3LCAnd2l0bmVzcykgdCA9ICdyYXdcblxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYWxsb3dpbmdfc3Vic3RpdHV0aW9uID1cbiAgU19hbGxvd2luZ19zdWJzdGl0dXRpb24gd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYmluX2lvID0gU19iaW5faW8gd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwID1cbiAgU19iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbmxldCByYXcgdCA9IHRcblxubW9kdWxlIE1ha2UgKFJhdyA6IFJhdykgPSBzdHJ1Y3RcbiAgdHlwZSB3aXRuZXNzXG4gIHR5cGUgdCA9IFJhdy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IgPVxuICAgIEVycm9yLmNyZWF0ZVxuICAgICAgXCJ2YWxpZGF0aW9uIGZhaWxlZFwiXG4gICAgICAodCwgZXJyb3IsIFJhdy5oZXJlKVxuICAgICAgWyVzZXhwX29mOiBSYXcudCAqIEVycm9yLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZXhuIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yLnJhaXNlICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdCA9XG4gICAgbWF0Y2ggVmFsaWRhdGUucmVzdWx0IChSYXcudmFsaWRhdGUgdCkgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgdFxuICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gY3JlYXRlX2V4biAoUmF3LnRfb2Zfc2V4cCBzZXhwKVxuICBsZXQgcmF3IHQgPSB0XG5cbiAgbGV0IGNyZWF0ZV9zdGFibGVfd2l0bmVzcyByYXdfc3RhYmxlX3dpdG5lc3MgPVxuICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSByYXdfc3RhYmxlX3dpdG5lc3MgY3JlYXRlX2V4biByYXdcbiAgOztcblxuICBsZXQgdHlwZV9lcXVhbCA9IFR5cGVfZXF1YWwuVFxuZW5kXG5cbm1vZHVsZSBBZGRfYmluX2lvIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChWYWxpZGF0ZWQgOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgKFJhdylcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gUmF3LnRcblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSByYXcgPVxuICAgICAgICAgIGlmIFJhdy52YWxpZGF0ZV9iaW5pb19kZXNlcmlhbGl6YXRpb24gdGhlbiBWYWxpZGF0ZWQuY3JlYXRlX2V4biByYXcgZWxzZSByYXdcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICBlbmQpXG5lbmRcblxubW9kdWxlIEFkZF9jb21wYXJlIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBbJWNvbXBhcmU6IFJhdy50XSAocmF3IHQxKSAocmF3IHQyKVxuZW5kXG5cbm1vZHVsZSBBZGRfaGFzaCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSYXcuaGFzaF9mb2xkX3Qgc3RhdGUgKFZhbGlkYXRlZC5yYXcgdClcbiAgbGV0IGhhc2ggdCA9IFJhdy5oYXNoIChWYWxpZGF0ZWQucmF3IHQpXG5lbmRcblxubW9kdWxlIEFkZF90eXBlcmVwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChSYXcgOiBSYXdfYmluX2lvKSA9IHN0cnVjdFxuICBtb2R1bGUgVDAgPSBNYWtlIChSYXcpXG4gIGluY2x1ZGUgVDBcbiAgaW5jbHVkZSBBZGRfYmluX2lvIChSYXcpIChUMClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBNYWtlX2JpbmFibGUgKFJhdylcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQWRkX2NvbXBhcmUgKFJhdykgKFQpXG5cbiAgaW5jbHVkZSAoXG4gICAgQWRkX2hhc2ggKFJhdykgKFQpIDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kXG4gIHwgTWludXRlXG4gIHwgSG91clxuICB8IERheVxuW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoXVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBVbmlxdWVfaWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBJZCA9IElkXG5cbigqIE9ubHkgXCJtYWtlXCIgY2FuIGNhdXNlIGEgY29udGV4dC1zd2l0Y2ggdGhhdCBtaWdodCBsZWFkIHRvIGEgcmFjZS5cbiAgIFRodXMgd2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiB0aGUgY2VsbCByZW1haW5lZFxuICAgdW5jaGFuZ2VkIGFjcm9zcyB0aGlzIGNhbGwuICBUaGUgc3Vic2VxdWVudCBjb21wYXJpc29uLCBkZXJlZmVyZW5jaW5nXG4gICBhbmQgYXNzaWdubWVudCBjYW5ub3QgY2F1c2UgY29udGV4dCBzd2l0Y2hlcy4gIElmIHRoZSBjb250ZW50cyBvZiB0aGVcbiAgIGNlbGwgaGFkIGNoYW5nZWQsIHdlIHdpbGwgaGF2ZSB0byB0cnkgYWdhaW4gdG8gb2J0YWluIGEgdW5pcXVlIGlkLlxuICAgVGhpcyBpcyBlc3NlbnRpYWxseSBsaWtlIGEgc3Bpbi1sb2NrIGFuZCBpcyB2aXJ0dWFsbHkgZ3VhcmFudGVlZCB0b1xuICAgc3VjY2VlZCBxdWlja2x5LiAqKVxubGV0IHJlYyByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlID1cbiAgbGV0IHggPSAhY2VsbCBpblxuICBsZXQgbmV3X3ggPSBtYWtlIHggaW5cbiAgaWYgcGh5c19lcXVhbCAhY2VsbCB4XG4gIHRoZW4gKFxuICAgIGNlbGwgOj0gbmV3X3g7XG4gICAgeClcbiAgZWxzZSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlXG47O1xuXG5tb2R1bGUgSW50ICgpID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG5cbm1vZHVsZSBJbnQ2MyAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludDYzXG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB2ZXJ5IG11Y2ggZGVwZW5kZW50IG9uIHRoZSBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcy4gIFNob3VsZCB0aGVcbiAgIHdheSB0aGUgY29tcGlsZXIgcmVwcmVzZW50cyB2YXJpb3VzIHR5cGVzIGNoYW5nZSwgaXQgbmVlZHMgdG8gYmUgcmVmbGVjdGVkIGluIHRoaXNcbiAgIG1vZHVsZSwgb3RoZXJ3aXNlIGJhZCB0aGluZ3MgY291bGQgaGFwcGVuLiAgVGhlcmVmb3JlIHRoZSBjb252ZXJzaW9ucyBhbmRcbiAgIHJlcHJlc2VudGF0aW9ucyBhcmUgdGVzdGVkIHRob3JvdWdobHkgaW4gWy4uL3Rlc3QvdGVzdF93aXRuZXNzLm1sXSBhbmRcbiAgIFsuLi90ZXN0L3Rlc3RfY29udmVyc2lvbnMubWxdXG4qKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgSGFzaF9zZXQgPSBCYXNlLkhhc2hfc2V0XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAoKiBUaGUgaW50ZWdlcnMgaGVyZSBhcmUgdGhlIHZhbHVlcyB1bmRlcmx5aW5nIHRoZSBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhleSBhbHJlYWR5XG4gICAgIGFyZSBoYXNoZXMgb2YgY29uc3RydWN0b3IgbmFtZXMsIGFuZCBoZW5jZSBhcmUgZXhwZWN0ZWQgdG8gYmUgdW5pZm9ybWx5XG4gICAgIGRpc3RyaWJ1dGVkLiAqKVxuICBsZXQgaGFzaCB4ID0geFxuZW5kXG5cbm1vZHVsZSBBbGxvd2VkX2ludHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vbmVcbiAgICB8IEFsbFxuICAgIHwgSGFzaF9zZXQgb2YgSGFzaF9zZXQuTShLZXkpLnRcbiAgICB8IEZyb21femVyb190byBvZiBpbnRcblxuICBsZXQgX2ludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIHwgQWxsIHwgSGFzaF9zZXQgXyAtPiAoKVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gYXNzZXJ0IChuID49IDApXG4gIDs7XG5cbiAgbGV0IGludF9pc192YWx1ZSB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgQWxsIC0+IHRydWVcbiAgICB8IEhhc2hfc2V0IGhhc2hfc2V0IC0+IEhhc2hfc2V0Lm1lbSBoYXNoX3NldCBpXG4gICAgfCBGcm9tX3plcm9fdG8gbiAtPiAwIDw9IGkgJiYgaSA8PSBuXG4gIDs7XG5lbmRcblxubW9kdWxlIEltbWVkaWFjeSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWx3YXlzXG4gICAgfCBTb21ldGltZXNcbiAgICB8IE5ldmVyXG4gICAgfCBVbmtub3duXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQWx3YXlzIC0+IFwiQWx3YXlzXCJcbiAgICB8IFNvbWV0aW1lcyAtPiBcIlNvbWV0aW1lc1wiXG4gICAgfCBOZXZlciAtPiBcIk5ldmVyXCJcbiAgICB8IFVua25vd24gLT4gXCJVbmtub3duXCJcbiAgOztcbmVuZFxuXG5vcGVuIEltbWVkaWFjeVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogJ2EgVHlwZW5hbWUudCAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfd2l0aF9uYW1lIDogc3RyaW5nIC0+IEltbWVkaWFjeS50IC0+IEFsbG93ZWRfaW50cy50IC0+IF8gdFxuICB2YWwgaW1tZWRpYWN5IDogXyB0IC0+IEltbWVkaWFjeS50XG4gIHZhbCBhbGxvd2VkX2ludHMgOiBfIHQgLT4gQWxsb3dlZF9pbnRzLnRcbiAgdmFsIHR5cGVuYW1lIDogXyB0IC0+IHN0cmluZ1xuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgOiBzaWdcbiAgICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gICAgdmFsIGludDY0IDogaW50NjQgdFxuICAgIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gICAgdmFsIGFycmF5IDogXyBhcnJheSB0XG4gICAgdmFsIHJlZl8gOiBfIHJlZiB0XG4gICAgdmFsIHR1cGxlMiA6IChfICogXykgdFxuICAgIHZhbCB0dXBsZTMgOiAoXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNCA6IChfICogXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNSA6IChfICogXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCBmdW5jdGlvbl8gOiAoXyAtPiBfKSB0XG4gIGVuZFxuXG4gIHZhbCBuZXZlciA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgdW5rbm93biA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgb3B0aW9uIDogXyB0XG4gIHZhbCBsaXN0IDogXyB0XG4gIHZhbCBtYWdpYyA6IF8gdCAtPiBfIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRfID1cbiAgICB7IGltbWVkaWFjeSA6IEltbWVkaWFjeS50XG4gICAgOyBhbGxvd2VkX2ludHMgOiBBbGxvd2VkX2ludHMudFxuICAgIDsgdHlwZW5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gdF9cblxuICBsZXQgY3JlYXRlX3dpdGhfbmFtZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICB7IGltbWVkaWFjeTsgYWxsb3dlZF9pbnRzOyB0eXBlbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICBjcmVhdGVfd2l0aF9uYW1lIChUeXBlbmFtZS5uYW1lIHR5cGVuYW1lKSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzXG4gIDs7XG5cbiAgbGV0IGltbWVkaWFjeSB0ID0gdC5pbW1lZGlhY3lcbiAgbGV0IGFsbG93ZWRfaW50cyB0ID0gdC5hbGxvd2VkX2ludHNcbiAgbGV0IHR5cGVuYW1lIHQgPSB0LnR5cGVuYW1lXG4gIGxldCBtYWdpYyB0ID0gdFxuICBsZXQgbmV2ZXJfd2l0aF9uYW1lIG5hbWUgPSBjcmVhdGVfd2l0aF9uYW1lIG5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgbmV2ZXIgdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgdW5rbm93biB0eXBlbmFtZSA9IGNyZWF0ZSB0eXBlbmFtZSBVbmtub3duIE5vbmVcblxuICBsZXQgb3B0aW9uID0gY3JlYXRlX3dpdGhfbmFtZSBcIm9wdGlvblwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuICBsZXQgbGlzdCA9IGNyZWF0ZV93aXRoX25hbWUgXCJsaXN0XCIgU29tZXRpbWVzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5cbiAgbW9kdWxlIE5ldmVyX3ZhbHVlcyA9IHN0cnVjdFxuICAgICgqIGludDMyIGlzIGJveGVkIGV2ZW4gb24gNjRiIHBsYXRmb3JtIGF0IHRoZSBtb21lbnQuICopXG4gICAgbGV0IGludDMyID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50MzJcbiAgICBsZXQgaW50NjQgPSBuZXZlciB0eXBlbmFtZV9vZl9pbnQ2NFxuICAgIGxldCBuYXRpdmVpbnQgPSBuZXZlciB0eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICBsZXQgZmxvYXQgPSBuZXZlciB0eXBlbmFtZV9vZl9mbG9hdFxuICAgIGxldCBzdHJpbmcgPSBuZXZlciB0eXBlbmFtZV9vZl9zdHJpbmdcbiAgICBsZXQgYnl0ZXMgPSBuZXZlciB0eXBlbmFtZV9vZl9ieXRlc1xuICAgIGxldCBhcnJheSA9IG5ldmVyX3dpdGhfbmFtZSBcImFycmF5XCJcbiAgICBsZXQgcmVmXyA9IG5ldmVyX3dpdGhfbmFtZSBcInJlZlwiXG4gICAgbGV0IHR1cGxlMiA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlMlwiXG4gICAgbGV0IHR1cGxlMyA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlM1wiXG4gICAgbGV0IHR1cGxlNCA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNFwiXG4gICAgbGV0IHR1cGxlNSA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNVwiXG5cbiAgICBsZXQgZnVuY3Rpb25fID0gbmV2ZXJfd2l0aF9uYW1lIFwiZnVuY3Rpb25cIlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9pbnQgQWx3YXlzIEFsbG93ZWRfaW50cy5BbGxcbmxldCB1bml0ID0gY3JlYXRlIHR5cGVuYW1lX29mX3VuaXQgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5sZXQgYm9vbCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9ib29sIEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAxKVxubGV0IGNoYXIgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfY2hhciBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMjU1KVxuXG5tb2R1bGUgQ29tcHV0YXRpb25faW1wbCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljLlZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcblxuICBsZXQgcmVmXyBfID0gcmVmX1xuICBsZXQgYXJyYXkgXyA9IGFycmF5XG4gIGxldCB0dXBsZTIgXyBfID0gdHVwbGUyXG4gIGxldCB0dXBsZTMgXyBfIF8gPSB0dXBsZTNcbiAgbGV0IHR1cGxlNCBfIF8gXyBfID0gdHVwbGU0XG4gIGxldCB0dXBsZTUgXyBfIF8gXyBfID0gdHVwbGU1XG4gIGxldCBmdW5jdGlvbl8gXyBfID0gZnVuY3Rpb25fXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbiAgbGV0IG9wdGlvbiBfID0gb3B0aW9uXG4gIGxldCBsaXN0IF8gPSBsaXN0XG5cbiAgKCogQW4gW2EgTGF6eS50XSBtaWdodCBiZSBhIGJveGVkIGNsb3N1cmUsIHNvIG11c3QgaGF2ZSBpbW1lZGlhY3kgZWl0aGVyIFtOZXZlcl0gb3JcbiAgICAgW1NvbWV0aW1lc10uICBBbiBbYSBMYXp5LnRdIHZhbHVlIGNvdWxkIGJlIGltbWVkaWF0ZSBpZiBbYV0gaXMgaW1tZWRpYXRlLiAgQnV0IGlmIFthXVxuICAgICBpcyBuZXZlciBpbW1lZGlhdGUsIHRoZW4gW2EgTGF6eS50XSBjYW5ub3QgYmUuICopXG4gIGxldCBsYXp5X3QgdCA9XG4gICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgICB8IE5ldmVyIC0+IE5ldmVyXG4gICAgICB8IFVua25vd24gLT4gVW5rbm93blxuICAgICAgfCBTb21ldGltZXMgfCBBbHdheXMgLT4gU29tZXRpbWVzXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9uYW1lIFwibGF6eV90XCIgaW1tZWRpYWN5IChhbGxvd2VkX2ludHMgdClcbiAgOztcblxuICBsZXQgcG9zc2libHlfdW5ib3hlZCB0eXBlbmFtZSBjaGlsZF90eXBlID1cbiAgICBtYXRjaCBpbW1lZGlhY3kgY2hpbGRfdHlwZSB3aXRoXG4gICAgfCBOZXZlciAtPiBuZXZlciB0eXBlbmFtZVxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IFNvbWV0aW1lcyAtPiB1bmtub3duIHR5cGVuYW1lXG4gIDs7XG5cbiAgbGV0IHJlY29yZCByID1cbiAgICBpZiBSZWNvcmQubGVuZ3RoIHIgPiAxXG4gICAgdGhlbiBuZXZlciAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcilcbiAgICBlbHNlIChcbiAgICAgIGxldCAoRmllbGQgdGhlX29ubHlfZmllbGQpID0gUmVjb3JkLmZpZWxkIHIgMCBpblxuICAgICAgcG9zc2libHlfdW5ib3hlZCAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcikgKEZpZWxkLnRyYXZlcnNlIHRoZV9vbmx5X2ZpZWxkKSlcbiAgOztcblxuICAoKiBWYXJpYW50cyB3aXRoIGFsbCBjb25zdHJ1Y3RvcnMgaGF2aW5nIG5vIGFyZ3VtZW50cyBhcmUgYWx3YXlzIGltbWVkaWF0ZTsgdmFyaWFudHNcbiAgICAgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBzb21lIGFyZ3VtZW50cyBhcmUgbmV2ZXIgaW1tZWRpYXRlOyBtaXhlZCB2YXJpYW50cyBhcmVcbiAgICAgc29tZXRpbWVzIGltbWVkaWF0ZS5cblxuICAgICBJZiBhIHZhcmlhbnQgaGFzIGEgc2luZ2xlIGNvbnN0cnVjdG9yLCBhbmQgdGhlIGNvbnN0cnVjdG9yIGhhcyBhbiBhcmd1bWVudCwgdGhlXG4gICAgIHZhcmlhbnQgY2FuIGJlIHVuYm94ZWQuIElmIHVuYm94ZWQsIGVpdGhlciBleHBsaWNpdGx5IG9yIGJ5IGRlZmF1bHQgKGRlcGVuZGluZyBvblxuICAgICBjb21waWxlciBzZXR0aW5ncyksIHRoZSByZXByZXNlbnRhdGlvbiBpcyBzaW1wbHkgdGhlIGFyZ3VtZW50LiBPdGhlcndpc2UsIHRoZSBydWxlc1xuICAgICBhYm92ZSBhcHBseSBub3JtYWxseS4gKilcbiAgbGV0IHZhcmlhbnQgdmFyaWFudCA9XG4gICAgbGV0IG5vX2FyZ19saXN0LCBvbmVfYXJnX2xpc3QsIG1vcmVfYXJnX2xpc3QgPVxuICAgICAgVmFyaWFudC5mb2xkIHZhcmlhbnQgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKG5vLCBvbmUsIG1vcmUpIChUYWcgdCBhcyB0YWcpIC0+XG4gICAgICAgIG1hdGNoIFRhZy5hcml0eSB0IHdpdGhcbiAgICAgICAgfCAwIC0+IHRhZyA6OiBubywgb25lLCBtb3JlXG4gICAgICAgIHwgMSAtPiBubywgdGFnIDo6IG9uZSwgbW9yZVxuICAgICAgICB8IF8gLT4gbm8sIG9uZSwgdGFnIDo6IG1vcmUpXG4gICAgaW5cbiAgICBtYXRjaCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0IHdpdGhcbiAgICB8IFtdLCBbIFRhZyB0YWcgXSwgW10gd2hlbiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCkgLT5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KSAoVGFnLnRyYXZlcnNlIHRhZylcbiAgICB8IFtdLCBbXSwgW10gLT5cbiAgICAgICgqIFdlIGRvbid0IGhhdmUgYW4gZXhwbGljdCB3YXkgb2Ygc2F5aW5nIGEgdHlwZSBpcyB1bmluaGFiaXRlZC4gKilcbiAgICAgIHVua25vd24gKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgW10sIF8gOjogXywgXyB8IFtdLCBfLCBfIDo6IF8gLT4gbmV2ZXIgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgXyA6OiBfLCBfLCBfIC0+XG4gICAgICBsZXQgbm9fYXJnX2NvdW50ID0gTGlzdC5sZW5ndGggbm9fYXJnX2xpc3QgaW5cbiAgICAgIGxldCBhbGxvd2VkX2ludHMgPVxuICAgICAgICBpZiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudClcbiAgICAgICAgdGhlbiBBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIChub19hcmdfY291bnQgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgaGFzaF9zZXQgPSBIYXNoX3NldC5jcmVhdGUgKG1vZHVsZSBLZXkpIH5zaXplOihub19hcmdfY291bnQgKiAyKSBpblxuICAgICAgICAgIExpc3QuaXRlciBub19hcmdfbGlzdCB+ZjooZnVuIChUYWcgdGFnKSAtPlxuICAgICAgICAgICAgbWF0Y2ggVGFnLmNyZWF0ZSB0YWcgd2l0aFxuICAgICAgICAgICAgfCBUYWcuQ29uc3QgXyAtPiBIYXNoX3NldC5hZGQgaGFzaF9zZXQgKFRhZy5vY2FtbF9yZXByIHRhZylcbiAgICAgICAgICAgIHwgVGFnLkFyZ3MgXyAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgIEFsbG93ZWRfaW50cy5IYXNoX3NldCBoYXNoX3NldClcbiAgICAgIGluXG4gICAgICBsZXQgaW1tZWRpYWN5ID1cbiAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBvbmVfYXJnX2xpc3QgJiYgTGlzdC5pc19lbXB0eSBtb3JlX2FyZ19saXN0XG4gICAgICAgIHRoZW4gQWx3YXlzXG4gICAgICAgIGVsc2UgU29tZXRpbWVzXG4gICAgICBpblxuICAgICAgY3JlYXRlIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBuYW1lID0gXCJpc19pbW1lZGlhdGVcIlxuICBsZXQgcmVxdWlyZWQgPSBbXVxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSAoKVxuICAgIGVuZFxuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgcmVmXG5cbiAgICAoKiBUaGUgZGVmYXVsdCB3aXRuZXNzIC0gd2hpY2ggaXMgY3JlYXRlZCBieSBjYWxsaW5nIFtpbml0XSBhbmQgcmVjb3ZlcmVkIGF0IGFueSBsYXRlclxuICAgICAgIHBvaW50IGJ5IGNhbGxpbmcgW2dldF93aXBfY29tcHV0YXRpb25dIC0gY2FuIG9ubHkgYmUgdXNlZCBpbiBhIHJlY3Vyc2l2ZSB0eXBlLlxuICAgICAgIE90aGVyIHR5cGVzIHRoYXQgZG9uJ3QgdXNlIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSB3aWxsIGp1c3QgZXZhbHVhdGUgdG8gdGhlIGFjdHVhbFxuICAgICAgIHdpdG5lc3Mgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBpbml0aWFsIGR1bW15IG9uZS4gKilcbiAgICBsZXQgaW5pdCBfIG5hbWUgPSByZWYgKGNyZWF0ZSBuYW1lIFNvbWV0aW1lcyBBbGxvd2VkX2ludHMuTm9uZSlcbiAgICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBjb21wID0gIWNvbXBcblxuICAgIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gciB0ID1cbiAgICAgIHIgOj0gdDtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IHNoYXJlIF8gPSB0cnVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gVHlwZV9nZW5lcmljLk1ha2UgKENvbXB1dGF0aW9uX2ltcGwpXG5cbmxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICBsZXQgKGBnZW5lcmljIHQpID0gR2VuZXJpYy5vZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgdFxuOztcblxubW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVycyAoTSA6IHNpZ1xuICAgIHZhbCBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgd2l0bmVzcyB0eXBlcmVwMSB0eXBlcmVwMiA9XG4gICAgbGV0IHQxID0gb2ZfdHlwZXJlcCB0eXBlcmVwMSBpblxuICAgIGxldCB0MiA9IG9mX3R5cGVyZXAgdHlwZXJlcDIgaW5cbiAgICBsZXQgaTEgPSBpbW1lZGlhY3kgdDEgaW5cbiAgICBsZXQgaTIgPSBpbW1lZGlhY3kgdDIgaW5cbiAgICBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBpMilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgaXMgbm90IGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSkpXG4gICAgZWxzZSBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBNLmltbWVkaWFjeSlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgZG9lcyBub3QgaGF2ZSBkZXNpcmVkIGltbWVkaWFjeTogd2FudGVkICVzIGJ1dCBnb3QgJXNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSlcbiAgICAgICAgICAgKEltbWVkaWFjeS50b19zdHJpbmcgTS5pbW1lZGlhY3kpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIGkxKSlcbiAgICBlbHNlIHQxXG4gIDs7XG5cbiAgKCogYWx3YXlzIGltbWVkaWF0ZSAqKVxuICBsZXQgcmEgPSBUeXBlcmVwLkludFxuXG4gICgqIG5ldmVyIGltbWVkaWF0ZSAqKVxuICBsZXQgcm4gPSBUeXBlcmVwLlN0cmluZ1xuXG4gICgqIEVhY2ggb2YgdGhlIFtGb3JfYWxsX3BhcmFtZXRlcnNfKl0gZnVuY3RvcnMgd29ya3MgYnkgaW5zdGFudGlhdGluZyB0aGUgbi1hcnkgdHlwZVxuICAgICB3aXRoIGFsbCBbQWx3YXlzXSB0eXBlcywgYW5kIHRoZW4gd2l0aCBhbGwgW05ldmVyXSB0eXBlcy4gIElmIHRob3NlIHByb2R1Y2UgdGhlIHNhbWVcbiAgICAgaW1tZWRpYWN5LCB0aGVuIHdlIGNvbmNsdWRlIHRoYXQgdGhlIG4tYXJ5IHR5cGUgaXMgaW5kZXBlbmRlbnQgb2YgaXRzIGFyZ3VtZW50cy4gKilcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MxIChYIDogVHlwZXJlcGFibGUuUzEpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSkgKFgudHlwZXJlcF9vZl90IHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MyIChYIDogVHlwZXJlcGFibGUuUzIpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MzIChYIDogVHlwZXJlcGFibGUuUzMpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M0IChYIDogVHlwZXJlcGFibGUuUzQpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M1IChYIDogVHlwZXJlcGFibGUuUzUpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcbmVuZFxuXG5sZXQgaW50X2lzX3ZhbHVlIHQgaW50ID0gQWxsb3dlZF9pbnRzLmludF9pc192YWx1ZSAoYWxsb3dlZF9pbnRzIHQpIGludFxuXG5sZXQgaW50X2FzX3ZhbHVlICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnQgdGhlbiBTb21lIChPYmoubWFnaWMgKGludCA6IGludCkgOiBhKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfYXNfdmFsdWVfZXhuICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnRcbiAgdGhlbiAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLmludF9hc192YWx1ZV9leG46IHR5cGVuYW1lOiVTIGludDolZFwiIChULnR5cGVuYW1lIHQpIGludClcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnRfZXhuICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcbiAgdGhlbiAoT2JqLm1hZ2ljIChhIDogYSkgOiBpbnQpXG4gIGVsc2UgZmFpbHdpdGggKHNwcmludGYgXCJJbW1lZGlhdGUudmFsdWVfYXNfaW50X2V4bjogdHlwZW5hbWU6JVNcIiAoVC50eXBlbmFtZSB0KSlcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPVxuICBpZiBPYmouaXNfaW50IChPYmoucmVwciBhKSB0aGVuIFNvbWUgKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KSBlbHNlIE5vbmVcbjs7XG5cbmxldCB2YWx1ZV9pc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPSBPYmouaXNfaW50IChPYmoucmVwciBhKVxuXG5tb2R1bGUgQWx3YXlzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IEFsd2F5c1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IEFsd2F5cyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBOZXZlciB8IFNvbWV0aW1lcyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXRbQGlubGluZSBhbHdheXNdIHZhbHVlX2FzX2ludCAodHlwZSBhKSBfIGEgPSBhIHw+IChPYmoubWFnaWMgOiBhIC0+IGludClcbiAgbGV0IGludCA9IGludFxuICBsZXQgY2hhciA9IGNoYXJcbiAgbGV0IGJvb2wgPSBib29sXG4gIGxldCB1bml0ID0gdW5pdFxuZW5kXG5cbm1vZHVsZSBTb21ldGltZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gU29tZXRpbWVzXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgU29tZXRpbWVzIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IE5ldmVyIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuICBsZXQgaW50X2FzX3ZhbHVlID0gaW50X2FzX3ZhbHVlXG4gIGxldCBpbnRfYXNfdmFsdWVfZXhuID0gaW50X2FzX3ZhbHVlX2V4blxuICBsZXQgaW50X2lzX3ZhbHVlID0gaW50X2lzX3ZhbHVlXG4gIGxldCB2YWx1ZV9hc19pbnQgPSB2YWx1ZV9hc19pbnRcbiAgbGV0IHZhbHVlX2FzX2ludF9leG4gPSB2YWx1ZV9hc19pbnRfZXhuXG4gIGxldCB2YWx1ZV9pc19pbnQgPSB2YWx1ZV9pc19pbnRcbiAgbGV0IG9wdGlvbiA9IG9wdGlvblxuICBsZXQgbGlzdCA9IGxpc3RcbmVuZFxuXG5tb2R1bGUgTmV2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gTmV2ZXJcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBOZXZlciAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcbmVuZFxuXG50eXBlICdhIGRlc3QgPVxuICB8IEFsd2F5cyBvZiAnYSBBbHdheXMudFxuICB8IFNvbWV0aW1lcyBvZiAnYSBTb21ldGltZXMudFxuICB8IE5ldmVyIG9mICdhIE5ldmVyLnRcbiAgfCBVbmtub3duXG5cbmxldCBkZXN0IHQgPVxuICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gIHwgQWx3YXlzIC0+IEFsd2F5cyB0XG4gIHwgU29tZXRpbWVzIC0+IFNvbWV0aW1lcyB0XG4gIHwgTmV2ZXIgLT4gTmV2ZXIgdFxuICB8IFVua25vd24gLT4gVW5rbm93blxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUMSA6IFQpIChUMiA6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IFQxLnQgKiBUMi50XG5lbmRcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiA9IGEsIGJcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiAtPiBmIChhLCBiKVxuICA7O1xuXG4gIGxldCB1bmN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biAoYSwgYikgLT4gZiBhIGJcbiAgOztcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSkgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMV9pbW11dFwiXG5cbiAgWyUlZWxzZV1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICBsZXQgbWFwICh4LCB5KSB+ZiA9IGYgeCwgZiB5XG4gIGxldCBtYXBfZnN0ICh4LCB5KSB+ZiA9IGYgeCwgeVxuICBsZXQgbWFwX3NuZCAoeCwgeSkgfmYgPSB4LCBmIHlcbiAgbGV0IG1hcF9ib3RoICh4LCB5KSB+ZjEgfmYyID0gZjEgeCwgZjIgeVxuICBsZXQgbWFwMiAoeDEsIHkxKSAoeDIsIHkyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTJcblxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiAoeCwgeSkgKHgnLCB5JykgPVxuICAgIG1hdGNoIGNtcDEgeCB4JyB3aXRoXG4gICAgfCAwIC0+IGNtcDIgeSB5J1xuICAgIHwgaSAtPiBpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiAoeCwgeSkgKHgnLCB5JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5J1xuICBsZXQgc3dhcCAoYSwgYikgPSBiLCBhXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21wYXJlIGNtcDEgY21wMiA9IGNvbXBhcmUgfmNtcDEgfmNtcDJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFQzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2MgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiBjID0gYSwgYiwgY1xuXG4gIGxldCBjdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gYSBiIGMgLT4gZiAoYSwgYiwgYylcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIsIGMpIC0+IGYgYSBiIGNcbiAgOztcblxuICBsZXQgbWFwICh4LCB5LCB6KSB+ZiA9IGYgeCwgZiB5LCBmIHpcbiAgbGV0IG1hcF9mc3QgKHgsIHksIHopIH5mID0gZiB4LCB5LCB6XG4gIGxldCBtYXBfc25kICh4LCB5LCB6KSB+ZiA9IHgsIGYgeSwgelxuICBsZXQgbWFwX3RyZCAoeCwgeSwgeikgfmYgPSB4LCB5LCBmIHpcbiAgbGV0IG1hcF9hbGwgKHgsIHksIHopIH5mMSB+ZjIgfmYzID0gZjEgeCwgZjIgeSwgZjMgelxuICBsZXQgbWFwMiAoeDEsIHkxLCB6MSkgKHgyLCB5MiwgejIpIH5mID0gZiB4MSB4MiwgZiB5MSB5MiwgZiB6MSB6MlxuXG4gIFslJWlmIGZsYW1iZGFfYmFja2VuZF1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXywgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxX2ltbXV0XCJcblxuICBbJSVlbHNlXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoKCdhLCBfLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgZ2V0MiA6ICgoXywgJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFRoZXJlJ3Mgbm8gJWZpZWxkMi4uLi4qKVxuICBsZXQgZ2V0MyAoXywgXywgYSkgPSBhXG5cbiAgKCogbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uICAqKVxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiB+Y21wMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID1cbiAgICBsZXQgYzEgPSBjbXAxIHggeCcgaW5cbiAgICBpZiBjMSA8PiAwXG4gICAgdGhlbiBjMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMyID0gY21wMiB5IHknIGluXG4gICAgICBpZiBjMiA8PiAwIHRoZW4gYzIgZWxzZSBjbXAzIHogeicpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiB+ZXEzICh4LCB5LCB6KSAoeCcsIHknLCB6JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5JyAmJiBlcTMgeiB6J1xuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmFibGVfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaGVyX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSAoUzEgOiBTZXhwYWJsZS5TKSAoUzIgOiBTZXhwYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTMS50ICogUzIudCBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlIChCMSA6IEJpbmFibGUuUykgKEIyIDogQmluYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCMS50ICogQjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIENvbXBhcmF0b3IgKFMxIDogQ29tcGFyYXRvci5TKSAoUzIgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoUzEpIChTMilcblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9XG4gICAgKFMxLmNvbXBhcmF0b3Jfd2l0bmVzcywgUzIuY29tcGFyYXRvcl93aXRuZXNzKSBUMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQyLmNvbXBhcmF0b3IgUzEuY29tcGFyYXRvciBTMi5jb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIENvbXBhcmFibGVfcGxhaW4gKFMxIDogQ29tcGFyYWJsZS5TX3BsYWluKSAoUzIgOiBDb21wYXJhYmxlLlNfcGxhaW4pID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yIChTMSkgKFMyKVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlIChTMSA6IENvbXBhcmFibGVfc2V4cGFibGUpIChTMiA6IENvbXBhcmFibGVfc2V4cGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwYWJsZSAoUzEpIChTMilcblxuICAgIGxldCBjb21wYXJlIChzMSwgczIpIChzMScsIHMyJykgPVxuICAgICAgbWF0Y2ggUzEuY29tcGFyZSBzMSBzMScgd2l0aFxuICAgICAgfCAwIC0+IFMyLmNvbXBhcmUgczIgczInXG4gICAgICB8IHggLT4geFxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgSGFzaGVyIChIMSA6IEhhc2hlcl9zZXhwYWJsZSkgKEgyIDogSGFzaGVyX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUyA6IEhhc2hhYmxlX3NleHBhYmxlKSA6XG4gIEhhc2hlcl9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGVfdCAoUzEgOiBIYXNoYWJsZV9zZXhwYWJsZSkgKFMyIDogSGFzaGFibGVfc2V4cGFibGUpID1cbiAgSGFzaGVyXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZVxuICAgICAgIChTMSkpXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUzIpKVxuXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZV90XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBTdW5cbiAgICAgICAgfCBNb25cbiAgICAgICAgfCBUdWVcbiAgICAgICAgfCBXZWRcbiAgICAgICAgfCBUaHVcbiAgICAgICAgfCBGcmlcbiAgICAgICAgfCBTYXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoLCBxdWlja2NoZWNrLCBzdGFibGVfd2l0bmVzcywgdHlwZXJlcF1cblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU1VOXCJcbiAgICAgICAgfCBNb24gLT4gXCJNT05cIlxuICAgICAgICB8IFR1ZSAtPiBcIlRVRVwiXG4gICAgICAgIHwgV2VkIC0+IFwiV0VEXCJcbiAgICAgICAgfCBUaHUgLT4gXCJUSFVcIlxuICAgICAgICB8IEZyaSAtPiBcIkZSSVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU0FUXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmdfbG9uZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU3VuZGF5XCJcbiAgICAgICAgfCBNb24gLT4gXCJNb25kYXlcIlxuICAgICAgICB8IFR1ZSAtPiBcIlR1ZXNkYXlcIlxuICAgICAgICB8IFdlZCAtPiBcIldlZG5lc2RheVwiXG4gICAgICAgIHwgVGh1IC0+IFwiVGh1cnNkYXlcIlxuICAgICAgICB8IEZyaSAtPiBcIkZyaWRheVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU2F0dXJkYXlcIlxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19pbnRlcm5hbCBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVwcGVyY2FzZSBzIHdpdGhcbiAgICAgICAgfCBcIlNVTlwiIHwgXCJTVU5EQVlcIiAtPiBTdW5cbiAgICAgICAgfCBcIk1PTlwiIHwgXCJNT05EQVlcIiAtPiBNb25cbiAgICAgICAgfCBcIlRVRVwiIHwgXCJUVUVTREFZXCIgLT4gVHVlXG4gICAgICAgIHwgXCJXRURcIiB8IFwiV0VETkVTREFZXCIgLT4gV2VkXG4gICAgICAgIHwgXCJUSFVcIiB8IFwiVEhVUlNEQVlcIiAtPiBUaHVcbiAgICAgICAgfCBcIkZSSVwiIHwgXCJGUklEQVlcIiAtPiBGcmlcbiAgICAgICAgfCBcIlNBVFwiIHwgXCJTQVRVUkRBWVwiIC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9pbnRfZXhuIGkgPVxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgfCAwIC0+IFN1blxuICAgICAgICB8IDEgLT4gTW9uXG4gICAgICAgIHwgMiAtPiBUdWVcbiAgICAgICAgfCAzIC0+IFdlZFxuICAgICAgICB8IDQgLT4gVGh1XG4gICAgICAgIHwgNSAtPiBGcmlcbiAgICAgICAgfCA2IC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2ZfaW50X2V4bjogJWRcIiBpICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9faW50IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBTdW4gLT4gMFxuICAgICAgICB8IE1vbiAtPiAxXG4gICAgICAgIHwgVHVlIC0+IDJcbiAgICAgICAgfCBXZWQgLT4gM1xuICAgICAgICB8IFRodSAtPiA0XG4gICAgICAgIHwgRnJpIC0+IDVcbiAgICAgICAgfCBTYXQgLT4gNlxuICAgICAgOztcblxuICAgICAgKCogQmUgdmVyeSBnZW5lcm91cyB3aXRoIG9mX3N0cmluZy4gIFdlIGFjY2VwdCBhbGwgcG9zc2libGUgY2FwaXRhbGl6YXRpb25zIGFuZCB0aGVcbiAgICAgICAgIGludGVnZXIgcmVwcmVzZW50YXRpb25zIGFzIHdlbGwuICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nX2ludGVybmFsIHMgd2l0aFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAodHJ5IG9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgcykgd2l0aFxuICAgICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKCkpXG4gICAgICA7O1xuXG4gICAgICAoKiB0aGlzIGlzIGluIFQgcmF0aGVyIHRoYW4gb3V0c2lkZSBzbyB0aGF0IHRoZSBsYXRlciBmdW5jdG9yIGFwcGxpY2F0aW9uIHRvIGJ1aWxkIG1hcHNcbiAgICAgICAgIHVzZXMgdGhpcyBzZXhwIHJlcHJlc2VudGF0aW9uICopXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLlN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICBsZXQgb3BlbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIgaW5cbiAgICAgICAgbGV0IGF0b20gbmFtZSA9IE5vX3RhZyB7IG5hbWU7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfSBpblxuICAgICAgICBsZXQgdW5zdWdnZXN0ZWQgZ3JhbW1hciA9XG4gICAgICAgICAgVGFnIHsga2V5ID0gY29tcGxldGlvbl9zdWdnZXN0ZWQ7IHZhbHVlID0gQXRvbSBcImZhbHNlXCI7IGdyYW1tYXIgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgaW50X2NsYXVzZSB0ID0gdW5zdWdnZXN0ZWQgKGF0b20gKEludC50b19zdHJpbmcgKHRvX2ludCB0KSkpIGluXG4gICAgICAgIGxldCBzaG9ydF9jbGF1c2UgdCA9IGF0b20gKHRvX3N0cmluZyB0KSBpblxuICAgICAgICBsZXQgbG9uZ19jbGF1c2UgdCA9IHVuc3VnZ2VzdGVkIChhdG9tICh0b19zdHJpbmdfbG9uZyB0KSkgaW5cbiAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgIExhenlcbiAgICAgICAgICAgICAgKGxhenlcbiAgICAgICAgICAgICAgICAoVmFyaWFudFxuICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2VfaW5zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIFsgTGlzdC5tYXAgYWxsIH5mOmludF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICA7IExpc3QubWFwIGFsbCB+ZjpzaG9ydF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICA7IExpc3QubWFwIGFsbCB+Zjpsb25nX2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbW9kdWxlIFVuc3RhYmxlID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgKENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKSA6IENvbXBhcmFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChVbnN0YWJsZSlcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFVuc3RhYmxlKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5VbnN0YWJsZVxuXG5sZXQgd2Vla2RheXMgPSBbIE1vbjsgVHVlOyBXZWQ7IFRodTsgRnJpIF1cbmxldCB3ZWVrZW5kcyA9IFsgU2F0OyBTdW4gXVxuXG5sZXQgb2ZfaW50IGkgPVxuICB0cnkgU29tZSAob2ZfaW50X2V4biBpKSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgaXNvXzg2MDFfd2Vla2RheV9udW1iZXIgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE1vbiAtPiAxXG4gIHwgVHVlIC0+IDJcbiAgfCBXZWQgLT4gM1xuICB8IFRodSAtPiA0XG4gIHwgRnJpIC0+IDVcbiAgfCBTYXQgLT4gNlxuICB8IFN1biAtPiA3XG47O1xuXG5sZXQgbnVtX2RheXNfaW5fd2VlayA9IDdcbmxldCBzaGlmdCB0IGkgPSBvZl9pbnRfZXhuIChJbnQuKCAlICkgKHRvX2ludCB0ICsgaSkgbnVtX2RheXNfaW5fd2VlaylcblxubGV0IG51bV9kYXlzIH5mcm9tIH50b18gPVxuICBsZXQgZCA9IHRvX2ludCB0b18gLSB0b19pbnQgZnJvbSBpblxuICBpZiBJbnQuKGQgPCAwKSB0aGVuIGQgKyBudW1fZGF5c19pbl93ZWVrIGVsc2UgZFxuOztcblxubGV0IGlzX3N1bl9vcl9zYXQgdCA9IHQgPSBTdW4gfHwgdCA9IFNhdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBSb3VuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgfCBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkRpZ2l0X3N0cmluZ19oZWxwZXJzXCJcbmxldCBpbnQ2M190d28gPSBJbnQ2My5vZl9pbnQgMlxubGV0IGludDYzX3RlbiA9IEludDYzLm9mX2ludCAxMFxubGV0IGludDYzX3R3ZW50eSA9IEludDYzLm9mX2ludCAyMFxubGV0IGludDYzX2JpbGxpb24gPSBJbnQ2My5vZl9pbnQgMV8wMDBfMDAwXzAwMFxubGV0IG1heF9iaWxsaW9ucyA9IEludDYzLiggLyApIEludDYzLm1heF92YWx1ZSBpbnQ2M19iaWxsaW9uXG5cbmxldCByZWMgZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIG4gPVxuICBpZiBJbnQ2My4oIDwgKSBuIGludDYzX3RlblxuICB0aGVuIDFcbiAgZWxzZSBJbnQuc3VjYyAoZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIChJbnQ2My4oIC8gKSBuIGludDYzX3RlbikpXG47O1xuXG5sZXQgZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSA9IGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyBJbnQ2My5tYXhfdmFsdWVcblxubGV0IHJlYyBtYXhfaW50NjNfd2l0aCB+ZGlnaXRzID1cbiAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgfCAxIC0+IEludDYzLm9mX2ludCA5XG4gIHwgMiAtPiBJbnQ2My5vZl9pbnQgOTlcbiAgfCAzIC0+IEludDYzLm9mX2ludCA5OTlcbiAgfCA0IC0+IEludDYzLm9mX2ludCA5Xzk5OVxuICB8IDUgLT4gSW50NjMub2ZfaW50IDk5Xzk5OVxuICB8IDYgLT4gSW50NjMub2ZfaW50IDk5OV85OTlcbiAgfCA3IC0+IEludDYzLm9mX2ludCA5Xzk5OV85OTlcbiAgfCA4IC0+IEludDYzLm9mX2ludCA5OV85OTlfOTk5XG4gIHwgOSAtPiBJbnQ2My5vZl9pbnQgOTk5Xzk5OV85OTlcbiAgfCBfIC0+XG4gICAgaWYgZGlnaXRzID49IGRpZ2l0c19vZl9pbnQ2M19tYXhfdmFsdWVcbiAgICB0aGVuIEludDYzLm1heF92YWx1ZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbGxpb25zID0gSW50NjMuc3VjYyAobWF4X2ludDYzX3dpdGggfmRpZ2l0czooZGlnaXRzIC0gOSkpIGluXG4gICAgICBJbnQ2My5wcmVkIChJbnQ2My4oICogKSBpbnQ2M19iaWxsaW9uIGJpbGxpb25zKSlcbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHVuc2FmZV9jaGFyX29mX2RpZ2l0IG4gPSBDaGFyLnVuc2FmZV9vZl9pbnQgKENoYXIudG9faW50ICcwJyArIG4pXG4gIGxldCBkaWdpdF9vZl9jaGFyIGNoYXIgPSBDaGFyLmdldF9kaWdpdF9leG4gY2hhclxuXG4gIGxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgQnl0ZXMudW5zYWZlX3NldCBieXRlcyBwb3MgKHVuc2FmZV9jaGFyX29mX2RpZ2l0IGludClcbiAgOztcblxuICBsZXQgcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gaW50IC8gMTAgaW5cbiAgICBsZXQgb25lcyA9IGludCAtICh0ZW5zICogMTApIGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBvbmVzO1xuICAgIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMSkgaW50IGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDIpIGludCBpblxuICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAzKSBpbnQgaW5cbiAgICB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNCkgaW50IGluXG4gICAgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDUpIGludCBpblxuICAgIHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA2KSBpbnQgaW5cbiAgICB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNykgaW50IGluXG4gICAgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDgpIGludCBpblxuICAgIHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCByZXR1cm5fYmlsbGlvbnNfYW5kX3dyaXRlX3JlbWFpbmRlciBieXRlcyB+cG9zIGludDYzID1cbiAgICBsZXQgYmlsbGlvbnMgPSBJbnQ2My4oIC8gKSBpbnQ2MyBpbnQ2M19iaWxsaW9uIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDYzLiggLSApIGludDYzIChJbnQ2My4oICogKSBiaWxsaW9ucyBpbnQ2M19iaWxsaW9uKSBpblxuICAgIHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gcmVtYWluZGVyKTtcbiAgICBiaWxsaW9uc1xuICA7O1xuXG4gIGxldCByZWMgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgICBtYXRjaCBkaWdpdHMgd2l0aFxuICAgIHwgMSAtPiB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMiAtPiB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMyAtPiB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNCAtPiB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNSAtPiB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNiAtPiB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNyAtPiB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOCAtPiB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOSAtPiB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGRpZ2l0c19vZl9iaWxsaW9ucyA9IGRpZ2l0cyAtIDkgaW5cbiAgICAgIGxldCBiaWxsaW9ucyA9XG4gICAgICAgIHJldHVybl9iaWxsaW9uc19hbmRfd3JpdGVfcmVtYWluZGVyIGJ5dGVzIH5wb3M6KHBvcyArIGRpZ2l0c19vZl9iaWxsaW9ucykgaW50NjNcbiAgICAgIGluXG4gICAgICB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2JpbGxpb25zIGJpbGxpb25zXG4gIDs7XG5cbiAgbGV0IHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPSBkaWdpdF9vZl9jaGFyIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgcG9zKVxuXG4gIGxldCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDEpXG4gIDs7XG5cbiAgbGV0IHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMilcbiAgOztcblxuICBsZXQgcmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAzKVxuICA7O1xuXG4gIGxldCByZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDQpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNSlcbiAgOztcblxuICBsZXQgcmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA2KVxuICA7O1xuXG4gIGxldCByZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDcpXG4gIDs7XG5cbiAgbGV0IHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgOClcbiAgOztcblxuICBsZXQgcmFpc2VfaW50NjNfb3ZlcmZsb3cgbmFtZSA9XG4gICAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IG92ZXJmbG93IHJlYWRpbmcgaW50NjNcIiBtb2R1bGVfbmFtZSBuYW1lICgpXG4gIDs7XG5cbiAgbGV0IHJlYyByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICAgIG1hdGNoIGRpZ2l0cyB3aXRoXG4gICAgfCAxIC0+IEludDYzLm9mX2ludCAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDIgLT4gSW50NjMub2ZfaW50IChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgMyAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA0IC0+IEludDYzLm9mX2ludCAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDUgLT4gSW50NjMub2ZfaW50IChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNiAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA3IC0+IEludDYzLm9mX2ludCAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDggLT4gSW50NjMub2ZfaW50IChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgOSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZGlnaXRzX29mX2JpbGxpb25zID0gZGlnaXRzIC0gOSBpblxuICAgICAgbGV0IGJpbGxpb25zID0gcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9iaWxsaW9ucyBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9XG4gICAgICAgIEludDYzLm9mX2ludCAocmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgZGlnaXRzX29mX2JpbGxpb25zKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQ2My4oID4gKSBiaWxsaW9ucyBtYXhfYmlsbGlvbnMgdGhlbiByYWlzZV9pbnQ2M19vdmVyZmxvdyBcInJlYWRfaW50NjNcIjtcbiAgICAgIGxldCBzdW0gPSBJbnQ2My4oICsgKSAoSW50NjMuKCAqICkgYmlsbGlvbnMgaW50NjNfYmlsbGlvbikgcmVtYWluZGVyIGluXG4gICAgICBpZiBJbnQ2My4oIDwgKSBzdW0gSW50NjMuemVybyB0aGVuIHJhaXNlX2ludDYzX292ZXJmbG93IFwicmVhZF9pbnQ2M1wiO1xuICAgICAgc3VtXG4gIDs7XG5cbiAgbGV0IGRpdmlkZV9hbmRfcm91bmRfdXAgfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAobnVtZXJhdG9yICsgZGVub21pbmF0b3IgLSBJbnQ2My5vbmUpIC8lIGRlbm9taW5hdG9yXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBuYW1lID1cbiAgICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogaW52YWxpZCBkZWNpbWFsIGNoYXJhY3RlclwiIG1vZHVsZV9uYW1lIG5hbWUgKClcbiAgOztcblxuICAoKiBSZWFkcyB0aGUgcG9ydGlvbiBvZiBzdHJpbmcgYmV0d2VlbiBbcG9zXSBhbmQgW3BvcytkZWNpbWFscy0xXSwgaW5jbHVzaXZlLCBhbmRcbiAgICAgaW50ZXJwZXJldHMgaXQgYXMgYSBwb3NpdGl2ZSBkZWNpbWFsIHBhcnQgb2YgYSBudW1iZXIsIHdoaWNoIHdlIGNhbGwgW3hdLlxuXG4gICAgIExldCBbaV0gYW5kIFtyXSBiZSB0aGUgaW50ZWdlciBwYXJ0IGFuZCByZW1haW5pbmcgZnJhY3Rpb25hbCBwYXJ0IG9mXG4gICAgIFt4ICogc2NhbGUgLyBkaXZpc29yXS5cblxuICAgICBJZiBbciA8IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpXS5cbiAgICAgSWYgW3IgPSByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaV0gb3IgW2krMV0gYmFzZWQgb24gW3JvdW5kX2V4YWN0XS5cbiAgICAgSWYgW3IgPiByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaSsxXS5cblxuICAgICBBc3N1bWVzIHdpdGhvdXQgY2hlY2tpbmcgdGhhdCBbc2NhbGVdIGFuZCBbZGl2aXNvcl0gYXJlIGJvdGggcG9zaXRpdmUgYW5kXG4gICAgIGxlc3MgdGhhbiBbSW50NjMubWF4X3ZhbHVlIC8gMTBdICh0byBhdm9pZCBpbnRlcm5hbCBvdmVyZmxvdyBkdXJpbmcgdGhlIGFsZ29yaXRobVxuICAgICB3aGVuIG11bHRpcGx5aW5nIGJ5IDEwKSwgYW5kIHRoYXQgW3JvdW5kX2F0ID49IDBdIGFuZCBbcm91bmRfYXQgPCBkaXZpc29yXS4gKilcbiAgbGV0IHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICAgIHN0cmluZ1xuICAgICAgICB+cG9zOnN0YXJ0XG4gICAgICAgIH5kZWNpbWFsc1xuICAgICAgICB+c2NhbGVcbiAgICAgICAgfmRpdmlzb3JcbiAgICAgICAgfnJvdW5kX2F0XG4gICAgICAgIH5yb3VuZF9leGFjdFxuICAgICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICAgID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IHVudGlsID0gSW50LiggKyApIHN0YXJ0IGRlY2ltYWxzIGluXG4gICAgKCogVGhlIGxvb3AgaW52YXJpYW50IGlzIHRoYXQgZWFjaCBpdGVyYXRpb24sIHdlIHN0cmlwIG9mZiB0aGUgbmV4dCBkZWNpbWFsIGRpZ2l0IGFuZFxuICAgICAgIHVwZGF0ZSBbc3VtXSwgW3JvdW5kX2F0XSwgYW5kIFtkaXZpc29yXSBzdWNoIHRoYXQgdGhlIGRlc2lyZWQgcmVzdWx0IGlzOlxuXG4gICAgICAgWyBzdW0gKyByb3VuZChyZW1haW5pbmdfZGlnaXRzX29mX3hfcGFyc2VkX2FzX2RlY2ltYWwgKiBzY2FsZSAvIGRpdmlzb3IpIF1cbiAgICAgICB3aGVyZSBcInJvdW5kXCIgcm91bmRzIGJhc2VkIG9uIHRoZSBuZXcgdmFsdWUgb2YgW3JvdW5kX2F0XS5cbiAgICAqKVxuICAgIGxldCBkaXZpc29yID0gcmVmIGRpdmlzb3IgaW5cbiAgICBsZXQgcm91bmRfYXQgPSByZWYgcm91bmRfYXQgaW5cbiAgICBsZXQgc3VtID0gcmVmIEludDYzLnplcm8gaW5cbiAgICBsZXQgcG9zID0gcmVmIHN0YXJ0IGluXG4gICAgKCogU3RvcCBpZiB3ZSBydW4gb3V0IG9mIGNoYXJhY3RlcnMsIG9yIGlmIGZ1cnRoZXIgZGlnaXRzIGNhbm5vdCBpbmNyZWFzZSBvdXIgc3VtLiAqKVxuICAgIHdoaWxlIEludC4oIDw+ICkgIXBvcyB1bnRpbCAmJiAhcm91bmRfYXQgPCBzY2FsZSBkb1xuICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICB8ICcwJyAuLiAnOScgYXMgY2hhciAtPlxuICAgICAgICAgbGV0IGRpZ2l0ID0gSW50NjMub2ZfaW50IChkaWdpdF9vZl9jaGFyIGNoYXIpIGluXG4gICAgICAgICAoKiBFdmVyeSBuZXcgZGVjaW1hbCBwbGFjZSBpbXBsaWNpdGx5IHNjYWxlcyBvdXIgbnVtZXJhdG9yIGJ5IGEgZmFjdG9yIG9mIHRlbixcbiAgICAgICAgICAgIHNvIG11c3QgYWxzbyBlZmZlY3RpdmVseSBzY2FsZSBvdXIgZGVub21pbmF0b3IuXG5cbiAgICAgICAgICAgIDAuYWJjZGVmICogc2NhbGUvZGl2aXNvciAgICAgICAgW3JvdW5kIGF0IHJvdW5kX2F0XVxuICAgICAgICAgICAgPSBhLmJjZGVmICogc2NhbGUvKGRpdmlzb3IqMTApICBbcm91bmQgYXQgcm91bmRfYXQqMTBdXG5cbiAgICAgICAgICAgIFRoZW4gcmVkZWZpbmUgZGl2aXNvciA6PSBkaXZpc29yKjEwIGFuZCByb3VuZF9hdCA6PSByb3VuZF9hdCoxMCwgc28gd2UgaGF2ZTpcbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF0gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gIWRpdmlzb3IgKiBpbnQ2M190ZW47XG4gICAgICAgICByb3VuZF9hdCA6PSAhcm91bmRfYXQgKiBpbnQ2M190ZW47XG4gICAgICAgICAoKiBOZXh0IHdlIHdvcmsgb3V0IHRoZSBwYXJ0IG9mIHRoZSBzdW0gYmFzZWQgb24gb3VyIGN1cnJlbnQgZGlnaXQ6XG5cbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF1cbiAgICAgICAgICAgID0gYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgLSByb3VuZF9hdCAvIGRpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSAoYSpzY2FsZS1yb3VuZF9hdCkgLyBkaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuXG4gICAgICAgICAgICBEZWNvbXBvc2UgdGhlIGZpcnN0IHRlcm0gaW50byBpbnRlZ2VyIGFuZCByZW1haW5kZXIgcGFydHMuXG4gICAgICAgICAgICBTaW5jZSB3ZSBoYXZlIGFscmVhZHkgc3VidHJhY3RlZCBbcm91bmRfYXRdLCB3ZSBkZWNvbXBvc2UgYmFzZWRcbiAgICAgICAgICAgIG9uIHRoZSBjZWlsaW5nIHJhdGhlciB0aGFuIHRoZSBmbG9vciBvZiB0aGUgZGl2aXNpb24sXG4gICAgICAgICAgICBlLmcuIDUvMyB3b3VsZCBkZWNvbXBvc2UgYXMgMiArICgtMSkvMywgcmF0aGVyIHRoYW4gMSArICgyLzMpLlxuXG4gICAgICAgICAgICA9IGluY3JlbWVudCArIHJlbWFpbmRlci9kaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSBpbmNyZW1lbnQgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdXG4gICAgICAgICAqKVxuICAgICAgICAgbGV0IG51bWVyYXRvciA9IChkaWdpdCAqIHNjYWxlKSAtICFyb3VuZF9hdCBpblxuICAgICAgICAgbGV0IGRlbm9taW5hdG9yID0gIWRpdmlzb3IgaW5cbiAgICAgICAgIGxldCBpbmNyZW1lbnQgPSBkaXZpZGVfYW5kX3JvdW5kX3VwIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICBsZXQgcmVtYWluZGVyID0gbnVtZXJhdG9yIC0gKGluY3JlbWVudCAqIGRlbm9taW5hdG9yKSBpblxuICAgICAgICAgKCogTm93IGp1c3QgYWNjdW11bGF0ZSB0aGUgbmV3IGluY3JlbWVudCBhbmQgaXRlcmF0ZSBvbiB0aGUgcmVtYWluaW5nIHBhcnQ6XG4gICAgICAgICAgICAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdLlxuXG4gICAgICAgICAgICBTaW5jZSBbcmVtYWluZGVyXSBpcyBiZXR3ZWVuIFstKGRpdmlzb3ItMSldIGFuZCBbMF0gaW5jbHVzaXZlLCB0aGUgbmV3XG4gICAgICAgICAgICBbcm91bmRfYXRdIHdpbGwgYmUgd2l0aGluIFswXSBhbmQgW2Rpdmlzb3ItMV0gaW5jbHVzaXZlLiAqKVxuICAgICAgICAgcm91bmRfYXQgOj0gLXJlbWFpbmRlcjtcbiAgICAgICAgIHN1bSA6PSAhc3VtICsgaW5jcmVtZW50O1xuICAgICAgICAgKCogVGhpcyBsaW5lIHByZXZlbnRzIHRoZSBkaXZpc29yIGZyb20gZ3Jvd2luZyB3aXRob3V0IGJvdW5kIGFuZCBvdmVyZmxvd2luZy4gSWZcbiAgICAgICAgICAgIHRoaXMgbGluZSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBkaXZpc29yLCB0aGVuIHRoZSBkaXZpc29yIGlzIGxhcmdlciB0aGFuIHRoZVxuICAgICAgICAgICAgc2NhbGUsIHNvIHRoZSBzdW0gd2lsbCBpbmNyZWFzZSBpZiBhbmQgb25seSBpZiBbcGFyc2VkX3JlbWFpbmluZ19kaWdpdHMgKlxuICAgICAgICAgICAgc2NhbGUgKD4gb3IgPj0pIHJvdW5kX2F0XSwgd2hpY2ggZG9lc24ndCBkZXBlbmQgb24gaG93IG11Y2ggbGFyZ2VyIHRoZVxuICAgICAgICAgICAgZGl2aXNvciBpcy4gU28gdGhpcyBjaGFuZ2UgaXMgc2FmZS4gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gSW50NjMubWluIGRlbm9taW5hdG9yIHNjYWxlXG4gICAgICAgfCAnXycgd2hlbiBhbGxvd191bmRlcnNjb3JlIC0+ICgpXG4gICAgICAgfCBfIC0+IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBcInJlYWRfaW50NjNfZGVjaW1hbFwiKTtcbiAgICAgIHBvcyA6PSBJbnQuc3VjYyAhcG9zXG4gICAgZG9uZTtcbiAgICBpZiAhcm91bmRfYXQgPSB6ZXJvXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByb3VuZF9leGFjdCB3aXRoXG4gICAgICB8IFJvdW5kLlRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eSAtPiAoKVxuICAgICAgfCBSb3VuZC5Ub3dhcmRfcG9zaXRpdmVfaW5maW5pdHkgLT4gc3VtIDo9ICFzdW0gKyBJbnQ2My5vbmUpO1xuICAgICFzdW1cbiAgOztcblxuICBsZXQgcmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmUgPVxuICAgIHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICBzdHJpbmdcbiAgICAgIH5wb3NcbiAgICAgIH5kZWNpbWFsc1xuICAgICAgfnNjYWxlOihJbnQ2My4oICogKSBzY2FsZSBpbnQ2M190d28pXG4gICAgICB+ZGl2aXNvcjppbnQ2M190d29cbiAgICAgIH5yb3VuZF9hdDpJbnQ2My5vbmVcbiAgICAgIH5yb3VuZF9leGFjdDpyb3VuZF90aWVzXG4gICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICA7O1xuZW5kXG5cbmxldCBtaW5fc2NhbGUgPSBJbnQ2My5vbmVcbmxldCBtYXhfc2NhbGUgPSBJbnQ2My4oIC8gKSBJbnQ2My5tYXhfdmFsdWUgaW50NjNfdHdlbnR5XG5cbmxldCByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFscyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkZWNpbWFscz0lZCBpcyBuZWdhdGl2ZVwiIG1vZHVsZV9uYW1lIG5hbWUgZGVjaW1hbHMgKClcbjs7XG5cbmxldCByYWlzZV9ub25fcG9zaXRpdmVfZGlnaXRzIG5hbWUgfmRpZ2l0cyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkaWdpdHM9JWQgaXMgbm90IGEgcG9zaXRpdmUgbnVtYmVyXCIgbW9kdWxlX25hbWUgbmFtZSBkaWdpdHMgKClcbjs7XG5cbmxldCByYWlzZV9zY2FsZV9vdXRfb2ZfYm91bmRzIG5hbWUgfnNjYWxlID1cbiAgaW52YWxpZF9hcmdmXG4gICAgXCIlcy4lczogc2NhbGU9JUxkIG91dCBvZiByYW5nZSBbJUxkLCAlTGRdXCJcbiAgICBtb2R1bGVfbmFtZVxuICAgIG5hbWVcbiAgICAoSW50NjMudG9faW50NjQgc2NhbGUpXG4gICAgKEludDYzLnRvX2ludDY0IG1pbl9zY2FsZSlcbiAgICAoSW50NjMudG9faW50NjQgbWF4X3NjYWxlKVxuICAgICgpXG47O1xuXG5sZXQgcmFpc2VfcG9zX291dF9vZl9ib3VuZHMgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0cyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGxlblxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIiVzLiVzOiBwb3M9JWQgb3V0IG9mIHJhbmdlIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgIG1vZHVsZV9uYW1lXG4gICAgICBuYW1lXG4gICAgICBwb3NcbiAgICAgIGxlblxuICAgICAgKClcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCIlcy4lczogJWQgZGlnaXRzIGRvIG5vdCBmaXQgYXQgcG9zICVkIGluIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgbW9kdWxlX25hbWVcbiAgICAgIG5hbWVcbiAgICAgIGRpZ2l0c1xuICAgICAgcG9zXG4gICAgICBsZW5cbiAgICAgICgpXG47O1xuXG5sZXQgcmFpc2VfaW50X291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludCA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50IG1heCAoKVxuOztcblxubGV0IHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzID1cbiAgaW52YWxpZF9hcmdmICFcIiVzLiVzOiAle0ludDYzfSBvdXQgb2YgcmFuZ2UgWzAsICV7SW50NjN9XVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50NjMgbWF4ICgpXG47O1xuXG5sZXQgY2hlY2tfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHMgPVxuICBpZiBkZWNpbWFscyA8IDAgdGhlbiByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFsc1xuOztcblxubGV0IGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHMgPSBpZiBkaWdpdHMgPCAxIHRoZW4gcmFpc2Vfbm9uX3Bvc2l0aXZlX2RpZ2l0cyBuYW1lIH5kaWdpdHNcblxubGV0IGNoZWNrX3BvcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgKyBkaWdpdHMgPiBsZW4gdGhlbiByYWlzZV9wb3Nfb3V0X29mX2JvdW5kcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzXG47O1xuXG5sZXQgY2hlY2tfaW50IG5hbWUgfm1heCBpbnQgPVxuICBpZiBpbnQgPCAwIHx8IGludCA+IG1heCB0aGVuIHJhaXNlX2ludF9vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnRcbjs7XG5cbmxldCBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjMgPVxuICBpZiBJbnQ2My4oIDwgKSBpbnQ2MyBJbnQ2My56ZXJvIHx8IEludDYzLiggPiApIGludDYzIG1heFxuICB0aGVuIHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzXG47O1xuXG5sZXQgY2hlY2tfc2NhbGUgbmFtZSB+c2NhbGUgPVxuICBpZiBJbnQ2My4oIDwgKSBzY2FsZSBtaW5fc2NhbGUgfHwgSW50NjMuKCA+ICkgc2NhbGUgbWF4X3NjYWxlXG4gIHRoZW4gcmFpc2Vfc2NhbGVfb3V0X29mX2JvdW5kcyBuYW1lIH5zY2FsZVxuOztcblxubGV0IGNoZWNrX3dyaXRlIG5hbWUgfmJ5dGVzIH5wb3MgfmRpZ2l0cyB+bWF4IGludCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnl0ZXMgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3M7XG4gIGNoZWNrX2ludCBuYW1lIH5tYXggaW50XG47O1xuXG5sZXQgY2hlY2tfd3JpdGU2MyBuYW1lIH5ieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbWF4ID0gbWF4X2ludDYzX3dpdGggfmRpZ2l0cyBpblxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ5dGVzIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zO1xuICBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjNcbjs7XG5cbmxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfMV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjEgfm1heDo5IGludDtcbiAgVW5zYWZlLndyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzJfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czoyIH5tYXg6OTkgaW50O1xuICBVbnNhZmUud3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfM19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjMgfm1heDo5OTkgaW50O1xuICBVbnNhZmUud3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjQgfm1heDo5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV81X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NSB+bWF4Ojk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV82X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NiB+bWF4Ojk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfN19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjcgfm1heDo5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfOF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjggfm1heDo5OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzlfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo5IH5tYXg6OTk5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja193cml0ZTYzIFwid3JpdGVfaW50NjNcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzO1xuICBVbnNhZmUud3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzXG47O1xuXG5sZXQgY2hlY2tfcmVhZCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgY2hlY2tfcmVhZDYzIG5hbWUgfnN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3Ncbjs7XG5cbmxldCBjaGVja19yZWFkNjNfZGVjaW1hbCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzO1xuICBjaGVja19zY2FsZSBuYW1lIH5zY2FsZTtcbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0czpkZWNpbWFscyB+bGVuIH5wb3Ncbjs7XG5cbmxldCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfMV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czoxO1xuICBVbnNhZmUucmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8yX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjI7XG4gIFVuc2FmZS5yZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzNfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MztcbiAgVW5zYWZlLnJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNF9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo0O1xuICBVbnNhZmUucmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF81X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjU7XG4gIFVuc2FmZS5yZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzZfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NjtcbiAgVW5zYWZlLnJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfN19kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo3O1xuICBVbnNhZmUucmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF84X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjg7XG4gIFVuc2FmZS5yZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzlfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6OTtcbiAgVW5zYWZlLnJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19yZWFkNjMgXCJyZWFkX2ludDYzXCIgfnN0cmluZyB+cG9zIH5kaWdpdHM7XG4gIFVuc2FmZS5yZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHNcbjs7XG5cbmxldCByZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZSA9XG4gIGNoZWNrX3JlYWQ2M19kZWNpbWFsIFwicmVhZF9pbnQ2M19kZWNpbWFsXCIgfnN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGU7XG4gIFVuc2FmZS5yZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEphblxuICAgICAgfCBGZWJcbiAgICAgIHwgTWFyXG4gICAgICB8IEFwclxuICAgICAgfCBNYXlcbiAgICAgIHwgSnVuXG4gICAgICB8IEp1bFxuICAgICAgfCBBdWdcbiAgICAgIHwgU2VwXG4gICAgICB8IE9jdFxuICAgICAgfCBOb3ZcbiAgICAgIHwgRGVjXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgdmFyaWFudHNdXG5cbiAgICBsZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG4gICAgbGV0IG9mX2ludF9leG4gaSA6IHQgPVxuICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICB8IDEgLT4gSmFuXG4gICAgICB8IDIgLT4gRmViXG4gICAgICB8IDMgLT4gTWFyXG4gICAgICB8IDQgLT4gQXByXG4gICAgICB8IDUgLT4gTWF5XG4gICAgICB8IDYgLT4gSnVuXG4gICAgICB8IDcgLT4gSnVsXG4gICAgICB8IDggLT4gQXVnXG4gICAgICB8IDkgLT4gU2VwXG4gICAgICB8IDEwIC0+IE9jdFxuICAgICAgfCAxMSAtPiBOb3ZcbiAgICAgIHwgMTIgLT4gRGVjXG4gICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiTW9udGgub2ZfaW50X2V4biAlZFwiIGkgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIHRyeSBTb21lIChvZl9pbnRfZXhuIGkpIHdpdGhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcblxuICAgIGxldCB0b19pbnQgKHQgOiB0KSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgSmFuIC0+IDFcbiAgICAgIHwgRmViIC0+IDJcbiAgICAgIHwgTWFyIC0+IDNcbiAgICAgIHwgQXByIC0+IDRcbiAgICAgIHwgTWF5IC0+IDVcbiAgICAgIHwgSnVuIC0+IDZcbiAgICAgIHwgSnVsIC0+IDdcbiAgICAgIHwgQXVnIC0+IDhcbiAgICAgIHwgU2VwIC0+IDlcbiAgICAgIHwgT2N0IC0+IDEwXG4gICAgICB8IE5vdiAtPiAxMVxuICAgICAgfCBEZWMgLT4gMTJcbiAgICA7O1xuXG4gICAgbGV0IHRvX2JpbmFibGUgdCA9IHRvX2ludCB0IC0gMVxuICAgIGxldCBvZl9iaW5hYmxlIGkgPSBvZl9pbnRfZXhuIChpICsgMSlcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIEludC5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IG51bV9tb250aHMgPSAxMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIGxldCBhbGwgPSBbIEphbjsgRmViOyBNYXI7IEFwcjsgTWF5OyBKdW47IEp1bDsgQXVnOyBTZXA7IE9jdDsgTm92OyBEZWMgXVxuICBsZXQgaGFzaCA9IHRvX2ludFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIChcbiAgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgZW5kKSA6XG4gICAgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBtb250aHMgaW4gc2V4cHMgb2YgTWFwcyBhbmQgU2V0cyB3ZXJlIHJhdyBpbnRzLiAgRnJvbSAxMDguMDdcbiAgICAgICB0aHJvdWdoIDEwOS4xMywgdGhlIG91dHB1dCBmb3JtYXQgcmVtYWluZWQgcmF3IGFzIGJlZm9yZSwgYnV0IGJvdGggdGhlIHJhdyBhbmRcbiAgICAgICBwcmV0dHkgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzXG4gICAgICAgY2hhbmdlZCBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZVxuICAgICAgIG1vc3QgcHJvZ3JhbXMgYXJlIGJleW9uZCAxMDkuMTQsIHdlIHdpbGwgc3dpdGNoIHRoZSBpbnB1dCBmb3JtYXQgdG8gbm8gbG9uZ2VyIGFjY2VwdFxuICAgICAgIHJhdy4gKilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gSW50LnRfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICB8IFNvbWUgaSAtPiBvZl9pbnRfZXhuIChpICsgMSlcbiAgICAgIHwgTm9uZSAtPiBULnRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG4oKiBSZXBsYWNlIHRoZSBvdmVycmlkZW4gc2V4cCBjb252ZXJ0ZXJzIGZyb20gW0NvbXBhcmFibGUuTWFrZV9iaW5hYmxlXSB3aXRoIHRoZSBvcmRpbmFyeVxuICAgc3ltYm9saWMgY29udmVydGVycy4gKilcbmxldCBzZXhwX29mX3QgPSBULnNleHBfb2ZfdFxubGV0IHRfb2Zfc2V4cCA9IFQudF9vZl9zZXhwXG5sZXQgc2hpZnQgdCBpID0gb2ZfaW50X2V4biAoMSArIEludC4oICUgKSAodG9faW50IHQgLSAxICsgaSkgbnVtX21vbnRocylcblxubGV0IGFsbF9zdHJpbmdzID1cbiAgbGF6eVxuICAgIChBcnJheS5vZl9saXN0IChMaXN0Lm1hcCBhbGwgfmY6KGZ1biB2YXJpYW50IC0+IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgdmFyaWFudCkpKSlcbjs7XG5cbmxldCB0b19zdHJpbmcgKHQgOiB0KSA9XG4gIGxldCBhbGxfc3RyaW5ncyA9IExhenkuZm9yY2UgYWxsX3N0cmluZ3MgaW5cbiAgYWxsX3N0cmluZ3MuKHRvX2ludCB0IC0gMSlcbjs7XG5cbmxldCBvZl9zdHJpbmcgPVxuICBsZXQgdGFibGUgPVxuICAgIGxhenlcbiAgICAgIChsZXQgbW9kdWxlIFQgPSBTdHJpbmcuVGFibGUgaW5cbiAgICAgICBsZXQgdGFibGUgPSBULmNyZWF0ZSB+c2l6ZTpudW1fbW9udGhzICgpIGluXG4gICAgICAgQXJyYXkuaXRlcmkgKExhenkuZm9yY2UgYWxsX3N0cmluZ3MpIH5mOihmdW4gaSBzIC0+XG4gICAgICAgICBsZXQgdCA9IG9mX2ludF9leG4gKGkgKyAxKSBpblxuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTpzIH5kYXRhOnQ7XG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcubG93ZXJjYXNlIHMpIH5kYXRhOnQ7XG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcudXBwZXJjYXNlIHMpIH5kYXRhOnQpO1xuICAgICAgIHRhYmxlKVxuICBpblxuICBmdW4gc3RyIC0+XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIChMYXp5LmZvcmNlIHRhYmxlKSBzdHIgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiSW52YWxpZCBtb250aDogJXNcIiBzdHIgKClcbjs7XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBtb250aCA9IHQgPVxuICAgIHwgSmFuXG4gICAgfCBGZWJcbiAgICB8IE1hclxuICAgIHwgQXByXG4gICAgfCBNYXlcbiAgICB8IEp1blxuICAgIHwgSnVsXG4gICAgfCBBdWdcbiAgICB8IFNlcFxuICAgIHwgT2N0XG4gICAgfCBOb3ZcbiAgICB8IERlY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5cbmxldCBpc19sZWFwX3llYXIgfnllYXIgPSAoeWVhciBtb2QgNCA9IDAgJiYgbm90ICh5ZWFyIG1vZCAxMDAgPSAwKSkgfHwgeWVhciBtb2QgNDAwID0gMFxuXG4oKiBDcmVhdGUgYSBsb2NhbCBwcml2YXRlIGRhdGUgdHlwZSB0byBlbnN1cmUgdGhhdCBhbGwgZGF0ZXMgYXJlIGNyZWF0ZWQgdmlhXG4gICBEYXRlLmNyZWF0ZV9leG4uXG4qKVxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb21wYXJhYmxlID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICB2YWwgY3JlYXRlX2V4biA6IHk6aW50IC0+IG06TW9udGguU3RhYmxlLlYxLnQgLT4gZDppbnQgLT4gdFxuICAgICAgICB2YWwgeWVhciA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBtb250aCA6IHQgLT4gTW9udGguU3RhYmxlLlYxLnRcbiAgICAgICAgdmFsIGRheSA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBkYXlzX2luX21vbnRoIDogeWVhcjppbnQgLT4gbW9udGg6TW9udGgudCAtPiBpbnRcbiAgICAgICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgICAgICAgdmFsIG9mX2ludF91bmNoZWNrZWQgOiBpbnQgLT4gdFxuICAgICAgICB2YWwgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5IDogdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgICgqIFdlIHVzZWQgdG8gc3RvcmUgZGF0ZXMgbGlrZSB0aGlzOlxuICAgICAgICAgICB0eXBlIHQgPSB7IHk6IGludDsgbTogTW9udGguU3RhYmxlLlYxLnQ7IGQ6IGludDsgfVxuICAgICAgICAgICBJbiB0aGUgYmVsb3cgd2UgbWFrZSBzdXJlIHRoYXQgdGhlIGJpbl9pbyByZXByZXNlbnRhdGlvbiBpc1xuICAgICAgICAgICBpZGVudGljYWwgKGFuZCB0aGUgc3RhYmxlIHVuaXQgdGVzdHMgY2hlY2sgdGhpcylcblxuICAgICAgICAgICBJbiBtZW1vcnkgd2UgdXNlIHRoZSBmb2xsb3dpbmcgbXVjaCBtb3JlIGNvbXBhY3QgcmVwcmVzZW50YXRpb246XG4gICAgICAgICAgIDIgYnl0ZXMgeWVhclxuICAgICAgICAgICAxIGJ5dGUgbW9udGhcbiAgICAgICAgICAgMSBieXRlIGRheVxuXG4gICAgICAgICAgIGFsbCBwYWNrZWQgaW50byBhIHNpbmdsZSBpbW1lZGlhdGUgaW50IChzbyBmcm9tIDQgd29yZHMgZG93biB0byAxKS5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZSB0ID0gaW50XG4gICAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgICAgY29tcGFyZVxuICAgICAgICAsIGVxdWFsXG4gICAgICAgICwgaGFzaFxuICAgICAgICAsIHR5cGVyZXBcbiAgICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZWUzZTAtNDkwYS0xMWU2LWExMGEtYTM3MzRmNzMzNTY2XCJcbiAgICAgICAgLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBsZXQgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgKCogY3JlYXRlX2V4bidzIHZhbGlkYXRpb24gbWFrZSBzdXJlIHRoYXQgZWFjaCB2YWx1ZSBmaXRzICopXG4gICAgICAgICAgKHllYXIgbHNsIDE2KSBsb3IgKE1vbnRoLnRvX2ludCBtb250aCBsc2wgOCkgbG9yIGRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9pbnRfdW5jaGVja2VkIHQgPSB0XG4gICAgICAgIGxldCB5ZWFyIHQgPSB0IGxzciAxNlxuICAgICAgICBsZXQgbW9udGggdCA9IE1vbnRoLm9mX2ludF9leG4gKCh0IGxzciA4KSBsYW5kIDB4ZmYpXG4gICAgICAgIGxldCBkYXkgdCA9IHQgbGFuZCAweGZmXG5cbiAgICAgICAgbGV0IGRheXNfaW5fbW9udGggfnllYXIgfm1vbnRoID1cbiAgICAgICAgICBtYXRjaCAobW9udGggOiBNb250aC50KSB3aXRoXG4gICAgICAgICAgfCBKYW4gfCBNYXIgfCBNYXkgfCBKdWwgfCBBdWcgfCBPY3QgfCBEZWMgLT4gMzFcbiAgICAgICAgICB8IEFwciB8IEp1biB8IFNlcCB8IE5vdiAtPiAzMFxuICAgICAgICAgIHwgRmViIC0+IGlmIGlzX2xlYXBfeWVhciB+eWVhciB0aGVuIDI5IGVsc2UgMjhcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSA9XG4gICAgICAgICAgKCogeWVhciwgbW9udGgsIGFuZCBkYXkgbmVlZCB0byBiZSBwYXNzZWQgYXMgcGFyYW1ldGVycyB0byBhdm9pZCBhbGxvY2F0aW5nXG4gICAgICAgICAgICAgYSBjbG9zdXJlIChzZWUgdW5pdCB0ZXN0IGJlbG93KSAqKVxuICAgICAgICAgIGxldCBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IG1zZyA9XG4gICAgICAgICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgICAgICAgIVwiRGF0ZS5jcmVhdGVfZXhuIH55OiVkIH5tOiV7TW9udGh9IH5kOiVkIGVycm9yOiAlc1wiXG4gICAgICAgICAgICAgIHllYXJcbiAgICAgICAgICAgICAgbW9udGhcbiAgICAgICAgICAgICAgZGF5XG4gICAgICAgICAgICAgIG1zZ1xuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgeWVhciA8IDAgfHwgeWVhciA+IDk5OTlcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgXCJ5ZWFyIG91dHNpZGUgb2YgWzAuLjk5OTldXCI7XG4gICAgICAgICAgaWYgZGF5IDw9IDAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwiZGF5IDw9IDBcIjtcbiAgICAgICAgICBsZXQgZGF5c19pbl9tb250aCA9IGRheXNfaW5fbW9udGggfnllYXIgfm1vbnRoIGluXG4gICAgICAgICAgaWYgZGF5ID4gZGF5c19pbl9tb250aFxuICAgICAgICAgIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSAoc3ByaW50ZiBcIiVkIGRheSBtb250aCB2aW9sYXRpb25cIiBkYXlzX2luX21vbnRoKTtcbiAgICAgICAgICBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgKCogV2UgZG9uJ3QgdXNlIE1ha2VfYmluYWJsZSBoZXJlLCBiZWNhdXNlIHRoYXQgd291bGQgZ28gdmlhIGFuIGltbWVkaWF0ZVxuICAgICAgICAgICB0dXBsZSBvciByZWNvcmQuICBUaGF0IGlzIGV4YWN0bHkgdGhlIDMyIGJ5dGVzIHdlIHdvcmtlZCBzbyBoYXJkIGFib3ZlIHRvXG4gICAgICAgICAgIGdldCByaWQgb2YuICBXZSBhbHNvIGRvbid0IHdhbnQgdG8ganVzdCBiaW5faW8gdGhlIGludGVnZXIgZGlyZWN0bHlcbiAgICAgICAgICAgYmVjYXVzZSB0aGF0IHdvdWxkIG1lYW4gYSBuZXcgYmluX2lvIGZvcm1hdC4gICopXG5cbiAgICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLlN0YWJsZS5WMS5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGxldCBkYXkgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgPVxuICAgICAgICAgICgqIF9fYmluX3JlYWRfdCBpcyBvbmx5IG5lZWRlZCBmb3IgdmFyaWFudHMgKilcbiAgICAgICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiRGF0ZS50XCIgIXBvc19yZWZcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3NpemVfdCB0ID1cbiAgICAgICAgICBJbnQuYmluX3NpemVfdCAoeWVhciB0KSArIE1vbnRoLmJpbl9zaXplX3QgKG1vbnRoIHQpICsgSW50LmJpbl9zaXplX3QgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgICBsZXQgcG9zID0gSW50LmJpbl93cml0ZV90IGJ1ZiB+cG9zICh5ZWFyIHQpIGluXG4gICAgICAgICAgbGV0IHBvcyA9IE1vbnRoLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChtb250aCB0KSBpblxuICAgICAgICAgIEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoZGF5IHQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICAgICAgbGV0IGJpbl90ID1cbiAgICAgICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICAgICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX2ludCB0ID0gdFxuICAgICAgICBsZXQgb2ZfaW50X2V4biBuID0gY3JlYXRlX2V4biB+eTooeWVhciBuKSB+bToobW9udGggbikgfmQ6KGRheSBuKVxuICAgICAgICBsZXQgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5ID0gMFxuXG4gICAgICAgIGxldCV0ZXN0IFwiaW52YWxpZCB2YWx1ZVwiID1cbiAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIDogdCAtPiBvZl9pbnRfZXhuIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcblxuXG4gICAgICAoKiogWVlZWS1NTS1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNCAnLSc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjUgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDcgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo4IChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWRcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgOCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo0IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgKCoqIE1NL0REL1lZWVkgKilcbiAgICAgIGxldCB0b19zdHJpbmdfYW1lcmljYW4gdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgMTAgaW5cbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgMiAnLyc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICcvJztcbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6NiAoeWVhciB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV95ZWFyNCBzdHIgcG9zID0gcmVhZF80X2RpZ2l0X2ludCBzdHIgfnBvc1xuICAgICAgbGV0IHBhcnNlX21vbnRoIHN0ciBwb3MgPSBNb250aC5vZl9pbnRfZXhuIChyZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zKVxuICAgICAgbGV0IHBhcnNlX2RheSBzdHIgcG9zID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvc1xuXG4gICAgICAoKiogWVlZWU1NREQgKilcbiAgICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyBzdHIgfnBvcyA9XG4gICAgICAgIGlmIHBvcyArIDggPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgICB0aGVuIGludmFsaWRfYXJnIFwiRGF0ZS5vZl9zdHJpbmdfaXNvODYwMV9iYXNpYzogcG9zICsgOCA+IHN0cmluZyBsZW5ndGhcIjtcbiAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzdHIgcG9zKVxuICAgICAgICAgIH5tOihwYXJzZV9tb250aCBzdHIgKHBvcyArIDQpKVxuICAgICAgICAgIH5kOihwYXJzZV9kYXkgc3RyIChwb3MgKyA2KSlcbiAgICAgIDs7XG5cbiAgICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYSBtYXRlcmlhbCB3YXksIGJlIHN1cmUgeW91XG4gICAgICAgICB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2Ygd29ya2luZyBpbiBTdGFibGUgKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIGxldCBpbnZhbGlkICgpID0gZmFpbHdpdGggKFwiaW52YWxpZCBkYXRlOiBcIiBeIHMpIGluXG4gICAgICAgIGxldCBlbnN1cmUgYiA9IGlmIG5vdCBiIHRoZW4gaW52YWxpZCAoKSBpblxuICAgICAgICBsZXQgbW9udGhfbnVtIH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICBjcmVhdGVfZXhuIH55OihwYXJzZV95ZWFyNCBzIHllYXIpIH5tOihwYXJzZV9tb250aCBzIG1vbnRoKSB+ZDoocGFyc2VfZGF5IHMgZGF5KVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9udGhfYWJydiB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgICAgfnk6KHBhcnNlX3llYXI0IHMgeWVhcilcbiAgICAgICAgICAgIH5tOihNb250aC5vZl9zdHJpbmcgKFN0cmluZy5zdWIgcyB+cG9zOm1vbnRoIH5sZW46MykpXG4gICAgICAgICAgICB+ZDoocGFyc2VfZGF5IHMgZGF5KVxuICAgICAgICBpblxuICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcyAnLydcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHksIG0sIGQgPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicvJyB3aXRoXG4gICAgICAgICAgICB8IFsgYTsgYjsgYyBdIC0+XG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggYSA9IDQgdGhlbiBhLCBiLCBjICgqIHkvbS9kICopIGVsc2UgYywgYSwgYiAoKiBtL2QveSAqKVxuICAgICAgICAgICAgfCBfIC0+IGludmFsaWQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB5ZWFyID0gSW50Lm9mX3N0cmluZyB5IGluXG4gICAgICAgICAgbGV0IHllYXIgPVxuICAgICAgICAgICAgaWYgeWVhciA+PSAxMDAgdGhlbiB5ZWFyIGVsc2UgaWYgeWVhciA8IDc1IHRoZW4gMjAwMCArIHllYXIgZWxzZSAxOTAwICsgeWVhclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1vbnRoID0gTW9udGgub2ZfaW50X2V4biAoSW50Lm9mX3N0cmluZyBtKSBpblxuICAgICAgICAgIGxldCBkYXkgPSBJbnQub2Zfc3RyaW5nIGQgaW5cbiAgICAgICAgICBjcmVhdGVfZXhuIH55OnllYXIgfm06bW9udGggfmQ6ZGF5KVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBzICctJ1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiB5eXl5LW1tLWRkICopXG4gICAgICAgICAgZW5zdXJlIChTdHJpbmcubGVuZ3RoIHMgPSAxMCAmJiBDaGFyLiggPSApIHMuWzRdICctJyAmJiBDaGFyLiggPSApIHMuWzddICctJyk7XG4gICAgICAgICAgbW9udGhfbnVtIH55ZWFyOjAgfm1vbnRoOjUgfmRheTo4KVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBzICcgJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLlsyXSAnICcgJiYgQ2hhci4oID0gKSBzLls2XSAnICdcbiAgICAgICAgICB0aGVuICgqIEREIE1NTSBZWVlZICopXG4gICAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6MCB+bW9udGg6MyB+eWVhcjo3XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBZWVlZIE1NTSBERCAqKVxuICAgICAgICAgICAgZW5zdXJlIChTdHJpbmcubGVuZ3RoIHMgPSAxMSAmJiBDaGFyLiggPSApIHMuWzRdICcgJyAmJiBDaGFyLiggPSApIHMuWzhdICcgJyk7XG4gICAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6OSB+bW9udGg6NSB+eWVhcjowKVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDlcbiAgICAgICAgdGhlbiAoKiBERE1NTVlZWVkgKilcbiAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6MCB+bW9udGg6MiB+eWVhcjo1XG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBzID0gOFxuICAgICAgICB0aGVuICgqIGFzc3VtZSBZWVlZTU1ERCAqKVxuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo0IH5kYXk6NlxuICAgICAgICBlbHNlIGludmFsaWQgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIkRhdGUub2Zfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9sZF9kYXRlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgIHsgeSA6IGludFxuICAgICAgICAgICAgOyBtIDogaW50XG4gICAgICAgICAgICA7IGQgOiBpbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgICAgbGV0IHRvX2RhdGUgdCA9IFQuY3JlYXRlX2V4biB+eTp0Lnkgfm06KE1vbnRoLm9mX2ludF9leG4gdC5tKSB+ZDp0LmRcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwLkF0b20gcyAtPiBvZl9zdHJpbmcgc1xuICAgICAgICAgIHwgU2V4cC5MaXN0IF8gYXMgc2V4cCAtPiBPbGRfZGF0ZS50b19kYXRlIChPbGRfZGF0ZS50X29mX3NleHAgc2V4cClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHMgPVxuICAgICAgICAgIHRyeSB0X29mX3NleHAgcyB3aXRoXG4gICAgICAgICAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZXhuIC0+IHJhaXNlIGV4blxuICAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBhIC0+IG9mX3NleHBfZXJyb3IgYSBzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICAgIGxldCBvcGVuIFNleHBsaWIgaW5cbiAgICAgICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgICAgICAoU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXIgOiB0IFNleHBfZ3JhbW1hci50KVxuICAgICAgICAgICAgfmtleTpTZXhwX2dyYW1tYXIudHlwZV9uYW1lX3RhZ1xuICAgICAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5EYXRlLnRcIilcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFNleHBhYmxlXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBXaXRob3V0X2NvbXBhcmFibGVcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgIGJpbl9pb1xuICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODI2YTNlNzktMzMyMS00NTFhLTk3MDctZWQ2YzAzYjg0ZTJmXCJcbiAgICAgICwgY29tcGFyZVxuICAgICAgLCBoYXNoXG4gICAgICAsIHR5cGVyZXBcbiAgICAgICwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBub25lID0gVjEuKHRvX2ludCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgXyA9IHRydWVcbiAgICAgIGxldCBzb21lIHQgPSBWMS50b19pbnQgdFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IFYxLm9mX2ludF91bmNoZWNrZWRcbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIkRhdGUuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuY2hlY2tlZF92YWx1ZSB0KVxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMS5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYxLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjEudCBPcHRpb24udF1cblxuICAgICAgbGV0IG9mX2ludF9leG4gdCA9XG4gICAgICAgICgqIERvbid0IGp1c3QgYmxpbmRseSBjb252ZXJ0IGZyb20gYW4gaW50ZWdlci4gVXNlIFtWMS5vZl9pbnRfZXhuXSB0byB2YWxpZGF0ZSB0aGVcbiAgICAgICAgICAgZGF0ZS4gKilcbiAgICAgICAgaWYgdCA9IG5vbmUgdGhlbiBub25lIGVsc2Ugc29tZSAoVjEub2ZfaW50X2V4biB0KVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludCB0ID0gdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhYmxlID0gU3RhYmxlLlYxLldpdGhvdXRfY29tcGFyYWJsZVxuaW5jbHVkZSBXaXRob3V0X2NvbXBhcmFibGVcbm1vZHVsZSBDID0gQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoV2l0aG91dF9jb21wYXJhYmxlKVxuaW5jbHVkZSBDXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgKEMgOiBDb21wYXJhYmxlLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZVxuICAgIGluY2x1ZGUgQmluYWJsZVxuXG4gICAgbGV0IGNvbXBhcmUgKGEgOiB0KSAoYiA6IHQpID0gY29tcGFyZSBhIGJcbiAgZW5kKSA6XG4gICAgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuRGF0ZVwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbmxldCB1bml4X2Vwb2NoID0gY3JlYXRlX2V4biB+eToxOTcwIH5tOkphbiB+ZDoxXG5cbigqIFRoZSBEYXlzIG1vZHVsZSBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbnMgdGhhdCBpbnZvbHZlIGFkZGluZyBvciByZW1vdmluZyBhIGtub3duIG51bWJlclxuICAgb2YgZGF5cyBmcm9tIGEgZGF0ZS4gIEludGVybmFsbHkgdGhlIGRhdGUgaXMgdHJhbnNsYXRlZCB0byBhIGRheSBudW1iZXIsIHRoZSBkYXlzIGFyZVxuICAgYWRkZWQsIGFuZCB0aGUgbmV3IGRhdGUgaXMgcmV0dXJuZWQuICBUaG9zZSBpbnRlcmVzdGVkIGluIHRoZSBtYXRoIGNhbiByZWFkOlxuXG4gICBodHRwOi8vYWxjb3IuY29uY29yZGlhLmNhL35ncGthdGNoL2dkYXRlLW1ldGhvZC5odG1sXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgYXJlIGluIGxpYl90ZXN0L3RpbWVfdGVzdC5tbFxuKilcbm1vZHVsZSBEYXlzIDogc2lnXG4gIHR5cGUgZGF0ZSA9IHRcbiAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cblxuICB2YWwgb2ZfZGF0ZSA6IGRhdGUgLT4gdFxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gZGF0ZVxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGFkZF9kYXlzIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgdW5peF9lcG9jaCA6IHRcbmVuZFxud2l0aCB0eXBlIGRhdGUgOj0gdCA9IHN0cnVjdFxuICBvcGVuIEludFxuXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBvZl95ZWFyIHkgPSAoMzY1ICogeSkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApXG5cbiAgbGV0IG9mX2RhdGUgZGF0ZSA9XG4gICAgbGV0IG0gPSAoTW9udGgudG9faW50IChtb250aCBkYXRlKSArIDkpICUgMTIgaW5cbiAgICBsZXQgeSA9IHllYXIgZGF0ZSAtIChtIC8gMTApIGluXG4gICAgb2ZfeWVhciB5ICsgKCgobSAqIDMwNikgKyA1KSAvIDEwKSArIChkYXkgZGF0ZSAtIDEpXG4gIDs7XG5cbiAgbGV0IGNfMTBfMDAwID0gSW50NjMub2ZfaW50IDEwXzAwMFxuICBsZXQgY18xNF83ODAgPSBJbnQ2My5vZl9pbnQgMTRfNzgwXG4gIGxldCBjXzNfNjUyXzQyNSA9IEludDYzLm9mX2ludCAzXzY1Ml80MjVcblxuICBsZXQgdG9fZGF0ZSBkYXlzID1cbiAgICBsZXQgeSA9XG4gICAgICBsZXQgb3BlbiBJbnQ2MyBpblxuICAgICAgdG9faW50X2V4biAoKChjXzEwXzAwMCAqIG9mX2ludCBkYXlzKSArIGNfMTRfNzgwKSAvIGNfM182NTJfNDI1KVxuICAgIGluXG4gICAgbGV0IGRkZCA9IGRheXMgLSBvZl95ZWFyIHkgaW5cbiAgICBsZXQgeSwgZGRkID1cbiAgICAgIGlmIGRkZCA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgeSA9IHkgLSAxIGluXG4gICAgICAgIHksIGRheXMgLSBvZl95ZWFyIHkpXG4gICAgICBlbHNlIHksIGRkZFxuICAgIGluXG4gICAgbGV0IG1pID0gKCgxMDAgKiBkZGQpICsgNTIpIC8gM18wNjAgaW5cbiAgICBsZXQgeSA9IHkgKyAoKG1pICsgMikgLyAxMikgaW5cbiAgICBsZXQgbSA9ICgobWkgKyAyKSAlIDEyKSArIDEgaW5cbiAgICBsZXQgZCA9IGRkZCAtICgoKG1pICogMzA2KSArIDUpIC8gMTApICsgMSBpblxuICAgIGNyZWF0ZV9leG4gfnkgfm06KE1vbnRoLm9mX2ludF9leG4gbSkgfmRcbiAgOztcblxuICBsZXQgdW5peF9lcG9jaCA9IG9mX2RhdGUgdW5peF9lcG9jaFxuICBsZXQgYWRkX2RheXMgdCBkYXlzID0gdCArIGRheXNcbiAgbGV0IGRpZmYgdDEgdDIgPSB0MSAtIHQyXG5lbmRcblxubGV0IGFkZF9kYXlzIHQgZGF5cyA9IERheXMudG9fZGF0ZSAoRGF5cy5hZGRfZGF5cyAoRGF5cy5vZl9kYXRlIHQpIGRheXMpXG5sZXQgZGlmZiB0MSB0MiA9IERheXMuZGlmZiAoRGF5cy5vZl9kYXRlIHQxKSAoRGF5cy5vZl9kYXRlIHQyKVxuXG5sZXQgYWRkX21vbnRocyB0IG4gPVxuICBsZXQgdG90YWxfbW9udGhzID0gTW9udGgudG9faW50IChtb250aCB0KSArIG4gaW5cbiAgbGV0IHkgPSB5ZWFyIHQgKyAodG90YWxfbW9udGhzIC8lIDEyKSBpblxuICBsZXQgbSA9IHRvdGFsX21vbnRocyAlIDEyIGluXG4gICgqIGNvcnJlY3QgZm9yIGRlY2VtYmVyICopXG4gIGxldCB5LCBtID0gaWYgSW50LiggPSApIG0gMCB0aGVuIHkgLSAxLCBtICsgMTIgZWxzZSB5LCBtIGluXG4gIGxldCBtID0gTW9udGgub2ZfaW50X2V4biBtIGluXG4gICgqIGhhbmRsZSBpbnZhbGlkIGRhdGVzIGZvciBtb250aHMgd2l0aCBmZXdlciBudW1iZXIgb2YgZGF5cyAqKVxuICBsZXQgcmVjIHRyeV9jcmVhdGUgZCA9XG4gICAgdHJ5IGNyZWF0ZV9leG4gfnkgfm0gfmQgd2l0aFxuICAgIHwgX2V4biAtPlxuICAgICAgYXNzZXJ0IChJbnQuKCA+PSApIGQgMSk7XG4gICAgICB0cnlfY3JlYXRlIChkIC0gMSlcbiAgaW5cbiAgdHJ5X2NyZWF0ZSAoZGF5IHQpXG47O1xuXG5sZXQgYWRkX3llYXJzIHQgbiA9IGFkZF9tb250aHMgdCAobiAqIDEyKVxuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RldGVybWluYXRpb25fb2ZfdGhlX2RheV9vZl90aGVfd2VlayNQdXJlbHlfbWF0aGVtYXRpY2FsX21ldGhvZHNcblxuICAgbm90ZTogdW5pdCB0ZXN0cyBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5sZXQgZGF5X29mX3dlZWsgPVxuICBsZXQgdGFibGUgPSBbfCAwOyAzOyAyOyA1OyAwOyAzOyA1OyAxOyA0OyA2OyAyOyA0IHxdIGluXG4gIGZ1biB0IC0+XG4gICAgbGV0IG0gPSBNb250aC50b19pbnQgKG1vbnRoIHQpIGluXG4gICAgbGV0IHkgPSBpZiBJbnQuKCA8ICkgbSAzIHRoZW4geWVhciB0IC0gMSBlbHNlIHllYXIgdCBpblxuICAgIERheV9vZl93ZWVrLm9mX2ludF9leG5cbiAgICAgICgoeSArICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMCkgKyB0YWJsZS4obSAtIDEpICsgZGF5IHQpICUgNylcbjs7XG5cbigqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3JkaW5hbF9kYXRlICopXG5sZXQgbm9uX2xlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA1OTsgOTA7IDEyMDsgMTUxOyAxODE7IDIxMjsgMjQzOyAyNzM7IDMwNDsgMzM0IHxdXG5sZXQgbGVhcF95ZWFyX3RhYmxlID0gW3wgMDsgMzE7IDYwOyA5MTsgMTIxOyAxNTI7IDE4MjsgMjEzOyAyNDQ7IDI3NDsgMzA1OyAzMzUgfF1cblxubGV0IG9yZGluYWxfZGF0ZSB0ID1cbiAgbGV0IHRhYmxlID1cbiAgICBpZiBpc19sZWFwX3llYXIgfnllYXI6KHllYXIgdCkgdGhlbiBsZWFwX3llYXJfdGFibGUgZWxzZSBub25fbGVhcF95ZWFyX3RhYmxlXG4gIGluXG4gIGxldCBvZmZzZXQgPSB0YWJsZS4oTW9udGgudG9faW50IChtb250aCB0KSAtIDEpIGluXG4gIGRheSB0ICsgb2Zmc2V0XG47O1xuXG5sZXQgbGFzdF93ZWVrX29mX3llYXIgeSA9XG4gIGxldCBmaXJzdF9vZl95ZWFyID0gY3JlYXRlX2V4biB+eSB+bTpKYW4gfmQ6MSBpblxuICBsZXQgaXMgdCBkYXkgPSBEYXlfb2Zfd2Vlay5lcXVhbCAoZGF5X29mX3dlZWsgdCkgZGF5IGluXG4gIGlmIGlzIGZpcnN0X29mX3llYXIgVGh1IHx8IChpc19sZWFwX3llYXIgfnllYXI6eSAmJiBpcyBmaXJzdF9vZl95ZWFyIFdlZClcbiAgdGhlbiA1M1xuICBlbHNlIDUyXG47O1xuXG4oKiBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlIG9yIElTTyA4NjAxIGZvciB0aGUgZGV0YWlscyBvZiB0aGlzXG4gICBhbGdvcml0aG0uXG5cbiAgIFVzZXMgYSBbfmZdIGFyZ3VtZW50IHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNhbGxlZCBieSBbd2Vla19udW1iZXJdLlxuKilcbmxldCBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mID1cbiAgbGV0IG9yZGluYWwgPSBvcmRpbmFsX2RhdGUgdCBpblxuICBsZXQgd2Vla2RheSA9IERheV9vZl93ZWVrLmlzb184NjAxX3dlZWtkYXlfbnVtYmVyIChkYXlfb2Zfd2VlayB0KSBpblxuICAoKiBbb3JkaW5hbCAtIHdlZWtkYXkgKyA0XSBpcyB0aGUgb3JkaW5hbCBvZiB0aGlzIHdlZWsncyBUaHVyc2RheSwgdGhlbiAobiArIDYpIC8gNyBpc1xuICAgICBkaXZpc2lvbiBieSA3IHJvdW5kaW5nIHVwICopXG4gIGxldCB3ZWVrID0gKG9yZGluYWwgLSB3ZWVrZGF5ICsgMTApIC8gNyBpblxuICBsZXQgeWVhciA9IHllYXIgdCBpblxuICBpZiBJbnQuKCA8ICkgd2VlayAxXG4gIHRoZW4gZiB+d2VlazoobGFzdF93ZWVrX29mX3llYXIgKHllYXIgLSAxKSkgfnllYXI6KHllYXIgLSAxKVxuICBlbHNlIGlmIEludC4oID4gKSB3ZWVrIChsYXN0X3dlZWtfb2ZfeWVhciB5ZWFyKVxuICB0aGVuIGYgfndlZWs6MSB+eWVhcjooeWVhciArIDEpXG4gIGVsc2UgZiB+d2VlayB+eWVhclxuOztcblxubGV0IHdlZWtfbnVtYmVyX2FuZF95ZWFyIHQgPSBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mOihmdW4gfndlZWsgfnllYXIgLT4gd2VlaywgeWVhcilcbmxldCB3ZWVrX251bWJlciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyOl8gLT4gd2VlaylcbmxldCBpc193ZWVrZW5kIHQgPSBEYXlfb2Zfd2Vlay5pc19zdW5fb3Jfc2F0IChkYXlfb2Zfd2VlayB0KVxubGV0IGlzX3dlZWtkYXkgdCA9IG5vdCAoaXNfd2Vla2VuZCB0KVxubGV0IGlzX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID0gaXNfd2Vla2RheSB0ICYmIG5vdCAoaXNfaG9saWRheSB0KVxuXG5sZXQgcmVjIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyID1cbiAgaWYgdDEgPCB0MlxuICB0aGVuIC1kaWZmX3dlZWtlbmRfZGF5cyB0MiB0MVxuICBlbHNlIChcbiAgICAoKiBCYXNpYyBkYXRlIGRpZmYgKilcbiAgICBsZXQgZGlmZiA9IGRpZmYgdDEgdDIgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgU2F0dXJkYXkgLT4gU3VuZGF5IGNyb3NzaW5ncyAqKVxuICAgIGxldCBkMSA9IGRheV9vZl93ZWVrIHQxIGluXG4gICAgbGV0IGQyID0gZGF5X29mX3dlZWsgdDIgaW5cbiAgICBsZXQgbnVtX3NhdHN1bl9jcm9zc2luZ3MgPVxuICAgICAgaWYgSW50LiggPCApIChEYXlfb2Zfd2Vlay50b19pbnQgZDEpIChEYXlfb2Zfd2Vlay50b19pbnQgZDIpXG4gICAgICB0aGVuIDEgKyAoZGlmZiAvIDcpXG4gICAgICBlbHNlIGRpZmYgLyA3XG4gICAgaW5cbiAgICAobnVtX3NhdHN1bl9jcm9zc2luZ3MgKiAyKVxuICAgICsgKGlmIERheV9vZl93ZWVrLiggPSApIGQyIERheV9vZl93ZWVrLlN1biB0aGVuIDEgZWxzZSAwKVxuICAgICsgaWYgRGF5X29mX3dlZWsuKCA9ICkgZDEgRGF5X29mX3dlZWsuU3VuIHRoZW4gLTEgZWxzZSAwKVxuOztcblxubGV0IGRpZmZfd2Vla2RheXMgdDEgdDIgPSBkaWZmIHQxIHQyIC0gZGlmZl93ZWVrZW5kX2RheXMgdDEgdDJcblxubGV0IGFkZF9kYXlzX3NraXBwaW5nIHQgfnNraXAgbiA9XG4gIGxldCBzdGVwID0gaWYgSW50LiggPj0gKSBuIDAgdGhlbiAxIGVsc2UgLTEgaW5cbiAgbGV0IHJlYyBsb29wIHQgayA9XG4gICAgbGV0IHRfbmV4dCA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICAgIGlmIHNraXAgdCB0aGVuIGxvb3AgdF9uZXh0IGsgZWxzZSBpZiBJbnQuKCA9ICkgayAwIHRoZW4gdCBlbHNlIGxvb3AgdF9uZXh0IChrIC0gMSlcbiAgaW5cbiAgbG9vcCB0IChhYnMgbilcbjs7XG5cbmxldCByZWMgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcCB+Y29uZGl0aW9uID1cbiAgaWYgY29uZGl0aW9uIHQgdGhlbiB0IGVsc2UgZmlyc3RfZGF5X3NhdGlzZnlpbmcgKGFkZF9kYXlzIHQgc3RlcCkgfnN0ZXAgfmNvbmRpdGlvblxuOztcblxubGV0IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcCB+Y29uZGl0aW9uID1cbiAgbGV0IG5leHRfZGF5ID0gYWRkX2RheXMgdCBzdGVwIGluXG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIG5leHRfZGF5IH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBmb2xsb3dpbmdfd2Vla2RheSB0ID0gbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcHJldmlvdXNfd2Vla2RheSB0ID0gbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcm91bmRfZm9yd2FyZF90b193ZWVrZGF5IHQgPSBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcm91bmRfYmFja3dhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxuXG5sZXQgcm91bmRfZm9yd2FyZF90b19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9XG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOihpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkpXG47O1xuXG5sZXQgcm91bmRfYmFja3dhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IGFkZF93ZWVrZGF5cyB0IG4gPSBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwOmlzX3dlZWtlbmQgblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF93ZWVrZGF5c1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2ZvcndhcmQgdCBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0KSB+c2tpcDppc193ZWVrZW5kIG5cbjs7XG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfYmFja3dhcmQgdCBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXMgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgdCBuIH5za2lwOihmdW4gZCAtPiBpc193ZWVrZW5kIGQgfHwgaXNfaG9saWRheSBkKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2luX2RpcmVjdGlvbl9vZl9zdGVwID0gYWRkX2J1c2luZXNzX2RheXNcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2ZvcndhcmQgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IHQpIG4gfnNraXA6KGZ1biBkIC0+XG4gICAgbm90IChpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfYmFja3dhcmQgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGRhdGVzX2JldHdlZW4gfm1pbjp0MSB+bWF4OnQyID1cbiAgbGV0IHJlYyBsb29wIHQgbCA9IGlmIHQgPCB0MSB0aGVuIGwgZWxzZSBsb29wIChhZGRfZGF5cyB0ICgtMSkpICh0IDo6IGwpIGluXG4gIGxvb3AgdDIgW11cbjs7XG5cbmxldCB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCA9XG4gIGxldCBhbGxfZGF0ZXMgPSBkYXRlc19iZXR3ZWVuIH5taW4gfm1heCBpblxuICBPcHRpb24udmFsdWVfbWFwIChMaXN0LmhkIGFsbF9kYXRlcykgfmRlZmF1bHQ6W10gfmY6KGZ1biBmaXJzdF9kYXRlIC0+XG4gICAgKCogdG8gYXZvaWQgYSBzeXN0ZW0gY2FsbCBvbiBldmVyeSBkYXRlLCB3ZSBqdXN0IGdldCB0aGUgd2Vla2RheSBmb3IgdGhlIGZpcnN0XG4gICAgICAgZGF0ZSBhbmQgdXNlIGl0IHRvIGdldCBhbGwgdGhlIG90aGVyIHdlZWtkYXlzICopXG4gICAgbGV0IGZpcnN0X3dlZWtkYXkgPSBkYXlfb2Zfd2VlayBmaXJzdF9kYXRlIGluXG4gICAgbGV0IGRhdGVfYW5kX3dlZWtkYXlzID1cbiAgICAgIExpc3QubWFwaSBhbGxfZGF0ZXMgfmY6KGZ1biBpIGRhdGUgLT4gZGF0ZSwgRGF5X29mX3dlZWsuc2hpZnQgZmlyc3Rfd2Vla2RheSBpKVxuICAgIGluXG4gICAgTGlzdC5maWx0ZXJfbWFwIGRhdGVfYW5kX3dlZWtkYXlzIH5mOihmdW4gKGRhdGUsIHdlZWtkYXkpIC0+XG4gICAgICBpZiBEYXlfb2Zfd2Vlay5pc19zdW5fb3Jfc2F0IHdlZWtkYXkgdGhlbiBOb25lIGVsc2UgU29tZSBkYXRlKSlcbjs7XG5cbmxldCBidXNpbmVzc19kYXRlc19iZXR3ZWVuIH5taW4gfm1heCB+aXNfaG9saWRheSA9XG4gIHdlZWtkYXlzX2JldHdlZW4gfm1pbiB+bWF4IHw+IExpc3QuZmlsdGVyIH5mOihmdW4gZCAtPiBub3QgKGlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIgdCB+b246ZG93ID1cbiAgbGV0IGRvdyA9IERheV9vZl93ZWVrLnRvX2ludCBkb3cgaW5cbiAgbGV0IHRwbHVzMSA9IGFkZF9kYXlzIHQgMSBpblxuICBsZXQgY3VyID0gRGF5X29mX3dlZWsudG9faW50IChkYXlfb2Zfd2VlayB0cGx1czEpIGluXG4gIGxldCBkaWZmID0gKGRvdyArIDcgLSBjdXIpIG1vZCA3IGluXG4gIGFkZF9kYXlzIHRwbHVzMSBkaWZmXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgb3BlbiBRdWlja2NoZWNrXG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgZDEgZDIgPVxuICAgIGlmIGQxID4gZDJcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiRGF0ZS5nZW5fdW5pZm9ybV9pbmNsOiBib3VuZHMgYXJlIGNyb3NzZWRcIlxuICAgICAgICAgICAgfmxvd2VyX2JvdW5kOihkMSA6IHQpXG4gICAgICAgICAgICB+dXBwZXJfYm91bmQ6KGQyIDogdCldO1xuICAgIEdlbmVyYXRvci5tYXAgKEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGRpZmYgZDIgZDEpKSB+ZjooZnVuIGRheXMgLT4gYWRkX2RheXMgZDEgZGF5cylcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgZDEgZDIgPVxuICAgIEdlbmVyYXRvci53ZWlnaHRlZF91bmlvblxuICAgICAgWyAxLiwgR2VuZXJhdG9yLnJldHVybiBkMTsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDI7IDE4LiwgZ2VuX3VuaWZvcm1faW5jbCBkMSBkMiBdXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgKG9mX3N0cmluZyBcIjE5MDAtMDEtMDFcIikgKG9mX3N0cmluZyBcIjIxMDAtMDEtMDFcIilcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBPYnNlcnZlci5jcmVhdGUgKGZ1biB0IH5zaXplOl8gfmhhc2ggLT4gaGFzaF9mb2xkX3QgaGFzaCB0KVxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFNocmlua2VyLmVtcHR5ICgpXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JcbmxldCBnZW5faW5jbCA9IEZvcl9xdWlja2NoZWNrLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEZvcl9xdWlja2NoZWNrLmdlbl91bmlmb3JtX2luY2xcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBsZWFwX3llYXJfdGFibGUgPSBsZWFwX3llYXJfdGFibGVcbiAgbGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBub25fbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBvcmRpbmFsX2RhdGUgPSBvcmRpbmFsX2RhdGVcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUuT3B0aW9uXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcFxuICAgICAgKE9wdGlvbi5xdWlja2NoZWNrX2dlbmVyYXRvciBxdWlja2NoZWNrX2dlbmVyYXRvcilcbiAgICAgIH5mOm9mX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgKE9wdGlvbi5xdWlja2NoZWNrX3Nocmlua2VyIHF1aWNrY2hlY2tfc2hyaW5rZXIpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgICAgIH5mX2ludmVyc2U6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIub2ZfaGFzaFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIGVuZClcbiAgOztcblxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgc3VmZml4ZXMgY2hhciA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgWyBzcHJpbnRmIFwiJWNcIiBjaGFyOyBzcHJpbnRmIFwiJWNNXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk1cIiBjaGFyOyBzcHJpbnRmIFwiJWMuTS5cIiBjaGFyIF1cbiAgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihmdW4gc3VmZml4IC0+XG4gICAgWyBTdHJpbmcubG93ZXJjYXNlIHN1ZmZpeDsgU3RyaW5nLnVwcGVyY2FzZSBzdWZmaXggXSlcbjs7XG5cbmxldCBhbV9zdWZmaXhlcyA9IGxhenkgKHN1ZmZpeGVzICdBJylcbmxldCBwbV9zdWZmaXhlcyA9IGxhenkgKHN1ZmZpeGVzICdQJylcblxuKCogQXZvaWRzIHRoZSBhbGxvY2F0aW9uIHRoYXQgW0xpc3QuZmluZF0gd291bGQgZW50YWlsIGluIGJvdGggYm90aCB0aGUgY2xvc3VyZSBpbnB1dCBhbmRcbiAgIHRoZSBvcHRpb24gb3V0cHV0LiAqKVxubGV0IHJlYyBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXMgPVxuICBtYXRjaCBzdWZmaXhlcyB3aXRoXG4gIHwgc3VmZml4IDo6IHN1ZmZpeGVzIC0+XG4gICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeCB0aGVuIHN1ZmZpeCBlbHNlIGZpbmRfc3VmZml4IHN0cmluZyBzdWZmaXhlc1xuICB8IFtdIC0+IFwiXCJcbjs7XG5cbmxldCBoYXNfY29sb24gc3RyaW5nIHBvcyB+dW50aWwgPSBwb3MgPCB1bnRpbCAmJiBDaGFyLmVxdWFsICc6JyBzdHJpbmcuW3Bvc11cblxuKCogVGhpcyBmdW5jdGlvbiBkZWZpbmVzIHdoYXQgd2UgbWVhbnQgYnkgXCJkZWNpbWFsIHBvaW50XCIsIGJlY2F1c2UgaW4gc29tZSBzdHJpbmcgZm9ybWF0c1xuICAgaXQgbWVhbnMgJy4nIGFuZCBpbiBzb21lIGl0IGNhbiBiZSAnLicgb3IgJywnLiBUaGVyZSdzIG5vIHBhcnRpY3VsYXIgZGVtYW5kIGZvciBzdXBwb3J0XG4gICBmb3IgJywnLCBhbmQgdXNpbmcganVzdCAnLicgbGV0cyB1cyB1c2UgW0Zsb2F0Lm9mX3N0cmluZ10gZm9yIHRoZSBkZWNpbWFsIHN1YnN0cmluZ1xuICAgd2l0aG91dCBhbnkgc3Vic3RpdHV0aW9ucy4gKilcbmxldCBjaGFyX2lzX2RlY2ltYWxfcG9pbnQgc3RyaW5nIHBvcyA9IENoYXIuZXF1YWwgJy4nIHN0cmluZy5bcG9zXVxuXG5sZXQgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyBsZW4gPVxuICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgJyAnIHN0cmluZy5bbGVuIC0gMV0gdGhlbiBsZW4gLSAxIGVsc2UgbGVuXG47O1xuXG5sZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lLk9mZGF5OiBpbnZhbGlkIHN0cmluZ1wiIHN0cmluZyByZWFzb25dXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIHBvcyB+dW50aWwgPVxuICBsZXQgbm9uemVybyA9IHJlZiBmYWxzZSBpblxuICBmb3IgcG9zID0gcG9zIHRvIHVudGlsIC0gMSBkb1xuICAgIG1hdGNoIHN0cmluZy5bcG9zXSB3aXRoXG4gICAgfCAnMCcgfCAnXycgLT4gKClcbiAgICB8ICcxJyAuLiAnOScgLT4gbm9uemVybyA6PSB0cnVlXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICBzdHJpbmdcbiAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhbmQvb3IgdW5kZXJzY29yZXMgYWZ0ZXIgZGVjaW1hbCBwb2ludFwiXG4gIGRvbmU7XG4gICFub256ZXJvXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIHBvcyB+dW50aWwgPVxuICBsZXQgbm9uemVybyA9IHJlZiBmYWxzZSBpblxuICBmb3IgcG9zID0gcG9zIHRvIHVudGlsIC0gMSBkb1xuICAgIG1hdGNoIHN0cmluZy5bcG9zXSB3aXRoXG4gICAgfCAnMCcgLT4gKClcbiAgICB8ICcxJyAuLiAnOScgLT4gbm9uemVybyA6PSB0cnVlXG4gICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IHBhcnNlIHN0cmluZyB+ZiA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBsZXQgYW1fb3JfcG0sIHVudGlsID1cbiAgICAoKiBkaXNjcmltaW5hdGUgYW1vbmcgQU0gKDE6MzBhbSksIFBNICgxMjozMDowMCBQLk0uKSwgb3IgMjQtaHIgKDEzOjAwKS4gKilcbiAgICBtYXRjaFxuICAgICAgKCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgYW1fc3VmZml4ZXMpXG4gICAgICAsIGZpbmRfc3VmZml4IHN0cmluZyAoTGF6eS5mb3JjZSBwbV9zdWZmaXhlcykgKVxuICAgIHdpdGhcbiAgICB8IFwiXCIsIFwiXCIgLT4gYGhyXzI0LCBsZW5cbiAgICB8IGFtLCBcIlwiIC0+IGBocl9BTSwgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyAobGVuIC0gU3RyaW5nLmxlbmd0aCBhbSlcbiAgICB8IFwiXCIsIHBtIC0+IGBocl9QTSwgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyAobGVuIC0gU3RyaW5nLmxlbmd0aCBwbSlcbiAgICB8IF8sIF8gLT4gYGhyXzI0LCBhc3NlcnQgZmFsc2VcbiAgICAoKiBJbW1lZGlhdGVseSBhYm92ZSwgaXQgbWF5IHNlZW0gbm9uc2Vuc2ljYWwgdG8gd3JpdGUgW2Bocl8yNCwgYXNzZXJ0IGZhbHNlXSB3aGVuIHRoZVxuICAgICAgIFtgaHJfMjRdIGNhbiBuZXZlciBiZSByZXR1cm5lZC4gV2UgZG8gdGhpcyB0byBoZWxwIHRoZSBjb21waWxlciBmaWd1cmUgb3V0IG5ldmVyIHRvXG4gICAgICAgYWxsb2NhdGUgYSB0dXBsZSBpbiB0aGlzIGNvZGU6IHRoZSBbbGV0XSBwYXR0ZXJuIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZSBhbmQgZXZlcnlcbiAgICAgICBtYXRjaCBjbGF1c2UgaXMgc3ludGFjdGljYWxseSBhIHR1cGxlLiAqKVxuICBpblxuICBsZXQgcG9zID0gMCBpblxuICBsZXQgcG9zLCBociwgZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgPVxuICAgICgqIGUuZy4gXCIxOjAwXCIgb3IgXCIxOjAwOjAwXCIgKilcbiAgICBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAxKSB+dW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAyLCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyOjAwXCIgb3IgXCIxMjowMDowMFwiICopXG4gICAgZWxzZSBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAyKSB+dW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAzLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjFhbVwiOyBtdXN0IGhhdmUgQU0gb3IgUE0gKGNoZWNrZWQgYmVsb3cpICopXG4gICAgZWxzZSBpZiBwb3MgKyAxID0gdW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAxLCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMTJhbVwiOyBtdXN0IGhhdmUgQU0gb3IgUE0gKGNoZWNrZWQgYmVsb3cpICopXG4gICAgZWxzZSBpZiBwb3MgKyAyID0gdW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMDkzMFwiOyBtdXN0IG5vdCBoYXZlIHNlY29uZHMgKilcbiAgICBlbHNlIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kc1xuICBpblxuICBsZXQgcG9zLCBtaW4sIGV4cGVjdF9zZWNvbmRzID1cbiAgICBtYXRjaCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyB3aXRoXG4gICAgfCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiICopXG4gICAgICBwb3MsIDAsIGZhbHNlXG4gICAgfCAoYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMpIGFzIG1heWJlX3NlY29uZHMgLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAyKSB+dW50aWxcbiAgICAgIHRoZW5cbiAgICAgICAgKCBwb3MgKyAzXG4gICAgICAgICwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuICAgICAgICAsIG1hdGNoIG1heWJlX3NlY29uZHMgd2l0aFxuICAgICAgICB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+IHRydWVcbiAgICAgICAgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMgLT5cbiAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGVuZCBvZiBzdHJpbmcgYWZ0ZXIgbWludXRlc1wiIClcbiAgICAgICAgKCogZS5nLiBcIjEyOjAwXCIgKilcbiAgICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgICB0aGVuIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGNvbG9uIG9yIGFtL3BtIHN1ZmZpeCB3aXRoIG9wdGlvbmFsIHNwYWNlIGFmdGVyIG1pbnV0ZXNcIlxuICBpblxuICBsZXQgc2VjLCBzdWJzZWNfcG9zLCBzdWJzZWNfbGVuLCBzdWJzZWNfbm9uemVybyA9XG4gICAgbWF0Y2ggZXhwZWN0X3NlY29uZHMgd2l0aFxuICAgIHwgZmFsc2UgLT5cbiAgICAgICgqIGUuZy4gXCIxMmFtXCIgb3IgXCIxMjowMFwiICopXG4gICAgICBpZiBwb3MgPSB1bnRpbFxuICAgICAgdGhlbiAwLCBwb3MsIDAsIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBhY3R1YWxseSB1bnJlYWNoYWJsZSwgYmFzZWQgb24gdGhlIHZhcmlvdXMgd2F5cyB0aGF0XG4gICAgICAgICAgIFtleHBlY3Rfc2Vjb25kc10gY2FuIGVuZCB1cCBmYWxzZS4gKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJCVUc6IGRpZCBub3QgZXhwZWN0IHNlY29uZHMsIGJ1dCBmb3VuZCB0aGVtXCJcbiAgICB8IHRydWUgLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICBpZiBwb3MgKyAyID4gdW50aWxcbiAgICAgIHRoZW5cbiAgICAgICAgKCogZS5nLiBcIjEyOjAwOjBcIiAqKVxuICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIHR3byBkaWdpdHMgb2Ygc2Vjb25kc1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgaW5cbiAgICAgICAgbGV0IHBvcyA9IHBvcyArIDIgaW5cbiAgICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgICAgdGhlbiBzZWMsIHBvcywgMCwgZmFsc2UgKCogZS5nLiBcIjEyOjAwOjAwLjEyM1wiICopXG4gICAgICAgIGVsc2UgaWYgcG9zIDwgdW50aWwgJiYgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3NcbiAgICAgICAgdGhlblxuICAgICAgICAgICggc2VjXG4gICAgICAgICAgLCBwb3NcbiAgICAgICAgICAsIHVudGlsIC0gcG9zXG4gICAgICAgICAgLCBjaGVja19kaWdpdHNfd2l0aF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgKHBvcyArIDEpIH51bnRpbCApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgZGVjaW1hbCBwb2ludCBvciBhbS9wbSBzdWZmaXggYWZ0ZXIgc2Vjb25kc1wiKVxuICBpblxuICBsZXQgaHIgPVxuICAgICgqIE5CLiBXZSBhbHJlYWR5IGtub3cgW2hyXSBpcyBub24tbmVnYXRpdmUsIGJlY2F1c2UgaXQncyB0aGUgcmVzdWx0IG9mXG4gICAgICAgW3JlYWRfMl9kaWdpdF9pbnRdLiAqKVxuICAgIG1hdGNoIGFtX29yX3BtIHdpdGhcbiAgICB8IGBocl9BTSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwYW1cIiAqKVxuICAgICAgaWYgaHIgPCAxIHx8IGhyID4gMTJcbiAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgIGVsc2UgaWYgaHIgPSAxMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIGhyXG4gICAgfCBgaHJfUE0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMHBtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMTJcbiAgICAgIGVsc2UgaHIgKyAxMlxuICAgIHwgYGhyXzI0IC0+XG4gICAgICAobWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyB3aXRob3V0IG1pbnV0ZXMgb3IgQU0vUE1cIlxuICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIHwgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgLT5cbiAgICAgICAgIGlmIGhyID4gMjRcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIGVsc2UgaWYgaHIgPSAyNCAmJiAobWluID4gMCB8fCBzZWMgPiAwIHx8IHN1YnNlY19ub256ZXJvKVxuICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInRpbWUgaXMgcGFzdCAyNDowMDowMFwiICgqIGUuZy4gXCIxMzowMDowMFwiICopXG4gICAgICAgICBlbHNlIGhyKVxuICBpblxuICBsZXQgbWluID1cbiAgICBpZiBtaW4gPiA1OSB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibWludXRlcyBvdXQgb2YgYm91bmRzXCIgZWxzZSBtaW5cbiAgaW5cbiAgbGV0IHNlYyA9XG4gICAgaWYgc2VjID4gNjAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNlY29uZHMgb3V0IG9mIGJvdW5kc1wiIGVsc2Ugc2VjXG4gIGluXG4gIGxldCBzdWJzZWNfbGVuID0gaWYgc2VjID0gNjAgfHwgbm90IHN1YnNlY19ub256ZXJvIHRoZW4gMCBlbHNlIHN1YnNlY19sZW4gaW5cbiAgZiBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlblxuOztcblxubGV0IHBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZiA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgbWF0Y2hcbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KFN0cmluZy5sZW5ndGggc3RyKVxuICAgIHdpdGhcbiAgICB8IFJlc3VsdC5PayB6IC0+IHpcbiAgICB8IFJlc3VsdC5FcnJvciBzIC0+XG4gICAgICBmYWlsd2l0aGYgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZDogJXNcIiAoRXJyb3IudG9fc3RyaW5nX21hY2ggcykgKClcbiAgaW5cbiAgaWYgbGVuIDwgMlxuICB0aGVuIGZhaWx3aXRoIFwibGVuIDwgMlwiXG4gIGVsc2UgKFxuICAgIGxldCBociA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3MgaW5cbiAgICBpZiBociA+IDI0IHRoZW4gZmFpbHdpdGggXCJob3VyID4gMjRcIjtcbiAgICBpZiBsZW4gPSAyXG4gICAgdGhlbiBmIHN0ciB+aHIgfm1pbjowIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgZWxzZSBpZiBsZW4gPCA1XG4gICAgdGhlbiBmYWlsd2l0aCBcIjIgPCBsZW4gPCA1XCJcbiAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDJdICc6JylcbiAgICB0aGVuIGZhaWx3aXRoIFwiZmlyc3QgY29sb24gbWlzc2luZ1wiXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbWluID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvczoocG9zICsgMykgaW5cbiAgICAgIGlmIG1pbiA+PSA2MCB0aGVuIGZhaWx3aXRoIFwibWludXRlID4gNjBcIjtcbiAgICAgIGlmIGhyID0gMjQgJiYgbWluIDw+IDAgdGhlbiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBtaW51dGVcIjtcbiAgICAgIGlmIGxlbiA9IDVcbiAgICAgIHRoZW4gZiBzdHIgfmhyIH5taW4gfnNlYzowIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICAgIGVsc2UgaWYgbGVuIDwgOFxuICAgICAgdGhlbiBmYWlsd2l0aCBcIjUgPCBsZW4gPCA4XCJcbiAgICAgIGVsc2UgaWYgbm90IChDaGFyLmVxdWFsIHN0ci5bcG9zICsgNV0gJzonKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcInNlY29uZCBjb2xvbiBtaXNzaW5nXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2VjID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvczoocG9zICsgNikgaW5cbiAgICAgICAgKCogc2Vjb25kIGNhbiBiZSA2MCBpbiB0aGUgY2FzZSBvZiBhIGxlYXAgc2Vjb25kLiBVbmZvcnR1bmF0ZWx5LCB3aGF0IHdpdGhcbiAgICAgICAgICAgbm9uLWhvdXItbXVsdGlwbGUgdGltZXpvbmUgb2Zmc2V0cywgd2UgY2FuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoYXRcbiAgICAgICAgICAgdGhlIGhvdXIgb3IgbWludXRlIG11c3QgYmUgaW4gdGhhdCBjYXNlICopXG4gICAgICAgIGlmIHNlYyA+IDYwIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBzZWNvbmQ6ICVpXCIgc2VjICgpO1xuICAgICAgICBpZiBociA9IDI0ICYmIHNlYyA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gc2Vjb25kc1wiO1xuICAgICAgICBpZiBsZW4gPSA4XG4gICAgICAgIHRoZW4gZiBzdHIgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICAgIGVsc2UgaWYgbGVuID0gOVxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwibGVuZ3RoID0gOVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHN0ci5bcG9zICsgOF0gd2l0aFxuICAgICAgICAgIHwgJy4nIHwgJywnIC0+XG4gICAgICAgICAgICBsZXQgc3Vic2VjX3BvcyA9IHBvcyArIDggaW5cbiAgICAgICAgICAgIGxldCBzdWJzZWNfbGVuID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBjaGVja19kaWdpdHNfd2l0aG91dF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVyb1xuICAgICAgICAgICAgICAgICAgc3RyXG4gICAgICAgICAgICAgICAgICAoc3Vic2VjX3BvcyArIDEpXG4gICAgICAgICAgICAgICAgICB+dW50aWw6KHBvcyArIGxlbilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBzZWMgPSA2MCAtPiAwXG4gICAgICAgICAgICAgIHwgdHJ1ZSB3aGVuIGhyID0gMjQgLT4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gc3Vic2Vjb25kc1wiXG4gICAgICAgICAgICAgIHwgXyAtPiBsZW4gLSA4XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZiBzdHIgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlblxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIm1pc3Npbmcgc3Vic2Vjb25kIHNlcGFyYXRvclwiKSkpKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdC5TdGRcbmluY2x1ZGUgSGFzaC5CdWlsdGluXG5pbmNsdWRlIFN0YWJsZV93aXRuZXNzLkV4cG9ydFxuXG5pbmNsdWRlIChcbiAgQmFzZSA6XG4gIHNpZ1xuICAgIHR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGJvb2wgPSBib29sIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBjaGFyID0gY2hhciBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgZXhuID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50ID0gaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyB1bml0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgYXJyYXkgOj0gJ2EgYXJyYXlcbiAgd2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxuICB3aXRoIHR5cGUgY2hhciA6PSBjaGFyXG4gIHdpdGggdHlwZSBleG4gOj0gZXhuXG4gIHdpdGggdHlwZSBmbG9hdCA6PSBmbG9hdFxuICB3aXRoIHR5cGUgaW50IDo9IGludFxuICB3aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbiAgd2l0aCB0eXBlIGludDY0IDo9IGludDY0XG4gIHdpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbiAgd2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbiAgd2l0aCB0eXBlICdhIG9wdGlvbiA6PSAnYSBvcHRpb25cbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbiAgd2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG4gIHdpdGggdHlwZSB1bml0IDo9IHVuaXQpXG4iLCJvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcbiAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGV4Y2VwdGlvbiBOYW5fb3JfaW5mIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgdmVyaWZ5IHQgPVxuICAgICAgbWF0Y2ggU3RkbGliLmNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICAgICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+ICgpXG4gICAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IHJhaXNlIE5hbl9vcl9pbmZcbiAgICA7O1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZClcblxuICAgIGxldCBzZXhwX29mX3QgPSBGbG9hdC5zZXhwX29mX3RcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gXyBhcyBzZXhwIC0+XG4gICAgICAgIGxldCB0ID0gRmxvYXQudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgKHRyeSB2ZXJpZnkgdCB3aXRoXG4gICAgICAgICB8IGUgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgKEltcG9ydC5FeG4udG9fc3RyaW5nIGUpIHNleHApO1xuICAgICAgICB0XG4gICAgICB8IHMgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgXCJEZWNpbWFsLnRfb2Zfc2V4cDogRXhwZWN0ZWQgQXRvbSwgZm91bmQgTGlzdFwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoZmxvYXRbQHF1aWNrY2hlY2suZ2VuZXJhdG9yIEZsb2F0Lmdlbl9maW5pdGVdKVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgKCogRm9yIFtzXSB3aGljaCBpcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGZpbml0ZSBmbG9hdCwgaW4gZWl0aGVyIGRlY2ltYWwgb3JcbiAgICAgICBzY2llbnRpZmljIG5vdGF0aW9uLCBzaGlmdCB0aGUgZGVjaW1hbCBwb2ludCBvciBhZGp1c3QgdGhlIHNjaWVudGlmaWMgbm90YXRpb25cbiAgICAgICBleHBvbmVudCBieSBbYnldLCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIG11bHRpcGx5aW5nIHRoZSBudW1iZXIgYnkgWzEwKipieV0uXG5cbiAgICAgICBUaGUgb3V0cHV0IHdpbGwgYmUgaW4gc2NpZW50aWZpYyBub3RhdGlvbiBpZmYgdGhlIGlucHV0IHdhcywgZXhjZXB0IHdoZW4gdGhlXG4gICAgICAgcmVzdWx0aW5nIGV4cG9uZW50IGFmdGVyIHRoZSBzaGlmdCBiZWNvbWVzIDAuXG5cbiAgICAgICBObyBlZmZvcnQgaXMgbWFkZSB0byBub3JtYWxpemUgdGhlIHNjaWVudGlmaWMgbm90YXRpb24gaWYgaXQgd2FzIG5vdCBub3JtYWxpemVkLCBvclxuICAgICAgIHRvIHN3aXRjaCB0by9mcm9tIHNjaWVudGlmaWMgbm90YXRpb24gdG8gaGVscCByZWFkYWJpbGl0eSAoZXhjZXB0IGZvciB0aGUgRTAgY2FzZVxuICAgICAgIG1lbnRpb25lZCBhYm92ZSkuICopXG4gICAgbGV0IHJlYyBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5ID1cbiAgICAgIGlmIGJ5ID0gMFxuICAgICAgdGhlbiBzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHMgPSBTdHJpbmcubHN0cmlwIHMgaW5cbiAgICAgICAgbGV0IGQsIGUsIHplcm8sIHVuZGVyc2NvcmUgPVxuICAgICAgICAgICgqIEZpbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZWNpbWFsIHBvaW50IFtkXSwgdGhlIGV4cG9uZW50IHNpZ24gW2VdLCBhbmQgY2hlY2tcbiAgICAgICAgICAgICBpZiB0aGVyZSBhcmUgYW55IG5vbi16ZXJvIHNpZ25pZmljYW50IGRpZ2l0cyAob25seSBiZWZvcmUgdGhlIGV4cG9uZW50IHNpZ24pXG4gICAgICAgICAgICAgdG8gZGV0ZXJtaW5lIGlmIHRoZSBudW1iZXIgaXMgZXF1YWwgdG8gMC4wICopXG4gICAgICAgICAgbGV0IGQgPSByZWYgTm9uZSBpblxuICAgICAgICAgIGxldCBlID0gcmVmIE5vbmUgaW5cbiAgICAgICAgICBsZXQgbm90X3plcm8gPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgdW5kZXJzY29yZSA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSAhZFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmIFwiRXJyb3IgcGFyc2luZyBQZXJjZW50LnQ6IHRvbyBtYW55IGRlY2ltYWwgcG9pbnRzIGluICclcydcIiBzICgpO1xuICAgICAgICAgICAgICBkIDo9IFNvbWUgaVxuICAgICAgICAgICAgfCAnZScgfCAnRScgLT5cbiAgICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgIWVcbiAgICAgICAgICAgICAgdGhlbiBmYWlsd2l0aGYgXCJFcnJvciBwYXJzaW5nIFBlcmNlbnQudDogdG9vIG1hbnkgRXMgaW4gJyVzJ1wiIHMgKCk7XG4gICAgICAgICAgICAgIGUgOj0gU29tZSBpXG4gICAgICAgICAgICB8ICctJyB8ICcrJyB8ICcwJyAtPiAoKVxuICAgICAgICAgICAgfCAnXycgLT4gdW5kZXJzY29yZSA6PSB0cnVlXG4gICAgICAgICAgICB8ICcxJyAuLiAnOScgLT4gaWYgT3B0aW9uLmlzX25vbmUgIWUgdGhlbiBub3RfemVybyA6PSB0cnVlXG4gICAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZCBjaGFyYWN0ZXIgd2hlbiBwYXJzaW5nIFBlcmNlbnQudDogJyVjJyBpbiAnJXMnXCIgYyBzICgpXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAhZCwgIWUsIG5vdCAhbm90X3plcm8sICF1bmRlcnNjb3JlXG4gICAgICAgIGluXG4gICAgICAgIGlmIHVuZGVyc2NvcmVcbiAgICAgICAgdGhlbiBzaGlmdF9kZWNpbWFsX3BvaW50IChTdHJpbmcuZmlsdGVyIHMgfmY6KGZ1biBjIC0+IENoYXIuKGMgPD4gJ18nKSkpIH5ieVxuICAgICAgICBlbHNlIGlmIHplcm9cbiAgICAgICAgdGhlbiBzXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAoKiBbc10gaXMgaW4gc2NpZW50aWZpYyBub3RhdGlvbi4gIFNpbXBseSBhZGp1c3QgdGhlIGV4cG9uZW50IGFmdGVyICdlJy4gKilcbiAgICAgICAgICAgIGxldCBleHAgPSBJbnQub2Zfc3RyaW5nIChTdHJpbmcuZHJvcF9wcmVmaXggcyAoZSArIDEpKSBpblxuICAgICAgICAgICAgbGV0IGV4cCA9IGV4cCArIGJ5IGluXG4gICAgICAgICAgICBpZiBleHAgPSAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFdlIGVuZCB1cCB3aXRoIGV4cG9uZW50IDAsIHNvIHdlIGp1c3Qgc2tpcCB0aGUgXCJlXCIgYWx0b2dldGhlciAqKVxuICAgICAgICAgICAgICBTdHJpbmcucHJlZml4IHMgZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICAgICAgWyBTdHJpbmcucHJlZml4IHMgKGUgKyAxKVxuICAgICAgICAgICAgICAgIDsgKGlmIGV4cCA+IDAgdGhlbiBcIitcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgICAgICAgOyBJbnQudG9fc3RyaW5nIGV4cFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICgqIFtzXSBpcyBpbiBkZWNpbWFsIG5vdGF0aW9uLiAgU3RhcnQgYnkgZHJvcHBpbmcgdGhlIGxlYWRpbmcgc2lnbiBpZiB0aGVyZSBpc1xuICAgICAgICAgICAgICAgb25lLiAgV2UnbGwgcmUtYWRkIGl0IGF0IHRoZSBlbmQgdG8ga2VlcCB0aGUgcmVzdCBvZiB0aGUgY29kZSBzaW1wbGVyLiAqKVxuICAgICAgICAgICAgbGV0IG5lZyA9IENoYXIuKCA9ICkgcy5bMF0gJy0nIGluXG4gICAgICAgICAgICBsZXQgc2lnbmVkID0gbmVnIHx8IENoYXIuKCA9ICkgcy5bMF0gJysnIGluXG4gICAgICAgICAgICBsZXQgcyA9IGlmIHNpZ25lZCB0aGVuIFN0cmluZy5kcm9wX3ByZWZpeCBzIDEgZWxzZSBzIGluXG4gICAgICAgICAgICBsZXQgcywgYnkgPVxuICAgICAgICAgICAgICAoKiBOZXh0LCBzY3JhdGNoIHRoZSBkZWNpbWFsIHBvaW50IGlmIHRoZXJlIGlzIG9uZSwgc28gdGhhdCBbc10gYmVjb21lcyBhblxuICAgICAgICAgICAgICAgICBpbnRlZ2VyLCBhbmQgYWRqdXN0IFtieV0gYWNjb3JkaW5nbHkgdG8ga2VlcCB0aGUgcmVzdWx0IHVuY2hhbmdlZC4gIFdlXG4gICAgICAgICAgICAgICAgIGFsc28ga25vdyB0aGF0IFtzIDw+IDAuMF0gc28gd2UgcmVtb3ZlIGxlYWRpbmcgemVyb3MuICBXZSBtYXkgYmUgd2FzdGluZ1xuICAgICAgICAgICAgICAgICBzb21lIHdvcmsgYmVjYXVzZSB3ZSBtYXkgaGF2ZSB0byBhZGQgdGhlbSBiYWNrIGJlbG93LCBidXQgdGhlIGNvZGUgaXNcbiAgICAgICAgICAgICAgICAgc2ltcGxlciB0aGF0IHdheS4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzLCBieVxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPlxuICAgICAgICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgICAgICAgICgqIFdlIGNhbGN1bGF0ZWQgW2RdIGJlZm9yZSByZW1vdmluZyB0aGUgXCItXCIgc2lnbiwgc28gd2UgbWF5IGhhdmUgdG9cbiAgICAgICAgICAgICAgICAgICAgIGFkanVzdCBpdCBub3cgKilcbiAgICAgICAgICAgICAgICAgIGQgLSBpZiBzaWduZWQgdGhlbiAxIGVsc2UgMFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHN1ZiA9IFN0cmluZy5kcm9wX3ByZWZpeCBzIChkICsgMSkgaW5cbiAgICAgICAgICAgICAgICBsZXQgcHJlZiA9IFN0cmluZy5wcmVmaXggcyBkIGluXG4gICAgICAgICAgICAgICAgbGV0IHMgPSBwcmVmIF4gc3VmIHw+IFN0cmluZy5sc3RyaXAgfmRyb3A6KENoYXIuKCA9ICkgJzAnKSBpblxuICAgICAgICAgICAgICAgIGxldCBieSA9IGJ5IC0gU3RyaW5nLmxlbmd0aCBzdWYgaW5cbiAgICAgICAgICAgICAgICBzLCBieVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIFJlbW92ZSB0cmFpbGluZyB6ZXJvcyB0b28gKilcbiAgICAgICAgICAgIGxldCBzLCBieSA9XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgbGV0IHMgPSBzIHw+IFN0cmluZy5yc3RyaXAgfmRyb3A6KENoYXIuKCA9ICkgJzAnKSBpblxuICAgICAgICAgICAgICBsZXQgYnkgPSBieSArIGxlbiAtIFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBzLCBieVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBpZiBieSA9IDBcbiAgICAgICAgICAgICAgdGhlbiBzXG4gICAgICAgICAgICAgIGVsc2UgaWYgYnkgPiAwXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAoKiBDYXNlIDE6IFtzXSBpcyBhbiBpbnRlZ2VyIHdoaWNoIHdlIG5lZWQgdG8gZnVydGhlciBtdWx0aXBseSBieSBhXG4gICAgICAgICAgICAgICAgICAgcG9zaXRpdmUgcG93ZXIgb2YgMTAsIHNvIHdlIGp1c3QgYWRkIDBzIGF0IHRoZSBlbmQuICopXG4gICAgICAgICAgICAgICAgcyBeIFN0cmluZy5tYWtlIGJ5ICcwJ1xuICAgICAgICAgICAgICBlbHNlIGlmIGJ5ID4gLWxlblxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgKCogQ2FzZSAyOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGRpdmlkZSBieSBhIHBvc2l0aXZlIHBvd2VyXG4gICAgICAgICAgICAgICAgICAgb2YgMTAsIGFuZCBpdCBoYXMgZW5vdWdoIGRpZ2l0cyB0aGF0IHdlIGNhbiBqdXN0IGluc2VydCB0aGUgJy4nIGluXG4gICAgICAgICAgICAgICAgICAgYmV0d2VlbiB0aGVtLiAqKVxuICAgICAgICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBTdHJpbmcuZHJvcF9zdWZmaXggcyAoLWJ5KTsgXCIuXCI7IFN0cmluZy5zdWZmaXggcyAoLWJ5KSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAoKiBDYXNlIDMgKGJ5IDw9IC1sZW4pOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGRpdmlkZSBieSBhXG4gICAgICAgICAgICAgICAgICAgbGFyZ2UgZW5vdWdoIHBvc2l0aXZlIHBvd2VyIG9mIDEwIHRoYXQgd2UgbmVlZCB0byBhZGQgbGVhZGluZyAwcy4gKilcbiAgICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgXCIwLlwiOyBTdHJpbmcubWFrZSAoLWJ5IC0gbGVuKSAnMCc7IHMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIEZpbmFsbHksIHJlc3RvcmUgdGhlIHNpZ24uICBXZSBjYW4ndCBqdXN0IGRyb3AgdGhlICcrJyBzaWduLCB3ZSBuZWVkIHRvXG4gICAgICAgICAgICAgICByZXN0b3JlIGl0IHRvbywgYmVjYXVzZSBpZiB3ZSBkaWRuJ3QsIHdlIHdvdWxkIHNpbGVudGx5IHBhcnNlIG51bWJlcnMgbGlrZVxuICAgICAgICAgICAgICAgXCIrLTEzJVwiIG9yIFwiKysxN2JwXCIgd2l0aG91dCByYWlzaW5nIGFuIGVycm9yLiAqKVxuICAgICAgICAgICAgaWYgc2lnbmVkIHRoZW4gKGlmIG5lZyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpIF4gcyBlbHNlIHMpKVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzaGlmdF9kZWNpbWFsX3BvaW50IDFcIiA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgWyBcIjNcIlxuICAgICAgICA7IFwiNTEuMlwiXG4gICAgICAgIDsgXCItNTBcIlxuICAgICAgICA7IFwiMzEyNzAwMC4wMDBcIlxuICAgICAgICA7IFwiMS43OUUrMzA4XCJcbiAgICAgICAgOyBcIjQuOTQwNjU2RS0zMjRcIlxuICAgICAgICA7IFwiLTAuMDAwZTEzXCJcbiAgICAgICAgOyBcIjEuNDc2NTFFKzEwXCJcbiAgICAgICAgXVxuICAgICAgICB+ZjooZnVuIHMgLT5cbiAgICAgICAgICBwcmludGYgXCI9PSAlcyA9PVxcblwiIHM7XG4gICAgICAgICAgbGV0IHggPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIExpc3QuaXRlciBbIC00MDsgLTEwOyAtMjsgLTE7IDA7IDE7IDI7IDEwOyA0MCBdIH5mOihmdW4gYnkgLT5cbiAgICAgICAgICAgIGxldCBzMSA9IHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+YnkgaW5cbiAgICAgICAgICAgIHByaW50ZiBcIiVzXFxuXCIgczE7XG4gICAgICAgICAgICBsZXQgeDEgPSBGbG9hdC5vZl9zdHJpbmcgczEgaW5cbiAgICAgICAgICAgIGxldCB4MiA9IHggKi4gKDEwLiAqKiBmbG9hdCBieSkgaW5cbiAgICAgICAgICAgIGFzc2VydCAoRmxvYXQuKHgxID0geDIgfHwgYWJzICgoeDEgLSB4MikgLyB4MSkgPCAxZS02KSA6IGJvb2wpKTtcbiAgICAgICAgICBwcmludGYgXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcblwiKTtcbiAgICAgICgqIE5vdGUgXCItMC4wMDBlMTNcIiBpcyBub3QgYWRqdXN0ZWQgKilcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICAgID09IDMgPT1cbiAgICAgICAgMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzXG4gICAgICAgIDAuMDAwMDAwMDAwM1xuICAgICAgICAwLjAzXG4gICAgICAgIDAuM1xuICAgICAgICAzXG4gICAgICAgIDMwXG4gICAgICAgIDMwMFxuICAgICAgICAzMDAwMDAwMDAwMFxuICAgICAgICAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSA1MS4yID09XG4gICAgICAgIDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MTJcbiAgICAgICAgMC4wMDAwMDAwMDUxMlxuICAgICAgICAwLjUxMlxuICAgICAgICA1LjEyXG4gICAgICAgIDUxLjJcbiAgICAgICAgNTEyXG4gICAgICAgIDUxMjBcbiAgICAgICAgNTEyMDAwMDAwMDAwXG4gICAgICAgIDUxMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAtNTAgPT1cbiAgICAgICAgLTAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1XG4gICAgICAgIC0wLjAwMDAwMDAwNVxuICAgICAgICAtMC41XG4gICAgICAgIC01XG4gICAgICAgIC01MFxuICAgICAgICAtNTAwXG4gICAgICAgIC01MDAwXG4gICAgICAgIC01MDAwMDAwMDAwMDBcbiAgICAgICAgLTUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAzMTI3MDAwLjAwMCA9PVxuICAgICAgICAwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMxMjdcbiAgICAgICAgMC4wMDAzMTI3XG4gICAgICAgIDMxMjcwXG4gICAgICAgIDMxMjcwMFxuICAgICAgICAzMTI3MDAwLjAwMFxuICAgICAgICAzMTI3MDAwMFxuICAgICAgICAzMTI3MDAwMDBcbiAgICAgICAgMzEyNzAwMDAwMDAwMDAwMDBcbiAgICAgICAgMzEyNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gMS43OUUrMzA4ID09XG4gICAgICAgIDEuNzlFKzI2OFxuICAgICAgICAxLjc5RSsyOThcbiAgICAgICAgMS43OUUrMzA2XG4gICAgICAgIDEuNzlFKzMwN1xuICAgICAgICAxLjc5RSszMDhcbiAgICAgICAgMS43OUUrMzA5XG4gICAgICAgIDEuNzlFKzMxMFxuICAgICAgICAxLjc5RSszMThcbiAgICAgICAgMS43OUUrMzQ4XG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDQuOTQwNjU2RS0zMjQgPT1cbiAgICAgICAgNC45NDA2NTZFLTM2NFxuICAgICAgICA0Ljk0MDY1NkUtMzM0XG4gICAgICAgIDQuOTQwNjU2RS0zMjZcbiAgICAgICAgNC45NDA2NTZFLTMyNVxuICAgICAgICA0Ljk0MDY1NkUtMzI0XG4gICAgICAgIDQuOTQwNjU2RS0zMjNcbiAgICAgICAgNC45NDA2NTZFLTMyMlxuICAgICAgICA0Ljk0MDY1NkUtMzE0XG4gICAgICAgIDQuOTQwNjU2RS0yODRcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gLTAuMDAwZTEzID09XG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDEuNDc2NTFFKzEwID09XG4gICAgICAgIDEuNDc2NTFFLTMwXG4gICAgICAgIDEuNDc2NTFcbiAgICAgICAgMS40NzY1MUUrOFxuICAgICAgICAxLjQ3NjUxRSs5XG4gICAgICAgIDEuNDc2NTFFKzEwXG4gICAgICAgIDEuNDc2NTFFKzExXG4gICAgICAgIDEuNDc2NTFFKzEyXG4gICAgICAgIDEuNDc2NTFFKzIwXG4gICAgICAgIDEuNDc2NTFFKzUwXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHx9XVxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4gICAgICAoKiBMb2dpYyBzdG9sZW4gZnJvbSBsaWIvYmFzZS9zcmMvZmxvYXQubWwsIGJ1dCB0aGlzIGRvZXMgbm90IGNhbGxcbiAgICAgICAgIFt2YWxpZF9mbG9hdF9sZXhlbV0gc28gbm90IGFkZGluZyBhIHRyYWlsaW5nIFwiLlwiIGFuZCBhbHNvLCB3ZSdyZSB1c2luZ1xuICAgICAgICAgdXBwZXJjYXNlICglRyB2cyAlZykgZm9yIGNvbnNpc3RlbmN5IHdpdGggW1BlcmNlbnQuU3RhYmxlLlYyXS4gKilcbiAgICAgIGxldCBmbG9hdF90b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIChmbG9hdF9vZl9zdHJpbmcgeSkgeCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3R1wiIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcnIGZsb2F0X3RvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgICAgdGhlbiBcIjB4XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHMgPSBmbG9hdF90b19zdHJpbmcgeCBpblxuICAgICAgICAgICgqIFVuaW1wb3J0YW50IG5vdGU6IFYzIHNlcmlhbGl6ZXMgbmFuIGFzIFwiTkFOeFwiLCB3aGlsZSBWMiBzZXJpYWxpemVzIGl0IGFzXG4gICAgICAgICAgICAgXCJOQU5icFwiICopXG4gICAgICAgICAgaWYgRmxvYXQuKGlzX25hbiB4IHx8IGlzX2luZiB4IHx8IHhfYWJzID49IDEuKVxuICAgICAgICAgIHRoZW4gcyBeIFwieFwiXG4gICAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgICAgIHRoZW4gc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICAgICAgICBlbHNlIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6NCBeIFwiYnBcIilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgeCA9IHRvX3N0cmluZycgZmxvYXRfdG9fc3RyaW5nIHhcblxuICAgICAgbGV0IHJlYWxseV9vZl9zdHJpbmcgc3RyIGZsb2F0X29mX3N0cmluZyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcInhcIiB3aXRoXG4gICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciB+Ynk6MFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwiJVwiIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyIH5ieTooLTIpXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJicFwiIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyIH5ieTooLTQpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJQZXJjZW50Lm9mX3N0cmluZzogbXVzdCBlbmQgaW4geCwgJSUsIG9yIGJwOiAlc1wiIHN0ciAoKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHggPVxuICAgICAgICByZWFsbHlfb2Zfc3RyaW5nIHggKGZ1biBzIH5ieSAtPlxuICAgICAgICAgIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+YnlcbiAgICAgICAgICB8PiBTZXhwLkF0b21cbiAgICAgICAgICB8PiBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24udF9vZl9zZXhwKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiB4ID1cbiAgICAgICAgcmVhbGx5X29mX3N0cmluZyB4IChmdW4gcyB+YnkgLT5cbiAgICAgICAgICBtYXRjaCBTdHJpbmcubG93ZXJjYXNlIHMgd2l0aFxuICAgICAgICAgIHwgXCJuYW5cIlxuICAgICAgICAgIHwgXCItbmFuXCJcbiAgICAgICAgICB8IFwiK25hblwiXG4gICAgICAgICAgfCBcImluZlwiXG4gICAgICAgICAgfCBcImluZmluaXR5XCJcbiAgICAgICAgICB8IFwiK2luZlwiXG4gICAgICAgICAgfCBcIitpbmZpbml0eVwiXG4gICAgICAgICAgfCBcIi1pbmZcIlxuICAgICAgICAgIHwgXCItaW5maW5pdHlcIiAtPlxuICAgICAgICAgICAgKCogV2UgcGFyc2UgdGhlc2UgbmFuIG9yIGluZiBzdHJpbmdzIGRpcmVjdGx5LCBiZWNhdXNlXG4gICAgICAgICAgICAgICBbc2hpZnRfZGVjaW1hbF9wb2ludF0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtICopXG4gICAgICAgICAgICBGbG9hdC5vZl9zdHJpbmcgc1xuICAgICAgICAgIHwgXyAtPiBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5IHw+IEZsb2F0Lm9mX3N0cmluZylcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZ2FibGUgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA6IHN0cmluZyAtPiB0XG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAoKiBVc2UgYSBkaWZmZXJlbnQgYmluX3NoYXBlX3QgdGhhbiBQZXJjZW50LlN0YWJsZS5WMiwgZXZlbiB0aG91Z2ggdGhlc2UgdHdvIHZlcnNpb25zXG4gICAgICAgaGF2ZSBjb21wYXRpYmxlIGJpbl9pbyBzZXJpYWxpemF0aW9uLiAgU2luY2UgdGhleSBkbyBkaWZmZXIgaW4gc2V4cCBzZXJpYWxpemF0aW9uLFxuICAgICAgIHdlIGVyciBvbiB0aGUgc2lkZSBvZiBzYWZldHkgYW5kIGNoYW5nZSB0aGUgYmluIHNoYXBlIHRvIHdhcm4gdGhhdCBWMyBpcyBub3QgYWx3YXlzXG4gICAgICAgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBWMi4gKilcbiAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgKEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjMyZjJhMWUtNmI0My0xMWVkLWIzM2ItYWFjMmE1NjNmMTBhXCIpXG4gICAgICAgIFsgYmluX3NoYXBlX3QgXVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCBzID0gU3RyaW5nYWJsZS5mbG9hdF90b19zdHJpbmcgeCBpblxuICAgICAgICBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5OjIgXiBcIiVcIlxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGZsb2F0W0BxdWlja2NoZWNrLmdlbmVyYXRvciBGbG9hdC5nZW5fZmluaXRlXSlcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG9mX211bHQgZiA9IGZcbiAgICBsZXQgdG9fbXVsdCB0ID0gdFxuICAgIGxldCBvZl9wZXJjZW50YWdlIGYgPSBmIC8uIDEwMC5cbiAgICBsZXQgdG9fcGVyY2VudGFnZSB0ID0gdCAqLiAxMDAuXG4gICAgbGV0IG9mX2JwIGYgPSBmIC8uIDEwXzAwMC5cbiAgICBsZXQgdG9fYnAgdCA9IHQgKi4gMTBfMDAwLlxuICAgIGxldCBvZl9icF9pbnQgaSA9IG9mX2JwIChGbG9hdC5vZl9pbnQgaSlcbiAgICBsZXQgdG9fYnBfaW50IHQgPSBGbG9hdC50b19pbnQgKHRvX2JwIHQpXG5cbiAgICAoKiBNdWx0aXBseSB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBmbG9hdCBbZl0gYnkgWzEwKipieV0sIGFuZCBjb252ZXJ0IGJhY2sgdG9cbiAgICAgICB0aGUgbmVhcmVzdCByZXByZXNlbnRhYmxlIGZsb2F0LiAqKVxuICAgIGxldCBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5ID1cbiAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGYpXG4gICAgICB0aGVuIGZcbiAgICAgIGVsc2UgRmxvYXQudG9fc3RyaW5nIGYgfD4gVjMuc2hpZnRfZGVjaW1hbF9wb2ludCB+YnkgfD4gRmxvYXQub2Zfc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBvZl9wZXJjZW50YWdlX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieTooLTIpXG4gICAgbGV0IHRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OjJcbiAgICBsZXQgb2ZfYnBfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OigtNClcbiAgICBsZXQgdG9fYnBfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OjRcblxuICAgIGxldCByb3VuZF9zaWduaWZpY2FudCBwIH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX211bHQgcCB+ZGVjaW1hbF9kaWdpdHMgPSBGbG9hdC5yb3VuZF9kZWNpbWFsIHAgfmRlY2ltYWxfZGlnaXRzXG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwLikgfmRlY2ltYWxfZGlnaXRzIC8uIDEwMC5cbiAgICA7O1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfYnAgcCB+ZGVjaW1hbF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfZGVjaW1hbCAocCAqLiAxMDAwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAwMC5cbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBFeHBvbmVudCBvZiBpbnRcbiAgICAgICAgfCBFeHBvbmVudF9FIG9mIGludFxuICAgICAgICB8IERlY2ltYWwgb2YgaW50XG4gICAgICAgIHwgT2NhbWxcbiAgICAgICAgfCBDb21wYWN0IG9mIGludFxuICAgICAgICB8IENvbXBhY3RfRSBvZiBpbnRcbiAgICAgICAgfCBIZXggb2YgaW50XG4gICAgICAgIHwgSGV4X0Ugb2YgaW50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgZXhwb25lbnQgfnByZWNpc2lvbiA9IEV4cG9uZW50IHByZWNpc2lvblxuICAgICAgbGV0IGV4cG9uZW50X0UgfnByZWNpc2lvbiA9IEV4cG9uZW50X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgZGVjaW1hbCB+cHJlY2lzaW9uID0gRGVjaW1hbCBwcmVjaXNpb25cbiAgICAgIGxldCBvY2FtbCA9IE9jYW1sXG4gICAgICBsZXQgY29tcGFjdCB+cHJlY2lzaW9uID0gQ29tcGFjdCBwcmVjaXNpb25cbiAgICAgIGxldCBjb21wYWN0X0UgfnByZWNpc2lvbiA9IENvbXBhY3RfRSBwcmVjaXNpb25cbiAgICAgIGxldCBoZXggfnByZWNpc2lvbiA9IEhleCBwcmVjaXNpb25cbiAgICAgIGxldCBoZXhfRSB+cHJlY2lzaW9uID0gSGV4X0UgcHJlY2lzaW9uXG5cbiAgICAgIGxldCBmb3JtYXRfZmxvYXQgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEV4cG9uZW50IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZVwiIHByZWNpc2lvblxuICAgICAgICB8IEV4cG9uZW50X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipFXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgRGVjaW1hbCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmZcIiBwcmVjaXNpb25cbiAgICAgICAgfCBPY2FtbCAtPiBzcHJpbnRmIFwiJUZcIlxuICAgICAgICB8IENvbXBhY3QgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipnXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgQ29tcGFjdF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qR1wiIHByZWNpc2lvblxuICAgICAgICB8IEhleCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmhcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXhfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkhcIiBwcmVjaXNpb25cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZm9ybWF0IHggZm9ybWF0ID1cbiAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgZmxvYXQgaW5cbiAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICB0aGVuIFwiMHhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgKCogV0FSTklORyAtIFBMRUFTRSBSRUFEIEJFRk9SRSBFRElUSU5HIFRIRVNFIEZVTkNUSU9OUzpcblxuICAgICAgICAgVGhlIHN0cmluZyBjb252ZXJ0ZXJzIGluIFN0YWJsZS5WMy9WMi9WMSBzaG91bGQgbmV2ZXIgY2hhbmdlLiBJZiB5b3UgYXJlIGNoYW5naW5nXG4gICAgICAgICB0aGUgc2VtYW50aWNzIG9mIGFueXRoaW5nIHRoYXQgYWZmZWN0cyB0aGUgc2V4cCBvciBiaW4taW8gcmVwcmVzZW50YXRpb24gb2ZcbiAgICAgICAgIHZhbHVlcyBvZiB0aGlzIHR5cGUgKHRoaXMgaW5jbHVkZXMgdG9fc3RyaW5nIGFuZCBvZl9zdHJpbmcpIG1ha2UgYSBTdGFibGUuVjQgYW5kXG4gICAgICAgICBtYWtlIHlvdXIgY2hhbmdlcyB0aGVyZS4gVGhhbmtzISAqKVxuICAgICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IHNwcmludGYgXCIlLjZHXCIgZmxvYXQgaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgICAgdGhlbiBcIjB4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMS4pIF4gXCJ4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICAgIGVsc2Ugc3RyaW5nICh4ICouIDEwXzAwMC4pIF4gXCJicFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVjMub2Zfc3RyaW5nXG4gICAgICBsZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mID0gVjMub2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZ2FibGUgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA6IHN0cmluZyAtPiB0XG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAoKiBNaW50IGEgdW5pcXVlIFtiaW5fc2hhcGVfdF0gdGhhdCdzIGRpc3RpbmN0IGZyb20gdGhlIGhpZGRlbiB1bmRlcmx5aW5nXG4gICAgICAgcmVwcmVzZW50YXRpb24gb2YgZmxvYXQuICopXG4gICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjFkMWU3NmJjLWVhNGItMTFlYi1hMTZhLWFhNWIyOGQxZjRkN1wiKVxuICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYzLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gVjMuY29tcGFyYXRvclxuICAgICAgZW5kKVxuXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBWMy5jb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFYyXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IEZsb2F0LmJpbl9zaGFwZV90XG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgYmluX2lvXVxuICAgICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjMuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IFYzLmNvbXBhcmF0b3JcblxuICAgICAgICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdFxuICAgICAgICAgICAgIHNlcmlhbGl6YXRpb24gcmF0aGVyIHRoYW4gcGVyY2VudCBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmdcbiAgICAgICAgICAgICBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlciBzZXJpYWxpemF0aW9uLlxuICAgICAgICAgICopXG4gICAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgICAgICAgIHwgZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICAgICAgICA7O1xuICAgICAgICBlbmQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uX3JlcHIgPSBzdHJ1Y3RcbiAgICAgIGxldCBub25lID0gRmxvYXQubmFuXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gRmxvYXQuaXNfbmFuIHRcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgPSBpc19zb21lXG4gICAgICBsZXQgc29tZSA9IEZuLmlkXG4gICAgICBsZXQgdW5jaGVja2VkX3ZhbHVlID0gRm4uaWRcbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcbiAgICAgIGxldCBhcHBseV93aXRoX25vbmVfYXNfbmFuID0gKCAqLiApXG4gICAgICBsZXQgb2ZfbXVsdF93aXRoX25hbl9hc19ub25lID0gRm4uaWRcbiAgICAgIGxldCB0b19tdWx0X3dpdGhfbm9uZV9hc19uYW4gPSBGbi5pZFxuXG4gICAgICBsZXQgb2Zfb3B0aW9uIG9wdCA9XG4gICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSB2IC0+IHNvbWUgdlxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgaWYgaXNfc29tZSB0XG4gICAgICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICAgICAgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiUGVyY2VudC5PcHRpb24udmFsdWVfZXhuIG5vbmVcIl1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gQm9vbC5zZWxlY3QgKGlzX25vbmUgdCkgZGVmYXVsdCAodW5jaGVja2VkX3ZhbHVlIHQpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFYzLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJlOWI1MjAyOC02YjQ1LTExZWQtYTZiNi1hYWMyYTU2M2YxMGFcIilcbiAgICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgT3B0aW9uX3JlcHJcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMy5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYzLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjMudCBPcHRpb24udF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVjIudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5iYXNldHlwZVxuICAgICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImY3YWEwNGU4LWRhM2UtMTFlYy1iNTQ2LWFhNzMyODQzM2I3MFwiKVxuICAgICAgICAgIFsgYmluX3NoYXBlX3QgXVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSBPcHRpb25fcmVwclxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19vcHRpb24gdCB8PiBPcHRpb24uc2V4cF9vZl90IFYyLnNleHBfb2ZfdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gKE9wdGlvbi50X29mX3NleHAgVjIudF9vZl9zZXhwKSBzZXhwIHw+IG9mX29wdGlvblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFslc2V4cF9ncmFtbWFyOiBWMi50IE9wdGlvbi50XVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgQmluX3NoYXBlX3NhbWVfYXNfZmxvYXQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBWMlxuXG4gICAgICAgIGxldCBiaW5fc2hhcGVfdCA9IEZsb2F0LmJpbl9zaGFwZV90XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5CaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUuT3B0aW9uXG4gIGluY2x1ZGUgU3RhYmxlLlYxLkJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgaXNfemVybyB0ID0gdCA9IDAuXG5sZXQgYXBwbHkgdCBmID0gdCAqLiBmXG5sZXQgc2NhbGUgdCBmID0gdCAqLiBmXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgRmxvYXRcblxuICBsZXQgb25lX2h1bmRyZWRfcGVyY2VudCA9IDEuXG4gIGxldCAoIC8vICkgeCB5ID0gb2ZfbXVsdCB4IC8uIG9mX211bHQgeVxuZW5kIDpcbnNpZ1xuICB2YWwgemVybyA6IHRcbiAgdmFsIG9uZV9odW5kcmVkX3BlcmNlbnQgOiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8vICkgOiB0IC0+IHQgLT4gZmxvYXRcbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBpc19uYW4gOiB0IC0+IGJvb2xcbiAgdmFsIGlzX2luZiA6IHQgLT4gYm9vbFxuICB2YWwgc2lnbl9leG4gOiB0IC0+IFNpZ24udFxuXG4gIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5lbmQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhYmxlLlYxLkJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgPSBGbG9hdC52YWxpZGF0ZV9vcmRpbmFyeVxubGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiBzID0gU3RyaW5nYWJsZS5vZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgc1xubGV0IHRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiBzZXhwID0gb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIChTZXhwLnRvX3N0cmluZyBzZXhwKVxuXG5tb2R1bGUgQWx3YXlzX3BlcmNlbnRhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZm9ybWF0IHggZm9ybWF0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgKHggKi4gMTAwLikgXiBcIiVcIlxuICBsZXQgdG9fc3RyaW5nIHggPSBzcHJpbnRmIFwiJS42RyUlXCIgKHggKiAxMDAuKVxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmxldCB0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlID0gU3RhYmxlLlYzLnRvX3N0cmluZ1xuXG5tb2R1bGUgQWxtb3N0X3JvdW5kX3RyaXBwYWJsZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gU3RhYmxlLlYzLlN0cmluZ2FibGUuKHRvX3N0cmluZycgKGZvcm1hdF9mbG9hdCBcIiUuMTRHXCIpIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IFN0YWJsZS5WMy5TdHJpbmdhYmxlLm9mX3N0cmluZyB4XG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gIGxldCB0X29mX3NleHAgPSBTdGFibGUuVjMudF9vZl9zZXhwXG5cbiAgbW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgIGxldCBvcGVuIFN0YWJsZS5WMyBpblxuICAgICAgbGV0IHMgPSBTdHJpbmdhYmxlLmZvcm1hdF9mbG9hdCBcIiUuMTRHXCIgeCBpblxuICAgICAgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubGV0IHJhbmRvbWl6ZSBzcGFuIHJhbmRvbV9zdGF0ZSB+cGVyY2VudCB+c2NhbGUgPVxuICBsZXQgbXVsdCA9IFBlcmNlbnQudG9fbXVsdCBwZXJjZW50IGluXG4gIGlmIEZsb2F0LiggPCApIG11bHQgMC4gfHwgRmxvYXQuKCA+ICkgbXVsdCAxLlxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiU3Bhbi5yYW5kb21pemU6IHBlcmNlbnQgaXMgb3V0IG9mIHJhbmdlIFsweCwgMXhdXCIgKHBlcmNlbnQgOiBQZXJjZW50LnQpXTtcbiAgbGV0IGZhY3RvciA9XG4gICAgUmFuZG9tLlN0YXRlLmZsb2F0X3JhbmdlIHJhbmRvbV9zdGF0ZSAoMS4gLS4gbXVsdCkgKEZsb2F0Lm9uZV91bHAgYFVwICgxLiArLiBtdWx0KSlcbiAgaW5cbiAgc2NhbGUgc3BhbiBmYWN0b3Jcbjs7XG5cbmxldCBmb3JtYXRfZGVjaW1hbCBuIHRlbnRocyB1bml0cyA9XG4gIGFzc2VydCAodGVudGhzID49IDAgJiYgdGVudGhzIDwgMTApO1xuICBpZiBuIDwgMTAgJiYgdGVudGhzIDw+IDBcbiAgdGhlbiBzcHJpbnRmIFwiJWQuJWQlc1wiIG4gdGVudGhzIHVuaXRzXG4gIGVsc2Ugc3ByaW50ZiBcIiVkJXNcIiBuIHVuaXRzXG47O1xuXG5sZXQgc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnMgPVxuICBsZXQgcyA9XG4gICAgaWYgaHIgPj0gMjRcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIChociAvIDI0KSAoSW50Lm9mX2Zsb2F0IChGbG9hdC5vZl9pbnQgKGhyICUgMjQpIC8uIDIuNCkpIFwiZFwiXG4gICAgZWxzZSBpZiBociA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIGhyIChtaW4gLyA2KSBcImhcIlxuICAgIGVsc2UgaWYgbWluID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgbWluIChzZWMgLyA2KSBcIm1cIlxuICAgIGVsc2UgaWYgc2VjID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgc2VjIChtcyAvIDEwMCkgXCJzXCJcbiAgICBlbHNlIGlmIG1zID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgbXMgKHVzIC8gMTAwKSBcIm1zXCJcbiAgICBlbHNlIGlmIHVzID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgdXMgKG5zIC8gMTAwKSBcInVzXCJcbiAgICBlbHNlIHNwcmludGYgXCIlaW5zXCIgbnNcbiAgaW5cbiAgbWF0Y2ggKHNpZ24gOiBTaWduLnQpIHdpdGhcbiAgfCBOZWcgLT4gXCItXCIgXiBzXG4gIHwgWmVybyB8IFBvcyAtPiBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBQYXJ0cyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzaWduIDogU2lnbi50XG4gICAgICAgIDsgaHIgOiBpbnRcbiAgICAgICAgOyBtaW4gOiBpbnRcbiAgICAgICAgOyBzZWMgOiBpbnRcbiAgICAgICAgOyBtcyA6IGludFxuICAgICAgICA7IHVzIDogaW50XG4gICAgICAgIDsgbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgTGlrZV9hX2Zsb2F0ID0gc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsIHplcm8gOiB0XG4gICAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogdFxuICAgICAgdmFsIGFicyA6IHQgLT4gdFxuICAgICAgdmFsIG5lZyA6IHQgLT4gdFxuICAgICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBpbmNsdWRlIExpa2VfYV9mbG9hdCB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgOiBzaWdcbiAgICAgICAgdmFsIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbmFub3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaW51dGUgOiB0XG4gICAgICAgIHZhbCBob3VyIDogdFxuICAgICAgICB2YWwgZGF5IDogdFxuICAgICAgZW5kXG5cbiAgICAgIHZhbCB0b19wYXJ0cyA6IHQgLT4gUGFydHMudFxuICAgICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdCBbQEBkZXJpdmluZyBoYXNoLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIHR5cGUgdCA9IHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gICAgICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG5cbiAgICAgICgqIElGIFRISVMgUkVQUkVTRU5UQVRJT04gRVZFUiBDSEFOR0VTLCBFTlNVUkUgVEhBVCBFSVRIRVJcbiAgICAgICAgICgxKSBhbGwgdmFsdWVzIHNlcmlhbGl6ZSB0aGUgc2FtZSB3YXkgaW4gYm90aCByZXByZXNlbnRhdGlvbnMsIG9yXG4gICAgICAgICAoMikgeW91IGFkZCBhIG5ldyBUaW1lLlNwYW4gdmVyc2lvbiB0byBzdGFibGUubWwgKilcbiAgICAgIGluY2x1ZGUgKFxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRcblxuICAgICAgICBsZXQgc2lnbiA9IHNpZ25fZXhuXG4gICAgICBlbmQgOlxuICAgICAgICBMaWtlX2FfZmxvYXQgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgICgqIHRoaXMgcHJldmVudHMgYW55IHdvcnJ5IGFib3V0IGhhdmluZyB0aGVzZSB2ZXJ5IGNvbW1vbiBuYW1lcyByZWRlZmluZWQgYmVsb3cgYW5kXG4gICAgICAgICBtYWtlcyB0aGVpciB1c2FnZSB3aXRoaW4gdGhpcyBtb2R1bGUgc2FmZXIuICBDb25zdGFudCBpcyBpbmNsdWRlZCBhdCB0aGUgdmVyeVxuICAgICAgICAgYm90dG9tIHRvIHJlLWV4cG9ydCB0aGVzZSBjb25zdGFudHMgaW4gYSBtb3JlIGNvbnZlbmllbnQgd2F5ICopXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTlcbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kID0gMUU2XG4gICAgICAgIGxldCBtaWxsaXNlY29uZHNfcGVyX3NlY29uZCA9IDFFM1xuXG4gICAgICAgICgqIHNwYW5zIGFyZSBzdG9yZWQgYXMgYSBmbG9hdCBpbiBzZWNvbmRzICopXG4gICAgICAgIGxldCBuYW5vc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWNyb3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgc2Vjb25kID0gb2ZfZmxvYXQgMS5cbiAgICAgICAgbGV0IG1pbnV0ZSA9IG9mX2Zsb2F0IDYwLlxuICAgICAgICBsZXQgaG91ciA9IG9mX2Zsb2F0ICg2MC4gKi4gNjAuKVxuICAgICAgICBsZXQgZGF5ID0gb2ZfZmxvYXQgKDI0LiAqLiA2MC4gKi4gNjAuKVxuICAgICAgZW5kXG5cblxuICAgICAgbGV0IHRvX3BhcnRzIHQgOiBQYXJ0cy50ID1cbiAgICAgICAgbGV0IHNpZ24gPSBGbG9hdC5zaWduX2V4biB0IGluXG4gICAgICAgIGxldCB0ID0gYWJzIHQgaW5cbiAgICAgICAgbGV0IGludGVncmFsID0gRmxvYXQucm91bmRfZG93biB0IGluXG4gICAgICAgIGxldCBmcmFjdGlvbmFsID0gdCAtLiBpbnRlZ3JhbCBpblxuICAgICAgICBsZXQgc2Vjb25kcyA9IEZsb2F0Lmlyb3VuZF9kb3duX2V4biBpbnRlZ3JhbCBpblxuICAgICAgICBsZXQgbmFub3NlY29uZHMgPSBGbG9hdC5pcm91bmRfbmVhcmVzdF9leG4gKGZyYWN0aW9uYWwgKi4gMUU5KSBpblxuICAgICAgICBsZXQgc2Vjb25kcywgbmFub3NlY29uZHMgPVxuICAgICAgICAgIGlmIEludC5lcXVhbCBuYW5vc2Vjb25kcyAxXzAwMF8wMDBfMDAwXG4gICAgICAgICAgdGhlbiBJbnQuc3VjYyBzZWNvbmRzLCAwXG4gICAgICAgICAgZWxzZSBzZWNvbmRzLCBuYW5vc2Vjb25kc1xuICAgICAgICBpblxuICAgICAgICBsZXQgc2VjID0gc2Vjb25kcyBtb2QgNjAgaW5cbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBzZWNvbmRzIC8gNjAgaW5cbiAgICAgICAgbGV0IG1pbiA9IG1pbnV0ZXMgbW9kIDYwIGluXG4gICAgICAgIGxldCBociA9IG1pbnV0ZXMgLyA2MCBpblxuICAgICAgICBsZXQgbnMgPSBuYW5vc2Vjb25kcyBtb2QgMTAwMCBpblxuICAgICAgICBsZXQgbWljcm9zZWNvbmRzID0gbmFub3NlY29uZHMgLyAxMDAwIGluXG4gICAgICAgIGxldCB1cyA9IG1pY3Jvc2Vjb25kcyBtb2QgMTAwMCBpblxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzID0gbWljcm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgbXMgPSBtaWxsaXNlY29uZHMgaW5cbiAgICAgICAgeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCAoIC8gKSB0IGYgPSBULm9mX2Zsb2F0ICgodCA6IFQudCA6PiBmbG9hdCkgLy4gZilcbiAgICBsZXQgKCAvLyApIChmIDogVC50KSAodCA6IFQudCkgPSAoZiA6PiBmbG9hdCkgLy4gKHQgOj4gZmxvYXQpXG5cbiAgICAoKiBNdWx0aXBseWluZyBieSAxRTMgaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIGRpdmlzaW9uIGJ5IDFFLTMgKilcbiAgICBsZXQgdG9fbnMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b191cyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b19tcyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b19zZWMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpXG4gICAgbGV0IHRvX21pbiB4ID0geCAvLyBULkNvbnN0YW50Lm1pbnV0ZVxuICAgIGxldCB0b19ociB4ID0geCAvLyBULkNvbnN0YW50LmhvdXJcbiAgICBsZXQgdG9fZGF5IHggPSB4IC8vIFQuQ29uc3RhbnQuZGF5XG4gICAgbGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4geCA9IEZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuICh0b19zZWMgeClcbiAgICBsZXQgKCAqKiApIGYgKHQgOiBULnQpID0gVC5vZl9mbG9hdCAoZiAqLiAodCA6PiBmbG9hdCkpXG5cbiAgICAoKiBEaXZpc2lvbiBieSAxRTMgaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIG11bHRpcGx5aW5nIGJ5IDFFLTMgKilcbiAgICBsZXQgb2ZfbnMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5uYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl91cyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl9tcyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm1pbGxpc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl9zZWMgeCA9IFQub2ZfZmxvYXQgeFxuICAgIGxldCBvZl9pbnQzMl9zZWNvbmRzIHNlYyA9IG9mX3NlYyAoSW50MzIudG9fZmxvYXQgc2VjKVxuXG4gICAgKCogTm90ZSB0aGF0IFtJbnQ2My50b19mbG9hdF0gY2FuIGxvc2UgcHJlY2lzaW9uLCBidXQgb25seSBvbiBpbnB1dHMgbGFyZ2UgZW5vdWdoIHRoYXRcbiAgICAgICBbb2Zfc2VjXSBpbiBlaXRoZXIgdGhlIFRpbWVfbnMgb3IgVGltZV9mbG9hdCBjYXNlIHdvdWxkIGxvc2UgcHJlY2lzaW9uIChvciBqdXN0IGJlXG4gICAgICAgcGxhaW4gb3V0IG9mIGJvdW5kcykgYW55d2F5LiAqKVxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzIHNlYyA9IG9mX3NlYyAoSW50NjMudG9fZmxvYXQgc2VjKVxuICAgIGxldCBvZl9taW4geCA9IHggKiogVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgb2ZfaHIgeCA9IHggKiogVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IG9mX2RheSB4ID0geCAqKiBULkNvbnN0YW50LmRheVxuICAgIGxldCBvZl9pbnRfbnMgeCA9IG9mX25zIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X3VzIHggPSBvZl91cyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF9tcyB4ID0gb2ZfbXMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfc2VjIHggPSBvZl9zZWMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfbWluIHggPSBvZl9taW4gKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfaHIgeCA9IG9mX2hyIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X2RheSB4ID0gb2ZfZGF5IChGbG9hdC5vZl9pbnQgeClcblxuICAgIGxldCBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHQgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0XG4gICAgICB8IFNlY29uZCAtPiB0b19zZWMgdFxuICAgICAgfCBNaW51dGUgLT4gdG9fbWluIHRcbiAgICAgIHwgSG91ciAtPiB0b19ociB0XG4gICAgICB8IERheSAtPiB0b19kYXkgdFxuICAgIDs7XG5cbiAgICBsZXQgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBvZl9ucyBmbG9hdFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBvZl91cyBmbG9hdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBvZl9tcyBmbG9hdFxuICAgICAgfCBTZWNvbmQgLT4gb2Zfc2VjIGZsb2F0XG4gICAgICB8IE1pbnV0ZSAtPiBvZl9taW4gZmxvYXRcbiAgICAgIHwgSG91ciAtPiBvZl9ociBmbG9hdFxuICAgICAgfCBEYXkgLT4gb2ZfZGF5IGZsb2F0XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICA/KHNpZ24gPSBTaWduLlBvcylcbiAgICAgICAgICA/KGRheSA9IDApXG4gICAgICAgICAgPyhociA9IDApXG4gICAgICAgICAgPyhtaW4gPSAwKVxuICAgICAgICAgID8oc2VjID0gMClcbiAgICAgICAgICA/KG1zID0gMClcbiAgICAgICAgICA/KHVzID0gMClcbiAgICAgICAgICA/KG5zID0gMClcbiAgICAgICAgICAoKVxuICAgICAgPVxuICAgICAgbGV0ICggKyApID0gVC4oICsgKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICBvZl9kYXkgKEZsb2F0Lm9mX2ludCBkYXkpXG4gICAgICAgICsgb2ZfaHIgKEZsb2F0Lm9mX2ludCBocilcbiAgICAgICAgKyBvZl9taW4gKEZsb2F0Lm9mX2ludCBtaW4pXG4gICAgICAgICsgb2Zfc2VjIChGbG9hdC5vZl9pbnQgc2VjKVxuICAgICAgICArIG9mX21zIChGbG9hdC5vZl9pbnQgbXMpXG4gICAgICAgICsgb2ZfdXMgKEZsb2F0Lm9mX2ludCB1cylcbiAgICAgICAgKyBvZl9ucyAoRmxvYXQub2ZfaW50IG5zKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBOZWcgLT4gVC4oIC0gKSBULnplcm8gdFxuICAgICAgfCBQb3MgfCBaZXJvIC0+IHRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb25zdGFudFxuXG4gICAgbGV0IHJhbmRvbWl6ZSA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgfnBlcmNlbnQgPVxuICAgICAgU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IHN0YXRlIH5wZXJjZW50IH5zY2FsZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc2hvcnRfc3RyaW5nIHQgPVxuICAgICAgbGV0ICh7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9IDogUGFydHMudCkgPSB0b19wYXJ0cyB0IGluXG4gICAgICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgIGxldCBvZl9zdHJpbmdfdjFfdjIgKHMgOiBzdHJpbmcpIH5pc192MiA9XG4gICAgICB0cnlcbiAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcImVtcHR5IHN0cmluZ1wiXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBmbG9hdCBuID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5kcm9wX3N1ZmZpeCBzIG4gd2l0aFxuICAgICAgICAgICAgfCBcIlwiIC0+IGZhaWx3aXRoIFwibm8gbnVtYmVyIGdpdmVuXCJcbiAgICAgICAgICAgIHwgcyAtPlxuICAgICAgICAgICAgICBsZXQgdiA9IEZsb2F0Lm9mX3N0cmluZyBzIGluXG4gICAgICAgICAgICAgIFZhbGlkYXRlLm1heWJlX3JhaXNlIChGbG9hdC52YWxpZGF0ZV9vcmRpbmFyeSB2KTtcbiAgICAgICAgICAgICAgdlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgIChtYXRjaCBzLltJbnQuKCAtICkgbGVuIDFdIHdpdGhcbiAgICAgICAgICAgfCAncycgLT5cbiAgICAgICAgICAgICBpZiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbSdcbiAgICAgICAgICAgICB0aGVuIG9mX21zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ3UnXG4gICAgICAgICAgICAgdGhlbiBvZl91cyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICduJ1xuICAgICAgICAgICAgIHRoZW4gb2ZfbnMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBULm9mX2Zsb2F0IChmbG9hdCAxKVxuICAgICAgICAgICB8ICdtJyAtPiBvZl9taW4gKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ2gnIC0+IG9mX2hyIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdkJyAtPiBvZl9kYXkgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIGlmIGlzX3YyXG4gICAgICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlRpbWUgc3BhbnMgbXVzdCBlbmQgaW4gbnMsIHVzLCBtcywgcywgbSwgaCwgb3IgZC5cIlxuICAgICAgICAgICAgIGVsc2UgZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG1zLCBzLCBtLCBoLCBvciBkLlwiKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmIFwiU3Bhbi5vZl9zdHJpbmcgY291bGQgbm90IHBhcnNlICclcyc6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cCA9IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwXG5cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwIG9mIFNleHAudCAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGV4Y2VwdGlvbiBUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IG9mIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgbGV0IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MiA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmdfdjFfdjIgeCB+aXNfdjIgd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gKFRfb2Zfc2V4cCAoc2V4cCwgZXhuKSkgc2V4cClcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvcl9leG4gKFRfb2Zfc2V4cF9leHBlY3RlZF9hdG9tX2J1dF9nb3Qgc2V4cCkgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgc3RyaW5nIH5pc192MiBzdWZmaXggZmxvYXQgPVxuICAgICAgaWYgaXNfdjJcbiAgICAgICgqIFRoaXMgaXMgdGhlIHNhbWUgZmxvYXQtdG8tc3RyaW5nIGNvbnZlcnNpb24gdXNlZCBpbiBbRmxvYXQuc2V4cF9vZl90XS4gIEl0J3MgbGlrZVxuICAgICAgICAgW0Zsb2F0LnRvX3N0cmluZ10sIGJ1dCBtYXkgbGVhdmUgb2ZmIHRyYWlsaW5nIHBlcmlvZC4gKilcbiAgICAgIHRoZW4gIVNleHBsaWIuQ29udi5kZWZhdWx0X3N0cmluZ19vZl9mbG9hdCBmbG9hdCBeIHN1ZmZpeFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJWclc1wiIGZsb2F0IHN1ZmZpeFxuICAgIDs7XG5cbiAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGFueSBtYXRlcmlhbCB3YXksIG1ha2Ugc3VyZVxuICAgICAgIHlvdSB1cGRhdGUgU3RhYmxlIGFwcHJvcHJpYXRlbHkuICopXG4gICAgKCogSSdkIGxpa2UgaXQgdG8gYmUgdGhlIGNhc2UgdGhhdCB5b3UgY291bGQgbmV2ZXIgY29uc3RydWN0IGFuIGluZmluaXRlIHNwYW4sIGJ1dCBJXG4gICAgICAgY2FuJ3QgdGhpbmsgb2YgYSBnb29kIHdheSB0byBlbmZvcmNlIGl0LiAgU28gdGhpcyB0b19zdHJpbmcgZnVuY3Rpb24gY2FuIHByb2R1Y2VcbiAgICAgICBzdHJpbmdzIHRoYXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGV5IGFyZSBmZWQgdG8gb2Zfc3RyaW5nICopXG4gICAgbGV0IHRvX3N0cmluZ192MV92MiAodCA6IFQudCkgfmlzX3YyID1cbiAgICAgICgqIHRoaXMgaXMgYSBzYWQgYnJva2VuIGFic3RyYWN0aW9uLi4uICopXG4gICAgICBsZXQgbW9kdWxlIEMgPSBGbG9hdC5DbGFzcyBpblxuICAgICAgbWF0Y2ggRmxvYXQuY2xhc3NpZnkgKHQgOj4gZmxvYXQpIHdpdGhcbiAgICAgIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT4gXCIwc1wiXG4gICAgICB8IEMuSW5maW5pdGUgLT4gaWYgVC4oID4gKSB0IFQuemVybyB0aGVuIFwiaW5mXCIgZWxzZSBcIi1pbmZcIlxuICAgICAgfCBDLk5hbiAtPiBcIm5hblwiXG4gICAgICB8IEMuTm9ybWFsIC0+XG4gICAgICAgIGxldCAoIDwgKSA9IFQuKCA8ICkgaW5cbiAgICAgICAgbGV0IGFic190ID0gVC5vZl9mbG9hdCAoRmxvYXQuYWJzICh0IDo+IGZsb2F0KSkgaW5cbiAgICAgICAgaWYgaXNfdjIgJiYgYWJzX3QgPCBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm5zXCIgKHRvX25zIHQpXG4gICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgYWJzX3QgPCBULkNvbnN0YW50Lm1pbGxpc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInVzXCIgKHRvX3VzIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LnNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJtc1wiICh0b19tcyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5taW51dGVcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwic1wiICh0b19zZWMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuaG91clxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJtXCIgKHRvX21pbiB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5kYXlcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwiaFwiICh0b19ociB0KVxuICAgICAgICBlbHNlIHN0cmluZyB+aXNfdjIgXCJkXCIgKHRvX2RheSB0KVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyID0gU2V4cC5BdG9tICh0b19zdHJpbmdfdjFfdjIgdCB+aXNfdjIpXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOmZhbHNlXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyOmZhbHNlXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjI6dHJ1ZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192Mjp0cnVlXG4gIGVuZFxuXG4gIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVjFcblxuICAgIGxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgICAgIGxldCBvcGVuIFQgaW5cbiAgICAgIGxldCBvcGVuIENvbnN0YW50IGluXG4gICAgICBsZXQgYWJzX3QgPSBULmFicyB0IGluXG4gICAgICBpZiBhYnNfdCA+PSBkYXlcbiAgICAgIHRoZW4gRGF5XG4gICAgICBlbHNlIGlmIGFic190ID49IGhvdXJcbiAgICAgIHRoZW4gSG91clxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgICAgIHRoZW4gTWludXRlXG4gICAgICBlbHNlIGlmIGFic190ID49IHNlY29uZFxuICAgICAgdGhlbiBTZWNvbmRcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWlsbGlzZWNvbmRcbiAgICAgIHRoZW4gTWlsbGlzZWNvbmRcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgICAgIHRoZW4gTWljcm9zZWNvbmRcbiAgICAgIGVsc2UgTmFub3NlY29uZFxuICAgIDs7XG5cbiAgICBsZXQgb2ZfdW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQgLT4gVC50ID1cbiAgICAgIGxldCBvcGVuIFQuQ29uc3RhbnQgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBtaWNyb3NlY29uZFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBtaWxsaXNlY29uZFxuICAgICAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gICAgICB8IE1pbnV0ZSAtPiBtaW51dGVcbiAgICAgIHwgSG91ciAtPiBob3VyXG4gICAgICB8IERheSAtPiBkYXlcbiAgICA7O1xuXG4gICAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IFwibnNcIlxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBcInVzXCJcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gXCJtc1wiXG4gICAgICB8IFNlY29uZCAtPiBcInNcIlxuICAgICAgfCBNaW51dGUgLT4gXCJtXCJcbiAgICAgIHwgSG91ciAtPiBcImhcIlxuICAgICAgfCBEYXkgLT4gXCJkXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBcIlRpbWUuU3Bhbi5vZl9zdHJpbmc6IFwiIF4gcmVhc29uIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIG1lc3NhZ2Ugc3RyaW5nXVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCB1bml0X29mX3RpbWVfbGlzdCA9XG4gICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZV9saXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImludmFsaWQgc3BhbiBwYXJ0IHN1ZmZpeFwiXG4gICAgICAgIHwgdW5pdF9vZl90aW1lIDo6IHJlc3QgLT5cbiAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHN0cmluZyB+cG9zOmluZGV4IH5zdWJzdHJpbmc6c3VmZml4XG4gICAgICAgICAgdGhlbiB1bml0X29mX3RpbWVcbiAgICAgICAgICBlbHNlIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IHJlc3RcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleCA9XG4gICAgICAgICgqIFdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBcIm1zXCIgY29tZXMgYmVmb3JlIFwibVwiIGluIFtVbml0X29mX3RpbWUuYWxsXSB0byBnZXQgYVxuICAgICAgICAgICBjb3JyZWN0IG1hdGNoIG9uIG1pbGxpc2Vjb25kIHRpbWVzdGFtcHMuIFRoaXMgYXNzdW1wdGlvbiBpcyBkZW1vbnN0cmF0ZWQgaW4gdGhlXG4gICAgICAgICAgIGV4cGVjdCB0ZXN0IGJlbG93LiAqKVxuICAgICAgICBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCBVbml0X29mX3RpbWUuYWxsXG4gICAgICA7O1xuXG4gICAgICAoKiBXZSB2YWxpZGF0ZSBtYWduaXR1ZGUgc3RyaW5ncyBzbyB0aGF0IHdlIGtub3cgd2hlcmUgdGhlIHVuaXQtb2YtdGltZSBzdWZmaXhcbiAgICAgICAgIGJlZ2lucywgYW5kIHNvIHRoYXQgb25seSBzZW5zaWJsZSBzdHJpbmdzIGFyZSBhbGxvd2VkLiBXZSBkbyBub3Qgd2FudCB0byBiZSBhc1xuICAgICAgICAgcGVybWlzc2l2ZSBhcyBbRmxvYXQub2Zfc3RyaW5nXTsgZm9yIGV4YW1wbGUsIGhleGFkZWNpbWFsIHNwYW4gbWFnbml0dWRlcyBhcmUgbm90XG4gICAgICAgICBhbGxvd2VkLiBBZnRlciB2YWxpZGF0aW9uLCB3ZSBzdGlsbCB1c2UgW0Zsb2F0Lm9mX3N0cmluZ10gdG8gcHJvZHVjZSB0aGUgYWN0dWFsXG4gICAgICAgICB2YWx1ZS4gKilcbiAgICAgIG1vZHVsZSBGbG9hdF9wYXJzZXIgPSBzdHJ1Y3RcbiAgICAgICAgKCogW0luX2RlY2ltYWxfaGF2ZV9kaWdpdF0gaW5jbHVkZXMgaGF2aW5nIGEgZGlnaXQgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICB0eXBlIHN0YXRlID1cbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG5cbiAgICAgICAgdHlwZSB0b2tlbiA9XG4gICAgICAgICAgfCBEaWdpdFxuICAgICAgICAgIHwgUG9pbnRcbiAgICAgICAgICB8IFVuZGVyXG4gICAgICAgICAgfCBTaWduXG4gICAgICAgICAgfCBFeHB0XG5cbiAgICAgICAgbGV0IHN0YXRlX2lzX2ZpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCAtPiBmYWxzZVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b2tlbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gU29tZSBEaWdpdFxuICAgICAgICAgIHwgJy4nIC0+IFNvbWUgUG9pbnRcbiAgICAgICAgICB8ICdfJyAtPiBTb21lIFVuZGVyXG4gICAgICAgICAgfCAnLScgfCAnKycgLT4gU29tZSBTaWduXG4gICAgICAgICAgfCAnRScgfCAnZScgLT4gU29tZSBFeHB0XG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW52YWxpZF9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImludmFsaWQgc3BhbiBwYXJ0IG1hZ25pdHVkZVwiXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGUgPVxuICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgaWYgaW5kZXggPSBsZW5cbiAgICAgICAgICB0aGVuIGlmIHN0YXRlX2lzX2ZpbmFsIHN0YXRlIHRoZW4gaW5kZXggZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHRva2VuX29mX2NoYXIgc3RyaW5nLltpbmRleF0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGlmIHN0YXRlX2lzX2ZpbmFsIHN0YXRlIHRoZW4gaW5kZXggZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgIHwgU29tZSB0b2tlbiAtPlxuICAgICAgICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHN0YXRlLCB0b2tlbiB3aXRoXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBQb2ludCAtPiBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgU2lnblxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBFeHB0IC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBQb2ludCAtPiBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRXhwdCAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgRXhwdCAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgUG9pbnQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFNpZ24gLT5cbiAgICAgICAgICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBEaWdpdCAtPiBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFNpZ24gLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBFeHB0IC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleDooaW5kZXggKyAxKSB+bGVuIH5zdGF0ZSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZmluZF9pbmRleF9hZnRlcl9mbG9hdCBzdHJpbmcgfmluZGV4IH5sZW4gPVxuICAgICAgICAgIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleCB+bGVuIH5zdGF0ZTpJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgcmVjIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlIH5pbmRleCB+bGVuID1cbiAgICAgICAgaWYgSW50LmVxdWFsIGluZGV4IGxlblxuICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc3VmZml4X2luZGV4ID0gRmxvYXRfcGFyc2VyLmZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuIGluXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHBhcnNlX3N1ZmZpeCBzdHJpbmcgfmluZGV4OnN1ZmZpeF9pbmRleCBpblxuICAgICAgICAgIGxldCB1bnRpbF9pbmRleCA9XG4gICAgICAgICAgICBJbnQuKCArICkgc3VmZml4X2luZGV4IChTdHJpbmcubGVuZ3RoIChzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID1cbiAgICAgICAgICAgIFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6aW5kZXggfmxlbjooSW50LiggLSApIHN1ZmZpeF9pbmRleCBpbmRleClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmbG9hdCA9IEZsb2F0Lm9mX3N0cmluZyBmbG9hdF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gbWFnbml0dWRlICsgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlIH5pbmRleDp1bnRpbF9pbmRleCB+bGVuKVxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX21hZ25pdHVkZSBzdHJpbmcgfmluZGV4IH5sZW4gPVxuICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZTpULnplcm8gfmluZGV4IH5sZW5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgbWF0Y2ggc3RyaW5nIHdpdGhcbiAgICAgICAgfCBcIk5BTnNcIiAtPiBvZl9zZWMgRmxvYXQubmFuXG4gICAgICAgIHwgXCItSU5Gc1wiIC0+IG9mX3NlYyBGbG9hdC5uZWdfaW5maW5pdHlcbiAgICAgICAgfCBcIklORnNcIiAtPiBvZl9zZWMgRmxvYXQuaW5maW5pdHlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbmVnYXRpdmUsIGluZGV4ID1cbiAgICAgICAgICAgIG1hdGNoIHN0cmluZy5bMF0gd2l0aFxuICAgICAgICAgICAgfCAnLScgLT4gdHJ1ZSwgMVxuICAgICAgICAgICAgfCAnKycgLT4gZmFsc2UsIDFcbiAgICAgICAgICAgIHwgXyAtPiBmYWxzZSwgMFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgaW5kZXggPj0gbGVuIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBpbnB1dFwiO1xuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuIGluXG4gICAgICAgICAgaWYgbmVnYXRpdmUgdGhlbiBULm5lZyBtYWduaXR1ZGUgZWxzZSBtYWduaXR1ZGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuXG4gICAgbW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICAgICAgbGV0IHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgZmxvYXQgPVxuICAgICAgICBsZXQgc3RyaW5nID0gRmxvYXQudG9fc3RyaW5nIGZsb2F0IGluXG4gICAgICAgIGxldCBzdWZmaXggPSBcIi5cIiBpblxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHN0cmluZyB+c3VmZml4XG4gICAgICAgIHRoZW4gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICBlbHNlIHN0cmluZ1xuICAgICAgOztcblxuICAgICAgKCogQXMgd2UgYnVpbGQgdXAgYSBzdHJpbmcsIHdlIGtlZXAgYSBydW5uaW5nIHN1bSBvZiB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHJlYWRcbiAgICAgICAgIGJhY2sgaW4sIHNvIHRoYXQgd2UgY2FuIGNvbXB1dGUgdGhlIHJlbWFpbmRlciB0aGF0IG5lZWRzIHRvIGJlIGdlbmVyYXRlZC4gKilcbiAgICAgIGxldCBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSA9XG4gICAgICAgIHN1bV90ICsgc2NhbGVfYnlfdW5pdF9vZl90aW1lIG1hZ25pdHVkZSB1bml0X29mX3RpbWVcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBzb21lIHVuaXRzICh2ZXJ5IGxhcmdlIG51bWJlcnMgb2YgZGF5cywgb3Igc2Vjb25kcyBhbmQgc21hbGxlcikgd2UganVzdFxuICAgICAgICAgcmVuZGVyIGEgZmxvYXQgZGlyZWN0bHksIHdpdGggYSBmaXggZm9yIHJvdW5kb2ZmIGVycm9yLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lID1cbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9IGRpdmlkZV9ieV91bml0X29mX3RpbWUgYWJzX3QgdW5pdF9vZl90aW1lIGluXG4gICAgICAgIGxldCBzdW1fdCA9IHN1bSB+c3VtX3Q6emVybyB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgaWYgc3VtX3QgPSBhYnNfdFxuICAgICAgICB0aGVuXG4gICAgICAgICAgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBtYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgICAgaWYgc3VtX3QgPCBhYnNfdFxuICAgICAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgICAgIGVsc2UgZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSAocHJldiBhYnNfdCkgdW5pdF9vZl90aW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAgIGxldCBmaXh1cF9tYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHJlbV90IGZpeHVwX3VuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgICgqIFtyZW1fdF0gaXMgYXQgVUxQIHNpemUgb2YgW2Fic190XSwgaXQgbmVlZHMganVzdCBvbmUgYml0IG9mIHByZWNpc2lvbiAqKVxuICAgICAgICAgIF4gc3ByaW50ZiBcIiUuMWdcIiBmaXh1cF9tYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgZml4dXBfdW5pdF9vZl90aW1lKVxuICAgICAgOztcblxuICAgICAgKCogRm9yIG5vbi1kZWNpbWFsIHVuaXRzIChtaW51dGVzIGFuZCBncmVhdGVyKSwgd2UgcmVuZGVyIGFuIGludGVnZXIgbWFnbml0dWRlLCBhbmRcbiAgICAgICAgIHJldHVybiB0aGF0IHdpdGggdGhlIHJ1bm5pbmcgc3VtIHNvIHRoZSByZW1haW5kZXIgY2FuIGJlIHJlbmRlcmVkIGF0IGEgc21hbGxlclxuICAgICAgICAgdW5pdC4gKilcbiAgICAgIGxldCB0b19pbnRfc3RyaW5nX2FuZF9zdW0gdW5pdF9vZl90aW1lIH5hYnNfdCB+c3VtX3QgPVxuICAgICAgICBsZXQgdW5pdF9zcGFuID0gb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICgqIFdlIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgbXVsdGlwbGUgb2YgW3VuaXRfb2ZfdGltZV0gdGhhdCBuZWVkcyB0byBiZVxuICAgICAgICAgICBhZGRlZCB0byBbc3VtX3RdLiBEdWUgdG8gcm91bmRpbmcsIHRoaXMgY2FuIGJlIG9mZiBieSBvbmUgKHdlJ3ZlIG5ldmVyIHNlZW4gYVxuICAgICAgICAgICBjYXNlIG9mZiBieSB0d28gb3IgbW9yZSksIHNvIHdlIHJlLWNvbXB1dGUgdGhlIHJlbWFpbmRlciBhbmQgY29ycmVjdCBpZlxuICAgICAgICAgICBuZWNlc3NhcnkuICopXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBGbG9hdC5yb3VuZF9kb3duIChyZW1fdCAvLyB1bml0X3NwYW4pIGluXG4gICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICBsZXQgbmV3X3JlbV90ID0gYWJzX3QgLSBuZXdfc3VtX3QgaW5cbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9XG4gICAgICAgICAgaWYgbmV3X3JlbV90ID0gemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgZWxzZSBpZiBuZXdfcmVtX3QgPCB6ZXJvXG4gICAgICAgICAgdGhlbiBtYWduaXR1ZGUgLS4gMS5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0X21hZ25pdHVkZSA9IG1hZ25pdHVkZSArLiAxLiBpblxuICAgICAgICAgICAgbGV0IG5leHRfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZTpuZXh0X21hZ25pdHVkZSBpblxuICAgICAgICAgICAgbGV0IG5leHRfcmVtX3QgPSBhYnNfdCAtIG5leHRfc3VtX3QgaW5cbiAgICAgICAgICAgIGlmIG5leHRfcmVtX3QgPCB6ZXJvIHRoZW4gbWFnbml0dWRlIGVsc2UgbmV4dF9tYWduaXR1ZGUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIEZsb2F0LiggPD0gKSBtYWduaXR1ZGUgMC5cbiAgICAgICAgdGhlbiBcIlwiLCBzdW1fdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgc3RyaW5nID1cbiAgICAgICAgICAgIEludDYzLnRvX3N0cmluZyAoSW50NjMub2ZfZmxvYXQgbWFnbml0dWRlKVxuICAgICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgc3RyaW5nLCBuZXdfc3VtX3QpXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgdCA9IEZsb2F0LmxvZzEwICh0b19zZWMgdClcblxuICAgICAgKCogVGhlIGZpbmFsIHNlY29uZHMtb3Itc21hbGxlciB1bml0IG5lZWRzIHRvIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggZGlnaXRzIHRvXG4gICAgICAgICByb3VuZC10cmlwIHRoZSB3aG9sZSBzcGFuICh3aGljaCBpcyBtaW51dGVzIG9yIGdyZWF0ZXIpOyB0aGlzIGNhbiBiZVxuICAgICAgICAgc2lnbmlmaWNhbnRseSBmZXdlciBkaWdpdHMgdGhhbiB3b3VsZCBiZSBuZWVkZWQgZm9yIHRoZSBzZWNvbmRzLW9yLXNtYWxsZXJcbiAgICAgICAgIHJlbWFpbmRlciBpdHNlbGYuICopXG4gICAgICBsZXQgdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5zdW1fdCB+YWJzX3QgPVxuICAgICAgICBpZiBzdW1fdCA+PSBhYnNfdFxuICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgcmVtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9zcGFuID0gb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSByZW1fdCAvLyB1bml0X3NwYW4gaW5cbiAgICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgbmV3X3JlbV90ID0gYWJzX3QgLSBuZXdfc3VtX3QgaW5cbiAgICAgICAgICBpZiBhYnMgcmVtX3QgPD0gYWJzIG5ld19yZW1fdFxuICAgICAgICAgIHRoZW4gXCJcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaWdpdCA9XG4gICAgICAgICAgICAgIEZsb2F0Lmlyb3VuZF9kb3duX2V4biAoZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgcmVtX3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGhhbGZfdWxwID0gKGFic190IC0gcHJldiBhYnNfdCkgLyAyLiBpblxuICAgICAgICAgICAgbGV0IG9yZGVyX29mX21hZ25pdHVkZV9vZl9maW5hbF9kaWdpdCA9XG4gICAgICAgICAgICAgICgqIFRoaXMgd29ya3Mgb3V0IHRvIHJvdW5kaW5nIGRvd24sIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBleGFjdCBpbnRlZ2VycyxcbiAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIGRlY3JlbWVudGVkLiBUaGlzIG1ha2VzIHN1cmUgd2UgYWx3YXlzIHN0b3AgYXQgYSBkaWdpdCB3aXRoXG4gICAgICAgICAgICAgICAgIHN0cmljdGx5IG1vcmUgcHJlY2lzaW9uIHRoYW4gaGFsZiB0aGUgVUxQLiAqKVxuICAgICAgICAgICAgICBJbnQucHJlZCAoRmxvYXQuaXJvdW5kX3VwX2V4biAoZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgaGFsZl91bHApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGlnaXRzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgMSArIG9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaWdpdCAtIG9yZGVyX29mX21hZ25pdHVkZV9vZl9maW5hbF9kaWdpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzdWZmaXggPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgICAgc3ByaW50ZiBcIiUuKmdcIiBudW1iZXJfb2ZfZGlnaXRzIG1hZ25pdHVkZSBeIHN1ZmZpeCkpXG4gICAgICA7O1xuXG4gICAgICAoKiBUaGlzIGhlbHBlciBhdm9pZHMgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbiwgYmVjYXVzZSBmb3Igb3VyIHVzZSBiZWxvdywgaXQgaXNcbiAgICAgICAgIGNvbW1vbiB0byBoYXZlIGVpdGhlciBvciBib3RoIGFyZ3VtZW50cyBiZSBlbXB0eS4gQ3VycmVudGx5ICgyMDE4LTAyKSwgdGhlXG4gICAgICAgICBidWlsdC1pbiBbXl0gYWxsb2NhdGVzIGV2ZW4gd2hlbiBhcHBlbmRpbmcgdG8gYW4gZW1wdHkgc3RyaW5nLiAqKVxuICAgICAgbGV0ICggXj8gKSB4IHkgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgeCB0aGVuIHkgZWxzZSBpZiBTdHJpbmcuaXNfZW1wdHkgeSB0aGVuIHggZWxzZSB4IF4geVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IGZsb2F0ID0gdG9fZmxvYXQgdCBpblxuICAgICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSBmbG9hdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICgqIFdlIHByaW50IHNwZWNpZmljIHNwZWNpYWwgc3RyaW5ncyBmb3Igbm9uLWZpbml0ZSBmbG9hdHMgKilcbiAgICAgICAgICAgIEZsb2F0LmlzX25hbiBmbG9hdFxuICAgICAgICAgIHRoZW4gXCJOQU5zXCJcbiAgICAgICAgICBlbHNlIGlmIEZsb2F0LmlzX25lZ2F0aXZlIGZsb2F0XG4gICAgICAgICAgdGhlbiBcIi1JTkZzXCJcbiAgICAgICAgICBlbHNlIFwiSU5Gc1wiXG4gICAgICAgIGVsc2UgaWYgdCA9IHplcm9cbiAgICAgICAgdGhlbiBcIjBzXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHRvX3VuaXRfb2ZfdGltZSB0IGluXG4gICAgICAgICAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgICAgICAgICBsZXQgc2lnbiA9IGlmIHQgPCB6ZXJvIHRoZW4gXCItXCIgZWxzZSBcIlwiIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZV9zdHJpbmcgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdF9vZl90aW1lIHdpdGhcbiAgICAgICAgICAgICgqIFdlIGNhbiB1c2Ugbm9ybWFsIGZsb2F0IG5vdGF0aW9uIGZvciBzZWNvbmRzIGFuZCBzdWItc2Vjb25kIHVuaXRzLCB0aGV5IGFyZVxuICAgICAgICAgICAgICAgcmVhZGFibGUgd2l0aCBhIGRlY2ltYWwgcG9pbnQuICopXG4gICAgICAgICAgICB8IE5hbm9zZWNvbmQgfCBNaWNyb3NlY29uZCB8IE1pbGxpc2Vjb25kIHwgU2Vjb25kIC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOk5hbm9zZWNvbmRcbiAgICAgICAgICAgICgqIEZvciBsYXJnZSBlbm91Z2ggdmFsdWVzIHRoYXQgdGhlIFVMUCBpcyBhIGRheSBvciBtb3JlLCB3ZSBjYW4gdXNlIGZsb2F0XG4gICAgICAgICAgICAgICBub3RhdGlvbiBiZWNhdXNlIHdlIGFyZSBleHByZXNzaW5nIGEgc2luZ2xlLCB2ZXJ5IGxhcmdlIGludGVnZXIuICopXG4gICAgICAgICAgICB8IERheSB3aGVuIG5leHQgYWJzX3QgLSBhYnNfdCA+PSBkYXkgLT5cbiAgICAgICAgICAgICAgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWU6RGF5XG4gICAgICAgICAgICAoKiBGb3IgZXZlcnl0aGluZyBpbiBiZXR3ZWVuLCB3ZSBuZWVkIHRvIHVzZSBpbnRlZ2VyIHVuaXRzIG9mIGRheXMsIGhvdXJzLFxuICAgICAgICAgICAgICAgYW5kL29yIG1pbnV0ZXMsIGJlY2F1c2UgdGhvc2UgdW5pdHMgYXJlIG5vdCByZWFkYWJsZSBhcyBkZWNpbWFscywgYW5kIHdlXG4gICAgICAgICAgICAgICB0YWNrIG9uIGEgZGVjaW1hbCByZW1haW5kZXIgb2YgYSBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBpZiBuZWNlc3NhcnkuICopXG4gICAgICAgICAgICB8IE1pbnV0ZSB8IEhvdXIgfCBEYXkgLT5cbiAgICAgICAgICAgICAgbGV0IHN1bV90ID0gemVybyBpblxuICAgICAgICAgICAgICBsZXQgZGF5X3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBEYXkgaW5cbiAgICAgICAgICAgICAgbGV0IGhvdXJfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IEhvdXIgaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgTWludXRlIGluXG4gICAgICAgICAgICAgIGxldCBmbG9hdF9zdHJpbmcgPSB0b19mbG9hdF9zdHJpbmdfYWZ0ZXJfaW50X3N0cmluZ3MgfmFic190IH5zdW1fdCBpblxuICAgICAgICAgICAgICBkYXlfc3RyaW5nIF4/IGhvdXJfc3RyaW5nIF4/IG1pbnV0ZV9zdHJpbmcgXj8gZmxvYXRfc3RyaW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzaWduIF4/IG1hZ25pdHVkZV9zdHJpbmcpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy50b19zdHJpbmdcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TcGFuLlN0YWJsZS5WMy50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhbiBBdG9tXCIgc1xuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYzXG5cbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgPSB0b19mbG9hdFxuXG5sZXQgdG9fc3RyaW5nX2h1bVxuICAgICAgPyhkZWxpbWl0ZXIgPSAnXycpXG4gICAgICA/KGRlY2ltYWxzID0gMylcbiAgICAgID8oYWxpZ25fZGVjaW1hbCA9IGZhbHNlKVxuICAgICAgP3VuaXRfb2ZfdGltZVxuICAgICAgdFxuICA9XG4gIGxldCBmbG9hdCwgc3VmZml4ID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWUgdW5pdF9vZl90aW1lIH5kZWZhdWx0Oih0b191bml0X29mX3RpbWUgdCkgd2l0aFxuICAgIHwgRGF5IC0+IHRvX2RheSB0LCBcImRcIlxuICAgIHwgSG91ciAtPiB0b19ociB0LCBcImhcIlxuICAgIHwgTWludXRlIC0+IHRvX21pbiB0LCBcIm1cIlxuICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0LCBcInNcIlxuICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdCwgXCJtc1wiXG4gICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0LCBcInVzXCJcbiAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdCwgXCJuc1wiXG4gIGluXG4gIGxldCBwcmVmaXggPVxuICAgIEZsb2F0LnRvX3N0cmluZ19odW0gZmxvYXQgfmRlbGltaXRlciB+ZGVjaW1hbHMgfnN0cmlwX3plcm86KG5vdCBhbGlnbl9kZWNpbWFsKVxuICBpblxuICBsZXQgc3VmZml4ID1cbiAgICBpZiBhbGlnbl9kZWNpbWFsICYmIEludC4oID0gKSAoU3RyaW5nLmxlbmd0aCBzdWZmaXgpIDEgdGhlbiBzdWZmaXggXiBcIiBcIiBlbHNlIHN1ZmZpeFxuICBpblxuICBwcmVmaXggXiBzdWZmaXhcbjs7XG5cbmxldCBnZW5faW5jbCBsbyBoaSA9XG4gIEZsb2F0Lmdlbl9pbmNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgKCogVGVjaG5pY2FsbHkgZXhjbHVzaXZlIHJhdGhlciB0aGFuIGluY2x1c2l2ZSwgYnV0IG90aGVyd2lzZSBzYXRpc2ZpZXMgdGhlIGNvbnRyYWN0IHRvXG4gICAgIHdpdGhpbiAxdWxwIG9mIHRoZSBnaXZlbiBib3VuZHMuICopXG4gIEZsb2F0Lmdlbl91bmlmb3JtX2V4Y2wgKHRvX3NlYyBsbykgKHRvX3NlYyBoaSkgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NlY1xuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgKCogV2UgZ2VuZXJhdGUgc3BhbnMgdXAgdG8gKHNsaWdodGx5IG1vcmUgdGhhbikgYSBtaWxsZW5pdW0sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLiBUaGlzXG4gICAgIGlzIGJhc2VkIG9uIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIsIGluIHdoaWNoIHllYXJzIGF2ZXJhZ2UgMzY1LjI0MjUgZGF5cyB3aGVuXG4gICAgIGFjY291bnRpbmcgZm9yIGxlYXAgZGF5cy4gQ292ZXJpbmcgYSB0d28tbWlsbGVuaXVtIHNwYW4gaXMgbW9yZSB0aGFuIGVub3VnaCBmb3IgbW9zdFxuICAgICBwcmFjdGljYWwgcHVycG9zZXMsIGNlcnRhaW5seSBtb3JlIHRoYW4gZW5vdWdoIHRvIGNvdmVyIHRoZSByZXByZXNlbnRhYmxlIHJhbmdlIG9mXG4gICAgIFtTcGFuX25zXSwgYW5kIHJlc3VsdHMgaW4gZmluaXRlIHNwYW5zIGFuZCB0aW1lcyB0aGF0IGNhbiBiZSBzZXJpYWxpemVkLlxuXG4gICAgIFdlIGdlbmVyYXRlIGJ5IGZpbHRlcmluZyB0aGUgZGVmYXVsdCBnZW5lcmF0b3Igc28gdGhhdCBzcGFucyBhcmUgc3RpbGwgc2tld2VkIHRvd2FyZFxuICAgICBzbWFsbCB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZSBib3VuZHMgYXJlIGxhcmdlLiAqKVxuICBsZXQgbWlsbGVuaXVtID0gb2ZfZGF5IChGbG9hdC5yb3VuZF91cCAoMzY1LjI0MjUgKi4gMTAwMC4pKSBpblxuICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgcXVpY2tjaGVja19nZW5lcmF0b3IgfmY6KGZ1biB0IC0+XG4gICAgbmVnIG1pbGxlbml1bSA8PSB0ICYmIHQgPD0gbWlsbGVuaXVtKVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZS5TcGFuXCJcbiAgZW5kKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuXG4gICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIHNwYW5zIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbSAxMDguMDdcbiAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kIHByZXR0eVxuICAgICBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZCBmcm9tXG4gICAgIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc3VmZml4X29mX3VuaXRfb2ZfdGltZSA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWVcbiAgbGV0IHBhcnNlX3N1ZmZpeCA9IFN0YWJsZS5WMy5PZl9zdHJpbmcucGFyc2Vfc3VmZml4XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBTcGFuID0gU3Bhbl9mbG9hdFxuXG4oKiBDcmVhdGUgYW4gYWJzdHJhY3QgdHlwZSBmb3IgT2ZkYXkgdG8gcHJldmVudCB1cyBmcm9tIGNvbmZ1c2luZyBpdCB3aXRoXG4gICBvdGhlciBmbG9hdHMuXG4qKVxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXRcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGFkZCA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgc3ViIDogdCAtPiBTcGFuLnQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHByZXYgOiB0IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCA6IFNwYW4udCAtPiB0XG4gICAgICB2YWwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgOiBTcGFuLnQgLT4gYm9vbFxuICAgICAgdmFsIHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBzdGFydF9vZl9kYXkgOiB0XG4gICAgICB2YWwgc3RhcnRfb2ZfbmV4dF9kYXkgOiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICAoKiBOdW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodC4gKilcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICAgICAgaW5jbHVkZSAoXG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdFxuXG4gICAgICAgIGxldCBzaWduID0gc2lnbl9leG5cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLkV4cG9ydC5zdGFibGVfd2l0bmVzc19mbG9hdFxuICAgICAgICA7O1xuICAgICAgZW5kIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGVuZClcblxuICAgICAgKCogSUYgVEhJUyBSRVBSRVNFTlRBVElPTiBFVkVSIENIQU5HRVMsIEVOU1VSRSBUSEFUIEVJVEhFUlxuICAgICAgICAgKDEpIGFsbCB2YWx1ZXMgc2VyaWFsaXplIHRoZSBzYW1lIHdheSBpbiBib3RoIHJlcHJlc2VudGF0aW9ucywgb3JcbiAgICAgICAgICgyKSB5b3UgYWRkIGEgbmV3IFRpbWUuT2ZkYXkgdmVyc2lvbiB0byBzdGFibGUubWwgKilcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gICAgICAoKiBBbm90aGVyIHJlYXNvbmFibGUgY2hvaWNlIHdvdWxkIGJlIG9ubHkgYWxsb3dpbmcgT2ZkYXkudCB0byBiZSA8IDI0aHIsIGJ1dCB0aGlzXG4gICAgICAgICBjaG9pY2Ugd2FzIG1hZGUgZWFybHkgb24gYW5kIHBlb3BsZSBiZWNhbWUgdXNlZCB0byBiZWluZyBhYmxlIHRvIGVhc2lseSBjYWxsIDI0aHJcbiAgICAgICAgIHRoZSBlbmQgb2YgdGhlIGRheS4gIEl0J3MgYSBiaXQgc2FkIGJlY2F1c2UgaXQgc2hhcmVzIHRoYXQgbW9tZW50IHdpdGggdGhlXG4gICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZGF5LCBhbmQgcm91bmQgdHJpcHMgb2RkbHkgaWYgcGFzc2VkIHRocm91Z2hcbiAgICAgICAgIFRpbWUudG9fZGF0ZV9vZmRheS9UaW1lLm9mX2RhdGVfb2ZkYXkuXG5cbiAgICAgICAgIE5vdGU6IFtTY2hlZHVsZS50XSByZXF1aXJlcyB0aGF0IHRoZSBlbmQgb2YgZGF5IGJlIHJlcHJlc2VudGFibGUsIGFzIGl0J3MgdGhlXG4gICAgICAgICBvbmx5IHdheSB0byB3cml0ZSBhIHNjaGVkdWxlIGluIHRlcm1zIG9mIFtPZmRheS50XXMgdGhhdCBzcGFucyB0d28gd2Vla2RheXMuICopXG4gICAgICAoKiBvZmRheSBtdXN0IGJlID49IDAgYW5kIDw9IDI0aCAqKVxuICAgICAgbGV0IGlzX3ZhbGlkICh0IDogdCkgPVxuICAgICAgICBsZXQgdCA9IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgICAgU3Bhbi4oIDw9ICkgU3Bhbi56ZXJvIHQgJiYgU3Bhbi4oIDw9ICkgdCBTcGFuLmRheVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuXG4gICAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgc3BhbiA9XG4gICAgICAgIGlzX3ZhbGlkIChvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gICAgICAgIGxldCBtb2R1bGUgQyA9IEZsb2F0LkNsYXNzIGluXG4gICAgICAgIGxldCBzID0gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBtYXRjaCBGbG9hdC5jbGFzc2lmeSBzIHdpdGhcbiAgICAgICAgfCBDLkluZmluaXRlIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbmZpbml0ZSB2YWx1ZVwiXG4gICAgICAgIHwgQy5OYW4gLT4gaW52YWxpZF9hcmcgXCJPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IE5hTiB2YWx1ZVwiXG4gICAgICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPlxuICAgICAgICAgIGlmIG5vdCAoaXNfdmFsaWQgcylcbiAgICAgICAgICB0aGVuIGludmFsaWRfYXJnZiAhXCJPZmRheSBvdXQgb2YgcmFuZ2U6ICV7U3Bhbn1cIiBzcGFuICgpXG4gICAgICAgICAgZWxzZSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gMC5cbiAgICAgIGxldCBzdGFydF9vZl9uZXh0X2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBTcGFuLmRheVxuXG4gICAgICBsZXQgYWRkICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0ICsuIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWIgKHQgOiB0KSAoc3BhbiA6IFNwYW4udCkgPVxuICAgICAgICBsZXQgdCA9IHQgLS4gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBpZiBpc192YWxpZCB0IHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBVcCB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHByZXYgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHQgaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgY2FuZGlkYXRlIHRoZW4gU29tZSBjYW5kaWRhdGUgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlmZiB0MSB0MiA9XG4gICAgICAgIFNwYW4uKCAtICkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQxKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdDIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPVxuICAgICAgT3B0aW9uLnZhbHVlX2V4biAoVC5zdWIgVC5zdGFydF9vZl9uZXh0X2RheSBTcGFuLm1pY3Jvc2Vjb25kKVxuICAgIDs7XG5cbiAgICAoKiBbY3JlYXRlXSBjaG9wcyBvZmYgYW55IHN1YnNlY29uZCBwYXJ0IHdoZW4gW3NlYyA9IDYwXSB0byBoYW5kbGUgbGVhcCBzZWNvbmRzLiBJblxuICAgICAgIHBhcnRpY3VsYXIgaXQncyB0cnlpbmcgdG8gYmUgZ2VuZXJvdXMgYWJvdXQgcmVhZGluZyBpbiB0aW1lcyBvbiB0aGluZ3MgbGlrZSBmaXhcbiAgICAgICBtZXNzYWdlcyB0aGF0IG1pZ2h0IGluY2x1ZGUgYW4gZXh0cmEgdW5saWtlbHkgc2Vjb25kLlxuXG4gICAgICAgT3RoZXIgd2F5cyBvZiB3cml0aW5nIGEgdGltZSwgbGlrZSAxMDAwbXMsIHdoaWxlIG1hdGhlbWF0aWNhbGx5IHZhbGlkLCBkb24ndCBtYXRjaFxuICAgICAgIHdheXMgdGhhdCBwZW9wbGUgYWN0dWFsbHkgd3JpdGUgdGltZXMgZG93biwgc28gd2UgZGlkbid0IHNlZSB0aGUgbmVlZCB0byBzdXBwb3J0XG4gICAgICAgdGhlbS4gVGhhdCBpcywgYSBjbG9jayBtaWdodCBsZWdpdGltYXRlbHkgcmVhZCAyMzo1OTo2MCAob3IsIHdpdGggNjAgc2Vjb25kcyBhdFxuICAgICAgIHRpbWVzIG9mIGRheSBvdGhlciB0aGFuIDIzOjU5LCBkZXBlbmRpbmcgb24gdGhlIHRpbWUgem9uZSksIGJ1dCBpdCBkb2Vzbid0IHNlZW1cbiAgICAgICByZWFzb25hYmxlIGZvciBhIGNsb2NrIHRvIHJlYWQgXCIyMzo1OTo1OSBhbmQgMTAwMG1zXCIuICopXG4gICAgbGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgICAgIGxldCBtcywgdXMsIG5zID1cbiAgICAgICAgbWF0Y2ggc2VjIHdpdGhcbiAgICAgICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICAgICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgICAgIGluXG4gICAgICBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5jcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQpXG5cbiAgICBsZXQgdG9fc3RyaW5nX2dlbiB+ZHJvcF9tcyB+ZHJvcF91cyB+dHJpbSB0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCAhICkgPSBJbnQ2My5vZl9pbnQgaW5cbiAgICAgIGxldCAoIG1vZCApID0gSW50NjMucmVtIGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGFzc2VydCAoaWYgZHJvcF9tcyB0aGVuIGRyb3BfdXMgZWxzZSB0cnVlKTtcbiAgICAgIGxldCBmbG9hdF9zZWMgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KSBpblxuICAgICAgbGV0IHVzID0gRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9leG4gKGZsb2F0X3NlYyAqLiAxZTYpIGluXG4gICAgICBsZXQgbXMsIHVzID0gdXMgLyAhMTAwMCwgdXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBzZWMsIG1zID0gbXMgLyAhMTAwMCwgbXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBtaW4sIHNlYyA9IHNlYyAvICE2MCwgc2VjIG1vZCAhNjAgfD4gaSBpblxuICAgICAgbGV0IGhyLCBtaW4gPSBtaW4gLyAhNjAsIG1pbiBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociA9IGkgaHIgaW5cbiAgICAgIGxldCBkb250X3ByaW50X3VzID0gZHJvcF91cyB8fCAodHJpbSAmJiB1cyA9IDApIGluXG4gICAgICBsZXQgZG9udF9wcmludF9tcyA9IGRyb3BfbXMgfHwgKHRyaW0gJiYgbXMgPSAwICYmIGRvbnRfcHJpbnRfdXMpIGluXG4gICAgICBsZXQgZG9udF9wcmludF9zID0gdHJpbSAmJiBzZWMgPSAwICYmIGRvbnRfcHJpbnRfbXMgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBpZiBkb250X3ByaW50X3NcbiAgICAgICAgdGhlbiA1XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF9tc1xuICAgICAgICB0aGVuIDhcbiAgICAgICAgZWxzZSBpZiBkb250X3ByaW50X3VzXG4gICAgICAgIHRoZW4gMTJcbiAgICAgICAgZWxzZSAxNVxuICAgICAgaW5cbiAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczowIGhyO1xuICAgICAgQnl0ZXMuc2V0IGJ1ZiAyICc6JztcbiAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgbWluO1xuICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICc6JztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiBzZWM7XG4gICAgICAgIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBCeXRlcy5zZXQgYnVmIDggJy4nO1xuICAgICAgICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjkgbXM7XG4gICAgICAgICAgaWYgZG9udF9wcmludF91cyB0aGVuICgpIGVsc2Ugd3JpdGVfM19kaWdpdF9pbnQgYnVmIH5wb3M6MTIgdXMpKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTp0cnVlIHRcbiAgICBsZXQgdG9fc2VjX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczp0cnVlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuICAgIGxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6dHJ1ZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBsZXQgc21hbGxfZGlmZiA9XG4gICAgICBsZXQgaG91ciA9IDM2MDAuIGluXG4gICAgICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgICAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgICAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgICAgICBsZXQgZGlmZiA9IG9mZGF5MSAtLiBvZmRheTIgaW5cbiAgICAgICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICAgICAgbGV0IGQxID0gRmxvYXQubW9kX2Zsb2F0IGRpZmYgaG91ciBpblxuICAgICAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICAgICAgbGV0IGQyID0gRmxvYXQubW9kX2Zsb2F0IChkMSArLiBob3VyKSBob3VyIGluXG4gICAgICAgIGxldCBkID0gaWYgRmxvYXQuKCA+ICkgZDIgKGhvdXIgLy4gMi4pIHRoZW4gZDIgLS4gaG91ciBlbHNlIGQyIGluXG4gICAgICAgIFNwYW4ub2Zfc2VjIGRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOmZhbHNlIH50cmltOmZhbHNlIHRcblxuICAgIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuT2ZkYXlcIlxuICAgICAgZW5kKVxuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgc3Vic2VjID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDAuXG4gICAgICAgIGVsc2UgRmxvYXQub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnN1YnNlY19wb3MgfmxlbjpzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIEZsb2F0Lm9mX2ludCAoKGhyICogMzYwMCkgKyAobWluICogNjApICsgc2VjKSArLiBzdWJzZWNcbiAgICAgIHw+IFNwYW4ub2Zfc2VjXG4gICAgICB8PiBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHMgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gb2Zfc2V4cF9lcnJvciAoXCJPZmRheS50X29mX3NleHA6IFwiIF4gcykgc2V4cClcbiAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiT2ZkYXkudF9vZl9zZXhwXCIgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHNleHBfb2ZfdCBzcGFuID0gU2V4cC5BdG9tICh0b19zdHJpbmcgc3BhbilcblxuICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgICAgIHRyeSBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpjcmVhdGVfZnJvbV9wYXJzZWQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCglcyk6ICVzXCJcbiAgICAgICAgICAoU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbilcbiAgICAgICAgICAoRXhuLnRvX3N0cmluZyBleG4pXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBsbykgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGhpKVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG5cbiAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgb2ZkYXlzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbVxuICAgICAxMDguMDcgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgIHByZXR0eSBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZFxuICAgICBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEMpXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xuIiwiKCogU2VlIHRpbWVfZmxvYXQubWwgZm9yIHRoZSBwcmltYXJ5IGluc3RhbnRpYXRpb24gb2YgdGhpcyBmdW5jdG9yIHRoYXQgaXMgdmlzaWJsZSBvdXRzaWRlXG4gICBvZiBDb3JlIGFzIFRpbWUgKHNlZSBjb3JlLm1sKS4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgVGltZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUaW1lMCA6IFRpbWUwX2ludGYuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRpbWUwID0gVGltZTBcbiAgaW5jbHVkZSBUaW1lMFxuXG4gIGxldCBlcG9jaCA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi56ZXJvXG4gIGxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPC4gdDJcbiAgbGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPi4gdDJcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgIGluY2x1ZGUgVGltZV9pbnRmLlpvbmUgd2l0aCBtb2R1bGUgVGltZSA6PSBUaW1lMFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZTAuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICBUaW1lMC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGFiYnJldmlhdGlvbiB0IHRpbWUgPVxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgKGluZGV4IHQgdGltZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9XG4gICAgICBtYXRjaCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleFxuICAgICAgICAgICwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChJbmRleC5uZXh0IGluZGV4KVxuICAgIGxldCBwcmV2X2Nsb2NrX3NoaWZ0IHQgfmF0X29yX2JlZm9yZTp0aW1lID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG4gICAgbGV0IG5leHRfY2xvY2tfc2hpZnQgdCB+c3RyaWN0bHlfYWZ0ZXI6dGltZSA9IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuXG4gICAgbGV0IGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgdCB0aW1lID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4IHQgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXldIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYWJzX2RpZmYgdDEgdDIgPSBTcGFuLmFicyAoZGlmZiB0MSB0MilcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgcmVsYXRpdmUgPSBEYXRlX2FuZF9vZmRheS5vZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgaW5cbiAgICBab25lLmFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgem9uZSByZWxhdGl2ZVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX29mZGF5X3ByZWNpc2UgZGF0ZSBvZmRheSB+em9uZSA9XG4gICAgKCogV2UgYXNzdW1lIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB6b25lIHNoaWZ0IHdpdGhpbiBhIGdpdmVuIGxvY2FsIGRheS4gICopXG4gICAgbGV0IHN0YXJ0X29mX2RheSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBPZmRheS5zdGFydF9vZl9kYXkgaW5cbiAgICBsZXQgcHJvcG9zZWRfdGltZSA9IGFkZCBzdGFydF9vZl9kYXkgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KSBpblxuICAgIG1hdGNoIFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjpzdGFydF9vZl9kYXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgfCBTb21lIChzaGlmdF9zdGFydCwgc2hpZnRfYW1vdW50KSAtPlxuICAgICAgbGV0IHNoaWZ0X2JhY2t3YXJkcyA9IFNwYW4uKHNoaWZ0X2Ftb3VudCA8IHplcm8pIGluXG4gICAgICAoKiBzdGFydCBhbmQgZW5kIG9mIHRoZSBcInByb2JsZW1hdGljIHJlZ2lvblwiICopXG4gICAgICBsZXQgcywgZSA9XG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnQsIHNoaWZ0X3N0YXJ0XG4gICAgICAgIGVsc2Ugc2hpZnRfc3RhcnQsIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnRcbiAgICAgIGluXG4gICAgICBpZiBwcm9wb3NlZF90aW1lIDwgc1xuICAgICAgdGhlbiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgICBlbHNlIGlmIHMgPD0gcHJvcG9zZWRfdGltZSAmJiBwcm9wb3NlZF90aW1lIDwgZVxuICAgICAgdGhlblxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBgVHdpY2UgKHByb3Bvc2VkX3RpbWUsIHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgICAgICAgZWxzZSBgTmV2ZXIgc2hpZnRfc3RhcnRcbiAgICAgIGVsc2UgYE9uY2UgKHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgOztcblxuICBtb2R1bGUgRGF0ZV9jYWNoZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgVGltZTAuKCA+PSApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsXG4gICAgJiYgVGltZTAuKCA8ICkgdGltZSBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIFRpbWUwLnN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IFRpbWUwLmFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgICAgfD4gVGltZTAubWF4IChab25lLmluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgY2FjaGVfdW50aWxfZXhjbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgICAgfD4gVGltZTAubWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgZW5kX29mX2RheSA9IE9mZGF5LnByZXYgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgfD4gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdXG5cbiAgbGV0IHRvX29mZGF5IHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgbGV0IG9mX2RheSA9XG4gICAgICBUaW1lMC5kaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICBpblxuICAgIGlmIE9mZGF5LmVxdWFsIG9mX2RheSBPZmRheS5zdGFydF9vZl9uZXh0X2RheSB0aGVuIGVuZF9vZl9kYXkgZWxzZSBvZl9kYXlcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lID0gdG9fZGF0ZSB0aW1lIH56b25lLCB0b19vZmRheSB0aW1lIH56b25lXG5cbiAgKCogVGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgYWxnb3JpdGhtIChpbnRlcmZhY2UsIGV2ZW4pIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhhdFxuICAgICB0aW1lem9uZSBzaGlmdHMgYXJlbid0IHRvbyBjbG9zZSB0b2dldGhlciAoYXMgaW4sIGl0IGNhbid0IHNpbXVsdGFuZW91c2x5IGJlIHRoZVxuICAgICBjYXNlIHRoYXQgYSB0aW1lem9uZSBzaGlmdCBvZiBYIGhvdXJzIG9jY3VycmVkIGxlc3MgdGhhbiBYIGhvdXJzIGFnbywgKmFuZCpcbiAgICAgYSB0aW1lem9uZSBzaGlmdCBvZiBZIGhvdXJzIHdpbGwgb2NjdXIgaW4gbGVzcyB0aGFuIFkgaG91cnMnIHRpbWUpICopXG4gIGxldCB0b19kYXRlX29mZGF5X3ByZWNpc2UgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2FmdGVyID0gWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnRpbWUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0ID0gWm9uZS5wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgfmF0X29yX2JlZm9yZTp0aW1lIGluXG4gICAgbGV0IGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudCA9XG4gICAgICAoKiBVc2luZyBbZGF0ZV0gYW5kIHJhaXNpbmcgb24gW05vbmVdIGhlcmUgaXMgT0sgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjbG9ja1xuICAgICAgICAgc2hpZnRzIGNhbid0IGNyb3NzIGRhdGUgYm91bmRhcmllcy4gVGhpcyBpcyB0cnVlIGluIGFsbCBjYXNlcyBJJ3ZlIGV2ZXIgaGVhcmRcbiAgICAgICAgIG9mIChhbmQgW29mX2RhdGVfb2ZkYXlfcHJlY2lzZV0gd291bGQgbmVlZCByZXZpc2l0aW5nIGlmIGl0IHR1cm5lZCBvdXQgdG8gYmVcbiAgICAgICAgIGZhbHNlKSAqKVxuICAgICAgbWF0Y2ggT2ZkYXkuc3ViIG9mZGF5IGFtb3VudCB3aXRoXG4gICAgICB8IFNvbWUgb2ZkYXkgLT4gYEFsc29fc2tpcHBlZCAoZGF0ZSwgb2ZkYXkpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJUaW1lLnRvX2RhdGVfb2ZkYXlfcHJlY2lzZVwiXG4gICAgICAgICAgICAgIH5zcGFuX3NpbmNlX2Vwb2NoOih0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUgOiBTcGFuLnQpXG4gICAgICAgICAgICAgICh6b25lIDogWm9uZS50KV1cbiAgICBpblxuICAgIGxldCBhbWJpZ3VpdHkgPVxuICAgICAgKCogRWRnZSBjYXNlczogdGhlIGluc3RhbnQgb2YgdHJhbnNpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXcgem9uZSByZWdpbWUuIFNvIGlmIHRoZVxuICAgICAgICAgY2xvY2sgbW92ZWQgYnkgYW4gaG91ciBleGFjdGx5IG9uZSBob3VyIGFnbywgdGhlcmUncyBubyBhbWJpZ3VpdHksIGJlY2F1c2UgdGhlXG4gICAgICAgICBob3VyLWFnbyB0aW1lIGJlbG9uZ3MgdG8gdGhlIHNhbWUgcmVnaW1lIGFzIHlvdSwgYW5kIGNvbnZlcnNlbHksIGlmIHRoZSBjbG9ja1xuICAgICAgICAgd2lsbCBtb3ZlIGJ5IGFuIGhvdXIgaW4gYW4gaG91cnMnIHRpbWUsIHRoZXJlICppcyogYW1iaWd1aXR5LiBIZW5jZSBbPi5dIGZvclxuICAgICAgICAgdGhlIGZpcnN0IGNhc2UgYW5kIFs8PS5dIGZvciB0aGUgc2Vjb25kLiAqKVxuICAgICAgbWF0Y2ggY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0LCBjbG9ja19zaGlmdF9hZnRlciB3aXRoXG4gICAgICB8IFNvbWUgKHN0YXJ0LCBhbW91bnQpLCBfIHdoZW4gYWRkIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpID4uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50ciB+dGFyZ2V0Oic6JyB+cmVwbGFjZW1lbnQ6Jy0nIChPZmRheS50b19zdHJpbmcgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IG9mX2ZpbGVuYW1lX3N0cmluZyBzIH56b25lID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOidfJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZSBpbiBmaWxlbmFtZSBzdHJpbmdcIlxuICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBTdHJpbmcudHIgfnRhcmdldDonLScgfnJlcGxhY2VtZW50Oic6JyBvZmRheSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IH56b25lXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIlRpbWUub2ZfZmlsZW5hbWVfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gIDs7XG5cbiAgbGV0IG9mX2xvY2FsaXplZF9zdHJpbmcgfnpvbmUgc3RyID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0ciB+b246JyAnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIm5vIHNwYWNlIGluIGRhdGVfb2ZkYXkgc3RyaW5nOiAlc1wiIHN0cilcbiAgICAgIHwgU29tZSAoZGF0ZSwgdGltZSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgdGltZSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICB3aXRoXG4gICAgfCBlIC0+IEV4bi5yZXJhaXNlIGUgXCJUaW1lLm9mX2xvY2FsaXplZF9zdHJpbmdcIlxuICA7O1xuXG4gIGxldCBvY2N1cnJlbmNlIGJlZm9yZV9vcl9hZnRlciB0IH5vZmRheSB+em9uZSA9XG4gICAgbGV0IGZpcnN0X2d1ZXNzX2RhdGUgPSB0b19kYXRlIHQgfnpvbmUgaW5cbiAgICBsZXQgZmlyc3RfZ3Vlc3MgPSBvZl9kYXRlX29mZGF5IH56b25lIGZpcnN0X2d1ZXNzX2RhdGUgb2ZkYXkgaW5cbiAgICBsZXQgY21wLCBpbmNyZW1lbnQgPVxuICAgICAgbWF0Y2ggYmVmb3JlX29yX2FmdGVyIHdpdGhcbiAgICAgIHwgYExhc3RfYmVmb3JlX29yX2F0IC0+ICggPD0gKSwgLTFcbiAgICAgIHwgYEZpcnN0X2FmdGVyX29yX2F0IC0+ICggPj0gKSwgMVxuICAgIGluXG4gICAgaWYgY21wIGZpcnN0X2d1ZXNzIHRcbiAgICB0aGVuIGZpcnN0X2d1ZXNzXG4gICAgZWxzZSBvZl9kYXRlX29mZGF5IH56b25lIChEYXRlMC5hZGRfZGF5cyBmaXJzdF9ndWVzc19kYXRlIGluY3JlbWVudCkgb2ZkYXlcbiAgOztcblxuICBsZXQgZW5zdXJlX2NvbG9uX2luX29mZnNldCBvZmZzZXQgPVxuICAgIGxldCBvZmZzZXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBvZmZzZXQgaW5cbiAgICBpZiBJbnQuKCA8PSApIG9mZnNldF9sZW5ndGggMlxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LlswXVxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LltvZmZzZXRfbGVuZ3RoIC0gMV1cbiAgICB0aGVuIG9mZnNldCBeIFwiOjAwXCJcbiAgICBlbHNlIGlmIENoYXIuKCA9ICkgb2Zmc2V0LlsxXSAnOicgfHwgQ2hhci4oID0gKSBvZmZzZXQuWzJdICc6J1xuICAgIHRoZW4gb2Zmc2V0XG4gICAgZWxzZSBpZiBJbnQuKCA8ICkgb2Zmc2V0X2xlbmd0aCAzIHx8IEludC4oID4gKSBvZmZzZXRfbGVuZ3RoIDRcbiAgICB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgb2Zmc2V0ICVzXCIgb2Zmc2V0ICgpXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIFN0cmluZy5zbGljZSBvZmZzZXQgMCAob2Zmc2V0X2xlbmd0aCAtIDIpXG4gICAgICAgIDsgXCI6XCJcbiAgICAgICAgOyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IChvZmZzZXRfbGVuZ3RoIC0gMikgb2Zmc2V0X2xlbmd0aFxuICAgICAgICBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFRpbWVfb2Zfc3RyaW5nIG9mIHN0cmluZyAqIEV4bi50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGRhdGUsIG9mZGF5LCB0eiA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonICcgd2l0aFxuICAgICAgICB8IFsgZGF5OyBtb250aDsgeWVhcjsgb2ZkYXkgXSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBkYXk7IFwiIFwiOyBtb250aDsgXCIgXCI7IHllYXIgXSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5OyB0eiBdIC0+IGRhdGUsIG9mZGF5LCBTb21lIHR6XG4gICAgICAgIHwgWyBkYXRlOyBvZmRheSBdIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBzIF0gLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOidUJyBzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2VzIG9yIFQgZm91bmRcIilcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidG9vIG1hbnkgc3BhY2VzXCJcbiAgICAgIGluXG4gICAgICBsZXQgb2ZkYXlfdG9fc2VjIG9kID0gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9kKSBpblxuICAgICAgbGV0IG9mZGF5LCB1dGNfb2Zmc2V0ID1cbiAgICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBvZmRheSwgTm9uZVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBDaGFyLiggPSApIG9mZGF5LltTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMV0gJ1onXG4gICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIG9mZGF5IH5wb3M6MCB+bGVuOihTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMSksIFNvbWUgMC5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonKycgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICBsLCBTb21lIChvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonLScgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICAgICBsLCBTb21lICgtMS4gKi4gb2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgICAgfCBOb25lIC0+IG9mZGF5LCBOb25lKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgIHwgU29tZSB0eiAtPiBvZl9kYXRlX29mZGF5IH56b25lOihmaW5kX3pvbmUgdHopIGRhdGUgb2ZkYXlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggdXRjX29mZnNldCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHpvbmUgPSBkZWZhdWx0X3pvbmUgKCkgaW5cbiAgICAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICAgICB8IFNvbWUgdXRjX29mZnNldCAtPlxuICAgICAgICAgICBsZXQgdXRjX3QgPSBvZl9kYXRlX29mZGF5IH56b25lOlpvbmUudXRjIGRhdGUgb2ZkYXkgaW5cbiAgICAgICAgICAgc3ViIHV0Y190IChTcGFuLm9mX3NlYyB1dGNfb2Zmc2V0KSlcbiAgICB3aXRoXG4gICAgfCBlIC0+IHJhaXNlIChUaW1lX29mX3N0cmluZyAocywgZSkpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgcyA9XG4gICAgbGV0IGRlZmF1bHRfem9uZSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwidGltZSBoYXMgbm8gdGltZSB6b25lIG9yIFVUQyBvZmZzZXRcIiBzXSBpblxuICAgIGxldCBmaW5kX3pvbmUgem9uZV9uYW1lID1cbiAgICAgIGZhaWx3aXRoZiBcInVuYWJsZSB0byBsb29rdXAgWm9uZSAlcy4gIFRyeSB1c2luZyBDb3JlLlRpbWUub2Zfc3RyaW5nXCIgem9uZV9uYW1lICgpXG4gICAgaW5cbiAgICBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFNwYW4ucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgICAgfmZfaW52ZXJzZTp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBTcGFuLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9lcG9jaCBsbykgKHRvX3NwYW5fc2luY2VfZXBvY2ggaGkpXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFNwYW4gPSBTcGFuX2Zsb2F0XG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9mbG9hdFxuXG5tb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgdHlwZSB1bmRlcmx5aW5nID0gRmxvYXQudFxuXG4gIGluY2x1ZGUgKFxuICAgIEZsb2F0IDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdC5PXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgcHJlY2lzaW9uICopXG4gIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgIGVuZClcblxuICBsZXQgZGlmZiB0MSB0MiA9IFNwYW4ub2Zfc2VjICh0MSAtIHQyKVxuICBsZXQgYWRkIHQgc3BhbiA9IHQgKy4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgc3ViIHQgc3BhbiA9IHQgLS4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG4gIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi5vZl9zZWNcbiAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBTcGFuLnRvX3NlY1xuZW5kXG5cbmluY2x1ZGUgQWJzb2x1dGVcblxubW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHNwYW4gPSBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBkYXlzID1cbiAgICAgIEZsb2F0Lm9mX2ludCAoRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoKVxuICAgIGluXG4gICAgKGRheXMgKi4gODY0MDAuKSArLiBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPSBzdWIgcmVsYXRpdmUgb2Zmc2V0X2Zyb21fdXRjXG4gIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID0gYWRkIGFic29sdXRlIG9mZnNldF9mcm9tX3V0Y1xuXG4gICgqIFllYXJzIG91dCBvZiByYW5nZSBmb3IgW0RhdGUuY3JlYXRlX2V4bl0uICopXG4gIGxldFtAY29sZF0gYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoID1cbiAgICAoKiAkIFRaPVVUQyBkYXRlIC0tZGF0ZT1ALTYyMTY3MjE5MjAwXG4gICAgICAgU2F0IEphbiAgMSAwMDowMDowMCBVVEMgMDAwMCAqKVxuICAgIGxldCBnbXRpbWVfbG93ZXJfYm91bmQgPSAtNjJfMTY3XzIxOV8yMDAuIGluXG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QDI1MzQwMjMwMDc5OVxuICAgICAgIEZyaSBEZWMgMzEgMjM6NTk6NTkgVVRDIDk5OTkgKilcbiAgICBsZXQgZ210aW1lX3VwcGVyX2JvdW5kID0gMjUzXzQwMl8zMDBfNzk5LiBpblxuICAgIGlmIEZsb2F0LiggPj0gKSBzZWNfc2luY2VfZXBvY2ggKGdtdGltZV91cHBlcl9ib3VuZCArLiAxLilcbiAgICB8fCBGbG9hdC4oIDwgKSBzZWNfc2luY2VfZXBvY2ggZ210aW1lX2xvd2VyX2JvdW5kXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJUaW1lLmdtdGltZTogb3V0IG9mIHJhbmdlICglZilcIiBzZWNfc2luY2VfZXBvY2ggKClcbiAgOztcblxuICBsZXQgc2VjX3Blcl9kYXkgPSBJbnQ2My5vZl9pbnQgODZfNDAwXG5cbiAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICBhc3NlcnRfaW5fYm91bmRzIH5zZWNfc2luY2VfZXBvY2g6dDtcbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggPSBJbnQ2My5vZl9mbG9hdCB0IC8gc2VjX3Blcl9kYXkgaW5cbiAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgIHdpbGwgbGVhdmUgdXMgb25lIGRheSBzaG9ydCBiZWNhdXNlIGl0IHRydW5jYXRlcyAoZS5nLiAtMTAwIC8gODZfNDAwID0gMCBhbmQgd2VcbiAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICBpZiBGbG9hdC4oIDwgKSB0IChJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIHNlY19wZXJfZGF5KSlcbiAgICB0aGVuIEludDYzLnByZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICA7O1xuXG4gIGxldCBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgPSBJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoICogc2VjX3Blcl9kYXkpIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IHQgLS4gZGF5c19mcm9tX2Vwb2NoX2luX3NlYyBpblxuICAgIFNwYW4ub2Zfc2VjIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgOztcblxuICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaFxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGxldCBkYXRlID0gZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBvZmRheSA9IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBkYXRlLCBvZmRheVxuICA7O1xuZW5kXG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWUubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogU3Bhbi50XTtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9XG4gICAgICBhZGRcbiAgICAgICAgYmFzZVxuICAgICAgICAoU3Bhbi5zY2FsZVxuICAgICAgICAgICBpbnRlcnZhbFxuICAgICAgICAgICAoRmxvYXQucm91bmQgfmRpcjpgRG93biAoU3Bhbi4oIC8vICkgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpKVxuICAgIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IG5vdyAoKSA9XG4gIGxldCBmbG9hdF9ucyA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gSW50NjMudG9fZmxvYXQgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9zZWMgKGZsb2F0X25zICouIDFFLTkpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgdHlwZSBTX2tlcm5lbF93aXRob3V0X3pvbmUgPSBUaW1lMF9pbnRmLlNcbm1vZHVsZSB0eXBlIFNfa2VybmVsID0gVGltZV9pbnRmLlNcblxubW9kdWxlIFpvbmVfc3RhYmxlID0gWm9uZS5TdGFibGVcbmluY2x1ZGUgVGltZS5NYWtlIChUaW1lX2Zsb2F0MClcbmluY2x1ZGUgVGltZV9mbG9hdDBcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfZmxvYXQwLlN0YWJsZVxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBXaXRoX3Rfb2Zfc2V4cF9hYnMgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBPZmRheVxuICAgIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFdpdGhfdXRjX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0b19zdHJpbmdfYWJzX3BhcnRzIHQgfnpvbmU6Wm9uZS51dGMgOiBzdHJpbmcgbGlzdCldXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGRhdGU7IFNleHAuQXRvbSBvZmRheV9hbmRfcG9zc2libHlfem9uZSBdIC0+XG4gICAgICAgICAgICBvZl9zdHJpbmdfZ2VuXG4gICAgICAgICAgICAgIH5kZWZhdWx0X3pvbmU6KGZ1biAoKSAtPiBab25lLnV0YylcbiAgICAgICAgICAgICAgfmZpbmRfem9uZTooZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiB1bmtub3duIHRpbWUgem9uZVwiIHNleHApXG4gICAgICAgICAgICAgIChkYXRlIF4gXCIgXCIgXiBvZmRheV9hbmRfcG9zc2libHlfem9uZSlcbiAgICAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cFwiIHNleHBcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+IHJhaXNlIGVcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgKHNwcmludGYgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHA6ICVzXCIgKEV4bi50b19zdHJpbmcgZSkpXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV91bml4XG5cbiAgICAgIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gICAgICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgWm9uZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgICBpbmNsdWRlIFpvbmVfc3RhYmxlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICBpbmNsdWRlIE9mZGF5XG5cbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG5vdyA9IGBVc2VfVGltZV91bml4XG5cbiAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuZW5kXG5cbm1vZHVsZSBTcGFuID0gc3RydWN0XG4gIGluY2x1ZGUgU3BhblxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5lbmRcblxubW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBab25lXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcblxuICBsZXQgKCA8ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA8PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID49ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgX19iaW5fcmVhZF90X18gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXNjZW5kaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJldHdlZW4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fcmVhZGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NoYXBlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NpemVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXBfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZGVzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBlcXVhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGZpbmRfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2ggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaF9mb2xkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBpbml0aWFsaXplZF96b25lcyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBsb2NhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBtYXggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWluID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG9mX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBwcCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdG9fc3RyaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2xib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBFeHBvc2VkX2Zvcl90ZXN0cyA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5sZXQgZm9ybWF0ID0gYFVzZV9UaW1lX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBoYXNoYWJsZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV91bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0X29mX3NleHBfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG4iLCJpbmNsdWRlIERhdGUwXG5cbmxldCBvZl90aW1lIHRpbWUgfnpvbmUgPSBUaW1lX2Zsb2F0LnRvX2RhdGUgfnpvbmUgdGltZVxubGV0IHRvZGF5IH56b25lID0gb2ZfdGltZSAoVGltZV9mbG9hdC5ub3cgKCkpIH56b25lXG5sZXQgZm9ybWF0ID0gYFVzZV9EYXRlX3VuaXhcbmxldCBvZl90bSA9IGBVc2VfRGF0ZV91bml4XG5sZXQgcGFyc2UgPSBgVXNlX0RhdGVfdW5peFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50NjMuT1xuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuXCJcblxudHlwZSB1bmRlcmx5aW5nID0gSW50NjMudFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBJbnQuZXF1YWwgU3lzLndvcmRfc2l6ZV9pbl9iaXRzIDY0XG5sZXQgcm91bmRfbmVhcmVzdCA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuXG5sZXQgZmxvYXQgeCA9IEludDYzLnRvX2Zsb2F0IHhcblxuKCogW1NwYW5dIGlzIGJhc2ljYWxseSBhIFtJbnQ2M10uICBJdCBldmVuIHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3cuICopXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnQ2My50ICgqIG5hbm9zZWNvbmRzICopIFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gSW50NjMuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHplcm8gPSBJbnQ2My56ZXJvXG5lbmRcblxuaW5jbHVkZSBUXG5vcGVuIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNpZ24gOiBTaWduLnRcbiAgICA7IGhyIDogaW50XG4gICAgOyBtaW4gOiBpbnRcbiAgICA7IHNlYyA6IGludFxuICAgIDsgbXMgOiBpbnRcbiAgICA7IHVzIDogaW50XG4gICAgOyBucyA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbmxldCBuZXh0IHQgPSBJbnQ2My5zdWNjIHRcbmxldCBwcmV2IHQgPSBJbnQ2My5wcmVkIHRcbmxldCBuYW5vc2Vjb25kID0gSW50NjMub2ZfaW50IDFcbmxldCBtaWNyb3NlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG5hbm9zZWNvbmQpXG5sZXQgbWlsbGlzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWNyb3NlY29uZClcbmxldCBzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWxsaXNlY29uZClcbmxldCBtaW51dGUgPSBJbnQ2My4ob2ZfaW50IDYwICogc2Vjb25kKVxubGV0IGhvdXIgPSBJbnQ2My4ob2ZfaW50IDYwICogbWludXRlKVxubGV0IGRheSA9IEludDYzLihvZl9pbnQgMjQgKiBob3VyKVxuXG4oKiBCZXlvbmQgW21pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nLi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ10sIG5vdCBldmVyeSBtaWNyb3NlY29uZFxuICAgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgW2Zsb2F0XSBudW1iZXIgb2Ygc2Vjb25kcy4gKEluIGZhY3QsIGl0IGlzIGFyb3VuZCAxMzV5LCBidXQgd2VcbiAgIGxlYXZlIGEgc21hbGwgbWFyZ2luLilcblxuICAgSW4gdGhlIHByZXNlbmNlIG9mIHNpbGVudGx5IGlnbm9yZWQgb3ZlcmZsb3csIG5vdGUgdGhhdCBbdF0gaXMgbm90IGFjdHVhbGx5IGJvdW5kIHRvXG4gICBzdGF5IGJldHdlZW4gdGhlc2UgbGltaXRzLiAqKVxubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMuKG9mX2ludCAxMzUgKiBvZl9pbnQgMzY1ICogZGF5KVxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMubmVnIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5cbmxldCBjcmVhdGVcbiAgICAgID9zaWduOihzaWduXyA9IFNpZ24uUG9zICgqIHJlYmluZCBzbyBub3Qgc2hhZG93ZWQgYnkgW29wZW4gSW50NjNdIGJlbG93ICopKVxuICAgICAgP2RheTooZGF5cyA9IDApXG4gICAgICA/KGhyID0gMClcbiAgICAgID9taW46KG1pbnV0ZXMgPSAwKVxuICAgICAgPyhzZWMgPSAwKVxuICAgICAgPyhtcyA9IDApXG4gICAgICA/KHVzID0gMClcbiAgICAgID8obnMgPSAwKVxuICAgICAgKClcbiAgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgdCA9XG4gICAgKG9mX2ludCBkYXlzICogZGF5KVxuICAgICsgKG9mX2ludCBociAqIGhvdXIpXG4gICAgKyAob2ZfaW50IG1pbnV0ZXMgKiBtaW51dGUpXG4gICAgKyAob2ZfaW50IHNlYyAqIHNlY29uZClcbiAgICArIChvZl9pbnQgbXMgKiBtaWxsaXNlY29uZClcbiAgICArIChvZl9pbnQgdXMgKiBtaWNyb3NlY29uZClcbiAgICArIChvZl9pbnQgbnMgKiBuYW5vc2Vjb25kKVxuICBpblxuICBtYXRjaCBzaWduXyB3aXRoXG4gIHwgTmVnIC0+IG5lZyB0XG4gIHwgUG9zIHwgWmVybyAtPiB0XG47O1xuXG5sZXQgdG9fcGFydHMgdCA9XG4gIGxldCBvcGVuIEludDYzIGluXG4gIGxldCBtYWcgPSBhYnMgdCBpblxuICB7IFBhcnRzLnNpZ24gPSAoaWYgdCA8IHplcm8gdGhlbiBOZWcgZWxzZSBpZiB0ID4gemVybyB0aGVuIFBvcyBlbHNlIFplcm8pXG4gIDsgaHIgPSB0b19pbnRfZXhuIChtYWcgLyBob3VyKVxuICA7IG1pbiA9IHRvX2ludF9leG4gKHJlbSBtYWcgaG91ciAvIG1pbnV0ZSlcbiAgOyBzZWMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbnV0ZSAvIHNlY29uZClcbiAgOyBtcyA9IHRvX2ludF9leG4gKHJlbSBtYWcgc2Vjb25kIC8gbWlsbGlzZWNvbmQpXG4gIDsgdXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbGxpc2Vjb25kIC8gbWljcm9zZWNvbmQpXG4gIDsgbnMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pY3Jvc2Vjb25kIC8gbmFub3NlY29uZClcbiAgfVxuOztcblxubGV0IG9mX3BhcnRzIHsgUGFydHMuc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gPVxuICBjcmVhdGUgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5ucyAoKVxuOztcblxubGV0IG9mX25zIGYgPSByb3VuZF9uZWFyZXN0IGZcbmxldCBvZl9pbnQ2M19ucyBpID0gaVxubGV0IG9mX2ludF91cyBpID0gSW50NjMuKG9mX2ludCBpICogbWljcm9zZWNvbmQpXG5sZXQgb2ZfaW50X21zIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBtaWxsaXNlY29uZClcbmxldCBvZl9pbnRfc2VjIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBzZWNvbmQpXG5sZXQgb2ZfaW50X21pbiBpID0gSW50NjMuKG9mX2ludCBpICogbWludXRlKVxubGV0IG9mX2ludF9ociBpID0gSW50NjMuKG9mX2ludCBpICogaG91cilcbmxldCBvZl9pbnRfZGF5IGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBkYXkpXG5sZXQgb2ZfdXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWljcm9zZWNvbmQpXG5sZXQgb2ZfbXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWlsbGlzZWNvbmQpXG5sZXQgb2Zfc2VjIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IHNlY29uZClcbmxldCBvZl9taW4gZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWludXRlKVxubGV0IG9mX2hyIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGhvdXIpXG5sZXQgb2ZfZGF5IGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGRheSlcblxubGV0IG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiBzZWMgPVxuICBsZXQgdXMgPSByb3VuZF9uZWFyZXN0IChzZWMgKi4gMWU2KSBpblxuICBvZl9pbnQ2M19ucyBJbnQ2My4odXMgKiBvZl9pbnQgMTAwMClcbjs7XG5cbmxldCBvZl9pbnQ2M19zZWNvbmRzIHggPSB4ICogc2Vjb25kXG5sZXQgb2ZfaW50MzJfc2Vjb25kcyB4ID0gb2ZfaW50NjNfc2Vjb25kcyAoSW50NjMub2ZfaW50MzIgeClcblxubGV0IHRvX25zIHQgPSBmbG9hdCB0XG5sZXQgdG9faW50NjNfbnMgdCA9IHRcbmxldCB0b191cyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWNyb3NlY29uZFxubGV0IHRvX21zIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjIHQgPSBmbG9hdCB0IC8uIGZsb2F0IHNlY29uZFxubGV0IHRvX21pbiB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaW51dGVcbmxldCB0b19ociB0ID0gZmxvYXQgdCAvLiBmbG9hdCBob3VyXG5sZXQgdG9fZGF5IHQgPSBmbG9hdCB0IC8uIGZsb2F0IGRheVxubGV0IHRvX2ludF91cyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWNyb3NlY29uZCkpXG5sZXQgdG9faW50X21zIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIG1pbGxpc2Vjb25kKSlcbmxldCB0b19pbnRfc2VjIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIHNlY29uZCkpXG5sZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biB0ID0gdCAvJSBzZWNvbmRcbmxldCBvZl9pbnRfbnMgaSA9IG9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX2ludF9ucyA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnMgdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMuU3Bhbi50b19pbnRfbnM6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCAoICsgKSB0IHUgPSBJbnQ2My4oICsgKSB0IHVcbmxldCAoIC0gKSB0IHUgPSBJbnQ2My4oIC0gKSB0IHVcbmxldCBhYnMgPSBJbnQ2My5hYnNcbmxldCBuZWcgPSBJbnQ2My5uZWdcbmxldCBzY2FsZSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0ICouIGYpXG5sZXQgc2NhbGVfaW50NjMgdCBpID0gSW50NjMuKCAqICkgdCBpXG5sZXQgc2NhbGVfaW50IHQgaSA9IHNjYWxlX2ludDYzIHQgKEludDYzLm9mX2ludCBpKVxubGV0IGRpdiA9IEludDYzLiggLyUgKVxubGV0ICggLyApIHQgZiA9IHJvdW5kX25lYXJlc3QgKGZsb2F0IHQgLy4gZilcbmxldCAoIC8vICkgPSBJbnQ2My4oIC8vIClcbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgdCA9IEludDYzLnRvX2Zsb2F0IHRcblxubGV0IG9mX3VuaXRfb2ZfdGltZSB1ID1cbiAgbWF0Y2ggKHUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICB8IE1pY3Jvc2Vjb25kIC0+IG1pY3Jvc2Vjb25kXG4gIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gIHwgTWludXRlIC0+IG1pbnV0ZVxuICB8IEhvdXIgLT4gaG91clxuICB8IERheSAtPiBkYXlcbjs7XG5cbmxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgaWYgYWJzX3QgPj0gZGF5XG4gIHRoZW4gRGF5XG4gIGVsc2UgaWYgYWJzX3QgPj0gaG91clxuICB0aGVuIEhvdXJcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgdGhlbiBNaW51dGVcbiAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgdGhlbiBTZWNvbmRcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaWxsaXNlY29uZFxuICB0aGVuIE1pbGxpc2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgdGhlbiBNaWNyb3NlY29uZFxuICBlbHNlIE5hbm9zZWNvbmRcbjs7XG5cbmxldCB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgdCA9IFNwYW5fZmxvYXQub2Zfc2VjICh0b19zZWMgdClcbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgcyA9IG9mX3NlYyAoU3Bhbl9mbG9hdC50b19zZWMgcylcblxubW9kdWxlIFN0YWJsZTAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICAgVGltZV9mbG9hdC5TdGFibGUuU3Bhbi5WMS5zZXhwX29mX3QgKHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCB0KVxuICAgICAgOztcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgICAgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChUaW1lX2Zsb2F0LlN0YWJsZS5TcGFuLlYxLnRfb2Zfc2V4cCBzKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2ZfaW50NjNfbnMgdFxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0b19pbnQ2M19ucyB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2ZfaW50NjNfbnMgdFxuICAgICAgICBsZXQgdG9faW50NjMgdCA9IHRvX2ludDYzX25zIHRcblxuICAgICAgICBtb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGUgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPSAwXG4gICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwXG4gICAgICAgICAgICB0aGVuIDFcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwMFxuICAgICAgICAgICAgdGhlbiAyXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxXzAwMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMF8wMDBcbiAgICAgICAgICAgIHRoZW4gNFxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTAwXzAwMFxuICAgICAgICAgICAgdGhlbiA1XG4gICAgICAgICAgICBlbHNlIGFzc2VydCBmYWxzZVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICAoKiBzcGFuIHBhcnQgbWFnbml0dWRlcyBhcmUgYWx3YXlzIDwgMTAwXzAwMCAqKVxuXG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kZWNpbWFsX3BsYWNlc190b193cml0ZSB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgYXNzZXJ0IChiaWxsaW9udGhzID49IDAgJiYgYmlsbGlvbnRocyA8PSA5OTlfOTk5Xzk5OSk7XG4gICAgICAgICAgICBpZiBiaWxsaW9udGhzID0gMFxuICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDlcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDhcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gN1xuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNlxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDVcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDRcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDBfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDJcbiAgICAgICAgICAgIGVsc2UgMVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfY2hhciBidWYgfnBvcyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgY2hhcjtcbiAgICAgICAgICAgIHBvcyArIDFcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgY2hhcjEgY2hhcjIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyBjaGFyMTtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIChwb3MgKyAxKSBjaGFyMjtcbiAgICAgICAgICAgIHBvcyArIDJcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjMgYnVmIH5wb3MgfmRpZ2l0cyAoSW50NjMub2ZfaW50IGludCk7XG4gICAgICAgICAgICBwb3MgKyBkaWdpdHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RlY2ltYWxzIGJ1ZiB+cG9zIH5kZWNpbWFscyB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjNcbiAgICAgICAgICAgICAgYnVmXG4gICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgfmRpZ2l0czpkZWNpbWFsc1xuICAgICAgICAgICAgICAoSW50NjMub2ZfaW50IChiaWxsaW9udGhzIC8gSW50LnBvdyAxMCAoOSAtIGRlY2ltYWxzKSkpO1xuICAgICAgICAgICAgcG9zICsgZGVjaW1hbHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzIGludCBzdWZmaXggPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIGRpZ2l0cyA9IDBcbiAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfY2hhciBidWYgfnBvcyBzdWZmaXggaW5cbiAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmFub3Nfb2ZfbWlsbGlzZWNvbmQgPSB0b19pbnQ2M19ucyBtaWxsaXNlY29uZCB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgbGV0IG5hbm9zX29mX21pY3Jvc2Vjb25kID0gdG9faW50NjNfbnMgbWljcm9zZWNvbmQgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgIGxldCBpbnQ2M182MCA9IEludDYzLm9mX2ludCA2MFxuICAgICAgICAgIGxldCBpbnQ2M18yNCA9IEludDYzLm9mX2ludCAyNFxuXG4gICAgICAgICAgKCogVW5pdHMgb2Ygc2Vjb25kcyBhbmQgc21hbGxlciBjYW4gYmUgd3JpdHRlbiBpbiBkZWNpbWFsIG5vdGF0aW9uIHdpdGhvdXRcbiAgICAgICAgICAgICB3b3JyeWluZyBhYm91dCBub24tcG93ZXItb2YtdGVuIGZhY3RvcnMuICopXG4gICAgICAgICAgbW9kdWxlIERlY2ltYWxfdW5pdCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBTZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZFxuICAgICAgICAgICAgICB8IE5vbmVcbiAgICAgICAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgICAgIGxldCBjcmVhdGUgfnMgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgcyA+IDBcbiAgICAgICAgICAgICAgdGhlbiBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSBuYW5vc19vZl9taWxsaXNlY29uZFxuICAgICAgICAgICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gbmFub3Nfb2ZfbWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgdGhlbiBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IDFcbiAgICAgICAgICAgICAgdGhlbiBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGludGVnZXIgdCB+cyB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gc1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG5zIC8gbmFub3Nfb2ZfbWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAvIG5hbm9zX29mX21pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiBuc1xuICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGJpbGxpb250aHMgdCB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gbnNcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBucyAlIG5hbm9zX29mX21pbGxpc2Vjb25kICogMV8wMDBcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAlIG5hbm9zX29mX21pY3Jvc2Vjb25kICogMV8wMDBfMDAwXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiAwXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgbGVuZ3RoIHQgfmRpZ2l0cyB+ZGVjaW1hbHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX2xlbiA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gZGlnaXRzICsgMVxuICAgICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgfCBNaWNyb3NlY29uZCB8IE5hbm9zZWNvbmQgLT4gZGlnaXRzICsgMlxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsc19sZW4gPSBpZiBkZWNpbWFscyA+IDAgdGhlbiBkZWNpbWFscyArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgIGRpZ2l0c19sZW4gKyBkZWNpbWFsc19sZW5cbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZV9zdWZmaXggdCBidWYgfnBvcyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiB3cml0ZV9jaGFyIGJ1ZiB+cG9zICdzJ1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ20nICdzJ1xuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ3UnICdzJ1xuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAnbicgJ3MnXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBwb3NcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZSB0IGJ1ZiB+cG9zIH5pbnRlZ2VyIH5kaWdpdHMgfmJpbGxpb250aHMgfmRlY2ltYWxzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgZGlnaXRzID0gMFxuICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIGludGVnZXIgfmRpZ2l0cyBpblxuICAgICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgICAgaWYgZGVjaW1hbHMgPSAwXG4gICAgICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9jaGFyIGJ1ZiB+cG9zICcuJyBpblxuICAgICAgICAgICAgICAgICAgICB3cml0ZV9kZWNpbWFscyBidWYgfnBvcyB+YmlsbGlvbnRocyB+ZGVjaW1hbHMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB3cml0ZV9zdWZmaXggdCBidWYgfnBvcylcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kXG5cbiAgICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICAgICAgaWYgZXF1YWwgdCB6ZXJvXG4gICAgICAgICAgICB0aGVuIFwiMHNcIlxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9IHQgPCB6ZXJvIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuKCAvICkgKHRvX2ludDYzX25zIHQpICh0b19pbnQ2M19ucyBzZWNvbmQpIGluXG4gICAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgICAgSW50NjMucmVtICh0b19pbnQ2M19ucyB0KSAodG9faW50NjNfbnMgc2Vjb25kKSB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuYWJzIHNlY29uZHMgaW5cbiAgICAgICAgICAgICAgbGV0IG5zID0gSW50LmFicyBucyBpblxuICAgICAgICAgICAgICBsZXQgcyA9IEludDYzLnJlbSBzZWNvbmRzIGludDYzXzYwIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZXMgPSBJbnQ2My4oIC8gKSBzZWNvbmRzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBtID0gSW50NjMucmVtIG1pbnV0ZXMgaW50NjNfNjAgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgaG91cnMgPSBJbnQ2My4oIC8gKSBtaW51dGVzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBoID0gSW50NjMucmVtIGhvdXJzIGludDYzXzI0IHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IGQgPSBJbnQ2My4oIC8gKSBob3VycyBpbnQ2M18yNCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfZCA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZCBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2ggPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmggaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9tID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTptIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXQgPSBEZWNpbWFsX3VuaXQuY3JlYXRlIH5zIH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2ludGVnZXIgPSBEZWNpbWFsX3VuaXQuaW50ZWdlciBkZWNpbWFsX3VuaXQgfnMgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfYmlsbGlvbnRocyA9IERlY2ltYWxfdW5pdC5iaWxsaW9udGhzIGRlY2ltYWxfdW5pdCB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9kZWNpbWFsX3VuaXQgPVxuICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZGVjaW1hbF91bml0X2ludGVnZXJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyX29mX2RlY2ltYWxfcGxhY2VzX3RvX3dyaXRlIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzdHJpbmdfbGVuZ3RoID1cbiAgICAgICAgICAgICAgICBsZXQgc2lnbl9sZW4gPSBpZiBpc19uZWdhdGl2ZSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRfbGVuID0gaWYgZGlnaXRzX29mX2QgPiAwIHRoZW4gZGlnaXRzX29mX2QgKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBoX2xlbiA9IGlmIGRpZ2l0c19vZl9oID4gMCB0aGVuIGRpZ2l0c19vZl9oICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbV9sZW4gPSBpZiBkaWdpdHNfb2ZfbSA+IDAgdGhlbiBkaWdpdHNfb2ZfbSArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9sZW4gPVxuICAgICAgICAgICAgICAgICAgRGVjaW1hbF91bml0Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgfmRpZ2l0czpkaWdpdHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczpkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHNpZ25fbGVuICsgZF9sZW4gKyBoX2xlbiArIG1fbGVuICsgZGVjaW1hbF91bml0X2xlblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhc3NlcnQgKHN0cmluZ19sZW5ndGggPiAwKTtcbiAgICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBzdHJpbmdfbGVuZ3RoIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSBpZiBpc19uZWdhdGl2ZSB0aGVuIHdyaXRlX2NoYXIgYnVmIH5wb3MgJy0nIGVsc2UgcG9zIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfZCBkICdkJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2ggaCAnaCcgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9tIG0gJ20nIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIERlY2ltYWxfdW5pdC53cml0ZVxuICAgICAgICAgICAgICAgICAgZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICBidWZcbiAgICAgICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgICAgIH5pbnRlZ2VyOmRlY2ltYWxfdW5pdF9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICB+ZGlnaXRzOmRpZ2l0c19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6ZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFzc2VydCAocG9zID0gc3RyaW5nX2xlbmd0aCk7XG4gICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmKVxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgICAgICgqIFdlIGRvIGNvbXB1dGF0aW9ucyB1c2luZyBuZWdhdGl2ZSBudW1iZXJzIGV2ZXJ5d2hlcmUgYW5kIHRlc3QgYWdhaW5zdFxuICAgICAgICAgICAgIHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5taW5fdmFsdWVdIHJhdGhlciB0aGFuIHVzaW5nIHBvc2l0aXZlIG51bWJlcnNcbiAgICAgICAgICAgICBhbmQgdGVzdGluZyBhZ2FpbnN0IHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5tYXhfdmFsdWVdIGJlY2F1c2UgdGhlXG4gICAgICAgICAgICAgbmVnYXRpdmUgaW50ZWdlciByYW5nZSBpcyBvbmUgd2lkZXIgdGhhbiB0aGUgcG9zaXRpdmUgaW50ZWdlciByYW5nZVxuICAgICAgICAgICAgICgtMioqNjMgdnMgMioqNjMtMSksIGFuZCB3ZSBuZWVkIHRoYXQgdG8gYmUgYWJsZSB0byBoYW5kbGUgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgbmljZWx5LiAqKVxuXG4gICAgICAgICAgbGV0IGludDYzXzEwID0gSW50NjMub2ZfaW50IDEwXG4gICAgICAgICAgbGV0IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3cgPSBJbnQ2My4obWluX3ZhbHVlIC8gaW50NjNfMTApXG5cbiAgICAgICAgICBsZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJUaW1lX25zLlNwYW4ub2Zfc3RyaW5nOiBpbnZhbGlkIHN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAoc3RyaW5nIDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgKHJlYXNvbiA6IHN0cmluZyldXG4gICAgICAgICAgOztcblxuICAgICAgICAgICgqIEFzc3VtZXMgeCBhbmQgeSBhcmUgYm90aCBub25wb3NpdGl2ZSAqKVxuICAgICAgICAgIGxldCBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyB4IHkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgICAgICAgbGV0IHN1bSA9IHggKyB5IGluXG4gICAgICAgICAgICBpZiBzdW0gPiB4XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBzdW1cbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IGFkZF9uZWdfZGlnaXQgfnN0cmluZyBpbnQ2MyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgICAgICAgIGxldCBkaWdpdCA9IEludDYzLm9mX2ludCAoQ2hhci5nZXRfZGlnaXRfZXhuIGNoYXIpIGluXG4gICAgICAgICAgICBpZiBpbnQ2MyA8IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIChpbnQ2MyAqIGludDYzXzEwKSAoLWRpZ2l0KVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbWluX2ZhY3Rvcl9vZiBzcGFuID0gSW50NjMuKCAvICkgSW50NjMubWluX3ZhbHVlICh0b19pbnQ2M19ucyBzcGFuKVxuICAgICAgICAgIGxldCBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgZGF5XG4gICAgICAgICAgbGV0IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgaG91clxuICAgICAgICAgIGxldCBtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWludXRlXG4gICAgICAgICAgbGV0IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWlsbGlzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWljcm9zZWNvbmRcbiAgICAgICAgICBsZXQgbWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBuYW5vc2Vjb25kXG5cbiAgICAgICAgICBsZXQgbWluX3dpdGhvdXRfdW5kZXJmbG93X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgPVxuICAgICAgICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICAgICAgICB8IERheSAtPiBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBIb3VyIC0+IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaW51dGUgLT4gbWluX21pbnV0ZXNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgU2Vjb25kIC0+IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG1pbl9taWxsaXNlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IG1pbl9uYW5vc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIH5uZWdfaW50ZWdlclxuICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgfnVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGxldCBzY2FsZSA9IHRvX2ludDYzX25zIChvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lKSBpblxuICAgICAgICAgICAgbGV0IG1pbl93aXRob3V0X3VuZGVyZmxvdyA9XG4gICAgICAgICAgICAgIG1pbl93aXRob3V0X3VuZGVyZmxvd19vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgSW50NjMuKCA8ICkgbmVnX2ludGVnZXIgbWluX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBsZXQgbmVnX2ludGVnZXJfbnMgPSBJbnQ2My4oICogKSBuZWdfaW50ZWdlciBzY2FsZSBpblxuICAgICAgICAgICAgbGV0IGZyYWN0aW9uX3BvcyA9IGRlY2ltYWxfcG9zICsgMSBpblxuICAgICAgICAgICAgaWYgZnJhY3Rpb25fcG9zID49IGVuZF9wb3NcbiAgICAgICAgICAgIHRoZW4gbmVnX2ludGVnZXJfbnNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF9ucyA9XG4gICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMucmVhZF9pbnQ2M19kZWNpbWFsXG4gICAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIH5wb3M6ZnJhY3Rpb25fcG9zXG4gICAgICAgICAgICAgICAgICB+c2NhbGVcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczooZW5kX3BvcyAtIGZyYWN0aW9uX3BvcylcbiAgICAgICAgICAgICAgICAgIH5hbGxvd191bmRlcnNjb3JlOnRydWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzOnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIG5lZ19pbnRlZ2VyX25zIChJbnQ2My4oIH4tICkgZGVjaW1hbF9ucykpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBsZXQgbmVnX25zID0gcmVmIEludDYzLnplcm8gaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBzdHJpbmdcIjtcbiAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9XG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgIHwgJysnIC0+XG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nIDogRGlnaXRfc3RyaW5nX2hlbHBlcnMuUm91bmQudCA9XG4gICAgICAgICAgICAgICgqIFVsdGltYXRlbHksIHdlIGFsd2F5cyByb3VuZCBwYXJzZWQgc3BhbnMgdG93YXJkcyBwb3NpdGl2ZSBpbmZpbml0eSB3aGVuXG4gICAgICAgICAgICAgICAgIHRoZSBuZWFyZXN0IHJvdW5kIG5zIGFyZSBlcXVpZGlzdGFudC4gRm9yIGV4YW1wbGUsIFwiMS41bnNcIiBpcyByZWFkIGFzXG4gICAgICAgICAgICAgICAgIDIuMG5zLCBhbmQgXCItMS41bnNcIiBpcyByZWFkIGFzIC0xbnMuIFNpbmNlIHdlIHJlYWQgYWJzb2x1dGUgdmFsdWVzIGJlZm9yZVxuICAgICAgICAgICAgICAgICBhcHBseWluZyB0aGUgc2lnbiwgd2UgbXVzdCBjaG9vc2Ugb3VyIHJvdW5kaW5nIGRpcmVjdGlvbiBiYXNlZCBvbiB0aGVcbiAgICAgICAgICAgICAgICAgc2lnbi4gUm91bmRpbmcgZGVjaW1hbCB2YWx1ZXMgaGFwcGVucyBiZWZvcmUgbmVnYXRpbmcgdGhlaXIgbWFnbml0dWRlLiAqKVxuICAgICAgICAgICAgICBtYXRjaCBpc19uZWdhdGl2ZSB3aXRoXG4gICAgICAgICAgICAgIHwgZmFsc2UgLT4gVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgICAgICAgICAgIHwgdHJ1ZSAtPiBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBMb29wIG92ZXIgcGFydHMsIGxpa2UgXCI1bVwiIGluIFwiMWg1bTMwc1wiICopXG4gICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuIGRvXG4gICAgICAgICAgICAgIGxldCBoYXNfZGlnaXQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgbGV0IG5lZ19pbnRlZ2VyID1cbiAgICAgICAgICAgICAgICBsZXQgaSA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kaWdpdHMgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuICYmIG5vdCAhZW5kX29mX2RpZ2l0cyBkb1xuICAgICAgICAgICAgICAgICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgICAgICAgICAgaSA6PSBhZGRfbmVnX2RpZ2l0IH5zdHJpbmcgIWkgYztcbiAgICAgICAgICAgICAgICAgICAgaGFzX2RpZ2l0IDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8ICdfJyAtPiBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCBfIC0+IGVuZF9vZl9kaWdpdHMgOj0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIWlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfcG9zID0gIXBvcyBpblxuICAgICAgICAgICAgICBpZiAhcG9zIDwgbGVuICYmIENoYXIuZXF1YWwgJy4nIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcylcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kZWNpbWFscyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gJiYgbm90ICFlbmRfb2ZfZGVjaW1hbHMgZG9cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgICAgICAgICBoYXNfZGlnaXQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgJ18nIC0+IGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZW5kX29mX2RlY2ltYWxzIDo9IHRydWVcbiAgICAgICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAgICAgbGV0IGVuZF9wb3MgPSAhcG9zIGluXG4gICAgICAgICAgICAgIGlmIG5vdCAhaGFzX2RpZ2l0XG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJubyBkaWdpdHMgYmVmb3JlIHVuaXQgc3VmZml4XCI7XG4gICAgICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICAgICAgICAgICAgaWYgIXBvcyArIDEgPCBsZW4gJiYgQ2hhci5lcXVhbCAncycgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAoIXBvcyArIDEpKVxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnbScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICAgICAgfCAndScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICAgICAgfCAnbicgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ1bnBhcnNlYWJsZSB1bml0IHN1ZmZpeFwiKVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgIXBvcyA8IGxlblxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnZCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIERheVxuICAgICAgICAgICAgICAgICAgfCAnaCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIEhvdXJcbiAgICAgICAgICAgICAgICAgIHwgJ20nIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBNaW51dGVcbiAgICAgICAgICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBTZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInVucGFyc2VhYmxlIHVuaXQgc3VmZml4XCIpXG4gICAgICAgICAgICAgICAgZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm5vIHVuaXQgc3VmZml4IGFmdGVyIGRpZ2l0c1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZWdfbmFub3Nfb2ZfcGFydCA9XG4gICAgICAgICAgICAgICAgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgICB+bmVnX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgIH51bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBuZWdfbnMgOj0gYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgIW5lZ19ucyBuZWdfbmFub3Nfb2ZfcGFydFxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgIGlmIGlzX25lZ2F0aXZlXG4gICAgICAgICAgICAgIHRoZW4gIW5lZ19uc1xuICAgICAgICAgICAgICBlbHNlIGlmIEludDYzLiggPSApICFuZWdfbnMgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIlxuICAgICAgICAgICAgICBlbHNlIEludDYzLiggfi0gKSAhbmVnX25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb2ZfaW50NjNfbnMgbnNcbiAgICAgICAgICA7O1xuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHNleHApXG4gICAgICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWVfbnMuU3Bhbi5TdGFibGUuVjIudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUMClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5vcGVuIHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlMFxuZW5kXG5cbmxldCB0b19zdHJpbmcgPSBTdGFibGUuVjIudG9fc3RyaW5nXG5sZXQgb2Zfc3RyaW5nID0gU3RhYmxlLlYyLm9mX3N0cmluZ1xubGV0IHNleHBfb2ZfdCA9IFN0YWJsZS5WMi5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBTdGFibGUuVjIudF9vZl9zZXhwXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTdGFibGUuVjIudF9zZXhwX2dyYW1tYXJcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogRnVuY3Rpb25zIHJlcXVpcmVkIGJ5IFtSb2J1c3RseV9jb21wYXJhYmxlXTogYWxsb3dzIGZvciBbcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXVxuICAgZ3JhbnVsYXJpdHkuXG5cbiAgIEEgbWljcm9zZWNvbmQgaXMgYSByZWFzb25hYmxlIGdyYW51bGFyaXR5IGJlY2F1c2UgdGhlcmUgaXMgdmVyeSBsaXR0bGUgbmV0d29ya1xuICAgYWN0aXZpdHkgdGhhdCBjYW4gYmUgbWVhc3VyZWQgdG8gc3ViLW1pY3Jvc2Vjb25kIHJlc29sdXRpb24uICopXG5sZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gbWljcm9zZWNvbmRcbmxldCAoID49LiApIHQgdSA9IHQgPj0gSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8PS4gKSB0IHUgPSB0IDw9IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPS4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpIDw9IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxubGV0ICggPi4gKSB0IHUgPSB0ID4gSW50NjMuKHUgKyByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8LiApIHQgdSA9IHQgPCBJbnQ2My4odSAtIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDw+LiApIHQgdSA9IEludDYzLihhYnMgKHQgLSB1KSkgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCByb2J1c3RseV9jb21wYXJlIHQgdSA9IGlmIHQgPC4gdSB0aGVuIC0xIGVsc2UgaWYgdCA+LiB1IHRoZW4gMSBlbHNlIDBcblxuKCogV2UgZG9uJ3QganVzdCBjb252ZXJ0IHRvIFtUaW1lLlNwYW4udF0gYW5kIHVzZSB0aGUgY29udmVyc2lvbiB0aGVyZSBiZWNhdXNlIG91clxuICAgW3RvX3NwYW5dIGNvbnZlcnNpb24gaXMgbGltaXRlZCB0byBtaWNyb3NlY29uZCBwcmVjaXNpb24uICopXG5sZXQgdG9fc3RyaW5nX2h1bVxuICAgICAgPyhkZWxpbWl0ZXIgPSAnXycpXG4gICAgICA/KGRlY2ltYWxzID0gMylcbiAgICAgID8oYWxpZ25fZGVjaW1hbCA9IGZhbHNlKVxuICAgICAgP3VuaXRfb2ZfdGltZVxuICAgICAgdFxuICA9XG4gIGxldCBmbG9hdCwgc3VmZml4ID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWUgdW5pdF9vZl90aW1lIH5kZWZhdWx0Oih0b191bml0X29mX3RpbWUgdCkgd2l0aFxuICAgIHwgRGF5IC0+IHRvX2RheSB0LCBcImRcIlxuICAgIHwgSG91ciAtPiB0b19ociB0LCBcImhcIlxuICAgIHwgTWludXRlIC0+IHRvX21pbiB0LCBcIm1cIlxuICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0LCBcInNcIlxuICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdCwgXCJtc1wiXG4gICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0LCBcInVzXCJcbiAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdCwgXCJuc1wiXG4gIGluXG4gIGxldCBwcmVmaXggPVxuICAgIEZsb2F0LnRvX3N0cmluZ19odW0gZmxvYXQgfmRlbGltaXRlciB+ZGVjaW1hbHMgfnN0cmlwX3plcm86KG5vdCBhbGlnbl9kZWNpbWFsKVxuICBpblxuICBsZXQgc3VmZml4ID1cbiAgICBpZiBhbGlnbl9kZWNpbWFsICYmIEludC4oID0gKSAoU3RyaW5nLmxlbmd0aCBzdWZmaXgpIDEgdGhlbiBzdWZmaXggXiBcIiBcIiBlbHNlIHN1ZmZpeFxuICBpblxuICBwcmVmaXggXiBzdWZmaXhcbjs7XG5cbmxldCBzaW5jZV91bml4X2Vwb2NoICgpID0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSB8PiBvZl9pbnQ2M19uc1xuXG5sZXQgcmFuZG9tID9zdGF0ZSAoKSA9XG4gIEludDYzLnJhbmRvbSA/c3RhdGUgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICsgSW50NjMub25lKVxuICAtIEludDYzLnJhbmRvbSA/c3RhdGUgKG5lZyBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbjs7XG5cbmxldCByYW5kb21pemUgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0IH5wZXJjZW50ID1cbiAgU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IHN0YXRlIH5wZXJjZW50IH5zY2FsZVxuOztcblxubGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgbGV0ICh7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9IDogUGFydHMudCkgPSB0b19wYXJ0cyB0IGluXG4gIFNwYW5faGVscGVycy5zaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5uc1xuOztcblxubGV0IGdlbl9pbmNsID0gSW50NjMuZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gSW50NjMuZ2VuX3VuaWZvcm1faW5jbFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IG1vZHVsZV9uYW1lXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kKVxuXG50eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IFN0YWJsZS5WMi5jb21wYXJhdG9yXG4gIGVuZClcblxuKCogcmUtaW5jbHVkZSBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhbmQgaXRzIGNvbXBhcmlzb25zIHRvIHNoYWRvdyB0aGVcbiAgIHVuLWlubGluZWFibGUgb25lcyBmcm9tIFtDb21wYXJhYmxlXSAqKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaGFsZl9taWNyb3NlY29uZCA9IEludDYzLm9mX2ludCA1MDBcbmxldCBuZWFyZXN0X21pY3Jvc2Vjb25kIHQgPSBJbnQ2My4oKHRvX2ludDYzX25zIHQgKyBoYWxmX21pY3Jvc2Vjb25kKSAvJSBvZl9pbnQgMTAwMClcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiU3Bhbi50IGV4Y2VlZHMgbGltaXRzXCJcbiAgICAgICAgKHQgOiB0KVxuICAgICAgICAobWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgOiB0KVxuICAgICAgICAobWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgOiB0KV1cbjs7XG5cbmxldCBjaGVja19yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICBpZiB0IDwgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgfHwgdCA+IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW4gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHRcbiAgZWxzZSB0XG47O1xuXG5sZXQgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBTcGFuX2Zsb2F0Lm9mX3VzIChJbnQ2My50b19mbG9hdCAobmVhcmVzdF9taWNyb3NlY29uZCAoY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0KSkpXG47O1xuXG5sZXQgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgcyA9XG4gIGlmIFNwYW5fZmxvYXQuKCA+ICkgcyBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHx8IFNwYW5fZmxvYXQuKCA8ICkgcyBtaW5fc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZV9ucy5TcGFuIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBzcGFuXCJcbiAgICAgIHNcbiAgICAgIFslc2V4cF9vZjogU3Bhbl9mbG9hdC50XTtcbiAgKCogVXNpbmcgW1RpbWUuU3Bhbi50b19zZWNdIChiZWluZyB0aGUgaWRlbnRpdHkpIHNvIHRoYXRcbiAgICAgd2UgbWFrZSBkb24ndCBhcHBseSB0b28gbWFueSBjb252ZXJzaW9uXG4gICAgIC0gVG9vIG1hbnkgOiBgW1NwYW4udF0gLT4gW2FdIC0+IFt0XWBcbiAgICAgLSBPbmx5IE9uZSA6IGBbU3Bhbi50XT09W2FdIC0+IFt0XWAuICopXG4gIG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiAoU3Bhbl9mbG9hdC50b19zZWMgcylcbjs7XG5cbmxldCBtaW5fdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1pbl92YWx1ZVxubGV0IG1heF92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2ZfaW50NjNfbnMgSW50NjMubWF4X3ZhbHVlXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBvZl9wYXJ0cyA9IG9mX3BhcnRzXG4gIGxldCB0b19wYXJ0cyA9IHRvX3BhcnRzXG5lbmRcblxuKCogTGVnYWN5IGRlZmluaXRpb25zIGJhc2VkIG9uIHJvdW5kaW5nIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAqKVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBvZl9zcGFuID0gb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5sZXQgdG9fc3BhbiA9IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIHR5cGUgc3BhbiA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB0ID0gSW50NjMudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG4gICgqIG5hbm9zZWNvbmRzIG9yIG5vbmUgKilcblxuICBsZXQgbm9uZSA9IEludDYzLm1pbl92YWx1ZVxuICBsZXQgaXNfbm9uZSB0ID0gSW50NjMuKHQgPSBub25lKVxuICBsZXQgaXNfc29tZSB0ID0gSW50NjMuKHQgPD4gbm9uZSlcbiAgbGV0IHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuID0gaXNfc29tZSAodG9faW50NjNfbnMgc3BhbilcblxuICBsZXRbQGNvbGRdIHJhaXNlX3NvbWVfZXJyb3Igc3BhbiA9XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlNwYW4uT3B0aW9uLnNvbWUgdmFsdWUgbm90IHJlcHJlc2VudGFibGVcIiAoc3BhbiA6IHNwYW4pXVxuICA7O1xuXG4gIGxldCBzb21lIHNwYW4gPVxuICAgIGlmIHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuIHRoZW4gdG9faW50NjNfbnMgc3BhbiBlbHNlIHJhaXNlX3NvbWVfZXJyb3Igc3BhblxuICA7O1xuXG4gIGxldCB1bmNoZWNrZWRfdmFsdWUgdCA9IG9mX2ludDYzX25zIHRcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bmNoZWNrZWRfdmFsdWUgdClcblxuICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgIGlmIGlzX3NvbWUgdFxuICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJTcGFuLk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICA7O1xuXG4gIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHQgLT4gc29tZSB0XG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG9mX2ludDYzX25zIHQpXG5cbiAgbW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gICAgbW9kdWxlIFNvbWUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHNwYW5cblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOnNvbWVfaXNfcmVwcmVzZW50YWJsZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBxdWlja2NoZWNrX29ic2VydmVyXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBxdWlja2NoZWNrX3Nocmlua2VyIH5mOnNvbWVfaXNfcmVwcmVzZW50YWJsZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IFNvbWUudCBvcHRpb24gW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3IgfmY6b2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOm9mX29wdGlvblxuICAgICAgfmZfaW52ZXJzZTp0b19vcHRpb25cbiAgOztcblxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5jaGVja2VkX3ZhbHVlXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGJpbl9pb11cblxuICAgICAgICBsZXQgdjFfc29tZSBzcGFuID1cbiAgICAgICAgICBhc3NlcnQgKHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuKTtcbiAgICAgICAgICB0b19pbnQ2M19ucyBzcGFuXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwX29mOiBTdGFibGUuVjEudCBvcHRpb25dICh0b19vcHRpb24gdClcbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzID0gb2Zfb3B0aW9uIChbJW9mX3NleHA6IFN0YWJsZS5WMS50IG9wdGlvbl0gcylcbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biBpID0gaWYgaXNfbm9uZSBpIHRoZW4gbm9uZSBlbHNlIHYxX3NvbWUgKG9mX2ludDYzX25zIGkpXG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICAgIG9mX2ludDYzX2V4blxuICAgICAgICAgICAgdG9faW50NjNcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgYmluX2lvXVxuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAgICAgU2V4cC5MaXN0XG4gICAgICAgICAgICAoaWYgaXNfbm9uZSB0IHRoZW4gW10gZWxzZSBbIFN0YWJsZS5WMi5zZXhwX29mX3QgKHVuY2hlY2tlZF92YWx1ZSB0KSBdKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IGZhaWwgKCkgPVxuICAgICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgICBcIlRpbWVfbnMuU3Bhbi5PcHRpb24uU3RhYmxlLlYyLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGEgTGlzdCBvZiAwLTEgQXRvbVwiXG4gICAgICAgICAgICAgIHNleHBcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIF8gLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU2V4cC5MaXN0IGxpc3QgLT5cbiAgICAgICAgICAgIChtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICAgICB8IFtdIC0+IG5vbmVcbiAgICAgICAgICAgICB8IFsgU2V4cC5BdG9tIHggXSAtPlxuICAgICAgICAgICAgICAgc29tZVxuICAgICAgICAgICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsICgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gaSA9IGlcbiAgICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICAgIEludDYzLlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgICAgb2ZfaW50NjNfZXhuXG4gICAgICAgICAgICB0b19pbnQ2M1xuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgc2V4cF9vZl90ID0gU3RhYmxlLlYyLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYyLnRfb2Zfc2V4cFxuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvLCBoYXNoXVxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuLk9wdGlvblwiXG5cbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgZW5kKVxuICAgIGVuZClcblxuICBpbmNsdWRlIChJbnQ2MyA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlMFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBPcHRpb24uU3RhYmxlLlYxXG4gICAgbW9kdWxlIFYyID0gT3B0aW9uLlN0YWJsZS5WMlxuICBlbmRcbmVuZFxuXG5sZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNwYW4gPSBTcGFuX25zXG5cbnR5cGUgdW5kZXJseWluZyA9IEludDYzLnRcbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB3YWxsLWNsb2NrIG1pZG5pZ2h0ICopIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGUgKFNwYW4gOiBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIHRcblxuXG5sZXQgc3RhcnRfb2ZfZGF5IDogdCA9IFNwYW4uemVyb1xubGV0IHN0YXJ0X29mX25leHRfZGF5IDogdCA9IFNwYW4uZGF5XG5sZXQgYXBwcm94aW1hdGVfZW5kX29mX2RheSA9IFNwYW4uKCAtICkgc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5uYW5vc2Vjb25kXG5sZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IHRcblxubGV0W0Bjb2xkXSBpbnB1dF9vdXRfb2ZfYm91bmRzIHNwYW4gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbnB1dCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgfl86KHNwYW4gOiBTcGFuLnQpXVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBpc19pbnZhbGlkIHNwYW4gPVxuICAoKiBXaHkgd2UgdXNlIFtTcGFuLiggPiApXSByYXRoZXIgdGhhbiBbKCA+PSApXSBiZWxvdzpcblxuICAgICBXZSBhbGxvdyB0byByZXByZXNlbnQgdGhlIGVuZC1vZi1kYXkgc2VudGluZWwgdmFsdWUgKFsyNC4wMDAwMDAwMDBoXSksIHdoaWNoIGlzIG5vdFxuICAgICBpdHNlbGYgYSB2YWxpZCBjbG9jayBmYWNlIHRpbWUuICBIb3dldmVyLCBzaW5jZSB2YWxpZCBjbG9jayBmYWNlIHRpbWVzIHJlYWRpbHlcbiAgICAgcm91bmQgdXAgdG8gaXQsIGl0J3MgYmV0dGVyIHRvIGFsbG93IGl0IHRvIGJlIHJlcHJlc2VudGVkLiAqKVxuICBTcGFuLiggPCApIHNwYW4gc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA+ICkgc3BhbiBzdGFydF9vZl9uZXh0X2RheVxuOztcblxubGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPSBub3QgKGlzX2ludmFsaWQgc3BhbilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IHNwYW5cblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBzcGFuID1cbiAgaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuIGVsc2Ugc3BhblxuOztcblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCBzcGFuID0gaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gTm9uZSBlbHNlIFNvbWUgc3BhblxubGV0IGFkZF9leG4gdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLiggKyApIHQgc3BhbilcbmxldCBzdWJfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgYWRkIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgbmV4dCB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLm5leHQgdClcbmxldCBwcmV2IHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4ucHJldiB0KVxubGV0IGRpZmYgdCB1ID0gU3Bhbi4oIC0gKSB0IHVcblxubGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgKCogU2ltaWxhciB0byBbVGltZS5PZmRheS5jcmVhdGVdLCBpZiB3ZSBkZXRlY3QgYSBsZWFwIHNlY29uZCB3ZSBzdHJpcCBvZmYgYWxsXG4gICAgIHN1Yi1zZWNvbmQgZWxlbWVudHMgc28gdGhhdCBISDpNTTo2MC5YWFhYWFhYWFggaXMgYWxsIG1hcHBlZCB0byBISDpNTTo2MC4gKilcbiAgbGV0IG1zLCB1cywgbnMgPVxuICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICB8IF8gLT4gbXMsIHVzLCBuc1xuICBpblxuICBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTcGFuLlN0YWJsZS5WMi50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTcGFuLlN0YWJsZS5WMiA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFNwYW4uU3RhYmxlLlYyLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgIGxldCB0b19zdHJpbmdfd2l0aF91bml0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCBtb2QgKSA9IEludDYzLnJlbSBpblxuICAgICAgbGV0ICggISApID0gSW50NjMub2ZfaW50IGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGZ1biB0IH51bml0IC0+XG4gICAgICAgIGlmIFNwYW4uKCA8ICkgdCBzdGFydF9vZl9kYXkgfHwgU3Bhbi4oIDwgKSBzdGFydF9vZl9uZXh0X2RheSB0XG4gICAgICAgIHRoZW4gXCJJbmNvcnJlY3QgZGF5XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHNpeHR5ID0gITYwIGluXG4gICAgICAgICAgbGV0IHRob3VzYW5kID0gITEwMDAgaW5cbiAgICAgICAgICBsZXQgbnMgPSBTcGFuLnRvX2ludDYzX25zIHQgaW5cbiAgICAgICAgICBsZXQgdXMgPSBucyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG5zID0gbnMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbXMgPSB1cyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IHVzID0gdXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgcyA9IG1zIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgbXMgPSBtcyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBtID0gcyAvIHNpeHR5IGluXG4gICAgICAgICAgbGV0IHMgPSBzIG1vZCBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IGggPSBtIC8gc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBtID0gbSBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCB1bml0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCAoYE5hbm9zZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgU2Vjb25kKSBhcyB1bml0IC0+IHVuaXRcbiAgICAgICAgICAgIHwgYE1pbnV0ZV9vcl9sZXNzIC0+XG4gICAgICAgICAgICAgIGlmIG5zIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTmFub3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHVzIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBtcyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgcyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYFNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGBNaW51dGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICB8IGBNaW51dGUgLT4gNVxuICAgICAgICAgICAgfCBgU2Vjb25kIC0+IDhcbiAgICAgICAgICAgIHwgYE1pbGxpc2Vjb25kIC0+IDEyXG4gICAgICAgICAgICB8IGBNaWNyb3NlY29uZCAtPiAxNVxuICAgICAgICAgICAgfCBgTmFub3NlY29uZCAtPiAxOFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczowIGg7XG4gICAgICAgICAgQnl0ZXMuc2V0IHN0ciAyICc6JztcbiAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczozIG07XG4gICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICB8IGBNaW51dGUgLT4gKClcbiAgICAgICAgICAgfCAoYFNlY29uZCB8IGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA1ICc6JztcbiAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczo2IHM7XG4gICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICB8IGBTZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgfCAoYE1pbGxpc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICBCeXRlcy5zZXQgc3RyIDggJy4nO1xuICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjkgbXM7XG4gICAgICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAoKVxuICAgICAgICAgICAgICAgICB8IChgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjEyIHVzO1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgfCBgTmFub3NlY29uZCAtPiBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxNSBucykpKSk7XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpzdHIpXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9uYW5vc2Vjb25kcyBzdHJpbmcgfnBvcyB+dW50aWwgPVxuICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgIGxldCBkaWdpdHMgPSByZWYgMCBpblxuICAgICAgbGV0IG51bV9kaWdpdHMgPSByZWYgMCBpblxuICAgICAgbGV0IHBvcyA9IHJlZiBwb3MgaW5cbiAgICAgICgqIHJlYWQgdXAgdG8gMTAgZGlnaXRzOyBzdG9yZSB0aGUgZmlyc3QgOSwgdXNlIHRoZSAxMHRoIHRvIHJvdW5kICopXG4gICAgICB3aGlsZSAhcG9zIDwgdW50aWwgJiYgIW51bV9kaWdpdHMgPCAxMCBkb1xuICAgICAgICBsZXQgYyA9IHN0cmluZy5bIXBvc10gaW5cbiAgICAgICAgaWYgQ2hhci5pc19kaWdpdCBjXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGluY3IgbnVtX2RpZ2l0cztcbiAgICAgICAgICBpZiAhbnVtX2RpZ2l0cyA8IDEwXG4gICAgICAgICAgdGhlbiBkaWdpdHMgOj0gKCFkaWdpdHMgKiAxMCkgKyBDaGFyLmdldF9kaWdpdF9leG4gY1xuICAgICAgICAgIGVsc2UgaWYgQ2hhci5nZXRfZGlnaXRfZXhuIGMgPj0gNVxuICAgICAgICAgIHRoZW4gaW5jciBkaWdpdHNcbiAgICAgICAgICBlbHNlICgpKTtcbiAgICAgICAgaW5jciBwb3NcbiAgICAgIGRvbmU7XG4gICAgICAoKiBpZiB0aGVyZSBhcmUgbWlzc2luZyBkaWdpdHMsIGFkZCB6ZXJvZXMgKilcbiAgICAgIGlmICFudW1fZGlnaXRzIDwgOSB0aGVuIGRpZ2l0cyA6PSAhZGlnaXRzICogSW50LnBvdyAxMCAoOSAtICFudW1fZGlnaXRzKTtcbiAgICAgICFkaWdpdHNcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgbmFub3NlY29uZHMgPVxuICAgICAgICBpZiBJbnQuZXF1YWwgc3Vic2VjX2xlbiAwXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlXG4gICAgICAgICAgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3M6KHN1YnNlY19wb3MgKyAxKSB+dW50aWw6KHN1YnNlY19wb3MgKyBzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCBuYW5vc2Vjb25kcylcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4uc2Vjb25kIHNlYylcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4ubWludXRlIG1pbilcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4uaG91ciBocilcbiAgICAgIHw+IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IE9mZGF5X2hlbHBlcnMucGFyc2Ugc3RyaW5nIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwIDogdCA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImV4cGVjdGVkIGFuIGF0b21cIiBzZXhwXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICBsZXQgb3BlbiBTZXhwbGliIGluXG4gICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgIChTZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hciA6IHQgU2V4cF9ncmFtbWFyLnQpXG4gICAgICAgIH5rZXk6U2V4cF9ncmFtbWFyLnR5cGVfbmFtZV90YWdcbiAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5UaW1lX25zLk9mZGF5LnRcIilcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyAodCA6IHQpID0gdG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBOYW5vc2Vjb25kXG4gICAgbGV0IHNleHBfb2ZfdCAodCA6IHQpID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgICBsZXQgdG9faW50NjMgdCA9IFNwYW5fbnMuU3RhYmxlLlYyLnRvX2ludDYzIHRcbiAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW5fbnMuU3RhYmxlLlYyLm9mX2ludDYzX2V4biB0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChcbiAgU3RhYmxlLlYxIDpcbiAgICBDb21wYXJhdG9yLlNcbiAgd2l0aCB0eXBlIHQgOj0gdFxuICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0YWJsZS5WMSA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICBpbmNsdWRlIChTdGFibGUuVjEgOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lX25zLk9mZGF5XCJcbiAgZW5kKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RhYmxlLlYxLnRfc2V4cF9ncmFtbWFyXG5sZXQgdG9fbWljcm9zZWNvbmRfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaWNyb3NlY29uZFxubGV0IHRvX21pbGxpc2Vjb25kX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWlsbGlzZWNvbmRcbmxldCB0b19zZWNfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBTZWNvbmRcbmxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWludXRlX29yX2xlc3NcblxubGV0IG9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgPVxuICB0cnlcbiAgICBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpTdGFibGUuVjEuY3JlYXRlX2Zyb21fcGFyc2VkXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkOiBjYW5ub3QgcGFyc2Ugc3RyaW5nXCJcbiAgICAgICAgICB+XzooU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbiA6IHN0cmluZylcbiAgICAgICAgICB+XzooZXhuIDogZXhuKV1cbjs7XG5cbmxldCBldmVyeSA9XG4gIGxldCByZWMgZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjID1cbiAgICAoKiBBc3N1bWVzIFtzcGFuXSwgW3N0YXJ0XSwgYW5kIFtzdG9wXSBhcmUgdmFsaWQgb2ZkYXlzLiBBc3N1bWVzIFtzdGFydCA8IHN0b3BdLlxuICAgICAgIEFzc3VtZXMgW3NwYW4gPiAwXS4gKilcbiAgICBsZXQgYWNjID0gc3RhcnQgOjogYWNjIGluXG4gICAgbGV0IHN0YXJ0ID0gU3Bhbi4oICsgKSBzdGFydCBzcGFuIGluXG4gICAgaWYgU3Bhbi4oID4gKSBzdGFydCBzdG9wICgqIGNhbm5vdCBvdmVyZmxvdyAqKVxuICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgZWxzZSBldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2NcbiAgaW5cbiAgKCogaW50ZXJuYWwgW2V2ZXJ5XSBuYW1lZCB0byBzaG93IHVwIGluIHN0YWNrIHRyYWNlcyAqKVxuICBsZXQgZXZlcnkgc3BhbiB+c3RhcnQgfnN0b3AgPVxuICAgIGlmIFNwYW4uKCA+ICkgc3RhcnQgc3RvcFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbVGltZV9ucy5PZmRheS5ldmVyeV0gY2FsbGVkIHdpdGggW3N0YXJ0XSA+IFtzdG9wXVwiIChzdGFydCA6IHQpIChzdG9wIDogdCldXG4gICAgZWxzZSBpZiBTcGFuLiggPD0gKSBzcGFuIFNwYW4uemVyb1xuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiW1RpbWVfbnMuT2ZkYXkuZXZlcnldIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIHNwYW5cIiB+Xzooc3BhbiA6IFNwYW4udCldXG4gICAgZWxzZSBpZiBpc19pbnZhbGlkIHNwYW5cbiAgICB0aGVuIE9rIFsgc3RhcnQgXVxuICAgIGVsc2UgT2sgKGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjYzpbXSlcbiAgaW5cbiAgZXZlcnlcbjs7XG5cbmxldCBzbWFsbF9kaWZmID1cbiAgbGV0IGhvdXIgPSBTcGFuLnRvX2ludDYzX25zIFNwYW4uaG91ciBpblxuICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgIGxldCBvZmRheTIgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTIpIGluXG4gICAgbGV0IGRpZmYgPSBvZmRheTEgLSBvZmRheTIgaW5cbiAgICAoKiAgZDEgaXMgaW4gKC1ob3VyOyBob3VyKSAqKVxuICAgIGxldCBkMSA9IEludDYzLnJlbSBkaWZmIGhvdXIgaW5cbiAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICBsZXQgZDIgPSBJbnQ2My5yZW0gKGQxICsgaG91cikgaG91ciBpblxuICAgIGxldCBkID0gaWYgZDIgPiBob3VyIC8gSW50NjMub2ZfaW50IDIgdGhlbiBkMiAtIGhvdXIgZWxzZSBkMiBpblxuICAgIFNwYW4ub2ZfaW50NjNfbnMgZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwic21hbGxfZGlmZlwiID1cbiAgbGV0IHRlc3QgeCB5ID1cbiAgICBsZXQgZGlmZiA9IHNtYWxsX2RpZmYgeCB5IGluXG4gICAgcHJpbnRmICFcInNtYWxsX2RpZmYgJXMgJXMgPSAlc1xcblwiICh0b19zdHJpbmcgeCkgKHRvX3N0cmluZyB5KSAoU3Bhbi50b19zdHJpbmcgZGlmZilcbiAgaW5cbiAgbGV0IGV4YW1wbGVzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biAoeCwgeSkgLT4gb2Zfc3RyaW5nIHgsIG9mX3N0cmluZyB5KVxuICAgICAgWyBcIjEyOjAwXCIsIFwiMTI6MDVcIjsgXCIxMjo1OFwiLCBcIjEzOjAyXCI7IFwiMDA6NTJcIiwgXCIyMzoxOVwiOyBcIjAwOjAwXCIsIFwiMjQ6MDBcIiBdXG4gIGluXG4gIExpc3QuaXRlciBleGFtcGxlcyB+ZjooZnVuICh4LCB5KSAtPlxuICAgIHRlc3QgeCB5O1xuICAgIHRlc3QgeSB4KTtcbiAgWyVleHBlY3RcbiAgICB7fFxuICAgIHNtYWxsX2RpZmYgMTI6MDA6MDAuMDAwMDAwMDAwIDEyOjA1OjAwLjAwMDAwMDAwMCA9IC01bVxuICAgIHNtYWxsX2RpZmYgMTI6MDU6MDAuMDAwMDAwMDAwIDEyOjAwOjAwLjAwMDAwMDAwMCA9IDVtXG4gICAgc21hbGxfZGlmZiAxMjo1ODowMC4wMDAwMDAwMDAgMTM6MDI6MDAuMDAwMDAwMDAwID0gLTRtXG4gICAgc21hbGxfZGlmZiAxMzowMjowMC4wMDAwMDAwMDAgMTI6NTg6MDAuMDAwMDAwMDAwID0gNG1cbiAgICBzbWFsbF9kaWZmIDAwOjUyOjAwLjAwMDAwMDAwMCAyMzoxOTowMC4wMDAwMDAwMDAgPSAtMjdtXG4gICAgc21hbGxfZGlmZiAyMzoxOTowMC4wMDAwMDAwMDAgMDA6NTI6MDAuMDAwMDAwMDAwID0gMjdtXG4gICAgc21hbGxfZGlmZiAwMDowMDowMC4wMDAwMDAwMDAgMjQ6MDA6MDAuMDAwMDAwMDAwID0gMHNcbiAgICBzbWFsbF9kaWZmIDI0OjAwOjAwLjAwMDAwMDAwMCAwMDowMDowMC4wMDAwMDAwMDAgPSAwcyB8fV1cbjs7XG5cbmxldCBnZW5faW5jbCA9IFNwYW4uZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gU3Bhbi5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCBzdGFydF9vZl9kYXkgc3RhcnRfb2ZfbmV4dF9kYXlcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSAoU3BhbiA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5ncyAqKVxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG5sZXQgdG9fbWlsbGlzZWNfc3RyaW5nID0gdG9fbWlsbGlzZWNvbmRfc3RyaW5nXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG5vdyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xubW9kdWxlIE9mZGF5ID0gT2ZkYXlfbnNcblxudHlwZSB0ID0gU3Bhbi50ICgqIHNpbmNlIHRoZSBVbml4IGVwb2NoICgxOTcwLTAxLTAxIDAwOjAwOjAwIFVUQykgKilcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnQgPSBTcGFuLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuaW5jbHVkZSAoU3BhbiA6IFF1aWNrY2hlY2suU19yYW5nZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5sZXQgbm93ID0gU3Bhbi5zaW5jZV91bml4X2Vwb2NoXG5sZXQgZXF1YWwgPSBTcGFuLmVxdWFsXG5sZXQgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgZXBvY2ggPSBTcGFuLnplcm9cbmxldCBhZGQgPSBTcGFuLiggKyApXG5sZXQgc3ViID0gU3Bhbi4oIC0gKVxubGV0IGRpZmYgPSBTcGFuLiggLSApXG5sZXQgYWJzX2RpZmYgdCB1ID0gU3Bhbi5hYnMgKGRpZmYgdCB1KVxubGV0IG1heCA9IFNwYW4ubWF4XG5sZXQgbWluID0gU3Bhbi5taW5cbmxldCBuZXh0ID0gU3Bhbi5uZXh0XG5sZXQgcHJldiA9IFNwYW4ucHJldlxubGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggdCA9IHRcbmxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoIHMgPSBzXG5sZXQgdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCA6IEludDYzLnQgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG5sZXRbQGlubGluZV0gb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggaSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2ZfaW50NjNfbnMgaSlcbmxldFtAY29sZF0gb3ZlcmZsb3cgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfbnM6IG92ZXJmbG93XCJdXG5sZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwgdDJcbmxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4gdDJcblxubGV0IGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA8ICkgc3VtIHggZWxzZSBTcGFuLiggPiApIHN1bSB4XG47O1xuXG5sZXQgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA+ICkgZGlmZiB4IGVsc2UgU3Bhbi4oIDwgKSBkaWZmIHhcbjs7XG5cbmxldCBhZGRfZXhuIHggeSA9XG4gIGxldCBzdW0gPSBhZGQgeCB5IGluXG4gIGlmIGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtIHRoZW4gb3ZlcmZsb3cgKCkgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfZXhuIHggeSA9XG4gIGxldCBkaWZmID0gc3ViIHggeSBpblxuICBpZiBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmYgdGhlbiBvdmVyZmxvdyAoKSBlbHNlIGRpZmZcbjs7XG5cbmxldCBhZGRfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgc3VtID0gYWRkIHggeSBpblxuICBpZiBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bVxuICB0aGVuXG4gICAgaWYgU3Bhbi4oeSA+IHplcm8pIHRoZW4gU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZSBlbHNlIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbiAgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgZGlmZiA9IHN1YiB4IHkgaW5cbiAgaWYgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmXG4gIHRoZW5cbiAgICBpZiBTcGFuLih5ID4gemVybykgdGhlbiBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIGVsc2UgU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuICBlbHNlIGRpZmZcbjs7XG5cbmxldCB0b19pbnRfbnNfc2luY2VfZXBvY2ggPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLnRvX2ludF9uc19zaW5jZV9lcG9jaDogdW5zdXBwb3J0ZWQgb24gMzJiaXQgbWFjaGluZXNcIlxuOztcblxubGV0IG9mX2ludF9uc19zaW5jZV9lcG9jaCBpID0gb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggKEludDYzLm9mX2ludCBpKVxuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWUgPVxuICBpZiBUaW1lX2Zsb2F0LiggPCApIHRpbWUgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBUaW1lX2Zsb2F0LiggPiApIHRpbWUgbWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHRpbWVcIlxuICAgICAgdGltZVxuICAgICAgWyVzZXhwX29mOiBUaW1lX2Zsb2F0LlN0YWJsZS5XaXRoX3V0Y19zZXhwLlYyLnRdXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHRpbWUgPVxuICBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4ub2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChUaW1lX2Zsb2F0LnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSkpXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHRpbWUgPVxuICBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWU7XG4gIG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi5vZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKFRpbWVfZmxvYXQudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lKSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWwgPVxuICBmYWlsd2l0aHNcbiAgICB+aGVyZTpbJWhlcmVdXG4gICAgXCJUaW1lX25zLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICBpbnRlcnZhbFxuICAgIFslc2V4cF9vZjogU3Bhbi50XVxuOztcblxubGV0IG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsID1cbiAgaWYgU3Bhbi4oIDw9ICkgaW50ZXJ2YWwgU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWw7XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPSBhZGQgYmFzZSAoU3Bhbi5zY2FsZV9pbnQ2MyBpbnRlcnZhbCAoU3Bhbi5kaXYgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPSBTcGFuLnJhbmRvbSA/c3RhdGUgKClcblxubW9kdWxlIFV0YyA6IHNpZ1xuICB2YWwgdG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiB0IC0+IERhdGUwLnQgKiBTcGFuLnRcbiAgdmFsIG9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogRGF0ZTAudCAtPiBTcGFuLnQgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIGEgcmVjcmVhdGlvbiBvZiB0aGUgc3lzdGVtIGNhbGwgZ210aW1lIHNwZWNpYWxpemVkIHRvIHRoZSBmaWVsZHMgd2UgbmVlZCB0aGF0IGFsc29cbiAgICAgZG9lc24ndCByZWx5IG9uIFVuaXguICopXG4gIGxldCB0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0ICggITwgKSBpID0gSW50NjMub2ZfaW50X2V4biBpIGluXG4gICAgbGV0ICggIT4gKSB0ID0gSW50NjMudG9faW50X2V4biB0IGluXG4gICAgbGV0IG5zX3NpbmNlX2Vwb2NoID0gdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCBpblxuICAgIGxldCBuc19wZXJfZGF5ID0gITw4Nl80MDAgKiAhPDFfMDAwXzAwMF8wMDAgaW5cbiAgICBsZXQgYXBwcm94X2RheXNfZnJvbV9lcG9jaCA9IG5zX3NpbmNlX2Vwb2NoIC8gbnNfcGVyX2RheSBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgaWYgbnNfc2luY2VfZXBvY2ggPCAhPDAgJiYgYXBwcm94X2RheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgPD4gbnNfc2luY2VfZXBvY2hcbiAgICAgIHRoZW4gYXBwcm94X2RheXNfZnJvbV9lcG9jaCAtICE8MVxuICAgICAgZWxzZSBhcHByb3hfZGF5c19mcm9tX2Vwb2NoXG4gICAgaW5cbiAgICBsZXQgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5ID0gbnNfc2luY2VfZXBvY2ggLSAobnNfcGVyX2RheSAqIGRheXNfZnJvbV9lcG9jaCkgaW5cbiAgICBsZXQgZGF0ZSA9XG4gICAgICBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaCAhPmRheXNfZnJvbV9lcG9jaCB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICBpblxuICAgIGxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IFNwYW4ub2ZfaW50NjNfbnMgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgZGF0ZSwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9XG4gICAgYXNzZXJ0IChcbiAgICAgIFNwYW4uKCA+PSApIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IFNwYW4uemVyb1xuICAgICAgJiYgU3Bhbi4oIDwgKSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBTcGFuLmRheSk7XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICBpblxuICAgIGxldCBzcGFuX2luX2RheXNfc2luY2VfZXBvY2ggPSBTcGFuLnNjYWxlX2ludCBTcGFuLmRheSBkYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4uKCArICkgc3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIG1vZHVsZSBPZmRheV9hc19zcGFuID0gc3RydWN0XG4gICAgICBvcGVuIEludC5PXG5cbiAgICAgIGxldCBzZWNvbmRzX3RvX3N0cmluZyBzZWNvbmRzX3NwYW4gPVxuICAgICAgICBsZXQgc2Vjb25kcyA9IFNwYW4udG9faW50X3NlYyBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgbGV0IGggPSBzZWNvbmRzIC8gMzYwMCBpblxuICAgICAgICBsZXQgbSA9IHNlY29uZHMgLyA2MCAlIDYwIGluXG4gICAgICAgIGxldCBzID0gc2Vjb25kcyAlIDYwIGluXG4gICAgICAgIHNwcmludGYgXCIlMDJkOiUwMmQ6JTAyZFwiIGggbSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHdvX2RpZ2l0X29mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBhc3NlcnQgKFN0cmluZy5sZW5ndGggc3RyaW5nID0gMiAmJiBTdHJpbmcuZm9yX2FsbCBzdHJpbmcgfmY6Q2hhci5pc19kaWdpdCk7XG4gICAgICAgIEludC5vZl9zdHJpbmcgc3RyaW5nXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2Vjb25kc19vZl9zdHJpbmcgc2Vjb25kc19zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgc2Vjb25kc19zdHJpbmcgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBoX3N0cmluZzsgbV9zdHJpbmc7IHNfc3RyaW5nIF0gLT5cbiAgICAgICAgICBsZXQgaCA9IHR3b19kaWdpdF9vZl9zdHJpbmcgaF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbSA9IHR3b19kaWdpdF9vZl9zdHJpbmcgbV9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgcyA9IHR3b19kaWdpdF9vZl9zdHJpbmcgc19zdHJpbmcgaW5cbiAgICAgICAgICBTcGFuLm9mX2ludF9zZWMgKCgoKGggKiA2MCkgKyBtKSAqIDYwKSArIHMpXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuc19vZl8xMDBfbXMgPSAxMDBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwX21zID0gMTBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzFfbXMgPSAxXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfdXMgPSAxMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTBfdXMgPSAxMF8wMDBcbiAgICAgIGxldCBuc19vZl8xX3VzID0gMV8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfbnMgPSAxMDBcbiAgICAgIGxldCBuc19vZl8xMF9ucyA9IDEwXG4gICAgICBsZXQgbnNfb2ZfMV9ucyA9IDFcblxuICAgICAgbGV0IHN1Yl9zZWNvbmRfdG9fc3RyaW5nIHN1Yl9zZWNvbmRfc3BhbiA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIGxldCBucyA9IFNwYW4udG9faW50NjNfbnMgc3ViX3NlY29uZF9zcGFuIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgaWYgbnMgPSAwXG4gICAgICAgIHRoZW4gXCJcIlxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAxZFwiIChucyAvIG5zX29mXzEwMF9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAyZFwiIChucyAvIG5zX29mXzEwX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwM2RcIiAobnMgLyBuc19vZl8xX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA0ZFwiIChucyAvIG5zX29mXzEwMF91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA1ZFwiIChucyAvIG5zX29mXzEwX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNmRcIiAobnMgLyBuc19vZl8xX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA3ZFwiIChucyAvIG5zX29mXzEwMF9ucylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA4ZFwiIChucyAvIG5zX29mXzEwX25zKVxuICAgICAgICBlbHNlIHNwcmludGYgXCIuJTA5ZFwiIG5zXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViX3NlY29uZF9vZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgICAgICB0aGVuIFNwYW4uemVyb1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZGlnaXRzID0gU3RyaW5nLmNob3BfcHJlZml4X2V4biBzdHJpbmcgfnByZWZpeDpcIi5cIiBpblxuICAgICAgICAgIGFzc2VydCAoU3RyaW5nLmZvcl9hbGwgZGlnaXRzIH5mOkNoYXIuaXNfZGlnaXQpO1xuICAgICAgICAgIGxldCBtdWx0aXBsaWVyID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sZW5ndGggZGlnaXRzIHdpdGhcbiAgICAgICAgICAgIHwgMSAtPiBuc19vZl8xMDBfbXNcbiAgICAgICAgICAgIHwgMiAtPiBuc19vZl8xMF9tc1xuICAgICAgICAgICAgfCAzIC0+IG5zX29mXzFfbXNcbiAgICAgICAgICAgIHwgNCAtPiBuc19vZl8xMDBfdXNcbiAgICAgICAgICAgIHwgNSAtPiBuc19vZl8xMF91c1xuICAgICAgICAgICAgfCA2IC0+IG5zX29mXzFfdXNcbiAgICAgICAgICAgIHwgNyAtPiBuc19vZl8xMDBfbnNcbiAgICAgICAgICAgIHwgOCAtPiBuc19vZl8xMF9uc1xuICAgICAgICAgICAgfCA5IC0+IG5zX29mXzFfbnNcbiAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCAoSW50Lm9mX3N0cmluZyBkaWdpdHMgKiBtdWx0aXBsaWVyKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHNwYW4gPVxuICAgICAgICBhc3NlcnQgKFNwYW4uKCA+PSApIHNwYW4gU3Bhbi56ZXJvICYmIFNwYW4uKCA8ICkgc3BhbiBTcGFuLmRheSk7XG4gICAgICAgIGxldCBzZWNvbmRzX3NwYW4gPSBzcGFuIHw+IFNwYW4udG9faW50X3NlYyB8PiBTcGFuLm9mX2ludF9zZWMgaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3BhbiA9IFNwYW4uKCAtICkgc3BhbiBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgc2Vjb25kc190b19zdHJpbmcgc2Vjb25kc19zcGFuIF4gc3ViX3NlY29uZF90b19zdHJpbmcgc3ViX3NlY29uZF9zcGFuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICBsZXQgcHJlZml4X2xlbiA9IDggaW5cbiAgICAgICAgKCogXCJISDpNTTpERFwiICopXG4gICAgICAgIGxldCBzdWZmaXhfbGVuID0gbGVuIC0gcHJlZml4X2xlbiBpblxuICAgICAgICBsZXQgc2Vjb25kc19zdHJpbmcgPSBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOjAgfmxlbjpwcmVmaXhfbGVuIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3N0cmluZyA9IFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6cHJlZml4X2xlbiB+bGVuOnN1ZmZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHNlY29uZHNfc3BhbiA9IHNlY29uZHNfb2Zfc3RyaW5nIHNlY29uZHNfc3RyaW5nIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3NwYW4gPSBzdWJfc2Vjb25kX29mX3N0cmluZyBzdWJfc2Vjb25kX3N0cmluZyBpblxuICAgICAgICBTcGFuLiggKyApIHNlY29uZHNfc3BhbiBzdWJfc2Vjb25kX3NwYW5cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgbGV0IGRhdGUsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gVXRjLnRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheV9hc19zcGFuLnRvX3N0cmluZyBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBeIFwiWlwiXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBkYXRlX3N0cmluZywgb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSA9IFN0cmluZy5sc3BsaXQyX2V4biBzdHJpbmcgfm9uOicgJyBpblxuICAgICAgbGV0IG9mZGF5X3N0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSB+c3VmZml4OlwiWlwiIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlX3N0cmluZyBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXlfYXNfc3Bhbi5vZl9zdHJpbmcgb2ZkYXlfc3RyaW5nIGluXG4gICAgICBVdGMub2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBvZmRheVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgZW5kKVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgIGxldCBvcGVuIFNleHBsaWIgaW5cbiAgICAgIFNleHBfZ3JhbW1hci50YWdcbiAgICAgICAgdF9zZXhwX2dyYW1tYXJcbiAgICAgICAgfmtleTpTZXhwX2dyYW1tYXIudHlwZV9uYW1lX3RhZ1xuICAgICAgICB+dmFsdWU6KEF0b20gXCJDb3JlLlRpbWVfbnMuQWx0ZXJuYXRlX3NleHAudFwiKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgKCogc2VlIHRlc3RzIGluIGxpYi9jb3JlL3Rlc3Qvc3JjL3Rlc3RfdGltZV9ucyB0aGF0IGVuc3VyZSBzdGFiaWxpdHkgb2YgdGhpc1xuICAgICAgICAgICByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IEFsdGVybmF0ZV9zZXhwLlN0YWJsZVxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG5cbigqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZS5tbCBmdW5jdG9yLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldCBUaW1lX25zXG4gICB0by9vZl9zdHJpbmcgd29ya2luZyAqKVxubW9kdWxlIFRvX2FuZF9vZl9zdHJpbmcgOiBzaWdcbiAgdmFsIG9mX2RhdGVfb2ZkYXkgOiB6b25lOlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiB0XG5cbiAgdmFsIG9mX2RhdGVfb2ZkYXlfcHJlY2lzZVxuICAgIDogIERhdGUudFxuICAgIC0+IE9mZGF5LnRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IFsgYE9uY2Ugb2YgdCB8IGBUd2ljZSBvZiB0ICogdCB8IGBOZXZlciBvZiB0IF1cblxuICB2YWwgdG9fZGF0ZV9vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50ICogT2ZkYXkudFxuXG4gIHZhbCB0b19kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICB0XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBEYXRlLnQgKiBPZmRheS50ICogWyBgT25seSB8IGBBbHNvX2F0IG9mIHQgfCBgQWxzb19za2lwcGVkIG9mIERhdGUudCAqIE9mZGF5LnQgXVxuXG4gIHZhbCB0b19kYXRlIDogdCAtPiB6b25lOlpvbmUudCAtPiBEYXRlLnRcbiAgdmFsIHRvX29mZGF5IDogdCAtPiB6b25lOlpvbmUudCAtPiBPZmRheS50XG4gIHZhbCBjb252ZXJ0IDogZnJvbV90ejpab25lLnQgLT4gdG9fdHo6Wm9uZS50IC0+IERhdGUudCAtPiBPZmRheS50IC0+IERhdGUudCAqIE9mZGF5LnRcbiAgdmFsIHJlc2V0X2RhdGVfY2FjaGUgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHV0Y19vZmZzZXQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IFNwYW4udFxuXG4gIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldF1cIl1cblxuICB2YWwgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCA6IHN0cmluZyAtPiB0XG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbdG9fc3RyaW5nX3V0Y11cIl1cbiAgdmFsIHRvX3N0cmluZ191dGMgOiB0IC0+IHN0cmluZ1xuICB2YWwgdG9fZmlsZW5hbWVfc3RyaW5nIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIG9mX2ZpbGVuYW1lX3N0cmluZyA6IHN0cmluZyAtPiB6b25lOlpvbmUudCAtPiB0XG4gIHZhbCB0b19zdHJpbmdfdHJpbW1lZCA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3NlY19zdHJpbmdfd2l0aF96b25lIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIG9mX2xvY2FsaXplZF9zdHJpbmcgOiB6b25lOlpvbmUudCAtPiBzdHJpbmcgLT4gdFxuXG4gIHZhbCBvZl9zdHJpbmdfZ2VuXG4gICAgOiAgZGVmYXVsdF96b25lOih1bml0IC0+IFpvbmUudClcbiAgICAtPiBmaW5kX3pvbmU6KHN0cmluZyAtPiBab25lLnQpXG4gICAgLT4gc3RyaW5nXG4gICAgLT4gdFxuXG4gIHZhbCB0b19zdHJpbmdfYWJzIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19hYnNfdHJpbW1lZCA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3BhcnRzIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuXG4gIHZhbCBvY2N1cnJlbmNlXG4gICAgOiAgWyBgRmlyc3RfYWZ0ZXJfb3JfYXQgfCBgTGFzdF9iZWZvcmVfb3JfYXQgXVxuICAgIC0+IHRcbiAgICAtPiBvZmRheTpPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgKCogdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lX2Zsb2F0MC5tbCwgY29udmVydGVkIGVub3VnaCB0byBnZXRcbiAgICAgVGltZV9ucyB0by9vZl9zdHJpbmcgd29ya2luZyAqKVxuICBtb2R1bGUgRGF0ZV9hbmRfb2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdCA9IFNwYW4ub2ZfaW50NjNfbnMgdFxuXG4gICAgbGV0IG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSA9XG4gICAgICBsZXQgZGF5cyA9XG4gICAgICAgIERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaCB8PiBJbnQ2My5vZl9pbnRcbiAgICAgIGluXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAoZGF5cyAqIFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXkpXG4gICAgICArIFNwYW4udG9faW50NjNfbnMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KVxuICAgIDs7XG5cbiAgICBsZXQgdG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0YyA9XG4gICAgICBzdWJfZXhuIChTcGFuLm9mX2ludDYzX25zIHJlbGF0aXZlKSBvZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IG9mX2Fic29sdXRlIGFic29sdXRlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgU3Bhbi50b19pbnQ2M19ucyAoYWRkX2V4biBhYnNvbHV0ZSBvZmZzZXRfZnJvbV91dGMpXG4gICAgOztcblxuICAgIGxldCBuc19wZXJfZGF5ID0gU3Bhbi50b19pbnQ2M19ucyBTcGFuLmRheVxuXG4gICAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICAgICgqIG5vdGUgVGltZV9ucyByZXByZXNlbnRzIGFib3V0IDE0NiB5ZWFycywgbm90IGVub3VnaCBmb3IgW0RhdGUuY3JlYXRlX2V4bl0gdG8gZXZlclxuICAgICAgICAgcmFpc2UgKilcbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ID0gdCAvIG5zX3Blcl9kYXkgaW5cbiAgICAgICgqIHdoZW4gW3RdIGlzIG5lZ2F0aXZlIHRoZSBpbnRlZ2VyIGRpdmlzaW9uIHRoYXQgY2FsY3VsYXRlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICAgICB3aWxsIGxlYXZlIHVzIG9uZSBkYXkgc2hvcnQgYmVjYXVzZSBpdCB0cnVuY2F0ZXMgKGUuZy4gLTEwMCAvIDg2XzQwMCA9IDAgYW5kIHdlXG4gICAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICAgIGlmIHQgPCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ICogbnNfcGVyX2RheVxuICAgICAgdGhlbiBJbnQ2My5wcmVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIDs7XG5cbiAgICBsZXQgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2luX25zID0gZGF5c19mcm9tX2Vwb2NoICogbnNfcGVyX2RheSBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9IHQgLSBkYXlzX2Zyb21fZXBvY2hfaW5fbnMgaW5cbiAgICAgIFNwYW4ub2ZfaW50NjNfbnMgcmVtYWluZGVyIHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBJbnQ2My50b19pbnRfZXhuIGRheXNfZnJvbV9lcG9jaFxuICAgICAgfD4gRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZSB0ID1cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgICAgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgICgqIFRoaXMgaW50ZXJmYWNlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lX2ludGYuWm9uZSwgY29udmVydGVkIGVub3VnaCB0byBnZXRcbiAgICAgICB0aGlzIHRvIHdvcmsuXG5cbiAgICAgICBUaGUgcHJvYmxlbSBpcyBoYXMgcmVmZXJlbmNlcyB0byBUaW1lMF9pbnRmLlMsIHdoaWNoIGlzIHRoZSBmdW5jdG9yIGlucHV0IGludGVyZmFjZVxuICAgICAgIHRoYXQgVGltZV9ucyBjdXJyZW50bHkgZG9lcyBub3Qgc2F0aXNmeS4gKilcblxuICAgIHR5cGUgdGltZSA9IHRcbiAgICB0eXBlIHQgPSBab25lLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIG1vZHVsZSBJbmRleCA9IFpvbmUuSW5kZXhcblxuICAgICgqIGNvcGllZCBmdW5jdGlvbnMgcmVleHBvcnRlZCBmcm9tIFpvbmUgKilcblxuICAgIHZhbCB1dGMgOiB0XG4gICAgdmFsIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcbiAgICB2YWwgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgOiB0IC0+IEluZGV4LnQgLT4gYm9vbFxuXG4gICAgKCogbmV3IGZ1bmN0aW9ucyBkZWZpbmVkIGJlbG93ICopXG5cbiAgICB2YWwgaW5kZXggOiB0IC0+IHRpbWUgLT4gSW5kZXgudFxuICAgIHZhbCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IDogdCAtPiBEYXRlX2FuZF9vZmRheS50IC0+IHRpbWVcbiAgICB2YWwgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSA6IHQgLT4gdGltZSAtPiBEYXRlX2FuZF9vZmRheS50XG4gICAgdmFsIG5leHRfY2xvY2tfc2hpZnQgOiB0IC0+IHN0cmljdGx5X2FmdGVyOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICAgIHZhbCBwcmV2X2Nsb2NrX3NoaWZ0IDogdCAtPiBhdF9vcl9iZWZvcmU6dGltZSAtPiAodGltZSAqIFNwYW4udCkgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdGltZSA9IHRcblxuICAgIGluY2x1ZGUgWm9uZVxuXG4gICAgbGV0IG9mX3NwYW5faW5fc2Vjb25kcyBzcGFuX2luX3NlY29uZHMgPVxuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHNwYW5faW5fc2Vjb25kc1xuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgOztcblxuICAgIGxldCBvZl90aW1lX2luX3NlY29uZHMgdGltZV9pbl9zZWNvbmRzID1cbiAgICAgIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVfaW5fc2Vjb25kc1xuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBTcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lID1cbiAgICAgIHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICAgICAgfD4gU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSA9XG4gICAgICBEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCByZWxhdGl2ZVxuICAgICAgfD4gU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkub2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4IHQgdGltZSA9IGluZGV4IHQgKHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lKVxuXG4gICAgbGV0IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCAodG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPVxuICAgICAgbWF0Y2ggaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCB3aXRoXG4gICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXhcbiAgICAgICAgICAsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4IClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoSW5kZXgubmV4dCBpbmRleClcbiAgICBsZXQgcHJldl9jbG9ja19zaGlmdCB0IH5hdF9vcl9iZWZvcmU6dGltZSA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuICAgIGxldCBuZXh0X2Nsb2NrX3NoaWZ0IHQgfnN0cmljdGx5X2FmdGVyOnRpbWUgPSBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcblxuICAgIGxldCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHQgdGltZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleCB0IHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4X29mX2RhdGVfYW5kX29mZGF5XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBEYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheSA9XG4gICAgbGV0IHJlbGF0aXZlID0gRGF0ZV9hbmRfb2ZkYXkub2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IGluXG4gICAgWm9uZS5hYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHpvbmUgcmVsYXRpdmVcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlIGRhdGUgb2ZkYXkgfnpvbmUgPVxuICAgICgqIFdlIGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBvbmUgem9uZSBzaGlmdCB3aXRoaW4gYSBnaXZlbiBsb2NhbCBkYXkuICAqKVxuICAgIGxldCBzdGFydF9vZl9kYXkgPSBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgT2ZkYXkuc3RhcnRfb2ZfZGF5IGluXG4gICAgbGV0IHByb3Bvc2VkX3RpbWUgPSBhZGQgc3RhcnRfb2ZfZGF5IChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSkgaW5cbiAgICBtYXRjaCBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6c3RhcnRfb2ZfZGF5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgIHwgU29tZSAoc2hpZnRfc3RhcnQsIHNoaWZ0X2Ftb3VudCkgLT5cbiAgICAgIGxldCBzaGlmdF9iYWNrd2FyZHMgPSBTcGFuLihzaGlmdF9hbW91bnQgPCB6ZXJvKSBpblxuICAgICAgKCogc3RhcnQgYW5kIGVuZCBvZiB0aGUgXCJwcm9ibGVtYXRpYyByZWdpb25cIiAqKVxuICAgICAgbGV0IHMsIGUgPVxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50LCBzaGlmdF9zdGFydFxuICAgICAgICBlbHNlIHNoaWZ0X3N0YXJ0LCBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50XG4gICAgICBpblxuICAgICAgaWYgcHJvcG9zZWRfdGltZSA8IHNcbiAgICAgIHRoZW4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgICAgZWxzZSBpZiBzIDw9IHByb3Bvc2VkX3RpbWUgJiYgcHJvcG9zZWRfdGltZSA8IGVcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYFR3aWNlIChwcm9wb3NlZF90aW1lLCBzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gICAgICAgIGVsc2UgYE5ldmVyIHNoaWZ0X3N0YXJ0XG4gICAgICBlbHNlIGBPbmNlIChzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gIDs7XG5cbiAgbW9kdWxlIERhdGVfY2FjaGUgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID1cbiAgICAgIHsgbXV0YWJsZSB6b25lIDogWm9uZS50XG4gICAgICA7IG11dGFibGUgY2FjaGVfc3RhcnRfaW5jbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV91bnRpbF9leGNsIDogdFxuICAgICAgOyBtdXRhYmxlIGVmZmVjdGl2ZV9kYXlfc3RhcnQgOiB0XG4gICAgICA7IG11dGFibGUgZGF0ZSA6IERhdGUwLnRcbiAgICAgIH1cbiAgZW5kXG5cbiAgbGV0IGRhdGVfY2FjaGUgOiBEYXRlX2NhY2hlLnQgPVxuICAgIHsgem9uZSA9IFpvbmUudXRjXG4gICAgOyBjYWNoZV9zdGFydF9pbmNsID0gZXBvY2hcbiAgICA7IGNhY2hlX3VudGlsX2V4Y2wgPSBlcG9jaFxuICAgIDsgZWZmZWN0aXZlX2RheV9zdGFydCA9IGVwb2NoXG4gICAgOyBkYXRlID0gRGF0ZTAudW5peF9lcG9jaFxuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXRfZGF0ZV9jYWNoZSAoKSA9XG4gICAgZGF0ZV9jYWNoZS56b25lIDwtIFpvbmUudXRjO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBEYXRlMC51bml4X2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIHBoeXNfZXF1YWwgem9uZSBkYXRlX2NhY2hlLnpvbmVcbiAgICAmJiB0aW1lID49IGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbFxuICAgICYmIHRpbWUgPCBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIHN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IGFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IG1heCAoWm9uZS5pbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGNhY2hlX3VudGlsX2V4Y2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV91bnRpbCB8PiBtaW4gKFpvbmUuaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGRhdGVfY2FjaGUuem9uZSA8LSB6b25lO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGNhY2hlX3N0YXJ0X2luY2w7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gY2FjaGVfdW50aWxfZXhjbDtcbiAgICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlZmZlY3RpdmVfZGF5X3N0YXJ0O1xuICAgICAgZGF0ZV9jYWNoZS5kYXRlIDwtIGRhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRhdGVfY2FjaGUuZGF0ZVxuICA7O1xuXG4gIGxldCB0b19vZmRheSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRpZmYgdGltZSBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSA9IHRvX2RhdGUgdGltZSB+em9uZSwgdG9fb2ZkYXkgdGltZSB+em9uZVxuXG4gICgqIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGFsZ29yaXRobSAoaW50ZXJmYWNlLCBldmVuKSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXRcbiAgICAgdGltZXpvbmUgc2hpZnRzIGFyZW4ndCB0b28gY2xvc2UgdG9nZXRoZXIgKGFzIGluLCBpdCBjYW4ndCBzaW11bHRhbmVvdXNseSBiZSB0aGVcbiAgICAgY2FzZSB0aGF0IGEgdGltZXpvbmUgc2hpZnQgb2YgWCBob3VycyBvY2N1cnJlZCBsZXNzIHRoYW4gWCBob3VycyBhZ28sICphbmQqXG4gICAgIGEgdGltZXpvbmUgc2hpZnQgb2YgWSBob3VycyB3aWxsIG9jY3VyIGluIGxlc3MgdGhhbiBZIGhvdXJzJyB0aW1lKSAqKVxuICBsZXQgdG9fZGF0ZV9vZmRheV9wcmVjaXNlIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9hZnRlciA9IFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjp0aW1lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCA9IFpvbmUucHJldl9jbG9ja19zaGlmdCB6b25lIH5hdF9vcl9iZWZvcmU6dGltZSBpblxuICAgIGxldCBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnQgPVxuICAgICAgKCogVXNpbmcgW2RhdGVdIGFuZCByYWlzaW5nIG9uIFtOb25lXSBoZXJlIGlzIE9LIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tcbiAgICAgICAgIHNoaWZ0cyBjYW4ndCBjcm9zcyBkYXRlIGJvdW5kYXJpZXMuIFRoaXMgaXMgdHJ1ZSBpbiBhbGwgY2FzZXMgSSd2ZSBldmVyIGhlYXJkXG4gICAgICAgICBvZiAoYW5kIFtvZl9kYXRlX29mZGF5X3ByZWNpc2VdIHdvdWxkIG5lZWQgcmV2aXNpdGluZyBpZiBpdCB0dXJuZWQgb3V0IHRvIGJlXG4gICAgICAgICBmYWxzZSkgKilcbiAgICAgIG1hdGNoIE9mZGF5LnN1YiBvZmRheSBhbW91bnQgd2l0aFxuICAgICAgfCBTb21lIG9mZGF5IC0+IGBBbHNvX3NraXBwZWQgKGRhdGUsIG9mZGF5KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiVGltZS50b19kYXRlX29mZGF5X3ByZWNpc2VcIlxuICAgICAgICAgICAgICB+c3Bhbl9zaW5jZV9lcG9jaDoodG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lIDogU3Bhbi50KVxuICAgICAgICAgICAgICAoem9uZSA6IFpvbmUudCldXG4gICAgaW5cbiAgICBsZXQgYW1iaWd1aXR5ID1cbiAgICAgICgqIEVkZ2UgY2FzZXM6IHRoZSBpbnN0YW50IG9mIHRyYW5zaXRpb24gYmVsb25ncyB0byB0aGUgbmV3IHpvbmUgcmVnaW1lLiBTbyBpZiB0aGVcbiAgICAgICAgIGNsb2NrIG1vdmVkIGJ5IGFuIGhvdXIgZXhhY3RseSBvbmUgaG91ciBhZ28sIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBiZWNhdXNlIHRoZVxuICAgICAgICAgaG91ci1hZ28gdGltZSBiZWxvbmdzIHRvIHRoZSBzYW1lIHJlZ2ltZSBhcyB5b3UsIGFuZCBjb252ZXJzZWx5LCBpZiB0aGUgY2xvY2tcbiAgICAgICAgIHdpbGwgbW92ZSBieSBhbiBob3VyIGluIGFuIGhvdXJzJyB0aW1lLCB0aGVyZSAqaXMqIGFtYmlndWl0eS4gSGVuY2UgWz4uXSBmb3JcbiAgICAgICAgIHRoZSBmaXJzdCBjYXNlIGFuZCBbPD0uXSBmb3IgdGhlIHNlY29uZC4gKilcbiAgICAgIG1hdGNoIGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCwgY2xvY2tfc2hpZnRfYWZ0ZXIgd2l0aFxuICAgICAgfCBTb21lIChzdGFydCwgYW1vdW50KSwgXyB3aGVuIGFkZCBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA+IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBpcyBhYm91dCB0byBzaGlmdCAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGZvcndhcmQ6IG5vIGVmZmVjdCAqKVxuICAgICAgICAgIGBPbmx5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGJhY2s6IHRoaXMgZGF0ZS9vZmRheSB3aWxsIGJlIHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKGFkZCB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXyAtPiBgT25seVxuICAgIGluXG4gICAgZGF0ZSwgb2ZkYXksIGFtYmlndWl0eVxuICA7O1xuXG4gIGxldCBjb252ZXJ0IH5mcm9tX3R6IH50b190eiBkYXRlIG9mZGF5ID1cbiAgICBsZXQgc3RhcnRfdGltZSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6ZnJvbV90eiBkYXRlIG9mZGF5IGluXG4gICAgdG9fZGF0ZV9vZmRheSB+em9uZTp0b190eiBzdGFydF90aW1lXG4gIDs7XG5cbiAgbGV0IHV0Y19vZmZzZXQgdCB+em9uZSA9XG4gICAgbGV0IHV0Y19lcG9jaCA9IFpvbmUuZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB6b25lIHQgaW5cbiAgICBTcGFuLiggLSApXG4gICAgICAoRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdXRjX2Vwb2NoKVxuICAgICAgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbiAgOztcblxuICBsZXQgb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lID1cbiAgICBsZXQgdXRjX29mZnNldCA9IHV0Y19vZmZzZXQgdGltZSB+em9uZSBpblxuICAgIGxldCBpc191dGMgPSBTcGFuLiggPSApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIGluXG4gICAgaWYgaXNfdXRjXG4gICAgdGhlbiBcIlpcIlxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyAoaWYgU3Bhbi4oIDwgKSB1dGNfb2Zmc2V0IFNwYW4uemVybyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpXG4gICAgICAgIDsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWRcbiAgICAgICAgICAgIChPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uYWJzIHV0Y19vZmZzZXQpKVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfcGFydHMgPVxuICAgIGxldCBhdHRlbXB0IHRpbWUgfnpvbmUgPVxuICAgICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgICAgOyBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIE9mZGF5LnRvX3N0cmluZyBvZmRheTsgb2Zmc2V0X3N0cmluZyBdXG4gICAgICBdXG4gICAgaW5cbiAgICBmdW4gdGltZSB+em9uZSAtPlxuICAgICAgdHJ5IGF0dGVtcHQgdGltZSB+em9uZSB3aXRoXG4gICAgICB8IChfIDogZXhuKSAtPlxuICAgICAgICAoKiBJZiB3ZSBvdmVyZmxvdyBhcHBseWluZyB0aGUgVVRDIG9mZnNldCwgdHJ5IGFnYWluIHdpdGggVVRDIHRpbWUuICopXG4gICAgICAgIGF0dGVtcHQgdGltZSB+em9uZTpab25lLnV0Y1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICBTdHJpbmcuY29uY2F0XG4gICAgICB+c2VwOlwiIFwiXG4gICAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBvZmRheSBeIG9mZnNldF9zdHJpbmcgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzIHRpbWUgfnpvbmUgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgbGV0IHRvX3N0cmluZ191dGMgdCA9IHRvX3N0cmluZ19hYnMgdCB+em9uZTpab25lLnV0Y1xuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX3V0Y1xuXG4gIGxldCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyB0aW1lIH56b25lID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJUXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3NlY19zdHJpbmcgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmdfd2l0aF96b25lIHQgfnpvbmUgPSB0b19zZWNfc3RyaW5nIHQgfnpvbmUgXiBvZmZzZXRfc3RyaW5nIHQgfnpvbmVcblxuICBsZXQgdG9fZmlsZW5hbWVfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgXiBcIl9cIlxuICAgIF4gU3RyaW5nLnRyXG4gICAgICAgIH50YXJnZXQ6JzonXG4gICAgICAgIH5yZXBsYWNlbWVudDonLSdcbiAgICAgICAgKFN0cmluZy5kcm9wX3N1ZmZpeCAoT2ZkYXkudG9fc3RyaW5nIG9mZGF5KSAzKVxuICA7O1xuXG4gIGxldCBvZl9maWxlbmFtZV9zdHJpbmcgcyB+em9uZSA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonXycgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2UgaW4gZmlsZW5hbWUgc3RyaW5nXCJcbiAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gU3RyaW5nLnRyIH50YXJnZXQ6Jy0nIH5yZXBsYWNlbWVudDonOicgb2ZkYXkgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSB+em9uZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJUaW1lLm9mX2ZpbGVuYW1lX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICA7O1xuXG4gIGxldCBvZl9sb2NhbGl6ZWRfc3RyaW5nIH56b25lIHN0ciA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHIgfm9uOicgJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJubyBzcGFjZSBpbiBkYXRlX29mZGF5IHN0cmluZzogJXNcIiBzdHIpXG4gICAgICB8IFNvbWUgKGRhdGUsIHRpbWUpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIHRpbWUgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgd2l0aFxuICAgIHwgZSAtPiBFeG4ucmVyYWlzZSBlIFwiVGltZS5vZl9sb2NhbGl6ZWRfc3RyaW5nXCJcbiAgOztcblxuICBsZXQgb2NjdXJyZW5jZSBiZWZvcmVfb3JfYWZ0ZXIgdCB+b2ZkYXkgfnpvbmUgPVxuICAgIGxldCBmaXJzdF9ndWVzc19kYXRlID0gdG9fZGF0ZSB0IH56b25lIGluXG4gICAgbGV0IGZpcnN0X2d1ZXNzID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBmaXJzdF9ndWVzc19kYXRlIG9mZGF5IGluXG4gICAgbGV0IGNtcCwgaW5jcmVtZW50ID1cbiAgICAgIG1hdGNoIGJlZm9yZV9vcl9hZnRlciB3aXRoXG4gICAgICB8IGBMYXN0X2JlZm9yZV9vcl9hdCAtPiAoIDw9ICksIC0xXG4gICAgICB8IGBGaXJzdF9hZnRlcl9vcl9hdCAtPiAoID49ICksIDFcbiAgICBpblxuICAgIGlmIGNtcCBmaXJzdF9ndWVzcyB0XG4gICAgdGhlbiBmaXJzdF9ndWVzc1xuICAgIGVsc2Ugb2ZfZGF0ZV9vZmRheSB+em9uZSAoRGF0ZTAuYWRkX2RheXMgZmlyc3RfZ3Vlc3NfZGF0ZSBpbmNyZW1lbnQpIG9mZGF5XG4gIDs7XG5cbiAgbGV0IGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgb2Zmc2V0ID1cbiAgICBsZXQgb2Zmc2V0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggb2Zmc2V0IGluXG4gICAgaWYgSW50LiggPD0gKSBvZmZzZXRfbGVuZ3RoIDJcbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bMF1cbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bb2Zmc2V0X2xlbmd0aCAtIDFdXG4gICAgdGhlbiBvZmZzZXQgXiBcIjowMFwiXG4gICAgZWxzZSBpZiBDaGFyLiggPSApIG9mZnNldC5bMV0gJzonIHx8IENoYXIuKCA9ICkgb2Zmc2V0LlsyXSAnOidcbiAgICB0aGVuIG9mZnNldFxuICAgIGVsc2UgaWYgSW50LiggPCApIG9mZnNldF9sZW5ndGggMyB8fCBJbnQuKCA+ICkgb2Zmc2V0X2xlbmd0aCA0XG4gICAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIG9mZnNldCAlc1wiIG9mZnNldCAoKVxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IDAgKG9mZnNldF9sZW5ndGggLSAyKVxuICAgICAgICA7IFwiOlwiXG4gICAgICAgIDsgU3RyaW5nLnNsaWNlIG9mZnNldCAob2Zmc2V0X2xlbmd0aCAtIDIpIG9mZnNldF9sZW5ndGhcbiAgICAgICAgXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBUaW1lX25zX29mX3N0cmluZyBvZiBzdHJpbmcgKiBFeG4udCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBkYXRlLCBvZmRheSwgdHogPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JyAnIHdpdGhcbiAgICAgICAgfCBbIGRheTsgbW9udGg7IHllYXI7IG9mZGF5IF0gLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgZGF5OyBcIiBcIjsgbW9udGg7IFwiIFwiOyB5ZWFyIF0sIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBkYXRlOyBvZmRheTsgdHogXSAtPiBkYXRlLCBvZmRheSwgU29tZSB0elxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXkgXSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgcyBdIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonVCcgcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlcyBvciBUIGZvdW5kXCIpXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInRvbyBtYW55IHNwYWNlc1wiXG4gICAgICBpblxuICAgICAgbGV0IG9mZGF5X3RvX3NlYyBvZCA9IFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZCkgaW5cbiAgICAgIGxldCBvZmRheSwgdXRjX29mZnNldCA9XG4gICAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gb2ZkYXksIE5vbmVcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgQ2hhci4oID0gKSBvZmRheS5bU3RyaW5nLmxlbmd0aCBvZmRheSAtIDFdICdaJ1xuICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBvZmRheSB+cG9zOjAgfmxlbjooU3RyaW5nLmxlbmd0aCBvZmRheSAtIDEpLCBTb21lIDAuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246JysnIG9mZGF5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgbCwgU29tZSAob2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246Jy0nIG9mZGF5IHdpdGhcbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgICAgbCwgU29tZSAoLTEuICouIG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvZmRheSwgTm9uZSkpXG4gICAgICBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICB8IFNvbWUgdHogLT4gb2ZfZGF0ZV9vZmRheSB+em9uZTooZmluZF96b25lIHR6KSBkYXRlIG9mZGF5XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHV0Y19vZmZzZXQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB6b25lID0gZGVmYXVsdF96b25lICgpIGluXG4gICAgICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgICAgfCBTb21lIHV0Y19vZmZzZXQgLT5cbiAgICAgICAgICAgbGV0IHV0Y190ID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpab25lLnV0YyBkYXRlIG9mZGF5IGluXG4gICAgICAgICAgIHN1YiB1dGNfdCAoU3Bhbi5vZl9zZWMgdXRjX29mZnNldCkpXG4gICAgd2l0aFxuICAgIHwgZSAtPiByYWlzZSAoVGltZV9uc19vZl9zdHJpbmcgKHMsIGUpKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IHMgPVxuICAgIGxldCBkZWZhdWx0X3pvbmUgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcInRpbWUgaGFzIG5vIHRpbWUgem9uZSBvciBVVEMgb2Zmc2V0XCIgc10gaW5cbiAgICBsZXQgZmluZF96b25lIHpvbmVfbmFtZSA9XG4gICAgICBmYWlsd2l0aGYgXCJ1bmFibGUgdG8gbG9va3VwIFpvbmUgJXMuICBUcnkgdXNpbmcgQ29yZS5UaW1lLm9mX3N0cmluZ1wiIHpvbmVfbmFtZSAoKVxuICAgIGluXG4gICAgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgc1xuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XG5lbmRcblxuaW5jbHVkZSBUb19hbmRfb2Zfc3RyaW5nXG5cbmxldCBtaW5fdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1heF92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgdG9fdGltZSA9IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IG9mX3RpbWUgPSBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcblxubW9kdWxlIF8gPSBzdHJ1Y3RcbiAgb3BlbiBQcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWVcblxuICBsZXQgKCkgPVxuICAgIER1cmF0aW9uLmZvcm1hdFxuICAgIDo9IChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgZHVyYXRpb25fb2Zfc3BhbiBzID0gcyB8PiBTcGFuLnRvX2ludDYzX25zIHw+IER1cmF0aW9uLm9mX25hbm9zZWNvbmRzXG4gICAgICBsZXQgc3Bhbl9vZl9kdXJhdGlvbiBkID0gZCB8PiBEdXJhdGlvbi50b19uYW5vc2Vjb25kcyB8PiBTcGFuLm9mX2ludDYzX25zXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IHN0cmluZyB8PiBTcGFuLm9mX3N0cmluZyB8PiBkdXJhdGlvbl9vZl9zcGFuXG5cbiAgICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgZHVyYXRpb25zID1cbiAgICAgICAgbGV0IHNwYW5zID0gZHVyYXRpb25zIHw+IExpc3QubWFwIH5mOnNwYW5fb2ZfZHVyYXRpb24gaW5cbiAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9XG4gICAgICAgICAgc3BhbnNcbiAgICAgICAgICB8PiBMaXN0Lm1heF9lbHQgfmNvbXBhcmU6U3Bhbi5jb21wYXJlXG4gICAgICAgICAgfD4gT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAgICAgICAgfmY6U3Bhbi50b191bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgIH5kZWZhdWx0OlVuaXRfb2ZfdGltZS5OYW5vc2Vjb25kXG4gICAgICAgIGluXG4gICAgICAgIHNwYW5zIHw+IExpc3QubWFwIH5mOihTcGFuLnRvX3N0cmluZ19odW0gfnVuaXRfb2ZfdGltZSB+YWxpZ25fZGVjaW1hbDp0cnVlKVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEhhc2hfcXVldWUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgTWFwID0gc3RydWN0IGVuZFxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZSA9IHN0cnVjdCBlbmRcblxubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBpbnRlcnJ1cHRpYmxlX3BhdXNlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9zdHJpbmdfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV9uc191bml4X29yX1RpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmxldCBzZXhwX29mX3RfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfbnNfdW5peF9vcl9UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX3Vib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG4iLCIoKiBBIHN1YnN0cmluZyBpcyBhIGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4gIFdlIHVzZSBhXG4gICBmdW5jdG9yIGJlY2F1c2Ugd2Ugd2FudCBzdWJzdHJpbmdzIG9mIFtzdHJpbmddIGFuZCBbYmlnc3RyaW5nXS5cbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmdfaW50ZlxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZy50XG5cbm1vZHVsZSBCbGl0ID0gc3RydWN0XG4gIHR5cGUgKCdzcmMsICdkc3QpIHQgPSAoJ3NyYywgJ2RzdCkgQmxpdC5ibGl0b1xuXG4gIGxldCBzdHJpbmdfYnl0ZXMgfnNyYyA/c3JjX3BvcyA/c3JjX2xlbiB+ZHN0ID8oZHN0X3BvcyA9IDApICgpID1cbiAgICBsZXQgc3JjX3BvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuXG4gICAgICAgICgpXG4gICAgICAgID9wb3M6c3JjX3Bvc1xuICAgICAgICA/bGVuOnNyY19sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooU3RyaW5nLmxlbmd0aCBzcmMpXG4gICAgaW5cbiAgICBCeXRlcy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgbGV0IHN0cmluZ19zdHJpbmcgPSBzdHJpbmdfYnl0ZXNcbiAgbGV0IGJ5dGVzX2J5dGVzID0gQnl0ZXMuYmxpdG9cbiAgbGV0IHN0cmluZ19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdG9cbiAgbGV0IGJ5dGVzX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfc3RyaW5nID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYnl0ZXMgPSBCaWdzdHJpbmcuVG9fYnl0ZXMuYmxpdG9cbmVuZFxuXG4oKiBXZSBjYW4ndCBjYWxsIHRoZSBiYXNlIG1vZHVsZSBbQmFzZV0gYmVjYXVzZSBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSB3YW50cyB0byBhY2Nlc3NcbiAgIHRoZSBbQmFzZV0gbGlicmFyeSBkaXJlY3RseSwgYW5kIHdlJ2QgYmUgc2hhZG93aW5nIGl0LiAqKVxubW9kdWxlIEYgKFVuZGVybHlpbmcgOiBCYXNlKSA6IFMgd2l0aCB0eXBlIGJhc2UgPSBVbmRlcmx5aW5nLnQgPSBzdHJ1Y3RcbiAgdHlwZSBiYXNlID0gVW5kZXJseWluZy50XG5cbiAgdHlwZSB0ID1cbiAgICB7IGJhc2UgOiBVbmRlcmx5aW5nLnRcbiAgICA7IHBvcyA6IGludFxuICAgIDsgbGVuIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICgqIG5vdGUgd2Ugb3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCBbcXVpY2tjaGVja19nZW5lcmF0b3JdIGJlbG93LCBvbmNlIHdlJ3ZlIGRlZmluZWRcbiAgICAgW2NyZWF0ZV0gKilcblxuICAoKiB7W1xuICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICBhc3NlcnQgKDAgPD0gdC5wb3MpO1xuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQubGVuKTtcbiAgICAgICAgIGFzc2VydCAodC5wb3MgKyB0LmxlbiA8PSBCYXNlLmxlbmd0aCB0LmJhc2UpO1xuICAgICAgIDs7IF19ICopXG5cbiAgbGV0IGJhc2UgdCA9IHQuYmFzZVxuICBsZXQgcG9zIHQgPSB0LnBvc1xuICBsZXQgbGVuZ3RoIHQgPSB0LmxlblxuICBsZXQgaXNfZW1wdHkgdCA9IEludC5lcXVhbCB0LmxlbiAwXG5cbiAgbGV0IGJhc2Vfb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgYmFzZV9vZl9iaWdzdHJpbmcgcyA9XG4gICAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBidWYgPSBVbmRlcmx5aW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmcgfnNyYzpzIH5kc3Q6YnVmICgpO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGUgP3BvcyA/bGVuIGJhc2UgPVxuICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zXG4gICAgICAgID9sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooVW5kZXJseWluZy5sZW5ndGggYmFzZSlcbiAgICBpblxuICAgIHsgYmFzZTsgcG9zOyBsZW4gfVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgbGV0IG9wZW4gUXVpY2tjaGVjay5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgYmFzZSA9IFVuZGVybHlpbmcucXVpY2tjaGVja19nZW5lcmF0b3IgaW5cbiAgICBsZXQgYmFzZV9sZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIGluXG4gICAgbGV0JWJpbmQgbGVuID0gSW50Lmdlbl91bmlmb3JtX2luY2wgMCBiYXNlX2xlbiBpblxuICAgIGxldCViaW5kIHBvcyA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGJhc2VfbGVuIC0gbGVuKSBpblxuICAgIHJldHVybiAoY3JlYXRlIH5wb3MgfmxlbiBiYXNlKVxuICA7O1xuXG4gIGxldCBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSA9IFVuZGVybHlpbmcuZ2V0IChiYXNlIHQpIChwb3MgdCArIGkpXG5cbiAgbGV0IGdldCB0IGkgPVxuICAgIGlmIGkgPj0gMCAmJiBpIDwgbGVuZ3RoIHRcbiAgICB0aGVuIGdldF9ub19ib3VuZHNfY2hlY2sgdCBpXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgOztcblxuICBsZXQgc3ViID9wb3MgP2xlbiB0ID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgIGluXG4gICAgeyBiYXNlID0gdC5iYXNlOyBwb3MgPSB0LnBvcyArIHBvczsgbGVuIH1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcmcgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbW9kdWxlIEVsdCA9IENoYXJcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBnbyBhY2MgaSA9IGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBhY2MgKGdldCB0IGkpKSAoaSArIDEpIGluXG4gICAgICBnbyBpbml0IDAgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICAgICAgZiAoZ2V0IHQgaSlcbiAgICAgICAgICAgZG9uZSlcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRpID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5pbml0IH5mIC0+XG4gICAgICAgICAgIGxldCByZWMgZ28gYWNjIGkgPVxuICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBpIGFjYyAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpKSAoaSArIDEpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGdvIGluaXQgMCBbQG5vbnRhaWxdKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgaSAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmRcblxuICBtb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UwIChNYWtlX2FyZylcblxuICBsZXQgZm9sZCA9IEMuZm9sZFxuICBsZXQgaXRlciA9IEMuaXRlclxuICBsZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG4gIGxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbiAgKCogW0MudG9fbGlzdF0gaGFzIHRvIGNvbnN0cnVjdCB0aGVuIHJldmVyc2UgdGhlIGxpc3QgKilcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihnZXQgdClcbiAgbGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxuICBsZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG4gIGxldCBmaW5kID0gQy5maW5kXG4gIGxldCBleGlzdHMgPSBDLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxuICBsZXQgbWVtID0gQy5tZW1cbiAgbGV0IGNvdW50ID0gQy5jb3VudFxuICBsZXQgc3VtID0gQy5zdW1cbiAgbGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbiAgbGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbiAgbGV0IGZvbGRpID0gQy5mb2xkaVxuICBsZXQgaXRlcmkgPSBDLml0ZXJpXG4gIGxldCBleGlzdHNpID0gQy5leGlzdHNpXG4gIGxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbiAgbGV0IGNvdW50aSA9IEMuY291bnRpXG4gIGxldCBmaW5kaSA9IEMuZmluZGlcbiAgbGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5cbiAgbGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICAgIGlmIG4gPCAwXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgKG5hbWUgXiBcIiBleHBlY3Rpbmcgbm9ubmVnYXRpdmUgYXJndW1lbnRcIilcbiAgICBlbHNlIChcbiAgICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgICAgfCBfIC0+IG9uX2Vycm9yKVxuICA7O1xuXG4gIGxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICAgIHdyYXBfc3ViX25cbiAgICAgIH5uYW1lOlwiZHJvcF9wcmVmaXhcIlxuICAgICAgdFxuICAgICAgblxuICAgICAgfnBvczpuXG4gICAgICB+bGVuOihsZW5ndGggdCAtIG4pXG4gICAgICB+b25fZXJyb3I6eyB0IHdpdGggbGVuID0gMCB9XG4gIDs7XG5cbiAgbGV0IGRyb3Bfc3VmZml4IHQgbiA9XG4gICAgd3JhcF9zdWJfblxuICAgICAgfm5hbWU6XCJkcm9wX3N1ZmZpeFwiXG4gICAgICB0XG4gICAgICBuXG4gICAgICB+cG9zOjBcbiAgICAgIH5sZW46KGxlbmd0aCB0IC0gbilcbiAgICAgIH5vbl9lcnJvcjp7IHQgd2l0aCBsZW4gPSAwIH1cbiAgOztcblxuICBsZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxuICBsZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxuICBsZXQgYmxpdF90byAodHlwZSBhKSAoYmxpdCA6IChVbmRlcmx5aW5nLnQsIGEpIEJsaXQudCkgdCB+ZHN0IH5kc3RfcG9zID1cbiAgICBibGl0IH5zcmM6dC5iYXNlIH5zcmNfcG9zOnQucG9zIH5zcmNfbGVuOnQubGVuIH5kc3QgfmRzdF9wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF90b19zdHJpbmcgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19ieXRlc1xuICBsZXQgYmxpdF90b19ieXRlcyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzXG4gIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2JpZ3N0cmluZ1xuICBsZXQgYmxpdF9iYXNlID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRcblxuICBsZXQgYmxpdF9mcm9tIH5uYW1lICh0eXBlIGEpIChibGl0IDogKGEsIGJhc2UpIEJsaXQudCkgdCB+c3JjIH5zcmNfcG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IHQubGVuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhmXG4gICAgICAgIFwiU3Vic3RyaW5nLmJsaXRfZnJvbV8lcyBsZW4gPiBzdWJzdHJpbmcgbGVuZ3RoIDogJWQgPiAlZFwiXG4gICAgICAgIG5hbWVcbiAgICAgICAgbGVuXG4gICAgICAgIHQubGVuXG4gICAgICAgICgpO1xuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+c3JjX2xlbjpsZW4gfmRzdDp0LmJhc2UgfmRzdF9wb3M6dC5wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcInN0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZ1xuICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcImJpZ3N0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX2JpZ3N0cmluZ1xuICBsZXQgb2ZfYmFzZSBiYXNlID0geyBiYXNlOyBwb3MgPSAwOyBsZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIH1cbiAgbGV0IG9mX3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9zdHJpbmcgeClcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9iaWdzdHJpbmcgeClcblxuICBsZXQgbWFrZSAodHlwZSBhKSBjcmVhdGUgKGJsaXQgOiAoYmFzZSwgYSkgQmxpdC50KSB0ID1cbiAgICBsZXQgZHN0ID0gY3JlYXRlIHQubGVuIGluXG4gICAgYmxpdCB+c3JjOnQuYmFzZSB+c3JjX3Bvczp0LnBvcyB+c3JjX2xlbjp0LmxlbiB+ZHN0IH5kc3RfcG9zOjAgKCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZToobWFrZSBCeXRlcy5jcmVhdGUgVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzIHgpXG4gIDs7XG5cbiAgbGV0IHRvX2JpZ3N0cmluZyA9IG1ha2UgQmlnc3RyaW5nLmNyZWF0ZSBVbmRlcmx5aW5nLmJsaXRfdG9fYmlnc3RyaW5nXG5cbiAgbGV0IGNvbmNhdF9nZW4gY3JlYXRlX2RzdCBibGl0X2RzdCB0cyA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZCB0cyB+aW5pdDowIH5mOihmdW4gbGVuIHQgLT4gbGVuICsgbGVuZ3RoIHQpIGluXG4gICAgbGV0IGRzdCA9IGNyZWF0ZV9kc3QgbGVuIGluXG4gICAgaWdub3JlXG4gICAgICAoTGlzdC5mb2xkIHRzIH5pbml0OjAgfmY6KGZ1biBkc3RfcG9zIHQgLT5cbiAgICAgICAgIGJsaXRfZHN0IHQgfmRzdCB+ZHN0X3BvcztcbiAgICAgICAgIGRzdF9wb3MgKyBsZW5ndGggdClcbiAgICAgICA6IGludCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IGNvbmNhdCB0cyA9IG9mX2Jhc2UgKGNvbmNhdF9nZW4gVW5kZXJseWluZy5jcmVhdGUgYmxpdF9iYXNlIHRzKVxuXG4gIGxldCBjb25jYXRfc3RyaW5nIHRzID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooY29uY2F0X2dlbiBCeXRlcy5jcmVhdGUgYmxpdF90b19zdHJpbmcgdHMpXG4gIDs7XG5cbiAgbGV0IGNvbmNhdF9iaWdzdHJpbmcgdHMgPSBjb25jYXRfZ2VuIEJpZ3N0cmluZy5jcmVhdGUgYmxpdF90b19iaWdzdHJpbmcgdHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBNYWtlX3N1YnN0cmluZy5TXG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQnl0ZXMudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJ5dGVzLmNyZWF0ZVxuICAgIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQnl0ZXMuZ2V0XG5cbiAgICBtb2R1bGUgQmxpdCA9IE1ha2Vfc3Vic3RyaW5nLkJsaXRcblxuICAgIGxldCBibGl0ID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19ieXRlcyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJ5dGVzX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgU3RyaW5nX2lkX2ludGZcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyX3dpdGhfYmluX3NoYXBlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3Byb3QuU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZ1xuICAgICAgICAgIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgbGV0IGNoZWNrX2Zvcl93aGl0ZXNwYWNlID1cbiAgICAgICAgICBsZXQgaW52YWxpZCBzIHJlYXNvbiA9XG4gICAgICAgICAgICBFcnJvciAoc3ByaW50ZiBcIiclcycgaXMgbm90IGEgdmFsaWQgJXMgYmVjYXVzZSAlc1wiIHMgTS5tb2R1bGVfbmFtZSByZWFzb24pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBmdW4gcyAtPlxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgaWYgSW50LiggPSApIGxlbiAwXG4gICAgICAgICAgICB0aGVuIGludmFsaWQgcyBcIml0IGlzIGVtcHR5XCJcbiAgICAgICAgICAgIGVsc2UgaWYgQ2hhci5pc193aGl0ZXNwYWNlIHMuWzBdIHx8IENoYXIuaXNfd2hpdGVzcGFjZSBzLltsZW4gLSAxXVxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBoYXMgd2hpdGVzcGFjZSBvbiB0aGUgZWRnZVwiXG4gICAgICAgICAgICBlbHNlIE9rICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHZhbGlkYXRlIHMgPSBSZXN1bHQubWFwX2Vycm9yIChNLnZhbGlkYXRlIHMpIH5mOkVycm9yLnRvX3N0cmluZ19tYWNoXG5cbiAgICAgICAgbGV0IGNoZWNrIHMgPVxuICAgICAgICAgIGlmIE0uaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb25cbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIGNoZWNrX2Zvcl93aGl0ZXNwYWNlIHMgd2l0aFxuICAgICAgICAgICAgfCBPayAoKSAtPiB2YWxpZGF0ZSBzXG4gICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIGVycm9yKVxuICAgICAgICAgIGVsc2UgdmFsaWRhdGUgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgICAgICBsZXQgcHAgPSBTdHJpbmcucHBcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGludmFsaWRfYXJnIGVyclxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuU3RhYmxlLlYxLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgICAgbWF0Y2ggY2hlY2sgcyB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBzXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cFxuICAgICAgICA7O1xuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoU3RyaW5nKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdHJpbmdcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgICAgIGxldCBvcGVuIEJpbl9wcm90LlNoYXBlIGluXG4gICAgICAgICAgbWF0Y2ggTS5jYWxsZXJfaWRlbnRpdHkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBiaW5fc2hhcGVfdFxuICAgICAgICAgIHwgU29tZSB1dWlkIC0+IGFubm90YXRlIHV1aWQgYmluX3NoYXBlX3RcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVF93aXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRfd2l0aF9jb21wYXJhdG9yXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVF93aXRoX2NvbXBhcmF0b3IpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlX2xhdGVzdCA9IFN0YWJsZS5WMVxuICBpbmNsdWRlIFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTdHJpbmcucXVpY2tjaGVja19vYnNlcnZlclxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgU3RyaW5nLmdlbl9ub25lbXB0eScgQ2hhci5nZW5fcHJpbnRcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgfmY6KGZ1biBzdHJpbmcgLT4gY2hlY2sgc3RyaW5nIHw+IFJlc3VsdC5pc19vaylcbiAgOztcblxuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZVxuICAgICAgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1cblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICAgICAgZW5kKVxuICAgICAgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyXG4gICAgICAoc3RydWN0XG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgICAgbGV0IHZhbGlkYXRlID0gRm4uY29uc3QgKE9rICgpKVxuICAgICAgICBsZXQgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gPSB0cnVlXG4gICAgICBlbmQpXG4gICAgICAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGUgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfZGlzdGluY3RfYmluX3NoYXBlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9wcm90LlNoYXBlLlV1aWQudFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZVxuICAgICAgKHN0cnVjdFxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICAgIGxldCB2YWxpZGF0ZSA9IEZuLmNvbnN0IChPayAoKSlcbiAgICAgICAgbGV0IGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uID0gdHJ1ZVxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gU29tZSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgZW5kKVxuICAgICAgKClcblxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZVxuICBNYWtlXG4gICAgKHN0cnVjdFxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlN0cmluZ19pZFwiXG4gICAgZW5kKVxuICAgICgpXG5cbm1vZHVsZSBTdHJpbmdfd2l0aG91dF92YWxpZGF0aW9uX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZ2xvYmFsaXplID0gZ2xvYmFsaXplX3N0cmluZ1xuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBGbi5pZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIFN0YWJsZV91bml0X3Rlc3RfaW50ZlxuXG5tb2R1bGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcInNleHAgZGVzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHNleHBfYXNfc3RyaW5nIHw+IFNleHAub2Zfc3RyaW5nIHw+IFslb2Zfc2V4cDogVC50XSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPlxuICAgICAgICAgICBPcl9lcnJvci50YWdfYXJnXG4gICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICBcImNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBzZXhwXCJcbiAgICAgICAgICAgICAoc2V4cF9hc19zdHJpbmcsIGBFeHBlY3RlZCB0KVxuICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogWyBgRXhwZWN0ZWQgb2YgVC50IF1dXG4gICAgICAgICB8IE9rIHQnIC0+XG4gICAgICAgICAgIGlmIFQuZXF1YWwgdCB0J1xuICAgICAgICAgICB0aGVuIE9rICgpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgICAgXCJzZXhwIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgICB8PiBva19leG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9zZXhwX3NlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHNlcmlhbGl6YXRpb25cIiA9XG4gICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgKExpc3QubWFwIFQudGVzdHMgfmY6KGZ1biAodCwgc2V4cF9hc19zdHJpbmcsIF8pIC0+XG4gICAgICAgICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgc2V4cF9hc19zdHJpbmcgaW5cbiAgICAgICAgICAgbGV0IHNlcmlhbGl6ZWRfc2V4cCA9IFQuc2V4cF9vZl90IHQgaW5cbiAgICAgICAgICAgaWYgU2V4cC4oIDw+ICkgc2VyaWFsaXplZF9zZXhwIHNleHBcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICAgXCJzZXhwIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCBzZXhwLCBgQnV0X2dvdCBzZXJpYWxpemVkX3NleHApXG4gICAgICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFNleHAudCBdICogWyBgQnV0X2dvdCBvZiBTZXhwLnQgXV0pKSlcbiAgICB8PiBva19leG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJiaW5faW9cIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgXywgZXhwZWN0ZWRfYmluX2lvKSAtPlxuICAgICAgbGV0IGJpbmFibGVfbSA9IChtb2R1bGUgVCA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA9IFQudCkgaW5cbiAgICAgIGxldCB0b19iaW5fc3RyaW5nIHQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfYmluX2lvID0gdG9fYmluX3N0cmluZyB0IGluXG4gICAgICBpZiBTdHJpbmcuKCA8PiApIHNlcmlhbGl6ZWRfYmluX2lvIGV4cGVjdGVkX2Jpbl9pb1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKHQsIGBFeHBlY3RlZCBleHBlY3RlZF9iaW5faW8sIGBCdXRfZ290IHNlcmlhbGl6ZWRfYmluX2lvKVxuICAgICAgICAgIFslc2V4cF9vZjogVC50ICogWyBgRXhwZWN0ZWQgb2Ygc3RyaW5nIF0gKiBbIGBCdXRfZ290IG9mIHN0cmluZyBdXTtcbiAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSBzZXJpYWxpemVkX2Jpbl9pbyBpblxuICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImJpbl9pbyBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3NleHBfZGVzZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9zZXhwX3NlcmlhbGl6YXRpb25fdGVzdCAoVClcbiAgaW5jbHVkZSBNYWtlX2Jpbl9pb190ZXN0IChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3Vub3JkZXJlZF9jb250YWluZXIgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl9hcmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVGVzdCA9IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5Vbm9yZGVyZWRfY29udGFpbmVyX3Rlc3RcblxuICBsZXQldGVzdF91bml0IFwic2V4cFwiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCB7IFRlc3Quc2V4cHM7IF8gfSkgLT5cbiAgICAgIGxldCBzZXhwcyA9IExpc3QubWFwIHNleHBzIH5mOlNleHAub2Zfc3RyaW5nIGluXG4gICAgICBsZXQgc2VyaWFsaXplZF9lbGVtZW50cyA9XG4gICAgICAgIG1hdGNoIFQuc2V4cF9vZl90IHQgd2l0aFxuICAgICAgICB8IFNleHAuTGlzdCBzZXhwcyAtPiBzZXhwc1xuICAgICAgICB8IFNleHAuQXRvbSBfIC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcImV4cGVjdGVkIGxpc3Qgd2hlbiBzZXJpYWxpemluZyB1bm9yZGVyZWQgY29udGFpbmVyXCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFQuc2V4cF9vZl90XG4gICAgICBpblxuICAgICAgbGV0IHNvcnRlZF9zZXhwcyA9IExpc3Quc29ydCB+Y29tcGFyZTpTZXhwLmNvbXBhcmUgc2V4cHMgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2VyaWFsaXplZCA9IExpc3Quc29ydCB+Y29tcGFyZTpTZXhwLmNvbXBhcmUgc2VyaWFsaXplZF9lbGVtZW50cyBpblxuICAgICAgaWYgbm90IChMaXN0LmVxdWFsIFNleHAuKCA9ICkgc29ydGVkX3NleHBzIHNvcnRlZF9zZXJpYWxpemVkKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXhwIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cHMsIGBCdXRfZ290IHNlcmlhbGl6ZWRfZWxlbWVudHMpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBTZXhwLnQgbGlzdCBdXTtcbiAgICAgIGxldCBzZXhwX3Blcm11dGF0aW9ucyA9IExpc3QuaW5pdCAxMCB+ZjooZnVuIF8gLT4gTGlzdC5wZXJtdXRlIHNleHBzKSBpblxuICAgICAgTGlzdC5pdGVyIHNleHBfcGVybXV0YXRpb25zIH5mOihmdW4gc2V4cHMgLT5cbiAgICAgICAgbGV0IHQnID0gVC50X29mX3NleHAgKFNleHAuTGlzdCBzZXhwcykgaW5cbiAgICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbXNpbWF0Y2hcIlxuICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBpc19jb25jYXRlbmF0aW9uIHN0cmluZyBzdHJpbmdzID1cbiAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgdGhlbiBMaXN0LmZvcl9hbGwgc3RyaW5ncyB+ZjpTdHJpbmcuaXNfZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCByZXZfc2tpcHBlZCBzdHJpbmdzID1cbiAgICAgICAgbWF0Y2ggc3RyaW5ncyB3aXRoXG4gICAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgICAgfCBwcmVmaXggOjogc3RyaW5ncyAtPlxuICAgICAgICAgIGxldCBjb250aW51ZSAoKSA9IGxvb3AgKHByZWZpeCA6OiByZXZfc2tpcHBlZCkgc3RyaW5ncyBpblxuICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9wcmVmaXggfnByZWZpeCBzdHJpbmcgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gY29udGludWUgKClcbiAgICAgICAgICAgfCBTb21lIHN0cmluZyAtPlxuICAgICAgICAgICAgIGlzX2NvbmNhdGVuYXRpb24gc3RyaW5nIChMaXN0LnJldl9hcHBlbmQgcmV2X3NraXBwZWQgc3RyaW5ncykgfHwgY29udGludWUgKCkpXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBzdHJpbmdzKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJiaW5faW9cIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LmJpbl9pb19oZWFkZXI7IGJpbl9pb19lbGVtZW50czsgXyB9KSAtPlxuICAgICAgbGV0IGJpbmFibGVfbSA9IChtb2R1bGUgVCA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA9IFQudCkgaW5cbiAgICAgIGxldCBlbGVtZW50cyA9IGJpbl9pb19lbGVtZW50cyBpblxuICAgICAgbGV0IGJpbl9pb19vZl9lbGVtZW50cyBlbGVtZW50cyA9IGJpbl9pb19oZWFkZXIgXiBTdHJpbmcuY29uY2F0IGVsZW1lbnRzIGluXG4gICAgICBsZXQgc2VyaWFsaXplZCA9IEJpbmFibGUudG9fc3RyaW5nIGJpbmFibGVfbSB0IGluXG4gICAgICBsZXQgc2VyaWFsaXphdGlvbl9tYXRjaGVzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXg6YmluX2lvX2hlYWRlciBzZXJpYWxpemVkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBlbGVtZW50c19zdHJpbmcgLT4gaXNfY29uY2F0ZW5hdGlvbiBlbGVtZW50c19zdHJpbmcgZWxlbWVudHNcbiAgICAgIGluXG4gICAgICBpZiBub3Qgc2VyaWFsaXphdGlvbl9tYXRjaGVzXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcInNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgKGJpbl9pb19oZWFkZXIsIGVsZW1lbnRzKSwgYEJ1dF9nb3Qgc2VyaWFsaXplZClcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIHN0cmluZyAqIHN0cmluZyBsaXN0IF0gKiBbIGBCdXRfZ290IG9mIHN0cmluZyBdXTtcbiAgICAgIGxldCBwZXJtdXRhdGF0aW9ucyA9IExpc3QuaW5pdCAxMCB+ZjooZnVuIF8gLT4gTGlzdC5wZXJtdXRlIGVsZW1lbnRzKSBpblxuICAgICAgTGlzdC5pdGVyIHBlcm11dGF0YXRpb25zIH5mOihmdW4gZWxlbWVudHMgLT5cbiAgICAgICAgbGV0IHQnID0gQmluYWJsZS5vZl9zdHJpbmcgYmluYWJsZV9tIChiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcImJpbi1pbyBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gIDs7XG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG4oKiBUaGUgbW9kdWxlIFtUXSBzZXJ2ZXMgdG8gZW5mb3JjZSB0aGUgaW52YXJpYW50IHRoYXQgYWxsIEJsYW5nLnQgdmFsdWVzIGFyZSBpbiBhXG4gICBub3JtYWwgZm9ybSB3aGVyZWJ5IGJvb2xlYW4gY29uc3RhbnRzIFRydWUgYW5kIEZhbHNlIG9ubHkgYXBwZWFyIGFzIHRoZSB0b3Btb3N0XG4gICBjb25zdHJ1Y3RvciAtLSBpbiBhbnkgb3RoZXIgcG9zaXRpb24gdGhleSBhcmUgc2ltcGxpZmllZCBhd2F5IHVzaW5nIGxhd3Mgb2ZcbiAgIGJvb2xlYW4gYWxnZWJyYS5cblxuICAgV2UgYWxzbyBlbmZvcmNlIHRoYXQgbmVzdGVkIFtBbmRdcyBhbmQgW09yXXMgZWFjaCBsZWFuIHRvIHRoZSByaWdodCBzbyB0aGF0IFtldmFsXVxuICAgZG9lc24ndCBuZWVkIHNvIG11Y2ggc3RhY2sgc3BhY2UgYXMgaXQgd291bGQgaWYgdGhleSBsZWFuZWQgdG8gdGhlIGxlZnQuICBUaG91Z2h0XG4gICBleHBlcmltZW50OiBjb21wYXJlIGhvdyBbZXZhbF0gd29ya3Mgb24gcmlnaHQtbGVhbmluZyBbQW5kIChhLCBBbmQgKGIsIEFuZCAoYywgZCkpKV1cbiAgIHZlcnN1cyBsZWZ0LWxlYW5pbmcgW0FuZCAoQW5kIChBbmQgKGEsIGIpLCBjKSwgZCldLiAgVGhlIGZvcm1lciBpcyB0aGUgYmVzdCBjYXNlIGFuZCBpc1xuICAgZW5mb3JjZWQuXG5cbiAgIE5vdGU6IHRoaXMgZmlsZSBkZXZpYXRlcyBmcm9tIHRoZSB1c3VhbCBwYXR0ZXJuIG9mIG1vZHVsZXMgd2l0aCBTdGFibGUgaW50ZXJmYWNlcyBpblxuICAgdGhhdCB0aGUgU3RhYmxlIHN1Yi1tb2R1bGUgaXMgbm90IHRoZSBmaXJzdCB0aGluZyB0byBiZSBkZWZpbmVkIGluIHRoZSBtb2R1bGUuICBUaGVcbiAgIHJlYXNvbiBmb3IgdGhpcyBkZXZpYXRpb24gaXMgc28gdGhhdCBvbmUgY2FuIGNvbnZpbmNlIG9uZXNlbGYgb2YgdGhlIGFmb3JlbWVudGlvbmVkXG4gICBpbnZhcmlhbnQgYWZ0ZXIgcmVhZGluZyBvbmx5IHRoaXMgc21hbGwgYW1vdW50IG9mIGNvZGUuICBBZnRlciBkZWZpbmluZyBUIHdlIHRoZW5cbiAgIGltbWVkaWF0ZWx5IGRlZmluZSBpdHMgU3RhYmxlIGludGVyZmFjZS5cbiopXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICsnYSB0ID0gcHJpdmF0ZVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICB2YWwgaW52YXJpYW50IDogJ2EgdCAtPiB1bml0XG4gIHZhbCB0cnVlXyA6ICdhIHRcbiAgdmFsIGZhbHNlXyA6ICdhIHRcbiAgdmFsIG5vdF8gOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFuZGFsc28gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgb3JlbHNlIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGlmXyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGJhc2UgOiAnYSAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9XG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwXVxuXG4gIGxldCBpbnZhcmlhbnQgPVxuICAgIGxldCBzdWJ0ZXJtcyA9IGZ1bmN0aW9uXG4gICAgICB8IFRydWUgfCBGYWxzZSB8IEJhc2UgXyAtPiBbXVxuICAgICAgfCBOb3QgdDEgLT4gWyB0MSBdXG4gICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IFsgdDE7IHQyIF1cbiAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IFsgdDE7IHQyOyB0MyBdXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvbnRhaW5zX25vX2NvbnN0YW50cyA9IGZ1bmN0aW9uXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgdCAtPiBMaXN0Lml0ZXIgfmY6Y29udGFpbnNfbm9fY29uc3RhbnRzIChzdWJ0ZXJtcyB0KVxuICAgIGluXG4gICAgZnVuIHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgOztcblxuICBsZXQgdHJ1ZV8gPSBUcnVlXG4gIGxldCBmYWxzZV8gPSBGYWxzZVxuICBsZXQgYmFzZSB2ID0gQmFzZSB2XG5cbiAgbGV0IG5vdF8gPSBmdW5jdGlvblxuICAgIHwgVHJ1ZSAtPiBGYWxzZVxuICAgIHwgRmFsc2UgLT4gVHJ1ZVxuICAgIHwgTm90IHQgLT4gdFxuICAgIHwgdCAtPiBOb3QgdFxuICA7O1xuXG4gIGxldCByZWMgYW5kYWxzbyB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IF8sIEZhbHNlIHwgRmFsc2UsIF8gLT4gRmFsc2VcbiAgICB8IG90aGVyLCBUcnVlIHwgVHJ1ZSwgb3RoZXIgLT4gb3RoZXJcbiAgICB8IEFuZCAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW0FuZF1zIGxlYW4gcmlnaHQgLS0gc2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIEFuZCAodDFhLCBhbmRhbHNvIHQxYiB0MilcbiAgICB8IF8gLT4gQW5kICh0MSwgdDIpXG4gIDs7XG5cbiAgbGV0IHJlYyBvcmVsc2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBUcnVlIHwgVHJ1ZSwgXyAtPiBUcnVlXG4gICAgfCBvdGhlciwgRmFsc2UgfCBGYWxzZSwgb3RoZXIgLT4gb3RoZXJcbiAgICB8IE9yICh0MWEsIHQxYiksIF8gLT5cbiAgICAgICgqIG5lc3RlZCBbT3JdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBPciAodDFhLCBvcmVsc2UgdDFiIHQyKVxuICAgIHwgXyAtPiBPciAodDEsIHQyKVxuICA7O1xuXG4gIGxldCBpZl8gYSBiIGMgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgVHJ1ZSAtPiBiXG4gICAgfCBGYWxzZSAtPiBjXG4gICAgfCBfIC0+XG4gICAgICAobWF0Y2ggYiwgYyB3aXRoXG4gICAgICAgfCBUcnVlLCBfIC0+IG9yZWxzZSBhIGNcbiAgICAgICB8IF8sIEZhbHNlIC0+IGFuZGFsc28gYSBiXG4gICAgICAgfCBfLCBUcnVlIC0+IG9yZWxzZSAobm90XyBhKSBiXG4gICAgICAgfCBGYWxzZSwgXyAtPiBhbmRhbHNvIChub3RfIGEpIGNcbiAgICAgICB8IF8gLT4gSWYgKGEsIGIsIGMpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgOiBzaWdcbiAgICAoKiBUSElTIFRZUEUgQU5EIElUUyBTRVJJQUxJWkFUSU9OUyBTSE9VTEQgTkVWRVIgQkUgQ0hBTkdFRCAtIFBMRUFTRSBTUEVBSyBXSVRIXG4gICAgICAgQU5PVEhFUiBERVZFTE9QRVIgSUYgWU9VIE5FRUQgTU9SRSBERVRBSUwgKilcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICAgIHwgVHJ1ZVxuICAgICAgfCBGYWxzZVxuICAgICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgTm90IG9mICdhIHRcbiAgICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgICB8IEJhc2Ugb2YgJ2FcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgKCogdGhlIHJlbWFpbmRlciBvZiB0aGlzIHNpZ25hdHVyZSBjb25zaXN0cyBvZiBmdW5jdGlvbnMgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbnNcbiAgICAgICBvZiBzZXhwIGNvbnZlcnNpb25zIHRoYXQgYXJlIGFsc28gdXNlZnVsIG1vcmUgZ2VuZXJhbGx5ICopXG5cbiAgICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIG9yXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGdhdGhlcl9jb25qdW5jdHMgOiAnYSB0IC0+ICdhIHQgbGlzdFxuICAgIHZhbCBnYXRoZXJfZGlzanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgICAgfCBUcnVlXG4gICAgICB8IEZhbHNlXG4gICAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBOb3Qgb2YgJ2EgdFxuICAgICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICAgIHwgQmFzZSBvZiAnYVxuXG4gICAgKCogVGhpcyB0eXBlIGlzIGFzc3VtZWQgdG8gYmUgc3RhYmxlIGlmIHRoZSAnYSBpcyBzdGFibGUgKHNlZSBiaWcgY29tbWVudCBhYm92ZSkuICopXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIChfIDogJ2EgU3RhYmxlX3dpdG5lc3MudCkgOiAnYSB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFQgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4gICAgdHlwZSBzZXhwID0gU2V4cC50ID1cbiAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgIHwgTGlzdCBvZiBzZXhwIGxpc3RcblxuICAgICgqIGNoZWFwIGltcG9ydCAqKVxuXG4gICAgKCogZmxhdHRlbiBvdXQgbmVzdGVkIGFuZCdzICopXG4gICAgbGV0IGdhdGhlcl9jb25qdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogZmxhdHRlbiBvdXQgbmVzdGVkIG9yJ3MgKilcbiAgICBsZXQgZ2F0aGVyX2Rpc2p1bmN0cyB0ID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgICAgIHwgT3IgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCAodCA6OiBhY2MpIHRzXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBbIHQgXVxuICAgIDs7XG5cbiAgICAoKiBbYW5kX10gYW5kIFtvcl9dIHVzZSBbZm9sZF9yaWdodF0gaW5zdGVhZCBvZiBbZm9sZF9sZWZ0XSB0byBhdm9pZCBxdWFkcmF0aWNcbiAgICAgICBiZWhhdmlvciB3aXRoIFthbmRhbHNvXSBvciBbb3JlbHNlXSwgcmVzcGVjdGl2ZWx5LiAqKVxuICAgIGxldCBhbmRfIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OnRydWVfIH5mOmFuZGFsc29cbiAgICBsZXQgb3JfIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OmZhbHNlXyB+ZjpvcmVsc2VcblxuICAgIGxldCB1bmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4IF0gLT4geFxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyBvbmUgYXJndW1lbnQsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCB0ZXJuYXJ5IG5hbWUgYXJncyBzZXhwID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgfCBbIHg7IHk7IHogXSAtPiB4LCB5LCB6XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBhcmdzIGluXG4gICAgICAgIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlcyBleHBlY3RzIHRocmVlIGFyZ3VtZW50cywgJWQgZm91bmRcIiBuYW1lIG4pIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEJhc2UgeCAtPiBzZXhwX29mX3ZhbHVlIHhcbiAgICAgICAgfCBUcnVlIC0+IEF0b20gXCJ0cnVlXCJcbiAgICAgICAgfCBGYWxzZSAtPiBBdG9tIFwiZmFsc2VcIlxuICAgICAgICB8IE5vdCB0IC0+IExpc3QgWyBBdG9tIFwibm90XCI7IGF1eCB0IF1cbiAgICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gTGlzdCBbIEF0b20gXCJpZlwiOyBhdXggdDE7IGF1eCB0MjsgYXV4IHQzIF1cbiAgICAgICAgfCBBbmQgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Nvbmp1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcImFuZFwiIDo6IExpc3QubWFwIH5mOmF1eCB0cylcbiAgICAgICAgfCBPciBfIGFzIHQgLT5cbiAgICAgICAgICBsZXQgdHMgPSBnYXRoZXJfZGlzanVuY3RzIHQgaW5cbiAgICAgICAgICBMaXN0IChBdG9tIFwib3JcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICBpblxuICAgICAgYXV4IHRcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBiYXNlX29mX3NleHAgc2V4cCA9XG4gICAgICBsZXQgYmFzZSBzZXhwID0gYmFzZSAoYmFzZV9vZl9zZXhwIHNleHApIGluXG4gICAgICBsZXQgcmVjIGF1eCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQXRvbSBrdyAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcInRydWVcIiAtPiB0cnVlX1xuICAgICAgICAgICB8IFwiZmFsc2VcIiAtPiBmYWxzZV9cbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBMaXN0IChBdG9tIGt3IDo6IGFyZ3MpIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5sb3dlcmNhc2Uga3cgd2l0aFxuICAgICAgICAgICB8IFwiYW5kXCIgLT4gYW5kXyAoTGlzdC5tYXAgfmY6YXV4IGFyZ3MpXG4gICAgICAgICAgIHwgXCJvclwiIC0+IG9yXyAoTGlzdC5tYXAgfmY6YXV4IGFyZ3MpXG4gICAgICAgICAgIHwgXCJub3RcIiAtPiBub3RfIChhdXggKHVuYXJ5IFwibm90XCIgYXJncyBzZXhwKSlcbiAgICAgICAgICAgfCBcImlmXCIgLT5cbiAgICAgICAgICAgICBsZXQgeCwgeSwgeiA9IHRlcm5hcnkgXCJpZlwiIGFyZ3Mgc2V4cCBpblxuICAgICAgICAgICAgIGlmXyAoYXV4IHgpIChhdXggeSkgKGF1eCB6KVxuICAgICAgICAgICB8IF8gLT4gYmFzZSBzZXhwKVxuICAgICAgICB8IF8gLT4gYmFzZSBzZXhwXG4gICAgICBpblxuICAgICAgYXV4IHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliLlNleHBfZ3JhbW1hci50ID1cbiAgICAgIGxldCBkZWZucyA6IFNleHBsaWIuU2V4cF9ncmFtbWFyLmRlZm4gbGlzdCA9XG4gICAgICAgIGxldCBibGFuZyA6IFNleHBsaWIuU2V4cF9ncmFtbWFyLmdyYW1tYXIgPSBSZWN1cnNpdmUgKFwiYmxhbmdcIiwgWyBUeXZhciBcImFcIiBdKSBpblxuICAgICAgICBbIHsgdHljb24gPSBcImJsYW5nXCJcbiAgICAgICAgICA7IHR5dmFycyA9IFsgXCJhXCIgXVxuICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyBUeXZhciBcImFcIlxuICAgICAgICAgICAgICAgIDsgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX2luc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcInRydWVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcImZhbHNlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImlmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChibGFuZywgQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm5vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKGJsYW5nLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICBmdW4gYmFzZV9ncmFtbWFyIC0+IHsgdW50eXBlZCA9IFR5Y29uIChcImJsYW5nXCIsIFsgYmFzZV9ncmFtbWFyLnVudHlwZWQgXSwgZGVmbnMpIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubGV0IGNvbnN0YW50IGIgPSBpZiBiIHRoZW4gdHJ1ZV8gZWxzZSBmYWxzZV9cblxubW9kdWxlIHR5cGUgQ29uc3RydWN0b3JzID0gc2lnXG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdHJ1ZV8gOiBfIHRcbiAgdmFsIGZhbHNlXyA6IF8gdFxuICB2YWwgY29uc3RhbnQgOiBib29sIC0+IF8gdFxuICB2YWwgbm90XyA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgaWZfIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIGxldCBub3QgPSBub3RfXG4gIGxldCBhbmRfID0gYW5kX1xuICBsZXQgb3JfID0gb3JfXG4gIGxldCBjb25zdGFudCA9IGNvbnN0YW50XG4gIGxldCAoICYmICkgPSBhbmRhbHNvXG4gIGxldCAoIHx8ICkgPSBvcmVsc2VcbiAgbGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5lbmRcblxubGV0IGNvbnN0YW50X3ZhbHVlID0gZnVuY3Rpb25cbiAgfCBUcnVlIC0+IFNvbWUgdHJ1ZVxuICB8IEZhbHNlIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbigqIFt2YWx1ZXMgdF0gbGlzdHMgdGhlIGJhc2UgcHJlZGljYXRlcyBpbiBbdF0gZnJvbSBsZWZ0IHRvIHJpZ2h0ICopXG5sZXQgdmFsdWVzIHQgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgdiA6OiB0cyAtPiBsb29wICh2IDo6IGFjYykgdHNcbiAgICB8IFRydWUgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBOb3QgdDEgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHRzKVxuICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IElmICh0MSwgdDIsIHQzKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdDMgOjogdHMpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSBbIHQgXVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgdCBwZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgQmFzZSBhIC0+IG5leHQgKGYgYWNjIGEpIHBlbmRpbmdcbiAgICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gbmV4dCBhY2MgcGVuZGluZ1xuICAgICAgICB8IE5vdCB0IC0+IGxvb3AgYWNjIHQgcGVuZGluZ1xuICAgICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IGxvb3AgYWNjIHQxICh0MiA6OiBwZW5kaW5nKVxuICAgICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBsb29wIGFjYyB0MSAodDIgOjogdDMgOjogcGVuZGluZylcbiAgICAgIGFuZCBuZXh0IGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wIGFjYyB0IHRzXG4gICAgICBpblxuICAgICAgbG9vcCBpbml0IHQgW10gW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBsZW5ndGggPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkID0gQy5mb2xkXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGlzX2VtcHR5ID0gQy5pc19lbXB0eVxubGV0IGl0ZXIgPSBDLml0ZXJcbmxldCBsZW5ndGggPSBDLmxlbmd0aFxubGV0IG1lbSA9IEMubWVtXG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgcmVjIGJpbmQgdCB+ZjprID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQmFzZSB2IC0+IGsgdlxuICB8IFRydWUgLT4gdHJ1ZV9cbiAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgfCBOb3QgdDEgLT4gbm90XyAoYmluZCB0MSB+ZjprKVxuICAoKiBVbmZvcnR1bmF0ZWx5IHdlIG5lZWQgdG8gZHVwbGljYXRlIHNvbWUgb2YgdGhlIHNob3J0LWNpcmN1aXRpbmcgZnJvbSBbYW5kYWxzb10gYW5kXG4gICAgIGZyaWVuZHMgaGVyZS4gSW4gcHJpbmNpcGxlIHdlIGNvdWxkIGRvIHNvbWV0aGluZyBpbnZvbHZpbmcgW0xhenkudF0gYnV0IHRoZVxuICAgICBvdmVyaGVhZCBwcm9iYWJseSB3b3VsZG4ndCBiZSB3b3J0aCBpdC4gKilcbiAgfCBBbmQgKHQxLCB0MikgLT5cbiAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgICAgfCBvdGhlciAtPiBhbmRhbHNvIG90aGVyIChiaW5kIHQyIH5mOmspKVxuICB8IE9yICh0MSwgdDIpIC0+XG4gICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgIHwgVHJ1ZSAtPiB0cnVlX1xuICAgICB8IG90aGVyIC0+IG9yZWxzZSBvdGhlciAoYmluZCB0MiB+ZjprKSlcbiAgfCBJZiAodDEsIHQyLCB0MykgLT5cbiAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgfCBUcnVlIC0+IGJpbmQgdDIgfmY6a1xuICAgICB8IEZhbHNlIC0+IGJpbmQgdDMgfmY6a1xuICAgICB8IG90aGVyIC0+IGlmXyBvdGhlciAoYmluZCB0MiB+ZjprKSAoYmluZCB0MyB+ZjprKSlcbjs7XG5cbigqIHNlbWFudGljcyAqKVxuXG5sZXQgcmVjIGV2YWwgdCBiYXNlX2V2YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBUcnVlIC0+IHRydWVcbiAgfCBGYWxzZSAtPiBmYWxzZVxuICB8IEFuZCAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCAmJiBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE9yICh0MSwgdDIpIC0+IGV2YWwgdDEgYmFzZV9ldmFsIHx8IGV2YWwgdDIgYmFzZV9ldmFsXG4gIHwgTm90IHQgLT4gbm90IChldmFsIHQgYmFzZV9ldmFsKVxuICB8IElmICh0MSwgdDIsIHQzKSAtPiBpZiBldmFsIHQxIGJhc2VfZXZhbCB0aGVuIGV2YWwgdDIgYmFzZV9ldmFsIGVsc2UgZXZhbCB0MyBiYXNlX2V2YWxcbiAgfCBCYXNlIHggLT4gYmFzZV9ldmFsIHhcbjs7XG5cbmxldCBzcGVjaWFsaXplIHQgZiA9XG4gIGJpbmQgdCB+ZjooZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgYEtub3duIGMgLT4gY29uc3RhbnQgY1xuICAgIHwgYFVua25vd24gLT4gYmFzZSB2KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXZhbF9zZXQgfnVuaXZlcnNlOmFsbCBzZXRfb2ZfYmFzZSB0ID1cbiAgbGV0IHJlYyBhdXggKGIgOiBfIHQpID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICB8IFRydWUgLT4gZm9yY2UgYWxsXG4gICAgfCBGYWxzZSAtPiBTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooU2V0LmNvbXBhcmF0b3IgKGZvcmNlIGFsbCkpXG4gICAgfCBBbmQgKGEsIGIpIC0+IFNldC5pbnRlciAoYXV4IGEpIChhdXggYilcbiAgICB8IE9yIChhLCBiKSAtPiBTZXQudW5pb24gKGF1eCBhKSAoYXV4IGIpXG4gICAgfCBOb3QgYSAtPiBTZXQuZGlmZiAoZm9yY2UgYWxsKSAoYXV4IGEpXG4gICAgfCBCYXNlIGEgLT4gc2V0X29mX2Jhc2UgYVxuICAgIHwgSWYgKGNvbmQsIGEsIGIpIC0+XG4gICAgICBsZXQgY29uZCA9IGF1eCBjb25kIGluXG4gICAgICBTZXQudW5pb24gKFNldC5pbnRlciBjb25kIChhdXggYSkpIChTZXQuaW50ZXIgKFNldC5kaWZmIChmb3JjZSBhbGwpIGNvbmQpIChhdXggYikpXG4gIGluXG4gIGF1eCB0IFtAbm9udGFpbF1cbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgcmV0dXJuID0gYmFzZVxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgZW5kKVxuXG5tb2R1bGUgdHlwZSBNb25hZGljID0gc2lnXG4gIG1vZHVsZSBNIDogTW9uYWQuU1xuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQgTS50KSAtPiAnYiB0IE0udFxuICB2YWwgZXZhbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBNLnQpIC0+IGJvb2wgTS50XG5lbmRcblxubW9kdWxlIEZvcl9tb25hZCAoTSA6IE1vbmFkLlMpIDogTW9uYWRpYyB3aXRoIG1vZHVsZSBNIDo9IE0gPSBzdHJ1Y3RcbiAgb3BlbiBNLk1vbmFkX2luZml4XG5cbiAgbGV0IHJlYyBiaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQmFzZSB4IC0+IGYgeFxuICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgfCBBbmQgKGEsIGIpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSAtPiBNLnJldHVybiBmYWxzZV9cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBhbmRhbHNvIGEgYilcbiAgICB8IE9yIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBvcmVsc2UgYSBiKVxuICAgIHwgTm90IGEgLT4gYmluZCBhIH5mID4+fCBub3RfXG4gICAgfCBJZiAoYSwgYiwgYykgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgRmFsc2UgLT4gYmluZCBjIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj49IGZ1biBiIC0+IGJpbmQgYyB+ZiA+PnwgZnVuIGMgLT4gaWZfIGEgYiBjKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIHggLT4gZiB4ID4+fCBiYXNlKVxuXG4gIGxldCBldmFsIHQgfmYgPVxuICAgIGJpbmQgdCB+ZjooZnVuIHggLT5cbiAgICAgIGYgeFxuICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gdHJ1ZV9cbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VfKVxuICAgID4+fCBmdW4gdCAtPiBldmFsIHQgTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gIDs7XG5lbmRcblxuKCoqIFdlIGF2b2lkIGRlcml2aW5nIHF1aWNrY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGludmFyaWFudHMgZGVzY3JpYmVkIGluIFtUXSdzIGNvbW1lbnRzXG4gICAgYWJvdmUgYXJlIHByZXNlcnZlZC4gKilcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBhX2dlbmVyYXRvciA9XG4gIFF1aWNrY2hlY2suR2VuZXJhdG9yLnJlY3Vyc2l2ZV91bmlvblxuICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOmJhc2UgYV9nZW5lcmF0b3JcbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiB0cnVlX1xuICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3Iuc2luZ2xldG9uIGZhbHNlX1xuICAgIF1cbiAgICB+ZjooZnVuIHNlbGYgLT5cbiAgICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIHNlbGYgfmY6bm90X1xuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggfHwgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggJiYgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAzIHNlbGYgc2VsZiBzZWxmIH5mOmlmX1xuICAgICAgXSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyICh0eXBlIGEpIChhX3Nocmlua2VyIDogYSBRdWlja2NoZWNrLlNocmlua2VyLnQpID1cbiAgUXVpY2tjaGVjay5TaHJpbmtlci5maXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgYmlub3Agb3BlcmF0b3IgbGVmdCByaWdodCA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBsZWZ0XG4gICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHJpZ2h0XG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGxlZnQpIH5mOihmdW4gbGVmdCAtPlxuICAgICAgICAgICAgb3BlcmF0b3IgbGVmdCByaWdodClcbiAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgcmlnaHQpIH5mOihmdW4gcmlnaHQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIF1cbiAgICBpblxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuY3JlYXRlIChmdW4gdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBCYXNlIGEgLT4gU2VxdWVuY2UubWFwIH5mOmJhc2UgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIGFfc2hyaW5rZXIgYSlcbiAgICAgIHwgT3IgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggfHwgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IEFuZCAobGVmdCwgcmlnaHQpIC0+IGJpbm9wIE8uKCAmJiApIGxlZnQgcmlnaHRcbiAgICAgIHwgTm90IHQgLT5cbiAgICAgICAgU2VxdWVuY2UuYXBwZW5kXG4gICAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiB0KVxuICAgICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6bm90XyAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0KSlcbiAgICAgIHwgSWYgKGlmXywgdGhlbl8sIGVsc2VfKSAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIGlmX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHRoZW5fXG4gICAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gZWxzZV9cbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBpZl8pIH5mOihmdW4gaWZfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0aGVuXykgfmY6KGZ1biB0aGVuXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgZWxzZV8pIH5mOihmdW4gZWxzZV8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIF0pKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgKHR5cGUgYSkgKGFfb2JzZXJ2ZXIgOiBhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCkgPVxuICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGhhc2hfZm9sZF90XG4gICAgICAoZnVuIGhhc2ggYSAtPiBRdWlja2NoZWNrLk9ic2VydmVyLm9ic2VydmUgYV9vYnNlcnZlciBhIH5zaXplIH5oYXNoKVxuICAgICAgaGFzaFxuICAgICAgdClcbjs7XG4iLCIoKiBDb252ZXJzaW9ucyBiZXR3ZWVuIHVuaXRzIG9mIG1lYXN1cmUgYmFzZWQgb24gYnl0ZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBSZXByID0gSW50NjNcbm1vZHVsZSBUID0gQnl0ZV91bml0czBcbmluY2x1ZGUgKFQgOiBtb2R1bGUgdHlwZSBvZiBUIHdpdGggbW9kdWxlIFJlcHIgOj0gUmVwcilcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggLSApIGEgYiA9IG9mX3JlcHIgKFJlcHIuKCAtICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYikpXG4gIGxldCAoICsgKSBhIGIgPSBvZl9yZXByIChSZXByLiggKyApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCAvLyApIGEgYiA9IFJlcHIuKCAvLyApICh0b19yZXByIGEpICh0b19yZXByIGIpXG5cbiAgbGV0ICggLyApIHQgcyA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgKFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdCkgLy4gcykpXG4gIGxldCAoICogKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpICouIHMpKVxuZW5kXG5cbmluY2x1ZGUgSW5maXhcblxubGV0IGFicyB0ID0gb2ZfcmVwciAoUmVwci5hYnMgKHRvX3JlcHIgdCkpXG5sZXQgbmVnIHQgPSBvZl9yZXByIChSZXByLm5lZyAodG9fcmVwciB0KSlcbmxldCBzaWduIHQgPSBSZXByLnNpZ24gKHRvX3JlcHIgdClcbmxldCB6ZXJvID0gb2ZfcmVwciBSZXByLnplcm9cbmxldCBtaW5fdmFsdWUgPSBvZl9yZXByIFJlcHIubWluX3ZhbHVlXG5sZXQgbWF4X3ZhbHVlID0gb2ZfcmVwciBSZXByLm1heF92YWx1ZVxubGV0IHNjYWxlID0gSW5maXguKCAqIClcbmxldCBpc2NhbGUgdCBzID0gb2ZfcmVwciAoUmVwci4oICogKSAodG9fcmVwciB0KSAoUmVwci5vZl9pbnQgcykpXG5sZXQgYnl0ZXNfaW50X2V4biA9IFQuYnl0ZXNfaW50X2V4blxubGV0IGJ5dGVzX2ludDYzID0gdG9fcmVwclxubGV0IGJ5dGVzX2ludDY0IHQgPSBSZXByLnRvX2ludDY0ICh0b19yZXByIHQpXG5sZXQgYnl0ZXNfZmxvYXQgdCA9IFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdClcbmxldCBvZl9ieXRlc19pbnQgYiA9IG9mX3JlcHIgKFJlcHIub2ZfaW50IGIpXG5sZXQgb2ZfYnl0ZXNfaW50NjMgPSBvZl9yZXByXG5sZXQgb2ZfYnl0ZXNfaW50NjRfZXhuIGIgPSBvZl9yZXByIChSZXByLm9mX2ludDY0X2V4biBiKVxubGV0IG9mX2J5dGVzX2Zsb2F0X2V4biBiID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCBiKVxuXG5sZXQgKGJ5dGVzIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbYnl0ZXNfaW50X2V4bl0sIFtieXRlc19pbnQ2M10sIFtieXRlc19pbnQ2NF0gb3IgXFxcbiAgICAgICAgW2J5dGVzX2Zsb2F0XSBhcyBhcHByb3ByaWF0ZS5cIl0pXG4gID1cbiAgYnl0ZXNfZmxvYXRcbjs7XG5cbmxldCAob2ZfYnl0ZXMgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc19pbnRdLCBbb2ZfYnl0ZXNfaW50NjNdLCBcXFxuICAgICAgICBbb2ZfYnl0ZXNfaW50NjRfZXhuXSBvciBbb2ZfYnl0ZXNfZmxvYXRfZXhuXSBhcyBhcHByb3ByaWF0ZS5cIl0pXG4gID1cbiAgb2ZfYnl0ZXNfZmxvYXRfZXhuXG47O1xuXG5sZXQga2lsb2J5dGUgOiB0ID0gb2ZfYnl0ZXNfaW50IDEwMjRcbmxldCBtZWdhYnl0ZSA9IGlzY2FsZSBraWxvYnl0ZSAxMDI0XG5sZXQgZ2lnYWJ5dGUgPSBpc2NhbGUgbWVnYWJ5dGUgMTAyNFxubGV0IHRlcmFieXRlID0gaXNjYWxlIGdpZ2FieXRlIDEwMjRcbmxldCBwZXRhYnl0ZSA9IGlzY2FsZSB0ZXJhYnl0ZSAxMDI0XG5sZXQgZXhhYnl0ZSA9IGlzY2FsZSBwZXRhYnl0ZSAxMDI0XG5cbmxldCB3b3JkID1cbiAgbGV0IG1vZHVsZSBXID0gV29yZF9zaXplIGluXG4gIG1hdGNoIFcud29yZF9zaXplIHdpdGhcbiAgfCBXLlczMiAtPiBvZl9ieXRlc19pbnQgNFxuICB8IFcuVzY0IC0+IG9mX2J5dGVzX2ludCA4XG47O1xuXG5sZXQga2lsb2J5dGVzIHQgOiBmbG9hdCA9IEluZml4LiggLy8gKSB0IGtpbG9ieXRlXG5sZXQgbWVnYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBtZWdhYnl0ZVxubGV0IGdpZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZ2lnYWJ5dGVcbmxldCB0ZXJhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IHRlcmFieXRlXG5sZXQgcGV0YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBwZXRhYnl0ZVxubGV0IGV4YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBleGFieXRlXG5sZXQgd29yZHNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuIChSZXByLiggLyApICh0b19yZXByIHQpICh0b19yZXByIHdvcmQpKVxubGV0IHdvcmRzX2Zsb2F0IHQgPSBJbmZpeC4oIC8vICkgdCB3b3JkXG5sZXQgb2Zfa2lsb2J5dGVzIHQgOiB0ID0gSW5maXguKCAqICkga2lsb2J5dGUgdFxubGV0IG9mX21lZ2FieXRlcyB0ID0gSW5maXguKCAqICkgbWVnYWJ5dGUgdFxubGV0IG9mX2dpZ2FieXRlcyB0ID0gSW5maXguKCAqICkgZ2lnYWJ5dGUgdFxubGV0IG9mX3RlcmFieXRlcyB0ID0gSW5maXguKCAqICkgdGVyYWJ5dGUgdFxubGV0IG9mX3BldGFieXRlcyB0ID0gSW5maXguKCAqICkgcGV0YWJ5dGUgdFxubGV0IG9mX2V4YWJ5dGVzIHQgPSBJbmZpeC4oICogKSBleGFieXRlIHRcbmxldCBvZl93b3Jkc19pbnQgdCA9IGlzY2FsZSB3b3JkIHRcbmxldCBvZl93b3Jkc19mbG9hdF9leG4gdCA9IEluZml4LiggKiApIHdvcmQgdFxuXG5sZXQgKHdvcmRzIFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW3dvcmRzX2ludF9leG5dIG9yIFt3b3Jkc19mbG9hdF1cIl0pID1cbiAgd29yZHNfZmxvYXRcbjs7XG5cbmxldCAob2Zfd29yZHMgW0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2Zfd29yZHNfaW50XSBvciBbb2Zfd29yZHNfZmxvYXRfZXhuXVwiXSkgPVxuICBvZl93b3Jkc19mbG9hdF9leG5cbjs7XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgSW50LiggPCApIGxlbmd0aCAyXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSB0b28gc2hvcnRcIiBzICgpO1xuICBsZXQgYmFzZV9zdHIgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KEludC4oIC0gKSBsZW5ndGggMSkgaW5cbiAgbGV0IGV4dF9jaGFyID0gQ2hhci5sb3dlcmNhc2Ugcy5bSW50LiggLSApIGxlbmd0aCAxXSBpblxuICBsZXQgYmFzZSA9XG4gICAgdHJ5IEZsb2F0Lm9mX3N0cmluZyBiYXNlX3N0ciB3aXRoXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtICVzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gZmxvYXQgXCJcbiAgICAgICAgc1xuICAgICAgICBiYXNlX3N0clxuICAgICAgICAoKVxuICBpblxuICBtYXRjaCBleHRfY2hhciB3aXRoXG4gIHwgJ2InIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biBiYXNlXG4gIHwgJ2snIC0+IG9mX2tpbG9ieXRlcyBiYXNlXG4gIHwgJ20nIC0+IG9mX21lZ2FieXRlcyBiYXNlXG4gIHwgJ2cnIC0+IG9mX2dpZ2FieXRlcyBiYXNlXG4gIHwgJ3QnIC0+IG9mX3RlcmFieXRlcyBiYXNlXG4gIHwgJ3AnIC0+IG9mX3BldGFieXRlcyBiYXNlXG4gIHwgJ2UnIC0+IG9mX2V4YWJ5dGVzIGJhc2VcbiAgfCAndycgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIGJhc2VcbiAgfCBleHQgLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtIGlsbGVnYWwgZXh0ZW5zaW9uICVjXCIgcyBleHQgKClcbjs7XG5cbmxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIG9mX3N0cmluZ1xuXG5sZXQgbGFyZ2VzdF9tZWFzdXJlIHQgPVxuICBsZXQgdF9hYnMgPSBvZl9yZXByIChSZXByLmFicyAodG9fcmVwciB0KSkgaW5cbiAgaWYgdF9hYnMgPj0gZXhhYnl0ZVxuICB0aGVuIGBFeGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHBldGFieXRlXG4gIHRoZW4gYFBldGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHRlcmFieXRlXG4gIHRoZW4gYFRlcmFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGdpZ2FieXRlXG4gIHRoZW4gYEdpZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IG1lZ2FieXRlXG4gIHRoZW4gYE1lZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGtpbG9ieXRlXG4gIHRoZW4gYEtpbG9ieXRlc1xuICBlbHNlIGBCeXRlc1xuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAoKiBTaGFyZSB0aGUgY29tbW9uIFtvZl9zZXhwXSBjb2RlIGZvciBbVjFdIGFuZCBbVjJdLiAqKVxuICBtb2R1bGUgT2Zfc2V4cF92MV92MiA6IHNpZ1xuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fbWF0Y2ggKCkgPSBmYWlsd2l0aCBcIk5vdCBhIHJlY29nbml6ZWQgW0J5dGVfdW5pdHMudF0gcmVwcmVzZW50YXRpb25cIlxuXG4gICAgbGV0IG9mX3ZhbHVlX3NleHBfYW5kX3VuaXRfbmFtZSB2YWxfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiQnl0ZXNcIiAtPlxuICAgICAgICAodHJ5IG9mX2J5dGVzX2ludDYzIChJbnQ2My50X29mX3NleHAgdmFsX3NleHApIHdpdGhcbiAgICAgICAgIHwgXyAtPiBvZl9ieXRlc19mbG9hdF9leG4gKEZsb2F0LnRfb2Zfc2V4cCB2YWxfc2V4cCkpXG4gICAgICB8IFwiS2lsb2J5dGVzXCIgLT4gb2Zfa2lsb2J5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIk1lZ2FieXRlc1wiIC0+IG9mX21lZ2FieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJHaWdhYnl0ZXNcIiAtPiBvZl9naWdhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiVGVyYWJ5dGVzXCIgLT4gb2ZfdGVyYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIlBldGFieXRlc1wiIC0+IG9mX3BldGFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJFeGFieXRlc1wiIC0+IG9mX2V4YWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIldvcmRzXCIgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBfIC0+IG5vX21hdGNoICgpXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gc3RyIC0+IG9mX3N0cmluZyBzdHJcbiAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIHVuaXRfbmFtZTsgdmFsdWUgXSAtPlxuICAgICAgICBvZl92YWx1ZV9zZXhwX2FuZF91bml0X25hbWUgdmFsdWUgdW5pdF9uYW1lXG4gICAgICB8IF8gLT4gbm9fbWF0Y2ggKClcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIHRyeSB0X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGV4biAtPiByYWlzZSAoU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHNleHApKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2Zsb2F0XG4gICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19mbG9hdF9leG5cblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBzdGFibGVfd2l0bmVzc19mbG9hdCBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgKCogVjEgb25seSBnb2VzIHVwIHRvIGdpZ2FieXRlcyAqKVxuICAgICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgICAgfCBgQnl0ZXMgLT4gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfZmxvYXQgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEtpbG9ieXRlcyAtPiBbJXNleHAgYEtpbG9ieXRlcyAoa2lsb2J5dGVzIHQgOiBmbG9hdCldXG4gICAgICB8IGBNZWdhYnl0ZXMgLT4gWyVzZXhwIGBNZWdhYnl0ZXMgKG1lZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgR2lnYWJ5dGVzIHwgYFRlcmFieXRlcyB8IGBQZXRhYnl0ZXMgfCBgRXhhYnl0ZXMgLT5cbiAgICAgICAgWyVzZXhwIGBHaWdhYnl0ZXMgKGdpZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubG93ZXJjYXNlICh0b19zdHJpbmcgdClcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5cbiAgICAoKiBUaGlzIHRlc3QgZG9jdW1lbnRzIHRoZSBvcmlnaW5hbCB0by1zdHJpbmcgcmVwcmVzZW50YXRpb24gYW5kIGZhaWxzIHVuZGVyIGphdmFzY3JpcHRcbiAgICAgICBkdWUgdG8gZGlmZmVyZW5jZXMgaW4gdGhlIHJvdW5kaW5nLiAqKVxuICAgIGxldCVleHBlY3RfdGVzdCAoXyBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDAwYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMjNiIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMWsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjAwMDk4ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxNTAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDEuNDY0ODRrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNzY1NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ny42NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDk3Ni41NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNTM2NzRtIHx9XVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2ludDYzXG4gICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19pbnQ2M1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDYzLlN0YWJsZS5WMSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfaW50NjMgdCA6IEludDYzLnQpXVxuICBlbmRcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IFQudG9fc3RyaW5nXG5cbm1vZHVsZSBTaG9ydCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0b19zdHJpbmcgdCA9XG4gICAgbGV0IHRvX3VuaXRzX3N0ciB0b191bml0IGV4dCA9XG4gICAgICBsZXQgZiA9IHRvX3VuaXQgdCBpblxuICAgICAgbGV0IGZfYWJzID0gRmxvYXQuYWJzIGYgaW5cbiAgICAgIGlmIEZsb2F0LlJvYnVzdGx5X2NvbXBhcmFibGUuKCA+PS4gKSBmX2FicyAxMDAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjBmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBpZiBGbG9hdC5Sb2J1c3RseV9jb21wYXJhYmxlLiggPj0uICkgZl9hYnMgMTAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjFmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJS4yZiVjXCIgZiBleHRcbiAgICBpblxuICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICB8IGBCeXRlcyAtPiBzcHJpbnRmIFwiJWRCXCIgKGJ5dGVzX2ludF9leG4gdClcbiAgICB8IGBLaWxvYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGtpbG9ieXRlcyAnSydcbiAgICB8IGBNZWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIG1lZ2FieXRlcyAnTSdcbiAgICB8IGBHaWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGdpZ2FieXRlcyAnRydcbiAgICB8IGBUZXJhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHRlcmFieXRlcyAnVCdcbiAgICB8IGBQZXRhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHBldGFieXRlcyAnUCdcbiAgICB8IGBFeGFieXRlcyAtPiB0b191bml0c19zdHIgZXhhYnl0ZXMgJ0UnXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgWyVleHBlY3Qge3wgMTAwMEIgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjMpO1xuICAgIFslZXhwZWN0IHt8IDEwMjNCIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICBbJWV4cGVjdCB7fCAxLjAwSyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgWyVleHBlY3Qge3wgMS4wMEsgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ljc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ny43SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOTc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDkuNTRNIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkuMzFHIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTAuOVQgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfZmxvYXRfZXhuIDEwMDAwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDg4LjhQIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAzMDAwMDAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgMi42MEUgfH1dO1xuICAgICgpXG4gIDs7XG5lbmRcblxubGV0IHRvX3N0cmluZ19zaG9ydCA9IFNob3J0LnRvX3N0cmluZ1xuXG5sZXQgKGNyZWF0ZSBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX2J5dGVzXSwgW29mX2tpbG9ieXRlc10sIFtvZl9tZWdhYnl0ZXNdLCBldGMgYXMgXFxcbiAgICAgICAgYXBwcm9wcmlhdGUuXCJdKVxuICA9XG4gIGZ1biB1bml0cyB2YWx1ZSAtPlxuICBtYXRjaCB1bml0cyB3aXRoXG4gIHwgYEJ5dGVzIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biB2YWx1ZVxuICB8IGBLaWxvYnl0ZXMgLT4gb2Zfa2lsb2J5dGVzIHZhbHVlXG4gIHwgYE1lZ2FieXRlcyAtPiBvZl9tZWdhYnl0ZXMgdmFsdWVcbiAgfCBgR2lnYWJ5dGVzIC0+IG9mX2dpZ2FieXRlcyB2YWx1ZVxuICB8IGBXb3JkcyAtPiBvZl93b3Jkc19mbG9hdF9leG4gdmFsdWVcbjs7XG5cbmluY2x1ZGVcbiAgUXVpY2tjaGVja2FibGUuT2ZfcXVpY2tjaGVja2FibGVcbiAgICAoUmVwcilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgb2ZfcXVpY2tjaGVja2FibGUgPSBvZl9yZXByXG4gICAgICBsZXQgdG9fcXVpY2tjaGVja2FibGUgPSB0b19yZXByXG4gICAgZW5kKVxuIiwiKCoqIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHBvbHltb3JwaGljIGZ1bmN0aW9uYWwgZG91YmxlLWVuZGVkIHF1ZXVlLiAqKVxuXG4oKiogSW52YXJpYW50czpcbiAgICAtIHF1ZXVlLmxlbmd0aCA9IExpc3QubGVuZ3RoIHF1ZXVlLmZyb250ICsgTGlzdC5sZW5ndGggcXVldWUuYmFja1xuICAgIC0gaWYgcXVldWUgaGFzID49IDIgZWxlbWVudHMsIG5laXRoZXIgZnJvbnQgbm9yIGJhY2sgYXJlIGVtcHR5XG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmV4Y2VwdGlvbiBFbXB0eSBbQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlICdhIHQgPVxuICB7IGZyb250IDogJ2EgbGlzdFxuICA7IGJhY2sgOiAnYSBsaXN0XG4gIDsgbGVuZ3RoIDogaW50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgZiB0ID1cbiAgbGV0IG5fZnJvbnQgPSBMaXN0Lmxlbmd0aCB0LmZyb250IGluXG4gIGxldCBuX2JhY2sgPSBMaXN0Lmxlbmd0aCB0LmJhY2sgaW5cbiAgYXNzZXJ0ICh0Lmxlbmd0aCA9IG5fZnJvbnQgKyBuX2JhY2spO1xuICBhc3NlcnQgKHQubGVuZ3RoIDwgMiB8fCAobl9mcm9udCA8PiAwICYmIG5fYmFjayA8PiAwKSk7XG4gIExpc3QuaXRlciB0LmZyb250IH5mO1xuICBMaXN0Lml0ZXIgdC5iYWNrIH5mXG47O1xuXG5sZXQgbWFrZSB+bGVuZ3RoIH5mcm9udCB+YmFjayA9XG4gIG1hdGNoIGZyb250LCBiYWNrIHdpdGhcbiAgfCBbXSwgW10gfCBbIF8gXSwgW10gfCBbXSwgWyBfIF0gfCBfIDo6IF8sIF8gOjogXyAtPiB7IGZyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IFtdLCBfIDo6IF8gOjogXyAtPlxuICAgIGxldCBiYWNrLCByZXZfZnJvbnQgPSBMaXN0LnNwbGl0X24gYmFjayAobGVuZ3RoIC8gMikgaW5cbiAgICB7IGZyb250ID0gTGlzdC5yZXYgcmV2X2Zyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IF8gOjogXyA6OiBfLCBbXSAtPlxuICAgIGxldCBmcm9udCwgcmV2X2JhY2sgPSBMaXN0LnNwbGl0X24gZnJvbnQgKGxlbmd0aCAvIDIpIGluXG4gICAgeyBmcm9udDsgYmFjayA9IExpc3QucmV2IHJldl9iYWNrOyBsZW5ndGggfVxuOztcblxubGV0IGVtcHR5ID0geyBmcm9udCA9IFtdOyBiYWNrID0gW107IGxlbmd0aCA9IDAgfVxubGV0IGVucXVldWVfZnJvbnQgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5mcm9udDooeCA6OiB0LmZyb250KSB+YmFjazp0LmJhY2tcbmxldCBlbnF1ZXVlX2JhY2sgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5iYWNrOih4IDo6IHQuYmFjaykgfmZyb250OnQuZnJvbnRcblxubGV0W0Bjb2xkXSByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8ZnJvbnR8ID0gMCwgfGJhY2t8ID49IDJcIl1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8YmFja3wgPSAwLCB8ZnJvbnR8ID49IDJcIl1cbjs7XG5cbmxldCBwZWVrX2Zyb250X2V4biB0ID1cbiAgbWF0Y2ggdC5mcm9udCB3aXRoXG4gIHwgeCA6OiBfIC0+IHhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyB4IF0gLT4geFxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBwZWVrX2JhY2tfZXhuIHQgPVxuICBtYXRjaCB0LmJhY2sgd2l0aFxuICB8IHggOjogXyAtPiB4XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5mcm9udCB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIHggXSAtPiB4XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9mcm9udF9leG4gdCA9XG4gIG1hdGNoIHQuZnJvbnQgd2l0aFxuICB8IF8gOjogeHMgLT4gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCAtIDEpIH5mcm9udDp4cyB+YmFjazp0LmJhY2tcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9iYWNrX2V4biB0ID1cbiAgbWF0Y2ggdC5iYWNrIHdpdGhcbiAgfCBfIDo6IHhzIC0+IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggLSAxKSB+YmFjazp4cyB+ZnJvbnQ6dC5mcm9udFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuZnJvbnQgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9iYWNrX2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID0gcGVla19mcm9udF9leG4gdCwgZHJvcF9mcm9udF9leG4gdFxubGV0IGRlcXVldWVfYmFja19leG4gdCA9IHBlZWtfYmFja19leG4gdCwgZHJvcF9iYWNrX2V4biB0XG5cbmxldCBvcHRpb25hbCBmIHQgPVxuICBtYXRjaCBmIHQgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIEVtcHR5IC0+IE5vbmVcbjs7XG5cbmxldCBwZWVrX2Zyb250IHQgPSBvcHRpb25hbCBwZWVrX2Zyb250X2V4biB0XG5sZXQgcGVla19iYWNrIHQgPSBvcHRpb25hbCBwZWVrX2JhY2tfZXhuIHRcbmxldCBkcm9wX2Zyb250IHQgPSBvcHRpb25hbCBkcm9wX2Zyb250X2V4biB0XG5sZXQgZHJvcF9iYWNrIHQgPSBvcHRpb25hbCBkcm9wX2JhY2tfZXhuIHRcbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBvcHRpb25hbCBkZXF1ZXVlX2Zyb250X2V4biB0XG5sZXQgZGVxdWV1ZV9iYWNrIHQgPSBvcHRpb25hbCBkZXF1ZXVlX2JhY2tfZXhuIHRcblxubGV0IGVucXVldWUgdCBzaWRlIHggPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZW5xdWV1ZV9mcm9udCB0IHhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB4XG47O1xuXG5sZXQgcGVlayB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbjs7XG5cbmxldCBwZWVrX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IHBlZWtfYmFja19leG4gdFxuOztcblxubGV0IGRyb3AgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkZXF1ZXVlIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2sgdFxuOztcblxubGV0IGRlcXVldWVfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgcmV2IHQgPSB7IHQgd2l0aCBmcm9udCA9IHQuYmFjazsgYmFjayA9IHQuZnJvbnQgfVxuXG5tb2R1bGUgQXJiaXRyYXJ5X29yZGVyID0gc3RydWN0XG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2X2FwcGVuZCB0LmZyb250IHQuYmFja1xuICBsZXQgdG9fYXJyYXkgdCA9IEFycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdClcbiAgbGV0IHRvX3NlcXVlbmNlIHQgPSBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5mcm9udCkgKFNlcXVlbmNlLm9mX2xpc3QgdC5iYWNrKVxuXG4gIGxldCBzdW0gKHR5cGUgYSkgKG1vZHVsZSBNIDogQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gICAgbGV0IG9wZW4gTSBpblxuICAgIExpc3Quc3VtIChtb2R1bGUgTSkgdC5mcm9udCB+ZiArIExpc3Quc3VtIChtb2R1bGUgTSkgdC5iYWNrIH5mXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPSBMaXN0LmNvdW50IHQuZnJvbnQgfmYgKyBMaXN0LmNvdW50IHQuYmFjayB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIHQuZnJvbnQgfmYgJiYgTGlzdC5mb3JfYWxsIHQuYmFjayB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyB0LmZyb250IH5mIHx8IExpc3QuZXhpc3RzIHQuYmFjayB+ZlxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgdC5mcm9udCB4IHx8IExpc3QubWVtIH5lcXVhbCB0LmJhY2sgeFxuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIExpc3QuaXRlciB0LmZyb250IH5mO1xuICAgIExpc3QuaXRlciB0LmJhY2sgfmZcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAoTGlzdC5mb2xkIHQuZnJvbnQgfmluaXQgfmYgfD4gZnVuIGluaXQgLT4gTGlzdC5mb2xkIHQuYmFjayB+aW5pdCB+ZikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kIHQuZnJvbnQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LmZpbmQgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kX21hcCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kX21hcCB0LmJhY2sgfmZcbiAgICB8IHNvbWUgLT4gc29tZVxuICA7O1xuXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWF4X2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1heF9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA+PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9XG4gICAgbWF0Y2ggTGlzdC5taW5fZWx0IHQuZnJvbnQgfmNvbXBhcmUsIExpc3QubWluX2VsdCB0LmJhY2sgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSwgb3B0IHwgb3B0LCBOb25lIC0+IG9wdFxuICAgIHwgKFNvbWUgeCBhcyBzb21lX3gpLCAoU29tZSB5IGFzIHNvbWVfeSkgLT5cbiAgICAgIGlmIGNvbXBhcmUgeCB5IDw9IDAgdGhlbiBzb21lX3ggZWxzZSBzb21lX3lcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9jb250YWluZXIgKEYgOiBzaWdcbiAgICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdG9fbGlzdCA9IEYudG9fbGlzdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCAodG9fbGlzdCB0KSB4XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAodG9fbGlzdCB0KSB+aW5pdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsICh0b19saXN0IHQpIH5mXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IExpc3Quc3VtIG0gKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IExpc3QuZmluZF9tYXAgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHRvX2FycmF5IHQgPSBMaXN0LnRvX2FycmF5ICh0b19saXN0IHQpXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1pbl9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IExpc3QubWF4X2VsdCAodG9fbGlzdCB0KSB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuZW5kXG5cbm1vZHVsZSBGcm9udF90b19iYWNrID0gc3RydWN0XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5mcm9udDpsaXN0IH5iYWNrOltdXG4gIGxldCB0b19saXN0IHQgPSB0LmZyb250IEAgTGlzdC5yZXYgdC5iYWNrXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmZyb250KSAoU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgdC5iYWNrKSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGJhY2sgPVxuICAgICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDooMCwgW10pIH5mOihmdW4gKGxlbmd0aCwgYWNjKSBhIC0+XG4gICAgICAgIGxlbmd0aCArIDEsIGEgOjogYWNjKVxuICAgIGluXG4gICAgbWFrZSB+bGVuZ3RoIH5mcm9udDpbXSB+YmFja1xuICA7O1xuXG4gIGluY2x1ZGUgTWFrZV9jb250YWluZXIgKHN0cnVjdFxuICAgICAgbGV0IHRvX2xpc3QgPSB0b19saXN0XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBCYWNrX3RvX2Zyb250ID0gc3RydWN0XG4gIGxldCB0b19saXN0IHQgPSB0LmJhY2sgQCBMaXN0LnJldiB0LmZyb250XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5iYWNrOmxpc3QgfmZyb250OltdXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmJhY2spIChTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiB0LmZyb250KSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGZyb250ID1cbiAgICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6KDAsIFtdKSB+ZjooZnVuIChsZW5ndGgsIGFjYykgYSAtPlxuICAgICAgICBsZW5ndGggKyAxLCBhIDo6IGFjYylcbiAgICBpblxuICAgIG1ha2Ugfmxlbmd0aCB+ZnJvbnQgfmJhY2s6W11cbiAgOztcblxuICBpbmNsdWRlIE1ha2VfY29udGFpbmVyIChzdHJ1Y3RcbiAgICAgIGxldCB0b19saXN0ID0gdG9fbGlzdFxuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlIEZyb250X3RvX2JhY2tcblxubGV0IHNpbmdsZXRvbiB4ID0gb2ZfbGlzdCBbIHggXVxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgZWx0IC0+IGZvbGQgKGYgZWx0KSB+aW5pdDp0IH5mOmVucXVldWVfYmFjaylcbiAgICA7O1xuXG4gICAgbGV0IHJldHVybiA9IHNpbmdsZXRvblxuXG4gICAgbGV0IG1hcCA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICB7IGZyb250ID0gTGlzdC5tYXAgdC5mcm9udCB+ZjsgYmFjayA9IExpc3QubWFwIHQuYmFjayB+ZjsgbGVuZ3RoID0gdC5sZW5ndGggfSlcbiAgICA7O1xuICBlbmQpXG5cbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9IExpc3QuY29tcGFyZSBjbXAgKHRvX2xpc3QgdDEpICh0b19saXN0IHQyKVxubGV0IGVxdWFsIGVxIHQxIHQyID0gTGlzdC5lcXVhbCBlcSAodG9fbGlzdCB0MSkgKHRvX2xpc3QgdDIpXG5cbmxldCBoYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfYSBzdGF0ZSB0ID1cbiAgZm9sZCB+ZjpoYXNoX2ZvbGRfYSB+aW5pdDooWyVoYXNoX2ZvbGQ6IGludF0gc3RhdGUgKGxlbmd0aCB0KSkgdFxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gWyVzZXhwX29mOiBlbHQgbGlzdF0gKHRvX2xpc3QgdClcbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChbJW9mX3NleHA6IGVsdCBsaXN0XSBzZXhwKVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IExpc3QudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgbWFwID0gbWFwXG5cbiAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODNmOTY5ODItNDk5Mi0xMWU2LTkxOWQtZmJkZGNmZGNhNTc2XCJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5GZGVxdWVcIlxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcblxuICAgICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgbmV4dCBhY2MgbiA9XG4gICAgICAgICAgICBpZiBsZW4gPSBuXG4gICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGFzc2VydCAobiA9IGxlbmd0aCBhY2MpO1xuICAgICAgICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgICAgICAgbG9vcCBuZXh0IChlbnF1ZXVlX2JhY2sgYWNjIHgpIChuICsgMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIG5leHQgZW1wdHkgMFxuICAgICAgICA7O1xuICAgICAgZW5kKVxuXG4gICAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBwcm9kdWNlZCBieSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIGlzXG4gICAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSAnYSBpcyBzdGFibGUpLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJ1aWxkIH5mcm9udCB+YmFjayA9XG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGZyb250ICsgTGlzdC5sZW5ndGggYmFjayBpblxuICAgIGxldCB0ID0geyBsZW5ndGg7IGZyb250OyBiYWNrIH0gaW5cbiAgICBpbnZhcmlhbnQgaWdub3JlIHQ7XG4gICAgdFxuICA7O1xuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RyaW5nLlN0YWJsZS5WMSA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLlN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuXG4gICAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuUyB3aXRoIHR5cGUga2V5IDo9IHRcbiAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgRmlsZW5hbWVfYmFzZVxuXG5pbmNsdWRlIChcbiAgU3RyaW5nIDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBGZGVxdWVcblxubGV0IGVucXVldWUgPSBlbnF1ZXVlX2JhY2tcbmxldCBwZWVrX2V4biA9IHBlZWtfZnJvbnRfZXhuXG5sZXQgcGVlayA9IHBlZWtfZnJvbnRcbmxldCBkZXF1ZXVlX2V4biA9IGRlcXVldWVfZnJvbnRfZXhuXG5sZXQgZGVxdWV1ZSA9IGRlcXVldWVfZnJvbnRcbmxldCBkcm9wX2V4biA9IGRyb3BfZnJvbnRfZXhuXG5sZXQgdG9fc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLnRvX3NlcXVlbmNlXG5sZXQgb2Zfc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLm9mX3NlcXVlbmNlXG5cbigqIERlcHJlY2F0ZWQgYWxpYXNlcyAqKVxubGV0IHRvcCA9IHBlZWtcbmxldCB0b3BfZXhuID0gcGVla19leG5cbmxldCBkaXNjYXJkX2V4biA9IGRyb3BfZXhuXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgTmV4dF9maXRcbiAgICAgICAgfCBGaXJzdF9maXRcbiAgICAgICAgfCBCZXN0X2ZpdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnRyb2wgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5jb250cm9sID1cbiAgICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICAgIHsgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IHZlcmJvc2UgOiBpbnRcbiAgICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBzdGFja19saW1pdCA6IGludFxuICAgICAgICA7IGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGRsaWIuR2NcblxubW9kdWxlIFN0YXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgYmluX2lvLCBzZXhwLCBmaWVsZHNdXG5cbiAgICBbJSVlbHNlXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZiwgZmllbGRzXVxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICBsZXQgY29tYmluZSBmaXJzdCBzZWNvbmQgfmZsb2F0X2YgfmludF9mID1cbiAgICB7IG1pbm9yX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5taW5vcl93b3JkcyBzZWNvbmQubWlub3Jfd29yZHNcbiAgICA7IHByb21vdGVkX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5wcm9tb3RlZF93b3JkcyBzZWNvbmQucHJvbW90ZWRfd29yZHNcbiAgICA7IG1ham9yX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5tYWpvcl93b3JkcyBzZWNvbmQubWFqb3Jfd29yZHNcbiAgICA7IG1pbm9yX2NvbGxlY3Rpb25zID0gaW50X2YgZmlyc3QubWlub3JfY29sbGVjdGlvbnMgc2Vjb25kLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1ham9yX2NvbGxlY3Rpb25zIHNlY29uZC5tYWpvcl9jb2xsZWN0aW9uc1xuICAgIDsgaGVhcF93b3JkcyA9IGludF9mIGZpcnN0LmhlYXBfd29yZHMgc2Vjb25kLmhlYXBfd29yZHNcbiAgICA7IGhlYXBfY2h1bmtzID0gaW50X2YgZmlyc3QuaGVhcF9jaHVua3Mgc2Vjb25kLmhlYXBfY2h1bmtzXG4gICAgOyBsaXZlX3dvcmRzID0gaW50X2YgZmlyc3QubGl2ZV93b3JkcyBzZWNvbmQubGl2ZV93b3Jkc1xuICAgIDsgbGl2ZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5saXZlX2Jsb2NrcyBzZWNvbmQubGl2ZV9ibG9ja3NcbiAgICA7IGZyZWVfd29yZHMgPSBpbnRfZiBmaXJzdC5mcmVlX3dvcmRzIHNlY29uZC5mcmVlX3dvcmRzXG4gICAgOyBmcmVlX2Jsb2NrcyA9IGludF9mIGZpcnN0LmZyZWVfYmxvY2tzIHNlY29uZC5mcmVlX2Jsb2Nrc1xuICAgIDsgbGFyZ2VzdF9mcmVlID0gaW50X2YgZmlyc3QubGFyZ2VzdF9mcmVlIHNlY29uZC5sYXJnZXN0X2ZyZWVcbiAgICA7IGZyYWdtZW50cyA9IGludF9mIGZpcnN0LmZyYWdtZW50cyBzZWNvbmQuZnJhZ21lbnRzXG4gICAgOyBjb21wYWN0aW9ucyA9IGludF9mIGZpcnN0LmNvbXBhY3Rpb25zIHNlY29uZC5jb21wYWN0aW9uc1xuICAgIDsgdG9wX2hlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC50b3BfaGVhcF93b3JkcyBzZWNvbmQudG9wX2hlYXBfd29yZHNcbiAgICA7IHN0YWNrX3NpemUgPSBpbnRfZiBmaXJzdC5zdGFja19zaXplIHNlY29uZC5zdGFja19zaXplXG4gICAgfVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IGNvbWJpbmUgZmlyc3Qgc2Vjb25kIH5mbG9hdF9mIH5pbnRfZiA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWlub3Jfd29yZHMgc2Vjb25kLm1pbm9yX3dvcmRzXG4gICAgOyBwcm9tb3RlZF93b3JkcyA9IGZsb2F0X2YgZmlyc3QucHJvbW90ZWRfd29yZHMgc2Vjb25kLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWFqb3Jfd29yZHMgc2Vjb25kLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1pbm9yX2NvbGxlY3Rpb25zIHNlY29uZC5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5tYWpvcl9jb2xsZWN0aW9ucyBzZWNvbmQubWFqb3JfY29sbGVjdGlvbnNcbiAgICA7IGhlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC5oZWFwX3dvcmRzIHNlY29uZC5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGludF9mIGZpcnN0LmhlYXBfY2h1bmtzIHNlY29uZC5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGludF9mIGZpcnN0LmxpdmVfd29yZHMgc2Vjb25kLmxpdmVfd29yZHNcbiAgICA7IGxpdmVfYmxvY2tzID0gaW50X2YgZmlyc3QubGl2ZV9ibG9ja3Mgc2Vjb25kLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gaW50X2YgZmlyc3QuZnJlZV93b3JkcyBzZWNvbmQuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5mcmVlX2Jsb2NrcyBzZWNvbmQuZnJlZV9ibG9ja3NcbiAgICA7IGxhcmdlc3RfZnJlZSA9IGludF9mIGZpcnN0Lmxhcmdlc3RfZnJlZSBzZWNvbmQubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBpbnRfZiBmaXJzdC5mcmFnbWVudHMgc2Vjb25kLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBpbnRfZiBmaXJzdC5jb21wYWN0aW9ucyBzZWNvbmQuY29tcGFjdGlvbnNcbiAgICA7IHRvcF9oZWFwX3dvcmRzID0gaW50X2YgZmlyc3QudG9wX2hlYXBfd29yZHMgc2Vjb25kLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gaW50X2YgZmlyc3Quc3RhY2tfc2l6ZSBzZWNvbmQuc3RhY2tfc2l6ZVxuICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgaW50X2YgZmlyc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIHNlY29uZC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNcbiAgICB9XG4gIDs7XG5cbiAgWyUlZW5kaWZdXG5cbiAgbGV0IGFkZCA9IGNvbWJpbmUgfmZsb2F0X2Y6RmxvYXQuKCArICkgfmludF9mOkludC4oICsgKVxuICBsZXQgZGlmZiA9IGNvbWJpbmUgfmZsb2F0X2Y6RmxvYXQuKCAtICkgfmludF9mOkludC4oIC0gKVxuZW5kXG5cbm1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICB7IG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgOyBtdXRhYmxlIHZlcmJvc2UgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBzdGFja19saW1pdCA6IGludFxuICAgICAgOyBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgZmllbGRzXVxuICBlbmRcblxuICBbJSVlbHNlXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgdmVyYm9zZSA6IGludFxuICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBmaWVsZHNdXG4gIGVuZFxuXG4gIFslJWVuZGlmXVxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbmVuZFxuXG5tb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkFsbG9jYXRpb25fcG9saWN5LlYxLnQgPVxuICAgIHwgTmV4dF9maXRcbiAgICB8IEZpcnN0X2ZpdFxuICAgIHwgQmVzdF9maXRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBfb2ZdXG5cbiAgbGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gICAgfCBOZXh0X2ZpdCAtPiAwXG4gICAgfCBGaXJzdF9maXQgLT4gMVxuICAgIHwgQmVzdF9maXQgLT4gMlxuICA7O1xuZW5kXG5cbmxldCB0dW5lXG4gICAgICA/bG9nZ2VyXG4gICAgICA/bWlub3JfaGVhcF9zaXplXG4gICAgICA/bWFqb3JfaGVhcF9pbmNyZW1lbnRcbiAgICAgID9zcGFjZV9vdmVyaGVhZFxuICAgICAgP3ZlcmJvc2VcbiAgICAgID9tYXhfb3ZlcmhlYWRcbiAgICAgID9zdGFja19saW1pdFxuICAgICAgP2FsbG9jYXRpb25fcG9saWN5XG4gICAgICA/d2luZG93X3NpemVcbiAgICAgID9jdXN0b21fbWFqb3JfcmF0aW9cbiAgICAgID9jdXN0b21fbWlub3JfcmF0aW9cbiAgICAgID9jdXN0b21fbWlub3JfbWF4X3NpemVcbiAgICAgICgpXG4gID1cbiAgbGV0IG9sZF9jb250cm9sX3BhcmFtcyA9IGdldCAoKSBpblxuICBsZXQgZiBvcHQgdG9fc3RyaW5nIGZpZWxkID1cbiAgICBsZXQgb2xkX3ZhbHVlID0gRmllbGQuZ2V0IGZpZWxkIG9sZF9jb250cm9sX3BhcmFtcyBpblxuICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgfCBOb25lIC0+IG9sZF92YWx1ZVxuICAgIHwgU29tZSBuZXdfdmFsdWUgLT5cbiAgICAgIE9wdGlvbi5pdGVyIGxvZ2dlciB+ZjooZnVuIGYgLT5cbiAgICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgICAgZlxuICAgICAgICAgIFwiR2MuQ29udHJvbC4lczogJXMgLT4gJXNcIlxuICAgICAgICAgIChGaWVsZC5uYW1lIGZpZWxkKVxuICAgICAgICAgICh0b19zdHJpbmcgb2xkX3ZhbHVlKVxuICAgICAgICAgICh0b19zdHJpbmcgbmV3X3ZhbHVlKSk7XG4gICAgICBuZXdfdmFsdWVcbiAgaW5cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID0gT3B0aW9uLm1hcCBhbGxvY2F0aW9uX3BvbGljeSB+ZjpBbGxvY2F0aW9uX3BvbGljeS50b19pbnQgaW5cbiAgbGV0IG5ld19jb250cm9sX3BhcmFtcyA9XG4gICAgQ29udHJvbC5GaWVsZHMubWFwXG4gICAgICB+bWlub3JfaGVhcF9zaXplOihmIG1pbm9yX2hlYXBfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfm1ham9yX2hlYXBfaW5jcmVtZW50OihmIG1ham9yX2hlYXBfaW5jcmVtZW50IHN0cmluZ19vZl9pbnQpXG4gICAgICB+c3BhY2Vfb3ZlcmhlYWQ6KGYgc3BhY2Vfb3ZlcmhlYWQgc3RyaW5nX29mX2ludClcbiAgICAgIH52ZXJib3NlOihmIHZlcmJvc2Ugc3RyaW5nX29mX2ludClcbiAgICAgIH5tYXhfb3ZlcmhlYWQ6KGYgbWF4X292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+c3RhY2tfbGltaXQ6KGYgc3RhY2tfbGltaXQgc3RyaW5nX29mX2ludClcbiAgICAgIH5hbGxvY2F0aW9uX3BvbGljeTooZiBhbGxvY2F0aW9uX3BvbGljeSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfndpbmRvd19zaXplOihmIHdpbmRvd19zaXplIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21ham9yX3JhdGlvOihmIGN1c3RvbV9tYWpvcl9yYXRpbyBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9taW5vcl9yYXRpbzooZiBjdXN0b21fbWlub3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfbWF4X3NpemU6KGYgY3VzdG9tX21pbm9yX21heF9zaXplIHN0cmluZ19vZl9pbnQpXG4gIGluXG4gIHNldCBuZXdfY29udHJvbF9wYXJhbXNcbjs7XG5cbmxldCBkaXNhYmxlX2NvbXBhY3Rpb24gP2xvZ2dlciB+YWxsb2NhdGlvbl9wb2xpY3kgKCkgPVxuICBsZXQgYWxsb2NhdGlvbl9wb2xpY3kgPVxuICAgIG1hdGNoIGFsbG9jYXRpb25fcG9saWN5IHdpdGhcbiAgICB8IGBEb24ndF9jaGFuZ2UgLT4gTm9uZVxuICAgIHwgYFNldF90byBwb2xpY3kgLT4gU29tZSBwb2xpY3lcbiAgaW5cbiAgKCogVGhlIHZhbHVlIDFfMDAwXzAwMCwgYWNjb3JkaW5nIHRvXG4gICAgIGh0dHA6Ly9jYW1sLmlucmlhLmZyL3B1Yi9kb2NzL21hbnVhbC1vY2FtbC00LjAyL2xpYnJlZi9HYy5odG1sXG4gICAgIHdpbGwgZGlzYWJsZSBjb21wYWN0aW9ucy5cbiAgKilcbiAgdHVuZSA/bG9nZ2VyID9hbGxvY2F0aW9uX3BvbGljeSB+bWF4X292ZXJoZWFkOjFfMDAwXzAwMCAoKVxuOztcblxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19taW5vcl93b3Jkc1wiXG5leHRlcm5hbCBtYWpvcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHByb21vdGVkX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfcHJvbW90ZWRfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWlub3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtYWpvcl9jb2xsZWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvbXBhY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfY29tcGFjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfcGx1c19taW5vcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgYWxsb2NhdGVkX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfYWxsb2NhdGVkX3dvcmRzXCJcbmV4dGVybmFsIHJ1bl9tZW1wcm9mX2NhbGxiYWNrcyA6IHVuaXQgLT4gdW5pdCA9IFwiY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3NcIlxuXG5bJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG5leHRlcm5hbCBoZWFwX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfaGVhcF93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoZWFwX2NodW5rcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2hlYXBfY2h1bmtzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvcF9oZWFwX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfdG9wX2hlYXBfd29yZHNcIiBbQEBub2FsbG9jXVxuXG5bJSVlbmRpZl1cblxubGV0IHN0YXRfc2l6ZV9sYXp5ID1cbiAgbGF6eSAoT2JqLnJlYWNoYWJsZV93b3JkcyAoT2JqLnJlcHIgKFN0ZGxpYi5HYy5xdWlja19zdGF0ICgpIDogU3RhdC50KSkpXG47O1xuXG5sZXQgc3RhdF9zaXplICgpID0gTGF6eS5mb3JjZSBzdGF0X3NpemVfbGF6eVxubGV0IHplcm8gPSBTeXMub3BhcXVlX2lkZW50aXR5IChpbnRfb2Zfc3RyaW5nIFwiMFwiKVxuXG4oKiBUaGUgY29tcGlsZXIgd29uJ3Qgb3B0aW1pemUgaW50X29mX3N0cmluZyBhd2F5IHNvIGl0IHdvbid0XG4gICBwZXJmb3JtIGNvbnN0YW50IGZvbGRpbmcgYmVsb3cuICopXG5sZXQgcmVjIGtlZXBfYWxpdmUgbyA9IGlmIHplcm8gPD4gMCB0aGVuIGtlZXBfYWxpdmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgbylcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICgqIFdlIGRpc2FibGUgaW5saW5pbmcgZm9yIHRoaXMgZnVuY3Rpb24gc28gdGhlIEdDIHN0YXRzIGFuZCB0aGUgY2FsbCB0byBbZl0gYXJlIG5ldmVyXG4gICAgIHJlYXJyYW5nZWQuICopXG4gIGxldFtAY29sZF0gbWVhc3VyZV9pbnRlcm5hbCB+b25fcmVzdWx0IGYgPVxuICAgIGxldCBtaW5vcl93b3Jkc19iZWZvcmUgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19iZWZvcmUgPSBtYWpvcl93b3JkcyAoKSBpblxuICAgICgqIFdlIHdyYXAgW2YgKCldIHdpdGggW1N5cy5vcGFxdWVfaWRlbnRpdHldIHRvIHByZXZlbnQgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGJlaW5nXG4gICAgICAgb3B0aW1pemVkIGF3YXkuICopXG4gICAgbGV0IHggPSBTeXMub3BhcXVlX2lkZW50aXR5IChmICgpKSBpblxuICAgIGxldCBtaW5vcl93b3Jkc19hZnRlciA9IG1pbm9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FmdGVyID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYWxsb2NhdGVkID0gbWFqb3Jfd29yZHNfYWZ0ZXIgLSBtYWpvcl93b3Jkc19iZWZvcmUgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWxsb2NhdGVkID0gbWlub3Jfd29yZHNfYWZ0ZXIgLSBtaW5vcl93b3Jkc19iZWZvcmUgaW5cbiAgICBvbl9yZXN1bHQgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHhcbiAgOztcblxuICBsZXQgaXNfemVyb19hbGxvYyAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICAgICgqIEluc3RlYWQgb2YgdXNpbmcgW0FsbG9jYXRpb25fcmVwb3J0Lm1lYXN1cmVdLCBhbmQgbWF0Y2hpbmcgb24gdGhlIHJlc3VsdCwgd2UgdXNlXG4gICAgICAgdGhpcyBjb25zdHJ1Y3Rpb24sIGluIG9yZGVyIHRvIGhhdmUgW2lzX3plcm9fYWxsb2NdIG5vdCBhbGxvY2F0ZSBpdHNlbGYuIFRoaXNcbiAgICAgICBlbmFibGVzIFtpc196ZXJvX2FsbG9jXSB0byBiZSB1c2VkIGluIGEgbmVzdGVkIHdheS4gKilcbiAgICBtZWFzdXJlX2ludGVybmFsXG4gICAgICBmXG4gICAgICB+b25fcmVzdWx0OihmdW4gfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHZhbHVlIC0+XG4gICAgICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2YWx1ZSA6IGEpO1xuICAgICAgICBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgPT0gMCAmJiBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgPT0gMClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9yZXBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgOiBpbnRcbiAgICAgIDsgbWlub3Jfd29yZHNfYWxsb2NhdGVkIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkID1cbiAgICAgIHsgbWFqb3Jfd29yZHNfYWxsb2NhdGVkOyBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgfVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZWFzdXJlX2FsbG9jYXRpb24gZiA9XG4gICAgbWVhc3VyZV9pbnRlcm5hbCBmIH5vbl9yZXN1bHQ6KGZ1biB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgeCAtPlxuICAgICAgeCwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9sb2cgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzaXplX2luX3dvcmRzIDogaW50XG4gICAgICA7IGlzX21ham9yIDogYm9vbFxuICAgICAgOyBiYWNrdHJhY2UgOiBzdHJpbmdcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAxMSwgMCldXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCBsb2cgOiBBbGxvY2F0aW9uX2xvZy50IGxpc3QgcmVmID0gcmVmIFtdXG4gICAgYW5kIG1ham9yX2FsbG9jcyA9IHJlZiAwXG4gICAgYW5kIG1pbm9yX2FsbG9jcyA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2FsbG9jIH5pc19tYWpvciAoaW5mbyA6IFN0ZGxpYi5HYy5NZW1wcm9mLmFsbG9jYXRpb24pID1cbiAgICAgIGlmIGlzX21ham9yXG4gICAgICB0aGVuIG1ham9yX2FsbG9jcyA6PSAhbWFqb3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXNcbiAgICAgIGVsc2UgbWlub3JfYWxsb2NzIDo9ICFtaW5vcl9hbGxvY3MgKyBpbmZvLm5fc2FtcGxlcztcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBTdGRsaWIuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgaW5mby5jYWxsc3RhY2sgaW5cbiAgICAgICgqIE1ha2UgYmFja3RyYWNlcyBlYXNpZXIgdG8gcmVhZCBieSBkZWxldGluZyBldmVyeXRoaW5nIGJlbG93IHRoaXMgZnVuY3Rpb24gKilcbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3Vic3RyX2luZGV4IGJhY2t0cmFjZSB+cGF0dGVybjpcIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uXCIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgcG9zc2libGU6IHdlIG1heSBoYXZlIGxvZ2dlZCBhbGxvY2F0aW9ucyBpbiBhbm90aGVyIHRocmVhZCAqKVxuICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgIFN0cmluZy5zdWIgfnBvczowIH5sZW46cCBiYWNrdHJhY2VcbiAgICAgICAgICB8PiBTdHJpbmcucnN0cmlwIH5kcm9wOihmdW5jdGlvblxuICAgICAgICAgICAgfCAnXFxuJyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICBpblxuICAgICAgbGV0IGluZm8gOiBBbGxvY2F0aW9uX2xvZy50ID1cbiAgICAgICAgeyBzaXplX2luX3dvcmRzID0gaW5mby5uX3NhbXBsZXM7IGlzX21ham9yOyBiYWNrdHJhY2UgfVxuICAgICAgaW5cbiAgICAgIGxvZyA6PSBpbmZvIDo6ICFsb2c7XG4gICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgdHJhY2tlciA9XG4gICAgICB7IFN0ZGxpYi5HYy5NZW1wcm9mLm51bGxfdHJhY2tlciB3aXRoXG4gICAgICAgIGFsbG9jX21pbm9yID0gb25fYWxsb2MgfmlzX21ham9yOmZhbHNlXG4gICAgICA7IGFsbG9jX21ham9yID0gb25fYWxsb2MgfmlzX21ham9yOnRydWVcbiAgICAgIH1cbiAgICBpblxuICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0YXJ0IH5zYW1wbGluZ19yYXRlOjEuMCB0cmFja2VyO1xuICAgICgqIEV4bi5wcm90ZWN0LCBtYW51YWxseSBpbmxpbmVkIHRvIGd1YXJhbnRlZSBubyBhbGxvY2F0aW9ucyAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgICB8IHggLT5cbiAgICAgICAgKCogTWVtcHJvZi5zdG9wIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IGFsbCBtZW1wcm9mIGNhbGxiYWNrcyBhcmUgcnVuIChzb21lIG1heSBiZVxuICAgICAgICAgICBkZWxheWVkIGlmIHRoZXkgaGFwcGVuZWQgZHVyaW5nIEMgY29kZSBhbmQgdGhlcmUgaGFzIGJlZW4gbm8gYWxsb2NhdGlvbiBzaW5jZSksXG4gICAgICAgICAgIHNvIHdlIGV4cGxpY3RseSBmbHVzaCB0aGVtICopXG4gICAgICAgIHJ1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKTtcbiAgICAgICAgU3RkbGliLkdjLk1lbXByb2Yuc3RvcCAoKTtcbiAgICAgICAgeFxuICAgICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgICBydW5fbWVtcHJvZl9jYWxsYmFja3MgKCk7XG4gICAgICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0b3AgKCk7XG4gICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgICggcmVzdWx0XG4gICAgLCBBbGxvY2F0aW9uX3JlcG9ydC5jcmVhdGVcbiAgICAgICAgfm1ham9yX3dvcmRzX2FsbG9jYXRlZDohbWFqb3JfYWxsb2NzXG4gICAgICAgIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQ6IW1pbm9yX2FsbG9jc1xuICAgICwgTGlzdC5yZXYgIWxvZyApXG4gIDs7XG5cbiAgWyUlZWxzZV1cblxuICBsZXQgbWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb24gZiA9XG4gICAgbGV0IHgsIHJlcG9ydCA9IG1lYXN1cmVfYWxsb2NhdGlvbiBmIGluXG4gICAgeCwgcmVwb3J0LCBbXVxuICA7O1xuXG4gIFslJWVuZGlmXVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGFkZF9maW5hbGl6ZXIgeCBmID1cbiAgICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlIChmdW4geCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB4KSkgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXIgZW5zdXJlcyB0aGF0IHRoZSBvbmx5IHBvc3NpYmxlIGZhaWx1cmVcbiAgICAgICAgIGlzIGR1ZSB0byBbeF0gYmVpbmcgc3RhdGljIGRhdGEuIEluIHRoaXMgY2FzZSwgd2Ugc2ltcGx5IGRyb3AgdGhlXG4gICAgICAgICBmaW5hbGl6ZXIgc2luY2Ugc3RhdGljIGRhdGEgd291bGQgbmV2ZXIgaGF2ZSBiZWVuIGNvbGxlY3RlZCBieSB0aGVcbiAgICAgICAgIEdDIGFueXdheS4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgKCogW2FkZF9maW5hbGl6ZXJfZXhuXSBpcyB0aGUgc2FtZSBhcyBbYWRkX2ZpbmFsaXplcl0uICBIb3dldmVyLCB0aGVpciB0eXBlcyBpblxuICAgICBjb3JlX2djLm1saSBhcmUgZGlmZmVyZW50LCBhbmQgdGhlIHR5cGUgb2YgW2FkZF9maW5hbGl6ZXJdIGd1YXJhbnRlZXMgdGhhdCBpdCBhbHdheXNcbiAgICAgcmVjZWl2ZXMgYSBoZWFwIGJsb2NrLCB3aGljaCBlbnN1cmVzIHRoYXQgaXQgd2lsbCBub3QgcmFpc2UsIHdoaWxlXG4gICAgIFthZGRfZmluYWxpemVyX2V4bl0gYWNjZXB0cyBhbnkgdHlwZSwgYW5kIHNvIG1heSByYWlzZS4gKilcbiAgbGV0IGFkZF9maW5hbGl6ZXJfZXhuIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgKCogVGhlIHR5cGUgb2YgYWRkX2ZpbmFsaXplcl9sYXN0IGVuc3VyZXMgdGhhdCB0aGUgb25seSBwb3NzaWJsZSBmYWlsdXJlXG4gICAgICAgICBpcyBkdWUgdG8gW3hdIGJlaW5nIHN0YXRpYyBkYXRhLiBJbiB0aGlzIGNhc2UsIHdlIHNpbXBseSBkcm9wIHRoZVxuICAgICAgICAgZmluYWxpemVyIHNpbmNlIHN0YXRpYyBkYXRhIHdvdWxkIG5ldmVyIGhhdmUgYmVlbiBjb2xsZWN0ZWQgYnkgdGhlXG4gICAgICAgICBHQyBhbnl3YXkuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplX3JlbGVhc2UgPSBTdGRsaWIuR2MuZmluYWxpc2VfcmVsZWFzZVxuXG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGFsYXJtXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gPSBcIjxnYyBhbGFybT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBsZXQgY3JlYXRlIGYgPSBjcmVhdGVfYWxhcm0gKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpXG4gICAgbGV0IGRlbGV0ZSA9IGRlbGV0ZV9hbGFybVxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV9pbnRlcm5hbFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTZXJpYWxpemFibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGhvc3QgOiBTdHJpbmcudFxuICAgICAgICA7IHBvcnQgOiBJbnQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVja11cblxuICAgICAgbGV0IHRvX3NlcmlhbGl6YWJsZSB7IGhvc3Q7IHBvcnQgfSA9IGhvc3QsIHBvcnRcbiAgICAgIGxldCBvZl9zZXJpYWxpemFibGUgKGhvc3QsIHBvcnQpID0geyBob3N0OyBwb3J0IH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTZXJpYWxpemFibGUuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICB0b19zZXJpYWxpemFibGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogU2VyaWFsaXphYmxlLnRdO1xuICAgICAgICBbJWV4cGVjdFxuICAgICAgICAgIHt8XG4gICAgICAgICAgICAgICAgICA5NTc5OTBmMGZjNDE2MWZiODc0ZTY2ODcyNTUwZmI0MFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDAgfH1dXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChTZXJpYWxpemFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgb3BlbiEgSW1wb3J0XG4gICAgICBvcGVuISBTdGRfaW50ZXJuYWxcbiAgICAgIG9wZW4hIFQwXG5cbiAgICAgIGxldCB0b19zdHJpbmcgeyBob3N0OyBwb3J0IH0gPSBzcHJpbnRmIFwiJXM6JWRcIiBob3N0IHBvcnRcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBob3N0OyBwb3J0IF0gLT5cbiAgICAgICAgICBsZXQgcG9ydCA9XG4gICAgICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyBwb3J0IHdpdGhcbiAgICAgICAgICAgIHwgX2V4biAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogYmFkIHBvcnQ6ICVzXCIgcyAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgeyBob3N0OyBwb3J0IH1cbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkhvc3RfYW5kX3BvcnQub2Zfc3RyaW5nOiAlc1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICB8IFNleHAuQXRvbSBzIGFzIHNleHAgLT5cbiAgICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICAgfCBGYWlsdXJlIGVyciAtPiBvZl9zZXhwX2Vycm9yIGVyciBzZXhwKVxuICAgICAgICB8IHNleHAgLT4gdF9vZl9zZXhwIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLlxuICAgICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyAoKiBoYW5kbGVzIHRoZSBob3N0OnBvcnQgc3RyaW5nIGNhc2UgKilcbiAgICAgICAgICAgICAgICAgIFN0cmluZ1xuICAgICAgICAgICAgICAgICAgOyAoKiBoYW5kbGVzIHRoZSBsaXN0IChob3N0IHBvcnQpIGNhc2UgICopXG4gICAgICAgICAgICAgICAgICBMaXN0IChDb25zIChTdHJpbmcsIENvbnMgKEludGVnZXIsIEVtcHR5KSkpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQxKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRfb2Zfc2V4cFwiID1cbiAgICAgIFsldGVzdF9yZXN1bHQ6IHRdXG4gICAgICAgICh0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHt8KGxvY2FsaG9zdCA4MDgwKXx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9O1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogdF1cbiAgICAgICAgKHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcge3xsb2NhbGhvc3Q6ODA4MHx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9XG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHJvdW5kdHJpcFwiID1cbiAgICAgIFF1aWNrY2hlY2sudGVzdCBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgICAgWyV0ZXN0X3Jlc3VsdDogdF0gKHRfb2Zfc2V4cCAoc2V4cF9vZl90IHQpKSB+ZXhwZWN0OnQpXG4gICAgOztcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbmluY2x1ZGUgTGF0ZXN0XG5cbmxldCBjcmVhdGUgfmhvc3QgfnBvcnQgPSB7IGhvc3Q7IHBvcnQgfVxubGV0IGhvc3QgdCA9IHQuaG9zdFxubGV0IHBvcnQgdCA9IHQucG9ydFxubGV0IHR1cGxlIHQgPSB0b19zZXJpYWxpemFibGUgdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5Ib3N0X2FuZF9wb3J0XCJcbiAgZW5kKVxuXG5pbmNsdWRlIChIYXNoYWJsZS5NYWtlX2JpbmFibGUgKExhdGVzdCkgOiBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoTGF0ZXN0KVxuXG5sZXQgdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiSG9zdF9hbmRfcG9ydFwiIHNleHBfb2ZfdFxuIiwib3BlbiBTdGFibGVfbW9kdWxlX3R5cGVzXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgZW5kKSA6IFMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQyXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlLlYxIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5WMS5NYWtlIChUMSlcbiAgZW5kXG5cbiAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTVxuXG4gICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMlxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUuVjIgKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuVjEuTWFrZSAoVDEpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMS5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MiA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTIuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMi5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMikgdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTIuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMi5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MyA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcFxuICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSB0IC0+ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgPSAoJ2ExLCAnYTIsICdhMykgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTMuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMy5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgIDogICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgPSAoJ2ExLCAnYTIsICdhMykgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTMuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMy5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0ID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDEuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgYSkgOiBhIFN0YWJsZV93aXRuZXNzLnQgLT4gYSBNLnQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIGZ1biB3aXRuZXNzIC0+XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUxIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDEuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgYSkgOiBhIFN0YWJsZV93aXRuZXNzLnQgLT4gYSBNLnQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIGZ1biB3aXRuZXNzIC0+XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUxIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0Mi5WMSAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTIgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0Mi5WMiAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTIgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9XG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQzLlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIHdpdG5lc3MgPVxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMyAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9XG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQzLlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIHdpdG5lc3MgPVxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMyAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb250YWluZXJzID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBleGNlcHRpb24gUGlkX211c3RfYmVfcG9zaXRpdmUgb2YgSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgIGxldCBlbnN1cmUgaSA9IGlmIGkgPD0gMCB0aGVuIHJhaXNlIChQaWRfbXVzdF9iZV9wb3NpdGl2ZSBpKSBlbHNlIGlcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPSBJbnQuU3RhYmxlLlYxLnRcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gRm4uaWRcbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gZW5zdXJlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFdpdGhvdXRfY29udGFpbmVycylcbiAgICBpbmNsdWRlIFdpdGhvdXRfY29udGFpbmVyc1xuICBlbmRcblxuICBtb2R1bGUgTGF0ZXN0ID0gVjFcbmVuZFxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhYmxlLkxhdGVzdC5XaXRob3V0X2NvbnRhaW5lcnNcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2hdXG5cbmxldCBvZl9pbnQgaSA9IGVuc3VyZSBpXG5sZXQgdG9faW50ID0gRm4uaWRcbmxldCBvZl9zdHJpbmcgc3RyaW5nID0gZW5zdXJlIChJbnQub2Zfc3RyaW5nIHN0cmluZylcbmxldCB0b19zdHJpbmcgPSBJbnQudG9fc3RyaW5nXG5sZXQgaW5pdCA9IG9mX2ludCAxXG5cbmluY2x1ZGVcbiAgUXVpY2tjaGVja2FibGUuT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWRcbiAgICAoSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBvZl9xdWlja2NoZWNrYWJsZSBuID0gT3B0aW9uLnNvbWVfaWYgKG4gPiAwKSBuXG4gICAgICBsZXQgdG9fcXVpY2tjaGVja2FibGUgPSB0b19pbnRcbiAgICBlbmQpXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuUGlkXCJcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuUXVldWVcblxuaW5jbHVkZSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlLk1ha2UxX2FuZF90ZXN0IChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5IGEgPVxuICAgICAgICBsZXQgciA9IGNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBXZSBlbnF1ZXVlIGV2ZXJ5dGhpbmcgdHdpY2UsIGFuZCBkZXF1ZXVlIGl0IG9uY2UgdG8gZW5zdXJlOlxuICAgICAgICAgICAtIHRoYXQgdGhlIHF1ZXVlIGhhcyB0aGUgc2FtZSBjb250ZW50IGFzIHRoZSBhcnJheS5cbiAgICAgICAgICAgLSB0aGF0IGl0IGhhcywgaW4gbW9zdCBjYXNlcywgYW4gaW50ZXJlc3RpbmcgaW50ZXJuYWwgc3RydWN0dXJlKilcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX2V4biByIDogYm9vbCk7XG4gICAgICAgICAgZW5xdWV1ZSByIGEuKGkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHJcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZClcblxubW9kdWxlIFNlcmlhbGl6YXRpb25fdjEgPSBzdHJ1Y3RcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJiNGM4NDI1NC00OTkyLTExZTYtOWJhNy03MzRlMTU0MDI3YmRcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuUXVldWVcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID0gaW5pdCBsZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpXG4gICAgZW5kKVxuXG4gIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAoKiBTZXJpYWxpemF0aW9uX3YxIGRlZmluZXMgYSBzdGFibGUgc2VyaWFsaXphdGlvbiAqKVxuICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFNlcmlhbGl6YXRpb25fdjFcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbiAgICAoKiBXZSBkb24ndCBoYXZlIGEgWyViaW5fZGlnZXN0XSBleHBlY3QgdGVzdCBoZXJlIGJlY2F1c2UgdGhlIGJpbl9pbyBpcyBtb3N0bHkgaGFuZFxuICAgICAgIHdyaXR0ZW4sIGFuZCBbY29yZV9xdWV1ZV91bml0X3Rlc3RzLm1sXSBoYXMgdW5pdCB0ZXN0cyBmb3Igc3BlY2lmaWMgdmFsdWVzLiAqKVxuXG4gICAgbGV0IG1hcCA9IG1hcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFVuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3QuTWFrZVxuXG5cbm1vZHVsZSB0eXBlIFN0YWJsZSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRob3V0X2NvbXBhcmF0b3IgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwX3dpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIHR5cGUgU3RhYmxlMSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzFcbm1vZHVsZSB0eXBlIFN0YWJsZTIgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMyXG5tb2R1bGUgdHlwZSBTdGFibGUzID0gU3RhYmxlX21vZHVsZV90eXBlcy5TM1xubW9kdWxlIHR5cGUgU3RhYmxlNCA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzRcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV9pbnQ2M2FibGVfd2l0aF93aXRuZXNzID0gU3RhYmxlX2ludDYzYWJsZS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcblxubW9kdWxlIHR5cGUgU3RhYmxlX3dpdGhvdXRfY29tcGFyYXRvcl93aXRoX3dpdG5lc3MgPVxuICBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBfd2l0aG91dF9jb21wYXJhdG9yXG5cbm1vZHVsZSB0eXBlIFN0YWJsZTFfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMxXG5tb2R1bGUgdHlwZSBTdGFibGUyX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMlxubW9kdWxlIHR5cGUgU3RhYmxlM193aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzNcbm1vZHVsZSB0eXBlIFN0YWJsZTRfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlM0XG5cbm1vZHVsZSBNYWtlX3N0YWJsZSA9IE1ha2Vfc3RhYmxlXG5pbmNsdWRlIFN0YWJsZV9pbnRlcm5hbFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGUuU3RhYmxlXG5tb2R1bGUgQmlnc3RyaW5nID0gQmlnc3RyaW5nLlN0YWJsZVxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmcuU3RhYmxlXG5tb2R1bGUgQm9vbCA9IEJvb2wuU3RhYmxlXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHMuU3RhYmxlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlcy5TdGFibGVcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZS5TdGFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvci5TdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZS5TdGFibGVcbm1vZHVsZSBEYXlfb2Zfd2VlayA9IERheV9vZl93ZWVrLlN0YWJsZVxubW9kdWxlIE1kNSA9IE1kNS5TdGFibGVcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIuU3RhYmxlXG5tb2R1bGUgRXJyb3IgPSBFcnJvci5TdGFibGVcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWUuU3RhYmxlXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZS5TdGFibGVcbm1vZHVsZSBGbG9hdCA9IEZsb2F0LlN0YWJsZVxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5TdGFibGVcbm1vZHVsZSBGcXVldWUgPSBGcXVldWUuU3RhYmxlXG5tb2R1bGUgR2MgPSBHYy5TdGFibGVcbm1vZHVsZSBIb3N0X2FuZF9wb3J0ID0gSG9zdF9hbmRfcG9ydC5TdGFibGVcbm1vZHVsZSBJbmZvID0gSW5mby5TdGFibGVcbm1vZHVsZSBJbnQgPSBJbnQuU3RhYmxlXG5tb2R1bGUgSW50NjMgPSBJbnQ2My5TdGFibGVcbm1vZHVsZSBMYXp5ID0gTGF6eS5TdGFibGVcbm1vZHVsZSBMaXN0ID0gTGlzdC5TdGFibGVcbm1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZC5TdGFibGVcbm1vZHVsZSBNb250aCA9IE1vbnRoLlN0YWJsZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nLlN0YWJsZVxubW9kdWxlIE9wdGlvbiA9IE9wdGlvbi5TdGFibGVcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yLlN0YWJsZVxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50LlN0YWJsZVxubW9kdWxlIFBlcm1zID0gUGVybXMuU3RhYmxlXG5tb2R1bGUgUGlkID0gUGlkLlN0YWJsZVxubW9kdWxlIFF1ZXVlID0gUXVldWUuU3RhYmxlXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0LlN0YWJsZVxubW9kdWxlIFNldCA9IFNldC5TdGFibGVcbm1vZHVsZSBTZXhwID0gU2V4cC5TdGFibGVcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlLlN0YWJsZVxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nLlN0YWJsZVxubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZC5TdGFibGVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9ucy5TdGFibGVcblxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0LlN0YWJsZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTExXSBVc2UgW1RpbWVfZmxvYXRdIG9yIFtUaW1lX2Zsb2F0X3VuaXhdIGluc3RlYWRcIl1cblxubW9kdWxlIFRpbWVfZmxvYXQgPSBUaW1lX2Zsb2F0LlN0YWJsZVxubW9kdWxlIFVuaXQgPSBVbml0LlN0YWJsZVxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDb3JlX3VuaXguU3RhYmxlXVwiXVxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcblxuaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuaW5jbHVkZSBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLkdsb2JhbGl6ZVxuaW5jbHVkZSBJbXBvcnQuTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG4gIEludCA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuXG5sZXQgb2ZfY2FtbF9pbnQgdCA9IHRcbmxldCB0b19jYW1sX2ludCB0ID0gdFxuXG50eXBlIHN5c19iZWhhdmlvciA9XG4gIFsgYENvbnRpbnVlICgqKiBDb250aW51ZSB0aGUgcHJvY2VzcyBpZiBpdCBpcyBjdXJyZW50bHkgc3RvcHBlZCAqKVxuICB8IGBEdW1wX2NvcmUgKCoqIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyBhbmQgZHVtcCBjb3JlICopXG4gIHwgYElnbm9yZSAoKiogSWdub3JlIHRoZSBzaWduYWwgKilcbiAgfCBgU3RvcCAoKiogU3RvcCB0aGUgcHJvY2VzcyAqKVxuICB8IGBUZXJtaW5hdGUgKCoqIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyAqKVxuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXF1YWwgKHQgOiB0KSB0JyA9IHQgPSB0J1xuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiBQbGVhc2Uga2VlcCBpbiBzeW5jIHdpdGggdGhlIGxpc3QgZm9yIHRvX3N0cmluZy9zeXNfYmVoYXZpb3IgKilcbiAgb3BlbiBTdGRsaWIuU3lzXG5cbiAgbGV0IGFicnQgPSBzaWdhYnJ0XG4gIGxldCBhbHJtID0gc2lnYWxybVxuICBsZXQgYnVzID0gc2lnYnVzXG4gIGxldCBjaGxkID0gc2lnY2hsZFxuICBsZXQgY29udCA9IHNpZ2NvbnRcbiAgbGV0IGZwZSA9IHNpZ2ZwZVxuICBsZXQgaHVwID0gc2lnaHVwXG4gIGxldCBpbGwgPSBzaWdpbGxcbiAgbGV0IGludCA9IHNpZ2ludFxuICBsZXQga2lsbCA9IHNpZ2tpbGxcbiAgbGV0IHBpcGUgPSBzaWdwaXBlXG4gIGxldCBwb2xsID0gc2lncG9sbFxuICBsZXQgcHJvZiA9IHNpZ3Byb2ZcbiAgbGV0IHF1aXQgPSBzaWdxdWl0XG4gIGxldCBzZWd2ID0gc2lnc2VndlxuICBsZXQgc3RvcCA9IHNpZ3N0b3BcbiAgbGV0IHN5cyA9IHNpZ3N5c1xuICBsZXQgdGVybSA9IHNpZ3Rlcm1cbiAgbGV0IHRyYXAgPSBzaWd0cmFwXG4gIGxldCB0c3RwID0gc2lndHN0cFxuICBsZXQgdHRpbiA9IHNpZ3R0aW5cbiAgbGV0IHR0b3UgPSBzaWd0dG91XG4gIGxldCB1cmcgPSBzaWd1cmdcbiAgbGV0IHVzcjEgPSBzaWd1c3IxXG4gIGxldCB1c3IyID0gc2lndXNyMlxuICBsZXQgdnRhbHJtID0gc2lndnRhbHJtXG4gIGxldCB4Y3B1ID0gc2lneGNwdVxuICBsZXQgeGZzeiA9IHNpZ3hmc3pcbiAgbGV0IHplcm8gPSAwXG5lbmRcblxuZXhjZXB0aW9uIEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRvX3N0cmluZ193aXRoX3ZlcnNpb24sIG9mX3N0cmluZywgZGVmYXVsdF9zeXNfYmVoYXZpb3IgPVxuICBsZXQga25vd24gPVxuICAgIFtcbiAgICAgIFwic2lnYWJydFwiLCBhYnJ0LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2Fscm1cIiwgYWxybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdidXNcIiwgYnVzLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ2NobGRcIiwgY2hsZCwgYElnbm9yZSwgMVxuICAgIDsgXCJzaWdjb250XCIsIGNvbnQsIGBDb250aW51ZSwgMVxuICAgIDsgXCJzaWdmcGVcIiwgZnBlLCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2h1cFwiLCBodXAsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lnaWxsXCIsIGlsbCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdpbnRcIiwgaW50LCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2tpbGxcIiwga2lsbCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdwaXBlXCIsIHBpcGUsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncG9sbFwiLCBwb2xsLCBgVGVybWluYXRlLCAyXG4gICAgOyBcInNpZ3Byb2ZcIiwgcHJvZiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdxdWl0XCIsIHF1aXQsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnc2VndlwiLCBzZWd2LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ3N0b3BcIiwgc3RvcCwgYFN0b3AsIDFcbiAgICA7IFwic2lnc3lzXCIsIHN5cywgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd0ZXJtXCIsIHRlcm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndHJhcFwiLCB0cmFwLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3RzdHBcIiwgdHN0cCwgYFN0b3AsIDFcbiAgICA7IFwic2lndHRpblwiLCB0dGluLCBgU3RvcCwgMVxuICAgIDsgXCJzaWd0dG91XCIsIHR0b3UsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3VyZ1wiLCB1cmcsIGBJZ25vcmUsIDJcbiAgICA7IFwic2lndXNyMVwiLCB1c3IxLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3VzcjJcIiwgdXNyMiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd2dGFscm1cIiwgdnRhbHJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3hjcHVcIiwgeGNwdSwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd4ZnN6XCIsIHhmc3osIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lnemVyb1wiLCB6ZXJvLCBgSWdub3JlLCAxXG4gICAgXVxuICBpblxuICBsZXQgbmFtZV9hbmRfdmVyc2lvbl9ieV90ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIGxldCB0X2J5X25hbWUgPSBTdHJpbmcuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgbGV0IGJlaGF2aW9yX2J5X3QgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgTGlzdC5pdGVyIGtub3duIH5mOihmdW4gKG5hbWUsIHQsIGJlaGF2aW9yLCBzdGFibGVfdmVyc2lvbikgLT5cbiAgICBIYXNodGJsLnNldCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgfmtleTp0IH5kYXRhOihuYW1lLCBzdGFibGVfdmVyc2lvbik7XG4gICAgSGFzaHRibC5zZXQgdF9ieV9uYW1lIH5rZXk6bmFtZSB+ZGF0YTp0O1xuICAgIEhhc2h0Ymwuc2V0IGJlaGF2aW9yX2J5X3QgfmtleTp0IH5kYXRhOmJlaGF2aW9yKTtcbiAgKCogRm9yIHVua25vd24gc2lnbmFsIG51bWJlcnMsIFt0b19zdHJpbmddIHJldHVybnMgYSBtZWFuaW5nZnVsXG4gICAgIHN0cmluZywgd2hpbGUgW2RlZmF1bHRfc3lzX2JlaGF2aW9yXSBoYXMgdG8gcmFpc2UgYW4gZXhjZXB0aW9uXG4gICAgIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSByaWdodCBhbnN3ZXIgaXMuICopXG4gIGxldCB0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246cmVxdWVzdGVkX3ZlcnNpb24gPVxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgdCB3aXRoXG4gICAgfCBTb21lIChzdHJpbmcsIG5lZWRlZF92ZXJzaW9uKSB3aGVuIHJlcXVlc3RlZF92ZXJzaW9uID49IG5lZWRlZF92ZXJzaW9uIC0+IHN0cmluZ1xuICAgIHwgXyAtPiBcIjx1bmtub3duIHNpZ25hbCBcIiBeIEludC50b19zdHJpbmcgdCBeIFwiPlwiXG4gIGluXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubG93ZXJjYXNlIChTdHJpbmcuc3RyaXAgcykgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdF9ieV9uYW1lIHMgd2l0aFxuICAgIHwgU29tZSBzbiAtPiBzblxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCI8dW5rbm93biBzaWduYWwgXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyAoU3RyaW5nLnNsaWNlIHMgMTYgfi0xKSB3aXRoXG4gICAgICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpKVxuICAgICAgZWxzZSByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpXG4gIGluXG4gIGxldCBkZWZhdWx0X3N5c19iZWhhdmlvciB0ID1cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgYmVoYXZpb3JfYnlfdCB0IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChJbnZhbGlkX2FyZ3VtZW50XG4gICAgICAgICAgIChcIlNpZ25hbC5kZWZhdWx0X3N5c19iZWhhdmlvcjogdW5rbm93biBzaWduYWwgXCIgXiBJbnQudG9fc3RyaW5nIHQpKVxuICAgIHwgU29tZSBiZWhhdmlvciAtPiBiZWhhdmlvclxuICBpblxuICB0b19zdHJpbmdfd2l0aF92ZXJzaW9uLCBvZl9zdHJpbmcsIGRlZmF1bHRfc3lzX2JlaGF2aW9yXG47O1xuXG5leGNlcHRpb24gRXhwZWN0ZWRfYXRvbSBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uKVxubGV0IHRvX3N0cmluZyBzID0gdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiBzIH52ZXJzaW9uOjJcbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoyXG5cbmxldCB0X29mX3NleHAgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNleHAuQXRvbSBzIC0+IG9mX3N0cmluZyBzXG4gIHwgXyAtPiByYWlzZSAoRXhwZWN0ZWRfYXRvbSBzKVxuOztcblxudHlwZSBwaWRfc3BlYyA9IFsgYFVzZV9TaWduYWxfdW5peCBdXG50eXBlIHNpZ3Byb2NtYXNrX2NvbW1hbmQgPSBbIGBVc2VfU2lnbmFsX3VuaXggXVxuXG5sZXQgY2FuX3NlbmRfdG8gPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgb2Zfc3lzdGVtX2ludCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfZXhuID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfaSA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZXhwX29mX3BpZF9zcGVjID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3BlbmRpbmcgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lncHJvY21hc2sgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lnc3VzcGVuZCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCB0b19zeXN0ZW1faW50ID0gYFVzZV9TaWduYWxfdW5peFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIHR5cGUgYmVoYXZpb3IgPVxuICAgIFsgYERlZmF1bHRcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBIYW5kbGUgb2YgdCAtPiB1bml0XG4gICAgXVxuXG4gIG1vZHVsZSBCZWhhdmlvciA9IHN0cnVjdFxuICAgIGxldCBvZl9jYW1sID0gZnVuY3Rpb25cbiAgICAgIHwgU3RkbGliLlN5cy5TaWduYWxfZGVmYXVsdCAtPiBgRGVmYXVsdFxuICAgICAgfCBTaWduYWxfaWdub3JlIC0+IGBJZ25vcmVcbiAgICAgIHwgU2lnbmFsX2hhbmRsZSBmIC0+IGBIYW5kbGUgZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IGBEZWZhdWx0IC0+IFN0ZGxpYi5TeXMuU2lnbmFsX2RlZmF1bHRcbiAgICAgIHwgYElnbm9yZSAtPiBTaWduYWxfaWdub3JlXG4gICAgICB8IGBIYW5kbGUgZiAtPiBTaWduYWxfaGFuZGxlIChmdW4gdCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2lnbmFsIHQgYmVoYXZpb3IgPVxuICAgIEJlaGF2aW9yLm9mX2NhbWwgKFN0ZGxpYi5TeXMuc2lnbmFsIHQgKEJlaGF2aW9yLnRvX2NhbWwgYmVoYXZpb3IpKVxuICA7O1xuXG4gIGxldCBzZXQgdCBiZWhhdmlvciA9IGlnbm9yZSAoc2lnbmFsIHQgYmVoYXZpb3IgOiBiZWhhdmlvcilcbiAgbGV0IGhhbmRsZSB0IGYgPSBzZXQgdCAoYEhhbmRsZSBmKVxuZW5kXG5cbm9wZW4gRXhwZXJ0XG5cbmxldCBoYW5kbGVfZGVmYXVsdCB0ID0gc2V0IHQgYERlZmF1bHRcbmxldCBpZ25vcmUgdCA9IHNldCB0IGBJZ25vcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjJcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoxXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTaWduX29yX25hbiA9IEJhc2UuU2lnbl9vcl9uYW5cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduX29yX25hbi50ID1cbiAgICAgIHwgTmVnXG4gICAgICB8IFplcm9cbiAgICAgIHwgUG9zXG4gICAgICB8IE5hblxuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgZW51bWVyYXRlXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBTaWduX29yX25hblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduX29yX25hbikgKFN0YWJsZS5WMSlcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgdmFsdWUgOiAnYSBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZS5WMS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgW0Bjb21wYXJlLmlnbm9yZV0gW0BlcXVhbC5pZ25vcmVdXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGZpZWxkc11cbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBvZl9mb3JtYXQgKHYxIDogJ2EgRm9ybWF0LnQpIDogJ2EgdCA9IHsgdmFsdWUgPSAhdjE7IHNldF9hdCA9IFslaGVyZV0gfVxuICAgICAgbGV0IHRvX2Zvcm1hdCAodCA6ICdhIHQpIDogJ2EgRm9ybWF0LnQgPSByZWYgdC52YWx1ZVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRm9ybWF0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2Zvcm1hdFxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGVcbiAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlMVxuICAgICAgICAoRm9ybWF0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19mb3JtYXRcbiAgICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBVbnN0YWJsZSA9IFN0YWJsZS5WMVxub3BlbiBTdGFibGUuVFxuXG50eXBlICdhIHQgPSAnYSBTdGFibGUuVC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsXVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB7IHZhbHVlOyBzZXRfYXQgfSA9XG4gIG1hdGNoIHZhbHVlIHdpdGhcbiAgfCBOb25lIC0+IFslbWVzc2FnZSBcInVuc2V0XCJdXG4gIHwgU29tZSB2YWx1ZSAtPlxuICAgIFslbWVzc2FnZSBcIlwiICh2YWx1ZSA6IGEpIH5zZXRfYXQ6KHNldF9hdCB8PiBTb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmcpXVxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdC52YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IE5vbmU7IHNldF9hdCA9IFslaGVyZV0gfVxuXG5sZXQgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZSA9XG4gIHQudmFsdWUgPC0gU29tZSB2YWx1ZTtcbiAgdC5zZXRfYXQgPC0gaGVyZVxuOztcblxubGV0IHNldF9pZl9ub25lIHQgaGVyZSB2YWx1ZSA9IGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWUgdGhlbiBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlXG5cbmxldCBzZXQgdCBoZXJlIHZhbHVlID1cbiAgaWYgT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxuICB0aGVuIChcbiAgICBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlO1xuICAgIE9rICgpKVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1NldF9vbmNlLnNldF9leG5dIGFscmVhZHkgc2V0XCJcbiAgICAgICAgICB+c2V0dGluZ19hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAgICAgfnByZXZpb3VzbHlfc2V0X2F0Oih0LnNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IHNldF9leG4gdCBoZXJlIHZhbHVlID0gT3JfZXJyb3Iub2tfZXhuIChzZXQgdCBoZXJlIHZhbHVlKVxubGV0IGdldCB0ID0gdC52YWx1ZVxuXG5sZXQgZ2V0X2V4biAodCA6IF8gdCkgaGVyZSA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IFNvbWUgYSAtPiBhXG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1NldF9vbmNlLmdldF9leG5dIHVuc2V0XCIgfmF0OihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgaXNfbm9uZSB0ID0gT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxubGV0IGlzX3NvbWUgdCA9IE9wdGlvbi5pc19zb21lIHQudmFsdWVcbmxldCBpdGVyIHQgfmYgPSBPcHRpb24uaXRlciB0LnZhbHVlIH5mXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgdCA9IGdldF9leG4gdCBbJWhlcmVdXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHRvX3N0cmluZyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IHByaW50IF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX3RvX3N0cmluZ19pbnN0ZWFkXG5sZXQgY2F0Y2ggXyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl9oYW5kbGVfdW5jYXVnaHRfaW5zdGVhZFxubGV0IHByaW50X2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5wcmludF9iYWNrdHJhY2VcbmxldCBnZXRfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLmdldF9iYWNrdHJhY2VcbmxldCByZWNvcmRfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbmxldCBiYWNrdHJhY2Vfc3RhdHVzID0gU3RkbGliLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXNcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvbl9hcnJheVxuXG5pbmNsdWRlXG4gIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19hcnJheVxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuTGF6eX1bQmFzZS5MYXp5XX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBCYXNlLkxhenkudFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgKCoqIEBpbmxpbmUgKilcblxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBjb21wYXJlID1cbiAgWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG4gIC0+IFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cblxubGV0IGNvbXBhcmUgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDwgKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPD0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA+PSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw+ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBlcXVhbCBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IG1pbiBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IG1heCBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG50eXBlICgnYSwgJ2IpIGZuID0gJ2EgLT4gJ2JcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUnZhbCBvZiAnYVxuICAgIHwgRXhwdCBvZiBleG5cblxuICBsZXQgcmV0dXJuID0gZnVuY3Rpb25cbiAgICB8IFJ2YWwgdiAtPiB2XG4gICAgfCBFeHB0IGUgLT4gcmFpc2UgZVxuICA7O1xuXG4gIGxldCBjYXB0dXJlIGYgeCA9XG4gICAgdHJ5IFJ2YWwgKGYgeCkgd2l0aFxuICAgIHwgZSAtPiBFeHB0IGVcbiAgOztcbmVuZFxuXG5sZXQgdW5pdCBmID1cbiAgbGV0IGwgPSBMYXp5LmZyb21fZnVuIGYgaW5cbiAgZnVuICgpIC0+IExhenkuZm9yY2UgbFxuOztcblxubGV0IHVuYm91bmRlZCAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSBmID1cbiAgbGV0IGNhY2hlID1cbiAgICBsZXQgbW9kdWxlIEEgPVxuICAgICAgSGFzaGFibGUuTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgICAgZW5kKVxuICAgIGluXG4gICAgQS5UYWJsZS5jcmVhdGUgKCkgfnNpemU6MFxuICBpblxuICAoKiBBbGxvY2F0ZSB0aGlzIGNsb3N1cmUgYXQgdGhlIGNhbGwgdG8gW3VuYm91bmRlZF0sIG5vdCBhdCBlYWNoIGNhbGwgdG8gdGhlIG1lbW9pemVkXG4gICAgIGZ1bmN0aW9uLiAqKVxuICBsZXQgcmVhbGx5X2NhbGxfZiBhcmcgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICBmdW4gYXJnIC0+IFJlc3VsdC5yZXR1cm4gKEhhc2h0YmwuZmluZGlfb3JfYWRkIGNhY2hlIGFyZyB+ZGVmYXVsdDpyZWFsbHlfY2FsbF9mKVxuOztcblxuKCogdGhlIHNhbWUgYnV0IHdpdGggYSBib3VuZCBvbiBjYWNoZSBzaXplICopXG5sZXQgbHJ1ICh0eXBlIGEpID8oaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLnBvbHkpIH5tYXhfY2FjaGVfc2l6ZSBmID1cbiAgaWYgbWF4X2NhY2hlX3NpemUgPD0gMFxuICB0aGVuIGZhaWx3aXRoZiBcIk1lbW8ubHJ1OiBtYXhfY2FjaGVfc2l6ZSBvZiAlaSA8PSAwXCIgbWF4X2NhY2hlX3NpemUgKCk7XG4gIGxldCBtb2R1bGUgQ2FjaGUgPVxuICAgIEhhc2hfcXVldWUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgIGVuZClcbiAgaW5cbiAgbGV0IGNhY2hlID0gQ2FjaGUuY3JlYXRlICgpIGluXG4gIGZ1biBhcmcgLT5cbiAgICBSZXN1bHQucmV0dXJuXG4gICAgICAobWF0Y2ggQ2FjaGUubG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgY2FjaGUgYXJnIHdpdGhcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHJlc3VsdCA9IFJlc3VsdC5jYXB0dXJlIGYgYXJnIGluXG4gICAgICAgICBDYWNoZS5lbnF1ZXVlX2JhY2tfZXhuIGNhY2hlIGFyZyByZXN1bHQ7XG4gICAgICAgICAoKiBlamVjdCBsZWFzdCByZWNlbnRseSB1c2VkIGNhY2hlIGVudHJ5ICopXG4gICAgICAgICBpZiBDYWNoZS5sZW5ndGggY2FjaGUgPiBtYXhfY2FjaGVfc2l6ZVxuICAgICAgICAgdGhlbiBpZ25vcmUgKENhY2hlLmRlcXVldWVfZnJvbnRfZXhuIGNhY2hlIDogXyBSZXN1bHQudCk7XG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgZ2VuZXJhbCA/aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZiA9XG4gIG1hdGNoIGNhY2hlX3NpemVfYm91bmQgd2l0aFxuICB8IE5vbmUgLT4gdW5ib3VuZGVkID9oYXNoYWJsZSBmXG4gIHwgU29tZSBuIC0+IGxydSA/aGFzaGFibGUgfm1heF9jYWNoZV9zaXplOm4gZlxuOztcblxuKCogV2UgZXhwZWN0IFtmX29uZXN0ZXBdIHRvIGJlIGEgb25lLXN0ZXAgdW5yb2xsZWQgcmVjdXJzaXZlIGZ1bmN0aW9uOyBzZWUgdGhlIG1saS4gSGVuY2UsXG4gICBoZXJlIHdlIGNyZWF0ZSB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gX2FuZF8gcGFzcyBpdCB0byBbZl9vbmVzdGVwXSB0byBiZSB1c2VkIGZvclxuICAgcmVjdXJzaXZlIGNhbGxzLlxuXG4gICBOb3RlIHRoYXQgd2UgaW1tZWRpYXRlbHkgYXBwbHkgW2Zfb25lc3RlcF0gdG8gaXRzIGZpcnN0IGFyZ3VtZW50IGhlcmUgc28gdGhhdCBhbnlcbiAgIHByZWNvbXB1dGF0aW9uIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSB1c2VyIGNhbGxzIFtyZWN1cnNpdmVdLlxuXG4gICBBcyBhbiBleGFtcGxlLCBpZiBzb21lb25lIHdyaXRlcyB0aGlzIG5vbi1tZW1vaXplZCBjb2RlOlxuXG4gICBbIGxldCByZWMgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIF1cblxuICAgYW5kIGNvbnZlcnRzIHRvIG1lbW9pemF0aW9uIGJ5IGRvaW5nOlxuXG4gICB7W1xuICAgICBsZXQgZiA9XG4gICAgICAgbGV0IGZfb25lc3RlcCBmID0gbGV0IGRhdGEgPSBjb21wdXRlX3dpdGhvdXRfdXNpbmdfZiAoKSBpbiBmdW4geCAtPiAuLi4gZiAuLi4gaW5cbiAgICAgICByZWN1cnNpdmUgZl9vbmVzdGVwXG4gICBdfVxuXG4gICB3ZSB3YW50IHRvIGNvbXB1dGUgW2RhdGFdIGltbWVkaWF0ZWx5LiBJZiB3ZSBoYWQgW2Z1biB4IC0+IGZfb25lc3RlcCAoZm9yY2UgbWVtb2l6ZWQpXG4gICB4XSBiZWxvdywgd2UnZCByZWNvbXB1dGUgW2RhdGFdIGVhY2ggdGltZSB0aGUgdXNlciBjYWxscyBbZl0gb24gYW4gYXJndW1lbnQgdGhhdCBoYWRuJ3RcbiAgIHlldCBiZWVuIG1lbW9pemVkLiAqKVxubGV0IHJlY3Vyc2l2ZSB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZl9vbmVzdGVwID1cbiAgbGV0IHJlYyBtZW1vaXplZCA9XG4gICAgbGF6eSAoZ2VuZXJhbCB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgKGZfb25lc3RlcCAoZnVuIHggLT4gKGZvcmNlIG1lbW9pemVkKSB4KSkpXG4gIGluXG4gIGZvcmNlIG1lbW9pemVkXG47O1xuXG5sZXQgb2ZfY29tcGFyYWJsZSAodHlwZSBpbmRleCkgKG1vZHVsZSBNIDogQ29tcGFyYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gaW5kZXgpIGYgPVxuICBsZXQgbSA9IHJlZiBNLk1hcC5lbXB0eSBpblxuICBmdW4gKHggOiBNLnQpIC0+XG4gICAgbGV0IHYgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgIW0geCB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IHYgPSBSZXN1bHQuY2FwdHVyZSBmIHggaW5cbiAgICAgICAgbSA6PSBNYXAuc2V0ICFtIH5rZXk6eCB+ZGF0YTp2O1xuICAgICAgICB2XG4gICAgaW5cbiAgICBSZXN1bHQucmV0dXJuIHZcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBRdWV1ZSA9IEJhc2UuTGlua2VkX3F1ZXVlXG5pbmNsdWRlIFF1ZXVlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgUXVldWUudFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODAwZGY5YTAtNDk5Mi0xMWU2LTg4MWQtZmZlMWE1YzhhY2VkXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTGlua2VkX3F1ZXVlXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAoKiBCaW5fcHJvdCByZWFkcyB0aGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSB3ZXJlIHdyaXR0ZW4gb3V0LCBhcyBkZXRlcm1pbmVkXG4gICAgICAgYnkgW2l0ZXJdLiAgU28sIHdlIGNhbiBpZ25vcmUgdGhlIGluZGV4IGFuZCBqdXN0IGVucXVldWUgZWFjaCBlbGVtZW50IGFzIGl0IGlzIHJlYWRcbiAgICAgICBpbi4gKilcbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgIGVucXVldWUgdCAobmV4dCAoKSlcbiAgICAgIGRvbmU7XG4gICAgICB0XG4gICAgOztcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERlcml2aW5nX2hhc2hfaW50ZlxuXG5tb2R1bGUgT2ZfZGVyaXZpbmdfaGFzaFxuICAgIChSZXByIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG4gICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSZXByLmhhc2hfZm9sZF90IHN0YXRlIChNLnRvX3JlcHIgdClcbiAgbGV0IGhhc2ggPSBQcHhfaGFzaF9saWIuU3RkLkhhc2gub2ZfZm9sZCBoYXNoX2ZvbGRfdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogW2Fycl0gaXMgYSBjeWNsaWMgYnVmZmVyICopXG4gICAgbXV0YWJsZSBhcnIgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7ICgqIFtmcm9udF9pbmRleF0gYW5kIFtiYWNrX2luZGV4XSBhcmUgdGhlIHBvc2l0aW9ucyBpbiB3aGljaCBuZXcgZWxlbWVudHMgbWF5IGJlXG4gICAgICAgZW5xdWV1ZWQuICBUaGlzIG1ha2VzIHRoZSBhY3RpdmUgcGFydCBvZiBbYXJyXSB0aGUgcmFuZ2UgZnJvbSBbZnJvbnRfaW5kZXgrMV0gdG9cbiAgICAgICBbYmFja19pbmRleC0xXSAobW9kdWxvIHRoZSBsZW5ndGggb2YgW2Fycl0gYW5kIHdyYXBwaW5nIGFyb3VuZCBpZiBuZWNlc3NhcnkpLiAgTm90ZVxuICAgICAgIHRoYXQgdGhpcyBtZWFucyB0aGUgYWN0aXZlIHJhbmdlIGlzIG1heGltaXplZCB3aGVuIFtmcm9udF9pbmRleCA9IGJhY2tfaW5kZXhdLCB3aGljaFxuICAgICAgIG9jY3VycyB3aGVuIHRoZXJlIGFyZSBbQXJyYXkubGVuZ3RoIGFyciAtIDFdIGFjdGl2ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIGZyb250X2luZGV4IDogaW50XG4gIDsgbXV0YWJsZSBiYWNrX2luZGV4IDogaW50XG4gIDsgKCogYXBwYXJlbnRfZnJvbnRfaW5kZXggaXMgd2hhdCBpcyBleHBvc2VkIGFzIHRoZSBmcm9udCBpbmRleCBleHRlcm5hbGx5LiAgSXQgaGFzIG5vXG4gICAgICAgcmVhbCByZWxhdGlvbiB0byB0aGUgYXJyYXkgLS0gZXZlcnkgZW5xdWV1ZSB0byB0aGUgZnJvbnQgZGVjcmVtZW50cyBpdCBhbmQgZXZlcnlcbiAgICAgICBkZXF1ZXVlIGZyb20gdGhlIGZyb250IGluY3JlbWVudHMgaXQuICopXG4gICAgbXV0YWJsZSBhcHBhcmVudF9mcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgKCogV2Uga2VlcCBhcnJfbGVuZ3RoIGhlcmUgYXMgYSBzcGVlZCBoYWNrLiAgQ2FsbGluZyBBcnJheS5sZW5ndGggb24gYXJyIGlzIGFjdHVhbGx5XG4gICAgICAgbWVhbmluZ2Z1bGx5IHNsb3dlci4gKilcbiAgICBtdXRhYmxlIGFycl9sZW5ndGggOiBpbnRcbiAgOyBuZXZlcl9zaHJpbmsgOiBib29sXG4gIH1cblxubGV0IGNyZWF0ZSA/aW5pdGlhbF9sZW5ndGggP25ldmVyX3NocmluayAoKSA9XG4gIGxldCBuZXZlcl9zaHJpbmsgPVxuICAgIG1hdGNoIG5ldmVyX3NocmluayB3aXRoXG4gICAgfCBOb25lIC0+IE9wdGlvbi5pc19zb21lIGluaXRpYWxfbGVuZ3RoXG4gICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBsZXQgaW5pdGlhbF9sZW5ndGggPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6NyBpbml0aWFsX2xlbmd0aCBpblxuICBpZiBpbml0aWFsX2xlbmd0aCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwYXNzZWQgbmVnYXRpdmUgaW5pdGlhbF9sZW5ndGggdG8gRGVxdWUuY3JlYXRlOiAlaVwiIGluaXRpYWxfbGVuZ3RoICgpO1xuICAoKiBNYWtlIHRoZSBpbml0aWFsIGFycmF5IGxlbmd0aCBiZSBbaW5pdGlhbF9sZW5ndGggKyAxXSBzbyB3ZSBjYW4gZml0IFtpbml0aWFsX2xlbmd0aF1cbiAgICAgZWxlbWVudHMgd2l0aG91dCBncm93aW5nLiAgV2UgbmV2ZXIgcXVpdGUgdXNlIHRoZSB3aG9sZSBhcnJheS4gKilcbiAgbGV0IGFycl9sZW5ndGggPSBpbml0aWFsX2xlbmd0aCArIDEgaW5cbiAgeyBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46YXJyX2xlbmd0aFxuICA7IGZyb250X2luZGV4ID0gMFxuICA7IGJhY2tfaW5kZXggPSAxXG4gIDsgYXBwYXJlbnRfZnJvbnRfaW5kZXggPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGFycl9sZW5ndGhcbiAgOyBuZXZlcl9zaHJpbmtcbiAgfVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFdlIGtlZXAgdHJhY2sgb2YgdGhlIGxlbmd0aCBpbiBhIG11dGFibGUgZmllbGQgZm9yIHNwZWVkLCBidXQgdGhpcyBjYWxjdWxhdGlvbiBzaG91bGRcbiAgIGJlIGNvcnJlY3QgYnkgY29uc3RydWN0aW9uLCBhbmQgY2FuIGJlIHVzZWQgZm9yIHRlc3RpbmcuICopXG5sZXQgX2ludmFyaWFudF9sZW5ndGggdCA9XG4gIGxldCBjb25zdHJ1Y3RlZF9sZW5ndGggPVxuICAgIGlmIHQuZnJvbnRfaW5kZXggPCB0LmJhY2tfaW5kZXhcbiAgICB0aGVuIHQuYmFja19pbmRleCAtIHQuZnJvbnRfaW5kZXggLSAxXG4gICAgZWxzZSB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMSArIHQuYXJyX2xlbmd0aFxuICBpblxuICBhc3NlcnQgKGxlbmd0aCB0ID0gY29uc3RydWN0ZWRfbGVuZ3RoKVxuOztcblxuKCogVGhlIHZhcmlvdXMgXCJ3aGVuX25vdF9lbXB0eVwiIGZ1bmN0aW9ucyByZXR1cm4gbWlzbGVhZGluZyBudW1iZXJzIHdoZW4gdGhlIGRlcXVldWUgaXNcbiAgIGVtcHR5LiAgVGhleSBhcmUgc2FmZSB0byBjYWxsIGlmIGl0IGlzIGtub3duIHRoYXQgdGhlIGRlcXVldWUgaXMgbm9uLWVtcHR5LiAqKVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPSB0LmFwcGFyZW50X2Zyb250X2luZGV4XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIGxlbmd0aCB0IC0gMVxuXG5sZXQgYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5hcnJfbGVuZ3RoIC0gMSB0aGVuIDAgZWxzZSB0LmZyb250X2luZGV4ICsgMVxuOztcblxubGV0IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmJhY2tfaW5kZXggPSAwIHRoZW4gdC5hcnJfbGVuZ3RoIC0gMSBlbHNlIHQuYmFja19pbmRleCAtIDFcbjs7XG5cbmxldCBjaGVja2VkIHQgZiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB0KVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHlcbmxldCBhcHBhcmVudF9iYWNrX2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eVxuXG5sZXQgZm9sZGknIHQgZGlyIH5pbml0IH5mID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaSB+c3RvcF9wb3MgfnN0ZXAgPVxuICAgICAgaWYgcmVhbF9pID0gc3RvcF9wb3NcbiAgICAgIHRoZW4gYWNjLCBhcHBhcmVudF9pXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoZiBhcHBhcmVudF9pIGFjYyAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciByZWFsX2kpKVxuICAgICAgICAgIH5hcHBhcmVudF9pOihhcHBhcmVudF9pICsgc3RlcClcbiAgICAgICAgICB+cmVhbF9pOihyZWFsX2kgKyBzdGVwKVxuICAgICAgICAgIH5zdG9wX3Bvc1xuICAgICAgICAgIH5zdGVwXG4gICAgaW5cbiAgICAoKiBXZSB3YW50IHRvIGl0ZXJhdGUgZnJvbSBhY3R1YWxfZnJvbnQgdG8gYWN0dWFsX2JhY2sgKG9yIHZpY2UgdmVyc2EpLCBidXQgd2UgbWF5XG4gICAgICAgbmVlZCB0byB3cmFwIGFyb3VuZCB0aGUgYXJyYXkgdG8gZG8gc28uICBUaHVzIHdlIGRvIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgMS4gIElmIHRoZSBhY3RpdmUgcmFuZ2UgaXMgY29udGlndW91cyAoaS5lLiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2spLCB0aGVuIGxvb3BcbiAgICAgICBzdGFydGluZyBhdCB0aGUgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdW50aWwgd2UgcmVhY2ggdGhlIGZpcnN0XG4gICAgICAgZWxlbWVudCBvdXRzaWRlIG9mIGl0LlxuICAgICAgIDIuICBJZiBpdCBpcyBub3QgY29udGlndW91cyAoYWN0dWFsX2Zyb250ID4gYWN0dWFsX2JhY2spLCB0aGVuIGZpcnN0IGxvb3AgZnJvbSB0aGVcbiAgICAgICBhcHByb3ByaWF0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIFRoZW4sIGxvb3AgZnJvbVxuICAgICAgIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFycmF5IHRvIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZS5cbiAgICAqKVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgZnJvbnRfdG9fYmFjayAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfZnJvbnRcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2Zyb250XG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSlcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBhY2MsIGFwcGFyZW50X2kgPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aFxuICAgICAgICAgICAgfnN0ZXA6MVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID0gbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSB+c3RlcDoxIGluXG4gICAgICAgIGFjYylcbiAgICB8IGBiYWNrX3RvX2Zyb250IC0+XG4gICAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9mcm9udCAtIDEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KC0xKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIH5hcHBhcmVudF9pXG4gICAgICAgICAgICB+cmVhbF9pOih0LmFycl9sZW5ndGggLSAxKVxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpKVxuOztcblxubGV0IGZvbGQnIHQgZGlyIH5pbml0IH5mID0gZm9sZGknIHQgZGlyIH5pbml0IH5mOihmdW4gXyBhY2MgdiAtPiBmIGFjYyB2KSBbQG5vbnRhaWxdXG5sZXQgaXRlcmknIHQgZGlyIH5mID0gZm9sZGknIHQgZGlyIH5pbml0OigpIH5mOihmdW4gaSAoKSB2IC0+IGYgaSB2KVxubGV0IGl0ZXInIHQgZGlyIH5mID0gZm9sZGknIHQgZGlyIH5pbml0OigpIH5mOihmdW4gXyAoKSB2IC0+IGYgdilcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkJyB0IGBmcm9udF90b19iYWNrIH5pbml0IH5mXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9IGZvbGRpJyB0IGBmcm9udF90b19iYWNrIH5pbml0IH5mXG5sZXQgaXRlcmkgdCB+ZiA9IGl0ZXJpJyB0IGBmcm9udF90b19iYWNrIH5mXG5cbmxldCBpdGVyaV9pbnRlcm5hbCB0IH5mID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIChcbiAgICBsZXQgYWN0dWFsX2Zyb250ID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IHJlYyBsb29wIH5yZWFsX2kgfnN0b3BfcG9zID1cbiAgICAgIGlmIHJlYWxfaSA8IHN0b3BfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgZiB0LmFyciByZWFsX2k7XG4gICAgICAgIGxvb3AgfnJlYWxfaToocmVhbF9pICsgMSkgfnN0b3BfcG9zKVxuICAgIGluXG4gICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgdGhlbiBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSBbQG5vbnRhaWxdXG4gICAgZWxzZSAoXG4gICAgICBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3Bvczp0LmFycl9sZW5ndGg7XG4gICAgICBsb29wIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgW0Bub250YWlsXSkpXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgaXRlcmlfaW50ZXJuYWwgdCB+ZjooZnVuIGFyciBpIC0+IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gYXJyIGkgfD4gZikgW0Bub250YWlsXVxuOztcblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lm5ldmVyX3Nocmlua1xuICB0aGVuXG4gICAgKCogY2xlYXIgdGhlIGFycmF5IHRvIGFsbG93IGVsZW1lbnRzIHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkICopXG4gICAgaXRlcmlfaW50ZXJuYWwgdCB+ZjpPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lXG4gIGVsc2UgdC5hcnIgPC0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjg7XG4gIHQuZnJvbnRfaW5kZXggPC0gMDtcbiAgdC5iYWNrX2luZGV4IDwtIDE7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuYXJyXG47O1xuXG4oKiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSwgaW1wb3J0aW5nIGFsbCBvZiBDb250YWluZXIuTWFrZSB3b3VsZCBjaGFuZ2UgdGhlIHJ1bnRpbWUgb2ZcbiAgIHNvbWUgZnVuY3Rpb25zIChbbGVuZ3RoXSBtaW5pbWFsbHkpIHNpbGVudGx5IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlbWFudGljcy4gIFdlIGdldFxuICAgYXJvdW5kIHRoYXQgYnkgaW1wb3J0aW5nIHRoaW5ncyBleHBsaWNpdGx5LiAgKilcbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgbWVtID0gQy5tZW1cbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IGJsaXQgbmV3X2FyciB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IG9sZF9hcnIgPSB0LmFyciBpblxuICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgdGhlblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOihsZW5ndGggdClcbiAgZWxzZSAoXG4gICAgbGV0IGJyZWFrX3BvcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggb2xkX2FyciAtIGFjdHVhbF9mcm9udCBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOmJyZWFrX3BvcztcbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOmJyZWFrX3Bvc1xuICAgICAgfmxlbjooYWN0dWFsX2JhY2sgKyAxKSk7XG4gICgqIGxlbmd0aCBkZXBlbmRzIG9uIHQuYXJyIGFuZCB0LmZyb250X2luZGV4LCBzbyB0aGlzIG5lZWRzIHRvIGJlIGZpcnN0ICopXG4gIHQuYmFja19pbmRleCA8LSBsZW5ndGggdDtcbiAgdC5hcnIgPC0gbmV3X2FycjtcbiAgdC5hcnJfbGVuZ3RoIDwtIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FycjtcbiAgdC5mcm9udF9pbmRleCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgLSAxO1xuICAoKiBTaW5jZSB0LmZyb250X2luZGV4ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMSwgdGhpcyBpcyBhc3NlcnRpbmcgdGhhdCB0LmJhY2tfaW5kZXhcbiAgICAgaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkgYW5kIHRoYXQgdGhlIGFycmF5IGNhbiBzdXBwb3J0IGF0IGxlYXN0IG9uZSBtb3JlXG4gICAgIGVsZW1lbnQgLS0gcmVjYWxsLCBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gdGhlIGFycmF5IGlzIGZ1bGwuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgPiBsZW5ndGggdCArIDEuXG4gICopXG4gIGFzc2VydCAodC5mcm9udF9pbmRleCA+IHQuYmFja19pbmRleClcbjs7XG5cbmxldCBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0ID1cbiAgaWYgKG5vdCB0Lm5ldmVyX3NocmluaykgJiYgdC5hcnJfbGVuZ3RoID4gMTAgJiYgdC5hcnJfbGVuZ3RoIC8gMyA+IGxlbmd0aCB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggLyAyKSBpblxuICAgIGJsaXQgbmV3X2FyciB0KVxuOztcblxubGV0IGdyb3dfdW5kZXJseWluZyB0ID1cbiAgbGV0IG5ld19hcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KHQuYXJyX2xlbmd0aCAqIDIpIGluXG4gIGJsaXQgbmV3X2FyciB0XG47O1xuXG5sZXQgZW5xdWV1ZV9iYWNrIHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuYmFja19pbmRleCB2O1xuICB0LmJhY2tfaW5kZXggPC0gKGlmIHQuYmFja19pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5iYWNrX2luZGV4ICsgMSk7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWVfZnJvbnQgdCB2ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIGdyb3dfdW5kZXJseWluZyB0O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgdC5mcm9udF9pbmRleCB2O1xuICB0LmZyb250X2luZGV4IDwtIChpZiB0LmZyb250X2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmZyb250X2luZGV4IC0gMSk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCAtIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IHYgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB2XG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB2XG47O1xuXG5sZXQgcGVla19mcm9udF9ub25lbXB0eSB0ID1cbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAoYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgcGVla19mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBwZWVrX2JhY2tfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUucGVla19iYWNrX2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfYmFja19ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19iYWNrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBlZWtfYmFja19ub25lbXB0eSB0KVxuXG5sZXQgcGVlayB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuZnJvbnRfaW5kZXggPC0gaTtcbiAgdC5hcHBhcmVudF9mcm9udF9pbmRleCA8LSB0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfYmFja19ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuYmFja19pbmRleCA8LSBpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQ7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IGRlcXVldWVfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2dlbiA/KG4gPSAxKSB+ZGVxdWV1ZSB0ID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJEZXF1ZS5kcm9wOiAgbmVnYXRpdmUgaW5wdXQgKCVkKVwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAobiAtIDEpKVxuICBpblxuICBsb29wIG5cbjs7XG5cbmxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2Zyb250IHRcbmxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3BfZ2VuID9uIH5kZXF1ZXVlOmRlcXVldWVfYmFjayB0XG5cbmxldCBkcm9wID9uIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayA/biB0XG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgP24gdFxuOztcblxubGV0IGFzc2VydF9ub3RfZW1wdHkgdCBuYW1lID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZhaWx3aXRoZiBcIiVzOiBEZXF1ZS50IGlzIGVtcHR5XCIgbmFtZSAoKVxuXG5sZXQgdHJ1ZV9pbmRleF9leG4gdCBpID1cbiAgbGV0IGlfZnJvbV96ZXJvID0gaSAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggaW5cbiAgaWYgaV9mcm9tX3plcm8gPCAwIHx8IGxlbmd0aCB0IDw9IGlfZnJvbV96ZXJvXG4gIHRoZW4gKFxuICAgIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLnRydWVfaW5kZXhfZXhuXCI7XG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImludmFsaWQgaW5kZXg6ICVpIGZvciBhcnJheSB3aXRoIGluZGljZXMgKCVpLCVpKVwiXG4gICAgICBpXG4gICAgICBhcHBhcmVudF9mcm9udFxuICAgICAgYXBwYXJlbnRfYmFja1xuICAgICAgKCkpO1xuICBsZXQgdHJ1ZV9pID0gdC5mcm9udF9pbmRleCArIDEgKyBpX2Zyb21femVybyBpblxuICBpZiB0cnVlX2kgPj0gdC5hcnJfbGVuZ3RoIHRoZW4gdHJ1ZV9pIC0gdC5hcnJfbGVuZ3RoIGVsc2UgdHJ1ZV9pXG47O1xuXG5sZXQgZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKHRydWVfaW5kZXhfZXhuIHQgaSlcblxubGV0IGdldF9vcHQgdCBpID1cbiAgdHJ5IFNvbWUgKGdldCB0IGkpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzZXRfZXhuIHQgaSB2ID0gT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpIHZcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBwZWVrX2Zyb250IHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgZnJvbnQgLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBmcm9udCBpblxuICAgIGlnbm9yZVxuICAgICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB2IC0+XG4gICAgICAgICBhcnIuKGkpIDwtIHY7XG4gICAgICAgICBpICsgMSlcbiAgICAgICA6IGludCk7XG4gICAgYXJyXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID1cbiAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOihBcnJheS5sZW5ndGggYXJyICsgMSkgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnIgfmY6KGZ1biB2IC0+IGVucXVldWVfYmFjayB0IHYpO1xuICB0XG47O1xuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIzNGMxZTljYS00OTkyLTExZTYtYTY4Ni04YjRiZDRmODc3OTZcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5EZXF1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIHQgfmZcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOmxlbiAoKSBpblxuICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICBlbnF1ZXVlX2JhY2sgdCB4XG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcblxubGV0IHRfb2Zfc2V4cCBmIHNleHAgPSBvZl9hcnJheSAoQXJyYXkudF9vZl9zZXhwIGYgc2V4cClcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG4oKiByZS1leHBvc2UgdGhlc2UgaGVyZSB1bmRlciBhIGRpZmZlcmVudCBuYW1lIHRvIGF2b2lkIGludGVybmFsIGNvbmZ1c2lvbiAqKVxubGV0IGJhY2tfaW5kZXggPSBhcHBhcmVudF9iYWNrX2luZGV4XG5sZXQgZnJvbnRfaW5kZXggPSBhcHBhcmVudF9mcm9udF9pbmRleFxuXG5sZXQgYmFja19pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmJhY2tfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdFxuOztcblxubGV0IGZyb250X2luZGV4X2V4biB0ID1cbiAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUuZnJvbnRfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IFRlc3RfYmluYXJ5X3NlYXJjaGFibGUuTWFrZTFfYW5kX3Rlc3QgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0IHQgaSA9IGdldCB0IChmcm9udF9pbmRleF9leG4gdCArIGkpXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZFxuICBlbmQpXG5cbigqIFRoZSBcInN0YWJsZVwiIGluZGljZXMgdXNlZCBpbiB0aGlzIG1vZHVsZSBtYWtlIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGVcbiAgIFtCaW5hcnlfc2VhcmNoYWJsZV0gZnVuY3RvciBhd2t3YXJkLiAgV2UgbmVlZCB0byBiZSBzdXJlIHRvIHRyYW5zbGF0ZSBpbmNvbWluZ1xuICAgcG9zaXRpb25zIGZyb20gc3RhYmxlIHNwYWNlIHRvIHRoZSBleHBlY3RlZCAwIC0+IGxlbmd0aCAtIDEgc3BhY2UgYW5kIHRoZW4gd2UgbmVlZCB0b1xuICAgdHJhbnNsYXRlIHRoZW0gYmFjayBvbiByZXR1cm4uICopXG5sZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1bnRyYW5zbGF0ZWRfaSAtPiBTb21lICh0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgdW50cmFuc2xhdGVkX2kpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5cbmxldCBlcHJpbnQgbWVzc2FnZSA9IFByaW50Zi5lcHJpbnRmIFwiJXNcXG4lIVwiIG1lc3NhZ2VcbmxldCBlcHJpbnRfcyBzZXhwID0gZXByaW50IChTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbmxldCBlcHJpbnRzIG1lc3NhZ2UgYSBzZXhwX29mX2EgPSBlcHJpbnRfcyAoWyVzZXhwX29mOiBzdHJpbmcgKiBhXSAobWVzc2FnZSwgYSkpXG5sZXQgZXByaW50ZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXByaW50IGZvcm1hdFxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgTWFrZSAoKSA9IHN0cnVjdFxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBpbnZhcmlhbnQgfm1vZHVsZV9uYW1lIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlbiBlcHJpbnRzIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgaWYgIWNoZWNrX2ludmFyaWFudFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IExpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiaW52YXJpYW50IHByZS1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwb3N0LWNvbmRpdGlvbiBmYWlsZWRcIlxuICAgICAgICAgIChuYW1lLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBleG5dKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIGVwcmludHNcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgbW9kdWxlX25hbWU7IFwiLlwiOyBuYW1lOyBcIi1yZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5lbmRcblxubGV0IHNob3VsZF9wcmludF9iYWNrdHJhY2UgPSByZWYgZmFsc2VcblxubGV0IGFtX2ludGVybmFsIGhlcmUgbWVzc2FnZSA9XG4gICgqIEluIHRoaXMgZnVuY3Rpb24gd2UgdXNlIFtQcmludGYuZXByaW50Zl0gcmF0aGVyIHRoYW4gW0RlYnVnLmVwcmludGZdLCBiZWNhdXNlIHRoZVxuICAgICBmb3JtZXIgZG9lc24ndCBmbHVzaCwgd2hpbGUgdGhlIGxhdHRlciBkb2VzLiAgV2UnZCByYXRoZXIgZmx1c2ggb25jZSBhdCB0aGUgZW5kLFxuICAgICByYXRoZXIgdGhhbiB0aHJlZSB0aW1lcy4gKilcbiAgUHJpbnRmLmVwcmludGYgXCIlczpcXG5cIiAoU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nIGhlcmUpO1xuICBpZiAhc2hvdWxkX3ByaW50X2JhY2t0cmFjZVxuICB0aGVuXG4gICAgUHJpbnRmLmVwcmludGZcbiAgICAgIFwiJXNcXG5cIlxuICAgICAgKEJhY2t0cmFjZS5nZXQgKCkgfD4gWyVzZXhwX29mOiBCYWNrdHJhY2UudF0gfD4gU2V4cC50b19zdHJpbmdfaHVtKTtcbiAgKG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzXFxuXCIgbWVzc2FnZSk7XG4gIFByaW50Zi5lcHJpbnRmIFwiJSFcIlxuOztcblxubGV0IGFtIGhlcmUgPSBhbV9pbnRlcm5hbCBoZXJlIE5vbmVcbmxldCBhbWYgaGVyZSBmbXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHJpbmcgLT4gYW1faW50ZXJuYWwgaGVyZSAoU29tZSBzdHJpbmcpKSBmbXRcblxubGV0IGFtcyBoZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBhbV9pbnRlcm5hbCBoZXJlIChTb21lICgobWVzc2FnZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXSB8PiBTZXhwLnRvX3N0cmluZ19odW0pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN5c1xuXG5sZXQgdW5peF9xdW90ZSB4ID1cbiAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHgpKVxuICAmJiBTdHJpbmcuZm9yX2FsbCB4IH5mOihmdW5jdGlvblxuICAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgIHwgJzAnIC4uICc5J1xuICAgICAgIHwgJ18nIHwgJy0nIHwgJzonIHwgJy4nIHwgJy8nIHwgJywnIHwgJysnIHwgJz0nIHwgJyUnIHwgJ0AnIC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gKFxuICAgICgqIFNoZWxsIGtleXdvcmRzLCBhcyBvdXRwdXQgYnkgW2NvbXBnZW4gLWtdIGZvciBiYXNoLCBbbWFuIGRhc2hdIGZvciBkYXNoLCBhbmQgW1BBVEg9XG4gICAgICAgdHlwZSAtbSAnKicgfCBncmVwIHJlc2VydmVkXSBmb3IgenNoLCBleGNlcHQgZm9yIGtleXdvcmRzIHRoYXQgaGF2ZSBzcGVjaWFsXG4gICAgICAgY2hhcmFjdGVycyBsaWtlIFtbLiBOb3RlIHRoYXQgYnVpbHRpbnMgZG9uJ3QgbWF0dGVyIGJlY2F1c2UgJ2FsaWFzJyBhbmQgYWxpYXNcbiAgICAgICBiZWhhdmUgdGhlIHNhbWUsIHVubGlrZSAnaWYnIGFuZCBpZi4gKilcbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IFwiaWZcIlxuICAgIHwgXCJ0aGVuXCJcbiAgICB8IFwiZWxzZVwiXG4gICAgfCBcImVsaWZcIlxuICAgIHwgXCJmaVwiXG4gICAgfCBcImNhc2VcIlxuICAgIHwgXCJlc2FjXCJcbiAgICB8IFwiZm9yXCJcbiAgICB8IFwic2VsZWN0XCJcbiAgICB8IFwid2hpbGVcIlxuICAgIHwgXCJ1bnRpbFwiXG4gICAgfCBcImRvXCJcbiAgICB8IFwiZG9uZVwiXG4gICAgfCBcImluXCJcbiAgICB8IFwiZnVuY3Rpb25cIlxuICAgIHwgXCJ0aW1lXCJcbiAgICB8IFwiY29wcm9jXCJcbiAgICB8IFwiZm9yZWFjaFwiXG4gICAgfCBcInJlcGVhdFwiXG4gICAgfCBcIm5vY29ycmVjdFwiIC0+IEZpbGVuYW1lLnF1b3RlIHhcbiAgICB8IF8gLT4geClcbiAgZWxzZSBGaWxlbmFtZS5xdW90ZSB4XG47O1xuXG5sZXQgcXVvdGUgPVxuICBtYXRjaCBTdGRsaWIuU3lzLm9zX3R5cGUgd2l0aFxuICB8IFwiVW5peFwiIC0+IHVuaXhfcXVvdGVcbiAgfCBfIC0+IEZpbGVuYW1lLnF1b3RlXG47O1xuXG5sZXQgY29uY2F0X3F1b3RlZCBzcGxpdF9jb21tYW5kID1cbiAgTGlzdC5tYXAgfmY6cXVvdGUgc3BsaXRfY29tbWFuZCB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbjs7XG5cbmxldCBjX2ludF9zaXplID0gYFVzZV9TeXNfdW5peFxubGV0IGNhdGNoX2JyZWFrID0gYFVzZV9TeXNfdW5peFxubGV0IGNoZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmQgPSBgVXNlX1N5c191bml4XG5sZXQgY29tbWFuZF9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZXhlY3V0YWJsZV9uYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGlvbl9tb2RlID0gYFVzZV9TeXNfdW5peFxubGV0IGZpbGVfZXhpc3RzID0gYFVzZV9TeXNfdW5peFxubGV0IGZpbGVfZXhpc3RzX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBmb2xkX2RpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBnZXRjd2QgPSBgVXNlX1N5c191bml4XG5sZXQgaG9tZV9kaXJlY3RvcnkgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19maWxlX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBsc19kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgb3ZlcnJpZGVfYXJndiA9IGBVc2VfU3lzX3VuaXhcbmxldCByZWFkZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IHJlbW92ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW5hbWUgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudiA9IGBVc2VfU3lzX3VuaXhcbmxldCB1bnNhZmVfZ2V0ZW52X2V4biA9IGBVc2VfU3lzX3VuaXhcblxuZXhjZXB0aW9uIEJyZWFrID0gU3RkbGliLlN5cy5CcmVha1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgdW5peF9xdW90ZSA9IHVuaXhfcXVvdGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0ZGxpYi5BcmdcblxudHlwZSB0ID0ga2V5ICogc3BlYyAqIGRvY1xuXG5sZXQgc29ydF9hbmRfYWxpZ24gbHN0ID1cbiAgYWxpZ24gKEJhc2UuTGlzdC5zb3J0IGxzdCB+Y29tcGFyZTooZnVuIChhLCBfLCBfKSAoYiwgXywgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFnX2ludGZcbmluY2x1ZGUgKERvdWJseV9saW5rZWQgOiBEb3VibHlfbGlua2VkLlMpXG5cbmxldCBhZGQgPSBpbnNlcnRfZmlyc3RcbmxldCBhZGRfdW5pdCB0IHYgPSBhZGQgdCB2IHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG5sZXQgZWx0cyB0ID0gZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBlbHQgLT4gZWx0IDo6IGFjYylcbmxldCByZW1vdmVfb25lID0gcmVtb3ZlX2ZpcnN0XG5sZXQgY2hvb3NlID0gZmlyc3RfZWx0XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIE9wdGlvbi5pdGVyIChyZW1vdmVfb25lIHQpIH5mOihmdW4gdiAtPlxuICAgICAgZiB2O1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgYnN0ciA6IEJpZ3N0cmluZy50XG4gIDsgbXV0YWJsZSBwb3MgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludFxuICA7IGluaXQgOiBCaWdzdHJpbmcudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgcmVzaXplIGJ1ZiBtb3JlID1cbiAgbGV0IG1pbl9sZW4gPSBidWYubGVuICsgbW9yZSBpblxuICBsZXQgbmV3X2xlbiA9IG1pbl9sZW4gKyBtaW5fbGVuIGluXG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBuZXdfbGVuIGluXG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zi5ic3RyIH5zcmNfbGVuOmJ1Zi5wb3MgfmRzdDpuZXdfYnVmICgpO1xuICBidWYuYnN0ciA8LSBuZXdfYnVmO1xuICBidWYubGVuIDwtIG5ld19sZW5cbjs7XG4iLCIoKiBTb21lIGNvZGUgdGFrZW4gZnJvbSBJTlJJQSdzIGJ1ZmZlciBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBCaWdzdHJpbmdcbmluY2x1ZGUgQmlnYnVmZmVyX2ludGVybmFsXG5cbmxldCBfX2ludGVybmFsICh0IDogdCkgPSB0XG5sZXQgbGVuZ3RoIHQgPSB0LnBvc1xuXG4oKiB7WyBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQubGVuID09IEJpZ3N0cmluZy5sZW5ndGggdC5ic3RyKSBdfSAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9IG1heCAxIG4gaW5cbiAgbGV0IGJzdHIgPSBCaWdzdHJpbmcuY3JlYXRlIG4gaW5cbiAgeyBic3RyOyBwb3MgPSAwOyBsZW4gPSBuOyBpbml0ID0gYnN0ciB9XG47O1xuXG5sZXQgY29udGVudHMgYnVmID0gQmlnc3RyaW5nLnRvX3N0cmluZyBidWYuYnN0ciB+bGVuOmJ1Zi5wb3NcbmxldCBjb250ZW50c19ieXRlcyBidWYgPSBCaWdzdHJpbmcudG9fYnl0ZXMgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgYmlnX2NvbnRlbnRzIGJ1ZiA9IHN1Ym8gfmxlbjpidWYucG9zIGJ1Zi5ic3RyXG5sZXQgdm9sYXRpbGVfY29udGVudHMgYnVmID0gYnVmLmJzdHJcblxubGV0IGFkZF9jaGFyIGJ1ZiBjID1cbiAgbGV0IHBvcyA9IGJ1Zi5wb3MgaW5cbiAgaWYgcG9zID49IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIDE7XG4gIGJ1Zi5ic3RyLntwb3N9IDwtIGM7XG4gIGJ1Zi5wb3MgPC0gcG9zICsgMVxuOztcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgVGVzdF9ibGl0Lk1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgIGxldCBlcXVhbCA9IENoYXIuZXF1YWxcbiAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gJ2EnIGVsc2UgJ2InXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgICAgYWRkX2NoYXIgdCAnYSdcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHNldCB0IGkgYyA9IEJpZ3N0cmluZy5zZXQgdC5ic3RyIGkgY1xuICAgICAgbGV0IGdldCB0IGkgPSBCaWdzdHJpbmcuZ2V0IHQuYnN0ciBpXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQnl0ZXNcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBCaWdzdHJpbmcuVG9fYnl0ZXMudW5zYWZlX2JsaXQgfnNyYzpzcmMuYnN0ciB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgICAgIDs7XG4gICAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnYnVmZmVyX2ludGVybmFsKSAoVG9fYnl0ZXMpXG5cbmxldCBudGggYnVmIHBvcyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGJ1Zi5wb3MgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5udGhcIiBlbHNlIGJ1Zi5ic3RyLntwb3N9XG47O1xuXG5sZXQgY2xlYXIgYnVmID0gYnVmLnBvcyA8LSAwXG5cbmxldCByZXNldCBidWYgPVxuICBidWYucG9zIDwtIDA7XG4gIGJ1Zi5ic3RyIDwtIGJ1Zi5pbml0O1xuICBidWYubGVuIDwtIEJpZ3N0cmluZy5sZW5ndGggYnVmLmJzdHJcbjs7XG5cbmxldCBhZGRfc3Vic3RyaW5nIGJ1ZiBzcmMgfnBvczpzcmNfcG9zIH5sZW4gPVxuICBpZiBzcmNfcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3M7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdWJieXRlcyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmlnc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdHJpbmcgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J5dGVzIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYnVmZmVyIGJ1Zl9kc3QgYnVmX3NyYyA9XG4gIGxldCBsZW4gPSBidWZfc3JjLnBvcyBpblxuICBsZXQgZHN0X3BvcyA9IGJ1Zl9kc3QucG9zIGluXG4gIGxldCBuZXdfcG9zID0gZHN0X3BvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmX2RzdC5sZW4gdGhlbiByZXNpemUgYnVmX2RzdCBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zl9zcmMuYnN0ciB+c3JjX2xlbjpsZW4gfmRzdDpidWZfZHN0LmJzdHIgfmRzdF9wb3MgKCk7XG4gIGJ1Zl9kc3QucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmluX3Byb3QgdCAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcikgeCA9XG4gIGxldCBuZXdfcG9zID1cbiAgICBtYXRjaCB3cml0ZXIud3JpdGUgdC5ic3RyIH5wb3M6dC5wb3MgeCB3aXRoXG4gICAgfCBwb3MgLT4gcG9zXG4gICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgKCogSXQncyBsaWtla3kgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgaW50ZXJuYWwgYnVmZmVyIGFuZCB0cnkgYWdhaW4uIFRlY2huaWNhbGx5IHdlIGNvdWxkIG1hdGNoIG9uXG4gICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0IGN1c3RvbVxuICAgICAgICAgYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgZG8gcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICBbSW52YWxpZF9hcmd1bWVudF0gb3IgW0ZhaWx1cmVdIGZvciBpbnN0YW5jZS4gKilcbiAgICAgIGxldCBzaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgaWYgdC5wb3MgKyBzaXplID4gdC5sZW4gdGhlbiByZXNpemUgdCBzaXplO1xuICAgICAgd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHhcbiAgaW5cbiAgdC5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKE5vdF9mb3VuZF9zXG4gICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgIFwiQmlnYnVmZmVyLmFkZF9zdWJzdGl0dXRlOiBjYW5ub3QgZmluZCBjbG9zaW5nIGRlbGltaXRlclwiXG4gICAgICAgICAgICAgICAob3BlbmluZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoY2xvc2luZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoc3RhcnQgOiBpbnQpXG4gICAgICAgICAgICAgICBzXSlcbiAgICBlbHNlIGlmIENoYXIuZXF1YWwgcy5baV0gb3BlbmluZ1xuICAgIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIGNsb3NpbmdcbiAgICB0aGVuIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltXG4gIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlbiBsaW1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgfCAnQScgLi4gJ1onXG4gICAgICB8ICcwJyAuLiAnOSdcbiAgICAgIHwgJ18nXG4gICAgICB8ICfpJ1xuICAgICAgfCAn4CdcbiAgICAgIHwgJ+EnXG4gICAgICB8ICfoJ1xuICAgICAgfCAn+SdcbiAgICAgIHwgJ+InXG4gICAgICB8ICfqJ1xuICAgICAgfCAn7idcbiAgICAgIHwgJ/QnXG4gICAgICB8ICf7J1xuICAgICAgfCAn6ydcbiAgICAgIHwgJ+8nXG4gICAgICB8ICf8J1xuICAgICAgfCAn5ydcbiAgICAgIHwgJ8knXG4gICAgICB8ICfAJ1xuICAgICAgfCAnwSdcbiAgICAgIHwgJ8gnXG4gICAgICB8ICfZJ1xuICAgICAgfCAnwidcbiAgICAgIHwgJ8onXG4gICAgICB8ICfOJ1xuICAgICAgfCAn1CdcbiAgICAgIHwgJ9snXG4gICAgICB8ICfLJ1xuICAgICAgfCAnzydcbiAgICAgIHwgJ9wnXG4gICAgICB8ICfHJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgICB8IF8gLT4gaSlcbiAgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgPVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAoJygnIHwgJ3snKSBhcyBjIC0+XG4gICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgIFN0cmluZy5zdWIgcyB+cG9zOm5ld19zdGFydCB+bGVuOihzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpzdGFydCB+bGVuOihzdG9wIC0gc3RhcnQpLCBzdG9wXG47O1xuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBidWYgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW1cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBDaGFyLmVxdWFsIHByZXZpb3VzICdcXFxcJyAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyAoaSArIDEpIGluXG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIChmIGlkZW50KTtcbiAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpKVxuICBpblxuICBzdWJzdCAnICcgMFxuOztcblxubW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICBsZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgPVxuICAgIEZvcm1hdC5tYWtlX2Zvcm1hdHRlciAoZnVuIHMgcG9zIGxlbiAtPiBhZGRfc3Vic3RyaW5nIGJ1ZiBzIH5wb3MgfmxlbikgaWdub3JlXG4gIDs7XG5cbiAgbGV0IGJwcmludGYgYnVmID0gRm9ybWF0LmtmcHJpbnRmIGlnbm9yZSAoZm9ybWF0dGVyX29mX2J1ZmZlciBidWYpXG5lbmRcblxubW9kdWxlIFByaW50ZiA9IHN0cnVjdFxuICBsZXQgYnByaW50ZiBidWYgPSBQcmludGYua3NwcmludGYgKGFkZF9zdHJpbmcgYnVmKVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkJ5dGVzfVtCYXNlLkJ5dGVzXX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuQnl0ZXNcbmVuZFxud2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbZ2VuXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZiBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtieXRlc10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW0J5dGVzLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gcHJvdmlkZVxuICAgIGludGVyZmFjZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZy5GIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJpZ3N0cmluZy5jcmVhdGUgP21heF9tZW1fd2FpdGluZ19nYzpOb25lXG4gICAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQmlnc3RyaW5nLmdldFxuXG4gICAgbW9kdWxlIEJsaXQgPSBNYWtlX3N1YnN0cmluZy5CbGl0XG5cbiAgICBsZXQgYmxpdCA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGFibGVfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgICAgICB2YWwgbGFiZWwgOiBzdHJpbmdcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbmRleCA6IGludFxuICAgICAgICA7IG1pbl9pbmRleCA6IGludFxuICAgICAgICA7IG1heF9pbmRleCA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgY3JlYXRlIGluZGV4IH5taW4gfm1heCA9XG4gICAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgKGluZGV4IDogaW50KSAobWluIDogaW50KSAobWF4IDogaW50KV1cbiAgICAgICAgZWxzZSB7IGluZGV4OyBtaW5faW5kZXggPSBtaW47IG1heF9pbmRleCA9IG1heCB9XG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgRm9yX3NleHBhYmxlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEZvcl9zZXhwYWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgdCA9IE0ubGFiZWwsIHQuaW5kZXgsIFwib2ZcIiwgdC5taW5faW5kZXgsIFwidG9cIiwgdC5tYXhfaW5kZXhcblxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlIChsYWJlbCwgaW5kZXgsIG9mXywgbWluLCB0b18sIG1heCkgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgbGFiZWwgTS5sYWJlbFxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgb2ZfIFwib2ZcIlxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgdG9fIFwidG9cIlxuICAgICAgICAgICAgICB0aGVuIGNyZWF0ZSBpbmRleCB+bWluIH5tYXhcbiAgICAgICAgICAgICAgZWxzZSBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgc2V4cCBmb3IgaW5kZXhcIiB+bGFiZWw6TS5sYWJlbF1cbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgUyA9IEJvdW5kZWRfaW5kZXhfaW50Zi5TXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBTdGFibGUuVjEuTWFrZSAoTSlcbiAgZW5kXG5cbiAgb3BlbiBTdGFibGUuVjFcblxuICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjcmVhdGUgPSBTdGFibGUuVjEuY3JlYXRlXG5cbiAgbGV0IGNyZWF0ZV9hbGwgfm1pbiB+bWF4ID1cbiAgICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6bWluIH5mOihmdW4gaW5kZXggLT5cbiAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNyZWF0ZSBpbmRleCB+bWluIH5tYXgsIGluZGV4ICsgMSkpXG4gICAgfD4gU2VxdWVuY2UudG9fbGlzdFxuICA7O1xuXG4gIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICBsZXQgbWF4X2luZGV4IHQgPSB0Lm1heF9pbmRleFxuICBsZXQgbWluX2luZGV4IHQgPSB0Lm1pbl9pbmRleFxuICBsZXQgemVyb19iYXNlZF9pbmRleCB0ID0gaW5kZXggdCAtIG1pbl9pbmRleCB0XG4gIGxldCBudW1faW5kZXhlcyB0ID0gbWF4X2luZGV4IHQgLSBtaW5faW5kZXggdCArIDFcblxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5pbmNsdWRlIENvbW1hbmRcblxubW9kdWxlIEFyZ190eXBlID0gc3RydWN0XG4gIGluY2x1ZGUgQXJnX3R5cGVcblxuICBtb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeHBvcnRcblxuICAgIGxldCBkYXRlID0gY3JlYXRlIERhdGUub2Zfc3RyaW5nXG4gICAgbGV0IHBlcmNlbnQgPSBjcmVhdGUgUGVyY2VudC5vZl9zdHJpbmdcbiAgICBsZXQgaG9zdF9hbmRfcG9ydCA9IGNyZWF0ZSBIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgUGFyYW0gOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBQYXJhbSB3aXRoIG1vZHVsZSBBcmdfdHlwZSA6PSBQYXJhbS5BcmdfdHlwZVxuICAgIGVuZClcblxuICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuZW5kXG5cbm1vZHVsZSBTcGVjID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNwZWMgOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBTcGVjIHdpdGggbW9kdWxlIEFyZ190eXBlIDo9IFNwZWMuQXJnX3R5cGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIExldF9zeW50YXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IFBhcmFtXG4gIGVuZFxuZW5kXG4iLCIoKiogQ29yZSBncmVhdGx5IGV4cGFuZHMgdGhlIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGluIEJhc2Ugd2hpbGUgc3RpbGwgcmVtYWluaW5nXG4gICAgcGxhdGZvcm0tYWdub3N0aWMuICBDb3JlIGNoYW5nZXMgbW9yZSBmcmVxdWVudGx5IChpLmUuLCBpcyBsZXNzIHN0YWJsZSkgdGhhbiBCYXNlLlxuXG4gICAgU29tZSBtb2R1bGVzIGFyZSBtZXJlIGV4dGVuc2lvbnMgb2YgdGhlaXIgY291bnRlcnBhcnRzIGluIEJhc2UsIHVzdWFsbHkgYWRkaW5nIGdlbmVyaWNcbiAgICBmdW5jdGlvbmFsaXR5IGJ5IGluY2x1ZGluZyBmdW5jdG9ycyB0aGF0IG1ha2UgdGhlbSBiaW5hYmxlLCBjb21wYXJhYmxlLCBzZXhwYWJsZSxcbiAgICBibGl0YWJsZSwgZXRjLiAgVGhlIGJ1bGsgb2YgQ29yZSwgdGhvdWdoLCBpcyBtb2R1bGVzIHByb3ZpZGluZyBlbnRpcmVseSBuZXdcbiAgICBmdW5jdGlvbmFsaXR5LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFyZyA9IEFyZ1xubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJhZyA9IEJhZ1xubW9kdWxlIEJpZ2J1ZmZlciA9IEJpZ2J1ZmZlclxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xubW9kdWxlIEJpZ3N1YnN0cmluZyA9IEJpZ3N1YnN0cmluZ1xubW9kdWxlIEJpbl9wcm90ID0gQ29yZV9iaW5fcHJvdFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZ1xubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCb3VuZGVkX2luZGV4ID0gQm91bmRlZF9pbmRleFxubW9kdWxlIEJ1ZmZlciA9IEJhc2UuQnVmZmVyXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHNcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5tb2R1bGUgQ2FtbCA9IENhbWwgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTAxXSB1c2UgU3RkbGliIGluc3RlYWQgb2YgQ2FtbFwiXVxubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tbWFuZCA9IENvbW1hbmRfaW50ZXJuYWxcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBDb21wYXJpc29uc1xubW9kdWxlIENvbnRhaW5lciA9IENvbnRhaW5lclxubW9kdWxlIENvbnRhaW5lcl9pbnRmID0gQ29udGFpbmVyX2ludGZcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfc3RhYmxlID0gU3RhYmxlXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDVdIFVzZSBbQ29yZV9zdGFibGVdIC0tIFtDb3JlX2tlcm5lbF0gd2FzIHJlbmFtZWQgYXMgW0NvcmVdXCJdXG5cbm1vZHVsZSBDb3JlX3N0YWJsZSA9IFN0YWJsZVxubW9kdWxlIERhdGUgPSBEYXRlXG5tb2R1bGUgRGF5X29mX3dlZWsgPSBEYXlfb2Zfd2Vla1xubW9kdWxlIERlYnVnID0gRGVidWdcbm1vZHVsZSBEZXF1ZSA9IERlcXVlXG5tb2R1bGUgRGVyaXZpbmdfaGFzaCA9IERlcml2aW5nX2hhc2hcbm1vZHVsZSBEaWdlc3QgPSBNZDUgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE3LTA1XSBVc2UgTWQ1IGluc3RlYWQuXCJdXG5tb2R1bGUgRG91Ymx5X2xpbmtlZCA9IERvdWJseV9saW5rZWRcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gPSBTdGRsaWIuRXBoZW1lcm9uXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBCYXNlLkV4blxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZVxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvblxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBGcXVldWUgPSBGcXVldWVcbm1vZHVsZSBHYyA9IEdjXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZVxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBIYXNodGJsX2ludGYgPSBIYXNodGJsX2ludGZcbm1vZHVsZSBIZWFwX2Jsb2NrID0gSGVhcF9ibG9ja1xubW9kdWxlIEhleGR1bXAgPSBIZXhkdW1wXG5tb2R1bGUgSGV4ZHVtcF9pbnRmID0gSGV4ZHVtcF9pbnRmXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnRcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uID0gSW1tZWRpYXRlX29wdGlvblxubW9kdWxlIEltbWVkaWF0ZV9vcHRpb25faW50ZiA9IEltbWVkaWF0ZV9vcHRpb25faW50ZlxubW9kdWxlIEluX2NoYW5uZWwgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X2ludGYgPSBJbnRfaW50ZlxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludGVyZmFjZXMgPSBJbnRlcmZhY2VzXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1hcF9pbnRmID0gTWFwX2ludGZcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTWQ1ID0gTWQ1XG5tb2R1bGUgTWVtbyA9IE1lbW9cbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTW9udGggPSBNb250aFxuXG5tb2R1bGUgTXV0ZXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDJdIFVzZSBbRXJyb3JfY2hlY2tpbmdfbXV0ZXhdIG9yIFtDYW1sX3RocmVhZHMuTXV0ZXhdXCJdXG5cbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb19wb2x5bW9ycGhpY19jb21wYXJlID0gTm9fcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT25seV9pbl90ZXN0ID0gT25seV9pbl90ZXN0XG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gT3B0aW9uYWxfc3ludGF4XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4X2ludGYgPSBPcHRpb25hbF9zeW50YXhfaW50ZlxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBPdXRfY2hhbm5lbCA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGVyY2VudCA9IFBlcmNlbnRcbm1vZHVsZSBQZXJtcyA9IFBlcm1zXG5tb2R1bGUgUGlkID0gUGlkXG5tb2R1bGUgUG9seSA9IFBvbHlcblxubW9kdWxlIFBvcGNvdW50ID0gQmFzZS5Qb3Bjb3VudFxuW0BAd2FybmluZyBcIi0zXCJdXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IFByZXR0eV9wcmludGVyXG5tb2R1bGUgUHJpbnRleGMgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBRdWlja2NoZWNrID0gUXVpY2tjaGVja1xubW9kdWxlIFF1aWNrY2hlY2tfaW50ZiA9IFF1aWNrY2hlY2tfaW50ZlxubW9kdWxlIFF1aWNrY2hlY2thYmxlID0gUXVpY2tjaGVja2FibGVcbm1vZHVsZSBSYW5kb20gPSBCYXNlLlJhbmRvbVxubW9kdWxlIFJlZiA9IFJlZlxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdFxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RseV9jb21wYXJhYmxlXG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNldF9pbnRmID0gU2V0X2ludGZcbm1vZHVsZSBTZXRfb25jZSA9IFNldF9vbmNlXG5tb2R1bGUgU2V4cF9tYXliZSA9IFNleHAuU2V4cF9tYXliZVxuXG5tb2R1bGUgU2V4cCA9IFNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlXG5tb2R1bGUgU2lnbiA9IFNpZ25cbm1vZHVsZSBTaWduYWwgPSBTaWduYWxcbm1vZHVsZSBTaWduX29yX25hbiA9IFNpZ25fb3JfbmFuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvblxubW9kdWxlIFNwbGl0dGFibGVfcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb21cbm1vZHVsZSBTdGFibGVfY29tcGFyYWJsZSA9IFN0YWJsZV9jb21wYXJhYmxlXG5tb2R1bGUgU3RhYmxlX3VuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3Rcbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gU3RyaW5nYWJsZVxubW9kdWxlIFN1YnN0cmluZyA9IFN1YnN0cmluZ1xubW9kdWxlIFN1YnN0cmluZ19pbnRmID0gU3Vic3RyaW5nX2ludGZcbm1vZHVsZSBTeXMgPSBDb3JlX3N5c1xuXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW0NvcmVfdGhyZWFkXSBvciBbQ2FtbF90aHJlYWRzLlRocmVhZF1cIl1cblxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTFdIFVzZSBbVGltZV9mbG9hdF0gb3IgW1RpbWVfZmxvYXRfdW5peF0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgVGltZV9mbG9hdCA9IFRpbWVfZmxvYXRcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc1xubW9kdWxlIFR1cGxlID0gVHVwbGVcbm1vZHVsZSBUdXBsZTIgPSBUdXBsZS5UMlxubW9kdWxlIFR1cGxlMyA9IFR1cGxlLlQzXG5tb2R1bGUgVHlwZV9lcXVhbCA9IFR5cGVfZXF1YWxcbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IFR5cGVfaW1tZWRpYWN5XG5tb2R1bGUgVWNoYXIgPSBVY2hhclxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pb25fZmluZCA9IFVuaW9uX2ZpbmRcbm1vZHVsZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWRcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVuaXRfb2ZfdGltZSA9IFVuaXRfb2ZfdGltZVxubW9kdWxlIFVuaXZfbWFwID0gVW5pdl9tYXBcblxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMjAtMDNdIENvcmUgc2hhZG93cyBVbml4LiBVc2UgQ29yZV91bml4LCB3aGljaCBvdmVycmlkZXMgc29tZSBvZiBVbml4J3MgXFxcbiAgIGJlaGF2aW9yLiBJZiBuZWNlc3NhcnksIFVuaXggaXMgYXZhaWxhYmxlIGFuZCB1bnNoYWRvd2VkIGFzIENhbWxfdW5peC5cIl1cblxubW9kdWxlIFZhbGlkYXRlID0gVmFsaWRhdGVcbm1vZHVsZSBWYWxpZGF0ZWQgPSBWYWxpZGF0ZWRcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdlYWsgPSBXZWFrXG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBXaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IFdvcmRfc2l6ZVxuXG5tb2R1bGUgdHlwZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWQuSWRcblxuaW5jbHVkZSBUICgqKiBAb3BlbiAqKVxuXG5pbmNsdWRlIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBOb3RfZm91bmRcblxuKCoqIHsyIFRvcC1sZXZlbCB2YWx1ZXN9ICopXG5cbmV4dGVybmFsIHBoeXNfZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcblxudHlwZSAnYSBfbWF5YmVfYm91bmQgPSAnYSBNYXliZV9ib3VuZC50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuXG5sZXQgYW1fcnVubmluZ190ZXN0ID0gYW1fcnVubmluZ190ZXN0XG5sZXQgZG9lc19yYWlzZSA9IEV4bi5kb2VzX3JhaXNlXG5sZXQgc2VjID0gVGltZV9mbG9hdC5TcGFuLm9mX3NlY1xubGV0ICggXi8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG4oKiogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgIFtDb3JlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQ29yZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgIHRoZW4gdGhlIHNpZGUgZWZmZWN0cyBtaWdodCBub3QgYmUgcnVuIGluIHRoYXQgcHJvZ3JhbS4gIFRoaXMgd2lsbCBydW4gYXMgbG9uZyBhcyB0aGVcbiAgICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gQ29yZTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgIFtDb3JlLkJvb2xdLCBmb3IgZXhhbXBsZSwgaXMgbm90IHN1ZmZpY2llbnQuICopXG5sZXQgKCkgPSBFeG4uaW5pdGlhbGl6ZV9tb2R1bGUgKClcblxuKCoqIFRvIGJlIHVzZWQgaW4gaW1wbGVtZW50aW5nIENvcmUsIGJ1dCBub3QgYnkgZW5kIHVzZXJzLiAqKVxubW9kdWxlIENvcmVfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGlnaXRfc3RyaW5nX2hlbHBlcnMgPSBEaWdpdF9zdHJpbmdfaGVscGVyc1xuICBtb2R1bGUgVGltZV96b25lID0gWm9uZVxuICBtb2R1bGUgT2ZkYXlfaGVscGVycyA9IE9mZGF5X2hlbHBlcnNcbiAgbW9kdWxlIFNwYW5fZmxvYXQgPSBTcGFuX2Zsb2F0XG5cbiAgbW9kdWxlIEJpZ2J1ZmZlcl9pbnRlcm5hbCA9IEJpZ2J1ZmZlcl9pbnRlcm5hbFxuICBtb2R1bGUgU3RhYmxlX2ludGVybmFsID0gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBTdGRfaW50ZXJuYWwgPSBTdGRfaW50ZXJuYWxcblxuICBtb2R1bGUgVGltZV9uc19hbHRlcm5hdGVfc2V4cCA9IFRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmVuZFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfcHJpdmF0ZSA9IENvcmVfcHJpdmF0ZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfcHJpdmF0ZV0gLS0gW0NvcmVfa2VybmVsXSB3YXMgcmVuYW1lZCBhcyBbQ29yZV1cIl1cbiIsImluY2x1ZGUgQ29tbWFuZC5TaGFwZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4hIFN0YWJsZV9pbnRlcm5hbFxuICBvcGVuISBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuXG4gIG1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICAgIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5HcmFtbWFyLlYxXG5cbiAgICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuQW5vbnMuR3JhbW1hci5WMS50ID1cbiAgICAgICAgICB8IFplcm9cbiAgICAgICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgICAgICB8IE1hbnkgb2YgdFxuICAgICAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgICBbJWV4cGVjdCB7fCBhMTdmZDM0ZWMyMTNlNTA4ZGI0NTBmNjQ2OWY3ZmU5OSB8fV1cbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLlYyXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLlYyLnQgPVxuICAgICAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgICAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci5WMS50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAwODFkOWVjMTY3OTAzZjhmOGM0OWNiZjhlM2ZiM2E2NiB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuRmxhZ19pbmZvLlYxXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkZsYWdfaW5mby5WMS50ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGJkOGQ2ZmI3YTY2MmQyYzBiNWUwZDIwMjZjNmQyZDIxIHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5CYXNlX2luZm8uVjJcblxuICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuQmFzZV9pbmZvLlYyLnQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgYW5vbnMgOiBBbm9ucy5WMi50XG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDhmYWFjMWU4ZDlkZWIwYmFhYTU2YWM4ZWJmODViNDk4IHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIGEgPSBEdW1teV90eXBlX2JlY2F1c2Vfd2VfY2Fubm90X2RpZ2VzdF90eXBlX2NvbnN0cnVjdG9yc19vbmx5X2NvbmNyZXRlX3R5cGVzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkdyb3VwX2luZm8uVjJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgQ29tbWFuZC5TaGFwZS5TdGFibGUuR3JvdXBfaW5mby5WMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LlN0YWJsZS5WMS50IExhenkuU3RhYmxlLlYxLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBhIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAyY2MzZWViNThkMTJkOGZlNDQwMDAwOWU1OTJkNzgyNyB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuRXhlY19pbmZvLlYzXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkV4ZWNfaW5mby5WMy50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgYzBjODI1NmU5MjM4Y2RkOGYyZWMxZjg3ODVlMDJhZTAgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkZ1bGx5X2ZvcmNlZC5WMVxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GdWxseV9mb3JjZWQuVjEudCA9XG4gICAgICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnQgKiB0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA5ODExNTRlZjM5MTk0MzdjNmM4MjI2MTk4ODI4NDFkNCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFRva2VuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJZGVudFxuICAgIHwgRnVuY3Rpb25cbiAgICB8IEF0a2V5d29yZFxuICAgIHwgSGFzaFxuICAgIHwgU3RyaW5nXG4gICAgfCBVcmlcbiAgICB8IERlbGltXG4gICAgfCBOdW1iZXJcbiAgICB8IFBlcmNlbnRhZ2VcbiAgICB8IERpbWVuc2lvblxuICAgIHwgV2hpdGVfc3BhY2VcbiAgICB8IENvbG9uXG4gICAgfCBTZW1pX2NvbG9uXG4gICAgfCBDb21tYVxuICAgIHwgTGJyYWNrZXRcbiAgICB8IFJicmFja2V0XG4gICAgfCBMcGFyZW5cbiAgICB8IFJwYXJlblxuICAgIHwgTGN1cmx5XG4gICAgfCBSY3VybHlcbiAgICB8IENvbW1lbnRcbiAgICB8IEVvZlxuICAgIHwgRXJyb3JcbiAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyAoKiBzdGFydCBvZiB0aGUgY3VycmVudCB0b2tlbiAqKVxuICAgIG11dGFibGUgbGVuIDogaW50XG4gIDsgKCogbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuICopXG4gICAgbXV0YWJsZSBjdXJyZW50IDogVG9rZW4udFxuICB9XG5cbnR5cGUgbWFyayA9IE1hcmsgb2YgaW50IFtAQHVuYm94ZWRdXG5cbmxldCBtYXJrIHQgPSBNYXJrIHQubGVuXG5sZXQgc291cmNlIHQgPSB0LnNcbmxldCBuZXh0X3BvcyB0ID0gdC5vZmYgKyB0LmxlblxubGV0IGlzX25leHRfZW9mIHQgPSBuZXh0X3BvcyB0ID49IFN0cmluZy5sZW5ndGggdC5zXG5sZXQgbmV4dF9jaGFyIHQgPSB0LnMuW25leHRfcG9zIHRdXG5sZXQgcmVzZXQgdCAoTWFyayB2KSA9IHQubGVuIDwtIHZcbmxldCBjb25zdW1lXzEgdCA9IHQubGVuIDwtIHQubGVuICsgMVxubGV0IGNvbnN1bWVfbiB0IG4gPSB0LmxlbiA8LSB0LmxlbiArIG5cblxubGV0IG9uZV9jaGFyX3Rva2VuIHQgdG9rID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBjb25zdW1lXzEgdDtcbiAgdC5jdXJyZW50IDwtIHRva1xuOztcblxuZXhjZXB0aW9uIEVycm9yX2hhcHBlbmVkXG5cbmxldCBlcnJvciB0ID1cbiAgdC5jdXJyZW50IDwtIEVycm9yO1xuICByYWlzZSBFcnJvcl9oYXBwZW5lZFxuOztcblxubGV0IGFjY2VwdCB0IGYgPVxuICBpZiAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpXG4gIHRoZW4gKFxuICAgIGNvbnN1bWVfMSB0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCBhY2NlcHRfY2hhciB0IGNoID0gYWNjZXB0IHQgKENoYXIuZXF1YWwgY2gpXG5cbmxldCBhY2NlcHRfc3RyaW5nIHQgc3RyID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPSAwXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgcG9zID0gbmV4dF9wb3MgdCBpblxuICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBwb3MgKyBzdHJfbGVuID4gU3RyaW5nLmxlbmd0aCB0LnNcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHQucyB+cG9zIH5zdWJzdHJpbmc6c3RyXG4gICAgdGhlbiAoXG4gICAgICBjb25zdW1lX24gdCBzdHJfbGVuO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKVxuOztcblxubGV0IGV4cGVjdCB0IGYgPSBpZiBhY2NlcHQgdCBmIHRoZW4gKCkgZWxzZSBlcnJvciB0XG5sZXQgZXhwZWN0X2NoYXIgdCBjaCA9IGV4cGVjdCB0IChDaGFyLmVxdWFsIGNoKVxuXG5sZXQgbWFueSB0IGYgPVxuICB3aGlsZSAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpIGRvXG4gICAgY29uc3VtZV8xIHRcbiAgZG9uZVxuOztcblxubGV0IG1hbnkxIHQgZiA9XG4gIGV4cGVjdCB0IGY7XG4gIG1hbnkgdCBmXG47O1xuXG5sZXQgcGx1c19vcl9taW51cyA9IGZ1bmN0aW9uXG4gIHwgJy0nIHwgJysnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgbm1zdGFydCA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBubWNoYXIgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyB8ICctJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlkZW50IHQgPVxuICBpZiBhY2NlcHRfY2hhciB0ICctJ1xuICB0aGVuXG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLSdcbiAgICB0aGVuIG1hbnkgdCBubWNoYXJcbiAgICBlbHNlIChcbiAgICAgIGV4cGVjdCB0IG5tc3RhcnQ7XG4gICAgICBtYW55IHQgbm1jaGFyKVxuICBlbHNlIChcbiAgICBleHBlY3QgdCBubXN0YXJ0O1xuICAgIG1hbnkgdCBubWNoYXIpXG47O1xuXG5sZXQgaWRlbnRfb3JfZnVuY3Rpb24gdCA9XG4gIGlkZW50IHQ7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJygnIHRoZW4gdC5jdXJyZW50IDwtIEZ1bmN0aW9uIGVsc2UgdC5jdXJyZW50IDwtIElkZW50XG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXG4nIHwgJ1xceDBjJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHF1b3RlZF9zdHJpbmcnIHQgfnF1b3RlID1cbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgcXVvdGUpO1xuICBjb25zdW1lXzEgdDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICB8ICdcXG4nIHwgJ1xccicgfCAnXFx4MGMnIHwgJ1xcXFwnIC0+IGZhbHNlXG4gICAgICB8IGMgd2hlbiBDaGFyLmVxdWFsIGMgcXVvdGUgLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICBpZiBhY2NlcHRfY2hhciB0ICdcXFxcJ1xuICAgIHRoZW5cbiAgICAgIGlmIGFjY2VwdF9jaGFyIHQgcXVvdGVcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICAgICAgfCAnXFxuJyB8ICdcXHgwYycgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJ1xcbicgOiBib29sKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgX2MgLT5cbiAgICAgICAgICAoKiBIYW5kbGUgdGhlIFwiZXNjYXBlXCIgcnVsZTpcbiAgICAgICAgICAgICB7dlxuICAgICAgICAgICAgICAgIHVuaWNvZGU6IFxcXFxbMC05YS1mXXsxLDZ9KFxcclxcbnxbIFxcblxcclxcdFxcZl0pP1xuICAgICAgICAgICAgICAgIGVzY2FwZSA6IHt1bmljb2RlfXxcXFxcW15cXG5cXHJcXGYwLTlhLWZdXG4gICAgICAgICAgICAgIHZ9XG4gICAgICAgICAgKilcbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpO1xuICBleHBlY3RfY2hhciB0IHF1b3RlXG47O1xuXG5sZXQgc3RhcnRfbnVtIHQgPVxuICBsZXQgY3VyID0gbWFyayB0IGluXG4gIGxldCBiID1cbiAgICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJy4nIDogYm9vbCk7XG4gICAgYWNjZXB0IHQgQ2hhci5pc19kaWdpdFxuICBpblxuICByZXNldCB0IGN1cjtcbiAgYlxuOztcblxubGV0IHN0YXJ0X2lkZW50IH5wcmVmaXggdCA9XG4gIGxldCBjdXIgPSBtYXJrIHQgaW5cbiAgbGV0IGIgPVxuICAgIGFjY2VwdF9zdHJpbmcgdCBwcmVmaXhcbiAgICAmJlxuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy0nIHRoZW4gYWNjZXB0X2NoYXIgdCAnLScgfHwgYWNjZXB0IHQgbm1zdGFydCBlbHNlIGFjY2VwdCB0IG5tc3RhcnRcbiAgaW5cbiAgcmVzZXQgdCBjdXI7XG4gIGJcbjs7XG5cbmxldCBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBxdW90ZWRfc3RyaW5nJyB0IH5xdW90ZTtcbiAgdC5jdXJyZW50IDwtIFN0cmluZ1xuOztcblxubGV0IGV4cG9uZW50aWFsX3BhcnQgdCA9XG4gIGxldCBtYXJrID0gbWFyayB0IGluXG4gIGlmIGFjY2VwdCB0IChmdW5jdGlvblxuICAgIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW5cbiAgICBpZiBhY2NlcHQgdCBwbHVzX29yX21pbnVzXG4gICAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgICBlbHNlIGlmIGFjY2VwdCB0IENoYXIuaXNfZGlnaXRcbiAgICB0aGVuIG1hbnkgdCBDaGFyLmlzX2RpZ2l0XG4gICAgZWxzZVxuICAgICAgKCogQmFja3RyYWNrIGlmIHRoZXJlIGFyZSBubyBkaWdpdHMgb3Igc2lnbnMgYWZ0ZXIgdGhlICdlJyBiZWNhdXNlXG4gICAgICAgICBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSAnZScgd2FzIGFjdHVhbGx5IGEgcGFydCBvZiBzb21ldGhpbmcgZWxzZS4gRm9yXG4gICAgICAgICBleGFtcGxlLCB0aGUgJ2UnIGNvdWxkIGJlIHBhcnQgb2YgYW4gJ2VtJyBvciAnZW4nIGRpbWVuc2lvbiBpbnN0ZWFkXG4gICAgICAgICBvZiBiZWdpbm5pbmcgdGhlIGV4cG9uZW50aWFsIHBhcnQgb2YgYSBzY2llbnRpZmljIG5vdGF0aW9uIG51bWJlci5cblxuICAgICAgICAgRXhhbXBsZTogMS4yZTMgaXMgc2NpZW50aWZpYyBub3RhdGlvbiwgYnV0IDEuMmVtIGlzIGEgbnVtYmVyIHdpdGggYVxuICAgICAgICAgZGltZW5zaW9uLiAqKVxuICAgICAgcmVzZXQgdCBtYXJrXG47O1xuXG5sZXQgbnVtIHQgPVxuICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnLidcbiAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgZWxzZSAoXG4gICAgbWFueTEgdCBDaGFyLmlzX2RpZ2l0O1xuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy4nIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0KTtcbiAgZXhwb25lbnRpYWxfcGFydCB0XG47O1xuXG5sZXQgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIG51bSB0O1xuICBpZiBhY2NlcHRfY2hhciB0ICclJ1xuICB0aGVuIHQuY3VycmVudCA8LSBQZXJjZW50YWdlXG4gIGVsc2UgaWYgc3RhcnRfaWRlbnQgfnByZWZpeDpcIlwiIHRcbiAgdGhlbiAoXG4gICAgaWRlbnQgdDtcbiAgICB0LmN1cnJlbnQgPC0gRGltZW5zaW9uKVxuICBlbHNlIHQuY3VycmVudCA8LSBOdW1iZXJcbjs7XG5cbmxldCBoYXNoX29yX2RlbGltIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICcjJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZiBhY2NlcHQgdCBubWNoYXJcbiAgdGhlbiAoXG4gICAgbWFueTEgdCBubWNoYXI7XG4gICAgdC5jdXJyZW50IDwtIEhhc2gpXG4gIGVsc2UgdC5jdXJyZW50IDwtIERlbGltXG47O1xuXG5sZXQgYXRrZXl3b3JkIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdAJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZGVudCB0O1xuICB0LmN1cnJlbnQgPC0gQXRrZXl3b3JkXG47O1xuXG5sZXQgdXJpX29yX2lkZW50X29yX2Z1bmN0aW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICd1Jyk7XG4gIGlmIGFjY2VwdF9zdHJpbmcgdCBcInVybChcIlxuICB0aGVuIChcbiAgICBsZXQgbSA9IG1hcmsgdCBpblxuICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgIGlmIENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXCInIHx8IENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXFwnJ1xuICAgIHRoZW4gKFxuICAgICAgcmVzZXQgdCBtO1xuICAgICAgdC5jdXJyZW50IDwtIEZ1bmN0aW9uKVxuICAgIGVsc2UgKFxuICAgICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgICB8ICcpJyB8ICcgJyAtPiBmYWxzZVxuICAgICAgICB8ICdcXCcnIHwgJ1wiJyB8ICcoJyAtPiBlcnJvciB0XG4gICAgICAgIHwgYyB3aGVuIENoYXIuaXNfcHJpbnQgYyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBlcnJvciB0KTtcbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgZXhwZWN0X2NoYXIgdCAnKSc7XG4gICAgICB0LmN1cnJlbnQgPC0gVXJpKSlcbiAgZWxzZSBpZGVudF9vcl9mdW5jdGlvbiB0XG47O1xuXG5sZXQgY29tbWVudF9vcl9kZWxpbSB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBpZiBhY2NlcHRfc3RyaW5nIHQgXCIvKlwiXG4gIHRoZW4gKFxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyonIC0+IGZhbHNlXG4gICAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICAgIGlmIGFjY2VwdF9zdHJpbmcgdCBcIiovXCJcbiAgICAgIHRoZW4gdC5jdXJyZW50IDwtIENvbW1lbnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0X2NoYXIgdCAnKidcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSBlcnJvciB0XG4gICAgaW5cbiAgICBsb29wICgpKVxuICBlbHNlIChcbiAgICBleHBlY3RfY2hhciB0ICcvJztcbiAgICB0LmN1cnJlbnQgPC0gRGVsaW0pXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgbGV0IG5ld19vZmYgPSBuZXh0X3BvcyB0IGluXG4gIHQub2ZmIDwtIG5ld19vZmY7XG4gIHQubGVuIDwtIDA7XG4gIGlmIGlzX25leHRfZW9mIHRcbiAgdGhlbiB0LmN1cnJlbnQgPC0gRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICB8IGMgd2hlbiBpc193aGl0ZXNwYWNlIGMgLT5cbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgdC5jdXJyZW50IDwtIFdoaXRlX3NwYWNlXG4gICAgfCAnOicgLT4gb25lX2NoYXJfdG9rZW4gdCBDb2xvblxuICAgIHwgJzsnIC0+IG9uZV9jaGFyX3Rva2VuIHQgU2VtaV9jb2xvblxuICAgIHwgJ3snIC0+IG9uZV9jaGFyX3Rva2VuIHQgTGN1cmx5XG4gICAgfCAnfScgLT4gb25lX2NoYXJfdG9rZW4gdCBSY3VybHlcbiAgICB8ICdbJyAtPiBvbmVfY2hhcl90b2tlbiB0IExicmFja2V0XG4gICAgfCAnXScgLT4gb25lX2NoYXJfdG9rZW4gdCBSYnJhY2tldFxuICAgIHwgJygnIC0+IG9uZV9jaGFyX3Rva2VuIHQgTHBhcmVuXG4gICAgfCAnKScgLT4gb25lX2NoYXJfdG9rZW4gdCBScGFyZW5cbiAgICB8ICcsJyAtPiBvbmVfY2hhcl90b2tlbiB0IENvbW1hXG4gICAgfCAoJ1xcJycgfCAnXCInKSBhcyBxdW90ZSAtPiBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlXG4gICAgfCAoJzAnIC4uICc5JyB8ICcuJyB8ICcrJyB8ICctJykgd2hlbiBzdGFydF9udW0gdCAtPlxuICAgICAgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHRcbiAgICB8ICcvJyAtPiBjb21tZW50X29yX2RlbGltIHRcbiAgICB8ICcjJyAtPiBoYXNoX29yX2RlbGltIHRcbiAgICB8ICdAJyB3aGVuIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJAXCIgdCAtPiBhdGtleXdvcmQgdFxuICAgIHwgJ3UnIC0+IHVyaV9vcl9pZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgfCBfIC0+XG4gICAgICBpZiBzdGFydF9pZGVudCB+cHJlZml4OlwiXCIgdFxuICAgICAgdGhlbiBpZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICgqIHRoaXMgaXMgd2VpcmQgYnV0IHRoZSBzcGVjIGlzIHdlaXJkICopXG4gICAgICAgIHQuY3VycmVudCA8LSBEZWxpbSkpXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgKCogTWFrZSBzdXJlIHdlIGFyZSBpZGVtcG90ZW50IHdoZW4gd2UgZ2V0IGludG8gdGhlIGVycm9yIHN0YXRlICopXG4gIGlmIFRva2VuLmVxdWFsIHQuY3VycmVudCBFcnJvclxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIHRyeSBuZXh0IHQgd2l0aFxuICAgIHwgRXJyb3JfaGFwcGVuZWQgLT4gKCkpXG47O1xuXG5sZXQgY3JlYXRlIHMgPVxuICAoKiBjdXJyZW50IGlzIGR1bW15IGFuZCB3aWxsIGJlIHNldCBieSBjYWxsIHRvIG5leHQgKilcbiAgbGV0IHQgPSB7IHM7IG9mZiA9IDA7IGxlbiA9IDA7IGN1cnJlbnQgPSBXaGl0ZV9zcGFjZSB9IGluXG4gIG5leHQgdDtcbiAgdFxuOztcblxubGV0IHNsaWNlIHQgPSB0Lm9mZiwgdC5sZW5cbmxldCBjdXJyZW50IHQgPSB0LmN1cnJlbnRcblxubGV0IGN1cnJlbnRfdGV4dCB0ID1cbiAgaWYgVG9rZW4uZXF1YWwgdC5jdXJyZW50IEVvZlxuICB0aGVuIFwiXCJcbiAgZWxzZSAoXG4gICAgbGV0IHBvcywgbGVuID0gc2xpY2UgdCBpblxuICAgIFN0cmluZy5zdWIgdC5zIH5wb3Mgfmxlbilcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgdCA9IGNyZWF0ZSBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIGxldCBzdGFydCwgbGVuID0gc2xpY2UgdCBpblxuICAgIGxldCBhY2MgPSAoY3VycmVudCB0LCBzdGFydCwgbGVuKSA6OiBhY2MgaW5cbiAgICBpZiBUb2tlbi5lcXVhbCAoY3VycmVudCB0KSBFb2YgfHwgVG9rZW4uZXF1YWwgKGN1cnJlbnQgdCkgRXJyb3JcbiAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbmV4dCB0O1xuICAgICAgbG9vcCBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCB0ZXN0IHMgPVxuICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAoU2V4cC50b19zdHJpbmdfbWFjaCAoWyVzZXhwX29mOiAoVG9rZW4udCAqIGludCAqIGludCkgbGlzdF0gKHRvX2xpc3QgcykpKVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJlb2ZcIiA9XG4gICAgICB0ZXN0IFwiXCI7XG4gICAgICBbJWV4cGVjdCB7fCgoRW9mIDAgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInNpbXBsZV90b2tlbnNcIiA9XG4gICAgICB0ZXN0IFwiKSh7fVtdOzpcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoUnBhcmVuIDAgMSkoTHBhcmVuIDEgMSkoTGN1cmx5IDIgMSkoUmN1cmx5IDMgMSkoTGJyYWNrZXQgNCAxKShSYnJhY2tldCA1IDEpKFNlbWlfY29sb24gNiAxKShDb2xvbiA3IDEpKEVvZiA4IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaWRlbnRcIiA9XG4gICAgICB0ZXN0IFwiLWZvby1iYXI6IGJhelwiO1xuICAgICAgdGVzdCBcIi1mb28tYmFyKFwiO1xuICAgICAgdGVzdCBcIkBmb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC1mb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC0tZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIi0tdmFyXCI7XG4gICAgICB0ZXN0IFwiUkdCQVwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgOCkoQ29sb24gOCAxKShXaGl0ZV9zcGFjZSA5IDEpKElkZW50IDEwIDMpKEVvZiAxMyAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgOSkoRW9mIDkgMCkpXG4gICAgKChBdGtleXdvcmQgMCA4KShFb2YgOCAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDkpKEVvZiA5IDApKVxuICAgICgoQXRrZXl3b3JkIDAgMTApKEVvZiAxMCAwKSlcbiAgICAoKElkZW50IDAgNSkoRW9mIDUgMCkpXG4gICAgKChJZGVudCAwIDQpKEVvZiA0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwid2hpdGVzcGFjZVwiID1cbiAgICAgIHRlc3QgXCIgIFwiO1xuICAgICAgWyVleHBlY3Qge3woKFdoaXRlX3NwYWNlIDAgMikoRW9mIDIgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIm51bWJlcnNcIiA9XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVlblwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41ZW1cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWluXCI7XG4gICAgICB0ZXN0IFwibGluZS1oZWlnaHQ6IDNjbVwiO1xuICAgICAgdGVzdCBcImxpbmUtaGVpZ2h0OiAxMjAlXCI7XG4gICAgICB0ZXN0IFwiZ3JpZDogMCAxIGZvb1wiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41LWluXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUyMFwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgMTEpKENvbG9uIDExIDEpKFdoaXRlX3NwYWNlIDEyIDEpKERpbWVuc2lvbiAxMyAzKShFb2YgMTYgMCkpXG4gICAgKChJZGVudCAwIDExKShDb2xvbiAxMSAxKShXaGl0ZV9zcGFjZSAxMiAxKShQZXJjZW50YWdlIDEzIDQpKEVvZiAxNyAwKSlcbiAgICAoKElkZW50IDAgNCkoQ29sb24gNCAxKShXaGl0ZV9zcGFjZSA1IDEpKE51bWJlciA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggMSkoV2hpdGVfc3BhY2UgOSAxKShJZGVudCAxMCAzKShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJiYWRseV9xdW90ZWRcIiA9XG4gICAgICB0ZXN0IFwiJ2ZvbyBiYXJcIjtcbiAgICAgIHRlc3QgXCInXCI7XG4gICAgICB0ZXN0IFwiJ1xcXFwnXCI7XG4gICAgICBbJWV4cGVjdCB7fFxuICAgICgoRXJyb3IgMCA4KSlcbiAgICAoKEVycm9yIDAgMSkpXG4gICAgKChFcnJvciAwIDMpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicXVvdGVkXCIgPVxuICAgICAgdGVzdCB7fCdGb28gJ1wiQmFyXCInOycgJ1xcJycgXCJcXFwiXCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoU3RyaW5nIDAgNikoU3RyaW5nIDYgNSkoU3RyaW5nIDExIDMpKFdoaXRlX3NwYWNlIDE0IDEpKFN0cmluZyAxNSA0KShXaGl0ZV9zcGFjZSAxOSAxKShTdHJpbmcgMjAgNCkoRW9mIDI0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiY29sb3JzXCIgPVxuICAgICAgdGVzdCB7fGNvbG9yOiAjZjAwfH07XG4gICAgICB0ZXN0IHt8Y29sb3I6IHJnYigyNTUsMCwwKXx9O1xuICAgICAgdGVzdCB7fGNvbG9yOiByZ2IoMjU1LDAsMCl8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShIYXNoIDcgNCkoRW9mIDExIDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaW1wb3J0XCIgPVxuICAgICAgdGVzdCB7fEBpbXBvcnQgXCJmb28uYmFyXCI7fH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKEF0a2V5d29yZCAwIDcpKFdoaXRlX3NwYWNlIDcgMSkoU3RyaW5nIDggOSkoU2VtaV9jb2xvbiAxNyAxKShFb2YgMTggMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJyZWQgZXhhbXBsZVwiID1cbiAgICAgIHRlc3QgXCJyZWQtLT5cIjtcbiAgICAgIFslZXhwZWN0IHt8ICgoSWRlbnQgMCA1KShEZWxpbSA1IDEpKEVvZiA2IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidXJsXCIgPVxuICAgICAgdGVzdCB7fHVybCggXCJodHRwOi8vd3d3dy5nb29nbGUuY29tXCIpfH07XG4gICAgICB0ZXN0IHt8dXJsKCdodHRwOi8vd3d3dy5nb29nbGUuY29tJyl8fTtcbiAgICAgIHRlc3Qge3x1cmwoJ2h0dHA6Ly93d3d3Lmdvb2dsZS5jb20nICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuY29tICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuXCJjb20gKXx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKEZ1bmN0aW9uIDAgNCkoV2hpdGVfc3BhY2UgNCAxKShTdHJpbmcgNSAyNCkoUnBhcmVuIDI5IDEpKEVvZiAzMCAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgNCkoU3RyaW5nIDQgMjQpKFJwYXJlbiAyOCAxKShFb2YgMjkgMCkpXG4gICAgKChGdW5jdGlvbiAwIDQpKFN0cmluZyA0IDI0KShXaGl0ZV9zcGFjZSAyOCAxKShScGFyZW4gMjkgMSkoRW9mIDMwIDApKVxuICAgICgoVXJpIDAgMzApKEVvZiAzMCAwKSlcbiAgICAoKEVycm9yIDAgMjUpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZXNjYXBlXCIgPVxuICAgICAgdGVzdCB7fFwidGVzdFxcMTlhYmYyXFwyXCJ8fTtcbiAgICAgIHRlc3Qge3xcIlxcMDEwXFx4RkZhXFxvMTIzXFxuXFxcXFxcdXsxMjM0NX1hYfCfkKrwn5Cq8J+QqvCfkKrwn5CqXCJ8fTtcbiAgICAgIHRlc3Qge3xcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChTdHJpbmcgMCAxNSkoRW9mIDE1IDApKVxuICAgICgoU3RyaW5nIDAgNTEpKEVvZiA1MSAwKSlcbiAgICAoKFN0cmluZyAwIDQ5KShFb2YgNDkgMCkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBSZWN1cnNpdmUgZGVzY2VudCBwYXJzZXJzLiAgQSBwYXJzZXIgcmV0dXJucyBmYWxzZSBpZiBiYXNlZCBvbiBhXG4gICBzaW5nbGUgdG9rZW4gbG9va2FoZWFkIGl0IGRlY2lkZXMgdGhhdCB0aGUgZ2l2ZW4gdGV4dCBjYW4gbm90IGJlXG4gICBwYXJzZWQuICBBbnkgb3RoZXIgcGFyc2UgZXJyb3JzIGFyZSBoYW5kbGVkIGJ5IHJhaXNpbmcgZXhjZXB0aW9ucy5cblxuICAgU29tZSBwYXJzZXJzIHJldHVybiB1bml0IGJlY2F1c2Ugd2Ugb25seSBjYWxsIHRoZW0gd2hlbiBhIGZhaWx1cmVcbiAgIHRvIHBhcnNlIGltcGxpZXMgYSBwYXJzZSBlcnJvciAoYW5kIG5vdCB0aGF0IHNvbWUgcGFyc2VyIGhpZ2hlciB1cFxuICAgaW4gdGhlIGNhbGwgY2hhaW4gc2hvdWxkIHRyeSB0byBwYXJzZSBzb21ldGhpbmcgZWxzZSkuXG5cbiAgIEZvciBzaW1wbGljaXR5IHRoZSBwYXJzZXJzIHRoZW1zZWx2ZXMganVzdCB2YWxpZGF0ZSBhbmQgZG9uJ3RcbiAgIHByb2R1Y2UgYW55IHZhbHVlcy4gIFRoYXQgbGVhZHMgdG8gYSBmZXcgdW5lbGVnYW50IGNvbnN0cnVjdHNcbiAgIChwcmltYXJpbHkgaW4gZGVjbGFyYXRpb24pLCBidXQgbWVhbnMgd2Ugb3RoZXJ3aXNlIGhhdmUgcmF0aGVyXG4gICBzaW1wbGUgY29kZSB0aGF0IGFsc28gYWxsb2NhdGVzIHZlcnkgbGl0dGxlLlxuKilcblxub3BlbiBDb3JlXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCByZWMgbmV4dCBjdCA9XG4gIENzc190b2tlbml6ZXIubmV4dCBjdDtcbiAgaWYgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIENvbW1lbnQpIHRoZW4gbmV4dCBjdCBlbHNlICgpXG47O1xuXG5sZXQgc2tpcF93aGl0ZV9zcGFjZSBjdCA9XG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBXaGl0ZV9zcGFjZSkgZG9cbiAgICBuZXh0IGN0XG4gIGRvbmVcbjs7XG5cbmxldCBhY2NlcHQgY3QgZXhwZWN0ZWQgPVxuICBsZXQgZ290ID0gQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IGluXG4gIGlmIENzc190b2tlbml6ZXIuVG9rZW4uZXF1YWwgZ290IGV4cGVjdGVkXG4gIHRoZW4gKFxuICAgIG5leHQgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IGV4cGVjdCBjdCBleHBlY3RlZCA9XG4gIGxldCBnb3QgPSBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QgaW5cbiAgaWYgQ3NzX3Rva2VuaXplci5Ub2tlbi5lcXVhbCBnb3QgZXhwZWN0ZWRcbiAgdGhlbiBuZXh0IGN0XG4gIGVsc2VcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJVbmV4cGVjdGVkIHRva2VuXCJcbiAgICAgICAgICAoZXhwZWN0ZWQgOiBDc3NfdG9rZW5pemVyLlRva2VuLnQpXG4gICAgICAgICAgKGdvdCA6IENzc190b2tlbml6ZXIuVG9rZW4udCldXG47O1xuXG5sZXQgcmVjIG1hbnkgKGN0IDogQ3NzX3Rva2VuaXplci50KSBmID0gaWYgZiBjdCB0aGVuIG1hbnkgY3QgZiBlbHNlICgpXG5cbmxldCBtYW55MSAoY3QgOiBDc3NfdG9rZW5pemVyLnQpIGYgPVxuICBpZiBmIGN0XG4gIHRoZW4gKFxuICAgIG1hbnkgY3QgZjtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgcmVjIGFueSBjdCA6IGJvb2wgPVxuICBsZXQgcmVzID1cbiAgICBtYXRjaCBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3Qgd2l0aFxuICAgIHwgSWRlbnQgfCBOdW1iZXIgfCBQZXJjZW50YWdlIHwgRGltZW5zaW9uIHwgU3RyaW5nIHwgVXJpIHwgRGVsaW0gfCBIYXNoIHwgQ29tbWEgLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICB0cnVlXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBtYW55IGN0IGFueTtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMcGFyZW4gLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgZXhwZWN0X2FueSBjdDtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMYnJhY2tldCAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBleHBlY3RfYW55IGN0O1xuICAgICAgZXhwZWN0IGN0IFJicmFja2V0O1xuICAgICAgdHJ1ZVxuICAgIHwgUmN1cmx5IHwgUnBhcmVuIHwgUmJyYWNrZXQgLT4gZmFsc2VcbiAgICB8IExjdXJseSAtPiBmYWxzZVxuICAgIHwgQXRrZXl3b3JkIHwgQ29sb24gfCBTZW1pX2NvbG9uIC0+IGZhbHNlXG4gICAgfCBDb21tZW50IHwgV2hpdGVfc3BhY2UgfCBFb2YgfCBFcnJvciAtPiBmYWxzZVxuICBpblxuICBpZiByZXMgdGhlbiBza2lwX3doaXRlX3NwYWNlIGN0IGVsc2UgKCk7XG4gIHJlc1xuXG5hbmQgZXhwZWN0X2FueSBjdCA9IGlmIGFueSBjdCB0aGVuICgpIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8YW55PlwiXVxuXG5hbmQgdmFsdWUwIGN0ID1cbiAgYW55IGN0XG4gIHx8IGJsb2NrIGN0XG4gIHx8XG4gIGlmIGFjY2VwdCBjdCBBdGtleXdvcmRcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG5cbmFuZCB2YWx1ZSBjdCA9IG1hbnkxIGN0IHZhbHVlMFxuXG5hbmQgYmxvY2sgY3QgOiBib29sID1cbiAgaWYgYWNjZXB0IGN0IExjdXJseVxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIG1hbnkgY3QgKGZ1biBjdCAtPlxuICAgICAgdmFsdWUwIGN0XG4gICAgICB8fFxuICAgICAgaWYgYWNjZXB0IGN0IFNlbWlfY29sb25cbiAgICAgIHRoZW4gKFxuICAgICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgICB0cnVlKVxuICAgICAgZWxzZSBmYWxzZSk7XG4gICAgZXhwZWN0IGN0IFJjdXJseTtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2VcblxuYW5kIGV4cGVjdF92YWx1ZSBjdCA9IGlmIHZhbHVlIGN0IHRoZW4gKCkgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDx2YWx1ZT5cIl1cblxubGV0IGRlY2xhcmF0aW9uIGN0ID1cbiAgbGV0IGlkZW50X3N0YXJ0LCBpZGVudF9sZW4gPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IGluXG4gIGlmIGFjY2VwdCBjdCBJZGVudFxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGV4cGVjdCBjdCBDb2xvbjtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGxldCB2YWx1ZV9zdGFydCA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgfD4gZnN0IGluXG4gICAgZXhwZWN0X3ZhbHVlIGN0O1xuICAgIGxldCBuZXh0X3Rva2VuX3N0YXJ0ID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCB8PiBmc3QgaW5cbiAgICBsZXQgc291cmNlID0gQ3NzX3Rva2VuaXplci5zb3VyY2UgY3QgaW5cbiAgICBTb21lXG4gICAgICAoIFN0cmluZy5zdWIgc291cmNlIH5wb3M6aWRlbnRfc3RhcnQgfmxlbjppZGVudF9sZW5cbiAgICAgICwgU3RyaW5nLnJzdHJpcFxuICAgICAgICAgIChTdHJpbmcuc3ViIHNvdXJjZSB+cG9zOnZhbHVlX3N0YXJ0IH5sZW46KG5leHRfdG9rZW5fc3RhcnQgLSB2YWx1ZV9zdGFydCkpICkpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGV4cGVjdF9kZWNsYXJhdGlvbiBjdCA9XG4gIG1hdGNoIGRlY2xhcmF0aW9uIGN0IHdpdGhcbiAgfCBTb21lIChmaWVsZCwgdmFsdWUpIC0+IGZpZWxkLCB2YWx1ZVxuICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8ZGVjbGFyYXRpb24+XCJdXG47O1xuXG4oKiBBcyBwZXI6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc3R5bGUtYXR0ci9cbiAgIGRlY2xhcmF0aW9uLWxpc3RcbiAgIDogUyogZGVjbGFyYXRpb24/IFsgJzsnIFMqIGRlY2xhcmF0aW9uPyBdKlxuICAgO1xuKilcbmxldCBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBjdCA9XG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgbGV0IGFkZCBrdiA9XG4gICAgbWF0Y2gga3Ygd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaywgdikgLT4gcmVzIDo9IChrLCB2KSA6OiAhcmVzXG4gIGluXG4gIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICBtYW55IGN0IChmdW4gY3QgLT5cbiAgICBpZiBhY2NlcHQgY3QgU2VtaV9jb2xvblxuICAgIHRoZW4gKFxuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKTtcbiAgTGlzdC5yZXYgIXJlc1xuOztcblxubGV0IHBhcnNlIHBhcnNlcl9mIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBDb21tZW50KSBkb1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lO1xuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgbGV0IHJlcyA9IHBhcnNlcl9mIGN0IGluXG4gICAgZXhwZWN0IGN0IEVvZjtcbiAgICByZXMpXG47O1xuXG5sZXQgcHJpbnRfdG9rZW5zIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKG5vdCAoVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIEVvZikpIGRvXG4gICAgcHJpbnRfcyAoQ3NzX3Rva2VuaXplci5Ub2tlbi5zZXhwX29mX3QgKENzc190b2tlbml6ZXIuY3VycmVudCBjdCkpO1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lXG47O1xuXG5sZXQgdmFsaWRhdGVfdmFsdWUgPSBwYXJzZSBleHBlY3RfdmFsdWVcbmxldCBwYXJzZV9kZWNsYXJhdGlvbl9saXN0IHMgPSBwYXJzZSBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBzXG5cbmxldCB0ZXN0X3BhcnNlciBwIHNleHBfb2ZfYXJnIHMgPVxuICBsZXQgciA9IHBhcnNlIHAgcyBpblxuICBwcmludGYgIVwiJXMgLS0+ICV7c2V4cDphcmcgT3JfZXJyb3IudH1cXG5cIiBzIHJcbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcIlwiID1cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIFwiMCA0cHggOHB4IDAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMTIpLCAwIDJweCA0cHggMCBcXFxuICAgICAgICAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMDgpXCJcbiAgICAgIGluXG4gICAgICBwcmludF90b2tlbnMgdmFsdWU7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRnVuY3Rpb25cbiAgICBGdW5jdGlvblxuICAgIElkZW50XG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIEZ1bmN0aW9uXG4gICAgRnVuY3Rpb25cbiAgICBJZGVudFxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBScGFyZW4gfH1dO1xuICAgICAgcHJpbnRfcyBbJW1lc3NhZ2UgKHZhbGlkYXRlX3ZhbHVlIHZhbHVlIDogdW5pdCBPcl9lcnJvci50KV07XG4gICAgICBbJWV4cGVjdCB7fFxuICAgIChcInZhbGlkYXRlX3ZhbHVlIHZhbHVlXCIgKE9rICgpKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInZhbHVlc1wiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X3ZhbHVlIFVuaXQuc2V4cF9vZl90IGluXG4gICAgICB0ZXN0IFwieFwiO1xuICAgICAgdGVzdCBcIjNcIjtcbiAgICAgIHRlc3QgXCIzaW5cIjtcbiAgICAgIHRlc3QgXCIzJVwiO1xuICAgICAgdGVzdCBcIiNmZmZcIjtcbiAgICAgIHRlc3QgXCIxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcIidIZWxsbyBXb3JsZCdcIjtcbiAgICAgIHRlc3QgXCJyZ2IoMCwwLDApXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgeCAtLT4gKE9rICgpKVxuICAgICAgMyAtLT4gKE9rICgpKVxuICAgICAgM2luIC0tPiAoT2sgKCkpXG4gICAgICAzJSAtLT4gKE9rICgpKVxuICAgICAgI2ZmZiAtLT4gKE9rICgpKVxuICAgICAgMSAwIGF1dG8gLS0+IChPayAoKSlcbiAgICAgICdIZWxsbyBXb3JsZCcgLS0+IChPayAoKSlcbiAgICAgIHJnYigwLDAsMCkgLS0+IChPayAoKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImRlY2xhcmF0aW9uXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJjb250ZW50OiAnSGVsbG8gV29ybGQnXCI7XG4gICAgICB0ZXN0IFwiY29udGVudDogZm9vO1wiO1xuICAgICAgKCogU2VtaSdzIGFyZSBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIGxpc3QgKilcbiAgICAgIHRlc3QgXCJjb250ZW50OiBiYXIgXCI7XG4gICAgICAoKiBidXQgd2hpdGVzcGFjZSBpcyBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIChhbnkgcmVhbGx5KSAqKVxuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgIGZsZXg6IDEgMCBhdXRvIC0tPiAoT2sgKGZsZXggXCIxIDAgYXV0b1wiKSlcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbyBXb3JsZCcgLS0+IChPayAoY29udGVudCBcIidIZWxsbyBXb3JsZCdcIikpXG4gICAgICBjb250ZW50OiBmb287IC0tPiAoRXJyb3IgKFwiVW5leHBlY3RlZCB0b2tlblwiIChleHBlY3RlZCBFb2YpIChnb3QgU2VtaV9jb2xvbikpKVxuICAgICAgY29udGVudDogYmFyICAtLT4gKE9rIChjb250ZW50IGJhcikpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ1bmljb2RlXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2J1wiO1xuICAgICAgcHJpbnRfZW5kbGluZSAoU2V4cC50b19zdHJpbmcgKFNleHAuQXRvbSBcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCIpKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2JyAtLT4gKE9rXG4gICAgIChjb250ZW50XG4gICAgICBcIidcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MidcIikpXG4gICAgXCJcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MlwiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJkZWNsYXJhdGlvbiBsaXN0XCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBbJXNleHBfb2Y6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RdIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0bztcIjtcbiAgICAgIHRlc3RcbiAgICAgICAgXCJiYWNrZ3JvdW5kOiAjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0O21hcmdpbi1sZWZ0OiAyMDBweFwiO1xuICAgICAgdGVzdCBcIjs7Ozs7XCI7XG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG8gOzsgb3RoZXIgOiBzYSBcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgZmxleDogMSAwIGF1dG8gLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSkpXG4gICAgZmxleDogMSAwIGF1dG87IC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikpKVxuICAgIGJhY2tncm91bmQ6ICM1ZDlhYjIgdXJsKFwiaW1nX3RyZWUucG5nXCIpIG5vLXJlcGVhdCB0b3AgbGVmdDttYXJnaW4tbGVmdDogMjAwcHggLS0+IChPa1xuICAgICAoKGJhY2tncm91bmQgXCIjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0XCIpXG4gICAgICAobWFyZ2luLWxlZnQgMjAwcHgpKSlcbiAgICA7Ozs7OyAtLT4gKE9rICgpKVxuICAgIGZsZXg6IDEgMCBhdXRvIDs7IG90aGVyIDogc2EgIC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikgKG90aGVyIHNhKSkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gQ29yZS5Db3JlX3N0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICgqKiAoZmllbGQgKiB2YWx1ZSkgbGlzdC4gIFdoZXJlIHZhbHVlIHNob3VsZCBiZSBlc2NhcGVkIC8gcXVvdGVkXG4gICAgICAgIGFzIG5lY2Vzc2FyeSBhcyBwZXIgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNydWxlLXNldHMuICopXG4gICAgdHlwZSB0ID0gKHN0cmluZyAqIHN0cmluZykgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW9dXG4gIGVuZFxuZW5kXG5cbm9wZW4gQ29yZVxuaW5jbHVkZSBTdGFibGUuVjFcblxudHlwZSBjc3NfZ2xvYmFsX3ZhbHVlcyA9XG4gIFsgYEluaGVyaXRcbiAgfCBgSW5pdGlhbFxuICBdXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA9IHJlZiAoZnVuIGRpZ2l0cyBmIC0+IHNwcmludGYgXCIlLipmXCIgZGlnaXRzIGYpXG5lbmRcblxubGV0IGYycyBkaWdpdHMgZiA9ICFQcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIGRpZ2l0cyBmXG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSR0JBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHIgOiBpbnRcbiAgICAgICAgOyBnIDogaW50XG4gICAgICAgIDsgYiA6IGludFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5yIH5nIH5iID9hICgpID0geyByOyBnOyBiOyBhIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBIU0xBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGggOiBpbnRcbiAgICAgICAgOyBzIDogUGVyY2VudC50XG4gICAgICAgIDsgbCA6IFBlcmNlbnQudFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5oIH5zIH5sID9hICgpID0geyBoOyBzOyBsOyBhIH1cbiAgICBlbmRcblxuICAgIHR5cGUgdCA9XG4gICAgICBbIGBSR0JBIG9mIFJHQkEudFxuICAgICAgfCBgSFNMQSBvZiBIU0xBLnRcbiAgICAgIHwgYE5hbWUgb2Ygc3RyaW5nXG4gICAgICB8IGBIZXggb2Ygc3RyaW5nXG4gICAgICB8IGBWYXIgb2Ygc3RyaW5nXG4gICAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCB0b19zdHJpbmdfY3NzIDogWzwgdCBdIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBSR0JBIHsgUkdCQS5yOyBnOyBiOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gWyVzdHJpbmcgXCJyZ2IoJXtyI0ludH0sJXtnI0ludH0sJXtiI0ludH0pXCJdXG4gICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgIFslc3RyaW5nIFwicmdiYSgle3IjSW50fSwle2cjSW50fSwle2IjSW50fSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBIU0xBIHsgSFNMQS5oOyBzOyBsOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFslc3RyaW5nXG4gICAgICAgICAgIFwiaHNsKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSlcIl1cbiAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgWyVzdHJpbmdcbiAgICAgICAgICAgXCJoc2xhKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBOYW1lIG5hbWUgLT4gbmFtZVxuICAgIHwgYEhleCBoZXggLT4gaGV4XG4gICAgfCBgVmFyIHZhciAtPiBbJXN0cmluZyBcInZhcigle3Zhcn0pXCJdXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsaWdubWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExlZnRcbiAgICB8IGBSaWdodFxuICAgIHwgYENlbnRlciAoKiBob3Jpem9udGFsICopXG4gICAgfCBgVG9wXG4gICAgfCBgQm90dG9tXG4gICAgfCBgTWlkZGxlICgqIHZlcnRpY2FsICopXG4gICAgfCBgSnVzdGlmeSAoKiB0ZXh0LWFsaWduIChpbiBhZGRpdGlvbiB0byBbaG9yaXpvbnRhbF0pICopXG4gICAgfCBgU3VwZXIgKCogdmVydGljYWwgKilcbiAgICB8IGBTdWIgKCogdmVydGljYWwgKilcbiAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYEp1c3RpZnkgLT4gXCJqdXN0aWZ5XCJcbiAgICB8IGBUb3AgLT4gXCJ0b3BcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYEJvdHRvbSAtPiBcImJvdHRvbVwiXG4gICAgfCBgU3VwZXIgLT4gXCJzdXBlclwiXG4gICAgfCBgU3ViIC0+IFwic3ViXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIDs7XG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYFJhdyBvZiBzdHJpbmdcbiAgICB8IGBDaCBvZiBmbG9hdFxuICAgIHwgYFJlbSBvZiBmbG9hdFxuICAgIHwgYEVtIG9mIGludFxuICAgIHwgYEVtX2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgUGVyY2VudCBvZiBQZXJjZW50LnRcbiAgICB8IGBQdCBvZiBmbG9hdFxuICAgIHwgYFB4IG9mIGludFxuICAgIHwgYFB4X2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgVmggb2YgUGVyY2VudC50XG4gICAgfCBgVncgb2YgUGVyY2VudC50XG4gICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBSYXcgcyAtPiBzXG4gICAgfCBgQ2ggYyAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgY31jaFwiXVxuICAgIHwgYFJlbSBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfXJlbVwiXVxuICAgIHwgYEVtIGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fWVtXCJdXG4gICAgfCBgRW1fZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1lbVwiXVxuICAgIHwgYFBlcmNlbnQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX0lXCJdXG4gICAgfCBgUHQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgcH1wdFwiXVxuICAgIHwgYFB4IGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fXB4XCJdXG4gICAgfCBgUHhfZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1weFwiXVxuICAgIHwgYFZoIHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9dmhcIl1cbiAgICB8IGBWdyBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfXZ3XCJdXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgOztcblxuICBsZXQgcGVyY2VudDEwMCA9IGBQZXJjZW50IChQZXJjZW50Lm9mX3BlcmNlbnRhZ2UgMTAwLilcbmVuZFxuXG5tb2R1bGUgQXV0b19vcl9sZW5ndGggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBBdXRvXG4gICAgfCBMZW5ndGgudFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCAjTGVuZ3RoLnQgYXMgbCAtPiBMZW5ndGgudG9fc3RyaW5nX2NzcyBsXG4gIDs7XG5lbmRcblxubGV0IHZhbHVlX21hcCBvIH5mID0gT3B0aW9uLnZhbHVlX21hcCBvIH5kZWZhdWx0OlwiXCIgfmZcbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0ICggQD4gKSA9IGNvbWJpbmVcbmxldCBjb25jYXQgbCA9IExpc3QuY29uY2F0IGxcbmxldCB0b19zdHJpbmdfbGlzdCA9IEZuLmlkXG5cbmxldCB0b19zdHJpbmdfY3NzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4gKGZpZWxkLCB2YWx1ZSkgLT4gWyVzdHJpbmcgXCIle2ZpZWxkfTogJXt2YWx1ZX1cIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIjtcIlxuOztcblxubGV0IG9mX3N0cmluZ19jc3NfZXhuIHMgPSBDc3NfcGFyc2VyLnBhcnNlX2RlY2xhcmF0aW9uX2xpc3QgcyB8PiBPcl9lcnJvci5va19leG5cblxuKCoqIGNyZWF0ZV9yYXcgY3JlYXRlcyBhIHNpbmdsZSBmaWVsZCwgdmFsdWUgcGFpci4gIEl0IGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUgaXMgYSB2YWxpZFxuICAgIGNzcyB2YWx1ZS4gIEFzIHN1Y2ggaXQgaXMgdW5zYWZlIHRvIHVzZSB3aXRoIGFyYml0cmFyeSB2YWx1ZSBzdHJpbmdzLiAgQnV0IGZvciB0aGVcbiAgICB2YXN0IG1ham9yaXR5IG9mIGNvbWJpbmF0b3JzIGluIHRoaXMgbW9kdWxlIGl0IGlzIHRoZSByaWdodCB0aGluZyB0byB1c2UsIGFzIHdlIGtub3dcbiAgICBieSBjb25zdHJ1Y3Rpb24gdGhhdCB0aGUgdmFsdWVzIGRvIG5vdCBuZWVkIHF1b3RpbmcgLyBlc2NhcGluZy4gKilcbmxldCBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWUgPSBbIGZpZWxkLCB2YWx1ZSBdXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHNob3VsZF92YWxpZGF0ZSA9IHJlZiBmYWxzZVxuZW5kXG5cbmxldCBjcmVhdGUgfmZpZWxkIH52YWx1ZSA9XG4gIGlmICFFeHBlcnQuc2hvdWxkX3ZhbGlkYXRlIHRoZW4gQ3NzX3BhcnNlci52YWxpZGF0ZV92YWx1ZSB2YWx1ZSB8PiBPcl9lcnJvci5va19leG47XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IGVtcHR5ID0gW11cbmxldCBpc19lbXB0eSA9IExpc3QuaXNfZW1wdHlcbmxldCBjcmVhdGVfcGxhY2VtZW50IG5hbWUgbGVuZ3RoID0gY3JlYXRlIH5maWVsZDpuYW1lIH52YWx1ZTooTGVuZ3RoLnRvX3N0cmluZ19jc3MgbGVuZ3RoKVxubGV0IGxlZnQgPSBjcmVhdGVfcGxhY2VtZW50IFwibGVmdFwiXG5sZXQgdG9wID0gY3JlYXRlX3BsYWNlbWVudCBcInRvcFwiXG5sZXQgYm90dG9tID0gY3JlYXRlX3BsYWNlbWVudCBcImJvdHRvbVwiXG5sZXQgcmlnaHQgPSBjcmVhdGVfcGxhY2VtZW50IFwicmlnaHRcIlxuXG5sZXQgcG9zaXRpb24gP3RvcDp0cCA/Ym90dG9tOmJ0ID9sZWZ0Omx0ID9yaWdodDpydCBwb3MgPVxuICBsZXQgcG9zID1cbiAgICBsZXQgdmFsdWUgPVxuICAgICAgbWF0Y2ggcG9zIHdpdGhcbiAgICAgIHwgYFN0YXRpYyAtPiBcInN0YXRpY1wiXG4gICAgICB8IGBBYnNvbHV0ZSAtPiBcImFic29sdXRlXCJcbiAgICAgIHwgYFN0aWNreSAtPiBcInN0aWNreVwiXG4gICAgICB8IGBSZWxhdGl2ZSAtPiBcInJlbGF0aXZlXCJcbiAgICAgIHwgYEZpeGVkIC0+IFwiZml4ZWRcIlxuICAgIGluXG4gICAgY3JlYXRlIH5maWVsZDpcInBvc2l0aW9uXCIgfnZhbHVlXG4gIGluXG4gIGxldCBjb252ZXJ0IG9wdF9sIGYgPSBPcHRpb24udmFsdWVfbWFwIG9wdF9sIH5kZWZhdWx0OmVtcHR5IH5mIGluXG4gIGNvbmNhdCBbIHBvczsgY29udmVydCB0cCB0b3A7IGNvbnZlcnQgbHQgbGVmdDsgY29udmVydCBydCByaWdodDsgY29udmVydCBidCBib3R0b20gXVxuOztcblxubGV0IGJveF9zaXppbmcgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgQ29udGVudF9ib3ggLT4gXCJjb250ZW50LWJveFwiXG4gICAgfCBgQm9yZGVyX2JveCAtPiBcImJvcmRlci1ib3hcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm94LXNpemluZ1wiIH52YWx1ZVxuOztcblxubGV0IGRpc3BsYXkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgSW5saW5lIC0+IFwiaW5saW5lXCJcbiAgICB8IGBCbG9jayAtPiBcImJsb2NrXCJcbiAgICB8IGBJbmxpbmVfYmxvY2sgLT4gXCJpbmxpbmUtYmxvY2tcIlxuICAgIHwgYExpc3RfaXRlbSAtPiBcImxpc3QtaXRlbVwiXG4gICAgfCBgVGFibGUgLT4gXCJ0YWJsZVwiXG4gICAgfCBgSW5saW5lX3RhYmxlIC0+IFwiaW5saW5lLXRhYmxlXCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgRmxleCAtPiBcImZsZXhcIlxuICAgIHwgYElubGluZV9mbGV4IC0+IFwiaW5saW5lLWZsZXhcIlxuICAgIHwgYElubGluZV9ncmlkIC0+IFwiaW5saW5lLWdyaWRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZGlzcGxheVwiIH52YWx1ZVxuOztcblxubGV0IHZpc2liaWxpdHkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgVmlzaWJsZSAtPiBcInZpc2libGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ2aXNpYmlsaXR5XCIgfnZhbHVlXG47O1xuXG50eXBlIG92ZXJmbG93ID1cbiAgWyBgVmlzaWJsZVxuICB8IGBIaWRkZW5cbiAgfCBgU2Nyb2xsXG4gIHwgYEF1dG9cbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBtYWtlX292ZXJmbG93IGZpZWxkIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFZpc2libGUgLT4gXCJ2aXNpYmxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYFNjcm9sbCAtPiBcInNjcm9sbFwiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IG92ZXJmbG93ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93XCJcbmxldCBvdmVyZmxvd194ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93LXhcIlxubGV0IG92ZXJmbG93X3kgPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3cteVwiXG5sZXQgel9pbmRleCBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJ6LWluZGV4XCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpXG5sZXQgb3BhY2l0eSBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJvcGFjaXR5XCIgfnZhbHVlOihmMnMgNiBpKVxuXG5sZXQgY3JlYXRlX2xlbmd0aF9maWVsZCBmaWVsZCBsID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGwpXG47O1xuXG5sZXQgd2hpdGVfc3BhY2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBOb3dyYXAgLT4gXCJub3dyYXBcIlxuICAgIHwgYFByZSAtPiBcInByZVwiXG4gICAgfCBgUHJlX2xpbmUgLT4gXCJwcmUtbGluZVwiXG4gICAgfCBgUHJlX3dyYXAgLT4gXCJwcmUtd3JhcFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlIH5maWVsZDpcIndoaXRlLXNwYWNlXCIgfnZhbHVlXG47O1xuXG50eXBlIGZvbnRfc3R5bGUgPVxuICBbIGBOb3JtYWxcbiAgfCBgSXRhbGljXG4gIHwgYE9ibGlxdWVcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbnR5cGUgZm9udF93ZWlnaHQgPVxuICBbIGBOb3JtYWxcbiAgfCBgQm9sZFxuICB8IGBCb2xkZXJcbiAgfCBgTGlnaHRlclxuICB8IGBOdW1iZXIgb2YgaW50XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG50eXBlIGZvbnRfdmFyaWFudCA9XG4gIFsgYE5vcm1hbFxuICB8IGBTbWFsbF9jYXBzXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgZm9udF9zaXplID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImZvbnQtc2l6ZVwiXG5sZXQgZm9udF9mYW1pbHkgbCA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1mYW1pbHlcIiB+dmFsdWU6KFN0cmluZy5jb25jYXQgbCB+c2VwOlwiLFwiKVxuXG5sZXQgZm9udF9zdHlsZSBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYEl0YWxpYyAtPiBcIml0YWxpY1wiXG4gICAgfCBgT2JsaXF1ZSAtPiBcIm9ibGlxdWVcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1zdHlsZVwiIH52YWx1ZVxuOztcblxubGV0IGZvbnRfd2VpZ2h0IHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE51bWJlciBpIC0+IEludC50b19zdHJpbmcgaVxuICAgIHwgYEJvbGQgLT4gXCJib2xkXCJcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYExpZ2h0ZXIgLT4gXCJsaWdodGVyXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgQm9sZGVyIC0+IFwiYm9sZGVyXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC13ZWlnaHRcIiB+dmFsdWVcbjs7XG5cbmxldCBib2xkID0gZm9udF93ZWlnaHQgYEJvbGRcblxubGV0IGZvbnRfdmFyaWFudCBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYFNtYWxsX2NhcHMgLT4gXCJzbWFsbC1jYXBzXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtdmFyaWFudFwiIH52YWx1ZVxuOztcblxubGV0IGZvbnQgfnNpemUgfmZhbWlseSA/c3R5bGUgP3dlaWdodCA/dmFyaWFudCAoKSA9XG4gIFsgU29tZSAoZm9udF9zaXplIHNpemUpXG4gIDsgU29tZSAoZm9udF9mYW1pbHkgZmFtaWx5KVxuICA7IE9wdGlvbi5tYXAgc3R5bGUgfmY6Zm9udF9zdHlsZVxuICA7IE9wdGlvbi5tYXAgd2VpZ2h0IH5mOmZvbnRfd2VpZ2h0XG4gIDsgT3B0aW9uLm1hcCB2YXJpYW50IH5mOmZvbnRfdmFyaWFudFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQgfmNvbG9yID0gY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihDb2xvci50b19zdHJpbmdfY3NzIGNvbG9yKVxubGV0IGNvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiY29sb3JcIiB+Y29sb3JcbmxldCBiYWNrZ3JvdW5kX2NvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiYmFja2dyb3VuZC1jb2xvclwiIH5jb2xvclxubGV0IGZpbGwgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJmaWxsXCIgfmNvbG9yXG5cbnR5cGUgc3RvcHMgPSAoUGVyY2VudC50ICogQ29sb3IudCkgbGlzdFxuXG50eXBlIGxpbmVhcl9ncmFkaWVudCA9XG4gIHsgZGlyZWN0aW9uIDogWyBgRGVnIG9mIGludCBdXG4gIDsgc3RvcHMgOiBzdG9wc1xuICB9XG5cbnR5cGUgcmFkaWFsX2dyYWRpZW50ID0geyBzdG9wcyA6IHN0b3BzIH1cblxudHlwZSBiYWNrZ3JvdW5kX2ltYWdlID1cbiAgWyBgVXJsIG9mIHN0cmluZ1xuICB8IGBMaW5lYXJfZ3JhZGllbnQgb2YgbGluZWFyX2dyYWRpZW50XG4gIHwgYFJhZGlhbF9ncmFkaWVudCBvZiByYWRpYWxfZ3JhZGllbnRcbiAgXVxuXG50eXBlIHRleHRfYWxpZ24gPVxuICBbIGBMZWZ0XG4gIHwgYFJpZ2h0XG4gIHwgYENlbnRlclxuICB8IGBKdXN0aWZ5XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgc3RvcHNfdG9fc3RyaW5nIHN0b3BzID1cbiAgTGlzdC5tYXAgc3RvcHMgfmY6KGZ1biAocGN0LCBjb2xvcikgLT5cbiAgICAoKiBOb3RlOiBQZXJjZW50LnRvX3N0cmluZyBwcm9kdWNlZCBlLmcuIFwiMHhcIiwgXCIxeFwiLCB3b24ndCB3b3JrIGhlcmUuICopXG4gICAgWyVzdHJpbmcgXCIle0NvbG9yLnRvX3N0cmluZ19jc3MgY29sb3J9ICV7ZjJzIDYgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwY3QpfSVcIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCBiYWNrZ3JvdW5kX2ltYWdlIHNwZWMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgYFVybCB1cmwgLT4gWyVzdHJpbmcgXCJ1cmwoJXt1cmx9KVwiXVxuICAgIHwgYExpbmVhcl9ncmFkaWVudCB7IGRpcmVjdGlvbiA9IGBEZWcgZGlyZWN0aW9uOyBzdG9wcyB9IC0+XG4gICAgICBbJXN0cmluZyBcImxpbmVhci1ncmFkaWVudCgle2RpcmVjdGlvbiNJbnR9ZGVnLCAle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gICAgfCBgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgfSAtPiBbJXN0cmluZyBcInJhZGlhbC1ncmFkaWVudCgle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYmFja2dyb3VuZC1pbWFnZVwiIH52YWx1ZVxuOztcblxubGV0IGNyZWF0ZV9hbGlnbm1lbnQgZmllbGQgYSA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQWxpZ25tZW50LnRvX3N0cmluZ19jc3MgKGEgOj4gQWxpZ25tZW50LnQpKVxuOztcblxubGV0IHRleHRfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwidGV4dC1hbGlnblwiXG5sZXQgaG9yaXpvbnRhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJob3Jpem9udGFsLWFsaWduXCJcbmxldCB2ZXJ0aWNhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJ2ZXJ0aWNhbC1hbGlnblwiXG5cbmxldCBmbG9hdCBmID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBmIHdpdGhcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxvYXRcIiB+dmFsdWVcbjs7XG5cbmxldCBsaW5lX2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJsaW5lLWhlaWdodFwiXG5sZXQgd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwid2lkdGhcIlxubGV0IG1pbl93aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtaW4td2lkdGhcIlxubGV0IG1heF93aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXgtd2lkdGhcIlxubGV0IGhlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJoZWlnaHRcIlxubGV0IG1pbl9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLWhlaWdodFwiXG5sZXQgbWF4X2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXgtaGVpZ2h0XCJcbmxldCBwYWRkaW5nX3RvcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLXRvcFwiXG5sZXQgcGFkZGluZ19ib3R0b20gPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1ib3R0b21cIlxubGV0IHBhZGRpbmdfbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLWxlZnRcIlxubGV0IHBhZGRpbmdfcmlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1yaWdodFwiXG5cbmxldCBwYWRkaW5nID90b3AgP2JvdHRvbSA/bGVmdCA/cmlnaHQgKCkgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgWyBtIHRvcCB+ZjpwYWRkaW5nX3RvcFxuICA7IG0gYm90dG9tIH5mOnBhZGRpbmdfYm90dG9tXG4gIDsgbSBsZWZ0IH5mOnBhZGRpbmdfbGVmdFxuICA7IG0gcmlnaHQgfmY6cGFkZGluZ19yaWdodFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCB1bmlmb3JtX3BhZGRpbmcgbCA9IHBhZGRpbmcgfnRvcDpsIH5ib3R0b206bCB+bGVmdDpsIH5yaWdodDpsICgpXG5sZXQgbWFyZ2luX3RvcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tdG9wXCJcbmxldCBtYXJnaW5fYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1ib3R0b21cIlxubGV0IG1hcmdpbl9sZWZ0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1sZWZ0XCJcbmxldCBtYXJnaW5fcmlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXJpZ2h0XCJcblxubGV0IG1hcmdpbiA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6bWFyZ2luX3RvcFxuICA7IG0gYm90dG9tIH5mOm1hcmdpbl9ib3R0b21cbiAgOyBtIGxlZnQgfmY6bWFyZ2luX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOm1hcmdpbl9yaWdodFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCB1bmlmb3JtX21hcmdpbiBsID0gbWFyZ2luIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxubGV0IHJvd19nYXAgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicm93LWdhcFwiXG5sZXQgY29sdW1uX2dhcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJjb2x1bW4tZ2FwXCJcblxudHlwZSBib3JkZXJfc3R5bGUgPVxuICBbIGBOb25lXG4gIHwgYEhpZGRlblxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBHcm9vdmVcbiAgfCBgUmlkZ2VcbiAgfCBgSW5zZXRcbiAgfCBgT3V0c2V0XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG4oKiogQ29uY2F0IDIgdmFsdWVzIHdpdGggYSBzcGFjZSBpbiBiZXR3ZWVuLiAgSWYgZWl0aGVyIGlzIHRoZSBlbXB0eSBzdHJpbmdcbiAgICBkb24ndCBwdXQgaW4gdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZS4gKilcbmxldCBjb25jYXQydiB2MSB2MiA9XG4gIG1hdGNoIHYxLCB2MiB3aXRoXG4gIHwgXCJcIiwgeCAtPiB4XG4gIHwgeCwgXCJcIiAtPiB4XG4gIHwgeCwgeSAtPiB4IF4gXCIgXCIgXiB5XG47O1xuXG4oKiogQ29uY2F0IHVwIHRvIDMgdmFsdWVzIHdpdGggc3BhY2VzIGluIGJldHdlZW4uICopXG5sZXQgY29uY2F0M3YgdjEgdjIgdjMgPSBjb25jYXQydiAoY29uY2F0MnYgdjEgdjIpIHYzXG5cbmxldCBib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+KHN0eWxlIDogYm9yZGVyX3N0eWxlKSAoKSA9XG4gIGxldCBzdHlsZSA9XG4gICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgIHwgYFJpZGdlIC0+IFwicmlkZ2VcIlxuICAgIHwgYE91dHNldCAtPiBcIm91dHNldFwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEdyb292ZSAtPiBcImdyb292ZVwiXG4gICAgfCBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5zZXQgLT4gXCJpbnNldFwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgIHwgYERvdHRlZCAtPiBcImRvdHRlZFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFNvbGlkIC0+IFwic29saWRcIlxuICBpblxuICBsZXQgd2lkdGggPSB2YWx1ZV9tYXAgd2lkdGggfmY6TGVuZ3RoLnRvX3N0cmluZ19jc3MgaW5cbiAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgY29uY2F0M3Ygd2lkdGggc3R5bGUgY29sb3Jcbjs7XG5cbmxldCBjcmVhdGVfYm9yZGVyID9zaWRlICgpID1cbiAgbGV0IGZpZWxkID1cbiAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICB8IFNvbWUgYFRvcCAtPiBcImJvcmRlci10b3BcIlxuICAgIHwgU29tZSBgQm90dG9tIC0+IFwiYm9yZGVyLWJvdHRvbVwiXG4gICAgfCBTb21lIGBSaWdodCAtPiBcImJvcmRlci1yaWdodFwiXG4gICAgfCBTb21lIGBMZWZ0IC0+IFwiYm9yZGVyLWxlZnRcIlxuICAgIHwgTm9uZSAtPiBcImJvcmRlclwiXG4gIGluXG4gIGZ1biA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSAtPlxuICAgIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfnN0eWxlICgpKVxuOztcblxubGV0IGJvcmRlcl90b3AgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBUb3AgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfYm90dG9tID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgQm90dG9tICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2xlZnQgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBMZWZ0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX3JpZ2h0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgUmlnaHQgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXIgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPSBjcmVhdGVfYm9yZGVyID9zaWRlOk5vbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgKClcblxubGV0IG91dGxpbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfcmF3IH5maWVsZDpcIm91dGxpbmVcIiB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfY29sbGFwc2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgU2VwYXJhdGUgLT4gXCJzZXBhcmF0ZVwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3JkZXItY29sbGFwc2VcIiB+dmFsdWVcbjs7XG5cbmxldCBib3JkZXJfc3BhY2luZyA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJib3JkZXItc3BhY2luZ1wiXG5sZXQgYm9yZGVyX3JhZGl1cyBsID0gY3JlYXRlIH5maWVsZDpcImJvcmRlci1yYWRpdXNcIiB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGwpXG5cbnR5cGUgdGV4dF9kZWNvcmF0aW9uX2xpbmUgPVxuICBbIGBOb25lXG4gIHwgYFVuZGVybGluZVxuICB8IGBPdmVybGluZVxuICB8IGBMaW5lX3Rocm91Z2hcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9zdHlsZSA9XG4gIFsgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFdhdnlcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdGV4dF9kZWNvcmF0aW9uID9zdHlsZSA/Y29sb3IgfmxpbmUgKCkgPVxuICBsZXQgdmFsdWUgPVxuICAgIGxldCBsaW5lID1cbiAgICAgIExpc3QubWFwIGxpbmUgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgYExpbmVfdGhyb3VnaCAtPiBcImxpbmUtdGhyb3VnaFwiXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBPdmVybGluZSAtPiBcIm92ZXJsaW5lXCJcbiAgICAgICAgfCBgVW5kZXJsaW5lIC0+IFwidW5kZXJsaW5lXCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIilcbiAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICAgIGluXG4gICAgbGV0IHN0eWxlID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgYFNvbGlkIC0+IFwic29saWRcIlxuICAgICAgfCBTb21lIGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgICAgfCBTb21lIGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgICAgfCBTb21lIGBEYXNoZWQgLT4gXCJkYXNoZWRcIlxuICAgICAgfCBTb21lIGBXYXZ5IC0+IFwid2F2eVwiXG4gICAgICB8IFNvbWUgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgIHwgU29tZSBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIGluXG4gICAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgICBjb25jYXQzdiBsaW5lIHN0eWxlIGNvbG9yXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidGV4dC1kZWNvcmF0aW9uXCIgfnZhbHVlXG47O1xuXG50eXBlIGNvbnRlbnRfYWxpZ25tZW50ID1cbiAgWyBgTm9ybWFsXG4gIHwgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYFNwYWNlX2JldHdlZW5cbiAgfCBgU3BhY2VfYXJvdW5kXG4gIHwgYFNwYWNlX2V2ZW5seVxuICB8IGBTdHJldGNoXG4gIF1cblxubGV0IGNvbnRlbnRfYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICB8IGBGbGV4X3N0YXJ0IC0+IFwiZmxleC1zdGFydFwiXG4gIHwgYEZsZXhfZW5kIC0+IFwiZmxleC1lbmRcIlxuICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICB8IGBTcGFjZV9iZXR3ZWVuIC0+IFwic3BhY2UtYmV0d2VlblwiXG4gIHwgYFNwYWNlX2Fyb3VuZCAtPiBcInNwYWNlLWFyb3VuZFwiXG4gIHwgYFNwYWNlX2V2ZW5seSAtPiBcInNwYWNlLWV2ZW5seVwiXG4gIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbjs7XG5cbnR5cGUgaXRlbV9hbGlnbm1lbnQgPVxuICBbIGBBdXRvXG4gIHwgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYEJhc2VsaW5lXG4gIHwgYFN0cmV0Y2hcbiAgXVxuXG5sZXQgaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgQmFzZWxpbmUgLT4gXCJiYXNlbGluZVwiXG4gIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbjs7XG5cbnR5cGUganVzdGlmeV9jb250ZW50ID1cbiAgWyBgRmxleF9zdGFydFxuICB8IGBGbGV4X2VuZFxuICB8IGBDZW50ZXJcbiAgfCBgU3BhY2VfYmV0d2VlblxuICB8IGBTcGFjZV9hcm91bmRcbiAgfCBgU3BhY2VfZXZlbmx5XG4gIF1cblxubGV0IGp1c3RpZnlfY29udGVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgU3BhY2VfYmV0d2VlbiAtPiBcInNwYWNlLWJldHdlZW5cIlxuICB8IGBTcGFjZV9hcm91bmQgLT4gXCJzcGFjZS1hcm91bmRcIlxuICB8IGBTcGFjZV9ldmVubHkgLT4gXCJzcGFjZS1ldmVubHlcIlxuOztcblxubGV0IGZsZXhfY29udGFpbmVyXG4gICAgICA/KGlubGluZSA9IGZhbHNlKVxuICAgICAgPyhkaXJlY3Rpb24gPSBgUm93KVxuICAgICAgPyh3cmFwID0gYE5vd3JhcClcbiAgICAgID9hbGlnbl9pdGVtc1xuICAgICAgP2FsaWduX2NvbnRlbnRcbiAgICAgID9qdXN0aWZ5X2NvbnRlbnRcbiAgICAgID9yb3dfZ2FwOnJnXG4gICAgICA/Y29sdW1uX2dhcDpjZ1xuICAgICAgKClcbiAgPVxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBsZXQgbWFrZV9kaXIgdiA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC1kaXJlY3Rpb25cIiB+dmFsdWU6diBpblxuICAgIG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgUm93IC0+IG1ha2VfZGlyIFwicm93XCJcbiAgICB8IGBSb3dfcmV2ZXJzZSAtPiBtYWtlX2RpciBcInJvdy1yZXZlcnNlXCJcbiAgICB8IGBDb2x1bW4gLT4gbWFrZV9kaXIgXCJjb2x1bW5cIlxuICAgIHwgYENvbHVtbl9yZXZlcnNlIC0+IG1ha2VfZGlyIFwiY29sdW1uLXJldmVyc2VcIlxuICAgIHwgYERlZmF1bHQgLT4gZW1wdHlcbiAgaW5cbiAgbGV0IHdyYXAgPVxuICAgIGxldCBtYWtlX3dyYXAgdiA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC13cmFwXCIgfnZhbHVlOnYgaW5cbiAgICBtYXRjaCB3cmFwIHdpdGhcbiAgICB8IGBOb3dyYXAgLT4gbWFrZV93cmFwIFwibm93cmFwXCJcbiAgICB8IGBXcmFwIC0+IG1ha2Vfd3JhcCBcIndyYXBcIlxuICAgIHwgYFdyYXBfcmV2ZXJzZSAtPiBtYWtlX3dyYXAgXCJ3cmFwLXJldmVyc2VcIlxuICAgIHwgYERlZmF1bHQgLT4gZW1wdHlcbiAgaW5cbiAgbGV0IGFsaWduX2l0ZW1zID1cbiAgICBtYXRjaCBhbGlnbl9pdGVtcyB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbGlnbi1pdGVtc1wiIH52YWx1ZTooaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQgYWxpZ25fY29udGVudCA9XG4gICAgbWF0Y2ggYWxpZ25fY29udGVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24tY29udGVudFwiIH52YWx1ZTooY29udGVudF9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQganVzdGlmeV9jb250ZW50ID1cbiAgICBtYXRjaCBqdXN0aWZ5X2NvbnRlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImp1c3RpZnktY29udGVudFwiIH52YWx1ZTooanVzdGlmeV9jb250ZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IHJvd19nYXAgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OmVtcHR5IH5mOnJvd19nYXAgcmcgaW5cbiAgbGV0IGNvbHVtbl9nYXAgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OmVtcHR5IH5mOmNvbHVtbl9nYXAgY2cgaW5cbiAgY29uY2F0XG4gICAgWyBkaXNwbGF5IChpZiBpbmxpbmUgdGhlbiBgSW5saW5lX2ZsZXggZWxzZSBgRmxleClcbiAgICA7IGRpcmVjdGlvblxuICAgIDsgd3JhcFxuICAgIDsgYWxpZ25faXRlbXNcbiAgICA7IGFsaWduX2NvbnRlbnRcbiAgICA7IGp1c3RpZnlfY29udGVudFxuICAgIDsgY29sdW1uX2dhcFxuICAgIDsgcm93X2dhcFxuICAgIF1cbjs7XG5cbmxldCBmbGV4X2l0ZW0gP29yZGVyID8oYmFzaXMgPSBgQXV0bykgPyhzaHJpbmsgPSAxLikgfmdyb3cgKCkgPVxuICBsZXQgb3JkZXIgPVxuICAgIE9wdGlvbi5tYXAgb3JkZXIgfmY6KGZ1biBpIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwib3JkZXJcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gICAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgICB8PiBMaXN0LmpvaW5cbiAgaW5cbiAgbGV0IGZsZXggPVxuICAgIGxldCBiYXNpcyA9IEF1dG9fb3JfbGVuZ3RoLnRvX3N0cmluZ19jc3MgYmFzaXMgaW5cbiAgICBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXhcIiB+dmFsdWU6WyVzdHJpbmcgXCIle2YycyA2IGdyb3d9ICV7ZjJzIDYgc2hyaW5rfSAle2Jhc2lzfVwiXVxuICBpblxuICBjb25jYXQgWyBmbGV4OyBvcmRlciBdXG47O1xuXG5sZXQgYWxpZ25fc2VsZiBhID1cbiAgbGV0IHZhbHVlID0gaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24tc2VsZlwiIH52YWx1ZVxuOztcblxubGV0IHJlc2l6ZSAodmFsdWUgOiBbIGBOb25lIHwgYEJvdGggfCBgSG9yaXpvbnRhbCB8IGBWZXJ0aWNhbCB8IGNzc19nbG9iYWxfdmFsdWVzIF0pID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICB8IGBIb3Jpem9udGFsIC0+IFwiaG9yaXpvbnRhbFwiXG4gICAgfCBgVmVydGljYWwgLT4gXCJ2ZXJ0aWNhbFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJyZXNpemVcIiB+dmFsdWVcbjs7XG5cbmxldCBhbmltYXRpb24gfm5hbWUgfmR1cmF0aW9uID9kZWxheSA/ZGlyZWN0aW9uID9maWxsX21vZGUgP2l0ZXJfY291bnQgP3RpbWluZ19mdW5jdGlvbiAoKVxuICA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBsZXQgc3Bhbl90b19zdHJpbmcgcyA9IFslc3RyaW5nIFwiJXtmMnMgMiAoVGltZV9ucy5TcGFuLnRvX3NlYyBzKX1zXCJdIGluXG4gIGxldCBkaXJlY3Rpb24gPVxuICAgIG0gZGlyZWN0aW9uIH5mOihmdW4gZCAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgICAgIHwgYFJldmVyc2UgLT4gXCJyZXZlcnNlXCJcbiAgICAgICAgfCBgQWx0ZXJuYXRlIC0+IFwiYWx0ZXJuYXRlXCJcbiAgICAgICAgfCBgQWx0ZXJuYXRlX3JldmVyc2UgLT4gXCJhbHRlcm5hdGUtcmV2ZXJzZVwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgICAgaW5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRpcmVjdGlvblwiIH52YWx1ZSlcbiAgaW5cbiAgbGV0IGZpbGxfbW9kZSA9XG4gICAgbSBmaWxsX21vZGUgfmY6KGZ1biBmIC0+XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBtYXRjaCBmIHdpdGhcbiAgICAgICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgICAgICB8IGBGb3J3YXJkcyAtPiBcImZvcndhcmRzXCJcbiAgICAgICAgfCBgQmFja3dhcmRzIC0+IFwiYmFja3dhcmRzXCJcbiAgICAgICAgfCBgQm90aCAtPiBcImJvdGhcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1maWxsLW1vZGVcIiB+dmFsdWUpXG4gIGluXG4gIFsgU29tZSAoY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tbmFtZVwiIH52YWx1ZTpuYW1lKVxuICA7IFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWR1cmF0aW9uXCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBkdXJhdGlvbikpXG4gIDsgbSBkZWxheSB+ZjooZnVuIHMgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZGVsYXlcIiB+dmFsdWU6KHNwYW5fdG9fc3RyaW5nIHMpKVxuICA7IG0gaXRlcl9jb3VudCB+ZjooZnVuIGkgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKSlcbiAgOyBtIHRpbWluZ19mdW5jdGlvbiB+ZjooZnVuIHZhbHVlIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIiB+dmFsdWUpXG4gIDsgZGlyZWN0aW9uXG4gIDsgZmlsbF9tb2RlXG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxudHlwZSB1c2VyX3NlbGVjdCA9XG4gIFsgYEFsbFxuICB8IGBBdXRvXG4gIHwgYE5vbmVcbiAgfCBgVGV4dFxuICBdXG5cbmxldCB1c2VyX3NlbGVjdF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgfCBgQXV0byAtPiBcImF1dG9cIlxuICB8IGBOb25lIC0+IFwibm9uZVwiXG4gIHwgYFRleHQgLT4gXCJ0ZXh0XCJcbjs7XG5cbmxldCB1c2VyX3NlbGVjdCBzID1cbiAgbGV0IHZhbHVlID0gdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyBzIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidXNlci1zZWxlY3RcIiB+dmFsdWVcbjs7XG5cblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidG9fc3RyaW5nX2NzcyAtPiBvZl9zdHJpbmdfY3NzX2V4biAtPiB0b19zdHJpbmdfY3NzXCIgPVxuICAgICAgbGV0IHQgY3NzID1cbiAgICAgICAgbGV0IHMgPSB0b19zdHJpbmdfY3NzIGNzcyBpblxuICAgICAgICBsZXQgczIgPSB0b19zdHJpbmdfY3NzIChvZl9zdHJpbmdfY3NzX2V4biBzKSBpblxuICAgICAgICBwcmludF9lbmRsaW5lIHM7XG4gICAgICAgIHByaW50X2VuZGxpbmUgczJcbiAgICAgIGluXG4gICAgICB0IChmbGV4X2l0ZW0gfmdyb3c6MS4wICgpIEA+IG92ZXJmbG93IGBTY3JvbGwpO1xuICAgICAgdCAoZmxleF9jb250YWluZXIgfmlubGluZTp0cnVlIH5kaXJlY3Rpb246YENvbHVtbiAoKSBAPiBib3JkZXIgfnN0eWxlOmBEYXNoZWQgKCkpO1xuICAgICAgdCAoY29sb3IgKGBSR0JBIChDb2xvci5SR0JBLmNyZWF0ZSB+cjoxMDAgfmc6MTAwIH5iOjEwMCAoKSkpKTtcbiAgICAgIHRcbiAgICAgICAgKGNvbG9yXG4gICAgICAgICAgIChgSFNMQVxuICAgICAgICAgICAgICAoQ29sb3IuSFNMQS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgfmg6MTAwXG4gICAgICAgICAgICAgICAgIH5zOihQZXJjZW50Lm9mX211bHQgMC43NSlcbiAgICAgICAgICAgICAgICAgfmw6KFBlcmNlbnQub2ZfbXVsdCAwLjYwKVxuICAgICAgICAgICAgICAgICAoKSkpKTtcbiAgICAgIHQgKGNyZWF0ZSB+ZmllbGQ6XCJjb250ZW50XCIgfnZhbHVlOnt8XCI7XCJ8fSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGZsZXg6IDEuMDAwMDAwIDEuMDAwMDAwIGF1dG87b3ZlcmZsb3c6IHNjcm9sbFxuICAgIGZsZXg6IDEuMDAwMDAwIDEuMDAwMDAwIGF1dG87b3ZlcmZsb3c6IHNjcm9sbFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47ZmxleC13cmFwOiBub3dyYXA7Ym9yZGVyOiBkYXNoZWRcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogcmdiKDEwMCwxMDAsMTAwKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29sb3I6IGhzbCgxMDAsNzUlLDYwJSlcbiAgICBjb250ZW50OiBcIjtcIlxuICAgIGNvbnRlbnQ6IFwiO1wiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJncmFkaWVudHNcIiA9XG4gICAgICBsZXQgcCB4ID0gUGVyY2VudC5vZl9tdWx0IHggaW5cbiAgICAgIGxldCBjIHMgPSBgTmFtZSBzIGluXG4gICAgICBsZXQgdCBjc3MgPSBwcmludF9lbmRsaW5lICh0b19zdHJpbmdfY3NzIGNzcykgaW5cbiAgICAgIHRcbiAgICAgICAgKGJhY2tncm91bmRfaW1hZ2VcbiAgICAgICAgICAgKGBMaW5lYXJfZ3JhZGllbnRcbiAgICAgICAgICAgICAgeyBkaXJlY3Rpb24gPSBgRGVnIDkwXG4gICAgICAgICAgICAgIDsgc3RvcHMgPVxuICAgICAgICAgICAgICAgICAgWyBwIDAuLCBjIFwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgOyBwIDAuMiwgYyBcIiNmZjAwMDBcIlxuICAgICAgICAgICAgICAgICAgOyBwIDAuNCwgYyBcInJlZFwiXG4gICAgICAgICAgICAgICAgICA7ICggcCAxLlxuICAgICAgICAgICAgICAgICAgICAsIGBSR0JBXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjUwIH5iOjMwIH5hOihQZXJjZW50Lm9mX211bHQgMC43NSkgKCkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCBibGFjayAwLjAwMDAwMCUsICNmZjAwMDAgMjAuMDAwMDAwJSwgcmVkIDQwLjAwMDAwMCUsIHJnYmEoMTAwLDUwLDMwLDAuNzUpIDEwMC4wMDAwMDAlKSB8fV07XG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgPSBbIHAgMC4sIGMgXCJibGFja1wiOyBwIDEuLCBjIFwicmVkXCIgXSB9KSk7XG4gICAgICBbJWV4cGVjdCB7fCBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoYmxhY2sgMC4wMDAwMDAlLCByZWQgMTAwLjAwMDAwMCUpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbmxldCB0b19qc19zdHJpbmcgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9TdHJpbmdcbmxldCB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvRml4ZWQgZGlnaXRzXG5sZXQgdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9QcmVjaXNpb24gZGlnaXRzXG5sZXQgdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvRXhwb25lbnRpYWxcbmxldCB0b19zdHJpbmcgdmFsdWUgPSB0b19qc19zdHJpbmcgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IHRvX2pzX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgPSB0b19qc19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG9wZW4gQ29yZSBpblxuICBsZXQgcHJpbnQgZiA9IHByaW50ZiBcIiVzXCIgKHRvX3N0cmluZyBmKSBpblxuICBwcmludCAxLjtcbiAgWyVleHBlY3Qge3wgMSB8fV07XG4gIHByaW50IEZsb2F0Lm5hbjtcbiAgWyVleHBlY3Qge3wgTmFOIHx9XTtcbiAgcHJpbnQgRmxvYXQuaW5maW5pdHk7XG4gIFslZXhwZWN0IHt8IEluZmluaXR5IHx9XTtcbiAgcHJpbnQgRmxvYXQubmVnX2luZmluaXR5O1xuICBbJWV4cGVjdCB7fCAtSW5maW5pdHkgfH1dO1xuICBwcmludCAwLjAwMDAwMDAxO1xuICBbJWV4cGVjdCB7fCAxZS04IHx9XTtcbiAgcHJpbnQgKC0xLik7XG4gIFslZXhwZWN0IHt8IC0xIHx9XTtcbiAgcHJpbnQgMS4wMDAwMDAxO1xuICBbJWV4cGVjdCB7fCAxLjAwMDAwMDEgfH1dXG47O1xuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5pbmNsdWRlIFVpX2VmZmVjdFxuXG4oKiBBbGwgdmlzaWJpbGl0eSBoYW5kbGVycyBzZWUgYWxsIGV2ZW50cywgc28gYSBzaW1wbGUgbGlzdCBpcyBlbm91Z2guICAqKVxubGV0IHZpc2liaWxpdHlfaGFuZGxlcnMgOiAodW5pdCAtPiB1bml0KSBsaXN0IHJlZiA9IHJlZiBbXVxuXG5tb2R1bGUgdHlwZSBWaXNpYmlsaXR5X2hhbmRsZXIgPSBzaWdcbiAgdmFsIGhhbmRsZSA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBEZWZpbmVfdmlzaWJpbGl0eSAoVkggOiBWaXNpYmlsaXR5X2hhbmRsZXIpID0gc3RydWN0XG4gIGxldCAoKSA9IHZpc2liaWxpdHlfaGFuZGxlcnMgOj0gVkguaGFuZGxlIDo6ICF2aXNpYmlsaXR5X2hhbmRsZXJzXG5lbmRcblxudHlwZSBfIHQgKz1cbiAgfCBWaWV3cG9ydF9jaGFuZ2VkXG4gIHwgU3RvcF9wcm9wYWdhdGlvblxuICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uXG4gIHwgUHJldmVudF9kZWZhdWx0XG5cbmxldCBzZXF1ZW5jZV9hc19zaWJsaW5nIGxlZnQgfnVubGVzc19zdG9wcGVkID1cbiAgbGV0IHJlYyBjb250YWluc19zdG9wID0gZnVuY3Rpb25cbiAgICB8IE1hbnkgZXMgLT4gTGlzdC5leGlzdHMgZXMgfmY6Y29udGFpbnNfc3RvcFxuICAgIHwgU3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBjb250YWluc19zdG9wIGxlZnQgdGhlbiBsZWZ0IGVsc2UgVWlfZWZmZWN0Lk1hbnkgWyBsZWZ0OyB1bmxlc3Nfc3RvcHBlZCAoKSBdXG47O1xuXG4oKiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgZG9tIGV2ZW50IGhlcmUgc28gdGhhdFxuICAgbW92ZW1lbnQgYmV0d2VlbiBbVmRvbS5FZmZlY3QuRXhwZXJ0LmhhbmRsZV0gYW5kXG4gICBbVWlfY29uY3JldGUuRWZmZWN0LkV4cGVydC5oYW5kbGVdIGtlZXBzIHRoZSBvcmlnaW5hbFxuICAgZG9tIGV2ZW50IGFyb3VuZC4gKilcbmxldCBjdXJyZW50X2RvbV9ldmVudCA9IHJlZiBOb25lXG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6U3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgVmlld3BvcnRfY2hhbmdlZCkpXG4gICAgfmRhdGE6KGZ1biBfIC0+IExpc3QuaXRlciAhdmlzaWJpbGl0eV9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiAoKSkpXG47O1xuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OlN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFN0b3BfcHJvcGFnYXRpb24pKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBQcmV2ZW50X2RlZmF1bHQpKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tLnByZXZlbnREZWZhdWx0KVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuID0gRXhwZXJ0LmhhbmRsZVxuXG4gIGxldCBoYW5kbGUgZG9tX2V2ZW50IGV2ZW50ID1cbiAgICBsZXQgb2xkID0gIWN1cnJlbnRfZG9tX2V2ZW50IGluXG4gICAgY3VycmVudF9kb21fZXZlbnQgOj0gU29tZSAoZG9tX2V2ZW50IDo+IERvbV9odG1sLmVsZW1lbnQgRG9tLmV2ZW50IEpzLnQpO1xuICAgIEV4cGVydC5oYW5kbGUgZXZlbnQ7XG4gICAgY3VycmVudF9kb21fZXZlbnQgOj0gb2xkXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEpzX29mX29jYW1sXG5cbm1vZHVsZSB0eXBlIFMgPSBIb29rc19pbnRmLlNcbm1vZHVsZSB0eXBlIElucHV0ID0gSG9va3NfaW50Zi5JbnB1dFxuXG5sZXQgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBpZCA9IERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgaWRcblxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGYgPVxuICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSAoSnMud3JhcF9jYWxsYmFjayBmKVxuOztcblxubW9kdWxlIEV4dHJhID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHsgdHlwZV9pZDsgdmFsdWUgfSkgPSBUeXBlX2VxdWFsLklkLnRvX3NleHAgdHlwZV9pZCB2YWx1ZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgVCA6XG4gICAgICB7IGlucHV0IDogJ2lucHV0XG4gICAgICA7IGlucHV0X2lkIDogJ2lucHV0IFR5cGVfZXF1YWwuSWQudFxuICAgICAgOyBjb21iaW5lX2lucHV0cyA6ICdpbnB1dCAtPiAnaW5wdXQgLT4gJ2lucHV0XG4gICAgICA7IGluaXQgOlxuICAgICAgICAgICdpbnB1dFxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICA7IHVwZGF0ZSA6XG4gICAgICAgICAgJ2lucHV0XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgOyBkZXN0cm95IDpcbiAgICAgICAgICAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+IHVuaXRcbiAgICAgIDsgaWQgOiAoJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGUpIENvcmUuVHlwZV9lcXVhbC5JZC50XG4gICAgICB9XG4gICAgICAtPiB0XG5cbmxldCBnZW5lcmljX2hvb2sgPSBsYXp5IEpzLlVuc2FmZS4oZ2V0IGdsb2JhbCAoSnMuc3RyaW5nIFwiR2VuZXJpY0hvb2tcIikpXG5cbmxldCBtYWtlX2hvb2sgfmNvbWJpbmVfaW5wdXRzIH5pbml0IH5leHRyYTooaW5wdXQsIGlucHV0X2lkKSB+dXBkYXRlIH5kZXN0cm95IH5pZCA9XG4gIFQgeyBpbml0OyBjb21iaW5lX2lucHV0czsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkIH1cbjs7XG5cbmxldCBwYWNrIChUIHsgaW5pdDsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkOyBfIH0pID1cbiAgbGV0IHdyYXAgYSA9IGEgfD4gSnMud3JhcF9jYWxsYmFjayB8PiBKcy5VbnNhZmUuaW5qZWN0IGluXG4gIGxldCBpbml0ID0gd3JhcCAoaW5pdCBpbnB1dCkgaW5cbiAgbGV0IHVwZGF0ZSA9IHdyYXAgKHVwZGF0ZSBpbnB1dCkgaW5cbiAgbGV0IGRlc3Ryb3kgPSB3cmFwIGRlc3Ryb3kgaW5cbiAgbGV0IGdlbmVyaWNfaG9vayA9IExhenkuZm9yY2UgZ2VuZXJpY19ob29rIGluXG4gIGxldCBleHRyYSA9IEV4dHJhLlQgeyB0eXBlX2lkID0gaW5wdXRfaWQ7IHZhbHVlID0gaW5wdXQgfSBpblxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICBnZW5lcmljX2hvb2tcbiAgICBbfCBpbml0OyB1cGRhdGU7IGRlc3Ryb3k7IGlkIHw+IEpzLlVuc2FmZS5pbmplY3Q7IGV4dHJhIHw+IEpzLlVuc2FmZS5pbmplY3QgfF1cbjs7XG5cbmxldCBjb21iaW5lIChUIGxlZnQpIChUIHJpZ2h0KSA9XG4gIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzIGxlZnQuaW5wdXRfaWQgcmlnaHQuaW5wdXRfaWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBlcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiaG9va3MgZG8gbm90IGhhdmUgdGhlIHNhbWUgdHlwZSwgc28gdGhleSBjYW5ub3QgYmUgY29tYmluZWQ7IHRha2luZyB0aGUgc2Vjb25kIFxcXG4gICAgICAgICBvZiB0aGUgdHdvXCJdO1xuICAgIFQgcmlnaHRcbiAgfCBTb21lIFQgLT4gVCB7IHJpZ2h0IHdpdGggaW5wdXQgPSByaWdodC5jb21iaW5lX2lucHV0cyBsZWZ0LmlucHV0IHJpZ2h0LmlucHV0IH1cbjs7XG5cbm1vZHVsZSBNYWtlIChTIDogUykgPSBzdHJ1Y3RcbiAgbGV0IGlucHV0X2FuZF9zdGF0ZV9pZCA9XG4gICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiAoZnVuIChpbnB1dCwgX2FuaW1hdGlvbl9pZCwgc3RhdGUpIC0+XG4gICAgICBbJXNleHBfb2Y6IFMuSW5wdXQudCAqIG9wYXF1ZV0gKGlucHV0LCBzdGF0ZSkpXG4gIDs7XG5cbiAgbGV0IGlucHV0X2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiBTLklucHV0LnNleHBfb2ZfdFxuXG4gIGxldCBpbml0IGlucHV0IGVsZW1lbnQgPVxuICAgIGxldCBzdGF0ZSA9IFMuaW5pdCBpbnB1dCBlbGVtZW50IGluXG4gICAgbGV0IGFuaW1hdGlvbl9pZCA9XG4gICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSAoZnVuIF8gLT4gUy5vbl9tb3VudCBpbnB1dCBzdGF0ZSBlbGVtZW50KVxuICAgIGluXG4gICAgaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGVcbiAgOztcblxuICBsZXQgdXBkYXRlIGlucHV0IChvbGRfaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGUpIGVsZW1lbnQgPVxuICAgIFMudXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dDppbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgIGlucHV0LCBhbmltYXRpb25faWQsIHN0YXRlXG4gIDs7XG5cbiAgbGV0IGRlc3Ryb3kgKG9sZF9pbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZSkgZWxlbWVudCA9XG4gICAgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBhbmltYXRpb25faWQ7XG4gICAgUy5kZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBpbnB1dCA9XG4gICAgbWFrZV9ob29rXG4gICAgICB+ZXh0cmE6KGlucHV0LCBpbnB1dF9pZClcbiAgICAgIH5jb21iaW5lX2lucHV0czpTLklucHV0LmNvbWJpbmVcbiAgICAgIH5pZDppbnB1dF9hbmRfc3RhdGVfaWRcbiAgICAgIH5pbml0XG4gICAgICB+dXBkYXRlXG4gICAgICB+ZGVzdHJveVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCB0eXBlX2lkID0gaW5wdXRfaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBFeHRyYSA9IEV4dHJhXG5lbmRcbiIsIm9wZW4hIEpzX29mX29jYW1sXG5vcGVuISBKc1xuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIG1hcCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBzZXQgOiAnYSAtPiAnYiAtPiB1bml0IG1ldGhcbiAgbWV0aG9kIGdldCA6ICdhIC0+ICdiIE9wdGRlZi50IG1ldGhcbiAgbWV0aG9kIGRlbGV0ZSA6ICdhIC0+IHVuaXQgbWV0aFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIG1hcCBKcy50XG5cbmxldCBtYXAgOiB1bml0IC0+ICgnYSwgJ2IpIG1hcCBKcy50IEpzLmNvbnN0ciA9IGZ1biAoKSAtPiBVbnNhZmUuZ2xvYmFsIyMuX01hcFxuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IG1hcCA9IG1hcCAoKSBpblxuICBuZXclanMgbWFwXG47O1xuXG5sZXQgc2V0IHQgYSBiID0gdCMjc2V0IGEgYlxubGV0IGdldCB0IGEgPSBKcy5PcHRkZWYudG9fb3B0aW9uICh0IyNnZXQgYSlcbmxldCBkZWxldGUgdCBhID0gdCMjZGVsZXRlIGFcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgSnNfb2JqZWN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEpzLlVuc2FmZS5hbnlcblxuICBsZXQgZW1wdHlfb2JqICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG4gIGxldCBzZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWUgPSBKcy5VbnNhZmUuc2V0IHQgKEpzLnN0cmluZyBuYW1lKSB2YWx1ZVxuICBsZXQgZ2V0X3Byb3BfYXNjaWkgdCBuYW1lID0gSnMuVW5zYWZlLmdldCB0IChKcy5zdHJpbmcgbmFtZSlcbiAgbGV0IGhhc19wcm9wZXJ0eSB0IG5hbWUgPSBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmdldCB0IChKcy5zdHJpbmcgbmFtZSkpXG4gIGxldCBpc191bmRlZmluZWQgYSA9IG5vdCAoSnMuT3B0ZGVmLnRlc3QgYSlcbmVuZFxuXG5tb2R1bGUgQXR0cnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnNfb2JqZWN0LnRcblxuICBsZXQgY3JlYXRlICgpIDogdCA9IEpzX29iamVjdC5lbXB0eV9vYmogKClcblxuICBsZXQgc2V0X3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+IEpzX29iamVjdC5zZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWVcbiAgOztcblxuICBsZXQgaGFzX3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gYm9vbCA9IEpzX29iamVjdC5oYXNfcHJvcGVydHlcblxuICBsZXQgaGFzX2F0dHJpYnV0ZSB0IG5hbWUgPVxuICAgIEpzX29iamVjdC5oYXNfcHJvcGVydHkgdCBcImF0dHJpYnV0ZXNcIlxuICAgICYmIEpzX29iamVjdC5oYXNfcHJvcGVydHkgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lXG4gIDs7XG5cbiAgbGV0IHNldF9hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPVxuICAgIGZ1biB0IG5hbWUgdmFsdWUgLT5cbiAgICAgIGlmIEpzX29iamVjdC5pc191bmRlZmluZWQgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKVxuICAgICAgdGhlbiBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIiAoSnNfb2JqZWN0LmVtcHR5X29iaiAoKSk7XG4gICAgICBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lIHZhbHVlXG4gIDs7XG5lbmRcblxudHlwZSB2aXJ0dWFsX2RvbV9ub2RlXG50eXBlIHZpcnR1YWxfZG9tX3BhdGNoXG5cbm1vZHVsZSBWaXJ0dWFsX2RvbSA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIHZpcnR1YWxfZG9tID0gb2JqZWN0XG4gICAgbWV0aG9kIF9WTm9kZSA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnRcbiAgICAgICAtPiBBdHRycy50XG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZcbiAgICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpXG4gICAgICAgIEpzLmNvbnN0clxuICAgICAgICBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX1ZUZXh0IDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpIEpzLmNvbnN0ciBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3JlYXRlRWxlbWVudCA6IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIGRpZmYgOlxuICAgICAgdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCBwYXRjaCA6XG4gICAgICBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gdmlydHVhbF9kb21fcGF0Y2ggSnMudCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHN2ZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnRcbiAgICAgICAtPiBBdHRycy50XG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZcbiAgICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpXG4gICAgICAgIEpzLmNvbnN0clxuICAgICAgICBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGxldCB2aXJ0dWFsX2RvbSA6IHZpcnR1YWxfZG9tIEpzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsICMjLiBWaXJ0dWFsRG9tXG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgb3BlbiBWaXJ0dWFsX2RvbVxuXG4gIHR5cGUgdCA9IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuXG4gIGxldCB0b19kb20gOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50ID1cbiAgICBmdW4gdm5vZGUgLT4gdmlydHVhbF9kb20jI2NyZWF0ZUVsZW1lbnQgdm5vZGVcbiAgOztcblxuICBsZXQgbm9kZVxuICAgIDogIHN0cmluZyAtPiBBdHRycy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHN0cmluZyBvcHRpb25cbiAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuICAgID1cbiAgICBmdW4gdGFnIGF0dHJzIGNoaWxkcmVuIGtleSAtPlxuICAgICAgbGV0IHRhZyA9IEpzLnN0cmluZyB0YWcgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBtYXRjaCBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSnMuT3B0ZGVmLmVtcHR5XG4gICAgICAgIHwgU29tZSBrZXkgLT4gSnMuT3B0ZGVmLnJldHVybiAoSnNfb2Zfb2NhbWwuSnMuc3RyaW5nIGtleSlcbiAgICAgIGluXG4gICAgICBsZXQgdm5vZGUgPSB2aXJ0dWFsX2RvbSMjLl9WTm9kZSBpblxuICAgICAgbmV3JWpzIHZub2RlIHRhZyBhdHRycyBjaGlsZHJlbiBrZXlcbiAgOztcblxuICBsZXQgc3ZnXG4gICAgOiAgc3RyaW5nIC0+IEF0dHJzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50XG4gICAgPVxuICAgIGZ1biB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5IC0+XG4gICAgICBsZXQgdGFnID0gSnMuc3RyaW5nIHRhZyBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIG1hdGNoIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBKcy5PcHRkZWYuZW1wdHlcbiAgICAgICAgfCBTb21lIGtleSAtPiBKcy5PcHRkZWYucmV0dXJuIChKcy5zdHJpbmcga2V5KVxuICAgICAgaW5cbiAgICAgIGxldCB2c3ZnID0gdmlydHVhbF9kb20jIy5zdmcgaW5cbiAgICAgIG5ldyVqcyB2c3ZnIHRhZyBhdHRycyBjaGlsZHJlbiBrZXlcbiAgOztcblxuICBsZXQgdGV4dCBzID1cbiAgICBsZXQgdnRleHQgPSB2aXJ0dWFsX2RvbSMjLl9WVGV4dCBpblxuICAgIG5ldyVqcyB2dGV4dCAoSnMuc3RyaW5nIHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIFBhdGNoID0gc3RydWN0XG4gIG9wZW4gVmlydHVhbF9kb21cblxuICB0eXBlIHQgPSB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50XG5cbiAgbGV0IGRpZmYgOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgPVxuICAgIGZ1biBhIGIgLT4gdmlydHVhbF9kb20jI2RpZmYgYSBiXG4gIDs7XG5cbiAgbGV0IHBhdGNoIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50ID1cbiAgICBmdW4gZWxlbWVudCB2bm9kZSAtPiB2aXJ0dWFsX2RvbSMjcGF0Y2ggZWxlbWVudCB2bm9kZVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfnByZXZpb3VzIH5jdXJyZW50ID0gZGlmZiBwcmV2aW91cyBjdXJyZW50XG4gIGxldCBhcHBseSA9IHBhdGNoXG5cbiAgbGV0IGlzX2VtcHR5IDogdCAtPiBib29sID1cbiAgICBsZXQgZiA9XG4gICAgICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAgICAgIHtqc3xcbiAgICAgICAgKGZ1bmN0aW9uIChwYXRjaCkge1xuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwYXRjaCkge1xuICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2EnKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgIHxqc31cbiAgICBpblxuICAgIGZ1biAodCA6IHQpIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCBmIFt8IEpzLlVuc2FmZS5pbmplY3QgdCB8XSB8PiBKcy50b19ib29sXG4gIDs7XG5lbmRcblxubW9kdWxlIFdpZGdldCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIFsncywgJ2VsZW1lbnRdIHdpZGdldCA9IG9iamVjdFxuICAgIGNvbnN0cmFpbnQgJ2VsZW1lbnQgPSAjRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgbWV0aG9kIHR5cGVfIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICgqIHZpcnR1YWwtZG9tIGNvbnNpZGVycyB0d28gd2lkZ2V0cyBvZiBiZWluZyBvZiB0aGUgc2FtZSBcImtpbmRcIiBpZiBlaXRoZXJcbiAgICAgICBvZiB0aGUgZm9sbG93aW5nIGhvbGRzOlxuXG4gICAgICAgMS4gVGhleSBib3RoIGhhdmUgYSBcIm5hbWVcIiBhdHRyaWJ1dGUgYW5kIHRoZWlyIFwiaWRcIiBmaWVsZHMgYXJlIGVxdWFsLlxuICAgICAgIChJIHRoaW5rIHRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdmlydHVhbC1kb20gYW5kIGhhdmUgZmllbGQgYW4gaXNzdWVcbiAgICAgICBvbiBnaXRodWI6IFtodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2lzc3Vlcy8zODBdKVxuXG4gICAgICAgMi4gVGhlaXIgW2luaXRdIG1ldGhvZHMgYXJlIFwiPT09XCIgZXF1YWwuIFRoaXMgaXMgdHJ1ZSB3aGVuIHVzaW5nIHZpcnR1YWwtZG9tXG4gICAgICAgd2lkZ2V0cyBpbiB0aGUgdXN1YWwgc3R5bGUgaW4gSmF2YXNjcmlwdCwgc2luY2UgdGhlIFtpbml0XSBtZXRob2Qgd2lsbCBiZSBkZWZpbmVkXG4gICAgICAgb24gYSBwcm90b3R5cGUsIGJ1dCBpcyBub3QgdHJ1ZSBpbiB0aGlzIGJpbmRpbmcgYXMgaXQgaXMgcmVkZWZpbmVkIGZvciBlYWNoXG4gICAgICAgY2FsbCB0byBbd2lkZ2V0XS5cblxuICAgICAgIFNvLCB3ZSBnbyB3aXRoIG9wdGlvbiAxIGFuZCBtdXN0IGhhdmUgYSB0cml2aWFsIGZpZWxkIGNhbGxlZCBbbmFtZV0uXG4gICAgKilcbiAgICBtZXRob2QgbmFtZSA6IHVuaXQgSnMud3JpdGVvbmx5X3Byb3BcbiAgICBtZXRob2QgaWQgOiAoJ3MgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50IEpzLnByb3BcbiAgICBtZXRob2Qgc3RhdGUgOiAncyBKcy5wcm9wXG4gICAgbWV0aG9kIHZkb21Gb3JUZXN0aW5nIDogTm9kZS50IExhenkudCBvcHRpb24gSnMucHJvcFxuICAgIG1ldGhvZCBpbmZvIDogU2V4cC50IExhenkudCBvcHRpb24gSnMucHJvcFxuICAgIG1ldGhvZCBkZXN0cm95IDogKCdlbGVtZW50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2QgdXBkYXRlIDpcbiAgICAgICgoJ290aGVyX3N0YXRlLCAnb3RoZXJfZWxlbWVudCkgd2lkZ2V0IEpzLnQgLT4gJ2VsZW1lbnQgLT4gJ2VsZW1lbnQpIEpzLmNhbGxiYWNrXG4gICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2QgaW5pdCA6ICh1bml0IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICBlbmRcblxuICAoKiBXZSBtb2RlbCBKUyBsZXZlbCBvYmplY3RzIGhlcmUgc28gdGhlcmUgaXMgYSBsb3Qgb2YgdGhyb3dpbmcgYXdheSBvZiB0eXBlXG4gICAgIGluZm9ybWF0aW9uLiAgV2UgY291bGQgcG9zc2libHkgdHJ5IHRvIHJlZGlzY292ZXIgbW9yZSBvZiBpdC4gIE9yIG1heWJlIHdlXG4gICAgIHNob3VsZCBzZWUgaWYgd2UgY2FuIGdldCByaWQgV2lkZ2V0IGNvbXBsZXRlbHkuXG4gICAgIHRoZSB1bml0IHR5cGUgcGFyYW1ldGVycyBoZXJlIGFyZSBub3QgYWN0dWFsbHkgdW5pdCwgYnV0IHBhcnQgb2ZcbiAgICAgdGhlIHR5cGUgaW5mbyB3ZSBoYXZlIHRocm93biBhd2F5IGludG8gb3VyIGRhbmNlXG4gICAgIHdpdGggSlMgKilcbiAgdHlwZSB0ID0gTm9kZS50XG5cbiAgKCogaGVyZSBpcyBob3cgd2UgdGhyb3cgYXdheSB0eXBlIGluZm9ybWF0aW9uLiAgT3VyIGdvb2Qgb2xkIGZyaWVuZCBPYmoubWFnaWMsXG4gICAgIGJ1dCBjb25zdHJhaW5lZCBhIGxpdHRsZSBiaXQgKilcbiAgbGV0IG5vZGVfb2Zfd2lkZ2V0IDogKF8sIF8pIHdpZGdldCBKcy50IC0+IE5vZGUudCA9IFN0ZGxpYi5PYmoubWFnaWNcblxuICBtb2R1bGUgU3RhdGVfa2VlcGVyID0gc3RydWN0XG4gICAgdHlwZSBib3ggPSBUIDogKCdhICogXykgVHlwZV9lcXVhbC5JZC50ICogJ2EgLT4gYm94XG5cbiAgICBsZXQgdCA6IChKcy5VbnNhZmUuYW55LCBib3gpIEpzX21hcC50ID0gSnNfbWFwLmNyZWF0ZSAoKVxuICAgIGxldCBzZXQgfmlkIGVsZW1lbnQgc3RhdGUgPSBKc19tYXAuc2V0IHQgKEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCkgKFQgKGlkLCBzdGF0ZSkpXG5cbiAgICBsZXQgZ2V0IDogdHlwZSBhIGIuIGlkOihhICogYikgVHlwZV9lcXVhbC5JZC50IC0+IF8gLT4gYSA9XG4gICAgICBmdW4gfmlkIGVsZW1lbnQgLT5cbiAgICAgIGxldCBlbGVtZW50ID0gSnMuVW5zYWZlLmluamVjdCBlbGVtZW50IGluXG4gICAgICBtYXRjaCBKc19tYXAuZ2V0IHQgZWxlbWVudCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGlkX3NleHAgPSBUeXBlX2VxdWFsLklkLnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiPG9wYXF1ZT5cIikgaWQgaW5cbiAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUc6IGVsZW1lbnQgc3RhdGUgbm90IGZvdW5kXCIgKGlkX3NleHAgOiBTZXhwLnQpXVxuICAgICAgfCBTb21lIChUIChmX2lkLCBzdGF0ZSkpIC0+XG4gICAgICAgIGxldCBUID0gVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIGlkIGZfaWQgaW5cbiAgICAgICAgc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGRlbGV0ZSBlbGVtZW50ID0gSnNfbWFwLmRlbGV0ZSB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgKHR5cGUgcylcbiAgICAgICAgPyh2ZG9tX2Zvcl90ZXN0aW5nIDogTm9kZS50IExhenkudCBvcHRpb24pXG4gICAgICAgID8oZGVzdHJveSA6IHMgLT4gJ2VsZW1lbnQgLT4gdW5pdCA9IGZ1biBfIF8gLT4gKCkpXG4gICAgICAgID8odXBkYXRlIDogcyAtPiAnZWxlbWVudCAtPiBzICogJ2VsZW1lbnQgPSBmdW4gcyBlbHQgLT4gcywgZWx0KVxuICAgICAgICB+KGlkIDogKHMgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50KVxuICAgICAgICB+KGluaXQgOiB1bml0IC0+IHMgKiAnZWxlbWVudClcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IG9iaiA6IChzLCBfKSB3aWRnZXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIG9iaiMjLnR5cGVfIDo9IEpzLnN0cmluZyBcIldpZGdldFwiO1xuICAgIG9iaiMjLm5hbWUgOj0gKCk7XG4gICAgb2JqIyMuaWQgOj0gaWQ7XG4gICAgb2JqIyMudmRvbUZvclRlc3RpbmcgOj0gdmRvbV9mb3JfdGVzdGluZztcbiAgICBvYmojIy5pbml0XG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICBsZXQgczAsIGRvbV9ub2RlID0gaW5pdCAoKSBpblxuICAgICAgU3RhdGVfa2VlcGVyLnNldCB+aWQgZG9tX25vZGUgczA7XG4gICAgICBkb21fbm9kZSk7XG4gICAgb2JqIyMudXBkYXRlXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZXYgZG9tX25vZGUgLT5cbiAgICAgICgqIFRoZSBbdXBkYXRlXSBtZXRob2Qgb2YgW29ial0gaXMgb25seSBjYWxsZWQgYnkgdmlydHVhbC1kb20gYWZ0ZXIgaXQgaGFzIGNoZWNrZWRcbiAgICAgICAgIHRoYXQgdGhlIFtpZF1zIG9mIFtwcmV2XSBhbmQgW29ial0gYXJlIFwiPT09XCIgZXF1YWwuIFRodXMgW3NhbWVfd2l0bmVzc19leG5dIHdpbGxcbiAgICAgICAgIG5ldmVyIHJhaXNlLiAqKVxuICAgICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIHByZXYjIy5pZCBpZCB3aXRoXG4gICAgICB8IFR5cGVfZXF1YWwuVCAtPlxuICAgICAgICBsZXQgcHJldl9zdGF0ZSA9IFN0YXRlX2tlZXBlci5nZXQgfmlkIGRvbV9ub2RlIGluXG4gICAgICAgIGxldCBzdGF0ZScsIGRvbV9ub2RlJyA9IHVwZGF0ZSBwcmV2X3N0YXRlIGRvbV9ub2RlIGluXG4gICAgICAgIFN0YXRlX2tlZXBlci5kZWxldGUgZG9tX25vZGU7XG4gICAgICAgIFN0YXRlX2tlZXBlci5zZXQgfmlkIGRvbV9ub2RlJyBzdGF0ZSc7XG4gICAgICAgIGRvbV9ub2RlJyk7XG4gICAgb2JqIyMuZGVzdHJveVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBkb21fbm9kZSAtPlxuICAgICAgbGV0IHByZXZfc3RhdGUgPSBTdGF0ZV9rZWVwZXIuZ2V0IH5pZCBkb21fbm9kZSBpblxuICAgICAgZGVzdHJveSBwcmV2X3N0YXRlIGRvbV9ub2RlO1xuICAgICAgU3RhdGVfa2VlcGVyLmRlbGV0ZSBkb21fbm9kZSk7XG4gICAgbm9kZV9vZl93aWRnZXQgb2JqXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBWZG9tX3JhdyA9IFJhd1xuXG5sZXQgKCkgPVxuICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gIENzc19nZW4uUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA6PSBEb21fZmxvYXQudG9fc3RyaW5nX2ZpeGVkXG47O1xuXG4oKiogVGhpcyBoYXMgMyBraW5kcyBvZiBjb25zdHJ1Y3RvcnMuXG4gICAge3ZcbiAgICAgIC0gY29uc3RydWN0b3JzIGZvciBwcm9wZXJ0aWVzIC8gYXR0cmlidXRlcyBmb3Igd2hpY2ggd2VcbiAgICAgICAgaGF2ZSB3cml0dGVuIGZpcnN0IGNsYXNzIG9jYW1sIHJlcHJlc2VudGF0aW9ucyAoc28gZmFyIG9ubHkgU3R5bGUsXG4gICAgICAgIENsYXNzLCBhbmQgSGFuZGxlcilcblxuICAgICAgLSBUaG9zZSB3aGljaCB3ZSBpbW1lZGlhdGVseSBjb252ZXJ0IGludG8gSnMgY2FsbGVkIFJhdywgd2hpY2hcbiAgICAgICAgaW4gdHVybiBoYXMgdHdvIGNhc2VzOlxuICAgICAgICAtIFByb3BlcnR5IGZvciBwcm9wZXJ0aWVzIG9uIHRoZSBET01cbiAgICAgICAgLSBBdHRyaWJ1dGUgZm9yIGF0dHJpYnV0ZXMgb24gdGhlIERPTVxuXG4gICAgICAtIEhvb2tzLCB3aGljaCByZWdpc3RlciBjYWxsYmFja3Mgb24gcHJvcGVydHkgYWRkaXRpb24gYW5kIHJlbW92YWwuXG4gICAgdn1cblxuICAgIEdlbmVyYWxseSBzcGVha2luZyBvbmUgc2hvdWxkIGF2b2lkIGNyZWF0aW5nIGEgcHJvcGVydHkgb3IgYXR0cmlidXRlXG4gICAgZm9yIHNvbWV0aGluZyBmb3Igd2hpY2ggd2UgaGF2ZSBhIGZpcnN0IGNsYXNzIHJlcHJlc2VudGF0aW9uLlxuKilcblxubW9kdWxlIEV2ZW50X2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyBoYW5kbGVyIDogKCNEb21faHRtbC5ldmVudCBhcyAnYSkgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50XG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBjb21iaW5lXG4gICAgICAgIChUIHsgdHlwZV9pZCA9IGx0aWQ7IGhhbmRsZXIgPSBsaGFuZGxlciB9KVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBydGlkOyBoYW5kbGVyID0gcmhhbmRsZXIgfSBhcyByaWdodClcbiAgICA9XG4gICAgKCogSWYgdGhleSBhcmUgbm90IHRoZSBzYW1lIHdpdG5lc3MsIHRoZW4gaXQgaXMgYSBidWcgaW4gdmlydHVhbF9kb20sIHNpbmNlXG4gICAgICAgd2UgZG8gbm90IGV4cG9zZSBbb25dIGFueW1vcmUgd2hpY2ggbWVhbnMgdGhpcyBsaWJyYXJ5IGNhbiBkZXRlcm1pbmVkIHRoZVxuICAgICAgIFtUeXBlX2VxdWFsLklkXSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZXZlbnQuIHZpcnR1YWxfZG9tIG1haW50YWlucyB0aGVcbiAgICAgICBpbnZhcmlhbnQgdGhhdCBhbnkgdHdvIGV2ZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUgd2lsbCBwcm9kdWNlIGhhbmRsZXJzXG4gICAgICAgdGhhdCBoYXZlIHRoZSBzYW1lIFtUeXBlX2VxdWFsLklkXS4gKilcbiAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsdGlkIHJ0aWQgd2l0aFxuICAgIHwgU29tZSBUIC0+XG4gICAgICBUXG4gICAgICAgIHsgdHlwZV9pZCA9IGx0aWRcbiAgICAgICAgOyBoYW5kbGVyID1cbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgIEVmZmVjdC5zZXF1ZW5jZV9hc19zaWJsaW5nIChsaGFuZGxlciB2YWx1ZSkgfnVubGVzc19zdG9wcGVkOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgcmhhbmRsZXIgdmFsdWUpKVxuICAgICAgICB9XG4gICAgfCBOb25lIC0+XG4gICAgICBlcHJpbnRfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJVRyEgIFR5cGUtaWRzIGZvciBldmVudCBoYW5kbGVycyBkaWZmZXJcIlxuICAgICAgICAgICAgKGx0aWQgOiBfIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgICAgIChydGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXTtcbiAgICAgIHJpZ2h0XG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgfCBQcm9wZXJ0eSBvZlxuICAgICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA6IGJvb2xcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2YWx1ZSA6IEpzLlVuc2FmZS5hbnlcbiAgICAgIH1cbiAgfCBBdHRyaWJ1dGUgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgSGFuZGxlciBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhhbmRsZXIgOiBFdmVudF9oYW5kbGVyLnRcbiAgICAgIH1cbiAgfCBIb29rIG9mXG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgaG9vayA6IEhvb2tzLnRcbiAgICAgIH1cbiAgfCBTdHlsZSBvZiBDc3NfZ2VuLnRcbiAgfCBDbGFzcyBvZiBzdHJpbmcgbGlzdFxuICB8IE1hbnkgb2YgdCBsaXN0XG4gIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyBvZlxuICAgICAgdCBsaXN0ICogKENzc19nZW4udCAtPiBDc3NfZ2VuLnQpICogKHN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0KVxuICB8IE1hbnlfd2l0aG91dF9tZXJnZSBvZiB0IGxpc3RcblxubGV0IGNyZWF0ZSBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2YWx1ZSkgfVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdCBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlXG4gICAgOyBuYW1lXG4gICAgOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKERvbV9mbG9hdC50b19qc19zdHJpbmcgdmFsdWUpXG4gICAgfVxuOztcblxubGV0IHByb3BlcnR5IG5hbWUgdmFsdWUgPSBQcm9wZXJ0eSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlIH1cblxubGV0IHN0cmluZ19wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHZhbHVlKSB9XG47O1xuXG5sZXQgYm9vbF9wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuYm9vbCB2YWx1ZSkgfVxuOztcblxubGV0IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZnVuY3Rpb25cbiAgfCBBdHRyaWJ1dGUgYXR0cmlidXRlIC0+IEF0dHJpYnV0ZSB7IGF0dHJpYnV0ZSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgUHJvcGVydHkgcHJvcGVydHkgLT4gUHJvcGVydHkgeyBwcm9wZXJ0eSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY3JlYXRlX2hvb2sgbmFtZSBob29rID0gSG9vayB7IG5hbWU7IGhvb2sgfVxubGV0IG1hbnkgYXR0cnMgPSBNYW55IGF0dHJzXG5sZXQgbWFueV93aXRob3V0X21lcmdlIGF0dHJzID0gTWFueV93aXRob3V0X21lcmdlIGF0dHJzXG5sZXQgZW1wdHkgPSBNYW55IFtdXG5sZXQgY29tYmluZSBsZWZ0IHJpZ2h0ID0gTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbmxldCAoIEAgKSA9IGNvbWJpbmVcblxubW9kdWxlIFVubWVyZ2VkX3dhcm5pbmdfbW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTm9fd2FybmluZ3NcbiAgICB8IEFsbF93YXJuaW5nc1xuICAgIHwgU3RvcF9hZnRlcl9xdW90YSBvZiBpbnRcblxuICBsZXQgd2FybmluZ19jb3VudCA9IHJlZiAwXG4gIGxldCBjdXJyZW50ID0gcmVmIChTdG9wX2FmdGVyX3F1b3RhIDEwMClcblxuICBsZXQgd2Fybl9zIHMgPVxuICAgIGluY3Igd2FybmluZ19jb3VudDtcbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb193YXJuaW5ncyAtPiAoKVxuICAgIHwgQWxsX3dhcm5pbmdzIC0+IGVwcmludF9zIHNcbiAgICB8IFN0b3BfYWZ0ZXJfcXVvdGEgcXVvdGEgLT5cbiAgICAgIGxldCB3YXJuaW5nX2NvdW50ID0gIXdhcm5pbmdfY291bnQgaW5cbiAgICAgIGlmIHdhcm5pbmdfY291bnQgPD0gcXVvdGFcbiAgICAgIHRoZW4gKFxuICAgICAgICBlcHJpbnRfcyBzO1xuICAgICAgICBpZiB3YXJuaW5nX2NvdW50ID0gcXVvdGFcbiAgICAgICAgdGhlblxuICAgICAgICAgIGVwcmludF9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJXQVJOSU5HOiByZWFjaGVkIHdhcm5pbmcgbWVzc2FnZSBxdW90YTsgbm8gbW9yZSBtZXNzYWdlcyB3aWxsIGJlIHByaW50ZWRcIlxuICAgICAgICAgICAgICAgIChxdW90YSA6IGludCldKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCByZXNldF93YXJuaW5nX2NvdW50ICgpID0gd2FybmluZ19jb3VudCA6PSAwXG4gIGVuZFxuZW5kXG5cbnR5cGUgbWVyZ2UgPVxuICB7IHN0eWxlcyA6IENzc19nZW4udFxuICA7IGNsYXNzZXMgOiBzdHJpbmcgbGlzdFxuICA7IGhhbmRsZXJzIDogRXZlbnRfaGFuZGxlci50IE1hcC5NKFN0cmluZykudFxuICA7IGhvb2tzIDogSG9va3MudCBNYXAuTShTdHJpbmcpLnRcbiAgfVxuXG5sZXQgY29tYmluaW5nX21hcF9hZGQgbWFwIGtleSB2YWx1ZSB+Y29tYmluZSA9XG4gIE1hcC51cGRhdGUgbWFwIGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IFNvbWUgZXhpc3RpbmdfdmFsdWUgLT4gY29tYmluZSB+a2V5IGV4aXN0aW5nX3ZhbHVlIHZhbHVlXG4gICAgfCBOb25lIC0+IHZhbHVlKVxuOztcblxubGV0IGVtcHR5X21lcmdlID1cbiAgeyBzdHlsZXMgPSBDc3NfZ2VuLmVtcHR5XG4gIDsgY2xhc3NlcyA9IFtdXG4gIDsgaGFuZGxlcnMgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIDsgaG9va3MgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIH1cbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIGxldCBhdHRycyA9IFsgYXR0ciBdIGluXG4gICgqIFdoZW4gaW5wdXQgZWxlbWVudHMgaGF2ZSB0aGVpciB2YWx1ZSBzZXQgdG8gd2hhdCBpdCBhbHJlYWR5IGlzXG4gICAgIHRoZSBjdXJzb3IgZ2V0cyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZSBmaWVsZCBldmVuIHdoZW4gdGhlIHVzZXJcbiAgICAgaXMgZWRpdGluZyBpbiB0aGUgbWlkZGxlLiBTb2Z0U2V0SG9vayAoZnJvbSAuL3NvZnQtc2V0LWhvb2suanMpXG4gICAgIGNvbXBhcmVzIGJlZm9yZSBzZXR0aW5nLCBhdm9pZGluZyB0aGUgcHJvYmxlbSBqdXN0IGxpa2UgaW5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9pbmRleC5qcyNMNDMtTDUxXG5cbiAgICAgbm90ZSB0aGF0IEVsbSdzIHZpcnR1YWwtZG9tIGluY2x1ZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhpcyBzb1xuICAgICBpZiB3ZSBzd2l0Y2ggdG8gdGhhdCB0aGUgd29ya2Fyb3VuZCBoZXJlIHdpbGwgYmUgdW5uZWNlc3NhcnkuXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9lbG0tbGFuZy92aXJ0dWFsLWRvbS9ibG9iLzE3YjMwZmI3ZGU0ODY3MjU2NWQ2MjI3ZDMzYzAxNzZmMDc1Nzg2ZGIvc3JjL05hdGl2ZS9WaXJ0dWFsRG9tLmpzI0w0MzQtTDQzOVxuICAqKVxuICBsZXQgYXR0cnNfb2JqIDogVmRvbV9yYXcuQXR0cnMudCA9IFZkb21fcmF3LkF0dHJzLmNyZWF0ZSAoKSBpblxuICAoKiBbdGFrZV9zZWNvbmRfKl0gaXMgdGhlIHRyaXZpYWwgbWVyZ2UgZnVuY3Rpb24gKGkuZS4gbm8gbWVyZ2UgYXQgYWxsKTsgaXRcbiAgICAgdGFrZXMgdHdvIGF0dHJpYnV0ZXMgb2YgdGhlIHNhbWUga2luZCwgaWdub3JlcyBhIGZpcnN0LCBhbmQgZW1pdHNcbiAgICAgYSB3YXJuaW5nIGlmIFt3YXJuX2Fib3V0X3VubWVyZ2VkX2F0dHJpYnV0ZXNdIGlzIGVuYWJsZWQuICopXG4gIGxldCB0YWtlX3NlY29uZF9zdHlsZXMgZmlyc3Qgc2Vjb25kID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgZmlyc3QpXG4gICAgdGhlblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgc3R5bGVzXCIgKGZpcnN0IDogQ3NzX2dlbi50KSAoc2Vjb25kIDogQ3NzX2dlbi50KV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9jbGFzc2VzIGZpcnN0IHNlY29uZCA9XG4gICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IGZpcnN0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGZpcnN0ID0gTGlzdC5zb3J0IH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXSBmaXJzdCBpblxuICAgICAgbGV0IHNlY29uZCA9IExpc3Quc29ydCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ10gc2Vjb25kIGluXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBjbGFzc2VzXCIgKGZpcnN0IDogc3RyaW5nIGxpc3QpIChzZWNvbmQgOiBzdHJpbmcgbGlzdCldKTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hhbmRsZXIgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgaGFuZGxlcnNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfaG9vayB+a2V5Om5hbWUgX2ZpcnN0IHNlY29uZCA9XG4gICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fcyBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhvb2tzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgKCogV2UgbWVyZ2UgYXR0cmlidXRlcyB3aGVuIHRoZXkgYXJlIHdyaXR0ZW4gdG8gdGhlIHJhdyBhdHRyaWJ1dGUgb2JqZWN0LFxuICAgICByYXRoZXIgdGhhbiB3aGVuIHRoZSB1c2VyLWZhY2luZyBtZXJnZSBmdW5jdGlvbnMgKFttYW55XSwgW2NvbWJpbmVdLCBhbmRcbiAgICAgW0BdKSBhcmUgY2FsbGVkLiBUaGlzIHN0cmF0ZWd5IGlzIGJldHRlciBpbiBib3RoIHNwZWVkIGFuZCBtZW1vcnkgdXNhZ2UsXG4gICAgIHNpbmNlIGl0IG1lYW5zIHdlIGRvIG5vdCBuZWVkIHRvIGNvbmNhdGVuYXRlIHRoZSBsaXN0IG9mIFwidW5tZXJnZWFibGVcIlxuICAgICBhdHRyaWJ1dGVzIChQcm9wZXJ0eSBhbmQgQXR0cmlidXRlKTsgaW5zdGVhZCwgd2UgY2FuIGl0ZXJhdGUgdGhyb3VnaCB0aGVcbiAgICAgdHJlZSBvZiBhdHRyaWJ1dGVzIGFuZCBlYWdlcmx5IHdyaXRlIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgdG8gdGhlXG4gICAgIGF0dHJpYnV0ZSBvYmplY3QgYXMgd2UgZmluZCB0aGVtLiBJZiB0d28gdW5tZXJnZWFibGUgYXR0cmlidXRlcyBoYXZlIHRoZVxuICAgICBzYW1lIG5hbWUsIHRoZSBzZWNvbmQgd2lsbCBzaW1wbHkgb3ZlcndyaXRlIHRoZSBmaXJzdCwgYXMgZGVzaXJlZC5cblxuICAgICBJbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgYmVoYXZpb3Igb2YgdGhlIFtNdWx0aV0gbW9kdWxlICh0aGF0IGlzLFxuICAgICBpdCBtdXN0IGJlIHBvc3NpYmxlIHRvIG1lcmdlIGNsYXNzZXMgYW5kIHN0eWxlcywgYnV0IG5vdCBob29rcyBhbmRcbiAgICAgaGFuZGxlcnMpLCB3ZSBpbnRyb2R1Y2UgdGhlIHdvcmthcm91bmQgY29uc3RydWN0b3JcbiAgICAgW01hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNdLlxuXG4gICAgIFRoZXJlIGFyZSB0aHVzIHRocmVlIGNhc2VzIHRoYXQgZWFjaCBoYXZlIGRpZmZlcmVudCBtZXJnZSBiZWhhdmlvcnM6XG4gICAgIC0gU2ltcGxlIGxpc3RzIC0gbm8gbWVyZ2luZ1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV0gLSBtZXJnZXMgY2xhc3Nlcywgc3R5bGVzLCBob29rcywgYW5kIGhhbmRsZXJzXG4gICAgIC0gTGlzdHMgd3JhcHBlZCBpbiBhIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXSAtIG1lcmdlcyBjbGFzc2VzIGFuZCBzdHlsZXNcblxuICAgICBUbyBhdm9pZCBkdXBsaWNhdGluZyB0aGUgbWF0Y2ggZXhwcmVzc2lvbiBsb2dpYywgd2UgcGFyZW1ldGVyaXplIGl0IGJ5IHRoZVxuICAgICBtZXJnaW5nIGJlaGF2aW9yLCBzaW5jZSBcIm5vIG1lcmdlXCIgcmVhbGx5IG1lYW5zIFwibWVyZ2UgYnkgdGFraW5nIHRoZVxuICAgICBzZWNvbmQgb25lXCIuICopXG4gIGxldCByZWMgbWVyZ2UgfmNvbWJpbmVfaG9vayB+Y29tYmluZV9oYW5kbGVyIH5jb21iaW5lX3N0eWxlcyB+Y29tYmluZV9jbGFzc2VzIGFjYyA9XG4gICAgTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyBhdHRyIC0+XG4gICAgICBtYXRjaCBhdHRyIHdpdGhcbiAgICAgIHwgUHJvcGVydHkgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lICYmIG5vdCBzdXBwcmVzc19tZXJnZV93YXJuaW5nc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBwcm9wZXJ0aWVzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICAgICAgKG1hdGNoIG5hbWUgd2l0aFxuICAgICAgICAgfCBcInZhbHVlXCIgLT5cbiAgICAgICAgICAgbGV0IHNvZnRTZXRIb29rIHggOiBKcy5VbnNhZmUuYW55ID0gSnMuVW5zYWZlLmdsb2JhbCAjIyBTb2Z0U2V0SG9vayB4IGluXG4gICAgICAgICAgIGxldCB2YWx1ZSA9IHNvZnRTZXRIb29rIHZhbHVlIGluXG4gICAgICAgICAgIFZkb21fcmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogXCJ2YWx1ZVwiIHZhbHVlXG4gICAgICAgICB8IG5hbWUgLT4gUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSB2YWx1ZSk7XG4gICAgICAgIGFjY1xuICAgICAgfCBBdHRyaWJ1dGUgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX2F0dHJpYnV0ZSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgYXR0cmlidXRlc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlIGF0dHJzX29iaiBuYW1lIHZhbHVlO1xuICAgICAgICBhY2NcbiAgICAgIHwgU3R5bGUgbmV3X3N0eWxlcyAtPiB7IGFjYyB3aXRoIHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgbmV3X3N0eWxlcyB9XG4gICAgICB8IENsYXNzIG5ld19jbGFzc2VzIC0+XG4gICAgICAgIHsgYWNjIHdpdGggY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBuZXdfY2xhc3NlcyB9XG4gICAgICB8IEhvb2sgeyBuYW1lOyBob29rIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aCBob29rcyA9IGNvbWJpbmluZ19tYXBfYWRkIGFjYy5ob29rcyBuYW1lIGhvb2sgfmNvbWJpbmU6Y29tYmluZV9ob29rIH1cbiAgICAgIHwgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgfSAtPlxuICAgICAgICB7IGFjYyB3aXRoXG4gICAgICAgICAgaGFuZGxlcnMgPSBjb21iaW5pbmdfbWFwX2FkZCBhY2MuaGFuZGxlcnMgbmFtZSBoYW5kbGVyIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICB9XG4gICAgICB8IE1hbnkgYXR0cnMgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6KGZ1biB+a2V5Ol8gLT4gSG9va3MuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6KGZ1biB+a2V5Ol8gLT4gRXZlbnRfaGFuZGxlci5jb21iaW5lKVxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOkNzc19nZW4uY29tYmluZVxuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3NlczpDb3JlLiggQCApXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBtYXBfc3R5bGVzLCBtYXBfY2xhc3NlcykgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6Q3NzX2dlbi5jb21iaW5lXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOkNvcmUuKCBAIClcbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IG1hcF9zdHlsZXMgKGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlcylcbiAgICAgICAgOyBjbGFzc2VzID0gbWFwX2NsYXNzZXMgKGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3NlcylcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH1cbiAgICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9KVxuICBpblxuICBsZXQgbWVyZ2UgPVxuICAgIG1lcmdlXG4gICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICBlbXB0eV9tZXJnZVxuICAgICAgYXR0cnNcbiAgaW5cbiAgTWFwLml0ZXJpIG1lcmdlLmhvb2tzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOmhvb2sgLT5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lIChIb29rcy5wYWNrIGhvb2spKTtcbiAgTWFwLml0ZXJpIG1lcmdlLmhhbmRsZXJzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOihFdmVudF9oYW5kbGVyLlQgeyBoYW5kbGVyOyBfIH0pIC0+XG4gICAgbGV0IGYgZSA9XG4gICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZSBlIChoYW5kbGVyIGUpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIChcIm9uXCIgXiBuYW1lKSAoSnMuVW5zYWZlLmluamVjdCAoRG9tLmhhbmRsZXIgZikpKTtcbiAgbGV0ICgpID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgbWVyZ2Uuc3R5bGVzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByb3BzID0gQ3NzX2dlbi50b19zdHJpbmdfbGlzdCBtZXJnZS5zdHlsZXMgaW5cbiAgICAgIGxldCBvYmogPSBSYXcuQXR0cnMuY3JlYXRlICgpIGluXG4gICAgICBMaXN0Lml0ZXIgcHJvcHMgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBvYmogayAoSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHYpKSk7XG4gICAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBcInN0eWxlXCIgKG9iaiA6PiBKcy5VbnNhZmUuYW55KSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IG1lcmdlLmNsYXNzZXNcbiAgICB0aGVuICgpXG4gICAgZWxzZVxuICAgICAgUmF3LkF0dHJzLnNldF9hdHRyaWJ1dGVcbiAgICAgICAgYXR0cnNfb2JqXG4gICAgICAgIFwiY2xhc3NcIlxuICAgICAgICAoSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IG1lcmdlLmNsYXNzZXMgfnNlcDpcIiBcIikpKVxuICBpblxuICBhdHRyc19vYmpcbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIG1hdGNoIGF0dHIgd2l0aFxuICB8IE1hbnkgW10gfCBNYW55X3dpdGhvdXRfbWVyZ2UgW10gLT4gUmF3LkF0dHJzLmNyZWF0ZSAoKVxuICB8IGF0dHIgLT4gdG9fcmF3IGF0dHJcbjs7XG5cbmxldCBzdHlsZSBjc3MgPSBTdHlsZSBjc3NcbmxldCBjbGFzc18gY2xhc3NuYW1lID0gQ2xhc3MgWyBjbGFzc25hbWUgXVxubGV0IGNsYXNzZXMnIGNsYXNzZXMgPSBDbGFzcyAoU2V0LnRvX2xpc3QgY2xhc3NlcylcbmxldCBjbGFzc2VzIGNsYXNzbmFtZXMgPSBDbGFzcyBjbGFzc25hbWVzXG5sZXQgaWQgcyA9IGNyZWF0ZSBcImlkXCIgc1xubGV0IG5hbWUgcyA9IGNyZWF0ZSBcIm5hbWVcIiBzXG5sZXQgaHJlZiByID0gY3JlYXRlIFwiaHJlZlwiIHJcbmxldCBsYWJlbCByID0gY3JlYXRlIFwibGFiZWxcIiByXG5sZXQgdGFyZ2V0IHMgPSBjcmVhdGUgXCJ0YXJnZXRcIiBzXG5sZXQgY2hlY2tlZCA9IGNyZWF0ZSBcImNoZWNrZWRcIiBcIlwiXG5sZXQgc2VsZWN0ZWQgPSBjcmVhdGUgXCJzZWxlY3RlZFwiIFwiXCJcbmxldCBoaWRkZW4gPSBjcmVhdGUgXCJoaWRkZW5cIiBcIlwiXG5sZXQgcmVhZG9ubHkgPSBjcmVhdGUgXCJyZWFkb25seVwiIFwiXCJcbmxldCBkaXNhYmxlZCA9IGNyZWF0ZSBcImRpc2FibGVkXCIgXCJcIlxubGV0IHBsYWNlaG9sZGVyIHggPSBjcmVhdGUgXCJwbGFjZWhvbGRlclwiIHhcblxubGV0IGF1dG9mb2N1cyA9IGZ1bmN0aW9uXG4gIHwgdHJ1ZSAtPiBjcmVhdGUgXCJhdXRvZm9jdXNcIiBcIlwiXG4gIHwgZmFsc2UgLT4gZW1wdHlcbjs7XG5cbmxldCBmb3JfIHggPSBjcmVhdGUgXCJmb3JcIiB4XG5sZXQgdHlwZV8geCA9IGNyZWF0ZSBcInR5cGVcIiB4XG5sZXQgdmFsdWUgeCA9IGNyZWF0ZSBcInZhbHVlXCIgeFxubGV0IHZhbHVlX3Byb3AgeCA9IHN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgeFxubGV0IHRhYmluZGV4IHggPSBjcmVhdGUgXCJ0YWJpbmRleFwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgdGl0bGUgeCA9IGNyZWF0ZSBcInRpdGxlXCIgeFxubGV0IGFsdCB4ID0gY3JlYXRlIFwiYWx0XCIgeFxubGV0IHNyYyB4ID0gY3JlYXRlIFwic3JjXCIgeFxubGV0IG9wZW5fID0gY3JlYXRlIFwib3BlblwiIFwiXCJcbmxldCBzdGFydCB4ID0gY3JlYXRlIFwic3RhcnRcIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IG1pbiB4ID0gY3JlYXRlX2Zsb2F0IFwibWluXCIgeFxubGV0IG1heCB4ID0gY3JlYXRlX2Zsb2F0IFwibWF4XCIgeFxubGV0IG1pbl9kYXRlIHggPSBjcmVhdGUgXCJtaW5cIiAoRGF0ZS50b19zdHJpbmcgeClcbmxldCBtYXhfZGF0ZSB4ID0gY3JlYXRlIFwibWF4XCIgKERhdGUudG9fc3RyaW5nIHgpXG5sZXQgbWluX2RhdGVfdGltZSB4ID0gY3JlYXRlIFwibWluXCIgKERhdGUudG9fc3RyaW5nIHggXiBcIlQwMDowMFwiKVxubGV0IG1heF9kYXRlX3RpbWUgeCA9IGNyZWF0ZSBcIm1heFwiIChEYXRlLnRvX3N0cmluZyB4IF4gXCJUMjM6NTlcIilcbmxldCBjb2xzcGFuIHggPSBjcmVhdGUgXCJjb2xzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCByb3dzcGFuIHggPSBjcmVhdGUgXCJyb3dzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCBkcmFnZ2FibGUgYiA9IGNyZWF0ZSBcImRyYWdnYWJsZVwiIChCb29sLnRvX3N0cmluZyBiKVxuXG5tb2R1bGUgVHlwZV9pZCA9IHN0cnVjdFxuICAoKiBXZSBwcm92aWRlIGEgdHJpdmlhbCBbdG9fc2V4cF0gZnVuY3Rpb24gc2luY2Ugd2Ugb25seSB3YW50XG4gICAgIHRvIHVuaWZ5IHR5cGUgaWRzIGFuZCBub3QgY29udmVydCB0eXBlcyB0byBpZHMgKilcbiAgbGV0IGNyZWF0ZSBuYW1lID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgKGZ1biBfIC0+IFNleHBsaWIuU2V4cC5MaXN0IFtdKVxuICBsZXQgKGV2ZW50IDogRG9tX2h0bWwuZXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImV2ZW50XCJcbiAgbGV0IChmb2N1cyA6IERvbV9odG1sLmZvY3VzRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImZvY3VzRXZlbnRcIlxuICBsZXQgKG1vdXNlIDogRG9tX2h0bWwubW91c2VFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwibW91c2VFdmVudFwiXG4gIGxldCAoa2V5Ym9hcmQgOiBEb21faHRtbC5rZXlib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJrZXlib2FyZEV2ZW50XCJcbiAgbGV0IChzdWJtaXQgOiBEb21faHRtbC5zdWJtaXRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwic3VibWl0RXZlbnRcIlxuICBsZXQgKG1vdXNld2hlZWwgOiBEb21faHRtbC5tb3VzZXdoZWVsRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNld2hlZWxFdmVudFwiXG5cbiAgbGV0ICh3aGVlbCA6IEpzX29mX29jYW1sX3BhdGNoZXMuRG9tX2h0bWwud2hlZWxFdmVudCBUeXBlX2VxdWFsLklkLnQpID1cbiAgICBjcmVhdGUgXCJ3aGVlbHdoZWVsRXZlbnRcIlxuICA7O1xuXG4gIGxldCAoY2xpcGJvYXJkIDogRG9tX2h0bWwuY2xpcGJvYXJkRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImNsaXBib2FyZEV2ZW50XCJcbiAgbGV0IChkcmFnIDogRG9tX2h0bWwuZHJhZ0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJkcmFnRXZlbnRcIlxuICBsZXQgKHBvaW50ZXIgOiBEb21faHRtbC5wb2ludGVyRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInBvaW50ZXJFdmVudFwiXG4gIGxldCAoYW5pbWF0aW9uIDogRG9tX2h0bWwuYW5pbWF0aW9uRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImFuaW1hdGlvbkV2ZW50XCJcbmVuZFxuXG5sZXQgb24gdHlwZV9pZCBuYW1lIChoYW5kbGVyIDogI0RvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCkgOiB0ID1cbiAgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgPSBUIHsgaGFuZGxlcjsgdHlwZV9pZCB9IH1cbjs7XG5cbmxldCBvbl9mb2N1cyA9IG9uIFR5cGVfaWQuZm9jdXMgXCJmb2N1c1wiXG5sZXQgb25fYmx1ciA9IG9uIFR5cGVfaWQuZm9jdXMgXCJibHVyXCJcbmxldCBvbl9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJjbGlja1wiXG5sZXQgb25fY29udGV4dG1lbnUgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY29udGV4dG1lbnVcIlxubGV0IG9uX2RvdWJsZV9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJkYmxjbGlja1wiXG5sZXQgb25fZHJhZyA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdcIlxubGV0IG9uX2RyYWdzdGFydCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdzdGFydFwiXG5sZXQgb25fZHJhZ2VuZCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbmRcIlxubGV0IG9uX2RyYWdlbnRlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbnRlclwiXG5sZXQgb25fZHJhZ2xlYXZlID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2xlYXZlXCJcbmxldCBvbl9kcmFnb3ZlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdvdmVyXCJcbmxldCBvbl9kcm9wID0gb24gVHlwZV9pZC5kcmFnIFwiZHJvcFwiXG5sZXQgb25fbW91c2Vtb3ZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbW92ZVwiXG5sZXQgb25fbW91c2V1cCA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZXVwXCJcbmxldCBvbl9tb3VzZWRvd24gPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2Vkb3duXCJcbmxldCBvbl9tb3VzZWVudGVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZW50ZXJcIlxubGV0IG9uX21vdXNlbGVhdmUgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VsZWF2ZVwiXG5sZXQgb25fbW91c2VvdmVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3ZlclwiXG5sZXQgb25fbW91c2VvdXQgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VvdXRcIlxubGV0IG9uX2tleXVwID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleXVwXCJcbmxldCBvbl9rZXlwcmVzcyA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlwcmVzc1wiXG5sZXQgb25fa2V5ZG93biA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlkb3duXCJcbmxldCBvbl9zY3JvbGwgPSBvbiBUeXBlX2lkLmV2ZW50IFwic2Nyb2xsXCJcbmxldCBvbl9sb2FkID0gb24gVHlwZV9pZC5ldmVudCBcImxvYWRcIlxubGV0IG9uX3N1Ym1pdCA9IG9uIFR5cGVfaWQuc3VibWl0IFwic3VibWl0XCJcbmxldCBvbl9wb2ludGVyZG93biA9IG9uIFR5cGVfaWQucG9pbnRlciBcInBvaW50ZXJkb3duXCJcbmxldCBvbl9wb2ludGVydXAgPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVydXBcIlxubGV0IG9uX21vdXNld2hlZWwgPSBvbiBUeXBlX2lkLm1vdXNld2hlZWwgXCJtb3VzZXdoZWVsXCJcbmxldCBvbl93aGVlbCA9IG9uIFR5cGVfaWQud2hlZWwgXCJ3aGVlbFwiXG5sZXQgb25fY29weSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY29weVwiXG5sZXQgb25fY3V0ID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJjdXRcIlxubGV0IG9uX3Bhc3RlID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJwYXN0ZVwiXG5sZXQgb25fcmVzZXQgPSBvbiBUeXBlX2lkLmV2ZW50IFwicmVzZXRcIlxubGV0IG9uX2FuaW1hdGlvbmVuZCA9IG9uIFR5cGVfaWQuYW5pbWF0aW9uIFwiYW5pbWF0aW9uZW5kXCJcbmxldCBjb25zdF9pZ25vcmUgXyA9IEVmZmVjdC5JZ25vcmVcblxuY2xhc3MgdHlwZSB2YWx1ZV9lbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZWxlbWVudFxuICBtZXRob2QgdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5lbmRcblxudHlwZSB2YWx1ZV9jb2VyY2lvbiA9IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2YWx1ZV9lbGVtZW50IEpzLnQgSnMub3B0XG5cbmxldCBydW5fY29lcmNpb24gY29lcmNpb24gdGFyZ2V0IHByZXYgPVxuICBtYXRjaCBwcmV2IHdpdGhcbiAgfCBTb21lIF8gLT4gcHJldlxuICB8IE5vbmUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNpb24gdGFyZ2V0KVxuOztcblxubGV0IGNvZXJjZV92YWx1ZV9lbGVtZW50IHRhcmdldCA9XG4gIGxldCBvcGVuIERvbV9odG1sLkNvZXJjZVRvIGluXG4gIE5vbmVcbiAgfD4gcnVuX2NvZXJjaW9uIChpbnB1dCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAoc2VsZWN0IDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbiAgfD4gcnVuX2NvZXJjaW9uICh0ZXh0YXJlYSA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG47O1xuXG5sZXQgb25faW5wdXRfZXZlbnQgdHlwZV9pZCBldmVudCBoYW5kbGVyID1cbiAgb24gdHlwZV9pZCBldmVudCAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgIChjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQpXG4gICAgICAgIH5kZWZhdWx0OkVmZmVjdC5JZ25vcmVcbiAgICAgICAgfmY6KGZ1biB0YXJnZXQgLT5cbiAgICAgICAgICBsZXQgdGV4dCA9IEpzLnRvX3N0cmluZyB0YXJnZXQjIy52YWx1ZSBpblxuICAgICAgICAgIGhhbmRsZXIgZXYgdGV4dCkpKVxuOztcblxubGV0IG9uX2NoYW5nZSA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJjaGFuZ2VcIlxubGV0IG9uX2lucHV0ID0gb25faW5wdXRfZXZlbnQgVHlwZV9pZC5ldmVudCBcImlucHV0XCJcbmxldCB0b19yYXcgbCA9IHRvX3JhdyBsXG5cbmxldCBvbl9maWxlX2lucHV0IGhhbmRsZXIgPVxuICBvbiBUeXBlX2lkLmV2ZW50IFwiaW5wdXRcIiAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBKcy5PcHQuY2FzZSAoRG9tX2h0bWwuQ29lcmNlVG8uaW5wdXQgdGFyZ2V0KSBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgICAgSnMuT3B0ZGVmLmNhc2UgdGFyZ2V0IyMuZmlsZXMgY29uc3RfaWdub3JlIChmdW4gZmlsZXMgLT4gaGFuZGxlciBldiBmaWxlcykpKSlcbjs7XG5cbm1vZHVsZSBBbHdheXNfZm9jdXNfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml0XG5cbiAgICAgIGxldCBjb21iaW5lICgpICgpID0gKClcbiAgICBlbmRcblxuICAgIGxldCBpbml0ICgpIF8gPSAoKVxuICAgIGxldCBvbl9tb3VudCAoKSAoKSBlbGVtZW50ID0gZWxlbWVudCMjZm9jdXNcbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6KCkgfm5ld19pbnB1dDooKSAoKSBfID0gKClcbiAgICBsZXQgZGVzdHJveSAoKSAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSA9XG4gICAgKCogQXBwZW5kIHRoZSBpZCB0byB0aGUgbmFtZSBvZiB0aGUgaG9vayB0byBlbnN1cmUgdGhhdCBpdCBpcyBkaXN0aW5jdFxuICAgICAgIGZyb20gYWxsIG90aGVyIGZvY3VzIGhvb2tzLiAqKVxuICAgIGNyZWF0ZV9ob29rIFwiYWx3YXlzLWZvY3VzLWhvb2tcIiAoSG9vay5jcmVhdGUgKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFNpbmdsZV9mb2N1c19ob29rICgpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuXG4gICAgbGV0IGhhc19iZWVuX3VzZWQgPSByZWYgZmFsc2VcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHVuaXQgVWlfZWZmZWN0LnRbQHNleHAub3BhcXVlXSkgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgcmlnaHQgXVxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgXyBfID0gKClcblxuICAgIGxldCBvbl9tb3VudCBldmVudCAoKSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAhaGFzX2JlZW5fdXNlZFxuICAgICAgdGhlbiAoXG4gICAgICAgIGhhc19iZWVuX3VzZWQgOj0gdHJ1ZTtcbiAgICAgICAgZWxlbWVudCMjZm9jdXM7XG4gICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIGV2ZW50KVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6XyB+bmV3X2lucHV0Ol8gKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSB+YWZ0ZXIgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcInNpbmdsZS1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlIGFmdGVyKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBOb19vcF9ob29rIChNIDogc2lnXG4gICAgbW9kdWxlIElucHV0IDogSG9va3NfaW50Zi5JbnB1dFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcbiAgICAgIG1vZHVsZSBJbnB1dCA9IE0uSW5wdXRcblxuICAgICAgbGV0IGluaXQgXyBfID0gKClcbiAgICAgIGxldCBvbl9tb3VudCBfICgpIF8gPSAoKVxuICAgICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0Ol8gfm5ld19pbnB1dDpfICgpIF8gPSAoKVxuICAgICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgICBlbmQpXG5cbiAgbGV0IGF0dHIgaW5wdXQgPSBjcmVhdGVfaG9vayBNLm5hbWUgKEhvb2suY3JlYXRlIGlucHV0KVxuICBsZXQgdHlwZV9pZCA9IEhvb2suRm9yX3Rlc3RpbmcudHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IGxpc3RcblxuICBsZXQgbWFwX3N0eWxlIHQgfmYgPSBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIGYsIEZuLmlkKSBdXG4gIGxldCBhZGRfY2xhc3MgdCBjID0gWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgZnVuIGNzIC0+IGMgOjogY3MpIF1cbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfc3R5bGUgdCB+ZjooZnVuIHNzIC0+IENzc19nZW4uY29tYmluZSBzcyBzKVxuXG4gIGxldCBtZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgdCA9XG4gICAgWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgRm4uaWQpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ3NzX3Zhcl9ob29rID0gSG9va3MuTWFrZSAoc3RydWN0XG4gICAgb3BlbiBKc19vZl9vY2FtbFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHN0cmluZyAqIHN0cmluZykgbGlzdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tYmluZSA9IExpc3QuYXBwZW5kXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCBpbnB1dCAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICAgICAgTGlzdC5pdGVyIGlucHV0IH5mOihmdW4gKGssIHYpIC0+XG4gICAgICAgIGVsZW1lbnQjIy5zdHlsZSMjc2V0UHJvcGVydHkgKEpzLnN0cmluZyBrKSAoSnMuc3RyaW5nIHYpIEpzLnVuZGVmaW5lZFxuICAgICAgICB8PiAoaWdub3JlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkpXG4gICAgOztcblxuICAgIGxldCBvbl9tb3VudCBfICgpIF8gPSAoKVxuXG4gICAgbGV0IGRlc3Ryb3kgaW5wdXQgKCkgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgICAgIExpc3QuaXRlciBpbnB1dCB+ZjooZnVuIChrLCBfKSAtPlxuICAgICAgICBlbGVtZW50IyMuc3R5bGUjI3JlbW92ZVByb3BlcnR5IChKcy5zdHJpbmcgaylcbiAgICAgICAgfD4gKGlnbm9yZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpKVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dCAoKSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICAgICAgaWYgcGh5c19lcXVhbCBvbGRfaW5wdXQgbmV3X2lucHV0XG4gICAgICB8fCBbJWVxdWFsOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XSBvbGRfaW5wdXQgbmV3X2lucHV0XG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVzdHJveSBvbGRfaW5wdXQgKCkgZWxlbWVudDtcbiAgICAgICAgaW5pdCBuZXdfaW5wdXQgZWxlbWVudClcbiAgICA7O1xuICBlbmQpXG5cbmxldCBfX2Nzc192YXJzX25vX2tlYmFicyBhbGlzdCA9IGNyZWF0ZV9ob29rIFwiY3VzdG9tLWNzcy12YXJzXCIgKENzc192YXJfaG9vay5jcmVhdGUgYWxpc3QpXG5sZXQgY3NzX3ZhciB+bmFtZSB2ID0gX19jc3NfdmFyc19ub19rZWJhYnMgWyBcIi0tXCIgXiBuYW1lLCB2IF1cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcmVjIGZpbHRlcl9ieV9raW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgUHJvcGVydHkgXyAtPiBpZiBmIGBQcm9wZXJ0eSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgQXR0cmlidXRlIF8gLT4gaWYgZiBgQXR0cmlidXRlIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBIb29rIF8gLT4gaWYgZiBgSG9vayB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgSGFuZGxlciBfIC0+IGlmIGYgYEhhbmRsZXIgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IFN0eWxlIF8gLT4gaWYgZiBgU3R5bGUgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IENsYXNzIF8gLT4gaWYgZiBgQ2xhc3MgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IE1hbnkgYXR0cnMgLT4gTWFueSAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSlcbiAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBhLCBiKSAtPlxuICAgICAgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSwgYSwgYilcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPlxuICAgICAgTWFueV93aXRob3V0X21lcmdlIChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpKVxuICA7O1xuXG4gIGxldCByZWMgY29udGFpbnNfbmFtZSBsb29raW5nX2ZvciA9IGZ1bmN0aW9uXG4gICAgfCBQcm9wZXJ0eSB7IG5hbWU7IF8gfSB8IEF0dHJpYnV0ZSB7IG5hbWU7IF8gfSB8IEhvb2sgeyBuYW1lOyBfIH0gLT5cbiAgICAgIFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBuYW1lXG4gICAgfCBIYW5kbGVyIHsgbmFtZTsgXyB9IC0+IFN0cmluZy5lcXVhbCAoXCJvblwiIF4gbmFtZSkgbG9va2luZ19mb3JcbiAgICB8IFN0eWxlIF8gLT4gU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIFwic3R5bGVcIlxuICAgIHwgQ2xhc3MgXyAtPiBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgXCJjbGFzc1wiXG4gICAgfCBNYW55IGF0dHJzXG4gICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgXywgXylcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPiBMaXN0LmV4aXN0cyB+ZjooY29udGFpbnNfbmFtZSBsb29raW5nX2ZvcikgYXR0cnNcbiAgOztcbmVuZFxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgZXZlbnQgPSBwcml2YXRlICNEb21faHRtbC5ldmVudFxuXG4gICAgdmFsIGV2ZW50X2tpbmQgOiBldmVudCBKcy50IERvbS5FdmVudC50eXBcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBYLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCBjb21iaW5lIGYgZyBldmVudCA9IFVpX2VmZmVjdC5NYW55IFsgZiBldmVudDsgZyBldmVudCBdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBsaXN0ZW5lciA6IChEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFtAc2V4cC5vcGFxdWVdKSB9XG4gICAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgbGV0IHNldCBmID1cbiAgICAgICAgbGV0IGhhbmRsZXIgPVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlIGV2IChmIGV2KTtcbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgICBpblxuICAgICAgICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIERvbV9odG1sLndpbmRvdyBYLmV2ZW50X2tpbmQgaGFuZGxlciBKcy5fdHJ1ZVxuICAgICAgOztcblxuICAgICAgbGV0IGluaXQgZiBfZWxlbWVudCA9IHsgU3RhdGUubGlzdGVuZXIgPSBzZXQgZiB9XG4gICAgICBsZXQgZGVzdHJveSBfaW5wdXQgc3RhdGUgX2VsZW1lbnQgPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIHN0YXRlLlN0YXRlLmxpc3RlbmVyXG5cbiAgICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0OmYgc3RhdGUgZWxlbWVudCA9XG4gICAgICAgICgqIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBjaGFuZ2VzLCBjYW5jZWwgdGhlIG9sZCBvbmUgYW5kIHJlLWluc3RhbGwgKilcbiAgICAgICAgZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICAgICAgbGV0IG5ld19zdGF0ZSA9IGluaXQgZiBlbGVtZW50IGluXG4gICAgICAgIHN0YXRlLlN0YXRlLmxpc3RlbmVyIDwtIG5ld19zdGF0ZS5saXN0ZW5lclxuICAgICAgOztcblxuICAgICAgbGV0IG9uX21vdW50IF9pbnB1dCBfc3RhdGUgX2VsZW1lbnQgPSAoKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTW91c2V1cCA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1vdXNldXBcbiAgZW5kKVxuXG5tb2R1bGUgTW91c2Vtb3ZlID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubW91c2Vtb3ZlXG4gIGVuZClcblxubW9kdWxlIENsaWNrID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQuY2xpY2tcbiAgZW5kKVxuXG5tb2R1bGUgQ29udGV4dG1lbnUgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwubW91c2VFdmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwiY29udGV4dG1lbnVcIlxuICBlbmQpXG5cbm1vZHVsZSBLZXlkb3duID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmtleWJvYXJkRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQua2V5ZG93blxuICBlbmQpXG5cbm1vZHVsZSBWaXNpYmlsaXR5Y2hhbmdlID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ2aXNpYmlsaXR5Y2hhbmdlXCJcbiAgZW5kKVxuXG5tb2R1bGUgQmVmb3JldW5sb2FkID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuICBlbmQpXG5cbmxldCBtb3VzZXVwIGYgPSBNb3VzZXVwLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2V1cC1saXN0ZW5lclwiXG5sZXQgbW91c2Vtb3ZlIGYgPSBNb3VzZW1vdmUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZW1vdmUtbGlzdGVuZXJcIlxubGV0IGNsaWNrIGYgPSBDbGljay5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWNsaWNrLWxpc3RlbmVyXCJcbmxldCBjb250ZXh0bWVudSBmID0gQ29udGV4dG1lbnUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1jb250ZXh0bWVudS1saXN0ZW5lclwiXG5sZXQga2V5ZG93biBmID0gS2V5ZG93bi5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWtleWRvd24tbGlzdGVuZXJcIlxuXG5jbGFzcyB0eXBlIGV2ZW50X3dpdGhfc3RyaW5nX3JldHVybl92YWx1ZSA9IG9iamVjdFxuICAoKiBFdmVudHMgd2l0aCBbcmV0dXJuVmFsdWVdIGFyZSBpbXBvc3NpYmxlIHRvIHByb3Blcmx5IHR5cGUsIHNvIHdlIG1ha2Ugb25lIHRoYXRcbiAgICAgaXMgc3BlY2lhbGl6ZWQgZm9yIHN0cmluZywgYW5kIGNhc3Qgb3VyIGJlZm9yZV91bmxvYWQgdHlwZSB0byBpdC4gKilcbiAgbWV0aG9kIHJldHVyblZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYmVmb3JldW5sb2FkIGYgPVxuICBsZXQgZiBldmVudCA9XG4gICAgbWF0Y2glYmluZC5FZmZlY3QgZiBldmVudCB3aXRoXG4gICAgfCBgU2hvd193YXJuaW5nIC0+XG4gICAgICBsZXQgZXZlbnQgOiBldmVudF93aXRoX3N0cmluZ19yZXR1cm5fdmFsdWUgSnMudCA9IE9iai5tYWdpYyBldmVudCBpblxuICAgICAgZXZlbnQjIy5yZXR1cm5WYWx1ZSA6PSBKcy5zdHJpbmcgXCJ0aGlzIHN0cmluZyBjYW4gYmUgYW55dGhpbmdcIjtcbiAgICAgIEVmZmVjdC5JZ25vcmVcbiAgICB8IGBEb19ub3RoaW5nIC0+IEVmZmVjdC5JZ25vcmVcbiAgaW5cbiAgQmVmb3JldW5sb2FkLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtYmVmb3JldW5sb2FkLWxpc3RlbmVyXCJcbjs7XG5cbmxldCB2aXNpYmlsaXR5Y2hhbmdlIGYgPVxuICBWaXNpYmlsaXR5Y2hhbmdlLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtdmlzaWJpbGl0eWNoYW5nZS1saXN0ZW5lclwiXG47O1xuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbGV0IG1vdXNldXBfdHlwZV9pZCA9IE1vdXNldXAuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgbW91c2Vtb3ZlX3R5cGVfaWQgPSBNb3VzZW1vdmUuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQga2V5ZG93bl90eXBlX2lkID0gS2V5ZG93bi5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBjbGlja190eXBlX2lkID0gQ2xpY2suRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgY29udGV4dG1lbnVfdHlwZV9pZCA9IENvbnRleHRtZW51LkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IHZpc2liaWxpdHljaGFuZ2VfdHlwZV9pZCA9IFZpc2liaWxpdHljaGFuZ2UuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgYmVmb3JldW5sb2FkX3R5cGVfaWQgPSBCZWZvcmV1bmxvYWQuRm9yX3Rlc3RpbmcudHlwZV9pZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBKc19vZl9vY2FtbFxuXG50eXBlIHQgPSBSYXcuTm9kZS50XG5cbmxldCB2ZG9tX3RodW5rID0gbGF6eSBKcy5VbnNhZmUuKGdldCBnbG9iYWwgKEpzLnN0cmluZyBcIlZkb21UaHVua1wiKSlcblxubGV0IGNyZWF0ZSB+a2V5IGFyZyB+ZiA9XG4gIGxldCBrZXkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBTb21lIGtleSAtPiBKcy5PcHRkZWYucmV0dXJuIChKcy5zdHJpbmcga2V5KVxuICAgIHwgTm9uZSAtPiBKcy5PcHRkZWYuZW1wdHlcbiAgaW5cbiAgbGV0IGtleSA9IEpzLlVuc2FmZS5pbmplY3Qga2V5IGluXG4gIGxldCBmID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGEgLT4gZiBhKSB8PiBKcy5VbnNhZmUuaW5qZWN0IGluXG4gIGxldCBhcmcgPSBKcy5VbnNhZmUuaW5qZWN0IGFyZyBpblxuICAoT2JqLm1hZ2ljIDogXyAtPiBSYXcuTm9kZS50KVxuICAgIChKcy5VbnNhZmUuZnVuX2NhbGwgKExhenkuZm9yY2UgdmRvbV90aHVuaykgW3wgZjsgYXJnOyBrZXkgfF0pXG47O1xuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5cbnR5cGUgZWxlbWVudCA9XG4gIHsgdGFnIDogc3RyaW5nXG4gIDsga2V5IDogc3RyaW5nIG9wdGlvblxuICA7IGF0dHJzIDogQXR0ci50XG4gIDsgcmF3X2F0dHJzIDogUmF3LkF0dHJzLnQgTGF6eS50XG4gIDsgY2hpbGRyZW4gOiBSYXcuTm9kZS50IEpzLmpzX2FycmF5IEpzLnRcbiAgOyBraW5kIDogWyBgVm5vZGUgfCBgU3ZnIF1cbiAgfVxuXG5hbmQgd2lkZ2V0ID0gUmF3LldpZGdldC50XG5cbmFuZCB0ID1cbiAgfCBOb25lXG4gIHwgVGV4dCBvZiBzdHJpbmdcbiAgfCBFbGVtZW50IG9mIGVsZW1lbnRcbiAgfCBXaWRnZXQgb2Ygd2lkZ2V0XG4gIHwgTGF6eSBvZlxuICAgICAgeyBrZXkgOiBzdHJpbmcgb3B0aW9uXG4gICAgICA7IHQgOiB0IExhenkudFxuICAgICAgfVxuXG5tb2R1bGUgQWxpYXNlcyA9IHN0cnVjdFxuICB0eXBlIG5vZGVfY3JlYXRvciA9ID9rZXk6c3RyaW5nIC0+ID9hdHRyczpBdHRyLnQgbGlzdCAtPiB0IGxpc3QgLT4gdFxuICB0eXBlIG5vZGVfY3JlYXRvcl9jaGlsZGxlc3MgPSA/a2V5OnN0cmluZyAtPiA/YXR0cnM6QXR0ci50IGxpc3QgLT4gdW5pdCAtPiB0XG5lbmRcblxubW9kdWxlIEVsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZWxlbWVudFxuXG4gIGxldCB0YWcgdCA9IHQudGFnXG4gIGxldCBhdHRycyB0ID0gdC5hdHRyc1xuICBsZXQga2V5IHQgPSB0LmtleVxuICBsZXQgd2l0aF9rZXkgdCBrZXkgPSB7IHQgd2l0aCBrZXkgPSBTb21lIGtleSB9XG5cbiAgbGV0IG1hcF9hdHRycyB0IH5mID1cbiAgICBsZXQgYXR0cnMgPSBmIHQuYXR0cnMgaW5cbiAgICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gICAgeyB0IHdpdGggYXR0cnM7IHJhd19hdHRycyB9XG4gIDs7XG5cbiAgbGV0IGFkZF9jbGFzcyB0IGMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIGNsYXNzXyBjKSlcbiAgbGV0IGFkZF9jbGFzc2VzIHQgYyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgY2xhc3NlcyBjKSlcbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIHN0eWxlIHMpKVxuZW5kXG5cbmxldCByZWMgdF90b19qcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPlxuICAgICgqIFdlIG5vcm1hbGx5IGZpbHRlciB0aGVzZSBvdXQsIGJ1dCBpZiBbdG9fanNdIGlzIGNhbGxlZCBkaXJlY3RseSBvbiBhIFtOb25lXSBub2RlLFxuICAgICAgIHdlIHVzZSB0aGlzIGhhY2suIEFzaWRlIGZyb20gaGF2aW5nIGEgW1RleHRdIG5vZGUgd2l0aG91dCBhbnkgdGV4dCBwcmVzZW50IGluIHRoZVxuICAgICAgIERvbSwgdGhlcmUgc2hvdWxkIGJlIG5vIHVud2FudGVkIHNpZGUtZWZmZWN0cy4gIEluIGFuIEluY3JfZG9tIGFwcGxpY2F0aW9uLCB0aGlzXG4gICAgICAgY2FuIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHJvb3QgdmlldyBJbmNyZW1lbnRhbCBpcyBpbmhhYml0ZWQgYnkgYSBbTm9uZV0uICopXG4gICAgUmF3Lk5vZGUudGV4dCBcIlwiXG4gIHwgVGV4dCBzIC0+IFJhdy5Ob2RlLnRleHQgc1xuICB8IEVsZW1lbnQgeyB0YWc7IGtleTsgYXR0cnMgPSBfOyByYXdfYXR0cnMgPSAobGF6eSByYXdfYXR0cnMpOyBjaGlsZHJlbjsga2luZCA9IGBWbm9kZSB9XG4gICAgLT4gUmF3Lk5vZGUubm9kZSB0YWcgcmF3X2F0dHJzIGNoaWxkcmVuIGtleVxuICB8IEVsZW1lbnQgeyB0YWc7IGtleTsgYXR0cnMgPSBfOyByYXdfYXR0cnMgPSAobGF6eSByYXdfYXR0cnMpOyBjaGlsZHJlbjsga2luZCA9IGBTdmcgfVxuICAgIC0+IFJhdy5Ob2RlLnN2ZyB0YWcgcmF3X2F0dHJzIGNoaWxkcmVuIGtleVxuICB8IFdpZGdldCB3IC0+IHdcbiAgfCBMYXp5IHsgdDsga2V5IH0gLT4gVGh1bmsuY3JlYXRlIH5rZXkgdCB+Zjp0X3RvX2pzX2xhenlcblxuYW5kIHRfdG9fanNfbGF6eSAobGF6eSB0KSA9IHRfdG9fanMgdFxuXG5sZXQgdGV4dCBzID0gVGV4dCBzXG5cbmxldCBlbGVtZW50IGtpbmQgfnRhZyB+a2V5IGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IGNoaWxkcmVuX3JhdyA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICBMaXN0Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCAoVGV4dCBfIHwgRWxlbWVudCBfIHwgV2lkZ2V0IF8gfCBMYXp5IF8pIGFzIG90aGVyIC0+XG4gICAgICBsZXQgKF8gOiBpbnQpID0gY2hpbGRyZW5fcmF3IyNwdXNoICh0X3RvX2pzIG90aGVyKSBpblxuICAgICAgKCkpO1xuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuID0gY2hpbGRyZW5fcmF3IH1cbjs7XG5cbmxldCBjcmVhdGUgdGFnID9rZXkgPyhhdHRycyA9IFtdKSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFZub2RlIH50YWcgfmtleSAoQXR0ci5tYW55IGF0dHJzKSBjaGlsZHJlbilcbjs7XG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgb3BlbiBKc19vZl9vY2FtbFxuXG4gIGxldCBjcmVhdGVfZWxlbWVudCA9IGNyZWF0ZVxuXG4gIHR5cGUgdmRvbV9ub2RlID0gdFxuXG4gIGluY2x1ZGUgUmF3LldpZGdldFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIGRvbSA9IHByaXZhdGUgI0RvbV9odG1sLmVsZW1lbnRcblxuICAgIG1vZHVsZSBJbnB1dCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgY3JlYXRlIDogSW5wdXQudCAtPiBTdGF0ZS50ICogZG9tIEpzLnRcblxuICAgIHZhbCB1cGRhdGVcbiAgICAgIDogIHByZXZfaW5wdXQ6SW5wdXQudFxuICAgICAgLT4gaW5wdXQ6SW5wdXQudFxuICAgICAgLT4gc3RhdGU6U3RhdGUudFxuICAgICAgLT4gZWxlbWVudDpkb20gSnMudFxuICAgICAgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgZGVzdHJveSA6IHByZXZfaW5wdXQ6SW5wdXQudCAtPiBzdGF0ZTpTdGF0ZS50IC0+IGVsZW1lbnQ6ZG9tIEpzLnQgLT4gdW5pdFxuICAgIHZhbCB0b192ZG9tX2Zvcl90ZXN0aW5nIDogWyBgQ3VzdG9tIG9mIElucHV0LnQgLT4gdmRvbV9ub2RlIHwgYFNleHBfb2ZfaW5wdXQgXVxuICBlbmRcblxuICBsZXQgb2ZfbW9kdWxlICh0eXBlIGlucHV0KSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSBJbnB1dC50ID0gaW5wdXQpID1cbiAgICBsZXQgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGlucHV0IDogTS5JbnB1dC50XG4gICAgICAgIDsgc3RhdGUgOiBNLlN0YXRlLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcbiAgICBpblxuICAgIGxldCBzZXhwX29mX2RvbSA6IE0uZG9tIEpzLnQgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiPG9wYXF1ZT5cIiBpblxuICAgIGxldCBpZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOk0ubmFtZSBbJXNleHBfb2Y6IFN0YXRlLnQgKiBkb21dIGluXG4gICAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpbnB1dCAtPlxuICAgICAgbGV0IHZkb21fZm9yX3Rlc3RpbmcgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKHRfdG9fanNcbiAgICAgICAgICAgICAobWF0Y2ggTS50b192ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICAgICAgICAgfCBgQ3VzdG9tIGYgLT4gZiBpbnB1dFxuICAgICAgICAgICAgICB8IGBTZXhwX29mX2lucHV0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIE0uSW5wdXQuc2V4cF9vZl90IGlucHV0IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQXRvbSBcIjxvcGFxdWU+XCIgLT4gW11cbiAgICAgICAgICAgICAgICAgIHwgb3RoZXIgLT4gWyB0ZXh0IChTZXhwLnRvX3N0cmluZ19odW0gb3RoZXIpIF1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGNyZWF0ZV9lbGVtZW50IChNLm5hbWUgXiBcIi13aWRnZXRcIikgY2hpbGRyZW4pKVxuICAgICAgaW5cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+aWRcbiAgICAgICAgfnZkb21fZm9yX3Rlc3RpbmdcbiAgICAgICAgfmluaXQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBzdGF0ZSwgZWxlbWVudCA9IE0uY3JlYXRlIGlucHV0IGluXG4gICAgICAgICAgeyBpbnB1dDsgc3RhdGUgfSwgZWxlbWVudClcbiAgICAgICAgfnVwZGF0ZTooZnVuIHsgU3RhdGUuaW5wdXQgPSBwcmV2X2lucHV0OyBzdGF0ZSB9IGVsZW1lbnQgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLnVwZGF0ZSB+cHJldl9pbnB1dCB+aW5wdXQgfnN0YXRlIH5lbGVtZW50IGluXG4gICAgICAgICAgeyBpbnB1dDsgc3RhdGUgfSwgZWxlbWVudClcbiAgICAgICAgfmRlc3Ryb3k6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgTS5kZXN0cm95IH5wcmV2X2lucHV0IH5zdGF0ZSB+ZWxlbWVudClcbiAgICAgICAgKCkpXG4gIDs7XG5lbmRcblxubGV0IGxhenlfID9rZXkgdCA9IExhenkgeyBrZXk7IHQgfVxuXG5sZXQgZWxlbWVudF9leHBlcnQga2luZCB+dGFnID9rZXkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuIH1cbjs7XG5cbmxldCB3aWRnZXQgP3Zkb21fZm9yX3Rlc3RpbmcgP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkgPVxuICBsZXQgdmRvbV9mb3JfdGVzdGluZyA9XG4gICAgbGF6eVxuICAgICAgKG1hdGNoIHZkb21fZm9yX3Rlc3Rpbmcgd2l0aFxuICAgICAgIHwgU29tZSB0IC0+IHRfdG9fanMgKExhenkuZm9yY2UgdClcbiAgICAgICB8IE5vbmUgLT4gdF90b19qcyAoY3JlYXRlIChUeXBlX2VxdWFsLklkLm5hbWUgaWQgXiBcIi13aWRnZXRcIikgW10pKVxuICBpblxuICBXaWRnZXQgKFdpZGdldC5jcmVhdGUgfnZkb21fZm9yX3Rlc3RpbmcgP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkpXG47O1xuXG5sZXQgY3JlYXRlX2NoaWxkbGVzcyB0YWcgP2tleSA/YXR0cnMgKCkgPSBjcmVhdGUgdGFnID9rZXkgP2F0dHJzIFtdXG5cbmxldCBjcmVhdGVfc3ZnIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBTdmcgfnRhZyB+a2V5IChBdHRyLm1hbnkgYXR0cnMpIGNoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBTdmcgfnRhZyB+a2V5IChBdHRyLm1hbnkgYXR0cnMpIGNoaWxkcmVuKVxuOztcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgdGV4dGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIHRleHQgZm9ybWF0XG5cbmxldCB3aWRnZXRfb2ZfbW9kdWxlIG0gPVxuICBsZXQgZiA9IEJhc2UuU3RhZ2VkLnVuc3RhZ2UgKFdpZGdldC5vZl9tb2R1bGUgbSkgaW5cbiAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpIC0+IFdpZGdldCAoZiBpKSlcbjs7XG5cbmxldCB0b19yYXcgPSB0X3RvX2pzXG5sZXQgdG9fZG9tIHQgPSBSYXcuTm9kZS50b19kb20gKHRvX3JhdyB0KVxuXG5tb2R1bGUgSW5uZXJfaHRtbCA9IHN0cnVjdFxuICBsZXQgd2lkZ2V0IH5uYW1lIGNyZWF0ZSA9XG4gICAgbGV0IGlkID1cbiAgICAgICgqIHN0YWdlIHRoZSBpZCBnZW5lcmF0aW9uICopXG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSAoZnVuICgoY29udGVudCwgXywgXyksIF8pIC0+IFNleHAuQXRvbSBjb250ZW50KVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlXG4gICAgICAoZnVuXG4gICAgICAgID9vdmVycmlkZV92ZG9tX2Zvcl90ZXN0aW5nXG4gICAgICAgIH50YWdcbiAgICAgICAgfmF0dHJzXG4gICAgICAgIH50aGlzX2h0bWxfaXNfc2FuaXRpemVkX2FuZF9pc190b3RhbGx5X3NhZmVfdHJ1c3RfbWU6Y29udGVudFxuICAgICAgICAoKVxuICAgICAgICAtPlxuICAgICAgICAgIGxldCBlbGVtZW50ID0gY3JlYXRlIHRhZyB+YXR0cnMgW10gaW5cbiAgICAgICAgICBsZXQgaW5pdCAoKSA9XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRvX2RvbSBlbGVtZW50IGluXG4gICAgICAgICAgICBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgICAgICAgKGNvbnRlbnQsIHRhZywgYXR0cnMpLCBlbGVtZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdXBkYXRlIChwcmV2X2NvbnRlbnQsIHByZXZfdGFnLCBwcmV2X2F0dHIpIGVsZW1lbnQgPVxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPVxuICAgICAgICAgICAgICAoKiBpZiB0aGUgdGFnIG9yIHRoZSBhdHRyaWJ1dGVzIGFyZSBkaWZmZXJlbnQsIGRvIGEgZGlmZi9wYXRjaCBjeWNsZSB0b1xuICAgICAgICAgICAgICAgICBnZXQgaXQgdXAgdG8gZGF0ZSAqKVxuICAgICAgICAgICAgICBpZiAobm90IChTdHJpbmcuZXF1YWwgcHJldl90YWcgdGFnKSkgfHwgbm90IChwaHlzX2VxdWFsIHByZXZfYXR0ciBhdHRycylcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIFJhdy5QYXRjaC5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIH5wcmV2aW91czooY3JlYXRlIHByZXZfdGFnIH5hdHRyczpwcmV2X2F0dHIgW10gfD4gdG9fcmF3KVxuICAgICAgICAgICAgICAgICAgfmN1cnJlbnQ6KGNyZWF0ZSB0YWcgfmF0dHJzIFtdIHw+IHRvX3JhdylcbiAgICAgICAgICAgICAgICB8PiBSYXcuUGF0Y2guYXBwbHkgZWxlbWVudFxuICAgICAgICAgICAgICBlbHNlIGVsZW1lbnRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBpZiB0aGUgdGFnIGNoYW5nZWQsIHRoZW4gW2VsZW1lbnRdIHdpbGwgYmUgZW1wdHksIHNvIHdlIG5lZWQgdG8gdXBkYXRlIHRoZVxuICAgICAgICAgICAgICAgaW5uZXJIVE1MLiAgSWYgdGhlIGNvbnRlbnQgY2hhbmdlZCwgdGhlbiB3ZSBuZWVkIHRvIHNldCB0aGUgaW5uZXJIVE1MIGZvclxuICAgICAgICAgICAgICAgb2J2aW91cyByZWFzb25zLiAqKVxuICAgICAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfdGFnIHRhZykpIHx8IG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfY29udGVudCBjb250ZW50KVxuICAgICAgICAgICAgdGhlbiBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgICAgICAgKGNvbnRlbnQsIHRhZywgYXR0cnMpLCBlbGVtZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBXZSB1c2UgdGhlIFt3aWRnZXRdIGZ1bmN0aW9uIGRpcmVjdGx5LCByYXRoZXIgdGhhbiB0aHJvdWdoIHRoZVxuICAgICAgICAgICAgIGVhc2llci10by11c2UgW3dpZGdldF9vZl9tb2R1bGVdIGZ1bmN0aW9uIGJlY2F1c2Ugd2Ugd2FudCB0b1xuICAgICAgICAgICAgIGV4cGxpY2l0bHkgY3JlYXRlIHRoZSBpZCBzdWNoIHRoYXQgaXQgaXMgZGlzdGluY3QgYmV0d2VlblxuICAgICAgICAgICAgIFtpbm5lcl9odG1sXSBhbmQgW2lubmVyX2h0bWxfc3ZnXS4gKilcbiAgICAgICAgICBsZXQgdmRvbV9mb3JfdGVzdGluZyA9XG4gICAgICAgICAgICBtYXRjaCBvdmVycmlkZV92ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBsYXp5IChjcmVhdGUgdGFnIH5hdHRycyBbIHRleHQgY29udGVudCBdKVxuICAgICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgIGluXG4gICAgICAgICAgd2lkZ2V0IH5pZCB+dmRvbV9mb3JfdGVzdGluZyB+aW5pdCB+dXBkYXRlICgpKVxuICA7O1xuZW5kXG5cbmxldCBpbm5lcl9odG1sX3N2ZyA9XG4gIElubmVyX2h0bWwud2lkZ2V0IH5uYW1lOlwiaW5uZXItaHRtbC1zdmctbm9kZVwiIChmdW4gdGFnIH5hdHRycyAtPlxuICAgIGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5Ok5vbmUgfmF0dHJzKVxuICB8PiBTdGFnZWQudW5zdGFnZVxuOztcblxubGV0IGlubmVyX2h0bWwgPVxuICBJbm5lcl9odG1sLndpZGdldCB+bmFtZTpcImlubmVyLWh0bWwtbm9kZVwiIChmdW4gdGFnIH5hdHRycyAtPlxuICAgIGNyZWF0ZSB0YWcgP2tleTpOb25lIH5hdHRycylcbiAgfD4gU3RhZ2VkLnVuc3RhZ2Vcbjs7XG5cbmxldCBhID0gY3JlYXRlIFwiYVwiXG5sZXQgYWJiciA9IGNyZWF0ZSBcImFiYnJcIlxubGV0IGJvZHkgPSBjcmVhdGUgXCJib2R5XCJcbmxldCBidXR0b24gPSBjcmVhdGUgXCJidXR0b25cIlxubGV0IGNvZGUgPSBjcmVhdGUgXCJjb2RlXCJcbmxldCBkYXRhbGlzdCA9IGNyZWF0ZSBcImRhdGFsaXN0XCJcbmxldCBkZXRhaWxzID0gY3JlYXRlIFwiZGV0YWlsc1wiXG5sZXQgZGl2ID0gY3JlYXRlIFwiZGl2XCJcbmxldCBtYWluID0gY3JlYXRlIFwibWFpblwiXG5sZXQgZmllbGRzZXQgPSBjcmVhdGUgXCJmaWVsZHNldFwiXG5sZXQgbGVnZW5kID0gY3JlYXRlIFwibGVnZW5kXCJcbmxldCBmb290ZXIgPSBjcmVhdGUgXCJmb290ZXJcIlxubGV0IGgxID0gY3JlYXRlIFwiaDFcIlxubGV0IGgyID0gY3JlYXRlIFwiaDJcIlxubGV0IGgzID0gY3JlYXRlIFwiaDNcIlxubGV0IGg0ID0gY3JlYXRlIFwiaDRcIlxubGV0IGg1ID0gY3JlYXRlIFwiaDVcIlxubGV0IGg2ID0gY3JlYXRlIFwiaDZcIlxubGV0IGhlYWRlciA9IGNyZWF0ZSBcImhlYWRlclwiXG5sZXQgaHRtbCA9IGNyZWF0ZSBcImh0bWxcIlxubGV0IGlucHV0ID0gY3JlYXRlX2NoaWxkbGVzcyBcImlucHV0XCJcbmxldCBpbWcgPSBjcmVhdGVfY2hpbGRsZXNzIFwiaW1nXCJcbmxldCBpbnB1dF9kZXByZWNhdGVkID0gY3JlYXRlIFwiaW5wdXRcIlxubGV0IHRleHRhcmVhID0gY3JlYXRlIFwidGV4dGFyZWFcIlxubGV0IHNlbGVjdCA9IGNyZWF0ZSBcInNlbGVjdFwiXG5sZXQgb3B0Z3JvdXAgPSBjcmVhdGUgXCJvcHRncm91cFwiXG5sZXQgb3B0aW9uID0gY3JlYXRlIFwib3B0aW9uXCJcbmxldCBsYWJlbCA9IGNyZWF0ZSBcImxhYmVsXCJcbmxldCBsaSA9IGNyZWF0ZSBcImxpXCJcbmxldCBwID0gY3JlYXRlIFwicFwiXG5sZXQgcHJlID0gY3JlYXRlIFwicHJlXCJcbmxldCBzZWN0aW9uID0gY3JlYXRlIFwic2VjdGlvblwiXG5sZXQgc3BhbiA9IGNyZWF0ZSBcInNwYW5cIlxubGV0IHN0cm9uZyA9IGNyZWF0ZSBcInN0cm9uZ1wiXG5sZXQgZW0gPSBjcmVhdGUgXCJlbVwiXG5sZXQgYmxvY2txdW90ZSA9IGNyZWF0ZSBcImJsb2NrcXVvdGVcIlxubGV0IHN1bW1hcnkgPSBjcmVhdGUgXCJzdW1tYXJ5XCJcbmxldCBpZnJhbWUgPSBjcmVhdGUgXCJpZnJhbWVcIlxubGV0IHRhYmxlID0gY3JlYXRlIFwidGFibGVcIlxubGV0IHRib2R5ID0gY3JlYXRlIFwidGJvZHlcIlxubGV0IHRkID0gY3JlYXRlIFwidGRcIlxubGV0IHRoID0gY3JlYXRlIFwidGhcIlxubGV0IHRoZWFkID0gY3JlYXRlIFwidGhlYWRcIlxubGV0IHRyID0gY3JlYXRlIFwidHJcIlxubGV0IHVsID0gY3JlYXRlIFwidWxcIlxubGV0IG9sID0gY3JlYXRlIFwib2xcIlxubGV0IGJyID0gY3JlYXRlX2NoaWxkbGVzcyBcImJyXCJcbmxldCBociA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJoclwiXG5sZXQgZGwgPSBjcmVhdGUgXCJkbFwiXG5sZXQgZHQgPSBjcmVhdGUgXCJkdFwiXG5sZXQgZGQgPSBjcmVhdGUgXCJkZFwiXG5cbmxldCBzZXhwX2Zvcl9kZWJ1Z2dpbmcgP2luZGVudCBzZXhwID1cbiAgc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0gP2luZGVudCB8PiB0ZXh0IHw+IExpc3QucmV0dXJuIHw+IHByZSB+YXR0cnM6W11cbjs7XG5cbm1vZHVsZSBQYXRjaCA9IHN0cnVjdFxuICB0eXBlIHQgPSBSYXcuUGF0Y2gudFxuXG4gIGxldCBjcmVhdGUgfnByZXZpb3VzIH5jdXJyZW50ID1cbiAgICBSYXcuUGF0Y2guY3JlYXRlIH5wcmV2aW91czoodF90b19qcyBwcmV2aW91cykgfmN1cnJlbnQ6KHRfdG9fanMgY3VycmVudClcbiAgOztcblxuICBsZXQgYXBwbHkgdCBlbHQgPSBSYXcuUGF0Y2guYXBwbHkgZWx0IHRcbiAgbGV0IGlzX2VtcHR5IHQgPSBSYXcuUGF0Y2guaXNfZW1wdHkgdFxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/a2V5IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgRWxlbWVudCAoZWxlbWVudF9leHBlcnQgYFZub2RlID9rZXkgfnRhZyBhdHRycyBjaGlsZHJlbilcbiAgOztcblxuICBsZXQgY3JlYXRlX3N2ZyA/a2V5IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgRWxlbWVudCAoZWxlbWVudF9leHBlcnQgYFN2ZyA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGluY2x1ZGUgQXR0clxuICBtb2R1bGUgSG9va3MgPSBIb29rc1xuICBtb2R1bGUgR2xvYmFsX2xpc3RlbmVycyA9IEdsb2JhbF9saXN0ZW5lcnNcbmVuZFxuXG5tb2R1bGUgQXR0cnMgPSBBdHRyLk11bHRpXG5tb2R1bGUgRWZmZWN0ID0gRWZmZWN0XG5tb2R1bGUgTm9kZSA9IE5vZGVcbiIsIm1vZHVsZSBWZG9tID0gVmRvbVxubW9kdWxlIERvbV9mbG9hdCA9IERvbV9mbG9hdFxubW9kdWxlIEpzX21hcCA9IEpzX21hcFxuXG5tb2R1bGUgVG9wX2xldmVsX2VmZmVjdHMgPSBzdHJ1Y3RcbiAgbGV0ICgpID1cbiAgICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgICAgbnVtYmVycyBhZnRlciB0aGUgZGVjaW1hbCBwbGFjZS4gKilcbiAgICBDc3NfZ2VuLlByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgOj0gRG9tX2Zsb2F0LnRvX3N0cmluZ19maXhlZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENwdXNldCA9IHN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEludC5TZXQudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cblxuICAgICAgbGV0IHZhbGlkYXRlIHQgPVxuICAgICAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlXG4gICAgICAgICAgKEludC52YWxpZGF0ZV9sYm91bmQgfm1pbjooSW5jbCAxKSAoU2V0Lmxlbmd0aCB0KSlcbiAgICAgICAgICAoU2V0LnRvX2xpc3QgdFxuICAgICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpJbnQudmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gICAgICAgICAgIHw+IFZhbGlkYXRlLm5hbWVfbGlzdCBcIlRocmVhZF9wb29sX2NwdXNldFwiKVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gSW50LlNldC5lcXVhbCAodDEgfD4gcmF3KSAodDIgfD4gcmF3KVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgSW5oZXJpdFxuICB8IENwdXNldCBvZiBDcHVzZXQudFxuW0BAZGVyaXZpbmcgc2V4cF1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUdXBsZV90eXBlX2ludGZcblxubW9kdWxlIFNsb3RzID0gc3RydWN0XG4gIHR5cGUgdV8gPSB7IHNsb3RzX3Blcl90dXBsZSA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCd0dXBsZSwgJ3ZhcmlhbnQpIHUgPSB1XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHRfID0gWyBgU2xvdHMgb2YgdV8gXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2xvdHNfcGVyX3R1cGxlIChgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSBuIH0pID0gblxuXG4gIHR5cGUgJ2EwIHQxID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEpIHQyID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMikgdDMgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMpIHQ0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQpIHQ1ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSkgdDYgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYpIHQ3ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcpIHQ4ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCkgdDkgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTkpIHQxMCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwKSB0MTEgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSkgdDEyID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEsICdhMTIpIHQxMyA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyLCAnYTEzKSB0MTQgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0MSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEgfVxuICBsZXQgdDIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAyIH1cbiAgbGV0IHQzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMyB9XG4gIGxldCB0NCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDQgfVxuICBsZXQgdDUgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA1IH1cbiAgbGV0IHQ2ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNiB9XG4gIGxldCB0NyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDcgfVxuICBsZXQgdDggPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA4IH1cbiAgbGV0IHQ5ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOSB9XG4gIGxldCB0MTAgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMCB9XG4gIGxldCB0MTEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMSB9XG4gIGxldCB0MTIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMiB9XG4gIGxldCB0MTMgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMyB9XG4gIGxldCB0MTQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxNCB9XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUdXBsZV9wb29sX2ludGZcbm1vZHVsZSBUdXBsZV90eXBlID0gVHVwbGVfdHlwZVxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgcGh5c19lcXVhbCA9IFN0ZGxpYi4oID09IClcbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IG51bV9iaXRzID0gSW50Lm51bV9iaXRzXG4gIGxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBjb25jYXQgbCA9IEJhc2UuU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgbFxuXG5tb2R1bGUgdHlwZSBTID0gU1xuXG5tb2R1bGUgUG9vbCA9IHN0cnVjdFxuICBsZXQgZ3Jvd19jYXBhY2l0eSB+Y2FwYWNpdHkgfm9sZF9jYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiBpZiBvbGRfY2FwYWNpdHkgPSAwIHRoZW4gMSBlbHNlIG9sZF9jYXBhY2l0eSAqIDJcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDw9IG9sZF9jYXBhY2l0eVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb29sLmdyb3cgZ290IHRvbyBzbWFsbCBjYXBhY2l0eVwiXG4gICAgICAgICAgKGBjYXBhY2l0eSBjYXBhY2l0eSwgYG9sZF9jYXBhY2l0eSBvbGRfY2FwYWNpdHkpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBjYXBhY2l0eSBvZiBpbnQgXSAqIFsgYG9sZF9jYXBhY2l0eSBvZiBpbnQgXV07XG4gICAgICBjYXBhY2l0eVxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFR1cGxlX3R5cGUuU2xvdHNcblxuICBsZXQgbWF4X3Nsb3QgPSAxNFxuXG4gICgqIFRoZSBwb29sIGlzIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIFtVbmlmb3JtX2FycmF5LnRdLCB3aGVyZSBpbmRleCB6ZXJvIGhhcyB0aGVcbiAgICAgbWV0YWRhdGEgYWJvdXQgdGhlIHBvb2wgYW5kIHRoZSByZW1haW5pbmcgaW5kaWNlcyBhcmUgdGhlIHR1cGxlcyBsYXllZCBvdXQgb25lIGFmdGVyXG4gICAgIHRoZSBvdGhlci4gIEVhY2ggdHVwbGUgdGFrZXMgWzEgKyBzbG90c19wZXJfdHVwbGVdIGluZGljZXMgaW4gdGhlIHBvb2wsIHdoZXJlIHRoZVxuICAgICBmaXJzdCBpbmRleCBob2xkcyBhIGhlYWRlciBhbmQgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGhvbGQgdGhlIHR1cGxlJ3Mgc2xvdHM6XG5cbiAgICAge3ZcbiAgICAgfCBoZWFkZXIgfCBzMCB8IHMxIHwgLi4uIHwgczxOLTE+IHxcbiAgICAgdn1cblxuICAgICBBIFtQb2ludGVyLnRdIHRvIGEgdHVwbGUgY29udGFpbnMgdGhlIGludGVnZXIgaW5kZXggd2hlcmUgaXRzIGhlYWRlciBpcywgYXMgd2VsbCBhc1xuICAgICAoYSBtYXNrIG9mKSB0aGUgdHVwbGUncyB1bmlxdWUgaWQuXG5cbiAgICAgVGhlIGZyZWUgdHVwbGVzIGFyZSBzaW5nbHkgbGlua2VkIHZpYSB0aGUgaGVhZGVycy5cblxuICAgICBXaGVuIGEgdHVwbGUgaXMgaW4gdXNlLCBpdHMgaGVhZGVyIGlzIG1hcmtlZCB0byBpbmRpY2F0ZSBzbywgYW5kIGFsc28gdG8gaW5jbHVkZSB0aGVcbiAgICAgdHVwbGUncyB1bmlxdWUgaWQuICBUaGlzIGFsbG93cyB1cyB0byBjaGVjayBpbiBjb25zdGFudCB0aW1lIHdoZXRoZXIgYSBwb2ludGVyIGlzXG4gICAgIHZhbGlkLCBieSBjb21wYXJpbmcgdGhlIGlkIGluIHRoZSBwb2ludGVyIHdpdGggdGhlIGlkIGluIHRoZSBoZWFkZXIuXG5cbiAgICAgV2hlbiBhIHR1cGxlIGlzIG5vdCBpbiB1c2UsIGl0cyBoZWFkZXIgaXMgcGFydCBvZiB0aGUgZnJlZSBsaXN0LCBhbmQgaXRzIHR1cGxlIHNsb3RzXG4gICAgIGhhdmUgZHVtbXkgdmFsdWVzIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlcywgZnJvbSB0aGUgW2R1bW15XSB0dXBsZSBzdXBwbGllZCB0b1xuICAgICBbY3JlYXRlXS4gIFdlIG11c3QgaGF2ZSBkdW1teSB2YWx1ZXMgb2YgdGhlIGNvcnJlY3QgdHlwZSB0byBwcmV2ZW50IGEgc2VnZmF1bHQgaW5cbiAgICAgY29kZSB0aGF0IChtaXN0YWtlbmx5KSB1c2VzIGEgcG9pbnRlciB0byBhIGZyZWUgdHVwbGUuXG5cbiAgICAgRm9yIFtQb29sLlVuc2FmZV0sIGEgc2xvdCBpbiBhIGZyZWUgb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgYW4gaW50OyBpdCBtdXN0IG5vdCBiZVxuICAgICBwb2ludGVyIHRvIHByZXZlbnQgYSBzcGFjZSBsZWFrLiAgSG93ZXZlciwgdGhlIGludCBpbiB0aGUgc2xvdCBtYXkgbm90IHJlcHJlc2VudCBhXG4gICAgIHZhbGlkIHZhbHVlIG9mIHRoZSB0eXBlLlxuICAqKVxuXG4gIG1vZHVsZSBTbG90ID0gc3RydWN0XG4gICAgdHlwZSAoJ3Nsb3RzLCAnYSkgdCA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsICh0MSA6IChfLCBfKSB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgdDAgPSAxXG4gICAgbGV0IHQxID0gMlxuICAgIGxldCB0MiA9IDNcbiAgICBsZXQgdDMgPSA0XG4gICAgbGV0IHQ0ID0gNVxuICAgIGxldCB0NSA9IDZcbiAgICBsZXQgdDYgPSA3XG4gICAgbGV0IHQ3ID0gOFxuICAgIGxldCB0OCA9IDlcbiAgICBsZXQgdDkgPSAxMFxuICAgIGxldCB0MTAgPSAxMVxuICAgIGxldCB0MTEgPSAxMlxuICAgIGxldCB0MTIgPSAxM1xuICAgIGxldCB0MTMgPSAxNFxuICAgIGxldCV0ZXN0IF8gPSB0MTMgPSBtYXhfc2xvdFxuICBlbmRcblxuICAoKiBXZSBvbmx5IGhhdmUgW0ludC5udW1fYml0c10gYml0cyBhdmFpbGFibGUgZm9yIHBvb2wgcG9pbnRlcnMuICBUaGUgYml0cyBvZiBhIHBvb2xcbiAgICAgcG9pbnRlciBlbmNvZGUgdHdvIHRoaW5nczpcblxuICAgICAtIHRoZSB0dXBsZSdzIGFycmF5IGluZGV4IGluIHRoZSBwb29sXG4gICAgIC0gdGhlIHR1cGxlJ3MgaWRlbnRpZmllciAobm90IG5lY2Vzc2FyaWx5IHVuaXF1ZSlcblxuICAgICBXZSBjaG9vc2UgW2FycmF5X2luZGV4X251bV9iaXRzXSBhcyBsYXJnZSBhcyBuZWVkZWQgZm9yIHRoZSBtYXhpbXVtIHBvb2wgY2FwYWNpdHlcbiAgICAgdGhhdCB3ZSB3YW50IHRvIHN1cHBvcnQsIGFuZCB1c2UgdGhlIHJlbWFpbmluZyBbbWFza2VkX3R1cGxlX2lkX251bV9iaXRzXSBiaXRzIGZvclxuICAgICB0aGUgaWRlbnRpZmllci4gIDY0LWJpdCBhbmQgMzItYml0IGFyY2hpdGVjdHVyZXMgdHlwaWNhbGx5IGhhdmUgdmVyeSBkaWZmZXJlbnRcbiAgICAgYWRkcmVzcy1zcGFjZSBzaXplcywgc28gd2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gZGlmZmVyZW50bHkuICopXG5cbiAgbGV0IGFycmF5X2luZGV4X251bV9iaXRzID1cbiAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChJbnQubnVtX2JpdHMgPSA2Myk7XG4gICAgICAzMClcbiAgICBlbHNlIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gMzEgfHwgSW50Lm51bV9iaXRzID0gMzIpO1xuICAgICAgMjIpXG4gIDs7XG5cbiAgbGV0IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA9IEludC5udW1fYml0cyAtIGFycmF5X2luZGV4X251bV9iaXRzXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IGFycmF5X2luZGV4X251bV9iaXRzICsgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzIDw9IEludC5udW1fYml0c1xuICBsZXQgbWF4X2FycmF5X2xlbmd0aCA9IDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzXG5cbiAgbW9kdWxlIFR1cGxlX2lkIDogc2lnXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaW5pdCA6IHRcbiAgICB2YWwgbmV4dCA6IHQgLT4gdFxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBleGFtcGxlcyA6IHQgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIFdlIGd1YXJhbnRlZSB0aGF0IHR1cGxlIGlkcyBhcmUgbm9ubmVnYXRpdmUgc28gdGhhdCB0aGV5IGNhbiBiZSBlbmNvZGVkIGluXG4gICAgICAgaGVhZGVycy4gKilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMClcbiAgICBsZXQgdG9fc3RyaW5nID0gSW50LnRvX3N0cmluZ1xuICAgIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgaW5pdCA9IDBcbiAgICBsZXQgbmV4dCB0ID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiB0ICsgMSBlbHNlIGlmIHQgPSBJbnQubWF4X3ZhbHVlIHRoZW4gMCBlbHNlIHQgKyAxXG4gICAgbGV0IHRvX2ludCB0ID0gdFxuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIGlmIGkgPCAwXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiVHVwbGVfaWQub2ZfaW50IGdvdCBuZWdhdGl2ZSBpbnRcIiBpIFslc2V4cF9vZjogaW50XTtcbiAgICAgIGlcbiAgICA7O1xuXG4gICAgbGV0IGV4YW1wbGVzID0gWyAwOyAxOyAweDFGRkZfRkZGRjsgSW50Lm1heF92YWx1ZSBdXG4gIGVuZFxuXG4gIGxldCB0dXBsZV9pZF9tYXNrID0gKDEgbHNsIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cykgLSAxXG5cbiAgbW9kdWxlIFBvaW50ZXIgOiBzaWdcbiAgICAoKiBbUG9pbnRlci50XSBpcyBhbiBlbmNvZGluZyBhcyBhbiBbaW50XSBvZiB0aGUgZm9sbG93aW5nIHN1bSB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBOb3JtYWwgb2YgeyBoZWFkZXJfaW5kZXggOiBpbnQ7IG1hc2tlZF90dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIFRoZSBlbmNvZGluZyBpcyBjaG9zZW4gdG8gb3B0aW1pemUgdGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbiwgbmFtZWx5IHR1cGxlLXNsb3RcbiAgICAgICBhY2Nlc3MsIHRoZSBbc2xvdF9pbmRleF0gZnVuY3Rpb24uICBUaGUgZW5jb2RpbmcgaXMgZGVzaWduZWQgc28gdGhhdCBbc2xvdF9pbmRleF1cbiAgICAgICBwcm9kdWNlcyBhIG5lZ2F0aXZlIG51bWJlciBmb3IgW051bGxdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzdWJzZXF1ZW50IGFycmF5IGJvdW5kc1xuICAgICAgIGNoZWNrIHRvIGZhaWwuICopXG5cbiAgICB0eXBlICdzbG90cyB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBwaHlzX2NvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHBoeXNfZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCogVGhlIG51bGwgcG9pbnRlci4gIFtudWxsXSBpcyBhIGZ1bmN0aW9uIGR1ZSB0byBpc3N1ZXMgd2l0aCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24uICopXG5cbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gXyB0XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCogTm9ybWFsIHBvaW50ZXJzLiAqKVxuXG4gICAgdmFsIGNyZWF0ZSA6IGhlYWRlcl9pbmRleDppbnQgLT4gVHVwbGVfaWQudCAtPiBfIHRcbiAgICB2YWwgaGVhZGVyX2luZGV4IDogXyB0IC0+IGludFxuICAgIHZhbCBtYXNrZWRfdHVwbGVfaWQgOiBfIHQgLT4gaW50XG4gICAgdmFsIHNsb3RfaW5kZXggOiBfIHQgLT4gKF8sIF8pIFNsb3QudCAtPiBpbnRcbiAgICB2YWwgZmlyc3Rfc2xvdF9pbmRleCA6IF8gdCAtPiBpbnRcblxuICAgIG1vZHVsZSBJZCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG4gICAgICB2YWwgb2ZfaW50NjMgOiBJbnQ2My50IC0+IHRcbiAgICBlbmRcblxuICAgIHZhbCB0b19pZCA6IF8gdCAtPiBJZC50XG4gICAgdmFsIG9mX2lkX2V4biA6IElkLnQgLT4gXyB0XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIEEgcG9pbnRlciBpcyBlaXRoZXIgW251bGxdIG9yIHRoZSAocG9zaXRpdmUpIGluZGV4IGluIHRoZSBwb29sIG9mIHRoZSBuZXh0LWZyZWVcbiAgICAgICBmaWVsZCBwcmVjZWVkaW5nIHRoZSB0dXBsZSdzIHNsb3RzLiAqKVxuICAgIHR5cGUgJ3Nsb3RzIHQgPSBpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGxldCBzZXhwX29mX3QgXyB0ID0gU2V4cC5BdG9tIChzcHJpbnRmIFwiPFBvb2wuUG9pbnRlci50OiAweCUwOHg+XCIgdClcbiAgICBsZXQgcGh5c19lcXVhbCAodDEgOiBfIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxuICAgIGxldCBwaHlzX2NvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IG51bGwgKCkgPSAtbWF4X3Nsb3QgLSAxXG4gICAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcblxuICAgICgqIFtudWxsXSBtdXN0IGJlIHN1Y2ggdGhhdCBbbnVsbCArIHNsb3RdIGlzIGFuIGludmFsaWQgYXJyYXkgaW5kZXggZm9yIGFsbCBzbG90cy5cbiAgICAgICBPdGhlcndpc2UgZ2V0L3NldCBvbiB0aGUgbnVsbCBwb2ludGVyIG1heSBsZWFkIHRvIGEgc2VnZmF1bHQuICopXG4gICAgbGV0JXRlc3QgXyA9IG51bGwgKCkgKyBtYXhfc2xvdCA8IDBcblxuICAgIGxldCBjcmVhdGUgfmhlYWRlcl9pbmRleCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9XG4gICAgICBoZWFkZXJfaW5kZXhcbiAgICAgIGxvciAoKFR1cGxlX2lkLnRvX2ludCB0dXBsZV9pZCBsYW5kIHR1cGxlX2lkX21hc2spIGxzbCBhcnJheV9pbmRleF9udW1fYml0cylcbiAgICA7O1xuXG4gICAgbGV0IGhlYWRlcl9pbmRleF9tYXNrID0gKDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzKSAtIDFcbiAgICBsZXQgbWFza2VkX3R1cGxlX2lkIHQgPSB0IGxzciBhcnJheV9pbmRleF9udW1fYml0c1xuICAgIGxldCBoZWFkZXJfaW5kZXggdCA9IHQgbGFuZCBoZWFkZXJfaW5kZXhfbWFza1xuICAgIGxldCBpbnZhcmlhbnQgXyB0ID0gaWYgbm90IChpc19udWxsIHQpIHRoZW4gYXNzZXJ0IChoZWFkZXJfaW5kZXggdCA+IDApXG4gICAgbGV0JXRlc3RfdW5pdCBfID0gaW52YXJpYW50IGlnbm9yZSAobnVsbCAoKSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBMaXN0Lml0ZXIgVHVwbGVfaWQuZXhhbXBsZXMgfmY6KGZ1biB0dXBsZV9pZCAtPlxuICAgICAgICBpbnZhcmlhbnQgaWdub3JlIChjcmVhdGUgfmhlYWRlcl9pbmRleDoxIHR1cGxlX2lkKSlcbiAgICA7O1xuXG4gICAgbGV0IHNsb3RfaW5kZXggdCBzbG90ID0gaGVhZGVyX2luZGV4IHQgKyBzbG90XG4gICAgbGV0IGZpcnN0X3Nsb3RfaW5kZXggdCA9IHNsb3RfaW5kZXggdCBTbG90LnQwXG5cbiAgICBtb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICBlbmRcblxuICAgIGxldCB0b19pZCB0ID0gSWQub2ZfaW50IHRcblxuICAgIGxldCBvZl9pZF9leG4gaWQgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCB0ID0gSWQudG9faW50X2V4biBpZCBpblxuICAgICAgICBpZiBpc19udWxsIHRcbiAgICAgICAgdGhlbiB0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaG91bGRfZXF1YWwgPVxuICAgICAgICAgICAgY3JlYXRlIH5oZWFkZXJfaW5kZXg6KGhlYWRlcl9pbmRleCB0KSAoVHVwbGVfaWQub2ZfaW50IChtYXNrZWRfdHVwbGVfaWQgdCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIHQgc2hvdWxkX2VxdWFsXG4gICAgICAgICAgdGhlbiB0XG4gICAgICAgICAgZWxzZSBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcInNob3VsZCBlcXVhbFwiIHNob3VsZF9lcXVhbCBbJXNleHBfb2Y6IF8gdF0pXG4gICAgICB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb2ludGVyLm9mX2lkX2V4biBnb3Qgc3RyYW5nZSBpZFwiXG4gICAgICAgICAgKGlkLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBJZC50ICogZXhuXVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgICAoKiBBIFtIZWFkZXIudF0gaXMgYW4gZW5jb2RpbmcgYXMgYW4gW2ludF0gb2YgdGhlIGZvbGxvd2luZyB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBGcmVlIG9mIHsgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IGludCB9XG4gICAgICAgICB8IFVzZWQgb2YgeyB0dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIElmIGEgdHVwbGUgaXMgZnJlZSwgaXRzIGhlYWRlciBpcyBzZXQgdG8gZWl0aGVyIFtOdWxsXSBvciBbRnJlZV0gd2l0aFxuICAgICAgIFtuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XSBpbmRpY2F0aW5nIHRoZSBoZWFkZXIgb2YgdGhlIG5leHQgdHVwbGUgb24gdGhlIGZyZWUgbGlzdC5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGluIHVzZSwgaXQgaGVhZGVyIGlzIHNldCB0byBbVXNlZF0uICopXG5cbiAgICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIG51bGwgOiB0XG4gICAgdmFsIGlzX251bGwgOiB0IC0+IGJvb2xcbiAgICB2YWwgZnJlZSA6IG5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aW50IC0+IHRcbiAgICB2YWwgaXNfZnJlZSA6IHQgLT4gYm9vbFxuICAgIHZhbCBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IDogdCAtPiBpbnRcblxuICAgICgqIG9ubHkgdmFsaWQgaWYgW2lzX2ZyZWUgdF0gKilcblxuICAgIHZhbCB1c2VkIDogVHVwbGVfaWQudCAtPiB0XG4gICAgdmFsIGlzX3VzZWQgOiB0IC0+IGJvb2xcbiAgICB2YWwgdHVwbGVfaWQgOiB0IC0+IFR1cGxlX2lkLnRcblxuICAgICgqIG9ubHkgdmFsaWQgaWYgW2lzX3VzZWQgdF0gKilcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50XG5cbiAgICBsZXQgbnVsbCA9IDBcbiAgICBsZXQgaXNfbnVsbCB0ID0gdCA9IDBcblxuICAgICgqIFdlIGtub3cgdGhhdCBoZWFkZXIgaW5kaWNlcyBhcmUgWz4gMF0sIGJlY2F1c2UgaW5kZXggWzBdIGhvbGRzIHRoZSBtZXRhZGF0YS4gKilcbiAgICBsZXQgZnJlZSB+bmV4dF9mcmVlX2hlYWRlcl9pbmRleCA9IG5leHRfZnJlZV9oZWFkZXJfaW5kZXhcbiAgICBsZXQgaXNfZnJlZSB0ID0gdCA+IDBcbiAgICBsZXQgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCB0ID0gdFxuICAgIGxldCB1c2VkICh0dXBsZV9pZCA6IFR1cGxlX2lkLnQpID0gLTEgLSAodHVwbGVfaWQgOj4gaW50KVxuICAgIGxldCBpc191c2VkIHQgPSB0IDwgMFxuICAgIGxldCB0dXBsZV9pZCB0ID0gVHVwbGVfaWQub2ZfaW50ICgtKHQgKyAxKSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBMaXN0Lml0ZXIgVHVwbGVfaWQuZXhhbXBsZXMgfmY6KGZ1biBpZCAtPlxuICAgICAgICBsZXQgdCA9IHVzZWQgaWQgaW5cbiAgICAgICAgYXNzZXJ0IChpc191c2VkIHQpO1xuICAgICAgICBhc3NlcnQgKFR1cGxlX2lkLmVxdWFsICh0dXBsZV9pZCB0KSBpZCkpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBpZiBpc19udWxsIHRcbiAgICAgIHRoZW4gU2V4cC5BdG9tIFwibnVsbFwiXG4gICAgICBlbHNlIGlmIGlzX2ZyZWUgdFxuICAgICAgdGhlbiBTZXhwLihMaXN0IFsgQXRvbSBcIkZyZWVcIjsgQXRvbSAoSW50LnRvX3N0cmluZyAobmV4dF9mcmVlX2hlYWRlcl9pbmRleCB0KSkgXSlcbiAgICAgIGVsc2UgU2V4cC4oTGlzdCBbIEF0b20gXCJVc2VkXCI7IEF0b20gKFR1cGxlX2lkLnRvX3N0cmluZyAodHVwbGVfaWQgdCkpIF0pXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1ldGFkYXRhX2luZGV4ID0gMFxuICBsZXQgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ID0gMVxuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgKG1heF9hcnJheV9sZW5ndGggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpIC8gKDEgKyBzbG90c19wZXJfdHVwbGUpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBmb3Igc2xvdHNfcGVyX3R1cGxlID0gMSB0byBtYXhfc2xvdCBkb1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKCgxICsgc2xvdHNfcGVyX3R1cGxlKSAqIG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICA8PSBtYXhfYXJyYXlfbGVuZ3RoKVxuICAgIGRvbmVcbiAgOztcblxuICBtb2R1bGUgTWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlICdzbG90cyB0ID1cbiAgICAgIHsgKCogW3Nsb3RzX3Blcl90dXBsZV0gaXMgbnVtYmVyIG9mIHNsb3RzIGluIGEgdHVwbGUgYXMgc2VlbiBieSB0aGUgdXNlcjsgaS5lLiBub3RcbiAgICAgICAgICAgY291bnRpbmcgdGhlIG5leHQtZnJlZSBwb2ludGVyLiAqKVxuICAgICAgICBzbG90c19wZXJfdHVwbGUgOiBpbnRcbiAgICAgIDsgY2FwYWNpdHkgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2lkIDogVHVwbGVfaWQudFxuICAgICAgOyBtdXRhYmxlIGZpcnN0X2ZyZWUgOiBIZWFkZXIudFxuICAgICAgKCogW2R1bW15XSBpcyBbTm9uZV0gaW4gYW4gdW5zYWZlIHBvb2wuICBJbiBhIHNhZmUgcG9vbCwgW2R1bW15XSBpcyBbU29tZSBhXSwgd2l0aFxuICAgICAgICAgW1VuaWZvcm1fYXJyYXkubGVuZ3RoIGEgPSBzbG90c19wZXJfdHVwbGVdLiAgW2R1bW15XSBpcyBhY3R1YWxseSBhIHR1cGxlIHZhbHVlXG4gICAgICAgICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUgKGNvcnJlc3BvbmRpbmcgdG8gWydzbG90c10pLCBidXQgd2UgbWFrZSB0aGUgdHlwZSBvZlxuICAgICAgICAgW2R1bW15XSBiZSBbT2JqLnQgVW5pZm9ybV9hcnJheS50XSBiZWNhdXNlIHdlIGNhbid0IHdyaXRlIHRoYXQgdHlwZSBoZXJlLiAgQWxzbyxcbiAgICAgICAgIHRoZSBwdXJwb3NlIG9mIFtkdW1teV0gaXMgdG8gaW5pdGlhbGl6ZSBhIHBvb2wgZWxlbWVudCwgbWFraW5nIFtkdW1teV0gYW4gW09iai50XG4gICAgICAgICBVbmlmb3JtX2FycmF5LnRdIGxldHMgdXMgaW5pdGlhbGl6ZSBhIHBvb2wgZWxlbWVudCB1c2luZyBbVW5pZm9ybV9hcnJheS5ibGl0XVxuICAgICAgICAgZnJvbSBbZHVtbXldIHRvIHRoZSBwb29sLCB3aGljaCBpcyBhbiBbT2JqLnQgVW5pZm9ybV9hcnJheS50XS4gKilcbiAgICAgIDsgZHVtbXkgOiAoT2JqLnQgVW5pZm9ybV9hcnJheS50W0BzZXhwLm9wYXF1ZV0pIG9wdGlvblxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0ID0gMSArIHQuc2xvdHNfcGVyX3R1cGxlXG4gICAgbGV0IGFycmF5X2xlbmd0aCB0ID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHQuY2FwYWNpdHkgKiBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0KVxuXG4gICAgbGV0IGhlYWRlcl9pbmRleF90b190dXBsZV9udW0gdCB+aGVhZGVyX2luZGV4ID1cbiAgICAgIChoZWFkZXJfaW5kZXggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpIC8gYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdFxuICAgIDs7XG5cbiAgICBsZXQgdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAodHVwbGVfbnVtICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IHQgdHVwbGVfbnVtID1cbiAgICAgIHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gKyAxXG4gICAgOztcblxuICAgIGxldCBpc19mdWxsIHQgPSB0Lmxlbmd0aCA9IHQuY2FwYWNpdHlcbiAgZW5kXG5cbiAgb3BlbiBNZXRhZGF0YVxuXG4gICgqIFdlIHVzZSB0eXBlIFtPYmoudF0gYmVjYXVzZSB0aGUgYXJyYXkgaG9sZHMgYSBtaXggb2YgaW50ZWdlcnMgYXMgd2VsbCBhcyBPQ2FtbCB2YWx1ZXNcbiAgICAgb2YgYXJiaXRyYXJ5IHR5cGUuICopXG4gIHR5cGUgJ3Nsb3RzIHQgPSBPYmoudCBVbmlmb3JtX2FycmF5LnRcblxuICBsZXQgbWV0YWRhdGEgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IG1ldGFkYXRhX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBzbG90cyBNZXRhZGF0YS50KVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9IChtZXRhZGF0YSB0KS5sZW5ndGhcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3R5IHQgPSBNZXRhZGF0YS5zZXhwX29mX3Qgc2V4cF9vZl90eSAobWV0YWRhdGEgdClcblxuICAoKiBCZWNhdXNlIFt1bnNhZmVfaGVhZGVyXSBhbmQgW3Vuc2FmZV9zZXRfaGVhZGVyXSBkbyBub3QgZG8gYSBib3VuZHMgY2hlY2ssIG9uZSBtdXN0IGJlXG4gICAgIHN1cmUgdGhhdCBvbmUgaGFzIGEgdmFsaWQgW2hlYWRlcl9pbmRleF0gYmVmb3JlIGNhbGxpbmcgdGhlbS4gKilcbiAgbGV0IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBoZWFkZXJfaW5kZXggfD4gKE9iai5vYmogOiBfIC0+IEhlYWRlci50KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggKGhlYWRlciA6IEhlYWRlci50KSA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaGVhZGVyX2luZGV4IChoZWFkZXIgOj4gaW50KVxuICA7O1xuXG4gIGxldCBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgaGVhZGVyX2luZGV4ID49IHN0YXJ0X29mX3R1cGxlc19pbmRleCAmJiBoZWFkZXJfaW5kZXggPCBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyID1cbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBpblxuICAgIEhlYWRlci5pc191c2VkIGhlYWRlclxuICAgICYmIFR1cGxlX2lkLnRvX2ludCAoSGVhZGVyLnR1cGxlX2lkIGhlYWRlcikgbGFuZCB0dXBsZV9pZF9tYXNrXG4gICAgICAgPSBQb2ludGVyLm1hc2tlZF90dXBsZV9pZCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyID1cbiAgICBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcilcbiAgICAoKiBBdCB0aGlzIHBvaW50LCB3ZSBrbm93IHRoZSBwb2ludGVyIGlzbid0IFtudWxsXSBhbmQgaXMgaW4gYm91bmRzLCBzbyB3ZSBrbm93IGl0IGlzXG4gICAgICAgdGhlIGluZGV4IG9mIGEgaGVhZGVyLCBzaW5jZSB3ZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgYWxsIHBvaW50ZXJzIG90aGVyIHRoYW5cbiAgICAgICBbbnVsbF0gYXJlLiAqKVxuICAgICYmIHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgX3QgcG9pbnRlciA9IFBvaW50ZXIudG9faWQgcG9pbnRlclxuXG4gIGxldCBpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXhcbiAgICAmJiAwXG4gICAgICAgPSAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KVxuICAgICAgICAgbW9kIE1ldGFkYXRhLmFycmF5X2luZGljZXNfcGVyX3R1cGxlIG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIHRyeVxuICAgICAgbGV0IHBvaW50ZXIgPSBQb2ludGVyLm9mX2lkX2V4biBpZCBpblxuICAgICAgaWYgbm90IChQb2ludGVyLmlzX251bGwgcG9pbnRlcilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgICAgICBpZiBub3QgKGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXgpXG4gICAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJpbnZhbGlkIGhlYWRlciBpbmRleFwiIGhlYWRlcl9pbmRleCBbJXNleHBfb2Y6IGludF07XG4gICAgICAgIGlmIG5vdCAodW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXIpIHRoZW4gZmFpbHdpdGggXCJwb2ludGVyIG5vdCBsaXZlXCIpO1xuICAgICAgcG9pbnRlclxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLnBvaW50ZXJfb2ZfaWRfZXhuIGdvdCBpbnZhbGlkIGlkXCJcbiAgICAgICAgKGlkLCB0LCBleG4pXG4gICAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50ICogXyB0ICogZXhuXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIG1ldGFkYXRhKSBpblxuICAgICAgTWV0YWRhdGEuRmllbGRzLml0ZXJcbiAgICAgICAgfnNsb3RzX3Blcl90dXBsZTooY2hlY2sgKGZ1biBzbG90c19wZXJfdHVwbGUgLT4gYXNzZXJ0IChzbG90c19wZXJfdHVwbGUgPiAwKSkpXG4gICAgICAgIH5jYXBhY2l0eTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjYXBhY2l0eSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgPj0gMCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChVbmlmb3JtX2FycmF5Lmxlbmd0aCB0ID0gTWV0YWRhdGEuYXJyYXlfbGVuZ3RoIG1ldGFkYXRhKSkpXG4gICAgICAgIH5sZW5ndGg6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gbWV0YWRhdGEuY2FwYWNpdHkpKSlcbiAgICAgICAgfm5leHRfaWQ6KGNoZWNrIFR1cGxlX2lkLmludmFyaWFudClcbiAgICAgICAgfmZpcnN0X2ZyZWU6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyc3RfZnJlZSAtPlxuICAgICAgICAgICAgIGxldCBmcmVlID0gQXJyYXkuY3JlYXRlIH5sZW46bWV0YWRhdGEuY2FwYWNpdHkgZmFsc2UgaW5cbiAgICAgICAgICAgICBsZXQgciA9IHJlZiBmaXJzdF9mcmVlIGluXG4gICAgICAgICAgICAgd2hpbGUgbm90IChIZWFkZXIuaXNfbnVsbCAhcikgZG9cbiAgICAgICAgICAgICAgIGxldCBoZWFkZXIgPSAhciBpblxuICAgICAgICAgICAgICAgYXNzZXJ0IChIZWFkZXIuaXNfZnJlZSBoZWFkZXIpO1xuICAgICAgICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IEhlYWRlci5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4IGhlYWRlciBpblxuICAgICAgICAgICAgICAgYXNzZXJ0IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KTtcbiAgICAgICAgICAgICAgIGxldCB0dXBsZV9udW0gPSBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgIGlmIGZyZWUuKHR1cGxlX251bSlcbiAgICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJjeWNsZSBpbiBmcmVlIGxpc3RcIiB0dXBsZV9udW0gWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICAgICAgICAgZnJlZS4odHVwbGVfbnVtKSA8LSB0cnVlO1xuICAgICAgICAgICAgICAgciA6PSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleFxuICAgICAgICAgICAgIGRvbmUpKVxuICAgICAgICB+ZHVtbXk6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgU29tZSBkdW1teSAtPiBhc3NlcnQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGR1bW15ID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgaWYgSGVhZGVyLmlzX2ZyZWUgaGVhZGVyXG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdF9zbG90ID0gdHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICAgICAgICAgICAgZm9yIHNsb3QgPSAwIHRvIG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoT2JqLmlzX2ludCAoVW5pZm9ybV9hcnJheS5nZXQgdCAoZmlyc3Rfc2xvdCArIHNsb3QpKSlcbiAgICAgICAgICAgICAgICAgICBkb25lKVxuICAgICAgICAgICAgICAgZG9uZSkpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wuaW52YXJpYW50IGZhaWxlZFwiIChleG4sIHQpIFslc2V4cF9vZjogZXhuICogXyB0XVxuICA7O1xuXG4gIGxldCBjYXBhY2l0eSB0ID0gKG1ldGFkYXRhIHQpLmNhcGFjaXR5XG4gIGxldCBpc19mdWxsIHQgPSBNZXRhZGF0YS5pc19mdWxsIChtZXRhZGF0YSB0KVxuXG4gIGxldCB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0IG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggPVxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBtZXRhZGF0YS5maXJzdF9mcmVlO1xuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gSGVhZGVyLmZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aGVhZGVyX2luZGV4XG4gIDs7XG5cbiAgbGV0IHNldF9tZXRhZGF0YSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSBtZXRhZGF0YSA9XG4gICAgVW5pZm9ybV9hcnJheS5zZXQgdCBtZXRhZGF0YV9pbmRleCAoT2JqLnJlcHIgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hcnJheSAodHlwZSBzbG90cykgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkgOiBzbG90cyB0ID1cbiAgICBsZXQgdCA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlX29ial9hcnJheSB+bGVuOihNZXRhZGF0YS5hcnJheV9sZW5ndGggbWV0YWRhdGEpIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGE7XG4gICAgdFxuICA7O1xuXG4gICgqIEluaXRpYWxpemUgdHVwbGVzIG51bWJlcmVkIGZyb20gW2xvXSAoaW5jbHVzaXZlKSB1cCB0byBbaGldIChleGNsdXNpdmUpLiAgRm9yIGVhY2hcbiAgICAgdHVwbGUsIHRoaXMgcHV0cyBkdW1teSB2YWx1ZXMgaW4gdGhlIHR1cGxlJ3Mgc2xvdHMgYW5kIGFkZHMgdGhlIHR1cGxlIHRvIHRoZSBmcmVlXG4gICAgIGxpc3QuICopXG4gIGxldCB1bnNhZmVfaW5pdF9yYW5nZSB0IG1ldGFkYXRhIH5sbyB+aGkgPVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICBmb3IgdHVwbGVfbnVtID0gbG8gdG8gaGkgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgIH5kc3Q6dFxuICAgICAgICAgICB+ZHN0X3BvczoodHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGZvciB0dXBsZV9udW0gPSBoaSAtIDEgZG93bnRvIGxvIGRvXG4gICAgICB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdFxuICAgICAgICB0XG4gICAgICAgIG1ldGFkYXRhXG4gICAgICAgIH5oZWFkZXJfaW5kZXg6KHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgaWYgY2FwYWNpdHkgPCAwXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLmNyZWF0ZSBnb3QgaW52YWxpZCBjYXBhY2l0eVwiIGNhcGFjaXR5IFslc2V4cF9vZjogaW50XTtcbiAgICBsZXQgc2xvdHNfcGVyX3R1cGxlID0gU2xvdHMuc2xvdHNfcGVyX3R1cGxlIHNsb3RzIGluXG4gICAgbGV0IG1heF9jYXBhY2l0eSA9IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlIGluXG4gICAgaWYgY2FwYWNpdHkgPiBtYXhfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuY3JlYXRlIGdvdCB0b28gbGFyZ2UgY2FwYWNpdHlcIlxuICAgICAgICAoY2FwYWNpdHksIGBtYXggbWF4X2NhcGFjaXR5KVxuICAgICAgICBbJXNleHBfb2Y6IGludCAqIFsgYG1heCBvZiBpbnQgXV07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aCA9IDBcbiAgICAgIDsgbmV4dF9pZCA9IFR1cGxlX2lkLmluaXRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZV9hcnJheSBtZXRhZGF0YSBpblxuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQgbWV0YWRhdGEgfmxvOjAgfmhpOmNhcGFjaXR5O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlICh0eXBlIHR1cGxlKSAoc2xvdHMgOiAodHVwbGUsIF8pIFNsb3RzLnQpIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGxldCBkdW1teSA9XG4gICAgICBpZiBTbG90cy5zbG90c19wZXJfdHVwbGUgc2xvdHMgPSAxXG4gICAgICB0aGVuIFVuaWZvcm1fYXJyYXkuc2luZ2xldG9uIChPYmoucmVwciAoZHVtbXkgOiB0dXBsZSkpXG4gICAgICBlbHNlIChPYmoubWFnaWMgKGR1bW15IDogdHVwbGUpIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teTooU29tZSBkdW1teSlcbiAgOztcblxuICAoKiBQdXJnZSBhIHBvb2wgYW5kIG1ha2UgaXQgdW51c2FibGUuICopXG4gIGxldCBkZXN0cm95IHQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAoKiBXZSBjbGVhciBvdXQgYWxsIHRoZSBwb29sJ3MgZW50cmllcywgd2hpY2ggY2F1c2VzIGFsbCBwb2ludGVycyB0byBiZSBpbnZhbGlkLiAgVGhpc1xuICAgICAgIGFsc28gcHJldmVudHMgdGhlIGRlc3Ryb3llZCBwb29sIGZyb20gdW5uZWNlc3NhcmlseSBrZWVwaW5nIGhlYXAgYmxvY2tzIGFsaXZlLlxuICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byBbZnJlZV1pbmcgYWxsIHRoZSBlbnRyaWVzIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCB3ZSBtYWtlIHRoZVxuICAgICAgIGZyZWUgbGlzdCBlbXB0eSBhcyB3ZWxsLiAqKVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGZvciBpID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4IHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChPYmoucmVwciAwKVxuICAgICAgIGRvbmVcbiAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBIZWFkZXIubnVsbDtcbiAgICAgICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICAgfmRzdDp0XG4gICAgICAgICAgIH5kc3RfcG9zOihoZWFkZXJfaW5kZXggKyAxKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eSA9IDBcbiAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgOyBuZXh0X2lkID0gbWV0YWRhdGEubmV4dF9pZFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXkgPSBtZXRhZGF0YS5kdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGFcbiAgOztcblxuICBsZXRbQGNvbGRdIGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGxldCB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICA7IGNhcGFjaXR5ID0gb2xkX2NhcGFjaXR5XG4gICAgICAgIDsgbGVuZ3RoXG4gICAgICAgIDsgbmV4dF9pZFxuICAgICAgICA7IGZpcnN0X2ZyZWUgPSBfXG4gICAgICAgIDsgZHVtbXlcbiAgICAgICAgfVxuICAgICAgPVxuICAgICAgbWV0YWRhdGEgdFxuICAgIGluXG4gICAgbGV0IGNhcGFjaXR5ID1cbiAgICAgIG1pbiAobWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpIChncm93X2NhcGFjaXR5IH5jYXBhY2l0eSB+b2xkX2NhcGFjaXR5KVxuICAgIGluXG4gICAgaWYgY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuZ3JvdyBjYW5ub3QgZ3JvdyBwb29sOyBjYXBhY2l0eSBhbHJlYWR5IGF0IG1heGltdW1cIlxuICAgICAgICBjYXBhY2l0eVxuICAgICAgICBbJXNleHBfb2Y6IGludF07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aFxuICAgICAgOyBuZXh0X2lkXG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQnID0gY3JlYXRlX2FycmF5IG1ldGFkYXRhIGluXG4gICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICB+c3JjOnRcbiAgICAgIH5zcmNfcG9zOnN0YXJ0X29mX3R1cGxlc19pbmRleFxuICAgICAgfmRzdDp0J1xuICAgICAgfmRzdF9wb3M6c3RhcnRfb2ZfdHVwbGVzX2luZGV4XG4gICAgICB+bGVuOihvbGRfY2FwYWNpdHkgKiBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YSk7XG4gICAgZGVzdHJveSB0O1xuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQnIG1ldGFkYXRhIH5sbzpvbGRfY2FwYWNpdHkgfmhpOmNhcGFjaXR5O1xuICAgIGZvciB0dXBsZV9udW0gPSBvbGRfY2FwYWNpdHkgLSAxIGRvd250byAwIGRvXG4gICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQnIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgIGlmIG5vdCAoSGVhZGVyLmlzX3VzZWQgaGVhZGVyKVxuICAgICAgdGhlbiB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0JyBtZXRhZGF0YSB+aGVhZGVyX2luZGV4XG4gICAgZG9uZTtcbiAgICB0J1xuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfbWFsbG9jX2Z1bGwgdCA9XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLm1hbGxvYyBvZiBmdWxsIHBvb2xcIiB0IFslc2V4cF9vZjogXyB0XVxuICA7O1xuXG4gIGxldCBtYWxsb2MgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgOiBzbG90cyBQb2ludGVyLnQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBsZXQgZmlyc3RfZnJlZSA9IG1ldGFkYXRhLmZpcnN0X2ZyZWUgaW5cbiAgICBpZiBIZWFkZXIuaXNfbnVsbCBmaXJzdF9mcmVlIHRoZW4gcmFpc2VfbWFsbG9jX2Z1bGwgdDtcbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gSGVhZGVyLm5leHRfZnJlZV9oZWFkZXJfaW5kZXggZmlyc3RfZnJlZSBpblxuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXg7XG4gICAgbWV0YWRhdGEubGVuZ3RoIDwtIG1ldGFkYXRhLmxlbmd0aCArIDE7XG4gICAgbGV0IHR1cGxlX2lkID0gbWV0YWRhdGEubmV4dF9pZCBpblxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCAoSGVhZGVyLnVzZWQgdHVwbGVfaWQpO1xuICAgIG1ldGFkYXRhLm5leHRfaWQgPC0gVHVwbGVfaWQubmV4dCB0dXBsZV9pZDtcbiAgICBQb2ludGVyLmNyZWF0ZSB+aGVhZGVyX2luZGV4IHR1cGxlX2lkXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIG1ldGFkYXRhLmxlbmd0aCA8LSBtZXRhZGF0YS5sZW5ndGggLSAxO1xuICAgIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQgbWV0YWRhdGEgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcik7XG4gICAgbWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHBvcyA9IFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIC0gMSBkb1xuICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgKHBvcyArIGkpXG4gICAgICBkb25lXG4gICAgfCBTb21lIGR1bW15IC0+XG4gICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9ibGl0XG4gICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICB+ZHN0OnRcbiAgICAgICAgfmRzdF9wb3M6KFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBmcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgKCogQ2hlY2sgW3BvaW50ZXJfaXNfdmFsaWRdIHRvOlxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIG51bGwgcG9pbnRlclxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIGZyZWUgcG9pbnRlciAodGhpcyB3b3VsZCBsZWFkIHRvIGEgcG9vbCBpbmNvbnNpc3RlbmN5KVxuICAgICAgIC0gYmUgYWJsZSB0byB1c2UgdW5zYWZlIGZ1bmN0aW9ucyBhZnRlci4gKilcbiAgICBpZiBub3QgKHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5mcmVlIG9mIGludmFsaWQgcG9pbnRlclwiXG4gICAgICAgIChwb2ludGVyLCB0KVxuICAgICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50ICogXyB0XTtcbiAgICB1bnNhZmVfZnJlZSB0IHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzIgdCBhMCBhMSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTMpIChPYmoucmVwciBhMTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEzKSAoT2JqLnJlcHIgYTEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTQpIChPYmoucmVwciBhMTMpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgZ2V0IHQgcCBzbG90ID0gT2JqLm9iaiAoVW5pZm9ybV9hcnJheS5nZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkpXG5cbiAgbGV0IHVuc2FmZV9nZXQgdCBwIHNsb3QgPVxuICAgIE9iai5vYmogKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSlcbiAgOztcblxuICBsZXQgc2V0IHQgcCBzbG90IHggPSBVbmlmb3JtX2FycmF5LnNldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSAoT2JqLnJlcHIgeClcblxuICBsZXQgdW5zYWZlX3NldCB0IHAgc2xvdCB4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkgKE9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IGdldF90dXBsZSAodHlwZSB0dXBsZSkgKHQgOiAodHVwbGUsIF8pIFNsb3RzLnQgdCkgcG9pbnRlciA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGxldCBsZW4gPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgaW5cbiAgICBpZiBsZW4gPSAxXG4gICAgdGhlbiBnZXQgdCBwb2ludGVyIFNsb3QudDBcbiAgICBlbHNlXG4gICAgICAoT2JqLm1hZ2ljXG4gICAgICAgICAoVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOihQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlcikgfmxlblxuICAgICAgICAgIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgICAgIDogdHVwbGUpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb29sXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb29sXG5cbiAgbGV0IGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgPSBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15Ok5vbmVcbmVuZFxuXG5tb2R1bGUgRGVidWcgKFBvb2wgOiBTKSA9IHN0cnVjdFxuICBvcGVuIFBvb2xcblxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBsZXQgcHJlZml4ID0gXCJQb29sLlwiIGluXG4gICAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciB0cyB+ZjooaW52YXJpYW50IGlnbm9yZSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXMgdGhlbiBEZWJ1Zy5lcHJpbnRzIChjb25jYXQgWyBwcmVmaXg7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIERlYnVnLmVwcmludHNcbiAgICAgICAgKGNvbmNhdCBbIHByZWZpeDsgbmFtZTsgXCIgcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgb3BlbiBQb2ludGVyXG5cbiAgICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBsZXQgcGh5c19jb21wYXJlIHQxIHQyID1cbiAgICAgIGRlYnVnXG4gICAgICAgIFwiUG9pbnRlci5waHlzX2NvbXBhcmVcIlxuICAgICAgICBbXVxuICAgICAgICAodDEsIHQyKVxuICAgICAgICBbJXNleHBfb2Y6IF8gdCAqIF8gdF1cbiAgICAgICAgWyVzZXhwX29mOiBpbnRdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19jb21wYXJlIHQxIHQyKVxuICAgIDs7XG5cbiAgICBsZXQgcGh5c19lcXVhbCB0MSB0MiA9XG4gICAgICBkZWJ1Z1xuICAgICAgICBcIlBvaW50ZXIucGh5c19lcXVhbFwiXG4gICAgICAgIFtdXG4gICAgICAgICh0MSwgdDIpXG4gICAgICAgIFslc2V4cF9vZjogXyB0ICogXyB0XVxuICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19lcXVhbCB0MSB0MilcbiAgICA7O1xuXG4gICAgbGV0IGlzX251bGwgdCA9XG4gICAgICBkZWJ1ZyBcIlBvaW50ZXIuaXNfbnVsbFwiIFtdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19udWxsIHQpXG4gICAgOztcblxuICAgIGxldCBudWxsID0gbnVsbFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBvcGVuIElkXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgbGV0IG9mX2ludDYzIGkgPVxuICAgICAgICBkZWJ1ZyBcIlBvaW50ZXIuSWQub2ZfaW50NjNcIiBbXSBpIFslc2V4cF9vZjogSW50NjMudF0gWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgb2ZfaW50NjMgaSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID1cbiAgICAgICAgZGVidWcgXCJQb2ludGVyLklkLnRvX2ludDYzXCIgW10gdCBbJXNleHBfb2Y6IHRdIFslc2V4cF9vZjogSW50NjMudF0gKGZ1biAoKSAtPlxuICAgICAgICAgIHRvX2ludDYzIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyID1cbiAgICBkZWJ1Z1xuICAgICAgXCJpZF9vZl9wb2ludGVyXCJcbiAgICAgIFsgdCBdXG4gICAgICBwb2ludGVyXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnRdXG4gICAgICAoZnVuICgpIC0+IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBkZWJ1Z1xuICAgICAgXCJwb2ludGVyX29mX2lkX2V4blwiXG4gICAgICBbIHQgXVxuICAgICAgaWRcbiAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50XVxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIChmdW4gKCkgLT4gcG9pbnRlcl9vZl9pZF9leG4gdCBpZClcbiAgOztcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgPVxuICAgIGRlYnVnXG4gICAgICBcInBvaW50ZXJfaXNfdmFsaWRcIlxuICAgICAgWyB0IF1cbiAgICAgIHBvaW50ZXJcbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAoZnVuICgpIC0+IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgZGVidWcgXCJjcmVhdGVcIiBbXSBjYXBhY2l0eSBbJXNleHBfb2Y6IGludF0gWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15KVxuICA7O1xuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgZGVidWcgXCJtYXhfY2FwYWNpdHlcIiBbXSBzbG90c19wZXJfdHVwbGUgWyVzZXhwX29mOiBpbnRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+XG4gICAgICBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgOztcblxuICBsZXQgY2FwYWNpdHkgdCA9XG4gICAgZGVidWcgXCJjYXBhY2l0eVwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+IGNhcGFjaXR5IHQpXG4gIDs7XG5cbiAgbGV0IGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGRlYnVnXG4gICAgICBcImdyb3dcIlxuICAgICAgWyB0IF1cbiAgICAgIChgY2FwYWNpdHkgY2FwYWNpdHkpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNhcGFjaXR5IG9mIGludCBvcHRpb24gXV1cbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICAgICAgKGZ1biAoKSAtPiBncm93ID9jYXBhY2l0eSB0KVxuICA7O1xuXG4gIGxldCBpc19mdWxsIHQgPVxuICAgIGRlYnVnIFwiaXNfZnVsbFwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19mdWxsIHQpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgZGVidWcgXCJ1bnNhZmVfZnJlZVwiIFsgdCBdIHAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+XG4gICAgICB1bnNhZmVfZnJlZSB0IHApXG4gIDs7XG5cbiAgbGV0IGZyZWUgdCBwID1cbiAgICBkZWJ1ZyBcImZyZWVcIiBbIHQgXSBwIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPiBmcmVlIHQgcClcbiAgOztcblxuICBsZXQgZGVidWdfbmV3IHQgZiA9IGRlYnVnIFwibmV3XCIgWyB0IF0gKCkgWyVzZXhwX29mOiB1bml0XSBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBmXG4gIGxldCBuZXcxIHQgYTAgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEgdCBhMClcbiAgbGV0IG5ldzIgdCBhMCBhMSA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXczIHQgYTAgYTEgYTIpXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzQgdCBhMCBhMSBhMiBhMylcbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUpXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNilcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOClcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5KVxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSlcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyKVxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcblxuICBsZXQgZ2V0X3R1cGxlIHQgcG9pbnRlciA9XG4gICAgZGVidWcgXCJnZXRfdHVwbGVcIiBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogX10gKGZ1biAoKSAtPlxuICAgICAgZ2V0X3R1cGxlIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgZGVidWdfZ2V0IG5hbWUgZiB0IHBvaW50ZXIgPVxuICAgIGRlYnVnIG5hbWUgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IF9dIChmdW4gKCkgLT4gZiB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGdldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcImdldFwiIGdldCB0IHBvaW50ZXIgc2xvdFxuICBsZXQgdW5zYWZlX2dldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcInVuc2FmZV9nZXRcIiB1bnNhZmVfZ2V0IHQgcG9pbnRlciBzbG90XG5cbiAgbGV0IGRlYnVnX3NldCBuYW1lIGYgdCBwb2ludGVyIHNsb3QgYSA9XG4gICAgZGVidWcgbmFtZSBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPlxuICAgICAgZiB0IHBvaW50ZXIgc2xvdCBhKVxuICA7O1xuXG4gIGxldCBzZXQgdCBwb2ludGVyIHNsb3QgYSA9IGRlYnVnX3NldCBcInNldFwiIHNldCB0IHBvaW50ZXIgc2xvdCBhXG4gIGxldCB1bnNhZmVfc2V0IHQgcG9pbnRlciBzbG90IGEgPSBkZWJ1Z19zZXQgXCJ1bnNhZmVfc2V0XCIgdW5zYWZlX3NldCB0IHBvaW50ZXIgc2xvdCBhXG5lbmRcblxubW9kdWxlIEVycm9yX2NoZWNrIChQb29sIDogUykgPSBzdHJ1Y3RcbiAgb3BlbiBQb29sXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7IG11dGFibGUgaXNfdmFsaWQgOiBib29sXG4gICAgICA7IHBvaW50ZXIgOiAnc2xvdHMgUG9pbnRlci50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGxldCBjcmVhdGUgcG9pbnRlciA9IHsgaXNfdmFsaWQgPSB0cnVlOyBwb2ludGVyIH1cbiAgICBsZXQgbnVsbCAoKSA9IHsgaXNfdmFsaWQgPSBmYWxzZTsgcG9pbnRlciA9IFBvaW50ZXIubnVsbCAoKSB9XG4gICAgbGV0IHBoeXNfY29tcGFyZSB0MSB0MiA9IFBvaW50ZXIucGh5c19jb21wYXJlIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBwaHlzX2VxdWFsIHQxIHQyID0gUG9pbnRlci5waHlzX2VxdWFsIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBpc19udWxsIHQgPSBQb2ludGVyLmlzX251bGwgdC5wb2ludGVyXG5cbiAgICBsZXQgZm9sbG93IHQgPVxuICAgICAgaWYgbm90IHQuaXNfdmFsaWRcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIHVzZSBpbnZhbGlkIHBvaW50ZXJcIiB0IFslc2V4cF9vZjogXyB0XTtcbiAgICAgIHQucG9pbnRlclxuICAgIDs7XG5cbiAgICBsZXQgaW52YWxpZGF0ZSB0ID0gdC5pc192YWxpZCA8LSBmYWxzZVxuXG4gICAgbW9kdWxlIElkID0gUG9pbnRlci5JZFxuICBlbmRcblxuICB0eXBlICdzbG90cyB0ID0gJ3Nsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH0gPVxuICAgIGlzX3ZhbGlkICYmIHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyXG4gIDs7XG5cbiAgKCogV2UgZG9uJ3QgZG8gW1BvaW50ZXIuZm9sbG93IHBvaW50ZXJdLCBiZWNhdXNlIHRoYXQgd291bGQgZGlzYWxsb3cgW2lkX29mX3BvaW50ZXIgdFxuICAgICAoUG9pbnRlci5udWxsICgpKV0uICopXG4gIGxldCBpZF9vZl9wb2ludGVyIHQgcG9pbnRlciA9IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyLlBvaW50ZXIucG9pbnRlclxuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBsZXQgcG9pbnRlciA9IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgaW5cbiAgICBsZXQgaXNfdmFsaWQgPSBQb29sLnBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyIGluXG4gICAgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH1cbiAgOztcblxuICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5XG4gIGxldCBtYXhfY2FwYWNpdHkgPSBtYXhfY2FwYWNpdHlcbiAgbGV0IGdyb3cgPSBncm93XG4gIGxldCBpc19mdWxsID0gaXNfZnVsbFxuICBsZXQgZ2V0X3R1cGxlIHQgcCA9IGdldF90dXBsZSB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgZ2V0IHQgcCA9IGdldCB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgdW5zYWZlX2dldCB0IHAgPSB1bnNhZmVfZ2V0IHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCBzZXQgdCBwIHNsb3QgdiA9IHNldCB0IChQb2ludGVyLmZvbGxvdyBwKSBzbG90IHZcbiAgbGV0IHVuc2FmZV9zZXQgdCBwIHNsb3QgdiA9IHVuc2FmZV9zZXQgdCAoUG9pbnRlci5mb2xsb3cgcCkgc2xvdCB2XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgdW5zYWZlX2ZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgZnJlZSB0IHAgPVxuICAgIGZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MSB0IGEwKVxuICBsZXQgbmV3MiB0IGEwIGExID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MyB0IGEwIGExIGEyKVxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NCB0IGEwIGExIGEyIGEzKVxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1KVxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2KVxuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTgpXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkpXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEpXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIpXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcbmVuZFxuIiwiKCogQmUgc3VyZSBhbmQgZmlyc3QgcmVhZCB0aGUgaW1wbGVtZW50YXRpb24gb3ZlcnZpZXcgaW4gdGltaW5nX3doZWVsX2ludGYubWwuXG5cbiAgIEEgdGltaW5nIHdoZWVsIGlzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIFwibGV2ZWxzXCIsIHdoZXJlIGVhY2ggbGV2ZWwgaXMgYW4gYXJyYXkgb2ZcbiAgIFwic2xvdHNcIi4gIEVhY2ggc2xvdCByZXByZXNlbnRzIGEgcmFuZ2Ugb2Yga2V5cywgYW5kIGhvbGRzIGVsZW1lbnRzIGFzc29jaWF0ZWQgd2l0aFxuICAgdGhvc2Uga2V5cy4gIEVhY2ggbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSB0d28gcGFyYW1ldGVyczogW2JpdHNdLCB0aGUgbnVtYmVyIG9mIGtleSBiaXRzXG4gICB0aGF0IHRoYXQgbGV2ZWwgaXMgcmVzcG9uc2libGUgZm9yIGRpc3Rpbmd1aXNoaW5nLCBhbmQgW2JpdHNfcGVyX3Nsb3RdLCB0aGUgc2l6ZSBvZiB0aGVcbiAgIHJhbmdlIG9mIGtleXMgdGhhdCBjb3JyZXNwb25kIHRvIGEgc2luZ2xlIHNsb3QgaW4gdGhlIGFycmF5LiAgQ29uY2VwdHVhbGx5LCBlYWNoIGxldmVsXG4gICBicmVha3MgdXAgYWxsIHBvc3NpYmxlIGtleXMgaW50byByYW5nZXMgb2Ygc2l6ZSBbMl5iaXRzX3Blcl9zbG90XS4gIFRoZSBsZW5ndGggb2YgYVxuICAgbGV2ZWwgYXJyYXkgaXMgWzJeYml0c10sIGFuZCB0aGUgYXJyYXkgaXMgdXNlZCBsaWtlIGEgY2lyY3VsYXIgYnVmZmVyIHRvIHRyYXZlcnNlIHRoZVxuICAgcmFuZ2VzIGFzIHRoZSB0aW1pbmcgd2hlZWwncyBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMuICBBIGtleSBba10sIGlmIHN0b3JlZCBpbiB0aGVcbiAgIGxldmVsLCBpcyBzdG9yZWQgYXQgaW5kZXggWyhrIC8gMl5iaXRzX3Blcl9zbG90KSBtb2QgMl5iaXRzXS5cblxuICAgVGhlIHNldHRpbmdzIG9mIHRoZSBbYml0c10gdmFsdWVzIGFyZSBjb25maWd1cmFibGUgYnkgdXNlciBjb2RlIHVzaW5nIFtMZXZlbF9iaXRzXSxcbiAgIGFsdGhvdWdoIHRoZXJlIGlzIGEgcmVhc29uYWJsZSBkZWZhdWx0IHNldHRpbmcuICBHaXZlbiB0aGUgW2JpdHNdIHZhbHVlcywgdGhlXG4gICBbYml0c19wZXJfc2xvdF0gYXJlIGNob3NlbiBzbyB0aGF0IFtiaXRzX3Blcl9zbG90XSBhdCBsZXZlbCBbaV0gaXMgdGhlIHN1bSBvZiB0aGVcbiAgIFtiaXRzXSBhdCBhbGwgbG93ZXIgbGV2ZWxzLiAgVGh1cywgYSBzbG90J3MgcmFuZ2UgYXQgbGV2ZWwgW2ldIGlzIGFzIGxhcmdlIGFzIHRoZVxuICAgZW50aXJlIHJhbmdlIG9mIHRoZSBhcnJheSBhdCBsZXZlbCBbaSAtIDFdLlxuXG4gICBFYWNoIGxldmVsIGhhcyBhIFttaW5fYWxsb3dlZF9rZXldIGFuZCBhIFttYXhfYWxsb3dlZF9rZXldIHRoYXQgZGV0ZXJtaW5lIHRoZSByYW5nZSBvZlxuICAga2V5cyB0aGF0IGl0IGN1cnJlbnRseSByZXByZXNlbnRzLiAgVGhlIGNydWNpYWwgaW52YXJpYW50IG9mIHRoZSB0aW1pbmcgd2hlZWwgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRoYXQgdGhlIFttaW5fYWxsb3dlZF9rZXldIGF0IGxldmVsIFtpXSBpcyBubyBtb3JlIHRoYW4gdGhlXG4gICBbbWF4X2FsbG93ZWRfa2V5ICsgMV0gb2YgbGV2ZWwgW2kgLSAxXS4gIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBsZXZlbHMgY2FuIHJlcHJlc2VudCBhbGxcbiAgIGtleXMgZnJvbSB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgdGhlIGxvd2VzdCBsZXZlbCB0byB0aGUgW21heF9hbGxvd2VkX2tleV0gb2YgdGhlXG4gICBoaWdoZXN0IGxldmVsLiAgVGhlIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciByZXN0b3JpbmdcbiAgIHRoaXMgaW52YXJpYW50LlxuXG4gICBBdCBsZXZlbCAwLCBbYml0c19wZXJfc2xvdCA9IDBdLCBhbmQgc28gdGhlIHNpemUgb2YgZWFjaCBzbG90IGlzIFsxXS4gIFRoYXQgaXMsIGxldmVsIDBcbiAgIHByZWNpc2VseSBkaXN0aW5ndWlzaGVzIGFsbCB0aGUga2V5cyBiZXR3ZWVuIGl0cyBbbWluX2FsbG93ZWRfa2V5XSAod2hpY2ggaXMgdGhlIHNhbWVcbiAgIGFzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiB0aGUgZW50aXJlIHRpbWluZyB3aGVlbCkgYW5kIFttYXhfYWxsb3dlZF9rZXldLiAgQXMgdGhlXG4gICBsZXZlbHMgaW5jcmVhc2UsIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMsIHRoZSBbYml0c19wZXJfc2xvdF0gaW5jcmVhc2VzLCBhbmRcbiAgIHRoZSByYW5nZSBvZiBrZXlzIHN0b3JlZCBpbiB0aGUgbGV2ZWwgaW5jcmVhc2VzIChkcmFtYXRpY2FsbHkpLlxuXG4gICBUaGUgaWRlYSBvZiB0aGUgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byB0aGUgaGllcmFyY2hpY2FsIGFwcHJvYWNoIGRlc2NyaWJlZCBpbjpcblxuICAge3ZcbiAgICAgSGFzaGVkIGFuZCBIaWVyYXJjaGljYWwgVGltaW5nIFdoZWVsczpcbiAgICAgRWZmaWNpZW50IERhdGEgU3RydWN0dXJlcyBmb3IgSW1wbGVtZW50aW5nIGEgVGltZXIgRmFjaWxpdHlcblxuICAgICBWYXJnaGVzZSAmIExhdWNrLCAxOTk2XG4gICB2fVxuXG4gICBIb3dldmVyLCB0aGUgY29kZSBpcyBjb21wbGV0ZWx5IG5ldy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBUaW1pbmdfd2hlZWxfaW50ZlxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbmxldCBzZXhwX29mX3Rfc3R5bGUgOiBbIGBQcmV0dHkgfCBgSW50ZXJuYWwgXSByZWYgPSByZWYgYFByZXR0eVxuXG4oKiBbe21heCxtaW59X3RpbWVdIGFyZSBib3VuZHMgb24gdGhlIHRpbWVzIHN1cHBvcnRlZCBieSBhIHRpbWluZyB3aGVlbC4gKilcblxubGV0IG1heF90aW1lID0gVGltZV9ucy5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1pbl90aW1lID0gVGltZV9ucy5lcG9jaFxuXG5tb2R1bGUgTnVtX2tleV9iaXRzIDogc2lnXG4gIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHplcm8gOiB0XG5cbiAgKCogdmFsIG1pbl92YWx1ZSA6IHQgKilcblxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cyIDogdCAtPiBJbnQ2My50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRcblxuICBsZXQgbWluX3ZhbHVlID0gMFxuXG4gICgqKiBXZSBzdXBwb3J0IGFsbCBub24tbmVnYXRpdmUgW1RpbWVfbnMudF0gdmFsdWVzLiAqKVxuICBsZXQgbWF4X3ZhbHVlID0gSW50NjMubnVtX2JpdHMgLSAxXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQgPj0gbWluX3ZhbHVlKTtcbiAgICBhc3NlcnQgKHQgPD0gbWF4X3ZhbHVlKVxuICA7O1xuXG4gIGxldCBvZl9pbnQgaSA9XG4gICAgaW52YXJpYW50IGk7XG4gICAgaVxuICA7O1xuXG4gIGxldCAoICsgKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSArIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCAoIC0gKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSAtIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBwb3cyIHQgPSBJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSB0XG5lbmRcblxubW9kdWxlIExldmVsX2JpdHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTnVtX2tleV9iaXRzLnQgbGlzdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBtYXhfbnVtX2JpdHMgPSAoTnVtX2tleV9iaXRzLm1heF92YWx1ZSA6PiBpbnQpXG4gIGxldCBudW1fYml0c19pbnRlcm5hbCB0ID0gTGlzdC5mb2xkIHQgfmluaXQ6TnVtX2tleV9iaXRzLnplcm8gfmY6TnVtX2tleV9iaXRzLiggKyApXG4gIGxldCBudW1fYml0cyB0ID0gKG51bV9iaXRzX2ludGVybmFsIHQgOj4gaW50KVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0IChub3QgKExpc3QuaXNfZW1wdHkgdCkpO1xuICAgIExpc3QuaXRlciB0IH5mOihmdW4gbnVtX2tleV9iaXRzIC0+XG4gICAgICBOdW1fa2V5X2JpdHMuaW52YXJpYW50IG51bV9rZXlfYml0cztcbiAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIG51bV9rZXlfYml0cyBOdW1fa2V5X2JpdHMuemVybykpO1xuICAgIE51bV9rZXlfYml0cy5pbnZhcmlhbnQgKG51bV9iaXRzX2ludGVybmFsIHQpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgdCA9IHNleHAgfD4gWyVvZl9zZXhwOiB0XSBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biA/KGV4dGVuZF90b19tYXhfbnVtX2JpdHMgPSBmYWxzZSkgaW50cyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSBpbnRzIHRoZW4gZmFpbHdpdGggXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gcmVxdWlyZXMgYSBub25lbXB0eSBsaXN0XCI7XG4gICAgaWYgTGlzdC5leGlzdHMgaW50cyB+ZjooZnVuIGJpdHMgLT4gYml0cyA8PSAwKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCBub25wb3NpdGl2ZSBudW0gYml0c1wiIH5fOihpbnRzIDogaW50IGxpc3QpXTtcbiAgICBsZXQgbnVtX2JpdHMgPSBMaXN0LmZvbGQgaW50cyB+aW5pdDowIH5mOiggKyApIGluXG4gICAgaWYgbnVtX2JpdHMgPiBtYXhfbnVtX2JpdHNcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCB0b28gbWFueSBiaXRzXCJcbiAgICAgICAgICAgIH5fOihpbnRzIDogaW50IGxpc3QpXG4gICAgICAgICAgICB+Z290OihudW1fYml0cyA6IGludClcbiAgICAgICAgICAgIChtYXhfbnVtX2JpdHMgOiBpbnQpXTtcbiAgICBsZXQgaW50cyA9XG4gICAgICBpZiBleHRlbmRfdG9fbWF4X251bV9iaXRzXG4gICAgICB0aGVuIGludHMgQCBMaXN0LmluaXQgKG1heF9udW1fYml0cyAtIG51bV9iaXRzKSB+ZjooY29uc3QgMSlcbiAgICAgIGVsc2UgaW50c1xuICAgIGluXG4gICAgTGlzdC5tYXAgaW50cyB+ZjpOdW1fa2V5X2JpdHMub2ZfaW50XG4gIDs7XG5cbiAgbGV0IGRlZmF1bHQgPSBjcmVhdGVfZXhuIFsgMTE7IDEwOyAxMDsgMTA7IDEwOyAxMDsgMSBdXG5cbiAgbGV0IHRyaW0gdCB+bWF4X251bV9iaXRzID1cbiAgICBpZiBOdW1fa2V5X2JpdHMuKCA8PSApIChudW1fYml0c19pbnRlcm5hbCB0KSBtYXhfbnVtX2JpdHNcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCB0IH5yZW1haW5pbmcgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IGIgOjogdCAtPlxuICAgICAgICAgIGlmIE51bV9rZXlfYml0cy4oID49ICkgYiByZW1haW5pbmdcbiAgICAgICAgICB0aGVuIFsgcmVtYWluaW5nIF1cbiAgICAgICAgICBlbHNlIGIgOjogbG9vcCB0IH5yZW1haW5pbmc6KE51bV9rZXlfYml0cy4oIC0gKSByZW1haW5pbmcgYilcbiAgICAgIGluXG4gICAgICBsb29wIHQgfnJlbWFpbmluZzptYXhfbnVtX2JpdHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA6IHNpZ1xuICBpbmNsdWRlIEFsYXJtX3ByZWNpc2lvblxuXG4gIHZhbCBudW1fa2V5X2JpdHMgOiB0IC0+IE51bV9rZXlfYml0cy50XG4gIHZhbCBpbnRlcnZhbF9udW0gOiB0IC0+IFRpbWVfbnMudCAtPiBJbnQ2My50XG4gIHZhbCBpbnRlcnZhbF9udW1fc3RhcnQgOiB0IC0+IEludDYzLnQgLT4gVGltZV9ucy50XG5lbmQgPSBzdHJ1Y3RcbiAgKCoqIFt0XSBpcyByZXByZXNlbnRlZCBhcyB0aGUgbG9nMiBvZiBhIG51bWJlciBvZiBuYW5vc2Vjb25kcy4gKilcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBsZXQgbnVtX2tleV9iaXRzIHQgPSB0IHw+IE51bV9rZXlfYml0cy5vZl9pbnRcblxuICBsZXQgdG9fc3BhbiB0ID1cbiAgICBpZiB0IDwgMFxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbQWxhcm1fcHJlY2lzaW9uLnRvX3NwYW5dIG9mIG5lZ2F0aXZlIHBvd2VyIG9mIHR3byBuYW5vc2Vjb25kc1wiIH5fOih0IDogaW50KV07XG4gICAgSW50NjMuKHNoaWZ0X2xlZnQgb25lKSB0IHw+IFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCB8PiB0b19zcGFuIDogVGltZV9ucy5TcGFuLnQpXVxuICBsZXQgb25lX25hbm9zZWNvbmQgPSAwXG4gIGxldCBhYm91dF9vbmVfbWljcm9zZWNvbmQgPSAxMFxuICBsZXQgYWJvdXRfb25lX21pbGxpc2Vjb25kID0gMjBcbiAgbGV0IGFib3V0X29uZV9zZWNvbmQgPSAzMFxuICBsZXQgYWJvdXRfb25lX2RheSA9IDQ2XG4gIGxldCBtdWwgdCB+cG93MiA9IHQgKyBwb3cyXG4gIGxldCBkaXYgdCB+cG93MiA9IHQgLSBwb3cyXG4gIGxldCBpbnRlcnZhbF9udW0gdCB0aW1lID0gSW50NjMuc2hpZnRfcmlnaHQgKHRpbWUgfD4gVGltZV9ucy50b19pbnQ2M19uc19zaW5jZV9lcG9jaCkgdFxuXG4gIGxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICAgIEludDYzLnNoaWZ0X2xlZnQgaW50ZXJ2YWxfbnVtIHQgfD4gVGltZV9ucy5vZl9pbnQ2M19uc19zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBvZl9zcGFuX2Zsb29yX3BvdzJfbnMgc3BhbiA9XG4gICAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltBbGFybV9wcmVjaXNpb24ub2Zfc3Bhbl9mbG9vcl9wb3cyX25zXSBnb3Qgbm9uLXBvc2l0aXZlIHNwYW5cIlxuICAgICAgICAgICAgKHNwYW4gOiBUaW1lX25zLlNwYW4udCldO1xuICAgIHNwYW4gfD4gVGltZV9ucy5TcGFuLnRvX2ludDYzX25zIHw+IEludDYzLmZsb29yX2xvZzJcbiAgOztcblxuICBsZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuXG4gIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zcGFuXG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3NwYW5cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoVGltZV9ucy5TcGFuKSAoVClcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlIChUaW1lX25zLlNwYW4pIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBsZXZlbF9iaXRzX2RlZmF1bHQgPSBMZXZlbF9iaXRzLmRlZmF1bHRcblxuICB0eXBlIHQgPVxuICAgIHsgYWxhcm1fcHJlY2lzaW9uIDogQWxhcm1fcHJlY2lzaW9uLlVuc3RhYmxlLnRcbiAgICA7IGxldmVsX2JpdHMgOiBMZXZlbF9iaXRzLnQgW0BkZWZhdWx0IGxldmVsX2JpdHNfZGVmYXVsdF1cbiAgICA7IGNhcGFjaXR5IDogaW50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBhbGFybV9wcmVjaXNpb24gdCA9IEFsYXJtX3ByZWNpc2lvbi50b19zcGFuIHQuYWxhcm1fcHJlY2lzaW9uXG5cbiAgKCogW21heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb25dIHJldHVybnMgdGhlIG51bWJlciBvZiBsZXZlbCBiaXRzIG5lZWRlZCBmb3IgYVxuICAgICB0aW1pbmcgd2hlZWwgd2l0aCB0aGUgc3BlY2lmaWVkIFthbGFybV9wcmVjaXNpb25dIHRvIGJlIGFibGUgdG8gcmVwcmVzZW50IGFsbFxuICAgICBwb3NzaWJsZSB0aW1lcyBmcm9tIFtUaW1lX25zLmVwb2NoXSBvbndhcmQuICBTaW5jZSBub24tbmVnYXRpdmUgdGltZXMgaGF2ZSA2MiBiaXRzLFxuICAgICB3ZSByZXF1aXJlIFtMIDw9IDYyIC0gQV0sIHdoZXJlIFtBXSBpcyB0aGUgbnVtYmVyIG9mIGFsYXJtIGJpdHMgYW5kIFtMXSBpcyB0aGVcbiAgICAgbnVtYmVyIG9mIGxldmVsIGJpdHMuICopXG4gIGxldCBtYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uID1cbiAgICBOdW1fa2V5X2JpdHMuKCAtIClcbiAgICAgIE51bV9rZXlfYml0cy5tYXhfdmFsdWVcbiAgICAgIChBbGFybV9wcmVjaXNpb24ubnVtX2tleV9iaXRzIGFsYXJtX3ByZWNpc2lvbilcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgTnVtX2tleV9iaXRzLiggPD0gKVxuICAgICAgICAgIChMZXZlbF9iaXRzLm51bV9iaXRzX2ludGVybmFsIHQubGV2ZWxfYml0cylcbiAgICAgICAgICAobWF4X251bV9sZXZlbF9iaXRzIHQuYWxhcm1fcHJlY2lzaW9uKSk7XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5hbGFybV9wcmVjaXNpb246aWdub3JlXG4gICAgICAgIH5jYXBhY2l0eTppZ25vcmVcbiAgICAgICAgfmxldmVsX2JpdHM6KGNoZWNrIExldmVsX2JpdHMuaW52YXJpYW50KSlcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/KGxldmVsX2JpdHMgPSBsZXZlbF9iaXRzX2RlZmF1bHQpIH5hbGFybV9wcmVjaXNpb24gKCkgPVxuICAgIGxldCBsZXZlbF9iaXRzID1cbiAgICAgIExldmVsX2JpdHMudHJpbSBsZXZlbF9iaXRzIH5tYXhfbnVtX2JpdHM6KG1heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb24pXG4gICAgaW5cbiAgICB7IGFsYXJtX3ByZWNpc2lvbjsgbGV2ZWxfYml0czsgY2FwYWNpdHkgfVxuICA7O1xuXG4gIGxldCBtaWNyb3NlY29uZF9wcmVjaXNpb24gKCkgPVxuICAgIGNyZWF0ZVxuICAgICAgKClcbiAgICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWNyb3NlY29uZFxuICAgICAgfmxldmVsX2JpdHM6KExldmVsX2JpdHMuY3JlYXRlX2V4biBbIDEwOyAxMDsgNjsgNjsgNSBdKVxuICA7O1xuXG4gIGxldCBkdXJhdGlvbnMgdCA9XG4gICAgTGlzdC5mb2xkaW5nX21hcFxuICAgICAgdC5sZXZlbF9iaXRzXG4gICAgICB+aW5pdDooQWxhcm1fcHJlY2lzaW9uLm51bV9rZXlfYml0cyB0LmFsYXJtX3ByZWNpc2lvbiB8PiBOdW1fa2V5X2JpdHMudG9faW50KVxuICAgICAgfmY6KGZ1biBudW1fYml0c19hY2N1bSBsZXZlbF9udW1fYml0cyAtPlxuICAgICAgICBsZXQgbnVtX2JpdHNfYWNjdW0gPSBudW1fYml0c19hY2N1bSArIChsZXZlbF9udW1fYml0cyB8PiBOdW1fa2V5X2JpdHMudG9faW50KSBpblxuICAgICAgICBsZXQgZHVyYXRpb24gPVxuICAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgICAgICAgKGlmIG51bV9iaXRzX2FjY3VtID0gSW50NjMubnVtX2JpdHMgLSAxXG4gICAgICAgICAgICAgdGhlbiBJbnQ2My5tYXhfdmFsdWVcbiAgICAgICAgICAgICBlbHNlIEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzX2FjY3VtKVxuICAgICAgICBpblxuICAgICAgICBudW1fYml0c19hY2N1bSwgZHVyYXRpb24pXG4gIDs7XG5lbmRcblxuXG4oKiogVGltaW5nIHdoZWVsIGlzIGltcGxlbWVudGVkIGFzIGEgcHJpb3JpdHkgcXVldWUgaW4gd2hpY2ggdGhlIGtleXMgYXJlXG4gICAgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVydmFscyBvZiB0aW1lLiAgVGhlIHByaW9yaXR5IHF1ZXVlIGlzXG4gICAgdW5saWtlIGEgdHlwaWNhbCBwcmlvcml0eSBxdWV1ZSBpbiB0aGF0IHJhdGhlciB0aGFuIGhhdmluZyBhIFwiZGVsZXRlIG1pblwiIG9wZXJhdGlvbixcbiAgICBpdCBoYXMgYSBub25kZWNyZWFzaW5nIG1pbmltdW0gYWxsb3dlZCBrZXksIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHRpbWUsXG4gICAgYW5kIGFuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIG9wZXJhdGlvbiwgd2hpY2ggaW1wbGVtZW50cyBbYWR2YW5jZV9jbG9ja10uXG4gICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gYXMgYSBzaWRlIGVmZmVjdCByZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSB0aW1pbmdcbiAgICB3aGVlbCB3aG9zZSBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBuZXcgbWluaW11bSwgd2hpY2ggaW1wbGVtZW50cyBmaXJpbmcgdGhlIGFsYXJtc1xuICAgIHdob3NlIHRpbWUgaGFzIGV4cGlyZWQuXG5cbiAgICBBZGRpbmcgZWxlbWVudHMgdG8gYW5kIHJlbW92aW5nIGVsZW1lbnRzIGZyb20gYSB0aW1pbmcgd2hlZWwgdGFrZXMgY29uc3RhbnQgdGltZSxcbiAgICB1bmxpa2UgYSBoZWFwLWJhc2VkIHByaW9yaXR5IHF1ZXVlIHdoaWNoIHRha2VzIGxvZyhOKSwgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mXG4gICAgZWxlbWVudHMgaW4gdGhlIGhlYXAuICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byB0aGVcbiAgICBhbW91bnQgb2YgaW5jcmVhc2UgaW4gdGhlIG1pbi1hbGxvd2VkIGtleSwgYXMgY29tcGFyZWQgdG8gbG9nKE4pIGZvciBhIGhlYXAuICBJdCBpc1xuICAgIHRoZXNlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2VzIHRoYXQgbW90aXZhdGUgdGhlIGV4aXN0ZW5jZSBvZiB0aW1pbmcgd2hlZWxzIGFuZCBtYWtlXG4gICAgdGhlbSBhIGdvb2QgY2hvaWNlIGZvciBtYWludGFpbmcgYSBzZXQgb2YgYWxhcm1zLiAgV2l0aCBhIHRpbWluZyB3aGVlbCwgb25lIGNhblxuICAgIHN1cHBvcnQgYW55IG51bWJlciBvZiBhbGFybXMgcGF5aW5nIGNvbnN0YW50IG92ZXJoZWFkIHBlciBhbGFybSwgd2hpbGUgcGF5aW5nIGFcbiAgICBzbWFsbCBjb25zdGFudCBvdmVyaGVhZCBwZXIgdW5pdCBvZiB0aW1lIHBhc3NlZC5cblxuICAgIEFzIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGluY3JlYXNlcywgdGhlIHRpbWluZyB3aGVlbCBkb2VzIGEgbGF6eSByYWRpeCBzb3J0IG9mIHRoZVxuICAgIGVsZW1lbnQga2V5cywgd2l0aCBsZXZlbCAwIGhhbmRsaW5nIHRoZSBsZWFzdCBzaWduaWZpY2FudCBbYl8wXSBiaXRzIGluIGEga2V5LCBhbmRcbiAgICBlYWNoIHN1YnNlcXVlbnQgbGV2ZWwgW2ldIGhhbmRsaW5nIHRoZSBuZXh0IG1vc3Qgc2lnbmlmaWNhbnQgW2JfaV0gYml0cy4gIFRoZSBsZXZlbHNcbiAgICBob2xkIGluY3JlYXNpbmdseSBsYXJnZXIgcmFuZ2VzIG9mIGtleXMsIHdoZXJlIHRoZSB1bmlvbiBvZiBhbGwgdGhlIGxldmVscyBjYW4gaG9sZFxuICAgIGFueSBrZXkgZnJvbSBbbWluX2FsbG93ZWRfa2V5IHRdIHRvIFttYXhfYWxsb3dlZF9rZXkgdF0uICBXaGVuIGEga2V5IGlzIGFkZGVkIHRvIHRoZVxuICAgIHRpbWluZyB3aGVlbCwgaXQgaXMgYWRkZWQgYXQgdGhlIGxvd2VzdCBwb3NzaWJsZSBsZXZlbCB0aGF0IGNhbiBzdG9yZSB0aGUga2V5LiAgQXNcbiAgICB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBpbmNyZWFzZXMsIHRpbWluZy13aGVlbCBlbGVtZW50cyBtb3ZlIGRvd24gbGV2ZWxzIHVudGlsIHRoZXlcbiAgICByZWFjaCBsZXZlbCAwLCBhbmQgdGhlbiBhcmUgZXZlbnR1YWxseSByZW1vdmVkLiAgKilcbm1vZHVsZSBQcmlvcml0eV9xdWV1ZSA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgS2V5IDogSW50ZXJ2YWxfbnVtXG5cbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgICgqKiBBbiBbRWx0LnRdIHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IHdhcyBhZGRlZCB0byBhIHRpbWluZyB3aGVlbC4gKilcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBhdCA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gVGltZV9ucy50XG4gICAgdmFsIGtleSA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgdmFsdWUgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIG51bGwgOiB1bml0IC0+ICdhIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEludGVybmFsX2VsdCA6IHNpZ1xuICAgIG1vZHVsZSBQb29sIDogc2lnXG4gICAgICB0eXBlICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGtleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIG1heF9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRWx0LnRcbiAgZW5kXG5cbiAgdmFsIHBvb2wgOiAnYSB0IC0+ICdhIEludGVybmFsX2VsdC5Qb29sLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgKCoqIFtjcmVhdGUgP2xldmVsX2JpdHMgKCldIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdGltaW5nIHdoZWVsLCBbdF0sIHdpdGggW2xlbmd0aCB0ID0gMF1cbiAgICAgIGFuZCBbbWluX2FsbG93ZWRfa2V5IHQgPSAwXS4gKilcbiAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gP2xldmVsX2JpdHM6TGV2ZWxfYml0cy50IC0+IHVuaXQgLT4gJ2EgdFxuXG4gICgqKiBbbGVuZ3RoIHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdGltaW5nIHdoZWVsLiAqKVxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuXG4gICgqKiBbbWluX2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtaW5pbXVtIGtleSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gW3RdLiAgVGhpcyBvbmx5XG4gICAgICBpbmRpY2F0ZXMgdGhlIHBvc3NpYmlsaXR5OyB0aGVyZSBuZWVkIG5vdCBiZSBhbiBlbGVtZW50IFtlbHRdIGluIFt0XSB3aXRoIFtFbHQua2V5XG4gICAgICBlbHQgPSBtaW5fYWxsb3dlZF9rZXkgdF0uICBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgXCJtaW5fa2V5XCIgb3BlcmF0aW9uIGluIGFcbiAgICAgIHR5cGljYWwgcHJpb3JpdHkgcXVldWUuXG5cbiAgICAgIFttaW5fYWxsb3dlZF9rZXkgdF0gY2FuIGluY3JlYXNlIG92ZXIgdGltZSwgdmlhIGNhbGxzIHRvXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XS4gKilcbiAgdmFsIG1pbl9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gICgqKiBbbWF4X2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQga2V5IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBbdF0uICBBc1xuICAgICAgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLCBzbyBkb2VzIFttYXhfYWxsb3dlZF9rZXldOyBob3dldmVyIGl0IGlzIG5vdCB0aGUgY2FzZVxuICAgICAgdGhhdCBbbWF4X2FsbG93ZWRfa2V5IHQgLSBtaW5fYWxsb3dlZF9rZXkgdF0gaXMgYSBjb25zdGFudC4gIEl0IGlzIGd1YXJhbnRlZWQgdGhhdFxuICAgICAgW21heF9hbGxvd2VkX2tleSB0ID49IG1pbl9hbGxvd2VkX2tleSB0ICsgMl5CIC0gMV0sXG4gICAgICB3aGVyZSBbQl0gaXMgdGhlIHN1bSBvZiB0aGUgYl9pIGluIFtsZXZlbF9iaXRzXS4gKilcbiAgdmFsIG1heF9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gIHZhbCBtaW5fZWx0XyA6ICdhIHQgLT4gJ2EgSW50ZXJuYWxfZWx0LnRcbiAgdmFsIGludGVybmFsX2FkZCA6ICdhIHQgLT4ga2V5OktleS50IC0+IGF0OlRpbWVfbnMudCAtPiAnYSAtPiAnYSBJbnRlcm5hbF9lbHQudFxuXG4gICgqKiBbcmVtb3ZlIHQgZWx0XSByZW1vdmVzIFtlbHRdIGZyb20gW3RdLiAgSXQgaXMgYW4gZXJyb3IgaWYgW2VsdF0gaXMgbm90IGN1cnJlbnRseVxuICAgICAgaW4gW3RdLCBhbmQgdGhpcyBlcnJvciBtYXkgb3IgbWF5IG5vdCBiZSBkZXRlY3RlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuXG4gIHZhbCBjaGFuZ2UgOiAnYSB0IC0+ICdhIEVsdC50IC0+IGtleTpLZXkudCAtPiBhdDpUaW1lX25zLnQgLT4gdW5pdFxuXG4gICgqKiBbY2xlYXIgdF0gcmVtb3ZlcyBhbGwgZWx0cyBmcm9tIFt0XS4gKilcbiAgdmFsIGNsZWFyIDogXyB0IC0+IHVuaXRcblxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSBFbHQudCAtPiBib29sXG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgKCoqIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXkgdCB+a2V5IH5oYW5kbGVfcmVtb3ZlZF0gaW5jcmVhc2VzIHRoZSBtaW5pbXVtIGFsbG93ZWRcbiAgICAgIGtleSBpbiBbdF0gdG8gW2tleV0sIGFuZCByZW1vdmVzIGFsbCBlbGVtZW50cyB3aXRoIGtleXMgbGVzcyB0aGFuIFtrZXldLCBhcHBseWluZ1xuICAgICAgW2hhbmRsZV9yZW1vdmVkXSB0byBlYWNoIGVsZW1lbnQgdGhhdCBpcyByZW1vdmVkLiAgSWYgW2tleSA8PSBtaW5fYWxsb3dlZF9rZXkgdF0sXG4gICAgICB0aGVuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGRvZXMgbm90aGluZy4gIE90aGVyd2lzZSwgaWZcbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCBbbWluX2FsbG93ZWRfa2V5IHQgPSBrZXldLlxuXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byBba2V5IC0gbWluX2FsbG93ZWRfa2V5IHRdLFxuICAgICAgYWx0aG91Z2ggcG9zc2libHkgbGVzcyB0aW1lLlxuXG4gICAgICBCZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbaGFuZGxlX3JlbW92ZWRdIGFjY2Vzc2VzIFt0XSBpbiBhbnkgd2F5IG90aGVyIHRoYW5cbiAgICAgIFtFbHRdIGZ1bmN0aW9ucy4gKilcbiAgdmFsIGluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgIDogICdhIHRcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBoYW5kbGVfcmVtb3ZlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0LnRcblxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgRWx0LnQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBmaXJlX3Bhc3RfYWxhcm1zXG4gICAgOiAgJ2EgdFxuICAgIC0+IGhhbmRsZV9maXJlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBub3c6VGltZV9ucy50XG4gICAgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gICgqKiBFYWNoIHNsb3QgaW4gYSBsZXZlbCBpcyBhIChwb3NzaWJseSBudWxsKSBwb2ludGVyIHRvIGEgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICBvZiBlbGVtZW50cy4gIFdlIHBvb2wgdGhlIGVsZW1lbnRzIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZW0gYWZ0ZXIgdGhleSBhcmUgcmVtb3ZlZFxuICAgICAgZnJvbSB0aGUgdGltaW5nIHdoZWVsIChlaXRoZXIgdmlhIFtyZW1vdmVdIG9yIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldKS4gIEluXG4gICAgICBhZGRpdGlvbiB0byBzdG9yaW5nIHRoZSBba2V5XSwgW2F0XSwgYW5kIFt2YWx1ZV0gaW4gdGhlIGVsZW1lbnQsIHdlIHN0b3JlIHRoZVxuICAgICAgW2xldmVsX2luZGV4XSBzbyB0aGF0IHdlIGNhbiBxdWlja2x5IGdldCB0byB0aGUgbGV2ZWwgaG9sZGluZyBhbiBlbGVtZW50IHdoZW4gd2VcbiAgICAgIFtyZW1vdmVdIGl0LlxuXG4gICAgICBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIFtFeHRlcm5hbF9lbHRdIGFuZCBbSW50ZXJuYWxfZWx0XSwgd2hpY2ggYXJlIHRoZSBzYW1lXG4gICAgICB1bmRlcm5lYXRoLiAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFuIFtJbnRlcm5hbF9lbHRdIGlzIGVpdGhlciBbbnVsbF0gb3IgYVxuICAgICAgdmFsaWQgcG9pbnRlci4gIE9uIHRoZSBvdGhlciBoYW5kLCBbRXh0ZXJuYWxfZWx0XXMgYXJlIHJldHVybmVkIHRvIHVzZXIgY29kZSwgc29cbiAgICAgIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvZiB2YWxpZGl0eSAtLSB3ZSBhbHdheXMgdmFsaWRhdGUgYW4gW0V4dGVybmFsX2VsdF0gYmVmb3JlXG4gICAgICBkb2luZyBhbnl0aGluZyB3aXRoIGl0LlxuXG4gICAgICBJdCBpcyB0aGVyZWZvcmUgT0sgdG8gdXNlIFtQb29sLlVuc2FmZV0sIGJlY2F1c2Ugd2Ugd2lsbCBuZXZlciBhdHRlbXB0IHRvIGFjY2VzcyBhXG4gICAgICBzbG90IG9mIGFuIGludmFsaWQgcG9pbnRlci4gKilcbiAgbW9kdWxlIFBvb2wgPSBQb29sLlVuc2FmZVxuXG4gIG1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICgqKiBbSW50ZXJ2YWxfbnVtXSBpcyB0aGUgcHVibGljIEFQSS4gIEV2ZXJ5dGhpbmcgZm9sbG93aW5nIGluIHRoZSBzaWduYXR1cmUgaXNcbiAgICAgICAgZm9yIGludGVybmFsIHVzZS4gKilcbiAgICBpbmNsdWRlIFRpbWluZ193aGVlbF9pbnRmLkludGVydmFsX251bVxuXG4gICAgKCoqIFthZGRfY2xhbXBfdG9fbWF4XSBkb2Vzbid0IHdvcmsgYXQgYWxsIHdpdGggbmVnYXRpdmUgc3BhbnMgKilcbiAgICB2YWwgYWRkX2NsYW1wX3RvX21heCA6IHQgLT4gU3Bhbi50IC0+IHRcblxuICAgIHZhbCBzdWNjX2NsYW1wX3RvX21heCA6IHQgLT4gdFxuXG4gICAgKCoqIFtTbG90c19tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGEga2V5J3Mgc2xvdCBpbiBhIGdpdmVuIGxldmVsLiAqKVxuICAgIG1vZHVsZSBTbG90c19tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgdmFsIGNyZWF0ZSA6IGxldmVsX2JpdHM6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgICAgdmFsIG5leHRfc2xvdCA6IHQgLT4gaW50IC0+IGludFxuICAgIGVuZFxuXG4gICAgKCoqIFtNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBtaW5pbXVtIGtleSBpbiB0aGVcbiAgICAgICAgc2FtZSBzbG90IGFzIGEgZ2l2ZW4ga2V5LiAqKVxuICAgIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgaW5jbHVkZSBFcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGNyZWF0ZSA6IGJpdHNfcGVyX3Nsb3Q6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgIGVuZFxuXG4gICAgdmFsIG51bV9rZXlzIDogTnVtX2tleV9iaXRzLnQgLT4gU3Bhbi50XG4gICAgdmFsIG1pbl9rZXlfaW5fc2FtZV9zbG90IDogdCAtPiBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLnQgLT4gdFxuICAgIHZhbCBzbG90IDogdCAtPiBiaXRzX3Blcl9zbG90Ok51bV9rZXlfYml0cy50IC0+IHNsb3RzX21hc2s6U2xvdHNfbWFzay50IC0+IGludFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2xvdHNfbWFzayA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZXZlbF9iaXRzID0gSW50NjMuKCAtICkgKE51bV9rZXlfYml0cy5wb3cyIGxldmVsX2JpdHMpIEludDYzLm9uZVxuICAgICAgbGV0IG5leHRfc2xvdCB0IHNsb3QgPSAoc2xvdCArIDEpIGxhbmQgSW50NjMudG9faW50X2V4biB0XG4gICAgZW5kXG5cbiAgICBsZXQgbnVtX2tleXMgbnVtX2JpdHMgPSBOdW1fa2V5X2JpdHMucG93MiBudW1fYml0c1xuXG4gICAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IGNyZWF0ZSB+Yml0c19wZXJfc2xvdCA9IGJpdF9ub3QgKE51bV9rZXlfYml0cy5wb3cyIGJpdHNfcGVyX3Nsb3QgLSBvbmUpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgICAgbGV0IHNjYWxlX2ludCB0IGkgPSB0ICogb2ZfaW50IGlcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgIGxldCBhZGQgdCBpID0gdCArIGlcbiAgICBsZXQgYWRkX2NsYW1wX3RvX21heCB0IGkgPSBpZiB0ID4gbWF4X3ZhbHVlIC0gaSB0aGVuIG1heF92YWx1ZSBlbHNlIHQgKyBpXG4gICAgbGV0IHN1Y2NfY2xhbXBfdG9fbWF4IHQgPSBpZiB0ID0gbWF4X3ZhbHVlIHRoZW4gbWF4X3ZhbHVlIGVsc2Ugc3VjYyB0XG4gICAgbGV0IHN1YiB0IGkgPSB0IC0gaVxuICAgIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuXG4gICAgbGV0IHNsb3QgdCB+KGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudCkgfnNsb3RzX21hc2sgPVxuICAgICAgdG9faW50X2V4biAoYml0X2FuZCAoc2hpZnRfcmlnaHQgdCAoYml0c19wZXJfc2xvdCA6PiBpbnQpKSBzbG90c19tYXNrKVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID1cbiAgICAgIGJpdF9hbmQgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBLZXkuTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICBtb2R1bGUgU2xvdHNfbWFzayA9IEtleS5TbG90c19tYXNrXG5cbiAgbW9kdWxlIEV4dGVybmFsX2VsdCA9IHN0cnVjdFxuXG4gICAgKCoqIFRoZSBbcG9vbF9zbG90c10gaGVyZSBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBzbG90cyBpbiBhIGxldmVsIGFycmF5LiAgVGhpcyBpc1xuICAgICAgICBmb3IgdGhlIHNsb3RzIGluIHRoZSBwb29sIHR1cGxlIHJlcHJlc2VudGluZyBhIGxldmVsIGVsZW1lbnQuICopXG4gICAgdHlwZSAnYSBwb29sX3Nsb3RzID1cbiAgICAgICggS2V5LnRcbiAgICAgICwgVGltZV9ucy50XG4gICAgICAsICdhXG4gICAgICAsIGludFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudCApXG4gICAgICAgIFBvb2wuU2xvdHMudDZcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgcG9vbF9zbG90cyBQb2ludGVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gIGVuZFxuXG4gIG1vZHVsZSBJbnRlcm5hbF9lbHQgOiBzaWdcbiAgICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgICAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gdW5pdCAtPiBfIHRcbiAgICAgIHZhbCBpc19mdWxsIDogXyB0IC0+IGJvb2xcbiAgICAgIHZhbCBncm93IDogP2NhcGFjaXR5OmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHByaXZhdGUgJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdW5pdCAtPiBfIHRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG4gICAgdmFsIGlzX3ZhbGlkIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCoqIERlYWxpbmcgd2l0aCBbRXh0ZXJuYWxfZWx0XXMuICopXG5cbiAgICB2YWwgZXh0ZXJuYWxfaXNfdmFsaWQgOiAnYSBQb29sLnQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnRcbiAgICB2YWwgb2ZfZXh0ZXJuYWxfZXhuIDogJ2EgUG9vbC50IC0+ICdhIEV4dGVybmFsX2VsdC50IC0+ICdhIHRcbiAgICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBQb29sLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFtjcmVhdGVdIHJldHVybnMgYW4gZWxlbWVudCB3aG9zZSBbbmV4dF0gYW5kIFtwcmV2XSBhcmUgW251bGxdLiAqKVxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogICdhIFBvb2wudFxuICAgICAgLT4ga2V5OktleS50XG4gICAgICAoKiogW2F0XSBpcyB1c2VkIHdoZW4gdGhlIHByaW9yaXR5IHF1ZXVlIGlzIHVzZWQgdG8gaW1wbGVtZW50IGEgdGltaW5nIHdoZWVsLiAgSWZcbiAgICAgICAgICB1bnVzZWQsIGl0IHdpbGwgYmUgW1RpbWVfbnMuZXBvY2hdLiAqKVxuICAgICAgLT4gYXQ6VGltZV9ucy50XG4gICAgICAtPiB2YWx1ZTonYVxuICAgICAgLT4gbGV2ZWxfaW5kZXg6aW50XG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZnJlZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBhY2Nlc3NvcnMgKilcblxuICAgIHZhbCBrZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCBhdCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IFRpbWVfbnMudFxuICAgIHZhbCBsZXZlbF9pbmRleCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBuZXh0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB2YWx1ZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+ICdhXG5cbiAgICAoKiogbXV0YXRvcnMgKilcblxuICAgIHZhbCBzZXRfa2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfYXQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBUaW1lX25zLnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfbGV2ZWxfaW5kZXggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnQgLT4gdW5pdFxuXG4gICAgKCoqIFtpbnNlcnRfYXRfZW5kIHBvb2wgdCB+dG9fYWRkXSB0cmVhdHMgW3RdIGFzIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGFuZCBhZGRzIFt0b19hZGRdXG4gICAgICAgIHRvIHRoZSBlbmQgb2YgaXQuICopXG4gICAgdmFsIGluc2VydF9hdF9lbmQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB0b19hZGQ6J2EgdCAtPiB1bml0XG5cbiAgICAoKiogW2xpbmtfdG9fc2VsZiBwb29sIHRdIG1ha2VzIFt0XSBiZSBhIHNpbmdsZXRvbiBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3QuICopXG4gICAgdmFsIGxpbmtfdG9fc2VsZiA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBbdW5saW5rIHAgdF0gdW5saW5rcyBbdF0gZnJvbSB0aGUgY2lyY3VsYXJseSBkb3VibHktbGlua2VkIGxpc3QgdGhhdCBpdCBpcyBpbi4gIEl0XG4gICAgICAgIGNoYW5nZXMgdGhlIHBvaW50ZXJzIG9mIFt0XSdzIFtwcmV2XSBhbmQgW25leHRdIGVsdHMsIGJ1dCBub3QgW3RdJ3MgW3ByZXZdIGFuZFxuICAgICAgICBbbmV4dF0gcG9pbnRlcnMuICBbdW5saW5rXSBpcyBtZWFuaW5nbGVzcyBpZiBbdF0gaXMgYSBzaW5nbGV0b24uICopXG4gICAgdmFsIHVubGluayA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBJdGVyYXRvcnMuICBbaXRlciBwIHQgfmluaXQgfmZdIHZpc2l0cyBlYWNoIGVsZW1lbnQgaW4gdGhlIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgICBjb250YWluaW5nIFt0XSwgc3RhcnRpbmcgYXQgW3RdLCBhbmQgZm9sbG93aW5nIFtuZXh0XSBwb2ludGVycy4gIFtsZW5ndGhdIGNvdW50c1xuICAgICAgICBieSB2aXNpdGluZyBlYWNoIGVsZW1lbnQgaW4gdGhlIGxpc3QuICopXG4gICAgdmFsIGl0ZXIgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBmOignYSB0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBsZW5ndGggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnRcblxuICAgICgqKiBbbWF4X2FsYXJtX3RpbWUgdCBlbHQgfndpdGhfa2V5XSBmaW5kcyB0aGUgbWF4IFthdF0gaW4gW2VsdF0ncyBsaXN0IGFtb25nIHRoZSBlbHRzXG4gICAgICAgIHdob3NlIGtleSBpcyBbd2l0aF9rZXldLCByZXR1cm5pbmcgW1RpbWVfbnMuZXBvY2hdIGlmIHRoZSBsaXN0IGlzIGVtcHR5LiAqKVxuICAgIHZhbCBtYXhfYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuXG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgcG9vbF9zbG90cyA9ICdhIEV4dGVybmFsX2VsdC5wb29sX3Nsb3RzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gICAgbGV0IGlzX251bGwgPSBQb2ludGVyLmlzX251bGxcbiAgICBsZXQgZXF1YWwgdDEgdDIgPSBQb2ludGVyLnBoeXNfZXF1YWwgdDEgdDJcblxuICAgIGxldCBjcmVhdGUgcG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4ID1cbiAgICAgIFBvb2wubmV3NiBwb29sIGtleSBhdCB2YWx1ZSBsZXZlbF9pbmRleCAobnVsbCAoKSkgKG51bGwgKCkpXG4gICAgOztcblxuICAgIGxldCBmcmVlID0gUG9vbC5mcmVlXG4gICAgbGV0IGtleSBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQwXG4gICAgbGV0IHNldF9rZXkgcCB0IGsgPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQwIGtcbiAgICBsZXQgYXQgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MVxuICAgIGxldCBzZXRfYXQgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQxIHhcbiAgICBsZXQgdmFsdWUgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MlxuICAgIGxldCBsZXZlbF9pbmRleCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQzXG4gICAgbGV0IHNldF9sZXZlbF9pbmRleCBwIHQgaSA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDMgaVxuICAgIGxldCBwcmV2IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDRcbiAgICBsZXQgc2V0X3ByZXYgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQ0IHhcbiAgICBsZXQgbmV4dCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQ1XG4gICAgbGV0IHNldF9uZXh0IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50NSB4XG4gICAgbGV0IGlzX3ZhbGlkIHAgdCA9IFBvb2wucG9pbnRlcl9pc192YWxpZCBwIHRcbiAgICBsZXQgZXh0ZXJuYWxfaXNfdmFsaWQgPSBpc192YWxpZFxuXG4gICAgbGV0IGludmFyaWFudCBwb29sIGludmFyaWFudF9hIHQgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgICAgYXNzZXJ0IChpc192YWxpZCBwb29sIHQpO1xuICAgICAgICBpbnZhcmlhbnRfYSAodmFsdWUgcG9vbCB0KTtcbiAgICAgICAgbGV0IG4gPSBuZXh0IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgbiB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAocHJldiBwb29sIG4pKTtcbiAgICAgICAgbGV0IHAgPSBwcmV2IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgcCB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAobmV4dCBwb29sIHApKSlcbiAgICA7O1xuXG4gICAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHBvb2xfc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPSBQb29sLmludmFyaWFudCBpZ25vcmUgdFxuICAgICAgbGV0IGNyZWF0ZSA/KGNhcGFjaXR5ID0gMSkgKCkgPSBQb29sLmNyZWF0ZSBQb29sLlNsb3RzLnQ2IH5jYXBhY2l0eVxuICAgICAgbGV0IGdyb3cgPSBQb29sLmdyb3dcbiAgICAgIGxldCBpc19mdWxsID0gUG9vbC5pc19mdWxsXG4gICAgZW5kXG5cbiAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IHRcblxuICAgIGxldCBvZl9leHRlcm5hbF9leG4gcG9vbCB0ID1cbiAgICAgIGlmIGlzX3ZhbGlkIHBvb2wgdCB0aGVuIHQgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbCBnb3QgaW52YWxpZCBhbGFybVwiXVxuICAgIDs7XG5cbiAgICBsZXQgdW5saW5rIHBvb2wgdCA9XG4gICAgICBzZXRfbmV4dCBwb29sIChwcmV2IHBvb2wgdCkgKG5leHQgcG9vbCB0KTtcbiAgICAgIHNldF9wcmV2IHBvb2wgKG5leHQgcG9vbCB0KSAocHJldiBwb29sIHQpXG4gICAgOztcblxuICAgIGxldCBsaW5rIHBvb2wgcHJldiBuZXh0ID1cbiAgICAgIHNldF9uZXh0IHBvb2wgcHJldiBuZXh0O1xuICAgICAgc2V0X3ByZXYgcG9vbCBuZXh0IHByZXZcbiAgICA7O1xuXG4gICAgbGV0IGxpbmtfdG9fc2VsZiBwb29sIHQgPSBsaW5rIHBvb2wgdCB0XG5cbiAgICBsZXQgaW5zZXJ0X2F0X2VuZCBwb29sIHQgfnRvX2FkZCA9XG4gICAgICBsZXQgcHJldiA9IHByZXYgcG9vbCB0IGluXG4gICAgICBsaW5rIHBvb2wgcHJldiB0b19hZGQ7XG4gICAgICBsaW5rIHBvb2wgdG9fYWRkIHRcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgcG9vbCBmaXJzdCB+ZiA9XG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAoKiBXZSBnZXQgW25leHRdIGJlZm9yZSBjYWxsaW5nIFtmXSBzbyB0aGF0IFtmXSBjYW4gbW9kaWZ5IG9yIFtmcmVlXSBbIWN1cnJlbnRdLiAqKVxuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBmICFjdXJyZW50O1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoIHBvb2wgZmlyc3QgPVxuICAgICAgbGV0IHIgPSByZWYgMCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgaW5jciByO1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFyXG4gICAgOztcblxuICAgIGxldCBtYXhfYWxhcm1fdGltZSBwb29sIGZpcnN0IH53aXRoX2tleSA9XG4gICAgICBsZXQgbWF4X2FsYXJtX3RpbWUgPSByZWYgVGltZV9ucy5lcG9jaCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgaWYgS2V5LmVxdWFsIChrZXkgcG9vbCAhY3VycmVudCkgd2l0aF9rZXlcbiAgICAgICAgdGhlbiBtYXhfYWxhcm1fdGltZSA6PSBUaW1lX25zLm1heCAoYXQgcG9vbCAhY3VycmVudCkgIW1heF9hbGFybV90aW1lO1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFtYXhfYWxhcm1fdGltZVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2FsYXJtX3RpbWUgcG9vbCBmaXJzdCB+d2l0aF9rZXkgPVxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gcmVmIFRpbWVfbnMubWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgICgqIFRoZSBba2V5XSBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeSBmb3IgW21heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF0gYmVjYXVzZVxuICAgICAgICAgICBtYXggdGltZSBwZXIgaW50ZXJ2YWwgaXMgbm90IHRoZSBzYW1lIGFzIG1heCB0aW1lIGdsb2JhbGx5LlxuXG4gICAgICAgICAgIFRoaXMgaXMgbm90IHNvIGZvciBbbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsXSwgc28gdGhpcyBjYW4gcG90ZW50aWFsbHlcbiAgICAgICAgICAgYmUgc2ltcGxpZmllZC5cblxuICAgICAgICAgICBQcm9iYWJseSBhIGJldHRlciBjaGFuZ2Ugd291bGQgYmUgdG8gc2ltcGx5IHRyYW5zZmVyIHRoZSBldmVudHMgdG8gdGhlXG4gICAgICAgICAgIFwiZmlyZWRcIiBjb2xsZWN0aW9uIChhbmQgcmVuYW1lIGl0IHRvIFwiYWJvdXQgdG8gZmlyZVwiKSwgd2hpY2ggaXMgc29ydGVkIGJ5IHRpbWUsXG4gICAgICAgICAgIHNvIGdldHRpbmcgdGhlIGZpcnN0IGVsZW1lbnQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gaXMgZWZmaWNpZW50LlxuICAgICAgICAqKVxuICAgICAgICBpZiBLZXkuZXF1YWwgKGtleSBwb29sICFjdXJyZW50KSB3aXRoX2tleVxuICAgICAgICB0aGVuIG1pbl9hbGFybV90aW1lIDo9IFRpbWVfbnMubWluIChhdCBwb29sICFjdXJyZW50KSAhbWluX2FsYXJtX3RpbWU7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIW1pbl9hbGFybV90aW1lXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIExldmVsID0gc3RydWN0XG4gICAgKCoqIEZvciBnaXZlbiBsZXZlbCwgb25lIGNhbiBicmVhayB0aGUgYml0cyBpbnRvIGEga2V5IGludG8gdGhyZWUgcmVnaW9uczpcblxuICAgICAgICB7dlxuICAgICAgICAgfCBoaWdoZXIgbGV2ZWxzIHwgdGhpcyBsZXZlbCB8IGxvd2VyIGxldmVscyB8XG4gICAgICAgIHZ9XG5cbiAgICAgICAgXCJMb3dlciBsZXZlbHNcIiBpcyBbYml0c19wZXJfc2xvdF0gYml0cyB3aWRlLiAgXCJUaGlzIGxldmVsXCIgaXMgW2JpdHNdIHdpZGUuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgKCogVGhlIFtpbmRleF0gaW4gdGhlIHRpbWluZyB3aGVlbCdzIGFycmF5IG9mIGxldmVscyB3aGVyZSB0aGlzIGxldmVsIGlzLiAqKVxuICAgICAgICBpbmRleCA6IGludFxuICAgICAgOyAoKiBIb3cgbWFueSBbYml0c10gdGhpcyBsZXZlbCBpcyByZXNwb25zaWJsZSBmb3IuICopXG4gICAgICAgIGJpdHMgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyAoKiBbc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOnQuYml0c10uICopXG4gICAgICAgIHNsb3RzX21hc2sgOiBTbG90c19tYXNrLnRcbiAgICAgIDsgKCogW2JpdHNfcGVyX3Nsb3RdIGlzIGhvdyBtYW55IGJpdHMgZWFjaCBzbG90IGRpc3Rpbmd1aXNoZXMsIGFuZCBpcyB0aGUgc3VtIG9mIG9mXG4gICAgICAgICAgIHRoZSBbYml0c10gb2YgYWxsIHRoZSBsb3dlciBsZXZlbHMuICopXG4gICAgICAgIGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyBrZXlzX3Blcl9zbG90IDogS2V5LlNwYW4udFxuICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay50XG4gICAgICA7ICgqIFtkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgPSBrZXlzX3Blcl9zbG90ICogQXJyYXkubGVuZ3RoIHNsb3RzIC0gMV0gKilcbiAgICAgICAgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IDogS2V5LlNwYW4udFxuICAgICAgOyAoKiBbbGVuZ3RoXSBpcyB0aGUgbnVtYmVyIG9mIGVsdHMgY3VycmVudGx5IGluIHRoaXMgbGV2ZWwuICopXG4gICAgICAgIG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7ICgqIEFsbCBlbGVtZW50cyBhdCB0aGlzIGxldmVsIGhhdmUgdGhlaXIgW2tleV0gc2F0aXNmeSBbbWluX2FsbG93ZWRfa2V5IDw9IGtleSA8PVxuICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXldLiAgQWxzbywgW21pbl9hbGxvd2VkX2tleV0gaXMgYSBtdWx0aXBsZSBvZiBba2V5c19wZXJfc2xvdF0uICopXG4gICAgICAgIG11dGFibGUgbWluX2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyAoKiBbc2xvdHNdIGhvbGRzIHRoZSAocG9zc2libHkgbnVsbCkgcG9pbnRlcnMgdG8gdGhlIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdHNcbiAgICAgICAgICAgb2YgZWx0cy4gIFtBcnJheS5sZW5ndGggc2xvdHMgPSAxIGxzbCBiaXRzXS4gKilcbiAgICAgICAgc2xvdHMgOiAoJ2EgSW50ZXJuYWxfZWx0LnQgYXJyYXlbQHNleHAub3BhcXVlXSlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2xvdCB0IH5rZXkgPSBLZXkuc2xvdCBrZXkgfmJpdHNfcGVyX3Nsb3Q6dC5iaXRzX3Blcl9zbG90IH5zbG90c19tYXNrOnQuc2xvdHNfbWFza1xuICAgIGxldCBuZXh0X3Nsb3QgdCBzbG90ID0gU2xvdHNfbWFzay5uZXh0X3Nsb3QgdC5zbG90c19tYXNrIHNsb3RcblxuICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXkgPVxuICAgICAgS2V5Lm1pbl9rZXlfaW5fc2FtZV9zbG90IGtleSB0Lm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICA7O1xuXG4gICAgbGV0IGNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IHQgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5ID1cbiAgICAgICgqIFRoaXMgY29tcHV0YXRpb24gZW5zdXJlcyB0aGF0IFt0XSdzIFttaW5fYWxsb3dlZF9rZXldIGlzIGFzIGxhcmdlIGFzIHBvc3NpYmxlXG4gICAgICAgICBzdWJqZWN0IHRvIHRoZSBjb25zdHJhaW50IHRoYXQgdGhlcmUgaXMgbm8gaW50ZXItbGV2ZWwgZ2FwLiAqKVxuICAgICAgaWYgS2V5LmVxdWFsIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgIHRoZW4gS2V5Lm1heF92YWx1ZVxuICAgICAgZWxzZSBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXk6KEtleS5zdWNjIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBwb29sIDogJ2EgSW50ZXJuYWxfZWx0LlBvb2wudFxuICAgIDsgKCogW21pbl9lbHRdIGlzIGVpdGhlciBudWxsIG9yIGFuIGVsZW1lbnQgd2hvc2Uga2V5IGlzIFtlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgbWluX2VsdCA6ICdhIEludGVybmFsX2VsdC50XG4gICAgOyAoKiBBbGwgZWxlbWVudHMgaW4gdGhlIHByaW9yaXR5IHF1ZXVlIGhhdmUgdGhlaXIga2V5IFs+PSBlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgZWx0X2tleV9sb3dlcl9ib3VuZCA6IEtleS50XG4gICAgOyBsZXZlbHMgOiAnYSBMZXZlbC50IGFycmF5XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gRXh0ZXJuYWxfZWx0Lm51bGxcbiAgICBsZXQgYXQgcCB0ID0gSW50ZXJuYWxfZWx0LmF0IHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgICBsZXQga2V5IHAgdCA9IEludGVybmFsX2VsdC5rZXkgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICAgIGxldCB2YWx1ZSBwIHQgPSBJbnRlcm5hbF9lbHQudmFsdWUgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICBlbmRcblxuICBsZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG4gIGxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG4gIGxldCBudW1fbGV2ZWxzIHQgPSBBcnJheS5sZW5ndGggdC5sZXZlbHNcbiAgbGV0IG1pbl9hbGxvd2VkX2tleSB0ID0gTGV2ZWwubWluX2FsbG93ZWRfa2V5IHQubGV2ZWxzLigwKVxuICBsZXQgbWF4X2FsbG93ZWRfa2V5IHQgPSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgdC5sZXZlbHMuKG51bV9sZXZlbHMgdCAtIDEpXG5cbiAgbGV0IGludGVybmFsX2l0ZXIgdCB+ZiA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpIHRoZW4gSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmZcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcblxuICBsZXQgaXRlciB0IH5mID0gaW50ZXJuYWxfaXRlciB0IH5mOihmIDogXyBFbHQudCAtPiB1bml0IDo+IF8gSW50ZXJuYWxfZWx0LnQgLT4gdW5pdClcblxuICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBrZXkgOiBLZXkudFxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG1pbl9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IG1heF9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IGVsdHMgOiAnYSBFbHQudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHByZXR0eSB0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIHsgUHJldHR5Lm1pbl9hbGxvd2VkX2tleSA9IG1pbl9hbGxvd2VkX2tleSB0XG4gICAgOyBtYXhfYWxsb3dlZF9rZXkgPSBtYXhfYWxsb3dlZF9rZXkgdFxuICAgIDsgZWx0cyA9XG4gICAgICAgIChsZXQgciA9IHJlZiBbXSBpblxuICAgICAgICAgaW50ZXJuYWxfaXRlciB0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgIHJcbiAgICAgICAgICAgOj0geyBQcmV0dHkuRWx0LmtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHRcbiAgICAgICAgICAgICAgOyB2YWx1ZSA9IEludGVybmFsX2VsdC52YWx1ZSBwb29sIGVsdFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6ICFyKTtcbiAgICAgICAgIExpc3QucmV2ICFyKVxuICAgIH1cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgICB8IGBJbnRlcm5hbCAtPiBbJXNleHAgKHQgOiBhIHRfaW50ZXJuYWwpXVxuICAgIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG4gIDs7XG5cbiAgbGV0IGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IH5sZXZlbF9iaXRzIH5iaXRzX3Blcl9zbG90ID1cbiAgICBsZXQgYml0cyA9IE51bV9rZXlfYml0cy4oICsgKSBsZXZlbF9iaXRzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICBpZiBOdW1fa2V5X2JpdHMuZXF1YWwgYml0cyBOdW1fa2V5X2JpdHMubWF4X3ZhbHVlXG4gICAgdGhlbiBLZXkuU3Bhbi5tYXhfdmFsdWVcbiAgICBlbHNlIEtleS5TcGFuLnByZWQgKEtleS5udW1fa2V5cyBiaXRzKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGxldmVsX2ludmFyaWFudCBsZXZlbCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gbGV2ZWwgWyVzZXhwX29mOiBfIExldmVsLnRdIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgbGV2ZWwgZiBpblxuICAgICAgICBMZXZlbC5GaWVsZHMuaXRlclxuICAgICAgICAgIH5pbmRleDooY2hlY2sgKGZ1biBpbmRleCAtPiBhc3NlcnQgKGluZGV4ID49IDApKSlcbiAgICAgICAgICB+Yml0czooY2hlY2sgKGZ1biBiaXRzIC0+IGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIGJpdHMgTnVtX2tleV9iaXRzLnplcm8pKSlcbiAgICAgICAgICB+c2xvdHNfbWFzazpcbiAgICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IFNsb3RzX21hc2sudF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6KFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOmxldmVsLmJpdHMpKSlcbiAgICAgICAgICB+Yml0c19wZXJfc2xvdDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGJpdHNfcGVyX3Nsb3QgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPj0gKSBiaXRzX3Blcl9zbG90IE51bV9rZXlfYml0cy56ZXJvKSkpXG4gICAgICAgICAgfmtleXNfcGVyX3Nsb3Q6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBrZXlzX3Blcl9zbG90IC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6KEtleS5udW1fa2V5cyBsZXZlbC5iaXRzX3Blcl9zbG90KSkpXG4gICAgICAgICAgfm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2s6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgICAgIChNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmNyZWF0ZSB+Yml0c19wZXJfc2xvdDpsZXZlbC5iaXRzX3Blcl9zbG90KSkpKVxuICAgICAgICAgIH5kaWZmX21heF9taW5fYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgKGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgIH5sZXZlbF9iaXRzOmxldmVsLmJpdHNcbiAgICAgICAgICAgICAgICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKVxuICAgICAgICAgIH5sZW5ndGg6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIGxlbmd0aFxuICAgICAgICAgICAgICAgICA9IEFycmF5LmZvbGQgbGV2ZWwuc2xvdHMgfmluaXQ6MCB+ZjooZnVuIG4gZWx0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gICAgICAgICAgICAgICAgICAgdGhlbiBuXG4gICAgICAgICAgICAgICAgICAgZWxzZSBuICsgSW50ZXJuYWxfZWx0Lmxlbmd0aCBwb29sIGVsdCkpKSlcbiAgICAgICAgICB+bWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWluX2FsbG93ZWRfa2V5IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgbWluX2FsbG93ZWRfa2V5IEtleS56ZXJvKTtcbiAgICAgICAgICAgICAgIGlmIEtleS4oIDwgKSBtaW5fYWxsb3dlZF9rZXkgS2V5Lm1heF92YWx1ZVxuICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgIChLZXkucmVtIG1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90KVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6S2V5LlNwYW4uemVybykpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1heF9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgIG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgIChLZXkuYWRkX2NsYW1wX3RvX21heFxuICAgICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgIGxldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSkpKVxuICAgICAgICAgIH5zbG90czpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHNsb3RzIC0+XG4gICAgICAgICAgICAgICBBcnJheS5pdGVyIHNsb3RzIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KVxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaW52YXJpYW50IHBvb2wgaW52YXJpYW50X2EgZWx0O1xuICAgICAgICAgICAgICAgICAgIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGxldmVsLm1pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oIDw9ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGxldmVsLm1heF9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIHQuZWx0X2tleV9sb3dlcl9ib3VuZCk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5sZXZlbF9pbmRleCBwb29sIGVsdCA9IGxldmVsLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgIGludmFyaWFudF9hIChJbnRlcm5hbF9lbHQudmFsdWUgcG9vbCBlbHQpKSkpKSkpXG4gICAgaW5cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF9pbnRlcm5hbF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBhc3NlcnQgKEtleS4oID49ICkgKG1pbl9hbGxvd2VkX2tleSB0KSBLZXkuemVybyk7XG4gICAgICBhc3NlcnQgKEtleS4oID49ICkgKG1heF9hbGxvd2VkX2tleSB0KSAobWluX2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgICAgfnBvb2w6KGNoZWNrIChJbnRlcm5hbF9lbHQuUG9vbC5pbnZhcmlhbnQgaWdub3JlKSlcbiAgICAgICAgfm1pbl9lbHQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZWx0XyAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XylcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGFzc2VydCAoSW50ZXJuYWxfZWx0LmlzX3ZhbGlkIHQucG9vbCBlbHRfKTtcbiAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LmVxdWFsIHQuZWx0X2tleV9sb3dlcl9ib3VuZCAoSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0XykpKSkpXG4gICAgICAgIH5lbHRfa2V5X2xvd2VyX2JvdW5kOlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF9rZXlfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgZWx0X2tleV9sb3dlcl9ib3VuZCAobWluX2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgICAgICAgICBhc3NlcnQgKEtleS4oIDw9ICkgZWx0X2tleV9sb3dlcl9ib3VuZCAobWF4X2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIHQubWluX2VsdClcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS5lcXVhbCBlbHRfa2V5X2xvd2VyX2JvdW5kIChJbnRlcm5hbF9lbHQua2V5IHQucG9vbCB0Lm1pbl9lbHQpKSkpXG4gICAgICAgIH5sZXZlbHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGV2ZWxzIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChudW1fbGV2ZWxzIHQgPiAwKTtcbiAgICAgICAgICAgICBBcnJheS5pdGVyaSBsZXZlbHMgfmY6KGZ1biBsZXZlbF9pbmRleCBsZXZlbCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChsZXZlbF9pbmRleCA9IExldmVsLmluZGV4IGxldmVsKTtcbiAgICAgICAgICAgICAgIGxldmVsX2ludmFyaWFudCBsZXZlbDtcbiAgICAgICAgICAgICAgIGlmIGxldmVsX2luZGV4ID4gMFxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwcmV2X2xldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCAtIDEpIGluXG4gICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgTCA9IExldmVsIGluXG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICAgKEwua2V5c19wZXJfc2xvdCBsZXZlbClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OihLZXkuU3Bhbi5zdWNjIHByZXZfbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgIChMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTpwcmV2X2xldmVsLm1heF9hbGxvd2VkX2tleSkpKSkpKVxuICA7O1xuXG4gICgqKiBbbWluX2VsdF9dIHJldHVybnMgW251bGxdIGlmIGl0IGNhbid0IGZpbmQgdGhlIGRlc2lyZWQgZWxlbWVudC4gIFdlIHdyYXAgaXQgdXBcbiAgICAgIGFmdGVyd2FyZHMgdG8gcmV0dXJuIGFuIFtvcHRpb25dLiAqKVxuICBsZXQgbWluX2VsdF8gdCA9XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgdC5taW5fZWx0KVxuICAgIHRoZW4gdC5taW5fZWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IG1pbl9lbHRfYWxyZWFkeV9mb3VuZCA9IHJlZiAoSW50ZXJuYWxfZWx0Lm51bGwgKCkpIGluXG4gICAgICBsZXQgbWluX2tleV9hbHJlYWR5X2ZvdW5kID0gcmVmIEtleS5tYXhfdmFsdWUgaW5cbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICBsZXQgbnVtX2xldmVscyA9IG51bV9sZXZlbHMgdCBpblxuICAgICAgd2hpbGUgIWxldmVsX2luZGV4IDwgbnVtX2xldmVscyBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oIWxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBLZXkuKCA+ICkgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBhbnkgbW9yZSBsZXZlbHMuICBRdWl0IHRoZSBsb29wLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9IG51bV9sZXZlbHNcbiAgICAgICAgZWxzZSBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICAgIHRoZW4gaW5jciBsZXZlbF9pbmRleFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBMb29rIGluIFtsZXZlbF0uICopXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBsZXQgc2xvdF9taW5fa2V5ID1cbiAgICAgICAgICAgIHJlZlxuICAgICAgICAgICAgICAoTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgfmtleTooS2V5Lm1heCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IXNsb3RfbWluX2tleSkgaW5cbiAgICAgICAgICAoKiBGaW5kIHRoZSBmaXJzdCBub25lbXB0eSBzbG90IHdpdGggYSBzbWFsbCBlbm91Z2ggW3Nsb3RfbWluX2tleV0uICopXG4gICAgICAgICAgd2hpbGVcbiAgICAgICAgICAgIEludGVybmFsX2VsdC5pc19udWxsIHNsb3RzLighc2xvdClcbiAgICAgICAgICAgICYmIEtleS4oIDwgKSAhc2xvdF9taW5fa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICBkb1xuICAgICAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgICAgICBzbG90X21pbl9rZXkgOj0gS2V5LmFkZCAhc2xvdF9taW5fa2V5IGxldmVsLmtleXNfcGVyX3Nsb3RcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVmlzaXQgYWxsIG9mIHRoZSBlbHRzIGluIHRoaXMgc2xvdCBhbmQgZmluZCBvbmUgd2l0aCBtaW5pbXVtIGtleS4gKilcbiAgICAgICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICAgICAgIGxldCBjdXJyZW50X2tleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICBpZiBLZXkuKCA8PSApIGN1cnJlbnRfa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWluX2VsdF9hbHJlYWR5X2ZvdW5kIDo9ICFjdXJyZW50O1xuICAgICAgICAgICAgICAgIG1pbl9rZXlfYWxyZWFkeV9mb3VuZCA6PSBjdXJyZW50X2tleSk7XG4gICAgICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICAoKiBJZiBbIWxldmVsX2luZGV4ID0gMF0gdGhlbiBhbGwgZWx0cyBpbiB0aGlzIHNsb3QgaGF2ZSB0aGUgc2FtZSBba2V5XSxcbiAgICAgICAgICAgICAgICAgaS5lLiBbIXNsb3RfbWluX2tleV0uICBTbywgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnkgZWxlbWVudHMgYWZ0ZXJcbiAgICAgICAgICAgICAgICAgW2ZpcnN0XS4gIFRoaXMgaXMgYSB1c2VmdWwgc2hvcnQgY3V0IGluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZXJlIGFyZVxuICAgICAgICAgICAgICAgICBtdWx0aXBsZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBtaW4gc2xvdCBpbiBsZXZlbCAwLiAqKVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgfHwgIWxldmVsX2luZGV4ID0gMFxuICAgICAgICAgICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICAgICAgICAgIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAoKiBGaW5pc2hlZCBsb29raW5nIGluIFtsZXZlbF0uICBNb3ZlIHVwIHRvIHRoZSBuZXh0IGxldmVsLiAqKVxuICAgICAgICAgIGluY3IgbGV2ZWxfaW5kZXgpXG4gICAgICBkb25lO1xuICAgICAgdC5taW5fZWx0IDwtICFtaW5fZWx0X2FscmVhZHlfZm91bmQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gIW1pbl9rZXlfYWxyZWFkeV9mb3VuZDtcbiAgICAgIHQubWluX2VsdClcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXkgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgIChrZXkgOiBLZXkudClcbiAgICAgICAgICAobWluX2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICAobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICB+cHJpb3JpdHlfcXVldWU6KHQgOiBfIHQpXVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWwgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBsZXZlbCBib3VuZHNcIiAoa2V5IDogS2V5LnQpIChsZXZlbCA6IF8gTGV2ZWwudCldXG4gIDs7XG5cbiAgbGV0IGFkZF9lbHQgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQgaW5cbiAgICBpZiBub3QgKEtleS4oID49ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgJiYgS2V5LiggPD0gKSBrZXkgKG1heF9hbGxvd2VkX2tleSB0KSlcbiAgICB0aGVuIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXk7XG4gICAgKCogRmluZCB0aGUgbG93ZXN0IGxldmVsIHRoYXQgd2lsbCBob2xkIFtlbHRdLiAqKVxuICAgIGxldCBsZXZlbF9pbmRleCA9XG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgd2hpbGUgS2V5LiggPiApIGtleSAoTGV2ZWwubWF4X2FsbG93ZWRfa2V5IHQubGV2ZWxzLighbGV2ZWxfaW5kZXgpKSBkb1xuICAgICAgICBpbmNyIGxldmVsX2luZGV4XG4gICAgICBkb25lO1xuICAgICAgIWxldmVsX2luZGV4XG4gICAgaW5cbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgaWYgbm90IChLZXkuKCA+PSApIGtleSBsZXZlbC5taW5fYWxsb3dlZF9rZXkgJiYgS2V5LiggPD0gKSBrZXkgbGV2ZWwubWF4X2FsbG93ZWRfa2V5KVxuICAgIHRoZW4gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWw7XG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCArIDE7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9sZXZlbF9pbmRleCBwb29sIGVsdCBsZXZlbF9pbmRleDtcbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleSBpblxuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgbGV0IGZpcnN0ID0gc2xvdHMuKHNsb3QpIGluXG4gICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICB0aGVuIEludGVybmFsX2VsdC5pbnNlcnRfYXRfZW5kIHBvb2wgZmlyc3QgfnRvX2FkZDplbHRcbiAgICBlbHNlIChcbiAgICAgIHNsb3RzLihzbG90KSA8LSBlbHQ7XG4gICAgICBJbnRlcm5hbF9lbHQubGlua190b19zZWxmIHBvb2wgZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0ID1cbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0IGluXG4gICAgaWYgS2V5LiggPCApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICB0aGVuIChcbiAgICAgIHQubWluX2VsdCA8LSBlbHQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0ga2V5KTtcbiAgICBhZGRfZWx0IHQgZWx0O1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfZ290X2ludmFsaWRfa2V5IHQga2V5ID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwuYWRkX2F0X2ludGVydmFsX251bSBnb3QgaW52YWxpZCBpbnRlcnZhbCBudW1cIlxuICAgICAgICAgIH5pbnRlcnZhbF9udW06KGtleSA6IEtleS50KVxuICAgICAgICAgIH5taW5fYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW06KG1pbl9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bToobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudCldXG4gIDs7XG5cbiAgbGV0IGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5ID1cbiAgICBpZiBLZXkuKCA8ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgfHwgS2V5LiggPiApIGtleSAobWF4X2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiByYWlzZV9nb3RfaW52YWxpZF9rZXkgdCBrZXlcbiAgOztcblxuICBsZXQgaW50ZXJuYWxfYWRkIHQgfmtleSB+YXQgdmFsdWUgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGlmIEludGVybmFsX2VsdC5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIEludGVybmFsX2VsdC5Qb29sLmdyb3cgdC5wb29sO1xuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQuY3JlYXRlIHQucG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4OigtMSkgaW5cbiAgICBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0O1xuICAgIGVsdFxuICA7O1xuXG4gICgqKiBbcmVtb3ZlX29yX3JlX2FkZF9lbHRzXSB2aXNpdHMgZWFjaCBlbGVtZW50IGluIHRoZSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgIFtmaXJzdF0uICBJZiB0aGUgZWxlbWVudCdzIGtleSBpcyBbPj0gdF9taW5fYWxsb3dlZF9rZXldLCB0aGVuIGl0IGFkZHMgdGhlIGVsZW1lbnRcbiAgICAgIGJhY2sgYXQgYSBsb3dlciBsZXZlbC4gIElmIG5vdCwgdGhlbiBpdCBjYWxscyBbaGFuZGxlX3JlbW92ZWRdIGFuZCBbZnJlZV1zIHRoZVxuICAgICAgZWxlbWVudC4gKilcbiAgbGV0IHJlbW92ZV9vcl9yZV9hZGRfZWx0cyB0IChsZXZlbCA6IF8gTGV2ZWwudCkgZmlyc3QgfnRfbWluX2FsbG93ZWRfa2V5IH5oYW5kbGVfcmVtb3ZlZFxuICAgID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICgqIFdlIGV4dHJhY3QgW25leHRdIGZyb20gW2N1cnJlbnRdIGZpcnN0LCBiZWNhdXNlIHdlIHdpbGwgbW9kaWZ5IG9yIFtmcmVlXVxuICAgICAgICAgW2N1cnJlbnRdIGJlZm9yZSBjb250aW51aW5nIHRoZSBsb29wLiAqKVxuICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoIC0gMTtcbiAgICAgIGlmIEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCkgdF9taW5fYWxsb3dlZF9rZXlcbiAgICAgIHRoZW4gYWRkX2VsdCB0ICFjdXJyZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgICAgICBoYW5kbGVfcmVtb3ZlZCAoSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsICFjdXJyZW50KTtcbiAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCAhY3VycmVudCk7XG4gICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgIGRvbmVcbiAgOztcblxuICAoKiogW2luY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBbbGV2ZWxdIHRvIGFzXG4gICAgICBsYXJnZSBhIHZhbHVlIGFzIHBvc3NpYmxlLCBidXQgbm8gbW9yZSB0aGFuIFttYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XS5cbiAgICAgIFt0X21pbl9hbGxvd2VkX2tleV0gaXMgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgZm9yIHRoZSBlbnRpcmUgdGltaW5nIHdoZWVsLiAgQXNcbiAgICAgIGVsZW1lbnRzIGFyZSBlbmNvdW50ZXJlZCwgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSB0aW1pbmcgd2hlZWwgaWYgdGhlaXIga2V5IGlzXG4gICAgICBzbWFsbGVyIHRoYW4gW3RfbWluX2FsbG93ZWRfa2V5XSwgb3IgYWRkZWQgYXQgYSBsb3dlciBsZXZlbCBpZiBub3QuICopXG4gIGxldCBpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdFxuICAgICAgICAobGV2ZWwgOiBfIExldmVsLnQpXG4gICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkXG4gICAgPVxuICAgIGxldCBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSA9XG4gICAgICBMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleSBsZXZlbCB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICBpblxuICAgICgqIFdlIHJlcXVpcmUgdGhhdCBbbW9kIGxldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90ID0gMF0uICBTbyxcbiAgICAgICB3ZSBzdGFydCBbbGV2ZWxfbWluX2FsbG93ZWRfa2V5XSB3aGVyZSB0aGF0IGlzIHRydWUsIGFuZCB0aGVuIGluY3JlYXNlIGl0IGJ5XG4gICAgICAgW2tleXNfcGVyX3Nsb3RdIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBsb29wLiAqKVxuICAgIGxldCBsZXZlbF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgbGV2ZWxcbiAgICAgICAgfmtleTpcbiAgICAgICAgICAoS2V5Lm1pblxuICAgICAgICAgICAgIGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgKEtleS5tYXggbGV2ZWwubWluX2FsbG93ZWRfa2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZCkpXG4gICAgaW5cbiAgICBsZXQgbGV2ZWxfbWluX2FsbG93ZWRfa2V5ID0gcmVmIGxldmVsX21pbl9hbGxvd2VkX2tleSBpblxuICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IWxldmVsX21pbl9hbGxvd2VkX2tleSkgaW5cbiAgICBsZXQga2V5c19wZXJfc2xvdCA9IGxldmVsLmtleXNfcGVyX3Nsb3QgaW5cbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIHdoaWxlIEtleS4oIDwgKSAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IGRvXG4gICAgICBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICB0aGVuXG4gICAgICAgICgqIElmIG5vIGVsZW1lbnRzIHJlbWFpbiBhdCB0aGlzIGxldmVsLCB3ZSBjYW4ganVzdCBzZXQgW21pbl9hbGxvd2VkX2tleV0gdG8gdGhlXG4gICAgICAgICAgIGRlc2lyZWQgdmFsdWUuICopXG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgc2xvdHMuKCFzbG90KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKTtcbiAgICAgICAgICByZW1vdmVfb3JfcmVfYWRkX2VsdHMgdCBsZXZlbCBmaXJzdCB+dF9taW5fYWxsb3dlZF9rZXkgfmhhbmRsZV9yZW1vdmVkKTtcbiAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBLZXkuYWRkX2NsYW1wX3RvX21heCAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGtleXNfcGVyX3Nsb3QpXG4gICAgZG9uZTtcbiAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXkgPC0gZGVzaXJlZF9taW5fYWxsb3dlZF9rZXk7XG4gICAgbGV2ZWwubWF4X2FsbG93ZWRfa2V5XG4gICAgPC0gS2V5LmFkZF9jbGFtcF90b19tYXggZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgbGV0IGluY3JlYXNlX21pbl9hbGxvd2VkX2tleSB0IH5rZXkgfmhhbmRsZV9yZW1vdmVkIDogSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC50ID1cbiAgICBpZiBLZXkuKCA8PSApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICBlbHNlIChcbiAgICAgICgqIFdlIGluY3JlYXNlIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBsZXZlbHMgaW4gb3JkZXIgdG8gcmVzdG9yZSB0aGUgaW52YXJpYW50XG4gICAgICAgICB0aGF0IHRoZXkgaGF2ZSBhcyBsYXJnZSBhcyBwb3NzaWJsZSBhIFttaW5fYWxsb3dlZF9rZXldLCB3aGlsZSBsZWF2aW5nIG5vIGdhcHNcbiAgICAgICAgIGluIGtleXMuICopXG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgbGV0IHJlc3VsdCA9IHJlZiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0Lk1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIGluXG4gICAgICBsZXQgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgPSByZWYgKEtleS5wcmVkIGtleSkgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgbGV0IG51bV9sZXZlbHMgPSBudW1fbGV2ZWxzIHQgaW5cbiAgICAgIHdoaWxlICFsZXZlbF9pbmRleCA8IG51bV9sZXZlbHMgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLighbGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXlfYmVmb3JlID0gbGV2ZWwubWluX2FsbG93ZWRfa2V5IGluXG4gICAgICAgIGluY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgIHRcbiAgICAgICAgICBsZXZlbFxuICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTohcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXk6a2V5XG4gICAgICAgICAgfmhhbmRsZV9yZW1vdmVkO1xuICAgICAgICBpZiBLZXkuZXF1YWwgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgbWluX2FsbG93ZWRfa2V5X2JlZm9yZVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBUaGlzIGxldmVsIGRpZCBub3Qgc2hpZnQuICBEb24ndCBzaGlmdCBhbnkgaGlnaGVyIGxldmVscy4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSBudW1fbGV2ZWxzO1xuICAgICAgICAgIHJlc3VsdCA6PSBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIExldmVsIFtsZXZlbF9pbmRleF0gc2hpZnRlZC4gIENvbnNpZGVyIHNoaWZ0aW5nIGhpZ2hlciBsZXZlbHMuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gIWxldmVsX2luZGV4ICsgMTtcbiAgICAgICAgICBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA6PSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgbGV2ZWwpXG4gICAgICBkb25lO1xuICAgICAgaWYgS2V5LiggPiApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBXZSBoYXZlIHJlbW92ZWQgW3QubWluX2VsdF0gb3IgaXQgd2FzIGFscmVhZHkgbnVsbCwgc28ganVzdCBzZXQgaXQgdG9cbiAgICAgICAgICAgbnVsbC4gKilcbiAgICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpO1xuICAgICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gbWluX2FsbG93ZWRfa2V5IHQpO1xuICAgICAgIXJlc3VsdClcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/bGV2ZWxfYml0cyAoKSA9XG4gICAgbGV0IGxldmVsX2JpdHMgPVxuICAgICAgbWF0Y2ggbGV2ZWxfYml0cyB3aXRoXG4gICAgICB8IFNvbWUgbCAtPiBsXG4gICAgICB8IE5vbmUgLT4gTGV2ZWxfYml0cy5kZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgXywgXywgbGV2ZWxzID1cbiAgICAgIExpc3QuZm9sZGlcbiAgICAgICAgbGV2ZWxfYml0c1xuICAgICAgICB+aW5pdDooTnVtX2tleV9iaXRzLnplcm8sIEtleS56ZXJvLCBbXSlcbiAgICAgICAgfmY6XG4gICAgICAgICAgKGZ1blxuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgIChiaXRzX3Blcl9zbG90LCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5LCBsZXZlbHMpXG4gICAgICAgICAgICAobGV2ZWxfYml0cyA6IE51bV9rZXlfYml0cy50KVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbGV0IGtleXNfcGVyX3Nsb3QgPSBLZXkubnVtX2tleXMgYml0c19wZXJfc2xvdCBpblxuICAgICAgICAgICAgICBsZXQgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suY3JlYXRlIH5iaXRzX3Blcl9zbG90IGluXG4gICAgICAgICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgIEtleS5taW5fa2V5X2luX3NhbWVfc2xvdCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1heF9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgS2V5LmFkZF9jbGFtcF90b19tYXggbWluX2FsbG93ZWRfa2V5IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbGV2ZWwgPVxuICAgICAgICAgICAgICAgIHsgTGV2ZWwuaW5kZXhcbiAgICAgICAgICAgICAgICA7IGJpdHMgPSBsZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgOyBzbG90c19tYXNrID0gU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHNcbiAgICAgICAgICAgICAgICA7IGJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICA7IGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICA7IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgICA7IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgICAgICAgICAgIDsgbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgOyBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICA7IHNsb3RzID1cbiAgICAgICAgICAgICAgICAgICAgQXJyYXkuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbjooSW50NjMudG9faW50X2V4biAoTnVtX2tleV9iaXRzLnBvdzIgbGV2ZWxfYml0cykpXG4gICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICwgS2V5LnN1Y2NfY2xhbXBfdG9fbWF4IG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAsIGxldmVsIDo6IGxldmVscyApKVxuICAgIGluXG4gICAgeyBsZW5ndGggPSAwXG4gICAgOyBwb29sID0gSW50ZXJuYWxfZWx0LlBvb2wuY3JlYXRlID9jYXBhY2l0eSAoKVxuICAgIDsgbWluX2VsdCA9IEludGVybmFsX2VsdC5udWxsICgpXG4gICAgOyBlbHRfa2V5X2xvd2VyX2JvdW5kID0gS2V5Lnplcm9cbiAgICA7IGxldmVscyA9IEFycmF5Lm9mX2xpc3RfcmV2IGxldmVsc1xuICAgIH1cbiAgOztcblxuICBsZXQgbWVtIHQgZWx0ID0gSW50ZXJuYWxfZWx0LmV4dGVybmFsX2lzX3ZhbGlkIHQucG9vbCBlbHRcblxuICBsZXQgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGlmIEludGVybmFsX2VsdC5lcXVhbCBlbHQgdC5taW5fZWx0XG4gICAgdGhlblxuICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgKCogV2Uga2VlcCBbdC5lbHRfbG93ZXJfYm91bmRdIHNpbmNlIGl0IGlzIHZhbGlkIGV2ZW4gdGhvdWdoIFt0Lm1pbl9lbHRdIGlzIGJlaW5nXG4gICAgICAgcmVtb3ZlZC4gKik7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLihJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQpIGluXG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCAtIDE7XG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCkgaW5cbiAgICBsZXQgZmlyc3QgPSBzbG90cy4oc2xvdCkgaW5cbiAgICBpZiBwaHlzX2VxdWFsIGVsdCAoSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQpXG4gICAgdGhlbiAoKiBbZWx0XSBpcyB0aGUgb25seSBlbGVtZW50IGluIHRoZSBzbG90ICopXG4gICAgICBzbG90cy4oc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIChcbiAgICAgIGlmIHBoeXNfZXF1YWwgZWx0IGZpcnN0IHRoZW4gc2xvdHMuKHNsb3QpIDwtIEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0O1xuICAgICAgSW50ZXJuYWxfZWx0LnVubGluayBwb29sIGVsdClcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHBvb2wgZWx0IGluXG4gICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0XG4gIDs7XG5cbiAgbGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkIH5rZXkgfm5vdyA9XG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKDApIGluXG4gICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXkgaW5cbiAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGZpcnN0ID0gcmVmIHNsb3RzLihzbG90KSBpblxuICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCAhZmlyc3QpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGN1cnJlbnQgPSByZWYgIWZpcnN0IGluXG4gICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAgIGxldCBlbHQgPSAhY3VycmVudCBpblxuICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgIWZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHQ7XG4gICAgICAgICAgaWYgVGltZV9ucy4oIDw9ICkgKEludGVybmFsX2VsdC5hdCBwb29sIGVsdCkgbm93XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBoYW5kbGVfZmlyZWQgKEludGVybmFsX2VsdC50b19leHRlcm5hbCBlbHQpO1xuICAgICAgICAgICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHQ7XG4gICAgICAgICAgICAoKiBXZSByZWNvbXB1dGUgW2ZpcnN0XSBiZWNhdXNlIFtpbnRlcm5hbF9yZW1vdmVdIG1heSBoYXZlIGNoYW5nZWQgaXQuICopXG4gICAgICAgICAgICBmaXJzdCA6PSBzbG90cy4oc2xvdCkpXG4gICAgICAgIGRvbmUpKVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgdCBlbHQgfmtleSB+YXQgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcG9vbCBlbHQgaW5cbiAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9rZXkgcG9vbCBlbHQga2V5O1xuICAgIEludGVybmFsX2VsdC5zZXRfYXQgcG9vbCBlbHQgYXQ7XG4gICAgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdFxuICA7O1xuXG4gIGxldCBjbGVhciB0ID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBmcmVlX2VsdCBlbHQgPSBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV2ZWwubGVuZ3RoIDwtIDA7XG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmY6ZnJlZV9lbHQ7XG4gICAgICAgICAgICAgIHNsb3RzLihzbG90X2luZGV4KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxfZWx0ID0gUHJpb3JpdHlfcXVldWUuSW50ZXJuYWxfZWx0XG5tb2R1bGUgS2V5ID0gUHJpb3JpdHlfcXVldWUuS2V5XG5tb2R1bGUgSW50ZXJ2YWxfbnVtID0gS2V5XG5cbmxldCBtaW5faW50ZXJ2YWxfbnVtID0gSW50ZXJ2YWxfbnVtLnplcm9cblxuKCogQWxsIHRpbWUgZnJvbSB0aGUgZXBvY2ggb253YXJkcyBpcyBicm9rZW4gaW50byBoYWxmLW9wZW4gaW50ZXJ2YWxzIG9mIHNpemVcbiAgIFtDb25maWcuYWxhcm1fcHJlY2lzaW9uIGNvbmZpZ10uICBUaGUgaW50ZXJ2YWxzIGFyZSBudW1iZXJlZCBzdGFydGluZyBhdCB6ZXJvLCBhbmQgYVxuICAgdGltZSdzIGludGVydmFsIG51bWJlciBzZXJ2ZXMgYXMgaXRzIGtleSBpbiBbcHJpb3JpdHlfcXVldWVdLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBjb25maWcgOiBDb25maWcudFxuICA7IHN0YXJ0IDogVGltZV9ucy50XG4gIDsgKCogW21heF9pbnRlcnZhbF9udW1dIGlzIHRoZSBpbnRlcnZhbCBudW1iZXIgb2YgW21heF90aW1lXS4gKilcbiAgICBtYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnRcbiAgOyBtdXRhYmxlIG5vdyA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbm93X2ludGVydmFsX251bV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudFxuICA7IHByaW9yaXR5X3F1ZXVlIDogJ2EgUHJpb3JpdHlfcXVldWUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdGltaW5nX3doZWVsID0gJ2EgdFxudHlwZSAnYSB0X25vdyA9ICdhIHRcblxubGV0IHNleHBfb2ZfdF9ub3cgXyB0ID0gWyVzZXhwICh0Lm5vdyA6IFRpbWVfbnMudCldXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBDb25maWcuYWxhcm1fcHJlY2lzaW9uIHQuY29uZmlnXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmlvcml0eV9xdWV1ZS5FbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBudWxsID0gUHJpb3JpdHlfcXVldWUuRWx0Lm51bGxcbiAgbGV0IGF0IHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQuYXQgdHcucHJpb3JpdHlfcXVldWUgdFxuICBsZXQgdmFsdWUgdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC52YWx1ZSB0dy5wcmlvcml0eV9xdWV1ZSB0XG4gIGxldCBpbnRlcnZhbF9udW0gdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5rZXkgdHcucHJpb3JpdHlfcXVldWUgdFxuZW5kXG5cbmxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbmxldCBpdGVyIHQgfmYgPSBQcmlvcml0eV9xdWV1ZS5pdGVyIHQucHJpb3JpdHlfcXVldWUgfmZcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBhdCA6IFRpbWVfbnMudFxuICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSB0IGFsYXJtID0geyBhdCA9IEFsYXJtLmF0IHQgYWxhcm07IHZhbHVlID0gQWxhcm0udmFsdWUgdCBhbGFybSB9XG4gICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBUaW1lX25zLmNvbXBhcmUgKGF0IHQxKSAoYXQgdDIpXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBjb25maWcgOiBDb25maWcudFxuICAgIDsgc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udFxuICAgIDsgbm93IDogVGltZV9ucy50XG4gICAgOyBhbGFybXMgOiAnYSBBbGFybS50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IHByZXR0eVxuICAgICAgKHsgY29uZmlnXG4gICAgICAgOyBzdGFydFxuICAgICAgIDsgbWF4X2ludGVydmFsX251bVxuICAgICAgIDsgbm93XG4gICAgICAgOyBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0ID0gX1xuICAgICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IF9cbiAgICAgICA7IHByaW9yaXR5X3F1ZXVlID0gX1xuICAgICAgIH0gYXMgdClcbiAgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IHIgOj0gUHJldHR5LkFsYXJtLmNyZWF0ZSB0IGEgOjogIXIpO1xuICBsZXQgYWxhcm1zID0gTGlzdC5zb3J0ICFyIH5jb21wYXJlOlByZXR0eS5BbGFybS5jb21wYXJlIGluXG4gIHsgUHJldHR5LmNvbmZpZzsgc3RhcnQ7IG1heF9pbnRlcnZhbF9udW07IG5vdzsgYWxhcm1zIH1cbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgfCBgSW50ZXJuYWwgLT4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2ZfYSB0XG4gIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBQcmlvcml0eV9xdWV1ZS5sZW5ndGggdC5wcmlvcml0eV9xdWV1ZVxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X3dpdGhfYWxsX2FsYXJtc19pbl9tYXhfaW50ZXJ2YWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHdpdGggYWxsIGFsYXJtcyBpbiBtYXggaW50ZXJ2YWxcIlxuICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbjs7XG5cbmxldCBwb29sIHQgPSBQcmlvcml0eV9xdWV1ZS5wb29sIHQucHJpb3JpdHlfcXVldWVcblxubGV0IGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZSB+YWxhcm1fcHJlY2lzaW9uID1cbiAgSW50ZXJ2YWxfbnVtLm9mX2ludDYzIChBbGFybV9wcmVjaXNpb24uaW50ZXJ2YWxfbnVtIGFsYXJtX3ByZWNpc2lvbiB0aW1lKVxuOztcblxubGV0IGludGVydmFsX251bV91bmNoZWNrZWQgdCB0aW1lID1cbiAgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lIH5hbGFybV9wcmVjaXNpb246dC5jb25maWcuYWxhcm1fcHJlY2lzaW9uXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtIHQgdGltZSA9XG4gIGlmIFRpbWVfbnMuKCA8ICkgdGltZSBtaW5fdGltZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bSBnb3QgdGltZSB0b28gZmFyIGluIHRoZSBwYXN0XCIgKHRpbWUgOiBUaW1lX25zLnQpXTtcbiAgaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRpbWVcbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgaW50ZXJ2YWxfbnVtID1cbiAgQWxhcm1fcHJlY2lzaW9uLmludGVydmFsX251bV9zdGFydFxuICAgIHQuY29uZmlnLmFsYXJtX3ByZWNpc2lvblxuICAgIChpbnRlcnZhbF9udW0gfD4gSW50ZXJ2YWxfbnVtLnRvX2ludDYzKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW0gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW1fc3RhcnQgZ290IHRvbyBzbWFsbCBpbnRlcnZhbF9udW1cIlxuICAgICAgICAoaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXG4gICAgICAgIChtaW5faW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19sYXJnZSB0IGludGVydmFsX251bSA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bV9zdGFydCBnb3QgdG9vIGxhcmdlIGludGVydmFsX251bVwiXG4gICAgICAgIChpbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udClcbiAgICAgICAgKHQubWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50KV1cbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICBpZiBJbnRlcnZhbF9udW0uKCA8ICkgaW50ZXJ2YWxfbnVtIG1pbl9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW07XG4gIGlmIEludGVydmFsX251bS4oID4gKSBpbnRlcnZhbF9udW0gdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fbGFyZ2UgdCBpbnRlcnZhbF9udW07XG4gIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBpbnRlcnZhbF9udW1cbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5ID1cbiAgKCogW2ludGVydmFsX251bV9zdGFydCB0IGtleV0gaXMgdGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdGFydCBvZiB0aGUgdGltZSBpbnRlcnZhbFxuICAgICBob2xkaW5nIHRoZSBmaXJzdCBhbGFybSBpbiBbdF0uICBBZHZhbmNpbmcgdG8gdGhhdCB3b3VsZCBub3QgYmUgZW5vdWdoLCBzaW5jZSB0aGVcbiAgICAgYWxhcm1zIGluIHRoYXQgaW50ZXJ2YWwgZG9uJ3QgZmlyZSB1bnRpbCB0aGUgY2xvY2sgaXMgYWR2YW5jZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZVxuICAgICBuZXh0IGludGVydmFsLiAgU28sIHdlIHVzZSBbc3VjYyBrZXldIHRvIGFkdmFuY2UgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgIGludGVydmFsLiAqKVxuICBpbnRlcnZhbF9udW1fc3RhcnQgdCAoS2V5LnN1Y2Mga2V5KVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gICAgaWYgSW50ZXJ2YWxfbnVtLmVxdWFsIGtleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXkpKVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdDtcbiAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gIGlmIEludGVydmFsX251bS5lcXVhbCBrZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF93aXRoX2FsbF9hbGFybXNfaW5fbWF4X2ludGVydmFsIHQ7XG4gIG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXlcbjs7XG5cbmxldCBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9XG4gIGxldCBtYXhfYWxsb3dlZF9rZXkgPSBQcmlvcml0eV9xdWV1ZS5tYXhfYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcnZhbF9udW0uKCA+PSApIG1heF9hbGxvd2VkX2tleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiBtYXhfdGltZVxuICBlbHNlXG4gICAgVGltZV9ucy5hZGRcbiAgICAgIChpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgbWF4X2FsbG93ZWRfa2V5KVxuICAgICAgKFRpbWVfbnMuU3Bhbi4oIC0gKSAoYWxhcm1fcHJlY2lzaW9uIHQpIFRpbWVfbnMuU3Bhbi5uYW5vc2Vjb25kKVxuOztcblxubGV0IG5vd19pbnRlcnZhbF9udW0gdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWluX2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtID0gbm93X2ludGVydmFsX251bVxubGV0IG1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSB0ID0gaW50ZXJ2YWxfbnVtIHQgKG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbmxldCBpbnRlcnZhbF9zdGFydCB0IHRpbWUgPSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgKGludGVydmFsX251bSB0IHRpbWUpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb25maWc6KGNoZWNrIENvbmZpZy5pbnZhcmlhbnQpXG4gICAgICB+c3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuIHN0YXJ0IC0+XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oID49ICkgc3RhcnQgbWluX3RpbWUpO1xuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIHN0YXJ0IG1heF90aW1lKSkpXG4gICAgICB+bWF4X2ludGVydmFsX251bTpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2ludGVydmFsX251bSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgbWF4X3RpbWUpO1xuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgKGludGVydmFsX251bV9zdGFydCB0IG1heF9pbnRlcnZhbF9udW0pKSkpXG4gICAgICB+bm93OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3cgLT5cbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPj0gKSBub3cgdC5zdGFydCk7XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgbm93IG1heF90aW1lKTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCB0Lm5vdylcbiAgICAgICAgICAgICAgIChQcmlvcml0eV9xdWV1ZS5taW5fYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSkpKSlcbiAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gICAgICAgICAgICAgfmV4cGVjdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgKG5vd19pbnRlcnZhbF9udW0gdCkpKSlcbiAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9hbGFybV90aW1lIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBtYXhfYWxsb3dlZF9hbGFybV90aW1lXG4gICAgICAgICAgICAgfmV4cGVjdDooY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKSlcbiAgICAgIH5wcmlvcml0eV9xdWV1ZTooY2hlY2sgKFByaW9yaXR5X3F1ZXVlLmludmFyaWFudCBpbnZhcmlhbnRfYSkpO1xuICAgIGl0ZXIgdCB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAoQWxhcm0uaW50ZXJ2YWxfbnVtIHQgYWxhcm0pXG4gICAgICAgICAgKGludGVydmFsX251bSB0IChBbGFybS5hdCB0IGFsYXJtKSkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgVGltZV9ucy4oID49ICkgKGludGVydmFsX3N0YXJ0IHQgKEFsYXJtLmF0IHQgYWxhcm0pKSAoaW50ZXJ2YWxfc3RhcnQgdCAobm93IHQpKSk7XG4gICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgKEFsYXJtLmF0IHQgYWxhcm0pIChUaW1lX25zLnN1YiAobm93IHQpIChhbGFybV9wcmVjaXNpb24gdCkpKSkpXG47O1xuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfmhhbmRsZV9maXJlZCA9XG4gIGlmIFRpbWVfbnMuKCA+ICkgdG9fIChub3cgdClcbiAgdGhlbiAoXG4gICAgdC5ub3cgPC0gdG9fO1xuICAgIGxldCBrZXkgPSBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdG9fIGluXG4gICAgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDwtIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBrZXk7XG4gICAgbWF0Y2hcbiAgICAgIFByaW9yaXR5X3F1ZXVlLmluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgIH5rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkOmhhbmRsZV9maXJlZFxuICAgIHdpdGhcbiAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZSAtPlxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPSApIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSAoY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKVxuICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWQgLT5cbiAgICAgIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA8LSBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbjs7XG5cbmxldCBjcmVhdGUgfmNvbmZpZyB+c3RhcnQgPVxuICBpZiBUaW1lX25zLiggPCApIHN0YXJ0IFRpbWVfbnMuZXBvY2hcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbC5jcmVhdGUgZ290IHN0YXJ0IGJlZm9yZSB0aGUgZXBvY2hcIiAoc3RhcnQgOiBUaW1lX25zLnQpXTtcbiAgbGV0IHQgPVxuICAgIHsgY29uZmlnXG4gICAgOyBzdGFydFxuICAgIDsgbWF4X2ludGVydmFsX251bSA9XG4gICAgICAgIGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZTptYXhfdGltZSB+YWxhcm1fcHJlY2lzaW9uOmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbiAgICA7IG5vdyA9IFRpbWVfbnMubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgbm93X2ludGVydmFsX251bV9zdGFydCA9XG4gICAgICAgIFRpbWVfbnMubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IG1heF90aW1lICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IHByaW9yaXR5X3F1ZXVlID1cbiAgICAgICAgUHJpb3JpdHlfcXVldWUuY3JlYXRlID9jYXBhY2l0eTpjb25maWcuY2FwYWNpdHkgfmxldmVsX2JpdHM6Y29uZmlnLmxldmVsX2JpdHMgKClcbiAgICB9XG4gIGluXG4gIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA8LSBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdDtcbiAgYWR2YW5jZV9jbG9jayB0IH50b186c3RhcnQgfmhhbmRsZV9maXJlZDooZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgdFxuOztcblxubGV0IGFkZF9hdF9pbnRlcnZhbF9udW0gdCB+YXQgdmFsdWUgPVxuICBJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWxcbiAgICAoUHJpb3JpdHlfcXVldWUuaW50ZXJuYWxfYWRkXG4gICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgIH5rZXk6YXRcbiAgICAgICB+YXQ6KGludGVydmFsX251bV9zdGFydCB0IGF0KVxuICAgICAgIHZhbHVlKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbCBjYW5ub3Qgc2NoZWR1bGUgYWxhcm0gdGhhdCBmYXIgaW4gdGhlIGZ1dHVyZVwiXG4gICAgICAgIChhdCA6IFRpbWVfbnMudClcbiAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX3RpbWU6KHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2JlZm9yZV9zdGFydF9vZl9jdXJyZW50X2ludGVydmFsIHQgYXQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbCBjYW5ub3Qgc2NoZWR1bGUgYWxhcm0gYmVmb3JlIHN0YXJ0IG9mIGN1cnJlbnQgaW50ZXJ2YWxcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Oih0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnQgOiBUaW1lX25zLnQpXVxuOztcblxubGV0IGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQgPVxuICBpZiBUaW1lX25zLiggPiApIGF0IHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0aGVuIHJhaXNlX3RoYXRfZmFyX2luX3RoZV9mdXR1cmUgdCBhdDtcbiAgaWYgVGltZV9ucy4oIDwgKSBhdCB0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnRcbiAgdGhlbiByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0XG47O1xuXG5sZXQgYWRkIHQgfmF0IHZhbHVlID1cbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpXG4gICAgICAgfmF0XG4gICAgICAgdmFsdWUpXG47O1xuXG5sZXQgcmVtb3ZlIHQgYWxhcm0gPSBQcmlvcml0eV9xdWV1ZS5yZW1vdmUgdC5wcmlvcml0eV9xdWV1ZSBhbGFybVxubGV0IGNsZWFyIHQgPSBQcmlvcml0eV9xdWV1ZS5jbGVhciB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWVtIHQgYWxhcm0gPSBQcmlvcml0eV9xdWV1ZS5tZW0gdC5wcmlvcml0eV9xdWV1ZSBhbGFybVxuXG5sZXQgcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5IH5hdCA9XG4gIGlmIG5vdCAobWVtIHQgYWxhcm0pXG4gIHRoZW4gZmFpbHdpdGggXCJUaW1pbmdfd2hlZWwgY2Fubm90IHJlc2NoZWR1bGUgYWxhcm0gbm90IGluIHRpbWluZyB3aGVlbFwiO1xuICBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0O1xuICBQcmlvcml0eV9xdWV1ZS5jaGFuZ2UgdC5wcmlvcml0eV9xdWV1ZSBhbGFybSB+a2V5IH5hdFxuOztcblxubGV0IHJlc2NoZWR1bGUgdCBhbGFybSB+YXQgPSByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6KGludGVydmFsX251bV91bmNoZWNrZWQgdCBhdCkgfmF0XG5cbmxldCByZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSB0IGFsYXJtIH5hdCA9XG4gIHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleTphdCB+YXQ6KGludGVydmFsX251bV9zdGFydCB0IGF0KVxuOztcblxubGV0IG1pbl9hbGFybV9pbnRlcnZhbF9udW0gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWluX2FsYXJtX2ludGVydmFsX251bV9leG4gb2YgZW1wdHkgdGltaW5nX3doZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbiAgZWxzZSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdFxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQgPVxuICBsZXQgcG9vbCA9IHBvb2wgdCBpblxuICBJbnRlcm5hbF9lbHQubWF4X2FsYXJtX3RpbWUgcG9vbCBlbHQgfndpdGhfa2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQgPVxuICBsZXQgcG9vbCA9IHBvb2wgdCBpblxuICBJbnRlcm5hbF9lbHQubWluX2FsYXJtX3RpbWUgcG9vbCBlbHQgfndpdGhfa2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAobWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldO1xuICBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0XG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkID1cbiAgUHJpb3JpdHlfcXVldWUuZmlyZV9wYXN0X2FsYXJtc1xuICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICB+aGFuZGxlX2ZpcmVkXG4gICAgfmtleToobm93X2ludGVydmFsX251bSB0KVxuICAgIH5ub3c6dC5ub3dcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBOdW1fa2V5X2JpdHMgPSBOdW1fa2V5X2JpdHNcblxuICBsZXQgaW50ZXJ2YWxfbnVtX2ludGVybmFsID0gaW50ZXJ2YWxfbnVtX2ludGVybmFsXG4gIGxldCBtYXhfdGltZSA9IG1heF90aW1lXG5lbmRcbiIsIm1vZHVsZSBJbnJpYV9zeXMgPSBTeXNcbm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxub3BlbiBQb2x5XG5cbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxuXG5tb2R1bGUgRXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVGltZV9ucy5TcGFuXG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBUaW1lX25zLlNwYW4udmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gIGVuZClcblxubW9kdWxlIE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVGltZV9ucy5TcGFuXG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBUaW1lX25zLlNwYW4udmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IHN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50XG5cbiAgICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gICAgZW5kKVxuXG4gIGxldCBkZWZhdWx0ID0gY3JlYXRlX2V4biAoMSBsc2wgMTYpXG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbmVuZFxuXG5tb2R1bGUgTWF4X251bV90aHJlYWRzID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBEdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gc3RydWN0XG4gIG1vZHVsZSBIb3dfdG9fZHVtcCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IERlZmF1bHRcbiAgICAgIHwgQ2FsbF9hYm9ydFxuICAgICAgfCBDYWxsX2djb3JlXG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgdHlwZSB3YXRjaCA9XG4gICAgeyBkdW1wX2lmX2RlbGF5ZWRfYnkgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgaG93X3RvX2R1bXAgOiBIb3dfdG9fZHVtcC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIHR5cGUgdCA9XG4gICAgfCBXYXRjaCBvZiB3YXRjaFxuICAgIHwgRG9fbm90X3dhdGNoXG4gIFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubW9kdWxlIERlYnVnX3RhZyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEFsbFxuICAgICAgfCBDbG9ja1xuICAgICAgfCBGZFxuICAgICAgfCBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgICAgIHwgRmluYWxpemVyc1xuICAgICAgfCBJbnRlcnJ1cHRvclxuICAgICAgfCBNb25pdG9yXG4gICAgICB8IE1vbml0b3Jfc2VuZF9leG5cbiAgICAgIHwgUGFyYWxsZWxcbiAgICAgIHwgUmVhZGVyXG4gICAgICB8IFNjaGVkdWxlclxuICAgICAgfCBTaHV0ZG93blxuICAgICAgfCBUaHJlYWRfcG9vbFxuICAgICAgfCBUaHJlYWRfc2FmZVxuICAgICAgfCBXcml0ZXJcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCBsaXN0ID1cbiAgICBbIEFsbFxuICAgIDsgQ2xvY2tcbiAgICA7IEZkXG4gICAgOyBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgICA7IEZpbmFsaXplcnNcbiAgICA7IEludGVycnVwdG9yXG4gICAgOyBNb25pdG9yXG4gICAgOyBNb25pdG9yX3NlbmRfZXhuXG4gICAgOyBQYXJhbGxlbFxuICAgIDsgUmVhZGVyXG4gICAgOyBTY2hlZHVsZXJcbiAgICA7IFNodXRkb3duXG4gICAgOyBUaHJlYWRfcG9vbFxuICAgIDsgVGhyZWFkX3NhZmVcbiAgICA7IFdyaXRlclxuICAgIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9kZXNjcl93YXRjaGVyID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRXBvbGxfaWZfdGltZXJmZFxuICAgICAgfCBFcG9sbFxuICAgICAgfCBTZWxlY3RcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCBsaXN0ID0gWyBFcG9sbF9pZl90aW1lcmZkOyBFcG9sbDsgU2VsZWN0IF1cbmVuZFxuXG50eXBlIHQgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGNoZWNrX2ludmFyaWFudHMgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA6IER1bXBfY29yZV9vbl9qb2JfZGVsYXkudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzIDogRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA6IEZpbGVfZGVzY3Jfd2F0Y2hlci50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0IDogTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgOiBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX3RocmVhZHMgOiBNYXhfbnVtX3RocmVhZHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnQgb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHNleHAub3B0aW9uXVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0IDogTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgOiBEZWJ1Z190YWcudCBsaXN0IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IDogVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA6IFRpbWluZ193aGVlbC5Db25maWcudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG5sZXQgZW1wdHkgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IE5vbmVcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gTm9uZVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IE5vbmVcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gTm9uZVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBOb25lXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gTm9uZVxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IE5vbmVcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBOb25lXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBOb25lXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBOb25lXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gTm9uZVxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gTm9uZVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gTm9uZVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBOb25lXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVcbiAgICAgID9hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgICAgID9jaGVja19pbnZhcmlhbnRzXG4gICAgICA/ZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gICAgICA/ZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICAgICAgP2Vwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgICAgID9maWxlX2Rlc2NyX3dhdGNoZXJcbiAgICAgID9tYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICAgICAgP21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICAgICAgP21heF9udW1fdGhyZWFkc1xuICAgICAgP21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gICAgICA/bWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9wcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgICAgID9yZWNvcmRfYmFja3RyYWNlc1xuICAgICAgP3JlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgICAgID90aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgICAgID90aW1pbmdfd2hlZWxfY29uZmlnXG4gICAgICAoKVxuICA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgY2hlY2tfaW52YXJpYW50c1xuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgOyBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXNcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2Zvcl93b3JkX3NpemUgKHdvcmRfc2l6ZSA6IFdvcmRfc2l6ZS50KSA9XG4gIGxldCBtb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvbiBpblxuICBsZXQgYWxhcm1fcHJlY2lzaW9uLCBsZXZlbF9iaXRzID1cbiAgICBtYXRjaCB3b3JkX3NpemUgd2l0aFxuICAgIHwgVzMyIC0+IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQsIFsgMTA7IDEwOyA5IF1cbiAgICB8IFc2NCAtPiBBbGFybV9wcmVjaXNpb24uKGRpdiBhYm91dF9vbmVfbWlsbGlzZWNvbmQgfnBvdzI6MyksIFsgMTQ7IDE1OyA5OyA2IF1cbiAgaW5cbiAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICB+YWxhcm1fcHJlY2lzaW9uXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gbGV2ZWxfYml0cylcbiAgICAoKVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gIGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplIFdvcmRfc2l6ZS53b3JkX3NpemVcbjs7XG5cbmxldCBkZWZhdWx0ID1cbiAgKCogRm9yIFtmaWxlX2Rlc2NyX3dhdGNoZXJdIGFuZCBbbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXSB3ZSBjaG9vc2UgdGhlIGRlZmF1bHQgZm9yIHRoZVxuICAgICBjb21tb24gY2FzZSB0aGF0IFtlcG9sbF0gaXMgYXZhaWxhYmxlLiAgVGhlcmUgaXMgc29tZSBhZGRpdGlvbmFsIGNvZGUgaW5cbiAgICAgW0FzeW5jX3VuaXguQ29uZmlnXSB0aGF0IGNoZWNrcyB3aGV0aGVyIFtlcG9sbF0gaXMgYWN0dWFsbHkgYXZhaWxhYmxlLCBhbmQgaWYgbm90LFxuICAgICB1c2VzIFtzZWxlY3RdIGFuZCBhIHNtYWxsZXIgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMuICopXG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSAoc2VjIDYwLilcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gU29tZSBmYWxzZVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IFNvbWUgZmFsc2VcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gU29tZSBEb19ub3Rfd2F0Y2hcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gU29tZSAoRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy5jcmVhdGVfZXhuIDI1NilcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIEVwb2xsX2lmX3RpbWVyZmRcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgKE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LmNyZWF0ZV9leG4gKHNlYyAwLjA1KSlcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBTb21lIE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy5kZWZhdWx0XG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSAoTWF4X251bV90aHJlYWRzLmNyZWF0ZV9leG4gNTApXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICAgICAgU29tZSAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biA1MDApXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNaW5faW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4pKVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgW11cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IFNvbWUgZmFsc2VcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSAoc2VjIDEuKVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IFNvbWUgSW5oZXJpdFxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBTb21lIGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgZXhhbXBsZSA9XG4gIHsgZGVmYXVsdCB3aXRoXG4gICAgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gU29tZSBEZWJ1Z190YWcuWyBGZDsgU2NoZWR1bGVyIF1cbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPVxuICAgICAgU29tZVxuICAgICAgICAoQ3B1c2V0XG4gICAgICAgICAgIChbIDA7IDE7IDIgXSB8PiBJbnQuU2V0Lm9mX2xpc3QgfD4gVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LkNwdXNldC5jcmVhdGVfZXhuKSlcbiAgfVxuOztcblxubGV0IGVudmlyb25tZW50X3ZhcmlhYmxlID0gXCJBU1lOQ19DT05GSUdcIlxuXG5sZXQgZmllbGRfZGVzY3JpcHRpb25zICgpIDogc3RyaW5nID1cbiAgbGV0IGZpZWxkIHRvX3NleHAgZGVzY3JpcHRpb24gYWMgZmllbGQgPVxuICAgIChGaWVsZC5uYW1lIGZpZWxkLCB0b19zZXhwIChPcHRpb24udmFsdWVfZXhuIChGaWVsZC5nZXQgZmllbGQgZGVmYXVsdCkpLCBkZXNjcmlwdGlvbilcbiAgICA6OiBhY1xuICBpblxuICBsZXQgZmllbGRzID1cbiAgICBGaWVsZHMuZm9sZFxuICAgICAgfmluaXQ6W11cbiAgICAgIH5hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XVxuICAgICAgICAgICBbIHt8XG4gIEJ5IGRlZmF1bHQsIEFzeW5jIHdpbGwgc2VuZCBhbiBleGNlcHRpb24gdG8gdGhlIHRvcGxldmVsIG1vbml0b3JcbiAgaWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+Y2hlY2tfaW52YXJpYW50czpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgdG8gcmVndWxhcmx5IGNoZWNrIGludmFyaWFudHMgb2YgaXRzIGludGVybmFsXG4gIGRhdGEgc3RydWN0dXJlcy4gIFRoaXMgY2FuIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIHlvdXIgcHJvZ3JhbS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIGNhdXNlcyBBc3luYyByb3V0aW5lcyB0byBjaGVjayBpZiB0aGV5IGFyZSBiZWluZyBhY2Nlc3NlZFxuICBmcm9tIHNvbWUgdGhyZWFkIG90aGVyIHRoYW4gdGhlIHRocmVhZCBjdXJyZW50bHkgaG9sZGluZyB0aGUgQXN5bmNcbiAgbG9jaywgd2hpY2ggaXMgbm90IGFsbG93ZWQgYW5kIGNhbiBsZWFkIHRvIHZlcnkgY29uZnVzaW5nIGJlaGF2aW9yLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5kdW1wX2NvcmVfb25fam9iX2RlbGF5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnRdXG4gICAgICAgICAgIFsge3xcbiAgQ2FuIGJlIHNldCB0byBbRG9fbm90X3dhdGNoXSBvcjpcblxuICAgIChXYXRjaCAoKGR1bXBfaWZfZGVsYXllZF9ieSBTUEFOKSAoaG93X3RvX2R1bXAgSE9XKSkpXG5cbiAgSWYgc2V0IHRvIFtXYXRjaF0sIHRoZW4gb24gcHJvZ3JhbSBzdGFydCB0aGlzIHdpbGwgc3RhcnQgYSByZWd1bGFyXG4gIEFzeW5jIGpvYiB0aGF0IGluY3JlbWVudHMgYSBjb3VudGVyLCBhbmQgYSBDIHRocmVhZCB0aGF0IHdpbGxcbiAgZGV0ZWN0IGlmIHRoYXQgam9iIGlzIGRlbGF5ZWQgYnkgW2R1bXBfaWZfZGVsYXllZF9ieV0sIGFuZCBpZiBzbyxcbiAgd2lsbCBjb3JlIGR1bXAgdGhlIHByb2dyYW0uICBJZiBhdmFpbGFibGUsIFsvdXNyL2Jpbi9nY29yZV0gaXNcbiAgdXNlZCBieSBkZWZhdWx0IHRvIGR1bXAgdGhlIGNvcmUsIHdoaWNoIHNob3VsZCBhbGxvdyB0aGUgcHJvZ3JhbVxuICB0byBjb250aW51ZSBydW5uaW5nLiAgT3RoZXJ3aXNlLCBbYWJvcnRdIHdpbGwgYmUgY2FsbGVkIGZyb20gQyxcbiAgd2hpY2ggd2lsbCBraWxsIHRoZSBwcm9ncmFtIHdoaWxlIGNhdXNpbmcgYSBjb3JlIGR1bXAuICBPbmUgY2FuXG4gIGZvcmNlIFthYm9ydF0gb3IgW2djb3JlXSB2aWEgW2hvd190b19kdW1wXSwgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZjpcbiAgW0NhbGxfYWJvcnRdLCBbQ2FsbF9nY29yZV0sIG9yIFtEZWZhdWx0XS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZXBvbGxfbWF4X3JlYWR5X2V2ZW50czpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZWFkeSBldmVudHMgdGhhdCBBc3luYydzIGNhbGwgdG8gW0Vwb2xsLndhaXRdXG4gIHdpbGwgaGFuZGxlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5maWxlX2Rlc2NyX3dhdGNoZXI6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEZpbGVfZGVzY3Jfd2F0Y2hlci50XVxuICAgICAgICAgICBbIHt8XG4gIFRoaXMgZGV0ZXJtaW5lcyB3aGF0IE9TIHN1YnN5c3RlbSBBc3luYyB1c2VzIHRvIHdhdGNoIGZpbGUgZGVzY3JpcHRvcnMgZm9yIGJlaW5nIHJlYWR5LlxuICBUaGUgZGVmYXVsdCBpcyB0byB1c2UgW2Vwb2xsXSBpZiB0aW1lcmZkJ3MgYXJlIHN1cHBvcnRlZCBhbmQgaWYgbm90LCB1c2UgW3NlbGVjdF0uXG5cbiAgQWxsb3dlZCB2YWx1ZXMgYXJlOnx9XG4gICAgICAgICAgIDsgY29uY2F0XG4gICAgICAgICAgICAgICB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgKExpc3QubWFwIEZpbGVfZGVzY3Jfd2F0Y2hlci5saXN0IH5mOkZpbGVfZGVzY3Jfd2F0Y2hlci50b19zdHJpbmcpXG4gICAgICAgICAgIDsge3wuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fb3Blbl9maWxlX2Rlc2NyczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIChmdW4gZGVmYXVsdCAtPlxuICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgICB+XzpcbiAgICAgICAgICAgICAgICAgICAgKGNvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgICBbIFwibWluIFwiXG4gICAgICAgICAgICAgICAgICAgICAgIDsgZGVmYXVsdCB8PiBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMucmF3IHw+IEludC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAgICAgICAgICAgIDsgXCIgW3VsaW1pdCAtbiAtSF1cIlxuICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICA6IHN0cmluZyldKVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgYWxsb3dlZCBhdCBhbnkgb25lIHRpbWUufH0gXSlcbiAgICAgIH5tYXhfbnVtX3RocmVhZHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9udW1fdGhyZWFkcy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgQXN5bmMgd2lsbCBjcmVhdGUgdG8gZG8gYmxvY2tpbmdcbiAgc3lzdGVtIGNhbGxzIGFuZCBoYW5kbGUgY2FsbHMgdG8gW0luX3RocmVhZC5ydW5dLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfaW50ZXJfY3ljbGVfdGltZW91dDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0aGUgc2NoZWR1bGVyIHdpbGwgcGF1c2UgYmV0d2VlbiBjeWNsZXNcbiAgd2hlbiBpdCBoYXMgbm8gam9icyBhbmQgaXMgZ29pbmcgdG8gd2FpdCBmb3IgSS9PLiAgSW4gcHJpbmNpcGxlIG9uZVxuICBkb2Vzbid0IG5lZWQgdGhpcywgYW5kIHdlIGNvdWxkIHVzZSBhbiBpbmZpbml0ZSB0aW1lb3V0LiAgV2UgaW5zdGVhZFxuICB1c2UgYSBzbWFsbCB0aW1lb3V0IChieSBkZWZhdWx0KSwgdG8gYmUgbW9yZSByb2J1c3QgdG8gYnVncyB0aGF0XG4gIGNvdWxkIHByZXZlbnQgQXN5bmMgZnJvbSB3YWtpbmcgdXAgYW5kIHNlcnZpY2luZyBldmVudHMuICBGb3JcbiAgZXhhbXBsZSwgYXMgb2YgMjAxMy0wMSwgdGhlIE9DYW1sIHJ1bnRpbWUgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIGl0XG4gIHRvIG5vdCBuZWNlc3NhcmlseSBydW4gYW4gT0NhbWwgc2lnbmFsIGhhbmRsZXIgaW4gYSB0aW1lbHkgbWFubmVyLlxuICBUaGlzIGluIHR1cm4gY2FuIGNhdXNlIGEgc2ltcGxlIEFzeW5jIHByb2dyYW0gdGhhdCBpcyB3YWl0aW5nIG9uIGFcbiAgc2lnbmFsIHRvIGhhbmcsIHdoZW4gaW4gZmFjdCBpdCBzaG91bGQgaGFuZGxlIHRoZSBzaWduYWwuXG5cbiAgV2UgdXNlIDUwbXMgYXMgdGhlIGRlZmF1bHQgdGltZW91dCwgYmVjYXVzZSBpdCBpcyBpbmZyZXF1ZW50IGVub3VnaFxuICB0byBoYXZlIGEgbmVnbGlnaWJsZSBwZXJmb3JtYW5jZSBpbXBhY3QsIGFuZCBmcmVxdWVudCBlbm91Z2ggdGhhdFxuICB0aGUgbGF0ZW5jeSB3b3VsZCB0eXBpY2FsbHkgYmUgbm90IG5vdGljZWFibGUuICBBbHNvLCA1MG1zIGlzIHdoYXRcbiAgdGhlIE9DYW1sIHRpY2tlciB0aHJlYWQgdXNlcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGpvYnMgdGhhdCB3aWxsIGJlIGRvbmUgYXQgZWFjaCBwcmlvcml0eSB3aXRoaW5cbiAgZWFjaCBBc3luYyBjeWNsZS4gIFRoaXMgbGltaXRzIGhvdyBtYW55IGpvYnMgdGhlIHNjaGVkdWxlciB3aWxsIHJ1blxuICBiZWZvcmUgcGF1c2luZyB0byBjaGVjayBmb3IgSS9PLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5taW5faW50ZXJfY3ljbGVfdGltZW91dDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWluaW11bSB0aW1lb3V0IHRoZSBzY2hlZHVsZXIgd2lsbCBwYXNzIHRvIHRoZSBPUyB3aGVuIGl0IGNoZWNrc1xuICBmb3IgSS9PIGJldHdlZW4gY3ljbGVzLiAgVGhpcyBpcyB6ZXJvIGJ5IGRlZmF1bHQuICBTZXR0aW5nIGl0IHRvIGFcbiAgbm9uemVybyB2YWx1ZSBpcyB1c2VkIHRvIGluY3JlYXNlIHRocmVhZCBmYWlybmVzcyBiZXR3ZWVuIHRoZSBzY2hlZHVsZXJcbiAgYW5kIG90aGVyIHRocmVhZHMuICBBIHBsYXVzaWJsZSBzZXR0aW5nIGlzIDF1cy4gIFRoaXMgaXMgYWxzb1xuICBjb25maWd1cmFibGUgaW4gT0NhbWwgdmlhIFtTY2hlZHVsZXIuc2V0X21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBEZWJ1Z190YWcudCBsaXN0XVxuICAgICAgICAgICBbIHt8XG4gIEEgbGlzdCBvZiB0YWdzIHNwZWNpZnlpbmcgd2hpY2ggQXN5bmMgZnVuY3Rpb25zIHNob3VsZCBwcmludCBkZWJ1Z1xuICBtZXNzYWdlcyB0byBzdGRlcnIuICBFYWNoIHRhZyBpZGVudGlmaWVzIGEgZ3JvdXAgb2YgcmVsYXRlZCBBc3luY1xuICBmdW5jdGlvbnMuICBUaGUgdGFnIFthbGxdIG1lYW5zIHRvIHByaW50IGRlYnVnIG1lc3NhZ2VzIGZvciBhbGxcbiAgZnVuY3Rpb25zLiAgQWxsb3dlZCB2YWx1ZXMgYXJlOlxuXG58fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgKExpc3QubWFwIERlYnVnX3RhZy5saXN0IH5mOihmdW4gZCAtPlxuICAgICAgICAgICAgICAgICAgY29uY2F0IFsgXCIgICAgXCI7IERlYnVnX3RhZy50b19zdHJpbmcgZDsgXCJcXG5cIiBdKSlcbiAgICAgICAgICAgOyB7fFxuICBUdXJuaW5nIG9uIGRlYnVnIG1lc3NhZ2VzIHdpbGwgc3Vic3RhbnRpYWxseSBzbG93IGRvd24gbW9zdCBwcm9ncmFtcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgdGhpcyB3aWxsIGNhdXNlIEFzeW5jIHRvIGtlZXAgaW4gdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRoZVxuICBoaXN0b3J5IG9mIHN0YWNrIGJhY2t0cmFjZXMgKG9idGFpbmVkIHZpYSBbQmFja3RyYWNlLmdldF0pIHRoYXQgbGVkXG4gIHRvIHRoZSBjdXJyZW50IGpvYi4gIElmIGFuIEFzeW5jIGpvYiBoYXMgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbixcbiAgdGhpcyBiYWNrdHJhY2UgaGlzdG9yeSB3aWxsIGJlIHJlY29yZGVkIGluIHRoZSBleGNlcHRpb24uICBJblxuICBwYXJ0aWN1bGFyIHRoZSBoaXN0b3J5IHdpbGwgYXBwZWFyIGluIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gdGhhdFxuICByZWFjaGVzIHRoZSBtYWluIG1vbml0b3IuICBUaGlzIGNhbiBoYXZlIGEgc3Vic3RhbnRpYWwgcGVyZm9ybWFuY2VcbiAgaW1wYWN0LCBib3RoIGluIHJ1bm5pbmcgdGltZSBhbmQgc3BhY2UgdXNhZ2UuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XVxuICAgICAgICAgICBbIHt8XG4gIEJ5IGRlZmF1bHQsIEFzeW5jIHdpbGwgcHJpbnQgYSBtZXNzYWdlIHRvIHN0ZGVyciBldmVyeSBzZWNvbmQgaWZcbiAgdGhlIHRocmVhZCBwb29sIGlzIHN0dWNrIGZvciBsb25nZXIgdGhhbiB0aGlzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHk6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50XVxuICAgICAgICAgICBbIHt8XG4gICBXaGV0aGVyIGFuZCBob3cgdGhyZWFkcyBpbiB0aGUgdGhyZWFkIHBvb2wgc2hvdWxkIGJlIGFmZmluaXRpemVkIHRvIENQVXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnRpbWluZ193aGVlbF9jb25maWc6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWluZ193aGVlbC5Db25maWcudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGlzIHVzZWQgdG8gYWRqdXN0IHRoZSB0aW1lL3NwYWNlIHRyYWRlb2ZmIGluIHRoZSB0aW1pbmcgd2hlZWxcbiAgdXNlZCB0byBpbXBsZW1lbnQgQXN5bmMncyBjbG9jay4gIFRpbWUgaXMgc3BsaXQgaW50byBpbnRlcnZhbHMgb2ZcbiAgc2l6ZSBbYWxhcm1fcHJlY2lzaW9uXSwgYW5kIGFsYXJtcyB3aXRoIHRpbWVzIGluIHRoZSBzYW1lIGludGVydmFsXG4gIGZpcmUgaW4gdGhlIHNhbWUgY3ljbGUuICBMZXZlbCBbaV0gaW4gdGhlIHRpbWluZyB3aGVlbCBoYXMgYW5cbiAgYXJyYXkgb2Ygc2l6ZSBbMl5iXSwgd2hlcmUgW2JdIGlzIHRoZSBbaV0ndGggZW50cnkgaW4gW2xldmVsX2JpdHNdLlxufH1cbiAgICAgICAgICAgXSlcbiAgaW5cbiAgY29uY2F0XG4gICAgKExpc3QubWFwXG4gICAgICAgKExpc3Quc29ydCBmaWVsZHMgfmNvbXBhcmU6KGZ1biAobmFtZTEsIF8sIF8pIChuYW1lMiwgXywgXykgLT5cbiAgICAgICAgICBTdHJpbmcuY29tcGFyZSBuYW1lMSBuYW1lMikpXG4gICAgICAgfmY6KGZ1biAobmFtZSwgZGVmYXVsdCwgZGVzY3JpcHRpb24pIC0+XG4gICAgICAgICBjb25jYXRcbiAgICAgICAgICAgKFwiXFxuXCIgOjogbmFtZSA6OiBcIiAoZGVmYXVsdCBcIiA6OiBTZXhwLnRvX3N0cmluZyBkZWZhdWx0IDo6IFwiKVwiIDo6IGRlc2NyaXB0aW9uKSkpXG47O1xuXG5sZXQgaGVscF9tZXNzYWdlICgpID1cbiAgY29uY2F0XG4gICAgWyBcIlRoZSBcIlxuICAgIDsgZW52aXJvbm1lbnRfdmFyaWFibGVcbiAgICA7IHt8IGVudmlyb25tZW50IHZhcmlhYmxlIGFmZmVjdHMgQXN5bmNcbmluIHZhcmlvdXMgd2F5cy4gIEl0cyB2YWx1ZSBzaG91bGQgYmUgYSBzZXhwIG9mIHRoZSBmb2xsb3dpbmcgZm9ybSxcbndoZXJlIGFsbCBmaWVsZHMgYXJlIG9wdGlvbmFsOlxuXG58fVxuICAgIDsgU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgZXhhbXBsZSlcbiAgICA7IHt8XG5cbkhlcmUgaXMgYW4gZXhwbGFuYXRpb24gb2YgZWFjaCBmaWVsZC5cbnx9XG4gICAgOyBmaWVsZF9kZXNjcmlwdGlvbnMgKClcbiAgICBdXG47O1xuXG5sZXQgdXNhZ2UgKCkgPVxuICBlcHJpbnRmIFwiJXMlIVwiIChoZWxwX21lc3NhZ2UgKCkpO1xuICBleGl0IDFcbjs7XG5cbmxldCB0ID1cbiAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gSW5yaWFfc3lzLmdldGVudiBlbnZpcm9ubWVudF92YXJpYWJsZSkgd2l0aFxuICB8IE5vbmUgLT4gZW1wdHlcbiAgfCBTb21lIFwiXCIgLT4gdXNhZ2UgKClcbiAgfCBTb21lIHN0cmluZyAtPlxuICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiB0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHN0cmluZykpIHdpdGhcbiAgICAgfCBPayB0IC0+IHRcbiAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICBlcHJpbnRmXG4gICAgICAgICBcIiVzXFxuXFxuXCJcbiAgICAgICAgIChTZXhwLnRvX3N0cmluZ19odW1cbiAgICAgICAgICAgIChFcnJvci5zZXhwX29mX3RcbiAgICAgICAgICAgICAgIChFcnJvci5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICBcImludmFsaWQgdmFsdWUgZm9yICVzIGVudmlyb25tZW50IHZhcmlhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50X3ZhcmlhYmxlKVxuICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICBbJXNleHBfb2Y6IGV4bl0pKSk7XG4gICAgICAgdXNhZ2UgKCkpXG47O1xuXG5tb2R1bGUgUHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gc3RydWN0XG4gIGxldCBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgdGFnID1cbiAgICBtYXRjaCB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGwgLT4gTGlzdC5tZW0gbCB0YWcgfmVxdWFsOkRlYnVnX3RhZy5lcXVhbFxuICA7O1xuXG4gIGxldCBhbGwgPSBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgQWxsXG4gIGxldCBkZWJ1ZyB0YWcgPSBhbGwgfHwgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZ1xuICBsZXQgY2xvY2sgPSBkZWJ1ZyBDbG9ja1xuICBsZXQgZmQgPSBkZWJ1ZyBGZFxuICBsZXQgZmlsZV9kZXNjcl93YXRjaGVyID0gZGVidWcgRmlsZV9kZXNjcl93YXRjaGVyXG4gIGxldCBmaW5hbGl6ZXJzID0gZGVidWcgRmluYWxpemVyc1xuICBsZXQgaW50ZXJydXB0b3IgPSBkZWJ1ZyBJbnRlcnJ1cHRvclxuICBsZXQgbW9uaXRvciA9IGRlYnVnIE1vbml0b3JcbiAgbGV0IG1vbml0b3Jfc2VuZF9leG4gPSBkZWJ1ZyBNb25pdG9yX3NlbmRfZXhuXG4gIGxldCBwYXJhbGxlbCA9IGRlYnVnIFBhcmFsbGVsXG4gIGxldCByZWFkZXIgPSBkZWJ1ZyBSZWFkZXJcbiAgbGV0IHNjaGVkdWxlciA9IGRlYnVnIFNjaGVkdWxlclxuICBsZXQgc2h1dGRvd24gPSBkZWJ1ZyBTaHV0ZG93blxuICBsZXQgdGhyZWFkX3Bvb2wgPSBkZWJ1ZyBUaHJlYWRfcG9vbFxuICBsZXQgdGhyZWFkX3NhZmUgPSBkZWJ1ZyBUaHJlYWRfc2FmZVxuICBsZXQgd3JpdGVyID0gZGVidWcgV3JpdGVyXG5lbmRcblxubGV0ICggISEgKSBmaWVsZCA9XG4gIE9wdGlvbi52YWx1ZSAoRmllbGQuZ2V0IGZpZWxkIHQpIH5kZWZhdWx0OihPcHRpb24udmFsdWVfZXhuIChGaWVsZC5nZXQgZmllbGQgZGVmYXVsdCkpXG47O1xuXG5sZXQgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gISFGaWVsZHMuYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG5sZXQgY2hlY2tfaW52YXJpYW50cyA9ICEhRmllbGRzLmNoZWNrX2ludmFyaWFudHNcbmxldCBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSAhIUZpZWxkcy5kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbmxldCBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gISFGaWVsZHMuZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xubGV0IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9ICEhRmllbGRzLnRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxubGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9ICEhRmllbGRzLmZpbGVfZGVzY3Jfd2F0Y2hlclxubGV0IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSAhIUZpZWxkcy5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbmxldCBtYXhfbnVtX3RocmVhZHMgPSAhIUZpZWxkcy5tYXhfbnVtX3RocmVhZHNcbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9ICEhRmllbGRzLm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5sZXQgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSAhIUZpZWxkcy5taW5faW50ZXJfY3ljbGVfdGltZW91dFxubGV0IHJlY29yZF9iYWNrdHJhY2VzID0gISFGaWVsZHMucmVjb3JkX2JhY2t0cmFjZXNcbmxldCByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gISFGaWVsZHMucmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IHRpbWluZ193aGVlbF9jb25maWcgPSAhIUZpZWxkcy50aW1pbmdfd2hlZWxfY29uZmlnXG5sZXQgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9ICEhRmllbGRzLmR1bXBfY29yZV9vbl9qb2JfZGVsYXlcblxubGV0IHQgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgY2hlY2tfaW52YXJpYW50c1xuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IFNvbWUgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IFNvbWUgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IFNvbWUgZmlsZV9kZXNjcl93YXRjaGVyXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBTb21lIG1heF9udW1fdGhyZWFkc1xuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gU29tZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHQucHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBTb21lIHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IHRhc2tfaWQgPSByZWYgKGZ1biAoKSAtPiBTZXhwLkF0b20gXCI8bm8gdGFzayBpZD5cIilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSByZWZcblxuKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgW3BoeXNfc2FtZV0gYXMgdGhpcyBvbmUuXG5cbiAgIHRoaXMgY29kZSBpcyBkdXBsaWNhdGVkIGluIE9wdGlvbl9hcnJheS5DaGVhcF9vcHRpb24sIGFuZCBpZiB3ZSBmaW5kIHlldCBhbm90aGVyXG4gICBwbGFjZSB3aGVyZSB3ZSB3YW50IGl0IHdlIHNob3VsZCByZWNvbnNpZGVyIG1ha2luZyBpdCBzaGFyZWQuICopXG5sZXQgbm9uZSA9IE9iai5vYmogKE9iai5uZXdfYmxvY2sgT2JqLmFic3RyYWN0X3RhZyAxKVxubGV0IGNyZWF0ZSAoKSA9IHJlZiBub25lXG5sZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCAheCBub25lXG5sZXQgaXNfc29tZSB4ID0gbm90IChpc19ub25lIHgpXG5sZXQgZ2V0X3NvbWVfZXhuIHggPSBpZiBpc19ub25lIHggdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk1vcHRpb24uZ2V0X3NvbWVfZXhuXCJdIGVsc2UgIXhcbmxldCBnZXQgdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lICF0XG5sZXQgdW5zYWZlX2dldCB0ID0gIXRcbmxldCBzZXRfc29tZSB0IHYgPSB0IDo9IHZcbmxldCBzZXRfbm9uZSB0ID0gdCA6PSBub25lXG5cbmxldCBzZXQgdCB2ID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgTm9uZSAtPiBzZXRfbm9uZSB0XG4gIHwgU29tZSB2IC0+IHNldF9zb21lIHQgdlxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIG9wdGlvbildXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgT3B0aW9uLml0ZXIgKGdldCB0KSB+ZjppbnZhcmlhbnRfYSlcbjs7XG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfZ2V0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcbm1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbigqIFRoaXMgcG9vbCBob2xkcyBub2RlcyB0aGF0IHdvdWxkIGJlIHJlcHJlc2VudGVkIG1vcmUgdHJhZGl0aW9uYWxseSBhczpcblxuICAge1tcbiAgICAgdHlwZSAnYSB0ID1cbiAgICAgICB8IEVtcHR5XG4gICAgICAgfCBIZWFwIG9mICdhICogJ2EgdCBsaXN0IF19XG5cbiAgIFdlIHdpbGwgcmVwcmVzZW50IHRoZW0gYXMgYSBsZWZ0LWNoaWxkLCByaWdodC1zaWJsaW5nIHRyZWUgaW4gYSB0cmlwbGV0XG4gICAodmFsdWUgKiBsZWZ0X2NoaWxkICogcmlnaHRfc2libGluZykuICBUaGUgbGVmdCBjaGlsZCBhbmQgYWxsIHJpZ2h0IHNpYmxpbmdzXG4gICBvZiB0aGUgbGVmdCBjaGlsZCBmb3JtIGEgbGlua2VkIGxpc3QgcmVwcmVzZW50aW5nIHRoZSBzdWJoZWFwcyBvZiBhIGdpdmVuIGhlYXA6XG5cbiAgIHt2XG4gICAgICAgICBBXG4gICAgICAgIC9cbiAgICAgICBCIC0+IEMgLT4gRCAtPiBFIC0+IEZcbiAgICAgIC8gICAgICAgICAvICAgICAgICAgL1xuICAgICBHICAgICAgICAgSC0+SS0+SiAgIEstPkxcbiAgIHZ9ICopXG5cbm1vZHVsZSBOb2RlIDogc2lnXG4gICgqIEV4cG9zaW5nIFtwcml2YXRlIGludF0gaXMgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCwgYmVjYXVzZSBpdCBhbGxvd3NcbiAgICAgdGhlIGNvbXBpbGVyIHRvIHNraXAgdGhlIHdyaXRlIGJhcnJpZXIuICopXG5cbiAgdHlwZSAnYSB0ID0gcHJpdmF0ZSBpbnRcblxuICBtb2R1bGUgSWQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIGVuZFxuXG4gIG1vZHVsZSBQb29sIDogc2lnXG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdFxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNyZWF0ZSA6IG1pbl9zaXplOmludCAtPiAnYSB0XG4gICAgdmFsIGlzX2Z1bGwgOiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgZ3JvdyA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSBub2RlIC0+ICdhIG5vZGUgKiAnYSB0XG4gIGVuZFxuXG4gICgqKiBbYWxsb2NhdGUgdiB+cG9vbF0gYWxsb2NhdGVzIGEgbmV3IG5vZGUgZnJvbSB0aGUgcG9vbCB3aXRoIG5vIGNoaWxkIG9yIHNpYmxpbmcgKilcbiAgdmFsIGFsbG9jYXRlIDogJ2EgLT4gcG9vbDonYSBQb29sLnQgLT4gaWQ6SWQudCAtPiAnYSB0XG5cbiAgKCoqIFtmcmVlIHQgfnBvb2xdIGZyZWVzIFt0XSBmb3IgcmV1c2UuICBJdCBpcyBhbiBlcnJvciB0byBhY2Nlc3MgW3RdIGFmdGVyIHRoaXMuICopXG4gIHZhbCBmcmVlIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5cbiAgKCoqIGEgc3BlY2lhbCBbdF0gdGhhdCByZXByZXNlbnRzIHRoZSBlbXB0eSBub2RlICopXG4gIHZhbCBlbXB0eSA6IHVuaXQgLT4gJ2EgdFxuXG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICgqKiBbdmFsdWVfZXhuIHQgfnBvb2xdIHJldHVybiB0aGUgdmFsdWUgb2YgW3RdLCByYWlzZSBpZiBbaXNfZW1wdHkgdF0gKilcbiAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2FcblxuICB2YWwgaWQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IElkLnRcbiAgdmFsIGNoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG4gIHZhbCBzaWJsaW5nIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtwcmV2IHRdIGlzIGVpdGhlciB0aGUgcGFyZW50IG9mIFt0XSBvciB0aGUgc2libGluZyBpbW1lZGlhdGVseSBsZWZ0IG9mIFt0XSAqKVxuICB2YWwgcHJldiA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbYWRkX2NoaWxkIHQgfmNoaWxkIH5wb29sXSBBZGQgYSBjaGlsZCB0byBbdF0sIHByZXNlcnZpbmcgZXhpc3RpbmcgY2hpbGRyZW4gYXNcbiAgICAgIHNpYmxpbmdzIG9mIFtjaGlsZF0uIFt0XSBhbmQgW2NoaWxkXSBzaG91bGQgbm90IGJlIGVtcHR5IGFuZCBbY2hpbGRdIHNob3VsZCBoYXZlIG5vXG4gICAgICBzaWJsaW5nIGFuZCBoYXZlIG5vIHByZXYgbm9kZS4gKilcbiAgdmFsIGFkZF9jaGlsZCA6ICdhIHQgLT4gY2hpbGQ6J2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5cbiAgKCoqIGRpc2Nvbm5lY3QgYW5kIHJldHVybiB0aGUgc2libGluZyAqKVxuICB2YWwgZGlzY29ubmVjdF9zaWJsaW5nIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIGRpc2Nvbm5lY3QgYW5kIHJldHVybiB0aGUgY2hpbGQgKilcbiAgdmFsIGRpc2Nvbm5lY3RfY2hpbGQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2RldGFjaCB0IH5wb29sXSByZW1vdmVzIFt0XSBmcm9tIHRoZSB0cmVlLCBhZGp1c3RpbmcgcG9pbnRlcnMgYXJvdW5kIGl0LiBBZnRlclxuICAgICAgW2RldGFjaF0sIFt0XSBpcyB0aGUgcm9vdCBvZiBhIHN0YW5kYWxvbmUgaGVhcCwgd2hpY2ggaXMgZGV0YWNoZWQgZnJvbSB0aGUgb3JpZ2luYWxcbiAgICAgIGhlYXAuICopXG4gIHZhbCBkZXRhY2ggOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgSWQgPSBJbnRcblxuICBsZXQgZHVtbXlfaWQgOiBJZC50ID0gLTFcblxuICB0eXBlICdhIG5vZGUgPVxuICAgICgnYSwgJ2Egbm9kZSBQb2ludGVyLnQsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgSWQudCkgUG9vbC5TbG90cy50NVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5vZGUgUG9pbnRlci50XG5cbiAgbGV0IGVtcHR5ID0gUG9pbnRlci5udWxsXG4gIGxldCBpc19lbXB0eSA9IFBvaW50ZXIuaXNfbnVsbFxuICBsZXQgZXF1YWwgPSBQb2ludGVyLnBoeXNfZXF1YWxcbiAgbGV0IHZhbHVlIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQwXG4gIGxldCBjaGlsZCB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MVxuICBsZXQgc2libGluZyB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MlxuICBsZXQgcHJldiB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50M1xuICBsZXQgaWQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDRcblxuICAoKiBsZXQgc2V0X3ZhbHVlICAgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MCB2ICopXG4gIGxldCBzZXRfY2hpbGQgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MSB2XG4gIGxldCBzZXRfc2libGluZyB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQyIHZcbiAgbGV0IHNldF9wcmV2IHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDMgdlxuXG4gIGxldCB2YWx1ZV9leG4gdCB+cG9vbCA9XG4gICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgICB2YWx1ZSB0IH5wb29sXG4gIDs7XG5cbiAgbGV0IGFsbG9jYXRlIHZhbHVlIH5wb29sIH5pZCA9IFBvb2wubmV3NSBwb29sIHZhbHVlIChlbXB0eSAoKSkgKGVtcHR5ICgpKSAoZW1wdHkgKCkpIGlkXG4gIGxldCBmcmVlIHQgfnBvb2wgPSBQb29sLnVuc2FmZV9mcmVlIHBvb2wgdFxuXG4gIGxldCBkaXNjb25uZWN0X3NpYmxpbmcgdCB+cG9vbCA9XG4gICAgbGV0IHNpYmxpbmcgPSBzaWJsaW5nIHQgfnBvb2wgaW5cbiAgICBpZiBub3QgKGlzX2VtcHR5IHNpYmxpbmcpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfc2libGluZyB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICBzZXRfcHJldiBzaWJsaW5nIChlbXB0eSAoKSkgfnBvb2wpO1xuICAgIHNpYmxpbmdcbiAgOztcblxuICBsZXQgZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sID1cbiAgICBsZXQgY2hpbGQgPSBjaGlsZCB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBjaGlsZClcbiAgICB0aGVuIChcbiAgICAgIHNldF9jaGlsZCB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICBzZXRfcHJldiBjaGlsZCAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBjaGlsZFxuICA7O1xuXG4gIGxldCBhZGRfY2hpbGQgdCB+Y2hpbGQ6bmV3X2NoaWxkIH5wb29sID1cbiAgICAoKiBhc3NlcnRpb25zIHdlIHdvdWxkIG1ha2UsIGJ1dCBmb3Igc3BlZWQ6XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgICAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgbmV3X2NoaWxkKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAoc2libGluZyBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAgICBhc3NlcnQgKGlzX2VtcHR5IChwcmV2IG5ld19jaGlsZCB+cG9vbCkpO1xuICAgICopXG4gICAgbGV0IGN1cnJlbnRfY2hpbGQgPSBkaXNjb25uZWN0X2NoaWxkIHQgfnBvb2wgaW5cbiAgICAoKiBhZGQgW25ld19jaGlsZF0gdG8gdGhlIGxpc3Qgb2YgW3RdJ3MgY2hpbGRyZW4gKHdoaWNoIG1heSBiZSBlbXB0eSkgKilcbiAgICBzZXRfc2libGluZyBuZXdfY2hpbGQgY3VycmVudF9jaGlsZCB+cG9vbDtcbiAgICBpZiBub3QgKGlzX2VtcHR5IGN1cnJlbnRfY2hpbGQpIHRoZW4gc2V0X3ByZXYgY3VycmVudF9jaGlsZCBuZXdfY2hpbGQgfnBvb2w7XG4gICAgc2V0X2NoaWxkIHQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9wcmV2IG5ld19jaGlsZCB0IH5wb29sXG4gIDs7XG5cbiAgbGV0IGRldGFjaCB0IH5wb29sID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcHJldiA9IHByZXYgdCB+cG9vbCBpblxuICAgICAgaWYgbm90IChpc19lbXB0eSBwcmV2KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCByZWxhdGlvbl90b19wcmV2ID0gaWYgZXF1YWwgdCAoY2hpbGQgcHJldiB+cG9vbCkgdGhlbiBgY2hpbGQgZWxzZSBgc2libGluZyBpblxuICAgICAgICBzZXRfcHJldiB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICAgIGxldCBzaWJsaW5nID0gZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgaW5cbiAgICAgICAgKG1hdGNoIHJlbGF0aW9uX3RvX3ByZXYgd2l0aFxuICAgICAgICAgfCBgY2hpbGQgLT4gc2V0X2NoaWxkIHByZXYgc2libGluZyB+cG9vbFxuICAgICAgICAgfCBgc2libGluZyAtPiBzZXRfc2libGluZyBwcmV2IHNpYmxpbmcgfnBvb2wpO1xuICAgICAgICBpZiBub3QgKGlzX2VtcHR5IHNpYmxpbmcpIHRoZW4gc2V0X3ByZXYgc2libGluZyBwcmV2IH5wb29sKSlcbiAgOztcblxuICBtb2R1bGUgUG9vbCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG5vZGUgUG9vbC50XG4gICAgdHlwZSBub25yZWMgJ2Egbm9kZSA9ICdhIG5vZGUgUG9pbnRlci50XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIGEpIH5taW5fc2l6ZTpjYXBhY2l0eSA6IGEgdCA9XG4gICAgICBQb29sLmNyZWF0ZVxuICAgICAgICBQb29sLlNsb3RzLnQ1XG4gICAgICAgIH5jYXBhY2l0eVxuICAgICAgICB+ZHVtbXk6XG4gICAgICAgICAgKCAoT2JqLm1hZ2ljIE5vbmUgOiBhKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgZHVtbXlfaWQgKVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gUG9vbC5pc19mdWxsIHRcbiAgICBsZXQgbGVuZ3RoIHQgPSBQb29sLmxlbmd0aCB0XG4gICAgbGV0IGdyb3cgdCA9IFBvb2wuZ3JvdyB0XG5cbiAgICBsZXQgY29weSB0IHN0YXJ0ID1cbiAgICAgIGxldCB0JyA9IGNyZWF0ZSB+bWluX3NpemU6KFBvb2wuY2FwYWNpdHkgdCkgaW5cbiAgICAgIGxldCBjb3B5X25vZGUgbm9kZSB0b192aXNpdCA9XG4gICAgICAgIGlmIGlzX2VtcHR5IG5vZGVcbiAgICAgICAgdGhlbiBlbXB0eSAoKSwgdG9fdmlzaXRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogd2UgdXNlIHRoZSBzYW1lIGlkLCBidXQgdGhhdCdzIG9rIHNpbmNlIGlkcyBzaG91bGQgYmUgdW5pcXVlIHBlciBoZWFwICopXG4gICAgICAgICAgbGV0IG5ld19ub2RlID1cbiAgICAgICAgICAgIGFsbG9jYXRlICh2YWx1ZV9leG4gbm9kZSB+cG9vbDp0KSB+cG9vbDp0JyB+aWQ6KGlkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0b192aXNpdCA9XG4gICAgICAgICAgICAobmV3X25vZGUsIGBjaGlsZCwgY2hpbGQgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogKG5ld19ub2RlLCBgc2libGluZywgc2libGluZyBub2RlIH5wb29sOnQpXG4gICAgICAgICAgICA6OiB0b192aXNpdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbmV3X25vZGUsIHRvX3Zpc2l0KVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IChub2RlX3RvX3VwZGF0ZSwgc2xvdCwgbm9kZV90b19jb3B5KSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IG5ld19ub2RlLCB0b192aXNpdCA9IGNvcHlfbm9kZSBub2RlX3RvX2NvcHkgcmVzdCBpblxuICAgICAgICAgIChtYXRjaCBzbG90IHdpdGhcbiAgICAgICAgICAgfCBgY2hpbGQgLT4gc2V0X2NoaWxkIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnXG4gICAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgbm9kZV90b191cGRhdGUgbmV3X25vZGUgfnBvb2w6dCcpO1xuICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgbmV3X25vZGUpIHRoZW4gc2V0X3ByZXYgbmV3X25vZGUgbm9kZV90b191cGRhdGUgfnBvb2w6dCc7XG4gICAgICAgICAgbG9vcCB0b192aXNpdFxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3RhcnQsIHRvX3Zpc2l0ID0gY29weV9ub2RlIHN0YXJ0IFtdIGluXG4gICAgICBsb29wIHRvX3Zpc2l0O1xuICAgICAgbmV3X3N0YXJ0LCB0J1xuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogY21wIGlzIHBsYWNlZCBmaXJzdCB0byBzaG9ydC1jaXJjdWl0IHBvbHltb3JwaGljIGNvbXBhcmUgKilcbiAgICBjbXAgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBtdXRhYmxlIHBvb2wgOiAnYSBOb2RlLlBvb2wudFxuICA7ICgqIGludmFyaWFudDogIFtyb290XSBuZXZlciBoYXMgYSBzaWJsaW5nICopXG4gICAgbXV0YWJsZSByb290IDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIDogaW50XG4gIH1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCAobm9kZSwgZXhwZWN0ZWRfcHJldiwgbWF5YmVfcGFyZW50X3ZhbHVlKSA6OiByZXN0IC0+XG4gICAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgbm9kZSlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGhpc192YWx1ZSA9IE5vZGUudmFsdWVfZXhuIG5vZGUgfnBvb2w6dC5wb29sIGluXG4gICAgICAgIGFzc2VydCAoTm9kZS5lcXVhbCAoTm9kZS5wcmV2IG5vZGUgfnBvb2w6dC5wb29sKSBleHBlY3RlZF9wcmV2KTtcbiAgICAgICAgT3B0aW9uLml0ZXIgbWF5YmVfcGFyZW50X3ZhbHVlIH5mOihmdW4gcGFyZW50X3ZhbHVlIC0+XG4gICAgICAgICAgYXNzZXJ0ICh0LmNtcCBwYXJlbnRfdmFsdWUgdGhpc192YWx1ZSA8PSAwKSk7XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoKE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIFNvbWUgdGhpc192YWx1ZSlcbiAgICAgICAgICAgOjogKE5vZGUuc2libGluZyBub2RlIH5wb29sOnQucG9vbCwgbm9kZSwgbWF5YmVfcGFyZW50X3ZhbHVlKVxuICAgICAgICAgICA6OiByZXN0KSlcbiAgICAgIGVsc2UgbG9vcCByZXN0XG4gIGluXG4gIGFzc2VydCAoTm9kZS5pc19lbXB0eSB0LnJvb3QgfHwgTm9kZS5pc19lbXB0eSAoTm9kZS5zaWJsaW5nIHQucm9vdCB+cG9vbDp0LnBvb2wpKTtcbiAgbG9vcCBbIHQucm9vdCwgTm9kZS5lbXB0eSAoKSwgTm9uZSBdXG47O1xuXG5sZXQgY3JlYXRlID8obWluX3NpemUgPSAxKSB+Y21wICgpID1cbiAgeyBjbXBcbiAgOyBwb29sID0gTm9kZS5Qb29sLmNyZWF0ZSB+bWluX3NpemVcbiAgOyByb290ID0gTm9kZS5lbXB0eSAoKVxuICA7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgPSAwXG4gIH1cbjs7XG5cbmxldCBjb3B5IHsgY21wOyBwb29sOyByb290OyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIH0gPVxuICBsZXQgcm9vdCwgcG9vbCA9IE5vZGUuUG9vbC5jb3B5IHBvb2wgcm9vdCBpblxuICB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9XG47O1xuXG5sZXQgYWxsb2NhdGUgdCB2ID1cbiAgaWYgTm9kZS5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIE5vZGUuUG9vbC5ncm93IHQucG9vbDtcbiAgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzIDwtIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyArIDE7XG4gIE5vZGUuYWxsb2NhdGUgdiB+cG9vbDp0LnBvb2wgfmlkOihOb2RlLklkLm9mX2ludCB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMpXG47O1xuXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIG1hdGNoIHJvb3QxLCByb290MiB3aXRoXG4gICAgIHwgTm9uZSwgaCB8IGgsIE5vbmUgLT4gaFxuICAgICB8IFNvbWUgKE5vZGUgKHYxLCBjaGlsZHJlbjEpKSwgU29tZSAoTm9kZSAodjIsIGNoaWxkcmVuMikpIC0+XG4gICAgICAgaWYgdjEgPCB2MlxuICAgICAgIHRoZW4gU29tZSAoTm9kZSAodjEsIHJvb3QyIDo6IGNoaWxkcmVuMSkpXG4gICAgICAgZWxzZSBTb21lIChOb2RlICh2Miwgcm9vdDEgOjogY2hpbGRyZW4yKSlcbiAgIF19XG5cbiAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBuZWl0aGVyIHJvb3QgaGFzIGEgcHJldiBub2RlICh1c3VhbGx5IGJlY2F1c2UgdGhlIGlucHV0cyBjb21lXG4gICBmcm9tIFtkaXNjb25uZWN0XypdIG9yIGFyZSB0aGUgdG9wIG9mIHRoZSBoZWFwIG9yIGFyZSB0aGUgb3V0cHV0IG9mIHRoaXMgZnVuY3Rpb24pLiAqKVxubGV0IG1lcmdlIHQgcm9vdDEgcm9vdDIgPVxuICBpZiBOb2RlLmlzX2VtcHR5IHJvb3QxXG4gIHRoZW4gcm9vdDJcbiAgZWxzZSBpZiBOb2RlLmlzX2VtcHR5IHJvb3QyXG4gIHRoZW4gcm9vdDFcbiAgZWxzZSAoXG4gICAgbGV0IGFkZF9jaGlsZCB0IG5vZGUgfmNoaWxkID1cbiAgICAgIE5vZGUuYWRkX2NoaWxkIG5vZGUgfnBvb2w6dC5wb29sIH5jaGlsZDtcbiAgICAgIG5vZGVcbiAgICBpblxuICAgIGxldCB2MSA9IE5vZGUudmFsdWVfZXhuIHJvb3QxIH5wb29sOnQucG9vbCBpblxuICAgIGxldCB2MiA9IE5vZGUudmFsdWVfZXhuIHJvb3QyIH5wb29sOnQucG9vbCBpblxuICAgIGlmIHQuY21wIHYxIHYyIDwgMFxuICAgIHRoZW4gYWRkX2NoaWxkIHQgcm9vdDEgfmNoaWxkOnJvb3QyXG4gICAgZWxzZSBhZGRfY2hpbGQgdCByb290MiB+Y2hpbGQ6cm9vdDEpXG47O1xuXG5sZXQgdG9wX2V4biB0ID1cbiAgaWYgTm9kZS5pc19lbXB0eSB0LnJvb3RcbiAgdGhlbiBmYWlsd2l0aCBcIkhlYXAudG9wX2V4biBjYWxsZWQgb24gYW4gZW1wdHkgaGVhcFwiXG4gIGVsc2UgTm9kZS52YWx1ZV9leG4gdC5yb290IH5wb29sOnQucG9vbFxuOztcblxubGV0IHRvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX2V4biB0KVxuXG5sZXQgYWRkX25vZGUgdCB2ID1cbiAgbGV0IG5vZGUgPSBhbGxvY2F0ZSB0IHYgaW5cbiAgdC5yb290IDwtIG1lcmdlIHQgdC5yb290IG5vZGU7XG4gIG5vZGVcbjs7XG5cbmxldCBhZGQgdCB2ID0gaWdub3JlIChhZGRfbm9kZSB0IHYgOiBfIE5vZGUudClcblxuKCogW21lcmdlX3BhaXJzXSB0YWtlcyBhIGxpc3Qgb2YgaGVhcCByb290cyBhbmQgbWVyZ2VzIGNvbnNlY3V0aXZlIHBhaXJzLCByZWR1Y2luZyB0aGVcbiAgIGxpc3Qgb2YgbGVuZ3RoIG4gdG8gbi8yLiAgVGhlbiBpdCBtZXJnZXMgdGhlIG1lcmdlZCBwYWlycyBpbnRvIGEgc2luZ2xlIGhlYXAuICBPbmVcbiAgIGludHVpdGlvbiBpcyB0aGF0IHRoaXMgaXMgc29tZXdoYXQgbGlrZSBidWlsZGluZyBhIHNpbmdsZSBsZXZlbCBvZiBhIGJpbmFyeSB0cmVlLlxuXG4gICBUaGUgb3V0cHV0IGhlYXAgZG9lcyBub3QgY29udGFpbiB0aGUgdmFsdWUgdGhhdCB3YXMgYXQgdGhlIHJvb3Qgb2YgdGhlIGlucHV0IGhlYXAuXG5cbiAgIFdlIGJyZWFrIHRoZSBmdW5jdGlvbiBpbnRvIHR3byBwYXJ0cy4gIEEgZmlyc3Qgc3RhZ2UgdGhhdCBpcyB3aWxsaW5nIHRvIHVzZSBsaW1pdGVkXG4gICBzdGFjayBpbnN0ZWFkIG9mIGhlYXAgYWxsb2NhdGlvbiBmb3IgYm9va2tlZXBpbmcsIGFuZCBhIHNlY29uZCBzdGFnZSB0aGF0IHNoaWZ0cyB0b1xuICAgdXNpbmcgYSBsaXN0IGFzIGFuIGFjY3VtdWxhdG9yIGlmIHdlIGdvIHRvbyBkZWVwLlxuXG4gICBUaGlzIGNhbiBiZSBtYWRlIHRhaWwgcmVjdXJzaXZlIGFuZCBub24tYWxsb2NhdGluZyBieSBzdGFydGluZyB3aXRoIGFuIGVtcHR5IGhlYXAgYW5kXG4gICBtZXJnaW5nIG1lcmdlZCBwYWlycyBpbnRvIGl0LiBVbmZvcnR1bmF0ZWx5IHRoaXMgXCJsZWZ0IGZvbGRcIiB2ZXJzaW9uIGlzIG5vdCB3aGF0IGlzXG4gICBkZXNjcmliZWQgaW4gdGhlIG9yaWdpbmFsIHBhcGVyIGJ5IEZyZWRtYW4gZXQgYWwuOyB0aGV5IHNwZWNpZmljYWxseSBzYXkgdGhhdFxuICAgY2hpbGRyZW4gc2hvdWxkIGJlIG1lcmdlZCB0b2dldGhlciBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3QgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgIGxpc3QuIChbbWVyZ2VdIGlzIG5vdCBhc3NvY2lhdGl2ZSwgc28gb3JkZXIgbWF0dGVycy4pXG4qKVxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgIHwgW2hlYWRdIC0+IGhlYWQgOjogYWNjXG4gICAgICAgfCBoZWFkIDo6IG5leHQxIDo6IG5leHQyIC0+IGxvb3AgKG1lcmdlIGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MlxuICAgICBpblxuICAgICBtYXRjaCBsb29wIFtdIGNoaWxkcmVuIHdpdGhcbiAgICAgfCBbXSAtPiBOb25lXG4gICAgIHwgW2hdIC0+IFNvbWUgaFxuICAgICB8IHggOjogeHMgLT4gU29tZSAoTGlzdC5mb2xkIHhzIH5pbml0OnggfmY6bWVyZ2UpXG4gICBdfVxuKilcbmxldCBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZCA9XG4gIGxldCByZWMgbG9vcCBhY2MgaGVhZCA9XG4gICAgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0MSA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIGhlYWQgfnBvb2w6dC5wb29sIGluXG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5leHQxXG4gICAgICB0aGVuIGhlYWQgOjogYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgIGxvb3AgKG1lcmdlIHQgaGVhZCBuZXh0MSA6OiBhY2MpIG5leHQyKSlcbiAgaW5cbiAgbWF0Y2ggbG9vcCBbXSBoZWFkIHdpdGhcbiAgfCBbXSAtPiBOb2RlLmVtcHR5ICgpXG4gIHwgWyBoIF0gLT4gaFxuICB8IHggOjogeHMgLT4gTGlzdC5mb2xkIHhzIH5pbml0OnggfmY6KGZ1biBhY2MgaGVhcCAtPiBtZXJnZSB0IGFjYyBoZWFwKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCB0LnJvb3Qgd2l0aFxuICAgICB8IE5vZGUgKF8sIGNoaWxkcmVuKSAtPlxuICAgICAgIGxldCByZWMgbG9vcCBkZXB0aCBjaGlsZHJlbiA9XG4gICAgICAgICBpZiBkZXB0aCA+PSBtYXhfc3RhY2tfZGVwdGhcbiAgICAgICAgIHRoZW4gYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGNoaWxkZW5cbiAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgfCBbaGVhZF0gLT4gU29tZSBoZWFkXG4gICAgICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPlxuICAgICAgICAgICAgIG1lcmdlIChtZXJnZSBoZWFkIG5leHQxKSAobG9vcCAoZGVwdGggKyAxKSBuZXh0MilcbiAgICAgICAgIGVuZFxuICAgICAgIGluXG4gICAgICAgbG9vcCAwIGNoaWxkcmVuXG4gICBdfVxuKilcbmxldCBtZXJnZV9wYWlycyA9XG4gIGxldCBtYXhfc3RhY2tfZGVwdGggPSAxXzAwMCBpblxuICBsZXQgcmVjIGxvb3AgdCBkZXB0aCBoZWFkID1cbiAgICBpZiBkZXB0aCA+PSBtYXhfc3RhY2tfZGVwdGhcbiAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBoZWFkXG4gICAgZWxzZSBpZiBOb2RlLmlzX2VtcHR5IGhlYWRcbiAgICB0aGVuIGhlYWRcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0MSA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIGhlYWQgfnBvb2w6dC5wb29sIGluXG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5leHQxXG4gICAgICB0aGVuIGhlYWRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV4dDIgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBuZXh0MSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgKCogbWVyZ2UgdGhlIGZpcnN0IHR3byBub2RlcyBpbiBvdXIgbGlzdCwgYW5kIHRoZW4gbWVyZ2UgdGhlIHJlc3VsdCB3aXRoIHRoZVxuICAgICAgICAgICByZXN1bHQgb2YgcmVjdXJzaXZlbHkgY2FsbGluZyBtZXJnZV9wYWlycyBvbiB0aGUgdGFpbCAqKVxuICAgICAgICBtZXJnZSB0IChtZXJnZSB0IGhlYWQgbmV4dDEpIChsb29wIHQgKGRlcHRoICsgMSkgbmV4dDIpKSlcbiAgaW5cbiAgZnVuIHQgaGVhZCAtPiBsb29wIHQgMCBoZWFkXG47O1xuXG5sZXQgcmVtb3ZlX25vbl9lbXB0eSB0IG5vZGUgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBOb2RlLmRldGFjaCBub2RlIH5wb29sO1xuICBsZXQgbWVyZ2VkX2NoaWxkcmVuID0gbWVyZ2VfcGFpcnMgdCAoTm9kZS5kaXNjb25uZWN0X2NoaWxkIG5vZGUgfnBvb2wpIGluXG4gIGxldCBuZXdfcm9vdCA9XG4gICAgaWYgTm9kZS5lcXVhbCB0LnJvb3Qgbm9kZSB0aGVuIG1lcmdlZF9jaGlsZHJlbiBlbHNlIG1lcmdlIHQgdC5yb290IG1lcmdlZF9jaGlsZHJlblxuICBpblxuICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgdC5yb290IDwtIG5ld19yb290XG47O1xuXG5sZXQgcmVtb3ZlX3RvcCB0ID0gaWYgbm90IChOb2RlLmlzX2VtcHR5IHQucm9vdCkgdGhlbiByZW1vdmVfbm9uX2VtcHR5IHQgdC5yb290XG5cbigqIE5vdGUgdGhhdCB0aGlzIGlzIHRhaWwtcmVjdXJzaXZlIGFuZCB0aGF0IGVhY2ggbm9kZSBpcyB2aXNpdGVkIGF0IG1vc3QgMyB0aW1lcyAob25jZVxuICAgZm9yIGVhY2ggYnJhbmNoIG9mIHRoZSBcImlmXCIpLCBzbyBpdCB0YWtlcyBsaW5lYXIgdGltZSBhbmQgY29uc3RhbnQgc3BhY2UuICopXG5sZXQgcmVjIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IG5vZGUgfnBvb2wgPVxuICBsZXQgY2hpbGQgPSBOb2RlLmNoaWxkIG5vZGUgfnBvb2wgaW5cbiAgbGV0IHNpYmxpbmcgPSBOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbCBpblxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgY2hpbGQpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgY2hpbGQgfnBvb2xcbiAgZWxzZSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgc2libGluZylcbiAgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBzaWJsaW5nIH5wb29sXG4gIGVsc2UgKFxuICAgIGxldCBwcmV2ID0gTm9kZS5wcmV2IG5vZGUgfnBvb2wgaW5cbiAgICBOb2RlLmRldGFjaCBub2RlIH5wb29sO1xuICAgIE5vZGUuZnJlZSBub2RlIH5wb29sO1xuICAgIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBwcmV2KSB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHByZXYgfnBvb2wpXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpXG4gIHRoZW4gKFxuICAgIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHQucm9vdCB+cG9vbDp0LnBvb2w7XG4gICAgdC5yb290IDwtIE5vZGUuZW1wdHkgKCkpXG47O1xuXG5sZXQgcG9wX2V4biB0ID1cbiAgbGV0IHIgPSB0b3BfZXhuIHQgaW5cbiAgcmVtb3ZlX3RvcCB0O1xuICByXG47O1xuXG5sZXQgcG9wIHQgPSBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3BfZXhuIHQpXG5cbmxldCBwb3BfaWYgdCBmID1cbiAgbWF0Y2ggdG9wIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdiAtPlxuICAgIGlmIGYgdlxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX3RvcCB0O1xuICAgICAgU29tZSB2KVxuICAgIGVsc2UgTm9uZVxuOztcblxuKCogcGFpcmluZyBoZWFwcyBhcmUgbm90IGJhbGFuY2VkIHRyZWVzLCBhbmQgdGhlcmVmb3JlIHdlIGNhbid0IHJlbHkgb24gYSBiYWxhbmNlXG4gICBwcm9wZXJ0eSB0byBzdG9wIG91cnNlbHZlcyBmcm9tIG92ZXJmbG93aW5nIHRoZSBzdGFjay4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgYWNjIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgYWNjIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgdG9fdmlzaXQgPSBOb2RlLnNpYmxpbmcgfnBvb2wgbm9kZSA6OiBOb2RlLmNoaWxkIH5wb29sIG5vZGUgOjogcmVzdCBpblxuICAgICAgICBsb29wIChmIGFjYyAoTm9kZS52YWx1ZV9leG4gfnBvb2wgbm9kZSkpIHRvX3Zpc2l0KVxuICBpblxuICBsb29wIGluaXQgWyB0LnJvb3QgXSBbQG5vbnRhaWxdXG47O1xuXG4oKiBhbG1vc3QgaWRlbnRpY2FsIHRvIGZvbGQsIGNvcGllZCBmb3Igc3BlZWQgcHVycG9zZXMgKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBmIChOb2RlLnZhbHVlX2V4biB+cG9vbCBub2RlKTtcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBbIHQucm9vdCBdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBsZW5ndGggdCA9IE5vZGUuUG9vbC5sZW5ndGggdC5wb29sXG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBpc19lbXB0eSB0ID0gTm9kZS5pc19lbXB0eSB0LnJvb3RcbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2FycmF5IGFyciB+Y21wID1cbiAgbGV0IHQgPSBjcmVhdGUgfm1pbl9zaXplOihBcnJheS5sZW5ndGggYXJyKSB+Y21wICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBhZGQgdCB2KTtcbiAgdFxuOztcblxubGV0IG9mX2xpc3QgbCB+Y21wID0gb2ZfYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkgfmNtcFxubGV0IHNleHBfb2ZfdCBmIHQgPSBBcnJheS5zZXhwX29mX3QgZiAodG9fYXJyYXkgdCB8PiBBcnJheS5zb3J0ZWRfY29weSB+Y29tcGFyZTp0LmNtcClcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICB7IG11dGFibGUgbm9kZSA6ICdhIE5vZGUudFxuICAgIDsgbm9kZV9pZCA6IE5vZGUuSWQudFxuICAgIDsgaGVhcCA6ICdhIHRcbiAgICB9XG5cbiAgKCogSWYgaWRzIGFyZSBkaWZmZXJlbnQsIGl0IG1lYW5zIHRoYXQgdGhlIG5vZGUgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVcbiAgICAgb3RoZXIgbWVhbnMgKGFuZCBwb3NzaWJseSByZXVzZWQpLiAqKVxuICBsZXQgaXNfbm9kZV92YWxpZCB0ID0gTm9kZS5JZC5lcXVhbCAoTm9kZS5pZCB+cG9vbDp0LmhlYXAucG9vbCB0Lm5vZGUpIHQubm9kZV9pZFxuXG4gIGxldCB2YWx1ZSB0ID1cbiAgICBpZiBpc19ub2RlX3ZhbGlkIHQgdGhlbiBTb21lIChOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2wpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0XG4gICAgdGhlbiBOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2xcbiAgICBlbHNlIGZhaWx3aXRoIFwiSGVhcC52YWx1ZV9leG46IG5vZGUgd2FzIHJlbW92ZWQgZnJvbSB0aGUgaGVhcFwiXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodmFsdWUgdCA6IGEgb3B0aW9uKV1cbmVuZFxuXG5sZXQgcmVtb3ZlIHQgKHRva2VuIDogXyBFbHQudCkgPVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdCB0b2tlbi5oZWFwKVxuICB0aGVuIGZhaWx3aXRoIFwiY2Fubm90IHJlbW92ZSBmcm9tIGEgZGlmZmVyZW50IGhlYXBcIlxuICBlbHNlIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0b2tlbi5ub2RlKVxuICB0aGVuIChcbiAgICBpZiBFbHQuaXNfbm9kZV92YWxpZCB0b2tlbiB0aGVuIHJlbW92ZV9ub25fZW1wdHkgdCB0b2tlbi5ub2RlO1xuICAgIHRva2VuLm5vZGUgPC0gTm9kZS5lbXB0eSAoKSlcbjs7XG5cbmxldCBhZGRfcmVtb3ZhYmxlIHQgdiA9XG4gIGxldCBub2RlID0gYWRkX25vZGUgdCB2IGluXG4gIHsgRWx0Lm5vZGU7IGhlYXAgPSB0OyBub2RlX2lkID0gTm9kZS5pZCB+cG9vbDp0LnBvb2wgbm9kZSB9XG47O1xuXG5sZXQgdXBkYXRlIHQgdG9rZW4gdiA9XG4gIHJlbW92ZSB0IHRva2VuO1xuICBhZGRfcmVtb3ZhYmxlIHQgdlxuOztcblxubGV0IGZpbmRfZWx0ID1cbiAgbGV0IHJlYyBsb29wIHQgZiBub2RlcyA9XG4gICAgbWF0Y2ggbm9kZXMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCB0IGYgcmVzdFxuICAgICAgZWxzZSBpZiBmIChOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbClcbiAgICAgIHRoZW4gU29tZSB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIHQgZiAoTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2w6dC5wb29sIDo6IE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wgOjogcmVzdClcbiAgaW5cbiAgZnVuIHQgfmYgLT4gbG9vcCB0IGYgWyB0LnJvb3QgXVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSBoZWFwID0gJ2EgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE5vZGUudFxuXG4gICAgbGV0IHZhbHVlIHQgaGVhcCA9IE5vZGUudmFsdWVfZXhuIH5wb29sOmhlYXAucG9vbCB0XG4gIGVuZFxuXG4gIGxldCBhZGRfcmVtb3ZhYmxlID0gYWRkX25vZGVcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZV9ub25fZW1wdHlcblxuICBsZXQgdXBkYXRlIHQgZWx0IHYgPVxuICAgIHJlbW92ZSB0IGVsdDtcbiAgICBhZGRfcmVtb3ZhYmxlIHQgdlxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGFtX3J1bm5pbmdfdGVzdCA6IGJvb2xcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBhID1cbiAgICBpZiBNLmFtX3J1bm5pbmdfdGVzdCB0aGVuIFNleHAuQXRvbSBcIjxoaWRkZW5faW5fdGVzdD5cIiBlbHNlIHNleHBfb2ZfYSBhXG4gIDs7XG5cbiAgbW9kdWxlIFdpdGhfbm9uX3JvdW5kdHJpcHBpbmdfaW5fdGVzdF9vZl9zZXhwID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cbiAgZW5kXG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBUdXJuZWRfb2ZmID0gc3RydWN0XG4gICAgICBtb2R1bGUgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmID0gTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IGZhbHNlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vZmYudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFR1cm5lZF9vbiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29uID0gTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IHRydWVcbiAgICAgICAgZW5kKVxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gaW50IFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29uLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIlR1cm5lZCBvblwiID1cbiAgICAgIHByaW50X3MgWyVzZXhwICgxMDI0IDogVHVybmVkX29uLnQpXTtcbiAgICAgIFslZXhwZWN0IHt8IDxoaWRkZW5faW5fdGVzdD4gfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIlR1cm5lZCBvZmZcIiA9XG4gICAgICBwcmludF9zIChbJXNleHBfb2Y6IFR1cm5lZF9vZmYudF0gMTAyNCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDI0IHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IGFtX3J1bm5pbmdfdGVzdFxuICBlbmQpXG4iLCJvcGVuIEJhc2VcblxudHlwZSArJ2EgdFxuXG4oKiBUaGlzIFtPYmoubWFnaWNdIGlzIE9LIGJlY2F1c2Ugd2UgbmV2ZXIgYWxsb3cgdXNlciBjb2RlIGFjY2VzcyB0byBbbm9uZV0gKGV4Y2VwdCB2aWFcbiAgIFt1bnNhZmVfdmFsdWVdKS4gIFdlIGRpc2FsbG93IFtfIFVvcHQudCBVb3B0LnRdLCBzbyB0aGVyZSBpcyBubyBjaGFuY2Ugb2YgY29uZnVzaW5nXG4gICBbbm9uZV0gd2l0aCBbc29tZSBub25lXS4gIEFuZCBbZmxvYXQgVW9wdC50IGFycmF5XSBpcyBzaW1pbGFybHkgZGlzYWxsb3dlZC4gKilcbmxldCBub25lIDogJ2EgdCA9IFN0ZGxpYi5PYmoubWFnaWMgXCJVb3B0Lm5vbmVcIlxuXG5sZXRbQGlubGluZV0gc29tZSAoeCA6ICdhKSA9XG4gIGxldCByIDogJ2EgdCA9IFN0ZGxpYi5PYmoubWFnaWMgeCBpblxuICBpZiBwaHlzX2VxdWFsIHIgbm9uZSB0aGVuIGZhaWx3aXRoIFwiVW9wdC5zb21lIFVvcHQubm9uZVwiO1xuICByXG47O1xuXG5sZXQgc29tZV9sb2NhbCA9IFN0ZGxpYi5PYmoubWFnaWMgc29tZVxubGV0IHNvbWVfbG9jYWwgOiAnYS4gKCdhW0Bsb2NhbF0pIC0+ICgnYSB0W0Bsb2NhbF0pID0gc29tZV9sb2NhbFxubGV0IHVuc2FmZV92YWx1ZSAoeCA6ICdhIHQpIDogJ2EgPSBTdGRsaWIuT2JqLm1hZ2ljIHhcbmxldCB1bnNhZmVfdmFsdWVfbG9jYWwgPSBTdGRsaWIuT2JqLm1hZ2ljIHVuc2FmZV92YWx1ZVxubGV0IHVuc2FmZV92YWx1ZV9sb2NhbCA6ICdhLiAoJ2EgdFtAbG9jYWxdKSAtPiAoJ2FbQGxvY2FsXSkgPSB1bnNhZmVfdmFsdWVfbG9jYWxcbmxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxubGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaWYgaXNfc29tZSB0IHRoZW4gaW52YXJpYW50X2EgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgaWYgaXNfbm9uZSB0IHRoZW4gWyVzZXhwIE5vbmVdIGVsc2UgWyVzZXhwIFNvbWUgKHVuc2FmZV92YWx1ZSB0IDogYSldXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSBpZiBpc19ub25lIHQgdGhlbiBmYWlsd2l0aCBcIlVvcHQudmFsdWVfZXhuXCIgZWxzZSB1bnNhZmVfdmFsdWUgdFxubGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IG5vbmVcbiAgfCBTb21lIGEgLT4gc29tZSBhXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBMb2NhbCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlX2xvY2FsXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgKFwidXNpbmcgdGhlIHNhbWUgc2VudGluZWwgdmFsdWVcIiBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgbWF0Y2ggc29tZSBcIlVvcHQubm9uZVwiIHdpdGhcbiAgICAgIHwgKF8gOiBzdHJpbmcgdCkgLT4gZmFpbHdpdGggXCJzaG91bGQgbm90IGhhdmUgZ290dGVuIHRvIHRoaXMgcG9pbnRcIlxuICAgICAgfCBleGNlcHRpb24gXyAtPiAoKVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBleHBsb2l0cyB0aGUgZmFjdCB0aGF0IE9DYW1sIGRvZXMgbm90IHBlcmZvcm0gY29udGV4dC1zd2l0Y2hlcyB1bmRlclxuICAgY2VydGFpbiBjb25kaXRpb25zLiAgSXQgY2FuIHRoZXJlZm9yZSBhdm9pZCB1c2luZyBtdXRleGVzLlxuXG4gICBHaXZlbiB0aGUgc2VtYW50aWNzIG9mIHRoZSBjdXJyZW50IE9DYW1sIHJ1bnRpbWUgKGFuZCBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZSksIGNvZGVcbiAgIHNlY3Rpb25zIGRvY3VtZW50ZWQgYXMgYXRvbWljIGJlbG93IHdpbGwgbmV2ZXIgY29udGFpbiBhIGNvbnRleHQtc3dpdGNoLiAgVGhlIGRlY2lkaW5nXG4gICBjcml0ZXJpb24gaXMgd2hldGhlciB0aGV5IGNvbnRhaW4gYWxsb2NhdGlvbnMgb3IgY2FsbHMgdG8gZXh0ZXJuYWwvYnVpbHRpbiBmdW5jdGlvbnMuXG4gICBJZiB0aGVyZSBpcyBub25lLCBhIGNvbnRleHQtc3dpdGNoIGNhbm5vdCBoYXBwZW4uICBBc3NpZ25tZW50cyB3aXRob3V0IGFsbG9jYXRpb25zLFxuICAgZmllbGQgYWNjZXNzLCBwYXR0ZXJuLW1hdGNoaW5nLCBldGMuLCBkbyBub3QgdHJpZ2dlciBjb250ZXh0LXN3aXRjaGVzLlxuXG4gICBDb2RlIHJldmlld2VycyBzaG91bGQgdGhlcmVmb3JlIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvd1xuICAgZG8gbm90IHZpb2xhdGUgdGhlIGFib3ZlIGFzc3VtcHRpb25zLiAgSXQgaXMgcHJ1ZGVudCB0byBkaXNhc3NlbWJsZSB0aGUgLm8gZmlsZSAodXNpbmdcbiAgIFtvYmpkdW1wIC1kcl0pIGFuZCBleGFtaW5lIGl0LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhIHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgKCkgPSB7IHZhbHVlID0gVW9wdC5ub25lOyBuZXh0ID0gVW9wdC5ub25lIH1cbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICgqIFtmcm9udF0gdG8gW2JhY2tdIGhhcyBbbGVuZ3RoICsgMV0gbGlua2VkIGVsZW1lbnRzLCB3aGVyZSB0aGUgZmlyc3QgW2xlbmd0aF0gaG9sZCB0aGVcbiAgICAgdmFsdWVzIGluIHRoZSBxdWV1ZSwgYW5kIHRoZSBsYXN0IGlzIFtiYWNrXSwgaG9sZGluZyBubyB2YWx1ZS4gKilcbiAgOyBtdXRhYmxlIGZyb250IDogJ2EgRWx0LnRcbiAgOyBtdXRhYmxlIGJhY2sgOiAnYSBFbHQudFxuICAoKiBbdW51c2VkX2VsdHNdIGlzIHNpbmdseSBsaW5rZWQgdmlhIFtuZXh0XSwgYW5kIGVuZHMgd2l0aCBbc2VudGluZWxdLiAgQWxsIGVsdHMgaW5cbiAgICAgW3VudXNlZF9lbHRzXSBoYXZlIFtVb3B0LmlzX25vbmUgZWx0LnZhbHVlXS4gKilcbiAgOyBtdXRhYmxlIHVudXNlZF9lbHRzIDogJ2EgRWx0LnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgbGV0IGkgPSByZWYgdC5sZW5ndGggaW5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgZnJvbnQgaW5cbiAgICAgICAgICAgd2hpbGUgIWkgPiAwIGRvXG4gICAgICAgICAgICAgZGVjciBpO1xuICAgICAgICAgICAgIGxldCBlbHQgPSAhciBpblxuICAgICAgICAgICAgIHIgOj0gVW9wdC52YWx1ZV9leG4gZWx0LkVsdC5uZXh0O1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIGVsdC52YWx1ZSlcbiAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsICFyIHQuYmFjaykpKVxuICAgICAgfmJhY2s6KGNoZWNrIChmdW4gYmFjayAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBiYWNrLkVsdC52YWx1ZSkpKVxuICAgICAgfnVudXNlZF9lbHRzOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bnVzZWRfZWx0cyAtPlxuICAgICAgICAgICBsZXQgciA9IHJlZiB1bnVzZWRfZWx0cyBpblxuICAgICAgICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgICAgICBsZXQgZWx0ID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICAgICAgICAgICByIDo9IGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmUpKSlcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgZWx0ID0gRWx0LmNyZWF0ZSAoKSBpblxuICB7IGZyb250ID0gZWx0OyBiYWNrID0gZWx0OyBsZW5ndGggPSAwOyB1bnVzZWRfZWx0cyA9IFVvcHQubm9uZSB9XG47O1xuXG5sZXQgZ2V0X3VudXNlZF9lbHQgdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIFVvcHQuaXNfc29tZSB0LnVudXNlZF9lbHRzXG4gIHRoZW4gKFxuICAgIGxldCBlbHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnVudXNlZF9lbHRzIGluXG4gICAgdC51bnVzZWRfZWx0cyA8LSBlbHQubmV4dDtcbiAgICBlbHQgKCogRU5EIEFUT01JQyBTRUNUSU9OICopKVxuICBlbHNlIEVsdC5jcmVhdGUgKClcbjs7XG5cbmxldCBlbnF1ZXVlICh0eXBlIGEpICh0IDogYSB0KSAoYSA6IGEpID1cbiAgbGV0IG5ld19iYWNrID0gZ2V0X3VudXNlZF9lbHQgdCBpblxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gIHQuYmFjay52YWx1ZSA8LSBVb3B0LnNvbWUgYTtcbiAgdC5iYWNrLm5leHQgPC0gVW9wdC5zb21lIG5ld19iYWNrO1xuICB0LmJhY2sgPC0gbmV3X2JhY2tcbjs7XG5cbigqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuXG5sZXQgcmV0dXJuX3VudXNlZF9lbHQgdCAoZWx0IDogXyBFbHQudCkgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBlbHQudmFsdWUgPC0gVW9wdC5ub25lO1xuICBlbHQubmV4dCA8LSB0LnVudXNlZF9lbHRzO1xuICB0LnVudXNlZF9lbHRzIDwtIFVvcHQuc29tZSBlbHQ7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICAoKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9kZXF1ZXVlX2VtcHR5IHQgPVxuICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIG9mIGVtcHR5IHF1ZXVlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0O1xuICBsZXQgZWx0ID0gdC5mcm9udCBpblxuICBsZXQgYSA9IGVsdC52YWx1ZSBpblxuICB0LmZyb250IDwtIFVvcHQudW5zYWZlX3ZhbHVlIGVsdC5uZXh0O1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICByZXR1cm5fdW51c2VkX2VsdCB0IGVsdDtcbiAgVW9wdC51bnNhZmVfdmFsdWUgYVxuOztcblxubGV0IGNsZWFyX2ludGVybmFsX3Bvb2wgdCA9IHQudW51c2VkX2VsdHMgPC0gVW9wdC5ub25lXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBVb3B0ID0gVW9wdFxuZW5kXG4iLCJpbmNsdWRlIENvcmUuQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxuKCogW2FmdGVyXSBpcyBsaWtlIFthZGRdLCBidXQgZGVhbHMgbmljZWx5IHdpdGggdGhlIGNhc2Ugb2Ygb3ZlcmZsb3cgYnkgaW5zdGVhZCByZXR1cm5pbmdcbiAgIFttYXhfdmFsdWVdLiAgVGltZS1zb3VyY2UgZnVuY3Rpb25zIHVzZSBbYWZ0ZXJdIHRvIGF2b2lkIGltbWVkaWF0ZWx5IGZpcmluZyBldmVudHMgdGhhdFxuICAgc2hvdWxkIG5ldmVyIGZpcmUsIGR1ZSB0byB0aGUgb3ZlcmZsb3cgbGVhZGluZyB0byBhIG5lZ2F0aXZlIHRpbWUgdGhhdCBhcHBlYXJzIHRvIGJlIGluXG4gICB0aGUgcGFzdC4gIFdlIGRvbid0IGNoZWNrIHVuZGVyZmxvdyBiZWNhdXNlIHRoYXQgaXMgdmVyeSB1bmxpa2VseSwgcmVxdWlyaW5nIGJvdGggYVxuICAgbmVnYXRpdmUgdGltZSBhbmQgYSBuZWdhdGl2ZSBzcGFuLiAqKVxubGV0IGFmdGVyIHQgc3BhbiA9XG4gIGxldCByZXN1bHQgPSBhZGQgdCBzcGFuIGluXG4gIGlmIFNwYW4uKCA+ICkgc3BhbiBTcGFuLnplcm8gJiYgcmVzdWx0IDwgdCB0aGVuIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIGVsc2UgcmVzdWx0XG47O1xuIiwibW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeVxuaW5jbHVkZSBBc3luY19rZXJuZWxfY29uZmlnLlByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuXG5sZXQgbG9nIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBlcHJpbnRmXG4gICAgXCIlc1xcbiUhXCJcbiAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgKFslc2V4cF9vZjogU2V4cC50ICogVGltZV9ucy50ICogc3RyaW5nICogYV1cbiAgICAgICAgICAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSwgVGltZV9ucy5ub3cgKCksIG1lc3NhZ2UsIGEpKSlcbjs7XG5cbmxldCBsb2dfc3RyaW5nIG1lc3NhZ2UgPSBsb2cgbWVzc2FnZSAoKSBbJXNleHBfb2Y6IHVuaXRdXG4iLCJtb2R1bGUgRGVidWdfaW5fdGhpc19kaXJlY3RvcnkgPSBEZWJ1Z1xubW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuISBDb3JlXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3Rvcnlcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICBBc3luY19rZXJuZWxfY29uZmlnLk1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgZXByaW50ID0gQ29yZS5EZWJ1Zy5lcHJpbnRcbmxldCBlcHJpbnRfcyA9IENvcmUuRGVidWcuZXByaW50X3NcbmxldCBlcHJpbnRzID0gQ29yZS5EZWJ1Zy5lcHJpbnRzXG5sZXQgcHJpbnRfcyBzZXhwID0gcHJpbnRmIFwiJXNcXG4lIVwiIChzZXhwIHw+IFNleHAudG9fc3RyaW5nX2h1bSlcbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5cbigqIFdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZXNlIG1vZHVsZXMgaW4gQXN5bmNfa2VybmVsLCB0byBhdm9pZCBkaWZmaWN1bHRpZXMgd2l0aFxuICAgdXNpbmcgaXQgb24ganNfb2Zfb2NhbWwuICopXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOb3JtYWxcbiAgfCBMb3dcbltAQGRlcml2aW5nIHNleHBfb2YsIGVudW1lcmF0ZV1cblxubGV0IG5vcm1hbCA9IE5vcm1hbFxubGV0IGxvdyA9IExvd1xuIiwiKCogVGhpcyBmaWxlIGRlZmluZXMgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyBhdCB0aGUgaGVhcnQgb2YgQXN5bmMuICBUaGUgZnVuY3Rpb25zXG4gICBhc3NvY2lhdGVkIHdpdGggdGhlIHR5cGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUocykgZm9yIGVhY2ggbW9kdWxlLlxuICAgVGhpcyBmaWxlIHNob3VsZCBkZWZpbmUgb25seSB0eXBlcywgbm90IGZ1bmN0aW9ucywgc2luY2UgZnVuY3Rpb25zIGRlZmluZWQgaW5zaWRlIHRoZVxuICAgcmVjdXJzaXZlIG1vZHVsZXMgYXJlIG5vdCBpbmxpbmVkLlxuXG4gICBJZiB5b3UgbmVlZCB0byBhZGQgZnVuY3Rpb25hbGl0eSB0byBhIG1vZHVsZSBidXQgZG9pbmcgc28gd291bGQgY3JlYXRlIGEgZGVwZW5kZW5jeVxuICAgY3ljbGUsIHNwbGl0IHRoZSBmaWxlIGludG8gcGllY2VzIGFzIG5lZWRlZCB0byBicmVhayB0aGUgY3ljbGUsIGUuZy4gc2NoZWR1bGVyMC5tbCxcbiAgIHNjaGVkdWxlcjEubWwsIHNjaGVkdWxlci5tbC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSByZWMgQ2VsbCA6IHNpZ1xuICB0eXBlIGFueSA9XG4gICAgWyBgRW1wdHlcbiAgICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICAgIHwgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgfCBgRnVsbFxuICAgIHwgYEluZGlyXG4gICAgXVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyA6XG4gICAgICAgIHsgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgIDsgbXV0YWJsZSBwcmV2IDogJ2EgSGFuZGxlci50XG4gICAgICAgIDsgbXV0YWJsZSBuZXh0IDogJ2EgSGFuZGxlci50XG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgdFxuICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgICAoJ2EgLT4gdW5pdCkgKiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9oYW5kbGVyIF0pIHRcbiAgICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgdFxuICAgIHwgRnVsbCA6ICdhIC0+ICgnYSwgWz4gYEZ1bGwgXSkgdFxuICAgIHwgSW5kaXIgOiAnYSBJdmFyLnQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgdFxuZW5kID1cbiAgQ2VsbFxuXG5hbmQgSGFuZGxlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIENlbGwudFxuZW5kID1cbiAgSGFuZGxlclxuXG5hbmQgSXZhciA6IHNpZ1xuICB0eXBlICdhIHQgPSB7IG11dGFibGUgY2VsbCA6ICgnYSwgQ2VsbC5hbnkpIENlbGwudCB9XG5cbiAgbW9kdWxlIEltbXV0YWJsZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IHsgY2VsbCA6ICgnYSwgQ2VsbC5hbnkpIENlbGwudCB9XG4gIGVuZFxuZW5kID1cbiAgSXZhclxuXG5hbmQgRGVmZXJyZWQgOiBzaWdcbiAgdHlwZSArISdhIHRcbmVuZCA9XG4gIERlZmVycmVkXG5cbmFuZCBFeGVjdXRpb25fY29udGV4dCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gICAgOyBsb2NhbF9zdG9yYWdlIDogVW5pdl9tYXAudFxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgRXhlY3V0aW9uX2NvbnRleHRcblxuYW5kIEZvcndhcmRpbmcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IERldGFjaGVkXG4gICAgfCBQYXJlbnQgb2YgTW9uaXRvci50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuXG5lbmQgPVxuICBGb3J3YXJkaW5nXG5cbmFuZCBNb25pdG9yIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogSW5mby50XG4gICAgOyBoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCBvcHRpb25cbiAgICA7IGlkIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gSXZhci50XG4gICAgOyBtdXRhYmxlIGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIDogKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcudFxuICAgIDsgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUYWlsLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgICA7IG11dGFibGUgZm9yd2FyZGluZyA6IEZvcndhcmRpbmcudFxuICAgIH1cbmVuZCA9XG4gIE1vbml0b3JcblxuYW5kIFRhaWwgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuZW5kID1cbiAgVGFpbFxuXG5hbmQgU3RyZWFtIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiAnYSAqICdhIHRcbmVuZCA9XG4gIFN0cmVhbVxuXG4oKiBXZSBhdm9pZCB1c2luZyBbbW9kdWxlIHJlY10gdG8gZGVmaW5lIFtCdmFyXSwgc28gdGhhdCBbdG9fcmVwcl0gYW5kIFtvZl9yZXByXSBhcmVcbiAgIGlubGluZWQuICopXG5tb2R1bGUgQnZhciA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtaXNzaW9uKSB0XG5cbiAgKCoqIFtyZXByXSBleGlzdHMgc28gdGhhdCB3ZSBtYXkgaGlkZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBbQnZhci50XSwgYW5kIHRoZW4gYWRkIGFcbiAgICAgIHBoYW50b20gdHlwZSB0byBpdCB1cHN0cmVhbS4gIFdpdGhvdXQgdGhpcywgdGhlIHBoYW50b20gdHlwZSB2YXJpYWJsZSB3b3VsZCBhbGxvd1xuICAgICAgZm9yIGFueXRoaW5nIHRvIGJlIGNvZXJjZWQgaW4gYW5kIG91dCwgc2luY2UgaXQgaXMgdW51c2VkLiAqKVxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdmFsIG9mX3JlcHIgOiAnYSByZXByIC0+ICgnYSwgJ3Blcm1pc3Npb24pIHRcbiAgdmFsIHRvX3JlcHIgOiAoJ2EsICdwZXJtaXNzaW9uKSB0IC0+ICdhIHJlcHJcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gJ2EgcmVwclxuXG4gIGxldCB0b19yZXByIHQgPSB0XG4gIGxldCBvZl9yZXByIHQgPSB0XG5lbmRcblxubW9kdWxlIHJlYyBFdmVudCA6IHNpZ1xuICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmlyZWRcbiAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XG4gICAgICB8IFNjaGVkdWxlZFxuICAgICAgfCBVbnNjaGVkdWxlZFxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZCA9XG4gIEV2ZW50XG5cbmFuZCBFeHRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoJ2EgLT4gdW5pdCkgKiAnYSAtPiB0XG5lbmQgPVxuICBFeHRlcm5hbF9qb2JcblxuYW5kIEpvYiA6IHNpZ1xuICB0eXBlIHNsb3RzID0gKEV4ZWN1dGlvbl9jb250ZXh0LnQsIE9iai50IC0+IHVuaXQsIE9iai50KSBQb29sLlNsb3RzLnQzXG4gIHR5cGUgdCA9IHNsb3RzIFBvb2wuUG9pbnRlci50XG5lbmQgPVxuICBKb2JcblxuYW5kIEpvYl9vcl9ldmVudCA6IHNpZ1xuICB0eXBlIHRcbmVuZCA9XG4gIEpvYl9vcl9ldmVudFxuXG5hbmQgSm9iX3Bvb2wgOiBzaWdcbiAgdHlwZSB0ID0gSm9iLnNsb3RzIFBvb2wudFxuZW5kID1cbiAgSm9iX3Bvb2xcblxuYW5kIEpvYl9xdWV1ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgICA7IG11dGFibGUgam9ic19sZWZ0X3RoaXNfY3ljbGUgOiBpbnRcbiAgICA7IG11dGFibGUgam9icyA6IE9iai50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gICAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gICAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIH1cbmVuZCA9XG4gIEpvYl9xdWV1ZVxuXG5hbmQgSm9icyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWwgOiBKb2JfcXVldWUudFxuICAgIDsgbG93IDogSm9iX3F1ZXVlLnRcbiAgICB9XG5lbmQgPVxuICBKb2JzXG5cbmFuZCBTY2hlZHVsZXIgOiBzaWdcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIDogVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgRGVxdWUudFxuICAgIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBjeWNsZV9jb3VudCA6IGludFxuICAgIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDogQ3ljbGVfaG9vay50IGFycmF5XG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IEN5Y2xlX2hvb2sudCBhcnJheVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6IChDeWNsZV9ob29rX2hhbmRsZS50LCBDeWNsZV9ob29rLnQpIEhhc2h0YmwudFxuICAgIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX251bV9qb2JzIDogaW50XG4gICAgOyBtdXRhYmxlIHRvdGFsX2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgVGltZV9zb3VyY2UudDFcbiAgICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDogdW5pdCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBldmVudF9hZGRlZF9ob29rIDogKFRpbWVfbnMudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgeWllbGQgOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gICAgOyBtdXRhYmxlIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRcbiAgICA7IG11dGFibGUgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sXG4gICAgfVxuZW5kID1cbiAgU2NoZWR1bGVyXG5cbmFuZCBDeWNsZV9ob29rIDogc2lnXG4gIHR5cGUgdCA9IHVuaXQgLT4gdW5pdFxuZW5kID1cbiAgQ3ljbGVfaG9va1xuXG5hbmQgQ3ljbGVfaG9va19oYW5kbGUgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcbmFuZCBUaW1lX3NvdXJjZV9pZCA6IFVuaXF1ZV9pZC5JZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5hbmQgVGltZV9zb3VyY2UgOiBzaWdcbiAgdHlwZSAtJ3J3IHQxID1cbiAgICB7IGlkIDogVGltZV9zb3VyY2VfaWQudFxuICAgIDsgbXV0YWJsZSBhZHZhbmNlX2Vycm9ycyA6IEVycm9yLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBhbV9hZHZhbmNpbmcgOiBib29sXG4gICAgOyBldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbXV0YWJsZSBmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udFxuICAgIDsgbXV0YWJsZSBtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50IC0+IHVuaXRcbiAgICA7IGlzX3dhbGxfY2xvY2sgOiBib29sXG4gICAgOyBzY2hlZHVsZXIgOiBTY2hlZHVsZXIudFxuICAgIH1cbmVuZCA9XG4gIFRpbWVfc291cmNlXG5cbmFuZCBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIgOiBzaWdcbiAgbW9kdWxlIEV4ZWNfcmVzdWx0IDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgTm90X2ZpbmlzaGVkXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IGV4ZWMgOiB1bml0IC0+IEV4ZWNfcmVzdWx0LnRcbiAgICB9XG5lbmQgPVxuICBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXJcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubGV0IGRlYnVnID0gRGVidWcubW9uaXRvclxuXG5tb2R1bGUgRm9yd2FyZGluZyA9IFR5cGVzLkZvcndhcmRpbmdcblxudHlwZSB0ID0gVHlwZXMuTW9uaXRvci50ID1cbiAgeyBuYW1lIDogSW5mby50XG4gIDsgaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgb3B0aW9uXG4gIDsgaWQgOiBpbnRcbiAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gVHlwZXMuSXZhci50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIHNjaGVkdWxlcyBhIGpvYiBmb3IgZWFjaCBlbGVtZW50IG9mIFtoYW5kbGVyc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA6IChUeXBlcy5FeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLnRcbiAgOyAoKiBbTW9uaXRvci5zZW5kX2V4bl0gZXh0ZW5kcyBlYWNoIHRhaWwgaW4gW3RhaWxzX2Zvcl9hbGxfZXJyb3JzXS4gKilcbiAgICBtdXRhYmxlIHRhaWxzX2Zvcl9hbGxfZXJyb3JzIDogZXhuIFR5cGVzLlRhaWwudCBsaXN0XG4gIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgOyBtdXRhYmxlIGZvcndhcmRpbmcgOiBGb3J3YXJkaW5nLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9XG4gIG1hdGNoIHQuaGVyZSB3aXRoXG4gIHwgTm9uZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCldXG4gIHwgU29tZSBoZXJlIC0+IFslc2V4cCAodC5uYW1lIDogSW5mby50KSwgKGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBkZXNjcmlwdGlvbnMgPVxuICBsZXQgcmVjIGxvb3AgdCBhYyA9XG4gICAgbGV0IGFjID0gZGVzY3JpcHRpb24gdCA6OiBhYyBpblxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCB8IFJlcG9ydF91bmNhdWdodF9leG4gLT4gTGlzdC5yZXYgYWNcbiAgICB8IFBhcmVudCB0IC0+IGxvb3AgdCBhY1xuICBpblxuICBmdW4gdCAtPiBsb29wIHQgW11cbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAoZGVzY3JpcHRpb25zIHQgOiBTZXhwLnQgbGlzdCldXG5cbmxldCBuZXh0X2lkID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgcGFyZW50ID1cbiAgbGV0IGlkID0gbmV4dF9pZCAoKSBpblxuICBsZXQgbmFtZSA9XG4gICAgbWF0Y2ggaW5mbywgbmFtZSB3aXRoXG4gICAgfCBTb21lIGksIE5vbmUgLT4gaVxuICAgIHwgU29tZSBpLCBTb21lIHMgLT4gSW5mby50YWcgaSB+dGFnOnNcbiAgICB8IE5vbmUsIFNvbWUgcyAtPiBJbmZvLm9mX3N0cmluZyBzXG4gICAgfCBOb25lLCBOb25lIC0+IEluZm8uY3JlYXRlIFwiaWRcIiBpZCBbJXNleHBfb2Y6IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0LnRdXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IG5hbWVcbiAgICA7IGhlcmVcbiAgICA7IGZvcndhcmRpbmcgPVxuICAgICAgICAobWF0Y2ggcGFyZW50IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBSZXBvcnRfdW5jYXVnaHRfZXhuXG4gICAgICAgICB8IFNvbWUgcGFyZW50IC0+IFBhcmVudCBwYXJlbnQpXG4gICAgOyBpZFxuICAgIDsgbmV4dF9lcnJvciA9IHsgY2VsbCA9IEVtcHR5IH1cbiAgICA7IGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzID0gQmFnLmNyZWF0ZSAoKVxuICAgIDsgdGFpbHNfZm9yX2FsbF9lcnJvcnMgPSBbXVxuICAgIDsgaGFzX3NlZW5fZXJyb3IgPSBmYWxzZVxuICAgIH1cbiAgaW5cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJjcmVhdGVkIG1vbml0b3JcIiB0IFslc2V4cF9vZjogdF07XG4gIHRcbjs7XG5cbmxldCBtYWluID0gY3JlYXRlX3dpdGhfcGFyZW50IH5uYW1lOlwibWFpblwiIE5vbmVcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE1vbml0b3IgPSBNb25pdG9yMFxuXG50eXBlIHQgPSBUeXBlcy5FeGVjdXRpb25fY29udGV4dC50ID1cbiAgeyBtb25pdG9yIDogTW9uaXRvci50XG4gIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gIDsgbG9jYWxfc3RvcmFnZSA6IFVuaXZfbWFwLnRcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA6IEJhY2t0cmFjZS50IGxpc3RcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG5sZXQgbWFpbiA9XG4gIHsgbW9uaXRvciA9IE1vbml0b3IubWFpblxuICA7IHByaW9yaXR5ID0gUHJpb3JpdHkubm9ybWFsXG4gIDsgbG9jYWxfc3RvcmFnZSA9IFVuaXZfbWFwLmVtcHR5XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgPSBbXVxuICB9XG47O1xuXG5sZXQgY3JlYXRlX2xpa2UgP21vbml0b3IgP3ByaW9yaXR5ID9sb2NhbF9zdG9yYWdlIHQgPVxuICBtYXRjaCBtb25pdG9yLCBwcmlvcml0eSwgbG9jYWxfc3RvcmFnZSB3aXRoXG4gIHwgTm9uZSwgTm9uZSwgTm9uZSAtPlxuICAgICgqIGF2b2lkIGFsbG9jYXRpbmcgaW4gdGhlIHRyaXZpYWwgY2FzZSwgd2hpY2ggZS5nLiBoYXBwZW5zIHdoZW4gY2FsbGluZ1xuICAgICAgIFtBc3luYy5zY2hlZHVsZV0gd2l0aG91dCBvcHRpb25hbCBhcmdzICopXG4gICAgdFxuICB8IF8gLT5cbiAgICBsZXQgbW9uaXRvciA9IE9wdGlvbi52YWx1ZSBtb25pdG9yIH5kZWZhdWx0OnQubW9uaXRvciBpblxuICAgIHsgbW9uaXRvclxuICAgIDsgcHJpb3JpdHkgPSBPcHRpb24udmFsdWUgcHJpb3JpdHkgfmRlZmF1bHQ6dC5wcmlvcml0eVxuICAgIDsgbG9jYWxfc3RvcmFnZSA9IE9wdGlvbi52YWx1ZSBsb2NhbF9zdG9yYWdlIH5kZWZhdWx0OnQubG9jYWxfc3RvcmFnZVxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgPSB0LmJhY2t0cmFjZV9oaXN0b3J5XG4gICAgfVxuOztcblxubGV0IGZpbmRfbG9jYWwgdCBrZXkgPSBVbml2X21hcC5maW5kIHQubG9jYWxfc3RvcmFnZSBrZXlcblxubGV0IHdpdGhfbG9jYWwgdCBrZXkgZGF0YSA9XG4gIHsgdCB3aXRoIGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5jaGFuZ2UgdC5sb2NhbF9zdG9yYWdlIGtleSB+ZjooZnVuIF8gLT4gZGF0YSkgfVxuOztcblxubGV0IHJlY29yZF9iYWNrdHJhY2UgdCA9XG4gIHsgdCB3aXRoIGJhY2t0cmFjZV9oaXN0b3J5ID0gQmFja3RyYWNlLmdldCAoKSA6OiB0LmJhY2t0cmFjZV9oaXN0b3J5IH1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHlwZXMuRXh0ZXJuYWxfam9iXG5cbmxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIjxqb2I+XCJcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBQb29sXG5cbmxldCBkdW1teV9lID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxubGV0IGR1bW15X2YgOiBPYmoudCAtPiB1bml0ID0gaWdub3JlXG5sZXQgZHVtbXlfYSA6IE9iai50ID0gT2JqLnJlcHIgKClcblxudHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCAoT2JqLnRbQHNleHAub3BhcXVlXSkpIFNsb3RzLnQzXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPSBzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbmxldCBjcmVhdGUgKCkgPSBjcmVhdGUgU2xvdHMudDMgfmNhcGFjaXR5OjEgfmR1bW15OihkdW1teV9lLCBkdW1teV9mLCBkdW1teV9hKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IEpvYl9wb29sLnNsb3RzIFBvb2wuUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBFdmVudCA9IFR5cGVzLkV2ZW50XG5tb2R1bGUgSm9iID0gVHlwZXMuSm9iXG5pbmNsdWRlIFR5cGVzLkpvYl9vcl9ldmVudFxuXG4oKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0IHRvXG4gICBbT2JqLm1hZ2ljXXMuICopXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlc1xuICBvcGVuIEV2ZW50XG5cbiAgdHlwZSBfdCA9IHQgPVxuICAgIHsgKCogbXVzdCBuZXZlciBiZSBpbW1lZGlhdGUgKilcbiAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBfIDogc2lnIGVuZCA9IHN0cnVjdFxuICBtb2R1bGUgRW5zdXJlX3ByaXZhdGVfaW50IChNIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIGludFxuICAgIGVuZCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIF90ID0gTS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgRW5zdXJlX3ByaXZhdGVfaW50IChKb2IpXG5lbmRcblxubGV0IG9mX2V2ZW50IGV2ZW50IDogdCA9IE9iai5tYWdpYyAoZXZlbnQgOiBFdmVudC50KVxubGV0IG9mX2pvYiBqb2IgOiB0ID0gT2JqLm1hZ2ljIChqb2IgOiBKb2IudClcbmxldCBpc19ldmVudCAodCA6IHQpID0gT2JqLmlzX2Jsb2NrIChPYmoucmVwciB0KVxubGV0IGlzX2pvYiAodCA6IHQpID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgdClcblxubW9kdWxlIE1hdGNoID0gc3RydWN0XG4gIHR5cGUgXyBraW5kID1cbiAgICB8IEV2ZW50IDogRXZlbnQudCBraW5kXG4gICAgfCBKb2IgOiBKb2IudCBraW5kXG5cbiAgdHlwZSBwYWNrZWQgPSBLIDogXyBraW5kIC0+IHBhY2tlZCBbQEB1bmJveGVkXVxuXG4gIGxldCBraW5kIHQgPSBpZiBpc19ldmVudCB0IHRoZW4gSyBFdmVudCBlbHNlIEsgSm9iXG4gIGxldCBwcm9qZWN0ICh0eXBlIGEpIChfIDogYSBraW5kKSBqb2Jfb3JfZXZlbnQgPSAoT2JqLm1hZ2ljIDogdCAtPiBhKSBqb2Jfb3JfZXZlbnRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLlNjaGVkdWxlclxuXG5sZXQgZXZlbnRzIHQgPSB0LnRpbWVfc291cmNlLmV2ZW50c1xuXG5sZXQgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAoKiBBdm9pZCBhIGNhbWxfbW9kaWZ5IGluIG1vc3QgY2FzZXMuICopXG4gIGlmIG5vdCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHRoZW4gdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDwtIGV4ZWN1dGlvbl9jb250ZXh0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5sZXQgc2xvdHNfcGVyX2VsdCA9IDNcblxubW9kdWxlIEEgPSBVbmlmb3JtX2FycmF5XG5cbigqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBzcGVjaWFsaXplZCBbRmxhdF9xdWV1ZV0sIGRvbmUgZm9yIHJlYXNvbnMgb2Ygc3BlZWQuICopXG50eXBlIHQgPSBUeXBlcy5Kb2JfcXVldWUudCA9XG4gIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gIDsgKCogW2pvYnNdIGlzIGFuIGFycmF5IG9mIGxlbmd0aCBbY2FwYWNpdHkgdCAqIHNsb3RzX3Blcl9lbHRdLCB3aGVyZSBlYWNoIGVsdCBoYXMgdGhlXG4gICAgICAgdGhyZWUgY29tcG9uZW50cyBvZiBhIGpvYiAoW2V4ZWN1dGlvbl9jb250ZXh0XSwgW2ZdLCBbYV0pIGluIGNvbnNlY3V0aXZlIHNwb3RzIGluXG4gICAgICAgW2pvYnNdLiAgW2VucXVldWVdIGRvdWJsZXMgdGhlIGxlbmd0aCBvZiBbam9ic10gaWYgW2pvYnNdIGlzIGZ1bGwuICBbam9ic10gbmV2ZXJcbiAgICAgICBzaHJpbmtzLiAgW2pvYnNdIGlzIHNvbWV3aGF0IGxpa2UgYSBbQ29yZS5Qb29sXSBzcGVjaWFsaXplZCB0byAzLXR1cGxlczsgd2VcbiAgICAgICBkb24ndCB1c2UgW1Bvb2xdIGJlY2F1c2UgdGhhdCBpbXBsZW1lbnRzIGEgc2V0LCB3aGVyZSBbam9ic10gaXMgYSBxdWV1ZS4gKilcbiAgICBtdXRhYmxlIGpvYnMgOiAoT2JqLnQgQS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogW21hc2tdIGlzIFtjYXBhY2l0eSB0IC0gMV0sIGFuZCBpcyB1c2VkIGZvciBxdWlja2x5IGNvbXB1dGluZyBbaSBtb2QgKGNhcGFjaXR5XG4gICAgICAgdCldLiBBIHNwZWNpYWwgY2FzZSB3aGVuIHRoZSBqb2IgcXVldWUgaGFzIGNhcGFjaXR5IDAgaXMgcmVwcmVzZW50ZWRcbiAgICAgICB3aXRoIFttYXNrID0gLTFdLiBUaGlzIHZhbHVlIGlzIG5vdCB1c2VmdWwgYXMgYSBiaXQtbWFzaywgYnV0IHdlIG9ubHkgdXNlXG4gICAgICAgdGhlIGJpdC1tYXNrIHdoZW4gdGhlcmUncyBjYXBhY2l0eSBpbiB0aGUgYXJyYXksIHNvIHRoYXQgaXMgbm90IGEgcHJvYmxlbS5cbiAgICAqKVxuICAgIG11dGFibGUgbWFzayA6IGludFxuICA7ICgqIFtmcm9udF0gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBqb2IgaW4gdGhlIHF1ZXVlLiAgVGhlIGFycmF5IGluZGV4IG9mIHRoYXQgam9iJ3NcbiAgICAgICBleGVjdXRpb24gY29udGV4dCBpcyBbZnJvbnQgKiBzbG90c19wZXJfZWx0XS4gKilcbiAgICBtdXRhYmxlIGZyb250IDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IG9mZnNldCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrICogc2xvdHNfcGVyX2VsdFxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm51bV9qb2JzX3J1bjooY2hlY2sgKGZ1biBudW1fam9ic19ydW4gLT4gYXNzZXJ0IChudW1fam9ic19ydW4gPj0gMCkpKVxuICAgICAgfmpvYnNfbGVmdF90aGlzX2N5Y2xlOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JzX2xlZnRfdGhpc19jeWNsZSAtPiBhc3NlcnQgKGpvYnNfbGVmdF90aGlzX2N5Y2xlID49IDApKSlcbiAgICAgIH5qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JzIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgIChPYmoub2JqIChBLmdldCBqb2JzIChvZmZzZXQgdCBpKSkgOiBFeGVjdXRpb25fY29udGV4dC50KVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXNrIC0+XG4gICAgICAgICAgIGxldCBjYXBhY2l0eSA9IG1hc2sgKyAxIGluXG4gICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgPSAwIHx8IEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQgPSBBLmxlbmd0aCB0LmpvYnMpKSlcbiAgICAgIH5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZTooZnVuIF8gLT4gKCkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPCBtYXggMSAoY2FwYWNpdHkgdCkpKSlcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkgdCkpKSlcbjs7XG5cbmxldCBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5ID0gQS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KGNhcGFjaXR5ICogc2xvdHNfcGVyX2VsdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gICgqIFdlIHN0YXJ0IHdpdGggW2NhcGFjaXR5ICA9IDBdIHNvIHRoYXQgdGhlIGZpcnN0IGpvYiB0aGF0IGlzIGFkZGVkIGNhbGxzIFtncm93XSBhbmRcbiAgICAgZmlsbHMgaW4gdGhlIFtiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZV0uICopXG4gIGxldCBjYXBhY2l0eSA9IDAgaW5cbiAgeyBudW1fam9ic19ydW4gPSAwXG4gIDsgam9ic19sZWZ0X3RoaXNfY3ljbGUgPSAwXG4gIDsgam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHlcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgZnJvbnQgPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlID0gTm9uZVxuICB9XG47O1xuXG5sZXQgYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgdCA9IHQuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWVcblxubGV0IGNsZWFyIHQgPVxuICB0LmZyb250IDwtIDA7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gMFxuOztcblxubGV0IGdyb3cgdCA9XG4gIChtYXRjaCB0LmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHdpdGhcbiAgIHwgU29tZSBfIC0+IGFzc2VydCAoY2FwYWNpdHkgdCA+IDApXG4gICB8IE5vbmUgLT4gdC5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA8LSBTb21lIChCYWNrdHJhY2UuZ2V0ICgpKSk7XG4gIGxldCBvbGRfY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGxldCBuZXdfY2FwYWNpdHkgPSBtYXggMSAob2xkX2NhcGFjaXR5ICogMikgaW5cbiAgbGV0IG9sZF9qb2JzID0gdC5qb2JzIGluXG4gIGxldCBvbGRfZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCBsZW4xID0gSW50Lm1pbiB0Lmxlbmd0aCAob2xkX2NhcGFjaXR5IC0gb2xkX2Zyb250KSAqIHNsb3RzX3Blcl9lbHQgaW5cbiAgbGV0IGxlbjIgPSAodC5sZW5ndGggKiBzbG90c19wZXJfZWx0KSAtIGxlbjEgaW5cbiAgbGV0IG5ld19qb2JzID0gY3JlYXRlX2FycmF5IH5jYXBhY2l0eTpuZXdfY2FwYWNpdHkgaW5cbiAgQS5ibGl0XG4gICAgfmxlbjpsZW4xXG4gICAgfnNyYzpvbGRfam9ic1xuICAgIH5zcmNfcG9zOihvbGRfZnJvbnQgKiBzbG90c19wZXJfZWx0KVxuICAgIH5kc3Q6bmV3X2pvYnNcbiAgICB+ZHN0X3BvczowO1xuICBBLmJsaXQgfmxlbjpsZW4yIH5zcmM6b2xkX2pvYnMgfnNyY19wb3M6MCB+ZHN0Om5ld19qb2JzIH5kc3RfcG9zOmxlbjE7XG4gIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICB0LmpvYnMgPC0gbmV3X2pvYnM7XG4gIHQuZnJvbnQgPC0gMFxuOztcblxubGV0IHNldCAodHlwZSBhKSB0IGkgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IG9mZnNldCA9IG9mZnNldCB0IGkgaW5cbiAgQS51bnNhZmVfc2V0IHQuam9icyBvZmZzZXQgKE9iai5yZXByIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpKTtcbiAgQS51bnNhZmVfc2V0IHQuam9icyAob2Zmc2V0ICsgMSkgKE9iai5yZXByIChmIDogYSAtPiB1bml0KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDIpIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBncm93IHQ7XG4gIHNldCB0IHQubGVuZ3RoIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJKb2JzLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSBnb3QgbmVnYXRpdmUgbnVtYmVyXCIgKG4gOiBpbnQpICh0IDogdCldO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIG5cbjs7XG5cbmxldCBjYW5fcnVuX2Ffam9iIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA+IDBcblxubGV0IHJ1bl9qb2IgdCAoc2NoZWR1bGVyIDogU2NoZWR1bGVyLnQpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHQubnVtX2pvYnNfcnVuIDwtIHQubnVtX2pvYnNfcnVuICsgMTtcbiAgU2NoZWR1bGVyLnNldF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGYgYVxuOztcblxubGV0IHJ1bl9leHRlcm5hbF9qb2JzIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSA9XG4gIGxldCBleHRlcm5hbF9qb2JzID0gc2NoZWR1bGVyLmV4dGVybmFsX2pvYnMgaW5cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIGV4dGVybmFsX2pvYnMgPiAwIGRvXG4gICAgbGV0IChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKSA9XG4gICAgICBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBleHRlcm5hbF9qb2JzXG4gICAgaW5cbiAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBkb25lXG47O1xuXG5sZXQgcnVuX2pvYnMgKHR5cGUgYSkgdCBzY2hlZHVsZXIgPVxuICAoKiBXZSBkbyB0aGUgW3RyeS13aXRoXSBvdXRzaWRlIG9mIHRoZSBbd2hpbGVdIGJlY2F1c2UgaXQgaXMgY2hlYXBlciB0aGFuIGRvaW5nIGFcbiAgICAgW3RyeS13aXRoXSBmb3IgZWFjaCBqb2IuICopXG4gICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYmVmb3JlIGVudGVyaW5nIHRoZSBsb29wLCBzaW5jZSBpdCBtaWdodCBlbnF1ZXVlIGEgam9iLFxuICAgICBjaGFuZ2luZyBbdC5sZW5ndGhdLiAqKVxuICB0cnlcbiAgICBydW5fZXh0ZXJuYWxfam9icyB0IHNjaGVkdWxlcjtcbiAgICB3aGlsZSBjYW5fcnVuX2Ffam9iIHQgZG9cbiAgICAgIGxldCB0aGlzX2pvYiA9IG9mZnNldCB0IDAgaW5cbiAgICAgIGxldCBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgPVxuICAgICAgICBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzIHRoaXNfam9iKVxuICAgICAgaW5cbiAgICAgIGxldCBmIDogYSAtPiB1bml0ID0gT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyAodGhpc19qb2IgKyAxKSkgaW5cbiAgICAgIGxldCBhIDogYSA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMikpIGluXG4gICAgICAoKiBXZSBjbGVhciBvdXQgdGhlIGpvYiByaWdodCBub3cgc28gdGhhdCBpdCBpc24ndCBsaXZlIGF0IHRoZSBuZXh0IG1pbm9yXG4gICAgICAgICBjb2xsZWN0aW9uLiAgV2UgdHJpZWQgbm90IGRvaW5nIHRoaXMgYW5kIHNhdyBzaWduaWZpY2FudCAoMTUlIG9yIHNvKSBwZXJmb3JtYW5jZVxuICAgICAgICAgaGl0cyBkdWUgdG8gc3B1cmlvdXMgcHJvbW90aW9uLiAqKVxuICAgICAgc2V0IHQgMCBkdW1teV9lIGR1bW15X2YgZHVtbXlfYTtcbiAgICAgIHQuZnJvbnQgPC0gKHQuZnJvbnQgKyAxKSBsYW5kIHQubWFzaztcbiAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gdC5qb2JzX2xlZnRfdGhpc19jeWNsZSAtIDE7XG4gICAgICAoKiBJdCBpcyBPSyBpZiBbcnVuX2pvYl0gb3IgW3J1bl9leHRlcm5hbF9qb2JzXSByYWlzZXMsIGluIHdoaWNoIGNhc2UgdGhlIGV4biBpc1xuICAgICAgICAgaGFuZGxlZCBieSB0aGUgb3V0ZXIgdHJ5LXdpdGguICBUaGUgb25seSBzaWRlIGVmZmVjdHMgd2UgaGF2ZSBkb25lIGFyZSB0byB0YWtlXG4gICAgICAgICB0aGUgam9iIG91dCBvZiB0aGUgcXVldWUgYW5kIGRlY3JlbWVudCBbam9ic19sZWZ0X3RoaXNfY3ljbGVdLiAgW3J1bl9qb2JdIG9yXG4gICAgICAgICBbcnVuX2V4dGVybmFsX2pvYnNdIG1heSBzaWRlIGVmZmVjdCBbdF0sIGVpdGhlciBieSBlbnF1ZXVlaW5nIGpvYnMsIG9yIGJ5XG4gICAgICAgICBjbGVhcmluZyBbdF0uICopXG4gICAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICAgICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYXQgZWFjaCBpdGVyYXRpb24gb2YgdGhlIFt3aGlsZV0gbG9vcCwgZm9yIGZhaXJuZXNzLiAqKVxuICAgICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXJcbiAgICBkb25lO1xuICAgIE9rICgpXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAoKiBXZSBjYWxsIFtFeG4uYmFja3RyYWNlXSBpbW1lZGlhdGVseSBhZnRlciBjYXRjaGluZyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLCB0b1xuICAgICAgIGVuc3VyZSB0aGVyZSBpcyBubyBpbnRlcnZlbmluZyBjb2RlIHRoYXQgaW50ZXJmZXJlcyB3aXRoIHRoZSBnbG9iYWwgYmFja3RyYWNlXG4gICAgICAgc3RhdGUuICopXG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICBFcnJvciAoZXhuLCBiYWNrdHJhY2UpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGV4dGVybmFsIGZvcm1hdCA6IGZsb2F0IC0+IHN0cmluZyAtPiBzdHJpbmcgPSBcImNvcmVfdGltZV9uc19mb3JtYXRcIlxuXG4gICgqIFdlIHVzZSBhIG1vcmUgcGxlYXNhbnQgZm9ybWF0IHRoYW4gW0NvcmUuVGltZV9ucy5zZXhwX29mX3RdLFxuICAgICB3aGljaCBoYXMgdG8gYmUgbWVzc2llciBmb3Igcm91bmQgdHJpcHBhYmlsaXR5LiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIFslc2V4cFxuICAgICAgKGZvcm1hdCAodCB8PiB0b19zcGFuX3NpbmNlX2Vwb2NoIHw+IFNwYW4udG9fc2VjKSBcIiVZLSVtLSVkVCVIOiVNOiVTJXpcIiA6IHN0cmluZyldXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIGluY2x1ZGUgVGltaW5nX3doZWVsLkFsYXJtXG5cbiAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgKCogMS84dGggb2YgYSBtaWxsaXNlY29uZCBhbGFybV9wcmVjaXNpb24gc2VlbXMgc3VmZmljaWVudCB0byBhdm9pZCBoYXZpbmcgbWFueSBhbGFybXNcbiAgICAgaW4gdGhlIHNhbWUgaW50ZXJ2YWwsIHdoaWNoIGF2b2lkcyBxdWFkcmF0aWMgaW5zZXJ0aW9uIHNvcnQgd2hlbiBmaXJpbmcgYWxhcm1zLiAgQW5kXG4gICAgIHRoZSBsZXZlbCBiaXRzIGdpdmUgdXMgbGV2ZWxzIG9mID4xcywgPjFtLCA+MWgsID4xZC4gIFNlZSB0ZXN0IGluXG4gICAgIFsuLi90ZXN0L3Rlc3Rfc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWxdLiAqKVxuICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMzsgNjsgNjsgNSBdKVxuICAgICgpXG47O1xuXG50eXBlIGNhbGxiYWNrID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBJZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5TdGF0dXMudCA9XG4gICAgICAgIHwgRmlyZWQgKCogaW4gW2ZpcmVkX2V2ZW50c10sIHJlYWR5IHRvIHJ1biAqKVxuICAgICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgICAoKiBjdXJyZW50bHkgcnVubmluZyB0aGUgY2FsbGJhY2sgKGZvciBhIHBlcmlvZGljIGV2ZW50KSAqKVxuICAgICAgICB8IFNjaGVkdWxlZCAoKiBpbiB0aGUgdGltaW5nIHdoZWVsICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQgKCogbm90IGluIHRpbWluZyB3aGVlbCBvciBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICAgIGxldCB0cmFuc2l0aW9uX2lzX2FsbG93ZWQgfmZyb20gfnRvXyA9XG4gICAgICAgIG1hdGNoIGZyb20sIHRvXyB3aXRoXG4gICAgICAgIHwgKCBGaXJlZFxuICAgICAgICAgICwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50ICgqIHN0YXJ0ZWQgcnVubmluZyBjYWxsYmFjayAoZm9yIGEgcGVyaW9kaWMgZXZlbnQpICopXG4gICAgICAgICAgKVxuICAgICAgICB8ICggRmlyZWRcbiAgICAgICAgICAsIFVuc2NoZWR1bGVkXG4gICAgICAgICAgICAoKiBhYm9ydGVkLCBvciBzdGFydGVkIHJ1bm5pbmcgY2FsbGJhY2sgKGZvciBhIG5vbi1wZXJpb2RpYyBldmVudCkgKikgKVxuICAgICAgICAoKiBbcmVzY2hlZHVsZV8qXSBnb2VzIHRocm91Z2ggYW4gaW50ZXJtZWRpYXRlIFtGaXJlZCwgVW5zY2hlZHVsZWRdIHN0YXRlLFxuICAgICAgICAgICBzbyB3ZSBuZXZlciB0cmFuc2l0aW9uIGZyb20gW0ZpcmVkXSBkaXJlY3RseSB0byBbU2NoZWR1bGVkXS4gKilcbiAgICAgICAgfCAoIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgICAgICwgU2NoZWR1bGVkICgqIHNjaGVkdWxlZCBuZXh0IGl0ZXJhdGlvbiBvZiBhIHBlcmlvZGljIGV2ZW50ICopIClcbiAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQsIFVuc2NoZWR1bGVkICgqIGFib3J0ZWQgKilcbiAgICAgICAgfCBTY2hlZHVsZWQsIEZpcmVkICgqIG1vdmVkIGZyb20gdGltaW5nIHdoZWVsIHRvIFtmaXJlZF9ldmVudHNdICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBVbnNjaGVkdWxlZCAoKiBhYm9ydGVkICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQsIEZpcmVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgcGFzdCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBTY2hlZHVsZWQgKCogZXZlbnQgc2NoZWR1bGVkIGluIHRoZSBmdXR1cmUgKikgLT4gdHJ1ZVxuICAgICAgICB8IChGaXJlZCB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IFVuc2NoZWR1bGVkKSwgXyAtPiBmYWxzZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgZXZlbnQgPSBUeXBlcy5FdmVudC50XG5cbiAgICBsZXQgc2V4cF9vZl9ldmVudFxuICAgICAgICAgICh7IGFsYXJtID0gX1xuICAgICAgICAgICA7IGF0XG4gICAgICAgICAgIDsgY2FsbGJhY2sgPSBfXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBfXG4gICAgICAgICAgIDsgaW50ZXJ2YWxcbiAgICAgICAgICAgOyBuZXh0X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHByZXZfZmlyZWQgPSBfXG4gICAgICAgICAgIDsgc3RhdHVzXG4gICAgICAgICAgIH0gOlxuICAgICAgICAgICAgIGV2ZW50KVxuICAgICAgPVxuICAgICAgWyVzZXhwXG4gICAgICAgIHsgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgOyBhdCA6IFRpbWVfbnMudFxuICAgICAgICA7IGludGVydmFsIDogKFRpbWVfbnMuU3Bhbi50IG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICB9XVxuICAgIDs7XG5cbiAgICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgICAoKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0XG4gICAgICAgICB0byBbT2JqLm1hZ2ljXXMuICopXG4gICAgICBtb2R1bGUgRXZlbnRfaXNfYmxvY2sgOiBzaWcgZW5kID0gc3RydWN0XG4gICAgICAgIG9wZW4gVHlwZXNcbiAgICAgICAgb3BlbiBFdmVudFxuXG4gICAgICAgIHR5cGUgX3QgPSB0ID1cbiAgICAgICAgICB7ICgqIG11c3QgbmV2ZXIgYmUgaW1tZWRpYXRlICopXG4gICAgICAgICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICAgICAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICAgICAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgICAgICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgICAgIH1cbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5PcHRpb24udFxuXG4gICAgICAoKiBVc2luZyBhbiBpbW1lZGlhdGUgcmF0aGVyIHRoYW4gYSBzdGF0aWNhbGx5LWFsbG9jYXRlZCByZWNvcmQgaGVyZSBzZWVtcyB0b1xuICAgICAgICAgaW1wcm92ZSBwZXJmb3JtYW5jZSBub3RpY2VhYmx5IChbLi4vYmVuY2gvYmluL2JlbmNoX3RpbWVfc291cmNlLmV4ZV0gYmVuY2htYXJrXG4gICAgICAgICBpcyBmYXN0ZXIgYnkgfjEwbnMgcGVyIGFsYXJtKSwgcHJlc3VtYWJseSBiZWNhdXNlIGl0IGF2b2lkcyB0aGUgZXhwZW5zaXZlXG4gICAgICAgICBwYXJ0cyBvZiBjYW1sX21vZGlmeS4gKilcbiAgICAgIGxldCBub25lID0gKE9iai5tYWdpYyBOb25lIDogdCkgKCogYW4gYXJiaXRyYXJ5IGltbWVkaWF0ZSAqKVxuICAgICAgbGV0IHNvbWUgPSAoT2JqLm1hZ2ljIDogVHlwZXMuRXZlbnQudCAtPiB0KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHBoeXNfZXF1YWwgdCBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgZmlyc3Rfc29tZSB0MSB0MiA9IGlmIGlzX3NvbWUgdDEgdGhlbiB0MSBlbHNlIHQyXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gKE9iai5tYWdpYyA6IHQgLT4gVHlwZXMuRXZlbnQudClcblxuICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBvcGVuIE9wdGlvbmFsX3N5bnRheFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFslc2V4cCAoKV1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBldmVudCldXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuc2FmZV92YWx1ZSB0KVxuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50Lk9wdGlvbi52YWx1ZV9leG4gTm9uZV1cIl1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFNvbWUgZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gc29tZSBldmVudFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50LnQgPVxuICAgICAgeyAoKiBbYWxhcm1dIGlzIG5vbi1udWxsIGlmZiB0aGUgZXZlbnQgaXMgaW4gdGhlIHRpbWluZyB3aGVlbC4gKilcbiAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnRcbiAgICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW2ludGVydmFsXSBpcyB0aGUgcGVyaW9kIGZvciB0aGUgcGVyaW9kaWMgZXZlbnRzLiAqKVxuICAgICAgICBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICA7ICgqIFtuZXh0X2ZpcmVkXSBhbmQgW3ByZXZfZmlyZWRdIGNyZWF0ZSBhIGRvdWJseS1saW5rZWQgKG5vbi1jaXJjdWxhcikgbGlzdCBvZlxuICAgICAgICAgICBmaXJlZCBldmVudHMsIGxpbmtlZCB2aWEgdGhlc2UgZmllbGRzLiBBbiBldmVudCBpcyBhZGRlZCB0byB0aGUgbGlzdCB3aGVuXG4gICAgICAgICAgIGl0IGZpcmVzLCBlaXRoZXIgYmVjYXVzZSBpdCBpcyBhZGRlZCB3aXRoIGEgdGltZSBpbiB0aGUgcGFzdCwgb3JcbiAgICAgICAgICAgYmVjYXVzZSB0aW1lIGFkdmFuY2VzLiBbYWR2YW5jZV9ieV9hbGFybXNdIGl0ZXJhdGVzIG92ZXIgdGhlIGV2ZW50c1xuICAgICAgICAgICBpbiBbbmV4dF9maXJlZF0gYW5kIHJ1bnMgdGhlbSwgZW1wdHlpbmcgdGhlIGxpc3QuIFtub25lXSBpcyB1c2VkIHRvXG4gICAgICAgICAgIGluZGljYXRlIHRoZSBlbmQgb2YgdGhlIGxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cy4gKilcbiAgICAgICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBzZXhwX29mX3QgPSBbJXNleHBfb2Y6IGV2ZW50XVxuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgICB+YWxhcm06XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAgICAgKEFsYXJtLmlzX251bGwgYWxhcm0pXG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBGaXJlZCB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFVuc2NoZWR1bGVkIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfCBTY2hlZHVsZWQgLT4gZmFsc2UpKSlcbiAgICAgICAgICB+YXQ6aWdub3JlXG4gICAgICAgICAgfmNhbGxiYWNrOmlnbm9yZVxuICAgICAgICAgIH5leGVjdXRpb25fY29udGV4dDppZ25vcmVcbiAgICAgICAgICB+aW50ZXJ2YWw6aWdub3JlXG4gICAgICAgICAgfm5leHRfZmlyZWQ6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobmV4dF9maXJlZCA6IE9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgKCogW25leHRfZmlyZWRdIGNhbiBiZSBbTm9uZV0gZXZlbiBpZiB0aGUgZXZlbnQgc3RhdHVzIGlzIEZpcmVkLCBhc3N1bWluZ1xuICAgICAgICAgICAgICAgICAgICBpdCdzIGF0IHRoZSBlbmQgb2YgdGhlIGZpcmVkIGV2ZW50cyBsaXN0ICopXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgbmV4dF9maXJlZCAtPlxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBTdGF0dXMudF0gdC5zdGF0dXMgfmV4cGVjdDpGaXJlZDtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChPcHRpb24uc29tZSB0KSBuZXh0X2ZpcmVkLnByZXZfZmlyZWQpKSlcbiAgICAgICAgICB+cHJldl9maXJlZDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHByZXZfZmlyZWQgLT5cbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChwcmV2X2ZpcmVkIDogT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbcHJldl9maXJlZF0gY2FuIGJlIFtOb25lXSBldmVuIGlmIHRoZSBldmVudCBzdGF0dXMgaXMgRmlyZWQsIGFzc3VtaW5nXG4gICAgICAgICAgICAgICAgICAgIGl0J3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyZWQgZXZlbnRzIGxpc3QgKilcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFN0YXR1cy50XSB0LnN0YXR1cyB+ZXhwZWN0OkZpcmVkO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKE9wdGlvbi5zb21lIHQpIHByZXZfZmlyZWQubmV4dF9maXJlZCkpKVxuICAgICAgICAgIH5zdGF0dXM6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biAoc3RhdHVzIDogU3RhdHVzLnQpIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgLT4gYXNzZXJ0IChDb3JlLk9wdGlvbi5pc19zb21lIHQuaW50ZXJ2YWwpXG4gICAgICAgICAgICAgICB8IEZpcmVkIHwgVW5zY2hlZHVsZWQgfCBTY2hlZHVsZWQgLT4gKCkpKSlcbiAgICA7O1xuXG4gICAgbGV0IHNldF9zdGF0dXMgdCB0b18gPVxuICAgICAgbGV0IGZyb20gPSB0LnN0YXR1cyBpblxuICAgICAgaWYgbm90IChTdGF0dXMudHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18pXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFslaGVyZV1cbiAgICAgICAgICAgICAgXCJidWcgLS0gc2V0X3N0YXR1cyB0cmFuc2l0aW9uIG5vdCBhbGxvd2VkXCJcbiAgICAgICAgICAgICAgKGZyb20gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgKHRvXyA6IFN0YXR1cy50KVxuICAgICAgICAgICAgICB+ZXZlbnQ6KHQgOiB0KV07XG4gICAgICB0LnN0YXR1cyA8LSB0b19cbiAgICA7O1xuXG4gICAgbGV0IHNldF9zdGF0dXNfaWYgfmlzIHQgdG9fID0gaWYgU3RhdHVzLmVxdWFsIGlzIHQuc3RhdHVzIHRoZW4gc2V0X3N0YXR1cyB0IHRvX1xuICAgIGxldCBzY2hlZHVsZWRfYXQgPSBhdFxuICBlbmRcblxuICBtb2R1bGUgSm9iX29yX2V2ZW50ID0gc3RydWN0XG4gICAgaW5jbHVkZSBKb2Jfb3JfZXZlbnRcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgIGxldCAoSyBrKSA9IGtpbmQgdCBpblxuICAgICAgbWF0Y2ggaywgcHJvamVjdCBrIHQgd2l0aFxuICAgICAgfCBFdmVudCwgZXZlbnQgLT4gWyVzZXhwIChldmVudCA6IEV2ZW50LnQpXVxuICAgICAgfCBKb2IsIF8gLT5cbiAgICAgICAgKCogV2UgZG9uJ3QgZGlzcGxheSB0aGUgW0pvYi50XXMgaW4gW2V2ZW50c10gYmVjYXVzZSB0aG9zZSBhcmVcbiAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgIFslbWVzc2FnZSBcIjxKb2IudD5cIl1cbiAgICA7O1xuICBlbmRcblxuICB0eXBlIC0ncncgdCA9ICdydyBUeXBlcy5UaW1lX3NvdXJjZS50MSA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7ICgqIFthZHZhbmNlX2Vycm9yc10gYWNjdW11bGF0ZXMgZXJyb3JzIHJhaXNlZCBieSBhbGFybXMgcnVuIGJ5XG4gICAgICAgICBbYWR2YW5jZV9ieV9hbGFybXNdLiAqKVxuICAgICAgbXV0YWJsZSBhZHZhbmNlX2Vycm9ycyA6IEVycm9yLnQgbGlzdFxuICAgIDsgKCogW2FtX2FkdmFuY2luZ10gaXMgdHJ1ZSBvbmx5IGR1cmluZyBbYWR2YW5jZV9ieV9hbGFybXNdLCBhbmQgaXMgdXNlZCB0byBjYXVzZVxuICAgICAgICAgY2FsbGJhY2tzIHRvIHJhaXNlIGlmIHRoZXkgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdLiAqKVxuICAgICAgbXV0YWJsZSBhbV9hZHZhbmNpbmcgOiBib29sXG4gICAgOyBldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgKCogW2ZpcmVkX2V2ZW50c10gaXMgdGhlIGZyb250IG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2YgZmlyZWQgZXZlbnRzLFxuICAgICAgICAgd2hpY2ggaXMgc3RvcmVkIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW0V2ZW50LmF0XS4gKilcbiAgICAgIG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7ICgqIFttb3N0X3JlY2VudGx5X2ZpcmVkXSBpcyB0aGUgZXZlbnQgdGhhdCB3YXMgbW9zdCByZWNlbnRseSBpbnNlcnRlZCBpbnRvXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gSXQgaXMgdXNlZCBhcyBhbiBvcHRpbWl6YXRpb24gdG8gYWxsb3cgaW5zZXJ0aW9uIG9mXG4gICAgICAgICBzdWJzZXF1ZW50IGV2ZW50cyB0byBzdGFydCBsYXRlciBpbiB0aGUgbGlzdCByYXRoZXIgdGhhbiBhdCB0aGUgYmVnaW5uaW5nLlxuICAgICAgICAgSXQgc3BlY2lmaWNhbGx5IGF2b2lkcyBxdWFkcmF0aWMgYmVoYXZpb3Igd2hlbiBpbnNlcnRpbmcgbXVsdGlwbGUgZXZlbnRzXG4gICAgICAgICB0aGF0IGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0aW1lIC0tIHRoZSB0aW1lIHNvdXJjZSBmaXJlcyBzdWNoIGV2ZW50cyBpblxuICAgICAgICAgdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZCwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBpbiB0aGF0IHNhbWUgb3JkZXIgaW5cbiAgICAgICAgIFtmaXJlZF9ldmVudHNdLiAqKVxuICAgICAgbXV0YWJsZSBtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7ICgqIFdlIHN0b3JlIFtoYW5kbGVfZmlyZWRdIGluIFt0XSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IGV2ZXJ5IHRpbWUgd2UgY2FsbFxuICAgICAgICAgW2FkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgaGFuZGxlX2ZpcmVkIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyMC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgKCogV2UgZG9uJ3QgaW5jbHVkZSB0aGUgW2lkXSBpbiB0aGUgc2V4cCBiZWNhdXNlIHRoZSB1c2VyIChyaWdodGx5KSBjYW4ndCBjb250cm9sIGl0LCBzb1xuICAgICBpdCdzIGhhcmQgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljIGluIHRlc3RzLiAqKVxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBpZCA9IF9cbiAgICAgICAgOyBhZHZhbmNlX2Vycm9ycyA9IF9cbiAgICAgICAgOyBhbV9hZHZhbmNpbmcgPSBfXG4gICAgICAgIDsgZXZlbnRzXG4gICAgICAgIDsgZmlyZWRfZXZlbnRzID0gX1xuICAgICAgICA7IGhhbmRsZV9maXJlZCA9IF9cbiAgICAgICAgOyBpc193YWxsX2Nsb2NrXG4gICAgICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IF9cbiAgICAgICAgOyBzY2hlZHVsZXIgPSBfXG4gICAgICAgIH1cbiAgICA9XG4gICAgbGV0IG5vdyA9IFRpbWluZ193aGVlbC5ub3cgZXZlbnRzIGluXG4gICAgaWYgaXNfd2FsbF9jbG9ja1xuICAgIHRoZW4gWyVtZXNzYWdlIFwid2FsbF9jbG9ja1wiIChub3cgOiBUaW1lX25zLnQpXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGFsbF9ldmVudHMgPSByZWYgW10gaW5cbiAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgIGFsbF9ldmVudHMgOj0gKEFsYXJtLmF0IGV2ZW50cyBhbGFybSwgQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSA6OiAhYWxsX2V2ZW50cyk7XG4gICAgICBsZXQgZXZlbnRzID1cbiAgICAgICAgTGlzdC5zb3J0ICFhbGxfZXZlbnRzIH5jb21wYXJlOihmdW4gKGF0MSwgXykgKGF0MiwgXykgLT4gVGltZV9ucy5jb21wYXJlIGF0MSBhdDIpXG4gICAgICAgIHw+IExpc3QubWFwIH5mOnNuZFxuICAgICAgaW5cbiAgICAgIFslbWVzc2FnZSBcIlwiIChub3cgOiBUaW1lX25zLnQpIChldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBsaXN0KV0pXG4gIDs7XG5cbiAgbGV0IHRpbWluZ193aGVlbF9ub3cgdCA9IFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHNcblxuICBsZXQgaXNfaW5fZmlyZWRfZXZlbnRzID1cbiAgICBsZXQgcmVjIHNlYXJjaCBjdXJyZW50IH50YXJnZXRfZXZlbnQgPVxuICAgICAgbWF0Y2glb3B0aW9uYWwgKGN1cnJlbnQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgY3VycmVudCAtPlxuICAgICAgICBwaHlzX2VxdWFsIGN1cnJlbnQgdGFyZ2V0X2V2ZW50IHx8IHNlYXJjaCBjdXJyZW50Lm5leHRfZmlyZWQgfnRhcmdldF9ldmVudFxuICAgIGluXG4gICAgZnVuIHQgdGFyZ2V0X2V2ZW50IC0+IHNlYXJjaCB0LmZpcmVkX2V2ZW50cyB+dGFyZ2V0X2V2ZW50XG4gIDs7XG5cbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgKHR5cGUgcncpIH5qb2I6KGpvYl9pbnZhcmlhbnQgOiBKb2IudCAtPiB1bml0KSAodCA6IHJ3IHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+aWQ6aWdub3JlXG4gICAgICAgIH5hZHZhbmNlX2Vycm9yczppZ25vcmVcbiAgICAgICAgfmFtX2FkdmFuY2luZzppZ25vcmVcbiAgICAgICAgfmV2ZW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBldmVudHMgLT5cbiAgICAgICAgICAgICBUaW1pbmdfd2hlZWwuaW52YXJpYW50IGlnbm9yZSBldmVudHM7XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLml0ZXIgZXZlbnRzIH5mOihmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICAgIGxldCBqb2Jfb3JfZXZlbnQgPSBBbGFybS52YWx1ZSBldmVudHMgYWxhcm0gaW5cbiAgICAgICAgICAgICAgIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgICAgICAgICAgICAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICAgICAgICAgICAgICAgfCBKb2IsIGpvYiAtPiBqb2JfaW52YXJpYW50IGpvYlxuICAgICAgICAgICAgICAgfCBFdmVudCwgZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIGFsYXJtIGV2ZW50LmFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XSBldmVudC5hdCB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgYWxhcm0pO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBFdmVudC5TdGF0dXMudF0gZXZlbnQuc3RhdHVzIH5leHBlY3Q6U2NoZWR1bGVkO1xuICAgICAgICAgICAgICAgICBFdmVudC5pbnZhcmlhbnQgZXZlbnQpKSlcbiAgICAgICAgfmZpcmVkX2V2ZW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAoZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIC0+XG4gICAgICAgICAgICAgbGV0IHJlYyBjaGVja19ldmVudCAoY3VycmVudCA6IEV2ZW50LnQpID1cbiAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCAodGltaW5nX3doZWVsX25vdyB0KSk7XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbC5FdmVudC5PcHRpb24gY3VycmVudC5uZXh0X2ZpcmVkIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgfCBTb21lIG5leHQgLT5cbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBjdXJyZW50LmF0IG5leHQuYXQpO1xuICAgICAgICAgICAgICAgICBjaGVja19ldmVudCBuZXh0XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbC5FdmVudC5PcHRpb24gZmlyZWRfZXZlbnRzIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgZXZlbnQgLT4gY2hlY2tfZXZlbnQgZXZlbnQpKVxuICAgICAgICB+aGFuZGxlX2ZpcmVkOmlnbm9yZVxuICAgICAgICB+aXNfd2FsbF9jbG9jazppZ25vcmVcbiAgICAgICAgfm1vc3RfcmVjZW50bHlfZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbW9zdF9yZWNlbnRseV9maXJlZCAtPlxuICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgZXZlbnQgLT4gYXNzZXJ0IChpc19pbl9maXJlZF9ldmVudHMgdCBldmVudCkpKVxuICAgICAgICB+c2NoZWR1bGVyOmlnbm9yZSlcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPSBpbnZhcmlhbnRfd2l0aF9qb2JzIH5qb2I6KGZ1biBfIC0+ICgpKSB0XG5lbmRcblxub3BlbiBUMVxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlYWRfd3JpdGUgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5lbmRcblxubGV0IGlkIHQgPSB0LmlkXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbGVuZ3RoIHQgPSBUaW1pbmdfd2hlZWwubGVuZ3RoIHQuZXZlbnRzXG5sZXQgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0ID0gVGltaW5nX3doZWVsLm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdC5ldmVudHNcbmxldCByZWFkX29ubHkgKHQgOiBbPiByZWFkIF0gVDEudCkgPSAodCA6PiB0KVxuXG4oKiBbZmlyZSB0IGV2ZW50XSBzZXRzIFtldmVudC5zdGF0dXMgPSBGaXJlZF0gYW5kIGluc2VydHMgW2V2ZW50XSBpbnRvXG4gICBbdC5maXJlZF9ldmVudHNdIGluIHNvcnRlZCB0aW1lIG9yZGVyLiAqKVxubGV0IGZpcmUgdCAoZXZlbnQgOiBFdmVudC50KSA9XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgRmlyZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIEFsYXJtLm51bGwgKCk7XG4gIGxldCAoKSA9XG4gICAgKCogSWYgW2V2ZW50XSBiZWxvbmdzIGFmdGVyIFt0Lm1vc3RfcmVjZW50bHlfZmlyZWRdLCB0aGVuIHdlIHN0YXJ0IHRoZVxuICAgICAgIGluc2VydGlvbiB0aGVyZSByYXRoZXIgdGhhbiBhdCB0aGUgZnJvbnQgb2YgW3QuZmlyZWRfZXZlbnRzXS4gVGhpcyB3b3Jrc1xuICAgICAgIG5pY2VseSBpZiB3ZSdyZSBnZXR0aW5nIHRoZSBhbGFybXMgaW4gbm9uLWRlY3JlYXNpbmcgdGltZSBvcmRlciwgd2hpY2ggaXNcbiAgICAgICBjbG9zZSB0byB3aGF0IFtUaW1pbmdfd2hlZWxdIHByb3ZpZGVzIChhbHRob3VnaCBbVGltaW5nX3doZWVsXSBkb2Vzbid0XG4gICAgICAgZ3VhcmFudGVlIHRpbWUgb3JkZXJpbmcgZm9yIHRpbWVzIGluIHRoZSBzYW1lIGludGVydmFsKS4gKilcbiAgICBtYXRjaCVvcHRpb25hbCAodC5tb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IFNvbWUgbW9zdF9yZWNlbnRseV9maXJlZCB3aGVuIFRpbWVfbnMuKCA8PSApIG1vc3RfcmVjZW50bHlfZmlyZWQuYXQgZXZlbnQuYXQgLT5cbiAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgbW9zdF9yZWNlbnRseV9maXJlZDtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbW9zdF9yZWNlbnRseV9maXJlZC5uZXh0X2ZpcmVkXG4gICAgfCBfIC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSB0LmZpcmVkX2V2ZW50c1xuICBpblxuICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnQ7XG4gICgqIFdlIHVzZSBbVGltZV9ucy4oIDw9ICldIHJhdGhlciB0aGFuIFs8XSBzbyB0aGF0IFtldmVudF0gaXMgYWRkZWQgYWZ0ZXIgb3RoZXJcbiAgICAgZXZlbnRzIGF0IHRoZSBzYW1lIHRpbWUuIFNpbmNlIFtUaW1pbmdfd2hlZWxdIGZpcmVzIGFsYXJtcyBpbiBhIGJ1Y2tldCBpblxuICAgICB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLCB1c2luZyBbPD1dIGtlZXBzIGV2ZW50cyBhdCB0aGUgc2FtZVxuICAgICB0aW1lIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQuICopXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICBsZXQgY29udGludWUgPSBUaW1lX25zLiggPD0gKSBuZXh0LmF0IGV2ZW50LmF0IGluXG4gICAgICBpZiBjb250aW51ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gZXZlbnQubmV4dF9maXJlZDtcbiAgICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSBuZXh0Lm5leHRfZmlyZWQpO1xuICAgICAgY29udGludWVcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmV4dCAtPiBuZXh0LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbiAgaW5cbiAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICB8IE5vbmUgLT4gdC5maXJlZF9ldmVudHMgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbiAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG47O1xuXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcblxubGV0IG5leHRfYWxhcm1fcnVuc19hdCB0ID1cbiAgaWYgRXZlbnQuT3B0aW9uLmlzX3NvbWUgdC5maXJlZF9ldmVudHNcbiAgdGhlbiBTb21lICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gIGVsc2UgVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbjs7XG5cbmxldCBub3cgdCA9IGlmIHQuaXNfd2FsbF9jbG9jayB0aGVuIFRpbWVfbnMubm93ICgpIGVsc2UgdGltaW5nX3doZWVsX25vdyB0XG5sZXQgdGltaW5nX3doZWVsX25vdyA9IHRpbWluZ193aGVlbF9ub3dcblxubGV0IHNjaGVkdWxlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IFNjaGVkdWxlZDtcbiAgZXZlbnQuYWxhcm0gPC0gVGltaW5nX3doZWVsLmFkZCB0LmV2ZW50cyB+YXQ6ZXZlbnQuYXQgKGV2ZW50IHw+IEpvYl9vcl9ldmVudC5vZl9ldmVudClcbjs7XG5cbmxldCByZW1vdmVfZnJvbV9maXJlZCB0IChldmVudCA6IEV2ZW50LnQpIH5uZXdfc3RhdHVzID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAodC5tb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbW9zdF9yZWNlbnRseV9maXJlZCAtPlxuICAgICAgaWYgcGh5c19lcXVhbCBldmVudCBtb3N0X3JlY2VudGx5X2ZpcmVkXG4gICAgICB0aGVuXG4gICAgICAgIHQubW9zdF9yZWNlbnRseV9maXJlZCA8LSBFdmVudC5PcHRpb24uZmlyc3Rfc29tZSBldmVudC5uZXh0X2ZpcmVkIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQucHJldl9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgICB8IFNvbWUgcHJldiAtPiBwcmV2Lm5leHRfZmlyZWQgPC0gZXZlbnQubmV4dF9maXJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmV4dCAtPiBuZXh0LnByZXZfZmlyZWQgPC0gZXZlbnQucHJldl9maXJlZFxuICBpblxuICBldmVudC5uZXh0X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IG5ld19zdGF0dXNcbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBpbmNsdWRlIEV2ZW50XG5cbiAgbGV0IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICB7IGFsYXJtID0gQWxhcm0ubnVsbCAoKVxuICAgIDsgYXRcbiAgICA7IGNhbGxiYWNrXG4gICAgOyBleGVjdXRpb25fY29udGV4dCA9IHQuc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbiAgICA7IGludGVydmFsXG4gICAgOyBuZXh0X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHByZXZfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc3RhdHVzID0gVW5zY2hlZHVsZWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGFkZCB0IGV2ZW50ID1cbiAgICBpZiBUaW1lX25zLiggPD0gKSBldmVudC5hdCAodGltaW5nX3doZWVsX25vdyB0KVxuICAgIHRoZW4gZmlyZSB0IGV2ZW50XG4gICAgZWxzZSBzY2hlZHVsZSB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hbmRfYWRkIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgPVxuICAgIGxldCBldmVudCA9IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrIGluXG4gICAgYWRkIHQgZXZlbnQ7XG4gICAgZXZlbnRcbiAgOztcblxuICBsZXQgYXQgdCBhdCBjYWxsYmFjayA9IGNyZWF0ZV9hbmRfYWRkIHQgfmF0IH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuXG4gIGxldCBhZnRlciB0IHNwYW4gY2FsbGJhY2sgPVxuICAgIGNyZWF0ZV9hbmRfYWRkIHQgfmF0OihUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbikgfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuID1cbiAgICBsZXQgYWxhcm1fcHJlY2lzaW9uID0gYWxhcm1fcHJlY2lzaW9uIHQgaW5cbiAgICBpZiBUaW1lX25zLlNwYW4uKCA8ICkgc3BhbiBhbGFybV9wcmVjaXNpb25cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW50ZXJ2YWwgc3BhbiBzbWFsbGVyIHRoYW4gYWxhcm0gcHJlY2lzaW9uXCJcbiAgICAgICAgICAgIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXG4gICAgICAgICAgICAoYWxhcm1fcHJlY2lzaW9uIDogVGltZV9ucy5TcGFuLnQpXVxuICA7O1xuXG4gIGxldCBhdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgICByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbjtcbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDoobm93IHQpIH5pbnRlcnZhbDooU29tZSBzcGFuKSB+Y2FsbGJhY2tcbiAgOztcblxuICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgT2tcbiAgICAgIHwgUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IChldmVudCA6IHQpIDogQWJvcnRfcmVzdWx0LnQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgLT5cbiAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgU29tZSAoXyA6IFRpbWVfbnMuU3Bhbi50KSAtPlxuICAgICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgICAgIGV2ZW50LnN0YXR1cyA8LSBVbnNjaGVkdWxlZDtcbiAgICAgICAgIE9rKVxuICAgIHwgRmlyZWQgLT5cbiAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM6VW5zY2hlZHVsZWQ7XG4gICAgICBPa1xuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IFVuc2NoZWR1bGVkO1xuICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgIGV2ZW50LmFsYXJtIDwtIEFsYXJtLm51bGwgKCk7XG4gICAgICBPa1xuICAgIHwgVW5zY2hlZHVsZWQgLT4gUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICA7O1xuXG4gIGxldCBhYm9ydF9pZl9wb3NzaWJsZSB0IGV2ZW50ID0gaWdub3JlIChhYm9ydCB0IGV2ZW50IDogQWJvcnRfcmVzdWx0LnQpXG5cbiAgbGV0IGFib3J0X2V4biB0IGV2ZW50ID1cbiAgICBtYXRjaCBhYm9ydCB0IGV2ZW50IHdpdGhcbiAgICB8IE9rIC0+ICgpXG4gICAgfCByZWFzb24gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbU3luY2hyb25vdXNfdGltZV9zb3VyY2UuYWJvcnRfZXhuXSBjYW5ub3QgYWJvcnQgZXZlbnRcIlxuICAgICAgICAgICAgKHJlYXNvbiA6IEFib3J0X3Jlc3VsdC50KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHQgY2FsbGJhY2sgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQ6VGltZV9ucy5lcG9jaCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgaXNfc2NoZWR1bGVkIChldmVudCA6IHQpID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgRmlyZWQgLT4gdHJ1ZVxuICAgIHwgVW5zY2hlZHVsZWQgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCAoZXZlbnQgOiB0KSBhdCB+aW50ZXJ2YWwgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCAoSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgRmlyZWQpIGFzIHN0YXR1cyAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJXNleHAgXCJjYW5ub3Qgc2NoZWR1bGUgYW4gZXZlbnQgd2l0aCBzdGF0dXNcIiwgKHN0YXR1cyA6IEV2ZW50LlN0YXR1cy50KV1cbiAgICB8IFVuc2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGV2ZW50LmludGVydmFsIDwtIGludGVydmFsO1xuICAgICAgYWRkIHQgZXZlbnQ7XG4gICAgICBPayAoKVxuICA7O1xuXG4gIGxldCBzY2hlZHVsZV9hdCB0IGV2ZW50IGF0ID0gc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCBldmVudCBhdCB+aW50ZXJ2YWw6Tm9uZVxuICBsZXQgc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gc2NoZWR1bGVfYXQgdCBldmVudCAoVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pXG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVydmFscyB0IGV2ZW50IHNwYW4gPVxuICAgIHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuO1xuICAgIHNjaGVkdWxlX2F0X2ludGVybmFsIHQgZXZlbnQgKG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbilcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hdCB0IGV2ZW50IGF0IDogdW5pdCA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IC0+XG4gICAgICAoKiBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgZXZlbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSBbZmlyZWRdLiAqKVxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGlmIFRpbWVfbnMuKCA+ICkgYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgIHRoZW4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgdC5ldmVudHMgZXZlbnQuYWxhcm0gfmF0XG4gICAgICBlbHNlIChcbiAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgICAgZmlyZSB0IGV2ZW50KVxuICAgIHwgVW5zY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgIGFkZCB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IGV2ZW50IChUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbilcblxuZW5kXG5cbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hZnRlciB0IHNwYW4gY2FsbGJhY2sgOiBFdmVudC50KVxubGV0IHJ1bl9hdCB0IGF0IGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hdCB0IGF0IGNhbGxiYWNrIDogRXZlbnQudClcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgaWdub3JlIChFdmVudC5hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrIDogRXZlbnQudClcbjs7XG5cbnR5cGUgc2VuZF9leG4gPSBNb25pdG9yMC50IC0+ID9iYWNrdHJhY2U6WyBgR2V0IHwgYFRoaXMgb2YgQmFja3RyYWNlLnQgXSAtPiBleG4gLT4gdW5pdFxuXG5sZXQgcnVuX2ZpcmVkX2V2ZW50cyB0IH4oc2VuZF9leG4gOiBzZW5kX2V4biBvcHRpb24pID1cbiAgbGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGluXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQuZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgZXZlbnQgLT5cbiAgICAgIChtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgVW5zY2hlZHVsZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBGaXJlZCAtPlxuICAgICAgICAgbGV0IG5ld19zdGF0dXMgPVxuICAgICAgICAgICBtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiAoVW5zY2hlZHVsZWQgOiBFdmVudC5TdGF0dXMudClcbiAgICAgICAgICAgfCBTb21lIF8gLT4gKEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCA6IEV2ZW50LlN0YXR1cy50KVxuICAgICAgICAgaW5cbiAgICAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM7XG4gICAgICAgICAoKiBXZSBzZXQgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgW2V2ZW50LmNhbGxiYWNrXSBydW5zIGluIHRoZSBzYW1lIGNvbnRleHRcbiAgICAgICAgICAgIHRoYXQgd2FzIGluIHBsYWNlIHdoZW4gW2V2ZW50XSB3YXMgY3JlYXRlZC4gKilcbiAgICAgICAgIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0O1xuICAgICAgICAgKCogQW55IG1vZGlmaWNhdGlvbiBvZiBbc3RhdHVzXSBiZWxvdyBuZWVkcyB0byBmaXJzdCBjaGVjayB0aGF0IHRoZSBldmVudCBpc1xuICAgICAgICAgICAgc3RpbGwgW0hhcHBlbmluZ19wZXJpb2RpY19ldmVudF0uIElmIHRoZSBldmVudCBzdGF0dXMgaXMgbm90XG4gICAgICAgICAgICBbSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XSB0aGVuIHRoZSBldmVudCdzIGNhbGxiYWNrIG11c3QgaGF2ZSByZXNjaGVkdWxlZCB0aGVcbiAgICAgICAgICAgIGV2ZW50LiBJbiB0aGF0IGNhc2UsIGRvIG5vdCBzZXQgdGhlIHN0YXR1cyBvciBhdHRlbXB0IHRvIHJlc2NoZWR1bGUgYVxuICAgICAgICAgICAgcmVwZWF0aW5nIGV2ZW50LlxuXG4gICAgICAgICAgICBUaGlzIGNvZGUgY291bGQgYmUgbXVjaCBzaW1wbGVyIGlmIHdlIGltbWVkaWF0ZWx5IHJlc2NoZWR1bGVkIHRoZSBldmVudCBiZWZvcmVcbiAgICAgICAgICAgIHJ1bm5pbmcgdGhlIGNhbGxiYWNrIChubyBuZWVkIGZvciB0aGUgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHN0YXRlIHRoZW4pLlxuICAgICAgICAgICAgT25lIHJlYXNvbiB3ZSBkb24ndCBkbyB0aGF0IGlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBhdXRvbWF0aWNhbGx5IHJlc2NoZWR1bGVcbiAgICAgICAgICAgIGEgcGVyaW9kaWMgZXZlbnQgaWYgaXRzIGNhbGxiYWNrIHJhaXNlcy4gKilcbiAgICAgICAgIChtYXRjaCBldmVudC5jYWxsYmFjayAoKSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAobWF0Y2ggc2VuZF9leG4gd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiB0LmFkdmFuY2VfZXJyb3JzIDwtIEVycm9yLm9mX2V4biBleG4gOjogdC5hZHZhbmNlX2Vycm9yc1xuICAgICAgICAgICAgIHwgU29tZSBzZW5kX2V4biAtPlxuICAgICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgICAgICAgIHNlbmRfZXhuIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJhY2t0cmFjZSkpO1xuICAgICAgICAgICAgRXZlbnQuc2V0X3N0YXR1c19pZiB+aXM6SGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50IFVuc2NoZWR1bGVkXG4gICAgICAgICAgfCAoKSAtPlxuICAgICAgICAgICAgKG1hdGNoIGV2ZW50LmludGVydmFsIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gRXZlbnQuc2V0X3N0YXR1c19pZiB+aXM6SGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50IFVuc2NoZWR1bGVkXG4gICAgICAgICAgICAgfCBTb21lIGludGVydmFsIC0+XG4gICAgICAgICAgICAgICBpZiBFdmVudC5TdGF0dXMuZXF1YWwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50LnN0YXR1c1xuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICgqIFRoZSBldmVudCdzIGNhbGxiYWNrIGRpZCBub3QgcmVzY2hlZHVsZSB0aGUgZXZlbnQuIFNvIHJlc2NoZWR1bGUgdGhlXG4gICAgICAgICAgICAgICAgICAgIHJlcGVhdGluZyB0aW1lciBiYXNlZCBvbiB0aGUgbGFzdCBbYXRdIHRpbWUuICopXG4gICAgICAgICAgICAgICAgIGV2ZW50LmF0XG4gICAgICAgICAgICAgICAgIDwtIFRpbWVfbnMubmV4dF9tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICAgICAgfmJhc2U6ZXZlbnQuYXRcbiAgICAgICAgICAgICAgICAgICAgICB+YWZ0ZXI6KHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgICAgICAgICAgICAgICAgICB+aW50ZXJ2YWw7XG4gICAgICAgICAgICAgICAgIHNjaGVkdWxlIHQgZXZlbnQpKSk7XG4gICAgICAgICB0cnVlKVxuICBkb1xuICAgICgpXG4gIGRvbmU7XG4gIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbjs7XG5cbmxldCBhbnlfZmlyZWRfZXZlbnRzX3RvX3J1biB0ID0gRXZlbnQuT3B0aW9uLmlzX3NvbWUgKHQuZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG4gPVxuICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayB0LmV2ZW50cyB+dG9fIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmZpcmVfcGFzdF9hbGFybXMgdC5ldmVudHMgfmhhbmRsZV9maXJlZDp0LmhhbmRsZV9maXJlZDtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4biA9XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4blxuOztcblxubGV0IHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4biA9XG4gIGlmIHQuYW1fYWR2YW5jaW5nXG4gIHRoZW5cbiAgICByYWlzZV9zIFslc2V4cCBcImNhbm5vdCBjYWxsIFthZHZhbmNlX2J5X2FsYXJtc10gb3IgW2FkdmFuY2VfZGlyZWN0bHldIGZyb20gY2FsbGJhY2tcIl07XG4gIHQuYW1fYWR2YW5jaW5nIDwtIHRydWU7XG4gIChtYXRjaCB0LmFkdmFuY2VfZXJyb3JzIHdpdGhcbiAgIHwgW10gLT4gKClcbiAgIHwgXyAtPiB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdKTtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGZpbmlzaF9hZHZhbmNpbmcgdCA9XG4gIHQuYW1fYWR2YW5jaW5nIDwtIGZhbHNlO1xuICBtYXRjaCB0LmFkdmFuY2VfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiBPayAoKVxuICB8IGVycm9ycyAtPlxuICAgIHQuYWR2YW5jZV9lcnJvcnMgPC0gW107XG4gICAgRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJyb3JzKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zIHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhY29udGludWUgZG9cbiAgICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgdC5ldmVudHNcbiAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbWluX2FsYXJtX3RpbWUgPSBUaW1pbmdfd2hlZWwubWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyBpblxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbWluX2FsYXJtX3RpbWUgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXzptaW5fYWxhcm1fdGltZSB+c2VuZF9leG4pXG4gIGRvbmU7XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXNfYnkgdCBieSA9IGFkdmFuY2VfYnlfYWxhcm1zIHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuXG5sZXQgYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfdGltaW5nX3doZWVsX2ludGVydmFsIHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhY29udGludWUgZG9cbiAgICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgdC5ldmVudHNcbiAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dF9hbGFybV9maXJlc19hdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB0LmV2ZW50cyBpblxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbmV4dF9hbGFybV9maXJlc19hdCB0b19cbiAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogV2UgdXNlIHRoZSBhY3R1YWwgYWxhcm0gdGltZSwgcmF0aGVyIHRoYW4gW25leHRfYWxhcm1fZmlyZXNfYXRdLCBzbyBhcyBub3QgdG9cbiAgICAgICAgICAgZXhwb3NlIChvciBhY2N1bXVsYXRlIGVycm9ycyBhc3NvY2lhdGVkIHdpdGgpIHRoZSBwcmVjaXNpb24gb2ZcbiAgICAgICAgICAgW1RpbWluZ193aGVlbF0uICopXG4gICAgICAgIGFkdmFuY2VfaW50ZXJuYWxcbiAgICAgICAgICB0XG4gICAgICAgICAgfnRvXzooVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMpXG4gICAgICAgICAgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9ieSB0IGJ5ID0gYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gIGxldCByZXN1bHQgPSBmICgpIGluXG4gIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gIHJlc3VsdCwgZHVyYXRpb25cbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3doZWVsX2ludGVydmFsIHQgPVxuICBUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzXG47O1xuXG5sZXQgaGFzX2V2ZW50c190b19ydW4gdCA9IEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlcjBcbm1vZHVsZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxubW9kdWxlIEV2ZW50ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIEpvYl9vcl9ldmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLkpvYl9vcl9ldmVudFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5zY2hlZHVsZXJcblxubW9kdWxlIEl2YXIgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlcy5JdmFyXG5cbiAgbGV0IGNyZWF0ZV93aXRoX2NlbGwgY2VsbCA9IHsgY2VsbCB9XG4gIGxldCBjcmVhdGUgKCkgPSBjcmVhdGVfd2l0aF9jZWxsIEVtcHR5XG5cbiAgbGV0IGNyZWF0ZV9mdWxsICh0eXBlIGEpIChhIDogYSkgPVxuICAgICgqIFdlIGFsbG9jYXRlIGFuIGltbXV0YWJsZSBpdmFyIGFuZCB0aGVuIGNhc3QgaXQgdG8gYSBtdXRhYmxlIGl2YXIuICBUaGUgaW1tdXRhYmlsaXR5XG4gICAgICAgYWxsb3dzIE9DYW1sIHRvIHN0YXRpY2FsbHkgYWxsb2NhdGUgdGhlIGl2YXIgaWYgW2FdIGlzIGNvbnN0YW50LiAgVGhpcyBjYXN0IGlzIHNhZmVcbiAgICAgICBiZWNhdXNlIGEgZnVsbCBpdmFyIGlzIG5ldmVyIG11dGF0ZWQuICBXZSBhbHNvIGJlbGlldmUgdGhhdCB3ZSB3aWxsIG5vdCB0cmlnZ2VyXG4gICAgICAgZmxhbWJkYSB0byBzcHVyaW91c2x5IHJlcG9yIHdhcm5pbmcgNTksIG11dGF0aW9uIG9mIGtub3duIGltbXV0YWJsZSBkYXRhLiAgQWxsXG4gICAgICAgbXV0YXRpb25zIG9mIGFuIGl2YXIgY2VsbCwgaS5lLiBbZm9vLmNlbGwgPC0gLi4uXSwgYXJlIGRpcmVjdGx5IHByZWNlZGVkIGJ5IGFcbiAgICAgICBbbWF0Y2ggZm9vLmNlbGxdIHRoYXQgcHJldmVudHMgdGhlIFtGdWxsXSBjYXNlIGZyb20gcmVhY2hpbmcgdGhlIG1vZGlmaWNhdGlvbi4gIFNvXG4gICAgICAgZmxhbWJkYSBzaG91bGQgYWx3YXlzIGVsaW1pbmF0ZSB0aGUgW2Zvby5jZWxsIDwtIC4uLl0gb2YgYSBjb25zdGFudCBbRnVsbF0gaXZhcixcbiAgICAgICBhbmQgbm90IHdhcm4uICopXG4gICAgKE9iai5tYWdpYyA6IGEgSW1tdXRhYmxlLnQgLT4gYSB0KSB7IGNlbGwgPSBGdWxsIGEgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuQnZhclxuXG4gIGxldCBjcmVhdGUgKCkgPSBvZl9yZXByIHsgaGFzX2FueV93YWl0ZXJzID0gZmFsc2U7IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSB9XG5lbmRcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlciA9IHN0cnVjdFxuICBtb2R1bGUgRXhlY19yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFR5cGVzLlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50ID1cbiAgICB7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgZXhlYyA6IHVuaXQgLT4gRXhlY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyIH5leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KSB+ZXhlYzppZ25vcmUpXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gU2NoZWR1bGVyMC50ID1cbiAgeyAoKiBbY2hlY2tfYWNjZXNzXSBvcHRpb25hbGx5IGhvbGRzIGEgZnVuY3Rpb24gdG8gcnVuIHRvIGNoZWNrIHdoZXRoZXIgYWNjZXNzIHRvIFt0XSBpc1xuICAgICAgIGN1cnJlbnRseSBhbGxvd2VkLiAgSXQgaXMgdXNlZCB0byBkZXRlY3QgaW52YWxpZCBhY2Nlc3MgdG8gdGhlIHNjaGVkdWxlciBmcm9tIGFcbiAgICAgICB0aHJlYWQuICopXG4gICAgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgOyBtdXRhYmxlIG1haW5fZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAoKiBUaGUgc2NoZWR1bGVyIGNhbGxzIFtnb3RfdW5jYXVnaHRfZXhuXSB3aGVuIGFuIGV4Y2VwdGlvbiBidWJibGVzIHRvIHRoZSB0b3Agb2YgdGhlXG4gICAgIG1vbml0b3IgdHJlZSB3aXRob3V0IGJlaW5nIGhhbmRsZWQuICBUaGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdG8gbmV2ZXIgcnVuIGFub3RoZXJcbiAgICAgam9iIGFmdGVyIHRoaXMgYnkgY2FsbGluZyBbY2xlYXJdIGFuZCBiZWNhdXNlIFtlbnF1ZXVlX2pvYl0gd2lsbCBuZXZlciBhZGQgYW5vdGhlclxuICAgICBqb2IuICopXG4gIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgOyBtdXRhYmxlIGN5Y2xlX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgYXJyYXlcbiAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOlxuICAgICAgKFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnQsIChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgYXJyYXlcbiAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIDpcbiAgICAgIChUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50LCAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX251bV9qb2JzIDogaW50XG4gIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIHRpbWVfc291cmNlIDogcmVhZF93cml0ZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50XG4gICgqIFtleHRlcm5hbF9qb2JzXSBpcyBhIHF1ZXVlIG9mIGFjdGlvbnMgc2VudCBmcm9tIG91dHNpZGUgb2YgYXN5bmMuICBUaGlzIGlzIGZvciB0aGVcbiAgICAgY2FzZSB3aGVyZSB3ZSB3YW50IHRvIHNjaGVkdWxlIGEgam9iIG9yIGZpbGwgYW4gaXZhciBmcm9tIGEgY29udGV4dCB3aGVyZSBpdCBpcyBub3RcbiAgICAgc2FmZSB0byBydW4gYXN5bmMgY29kZSwgYmVjYXVzZSB0aGUgYXN5bmMgbG9jayBpc24ndCBoZWxkLiAgRm9yIGluc3RhbmNlOiAtIGluIGFuXG4gICAgIE9DYW1sIGZpbmFsaXplciwgYXMgdGhleSBjYW4gcnVuIGF0IGFueSB0aW1lIGluIGFueSB0aHJlYWQuXG5cbiAgICAgVGhlIHdheSB0byBkbyBpdCBpcyB0byBxdWV1ZSBhIHRodW5rIGluIFtleHRlcm5hbF9qb2JzXSBhbmQgY2FsbFxuICAgICBbdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3Igbm90aWZ5aW5nIHRoZSBzY2hlZHVsZXJcbiAgICAgdGhhdCBuZXcgYWN0aW9ucyBhcmUgYXZhaWxhYmxlLlxuXG4gICAgIFdoZW4gdXNpbmcgQXN5bmMgb24gdW5peCwgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSBpcyBzZXQgaW4gW0FzeW5jX3VuaXhdXG4gICAgIHRvIGNhbGwgW0ludGVycnVwdG9yLnRocmVhZF9zYWZlX2ludGVycnVwdF0sIHdoaWNoIHdpbGwgd2FrZSB1cCB0aGVcbiAgICAgW0FzeW5jX3VuaXhdIHNjaGVkdWxlciBhbmQgcnVuIGEgY3ljbGUuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaG9vayBtaWdodCBiZSB1c2VkIGluIG90aGVyIGNvbnRleHQgKGpzX29mX29jYW1sLCBtaXJhZ2UpLlxuXG4gICAgIFdoZW4gcnVubmluZyBhIGN5Y2xlLCB3ZSBwdWxsIGV4dGVybmFsIGFjdGlvbnMgYXQgZXZlcnkgam9iIGFuZCBwZXJmb3JtIHRoZW1cbiAgICAgaW1tZWRpYXRlbHkuICopXG4gIDsgZXh0ZXJuYWxfam9icyA6IEV4dGVybmFsX2pvYi50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDogdW5pdCAtPiB1bml0XG4gICgqIFtqb2JfcXVldWVkX2hvb2tdIGFuZCBbZXZlbnRfYWRkZWRfaG9va10gYWltIHRvIGJlIHVzZWQgYnkganNfb2Zfb2NhbWwuICopXG4gICgqIFdlIHVzZSBbXyBvcHRpb25dIGhlcmUgYmVjYXVzZSB0aG9zZSBob29rcyB3aWxsIG5vdCBiZSBzZXQgaW4gdGhlIGNvbW1vbiBjYXNlXG4gICAgIGFuZCB3ZSB3YW50IHRvIGF2b2lkIGV4dHJhIGZ1bmN0aW9uIGNhbGxzLiAqKVxuICA7IG11dGFibGUgam9iX3F1ZXVlZF9ob29rIDogKFByaW9yaXR5LnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBldmVudF9hZGRlZF9ob29rIDogKFRpbWVfbnMudCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIHlpZWxkIDogKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSlcbiAgOyBtdXRhYmxlXG4gICAgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gOlxuICAgICAgKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSAoKiBjb25maWd1cmF0aW9uKikpXG4gIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gIDsgbXV0YWJsZSByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuX3Vud3JhcHBlZCA9IHVuY2F1Z2h0X2V4blxuXG5sZXQgdW5jYXVnaHRfZXhuIHQgPVxuICBtYXRjaCB0LnVuY2F1Z2h0X2V4biB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoZXhuLCBzZXhwKSAtPlxuICAgIFNvbWUgKEVycm9yLmNyZWF0ZSBcInVuaGFuZGxlZCBleGNlcHRpb25cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XSlcbjs7XG5cbmxldCBudW1fcGVuZGluZ19qb2JzIHQgPVxuICBKb2JfcXVldWUubGVuZ3RoIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgKyBKb2JfcXVldWUubGVuZ3RoIHQubG93X3ByaW9yaXR5X2pvYnNcbjs7XG5cbmxldCBudW1fam9ic19ydW4gdCA9XG4gIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICArIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5sb3dfcHJpb3JpdHlfam9ic1xuOztcblxubGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgdCA9IHQubGFzdF9jeWNsZV9udW1fam9ic1xuXG5sZXQgdW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsIH5zdWJsaXN0OnNtYWxsIGxhcmdlID1cbiAgbGV0IGxhcmdlID0gQXJyYXkudG9fbGlzdCBsYXJnZSBpblxuICBsZXQgcmVtb3ZlIGEgeCA9XG4gICAgbWF0Y2ggTGlzdC5zcGxpdF93aGlsZSBhIH5mOihmdW4geSAtPiBub3QgKGVxdWFsIHkgeCkpIHdpdGhcbiAgICB8IF8sIFtdIC0+IE5vbmVcbiAgICB8IGwsIF8gOjogciAtPiBTb21lIChsIEAgcilcbiAgaW5cbiAgT3B0aW9uLmlzX3NvbWVcbiAgICAoTGlzdC5mb2xkIHNtYWxsIH5pbml0OihTb21lIGxhcmdlKSB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgT3B0aW9uLmJpbmQgYWNjIH5mOihmdW4gbCAtPiByZW1vdmUgbCB4KSkpXG47O1xuXG5sZXQgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgdGFibGUgYXJyYXkgPVxuICAoKiBZb3UgY2FuIGluIGZhY3QgaGF2ZSBob29rcyBpbiB0aGUgbGlzdCBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBlbnRyeSBpblxuICAgICB0aGUgdGFibGUuIFN1Y2ggaG9va3MgY2FuIG5ldmVyIGJlIHJlbW92ZWQuICopXG4gIGFzc2VydCAodW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsOnBoeXNfZXF1YWwgfnN1Ymxpc3Q6KEhhc2h0YmwuZGF0YSB0YWJsZSkgYXJyYXkpXG47O1xuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNoZWNrX2FjY2VzczppZ25vcmVcbiAgICAgIH5qb2JfcG9vbDooY2hlY2sgSm9iX3Bvb2wuaW52YXJpYW50KVxuICAgICAgfm5vcm1hbF9wcmlvcml0eV9qb2JzOihjaGVjayBKb2JfcXVldWUuaW52YXJpYW50KVxuICAgICAgfmxvd19wcmlvcml0eV9qb2JzOihjaGVjayBKb2JfcXVldWUuaW52YXJpYW50KVxuICAgICAgfnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIHEgLT4gRGVxdWUuaXRlciBxIH5mOlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5pbnZhcmlhbnQpKVxuICAgICAgfm1haW5fZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudClcbiAgICAgIH5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+dW5jYXVnaHRfZXhuOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bmNhdWdodF9leG4gLT5cbiAgICAgICAgICAgaWYgaXNfc29tZSB1bmNhdWdodF9leG4gdGhlbiBhc3NlcnQgKG51bV9wZW5kaW5nX2pvYnMgdCA9IDApKSlcbiAgICAgIH5jeWNsZV9jb3VudDooY2hlY2sgKGZ1biBjeWNsZV9jb3VudCAtPiBhc3NlcnQgKGN5Y2xlX2NvdW50ID49IDApKSlcbiAgICAgIH5jeWNsZV9zdGFydDppZ25vcmVcbiAgICAgIH5pbl9jeWNsZTppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0KSlcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfZW5kOmlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGU6XG4gICAgICAgIChjaGVjayAoZnVuIHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQpKVxuICAgICAgfmxhc3RfY3ljbGVfdGltZTppZ25vcmVcbiAgICAgIH50b3RhbF9jeWNsZV90aW1lOmlnbm9yZVxuICAgICAgfmxhc3RfY3ljbGVfbnVtX2pvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIGxhc3RfY3ljbGVfbnVtX2pvYnMgLT4gYXNzZXJ0IChsYXN0X2N5Y2xlX251bV9qb2JzID49IDApKSlcbiAgICAgIH50aW1lX3NvdXJjZTpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChTeW5jaHJvbm91c190aW1lX3NvdXJjZS5SZWFkX3dyaXRlLmludmFyaWFudF93aXRoX2pvYnMgfmpvYjooZnVuIGpvYiAtPlxuICAgICAgICAgICAgICBhc3NlcnQgKFBvb2wucG9pbnRlcl9pc192YWxpZCB0LmpvYl9wb29sIGpvYikpKSlcbiAgICAgIH5leHRlcm5hbF9qb2JzOmlnbm9yZVxuICAgICAgfnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rOmlnbm9yZVxuICAgICAgfmpvYl9xdWV1ZWRfaG9vazppZ25vcmVcbiAgICAgIH5ldmVudF9hZGRlZF9ob29rOmlnbm9yZVxuICAgICAgfnlpZWxkOmlnbm9yZVxuICAgICAgfnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluOmlnbm9yZVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6aWdub3JlXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6aWdub3JlXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pICh0IDogdCldXG47O1xuXG5sZXQgZnJlZV9qb2IgdCBqb2IgPSBQb29sLmZyZWUgdC5qb2JfcG9vbCBqb2JcblxubGV0IGVucXVldWUgdCAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSBmIGEgPVxuICAoKiBJZiB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLCB3ZSBkb24ndCBhZGQgdGhlIGpvYiwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBhbnkgam9ic1xuICAgICB0byBydW4gb25jZSB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLiAqKVxuICBpZiBpc19ub25lIHQudW5jYXVnaHRfZXhuXG4gIHRoZW4gKFxuICAgIGxldCBwcmlvcml0eSA9IGV4ZWN1dGlvbl9jb250ZXh0LnByaW9yaXR5IGluXG4gICAgbGV0IGpvYl9xdWV1ZSA9XG4gICAgICBtYXRjaCBwcmlvcml0eSB3aXRoXG4gICAgICB8IE5vcm1hbCAtPiB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICAgICB8IExvdyAtPiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgaW5cbiAgICBKb2JfcXVldWUuZW5xdWV1ZSBqb2JfcXVldWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgIG1hdGNoIHQuam9iX3F1ZXVlZF9ob29rIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPiBmIHByaW9yaXR5KVxuOztcblxubGV0IGVucXVldWVfam9iIHQgam9iIH5mcmVlX2pvYiA9XG4gIGxldCBqb2JfcG9vbCA9IHQuam9iX3Bvb2wgaW5cbiAgZW5xdWV1ZVxuICAgIHRcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MClcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MSlcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50Mik7XG4gIGlmIGZyZWVfam9iIHRoZW4gUG9vbC5mcmVlIHQuam9iX3Bvb2wgam9iXG47O1xuXG5sZXQgaGFuZGxlX2ZpcmVkICh0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCkgam9iX29yX2V2ZW50ID1cbiAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICB8IEpvYiwgam9iIC0+IGVucXVldWVfam9iIHRpbWVfc291cmNlLnNjaGVkdWxlciBqb2IgfmZyZWVfam9iOnRydWVcbiAgfCBFdmVudCwgZXZlbnQgLT4gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuZmlyZSB0aW1lX3NvdXJjZSBldmVudFxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICBsZXQgcmVjIHQgPVxuICAgIHsgY2hlY2tfYWNjZXNzID0gTm9uZVxuICAgIDsgam9iX3Bvb2wgPSBKb2JfcG9vbC5jcmVhdGUgKClcbiAgICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzID0gSm9iX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgPSBKb2JfcXVldWUuY3JlYXRlICgpXG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzID0gRGVxdWUuY3JlYXRlICgpXG4gICAgOyBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxuICAgIDsgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbiAgICA7IHVuY2F1Z2h0X2V4biA9IE5vbmVcbiAgICA7IGN5Y2xlX3N0YXJ0ID0gbm93XG4gICAgOyBjeWNsZV9jb3VudCA9IDBcbiAgICA7IGluX2N5Y2xlID0gZmFsc2VcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA9IFt8fF1cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kID0gW3x8XVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBsYXN0X2N5Y2xlX3RpbWUgPSBzZWMgMC5cbiAgICA7IGxhc3RfY3ljbGVfbnVtX2pvYnMgPSAwXG4gICAgOyB0b3RhbF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgZXh0ZXJuYWxfam9icyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgPSBpZ25vcmVcbiAgICA7IGpvYl9xdWV1ZWRfaG9vayA9IE5vbmVcbiAgICA7IGV2ZW50X2FkZGVkX2hvb2sgPSBOb25lXG4gICAgOyB5aWVsZCA9IEJ2YXIuY3JlYXRlICgpXG4gICAgOyB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA9IEJ2YXIuY3JlYXRlICgpICgqIGNvbmZpZ3VyYXRpb24gKilcbiAgICA7IGNoZWNrX2ludmFyaWFudHMgPSBBc3luY19rZXJuZWxfY29uZmlnLmNoZWNrX2ludmFyaWFudHNcbiAgICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgICAgQXN5bmNfa2VybmVsX2NvbmZpZy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBBc3luY19rZXJuZWxfY29uZmlnLnJlY29yZF9iYWNrdHJhY2VzXG4gICAgfVxuICBhbmQgZXZlbnRzID1cbiAgICBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6QXN5bmNfa2VybmVsX2NvbmZpZy50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydDpub3dcbiAgYW5kIHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50ID1cbiAgICB7IGlkID0gVHlwZXMuVGltZV9zb3VyY2VfaWQuY3JlYXRlICgpXG4gICAgOyBhZHZhbmNlX2Vycm9ycyA9IFtdXG4gICAgOyBhbV9hZHZhbmNpbmcgPSBmYWxzZVxuICAgIDsgZXZlbnRzXG4gICAgOyBoYW5kbGVfZmlyZWQgPSAoZnVuIGFsYXJtIC0+IGhhbmRsZV9maXJlZCB0aW1lX3NvdXJjZSAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSlcbiAgICA7IGZpcmVkX2V2ZW50cyA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBpc193YWxsX2Nsb2NrID0gdHJ1ZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0XG47O1xuXG5sZXQgaXNfZGVhZCB0ID0gaXNfc29tZSB0LnVuY2F1Z2h0X2V4blxubGV0IHNldF9jaGVja19hY2Nlc3MgdCBmID0gdC5jaGVja19hY2Nlc3MgPC0gZlxuXG5sZXQgYmFja3RyYWNlX29mX2ZpcnN0X2pvYiB0ID1cbiAgT3B0aW9uLmZpcnN0X3NvbWVcbiAgICAoSm9iX3F1ZXVlLmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMpXG4gICAgKEpvYl9xdWV1ZS5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB0Lmxvd19wcmlvcml0eV9qb2JzKVxuOztcblxubGV0IHRfcmVmID1cbiAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIGNyZWF0ZSB3aXRoXG4gIHwgT2sgdCAtPiByZWYgdFxuICB8IEVycm9yIGV4biAtPlxuICAgIERlYnVnLmxvZyBcIkFzeW5jIGNhbm5vdCBjcmVhdGUgaXRzIHJhdyBzY2hlZHVsZXJcIiBleG4gWyVzZXhwX29mOiBleG5dO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGNoZWNrX2FjY2VzcyB0ID1cbiAgbWF0Y2ggdC5jaGVja19hY2Nlc3Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiAoKVxuOztcblxubGV0IHQgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICBjaGVja19hY2Nlc3MgdDtcbiAgdFxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCA9XG4gIGlmIHQucmVjb3JkX2JhY2t0cmFjZXNcbiAgdGhlbiBFeGVjdXRpb25fY29udGV4dC5yZWNvcmRfYmFja3RyYWNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuICBlbHNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgeCA9XG4gIGxldCBvbGRfY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dDtcbiAgcHJvdGVjdHggfmYgeCB+ZmluYWxseTooZnVuIF8gLT4gc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgb2xkX2NvbnRleHQpXG47O1xuXG5sZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCB0IHRtcF9jb250ZXh0IH5mID0gd2l0aF9leGVjdXRpb25fY29udGV4dDEgdCB0bXBfY29udGV4dCB+ZiAoKVxuXG5sZXQgY3JlYXRlX2pvYiAodHlwZSBhKSB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGlmIFBvb2wuaXNfZnVsbCB0LmpvYl9wb29sIHRoZW4gdC5qb2JfcG9vbCA8LSBQb29sLmdyb3cgdC5qb2JfcG9vbDtcbiAgUG9vbC5uZXczXG4gICAgdC5qb2JfcG9vbFxuICAgIGV4ZWN1dGlvbl9jb250ZXh0XG4gICAgKE9iai5tYWdpYyAoZiA6IGEgLT4gdW5pdCkgOiBPYmoudCAtPiB1bml0KVxuICAgIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGdvdF91bmNhdWdodF9leG4gdCBleG4gc2V4cCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiZ290X3VuY2F1Z2h0X2V4blwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdO1xuICBMaXN0Lml0ZXIgWyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzOyB0Lmxvd19wcmlvcml0eV9qb2JzIF0gfmY6Sm9iX3F1ZXVlLmNsZWFyO1xuICB0LnVuY2F1Z2h0X2V4biA8LSBTb21lIChleG4sIHNleHApXG47O1xuXG4oKiBbc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gZW5hYmxlcyBzdWJzZXF1ZW50IGNhbGxzIG9mIFtydW5fam9ic11cbiAgIHRvIHJ1biB1cCB0byBbbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gam9icyBvZiBlYWNoIHByaW9yaXR5IGxldmVsLiAqKVxubGV0IHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkgPVxuICBsZXQgbiA9IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IGluXG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5ub3JtYWxfcHJpb3JpdHlfam9icyBuO1xuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubG93X3ByaW9yaXR5X2pvYnMgblxuOztcblxuKCogW3J1bl9qb2JzIHRdIHJlbW92ZXMgam9icyBmcm9tIFt0XSBvbmUgYXQgYSB0aW1lIGFuZCBydW5zIHRoZW0sIHN0b3BwaW5nIGFzIHNvb25cbiAgIGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gaXMgcmFpc2VkLCBvciB3aGVuIG5vIG1vcmUgam9icyBjYW4gYmUgcnVuIGF0IGFueSBwcmlvcml0eSxcbiAgIGFzIHBlciBbfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldLiAqKVxubGV0IHJlYyBydW5fam9icyB0ID1cbiAgbWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgfCBPayAoKSAtPlxuICAgIChtYXRjaCBKb2JfcXVldWUucnVuX2pvYnMgdC5sb3dfcHJpb3JpdHlfam9icyB0IHdpdGhcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICB8IE9rICgpIC0+XG4gICAgICAgaWYgSm9iX3F1ZXVlLmNhbl9ydW5fYV9qb2IgdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgIHx8IEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICAgICB0aGVuIHJ1bl9qb2JzIHRcbiAgICAgICBlbHNlIE9rICgpKVxuOztcblxubGV0IHN0YWJpbGl6ZSB0ID1cbiAgc3RhcnRfY3ljbGVcbiAgICB0XG4gICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6XG4gICAgICAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBJbnQubWF4X3ZhbHVlKTtcbiAgbWF0Y2ggcnVuX2pvYnMgdCB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoZXhuLCBfYmFja3RyYWNlKSAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBjcmVhdGVfdGltZV9zb3VyY2VcbiAgICAgID8odGltaW5nX3doZWVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZylcbiAgICAgIH5ub3dcbiAgICAgICgpXG4gID1cbiAgbGV0IHQgPSB0ICgpIGluXG4gIGxldCBldmVudHMgPSBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93IGluXG4gIGxldCByZWMgdGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQgPVxuICAgIHsgaWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZC5jcmVhdGUgKClcbiAgICA7IGFkdmFuY2VfZXJyb3JzID0gW11cbiAgICA7IGFtX2FkdmFuY2luZyA9IGZhbHNlXG4gICAgOyBldmVudHNcbiAgICA7IGhhbmRsZV9maXJlZCA9IChmdW4gYWxhcm0gLT4gaGFuZGxlX2ZpcmVkIHRpbWVfc291cmNlIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKVxuICAgIDsgZmlyZWRfZXZlbnRzID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IGlzX3dhbGxfY2xvY2sgPSBmYWxzZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0aW1lX3NvdXJjZVxuOztcblxubGV0IHdhbGxfY2xvY2sgKCkgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5yZWFkX29ubHkgKHQgKCkpLnRpbWVfc291cmNlXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgQ2VsbCA9IFR5cGVzLkNlbGxcblxudHlwZSBhbnkgPVxuICBbIGBFbXB0eVxuICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICB8IGBGdWxsXG4gIHwgYEluZGlyXG4gIF1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSXZhci50ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIGFueSkgY2VsbCB9XG5cbigqIFRoZSBbJ2JdIGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBjb25zdHJ1Y3Rvci4gIFRoaXMgYWxsb3dzIHVzIHRvIHdyaXRlIGZ1bmN0aW9ucyB0aGF0XG4gICB0YWtlIG9ubHkgb25lIG9mIHRoZSBjb25zdHJ1Y3RvcnMsIHdpdGggbm8gcnVudGltZSB0ZXN0LlxuXG4gICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGRpcmVjdGVkIGdyYXBoIHdpdGggaXZhcnMgYXMgbm9kZXMgYW5kIFtJbmRpcl1zIGFzXG4gICBlZGdlcyBpcyBhY3ljbGljLiAgVGhlIG9ubHkgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIGFuIFtJbmRpcl0gYXJlIFtzcXVhc2hdIGFuZFxuICAgW2Nvbm5lY3RdLCBhbmQgZm9yIHRob3NlLCB0aGUgdGFyZ2V0IG9mIHRoZSBbSW5kaXJdIGlzIGFsd2F5cyBhIG5vbi1bSW5kaXJdLiAgVGh1cywgdGhlXG4gICBuZXdseSBhZGRlZCBlZGdlcyBhcmUgbmV2ZXIgcGFydCBvZiBhIGN5Y2xlLiAqKVxuYW5kICgnYSwgJ2IpIGNlbGwgPSAoJ2EsICdiKSBUeXBlcy5DZWxsLnQgPVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIDpcbiAgICAgIHsgKCogW3J1bl0gaXMgbXV0YWJsZSBzbyB3ZSBjYW4gc2V0IGl0IHRvIFtpZ25vcmVdIHdoZW4gdGhlIGhhbmRsZXIgaXMgcmVtb3ZlZC5cbiAgICAgICAgICAgVGhpcyBpcyB1c2VkIHdoZW4gd2UgaW5zdGFsbCBhIGhhbmRsZXIgb24gYSBmdWxsIGl2YXIgc2luY2UgaXQgaXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgYWRkZWQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgICAgICAgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbcHJldl0gYW5kIFtuZXh0XSBjaXJjdWxhcmx5IGRvdWJseSBsaW5rIGFsbCBoYW5kbGVycyBvZiB0aGUgc2FtZSBpdmFyLiAqKVxuICAgICAgICBtdXRhYmxlIHByZXYgOiAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICB9XG4gICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX2hhbmRsZXIgXSkgY2VsbFxuICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgY2VsbFxuICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIGNlbGxcbiAgfCBJbmRpciA6ICdhIHQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgY2VsbFxuXG5tb2R1bGUgSGFuZGxlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcblxuICBsZXQgcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucnVuXG4gIGxldCBleGVjdXRpb25fY29udGV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LmV4ZWN1dGlvbl9jb250ZXh0XG4gIGxldCBwcmV2IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucHJldlxuICBsZXQgbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0Lm5leHRcbiAgbGV0IHNldF9ydW4gKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnJ1biA8LSB4XG4gIGxldCBzZXRfcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQucHJldiA8LSB4XG4gIGxldCBzZXRfbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQubmV4dCA8LSB4XG5cbiAgbGV0IGNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICgqIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZjpcblxuICAgICAgIHtbXG4gICAgICAgICBsZXQgcmVjIHQgPVxuICAgICAgICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICAgICAgIHsgcnVuXG4gICAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dFxuICAgICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0XG4gICAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQgfVxuICAgICAgICAgaW5cbiAgICAgICAgIGgxIF19XG5cbiAgICAgICBIb3dldmVyIHRoZSBjb21waWxhdGlvbiBvZiByZWN1cnNpdmUgdmFsdWUgaW4gT0NhbWwgaXMgbm90IG9wdGltYWw6IHRoZSB2YWx1ZSBpc1xuICAgICAgIGFsbG9jYXRlZCB0d2ljZSBhbmQgY29waWVkIG9uY2UgKHdpdGggYSBsb29wIGNhbGxpbmcgY2FtbF9tb2RpZnkpLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWNlc3NhcnkgZm9yIHNpbXBsZSByZWN1cnNpdmUgZGVmaW5pdGlvbnMgbGlrZSB0aGlzIG9uZS5cblxuICAgICAgIEluc3RlYWQgd2UgYWxsb2NhdGUgdGhlIHZhbHVlIHdpdGggZHVtbXkgZmllbGRzIGFuZCB1cGRhdGUgdGhlbSBhZnRlci4gKilcbiAgICBsZXQgdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBPYmoubWFnaWMgTm9uZTsgbmV4dCA9IE9iai5tYWdpYyBOb25lIH1cbiAgICBpblxuICAgIHNldF9wcmV2IHQgdDtcbiAgICBzZXRfbmV4dCB0IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0MSA9XG4gICAgICAgICAgIHsgcnVuICAgICAgICAgICAgICAgPSBydW4xXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDFcbiAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHQyXG4gICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0MiB9XG4gICAgICAgICBhbmQgdDIgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMlxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MVxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDEgfVxuICAgICAgICAgaW5cbiAgICAgICAgIHQxIF19ICopXG4gICAgbGV0IHQxID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuID0gcnVuMVxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgIDsgcHJldiA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIDsgbmV4dCA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIH1cbiAgICBpblxuICAgIGxldCB0MiA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjI7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyOyBwcmV2ID0gdDE7IG5leHQgPSB0MSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0MSB0MjtcbiAgICBzZXRfbmV4dCB0MSB0MjtcbiAgICB0MVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IChleGVjdXRpb25fY29udGV4dCB0KTtcbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgbGV0IHQxID0gIXIgaW5cbiAgICAgIGFzc2VydCAocGh5c19lcXVhbCAocHJldiAobmV4dCB0MSkpIHQxKTtcbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdDEpO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpc19zaW5nbGV0b24gdCA9IHBoeXNfZXF1YWwgdCAobmV4dCB0KVxuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IG4gPSByZWYgMSBpblxuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBpbmNyIG47XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lO1xuICAgICFuXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgdCBzY2hlZHVsZXIgdiA9IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciAoZXhlY3V0aW9uX2NvbnRleHQgdCkgKHJ1biB0KSB2XG5cbiAgbGV0IHNjaGVkdWxlX2pvYnMgdCB2ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBlbnF1ZXVlIHQgc2NoZWR1bGVyIHY7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGVucXVldWUgIXIgc2NoZWR1bGVyIHY7XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID1cbiAgICBzZXRfcHJldiAobmV4dCB0KSAocHJldiB0KTtcbiAgICBzZXRfbmV4dCAocHJldiB0KSAobmV4dCB0KTtcbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0XG4gIDs7XG5cbiAgbGV0IGFkZCB0IHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBwcmV2IHQ7IG5leHQgPSB0IH1cbiAgICBpblxuICAgIHNldF9uZXh0IChwcmV2IHQpIHJlc3VsdDtcbiAgICBzZXRfcHJldiB0IHJlc3VsdDtcbiAgICByZXN1bHRcbiAgOztcblxuICAoKiBbc3BsaWNlIHQxIHQyXSBjcmVhdGVzOlxuXG4gICAgIHt2XG4gICAgICAgLS0+IHQxIDwtLT4gLi4uIDwtLT4gbGFzdDEgPC0tPiB0MiA8LS0+IC4uLiA8LS0+IGxhc3QyIDwtLVxuICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIHZ9ICopXG4gIGxldCBzcGxpY2UgdDEgdDIgPVxuICAgIGxldCBsYXN0MSA9IHByZXYgdDEgaW5cbiAgICBsZXQgbGFzdDIgPSBwcmV2IHQyIGluXG4gICAgc2V0X25leHQgbGFzdDEgdDI7XG4gICAgc2V0X25leHQgbGFzdDIgdDE7XG4gICAgc2V0X3ByZXYgdDEgbGFzdDI7XG4gICAgc2V0X3ByZXYgdDIgbGFzdDFcbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICBsZXQgZmlyc3QgPSBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgICBsZXQgcmVjIGxvb3AgcHJldiBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2V0X3ByZXYgZmlyc3QgcHJldlxuICAgICAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICAgICAgbGV0IHQgPVxuICAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2OyBuZXh0ID0gZmlyc3QgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgc2V0X25leHQgcHJldiB0O1xuICAgICAgICAgIGxvb3AgdCBsXG4gICAgICBpblxuICAgICAgbG9vcCBmaXJzdCBsO1xuICAgICAgU29tZSBmaXJzdFxuICA7O1xuXG4gIGxldCB0b19saXN0IGZpcnN0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IChydW4gdCwgZXhlY3V0aW9uX2NvbnRleHQgdCkgOjogYWNjIGluXG4gICAgICBpZiBwaHlzX2VxdWFsIHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIChwcmV2IHQpIGFjY1xuICAgIGluXG4gICAgbG9vcCAocHJldiBmaXJzdCkgW11cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IF8gKHQgOiBfIHQpID1cbiAgICBsZXQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuID0gXzsgZXhlY3V0aW9uX2NvbnRleHQ7IG5leHQgPSBfOyBwcmV2ID0gXyB9KSA9XG4gICAgICB0XG4gICAgaW5cbiAgICBbJW1lc3NhZ2UgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCldXG4gIDs7XG5lbmRcblxudHlwZSAnYSBpdmFyID0gJ2EgdFxuXG4oKiBDb21waWxlZCBhcyB0aGUgaWRlbnRpdHkuICopXG5sZXQgY2VsbF9vZl9oYW5kbGVyIDogXyBIYW5kbGVyLnQgLT4gXyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyB4IC0+ICh4IDo+IChfLCBhbnkpIGNlbGwpXG47O1xuXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5sZXQgaW5kaXIgdCA9IHsgY2VsbCA9IEluZGlyIHQgfVxuXG5pbmNsdWRlIFNjaGVkdWxlci5JdmFyXG5cbigqIFtzcXVhc2ggdF0gcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gaXZhciBhdCB0aGUgZW5kIG9mIHRoZSAocG9zc2libHkgZW1wdHkpIGNoYWluIG9mXG4gICBbSW5kaXJdcyBzdGFydGluZyB3aXRoIFt0XSBhbmQgZW5zdXJlcyB0aGF0IGFsbCBbSW5kaXJdcyBhbG9uZyB0aGF0IGNoYWluIGFyZSByZXBsYWNlZFxuICAgd2l0aCBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGNoYWluLiAqKVxubGV0IHNxdWFzaCA9XG4gIGxldCByZWMgZm9sbG93IGluZGlyIHQgPVxuICAgICgqIFtpbmRpciA9IEluZGlyIHRdICopXG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIGFzIGluZGlyJyAtPiBmb2xsb3cgaW5kaXInIHQnXG4gICAgfCBfIC0+IGluZGlyXG4gIGluXG4gIGxldCByZWMgdXBkYXRlIHQgaW5kaXIgPVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyAtPlxuICAgICAgdC5jZWxsIDwtIGluZGlyO1xuICAgICAgdXBkYXRlIHQnIGluZGlyXG4gICAgfCBfIC0+IHRcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIChtYXRjaCB0Jy5jZWxsIHdpdGhcbiAgICAgICB8IEluZGlyIHQnJyBhcyBpbmRpciAtPiB1cGRhdGUgdCAoZm9sbG93IGluZGlyIHQnJylcbiAgICAgICB8IF8gLT4gdCcgKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzIGEgY2hhaW4gd2l0aCBhIHNpbmdsZSBbSW5kaXJdICopKVxuICAgIHwgXyAtPiB0XG47O1xuXG4oKiBub3RoaW5nIHRvIGRvLCBzaW5jZSBbdF0gaXNuJ3QgYW4gW0luZGlyXS4gKilcblxubGV0IGludmFyaWFudCBhX2ludmFyaWFudCB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBhX2ludmFyaWFudCBhXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAoXywgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IGV4ZWN1dGlvbl9jb250ZXh0XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+IEhhbmRsZXIuaW52YXJpYW50IGhhbmRsZXJcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgOiBTZXhwLnQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IExpc3QgWyBBdG9tIFwiRnVsbFwiOyBzZXhwX29mX2EgYSBdXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBBdG9tIFwiRW1wdHlcIlxuOztcblxubGV0IHBlZWsgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gU29tZSBhXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBOb25lXG47O1xuXG5sZXQgdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT5cbiAgICBmYWlsd2l0aCBpZl9lbXB0eV90aGVuX2ZhaWx3aXRoXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSB2YWx1ZSB0IH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoOlwiSXZhci52YWx1ZV9leG4gY2FsbGVkIG9uIGVtcHR5IGl2YXJcIlxuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gZmFsc2VcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbjs7XG5cbmxldCBpc19mdWxsIHQgPSBub3QgKGlzX2VtcHR5IHQpXG5cbmxldCBmaWxsIHQgdiA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJdmFyLmZpbGwgb2YgZnVsbCBpdmFyXCIgKHQgOiBfIHQpXVxuICB8IEVtcHR5IC0+IHQuY2VsbCA8LSBGdWxsIHZcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dCkgLT5cbiAgICB0LmNlbGwgPC0gRnVsbCB2O1xuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG47O1xuXG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCAoaGFuZGxlciA6IF8gSGFuZGxlci50KSA9XG4gIEhhbmRsZXIuc2V0X3J1biBoYW5kbGVyIGlnbm9yZTtcbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyAtPlxuICAgICgqIFRoZXNlIGFyZSBvbmx5IHBvc3NpYmxlIGlmIFtoYW5kbGVyXSB3YXMgYWxyZWFkeSByZW1vdmVkLiAgKilcbiAgICAoKVxuICB8IEZ1bGwgXyAtPlxuICAgICgqIFRoaXMgaXMgcG9zc2libGUgaWYgW3RdIHdhcyBmaWxsZWQgYmVmb3JlIHdlIHRyeSB0byByZW1vdmUgdGhlIGhhbmRsZXIuICBFLmcuXG4gICAgICAgW0RlZmVycmVkLmNob29zZV0gd2lsbCBkbyB0aGlzLiAqKVxuICAgICgpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBjZWxsIC0+XG4gICAgaWYgSGFuZGxlci5pc19zaW5nbGV0b24gaGFuZGxlclxuICAgIHRoZW4gdC5jZWxsIDwtIEVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGhhbmRsZXIgY2VsbCB0aGVuIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIubmV4dCBoYW5kbGVyKTtcbiAgICAgIEhhbmRsZXIudW5saW5rIGhhbmRsZXIpXG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHkgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjtcbiAgICBoYW5kbGVyXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dFxuICB8IEZ1bGwgdiAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgKCogW3J1bl0gY2FsbHMgW2hhbmRsZXIucnVuXSwgd2hpY2gsIGlmIFtoYW5kbGVyXSBoYXMgYmVlbiByZW1vdmVkLCBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICAgdG8gW2lnbm9yZV0uICopXG4gICAgbGV0IHJ1biB2ID0gSGFuZGxlci5ydW4gaGFuZGxlciB2IGluXG4gICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHY7XG4gICAgaGFuZGxlclxuOztcblxubGV0IGhhc19oYW5kbGVycyB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbiAgfCBFbXB0eSB8IEZ1bGwgXyAtPiBmYWxzZVxuOztcblxubGV0IHVwb24nIHQgcnVuID0gYWRkX2hhbmRsZXIgdCBydW4gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcblxuKCogW3Vwb25dIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBhczpcblxuICAge1tcbiAgICAgbGV0IHVwb24gdCBmID0gaWdub3JlICh1cG9uJyB0IHJ1bikgXX1cblxuICAgSG93ZXZlciwgYmVsb3cgaXMgYSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgd29ydGggZG9pbmcgYmVjYXVzZSBbdXBvbl1cbiAgIGlzIHZlcnkgd2lkZWx5IHVzZWQgYW5kIGlzIHNvIG11Y2ggbW9yZSBjb21tb24gdGhhbiBbdXBvbiddLiAgVGhlIGJlbG93IGltcGxlbWVudGF0aW9uXG4gICBhdm9pZHMgdGhlIHVzZSBvZiB0aGUgYmFnIG9mIGhhbmRsZXJzIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugb2Ygb25lIGhhbmRsZXIgZm9yXG4gICB0aGUgZGVmZXJyZWQuICopXG5sZXQgdXBvbiB0IHJ1biA9XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgdiAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICB0LmNlbGxcbiAgICA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dCA6IF8gSGFuZGxlci50KVxuOztcblxuKCogW2Nvbm5lY3RdIHRha2VzIGl2YXJzIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10sIGFuZCBtYWtlcyBbYmluZF9yaHNdXG4gICBiZSBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBub24taW5kaXIgY2VsbCByZWFjaGFibGUgZnJvbSBbYmluZF9yZXN1bHRdLiAgT24gZW50cnlcbiAgIHRvIFtjb25uZWN0XSwgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSBtYXkgYmUgY2hhaW5zLCBzaW5jZSBbYmluZF9yaHNdIGlzIGFuXG4gICBhcmJpdHJhcnkgdXNlci1zdXBwbGllZCBkZWZlcnJlZCwgYW5kIFtiaW5kX3Jlc3VsdF0gaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIgcHJpb3IgdG9cbiAgIGJlaW5nIFtjb25uZWN0XWVkLCBhbmQgbWF5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gYW4gaW5kaXJlY3Rpb24gaW4gdGhlIGNhc2Ugb2ZcbiAgIHJpZ2h0LW5lc3RlZCBiaW5kcy5cblxuICAgVGhlIHB1cnBvc2Ugb2YgW2Nvbm5lY3RdIGlzIHRvIG1ha2UgdGFpbC1yZWN1cnNpdmUgYmluZCBsb29wcyB1c2UgY29uc3RhbnQgc3BhY2UuXG4gICBFLmcuOlxuXG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgaWYgaSA9IDBcbiAgICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBhZnRlciAoc2VjIDEuKSBpblxuICAgICAgICAgbG9vcCAoaSAtIDEpKSBdfVxuXG4gICBbY29ubmVjdF0gbWFrZXMgaW50ZXJtZWRpYXRlIGJpbmQgcmVzdWx0cyBhbGwgYmUgW0luZGlyXXMgcG9pbnRpbmcgYXQgdGhlIG91dGVybW9zdFxuICAgYmluZCwgcmF0aGVyIHRoYW4gYmVpbmcgYSBsaW5lYXItbGVuZ3RoIGNoYWluLCB3aXRoIGVhY2ggcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIG9uZS5cbiAgIFRoZW4sIHNpbmNlIHRoZSBwcm9ncmFtIGlzIG9ubHkgaG9sZGluZyBvbiB0byB0aGUgaW5uZXJtb3N0IGFuZCBvdXRlcm1vc3QgYmluZHMgYWxsIHRoZVxuICAgaW50ZXJtZWRpYXRlIG9uZXMgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkLlxuXG4gICBbY29ubmVjdF0gd29ya3MgYnkgc3F1YXNoaW5nIGl0cyBhcmd1bWVudHMgc28gdGhhdCB0aGUgW2JpbmRfcmhzXSBhbHdheXMgcG9pbnRzIGF0IHRoZVxuICAgdWx0aW1hdGUgcmVzdWx0LiAqKVxubGV0IGNvbm5lY3QgPVxuICAoKiBbcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdF0gcmVwb2ludHMgdG8gW2luZGlyXSBhbGwgdGhlIGl2YXJzIGluIHRoZVxuICAgICBjaGFpbiByZWFjaGFibGUgZnJvbSBbaXZhcl0sIGFuZCByZXR1cm5zIHRoZSBub24tW0luZGlyXSBjZWxsIGF0IHRoZSBlbmQgb2YgdGhlXG4gICAgIGNoYWluLiAgQWZ0ZXIgcmVwb2ludGluZywgd2Ugd2lsbCBtZXJnZSB0aGUgaGFuZGxlcnMgaW4gdGhhdCBjZWxsIHdpdGggdGhlIGhhbmRsZXJzXG4gICAgIGluIFtiaW5kX3Jlc3VsdF0sIGFuZCBwdXQgdGhlIG1lcmdlZCBzZXQgb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XS4gKilcbiAgbGV0IHJlYyByZXBvaW50X2luZGlycyB+aXZhciB+aW5kaXIgfmJpbmRfcmVzdWx0ID1cbiAgICBsZXQgY2VsbCA9IGl2YXIuY2VsbCBpblxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgSW5kaXIgaXZhcicgLT5cbiAgICAgIGl2YXIuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHJlcG9pbnRfaW5kaXJzIH5pdmFyOml2YXInIH5pbmRpciB+YmluZF9yZXN1bHRcbiAgICB8IEZ1bGwgXyAtPiBjZWxsXG4gICAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgICAoKiBJdCBpcyBwb3NzaWJsZSB0aGF0IFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gYXJlIG5vdCBlcXVhbCwgYnV0IHRoZWlyIGNoYWluc1xuICAgICAgICAgb2YgaW5kaXJzIGxlYWQgdG8gdGhlIHNhbWUgbm9uLVtJbmRpcl0gY2VsbCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW5ub3Qgc2V0IHRoYXRcbiAgICAgICAgIGNlbGwgdG8gcG9pbnQgdG8gaXRzZWxmLCBiZWNhdXNlIHRoYXQgd291bGQgaW50cm9kdWNlIGEgY3ljbGUuICopXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgaXZhciBiaW5kX3Jlc3VsdCkgdGhlbiBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICBjZWxsXG4gIGluXG4gIGZ1biB+YmluZF9yZXN1bHQgfmJpbmRfcmhzIC0+XG4gICAgaWYgbm90IChwaHlzX2VxdWFsIGJpbmRfcmVzdWx0IGJpbmRfcmhzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGJpbmRfcmVzdWx0ID0gc3F1YXNoIGJpbmRfcmVzdWx0IGluXG4gICAgICBsZXQgaW5kaXIgPSBJbmRpciBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGJpbmRfcmhzX2NvbnRlbnRzID0gcmVwb2ludF9pbmRpcnMgfml2YXI6YmluZF9yaHMgfmluZGlyIH5iaW5kX3Jlc3VsdCBpblxuICAgICAgKCogdXBkYXRlIFtiaW5kX3Jlc3VsdF0gd2l0aCB0aGUgdW5pb24gb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XSBhbmRcbiAgICAgICAgIFtiaW5kX3Joc10gKilcbiAgICAgIG1hdGNoIGJpbmRfcmVzdWx0LmNlbGwsIGJpbmRfcmhzX2NvbnRlbnRzIHdpdGhcbiAgICAgIHwgSW5kaXIgXywgXyB8IF8sIEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gYW5kIFtyZXBvaW50X2luZGlyc10gKilcbiAgICAgICgqIFtjb25uZWN0XSBpcyBvbmx5IHVzZWQgaW4gYmluZCwgd2hvc2UgaXZhciBpcyBvbmx5IGV2ZXIgZXhwb3J0ZWQgYXMgYSByZWFkLW9ubHlcbiAgICAgICAgIGRlZmVycmVkLiAgVGh1cywgW2JpbmRfcmVzdWx0XSBtdXN0IGJlIGVtcHR5LiAqKVxuICAgICAgfCBGdWxsIF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IF8sIEVtcHR5IC0+ICgpXG4gICAgICB8IEVtcHR5LCBfIC0+IGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHNcbiAgICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgICAgIHwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciksIEZ1bGwgdiAtPlxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzO1xuICAgICAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG4gICAgICB8ICggRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjEsIGV4ZWN1dGlvbl9jb250ZXh0MSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiBpblxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyMVxuICAgICAgfCAoIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIxKVxuICAgICAgICAsIEVtcHR5X29uZV9oYW5kbGVyIChydW4yLCBleGVjdXRpb25fY29udGV4dDIpICkgLT5cbiAgICAgICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyMSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA6IF8gSGFuZGxlci50KVxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIxID0gSGFuZGxlci5hZGQgaGFuZGxlcjIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMikgKSAtPiBIYW5kbGVyLnNwbGljZSBoYW5kbGVyMSBoYW5kbGVyMilcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBJdmFyID0gSXZhcjBcbm1vZHVsZSBIYW5kbGVyID0gSXZhci5IYW5kbGVyXG5cbigqIERlZmVycmVkcyBwcmVzZW50IGEgY292YXJpYW50IHZpZXcgb2YgaXZhcnMuICBXZSBjb3VsZCBhY3R1YWxseSBpbXBsZW1lbnQgZGVmZXJyZWRzXG4gICB1c2luZyBhIHJlY29yZCBvZiBjbG9zdXJlcywgYXMgaW4gdGhlIFtlc3NlbmNlX29mX2RlZmVycmVkXSByZWNvcmQgYmVsb3csIGZvciB3aGljaCB0aGVcbiAgIE9DYW1sIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgY292YXJpYW5jZS4gIEhvd2V2ZXIsIGRvaW5nIHNvIHdvdWxkIG1ha2UgW0l2YXIucmVhZF0gdmVyeVxuICAgY29zdGx5LCBiZWNhdXNlIGl0IHdvdWxkIGhhdmUgdG8gYWxsb2NhdGUgbG90cyBvZiBjbG9zdXJlcyBhbmQgYSByZWNvcmQuICBJbnN0ZWFkIG9mXG4gICBkb2luZyB0aGlzLCB3ZSBtYWtlIGRlZmVycmVkcyBhbiBhYnN0cmFjdCBjb3ZhcmlhbnQgdHlwZSwgd2hpY2ggY29uY3JldGVseSBpcyBqdXN0IHRoZVxuICAgaXZhciwgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBjb252ZXJ0IGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gYSBkZWZlcnJlZCBhbmQgaXRzIGNvbmNyZXRlXG4gICByZXByZXNlbnRhdGlvbiBhcyBhbiBpdmFyLiAgVGhpcyBbT2JqLm1hZ2ljXSBpcyBzYWZlIGJlY2F1c2UgdGhlIHJlcHJlc2VudGF0aW9uIGlzXG4gICBhbHdheXMganVzdCBhbiBpdmFyLCBhbmQgdGhlIGNvdmFyaWFuY2UgZm9sbG93cyBmcm9tIHRoZSBmYWN0IHRoYXQgYWxsIHRoZSBkZWZlcnJlZFxuICAgb3BlcmF0aW9ucyBhcmUgZXF1aXZhbGVudCB0byB0aG9zZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBvbiB0b3Agb2YgdGhlXG4gICBbZXNzZW5jZV9vZl9kZWZlcnJlZF0uXG5cbiAgIHtbXG4gICAgIHR5cGUgKCsnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBlc3NlbmNlX29mX2RlZmVycmVkID1cbiAgICAgICB7IHBlZWsgICAgICAgICAgICAgICAgICAgICAgOiB1bml0IC0+ICdhIG9wdGlvblxuICAgICAgIDsgaXNfZGV0ZXJtaW5lZCAgICAgICAgICAgICA6IHVuaXQgLT4gYm9vbFxuICAgICAgIDsgdXBvbiAgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiB1bml0XG4gICAgICAgOyB1cG9uJyAgICAgICAgICAgICAgICAgICAgIDogKCdhIC0+IHVuaXQpIC0+IFVucmVnaXN0ZXIudFxuICAgICAgIDsgaW5zdGFsbF9yZW1vdmFibGVfaGFuZGxlciA6ICgnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBSYXdfaGFuZGxlci50IC0+IFVucmVnaXN0ZXIudDsgfSBdfSAqKVxuXG50eXBlICsnYSB0ID0gJ2EgVHlwZXMuRGVmZXJyZWQudFxuXG4oKiB0aGUgYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIGVxdWl2YWxlbnQgdG8gaXZhciAqKVxuXG5sZXQgb2ZfaXZhciAodHlwZSBhKSAoaXZhciA6IGEgSXZhci50KSA6IGEgdCA9IE9iai5tYWdpYyBpdmFyXG5sZXQgdG9faXZhciAodHlwZSBhKSB0IDogYSBJdmFyLnQgPSBPYmoubWFnaWMgKHQgOiBhIHQpXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSAodG9faXZhciB0KVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IEl2YXIuc2V4cF9vZl90IHNleHBfb2ZfYSAodG9faXZhciB0KVxubGV0IHBlZWsgdCA9IEl2YXIucGVlayAodG9faXZhciB0KVxubGV0IHJldHVybiBhID0gb2ZfaXZhciAoSXZhci5jcmVhdGVfZnVsbCBhKVxubGV0IGlzX2RldGVybWluZWQgdCA9IEl2YXIuaXNfZnVsbCAodG9faXZhciB0KVxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBJdmFyLnZhbHVlXG4gICAgKHRvX2l2YXIgdClcbiAgICB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkRlZmVycmVkLnZhbHVlX2V4biBjYWxsZWQgb24gdW5kZXRlcm1pbmVkIGRlZmVycmVkXCJcbjs7XG5cbmxldCB1cG9uIHQgZiA9IEl2YXIudXBvbiAodG9faXZhciB0KSBmXG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmIHJlc3VsdDtcbiAgb2ZfaXZhciByZXN1bHRcbjs7XG5cbigqIGRvbid0IHVzZSBbY3JlYXRlXSBoZXJlIGFzIGl0IHdvdWxkIGFsbG9jYXRlIG9uZSBtb3JlIGNsb3N1cmUgKilcbmxldCBiaW5kIHQgfmYgPVxuICBsZXQgYmluZF9yZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuY29ubmVjdCB+YmluZF9yZXN1bHQgfmJpbmRfcmhzOih0b19pdmFyIChmIGEpKSk7XG4gIG9mX2l2YXIgYmluZF9yZXN1bHRcbjs7XG5cbmxldCBhZGRfaGFuZGxlciB0IGYgZXhlY3V0aW9uX2NvbnRleHQgPSBJdmFyLmFkZF9oYW5kbGVyICh0b19pdmFyIHQpIGYgZXhlY3V0aW9uX2NvbnRleHRcbmxldCByZW1vdmVfaGFuZGxlciB0IGggPSBJdmFyLnJlbW92ZV9oYW5kbGVyICh0b19pdmFyIHQpIGhcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQwXG5pbmNsdWRlIEl2YXIwXG5cbmxldCByZWFkID0gRGVmZXJyZWQub2ZfaXZhclxubGV0IGZpbGxfaWZfZW1wdHkgdCB2ID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZpbGwgdCB2XG5cbmluY2x1ZGVcbiAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAoT3B0aW9uKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSBwZWVrIHRcblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gICAgICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9mdWxsIGFcbiAgICAgIDs7XG4gICAgZW5kKVxuIiwiKCoqIFtNb25hZF9zZXF1ZW5jZS5TXSBpcyBhIGdlbmVyaWMgaW50ZXJmYWNlIHNwZWNpZnlpbmcgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGFcbiAgICBjb250YWluZXIgYW5kIGEgbW9uYWQuICBJdCBpcyBzcGVjaWFsaXplZCB0byB0aGUgW0RlZmVycmVkXSBtb25hZCBhbmQgdXNlZCB3aXRoXG4gICAgdmFyaW91cyBjb250YWluZXJzIGluIG1vZHVsZXMgW0RlZmVycmVkLkFycmF5XSwgW0RlZmVycmVkLkxpc3RdLCBbRGVmZXJyZWQuUXVldWVdLCBhbmRcbiAgICBbRGVmZXJyZWQuU2VxdWVuY2VdLiAgVGhlIFtNb25hZF9zZXF1ZW5jZS5ob3ddIHR5cGUgc3BlY2lmaWVzIHRoZSBwYXJhbGxlbGlzbSBvZlxuICAgIGNvbnRhaW5lciBpdGVyYXRvcnMuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIGhvdyA9XG4gIFsgYFBhcmFsbGVsICgqKiBsaWtlIFtgTWF4X2NvbmN1cnJlbnRfam9icyBJbnQubWF4X3ZhbHVlXSAqKVxuICB8IGBTZXF1ZW50aWFsXG4gICgqKiBbYFNlcXVlbnRpYWxdIGlzIG9mdGVuIGJ1dCBub3QgYWx3YXlzIHRoZSBzYW1lIGFzIFtgTWF4X2NvbmN1cnJlbnRfam9icyAxXVxuICAgICAgKGZvciBleGFtcGxlLCB0aGV5IGRpZmZlciBpbiB0aGUgW09yX2Vycm9yXSBtb25hZCkuICopXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgb2YgaW50XG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSBtb25hZFxuICB0eXBlICdhIHRcblxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiBtb25hZFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAoaW50ICogJ2EpIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2Igb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBhbGwgOiAnYSBtb25hZCB0IC0+ICdhIHQgbW9uYWRcbiAgdmFsIGFsbF91bml0IDogdW5pdCBtb25hZCB0IC0+IHVuaXQgbW9uYWRcblxuICAoKiogezIgRGVmZXJyZWQgaXRlcmF0b3JzfVxuXG4gICAgICBJbiB0aGUgZm9sbG93aW5nLCB0aGUgZGVmYXVsdCBbaG93XSBpcyBbYFNlcXVlbnRpYWxdICopXG5cbiAgdmFsIGluaXQgOiBob3c6aG93IC0+IGludCAtPiBmOihpbnQgLT4gJ2EgbW9uYWQpIC0+ICdhIHQgbW9uYWRcbiAgdmFsIGl0ZXIgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCBtb25hZCkgLT4gdW5pdCBtb25hZFxuICB2YWwgaXRlcmkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIG1hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgbWFwaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGZpbHRlciA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJfbWFwIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcGkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiB0IG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBjb25jYXRfbWFwaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuZW5kXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5pbmNsdWRlIERlZmVycmVkMFxuXG4oKiBUbyBhdm9pZCBhIHNwYWNlIGxlYWssIGl0IGlzIG5lY2Vzc2FyeSB0aGF0IFtuZXZlcl0gYWxsb2NhdGVzIGEgbmV3IGl2YXIgd2hlbmV2ZXIgaXQgaXNcbiAgIGNhbGxlZC4gIENvZGUgY2FuIGJpbmQgb24gW25ldmVyICgpXSwgc28gaWYgd2UgcmUtdXNlZCB0aGUgaXZhciwgd2UgY291bGQgZW5kbGVzc2x5XG4gICBhY2N1bXVsYXRlIGhhbmRsZXJzLiAqKVxubGV0IG5ldmVyICgpID0gSXZhci5yZWFkIChJdmFyLmNyZWF0ZSAoKSlcblxubW9kdWxlIE0gPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmVycmVkMFxuXG4gICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICgqIFdlIG1hbnVhbGx5IGlubGluZSBbRGVmZXJyZWQuY3JlYXRlXSBoZXJlLCBiZWNhdXNlIHRoZSBub24tZmxhbWJkYSBjb21waWxlciBpc24ndFxuICAgICAgICAgYWJsZSB0byBvcHRpbWl6ZSBhd2F5IHRoZSBjbG9zdXJlIHRoYXQgd291bGQgYmUgYmUgY3JlYXRlZC4gKilcbiAgICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmZpbGwgcmVzdWx0IChmIGEpKTtcbiAgICAgIG9mX2l2YXIgcmVzdWx0XG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmluY2x1ZGUgTVxuXG4oKiBXZSByZWJpbmQgYWxsIHRoZSB2YXJpb3VzIFtyZXR1cm5dcyBiZWNhdXNlIHRoZSB1c2Ugb2YgdGhlIFtNb25hZC5NYWtlXSBmdW5jdG9yXG4gICBjYXVzZXMgdGhlIGNvbXBpbGVyIHRvIG5vdCBpbmxpbmUgW3JldHVybl0sIGFuZCBoZW5jZSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvXG4gICBzdGF0aWNhbGx5IGFsbG9jYXRlIGNvbnN0YW50cyBsaWtlIFtyZXR1cm4gKCldLiAgQnkgcmViaW5kaW5nIFtyZXR1cm5dIGFzXG4gICBbRGVmZXJyZWQwLnJldHVybl0sIHRoZSBjb21waWxlciBjYW4gc2VlIHRoYXQ6XG5cbiAgIHtbXG4gICAgIHJldHVybiBhID0geyBJdmFyLkltbXV0YWJsZS4gY2VsbCA9IEZ1bGwgYSB9IF19XG5cbiAgIEFuZCBoZW5jZSwgaWYgW2FdIGlzIGNvbnN0YW50LCB0aGVuIHRoZSByZXR1cm4gaXMgY29uc3RhbnQgYW5kIGNhbiBiZSBzdGF0aWNhbGx5XG4gICBhbGxvY2F0ZWQuICBXaGVuIGNvbXBpbGluZyB3aXRoIGZsYW1iZGEsIHRoZSBjb21waWxlciBpbmxpbmVzIFtyZXR1cm5dIGFuZCB0aGlzIG1hbnVhbFxuICAgcmViaW5kaW5nIHdvdWxkIG5vdCBoZWxwOyB3ZSd2ZSBkZWNpZGVkIHRvIGRvIGl0IGFueXdheSBzbyB0aGF0IG5vbi1mbGFtYmRhIGJ1aWxkc1xuICAgZ2V0IHRoZSBvcHRpbWl6YXRpb24uICopXG5sZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIE0uTGV0X3N5bnRheFxuXG4gIGxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE0uTGV0X3N5bnRheC5MZXRfc3ludGF4XG5cbiAgICBsZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxuKCogV2Ugc2hhZG93IFthbGxdIG9uLXB1cnBvc2UgaGVyZSwgc2luY2UgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBpbnRyb2R1Y2VzIGEgY2hhaW4gb2ZcbiAgIGJpbmRzIGFzIGxvbmcgYXMgdGhlIGxpc3QuICopXG5sZXQgYWxsID0gYE1ha2Vfc3VyZV90b19kZWZpbmVfYWxsX2Vsc2V3aGVyZVxubGV0IF8gPSBhbGxcbmxldCB1bml0ID0gcmV0dXJuICgpXG5cbmxldCBib3RoIHQxIHQyID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+IHVwb24gdDEgKGZ1biBhMSAtPiB1cG9uIHQyIChmdW4gYTIgLT4gSXZhci5maWxsIHJlc3VsdCAoYTEsIGEyKSkpKVxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBsZXQgKCA+Pj4gKSA9IHVwb25cbiAgbGV0IHBweF9ib3RoID0gYm90aFxuZW5kXG5cbm9wZW4gSW5maXhcblxubGV0IGRvbid0X3dhaXRfZm9yIChfIDogdW5pdCB0KSA9ICgpXG5cbm1vZHVsZSBDaG9pY2UgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9IFQgOiAnYiBEZWZlcnJlZDAudCAqICgnYiAtPiAnYSkgLT4gJ2EgdFxuXG4gIGxldCBtYXAgKFQgKHQsIGYxKSkgfmY6ZjIgPSBUICh0LCBmdW4geCAtPiBmMiAoZjEgeCkpXG5lbmRcblxubW9kdWxlIFVucmVnaXN0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhpcyByZXByZXNlbnRhdGlvbiBzYXZlcyAybiB3b3JkcyBmb3IgYSBsaXN0IG9mIG4gY2hvaWNlcy4gKilcbiAgdHlwZSAnciB0ID1cbiAgICB8IE5pbCA6ICdyIHRcbiAgICB8IENvbnMgOiAnYSBEZWZlcnJlZDAudCAqICgnYSAtPiAncikgKiAnYSBEZWZlcnJlZDAuSGFuZGxlci50ICogJ3IgdCAtPiAnciB0XG5cbiAgbGV0IHJlYyBwcm9jZXNzID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodCwgX2YsIGhhbmRsZXIsIHJlc3QpIC0+XG4gICAgICByZW1vdmVfaGFuZGxlciB0IGhhbmRsZXI7XG4gICAgICBwcm9jZXNzIHJlc3RcbiAgOztcbmVuZFxuXG5sZXQgY2hvaWNlIHQgZiA9IENob2ljZS5UICh0LCBmKVxuXG5sZXQgZW5hYmxlZCBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCB1bnJlZ2lzdGVycyA9IHJlZiBVbnJlZ2lzdGVyLk5pbCBpblxuICBsZXQgcmVhZHkgXyA9XG4gICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICB0aGVuIChcbiAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyAhdW5yZWdpc3RlcnM7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0IChmdW4gKCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6W10gfmY6KGZ1biBhYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgICAgICAgICAgIG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IGFjXG4gICAgICAgICAgICAgfCBTb21lIHYgLT4gZiB2IDo6IGFjKSkpKVxuICBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICB1bnJlZ2lzdGVyc1xuICA6PSBMaXN0LmZvbGQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIGFjYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgIENvbnMgKHQsIGYsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKTtcbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IHJlYyBjaG9vc2VfcmVzdWx0IGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBVbnJlZ2lzdGVyLk5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBVbnJlZ2lzdGVyLkNvbnMgKHQsIGYsIF8sIHJlc3QpIC0+XG4gICAgKG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgIHwgTm9uZSAtPiBjaG9vc2VfcmVzdWx0IHJlc3RcbiAgICAgfCBTb21lIHYgLT4gZiB2KVxuOztcblxubGV0IGdlbmVyaWNfY2hvb3NlIGNob2ljZXMgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgKCogQSBiYWNrLXBhdGNoZWQgcmVmIGNvdWxkIGJlIHVzZWQgaGVyZSwgYnV0IHVzaW5nIGxhenkgc2F2ZXMgc29tZSBtZW1vcnlcbiAgICAgYmVjYXVzZSB0aGUgR0MgZXZlbnR1YWxseSByZW1vdmVzIHRoZSBleHRyYSBpbmRpcmVjdGlvbi4gKilcbiAgbGV0IHJlYyB1bnJlZ2lzdGVycyA9XG4gICAgbGF6eVxuICAgICAgKExpc3QuZm9sZF9yaWdodCBjaG9pY2VzIH5pbml0OlVucmVnaXN0ZXIuTmlsIH5mOihmdW4gKENob2ljZS5UICh0LCBmKSkgYWNjIC0+XG4gICAgICAgICBVbnJlZ2lzdGVyLkNvbnMgKHQsIGYsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKSlcbiAgYW5kIHJlYWR5IDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biBfIC0+XG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB1bnJlZ2lzdGVycyA9IExhenkuZm9yY2UgdW5yZWdpc3RlcnMgaW5cbiAgICAgICAgVW5yZWdpc3Rlci5wcm9jZXNzIHVucmVnaXN0ZXJzO1xuICAgICAgICBJdmFyLmZpbGwgcmVzdWx0IChjaG9vc2VfcmVzdWx0IHVucmVnaXN0ZXJzKSlcbiAgaW5cbiAgbGV0IChfIDogXykgPSBMYXp5LmZvcmNlIHVucmVnaXN0ZXJzIGluXG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbigqIFtjaG9vc2UyXSBpcyBhIHNwZWNpYWxpemF0aW9uIG9mIFtjaG9vc2VdIHRoYXQgaGFzIGJldHRlciBtZW1vcnkgdXNhZ2UuXG4gICBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCBbY2hvb3NlMl0ga2VlcHMgMjIgZXh0cmEgd29yZHMgYWxpdmVcbiAgIGZvciB0aGUgZHVyYXRpb24gb2YgY2hvaWNlIHN0YXlpbmcgdW5kZXRlcm1pbmVkLCB3aGlsZSB0aGUgZXF1aXZhbGVudCBnZW5lcmljXG4gICBbY2hvb3NlXSBrZWVwcyAyNyAoc2VlIHRoZSBiZW5jaG1hcmsgaW4gLi4vYmVuY2gvYmluL2JlbmNoX2Nob29zZV9tZW1vcnlfdXNhZ2UubWwpLiAqKVxubGV0IGNob29zZTIgYSBmYSBiIGZiID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gIGxldCByZWMgYV9oYW5kbGVyID0gbGF6eSAoRGVmZXJyZWQwLmFkZF9oYW5kbGVyIGEgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQpXG4gIGFuZCBiX2hhbmRsZXIgPSBsYXp5IChEZWZlcnJlZDAuYWRkX2hhbmRsZXIgYiByZWFkeSBleGVjdXRpb25fY29udGV4dClcbiAgYW5kIHJlYWR5IDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biBfIC0+XG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFRoZSBvcmRlciBvZiB0aGVzZSBvcGVyYXRpb25zIG1hdHRlcnM6XG4gICAgICAgICAgIGlmIHdlIGNhbGwgW2ZiXSBvciBbZmFdIGZpcnN0IGFuZCBbcmVtb3ZlX2hhbmRsZXJdIGFmdGVyLCB0aGVuXG4gICAgICAgICAgIGFueSBleGNlcHRpb25zIHJhaXNlZCB3aWxsIGNhdXNlIHRoZSBoYW5kbGVycyB0byByZW1haW4gYW5kIHRoZW5cbiAgICAgICAgICAgdGhlIFwic2Vjb25kIGNob2ljZVwiIGdldHMgYSBjaGFuY2UgdG8gcnVuLlxuICAgICAgICAqKVxuICAgICAgICByZW1vdmVfaGFuZGxlciBhIChMYXp5LmZvcmNlIGFfaGFuZGxlcik7XG4gICAgICAgIHJlbW92ZV9oYW5kbGVyIGIgKExhenkuZm9yY2UgYl9oYW5kbGVyKTtcbiAgICAgICAgbWF0Y2ggcGVlayBhIHdpdGhcbiAgICAgICAgfCBTb21lIGF2IC0+IEl2YXIuZmlsbCByZXN1bHQgKGZhIGF2KVxuICAgICAgICB8IE5vbmUgLT4gSXZhci5maWxsIHJlc3VsdCAoZmIgKHZhbHVlX2V4biBiKSkpXG4gIGluXG4gIGxldCAoXyA6IF8pID0gTGF6eS5mb3JjZSBhX2hhbmRsZXIgaW5cbiAgbGV0IChfIDogXykgPSBMYXp5LmZvcmNlIGJfaGFuZGxlciBpblxuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG5sZXQgY2hvb3NlIGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBbIENob2ljZS5UIChhLCBmYSk7IENob2ljZS5UIChiLCBmYikgXSAtPiBjaG9vc2UyIGEgZmEgYiBmYlxuICB8IGNob2ljZXMgLT4gZ2VuZXJpY19jaG9vc2UgY2hvaWNlc1xuOztcblxubGV0IGFueV9mIHRzIGYgPSBjaG9vc2UgKExpc3QubWFwIHRzIH5mOihmdW4gdCAtPiBjaG9pY2UgdCBmKSlcbmxldCBhbnkgdHMgPSBhbnlfZiB0cyBGbi5pZFxubGV0IGFueV91bml0IHRzID0gYW55X2YgdHMgKEZuLmlnbm9yZSA6IHVuaXQgLT4gdW5pdClcblxubGV0IGZvcl8gc3RhcnQgfnRvXyB+ZG9fID1cbiAgaWYgc3RhcnQgPiB0b19cbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgbGV0JWJpbmQgKCkgPSBkb18gaSBpblxuICAgICAgaWYgaSA+PSB0b18gdGhlbiByZXR1cm4gKCkgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3Agc3RhcnQpXG47O1xuXG5sZXQgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBjcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgICBmIHN0YXRlXG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgYFJlcGVhdCBzdGF0ZSAtPiBsb29wIHN0YXRlXG4gICAgICB8IGBGaW5pc2hlZCByZXN1bHQgLT4gSXZhci5maWxsIGZpbmlzaGVkIHJlc3VsdFxuICAgIGluXG4gICAgbG9vcCBzdGF0ZSlcbjs7XG5cbmxldCBmb3JldmVyIHN0YXRlIGYgPVxuICByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgKGZ1biBzdGF0ZSAtPlxuICAgIGxldCVtYXAgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgYFJlcGVhdCBzdGF0ZSlcbiAgPj4+IG5ldmVyX3JldHVybnNcbjs7XG5cbnR5cGUgaG93ID0gTW9uYWRfc2VxdWVuY2UuaG93IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2UuUyB3aXRoIHR5cGUgJ2EgbW9uYWQgOj0gJ2EgdFxuXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgeCA6OiB4cyAtPiBmIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyBiXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbmxldCBzZXFtYXAgdCB+ZiA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGJzIGEgLT4gZiBhID4+fCBmdW4gYiAtPiBiIDo6IGJzKSA+PnwgTGlzdC5yZXZcbmxldCBhbGwgZHMgPSBzZXFtYXAgZHMgfmY6Rm4uaWRcbmxldCBhbGxfdW5pdCBkcyA9IGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpXG5sZXQgb2sgeCA9IHggPj58IGZ1biB4IC0+IE9rIHhcblxubW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICBsZXQgZ2VuZXJpY19jaG9vc2UgPSBnZW5lcmljX2Nob29zZVxuZW5kXG4iLCJvcGVuIERlZmVycmVkMVxuaW5jbHVkZSBJbmZpeFxuaW5jbHVkZSBMZXRfc3ludGF4XG5cbmxldCBjaG9pY2UgPSBjaG9pY2VcbmxldCBjaG9vc2UgPSBjaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IGRvbid0X3dhaXRfZm9yXG5sZXQgbmV2ZXIgPSBuZXZlclxubGV0IHJldHVybiA9IHJldHVyblxubGV0IHVwb24gPSB1cG9uXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB1ID1cbiAgfCBFbXB0eSBvZiAnYSBJdmFyLnRcbiAgfCBGdWxsXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlICdhIHQgPSAnYSB1IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgRnVsbCAtPiAoKVxuICAgIHwgRW1wdHkgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdCA9IHJlZiAoRW1wdHkgaXZhcikgaW5cbiAgdCwgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IEVtcHR5IF8gLT4gdHJ1ZVxuICB8IEZ1bGwgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaWxsIHQgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBpIC0+XG4gICAgdCA6PSBGdWxsO1xuICAgIEl2YXIuZmlsbCBpIGFcbiAgfCBGdWxsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiYXR0ZW1wdCB0byBmaWxsIGZ1bGwgaXZhclwiXVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBTdHJlYW0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgbmV4dCBEZWZlcnJlZC50XG5cbiAgYW5kICdhIG5leHQgPSAnYSBUeXBlcy5TdHJlYW0ubmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbGV0IHJlYyBsb29wIGQgYWMgOiBTZXhwLnQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMaXN0IChMaXN0LnJldiAoU2V4cC5BdG9tIFwiLi4uXCIgOjogYWMpKVxuICAgICAgfCBTb21lIE5pbCAtPiBMaXN0IChMaXN0LnJldiBhYylcbiAgICAgIHwgU29tZSAoQ29ucyAoYSwgdCkpIC0+IGxvb3AgdCAoc2V4cF9vZl9hIGEgOjogYWMpXG4gICAgaW5cbiAgICBsb29wIHQgW11cbiAgOztcblxuICBsZXQgbmV4dCB0ID0gdFxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlRhaWwudCA9XG4gIHsgKCogW25leHRdIHBvaW50cyBhdCB0aGUgdGFpbCBvZiB0aGUgc3RyZWFtICopIG11dGFibGUgbmV4dCA6ICdhIFN0cmVhbS5uZXh0IEl2YXIudCB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3QgXyB0IDogU2V4cC50ID1cbiAgQXRvbSAoaWYgSXZhci5pc19lbXB0eSB0Lm5leHQgdGhlbiBcIjxvcGVuIHRhaWw+XCIgZWxzZSBcIjxjbG9zZWQgdGFpbD5cIilcbjs7XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSB9XG5sZXQgY29sbGVjdCB0ID0gSXZhci5yZWFkIChuZXh0IHQpXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgKG5leHQgdClcblxubGV0IGZpbGxfZXhuIHQgdiA9XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJzdHJlYW0gaXMgY2xvc2VkXCJdIGVsc2UgSXZhci5maWxsIChuZXh0IHQpIHZcbjs7XG5cbmxldCBjbG9zZV9leG4gdCA9IGZpbGxfZXhuIHQgTmlsXG5sZXQgY2xvc2VfaWZfb3BlbiB0ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiBJdmFyLmZpbGwgKG5leHQgdCkgTmlsXG5cbmxldCBleHRlbmQgdCB2ID1cbiAgbGV0IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmaWxsX2V4biB0IChDb25zICh2LCBJdmFyLnJlYWQgbmV4dCkpO1xuICB0Lm5leHQgPC0gbmV4dFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gVGFpbC5TdHJlYW1cbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcbmluY2x1ZGUgTW9uaXRvclxuXG50eXBlIG1vbml0b3IgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bmFtZTppZ25vcmVcbiAgICAgIH5oZXJlOmlnbm9yZVxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmZvcndhcmRpbmc6aWdub3JlXG4gICAgICB+bmV4dF9lcnJvcjooY2hlY2sgKGZ1biBuZXh0X2Vycm9yIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBuZXh0X2Vycm9yKSkpXG4gICAgICB+aGFuZGxlcnNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+dGFpbHNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+aGFzX3NlZW5fZXJyb3I6aWdub3JlKVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKVxubGV0IGN1cnJlbnQgKCkgPSBFeGVjdXRpb25fY29udGV4dC5tb25pdG9yIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKVxubGV0IGRldGFjaCB0ID0gdC5mb3J3YXJkaW5nIDwtIERldGFjaGVkXG5cbnR5cGUgaGFuZGxlcl9zdGF0ZSA9XG4gIHwgVW5pbml0aWFsaXplZFxuICB8IFJ1bm5pbmcgb2YgKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcuRWx0LnRcbiAgfCBUZXJtaW5hdGVkXG5cbmxldCBkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIHQgfmYgPVxuICBkZXRhY2ggdDtcbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICBsZXQgaGFuZGxlcl9zdGF0ZV9yZWYgPSByZWYgVW5pbml0aWFsaXplZCBpblxuICBsZXQgcnVuX2YgZXhuID1cbiAgICBtYXRjaCAhaGFuZGxlcl9zdGF0ZV9yZWYgd2l0aFxuICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFRlcm1pbmF0ZWQgLT4gKClcbiAgICB8IFJ1bm5pbmcgYmFnX2VsdCAtPlxuICAgICAgKHRyeSBmIGV4biB3aXRoXG4gICAgICAgfCBpbm5lcl9leG4gLT5cbiAgICAgICAgIGhhbmRsZXJfc3RhdGVfcmVmIDo9IFRlcm1pbmF0ZWQ7XG4gICAgICAgICBCYWcucmVtb3ZlIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgYmFnX2VsdDtcbiAgICAgICAgICgqIFtydW5fZl0gYWx3YXlzIHJ1bnMgaW4gW2V4ZWN1dGlvbl9jb250ZXh0XS4gIEhlbmNlLCBbcmFpc2UgaW5uZXJfZXhuXSBzZW5kc1xuICAgICAgICAgICAgW2lubmVyX2V4bl0gdG8gW2V4ZWN1dGlvbl9jb250ZXh0XSdzIG1vbml0b3IsIGkuZS4gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW5cbiAgICAgICAgICAgIFtkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzXSB3YXMgY2FsbGVkLiAqKVxuICAgICAgICAgcmFpc2UgaW5uZXJfZXhuKVxuICBpblxuICBoYW5kbGVyX3N0YXRlX3JlZlxuICA6PSBSdW5uaW5nIChCYWcuYWRkIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgKGV4ZWN1dGlvbl9jb250ZXh0LCBydW5fZikpXG47O1xuXG5sZXQgZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIHQgPVxuICBkZXRhY2ggdDtcbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzIDwtIHRhaWwgOjogdC50YWlsc19mb3JfYWxsX2Vycm9ycztcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBnZXRfbmV4dF9lcnJvciB0ID0gSXZhci5yZWFkIHQubmV4dF9lcnJvclxuXG5sZXQgZGV0YWNoX2FuZF9nZXRfbmV4dF9lcnJvciB0ID1cbiAgZGV0YWNoIHQ7XG4gIGdldF9uZXh0X2Vycm9yIHRcbjs7XG5cbmxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgKCkgPVxuICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgKFNvbWUgcGFyZW50KVxuOztcblxubW9kdWxlIE1vbml0b3JfZXhuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBleG4gOiBleG5cbiAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgOyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgfVxuXG4gIGxldCBiYWNrdHJhY2UgdCA9IHQuYmFja3RyYWNlXG4gIGxldCBleHRyYWN0X2V4biB0ID0gdC5leG5cblxuICBsZXQgYmFja3RyYWNlX3RydW5jYXRpb25faGV1cmlzdGljcyA9XG4gICAgbGV0IGpvYl9xdWV1ZSA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiam9iX3F1ZXVlLm1sXFxcIlwiIGluXG4gICAgbGV0IGRlZmVycmVkMCA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZGVmZXJyZWQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGRlZmVycmVkMSA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZGVmZXJyZWQxLm1sXFxcIlwiIGluXG4gICAgbGV0IG1vbml0b3IgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcIm1vbml0b3IubWxcXFwiXCIgaW5cbiAgICBsZXQgaW1wb3J0MCA9IFwiUmFpc2VkIGF0IGZpbGUgXFxcImltcG9ydDAubWxcXFwiXCIgaW5cbiAgICBsZXQgZXJyb3IgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImVycm9yLm1sXFxcIlwiIGluXG4gICAgZnVuIHRyYWNlcyAtPlxuICAgICAgKCogLi4vdGVzdC90ZXN0X3RyeV93aXRoX2Vycm9yX2Rpc3BsYXkubWwgbWFrZXMgc3VyZSB0aGlzIHN0YXlzIHVwLXRvLWRhdGUuICopXG4gICAgICBsZXQgdHJhY2VzID1cbiAgICAgICAgbWF0Y2ggdHJhY2VzIHdpdGhcbiAgICAgICAgfCB0MSA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MSB+cHJlZml4OmltcG9ydDAgLT5cbiAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDplcnJvciAtPlxuICAgICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgICAgfCB0MyA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MyB+cHJlZml4OmVycm9yIC0+IHJlc3RcbiAgICAgICAgICAgICAgfCBfIC0+IHJlc3QpXG4gICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICB8IF8gLT4gdHJhY2VzXG4gICAgICBpblxuICAgICAgbWF0Y2ggTGlzdC5yZXYgdHJhY2VzIHdpdGhcbiAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgfCB0MiA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmpvYl9xdWV1ZSAtPlxuICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICB8IHQyIDo6IHJlc3RcbiAgICAgICAgICAgICAgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQwXG4gICAgICAgICAgICAgICAgKCogYmluZCAqKVxuICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpkZWZlcnJlZDFcbiAgICAgICAgICAgICAgICAoKiBtYXAgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6bW9uaXRvclxuICAgICAgICAgICAgICAoKiB0cnlfd2l0aCAqKSAtPiBMaXN0LnJldiByZXN0XG4gICAgICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgICAgIHwgXyAtPiBMaXN0LnJldiByZXN0KVxuICAgICAgfCBfIC0+IHRyYWNlc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgeyBleG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgfSA9XG4gICAgbGV0IG1vbml0b3IgPVxuICAgICAgbGV0IG5hbWUgPVxuICAgICAgICBtYXRjaCBJbmZvLnRvX3N0cmluZ19odW0gbW9uaXRvci5uYW1lIHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IE5vbmVcbiAgICAgICAgfCBzIC0+IFNvbWUgc1xuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBtYXRjaCBtb25pdG9yLmhlcmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaGVyZSAtPlxuICAgICAgICAgICgqIFdlIGRpc3BsYXkgdGhlIGZ1bGwgZmlsZW5hbWUsIHdoZXJlYXMgYmFja3RyYWNlcyBvbmx5IGhhdmUgYmFzZW5hbWVzLCBidXRcbiAgICAgICAgICAgICBwZXJoYXBzIHRoYXQncyB3aGF0IHNob3VsZCBjaGFuZ2UuICopXG4gICAgICAgICAgbGV0IGNvbHVtbiA9IGhlcmUucG9zX2NudW0gLSBoZXJlLnBvc19ib2wgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoKiBXZSBoaWRlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIHdoZW4gW2FtX3J1bm5pbmdfdGVzdF0gdG8gbWFrZSB0ZXN0IG91dHB1dFxuICAgICAgICAgICAgICAgbW9yZSByb2J1c3QuICBUaGlzIHNhdmVzIHBlb3BsZSBtYW51YWxseSBoaWRpbmcgdGhlIG51bWJlcnMgb3IgZXZlbiB3b3JzZSxcbiAgICAgICAgICAgICAgIGxlYXZpbmcgdGhlbSBpbiB0ZXN0IG91dHB1dC4gIEhpZGluZyBpbiB0ZXN0IGlzIGRpZmZlcmVudCBjaG9pY2UgZm9yXG4gICAgICAgICAgICAgICBiZWhhdmlvciB0aGFuIG91ciBjb2RlYmFzZSBtYWtlcyBmb3IgW0JhY2t0cmFjZS5lbGlkZV0sIHdoaWNoIGhhcyBkZWZhdWx0XG4gICAgICAgICAgICAgICBbZmFsc2VdLCBhbmQgdGh1cyBzaG93cyBiYWNrdHJhY2VzIGluIHRlc3QuICBUaGVyZSBhcmUgYSBjb3VwbGUgcmVhc29ucyBmb3JcbiAgICAgICAgICAgICAgIHRoaXMgZGlmZmVyZW50IGNob2ljZS4gIEZpcnN0LCBleHBlY3QtdGVzdCBtYWNoaW5lcnkgaGFzIGNoZWNrIHRvIHByZXZlbnRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgZnJvbSBhcHBlYXJpbmcgaW4gdGVzdCBvdXRwdXQuICBJdCBoYXMgbm8gc3VjaCBjaGVja3MgZm9yIGxpbmVcbiAgICAgICAgICAgICAgIGFuZCBjb2x1bW4gbnVtYmVycy4gIFNlY29uZCwgd2hlbiB0aGVyZSBpcyBhIHJlYWwgZXJyb3IgYW5kIHlvdSB3YW50IHRvIHNlZVxuICAgICAgICAgICAgICAgdGhlIGJhY2t0cmFjZSwgdGhyb3dpbmcgYXdheSB0aGUgd2hvbGUgYmFja3RyYWNlIGxvc2VzIGEgbG90IG9mIHBvdGVudGlhbGx5XG4gICAgICAgICAgICAgICB1c2VmdWwgaW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgaGFyZCB0byByZWNvdmVyLiAgV2hlcmVhcyB3ZSdyZSBqdXN0XG4gICAgICAgICAgICAgICB0aHJvd2luZyBhIHdheSBhIGxpbmUgbnVtYmVyIGFuZCBjb2x1bW4sIHdoaWNoIGFyZSBhIG1pbm9yIGNvbnZlbmllbmNlXG4gICAgICAgICAgICAgICBnaXZlbiB0aGF0IHRoZSBmaWxlbmFtZSBoYXMgbW9zdCBvZiB0aGUgaW5mb3JtYXRpb24uICopXG4gICAgICAgICAgICAoaWYgYW1fcnVubmluZ190ZXN0XG4gICAgICAgICAgICAgdGhlbiBzcHJpbnRmIFwiZmlsZSAlUywgbGluZSBMSU5FLCBjaGFyYWN0ZXJzIEMxLUMyXCIgaGVyZS5wb3NfZm5hbWVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiZmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgICAgIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgICAgIGhlcmUucG9zX2xudW1cbiAgICAgICAgICAgICAgICAgY29sdW1uXG4gICAgICAgICAgICAgICAgIGNvbHVtbilcbiAgICAgIGluXG4gICAgICBtYXRjaCBwb3MsIG5hbWUgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgcG9zLCBOb25lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yIGF0ICVzXCIgcG9zIF1cbiAgICAgIHwgTm9uZSwgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzXCIgbmFtZSBdXG4gICAgICB8IFNvbWUgcG9zLCBTb21lIG5hbWUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgJXMgYXQgJXNcIiBuYW1lIHBvcyBdXG4gICAgaW5cbiAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIGJhY2t0cmFjZSAtPiBCYWNrdHJhY2UudG9fc3RyaW5nX2xpc3QgYmFja3RyYWNlXG4gICAgICBpblxuICAgICAgYmFja3RyYWNlX3RydW5jYXRpb25faGV1cmlzdGljcyBiYWNrdHJhY2UgQCBtb25pdG9yXG4gICAgaW5cbiAgICBsZXQgbGlzdF9pZl9ub3RfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IF8gOjogXyBhcyBsIC0+IFNvbWUgbFxuICAgIGluXG4gICAgWyVzZXhwXG4gICAgICAoZXhuIDogZXhuKVxuICAgICwgKGxpc3RfaWZfbm90X2VtcHR5IGJhY2t0cmFjZSA6IChzdHJpbmcgbGlzdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgLCBgYmFja3RyYWNlX2hpc3RvcnlcbiAgICAgICAgKGxpc3RfaWZfbm90X2VtcHR5IGJhY2t0cmFjZV9oaXN0b3J5IDogKEJhY2t0cmFjZS50IGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKV1cbiAgOztcbmVuZFxuXG5leGNlcHRpb24gTW9uaXRvcl9leG4gb2YgTW9uaXRvcl9leG4udFxuXG5sZXQgKCkgPVxuICBTZXhwbGliLkNvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTW9uaXRvcl9leG5dIChmdW5jdGlvblxuICAgIHwgTW9uaXRvcl9leG4gdCAtPiBbJXNleHAgXCJtb25pdG9yLm1sLkVycm9yXCIgOjogKHQgOiBNb25pdG9yX2V4bi50KV1cbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGV4dHJhY3RfZXhuIGV4biA9XG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgTW9uaXRvcl9leG4gZXJyb3IgLT4gZXJyb3IuZXhuXG4gIHwgZXhuIC0+IGV4blxuOztcblxubGV0IHNlbmRfZXhuIHQgPyhiYWNrdHJhY2UgPSBgR2V0KSBleG4gPVxuICBsZXQgZXhuID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgTW9uaXRvcl9leG4gXyAtPiBleG5cbiAgICB8IF8gLT5cbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgICAgICB8IGBHZXQgLT4gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudF9mb3JfZXhuIGV4blxuICAgICAgICB8IGBUaGlzIGIgLT4gU29tZSBiXG4gICAgICBpblxuICAgICAgbGV0IGJhY2t0cmFjZV9oaXN0b3J5ID0gKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkpLmJhY2t0cmFjZV9oaXN0b3J5IGluXG4gICAgICBNb25pdG9yX2V4biB7IE1vbml0b3JfZXhuLmV4bjsgYmFja3RyYWNlOyBiYWNrdHJhY2VfaGlzdG9yeTsgbW9uaXRvciA9IHQgfVxuICBpblxuICBpZiBEZWJ1Zy5tb25pdG9yX3NlbmRfZXhuIHRoZW4gRGVidWcubG9nIFwiTW9uaXRvci5zZW5kX2V4blwiICh0LCBleG4pIFslc2V4cF9vZjogdCAqIGV4bl07XG4gIHQuaGFzX3NlZW5fZXJyb3IgPC0gdHJ1ZTtcbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBJdmFyLmZpbGwgdC5uZXh0X2Vycm9yIGV4bjtcbiAgICB0Lm5leHRfZXJyb3IgPC0gSXZhci5jcmVhdGUgKCk7XG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IERldGFjaGVkIC0+XG4gICAgICBpZiBEZWJ1Zy5tb25pdG9yX3NlbmRfZXhuXG4gICAgICB0aGVuXG4gICAgICAgIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG4gZm91bmQgbGlzdGVuaW5nIG1vbml0b3JcIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICAgICAgQmFnLml0ZXIgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIChleGVjdXRpb25fY29udGV4dCwgZikgLT5cbiAgICAgICAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgZXhuKTtcbiAgICAgIExpc3QuaXRlciB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzIH5mOihmdW4gdGFpbCAtPiBUYWlsLmV4dGVuZCB0YWlsIGV4bilcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gbG9vcCBwYXJlbnRcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG4gLT5cbiAgICAgICgqIERvIG5vdCBjaGFuZ2UgdGhpcyBicmFuY2ggdG8gcHJpbnQgdGhlIGV4Y2VwdGlvbiBvciB0byBleGl0LiAgSGF2aW5nIHRoZVxuICAgICAgICAgc2NoZWR1bGVyIHJhaXNlIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiBpcyB0aGUgbmVjZXNzYXJ5IGJlaGF2aW9yIGZvciBwcm9ncmFtc1xuICAgICAgICAgdGhhdCBjYWxsIFtTY2hlZHVsZXIuZ29dIGFuZCB3YW50IHRvIGhhbmRsZSBpdC4gKilcbiAgICAgIFNjaGVkdWxlci4oZ290X3VuY2F1Z2h0X2V4biAodCAoKSkpIGV4biAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSlcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NjaGVkdWxlciA9IHN0cnVjdFxuICBsZXQgd2l0aGluX2NvbnRleHQgY29udGV4dCBmID1cbiAgICBTY2hlZHVsZXIuKHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBjb250ZXh0IH5mOihmdW4gKCkgLT5cbiAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCBmIHdpdGhcbiAgICAgIHwgT2sgeCAtPiBPayB4XG4gICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICBzZW5kX2V4biAoRXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciBjb250ZXh0KSBleG4gfmJhY2t0cmFjZTpgR2V0O1xuICAgICAgICBFcnJvciAoKSlcbiAgOztcblxuICBsZXQgd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbGV0IHRtcF9jb250ZXh0ID1cbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKSA/bW9uaXRvciA/cHJpb3JpdHlcbiAgICBpblxuICAgIHdpdGhpbl9jb250ZXh0IHRtcF9jb250ZXh0IGZcbiAgOztcblxuICBsZXQgd2l0aGluJyA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgT2sgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IHdpdGhpbl92ID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+IE5vbmVcbiAgICB8IE9rIHggLT4gU29tZSB4XG4gIDs7XG5cbiAgbGV0IHdpdGhpbiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiAoKVxuICAgIHwgT2sgKCkgLT4gKClcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB3b3JrIHggPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIFNjaGVkdWxlci5lbnF1ZXVlXG4gICAgICBzY2hlZHVsZXJcbiAgICAgIChFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZVxuICAgICAgICAgKFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlcilcbiAgICAgICAgID9tb25pdG9yXG4gICAgICAgICA/cHJpb3JpdHkpXG4gICAgICB3b3JrXG4gICAgICB4XG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlID9tb25pdG9yID9wcmlvcml0eSB3b3JrID0gc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB3b3JrICgpXG5cbiAgbGV0IHNjaGVkdWxlJyA9XG4gICAgKCogRm9yIHBlcmZvcm1hbmNlLCB3ZSB1c2UgW3NjaGVkdWxlX3dpdGhfZGF0YV0gd2l0aCBhIGNsb3NlZCBmdW5jdGlvbiwgYW5kIGlubGluZVxuICAgICAgIFtEZWZlcnJlZC5jcmVhdGVdLiAqKVxuICAgIGxldCB1cG9uX3dvcmtfZmlsbF9pICh3b3JrLCBpKSA9IHVwb24gKHdvcmsgKCkpIChmdW4gYSAtPiBJdmFyLmZpbGwgaSBhKSBpblxuICAgIGZ1biA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAtPlxuICAgICAgbGV0IGkgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB1cG9uX3dvcmtfZmlsbF9pICh3b3JrLCBpKTtcbiAgICAgIEl2YXIucmVhZCBpXG4gIDs7XG5cbiAgbGV0IHByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIHN0YWdlIChmdW4gYSAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhKVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCcgZiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gICAgbGV0IGNhbGxfYW5kX2ZpbGwgKGYsIGEsIGkpID0gdXBvbiAoZiBhKSAoZnVuIHIgLT4gSXZhci5maWxsIGkgcikgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT5cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGkgLT5cbiAgICAgICAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGNhbGxfYW5kX2ZpbGwgKGYsIGEsIGkpKSlcbiAgOztcbmVuZFxuXG5vcGVuIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IHN0cmVhbV9pdGVyIHN0cmVhbSB+ZiA9XG4gIGxldCByZWMgbG9vcCBzdHJlYW0gPVxuICAgIFN0cmVhbS5uZXh0IHN0cmVhbVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh2LCBzdHJlYW0pIC0+XG4gICAgICBsb29wIHN0cmVhbTtcbiAgICAgIGYgdlxuICBpblxuICBsb29wIHN0cmVhbVxuOztcblxuKCogQW4gWydhIE9rX2FuZF9leG5zLnRdIHJlcHJlc2VudHMgdGhlIG91dHB1dCBvZiBhIGNvbXB1dGF0aW9uIHJ1bm5pbmcgaW4gYSBkZXRhY2hlZFxuICAgbW9uaXRvci4gKilcbm1vZHVsZSBPa19hbmRfZXhucyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgb2sgOiAnYSBEZWZlcnJlZC50XG4gICAgOyBleG5zIDogZXhuIFN0cmVhbS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuIGYgPVxuICAgICgqIFdlIGNhbGwgW2NyZWF0ZV93aXRoX3BhcmVudCBOb25lXSBiZWNhdXNlIFttb25pdG9yXSBkb2VzIG5vdCBuZWVkIGEgcGFyZW50LiAgSXRcbiAgICAgICBkb2VzIG5vdCBiZWNhdXNlIHdlIGNhbGwgW2RldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSBtb25pdG9yXSBhbmQgZGVhbCB3aXRoIHRoZVxuICAgICAgIGVycm9ycyBleHBsaWNpdGx5LCB0aHVzIFtzZW5kX2V4bl0gd291bGQgbmV2ZXIgcHJvcGFnYXRlIGFuIGV4biBwYXN0IFttb25pdG9yXS4gKilcbiAgICBsZXQgbW9uaXRvciA9IGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSBOb25lIGluXG4gICAgbGV0IGV4bnMgPSBkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvciBpblxuICAgIGxldCBvayA9XG4gICAgICBtYXRjaCBydW4gd2l0aFxuICAgICAgfCBgTm93IC0+IHdpdGhpbicgfm1vbml0b3IgZlxuICAgICAgfCBgU2NoZWR1bGUgLT4gc2NoZWR1bGUnIH5tb25pdG9yIGZcbiAgICBpblxuICAgIHsgb2s7IGV4bnMgfVxuICA7O1xuZW5kXG5cbmxldCBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICByZXN1bHRfZmlsbGVyXG4gICAgICByZXN1bHRcbiAgICAgIGV4bnNcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdFxuICA9XG4gIGlmIEl2YXJfZmlsbGVyLmlzX2VtcHR5IHJlc3VsdF9maWxsZXJcbiAgdGhlbiAoXG4gICAgSXZhcl9maWxsZXIuZmlsbCByZXN1bHRfZmlsbGVyIHJlc3VsdDtcbiAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucylcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoX2xvZ19leG4gOiAoZXhuIC0+IHVuaXQpIHJlZiA9XG4gICAgcmVmIChmdW4gZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcImZhaWxlZCB0byBzZXQgW01vbml0b3IuRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5dXCIgKGV4biA6IEV4bi50KV0pXG4gIDs7XG5lbmRcblxubGV0IG1ha2VfaGFuZGxlX2V4biByZXN0ID1cbiAgbWF0Y2ggcmVzdCB3aXRoXG4gIHwgYExvZyAtPlxuICAgICgqIFdlIGFyZSBjYXJlZnVsIHRvIG5vdCBjbG9zZSBvdmVyIGN1cnJlbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IG5lZWRlZC4gKilcbiAgICAhRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5cbiAgfCBgUmFpc2UgLT5cbiAgICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICAgIGZ1biBleG4gLT4gc2VuZF9leG4gcGFyZW50IGV4biA/YmFja3RyYWNlOk5vbmVcbiAgfCBgQ2FsbCBmIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHdpdGhpbiB+bW9uaXRvcjpwYXJlbnQgKGZ1biAoKSAtPiBmIGV4bilcbjs7XG5cbmxldCB0cnlfd2l0aFxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICA/KG5hbWUgPSBcIlwiKVxuICAgICAgP2V4dHJhY3RfZXhuOihkb19leHRyYWN0X2V4biA9IGZhbHNlKVxuICAgICAgPyhydW4gPSBgTm93KVxuICAgICAgPyhyZXN0ID0gYFJhaXNlKVxuICAgICAgZlxuICA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gfm5hbWUgfnJ1biBmIGluXG4gIGxldCBoYW5kbGVfZXhuID0gbWFrZV9oYW5kbGVfZXhuIHJlc3QgaW5cbiAgbGV0IGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zID0gc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVfZXhuIGluXG4gICgqIFdlIHJ1biBbd2l0aGluJyB+bW9uaXRvcjptYWluXSB0byBhdm9pZCBob2xkaW5nIG9uIHRvIHJlZmVyZW5jZXMgdG8gdGhlIGV2YWx1YXRpb25cbiAgICAgY29udGV4dCBpbiB3aGljaCBbdHJ5X3dpdGhdIHdhcyBjYWxsZWQuICBUaGlzIGF2b2lkcyBhIHNwYWNlIGxlYWsgd2hlbiBhIGNoYWluIG9mXG4gICAgIFt0cnlfd2l0aF0ncyBhcmUgcnVuIGVhY2ggbmVzdGVkIHdpdGhpbiB0aGUgcHJldmlvdXMgb25lLiAgV2l0aG91dCB0aGUgW3dpdGhpbiddLCB0aGVcbiAgICAgZXJyb3IgaGFuZGxpbmcgZm9yIHRoZSBpbm5lcm1vc3QgW3RyeV93aXRoXSB3b3VsZCBrZWVwIGFsaXZlIHRoZSBlbnRpcmUgY2hhaW4uICopXG4gIHdpdGhpbicgfm1vbml0b3I6bWFpbiAoZnVuICgpIC0+XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBva1xuICAgIHRoZW4gKFxuICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnM7XG4gICAgICByZXR1cm4gKE9rIChEZWZlcnJlZC52YWx1ZV9leG4gb2spKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByZXN1bHRfZmlsbGVyLCByZXN1bHQgPSBJdmFyX2ZpbGxlci5jcmVhdGUgKCkgaW5cbiAgICAgIHVwb24gb2sgKGZ1biByZXMgLT5cbiAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgICAgICAoT2sgcmVzKVxuICAgICAgICAgIGV4bnNcbiAgICAgICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQpO1xuICAgICAgdXBvbiAoU3RyZWFtLm5leHQgZXhucykgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IENvbnMgKGV4biwgZXhucykgLT5cbiAgICAgICAgICBsZXQgZXhuID0gaWYgZG9fZXh0cmFjdF9leG4gdGhlbiBleHRyYWN0X2V4biBleG4gZWxzZSBleG4gaW5cbiAgICAgICAgICBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgICAoRXJyb3IgZXhuKVxuICAgICAgICAgICAgZXhuc1xuICAgICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHJlc3VsdCkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfb3JfZXJyb3IgP2hlcmUgP2luZm8gPyhuYW1lID0gXCJ0cnlfd2l0aF9vcl9lcnJvclwiKSA/ZXh0cmFjdF9leG4gP3Jlc3QgZiA9XG4gIHRyeV93aXRoIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuIH5ydW46YE5vdyA/cmVzdCA+PnwgT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxuOztcblxubGV0IHRyeV93aXRoX2pvaW5fb3JfZXJyb3JcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yXCIpXG4gICAgICA/ZXh0cmFjdF9leG5cbiAgICAgID9yZXN0XG4gICAgICBmXG4gID1cbiAgdHJ5X3dpdGhfb3JfZXJyb3IgZiA/aGVyZSA/aW5mbyB+bmFtZSA/ZXh0cmFjdF9leG4gP3Jlc3QgPj58IE9yX2Vycm9yLmpvaW5cbjs7XG5cbmxldCBwcm90ZWN0ID9oZXJlID9pbmZvID8obmFtZSA9IFwiTW9uaXRvci5wcm90ZWN0XCIpID9leHRyYWN0X2V4biA/cnVuID9yZXN0IGYgfmZpbmFsbHkgPVxuICBsZXQlYmluZCByID0gdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9oZXJlID9pbmZvID9ydW4gP3Jlc3Qgfm5hbWUgZiBpblxuICBsZXQlbWFwIGZyID1cbiAgICB0cnlfd2l0aFxuICAgICAgfmV4dHJhY3RfZXhuOmZhbHNlXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgIH5ydW46YFNjaGVkdWxlICgqIGNvbnNpZGVyIFt+cnVuOmBOb3ddICopXG4gICAgICA/cmVzdFxuICAgICAgfm5hbWU6XCJmaW5hbGx5XCJcbiAgICAgIGZpbmFsbHlcbiAgaW5cbiAgbWF0Y2ggciwgZnIgd2l0aFxuICB8IEVycm9yIGV4biwgRXJyb3IgZmluYWxseV9leG4gLT5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIkFzeW5jIGZpbmFsbHlcIiAoZXhuIDogZXhuKSAoZmluYWxseV9leG4gOiBleG4pXVxuICB8IEVycm9yIGUsIE9rICgpIHwgT2sgXywgRXJyb3IgZSAtPiByYWlzZSBlXG4gIHwgT2sgciwgT2sgKCkgLT4gclxuOztcblxubGV0IGhhbmRsZV9lcnJvcnMgP2hlcmUgP2luZm8gP25hbWUgZiBoYW5kbGVyID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMub2s7IGV4bnMgfSA9IE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuOmBOb3cgZiBpblxuICBzdHJlYW1faXRlciBleG5zIH5mOmhhbmRsZXI7XG4gIG9rXG47O1xuXG5sZXQgY2F0Y2hfc3RyZWFtID9oZXJlID9pbmZvID9uYW1lIGYgPVxuICBsZXQgeyBPa19hbmRfZXhucy5leG5zOyBfIH0gPVxuICAgIE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuOmBOb3cgKGZ1biAoKSAtPlxuICAgICAgZiAoKTtcbiAgICAgIHJldHVybiAoKSlcbiAgaW5cbiAgZXhuc1xuOztcblxubGV0IGNhdGNoID9oZXJlID9pbmZvID9uYW1lIGYgPVxuICBtYXRjaCVtYXAgU3RyZWFtLm5leHQgKGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmKSB3aXRoXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuICB8IE5pbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcIk1vbml0b3IuY2F0Y2ggZ290IHVuZXhwZWN0ZWQgZW1wdHkgc3RyZWFtXCJdXG47O1xuXG5sZXQgY2F0Y2hfZXJyb3IgP2hlcmUgP2luZm8gP25hbWUgZiA9IGNhdGNoID9oZXJlID9pbmZvID9uYW1lIGYgPj58IEVycm9yLm9mX2V4blxuXG5tb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gIGxldCBwYXJlbnQgdCA9XG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG4gLT4gTm9uZVxuICAgIHwgUGFyZW50IHBhcmVudCAtPiBTb21lIHBhcmVudFxuICAgIHwgRGV0YWNoZWQgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBkZXB0aCB0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBuID1cbiAgICAgIG1hdGNoIHBhcmVudCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBuXG4gICAgICB8IFNvbWUgdCAtPiBsb29wIHQgKG4gKyAxKVxuICAgIGluXG4gICAgbG9vcCB0IDBcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5pbmNsdWRlIFRhaWwuU3RyZWFtXG5cbmxldCBmaXJzdF9leG4gdCA9XG4gIG1hdGNoJW1hcCBuZXh0IHQgd2l0aFxuICB8IE5pbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlN0cmVhbS5maXJzdCBvZiBlbXB0eSBzdHJlYW1cIl1cbiAgfCBDb25zICh4LCBfKSAtPiB4XG47O1xuXG5sZXQgZm9sZCcgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgdXBvbiAobmV4dCB0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICAgIHwgQ29ucyAodiwgdCkgLT4gdXBvbiAoZiBiIHYpIChsb29wIHQpKVxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG4oKiBbZm9sZF0gaXMgaW1wbGVtZW50ZWQgdG8gYXZvaWQgcGVyLXN0cmVhbS1lbGVtZW50IGRlZmVycmVkIG92ZXJoZWFkIGluIHRoZSBjYXNlIHdoZW5cbiAgIG11bHRpcGxlIHN0cmVhbSBlbGVtZW50cyBhcmUgYXZhaWxhYmxlIHNpbXVsdGFuZW91c2x5LiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdXBvbiAobmV4dCB0KSAoZnVuIG5leHQgLT4gbG9vcF9uZXh0IG5leHQgYilcbiAgICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGJcbiAgICBhbmQgbG9vcF9uZXh0IG5leHQgYiA9XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCBDb25zICh2LCB0KSAtPiBsb29wIHQgKGYgYiB2KVxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gXyAtPiBuICsgMSlcbmxldCBpdGVyJyB0IH5mID0gZm9sZCcgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gZiB2KVxuXG5sZXQgY2xvc2VkIHQgPVxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgfCBTb21lIE5pbCAtPiByZXR1cm4gKClcbiAgfCBfIC0+IGl0ZXInIHQgfmY6KGZ1biBfIC0+IHJldHVybiAoKSlcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBkb24ndF93YWl0X2ZvclxuICAgIChpdGVyJyB0IH5mOihmdW4gYSAtPlxuICAgICAgIGYgYTtcbiAgICAgICByZXR1cm4gKCkpKVxuOztcblxubGV0IGNyZWF0ZSBmID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICAoKiBjb2xsZWN0IGJlZm9yZSBjYWxsaW5nIFtmXSwgaW4gY2FzZSBbZl0gaW1tZWRpYXRlbHkgZXh0ZW5kcy4gKilcbiAgbGV0IHQgPSBUYWlsLmNvbGxlY3QgdGFpbCBpblxuICBmIHRhaWw7XG4gIHRcbjs7XG5cbmxldCB1bmZvbGQgYiB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgYiA9XG4gICAgICB1cG9uIChmIGIpIChmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICB8IFNvbWUgKGEsIGIpIC0+XG4gICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCBhO1xuICAgICAgICAgIGxvb3AgYilcbiAgICBpblxuICAgIGxvb3AgYilcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeCk7XG4gICAgVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbmxldCB0b19saXN0IHMgPSBmb2xkJyBzIH5pbml0OltdIH5mOihmdW4gYiBhIC0+IHJldHVybiAoYSA6OiBiKSkgPj58IExpc3QucmV2XG5sZXQgY29weV90b190YWlsIHQgdGFpbCA9IGl0ZXInIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoVGFpbC5leHRlbmQgdGFpbCBhKSlcblxubGV0IGFwcGVuZCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChjb3B5X3RvX3RhaWwgdDEgdGFpbCkgKGZ1biAoKSAtPlxuICAgICAgdXBvbiAoY29weV90b190YWlsIHQyIHRhaWwpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpKVxuOztcblxubGV0IGNvbmNhdCB0ID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGl0ZXInIHQgfmY6KGZ1biB0IC0+IGNvcHlfdG9fdGFpbCB0IHRhaWwpKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcicgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIHYgLT5cbiAgICAgICAgIG1hdGNoJW1hcCBmIHYgd2l0aFxuICAgICAgICAgfCBmYWxzZSAtPiAoKVxuICAgICAgICAgfCB0cnVlIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9kZXByZWNhdGVkIHQgfmYgPSBmaWx0ZXInIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IGZpbHRlcl9tYXAnIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHYgLT4gVGFpbC5leHRlbmQgdGFpbCB2KSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyX21hcF9kZXByZWNhdGVkIHQgfmYgPSBmaWx0ZXJfbWFwJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBtYXAnIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoaXRlcicgdCB+ZjooZnVuIHYgLT4gZiB2ID4+fCBUYWlsLmV4dGVuZCB0YWlsKSkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgZmlyc3RfbiBzIG4gPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgbiA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICBlbHNlXG4gICAgICAgIHVwb24gKG5leHQgcykgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIG4pXG47O1xuXG5sZXQgYXZhaWxhYmxlX25vdyB0ID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgTmlsIC0+IExpc3QucmV2IGFjLCB0XG4gICAgfCBTb21lIChDb25zICh4LCB0KSkgLT4gbG9vcCB0ICh4IDo6IGFjKVxuICBpblxuICBsb29wIHQgW11cbjs7XG5cbmxldCBzcGxpdCA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSkgPyhmID0gZnVuIF8gLT4gYENvbnRpbnVlKSB0ID1cbiAgbGV0IHJlYXNvbl9mb3Jfc3RvcHBpbmcgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgcHJlZml4ID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IGZpbmlzaCB2ID1cbiAgICBUYWlsLmNsb3NlX2V4biBwcmVmaXg7XG4gICAgSXZhci5maWxsIHJlYXNvbl9mb3Jfc3RvcHBpbmcgdlxuICBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgY2hvb3NlIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcHBlZCk7IGNob2ljZSAobmV4dCB0KSAoZnVuIG8gLT4gYE5leHQgbykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3BwZWQgLT4gZmluaXNoIChgU3RvcHBlZCB0KVxuICAgIHwgYE5leHQgbyAtPlxuICAgICAgKG1hdGNoIG8gd2l0aFxuICAgICAgIHwgTmlsIC0+IGZpbmlzaCBgRW5kX29mX3N0cmVhbVxuICAgICAgIHwgQ29ucyAoYSwgdCkgLT5cbiAgICAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgICAgIHwgYENvbnRpbnVlIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCBwcmVmaXggYTtcbiAgICAgICAgICAgIGxvb3AgdFxuICAgICAgICAgIHwgYEZvdW5kIGIgLT4gZmluaXNoIChgRm91bmQgKGIsIHQpKSkpXG4gIGluXG4gIGxvb3AgdDtcbiAgVGFpbC5jb2xsZWN0IHByZWZpeCwgSXZhci5yZWFkIHJlYXNvbl9mb3Jfc3RvcHBpbmdcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgXywgZm91bmQgPSBzcGxpdCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBgRm91bmQgYSBlbHNlIGBDb250aW51ZSkgaW5cbiAgbWF0Y2glbWFwIGZvdW5kIHdpdGhcbiAgfCBgU3RvcHBlZCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IChgRW5kX29mX3N0cmVhbSB8IGBGb3VuZCBfKSBhcyB4IC0+IHhcbjs7XG5cbmxldCB1bmdyb3VwIHQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biBsIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KTtcbiAgICAgICAgIHJldHVybiAoKSkpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGludGVybGVhdmUgdHMgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgKCogVGhlIGludGVybGVhdmVkIHN0cmVhbSBzaG91bGQgYmUgY2xvc2VkIHdoZW4gdGhlIG91dGVyIHN0cmVhbSBhbmQgYWxsIG9mXG4gICAgICAgdGhlIGlubmVyIHN0cmVhbXMgaGF2ZSBiZWVuIGNsb3NlZC4gIEtlZXAgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIG9wZW5cbiAgICAgICBzdHJlYW1zIGFuZCBjbG9zZSB0aGUgaW50ZXJsZWF2ZWQgc3RyZWFtIHdoZW4gdGhhdCBjb3VudCBiZWNvbWVzXG4gICAgICAgemVyby4gKilcbiAgICBsZXQgbnVtX29wZW4gPSByZWYgMSBpblxuICAgICgqIDEgZm9yIHRoZSBvdXRlciBzdHJlYW0gdGhhdCBpcyBvcGVuICopXG4gICAgbGV0IGNsb3NlICgpID1cbiAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiAtIDE7XG4gICAgICBpZiAhbnVtX29wZW4gPSAwIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIGluXG4gICAgbGV0IG91dGVyX2Nsb3NlZCA9XG4gICAgICBpdGVyJyB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgbnVtX29wZW4gOj0gIW51bV9vcGVuICsgMTtcbiAgICAgICAgdXBvbiAoY29weV90b190YWlsIHQgdGFpbCkgY2xvc2U7XG4gICAgICAgIHJldHVybiAoKSlcbiAgICBpblxuICAgIHVwb24gb3V0ZXJfY2xvc2VkIGNsb3NlKVxuOztcblxubGV0IHRha2VfdW50aWwgdCBkID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIHVwb25cbiAgICAgICAgKGNob29zZSBbIGNob2ljZSBkIChmdW4gKCkgLT4gYFN0b3ApOyBjaG9pY2UgKG5leHQgdCkgKGZ1biB6IC0+IGBOZXh0IHopIF0pXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYFN0b3AgfCBgTmV4dCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgYE5leHQgKENvbnMgKHgsIHQpKSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCB4O1xuICAgICAgICAgICAgbG9vcCB0KVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseScgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICAgIH5yZXN0OmBSYWlzZVxuICAgICAgICAgIChmdW4gKCkgLT4gZiB4KVxuICAgICAgICA+Pj4gZnVuIHogLT5cbiAgICAgICAgbG9vcCB0O1xuICAgICAgICAobWF0Y2ggeiB3aXRoXG4gICAgICAgICB8IE9rICgpIC0+ICgpXG4gICAgICAgICB8IEVycm9yIGUgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlKVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICAoKiBXZSBpbW1lZGlhdGVseSBjYWxsIFtsb29wXSwgdGh1cyBtYWtpbmcgdGhlIGl0ZXIgZHVyYWJsZS4gIEFueSBleGNlcHRpb25zXG4gICAgICAgICAgIHJhaXNlZCBieSBbZl0gd2lsbCBub3QgcHJldmVudCB0aGUgbG9vcCBmcm9tIGNvbnRpbnVpbmcsIGFuZCB3aWxsIGdvIHRvIHRoZVxuICAgICAgICAgICBtb25pdG9yIG9mIHdob21ldmVyIGNhbGxlZCBbaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmRdLiAqKVxuICAgICAgICBsb29wIHQ7XG4gICAgICAgIGYgeFxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseSB0IH5mID0gZG9uJ3Rfd2FpdF9mb3IgKGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYpXG5cbmxldCBvZl9mdW4gZiA9XG4gIHVuZm9sZCAoKSB+ZjooZnVuICgpIC0+XG4gICAgbGV0JW1hcCBhID0gZiAoKSBpblxuICAgIFNvbWUgKGEsICgpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gKCdhLCAncGVybWlzc2lvbikgVHlwZXMuQnZhci50XG5cbnR5cGUgJ2EgcmVwciA9ICdhIFR5cGVzLkJ2YXIucmVwciA9XG4gIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSByZXByIFslc2V4cF9vZjogXyByZXByXSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgcmVwciBmIGluXG4gICAgRmllbGRzX29mX3JlcHIuaXRlclxuICAgICAgfmhhc19hbnlfd2FpdGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gaGFzX2FueV93YWl0ZXJzIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaGFzX2hhbmRsZXJzIHJlcHIuaXZhciB0aGVuIGFzc2VydCBoYXNfYW55X3dhaXRlcnMpKVxuICAgICAgfml2YXI6XG4gICAgICAgIChjaGVjayAoZnVuIGl2YXIgLT5cbiAgICAgICAgICAgSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgaXZhcjtcbiAgICAgICAgICAgYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSkpXG47O1xuXG5sZXQgc2V4cF9vZl90IF8gXyB0ID1cbiAgbGV0IHsgaGFzX2FueV93YWl0ZXJzOyBpdmFyID0gXyB9ID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgKCogV2UgZG9uJ3Qgc2hvdyBbaXZhcl0gYmVjYXVzZSBpdCdzIGFsd2F5cyBlbXB0eS4gKilcbiAgWyVtZXNzYWdlIChoYXNfYW55X3dhaXRlcnMgOiBib29sKV1cbjs7XG5cbmluY2x1ZGUgU2NoZWR1bGVyMS5CdmFyXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICBpZiByZXByLmhhc19hbnlfd2FpdGVyc1xuICB0aGVuIChcbiAgICByZXByLmhhc19hbnlfd2FpdGVycyA8LSBmYWxzZTtcbiAgICBJdmFyLmZpbGwgcmVwci5pdmFyIGE7XG4gICAgcmVwci5pdmFyIDwtIEl2YXIuY3JlYXRlICgpKVxuOztcblxubGV0IHdhaXQgdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgcmVwci5oYXNfYW55X3dhaXRlcnMgPC0gdHJ1ZTtcbiAgSXZhci5yZWFkIHJlcHIuaXZhclxuOztcblxubGV0IGhhc19hbnlfd2FpdGVycyB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICByZXByLmhhc19hbnlfd2FpdGVyc1xuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbmxldCBkZWJ1ZyA9IERlYnVnLmNsb2NrXG5cbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCAoID4+PiApID0gdXBvblxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuVDFcblxuICAoKiBXZSBkb24ndCBpbmNsdWRlIHRoZSBbaWRdIGluIHRoZSBzZXhwIGJlY2F1c2UgdGhlIHVzZXIgKHJpZ2h0bHkpIGNhbid0IGNvbnRyb2wgaXQsIHNvXG4gICAgIGl0J3MgaGFyZCB0byBtYWtlIGl0IGRldGVybWluaXN0aWMgaW4gdGVzdHMuICopXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGlkID0gX1xuICAgICAgICA7IGFkdmFuY2VfZXJyb3JzID0gX1xuICAgICAgICA7IGFtX2FkdmFuY2luZyA9IF9cbiAgICAgICAgOyBldmVudHNcbiAgICAgICAgOyBmaXJlZF9ldmVudHMgPSBfXG4gICAgICAgIDsgaGFuZGxlX2ZpcmVkID0gX1xuICAgICAgICA7IGlzX3dhbGxfY2xvY2tcbiAgICAgICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gX1xuICAgICAgICA7IHNjaGVkdWxlciA9IF9cbiAgICAgICAgfVxuICAgID1cbiAgICBpZiBpc193YWxsX2Nsb2NrXG4gICAgdGhlbiBbJW1lc3NhZ2UgXCI8d2FsbF9jbG9jaz5cIl1cbiAgICBlbHNlXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgKGlzX3dhbGxfY2xvY2sgOiBib29sKVxuICAgICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgICAgKGV2ZW50cyA6IF8gVGltaW5nX3doZWVsLnQpXVxuICA7O1xuZW5kXG5cbm9wZW4gVDFcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVhZF93cml0ZSBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmVuZFxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcbmxldCBjcmVhdGUgPSBTY2hlZHVsZXIuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlci53YWxsX2Nsb2NrXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbmxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5sZXQgaWQgdCA9IHQuaWRcblxubW9kdWxlIElkID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLklkXG5cbmxldCBub3cgdCA9XG4gIGlmIHQuaXNfd2FsbF9jbG9ja1xuICB0aGVuXG4gICAgKCogRm9yIHRoZSB3YWxsLWNsb2NrIHRpbWUtc291cmNlLCB3ZSB1c2UgW1RpbWVfbnMubm93ICgpXSByYXRoZXIgdGhhblxuICAgICAgIFtUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXS4gIFRoZSBsYXR0ZXIgaXMgb25seSB1cGRhdGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoXG4gICAgICAgY3ljbGUuICBUaGVyZSBjYW4gYmUgc3Vic3RhbnRpYWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gd2hlbiBwZW9wbGUgZG8gbG9uZ1xuICAgICAgIHJ1bm5pbmcgY29tcHV0YXRpb25zIG9yIG1peCBibG9ja2luZyBjb2RlIHdpdGggYXN5bmMuICBBbmQgaHVtYW5zIGV4cGVjdCB0aGF0XG4gICAgICAgd2FsbC1jbG9jayB0aW1lIGlzIGJhc2VkIG9uIFtUaW1lLm5vd10sIG5vdCBzb21lIGFydGlmYWN0IG9mIGFzeW5jXG4gICAgICAgaW1wbGVtZW50YXRpb24uICopXG4gICAgVGltZV9ucy5ub3cgKClcbiAgZWxzZSB0aW1pbmdfd2hlZWxfbm93IHRcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseSB0IH50b18gPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9ieSB0IGJ5ID0gYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcbmxldCBhZHZhbmNlID0gYWR2YW5jZV9kaXJlY3RseVxubGV0IGFkdmFuY2VfYnkgPSBhZHZhbmNlX2RpcmVjdGx5X2J5XG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbmxldCB5aWVsZCB0ID0gQnZhci53YWl0IChTY2hlZHVsZXIueWllbGQgdC5zY2hlZHVsZXIpXG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gU2NoZWR1bGVyLm51bV9wZW5kaW5nX2pvYnMgdCA+IDAgfHwgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZFxuXG5tb2R1bGUgRWFnZXJfZGVmZXJyZWQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmRfdW5pdCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIGYgKClcbiAgICBlbHNlIChcbiAgICAgIGxldCViaW5kICgpID0gdCBpblxuICAgICAgZiAoKSlcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgdFxuICAgIHRoZW4gcmV0dXJuIChmIChEZWZlcnJlZC52YWx1ZV9leG4gdCkpXG4gICAgZWxzZSBEZWZlcnJlZC5tYXAgdCB+ZlxuICA7O1xuZW5kXG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3IgdCB+dG9fID1cbiAgbGV0IHJ1bl9xdWV1ZWRfYWxhcm1zICgpID1cbiAgICAoKiBFdmVyeSB0aW1lIHdlIHdhbnQgdG8gcnVuIHF1ZXVlZCBhbGFybXMgd2UgbmVlZCB0byB5aWVsZCBjb250cm9sIGJhY2sgdG8gdGhlXG4gICAgICAgW0FzeW5jLlNjaGVkdWxlcl0gYW5kIFt3YWl0X2Zvcl0gYW55IGxvZ2ljIHRoYXQgaXMgc3VwcG9zZWQgdG8gZmluaXNoIGF0IHRoaXMgdGltZVxuICAgICAgIGJlZm9yZSBhZHZhbmNpbmcuICBJZiBubyBbd2FpdF9mb3JdIGxvZ2ljIGlzIHNwZWNpZmllZCB3ZSBjYW4gc2ltcGx5IHlpZWxkIGNvbnRyb2xcbiAgICAgICBieSBpbnZva2luZyBbeWllbGQgdF0sIHdoaWNoIGVucXVldWVzIGFub3RoZXIgam9iIGF0IHRoZSBlbmQgb2YgdGhlIHNjaGVkdWxlciBqb2JcbiAgICAgICBxdWV1ZSBzbyBhbGFybSBqb2JzIGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIHJ1biBiZWZvcmUgd2UgYWR2YW5jZS4gKilcbiAgICBtYXRjaCB3YWl0X2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IHlpZWxkIHRcbiAgICB8IFNvbWUgZiAtPiBmICgpXG4gIGluXG4gIGxldCBvbmVfc3RlcCAoKSA9XG4gICAgaWYgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFueV9maXJlZF9ldmVudHNfdG9fcnVuIHRcbiAgICB0aGVuIG5vdyB0LCBgY29udGludWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIFRpbWluZ193aGVlbC5taW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdC5ldmVudHMgd2l0aFxuICAgICAgfCBOb25lIC0+IHRvXywgYGZpbmlzaFxuICAgICAgfCBTb21lIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCAtPlxuICAgICAgICBpZiBUaW1lX25zLiggPj0gKSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdG9fXG4gICAgICAgIHRoZW4gdG9fLCBgZmluaXNoXG4gICAgICAgIGVsc2UgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsLCBgY29udGludWUpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIGxldCBhZHZhbmNlX3RvLCBuZXh0ID0gb25lX3N0ZXAgKCkgaW5cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzphZHZhbmNlX3RvO1xuICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICBFYWdlcl9kZWZlcnJlZC5iaW5kX3VuaXQgKHJ1bl9xdWV1ZWRfYWxhcm1zICgpKSB+ZjooZnVuICgpIC0+XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgYGZpbmlzaCAtPiByZXR1cm4gKClcbiAgICAgIHwgYGNvbnRpbnVlIC0+IHdhbGtfYWxhcm1zICgpKVxuICBpblxuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgKCogc28gdGhhdCBhbGFybXMgc2NoZWR1bGVkIGF0IG9yIGJlZm9yZSBbdG9fXSBmaXJlICopXG4gICAgcnVuX3F1ZXVlZF9hbGFybXMgKClcbiAgaW5cbiAgbGV0IHJlYyB3YWxrX2FsYXJtcyAoKSA9XG4gICAgbWF0Y2ggbmV4dF9hbGFybV9maXJlc19hdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmluaXNoICgpXG4gICAgfCBTb21lIG5leHRfYWxhcm1fZmlyZXNfYXQgLT5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGZpbmlzaCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyk7XG4gICAgICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAgICAgbGV0IHF1ZXVlZF9hbGFybXNfcmFuID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgICAgICAgRWFnZXJfZGVmZXJyZWQuYmluZF91bml0IHF1ZXVlZF9hbGFybXNfcmFuIH5mOndhbGtfYWxhcm1zKVxuICBpblxuICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICgqIFRoaXMgZmlyc3QgW3J1bl9xdWV1ZWRfYWxhcm1zXSBjYWxsIGFsbG93cyBbQ2xvY2tfbnMuZXZlcnldIHRoZSBvcHBvcnR1bml0eSB0byBydW5cbiAgICAgaXRzIGNvbnRpbnVhdGlvbiBkZWZlcnJlZHMgc28gdGhhdCB0aGV5IGNhbiByZXNjaGVkdWxlIGFsYXJtcy4gIFRoaXMgaXMgcGFydGljdWxhcmx5XG4gICAgIHVzZWZ1bCBpbiBvdXIgXCJhZHZhbmNlIGhpdHMgaW50ZXJtZWRpYXRlIGFsYXJtc1wiIHVuaXQgdGVzdCBiZWxvdywgYnV0IGxpa2VseSB1c2VmdWxcbiAgICAgaW4gb3RoZXIgY2FzZXMgd2hlcmUgW2V2ZXJ5XSBpcyBzeW5jaHJvbm91c2x5IGZvbGxvd2VkIGJ5IFthZHZhbmNlXS4gKilcbiAgbGV0JWJpbmQgKCkgPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICB3YWxrX2FsYXJtcyAoKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zX2J5ID93YWl0X2ZvciB0IGJ5ID1cbiAgYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yIHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuOztcblxubGV0IHNwYW5fdG9fdGltZSB0IHNwYW4gPSBUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhblxuXG5sZXQgc2NoZWR1bGVfam9iIHQgfmF0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBhbGFybSA9XG4gICAgVGltaW5nX3doZWVsLmFkZFxuICAgICAgdC5ldmVudHNcbiAgICAgIH5hdFxuICAgICAgKEpvYl9vcl9ldmVudC5vZl9qb2IgKFNjaGVkdWxlci5jcmVhdGVfam9iIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSkpXG4gIGluXG4gIChtYXRjaCB0LnNjaGVkdWxlci5ldmVudF9hZGRlZF9ob29rIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGYgLT4gZiBhdCk7XG4gIGFsYXJtXG47O1xuXG5sZXQgcnVuX2F0X2ludGVybmFsIHQgdGltZSBmIGEgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBpblxuICBpZiBUaW1lX25zLiggPiApIHRpbWUgKFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHMpXG4gIHRoZW4gc2NoZWR1bGVfam9iIHQgfmF0OnRpbWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG4gIGVsc2UgKFxuICAgIFNjaGVkdWxlci5lbnF1ZXVlIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICBBbGFybS5udWxsICgpKVxuOztcblxubGV0IHJ1bl9hdCB0IHRpbWUgZiBhID0gaWdub3JlIChydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGYgYSA6IF8gQWxhcm0udClcbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGYgYSA9IHJ1bl9hdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKSBmIGFcblxubGV0IGF0ID1cbiAgbGV0IGZpbGwgcmVzdWx0ID0gSXZhci5maWxsIHJlc3VsdCAoKSBpblxuICBmdW4gdCB0aW1lIC0+XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgdGltZSAoVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50cylcbiAgICB0aGVuIHJldHVybiAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBpZ25vcmUgKHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZmlsbCByZXN1bHQgOiBfIEFsYXJtLnQpO1xuICAgICAgSXZhci5yZWFkIHJlc3VsdClcbjs7XG5cbmxldCBhZnRlciB0IHNwYW4gPSBhdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKVxuXG5sZXQgcmVtb3ZlX2FsYXJtIHQgYWxhcm0gOiB1bml0ID1cbiAgbGV0IGpvYl9vcl9ldmVudCA9IEFsYXJtLnZhbHVlIHQuZXZlbnRzIGFsYXJtIGluXG4gIChsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgIHwgSm9iLCBqb2IgLT4gU2NoZWR1bGVyLmZyZWVfam9iIHQuc2NoZWR1bGVyIGpvYlxuICAgfCBFdmVudCwgXyAtPlxuICAgICAoKiBUaGlzIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgW2FsYXJtXSBvbmx5IGV2ZXIgY29tZXMgZnJvbSBbRXZlbnQuYWxhcm1dIHdoaWNoIG9ubHlcbiAgICAgICAgZXZlciBnZXRzIHBvcHVsYXRlZCBieSBhIGNhbGwgdG8gW3NjaGVkdWxlX2pvYl0uICopXG4gICAgIGFzc2VydCBmYWxzZSk7XG4gIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgYWxhcm1cbjs7XG5cbmxldCByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQgYWxhcm0gPVxuICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzIGFsYXJtIHRoZW4gcmVtb3ZlX2FsYXJtIHQgYWxhcm1cbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBtb2R1bGUgRmlyZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICB7IG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50XG4gICAgOyBtdXRhYmxlIGZpcmUgOiB1bml0IC0+IHVuaXRcbiAgICA7ICgqIEFzIGxvbmcgYXMgW0l2YXIuaXNfZW1wdHkgZmlyZWRdLCB3ZSBoYXZlIG5vdCB5ZXQgY29tbWl0dGVkIHRvIHdoZXRoZXIgdGhlIGV2ZW50XG4gICAgICAgICB3aWxsIGhhcHBlbiBvciBiZSBhYm9ydGVkLiAgV2hlbiBbSXZhci5pc19lbXB0eSBmaXJlZF0sIHRoZSBhbGFybSBtYXkgb3IgbWF5IG5vdFxuICAgICAgICAgYmUgaW4gdGhlIHRpbWluZyB3aGVlbCAtLSBpZiBpdCBpc24ndCwgdGhlbiB0aGVyZSdzIGEgam9iIGluIEFzeW5jJ3Mgam9iIHF1ZXVlXG4gICAgICAgICB0aGF0IHdpbGwgZmlyZSB0aGUgZXZlbnQsIHVubGVzcyBpdCBpcyBhYm9ydGVkIGJlZm9yZSB0aGF0IGpvYiBjYW4gcnVuLiAqKVxuICAgICAgZmlyZWQgOiAoJ2EsICdoKSBGaXJlZC50IEl2YXIudFxuICAgIDsgKCogW251bV9maXJlc190b19za2lwXSBpcyB1c2VkIHRvIHJlc2NoZWR1bGUgZXZlbnRzIHRoYXQgaGF2ZSBmaXJlZCBhbmQgZW50ZXJlZCB0aGVcbiAgICAgICAgIEFzeW5jIGpvYiBxdWV1ZSwgYnV0IGhhdmUgbm90IHlldCBydW4uICBUaG9zZSBqb2JzIG9ubHkgcnVuIGlmIFtudW1fZmlyZXNfdG9fc2tpcFxuICAgICAgICAgPSAwXSwgYW5kIG90aGVyd2lzZSBqdXN0IGRlY3JlbWVudCBpdC4gIFNvLCB0byByZXNjaGVkdWxlIGFuIGV2ZW50IGluIHN1Y2ggYVxuICAgICAgICAgc3RhdGUsIHdlIGluY3JlbWVudCBbbnVtX2ZpcmVzX3RvX3NraXBdIGFuZCBhZGQgYSBuZXcgYWxhcm0gdG8gdGhlIHRpbWluZ1xuICAgICAgICAgd2hlZWwuICopXG4gICAgICBtdXRhYmxlIG51bV9maXJlc190b19za2lwIDogaW50XG4gICAgOyAoKiBbc2NoZWR1bGVkX2F0XSBpcyB0aGUgdGltZSBhdCB3aGljaCBbdF0gaGFzIG1vc3QgcmVjZW50bHkgYmVlbiBzY2hlZHVsZWQgdG8gZmlyZS5cbiAgICAgICAgIFdoaWxlIFt0LmFsYXJtXSBpcyBzdGlsbCBpbiB0aGUgdGltaW5nIHdoZWVsLCB0aGlzIGlzIHRoZSBzYW1lIGFzIFtBbGFybS5hdFxuICAgICAgICAgdC5hbGFybV0uICopXG4gICAgICBtdXRhYmxlIHNjaGVkdWxlZF9hdCA6IFRpbWVfbnMudFxuICAgIDsgdGltZV9zb3VyY2UgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZmlyZWQgdCA9IEl2YXIucmVhZCB0LmZpcmVkXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfaCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmFsYXJtOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuZmlyZWRcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAobm90IChUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybSkpXG4gICAgICAgICAgICAgZWxzZSBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybVxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChKb2Jfb3JfZXZlbnQuaXNfam9iIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKSkpXG4gICAgICAgIH5maXJlOmlnbm9yZVxuICAgICAgICB+ZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkIDogXyBGaXJlZC50IEl2YXIudCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgZmlyZWQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gaW52YXJpYW50X2EgYVxuICAgICAgICAgICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gaW52YXJpYW50X2ggaCkpXG4gICAgICAgIH5udW1fZmlyZXNfdG9fc2tpcDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fZmlyZXNfdG9fc2tpcCAtPiBhc3NlcnQgKG51bV9maXJlc190b19za2lwID49IDApKSlcbiAgICAgICAgfnNjaGVkdWxlZF9hdDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzY2hlZHVsZWRfYXQgLT5cbiAgICAgICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgICAgICAgdGhlbiBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdIHNjaGVkdWxlZF9hdCB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgdC5hbGFybSkpKVxuICAgICAgICB+dGltZV9zb3VyY2U6aWdub3JlKVxuICA7O1xuXG4gIG1vZHVsZSBTdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lX25zLnRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgc3RhdHVzIHQgOiBfIFN0YXR1cy50ID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5maXJlZCkgd2l0aFxuICAgIHwgTm9uZSAtPiBTY2hlZHVsZWRfYXQgdC5zY2hlZHVsZWRfYXRcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gQWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBIYXBwZW5lZCBoXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQuYWJvcnRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKGZpcmVkIHQpIHdpdGhcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gUHJldmlvdXNseV9hYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IFByZXZpb3VzbHlfaGFwcGVuZWQgaFxuICAgIHwgTm9uZSAtPlxuICAgICAgSXZhci5maWxsIHQuZmlyZWQgKEFib3J0ZWQgYSk7XG4gICAgICByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQudGltZV9zb3VyY2UgdC5hbGFybTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IGFib3J0X2V4biB0IGEgPVxuICAgIG1hdGNoIGFib3J0IHQgYSB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBfIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkNsb2NrLkV2ZW50LmFib3J0X2V4biBmYWlsZWQgdG8gYWJvcnQgZXZlbnQgdGhhdCBwcmV2aW91c2x5IGhhcHBlbmVkXCJdXG4gICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBhYm9ydGVkXCJdXG4gIDs7XG5cbiAgbGV0IGFib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhIDogXyBBYm9ydF9yZXN1bHQudClcbiAgbGV0IHNjaGVkdWxlIHQgPSB0LmFsYXJtIDwtIHJ1bl9hdF9pbnRlcm5hbCB0LnRpbWVfc291cmNlIHQuc2NoZWR1bGVkX2F0IHQuZmlyZSAoKVxuXG4gIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBhdCA6IF8gUmVzY2hlZHVsZV9yZXN1bHQudCA9XG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5yZXNjaGVkdWxlX2F0XCIgKHQsIGF0KSBbJXNleHBfb2Y6IChfLCBfKSB0ICogVGltZV9ucy50XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGlzX2luX3RpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm0gaW5cbiAgICAgIGxldCBhbV90cnlpbmdfdG9fcmVzY2hlZHVsZV9pbl90aGVfZnV0dXJlID1cbiAgICAgICAgVGltZV9ucy4oID4gKSBhdCAoVGltaW5nX3doZWVsLm5vdyBldmVudHMpXG4gICAgICBpblxuICAgICAgdC5zY2hlZHVsZWRfYXQgPC0gYXQ7XG4gICAgICAobWF0Y2ggYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSwgaXNfaW5fdGltaW5nX3doZWVsIHdpdGhcbiAgICAgICB8IGZhbHNlLCBmYWxzZSAtPiAoKVxuICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgIHQudGltZV9zb3VyY2UuaGFuZGxlX2ZpcmVkIHQuYWxhcm07XG4gICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwICsgMTtcbiAgICAgICAgIHNjaGVkdWxlIHRcbiAgICAgICB8IHRydWUsIHRydWUgLT4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgZXZlbnRzIHQuYWxhcm0gfmF0KTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IChzcGFuX3RvX3RpbWUgdC50aW1lX3NvdXJjZSBzcGFuKVxuXG4gIGxldCBydW5fYXQgdGltZV9zb3VyY2Ugc2NoZWR1bGVkX2F0IGYgeiA9XG4gICAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5ydW5fYXRcIiBzY2hlZHVsZWRfYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdO1xuICAgIGxldCB0ID1cbiAgICAgIHsgYWxhcm0gPSBBbGFybS5udWxsICgpXG4gICAgICA7IGZpcmUgPSBpZ25vcmUgKCogc2V0IGJlbG93ICopXG4gICAgICA7IGZpcmVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgIDsgbnVtX2ZpcmVzX3RvX3NraXAgPSAwXG4gICAgICA7IHNjaGVkdWxlZF9hdFxuICAgICAgOyB0aW1lX3NvdXJjZSA9IHJlYWRfb25seSB0aW1lX3NvdXJjZVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IGZpcmUgKCkgPVxuICAgICAgKCogW2ZpcmVdIHJ1bnMgaW4gYW4gQXN5bmMgam9iLiAgVGhlIGV2ZW50IG1heSBoYXZlIGJlZW4gYWJvcnRlZCBhZnRlciB0aGUgam9iXG4gICAgICAgICB3YXMgZW5xdWV1ZWQsIHNvIFtmaXJlXSBtdXN0IGNoZWNrIFtmaXJlZF0uICopXG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWRcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgdC5udW1fZmlyZXNfdG9fc2tpcCA+IDBcbiAgICAgICAgdGhlbiB0Lm51bV9maXJlc190b19za2lwIDwtIHQubnVtX2ZpcmVzX3RvX3NraXAgLSAxXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZXN1bHQgPSBmIHogaW5cbiAgICAgICAgICAoKiBbZiB6XSBtYXkgaGF2ZSBhYm9ydGVkIHRoZSBldmVudCwgc28gd2UgbXVzdCBjaGVjayBbZmlyZWRdIGFnYWluLiAqKVxuICAgICAgICAgIGlmIEl2YXIuaXNfZW1wdHkgdC5maXJlZCB0aGVuIEl2YXIuZmlsbCB0LmZpcmVkIChIYXBwZW5lZCByZXN1bHQpKVxuICAgIGluXG4gICAgdC5maXJlIDwtIGZpcmU7XG4gICAgc2NoZWR1bGUgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGF0IHRpbWVfc291cmNlIHRpbWUgPSBydW5fYXQgdGltZV9zb3VyY2UgdGltZSBpZ25vcmUgKClcblxuICBsZXQgcnVuX2FmdGVyIHRpbWVfc291cmNlIHNwYW4gZiBhID1cbiAgICBydW5fYXQgdGltZV9zb3VyY2UgKHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuKSBmIGFcbiAgOztcblxuICBsZXQgYWZ0ZXIgdGltZV9zb3VyY2Ugc3BhbiA9IGF0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbilcbmVuZFxuXG5sZXQgYXRfdGltZXMgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpIHQgbmV4dF90aW1lID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGNob29zZVxuICAgICAgWyBjaG9pY2Ugc3RvcCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChhdCB0IChuZXh0X3RpbWUgKCkpKSAoZnVuICgpIC0+IGBUaWNrKSBdXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBgU3RvcCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgfCBgVGljayAtPlxuICAgICAgVGFpbC5leHRlbmQgdGFpbCAoKTtcbiAgICAgIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCB0IGNvbXB1dGVfc3BhbiA9XG4gIGF0X3RpbWVzIHQgP3N0b3AgKGZ1biAoKSAtPiBUaW1lX25zLmFmdGVyIChub3cgdCkgKGNvbXB1dGVfc3BhbiAoKSkpXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCB0IGludGVydmFsID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBub3cgdFxuICBpblxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT5cbiAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2U6c3RhcnQgfmFmdGVyOihub3cgdCkgfmludGVydmFsICgpKVxuOztcblxubW9kdWxlIENvbnRpbnVlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbW1lZGlhdGVseVxuICAgIHwgQWZ0ZXIgb2YgVGltZV9ucy5TcGFuLnRcbiAgICB8IE5leHRfbXVsdGlwbGUgb2YgVGltZV9ucy50ICogVGltZV9ucy5TcGFuLnRcblxuICBsZXQgaW1tZWRpYXRlbHkgPSBJbW1lZGlhdGVseVxuXG4gIGxldCBhdCB0IHRpbWVfc291cmNlID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltbWVkaWF0ZWx5IC0+IFRpbWluZ193aGVlbC5ub3cgdGltZV9zb3VyY2UuZXZlbnRzXG4gICAgfCBBZnRlciBzcGFuIC0+IHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuXG4gICAgfCBOZXh0X211bHRpcGxlIChiYXNlLCBpbnRlcnZhbCkgLT5cbiAgICAgIFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZSB+YWZ0ZXI6KG5vdyB0aW1lX3NvdXJjZSkgfmludGVydmFsICgpXG4gIDs7XG5lbmRcblxubGV0IHJ1bl9yZXBlYXRlZGx5XG4gICAgICA/KHN0YXJ0ID0gcmV0dXJuICgpKVxuICAgICAgP3N0b3BcbiAgICAgID8oY29udGludWVfb25fZXJyb3IgPSB0cnVlKVxuICAgICAgPyhmaW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpKVxuICAgICAgdFxuICAgICAgfmZcbiAgICAgIH5jb250aW51ZVxuICA9XG4gIHN0YXJ0XG4gID4+PiBmdW4gKCkgLT5cbiAgbGV0IGFsYXJtID0gcmVmIChBbGFybS5udWxsICgpKSBpblxuICBsZXQgc3RvcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBOb25lIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBTb21lIHN0b3AgLT5cbiAgICAgIHVwb24gc3RvcCAoZnVuICgpIC0+XG4gICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgIWFsYXJtXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9hbGFybSB0ICFhbGFybTtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKCkpKTtcbiAgICAgIHN0b3BcbiAgaW5cbiAgKCogW3J1bl9mXSwgW2NvbnRpbnVlX2ZdLCBhbmQgW2NvbnRpbnVlX3RyeV93aXRoXSBhcmUgZGVmaW5lZCBzbyB0aGF0IHdlIGFsbG9jYXRlIHRoZWlyXG4gICAgIGNsb3N1cmVzIG9uY2UsIG5vdCBvbmNlIHBlciBpdGVyYXRpb24uICopXG4gIGxldCByZWMgcnVuX2YgKCkgPVxuICAgICgqIEJlZm9yZSBjYWxsaW5nIFtmXSwgd2Ugc3luY2hyb25vdXNseSBjaGVjayB3aGV0aGVyIFtzdG9wXSBpcyBkZXRlcm1pbmVkLiAqKVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBpZiBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gTW9uaXRvci50cnlfd2l0aCBmIH5ydW46YE5vdyB+cmVzdDpgUmFpc2UgPj4+IGNvbnRpbnVlX3RyeV93aXRoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZCA9IGYgKCkgaW5cbiAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGNvbnRpbnVlX2YgKCkgZWxzZSBkID4+PiBjb250aW51ZV9mKVxuICBhbmQgY29udGludWVfZiAoKSA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKClcbiAgICBlbHNlIGFsYXJtIDo9IHJ1bl9hdF9pbnRlcm5hbCB0IChDb250aW51ZS5hdCBjb250aW51ZSB0KSBydW5fZiAoKVxuICBhbmQgY29udGludWVfdHJ5X3dpdGggb3JfZXJyb3IgPVxuICAgIChtYXRjaCBvcl9lcnJvciB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBlcnJvciAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGVycm9yKTtcbiAgICBjb250aW51ZV9mICgpXG4gIGluXG4gIHJ1bl9mICgpXG47O1xuXG5sZXQgZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIHQgc3BhbiBmID1cbiAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS5ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgc3BhblwiIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgcnVuX3JlcGVhdGVkbHkgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB+ZiB+Y29udGludWU6KEFmdGVyIHNwYW4pXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IHNwYW4gZiA9XG4gIGV2ZXJ5JyB0ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkOk5vbmUgc3BhbiAoZnVuICgpIC0+XG4gICAgZiAoKTtcbiAgICByZXR1cm4gKCkpXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBsZXQgbm93ID0gbm93IHQgaW5cbiAgbGV0IGJhc2UsIHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBOb25lIC0+IG5vdywgTm9uZVxuICAgIHwgU29tZSBzdGFydCAtPlxuICAgICAgKCBzdGFydFxuICAgICAgLCBTb21lXG4gICAgICAgICAgKGF0XG4gICAgICAgICAgICAgdFxuICAgICAgICAgICAgIChUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgIH5iYXNlOnN0YXJ0XG4gICAgICAgICAgICAgICAgfmFmdGVyOm5vd1xuICAgICAgICAgICAgICAgIH5jYW5fZXF1YWxfYWZ0ZXI6dHJ1ZVxuICAgICAgICAgICAgICAgIH5pbnRlcnZhbCkpIClcbiAgaW5cbiAgcnVuX3JlcGVhdGVkbHlcbiAgICB0XG4gICAgP3N0YXJ0XG4gICAgP3N0b3BcbiAgICA/Y29udGludWVfb25fZXJyb3JcbiAgICB+ZlxuICAgIH5jb250aW51ZTooTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHdpdGhfdGltZW91dCB0IHNwYW4gZCA9XG4gIGxldCB0aW1lb3V0ID0gRXZlbnQuYWZ0ZXIgdCBzcGFuIGluXG4gIGNob29zZVxuICAgICgqIFRoZSBjb2RlIGJlbG93IGRvZXMgZXhoYXVzdGl2ZSBjYXNlIGFuYWx5c2lzIGluIGJvdGggW2Nob2ljZV1zLiAgQmVjYXVzZSBbdGltZW91dF1cbiAgICAgICBkb2VzIG5vdCBlc2NhcGUgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIGNlcnRhaW4gY2FzZXMgc2hvdWxkIGJlIGltcG9zc2libGUsIGFuZFxuICAgICAgIGFyZSBtYXJrZWQgYXMgc3VjaCB3aXRoIGV4Y2VwdGlvbnMuICBXZSBkbyBub3QgZXhwZWN0IHRob3NlIGV4Y2VwdGlvbnMgdG8gb2NjdXIsXG4gICAgICAgYnV0IGlmIHRoZXkgZG8sIGl0IGxpa2VseSBpbmRpY2F0ZXMgYSBidWcgaW4gW2Nob29zZV0gcmF0aGVyIHRoYW5cbiAgICAgICBbd2l0aF90aW1lb3V0XS4gKilcbiAgICBbIGNob2ljZSBkIChmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggRXZlbnQuYWJvcnQgdGltZW91dCAoKSB3aXRoXG4gICAgICAgICAoKiBbUHJldmlvdXNseV9oYXBwZW5lZF0gY2FuIG9jY3VyIGlmIGJvdGggW2RdIGFuZCBbd2FpdF0gYmVjb21lIGRldGVybWluZWQgYXRcbiAgICAgICAgICAgIHRoZSBzYW1lIHRpbWUsIGUuZy4gW3dpdGhfdGltZW91dCAoc2VjIDAuKSAocmV0dXJuICgpKV0uICopXG4gICAgICAgICB8IE9rIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiAoKVxuICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT5cbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBzaG91bGQgb25seSBhYm9ydCBvbmNlXCJdKTtcbiAgICAgICAgYFJlc3VsdCB2KVxuICAgIDsgY2hvaWNlIChFdmVudC5maXJlZCB0aW1lb3V0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBgVGltZW91dFxuICAgICAgICB8IEFib3J0ZWQgKCkgLT5cbiAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfc291cmNlLndpdGhfdGltZW91dCBidWc6IGJvdGggY29tcGxldGVkIGFuZCB0aW1lZCBvdXRcIl0pXG4gICAgXVxuOztcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gICgqIEVhZ2VyIG1hcCB0byBwcm92aWRlIG1vcmUgYWNjdXJhdGUgdGltaW5ncyB3aGVuIFtmXSBpcyBzeW5jaHJvbm91cy4gKilcbiAgRWFnZXJfZGVmZXJyZWQubWFwIChmICgpKSB+ZjooZnVuIHJlc3VsdCAtPlxuICAgIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gICAgcmVzdWx0LCBkdXJhdGlvbilcbjs7XG5cbmxldCBvZl9zeW5jaHJvbm91cyB0ID0gdFxubGV0IHRvX3N5bmNocm9ub3VzIHQgPSB0XG5cbmxldCB0aW1pbmdfd2hlZWxfaGFzX2V2ZW50X2F0X29yX2JlZm9yZSB3aGVlbCB0aW1lID1cbiAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHdoZWVsXG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgbGV0IG5leHRfYWxhcm0gPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gd2hlZWwgaW5cbiAgICBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5LihuZXh0X2FsYXJtIDw9IHRpbWUpKVxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IHQgfnRvXyA9XG4gIGxldCBpc19xdWVzY2VudCA9XG4gICAgKCogU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBqdXN0IGEgZmFzdCBjYXNlIG9mIFthZHZhbmNlX2J5X2FsYXJtc10sXG4gICAgICAgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY2FsbCB0byBbU2NoZWR1bGVyLnlpZWxkICgpXSBjYW4gYmUgZWxpZGVkLFxuICAgICAgIGhlbmNlIHRoZSBbY2FuX3J1bl9hX2pvYl0gY2hlY2suXG5cbiAgICAgICBXZSdyZSBub3QgY2hlY2tpbmcgZXBvbGwsIGFuZCB3ZSdyZSBub3QgY2hlY2tpbmcgdGhlIFtleHRlcm5hbF9qb2JzXS4gIFRoYXQgaXMgYW5cbiAgICAgICBvYnNlcnZhYmxlIGRpZmZlcmVuY2UsIGJ1dCBzaW5jZSBbYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yOk5vbmVdIGlzIGFscmVhZHlcbiAgICAgICBwcmV0dHkgYnJva2VuIHdoZW4gd2FpdGluZyBmb3IgZXh0ZXJuYWwgZXZlbnRzLCBpdCdzIG5vdCBnb2luZyB0byBiZSBtZWFuaW5nZnVsLlxuICAgICopXG4gICAgY2FuX3J1bl9hX2pvYiB0LnNjaGVkdWxlclxuICAgIHx8IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5oYXNfZXZlbnRzX3RvX3J1biB0XG4gICAgfHwgdGltaW5nX3doZWVsX2hhc19ldmVudF9hdF9vcl9iZWZvcmUgdC5ldmVudHMgdG9fXG4gIGluXG4gIGlmIGlzX3F1ZXNjZW50XG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgdHJ1ZSlcbjs7XG4iLCJ0eXBlIHQgPSB1bml0IC0+IHVuaXRcblxubW9kdWxlIEhhbmRsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5pbmNsdWRlIChTY2hlZHVsZXIgOiBtb2R1bGUgdHlwZSBvZiBTY2hlZHVsZXIgd2l0aCBtb2R1bGUgQnZhciA6PSBTY2hlZHVsZXIuQnZhcilcblxubGV0IHQgPSBTY2hlZHVsZXIudFxuXG5pbmNsdWRlIE1vbml0b3IuRXhwb3J0ZWRfZm9yX3NjaGVkdWxlclxuXG5sZXQgZmluZF9sb2NhbCBrZXkgPSBFeGVjdXRpb25fY29udGV4dC5maW5kX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkga2V5XG5cbmxldCB3aXRoX2xvY2FsIGtleSB2YWx1ZSB+ZiA9XG4gIGxldCB0ID0gdCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LndpdGhfbG9jYWwgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkga2V5IHZhbHVlXG4gIGluXG4gIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgdCBleGVjdXRpb25fY29udGV4dCB+ZlxuOztcblxubGV0IG1haW5fZXhlY3V0aW9uX2NvbnRleHQgPSAodCAoKSkubWFpbl9leGVjdXRpb25fY29udGV4dFxubGV0IGNhbl9ydW5fYV9qb2IgdCA9IG51bV9wZW5kaW5nX2pvYnMgdCA+IDAgfHwgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZFxubGV0IGhhc191cGNvbWluZ19ldmVudCB0ID0gbm90IChUaW1pbmdfd2hlZWwuaXNfZW1wdHkgKGV2ZW50cyB0KSlcbmxldCBuZXh0X3VwY29taW5nX2V2ZW50IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCAoZXZlbnRzIHQpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudF9leG4gdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biAoZXZlbnRzIHQpXG5sZXQgZXZlbnRfcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIChldmVudHMgdClcbmxldCBjeWNsZV9zdGFydCB0ID0gdC5jeWNsZV9zdGFydFxuXG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmYgPVxuICAoKiBVc2luZyBhbiBhcnJheSByYXRoZXIgdGhhbiBhIGxpc3QgZm9yIGNhY2hlIGVmZmljaWVuY3kuIFRoaXMgYW5kXG4gICAgIFtydW5fZXZlcnlfY3ljbGVfZW5kXSBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIHByb2dyYW0gaW5pdGlhbGl6YXRpb24sIHNvIHRoZVxuICAgICBhbGxvY2F0aW9uIGFuZCBnYXJiYWdlIGNyZWF0aW9uIHNob3VsZCBub3QgYmUgYW4gaXNzdWUuXG5cbiAgICAgTm90ZSB0aGF0IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBOIHRpbWVzIHRha2VzIE8oTl4yKSB0aW1lLCBidXQgdGhpcyBzaG91bGQgYmUgZmluZVxuICAgICBiZWNhdXNlIE4gaXMgc21hbGwuIFNhbWUgZm9yIFtydW5fZXZlcnlfY3ljbGVfZW5kXS4gKilcbiAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRcbjs7XG5cbmxldCBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmYgPVxuICB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5ydW5fZXZlcnlfY3ljbGVfZW5kXG47O1xuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgdCB+ZiA9XG4gIGxldCBoYW5kbGUgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS5jcmVhdGUgKCkgaW5cbiAgSGFzaHRibC5hZGRfZXhuIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIH5rZXk6aGFuZGxlIH5kYXRhOmY7XG4gIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbmxldCBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgdCB+ZiA9XG4gIGxldCBoYW5kbGUgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS5jcmVhdGUgKCkgaW5cbiAgSGFzaHRibC5hZGRfZXhuIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmY7XG4gIGhhbmRsZVxuOztcblxubGV0IGFycmF5X3JlbW92ZV9maXJzdCBhcnIgfmYgPVxuICBtYXRjaCBBcnJheS5maW5kaSBhcnIgfmYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGlkeCwgXykgLT5cbiAgICBTb21lXG4gICAgICAoQXJyYXkuaW5pdFxuICAgICAgICAgKEFycmF5Lmxlbmd0aCBhcnIgLSAxKVxuICAgICAgICAgfmY6KGZ1biBpIC0+IGlmIGkgPCBpZHggdGhlbiBhcnIuKGkpIGVsc2UgYXJyLihpICsgMSkpKVxuOztcblxubGV0IHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayBhcnIgZiA9XG4gICgqIFJlbW92ZSBhIHNpbmdsZSBpbnN0YW5jZSBvZiBbZl0gZnJvbSBbYXJyXS4gTW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBtYXkgYmUgcHJlc2VudCxcbiAgICAgYnV0IHJlbW92YWwgaXMgcmVmZXJlbmNlLWNvdW50ZWQgYnkgW3J1bl9ldmVyeV9jeWNsZV8oc3RhcnR8ZW5kKV9zdGF0ZV0gdGFibGVzLiAqKVxuICBtYXRjaCBhcnJheV9yZW1vdmVfZmlyc3QgfmY6KGZ1biBfIGcgLT4gcGh5c19lcXVhbCBmIGcpIGFyciB3aXRoXG4gIHwgU29tZSBhcnIgLT4gYXJyXG4gIHwgTm9uZSAtPlxuICAgICgqIFRoaXMgc2hvdWxkIGJlIHVucmVhY2hhYmxlLCBzZWUgdGhlIFtpbnZhcmlhbnRdIGluIFtzY2hlZHVsZXIxLm1sXS4gKilcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJTY2hlZHVsZXIucmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIGNhbGxlZCB3aXRoIGEgaG9vayB0aGF0IGlzbid0IHJlZ2lzdGVyZWRcIl1cbjs7XG5cbmxldCByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gdCBoYW5kbGUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBzdGFydCBob29rIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cIlxuICB8IFNvbWUgZiAtPlxuICAgIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCBmXG47O1xuXG5sZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biB0IGhhbmRsZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBlbmQgaG9vayB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuXCJcbiAgfCBTb21lIGYgLT4gdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgZlxuOztcblxubGV0IG1hcF9jeWNsZV90aW1lcyB0IH5mID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgKGYgdC5sYXN0X2N5Y2xlX3RpbWUpKSlcbjs7XG5cbmxldCBsb25nX2N5Y2xlcyB0IH5hdF9sZWFzdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPlxuICAgICAgaWYgVGltZV9ucy5TcGFuLiggPj0gKSB0Lmxhc3RfY3ljbGVfdGltZSBhdF9sZWFzdFxuICAgICAgdGhlbiBUYWlsLmV4dGVuZCB0YWlsIHQubGFzdF9jeWNsZV90aW1lKSlcbjs7XG5cbmxldCBjeWNsZV9udW1fam9icyB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdC5sYXN0X2N5Y2xlX251bV9qb2JzKSlcbjs7XG5cbmxldCBjeWNsZV9jb3VudCB0ID0gdC5jeWNsZV9jb3VudFxuXG5sZXQgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgaW50ID1cbiAgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA8LSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIGludFxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgPVxuICBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuOztcblxubGV0IHNldF90aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayB0IGYgPSB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDwtIGZcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmV4dGVybmFsX2pvYnMgKEV4dGVybmFsX2pvYi5UIChleGVjdXRpb25fY29udGV4dCwgZiwgYSkpO1xuICB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rICgpXG47O1xuXG5sZXQgc2V0X2V2ZW50X2FkZGVkX2hvb2sgdCBmID0gdC5ldmVudF9hZGRlZF9ob29rIDwtIFNvbWUgZlxubGV0IHNldF9qb2JfcXVldWVkX2hvb2sgdCBmID0gdC5qb2JfcXVldWVkX2hvb2sgPC0gU29tZSBmXG5cbmxldCBjcmVhdGVfYWxhcm0gdCBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIEdjLkV4cGVydC5BbGFybS5jcmVhdGUgKGZ1biAoKSAtPlxuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiAoKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyIHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgaGVhcF9ibG9jayA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy5cblxuICAgICAgIEJ5IHB1dHRpbmcgW2hlYXBfYmxvY2tdIGluIFtleHRlcm5hbF9qb2JzXSwgd2UgYXJlIGtlZXBpbmcgaXQgYWxpdmUgdW50aWwgdGhlIG5leHRcbiAgICAgICB0aW1lIHRoZSBhc3luYyBzY2hlZHVsZXIgZ2V0cyBhcm91bmQgdG8gZGVxdWV1ZWluZyBpdC4gIENhbGxpbmdcbiAgICAgICBbdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gZW5zdXJlcyB0aGF0IHdpbGwgaGFwcGVuIGluIHNob3J0IG9yZGVyLiAgVGh1cyxcbiAgICAgICB3ZSBhcmUgbm90IGRyYW1hdGljYWxseSBpbmNyZWFzaW5nIHRoZSBsaWZldGltZSBvZiBbaGVhcF9ibG9ja10sIHNpbmNlIHRoZSBPQ2FtbFxuICAgICAgIHJ1bnRpbWUgYWxyZWFkeSByZXN1cnJlY3RlZCBbaGVhcF9ibG9ja10gc28gdGhhdCB3ZSBjb3VsZCByZWZlciB0byBpdCBoZXJlLiAgVGhlXG4gICAgICAgT0NhbWwgcnVudGltZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGZpbmFsaXplciBmdW5jdGlvbiB3aGVuIGl0IG5vdGljZWQgW2hlYXBfYmxvY2tdXG4gICAgICAgY291bGQgYmUgZmluYWxpemVkLCBzbyB0aGVyZSBpcyBubyBpbmZpbml0ZSBsb29wIGluIHdoaWNoIHdlIGFyZSBjYXVzaW5nIHRoZVxuICAgICAgIGZpbmFsaXplciB0byBydW4gYWdhaW4uICBBbHNvLCBPQ2FtbCBkb2VzIG5vdCBpbXBvc2UgYW55IHJlcXVpcmVtZW50IG9uIGZpbmFsaXplclxuICAgICAgIGZ1bmN0aW9ucyB0aGF0IHRoZXkgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBibG9jaywgc28gaXQncyBmaW5lIHRoYXQgd2Uga2VlcFxuICAgICAgIFtoZWFwX2Jsb2NrXSBhcm91bmQgdW50aWwgbGF0ZXIuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJlbnF1ZXVlaW5nIGZpbmFsaXplclwiO1xuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBoZWFwX2Jsb2NrXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplclwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VdIGluc3RlYWQgb2YgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gYmVjYXVzZSB0aGUgbGF0dGVyXG4gICAgIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlXSB0byBydW4gZmluYWxpemVycyBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlIGZpbmFsaXplciBoZWFwX2Jsb2NrIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAoKiBbSGVhcF9ibG9ja10gZW5zdXJlcyB0aGF0IHRoaXMgd2lsbCBvbmx5IGZhaWwgZm9yIHN0YXRpYyBkYXRhLCBpbiB3aGljaCBjYXNlIHdlXG4gICAgICAgY2FuIGRyb3AgdGhlIGZpbmFsaXplciBzaW5jZSB0aGUgYmxvY2sgd2lsbCBuZXZlciBiZSBjb2xsZWN0ZWQuKilcbiAgICAoKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfZXhuIHQgeCBmID1cbiAgYWRkX2ZpbmFsaXplciB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgKGZ1biBoZWFwX2Jsb2NrIC0+XG4gICAgZiAoSGVhcF9ibG9jay52YWx1ZSBoZWFwX2Jsb2NrKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3QgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciAoKSA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzXG4gICAgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXIgKHVzaW5nICdsYXN0JyBzZW1hbnRpYylcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKClcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJfbGFzdF0gYmVjYXVzZVxuICAgICB0aGUgbGF0dGVyIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlX2xhc3RdIHRvIHJ1biBmaW5hbGl6ZXJzXG4gICAgIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCBmaW5hbGl6ZXIgaGVhcF9ibG9jayB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgKCogW0hlYXBfYmxvY2tdIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgb25seSBmYWlsIGZvciBzdGF0aWMgZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZVxuICAgICAgIGNhbiBkcm9wIHRoZSBmaW5hbGl6ZXIgc2luY2UgdGhlIGJsb2NrIHdpbGwgbmV2ZXIgYmUgY29sbGVjdGVkLiopXG4gICAgKClcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIHQgeCBmID0gYWRkX2ZpbmFsaXplcl9sYXN0IHQgKEhlYXBfYmxvY2suY3JlYXRlX2V4biB4KSBmXG5cbigqKiBbZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmRdIHNldHMgdGhlIG51bWJlciBvZiBub3JtYWwgam9icyBhbGxvd2VkIHRvIHJ1biBpbiB0aGlzXG4gICAgY3ljbGUgdG8gemVyby4gIFRodXMsIGFmdGVyIHRoZSBjdXJyZW50bHkgcnVubmluZyBqb2IgY29tcGxldGVzLCB0aGUgc2NoZWR1bGVyIHdpbGxcbiAgICBzd2l0Y2ggdG8gbG93IHByaW9yaXR5IGpvYnMgYW5kIHRoZW4gZW5kIHRoZSBjdXJyZW50IGN5Y2xlLiAqKVxubGV0IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kIHQgPVxuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgMFxuOztcblxuKCogV2UgcHJlYWxsb2NhdGUgW3NlbmRfZXhuXSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IG9uIGVhY2ggY2FsbCB0byBbYWR2YW5jZV9jbG9ja10uICopXG5sZXQgc2VuZF9leG4gPSBTb21lIE1vbml0b3Iuc2VuZF9leG5cblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+bm93ID1cbiAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFkdmFuY2VfaW50ZXJuYWwgdC50aW1lX3NvdXJjZSB+dG9fOm5vdyB+c2VuZF9leG5cbjs7XG5cbmxldCBydW5fY3ljbGUgdCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwicnVuX2N5Y2xlIHN0YXJ0aW5nXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgdC5jeWNsZV9jb3VudCA8LSB0LmN5Y2xlX2NvdW50ICsgMTtcbiAgdC5jeWNsZV9zdGFydCA8LSBub3c7XG4gIHQuaW5fY3ljbGUgPC0gdHJ1ZTtcbiAgQnZhci5icm9hZGNhc3QgdC55aWVsZCAoKTtcbiAgbGV0IG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSA9IG51bV9qb2JzX3J1biB0IGluXG4gIEFycmF5Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBhZHZhbmNlX2Nsb2NrIHQgfm5vdztcbiAgc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eTp0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlO1xuICBsZXQgcmVjIHJ1bl9qb2JzIHQgPVxuICAgIG1hdGNoIFNjaGVkdWxlci5ydW5fam9icyB0IHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpO1xuICAgICAgKCogW3J1bl9qb2JzXSBzdG9wcGVkIGR1ZSB0byBhbiBleG4uICBUaGVyZSBtYXkgc3RpbGwgYmUgam9icyB0aGF0IGNvdWxkIGJlXG4gICAgICAgICBydW4gdGhpcyBjeWNsZSwgc28gW3J1bl9qb2JzXSBhZ2Fpbi4gKilcbiAgICAgIHJ1bl9qb2JzIHRcbiAgaW5cbiAgcnVuX2pvYnMgdDtcbiAgbGV0IGN5Y2xlX3RpbWUgPSBUaW1lX25zLmRpZmYgKFRpbWVfbnMubm93ICgpKSB0LmN5Y2xlX3N0YXJ0IGluXG4gIHQubGFzdF9jeWNsZV90aW1lIDwtIGN5Y2xlX3RpbWU7XG4gIHQubGFzdF9jeWNsZV9udW1fam9icyA8LSBudW1fam9ic19ydW4gdCAtIG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZTtcbiAgdC50b3RhbF9jeWNsZV90aW1lIDwtIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgY3ljbGVfdGltZSk7XG4gIGlmIEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIEJ2YXIuYnJvYWRjYXN0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gKCk7XG4gIEFycmF5Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgdC5pbl9jeWNsZSA8LSBmYWxzZTtcbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIERlYnVnLmxvZ1xuICAgICAgXCJydW5fY3ljbGUgZmluaXNoZWRcIlxuICAgICAgKHVuY2F1Z2h0X2V4biB0LCBpc19zb21lIChuZXh0X3VwY29taW5nX2V2ZW50IHQpKVxuICAgICAgWyVzZXhwX29mOiBFcnJvci50IG9wdGlvbiAqIGJvb2xdXG47O1xuXG5sZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKSA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gc3RhcnRpbmdcIjtcbiAgbGV0IHQgPSB0ICgpIGluXG4gIGlmIGlzX2RlYWQgdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBjYW5ub3QgcHJvY2VlZCAtLSBzY2hlZHVsZXIgaXMgZGVhZFwiXG4gICAgICAgICAgfnNjaGVkdWxlcjoodCA6IHQpXTtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBydW5fY3ljbGUgdDtcbiAgICBhZHZhbmNlX2Nsb2NrIHQgfm5vdzooVGltZV9ucy5ub3cgKCkpO1xuICAgIGlmIGNhbl9ydW5fYV9qb2IgdCB0aGVuIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgKCogUmVzZXQgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGNvbnRleHQgdG8gbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHdoZW4gd2UncmUgbm90IGluXG4gICAgIGEgam9iLCBbY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IG1haW5fZXhlY3V0aW9uX2NvbnRleHRdLiAqKVxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0Lm1haW5fZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gZmluaXNoZWRcIjtcbiAgT3B0aW9uLml0ZXIgKHVuY2F1Z2h0X2V4biB0KSB+ZjpFcnJvci5yYWlzZVxuOztcblxubGV0IG1ha2VfYXN5bmNfdW51c2FibGUgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICB0LmNoZWNrX2FjY2Vzc1xuICA8LSBTb21lXG4gICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIHJhaXNlX3MgWyVzZXhwIFwiQXN5bmMgc2NoZWR1bGVyIGlzIHVudXNhYmxlIGR1ZSB0byBbbWFrZV9hc3luY191bnVzYWJsZV1cIl0pXG47O1xuXG5sZXQgcmVzZXRfaW5fZm9ya2VkX3Byb2Nlc3MgKCkgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJyZXNldF9pbl9mb3JrZWRfcHJvY2Vzc1wiO1xuICAoKiBUaGVyZSBpcyBubyBuZWVkIHRvIGVtcHR5IFttYWluX21vbml0b3JfaG9sZV0uICopXG4gIFNjaGVkdWxlci4odF9yZWYgOj0gY3JlYXRlICgpKVxuOztcblxubGV0IGNoZWNrX2ludmFyaWFudHMgdCA9IHQuY2hlY2tfaW52YXJpYW50c1xubGV0IHNldF9jaGVja19pbnZhcmlhbnRzIHQgYiA9IHQuY2hlY2tfaW52YXJpYW50cyA8LSBiXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIHQgYiA9IHQucmVjb3JkX2JhY2t0cmFjZXMgPC0gYlxubGV0IHlpZWxkIHQgPSBCdmFyLndhaXQgdC55aWVsZFxuXG5sZXQgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPyhtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ID0gZmFsc2UpIHQgPVxuICBpZiBtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSBCdmFyLndhaXQgdC55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpblxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIueWllbGRfZXZlcnkgZ290IG5vbnBvc2l0aXZlIGNvdW50XCIgKG4gOiBpbnQpXVxuICBlbHNlIGlmIG4gPSAxXG4gIHRoZW4gc3RhZ2UgKGZ1biB0IC0+IHlpZWxkIHQpXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF91bnRpbF95aWVsZCA9IHJlZiBuIGluXG4gICAgc3RhZ2UgKGZ1biB0IC0+XG4gICAgICBkZWNyIGNvdW50X3VudGlsX3lpZWxkO1xuICAgICAgaWYgIWNvdW50X3VudGlsX3lpZWxkID4gMFxuICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBjb3VudF91bnRpbF95aWVsZCA6PSBuO1xuICAgICAgICB5aWVsZCB0KSkpXG47O1xuXG5sZXQgdG90YWxfY3ljbGVfdGltZSB0ID1cbiAgKCogQWRqdXN0IGZvciB0aGUgZmFjdCB0aGUgY2FsbGVyJ3MgcHJvYmFibHkgYW4gQXN5bmMgam9iLiAqKVxuICBpZiB0LmluX2N5Y2xlXG4gIHRoZW4gKFxuICAgIGxldCB0aGlzX2N5Y2xlX3RpbWUgPSBUaW1lX25zLihkaWZmIChub3cgKCkpIHQuY3ljbGVfc3RhcnQpIGluXG4gICAgVGltZV9ucy5TcGFuLih0LnRvdGFsX2N5Y2xlX3RpbWUgKyB0aGlzX2N5Y2xlX3RpbWUpKVxuICBlbHNlIHQudG90YWxfY3ljbGVfdGltZVxuOztcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmsgPSBzdHJ1Y3RcbiAgbW9kdWxlIFdvcmtlcl9yZXN1bHQgPSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHRcblxuXG4gIGxldCByZWMgcnVuIHQgPSBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nOjFfMDAwXG5cbiAgYW5kIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPVxuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiB5aWVsZF90aGVuX3J1biB0XG4gICAgZWxzZSBpZiBub3QgKERlcXVlLmlzX2VtcHR5IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycylcbiAgICB0aGVuIChcbiAgICAgIGxldCB3b3JrZXIgPSBEZXF1ZS5kZXF1ZXVlX2Zyb250X2V4biB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgaW5cbiAgICAgIHNldF9leGVjdXRpb25fY29udGV4dCB0IHdvcmtlci5leGVjdXRpb25fY29udGV4dDtcbiAgICAgIHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG5cbiAgYW5kIHlpZWxkX3RoZW5fcnVuIHQgPVxuICAgIGlmIG5vdCAoRGVxdWUuaXNfZW1wdHkgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzKVxuICAgIHRoZW4gRGVmZXJyZWQudXBvbiAoeWllbGQgdCkgKGZ1biAoKSAtPiBydW4gdClcblxuICBhbmQgcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9XG4gICAgYXNzZXJ0IChwaHlzX2VxdWFsIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB3b3JrZXIuZXhlY3V0aW9uX2NvbnRleHQpO1xuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiAoXG4gICAgICBEZXF1ZS5lbnF1ZXVlX2Zyb250IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyB3b3JrZXI7XG4gICAgICB5aWVsZF90aGVuX3J1biB0KVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nIC0gMSBpblxuICAgICAgbWF0Y2ggd29ya2VyLmV4ZWMgKCkgd2l0aFxuICAgICAgfCBGaW5pc2hlZCAtPiBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IE5vdF9maW5pc2hlZCAtPiBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgbGV0IGJ0ID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBidCk7XG4gICAgICAgIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgfmYgPVxuICAgIGxldCB0ID0gdCAoKSBpblxuICAgIGxldCBxdWV1ZSA9IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyBpblxuICAgIGxldCBydW5uaW5nID0gbm90IChEZXF1ZS5pc19lbXB0eSBxdWV1ZSkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2UgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkgfnByaW9yaXR5Okxvd1xuICAgIGluXG4gICAgRGVxdWUuZW5xdWV1ZV9iYWNrIHF1ZXVlIHsgZXhlY3V0aW9uX2NvbnRleHQ7IGV4ZWMgPSBmIH07XG4gICAgaWYgbm90IHJ1bm5pbmcgdGhlbiBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2JlbmNoID0gc3RydWN0XG4gIGxldCBhZHZhbmNlX2Nsb2NrID0gYWR2YW5jZV9jbG9ja1xuZW5kXG5cbmxldCBpbl9jeWNsZSB0ID0gdC5pbl9jeWNsZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgQ291bnRpbmdfc2VtYXBob3JlIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB3YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIHJlbGVhc2Vfam9iX3Rva2VuIDogdCAtPiB1bml0XG4gIHZhbCBhYm9ydCA6IHQgLT4gdW5pdFxuICB2YWwgY3JlYXRlIDogbWF4X2NvbmN1cnJlbnRfam9iczppbnQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnRcbiAgICA7IG11dGFibGUgd2FpdGVyIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGFib3J0ZWQgOiBib29sXG4gICAgfVxuXG4gIGxldCB3YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuICh7IG1heF9jb25jdXJyZW50X2pvYnM7IHdhaXRlcjsgYWJvcnRlZCB9IGFzIHQpID1cbiAgICBtYXRjaCBhYm9ydGVkIHdpdGhcbiAgICB8IHRydWUgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IGZhbHNlIC0+XG4gICAgICBpZiBtYXhfY29uY3VycmVudF9qb2JzID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHQubWF4X2NvbmN1cnJlbnRfam9icyA8LSBtYXhfY29uY3VycmVudF9qb2JzIC0gMTtcbiAgICAgICAgRGVmZXJyZWQucmV0dXJuICgpKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAoT3B0aW9uLmlzX25vbmUgd2FpdGVyKTtcbiAgICAgICAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICB0LndhaXRlciA8LSBTb21lIGl2YXI7XG4gICAgICAgIEl2YXIucmVhZCBpdmFyKVxuICA7O1xuXG4gIGxldCByZWxlYXNlX2pvYl90b2tlbiAoeyBtYXhfY29uY3VycmVudF9qb2JzOyB3YWl0ZXI7IGFib3J0ZWQgPSBfIH0gYXMgdCkgPVxuICAgIG1hdGNoIHdhaXRlciB3aXRoXG4gICAgfCBTb21lIGl2YXIgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgdC53YWl0ZXIgPC0gTm9uZVxuICAgIHwgTm9uZSAtPiB0Lm1heF9jb25jdXJyZW50X2pvYnMgPC0gbWF4X2NvbmN1cnJlbnRfam9icyArIDFcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9XG4gICAgdC5hYm9ydGVkIDwtIHRydWU7XG4gICAgdC53YWl0ZXIgPC0gTm9uZVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgIHsgbWF4X2NvbmN1cnJlbnRfam9iczsgd2FpdGVyID0gTm9uZTsgYWJvcnRlZCA9IGZhbHNlIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgY29tcHV0ZSA6XG4gICAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LnQgLT4gQ291bnRpbmdfc2VtYXBob3JlLnQgLT4gKCdhIERlZmVycmVkLnQgLT4gdW5pdCkgLT4gdW5pdFxuICAgIH1cbiAgW0BAdW5ib3hlZF1cblxuICBsZXQgcmV0dXJuIHggPSB7IGNvbXB1dGUgPSAoZnVuIF8gXyBrIC0+IGsgKHJldHVybiB4KSkgfVxuXG4gIGxldCBtYXAgPVxuICAgIGBDdXN0b21cbiAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgeyBjb21wdXRlID1cbiAgICAgICAgICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGQgLT5cbiAgICAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgICAgKGxldCVtYXAgcmVzdWx0ID0gZCBpblxuICAgICAgICAgICAgICAgICAgICAgZiByZXN1bHQpKSlcbiAgICAgICAgIH0pXG4gIDs7XG5cbiAgbGV0IGFwcGx5IHRfZiB0ID1cbiAgICB7IGNvbXB1dGUgPVxuICAgICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICAgIHRfZi5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGRmIC0+XG4gICAgICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGR2IC0+XG4gICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgIChsZXQlYmluZCBmID0gZGYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgdiA9IGR2IGluXG4gICAgICAgICAgICAgICAgICBmIHYpKSkpXG4gICAgfVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChUKVxuXG5sZXQgZW5xdWV1ZScgc2NoZWR1bGVyIGN0eCBmID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgY3R4IChmdW4gKCkgLT4gdXBvbiAoZiAoKSkgKEl2YXIuZmlsbCBpdmFyKSkgKCk7XG4gIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgam9iIGYgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgRGVmZXJyZWQudXBvbiAoQ291bnRpbmdfc2VtYXBob3JlLndhaXRfdG9fYWNxdWlyZV9qb2JfdG9rZW4gc2VtYXBob3JlKSAoZnVuICgpIC0+XG4gICAgICAgICAgIGtcbiAgICAgICAgICAgICAoZW5xdWV1ZScgKFNjaGVkdWxlci50ICgpKSBleGVjX2N0eCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgbGV0JW1hcCBhID0gZiAoKSBpblxuICAgICAgICAgICAgICAgIENvdW50aW5nX3NlbWFwaG9yZS5yZWxlYXNlX2pvYl90b2tlbiBzZW1hcGhvcmU7XG4gICAgICAgICAgICAgICAgYSkpKSlcbiAgfVxuOztcblxubGV0IHJ1biB0IH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgbGV0IHNlbWFwaG9yZSA9IENvdW50aW5nX3NlbWFwaG9yZS5jcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgKCogVGhlIG5hbWUgaXMgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gb3JkZXIgdG8gcHJldmVudCBbTW9uaXRvci5zZW5kX2V4bl1cbiAgICAgZnJvbSBhcHBlbmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBtb25pdG9yIHRvIHRoZSBleGNlcHRpb25zIHdlIGZvcndhcmQuXG4gICAgIFRoaXMgbWF0dGVycyBiZWNhdXNlIHdlIHdhbnQgc2ltbGlhciBiZWhhdmlvciB0byBbVGhyb3R0bGVdIGFuZCBub3QgYnJlYWtcbiAgICAgZXhpc3RpbmcgdGVzdHMuICopXG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJcIiAoKSBpblxuICBsZXQgcGFyZW50X21vbml0b3IgPSBNb25pdG9yLmN1cnJlbnQgKCkgaW5cbiAgTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIG1vbml0b3IgfmY6KGZ1biBlcnIgLT5cbiAgICBDb3VudGluZ19zZW1hcGhvcmUuYWJvcnQgc2VtYXBob3JlO1xuICAgIE1vbml0b3Iuc2VuZF9leG4gcGFyZW50X21vbml0b3IgZXJyKTtcbiAgbGV0IGV4ZWNfY3R4ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZVxuICAgICAgfm1vbml0b3JcbiAgICAgIChTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoU2NoZWR1bGVyLnQgKCkpKVxuICBpblxuICBsZXQgaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biByIC0+IERlZmVycmVkLnVwb24gciAoSXZhci5maWxsIGl2YXIpKTtcbiAgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBvZl90aHVuayB0aHVuayA9XG4gIHsgY29tcHV0ZSA9XG4gICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICBsZXQgdCA9IHRodW5rICgpIGluXG4gICAgICAgICB0LmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIGspXG4gIH1cbjs7XG5cbmxldCAoICo+ICkgdDEgdDIgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgdDEuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkMSAtPlxuICAgICAgICAgICB0Mi5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGQyIC0+XG4gICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgKGxldCViaW5kICgpID0gZDEgaW5cbiAgICAgICAgICAgICAgICBkMikpKSlcbiAgfVxuOztcblxubGV0IGJvdGhfdW5pdCA9ICggKj4gKVxuIiwib3BlbiEgQmFzZVxuXG50eXBlIF8gdCA9XG4gIHwgU3RhY2sgOiAnYSBTdGFjay50IC0+ICdhIHRcbiAgfCBDb3VudGVyIDogeyBtdXRhYmxlIGxlbmd0aCA6IGludCB9IC0+IHVuaXQgdFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG9mX2xpc3QgbGlzdCA9IFN0YWNrIChTdGFjay5vZl9saXN0IGxpc3QpXG5cbmxldCBjcmVhdGVfY291bnRlciB+bGVuZ3RoID1cbiAgaWYgbGVuZ3RoIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIuY3JlYXRlX2NvdW50ZXJdIGdvdCBuZWdhdGl2ZSBsZW5ndGhcIiAobGVuZ3RoIDogaW50KV07XG4gIENvdW50ZXIgeyBsZW5ndGggfVxuOztcblxubGV0IGxlbmd0aCAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLmxlbmd0aCBzXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoXG47O1xuXG5sZXQgY2xlYXIgKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5jbGVhciBzXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoIDwtIDBcbjs7XG5cbmxldCBwdXNoICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5wdXNoIHMgYVxuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSByLmxlbmd0aCArIDFcbjs7XG5cbmxldCBwb3BfZXhuICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucG9wX2V4biBzXG4gIHwgQ291bnRlciByIC0+XG4gICAgaWYgci5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJbU3RhY2tfb3JfY291bnRlci5wb3BfZXhuXSBvZiBlbXB0eSBzdGFja1wiXTtcbiAgICByLmxlbmd0aCA8LSByLmxlbmd0aCAtIDFcbjs7XG5cbmxldCBpdGVyICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBhIC0+IHVuaXQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5pdGVyIHMgfmZcbiAgfCBDb3VudGVyIHIgLT5cbiAgICBmb3IgXyA9IDEgdG8gci5sZW5ndGggZG9cbiAgICAgIGYgKClcbiAgICBkb25lXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG50eXBlICdhIG91dGNvbWUgPVxuICBbIGBPayBvZiAnYVxuICB8IGBBYm9ydGVkXG4gIHwgYFJhaXNlZCBvZiBleG5cbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIEludGVybmFsX2pvYiA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdiIERlZmVycmVkLnQpIC0+ICdhIHQgKiAnYiBvdXRjb21lIERlZmVycmVkLnRcblxuICAoKiBFdmVyeSBpbnRlcm5hbCBqb2Igd2lsbCBldmVudHVhbGx5IGJlIGVpdGhlciBbcnVuXSBvciBbYWJvcnRdZWQsIGJ1dCBub3QgYm90aC4gKilcblxuICB2YWwgcnVuIDogJ2EgdCAtPiAnYSAtPiBbIGBPayB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gIHZhbCBhYm9ydCA6IF8gdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogWyBgQWJvcnQgfCBgU3RhcnQgb2YgJ2EgXSBJdmFyLnRcbiAgICA7IG91dGNvbWUgOiBbIGBPayB8IGBBYm9ydGVkIHwgYFJhaXNlZCBdIERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSB3b3JrID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2glYmluZCBJdmFyLnJlYWQgc3RhcnQgd2l0aFxuICAgICAgfCBgQWJvcnQgLT4gcmV0dXJuIGBBYm9ydGVkXG4gICAgICB8IGBTdGFydCBhIC0+XG4gICAgICAgIChtYXRjaCVtYXBcbiAgICAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgICAgIChmdW4gKCkgLT4gd29yayBhKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBPayBhIC0+IGBPayBhXG4gICAgICAgICB8IEVycm9yIGV4biAtPiBgUmFpc2VkIGV4bilcbiAgICBpblxuICAgIGxldCBvdXRjb21lID1cbiAgICAgIG1hdGNoJW1hcCByZXN1bHQgd2l0aFxuICAgICAgfCBgT2sgXyAtPiBgT2tcbiAgICAgIHwgYEFib3J0ZWQgLT4gYEFib3J0ZWRcbiAgICAgIHwgYFJhaXNlZCBfIC0+IGBSYWlzZWRcbiAgICBpblxuICAgIGxldCB0ID0geyBzdGFydDsgb3V0Y29tZSB9IGluXG4gICAgdCwgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHJ1biB0IGEgPVxuICAgIEl2YXIuZmlsbCB0LnN0YXJ0IChgU3RhcnQgYSk7XG4gICAgbWF0Y2glbWFwIHQub3V0Y29tZSB3aXRoXG4gICAgfCBgQWJvcnRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChgT2sgfCBgUmFpc2VkKSBhcyB4IC0+IHhcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9IEl2YXIuZmlsbCB0LnN0YXJ0IGBBYm9ydFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgY29udGludWVfb25fZXJyb3IgOiBib29sXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9icyA6IGludFxuICA7ICgqIFtqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VdIGhvbGRzIHJlc291cmNlcyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGluIHVzZSBieSBhXG4gICAgICAgcnVubmluZyBqb2IuICopXG4gICAgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIDogJ2EgU3RhY2tfb3JfY291bnRlci50XG4gIDtcbiAgICAoKiBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyB0aGUgcXVldWUgb2Ygam9icyB0aGF0IGhhdmVuJ3QgeWV0IHN0YXJ0ZWQuICopXG4gICAgam9ic193YWl0aW5nX3RvX3N0YXJ0IDogJ2EgSW50ZXJuYWxfam9iLnQgUXVldWUudFxuICA7ICgqIFswIDw9IG51bV9qb2JzX3J1bm5pbmcgPD0gbWF4X2NvbmN1cnJlbnRfam9ic10uICopXG4gICAgbXV0YWJsZSBudW1fam9ic19ydW5uaW5nIDogaW50XG4gIDsgKCogW2NhcGFjaXR5X2F2YWlsYWJsZV0gaXMgW1NvbWUgaXZhcl0gaWYgdXNlciBjb2RlIGhhcyBjYWxsZWQgW2NhcGFjaXR5X2F2YWlsYWJsZSB0XVxuICAgICAgIGFuZCBpcyB3YWl0aW5nIHRvIGJlIG5vdGlmaWVkIHdoZW4gY2FwYWNpdHkgaXMgYXZhaWxhYmxlIGluIHRoZSB0aHJvdHRsZS5cbiAgICAgICBbbWF5YmVfc3RhcnRfam9iXSB3aWxsIGZpbGwgW2l2YXJdIHdoZW4gY2FwYWNpdHkgYmVjb21lcyBhdmFpbGFibGUsIGkuZS4gd2hlblxuICAgICAgIFtqb2JzX3dhaXRpbmdfdG9fc3RhcnRdIGlzIGVtcHR5IGFuZCBbbnVtX2pvYnNfcnVubmluZyA8IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgY2FwYWNpdHlfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gIDsgKCogW2lzX2RlYWRdIGlzIHRydWUgaWYgW3RdIHdhcyBraWxsZWQgZHVlIHRvIGEgam9iIHJhaXNpbmcgYW4gZXhjZXB0aW9uIG9yIFtraWxsIHRdXG4gICAgICAgYmVpbmcgY2FsbGVkLiAqKVxuICAgIG11dGFibGUgaXNfZGVhZCA6IGJvb2xcbiAgOyAoKiBbY2xlYW5zXSBob2xkcyBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjbGVhbiBlYWNoIHJlc291cmNlIHdoZW4gW3RdIGlzXG4gICAgICAga2lsbGVkLiAqKVxuICAgIG11dGFibGUgY2xlYW5zIDogKCdhIC0+IHVuaXQgRGVmZXJyZWQudCkgbGlzdFxuICA7ICgqIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBpcyB0aGUgbnVtYmVyIG9mIHJlc291cmNlcyB3aG9zZSBjbGVhbiBmdW5jdGlvbnMgaGF2ZVxuICAgICAgIG5vdCB5ZXQgY29tcGxldGVkLiAgV2hpbGUgW3RdIGlzIGFsaXZlLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9XG4gICAgICAgbWF4X2NvbmN1cnJlbnRfam9ic10uICBPbmNlIFt0XSBpcyBraWxsZWQsIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBkZWNyZWFzZXMgdG9cbiAgICAgICB6ZXJvIG92ZXIgdGltZSBhcyB0aGUgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIG11dGFibGUgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA6IGludFxuICA7ICgqIFtjbGVhbmVkXSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gcmVhY2hlcyB6ZXJvLFxuICAgICAgIGkuZS4gYWZ0ZXIgW3RdIGlzIGtpbGxlZCBhbmQgYWxsIGl0cyBjbGVhbiBmdW5jdGlvbnMgY29tcGxldGUuICopXG4gICAgY2xlYW5lZCA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb250aW51ZV9vbl9lcnJvcjppZ25vcmVcbiAgICAgIH5tYXhfY29uY3VycmVudF9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfY29uY3VycmVudF9qb2JzIC0+IGFzc2VydCAobWF4X2NvbmN1cnJlbnRfam9icyA+IDApKSlcbiAgICAgIH5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2U6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSAtPlxuICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLml0ZXIgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOmludmFyaWFudF9hO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZVxuICAgICAgICAgICAgID0gaWYgdC5pc19kZWFkIHRoZW4gMCBlbHNlIHQubWF4X2NvbmN1cnJlbnRfam9icyAtIHQubnVtX2pvYnNfcnVubmluZykpKVxuICAgICAgfmpvYnNfd2FpdGluZ190b19zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvbiBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgLT5cbiAgICAgICAgICAgaWYgdC5pc19kZWFkIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBqb2JzX3dhaXRpbmdfdG9fc3RhcnQpKSlcbiAgICAgIH5udW1fam9ic19ydW5uaW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fam9ic19ydW5uaW5nIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fam9ic19ydW5uaW5nIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+Y2FwYWNpdHlfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgfmlzX2RlYWQ6aWdub3JlXG4gICAgICB+Y2xlYW5zOmlnbm9yZVxuICAgICAgfm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPD0gdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgICAgICAgICAgaWYgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIGFzc2VydCB0LmlzX2RlYWQpKVxuICAgICAgfmNsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNsZWFuZWQgLT5cbiAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIGNsZWFuZWQgdGhlbiBhc3NlcnQgKHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IDApKSlcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlRocm90dGxlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IF8gdCldXG47O1xuXG5tb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAna2luZCkgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSB0XG5lbmRcblxubGV0IG51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQgdCA9IFF1ZXVlLmxlbmd0aCB0LmpvYnNfd2FpdGluZ190b19zdGFydFxuXG5sZXQgY2xlYW5fcmVzb3VyY2UgdCBhID1cbiAgRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHQuY2xlYW5zIH5mOihmdW4gZiAtPiBmIGEpKVxuICA+Pj4gZnVuICgpIC0+XG4gIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8LSB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLSAxO1xuICBpZiB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwIHRoZW4gSXZhci5maWxsIHQuY2xlYW5lZCAoKVxuOztcblxubGV0IGtpbGwgdCA9XG4gIGlmIG5vdCB0LmlzX2RlYWRcbiAgdGhlbiAoXG4gICAgdC5pc19kZWFkIDwtIHRydWU7XG4gICAgUXVldWUuaXRlciB0LmpvYnNfd2FpdGluZ190b19zdGFydCB+ZjpJbnRlcm5hbF9qb2IuYWJvcnQ7XG4gICAgUXVldWUuY2xlYXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ7XG4gICAgU3RhY2tfb3JfY291bnRlci5pdGVyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOihmdW4gYSAtPiBjbGVhbl9yZXNvdXJjZSB0IGEpO1xuICAgIFN0YWNrX29yX2NvdW50ZXIuY2xlYXIgdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UpXG47O1xuXG5sZXQgYXRfa2lsbCB0IGYgPVxuICAoKiBXZSBwcmVzZXJ2ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBleGNlcHRpb25zIHJhaXNlZCBieSBbZl0gZ28gdG8gdGhlIG1vbml0b3JcbiAgICAgaW4gZWZmZWN0IHdoZW4gW2F0X2tpbGxdIHdhcyBjYWxsZWQuICopXG4gIGxldCBmID0gdW5zdGFnZSAoTW9uaXRvci5FeHBvcnRlZF9mb3Jfc2NoZWR1bGVyLnByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JyBmKSBpblxuICB0LmNsZWFucyA8LSBmIDo6IHQuY2xlYW5zXG47O1xuXG5sZXQgY2xlYW5lZCB0ID0gSXZhci5yZWFkIHQuY2xlYW5lZFxuXG5sZXQgcmVjIHN0YXJ0X2pvYiB0ID1cbiAgYXNzZXJ0IChub3QgdC5pc19kZWFkKTtcbiAgYXNzZXJ0ICh0Lm51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICBhc3NlcnQgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpKTtcbiAgbGV0IGpvYiA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGluXG4gIHQubnVtX2pvYnNfcnVubmluZyA8LSB0Lm51bV9qb2JzX3J1bm5pbmcgKyAxO1xuICBsZXQgam9iX3Jlc291cmNlID0gU3RhY2tfb3JfY291bnRlci5wb3BfZXhuIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGluXG4gIEludGVybmFsX2pvYi5ydW4gam9iIGpvYl9yZXNvdXJjZVxuICA+Pj4gZnVuIHJlcyAtPlxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nIC0gMTtcbiAgKG1hdGNoIHJlcyB3aXRoXG4gICB8IGBPayAtPiAoKVxuICAgfCBgUmFpc2VkIC0+IGlmIG5vdCB0LmNvbnRpbnVlX29uX2Vycm9yIHRoZW4ga2lsbCB0KTtcbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gY2xlYW5fcmVzb3VyY2UgdCBqb2JfcmVzb3VyY2VcbiAgZWxzZSAoXG4gICAgU3RhY2tfb3JfY291bnRlci5wdXNoIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGpvYl9yZXNvdXJjZTtcbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KVxuICAgIHRoZW4gc3RhcnRfam9iIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGl2YXIgLT5cbiAgICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICAgIHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIE5vbmUpKVxuOztcblxubGV0IGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGxldCBtYXhfY29uY3VycmVudF9qb2JzID0gU3RhY2tfb3JfY291bnRlci5sZW5ndGggam9iX3Jlc291cmNlcyBpblxuICB7IGNvbnRpbnVlX29uX2Vycm9yXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA9IGpvYl9yZXNvdXJjZXNcbiAgOyBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgPSBRdWV1ZS5jcmVhdGUgKClcbiAgOyBudW1fam9ic19ydW5uaW5nID0gMFxuICA7IGNhcGFjaXR5X2F2YWlsYWJsZSA9IE5vbmVcbiAgOyBpc19kZWFkID0gZmFsc2VcbiAgOyBjbGVhbnMgPSBbXVxuICA7IG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSBtYXhfY29uY3VycmVudF9qb2JzXG4gIDsgY2xlYW5lZCA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVfd2l0aCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3IgKFN0YWNrX29yX2NvdW50ZXIub2ZfbGlzdCBqb2JfcmVzb3VyY2VzKVxuOztcblxubW9kdWxlIFNlcXVlbmNlciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBhID0gY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIFsgYSBdXG5lbmRcblxubGV0IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3Igfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBpZiBtYXhfY29uY3VycmVudF9qb2JzIDw9IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRocm90dGxlLmNyZWF0ZSByZXF1aXJlcyBwb3NpdGl2ZSBtYXhfY29uY3VycmVudF9qb2JzLCBidXQgZ290XCJcbiAgICAgICAgICAobWF4X2NvbmN1cnJlbnRfam9icyA6IGludCldO1xuICBjcmVhdGVfaW50ZXJuYWxcbiAgICB+Y29udGludWVfb25fZXJyb3JcbiAgICAoU3RhY2tfb3JfY291bnRlci5jcmVhdGVfY291bnRlciB+bGVuZ3RoOm1heF9jb25jdXJyZW50X2pvYnMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBpbnRlcm5hbF9qb2IgOiAnYSBJbnRlcm5hbF9qb2IudFxuICAgIDsgcmVzdWx0IDogWyBgT2sgb2YgJ2IgfCBgQWJvcnRlZCB8IGBSYWlzZWQgb2YgZXhuIF0gRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgcmVzdWx0IHQgPSB0LnJlc3VsdFxuICBsZXQgYWJvcnQgdCA9IEludGVybmFsX2pvYi5hYm9ydCB0LmludGVybmFsX2pvYlxuXG4gIGxldCBjcmVhdGUgZiA9XG4gICAgbGV0IGludGVybmFsX2pvYiwgcmVzdWx0ID0gSW50ZXJuYWxfam9iLmNyZWF0ZSBmIGluXG4gICAgeyBpbnRlcm5hbF9qb2I7IHJlc3VsdCB9XG4gIDs7XG5lbmRcblxubGV0IGVucXVldWUnIHQgZiA9XG4gIGxldCBqb2IgPSBKb2IuY3JlYXRlIGYgaW5cbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gSm9iLmFib3J0IGpvYlxuICBlbHNlIChcbiAgICBRdWV1ZS5lbnF1ZXVlIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGpvYi5pbnRlcm5hbF9qb2I7XG4gICAgaWYgdC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzIHRoZW4gc3RhcnRfam9iIHQpO1xuICBKb2IucmVzdWx0IGpvYlxuOztcblxubGV0IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCByZXN1bHQgPVxuICBtYXRjaCByZXN1bHQgd2l0aFxuICB8IGBPayBhIC0+IGFcbiAgfCBgQWJvcnRlZCAtPiByYWlzZV9zIFslbWVzc2FnZSBcInRocm90dGxlIGFib3J0ZWQgam9iXCJdXG4gIHwgYFJhaXNlZCBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGYgPSBlbnF1ZXVlJyB0IGYgPj58IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdFxuXG5sZXQgZW5xdWV1ZV9leGNsdXNpdmUgdCBmID1cbiAgbGV0IG4gPSB0Lm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgaWYgSW50LiggPj0gKSBuIDFfMDAwXzAwMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiW2VucXVldWVfZXhjbHVzaXZlXSB3YXMgY2FsbGVkIHdpdGggYSB2ZXJ5IGxhcmdlIHZhbHVlIG9mIFxcXG4gICAgICAgICBbbWF4X2NvbmN1cnJlbnRfam9ic10uIFRoaXMgZG9lc24ndCB3b3JrLlwiXTtcbiAgbGV0IGRvbmVfID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgYXNzZXJ0IChuID4gMCk7XG4gIGxldCBmX3BsYWNlaG9sZGVyIF9zbG90ID0gSXZhci5yZWFkIGRvbmVfIGluXG4gIGZvciBfID0gMSB0byBuIC0gMSBkb1xuICAgIGRvbid0X3dhaXRfZm9yIChlbnF1ZXVlIHQgZl9wbGFjZWhvbGRlcilcbiAgZG9uZTtcbiAgbGV0JW1hcCByZXN1bHQgPSBlbnF1ZXVlJyB0IChmdW4gX3Nsb3QgLT4gZiAoKSkgaW5cbiAgSXZhci5maWxsIGRvbmVfICgpO1xuICBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0XG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93IH5ob3cgfmYgPVxuICBzdGFnZVxuICAgIChtYXRjaCBob3cgd2l0aFxuICAgICB8IGBQYXJhbGxlbCAtPiBmXG4gICAgIHwgKGBTZXF1ZW50aWFsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgIHwgYFNlcXVlbnRpYWwgLT4gMVxuICAgICAgICAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+IG1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICBpblxuICAgICAgIGxldCB0ID0gY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSB+bWF4X2NvbmN1cnJlbnRfam9icyBpblxuICAgICAgIGZ1biBhIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYSkpXG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYTEgYTIgLT4gZW5xdWV1ZSB0IChmdW4gKCkgLT4gZiBhMSBhMikpXG47O1xuXG5sZXQgcHJpb3Jfam9ic19kb25lIHQgPVxuICAoKiBXZSBxdWV1ZSBbdC5tYXhfY29uY3VycmVudF9qb2JzXSBkdW1teSBqb2JzIGFuZCB3aGVuIHRoZXkgYXJlIGFsbCBzdGFydGVkIHdlIGtub3dcbiAgICAgdGhhdCBhbGwgcHJpb3Igam9icyBmaW5pc2hlZC4gIFdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBkdW1teSBqb2JzIHdhaXQgZm9yIHRoZSBsYXN0IG9uZVxuICAgICB0byBnZXQgc3RhcnRlZCBiZWZvcmUgZmluaXNoaW5nLiAqKVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBhbGxfZHVtbXlfam9ic19ydW5uaW5nIC0+XG4gICAgbGV0IGR1bW15X2pvYnNfcnVubmluZyA9IHJlZiAwIGluXG4gICAgZm9yIF8gPSAxIHRvIHQubWF4X2NvbmN1cnJlbnRfam9icyBkb1xuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKGVucXVldWUgdCAoZnVuIF8gLT5cbiAgICAgICAgICAgaW5jciBkdW1teV9qb2JzX3J1bm5pbmc7XG4gICAgICAgICAgIGlmICFkdW1teV9qb2JzX3J1bm5pbmcgPSB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBJdmFyLmZpbGwgYWxsX2R1bW15X2pvYnNfcnVubmluZyAoKTtcbiAgICAgICAgICAgSXZhci5yZWFkIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcpKVxuICAgIGRvbmUpXG47O1xuXG5sZXQgY2FwYWNpdHlfYXZhaWxhYmxlIHQgPVxuICBpZiBudW1fam9ic19ydW5uaW5nIHQgPCBtYXhfY29uY3VycmVudF9qb2JzIHRcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggdC5jYXBhY2l0eV9hdmFpbGFibGUgd2l0aFxuICAgIHwgU29tZSBpdmFyIC0+IEl2YXIucmVhZCBpdmFyXG4gICAgfCBOb25lIC0+IERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT4gdC5jYXBhY2l0eV9hdmFpbGFibGUgPC0gU29tZSBpdmFyKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxuXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyMS5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyMS53YWxsX2Nsb2NrXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU2NoZWR1bGVyXG5cbmxldCBlbnF1ZXVlX2pvYiBleGVjdXRpb25fY29udGV4dCBmIGEgPSBlbnF1ZXVlICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfam9iIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSlcbmxldCBjeWNsZV9jb3VudCAoKSA9IGN5Y2xlX2NvdW50ICh0ICgpKVxubGV0IGN5Y2xlX3N0YXJ0X25zICgpID0gY3ljbGVfc3RhcnQgKHQgKCkpXG5sZXQgY3ljbGVfc3RhcnQgKCkgPSBUaW1lX25zLnRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCAoY3ljbGVfc3RhcnRfbnMgKCkpXG5sZXQgY3ljbGVfdGltZXNfbnMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOkZuLmlkXG5sZXQgY3ljbGVfdGltZXMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOlRpbWVfbnMuU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RcbmxldCB0b3RhbF9jeWNsZV90aW1lICgpID0gdG90YWxfY3ljbGVfdGltZSAodCAoKSlcbmxldCBsYXN0X2N5Y2xlX3RpbWUgKCkgPSBsYXN0X2N5Y2xlX3RpbWUgKHQgKCkpXG5sZXQgbG9uZ19jeWNsZXMgfmF0X2xlYXN0ID0gbG9uZ19jeWNsZXMgKHQgKCkpIH5hdF9sZWFzdFxubGV0IGV2ZW50X3ByZWNpc2lvbl9ucyAoKSA9IGV2ZW50X3ByZWNpc2lvbiAodCAoKSlcbmxldCBldmVudF9wcmVjaXNpb24gKCkgPSBUaW1lX25zLlNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChldmVudF9wcmVjaXNpb25fbnMgKCkpXG5cbmxldCBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgaSA9XG4gIHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAodCAoKSkgaVxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICgpID0gbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKHQgKCkpXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIGJvb2wgPSBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgKHQgKCkpIGJvb2xcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCAoKSA9IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kICh0ICgpKVxubGV0IHlpZWxkICgpID0geWllbGQgKHQgKCkpXG5cbmxldCB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/bWF5X3JldHVybl9pbW1lZGlhdGVseSAoKSA9XG4gIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID9tYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICh0ICgpKVxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgbGV0IHlpZWxkX2V2ZXJ5ID0gU3RhZ2VkLnVuc3RhZ2UgKHlpZWxkX2V2ZXJ5IH5uKSBpblxuICBsZXQgdCA9IHQgKCkgaW5cbiAgc3RhZ2UgKGZ1biAoKSAtPiB5aWVsZF9ldmVyeSB0KVxuOztcblxubGV0IG51bV9qb2JzX3J1biAoKSA9IG51bV9qb2JzX3J1biAodCAoKSlcbmxldCBudW1fcGVuZGluZ19qb2JzICgpID0gbnVtX3BlbmRpbmdfam9icyAodCAoKSlcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiA9IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW5cbiAgbGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgKCkgPSBsYXN0X2N5Y2xlX251bV9qb2JzICh0ICgpKVxuICBsZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IGYgPSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgKHQgKCkpIH5mXG4gIGxldCBydW5fZXZlcnlfY3ljbGVfZW5kIGYgPSBydW5fZXZlcnlfY3ljbGVfZW5kICh0ICgpKSB+ZlxuICBsZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgfmYgPSBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayAodCAoKSkgfmZcbiAgbGV0IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayB+ZiA9IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayAodCAoKSkgfmZcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuIGhhbmRsZSA9XG4gICAgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuICh0ICgpKSBoYW5kbGVcbiAgOztcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biBoYW5kbGUgPVxuICAgIHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gKHQgKCkpIGhhbmRsZVxuICA7O1xuXG4gIGxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IH5mXG4gIDs7XG5cbiAgbGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIGV4ZWN1dGlvbl9jb250ZXh0IH5mIHggPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxICh0ICgpKSBleGVjdXRpb25fY29udGV4dCB+ZiB4XG4gIDs7XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBTY2hlZHVsZXJcbiIsIigqKiBTY2hlZHVsZSBqb2JzIHRvIHJ1biBhdCBhIHRpbWUgaW4gdGhlIGZ1dHVyZS5cblxuICAgIFRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIHVzZXMgYSBoZWFwIG9mIGV2ZW50cywgb25lIGZvciBlYWNoIGpvYiB0aGF0IG5lZWRzIHRvXG4gICAgcnVuIGluIHRoZSBmdXR1cmUuICBUaGUgQXN5bmMgc2NoZWR1bGVyIGlzIHJlc3BvbnNpYmxlIGZvciB3YWtpbmcgdXAgYXQgdGhlIHJpZ2h0IHRpbWVcbiAgICB0byBydW4gdGhlIGpvYnMuICopXG5cbm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgVGltZW91dFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDbG9jayA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICAoKiogW3J1bl9hdCB0aW1lIGYgYV0gcnVucyBbZiBhXSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIFt0aW1lXS4gIElmIFt0aW1lXSBpcyBpbiB0aGVcbiAgICAgIHBhc3QsIHRoZW4gW3J1bl9hdF0gd2lsbCBpbW1lZGlhdGVseSBzY2hlZHVsZSBhIGpvYiBbdF0gdGhhdCB3aWxsIHJ1biBbZiBhXS4gIEluIG5vXG4gICAgICBzaXR1YXRpb24gd2lsbCBbcnVuX2F0XSBhY3R1YWxseSBjYWxsIFtmXSBpdHNlbGYuICBUaGUgY2FsbCB0byBbZl0gd2lsbCBhbHdheXMgYmUgaW5cbiAgICAgIGFub3RoZXIgam9iLiAqKVxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCoqIFtydW5fYWZ0ZXJdIGlzIGxpa2UgW3J1bl9hdF0sIGV4Y2VwdCB0aGF0IG9uZSBzcGVjaWZpZXMgYSB0aW1lIHNwYW4gcmF0aGVyIHRoYW4gYW5cbiAgICAgIGFic29sdXRlIHRpbWUuICopXG4gIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqKiBbYXQgdGltZV0gcmV0dXJucyBhIGRlZmVycmVkIFtkXSB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYXMgc29vbiBhcyBwb3NzaWJsZVxuICAgICAgYWZ0ZXIgW3RpbWVdLiAqKVxuICB2YWwgYXQgOiBUaW1lLnQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFthZnRlcl0gaXMgbGlrZSBbYXRdLCBleGNlcHQgdGhhdCBvbmUgc3BlY2lmaWVzIGEgdGltZSBzcGFuIHJhdGhlciB0aGFuIGFuIGFic29sdXRlXG4gICAgICB0aW1lLiAqKVxuICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3dpdGhfdGltZW91dCBzcGFuIGRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYWZ0ZXIgZWl0aGVyXG4gICAgICBbc3Bhbl0gZWxhcHNlcyBvciBbZF0gaXMgZGV0ZXJtaW5lZCwgcmV0dXJuaW5nIGVpdGhlciBbYFRpbWVvdXRdIG9yIFtgUmVzdWx0XVxuICAgICAgZGVwZW5kaW5nIG9uIHdoaWNoIG9uZSBzdWNjZWVkZWQgZmlyc3QuICBBdCB0aGUgdGltZSB0aGUgcmV0dXJuZWQgZGVmZXJyZWQgYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZCwgYm90aCB0aGluZ3MgbWF5IGhhdmUgaGFwcGVuZWQsIGluIHdoaWNoIGNhc2UgW2BSZXN1bHRdIGlzIGdpdmVuXG4gICAgICBwcmVmZXJlbmNlLiAqKVxuICB2YWwgd2l0aF90aW1lb3V0IDogVGltZS5TcGFuLnQgLT4gJ2EgRGVmZXJyZWQudCAtPiAnYSBPcl90aW1lb3V0LnQgRGVmZXJyZWQudFxuXG4gICgqKiBFdmVudHMgcHJvdmlkZSB2YXJpYW50cyBvZiBbcnVuX2F0XSBhbmQgW3J1bl9hZnRlcl0gd2l0aCB0aGUgYWJpbGl0eSB0byBhYm9ydCBvclxuICAgICAgcmVzY2hlZHVsZSBhbiBldmVudCB0aGF0IGhhc24ndCB5ZXQgaGFwcGVuZWQuICBPbmNlIGFuIGV2ZW50IGhhcHBlbnMgb3IgaXMgYWJvcnRlZCxcbiAgICAgIEFzeW5jIGRvZXNuJ3QgdXNlIGFueSBzcGFjZSBmb3IgdHJhY2tpbmcgaXQuICopXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgICgqKiBJZiBbc3RhdHVzXSByZXR1cm5zIFtTY2hlZHVsZWRfYXQgdGltZV0sIGl0IGlzIHBvc3NpYmxlIHRoYXQgW3RpbWUgPCBUaW1lLm5vdyAoKV1cbiAgICAgICAgaWYgQXN5bmMncyBzY2hlZHVsZXIgaGFzbid0IHlldCBnb3R0ZW4gdGhlIGNoYW5jZSB0byB1cGRhdGUgaXRzIGNsb2NrLCBlLmcuLCBkdWVcbiAgICAgICAgdG8gdXNlciBqb2JzIHJ1bm5pbmcuICopXG4gICAgdmFsIHN0YXR1cyA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgU3RhdHVzLnRcblxuICAgICgqKiBMZXQgW3QgPSBydW5fYXQgdGltZSBmIHpdLiAgQXQgW3RpbWVdLCB0aGlzIHJ1bnMgW2Ygel0gYW5kIHRyYW5zaXRpb25zIFtzdGF0dXMgdF1cbiAgICAgICAgdG8gW0hhcHBlbmVkIGhdLCB3aGVyZSBbaF0gaXMgcmVzdWx0IG9mIFtmIHpdLlxuXG4gICAgICAgIE1vcmUgcHJlY2lzZWx5LCBhdCBbdGltZV0sIHByb3ZpZGVkIFthYm9ydCB0IGFdIGhhcyBub3QgcHJldmlvdXNseSBiZWVuIGNhbGxlZCxcbiAgICAgICAgdGhpcyB3aWxsIGNhbGwgW2Ygel0sIHdpdGggdGhlIGd1YXJhbnRlZSB0aGF0IFtzdGF0dXMgdCA9IFNjaGVkdWxlZF9hdCB0aW1lXS4gIElmXG4gICAgICAgIFtmIHpdIHJldHVybnMgW2hdIGFuZCBkaWQgbm90IGNhbGwgW2Fib3J0IHQgYV0sIHRoZW4gW3N0YXR1cyB0XSBiZWNvbWVzIFtIYXBwZW5lZFxuICAgICAgICBoXS4gIElmIFtmIHpdIGNhbGxzIFthYm9ydCB0IGFdLCB0aGVuIHRoZSByZXN1bHQgb2YgW2ZdIGlzIGlnbm9yZWQsIGFuZCBbc3RhdHVzIHRdXG4gICAgICAgIGlzIFtBYm9ydGVkIGFdLlxuXG4gICAgICAgIElmIFtmIHpdIHJhaXNlcywgdGhlbiBbc3RhdHVzIHRdIGRvZXMgbm90IHRyYW5zaXRpb24gYW5kIHJlbWFpbnMgW1NjaGVkdWxlZF9hdFxuICAgICAgICB0aW1lXSwgYW5kIHRoZSBleGNlcHRpb24gaXMgc2VudCB0byB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlbiBbcnVuX2F0XSB3YXNcbiAgICAgICAgY2FsbGVkLiAqKVxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuXG4gICAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LkFib3J0X3Jlc3VsdFxuXG4gICAgKCoqIFthYm9ydCB0XSBjaGFuZ2VzIFtzdGF0dXMgdF0gdG8gW0Fib3J0ZWRdIGFuZCByZXR1cm5zIFtPa10sIHVubGVzcyBbdF1cbiAgICAgICAgcHJldmlvdXNseSBoYXBwZW5lZCBvciB3YXMgcHJldmlvdXNseSBhYm9ydGVkLiAqKVxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcblxuICAgICgqKiBbYWJvcnRfZXhuIHQgYV0gcmV0dXJucyBbdW5pdF0gaWYgW2Fib3J0IHQgYSA9IGBPa10sIGFuZCBvdGhlcndpc2UgcmFpc2VzLiAqKVxuICAgIHZhbCBhYm9ydF9leG4gOiAoJ2EsICdoKSB0IC0+ICdhIC0+IHVuaXRcblxuICAgICgqKiBbYWJvcnRfaWZfcG9zc2libGUgdCBhID0gaWdub3JlIChhYm9ydCB0IGEpXS4gKilcbiAgICB2YWwgYWJvcnRfaWZfcG9zc2libGUgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgKCoqIFtyZXNjaGVkdWxlX2F0IHRdIGFuZCBbcmVzY2hlZHVsZV9hZnRlciB0XSBjaGFuZ2UgdGhlIHRpbWUgdGhhdCBbdF0gd2lsbCBmaXJlLCBpZlxuICAgICAgICBwb3NzaWJsZSwgYW5kIGlmIG5vdCwgZ2l2ZSBhIHJlYXNvbiB3aHkuICBMaWtlIFtydW5fYXRdLCBpZiB0aGUgcmVxdWVzdGVkIHRpbWUgaXNcbiAgICAgICAgaW4gdGhlIHBhc3QsIHRoZSBldmVudCB3aWxsIGJlIHNjaGVkdWxlZCB0byBydW4gaW1tZWRpYXRlbHkuICBJZiBbcmVzY2hlZHVsZV9hdCB0XG4gICAgICAgIHRpbWUgPSBPa10sIHRoZW4gc3Vic2VxdWVudGx5IFtzY2hlZHVsZWRfYXQgdCA9IHRpbWVdLiAgKilcbiAgICB2YWwgcmVzY2hlZHVsZV9hdCA6ICgnYSwgJ2gpIHQgLT4gVGltZS50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG5cbiAgICAoKiogW2F0IHRpbWVdICAgIGlzIFtydW5fYXQgICAgdGltZSBpZ25vcmUgKCldLlxuICAgICAgICBbYWZ0ZXIgdGltZV0gaXMgW3J1bl9hZnRlciB0aW1lIGlnbm9yZSAoKV0uXG5cbiAgICAgICAgWW91IHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSB0aGUgW3J1bl8qXSBmdW5jdGlvbnMsIHdoaWNoIGFsbG93IHlvdSB0b1xuICAgICAgICBzeW5jaHJvbm91c2x5IHVwZGF0ZSBzdGF0ZSB2aWEgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHdoZW4gdGhlIGV2ZW50XG4gICAgICAgIHRyYW5zaXRpb25zIHRvIFtIYXBwZW5lZF0uICBUaGF0IGlzLCB0aGVyZSBpcyBhbiBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBydW5fYXQgdGltZSBmICgpIF19XG5cbiAgICAgICAgYW5kOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBhdCB0aW1lIGluXG4gICAgICAgICAgZmlyZWQgdFxuICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gZiAoKVxuICAgICAgICAgIHwgQWJvcnRlZCAoKSAtPiAoKSBdfVxuXG4gICAgICAgIFdpdGggW3J1bl9hdF0sIGlmIFtzdGF0dXMgdCA9IEhhcHBlbmVkXSwgb25lIGtub3dzIHRoYXQgW2ZdIGhhcyBydW4uICBXaXRoIFthdF1cbiAgICAgICAgYW5kIFtmaXJlZF0sIG9uZSBkb2VzIG5vdCBrbm93IHdoZXRoZXIgW2ZdIGhhcyB5ZXQgcnVuOyBpdCBtYXkgc3RpbGwgYmUgc2NoZWR1bGVkXG4gICAgICAgIHRvIHJ1bi4gIFRodXMsIHdpdGggW2F0XSBhbmQgW2ZpcmVkXSwgaXQgaXMgZWFzeSB0byBpbnRyb2R1Y2UgYSByYWNlLiAgRm9yXG4gICAgICAgIGV4YW1wbGUsIGNvbnNpZGVyIHRoZXNlIHR3byBjb2RlIHNuaXBwZXRzOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5hZnRlciAoc2VjIDIuKSBpblxuICAgICAgICAgIHVwb24gKEV2ZW50LmZpcmVkIHQpIChmdW5jdGlvblxuICAgICAgICAgICAgfCBBYm9ydGVkICgpIC0+ICgpXG4gICAgICAgICAgICB8IEhhcHBlbmVkICgpIC0+IHByaW50ZiBcIlRpbWVyIGZpcmVkXCIpO1xuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5ydW5fYWZ0ZXIgKHNlYyAyLikgcHJpbnRmIFwiVGltZXIgZmlyZWRcIiBpblxuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIEluIGJvdGggc25pcHBldHMsIGlmIFtFdmVudC5hYm9ydF0gcmV0dXJucyBbT2tdLCBcIlRpbWVyIGZpcmVkXCIgaXMgbmV2ZXIgcHJpbnRlZC5cbiAgICAgICAgSG93ZXZlciwgdGhlIGZpcnN0IHNuaXBwZXQgbWlnaHQgcHJpbnQgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiIGFuZCB0aGVuXG4gICAgICAgIFwiVGltZXIgZmlyZWRcIi4gIFRoaXMgY29uZnVzZWQgb3JkZXJpbmcgY2Fubm90IGhhcHBlbiB3aXRoIFtFdmVudC5ydW5fYWZ0ZXJdLiAqKVxuICAgIHZhbCBhdCA6IFRpbWUudCAtPiAoXywgdW5pdCkgdFxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgZW5kXG5cbiAgKCoqIFthdF92YXJ5aW5nX2ludGVydmFscyBmID9zdG9wXSByZXR1cm5zIGEgc3RyZWFtIHdob3NlIG5leHQgZWxlbWVudCBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgW2YgKCldIGFuZCB3YWl0aW5nIGZvciB0aGF0IGFtb3VudCBvZiB0aW1lLCBhbmQgdGhlbiBsb29waW5nXG4gICAgICB0byBkZXRlcm1pbmUgc3Vic2VxdWVudCBlbGVtZW50cy4gIFRoZSBzdHJlYW0gd2lsbCBlbmQgYWZ0ZXIgW3N0b3BdIGJlY29tZXNcbiAgICAgIGRldGVybWluZWQuICopXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcblxuICAoKiogW2F0X2ludGVydmFscyBpbnRlcnZhbCA/c3RhcnQgP3N0b3BdIHJldHVybnMgYSBzdHJlYW0gd2hvc2UgZWxlbWVudHMgd2lsbCBiZWNvbWVcbiAgICAgIGRldGVybWluZWQgYXQgbm9ubmVnYXRpdmUgaW50ZWdlciBtdWx0aXBsZXMgb2YgW2ludGVydmFsXSBhZnRlciB0aGUgW3N0YXJ0XSB0aW1lLFxuICAgICAgdW50aWwgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZDpcblxuICAgICAge3ZcbiAgICAgICAgc3RhcnQgKyAwICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAxICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAyICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAzICogaW50ZXJ2YWxcbiAgICAgICAgLi4uXG4gICAgICB2fVxuXG4gICAgICBOb3RlIHRoYXQgb25seSBlbGVtZW50cyB0aGF0IGFyZSBzdHJpY3RseSBpbiB0aGUgZnV0dXJlIGV2ZXIgYmVjb21lIGRldGVybWluZWQuXG4gICAgICBJbiBwYXJ0aWN1bGFyLCBpZiBbc3RhcnRdIGlzIG5vdCBpbiB0aGUgZnV0dXJlLCBvciBbc3RhcnRdIGlzIG5vdCBwcm92aWRlZCxcbiAgICAgIHRoZW4gdGhlcmUgd2lsbCBiZSBubyBlbGVtZW50IGJlZm9yZSB0aGUgW2ludGVydmFsXSBoYXMgcGFzc2VkLlxuXG4gICAgICBJZiB0aGUgaW50ZXJ2YWwgaXMgdG9vIHNtYWxsIG9yIHRoZSBDUFUgaXMgdG9vIGxvYWRlZCwgW2F0X2ludGVydmFsc10gd2lsbCBza2lwXG4gICAgICB1bnRpbCB0aGUgbmV4dCB1cGNvbWluZyBtdWx0aXBsZSBvZiBbaW50ZXJ2YWxdIGFmdGVyIFtzdGFydF0uICopXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG5cbiAgKCoqIFtldmVyeScgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gcnVucyBbZiAoKV0gZXZlcnkgW3NwYW5dIGFtb3VudCBvZiB0aW1lIHN0YXJ0aW5nIHdoZW5cbiAgICAgIFtzdGFydF0gYmVjb21lcyBkZXRlcm1pbmVkIGFuZCBzdG9wcGluZyB3aGVuIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQuICBbZXZlcnknXVxuICAgICAgd2FpdHMgdW50aWwgdGhlIG91dGNvbWUgb2YgW2YgKCldIGJlY29tZXMgZGV0ZXJtaW5lZCBiZWZvcmUgd2FpdGluZyBmb3IgdGhlIG5leHRcbiAgICAgIFtzcGFuXS5cblxuICAgICAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0IGlmIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQsIGV2ZW4gZHVyaW5nIGV2YWx1YXRpb24gb2YgW2ZdLFxuICAgICAgdGhlbiBbZl0gd2lsbCBub3QgYmUgY2FsbGVkIGFnYWluIGJ5IGEgc3Vic2VxdWVudCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuXG5cbiAgICAgIEl0IGlzIGFuIGVycm9yIGZvciBbc3Bhbl0gdG8gYmUgbm9ucG9zaXRpdmUuXG5cbiAgICAgIFtjb250aW51ZV9vbl9lcnJvcl0gY29udHJvbHMgd2hhdCBzaG91bGQgaGFwcGVuIGlmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlXSwgaXRlcmF0aW9uIG9ubHkgY29udGludWVzIGlmIFtmXSBzdWNjZXNzZnVsbHlcbiAgICAgIHJldHVybnMgYSBkZWZlcnJlZCBhbmQgdGhhdCBkZWZlcnJlZCBpcyBkZXRlcm1pbmVkLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLCBpdGVyYXRpb24gYWxzbyBjb250aW51ZXMgaWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24uXG4gICAgICBJZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbiBhc3luY2hyb25vdXNseSwgdGhpcyBtYXkgY2F1c2UgdXMgdG8gcHJvY2VlZCB3aXRoIHRoZVxuICAgICAgbmV4dCBpdGVyYXRpb24gd2hpbGUgdGhlIHByZXZpb3VzIGNhbGwgdG8gW2ZdIGlzIHN0aWxsIHJ1bm5pbmcuXG5cbiAgICAgIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBhcmUgYWx3YXlzIHNlbnQgdG8gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW4gW2V2ZXJ5J10gd2FzXG4gICAgICBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLlxuXG4gICAgICBJZiBbZmluaXNoZWRdIGlzIHN1cHBsaWVkLCBbZXZlcnknXSB3aWxsIGZpbGwgaXQgb25jZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBiZWNvbWVcbiAgICAgIGRldGVybWluZWQ6IFtzdGFydF0sIFtzdG9wXSwgYW5kIHRoZSBvdXRjb21lIG9mIHRoZSBmaW5hbCBjYWxsIHRvIFtmXS4gKilcbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2V2ZXJ5ID9zdGFydCA/c3RvcCBzcGFuIGZdIGlzXG4gICAgICBbZXZlcnknID9zdGFydCA/c3RvcCBzcGFuIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKV0uICopXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3Agc3BhbiBmXSBydW5zIFtmKCldIGF0IGluY3JlbWVudHMgb2YgW3N0YXJ0ICsgaSAqXG4gICAgICBzcGFuXSBmb3Igbm9ubmVnYXRpdmUgaW50ZWdlcnMgW2ldLCB1bnRpbCBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLlxuICAgICAgSWYgdGhlIHJlc3VsdCBvZiBbZl0gaXMgbm90IGRldGVybWluZWQgZmFzdCBlbm91Z2ggdGhlbiB0aGUgbmV4dCBpbnRlcnZhbChzKVxuICAgICAgYXJlIHNraXBwZWQgc28gdGhhdCB0aGVyZSBhcmUgbmV2ZXIgbXVsdGlwbGUgY29uY3VycmVudCBpbnZvY2F0aW9ucyBvZiBbZl0gaW5cbiAgICAgIGZsaWdodC5cblxuICAgICAgRXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGFyZSBhbHdheXMgc2VudCB0byBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICBbcnVuX2F0X2ludGVydmFscyddIHdhcyBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLiAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW3J1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGZdIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhblxuICAgICAgICAgIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKSBdfSAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2R1cmF0aW9uX29mIGZdIGludm9rZXMgW2YgKCldIGFuZCBtZWFzdXJlcyBob3cgbG9uZyBpdCB0YWtlcyBmcm9tIHRoZSBpbnZvY2F0aW9uXG4gICAgICB0byBhZnRlciB0aGUgZGVmZXJyZWQgaXMgZGV0ZXJtaW5lZC5cblxuICAgICAgTm90ZSB0aGF0IHRoZSBtZWFzdXJlbWVudCBpcyBub3QgZXhhY3Q7IGJlY2F1c2UgaXQgaW52b2x2ZXMgYW4gYWRkaXRpb25hbCBtYXAgb24gdGhlXG4gICAgICBkZWZlcnJlZCwgdGhlIHRpbWluZyBhbHNvIGluY2x1ZGVzIHRoZSBkdXJhdGlvbiBvZiBqb2JzIGluIHRoZSBqb2IgcXVldWUgd2hlbiBbZiAoKV1cbiAgICAgIGlzIGRldGVybWluZWQuICopXG4gIHZhbCBkdXJhdGlvbl9vZiA6ICh1bml0IC0+ICdhIERlZmVycmVkLnQpIC0+ICgnYSAqIFRpbWUuU3Bhbi50KSBEZWZlcnJlZC50XG5lbmRcblxuKCoqIFtDbG9ja19kZXByZWNhdGVkXSBpcyB1c2VkIGluIFtSZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlXSB0byBjcmVhdGUgYSBjbG9ja1xuICAgIG1vZHVsZSBpbiB3aGljaCBhbGwgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkLiAqKVxubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdCA6IFRpbWUudCAtPiB1bml0IERlZmVycmVkLnQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IHVuaXQgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHdpdGhfdGltZW91dCA6IFRpbWUuU3Bhbi50IC0+ICdhIERlZmVycmVkLnQgLT4gJ2EgT3JfdGltZW91dC50IERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBJbnZhcmlhbnQudCAtPiAnYiBJbnZhcmlhbnQudCAtPiAoJ2EsICdiKSB0IEludmFyaWFudC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHNjaGVkdWxlZF9hdCA6IChfLCBfKSB0IC0+IFRpbWUudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBzdGF0dXMgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIFN0YXR1cy50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5BYm9ydF9yZXN1bHRcblxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWJvcnRfZXhuIDogKCdhLCAnaCkgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2lmX3Bvc3NpYmxlIDogKCdhLCBfKSB0IC0+ICdhIC0+IHVuaXRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgRmlyZWQgPSBUaW1lX3NvdXJjZS5FdmVudC5GaXJlZFxuXG4gICAgdmFsIGZpcmVkIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBGaXJlZC50IERlZmVycmVkLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYXQgOiAoJ2EsICdoKSB0IC0+IFRpbWUudCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYWZ0ZXIgOiAoJ2EsICdoKSB0IC0+IFRpbWUuU3Bhbi50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYXQgOiBUaW1lLnQgLT4gKF8sIHVuaXQpIHQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG4gIGVuZFxuXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZXZlcnknXG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gP2ZpbmlzaGVkOnVuaXQgSXZhci50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5XG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzJ1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZHVyYXRpb25fb2YgOiAodW5pdCAtPiAnYSBEZWZlcnJlZC50KSAtPiAoJ2EgKiBUaW1lLlNwYW4udCkgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5lbmRcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgKFxuc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTNcIl1cblxuICBtb2R1bGUgXyAoQyA6IENsb2NrKSA6IENsb2NrX2RlcHJlY2F0ZWQgPSBDXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9ja19kZXByZWNhdGVkKSA6IENsb2NrID0gQ1xuZW5kIDpcbnNpZyBlbmQpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQ2xvY2sgPSBDbG9ja19pbnRmLkNsb2NrXG5tb2R1bGUgdHlwZSBDbG9ja19kZXByZWNhdGVkID0gQ2xvY2tfaW50Zi5DbG9ja19kZXByZWNhdGVkXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gQ2xvY2tfaW50Zi5Pcl90aW1lb3V0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdGltZV9zb3VyY2UgKCkgPSAoU2NoZWR1bGVyLnQgKCkpLnRpbWVfc291cmNlIHw+IFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzXG5sZXQgYWZ0ZXIgc3BhbiA9IFRpbWVfc291cmNlLmFmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhblxubGV0IGF0IHRpbWUgPSBUaW1lX3NvdXJjZS5hdCAodGltZV9zb3VyY2UgKCkpIHRpbWVcblxubGV0IGF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wIGNvbXB1dGVfc3BhbiA9XG4gIFRpbWVfc291cmNlLmF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgY29tcHV0ZV9zcGFuXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCBpbnRlcnZhbCA9XG4gIFRpbWVfc291cmNlLmF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbFxuOztcblxubGV0IGV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgKHRpbWVfc291cmNlICgpKSBzcGFuIGZcbjs7XG5cbmxldCBldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW4gZiA9XG4gIFRpbWVfc291cmNlLmV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBzcGFuIGZcbjs7XG5cbmxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxubGV0IHJ1bl9hdCB0aW1lIGYgYSA9IFRpbWVfc291cmNlLnJ1bl9hdCAodGltZV9zb3VyY2UgKCkpIHRpbWUgZiBhXG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgaW50ZXJ2YWwgZiA9XG4gIFRpbWVfc291cmNlLnJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciAodGltZV9zb3VyY2UgKCkpIGludGVydmFsIGZcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzJ1xuICAgID9zdGFydFxuICAgID9zdG9wXG4gICAgP2NvbnRpbnVlX29uX2Vycm9yXG4gICAgKHRpbWVfc291cmNlICgpKVxuICAgIGludGVydmFsXG4gICAgZlxuOztcblxubGV0IHdpdGhfdGltZW91dCBzcGFuIGQgPSBUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgKHRpbWVfc291cmNlICgpKSBzcGFuIGRcbmxldCBkdXJhdGlvbl9vZiBmID0gVGltZV9zb3VyY2UuZHVyYXRpb25fb2YgKHRpbWVfc291cmNlICgpKSBmXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfc291cmNlLkV2ZW50XG5cbiAgbGV0IGFmdGVyIHNwYW4gPSBhZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbiAgbGV0IHJ1bl9hZnRlciBzcGFuIGYgYSA9IHJ1bl9hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZiBhXG4gIGxldCBhdCB0aW1lID0gYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG4gIGxldCBydW5fYXQgdGltZSBmIHogPSBydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgelxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSBiID1cbiAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgICAgdGhlbiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIGVsc2UgZiBpIGIgdC4oaSkgPj4+IGZ1biBiIC0+IGxvb3AgKGkgKyAxKSBiXG4gICAgaW5cbiAgICBsb29wIDAgaW5pdClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbmxldCBzZXFtYXBpIHQgfmYgPVxuICBsZXQlbWFwIGJzID0gZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPiBmIGkgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgaW5cbiAgQXJyYXkub2ZfbGlzdCAoQ29yZS5MaXN0LnJldiBicylcbjs7XG5cbmxldCBhbGwgZHMgPSBzZXFtYXBpIGRzIH5mOihmdW4gXyB4IC0+IHgpXG5sZXQgYWxsX3VuaXQgZHMgPSBEZWZlcnJlZC5pZ25vcmVfbSAoZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZCkpXG5cbmxldCBpdGVyaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGxfdW5pdCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsIChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuOztcblxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCBib29scyA9IG1hcGkgdCB+aG93IH5mIGluXG4gIEFycmF5Lm9mX2xpc3RfcmV2XG4gICAgKEFycmF5LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBBcnJheS5maWx0ZXJfb3B0XG5cbmxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIHQgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBBcnJheS5jb25jYXQgKEFycmF5LnRvX2xpc3QgdClcbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgIHRoZW4gcmV0dXJuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoJWJpbmQgZiBpIHQuKGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgYXV4IDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKEFycmF5LmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICBpblxuICAgIGxvb3AgdCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgYiA6OiBicylcbiAgPj58IExpc3QucmV2XG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgUGFyYWxsZWwgYXMgaG93IC0+XG4gICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBqb2JfY291bnQgLT5cbiAgICBsZXQgcmVjIGdlbl9jb21wdXRhdGlvbiBpZHggPSBmdW5jdGlvblxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgIFRocm90dGxlZC5vZl90aHVuayAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyb3R0bGVkLmJvdGhfdW5pdFxuICAgICAgICAgICAgKFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIGlkeCB4KSlcbiAgICAgICAgICAgIChnZW5fY29tcHV0YXRpb24gKGlkeCArIDEpIHhzKSlcbiAgICAgIHwgW10gLT4gVGhyb3R0bGVkLnJldHVybiAoKVxuICAgIGluXG4gICAgVGhyb3R0bGVkLnJ1biAoZ2VuX2NvbXB1dGF0aW9uIDAgdCkgfm1heF9jb25jdXJyZW50X2pvYnM6am9iX2NvdW50XG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFBhcmFsbGVsIGFzIGhvdyAtPlxuICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIGpvYl9jb3VudCAtPlxuICAgIGxldCByZWMgZ2VuX2NvbXB1dGF0aW9uIGlkeCA9IGZ1bmN0aW9uXG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgVGhyb3R0bGVkLm9mX3RodW5rIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJvdHRsZWQubWFwMlxuICAgICAgICAgICAgKFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIGlkeCB4KSlcbiAgICAgICAgICAgIChnZW5fY29tcHV0YXRpb24gKGlkeCArIDEpIHhzKVxuICAgICAgICAgICAgfmY6KGZ1biB5IHlzIC0+IHkgOjogeXMpKVxuICAgICAgfCBbXSAtPiBUaHJvdHRsZWQucmV0dXJuIFtdXG4gICAgaW5cbiAgICBUaHJvdHRsZWQucnVuIChnZW5fY29tcHV0YXRpb24gMCB0KSB+bWF4X2NvbmN1cnJlbnRfam9iczpqb2JfY291bnRcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBMaXN0LnJldiAoTGlzdC5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxubW9kdWxlIFRocm90dGxlZF9tYXAgPSBNYXAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChUaHJvdHRsZWQpXG5cbnR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTWFwLnRcblxubGV0IGNoYW5nZSB0IGsgfmYgPVxuICBsZXQlbWFwIG9wdCA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLmNoYW5nZSB0IGsgfmY6KGZ1biBfIC0+IG9wdClcbjs7XG5cbmxldCB1cGRhdGUgdCBrIH5mID1cbiAgbGV0JW1hcCBkYXRhID0gZiAoTWFwLmZpbmQgdCBrKSBpblxuICBNYXAuc2V0IHQgfmtleTprIH5kYXRhXG47O1xuXG5sZXQgaXRlcl9rZXlzIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChNYXAua2V5cyB0KSB+ZlxubGV0IGl0ZXIgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKE1hcC5kYXRhIHQpIH5mXG5sZXQgaXRlcmkgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKE1hcC50b19hbGlzdCB0KSB+ZjooZnVuIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSlcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBhbGlzdF9pbl9pbmNyZWFzaW5nX2tleV9vcmRlciA9XG4gICAgTWFwLmZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWxpc3QgLT4gKGtleSwgZGF0YSkgOjogYWxpc3QpXG4gIGluXG4gIExpc3QuZm9sZCBhbGlzdF9pbl9pbmNyZWFzaW5nX2tleV9vcmRlciB+aW5pdCB+ZjooZnVuIGFjIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSBhYylcbjs7XG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5fZGVjcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5fZGVjcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHsga2V5IDogJ2FcbiAgICA7IGRhdGEgOiAnYlxuICAgIDsgbXV0YWJsZSByZXN1bHQgOiAnYyBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cbmVuZFxuXG5sZXQgZmlsdGVyX21hcGlfc2VxdWVudGlhbCB0IH5mID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciB0IGluXG4gIGxldCBzZXF1ZW5jZSA9IE1hcC50b19zZXF1ZW5jZSB+b3JkZXI6YEluY3JlYXNpbmdfa2V5IHQgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgICAgc2VxdWVuY2VcbiAgICAgIH5pbml0OkJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmVtcHR5XG4gICAgICB+ZjooZnVuIHMgKGtleSwgZGF0YSkgfmsgLT5cbiAgICAgICAgdXBvbiAoZiB+a2V5IH5kYXRhKSAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gayBzXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcuYWRkX2V4blxuICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGsgcykpXG4gICAgICB+ZmluaXNoOihmdW4geCAtPlxuICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICBpdmFyXG4gICAgICAgICAgKE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWVcbiAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgIChCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy50b190cmVlIHgpKSkpXG47O1xuXG5sZXQgZmlsdGVyX21hcGlfbWF4X2NvbmN1cnJlbnQgdCB+ZiB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gIGxldCBjb21wdXRhdGlvbiA9XG4gICAgVGhyb3R0bGVkX21hcC5maWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgVGhyb3R0bGVkLmpvYiAoZnVuICgpIC0+IGYgfmtleSB+ZGF0YSkpXG4gIGluXG4gIFRocm90dGxlZC5ydW4gY29tcHV0YXRpb24gfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZlxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBmaWx0ZXJfbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzXG4gIHwgYFBhcmFsbGVsIC0+XG4gICAgbGV0IGpvYnMgPSByZWYgW10gaW5cbiAgICBsZXQgam9iX21hcCA9XG4gICAgICBNYXAubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBsZXQgam9iID0geyBKb2Iua2V5OyBkYXRhOyByZXN1bHQgPSBOb25lIH0gaW5cbiAgICAgICAgam9icyA6PSBqb2IgOjogIWpvYnM7XG4gICAgICAgIGpvYilcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPVxuICAgICAgTGlzdC5pdGVyIH5ob3cgKEJhc2UuTGlzdC5yZXYgIWpvYnMpIH5mOihmdW5jdGlvblxuICAgICAgICB8IHsgSm9iLmtleTsgZGF0YTsgcmVzdWx0ID0gXyB9IGFzIGpvYiAtPlxuICAgICAgICAgIGxldCVtYXAgeCA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgIGpvYi5yZXN1bHQgPC0geClcbiAgICBpblxuICAgIE1hcC5maWx0ZXJfbWFwIGpvYl9tYXAgfmY6Sm9iLnJlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGZpbHRlcl9rZXlzIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGtleSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlciB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBtYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBsZXQgY29tcHV0YXRpb24gPVxuICAgIFRocm90dGxlZF9tYXAubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiB+a2V5IH5kYXRhKSlcbiAgaW5cbiAgVGhyb3R0bGVkLnJ1biBjb21wdXRhdGlvbiB+bWF4X2NvbmN1cnJlbnRfam9ic1xuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCB8IGBQYXJhbGxlbCAtPlxuICAgIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGxldCVtYXAgeiA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgU29tZSB6KVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBtYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgbWVyZ2UgfmhvdyB0MSB0MiB+ZiA9XG4gIGZpbHRlcl9tYXBcbiAgICB+aG93XG4gICAgKE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXkgeiAtPiBTb21lIChmdW4gKCkgLT4gZiB+a2V5IHopKSlcbiAgICB+ZjooZnVuIHRodW5rIC0+IHRodW5rICgpKVxuOztcblxubGV0IGFsbCB0ID0gbWFwIHQgfmY6Rm4uaWQgfmhvdzpgU2VxdWVudGlhbFxuIiwib3BlbiEgQ29yZVxub3BlbiEgRGVmZXJyZWRfc3RkXG5pbmNsdWRlIERlZmVycmVkX21lbW9faW50ZlxuXG5tb2R1bGUgTWFrZSAoTSA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0ID0gJ2EgRGVmZXJyZWQxLnQpIDpcbiAgUyB3aXRoIHR5cGUgJ2EgZGVmZXJyZWQgOj0gJ2EgTS50ID0gc3RydWN0XG4gIG9wZW4hIE1cblxuICBsZXQgcmVyYWlzZSA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IHhcbiAgICB8IEVycm9yIGV4biAtPiBFeG4ucmVyYWlzZSBleG4gXCJjYXVnaHQgZXhjZXB0aW9uIGluIG1lbW9pemVkIGZ1bmN0aW9uXCJcbiAgOztcblxuICBsZXQgZ2VuZXJhbCcgKHR5cGUgYSkgfnJ1biAoaGFzaGFibGUgOiAobW9kdWxlIEhhc2hhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBhKSkgZiA9XG4gICAgbGV0IG1vZHVsZSBIYXNoYWJsZSA9ICh2YWwgaGFzaGFibGUpIGluXG4gICAgbGV0IGYgPVxuICAgICAgTWVtby5nZW5lcmFsIH5oYXNoYWJsZTpIYXNoYWJsZS5oYXNoYWJsZSAoZnVuIGEgLT5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICB+cnVuXG4gICAgICAgICAgKGZ1biAoKSAtPiBmIGEpKVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlIChmdW4gYSAtPiBmIGEgPj58IHJlcmFpc2UpXG4gIDs7XG5cbiAgbGV0IGdlbmVyYWwgaGFzaGFibGUgZiA9IGdlbmVyYWwnIH5ydW46YE5vdyBoYXNoYWJsZSBmXG5cbiAgbGV0IHJlY3Vyc2l2ZSAodHlwZSBhKSAoaGFzaGFibGUgOiAobW9kdWxlIEhhc2hhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBhKSkgZl9vbmVzdGVwID1cbiAgICBsZXQgcmVjIG1lbW9pemVkID1cbiAgICAgIGxhenlcbiAgICAgICAgKGdlbmVyYWwnXG4gICAgICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgICAgIGhhc2hhYmxlXG4gICAgICAgICAgIChmX29uZXN0ZXAgKGZ1biB4IC0+ICh1bnN0YWdlIChmb3JjZSBtZW1vaXplZCkpIHgpKSlcbiAgICBpblxuICAgIGZvcmNlIG1lbW9pemVkXG4gIDs7XG5cbiAgbGV0IHVuaXQgZiA9XG4gICAgbGV0IGYgPVxuICAgICAgTWVtby51bml0IChmdW4gKCkgLT5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgICBmKVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlIChmdW4gKCkgLT4gZiAoKSA+PnwgcmVyYWlzZSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIE1ha2UgKERlZmVycmVkMSlcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE9wdGlvbi50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoU29tZSBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSBhIC0+IGYgYVxuICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQucmV0dXJuIE5vbmUpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBPcHRpb24ubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2Vycm9yKSB0ID0gKCdhLCAnZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBsZXQlbWFwIHQxID0gdDFcbiAgYW5kIHQyID0gdDIgaW5cbiAgUmVzdWx0LmNvbWJpbmUgdDEgdDIgfm9rIH5lcnJcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChPayBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgYSAtPiBmIGFcbiAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IERlZmVycmVkLnJldHVybiBlcnJvcilcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgZmFpbCB4ID0gRGVmZXJyZWQucmV0dXJuIChFcnJvciB4KVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IG1hcF9lcnJvciB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXBfZXJyb3IgciB+ZilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBNb25pdG9yID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmVuZFxuXG4oKiBDb3BpZWQgdG8gW2VhZ2VyX2RlZmVycmVkX29yX2Vycm9yLm1sXS4gIFRoZXJlIHNob3VsZCBiZSBubyBkaWZmcyBiZWxvdyB0aGlzIGxpbmUuICopXG5cbmluY2x1ZGUgKERlZmVycmVkX3Jlc3VsdCA6IE1vbmFkLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIERlZmVycmVkX3Jlc3VsdC50KVxuXG50eXBlICdhIHQgPSAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBEZWZlcnJlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICBmXG4gICAgICAgIHhcbiAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgZmFpbCBlcnJvciA9IERlZmVycmVkLnJldHVybiAoUmVzdWx0LmZhaWwgZXJyb3IpXG5sZXQgb2tfZXhuIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjpPcl9lcnJvci5va19leG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgdCA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci5vZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UpXG5sZXQgZXJyb3IgbXNnIHYgc2V4cF9vZiA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3IgbXNnIHYgc2V4cF9vZilcbmxldCBlcnJvcl9zIHNleHAgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgbXNnKVxubGV0IGVycm9yZiBmb3JtYXQgPSBrc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIERlZmVycmVkLm1hcCB0IH5mOihmdW4gdCAtPiBPcl9lcnJvci50YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IudW5pbXBsZW1lbnRlZCBtc2cpXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuZmlsdGVyX29rX2F0X2xlYXN0X29uZVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKGwsIFtdKSAoZnVuIChsLCBlcnJvcnMpIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IGVycm9ycyA9IEVycm9yLm9mX2xpc3QgKExpc3QucmV2IGVycm9ycykgaW5cbiAgICAgIERlZmVycmVkLnJldHVybiAoYEZpbmlzaGVkIChFcnJvciBlcnJvcnMpKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIERlZmVycmVkLm1hcCAoZiBoZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgY3VycmVudF9lcnJvciAtPiBgUmVwZWF0ICh0bCwgY3VycmVudF9lcnJvciA6OiBlcnJvcnMpXG4gICAgICAgIHwgT2sgcmVzdWx0IC0+IGBGaW5pc2hlZCAoT2sgcmVzdWx0KSkpXG47O1xuXG5sZXQgb2tfdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAoTW9uaXRvci50cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjooZnVuY3Rpb25cbiAgICB8IEVycm9yIGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IE9rIF8gYXMgb2sgLT4gb2spXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwICh0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjpPcl9lcnJvci5qb2luXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgZm9sZGkgbGlzdCB+aW5pdDphY2MgfmYgPVxuICAgIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0JWJpbmQgYWNjID0gZiBpIGFjYyBoZCBpblxuICAgICAgICBsb29wIChpICsgMSkgYWNjIHRsXG4gICAgaW5cbiAgICBsb29wIDAgYWNjIGxpc3RcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgPSBhbGxcbiAgbGV0IGFsbF91bml0ID0gYWxsX3VuaXRcblxuICBsZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG4gIDs7XG5cbiAgbGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSB4IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIGZpbmRfbWFwIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgcmVjIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbWF0Y2glYmluZCBmIHN0YXRlIHdpdGhcbiAgfCBgUmVwZWF0IHN0YXRlIC0+IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmXG4gIHwgYEZpbmlzaGVkIHN0YXRlIC0+IHJldHVybiBzdGF0ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxuXG4oKiBXZSBpbXBsZW1lbnQgYWxsIG9mIHRoZSBbUXVldWVdIG9wZXJhdGlvbnMgYnkgY29udmVydGluZyB0aGUgcXVldWUgdG8gYSBsaXN0IGFuZCB0aGVuXG4gICB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBbTGlzdF0gb3BlcmF0aW9uLiAgV2UgdXNlIGxpc3RzIHJhdGhlciB0aGFuIGFycmF5cyBiZWNhdXNlXG4gICBhcnJheXMgbG9uZ2VyIHRoYW4gYSBjZXJ0YWluIGxlbmd0aCBhcmUgYWxsb2NhdGVkIGluIHRoZSBtYWpvciBoZWFwLCB3aGljaCBjYW4gY2F1c2VcbiAgIHVubmVjZXNzYXJ5IHByb21vdGlvbiBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiAgQWxzbywgd2hlbiBvbmUgaXMgZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYW4gYXJyYXksIHRoZSBlbnRpcmUgYXJyYXkgbXVzdCBiZSBrZXB0IGFsaXZlLiAgV2hlbiBmb2xkaW5nIG9yXG4gICBpdGVyYXRpbmcgb3ZlciBhIGxpc3QsIG9ubHkgdGhlIHJlbWFpbmluZyB0YWlsIG9mIHRoZSBsaXN0IGlzIGtlcHQgYWxpdmUuICBTbywgdXNpbmdcbiAgIGFycmF5cyByYXRoZXIgdGhhbiBsaXN0cyB3b3VsZCBpbmNyZWFzZSB0aGUgbGl2ZS1zcGFjZSBuZWVkZWQgYnkgdGhlIHByb2dyYW0uICopXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID0gTGlzdC5mb2xkaSAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGFsbCB0ID0gTGlzdC5hbGwgKFF1ZXVlLnRvX2xpc3QgdCkgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBhbGxfdW5pdCB0ID0gTGlzdC5hbGxfdW5pdCAoUXVldWUudG9fbGlzdCB0KVxubGV0IGl0ZXIgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBpdGVyaSB+aG93IHQgfmYgPSBMaXN0Lml0ZXJpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBtYXAgfmhvdyB0IH5mID0gTGlzdC5tYXAgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IG1hcGkgfmhvdyB0IH5mID0gTGlzdC5tYXBpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBpbml0IH5ob3cgbiB+ZiA9IExpc3QuaW5pdCB+aG93IG4gfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXIgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXJpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcCB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXJfbWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5cbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcCB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4geCAtPiBmIHggPj58IFF1ZXVlLnRvX2xpc3QpXG4gID4+fCBRdWV1ZS5vZl9saXN0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID1cbiAgTGlzdC5jb25jYXRfbWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4gaSB4IC0+IGYgaSB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZF9tYXBpIHQgfmYgPSBMaXN0LmZpbmRfbWFwaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRpIHQgfmYgPSBMaXN0LmZpbmRpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IExpc3QuZm9yX2FsbGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gTGlzdC5leGlzdHNpIChRdWV1ZS50b19saXN0IHQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxuKCogW2ZvbGRfbWFwaSB+aG93IHQgfmluaXQgfm1hcGlfZiB+Zm9sZF9mXSBpcyBhIG1vcmUgZWZmaWNpZW50IHZlcnNpb24gb2Y6XG5cbiAgIHtbXG4gICAgIGZvbGQgfmluaXQgfmY6KGZ1biBiIGEgLT4gcmV0dXJuIChmb2xkX2YgYiBhKSkgKG1hcGkgdCB+aG93IH5mOm1hcGlfZikgXX1cblxuICAgSXQgYXZvaWRzIGNyZWF0aW5nIHRoZSBpbnRlcm1lZGlhdGUgc2VxdWVuY2UgdGhhdCB3b3VsZCByZXN1bHQgZnJvbSBbbWFwaV0sIGFuZFxuICAgYWxsb3dzIHRoZSBbZm9sZF0gdG8gcHJvY2VlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgW21hcGldLCBzbyB0aGF0IG9uZSBjYW4gYWNjdW11bGF0ZVxuICAgdGhlIHJlc3VsdCBhcyBzb29uIGFzIHBvc3NpYmxlLCBwb3NzaWJseSBhdm9pZGluZyBjcmVhdGluZyBhbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJlXG4gICAoZS5nLiBbaXRlcmldIGFuZCBbZmlsdGVyX21hcF0gdXNlcyBbZm9sZF9tYXBpXSB0byBkbyB0aGlzKS4gKilcbmxldCBmb2xkX21hcGlcbiAgICAgICh0eXBlIGEgYiBjKVxuICAgICAgPyhob3cgPSBgU2VxdWVudGlhbClcbiAgICAgICh0IDogYSBTZXF1ZW5jZS50KVxuICAgICAgfihpbml0IDogYylcbiAgICAgIH4obWFwaV9mIDogaW50IC0+IGEgLT4gYiBEZWZlcnJlZC50KVxuICAgICAgfihmb2xkX2YgOiBjIC0+IGIgLT4gYylcbiAgOiBjIERlZmVycmVkLnRcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+XG4gICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMpID1cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gSXZhci5maWxsIHJlc3VsdCBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+IHVwb24gKG1hcGlfZiBpIGEpIChmdW4gYiAtPiBsb29wIChpICsgMSkgdCAoZm9sZF9mIGMgYikpXG4gICAgaW5cbiAgICBsb29wIDAgdCBpbml0O1xuICAgIEl2YXIucmVhZCByZXN1bHRcbiAgfCBgUGFyYWxsZWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICB0XG4gICAgICAgICAgKGxldCViaW5kIGIgPSBtYXBpX2YgaSBhIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgbGV0IHRocm90dGxlID0gVGhyb3R0bGUuY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSBpblxuICAgICgqIFtsb29wXSBmb3JjZXMgdGhlIGlucHV0IHNlcXVlbmNlIGFuZCBlbnF1ZXVlcyBhIHRocm90dGxlIGpvYiBvbmx5IGlmIHRoZXJlIGlzXG4gICAgICAgY2FwYWNpdHkgYXZhaWxhYmxlLiAqKVxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjIERlZmVycmVkLnQpID1cbiAgICAgIGxldCViaW5kICgpID0gVGhyb3R0bGUuY2FwYWNpdHlfYXZhaWxhYmxlIHRocm90dGxlIGluXG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICB0XG4gICAgICAgICAgKGxldCViaW5kIGIgPSBUaHJvdHRsZS5lbnF1ZXVlIHRocm90dGxlIChmdW4gKCkgLT4gbWFwaV9mIGkgYSkgaW5cbiAgICAgICAgICAgbGV0JW1hcCBjID0gYyBpblxuICAgICAgICAgICBmb2xkX2YgYyBiKVxuICAgIGluXG4gICAgbG9vcCAwIHQgKHJldHVybiBpbml0KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICB0XG4gICAgfmluaXQ6KDAsIGluaXQpXG4gICAgfmY6KGZ1biAoaSwgYikgYSB+ayAtPlxuICAgICAgbGV0JWJpbmQgYiA9IGYgaSBiIGEgaW5cbiAgICAgIGsgKGkgKyAxLCBiKSlcbiAgICB+ZmluaXNoOihmdW4gKF8sIGIpIC0+IHJldHVybiBiKVxuOztcblxuKCogW2ZvbGRdIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBbZm9sZGldIHRvIHNhdmUgdGhlIGludGVybWVkaWF0ZSBjbG9zdXJlXG4gICBhbGxvY2F0aW9uLiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZCB0IH5pbml0IH5mOihmdW4gYiBhIH5rIC0+IGYgYiBhID4+PSBrKSB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGFsbCB0ID1cbiAgbGV0JW1hcCByZXMgPVxuICAgIGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjY3VtIGQgLT5cbiAgICAgIGxldCVtYXAgYSA9IGQgaW5cbiAgICAgIGEgOjogYWNjdW0pXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHJlcylcbjs7XG5cbmxldCBhbGxfdW5pdCB0ID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgdiAtPiB2KVxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJldHVybiBOb25lXG4gICAgfCBTb21lICh2LCByZXN0KSAtPlxuICAgICAgKG1hdGNoJWJpbmQgZiBpIHYgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgcmVzdCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyaSB+aG93IHQgfmYgOiB1bml0IERlZmVycmVkLnQgPVxuICBmb2xkX21hcGkgfmhvdyB0IH5tYXBpX2Y6ZiB+aW5pdDooKSB+Zm9sZF9mOihmdW4gKCkgKCkgLT4gKCkpXG47O1xuXG5sZXQgbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGkgfmhvdyB0IH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpIH5pbml0OltdIH5mb2xkX2Y6KGZ1biBicyBiIC0+IGIgOjogYnMpXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IGJzKVxuOztcblxuKCogW2ZpbHRlcl9tYXBpXSBpcyBpbXBsZW1lbnRlZCB1c2luZyBbZm9sZF9tYXBpXSByYXRoZXIgdGhhbiBbbWFwXSBzbyB0aGF0IHdlIG5ldmVyIG5lZWRcbiAgIHRvIGtlZXAgYSBsb25nIHN0cmVhbSBvZiBpbnRlcm1lZGlhdGUgW05vbmVdIHJlc3VsdHMgaW4gdGhlIGFjY3VtdWxhdG9yLCBvbmx5IHRvIGxhdGVyXG4gICBmaWx0ZXIgdGhlbSBhbGwgb3V0LiAqKVxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPVxuICAgIGZvbGRfbWFwaVxuICAgICAgdFxuICAgICAgfmhvd1xuICAgICAgfm1hcGlfZjooZnVuIGkgYSAtPiBmIGkgYSlcbiAgICAgIH5pbml0OltdXG4gICAgICB+Zm9sZF9mOihmdW4gYnMgbWF5YmVfdiAtPlxuICAgICAgICBtYXRjaCBtYXliZV92IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGJzXG4gICAgICAgIHwgU29tZSBiIC0+IGIgOjogYnMpXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IGJzKVxuOztcblxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mID4+fCBTZXF1ZW5jZS5jb25jYXRcblxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2glbWFwIGYgaSBhIHdpdGhcbiAgICB8IHRydWUgLT4gU29tZSBhXG4gICAgfCBmYWxzZSAtPiBOb25lKVxuOztcblxubGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChTZXF1ZW5jZS5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNcbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdFxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgRGF0ZSA9IERhdGVcblxubGV0IGFmdGVyID0gQ2xvY2tfbnMuYWZ0ZXJcbmxldCBhdCA9IENsb2NrX25zLmF0XG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBTdHJlYW0gPSBBc3luY19zdHJlYW1cblxubGV0IHNob3dfZGVidWdfbWVzc2FnZXMgPSByZWYgZmFsc2VcbmxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgZmFsc2VcblxubW9kdWxlIEZsdXNoZWRfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgT2tcbiAgICB8IGBSZWFkZXJfY2xvc2VkXG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICBsZXQgY29tYmluZSAobCA6IHQgRGVmZXJyZWQudCBsaXN0KSA9XG4gICAgbGV0JW1hcCBsID0gRGVmZXJyZWQuYWxsIGwgaW5cbiAgICBtYXRjaCBMaXN0Lm1lbSBsIGBSZWFkZXJfY2xvc2VkIH5lcXVhbCB3aXRoXG4gICAgfCB0cnVlIC0+IGBSZWFkZXJfY2xvc2VkXG4gICAgfCBmYWxzZSAtPiBgT2tcbiAgOztcbmVuZFxuXG4oKiBBIFtDb25zdW1lci50XSBhY3RzIGFzIHRoZSBtb25pdG9yIG9mIHNvbWUgcHJvY2VzcyB0aGF0IHJlYWRzIHZhbHVlcyBmcm9tIGEgcGlwZSBhbmRcbiAgIHByb2Nlc3NlcyB0aGVtLCBhbGxvd2luZyB0aGF0IHByb2Nlc3M6XG4gICAtIHRvIGNvbW11bmljYXRlIHRoYXQgaXQgaGFzIHRha2VuIHJlc3BvbnNpYmlsaXR5IGZvciB0aGUgdmFsdWVzXG4gICAtIHRvIHNpZ25hbCB3aGVuIGl0IGhhcyBmaW5pc2hlZCB3aXRoIHRoZSB2YWx1ZXMgdG8gaW50ZXJlc3RlZCBwYXJ0aWVzICh2aWFcbiAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0pXG5cbiAgIEl0IGlzIHVzZWQgaW4gdHdvIHN0ZXBzOlxuXG4gICAxLiBjYWxsaW5nIFtDb25zdW1lci5zdGFydF0gYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBjb25zdW1lciB0YWtlcyB2YWx1ZXMgb3V0IG9mIHRoZVxuICAgUGlwZSB2aWEgW3JlYWRdIG9yIFtyZWFkJ10uXG5cbiAgIDIuIGNhbGxpbmcgW0NvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1dLlxuXG4gICBCeSBjYWxsaW5nIFt2YWx1ZXNfc2VudF9kb3duc3RyZWFtXSBvbmUgYXNzZXJ0cyB0aGF0IHRoZSBbZG93bnN0cmVhbV9mbHVzaGVkXSBmdW5jdGlvblxuICAgc3VwcGxpZWQgdG8gW2NyZWF0ZV0gd2lsbCBub3cgd2FpdCBmb3IgdGhpcyB2YWx1ZS5cblxuICAgSWYgbm8gW0NvbnN1bWVyLnRdIGlzIHN1cHBsaWVkIHdoZW4gYSB2YWx1ZSBpcyByZWFkIHRoZW4gdGhlIHZhbHVlIGlzIGRlZmluZWQgdG8gYmVcbiAgIGZsdXNoZWQgYXQgdGhhdCB0aW1lLiAqKVxubW9kdWxlIENvbnN1bWVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBwaXBlX2lkOmludFxuICAgIC0+IGRvd25zdHJlYW1fZmx1c2hlZDoodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpXG4gICAgLT4gdFxuXG4gIHZhbCBwaXBlX2lkIDogdCAtPiBpbnRcbiAgdmFsIHN0YXJ0IDogdCAtPiB1bml0XG4gIHZhbCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtIDogdCAtPiB1bml0XG4gIHZhbCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIDogdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGlwZV9pZCA6IGludFxuICAgIDsgKCogW3ZhbHVlc19yZWFkXSByZWZsZWN0cyB3aGV0aGVyIHZhbHVlcyB0aGUgY29uc3VtZXIgaGFzIHJlYWQgZnJvbSB0aGUgcGlwZSBoYXZlIGJlZW5cbiAgICAgICAgIHNlbnQgZG93bnN0cmVhbSBvciBpZiBub3QsIGhvbGRzIGFuIGl2YXIgdGhhdCBpcyB0byBiZSBmaWxsZWQgd2hlbiB0aGV5IGFyZS4gKilcbiAgICAgIG11dGFibGVcbiAgICAgICAgdmFsdWVzX3JlYWQgOlxuICAgICAgICBbIGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIG9mIHVuaXQgSXZhci50IF1cbiAgICA7ICgqIFtkb3duc3RyZWFtX2ZsdXNoZWQgKCldIHJldHVybnMgd2hlbiBhbGwgcHJpb3IgdmFsdWVzIHRoYXQgdGhlIGNvbnN1bWVyIGhhc1xuICAgICAgICAgcGFzc2VkIGRvd25zdHJlYW0gaGF2ZSBiZWVuIGZsdXNoZWQgYWxsIHRoZSB3YXkgZG93biB0aGUgY2hhaW4gb2YgcGlwZXMuICopXG4gICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgOiB1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5waXBlX2lkOmlnbm9yZVxuICAgICAgICB+dmFsdWVzX3JlYWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gKClcbiAgICAgICAgICAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBpdmFyIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpXG4gICAgICAgIH5kb3duc3RyZWFtX2ZsdXNoZWQ6aWdub3JlXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5Db25zdW1lci5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiB0KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIH5waXBlX2lkIH5kb3duc3RyZWFtX2ZsdXNoZWQgPVxuICAgIHsgcGlwZV9pZDsgdmFsdWVzX3JlYWQgPSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbTsgZG93bnN0cmVhbV9mbHVzaGVkIH1cbiAgOztcblxuICBsZXQgc3RhcnQgdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gXyAtPiAoKVxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT5cbiAgICAgIHQudmFsdWVzX3JlYWQgPC0gYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIChJdmFyLmNyZWF0ZSAoKSlcbiAgOztcblxuICBsZXQgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiB0LmRvd25zdHJlYW1fZmx1c2hlZCAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIHdoZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB3aGVuX3NlbnRfZG93bnN0cmVhbSBpblxuICAgICAgdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9yZWFkID0gc3RydWN0XG4gICgqIEEgW0Jsb2NrZWRfcmVhZC50XSByZXByZXNlbnRzIGEgYmxvY2tlZCByZWFkIGF0dGVtcHQuICBJZiBzb21lb25lIHJlYWRzIGZyb20gYW4gZW1wdHlcbiAgICAgcGlwZSwgdGhleSBlbnF1ZXVlIGEgW0Jsb2NrZWRfcmVhZC50XSBpbiB0aGUgcXVldWUgb2YgW2Jsb2NrZWRfcmVhZHNdLiAgTGF0ZXIsIHdoZW5cbiAgICAgdmFsdWVzIGFyZSB3cml0dGVuIHRvIGEgcGlwZSwgdGhhdCB3aWxsIGNhdXNlIHNvbWUgbnVtYmVyIG9mIGJsb2NrZWQgcmVhZHMgdG8gYmVcbiAgICAgZmlsbGVkLCBmaXJzdCBjb21lIGZpcnN0IHNlcnZlLiAgVGhlIGJsb2NrZWQtcmVhZCBjb25zdHJ1Y3RvciBzcGVjaWZpZXMgaG93IG1hbnlcbiAgICAgdmFsdWVzIGEgcmVhZCBzaG91bGQgY29uc3VtZSBmcm9tIHRoZSBwaXBlIHdoZW4gaXQgZ2V0cyBpdHMgdHVybi5cblxuICAgICBJZiBhIHBpcGUgaXMgY2xvc2VkLCB0aGVuIGFsbCBibG9ja2VkIHJlYWRzIHdpbGwgYmUgZmlsbGVkIHdpdGggW2BFb2ZdLiAqKVxuICB0eXBlICdhIHdhbnRzID1cbiAgICB8IFplcm8gb2YgWyBgRW9mIHwgYE9rIF0gSXZhci50XG4gICAgfCBPbmUgb2YgWyBgRW9mIHwgYE9rIG9mICdhIF0gSXZhci50XG4gICAgfCBBdF9tb3N0IG9mIGludCAqIFsgYEVvZiB8IGBPayBvZiAnYSBRdWV1ZS50IF0gSXZhci50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHdhbnRzIDogJ2Egd2FudHNcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+d2FudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgWmVybyBfIHwgT25lIF8gLT4gKClcbiAgICAgICAgICAgICB8IEF0X21vc3QgKGksIF8pIC0+IGFzc2VydCAoaSA+IDApKSlcbiAgICAgICAgfmNvbnN1bWVyOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT4gQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyKSlcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5CbG9ja2VkX3JlYWQuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogXyB0KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHdhbnRzIGNvbnN1bWVyID0geyB3YW50czsgY29uc3VtZXIgfVxuXG4gIGxldCBpc19lbXB0eSB0ID1cbiAgICBtYXRjaCB0LndhbnRzIHdpdGhcbiAgICB8IFplcm8gaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IE9uZSBpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICAgIHwgQXRfbW9zdCAoXywgaSkgLT4gSXZhci5pc19lbXB0eSBpXG4gIDs7XG5cbiAgbGV0IGZpbGxfd2l0aF9lb2YgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5maWxsIGkgYEVvZlxuICAgIHwgT25lIGkgLT4gSXZhci5maWxsIGkgYEVvZlxuICAgIHwgQXRfbW9zdCAoXywgaSkgLT4gSXZhci5maWxsIGkgYEVvZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBCbG9ja2VkX2ZsdXNoID0gc3RydWN0XG4gICgqIEEgW0Jsb2NrZWRfZmx1c2gudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgZmx1c2ggb3BlcmF0aW9uLCB3aGljaCBjYW4gYmUgZW5hYmxlZCBieSBhXG4gICAgIGZ1dHVyZSByZWFkLiAgSWYgc29tZW9uZSBkb2VzIFtmbHVzaGVkIHBdIG9uIGEgcGlwZSwgdGhhdCBibG9ja3MgdW50aWwgZXZlcnl0aGluZ1xuICAgICB0aGF0J3MgY3VycmVudGx5IGluIHRoZSBwaXBlIGF0IHRoYXQgcG9pbnQgaGFzIGRyYWluZWQgb3V0IG9mIHRoZSBwaXBlLiAgV2hlbiB3ZSBjYWxsXG4gICAgIFtmbHVzaGVkXSwgaXQgcmVjb3JkcyB0aGUgdG90YWwgYW1vdW50IG9mIGRhdGEgdGhhdCBoYXMgYmVlbiB3cml0dGVuIHNvIGZhciBpblxuICAgICBbZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF0uICBXZSBmaWxsIHRoZSBbRmx1c2gudF0gd2l0aCBbYE9rXSB3aGVuIHRoaXMgYW1vdW50IG9mXG4gICAgIGRhdGEgaGFzIGJlZW4gcmVhZCBmcm9tIHRoZSBwaXBlLlxuXG4gICAgIEEgW0Jsb2NrZWRfZmx1c2gudF0gY2FuIGFsc28gYmUgZmlsbGVkIHdpdGggW2BSZWFkZXJfY2xvc2VkXSwgd2hpY2ggaGFwcGVucyB3aGVuIHRoZVxuICAgICByZWFkZXIgZW5kIG9mIHRoZSBwaXBlIGlzIGNsb3NlZCwgYW5kIHdlIGFyZSB0aHVzIHN1cmUgdGhhdCB0aGUgdW5yZWFkIGVsZW1lbnRzIHByZWNlZGluZyB0aGUgZmx1c2ggd2lsbCBuZXZlciBiZSByZWFkLiAqKVxuICB0eXBlIHQgPVxuICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA6IGludFxuICAgIDsgcmVhZHkgOiBbIGBPayB8IGBSZWFkZXJfY2xvc2VkIF0gSXZhci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGZpbGwgdCB2ID0gSXZhci5maWxsIHQucmVhZHkgdlxuZW5kXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgdCA9XG4gIHsgKCogW2lkXSBpcyBhbiBpbnRlZ2VyIHVzZWQgdG8gZGlzdGluZ3Vpc2ggcGlwZXMgd2hlbiBkZWJ1Z2dpbmcuICopXG4gICAgaWQgOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XG4gIDsgKCogW2luZm9dIGlzIHVzZXItcHJvdmlkZWQgYXJiaXRyYXJ5IHNleHAsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuICopXG4gICAgbXV0YWJsZSBpbmZvIDogU2V4cC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7ICgqIFtidWZmZXJdIGhvbGRzIHZhbHVlcyB3cml0dGVuIHRvIHRoZSBwaXBlIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gcmVhZC4gKilcbiAgICBtdXRhYmxlIGJ1ZmZlciA6ICdhIFF1ZXVlLnRcbiAgOyAoKiBbc2l6ZV9idWRnZXRdIGdvdmVybnMgcHVzaGJhY2sgb24gd3JpdGVycyB0byB0aGUgcGlwZS5cblxuICAgICAgIFRoZXJlIGlzICpubyogaW52YXJpYW50IHRoYXQgW1F1ZXVlLmxlbmd0aCBidWZmZXIgPD0gc2l6ZV9idWRnZXRdLlxuICAgICAgIFRoZXJlIGlzIG5vIGhhcmQgdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGNhbiBiZSBzdHVmZmVkIGludG8gdGhlXG4gICAgICAgW2J1ZmZlcl0uIFRoaXMgaXMgZHVlIHRvIHRoZSB3YXkgd2UgaGFuZGxlIHdyaXRlcy4gV2hlbiB3ZSBkbyBhIHdyaXRlLCBhbGwgb2YgdGhlXG4gICAgICAgdmFsdWVzIHdyaXR0ZW4gYXJlIGltbWVkaWF0ZWx5IGVucXVldWVkIGludG8gW2J1ZmZlcl0uIEFmdGVyIHRoZSB3cml0ZSwgaWZcbiAgICAgICBbUXVldWUubGVuZ3RoIGJ1ZmZlciA8PSB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGVyIHdpbGwgYmUgbm90aWZpZWQgdG9cbiAgICAgICBjb250aW51ZSB3cml0aW5nLiBBZnRlciB0aGUgd3JpdGUsIGlmIFtsZW5ndGggdCA+IHQuc2l6ZV9idWRnZXRdLCB0aGVuIHRoZSB3cml0ZVxuICAgICAgIHdpbGwgYmxvY2sgdW50aWwgdGhlIHBpcGUgaXMgdW5kZXIgYnVkZ2V0LiAqKVxuICAgIG11dGFibGUgc2l6ZV9idWRnZXQgOiBpbnRcbiAgOyAoKiBbcmVzZXJ2ZWRfc3BhY2VdIGNvdW50cyBhZ2FpbnN0IFtzaXplX2J1ZGdldF0gd2l0aG91dCBhY3R1YWxseSBidWZmZXJpbmcgYW55dGhpbmdcbiAgICAgICB5ZXQuIFdoZW4gaXQncyBwb3NpdGl2ZSwgd3JpdGVzIGRlY3JlbWVudCBpdC4gKilcbiAgICBtdXRhYmxlIHJlc2VydmVkX3NwYWNlIDogaW50XG4gIDsgKCogW3B1c2hiYWNrXSBpcyB1c2VkIHRvIGdpdmUgZmVlZGJhY2sgdG8gd3JpdGVycyBhYm91dCB3aGV0aGVyIHRoZXkgc2hvdWxkIHdyaXRlIHRvXG4gICAgICAgdGhlIHBpcGUuIFtwdXNoYmFja10gaXMgZnVsbCBpZmYgW2xlbmd0aCB0ICsgcmVzZXJ2ZWRfc3BhY2UgdCA8PSB0LnNpemVfYnVkZ2V0IHx8XG4gICAgICAgaXNfY2xvc2VkIHRdLiAqKVxuICAgIG11dGFibGUgcHVzaGJhY2sgOiB1bml0IEl2YXIudFxuICA7ICgqIFtudW1fdmFsdWVzX3JlYWRdIGtlZXBzIHRyYWNrIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIHRoYXQgaGF2ZSBiZWVuIHJlYWRcbiAgICAgICBmcm9tIHRoZSBwaXBlLiAgV2UgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgb3ZlcmZsb3cgaW4gW251bV92YWx1ZXNfcmVhZF0uICBZb3UnZFxuICAgICAgIG5lZWQgdG8gd3JpdGUgMl42MiBlbGVtZW50cyB0byB0aGUgcGlwZSwgd2hpY2ggd291bGQgdGFrZSBhYm91dCAxNDYgeWVhcnMsIGF0IGFcbiAgICAgICBmbG93IHJhdGUgb2YgMSBzaXplLXVuaXQvbmFub3NlY29uZC4gKilcbiAgICBtdXRhYmxlIG51bV92YWx1ZXNfcmVhZCA6IGludFxuICAoKiBbYmxvY2tlZF9mbHVzaGVzXSBob2xkcyBmbHVzaGVzIHdob3NlIHByZWNlZGluZyBlbGVtZW50cyBoYXZlIG5vdCBiZWVuIGNvbXBsZXRlbHlcbiAgICAgcmVhZC4gIEZvciBlYWNoIGJsb2NrZWQgZmx1c2gsIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgZnJvbSB0aGVcbiAgICAgcGlwZSBpbiBvcmRlciB0byBmaWxsIHRoZSBmbHVzaCBpcyAgICAgICAgICAgICAgICAgICAgICAgIDpcblxuICAgICBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIC0gbnVtX3ZhbHVlc19yZWFkXG5cbiAgICAgS2VlcGluZyB0aGUgZGF0YSBpbiB0aGlzIGZvcm0gYWxsb3dzIHVzIHRvIGNoYW5nZSBhIHNpbmdsZSBmaWVsZChudW1fdmFsdWVzX3JlYWQpXG4gICAgIHdoZW4gd2UgY29uc3VtZSB2YWx1ZXMgaW5zdGVhZCBvZiBoYXZpbmcgdG8gaXRlcmF0ZSBvdmVyIHRoZSB3aG9sZSBxdWV1ZSBvZlxuICAgICBmbHVzaGVzLiAqKVxuICA7IGJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCBRdWV1ZS50XG4gIDsgKCogW2Jsb2NrZWRfcmVhZHNdIGhvbGRzIHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgb24gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBwaXBlLiAqKVxuICAgIGJsb2NrZWRfcmVhZHMgOiAnYSBCbG9ja2VkX3JlYWQudCBRdWV1ZS50XG4gIDsgKCogW2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICBjbG9zZWQgOiB1bml0IEl2YXIudFxuICA7ICgqIFtyZWFkX2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHJlYWQgZW5kIG9mIHRoZSBwaXBlLiAqKVxuICAgIHJlYWRfY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbY29uc3VtZXJzXSBpcyBhIGxpc3Qgb2YgYWxsIGNvbnN1bWVycyB0aGF0IG1heSBiZSBoYW5kbGluZyB2YWx1ZXMgcmVhZCBmcm9tIHRoZVxuICAgICAgIHBpcGUuICopXG4gICAgbXV0YWJsZSBjb25zdW1lcnMgOiBDb25zdW1lci50IGxpc3RcbiAgOyAoKiBbdXBzdHJlYW1fZmx1c2hlZHNdIGhhcyBhIGZ1bmN0aW9uIGZvciBlYWNoIHBpcGUgaW1tZWRpYXRlbHkgdXBzdHJlYW0gb2YgdGhpcyBvbmUuXG4gICAgICAgVGhhdCBmdW5jdGlvbiB3YWxrcyB0byB0aGUgaGVhZChzKSBvZiB0aGUgdXBzdHJlYW0gcGlwZSwgYW5kIGNhbGxzXG4gICAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0gb24gdGhlIGhlYWQocykuICBTZWUgdGhlIGRlZmluaXRpb24gb2YgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICAgICAgYmVsb3cuICopXG4gICAgdXBzdHJlYW1fZmx1c2hlZHMgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGVmZmVjdGl2ZV9zaXplX2J1ZGdldCB0ID0gdC5zaXplX2J1ZGdldCAtIHQucmVzZXJ2ZWRfc3BhY2VcblxudHlwZSAoJ2EsICdwaGFudG9tKSBwaXBlID0gKCdhLCAncGhhbnRvbSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIHQuaWRcbmxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgY29tcGFyZSB0MSB0MiA9IEludC5jb21wYXJlIHQxLmlkIHQyLmlkXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbmxldCBpc19yZWFkX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQucmVhZF9jbG9zZWRcbmxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxubGV0IHB1c2hiYWNrIHQgPSBJdmFyLnJlYWQgdC5wdXNoYmFja1xubGV0IGxlbmd0aCB0ID0gUXVldWUubGVuZ3RoIHQuYnVmZmVyXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxubGV0IHVwZGF0ZV9udW1fdmFsdWVzX3JlYWQgdCB+ZGVsdGEgPSB0Lm51bV92YWx1ZXNfcmVhZCA8LSB0Lm51bV92YWx1ZXNfcmVhZCArIGRlbHRhXG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aWQ6aWdub3JlXG4gICAgICB+aW5mbzppZ25vcmVcbiAgICAgIH5idWZmZXI6aWdub3JlXG4gICAgICB+c2l6ZV9idWRnZXQ6KGNoZWNrIChmdW4gc2l6ZV9idWRnZXQgLT4gYXNzZXJ0IChzaXplX2J1ZGdldCA+PSAwKSkpXG4gICAgICB+cmVzZXJ2ZWRfc3BhY2U6KGNoZWNrIChmdW4gcmVzZXJ2ZWRfc3BhY2UgLT4gYXNzZXJ0IChyZXNlcnZlZF9zcGFjZSA+PSAwKSkpXG4gICAgICB+cHVzaGJhY2s6XG4gICAgICAgIChjaGVjayAoZnVuIHB1c2hiYWNrIC0+XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgQm9vbC5lcXVhbFxuICAgICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCBwdXNoYmFjaylcbiAgICAgICAgICAgICAgIChsZW5ndGggdCA8PSBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCB8fCBpc19jbG9zZWQgdCkpKSlcbiAgICAgIH5udW1fdmFsdWVzX3JlYWQ6aWdub3JlXG4gICAgICB+YmxvY2tlZF9mbHVzaGVzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX2ZsdXNoZXMgLT5cbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biAoZiA6IEJsb2NrZWRfZmx1c2gudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGYuZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA+IHQubnVtX3ZhbHVlc19yZWFkKSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgTGlzdC5pc19zb3J0ZWRcbiAgICAgICAgICAgICAgIH5jb21wYXJlOkludC5jb21wYXJlXG4gICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChRdWV1ZS50b19saXN0IGJsb2NrZWRfZmx1c2hlcylcbiAgICAgICAgICAgICAgICAgIH5mOkJsb2NrZWRfZmx1c2guZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBpZiBpc19lbXB0eSB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX2ZsdXNoZXMpKSlcbiAgICAgIH5ibG9ja2VkX3JlYWRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX3JlYWRzIC0+XG4gICAgICAgICAgICgqIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBubyBvbmUgaXMgd2FpdGluZyBmb3IgaXQuICBUaGlzIHdvdWxkIG5lZWQgdG8gY2hhbmdlIGlmXG4gICAgICAgICAgICAgIHdlIGV2ZXIgaW1wbGVtZW50IFtyZWFkX2V4YWN0bHldIGFzIGFuIGF0b21pYyBvcGVyYXRpb24uICopXG4gICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgdCkgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfcmVhZHMpO1xuICAgICAgICAgICBRdWV1ZS5pdGVyIGJsb2NrZWRfcmVhZHMgfmY6KGZ1biByZWFkIC0+XG4gICAgICAgICAgICAgQmxvY2tlZF9yZWFkLmludmFyaWFudCByZWFkO1xuICAgICAgICAgICAgIGFzc2VydCAoQmxvY2tlZF9yZWFkLmlzX2VtcHR5IHJlYWQpKTtcbiAgICAgICAgICAgKCogWW91IG5ldmVyIGJsb2NrIHRyeWluZyB0byByZWFkIGEgY2xvc2VkIHBpcGUuICopXG4gICAgICAgICAgIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKSkpXG4gICAgICB+Y2xvc2VkOmlnbm9yZVxuICAgICAgfnJlYWRfY2xvc2VkOmlnbm9yZVxuICAgICAgfmNvbnN1bWVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gbCAtPlxuICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGNvbnN1bWVyIC0+XG4gICAgICAgICAgICAgQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyO1xuICAgICAgICAgICAgIGFzc2VydCAoQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lciA9IHQuaWQpKSkpXG4gICAgICB+dXBzdHJlYW1fZmx1c2hlZHM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IChfLCBfKSB0KV1cbjs7XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSBwaGFudG9tIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgdCA9ICgnYSwgcGhhbnRvbSkgcGlwZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubGV0IGlkX3JlZiA9IHJlZiAwXG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0IH5pbmZvIH5pbml0aWFsX2J1ZmZlciA9XG4gIGluY3IgaWRfcmVmO1xuICBsZXQgdCA9XG4gICAgeyBpZCA9ICFpZF9yZWZcbiAgICA7IGluZm9cbiAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyByZWFkX2Nsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgO1xuICAgICAgc2l6ZV9idWRnZXRcbiAgICA7IHJlc2VydmVkX3NwYWNlID0gMFxuICAgIDsgcHVzaGJhY2sgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgYnVmZmVyID0gaW5pdGlhbF9idWZmZXJcbiAgICA7IG51bV92YWx1ZXNfcmVhZCA9IDBcbiAgICA7IGJsb2NrZWRfZmx1c2hlcyA9IFF1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgYmxvY2tlZF9yZWFkcyA9IFF1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgY29uc3VtZXJzID0gW11cbiAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzID0gQmFnLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHNpemVfYnVkZ2V0ID1cbiAgaWYgc2l6ZV9idWRnZXQgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJuZWdhdGl2ZSBzaXplX2J1ZGdldFwiIChzaXplX2J1ZGdldCA6IGludCldXG4gIGVsc2Ugc2l6ZV9idWRnZXRcbjs7XG5cbmxldCBjcmVhdGUgP3NpemVfYnVkZ2V0ID9pbmZvICgpID1cbiAgbGV0IHNpemVfYnVkZ2V0ID1cbiAgICBtYXRjaCBzaXplX2J1ZGdldCB3aXRoXG4gICAgfCBTb21lIHYgLT4gdmFsaWRhdGVfc2l6ZV9idWRnZXQgdlxuICAgIHwgTm9uZSAtPiAwXG4gIGluXG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldCB+aW5mbyB+aW5pdGlhbF9idWZmZXI6KFF1ZXVlLmNyZWF0ZSAoKSkgaW5cbiAgKCogaW5pdGlhbGx5LCB0aGUgcGlwZSBkb2VzIG5vdCBwdXNoYmFjayAqKVxuICBJdmFyLmZpbGwgdC5wdXNoYmFjayAoKTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICB0LCB0XG47O1xuXG5sZXQgdXBkYXRlX3B1c2hiYWNrIHQgPVxuICBpZiBsZW5ndGggdCA8PSBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCB8fCBpc19jbG9zZWQgdFxuICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnB1c2hiYWNrICgpXG4gIGVsc2UgaWYgSXZhci5pc19mdWxsIHQucHVzaGJhY2tcbiAgdGhlbiB0LnB1c2hiYWNrIDwtIEl2YXIuY3JlYXRlICgpXG47O1xuXG5sZXQgY2xvc2UgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gKFxuICAgICAgUXVldWUuaXRlciB0LmJsb2NrZWRfcmVhZHMgfmY6QmxvY2tlZF9yZWFkLmZpbGxfd2l0aF9lb2Y7XG4gICAgICBRdWV1ZS5jbGVhciB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0KVxuOztcblxubGV0IGNsb3NlX3JlYWQgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlX3JlYWRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIG5vdCAoaXNfcmVhZF9jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQucmVhZF9jbG9zZWQgKCk7XG4gICAgUXVldWUuaXRlciB0LmJsb2NrZWRfZmx1c2hlcyB+ZjooZnVuIGZsdXNoIC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBgUmVhZGVyX2Nsb3NlZCk7XG4gICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX2ZsdXNoZXM7XG4gICAgUXVldWUuY2xlYXIgdC5idWZmZXI7XG4gICAgdC5yZXNlcnZlZF9zcGFjZSA8LSAwO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0O1xuICAgICgqIHdlIGp1c3QgY2xlYXJlZCB0aGUgYnVmZmVyLCBzbyBtYXkgbmVlZCB0byBmaWxsIFt0LnB1c2hiYWNrXSAqKVxuICAgIGNsb3NlIHQpXG47O1xuXG5sZXQgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIHVwb24gKGYgdykgKGZ1biAoKSAtPiBjbG9zZSB3KTtcbiAgclxuOztcblxubGV0IGNyZWF0ZV9yZWFkZXIgP3NpemVfYnVkZ2V0IH5jbG9zZV9vbl9leGNlcHRpb24gZiA9XG4gIGlmIG5vdCBjbG9zZV9vbl9leGNlcHRpb25cbiAgdGhlbiBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gP3NpemVfYnVkZ2V0IGZcbiAgZWxzZSAoXG4gICAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChNb25pdG9yLnByb3RlY3RcbiAgICAgICAgIChmdW4gKCkgLT4gZiB3KVxuICAgICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgICBjbG9zZSB3O1xuICAgICAgICAgICByZXR1cm4gKCkpKTtcbiAgICByKVxuOztcblxubGV0IGNyZWF0ZV93cml0ZXIgP3NpemVfYnVkZ2V0IGYgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoTW9uaXRvci5wcm90ZWN0XG4gICAgICAgKGZ1biAoKSAtPiBmIHIpXG4gICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgY2xvc2VfcmVhZCByO1xuICAgICAgICAgcmV0dXJuICgpKSk7XG4gIHdcbjs7XG5cbmxldCB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXIgPVxuICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci5zdGFydDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCBRdWV1ZS5wZWVrIHQuYmxvY2tlZF9mbHVzaGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZmx1c2ggLT5cbiAgICAgIGlmIHQubnVtX3ZhbHVlc19yZWFkID49IGZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZ25vcmUgKFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9mbHVzaGVzIDogQmxvY2tlZF9mbHVzaC50KTtcbiAgICAgICAgKG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYE9rXG4gICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICAgICAgICAgdXBvblxuICAgICAgICAgICAgIChDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIGNvbnN1bWVyKVxuICAgICAgICAgICAgIChmdW4gZmx1c2hfcmVzdWx0IC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBmbHVzaF9yZXN1bHQpKTtcbiAgICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcblxuKCogW2NvbnN1bWVfYWxsIHRdIHJlYWRzIGFsbCB0aGUgZWxlbWVudHMgaW4gW3RdLiAqKVxubGV0IGNvbnN1bWVfYWxsIHQgY29uc3VtZXIgPVxuICBsZXQgcmVzdWx0ID0gdC5idWZmZXIgaW5cbiAgdC5idWZmZXIgPC0gUXVldWUuY3JlYXRlICgpO1xuICB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhOihRdWV1ZS5sZW5ndGggcmVzdWx0KTtcbiAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgcmVzdWx0XG47O1xuXG5sZXQgY29uc3VtZV9vbmUgdCBjb25zdW1lciA9XG4gIGFzc2VydCAobGVuZ3RoIHQgPj0gMSk7XG4gIGxldCByZXN1bHQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJ1ZmZlciBpblxuICB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhOjE7XG4gIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHJlc3VsdFxuOztcblxubGV0IGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lciA9XG4gIGFzc2VydCAobWF4X3F1ZXVlX2xlbmd0aCA+PSAwKTtcbiAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA+PSBsZW5ndGggdFxuICB0aGVuIGNvbnN1bWVfYWxsIHQgY29uc3VtZXJcbiAgZWxzZSAoXG4gICAgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YTptYXhfcXVldWVfbGVuZ3RoO1xuICAgIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlIH5jYXBhY2l0eTptYXhfcXVldWVfbGVuZ3RoICgpIGluXG4gICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnQuYnVmZmVyIH5kc3Q6cmVzdWx0IH5sZW46bWF4X3F1ZXVlX2xlbmd0aCAoKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgICByZXN1bHQpXG47O1xuXG5sZXQgc2V0X3NpemVfYnVkZ2V0IHQgc2l6ZV9idWRnZXQgPVxuICBsZXQgc2l6ZV9idWRnZXQgPSB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCBpblxuICB0LnNpemVfYnVkZ2V0IDwtIHNpemVfYnVkZ2V0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHJlc2VydmVfc3BhY2UgdCBuID1cbiAgaWYgbiA8IDAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcInJlc2VydmluZyBuZWdhdGl2ZSBzcGFjZVwiIChuIDogaW50KV07XG4gIGxldCByZXNlcnZlZF9zcGFjZSA9IHQucmVzZXJ2ZWRfc3BhY2UgKyBuIGluXG4gIGlmIHJlc2VydmVkX3NwYWNlIDwgMFxuICB0aGVuXG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJvdmVyZmxvdyB3aGVuIHJlc2VydmluZyBzcGFjZVwiICh0LnJlc2VydmVkX3NwYWNlIDogaW50KSAobiA6IGludCldO1xuICB0LnJlc2VydmVkX3NwYWNlIDwtIHJlc2VydmVkX3NwYWNlO1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IGZpbGxfYmxvY2tlZF9yZWFkcyB0ID1cbiAgd2hpbGUgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKSkgJiYgbm90IChpc19lbXB0eSB0KSBkb1xuICAgIGxldCBibG9ja2VkX3JlYWQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfcmVhZHMgaW5cbiAgICBsZXQgY29uc3VtZXIgPSBibG9ja2VkX3JlYWQuY29uc3VtZXIgaW5cbiAgICBtYXRjaCBibG9ja2VkX3JlYWQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGBPa1xuICAgIHwgT25lIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpXG4gICAgfCBBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKSlcbiAgZG9uZVxuOztcblxubGV0IGRlY3JlYXNlX3Jlc2VydmVkX3NwYWNlIHQgbiA9IHQucmVzZXJ2ZWRfc3BhY2UgPC0gSW50Lm1heCAwICh0LnJlc2VydmVkX3NwYWNlIC0gbilcblxuKCogY2hlY2tzIGFsbCBpbnZhcmlhbnRzLCBjYWxscyBhIHBhc3NlZCBpbiBmIHRvIGhhbmRsZSBhIHdyaXRlLCB0aGVuIHVwZGF0ZXMgcmVhZHMgYW5kXG4gICBwdXNoYmFjayAqKVxubGV0IHN0YXJ0X3dyaXRlIHQgfnNpemUgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJ3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIndyaXRlIHRvIGNsb3NlZCBwaXBlXCIgfnBpcGU6KHQgOiAoXywgXykgdCldO1xuICBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB0IHNpemVcbjs7XG5cbmxldCBmaW5pc2hfd3JpdGUgdCA9XG4gIGZpbGxfYmxvY2tlZF9yZWFkcyB0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbSA9XG4gIHN0YXJ0X3dyaXRlIHQgfnNpemU6KFF1ZXVlLmxlbmd0aCBmcm9tKTtcbiAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOmZyb20gfmRzdDp0LmJ1ZmZlciAoKTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB0cmFuc2Zlcl9pbiB0IH5mcm9tID1cbiAgdHJhbnNmZXJfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb20gPVxuICBzdGFydF93cml0ZSB0IH5zaXplOihRdWV1ZS5sZW5ndGggZnJvbSk7XG4gIFF1ZXVlLml0ZXIgZnJvbSB+ZjooZnVuIHggLT4gUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB4KTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbigqIFt3cml0ZSddIGlzIHVzZWQgaW50ZXJuYWxseSAqKVxubGV0IHdyaXRlJyB0IHEgPSB0cmFuc2Zlcl9pbiB0IH5mcm9tOnFcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZSA9XG4gIHN0YXJ0X3dyaXRlIHQgfnNpemU6MTtcbiAgUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB2YWx1ZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZSB0IHZhbHVlID1cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgd3JpdGVfd2hlbl9yZWFkeSB0IH5mID1cbiAgbGV0JW1hcCAoKSA9IHB1c2hiYWNrIHQgaW5cbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiBgQ2xvc2VkIGVsc2UgYE9rIChmIChmdW4geCAtPiB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCkpXG47O1xuXG5sZXQgd3JpdGVfaWZfb3BlbiB0IHggPSBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlIHQgeCBlbHNlIHJldHVybiAoKVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIHQgeCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHhcbjs7XG5cbmxldCBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyA/Y29uc3VtZXIgdCA9XG4gIG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjb25zdW1lciAtPlxuICAgIGlmIHQuaWQgPD4gQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lclxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJBdHRlbXB0IHRvIHVzZSBjb25zdW1lciB3aXRoIHdyb25nIHBpcGVcIlxuICAgICAgICAgICAgKGNvbnN1bWVyIDogQ29uc3VtZXIudClcbiAgICAgICAgICAgIH5waXBlOih0IDogXyBSZWFkZXIudCldXG47O1xuXG5sZXQgc3RhcnRfcmVhZCA/Y29uc3VtZXIgdCBsYWJlbCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBsYWJlbCB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyXG47O1xuXG5sZXQgZ2VuX3JlYWRfbm93ID9jb25zdW1lciB0IGNvbnN1bWUgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkX25vd1wiID9jb25zdW1lcjtcbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYEVvZiBlbHNlIGBOb3RoaW5nX2F2YWlsYWJsZVxuICBlbHNlIChcbiAgICBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgKCogZnJvbSBbaW52YXJpYW50XSBhbmQgW25vdCAoaXNfZW1wdHkgdCldICopXG4gICAgYE9rIChjb25zdW1lIHQgY29uc3VtZXIpKVxuOztcblxubGV0IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoID1cbiAgbWF0Y2ggbWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gIHwgU29tZSBtYXhfcXVldWVfbGVuZ3RoIC0+XG4gICAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA8PSAwXG4gICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIm1heF9xdWV1ZV9sZW5ndGggPD0gMFwiIChtYXhfcXVldWVfbGVuZ3RoIDogaW50KV07XG4gICAgbWF4X3F1ZXVlX2xlbmd0aFxuOztcblxubGV0IHJlYWRfbm93JyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIChmdW4gdCBjb25zdW1lciAtPiBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpXG47O1xuXG5sZXQgcmVhZF9ub3cgP2NvbnN1bWVyIHQgPSBnZW5fcmVhZF9ub3cgdCA/Y29uc3VtZXIgY29uc3VtZV9vbmVcbmxldCBwZWVrIHQgPSBRdWV1ZS5wZWVrIHQuYnVmZmVyXG5cbmxldCBjbGVhciB0ID1cbiAgbWF0Y2ggcmVhZF9ub3cnIHQgd2l0aFxuICB8IGBFb2YgfCBgTm90aGluZ19hdmFpbGFibGUgfCBgT2sgXyAtPiAoKVxuOztcblxubGV0IHJlYWQnID9jb25zdW1lciA/bWF4X3F1ZXVlX2xlbmd0aCB0ID1cbiAgbGV0IG1heF9xdWV1ZV9sZW5ndGggPSBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCBpblxuICBzdGFydF9yZWFkIHQgXCJyZWFkJ1wiID9jb25zdW1lcjtcbiAgbWF0Y2ggcmVhZF9ub3cnIHQgP2NvbnN1bWVyIH5tYXhfcXVldWVfbGVuZ3RoIHdpdGhcbiAgfCAoYE9rIF8gfCBgRW9mKSBhcyByIC0+IHJldHVybiByXG4gIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfcmVhZHNcbiAgICAgICAgKEJsb2NrZWRfcmVhZC5jcmVhdGUgKEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpKSBjb25zdW1lcikpXG47O1xuXG5sZXQgcmVhZCA/Y29uc3VtZXIgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgdGhlbiByZXR1cm4gYEVvZlxuICAgIGVsc2VcbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChPbmUgaXZhcikpIGNvbnN1bWVyKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHJldHVybiAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSkpXG47O1xuXG5sZXQgcmVhZF9leG4gP2NvbnN1bWVyIHQgPVxuICBtYXRjaCVtYXAgcmVhZCA/Y29uc3VtZXIgdCB3aXRoXG4gIHwgYE9rIHZhbHVlIC0+IHZhbHVlXG4gIHwgYEVvZiAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leG46IHJlY2VpdmVkIEVPRlwiXVxuOztcblxubGV0IHZhbHVlc19hdmFpbGFibGUgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInZhbHVlc19hdmFpbGFibGVcIjtcbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiBgT2tcbiAgZWxzZSBpZiBpc19jbG9zZWQgdFxuICB0aGVuIHJldHVybiBgRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIFF1ZXVlLmxhc3QgdC5ibG9ja2VkX3JlYWRzIHdpdGhcbiAgICB8IFNvbWUgeyBjb25zdW1lciA9IE5vbmU7IHdhbnRzID0gWmVybyBpdmFyIH0gLT5cbiAgICAgICgqIFRoaXMgY2FzZSBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIG11bHRpcGxlIGNhbGxzIHRvIFt2YWx1ZXNfYXZhaWxhYmxlXSBpblxuICAgICAgICAgc2VxdWVuY2UuICBJdCBjYXVzZXMgdGhlbSB0byBhbGwgc2hhcmUgdGhlIHNhbWUgaXZhciwgcmF0aGVyIHRoYW4gYWxsb2NhdGVcbiAgICAgICAgIGFuIGl2YXIgcGVyIGNhbGwuICopXG4gICAgICBJdmFyLnJlYWQgaXZhclxuICAgIHwgXyAtPlxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBRdWV1ZS5lbnF1ZXVlIHQuYmxvY2tlZF9yZWFkcyAoQmxvY2tlZF9yZWFkLihjcmVhdGUgKFplcm8gaXZhcikpIE5vbmUpKSlcbjs7XG5cbmxldCByZWFkX2Nob2ljZSB0ID0gY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIHQpIChmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT4gcmVhZF9ub3cgdClcblxubGV0IHJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG4gdCBoZXJlID1cbiAgRGVmZXJyZWQuQ2hvaWNlLm1hcCAocmVhZF9jaG9pY2UgdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCAoYE9rIF8gfCBgRW9mKSBhcyB4IC0+IHhcbiAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIlBpcGUucmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4bjogY2hvaWNlIHdhcyBlbmFibGVkIGJ1dCBwaXBlIGlzIGVtcHR5OyBcXFxuICAgICAgICAgICB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbiB3aXRoIG9uZSBvciBtb3JlIG90aGVyIGNvbnN1bWVyc1wiXG4gICAgICAgICAgICAoaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXSlcbjs7XG5cbigqIFtyZWFkX2V4YWN0bHkgdCB+bnVtX3ZhbHVlc10gbG9vcHMsIGdldHRpbmcgeW91IGFsbCBbbnVtX3ZhbHVlc10gaXRlbXMsIHVwXG4gICB0byBFT0YuICopXG5sZXQgcmVhZF9leGFjdGx5ID9jb25zdW1lciB0IH5udW1fdmFsdWVzID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9leGFjdGx5XCIgP2NvbnN1bWVyO1xuICBpZiBudW1fdmFsdWVzIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leGFjdGx5IGdvdCBudW1fdmFsdWVzIDw9IDBcIiAobnVtX3ZhbHVlcyA6IGludCldO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2ggLT5cbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBRdWV1ZS5sZW5ndGggcmVzdWx0IGluXG4gICAgICBhc3NlcnQgKGFscmVhZHlfcmVhZCA8PSBudW1fdmFsdWVzKTtcbiAgICAgIGlmIGFscmVhZHlfcmVhZCA9IG51bV92YWx1ZXNcbiAgICAgIHRoZW4gSXZhci5maWxsIGZpbmlzaCAoYEV4YWN0bHkgcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICByZWFkJyA/Y29uc3VtZXIgdCB+bWF4X3F1ZXVlX2xlbmd0aDoobnVtX3ZhbHVlcyAtIGFscmVhZHlfcmVhZClcbiAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoIChpZiBhbHJlYWR5X3JlYWQgPSAwIHRoZW4gYEVvZiBlbHNlIGBGZXdlciByZXN1bHQpXG4gICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgaW5cbiAgICBsb29wICgpKVxuOztcblxubGV0IGRvd25zdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgaWYgTGlzdC5pc19lbXB0eSB0LmNvbnN1bWVyc1xuICAgIHRoZW4gcmV0dXJuIGBPa1xuICAgIGVsc2VcbiAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgKExpc3QubWFwIHQuY29uc3VtZXJzIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQpXG4gIGVsc2VcbiAgICAoKiBbdF0gbWlnaHQgYmUgY2xvc2VkLiAgQnV0IHRoZSByZWFkIGVuZCBjYW4ndCBiZSBjbG9zZWQsIGJlY2F1c2UgaWYgaXQgd2VyZSwgdGhlblxuICAgICAgIFt0XSB3b3VsZCBiZSBlbXB0eS4gIElmIHRoZSB3cml0ZSBlbmQgaXMgY2xvc2VkIGJ1dCBub3QgdGhlIHJlYWQgZW5kLCB0aGVuIHdlIHdhbnRcbiAgICAgICB0byBlbnF1ZXVlIGEgYmxvY2tlZCBmbHVzaCBiZWNhdXNlIHRoZSBlbnF1ZXVlZCB2YWx1ZXMgbWF5IGdldCByZWFkLiAqKVxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlYWR5IC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlXG4gICAgICAgIHQuYmxvY2tlZF9mbHVzaGVzXG4gICAgICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA9IHQubnVtX3ZhbHVlc19yZWFkICsgbGVuZ3RoIHQ7IHJlYWR5IH0pXG47O1xuXG4oKiBJbiBwcmFjdGljZSwgYWxvbmcgd2l0aCBbTGluay5jcmVhdGVdIGFuZCBbYWRkX3Vwc3RyZWFtX2ZsdXNoZWRdLCBbdXBzdHJlYW1fZmx1c2hlZF1cbiAgIHRyYXZlcnNlcyB0aGUgZ3JhcGggb2YgbGlua2VkIHBpcGVzIHVwIHRvIHRoZSBoZWFkcyBhbmQgdGhlbiBjYWxscyBbZG93bnN0cmVhbV9mbHVzaGVkXVxuICAgb24gdGhlbS4gKilcbmxldCB1cHN0cmVhbV9mbHVzaGVkIHQgPVxuICBpZiBCYWcuaXNfZW1wdHkgdC51cHN0cmVhbV9mbHVzaGVkc1xuICB0aGVuIGRvd25zdHJlYW1fZmx1c2hlZCB0XG4gIGVsc2VcbiAgICBCYWcudG9fbGlzdCB0LnVwc3RyZWFtX2ZsdXNoZWRzXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBmIC0+IGYgKCkpXG4gICAgfD4gRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuOztcblxubGV0IGFkZF91cHN0cmVhbV9mbHVzaGVkIHQgdXBzdHJlYW1fZmx1c2hlZCA9IEJhZy5hZGQgdC51cHN0cmVhbV9mbHVzaGVkcyB1cHN0cmVhbV9mbHVzaGVkXG5cbmxldCBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgbGV0IGNvbnN1bWVyID0gQ29uc3VtZXIuY3JlYXRlIH5waXBlX2lkOnQuaWQgfmRvd25zdHJlYW1fZmx1c2hlZCBpblxuICB0LmNvbnN1bWVycyA8LSBjb25zdW1lciA6OiB0LmNvbnN1bWVycztcbiAgY29uc3VtZXJcbjs7XG5cbigqIEEgW0xpbmsudF0gbGlua3MgZmx1c2hpbmcgb2YgdHdvIHBpcGVzIHRvZ2V0aGVyLiAqKVxubW9kdWxlIExpbmsgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVwc3RyZWFtOihfLCBfKSBwaXBlIC0+IGRvd25zdHJlYW06KF8sIF8pIHBpcGUgLT4gdFxuICB2YWwgY29uc3VtZXIgOiB0IC0+IENvbnN1bWVyLnRcblxuICAoKiBbdW5saW5rX3Vwc3RyZWFtXSByZW1vdmVzIGRvd25zdHJlYW0ncyByZWZlcmVuY2UgdG8gdXBzdHJlYW0uICopXG5cbiAgdmFsIHVubGlua191cHN0cmVhbSA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdW5wYWNrZWQgPVxuICAgIHsgZG93bnN0cmVhbSA6ICgnYSwgJ2IpIHRcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudFxuICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA6ICh1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudCkgQmFnLkVsdC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBjb25zdW1lciAoVCB0KSA9IHQuY29uc3VtZXJcblxuICBsZXQgY3JlYXRlIH51cHN0cmVhbSB+ZG93bnN0cmVhbSA9XG4gICAgVFxuICAgICAgeyBkb3duc3RyZWFtXG4gICAgICA7IGNvbnN1bWVyID1cbiAgICAgICAgICBhZGRfY29uc3VtZXIgdXBzdHJlYW0gfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSlcbiAgICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA9XG4gICAgICAgICAgYWRkX3Vwc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSAoZnVuICgpIC0+IHVwc3RyZWFtX2ZsdXNoZWQgdXBzdHJlYW0pXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IHVubGlua191cHN0cmVhbSAoVCB0KSA9XG4gICAgQmFnLnJlbW92ZSB0LmRvd25zdHJlYW0udXBzdHJlYW1fZmx1c2hlZHMgdC51cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZsdXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnN1bWVyIG9mIENvbnN1bWVyLnRcbiAgICB8IFdoZW5fdmFsdWVfcHJvY2Vzc2VkXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZm9sZF9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgID8oZmx1c2hlZCA9IEZsdXNoZWQuV2hlbl92YWx1ZV9yZWFkKVxuICAgICAgdFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gID1cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBtYXRjaCBmbHVzaGVkIHdpdGhcbiAgICB8IFdoZW5fdmFsdWVfcmVhZCAtPiBOb25lXG4gICAgfCBDb25zdW1lciBjb25zdW1lciAtPiBTb21lIGNvbnN1bWVyXG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZCAtPlxuICAgICAgKCogVGhlIGZhY3QgdGhhdCBcIm5vIGNvbnN1bWVyXCIgYmVoYXZlcyBkaWZmZXJlbnQgZnJvbSBcInRyaXZpYWwgY29uc3VtZXJcIiBpcyB3ZWlyZCxcbiAgICAgICAgIGJ1dCB0aGF0J3MgaG93IHRoZSBjb25zdW1lciBtYWNoaW5lcnkgd29ya3MuICopXG4gICAgICBTb21lIChhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT4gcmV0dXJuIGBPaykpXG4gIGluXG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3ZhbHVlc19hdmFpbGFibGUgdCA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS5cbiAgICAgICBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgKCogWzFdIEZvciBuZXcgZW1wdHkgcGlwZXMgY3JlYXRlZCBhdCB0b3AtbGV2ZWwgd2Ugd2FudCB0byBhdm9pZCBpbW1lZGlhdGVseVxuICAgICAgIHNjaGVkdWxpbmcgYSBqb2Igb24gdGhlIHNjaGVkdWxlciAoc2VlIFtTY2hlZHVsZXIucmFpc2VfaWZfYW55X2pvYnNfd2VyZV9zY2hlZHVsZWRdKS5cbiAgICAgICBKdXN0IFtyZXR1cm4gKCkgPj4+XSBkb2Vzbid0IHdvcms6IFtyZXR1cm4gKCldIGNyZWF0ZXMgYSBmdWxsIGl2YXIgdGhhdCBjYXVzZXNcbiAgICAgICBbPj4+XSB0byBzY2hlZHVsZSBhIGpvYi4gKilcbiAgICB2YWx1ZXNfYXZhaWxhYmxlIHRcbiAgICA+Pj4gZnVuIChfIDogWyBgT2sgfCBgRW9mIF0pIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCBiXG4gICAgICB8IGBPayB2IC0+IGYgYiB2IGNvbnRpbnVlXG4gICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IGxvb3AgYlxuICAgIGFuZCBjb250aW51ZSBiID1cbiAgICAgIE9wdGlvbi5pdGVyIGNvbnN1bWVyIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW07XG4gICAgICBsb29wIGJcbiAgICBpblxuICAgIGxvb3AgaW5pdClcbjs7XG5cbmxldCBmb2xkJyA/Zmx1c2hlZCA/bWF4X3F1ZXVlX2xlbmd0aCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgcSBsb29wIC0+XG4gICAgZiBiIHEgPj4+IGxvb3ApXG47O1xuXG5sZXQgZm9sZCA/Zmx1c2hlZCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgYSBsb29wIC0+IGYgYiBhID4+PiBsb29wKVxuOztcblxubGV0IGZvbGRfd2l0aG91dF9wdXNoYmFjayA/Y29uc3VtZXIgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuXG4gICAgcmVhZF9ub3dcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGIgYSBsb29wIC0+IGxvb3AgKGYgYiBhKSlcbiAgICA/Zmx1c2hlZDpcbiAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgYyAtPiBTb21lIChDb25zdW1lciBjKSlcbjs7XG5cbmxldCB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpIGYgYSA9XG4gIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICB0aGVuIGYgYVxuICBlbHNlIChcbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAoZnVuICgpIC0+IGYgYSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgKE1vbml0b3IuZXh0cmFjdF9leG4gZXhuKSlcbjs7XG5cbmxldCBpdGVyJyA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+ZiA9XG4gIGZvbGQnID9tYXhfcXVldWVfbGVuZ3RoID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBxIC0+XG4gICAgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgP2NvbnRpbnVlX29uX2Vycm9yIGYgcSlcbjs7XG5cbmxldCBpdGVyID9jb250aW51ZV9vbl9lcnJvciA/Zmx1c2hlZCB0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgbG9vcCAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIGEgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuOztcblxuKCogW2l0ZXJfd2l0aG91dF9wdXNoYmFja10gaXMgYSBjb21tb24gY2FzZSwgc28gd2UgaW1wbGVtZW50IGl0IGluIGFuIG9wdGltaXplZCBtYW5uZXIsXG4gICByYXRoZXIgdGhhbiB2aWEgW2l0ZXJdLiAgVGhlIGltcGxlbWVudGF0aW9uIHJlYWRzIG9ubHkgb25lIGVsZW1lbnQgYXQgYSB0aW1lLCBzbyB0aGF0XG4gICBpZiBbZl0gY2xvc2VzIFt0XSBvciByYWlzZXMsIG5vIG1vcmUgZWxlbWVudHMgd2lsbCBiZSByZWFkLiAqKVxubGV0IGl0ZXJfd2l0aG91dF9wdXNoYmFja1xuICAgICAgP2NvbnN1bWVyXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpXG4gICAgICA/bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgICAgdFxuICAgICAgfmZcbiAgPVxuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lcjtcbiAgbGV0IG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPVxuICAgIG1hdGNoIG1heF9pdGVyYXRpb25zX3Blcl9qb2Igd2l0aFxuICAgIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBTb21lIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgLT5cbiAgICAgIGlmIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPD0gMFxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIml0ZXJfd2l0aG91dF9wdXNoYmFjayBnb3Qgbm9uLXBvc2l0aXZlIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcIlxuICAgICAgICAgICAgICAobWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA6IGludCldO1xuICAgICAgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICBpblxuICBsZXQgZiA9XG4gICAgaWYgbm90IGNvbnRpbnVlX29uX2Vycm9yXG4gICAgdGhlbiBmXG4gICAgZWxzZVxuICAgICAgZnVuIGEgLT5cbiAgICAgICAgdHJ5IGYgYSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuXG4gIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3ZhbHVlc19hdmFpbGFibGUgdCA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS5cbiAgICAgICBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgdmFsdWVzX2F2YWlsYWJsZSB0XG4gICAgPj4+IGZ1biAoXyA6IFsgYE9rIHwgYEVvZiBdKSAtPlxuICAgIGxldCByZWMgc3RhcnQgKCkgPSBsb29wIH5yZW1haW5pbmc6bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgIGFuZCBsb29wIH5yZW1haW5pbmcgPVxuICAgICAgaWYgcmVtYWluaW5nID0gMFxuICAgICAgdGhlbiByZXR1cm4gKCkgPj4+IGZ1biAoKSAtPiBzdGFydCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCAoKVxuICAgICAgICB8IGBPayBhIC0+XG4gICAgICAgICAgZiBhO1xuICAgICAgICAgIGxvb3AgfnJlbWFpbmluZzoocmVtYWluaW5nIC0gMSlcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBzdGFydCAoKSlcbiAgICBpblxuICAgIHN0YXJ0ICgpKVxuOztcblxubGV0IGRyYWluIHQgPSBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG5sZXQgZHJhaW5fYW5kX2NvdW50IHQgPSBmb2xkJyB0IH5pbml0OjAgfmY6KGZ1biBzdW0gcSAtPiByZXR1cm4gKHN1bSArIFF1ZXVlLmxlbmd0aCBxKSlcblxubGV0IHJlYWRfYWxsIGlucHV0ID1cbiAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQlbWFwICgpID1cbiAgICBpdGVyJyBpbnB1dCB+ZjooZnVuIHEgLT5cbiAgICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpxIH5kc3Q6cmVzdWx0ICgpO1xuICAgICAgcmV0dXJuICgpKVxuICBpblxuICByZXN1bHRcbjs7XG5cbmxldCB0b19saXN0IHIgPSByZWFkX2FsbCByID4+fCBRdWV1ZS50b19saXN0XG5cbmxldCB0b19zdHJlYW1fZGVwcmVjYXRlZCB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KVxuICAgID4+PiBmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbigqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBbb2Zfc3RyZWFtX2RlcHJlY2F0ZWRdIGRvZXMgYXMgbXVjaCBiYXRjaGluZyBhcyBwb3NzaWJsZS4gIEl0XG4gICBncmFicyBhcyBtYW55IGl0ZW1zIGFzIGFyZSBhdmFpbGFibGUgaW50byBhbiBpbnRlcm5hbCBxdWV1ZS4gIE9uY2UgaXQgaGFzIGdyYWJiZWRcbiAgIGV2ZXJ5dGhpbmcsIGl0IHdyaXRlcyBpdCB0byB0aGUgcGlwZSBhbmQgdGhlbiBibG9ja3Mgd2FpdGluZyBmb3IgdGhlIG5leHQgZWxlbWVudCBmcm9tXG4gICB0aGUgc3RyZWFtLlxuXG4gICBUaGVyZSdzIG5vIHBvc3NpYmlsaXR5IHRoYXQgd2UnbGwgc3RhcnZlIHRoZSBwaXBlIHJlYWRpbmcgYW4gZW5kbGVzcyBzdHJlYW0sIGp1c3RcbiAgIGFjY3VtdWxhdGluZyB0aGUgZWxlbWVudHMgaW50byBvdXIgcHJpdmF0ZSBxdWV1ZSBmb3JldmVyIHdpdGhvdXQgZXZlciB3cml0aW5nIHRoZW1cbiAgIGRvd25zdHJlYW0gdG8gdGhlIHBpcGUuICBXaHk/IGJlY2F1c2Ugd2hpbGUgd2UncmUgcnVubmluZywgdGhlIHN0cmVhbS1wcm9kdWNlciAqaXNuJ3QqXG4gICBydW5uaW5nIC0tIHRoZXJlIGFyZSBubyBBc3luYyBibG9jayBwb2ludHMgaW4gdGhlIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3AuICBTbyB0aGVcbiAgIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3Agd2lsbCBldmVudHVhbGx5IGNhdGNoIHVwIHRvIHRoZSBjdXJyZW50IHN0cmVhbSB0YWlsLCBhdCB3aGljaFxuICAgcG9pbnQgd2UnbGwgZG8gdGhlIHBpcGUtd3JpdGUgYW5kIHRoZW4gYmxvY2sgb24gdGhlIHN0cmVhbS4uLiB0aHVzIGdpdmluZyB0aGVcbiAgIHN0cmVhbS1wcm9kdWNlciBhIGNoYW5jZSB0byBtYWtlIG1vcmUgZWxlbWVudHMuXG5cbiAgIE9uZSBjYW4ndCBpbXBsZW1lbnQgW29mX3N0cmVhbV0gdXNpbmcgW1N0cmVhbS5pdGVyXSBvciBbU3RyZWFtLml0ZXInXSBiZWNhdXNlIHlvdVxuICAgbmVlZCB0byBiZSBhYmxlIHRvIHN0b3AgZWFybHkgd2hlbiB0aGUgY29uc3VtZXIgY2xvc2VzIHRoZSBwaXBlLiAgQWxzbywgdXNpbmcgZWl0aGVyXG4gICBvZiB0aG9zZSB3b3VsZCBlbnRhaWwgc2lnbmlmaWNhbnRseSBtb3JlIGRlZmVycmVkIG92ZXJoZWFkLCB3aGVyZWFzIHRoZSBiZWxvd1xuICAgaW1wbGVtZW50YXRpb24gdXNlcyBhIGRlZmVycmVkIG9ubHkgd2hlbiBpdCBuZWVkcyB0byB3YWl0IGZvciBkYXRhIGZyb20gdGhlIHN0cmVhbS4gKilcbmxldCBvZl9zdHJlYW1fZGVwcmVjYXRlZCBzID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHEgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHRyYW5zZmVyICgpID1cbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHEpXG4gICAgdGhlblxuICAgICAgKCogQ2FuIG5vdCBwdXNoYmFjayBvbiB0aGUgc3RyZWFtLCBzbyBpZ25vcmUgdGhlIHB1c2hiYWNrIG9uIHRoZSBwaXBlLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKHdyaXRlJyB3IHEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzID1cbiAgICBhc3NlcnQgKG5vdCAoaXNfY2xvc2VkIHcpKTtcbiAgICBsZXQgbmV4dF9kZWZlcnJlZCA9IFN0cmVhbS5uZXh0IHMgaW5cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIG5leHRfZGVmZXJyZWQgd2l0aFxuICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0XG4gICAgfCBOb25lIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIHVwb24gbmV4dF9kZWZlcnJlZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0XG4gIGFuZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0IG5leHQgPSBpZiBub3QgKGlzX2Nsb3NlZCB3KSB0aGVuIGxvb3BfbmV4dCBuZXh0XG4gIGFuZCBsb29wX25leHQgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIGNsb3NlIHdcbiAgICB8IENvbnMgKHgsIHMpIC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlIHEgeDtcbiAgICAgIGxvb3Agc1xuICBpblxuICBsb29wIHM7XG4gIHJcbjs7XG5cbmxldCB0cmFuc2Zlcl9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgIHdyaXRlXG4gICAgICBpbnB1dFxuICAgICAgb3V0cHV0XG4gICAgICB+ZlxuICA9XG4gIGlmICFjaGVja19pbnZhcmlhbnRcbiAgdGhlbiAoXG4gICAgaW52YXJpYW50IGlucHV0O1xuICAgIGludmFyaWFudCBvdXRwdXQpO1xuICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dCB+ZG93bnN0cmVhbTpvdXRwdXQgaW5cbiAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICgqIFdoZW4gd2UncmUgZG9uZSB3aXRoIFtpbnB1dF0sIHdlIHVubGluayB0byByZW1vdmUgcG9pbnRlcnMgZnJvbVxuICAgICBbb3V0cHV0XSB0byBbaW5wdXRdLCB3aGljaCB3b3VsZCBjYXVzZSBhIHNwYWNlIGxlYWsgaWYgd2UgaGFkIHNpbmdsZSBsb25nLWxpdmVkXG4gICAgIG91dHB1dCBpbnRvIHdoaWNoIHdlIHRyYW5zZmVyIGxvdHMgb2Ygc2hvcnQtbGl2ZWQgaW5wdXRzLiAqKVxuICBsZXQgdW5saW5rICgpID0gTGluay51bmxpbmtfdXBzdHJlYW0gbGluayBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKCkgPVxuICAgICAgY2hvb3NlIFsgY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIGlucHV0KSBpZ25vcmU7IGNob2ljZSAoY2xvc2VkIG91dHB1dCkgaWdub3JlIF1cbiAgICBpblxuICAgICgqIFdlIGRvIFtpbnB1dF9hdmFpbGFibGVfb3Jfb3V0cHV0X2Nsb3NlZCAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZFxuICAgICAgIGFzeW5jaHJvbm91c2x5LiBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IG91dHB1dF9jbG9zZWQgKCkgPVxuICAgICAgY2xvc2VfcmVhZCBpbnB1dDtcbiAgICAgIHVubGluayAoKTtcbiAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBpZiBpc19jbG9zZWQgb3V0cHV0XG4gICAgICB0aGVuIG91dHB1dF9jbG9zZWQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCByZWFkX25vdyBpbnB1dCB+Y29uc3VtZXIgd2l0aFxuICAgICAgICB8IGBFb2YgLT5cbiAgICAgICAgICB1bmxpbmsgKCk7XG4gICAgICAgICAgSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgICB8IGBPayB4IC0+IGYgeCBjb250aW51ZVxuICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBpbnB1dF9hdmFpbGFibGVfb3Jfb3V0cHV0X2Nsb3NlZCAoKSA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgYW5kIGNvbnRpbnVlIHkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHB1c2hiYWNrID0gd3JpdGUgb3V0cHV0IHkgaW5cbiAgICAgICAgQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgcHVzaGJhY2sgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCB0cmFuc2ZlcicgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0IH5mID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IHRyYW5zZmVyIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiByZWFkX25vdyB3cml0ZSBpbnB1dCBvdXRwdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcbjs7XG5cbmxldCB0cmFuc2Zlcl9pZCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCBvdXRwdXQgPVxuICB0cmFuc2Zlcl9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IG91dHB1dCB+ZjooZnVuIHEgayAtPiBrIHEpXG47O1xuXG5sZXQgbWFwX2dlbiByZWFkIHdyaXRlIGlucHV0IH5mID1cbiAgbGV0IGluZm8gPSBPcHRpb24ubWFwIGlucHV0LmluZm8gfmY6KGZ1biBpbmZvIC0+IFslc2V4cCBNYXBwZWQgKGluZm8gOiBTZXhwLnQpXSkgaW5cbiAgbGV0IHJlc3VsdCwgb3V0cHV0ID0gY3JlYXRlID9pbmZvICgpIGluXG4gIHVwb24gKHRyYW5zZmVyX2dlbiByZWFkIHdyaXRlIGlucHV0IG91dHB1dCB+ZikgKGZ1biAoKSAtPiBjbG9zZSBvdXRwdXQpO1xuICByZXN1bHRcbjs7XG5cbmxldCBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcF9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcblxubGV0IGNvbmNhdF9tYXBfbGlzdCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuY29uY2F0X21hcCBxIH5mKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biBxIC0+XG4gICAgRGVmZXJyZWQuUXVldWUuZmlsdGVyX21hcCB+aG93OmBTZXF1ZW50aWFsIHEgfmYpXG47O1xuXG5sZXQgZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuZmlsdGVyX21hcCBxIH5mOihmdW4geCAtPiBpZiBpc19yZWFkX2Nsb3NlZCBpbnB1dCB0aGVuIE5vbmUgZWxzZSBmIHgpKSlcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjY3VtID0gcmVmIGluaXQgaW5cbiAgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biB4IC0+XG4gICAgbGV0JW1hcCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjdW0gPSByZWYgaW5pdCBpblxuICBmaWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4geCAtPlxuICAgIGxldCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGZvbGRpbmdfZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZjooZnVuIGFjY3VtIGEgLT5cbiAgICBsZXQgYWNjdW0sIGIgPSBmIGFjY3VtIGEgaW5cbiAgICBhY2N1bSwgU29tZSBiKVxuOztcblxubGV0IGZpbHRlciBpbnB1dCB+ZiA9IGZpbHRlcl9tYXAgaW5wdXQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5cbmxldCBvZl9xdWV1ZV9pbnRlcm5hbCBxdWV1ZSA9XG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldDowIH5pbmZvOk5vbmUgfmluaXRpYWxfYnVmZmVyOnF1ZXVlIGluXG4gIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9xdWV1ZSBxdWV1ZSA9IG9mX3F1ZXVlX2ludGVybmFsIChRdWV1ZS5jb3B5IHF1ZXVlKVxubGV0IG9mX2xpc3QgbCA9IG9mX3F1ZXVlX2ludGVybmFsIChRdWV1ZS5vZl9saXN0IGwpXG5sZXQgZW1wdHkgKCkgPSBvZl9saXN0IFtdXG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCByZWFkZXIsIHdyaXRlciA9IGNyZWF0ZSAoKSBpblxuICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciB4O1xuICBjbG9zZSB3cml0ZXI7XG4gIHJlYWRlclxuOztcblxubGV0IHVuZm9sZCB+aW5pdDpzIH5mID1cbiAgKCogVG8gZ2V0IHNvbWUgYmF0Y2hpbmcsIHdlIHJ1biB0aGUgY29udGludWF0aW9uIGltbWVkaWF0ZWx5IGlmIHRoZSBkZWZlcnJlZCBpc1xuICAgICBkZXRlcm1pbmVkLiAgSG93ZXZlciwgd2UgYWx3YXlzIGNoZWNrIGZvciBwdXNoYmFjay4gIEJlY2F1c2Ugc2l6ZSBidWRnZXQgY2FuJ3QgYmVcbiAgICAgaW5maW5pdGUsIHRoZSBiZWxvdyBsb29wIGlzIGd1YXJhbnRlZWQgdG8gZXZlbnR1YWxseSB5aWVsZCB0byB0aGUgc2NoZWR1bGVyLiAqKVxuICBsZXQgKCA+Pj1+ICkgZCBmID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgIHwgTm9uZSAtPiBkID4+PSBmXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGNyZWF0ZV9yZWFkZXIgfmNsb3NlX29uX2V4Y2VwdGlvbjpmYWxzZSAoZnVuIHdyaXRlciAtPlxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgIGYgc1xuICAgICAgPj49fiBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IHJldHVybiAoKVxuICAgICAgfCBTb21lIChhLCBzKSAtPlxuICAgICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHRoZW4gcmV0dXJuICgpIGVsc2Ugd3JpdGUgd3JpdGVyIGEgPj49fiBmdW4gKCkgLT4gbG9vcCBzXG4gICAgaW5cbiAgICBsb29wIHMpXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICBjcmVhdGVfcmVhZGVyIH5jbG9zZV9vbl9leGNlcHRpb246ZmFsc2UgKGZ1biB3cml0ZXIgLT5cbiAgICBsZXQgcmVjIGVucXVldWVfbiBzZXF1ZW5jZSBpID1cbiAgICAgIGlmIGkgPD0gMFxuICAgICAgdGhlbiBzZXF1ZW5jZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgc2VxdWVuY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2VxdWVuY2VcbiAgICAgICAgfCBTb21lIChhLCBzZXF1ZW5jZSkgLT5cbiAgICAgICAgICBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB3cml0ZXIgMTtcbiAgICAgICAgICBRdWV1ZS5lbnF1ZXVlIHdyaXRlci5idWZmZXIgYTtcbiAgICAgICAgICBlbnF1ZXVlX24gc2VxdWVuY2UgKGkgLSAxKSlcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBzZXF1ZW5jZSA9XG4gICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHx8IFNlcXVlbmNlLmlzX2VtcHR5IHNlcXVlbmNlXG4gICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtzaXplOjBdIGhlcmUgYXMgd2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc2VxdWVuY2Ugc3RhdGljYWxseS4gV2UnbGxcbiAgICAgICAgICAgY2FsbCBbZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2VdIGFzIHdlIGdvLlxuICAgICAgICAgICAoYWx0aG91Z2ggcmVhbGlzdGljYWxseSwgaXQncyBpbXBvc3NpYmxlIGZvciB0aGUgdXNlciB0byByZXNlcnZlIHNwYWNlIGluXG4gICAgICAgICAgIHRoaXMgcGlwZSBiZWNhdXNlIHlvdSBuZWVkIGEgcGlwZSB3cml0ZXIgZm9yIHRoYXQsIGJ1dCBbb2Zfc2VxdWVuY2VdIHJldHVybnNcbiAgICAgICAgICAgYSByZWFkZXIpICopXG4gICAgICAgIHN0YXJ0X3dyaXRlIHdyaXRlciB+c2l6ZTowO1xuICAgICAgICBsZXQgc2VxdWVuY2UgPSBlbnF1ZXVlX24gc2VxdWVuY2UgKDEgKyB3cml0ZXIuc2l6ZV9idWRnZXQgLSBsZW5ndGggd3JpdGVyKSBpblxuICAgICAgICBmaW5pc2hfd3JpdGUgd3JpdGVyO1xuICAgICAgICBsZXQlYmluZCAoKSA9IHB1c2hiYWNrIHdyaXRlciBpblxuICAgICAgICBsb29wIHNlcXVlbmNlKVxuICAgIGluXG4gICAgbG9vcCBzZXF1ZW5jZSlcbjs7XG5cbnR5cGUgJ2EgdG9fc2VxdWVuY2VfZWx0ID1cbiAgfCBWYWx1ZSBvZiAnYVxuICB8IFdhaXRfZm9yIDogXyBEZWZlcnJlZC50IC0+IF8gdG9fc2VxdWVuY2VfZWx0XG5cbmxldCB0b19zZXF1ZW5jZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0OigpIH5mOihmdW4gKCkgLT5cbiAgICBtYXRjaCByZWFkX25vdyB0IHdpdGhcbiAgICB8IGBFb2YgLT4gTm9uZVxuICAgIHwgYE9rIGEgLT4gU29tZSAoVmFsdWUgYSwgKCkpXG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gU29tZSAoV2FpdF9mb3IgKHZhbHVlc19hdmFpbGFibGUgdCksICgpKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlX3BpcGUgaW5wdXRzID1cbiAgbGV0IG91dHB1dCwgb3V0cHV0X3dyaXRlciA9IGNyZWF0ZSB+aW5mbzpbJXNleHAgXCJQaXBlLmludGVybGVhdmVcIl0gKCkgaW5cbiAgKCogV2Uga2VlcCBhIHJlZmVyZW5jZSBjb3VudCBvZiBhbGwgdGhlIHBpcGVzIHRoYXQgW2ludGVybGVhdmVfcGlwZV0gaXMgbWFuYWdpbmc7XG4gICAgIFtpbnB1dHNdIGNvdW50cyBhcyBvbmUuICBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVybywgd2Uga25vdyB0aGF0IGFsbFxuICAgICBwaXBlcyBhcmUgY2xvc2VkIGFuZCB3ZSBjYW4gY2xvc2UgW291dHB1dF93cml0ZXJdLiAqKVxuICBsZXQgbnVtX3BpcGVzX3JlbWFpbmluZyA9IHJlZiAxIGluXG4gIGxldCBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkgPVxuICAgIGRlY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICBpZiAhbnVtX3BpcGVzX3JlbWFpbmluZyA9IDAgdGhlbiBjbG9zZSBvdXRwdXRfd3JpdGVyXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCVtYXAgKCkgPVxuICAgICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPlxuICAgICAgICAgaW5jciBudW1fcGlwZXNfcmVtYWluaW5nO1xuICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgKGxldCVtYXAgKCkgPSB0cmFuc2Zlcl9pZCBpbnB1dCBvdXRwdXRfd3JpdGVyIGluXG4gICAgICAgICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpKVxuICAgICBpblxuICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpO1xuICAoKiBmb3IgW2lucHV0c10gKilcbiAgb3V0cHV0XG47O1xuXG5sZXQgaW50ZXJsZWF2ZSBpbnB1dHMgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIGlucHV0cyB+ZjppbnZhcmlhbnQ7XG4gIGludGVybGVhdmVfcGlwZSAob2ZfbGlzdCBpbnB1dHMpXG47O1xuXG5sZXQgbWVyZ2UgaW5wdXRzIH5jb21wYXJlID1cbiAgbWF0Y2ggaW5wdXRzIHdpdGhcbiAgfCBbXSAtPiBlbXB0eSAoKVxuICB8IFsgaW5wdXQgXSAtPiBpbnB1dFxuICB8IGlucHV0cyAtPlxuICAgIGxldCBtb2R1bGUgSGVhcCA9IFBhaXJpbmdfaGVhcCBpblxuICAgIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gICAgdXBvbiAoY2xvc2VkIHcpIChmdW4gKCkgLT4gTGlzdC5pdGVyIGlucHV0cyB+ZjpjbG9zZV9yZWFkKTtcbiAgICBsZXQgaGVhcCA9IEhlYXAuY3JlYXRlIH5jbXA6KGZ1biAoYTEsIF8pIChhMiwgXykgLT4gY29tcGFyZSBhMSBhMikgKCkgaW5cbiAgICBsZXQgaGFuZGxlX3JlYWQgaW5wdXQgZW9mX29yX29rID1cbiAgICAgIG1hdGNoIGVvZl9vcl9vayB3aXRoXG4gICAgICB8IGBFb2YgLT4gKClcbiAgICAgIHwgYE9rIHYgLT4gSGVhcC5hZGQgaGVhcCAodiwgaW5wdXQpXG4gICAgaW5cbiAgICBsZXQgcmVjIHBvcF9oZWFwX2FuZF9sb29wICgpID1cbiAgICAgICgqIEF0IHRoaXMgcG9pbnQsIGFsbCBpbnB1dHMgbm90IGF0IEVvZiBvY2N1ciBpbiBbaGVhcF0gZXhhY3RseSBvbmNlLCBzbyB3ZSBrbm93XG4gICAgICAgICB3aGF0IHRoZSBuZXh0IG91dHB1dCBlbGVtZW50IGlzLiAgW3BvcF9oZWFwX2FuZF9sb29wXSByZXBlYXRlZGx5IHRha2VzIGVsZW1lbnRzXG4gICAgICAgICBmcm9tIHRoZSBpbnB1dHMgYXMgbG9uZyBhcyBpdCBoYXMgb25lIGZyb20gZWFjaCBpbnB1dC4gIFRoaXMgaXMgZG9uZVxuICAgICAgICAgc3luY2hyb25vdXNseSB0byBhdm9pZCB0aGUgY29zdCBvZiBhIGRlZmVycmVkIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIG91dHB1dCAtLVxuICAgICAgICAgdGhlcmUncyBubyBuZWVkIHRvIHB1c2hiYWNrIHNpbmNlIHRoYXQgaXMgb25seSBtb3ZpbmcgZWxlbWVudHMgZnJvbSBvbmUgcGlwZSB0b1xuICAgICAgICAgYW5vdGhlci4gIEFzIHNvb24gYXMgW3BvcF9oZWFwX2FuZF9sb29wXSBjYW4ndCBnZXQgYW4gZWxlbWVudCBmcm9tIHNvbWUgaW5wdXQsIGl0XG4gICAgICAgICB3YWl0cyBvbiBwdXNoYmFjayBmcm9tIHRoZSBvdXRwdXQsIHNpbmNlIGl0IGhhcyB0byB3YWl0IG9uIHRoZSBpbnB1dCBhbnl3YXkuXG4gICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgW21lcmdlXSBmcm9tIGNvbnN1bWluZyBpbnB1dHMgYXQgYSByYXRlIGZhc3RlciB0aGFuIGl0cyBvdXRwdXRcbiAgICAgICAgIGlzIGNvbnN1bWVkLiAqKVxuICAgICAgbWF0Y2ggSGVhcC5wb3AgaGVhcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2xvc2Ugd1xuICAgICAgfCBTb21lICh2LCBpbnB1dCkgLT5cbiAgICAgICAgaWYgbm90IChpc19jbG9zZWQgdylcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3IHY7XG4gICAgICAgICAgaWYgSGVhcC5sZW5ndGggaGVhcCA9IDBcbiAgICAgICAgICB0aGVuIHVwb24gKHRyYW5zZmVyX2lkIGlucHV0IHcpIChmdW4gKCkgLT4gY2xvc2UgdylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJlYWRfbm93IGlucHV0IHdpdGhcbiAgICAgICAgICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgeCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKVxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgcHVzaGJhY2sgd1xuICAgICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgICAgIHJlYWQgaW5wdXRcbiAgICAgICAgICAgICAgPj4+IGZ1biB4IC0+XG4gICAgICAgICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHg7XG4gICAgICAgICAgICAgIHBvcF9oZWFwX2FuZF9sb29wICgpKSlcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3B1c2ggPVxuICAgICAgRGVmZXJyZWQuTGlzdC5pdGVyIH5ob3c6YFNlcXVlbnRpYWwgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT5cbiAgICAgICAgbGV0JW1hcCB4ID0gcmVhZCBpbnB1dCBpblxuICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4KVxuICAgIGluXG4gICAgdXBvbiBpbml0aWFsX3B1c2ggcG9wX2hlYXBfYW5kX2xvb3A7XG4gICAgclxuOztcblxubGV0IGNvbmNhdF9waXBlIGlucHV0cyA9XG4gIGxldCByID1cbiAgICBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gKGZ1biB3IC0+XG4gICAgICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dHMgfmRvd25zdHJlYW06dyBpblxuICAgICAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICAgICBpdGVyIH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT4gdHJhbnNmZXJfaWQgaW5wdXQgdykpXG4gIGluXG4gIHVwb24gKGNsb3NlZCByKSAoZnVuICgpIC0+IGNsb3NlIGlucHV0cyk7XG4gIHJcbjs7XG5cbmxldCBjb25jYXQgaW5wdXRzID1cbiAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgIERlZmVycmVkLkxpc3QuaXRlciB+aG93OmBTZXF1ZW50aWFsIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuOztcblxubGV0IGZvcmsgdCB+cHVzaGJhY2tfdXNlcyA9XG4gIGxldCByZWFkZXIwLCB3cml0ZXIwID0gY3JlYXRlICgpIGluXG4gIGxldCByZWFkZXIxLCB3cml0ZXIxID0gY3JlYXRlICgpIGluXG4gIGxldCBzb21lX3JlYWRlcl93YXNfY2xvc2VkID0gcmVmIGZhbHNlIGluXG4gIGxldCBjb25zdW1lciA9XG4gICAgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICBsZXQgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA9ICFzb21lX3JlYWRlcl93YXNfY2xvc2VkIGluXG4gICAgICBtYXRjaCVtYXBcbiAgICAgICAgRmx1c2hlZF9yZXN1bHQuY29tYmluZSBbIGRvd25zdHJlYW1fZmx1c2hlZCB3cml0ZXIwOyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMSBdXG4gICAgICB3aXRoXG4gICAgICB8IGBSZWFkZXJfY2xvc2VkIC0+IGBSZWFkZXJfY2xvc2VkXG4gICAgICB8IGBPayAtPlxuICAgICAgICAoKiBJbiB0aGlzIGNhc2UsIHRoZXJlIGNvdWxkIGhhdmUgYmVlbiBubyBwZW5kaW5nIGl0ZW1zIGluIFt3cml0ZXIwXSBub3IgaW5cbiAgICAgICAgICAgW3dyaXRlcjFdLCBpbiB3aGljaCBjYXNlIHdlIGNvdWxkIGhhdmUgaGFkIGEgY2xvc2VkIHBpcGUgdGhhdCBtaXNzZWQgc29tZVxuICAgICAgICAgICB3cml0ZXMsIGJ1dCBbRmx1c2hlZF9yZXN1bHQuY29tYmluZV0gd291bGQgc3RpbGwgaGF2ZSByZXR1cm5lZCBbYE9rXSAqKVxuICAgICAgICBpZiBzb21lX3JlYWRlcl93YXNfY2xvc2VkIHRoZW4gYFJlYWRlcl9jbG9zZWQgZWxzZSBgT2spXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCBzdGlsbF9vcGVuID0gWyB3cml0ZXIwOyB3cml0ZXIxIF0gaW5cbiAgICAgbGV0IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gPVxuICAgICAgICgqIE9ubHkgY2FsbCBbZmlsdGVyXSBhbmQgcmVhbGxvY2F0ZSBsaXN0IGlmIHNvbWV0aGluZyB3aWxsIGdldCBmaWx0ZXJlZCAqKVxuICAgICAgIGlmIG5vdCAoTGlzdC5leGlzdHMgc3RpbGxfb3BlbiB+Zjppc19jbG9zZWQpXG4gICAgICAgdGhlbiBzdGlsbF9vcGVuXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBzb21lX3JlYWRlcl93YXNfY2xvc2VkIDo9IHRydWU7XG4gICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IExpc3QuZmlsdGVyIHN0aWxsX29wZW4gfmY6KGZ1biB3IC0+IG5vdCAoaXNfY2xvc2VkIHcpKSBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuIHRoZW4gY2xvc2UgdDtcbiAgICAgICAgIHN0aWxsX29wZW4pXG4gICAgIGluXG4gICAgIGxldCViaW5kIHN0aWxsX29wZW4gPVxuICAgICAgIGZvbGQnIHQgfmZsdXNoZWQ6KENvbnN1bWVyIGNvbnN1bWVyKSB+aW5pdDpzdGlsbF9vcGVuIH5mOihmdW4gc3RpbGxfb3BlbiBxdWV1ZSAtPlxuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuIGluXG4gICAgICAgICBpZiBMaXN0LmlzX2VtcHR5IHN0aWxsX29wZW5cbiAgICAgICAgIHRoZW4gcmV0dXJuIFtdXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgICAgbWF0Y2ggcHVzaGJhY2tfdXNlcyB3aXRoXG4gICAgICAgICAgICAgfCBgRmFzdF9jb25zdW1lcl9vbmx5IC0+IERlZmVycmVkLmFueSAoTGlzdC5tYXAgc3RpbGxfb3BlbiB+ZjpwdXNoYmFjaylcbiAgICAgICAgICAgICB8IGBCb3RoX2NvbnN1bWVycyAtPiBEZWZlcnJlZC5hbGxfdW5pdCAoTGlzdC5tYXAgc3RpbGxfb3BlbiB+ZjpwdXNoYmFjaylcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuIGluXG4gICAgICAgICAgIExpc3QuaXRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBjb3B5X2luX3dpdGhvdXRfcHVzaGJhY2sgdyB+ZnJvbTpxdWV1ZSk7XG4gICAgICAgICAgIHN0aWxsX29wZW4pKVxuICAgICBpblxuICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjpjbG9zZTtcbiAgICAgcmV0dXJuICgpKTtcbiAgcmVhZGVyMCwgcmVhZGVyMVxuOztcblxubGV0IHNldF9pbmZvIHQgaW5mbyA9IHNldF9pbmZvIHQgKFNvbWUgaW5mbylcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgdCA9XG4gIHsgY3VycmVudF92YWx1ZSA6ICdhIE1vcHRpb24udFxuICA7IHRha2VuIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICA7IG11dGFibGUgdmFsdWVfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdmFsdWVfYXZhaWxhYmxlIHQgPSBJdmFyLnJlYWQgdC52YWx1ZV9hdmFpbGFibGVcbmxldCBpc19lbXB0eSB0ID0gTW9wdGlvbi5pc19ub25lIHQuY3VycmVudF92YWx1ZVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gKHQgOiBfIHQpID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y3VycmVudF92YWx1ZTooY2hlY2sgKE1vcHRpb24uaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH50YWtlbjooY2hlY2sgKEJ2YXIuaW52YXJpYW50IFVuaXQuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICB+dmFsdWVfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1biB2YWx1ZV9hdmFpbGFibGUgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAoSXZhci5pc19mdWxsIHZhbHVlX2F2YWlsYWJsZSlcbiAgICAgICAgICAgICB+ZXhwZWN0OihNb3B0aW9uLmlzX3NvbWUgdC5jdXJyZW50X3ZhbHVlKSkpKVxuOztcblxubGV0IHBlZWsgdCA9IE1vcHRpb24uZ2V0IHQuY3VycmVudF92YWx1ZVxuXG5sZXQgcGVla19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk12YXIucGVla19leG4gY2FsbGVkIG9uIGVtcHR5IG12YXJcIl07XG4gIE1vcHRpb24uZ2V0X3NvbWVfZXhuIHQuY3VycmVudF92YWx1ZVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gWyVzZXhwIChwZWVrIHQgOiBhIG9wdGlvbildXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHJlYWRfd3JpdGUpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5tb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHJlYWQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5sZXQgcmVhZF9vbmx5ICh0IDogKCdhLCBbPiByZWFkIF0pIHQpID0gKHQgOj4gKCdhLCByZWFkKSB0KVxubGV0IHdyaXRlX29ubHkgKHQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQpID0gKHQgOj4gKCdhLCB3cml0ZSkgdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gIHsgY3VycmVudF92YWx1ZSA9IE1vcHRpb24uY3JlYXRlICgpXG4gIDsgdGFrZW4gPSBCdmFyLmNyZWF0ZSAoKVxuICA7IHZhbHVlX2F2YWlsYWJsZSA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCB0YWtlX25vbmVtcHR5IHQgPVxuICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgciA9IE1vcHRpb24uZ2V0X3NvbWVfZXhuIHQuY3VycmVudF92YWx1ZSBpblxuICBNb3B0aW9uLnNldF9ub25lIHQuY3VycmVudF92YWx1ZTtcbiAgQnZhci5icm9hZGNhc3QgdC50YWtlbiAoKTtcbiAgdC52YWx1ZV9hdmFpbGFibGUgPC0gSXZhci5jcmVhdGUgKCk7XG4gIHJcbjs7XG5cbmxldCB0YWtlX25vd19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk12YXIudGFrZV9leG4gY2FsbGVkIG9uIGVtcHR5IG12YXJcIl07XG4gIHRha2Vfbm9uZW1wdHkgdFxuOztcblxubGV0IHRha2Vfbm93IHQgPSBpZiBub3QgKGlzX2VtcHR5IHQpIHRoZW4gU29tZSAodGFrZV9ub25lbXB0eSB0KSBlbHNlIE5vbmVcblxubGV0IHJlYyB0YWtlIHQgPVxuICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gIHRoZW4gcmV0dXJuICh0YWtlX25vbmVtcHR5IHQpXG4gIGVsc2UgKFxuICAgIGxldCViaW5kICgpID0gdmFsdWVfYXZhaWxhYmxlIHQgaW5cbiAgICB0YWtlIHQpXG47O1xuXG5sZXQgc2V0IHQgdiA9XG4gIE1vcHRpb24uc2V0X3NvbWUgdC5jdXJyZW50X3ZhbHVlIHY7XG4gIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnZhbHVlX2F2YWlsYWJsZSAoKVxuOztcblxubGV0IHVwZGF0ZSB0IH5mID0gc2V0IHQgKGYgKHBlZWsgdCkpXG5sZXQgdXBkYXRlX2V4biB0IH5mID0gc2V0IHQgKGYgKHBlZWtfZXhuIHQpKVxubGV0IHRha2VuIHQgPSBCdmFyLndhaXQgdC50YWtlblxuXG5sZXQgcmVjIHB1dCB0IHYgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gKFxuICAgIHNldCB0IHY7XG4gICAgcmV0dXJuICgpKVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHRha2VuIHQgaW5cbiAgICBwdXQgdCB2KVxuOztcblxubGV0IHBpcGVfd2hlbl9yZWFkeSB0ID1cbiAgbGV0IHIsIHcgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCViaW5kICgpID0gdmFsdWVfYXZhaWxhYmxlIHQgaW5cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHcpXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB0YWtlX25vdyB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wICgpXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBsZXQlYmluZCAoKSA9IFBpcGUud3JpdGUgdyB4IGluXG4gICAgICAgIGxvb3AgKCkpXG4gICAgZWxzZSByZXR1cm4gKClcbiAgaW5cbiAgZG9uJ3Rfd2FpdF9mb3IgKGxvb3AgKCkpO1xuICByXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3RhcnQgOiB1bml0IEl2YXIudFxuICAgIDsgcmVzdWx0IDogJ2EgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgPyhyZXN0X2V4biA9IGBMb2cpIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OnJlc3RfZXhuXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfb3JfZXJyb3IgPyhyZXN0X2V4biA9IGBMb2cpIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX2pvaW5fb3JfZXJyb3JcbiAgICAgICAgICAgfnJlc3Q6cmVzdF9leG5cbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdhaXQgdCA9IHQucmVzdWx0XG4gIGxldCB3YWl0X2V4biB0ID0gd2FpdCB0ID4+fCBva19leG5cbiAgbGV0IHN0YXJ0IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC5zdGFydCAoKVxuXG4gIGxldCBmb3JjZSB0ID1cbiAgICBzdGFydCB0O1xuICAgIHdhaXQgdFxuICA7O1xuXG4gIGxldCBmb3JjZV9leG4gdCA9IGZvcmNlIHQgPj58IG9rX2V4blxuICBsZXQgcmV0dXJuIGEgPSBjcmVhdGUgKGZ1biAoKSAtPiByZXR1cm4gYSlcblxuICBsZXQgYmluZCB0IH5mID1cbiAgICBjcmVhdGUgKGZ1biAoKSAtPlxuICAgICAgbGV0JWJpbmQgYSA9IGZvcmNlX2V4biB0IGluXG4gICAgICBmb3JjZV9leG4gKGYgYSkpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gKCkgLT4gZm9yY2VfZXhuIHQgPj58IGYpXG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBNb25hZC5NYWtlIChUKVxuXG5sZXQgYmluZCcgdCBmID0gYmluZCB0IH5mOihmdW4gYSAtPiBjcmVhdGUgKGZ1biAoKSAtPiBmIGEpKVxubGV0IGlzX2ZvcmNlZCB0ID0gSXZhci5pc19mdWxsIHQuc3RhcnRcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHQucmVzdWx0XG5sZXQgcGVlayB0ID0gRGVmZXJyZWQucGVlayB0LnJlc3VsdFxubGV0IHBlZWtfZXhuIHQgPSBPcHRpb24ubWFwIChwZWVrIHQpIH5mOm9rX2V4blxuIiwib3BlbiBDb3JlXG5cbnR5cGUgJ2EgdCA9IHsgd2FpdHMgOiAnYSBJdmFyLnQgUXVldWUudCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgKCkgPSB7IHdhaXRzID0gUXVldWUuY3JlYXRlICgpIH1cbmxldCB3YWl0IHQgPSBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IFF1ZXVlLmVucXVldWUgdC53YWl0cyBpdmFyKVxubGV0IHNpZ25hbCB0IGEgPSBPcHRpb24uaXRlciAoUXVldWUuZGVxdWV1ZSB0LndhaXRzKSB+ZjooZnVuIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYSlcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBRdWV1ZS5pdGVyIHQud2FpdHMgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpO1xuICBRdWV1ZS5jbGVhciB0LndhaXRzXG47O1xuIiwib3BlbiBDb3JlXG5pbmNsdWRlIEdjXG5cbigqKiBbYWRkX2ZpbmFsaXplciBmIHhdIGlzIGxpa2UgW0djLmZpbmFsaXNlIGYgeF0sIGV4Y2VwdCB0aGF0IHRoZSBmaW5hbGl6ZXIgaXMgZ3VhcmFudGVlZFxuICAgIHRvIHJ1biBhcyBhbiBBc3luYyBqb2IgKGkuZS4gd2l0aG91dCBpbnRlcnJ1cHRpbmcgb3RoZXIgQXN5bmMgam9icykuICBVbnByb3RlY3RlZCB1c2VcbiAgICBvZiBbQ2FtbC5HYy5maW5hbGlzZV0gb3IgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gaW4gQXN5bmMgcHJvZ3JhbXMgaXMgd3JvbmcsIGJlY2F1c2VcbiAgICB0aGUgZmluYWxpemVycyB3b24ndCBob2xkIHRoZSBhc3luYyBsb2NrLCBhbmQgdGh1cyBjb3VsZCBpbnRlcmxlYXZlIGFyYml0cmFyaWx5IHdpdGhcbiAgICBhc3luYyBqb2JzLiAqKVxubGV0IGFkZF9maW5hbGl6ZXIgaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2V4biBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfZXhuICh0ICgpKSkgaGVhcF9ibG9jayBmXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0ICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIGhlYXBfYmxvY2sgZiA9XG4gIFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0X2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxuOztcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IEdjLkV4cGVydC5BbGFybVxuXG4gIHR5cGUgdCA9IEFsYXJtLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIGYgPSBTY2hlZHVsZXIuKGNyZWF0ZV9hbGFybSAodCAoKSkpIGZcbiAgbGV0IGRlbGV0ZSA9IEFsYXJtLmRlbGV0ZVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBzaWduYXR1cmVzIHRoYXQgZXh0ZW5kIFtDb3JlLkludmFyaWFudF0gd2l0aCBhbiBbQXN5bmNdXG4gICAgc3VibW9kdWxlIGZvciBpbnZhcmlhbnRzIHRoYXQgdXNlIGFzeW5jIGNvbXB1dGF0aW9uIGFuZCByZXR1cm4gW3VuaXQgRGVmZXJyZWQudF0uICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHR5cGUgJ2EgaW52ID0gJ2EgdFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYSB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gKCdhLCAnYikgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdiIGludiAtPiAnYyBpbnYgLT4gKCdhLCAnYiwgJ2MpIHQgaW52XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFzeW5jX2ludmFyaWFudCA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIENvcmUuSW52YXJpYW50XG5cbiAgbW9kdWxlIEFzeW5jIDogc2lnXG4gICAgb3BlbiBBc3luY1xuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIEFzeW5jLnRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICAgIG1vZHVsZSB0eXBlIFMyID0gUzJcbiAgICBtb2R1bGUgdHlwZSBTMyA9IFMzXG5cbiAgICB2YWwgaW52YXJpYW50XG4gICAgICA6ICBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgICAtPiAnYVxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICAgKCoqIFtjaGVja19maWVsZF0gY2FuIGJlIHVzZWQgdG8gY2hlY2sgcmVjb3JkIGZpZWxkcyB3aGVuIHVzaW5nIFtbQEBkZXJpdmluZyBmaWVsZHNdXS5cbiAgICAgICAgSWRpb21hdGljIHVzYWdlIGxvb2tzIGxpa2U6XG5cbiAgICAgICAge1tcbiAgICAgICAgICB0eXBlIHQgPSB7IGZvbyA6IEZvby50IDsgYmFyIDogQmFyLnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286IChjaGVjayBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6IChjaGVjayBCYXIuaW52YXJpYW50KSBdfVxuXG4gICAgICAgIFdoZW4gc29tZSBmaWVsZHMgaGF2ZSBzeW5jaHJvbm91cyBpbnZhcmlhbnRzLCBvciBkbyBub3QgbmVlZCB0byBiZSBjaGVja2VkLCBpdFxuICAgICAgICBtYXkgYmUgdXNlZnVsIHRvIGRlZmluZSBhIHNlY29uZCB3cmFwcGVyIGFyb3VuZCBbY2hlY2tfZmllbGRdOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IDsgcXV1eCA6IFF1dXgudCB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgICAgIEludmFyaWFudC5Bc3luYy5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgY2hlY2snIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBsZXQgY2hlY2sgaW52ID0gY2hlY2snIChmdW4geCAtPiBpbnYgeDsgcmV0dXJuICgpKSBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286ICAoY2hlY2snIEZvby5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfmJhcjogIChjaGVjayAgQmFyLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+cXV1eDogKGNoZWNrICBpZ25vcmUpIF19ICopXG4gICAgdmFsIGNoZWNrX2ZpZWxkIDogJ2EgLT4gJ2IgdCAtPiB1bml0IERlZmVycmVkLnQgLT4gKCdhLCAnYikgRmllbGQudCAtPiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIERlZmVycmVkLkxldF9zeW50YXhcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb3JlLkludmFyaWFudFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3luY19pbnZhcmlhbnRfaW50Zi5Bc3luY1xuXG4gIGxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICBmXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIiB+XzooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpIChleG4gOiBleG4pIH5fOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ZpZWxkIHQgZiB3YWl0X2Zvcl9wcmV2aW91cyBmaWVsZCA9XG4gICAgbGV0JWJpbmQgKCkgPSB3YWl0X2Zvcl9wcmV2aW91cyBpblxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgICAgIChmdW4gKCkgLT4gZiAoRmllbGQuZ2V0IGZpZWxkIHQpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwicHJvYmxlbSB3aXRoIGZpZWxkXCIgfmZpZWxkOihGaWVsZC5uYW1lIGZpZWxkIDogc3RyaW5nKSAoZXhuIDogZXhuKV1cbiAgOztcbmVuZFxuIiwiKCoqIENvbnRhaW5zIEFzeW5jJ3MgY29yZSBkYXRhIHN0cnVjdHVyZXMsIGxpa2Uge3shQXN5bmNfa2VybmVsLkRlZmVycmVkfVtEZWZlcnJlZF19LFxuICAgIHt7IUFzeW5jX2tlcm5lbC5JdmFyfVtJdmFyXX0sIGFuZCB7eyFBc3luY19rZXJuZWwuQ2xvY2tfaW50Zi5DbG9ja31bQ2xvY2tdfS5cblxuICAgIFtBc3luY19rZXJuZWxdIGlzIGRlc2lnbmVkIHRvIGRlcGVuZCBvbmx5IG9uIHt7IUNvcmV9W0NvcmVdfSBhbmQgc28gaXMgbW9yZVxuICAgIHBsYXRmb3JtLWluZGVwZW5kZW50LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBc3luY19rZXJuZWxfY29uZmlnID0gQXN5bmNfa2VybmVsX2NvbmZpZ1xubW9kdWxlIEFzeW5jX2tlcm5lbF9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlID0gUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgQnZhciA9IEJ2YXJcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgQ29uZGl0aW9uID0gQXN5bmNfY29uZGl0aW9uXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZFxubW9kdWxlIEV4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHRcbm1vZHVsZSBHYyA9IEFzeW5jX2djXG5tb2R1bGUgSW52YXJpYW50ID0gQXN5bmNfaW52YXJpYW50XG5tb2R1bGUgSXZhciA9IEl2YXJcbm1vZHVsZSBMYXp5X2RlZmVycmVkID0gTGF6eV9kZWZlcnJlZFxubW9kdWxlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2Vcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvclxubW9kdWxlIE12YXIgPSBNdmFyXG5tb2R1bGUgUGlwZSA9IFBpcGVcbm1vZHVsZSBQcmlvcml0eSA9IFByaW9yaXR5XG5tb2R1bGUgU2VxdWVuY2VyID0gVGhyb3R0bGUuU2VxdWVuY2VyXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZVxubW9kdWxlIFRhaWwgPSBUYWlsXG5tb2R1bGUgVGhyb3R0bGUgPSBUaHJvdHRsZVxubW9kdWxlIFRocm90dGxlZCA9IFRocm90dGxlZFxubW9kdWxlIFRpbWVfc291cmNlID0gVGltZV9zb3VyY2VcblxuXG4oKiogezIgVG9wbGV2ZWwgZnVuY3Rpb25zIH1cblxuICAgIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGJyb2FkbHkgdXNlZnVsIHdoZW4gd3JpdGluZyBBc3luYyBwcm9ncmFtcywgYW5kIHNvIGFyZSBtYWRlXG4gICAgYXZhaWxhYmxlIGF0IHRoZSB0b3BsZXZlbC4gKilcblxuXG5sZXQgYWZ0ZXIgPSBDbG9ja19ucy5hZnRlclxubGV0IGF0ID0gQ2xvY2tfbnMuYXRcbmxldCBjYXRjaCA9IE1vbml0b3IuY2F0Y2hcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IERlZmVycmVkLmRvbid0X3dhaXRfZm9yXG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBzY2hlZHVsZSA9IFNjaGVkdWxlci5zY2hlZHVsZVxubGV0IHNjaGVkdWxlJyA9IFNjaGVkdWxlci5zY2hlZHVsZSdcbmxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxubGV0IHdpdGhpbiA9IFNjaGVkdWxlci53aXRoaW5cbmxldCB3aXRoaW4nID0gU2NoZWR1bGVyLndpdGhpbidcblxuKCoqIHsyIEluZml4IG9wZXJhdG9ycyBhbmQgW0xldF9zeW50YXhdIHN1cHBvcnR9ICopXG5cbmluY2x1ZGUgKERlZmVycmVkIDogTW9uYWQuSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgRGVmZXJyZWQudClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC51cG9ufS4gKilcbmxldCAoID4+PiApID0gRGVmZXJyZWQuSW5maXguKCA+Pj4gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5iaW5kfS4gKilcbmxldCAoID4+PT8gKSA9IERlZmVycmVkLlJlc3VsdC4oID4+PSApXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQuUmVzdWx0Lm1hcH0uICopXG5sZXQgKCA+Pnw/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+PnwgKVxuXG5pbmNsdWRlIERlZmVycmVkLkxldF9zeW50YXhcblxuKCoqLyoqKVxuXG4oKiogVGhlIG1vZHVsZXMgaW4gW0FzeW5jX2tlcm5lbF9wcml2YXRlXSBhcmUgdXNlZCBmb3IgY29uc3RydWN0aW5nIGFuZCB0ZXN0aW5nIEFzeW5jLCBhbmRcbiAgICBzaG91bGQgbm90IG90aGVyd2lzZSBiZSB1c2VkLiAqKVxubW9kdWxlIEFzeW5jX2tlcm5lbF9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBEZWJ1ZyA9IERlYnVnXG4gIG1vZHVsZSBJdmFyMCA9IEl2YXIwXG4gIG1vZHVsZSBJdmFyX2ZpbGxlciA9IEl2YXJfZmlsbGVyXG4gIG1vZHVsZSBKb2IgPSBKb2JcbiAgbW9kdWxlIFN0YWNrX29yX2NvdW50ZXIgPSBTdGFja19vcl9jb3VudGVyXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBUaGlzIHRlc3QgbXVzdCBiZSBpbiB0aGlzIGxpYnJhcnksIGJlY2F1c2UgaXQgcmVxdWlyZXMgW3JldHVybl0gdG8gYmUgaW5saW5lZC4gIE1vdmluZ1xuICAgaXQgdG8gYW5vdGhlciBsaWJyYXJ5IHdpbGwgY2F1c2UgaXQgdG8gYnJlYWsgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlXS4gKilcbmxldCV0ZXN0X3VuaXQgXCJbcmV0dXJuICgpXSBkb2VzIG5vdCBhbGxvY2F0ZVwiID1cbiAgbGV0IHcxID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChyZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLkxldF9zeW50YXguTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgbGV0IHcyID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgWyV0ZXN0X3Jlc3VsdDogaW50XSB3MiB+ZXhwZWN0OncxXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9ICdhIERlZmVycmVkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgcmV0dXJuID0gRGVmZXJyZWQucmV0dXJuXG5cbiAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0IHRoZW4gZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpIGVsc2UgRGVmZXJyZWQuYmluZCB0IH5mXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIHJldHVybiAoZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpKVxuICAgIGVsc2UgRGVmZXJyZWQubWFwIHQgfmZcbiAgOztcblxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgTW9uYWQuTWFrZSAoVClcblxubGV0IGNyZWF0ZSA9IERlZmVycmVkLmNyZWF0ZVxubGV0IGRvbid0X3dhaXRfZm9yID0gRGVmZXJyZWQuZG9uJ3Rfd2FpdF9mb3JcbmxldCBpbnZhcmlhbnQgPSBEZWZlcnJlZC5pbnZhcmlhbnRcbmxldCBpc19kZXRlcm1pbmVkID0gRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZFxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBwZWVrID0gRGVmZXJyZWQucGVla1xubGV0IHVuaXQgPSBEZWZlcnJlZC51bml0XG5sZXQgdmFsdWVfZXhuID0gRGVmZXJyZWQudmFsdWVfZXhuXG5sZXQgdXBvbiB0IGYgPSBpZiBpc19kZXRlcm1pbmVkIHQgdGhlbiBmICh2YWx1ZV9leG4gdCkgZWxzZSBEZWZlcnJlZC51cG9uIHQgZlxuXG5sZXQgYm90aCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPiB1cG9uIHQxIChmdW4gYTEgLT4gdXBvbiB0MiAoZnVuIGEyIC0+IEl2YXIuZmlsbCByZXN1bHQgKGExLCBhMikpKSlcbjs7XG5cbmxldCBvayB0ID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gcmV0dXJuIChPayAodmFsdWVfZXhuIHQpKSBlbHNlIERlZmVycmVkLm9rIHRcbmxldCBpZ25vcmVfbSB0ID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gdW5pdCBlbHNlIERlZmVycmVkLmlnbm9yZV9tIHRcblxubGV0IGFueSB0cyA9XG4gIG1hdGNoIExpc3QuZmluZCB0cyB+Zjppc19kZXRlcm1pbmVkIHdpdGhcbiAgfCBTb21lIHggLT4gcmV0dXJuICh2YWx1ZV9leG4geClcbiAgfCBOb25lIC0+IERlZmVycmVkLmFueSB0c1xuOztcblxubGV0IGFueV91bml0IHRzID1cbiAgaWYgTGlzdC5leGlzdHMgdHMgfmY6KGlzX2RldGVybWluZWQgOiB1bml0IHQgLT4gYm9vbClcbiAgdGhlbiB1bml0XG4gIGVsc2UgRGVmZXJyZWQuYW55X3VuaXQgdHNcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbGV0ICggPj4+ICkgPSB1cG9uXG5lbmRcblxubGV0IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbGV0IG9wZW4gSW5maXggaW5cbiAgY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgICAgZiBzdGF0ZVxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IGBSZXBlYXQgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgICAgfCBgRmluaXNoZWQgcmVzdWx0IC0+IEl2YXIuZmlsbCBmaW5pc2hlZCByZXN1bHRcbiAgICBpblxuICAgIGxvb3Agc3RhdGUpXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBvcGVuIEluZml4XG4gIG9wZW4gTGV0X3N5bnRheFxuXG4gIGxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgICBjcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICAgIGluXG4gICAgICBsb29wIHQgMCBpbml0KVxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbiAgbGV0IGFsbF91bml0IGRzID0gaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpIDogdW5pdCBULnQpXG5cbiAgbGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuICA7O1xuXG4gIGxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgICBMaXN0LnJldlxuICAgICAgKExpc3QuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbiAgbGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9XG4gICAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICAgIGluXG4gICAgZmluZF9tYXBpIHQgfmYgMFxuICA7O1xuXG4gIGxldCBmaW5kaSB0IH5mID1cbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT4gaWYlbWFwIGYgZWx0IHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgYWxsX3VuaXQgPSBMaXN0LmFsbF91bml0XG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRWFnZXJfZGVmZXJyZWQwXG5vcGVuIERlZmVycmVkLkxldF9zeW50YXhcblxuKCogQ29waWVkIGZyb20gW2RlZmVycmVkX3Jlc3VsdC5tbF0uICBUaGVyZSBzaG91bGQgYmUgbm8gZGlmZnMgYmVsb3cgdGhpcyBsaW5lLiAqKVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2Vycm9yKSB0ID0gKCdhLCAnZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBsZXQlbWFwIHQxID0gdDFcbiAgYW5kIHQyID0gdDIgaW5cbiAgUmVzdWx0LmNvbWJpbmUgdDEgdDIgfm9rIH5lcnJcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChPayBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgYSAtPiBmIGFcbiAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IERlZmVycmVkLnJldHVybiBlcnJvcilcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgZmFpbCB4ID0gRGVmZXJyZWQucmV0dXJuIChFcnJvciB4KVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IG1hcF9lcnJvciB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXBfZXJyb3IgciB+ZilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBFYWdlcl9kZWZlcnJlZDBcbm1vZHVsZSBEZWZlcnJlZF9yZXN1bHQgPSBFYWdlcl9kZWZlcnJlZF9yZXN1bHRcblxubW9kdWxlIE1vbml0b3IgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoID8ocnVuID0gYE5vdykgPSBNb25pdG9yLnRyeV93aXRoIH5ydW5cbmVuZFxuXG4oKiBDb3BpZWQgZnJvbSBbZGVmZXJyZWRfb3JfZXJyb3IubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxuaW5jbHVkZSAoRGVmZXJyZWRfcmVzdWx0IDogTW9uYWQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgRGVmZXJyZWRfcmVzdWx0LnQpXG5cbnR5cGUgJ2EgdCA9ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIERlZmVycmVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIGZcbiAgICAgICAgeFxuICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBmYWlsIGVycm9yID0gRGVmZXJyZWQucmV0dXJuIChSZXN1bHQuZmFpbCBlcnJvcilcbmxldCBva19leG4gdCA9IERlZmVycmVkLm1hcCB0IH5mOk9yX2Vycm9yLm9rX2V4blxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSB0ID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLm9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSlcbmxldCBlcnJvciBtc2cgdiBzZXhwX29mID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvciBtc2cgdiBzZXhwX29mKVxubGV0IGVycm9yX3Mgc2V4cCA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3JfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBtc2cpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IGtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRGVmZXJyZWQubWFwIHQgfmY6KGZ1biB0IC0+IE9yX2Vycm9yLnRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci51bmltcGxlbWVudGVkIG1zZylcbmxldCBjb21iaW5lX2Vycm9ycyBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG5cbmxldCBmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIGwgPVxuICBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5maWx0ZXJfb2tfYXRfbGVhc3Rfb25lXG47O1xuXG5sZXQgZmluZF9tYXBfb2sgbCB+ZiA9XG4gIERlZmVycmVkLnJlcGVhdF91bnRpbF9maW5pc2hlZCAobCwgW10pIChmdW4gKGwsIGVycm9ycykgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgZXJyb3JzID0gRXJyb3Iub2ZfbGlzdCAoTGlzdC5yZXYgZXJyb3JzKSBpblxuICAgICAgRGVmZXJyZWQucmV0dXJuIChgRmluaXNoZWQgKEVycm9yIGVycm9ycykpXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgRGVmZXJyZWQubWFwIChmIGhkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBjdXJyZW50X2Vycm9yIC0+IGBSZXBlYXQgKHRsLCBjdXJyZW50X2Vycm9yIDo6IGVycm9ycylcbiAgICAgICAgfCBPayByZXN1bHQgLT4gYEZpbmlzaGVkIChPayByZXN1bHQpKSlcbjs7XG5cbmxldCBva191bml0ID0gcmV0dXJuICgpXG5cbmxldCB0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwIChNb25pdG9yLnRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOihmdW5jdGlvblxuICAgIHwgRXJyb3IgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuICAgIHwgT2sgXyBhcyBvayAtPiBvaylcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOk9yX2Vycm9yLmpvaW5cbjs7XG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBmb2xkaSBsaXN0IH5pbml0OmFjYyB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQlYmluZCBhY2MgPSBmIGkgYWNjIGhkIGluXG4gICAgICAgIGxvb3AgKGkgKyAxKSBhY2MgdGxcbiAgICBpblxuICAgIGxvb3AgMCBhY2MgbGlzdFxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCA9IGFsbFxuICBsZXQgYWxsX3VuaXQgPSBhbGxfdW5pdFxuXG4gIGxldCBpdGVyaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG4gIGxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxuICBsZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICAgIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIHggaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIHggZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9XG4gICAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICAgIGluXG4gICAgZmluZF9tYXBpIHQgfmYgMFxuICA7O1xuXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuXG4gIGxldCBmaW5kaSB0IH5mID1cbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgZmluZF9tYXAgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICA7O1xuXG4gIGxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuZW5kXG5cbmxldCByZWMgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBtYXRjaCViaW5kIGYgc3RhdGUgd2l0aFxuICB8IGBSZXBlYXQgc3RhdGUgLT4gcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGZcbiAgfCBgRmluaXNoZWQgc3RhdGUgLT4gcmV0dXJuIHN0YXRlXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUyA9IEVhZ2VyX2RlZmVycmVkX2ludGYuU1xuXG5pbmNsdWRlIEVhZ2VyX2RlZmVycmVkMVxuXG5tb2R1bGUgVXNlID0gc3RydWN0XG4gIG1vZHVsZSBEZWZlcnJlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIERlZmVycmVkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgRWFnZXJfZGVmZXJyZWQxXG4gIGVuZFxuXG4gIGluY2x1ZGUgKEVhZ2VyX2RlZmVycmVkMSA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIERlZmVycmVkLnQpXG4gIGluY2x1ZGUgRWFnZXJfZGVmZXJyZWQxLkxldF9zeW50YXhcblxuICBsZXQgdXBvbiA9IEVhZ2VyX2RlZmVycmVkMS51cG9uXG4gIGxldCAoID4+PiApID0gRWFnZXJfZGVmZXJyZWQxLkluZml4LiggPj4+IClcblxuICBsZXQgKCA+Pj0/ICkgeCBmID1cbiAgICB4XG4gICAgPj49IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IHJldHVybiBlcnJvclxuICAgIHwgT2sgdiAtPiBmIHZcbiAgOztcblxuICBsZXQgKCA+Pnw/ICkgeCBmID1cbiAgICB4XG4gICAgPj58IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IGVycm9yXG4gICAgfCBPayB2IC0+IE9rIChmIHYpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDbG9zZWRcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzXG4gICAgfCBPa190b193cml0ZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpc19jbG9zZWQgPSBmdW5jdGlvblxuICAgIHwgQ2xvc2VkIC0+IHRydWVcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IGZhbHNlXG4gICAgfCBPa190b193cml0ZSAtPiBmYWxzZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYWxsYmFja19hcml0eSA9IHN0cnVjdFxuICB0eXBlIF8gdCA9XG4gICAgfCBBcml0eTEgOiAoJ2EgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkxX2xvY2FsIDogKCgnYVtAbG9jYWxdKSAtPiB1bml0KSB0XG4gICAgfCBBcml0eTIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkzIDogKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5NCA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0KSB0XG4gICAgfCBBcml0eTUgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB1c2VzX2xvY2FsX2FyZ3MgOiB0eXBlIGEuIGEgdCAtPiBib29sID0gZnVuY3Rpb25cbiAgICB8IEFyaXR5MSAtPiBmYWxzZVxuICAgIHwgQXJpdHkxX2xvY2FsIC0+IHRydWVcbiAgICB8IEFyaXR5MiAtPiBmYWxzZVxuICAgIHwgQXJpdHkzIC0+IGZhbHNlXG4gICAgfCBBcml0eTQgLT4gZmFsc2VcbiAgICB8IEFyaXR5NSAtPiBmYWxzZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBMYXN0X3ZhbHVlIDogc2lnXG4gIHR5cGUgJ2NhbGxiYWNrIHRcblxuICB2YWwgY3JlYXRlX2V4biA6ICdjYWxsYmFjayBDYWxsYmFja19hcml0eS50IC0+ICdjYWxsYmFjayB0XG4gIHZhbCBzZXQxIDogKCdhIC0+IHVuaXQpIHQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0MiA6ICgnYSAtPiAnYiAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+IHVuaXRcbiAgdmFsIHNldDMgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0XG4gIHZhbCBzZXQ0IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQpIHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdFxuICB2YWwgc2V0NSA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXRcbiAgdmFsIHNlbmQgOiAnY2FsbGJhY2sgdCAtPiAnY2FsbGJhY2sgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgXyB0dXBsZSA9XG4gICAgfCBUdXBsZTEgOiB7IG11dGFibGUgYXJnMSA6ICdhIH0gLT4gKCdhIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTIgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdHVwbGVcbiAgICB8IFR1cGxlMyA6XG4gICAgICAgIHsgbXV0YWJsZSBhcmcxIDogJ2FcbiAgICAgICAgOyBtdXRhYmxlIGFyZzIgOiAnYlxuICAgICAgICA7IG11dGFibGUgYXJnMyA6ICdjXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTQgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICA7IG11dGFibGUgYXJnNCA6ICdkXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTUgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICA7IG11dGFibGUgYXJnNCA6ICdkXG4gICAgICAgIDsgbXV0YWJsZSBhcmc1IDogJ2VcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdHVwbGVcblxuICB0eXBlICdjYWxsYmFjayB0ID0gJ2NhbGxiYWNrIHR1cGxlIG9wdGlvbiByZWZcblxuICBsZXQgY3JlYXRlX2V4biAodHlwZSBjYWxsYmFjaykgKGFyaXR5IDogY2FsbGJhY2sgQ2FsbGJhY2tfYXJpdHkudCkgOiBjYWxsYmFjayB0ID1cbiAgICBpZiBDYWxsYmFja19hcml0eS51c2VzX2xvY2FsX2FyZ3MgYXJpdHlcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQ2Fubm90IHNhdmUgbGFzdCB2YWx1ZSB3aGVuIHVzaW5nIGxvY2FsIGFyZ3NcIiAoYXJpdHkgOiBfIENhbGxiYWNrX2FyaXR5LnQpXTtcbiAgICByZWYgTm9uZVxuICA7O1xuXG4gIGxldCBzZXQxIHQgYSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMSB7IGFyZzEgPSBhIH0pXG4gICAgfCBTb21lIChUdXBsZTEgYXJncykgLT4gYXJncy5hcmcxIDwtIGFcbiAgOztcblxuICBsZXQgc2V0MiB0IGEgYiA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMiB7IGFyZzEgPSBhOyBhcmcyID0gYiB9KVxuICAgIHwgU29tZSAoVHVwbGUyIGFyZ3MpIC0+XG4gICAgICBhcmdzLmFyZzEgPC0gYTtcbiAgICAgIGFyZ3MuYXJnMiA8LSBiXG4gIDs7XG5cbiAgbGV0IHNldDMgdCBhIGIgYyA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMyB7IGFyZzEgPSBhOyBhcmcyID0gYjsgYXJnMyA9IGMgfSlcbiAgICB8IFNvbWUgKFR1cGxlMyBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBjXG4gIDs7XG5cbiAgbGV0IHNldDQgdCBhIGIgYyBkID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHQgOj0gU29tZSAoVHVwbGU0IHsgYXJnMSA9IGE7IGFyZzIgPSBiOyBhcmczID0gYzsgYXJnNCA9IGQgfSlcbiAgICB8IFNvbWUgKFR1cGxlNCBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBjO1xuICAgICAgYXJncy5hcmc0IDwtIGRcbiAgOztcblxuICBsZXQgc2V0NSB0IGFyZzEgYXJnMiBhcmczIGFyZzQgYXJnNSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlNSB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQ7IGFyZzUgfSlcbiAgICB8IFNvbWUgKFR1cGxlNSBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGFyZzE7XG4gICAgICBhcmdzLmFyZzIgPC0gYXJnMjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBhcmczO1xuICAgICAgYXJncy5hcmc0IDwtIGFyZzQ7XG4gICAgICBhcmdzLmFyZzUgPC0gYXJnNVxuICA7O1xuXG4gIGxldCBzZW5kICh0eXBlIGNhbGxiYWNrKSAodCA6IGNhbGxiYWNrIHQpIChjYWxsYmFjayA6IGNhbGxiYWNrKSA6IHVuaXQgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKFR1cGxlMSB7IGFyZzEgfSkgLT4gY2FsbGJhY2sgYXJnMVxuICAgIHwgU29tZSAoVHVwbGUyIHsgYXJnMTsgYXJnMiB9KSAtPiBjYWxsYmFjayBhcmcxIGFyZzJcbiAgICB8IFNvbWUgKFR1cGxlMyB7IGFyZzE7IGFyZzI7IGFyZzMgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzNcbiAgICB8IFNvbWUgKFR1cGxlNCB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzMgYXJnNFxuICAgIHwgU29tZSAoVHVwbGU1IHsgYXJnMTsgYXJnMjsgYXJnMzsgYXJnNDsgYXJnNSB9KSAtPiBjYWxsYmFjayBhcmcxIGFyZzIgYXJnMyBhcmc0IGFyZzVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBBbGxvd1xuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZVxuICAgIHwgUmFpc2VcbiAgW0BAZGVyaXZpbmcgZW51bWVyYXRlLCBzZXhwX29mXVxuXG4gIGxldCBhbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgPSBmdW5jdGlvblxuICAgIHwgQWxsb3cgLT4gdHJ1ZVxuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZSAtPiB0cnVlXG4gICAgfCBSYWlzZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBzYXZlX2xhc3RfdmFsdWVfZXhuIHQgY2FsbGJhY2tfYXJpdHkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZSAtPiBTb21lIChMYXN0X3ZhbHVlLmNyZWF0ZV9leG4gY2FsbGJhY2tfYXJpdHkpXG4gICAgfCBBbGxvdyAtPiBOb25lXG4gICAgfCBSYWlzZSAtPiBOb25lXG4gIDs7XG5lbmRcblxubW9kdWxlIEJ1c19pZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5tb2R1bGUgU3Vic2NyaWJlciA9IHN0cnVjdFxuICB0eXBlICdjYWxsYmFjayB0ID1cbiAgICB7IGJ1c19pZCA6IEJ1c19pZC50XG4gICAgOyBjYWxsYmFjayA6ICdjYWxsYmFja1xuICAgIDsgZXh0cmFjdF9leG4gOiBib29sXG4gICAgOyAoKiBbc3Vic2NyaWJlcnNfaW5kZXhdIGlzIHRoZSBpbmRleCBvZiB0aGlzIHN1YnNjcmliZXIgaW4gdGhlIGJ1cydzIFtzdWJzY3JpYmVyc11cbiAgICAgICAgIGFycmF5LiAgWy0xXSBpbmRpY2F0ZXMgdGhhdCB0aGlzIHN1YnNjcmliZXIgaXMgbm90IHN1YnNjcmliZWQuICopXG4gICAgICBtdXRhYmxlIHN1YnNjcmliZXJzX2luZGV4IDogaW50XG4gICAgOyBvbl9jYWxsYmFja19yYWlzZSA6IChFcnJvci50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgb25fY2xvc2UgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IHN1YnNjcmliZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgaXNfc3Vic2NyaWJlZCB0IH50b18gPSB0LnN1YnNjcmliZXJzX2luZGV4ID49IDAgJiYgQnVzX2lkLmVxdWFsIHQuYnVzX2lkIHRvX1xuXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGNhbGxiYWNrID0gX1xuICAgICAgICA7IGJ1c19pZCA9IF9cbiAgICAgICAgOyBleHRyYWN0X2V4blxuICAgICAgICA7IHN1YnNjcmliZXJzX2luZGV4XG4gICAgICAgIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgICAgICAgOyBvbl9jbG9zZSA9IF9cbiAgICAgICAgOyBzdWJzY3JpYmVkX2Zyb21cbiAgICAgICAgfVxuICAgIDogU2V4cC50XG4gICAgPVxuICAgIExpc3RcbiAgICAgIFsgQXRvbSBcIkJ1cy5TdWJzY3JpYmVyLnRcIlxuICAgICAgOyBbJW1lc3NhZ2VcbiAgICAgICAgXCJcIlxuICAgICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDpcbiAgICAgICAgICAgIChpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmcgdGhlbiBOb25lIGVsc2UgU29tZSBzdWJzY3JpYmVyc19pbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChpbnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIChvbl9jYWxsYmFja19yYWlzZSA6ICgoRXJyb3IudCAtPiB1bml0KSBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgfmV4dHJhY3RfZXhuOlxuICAgICAgICAgICAgKGlmIGV4dHJhY3RfZXhuIHRoZW4gU29tZSB0cnVlIGVsc2UgTm9uZSA6IChib29sIG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICAoc3Vic2NyaWJlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YnVzX2lkOmlnbm9yZVxuICAgICAgICB+Y2FsbGJhY2s6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgICB+ZXh0cmFjdF9leG46aWdub3JlXG4gICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDppZ25vcmVcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlOmlnbm9yZVxuICAgICAgICB+b25fY2xvc2U6aWdub3JlXG4gICAgICAgIH5zdWJzY3JpYmVkX2Zyb206aWdub3JlKVxuICA7O1xuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAgIH5jYWxsYmFja1xuICAgICAgICB+YnVzX2lkXG4gICAgICAgIH5leHRyYWN0X2V4blxuICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXhcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgIH5vbl9jbG9zZVxuICAgID1cbiAgICB7IGJ1c19pZFxuICAgIDsgY2FsbGJhY2tcbiAgICA7IGV4dHJhY3RfZXhuXG4gICAgOyBzdWJzY3JpYmVyc19pbmRleFxuICAgIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgICA7IG9uX2Nsb3NlXG4gICAgOyBzdWJzY3JpYmVkX2Zyb21cbiAgICB9XG4gIDs7XG5lbmRcblxudHlwZSAoJ2NhbGxiYWNrLCAncGhhbnRvbSkgdCA9XG4gIHsgYnVzX2lkIDogQnVzX2lkLnRcbiAgOyBuYW1lIDogSW5mby50IG9wdGlvblxuICA7IGNhbGxiYWNrX2FyaXR5IDogJ2NhbGxiYWNrIENhbGxiYWNrX2FyaXR5LnRcbiAgOyBjcmVhdGVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gIDsgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIDogT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLnRcbiAgOyBvbl9jYWxsYmFja19yYWlzZSA6IEVycm9yLnQgLT4gdW5pdFxuICA7IGxhc3RfdmFsdWUgOiAnY2FsbGJhY2sgTGFzdF92YWx1ZS50IG9wdGlvblxuICA7IG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gIDsgbXV0YWJsZSB3cml0ZV9ldmVyX2NhbGxlZCA6IGJvb2xcbiAgOyBtdXRhYmxlIG51bV9zdWJzY3JpYmVycyA6IGludFxuICA7ICgqIFtzdWJzY3JpYmVyc10gY29udGFpbnMgYWxsIHN1YnNjcmliZXJzIHRvIHRoZSBidXMsIGluIGEgY29udGlndW91cyBwcmVmaXggZnJvbVxuICAgICAgIGluZGV4IFswXSB0byBbbnVtX3N1YnNjcmliZXJzIC0gMV0uICopXG4gICAgbXV0YWJsZSBzdWJzY3JpYmVycyA6ICdjYWxsYmFjayBTdWJzY3JpYmVyLnQgT3B0aW9uX2FycmF5LnRcbiAgOyAoKiBbY2FsbGJhY2tzXSBob2xkcyB0aGUgY2FsbGJhY2tzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGVudHJpZXMgb2YgW3N1YnNjcmliZXJzXS4gKilcbiAgICBtdXRhYmxlIGNhbGxiYWNrcyA6ICdjYWxsYmFjayBPcHRpb25fYXJyYXkudFxuICA7IG11dGFibGUgdW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA6ICdjYWxsYmFjayBTdWJzY3JpYmVyLnQgbGlzdFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3RcbiAgICAgIF9cbiAgICAgIF9cbiAgICAgIHsgYnVzX2lkID0gX1xuICAgICAgOyBjYWxsYmFja19hcml0eVxuICAgICAgOyBjYWxsYmFja3MgPSBfXG4gICAgICA7IGNyZWF0ZWRfZnJvbVxuICAgICAgOyBsYXN0X3ZhbHVlID0gX1xuICAgICAgOyBuYW1lXG4gICAgICA7IG51bV9zdWJzY3JpYmVyc1xuICAgICAgOyBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICAgIDsgb25fY2FsbGJhY2tfcmFpc2UgPSBfXG4gICAgICA7IHN0YXRlXG4gICAgICA7IHN1YnNjcmliZXJzXG4gICAgICA7IHdyaXRlX2V2ZXJfY2FsbGVkXG4gICAgICA7IHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPSBfXG4gICAgICB9XG4gID1cbiAgbGV0IHN1YnNjcmliZXJzID1cbiAgICBBcnJheS5pbml0IG51bV9zdWJzY3JpYmVycyB+ZjooZnVuIGkgLT4gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBzdWJzY3JpYmVycyBpKVxuICBpblxuICBbJW1lc3NhZ2VcbiAgICBcIlwiXG4gICAgICAobmFtZSA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgKGNhbGxiYWNrX2FyaXR5IDogXyBDYWxsYmFja19hcml0eS50KVxuICAgICAgKGNyZWF0ZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAob25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIDogT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLnQpXG4gICAgICAoc3RhdGUgOiBTdGF0ZS50KVxuICAgICAgKHdyaXRlX2V2ZXJfY2FsbGVkIDogYm9vbClcbiAgICAgIChzdWJzY3JpYmVycyA6IF8gU3Vic2NyaWJlci50IEFycmF5LnQpXVxuOztcblxudHlwZSAoJ2NhbGxiYWNrLCAncGhhbnRvbSkgYnVzID0gKCdjYWxsYmFjaywgJ3BoYW50b20pIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHJlYWRfb25seSB0ID0gKHQgOj4gKF8sIHJlYWQpIHQpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+YnVzX2lkOmlnbm9yZVxuICAgICAgfm5hbWU6aWdub3JlXG4gICAgICB+Y2FsbGJhY2tzOlxuICAgICAgICAoY2hlY2sgKGZ1biBjYWxsYmFja3MgLT5cbiAgICAgICAgICAgYXNzZXJ0IChPcHRpb25fYXJyYXkubGVuZ3RoIGNhbGxiYWNrcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5zdWJzY3JpYmVycyk7XG4gICAgICAgICAgIGZvciBpID0gMCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIGNhbGxiYWNrcyAtIDEgZG9cbiAgICAgICAgICAgICBpZiBpIDwgdC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgICAgICB0aGVuIGludmFyaWFudF9hIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGNhbGxiYWNrcyBpKVxuICAgICAgICAgICAgIGVsc2UgYXNzZXJ0IChPcHRpb25fYXJyYXkuaXNfbm9uZSBjYWxsYmFja3MgaSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+Y2FsbGJhY2tfYXJpdHk6aWdub3JlXG4gICAgICB+Y3JlYXRlZF9mcm9tOmlnbm9yZVxuICAgICAgfm51bV9zdWJzY3JpYmVyczooY2hlY2sgKGZ1biBudW1fc3Vic2NyaWJlcnMgLT4gYXNzZXJ0IChudW1fc3Vic2NyaWJlcnMgPj0gMCkpKVxuICAgICAgfm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZTppZ25vcmVcbiAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgIH5sYXN0X3ZhbHVlOmlnbm9yZVxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfndyaXRlX2V2ZXJfY2FsbGVkOmlnbm9yZVxuICAgICAgfnN1YnNjcmliZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBzdWJzY3JpYmVycyAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBzdWJzY3JpYmVycyAtIDEgZG9cbiAgICAgICAgICAgICBpZiBpIDwgdC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCBzdWJzY3JpYmVyID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBzdWJzY3JpYmVycyBpIGluXG4gICAgICAgICAgICAgICBTdWJzY3JpYmVyLmludmFyaWFudCBpbnZhcmlhbnRfYSBzdWJzY3JpYmVyO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChpID0gc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCkpXG4gICAgICAgICAgICAgZWxzZSBhc3NlcnQgKE9wdGlvbl9hcnJheS5pc19ub25lIHN1YnNjcmliZXJzIGkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGU6aWdub3JlKVxuOztcblxubGV0IGlzX2Nsb3NlZCB0ID0gU3RhdGUuaXNfY2xvc2VkIHQuc3RhdGVcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICgnY2FsbGJhY2ssIHJlYWRfd3JpdGUpIGJ1cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbm1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICgnY2FsbGJhY2ssIHJlYWQpIGJ1cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbmxldFtAY29sZF0gc3RhcnRfd3JpdGVfZmFpbGluZyB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJbQnVzLndyaXRlXSBjYWxsZWQgb24gY2xvc2VkIGJ1c1wiIHQgWyVzZXhwX29mOiAoXywgXykgdF1cbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJbQnVzLndyaXRlXSBjYWxsZWQgZnJvbSBjYWxsYmFjayBvbiB0aGUgc2FtZSBidXNcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiAoXywgXykgdF1cbiAgfCBPa190b193cml0ZSAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCBjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LnN1YnNjcmliZXJzXG5cbmxldCBtYXliZV9zaHJpbmtfY2FwYWNpdHkgdCA9XG4gIGlmIHQubnVtX3N1YnNjcmliZXJzICogNCA8PSBjYXBhY2l0eSB0XG4gIHRoZW4gKFxuICAgIGxldCBkZXNpcmVkX2NhcGFjaXR5ID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgICBsZXQgY29weV9hbmRfc2hyaW5rIGFycmF5ID1cbiAgICAgIGxldCBuZXdfYXJyYXkgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46ZGVzaXJlZF9jYXBhY2l0eSBpblxuICAgICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgICAgfnNyYzphcnJheVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5kc3Q6bmV3X2FycmF5XG4gICAgICAgIH5kc3RfcG9zOjBcbiAgICAgICAgfmxlbjp0Lm51bV9zdWJzY3JpYmVycztcbiAgICAgIG5ld19hcnJheVxuICAgIGluXG4gICAgdC5zdWJzY3JpYmVycyA8LSBjb3B5X2FuZF9zaHJpbmsgdC5zdWJzY3JpYmVycztcbiAgICB0LmNhbGxiYWNrcyA8LSBjb3B5X2FuZF9zaHJpbmsgdC5jYWxsYmFja3MpXG47O1xuXG5sZXQgYWRkX3N1YnNjcmliZXIgdCAoc3Vic2NyaWJlciA6IF8gU3Vic2NyaWJlci50KSB+YXRfc3Vic2NyaWJlcnNfaW5kZXggPVxuICBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IDwtIGF0X3N1YnNjcmliZXJzX2luZGV4O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5zdWJzY3JpYmVycyBhdF9zdWJzY3JpYmVyc19pbmRleCBzdWJzY3JpYmVyO1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5jYWxsYmFja3MgYXRfc3Vic2NyaWJlcnNfaW5kZXggc3Vic2NyaWJlci5jYWxsYmFja1xuOztcblxubGV0IHJlbW92ZV9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgPVxuICBsZXQgc3Vic2NyaWJlcnNfaW5kZXggPSBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IGluXG4gIHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXggPC0gLTE7XG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LnN1YnNjcmliZXJzIHN1YnNjcmliZXJzX2luZGV4O1xuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5jYWxsYmFja3Mgc3Vic2NyaWJlcnNfaW5kZXhcbjs7XG5cbmxldCB1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgPVxuICBsZXQgc3Vic2NyaWJlcl9pbmRleCA9IHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXggaW5cbiAgbGV0IGxhc3Rfc3Vic2NyaWJlcl9pbmRleCA9IHQubnVtX3N1YnNjcmliZXJzIC0gMSBpblxuICByZW1vdmVfc3Vic2NyaWJlciB0IHN1YnNjcmliZXI7XG4gIGlmIHN1YnNjcmliZXJfaW5kZXggPCBsYXN0X3N1YnNjcmliZXJfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IGxhc3Rfc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyBsYXN0X3N1YnNjcmliZXJfaW5kZXggaW5cbiAgICByZW1vdmVfc3Vic2NyaWJlciB0IGxhc3Rfc3Vic2NyaWJlcjtcbiAgICBhZGRfc3Vic2NyaWJlciB0IGxhc3Rfc3Vic2NyaWJlciB+YXRfc3Vic2NyaWJlcnNfaW5kZXg6c3Vic2NyaWJlcl9pbmRleCk7XG4gIHQubnVtX3N1YnNjcmliZXJzIDwtIHQubnVtX3N1YnNjcmliZXJzIC0gMTtcbiAgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHRcbjs7XG5cbmxldCB1bnN1YnNjcmliZSB0IHN1YnNjcmliZXIgPVxuICBpZiBTdWJzY3JpYmVyLmlzX3N1YnNjcmliZWQgc3Vic2NyaWJlciB+dG9fOnQuYnVzX2lkXG4gIHRoZW4gKFxuICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT5cbiAgICAgIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA8LSBzdWJzY3JpYmVyIDo6IHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZVxuICAgIHwgQ2xvc2VkIC0+XG4gICAgICAoKiBUaGlzIGNhbiBoYXBwZW4gaWYgZHVyaW5nIFt3cml0ZV0sIFt1bnN1YnNjcmliZV0gaXMgY2FsbGVkIGFmdGVyIFtjbG9zZV0uICBXZVxuICAgICAgICAgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBiZWNhdXNlIGFsbCBzdWJzY3JpYmVycyB3aWxsIGJlIHVuc3Vic2NyaWJlZCBhZnRlciB0aGVcbiAgICAgICAgIFt3cml0ZV0gZmluaXNoZXMuICopXG4gICAgICAoKVxuICAgIHwgT2tfdG9fd3JpdGUgLT4gdW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0IHN1YnNjcmliZXIpXG47O1xuXG5sZXRbQGNvbGRdIHVuc3Vic2NyaWJlX2FmdGVyX2ZpbmlzaF93cml0ZSB0ID1cbiAgTGlzdC5pdGVyIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSB+ZjoodW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0KTtcbiAgdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlIDwtIFtdXG47O1xuXG5sZXRbQGNvbGRdIHVuc3Vic2NyaWJlX2FsbCB0ID1cbiAgYXNzZXJ0IChpc19jbG9zZWQgdCk7XG4gIGZvciBpID0gMCB0byB0Lm51bV9zdWJzY3JpYmVycyAtIDEgZG9cbiAgICBsZXQgc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyBpIGluXG4gICAgT3B0aW9uLml0ZXIgc3Vic2NyaWJlci5vbl9jbG9zZSB+ZjooZnVuIG9uX2Nsb3NlIC0+IG9uX2Nsb3NlICgpKTtcbiAgICByZW1vdmVfc3Vic2NyaWJlciB0IHN1YnNjcmliZXJcbiAgZG9uZTtcbiAgdC5udW1fc3Vic2NyaWJlcnMgPC0gMDtcbiAgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHRcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZmluaXNoX3dyaXRlIHQgPVxuICBpZiBub3QgKExpc3QuaXNfZW1wdHkgdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlKSB0aGVuIHVuc3Vic2NyaWJlX2FmdGVyX2ZpbmlzaF93cml0ZSB0O1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT4gdW5zdWJzY3JpYmVfYWxsIHRcbiAgfCBPa190b193cml0ZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiB0LnN0YXRlIDwtIE9rX3RvX3dyaXRlXG47O1xuXG5sZXRbQGNvbGRdIGNsb3NlIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT4gKClcbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiB0LnN0YXRlIDwtIENsb3NlZFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgdC5zdGF0ZSA8LSBDbG9zZWQ7XG4gICAgdW5zdWJzY3JpYmVfYWxsIHRcbjs7XG5cbmxldCBjYWxsX29uX2NhbGxiYWNrX3JhaXNlIHQgZXJyb3IgPVxuICB0cnkgdC5vbl9jYWxsYmFja19yYWlzZSBlcnJvciB3aXRoXG4gIHwgZXhuIC0+XG4gICAgY2xvc2UgdDtcbiAgICByYWlzZSBleG5cbjs7XG5cbmxldCBjYWxsYmFja19yYWlzZWQgdCBpIGV4biA9XG4gICgqIFtpXSB3YXMgaW5jcmVtZW50ZWQgYmVmb3JlIHRoZSBjYWxsYmFjayB3YXMgY2FsbGVkLCBzbyB3ZSBoYXZlIHRvIHN1YnRyYWN0IG9uZVxuICAgICBoZXJlLiAgV2UgZG8gdGhpcyBoZXJlLCByYXRoZXIgdGhhbiBhdCB0aGUgY2FsbCBzaXRlLCBiZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgICBjYWxsIHNpdGVzIGR1ZSB0byB0aGUgb3B0aW1pemF0aW9ucyBuZWVkZWQgdG8ga2VlcCB0aGlzIHplcm8tYWxsb2MuICopXG4gIGxldCBzdWJzY3JpYmVyID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LnN1YnNjcmliZXJzIChpIC0gMSkgaW5cbiAgbGV0IGVycm9yID1cbiAgICBtYXRjaCBzdWJzY3JpYmVyLmV4dHJhY3RfZXhuIHdpdGhcbiAgICB8IHRydWUgLT4gRXJyb3Iub2ZfZXhuIGV4blxuICAgIHwgZmFsc2UgLT5cbiAgICAgICgqIFRoaXMgW0JhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCldIGlzIGludGVuZGVkIHRvIGdyYWIgdGhlIGJhY2t0cmFjZSBvZiB0aGUgW3RyeVxuICAgICAgICAgLi4uIHdpdGhdJ3MgdGhhdCBjYWxsIFtjYWxsYmFja19yYWlzZWRdLiAgVGhlIGNhbGwgaXMgaGVyZSByYXRoZXIgdGhhbiBlYXJsaWVyIHNvXG4gICAgICAgICB0aGF0IHdlIG9ubHkgZG8gaXQgd2hlbiBbc3Vic2NyaWJlci5leHRyYWN0X2V4biA9IGZhbHNlXS4gKilcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJCdXMgc3Vic2NyaWJlciByYWlzZWRcIlxuICAgICAgICAgIChleG4gOiBleG4pXG4gICAgICAgICAgKGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50KVxuICAgICAgICAgIChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpXVxuICAgICAgfD4gWyVvZl9zZXhwOiBFcnJvci50XVxuICBpblxuICBtYXRjaCBzdWJzY3JpYmVyLm9uX2NhbGxiYWNrX3JhaXNlIHdpdGhcbiAgfCBOb25lIC0+IGNhbGxfb25fY2FsbGJhY2tfcmFpc2UgdCBlcnJvclxuICB8IFNvbWUgZiAtPlxuICAgICh0cnkgZiBlcnJvciB3aXRoXG4gICAgIHwgZXhuIC0+XG4gICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICBjYWxsX29uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgICB0XG4gICAgICAgICAobGV0IG9yaWdpbmFsX2Vycm9yID0gZXJyb3IgaW5cbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiQnVzIHN1YnNjcmliZXIncyBbb25fY2FsbGJhY2tfcmFpc2VdIHJhaXNlZFwiXG4gICAgICAgICAgICAgIChleG4gOiBleG4pXG4gICAgICAgICAgICAgIChiYWNrdHJhY2UgOiBCYWNrdHJhY2UudClcbiAgICAgICAgICAgICAgKG9yaWdpbmFsX2Vycm9yIDogRXJyb3IudCldXG4gICAgICAgICAgfD4gWyVvZl9zZXhwOiBFcnJvci50XSkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXRfY2FsbGJhY2sgYSBpID1cbiAgKCogV2UgY29uc2lkZXJlZCB1c2luZyBbT3B0aW9uX2FycmF5LmdldF9zb21lX2V4bl0gYW5kXG4gICAgIFtPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4bl0gaGVyZSwgYnV0IGJvdGggYXJlIHNpZ25pZmljYW50bHkgc2xvd2VyLiAgQ2hlY2tcbiAgICAgdGhlIHdyaXRlIGJlbmNobWFya3MgaW4gW2JlbmNoX2J1cy5tbF0gYmVmb3JlIGNoYW5naW5nIHRoaXMuICopXG4gIE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSBhIGlcbjs7XG5cbmxldCB3cml0ZV9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZV9sb2NhbF9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIChhMSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlMl9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMlxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTNfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiBhMyA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTIgYTNcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGU0X25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExIGEyIGEzIGE0XG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlNV9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyIGEzIGE0IGE1ID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMiBhMyBhNCBhNVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbigqIFRoZSBbd3JpdGVfTl0gZnVuY3Rpb25zIGFyZSB3cml0dGVuIHRvIG1pbmltaXNlIHJlZ2lzdGVycyBsaXZlIGFjcm9zcyBmdW5jdGlvbiBjYWxsc1xuICAgKHRoZXNlIGhhdmUgdG8gYmUgc3BpbGxlZCkuICBUaGV5IGFyZSBhbHNvIGFubm90YXRlZCBmb3IgcGFydGlhbCBpbmxpbmluZyAodGhlXG4gICBvbmUtY2FsbGJhY2sgY2FzZSBiZWNvbWVzIGlubGluZWQgd2hlcmVhcyB0aGUgPjEtY2FsbGJhY2stY2FzZSByZXF1aXJlcyBhIGZ1cnRoZXJcbiAgIGRpcmVjdCBjYWxsKS4gKilcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB3cml0ZSB0IGExID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGVfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDEgbGFzdF92YWx1ZSBhMSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGVfbG9jYWwgdCAoYTEgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGVfbG9jYWxfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUyIHQgYTEgYTIgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTJfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMik7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDIgbGFzdF92YWx1ZSBhMSBhMilcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUzIHQgYTEgYTIgYTMgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTNfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDMgbGFzdF92YWx1ZSBhMSBhMiBhMylcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGU0IHQgYTEgYTIgYTMgYTQgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIGE0IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTRfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDQgbGFzdF92YWx1ZSBhMSBhMiBhMyBhNClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGU1IHQgYTEgYTIgYTMgYTQgYTUgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIGE0IGE1IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTVfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCBhNSk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDUgbGFzdF92YWx1ZSBhMSBhMiBhMyBhNCBhNSlcbjs7XG5cbmxldCBhbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgdCA9XG4gIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS5hbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICB0Lm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZVxuOztcblxubGV0IGNyZWF0ZV9leG5cbiAgICAgID9uYW1lXG4gICAgICBjcmVhdGVkX2Zyb21cbiAgICAgIGNhbGxiYWNrX2FyaXR5XG4gICAgICB+KG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA6IE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS50KVxuICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gID1cbiAgbGV0IGxhc3RfdmFsdWUgPVxuICAgIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS5zYXZlX2xhc3RfdmFsdWVfZXhuXG4gICAgICBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICAgIGNhbGxiYWNrX2FyaXR5XG4gIGluXG4gIHsgYnVzX2lkID0gQnVzX2lkLmNyZWF0ZSAoKVxuICA7IG5hbWVcbiAgOyBjYWxsYmFja19hcml0eVxuICA7IGNyZWF0ZWRfZnJvbVxuICA7IG51bV9zdWJzY3JpYmVycyA9IDBcbiAgOyBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgOyBvbl9jYWxsYmFja19yYWlzZVxuICA7IGxhc3RfdmFsdWVcbiAgOyBzdWJzY3JpYmVycyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjowXG4gIDsgY2FsbGJhY2tzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjBcbiAgOyBzdGF0ZSA9IE9rX3RvX3dyaXRlXG4gIDsgd3JpdGVfZXZlcl9jYWxsZWQgPSBmYWxzZVxuICA7IHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPSBbXVxuICB9XG47O1xuXG5sZXQgY2FuX3N1YnNjcmliZSB0ID0gYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIHQgfHwgbm90IHQud3JpdGVfZXZlcl9jYWxsZWRcblxubGV0IGVubGFyZ2VfY2FwYWNpdHkgdCA9XG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgbGV0IG5ld19jYXBhY2l0eSA9IEludC5tYXggMSAoY2FwYWNpdHkgKiAyKSBpblxuICBsZXQgY29weV9hbmRfZG91YmxlIGFycmF5ID1cbiAgICBsZXQgbmV3X2FycmF5ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0IH5zcmM6YXJyYXkgfnNyY19wb3M6MCB+ZHN0Om5ld19hcnJheSB+ZHN0X3BvczowIH5sZW46Y2FwYWNpdHk7XG4gICAgbmV3X2FycmF5XG4gIGluXG4gIHQuc3Vic2NyaWJlcnMgPC0gY29weV9hbmRfZG91YmxlIHQuc3Vic2NyaWJlcnM7XG4gIHQuY2FsbGJhY2tzIDwtIGNvcHlfYW5kX2RvdWJsZSB0LmNhbGxiYWNrc1xuOztcblxubGV0IHN1YnNjcmliZV9leG5cbiAgICAgID8oZXh0cmFjdF9leG4gPSBmYWxzZSlcbiAgICAgID9vbl9jYWxsYmFja19yYWlzZVxuICAgICAgP29uX2Nsb3NlXG4gICAgICB0XG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIH5mOmNhbGxiYWNrXG4gID1cbiAgaWYgbm90IChjYW5fc3Vic2NyaWJlIHQpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQnVzLnN1YnNjcmliZV9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCJcbiAgICAgIFslc2V4cCB+fihzdWJzY3JpYmVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSwgeyBidXMgPSAodCA6IChfLCBfKSB0KSB9XVxuICAgICAgWyVzZXhwX29mOiBTZXhwLnRdO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT5cbiAgICAoKiBBbnl0aGluZyB0aGF0IHNhdGlzZmllcyB0aGUgcmV0dXJuIHR5cGUgd2lsbCBkby4gIFNpbmNlIHRoZSBzdWJzY3JpYmVyIGlzIG5ldmVyXG4gICAgICAgc3RvcmVkIGluIHRoZSBhcnJheXMsIHRoZSBbb25fY2xvc2VdIGNhbGxiYWNrIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiAqKVxuICAgIFN1YnNjcmliZXIuY3JlYXRlXG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIH5idXNfaWQ6dC5idXNfaWRcbiAgICAgIH5jYWxsYmFja1xuICAgICAgfmV4dHJhY3RfZXhuXG4gICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6KC0xKVxuICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICB+b25fY2xvc2VcbiAgfCBPa190b193cml0ZSB8IFdyaXRlX2luX3Byb2dyZXNzIC0+XG4gICAgKCogVGhlIGNvZGUgYmVsb3cgc2lkZSBlZmZlY3RzIFt0XSwgd2hpY2ggcG90ZW50aWFsbHkgY291bGQgaW50ZXJmZXJlIHdpdGggYSB3cml0ZSBpblxuICAgICAgIHByb2dyZXNzLiAgSG93ZXZlciwgdGhlIHNpZGUgZWZmZWN0cyBkb24ndCBjaGFuZ2UgdGhlIHByZWZpeCBvZiBbdC5jYWxsYmFja3NdIHRoYXRcbiAgICAgICB3cml0ZSB1c2VzOyB0aGV5IG9ubHkgY2hhbmdlIFt0LmNhbGxiYWNrc10gYmV5b25kIHRoYXQgcHJlZml4LiAgQW5kIGFsbCB3cml0ZXNcbiAgICAgICBleHRyYWN0IFt0Lm51bV9zdWJzY3JpYmVyc10gYXQgdGhlIHN0YXJ0LCBzbyB0aGF0IHRoZXkgd2lsbCBub3Qgc2VlIGFueSBzdWJzZXF1ZW50XG4gICAgICAgY2hhbmdlcyB0byBpdC4gKilcbiAgICBsZXQgc3Vic2NyaWJlciA9XG4gICAgICBTdWJzY3JpYmVyLmNyZWF0ZVxuICAgICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgICAgfmJ1c19pZDp0LmJ1c19pZFxuICAgICAgICB+Y2FsbGJhY2tcbiAgICAgICAgfmV4dHJhY3RfZXhuXG4gICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDp0Lm51bV9zdWJzY3JpYmVyc1xuICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2VcbiAgICAgICAgfm9uX2Nsb3NlXG4gICAgaW5cbiAgICBpZiBjYXBhY2l0eSB0ID0gdC5udW1fc3Vic2NyaWJlcnMgdGhlbiBlbmxhcmdlX2NhcGFjaXR5IHQ7XG4gICAgYWRkX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyIH5hdF9zdWJzY3JpYmVyc19pbmRleDp0Lm51bV9zdWJzY3JpYmVycztcbiAgICB0Lm51bV9zdWJzY3JpYmVycyA8LSB0Lm51bV9zdWJzY3JpYmVycyArIDE7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNlbmQgbGFzdF92YWx1ZSBjYWxsYmFjayk7XG4gICAgc3Vic2NyaWJlclxuOztcblxubGV0IGl0ZXJfZXhuID9leHRyYWN0X2V4biB0IHN1YnNjcmliZWRfZnJvbSB+ZiA9XG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCdXMuaXRlcl9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWdub3JlIChzdWJzY3JpYmVfZXhuID9leHRyYWN0X2V4biB0IHN1YnNjcmliZWRfZnJvbSB+ZiA6IF8gU3Vic2NyaWJlci50KVxuOztcblxubW9kdWxlIEZvbGRfYXJpdHkgPSBzdHJ1Y3RcbiAgdHlwZSAoXywgXywgXykgdCA9XG4gICAgfCBBcml0eTEgOiAoJ2EgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTMgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTQgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTVcbiAgICAgIDogKCAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0XG4gICAgICAgICwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ3NcbiAgICAgICAgLCAncyApXG4gICAgICAgICAgdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBmb2xkX2V4blxuICAgICAgP2V4dHJhY3RfZXhuXG4gICAgICAodHlwZSBjIGYgcylcbiAgICAgICh0IDogKGMsIF8pIHQpXG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIChmb2xkX2FyaXR5IDogKGMsIGYsIHMpIEZvbGRfYXJpdHkudClcbiAgICAgIH4oaW5pdCA6IHMpXG4gICAgICB+KGYgOiBmKVxuICA9XG4gIGxldCBzdGF0ZSA9IHJlZiBpbml0IGluXG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCdXMuZm9sZF9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaXRlcl9leG5cbiAgICA/ZXh0cmFjdF9leG5cbiAgICB0XG4gICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgfmY6XG4gICAgICAobWF0Y2ggZm9sZF9hcml0eSB3aXRoXG4gICAgICAgfCBBcml0eTEgLT4gZnVuIGExIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExXG4gICAgICAgfCBBcml0eTIgLT4gZnVuIGExIGEyIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyXG4gICAgICAgfCBBcml0eTMgLT4gZnVuIGExIGEyIGEzIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzXG4gICAgICAgfCBBcml0eTQgLT4gZnVuIGExIGEyIGEzIGE0IC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzIGE0XG4gICAgICAgfCBBcml0eTUgLT4gZnVuIGExIGEyIGEzIGE0IGE1IC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzIGE0IGE1KVxuOztcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMgY2FsbGJhY2sgd3JpdGUgPVxuICAgICAgbGV0IGJ1c19yID0gcmVhZF9vbmx5IGJ1cyBpblxuICAgICAgaWdub3JlIChzdWJzY3JpYmVfZXhuIGJ1c19yIFslaGVyZV0gfmY6Y2FsbGJhY2sgOiBfIFN1YnNjcmliZXIudCk7XG4gICAgICBsZXQgc3RhcnRpbmdfbWlub3Jfd29yZHMgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICAgICAgbGV0IHN0YXJ0aW5nX21ham9yX3dvcmRzID0gR2MubWFqb3Jfd29yZHMgKCkgaW5cbiAgICAgIHdyaXRlICgpO1xuICAgICAgbGV0IGVuZGluZ19taW5vcl93b3JkcyA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gICAgICBsZXQgZW5kaW5nX21ham9yX3dvcmRzID0gR2MubWFqb3Jfd29yZHMgKCkgaW5cbiAgICAgIFsldGVzdF9yZXN1bHQ6IGludF0gKGVuZGluZ19taW5vcl93b3JkcyAtIHN0YXJ0aW5nX21pbm9yX3dvcmRzKSB+ZXhwZWN0OjA7XG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChlbmRpbmdfbWFqb3Jfd29yZHMgLSBzdGFydGluZ19tYWpvcl93b3JkcykgfmV4cGVjdDowXG4gICAgOztcblxuICAgICgqIFRoaXMgdGVzdCBvbmx5IHdvcmtzIHdoZW4gW3dyaXRlXSBpcyBwcm9wZXJseSBpbmxpbmVkLiAgSXQgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXRcbiAgICAgICBbd3JpdGVdIG5ldmVyIGFsbG9jYXRlcyBpbiBhbnkgc2l0dWF0aW9uLiAgRm9yIGV4YW1wbGUsIGlmIHRoaXMgdGVzdCBpcyBtb3ZlZCB0b1xuICAgICAgIGFub3RoZXIgbGlicmFyeSBhbmQgcnVuIHdpdGggWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlLCBpdCBmYWlscy4gKilcbiAgICBsZXQldGVzdF91bml0IFwid3JpdGUgZG9lc24ndCBhbGxvY2F0ZSB3aGVuIGlubGluZWRcIiA9XG4gICAgICBsZXQgY3JlYXRlIGNyZWF0ZWRfZnJvbSBhcml0eSA9XG4gICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICBjcmVhdGVkX2Zyb21cbiAgICAgICAgICBhcml0eVxuICAgICAgICAgIH5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGU6UmFpc2VcbiAgICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2U6RXJyb3IucmFpc2VcbiAgICAgIGluXG4gICAgICBsZXQgYnVzMSA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5MSBpblxuICAgICAgbGV0IGJ1czIgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTIgaW5cbiAgICAgIGxldCBidXMzID0gY3JlYXRlIFslaGVyZV0gQXJpdHkzIGluXG4gICAgICBsZXQgYnVzNCA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5NCBpblxuICAgICAgbGV0IGJ1czUgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTUgaW5cbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uIGJ1czEgKGZ1biAoKSAtPiAoKSkgKGZ1biAoKSAtPiB3cml0ZSBidXMxICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uIGJ1czIgKGZ1biAoKSAoKSAtPiAoKSkgKGZ1biAoKSAtPiB3cml0ZTIgYnVzMiAoKSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMzIChmdW4gKCkgKCkgKCkgLT4gKCkpIChmdW4gKCkgLT4gd3JpdGUzIGJ1czMgKCkgKCkgKCkpO1xuICAgICAgYXNzZXJ0X25vX2FsbG9jYXRpb25cbiAgICAgICAgYnVzNFxuICAgICAgICAoZnVuICgpICgpICgpICgpIC0+ICgpKVxuICAgICAgICAoZnVuICgpIC0+IHdyaXRlNCBidXM0ICgpICgpICgpICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uXG4gICAgICAgIGJ1czVcbiAgICAgICAgKGZ1biAoKSAoKSAoKSAoKSAoKSAtPiAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiB3cml0ZTUgYnVzNSAoKSAoKSAoKSAoKSAoKSlcbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsX2ludGZcblxuKCogVGhpcyBwb3NpdGlvbiBzaG93cyB1cCBpbiB0ZXN0cyBpbiBhIHdheSB0aGF0IGlzIGRpZmZpY3VsdCB0byBzdXBwcmVzcywgc28gd2UgZGVmaW5lIGl0XG4gICBoZXJlIGluIGEgcGxhY2UgdGhhdCBpcyB1bmxpa2VseSB0byBjaGFuZ2UgdmVyeSBvZnRlbiAqKVxubGV0IGR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbl90ZXN0cyA9IFslaGVyZV1cblxubW9kdWxlIE1ha2UgKENvbm4gOiBDbG9zYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm4gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENvbm5cblxuICAgIGxldCBzZXhwX29mX3QgKF8gOiB0KSA6IFNleHAudCA9IEF0b20gXCI8Q29ubi50PlwiXG4gIGVuZFxuXG4gIHR5cGUgY29ubiA9IENvbm4udFxuXG4gIG1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdFxuICAgICAgfCBPYnRhaW5lZF9hZGRyZXNzIG9mICdhZGRyZXNzXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IG9mIEVycm9yLnRcbiAgICAgIHwgQ29ubmVjdGVkIG9mIChjb25uW0BzZXhwLm9wYXF1ZV0pXG4gICAgICB8IERpc2Nvbm5lY3RlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhZGRyZXNzIGV2ZW50ID0gJ2FkZHJlc3MgdFxuXG4gICAgbW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICAgIHsgc2VydmVyX25hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvbl9ldmVudCA6ICdhZGRyZXNzIGV2ZW50IC0+IHVuaXQgRGVmZXJyZWQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IGxvZ19sZXZlbCA9IGZ1bmN0aW9uXG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCB8IENvbm5lY3RlZCBfIHwgRGlzY29ubmVjdGVkIHwgT2J0YWluZWRfYWRkcmVzcyBfIC0+IGBJbmZvXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IF8gLT4gYEVycm9yXG4gICAgOztcblxuICAgIGxldCBoYW5kbGUgdCB7IEhhbmRsZXIuc2VydmVyX25hbWUgPSBfOyBvbl9ldmVudCB9ID0gb25fZXZlbnQgdFxuICBlbmRcblxuICAoKiBBIHBlcnNpc3RlbnQgY29ubmVjdGlvbiB0aGF0IGlzIHBvbHltb3JwaGljIGluIHRoZSBhZGRyZXNzIHR5cGUuICBXZSBoaWRlIGF3YXkgdGhpc1xuICAgICB0eXBlIGxhdGVyIHNpbmNlIGl0IG9ubHkgYXBwZWFycyBpbiB0aGUgdHlwZSBvZiBbY3JlYXRlXS4gKilcbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgeyBnZXRfYWRkcmVzcyA6IHVuaXQgLT4gJ2FkZHJlc3MgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IGNvbm5lY3QgOiAnYWRkcmVzcyAtPiBDb25uLnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IHJldHJ5X2RlbGF5IDogdW5pdCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZSBjb25uIDogWyBgT2sgb2YgQ29ubi50IHwgYENsb3NlX3N0YXJ0ZWQgXSBJdmFyLnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2Nvbm5lY3RfcmVzdWx0IDogQ29ubi50IE9yX2Vycm9yLnQgSXZhci50XG4gICAgICA7IGV2ZW50X2hhbmRsZXIgOiAnYWRkcmVzcyBFdmVudC5IYW5kbGVyLnRcbiAgICAgIDsgZXZlbnRfYnVzIDogKHVuaXQgRXZlbnQudCAtPiB1bml0LCByZWFkX3dyaXRlKSBCdXMudFxuICAgICAgOyBjbG9zZV9zdGFydGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBkb24ndF9yZWNvbm5lY3QgOiB1bml0IEl2YXIudFxuICAgICAgOyBhZGRyZXNzX2VxdWFsIDogJ2FkZHJlc3MgLT4gJ2FkZHJlc3MgLT4gYm9vbFxuICAgICAgOyBzZXhwX29mX2FkZHJlc3MgOiAnYWRkcmVzcyAtPiBTZXhwLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2VydmVyX25hbWUgdCA9IHQuZXZlbnRfaGFuZGxlci5zZXJ2ZXJfbmFtZVxuXG4gICAgbGV0IGhhbmRsZV9ldmVudCAodHlwZSBhZGRyZXNzKSB0IChldmVudCA6IGFkZHJlc3MgRXZlbnQudCkgPVxuICAgICAgQnVzLndyaXRlXG4gICAgICAgIHQuZXZlbnRfYnVzXG4gICAgICAgIChtYXRjaCBldmVudCB3aXRoXG4gICAgICAgICB8IE9idGFpbmVkX2FkZHJlc3MgKF8gOiBhZGRyZXNzKSAtPiBPYnRhaW5lZF9hZGRyZXNzICgpXG4gICAgICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCAtPiBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgICAgIHwgRmFpbGVkX3RvX2Nvbm5lY3QgZSAtPiBGYWlsZWRfdG9fY29ubmVjdCBlXG4gICAgICAgICB8IENvbm5lY3RlZCBjb25uIC0+IENvbm5lY3RlZCBjb25uXG4gICAgICAgICB8IERpc2Nvbm5lY3RlZCAtPiBEaXNjb25uZWN0ZWQpO1xuICAgICAgRXZlbnQuaGFuZGxlIGV2ZW50IHQuZXZlbnRfaGFuZGxlclxuICAgIDs7XG5cbiAgICAoKiBUaGlzIGZ1bmN0aW9uIGZvY3VzZXMgaW4gb24gdGhlIHRoZSBlcnJvciBpdHNlbGYsIGRpc2NhcmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2hcbiAgICAgICBtb25pdG9yIGNhdWdodCB0aGUgZXJyb3IsIGlmIGFueS5cblxuICAgICAgIElmIHdlIGRvbid0IGRvIHRoaXMsIHdlIHNvbWV0aW1lcyBlbmQgdXAgd2l0aCBub2lzeSBsb2dzIHdoaWNoIHJlcG9ydCB0aGUgc2FtZSBlcnJvclxuICAgICAgIGFnYWluIGFuZCBhZ2FpbiwgZGlmZmVyaW5nIG9ubHkgYXMgdG8gd2hhdCBtb25pdG9yIGNhdWdodCB0aGVtLiAqKVxuICAgIGxldCBzYW1lX2Vycm9yIGUxIGUyID1cbiAgICAgIGxldCB0b19zZXhwIGUgPSBFeG4uc2V4cF9vZl90IChNb25pdG9yLmV4dHJhY3RfZXhuIChFcnJvci50b19leG4gZSkpIGluXG4gICAgICBTZXhwLmVxdWFsICh0b19zZXhwIGUxKSAodG9fc2V4cCBlMilcbiAgICA7O1xuXG4gICAgKCogQ29udGludWUgdHJ5aW5nIHRvIGNvbm5lY3QgdW50aWwgd2UgYXJlIGFibGUgdG8gZG8gc28sIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGJvdGhcbiAgICAgICB0aGUgbmV3IGNvbm5lY3Rpb24gYW5kIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIG9uY2Ugd2UgYXJlIHJlYWR5IGZvclxuICAgICAgIHRoZSBuZXh0IHJlY29ubmVjdGlvbiBhdHRlbXB0LiAqKVxuICAgIGxldCB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHQgPVxuICAgICAgKCogV2UgdGFrZSBjYXJlIG5vdCB0byBzcGFtIGxvZ3Mgd2l0aCB0aGUgc2FtZSBtZXNzYWdlIG92ZXIgYW5kIG92ZXIgYnkgY29tcGFyaW5nXG4gICAgICAgICBlYWNoIGxvZyBtZXNzYWdlIHRoZSB0aGUgcHJldmlvdXMgb25lIG9mIHRoZSBzYW1lIHR5cGUuICopXG4gICAgICBsZXQgcHJldmlvdXNfYWRkcmVzcyA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgcHJldmlvdXNfZXJyb3IgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICB0LmdldF9hZGRyZXNzICgpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIGFkZHIgLT5cbiAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19hZGRyZXNzID1cbiAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2FkZHJlc3MgLT4gdC5hZGRyZXNzX2VxdWFsIGFkZHIgcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgcHJldmlvdXNfYWRkcmVzcyA6PSBTb21lIGFkZHI7XG4gICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoT2J0YWluZWRfYWRkcmVzcyBhZGRyKSlcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+IHQuY29ubmVjdCBhZGRyXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICAoKiBDYXRjaCBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgdXNlci1wcm92aWRlZCBbdC5nZXRfYWRkcmVzc10gb3IgW3QuY29ubmVjdF0gKilcbiAgICAgICAgRGVmZXJyZWQuT3JfZXJyb3IudHJ5X3dpdGhfam9pbiB+ZXh0cmFjdF9leG46YW1fcnVubmluZ190ZXN0IGNvbm5lY3RcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWQ7XG4gICAgICAgICAgcmV0dXJuIGBDbG9zZV9zdGFydGVkKVxuICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICB0aGVuIHJldHVybiBgRG9uJ3RfcmVjb25uZWN0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nID0gdC5yZXRyeV9kZWxheSAoKSBpblxuICAgICAgICAgIGxldCViaW5kIGNvbm5lY3RfcmVzdWx0ID0gY29ubmVjdCAoKSBpblxuICAgICAgICAgIEl2YXIuZmlsbCB0Lm5leHRfY29ubmVjdF9yZXN1bHQgY29ubmVjdF9yZXN1bHQ7XG4gICAgICAgICAgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIG1hdGNoIGNvbm5lY3RfcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIGNvbm4gLT5cbiAgICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gKGBPayBjb25uKTtcbiAgICAgICAgICAgIHJldHVybiAoYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSlcbiAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfZXJyb3IgPVxuICAgICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfZXJyb3Igd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2VyciAtPiBzYW1lX2Vycm9yIGVyciBwcmV2aW91c19lcnJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwcmV2aW91c19lcnJvciA6PSBTb21lIGVycjtcbiAgICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2Vycm9yXG4gICAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoRmFpbGVkX3RvX2Nvbm5lY3QgZXJyKSlcbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgIERlZmVycmVkLmFueVxuICAgICAgICAgICAgICBbIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmdcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0ID1cbiAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgKCk7XG4gICAgICBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKTtcbiAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWRcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgICh0eXBlIGFkZHJlc3MpXG4gICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICAgPyhvbl9ldmVudCA9IGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gICAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgICAgPyhyYW5kb21fc3RhdGUgPSBgU3RhdGUgUmFuZG9tLlN0YXRlLmRlZmF1bHQpXG4gICAgICAgICAgPyh0aW1lX3NvdXJjZSA9IFRpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgICB+YWRkcmVzczoobW9kdWxlIEFkZHJlc3MgOiBBZGRyZXNzIHdpdGggdHlwZSB0ID0gYWRkcmVzcylcbiAgICAgICAgICBnZXRfYWRkcmVzc1xuICAgICAgPVxuICAgICAgbGV0IGV2ZW50X2hhbmRsZXIgPSB7IEV2ZW50LkhhbmRsZXIuc2VydmVyX25hbWU7IG9uX2V2ZW50IH0gaW5cbiAgICAgIGxldCBkZWZhdWx0X3JldHJ5X2RlbGF5ID1cbiAgICAgICAgRm4uY29uc3QgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgKGlmIGFtX3J1bm5pbmdfdGVzdCB0aGVuIDAuMSBlbHNlIDEwLikpXG4gICAgICBpblxuICAgICAgbGV0IG5vbl9yYW5kb21pemVkX2RlbGF5ID0gT3B0aW9uLnZhbHVlIHJldHJ5X2RlbGF5IH5kZWZhdWx0OmRlZmF1bHRfcmV0cnlfZGVsYXkgaW5cbiAgICAgIGxldCByZXRyeV9kZWxheV9zcGFuID1cbiAgICAgICAgbWF0Y2ggcmFuZG9tX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgTm9uX3JhbmRvbSAtPiBub25fcmFuZG9taXplZF9kZWxheVxuICAgICAgICB8IGBTdGF0ZSByYW5kb21fc3RhdGUgLT5cbiAgICAgICAgICBmdW4gKCkgLT5cbiAgICAgICAgICAgIGxldCBzcGFuID0gbm9uX3JhbmRvbWl6ZWRfZGVsYXkgKCkgaW5cbiAgICAgICAgICAgIGxldCBzcGFuID0gVGltZV9ucy5TcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBSYW5kb20uU3RhdGUuZmxvYXQgcmFuZG9tX3N0YXRlIChzcGFuICouIDAuMykgaW5cbiAgICAgICAgICAgIGxldCB3YWl0ID1cbiAgICAgICAgICAgICAgaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlXG4gICAgICAgICAgICAgIHRoZW4gc3BhbiArLiBkaXN0YW5jZVxuICAgICAgICAgICAgICBlbHNlIHNwYW4gLS4gZGlzdGFuY2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBUaW1lX25zLlNwYW4ub2Zfc2VjIHdhaXRcbiAgICAgIGluXG4gICAgICBsZXQgcmV0cnlfZGVsYXkgKCkgPSBUaW1lX3NvdXJjZS5hZnRlciB0aW1lX3NvdXJjZSAocmV0cnlfZGVsYXlfc3BhbiAoKSkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgeyBldmVudF9oYW5kbGVyXG4gICAgICAgIDsgZXZlbnRfYnVzID1cbiAgICAgICAgICAgIEJ1cy5jcmVhdGVfZXhuXG4gICAgICAgICAgICAgIChpZiBhbV9ydW5uaW5nX3Rlc3QgdGhlbiBkdW1teV9zcmNfcG9zX3RoYXRfc2hvd3NfdXBfaW5fdGVzdHMgZWxzZSBbJWhlcmVdKVxuICAgICAgICAgICAgICBBcml0eTFcbiAgICAgICAgICAgICAgfm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZTpBbGxvd19hbmRfc2VuZF9sYXN0X3ZhbHVlXG4gICAgICAgICAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgICAgOyBnZXRfYWRkcmVzc1xuICAgICAgICA7IGNvbm5lY3RcbiAgICAgICAgOyBuZXh0X2Nvbm5lY3RfcmVzdWx0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyByZXRyeV9kZWxheVxuICAgICAgICA7IGNvbm4gPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX2ZpbmlzaGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBkb24ndF9yZWNvbm5lY3QgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGFkZHJlc3NfZXF1YWwgPSBBZGRyZXNzLmVxdWFsXG4gICAgICAgIDsgc2V4cF9vZl9hZGRyZXNzID0gQWRkcmVzcy5zZXhwX29mX3RcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgICgqIHRoaXMgbG9vcCBmaW5pc2hlcyBvbmNlIFtjbG9zZSB0XSBoYXMgYmVlbiBjYWxsZWQsIGluIHdoaWNoIGNhc2UgaXQgbWFrZXMgc3VyZSB0b1xuICAgICAgICAgbGVhdmUgW3QuY29ubl0gZmlsbGVkIHdpdGggW2BDbG9zZV9zdGFydGVkXS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICBAQCBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKCkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQlYmluZCAoKSA9IGhhbmRsZV9ldmVudCB0IEF0dGVtcHRpbmdfdG9fY29ubmVjdCBpblxuICAgICAgICBtYXRjaCViaW5kIHRyeV9jb25uZWN0aW5nX3VudGlsX3N1Y2Nlc3NmdWwgdCB3aXRoXG4gICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gcmV0dXJuIChgRmluaXNoZWQgKCkpXG4gICAgICAgIHwgYERvbid0X3JlY29ubmVjdCAtPlxuICAgICAgICAgIGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQ7XG4gICAgICAgICAgcmV0dXJuIChgRmluaXNoZWQgKCkpXG4gICAgICAgIHwgYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSAtPlxuICAgICAgICAgIGxldCViaW5kICgpID0gaGFuZGxlX2V2ZW50IHQgKENvbm5lY3RlZCBjb25uKSBpblxuICAgICAgICAgIGxldCViaW5kICgpID0gQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uIGluXG4gICAgICAgICAgdC5jb25uIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIGxldCViaW5kICgpID0gaGFuZGxlX2V2ZW50IHQgRGlzY29ubmVjdGVkIGluXG4gICAgICAgICAgKCogd2FpdHMgdW50aWwgW3JldHJ5X2RlbGF5ICgpXSB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIHRpbWUganVzdCBiZWZvcmUgd2UgbGFzdFxuICAgICAgICAgICAgIHRyaWVkIHRvIGNvbm5lY3QgcmF0aGVyIHRoYW4gdGhlIHRpbWUgd2Ugbm90aWNlZCBiZWluZyBkaXNjb25uZWN0ZWQsIHNvIHRoYXQgaWZcbiAgICAgICAgICAgICBhIGxvbmctbGl2ZWQgY29ubmVjdGlvbiBkaWVzLCB3ZSB3aWxsIGF0dGVtcHQgdG8gcmVjb25uZWN0IGltbWVkaWF0ZWx5LiAqKVxuICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgRGVmZXJyZWQuYW55XG4gICAgICAgICAgICAgIFsgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZ1xuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGBSZXBlYXQgKCkpO1xuICAgICAgdFxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkIHQgPVxuICAgICAgKCogVGFrZSBjYXJlIG5vdCB0byByZXR1cm4gYSBjb25uZWN0aW9uIHRoYXQgaXMga25vd24gdG8gYmUgY2xvc2VkIGF0IHRoZSB0aW1lXG4gICAgICAgICBbY29ubmVjdGVkXSB3YXMgY2FsbGVkLiAgVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2xpZW50IGNvZGUgdGhhdCBiZWhhdmVzIGxpa2VcbiAgICAgICAgIHtbXG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgPj49IGZ1biBjMSAtPlxuICAgICAgICAgICAuLi5cbiAgICAgICAgICAgICBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCBjMVxuICAgICAgICAgICAoKiBhdCB0aGlzIHBvaW50IHdlIGFyZSBpbiBhIHJhY2Ugd2l0aCB0aGUgc2FtZSBjYWxsIGluc2lkZVxuICAgICAgICAgICAgICBwZXJzaXN0ZW50X2NsaWVudC5tbCAqKVxuICAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgKCogZGVwZW5kaW5nIG9uIGhvdyB0aGUgcmFjZSB0dXJucyBvdXQsIHdlIGRvbid0IHdhbnQgdG8gZ2V0IGEgY2xvc2VkIGNvbm5lY3Rpb25cbiAgICAgICAgICAgICAgaGVyZSAqKVxuICAgICAgICAgICA+Pj0gZnVuIGMyIC0+XG4gICAgICAgICAgIC4uLlxuICAgICAgICAgXX1cbiAgICAgICAgIFRoaXMgZG9lc24ndCByZW1vdmUgdGhlIHJhY2UgY29uZGl0aW9uLCBidXQgaXQgbWFrZXMgaXQgbGVzcyBsaWtlbHkgdG8gaGFwcGVuLlxuICAgICAgKilcbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGxldCBkID0gSXZhci5yZWFkIHQuY29ubiBpblxuICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBkXG4gICAgICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgICAgICAgICAgfCBgT2sgY29ubiAtPiByZXR1cm4gY29ubilcbiAgICAgICAgfCBTb21lIGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgICAgIHwgU29tZSAoYE9rIGNvbm4pIC0+XG4gICAgICAgICAgaWYgQ29ubi5pc19jbG9zZWQgY29ublxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIGdpdmUgdGhlIHJlY29ubmVjdGlvbiBsb29wIGEgY2hhbmNlIHRvIG92ZXJ3cml0ZSB0aGUgaXZhciAqKVxuICAgICAgICAgICAgQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uID4+PSBsb29wXG4gICAgICAgICAgZWxzZSByZXR1cm4gY29ublxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiB0ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCB0LmNvbm4pIHdpdGhcbiAgICAgIHwgTm9uZSB8IFNvbWUgYENsb3NlX3N0YXJ0ZWQgLT4gTm9uZVxuICAgICAgfCBTb21lIChgT2sgY29ubikgLT4gU29tZSBjb25uXG4gICAgOztcblxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbiAgICBsZXQgY2xvc2UgdCA9XG4gICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICB0aGVuXG4gICAgICAgICgqIEFub3RoZXIgY2FsbCB0byBjbG9zZSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLiAgV2FpdCBmb3IgaXQgdG8gZmluaXNoLiAqKVxuICAgICAgICBjbG9zZV9maW5pc2hlZCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCAoKTtcbiAgICAgICAgSXZhci5yZWFkIHQuY29ublxuICAgICAgICA+Pj0gZnVuIGNvbm5fb3B0IC0+XG4gICAgICAgIChtYXRjaCBjb25uX29wdCB3aXRoXG4gICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgIHwgYE9rIGNvbm4gLT4gQ29ubi5jbG9zZSBjb25uKVxuICAgICAgICA+PnwgZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkID1cbiAgICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwiUGVyc2lzdGVudCBjb25uZWN0aW9uIGNsb3NlZFwiXVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHQgPVxuICAgICAgaWYgaXNfY2xvc2VkIHRcbiAgICAgIHRoZW4gcmV0dXJuIGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGN1cnJlbnRfY29ubmVjdGlvbiB0IHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiBub3QgKENvbm4uaXNfY2xvc2VkIHgpIC0+IHJldHVybiAoT2sgeClcbiAgICAgICAgfCBTb21lIChfIDogQ29ubi50KSB8IE5vbmUgLT5cbiAgICAgICAgICBEZWZlcnJlZC5jaG9vc2VcbiAgICAgICAgICAgIFsgY2hvaWNlIChJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkKVxuICAgICAgICAgICAgOyBjaG9pY2UgKEl2YXIucmVhZCB0Lm5leHRfY29ubmVjdF9yZXN1bHQpIEZuLmlkXG4gICAgICAgICAgICBdKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIHQgPVxuICAgICAgSXZhci5maWxsX2lmX2VtcHR5IHQuZG9uJ3RfcmVjb25uZWN0ICgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID0gVCA6ICdhZGRyZXNzIFBvbHkudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IFBvbHkuc2V4cF9vZl90IHQuc2V4cF9vZl9hZGRyZXNzIHRcblxuICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIChUIHQpID1cbiAgICBQb2x5LmNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCB0XG4gIDs7XG5cbiAgbGV0IGNsb3NlX2ZpbmlzaGVkIChUIHQpID0gUG9seS5jbG9zZV9maW5pc2hlZCB0XG4gIGxldCBpc19jbG9zZWQgKFQgdCkgPSBQb2x5LmlzX2Nsb3NlZCB0XG4gIGxldCBldmVudF9idXMgKFQgdCkgPSBCdXMucmVhZF9vbmx5IHQuZXZlbnRfYnVzXG4gIGxldCBjbG9zZSAoVCB0KSA9IFBvbHkuY2xvc2UgdFxuICBsZXQgc2VydmVyX25hbWUgKFQgdCkgPSBQb2x5LnNlcnZlcl9uYW1lIHRcbiAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiAoVCB0KSA9IFBvbHkuY3VycmVudF9jb25uZWN0aW9uIHRcbiAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHRcbiAgbGV0IGNvbm5lY3RlZCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkIHRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgID9yYW5kb21fc3RhdGVcbiAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgIH5jb25uZWN0XG4gICAgICAgIH5hZGRyZXNzXG4gICAgICAgIGdldF9hZGRyZXNzXG4gICAgPVxuICAgIFRcbiAgICAgIChQb2x5LmNyZWF0ZVxuICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICAgP3JhbmRvbV9zdGF0ZVxuICAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgICB+Y29ubmVjdFxuICAgICAgICAgfmFkZHJlc3NcbiAgICAgICAgIGdldF9hZGRyZXNzKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbnR5cGUgdCA9XG4gIHwgS3JiXG4gIHwgS3JiX3Rlc3RfbW9kZVxuICB8IFJwY1xuW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBiaW5faW9dXG5cbmxldCBtYWdpY193b3JkID0gZnVuY3Rpb25cbiAgfCBLcmIgLT4gXCJLUkIyXCJcbiAgfCBLcmJfdGVzdF9tb2RlIC0+IFwiS0JUXCJcbiAgfCBScGMgLT4gXCJSUENcIlxuOztcblxubGV0IGdlbl9tYWdpY19udW1iZXIgd29yZCA9XG4gIFN0cmluZy50b19saXN0X3JldiB3b3JkXG4gIHw+IExpc3QuZm9sZCB+aW5pdDowIH5mOihmdW4gYWNjIGMgLT4gKGFjYyAqIDI1NikgKyBDaGFyLnRvX2ludCBjKVxuOztcblxubGV0IG1hZ2ljX251bWJlciB0ID0gZ2VuX21hZ2ljX251bWJlciAobWFnaWNfd29yZCB0KVxubGV0IGJ5X21hZ2ljX251bWJlciA9IEludC5NYXAub2ZfYWxpc3RfZXhuIChMaXN0Lm1hcCBhbGwgfmY6KGZ1biBwIC0+IG1hZ2ljX251bWJlciBwLCBwKSlcblxuKCogV2Ugb25jZSBtaW50ZWQgYSBuZXcgbWFnaWMgbnVtYmVyIGZvciBLcmIgaW4gb3JkZXIgdG8gY2hhbmdlIHRoZSBwcm90b2NvbFxuICAgbmVnb3RpYXRpb24uICBMZXQncyBiZSBjYXJlZnVsIHRoYXQgd2UgZG9uJ3QgcmV1c2UgdGhlIG9sZCBtYWdpYyBudW1iZXIgKilcbmxldCByZXRpcmVkX2tyYl93b3JkID0gXCJLUkJcIlxuXG4oKiBFbnN1cmUgdGVzdHMgYnJlYWsgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlIGNoYW5nZWQgKilcbmxldCV0ZXN0X3VuaXQgXCJtYWdpYyBudW1iZXJzXCIgPVxuICBhc3NlcnQgKGdlbl9tYWdpY19udW1iZXIgcmV0aXJlZF9rcmJfd29yZCA9IDRfMzQ2XzQ0Myk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIEtyYiA9IDg0M18yMDdfMjQzKTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgS3JiX3Rlc3RfbW9kZSA9IDVfNTIxXzk5NSk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIFJwYyA9IDRfNDExXzQ3NClcbjs7XG5cbm1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICBsZXQgYWxsX21hZ2ljX251bWJlcnNfaW5jbHVkaW5nX3JldGlyZWQgPVxuICAgIGxhenkgKHJldGlyZWRfa3JiX3dvcmQgOjogTGlzdC5tYXAgYWxsIH5mOm1hZ2ljX3dvcmQgfD4gTGlzdC5tYXAgfmY6Z2VuX21hZ2ljX251bWJlcilcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBMaXN0X3dpdGhfbWF4X2xlbl9pbnRmXG5cbm1vZHVsZSBNYWtlIChDb25maWcgOiBDb25maWcpID0gc3RydWN0XG4gIGluY2x1ZGUgQ29uZmlnXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICBsZXQgX19iaW5fcmVhZF90X18gPSBMaXN0Ll9fYmluX3JlYWRfdF9fXG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgICB0cnkgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgd2l0aFxuICAgIHwgZXhuIC0+IEV4bi5yZXJhaXNlIGV4biAoSW5mby50b19zdHJpbmdfaHVtIGNvbnRleHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCAoYmluX3JlYWRlcl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3QgYmluX3JlYWRlcl9hLnJlYWRcbiAgICA7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCAoYmluX2EgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2hhcGUgPSBiaW5fc2hhcGVfdCBiaW5fYS5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IGJpbl9hLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IGJpbl9hLnJlYWRlclxuICAgIH1cbiAgOztcblxuICBsZXQgb2ZfbGlzdF9leG4gbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBpZiBsZW4gPiBtYXhfbGVuXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJMaXN0IGlzIHRvbyBsYXJnZVwiIChjb250ZXh0IDogSW5mby50KSAobGVuIDogaW50KSAobWF4X2xlbiA6IGludCldO1xuICAgIGxcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID0gTGlzdC5zZXhwX29mX3RcblxuICBsZXQgdF9vZl9zZXhwIHRfb2ZfYSBzZXhwID1cbiAgICBsZXQgdCA9IExpc3QudF9vZl9zZXhwIHRfb2ZfYSBzZXhwIGluXG4gICAgb2ZfbGlzdF9leG4gdFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgS25vd25fcHJvdG9jb2wgPSBLbm93bl9wcm90b2NvbFxuXG5sZXQgbWF4X3N1cHBvcnRlZF92ZXJzaW9uID0gMV8wMDBfMDAwXG5sZXQgb3V0c2lkZV9tYXhfc3VwcG9ydGVkX3ZlcnNpb25fcmFuZ2UgbnVtID0gbnVtID4gbWF4X3N1cHBvcnRlZF92ZXJzaW9uXG5cbm1vZHVsZSBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUgPVxuICBMaXN0X3dpdGhfbWF4X2xlbi5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgbWF4X2xlbiA9IDEwMFxuICAgIGxldCBjb250ZXh0ID0gSW5mby5vZl9zdHJpbmcgXCJQcm90b2NvbF92ZXJzaW9uX2hlYWRlclwiXG4gIGVuZClcblxudHlwZSB0ID0gaW50IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS50XG5bQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzID0gbGF6eSAoTWFwLmtleV9zZXQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyKVxuXG5sZXQgY3JlYXRlX2V4biA/KGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA9IFtdKSB+cHJvdG9jb2wgfnN1cHBvcnRlZF92ZXJzaW9ucyAoKSA9XG4gIGxldCBwcm90b2NvbF9tYWdpY19udW1iZXIgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgaW5cbiAgaWYgTGlzdC5leGlzdHMgc3VwcG9ydGVkX3ZlcnNpb25zIH5mOm91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJVbmFibGUgdG8gYWR2ZXJ0aXNlIHZlcnNpb25zIGxhcmdlciB0aGFuIG1heCBzdXBwb3J0ZWQgdmVyc2lvblwiXG4gICAgICAgICAgKG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA6IGludClcbiAgICAgICAgICAoc3VwcG9ydGVkX3ZlcnNpb25zIDogaW50IGxpc3QpXTtcbiAgaWYgTGlzdC5leGlzdHMgYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIH5mOihGbi5ub24gb3V0c2lkZV9tYXhfc3VwcG9ydGVkX3ZlcnNpb25fcmFuZ2UpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbYWRkaXRpb25hbF9tYWdpY19udW1iZXJzXSBzaG91bGRuJ3QgYmUgd2l0aGluIFttYXhfc3VwcG9ydGVkX3ZlcnNpb25dIHJhbmdlXCJcbiAgICAgICAgICAobWF4X3N1cHBvcnRlZF92ZXJzaW9uIDogaW50KVxuICAgICAgICAgIChhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgOiBpbnQgbGlzdCldO1xuICBpZiBMaXN0LmV4aXN0c1xuICAgICAgIGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVyc1xuICAgICAgIH5mOihTZXQubWVtIChmb3JjZSBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzKSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlthZGRpdGlvbmFsX21hZ2ljX251bWJlcnNdIHNob3VsZG4ndCBiZSBvdmVybGFwcGluZyB3aXRoIHBvdGVudGlhbCBcXFxuICAgICAgICAgW3Byb3RvY29sX21hZ2ljX251bWJlcl1zXCJcbiAgICAgICAgICAoYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIDogaW50IGxpc3QpXG4gICAgICAgICAgfmtub3duX3Byb3RvY29sX21hZ2ljX251bWJlcnM6KGZvcmNlIGtub3duX3Byb3RvY29sX21hZ2ljX251bWJlcnMgOiBJbnQuU2V0LnQpXTtcbiAgcHJvdG9jb2xfbWFnaWNfbnVtYmVyIDo6IChhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgQCBzdXBwb3J0ZWRfdmVyc2lvbnMpXG4gIHw+IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5vZl9saXN0X2V4blxuOztcblxubGV0IHJhd192ZXJzaW9uX2xpc3QgKHQgOiB0KSA9ICh0IDo+IGludCBsaXN0KVxuXG5sZXQgZ2V0X3Byb3RvY29sICh0IDogdCkgPVxuICBsZXQgcHJvdG9jb2xzLCB2ZXJzaW9ucywgX2FkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA9XG4gICAgTGlzdC5wYXJ0aXRpb24zX21hcFxuICAgICAgKHQgOj4gaW50IGxpc3QpXG4gICAgICB+ZjooZnVuIHYgLT5cbiAgICAgICAgbWF0Y2ggTWFwLmZpbmQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyIHYgd2l0aFxuICAgICAgICB8IFNvbWUgcCAtPiBgRnN0IHBcbiAgICAgICAgfCBOb25lIC0+IGlmIG91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlIHYgdGhlbiBgVHJkIHYgZWxzZSBgU25kIHYpXG4gIGluXG4gIG1hdGNoIHByb3RvY29scyB3aXRoXG4gIHwgW10gLT4gT2sgKE5vbmUsIEludC5TZXQub2ZfbGlzdCB2ZXJzaW9ucylcbiAgfCBbIHAgXSAtPiBPayAoU29tZSBwLCBJbnQuU2V0Lm9mX2xpc3QgdmVyc2lvbnMpXG4gIHwgXyAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBtdWx0aXBsZSBtYWdpYyBudW1iZXJzIHNlZW4uXCJcbiAgICAgICAgICAocHJvdG9jb2xzIDogS25vd25fcHJvdG9jb2wudCBsaXN0KVxuICAgICAgICAgICh2ZXJzaW9ucyA6IGludCBsaXN0KV1cbjs7XG5cbmxldCBuZWdvdGlhdGUgfmFsbG93X2xlZ2FjeV9wZWVyIH4odXMgOiB0KSB+KHBlZXIgOiB0KSA9XG4gIGxldCBvcGVuIE9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgbGV0JWJpbmQgdXNfcHJvdG9jb2wsIHVzX3ZlcnNpb25zID0gZ2V0X3Byb3RvY29sIHVzIGluXG4gIGxldCViaW5kIHBlZXJfcHJvdG9jb2wsIHBlZXJfdmVyc2lvbnMgPSBnZXRfcHJvdG9jb2wgcGVlciBpblxuICBsZXQlYmluZCB1c19wcm90b2NvbCA9XG4gICAgbWF0Y2ggdXNfcHJvdG9jb2wgd2l0aFxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgfCBOb25lIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiTm8gbWFnaWMgbnVtYmVycyBzZWVuXCIgKHVzX3ZlcnNpb25zIDogSW50LlNldC50KV1cbiAgaW5cbiAgbGV0JWJpbmQgcGVlcl9wcm90b2NvbCA9XG4gICAgbWF0Y2ggcGVlcl9wcm90b2NvbCB3aXRoXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGFzc3VtZSBwZWVyIGlzIHNwZWFraW5nIG91ciBwcm90b2NvbCBpZiBbYWxsb3dfbGVnYWN5X3BlZXJdICopXG4gICAgICBpZiBhbGxvd19sZWdhY3lfcGVlclxuICAgICAgdGhlbiByZXR1cm4gdXNfcHJvdG9jb2xcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcGVlcl9wcm90b2NvbCA9IGBVbmtub3duIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IGNvbmZsaWN0aW5nIG1hZ2ljIHByb3RvY29sIG51bWJlcnNcIlxuICAgICAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgICAgICAocGVlcl9wcm90b2NvbCA6IFsgYFVua25vd24gXSldKVxuICBpblxuICBpZiBub3QgKFslY29tcGFyZS5lcXVhbDogS25vd25fcHJvdG9jb2wudF0gdXNfcHJvdG9jb2wgcGVlcl9wcm90b2NvbClcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBjb25mbGljdGluZyBtYWdpYyBwcm90b2NvbCBudW1iZXJzXCJcbiAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgIChwZWVyX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldXG4gIGVsc2UgKFxuICAgIGxldCBwcm90b2NvbCA9IHVzX3Byb3RvY29sIGluXG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciB1c192ZXJzaW9ucyBwZWVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBubyBzaGFyZWQgdmVyc2lvbiBudW1iZXJzXCJcbiAgICAgICAgICAgICh1c192ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChwZWVyX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKHByb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldKVxuOztcblxubGV0IG1hdGNoZXNfbWFnaWNfcHJlZml4ICh0IDogdCkgfnByb3RvY29sID1cbiAgbGV0IG1hZ2ljX251bWJlciA9IEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlciBwcm90b2NvbCBpblxuICBMaXN0Lm1lbSB+ZXF1YWw6SW50LmVxdWFsIChyYXdfdmVyc2lvbl9saXN0IHQpIG1hZ2ljX251bWJlclxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgPVxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXIgKG1hdGNoZXNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCkgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeCA9XG4gIGxldCBmIHQgPVxuICAgIExpc3QuZmluZCBLbm93bl9wcm90b2NvbC5hbGwgfmY6KGZ1biBwcm90b2NvbCAtPiBtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgdClcbiAgaW5cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIGYgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyX2Jpbl9zaXplID0gNVxuXG5tb2R1bGUgTWFnaWNfcHJlZml4X2Jpbl9yZXByID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICAoKiBUaGUgYmluIHByb3QgcmVwcmVzZW50YXRpb24gb2YgYSBwcm90b2NvbCB2ZXJzaW9uIGhlYWRlciBpcyB0aGUgc3RhbmRhcmRcbiAgICAgcmVwcmVzZW50YXRpb24gZm9yIGFuIGludCBsaXN0OlxuXG4gICAgIHwgbmF0MCBpbmRpY2F0aW5nIHNpemUgfCBlbGVtZW50IDAgfCBlbGVtZW50IDEgfCAuLi5cblxuICAgICBbY3JlYXRlX2V4bl0gd2lsbCBhbHdheXMgcHV0IHRoZSBrbm93biBwcm90b2NvbCBtYWdpYyBudW1iZXIgYXMgXCJlbGVtZW50IDBcIi5cblxuICAgICBUaGUgYmluIHNpemUgb2YgXCJuYXQwIGluZGljYXRpbmcgc2l6ZVwiIGFuZCBcImVsZW1lbnQgMFwiIGlzIGZpeGVkICh0aGVyZSBhcmUgZXhwZWN0XG4gICAgIHRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBuZXZlciBjaGFuZ2UgdGhlbSkuICopXG4gIGxldCBiaW5fc2l6ZSA9XG4gICAgYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICsgbWFnaWNfbnVtYmVyX2Jpbl9zaXplXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgKF9saXN0X2xlbmd0aCA6IEJpbl9wcm90Lk5hdDAudCkgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIGluXG4gICAgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBJbnQuX19iaW5fcmVhZF90X18gfVxuICA7O1xuZW5kXG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyXG4gICAgKGZ1biBtYWdpY19udW1iZXIgLT4gKE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlcikgbWFnaWNfbnVtYmVyKVxuICAgIE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fcmVhZGVyX3Rcbjs7XG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplID0gTWFnaWNfcHJlZml4X2Jpbl9yZXByLmJpbl9zaXplXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJhd192ZXJzaW9uX2xpc3QgPSByYXdfdmVyc2lvbl9saXN0XG5lbmRcblxubW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlX2xpc3Rfd2l0aF9tYXhfbGVuID0gTGlzdF93aXRoX21heF9sZW4uTWFrZVxuXG4gIGxldCBtYWdpY19udW1iZXJfYmluX3NpemUgPSBtYWdpY19udW1iZXJfYmluX3NpemVcbiAgbGV0IG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA9IG1heF9zdXBwb3J0ZWRfdmVyc2lvblxuZW5kXG5cbmxldCV0ZXN0X3VuaXQgXCJiaW4gc2l6ZXMgYXJlIG5vdCBjaGFuZ2VkIGJ5IGFjY2lkZW50XCIgPVxuICAoKiBFbnN1cmUgdGhlIGJpbl9zaXplIG9mIEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5tYXhfbGVuXG4gICAgIGlzIGFsd2F5cyAxLiBUaGlzIG1lYW5zIHRoYXQgcmVnYXJkbGVzcyBvZiBob3cgbG9uZyB0aGUgbGlzdCBvZiB2ZXJzaW9ucyBpbiB0aGVcbiAgICAgcHJvdG9jb2wgaGVhZGVyIGlzLCB0aGUgcmVwcmVzZW50YXRpb24gd2lsbCBiZSB0aGUgc2FtZSBudW1iZXIgb2YgYnl0ZXMuIFRoZVxuICAgICByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnQganVtcHMgdG8gMyBieXRlcyBhdCB0aGUgdmFsdWUgMTI4LiAqKVxuICBsZXQgYm91bmRlZF9saXN0X2Jpbl9zaXplID1cbiAgICBJbnQuYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICBpblxuICBhc3NlcnQgKGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9IDEpO1xuICBhc3NlcnQgKDYgPSBtYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpO1xuICBhc3NlcnQgKFxuICAgIGFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZXNfYmluX3NpemVcbiAgICA9IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSArIGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSlcbjs7XG4iLCJ0eXBlIHQgPSBCaW5fcHJvdC5OYXQwLnRcbltAQGRlcml2aW5nIGJpbl9zaGFwZSB+YmFzZXR5cGU6XCI4OTllMmY0YS00OTBhLTExZTYtYjY4Zi1iYmQ2MjQ3MjUxNmNcIl1cblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gIFslZXhwZWN0IHt8IDU5NWYyYTYwZjExODE2YjI5YTcyZGRhYjE3MDAyYjU2IHx9XVxuOztcblxubGV0IGJpbl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fbmF0MFxubGV0IGJpbl9zaXplX3QgPSBCaW5fcHJvdC5TaXplLmJpbl9zaXplX25hdDBcbmxldCBiaW5fd3JpdGVyX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0MFxubGV0IGJpbl93cml0ZV90ID0gQmluX3Byb3QuV3JpdGUuYmluX3dyaXRlX25hdDBcbmxldCBiaW5fcmVhZGVyX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl9yZWFkZXJfbmF0MFxubGV0IGJpbl9yZWFkX3QgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDBcblxubGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX3ZuYXQwID1cbiAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuOztcblxubGV0IG9mX2ludF9leG4gPSBCaW5fcHJvdC5OYXQwLm9mX2ludFxuIiwib3BlbiBDb3JlXG5vcGVuIFBvbHlcblxubGV0IG9mX3dyaXRlciB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9XG4gIGxldCB3cml0ZSBidWYgfnBvcyBhID1cbiAgICBsZXQgbGVuID0gTmF0MC5vZl9pbnRfZXhuIChzaXplIGEpIGluXG4gICAgbGV0IHBvcyA9IE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3MgbGVuIGluXG4gICAgd3JpdGUgYnVmIH5wb3MgYVxuICBpblxuICBsZXQgc2l6ZSBhID1cbiAgICBsZXQgbGVuID0gTmF0MC5vZl9pbnRfZXhuIChzaXplIGEpIGluXG4gICAgTmF0MC5iaW5fc2l6ZV90IGxlbiArICgobGVuIDogQmluX3Byb3QuTmF0MC50KSA6PiBpbnQpXG4gIGluXG4gIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZTsgc2l6ZSB9XG47O1xuXG5sZXQgb2ZfdHlwZV9jbGFzcyAoYmluX2EgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MudCkgPSBvZl93cml0ZXIgYmluX2Eud3JpdGVyXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgYmlnc3RyaW5nX2Jpbl9wcm90IHMgPVxuICAgICAgbGV0IGJpZ3N0cmluZyA9IEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIEJ5dGVzLmJpbl93cml0ZXJfdCBzIGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCaWdzdHJpbmcuU3RhYmxlLlYxLmJpbl93cml0ZXJfdCBiaWdzdHJpbmdcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9wcm90X3dpdGhfbGVuZ3RoIHMgPVxuICAgICAgbGV0IHdyaXRlcl93aXRoX2xlbmd0aCA9IG9mX3dyaXRlciBCeXRlcy5iaW5fd3JpdGVyX3QgaW5cbiAgICAgIEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIHdyaXRlcl93aXRoX2xlbmd0aCBzXG4gICAgOztcblxuICAgIGxldCB0ZXN0IGxlbiA9XG4gICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgIGxldCBiaWdzdHJpbmdfdmVyc2lvbiA9IGJpZ3N0cmluZ19iaW5fcHJvdCBzIGluXG4gICAgICBsZXQgd2l0aF9sZW5ndGhfdmVyc2lvbiA9IGJpbl9wcm90X3dpdGhfbGVuZ3RoIHMgaW5cbiAgICAgIGlmIEJpZ3N0cmluZy50b19zdHJpbmcgYmlnc3RyaW5nX3ZlcnNpb24gPD4gQmlnc3RyaW5nLnRvX3N0cmluZyB3aXRoX2xlbmd0aF92ZXJzaW9uXG4gICAgICB0aGVuIGZhaWx3aXRoZiBcIm1pc21hdGNoIGZvciBsZW5ndGggJWRcIiBsZW4gKClcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIGZvciBsZW4gPSAwIHRvIEludC5wb3cgMiAxMCBkb1xuICAgICAgICB0ZXN0IGxlblxuICAgICAgZG9uZTtcbiAgICAgIGZvciBwb3cgPSAxMCB0byAyMCBkb1xuICAgICAgICBsZXQgeCA9IEludC5wb3cgMiBwb3cgaW5cbiAgICAgICAgdGVzdCAoeCAtIDEpO1xuICAgICAgICB0ZXN0IHg7XG4gICAgICAgIHRlc3QgKHggKyAxKVxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJvcGVuIENvcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZlcnNpb24gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGVxdWFsLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgNDUyMWY0NGRiYzYwOThjMGFmYzI3NzBjYzg0NTUyYjEgfH1dXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcblxubGV0IHN1bW1hcml6ZSB0cyA9XG4gIExpc3QubWFwIHRzIH5mOihmdW4geyBuYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgfD4gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkIH5pbml0OkludC5TZXQuZW1wdHkgfmY6Q29yZS5TZXQuYWRkXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBkZXNjcmlwdGlvbnMgPVxuICAgIFsgeyBuYW1lID0gXCJmb29cIjsgdmVyc2lvbiA9IDEgfVxuICAgIDsgeyBuYW1lID0gXCJmb29cIjsgdmVyc2lvbiA9IDIgfVxuICAgIDsgeyBuYW1lID0gXCJiYXJcIjsgdmVyc2lvbiA9IDUgfVxuICAgIF1cbiAgaW5cbiAgbGV0IHN1bW1hcnkgPSBzdW1tYXJpemUgZGVzY3JpcHRpb25zIGluXG4gIHByaW50X3MgWyVzZXhwIChzdW1tYXJ5IDogSW50LlNldC50IFN0cmluZy5NYXAudCldO1xuICBbJWV4cGVjdCB7fCAoKGJhciAoNSkpIChmb28gKDEgMikpKSB8fV1cbjs7XG4iLCJvcGVuISBDb3JlXG5cbnR5cGUgJ2EgdCA9XG4gIHwgQXV0aG9yaXplZCBvZiAnYVxuICB8IE5vdF9hdXRob3JpemVkIG9mIEVycm9yLnRcblxubGV0IGJpbmQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF1dGhvcml6ZWQgYSAtPiBmIGFcbiAgfCBOb3RfYXV0aG9yaXplZCBfIGFzIHQgLT4gdFxuOztcblxubGV0IGJpbmRfZGVmZXJyZWQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF1dGhvcml6ZWQgYSAtPiBmIGFcbiAgfCBOb3RfYXV0aG9yaXplZCBfIGFzIHQgLT4gRWFnZXJfZGVmZXJyZWQucmV0dXJuIHRcbjs7XG5cbmxldCBtYXBfZGVmZXJyZWQgdCB+ZiA9XG4gIGJpbmRfZGVmZXJyZWQgdCB+ZjooZnVuIGEgLT4gRWFnZXJfZGVmZXJyZWQubWFwIChmIGEpIH5mOihmdW4gYSAtPiBBdXRob3JpemVkIGEpKVxuOztcblxubGV0IGxpZnRfZGVmZXJyZWQgPSBtYXBfZGVmZXJyZWQgfmY6Rm4uaWRcbiIsIigqKiBBc3luY19ycGMgcHJvdG9jb2wgdHlwZXMsIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqKVxuXG4oKiBXQVJOSU5HOiBkbyBub3QgY2hhbmdlIGFueSBvZiB0aGVzZSB0eXBlcyB3aXRob3V0IGdvb2QgcmVhc29uICopXG5cbm9wZW4gQmluX3Byb3QuU3RkXG5vcGVuIFNleHBsaWIuU3RkXG5tb2R1bGUgQ29yZV9mb3JfdGVzdGluZyA9IENvcmVcbm1vZHVsZSBScGNfdGFnIDogQ29yZS5JZGVudGlmaWFibGUgPSBDb3JlLlN0cmluZ1xubW9kdWxlIFF1ZXJ5X2lkID0gQ29yZS5VbmlxdWVfaWQuSW50NjMgKHN0cnVjdCBlbmQpXG5cbm1vZHVsZSBVbnVzZWRfcXVlcnlfaWQgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB2YWwgdCA6IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBRdWVyeV9pZC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgIFslZXhwZWN0IHt8IDJiNTI4ZjRiMjJmMDhlMjg4NzZmZmUwMjM5MzE1YWMyIHx9XVxuICA7O1xuXG4gIGxldCB0ID0gUXVlcnlfaWQuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIFJwY19lcnJvciA6IHNpZ1xuICBvcGVuIENvcmVcblxuICB0eXBlIHQgPVxuICAgIHwgQmluX2lvX2V4biBvZiBTZXhwLnRcbiAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgfCBXcml0ZV9lcnJvciBvZiBTZXhwLnRcbiAgICB8IFVuY2F1Z2h0X2V4biBvZiBTZXhwLnRcbiAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgaW50IF1cbiAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQmluX2lvX2V4biBvZiBDb3JlLlNleHAudFxuICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBXcml0ZV9lcnJvciBvZiBDb3JlLlNleHAudFxuICAgICAgfCBVbmNhdWdodF9leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgb2YgUnBjX3RhZy50ICogWyBgVmVyc2lvbiBvZiBDb3JlLkludC5TdGFibGUuVjEudCBdXG4gICAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDhjYzc2NmJlZmEyY2Y1NjVlYTE0N2Q5ZmNkNWVhYWFiIHx9XVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvcmUuQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBScGNfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIENvcmUuUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCB0XTtcbiAgICBbJWV4cGVjdCB7fCA1ODczNGE2M2E1YzgzYzFiN2NiZmMzZmVkZmEzYWU4MiB8fV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgSGVhZGVyID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXJcblxubW9kdWxlIFF1ZXJ5X3YxID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBiZTU4ODg2OTFkNzM0MjdiM2FjOGVhMzAwYzE2OTQyMiB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5lbmRcblxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBtZXRhZGF0YSA6IHN0cmluZyBvcHRpb25cbiAgICA7IGRhdGEgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGVmNzBlYTJkZDBiYjgxMmE2MDFkMjg4MTBlNjYzN2Q0IHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cblxuICBsZXQgdG9fdjEgeyB0YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YSA9IChfIDogc3RyaW5nIG9wdGlvbik7IGRhdGEgfSA6IF8gUXVlcnlfdjEudCA9XG4gICAgeyB0YWc7IHZlcnNpb247IGlkOyBkYXRhIH1cbiAgOztcblxuICBsZXQgb2ZfdjEgP21ldGFkYXRhIHsgUXVlcnlfdjEudGFnOyB2ZXJzaW9uOyBpZDsgZGF0YSB9ID1cbiAgICB7IHRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhOyBkYXRhIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2EgUnBjX3Jlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgYTIyYTc2ZjE5MmIzYTRlYzFjMzcxMTdjNmJiMjUyZjUgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIFsgYFF1ZXJ5IG9mICdhXG4gICAgfCBgQWJvcnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCAyYzM3ODY4NzYxOTcxYzc4Y2MzNTVkNDNmMDg1NDg2MCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1faW5pdGlhbF9tZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgKCdyZXNwb25zZSwgJ2Vycm9yKSB0ID1cbiAgICB7IHVudXNlZF9xdWVyeV9pZCA6IFVudXNlZF9xdWVyeV9pZC50XG4gICAgOyBpbml0aWFsIDogKCdyZXNwb25zZSwgJ2Vycm9yKSBDb3JlLlJlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiAodW5pdCwgdW5pdCkgdF07XG4gICAgWyVleHBlY3Qge3wgNDZmMjMxZGRiN2ZhNTlkYTljMjc3NTlkNTBhZTAxYTkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cmVhbV9yZXNwb25zZV9kYXRhID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYEVvZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGMxZGJjZGNmZTJiMTJlNzk3ZWM2NGYwZDc0ZGYxODExIHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHwgSGVhcnRiZWF0XG4gICAgfCBRdWVyeV92MSBvZiAnYSBRdWVyeV92MS5uZWVkc19sZW5ndGhcbiAgICB8IFJlc3BvbnNlIG9mICdhIFJlc3BvbnNlLm5lZWRzX2xlbmd0aFxuICAgIHwgUXVlcnkgb2YgJ2EgUXVlcnkubmVlZHNfbGVuZ3RoXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBmNjBjZTJkMTA0ZTJmMGQ5MjcxZjYyMmVjZDk3Y2VhOCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIHNleHBfb2ZdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbmxldCV0ZXN0IFwidjEgbWVzc2FnZSBjb21wYXRpYmlsaXR5XCIgPVxuICBsZXQgbW9kdWxlIE1lc3NhZ2VfdjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgICB8IEhlYXJ0YmVhdFxuICAgICAgfCBRdWVyeSBvZiAnYSBRdWVyeV92MS5uZWVkc19sZW5ndGhcbiAgICAgIHwgUmVzcG9uc2Ugb2YgJ2EgUmVzcG9uc2UubmVlZHNfbGVuZ3RoXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICAgIFslZXhwZWN0IHt8IDE0OTY1YjBkYjk4NDRlNmIzNzYxNTFkZDg5MDgwOGU4IHx9XVxuICAgIDs7XG4gIGVuZFxuICBpblxuICBsZXQgdGFnID0gUnBjX3RhZy5vZl9zdHJpbmcgXCJycGNcIiBpblxuICBsZXQgcXVlcnlfaWQgPSBRdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgbGV0IHYxX3F1ZXJ5ID0geyBRdWVyeV92MS50YWc7IHZlcnNpb24gPSAxOyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gKCkgfSBpblxuICBsZXQgcmVzcG9uc2UgPSB7IFJlc3BvbnNlLmlkID0gcXVlcnlfaWQ7IGRhdGEgPSBPayAoKSB9IGluXG4gIGxldCB2MSA9IE1lc3NhZ2VfdjEuWyBIZWFydGJlYXQ7IFF1ZXJ5IHYxX3F1ZXJ5OyBSZXNwb25zZSByZXNwb25zZSBdIGluXG4gIGxldCB2MiA9IE1lc3NhZ2UuWyBIZWFydGJlYXQ7IFF1ZXJ5X3YxIHYxX3F1ZXJ5OyBSZXNwb25zZSByZXNwb25zZSBdIGluXG4gIGxldCB2MV9zdHIgPVxuICAgIENvcmVfZm9yX3Rlc3RpbmcuQmluX3Byb3QuV3JpdGVyLnRvX3N0cmluZ1xuICAgICAgWyViaW5fd3JpdGVyOiB1bml0IE1lc3NhZ2VfdjEubmVlZHNfbGVuZ3RoIGxpc3RdXG4gICAgICB2MVxuICBpblxuICBsZXQgdjJfc3RyID1cbiAgICBDb3JlX2Zvcl90ZXN0aW5nLkJpbl9wcm90LldyaXRlci50b19zdHJpbmdcbiAgICAgIFslYmluX3dyaXRlcjogdW5pdCBNZXNzYWdlLm5lZWRzX2xlbmd0aCBsaXN0XVxuICAgICAgdjJcbiAgaW5cbiAgU3RyaW5nLmVxdWFsIHYxX3N0ciB2Ml9zdHJcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4hIENvcmUuQ29yZV9zdGFibGVcblxuICAoKiBXZSBjYW4ndCBtYWtlIFtCaW5fcHJvdC5TaGFwZS50XSBiaW5hYmxlIGRpcmVjdGx5IGJlY2F1c2UgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgYVxuICAgICBjaXJjdWxhciBkZXBlbmRlbmN5LCBzbyB3ZSBtYWtlIGl0IFtCaW5hYmxlLk9mX3NleHBhYmxlX3dpdGhfdXVpZF0gaGVyZSBpbnN0ZWFkLiBUaGlzXG4gICAgIGFsbG93cyB1cyB0byBzZW5kIHRoZSBzaGFwZSBvdmVyIHRoZSB3aXJlIGFzIHBhcnQgb2YgdGhlXG4gICAgIFtWZXJzaW9uZWRfcnBjLlNoYXBlX21lbnUudF0uIFtCaW5fcHJvdC5TaGFwZS5DYW5vbmljYWwudF0sIHRob3VnaCBleHBvc2VkIGFuZFxuICAgICB0aGVyZWZvcmUgYmluYWJsZSwgaXMgbm90IGEgc3VpdGFibGUgYWx0ZXJuYXRpdmUgYmVjYXVzZSBpdCBoYXMgYW4gZXhwb25lbnRpYWxcbiAgICAgZXhwYW5zaW9uLiAqKVxuICBtb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQmluX3Byb3QuU2hhcGUuU3RhYmxlLlYxXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIwYWE1MzU0OS1hZDg4LTRiNGYtYWJjNy0xZjg0NTNlN2FhMTFcIlxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX3NleHBhYmxlLlYyIChUKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBScGMgb2ZcbiAgICAgICAgICB7IHF1ZXJ5IDogU2hhcGUuVjEudFxuICAgICAgICAgIDsgcmVzcG9uc2UgOiBTaGFwZS5WMS50XG4gICAgICAgICAgfVxuICAgICAgfCBPbmVfd2F5IG9mIHsgbXNnIDogU2hhcGUuVjEudCB9XG4gICAgICB8IFN0cmVhbWluZ19ycGMgb2ZcbiAgICAgICAgICB7IHF1ZXJ5IDogU2hhcGUuVjEudFxuICAgICAgICAgIDsgaW5pdGlhbF9yZXNwb25zZSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IHVwZGF0ZV9yZXNwb25zZSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IGVycm9yIDogU2hhcGUuVjEudFxuICAgICAgICAgIH1cbiAgICAgIHwgVW5rbm93blxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgZW5kXG5lbmRcblxub3BlbiEgQ29yZVxuXG5tb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmluX3Byb3QuU2hhcGUudFxuXG4gICgqIEFuIHVuc3RhYmxlIHNleHBlciB0aGF0J3MgdXNlZnVsIGZvciBleHBlY3QgdGVzdHMsIHByaW50aW5nIG91dCB0aGUgc2hhcGUgZGlnZXN0c1xuICAgICBpbnN0ZWFkIG9mIHRoZSBzaGFwZXMgdGhlbXNlbHZlcy4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIChCaW5fcHJvdC5TaGFwZS5ldmFsX3RvX2RpZ2VzdF9zdHJpbmcgdCA6IHN0cmluZyldXG5lbmRcblxudHlwZSB0ID0gU3RhYmxlLlYxLnQgPVxuICB8IFJwYyBvZlxuICAgICAgeyBxdWVyeSA6IFNoYXBlLnRcbiAgICAgIDsgcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICB9XG4gIHwgT25lX3dheSBvZiB7IG1zZyA6IFNoYXBlLnQgfVxuICB8IFN0cmVhbWluZ19ycGMgb2ZcbiAgICAgIHsgcXVlcnkgOiBTaGFwZS50XG4gICAgICA7IGluaXRpYWxfcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICA7IHVwZGF0ZV9yZXNwb25zZSA6IFNoYXBlLnRcbiAgICAgIDsgZXJyb3IgOiBTaGFwZS50XG4gICAgICB9XG4gIHwgVW5rbm93blxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSBtZXNzYWdlX2hhbmRsZXIgPSBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2FcblxubW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gc3RydWN0XG4gICgqKiBSZXN1bHQgb2YgYW4gW29uX21lc3NhZ2VdIGNhbGxiYWNrLiAgV2Ugc3BsaXQgdGhlIFtDb250aW51ZV0gYW5kIFtXYWl0IF9dIGNhc2VzIHRvXG4gICAgICBtYWtlIGl0IGNsZWFyIHRoYXQgW0NvbnRpbnVlXSBpcyB0aGUgZXhwZWN0ZWQgY2FzZS4gIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmVcbiAgICAgIG9wdGltaXplZCBmb3IgdGhpcyBjYXNlLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RvcCBvZiAnYVxuICAgIHwgQ29udGludWVcbiAgICB8IFdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG5lbmRcblxuXG5tb2R1bGUgdHlwZSBSZWFkZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuICB2YWwgYnl0ZXNfcmVhZCA6IHQgLT4gSW50NjMudFxuXG4gICgqKiBTdGFydCByZWFkaW5nIGluY29taW5nIG1lc3NhZ2VzIGFuZCBwYXNzIHRoZW0gdG8gW29uX21lc3NhZ2VdLCB1bnRpbCBpdCByZXR1cm5zXG4gICAgICBbU3RvcCBfXS5cblxuICAgICAgW29uX2VuZF9vZl9iYXRjaF0gaXMgY2FsbGVkIGFmdGVyIHByb2Nlc3NpbmcgYSBiYXRjaCBvZiBtZXNzYWdlcywgYmVmb3JlIHdhaXRpbmcgZm9yXG4gICAgICB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIGJlY29tZSByZWFkYWJsZSBhZ2Fpbi4gKilcbiAgdmFsIHJlYWRfZm9yZXZlclxuICAgIDogIHRcbiAgICAtPiBvbl9tZXNzYWdlOihCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgSGFuZGxlcl9yZXN1bHQudClcbiAgICAtPiBvbl9lbmRfb2ZfYmF0Y2g6KHVuaXQgLT4gdW5pdClcbiAgICAtPiAoJ2EsIFsgYEVvZiB8IGBDbG9zZWQgXSkgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIG1lc3NhZ2VfdG9vX2JpZyA9XG4gICAgeyBzaXplIDogaW50XG4gICAgOyBtYXhfbWVzc2FnZV9zaXplIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTZW50IG9mICdhXG4gICAgfCBDbG9zZWRcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBvZiBtZXNzYWdlX3Rvb19iaWdcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBXcml0ZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuICB2YWwgbW9uaXRvciA6IHQgLT4gTW9uaXRvci50XG4gIHZhbCBieXRlc190b193cml0ZSA6IHQgLT4gaW50XG4gIHZhbCBieXRlc193cml0dGVuIDogdCAtPiBJbnQ2My50XG5cbiAgKCoqIEJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byBzZW5kIG1lc3NhZ2UgdXNpbmcgdGhpcyB3cml0ZXIsXG4gICAgICBmb3IgaW5zdGFuY2Ugd2hlbiB0aGUgd3JpdGVyIGlzIGNsb3NlZCBvciB0aGUgY29uc3VtZXIgbGVhdmVzLlxuXG4gICAgICBUaGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gaXMgY2FjaGVkIGJ5IFtScGMuVHJhbnNwb3J0XSAqKVxuICB2YWwgc3RvcHBlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFtmbHVzaGVkIHRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IG11c3QgYmVjb21lIGRldGVybWluZWQgd2hlbiBhbGwgcHJpb3Igc2VudFxuICAgICAgbWVzc2FnZXMgYXJlIGRlbGl2ZXJlZC5cblxuICAgICAgSXQgbXVzdCBiZSBPSyB0byBjYWxsIFtmbHVzaGVkIHRdIGFmdGVyIFt0XSBoYXMgYmVlbiBjbG9zZWQuICopXG4gIHZhbCBmbHVzaGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3JlYWR5X3RvX3dyaXRlIHRdIGJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIGEgZ29vZCB0aW1lIHRvIHNlbmQgbWVzc2FnZXNcbiAgICAgIGFnYWluLiBBc3luYyBSUEMgY2FsbHMgdGhpcyBmdW5jdGlvbiBhZnRlciBzZW5kaW5nIGEgYmF0Y2ggb2YgbWVzc2FnZXMsIHRvIGF2b2lkXG4gICAgICBmbG9vZGluZyB0aGUgdHJhbnNwb3J0LlxuXG4gICAgICBVc2luZyBbbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZF0gaXMgYW4gYWNjZXB0YWJsZSBpbXBsZW1lbnRhdGlvbi4gKilcbiAgdmFsIHJlYWR5X3RvX3dyaXRlIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogQWxsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHNlbmQgZXhhY3RseSBvbmUgbWVzc2FnZS4gKilcblxuICB2YWwgc2VuZF9iaW5fcHJvdCA6IHQgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgLT4gdW5pdCBTZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IFNlbmRfcmVzdWx0LnRcblxuICAoKiogU2FtZSBhcyBbc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXSBidXQgdGhlIGJpZ3N0cmluZyBjYW4ndCBiZSBtb2RpZmllZCB1bnRpbCB0aGVcbiAgICAgIHJldHVybmVkIGRlZmVycmVkIGJlY29tZXMgZGV0ZXJtaW5lZC4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQgY29weWluZyB0aGVcbiAgICAgIGJpZ3N0cmluZy4gKilcbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IERlZmVycmVkLnQgU2VuZF9yZXN1bHQudFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbm1vZHVsZSBIZWFkZXIgPSBzdHJ1Y3RcbiAgbGV0IGxlbmd0aCA9IDhcbiAgbGV0IHVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3MgPSBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gYnVmIH5wb3NcblxuICBsZXQgdW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvcyBwYXlsb2FkX2xlbiA9XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50NjRfbGUgYnVmIH5wb3MgcGF5bG9hZF9sZW5cbiAgOztcbmVuZFxuXG5tb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5IYW5kbGVyX3Jlc3VsdFxuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5SZWFkZXJcblxuICB0eXBlIHQgPSBUIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpICogJ2EgLT4gdFxuXG4gIGxldCBwYWNrIG0gdCA9IFQgKG0sIHQpXG5cbiAgKCogV2UgcHV0IHR5cGUgYW5ub3RhdGlvbnMgdG8gYmUgc3VyZSB0aGUgdHlwZSBpcyBub3QgYSBmdW5jdGlvbiB0eXBlLCBpLmUuIHRvIGF2b2lkXG4gICAgIGNyZWF0aW5nIGNsb3N1cmVzICopXG4gIGxldCBzZXhwX29mX3QgKFQgKChtb2R1bGUgTSksIHQpKSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUICgobW9kdWxlIE0pLCB0KSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcbiAgbGV0IGJ5dGVzX3JlYWQgKFQgKChtb2R1bGUgTSksIHQpKSA6IEludDYzLnQgPSBNLmJ5dGVzX3JlYWQgdFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKFQgKChtb2R1bGUgTSksIHQpKSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogXyBEZWZlcnJlZC50ID1cbiAgICBNLnJlYWRfZm9yZXZlciB0IH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgOztcblxuICBsZXQgcmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0IChiaW5fcmVhZGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcikgPVxuICAgIHJlYWRfZm9yZXZlclxuICAgICAgdFxuICAgICAgfm9uX21lc3NhZ2U6KGZ1biBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgICAgICBsZXQgeCA9IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPD4gcG9zICsgbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgICAgICghcG9zX3JlZiAtIHBvcylcbiAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgKClcbiAgICAgICAgZWxzZSBTdG9wIHgpXG4gICAgICB+b25fZW5kX29mX2JhdGNoOmlnbm9yZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLlNlbmRfcmVzdWx0XG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLldyaXRlclxuXG4gIHR5cGUgJ2Egd3JpdGVyID1cbiAgICB7IGltcGwgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICA7IHQgOiAnYVxuICAgICgqIFdlIGNhY2hlIHRoZSByZXN1bHQgb2YgW3N0b3BwZWRdIGJlY2F1c2UgaXQgaXMgb2Z0ZW4gdGhlIFtEZWZlcnJlZC5hbnldIG9mIHNldmVyYWxcbiAgICAgICBvdGhlciBkZWZlcnJlZHMgYW5kIHdlIHdhbnQgW2Nhbl9zZW5kXSB0byBiZSBzaW1wbGUuICopXG4gICAgOyBzdG9wcGVkIDogdW5pdCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAnYSB3cml0ZXIgLT4gdFxuXG4gIGxldCBwYWNrICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSB0ID1cbiAgICBUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgPSBNLnN0b3BwZWQgdCB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuICBsZXQgbW9uaXRvciAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogTW9uaXRvci50ID0gTS5tb25pdG9yIHRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBpbnQgPSBNLmJ5dGVzX3RvX3dyaXRlIHRcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IEludDYzLnQgPSBNLmJ5dGVzX3dyaXR0ZW4gdFxuICBsZXQgZmx1c2hlZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogdW5pdCBEZWZlcnJlZC50ID0gTS5mbHVzaGVkIHRcblxuICBsZXQgcmVhZHlfdG9fd3JpdGUgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9XG4gICAgTS5yZWFkeV90b193cml0ZSB0XG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3QgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSBiaW5fd3JpdGVyIHggOiBfIFNlbmRfcmVzdWx0LnQgPVxuICAgIE0uc2VuZF9iaW5fcHJvdCB0IGJpbl93cml0ZXIgeFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KVxuICAgICAgICBiaW5fd3JpdGVyXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA6IF8gU2VuZF9yZXN1bHQudFxuICAgID1cbiAgICBNLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KVxuICAgICAgICBiaW5fd3JpdGVyXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA6IF8gU2VuZF9yZXN1bHQudFxuICAgID1cbiAgICBNLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzdG9wcGVkIChUIHsgc3RvcHBlZDsgXyB9KSA9IHN0b3BwZWRcblxuICBsZXQgY2FuX3NlbmQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgc3RvcHBlZCB9KSA9XG4gICAgbm90IChNLmlzX2Nsb3NlZCB0IHx8IERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcHBlZClcbiAgOztcblxuICBsZXQgdHJhbnNmZXIgdCA/KG1heF9udW1fdmFsdWVzX3Blcl9yZWFkID0gMV8wMDApIHBpcGUgZiA9XG4gICAgbGV0IGNvbnN1bWVyID1cbiAgICAgIFBpcGUuYWRkX2NvbnN1bWVyIHBpcGUgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgIGxldCVtYXAgKCkgPSBmbHVzaGVkIHQgaW5cbiAgICAgICAgYE9rKVxuICAgIGluXG4gICAgbGV0IGVuZF9vZl9waXBlID1cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgbGV0IHJlYyBpdGVyICgpID1cbiAgICAgICAgICBpZiBjYW5fc2VuZCB0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBQaXBlLnJlYWRfbm93JyBwaXBlIH5jb25zdW1lciB+bWF4X3F1ZXVlX2xlbmd0aDptYXhfbnVtX3ZhbHVlc19wZXJfcmVhZFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBgT2sgcSAtPlxuICAgICAgICAgICAgICBRdWV1ZS5pdGVyIHEgfmY7XG4gICAgICAgICAgICAgIFBpcGUuQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgICAgICAgcmVhZHlfdG9fd3JpdGUgdCA+Pj4gaXRlclxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHBpcGUgPj4+IGZ1biAoYE9rIHwgYEVvZikgLT4gaXRlciAoKVxuICAgICAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBpdmFyICgpKVxuICAgICAgICBpblxuICAgICAgICBpdGVyICgpKVxuICAgIGluXG4gICAgbGV0JW1hcCAoKSA9IERlZmVycmVkLmFueSBbIGVuZF9vZl9waXBlOyBzdG9wcGVkIHQgXSBpblxuICAgIFBpcGUuY2xvc2VfcmVhZCBwaXBlXG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgeyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFdyaXRlci50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZSB0ID1cbiAgbGV0JWJpbmQgKCkgPSBXcml0ZXIuY2xvc2UgdC53cml0ZXIgaW5cbiAgUmVhZGVyLmNsb3NlIHQucmVhZGVyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxuXG4oKiogVGhlIHR5cGVzIG9mIHRoZSBbSW1wbGVtZW50YXRpb25dIGFuZCBbSW1wbGVtZW50YXRpb25zXSBtb2R1bGVzLCB3aGljaCBoYXZlXG4gICAgYSBkZXBlbmRlbmN5IGN5bGU6IFtJbXBsZW1lbnRhdGlvbl0gLT4gW0RpcmVjdF9zdHJlYW1fd3JpdGVyXSAtPlxuICAgIFtJbXBsZW1lbnRhdGlvbnNdIC0+IFtJbXBsZW1lbnRhdGlvbl0uICopXG5cbm1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5tb2R1bGUgT25fZXhjZXB0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjYWxsYmFjayA6IChleG4gLT4gdW5pdCkgb3B0aW9uIFtAc2V4cC5vbWl0X25pbF1cbiAgICA7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIDogYm9vbFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgcmVjIEltcGxlbWVudGF0aW9uIDogc2lnXG4gIG1vZHVsZSBFeHBlcnQgOiBzaWdcbiAgICBtb2R1bGUgUmVzcG9uZGVyIDogc2lnXG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIEYgOiBzaWdcbiAgICB0eXBlIChfLCBfKSByZXN1bHRfbW9kZSA9XG4gICAgICB8IEJsb2NraW5nIDogKCdhLCAnYSBPcl9ub3RfYXV0aG9yaXplZC50KSByZXN1bHRfbW9kZVxuICAgICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gICAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgT3Jfbm90X2F1dGhvcml6ZWQudFxuICAgICAgICAgICAgICAgIERlZmVycmVkLnQpXG4gICAgICB8IERpcmVjdCBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gJ3VwZGF0ZSBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcblxuICAgIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfcnBjID1cbiAgICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgOyBiaW5faW5pdF93cml0ZXIgOiAnaW5pdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgOyBiaW5fdXBkYXRlX3dyaXRlciA6ICd1cGRhdGUgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICgqICdpbml0IGNhbiBiZSBhbiBlcnJvciBvciBhbiBpbml0aWFsIHN0YXRlICopXG4gICAgICA7IGltcGwgOiAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsXG4gICAgICB9XG5cbiAgICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgICAgfCBPbmVfd2F5IDpcbiAgICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IE9uZV93YXlfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgIC0+IHVuaXQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgUnBjIDpcbiAgICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgICAqICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAgICogKCdyZXNwb25zZSwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiBFeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICAgKiAoRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwY1xuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgZW5kXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICAgIDsgc2hhcGVzIDogUnBjX3NoYXBlcy50IExhenkudFxuICAgIDsgb25fZXhjZXB0aW9uIDogT25fZXhjZXB0aW9uLnRcbiAgICB9XG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvblxuXG5hbmQgSW1wbGVtZW50YXRpb25zIDogc2lnXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICAgIFsgYFJhaXNlXG4gICAgfCBgQ29udGludWVcbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gICAgfCBgQ2FsbCBvZlxuICAgICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgICB8IGBFeHBlcnQgb2ZcbiAgICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgICBdXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICAgIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICAgIH1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBtb2R1bGUgcmVjIEluc3RhbmNlIDogc2lnXG4gICAgdHlwZSBzdHJlYW1pbmdfcmVzcG9uc2UgPVxuICAgICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgICAgfCBEaXJlY3QgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG5cbiAgICB0eXBlICdhIHVucGFja2VkID1cbiAgICAgIHsgaW1wbGVtZW50YXRpb25zIDogJ2EgaW1wbGVtZW50YXRpb25zXG4gICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiAoUXVlcnlfaWQudCwgc3RyZWFtaW5nX3Jlc3BvbnNlKSBIYXNodGJsLnRcbiAgICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgICAgOyBtdXRhYmxlXG4gICAgICAgIGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA6XG4gICAgICAgICAgKERlc2NyaXB0aW9uLnQgKiAnYSBJbXBsZW1lbnRhdGlvbi50KSBvcHRpb25cbiAgICAgIDsgcGFja2VkX3NlbGYgOiB0XG4gICAgICB9XG5cbiAgICBhbmQgdCA9IFQgOiBfIHVucGFja2VkIC0+IHRcbiAgZW5kXG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvbnNcblxuYW5kIERpcmVjdF9zdHJlYW1fd3JpdGVyIDogc2lnXG4gIG1vZHVsZSBQZW5kaW5nX3Jlc3BvbnNlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm9ybWFsIG9mICdhXG4gICAgICB8IEV4cGVydCBvZiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm90X3N0YXJ0ZWQgb2YgJ2EgUGVuZGluZ19yZXNwb25zZS50IFF1ZXVlLnRcbiAgICAgIHwgU3RhcnRlZFxuICBlbmRcblxuICBtb2R1bGUgSWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50XG4gICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgIDsgaW5zdGFuY2UgOiBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UudFxuICAgIDsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgOyBzdHJlYW1fd3JpdGVyIDogJ2EgQ2FjaGVkX2Jpbl93cml0ZXIudFxuICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICB9XG5cbiAgYW5kICdhIGdyb3VwX2VudHJ5ID1cbiAgICB7IGdyb3VwIDogJ2EgRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAudFxuICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgfVxuXG4gIG1vZHVsZSBHcm91cCA6IHNpZ1xuICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyAoKiBbY29tcG9uZW50c10gaXMgb25seSB0cmFja2VkIHNlcGFyYXRlbHkgZnJvbSBbY29tcG9uZW50c19ieV9pZF0gc28gd2UgY2FuIGl0ZXJhdGVcbiAgICAgICAgICAgb3ZlciBpdHMgZWxlbWVudHMgbW9yZSBxdWlja2x5IHRoYW4gd2UgY291bGQgaXRlcmF0ZSBvdmVyIHRoZSB2YWx1ZXMgb2ZcbiAgICAgICAgICAgW2NvbXBvbmVudHNfYnlfaWRdLiAqKVxuICAgICAgICBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgIDsgYnVmZmVyIDogQmlnc3RyaW5nLnQgcmVmXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgY29tcG9uZW50ID1cbiAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBncm91cF9lbnRyeSBCYWcuRWx0LnRcbiAgICAgIH1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA6PSAnYSB0XG5lbmQgPVxuICBEaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5hbmQgQ2FjaGVkX2Jpbl93cml0ZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhlYWRlcl9wcmVmaXggOiBzdHJpbmcgKCogQmluX3Byb3R0ZWQgY29uc3RhbnQgcHJlZml4IG9mIHRoZSBtZXNzYWdlICopXG4gICAgOyBtdXRhYmxlIGRhdGFfbGVuIDogTmF0MC50XG4gICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICB9XG5lbmQgPVxuICBDYWNoZWRfYmluX3dyaXRlclxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlIHQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5Pbl9leGNlcHRpb24udCA9XG4gIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gIDsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZV9jb25uZWN0aW9uID0geyBjYWxsYmFjayA9IE5vbmU7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlID0gdHJ1ZSB9XG5sZXQgY29udGludWUgPSB7IGNhbGxiYWNrID0gTm9uZTsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgPSBmYWxzZSB9XG5cbmxldCBoYW5kbGVfZXhuXG4gICAgICB7IGNhbGxiYWNrOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSB9XG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICBleG5cbiAgPVxuICBPcHRpb24uaXRlciBjYWxsYmFjayB+ZjooZnVuIGNhbGxiYWNrIC0+IGNhbGxiYWNrIGV4bik7XG4gIGlmIGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gIHRoZW4gTW9uaXRvci5zZW5kX2V4biBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvblxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBFeHBlcnQuUmVzcG9uZGVyLnQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIHF1ZXJ5X2lkIHdyaXRlciA9IHsgcXVlcnlfaWQ7IHdyaXRlcjsgcmVzcG9uZGVkID0gZmFsc2UgfVxuICBlbmRcblxuICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgIHwgUmVwbGllZFxuICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbmVuZFxuXG5tb2R1bGUgRiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHJlc3VsdF9tb2RlID0gKCdhLCAnYikgRi5yZXN1bHRfbW9kZSA9XG4gICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCkgcmVzdWx0X21vZGVcbiAgICB8IERlZmVycmVkIDogKCdhLCAnYSBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpIHJlc3VsdF9tb2RlXG5cbiAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIEYuc3RyZWFtaW5nX2ltcGwgPVxuICAgIHwgUGlwZSBvZlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAtPiAndXBkYXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcblxuICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwYyA9XG4gICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBGLnN0cmVhbWluZ19ycGMgPVxuICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgIDsgYmluX2luaXRfd3JpdGVyIDogJ2luaXQgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IGJpbl91cGRhdGVfd3JpdGVyIDogJ3VwZGF0ZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICgqICdpbml0IGNhbiBiZSBhbiBlcnJvciBvciBhbiBpbml0aWFsIHN0YXRlICopXG4gICAgOyBpbXBsIDogKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbFxuICAgIH1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBGLnQgPVxuICAgIHwgT25lX3dheSA6XG4gICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgT25lX3dheV9leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgUnBjIDpcbiAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGNcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIGxldCBzZXhwX29mX3QgXyA9IGZ1bmN0aW9uXG4gICAgfCBPbmVfd2F5X2V4cGVydCBfIHwgT25lX3dheSBfIC0+IFslbWVzc2FnZSBcIm9uZS13YXlcIl1cbiAgICB8IFJwY19leHBlcnQgXyB8IFJwYyBfIC0+IFslbWVzc2FnZSBcInJwY1wiXVxuICAgIHwgU3RyZWFtaW5nX3JwYyBfIC0+IFslbWVzc2FnZSBcInN0cmVhbWluZy1ycGNcIl1cbiAgOztcblxuICBsZXQgbGlmdCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE9uZV93YXkgKGJpbl9tc2csIGltcGwpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBzdHIgPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgc3RyKVxuICAgICAgaW5cbiAgICAgIE9uZV93YXkgKGJpbl9tc2csIGltcGwpXG4gICAgfCBPbmVfd2F5X2V4cGVydCBpbXBsIC0+XG4gICAgICBPbmVfd2F5X2V4cGVydFxuICAgICAgICAoZnVuIHN0YXRlIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIGJ1ZiB+cG9zIH5sZW4pKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBxID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpXG4gICAgICBpblxuICAgICAgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHEgPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcSlcbiAgICAgIGluXG4gICAgICBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZClcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgIGluXG4gICAgICBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZylcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIERlZmVycmVkKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgIGluXG4gICAgICBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZClcbiAgICB8IFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH0gLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+XG4gICAgICAgICAgUGlwZVxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpKVxuICAgICAgICB8IERpcmVjdCBpbXBsIC0+XG4gICAgICAgICAgRGlyZWN0XG4gICAgICAgICAgICAoZnVuIHN0YXRlIHEgdyAtPlxuICAgICAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxIHcpKVxuICAgICAgaW5cbiAgICAgIFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH1cbiAgOztcblxuICBsZXQgbGlmdF9kZWZlcnJlZCAodHlwZSBhIGIpICh0IDogYiB0KSB+KGYgOiBhIC0+IGIgRGVmZXJyZWQudCkgOiBhIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgT25lX3dheSAoYmluX21zZywgaW1wbCkgLT5cbiAgICAgIE9uZV93YXlcbiAgICAgICAgKCBiaW5fbXNnXG4gICAgICAgICwgZnVuIHN0YXRlIHN0ciAtPiBFYWdlcl9kZWZlcnJlZC5iaW5kIChmIHN0YXRlKSB+ZjooZnVuIHN0YXRlIC0+IGltcGwgc3RhdGUgc3RyKVxuICAgICAgICApXG4gICAgfCBPbmVfd2F5X2V4cGVydCBpbXBsIC0+XG4gICAgICBPbmVfd2F5X2V4cGVydFxuICAgICAgICAoZnVuIHN0YXRlIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgRWFnZXJfZGVmZXJyZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBzdGF0ZSAtPiBpbXBsIHN0YXRlIGJ1ZiB+cG9zIH5sZW4pKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBScGNcbiAgICAgICAgKCBiaW5fcXVlcnlcbiAgICAgICAgLCBiaW5fcmVzcG9uc2VcbiAgICAgICAgLCAoZnVuIHN0YXRlIHEgLT5cbiAgICAgICAgICAgICBsZXQlbWFwLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIFJwY1xuICAgICAgICAoIGJpbl9xdWVyeVxuICAgICAgICAsIGJpbl9yZXNwb25zZVxuICAgICAgICAsIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKCAoZnVuIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICAgICAgbGV0JWJpbmQuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZykgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKCAoZnVuIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICAgICAgbGV0JW1hcC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgIGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuKVxuICAgICAgICAsIERlZmVycmVkIClcbiAgICB8IFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH0gLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+XG4gICAgICAgICAgUGlwZVxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgfCBEaXJlY3QgaW1wbCAtPlxuICAgICAgICAgIERpcmVjdFxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIHcgLT5cbiAgICAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgICAgaW1wbCBzdGF0ZSBxIHcpXG4gICAgICBpblxuICAgICAgU3RyZWFtaW5nX3JwYyB7IGJpbl9xdWVyeV9yZWFkZXI7IGJpbl9pbml0X3dyaXRlcjsgYmluX3VwZGF0ZV93cml0ZXI7IGltcGwgfVxuICA7O1xuZW5kXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uLnQgPVxuICB7IHRhZyA6IFJwY190YWcudFxuICA7IHZlcnNpb24gOiBpbnRcbiAgOyBmIDogJ2Nvbm5lY3Rpb25fc3RhdGUgRi50XG4gIDsgc2hhcGVzIDogUnBjX3NoYXBlcy50IExhenkudFxuICA7IG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gUnBjX3RhZy50b19zdHJpbmcgdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb24gfVxubGV0IHNoYXBlcyB0ID0gZm9yY2UgdC5zaGFwZXNcblxubGV0IGxpZnQgKHR5cGUgYSBiKSAodCA6IGEgdCkgfihmIDogYiAtPiBhKSA6IGIgdCA9XG4gIHsgdCB3aXRoIGYgPSBGLmxpZnQgdC5mIH5mOihmdW4gYiAtPiBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIGIpKSB9XG47O1xuXG5sZXQgd2l0aF9hdXRob3JpemF0aW9uIHQgfmYgPSB7IHQgd2l0aCBmID0gRi5saWZ0IHQuZiB+ZiB9XG5sZXQgbGlmdF9kZWZlcnJlZCB0IH5mID0geyB0IHdpdGggZiA9IEYubGlmdF9kZWZlcnJlZCB0LmYgfmYgfVxubGV0IHVwZGF0ZV9vbl9leGNlcHRpb24gdCB+ZiA9IHsgdCB3aXRoIG9uX2V4Y2VwdGlvbiA9IGYgdC5vbl9leGNlcHRpb24gfVxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuaW5jbHVkZSBQcm90b2NvbC5ScGNfZXJyb3JcbmluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoUHJvdG9jb2wuUnBjX2Vycm9yKVxuXG5leGNlcHRpb24gUnBjIG9mIHQgKiBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHJhaXNlIHQgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA9IHJhaXNlIChScGMgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pKVxuXG5sZXQgc2V4cF9vZl90IHQgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IENvbm5lY3Rpb25fY2xvc2VkIC0+XG4gICAgWyVzZXhwIGBDb25uZWN0aW9uX2Nsb3NlZCAoZ2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uICgpIDogU2V4cC50KV1cbiAgfCBCaW5faW9fZXhuIF9cbiAgfCBXcml0ZV9lcnJvciBfXG4gIHwgVW5jYXVnaHRfZXhuIF9cbiAgfCBVbmltcGxlbWVudGVkX3JwYyBfXG4gIHwgVW5rbm93bl9xdWVyeV9pZCBfIC0+IHNleHBfb2ZfdCB0XG47O1xuXG4oKiBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGp1c3QgdGFrZSBhIFtDb25uZWN0aW9uLnRdLCBidXQgd2UgdGFrZSBpdHMgcGllY2VzIGluc3RlYWQgdG9cbiAgIGF2b2lkIGEgZGVwZW5kZW5jeSBjeWNsZSAqKVxubGV0IHRvX2Vycm9yXG4gICAgICB0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgRGVzY3JpcHRpb24ubmFtZSA9IHJwY19uYW1lOyB2ZXJzaW9uID0gcnBjX3ZlcnNpb24gfVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgPVxuICBsZXQgcnBjX2Vycm9yID1cbiAgICBzZXhwX29mX3QgdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgIGxldCBjbG9zZV9yZWFzb24gPVxuICAgICAgICAoKiBVc3VhbGx5IChhbHdheXM/KSBoZXJlIHdlIHdpbGwgaGF2ZSB0aGUgZGVmZXJyZWQgYWxyZWFkeSBmdWxsXG4gICAgICAgICAgIGJlY2F1c2UgQ29ubmVjdGlvbl9jbG9zZWQgZXJyb3IgbWVhbnMgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeVxuICAgICAgICAgICBjbG9zZWQgKilcbiAgICAgICAgRGVmZXJyZWQucGVlayBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIGluXG4gICAgICBbJXNleHAgKGNsb3NlX3JlYXNvbiA6IEluZm8udCBvcHRpb24pXSlcbiAgaW5cbiAgRXJyb3IuY3JlYXRlX3NcbiAgICBbJXNleHBcbiAgICAgIHsgcnBjX2Vycm9yIDogU2V4cC50XG4gICAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICAgIDsgcnBjX25hbWUgOiBzdHJpbmdcbiAgICAgIDsgcnBjX3ZlcnNpb24gOiBpbnRcbiAgICAgIH1dXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5cbnR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbG9jYWxfc3RvcmFnZV9rZXkgPVxuICBVbml2X21hcC5LZXkuY3JlYXRlIH5uYW1lOlwiYXN5bmNfcnBjX2tlcm5lbF9tZXRhZGF0YVwiIFslc2V4cF9vZjogdF1cbjs7XG5cbmxldCBnZXQgKCkgPSBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci5maW5kX2xvY2FsIGxvY2FsX3N0b3JhZ2Vfa2V5XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCB3aXRoX21ldGFkYXRhIG1ldGFkYXRhIH5mID1cbiAgICBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoX2xvY2FsIGxvY2FsX3N0b3JhZ2Vfa2V5IG1ldGFkYXRhIH5mXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSB0ID0gKCdhLCBScGNfZXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IHRdO1xuICBbJWV4cGVjdCB7fCA1ODczNGE2M2E1YzgzYzFiN2NiZmMzZmVkZmEzYWU4MiB8fV1cbjs7XG5cbnR5cGUgbG9jYXRlZF9lcnJvciA9XG4gIHsgbG9jYXRpb24gOiBzdHJpbmdcbiAgOyBleG4gOiBFeG4udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biAoc2V4cF9vZl9sb2NhdGVkX2Vycm9yIHsgbG9jYXRpb247IGV4biB9KSlcbjs7XG5cbmxldCBiaW5faW9fZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLkJpbl9pb19leG4gKHNleHBfb2ZfbG9jYXRlZF9lcnJvciB7IGxvY2F0aW9uOyBleG4gfSkpXG47O1xuXG5sZXQgdHJ5X3dpdGggP29uX2JhY2tncm91bmRfZXhjZXB0aW9uID9ydW4gfmxvY2F0aW9uIGYgPVxuICBsZXQgeCA9XG4gICAgbGV0IHJlc3QgPVxuICAgICAgbWF0Y2ggb25fYmFja2dyb3VuZF9leGNlcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGBMb2dcbiAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgIGluXG4gICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgfnJlc3RcbiAgICAgIH5ydW46KE9wdGlvbi52YWx1ZSBydW4gfmRlZmF1bHQ6YFNjaGVkdWxlKVxuICAgICAgZlxuICBpblxuICBsZXQgam9pbiA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IHhcbiAgICB8IEVycm9yIGV4biAtPiB1bmNhdWdodF9leG4gfmxvY2F0aW9uIGV4blxuICBpblxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIHggd2l0aFxuICB8IE5vbmUgLT4geCA+Pnwgam9pblxuICB8IFNvbWUgeCAtPiByZXR1cm4gKGpvaW4geClcbjs7XG5cbmxldCBvcl9lcnJvciB+cnBjX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgPVxuICBSZXN1bHQubWFwX2Vycm9yXG4gICAgfmY6XG4gICAgICAoUnBjX2Vycm9yLnRvX2Vycm9yXG4gICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uXG4gICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZClcbjs7XG4iLCJvcGVuIENvcmVcblxuKCogdXRpbGl0eSBmdW5jdGlvbiBmb3IgYmluLWlvJ2luZyBvdXQgb2YgYSBCaWdzdHJpbmcudCAqKVxubGV0IGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAoYmluX3JlYWRlcl90IDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcilcbiAgICAgID9hZGRfbGVuXG4gICAgICBidWZcbiAgICAgIH5wb3NfcmVmXG4gICAgICB+KGxlbiA6IE5hdDAudClcbiAgICAgIH5sb2NhdGlvblxuICA9XG4gIHRyeVxuICAgIGxldCBpbml0X3BvcyA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGRhdGEgPSBiaW5fcmVhZGVyX3QucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgYWRkX2xlbiA9XG4gICAgICBtYXRjaCBhZGRfbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAwXG4gICAgICB8IFNvbWUgYWRkX2xlbiAtPiBhZGRfbGVuIGRhdGFcbiAgICBpblxuICAgIGlmICFwb3NfcmVmIC0gaW5pdF9wb3MgKyBhZGRfbGVuIDw+IChsZW4gOj4gaW50KVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoZlxuICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICghcG9zX3JlZiAtIGluaXRfcG9zKVxuICAgICAgICAobGVuIDogTmF0MC50IDo+IGludClcbiAgICAgICAgKCk7XG4gICAgT2sgZGF0YVxuICB3aXRoXG4gIHwgZSAtPiBScGNfcmVzdWx0LmJpbl9pb19leG4gfmxvY2F0aW9uIGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gUG9seVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gVXRpbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj58fiApID0gUmVzdWx0LiggPj58IClcblxuKCogQ29tbXV0ZSBSZXN1bHQgYW5kIERlZmVycmVkLiAqKVxubGV0IGRlZmVyX3Jlc3VsdCA6ICdhICdiLiAoJ2EgRGVmZXJyZWQudCwgJ2IpIFJlc3VsdC50IC0+ICgnYSwgJ2IpIFJlc3VsdC50IERlZmVycmVkLnRcbiAgPSBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gcmV0dXJuIGVyclxuICAgIHwgT2sgZCAtPlxuICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQlbWFwIHggPSBkIGluXG4gICAgICAgICBPayB4XG4gICAgICAgfCBTb21lIGQgLT4gcmV0dXJuIChPayBkKSlcbjs7XG5cbm1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICBbIGBSYWlzZVxuICB8IGBDb250aW51ZVxuICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gIHwgYENhbGwgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICBdXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgPVxuICBbICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gIHwgYEV4cGVydCBvZlxuICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgLT4gUmVzcG9uZGVyLnRcbiAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnMudCA9XG4gIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY193aXRoX2V4cGVydFxuICB9XG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG5sZXQgZGVzY3JpcHRpb25zIHQgPSBIYXNodGJsLmtleXMgdC5pbXBsZW1lbnRhdGlvbnNcblxubW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID0gSW5zdGFuY2Uuc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgfCBEaXJlY3QgOlxuICAgICAgICAoXyBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50W0BzZXhwLm9wYXF1ZV0pXG4gICAgICAgIC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IChQLlF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB1bnBhY2tlZCA9ICdhIEluc3RhbmNlLnVucGFja2VkID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICgnYSBpbXBsZW1lbnRhdGlvbnNbQHNleHAub3BhcXVlXSlcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiBzdHJlYW1pbmdfcmVzcG9uc2VzXG4gICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgOyBtdXRhYmxlXG4gICAgICBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gOlxuICAgICAgICAoRGVzY3JpcHRpb24udCAqICgnYSBJbXBsZW1lbnRhdGlvbi50W0BzZXhwLm9wYXF1ZV0pKSBvcHRpb25cbiAgICAoKiBbcGFja2VkX3NlbGZdIGlzIGhlcmUgc28gd2UgY2FuIGVzc2VudGlhbGx5IHBhY2sgYW4gdW5wYWNrZWQgaW5zdGFuY2Ugd2l0aG91dCBkb2luZ1xuICAgICAgIGFueSBhZGRpdGlvbmFsIGFsbG9jYXRpb24uICopXG4gICAgOyBwYWNrZWRfc2VsZiA6ICh0W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGFuZCB0ID0gSW5zdGFuY2UudCA9IFQgOiBfIHVucGFja2VkIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gWyVzZXhwX29mOiBfIHVucGFja2VkXSB0XG5cbiAgbGV0IHNlbmRfd3JpdGVfZXJyb3IgdCBpZCBzZXhwID1cbiAgICBsZXQgZGF0YSA6IF8gUC5NZXNzYWdlLnQgPSBSZXNwb25zZSB7IGlkOyBkYXRhID0gRXJyb3IgKFdyaXRlX2Vycm9yIHNleHApIH0gaW5cbiAgICBtYXRjaCBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgZGF0YSB3aXRoXG4gICAgfCBTZW50ICgpIHwgQ2xvc2VkIC0+ICgpXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIFwiRmFpbGVkIHRvIHNlbmQgd3JpdGUgZXJyb3IgdG8gY2xpZW50XCJcbiAgICAgICAgLCB7IGVycm9yID0gKHNleHAgOiBTZXhwLnQpOyByZWFzb24gPSAociA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpIH1dXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkIChyZXN1bHQgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KSA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IFNlbnQgKCkgLT4gKClcbiAgICB8IENsb3NlZCAtPiAoKVxuICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPlxuICAgICAgc2VuZF93cml0ZV9lcnJvciB0IGlkIChbJXNleHBfb2Y6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdIHIpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX21lc3NhZ2UgdCBiaW5fd3JpdGVyIHggfmlkID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlbiBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBiaW5fd3JpdGVyIHggfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWRcbiAgOztcblxuICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gfmlkID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0LndyaXRlciBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl9kYXRhIGRhdGEgPVxuICAgIGxldCBiaW5fd3JpdGVyID1cbiAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2RhdGEpXG4gICAgaW5cbiAgICB3cml0ZV9tZXNzYWdlIHQgfmlkIGJpbl93cml0ZXIgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgfSlcbiAgOztcblxuICBtb2R1bGUgQ2FjaGVkX2Jpbl93cml0ZXIgOiBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfYmluX3dyaXRlci50XG5cbiAgICB2YWwgY3JlYXRlIDogaWQ6UC5RdWVyeV9pZC50IC0+IGJpbl93cml0ZXI6J2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgdFxuICAgIHZhbCBwcmVwX3dyaXRlIDogJ2EgdCAtPiAnYSAtPiAoJ2EgdCAqICdhKSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIHZhbCBwcmVwX3dyaXRlX2V4cGVydCA6ICdhIHQgLT4gbGVuOmludCAtPiAnYSB0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgdmFsIHByZXBfd3JpdGVfc3RyaW5nIDogJ2EgdCAtPiBzdHJpbmcgLT4gKCdhIHQgKiBzdHJpbmcpIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEltcGxlbWVudGF0aW9uX3R5cGVzLkNhY2hlZF9iaW5fd3JpdGVyLnQgPVxuICAgICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgICAgOyAoKiBMZW5ndGggb2YgdGhlIHVzZXIgZGF0YSBwYXJ0LiBXZSBzZXQgdGhpcyBmaWVsZCB3aGVuIHNlbmRpbmcgYSBtZXNzYWdlLiBUaGlzXG4gICAgICAgICAgIHJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIHRoZVxuICAgICAgICAgICBvbmx5IGFjY2VwdGFibGUgc2VtYW50aWNzIGZvciB0aGUgdHJhbnNwb3J0IGxheWVyIGFueXdheSwgYXMgaXQgZG9lc24ndCBrbm93IGlmXG4gICAgICAgICAgIHRoZSB2YWx1ZSBpcyBtdXRhYmxlIG9yIG5vdCkuXG5cbiAgICAgICAgICAgW2RhdGFfbGVuXSBpcyBwYXNzZWQgdG8gYmluLXByb3Qgd3JpdGVycyBieSBtdXRhdGluZyBbZGF0YV9sZW5dIGluc3RlYWQgb2YgYnlcbiAgICAgICAgICAgcGFzc2luZyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIGF2b2lkIHNvbWUgYWxsb2NhdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgIH1cblxuXG4gICAgdHlwZSB2b2lkID0gVm9pZFxuXG4gICAgbGV0IGJpbl9zaXplX3ZvaWQgVm9pZCA9IDBcbiAgICBsZXQgYmluX3dyaXRlX3ZvaWQgX2J1ZiB+cG9zIFZvaWQgPSBwb3NcblxuICAgIHR5cGUgdm9pZF9tZXNzYWdlID0gdm9pZCBQLk1lc3NhZ2UubmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl93cml0ZV1cblxuICAgIHR5cGUgdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHZvaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5uZWVkc19sZW5ndGhcbiAgICBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICAoKiBUaGlzIGlzIG5vdCByZS1lbnRyYW50IGJ1dCBBc3luYyBjb2RlIGFsd2F5cyBydW5zIG9uIG9uZSB0aHJlYWQgYXQgYSB0aW1lICopXG4gICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMzJcblxuICAgIGxldCBjYWNoZV9iaW5fcHJvdHRlZCAoYmluX3dyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICAgICAgbGV0IGxlbiA9IGJpbl93cml0ZXIud3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICBCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWZmZXIgfnBvczowIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+aWQgfmJpbl93cml0ZXIgOiBhIHQgPVxuICAgICAgbGV0IGhlYWRlcl9wcmVmaXggPVxuICAgICAgICBjYWNoZV9iaW5fcHJvdHRlZCBiaW5fd3JpdGVyX3ZvaWRfbWVzc2FnZSAoUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIFZvaWQgfSlcbiAgICAgIGluXG4gICAgICB7IGhlYWRlcl9wcmVmaXg7IGJpbl93cml0ZXI7IGRhdGFfbGVuID0gTmF0MC5vZl9pbnRfZXhuIDAgfVxuICAgIDs7XG5cbiAgICAoKiBUaGlzIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaGVhZGVyIGlzIGEgY29uc3RhbnQsIG1ha2UgaXQgYSBsaXRlcmFsIHRvIG1ha2UgdGhlXG4gICAgICAgd3JpdGluZyBjb2RlIHNsaWdodGx5IGZhc3Rlci4gKilcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiA9IDRcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyID0gMHg4YTc5bFxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInN0cmVhbV9yZXNwb25zZV8qIGNvbnN0YW50cyBhcmUgY29ycmVjdFwiID1cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBiaW5fd3JpdGVyX3ZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEud3JpdGVcbiAgICAgICAgICBidWZmZXJcbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICAoYE9rIFZvaWQgOiB2b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhKVxuICAgICAgaW5cbiAgICAgIGFzc2VydCAobGVuID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbik7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQzMl90X2xlIGJ1ZmZlciB+cG9zOjBcbiAgICAgICAgPSBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzIpXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBzdHIgPVxuICAgICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgICAgKCogVmVyeSBsb3ctbGV2ZWwgYmluX3Byb3Qgc3R1ZmYuLi4gKilcbiAgICAgIEJpbl9wcm90LkNvbW1vbi5hc3NlcnRfcG9zIHBvcztcbiAgICAgIGxldCBuZXh0ID0gcG9zICsgc3RyX2xlbiBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaW5fcHJvdC5Db21tb24udW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3Bvczpwb3MgYnVmIH5sZW46c3RyX2xlbjtcbiAgICAgIG5leHRcbiAgICA7O1xuXG4gICAgKCogVGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSAzIHZhcmlhbnRzIGV4cG9zZWQgYnkgdGhpcyBtb2R1bGUuIFRoZXlcbiAgICAgICBzZXJpYWxpemUgYSBbUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIChgT2sgZGF0YV9sZW4pIH1dIHZhbHVlLCB0YWtpbmcgY2FyZSBvZlxuICAgICAgIHdyaXRpbmcgdGhlIFtOYXQwLnRdIGxlbmd0aCBwcmVmaXggd2hlcmUgYXBwcm9yaWF0ZS5cblxuICAgICAgIEJlYXIgaW4gbWluZCB0aGF0IHRoZXJlIGFyZSB0d28gbGV2ZWxzIG9mIGxlbmd0aCBwcmVmaXhlcyBmb3Igc3RyZWFtIHJlc3BvbnNlIGRhdGFcbiAgICAgICBtZXNzYWdlOiBvbmUgZm9yIHRoZSB1c2VyIGRhdGEgKHVuZGVyIHRoZSBgT2ssIGJlZm9yZSB0aGUgYWN0dWFsIGRhdGEpLCBhbmQgb25lIGZvclxuICAgICAgIHRoZSByZXNwb25zZSBkYXRhICh1bmRlciB0aGUgLmRhdGEgZmllbGQsIGJlZm9yZSB0aGUgT2spLiAqKVxuICAgIGxldCBiaW5fc2l6ZV9uYXQwX2hlYWRlciB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgU3RyaW5nLmxlbmd0aCBoZWFkZXJfcHJlZml4XG4gICAgICArIE5hdDAuYmluX3NpemVfdCAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbilcbiAgICAgICsgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIGhlYWRlcl9wcmVmaXggaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuXG4gICAgICAgICsgTmF0MC5iaW5fc2l6ZV90IGRhdGFfbGVuXG4gICAgICAgICsgKGRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID0gTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbikgaW5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQzMl90X2xlIGJ1ZiB+cG9zIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMjtcbiAgICAgIE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3M6bmV4dCBkYXRhX2xlblxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9uYXQwX2hlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbmF0MF9oZWFkZXI7IHdyaXRlID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2UgKHQsIF8pID0gYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcblxuICAgIGxldCBiaW5fd3JpdGVfbWVzc2FnZSBidWYgfnBvcyAodCwgZGF0YSkgPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB0IGluXG4gICAgICB0LmJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlOyB3cml0ZSA9IGJpbl93cml0ZV9tZXNzYWdlIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nICh0LCBfKSA9XG4gICAgICBiaW5fc2l6ZV9uYXQwX2hlYWRlciB0ICsgKHQuZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIGJ1ZiB+cG9zICh0LCBzdHIpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZzsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZV9hc19zdHJpbmcgfVxuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZSB0IGRhdGEgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKHQuYmluX3dyaXRlci5zaXplIGRhdGEpO1xuICAgICAgYmluX3dyaXRlcl9tZXNzYWdlXG4gICAgOztcblxuICAgIGxldCBwcmVwX3dyaXRlX3N0cmluZyB0IHN0ciA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biAoU3RyaW5nLmxlbmd0aCBzdHIpO1xuICAgICAgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZ1xuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZV9leHBlcnQgdCB+bGVuID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuIGxlbjtcbiAgICAgIGJpbl93cml0ZXJfbmF0MF9oZWFkZXJcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG4gICAgbW9kdWxlIFN0YXRlID0gVC5TdGF0ZVxuICAgIG1vZHVsZSBJZCA9IFQuSWRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9XG4gICAgICB7IGlkIDogSWQudFxuICAgICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBpbnN0YW5jZSA6IEluc3RhbmNlLnRcbiAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9iaW5fd3JpdGVyLnRcbiAgICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICAgIH1cblxuICAgIGFuZCAnYSBncm91cF9lbnRyeSA9ICdhIFQuZ3JvdXBfZW50cnkgPVxuICAgICAgeyBncm91cCA6ICdhIFQuR3JvdXAudFxuICAgICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICAgIH1cblxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgIGxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxuXG4gICAgbGV0IGZsdXNoZWQgdCA9XG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgVHJhbnNwb3J0LldyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlclxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlciB0ID0gdC5zdHJlYW1fd3JpdGVyLmJpbl93cml0ZXJcblxuICAgIGxldCB3cml0ZV9lb2YgeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gPVxuICAgICAgd3JpdGVfcmVzcG9uc2UgaW5zdGFuY2UgcXVlcnlfaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZilcbiAgICA7O1xuXG4gICAgKCogW3dyaXRlX21lc3NhZ2Vfc3RyaW5nXSBhbmQgW3dyaXRlX21lc3NhZ2VdIGJvdGggYWxsb2NhdGUgMyB3b3JkcyBmb3IgdGhlIHR1cGxlcy5cbiAgICAgICBbd3JpdGVfbWVzc2FnZV9leHBlcnRdIGRvZXMgbm90IGFsbG9jYXRlLiAqKVxuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHQgeCA9XG4gICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyA9XG4gICAgICAgIENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGVfc3RyaW5nIHQuc3RyZWFtX3dyaXRlciB4XG4gICAgICBpblxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIHdyaXRlX21lc3NhZ2VcbiAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgfmlkOnQucXVlcnlfaWRcbiAgICAgICAgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZ1xuICAgICAgICAodC5zdHJlYW1fd3JpdGVyLCB4KVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZSB0IHggPVxuICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA9IENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGUgdC5zdHJlYW1fd3JpdGVyIHggaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlIGluc3RhbmNlIH5pZDp0LnF1ZXJ5X2lkIGJpbl93cml0ZXJfbWVzc2FnZSAodC5zdHJlYW1fd3JpdGVyLCB4KVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlID0gQ2FjaGVkX2Jpbl93cml0ZXIucHJlcF93cml0ZV9leHBlcnQgdC5zdHJlYW1fd3JpdGVyIH5sZW4gaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlX2V4cGVydFxuICAgICAgICBpbnN0YW5jZVxuICAgICAgICB+aWQ6dC5xdWVyeV9pZFxuICAgICAgICBiaW5fd3JpdGVyX21lc3NhZ2VcbiAgICAgICAgdC5zdHJlYW1fd3JpdGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOztcblxuICAgIGxldCBjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2UgdCA9XG4gICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCB0LmNsb3NlZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgICAgIGxldCBncm91cHMgPSB0Lmdyb3VwcyBpblxuICAgICAgICBpZiBub3QgKEJhZy5pc19lbXB0eSBncm91cHMpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGUuVmVyeV9sb3dfcHJpb3JpdHlfd29yay5lbnF1ZXVlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEJhZy5yZW1vdmVfb25lIGdyb3VwcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gRmluaXNoZWRcbiAgICAgICAgICAgIHwgU29tZSB7IGdyb3VwOyBlbGVtZW50X2luX2dyb3VwIH0gLT5cbiAgICAgICAgICAgICAgQmFnLnJlbW92ZSBncm91cC5jb21wb25lbnRzIGVsZW1lbnRfaW5fZ3JvdXA7XG4gICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIGdyb3VwLmNvbXBvbmVudHNfYnlfaWQgdC5pZDtcbiAgICAgICAgICAgICAgTm90X2ZpbmlzaGVkKTtcbiAgICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgIHwgTm90X3N0YXJ0ZWQgXyAtPiAoKVxuICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfZW9mIHQpXG4gICAgOztcblxuICAgIGxldCBjbG9zZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gYXMgdCkgPVxuICAgICAgY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHQ7XG4gICAgICBIYXNodGJsLnJlbW92ZSBpbnN0YW5jZS5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnlfaWRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgICAgdGhlbiBgQ2xvc2VkXG4gICAgICBlbHNlIChcbiAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+IFF1ZXVlLmVucXVldWUgcSAoTm9ybWFsIHgpXG4gICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfbWVzc2FnZSB0IHgpO1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB4ID1cbiAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4IHdpdGhcbiAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICB8IGBPayAtPiBgRmx1c2hlZCAoV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgICAgIHRoZW4gYENsb3NlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPlxuICAgICAgICAgICAgIFF1ZXVlLmVucXVldWUgcSAoRXhwZXJ0IChCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWYgfnBvcyB+bGVuKSlcbiAgICAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgfmJ1ZiB+cG9zIH5sZW4pO1xuICAgICAgICAgIGBPaylcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICAgIHwgYE9rIC0+IGBGbHVzaGVkIChXcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHN0YXJ0IHQgPVxuICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICB8IFN0YXJ0ZWQgLT4gZmFpbHdpdGggXCJhdHRlbXB0ZWQgdG8gc3RhcnQgd3JpdGVyIHdoaWNoIHdhcyBhbHJlYWR5IHN0YXJ0ZWRcIlxuICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+XG4gICAgICAgIHQuc3RhdGUgPC0gU3RhcnRlZDtcbiAgICAgICAgUXVldWUuaXRlciBxIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9ybWFsIHggLT4gd3JpdGVfbWVzc2FnZSB0IHhcbiAgICAgICAgICB8IEV4cGVydCB4IC0+IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHQgeCk7XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZCB0aGVuIHdyaXRlX2VvZiB0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvblxuICAgICAgICAocmVzdWx0IDogKF8sIFJwY19lcnJvci50KSBSZXN1bHQudClcbiAgICAgICAgb25fZXhjZXB0aW9uXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIChVbmNhdWdodF9leG4gc2V4cCkgLT5cbiAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIChFeG4uY3JlYXRlX3Mgc2V4cClcbiAgICB8IEVycm9yIF8gfCBPayBfIC0+ICgpXG4gIDs7XG5cbiAgbGV0IGF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQgZXJyb3IgfnJwY19raW5kID1cbiAgICBsZXQgZXhuID0gRXJyb3IudG9fZXhuIGVycm9yIGluXG4gICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgIGV4blxuICAgICAgfmxvY2F0aW9uOlslc3RyaW5nIFwic2VydmVyLXNpZGUgJXtycGNfa2luZH0gYXV0aG9yaXphdGlvblwiXVxuICA7O1xuXG4gIGxldCBhcHBseV9zdHJlYW1pbmdfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICB7IEltcGxlbWVudGF0aW9uLkYuYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9XG4gICAgICAgIH5sZW5cbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5pZFxuICAgICAgICB+KG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50KVxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGxldCBkYXRhID1cbiAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+bGVuXG4gICAgICAgIH5sb2NhdGlvbjpcInN0cmVhbWluZ19ycGMgc2VydmVyLXNpZGUgcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgaW5cbiAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5wYWNrZWRfc2VsZiBpblxuICAgIGxldCBzdHJlYW1fd3JpdGVyID0gQ2FjaGVkX2Jpbl93cml0ZXIuY3JlYXRlIH5pZCB+YmluX3dyaXRlcjpiaW5fdXBkYXRlX3dyaXRlciBpblxuICAgIGxldCBpbXBsX3dpdGhfc3RhdGUgPVxuICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICB8IFBpcGUgZiAtPiBgUGlwZSBmXG4gICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgIGxldCB3cml0ZXIgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgPVxuICAgICAgICAgIHsgaWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5JZC5jcmVhdGUgKClcbiAgICAgICAgICA7IHN0YXRlID0gTm90X3N0YXJ0ZWQgKFF1ZXVlLmNyZWF0ZSAoKSlcbiAgICAgICAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgICAgOyBpbnN0YW5jZSA9IHQucGFja2VkX3NlbGZcbiAgICAgICAgICA7IHF1ZXJ5X2lkID0gaWRcbiAgICAgICAgICA7IGdyb3VwcyA9IEJhZy5jcmVhdGUgKClcbiAgICAgICAgICA7IHN0cmVhbV93cml0ZXJcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5rZXk6aWQgfmRhdGE6KERpcmVjdCB3cml0ZXIpO1xuICAgICAgICBgRGlyZWN0IChmLCB3cml0ZXIpXG4gICAgaW5cbiAgICBsZXQgcnVuX2ltcGwgaW1wbCBzcGxpdF9vayBoYW5kbGVfb2sgPVxuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIFJwY19yZXN1bHQudHJ5X3dpdGhcbiAgICAgICAgICA/b25fYmFja2dyb3VuZF9leGNlcHRpb246b25fZXhjZXB0aW9uLmNhbGxiYWNrXG4gICAgICAgICAgKGZ1biAoKSAtPiBkZWZlcl9yZXN1bHQgKGRhdGEgPj58fiBpbXBsKSlcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBwaXBlX3JwYyBjb21wdXRhdGlvblwiXG4gICAgICBpblxuICAgICAgRWFnZXJfZGVmZXJyZWQudXBvbiByZXN1bHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgKFJwY19lcnJvci5VbmNhdWdodF9leG4gc2V4cCBhcyBlcnIpIC0+XG4gICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKEVycm9yIGVycik7XG4gICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG5cbiAgICAgICAgICAgIG9uX2V4Y2VwdGlvblxuICAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgICAgKEV4bi5jcmVhdGVfcyBzZXhwKVxuICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChFcnJvciBlcnIpXG4gICAgICAgIHwgT2sgKE9yX25vdF9hdXRob3JpemVkLk5vdF9hdXRob3JpemVkIGVycm9yKSAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgYmluX2luaXRfd3JpdGVyXG4gICAgICAgICAgICAoYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQ6XCJwaXBlX3JwY1wiKVxuICAgICAgICB8IE9rIChBdXRob3JpemVkIChFcnJvciBlcnJvcikpIC0+XG4gICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKE9rIGVycm9yKVxuICAgICAgICB8IE9rIChBdXRob3JpemVkIChPayBvaykpIC0+XG4gICAgICAgICAgbGV0IGluaXRpYWwsIHJlc3QgPSBzcGxpdF9vayBvayBpblxuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBpbml0aWFsKTtcbiAgICAgICAgICBoYW5kbGVfb2sgcmVzdClcbiAgICBpblxuICAgIG1hdGNoIGltcGxfd2l0aF9zdGF0ZSB3aXRoXG4gICAgfCBgUGlwZSBmIC0+XG4gICAgICBydW5faW1wbFxuICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSlcbiAgICAgICAgRm4uaWRcbiAgICAgICAgKGZ1biBwaXBlX3IgLT5cbiAgICAgICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmtleTppZCB+ZGF0YTooUGlwZSBwaXBlX3IpO1xuICAgICAgICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAgICAgIChXcml0ZXIudHJhbnNmZXIgdC53cml0ZXIgcGlwZV9yIChmdW4gZGF0YSAtPlxuICAgICAgICAgICAgICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2UgPSBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlIHN0cmVhbV93cml0ZXIgZGF0YSBpblxuICAgICAgICAgICAgICAgIHdyaXRlX21lc3NhZ2UgaW5zdGFuY2UgfmlkIGJpbl93cml0ZXJfbWVzc2FnZSAoc3RyZWFtX3dyaXRlciwgZGF0YSkpKTtcbiAgICAgICAgICAgUGlwZS5jbG9zZWQgcGlwZV9yXG4gICAgICAgICAgID4+PiBmdW4gKCkgLT5cbiAgICAgICAgICAgUGlwZS51cHN0cmVhbV9mbHVzaGVkIHBpcGVfclxuICAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICAgfCBgT2sgfCBgUmVhZGVyX2Nsb3NlZCAtPlxuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZik7XG4gICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQpXG4gICAgfCBgRGlyZWN0IChmLCB3cml0ZXIpIC0+XG4gICAgICBydW5faW1wbFxuICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSB3cml0ZXIpXG4gICAgICAgIChmdW4geCAtPiB4LCAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5zdGFydCB3cml0ZXIpXG4gIDs7XG5cbiAgbGV0IGFwcGx5X2ltcGxlbWVudGF0aW9uJ1xuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gICAgPVxuICAgIGxldCBpZCA9IHF1ZXJ5LmlkIGluXG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb24gd2l0aFxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5IChiaW5fcXVlcnlfcmVhZGVyLCBmKSAtPlxuICAgICAgbGV0IHF1ZXJ5X2NvbnRlbnRzID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgbWVzc2FnZSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcXVlcnlfY29udGVudHMgd2l0aFxuICAgICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gU3RvcCBlcnJcbiAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgICgqIFdlIGRvbid0IGNsb3NlIGNvbm5lY3Rpb25zIG9uIHVuYXV0aG9yaXplZCBSUENzLiBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG9cbiAgICAgICAgICAgICAgIGNvbW11bmljYXRlIGZhaWx1cmUgYmFjayB0byB0aGUgc2VuZGVyIGluIG9uZS13YXkgcnBjcywgd2UgZG8gbm90aGluZy4gVGhlXG4gICAgICAgICAgICAgICBkZWZlcnJlZCAoYW5kIGFueSBkZWZlcnJlZCBleGNlcHRpb25zKSBhcmUgZHJvcHBlZCBoZXJlIGFzIGEgY29uc2VxdWVuY2Ugb2ZcbiAgICAgICAgICAgICAgIFtsaWZ0X2RlZmVycmVkXSBleGlzdGluZyBmb3Igb25lLXdheSBycGNzLiBXZSB1c2UgW0VhZ2VyX2RlZmVycmVkXSBzbyBpblxuICAgICAgICAgICAgICAgdGhlIG5vbi1ibG9ja2luZyBjYXNlcyB0aGlzIHdpbGwgc3RpbGwgcnVuIHN5bmNocm9ub3VzbHkuICopXG4gICAgICAgICAgICBsZXQgKF8gOiBfIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgPSBmIHQuY29ubmVjdGlvbl9zdGF0ZSBxIGluXG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuO1xuICAgICAgICAgICAgaWYgb25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIFN0b3BcbiAgICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBjb21wdXRhdGlvblwiKVxuICAgICAgICAgICAgZWxzZSBDb250aW51ZSkpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLk9uZV93YXlfZXhwZXJ0IGYgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBsZW4gPSAocXVlcnkuZGF0YSA6PiBpbnQpIGluXG4gICAgICAgICBsZXQgKF8gOiBfIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgPVxuICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgIGluXG4gICAgICAgICByZWFkX2J1ZmZlcl9wb3NfcmVmIDo9ICFyZWFkX2J1ZmZlcl9wb3NfcmVmICsgbGVuO1xuICAgICAgICAgQ29udGludWVcbiAgICAgICB3aXRoXG4gICAgICAgfCBleG4gLT5cbiAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgdGhlblxuICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgZXhwZXJ0IGNvbXB1dGF0aW9uXCIpXG4gICAgICAgICBlbHNlIENvbnRpbnVlKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGMgKGJpbl9xdWVyeV9yZWFkZXIsIGJpbl9yZXNwb25zZV93cml0ZXIsIGYsIHJlc3VsdF9tb2RlKSAtPlxuICAgICAgbGV0IHF1ZXJ5X2NvbnRlbnRzID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIGxldCBvcl9ub3RfYXV0aG9yaXplZF90b19ycGNfcmVzdWx0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIHJlc3VsdCAtPiBPayByZXN1bHRcbiAgICAgICAgfCBOb3RfYXV0aG9yaXplZCBlcnJvciAtPiBhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZDpcInJwY1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuQmxvY2tpbmcgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgIFJlc3VsdC5iaW5kIHF1ZXJ5X2NvbnRlbnRzIH5mOihmdW4gcXVlcnkgLT5cbiAgICAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcXVlcnkgfD4gb3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsdClcbiAgICAgICAgICAgIHw+IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlclxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgKCogSW4gdGhlIFtEZWZlcnJlZF0gYnJhbmNoIHdlIHVzZSBbTW9uaXRvci50cnlfd2l0aF0sIHdoaWNoIGluY2x1ZGVzXG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIHdoZW4gaXQgY2F0Y2hlcyBhbiBleGNlcHRpb24uIEZvciBjb25zaXN0ZW5jeSwgd2UgYWxzbyBnZXRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgaGVyZS4gKilcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICBsZXQgc2V4cCA9XG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsgbG9jYXRpb24gPSBcInNlcnZlci1zaWRlIGJsb2NraW5nIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgICAgOyBleG4gOiBleG5cbiAgICAgICAgICAgICAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgKEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIHNleHApKTtcbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bilcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT5cbiAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgKCogV2UgZ2VuZXJhbGx5IHRyeSB0byB3cml0ZSBhIHJlc3BvbnNlIGJlZm9yZSBoYW5kbGluZyBbb25fZXhjZXB0aW9uXSBzbyBpZiB3ZVxuICAgICAgICAgICAgICBhcmUgY2xvc2luZyB0aGUgY29ubmVjdGlvbiB3ZSBzdGlsbCBhY3R1YWxseSBzZW5kIHRoZSByZXNwb25zZSBiYWNrLiBXaGVuIHdlXG4gICAgICAgICAgICAgIHBhc3MgW29uX2V4Y2VwdGlvbi5jYWxsYmFja10gaGVyZSwgd2UgYXJlIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgcmFpc2VkXG4gICAgICAgICAgICAgIGV4Y2VwdGlvbnMgbm90IHRvIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgY2xpZW50IChlLmcuIGlmIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICAgICByYWlzZXMgYm90aCBhc3luY2hyb25vdXNseSBhbmQgc3luY2hyb25vdXNseSkuIFRoaXMgd291bGQgYmUgaGFyZCB0byBoYW5kbGVcbiAgICAgICAgICAgICAgaW4gYSBtb3JlIHByaW5jaXBsZWQgd2F5LiAqKVxuICAgICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgICAgIH5ydW46YE5vd1xuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIHF1ZXJ5X2NvbnRlbnRzIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPiBEZWZlcnJlZC5yZXR1cm4gKEVycm9yIGVycilcbiAgICAgICAgICAgICAgICB8IE9rIHF1ZXJ5IC0+XG4gICAgICAgICAgICAgICAgICBFYWdlcl9kZWZlcnJlZC5tYXBcbiAgICAgICAgICAgICAgICAgICAgKGYgdC5jb25uZWN0aW9uX3N0YXRlIHF1ZXJ5KVxuICAgICAgICAgICAgICAgICAgICB+Zjpvcl9ub3RfYXV0aG9yaXplZF90b19ycGNfcmVzdWx0KVxuICAgICAgICAgaW5cbiAgICAgICAgICgqIEluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGEgdmFsdWUgaW1tZWRpYXRlbHksIHdlIHdpbGxcbiAgICAgICAgICAgIHdyaXRlIHRoZSByZXNwb25zZSBpbW1lZGlhdGVseSBhcyB3ZWxsICh0aGlzIGlzIGFsc28gd2h5IHRoZSBhYm92ZSBbdHJ5X3dpdGhdXG4gICAgICAgICAgICBoYXMgW35ydW46YE5vd10pLiAgVGhpcyBjYW4gYmUgYSBiaWcgcGVyZm9ybWFuY2Ugd2luIGZvciBzZXJ2ZXJzIHRoYXQgZ2V0IG1hbnlcbiAgICAgICAgICAgIHF1ZXJpZXMgaW4gYSBzaW5nbGUgQXN5bmMgY3ljbGUuICopXG4gICAgICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgID4+PiBmdW4gZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgZGF0YTtcbiAgICAgICAgICAgIG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiBkYXRhIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSk7XG4gICAgICBDb250aW51ZVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGNfZXhwZXJ0IChmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCByZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLmNyZWF0ZSBxdWVyeS5pZCB0LndyaXRlciBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICAoKiBXZSBuZWVkIHRoZSBbTW9uaXRvci50cnlfd2l0aF0gZXZlbiBmb3IgdGhlIGJsb2NraW5nIG1vZGUgYXMgdGhlIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIG1pZ2h0IHJldHVybiBbRGVsYXllZF9yZXBvbnNlXSwgc28gd2UgZG9uJ3QgYm90aGVyIG9wdGltaXppbmcgdGhlIGJsb2NraW5nXG4gICAgICAgICAgIG1vZGUuICopXG4gICAgICAgIGxldCByZXN0ID1cbiAgICAgICAgICBtYXRjaCBvbl9leGNlcHRpb24uY2FsbGJhY2sgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYExvZ1xuICAgICAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgICAgICBpblxuICAgICAgICBNb25pdG9yLnRyeV93aXRoIH5yZXN0IH5ydW46YE5vdyAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IChxdWVyeS5kYXRhIDo+IGludCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHJlc3BvbmRlciByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT4gcmVzdWx0XG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+IERlZmVycmVkLnJldHVybiByZXN1bHQpXG4gICAgICBpblxuICAgICAgbGV0IGNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IGV4biA9XG4gICAgICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuIGV4biB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgZXhwZXJ0IGNvbXB1dGF0aW9uXCJcbiAgICAgIGluXG4gICAgICBsZXQgaGFuZGxlX2V4biByZXN1bHQgPVxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICBpZiByZXNwb25kZXIucmVzcG9uZGVkXG4gICAgICAgICAgdGhlbiByZXN1bHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl91bml0IHJlc3VsdDtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICBpblxuICAgICAgICByZXN1bHRcbiAgICAgIGluXG4gICAgICBsZXQgY2hlY2tfcmVzcG9uZGVkICgpID1cbiAgICAgICAgaWYgcmVzcG9uZGVyLnJlc3BvbmRlZFxuICAgICAgICB0aGVuIE9rICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBoYW5kbGVfZXhuXG4gICAgICAgICAgICAoY29tcHV0YXRpb25fZmFpbHVyZV9yZXN1bHQgKEZhaWx1cmUgXCJFeHBlcnQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCByZXBseVwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgZCA9XG4gICAgICAgIGxldCBvcGVuIEVhZ2VyX2RlZmVycmVkLkxldF9zeW50YXggaW5cbiAgICAgICAgbWF0Y2glbWFwIGQgd2l0aFxuICAgICAgICB8IE9rIChBdXRob3JpemVkIHJlc3VsdCkgLT5cbiAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgfCBSZXBsaWVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBkIC0+IGRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZFxuICAgICAgICAgIHRoZW4gY2hlY2tfcmVzcG9uZGVkICgpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICB1cG9uIGQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBjaGVja19yZXNwb25kZWQgKClcbiAgICAgICAgICAgICAgfD4gUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6dC5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgfD4gb2tfZXhuKTtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICB8IE9rIChOb3RfYXV0aG9yaXplZCBlcnJvcikgLT5cbiAgICAgICAgICBoYW5kbGVfZXhuIChhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZDpcInJwYyBleHBlcnRcIilcbiAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gaGFuZGxlX2V4biAoY29tcHV0YXRpb25fZmFpbHVyZV9yZXN1bHQgZXhuKSBpblxuICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgICByZXN1bHRcbiAgICAgIGluXG4gICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFdhaXRcbiAgICAgICAgICAgKGxldCVtYXAgciA9IGQgaW5cbiAgICAgICAgICAgIG9rX2V4blxuICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOnQuY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgICAgIHIpKVxuICAgICAgIHwgU29tZSByZXN1bHQgLT5cbiAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gQ29udGludWVcbiAgICAgICAgICB8IEVycm9yIF8gLT4gU3RvcCByZXN1bHQpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5TdHJlYW1pbmdfcnBjIHN0cmVhbWluZ19ycGMgLT5cbiAgICAgIGxldCBzdHJlYW1fcXVlcnkgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIFAuU3RyZWFtX3F1ZXJ5LmJpbl9yZWFkZXJfbmF0MF90XG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcGlwZV9ycGMgc3RyZWFtX3F1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgIH5hZGRfbGVuOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgQWJvcnQgLT4gMFxuICAgICAgICAgICAgfCBgUXVlcnkgKGxlbiA6IE5hdDAudCkgLT4gKGxlbiA6PiBpbnQpKVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBzdHJlYW1fcXVlcnkgd2l0aFxuICAgICAgIHwgRXJyb3IgX2VyciAtPiAoKVxuICAgICAgIHwgT2sgYEFib3J0IC0+XG4gICAgICAgICAoKiBOb3RlIHRoYXQgdGhlcmUncyBzb21lIGRlbGF5IGJldHdlZW4gd2hlbiB3ZSByZWNlaXZlIGEgcGlwZSBSUEMgcXVlcnkgYW5kXG4gICAgICAgICAgICB3aGVuIHdlIHB1dCBzb21ldGhpbmcgaW4gW29wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc10gKHdlIHdhaXQgZm9yXG4gICAgICAgICAgICBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gdG8gcmV0dXJuKS4gRHVyaW5nIHRoaXMgdGltZSwgYW4gYWJvcnQgbWVzc2FnZSB3b3VsZFxuICAgICAgICAgICAganVzdCBiZSBpZ25vcmVkLiBUaGUgZGlzcGF0Y2hlciBjYW4ndCBhYm9ydCB0aGUgcXVlcnkgd2hpbGUgdGhpcyBpc1xuICAgICAgICAgICAgaGFwcGVuaW5nLCB0aG91Z2gsIHNpbmNlIHRoZSBpbnRlcmZhY2UgZG9lc24ndCBleHBvc2UgdGhlIElEIHJlcXVpcmVkIHRvXG4gICAgICAgICAgICBhYm9ydCB0aGUgcXVlcnkgdW50aWwgYWZ0ZXIgYSByZXNwb25zZSBoYXMgYmVlbiByZXR1cm5lZC4gKilcbiAgICAgICAgIE9wdGlvbi5pdGVyIChIYXNodGJsLmZpbmQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnkuaWQpIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IFBpcGUgcGlwZSAtPiBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICAgICAgICAgICB8IERpcmVjdCB3IC0+IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlIHcpXG4gICAgICAgfCBPayAoYFF1ZXJ5IGxlbikgLT5cbiAgICAgICAgIGFwcGx5X3N0cmVhbWluZ19pbXBsZW1lbnRhdGlvblxuICAgICAgICAgICB0XG4gICAgICAgICAgIHN0cmVhbWluZ19ycGNcbiAgICAgICAgICAgfmxlblxuICAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgfmlkXG4gICAgICAgICAgIH5vbl9leGNlcHRpb25cbiAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcik7XG4gICAgICBDb250aW51ZVxuICA7O1xuXG4gIGxldCBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gICAgPVxuICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uJ1xuICAgICAgdFxuICAgICAgaW1wbGVtZW50YXRpb25cbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfm9uX2V4Y2VwdGlvblxuICA7O1xuXG4gIGxldCBmbHVzaCAoVCB0KSA9XG4gICAgYXNzZXJ0IChub3QgdC5zdG9wcGVkKTtcbiAgICBsZXQgcHJvZHVjZXJzX2ZsdXNoZWQgPVxuICAgICAgSGFzaHRibC5mb2xkIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5pbml0OltdIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPlxuICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgfCBEaXJlY3QgXyAtPiBhY2NcbiAgICAgICAgfCBQaXBlIHBpcGUgLT4gRGVmZXJyZWQuaWdub3JlX20gKFBpcGUudXBzdHJlYW1fZmx1c2hlZCBwaXBlKSA6OiBhY2MpXG4gICAgaW5cbiAgICBEZWZlcnJlZC5hbGxfdW5pdCBwcm9kdWNlcnNfZmx1c2hlZFxuICA7O1xuXG4gIGxldCBzdG9wIChUIHQpID1cbiAgICB0LnN0b3BwZWQgPC0gdHJ1ZTtcbiAgICBIYXNodGJsLml0ZXIgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmY6KGZ1bmN0aW9uXG4gICAgICB8IERpcmVjdCB3cml0ZXIgLT5cbiAgICAgICAgKCogRG9uJ3QgcmVtb3ZlIHRoZSB3cml0ZXIgZnJvbSB0aGUgaW5zdGFuY2UsIGFzIHRoYXQgd291bGQgbW9kaWZ5IHRoZSBoYXNodGFibGVcbiAgICAgICAgICAgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGl0ZXJhdGluZyBvdmVyLiAqKVxuICAgICAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2Ugd3JpdGVyXG4gICAgICB8IFBpcGUgXyAtPiAoKSk7XG4gICAgSGFzaHRibC5jbGVhciB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICA7O1xuXG4gIGxldCBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnQgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IGBDb250aW51ZSAtPiBDb250aW51ZVxuICAgIHwgYFJhaXNlIC0+IFJwY19lcnJvci5yYWlzZSBlcnJvciB0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgIHwgYENhbGwgZiAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBmXG4gICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICB+cnBjX3RhZzooUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS5QLlF1ZXJ5LnRhZylcbiAgICAgICAgICAgfnZlcnNpb246cXVlcnkudmVyc2lvblxuICAgICAgIHdpdGhcbiAgICAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgICAgIHwgYENvbnRpbnVlIC0+IENvbnRpbnVlKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcXVlcnlfaW50ZXJuYWxcbiAgICAgICAgdFxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbGV0IHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyB9ID0gdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gOiBEZXNjcmlwdGlvbi50ID1cbiAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCB0Lmxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiB3aXRoXG4gICAgfCBTb21lIChsYXN0X2Rlc2MsIGltcGxlbWVudGF0aW9uKSB3aGVuIERlc2NyaXB0aW9uLmVxdWFsIGxhc3RfZGVzYyBkZXNjcmlwdGlvbiAtPlxuICAgICAgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvbi5mXG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPlxuICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBpbXBsZW1lbnRhdGlvbnMgZGVzY3JpcHRpb24gd2l0aFxuICAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbiAtPlxuICAgICAgICAgdC5sYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPC0gU29tZSAoZGVzY3JpcHRpb24sIGltcGxlbWVudGF0aW9uKTtcbiAgICAgICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIHRcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb24uZlxuICAgICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgICAgICAgICB+cXVlcnlcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgICAgICAgfCBgRXhwZXJ0IGltcGwgLT5cbiAgICAgICAgICAgIGxldCB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZDsgbWV0YWRhdGEgPSAoXyA6IHN0cmluZyBvcHRpb24pOyBkYXRhID0gbGVuIH0gPVxuICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbmRlciA9IFJlc3BvbmRlci5jcmVhdGUgaWQgdC53cml0ZXIgaW5cbiAgICAgICAgICAgICAgaW1wbFxuICAgICAgICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgICAgIH5ycGNfdGFnOihQLlJwY190YWcudG9fc3RyaW5nIHRhZylcbiAgICAgICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgICAgIHJlc3BvbmRlclxuICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgIH5sZW46KGxlbiA6PiBpbnQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkIHRoZW4gQ29udGludWUgZWxzZSBXYWl0IGRcbiAgICAgICAgICB8IChgQ29udGludWUgfCBgUmFpc2UgfCBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDYWxsIF8pIGFzIG9uX3Vua25vd25fcnBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBScGNfZXJyb3IuVW5pbXBsZW1lbnRlZF9ycGMgKHF1ZXJ5LnRhZywgYFZlcnNpb24gcXVlcnkudmVyc2lvbikgaW5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgcXVlcnkuaWQgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IChFcnJvciBlcnJvcik7XG4gICAgICAgICAgICBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSkpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9xdWVyeVxuICAgICAgICAoVCB0KVxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgaWYgdC5zdG9wcGVkIHx8IFdyaXRlci5pc19jbG9zZWQgdC53cml0ZXJcbiAgICB0aGVuIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC5TdG9wIChPayAoKSlcbiAgICBlbHNlXG4gICAgICBScGNfbWV0YWRhdGEuUHJpdmF0ZS53aXRoX21ldGFkYXRhIHF1ZXJ5Lm1ldGFkYXRhIH5mOihmdW4gKCkgLT5cbiAgICAgICAgaGFuZGxlX3F1ZXJ5X2ludGVybmFsXG4gICAgICAgICAgdFxuICAgICAgICAgIH5xdWVyeVxuICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcilcbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBJbnN0YW5jZS5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5sZXQgY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnM6aSdzIH5vbl91bmtub3duX3JwYyA9XG4gICgqIE1ha2Ugc3VyZSB0aGUgdGFncyBhcmUgdW5pcXVlLiAqKVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gRGVzY3JpcHRpb24uVGFibGUuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIGxldCBkdXBzID0gRGVzY3JpcHRpb24uSGFzaF9zZXQuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIExpc3QuaXRlciBpJ3MgfmY6KGZ1biAoaSA6IF8gSW1wbGVtZW50YXRpb24udCkgLT5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgeyBEZXNjcmlwdGlvbi5uYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBpLnRhZzsgdmVyc2lvbiA9IGkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCBIYXNodGJsLmFkZCBpbXBsZW1lbnRhdGlvbnMgfmtleTpkZXNjcmlwdGlvbiB+ZGF0YTppIHdpdGhcbiAgICB8IGBPayAtPiAoKVxuICAgIHwgYER1cGxpY2F0ZSAtPiBIYXNoX3NldC5hZGQgZHVwcyBkZXNjcmlwdGlvbik7XG4gIGlmIG5vdCAoSGFzaF9zZXQuaXNfZW1wdHkgZHVwcylcbiAgdGhlbiBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgKEhhc2hfc2V0LnRvX2xpc3QgZHVwcykpXG4gIGVsc2UgT2sgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIDo+IF8gb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgfVxuOztcblxubGV0IGluc3RhbnRpYXRlXG4gICAgICB0XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJcbiAgPVxuICBsZXQgcmVjIHVucGFja2VkIDogXyBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgPSB0XG4gICAgOyB3cml0ZXJcbiAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNvbm5lY3Rpb25fc3RhdGVcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgIDsgc3RvcHBlZCA9IGZhbHNlXG4gICAgOyBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPSBOb25lXG4gICAgOyBwYWNrZWRfc2VsZiA9IEluc3RhbmNlLlQgdW5wYWNrZWRcbiAgICB9XG4gIGluXG4gIHVucGFja2VkLnBhY2tlZF9zZWxmXG47O1xuXG5leGNlcHRpb24gRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBvZiBEZXNjcmlwdGlvbi50IGxpc3QgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGNyZWF0ZV9leG4gfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgPVxuICBtYXRjaCBjcmVhdGUgfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgd2l0aFxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKVxuOztcblxubGV0IG51bGwgKCkgPSBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnM6W10gfm9uX3Vua25vd25fcnBjOmBSYWlzZVxuXG5sZXQgYWRkX2V4biB0IChpbXBsZW1lbnRhdGlvbiA6IF8gSW1wbGVtZW50YXRpb24udCkgPVxuICBsZXQgZGVzYyA6IERlc2NyaXB0aW9uLnQgPVxuICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaW1wbGVtZW50YXRpb24udGFnOyB2ZXJzaW9uID0gaW1wbGVtZW50YXRpb24udmVyc2lvbiB9XG4gIGluXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLmNvcHkgdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzYyB+ZGF0YTppbXBsZW1lbnRhdGlvbiB3aXRoXG4gIHwgYER1cGxpY2F0ZSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBbIGRlc2MgXSlcbiAgfCBgT2sgLT4geyB0IHdpdGggaW1wbGVtZW50YXRpb25zIH1cbjs7XG5cbmxldCBhZGQgdCBpbXBsZW1lbnRhdGlvbiA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gYWRkX2V4biB0IGltcGxlbWVudGF0aW9uKVxuXG5sZXQgbGlmdCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSB+ZiA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLm1hcCBpbXBsZW1lbnRhdGlvbnMgfmY6KEltcGxlbWVudGF0aW9uLmxpZnQgfmYpIGluXG4gIGxldCBvbl91bmtub3duX3JwYyA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgKGBSYWlzZSB8IGBDb250aW51ZSB8IGBDbG9zZV9jb25uZWN0aW9uKSBhcyB4IC0+IHhcbiAgICB8IGBDYWxsIGNhbGwgLT4gYENhbGwgKGZ1biBzdGF0ZSAtPiBjYWxsIChmIHN0YXRlKSlcbiAgICB8IGBFeHBlcnQgZXhwZXJ0IC0+IGBFeHBlcnQgKGZ1biBzdGF0ZSAtPiBleHBlcnQgKGYgc3RhdGUpKVxuICBpblxuICB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gUmVzcG9uZGVyXG5cbiAgbW9kdWxlIFJwY19yZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBSZXNwb25kZXIudFxuXG4gICAgbGV0IGNhbm5vdF9zZW5kIHIgPVxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICAgclxuICAgICAgICBbJXNleHBfb2Y6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdXG4gICAgOztcblxuICAgIGxldCBtYXJrX3Jlc3BvbmRlZCAodCA6IHQpID1cbiAgICAgIGlmIHQucmVzcG9uZGVkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWxyZWFkeSByZXNwb25kZWRcIiB0IFslc2V4cF9vZjogUmVzcG9uZGVyLnRdO1xuICAgICAgdC5yZXNwb25kZWQgPC0gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGUgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgICB0LndyaXRlclxuICAgICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAgIGhlYWRlclxuICAgICAgICAgIH5idWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgd2l0aFxuICAgICAgfCBTZW50IGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT4gY2Fubm90X3NlbmQgclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2JpZ3N0cmluZyAodCA6IHQpIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgICBSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIChOYXQwLm9mX2ludF9leG4gbGVuKSB9XG4gICAgICBpblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgaGVhZGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Vycm9yICh0IDogdCkgZXJyb3IgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBkYXRhID1cbiAgICAgICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSByYXcgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAoRXJyb3IudG9fZXhuIGVycm9yKVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgfSlcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfYmluX3Byb3QgKHQgOiB0KSBiaW5fd3JpdGVyX2EgYSA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2EpKVxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayBhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgY3JlYXRlX2V4biA9IGNyZWF0ZV9leG5cbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFJlYWRlciA9IFRyYW5zcG9ydC5SZWFkZXJcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbm1vZHVsZSBIYW5kc2hha2VfZXJyb3IgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBFb2ZcbiAgICAgIHwgVHJhbnNwb3J0X2Nsb3NlZFxuICAgICAgfCBUaW1lb3V0XG4gICAgICB8IFJlYWRpbmdfaGVhZGVyX2ZhaWxlZCBvZiBFcnJvci50XG4gICAgICB8IE5lZ290aWF0aW9uX2ZhaWxlZCBvZiBFcnJvci50XG4gICAgICB8IE5lZ290aWF0ZWRfdW5leHBlY3RlZF92ZXJzaW9uIG9mIGludFxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgZXhjZXB0aW9uIEhhbmRzaGFrZV9lcnJvciBvZiAodCAqIEluZm8udCkgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgdG9fZXhuIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIHQgPSBIYW5kc2hha2VfZXJyb3IgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pXG5lbmRcblxubW9kdWxlIEhlYWRlciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHZhbCB2MSA6IHRcbiAgdmFsIHYyIDogdFxuICB2YWwgbmVnb3RpYXRlIDogdXM6dCAtPiBwZWVyOnQgLT4gKGludCwgSGFuZHNoYWtlX2Vycm9yLnQpIHJlc3VsdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgUC5IZWFkZXJcblxuICBsZXQgY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgIFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNyZWF0ZV9leG4gKCkgfnByb3RvY29sOlJwYyB+c3VwcG9ydGVkX3ZlcnNpb25zXG4gIDs7XG5cbiAgbGV0IHYyID0gY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxOyAyIF1cbiAgbGV0IHYxID0gY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxIF1cblxuICBsZXQgbmVnb3RpYXRlIH51cyB+cGVlciA9XG4gICAgbWF0Y2ggbmVnb3RpYXRlIH5hbGxvd19sZWdhY3lfcGVlcjp0cnVlIH51cyB+cGVlciB3aXRoXG4gICAgfCBFcnJvciBlIC0+IEVycm9yIChIYW5kc2hha2VfZXJyb3IuTmVnb3RpYXRpb25fZmFpbGVkIGUpXG4gICAgfCBPayBpIC0+IE9rIGlcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJvdG9jb2xfd3JpdGVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3dyaXRlciA6IHQgLT4gU2V4cC50XG4gIHZhbCBjcmVhdGVfYmVmb3JlX25lZ290aWF0aW9uIDogV3JpdGVyLnQgLT4gdFxuICB2YWwgc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IHQgLT4gaW50IC0+IHVuaXRcblxuICB2YWwgc2VuZF9xdWVyeVxuICAgIDogIHRcbiAgICAtPiAncXVlcnkgUC5RdWVyeS50XG4gICAgLT4gYmluX3dyaXRlcl9xdWVyeToncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfZXhwZXJ0X3F1ZXJ5XG4gICAgOiAgdFxuICAgIC0+IHVuaXQgUC5RdWVyeS50XG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmc6XG4gICAgICAgICAoV3JpdGVyLnRcbiAgICAgICAgICAtPiBQLk1lc3NhZ2UubmF0MF90IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgLT4gUC5NZXNzYWdlLm5hdDBfdFxuICAgICAgICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgLT4gJ3Jlc3VsdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudClcbiAgICAtPiAncmVzdWx0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfaGVhcnRiZWF0IDogdCAtPiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG4gIHZhbCBjYW5fc2VuZCA6IHQgLT4gYm9vbFxuICB2YWwgYnl0ZXNfdG9fd3JpdGUgOiB0IC0+IGludFxuICB2YWwgYnl0ZXNfd3JpdHRlbiA6IHQgLT4gSW50NjMudFxuICB2YWwgZmx1c2hlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBzdG9wcGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIDogaW50IFNldF9vbmNlLnRcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX3dyaXRlciB0ID0gWyVzZXhwX29mOiBXcml0ZXIudF0gdC53cml0ZXJcblxuICBsZXQgY3JlYXRlX2JlZm9yZV9uZWdvdGlhdGlvbiB3cml0ZXIgPVxuICAgIHsgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uID0gU2V0X29uY2UuY3JlYXRlICgpOyB3cml0ZXIgfVxuICA7O1xuXG4gIGxldCBzZXRfbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIHQgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uID1cbiAgICBTZXRfb25jZS5zZXRfZXhuIHQubmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIFslaGVyZV0gbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gIDs7XG5cbiAgbGV0IHF1ZXJ5X21lc3NhZ2UgdCBxdWVyeSA6IF8gUC5NZXNzYWdlLnQgPVxuICAgIG1hdGNoIFNldF9vbmNlLmdldF9leG4gdC5uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gWyVoZXJlXSB3aXRoXG4gICAgfCAxIC0+IFF1ZXJ5X3YxIChQLlF1ZXJ5LnRvX3YxIHF1ZXJ5KVxuICAgIHwgXyAtPiBRdWVyeSBxdWVyeVxuICA7O1xuXG4gIGxldCBzZW5kX3F1ZXJ5IHQgcXVlcnkgfmJpbl93cml0ZXJfcXVlcnkgPVxuICAgIGxldCBtZXNzYWdlID0gcXVlcnlfbWVzc2FnZSB0IHF1ZXJ5IGluXG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgIHQud3JpdGVyXG4gICAgICAoUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfcXVlcnkpKVxuICAgICAgbWVzc2FnZVxuICA7O1xuXG4gIGxldCBzZW5kX2V4cGVydF9xdWVyeSB0IHF1ZXJ5IH5idWYgfnBvcyB+bGVuIH5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgPVxuICAgIGxldCBoZWFkZXIgPSBxdWVyeV9tZXNzYWdlIHQgeyBxdWVyeSB3aXRoIGRhdGEgPSBOYXQwLm9mX2ludF9leG4gbGVuIH0gaW5cbiAgICBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGhlYWRlciB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzZW5kX2hlYXJ0YmVhdCB0ID1cbiAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgSGVhcnRiZWF0XG4gIDs7XG5cbiAgbGV0IG9mX3dyaXRlciBmIHQgPSBmIHQud3JpdGVyXG4gIGxldCBjYW5fc2VuZCA9IG9mX3dyaXRlciBXcml0ZXIuY2FuX3NlbmRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlID0gb2Zfd3JpdGVyIFdyaXRlci5ieXRlc190b193cml0ZVxuICBsZXQgYnl0ZXNfd3JpdHRlbiA9IG9mX3dyaXRlciBXcml0ZXIuYnl0ZXNfd3JpdHRlblxuICBsZXQgZmx1c2hlZCA9IG9mX3dyaXRlciBXcml0ZXIuZmx1c2hlZFxuICBsZXQgc3RvcHBlZCA9IG9mX3dyaXRlciBXcml0ZXIuc3RvcHBlZFxuICBsZXQgY2xvc2UgPSBvZl93cml0ZXIgV3JpdGVyLmNsb3NlXG5lbmRcblxubW9kdWxlIEhlYXJ0YmVhdF9jb25maWcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWVvdXQgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGZpZWxkc11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgIFslZXhwZWN0IHt8IDc0YTFmNDc1YmZiMmVlZDVhNTA5YmE3MWNkNzg5MWQyIHx9XVxuICA7O1xuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyh0aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAzMC4pXG4gICAgICAgID8oc2VuZF9ldmVyeSA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMTAuKVxuICAgICAgICAoKVxuICAgID1cbiAgICB7IHRpbWVvdXQ7IHNlbmRfZXZlcnkgfVxuICA7O1xuXG4gIG1vZHVsZSBSdW50aW1lID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbXV0YWJsZSB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHRvX3J1bnRpbWUgeyB0aW1lb3V0OyBzZW5kX2V2ZXJ5IH0gPSB7IFJ1bnRpbWUudGltZW91dDsgc2VuZF9ldmVyeSB9XG5lbmRcblxudHlwZSByZXNwb25zZV9oYW5kbGVyID1cbiAgTmF0MC50IFAuUmVzcG9uc2UudFxuICAtPiByZWFkX2J1ZmZlcjpCaWdzdHJpbmcudFxuICAtPiByZWFkX2J1ZmZlcl9wb3NfcmVmOmludCByZWZcbiAgLT4gWyBga2VlcFxuICAgICB8IGB3YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICB8IGByZW1vdmUgb2YgdW5pdCBScGNfcmVzdWx0LnRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICBdXG5cbnR5cGUgdCA9XG4gIHsgZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgOyBoZWFydGJlYXRfY29uZmlnIDogSGVhcnRiZWF0X2NvbmZpZy5SdW50aW1lLnRcbiAgOyBtdXRhYmxlIGhlYXJ0YmVhdF9jYWxsYmFja3MgOiAodW5pdCAtPiB1bml0KSBhcnJheVxuICA7IG11dGFibGUgbGFzdF9zZWVuX2FsaXZlIDogVGltZV9ucy50XG4gIDsgbWF4X21ldGFkYXRhX3NpemUgOiBCeXRlX3VuaXRzLnRcbiAgOyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFByb3RvY29sX3dyaXRlci50XG4gIDsgb3Blbl9xdWVyaWVzIDogKFAuUXVlcnlfaWQudCwgKHJlc3BvbnNlX2hhbmRsZXJbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IGNsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgSXZhci50XG4gIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAoKiBUaGVyZSdzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvbm5lY3Rpb25zIGFuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBpbnN0YW5jZXNcbiAgICAgKHRoZSBsYXR0ZXIgZGVwZW5kcyBvbiB0aGUgY29ubmVjdGlvbiBzdGF0ZSwgd2hpY2ggaXMgZ2l2ZW4gYWNjZXNzIHRvIHRoZSBjb25uZWN0aW9uXG4gICAgIHdoZW4gaXQgaXMgY3JlYXRlZCkuICopXG4gIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnQgU2V0X29uY2UudFxuICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UudFxuICA7IGhlYXJ0YmVhdF9ldmVudCA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LnQgU2V0X29uY2UudFxuICA7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IGludCBTZXRfb25jZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3RfaHVtX3dyaXRlciB0ID1cbiAgWyVzZXhwXG4gICAgeyBkZXNjcmlwdGlvbiA6IEluZm8udCA9IHQuZGVzY3JpcHRpb247IHdyaXRlciA6IFByb3RvY29sX3dyaXRlci53cml0ZXIgPSB0LndyaXRlciB9XVxuOztcblxubGV0IGRlc2NyaXB0aW9uIHQgPSB0LmRlc2NyaXB0aW9uXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbmxldCB3cml0ZXIgdCA9XG4gIGlmIGlzX2Nsb3NlZCB0IHx8IG5vdCAoUHJvdG9jb2xfd3JpdGVyLmNhbl9zZW5kIHQud3JpdGVyKVxuICB0aGVuIEVycm9yIGBDbG9zZWRcbiAgZWxzZSBPayB0LndyaXRlclxuOztcblxubGV0IGJ5dGVzX3RvX3dyaXRlIHQgPSBQcm90b2NvbF93cml0ZXIuYnl0ZXNfdG9fd3JpdGUgdC53cml0ZXJcbmxldCBieXRlc193cml0dGVuIHQgPSBQcm90b2NvbF93cml0ZXIuYnl0ZXNfd3JpdHRlbiB0LndyaXRlclxubGV0IGJ5dGVzX3JlYWQgdCA9IFJlYWRlci5ieXRlc19yZWFkIHQucmVhZGVyXG5sZXQgZmx1c2hlZCB0ID0gUHJvdG9jb2xfd3JpdGVyLmZsdXNoZWQgdC53cml0ZXJcblxubGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHQgLT4gJ2EgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gJ2EgPVxuICBmdW4gdCByIC0+XG4gIG1hdGNoIHIgd2l0aFxuICB8IFNlbnQgeCAtPiB4XG4gIHwgQ2xvc2VkIC0+XG4gICAgKCogQWxsIG9mIHRoZSBwbGFjZXMgd2UgY2FsbCBbaGFuZGxlX3NlbmRfcmVzdWx0XSBjaGVjayB3aGV0aGVyIFt0XSBpcyBjbG9zZWRcbiAgICAgICAodXN1YWxseSB2aWEgdGhlIFt3cml0ZXJdIGZ1bmN0aW9uIGFib3ZlKS4gVGhpcyBjaGVja3Mgd2hldGhlciBbdC53cml0ZXJdIGlzXG4gICAgICAgY2xvc2VkLCB3aGljaCBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgW3RdIGlzIGNsb3NlZC4gKilcbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlJQQyBjb25uZWN0aW9uIGdvdCBjbG9zZWQgd3JpdGVyXCIgdCBzZXhwX29mX3RfaHVtX3dyaXRlclxuICB8IE1lc3NhZ2VfdG9vX2JpZyBfIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAsIHsgcmVhc29uID0gKHIgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KTsgY29ubmVjdGlvbiA9ICh0IDogdF9odW1fd3JpdGVyKSB9XVxuOztcblxubGV0IGRpc3BhdGNoIHQgfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfihxdWVyeSA6IF8gUC5RdWVyeS50KSA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIGFzIHIgLT4gclxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBxdWVyeSA9XG4gICAgICBtYXRjaCBxdWVyeS5tZXRhZGF0YSB3aXRoXG4gICAgICB8IFNvbWUgbWV0YWRhdGEgLT5cbiAgICAgICAgeyBxdWVyeSB3aXRoXG4gICAgICAgICAgbWV0YWRhdGEgPVxuICAgICAgICAgICAgU29tZSAoU3RyaW5nLnByZWZpeCBtZXRhZGF0YSAoQnl0ZV91bml0cy5ieXRlc19pbnRfZXhuIHQubWF4X21ldGFkYXRhX3NpemUpKVxuICAgICAgICB9XG4gICAgICB8IE5vbmUgLT4gcXVlcnlcbiAgICBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OnF1ZXJ5LmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIFByb3RvY29sX3dyaXRlci5zZW5kX3F1ZXJ5IHdyaXRlciBxdWVyeSB+YmluX3dyaXRlcl9xdWVyeSB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICBPayAoKVxuOztcblxubGV0IG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICBkb19zZW5kXG4gICAgICA/bWV0YWRhdGFcbiAgICAgIHRcbiAgICAgIH50YWdcbiAgICAgIH52ZXJzaW9uXG4gICAgICBidWZcbiAgICAgIH5wb3NcbiAgICAgIH5sZW5cbiAgICAgIH5yZXNwb25zZV9oYW5kbGVyXG4gID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgYENsb3NlZFxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBpZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgbGV0IHF1ZXJ5IDogdW5pdCBQLlF1ZXJ5LnQgPSB7IHRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhOyBkYXRhID0gKCkgfSBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIGxldCByZXN1bHQgPVxuICAgICAgUHJvdG9jb2xfd3JpdGVyLnNlbmRfZXhwZXJ0X3F1ZXJ5XG4gICAgICAgIHdyaXRlclxuICAgICAgICBxdWVyeVxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgICB+c2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nOmRvX3NlbmRcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0XG4gICAgaW5cbiAgICBPayByZXN1bHRcbjs7XG5cbmxldCBkaXNwYXRjaF9iaWdzdHJpbmcgPSBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG5cbmxldCBzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmcgPVxuICBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG47O1xuXG5sZXQgaGFuZGxlX3Jlc3BvbnNlIHQgKHJlc3BvbnNlIDogXyBQLlJlc3BvbnNlLnQpIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQgd2l0aFxuICB8IE5vbmUgLT4gU3RvcCAoRXJyb3IgKFJwY19lcnJvci5Vbmtub3duX3F1ZXJ5X2lkIHJlc3BvbnNlLmlkKSlcbiAgfCBTb21lIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAobWF0Y2ggcmVzcG9uc2VfaGFuZGxlciByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgd2l0aFxuICAgICB8IGBrZWVwIC0+IENvbnRpbnVlXG4gICAgIHwgYHdhaXQgd2FpdCAtPiBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IHdhaXQgLT5cbiAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZDtcbiAgICAgICBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlIHJlbW92YWxfY2lyY3Vtc3RhbmNlcyAtPlxuICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkO1xuICAgICAgIChtYXRjaCByZW1vdmFsX2NpcmN1bXN0YW5jZXMgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IENvbnRpbnVlXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgfCBVbmltcGxlbWVudGVkX3JwYyBfIC0+IENvbnRpbnVlXG4gICAgICAgICAgIHwgQmluX2lvX2V4biBfXG4gICAgICAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgICAgICAgfCBXcml0ZV9lcnJvciBfXG4gICAgICAgICAgIHwgVW5jYXVnaHRfZXhuIF9cbiAgICAgICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIF8gLT4gU3RvcCAoRXJyb3IgZSkpKSlcbjs7XG5cbmxldCBoYW5kbGVfbXNnXG4gICAgICB0XG4gICAgICAobXNnIDogXyBQLk1lc3NhZ2UudClcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gID1cbiAgbWF0Y2ggbXNnIHdpdGhcbiAgfCBIZWFydGJlYXQgLT5cbiAgICBBcnJheS5pdGVyIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gICAgQ29udGludWVcbiAgfCBSZXNwb25zZSByZXNwb25zZSAtPiBoYW5kbGVfcmVzcG9uc2UgdCByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgfCBRdWVyeSBxdWVyeSAtPlxuICAgIGxldCBpbnN0YW5jZSA9IFNldF9vbmNlLmdldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpblxuICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5oYW5kbGVfcXVlcnlcbiAgICAgIGluc3RhbmNlXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICB+cXVlcnlcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgfCBRdWVyeV92MSBxdWVyeSAtPlxuICAgIGxldCBpbnN0YW5jZSA9IFNldF9vbmNlLmdldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpblxuICAgIGxldCBxdWVyeSA9IFAuUXVlcnkub2ZfdjEgcXVlcnkgaW5cbiAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuaGFuZGxlX3F1ZXJ5XG4gICAgICBpbnN0YW5jZVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG47O1xuXG5sZXQgY2xvc2VfcmVhc29uIHQgfm9uX2Nsb3NlID1cbiAgbGV0IHJlYXNvbiA9IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQgaW5cbiAgbWF0Y2ggb25fY2xvc2Ugd2l0aFxuICB8IGBzdGFydGVkIC0+IHJlYXNvblxuICB8IGBmaW5pc2hlZCAtPlxuICAgIGxldCViaW5kICgpID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWQgaW5cbiAgICByZWFzb25cbjs7XG5cbmxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcblxubGV0IGFkZF9oZWFydGJlYXRfY2FsbGJhY2sgdCBmID1cbiAgKCogQWRkaW5nIGhlYXJ0YmVhdCBjYWxsYmFja3MgaXMgcmVsYXRpdmVseSByYXJlLCBidXQgdGhlIGNhbGxiYWNrcyBhcmUgdHJpZ2dlcmVkIGEgbG90LlxuICAgICBUaGUgYXJyYXkgcmVwcmVzZW50YXRpb24gbWFrZXMgdGhlIGFkZGl0aW9uIHF1YWRyYXRpYyBmb3IgdGhlIHNha2Ugb2Yga2VlcGluZyB0aGVcbiAgICAgdHJpZ2dlcmluZyBjaGVhcC4gKilcbiAgdC5oZWFydGJlYXRfY2FsbGJhY2tzIDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQuaGVhcnRiZWF0X2NhbGxiYWNrc1xuOztcblxubGV0IHJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IHQgdGltZW91dCA9XG4gIHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0IDwtIHRpbWVvdXQ7XG4gIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlXG47O1xuXG5sZXQgbGFzdF9zZWVuX2FsaXZlIHQgPSB0Lmxhc3Rfc2Vlbl9hbGl2ZVxuXG5sZXQgYWJvcnRfaGVhcnRiZWF0aW5nIHQgPVxuICBPcHRpb24uaXRlciAoU2V0X29uY2UuZ2V0IHQuaGVhcnRiZWF0X2V2ZW50KSB+ZjooZnVuIGV2ZW50IC0+XG4gICAgbWF0Y2ggU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuYWJvcnQgdC50aW1lX3NvdXJjZSBldmVudCB3aXRoXG4gICAgfCBPayB8IFByZXZpb3VzbHlfdW5zY2hlZHVsZWQgLT4gKCkpXG47O1xuXG5sZXQgY2xvc2UgPyhzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2ZfaW50X3NlYyA1KSB+cmVhc29uIHQgPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBhYm9ydF9oZWFydGJlYXRpbmcgdDtcbiAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkIHJlYXNvbjtcbiAgICAobWF0Y2ggU2V0X29uY2UuZ2V0IHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIHdpdGhcbiAgICAgfCBOb25lIC0+IERlZmVycmVkLnVuaXRcbiAgICAgfCBTb21lIGluc3RhbmNlIC0+XG4gICAgICAgbGV0IGZsdXNoZWQgPSBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuZmx1c2ggaW5zdGFuY2UgaW5cbiAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGZsdXNoZWRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5zdG9wIGluc3RhbmNlO1xuICAgICAgICAgZmx1c2hlZClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdFxuICAgICAgICAgICAgIFsgZmx1c2hlZFxuICAgICAgICAgICAgIDsgUHJvdG9jb2xfd3JpdGVyLnN0b3BwZWQgdC53cml0ZXJcbiAgICAgICAgICAgICA7IFRpbWVfc291cmNlLmFmdGVyXG4gICAgICAgICAgICAgICAgIChUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91cyB0LnRpbWVfc291cmNlKVxuICAgICAgICAgICAgICAgICBzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXRcbiAgICAgICAgICAgICBdXG4gICAgICAgICBpblxuICAgICAgICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnN0b3AgaW5zdGFuY2UpKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBQcm90b2NvbF93cml0ZXIuY2xvc2UgdC53cml0ZXJcbiAgICA+Pj4gZnVuICgpIC0+IFJlYWRlci5jbG9zZSB0LnJlYWRlciA+Pj4gZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKTtcbiAgY2xvc2VfZmluaXNoZWQgdFxuOztcblxubGV0IG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID1cbiAgbGV0IGYgYnVmIH5wb3MgfmxlbjpfIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudCA9XG4gICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgbGV0IG5hdDBfbXNnID0gUC5NZXNzYWdlLmJpbl9yZWFkX25hdDBfdCBidWYgfnBvc19yZWYgaW5cbiAgICBtYXRjaFxuICAgICAgaGFuZGxlX21zZ1xuICAgICAgICB0XG4gICAgICAgIG5hdDBfbXNnXG4gICAgICAgIH5yZWFkX2J1ZmZlcjpidWZcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6cG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgd2l0aFxuICAgIHwgQ29udGludWUgLT4gQ29udGludWVcbiAgICB8IFdhaXQgXyBhcyByZXMgLT4gcmVzXG4gICAgfCBTdG9wIHJlc3VsdCAtPlxuICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgIGxldCBtc2cgPSBcIlJwYyBtZXNzYWdlIGhhbmRsaW5nIGxvb3Agc3RvcHBlZFwiIGluXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gSW5mby5vZl9zdHJpbmcgbXNnXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIEluZm8uY3JlYXRlXG4gICAgICAgICAgICBtc2dcbiAgICAgICAgICAgIGVcbiAgICAgICAgICAgIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgIFwiQ29ubmVjdGlvbi5vbl9tZXNzYWdlIHJlc3VsdGVkIGluIENvbm5lY3Rpb25fY2xvc2VkIGVycm9yLiBUaGlzIGlzIFxcXG4gICAgICAgICAgICAgICAgICB3ZWlyZC5cIl0pKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb24pO1xuICAgICAgU3RvcCByZWFzb25cbiAgaW5cbiAgU3RhZ2VkLnN0YWdlIGZcbjs7XG5cbmxldCBoZWFydGJlYXRfbm93IHQgPVxuICBsZXQgc2luY2VfbGFzdF9oZWFydGJlYXQgPVxuICAgIFRpbWVfbnMuZGlmZiAoU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2UpIHQubGFzdF9zZWVuX2FsaXZlXG4gIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oID4gKSBzaW5jZV9sYXN0X2hlYXJ0YmVhdCB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICB0aGVuIChcbiAgICBsZXQgcmVhc29uICgpID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgIVwiTm8gaGVhcnRiZWF0cyByZWNlaXZlZCBmb3IgJXtzZXhwOlRpbWVfbnMuU3Bhbi50fS5cIlxuICAgICAgICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl90aHVuayByZWFzb24pKSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICAgIHwgRXJyb3IgYENsb3NlZCAtPiAoKVxuICAgIHwgT2sgd3JpdGVyIC0+IFByb3RvY29sX3dyaXRlci5zZW5kX2hlYXJ0YmVhdCB3cml0ZXIgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQpXG47O1xuXG5sZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMzAuXG5cbmxldCBjbGVhbnVwIHQgfnJlYXNvbiBleG4gPVxuICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KTtcbiAgaWYgbm90IChIYXNodGJsLmlzX2VtcHR5IHQub3Blbl9xdWVyaWVzKVxuICB0aGVuIChcbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIHwgUnBjX2Vycm9yLlJwYyAoZXJyb3IsIChfIDogSW5mby50KSkgLT4gZXJyb3JcbiAgICAgIHwgZXhuIC0+IFVuY2F1Z2h0X2V4biAoRXhuLnNleHBfb2ZfdCBleG4pXG4gICAgaW5cbiAgICAoKiBjbGVhbiB1cCBvcGVuIHN0cmVhbWluZyByZXNwb25zZXMgKilcbiAgICAoKiBhbiB1bmZvcnR1bmF0ZSBoYWNrOyBvayBiZWNhdXNlIHRoZSByZXNwb25zZSBoYW5kbGVyIHdpbGwgaGF2ZSBub3RoaW5nXG4gICAgICAgdG8gcmVhZCBmb2xsb3dpbmcgYSByZXNwb25zZSB3aGVyZSBbZGF0YV0gaXMgYW4gZXJyb3IgKilcbiAgICBsZXQgZHVtbXlfYnVmZmVyID0gQmlnc3RyaW5nLmNyZWF0ZSAxIGluXG4gICAgbGV0IGR1bW15X3JlZiA9IHJlZiAwIGluXG4gICAgSGFzaHRibC5pdGVyaSB0Lm9wZW5fcXVlcmllcyB+ZjooZnVuIH5rZXk6cXVlcnlfaWQgfmRhdGE6cmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChyZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcjpkdW1teV9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6ZHVtbXlfcmVmXG4gICAgICAgICAgIHsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9IEVycm9yIGVycm9yIH0pKTtcbiAgICBIYXNodGJsLmNsZWFyIHQub3Blbl9xdWVyaWVzO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBkdW1teV9idWZmZXIpXG47O1xuXG5sZXQgc2NoZWR1bGVfaGVhcnRiZWF0cyB0ID1cbiAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2U7XG4gIGxldCBoZWFydGJlYXRfZnJvbV9ub3dfb24gPVxuICAgICgqIFthdF9pbnRlcnZhbHNdIHdpbGwgc2NoZWR1bGUgdGhlIGZpcnN0IGhlYXJ0YmVhdCB0aGUgZmlyc3QgdGltZSB0aGUgdGltZV9zb3VyY2UgaXNcbiAgICAgICBhZHZhbmNlZCAqKVxuICAgIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmF0X2ludGVydmFsc1xuICAgICAgdC50aW1lX3NvdXJjZVxuICAgICAgdC5oZWFydGJlYXRfY29uZmlnLnNlbmRfZXZlcnlcbiAgICAgIChmdW4gKCkgLT4gaGVhcnRiZWF0X25vdyB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaGVhcnRiZWF0X2V2ZW50IFslaGVyZV0gaGVhcnRiZWF0X2Zyb21fbm93X29uXG47O1xuXG5sZXQgcnVuX2FmdGVyX2hhbmRzaGFrZVxuICAgICAgdFxuICAgICAgd3JpdGVyXG4gICAgICB+bmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfndyaXRlcl9tb25pdG9yX2V4bnNcbiAgPVxuICBQcm90b2NvbF93cml0ZXIuc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiB0LndyaXRlciBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb247XG4gIGxldCBpbnN0YW5jZSA9XG4gICAgSW1wbGVtZW50YXRpb25zLmluc3RhbnRpYXRlXG4gICAgICBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIH53cml0ZXJcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZTooY29ubmVjdGlvbl9zdGF0ZSB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5zdGFuY2U7XG4gIGxldCBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSB+bmFtZTpcIlJQQyBjbG9zZSBjb25uZWN0aW9uIG1vbml0b3JcIiAoKSBpblxuICBNb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnMgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIH5mOihmdW4gZXhuIC0+XG4gICAgbGV0IHJlYXNvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBpbXBsZW1lbnRhdGlvblwiIChleG4gOiBFeG4udCldXG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KSk7XG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY29ubmVjdGlvbiBsb29wXCIgKCkgaW5cbiAgbGV0IHJlYXNvbiBuYW1lIGV4biA9XG4gICAgZXhuLCBJbmZvLnRhZyAoSW5mby5vZl9leG4gZXhuKSB+dGFnOihcImV4biByYWlzZWQgaW4gUlBDIGNvbm5lY3Rpb24gXCIgXiBuYW1lKVxuICBpblxuICBTdHJlYW0uaXRlclxuICAgIChTdHJlYW0uaW50ZXJsZWF2ZVxuICAgICAgIChTdHJlYW0ub2ZfbGlzdFxuICAgICAgICAgIFsgU3RyZWFtLm1hcCB+ZjoocmVhc29uIFwibG9vcFwiKSAoTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcilcbiAgICAgICAgICA7IFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcIldyaXRlci50XCIpIHdyaXRlcl9tb25pdG9yX2V4bnNcbiAgICAgICAgICBdKSlcbiAgICB+ZjooZnVuIChleG4sIHJlYXNvbikgLT4gY2xlYW51cCB0IGV4biB+cmVhc29uKTtcbiAgd2l0aGluIH5tb25pdG9yIChmdW4gKCkgLT5cbiAgICBzY2hlZHVsZV9oZWFydGJlYXRzIHQ7XG4gICAgUmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgdC5yZWFkZXJcbiAgICAgIH5vbl9tZXNzYWdlOihTdGFnZWQudW5zdGFnZSAob25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpKVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDooZnVuICgpIC0+XG4gICAgICAgIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgT2sgcmVhc29uIC0+IGNsZWFudXAgdCB+cmVhc29uIChScGNfZXJyb3IuUnBjIChDb25uZWN0aW9uX2Nsb3NlZCwgdC5kZXNjcmlwdGlvbikpXG4gICAgKCogVGhlIHByb3RvY29sIGlzIHN1Y2ggdGhhdCByaWdodCBub3csIHRoZSBvbmx5IG91dGNvbWUgb2YgdGhlIG90aGVyIHNpZGUgY2xvc2luZyB0aGVcbiAgICAgICBjb25uZWN0aW9uIG5vcm1hbGx5IGlzIHRoYXQgd2UgZ2V0IGFuIGVvZi4gKilcbiAgICB8IEVycm9yIChgRW9mIHwgYENsb3NlZCkgLT5cbiAgICAgIGNsZWFudXBcbiAgICAgICAgdFxuICAgICAgICB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkVPRiBvciBjb25uZWN0aW9uIGNsb3NlZFwiKVxuICAgICAgICAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKSlcbjs7XG5cbmxldCBkb19oYW5kc2hha2UgdCB3cml0ZXIgfmhhbmRzaGFrZV90aW1lb3V0IH5oZWFkZXIgPVxuICBpZiBub3QgKFdyaXRlci5jYW5fc2VuZCB3cml0ZXIpXG4gIHRoZW4gcmV0dXJuIChFcnJvciBIYW5kc2hha2VfZXJyb3IuVHJhbnNwb3J0X2Nsb3NlZClcbiAgZWxzZSAoXG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3Qgd3JpdGVyIEhlYWRlci5iaW5fdC53cml0ZXIgaGVhZGVyIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0O1xuICAgICgqIElmIHdlIHVzZSBbbWF4X2Nvbm5lY3Rpb25zXSBpbiB0aGUgc2VydmVyLCB0aGVuIHRoaXMgcmVhZCBtYXkganVzdCBoYW5nIHVudGlsIHRoZVxuICAgICAgIHNlcnZlciBzdGFydHMgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyAod2hpY2ggY291bGQgYmUgbmV2ZXIpLiAgVGhhdCBpcyB3aHkgYVxuICAgICAgIHRpbWVvdXQgaXMgdXNlZCAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5ydW46YE5vd1xuICAgICAgICAoZnVuICgpIC0+IFJlYWRlci5yZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90IHQucmVhZGVyIEhlYWRlci5iaW5fdC5yZWFkZXIpXG4gICAgaW5cbiAgICBtYXRjaCVtYXBcbiAgICAgIFRpbWVfc291cmNlLndpdGhfdGltZW91dFxuICAgICAgICAoVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXMgdC50aW1lX3NvdXJjZSlcbiAgICAgICAgaGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgICAgcmVzdWx0XG4gICAgd2l0aFxuICAgIHwgYFRpbWVvdXQgLT5cbiAgICAgICgqIFRoZXJlJ3MgYSBwZW5kaW5nIHJlYWQsIHRoZSByZWFkZXIgaXMgYmFzaWNhbGx5IHVzZWxlc3Mgbm93LCBzbyB3ZSBjbGVhbiBpdFxuICAgICAgICAgdXAuICopXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkhhbmRzaGFrZSB0aW1lb3V0XCIpKTtcbiAgICAgIEVycm9yIEhhbmRzaGFrZV9lcnJvci5UaW1lb3V0XG4gICAgfCBgUmVzdWx0IChFcnJvciBleG4pIC0+XG4gICAgICBsZXQgcmVhc29uID0gSW5mby5vZl9zdHJpbmcgXCJbUmVhZGVyLnJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3RdIHJhaXNlZFwiIGluXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgIEVycm9yIChSZWFkaW5nX2hlYWRlcl9mYWlsZWQgKEVycm9yLm9mX2V4biBleG4pKVxuICAgIHwgYFJlc3VsdCAoT2sgKEVycm9yIGBFb2YpKSAtPiBFcnJvciBFb2ZcbiAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgQ2xvc2VkKSkgLT4gRXJyb3IgVHJhbnNwb3J0X2Nsb3NlZFxuICAgIHwgYFJlc3VsdCAoT2sgKE9rIHBlZXIpKSAtPiBIZWFkZXIubmVnb3RpYXRlIH51czpoZWFkZXIgfnBlZXIpXG47O1xuXG5sZXQgY29udGFpbnNfbWFnaWNfcHJlZml4ID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIuY29udGFpbnNfbWFnaWNfcHJlZml4IH5wcm90b2NvbDpScGNcbmxldCBkZWZhdWx0X2hhbmRzaGFrZV9oZWFkZXIgPSBIZWFkZXIudjJcblxubGV0IGhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5ID1cbiAgVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZTpcImFzeW5jIHJwYyBoYW5kc2hha2UgaGVhZGVyIG92ZXJyaWRlXCIgWyVzZXhwX29mOiBIZWFkZXIudF1cbjs7XG5cbmxldCBnZXRfaGFuZHNoYWtlX2hlYWRlciAoKSA9XG4gIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuZmluZF9sb2NhbCBoYW5kc2hha2VfaGVhZGVyX292ZXJyaWRlX2tleVxuICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6ZGVmYXVsdF9oYW5kc2hha2VfaGVhZGVyXG47O1xuXG5sZXQgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgPyhoYW5kc2hha2VfdGltZW91dCA9IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQpXG4gICAgICA/KGhlYXJ0YmVhdF9jb25maWcgPSBIZWFydGJlYXRfY29uZmlnLmNyZWF0ZSAoKSlcbiAgICAgID8obWF4X21ldGFkYXRhX3NpemUgPSBCeXRlX3VuaXRzLm9mX2tpbG9ieXRlcyAxLilcbiAgICAgID8oZGVzY3JpcHRpb24gPSBJbmZvLm9mX3N0cmluZyBcIjxjcmVhdGVkLWRpcmVjdGx5PlwiKVxuICAgICAgPyh0aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAoeyByZWFkZXI7IHdyaXRlciB9IDogVHJhbnNwb3J0LnQpXG4gID1cbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9XG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICB8IE5vbmUgLT4gSW1wbGVtZW50YXRpb25zLm51bGwgKClcbiAgICB8IFNvbWUgcyAtPiBzXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IGRlc2NyaXB0aW9uXG4gICAgOyBoZWFydGJlYXRfY29uZmlnID0gSGVhcnRiZWF0X2NvbmZpZy50b19ydW50aW1lIGhlYXJ0YmVhdF9jb25maWdcbiAgICA7IGhlYXJ0YmVhdF9jYWxsYmFja3MgPSBbfHxdXG4gICAgOyBsYXN0X3NlZW5fYWxpdmUgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdGltZV9zb3VyY2VcbiAgICA7IG1heF9tZXRhZGF0YV9zaXplXG4gICAgOyByZWFkZXJcbiAgICA7IHdyaXRlciA9IFByb3RvY29sX3dyaXRlci5jcmVhdGVfYmVmb3JlX25lZ290aWF0aW9uIHdyaXRlclxuICAgIDsgb3Blbl9xdWVyaWVzID0gSGFzaHRibC5Qb2x5LmNyZWF0ZSB+c2l6ZToxMCAoKVxuICAgIDsgY2xvc2Vfc3RhcnRlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBjbG9zZV9maW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBpbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICA7IHRpbWVfc291cmNlXG4gICAgOyBoZWFydGJlYXRfZXZlbnQgPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICA7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA9IFNldF9vbmNlLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgbGV0IHdyaXRlcl9tb25pdG9yX2V4bnMgPSBNb25pdG9yLmRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSAoV3JpdGVyLm1vbml0b3Igd3JpdGVyKSBpblxuICB1cG9uIChXcml0ZXIuc3RvcHBlZCB3cml0ZXIpIChmdW4gKCkgLT5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJQQyB0cmFuc3BvcnQgc3RvcHBlZFwiKSkpO1xuICBsZXQgaGVhZGVyID0gZ2V0X2hhbmRzaGFrZV9oZWFkZXIgKCkgaW5cbiAgbWF0Y2glbWFwIGRvX2hhbmRzaGFrZSB0IHdyaXRlciB+aGFuZHNoYWtlX3RpbWVvdXQgfmhlYWRlciB3aXRoXG4gIHwgT2sgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIC0+XG4gICAgcnVuX2FmdGVyX2hhbmRzaGFrZVxuICAgICAgdFxuICAgICAgd3JpdGVyXG4gICAgICB+bmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfndyaXRlcl9tb25pdG9yX2V4bnM7XG4gICAgT2sgdFxuICB8IEVycm9yIGVycm9yIC0+XG4gICAgRXJyb3IgKEhhbmRzaGFrZV9lcnJvci50b19leG4gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246ZGVzY3JpcHRpb24gZXJyb3IpXG47O1xuXG5sZXQgd2l0aF9jbG9zZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5kaXNwYXRjaF9xdWVyaWVzXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IGhhbmRsZV9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGZcbiAgICB8IGBSYWlzZSAtPiByYWlzZVxuICBpblxuICBsZXQlYmluZCB0ID1cbiAgICBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVycm9yIGUgLT5cbiAgICBsZXQlYmluZCAoKSA9IFRyYW5zcG9ydC5jbG9zZSB0cmFuc3BvcnQgaW5cbiAgICBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIGVcbiAgfCBPayB0IC0+XG4gICAgTW9uaXRvci5wcm90ZWN0XG4gICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgfnJlc3Q6YExvZ1xuICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICBjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiUnBjLkNvbm5lY3Rpb24ud2l0aF9jbG9zZSBmaW5pc2hlZFwiKSlcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIGxldCViaW5kIHJlc3VsdCA9IGRpc3BhdGNoX3F1ZXJpZXMgdCBpblxuICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgIHwgU29tZSBfIC0+IGNsb3NlX2ZpbmlzaGVkIHRcbiAgICAgICAgIGluXG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgc2VydmVyX3dpdGhfY2xvc2VcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IG9uX2hhbmRzaGFrZV9lcnJvciA9XG4gICAgbWF0Y2ggb25faGFuZHNoYWtlX2Vycm9yIHdpdGhcbiAgICB8IGBDYWxsIGYgLT4gYENhbGwgZlxuICAgIHwgYFJhaXNlIC0+IGBSYWlzZVxuICAgIHwgYElnbm9yZSAtPiBgQ2FsbCAoZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbiAgaW5cbiAgd2l0aF9jbG9zZVxuICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgP2Rlc2NyaXB0aW9uXG4gICAgP3RpbWVfc291cmNlXG4gICAgdHJhbnNwb3J0XG4gICAgfmltcGxlbWVudGF0aW9uc1xuICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICAgIH5kaXNwYXRjaF9xdWVyaWVzOihmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuOztcblxubGV0IGNsb3NlXG4gICAgICA/c3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0XG4gICAgICA/KHJlYXNvbiA9IEluZm8ub2Zfc3RyaW5nIFwiUnBjLkNvbm5lY3Rpb24uY2xvc2VcIilcbiAgICAgIHRcbiAgPVxuICBjbG9zZSA/c3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0IH5yZWFzb24gdFxuOztcblxubW9kdWxlIENsaWVudF9pbXBsZW1lbnRhdGlvbnMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3MgdCA9XG4gICAgeyBjb25uZWN0aW9uX3N0YXRlIDogdCAtPiAnc1xuICAgIDsgaW1wbGVtZW50YXRpb25zIDogJ3MgSW1wbGVtZW50YXRpb25zLnRcbiAgICB9XG5cbiAgbGV0IG51bGwgKCkgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA9IChmdW4gXyAtPiAoKSk7IGltcGxlbWVudGF0aW9ucyA9IEltcGxlbWVudGF0aW9ucy5udWxsICgpIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhlYWRlciA9IEhlYWRlclxuXG4gIGxldCB3aXRoX2FzeW5jX2V4ZWN1dGlvbl9jb250ZXh0IH5jb250ZXh0IH5mID1cbiAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLndpdGhfbG9jYWwgaGFuZHNoYWtlX2hlYWRlcl9vdmVycmlkZV9rZXkgKFNvbWUgY29udGV4dCkgfmZcbiAgOztcbmVuZFxuIiwiXG5vcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFV0aWxcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uXG5tb2R1bGUgT25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uXG5tb2R1bGUgSW1wbGVtZW50YXRpb24gPSBJbXBsZW1lbnRhdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9ucyA9IEltcGxlbWVudGF0aW9uc1xubW9kdWxlIFRyYW5zcG9ydCA9IFRyYW5zcG9ydFxubW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj49fiApID0gUmVzdWx0LiggPj49IClcbmxldCAoID4+fH4gKSA9IFJlc3VsdC4oID4+fCApXG5cbm1vZHVsZSBScGNfY29tbW9uID0gc3RydWN0XG4gIGxldCBkaXNwYXRjaF9yYXcnXG4gICAgICAgID9tZXRhZGF0YVxuICAgICAgICBjb25uXG4gICAgICAgIH50YWdcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5xdWVyeV9pZFxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgcXVlcnkgPSB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZCA9IHF1ZXJ5X2lkOyBtZXRhZGF0YTsgZGF0YSA9IHF1ZXJ5IH0gaW5cbiAgICBtYXRjaCBDb25uZWN0aW9uLmRpc3BhdGNoIGNvbm4gfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIFJwY19lcnJvci5Db25uZWN0aW9uX2Nsb3NlZFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9yYXcgP21ldGFkYXRhIGNvbm4gfnRhZyB+dmVyc2lvbiB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgfnF1ZXJ5X2lkIH5mID1cbiAgICBsZXQgcmVzcG9uc2VfaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgKG1hdGNoXG4gICAgICAgZGlzcGF0Y2hfcmF3J1xuICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICBjb25uXG4gICAgICAgICB+dGFnXG4gICAgICAgICB+dmVyc2lvblxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnF1ZXJ5X2lkXG4gICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSAoZiByZXNwb25zZV9pdmFyKSlcbiAgICAgd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IEl2YXIuZmlsbCByZXNwb25zZV9pdmFyIGUpO1xuICAgIEl2YXIucmVhZCByZXNwb25zZV9pdmFyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3Jlc3BvbnNlIDogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHJlc3BvbnNlX3R5cGVfaWQgOiAncmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlID1cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCByZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpyZXNwb25zZVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX3Jlc3BvbnNlXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyByZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5xdWVyeV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LnJlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5iaW5fcmVzcG9uc2VcblxuICBsZXQgc2hhcGVzIHQgPVxuICAgIFJwY19zaGFwZXMuUnBjIHsgcXVlcnkgPSB0LmJpbl9xdWVyeS5zaGFwZTsgcmVzcG9uc2UgPSB0LmJpbl9yZXNwb25zZS5zaGFwZSB9XG4gIDs7XG5cbiAgbGV0IGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBxdWVyeSlcbiAgOztcblxuICBsZXQgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHF1ZXJ5ID1cbiAgICBFYWdlcl9kZWZlcnJlZC5tYXAgKGYgc3RhdGUgcXVlcnkpIH5mOihmdW4gYSAtPiBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIGEpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgUnBjXG4gICAgICAgICAgKCB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICAsIHQuYmluX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICAgICwgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmXG4gICAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50JyA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgUnBjXG4gICAgICAgICAgKCB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICAsIHQuYmluX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICAgICwgYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmXG4gICAgICAgICAgLCBCbG9ja2luZyApXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCByZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChyZXNwb25zZSA6IF8gUC5SZXNwb25zZS50KVxuICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICA9XG4gICAgICBsZXQgcmVzcG9uc2UgPVxuICAgICAgICByZXNwb25zZS5kYXRhXG4gICAgICAgID4+PX4gZnVuIGxlbiAtPlxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIHQuYmluX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgSXZhci5maWxsIGl2YXIgcmVzcG9uc2U7XG4gICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICBpblxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXdcbiAgICAgID9tZXRhZGF0YVxuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9xdWVyeS53cml0ZXJcbiAgICAgIH5xdWVyeVxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+ZjpyZXNwb25zZV9oYW5kbGVyXG4gIDs7XG5cbiAgbGV0IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdCA9XG4gICAgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgcmVzdWx0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOihkZXNjcmlwdGlvbiB0KVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2V4biA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbW9kdWxlIFJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9ucy5FeHBlcnQuUnBjX3Jlc3BvbmRlclxuXG4gICAgbGV0IG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBkb19kaXNwYXRjaFxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlX2hhbmRsZXIgOiBDb25uZWN0aW9uLnJlc3BvbnNlX2hhbmRsZXIgPVxuICAgICAgICBmdW4gcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICBoYW5kbGVfZXJyb3JcbiAgICAgICAgICAgICAgKEVycm9yLnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdFxuICAgICAgICAgICAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICAgICAgICAgICAgZSkpO1xuICAgICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSAobGVuIDogTmF0MC50IDo+IGludCkgaW5cbiAgICAgICAgICAgIGxldCBkID0gaGFuZGxlX3Jlc3BvbnNlIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlbiBpblxuICAgICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGByZW1vdmUgKE9rICgpKSBlbHNlIGByZW1vdmVfYW5kX3dhaXQgZFxuICAgICAgaW5cbiAgICAgIGRvX2Rpc3BhdGNoXG4gICAgICAgID9tZXRhZGF0YVxuICAgICAgICBjb25uXG4gICAgICAgIH50YWc6KFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZylcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgYnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSByZXNwb25zZV9oYW5kbGVyKVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2hcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgZCAtPiBgRmx1c2hlZCBkXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcblxuICAgIGxldCBkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcmVzcG9uZGVyIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgRWFnZXJfZGVmZXJyZWQubWFwIChmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuKSB+ZjooZnVuIGEgLT5cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCBhKVxuICAgIDs7XG5cbiAgICBsZXQgYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuID1cbiAgICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgcmVzcG9uZGVyIGJ1ZiB+cG9zIH5sZW4pXG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudCcgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgUnBjX3NoYXBlcy5Vbmtub3duXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24nXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgUnBjX3NoYXBlcy5Vbmtub3duXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gIHR5cGUgJ21zZyB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fbXNnIDogJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IG1zZ190eXBlX2lkIDogJ21zZyBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2cgPVxuICAgIGxldCBtc2dfdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTptc2dcIl0gc2V4cF9vZl9vcGFxdWUgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZTsgdmVyc2lvbjsgYmluX21zZzsgbXNnX3R5cGVfaWQgfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9IFJwY19zaGFwZXMuT25lX3dheSB7IG1zZyA9IHQuYmluX21zZy5zaGFwZSB9XG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IG1zZ190eXBlX2lkIHQgPSB0Lm1zZ190eXBlX2lkXG5cbiAgbGV0IG5vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgRWFnZXJfZGVmZXJyZWQucmV0dXJuIChPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIHN0YXRlIHF1ZXJ5KSlcbiAgOztcblxuICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb24pIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IE9uZV93YXkgKHQuYmluX21zZy5yZWFkZXIsIG5vX2F1dGhvcml6YXRpb24gZilcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCcgP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3JhdydcbiAgICAgID9tZXRhZGF0YVxuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9tc2cud3JpdGVyXG4gICAgICB+cXVlcnlcbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICA7O1xuXG4gIGxldCBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHQgPVxuICAgIFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgIHJlc3VsdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjooZGVzY3JpcHRpb24gdClcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfD4gZnVuIHJlc3VsdCAtPiBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZXhuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAoZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSlcbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbGV0IG5vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBidWYgfnBvcyB+bGVuID1cbiAgICAgIEVhZ2VyX2RlZmVycmVkLnJldHVybiAoT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBidWYgfnBvcyB+bGVuKSlcbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBPbmVfd2F5X2V4cGVydCAobm9fYXV0aG9yaXphdGlvbiBmKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH1cbiAgICAgICAgICBjb25uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgeyB0YWc7IHZlcnNpb247IGJpbl9tc2cgPSBfOyBtc2dfdHlwZV9pZCA9IF8gfVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnRhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICB3aXRoXG4gICAgICB8IE9rIGZsdXNoZWQgLT4gYEZsdXNoZWQgZmx1c2hlZFxuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICB8IENsb3NlZF9yZW1vdGVseVxuICAgIHwgRXJyb3Igb2YgRXJyb3IudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICBbJWV4cGVjdCB7fCA3NDhjOGJmNDUwMmQwOTc4ZDAwN2JmN2Y5NmE3ZWY3ZiB8fV1cbiAgOztcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCA9XG4gICAgICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICAgICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICAgICAgfCBFcnJvciBvZiBFcnJvci5TdGFibGUuVjIudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgNzQ4YzhiZjQ1MDJkMDk3OGQwMDdiZjdmOTZhN2VmN2YgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG4oKiB0aGUgYmFzaXMgb2YgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBQaXBlX3JwYyBhbmQgU3RhdGVfcnBjICopXG5tb2R1bGUgU3RyZWFtaW5nX3JwYyA9IHN0cnVjdFxuICBtb2R1bGUgSW5pdGlhbF9tZXNzYWdlID0gUC5TdHJlYW1faW5pdGlhbF9tZXNzYWdlXG5cbiAgdHlwZSAoJ3F1ZXJ5LCAnaW5pdGlhbF9yZXNwb25zZSwgJ3VwZGF0ZV9yZXNwb25zZSwgJ2Vycm9yX3Jlc3BvbnNlKSB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fcXVlcnkgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5faW5pdGlhbF9yZXNwb25zZSA6ICdpbml0aWFsX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3VwZGF0ZV9yZXNwb25zZSA6ICd1cGRhdGVfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgOiAnZXJyb3JfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgOyBxdWVyeV90eXBlX2lkIDogJ3F1ZXJ5IFR5cGVfZXF1YWwuSWQudFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIDogJ2luaXRpYWxfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCA6ICd1cGRhdGVfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyBlcnJvcl9yZXNwb25zZV90eXBlX2lkIDogJ2Vycm9yX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlXG4gICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayA9XG4gICAgICBtYXRjaCBjbGllbnRfcHVzaGVzX2JhY2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlfVwiXVxuICAgICAgICBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2V9XCJdXG4gICAgICAgIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06ZXJyb3JcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgOyBiaW5fdXBkYXRlX3Jlc3BvbnNlXG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgPSBiaW5fZXJyb3JcbiAgICA7IGNsaWVudF9wdXNoZXNfYmFja1xuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkXG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICAgIDsgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV9pbml0aWFsX21lc3NhZ2UgeCA9XG4gICAgeyBJbml0aWFsX21lc3NhZ2UudW51c2VkX3F1ZXJ5X2lkID0gUC5VbnVzZWRfcXVlcnlfaWQudDsgaW5pdGlhbCA9IHggfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9XG4gICAgUnBjX3NoYXBlcy5TdHJlYW1pbmdfcnBjXG4gICAgICB7IHF1ZXJ5ID0gdC5iaW5fcXVlcnkuc2hhcGVcbiAgICAgIDsgaW5pdGlhbF9yZXNwb25zZSA9IHQuYmluX2luaXRpYWxfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIDsgdXBkYXRlX3Jlc3BvbnNlID0gdC5iaW5fdXBkYXRlX3Jlc3BvbnNlLnNoYXBlXG4gICAgICA7IGVycm9yID0gdC5iaW5fZXJyb3JfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2dlbiB0ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSBpbXBsID1cbiAgICBsZXQgYmluX2luaXRfd3JpdGVyID1cbiAgICAgIEluaXRpYWxfbWVzc2FnZS5iaW5fd3JpdGVyX3RcbiAgICAgICAgdC5iaW5faW5pdGlhbF9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgdC5iaW5fZXJyb3JfcmVzcG9uc2Uud3JpdGVyXG4gICAgaW5cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgU3RyZWFtaW5nX3JwY1xuICAgICAgICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA9IHQuYmluX3F1ZXJ5LnJlYWRlclxuICAgICAgICAgIDsgYmluX2luaXRfd3JpdGVyXG4gICAgICAgICAgOyBiaW5fdXBkYXRlX3dyaXRlciA9IHQuYmluX3VwZGF0ZV9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgICA7IGltcGxcbiAgICAgICAgICB9XG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBsZXQgZiBjIHF1ZXJ5ID1cbiAgICAgIG1hdGNoJW1hcCBmIGMgcXVlcnkgd2l0aFxuICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIChFcnJvciBlcnIpKSlcbiAgICAgIHwgT2sgKGluaXRpYWwsIHBpcGUpIC0+IEF1dGhvcml6ZWQgKE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoT2sgaW5pdGlhbCksIHBpcGUpKVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiB0ID9vbl9leGNlcHRpb24gKFBpcGUgZilcbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSB3cml0ZXIgPVxuICAgICAgbWF0Y2glbWFwIGYgYyBxdWVyeSB3cml0ZXIgd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4gT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpKVxuICAgICAgfCBPayBfIGFzIHggLT4gQXV0aG9yaXplZCAoT2sgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpKVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiA/b25fZXhjZXB0aW9uIHQgKERpcmVjdCBmKVxuICA7O1xuXG4gIGxldCBhYm9ydCB0IGNvbm4gaWQgPVxuICAgIGxldCBxdWVyeSA9XG4gICAgICB7IFAuUXVlcnkudGFnID0gdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb247IGlkOyBtZXRhZGF0YSA9IE5vbmU7IGRhdGEgPSBgQWJvcnQgfVxuICAgIGluXG4gICAgaWdub3JlXG4gICAgICAoQ29ubmVjdGlvbi5kaXNwYXRjaFxuICAgICAgICAgY29ublxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnk6UC5TdHJlYW1fcXVlcnkuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgIDogKHVuaXQsIFsgYENsb3NlZCBdKSBSZXN1bHQudClcbiAgOztcblxuICBtb2R1bGUgUGlwZV9tZXNzYWdlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVXBkYXRlIG9mICdhXG4gICAgICB8IENsb3NlZCBvZiBbIGBCeV9yZW1vdGVfc2lkZSB8IGBFcnJvciBvZiBFcnJvci50IF1cbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcmVzcG9uc2UgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBDb250aW51ZVxuICAgICAgfCBXYWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9tZXRhZGF0YSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICA7IGNsb3NlX3JlYXNvbiA6IFBpcGVfY2xvc2VfcmVhc29uLnQgRGVmZXJyZWQudFxuICAgICAgfVxuXG4gICAgbGV0IGlkIHQgPSB0LnF1ZXJ5X2lkXG4gICAgbGV0IGNsb3NlX3JlYXNvbiB0ID0gdC5jbG9zZV9yZWFzb25cbiAgZW5kXG5cbiAgbW9kdWxlIFJlc3BvbnNlX3N0YXRlID0gc3RydWN0XG4gICAgbW9kdWxlIFVwZGF0ZV9oYW5kbGVyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBQaXBlX21lc3NhZ2UudCAtPiBQaXBlX3Jlc3BvbnNlLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbml0aWFsID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ3EsICdpLCAndSwgJ2UsICdleHRyYSkgdCA9XG4gICAgICAgIHsgcnBjIDogKCdxLCAnaSwgJ3UsICdlKSB0XG4gICAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgICAgOyBtYWtlX3VwZGF0ZV9oYW5kbGVyIDogdW5pdCAtPiAnZXh0cmEgKiAndSBVcGRhdGVfaGFuZGxlci50XG4gICAgICAgIDsgaXZhciA6IChQLlF1ZXJ5X2lkLnQgKiAnaSAqICdleHRyYSwgJ2UpIFJlc3VsdC50IFJwY19yZXN1bHQudCBJdmFyLnRcbiAgICAgICAgOyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIDogKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIEluaXRpYWwudCAtPiAndSB0XG4gICAgICAgIHwgV3JpdGluZ191cGRhdGVzIG9mICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyICogJ2EgVXBkYXRlX2hhbmRsZXIudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudCB9XG4gIGVuZFxuXG4gIGxldCByZWFkX2Vycm9yXG4gICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb25cbiAgICAgICAgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpXG4gICAgICAgIGVyclxuICAgID1cbiAgICBsZXQgY29yZV9lcnIgPVxuICAgICAgRXJyb3IudF9vZl9zZXhwIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gZXJyKVxuICAgIGluXG4gICAgaWdub3JlIChoYW5kbGVyIChDbG9zZWQgKGBFcnJvciBjb3JlX2VycikpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChFcnJvciBlcnIpXG4gIDs7XG5cbiAgbGV0IGVvZiAoaGFuZGxlciA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudCkgPVxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIGBCeV9yZW1vdGVfc2lkZSkgOiBQaXBlX3Jlc3BvbnNlLnQpO1xuICAgIGByZW1vdmUgKE9rICgpKVxuICA7O1xuXG4gIGxldCByZXNwb25zZV9oYW5kbGVyIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaW5pdGlhbF9zdGF0ZVxuICAgIDogQ29ubmVjdGlvbi5yZXNwb25zZV9oYW5kbGVyXG4gICAgPVxuICAgIGxldCBvcGVuIFJlc3BvbnNlX3N0YXRlIGluXG4gICAgbGV0IHN0YXRlID0geyBzdGF0ZSA9IFdhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9zdGF0ZSB9IGluXG4gICAgZnVuIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiAtPlxuICAgICAgbWF0Y2ggc3RhdGUuc3RhdGUgd2l0aFxuICAgICAgfCBXcml0aW5nX3VwZGF0ZXMgKGJpbl9yZWFkZXJfdXBkYXRlLCBoYW5kbGVyKSAtPlxuICAgICAgICAobWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBgRW9mIC0+IDBcbiAgICAgICAgICAgICAgICAgfCBgT2sgKGxlbiA6IE5hdDAudCkgLT4gKGxlbiA6PiBpbnQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgIHwgT2sgYEVvZiAtPiBlb2YgaGFuZGxlclxuICAgICAgICAgICAgfCBPayAoYE9rIGxlbikgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICAgICBiaW5fcmVhZGVyX3VwZGF0ZVxuICAgICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgICAgICAgfCBPayBkYXRhIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBoYW5kbGVyIChVcGRhdGUgZGF0YSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDb250aW51ZSAtPiBga2VlcFxuICAgICAgICAgICAgICAgICAgfCBXYWl0IGQgLT4gYHdhaXQgZCkpKSlcbiAgICAgIHwgU3RhdGUuV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSBpbml0aWFsX2hhbmRsZXIgLT5cbiAgICAgICAgKCogV2UgbmV2ZXIgdXNlIFtgcmVtb3ZlIChFcnJvciBfKV0gaGVyZSwgc2luY2UgdGhhdCBpbmRpY2F0ZXMgdGhhdCB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBzaG91bGQgYmUgY2xvc2VkLCBhbmQgdGhlc2UgYXJlIFwibm9ybWFsXCIgZXJyb3JzLiAoSW4gY29udHJhc3QsIHRoZVxuICAgICAgICAgICBlcnJvcnMgd2UgZ2V0IGluIHRoZSBbV3JpdGluZ191cGRhdGVzX3RvX3BpcGVdIGNhc2UgaW5kaWNhdGUgbW9yZSBzZXJpb3VzXG4gICAgICAgICAgIHByb2JsZW1zLikgSW5zdGVhZCwgd2UganVzdCBwdXQgZXJyb3JzIGluIFtpdmFyXS4gKilcbiAgICAgICAgbGV0IGVycm9yIGVyciA9XG4gICAgICAgICAgSXZhci5maWxsIGluaXRpYWxfaGFuZGxlci5pdmFyIChFcnJvciBlcnIpO1xuICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICB8IEVycm9yIGVyciAtPiBlcnJvciBlcnJcbiAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgIGxldCBpbml0aWFsID1cbiAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgKEluaXRpYWxfbWVzc2FnZS5iaW5fcmVhZGVyX3RcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5ycGMuYmluX2luaXRpYWxfcmVzcG9uc2UucmVhZGVyXG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9lcnJvcl9yZXNwb25zZS5yZWFkZXIpXG4gICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyBpbml0aWFsX3Jlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggaW5pdGlhbCB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnJvciBlcnJcbiAgICAgICAgICAgIHwgT2sgaW5pdGlhbF9tc2cgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGluaXRpYWxfbXNnLmluaXRpYWwgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgICAgICAgSXZhci5maWxsIGluaXRpYWxfaGFuZGxlci5pdmFyIChPayAoRXJyb3IgZXJyKSk7XG4gICAgICAgICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICAgICAgICAgfCBPayBpbml0aWFsIC0+XG4gICAgICAgICAgICAgICAgIGxldCBleHRyYSwgaGFuZGxlciA9IGluaXRpYWxfaGFuZGxlci5tYWtlX3VwZGF0ZV9oYW5kbGVyICgpIGluXG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbFxuICAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5pdmFyXG4gICAgICAgICAgICAgICAgICAgKE9rIChPayAoaW5pdGlhbF9oYW5kbGVyLnF1ZXJ5X2lkLCBpbml0aWFsLCBleHRyYSkpKTtcbiAgICAgICAgICAgICAgICAgc3RhdGUuc3RhdGVcbiAgICAgICAgICAgICAgICAgPC0gV3JpdGluZ191cGRhdGVzXG4gICAgICAgICAgICAgICAgICAgICAgKGluaXRpYWxfaGFuZGxlci5ycGMuYmluX3VwZGF0ZV9yZXNwb25zZS5yZWFkZXIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICBga2VlcCkpKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9nZW4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSBtYWtlX3VwZGF0ZV9oYW5kbGVyID1cbiAgICBsZXQgYmluX3dyaXRlcl9xdWVyeSA9XG4gICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aFxuICAgICAgICAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3R5cGVfY2xhc3MgdC5iaW5fcXVlcnkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnkgPSBgUXVlcnkgcXVlcnkgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICA/bWV0YWRhdGFcbiAgICAgIGNvbm5cbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgfnF1ZXJ5XG4gICAgICB+ZjooZnVuIGl2YXIgLT5cbiAgICAgICAgcmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgIDogSW5mby50IG9wdGlvbildKVxuICAgICAgICAgIHsgcnBjID0gdDsgcXVlcnlfaWQ7IGNvbm5lY3Rpb24gPSBjb25uOyBpdmFyOyBtYWtlX3VwZGF0ZV9oYW5kbGVyIH0pXG4gICAgPj58IFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb24gfVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbWF0Y2glbWFwIGRpc3BhdGNoX2dlbiA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT4gKCksIGYpIHdpdGhcbiAgICB8IChFcnJvciBfIHwgT2sgKEVycm9yIF8pKSBhcyBlIC0+IGVcbiAgICB8IE9rIChPayAoaWQsIGluaXQsICgpKSkgLT4gT2sgKE9rIChpZCwgaW5pdCkpXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZGlzcGF0Y2hfZ2VuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgcGlwZV9yLCBwaXBlX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBTZXQgYSBzbWFsbCBidWZmZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVzaGJhY2sgZXZlbnRzICopXG4gICAgICAgIFBpcGUuc2V0X3NpemVfYnVkZ2V0IHBpcGVfdyAxMDA7XG4gICAgICAgIGxldCBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIGxldCBmIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFVwZGF0ZSBkYXRhIC0+XG4gICAgICAgICAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHBpcGVfdylcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgcGlwZV93IGRhdGE7XG4gICAgICAgICAgICAgIGlmIHQuY2xpZW50X3B1c2hlc19iYWNrICYmIFBpcGUubGVuZ3RoIHBpcGVfdyA+PSBQaXBlLnNpemVfYnVkZ2V0IHBpcGVfd1xuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgV2FpdFxuICAgICAgICAgICAgICAgICAgKG1hdGNoJW1hcCBQaXBlLmRvd25zdHJlYW1fZmx1c2hlZCBwaXBlX3cgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT4gKCkpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUpXG4gICAgICAgICAgICBlbHNlIENvbnRpbnVlXG4gICAgICAgICAgfCBDbG9zZWQgcmVhc29uIC0+XG4gICAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHlcbiAgICAgICAgICAgICAgY2xvc2VfcmVhc29uXG4gICAgICAgICAgICAgIChtYXRjaCByZWFzb24gd2l0aFxuICAgICAgICAgICAgICAgfCBgQnlfcmVtb3RlX3NpZGUgLT4gQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgICAgICAgICB8IGBFcnJvciBlcnIgLT4gRXJyb3IgZXJyKTtcbiAgICAgICAgICAgIFBpcGUuY2xvc2UgcGlwZV93O1xuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgKHBpcGVfciwgY2xvc2VfcmVhc29uKSwgZilcbiAgICB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAocGlwZV9yLCBjbG9zZV9yZWFzb24pKSkgLT5cbiAgICAgIHVwb24gKFBpcGUuY2xvc2VkIHBpcGVfcikgKGZ1biAoKSAtPlxuICAgICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCBjbG9zZV9yZWFzb24pXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFib3J0IHQgY29ubiBpZDtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY2xvc2VfcmVhc29uIENsb3NlZF9sb2NhbGx5KSk7XG4gICAgICBsZXQgcGlwZV9tZXRhZGF0YSA6IFBpcGVfbWV0YWRhdGEudCA9XG4gICAgICAgIHsgcXVlcnlfaWQgPSBpZDsgY2xvc2VfcmVhc29uID0gSXZhci5yZWFkIGNsb3NlX3JlYXNvbiB9XG4gICAgICBpblxuICAgICAgT2sgKE9rIChwaXBlX21ldGFkYXRhLCBpbml0LCBwaXBlX3IpKVxuICA7O1xuZW5kXG5cbigqIEEgUGlwZV9ycGMgaXMgbGlrZSBhIFN0cmVhbWluZ19ycGMsIGV4Y2VwdCB3ZSBkb24ndCBjYXJlIGFib3V0IGluaXRpYWwgc3RhdGUgLSB0aHVzXG4gICBpdCBpcyByZXN0cmljdGVkIHRvIHVuaXQgYW5kIHVsdGltYXRlbHkgaWdub3JlZCAqKVxubW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlLCAnZXJyb3IpIHQgPSAoJ3F1ZXJ5LCB1bml0LCAncmVzcG9uc2UsICdlcnJvcikgU3RyZWFtaW5nX3JwYy50XG5cbiAgbW9kdWxlIElkID0gUC5RdWVyeV9pZFxuICBtb2R1bGUgTWV0YWRhdGEgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGFcblxuICBsZXQgY3JlYXRlID9jbGllbnRfcHVzaGVzX2JhY2sgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIH5iaW5fZXJyb3IgKCkgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpVbml0LmJpbl90XG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fcmVzcG9uc2VcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgICgqIFtpbml0aWFsX3Jlc3BvbnNlXSBkb2Vzbid0IHNob3cgdXAgaW4gW1BpcGVfcnBjXSdzIHNpZ25hdHVyZSxcbiAgICAgICAgIHNvIHRoZSB0eXBlLWlkIGNyZWF0ZWQgdXNpbmcgW2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXSBpc1xuICAgICAgICAgdW5yZWFjaGFibGUuICopXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJcIlxuICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2U6XCJyZXNwb25zZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgbGV0IGJpbl9lcnJvciB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9lcnJvcl9yZXNwb25zZVxuICBsZXQgY2xpZW50X3B1c2hlc19iYWNrIHQgPSB0LlN0cmVhbWluZ19ycGMuY2xpZW50X3B1c2hlc19iYWNrXG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IChmdW4gYSBxdWVyeSAtPlxuICAgICAgbGV0JW1hcCB4ID0gZiBhIHF1ZXJ5IGluXG4gICAgICB4ID4+fH4gZnVuIHggLT4gKCksIHgpXG4gIDs7XG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgIG1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJ1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCByZWZcblxuICAgICAgICBsZXQgY3JlYXRlID8oaW5pdGlhbF9zaXplID0gNDA5NikgKCkgPVxuICAgICAgICAgIGlmIGluaXRpYWxfc2l6ZSA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5CdWZmZXIuY3JlYXRlIGdvdCBuZWdhdGl2ZSBidWZmZXIgXFxcbiAgICAgICAgICAgICAgIHNpemVcIlxuICAgICAgICAgICAgICBpbml0aWFsX3NpemVcbiAgICAgICAgICAgICAgSW50LnNleHBfb2ZfdDtcbiAgICAgICAgICByZWYgKEJpZ3N0cmluZy5jcmVhdGUgaW5pdGlhbF9zaXplKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICAgIG1vZHVsZSBUID0gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC5Hcm91cC50ID1cbiAgICAgICAgeyBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgICB9XG5cbiAgICAgIGFuZCAnYSBjb21wb25lbnQgPSAnYSBULkdyb3VwLmNvbXBvbmVudCA9XG4gICAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIFQuZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZSA/YnVmZmVyICgpID1cbiAgICAgICAgbGV0IGJ1ZmZlciA9XG4gICAgICAgICAgbWF0Y2ggYnVmZmVyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgaW5cbiAgICAgICAgeyBjb21wb25lbnRzID0gQmFnLmNyZWF0ZSAoKTsgY29tcG9uZW50c19ieV9pZCA9IElkLlRhYmxlLmNyZWF0ZSAoKTsgYnVmZmVyIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggdCA9IEJhZy5sZW5ndGggdC5jb21wb25lbnRzXG5cbiAgICAgIGxldCBhZGRfZXhuIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlclxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IGNhbm5vdCBhZGQgYSBjbG9zZWQgZGlyZWN0IFxcXG4gICAgICAgICAgICAgc3RyZWFtIHdyaXRlclwiO1xuICAgICAgICBpZiBIYXNodGJsLm1lbSB0LmNvbXBvbmVudHNfYnlfaWQgd3JpdGVyLmlkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkX2V4bjogdHJ5aW5nIHRvIGFkZCBhIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXIgdGhhdCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGdyb3VwXCI7XG4gICAgICAgIChtYXRjaCBCYWcuY2hvb3NlIHQuY29tcG9uZW50cyB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICAgbGV0IG9uZSA9IEJhZy5FbHQudmFsdWUgb25lIGluXG4gICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAoYmluX3dyaXRlciBvbmUpIChiaW5fd3JpdGVyIHdyaXRlcikpXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkOiBjYW5ub3QgYWRkIGEgZGlyZWN0IHN0cmVhbSBcXFxuICAgICAgICAgICAgICAgIHdyaXRlciB3aXRoIGEgZGlmZmVyZW50IGJpbl93cml0ZXJcIik7XG4gICAgICAgIGxldCB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA9IEJhZy5hZGQgdC5jb21wb25lbnRzIHdyaXRlciBpblxuICAgICAgICBsZXQgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgPVxuICAgICAgICAgIEJhZy5hZGQgd3JpdGVyLmdyb3VwcyB7IGdyb3VwID0gdDsgZWxlbWVudF9pbl9ncm91cCA9IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIH1cbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5hZGRfZXhuXG4gICAgICAgICAgdC5jb21wb25lbnRzX2J5X2lkXG4gICAgICAgICAgfmtleTp3cml0ZXIuaWRcbiAgICAgICAgICB+ZGF0YTp7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwOyBncm91cF9lbGVtZW50X2luX3dyaXRlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVtb3ZlIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfSAtPlxuICAgICAgICAgIEJhZy5yZW1vdmUgdC5jb21wb25lbnRzIHdyaXRlcl9lbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgIEJhZy5yZW1vdmUgd3JpdGVyLmdyb3VwcyBncm91cF9lbGVtZW50X2luX3dyaXRlclxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xpc3QgdCA9IEJhZy50b19saXN0IHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgZmx1c2hlZF9vcl9jbG9zZWQgdCA9XG4gICAgICAgIHRvX2xpc3QgdFxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHQgLT4gRGVmZXJyZWQuYW55X3VuaXQgWyBmbHVzaGVkIHQ7IGNsb3NlZCB0IF0pXG4gICAgICAgIHw+IERlZmVycmVkLmFsbF91bml0XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmx1c2hlZCB0ID0gZmx1c2hlZF9vcl9jbG9zZWQgdFxuXG4gICAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIEJhZy5pdGVyIHQuY29tcG9uZW50cyB+ZjooZnVuIGRpcmVjdF9zdHJlYW1fd3JpdGVyIC0+XG4gICAgICAgICAgICAoKiBXcml0ZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlaXIgZ3JvdXBzIHdoZW5cbiAgICAgICAgICAgICAgIGNsb3NlZCwgc28gW2BDbG9zZWRdIGhlcmUganVzdCBtZWFucyB0aGF0IHRoZSByZW1vdmFsIGRpZG4ndCBoYXBwZW4geWV0LiAqKVxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayBkaXJlY3Rfc3RyZWFtX3dyaXRlciB+YnVmIH5wb3MgfmxlblxuICAgICAgICAgICAgICAgOiBbIGBPayB8IGBDbG9zZWQgXSkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyaXRlIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbjtcbiAgICAgICAgICBmbHVzaGVkX29yX2Nsb3NlZCB0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgICAgbWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG9uZSAtPlxuICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgIGxldCB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9IGJpbl93cml0ZXIgb25lIGluXG4gICAgICAgICAgbGV0IGJ1ZmZlciA9ICEodC5idWZmZXIpIGluXG4gICAgICAgICAgKCogT3B0aW1pc3RpYyBmaXJzdCB0cnkgKilcbiAgICAgICAgICAobWF0Y2ggd3JpdGUgYnVmZmVyIH5wb3M6MCB4IHdpdGhcbiAgICAgICAgICAgfCBsZW4gLT4gRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlblxuICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgICAgKCogSXQncyBsaWtlbHkgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgICAgICAgIFtCaW5fcHJvdC5Db21tb24uQnVmZmVyX3Nob3J0XSBvbmx5LCBob3dldmVyIHdlIGNhbid0IGVhc2lseSBlbmZvcmNlIHRoYXRcbiAgICAgICAgICAgICAgICBjdXN0b20gYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICAgICAgICAgbGV0IGxlbiA9IHNpemUgeCBpblxuICAgICAgICAgICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgKEludC5jZWlsX3BvdzIgbGVuKSBpblxuICAgICAgICAgICAgIHQuYnVmZmVyIDo9IGJ1ZmZlcjtcbiAgICAgICAgICAgICBsZXQgbGVuID0gd3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICAgICAgICAgRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSB0IHggPVxuICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeDtcbiAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIFN0cmVhbWluZ19ycGMuaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZlxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChtZXRhZGF0YSwgKCksIHBpcGVfcikgLT4gcGlwZV9yLCBtZXRhZGF0YVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBQaXBlX3JwY19mYWlsZWRcblxuICBsZXQgZGlzcGF0Y2hfZXhuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBycGNfZXJyb3IgLT4gcmFpc2UgKEVycm9yLnRvX2V4biBycGNfZXJyb3IpXG4gICAgfCBPayAoRXJyb3IgXykgLT4gcmFpc2UgUGlwZV9ycGNfZmFpbGVkXG4gICAgfCBPayAoT2sgcGlwZV9hbmRfaWQpIC0+IHBpcGVfYW5kX2lkXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXNzYWdlXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5QaXBlX3Jlc3BvbnNlXG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2hfaXRlciA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IH5mIGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChpZCwgKCkpIC0+IGlkXG4gIDs7XG5cbiAgbGV0IGFib3J0ID0gU3RyZWFtaW5nX3JwYy5hYm9ydFxuICBsZXQgY2xvc2VfcmVhc29uID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhLmNsb3NlX3JlYXNvblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAnc3RhdGUsICd1cGRhdGUsICdlcnJvcikgdCA9XG4gICAgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICgpXG4gICAgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpiaW5fc3RhdGVcbiAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlOmJpbl91cGRhdGVcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZTpcInN0YXRlXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwidXBkYXRlXCJcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9xdWVyeVxuICBsZXQgYmluX3N0YXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgbGV0IGJpbl91cGRhdGUgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGltcGxlbWVudCA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50XG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID0gU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnRfZGlyZWN0XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgaW5cbiAgICByZXNwb25zZVxuICAgID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsIHN0YXRlLCB1cGRhdGVfcikgLT4gc3RhdGUsIHVwZGF0ZV9yLCBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBhYm9ydCA9IFN0cmVhbWluZ19ycGMuYWJvcnRcbiAgbGV0IGNsb3NlX3JlYXNvbiA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YS5jbG9zZV9yZWFzb25cbiAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayB0ID0gdC5TdHJlYW1pbmdfcnBjLmNsaWVudF9wdXNoZXNfYmFja1xuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgc3RhdGVfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgdXBkYXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbmVuZFxuXG5tb2R1bGUgQW55ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBScGMgOiAoJ3EsICdyKSBScGMudCAtPiB0XG4gICAgfCBQaXBlIDogKCdxLCAnciwgJ2UpIFBpcGVfcnBjLnQgLT4gdFxuICAgIHwgU3RhdGUgOiAoJ3EsICdzLCAndSwgJ2UpIFN0YXRlX3JwYy50IC0+IHRcbiAgICB8IE9uZV93YXkgOiAnbSBPbmVfd2F5LnQgLT4gdFxuXG4gIGxldCBkZXNjcmlwdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBScGMgcnBjIC0+IFJwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFBpcGUgcnBjIC0+IFBpcGVfcnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgU3RhdGUgcnBjIC0+IFN0YXRlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IE9uZV93YXkgcnBjIC0+IE9uZV93YXkuZGVzY3JpcHRpb24gcnBjXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvbi5TdGFibGVcbiAgbW9kdWxlIFBpcGVfY2xvc2VfcmVhc29uID0gUGlwZV9jbG9zZV9yZWFzb24uU3RhYmxlXG4gIG1vZHVsZSBScGMgPSBScGNcbiAgbW9kdWxlIFBpcGVfcnBjID0gUGlwZV9ycGNcbiAgbW9kdWxlIFN0YXRlX3JwYyA9IFN0YXRlX3JwY1xuICBtb2R1bGUgT25lX3dheSA9IE9uZV93YXlcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBScGNcblxubW9kdWxlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBQaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG4gIHR5cGUgJ2lucHV0IHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgY29udmVydCA6ICdpbnB1dCAtPiAnb3V0cHV0XG4gICAgICAgIDsgd3JpdGVyIDogJ291dHB1dCBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgIH1cbiAgICAgICAgLT4gJ2lucHV0IHRcblxuICBsZXQgY3JlYXRlIH5jb252ZXJ0IH53cml0ZXIgPSBUIHsgY29udmVydDsgd3JpdGVyIH1cblxuICBsZXQgd3JpdGUgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlIHdyaXRlciAoY29udmVydCBpbnB1dClcbiAgOztcblxuICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayAoVCB7IGNvbnZlcnQ7IHdyaXRlciB9KSBpbnB1dCA9XG4gICAgRGlyZWN0X3N0cmVhbV93cml0ZXIud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IGNsb3NlIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlIHdyaXRlclxuICBsZXQgaXNfY2xvc2VkIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmlzX2Nsb3NlZCB3cml0ZXJcbiAgbGV0IGNsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZWQgd3JpdGVyXG5lbmRcblxubGV0IGZhaWxlZF9jb252ZXJzaW9uIHggPVxuICBFcnJvci5jcmVhdGVcbiAgICBcInR5cGUgY29udmVyc2lvbiBmYWlsdXJlXCJcbiAgICB4XG4gICAgWyVzZXhwX29mOlxuICAgICAgWyBgTXNnIHwgYFF1ZXJ5IHwgYFJlc3BvbnNlIHwgYEVycm9yIHwgYFN0YXRlIHwgYFVwZGF0ZSBdXG4gICAgICAqIFsgYFJwYyBvZiBzdHJpbmcgXVxuICAgICAgKiBbIGBWZXJzaW9uIG9mIGludCBdXG4gICAgICAqIGV4bl1cbjs7XG5cbmxldCBtdWx0aXBsZV9yZWdpc3RyYXRpb25zIHggPVxuICBFcnJvci5jcmVhdGVcbiAgICBcIm11bHRpcGxlIHJwYyByZWdpc3RyYXRpb25zXCJcbiAgICB4XG4gICAgWyVzZXhwX29mOiBbIGBScGMgb2Ygc3RyaW5nIF0gKiBbIGBWZXJzaW9uIG9mIGludCBdXVxuOztcblxubGV0IHVua25vd25fdmVyc2lvbiB4ID0gRXJyb3IuY3JlYXRlIFwidW5rbm93biBycGMgdmVyc2lvblwiIHggWyVzZXhwX29mOiBzdHJpbmcgKiBpbnRdXG5cbm1vZHVsZSBDYWxsZWVfY29udmVydHMgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaW1wbGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyID1cbiAgICAgICAgeyBhZGFwdCA6XG4gICAgICAgICAgICAnc3RhdGUuICgnc3RhdGUgLT4gJ3F1ZXJ5IC0+ICdyZXNwb25zZSBEZWZlcnJlZC50KSAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udFxuICAgICAgICB9XG5cbiAgICAgIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgYWRhcHRlcnMgOiAoJ3F1ZXJ5LCAncmVzcG9uc2UpIGFkYXB0ZXIgSW50Lk1hcC50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+bmFtZSA9IHsgbmFtZTsgYWRhcHRlcnMgPSBJbnQuTWFwLmVtcHR5IH1cblxuICAgICAgbGV0IHdyYXBfZXJyb3IgZm4gc3RhdGUgcXVlcnkgPVxuICAgICAgICBtYXRjaCVtYXAgZm4gc3RhdGUgcXVlcnkgd2l0aFxuICAgICAgICB8IE9rIHZhbHVlIC0+IE9rIHZhbHVlXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkIHsgbmFtZTsgYWRhcHRlcnMgfSBycGMgYWRhcHRlciA9XG4gICAgICAgIGlmIFN0cmluZy4oIDw+ICkgbmFtZSAoUnBjLm5hbWUgcnBjKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgIFwiUnBjIG5hbWVzIGRvbid0IGFncmVlXCJcbiAgICAgICAgICAgIChuYW1lLCBScGMubmFtZSBycGMpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ11cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHZlcnNpb24gPSBScGMudmVyc2lvbiBycGMgaW5cbiAgICAgICAgICBtYXRjaCBNYXAuZmluZCBhZGFwdGVycyB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgXCJWZXJzaW9uIGFscmVhZHkgZXhpc3RzXCJcbiAgICAgICAgICAgICAgKG5hbWUsIHZlcnNpb24pXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGFkYXB0ZXJzID0gTWFwLnNldCBhZGFwdGVycyB+a2V5OnZlcnNpb24gfmRhdGE6YWRhcHRlciBpblxuICAgICAgICAgICAgT2sgeyBuYW1lOyBhZGFwdGVycyB9KVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbiB0IG9sZF9ycGMgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgYWRhcHQgZm4gPVxuICAgICAgICAgIGxldCBhZGFwdGVkIHN0YXRlIG9sZF9xdWVyeSA9XG4gICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IGZuIHN0YXRlICh1cGdyYWRlIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGRvd25ncmFkZSByZXN1bHRcbiAgICAgICAgICBpblxuICAgICAgICAgIFJwYy5pbXBsZW1lbnQgb2xkX3JwYyBhZGFwdGVkXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IG9sZF9ycGMgdXBncmFkZV9vcl9lcnJvciBkb3duZ3JhZGVfb3JfZXJyb3IgPVxuICAgICAgICBsZXQgYWRhcHQgZm4gPVxuICAgICAgICAgIGxldCBhZGFwdGVkIHN0YXRlIG9sZF9xdWVyeSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBEZWZlcnJlZC5SZXN1bHQuTGV0X3N5bnRheCBpblxuICAgICAgICAgICAgbGV0JWJpbmQgcXVlcnkgPSBEZWZlcnJlZC5yZXR1cm4gKHVwZ3JhZGVfb3JfZXJyb3Igb2xkX3F1ZXJ5KSBpblxuICAgICAgICAgICAgbGV0JWJpbmQgcmVzcG9uc2UgPSBmbiBzdGF0ZSBxdWVyeSBpblxuICAgICAgICAgICAgRGVmZXJyZWQucmV0dXJuIChkb3duZ3JhZGVfb3JfZXJyb3IgcmVzcG9uc2UpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgKHdyYXBfZXJyb3IgYWRhcHRlZClcbiAgICAgICAgaW5cbiAgICAgICAgYWRkIHQgb2xkX3JwYyB7IGFkYXB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfdmVyc2lvbiB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uIHQgcnBjIHVwZ3JhZGUgZG93bmdyYWRlXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWU6dC5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSBpblxuICAgICAgICBhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgcnBjIHVwZ3JhZGUgZG93bmdyYWRlXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50IHQgZm4gPSBNYXAuZGF0YSB0LmFkYXB0ZXJzIHw+IExpc3QubWFwIH5mOihmdW4geyBhZGFwdCB9IC0+IGFkYXB0IGZuKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBxdWVyeSAtPiByZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwucXVlcnkgLT4gTW9kZWwucmVzcG9uc2UgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoaW50LCBpbXBsZW1lbnRlciAqIEFueS50KSBIYXNodGJsLnQgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgX3JwYykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2VcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgUnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgICBsZXQlbWFwIHIgPSBmIHMgfnZlcnNpb24gcSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWwgcikgd2l0aFxuICAgICAgICAgICAgICAgICB8IE9rIHIgLT4gclxuICAgICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAocmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIGltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICAgKCdzXG4gICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgIC0+IChNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgICAgICgnc1xuICAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgIC0+ICh1bml0LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGltcGwgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gKFBpcGUgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIChEaXJlY3QgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfbW9kZWwgOiBNb2RlbC5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kgOiBWZXJzaW9uX3NoYXJlZCkgKENvbnZlcnQgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X2VsdCA6IChNb2RlbC5yZXNwb25zZSAtPiBWZXJzaW9uX2kucmVzcG9uc2UpIE9yX2Vycm9yLnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfcGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICBNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcbiAgICAgICAgb3BlbiBDb252ZXJ0XG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgUGlwZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fcmVzcG9uc2VcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICB8IHEgLT4gcVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kuZXJyb3Jfb2ZfbW9kZWwgZXJyb3Igd2l0aFxuICAgICAgICAgIHwgZXJyb3IgLT4gRXJyb3IgZXJyb3JcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbCA9XG4gICAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgICAgfCBQaXBlIGYgLT5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2glYmluZCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd2l0aFxuICAgICAgICAgICAgICB8IE9rIHBpcGUgLT5cbiAgICAgICAgICAgICAgICBNb25pdG9yLmhhbmRsZV9lcnJvcnNcbiAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gcmV0dXJuIChPayAoY29udmVydF9waXBlIHBpcGUpKSlcbiAgICAgICAgICAgICAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiByZXR1cm4gKHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpKVxuICAgICAgICAgIHwgRGlyZWN0IGYgLT5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgICAgUGlwZV9ycGMuaW1wbGVtZW50X2RpcmVjdCBycGMgKGZ1biBzIHEgZHN3IC0+XG4gICAgICAgICAgICAgIGxldCB3cml0ZXIgPVxuICAgICAgICAgICAgICAgIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci5jcmVhdGUgfmNvbnZlcnQ6Y29udmVydF9lbHQgfndyaXRlcjpkc3dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2glbWFwIGYgcyB+dmVyc2lvbiAod3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxKSB3cml0ZXIgd2l0aFxuICAgICAgICAgICAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvcilcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuUGlwZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudCAtPiByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID1cbiAgICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiY2Fubm90IHVzZSBkaXJlY3QgaW50ZXJmYWNlIHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgcGlwZSA9IFBpcGUubWFwIHBpcGUgfmY6VmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSBzdGF0ZVxuICAgICAgdHlwZSB1cGRhdGVcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAoc3RhdGUgKiB1cGRhdGUgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID1cbiAgICAgICAgJ3NcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgLT4gKE1vZGVsLnN0YXRlICogTW9kZWwudXBkYXRlIFBpcGUuUmVhZGVyLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIHZhbCBzdGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnN0YXRlIC0+IHN0YXRlXG4gICAgICAgIHZhbCBlcnJvcl9vZl9tb2RlbCA6IE1vZGVsLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuc3RhdGVcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFN0YXRlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFN0YXRlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCViaW5kIGYgcyB+dmVyc2lvbiBxIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayAobW9kZWxfc3RhdGUsIHBpcGUpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5zdGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IHN0YXRlIC0+IHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE9rIChzdGF0ZSwgVmVyc2lvbl9pLnVwZGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgVXBkYXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5TdGF0ZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX21vZGVsIDogTW9kZWwudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsIF9zdGF0ZSBwaXBlID0gUGlwZS5tYXAgfmY6dXBkYXRlX29mX21vZGVsIHBpcGVcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIG1zZ1xuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBtc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwubXNnIC0+IHVuaXRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1vZGVsX29mX21zZyA6IG1zZyAtPiBNb2RlbC5tc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgT25lX3dheS5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9tc2cgcSkgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYE1zZywgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT4gZiBzIH52ZXJzaW9uIHEpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWVudSA9IHN0cnVjdFxuICAoKioqKioqKioqKioqKioqKiogc29tZSBwcm9oaWJpdGlvbnMgZm9yIHRoaXMgbW9kdWxlICoqKioqKioqKioqKioqKioqKlxuXG4gICAgICAgICAgICAgICAgICAgICAoMSkgISEhIG5ldmVyIHBydW5lIG9sZCB2ZXJzaW9ucyBvZiB0aGlzIHJwYyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgSXQgaXMgdG9vIGZ1bmRhbWVudGFsIHRvIHRoZSB3b3JraW5ncyBvZiB2YXJpb3VzIHZlcnNpb25pbmdcbiAgICAgICAgICAgICAgICAgICAgIHNjaGVtZXMgYW5kIGl0IHByb2JhYmx5IHdvbid0IGNoYW5nZSB2ZXJ5IG11Y2ggYW55d2F5LlxuXG4gICAgICAgICAgICAgICAgICAgICAoMikgISEhIG9ubHkgZXZlciBzYXkgXCJ3aXRoIGJpbl9pb1wiIG9uIGJ1aWx0LWluIG9jYW1sIHR5cGVzICEhIVxuXG4gICAgICAgICAgICAgICAgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiB0eXBlcyBhcmUgaW50LCBsaXN0LCBzdHJpbmcsIGV0Yy5cblxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0byBwcm90ZWN0IG91cnNlbHZlcyBhZ2FpbnN0IGNoYW5nZXMgdG8gQ29yZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLCBmb3IgZXhhbXBsZS5cblxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgIGxldCBuYW1lID0gXCJfX1ZlcnNpb25lZF9ycGMuTWVudVwiXG5cbiAgICB0eXBlIHF1ZXJ5ID0gdW5pdFxuICAgIHR5cGUgcmVzcG9uc2UgPSBEZXNjcmlwdGlvbi50IGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gIGxldCBycGNfbmFtZSA9IE1vZGVsLm5hbWVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbGV0IHZlcnNpb24gPSAxXG5cbiAgICAgIHR5cGUgcXVlcnkgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcXVlcnldO1xuICAgICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoc3RyaW5nICogaW50KSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcmVzcG9uc2VdO1xuICAgICAgICBbJWV4cGVjdCB7fCA0YzFlNTBjOTNiMzhjMmFkMDU1NGNiZDkyOWJlZjNhYyB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSBxID0gcVxuXG4gICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPVxuICAgICAgICBMaXN0Lm1hcCB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBSZWdpc3RlciAoVClcbiAgZW5kXG5cbiAgbW9kdWxlIEN1cnJlbnRfdmVyc2lvbiA9IFYxXG5cbiAgbGV0IGFkZCBpbXBscyA9XG4gICAgbGV0IG1lbnUgPSBMaXN0Lm1hcCBpbXBscyB+ZjpJbXBsZW1lbnRhdGlvbi5kZXNjcmlwdGlvbiBpblxuICAgIGxldCBtZW51X2ltcGxzID0gaW1wbGVtZW50X211bHRpIChmdW4gXyB+dmVyc2lvbjpfICgpIC0+IHJldHVybiBtZW51KSBpblxuICAgIGltcGxzIEAgbWVudV9pbXBsc1xuICA7O1xuXG4gIHR5cGUgdCA9IEludC5TZXQudCBTdHJpbmcuVGFibGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzdXBwb3J0ZWRfcnBjcyB0ID1cbiAgICBsZXQgb3BlbiBMaXN0LkxldF9zeW50YXggaW5cbiAgICBsZXQlYmluZCBuYW1lLCB2ZXJzaW9ucyA9IEhhc2h0YmwudG9fYWxpc3QgdCBpblxuICAgIGxldCVtYXAgdmVyc2lvbiA9IFNldC50b19saXN0IHZlcnNpb25zIGluXG4gICAgeyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH1cbiAgOztcblxuICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zIHQgfnJwY19uYW1lID1cbiAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW50LlNldC5lbXB0eSAoSGFzaHRibC5maW5kIHQgcnBjX25hbWUpXG4gIDs7XG5cbiAgbGV0IG9mX2VudHJpZXMgZW50cmllcyA9XG4gICAgSGFzaHRibC5tYXAgfmY6SW50LlNldC5vZl9saXN0IChTdHJpbmcuVGFibGUub2ZfYWxpc3RfbXVsdGkgZW50cmllcylcbiAgOztcblxuICBsZXQgYXV4X3JlcXVlc3QgZGlzcGF0Y2ggY29ubiA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBkaXNwYXRjaCBDdXJyZW50X3ZlcnNpb24ucnBjIGNvbm4gKCkgaW5cbiAgICBSZXN1bHQubWFwIHJlc3VsdCB+ZjpvZl9lbnRyaWVzXG4gIDs7XG5cbiAgbGV0IHJlcXVlc3QgY29ubiA9IGF1eF9yZXF1ZXN0IFJwYy5kaXNwYXRjaCBjb25uXG4gIGxldCByZXF1ZXN0JyBjb25uID0gYXV4X3JlcXVlc3QgUnBjLmRpc3BhdGNoJyBjb25uXG5cbiAgbGV0IGNyZWF0ZSBkZXNjcmlwdGlvbnMgPVxuICAgIExpc3QubWFwIGRlc2NyaXB0aW9ucyB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgfD4gb2ZfZW50cmllc1xuICA7O1xuXG4gIG1vZHVsZSBXaXRoX3NoYXBlcyA9IHN0cnVjdFxuICAgIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcIl9fVmVyc2lvbmVkX3JwYy5TaGFwZV9tZW51XCJcblxuICAgICAgdHlwZSBxdWVyeSA9IHVuaXRcbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoRGVzY3JpcHRpb24udCAqIFJwY19zaGFwZXMudCkgbGlzdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICBsZXQgdmVyc2lvbiA9IDFcblxuICAgICAgICB0eXBlIHF1ZXJ5ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBxdWVyeV07XG4gICAgICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgICAgIDs7XG5cbiAgICAgICAgdHlwZSByZXNwb25zZSA9IChEZXNjcmlwdGlvbi5TdGFibGUuVjEudCAqIFJwY19zaGFwZXMuU3RhYmxlLlYxLnQpIGxpc3RcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcmVzcG9uc2VdO1xuICAgICAgICAgIFslZXhwZWN0IHt8IGI0YmRjMDFiN2VhZDkwN2U2ZDBkM2YzZDg5NzAwZjFiIHx9XVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IEZuLmlkXG4gICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IEZuLmlkXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIFJlZ2lzdGVyIChUKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEN1cnJlbnRfdmVyc2lvbiA9IFYxXG5cbiAgICB0eXBlIHQgPSAoRGVzY3JpcHRpb24udCAqIFJwY19zaGFwZXMudCkgbGlzdFxuXG4gICAgbGV0IGFkZCBpbXBscyA9XG4gICAgICBsZXQgc2hhcGVfbWVudSA9XG4gICAgICAgIExpc3QubWFwIGltcGxzIH5mOihmdW4gaW1wbCAtPlxuICAgICAgICAgIEltcGxlbWVudGF0aW9uLmRlc2NyaXB0aW9uIGltcGwsIEltcGxlbWVudGF0aW9uLnNoYXBlcyBpbXBsKVxuICAgICAgaW5cbiAgICAgIGxldCBzaGFwZV9tZW51X2ltcGxzID0gaW1wbGVtZW50X211bHRpIChmdW4gXyB+dmVyc2lvbjpfICgpIC0+IHJldHVybiBzaGFwZV9tZW51KSBpblxuICAgICAgYWRkIGltcGxzIEAgc2hhcGVfbWVudV9pbXBsc1xuICAgIDs7XG5cbiAgICBsZXQgcmVxdWVzdCBjb25uID0gUnBjLmRpc3BhdGNoIEN1cnJlbnRfdmVyc2lvbi5ycGMgY29ubiAoKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29ubmVjdGlvbl93aXRoX21lbnUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNvbm5lY3Rpb24gOiBDb25uZWN0aW9uLnRcbiAgICA7IG1lbnUgOiBNZW51LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgY3JlYXRlIGNvbm5lY3Rpb24gPVxuICAgIGxldCBvcGVuIERlZmVycmVkLk9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgICBsZXQlbWFwIG1lbnUgPSBNZW51LnJlcXVlc3QgY29ubmVjdGlvbiBpblxuICAgIHsgY29ubmVjdGlvbjsgbWVudSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9kaXJlY3RseSBjb25uZWN0aW9uIG1lbnUgPSB7IGNvbm5lY3Rpb247IG1lbnUgfVxuZW5kXG5cbm1vZHVsZSBDYWxsZXJfY29udmVydHMgPSBzdHJ1Y3RcbiAgbGV0IG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIH5ycGNfbmFtZSB+Y2FsbGVyX3ZlcnNpb25zIH5jYWxsZWVfdmVyc2lvbnMgfmNhbGxlZV9tZW51ID1cbiAgICBtYXRjaCBTZXQubWF4X2VsdCAoU2V0LmludGVyIGNhbGxlZV92ZXJzaW9ucyBjYWxsZXJfdmVyc2lvbnMpIHdpdGhcbiAgICB8IFNvbWUgdmVyc2lvbiAtPiBPayB2ZXJzaW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBlcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiY2FsbGVyIGFuZCBjYWxsZWUgc2hhcmUgbm8gY29tbW9uIHZlcnNpb25zIGZvciBycGNcIlxuICAgICAgICAgICAgKHJwY19uYW1lIDogc3RyaW5nKVxuICAgICAgICAgICAgKGNhbGxlcl92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChjYWxsZWVfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX21lbnUgOiBNZW51LnQpXVxuICA7O1xuXG4gIGxldCVleHBlY3RfdGVzdCBcImhpZ2hlc3QgdmVyc2lvbiBudW1iZXIgaXMgdGFrZW4gaW4gbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cIiA9XG4gICAgbGV0IHJwY19uYW1lID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbWVudSA9IE1lbnUub2ZfZW50cmllcyBbIHJwY19uYW1lLCAyIF0gaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgIH5ycGNfbmFtZVxuICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAxOyAyOyAzIF0pXG4gICAgICAgIH5jYWxsZWVfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDIgXSlcbiAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICBpblxuICAgIHByaW50X3MgWyVzZXhwIChyZXN1bHQgOiBpbnQgT3JfZXJyb3IudCldO1xuICAgIFslZXhwZWN0IHt8IChPayAyKSB8fV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJlcnJvciBmcm9tIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIGxvb2tzIHJlYXNvbmFibGVcIiA9XG4gICAgbGV0IHRoZV9ycGMgPSBcInRoZS1ycGNcIiBpblxuICAgIGxldCBub3RfdGhlX3JwYyA9IFwib3RoZXItcnBjXCIgaW5cbiAgICBsZXQgbWVudSA9IE1lbnUub2ZfZW50cmllcyBbIG5vdF90aGVfcnBjLCAxOyBub3RfdGhlX3JwYywgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWU6dGhlX3JwY1xuICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAxOyAyOyAzIF0pXG4gICAgICAgIH5jYWxsZWVfdmVyc2lvbnM6KE1lbnUuc3VwcG9ydGVkX3ZlcnNpb25zIG1lbnUgfnJwY19uYW1lOnRoZV9ycGMpXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdFxuICAgICAge3xcbiAgICAgIChFcnJvclxuICAgICAgIChcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCIgKHJwY19uYW1lIHRoZS1ycGMpXG4gICAgICAgIChjYWxsZXJfdmVyc2lvbnMgKDEgMiAzKSkgKGNhbGxlZV92ZXJzaW9ucyAoKSlcbiAgICAgICAgKGNhbGxlZV9tZW51ICgob3RoZXItcnBjICgxIDIpKSkpKSl8fV1cbiAgOztcblxuICBtb2R1bGUgRGlzcGF0Y2ggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTWFrZSAoTSA6IE1vbmFkKSA9IHN0cnVjdFxuICAgICAgb3BlbiBNXG5cbiAgICAgIGxldCB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5kaXNwYXRjaGVyIH5yZWdpc3RyeSA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoRXJyb3IgKHVua25vd25fdmVyc2lvbiAobmFtZSwgdmVyc2lvbikpKVxuICAgICAgICB8IFNvbWUgKGRpc3BhdGNoLCBfcnBjKSAtPiBkaXNwYXRjaGVyIGRpc3BhdGNoIGNvbm5lY3Rpb24gcXVlcnlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgICAgeyBDb25uZWN0aW9uX3dpdGhfbWVudS5jb25uZWN0aW9uOyBtZW51IH1cbiAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICAgIH5kaXNwYXRjaGVyXG4gICAgICAgID1cbiAgICAgICAgbGV0IGNhbGxlZV92ZXJzaW9ucyA9IE1lbnUuc3VwcG9ydGVkX3ZlcnNpb25zIG1lbnUgfnJwY19uYW1lOm5hbWUgaW5cbiAgICAgICAgbGV0IGNhbGxlcl92ZXJzaW9ucyA9IHZlcnNpb25zICgpIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgICAgIH5ycGNfbmFtZTpuYW1lXG4gICAgICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zXG4gICAgICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zXG4gICAgICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgRXJyb3IgZSAtPiByZXR1cm4gKEVycm9yIGUpXG4gICAgICAgIHwgT2sgdmVyc2lvbiAtPlxuICAgICAgICAgIHdpdGhfc3BlY2lmaWNfdmVyc2lvbiB+dmVyc2lvbiB+Y29ubmVjdGlvbiB+bmFtZSB+cXVlcnkgfnJlZ2lzdHJ5IH5kaXNwYXRjaGVyXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIEFzeW5jID0gTWFrZSAoRGVmZXJyZWQpXG4gICAgbW9kdWxlIERpcmVjdCA9IE1ha2UgKE1vbmFkLklkZW50KVxuICBlbmRcblxuICBtb2R1bGUgUnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiByZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlcicgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IE1vZGVsLnF1ZXJ5IC0+IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBtcSA9XG4gICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgbXEpIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFJwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIFJlc3VsdC5iaW5kIHJlc3VsdCB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgbXEgcikgd2l0aFxuICAgICAgICAgICAgICAgIHwgT2sgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBSZWdpc3RlcicgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgXyByID0gbW9kZWxfb2ZfcmVzcG9uc2UgclxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKHJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnQsIGVycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gZjoocmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpc3BhdGNoZXIgPVxuICAgICAgICB7IGFib3J0IDogQ29ubmVjdGlvbi50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdFxuICAgICAgICA7IGRpc3BhdGNoIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+ICggTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAgICAgLCBNb2RlbC5lcnJvciApXG4gICAgICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudFxuICAgICAgICA7IGRpc3BhdGNoX2l0ZXIgOlxuICAgICAgICAgICAgQ29ubmVjdGlvbi50XG4gICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgLT4gZjooTW9kZWwucmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA6IChkaXNwYXRjaGVyICogQW55LnQpIEludC5UYWJsZS50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5IH5mID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2hfaXRlcjsgXyB9IGNvbm4gcXVlcnkgLT4gZGlzcGF0Y2hfaXRlciBjb25uIHF1ZXJ5IH5mKVxuICAgICAgOztcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2g7IF8gfSBjb25uIHF1ZXJ5IC0+IGRpc3BhdGNoIGNvbm4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgY29ubl93aXRoX21lbnUgaWQgPVxuICAgICAgICBEaXNwYXRjaC5EaXJlY3Qud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIGlkXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgYWJvcnQ7IF8gfSBjb25uIGlkIC0+XG4gICAgICAgICAgICBhYm9ydCBjb25uIGlkO1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSA6IFZlcnNpb25fc2hhcmVkKSAoQ29udmVydCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfZWx0IDogKFZlcnNpb25faS5yZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZSkgT3JfZXJyb3IudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9waXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIHJldHVybiAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgfCBxIC0+IHJldHVybiAoT2sgcSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rID1cbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9lcnJvciBlIHdpdGhcbiAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIHwgT2sgKE9rIG9rKSAtPiBPayAoT2sgKGNvbnZlcnRfb2sgb2spKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFBpcGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6KGZ1biAocGlwZSwgaWQpIC0+IGNvbnZlcnRfcGlwZSBwaXBlLCBpZClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZGlzcGF0Y2hfaXRlciBjb25uIHEgfmYgPVxuICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQgY29udmVydF9tZXNzYWdlIChtIDogXyBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCkgPVxuICAgICAgICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgICAgICB8IENsb3NlZCBfIGFzIGNsb3NlZCAtPiBjbG9zZWRcbiAgICAgICAgICAgIHwgVXBkYXRlIHUgLT4gVXBkYXRlIChjb252ZXJ0X2VsdCB1KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0JW1hcCByZXN1bHQgPVxuICAgICAgICAgICAgUGlwZV9ycGMuZGlzcGF0Y2hfaXRlciBycGMgY29ubiBxIH5mOihmdW4gbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBmIChjb252ZXJ0X21lc3NhZ2UgbWVzc2FnZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6Rm4uaWRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYWJvcnQgY29ubiBpZCA9IFBpcGVfcnBjLmFib3J0IHJwYyBjb25uIGlkXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldFxuICAgICAgICAgICAgICByZWdpc3RyeVxuICAgICAgICAgICAgICB+a2V5OnZlcnNpb25cbiAgICAgICAgICAgICAgfmRhdGE6KHsgYWJvcnQ7IGRpc3BhdGNoOyBkaXNwYXRjaF9pdGVyIH0sIEFueS5QaXBlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIkNhbm5vdCB1c2UgRGlyZWN0IHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcblxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZSByIHdpdGhcbiAgICAgICAgICAgICAgICB8IHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gVmVyc2lvbl9pLnZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHN0YXRlXG4gICAgICB0eXBlIHVwZGF0ZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiAoIHN0YXRlICogdXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFN0YXRlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9zdGF0ZSA6IHN0YXRlIC0+IE1vZGVsLnN0YXRlXG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBTdGF0ZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgcSB3aXRoXG4gICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgfCBxIC0+XG4gICAgICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gU3RhdGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPiBFcnJvciBleG5cbiAgICAgICAgICAgICAgIHwgT2sgKEVycm9yIGUpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfZXJyb3IgZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgIHwgT2sgKE9rIChzdGF0ZSwgcGlwZSwgaWQpKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3N0YXRlIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgfCBzdGF0ZSAtPiBPayAoT2sgKHN0YXRlLCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHBpcGUsIGlkKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuU3RhdGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3VwZGF0ZSA6IHVwZGF0ZSAtPiBNb2RlbC51cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBSZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl91cGRhdGUgciB3aXRoXG4gICAgICAgICAgICAgICAgfCByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFVwZGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBtc2dcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBtc2cgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgbXNnID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBtc2dcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1zZ19vZl9tb2RlbCA6IE1vZGVsLm1zZyAtPiBtc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1zZ19vZl9tb2RlbCBxKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPiBPbmVfd2F5LmRpc3BhdGNoIHJwYyBjb25uIHFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55Lk9uZV93YXkgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCb3RoX2NvbnZlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBsYWluID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZWVfcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gY2FsbGVlX3F1ZXJ5IC0+IGNhbGxlZV9yZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBDYWxsZWUucXVlcnlcbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IENhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3Jlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gZjooY2FsbGVyX3Jlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGNhbGxlcl9lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBhYm9ydF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfcmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gY2FsbGVlX3Jlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5DYWxsZXIuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5DYWxsZWUucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgIGxldCBhYm9ydF9tdWx0aSA9IENhbGxlci5hYm9ydF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9zdGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVyX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfdXBkYXRlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3N0YXRlICogY2FsbGVyX3VwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGNhbGxlcl9lcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gKGNhbGxlZV9zdGF0ZSAqIGNhbGxlZV91cGRhdGUgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuU3RhdGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IE1vZGVsLkNhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwuQ2FsbGVlLnF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5DYWxsZXIuc3RhdGVcbiAgICAgICAgdmFsIHN0YXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBlcnJvcl9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZWUudXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS51cGRhdGUgLT4gdXBkYXRlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwuQ2FsbGVyLnVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9zdGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl9zdGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9tc2dcbiAgICAgIHR5cGUgY2FsbGVlX21zZ1xuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IGNhbGxlcl9tc2cgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9tc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2dcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuT25lX3dheS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBtc2dfb2ZfY2FsbGVyX21vZGVsIDogQ2FsbGVyLm1zZyAtPiBtc2dcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX21zZyA6IG1zZyAtPiBDYWxsZWUubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfbXNnID0gY2FsbGVlX21vZGVsX29mX21zZ1xuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1zZ19vZl9tb2RlbCA9IG1zZ19vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG5cbiAgICAgICgqIE5vdGU6IENhbGxlci52ZXJzaW9ucyBpcyB0aGUgc2FtZSBhcyBDYWxsZWUudmVyc2lvbnMsIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoXG4gICAgICAgICBvbmUgd2UgY2FsbCBoZXJlLiBTYW1lIGZvciBbcnBjc10uICopXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydFxuICBtb2R1bGUgSGVhZGVyID0gSGVhZGVyXG4gIG1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IEhhbmRsZXJfcmVzdWx0XG4gIG1vZHVsZSBTZW5kX3Jlc3VsdCA9IFNlbmRfcmVzdWx0XG4gIG1vZHVsZSBSZWFkZXIgPSBSZWFkZXJcbiAgbW9kdWxlIFdyaXRlciA9IFdyaXRlclxuZW5kXG5cbmxldCByZWMgcGlwZV9yZWFkIHQgZiA9XG4gIG1hdGNoJWJpbmQgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHQgd2l0aFxuICB8IGBFb2YgLT4gZiBgRW9mXG4gIHwgYE9rIC0+XG4gICAgKG1hdGNoIFBpcGUucmVhZF9ub3cnIHQgd2l0aFxuICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBwaXBlX3JlYWQgdCBmXG4gICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgcmVzIC0+IGYgcmVzKVxuOztcblxubW9kdWxlIHR5cGUgREFUQSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGFkZF90b19iaWdidWZmZXIgOiBCaWdidWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX2JpZ3N0cmluZyA6IHQgLT4gQmlnc3RyaW5nLnRcbiAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfYnVmZmVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwaXBlIDogJ2EgUGlwZS5SZWFkZXIudFxuICAgIDsgYnVmZmVyIDogQmlnYnVmZmVyLnRcbiAgICA7IG11dGFibGUgYnl0ZXNfcmVhZCA6IEludDYzLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID1cbiAgICB7IHBpcGU7IGJ1ZmZlciA9IEJpZ2J1ZmZlci5jcmVhdGUgSGVhZGVyLmxlbmd0aDsgYnl0ZXNfcmVhZCA9IEludDYzLnplcm8gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQaXBlX3JlYWRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9idWZmZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlX3JlYWQgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcbiAgbGV0IGJ5dGVzX3JlYWQgKHQgOiB0KSA9IHQuYnl0ZXNfcmVhZFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKHQgOiB0KSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogKF8sIF8pIERlZmVycmVkLlJlc3VsdC50ID1cbiAgICBsZXQgYnVmZmVyID0gdC5idWZmZXIgaW5cbiAgICAoKiBEZXF1ZXVlIHVudGlsIGVub3VnaCBkYXRhIChbbmVlZF0pIGlzIGF2YWlsYWJsZSBhbmQgdHJ5IHJlYWQgbWVzc2FnZXMgKilcbiAgICBsZXQgcmVjIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPVxuICAgICAgbWF0Y2ggUXVldWUuZGVxdWV1ZSBxdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogUXVldWUgaXMgZW1wdHkgLSB3ZSBuZWVkIHRvIHdhaXQgZm9yIG1vcmUgZGF0YSAqKVxuICAgICAgICByZXR1cm4gKFNlY29uZCBuZWVkKVxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgbGV0IGJ1ZmZfbGVuID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgbGV0IGRhdGFfbGVuID0gRGF0YS5sZW5ndGggZGF0YSBpblxuICAgICAgICBpZiBidWZmX2xlbiA9IDAgJiYgZGF0YV9sZW4gPj0gbmVlZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgaGF2ZSBlbm91Z2ggZGF0YSBhbmQgYnVmZmVyIGlzIGVtcHR5LlxuICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIGV2ZXJ5IGJpbl9wcm90IG1lc3NhZ2UgaXMgc2VudCBpbiBpdHMgb3duXG4gICAgICAgICAgICAgd2Vic29ja2V0IGZyYW1lICopXG4gICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YTooRGF0YS50b19iaWdzdHJpbmcgZGF0YSkgfmxlbmd0aDpkYXRhX2xlbiBxdWV1ZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBTbG93IHBhdGguIFdlIGhhdmUgdG8gYWNjdW11bGF0ZSBbQmlnc3RyaW5nLnRdcyAqKVxuICAgICAgICAgIERhdGEuYWRkX3RvX2JpZ2J1ZmZlciBidWZmZXIgZGF0YTtcbiAgICAgICAgICBpZiBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciA+PSBuZWVkXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBUaGVyZSBpcyBlbm91Z2ggZGF0YSBpbiB0aGUgYnVmZmVyICopXG4gICAgICAgICAgICBsZXQgZGF0YSA9IEJpZ2J1ZmZlci52b2xhdGlsZV9jb250ZW50cyBidWZmZXIgaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIHF1ZXVlKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqIFdlIG5lZWQgbW9yZSBkYXRhIC0ga2VlcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZSAqKVxuICAgICAgICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZSlcbiAgICAoKiBSZWFkIGFzIG1hbnkgbWVzc2FnZXMgYXMgcG9zc2libGUgZnJvbSB0aGUgY3VycmVudCBkYXRhICopXG4gICAgYW5kIHByb2Nlc3NfZGF0YSB+cG9zIH5kYXRhIH5sZW5ndGggcXVldWUgPVxuICAgICAgaWYgbGVuZ3RoID49IEhlYWRlci5sZW5ndGhcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcGF5bG9hZF9sZW4gPSBIZWFkZXIudW5zYWZlX2dldF9wYXlsb2FkX2xlbmd0aCBkYXRhIH5wb3MgaW5cbiAgICAgICAgbGV0IHRvdGFsX2xlbiA9IEhlYWRlci5sZW5ndGggKyBwYXlsb2FkX2xlbiBpblxuICAgICAgICBpZiBsZW5ndGggPj0gdG90YWxfbGVuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHQuYnl0ZXNfcmVhZCA8LSBJbnQ2My4odC5ieXRlc19yZWFkICsgb2ZfaW50IHBheWxvYWRfbGVuKTtcbiAgICAgICAgICBtYXRjaCBvbl9tZXNzYWdlIGRhdGEgfnBvczoocG9zICsgSGVhZGVyLmxlbmd0aCkgfmxlbjpwYXlsb2FkX2xlbiB3aXRoXG4gICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIHggLT5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgICgqIE1ha2Ugc3VyZSB0aGF0IGFsbCBkYXRhIHdlJ3ZlIHJlYWQgKGFuZCBub3QgXCJjb25zdW1lZFwiKSBmcm9tIHRoZSBwaXBlXG4gICAgICAgICAgICAgICBpcyBrZXB0IGluIHRoZSBidWZmZXIuXG4gICAgICAgICAgICAgICBUaGF0IGlzIHRoZSByZW1haW5pbmcgYml0cyBpbiBbZGF0YV0gYW5kIGFsbCBjb250ZW50cyBpbiBbcXVldWVdLlxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgICAgICAgUXVldWUuaXRlciBxdWV1ZSB+ZjooZnVuIGRhdGEgLT4gRGF0YS5hZGRfdG9fYmlnYnVmZmVyIGJ1ZmZlciBkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiAoRmlyc3QgeClcbiAgICAgICAgICB8IChDb250aW51ZSB8IFdhaXQgXykgYXMgY29udGludWVfb3Jfd2FpdCAtPlxuICAgICAgICAgICAgbGV0JWJpbmQgKCkgPVxuICAgICAgICAgICAgICBtYXRjaCBjb250aW51ZV9vcl93YWl0IHdpdGhcbiAgICAgICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIF8gLT5cbiAgICAgICAgICAgICAgICAoKiBJbXBvc3NpYmxlOiB0aGlzIGJyYW5jaCBkb2VzIG5vdCBjb250YWluIFtTdG9wIF9dICopXG4gICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgQ29udGludWUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgICB8IFdhaXQgZCAtPiBkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHBvcyArIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aCAtIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICBpZiBsZW5ndGggPiAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFByb2Nlc3MgdGhlIHJlc3Qgb2YgdGhlIGRhdGEuXG4gICAgICAgICAgICAgICAgIE1vcmUgdGhhbiBvbmUgYmluX3Byb3QgbWVzc2FnZSB3YXMgc2VudCBpbnNpZGUgdGhlIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgqIGxlbmd0aCA9IDAgKilcbiAgICAgICAgICAgICAgKCogQWxsIGRhdGEgd2FzIHJlYWQgLSBrZWVwIHByb2Nlc3NpbmcgdGhlIHF1ZXVlICopXG4gICAgICAgICAgICAgIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGg6MCB+cXVldWUgfmRhdGEpXG4gICAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDp0b3RhbF9sZW4gfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSlcbiAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDpIZWFkZXIubGVuZ3RoIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGFcbiAgICBhbmQgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGEgPVxuICAgICAgaWYgbGVuZ3RoID0gMFxuICAgICAgdGhlbiBCaWdidWZmZXIuY2xlYXIgYnVmZmVyXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuc3ViIGRhdGEgfnBvcyB+bGVuOmxlbmd0aCBpblxuICAgICAgICBCaWdidWZmZXIuY2xlYXIgYnVmZmVyO1xuICAgICAgICBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZyBidWZmZXIgZGF0YSlcbiAgICBhbmQgc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhID1cbiAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZVxuICAgIGluXG4gICAgbGV0IHJlYyB3YWl0X2Zvcl9yZWFkIH5uZWVkID1cbiAgICAgIHBpcGVfcmVhZCB0LnBpcGUgKGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiByZXR1cm4gKEVycm9yIGBFb2YpXG4gICAgICAgIHwgYE9rIHF1ZXVlIC0+IHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPj49IGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUpXG4gICAgYW5kIGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUgbmV4dCA9XG4gICAgICBvbl9lbmRfb2ZfYmF0Y2ggKCk7XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgRmlyc3QgcmVzdWx0IC0+IHJldHVybiAoT2sgcmVzdWx0KVxuICAgICAgfCBTZWNvbmQgbmVlZCAtPiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5kYXRhIH5sZW5ndGggPVxuICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIChRdWV1ZS5jcmVhdGUgKCkpID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlXG4gICAgaW5cbiAgICAoKiBXZSBlaXRoZXIgc3RhcnQgYnlcbiAgICAgICAtIHByb2Nlc3NpbmcgcmVtYWluaW5nIGJpdHMgaW4gdGhlIGJ1ZmZlclxuICAgICAgIC0gb3Igd2FpdGluZyBmb3IgbW9yZSBkYXRhIGluIHRoZSBwaXBlICopXG4gICAgbGV0IG5lZWQgPSBIZWFkZXIubGVuZ3RoIGluXG4gICAgbGV0IGxlbmd0aCA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgaWYgSW50LiggPCApIGxlbmd0aCBuZWVkXG4gICAgdGhlbiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgZWxzZSBzdGFydF9wcm9jZXNzaW5nX2V4aXN0aW5nX2RhdGEgfmxlbmd0aCB+ZGF0YTooQmlnYnVmZmVyLnZvbGF0aWxlX2NvbnRlbnRzIGJ1ZmZlcilcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBEYXRhLnRcblxuICAgIGxldCBvZl9iaWdzdHJpbmcgPSBEYXRhLm9mX2JpZ3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfbW9uaXRvciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuV3JpdGVyLnRcbiAgICA7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICA7IG11dGFibGUgYnl0ZXNfd3JpdHRlbiA6IEludDYzLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID0geyBwaXBlOyBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgKCk7IGJ5dGVzX3dyaXR0ZW4gPSBJbnQ2My56ZXJvIH1cbmVuZFxuXG4oKiBXZSBkb24ndCBwZXJmb3JtIGFueSBidWZmZXJpbmcgaGVyZS5cbiAgIEEgbWVzc2FnZSBpcyBjb25zaWRlciB0byBiZSBmbHVzaGVkIGFzIHNvb24gYXMgaXQgZW50ZXJzIHRoZSBwaXBlLiAqKVxubW9kdWxlIFBpcGVfd3JpdGVyIChEYXRhIDogREFUQSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRGF0YS50IFBpcGVfYW5kX21vbml0b3IudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG4gIGxldCBtb25pdG9yICh0IDogdCkgPSB0Lm1vbml0b3JcblxuICAoKiBCZWNhdXNlIHdlIGRvbid0IG1haW50YWluIGFueSBidWZmZXIsIHRoZXJlIGFyZSBubyBwZW5kaW5nIHdyaXRlcyAqKVxuICBsZXQgYnl0ZXNfdG9fd3JpdGUgKF8gOiB0KSA9IDBcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gKHQgOiB0KSA9IHQuYnl0ZXNfd3JpdHRlblxuICBsZXQgc3RvcHBlZCAodCA6IHQpID0gUGlwZS5jbG9zZWQgdC5waXBlXG5cbiAgKCogV2UgY29uc2lkZXIgdGhhdCBhIG1lc3NhZ2UgaXMgZmx1c2hlZCBhcyBzb29uIGFzIGl0IHJlYWNoZXMgdGhlIHVuZGVybGluaW5nXG4gICAgIHRyYW5zcG9ydC4gKilcbiAgbGV0IGZsdXNoZWQgKF8gOiB0KSA9IERlZmVycmVkLnVuaXRcbiAgbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZFxuICBsZXQgc2VudF9yZXN1bHQgeCA6IF8gU2VuZF9yZXN1bHQudCA9IFNlbnQgeFxuXG4gIGxldCBjaGVja19jbG9zZWQgKHQgOiB0KSBmID1cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHQucGlwZSkgdGhlbiBmICgpIGVsc2UgU2VuZF9yZXN1bHQuQ2xvc2VkXG4gIDs7XG5cbiAgbGV0IGluY3JfYnl0ZXNfd3JpdHRlbiAodCA6IHQpIG51bV9ieXRlcyA9XG4gICAgdC5ieXRlc193cml0dGVuIDwtIEludDYzLih0LmJ5dGVzX3dyaXR0ZW4gKyBvZl9pbnQgbnVtX2J5dGVzKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IHQgd3JpdGVyIHggPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgIGxldCBidWYgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB+aGVhZGVyOnRydWUgd3JpdGVyIHggaW5cbiAgICAgIGxldCBkYXRhID0gRGF0YS5vZl9iaWdzdHJpbmcgYnVmIGluXG4gICAgICBpbmNyX2J5dGVzX3dyaXR0ZW4gdCAoRGF0YS5sZW5ndGggZGF0YSk7XG4gICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdC5waXBlIGRhdGE7XG4gICAgICBzZW50X3Jlc3VsdCAoKSlcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIHRcbiAgICAgICAgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW46cGF5bG9hZF9zaXplXG4gICAgPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgICgqIFdyaXRlIHRoZSBzaXplIGhlYWRlciBtYW51YWxseSBhbmQgY29uY2F0ZW5hdGUgdGhlIHR3byAqKVxuICAgICAgbGV0IGRhdGFfc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLmNyZWF0ZSAoZGF0YV9zaXplICsgSGVhZGVyLmxlbmd0aCArIHBheWxvYWRfc2l6ZSkgaW5cbiAgICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGRhdGEgfnBvczowIChkYXRhX3NpemUgKyBwYXlsb2FkX3NpemUpO1xuICAgICAgbGV0IGRzdF9wb3MgPSB3cml0ZXIud3JpdGUgZGF0YSB+cG9zOkhlYWRlci5sZW5ndGggeCBpblxuICAgICAgQmlnc3RyaW5nLmJsaXQgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6ZGF0YSB+ZHN0X3BvcyB+bGVuOnBheWxvYWRfc2l6ZTtcbiAgICAgIGxldCBkYXRhID0gRGF0YS5vZl9iaWdzdHJpbmcgZGF0YSBpblxuICAgICAgaW5jcl9ieXRlc193cml0dGVuIHQgKERhdGEubGVuZ3RoIGRhdGEpO1xuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSBkYXRhO1xuICAgICAgc2VudF9yZXN1bHQgKCkpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IHdyaXRlciB4IH5idWYgfnBvcyB+bGVuID1cbiAgICBtYXRjaCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCB3cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgfCBTZW50ICgpIC0+IHNlbnRfcmVzdWx0IERlZmVycmVkLnVuaXRcbiAgICB8IChDbG9zZWQgfCBNZXNzYWdlX3Rvb19iaWcgXykgYXMgciAtPiByXG4gIDs7XG5lbmRcblxubW9kdWxlIEJpZ3N0cmluZ19kYXRhID0gc3RydWN0XG4gIHR5cGUgdCA9IEJpZ3N0cmluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgbGV0IGFkZF90b19iaWdidWZmZXIgPSBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZ1xuICBsZXQgdG9fYmlnc3RyaW5nIHggPSB4XG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IHhcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICBsZXQgYWRkX3RvX2JpZ2J1ZmZlciA9IEJpZ2J1ZmZlci5hZGRfc3RyaW5nXG4gIGxldCB0b19iaWdzdHJpbmcgeCA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgeFxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSBCaWdzdHJpbmcudG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgQmlnc3RyaW5nX3BpcGVfcmVhZGVyID0gUGlwZV9yZWFkZXIgKEJpZ3N0cmluZ19kYXRhKVxubW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlciA9IFBpcGVfd3JpdGVyIChCaWdzdHJpbmdfZGF0YSlcbm1vZHVsZSBTdHJpbmdfcGlwZV9yZWFkZXIgPSBQaXBlX3JlYWRlciAoU3RyaW5nX2RhdGEpXG5tb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyID0gUGlwZV93cml0ZXIgKFN0cmluZ19kYXRhKVxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJpZ3N0cmluZyA6IGJpZ3N0cmluZyB0XG5cbiAgbGV0IHN0cmluZyA9IFN0cmluZ1xuICBsZXQgYmlnc3RyaW5nID0gQmlnc3RyaW5nXG5lbmRcblxubGV0IG1ha2VfcmVhZGVyICh0eXBlIGEpICh4IDogYSBLaW5kLnQpIChyZWFkZXIgOiBhIFBpcGUuUmVhZGVyLnQpID1cbiAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFJlYWRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfcmVhZGVyKSByZWFkZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBSZWFkZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3JlYWRlcikgcmVhZGVyXG47O1xuXG5sZXQgbWFrZV93cml0ZXIgKHR5cGUgYSkgKHggOiBhIEtpbmQudCkgKHdyaXRlciA6IGEgUGlwZS5Xcml0ZXIudCkgPVxuICBsZXQgd3JpdGVyID0gUGlwZV9hbmRfbW9uaXRvci5jcmVhdGUgd3JpdGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFdyaXRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyKSB3cml0ZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBXcml0ZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlcikgd3JpdGVyXG47O1xuXG5sZXQgY3JlYXRlIGtpbmQgcmVhZGVyIHdyaXRlciA9XG4gIHsgVHJhbnNwb3J0LnJlYWRlciA9IG1ha2VfcmVhZGVyIGtpbmQgcmVhZGVyOyB3cml0ZXIgPSBtYWtlX3dyaXRlciBraW5kIHdyaXRlciB9XG47O1xuXG4oKiBUZXN0aW5nICopXG5cbm1vZHVsZSB0eXBlIFRyYW5zcG9ydF9yZWFkZXIgPSBzaWdcbiAgbW9kdWxlIEZvcl90ZXN0aW5nIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfYmlnc3RyaW5nIDogQmlnc3RyaW5nLnQgLT4gdFxuICBlbmRcblxuICBpbmNsdWRlIFRyYW5zcG9ydC5SZWFkZXIuUyB3aXRoIHR5cGUgdCA9IEZvcl90ZXN0aW5nLnQgUGlwZV9hbmRfYnVmZmVyLnRcbmVuZFxuXG5tb2R1bGUgVGVzdF9yZWFkZXIgKFRyYW5zcG9ydF9yZWFkZXIgOiBUcmFuc3BvcnRfcmVhZGVyKSA9IHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydF9yZWFkZXIuRm9yX3Rlc3RpbmdcblxuICBsZXQgZGVmYXVsdF9tZXNzYWdlID0gQmlnc3RyaW5nLm9mX3N0cmluZyBcIkZPT0JBUjEyM1wiXG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlX2J1ZiAobWVzc2FnZSA6IEJpZ3N0cmluZy50KSA6IEJpZ3N0cmluZy50ID1cbiAgICBsZXQgbWVzc2FnZV9sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2UgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSAoSGVhZGVyLmxlbmd0aCArIG1lc3NhZ2VfbGVuKSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgbWVzc2FnZV9sZW47XG4gICAgQmlnc3RyaW5nLmJsaXRcbiAgICAgIH5zcmM6bWVzc2FnZVxuICAgICAgfmRzdDpidWZcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOkhlYWRlci5sZW5ndGhcbiAgICAgIH5sZW46bWVzc2FnZV9sZW47XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlICgpID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZVxuXG4gIGxldCBvbl9tZXNzYWdlID8obWVzc2FnZSA9IGRlZmF1bHRfbWVzc2FnZSkgb25fbWVzc2FnZV9jb3VudCBidWZmZXIgfnBvcyB+bGVuID1cbiAgICBvbl9tZXNzYWdlX2NvdW50IDo9ICFvbl9tZXNzYWdlX2NvdW50ICsgMTtcbiAgICBbJXRlc3RfcmVzdWx0OiBCaWdzdHJpbmcudF0gKEJpZ3N0cmluZy5zdWIgYnVmZmVyIH5wb3MgfmxlbikgfmV4cGVjdDptZXNzYWdlO1xuICAgIEhhbmRsZXJfcmVzdWx0LkNvbnRpbnVlXG4gIDs7XG5cbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgKCkgPSBpbmNyIG9uX2VuZF9vZl9iYXRjaF9jb3VudFxuICBsZXQgd2FpdCAoKSA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuRXhwZXJ0LnJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKClcblxuICBsZXQgcnVuX3Rlc3QgcnVuIHZlcmlmeSA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fbWVzc2FnZV9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaF9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIG9uX21lc3NhZ2VfY291bnQgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoID0gb25fZW5kX29mX2JhdGNoIG9uX2VuZF9vZl9iYXRjaF9jb3VudCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpO1xuICAgIHdhaXQgKCk7XG4gICAgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnQgbWVzc2FnZV9jb3VudCBiYXRjaF9jb3VudCA9XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fbWVzc2FnZV9jb3VudCB+ZXhwZWN0Om1lc3NhZ2VfY291bnQ7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fZW5kX29mX2JhdGNoX2NvdW50IH5leHBlY3Q6YmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcblxuICAoKiBOb3QgZW5vdWdoIGRhdGEsIHdlIG5lZWQgdG8gYWNjdW11bGF0ZSAqKVxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgbGV0IGJ1ZiA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiAoQmlnc3RyaW5nLm9mX3N0cmluZyBcIlwiKSBpblxuICAgIGxldCBtZXNzYWdlX3JhdyA9IGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgKEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZV9yYXcpO1xuICAgIHdyaXRlIGJ1ZjtcbiAgICB3YWl0ICgpO1xuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlX3JhdyBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBtZXNzYWdlX3JhdyB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgbWVzc2FnZV9yYXcgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgd3JpdGUgcGFydDE7XG4gICAgd2FpdCAoKTtcbiAgICB3cml0ZSBwYXJ0MlxuICA7O1xuXG4gICgqIFRvbyBtdWNoIGRhdGEsIHdlIG5lZWQgdG8gbG9vcCB3aXRoaW5nIHRoZSBzYW1lIGJhdGNoICopXG4gIGxldCB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlID1cbiAgICBsZXQgb25lX21zZyA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBsZXQgdHdvX21zZyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbXNnOyBvbmVfbXNnIF0gaW5cbiAgICB3cml0ZSB0d29fbXNnXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZSA9XG4gICAgbGV0IG9uZV9tc2cgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgbGV0IHR3b19tc2cgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21zZzsgb25lX21zZyBdIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ3N0cmluZy5sZW5ndGggdHdvX21zZyAtIDEgZG9cbiAgICAgIHdyaXRlIChCaWdzdHJpbmcuc3ViIHR3b19tc2cgfnBvczppIH5sZW46MSk7XG4gICAgICB3YWl0ICgpXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzFfY2h1bmsgKHZlcmlmeSAxIDEpXG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZiAodmVyaWZ5IDIgMSlcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rICh2ZXJpZnkgMSAzKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ18xX2NodW5rICh2ZXJpZnkgMiAxKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgKHZlcmlmeSAyIDM0KVxuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGYgKHZlcmlmeSA3IDQwKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJjYW4gY2FsbCByZWFkX2ZvcmV2ZXIgbXVsdGlwbGUgdGltZXNcIiA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoICgpID0gKCkgaW5cbiAgICBsZXQgd3JpdGUgeCA9IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSBpblxuICAgIGxldCBudW0gPSByZWYgMCBpblxuICAgIGxldCBzdG9wX2FmdGVyX29uX21lc3NhZ2UgYnVmZmVyIH5wb3MgfmxlbiA9XG4gICAgICBpbmNyIG51bTtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IEJpZ3N0cmluZy50XSAoQmlnc3RyaW5nLnN1YiBidWZmZXIgfnBvcyB+bGVuKSB+ZXhwZWN0OmRlZmF1bHRfbWVzc2FnZTtcbiAgICAgIEhhbmRsZXJfcmVzdWx0LlN0b3AgKClcbiAgICBpblxuICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgUGlwZS5jbG9zZSB3cml0ZXI7XG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChsZXQlYmluZCB4ID1cbiAgICAgICAgIFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICAgICAgIHJlYWRlclxuICAgICAgICAgICB+b25fbWVzc2FnZTpzdG9wX2FmdGVyX29uX21lc3NhZ2VcbiAgICAgICAgICAgfm9uX2VuZF9vZl9iYXRjaFxuICAgICAgIGluXG4gICAgICAgYXNzZXJ0IChSZXN1bHQuaXNfb2sgeCk7XG4gICAgICAgbGV0JWJpbmQgeCA9XG4gICAgICAgICBUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgICAgICByZWFkZXJcbiAgICAgICAgICAgfm9uX21lc3NhZ2U6c3RvcF9hZnRlcl9vbl9tZXNzYWdlXG4gICAgICAgICAgIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgICAgICBpblxuICAgICAgIGFzc2VydCAoUmVzdWx0LmlzX29rIHgpO1xuICAgICAgIERlZmVycmVkLnVuaXQpO1xuICAgIHdhaXQgKCk7XG4gICAgWyV0ZXN0X3Jlc3VsdDogSW50LnRdIH5leHBlY3Q6MiAhbnVtXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChTdHJpbmdfcGlwZV9yZWFkZXIpKVxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfYmlnc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuXG5tb2R1bGUgQmVuY2hfcmVhZGVyIChUcmFuc3BvcnRfcmVhZGVyIDogVHJhbnNwb3J0X3JlYWRlcikgPSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRfcmVhZGVyLkZvcl90ZXN0aW5nXG5cbiAgbGV0IGRlZmF1bHRfbWVzc2FnZSA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJGT09CQVIxMjNcIlxuXG4gIGxldCBjcmVhdGVfbWVzc2FnZV9idWYgKG1lc3NhZ2UgOiBCaWdzdHJpbmcudCkgOiBCaWdzdHJpbmcudCA9XG4gICAgbGV0IG1lc3NhZ2VfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlIGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgKEhlYWRlci5sZW5ndGggKyBtZXNzYWdlX2xlbikgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIG1lc3NhZ2VfbGVuO1xuICAgIEJpZ3N0cmluZy5ibGl0XG4gICAgICB+c3JjOm1lc3NhZ2VcbiAgICAgIH5kc3Q6YnVmXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpIZWFkZXIubGVuZ3RoXG4gICAgICB+bGVuOm1lc3NhZ2VfbGVuO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWVzc2FnZSAoKSA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2VcbiAgbGV0IG9uZV9tZXNzYWdlID0gY3JlYXRlX21lc3NhZ2UgKClcbiAgbGV0IHR3b19tZXNzYWdlcyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbWVzc2FnZTsgb25lX21lc3NhZ2UgXVxuXG4gIGxldCBvbmVfbWVzc2FnZV9wMSwgb25lX21lc3NhZ2VfcDIgPVxuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBvbmVfbWVzc2FnZSB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgb25lX21lc3NhZ2UgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgcGFydDEsIHBhcnQyXG4gIDs7XG5cbiAgbGV0IG9uX21lc3NhZ2UgX2J1ZmZlciB+cG9zOl8gfmxlbjpfID0gSGFuZGxlcl9yZXN1bHQuQ29udGludWVcbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCAoKSA9ICgpXG4gIGxldCB3YWl0ICgpID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5FeHBlcnQucnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKVxuXG4gIGxldCBydW5fdGVzdCBydW4gPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCA9IG9uX2VuZF9vZl9iYXRjaCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgZm9yIF8gPSAwIHRvIDEwMCBkb1xuICAgICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpXG4gICAgZG9uZTtcbiAgICB3YWl0ICgpXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSBvbmVfbWVzc2FnZVxuXG4gICgqIE5vdCBlbm91Z2ggZGF0YSwgd2UgbmVlZCB0byBhY2N1bXVsYXRlICopXG4gIGxldCBidWYgPSBjcmVhdGVfbWVzc2FnZV9idWYgKEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJcIilcblxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCAoQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSk7XG4gICAgd3JpdGUgYnVmO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AxO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AyXG4gIDs7XG5cbiAgKCogVG9vIG11Y2ggZGF0YSwgd2UgbmVlZCB0byBsb29wIHdpdGhpbmcgdGhlIHNhbWUgYmF0Y2ggKilcbiAgbGV0IHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSB0d29fbWVzc2FnZXNcblxuICBsZXQgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlID1cbiAgICBmb3IgaSA9IDAgdG8gQmlnc3RyaW5nLmxlbmd0aCB0d29fbWVzc2FnZXMgLSAxIGRvXG4gICAgICB3cml0ZSAoQmlnc3RyaW5nLnN1YiB0d29fbWVzc2FnZXMgfnBvczppIH5sZW46MSlcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMV9tc2dfMV9jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfMV9jaHVua1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGVcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8xX21zZ18zX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnXzFfY2h1bmtcbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfb25lX2J5dGVcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVua1xuXG4gIGxldCViZW5jaCBcIm11bHRpXCIgPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcbmVuZFxuXG5sZXQlYmVuY2hfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIEJlbmNoX3JlYWRlciAoU3RyaW5nX3BpcGVfcmVhZGVyKSlcbmxldCViZW5jaF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9iaWdzdHJpbmdcIiA9IChtb2R1bGUgQmVuY2hfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5pbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWxcblxubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWZXJzaW9uZWRfcnBjLkNvbm5lY3Rpb25fd2l0aF9tZW51LnRcblxuICAgIGxldCBycGNfY29ubmVjdGlvbiA9IFZlcnNpb25lZF9ycGMuQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgKHJwY19jb25uZWN0aW9uIHQpXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gUnBjLkNvbm5lY3Rpb24uaXNfY2xvc2VkIChycGNfY29ubmVjdGlvbiB0KVxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgKHJwY19jb25uZWN0aW9uIHQpXG4gIGVuZClcblxubW9kdWxlIFJwYyA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFJwYy5Db25uZWN0aW9uLnRcblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgdFxuICAgIGxldCBpc19jbG9zZWQgdCA9IFJwYy5Db25uZWN0aW9uLmlzX2Nsb3NlZCB0XG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCB0XG4gIGVuZClcbiIsIm1vZHVsZSBScGMgPSBScGNcbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gVmVyc2lvbmVkX3JwY1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxubW9kdWxlIFBpcGVfdHJhbnNwb3J0ID0gUGlwZV90cmFuc3BvcnRcbm1vZHVsZSBScGNfZXJyb3IgPSBScGNfZXJyb3Jcbm1vZHVsZSBScGNfcmVzdWx0ID0gUnBjX3Jlc3VsdFxubW9kdWxlIFJwY19zaGFwZXMgPSBScGNfc2hhcGVzXG5tb2R1bGUgT3Jfbm90X2F1dGhvcml6ZWQgPSBPcl9ub3RfYXV0aG9yaXplZFxuXG5tb2R1bGUgUnBjX21ldGFkYXRhIDpcbiAgbW9kdWxlIHR5cGUgb2YgUnBjX21ldGFkYXRhIHdpdGggbW9kdWxlIFByaXZhdGUgOj0gUnBjX21ldGFkYXRhLlByaXZhdGUgPVxuICBScGNfbWV0YWRhdGFcblxubW9kdWxlIEFzeW5jX3JwY19rZXJuZWxfc3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBScGMuU3RhYmxlXG5lbmRcblxubW9kdWxlIEFzeW5jX3JwY19rZXJuZWxfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29ubmVjdGlvbiA9IENvbm5lY3Rpb25cbiAgbW9kdWxlIFByb3RvY29sID0gUHJvdG9jb2xcbiAgbW9kdWxlIFRyYW5zcG9ydCA9IFRyYW5zcG9ydFxuXG4gIGxldCBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0ID0gQ29ubmVjdGlvbi5kZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0XG5lbmRcbiIsIm9wZW4gU3RyaW5nXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxuXG4oKiBOb3QgdGFpbCByZWN1cnNpdmUgZm9yIFwicGVyZm9ybWFuY2VcIiwgcGxlYXNlIGNob29zZSBsb3cgdmFsdWVzIGZvclxuICAgW21heF0uIFRoZSBpZGVhIGlzIHRoYXQgbWF4IGlzIGFsd2F5cyBzbWFsbCBiZWNhdXNlIGl0J3MgaGFyZFxuICAgY29kZSAqKVxubGV0IHNwbGl0X2NoYXJfYm91bmRlZCBzdHIgfm9uIH5tYXggPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW3N0cl1cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBvZmZzZXQgdG9rZW5zID1cbiAgICAgIGlmIHRva2VucyA9IG1heCAtIDFcbiAgICAgIHRoZW4gW3N1YiBzdHIgb2Zmc2V0IChsZW5ndGggc3RyIC0gb2Zmc2V0KV1cbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgICAgXCJcIjo6KGxvb3AgKG9mZnNldCArIDEpICh0b2tlbnMgKyAxKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgdG9rZW4gPSBTdHJpbmcuc3ViIHN0ciBvZmZzZXQgKGluZGV4IC0gb2Zmc2V0KSBpblxuICAgICAgICAgICAgdG9rZW46Oihsb29wIChpbmRleCArIDEpICh0b2tlbnMgKyAxKSlcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gW3N1YiBzdHIgb2Zmc2V0IChsZW5ndGggc3RyIC0gb2Zmc2V0KV1cbiAgICBpbiBsb29wIDAgMFxuXG5sZXQgc3BsaXRfY2hhcl91bmJvdW5kZWQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKFwiXCI6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHN1YiBzdHIgKGluZGV4ICsgMSkgKG9mZnNldCAtIGluZGV4KSBpblxuICAgICAgICAgIGxvb3AgKHRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IChzdWIgc3RyIDAgKG9mZnNldCArIDEpKTo6YWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbmxldCBvZl9jaGFyID0gU3RyaW5nLm1ha2UgMVxuXG5sZXQgZnVsbF9zcGxpdCBzdHIgfm9uID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgc2VwID0gb2ZfY2hhciBvbiBpblxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChzZXA6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHN1YiBzdHIgKGluZGV4ICsgMSkgKG9mZnNldCAtIGluZGV4KSBpblxuICAgICAgICAgIGxvb3AgKHNlcDo6dG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgICAgdGhlbiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgICAgICBlbHNlIGFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG4oKiBjb3B5aW5nIGNvcmUncyBjb252ZW50aW9uIGZvciBTdHJpbmcuc3BsaXQgYnV0IHdpdGggYW4gb3B0aW9uYWwgbWF4XG4gICBhcmd1bWVudCAqKVxubGV0IHNwbGl0ID9tYXggcyB+b24gPVxuICBtYXRjaCBtYXggd2l0aFxuICB8IE5vbmUgLT4gc3BsaXRfY2hhcl91bmJvdW5kZWQgcyB+b25cbiAgfCBTb21lIG1heCAtPiAgICAgICAgICAgICAgICAgKCogYXNzZXJ0IChtYXggPCAxMDApOyAqKVxuICAgIHNwbGl0X2NoYXJfYm91bmRlZCBzIH5vbiB+bWF4XG5cbmxldCByaW5kZXhfZnJvbV9vbiBzIH5vZmZzZXQgfm9uID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgb24gcy5baV0gdGhlbiBpXG4gICAgZWxzZSBsb29wIChpIC0gMSlcbiAgaW4gbG9vcCBvZmZzZXRcblxubGV0IHRyaW1fbGVmdF9zdWIgcyB+cG9zIH5sZW4gfmNoYXJzID1cbiAgbGV0IHN0YXJ0X3BvcyA9XG4gICAgbGV0IGZpbmFsID0gcG9zICsgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGxhc3RfY2hhciBpID1cbiAgICAgIGlmIGkgPSBmaW5hbCB0aGVuIGxhc3RfY2hhclxuICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgY2hhcnMgcy5baV0gdGhlbiBsb29wIChpICsgMSkgKGkgKyAxKVxuICAgICAgZWxzZSBsYXN0X2NoYXJcbiAgICBpbiBsb29wIHBvcyBwb3NcbiAgaW5cbiAgbGV0IG5ld19sZW4gPSBsZW4gLSAoc3RhcnRfcG9zIC0gcG9zKSBpblxuICBTdHJpbmcuc3ViIHMgc3RhcnRfcG9zIG5ld19sZW5cblxubGV0IHNwbGl0X3RyaW1fbGVmdCBzdHIgfm9uIH50cmltID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb21fb24gc3RyIH5vZmZzZXQgfm9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSB0cmltX2xlZnRfc3ViIHN0ciB+cG9zOihpbmRleCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB+bGVuOihvZmZzZXQgLSBpbmRleCkgfmNoYXJzOnRyaW0gaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAodHJpbV9sZWZ0X3N1YiBzdHIgfnBvczowIH5sZW46KG9mZnNldCArIDEpIH5jaGFyczp0cmltKTo6YWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbmV4Y2VwdGlvbiBGb3VuZF9pbnQgb2YgaW50XG5cbmxldCBmaXJzdF9jaGFyX25lIHMgYyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgcy5bMF0gPD4gY1xuXG5sZXQgdHJpbV9sZWZ0IHMgPVxuICBpZiBmaXJzdF9jaGFyX25lIHMgJyAnIHRoZW4gc1xuICBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIHRyeVxuICAgICAgZm9yIGk9MCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGlmIHMuW2ldIDw+ICcgJyB0aGVuIHJhaXNlIChGb3VuZF9pbnQgaSlcbiAgICAgIGRvbmU7XG4gICAgICBcIlwiXG4gICAgd2l0aCBGb3VuZF9pbnQgbm9uX3NwYWNlIC0+XG4gICAgICBzdWIgcyBub25fc3BhY2UgKGxlbiAtIG5vbl9zcGFjZSlcblxubGV0IHN1YnN0cl9lcSA/KHN0YXJ0PTApIHMgfnBhdHRlcm4gPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIC0gMSBkb1xuICAgICAgaWYgcy5baSArIHN0YXJ0XSA8PiBwYXR0ZXJuLltpXSB0aGVuIHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBfIC0+IGZhbHNlXG5cbmxldCBmaW5kX2Zyb20gPyhzdGFydD0wKSBzdHIgfnBhdHRlcm4gPVxuICB0cnlcbiAgICBmb3IgaSA9IHN0YXJ0IHRvIChTdHJpbmcubGVuZ3RoIHN0cikgLSAoU3RyaW5nLmxlbmd0aCBwYXR0ZXJuKSBkb1xuICAgICAgaWYgc3Vic3RyX2VxIH5zdGFydDppIHN0ciB+cGF0dGVybiB0aGVuXG4gICAgICAgIHJhaXNlIChGb3VuZF9pbnQgaSlcbiAgICBkb25lO1xuICAgIE5vbmVcbiAgd2l0aFxuICB8IEZvdW5kX2ludCBpIC0+IFNvbWUgaVxuICB8ICBfIC0+IE5vbmVcblxubGV0IGZpbmRfbWluIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgeCBmeCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBTb21lICh4LCBmeClcbiAgICB8IHgnOjp4cyAtPlxuICAgICAgbGV0IGZ4JyA9IGYgeCcgaW5cbiAgICAgIGlmIGZ4JyA8IGZ4IHRoZW4gbG9vcCB4JyBmeCcgeHNcbiAgICAgIGVsc2UgbG9vcCB4IGZ4IHhzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4Ojp4cyAtPiBsb29wIHggKGYgeCkgeHNcblxubGV0IHJlcGxhY2VfYWxsIHN0ciB+cGF0dGVybiB+d2l0aF8gPVxuICBsZXQgKHNsZW4sIHBsZW4pID0gU3RyaW5nLihsZW5ndGggc3RyLCBsZW5ndGggcGF0dGVybikgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgc2xlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKHNsZW4gLSBpKTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICB8IFNvbWUgaiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChqIC0gaSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICBsb29wIChqICsgcGxlbilcbiAgaW4gbG9vcCAwXG5cbmV4Y2VwdGlvbiBGb3VuZF9yZXBsYWNlIG9mIGludCAqIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgcmVwbGFjZV9hbGxfYXNzb2Mgc3RyIHRibCA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgc2xlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBzbGVuIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgIGVsc2VcbiAgICAgIGxldCByID1cbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IGUgPVxuICAgICAgICAgICAgZmluZF9taW4gdGJsIH5mOihmdW4gKHBhdHRlcm4sIHdpdGhfKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBmaW5kX2Zyb20gfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lICAgLT4gbWF4X2ludFxuICAgICAgICAgICAgICB8IFNvbWUgaiB3aGVuIGogPSBpIC0+IHJhaXNlIChGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykpXG4gICAgICAgICAgICAgIHwgU29tZSBqIC0+IGZvdW5kIDo9IHRydWU7IGopXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSAoKHBhdHRlcm4sIHdpdGhfKSwgaikgd2hlbiAhZm91bmQgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICB3aXRoIEZvdW5kX3JlcGxhY2UgKGosIHBhdHRlcm4sIHdpdGhfKSAtPiBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXylcbiAgICAgIGluXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKHNsZW4gLSBpKTtcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgICAgfCBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChqIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiB3aXRoXztcbiAgICAgICAgbG9vcCAoaiArIFN0cmluZy5sZW5ndGggcGF0dGVybilcbiAgaW4gbG9vcCAwXG5cbmxldCBpdGVyaSBmIGwgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeDo6eHMgLT4gKGYgaSB4KTsgbG9vcCAoc3VjYyBpKSB4c1xuICBpbiBsb29wIDAgbFxuXG5sZXQgb2ZfbGlzdCB4cyA9XG4gIGxldCBsID0gTGlzdC5sZW5ndGggeHMgaW5cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBpdGVyaSAoZnVuIGkgYyAtPiBCeXRlcy5zZXQgcyBpIGMpIHhzO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA9IC0xIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbG9vcCAocy5baV0gOjogYWNjKSAocHJlZCBpKVxuICBpbiBsb29wIFtdIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IGJ5dGVzIGkgYS4oaSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBieXRlc1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKFN0cmluZy5sZW5ndGggcykgKFN0cmluZy5nZXQgcylcblxuKCogcmlwcGVkIG9mZiBmcm9tIG9uZSBvZiBkYnVlbnpsaSdzIGxpYnMgKilcbmxldCBjdXQgcyB+b24gPVxuICBsZXQgc2VwX21heCA9IGxlbmd0aCBvbiAtIDEgaW5cbiAgaWYgc2VwX21heCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZ2V4dC5jdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICAgICgqIFdlIHJ1biBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gZW5kIHdpdGggW2ldIHRyeWluZyB0byBtYXRjaCB0aGVcbiAgICAgICAgIGZpcnN0IGNoYXJhY3RlciBvZiBbb25dIGluIFtzXS4gSWYgdGhpcyBtYXRjaGVzLCB3ZSB2ZXJpZnkgdGhhdFxuICAgICAgICAgdGhlIHdob2xlIFtvbl0gaXMgbWF0Y2hlZCB1c2luZyBba10uIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2VcbiAgICAgICAgIGNvbnRpbnVlIHRvIGxvb2sgZm9yIFtvbl0gd2l0aCBbaV0uIElmIGl0IG1hdGNoZXMgd2UgZXhpdCB0aGVcbiAgICAgICAgIGxvb3AgYW5kIGV4dHJhY3QgYSBzdWJzdHJpbmcgZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIHRoZVxuICAgICAgICAgcG9zaXRpb24gYmVmb3JlIHRoZSBbb25dIHdlIGZvdW5kIGFuZCBhbm90aGVyIGZyb20gdGhlIHBvc2l0aW9uXG4gICAgICAgICBhZnRlciB0aGUgW29uXSB3ZSBmb3VuZCB0byBlbmQgb2Ygc3RyaW5nLiBJZiBbaV0gaXMgc3VjaCB0aGF0IG5vXG4gICAgICAgICBzZXBhcmF0b3IgY2FuIGJlIGZvdW5kIHdlIGV4aXQgdGhlIGxvb3AgYW5kIHJldHVybiB0aGUgbm8gbWF0Y2hcbiAgICAgICAgIGNhc2UuICopXG4gICAgICB0cnlcbiAgICAgICAgd2hpbGUgKCFpICsgc2VwX21heCA8PSBzX21heCkgZG9cbiAgICAgICAgICAoKiBDaGVjayByZW1haW5pbmcgW29uXSBjaGFycyBtYXRjaCwgYWNjZXNzIHRvIHVuc2FmZSBzICghaSArICFrKSBpc1xuICAgICAgICAgICAgIGd1YXJhbnRlZWQgYnkgbG9vcCBpbnZhcmlhbnQuICopXG4gICAgICAgICAgaWYgdW5zYWZlX2dldCBzICFpIDw+IHVuc2FmZV9nZXQgb24gMCB0aGVuIGluY3IgaSBlbHNlIGJlZ2luXG4gICAgICAgICAgICBrIDo9IDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPD0gc2VwX21heCAmJiB1bnNhZmVfZ2V0IHMgKCFpICsgIWspID0gdW5zYWZlX2dldCBvbiAhaylcbiAgICAgICAgICAgIGRvIGluY3IgayBkb25lO1xuICAgICAgICAgICAgaWYgIWsgPD0gc2VwX21heCB0aGVuICgqIG5vIG1hdGNoICopIGluY3IgaSBlbHNlIHJhaXNlIEV4aXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgTm9uZSAoKiBubyBtYXRjaCBpbiB0aGUgd2hvbGUgc3RyaW5nLiAqKVxuICAgICAgd2l0aFxuICAgICAgfCBFeGl0IC0+ICgqIGkgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VwYXJhdG9yICopXG4gICAgICAgIGxldCBsZWZ0X2VuZCA9ICFpIC0gMSBpblxuICAgICAgICBsZXQgcmlnaHRfc3RhcnQgPSAhaSArIHNlcF9tYXggKyAxIGluXG4gICAgICAgIFNvbWUgKHN1YiBzIDAgKGxlZnRfZW5kICsgMSksXG4gICAgICAgICAgICAgIHN1YiBzIHJpZ2h0X3N0YXJ0IChzX21heCAtIHJpZ2h0X3N0YXJ0ICsgMSkpXG5cbmxldCByY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQucmN1dDogZW1wdHkgc2VwYXJhdG9yXCIgZWxzZVxuICAgIGxldCBzX21heCA9IGxlbmd0aCBzIC0gMSBpblxuICAgIGlmIHNfbWF4IDwgMCB0aGVuIE5vbmUgZWxzZVxuICAgICAgbGV0IGsgPSByZWYgMCBpblxuICAgICAgbGV0IGkgPSByZWYgc19tYXggaW5cbiAgICAgICgqIFdlIHJ1biBmcm9tIHRoZSBlbmQgb2YgW3NdIHRvIHRoZSBiZWdpbm5pbmcgd2l0aCBbaV0gdHJ5aW5nIHRvXG4gICAgICAgICBtYXRjaCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2VcbiAgICAgICAgIHZlcmlmeSB0aGF0IHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdICh3ZSBkbyB0aGF0XG4gICAgICAgICBiYWNrd2FyZHMpLiAgSWYgaXQgZG9lc24ndCBtYXRjaCB3ZSBjb250aW51ZSB0byBsb29rIGZvciBbb25dXG4gICAgICAgICB3aXRoIFtpXS4gIElmIGl0IG1hdGNoZXMgd2UgZXhpdCB0aGUgbG9vcCBhbmQgZXh0cmFjdCBhXG4gICAgICAgICBzdWJzdHJpbmcgZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlXG4gICAgICAgICBbb25dIHdlIGZvdW5kIGFuZCBhbm90aGVyIGZyb20gdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBbb25dIHdlXG4gICAgICAgICBmb3VuZCB0byBlbmQgb2Ygc3RyaW5nLiAgSWYgW2ldIGlzIHN1Y2ggdGhhdCBubyBzZXBhcmF0b3IgY2FuXG4gICAgICAgICBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoIGNhc2UuICopXG4gICAgICB0cnlcbiAgICAgICAgd2hpbGUgKCFpID49IHNlcF9tYXgpIGRvXG4gICAgICAgICAgaWYgdW5zYWZlX2dldCBzICFpIDw+IHVuc2FmZV9nZXQgb24gc2VwX21heCB0aGVuIGRlY3IgaSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAoKiBDaGVjayByZW1haW5pbmcgW29uXSBjaGFycyBtYXRjaCwgYWNjZXNzIHRvIHVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgIHMgKHNlcF9zdGFydCArICFrKSBpcyBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgICAgbGV0IHNlcF9zdGFydCA9ICFpIC0gc2VwX21heCBpblxuICAgICAgICAgICAgayA6PSBzZXBfbWF4IC0gMTtcbiAgICAgICAgICAgIHdoaWxlICghayA+PSAwICYmIHVuc2FmZV9nZXQgcyAoc2VwX3N0YXJ0ICsgIWspID0gdW5zYWZlX2dldCBvbiAhaylcbiAgICAgICAgICAgIGRvIGRlY3IgayBkb25lO1xuICAgICAgICAgICAgaWYgIWsgPj0gMCB0aGVuICgqIG5vIG1hdGNoICopIGRlY3IgaSBlbHNlIHJhaXNlIEV4aXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgTm9uZSAoKiBubyBtYXRjaCBpbiB0aGUgd2hvbGUgc3RyaW5nLiAqKVxuICAgICAgd2l0aFxuICAgICAgfCBFeGl0IC0+ICgqIGkgaXMgYXQgdGhlIGVuZCBvZiB0aGUgc2VwYXJhdG9yICopXG4gICAgICAgIGxldCBsZWZ0X2VuZCA9ICFpIC0gc2VwX21heCAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyAxIGluXG4gICAgICAgIFNvbWUgKHN1YiBzIDAgKGxlZnRfZW5kICsgMSksXG4gICAgICAgICAgICAgIHN1YiBzIHJpZ2h0X3N0YXJ0IChzX21heCAtIHJpZ2h0X3N0YXJ0ICsgMSkpXG5cbmxldCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggPVxuICBsZXQgcHJlZml4X2wgPSBTdHJpbmcubGVuZ3RoIHByZWZpeCBpblxuICBsZXQgc3RyaW5nX2wgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgcHJlZml4X2wgPiBzdHJpbmdfbCB0aGVuIE5vbmVcbiAgZWxzZVxuICAgIHRyeVxuICAgICAgZm9yIGkgPSAwIHRvIHByZWZpeF9sIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiBwcmVmaXguW2ldIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGRvbmU7XG4gICAgICBTb21lIChTdHJpbmcuc3ViIHMgcHJlZml4X2wgKHN0cmluZ19sIC0gcHJlZml4X2wpKVxuICAgIHdpdGggXyAtPiBOb25lXG5cbmxldCBkcm9wIHMgbiA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIG4gPj0gbFxuICB0aGVuIFwiXCJcbiAgZWxzZSBTdHJpbmcuc3ViIHMgbiAobCAtIG4pXG5cbmxldCB0YWtlIHMgbiA9XG4gIGlmIG4gPj0gU3RyaW5nLmxlbmd0aCBzXG4gIHRoZW4gc1xuICBlbHNlIFN0cmluZy5zdWIgcyAwIG5cbiIsInR5cGUgYmlnc3RyaW5nID1cbiAgKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxudHlwZSB0ID0gYmlnc3RyaW5nXG5cbmxldCBjcmVhdGUgc2l6ZSA9IEJpZ2FycmF5LihBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgc2l6ZSlcbmxldCBlbXB0eSAgICAgICA9IGNyZWF0ZSAwXG5cbm1vZHVsZSBCQTEgPSBCaWdhcnJheS5BcnJheTFcblxubGV0IGxlbmd0aCB0ID0gQkExLmRpbSB0XG5cbmV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbmV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gY2hhciAgICAgICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgICAgICAgICAgICA6IHQgICAgICAgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgICA6IHQgICAgICAgLT4gc3JjX29mZjppbnQgLT4gQnl0ZXMudCAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXNcIiAgICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZnJvbV9ieXRlcyA6IEJ5dGVzLnQgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1wiICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1wiICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcCA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wX3N0cmluZyA6IHQgLT4gaW50IC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jaHIgOiB0IC0+IGludCAtPiBjaGFyIC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNoclwiIFtAQG5vYWxsb2NdXG5cbmxldCBzdWIgdCB+b2ZmIH5sZW4gPVxuICBCQTEuc3ViIHQgb2ZmIGxlblxuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHMgb3AgYnVmZmVyX2xlbiBvZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWZmZXJfbGVuOiAlZCwgb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBidWZmZXJfbGVuIG9mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19ibGl0IG9wIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBzcmNfbGVuOiAlZCwgc3JjX29mZjogJWQsIGRzdF9sZW46ICVkLCBkc3Rfb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzX21lbWNtcCBvcCBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IGJ1ZjFfbGVuOiAlZCwgYnVmMV9vZmY6ICVkLCBidWYyX2xlbjogJWQsIGJ1ZjJfb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbigqIEEgbm90ZSBvbiBib3VuZHMgY2hlY2tpbmcuXG4gKlxuICogVGhlIGNvZGUgc2hvdWxkIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgYmxpdCBkb2Vzbid0XG4gKiBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlcjpcbiAqXG4gKiAgIHtbb2ZmICsgbGVuIDw9IGJ1ZmZlcl9sZW5dfVxuICpcbiAqIEhvd2V2ZXIsIHRoaXMgbWF5IGxlYWQgdG8gYW4gaW50ZWdlciBvdmVyZmxvdyBmb3IgbGFyZ2UgdmFsdWVzIG9mIFtvZmZdLFxuICogZS5nLiwgW21heF9pbnRdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBjb21wYXJpc29uIHRvIHJldHVybiBbdHJ1ZV0gd2hlbiBpdFxuICogc2hvdWxkIHJlYWxseSByZXR1cm4gW2ZhbHNlXS5cbiAqXG4gKiBBbiBlcXVpdmFsZW50IGNvbXBhcmlzb24gdGhhdCBkb2VzIG5vdCBydW4gaW50byB0aGlzIGludGVnZXIgb3ZlcmZsb3dcbiAqIHByb2JsZW0gaXM6XG4gKlxuICogICB7W2J1ZmZlcl9sZW4gLSBvZmYgPT4gbGVuXX1cbiAqXG4gKiBUaGlzIGlzIGNoZWNraW5nIHRoYXQgdGhlIGlucHV0IGJ1ZmZlciwgbGVzcyB0aGUgb2Zmc2V0LCBpcyBzdWZmaWNpZW50bHlcbiAqIGxvbmcgdG8gcGVyZm9ybSB0aGUgYmxpdC4gU2luY2UgdGhlIGV4cHJlc3Npb24gaXMgc3VidHJhY3RpbmcgW29mZl0gcmF0aGVyXG4gKiB0aGFuIGFkZGluZyBpdCwgaXQgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGUgb3ZlcmZsb3cgdGhhdCB0aGUgcHJldmlvdXNcbiAqIGluZXF1YWxpdHkgZGlkLiBBcyBsb25nIGFzIHRoZXJlIGlzIGEgY2hlY2sgdG8gZW5zdXJlIHRoYXQgW29mZl0gaXMgbm90XG4gKiBuZWdhdGl2ZSwgaXQgd29uJ3QgdW5kZXJmbG93IGVpdGhlci4gKilcblxubGV0IGNvcHkgdCB+b2ZmIH5sZW4gPVxuICBsZXQgYnVmZmVyX2xlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJjb3B5XCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCB0IH5zcmNfb2ZmOm9mZiBkc3QgfmRzdF9vZmY6MCB+bGVuO1xuICBkc3Rcbjs7XG5cbmxldCBzdWJzdHJpbmcgdCB+b2ZmIH5sZW4gPVxuICBsZXQgYnVmZmVyX2xlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJzdWJzdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHQgfnNyY19vZmY6MCBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiXG47O1xuXG5sZXQgb2Zfc3RyaW5nIH5vZmYgfmxlbiBzID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm9mX3N0cmluZ1wiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHMgfnNyY19vZmY6b2ZmIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBiXG47O1xuXG5sZXQgYmxpdCBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IFN0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IEJ5dGVzLmxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfZnJvbV9ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X3RvX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IEJ5dGVzLmxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBtZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IGxlbmd0aCBidWYyIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjFfb2ZmIDwgMCB8fCBidWYxX2xlbiAtIGJ1ZjFfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNtcCBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuXG47O1xuXG5sZXQgbWVtY21wX3N0cmluZyBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuID1cbiAgbGV0IGJ1ZjFfbGVuID0gbGVuZ3RoIGJ1ZjEgaW5cbiAgbGV0IGJ1ZjJfbGVuID0gU3RyaW5nLmxlbmd0aCBidWYyIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjJfb2ZmIDwgMCB8fCBidWYyX2xlbiAtIGJ1ZjJfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNociBidWYgYnVmX29mZiBjaHIgbGVuID1cbiAgbGV0IGJ1Zl9sZW4gPSBsZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm1lbWNoclwiIGJ1Zl9sZW4gYnVmX29mZiBsZW47XG4gIGlmIGJ1Zl9vZmYgPCAwIHx8IGJ1Zl9sZW4gLSBidWZfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY2hyIGJ1ZiBidWZfb2ZmIGNociBsZW5cblxuKCogU2FmZSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMyXCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0XCJcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjRcIlxuXG5tb2R1bGUgU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF8xNiBicyBvZmYgKGJzd2FwMTYgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgYnMgb2ZmIChic3dhcF9pbnQzMiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF8xNiBicyBvZmYgPVxuICAgIGJzd2FwMTYgKGNhbWxfYmlnc3RyaW5nX2dldF8xNiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQ2NCAoY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZilcblxuICBsZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgeCBvZmYgPVxuICAgICgoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcbmVuZFxuXG5sZXQgc2V0X2ludDE2X2xlLCBzZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2LCBjYW1sX2JpZ3N0cmluZ19zZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMTZcblxubGV0IHNldF9pbnQzMl9sZSwgc2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMiwgY2FtbF9iaWdzdHJpbmdfc2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzMyICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzMyXG5cbmxldCBzZXRfaW50NjRfbGUsIHNldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3NldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF82NCAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF82NFxuXG5sZXQgZ2V0X2ludDE2X2xlLCBnZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2LCBjYW1sX2JpZ3N0cmluZ19nZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMTZcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCB4IG9mZiA9XG4gICgoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUsIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlICA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5nZXRfaW50MTZfc2lnbl9leHRlbmRlZCAgLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXBcbiAgZWxzZSBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAsIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRcblxubGV0IGdldF9pbnQzMl9sZSwgZ2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzMyXG5cbmxldCBnZXRfaW50NjRfbGUsIGdldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjQsIGNhbWxfYmlnc3RyaW5nX2dldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF82NCAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF82NFxuXG4oKiBVbnNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcblxubW9kdWxlIFVTd2FwID0gc3RydWN0XG4gIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgYnMgb2ZmIChic3dhcF9pbnQzMiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IGJzIG9mZiAoYnN3YXBfaW50NjQgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiBicyBvZmYgPVxuICAgIGJzd2FwMTYgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZiA9XG4gICAgYnN3YXBfaW50MzIgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgYnMgb2ZmKVxuZW5kXG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2xlLCB1bnNhZmVfc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9sZSwgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfbGUsIHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlLCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlIHggb2ZmID1cbiAgKCh1bnNhZmVfZ2V0X2ludDE2X2xlIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9iZSB4IG9mZiApIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSwgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGUsIHVuc2FmZV9nZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4iLCJ0eXBlICdhIHN0YXRlID1cbiAgfCBQYXJ0aWFsIG9mICdhIHBhcnRpYWxcbiAgfCBEb25lICAgIG9mIGludCAqICdhXG4gIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG5hbmQgJ2EgcGFydGlhbCA9XG4gIHsgY29tbWl0dGVkIDogaW50XG4gIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHN0YXRlIH1cblxuXG5sZXQgc3RhdGVfdG9fb3B0aW9uIHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpIC0+IFNvbWUgdlxuICB8IEZhaWwgXyAgICAgLT4gTm9uZVxuICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuXG5sZXQgZmFpbF90b19zdHJpbmcgbWFya3MgZXJyID1cbiAgU3RyaW5nLmNvbmNhdCBcIiA+IFwiIG1hcmtzIF4gXCI6IFwiIF4gZXJyXG5cbmxldCBzdGF0ZV90b19yZXN1bHQgeCA9IG1hdGNoIHggd2l0aFxuICB8IERvbmUoXywgdikgICAgICAgICAgLT4gT2sgdlxuICB8IFBhcnRpYWwgXyAgICAgICAgICAgLT4gRXJyb3IgXCJpbmNvbXBsZXRlIGlucHV0XCJcbiAgfCBGYWlsKF8sIG1hcmtzLCBlcnIpIC0+IEVycm9yIChmYWlsX3RvX3N0cmluZyBtYXJrcyBlcnIpXG4iLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbnR5cGUgdCA9XG4gIHsgbXV0YWJsZSBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDogaW50XG4gIDsgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyAgICAgICAgIDogaW50XG4gIDsgb2ZmICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50XG4gIDsgbGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50XG4gIDsgYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDogQmlnc3RyaW5nYWYudFxuICB9XG5cbmxldCBjcmVhdGUgYnVmZmVyIH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzID1cbiAgeyBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gY29tbWl0dGVkX2J5dGVzXG4gIDsgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IG9mZlxuICA7IGxlblxuICA7IGJ1ZmZlciB9XG5cbmxldCBsZW5ndGggICAgICAgICAgICAgICAgIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgKyB0LmxlblxubGV0IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgdCA9IHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xubGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCA9IHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgY29tbWl0dGVkX2J5dGVzX2Rpc2NyZXBhbmN5IHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgLSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCAgdCA9IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0XG5cbmxldCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IHQubGVuIC0gYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgdFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCArIHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0ID0gbGVuZ3RoIHQpO1xuICBhc3NlcnQgKHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCAtIGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICB0ID0gYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgdCk7XG47O1xuXG5sZXQgb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyA9XG4gIHQub2ZmICsgcG9zIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5cbmxldCBhcHBseSB0IHBvcyBsZW4gfmYgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBmIHQuYnVmZmVyIH5vZmYgfmxlblxuXG5sZXQgdW5zYWZlX2dldF9jaGFyIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldCB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IGNvdW50X3doaWxlIHQgcG9zIH5mID1cbiAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gIGxldCBvZmYgICAgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIGxldCBpICAgICAgPSByZWYgb2ZmIGluXG4gIGxldCBsaW1pdCAgPSB0Lm9mZiArIHQubGVuIGluXG4gIHdoaWxlICFpIDwgbGltaXQgJiYgZiAoQmlnc3RyaW5nYWYudW5zYWZlX2dldCBidWZmZXIgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gICFpIC0gb2ZmXG47O1xuXG5sZXQgY29tbWl0IHQgcG9zID1cbiAgdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIDwtIHBvc1xuOztcbiIsIm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gICAgfCBMYXp5ICAgIG9mICdhIHQgTGF6eS50XG4gICAgfCBEb25lICAgIG9mIGludCAqICdhXG4gICAgfCBGYWlsICAgIG9mIGludCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgYW5kICdhIHBhcnRpYWwgPVxuICAgIHsgY29tbWl0dGVkIDogaW50XG4gICAgOyBjb250aW51ZSAgOiBCaWdzdHJpbmdhZi50IC0+IG9mZjppbnQgLT4gbGVuOmludCAtPiBNb3JlLnQgLT4gJ2EgdCB9XG5cbmVuZFxudHlwZSAnYSB3aXRoX3N0YXRlID0gSW5wdXQudCAtPiAgaW50IC0+IE1vcmUudCAtPiAnYVxuXG50eXBlICdhIGZhaWx1cmUgPSAoc3RyaW5nIGxpc3QgLT4gc3RyaW5nIC0+ICdhIFN0YXRlLnQpIHdpdGhfc3RhdGVcbnR5cGUgKCdhLCAncikgc3VjY2VzcyA9ICgnYSAtPiAnciBTdGF0ZS50KSB3aXRoX3N0YXRlXG5cbnR5cGUgJ2EgdCA9XG4gIHsgcnVuIDogJ3IuICgnciBmYWlsdXJlIC0+ICgnYSwgJ3IpIHN1Y2Nlc3MgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZSB9XG5cbmxldCBmYWlsX2sgICAgaW5wdXQgcG9zIF8gbWFya3MgbXNnID1cbiAgU3RhdGUuRmFpbChwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCBtYXJrcywgbXNnKVxubGV0IHN1Y2NlZWRfayBpbnB1dCBwb3MgXyAgICAgICB2ICAgPVxuICBTdGF0ZS5Eb25lKHBvcyAtIElucHV0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgaW5wdXQsIHYpXG5cbmxldCByZWMgdG9fZXhwb3J0ZWRfc3RhdGUgPSBmdW5jdGlvblxuICB8IFN0YXRlLlBhcnRpYWwge2NvbW1pdHRlZDtjb250aW51ZX0gLT5cbiAgICAgRXhwb3J0ZWRfc3RhdGUuUGFydGlhbFxuICAgICAgIHsgY29tbWl0dGVkXG4gICAgICAgOyBjb250aW51ZSA9XG4gICAgICAgICAgIGZ1biBicyB+b2ZmIH5sZW4gbW9yZSAtPlxuICAgICAgICAgICB0b19leHBvcnRlZF9zdGF0ZSAoY29udGludWUgYnMgfm9mZiB+bGVuIG1vcmUpfVxuICB8IFN0YXRlLkRvbmUgKGkseCkgLT4gRXhwb3J0ZWRfc3RhdGUuRG9uZSAoaSx4KVxuICB8IFN0YXRlLkZhaWwgKGksIHNsLCBzKSAtPiBFeHBvcnRlZF9zdGF0ZS5GYWlsIChpLCBzbCwgcylcbiAgfCBTdGF0ZS5MYXp5IHggLT4gdG9fZXhwb3J0ZWRfc3RhdGUgKExhenkuZm9yY2UgeClcblxubGV0IHBhcnNlIHAgPVxuICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgQmlnc3RyaW5nYWYuZW1wdHkgfmNvbW1pdHRlZF9ieXRlczowIH5vZmY6MCB+bGVuOjAgaW5cbiAgdG9fZXhwb3J0ZWRfc3RhdGUgKHAucnVuIGlucHV0IDAgSW5jb21wbGV0ZSBmYWlsX2sgc3VjY2VlZF9rKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nIHAgaW5wdXQgPVxuICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgaW5wdXQgfmNvbW1pdHRlZF9ieXRlczowIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggaW5wdXQpIGluXG4gIEV4cG9ydGVkX3N0YXRlLnN0YXRlX3RvX3Jlc3VsdCAodG9fZXhwb3J0ZWRfc3RhdGUgKHAucnVuIGlucHV0IDAgQ29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaykpXG5cbm1vZHVsZSBNb25hZCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuIHYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgdlxuICAgIH1cblxuICBsZXQgZmFpbCBtc2cgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgX3N1Y2MgLT5cbiAgICAgIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gbXNnXG4gICAgfVxuXG4gIGxldCAoPj49KSBwIGYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIHYgPSAoZiB2KS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPj58KSBwIGYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIHYgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIChmIHYpIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPCQ+KSBmIG0gPVxuICAgIG0gPj58IGZcblxuICBsZXQgKDwqPikgZiBtID1cbiAgICAoKiBmID4+PSBmdW4gZiAtPiBtID4+fCBmICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzAgaW5wdXQwIHBvczAgbW9yZTAgZiA9XG4gICAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtID0gc3VjYyBpbnB1dDEgcG9zMSBtb3JlMSAoZiBtKSBpblxuICAgICAgICBtLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgZi5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5cbiAgbGV0IGxpZnQgZiBtID1cbiAgICBmIDwkPiBtXG5cbiAgbGV0IGxpZnQyIGYgbTEgbTIgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID0gc3VjYyBpbnB1dDIgcG9zMiBtb3JlMiAoZiBtMSBtMikgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgc3VjYyBpbnB1dDMgcG9zMyBtb3JlMyAoZiBtMSBtMiBtMykgaW5cbiAgICAgICAgICBtMy5ydW4gaW5wdXQyIHBvczIgbW9yZTIgZmFpbCBzdWNjMyBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgbGlmdDQgZiBtMSBtMiBtMyBtNCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPVxuICAgICAgICAgIGxldCBzdWNjMyBpbnB1dDMgcG9zMyBtb3JlMyBtMyA9XG4gICAgICAgICAgICBsZXQgc3VjYzQgaW5wdXQ0IHBvczQgbW9yZTQgbTQgPVxuICAgICAgICAgICAgICBzdWNjIGlucHV0NCBwb3M0IG1vcmU0IChmIG0xIG0yIG0zIG00KSBpblxuICAgICAgICAgICAgbTQucnVuIGlucHV0MyBwb3MzIG1vcmUzIGZhaWwgc3VjYzQgaW5cbiAgICAgICAgICBtMy5ydW4gaW5wdXQyIHBvczIgbW9yZTIgZmFpbCBzdWNjMyBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgKCAqPikgYSBiID1cbiAgICAoKiBhID4+PSBmdW4gXyAtPiBiICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9IGIucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwqICkgYSBiID1cbiAgICAoKiBhID4+PSBmdW4geCAtPiBiID4+fCBmdW4gXyAtPiB4ICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzAgaW5wdXQwIHBvczAgbW9yZTAgeCA9XG4gICAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBfID0gc3VjYyBpbnB1dDEgcG9zMSBtb3JlMSB4IGluXG4gICAgICAgIGIucnVuIGlucHV0MCBwb3MwIG1vcmUwIGZhaWwgc3VjYzFcbiAgICAgIGluXG4gICAgICBhLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MwIH1cbmVuZFxuXG5tb2R1bGUgQ2hvaWNlID0gc3RydWN0XG4gIGxldCAoPD8+KSBwIG1hcmsgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgKG1hcms6Om1hcmtzKSBtc2cgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5cbiAgbGV0ICg8fD4pIHAgcSA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgbWFya3MgbXNnID1cbiAgICAgICAgKCogVGhlIG9ubHkgdHdvIGNvbnN0cnVjdG9ycyB0aGF0IGludHJvZHVjZSBuZXcgZmFpbHVyZSBjb250aW51YXRpb25zIGFyZVxuICAgICAgICAgKiBbPD8+XSBhbmQgWzx8Pl0uIElmIHRoZSBpbml0aWFsIGlucHV0IHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB0aGUgbGVuZ3RoXG4gICAgICAgICAqIG9mIHRoZSBjb21taXR0ZWQgaW5wdXQsIHRoZW4gY2FsbGluZyB0aGUgZmFpbHVyZSBjb250aW51YXRpb24gd2lsbFxuICAgICAgICAgKiBoYXZlIHRoZSBlZmZlY3Qgb2YgdW53aW5kaW5nIGFsbCBjaG9pY2VzIGFuZCBjb2xsZWN0aW5nIG1hcmtzIGFsb25nXG4gICAgICAgICAqIHRoZSB3YXkuICopXG4gICAgICAgIGlmIHBvcyA8IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnIHRoZW5cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUgbWFya3MgbXNnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBxLnJ1biBpbnB1dCcgcG9zIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCcgc3VjY1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTW9uYWRfdXNlX2Zvcl9kZWJ1Z2dpbmcgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IE1vbmFkLnJldHVyblxuICBsZXQgZmFpbCAgID0gTW9uYWQuZmFpbFxuICBsZXQgKD4+PSkgID0gTW9uYWQuKD4+PSlcblxuICBsZXQgKD4+fCkgbSBmID0gbSA+Pj0gZnVuIHggLT4gcmV0dXJuIChmIHgpXG5cbiAgbGV0ICg8JD4pIGYgbSA9IG0gPj58IGZcbiAgbGV0ICg8Kj4pIGYgbSA9IGYgPj49IGZ1biBmIC0+IG0gPj58IGZcblxuICBsZXQgbGlmdCAgPSAoPj58KVxuICBsZXQgbGlmdDIgZiBtMSBtMiAgICAgICA9IGYgPCQ+IG0xIDwqPiBtMlxuICBsZXQgbGlmdDMgZiBtMSBtMiBtMyAgICA9IGYgPCQ+IG0xIDwqPiBtMiA8Kj4gbTNcbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zIDwqPiBtNFxuXG4gIGxldCAoICo+KSBhIGIgPSBhID4+PSBmdW4gXyAtPiBiXG4gIGxldCAoPCogKSBhIGIgPSBhID4+PSBmdW4geCAtPiBiID4+fCBmdW4gXyAtPiB4XG5lbmRcbiIsInR5cGUgdCA9XG4gIHsgbXV0YWJsZSBidWYgOiBCaWdzdHJpbmdhZi50XG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludCB9XG5cbmxldCBvZl9iaWdzdHJpbmcgfm9mZiB+bGVuIGJ1ZiA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKEJpZ3N0cmluZ2FmLmxlbmd0aCBidWYgPj0gbGVuIC0gb2ZmKTtcbiAgeyBidWY7IG9mZjsgbGVuIH1cblxubGV0IGNyZWF0ZSBsZW4gPVxuICBvZl9iaWdzdHJpbmcgfm9mZjowIH5sZW46MCAoQmlnc3RyaW5nYWYuY3JlYXRlIGxlbilcblxubGV0IHdyaXRhYmxlX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSB0LmxlblxuXG5sZXQgdHJhaWxpbmdfc3BhY2UgdCA9XG4gIEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiAtICh0Lm9mZiArIHQubGVuKVxuXG5sZXQgY29tcHJlc3MgdCA9XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIHQuYnVmIH5kc3Rfb2ZmOjAgfmxlbjp0LmxlbjtcbiAgdC5vZmYgPC0gMFxuXG5sZXQgZ3JvdyB0IHRvX2NvcHkgPVxuICBsZXQgb2xkX2xlbiA9IEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIGxldCBzcGFjZSA9IHdyaXRhYmxlX3NwYWNlIHQgaW5cbiAgd2hpbGUgc3BhY2UgKyAhbmV3X2xlbiAtIG9sZF9sZW4gPCB0b19jb3B5IGRvXG4gICAgbmV3X2xlbiA6PSAoMyAqICFuZXdfbGVuKSAvIDJcbiAgZG9uZTtcbiAgbGV0IG5ld19idWYgPSBCaWdzdHJpbmdhZi5jcmVhdGUgIW5ld19sZW4gaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgdC5idWYgfnNyY19vZmY6dC5vZmYgbmV3X2J1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQuYnVmIDwtIG5ld19idWY7XG4gIHQub2ZmIDwtIDBcblxubGV0IGVuc3VyZSB0IHRvX2NvcHkgPVxuICBpZiB0cmFpbGluZ19zcGFjZSB0IDwgdG9fY29weSB0aGVuXG4gICAgaWYgd3JpdGFibGVfc3BhY2UgdCA+PSB0b19jb3B5XG4gICAgdGhlbiBjb21wcmVzcyB0XG4gICAgZWxzZSBncm93IHQgdG9fY29weVxuXG5sZXQgd3JpdGVfcG9zIHQgPVxuICB0Lm9mZiArIHQubGVuXG5cbmxldCBmZWVkX3N0cmluZyB0IH5vZmYgfmxlbiBzdHIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHN0ciA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHN0ciB+c3JjX29mZjpvZmYgdC5idWYgfmRzdF9vZmY6KHdyaXRlX3BvcyB0KSB+bGVuO1xuICB0LmxlbiA8LSB0LmxlbiArIGxlblxuXG5sZXQgZmVlZF9iaWdzdHJpbmcgdCB+b2ZmIH5sZW4gYiA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKEJpZ3N0cmluZ2FmLmxlbmd0aCBiID49IGxlbiAtIG9mZik7XG4gIGVuc3VyZSB0IGxlbjtcbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgYiB+c3JjX29mZjpvZmYgdC5idWYgfmRzdF9vZmY6KHdyaXRlX3BvcyB0KSB+bGVuO1xuICB0LmxlbiA8LSB0LmxlbiArIGxlblxuXG5sZXQgZmVlZF9pbnB1dCB0ID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nICAgIHMgLT4gZmVlZF9zdHJpbmcgICAgdCB+b2ZmOjAgfmxlbjooU3RyaW5nICAgICAubGVuZ3RoIHMpIHNcbiAgfCBgQmlnc3RyaW5nIGIgLT4gZmVlZF9iaWdzdHJpbmcgdCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGIpIGJcblxubGV0IHNoaWZ0IHQgbiA9XG4gIGFzc2VydCAodC5sZW4gPj0gbik7XG4gIHQub2ZmIDwtIHQub2ZmICsgbjtcbiAgdC5sZW4gPC0gdC5sZW4gLSBuXG5cbmxldCBmb3JfcmVhZGluZyB7IGJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIEJpZ3N0cmluZ2FmLnN1YiB+b2ZmIH5sZW4gYnVmXG5cbm1vZHVsZSBVbmNvbnN1bWVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBidWYgOiBCaWdzdHJpbmdhZi50XG4gICAgOyBvZmYgOiBpbnRcbiAgICA7IGxlbiA6IGludCB9XG5lbmRcblxubGV0IHVuY29uc3VtZWQgPyhzaGlmdD0wKSB7IGJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIGFzc2VydCAobGVuID49IHNoaWZ0KTtcbiAgeyBVbmNvbnN1bWVkLmJ1Zjsgb2ZmID0gb2ZmICsgc2hpZnQ7IGxlbiA9IGxlbiAtIHNoaWZ0IH1cblxubGV0IG9mX3VuY29uc3VtZWQgeyBVbmNvbnN1bWVkLmJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbnR5cGUgdW5jb25zdW1lZCA9IFVuY29uc3VtZWQudCA9XG4gIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG9mZiA6IGludFxuICA7IGxlbiA6IGludCB9XG4iLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbm1vZHVsZSBCaWdhcnJheSA9IHN0cnVjdFxuICAoKiBEbyBub3QgYWNjZXNzIEJpZ2FycmF5IG9wZXJhdGlvbnMgZGlyZWN0bHkuIElmIGFueXRoaW5nJ3MgbmVlZGVkLCByZWZlciB0b1xuICAgKiB0aGUgaW50ZXJuYWwgQmlnc3RyaW5nIG1vZHVsZS4gKilcbmVuZFxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZ2FmLnRcblxuXG5tb2R1bGUgVW5idWZmZXJlZCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhcnNlclxuXG4gIGluY2x1ZGUgRXhwb3J0ZWRfc3RhdGVcblxuICB0eXBlIG1vcmUgPSBNb3JlLnQgPVxuICAgIHwgQ29tcGxldGVcbiAgICB8IEluY29tcGxldGVcbmVuZFxuXG5pbmNsdWRlIFVuYnVmZmVyZWRcbmluY2x1ZGUgUGFyc2VyLk1vbmFkXG5pbmNsdWRlIFBhcnNlci5DaG9pY2VcblxubW9kdWxlIEJ1ZmZlcmVkID0gc3RydWN0XG4gIHR5cGUgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkID1cbiAgICB7IGJ1ZiA6IGJpZ3N0cmluZ1xuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuXG4gIHR5cGUgaW5wdXQgPVxuICAgIFsgYEJpZ3N0cmluZyBvZiBiaWdzdHJpbmdcbiAgICB8IGBTdHJpbmcgICAgb2Ygc3RyaW5nIF1cblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFBhcnRpYWwgb2YgKFsgaW5wdXQgfCBgRW9mIF0gLT4gJ2Egc3RhdGUpXG4gICAgfCBEb25lICAgIG9mIHVuY29uc3VtZWQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiB1bmNvbnN1bWVkICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuICBsZXQgZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIH5mIGJ1ZmZlcmluZyA9IGZ1bmN0aW9uXG4gICAgfCBVbmJ1ZmZlcmVkLlBhcnRpYWwgcCAgICAgICAgIC0+IFBhcnRpYWwgKGYgcClcbiAgICB8IFVuYnVmZmVyZWQuRG9uZShjb25zdW1lZCwgdikgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRG9uZSh1bmNvbnN1bWVkLCB2KVxuICAgIHwgVW5idWZmZXJlZC5GYWlsKGNvbnN1bWVkLCBtYXJrcywgbXNnKSAtPlxuICAgICAgbGV0IHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCB+c2hpZnQ6Y29uc3VtZWQgYnVmZmVyaW5nIGluXG4gICAgICBGYWlsKHVuY29uc3VtZWQsIG1hcmtzLCBtc2cpXG5cbiAgbGV0IHBhcnNlID8oaW5pdGlhbF9idWZmZXJfc2l6ZT0weDEwMDApIHAgPVxuICAgIGlmIGluaXRpYWxfYnVmZmVyX3NpemUgPCAxIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicGFyc2U6IGludmFsaWQgYXJndW1lbnQsIGluaXRpYWxfYnVmZmVyX3NpemUgPCAxXCI7XG4gICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5jcmVhdGUgaW5pdGlhbF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCByZWMgZiBwIGlucHV0ID1cbiAgICAgIEJ1ZmZlcmluZy5zaGlmdCBidWZmZXJpbmcgcC5jb21taXR0ZWQ7XG4gICAgICBsZXQgbW9yZSA6IE1vcmUudCA9XG4gICAgICAgIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgfCBgRW9mICAgICAgICAgICAgLT4gQ29tcGxldGVcbiAgICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgICAgSW5jb21wbGV0ZVxuICAgICAgaW5cbiAgICAgIGxldCBmb3JfcmVhZGluZyA9IEJ1ZmZlcmluZy5mb3JfcmVhZGluZyBidWZmZXJpbmcgaW5cbiAgICAgIHAuY29udGludWUgZm9yX3JlYWRpbmcgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBmb3JfcmVhZGluZykgbW9yZVxuICAgICAgfD4gZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIGJ1ZmZlcmluZyB+ZlxuICAgIGluXG4gICAgVW5idWZmZXJlZC5wYXJzZSBwXG4gICAgfD4gZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIGJ1ZmZlcmluZyB+ZlxuXG4gIGxldCBmZWVkIHN0YXRlIGlucHV0ID1cbiAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgfCBQYXJ0aWFsIGsgLT4gayBpbnB1dFxuICAgIHwgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgfCBgRW9mICAgLT4gc3RhdGVcbiAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcub2ZfdW5jb25zdW1lZCB1bmNvbnN1bWVkIGluXG4gICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgRmFpbChCdWZmZXJpbmcudW5jb25zdW1lZCBidWZmZXJpbmcsIG1hcmtzLCBtc2cpXG4gICAgICBlbmRcbiAgICB8IERvbmUodW5jb25zdW1lZCwgdikgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIERvbmUoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCB2KVxuICAgICAgZW5kXG5cbiAgbGV0IHN0YXRlX3RvX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBEb25lKF8sIHYpIC0+IFNvbWUgdlxuICAgIHwgUGFydGlhbCBfICAtPiBOb25lXG4gICAgfCBGYWlsIF8gICAgIC0+IE5vbmVcblxuICBsZXQgc3RhdGVfdG9fcmVzdWx0ID0gZnVuY3Rpb25cbiAgICB8IFBhcnRpYWwgXyAgICAgICAgICAgLT4gRXJyb3IgXCJpbmNvbXBsZXRlIGlucHV0XCJcbiAgICB8IERvbmUoXywgdikgICAgICAgICAgLT4gT2sgdlxuICAgIHwgRmFpbChfLCBtYXJrcywgbXNnKSAtPiBFcnJvciAoVW5idWZmZXJlZC5mYWlsX3RvX3N0cmluZyBtYXJrcyBtc2cpXG5cbiAgbGV0IHN0YXRlX3RvX3VuY29uc3VtZWQgPSBmdW5jdGlvblxuICAgIHwgRG9uZSh1bmNvbnN1bWVkLCBfKVxuICAgIHwgRmFpbCh1bmNvbnN1bWVkLCBfLCBfKSAtPiBTb21lIHVuY29uc3VtZWRcbiAgICB8IFBhcnRpYWwgXyAgICAgICAgICAgICAgLT4gTm9uZVxuXG5lbmRcblxuKCoqIEJFR0lOOiBnZXR0aW5nIGlucHV0ICopXG5cbmxldCByZWMgcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2MgPVxuICAoKiBbcHJvbXB0XSBzaG91bGQgb25seSBjYWxsIFtzdWNjXSBpZiBpdCBoYXMgcmVjZWl2ZWQgbW9yZSBpbnB1dC4gSWYgdGhlcmVcbiAgICogaXMgbm8gY2hhbmNlIHRoYXQgdGhlIGlucHV0IHdpbGwgZ3JvdywgaS5lLiwgW21vcmUgPSBDb21wbGV0ZV0sIHRoZW5cbiAgICogW3Byb21wdF0gc2hvdWxkIGNhbGwgW2ZhaWxdLiBPdGhlcndpc2UgKGluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbnB1dFxuICAgKiBoYXNuJ3QgZ3Jvd24gYnV0IFttb3JlID0gSW5jb21wbGV0ZV0ganVzdCBwcm9tcHQgYWdhaW4uICopXG4gIGxldCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgPSBJbnB1dC5wYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgaW5wdXQgaW5cbiAgbGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgICA9IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgICBpbnB1dCBpblxuICAoKiBUaGUgY29udGludWF0aW9uIHNob3VsZCBub3QgaG9sZCBhbnkgcmVmZXJlbmNlcyB0byBpbnB1dCBhYm92ZS4gKilcbiAgbGV0IGNvbnRpbnVlIGlucHV0IH5vZmYgfmxlbiBtb3JlID1cbiAgICBpZiBsZW4gPCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgZmFpbHdpdGggXCJwcm9tcHQ6IGlucHV0IHNocnVuayFcIjtcbiAgICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgaW5wdXQgfm9mZiB+bGVuIH5jb21taXR0ZWRfYnl0ZXM6cGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpblxuICAgIGlmIGxlbiA9IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0aGVuXG4gICAgICBtYXRjaCAobW9yZSA6IE1vcmUudCkgd2l0aFxuICAgICAgfCBDb21wbGV0ZSAgIC0+IGZhaWwgaW5wdXQgcG9zIE1vcmUuQ29tcGxldGVcbiAgICAgIHwgSW5jb21wbGV0ZSAtPiBwcm9tcHQgaW5wdXQgcG9zIGZhaWwgc3VjY1xuICAgIGVsc2VcbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmVcbiAgaW5cbiAgU3RhdGUuUGFydGlhbCB7IGNvbW1pdHRlZCA9IElucHV0LmJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IGlucHV0OyBjb250aW51ZSB9XG5cbmxldCBkZW1hbmRfaW5wdXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBtYXRjaCAobW9yZSA6IE1vcmUudCkgd2l0aFxuICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwibm90IGVub3VnaCBpbnB1dFwiXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnICgpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwibm90IGVub3VnaCBpbnB1dFwiIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgPVxuICBsZXQgcmVjIGdvID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsJyBzdWNjJyAtPlxuICAgICAgaWYgcG9zJyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0JyB0aGVuXG4gICAgICAgIHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpXG4gICAgICBlbHNlXG4gICAgICAgIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsJyBzdWNjJ1xuICAgIH1cbiAgaW5cbiAgKGRlbWFuZF9pbnB1dCAqPiBnbykucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjY1xuXG5sZXQgdW5zYWZlX2FwcGx5IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYpXG4gIH1cblxubGV0IHVuc2FmZV9hcHBseV9vcHQgbGVuIH5mID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+ZiB3aXRoXG4gICAgfCBFcnJvciBlIC0+IGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gZVxuICAgIHwgT2sgICAgeCAtPiBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgeFxuICB9XG5cbmxldCBlbnN1cmUgbiBwID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zICsgbiA8PSBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjY1xuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9IHAucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCBuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG4oKiogRU5EOiBnZXR0aW5nIGlucHV0ICopXG5cbmxldCBhdF9lbmRfb2ZfaW5wdXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSBmYWxzZVxuICAgIGVsc2UgbWF0Y2ggbW9yZSB3aXRoXG4gICAgfCBDb21wbGV0ZSAtPiBzdWNjIGlucHV0IHBvcyBtb3JlIHRydWVcbiAgICB8IEluY29tcGxldGUgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgZmFsc2VcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgdHJ1ZSBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbmRfb2ZfaW5wdXQgPVxuICBhdF9lbmRfb2ZfaW5wdXRcbiAgPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlICAtPiByZXR1cm4gKClcbiAgICB8IGZhbHNlIC0+IGZhaWwgXCJlbmRfb2ZfaW5wdXRcIlxuXG5sZXQgYWR2YW5jZSBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwiYWR2YW5jZVwiXG4gIGVsc2VcbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+IHN1Y2MgaW5wdXQgKHBvcyArIG4pIG1vcmUgKCkgfVxuICAgIGluXG4gICAgZW5zdXJlIG4gcFxuXG5sZXQgcG9zID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IHBvcyBtb3JlIHBvcyB9XG5cbmxldCBhdmFpbGFibGUgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoSW5wdXQubGVuZ3RoIGlucHV0IC0gcG9zKVxuICB9XG5cbmxldCBjb21taXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgSW5wdXQuY29tbWl0IGlucHV0IHBvcztcbiAgICBzdWNjIGlucHV0IHBvcyBtb3JlICgpIH1cblxuKCogRG8gbm90IHVzZSB0aGlzIGlmIFtwXSBjb250YWlucyBhIFtjb21taXRdLiAqKVxubGV0IHVuc2FmZV9sb29rYWhlYWQgcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdWNjJyBpbnB1dCcgXyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zIG1vcmUnIHYgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IHBlZWtfY2hhciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoU29tZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykpXG4gICAgZWxzZSBpZiBtb3JlID0gQ29tcGxldGUgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoU29tZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0JyBwb3MnKSlcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgTm9uZSBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbigqIFRoaXMgcGFyc2VyIGlzIHRvbyBpbXBvcnRhbnQgdG8gbm90IGJlIG9wdGltaXplZC4gRG8gYSBjdXN0b20gam9iLiAqKVxubGV0IHJlYyBwZWVrX2NoYXJfZmFpbCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dFxuICAgIHRoZW4gc3VjYyBpbnB1dCBwb3MgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcylcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPVxuICAgICAgICBwZWVrX2NoYXJfZmFpbC5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIDEgaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBzYXRpc2Z5IGYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIFByaW50Zi5rc3ByaW50ZiAoZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSkgXCJzYXRpc2Z5OiAlQ1wiIGNcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPVxuICAgICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJyBpblxuICAgICAgICBpZiBmIGNcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0JyAocG9zJyArIDEpIG1vcmUnIGNcbiAgICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgICBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgY2hhciBjID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyA9IGNcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgbm90X2NoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjJyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIGlmIGMgPD4gYydcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjJ1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcIm5vdCBjaGFyICVDXCIgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfY2hhciA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSAgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBpbnQ4IGkgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IENoYXIuY29kZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgaW5cbiAgICAgIGlmIGMgPSBpIGxhbmQgMHhmZlxuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJpbnQ4ICVkXCIgaSkgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfdWludDggPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIChDaGFyLmNvZGUgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfaW50OCA9XG4gICgqIGh0dHBzOi8vZ3JhcGhpY3Muc3RhbmZvcmQuZWR1L35zZWFuZGVyL2JpdGhhY2tzLmh0bWwjVmFyaWFibGVTaWduRXh0ZW5kUmlza3kgKilcbiAgbGV0IHMgPSBTeXMuaW50X3NpemUgLSA4IGluXG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKChDaGFyLmNvZGUgYyBsc2wgcykgYXNyIHMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgc2tpcCBmID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgaWYgZiAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcylcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoKVxuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwic2tpcFwiIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgcmVjIGNvdW50X3doaWxlIH5pbml0IH5mIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBsZW4gICAgICAgICA9IElucHV0LmNvdW50X3doaWxlIGlucHV0IChwb3MgKyBpbml0KSB+ZiBpblxuICAgIGxldCBpbnB1dF9sZW4gICA9IElucHV0Lmxlbmd0aCBpbnB1dCBpblxuICAgIGxldCBpbml0JyAgICAgICA9IGluaXQgKyBsZW4gaW5cbiAgICAoKiBDaGVjayBpZiB0aGUgbG9vcCB0ZXJtaW5hdGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICAgICAqIGJ1ZmZlci4gSWYgc28sIHRoZW4gcHJvbXB0IGZvciBhZGRpdGlvbmFsIGlucHV0IGFuZCBjb250aW51ZS4gKilcbiAgICBpZiBwb3MgKyBpbml0JyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGluaXQnKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgaW5pdCcgfmY6d2l0aF9idWZmZXIpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgKGNvdW50X3doaWxlIH5pbml0OmluaXQnIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgKHBvcycgKyBpbml0JykgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgICAgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgcmVjIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCBwb3MgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICAoKiBDaGVjayBpZiB0aGUgbG9vcCB0ZXJtaW5hdGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICAgICAqIGJ1ZmZlci4gSWYgc28sIHRoZW4gcHJvbXB0IGZvciBhZGRpdGlvbmFsIGlucHV0IGFuZCBjb250aW51ZS4gKilcbiAgICBpZiBsZW4gPCAxXG4gICAgdGhlblxuICAgICAgaWYgcG9zIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgICAgdGhlbiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICAoY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb3VudF93aGlsZTFcIlxuICAgICAgICBpblxuICAgICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gICAgZWxzZSBpZiBwb3MgKyBsZW4gPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmY6d2l0aF9idWZmZXIpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgKGNvdW50X3doaWxlIH5pbml0OmxlbiB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgbGVuKSBtb3JlJyAoSW5wdXQuYXBwbHkgaW5wdXQnIHBvcycgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgICAgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgc3RyaW5nXyBmIHMgPVxuICAoKiBYWFgoc2VsaW9wb3UpOiBJbmVmZmljaWVudC4gQ291bGQgY2hlY2sgcHJlZml4IGVxdWFsaXR5IHRvIHNob3J0LWNpcmN1aXRcbiAgICogdGhlIGlvLiAqKVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGVuc3VyZSAgbGVuICh1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZjooZnVuIGJ1ZmZlciB+b2ZmIH5sZW4gLT5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgd2hpbGUgIWkgPCBsZW4gJiYgQ2hhci5lcXVhbCAoZiAoQmlnc3RyaW5nYWYudW5zYWZlX2dldCBidWZmZXIgKG9mZiArICFpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZiAoU3RyaW5nLnVuc2FmZV9nZXQgcyAhaSkpXG4gICAgZG9cbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgbGVuID0gIWlcbiAgICB0aGVuIE9rIChCaWdzdHJpbmdhZi5zdWJzdHJpbmcgYnVmZmVyIH5vZmYgfmxlbilcbiAgICBlbHNlIEVycm9yIFwic3RyaW5nXCIpKVxuXG5sZXQgc3RyaW5nIHMgICAgPSBzdHJpbmdfIChmdW4geCAtPiB4KSBzXG5sZXQgc3RyaW5nX2NpIHMgPSBzdHJpbmdfIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IHNraXBfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOihmdW4gXyB+b2ZmOl8gfmxlbjpfIC0+ICgpKVxuXG5sZXQgdGFrZSBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZTogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mOkJpZ3N0cmluZ2FmLnN1YnN0cmluZylcblxubGV0IHRha2VfYmlnc3RyaW5nIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJ0YWtlX2JpZ3N0cmluZzogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mOkJpZ3N0cmluZ2FmLmNvcHkpXG5cbmxldCB0YWtlX2JpZ3N0cmluZ193aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuY29weVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUxIGYgPVxuICBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3RpbGwgZiA9XG4gIHRha2VfYmlnc3RyaW5nX3doaWxlIChmdW4gYyAtPiBub3QgKGYgYykpXG5cbmxldCBwZWVrX3N0cmluZyBuID1cbiAgdW5zYWZlX2xvb2thaGVhZCAodGFrZSBuKVxuXG5sZXQgdGFrZV93aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHRha2VfdGlsbCBmID1cbiAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgY2hvaWNlID8oZmFpbHVyZV9tc2c9XCJubyBtb3JlIGNob2ljZXNcIikgcHMgPVxuICBMaXN0LmZvbGRfcmlnaHQgKDx8PikgcHMgKGZhaWwgZmFpbHVyZV9tc2cpXG5cbmxldCBmaXhfZGlyZWN0IGYgPVxuICBsZXQgcmVjIHAgPSBsYXp5IChmIHIpXG4gIGFuZCByID0geyBydW4gPSBmdW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIH1cbiAgaW5cbiAgclxuXG5sZXQgZml4X2xhenkgfm1heF9zdGVwcyBmID1cbiAgbGV0IHN0ZXBzID0gcmVmIG1heF9zdGVwcyBpblxuICBsZXQgcmVjIHAgPSBsYXp5IChmIHIpXG4gIGFuZCByID0geyBydW4gPSBmdW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGRlY3Igc3RlcHM7XG4gICAgaWYgIXN0ZXBzIDwgMFxuICAgIHRoZW4gKFxuICAgICAgc3RlcHMgOj0gbWF4X3N0ZXBzO1xuICAgICAgU3RhdGUuTGF6eSAobGF6eSAoKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MpKSlcbiAgICBlbHNlXG4gICAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjY1xuICAgICAgICAgIH1cbiAgaW5cbiAgclxuXG5sZXQgZml4ID0gbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgTmF0aXZlIC0+IGZpeF9kaXJlY3RcbiAgfCBCeXRlY29kZSAtPiBmaXhfZGlyZWN0XG4gIHwgT3RoZXIgXyAtPiBmdW4gZiAtPiBmaXhfbGF6eSB+bWF4X3N0ZXBzOjIwIGZcblxubGV0IG9wdGlvbiB4IHAgPVxuICBwIDx8PiByZXR1cm4geFxuXG5sZXQgY29ucyB4IHhzID0geCA6OiB4c1xuXG5sZXQgcmVjIGxpc3QgcHMgPVxuICBtYXRjaCBwcyB3aXRoXG4gIHwgW10gICAgLT4gcmV0dXJuIFtdXG4gIHwgcDo6cHMgLT4gbGlmdDIgY29ucyBwIChsaXN0IHBzKVxuXG5sZXQgY291bnQgbiBwID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwiY291bnQ6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IDAgLT4gcmV0dXJuIFtdXG4gICAgICB8IG4gLT4gbGlmdDIgY29ucyBwIChsb29wIChuIC0gMSkpXG4gICAgaW5cbiAgICBsb29wIG5cblxubGV0IG1hbnkgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAobGlmdDIgY29ucyBwIG0pIDx8PiByZXR1cm4gW10pXG5cbmxldCBtYW55MSBwID1cbiAgbGlmdDIgY29ucyBwIChtYW55IHApXG5cbmxldCBtYW55X3RpbGwgcCB0ID1cbiAgZml4IChmdW4gbSAtPlxuICAgICh0ICo+IHJldHVybiBbXSkgPHw+IChsaWZ0MiBjb25zIHAgbSkpXG5cbmxldCBzZXBfYnkxIHMgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICBsaWZ0MiBjb25zIHAgKChzICo+IG0pIDx8PiByZXR1cm4gW10pKVxuXG5sZXQgc2VwX2J5IHMgcCA9XG4gIChsaWZ0MiBjb25zIHAgKChzICo+IHNlcF9ieTEgcyBwKSA8fD4gcmV0dXJuIFtdKSkgPHw+IHJldHVybiBbXVxuXG5sZXQgc2tpcF9tYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgICAoKHAgPj58IGZ1biBfIC0+IHRydWUpIDx8PiByZXR1cm4gZmFsc2UpID4+PSBmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IG1cbiAgICAgIHwgZmFsc2UgLT4gcmV0dXJuICgpXG4gICAgKVxuXG5sZXQgc2tpcF9tYW55MSBwID1cbiAgcCAqPiBza2lwX21hbnkgcFxuXG5sZXQgZW5kX29mX2xpbmUgPVxuICAoY2hhciAnXFxuJyAqPiByZXR1cm4gKCkpIDx8PiAoc3RyaW5nIFwiXFxyXFxuXCIgKj4gcmV0dXJuICgpKSA8Pz4gXCJlbmRfb2ZfbGluZVwiXG5cbmxldCBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGF0ZSA9IHJlZiBzdGF0ZSBpblxuICAgIGxldCBwYXJzZXIgPVxuICAgICAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZjooZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggZiAhc3RhdGUgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgc3RhdGUnIC0+IHN0YXRlIDo9IHN0YXRlJzsgdHJ1ZSlcbiAgICAgIH53aXRoX2J1ZmZlclxuICAgICAgPj58IGZ1biB4IC0+IHgsICFzdGF0ZVxuICAgIGluXG4gICAgcGFyc2VyLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgfVxuXG5sZXQgc2NhbiBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCBzY2FuX3N0YXRlIHN0YXRlIGYgPVxuICBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcbiAgPj58IGZ1biAoKCksIHN0YXRlKSAtPiBzdGF0ZVxuXG5sZXQgc2Nhbl9zdHJpbmcgc3RhdGUgZiA9XG4gIHNjYW4gc3RhdGUgZiA+PnwgZnN0XG5cbmxldCBjb25zdW1lX3dpdGggcCBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN0YXJ0ID0gcG9zIGluXG4gICAgbGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0ICBpblxuICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyBfID1cbiAgICAgIGlmIHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPD4gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCdcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcImNvbnN1bWVkOiBwYXJzZXIgY29tbWl0dGVkXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbGVuID0gcG9zJyAtIHN0YXJ0IGluXG4gICAgICAgIGxldCBjb25zdW1lZCA9IElucHV0LmFwcGx5IGlucHV0JyBzdGFydCBsZW4gfmYgaW5cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBjb25zdW1lZClcbiAgICBpblxuICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgfVxuXG5sZXQgY29uc3VtZWQgICAgICAgICAgIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5zdWJzdHJpbmdcbmxldCBjb25zdW1lZF9iaWdzdHJpbmcgcCA9IGNvbnN1bWVfd2l0aCBwIEJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IGJvdGggYSBiID0gbGlmdDIgKGZ1biBhIGIgLT4gYSwgYikgYSBiXG5sZXQgbWFwIHQgfmYgPSB0ID4+fCBmXG5sZXQgYmluZCB0IH5mID0gdCA+Pj0gZlxubGV0IG1hcDIgYSBiIH5mID0gbGlmdDIgZiBhIGJcbmxldCBtYXAzIGEgYiBjIH5mID0gbGlmdDMgZiBhIGIgY1xubGV0IG1hcDQgYSBiIGMgZCB+ZiA9IGxpZnQ0IGYgYSBiIGMgZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG4gICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgbGV0IG1hcDMgPSBtYXAzXG4gICAgbGV0IG1hcDQgPSBtYXA0XG4gIGVuZFxuZW5kXG5cbmxldCAoIGxldCsgKSA9ICggPj58IClcbmxldCAoIGxldCogKSA9ICggPj49IClcbmxldCAoIGFuZCsgKSA9IGJvdGhcblxubW9kdWxlIEJFID0gc3RydWN0XG4gICgqIFhYWChzZWxpb3BvdSk6IFRoZSBwYXR0ZXJuIGluIGJvdGggdGhpcyBtb2R1bGUgYW5kIFtMRV0gYXJlIGEgY29tcHJvbWlzZVxuICAgKiBiZXR3ZWVuIGVmZmljaWVuY3kgYW5kIGNvZGUgcmV1c2UuIEJ5IGlubGluaW5nIFtlbnN1cmVdIHlvdSBjYW4gcmVjb3ZlclxuICAgKiBhYm91dCAyIG5hbm9zZWNvbmRzIG9uIGF2ZXJhZ2UuIFRoYXQgbWF5IGFkZCB1cCBpbiBjZXJ0YWluIGFwcGxpY2F0aW9ucy5cbiAgICpcbiAgICogVGhpcyBwYXR0ZXJuIGRvZXMgbm90IGFsbG9jYXRlIGluIHRoZSBmYXN0IChzdWNjZXNzKSBwYXRoLlxuICAgKiAqKVxuICBsZXQgaW50MTYgbiA9XG4gICAgbGV0IGJ5dGVzID0gMiBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2ludDE2X2JlIGlucHV0IHBvcyA9IChuIGxhbmQgMHhmZmZmKVxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDE2XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50MzIgbiA9XG4gICAgbGV0IGJ5dGVzID0gNCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQzMi5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQzMl9iZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQzMlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDY0IG4gPVxuICAgIGxldCBieXRlcyA9IDggaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50NjQuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50NjRfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50NjRcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBMRSA9IHN0cnVjdFxuICBsZXQgaW50MTYgbiA9XG4gICAgbGV0IGJ5dGVzID0gMiBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2ludDE2X2xlIGlucHV0IHBvcyA9IChuIGxhbmQgMHhmZmZmKVxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDE2XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50MzIgbiA9XG4gICAgbGV0IGJ5dGVzID0gNCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQzMi5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQzMl9sZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQzMlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDY0IG4gPVxuICAgIGxldCBieXRlcyA9IDggaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50NjQuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50NjRfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50NjRcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG5cbiAgbGV0IGFueV91aW50MTYgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDE2ICA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlICBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MzIgID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQ2NCA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfZmxvYXQgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDMyLmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgYnMgb2ZmKSkpXG5cbiAgbGV0IGFueV9kb3VibGUgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDY0LmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSkpXG5lbmRcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBsZXQgdGFrZSBuIGYgPVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZilcblxuICBsZXQgcGVlayBuIGYgPVxuICAgIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbiBmKVxuXG4gIGxldCB0YWtlX3doaWxlIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6Y2hlY2sgfndpdGhfYnVmZmVyOmZcblxuICBsZXQgdGFrZV93aGlsZTEgY2hlY2sgZiA9XG4gICAgY291bnRfd2hpbGUxIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2VfdGlsbCBjaGVjayBmID1cbiAgICB0YWtlX3doaWxlIChmdW4gYyAtPiBub3QgKGNoZWNrIGMpKSBmXG5lbmRcblxubW9kdWxlIENvbnN1bWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFByZWZpeFxuICAgIHwgQWxsXG5lbmRcblxubGV0IHBhcnNlX2JpZ3N0cmluZyB+Y29uc3VtZSBwIGJzID1cbiAgbGV0IHAgPVxuICAgIG1hdGNoIChjb25zdW1lIDogQ29uc3VtZS50KSB3aXRoXG4gICAgfCBQcmVmaXggLT4gcFxuICAgIHwgQWxsIC0+IHAgPCogZW5kX29mX2lucHV0XG4gIGluXG4gIFVuYnVmZmVyZWQucGFyc2VfYmlnc3RyaW5nIHAgYnNcblxubGV0IHBhcnNlX3N0cmluZyB+Y29uc3VtZSBwIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBicyAgPSBCaWdzdHJpbmdhZi5jcmVhdGUgbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHMgfnNyY19vZmY6MCBicyB+ZHN0X29mZjowIH5sZW47XG4gIHBhcnNlX2JpZ3N0cmluZyB+Y29uc3VtZSBwIGJzXG4iLCIoKlxuICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQW5pbCBNYWRoYXZhcGVkZHkgPGFuaWxAcmVjb2lsLm9yZz5cbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IERhdmlkIFNoZWV0cyA8c2hlZXRzQGFsdW0ubWl0LmVkdT5cbiAqXG4gKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbiAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmVcbiAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVNcbiAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SXG4gKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTXG4gKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU5cbiAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GXG4gKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuICpcbiAqKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG50eXBlIGNvbXBvbmVudCA9IFtcbiAgfCBgU2NoZW1lXG4gIHwgYEF1dGhvcml0eVxuICB8IGBVc2VyaW5mbyAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG4gIHwgYFBhdGhcbiAgfCBgUXVlcnlcbiAgfCBgUXVlcnlfa2V5XG4gIHwgYFF1ZXJ5X3ZhbHVlXG4gIHwgYEZyYWdtZW50XG4gIHwgYEdlbmVyaWNcbiAgfCBgQ3VzdG9tIG9mIChjb21wb25lbnQgKiBzdHJpbmcgKiBzdHJpbmcpICgqIChjb21wb25lbnQgKiBzYWZlIGNoYXJzICogdW5zYWZlIGNoYXJzKSAqKVxuXVxuXG50eXBlIHBjdF9lbmNvZGVyID0ge1xuICAgIHNjaGVtZTogY29tcG9uZW50O1xuICAgIHVzZXJpbmZvOiBjb21wb25lbnQ7XG4gICAgaG9zdDogY29tcG9uZW50O1xuICAgIHBhdGg6IGNvbXBvbmVudDtcbiAgICBxdWVyeV9rZXk6IGNvbXBvbmVudDtcbiAgICBxdWVyeV92YWx1ZTogY29tcG9uZW50O1xuICAgIGZyYWdtZW50OiBjb21wb25lbnQ7XG4gIH1cblxubGV0IHJlYyBpdGVyX2NvbmNhdCBmbiBzZXAgYnVmID0gZnVuY3Rpb25cbiAgfCBsYXN0OjpbXSAtPiBmbiBidWYgbGFzdFxuICB8IGVsOjpyZXN0IC0+XG4gICAgZm4gYnVmIGVsO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzZXA7XG4gICAgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiByZXN0XG4gIHwgW10gLT4gKClcblxubGV0IHJldl9pbnRlcmplY3QgZSBsc3QgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gIC0+IGFjY1xuICAgIHwgeDo6eHMgLT4gYXV4ICh4OjplOjphY2MpIHhzXG4gIGluIG1hdGNoIGxzdCB3aXRoXG4gIHwgW10gIC0+IFtdXG4gIHwgaDo6dCAtPiBhdXggW2hdIHRcblxubGV0IGNvbXBhcmVfb3B0IGMgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCAgIE5vbmUgICAtPiAwXG4gIHwgU29tZSBfLCBOb25lICAgLT4gMVxuICB8IE5vbmUsICAgU29tZSBfIC0+IC0xXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gYyBhIGJcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgZiB0IHQnID0gbWF0Y2ggdCwgdCcgd2l0aFxuICB8IFtdLCAgICBbXSAgICAtPiAgMFxuICB8IF86Ol8sICBbXSAgICAtPiAgMVxuICB8IFtdLCAgICBfOjpfICAtPiAtMVxuICB8IHg6OnhzLCB5Ojp5cyAtPlxuICAgIG1hdGNoIGYgeCB5IHdpdGggMCAtPiBjb21wYXJlX2xpc3QgZiB4cyB5cyB8IGMgLT4gY1xuXG4oKiogU2FmZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsd2F5cyBhbGxvd2VkIGluIGEgVVJJXG4gICogVW5mb3J0dW5hdGVseSwgdGhpcyB2YXJpZXMgZGVwZW5kaW5nIG9uIHdoaWNoIGJpdCBvZiB0aGUgVVJJXG4gICogaXMgYmVpbmcgcGFyc2VkLCBzbyB0aGVyZSBhcmUgbXVsdGlwbGUgdmFyaWFudHMgKGFuZCB0aGlzXG4gICogc2V0IGlzIHByb2JhYmx5IG5vdCBleGhhdXN0aXZlLiBUT0RPOiBjaGVjay5cbiopXG50eXBlIHNhZmVfY2hhcnMgPSBib29sIGFycmF5XG5cbm1vZHVsZSB0eXBlIFNjaGVtZSA9IHNpZ1xuICB2YWwgc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IDogY29tcG9uZW50IC0+IHNhZmVfY2hhcnNcbiAgdmFsIG5vcm1hbGl6ZV9ob3N0IDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgY2Fub25pY2FsaXplX3BvcnQgOiBpbnQgb3B0aW9uIC0+IGludCBvcHRpb25cbiAgdmFsIGNhbm9uaWNhbGl6ZV9wYXRoIDogc3RyaW5nIGxpc3QgLT4gc3RyaW5nIGxpc3RcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSA9IHN0cnVjdFxuICBsZXQgc3ViX2RlbGltcyBhID1cbiAgICBsZXQgc3ViZCA9IFwiISQmJygpKissOz1cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN1YmQgLSAxIGRvXG4gICAgICBsZXQgYyA9IENoYXIuY29kZSBzdWJkLltpXSBpblxuICAgICAgYS4oYykgPC0gdHJ1ZVxuICAgIGRvbmU7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIDI1NiBmYWxzZSBpblxuICAgIGxldCBhbHdheXNfc2FmZSA9XG4gICAgICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Xy4tflwiIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggYWx3YXlzX3NhZmUgLSAxIGRvXG4gICAgICBsZXQgYyA9IENoYXIuY29kZSBhbHdheXNfc2FmZS5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgcGNoYXIgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgc2FmZV9jaGFycykgaW5cbiAgICBhLihDaGFyLmNvZGUgJzonKSA8LSB0cnVlO1xuICAgIGEuKENoYXIuY29kZSAnQCcpIDwtIHRydWU7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9zY2hlbWUgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgIGEuKENoYXIuY29kZSAnKycpIDwtIHRydWU7XG4gICAgYVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSBwYXRoIGNvbXBvbmVudCBvZiBhIFVSSSAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfcGF0aCA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gc3ViX2RlbGltcyAoQXJyYXkuY29weSBwY2hhcikgaW5cbiAgICAoKiBkZWxpbWl0ZXI6IG5vbi1zZWdtZW50IGRlbGltaXRpbmcgdXNlcyBzaG91bGQgYmUgcGN0IGVuY29kZWQgKilcbiAgICBhLihDaGFyLmNvZGUgJy8nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IDogc2FmZV9jaGFycyA9XG4gICAgKCogVE9ETzogV2hhdCBhYm91dCB7XCIhXCIsXCIkXCIsXCIsXCJ9PyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9hdnNtL29jYW1sLXVyaS9jb21taXQvMWVmM2YxZGZiNDFiZGI0ZjMzZjIyM2ZmZTE2ZTYyYTMzOTc1NjYxYSNkaWZmLTc0MGYyZGU1M2M5ZWIzNmU5NjcwZGRmYmRiOWJhOTE0UjE3MT4gKilcbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgcGNoYXIgaW5cbiAgICBhLihDaGFyLmNvZGUgJy8nKSA8LSB0cnVlO1xuICAgIGEuKENoYXIuY29kZSAnPycpIDwtIHRydWU7XG4gICAgKCogJyYnIGlzIHNhZmUgYnV0IHdlIHNob3VsZCBlbmNvZGUgbGl0ZXJhbHMgdG8gYXZvaWQgYW1iaWd1aXR5XG4gICAgICAgd2l0aCB0aGUgYWxyZWFkeSBwYXJzZWQgcXMgcGFyYW1zICopXG4gICAgYS4oQ2hhci5jb2RlICcmJykgPC0gZmFsc2U7XG4gICAgKCogJzsnIGlzIHNhZmUgYnV0IHNvbWUgc3lzdGVtcyB0cmVhdCBpdCBsaWtlICcmJy4gKilcbiAgICBhLihDaGFyLmNvZGUgJzsnKSA8LSBmYWxzZTtcbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzX2Zvcl9xdWVyeSBpblxuICAgIGEuKENoYXIuY29kZSAnPScpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnlfdmFsdWUgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJywnKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50IDogc2FmZV9jaGFycyA9IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5XG5cbiAgKCoqIFNhZmUgY2hhcmFjdGVycyBmb3IgdGhlIHVzZXJpbmZvIHN1YmNvbXBvbmVudCBvZiBhIFVSSS5cbiAgICAgIFRPRE86IHRoaXMgbmVlZHMgbW9yZSByZXNlcnZlZCBjaGFyYWN0ZXJzIGFkZGVkICopXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl91c2VyaW5mbyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCByZWMgc2FmZV9jaGFyc19mb3JfY29tcG9uZW50ID0gZnVuY3Rpb25cbiAgICB8IGBQYXRoIC0+IHNhZmVfY2hhcnNfZm9yX3BhdGhcbiAgICB8IGBVc2VyaW5mbyAtPiBzYWZlX2NoYXJzX2Zvcl91c2VyaW5mb1xuICAgIHwgYFF1ZXJ5IC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5XG4gICAgfCBgUXVlcnlfa2V5IC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleVxuICAgIHwgYFF1ZXJ5X3ZhbHVlIC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlXG4gICAgfCBgRnJhZ21lbnQgLT4gc2FmZV9jaGFyc19mb3JfZnJhZ21lbnRcbiAgICB8IGBTY2hlbWUgLT4gc2FmZV9jaGFyc19mb3Jfc2NoZW1lXG4gICAgfCBgQ3VzdG9tICgoY29tcG9uZW50IDogY29tcG9uZW50KSwgc2FmZSwgdW5zYWZlKSAtPlxuICAgICAgIGxldCBzYWZlX2NoYXJzID0gQXJyYXkuY29weSAoc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IGNvbXBvbmVudCkgaW5cbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzYWZlIC0gMSBkb1xuICAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc2FmZS5baV0gaW5cbiAgICAgICAgIHNhZmVfY2hhcnMuKGMpIDwtIHRydWVcbiAgICAgICBkb25lO1xuICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHVuc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHVuc2FmZS5baV0gaW5cbiAgICAgICAgIHNhZmVfY2hhcnMuKGMpIDwtIGZhbHNlXG4gICAgICAgZG9uZTtcbiAgICAgICBzYWZlX2NoYXJzXG4gICAgfCBgR2VuZXJpY1xuICAgIHwgXyAtPiBzYWZlX2NoYXJzXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzbyA9IGhzb1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCBwb3J0ID0gcG9ydFxuICBsZXQgY2Fub25pY2FsaXplX3BhdGggcGF0aCA9IHBhdGhcbmVuZFxuXG5tb2R1bGUgSHR0cCA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhzXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSA4MCAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSB4XG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtcIi9cIl1cbiAgICB8IHggIC0+IHhcbmVuZFxuXG5tb2R1bGUgSHR0cHMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIdHRwXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSA0NDMgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuZW5kXG5cbm1vZHVsZSBGaWxlIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBocyA9XG4gICAgbGV0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBocyBpblxuICAgIGlmIGhzPVwibG9jYWxob3N0XCIgdGhlbiBcIlwiIGVsc2UgaHNcbmVuZFxuXG5tb2R1bGUgVXJuIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG5lbmRcblxubGV0IG1vZHVsZV9vZl9zY2hlbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgcyAtPiBiZWdpbiBtYXRjaCBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgd2l0aFxuICAgICAgfCBcImh0dHBcIiAtPiAobW9kdWxlIEh0dHAgOiBTY2hlbWUpXG4gICAgICB8IFwiaHR0cHNcIiAgLT4gKG1vZHVsZSBIdHRwcyA6IFNjaGVtZSlcbiAgICAgIHwgXCJmaWxlXCIgLT4gKG1vZHVsZSBGaWxlIDogU2NoZW1lKVxuICAgICAgfCBcInVyblwiICAtPiAobW9kdWxlIFVybiA6IFNjaGVtZSlcbiAgICAgIHwgXyAtPiAobW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUpXG4gICAgZW5kXG4gIHwgTm9uZSAtPiAobW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUpXG5cbigqKiBQb3J0aW9ucyBvZiB0aGUgVVJMIG11c3QgYmUgY29udmVydGVkIHRvLWFuZC1mcm9tIHBlcmNlbnQtZW5jb2RpbmdcbiAgKiBhbmQgdGhpcyByZWFsbHksIHJlYWxseSBzaG91bGRuJ3QgYmUgbWl4ZWQgdXAuIFNvIHRoaXMgUGN0IG1vZHVsZVxuICAqIGRlZmluZXMgYWJzdHJhY3QgUGN0LmVuY29kZWQgYW5kIFBjdC5kZWNvZGVkIHR5cGVzIHdoaWNoIHNldHMgdGhlXG4gICogc3RhdGUgb2YgdGhlIHVuZGVybHlpbmcgc3RyaW5nLiAgVGhlcmUgYXJlIGZ1bmN0aW9ucyB0byBcImNhc3RcIiB0b1xuICAqIGFuZCBmcm9tIHRoZXNlIGFuZCBub3JtYWwgc3RyaW5ncywgYW5kIHRoaXMgcHJvbW90ZXMgYSBiaXQgb2ZcbiAgKiBpbnRlcm5hbCBzYWZldHkuICBUaGVzZSB0eXBlcyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIGV4dGVybmFsXG4gICogaW50ZXJmYWNlLCBhcyBjYXN0aW5nIHRvLWFuZC1mcm9tIGlzIHF1aXRlIGEgYml0IG9mIGhhc3NsZSBhbmRcbiAgKiBwcm9iYWJseSBub3QgYSBsb3Qgb2YgdXNlIHRvIHRoZSBhdmVyYWdlIGNvbnN1bWVyIG9mIHRoaXMgbGlicmFyeVxuKilcbm1vZHVsZSBQY3QgOiBzaWdcbiAgdHlwZSBlbmNvZGVkXG4gIHR5cGUgZGVjb2RlZFxuXG4gIHZhbCBlbmNvZGUgOiA/c2NoZW1lOnN0cmluZyAtPiA/Y29tcG9uZW50OmNvbXBvbmVudCAtPiBkZWNvZGVkIC0+IGVuY29kZWRcbiAgdmFsIGRlY29kZSA6IGVuY29kZWQgLT4gZGVjb2RlZFxuXG4gICgqIFRoZSBlbXB0eSBkZWNvZGVkIHN0cmluZyAqKVxuICB2YWwgZW1wdHlfZGVjb2RlZCA6IGRlY29kZWRcbiAgKCogSWRlbnRpdHkgZnVuY3Rpb25zIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBjYXN0IHdoZW4gdXNpbmcgdGhlbSBiZWxvdyAqKVxuICB2YWwgY2FzdF9lbmNvZGVkIDogc3RyaW5nIC0+IGVuY29kZWRcbiAgdmFsIGNhc3RfZGVjb2RlZCA6IHN0cmluZyAtPiBkZWNvZGVkXG4gIHZhbCB1bmNhc3RfZW5jb2RlZCA6IGVuY29kZWQgLT4gc3RyaW5nXG4gIHZhbCB1bmNhc3RfZGVjb2RlZCA6IGRlY29kZWQgLT4gc3RyaW5nXG4gICgqIExpZnQgSE9GcyBmb3IgbWFwcyBvdmVyIGVuY29kaW5ncywgZGVjb2RpbmdzLCBhbmQgc3RyaW5ncyAqKVxuICB2YWwgbGlmdF9lbmNvZGVkIDogKGVuY29kZWQgLT4gZW5jb2RlZCkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgbGlmdF9kZWNvZGVkIDogKGRlY29kZWQgLT4gZGVjb2RlZCkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgdW5saWZ0X2VuY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZW5jb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZCA6IChzdHJpbmcgLT4gc3RyaW5nKSAtPiBkZWNvZGVkIC0+IGRlY29kZWRcbiAgdmFsIHVubGlmdF9kZWNvZGVkMiA6IChzdHJpbmcgLT4gc3RyaW5nIC0+ICdhKSAtPiBkZWNvZGVkIC0+IGRlY29kZWQgLT4gJ2FcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGVuY29kZWQgPSBzdHJpbmdcbiAgdHlwZSBkZWNvZGVkID0gc3RyaW5nXG4gIGxldCBjYXN0X2VuY29kZWQgeCA9IHhcbiAgbGV0IGNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgZW1wdHlfZGVjb2RlZCA9IFwiXCJcbiAgbGV0IHVuY2FzdF9kZWNvZGVkIHggPSB4XG4gIGxldCB1bmNhc3RfZW5jb2RlZCB4ID0geFxuXG4gIGxldCBsaWZ0X2VuY29kZWQgZiA9IGZcbiAgbGV0IGxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2VuY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9kZWNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZDIgZiA9IGZcblxuICAoKiogU2NhbiBmb3IgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhbmQgcmVwbGFjZSB0aGVtIHdpdGhcbiAgICAgIHBlcmNlbnQtZW5jb2RlZCBlcXVpdmFsZW50cy5cbiAgICAgIEByZXR1cm4gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBlbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgYiA9XG4gICAgbGV0IG1vZHVsZSBTY2hlbWUgPSAodmFsIChtb2R1bGVfb2Zfc2NoZW1lIHNjaGVtZSkgOiBTY2hlbWUpIGluXG4gICAgbGV0IHNhZmVfY2hhcnMgPSBTY2hlbWUuc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IGNvbXBvbmVudCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIHNjYW4gc3RhcnQgY3VyID1cbiAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBjID0gQ2hhci5jb2RlIGIuW2N1cl0gaW5cbiAgICAgICAgaWYgc2FmZV9jaGFycy4oYykgdGhlblxuICAgICAgICAgIHNjYW4gc3RhcnQgKGN1cisxKVxuICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgaWYgY3VyID4gc3RhcnQgdGhlbiBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFByaW50Zi5zcHJpbnRmIFwiJSUlMDJYXCIgYyk7XG4gICAgICAgICAgc2NhbiAoY3VyKzEpIChjdXIrMSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgaW50X29mX2hleF9jaGFyIGMgPVxuICAgIGxldCBjID0gaW50X29mX2NoYXIgKENoYXIudXBwZXJjYXNlX2FzY2lpIGMpIC0gNDggaW5cbiAgICBpZiBjID4gOVxuICAgIHRoZW4gaWYgYyA+IDE2ICYmIGMgPCAyM1xuICAgICAgdGhlbiBjIC0gN1xuICAgICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG4gICAgZWxzZSBpZiBjID49IDBcbiAgICB0aGVuIGNcbiAgICBlbHNlIGZhaWx3aXRoIFwiaW50X29mX2hleF9jaGFyXCJcblxuICAoKiogU2NhbiBmb3IgcGVyY2VudC1lbmNvZGluZyBhbmQgY29udmVydCB0aGVtIGludG8gQVNDSUkuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1kZWNvZGVkIHN0cmluZyAqKVxuICBsZXQgZGVjb2RlIGIgPVxuICAgICgqIFRPRE86IFNob3VsZCBib3RoIHN0cmljdCBhbmQgbm9uLXN0cmljdCB2ZXJzaW9ucyBiZSBleHBvc2VkPyAqKVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIHNjYW4gc3RhcnQgY3VyID1cbiAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KVxuICAgICAgZWxzZSBpZiBiLltjdXJdID0gJyUnIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICclJ1xuICAgICAgICBlbHNlIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgIHNjYW4gY3VyIGN1clxuICAgICAgICB8IGhpZ2hiaXRzIC0+IGJlZ2luXG4gICAgICAgICAgbGV0IGN1ciA9IGN1ciArIDEgaW5cbiAgICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBiLltjdXItMV1cbiAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgbGV0IHN0YXJ0X2F0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaW50X29mX2hleF9jaGFyIGIuW2N1cl0gd2l0aFxuICAgICAgICAgICAgICB8IGxvd2JpdHMgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociAoaGlnaGJpdHMgbHNsIDQgKyBsb3diaXRzKSk7XG4gICAgICAgICAgICAgICAgY3VyKzFcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdO1xuICAgICAgICAgICAgICAgIGN1clxuICAgICAgICAgICAgaW4gc2NhbiBzdGFydF9hdCBzdGFydF9hdFxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIHNjYW4gc3RhcnQgKGN1cisxKVxuICAgIGluXG4gICAgc2NhbiAwIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuZW5kXG5cbigqIFBlcmNlbnQgZW5jb2RlIGEgc3RyaW5nICopXG5sZXQgcGN0X2VuY29kZSA/c2NoZW1lID8oY29tcG9uZW50PWBQYXRoKSBzID1cbiAgUGN0Lih1bmNhc3RfZW5jb2RlZCAoZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCAoY2FzdF9kZWNvZGVkIHMpKSlcblxubGV0IHBjdF9lbmNvZGVyXG4gICAgICA/KHNjaGVtZT1gU2NoZW1lKVxuICAgICAgPyh1c2VyaW5mbz1gVXNlcmluZm8pXG4gICAgICA/KGhvc3Q9YEhvc3QpXG4gICAgICA/KHBhdGg9YFBhdGgpXG4gICAgICA/KHF1ZXJ5X2tleT1gUXVlcnlfa2V5KVxuICAgICAgPyhxdWVyeV92YWx1ZT1gUXVlcnlfdmFsdWUpXG4gICAgICA/KGZyYWdtZW50PWBGcmFnbWVudClcbiAgICAgICgpID1cbiAgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwYXRoOyBxdWVyeV9rZXk7IHF1ZXJ5X3ZhbHVlOyBmcmFnbWVudCB9XG5cbigqIFBlcmNlbnQgZGVjb2RlIGEgc3RyaW5nICopXG5sZXQgcGN0X2RlY29kZSBzID0gUGN0Lih1bmNhc3RfZGVjb2RlZCAoZGVjb2RlIChjYXN0X2VuY29kZWQgcykpKVxuXG4oKiBVc2VyaW5mbyBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGlkICogY3JlZGVudGlhbCBwYWlyICopXG5tb2R1bGUgVXNlcmluZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG4gIGxldCBjb21wYXJlICh1LHApICh1JyxwJykgPVxuICAgIG1hdGNoIFN0cmluZy5jb21wYXJlIHUgdScgd2l0aFxuICAgIHwgMCAtPiBjb21wYXJlX29wdCBTdHJpbmcuY29tcGFyZSBwIHAnXG4gICAgfCBjIC0+IGNcblxuICBsZXQgdXNlcmluZm9fb2ZfZW5jb2RlZCB1cyA9XG4gICAgbWF0Y2ggU3RyaW5nZXh0LnNwbGl0IH5tYXg6MiB+b246JzonIHVzIHdpdGhcbiAgICB8IFtdIC0+IChcIlwiLE5vbmUpXG4gICAgfCBbdV0gLT4gKHBjdF9kZWNvZGUgdSxOb25lKVxuICAgIHwgdTo6cDo6XyAtPiAocGN0X2RlY29kZSB1LFNvbWUgKHBjdF9kZWNvZGUgcCkpXG5cbiAgbGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ICh1LHBvKSA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy4oXG4gICAgICAxICsgKGxlbmd0aCB1KSArIChtYXRjaCBwbyB3aXRoIE5vbmUgLT4gMCB8IFNvbWUgcCAtPiBsZW5ndGggcCkpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHUpO1xuICAgIGJlZ2luIG1hdGNoIHBvIHdpdGggTm9uZSAtPiAoKTtcbiAgICB8IFNvbWUgcCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHApXG4gICAgZW5kO1xuICAgIFBjdC5jYXN0X2VuY29kZWQgKEJ1ZmZlci5jb250ZW50cyBidWYpXG5lbmRcblxubGV0IHVzZXJpbmZvX29mX2VuY29kZWQgPSBVc2VyaW5mby51c2VyaW5mb19vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQgPSBVc2VyaW5mby5lbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBQYXRoIHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYSBsaXN0IG9mIHBhdGggdG9rZW5zICopXG5tb2R1bGUgUGF0aCA9IHN0cnVjdFxuICAoKiBJbnZhcmlhbnQ6IGV2ZXJ5IGVsZW1lbnQgaXMgbm9uLXplcm8sIHNsYXNoZXMgKC8pIG9ubHkgb2NjdXIgYWxvbmUuICopXG4gICgqIFllcywgaXQncyBiZXR0ZXIgdGhpcyB3YXkuIFRoaXMgbWVhbnMgeW91IGNhbiByZXRhaW4gc2VwYXJhdG9yXG4gICAgIGNvbnRleHQgaW4gcmVjdXJzaW9uIChlLmcuIHJlbW92ZV9kb3Rfc2VnbWVudHMgZm9yIHJlbGF0aXZlIHJlc29sdXRpb24pLiAqKVxuXG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0XG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmVcblxuICAoKiBNYWtlIGEgcGF0aCB0b2tlbiBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBwYXRoX29mX2VuY29kZWQgcHMgPVxuICAgIGxldCB0b2tsID0gU3RyaW5nZXh0LmZ1bGxfc3BsaXQgcHMgfm9uOicvJyBpblxuICAgIExpc3QubWFwIHBjdF9kZWNvZGUgdG9rbFxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuND4gKilcbiAgbGV0IHJlbW92ZV9kb3Rfc2VnbWVudHMgcCA9XG4gICAgbGV0IHJldnAgPSBMaXN0LnJldiBwIGluXG4gICAgbGV0IHJlYyBsb29wIGFzY2Vuc2lvbiBvdXRwID0gZnVuY3Rpb25cbiAgICAgIHwgXCIvXCI6OlwiLi5cIjo6ciB8IFwiLi5cIjo6ciAtPiBsb29wIChhc2NlbnNpb24gKyAxKSBvdXRwIHJcbiAgICAgIHwgXCIvXCI6OlwiLlwiOjpyICB8IFwiLlwiOjpyICAtPiBsb29wIGFzY2Vuc2lvbiBvdXRwIHJcbiAgICAgIHwgXCIvXCI6OltdIHwgW10gd2hlbiBMaXN0LihsZW5ndGggcCA+IDAgJiYgaGQgcCA9IFwiL1wiKSAtPiBcIi9cIjo6b3V0cFxuICAgICAgfCBbXSB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gTGlzdC5yZXZfYXBwZW5kXG4gICAgICAgIChcIi9cIjo6KHJldl9pbnRlcmplY3QgXCIvXCIgQXJyYXkuKHRvX2xpc3QgKG1ha2UgYXNjZW5zaW9uIFwiLi5cIikpKSkgb3V0cFxuICAgICAgfCBbXSAtPiBMaXN0LihpZiBsZW5ndGggb3V0cCA+IDAgJiYgaGQgb3V0cCA9IFwiL1wiIHRoZW4gdGwgb3V0cCBlbHNlIG91dHApXG4gICAgICB8IFwiL1wiOjpcIi9cIjo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCAoXCIvXCI6OnIpXG4gICAgICB8IFwiL1wiOjpfOjpyIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBsb29wIChhc2NlbnNpb24gLSAxKSBvdXRwIHJcbiAgICAgIHwgczo6ciAtPiBsb29wIDAgKHM6Om91dHApIHJcbiAgICBpbiBsb29wIDAgW10gcmV2cFxuXG4gIGxldCBlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50IHAgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGMgdG9rIC0+IFN0cmluZy5sZW5ndGggdG9rICsgYykgMCBwIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgLT4gZnVuY3Rpb25cbiAgICB8IFwiL1wiIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJy8nXG4gICAgfCBzZWcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBzZWcpXG4gICAgKSBcIlwiIGJ1ZiBwO1xuICAgIFBjdC5jYXN0X2VuY29kZWQgKEJ1ZmZlci5jb250ZW50cyBidWYpXG5cbiAgKCogU3Vicm91dGluZSBmb3IgcmVzb2x2ZSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi4zPiAqKVxuICBsZXQgbWVyZ2UgYmhvc3QgYnBhdGggcmVscGF0aCA9XG4gICAgbWF0Y2ggYmhvc3QsIExpc3QucmV2IGJwYXRoIHdpdGhcbiAgICB8IFNvbWUgXywgW10gLT4gXCIvXCI6OnJlbHBhdGhcbiAgICB8IF8sIChcIi9cIjo6cmJwYXRoIHwgXzo6XCIvXCI6OnJicGF0aCkgLT4gTGlzdC5yZXZfYXBwZW5kIChcIi9cIjo6cmJwYXRoKSByZWxwYXRoXG4gICAgfCBfLCBfIC0+IHJlbHBhdGhcbmVuZFxuXG5sZXQgcGF0aF9vZl9lbmNvZGVkID0gUGF0aC5wYXRoX29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50ID0gUGF0aC5lbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50XG5cbigqIFF1ZXJ5IHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYW4gYXNzb2MgbGlzdCBvZiBrZXkvdmFsdWVzICopXG5tb2R1bGUgUXVlcnkgPSBzdHJ1Y3RcblxuICB0eXBlIGt2ID0gKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEtWIG9mIGt2XG4gICAgfCBSYXcgb2Ygc3RyaW5nIG9wdGlvbiAqIGt2IExhenkudFxuXG4gIGxldCBjb21wYXJlIHggeSA9IG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgS1Yga3ZsLCBLViBrdmwnXG4gICAgfCBSYXcgKF8sIGxhenkga3ZsKSwgS1Yga3ZsJ1xuICAgIHwgS1Yga3ZsLCBSYXcgKF8sIGxhenkga3ZsJykgLT5cbiAgICAgIGNvbXBhcmVfbGlzdCAoZnVuIChrLHZsKSAoaycsdmwnKSAtPlxuICAgICAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSBrIGsnIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbGlzdCBTdHJpbmcuY29tcGFyZSB2bCB2bCdcbiAgICAgICAgfCBjIC0+IGNcbiAgICAgICkga3ZsIGt2bCdcbiAgICB8IFJhdyAocmF3LF8pLCBSYXcgKHJhdycsXykgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcmF3IHJhdydcblxuICBsZXQgZmluZCBxIGsgPSB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIHEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgc3BsaXRfcXVlcnkgcXMgPVxuICAgIGxldCBlbHMgPSBTdHJpbmdleHQuc3BsaXQgfm9uOicmJyBxcyBpblxuICAgICgqIFJlcGxhY2UgYSArIGluIGEgcXVlcnkgc3RyaW5nIHdpdGggYSBzcGFjZSBpbi1wbGFjZSAqKVxuICAgIGxldCBwbHVzX3RvX3NwYWNlIHMgPVxuICAgICAgbGV0IHMgPSBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIGZvciBpID0gMCB0byBCeXRlcy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgaWYgQnl0ZXMuZ2V0IHMgaSA9ICcrJyB0aGVuIEJ5dGVzLnNldCBzIGkgJyAnXG4gICAgICBkb25lO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgKGs6OnY6Ol8pOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgayxcbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nZXh0LnNwbGl0IH5vbjonLCcgKHBsdXNfdG9fc3BhY2Ugdikgd2l0aFxuICAgICAgICAgICAgICAgICB8IFtdIC0+IFtcIlwiXSB8IGwgLT4gbCkgaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBba106OnRsIC0+XG4gICAgICAgIGxldCBuID0gcGx1c190b19zcGFjZSBrLCBbXSBpblxuICAgICAgICBsb29wIChuOjphY2MpIHRsXG4gICAgICB8IFtdOjp0bCAtPiBsb29wICgoXCJcIiwgW10pOjphY2MpIHRsXG4gICAgICB8IFtdIC0+IGFjY1xuICAgIGluXG4gICAgbWF0Y2ggZWxzIHdpdGhcbiAgICB8IFtdICAtPiBbXCJcIixbXV1cbiAgICB8IGVscyAtPiBsb29wIFtdXG4gICAgICAoTGlzdC5yZXZfbWFwIChmdW4gZWwgLT4gU3RyaW5nZXh0LnNwbGl0IH5vbjonPScgZWwgfm1heDoyKSBlbHMpXG5cbiAgKCogTWFrZSBhIHF1ZXJ5IHR1cGxlIGxpc3QgZnJvbSBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IHF1ZXJ5X29mX2VuY29kZWQgcXMgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChrLCB2KSAtPiAocGN0X2RlY29kZSBrLCBMaXN0Lm1hcCBwY3RfZGVjb2RlIHYpKVxuICAgICAgKHNwbGl0X3F1ZXJ5IHFzKVxuXG4gICgqIEFzc2VtYmxlIGEgcXVlcnkgc3RyaW5nIHN1aXRhYmxlIGZvciBwdXR0aW5nIGludG8gYSBVUkkuXG4gICAqIFR1cGxlIGlucHV0cyBhcmUgcGVyY2VudCBkZWNvZGVkIGFuZCB3aWxsIGJlIGVuY29kZWQgYnlcbiAgICogdGhpcyBmdW5jdGlvbi5cbiAgKilcbiAgbGV0IGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhIChrLHYpIC0+XG4gICAgICAgIGEgKyAoU3RyaW5nLmxlbmd0aCBrKVxuICAgICAgICArIChMaXN0LmZvbGRfbGVmdCAoZnVuIGEgcyAtPiBhKyhTdHJpbmcubGVuZ3RoIHMpKzEpIDAgdikgKyAyKSAoLTEpIGwgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiAoayx2KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnF1ZXJ5X2tleSBrKTtcbiAgICAgICAgaWYgdiA8PiBbXSB0aGVuIChcbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc9JztcbiAgICAgICAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiBzIC0+XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgICAgICAgICAgIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV92YWx1ZSBzKVxuICAgICAgICAgICAgKSBcIixcIiBidWYgdilcbiAgICAgICkgXCImXCIgYnVmIGw7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCBvZl9yYXcgcXMgPVxuICAgIGxldCBsYXp5X3F1ZXJ5ID0gTGF6eS5mcm9tX2Z1biAoZnVuICgpIC0+IHF1ZXJ5X29mX2VuY29kZWQgcXMpIGluXG4gICAgUmF3IChTb21lIHFzLCBsYXp5X3F1ZXJ5KVxuXG4gIGxldCBrdiA9IGZ1bmN0aW9uIFJhdyAoXywgbGF6eSBrdikgfCBLViBrdiAtPiBrdlxuZW5kXG5cbmxldCBxdWVyeV9vZl9lbmNvZGVkID0gUXVlcnkucXVlcnlfb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSA9IFF1ZXJ5LmVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZVxuXG4oKiBUeXBlIG9mIHRoZSBVUkksIHdpdGggbW9zdCBiaXRzIGJlaW5nIG9wdGlvbmFsICopXG50eXBlIHQgPSB7XG4gIHNjaGVtZTogUGN0LmRlY29kZWQgb3B0aW9uO1xuICB1c2VyaW5mbzogVXNlcmluZm8udCBvcHRpb247XG4gIGhvc3Q6IFsgYElwdjRfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICB8IGBIb3N0IG9mIFBjdC5kZWNvZGVkXSBvcHRpb24gO1xuICBwb3J0OiBpbnQgb3B0aW9uO1xuICBwYXRoOiBQYXRoLnQ7XG4gIHF1ZXJ5OiBRdWVyeS50O1xuICBmcmFnbWVudDogUGN0LmRlY29kZWQgb3B0aW9uO1xufVxuXG5sZXQgZW1wdHkgPSB7XG4gIHNjaGVtZSA9IE5vbmU7XG4gIHVzZXJpbmZvID0gTm9uZTtcbiAgaG9zdCA9IE5vbmU7XG4gIHBvcnQgPSBOb25lO1xuICBwYXRoID0gW107XG4gIHF1ZXJ5ID0gUXVlcnkuUmF3IChOb25lLCBMYXp5LmZyb21fdmFsIFtdKTtcbiAgZnJhZ21lbnQgPSBOb25lO1xufVxuXG5sZXQgY29tcGFyZV9kZWNvZGVkID0gUGN0LnVubGlmdF9kZWNvZGVkMiBTdHJpbmcuY29tcGFyZVxubGV0IGNvbXBhcmVfZGVjb2RlZF9vcHQgPSBjb21wYXJlX29wdCBjb21wYXJlX2RlY29kZWRcbmxldCBjb21wYXJlX2hvc3QgaDEgaDIgPVxuICBtYXRjaCBoMSwgaDIgd2l0aFxuICB8IGBJcHY0X2xpdGVyYWwgaXAxLCBgSXB2NF9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYElwdjZfbGl0ZXJhbCBpcDEsIGBJcHY2X2xpdGVyYWwgaXAyIC0+IFN0cmluZy5jb21wYXJlIGlwMSBpcDJcbiAgfCBgSG9zdCBoMSwgYEhvc3QgaDIgLT4gY29tcGFyZV9kZWNvZGVkIGgxIGgyXG4gIHwgXyAtPiAtMVxubGV0IGNvbXBhcmVfaG9zdF9vcHQgPSBjb21wYXJlX29wdCBjb21wYXJlX2hvc3RcblxubGV0IGNvbXBhcmUgdCB0JyA9XG4gIChtYXRjaCBjb21wYXJlX2hvc3Rfb3B0IHQuaG9zdCB0Jy5ob3N0IHdpdGhcbiAgfCAwIC0+IChtYXRjaCBjb21wYXJlX2RlY29kZWRfb3B0IHQuc2NoZW1lIHQnLnNjaGVtZSB3aXRoXG4gICAgfCAwIC0+IChtYXRjaCBjb21wYXJlX29wdCAoZnVuIHAgcCcgLT5cbiAgICAgIGlmIHAgPCBwJyB0aGVuIC0xIGVsc2UgaWYgcCA+IHAnIHRoZW4gMSBlbHNlIDBcbiAgICApIHQucG9ydCB0Jy5wb3J0IHdpdGhcbiAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgVXNlcmluZm8uY29tcGFyZSB0LnVzZXJpbmZvIHQnLnVzZXJpbmZvIHdpdGhcbiAgICAgICAgfCAwIC0+IChtYXRjaCBQYXRoLmNvbXBhcmUgdC5wYXRoIHQnLnBhdGggd2l0aFxuICAgICAgICAgIHwgMCAtPiAobWF0Y2ggUXVlcnkuY29tcGFyZSB0LnF1ZXJ5IHQnLnF1ZXJ5IHdpdGhcbiAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2RlY29kZWRfb3B0IHQuZnJhZ21lbnQgdCcuZnJhZ21lbnRcbiAgICAgICAgICAgIHwgYyAtPiBjKVxuICAgICAgICAgIHwgYyAtPiBjKVxuICAgICAgICB8IGMgLT4gYylcbiAgICAgIHwgYyAtPiBjKVxuICAgIHwgYyAtPiBjKVxuICB8IGMgLT4gYylcblxubGV0IGVxdWFsIHQgdCcgPSBjb21wYXJlIHQgdCcgPSAwXG5cbmxldCB1bmNhc3Rfb3B0ID0gZnVuY3Rpb25cbiAgfCBTb21lIGggLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG4gIHwgTm9uZSAtPiBOb25lXG5cbmxldCBub3JtYWxpemUgc2NoZW0gdXJpID1cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgc2NoZW0pKSA6IFNjaGVtZSkgaW5cbiAgbGV0IGRvYiBmID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBTb21lIChQY3QudW5saWZ0X2RlY29kZWQgZiB4KVxuICAgIHwgTm9uZSAtPiBOb25lXG4gIGluIHt1cmkgd2l0aFxuICAgICAgc2NoZW1lPWRvYiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHVyaS5zY2hlbWU7XG4gICAgICBob3N0PSBtYXRjaCB1cmkuaG9zdCB3aXRoXG4gICAgICAgfCBTb21lIChgSXB2NF9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSXB2NF9saXRlcmFsIChTY2hlbWUubm9ybWFsaXplX2hvc3QgaG9zdCkpXG4gICAgICAgfCBTb21lIChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSXB2Nl9saXRlcmFsIChTY2hlbWUubm9ybWFsaXplX2hvc3QgaG9zdCkpXG4gICAgICAgfCBTb21lIChgSG9zdCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCAoUGN0LnVuY2FzdF9kZWNvZGVkIGhvc3QpKSkpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfVxuXG4oKiogQ29udmVydCBhIFVSSSBzdHJ1Y3R1cmUgaW50byBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmdcbiAgICA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMz5cbiopXG5sZXQgdG9fc3RyaW5nID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9XG4gIGxldCBzY2hlbWUgPSBtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgcylcbiAgICB8IE5vbmUgLT4gTm9uZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgKCogUGVyY2VudCBlbmNvZGUgYSBkZWNvZGVkIHN0cmluZyBhbmQgYWRkIGl0IHRvIHRoZSBidWZmZXIgKilcbiAgbGV0IGFkZF9wY3Rfc3RyaW5nID8oY29tcG9uZW50PWBQYXRoKSB4ID1cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFBjdC51bmNhc3RfZW5jb2RlZCAoUGN0LmVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgeCkpXG4gIGluXG4gIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSB4IC0+XG4gICAgIGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuc2NoZW1lIHg7XG4gICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonXG4gICk7XG4gICgqIFVSSSBoYXMgYSBob3N0IGlmIGFueSBob3N0LXJlbGF0ZWQgY29tcG9uZW50IGlzIHNldC4gRGVmYXVsdHMgdG8gXCJcIi4gKilcbiAgaWYgKG1hdGNoIHVyaS51c2VyaW5mbywgdXJpLmhvc3QsIHVyaS5wb3J0IHdpdGhcbiAgfCBTb21lIF8sIF8sIF8gfCBfLCBTb21lIF8sIF8gfCBfLCBfLCBTb21lIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiLy9cIjtcbiAgKG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIHVzZXJpbmZvIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAoUGN0LnVuY2FzdF9lbmNvZGVkIChlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mbykpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ0AnXG4gICk7XG4gIChtYXRjaCB1cmkuaG9zdCB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIChgSG9zdCBob3N0KSAtPlxuICAgIGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuaG9zdCBob3N0O1xuICB8U29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgaG9zdFxuICB8U29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnWyc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgaG9zdDtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ10nXG4gICk7XG4gIChtYXRjaCB1cmkucG9ydCB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIHBvcnQgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6JztcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHN0cmluZ19vZl9pbnQgcG9ydClcbiAgKTtcbiAgKG1hdGNoIHVyaS5wYXRoIHdpdGggKCogSGFuZGxlIHJlbGF0aXZlIHBhdGhzIGNvcnJlY3RseSAqKVxuICB8IFtdIC0+ICgpXG4gIHwgXCIvXCI6Ol8gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFBjdC51bmNhc3RfZW5jb2RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gIHwgZmlyc3Rfc2VnbWVudDo6XyAtPlxuICAgIChtYXRjaCB1cmkuaG9zdCB3aXRoXG4gICAgIHwgU29tZSBfIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJy8nXG4gICAgIHwgTm9uZSAtPlxuICAgICAgICgqIGVuc3VyZSByb3VuZHRyaXAgYnkgZm9yY2luZyByZWxhdGl2ZSBwYXRoIGludGVycHJldGF0aW9uIG5vdCBzY2hlbWUgKilcbiAgICAgICBtYXRjaCBTdHJpbmdleHQuZmluZF9mcm9tIGZpcnN0X3NlZ21lbnQgfnBhdHRlcm46XCI6XCIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBfIC0+IG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgfCBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi4vXCJcbiAgICApO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKSlcbiAgKTtcbiAgUXVlcnkuKG1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gICAgfCBSYXcgKE5vbmUsXykgfCBLViBbXSAtPiAoKVxuICAgIHwgUmF3IChfLGxhenkgcSkgfCBLViBxIC0+ICgqIG5vcm1hbGl6ZSBlLmcuIHBlcmNlbnQgY2FwaXRhbGl6YXRpb24gKilcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJz8nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgfnBjdF9lbmNvZGVyIHEpXG4gICk7XG4gIChtYXRjaCB1cmkuZnJhZ21lbnQgd2l0aFxuICAgfE5vbmUgLT4gKClcbiAgIHxTb21lIGYgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnIyc7IGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuZnJhZ21lbnQgZlxuICApO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbigqIFZhcmlvdXMgYWNjZXNzb3IgZnVuY3Rpb25zLCBhcyB0aGUgZXh0ZXJuYWwgdXJpIHR5cGUgaXMgYWJzdHJhY3QgICopXG5sZXQgZ2V0X2RlY29kZWRfb3B0ID0gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHxTb21lIHggLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHgpXG5sZXQgc2NoZW1lIHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuc2NoZW1lXG5sZXQgd2l0aF9zY2hlbWUgdXJpID1cbiAgZnVuY3Rpb25cbiAgfFNvbWUgc2NoZW1lIC0+IHsgdXJpIHdpdGggc2NoZW1lPVNvbWUgKFBjdC5jYXN0X2RlY29kZWQgc2NoZW1lKSB9XG4gIHxOb25lIC0+IHsgdXJpIHdpdGggc2NoZW1lPU5vbmUgfVxuXG5sZXQgaG9zdCB1cmkgPVxuICBtYXRjaCB1cmkuaG9zdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBTb21lIGhcbiAgfCBTb21lIChgSG9zdCBoKSAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgaClcblxubGV0IGhvc3Rfd2l0aF9kZWZhdWx0ID8oZGVmYXVsdD1cImxvY2FsaG9zdFwiKSB1cmkgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHxOb25lIC0+IGRlZmF1bHRcbiAgfFNvbWUgaCAtPiBoXG5cbmxldCB1c2VyaW5mbyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdXNlcmluZm8gLT4gU29tZSAoUGN0LnVuY2FzdF9lbmNvZGVkIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgICB8IE5vbmUgLT4gZW5jb2RlZF9vZl91c2VyaW5mbyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvXG4gICAgfCBTb21lIHMgLT4gZW5jb2RlZF9vZl91c2VyaW5mbyB+c2NoZW1lOihQY3QudW5jYXN0X2RlY29kZWQgcykgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mbykpXG5sZXQgd2l0aF91c2VyaW5mbyB1cmkgdXNlcmluZm8gPVxuICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KVxuICAgIHwgTm9uZSAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG5cbmxldCB1c2VyIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAodXNlciwgXykgLT4gU29tZSB1c2VyXG5cbmxldCBwYXNzd29yZCB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgfCBTb21lIChfLCBOb25lKSAtPiBOb25lXG4gIHwgU29tZSAoXywgU29tZSBwYXNzKSAtPiBTb21lIHBhc3NcbmxldCB3aXRoX3Bhc3N3b3JkIHVyaSBwYXNzd29yZCA9XG4gIGxldCByZXN1bHQgdXNlcmluZm8gPSBtYXRjaCBob3N0IHVyaSB3aXRoXG4gICAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgaW5cbiAgbWF0Y2ggdXJpLnVzZXJpbmZvLCBwYXNzd29yZCB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB1cmlcbiAgfCBOb25lLCBTb21lIF8gLT4gcmVzdWx0IChTb21lIChcIlwiLHBhc3N3b3JkKSlcbiAgfCBTb21lICh1c2VyLF8pLCBfIC0+IHJlc3VsdCAoU29tZSAodXNlciwgcGFzc3dvcmQpKVxuXG5sZXQgcG9ydCB1cmkgPSB1cmkucG9ydFxubGV0IHdpdGhfcG9ydCB1cmkgcG9ydCA9XG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCBwb3J0PXBvcnQgfVxuICB8IE5vbmUgLT4gYmVnaW5cbiAgICAgbWF0Y2ggcG9ydCB3aXRoXG4gICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9Tm9uZTsgcG9ydD1Ob25lIH1cbiAgICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgcG9ydD1wb3J0IH1cbiAgZW5kXG5cbigqIFJldHVybiB0aGUgcGF0aCBjb21wb25lbnQgKilcbmxldCBwYXRoID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gIHwgTm9uZSAtPiBlbmNvZGVkX29mX3BhdGggfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoXG4gIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfcGF0aCB+c2NoZW1lOihQY3QudW5jYXN0X2RlY29kZWQgcykgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKVxubGV0IHdpdGhfcGF0aCB1cmkgcGF0aCA9XG4gIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHBhdGggaW5cbiAgbWF0Y2ggaG9zdCB1cmksIHBhdGggd2l0aFxuICB8IE5vbmUsIF8gfCBTb21lIF8sIFwiL1wiOjpfIHwgU29tZSBfLCBbXSAtPiB7IHVyaSB3aXRoIHBhdGg9cGF0aCB9XG4gIHwgU29tZSBfLCBfICAtPiB7IHVyaSB3aXRoIHBhdGg9XCIvXCI6OnBhdGggfVxuXG5sZXQgZnJhZ21lbnQgdXJpID0gZ2V0X2RlY29kZWRfb3B0IHVyaS5mcmFnbWVudFxubGV0IHdpdGhfZnJhZ21lbnQgdXJpID1cbiAgZnVuY3Rpb25cbiAgfE5vbmUgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Ob25lIH1cbiAgfFNvbWUgZnJhZyAtPiB7IHVyaSB3aXRoIGZyYWdtZW50PVNvbWUgKFBjdC5jYXN0X2RlY29kZWQgZnJhZykgfVxuXG5sZXQgcXVlcnkgdXJpID0gUXVlcnkua3YgdXJpLnF1ZXJ5XG5sZXQgdmVyYmF0aW1fcXVlcnkgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gUXVlcnkuKG1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gIHwgUmF3IChxcyxfKSAtPiBxc1xuICB8IEtWIFtdIC0+IE5vbmVcbiAgfCBLViBrdiAtPiBTb21lIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWU6KHNjaGVtZSB1cmkpIH5wY3RfZW5jb2RlciBrdilcbilcbmxldCBnZXRfcXVlcnlfcGFyYW0nIHVyaSBrID0gUXVlcnkuKGZpbmQgKGt2IHVyaS5xdWVyeSkgaylcbmxldCBnZXRfcXVlcnlfcGFyYW0gdXJpIGsgPVxuICBtYXRjaCBnZXRfcXVlcnlfcGFyYW0nIHVyaSBrIHdpdGhcbiAgfE5vbmUgLT4gTm9uZVxuICB8U29tZSB2IC0+IFNvbWUgKFN0cmluZy5jb25jYXQgXCIsXCIgdilcblxubGV0IHdpdGhfcXVlcnkgdXJpIHF1ZXJ5ID0geyB1cmkgd2l0aCBxdWVyeT1RdWVyeS5LViBxdWVyeSB9XG5sZXQgcV9zIHEgPSBMaXN0Lm1hcCAoZnVuIChrLHYpIC0+IGssW3ZdKSBxXG5sZXQgd2l0aF9xdWVyeScgdXJpIHF1ZXJ5ID0gd2l0aF9xdWVyeSB1cmkgKHFfcyBxdWVyeSlcbmxldCBhZGRfcXVlcnlfcGFyYW0gdXJpIHAgPSBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAocDo6KGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtJyB1cmkgKGssdikgPVxuICBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAoKGssW3ZdKTo6KGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtcyB1cmkgcHMgPSBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAocHNAKGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtcycgdXJpIHBzID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChxX3MgcHMpQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IHJlbW92ZV9xdWVyeV9wYXJhbSB1cmkgayA9IFF1ZXJ5LihcbiAgeyB1cmkgd2l0aCBxdWVyeT1LViAoTGlzdC5maWx0ZXIgKGZ1biAoaycsXykgLT4gazw+aycpIChrdiB1cmkucXVlcnkpKSB9XG4pXG5cbigqIENvbnN0cnVjdCBlbmNvZGVkIHBhdGggYW5kIHF1ZXJ5IGNvbXBvbmVudHMgKilcbmxldCBwYXRoX2FuZF9xdWVyeSB1cmkgPVxuICBtYXRjaCAocGF0aCB1cmkpLCAocXVlcnkgdXJpKSB3aXRoXG4gIHxcIlwiLCBbXSAtPiBcIi9cIiAoKiBUT0RPOiBXaGF0IGFib3V0IHNhbWUgZG9jdW1lbnQ/ICgvKSAqKVxuICB8XCJcIiwgcSAtPiAoKiBUT0RPOiBXaGF0IGFib3V0IHNhbWUgZG9jdW1lbnQ/ICgvKSAqKVxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIi8/JXNcIiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG4gIHxwLCBbXSAtPiBwXG4gIHxwLCBxIC0+XG4gICAgbGV0IHNjaGVtZSA9IHVuY2FzdF9vcHQgdXJpLnNjaGVtZSBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXM/JXNcIiBwIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgcSlcblxuKCogVE9ETzogZnVuY3Rpb25zIHRvIGFkZCBhbmQgcmVtb3ZlIGZyb20gYSBVUkkgKilcblxuKCogUmVzb2x2ZSBhIFVSSSB3cnQgYSBiYXNlIFVSSSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMj4gKilcbmxldCByZXNvbHZlIHNjaGVtIGJhc2UgdXJpID1cbiAgbGV0IHNjaGVtID0gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCAobWF0Y2ggc2NoZW1lIGJhc2Ugd2l0aFxuICAgICAgfCBOb25lIC0+ICBzY2hlbVxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICApKSBpblxuICBub3JtYWxpemUgc2NoZW1cbiAgICBQYXRoLihtYXRjaCBzY2hlbWUgdXJpLCB1c2VyaW5mbyB1cmksIGhvc3QgdXJpIHdpdGhcbiAgICB8IFNvbWUgXywgXywgXyAtPlxuICAgICAge3VyaSB3aXRoIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICB8IE5vbmUsIFNvbWUgXywgX1xuICAgIHwgTm9uZSwgXywgU29tZSBfIC0+XG4gICAgICB7dXJpIHdpdGggc2NoZW1lPWJhc2Uuc2NoZW1lOyBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBOb25lLCBOb25lIC0+XG4gICAgICBsZXQgdXJpID0ge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgdXNlcmluZm89YmFzZS51c2VyaW5mbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdD1iYXNlLmhvc3Q7IHBvcnQ9YmFzZS5wb3J0fSBpblxuICAgICAgbGV0IHBhdGhfc3RyID0gcGF0aCB1cmkgaW5cbiAgICAgIGlmIHBhdGhfc3RyPVwiXCJcbiAgICAgIHRoZW4geyB1cmkgd2l0aFxuICAgICAgICAgICAgIHBhdGg9YmFzZS5wYXRoO1xuICAgICAgICAgICAgIHF1ZXJ5PW1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gICAgICAgICAgICAgICB8IFF1ZXJ5LlJhdyAoTm9uZSxfKSB8IFF1ZXJ5LktWIFtdIC0+IGJhc2UucXVlcnlcbiAgICAgICAgICAgICAgIHwgXyAtPiB1cmkucXVlcnlcbiAgICAgICAgICAgfVxuICAgICAgZWxzZSBpZiBwYXRoX3N0ci5bMF09Jy8nXG4gICAgICB0aGVuIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgICBlbHNlIHt1cmkgd2l0aFxuICAgICAgICBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgKG1lcmdlIGJhc2UuaG9zdCBiYXNlLnBhdGggdXJpLnBhdGgpO1xuICAgICAgfVxuICAgIClcblxubGV0IGNhbm9uaWNhbGl6ZSB1cmkgPVxuICBsZXQgdXJpID0gcmVzb2x2ZSBcIlwiIGVtcHR5IHVyaSBpblxuICBsZXQgbW9kdWxlIFNjaGVtZSA9XG4gICAgKHZhbCAobW9kdWxlX29mX3NjaGVtZSAodW5jYXN0X29wdCB1cmkuc2NoZW1lKSkgOiBTY2hlbWUpIGluXG4gIHsgdXJpIHdpdGhcbiAgICBwb3J0PVNjaGVtZS5jYW5vbmljYWxpemVfcG9ydCB1cmkucG9ydDtcbiAgICBwYXRoPVNjaGVtZS5jYW5vbmljYWxpemVfcGF0aCB1cmkucGF0aDtcbiAgfVxuXG5sZXQgcHAgcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxubGV0IHBwX2h1bSBwcGYgdXJpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZyB1cmkpXG5cbm1vZHVsZSBQYXJzZXIgPSBzdHJ1Y3RcbiAgb3BlbiBBbmdzdHJvbVxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxuICBsZXQgc3RyaW5nX29mX2NoYXJfbGlzdCBjaGFycyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfY2hhciBjaGFycylcblxuICBsZXQgc2NoZW1lID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHMgLT4gU29tZSAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAodGFrZV93aGlsZSAoZnVuIGMgLT4gYyA8PiAnOicgJiYgYyA8PiAnLycgJiYgYyA8PiAnPycgJiYgYyA8PiAnIycpXG4gICAgICA8KiBjaGFyICc6JylcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgaXNfZGlnaXQgPSBmdW5jdGlvbiAnMCcgLi4gJzknIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGhleF9kaWdpdCA9XG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCBoZXhhZGVjaW1hbCA9IGxpZnQgc3RyaW5nX29mX2NoYXJfbGlzdCAobWFueSBoZXhfZGlnaXQpXG5cbiAgbGV0IGNfZG90ID0gY2hhciAnLidcblxuICBsZXQgY19hdCA9IGNoYXIgJ0AnXG5cbiAgbGV0IGNfY29sb24gPSBjaGFyICc6J1xuXG4gIGxldCBkZWNfb2N0ZXQgPVxuICAgIHRha2Vfd2hpbGUxIChmdW5jdGlvbiAnMCcgLi4gJzknIC0+IHRydWUgfCBfIC0+IGZhbHNlKSA+Pj0gZnVuIG51bSAtPlxuICAgIGlmIGludF9vZl9zdHJpbmcgbnVtIDwgMjU2IHRoZW5cbiAgICAgIHJldHVybiBudW1cbiAgICBlbHNlXG4gICAgICBmYWlsIFwiaW52YWxpZCBvY3RlY3RcIlxuXG4gIGxldCBpcHY0X2FkZHJlc3MgPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHRocmVlIG9uZSAtPiBTdHJpbmcuY29uY2F0IFwiLlwiIHRocmVlIF4gXCIuXCIgXiBvbmUpXG4gICAgICAoY291bnQgMyAoZGVjX29jdGV0IDwqIGNfZG90KSlcbiAgICAgIGRlY19vY3RldFxuXG4gICgqIC0tIGFmdGVyIGRvdWJsZSBjb2xvbiwgSVB2NCBkb3R0ZWQgbm90YXRpb24gY291bGQgYXBwZWFyIGFueXdoZXJlICopXG4gIGxldCBhZnRlcl9kb3VibGVfY29sb24gPVxuICAgIGZpeCAoZnVuIGYgLT5cbiAgICAgICAgbGlzdCBbIGlwdjRfYWRkcmVzcyBdXG4gICAgICAgIDx8PiBsaWZ0MiAoZnVuIHggeSAtPiB4IDo6IHkpIGhleGFkZWNpbWFsIChjX2NvbG9uICo+IGYgPHw+IHJldHVybiBbXSkpXG5cbiAgbGV0IGRvdWJsZV9jb2xvbiBjb3VudCA9XG4gICAgYWZ0ZXJfZG91YmxlX2NvbG9uID4+PSAoZnVuIHJlc3QgLT5cbiAgICBsZXQgZmlsbGVyX2xlbmd0aCA9IDggLSBjb3VudCAtIExpc3QubGVuZ3RoIHJlc3QgaW5cbiAgICBpZiBmaWxsZXJfbGVuZ3RoIDw9IDAgdGhlblxuICAgICAgZmFpbCBcInRvbyBtYW55IHBhcnRzIGluIElQdjYgYWRkcmVzc1wiXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIChcIlwiIDo6IHJlc3QpKVxuICAgIDx8PiByZXR1cm4gW1wiXCJdXG5cbiAgbGV0IHJlYyBwYXJ0ID0gZnVuY3Rpb25cbiAgICB8IDcgLT5cbiAgICAgICgqIG1heCA4IHBhcnRzIGluIGFuIElQdjYgYWRkcmVzcyAqKVxuICAgICAgbGlmdCAoZnVuIHggLT4gWyB4IF0pIGhleGFkZWNpbWFsXG4gICAgfCA2IC0+XG4gICAgICAoKiBhZnRlciA2IHBhcnRzIGl0IGNvdWxkIGVuZCBpbiBJUHY0IGRvdHRlZCBub3RhdGlvbiAqKVxuICAgICAgbGlzdCBbIGlwdjRfYWRkcmVzcyBdIDx8PiBoZXhfcGFydCA2XG4gICAgfCBuIC0+XG4gICAgICBoZXhfcGFydCBuXG5cbiAgYW5kIGhleF9wYXJ0IG4gPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHggeSAtPiB4IDo6IHkpXG4gICAgICBoZXhhZGVjaW1hbFxuICAgICAgKGNfY29sb24gKj4gKGNfY29sb24gKj4gZG91YmxlX2NvbG9uIChuICsgMSkgPHw+IHBhcnQgKG4gKyAxKSkpXG5cbiAgbGV0IHJlYyBzcGxpdF93aXRoIGYgeHMgPVxuICAgIG1hdGNoIHhzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBbXSwgW11cbiAgICB8IHkgOjogeXMgLT5cbiAgICAgIGlmIGYgeSB0aGVuXG4gICAgICAgIGxldCB6cywgdHMgPSBzcGxpdF93aXRoIGYgeXMgaW5cbiAgICAgICAgeSA6OiB6cywgdHNcbiAgICAgIGVsc2VcbiAgICAgICAgW10sIHhzXG5cbiAgbGV0IGlwdjYgPVxuICAgIGxldCBmb3JtYXRfYWRkciBzZWdtZW50cyA9XG4gICAgICBsZXQgYmVmb3JlX2RvdWJsZV9jb2xvbiwgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICAgICAgc3BsaXRfd2l0aCAoZnVuIHNlZ21lbnQgLT4gc2VnbWVudCA8PiBcIlwiKSBzZWdtZW50c1xuICAgICAgaW5cbiAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuY29uY2F0IFwiOlwiIGJlZm9yZV9kb3VibGVfY29sb24gaW5cbiAgICAgIGxldCByZXMgPVxuICAgICAgICBtYXRjaCBhZnRlcl9kb3VibGVfY29sb24gd2l0aFxuICAgICAgICB8IFwiXCIgOjogeHMgLT5cbiAgICAgICAgICBiZWZvcmUgXiBcIjo6XCIgXiBTdHJpbmcuY29uY2F0IFwiOlwiIHhzXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGJlZm9yZVxuICAgICAgaW5cbiAgICAgIHJlc1xuICAgIGluXG4gICAgbGlmdCBmb3JtYXRfYWRkciAoY19jb2xvbiAqPiBjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAwIDx8PiBwYXJ0IDApXG5cbiAgbGV0IGlwdjZfYWRkcmVzcyA9XG4gICAgKGNoYXIgJ1snKSAqPiBpcHY2IDwqIChjaGFyICddJylcblxuICBsZXQgcGN0X2VuY29kZWQgPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHBjdCBkaWdpdHMgLT4gc3RyaW5nX29mX2NoYXJfbGlzdCAocGN0IDo6IGRpZ2l0cykpXG4gICAgICAoY2hhciAnJScpXG4gICAgICAoY291bnQgMiBoZXhfZGlnaXQpXG5cbiAgbGV0IHN1Yl9kZWxpbXMgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyEnIHwgJyQnIHwgJyYnIHwgJ1xcJycgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnLCcgfCAnOycgfCAnPScgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCB1bnJlc2VydmVkID1cbiAgICAoKiBcIltBLVphLXowLTktLl9+XVwiICopXG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICcwJyAuLiAnOScgfCAnLScgfCAnLicgfCAnXycgfCAnficgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCByZWdfbmFtZSA9XG4gICAgbGlmdFxuICAgICAgKFN0cmluZy5jb25jYXQgXCJcIilcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICBdKSlcblxuICBsZXQgaG9zdCA9XG4gICAgY2hvaWNlXG4gICAgICBbIGlwdjRfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY0X2xpdGVyYWwgaClcbiAgICAgIDsgaXB2Nl9hZGRyZXNzID4+fCAoZnVuIGggLT4gYElwdjZfbGl0ZXJhbCBoKVxuICAgICAgOyByZWdfbmFtZSA+PnwgKGZ1biBzIC0+IGBIb3N0IChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgICgqIFRPRE8oZGlub3NhdXJlKTogQWNjb3JkaW5nIHRvIFJGQzM5ODY6XG5cbiAgICAgICAgIGhvc3QgICAgICAgID0gSVAtbGl0ZXJhbCAvIElQdjRhZGRyZXNzIC8gcmVnLW5hbWVcbiAgICAgICAgIElQLWxpdGVyYWwgID0gXCJbXCIgKCBJUHY2YWRkcmVzcyAvIElQdkZ1dHVyZSAgKSBcIl1cIlxuICAgICAgICAgSVB2RnV0dXJlICAgPSBcInZcIiAxKkhFWERJRyBcIi5cIiAxKiggdW5yZXNlcnZlZCAvIHN1Yi1kZWxpbXMgLyBcIjpcIiApXG5cbiAgICAgICAgIElQdkZ1dHVyZSBpcyBub3QgaW1wbGVtZW50ZWQuIFdlIHNob3VsZCBoYW5kbGUgaXQ6XG5cbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuICAgICAgICopXG4gICAgICBdXG5cbiAgbGV0IHVzZXJpbmZvID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHMgPSBTdHJpbmcuY29uY2F0IFwiXCIgeCBpblxuICAgICAgICBTb21lIChVc2VyaW5mby51c2VyaW5mb19vZl9lbmNvZGVkIHMpKVxuICAgICAgKG1hbnlcbiAgICAgICAgIChjaG9pY2VcbiAgICAgICAgICAgIFsgc3RyaW5nX29mX2NoYXIgPCQ+IHVucmVzZXJ2ZWRcbiAgICAgICAgICAgIDsgcGN0X2VuY29kZWRcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IHN1Yl9kZWxpbXNcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IGNfY29sb25cbiAgICAgICAgICAgIF0pXG4gICAgICA8KiBjX2F0KVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBwb3J0ID1cbiAgICBwZWVrX2NoYXIgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lICc6JyAtPlxuICAgICAgY19jb2xvbiAqPiB0YWtlX3doaWxlIGlzX2RpZ2l0ID4+fCBmdW4gcG9ydCAtPlxuICAgICAgbGV0IGRlY29kZWQgPSBQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHBvcnQpIGluXG4gICAgICAodHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKFBjdC51bmNhc3RfZGVjb2RlZCBkZWNvZGVkKSkgd2l0aCBfIC0+IE5vbmUpXG4gICAgfCBTb21lIF8gfCBOb25lIC0+XG4gICAgICByZXR1cm4gTm9uZVxuXG4gIGxldCBhdXRob3JpdHkgPVxuICAgIHN0cmluZyBcIi8vXCJcbiAgICAqPiBsaWZ0M1xuICAgICAgICAgKGZ1biB1c2VyaW5mbyBob3N0IHBvcnQgLT5cbiAgICAgICAgICAgdXNlcmluZm8sIFNvbWUgaG9zdCwgcG9ydClcbiAgICAgICAgIHVzZXJpbmZvXG4gICAgICAgICBob3N0XG4gICAgICAgICBwb3J0XG4gICAgPHw+IHJldHVybiAoTm9uZSwgTm9uZSwgTm9uZSlcblxuICBsZXQgcGF0aCA9XG4gICAgbGlmdFxuICAgICAgUGF0aC5wYXRoX29mX2VuY29kZWRcbiAgICAgICh0YWtlX3doaWxlIChmdW5jdGlvbiAnPycgfCAnIycgLT4gZmFsc2UgfCBfIC0+IHRydWUpKVxuXG4gIGxldCBxdWVyeSA9XG4gICAgbGlmdFxuICAgICAgUXVlcnkub2ZfcmF3XG4gICAgICAoY2hhciAnPycgKj4gdGFrZV90aWxsIChmdW5jdGlvbiAnIycgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpKVxuICAgIDx8PiByZXR1cm4gKFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSkpXG5cbiAgbGV0IGZyYWdtZW50ID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHMgLT4gU29tZSAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoY2hhciAnIycgKj4gdGFrZV93aGlsZSAoZnVuIF8gLT4gdHJ1ZSkpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IF91cmlfcmVmZXJlbmNlID1cbiAgICBsaWZ0NFxuICAgICAgKGZ1biBzY2hlbWUgKHVzZXJpbmZvLCBob3N0LCBwb3J0KSBwYXRoIHF1ZXJ5IGZyYWdtZW50IC0+XG4gICAgICAgIG5vcm1hbGl6ZSBzY2hlbWUgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSlcbiAgICAgIHNjaGVtZVxuICAgICAgYXV0aG9yaXR5XG4gICAgICBwYXRoXG4gICAgICBxdWVyeVxuICAgIDwqPiBmcmFnbWVudFxuXG4gICgqIFhYWChhbm1vbnRlaXJvKTogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3aXRoIHRoZSBvbGQgcmVnZXggcGFyc2VyLCB3ZVxuICAgKiBvbmx5IHBhcnNlIHVudGlsIHRoZSBmaXJzdCBuZXdsaW5lIGNoYXJhY3RlciBhbmQgZHJvcCBldmVyeXRoaW5nIGVsc2VcbiAgICogYWZ0ZXIgdGhhdCAqKVxuICBsZXQgdXJpX3JlZmVyZW5jZSA9XG4gICAgdGFrZV93aGlsZSAoZnVuY3Rpb24gfCAnXFxuJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSkgPj58IGZ1biBzIC0+XG4gICAgICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIF91cmlfcmVmZXJlbmNlIHMgd2l0aFxuICAgICAgfCBPayB0IC0+IHRcbiAgICAgIHwgRXJyb3IgXyAtPlxuICAgICAgICAoKiBTaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiBpZiB0aGUgcGFyc2VyIGlzIGZvcmdpdmluZy4gKilcbiAgICAgICAgZW1wdHlcbmVuZFxuXG5sZXQgZGVjb2RlX2hvc3QgaG9zdCA9XG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgUGFyc2VyLmhvc3QgaG9zdCB3aXRoXG4gIHwgT2sgcGFyc2VkIC0+IHBhcnNlZFxuICB8IEVycm9yIF8gLT5cbiAgICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5pcHY2IGhvc3Qgd2l0aFxuICAgIHwgT2sgcGFyc2VkIC0+IChgSXB2Nl9saXRlcmFsIHBhcnNlZClcbiAgICB8IEVycm9yIF8gLT4gKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIGhvc3QpKVxuXG4oKiBNYWtlIGEgVVJJIHJlY29yZC4gVGhpcyBpcyBhIGJpdCBtb3JlIGluZWZmaWNpZW50IHRoYW4gaXQgbmVlZHMgdG8gYmUgZHVlIHRvIHRoZVxuICogY2FzdGluZy91bmNhc3RpbmcgKHdoaWNoIGlzbid0IGZ1bGx5IGlkZW50aXR5IGR1ZSB0byB0aGUgb3B0aW9uIGJveCksIGJ1dCBpdCBpc1xuICogbm8gYmlnIGRlYWwgZm9yIG5vdy5cbiopXG5sZXQgbWFrZSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgbGV0IGRlY29kZSA9IGZ1bmN0aW9uXG4gICAgfFNvbWUgeCAtPiBTb21lIChQY3QuY2FzdF9kZWNvZGVkIHgpIHxOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGhvc3QgPSBtYXRjaCB1c2VyaW5mbywgaG9zdCwgcG9ydCB3aXRoXG4gICAgfCBfLCBTb21lIF8sIF8gfCBOb25lLCBOb25lLCBOb25lIC0+IGhvc3RcbiAgICB8IFNvbWUgXywgTm9uZSwgXyB8IF8sIE5vbmUsIFNvbWUgXyAtPiBTb21lIFwiXCJcbiAgaW5cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSkgaW5cbiAgbGV0IHBhdGggPSBtYXRjaCBwYXRoIHdpdGhcbiAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcCBpblxuICAgICAgbWF0Y2ggaG9zdCwgcGF0aCB3aXRoXG4gICAgICB8IE5vbmUsIF8gfCBTb21lIF8sIFwiL1wiOjpfIHwgU29tZSBfLCBbXSAtPiBwYXRoXG4gICAgICB8IFNvbWUgXywgXyAgLT4gXCIvXCI6OnBhdGhcbiAgaW5cbiAgbGV0IHF1ZXJ5ID0gbWF0Y2ggcXVlcnkgd2l0aFxuICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgIHwgU29tZSBwIC0+IFF1ZXJ5LktWIHBcbiAgaW5cbiAgbGV0IHNjaGVtZSA9IGRlY29kZSBzY2hlbWUgaW5cbiAgbm9ybWFsaXplIHNjaGVtZVxuICAgIHsgc2NoZW1lOyB1c2VyaW5mbztcbiAgICAgIGhvc3QgPVxuICAgICAgICAobWF0Y2ggaG9zdCB3aXRoXG4gICAgICAgIHwgU29tZSBob3N0IC0+IFNvbWUgKGRlY29kZV9ob3N0IGhvc3QpXG4gICAgICAgIHwgTm9uZSAtPiBOb25lKTtcbiAgICAgIHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG5sZXQgd2l0aF9ob3N0IHVyaSBob3N0ID1cbiAgeyB1cmkgd2l0aFxuICAgIGhvc3QgPSAobWF0Y2ggaG9zdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gIH1cblxubGV0IHdpdGhfdXJpID9zY2hlbWUgP3VzZXJpbmZvID9ob3N0ID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgdXJpID1cbiAgbGV0IHdpdGhfcGF0aF9vcHQgdSBvID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gd2l0aF9wYXRoIHUgXCJcIlxuICAgIHwgU29tZSBwIC0+IHdpdGhfcGF0aCB1IHBcbiAgaW5cbiAgbGV0IHdpdGhfcXVlcnlfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcXVlcnkgdSBbXVxuICAgIHwgU29tZSBxIC0+IHdpdGhfcXVlcnkgdSBxXG4gIGluXG4gIGxldCB3aXRoXyBmIG8gdSA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHVcbiAgICB8IFNvbWUgeCAtPiBmIHUgeFxuICBpblxuICB3aXRoXyB3aXRoX3NjaGVtZSBzY2hlbWUgdXJpXG4gIHw+IHdpdGhfIHdpdGhfdXNlcmluZm8gdXNlcmluZm9cbiAgfD4gd2l0aF8gd2l0aF9ob3N0IGhvc3RcbiAgfD4gd2l0aF8gd2l0aF9wb3J0IHBvcnRcbiAgfD4gd2l0aF8gd2l0aF9wYXRoX29wdCBwYXRoXG4gIHw+IHdpdGhfIHdpdGhfcXVlcnlfb3B0IHF1ZXJ5XG4gIHw+IHdpdGhfIHdpdGhfZnJhZ21lbnQgZnJhZ21lbnRcblxubGV0IG9mX3N0cmluZyBzID1cbiAgKCogVG8gcHJlc2VydmUgdGhlIG9sZCByZWdleCBwYXJzZXIncyBiZWhhdmlvciwgd2Ugb25seSBwYXJzZSBhIHByZWZpeCwgYW5kXG4gICAqIHN0b3Agd2hlbmV2ZXIgd2UgY2FuJ3QgcGFyc2UgbW9yZS4gKilcbiAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOlByZWZpeCBQYXJzZXIudXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgfCBPayB0IC0+IHRcbiAgfCBFcnJvciBfIC0+XG4gICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgZW1wdHlcblxubW9kdWxlIEFic29sdXRlX2h0dHAgPSBzdHJ1Y3RcbiAgdHlwZSB1cmkgPSB0XG4gIHR5cGUgdCA9XG4gICAgeyBzY2hlbWUgOiBbIGBIdHRwIHwgYEh0dHBzIF07XG4gICAgICB1c2VyaW5mbzogVXNlcmluZm8udCBvcHRpb247XG4gICAgICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IGBJcHY2X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IGBIb3N0IG9mIFBjdC5kZWNvZGVkXTtcbiAgICAgIHBvcnQgOiBpbnQgb3B0aW9uO1xuICAgICAgcGF0aCA6IFBhdGgudDtcbiAgICAgIHF1ZXJ5IDogUXVlcnkudDtcbiAgICAgIGZyYWdtZW50IDogUGN0LmRlY29kZWQgb3B0aW9uXG4gICAgfVxuXG4gIGxldCAoIGxldCogKSA9IFJlc3VsdC5iaW5kXG5cbiAgbGV0IHRvX3VyaSB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9ID1cbiAgICBsZXQgc2NoZW1lID1cbiAgICAgIG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICB8IGBIdHRwIC0+IFBjdC5jYXN0X2RlY29kZWQgXCJodHRwXCJcbiAgICAgIHwgYEh0dHBzIC0+IFBjdC5jYXN0X2RlY29kZWQgXCJodHRwc1wiXG4gICAgaW5cbiAgICAoeyBzY2hlbWUgPSBTb21lIHNjaGVtZTtcbiAgICAgICB1c2VyaW5mbztcbiAgICAgICBob3N0ID0gU29tZSBob3N0O1xuICAgICAgIHBvcnQ7XG4gICAgICAgcGF0aDtcbiAgICAgICBxdWVyeTtcbiAgICAgICBmcmFnbWVudCB9IDogdXJpKVxuICA7O1xuXG4gIGxldCBvZl91cmkgKHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH06IHVyaSkgPVxuICAgIGxldCogc2NoZW1lID1cbiAgICAgIG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRXJyb3IgKGBNc2cgXCJObyBzY2hlbWUgcHJlc2VudCBpbiBVUklcIilcbiAgICAgIHwgU29tZSBzY2hlbWUgLT5cbiAgICAgICAgKG1hdGNoIFBjdC51bmNhc3RfZGVjb2RlZCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBcImh0dHBcIiAtPiBPayBgSHR0cFxuICAgICAgICAgfCBcImh0dHBzXCIgLT4gT2sgYEh0dHBzXG4gICAgICAgICB8IHVuc3VwcG9ydGVkX3NjaGVtZSAtPlxuICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgIChgTXNnXG4gICAgICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJPbmx5IGh0dHAgYW5kIGh0dHBzIFVSSXMgYXJlIHN1cHBvcnRlZC4gJXMgaXMgaW52YWxpZC5cIlxuICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkX3NjaGVtZSkpKVxuICAgIGluXG4gICAgbGV0KiBob3N0ID0gT3B0aW9uLnRvX3Jlc3VsdCB+bm9uZTooYE1zZyBcImhvc3QgaXMgcmVxdWlyZWQgZm9yIEhUVFAoUykgdXJpc1wiKSBob3N0IGluXG4gICAgT2sgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9IG1hdGNoIG9mX3N0cmluZyBzIHw+IG9mX3VyaSB3aXRoXG4gICAgfCBPayB0IC0+IHRcbiAgICB8IEVycm9yIChgTXNnIGVycm9yKSAtPiBmYWlsd2l0aCBlcnJvclxuXG4gIGxldCB0b19zdHJpbmcgP3BjdF9lbmNvZGVyIHQgPSB0b191cmkgdCB8PiB0b19zdHJpbmcgP3BjdF9lbmNvZGVyXG5cbiAgbGV0IG5vcm1hbGl6ZSB0ID1cbiAgICB7IHQgd2l0aFxuICAgICAgaG9zdCA9IG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgICAgfCAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgKGBJcHY0X2xpdGVyYWwgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaG9zdCkpXG4gICAgICAgfCAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgKGBJcHY2X2xpdGVyYWwgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaG9zdCkpXG4gICAgICAgfCAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSAoUGN0LnVuY2FzdF9kZWNvZGVkIGhvc3QpKSkpXG4gICAgfVxuXG4gIGxldCBtYWtlIH5zY2hlbWUgfmhvc3QgP3VzZXJpbmZvID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgKCkgPVxuICAgIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgICAgfFNvbWUgeCAtPiBTb21lIChQY3QuY2FzdF9kZWNvZGVkIHgpIHxOb25lIC0+IE5vbmUgaW5cbiAgICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gICAgbGV0IHBhdGggPSBtYXRjaCBwYXRoIHdpdGhcbiAgICAgIHxOb25lIC0+IFtdIHwgU29tZSBwIC0+XG4gICAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICAgIHwgIFwiL1wiOjpfIHwgIFtdIC0+IHBhdGhcbiAgICAgICAgfCBfICAtPiBcIi9cIjo6cGF0aFxuICAgIGluXG4gICAgbGV0IHF1ZXJ5ID0gbWF0Y2ggcXVlcnkgd2l0aFxuICAgICAgfCBOb25lIC0+IFF1ZXJ5LktWIFtdXG4gICAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gICAgaW5cbiAgICBub3JtYWxpemVcbiAgICAgIHsgc2NoZW1lO1xuICAgICAgICB1c2VyaW5mbztcbiAgICAgICAgaG9zdD0gZGVjb2RlX2hvc3QgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50PWRlY29kZSBmcmFnbWVudCB9XG5cbiAgbGV0IGhvc3QgdCA9XG4gICAgbWF0Y2ggdC5ob3N0IHdpdGhcbiAgICB8IChgSXB2NF9saXRlcmFsIGggfCBgSXB2Nl9saXRlcmFsIGgpIC0+IGhcbiAgICB8IChgSG9zdCBoKSAtPiAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbiAgbGV0IHNjaGVtZSB0ID0gdC5zY2hlbWVcbmVuZFxuIiwib3BlbiBVcmlcblxubW9kdWxlIERlcml2ZWQgPVxuc3RydWN0XG5cblx0b3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcblxuXHR0eXBlIGNvbXBvbmVudCA9IFtcblx0ICB8IGBTY2hlbWVcblx0ICB8IGBBdXRob3JpdHlcblx0ICB8IGBVc2VyaW5mbyAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuXHQgIHwgYEhvc3QgKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBQYXRoXG5cdCAgfCBgUXVlcnlcblx0ICB8IGBRdWVyeV9rZXlcblx0ICB8IGBRdWVyeV92YWx1ZVxuXHQgIHwgYEZyYWdtZW50XG4gICAgICAgICAgfCBgR2VuZXJpY1xuICAgICAgICAgIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKVxuXHRdIFtAQGRlcml2aW5nIHNleHBdXG5cblx0dHlwZSB0ID0ge1xuICAgICAgICAgIHNjaGVtZTogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICB1c2VyaW5mbzogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBob3N0OiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBvcnQ6IGludCBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcGF0aDogc3RyaW5nIFtAZGVmYXVsdCBcIlwiXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHF1ZXJ5OiAoc3RyaW5nICogc3RyaW5nIGxpc3QpIGxpc3QgW0BzZXhwLmxpc3RdO1xuICAgICAgICAgIGZyYWdtZW50OiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdXG5cdH0gW0BAZGVyaXZpbmcgc2V4cF1cblxuZW5kXG5cbm9wZW4gRGVyaXZlZFxuXG5sZXQgY29tcG9uZW50X29mX3NleHAgPSBjb21wb25lbnRfb2Zfc2V4cFxubGV0IHNleHBfb2ZfY29tcG9uZW50ID0gc2V4cF9vZl9jb21wb25lbnRcblxubGV0IHRfb2Zfc2V4cCBzZXhwID1cblx0bGV0IHQgPSB0X29mX3NleHAgc2V4cCBpblxuXHRVcmkubWFrZVxuXHRcdD9zY2hlbWU6dC5zY2hlbWVcblx0XHQ/dXNlcmluZm86dC51c2VyaW5mb1xuXHRcdD9ob3N0OnQuaG9zdFxuXHRcdD9wb3J0OnQucG9ydFxuXHRcdH5wYXRoOnQucGF0aFxuXHRcdH5xdWVyeTp0LnF1ZXJ5XG5cdFx0P2ZyYWdtZW50OnQuZnJhZ21lbnRcblx0XHQoKVxuXG5sZXQgc2V4cF9vZl90IHQgPVxuXHRzZXhwX29mX3Qge1xuXHRcdHNjaGVtZSA9IHNjaGVtZSB0O1xuXHRcdHVzZXJpbmZvID0gdXNlcmluZm8gdDtcblx0XHRob3N0ID0gaG9zdCB0O1xuXHRcdHBvcnQgPSBwb3J0IHQ7XG5cdFx0cGF0aCA9IHBhdGggdDtcblx0XHRxdWVyeSA9IHF1ZXJ5IHQ7XG5cdFx0ZnJhZ21lbnQgPSBmcmFnbWVudCB0XG5cdH1cblxudHlwZSBjb21wb25lbnQgPSBVcmkuY29tcG9uZW50XG5sZXQgY29tcGFyZSBhIGIgPSBVcmkuY29tcGFyZSBhIGJcbmxldCBlcXVhbCBhIGIgPSBVcmkuZXF1YWwgYSBiXG50eXBlIHQgPSBVcmkudFxuIiwib3BlbiBKc19vZl9vY2FtbFxub3BlbiBDb3JlXG5cbmxldCBpc192YWxpZF9pZCBzID1cbiAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIlxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gZmFsc2VcbiAgICB8IF8gLT5cbiAgICAgIFN0cmluZy5mb3JfYWxsIHMgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKSlcbjs7XG5cbmxldCBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgPSBpc192YWxpZF9pZCBuYW1lICYmIG5vdCAoU2V0Lm1lbSBzZWVuIG5hbWUpXG5cbmxldCByZWMga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIGxpc3QgPVxuICBtYXRjaCAobGlzdCA6IFNleHAudCBsaXN0KSB3aXRoXG4gIHwgW10gLT4gU29tZSAoTGlzdC5yZXYgcmV2X2FjYylcbiAgfCBBdG9tIG5hbWUgOjogcmVzdCB3aGVuIGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSAtPlxuICAgIGxldCByZXZfYWNjID0gKG5hbWUsIE5vbmUpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBMaXN0IFsgQXRvbSBuYW1lOyB2IF0gOjogcmVzdCB3aGVuIGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSAtPlxuICAgIGxldCByZXZfYWNjID0gKG5hbWUsIFNvbWUgdikgOjogcmV2X2FjYyBpblxuICAgIGxldCBzZWVuID0gU2V0LmFkZCBzZWVuIG5hbWUgaW5cbiAgICBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgcmVzdFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHJlYyBhbnlfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gIHwgU2V4cC5BdG9tIHMgLT4gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHMpXG4gIHwgU2V4cC5MaXN0IFsgQXRvbSBuYW1lOyB2IF0gLT4gSnMuVW5zYWZlLm9iaiBbfCBuYW1lLCBhbnlfb2Zfc2V4cCB2IHxdXG4gIHwgU2V4cC5MaXN0IGwgLT5cbiAgICAobWF0Y2gga2V5X3ZhbHVlX3NoYXBlIH5zZWVuOlN0cmluZy5TZXQuZW1wdHkgfnJldl9hY2M6W10gbCB3aXRoXG4gICAgIHwgTm9uZSAtPiBMaXN0Lm1hcCBsIH5mOmFueV9vZl9zZXhwIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgW10gLT4gSnMuYXJyYXkgW3x8XSB8PiBKcy5VbnNhZmUuaW5qZWN0XG4gICAgIHwgU29tZSBsIC0+XG4gICAgICAgSnMuVW5zYWZlLm9ialxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IG5hbWUsIFNvbWUgdiAtPiBuYW1lLCBhbnlfb2Zfc2V4cCB2XG4gICAgICAgICAgICB8IG5hbWUsIE5vbmUgLT4gbmFtZSwgSnMuVW5zYWZlLmluamVjdCBKcy5udWxsKVxuICAgICAgICAgIHw+IEFycmF5Lm9mX2xpc3QpKVxuOztcblxubGV0IGxvZ19zIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoYW55X29mX3NleHAgc2V4cClcbmxldCBsb2dfc19hc19zdHJpbmcgc2V4cCA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKSlcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHUgPSB7IHNvbWVfbmFtZSA6IHN0cmluZyB9IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPVxuICAgICAgfCBGb29cbiAgICAgIHwgQmFyIG9mXG4gICAgICAgICAgeyBmaWVsZDEgOiB1XG4gICAgICAgICAgOyBmaWVsZDIgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuICBpblxuICBsZXQgdG9fc3RyaW5nIDogSnMuVW5zYWZlLmFueSAtPiBzdHJpbmcgPVxuICAgIGZ1biBhbnkgLT4gSnMudG9fc3RyaW5nIChKcy5fSlNPTiMjc3RyaW5naWZ5IGFueSA6IEpzLmpzX3N0cmluZyBKcy50KVxuICBpblxuICBsZXQgb3BlbiBNIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgKHNleHBfb2ZfdCBGb28pKSk7XG4gIFslZXhwZWN0IHt8IFwiRm9vXCIgfH1dO1xuICBwcmludF9lbmRsaW5lXG4gICAgKHRvX3N0cmluZ1xuICAgICAgIChhbnlfb2Zfc2V4cFxuICAgICAgICAgIChzZXhwX29mX3RcbiAgICAgICAgICAgICAoQmFyIHsgZmllbGQxID0geyBzb21lX25hbWUgPSBcImRlYnVnXCIgfTsgZmllbGQyID0gU29tZSBcIm90aGVyIHN0cmluZ1wiIH0pKSkpO1xuICBbJWV4cGVjdCB7fCB7XCJCYXJcIjpudWxsLFwiZmllbGQxXCI6e1wic29tZV9uYW1lXCI6XCJkZWJ1Z1wifSxcImZpZWxkMlwiOltcIm90aGVyIHN0cmluZ1wiXX0gfH1dXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJkdXBsaWNhdGUga2V5cyBhcmUgZGlzcGxheWVkIGNvcnJlY3RseVwiID1cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IHNleHBfd2l0aF9kdXBsaWNhdGVfa2V5cyA9IHt8ICgoQSBCKSAoQSBDKSkgfH0gfD4gU2V4cC5vZl9zdHJpbmcgaW5cbiAgcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nIChhbnlfb2Zfc2V4cCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMpKTtcbiAgWyVleHBlY3Qge3wgW3tcIkFcIjpcIkJcIn0se1wiQVwiOlwiQ1wifV0gfH1dXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJubyBzdGFjayBvdmVyZmxvd1wiID1cbiAgbGV0IGEgPSBBcnJheS5pbml0IDEwMDAwIH5mOihmdW4gaSAtPiBzcHJpbnRmIFwiZiVkXCIgaSwgaSkgaW5cbiAgbGV0IHNleHAgPSBbJXNleHBfb2Y6IChzdHJpbmcgKiBpbnQpIGFycmF5XSBhIGluXG4gIGxldCB4ID0gYW55X29mX3NleHAgc2V4cCBpblxuICBwcmludGYgXCIlZFwiIChKcy5VbnNhZmUuY29lcmNlIHgpIyMuZjk5OTtcbiAgWyVleHBlY3Qge3wgOTk5IHx9XVxuOztcbiIsIm1vZHVsZSBBc3luY19qc19kZWJ1ZyA9IERlYnVnXG5vcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVcmlcblxuICBsZXQgc2V4cF9vZl90ID0gVXJpX3NleHAuc2V4cF9vZl90XG5lbmRcblxubW9kdWxlIFdlYnNvY2tldF9jb25uZWN0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBUID0gQXN5bmNfcnBjX2tlcm5lbC5ScGMuQ29ubmVjdGlvblxuXG4gIHR5cGUgKCdyZXN0LCAnaW1wbGVtZW50YXRpb25zKSBjbGllbnRfdCA9XG4gICAgP3VyaTpVcmkudFxuICAgIC0+ID9oZWFydGJlYXRfY29uZmlnOlQuSGVhcnRiZWF0X2NvbmZpZy50XG4gICAgLT4gP2Rlc2NyaXB0aW9uOkluZm8udFxuICAgIC0+ID9pbXBsZW1lbnRhdGlvbnM6J2ltcGxlbWVudGF0aW9ucyBULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMudFxuICAgIC0+ICdyZXN0XG5cbiAgbW9kdWxlIENsb3NlX2NvZGUgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBvZl9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQgLT4gdFxuICAgIHZhbCBub3JtYWxfY2xvc3VyZSA6IHRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSBjbG9zZV9ldmVudF9jb2RlID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgYWxsX29mX2Nsb3NlX2V2ZW50X2NvZGUgPSBbXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgR29pbmdfYXdheVxuICAgICAgfCBQcm90b2NvbF9lcnJvclxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IE5vX3N0YXR1c19SZWNlaXZlZFxuICAgICAgfCBBYm5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IFBvbGljeV92aW9sYXRpb25cbiAgICAgIHwgTWVzc2FnZV90b29fYmlnXG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IEludGVybmFsX2Vycm9yXG4gICAgICB8IFNlcnZpY2VfcmVzdGFydFxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgQmFkX2dhdGV3YXlcbiAgICAgIHwgVExTX2hhbmRzaGFrZVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgb2YgY2xvc2VfZXZlbnRfY29kZVxuICAgICAgfCBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgb2YgY2xvc2VfZXZlbnRfY29kZVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF1cblxuICAgIGxldCBub3JtYWxfY2xvc3VyZSA9IE5vcm1hbF9jbG9zdXJlXG5cbiAgICBsZXQgb2ZfaW50ID0gZnVuY3Rpb25cbiAgICAgIHwgMTAwMCAtPiBOb3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDAxIC0+IEdvaW5nX2F3YXlcbiAgICAgIHwgMTAwMiAtPiBQcm90b2NvbF9lcnJvclxuICAgICAgfCAxMDAzIC0+IFVuc3VwcG9ydGVkX2RhdGFcbiAgICAgIHwgMTAwNSAtPiBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgMTAwNiAtPiBBYm5vcm1hbF9jbG9zdXJlXG4gICAgICB8IDEwMDcgLT4gSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGFcbiAgICAgIHwgMTAwOCAtPiBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IDEwMDkgLT4gTWVzc2FnZV90b29fYmlnXG4gICAgICB8IDEwMTAgLT4gTWlzc2luZ19leHRlbnNpb25cbiAgICAgIHwgMTAxMSAtPiBJbnRlcm5hbF9lcnJvclxuICAgICAgfCAxMDEyIC0+IFNlcnZpY2VfcmVzdGFydFxuICAgICAgfCAxMDEzIC0+IFRyeV9hZ2Fpbl9sYXRlclxuICAgICAgfCAxMDE0IC0+IEJhZF9nYXRld2F5XG4gICAgICB8IDEwMTUgLT4gVExTX2hhbmRzaGFrZVxuICAgICAgfCBjb2RlIC0+XG4gICAgICAgIGlmIGNvZGUgPj0gMzAwMCAmJiBjb2RlIDw9IDQ5OTlcbiAgICAgICAgdGhlbiBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgICAgICBlbHNlIEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlXG4gICAgOztcblxuICAgIGxldCBvZl9ldmVudCBjbG9zZV9ldmVudCA9IG9mX2ludCBjbG9zZV9ldmVudCMjLmNvZGVcblxuICAgIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgICAgfCBOb3JtYWxfY2xvc3VyZSAtPiAxMDAwXG4gICAgICB8IEdvaW5nX2F3YXkgLT4gMTAwMVxuICAgICAgfCBQcm90b2NvbF9lcnJvciAtPiAxMDAyXG4gICAgICB8IFVuc3VwcG9ydGVkX2RhdGEgLT4gMTAwM1xuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWQgLT4gMTAwNVxuICAgICAgfCBBYm5vcm1hbF9jbG9zdXJlIC0+IDEwMDZcbiAgICAgIHwgSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGEgLT4gMTAwN1xuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uIC0+IDEwMDhcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIC0+IDEwMDlcbiAgICAgIHwgTWlzc2luZ19leHRlbnNpb24gLT4gMTAxMFxuICAgICAgfCBJbnRlcm5hbF9lcnJvciAtPiAxMDExXG4gICAgICB8IFNlcnZpY2VfcmVzdGFydCAtPiAxMDEyXG4gICAgICB8IFRyeV9hZ2Fpbl9sYXRlciAtPiAxMDEzXG4gICAgICB8IEJhZF9nYXRld2F5IC0+IDEwMTRcbiAgICAgIHwgVExTX2hhbmRzaGFrZSAtPiAxMDE1XG4gICAgICB8IFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIGNvZGUgLT4gY29kZVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IFwidG9faW50IC0+IG9mX2ludCByb3VuZC10cmlwXCIgPVxuICAgICAgTGlzdC5pdGVyIGFsbCB+ZjooZnVuIHQgLT4gYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IHRdIChvZl9pbnQgKHRvX2ludCB0KSkgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGNsb3NlX3dlYnNvY2tldCAod2Vic29ja2V0IDogV2ViU29ja2V0cy53ZWJTb2NrZXQgSnMudCkgcmVhc29uID1cbiAgICAoKiBbY2xvc2Vfd2l0aENvZGVBbmRSZWFzb25dIGRvZXMgbm90aGluZyBpZiB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IENsb3NlZC4gKilcbiAgICBsZXQgY2xvc2UgcmVhc29uID1cbiAgICAgICgqIFRoZSBjb2RlIG11c3QgYmUgZWl0aGVyIDEwMDAgKE5vcm1hbF9jbG9zdXJlKSwgb3IgYmV0d2VlbiAzMDAwIGFuZCA0OTk5XG4gICAgICAgICAoVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlKS4gKilcbiAgICAgIHdlYnNvY2tldCMjY2xvc2Vfd2l0aENvZGVBbmRSZWFzb25cbiAgICAgICAgQ2xvc2VfY29kZS4odG9faW50IG5vcm1hbF9jbG9zdXJlKVxuICAgICAgICAoSnMuc3RyaW5nIHJlYXNvbilcbiAgICBpblxuICAgIG1hdGNoIGNsb3NlIHJlYXNvbiB3aXRoXG4gICAgfCAoKSAtPiAoKVxuICAgIHwgZXhjZXB0aW9uIChfIDogRXhuLnQpIC0+XG4gICAgICAoKiB0aGlzIGNhbiBmYWlsIGlmIFtyZWFzb25dIGlzIHRvbyBsb25nIG9yIGNvbnRhaW5zIGludmFsaWQgVVRGOCAqKVxuICAgICAgY2xvc2UgXCJjbG9zZS1yZWFzb24td2FzLXRvby1sb25nLW9yLWNvbnRhaW5zLWludmFsaWQtdXRmOFwiXG4gIDs7XG5cbiAgbGV0IGNvbm5lY3Rfd2Vic29ja2V0IHVybCB+ZnJvbV9zZXJ2ZXIgfnRvX3NlcnZlciA9XG4gICAgbWF0Y2ggbmV3JWpzIFdlYlNvY2tldHMud2ViU29ja2V0IChKcy5zdHJpbmcgKFVyaS50b19zdHJpbmcgdXJsKSkgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEpzX2Vycm9yLkV4biBleG4gLT5cbiAgICAgICgqIGUuZy4gU0VDVVJJVFlfRVJSLCB0aG91Z2ggbm90ZSB0aGF0IGUuZy4gY29ubmVjdGluZyB0byB3czovLyBmcm9tIGEgaHR0cHM6Ly8gcGFnZVxuICAgICAgICAgaW4gY2hyb21lIHNlZW1zIHRvIG1hbmlmZXN0IGFzIHN1Y2Nlc3NmdWwgY29uc3RydWN0aW9uIGJ1dCBpbW1lZGlhdGUgY2xvc3VyZVxuICAgICAgICAgKHNlZSBiZWxvdykuICAqKVxuICAgICAgcmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgKEpzX2Vycm9yLm1lc3NhZ2UgZXhuKSlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT4gcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKVxuICAgIHwgd2Vic29ja2V0IC0+XG4gICAgICBsZXQgY29ubmVjdGVkX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IGNsZWFudXAgfnJlYXNvbiA9XG4gICAgICAgICgqIElmIHdlIGhhdmVuJ3QgY29ubmVjdGVkIHlldCwgdGhlbiBjb25uZWN0aW5nIGp1c3QgZmFpbGVkLiBPdGhlcndpc2UgaXQgd2FzIHRoZVxuICAgICAgICAgICBjbG9zdXJlIG9mIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24uICopXG4gICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoRXJyb3IgcmVhc29uKTtcbiAgICAgICAgKCogW1BpcGUuY2xvc2VdIGFuZCBbV2ViU29ja2V0LmNsb3NlXSBhcmUgYWxsIGlkZW1wb3RlbnQuICopXG4gICAgICAgIFBpcGUuY2xvc2UgZnJvbV9zZXJ2ZXI7XG4gICAgICAgIFBpcGUuY2xvc2VfcmVhZCB0b19zZXJ2ZXI7XG4gICAgICAgIGNsb3NlX3dlYnNvY2tldCB3ZWJzb2NrZXQgKEVycm9yLnRvX3N0cmluZ19odW0gcmVhc29uKVxuICAgICAgaW5cbiAgICAgIGxldCBvbmNsb3NlIChjbG9zZV9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQpID1cbiAgICAgICAgKCogVGhlIFJQQyBBUEkgZG9lc24ndCBnaXZlIHVzIGEgZ29vZCBwbGFjZSB0byBwdXQgZGV0YWlscyBhYm91dCBfd2h5XyB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBjbG9zZWQuXG5cbiAgICAgICAgICAgTm90ZSB0aGF0IGluIENocm9tZSBbY2xvc2VfZXZlbnQjIy5yZWFzb25dIGlzIHR5cGljYWxseSBlbXB0eSBhbmRcbiAgICAgICAgICAgW2Nsb3NlX2V2ZW50IyMuY29kZV0gZG9lc24ndCBhY3R1YWxseSBwcm92aWRlIHRoYXQgbXVjaCBpbnNpZ2h0IGludG8gd2h5IHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIGZhaWxlZCAoaXQncyBhdmFpbGFibGUgaW4gdGhlIGluc3BlY3RvciBjb25zb2xlLCBidXQgYXMgZmFyIGFzIEkgY2FuXG4gICAgICAgICAgIHRlbGwsIG5vdCBhdmFpbGFibGUgdG8gdXMpLiBTbyBpdCdzIG5vdCBsaWtlIHdlJ3JlIGxvc2luZyBtdWNoIGFueXdheS4gKilcbiAgICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgICAgbGV0IHdoYXRfaGFwcGVuZWQgPVxuICAgICAgICAgICAgbWF0Y2ggSXZhci5pc19mdWxsIGNvbm5lY3RlZF9pdmFyIHdpdGhcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gXCJjb25uZWN0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgICB8IHRydWUgLT4gXCJjbG9zZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgIVwiV2ViU29ja2V0ICVzICgle3NleHA6Q2xvc2VfY29kZS50fSlcIlxuICAgICAgICAgICAgd2hhdF9oYXBwZW5lZFxuICAgICAgICAgICAgKENsb3NlX2NvZGUub2ZfZXZlbnQgY2xvc2VfZXZlbnQpXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIHJlYXNvbik7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBvbm1lc3NhZ2UgKGV2ZW50IDogXyBXZWJTb2NrZXRzLm1lc3NhZ2VFdmVudCBKcy50KSA9XG4gICAgICAgIGxldCBkYXRhID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLm9mX2FycmF5QnVmZmVyIGV2ZW50IyMuZGF0YV9idWZmZXIgaW5cbiAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4gZnJvbV9zZXJ2ZXIgZGF0YTtcbiAgICAgICAgSnMuX2ZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3RlZCAoKSA9IEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoT2sgKCkpIGluXG4gICAgICB3ZWJzb2NrZXQjIy5iaW5hcnlUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCI7XG4gICAgICAoKiBpZiB0aGUgd2Vic29ja2V0IGlzIGFscmVhZHkgY2xvc2VkLCBbb25jbG9zZV0gd29uJ3QgYmUgcmUtZmlyZWQgd2hlbiB3ZSBhZGQgb3VyXG4gICAgICAgICBoYW5kbGVyLiAqKVxuICAgICAgKG1hdGNoIHdlYnNvY2tldCMjLnJlYWR5U3RhdGUgd2l0aFxuICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgd2Vic29ja2V0IyMub25vcGVuXG4gICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgY29ubmVjdGVkICgpO1xuICAgICAgICAgICBKcy5fZmFsc2UpXG4gICAgICAgfCBPUEVOIC0+IGNvbm5lY3RlZCAoKVxuICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPlxuICAgICAgICAgKCogZS5nLiwgUmVmdXNlZCB0byBjb25uZWN0IHRvIHdzOiBiZWNhdXNlIGl0IHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5ICopXG4gICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIldlYlNvY2tldCBmYWlsZWQgaW1tZWRpYXRlbHkgKGlsbGVnYWwgVVJJPylcIikpO1xuICAgICAgKCogVXBvbiBhbiBlcnJvciwgW29uZXJyb3JdIGZpcmVzIGFuZCB0aGVuIFtvbmNsb3NlXSBmaXJlcyAoaXQncyBwb3NzaWJsZSBmb3IgYVxuICAgICAgICAgZ3JhY2VmdWwgY2xvc3VyZSB0byBjYWxsIFtvbmNsb3NlXSBvbmx5KS4gU2luY2UgQXN5bmNfUlBDIGhhcyBubyBub3Rpb24gb2ZcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUsIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgW29uY2xvc2VdIGFueXdheS4gRnVydGhlciwgdGhlIGV2ZW50XG4gICAgICAgICBwYXNzZWQgdG8gW29uZXJyb3JdIGNvbnRhaW5zIG5vIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4gIE5vdGUgdGhhdCB3ZVxuICAgICAgICAgc3RpbGwgbGlzdGVuIHRvIFtvbmVycm9yXSB0byBwcmV2ZW50IHRoZSBlcnJvciBmcm9tIGxlYWtpbmcgdG8gdW5jb250cm9sbGVkXG4gICAgICAgICBjb250ZXh0ICopXG4gICAgICB3ZWJzb2NrZXQjIy5vbmVycm9yXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgQXN5bmNfanNfZGVidWcubG9nX3MgWyVtZXNzYWdlIFwid2Vic29ja2V0IGVuY291bnRlcmVkIHVuZXhwZWN0ZWQgZXJyb3JcIl07XG4gICAgICAgIEpzLl9mYWxzZSk7XG4gICAgICB3ZWJzb2NrZXQjIy5vbm1lc3NhZ2UgOj0gRG9tLmhhbmRsZXIgb25tZXNzYWdlO1xuICAgICAgd2Vic29ja2V0IyMub25jbG9zZSA6PSBEb20uaGFuZGxlciBvbmNsb3NlO1xuICAgICAgbGV0IGNvbm5lY3RlZF9kZWZlcnJlZCA9IEl2YXIucmVhZCBjb25uZWN0ZWRfaXZhciBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKG1hdGNoJWJpbmQgY29ubmVjdGVkX2RlZmVycmVkIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgKF8gOiBFcnJvci50KSAtPiByZXR1cm4gKClcbiAgICAgICAgIHwgT2sgKCkgLT5cbiAgICAgICAgICAgUGlwZS5pdGVyX3dpdGhvdXRfcHVzaGJhY2sgdG9fc2VydmVyIH5mOihmdW4gZGF0YSAtPlxuICAgICAgICAgICAgIG1hdGNoICh3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIDogV2ViU29ja2V0cy5yZWFkeVN0YXRlKSB3aXRoXG4gICAgICAgICAgICAgfCBDT05ORUNUSU5HIC0+XG4gICAgICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkJVRzogb25vcGVuIGNhbGxlZCBidXQgcmVhZHlTdGF0ZSBpcyBDT05ORUNUSU5HXCJdXG4gICAgICAgICAgICAgfCBDTE9TSU5HIHwgQ0xPU0VEIC0+ICgpXG4gICAgICAgICAgICAgfCBPUEVOIC0+XG4gICAgICAgICAgICAgICBsZXQgYnVmZmVyID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIGRhdGEgaW5cbiAgICAgICAgICAgICAgICh0cnkgd2Vic29ja2V0IyNzZW5kX2J1ZmZlciBidWZmZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoRXJyb3IudGFnIH50YWc6XCJ3ZWJzb2NrZXQjI3NlbmRfYnVmZmVyXCIgKEVycm9yLm9mX2V4biBleG4pKSkpKTtcbiAgICAgIGxldCBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCA9XG4gICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgIERlZmVycmVkLmFueV91bml0IFsgUGlwZS5jbG9zZWQgdG9fc2VydmVyOyBQaXBlLmNsb3NlZCBmcm9tX3NlcnZlciBdXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIFwiUlBDIGNvbm5lY3Rpb24gY2xvc2VkIGJ5IGNsaWVudFwiKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIGNsZWFudXBfd2hlbl9hX3BpcGVfaXNfY2xvc2VkO1xuICAgICAgY29ubmVjdGVkX2RlZmVycmVkXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdXJpICgpID1cbiAgICBsZXQgc2NoZW1lID0gaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCIgdGhlbiBcIndzc1wiIGVsc2UgXCJ3c1wiIGluXG4gICAgbGV0IHBvcnQgPVxuICAgICAgbWF0Y2ggVXJsLkN1cnJlbnQucG9ydCB3aXRoXG4gICAgICB8IFNvbWUgcG9ydCAtPiBwb3J0XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCJcbiAgICAgICAgdGhlbiBVcmwuZGVmYXVsdF9odHRwc19wb3J0XG4gICAgICAgIGVsc2UgVXJsLmRlZmF1bHRfaHR0cF9wb3J0XG4gICAgaW5cbiAgICBsZXQgaG9zdCA9IFVybC5DdXJyZW50Lmhvc3QgaW5cbiAgICBVcmkubWFrZSB+c2NoZW1lIH5ob3N0IH5wb3J0ICgpXG4gIDs7XG5cbiAgbGV0IGNsaWVudCA/KHVyaSA9IGRlZmF1bHRfdXJpICgpKSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA9XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIEluZm8uY3JlYXRlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwid2Vic29ja2V0XCIgKGRlc2NyaXB0aW9uIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpICh1cmkgOiBVcmkudCldXG4gICAgaW5cbiAgICBsZXQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCA9XG4gICAgICBsZXQgY3JlYXRlIHsgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLmNvbm5lY3Rpb25fc3RhdGU7IGltcGxlbWVudGF0aW9ucyB9ID1cbiAgICAgICAgVC5jcmVhdGVcbiAgICAgICAgICB0cmFuc3BvcnRcbiAgICAgICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY3JlYXRlIChULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMubnVsbCAoKSlcbiAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbnMgLT4gY3JlYXRlIGltcGxlbWVudGF0aW9uc1xuICAgIGluXG4gICAgbGV0IGZyb21fc2VydmVyX3IsIGZyb21fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCB0b19zZXJ2ZXJfciwgdG9fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIG1hdGNoJWJpbmRcbiAgICAgIGNvbm5lY3Rfd2Vic29ja2V0IHVyaSB+ZnJvbV9zZXJ2ZXI6ZnJvbV9zZXJ2ZXJfdyB+dG9fc2VydmVyOnRvX3NlcnZlcl9yXG4gICAgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiByZXR1cm4gZXJyb3JcbiAgICB8IE9rICgpIC0+XG4gICAgICBsZXQgdHJhbnNwb3J0ID1cbiAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5jcmVhdGVcbiAgICAgICAgICBBc3luY19ycGNfa2VybmVsLlBpcGVfdHJhbnNwb3J0LktpbmQuYmlnc3RyaW5nXG4gICAgICAgICAgZnJvbV9zZXJ2ZXJfclxuICAgICAgICAgIHRvX3NlcnZlcl93XG4gICAgICBpblxuICAgICAgKG1hdGNoJWJpbmQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCB3aXRoXG4gICAgICAgfCBPayBjb25uZWN0aW9uIC0+IHJldHVybiAoT2sgY29ubmVjdGlvbilcbiAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBBc3luY19ycGNfa2VybmVsLlJwYy5UcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgICAgICByZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCBjbGllbnRfZXhuID91cmkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGNsaWVudCA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFzeW5jX3JwY19rZXJuZWwuUnBjXG5cbm1vZHVsZSBDb25uZWN0aW9uID0gc3RydWN0XG4gIGluY2x1ZGUgQ29ubmVjdGlvblxuICBpbmNsdWRlIFdlYnNvY2tldF9jb25uZWN0aW9uXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX3JwY19rZXJuZWxcblxubW9kdWxlIFVyaSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVXJpXG5cbiAgICBsZXQgdG9fc3RyaW5nIHMgPSBVcmkudG9fc3RyaW5nIHNcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjID0gc3RydWN0XG4gIGluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwY1xuXG4gIGxldCBjcmVhdGVfZnJvbV91cmkgPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNyZWF0ZSB+YWRkcmVzczoobW9kdWxlIFVyaSlcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpX29wdGlvbiA9XG4gICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGVcbiAgICAgIH5hZGRyZXNzOlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFVyaS50IG9wdGlvbiBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cF1cbiAgICAgICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gQXN5bmNfcnBjX2tlcm5lbC5QZXJzaXN0ZW50X2Nvbm5lY3Rpb24uVmVyc2lvbmVkX3JwY1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIE9wdCA9IEpzLk9wdFxubW9kdWxlIE9wdGRlZiA9IEpzLk9wdGRlZlxuXG5tb2R1bGUgUmVzcG9uc2VfdHlwZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYbWxIdHRwUmVxdWVzdC5yZXNwb25zZSA9XG4gICAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgT3B0LnQgdFxuICAgIHwgQmxvYiA6ICNGaWxlLmJsb2IgSnMudCBKcy5PcHQudCB0XG4gICAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50IE9wdC50IHRcbiAgICB8IEpTT04gOiAnYSBPcHQudCB0XG4gICAgfCBUZXh0IDogSnMuanNfc3RyaW5nIEpzLnQgdFxuICAgIHwgRGVmYXVsdCA6IHN0cmluZyB0XG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ3Jlc3BvbnNlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgZ2V0X2hlYWRlciA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgOyBjb250ZW50IDogJ3Jlc3BvbnNlXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBQb3N0X2JvZHkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEJsb2Igb2YgRmlsZS5ibG9iIEpzLnRcbiAgICB8IERvY3VtZW50IG9mIERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBGb3JtX2RhdGEgb2YgRm9ybS5mb3JtRGF0YSBKcy50XG5lbmRcblxubW9kdWxlIE1ldGhvZF93aXRoX2FyZ3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEdldCBvZiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgfCBQb3N0IG9mIFBvc3RfYm9keS50IG9wdGlvblxuZW5kXG5cbnR5cGUgJ2sgd2l0aF9yZXF1ZXN0X2FyZ3MgPVxuICA/aGVhZGVyczooc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIC0+ID9vbl9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gP29uX3VwbG9hZF9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gdXJsOnN0cmluZ1xuICAtPiAna1xuXG5sZXQgaGFzX2dldF9hcmdzIHVybCA9IE9wdGlvbi5pc19zb21lIChTdHJpbmcuaW5kZXggdXJsICc/JylcblxubGV0IHJlcXVlc3RcbiAgICAgID8oaGVhZGVycyA9IFtdKVxuICAgICAgP29uX3Byb2dyZXNzXG4gICAgICA/b25fdXBsb2FkX3Byb2dyZXNzXG4gICAgICB+dXJsXG4gICAgICAodHlwZSByZXNwKVxuICAgICAgfihyZXNwb25zZV90eXBlIDogcmVzcCBSZXNwb25zZV90eXBlLnQpXG4gICAgICAobWV0aG9kX3dpdGhfYXJncyA6IE1ldGhvZF93aXRoX2FyZ3MudClcbiAgPVxuICBsZXQgdXJsLCBtZXRob2Rfc3RyaW5nID1cbiAgICBtYXRjaCBtZXRob2Rfd2l0aF9hcmdzIHdpdGhcbiAgICB8IEdldCBhcmdzIC0+XG4gICAgICB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgYXJncywgXCJHRVRcIlxuICAgIHwgUG9zdCBfYm9keSAtPiB1cmwsIFwiUE9TVFwiXG4gIGluXG4gIGxldCByZXEgPSBYbWxIdHRwUmVxdWVzdC5jcmVhdGUgKCkgaW5cbiAgcmVxIyNfb3BlbiAoSnMuc3RyaW5nIG1ldGhvZF9zdHJpbmcpIChKcy5zdHJpbmcgdXJsKSBKcy5fdHJ1ZTtcbiAgKGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICAgfCBCbG9iIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJibG9iXCJcbiAgIHwgRG9jdW1lbnQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImRvY3VtZW50XCJcbiAgIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gICB8IFRleHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcInRleHRcIlxuICAgfCBEZWZhdWx0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJcIik7XG4gIExpc3QuaXRlciBoZWFkZXJzIH5mOihmdW4gKG5hbWUsIHZhbHVlKSAtPlxuICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgdmFsdWUpKTtcbiAgbGV0IHJlc3BvbnNlIDogcmVzcCBSZXNwb25zZS50IE9yX2Vycm9yLnQgSXZhci50ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgcmVxIyMub25lcnJvclxuICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIk5ldHdvcmsgZXJyb3JcIik7XG4gICAgSnMuX3RydWUpO1xuICByZXEjIy5vbnRpbWVvdXRcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJUaW1lb3V0XCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlXG4gIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+XG4gICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgfCBET05FIC0+XG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgaWYgcmVxIyMuc3RhdHVzID49IDIwMCAmJiByZXEjIy5zdGF0dXMgPCAzMDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgY29udGVudCA6IHJlc3AgT3JfZXJyb3IudCA9XG4gICAgICAgICAgICBsZXQgZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKCkgPVxuICAgICAgICAgICAgICBPcHQuY2FzZVxuICAgICAgICAgICAgICAgIHJlcSMjLnJlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIG5vdCBiZSBlbnRlcmVkIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBvZlxuICAgICAgICAgICAgICAgICAgICAgIFhNTEh0dHBSZXF1ZXN0IGF0IE1ETiB3ZWIgZG9jcywgYmVjYXVzZSBpZiBhIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCxcbiAgICAgICAgICAgICAgICAgICAgICBpbiBzdGF0ZSBbRE9ORV0gYW5kIHJlc3BvbnNlX3R5cGUgW1RleHRdIG9yIFtEZWZhdWx0XSxcbiAgICAgICAgICAgICAgICAgICAgICBbcmVzcG9uc2VUZXh0XSBzaG91bGQgbm90IGJlIFtudWxsXS5cbiAgICAgICAgICAgICAgICAgICAgICBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICAgICAgZXJyb3Jfc1xuICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgIFwiTm8gcmVzcG9uc2UgcmV0dXJuZWQgZGVzcGl0ZSBzdWNjZXNzZnVsIHJlcXVlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgICAgICAgICBSZXN1bHQucmV0dXJuXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG9wZW4gUmVzcG9uc2VfdHlwZSBpblxuICAgICAgICAgICAgbWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IE9rIChGaWxlLkNvZXJjZVRvLmFycmF5QnVmZmVyIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBCbG9iIC0+IE9rIChGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IERvY3VtZW50IC0+IE9rIChGaWxlLkNvZXJjZVRvLmRvY3VtZW50IHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBKU09OIC0+IE9rIChGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IFRleHQgLT4gZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKClcbiAgICAgICAgICAgIHwgRGVmYXVsdCAtPiBPcl9lcnJvci5tYXAgKGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpKSB+ZjpKcy50b19zdHJpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBnZXRfaGVhZGVyIHMgPVxuICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgKHJlcSMjZ2V0UmVzcG9uc2VIZWFkZXIgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgUmVzcG9uc2UuY29udGVudDsgY29kZSA9IHJlcSMjLnN0YXR1czsgZ2V0X2hlYWRlciB9KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIFwiUmVxdWVzdCBmYWlsZWRcIlxuICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICB9XVxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSByZXNcbiAgICB8IF8gLT4gKCkpO1xuICBPcHRpb24uaXRlciBvbl9wcm9ncmVzcyB+ZjooZnVuIG9uX3Byb2dyZXNzIC0+XG4gICAgcmVxIyMub25wcm9ncmVzc1xuICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgb25fcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICBKcy5fdHJ1ZSkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICBPcHRpb24uaXRlciBvbl91cGxvYWRfcHJvZ3Jlc3MgfmY6KGZ1biBvbl91cGxvYWRfcHJvZ3Jlc3MgLT5cbiAgICAgIHVwbG9hZCMjLm9ucHJvZ3Jlc3NcbiAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICBvbl91cGxvYWRfcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICAgIEpzLl90cnVlKSkpO1xuICAobWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICB8IEdldCBfIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICB8IFBvc3QgYm9keSAtPlxuICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgICAgIHwgU29tZSBib2R5IC0+XG4gICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgIHwgQmxvYiBiIC0+IHJlcSMjc2VuZF9ibG9iIGJcbiAgICAgICAgIHwgRG9jdW1lbnQgZCAtPiByZXEjI3NlbmRfZG9jdW1lbnQgZFxuICAgICAgICAgfCBTdHJpbmcgcyAtPiByZXEjI3NlbmQgKEpzLnNvbWUgKEpzLnN0cmluZyBzKSlcbiAgICAgICAgIHwgRm9ybV9kYXRhIGZkIC0+IHJlcSMjc2VuZF9mb3JtRGF0YSBmZCkpKTtcbiAgSXZhci5yZWFkIHJlc3BvbnNlXG47O1xuXG5sZXQgZ2V0ID8oYXJndW1lbnRzID0gW10pIHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChHZXQgYXJndW1lbnRzKSlcbjs7XG5cbmxldCBwb3N0ID9ib2R5IHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChQb3N0IGJvZHkpKVxuOztcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlLlRpbWVfbnNcbm1vZHVsZSBDbG9ja19ucyA9IEFzeW5jX2tlcm5lbC5DbG9ja19uc1xubW9kdWxlIFNjaGVkdWxlciA9IEFzeW5jX2tlcm5lbC5Bc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGVcbm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IHNsZWVwIGQgPSBDbG9ja19ucy5hZnRlciAoVGltZV9ucy5TcGFuLm9mX3NlYyBkKVxubGV0IHlpZWxkICgpID0gU2NoZWR1bGVyLnlpZWxkIChTY2hlZHVsZXIudCAoKSlcblxubGV0IHJlYyBleHRyYWN0X2pzX2Vycm9yIChleG4gOiBleG4pIDogKHN0cmluZyBsaXN0ICogSnNfZXJyb3IudCkgb3B0aW9uID1cbiAgbWF0Y2ggZXhuIHdpdGhcbiAgfCBFeG4uUmVyYWlzZWQgKG1zZywgZXhuKSAtPlxuICAgIChtYXRjaCBleHRyYWN0X2pzX2Vycm9yIGV4biB3aXRoXG4gICAgIHwgU29tZSAobWVzc2FnZXMsIGpzX2Vycm9yKSAtPiBTb21lIChtc2cgOjogbWVzc2FnZXMsIGpzX2Vycm9yKVxuICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgfCBleG4gLT5cbiAgICAobWF0Y2ggSnNfZXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgIHwgU29tZSBqc19lcnJvciAtPiBTb21lIChbXSwganNfZXJyb3IpXG4gICAgIHwgTm9uZSAtPiBOb25lKVxuOztcblxubGV0IHByZXR0eV9wcmludF9leGNlcHRpb24gbmFtZSBleG4gPVxuICBsZXQgZXhuID0gQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIGluXG4gIGxldCBjbGFzc2lmaWNhdGlvbiA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IEpzX2Vycm9yLkV4biBlcnIgLT4gYEpzIGVyclxuICAgIHwgZXhuIC0+XG4gICAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICAgIHwgTm9uZSAtPiBgRXhuIGV4blxuICAgICAgIHwgU29tZSBlcnIgLT4gYEpzX2FuZF9leG4gKGV4biwgZXJyKSlcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZmljYXRpb24gd2l0aFxuICB8IGBKcyBlcnIgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgZXJyXG4gIHwgYEV4biBleG4gLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKVxuICB8IGBKc19hbmRfZXhuIChleG4sIChtZXNzYWdlcywgZXJyKSkgLT5cbiAgICAobWF0Y2ggbWVzc2FnZXMgd2l0aFxuICAgICB8IFtdIC0+IEZpcmVidWcuY29uc29sZSMjZ3JvdXAgKEpzLnN0cmluZyBuYW1lKVxuICAgICB8IGhkIDo6IHJlc3QgLT5cbiAgICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwIChKcy5zdHJpbmcgaGQpO1xuICAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgbmFtZSk7XG4gICAgICAgTGlzdC5pdGVyIHJlc3QgfmY6KGZ1biBtZXNzYWdlIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBtZXNzYWdlKSkpO1xuICAgICgqIFdlIGZpcnN0IG91dHB1dCB0aGUgc3RyaW5naWZpZWQgb2NhbWwgZXhjZXB0aW9uICopXG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cENvbGxhcHNlZCAoSnMuc3RyaW5nIFwiT0NhbWwgRXhjZXB0aW9uXCIpO1xuICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSk7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cEVuZDtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIGVycjtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwRW5kXG47O1xuXG5sZXQgcnVuID1cbiAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IElkbGVcbiAgICAgIHwgUnVubmluZ1xuICAgICAgfCBXaWxsX3J1bl9zb29uXG4gIGVuZFxuICBpblxuICBsZXQgbW9kdWxlIE5leHRfd2FrZXVwID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgVGltZV9ucy50ICogZmxvYXRcbiAgICAgIHwgTm9fd2FrZXVwXG4gICAgICB8IFNvb25cbiAgZW5kXG4gIGluXG4gIGxldCBzdGF0ZSA9IHJlZiBTdGF0ZS5JZGxlIGluXG4gIGxldCB0aW1lb3V0cyA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBsZXQgcnVuX2FmdGVyIH5mIH5tcyA9IGlnbm9yZSAoRG9tX2h0bWwuc2V0VGltZW91dCBmIG1zIDogRG9tX2h0bWwudGltZW91dF9pZF9zYWZlKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBtYXRjaCAhc3RhdGUsIFNjaGVkdWxlci51bmNhdWdodF9leG4gdCB3aXRoXG4gICAgfCBfLCBTb21lIF8gfCBTdGF0ZS5SdW5uaW5nLCBOb25lIC0+ICgpXG4gICAgfCAoU3RhdGUuSWRsZSB8IFN0YXRlLldpbGxfcnVuX3Nvb24pLCBOb25lIC0+XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5SdW5uaW5nO1xuICAgICAgU2NoZWR1bGVyLnJ1bl9jeWNsZSB0O1xuICAgICAgbGV0IG5leHRfd2FrZXVwIDogTmV4dF93YWtldXAudCA9XG4gICAgICAgIGlmIFNjaGVkdWxlci5jYW5fcnVuX2Ffam9iIHRcbiAgICAgICAgdGhlbiBTb29uXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIFNjaGVkdWxlci5uZXh0X3VwY29taW5nX2V2ZW50IHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb193YWtldXBcbiAgICAgICAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgICAgICAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gICAgICAgICAgICBsZXQgZCA9IFRpbWVfbnMuZGlmZiBuZXh0IG5vdyBpblxuICAgICAgICAgICAgbGV0IGRfbXMgPSBUaW1lX25zLlNwYW4udG9fbXMgZCBpblxuICAgICAgICAgICAgaWYgRmxvYXQuKCA8PSApIGRfbXMgMC4gdGhlbiBTb29uIGVsc2UgQXQgKG5leHQsIGRfbXMpKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChTY2hlZHVsZXIudW5jYXVnaHRfZXhuX3Vud3JhcHBlZCB0KSB+ZjooZnVuIChleG4sIF9zZXhwKSAtPlxuICAgICAgICBtYXRjaCBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gd2l0aFxuICAgICAgICB8IEpzX2Vycm9yLkV4biBlcnIgLT4gSnNfZXJyb3IucmFpc2VfIGVyclxuICAgICAgICB8IGV4biAtPlxuICAgICAgICAgIChtYXRjaCBKc19lcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgICAgICB8IFNvbWUgZXJyIC0+XG4gICAgICAgICAgICAgKCogSGFjayB0byBnZXQgYSBiZXR0ZXIgYmFja3RyYWNlICopXG4gICAgICAgICAgICAgcHJldHR5X3ByaW50X2V4Y2VwdGlvbiBcIkVycm9yOlwiIGV4bjtcbiAgICAgICAgICAgICAoKiBBbmQgdGhlbiByYWlzZSB0aGUgZW1iZWRkZWQgamF2YXNjcmlwdCBlcnJvciB0aGF0IHByb3ZpZGVzIGEgcHJvcGVyXG4gICAgICAgICAgICAgICAgYmFja3RyYWNlIHdpdGggZ29vZCBzb3VyY2VtYXAgc3VwcG9ydC5cbiAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGlzIGphdmFzY3JpcHQgZXJyb3IgaXMgcHJvYmFibHkgbm90IG1lYW5pbmdmdWwgd2hpY2ggaXMgd2h5XG4gICAgICAgICAgICAgICAgd2UgZmlyc3Qgb3V0cHV0IHRoZSBzZXJpYWxpemF0aW9uIG9mIG9jYW1sIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICBKc19lcnJvci5yYWlzZV8gZXJyKSk7XG4gICAgICAobWF0Y2ggbmV4dF93YWtldXAgd2l0aFxuICAgICAgIHwgTm9fd2FrZXVwIC0+IHN0YXRlIDo9IElkbGVcbiAgICAgICB8IFNvb24gLT5cbiAgICAgICAgIHN0YXRlIDo9IFdpbGxfcnVuX3Nvb247XG4gICAgICAgICBydW5fYWZ0ZXIgfmY6bG9vcCB+bXM6MC5cbiAgICAgICB8IEF0IChhdCwgZF9tcykgLT5cbiAgICAgICAgIHN0YXRlIDo9IElkbGU7XG4gICAgICAgICBpZiBTdGFjay5pc19lbXB0eSB0aW1lb3V0cyB8fCBUaW1lX25zLiggPCApIGF0IChTdGFjay50b3BfZXhuIHRpbWVvdXRzKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIFN0YWNrLnB1c2ggdGltZW91dHMgYXQ7XG4gICAgICAgICAgIHJ1bl9hZnRlciB+ZjpydW5fdGltZW91dCB+bXM6ZF9tcykpXG4gIGFuZCBydW5fdGltZW91dCAoKSA9XG4gICAgKCogRWFjaCBjYWxsIHRvIFtydW5fdGltZW91dF0gcmVtb3ZlcyBleGFjdGx5IG9uZSBlbGVtZW50IGZyb20gW3RpbWVvdXRzXS4gIFRoaXNcbiAgICAgICBtYWludGFpbnMgdGhlIGludmFyaWFudCB0aGF0IFtTdGFjay5sZW5ndGggdGltZW91dHNdIGlzIGV4YWN0bHkgdGhlIG51bWJlciBvZlxuICAgICAgIG91dHN0YW5kaW5nIHRpbWVvdXRzIHdlIGhhdmUgcmVnaXN0ZXJlZC4gKilcbiAgICBpZ25vcmUgKFN0YWNrLnBvcF9leG4gdGltZW91dHMgOiBUaW1lX25zLnQpO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IFN0YXRlLklkbGUgLT5cbiAgICAgIHJ1bl9hZnRlciB+Zjpsb29wIH5tczowLjtcbiAgICAgIHN0YXRlIDo9IFN0YXRlLldpbGxfcnVuX3Nvb25cbiAgICB8IFN0YXRlLlJ1bm5pbmcgfCBTdGF0ZS5XaWxsX3J1bl9zb29uIC0+ICgpXG47O1xuXG5sZXQgaW5pdGlhbGl6ZWRfcmVmID0gcmVmIGZhbHNlXG5cbmxldCBpbml0aWFsaXphdGlvbiA9XG4gIGxhenlcbiAgICAobGV0IHQgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgICBpbml0aWFsaXplZF9yZWYgOj0gdHJ1ZTtcbiAgICAgU2NoZWR1bGVyLnNldF9qb2JfcXVldWVkX2hvb2sgdCAoZnVuIF8gLT4gcnVuICgpKTtcbiAgICAgU2NoZWR1bGVyLnNldF9ldmVudF9hZGRlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBydW47XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuXG4gICAgIDo9IHByZXR0eV9wcmludF9leGNlcHRpb24gXCJBc3luY19rZXJuZWw6IE1vbml0b3IudHJ5X3dpdGhcIjtcbiAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9yc1xuICAgICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLm1haW5cbiAgICAgICB+ZjoocHJldHR5X3ByaW50X2V4Y2VwdGlvbiBcIkFzeW5jX2tlcm5lbDogVW5oYW5kbGVkIGV4Y2VwdGlvblwiKTtcbiAgICAgcnVuICgpKVxuOztcblxubGV0IGluaXQgKCkgPSBmb3JjZSBpbml0aWFsaXphdGlvblxubGV0IGluaXRpYWxpemVkICgpID0gIWluaXRpYWxpemVkX3JlZlxuXG5sZXQgZG9jdW1lbnRfbG9hZGVkID1cbiAgbGV0IGpzX3N0cmluZ19jb21wYXJlIHMgPVxuICAgIGxldCBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzID0gcGh5c19lcXVhbCBpblxuICAgIGNvbXBhcmVfdXNpbmdfamF2YXNjcmlwdF90cmlwbGVfZXF1YWxfZm9yX3N0cmluZ3MgKEpzLnN0cmluZyBzKVxuICBpblxuICBsZXQgcmVhZHlfc3RhdGVfY2hhbmdlID0gXCJyZWFkeXN0YXRlY2hhbmdlXCIgaW5cbiAgbGV0IGNvbXBsZXRlID0gXCJjb21wbGV0ZVwiIGluXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlX2V2ID0gRG9tLkV2ZW50Lm1ha2UgcmVhZHlfc3RhdGVfY2hhbmdlIGluXG4gIGxldCBhZGRfZXZlbnQgdGFyZ2V0IGV2dCBoYW5kbGVyID1cbiAgICBpZ25vcmVcbiAgICAgIChEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIHRhcmdldCBldnQgaGFuZGxlciBKcy5fZmFsc2UgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIGlmIGpzX3N0cmluZ19jb21wYXJlIGNvbXBsZXRlIERvbV9odG1sLmRvY3VtZW50IyMucmVhZHlTdGF0ZVxuICAgIHRoZW4gQXN5bmNfa2VybmVsLkRlZmVycmVkLnVuaXRcbiAgICBlbHNlIChcbiAgICAgIGxldCBsb2FkZWQgPSBBc3luY19rZXJuZWwuSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBoYW5kbGVyIGV2dCA9XG4gICAgICAgIGlmIChub3QgKGpzX3N0cmluZ19jb21wYXJlIHJlYWR5X3N0YXRlX2NoYW5nZSBldnQjIy5fdHlwZSkpXG4gICAgICAgIHx8IGpzX3N0cmluZ19jb21wYXJlIGNvbXBsZXRlIERvbV9odG1sLmRvY3VtZW50IyMucmVhZHlTdGF0ZVxuICAgICAgICB0aGVuIEFzeW5jX2tlcm5lbC5JdmFyLmZpbGxfaWZfZW1wdHkgbG9hZGVkICgpO1xuICAgICAgICBKcy5fdHJ1ZVxuICAgICAgaW5cbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC5kb2N1bWVudCBEb21faHRtbC5FdmVudC5kb21Db250ZW50TG9hZGVkIChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC5kb2N1bWVudCByZWFkeXN0YXRlY2hhbmdlX2V2IChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC53aW5kb3cgRG9tX2h0bWwuRXZlbnQubG9hZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBBc3luY19rZXJuZWwuSXZhci5yZWFkIGxvYWRlZClcbjs7XG4iLCJtb2R1bGUgUnBjID0gUnBjXG5tb2R1bGUgSHR0cCA9IEh0dHBcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgUGVyc2lzdGVudF9jb25uZWN0aW9uID0gUGVyc2lzdGVudF9jb25uZWN0aW9uXG5pbmNsdWRlIEFzeW5jX2pzMFxuXG5sZXQgbG9nX3MgPSBEZWJ1Zy5sb2dfc1xubGV0IGxvZ19zX2FzX3N0cmluZyA9IERlYnVnLmxvZ19zX2FzX3N0cmluZ1xuIiwib3BlbiEgQmFzZVxuXG4oKiBUaGUgW2RhdGFdIGFycmF5IGlzIGFuIGltcGxpY2l0IGJpbmFyeSB0cmVlIHdpdGggW2NoaWxkcmVuX2xlbmd0aCAqIDIgLSAxXSBub2RlcyxcbiAgIHdpdGggZWFjaCBub2RlIGJlaW5nIHRoZSBzdW0gb2YgdGhlIHR3byBjaGlsZCBub2RlcyBhbmQgdGhlIHJvb3Qgbm9kZSBiZWluZyB0aGUgMHRoXG4gICBub2RlLiAgVGhlIGxlYXZlcyBvZiB0aGUgdHJlZSBhcmUgdGhlIGxhc3QgW251bV9sZWF2ZXNdIG5vZGVzLlxuXG4gICBUaGUgY2hpbGRyZW4gYXJlIG5vdCBuZWNlc3NhcmlseSBhbGwgYXQgdGhlIHNhbWUgbGV2ZWwgb2YgdGhlIHRyZWUuIEZvciBpbnN0YW5jZSBpZlxuICAgeW91IGhhdmUgMyBjaGlsZHJlbiBbfCBhOyBiOyBjIHxdOlxuXG4gICB7dlxuICAgICAgICAgIG9cbiAgICAgICAgIC8gXFxcbiAgICAgICAgbyAgIGNcbiAgICAgICAvIFxcXG4gICAgICBhICAgYlxuICAgdn1cblxuICAgV2Ugd2FudCB0aGlzIHRyZWUgdG8gYmUgcmVwcmVzZW50YXRlZCBhcyBbfCBvOyBvOyBjOyBhOyBiIHxdLCBpLmUuIHdlIG5lZWQgdG8gYXBwbHlcbiAgIGZpcnN0IGEgcm90YXRpb24gdGhlbiBhIHRyYW5zbGF0aW9uIHRvIGNvbnZlcnQgYW4gaW5kZXggaW4gW3wgYTsgYjsgYyB8XSB0byBhIChsZWFmKVxuICAgaW5kZXggaW4gW3wgbzsgbzsgYzsgYTsgYiB8XS4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgZGF0YSA6ICdhIE9wdGlvbl9hcnJheS50XG4gIDsgbnVtX2xlYXZlcyA6IGludFxuICA7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCA6IGludFxuICA7IHJlZHVjZSA6ICdhIC0+ICdhIC0+ICdhXG4gIDsgc2V4cF9vZl9hIDogJ2EgLT4gU2V4cC50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5udW1fbGVhdmVzXG5cbigqIHt2XG4gICAgIHBhcmVudDogICAgICAwICAxICAyICAzICA0ICA1ICA2ICA3ICA4ICA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IC4uLlxuICAgICBsZWZ0IGNoaWxkOiAgMSAgMyAgNSAgNyAgOSAxMSAxMyAxNSAxNyAxOSAyMSAyMyAyNSAyNyAyOSAzMSAzMyAzNSAzNyAzOSAuLi5cbiAgICAgcmlnaHQgY2hpbGQ6IDIgIDQgIDYgIDggMTAgMTIgMTQgMTYgMTggMjAgMjIgMjQgMjYgMjggMzAgMzIgMzQgMzYgMzggNDAgLi4uIHZ9ICopXG5sZXQgcGFyZW50X2luZGV4IH5jaGlsZF9pbmRleCA9IChjaGlsZF9pbmRleCAtIDEpIC8gMlxubGV0IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleCA9IChwYXJlbnRfaW5kZXggKiAyKSArIDFcbmxldCByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleCA9IGxlZnRfY2hpbGRfaW5kZXggKyAxXG5cbigqIFRoZSBmaXJzdCBbbnVtX2xlYXZlcy0xXSBlbGVtZW50cyBhcmUgaW50ZXJuYWwgbm9kZXMgb2YgdGhlIHRyZWUuICBUaGUgbmV4dFxuICAgW251bV9sZWF2ZXNdIGVsZW1lbnRzIGFyZSB0aGUgbGVhdmVzLiAqKVxubGV0IG51bV9icmFuY2hlcyB0ID0gdC5udW1fbGVhdmVzIC0gMVxubGV0IGluZGV4X2lzX2xlYWYgdCBpID0gaSA+PSBudW1fYnJhbmNoZXMgdFxuXG4oKiBUaGUgdHJlZSBpcyBjb21wbGV0ZSwgYnV0IG5vdCBuZWNlc3NhcmlseSBwZXJmZWN0LCBzbyB3ZSBwZXJmb3JtIHNvbWUgcm90YXRpb24gb2YgdGhlXG4gICBsZWF2ZXMgdG8gZW5zdXJlIHRoYXQgb3VyIHJlZHVjdGlvbnMgcHJlc2VydmUgb3JkZXJpbmcuICopXG5sZXQgbGVhZl9pbmRleCB0IGkgPVxuICAoKiBUaGUgdHJlZSBsYXlvdXQgaXMgbGV2ZWwgb3JkZXIuICBBbnkgbGVhdmVzIGluIHRoZSBzZWNvbmQgdG8gbGFzdCBsZXZlbCBuZWVkIHRvIG9jY3VyXG4gICAgIGluIHRoZSBhcnJheSBiZWZvcmUgdGhlIGxlYXZlcyBpbiB0aGUgYm90dG9tIGxldmVsLiAqKVxuICBsZXQgcm90YXRlZF9pbmRleCA9XG4gICAgbGV0IG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSA9IGkgKyB0Lm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCBpblxuICAgIGlmIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSA8IHQubnVtX2xlYXZlc1xuICAgIHRoZW4gb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5XG4gICAgZWxzZSBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgLSB0Lm51bV9sZWF2ZXNcbiAgaW5cbiAgKCogVGhlIGxlYXZlcyBvY2N1ciBhZnRlciB0aGUgYnJhbmNoZXMgaW4gdGhlIGFycmF5LiAqKVxuICByb3RhdGVkX2luZGV4ICsgbnVtX2JyYW5jaGVzIHRcbjs7XG5cbmxldCBnZXRfbGVhZiB0IGkgPSBPcHRpb25fYXJyYXkuZ2V0IHQuZGF0YSAobGVhZl9pbmRleCB0IGkpXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IGdldF9sZWFmIHQgaSlcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHRvX2xpc3QgdCA6IGEgb3B0aW9uIGxpc3QpXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgZGF0YSA9IHQuZGF0YSBpblxuICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBkYXRhIC0gMSBkb1xuICAgIG1hdGNoIE9wdGlvbl9hcnJheS5nZXQgZGF0YSBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudW1fYnJhbmNoZXMgdCAtIDEgZG9cbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGxldCBsZWZ0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIGxlZnQgaW5cbiAgICBsZXQgcmlnaHRfaXNfbm9uZSA9IE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgcmlnaHQgaW5cbiAgICBpZiBPcHRpb25fYXJyYXkuaXNfc29tZSBkYXRhIGlcbiAgICB0aGVuIGFzc2VydCAobm90IChsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSkpXG4gICAgZWxzZVxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgaW5kZXhfaXNfbGVhZiB0IGxlZnQgfHwgaW5kZXhfaXNfbGVhZiB0IHJpZ2h0IHx8IGxlZnRfaXNfbm9uZSB8fCByaWdodF9pc19ub25lKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlX2V4biA/KHNleHBfb2ZfYSA9IFslc2V4cF9vZjogX10pICgpIH5sZW46bnVtX2xlYXZlcyB+cmVkdWNlID1cbiAgaWYgbnVtX2xlYXZlcyA8IDFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIm5vbi1wb3NpdGl2ZSBudW1iZXIgb2YgbGVhdmVzIGluIGJhbGFuY2VkIHJlZHVjZXJcIiAobnVtX2xlYXZlcyA6IGludCldO1xuICBsZXQgbnVtX2JyYW5jaGVzID0gbnVtX2xlYXZlcyAtIDEgaW5cbiAgbGV0IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCA9IEludC5jZWlsX3BvdzIgbnVtX2xlYXZlcyAtIG51bV9sZWF2ZXMgaW5cbiAgbGV0IGRhdGEgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KG51bV9icmFuY2hlcyArIG51bV9sZWF2ZXMpIGluXG4gIHsgZGF0YTsgbnVtX2xlYXZlczsgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsOyByZWR1Y2U7IHNleHBfb2ZfYSB9XG47O1xuXG5sZXQgdmFsaWRhdGVfaW5kZXggdCBpID1cbiAgaWYgaSA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcImF0dGVtcHQgdG8gYWNjZXNzIG5lZ2F0aXZlIGluZGV4IGluIGJhbGFuY2VkIHJlZHVjZXJcIiB+aW5kZXg6KGkgOiBpbnQpXTtcbiAgbGV0IGxlbmd0aCA9IHQubnVtX2xlYXZlcyBpblxuICBpZiBpID49IGxlbmd0aFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCJcbiAgICAgICAgICB+aW5kZXg6KGkgOiBpbnQpXG4gICAgICAgICAgKGxlbmd0aCA6IGludCldXG47O1xuXG5sZXQgc2V0X2V4biB0IGkgYSA9XG4gIHZhbGlkYXRlX2luZGV4IHQgaTtcbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgbGV0IGkgPSByZWYgKGxlYWZfaW5kZXggdCBpKSBpblxuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgZGF0YSAhaSBhO1xuICB3aGlsZSAhaSA8PiAwIGRvXG4gICAgbGV0IHBhcmVudCA9IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXg6IWkgaW5cbiAgICBpZiBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHBhcmVudFxuICAgIHRoZW4gaSA6PSAwXG4gICAgZWxzZSAoXG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIGRhdGEgcGFyZW50O1xuICAgICAgaSA6PSBwYXJlbnQpXG4gIGRvbmVcbjs7XG5cbmxldCBnZXRfZXhuIHQgaSA9XG4gIHZhbGlkYXRlX2luZGV4IHQgaTtcbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxuOztcblxubGV0IHJlYyBjb21wdXRlX2V4biB0IGkgPVxuICBpZiBPcHRpb25fYXJyYXkuaXNfc29tZSB0LmRhdGEgaVxuICB0aGVuIE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZGF0YSBpXG4gIGVsc2UgKFxuICAgIGxldCBsZWZ0ID0gbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4OmkgaW5cbiAgICBsZXQgcmlnaHQgPSByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleDpsZWZ0IGluXG4gICAgaWYgbGVmdCA+PSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZGF0YVxuICAgIHRoZW4gKFxuICAgICAgKCogSWYgd2UgZ2V0IGhlcmUsIHRoZSBwYXJlbnQgd2FzIGFuIHVuc2V0IGxlYWYuICopXG4gICAgICBsZXQgc2V4cF9vZl9hID0gdC5zZXhwX29mX2EgaW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJhdHRlbXB0IHRvIGNvbXB1dGUgYmFsYW5jZWQgcmVkdWNlciB3aXRoIHVuc2V0IGVsZW1lbnRzXCJcbiAgICAgICAgICAgIH5iYWxhbmNlZF9yZWR1Y2VyOih0IDogYSB0KV0pO1xuICAgIGxldCBhID0gdC5yZWR1Y2UgKGNvbXB1dGVfZXhuIHQgbGVmdCkgKGNvbXB1dGVfZXhuIHQgcmlnaHQpIGluXG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmRhdGEgaSBhO1xuICAgIGEpXG47O1xuXG5sZXQgY29tcHV0ZV9leG4gdCA9IGNvbXB1dGVfZXhuIHQgMFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGluaXQgOiAnYVxuICA7IHN0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB7IGluaXQ7IHN0ZXBzID0gXyB9ID0gaW52YXJpYW50X2EgaW5pdFxuXG5sZXQgcmVjIHZhbHVlX2ludGVybmFsIGluaXQgc3RlcHMgfmF0ID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSAoKHQsIGEpLCBzdGVwcykgLT5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IHQgdGhlbiBpbml0IGVsc2UgdmFsdWVfaW50ZXJuYWwgYSBzdGVwcyB+YXRcbjs7XG5cbmxldCB2YWx1ZSB0IH5hdCA9IHZhbHVlX2ludGVybmFsIHQuaW5pdCB0LnN0ZXBzIH5hdFxubGV0IGNvbnN0YW50IGluaXQgPSB7IGluaXQ7IHN0ZXBzID0gU2VxdWVuY2UuZW1wdHkgfVxuXG5sZXQgY3JlYXRlX2V4biB+aW5pdCB+c3RlcHMgPVxuICBpZiBub3RcbiAgICAgICAoTGlzdC5pc19zb3J0ZWQgc3RlcHMgfmNvbXBhcmU6KGZ1biAodGltZTEsIF8pICh0aW1lMiwgXykgLT5cbiAgICAgICAgICBUaW1lX25zLmNvbXBhcmUgdGltZTEgdGltZTIpKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1N0ZXBfZnVuY3Rpb24uY3JlYXRlX2V4bl0gZ290IHVuc29ydGVkIHRpbWVzXCJcbiAgICAgICAgICB+c3RlcHM6KHN0ZXBzIHw+IExpc3QubWFwIH5mOmZzdCA6IFRpbWVfbnMudCBsaXN0KV07XG4gIHsgaW5pdDsgc3RlcHMgPSBzdGVwcyB8PiBTZXF1ZW5jZS5vZl9saXN0IH1cbjs7XG5cbmxldCBjcmVhdGVfZnJvbV9zZXF1ZW5jZSB+aW5pdCB+c3RlcHMgPSB7IGluaXQ7IHN0ZXBzIH1cbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFdlYWsgPSBTdGRsaWIuV2Vha1xuXG50eXBlICdhIHQgPSAnYSBIZWFwX2Jsb2NrLnQgV2Vhay50XG5cbmxldCBjcmVhdGUgfmxlbiA9IFdlYWsuY3JlYXRlIGxlblxubGV0IGxlbmd0aCB0ID0gV2Vhay5sZW5ndGggdFxubGV0IHNldCA9IFdlYWsuc2V0XG5cbmxldCBzZXRfZXhuIHQgaSB4ID0gc2V0IHQgaSAoT3B0aW9uLm1hcCB4IH5mOkhlYXBfYmxvY2suY3JlYXRlX2V4bilcblxubGV0IGdldCA9IFdlYWsuZ2V0XG5sZXQgaXNfc29tZSB0IGkgPSBXZWFrLmNoZWNrIHQgaVxubGV0IGlzX25vbmUgdCBpID0gbm90IChpc19zb21lIHQgaSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXQgdCBpKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cF9vZjogYSBIZWFwX2Jsb2NrLnQgb3B0aW9uIGFycmF5XSAodG9fYXJyYXkgdClcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBnZXQgdCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBmIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZ2V0IHQgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gZiBpIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICBXZWFrLmJsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4iLCIoKiBXZSBpbXBsZW1lbnQgYSB3ZWFrIHBvaW50ZXIgdXNpbmcgYSBbV2Vha19hcnJheS50XS4gKilcblxub3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSBXZWFrX2FycmF5LnRcblxubGV0IGNyZWF0ZSAoKSA9IFdlYWtfYXJyYXkuY3JlYXRlIH5sZW46MVxuXG4oKiBXZSB1c2UgYSB3ZWFrIGFycmF5IG9mIGxlbmd0aCAxLCBzbyB0aGUgd2VhayBwb2ludGVyIGlzIGF0IGluZGV4IDAuICopXG5sZXQgaW5kZXggPSAwXG5cbmxldCBnZXQgdCA9IFdlYWtfYXJyYXkuZ2V0IHQgaW5kZXhcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIEhlYXBfYmxvY2sudCBvcHRpb24pXVxuXG5sZXQgaXNfbm9uZSB0ID0gV2Vha19hcnJheS5pc19ub25lIHQgaW5kZXhcbmxldCBpc19zb21lIHQgPSBXZWFrX2FycmF5LmlzX3NvbWUgdCBpbmRleFxuXG5sZXQgc2V0IHQgYmxvY2sgPSBXZWFrX2FycmF5LnNldCB0IGluZGV4IChTb21lIGJsb2NrKVxuIiwib3BlbiEgQmFzZVxuXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgZW50cnlfYnlfa2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgnYSwgJ2IgV2Vha19wb2ludGVyLnQpIEhhc2h0YmwudFxuICA7IGtleXNfd2l0aF91bnVzZWRfZGF0YSAgICAgICAgICAgICAgICAgICAgOiAnYSBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA6IHVuaXQgLT4gdW5pdFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgaGFzaGFibGUgPVxuICAgIHsgZW50cnlfYnlfa2V5ICAgICAgICAgICAgICAgICAgICAgPVxuICAgICAgICBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemVcbiAgICAgICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG5cbiAgICA7IGtleXNfd2l0aF91bnVzZWRfZGF0YSAgICAgICAgICAgID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyB0aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA9IGlnbm9yZVxuICAgIH1cbiAgOztcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgVXNpbmdfaGFzaGFibGUuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUub2Zfa2V5IG0pXG47O1xuXG5sZXQgc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHQgfnRocmVhZF9zYWZlX2YgPVxuICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhIDwtIHRocmVhZF9zYWZlX2Y7XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID0gSGFzaHRibC5yZW1vdmUgdC5lbnRyeV9ieV9rZXkga2V5XG5cbigqIEluIG9yZGVyIGZvciBhIGNhbGwgdG8gW3JlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YV0gdG8gcmVjbGFpbSBhIGtleSB0aGF0XG4gICB3YXMgcHJldmlvdXNseSBmaW5hbGl6ZWQsIHRoZSB3ZWFrIHBvaW50ZXIgbXVzdCBoYXZlIGJlZW4gY2xlYXJlZC4gIFRoaXMgcmVsaWVzIG9uIHRoZVxuICAgZmFjdCB0aGF0IHRoZSBPQ2FtbCBnYXJiYWdlIGNvbGxlY3RvciBjbGVhcnMgd2Vha3MgYW5kIHRoZW4gcnVucyBmaW5hbGl6ZXJzLiAqKVxubGV0IHJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQua2V5c193aXRoX3VudXNlZF9kYXRhID4gMCBkb1xuICAgIGxldCBrZXkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlbnRyeSAtPiBpZiBXZWFrX3BvaW50ZXIuaXNfbm9uZSBlbnRyeSB0aGVuIHJlbW92ZSB0IGtleVxuICBkb25lO1xuOztcblxubGV0IGdldF9lbnRyeSB0IGtleSA9XG4gIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5lbnRyeV9ieV9rZXkga2V5XG4gICAgfmRlZmF1bHQ6KGZ1biAoKSAtPiBXZWFrX3BvaW50ZXIuY3JlYXRlICgpKTtcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuOztcblxubGV0IGtleV9pc191c2luZ19zcGFjZSB0IGtleSA9IEhhc2h0YmwubWVtIHQuZW50cnlfYnlfa2V5IGtleVxuXG5sZXQgc2V0X2RhdGEgdCBrZXkgZW50cnkgKGRhdGEgOiBfIEhlYXBfYmxvY2sudCkgPVxuICBXZWFrX3BvaW50ZXIuc2V0IGVudHJ5IGRhdGE7XG4gIGxldCBjbGVhbnVwICgpID1cbiAgICBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT5cbiAgICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEga2V5O1xuICAgICAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSAoKSlcbiAgaW5cbiAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IGNsZWFudXAgZGF0YSB3aXRoXG4gICgqIEluIHRoaXMgY2FzZSwgW3hdIGlzIGtub3duIHRvIGJlIHN0YXRpYyBkYXRhLCB3aGljaCB3aWxsXG4gICAgIG5ldmVyIGJlIGNvbGxlY3RlZCBieSB0aGUgR0MgYW55d2F5LCBzbyBpdCdzIHNhZmUgdG8gZHJvcCAqKVxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiAoKVxuXG47O1xuXG5sZXQgcmVwbGFjZSB0IH5rZXkgfmRhdGEgPSBzZXRfZGF0YSB0IGtleSAoZ2V0X2VudHJ5IHQga2V5KSBkYXRhXG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBpZiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiV2Vha19oYXNodGJsLmFkZF9leG4gb2Yga2V5IGluIHVzZVwiIH5fOih0IDogKF8sIF8pIHQpIFslaGVyZV1dO1xuICBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhO1xuOztcblxubGV0IGZpbmQgdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGVudHJ5IC0+IFdlYWtfcG9pbnRlci5nZXQgZW50cnlcbjs7XG5cbmxldCBmaW5kX29yX2FkZCB0IGtleSB+ZGVmYXVsdCA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBtYXRjaCBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5IHdpdGhcbiAgfCBTb21lIHYgLT4gdlxuICB8IE5vbmUgLT5cbiAgICBsZXQgZGF0YSA9IGRlZmF1bHQgKCkgaW5cbiAgICBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhO1xuICAgIGRhdGFcbjs7XG4iLCJ0eXBlIHQgPVxuICB8IEJlZm9yZVxuICB8IEFmdGVyXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuIiwiWyUlaW1wb3J0IFwiZGVidWcubWxoXCJdXG5cbm9wZW4gQ29yZVxuXG4oKiBBbGwgW2Fzc2VydF1zIGFuZCBvdGhlciBjaGVja3MgdGhyb3VnaG91dCB0aGUgY29kZSBhcmUgZ3VhcmRlZCBieSBbaWYgZGVidWddLiAgVGhlXG4gICBERUJVRyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIGxpYiBbaW5jcmVtZW50YWxdIGFuZCB1bnNldCBpbiB0aGUgbGliXG4gICBbaW5jcmVtZW50YWxfZGVidWddLCBidXQgYXBhcnQgZnJvbSB0aGF0IHRoZXkgYXJlIGlkZW50aWNhbC4gIFRlc3RzIGFyZSBydW4gd2l0aCBib3RoXG4gICB0aGUgcHJvZHVjdGlvbiBhbmQgZGVidWcgbGliLCBhbmQgdXNlcnMgY2FuIGNob29zZSB0byBidWlsZCB3aXRoIHRoZSBkZWJ1ZyBsaWJyYXJ5LCBpZlxuICAgdGhleSBzdXNwZWN0IHRoZXkgZm91bmQgYSBidWcgaW4gaW5jcmVtZW50YWwuICopXG5cblslJWlmIEpTQ19ERUJVR11cblxubGV0IGRlYnVnID0gdHJ1ZVxuXG5bJSVlbHNlXVxuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5bJSVlbmRpZl1cblxubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcbmxldCB0YWcgbmFtZSBhIHNleHBfb2ZfYSA9IChuYW1lLCBhKSB8PiBbJXNleHBfb2Y6IHN0cmluZyAqIGFdXG5cbm1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gSW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBcnJheVxuXG4gICgqIE5vdCBkZWZpbmluZyBhbGlhc2VzIGluIHByb2R1Y3Rpb24gbW9kZSwgc2luY2UgdGhleSBicmVhayB0eXBlIHNwZWNpYWxpemF0aW9uIG9mXG4gICAgIGFycmF5IGFjY2Vzc2VzLiAqKVxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuIGEgPVxuICAgIGxldCBuZXdfdCA9IGNyZWF0ZSB+bGVuIGEgaW5cbiAgICBBcnJheS5ibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgVW9wdCA9IHN0cnVjdFxuICBpbmNsdWRlIFVvcHRcblxuICBsZXQgdW5zYWZlX3ZhbHVlID0gaWYgZGVidWcgdGhlbiB2YWx1ZV9leG4gZWxzZSB1bnNhZmVfdmFsdWVcbmVuZFxuXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaWZvcm1fYXJyYXlcblxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRfd2l0aF9jYW1sX21vZGlmeVxuXG4gIFslJWVsc2VdXG5cbiAgKCogVW5pZm9ybV9hcnJheSBpcyBiZWluZyBcInNtYXJ0XCIgYnkgY2hlY2tpbmcgaWYgZWxlbWVudHMgYXJlIGludGVnZXJzLCBidXQgVW9wdC50XG4gICAgIGFsbW9zdCBuZXZlciBjb250YWluIGludGVnZXJzLCBzbyB0aGUgZXh0cmEgY2hlY2sgdG8gbWFrZSBnZW5lcmF0ZWQgY29kZSBoYXJkZXIgdG9cbiAgICAgcmVhZCBhbmQgcG90ZW50aWFsbHkgc2xvd2VyLiAqKVxuICBsZXQgdW5zYWZlX3NldCA9IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeVxuICBsZXQgc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBVb3B0Lm5vbmUgaW5cbiAgICBibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgKCogV2Ugc3BlY2lhbGl6ZSBzb21lIGN1dG9mZnMgdG8gYXZvaWQgYW4gaW5kaXJlY3QgZnVuY3Rpb24gY2FsbDsgaW4gcGFydGljdWxhciB3ZVxuICAgICBzcGVjaWFsaXplIHRoZSBkZWZhdWx0IChhbmQgaGVuY2Ugb3ZlcndoZWxtaW5nbHkgY29tbW9uKSBjYXNlIG9mIHBoeXNpY2FsXG4gICAgIGVxdWFsaXR5LiAqKVxuICB8IEFsd2F5c1xuICB8IE5ldmVyXG4gIHwgUGh5c19lcXVhbFxuICB8IENvbXBhcmUgb2YgKCdhIC0+ICdhIC0+IGludClcbiAgfCBFcXVhbCBvZiAoJ2EgLT4gJ2EgLT4gYm9vbClcbiAgfCBGIG9mIChvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+IGJvb2wpXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBBbHdheXMgfCBOZXZlciB8IFBoeXNfZXF1YWwgfCBDb21wYXJlIF8gfCBFcXVhbCBfIHwgRiBfIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBmID0gRiBmXG5sZXQgb2ZfY29tcGFyZSBmID0gQ29tcGFyZSBmXG5sZXQgb2ZfZXF1YWwgZiA9IEVxdWFsIGZcbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgYWx3YXlzID0gQWx3YXlzXG5sZXQgcG9seV9lcXVhbCA9IEVxdWFsIFBvbHkuZXF1YWxcblxubGV0IHNob3VsZF9jdXRvZmYgdCB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQaHlzX2VxdWFsIC0+IHBoeXNfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IE5ldmVyIC0+IGZhbHNlXG4gIHwgQWx3YXlzIC0+IHRydWVcbiAgfCBDb21wYXJlIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlID0gMFxuICB8IEVxdWFsIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlXG4gIHwgRiBmIC0+IGYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG47O1xuXG5sZXQgZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEFsd2F5cywgQWx3YXlzIC0+IHRydWVcbiAgfCBBbHdheXMsIF8gLT4gZmFsc2VcbiAgfCBOZXZlciwgTmV2ZXIgLT4gdHJ1ZVxuICB8IE5ldmVyLCBfIC0+IGZhbHNlXG4gIHwgUGh5c19lcXVhbCwgUGh5c19lcXVhbCAtPiB0cnVlXG4gIHwgUGh5c19lcXVhbCwgXyAtPiBmYWxzZVxuICB8IENvbXBhcmUgZjEsIENvbXBhcmUgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IENvbXBhcmUgXywgXyAtPiBmYWxzZVxuICB8IEVxdWFsIGYxLCBFcXVhbCBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgRXF1YWwgXywgXyAtPiBmYWxzZVxuICB8IEYgZjEsIEYgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEYgXywgXyAtPiBmYWxzZVxuOztcblxubGV0IHBoeXNfZXF1YWwgPSBQaHlzX2VxdWFsXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RyaW5nX2xpc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5tYWtlIH5zZXhwX29mX3QgfmNvbXBhcmUpXG5lbmRcblxudHlwZSBkb3QgPVxuICB7IGxhYmVsIDogU2V0Lk0oU3RyaW5nX2xpc3QpLnRcbiAgOyBhdHRyaWJ1dGVzIDogc3RyaW5nIFN0cmluZy5NYXAudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPVxuICB8IERvdCBvZiBkb3RcbiAgfCBJbmZvIG9mIEluZm8udFxuICB8IEFwcGVuZCBvZlxuICAgICAgeyBwcmlvciA6IHRcbiAgICAgIDsgbmV3XyA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmZvIGluZm8gPSBJbmZvIGluZm9cbmxldCBhcHBlbmQgcHJpb3IgbmV3XyA9IEFwcGVuZCB7IHByaW9yOyBuZXdfIH1cblxubGV0IGRvdCB+bGFiZWwgfmF0dHJpYnV0ZXMgPVxuICBsZXQgbGFiZWwgPSBTZXQuc2luZ2xldG9uIChtb2R1bGUgU3RyaW5nX2xpc3QpIGxhYmVsIGluXG4gIERvdCB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCByZWMgdG9fZG90ID0gZnVuY3Rpb25cbiAgfCBJbmZvIGkgLT5cbiAgICB7IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBbIEluZm8udG9fc3RyaW5nX2h1bSBpIF1cbiAgICA7IGF0dHJpYnV0ZXMgPSBTdHJpbmcuTWFwLmVtcHR5XG4gICAgfVxuICB8IERvdCBkb3QgLT4gZG90XG4gIHwgQXBwZW5kIHsgcHJpb3I7IG5ld18gfSAtPlxuICAgIGxldCBwcmlvciA9IHRvX2RvdCBwcmlvciBpblxuICAgIGxldCBuZXdfID0gdG9fZG90IG5ld18gaW5cbiAgICBsZXQgbGFiZWwgPSBTZXQudW5pb24gcHJpb3IubGFiZWwgbmV3Xy5sYWJlbCBpblxuICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgIE1hcC5tZXJnZV9za2V3ZWRcbiAgICAgICAgcHJpb3IuYXR0cmlidXRlc1xuICAgICAgICBuZXdfLmF0dHJpYnV0ZXNcbiAgICAgICAgfmNvbWJpbmU6KGZ1biB+a2V5Ol8gX2xlZnQgcmlnaHQgLT4gcmlnaHQpXG4gICAgaW5cbiAgICB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCBlc2NhcGVfZG90X3N0cmluZyBzID1cbiAgKCogaHR0cHM6Ly9ncmFwaHZpei5vcmcvZG9jL2luZm8vbGFuZy5odG1sICopXG4gIFwiXFxcIlwiIF4gU3RyaW5nLnN1YnN0cl9yZXBsYWNlX2FsbCBzIH5wYXR0ZXJuOlwiXFxcIlwiIH53aXRoXzpcIlxcXFxcXFwiXCIgXiBcIlxcXCJcIlxuOztcblxubGV0IGVzY2FwZV9yZWNvcmRfbGFiZWwgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL3NoYXBlcy5odG1sICopXG4gIFN0cmluZy5jb25jYXRfbWFwIHMgfmY6KGZ1bmN0aW9uXG4gICAgfCAoJzwnIHwgJz4nIHwgJ3snIHwgJ30nIHwgJ3wnIHwgJ1xcXFwnIHwgJyAnKSBhcyBjIC0+IFwiXFxcXFwiIF4gU3RyaW5nLm9mX2NoYXIgY1xuICAgIHwgYyAtPiBTdHJpbmcub2ZfY2hhciBjKVxuOztcblxubGV0IHRvX3N0cmluZyB+bmFtZSB7IGxhYmVsOyBhdHRyaWJ1dGVzIH0gPVxuICBsZXQgbGFiZWwgPVxuICAgIGxhYmVsXG4gICAgfD4gU2V0LnRvX2xpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGNvbHMgLT5cbiAgICAgIFwie1wiIF4gU3RyaW5nLmNvbmNhdCAoTGlzdC5tYXAgY29scyB+Zjplc2NhcGVfcmVjb3JkX2xhYmVsKSB+c2VwOlwifFwiIF4gXCJ9XCIpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwifFwiXG4gICAgfD4gZnVuIHMgLT4gXCJ7XCIgXiBzIF4gXCJ9XCJcbiAgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGF0dHJpYnV0ZXNcbiAgICB8PiBNYXAudG9fYWxpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgc3ByaW50ZiB7fCAlcz0lc3x9IChlc2NhcGVfZG90X3N0cmluZyBrKSAoZXNjYXBlX2RvdF9zdHJpbmcgdikpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG4gIGluXG4gIHNwcmludGYge3wgICVzIFtzaGFwZT1NcmVjb3JkIGxhYmVsPSVzICVzXXx9IG5hbWUgKGVzY2FwZV9kb3Rfc3RyaW5nIGxhYmVsKSBhdHRyaWJ1dGVzXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAxKVxuXG5sZXQgbmV4dCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAtMSlcbmxldCBub25lID0gLTFcbmxldCBpc19ub25lIHQgPSB0ID0gbm9uZVxubGV0IGlzX3NvbWUgdCA9IHQgPj0gMFxubGV0IGFkZDEgdCA9IHQgKyAxXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFByZXZpb3VzX3VwZGF0ZV9raW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWRcbiAgICB8IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIE5vZGVfdXBkYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBOZWNlc3Nhcnkgb2YgJ2FcbiAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBmIDogJ2EgTm9kZV91cGRhdGUudCAtPiB1bml0XG4gIDsgbXV0YWJsZSBwcmV2aW91c191cGRhdGVfa2luZCA6IFByZXZpb3VzX3VwZGF0ZV9raW5kLnRcbiAgOyBjcmVhdGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGYgfmF0OmNyZWF0ZWRfYXQgPSB7IGY7IHByZXZpb3VzX3VwZGF0ZV9raW5kID0gTmV2ZXJfYmVlbl91cGRhdGVkOyBjcmVhdGVkX2F0IH1cblxubGV0IHJlYWxseV9ydW4gdCAobm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQpID1cbiAgdC5wcmV2aW91c191cGRhdGVfa2luZFxuICA8LSAobWF0Y2ggbm9kZV91cGRhdGUgd2l0aFxuICAgIHwgTmVjZXNzYXJ5IF8gLT4gTmVjZXNzYXJ5XG4gICAgfCBDaGFuZ2VkIF8gLT4gQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWQgLT4gSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5IC0+IFVubmVjZXNzYXJ5KTtcbiAgdC5mIG5vZGVfdXBkYXRlXG47O1xuXG5sZXQgcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSB+bm93ID1cbiAgKCogV2Ugb25seSBydW4gdGhlIGhhbmRsZXIgaWYgd2FzIGNyZWF0ZWQgaW4gYW4gZWFybGllciBzdGFiaWxpemF0aW9uIGN5Y2xlLiAgSWYgdGhlXG4gICAgIGhhbmRsZXIgd2FzIGNyZWF0ZWQgYnkgYW5vdGhlciBvbi11cGRhdGUgaGFuZGxlciBkdXJpbmcgdGhlIHJ1bm5pbmcgb2Ygb24tdXBkYXRlXG4gICAgIGhhbmRsZXJzIGluIHRoZSBjdXJyZW50IHN0YWJpbGl6YXRpb24sIHdlIHRyZWF0IHRoZSBhZGRlZCBoYW5kbGVyIGFzIGlmIGl0IHdlcmUgYWRkZWRcbiAgICAgYWZ0ZXIgdGhpcyBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgV2Ugd2lsbCBydW4gaXQgYXQgdGhlIG5leHQgc3RhYmlsaXphdGlvbiwgYmVjYXVzZVxuICAgICB0aGUgbm9kZSB3aXRoIHRoZSBoYW5kbGVyIHdhcyBwdXNoZWQgb24gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB0LmNyZWF0ZWRfYXQgbm93IDwgMFxuICB0aGVuIChcbiAgICBtYXRjaCB0LnByZXZpb3VzX3VwZGF0ZV9raW5kLCBub2RlX3VwZGF0ZSB3aXRoXG4gICAgKCogT25jZSBhIG5vZGUgaXMgaW52YWxpZGF0ZWQsIHRoZXJlIHdpbGwgbmV2ZXIgYmUgZnVydGhlciBpbmZvcm1hdGlvbiB0byBwcm92aWRlLFxuICAgICAgIHNpbmNlIGluY3JlbWVudGFsIGRvZXMgbm90IGFsbG93IGFuIGludmFsaWQgbm9kZSB0byBiZWNvbWUgdmFsaWQuICopXG4gICAgfCBJbnZhbGlkYXRlZCwgXyAtPiAoKVxuICAgICgqIFRoZXNlIGNhc2VzIGNhbiBoYXBwZW4gaWYgYSBub2RlIGlzIGhhbmRsZWQgYWZ0ZXIgc3RhYmlsaXphdGlvbiBkdWUgdG8gYW5vdGhlclxuICAgICAgIGhhbmRsZXIuICBCdXQgZm9yIHRoZSBjdXJyZW50IGhhbmRsZXIsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gYmVjYXVzZSB0aGVyZSBpcyBub1xuICAgICAgIG5ldyBpbmZvcm1hdGlvbiB0byBwcm92aWRlLiAqKVxuICAgIHwgQ2hhbmdlZCwgTmVjZXNzYXJ5IF8gfCBOZWNlc3NhcnksIE5lY2Vzc2FyeSBfIHwgVW5uZWNlc3NhcnksIFVubmVjZXNzYXJ5IC0+ICgpXG4gICAgKCogSWYgdGhpcyBoYW5kbGVyIGhhc24ndCBzZWVuIGEgbm9kZSB0aGF0IGlzIGNoYW5naW5nLCB3ZSB0cmVhdCB0aGUgdXBkYXRlIGFzIGFuXG4gICAgICAgaW5pdGlhbGl6YXRpb24uICopXG4gICAgfCAoTmV2ZXJfYmVlbl91cGRhdGVkIHwgVW5uZWNlc3NhcnkpLCBDaGFuZ2VkIChfLCBhKSAtPiByZWFsbHlfcnVuIHQgKE5lY2Vzc2FyeSBhKVxuICAgICgqIEFsbCBvdGhlciB1cGRhdGVzIGFyZSBydW4gYXMgaXMuICopXG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWQsIChOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpXG4gICAgfCBVbm5lY2Vzc2FyeSwgKE5lY2Vzc2FyeSBfIHwgSW52YWxpZGF0ZWQpXG4gICAgfCBOZWNlc3NhcnksIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgQ2hhbmdlZCwgKENoYW5nZWQgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpIC0+IHJlYWxseV9ydW4gdCBub2RlX3VwZGF0ZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IGV4biA6IGV4blxuICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgZXhuID0geyBleG47IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgfVxuXG5sZXQgcmVyYWlzZV93aXRoX21lc3NhZ2UgeyBleG47IGJhY2t0cmFjZSB9IG1zZyA9XG4gIEV4bi5yYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoRXhuLlJlcmFpc2VkIChtc2csIGV4bikpIGJhY2t0cmFjZVxuOztcblxubGV0IHJlcmFpc2UgeyBleG47IGJhY2t0cmFjZSB9ID0gRXhuLnJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4biBiYWNrdHJhY2VcbiIsIigqIFRoaXMgbW9kdWxlIGhhcyBhIGdpYW50IFttb2R1bGUgcmVjXSBkZWZpbmluZyBhbGwgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyB1c2VkXG4gICBpbiB0aGUgaW1wbGVtZW50YXRpb24uICBUaGUgZGVmaW5pdGlvbiBvZiBlYWNoIHR5cGUgaXMgdGhlbiByZXBlYXRlZCBpbiBpdHMgZmlsZTtcbiAgIGNvbW1lbnRzIGJlbG9uZyB0aGVyZSwgbm90IGhlcmUuXG5cbiAgIFdlIHB1dCBqdXN0IGVub3VnaCBzZXhwIGNvbnZlcnRlcnMgaGVyZSB0byBkaXNwbGF5IG5vZGUgaWRzLiAgVGhlIGRldGFpbGVkIHNleHBcbiAgIGNvbnZlcnRlcnMgYXJlIGdlbmVyYXRlZCB2aWEgW3dpdGggc2V4cF0gaW4gdGhlIGluZGl2aWR1YWwgZmlsZXMuICBEZWZpbmluZyB0aGUgc2V4cFxuICAgY29udmVydGVycyBvdXRzaWRlIG9mIHRoZSBbbW9kdWxlIHJlY10gbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFcbiAgIHNleHAgY29udmVydGVyIHRoYXQgd291bGQgdHJ5IHRvIHByb2R1Y2UgYW4gaW5maW5pdGUgc2V4cC5cbiopXG5cbm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIHJlYyBBZGp1c3RfaGVpZ2h0c19oZWFwIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgICA7IG11dGFibGUgbWF4X2hlaWdodF9zZWVuIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIEFkanVzdF9oZWlnaHRzX2hlYXBcblxuYW5kIEFsYXJtIDogc2lnXG4gIHR5cGUgdCA9IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbmVuZCA9XG4gIEFsYXJtXG5cbmFuZCBBbGFybV92YWx1ZSA6IHNpZ1xuICBtb2R1bGUgQWN0aW9uIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgQXQudFxuICAgICAgfCBBdF9pbnRlcnZhbHMgb2YgQXRfaW50ZXJ2YWxzLnRcbiAgICAgIHwgU25hcHNob3QgOiBfIFNuYXBzaG90LnQgLT4gdFxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogdCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBBbGFybV92YWx1ZVxuXG5hbmQgQXJyYXlfZm9sZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2FjYykgdCA9XG4gICAgeyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgICB9XG5lbmQgPVxuICBBcnJheV9mb2xkXG5cbmFuZCBBdCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdFxuXG5hbmQgQXRfaW50ZXJ2YWxzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgICA7IGludGVydmFsIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdF9pbnRlcnZhbHNcblxuYW5kIEJpbmQgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB7IG1haW4gOiAnYiBOb2RlLnRcbiAgICA7IG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICAgIDsgbGhzIDogJ2EgTm9kZS50XG4gICAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICAgIDsgbXV0YWJsZSByaHNfc2NvcGUgOiBTY29wZS50XG4gICAgOyBtdXRhYmxlIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQmluZFxuXG5hbmQgQ2xvY2sgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWluZ193aGVlbCA6IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudCBWYXIudFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogQWxhcm0udCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGZpcmVkX2FsYXJtX3ZhbHVlcyA6IEFsYXJtX3ZhbHVlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQ2xvY2tcblxuYW5kIEV4cGVydCA6IHNpZ1xuICB0eXBlICdhIGVkZ2UgPVxuICAgIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgICA7IG9uX2NoYW5nZSA6ICdhIC0+IHVuaXRcbiAgICA7IG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gICAgfVxuXG4gIHR5cGUgcGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZSBbQEB1bmJveGVkXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBmIDogdW5pdCAtPiAnYVxuICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgICA7IG11dGFibGUgY2hpbGRyZW4gOiBwYWNrZWRfZWRnZSBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICAgIDsgbXV0YWJsZSBmb3JjZV9zdGFsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgICA7IG11dGFibGUgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgOiBib29sXG4gICAgfVxuZW5kID1cbiAgRXhwZXJ0XG5cbmFuZCBGcmVlemUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gICAgOyBvbmx5X2ZyZWV6ZV93aGVuIDogJ2EgLT4gYm9vbFxuICAgIH1cbmVuZCA9XG4gIEZyZWV6ZVxuXG5hbmQgSWZfdGhlbl9lbHNlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgY3VycmVudF9icmFuY2ggOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICAgIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgICB9XG5lbmQgPVxuICBJZl90aGVuX2Vsc2VcblxuYW5kIEludGVybmFsX29ic2VydmVyIDogc2lnXG4gIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IENyZWF0ZWRcbiAgICAgIHwgSW5fdXNlXG4gICAgICB8IERpc2FsbG93ZWRcbiAgICAgIHwgVW5saW5rZWRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fb2JzZXJ2aW5nIDogJ2EgdCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9vYnNlcnZpbmcgOiAnYSB0IFVvcHQudFxuICAgIH1cblxuICB0eXBlICdhIGludGVybmFsX29ic2VydmVyID0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyBpbnRlcm5hbF9vYnNlcnZlciAtPiB0IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXJcblxuYW5kIEpvaW4gOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSByaHMgOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgSm9pblxuXG5hbmQgS2luZCA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gICAgfCBBdF9pbnRlcnZhbHMgOiBBdF9pbnRlcnZhbHMudCAtPiB1bml0IHRcbiAgICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gICAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gICAgfCBDb25zdCBvZiAnYVxuICAgIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gICAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgICB8IElmX3Rlc3RfY2hhbmdlIDogXyBJZl90aGVuX2Vsc2UudCAtPiB1bml0IHRcbiAgICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICAgIHwgSW52YWxpZFxuICAgIHwgSm9pbl9saHNfY2hhbmdlIDogXyBKb2luLnQgLT4gdW5pdCB0XG4gICAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gICAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgU25hcHNob3Qgb2YgJ2EgU25hcHNob3QudFxuICAgIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICAgIHwgVW5pbml0aWFsaXplZFxuICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiAoXywgJ2EpIFVub3JkZXJlZF9hcnJheV9mb2xkLnQgLT4gJ2EgdFxuICAgIHwgVmFyIG9mICdhIFZhci50XG4gICAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwMyA6ICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwNCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA1IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNiA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNyA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA4IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwOSA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTAgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMSA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEyIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMyA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxNCA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYTE0XG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAqICdhMTQgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDE1IDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhMTRcbiAgICAgICAgIC0+ICdhMTVcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG5lbmQgPVxuICBLaW5kXG5cbmFuZCBOb2RlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IE5vZGVfaWQudFxuICAgIDsgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBraW5kIDogJ2EgS2luZC50XG4gICAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gICAgOyBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBwYXJlbnQwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgICA7IG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBvYnNlcnZlcnMgOiAnYSBJbnRlcm5hbF9vYnNlcnZlci50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IGJvb2xcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA6IGludCBhcnJheVxuICAgIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICAgIDsgbXV0YWJsZSB1c2VyX2luZm8gOiBEb3RfdXNlcl9pbmZvLnQgb3B0aW9uXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl0gW0BAdW5ib3hlZF1cbiAgZW5kXG5cbiAgdmFsIGlzX3ZhbGlkIDogXyB0IC0+IGJvb2xcbiAgdmFsIGlzX25lY2Vzc2FyeSA6IF8gdCAtPiBib29sXG4gIHZhbCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgTm9kZSA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFBhY2tlZCA6PSBOb2RlLlBhY2tlZClcblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IGNvbmNhdCBbIFwiblwiOyBOb2RlX2lkLnRvX3N0cmluZyB0LmlkIF0gfD4gWyVzZXhwX29mOiBzdHJpbmddXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAdW5ib3hlZF1cblxuICAgIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyBub2RlXVxuICBlbmRcblxuICBsZXQgaXNfdmFsaWQgdCA9XG4gICAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgICB8IEludmFsaWQgLT4gZmFsc2VcbiAgICB8IF8gLT4gdHJ1ZVxuICA7O1xuXG4gICgqIFtpc19uZWNlc3NhcnldIGlzIGRlZmluZWQgaGVyZSBiZWNhdXNlIHdlIG5lZWQgaXQgYmVmb3JlIG5vZGUubWwgaXMgYXZhaWxhYmxlLiAgSXQgaXNcbiAgICAgdXNlZCBkdXJpbmcgZ3JhcGggbWFuaXB1bGF0aW9uLCBhbmQgc28gaXMgd3JpdHRlbiB3aXRoIHNvbWUgY2FyZSB0byBiZSBmYXN0LiAqKVxuICBsZXQgaXNfbmVjZXNzYXJ5IHQgPVxuICAgIHQubnVtX3BhcmVudHMgPiAwXG4gICAgfHwgVW9wdC5pc19zb21lIHQub2JzZXJ2ZXJzXG4gICAgfHwgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICB8IEZyZWV6ZSBfIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8fCB0LmZvcmNlX25lY2Vzc2FyeVxuICA7O1xuXG4gIGxldCB0X2lzX2luamVjdGl2ZSAodHlwZSBhIGIpIChUIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpIDogKGEsIGIpIFR5cGVfZXF1YWwudCA9IFRcblxuICBsZXQgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgKHR5cGUgYSBiKSAodDEgOiBhIHQpICh0MiA6IGIgdCkgPVxuICAgICgqIFRoaXMgaXMgdHlwZS1zYWZlIGFzc3VtaW5nIG5vIG9uZSBjYW4gZ2l2ZSB0aGUgc2FtZSBpbmNyZW1lbnRhbCBub2RlIHR3byBkaWZmZXJlbnRcbiAgICAgICB0eXBlcy4gIFRoaXMgaXMgdHJ1ZSBiZWNhdXNlIHRoZSBmaWVsZCBbbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2Egb3B0aW9uXSBwcmV2ZW50c1xuICAgICAgIGJvdGggc3VidHlwaW5nIGFuZCBwYXJhbWV0ZXJpYyBwb2x5bW9ycGhpc20uICBCdXQgdGhpcyBhbGxvd3MgdG8gYnJlYWtcbiAgICAgICBhYnN0cmFjdGlvbnMsIGFzIGluIHNvbWVvbmUgY291bGQgd3JpdGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0XG4gICAgICAgICB0eXBlIHUgKCogPSB0IHVuZGVybmVhdGggKilcbiAgICAgICAgIHZhbCBjcmVhdGUgOiB1bml0IC0+IHQgSW5jci50ICogdSBJbmNyLnQgKCogdGhlIHR3byBpbmNyZW1lbnRhbHMgYXJlIHBoeXNfZXF1YWwgKilcbiAgICAgICBdfVxuXG4gICAgICAgYW5kIHdlIHdvdWxkIGZpZ3VyZSBvdXQgdGhhdCB0eXBlIHQgPSB1LiAgSG93ZXZlciwgd2UgY291bGQgYWRkIGEgVHlwZV9lcXVhbC5JZCB0b1xuICAgICAgIG5vZGVzIGFuZCBkbyB0aGUgc2FtZSwgc28gaXQgc2VlbXMgdG8gYmUgYSBtb3JlIGdlbmVyYWwgaXNzdWUuICopXG4gICAgaWYgcGh5c19zYW1lIHQxIHQyXG4gICAgdGhlbiBTb21lICh0X2lzX2luamVjdGl2ZSAoT2JqLm1hZ2ljIChUIDogXyBUeXBlX2VxdWFsLnQpIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpKVxuICAgIGVsc2UgTm9uZVxuICA7O1xuZW5kXG5cbmFuZCBPYnNlcnZlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZlxuZW5kID1cbiAgT2JzZXJ2ZXJcblxuYW5kIE9ubHlfaW5fZGVidWcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIE9ubHlfaW5fZGVidWdcblxuYW5kIFBhY2tlZF93ZWFrX2hhc2h0YmwgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IChfLCBfKSBXZWFrX2hhc2h0YmwudCAtPiB0XG5lbmQgPVxuICBQYWNrZWRfd2Vha19oYXNodGJsXG5cbmFuZCBSZWNvbXB1dGVfaGVhcCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIFJlY29tcHV0ZV9oZWFwXG5cbmFuZCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzIDogc2lnXG4gIHR5cGUgdCA9IFQgOiAnYSBOb2RlLnQgKiAnYSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZS50IC0+IHRcbmVuZCA9XG4gIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnNcblxuYW5kIFNjb3BlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBUb3BcbiAgICB8IEJpbmQgOiAoXywgXykgQmluZC50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG9wXG4gICAgfCBCaW5kIDogKF8sIF8pIEJpbmQudCAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBUb3AgLT4gXCJUb3BcIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICB8IEJpbmQgYmluZCAtPiBiaW5kLm1haW4gfD4gWyVzZXhwX29mOiBfIE5vZGUudF1cbiAgOztcbmVuZFxuXG5hbmQgU25hcHNob3QgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGF0IDogVGltZV9ucy50XG4gICAgOyBiZWZvcmUgOiAnYVxuICAgIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFNuYXBzaG90XG5cbmFuZCBTdGF0ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgICA7IG11dGFibGUgc3RhYmlsaXphdGlvbl9udW0gOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfc2NvcGUgOiBTY29wZS50XG4gICAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXAgOiBBZGp1c3RfaGVpZ2h0c19oZWFwLnRcbiAgICA7IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gICAgOyBtdXRhYmxlIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIDogaW50XG4gICAgOyBtdXRhYmxlIGFsbF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBuZXdfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgU3RhY2sudFxuICAgIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gICAgOyB3ZWFrX2hhc2h0YmxzIDogUGFja2VkX3dlYWtfaGFzaHRibC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG11dGFibGUga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY3JlYXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfaW52YWxpZGF0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICAgIH1cbmVuZCA9XG4gIFN0YXRlXG5cbmFuZCBTdGF0dXMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IFN0YWJpbGl6aW5nXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgIHwgTm90X3N0YWJpbGl6aW5nXG4gICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5lbmQgPVxuICBTdGF0dXNcblxuYW5kIFN0ZXBfZnVuY3Rpb25fbm9kZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFN0ZXBfZnVuY3Rpb25fbm9kZVxuXG5hbmQgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiBzaWdcbiAgdHlwZSAoJ2EsICdhY2MpIHQgPVxuICAgIHsgbWFpbiA6ICdhY2MgTm9kZS50XG4gICAgOyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgdXBkYXRlIDogJ2FjYyAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdhY2NcbiAgICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgOiBpbnRcbiAgICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gICAgOyBtdXRhYmxlIGZvbGRfdmFsdWUgOiAnYWNjIFVvcHQudFxuICAgIDsgbXV0YWJsZSBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA6IGludFxuICAgIH1cbmVuZCA9XG4gIFVub3JkZXJlZF9hcnJheV9mb2xkXG5cbmFuZCBWYXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgd2F0Y2ggOiAnYSBOb2RlLnRcbiAgICB9XG5cbiAgdHlwZSAnYSB2YXIgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyB2YXIgLT4gdCBbQEB1bmJveGVkXVxuICBlbmRcbmVuZCA9XG4gIFZhclxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5WYXIudCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgKCogW3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0gaXMgb25seSBzZXQgdG8gW1VvcHQuc29tZV0gaWYgdGhlIHVzZXIgY2FsbHNcbiAgICAgICBbVmFyLnNldF0gZHVyaW5nIHN0YWJpbGl6YXRpb24sIGluIHdoaWNoIGNhc2UgaXQgaG9sZHMgdGhlIChsYXN0KSB2YWx1ZSBzZXQuICBBdFxuICAgICAgIHRoZSBlbmQgb2Ygc3RhYmlsaXphdGlvbiwgYWxsIHN1Y2ggdmFyaWFibGVzIGFyZSBwcm9jZXNzZWQgdG8gZG8gW3QudmFsdWUgPC1cbiAgICAgICB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0uICopXG4gICAgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgOyAoKiBbc2V0X2F0XSB0aGUgc3RhYmlsaXphdGlvbiBudW1iZXIgaW4gZWZmZWN0IHRoZSBtb3N0IHJlY2VudCB0aW1lIFt0LnZhbHVlXSBjaGFuZ2VkLlxuICAgICAgIFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBzdGFiaWxpemF0aW9uIG51bWJlciBpbiBlZmZlY3QgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgdGltZSBbVmFyLnNldCB0XSB3YXMgY2FsbGVkLCBkdWUgdG8gdGhlIGVmZmVjdCBvZiBbVmFyLnNldF0gZHVyaW5nXG4gICAgICAgc3RhYmlsaXphdGlvbiBiZWluZyBkZWxheWVkIHVudGlsIGFmdGVyIHRoZSBzdGFiaWxpemF0aW9uLiAqKVxuICAgIG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IHdhdGNoIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfnZhbHVlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+c2V0X2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+d2F0Y2g6XG4gICAgICAgIChjaGVjayAoZnVuICh3YXRjaCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB3YXRjaC5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIHBvc3NpYmxlIHdpdGggW351c2VfY3VycmVudF9zY29wZTp0cnVlXSAqKVxuICAgICAgICAgICB8IFZhciB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpKVxuOztcblxubGV0IGluY3Jfc3RhdGUgdCA9IHQud2F0Y2guc3RhdGVcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICdhIHZhciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0ID0gVHlwZXMuVmFyLlBhY2tlZC50ID0gVCA6IF8gdmFyIC0+IHQgW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbGF0ZXN0X3ZhbHVlIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICBlbHNlIHQudmFsdWVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG5tb2R1bGUgVXBkYXRlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBGX2ludmVyc2Ugb2YgKCdiIC0+ICdhIC0+ICdiKVxuICAgIHwgVXBkYXRlIG9mICgnYiAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdiKVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB1cGRhdGUgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBVcGRhdGUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgIHwgRl9pbnZlcnNlIGZfaW52ZXJzZSAtPlxuICAgICAgZnVuIGZvbGRfdmFsdWUgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlIC0+IGYgKGZfaW52ZXJzZSBmb2xkX3ZhbHVlIG9sZF92YWx1ZSkgbmV3X3ZhbHVlXG4gIDs7XG5lbmRcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLlVub3JkZXJlZF9hcnJheV9mb2xkLnQgPVxuICB7IG1haW4gOiAnYWNjIE5vZGUudFxuICA7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IHVwZGF0ZSA6ICdhY2MgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYWNjXG4gIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA6IGludFxuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIDsgbXV0YWJsZSBmb2xkX3ZhbHVlIDogJ2FjYyBVb3B0LnRcbiAgOyBtdXRhYmxlIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogKF8sIF8pIHQpICh0MiA6IChfLCBfKSB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+dXBkYXRlOmlnbm9yZVxuICAgICAgfmNoaWxkcmVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGlsZHJlbiAtPlxuICAgICAgICAgICBBcnJheS5pdGVyIGNoaWxkcmVuIH5mOihmdW4gKGNoaWxkIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgY2hpbGQudmFsdWVfb3B0O1xuICAgICAgICAgICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIGNoaWxkLnZhbHVlX29wdCkpKSlcbiAgICAgIH5mb2xkX3ZhbHVlOlxuICAgICAgICAoY2hlY2sgKGZ1biBmb2xkX3ZhbHVlIC0+XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hY2MgZm9sZF92YWx1ZTtcbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAoVW9wdC5pc19zb21lIGZvbGRfdmFsdWUpXG4gICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICh0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKSkpXG4gICAgICB+bnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGU6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPD0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKSkpXG4gICAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczpcbiAgICAgICAgKGNoZWNrIChmdW4gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyAtPlxuICAgICAgICAgICBhc3NlcnQgKGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPiAwKSkpKVxuOztcblxubGV0IGNyZWF0ZSB+aW5pdCB+ZiB+dXBkYXRlIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIH5jaGlsZHJlbiB+bWFpbiA9XG4gIHsgaW5pdFxuICA7IGZcbiAgOyB1cGRhdGUgPSBVcGRhdGUudXBkYXRlIHVwZGF0ZSB+ZlxuICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgOyBjaGlsZHJlblxuICA7IG1haW5cbiAgOyBmb2xkX3ZhbHVlID1cbiAgICAgIFVvcHQubm9uZVxuICAoKiBXZSBtYWtlIFtudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNdXG4gICAgIHNvIHRoYXQgdGhlcmUgd2lsbCBiZSBhIGZ1bGwgY29tcHV0YXRpb24gdGhlIG5leHQgdGltZSB0aGUgbm9kZSBpcyBjb21wdXRlZC4gKilcbiAgOyBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgfVxuOztcblxubGV0IGZ1bGxfY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuOyBfIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBjb21wdXRlIHQgPVxuICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIHRoZW4gKFxuICAgIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gMDtcbiAgICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5zb21lIChmdWxsX2NvbXB1dGUgdCkpO1xuICBVb3B0LnZhbHVlX2V4biB0LmZvbGRfdmFsdWVcbjs7XG5cbmxldCBmb3JjZV9mdWxsX2NvbXB1dGUgdCA9XG4gIHQuZm9sZF92YWx1ZSA8LSBVb3B0Lm5vbmU7XG4gIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgY2hpbGRfY2hhbmdlZFxuICAgICAgKHR5cGUgYSBiKVxuICAgICAgKHQgOiAoYSwgXykgdClcbiAgICAgIH4oY2hpbGQgOiBiIE5vZGUudClcbiAgICAgIH5jaGlsZF9pbmRleFxuICAgICAgfihvbGRfdmFsdWVfb3B0IDogYiBVb3B0LnQpXG4gICAgICB+KG5ld192YWx1ZSA6IGIpXG4gID1cbiAgbGV0IGNoaWxkX2F0X2luZGV4ID0gdC5jaGlsZHJlbi4oY2hpbGRfaW5kZXgpIGluXG4gIG1hdGNoIE5vZGUudHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgY2hpbGQgY2hpbGRfYXRfaW5kZXggd2l0aFxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZF0gbWlzbWF0Y2hcIlxuICAgICAgICAgIH51bm9yZGVyZWRfYXJyYXlfZm9sZDoodCA6IChfLCBfKSB0KVxuICAgICAgICAgIChjaGlsZF9pbmRleCA6IGludClcbiAgICAgICAgICAoY2hpbGQgOiBfIE5vZGUudCldXG4gIHwgU29tZSBUIC0+XG4gICAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyAtIDFcbiAgICB0aGVuIChcbiAgICAgIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSArIDE7XG4gICAgICAoKiBXZSBvbmx5IHJlYWNoIHRoaXMgY2FzZSBpZiB3ZSBoYXZlIGFscmVhZHkgZG9uZSBhIGZ1bGwgY29tcHV0ZSwgaW4gd2hpY2ggY2FzZVxuICAgICAgICAgW1VvcHQuaXNfc29tZSB0LmZvbGRfdmFsdWVdIGFuZCBbVW9wdC5pc19zb21lIG9sZF92YWx1ZV9vcHRdLiAqKVxuICAgICAgdC5mb2xkX3ZhbHVlXG4gICAgICA8LSBVb3B0LnNvbWVcbiAgICAgICAgICAgKHQudXBkYXRlXG4gICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biB0LmZvbGRfdmFsdWUpXG4gICAgICAgICAgICAgIH5vbGRfdmFsdWU6KFVvcHQudmFsdWVfZXhuIG9sZF92YWx1ZV9vcHQpXG4gICAgICAgICAgICAgIH5uZXdfdmFsdWUpKVxuICAgIGVsc2UgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgIHRoZW4gZm9yY2VfZnVsbF9jb21wdXRlIHRcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxuXG50eXBlIHQgPSAoVHlwZXMuQWxhcm1fdmFsdWUudFtAc2V4cC5vcGFxdWVdKSBBbGFybS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgbnVsbCA9IEFsYXJtLm51bGwgKClcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBBbGFybV92YWx1ZSA9IFR5cGVzLkFsYXJtX3ZhbHVlXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuU3RlcF9mdW5jdGlvbl9ub2RlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIGNoaWxkIDogJ2EgU3RlcF9mdW5jdGlvbi50IE5vZGUudCBVb3B0LnRcbiAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICA7IG11dGFibGUgdXBjb21pbmdfc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IG11dGFibGUgYWxhcm1fdmFsdWUgOiAoQWxhcm1fdmFsdWUudFtAc2V4cC5vcGFxdWVdKVxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgcGh5c19zYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gW3VwY29taW5nX3N0ZXBzXSBiZWNvbWVzIGVtcHR5LiAqKVxuICAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNoaWxkOmlnbm9yZVxuICAgICAgfmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQ6aWdub3JlXG4gICAgICB+dmFsdWU6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dXBjb21pbmdfc3RlcHM6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5hbGFybV92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGFsYXJtX3ZhbHVlIDogQWxhcm1fdmFsdWUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQyIC0+IGFzc2VydCAocGh5c19zYW1lIHQgdDIpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG5cbmxldCByZWMgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTEgc3RlcHMgPVxuICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHN0ZXBzIHdpdGhcbiAgfCBTb21lICgoc3RlcF9hdCwgYTIpLCBzdGVwczIpIHdoZW4gVGltZV9ucy4oID49ICkgdG9fIHN0ZXBfYXQgLT5cbiAgICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyBhMiBzdGVwczJcbiAgfCBfIC0+XG4gICAgdC52YWx1ZSA8LSBVb3B0LnNvbWUgYTE7XG4gICAgdC51cGNvbWluZ19zdGVwcyA8LSBzdGVwc1xuOztcblxubGV0IGFkdmFuY2UgdCB+dG9fID0gYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gKFVvcHQudmFsdWVfZXhuIHQudmFsdWUpIHQudXBjb21pbmdfc3RlcHNcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLkFycmF5X2ZvbGQudCA9XG4gIHsgaW5pdCA6ICdhY2NcbiAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmluaXQ6KGNoZWNrIGludmFyaWFudF9hY2MpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH5jaGlsZHJlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hpbGRyZW4gLT5cbiAgICAgICAgICAgQXJyYXkuaXRlciBjaGlsZHJlbiB+ZjooZnVuIChjaGlsZCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIGNoaWxkLnZhbHVlX29wdCkpKSlcbjs7XG5cbmxldCBjb21wdXRlIHsgaW5pdDsgZjsgY2hpbGRyZW4gfSA9XG4gIGxldCByZXN1bHQgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgIHJlc3VsdCA6PSBmICFyZXN1bHQgKFVvcHQudmFsdWVfZXhuIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpLnZhbHVlX29wdClcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlIHQgPSBUeXBlcy5BdC50ID1cbiAgeyBtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50XG4gIDsgYXQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBDb25zdCBBZnRlciAtPiAoKSAoKiBoYXBwZW5zIG9uY2UgdGhlIGN1cnJlbnQgdGltZSBwYXNzZXMgW3QuYXRdLiAqKVxuICAgICAgICAgICB8IEF0IHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5hdDppZ25vcmVcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXRfaW50ZXJ2YWxzLnQgPVxuICB7IG1haW4gOiB1bml0IE5vZGUudFxuICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgOyBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBBdF9pbnRlcnZhbHMgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmJhc2U6aWdub3JlXG4gICAgICB+aW50ZXJ2YWw6KGNoZWNrIChmdW4gaW50ZXJ2YWwgLT4gYXNzZXJ0IChUaW1lX25zLlNwYW4uaXNfcG9zaXRpdmUgaW50ZXJ2YWwpKSlcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQmluZCA9IFR5cGVzLkJpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxubW9kdWxlIFNjb3BlID0gVHlwZXMuU2NvcGVcblxudHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmluZC50ID1cbiAgeyBtYWluIDogJ2IgTm9kZS50XG4gIDsgKCogW2ZdIGlzIHRoZSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRoYXQgd2UgcnVuIGVhY2ggdGltZSBbdC5saHNdIGNoYW5nZXMuICBJdCBpc1xuICAgICAgIG11dGFibGUgb25seSBzbyB3ZSBjYW4gY2xlYXIgaXQgd2hlbiBbdF0gaXMgaW52YWxpZGF0ZWQuICopXG4gICAgbXV0YWJsZSBmIDogJ2EgLT4gJ2IgTm9kZS50XG4gIDsgbGhzIDogJ2EgTm9kZS50XG4gIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgKCogW3Joc10gaXMgaW5pdGlhbGx5IFtub25lXSwgYW5kIGFmdGVyIHRoYXQgaXMgW3NvbWVdIG9mIHRoZSByZXN1bHQgb2YgdGhlIG1vc3QgcmVjZW50XG4gICAgICAgY2FsbCB0byBbZl0uICopXG4gICAgbXV0YWJsZSByaHMgOiAnYiBOb2RlLnQgVW9wdC50XG4gIDsgKCogW3Joc19zY29wZV0gaXMgdGhlIHNjb3BlIGluIHdoaWNoIFt0LmZdIGlzIHJ1biwgaS5lLiBpdCBpcyBbU2NvcGUuQmluZCB0XS4gIEl0IGlzXG4gICAgICAgW211dGFibGVdIG9ubHkgdG8gYXZvaWQgYSBbbGV0IHJlY10gZHVyaW5nIGNyZWF0aW9uLiAqKVxuICAgIG11dGFibGUgcmhzX3Njb3BlIDogU2NvcGUudFxuICA7ICgqIFthbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNdIGlzIHRoZSBoZWFkIG9mIHRoZSBzaW5nbHktbGlua2VkIGxpc3Qgb2Ygbm9kZXMgY3JlYXRlZCBvblxuICAgICAgIHRoZSByaWdodC1oYW5kIHNpZGUgb2YgW3RdLCBpLmUuIGluIFt0LnJoc19zY29wZV0uICopXG4gICAgbXV0YWJsZSBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IChfLCBfKSB0KSAodDIgOiAoXywgXykgdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGlzX3ZhbGlkIHQgPVxuICBtYXRjaCB0Lm1haW4ua2luZCB3aXRoXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICB8IF8gLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgdCB+KGYgOiBOb2RlLlBhY2tlZC50IC0+IHVuaXQpID1cbiAgbGV0IHIgPSByZWYgdC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBmIChUIG5vZGVfb25fcmhzKVxuICBkb25lXG47O1xuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSBfaW52YXJpYW50X2IgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEJpbmRfbWFpbiB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH5saHM6aWdub3JlXG4gICAgICB+bGhzX2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGxoc19jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIGxoc19jaGFuZ2UuY3JlYXRlZF9pbiB0Lm1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIGxoc19jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+cmhzOmlnbm9yZVxuICAgICAgfnJoc19zY29wZTpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICB8IFNjb3BlLlRvcCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgfCBCaW5kIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKSkpXG4gICAgICB+YWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0LnJoc19zY29wZSk7XG4gICAgICAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSB0aGVuIGFzc2VydCAodC5saHNfY2hhbmdlLmhlaWdodCA8IG5vZGUuaGVpZ2h0KSkpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIGVkZ2UgPSAnYSBUeXBlcy5FeHBlcnQuZWRnZSA9XG4gIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gIDsgKCogW2luZGV4XSBpcyBkZWZpbmVkIHdoZW5ldmVyIHRoZSBbZWRnZV0gaXMgaW4gdGhlIFtjaGlsZHJlbl0gb2Ygc29tZSBbdF0uIFRoZW4gaXQgaXNcbiAgICAgICB0aGUgaW5kZXggb2YgdGhpcyBbZWRnZV0gaW4gdGhhdCBbY2hpbGRyZW5dIGFycmF5LiBJdCBtaWdodCBzZWVtIHJlZHVuZGFudCB3aXRoIGFsbFxuICAgICAgIHRoZSBvdGhlciBpbmRleGVzIHdlIGhhdmUsIGJ1dCBpdCBpcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIGNoaWxkcmVuLiAgVGhlIGluZGV4IG1heVxuICAgICAgIGNoYW5nZSBhcyBzaWJsaW5nIGNoaWxkcmVuIGFyZSByZW1vdmVkLiAqKVxuICAgIG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgcGFja2VkX2VkZ2UgPSBUeXBlcy5FeHBlcnQucGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZVxuW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRXhwZXJ0LnQgPVxuICB7IGYgOiB1bml0IC0+ICdhXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hlbiBzZXQsIG1ha2VzIHRoZSBub2RlIG9mIFt0XSBzdGFsZS4gIEl0IGlzIHNldCB3aGVuIHRoZSBzZXQgb2YgY2hpbGRyZW4gY2hhbmdlcy5cbiAgICAgICBPdGhlcndpc2UgdGhlIG5vcm1hbCBjaGVjayBvZiBzdGFsZW5lc3MgKGNvbXBhcmluZyB0aGUgW2NoYW5nZWRfYXRdIGZpZWxkIG9mXG4gICAgICAgY2hpbGRyZW4gYW5kIHRoZSBbcmVjb21wdXRlZF9hdF0gZmllbGQgZm9yIHRoZSBub2RlIG9mIFt0XSkgd291bGQgbm90IGJlIGVub3VnaC5cbiAgICAgICBUaGlzIHBsYXlzIGEgcm9sZSBzaW1pbGFyIHRvIHRoZSBjdXRvZmYgb2YgW05ldmVyXSBmb3IgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZHMsIGJ1dFxuICAgICAgIHdlIGRvbid0IGhhdmUgYSBzcGVjaWFsIGNoaWxkLiAqKVxuICAgIG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gIDsgKCogVGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgcG9pbnQgdG8gdXMuICBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBub2RlXG4gICAgICAgb2YgW3RdIG5lZWRzIHRvIGludmFsaWRhdGVkLCB3aXRob3V0IGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4uICBUaGlzIGlzIG5vdFxuICAgICAgIG5lZWRlZCBmb3Igb3RoZXIgbm9kZXMsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG90aGVyIG5vZGVzIHRoYXQgaGF2ZSBhIHBvdGVudGlhbGx5XG4gICAgICAgbGFyZ2UgYW5kIGR5bmFtaWMgc2V0IG9mIGNoaWxkcmVuLiAqKVxuICAgIG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgOyAoKiBXaGV0aGVyIHdlIHdpbGwgZmlyZSB0aGUgW29uX2NoYW5nZV0gY2FsbGJhY2tzIGZvciBhbGwgY2hpbGRyZW4gd2hlbiB0aGUgbm9kZSBvZiBbdF1cbiAgICAgICBpdHNlbGYgcnVucy4gIFVzZWQgdG8gbWFrZSBzdXJlIHdlIHJlcnVuIGV2ZXJ5dGhpbmcgYWZ0ZXIgW3RdIHN3aXRjaGVzIGZyb21cbiAgICAgICB1bm9ic2VydmFibGUgYW5kIGJhY2sgdG8gb2JzZXJ2YWJsZS4gKilcbiAgICBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50XG4gICAgICBfaW52YXJpYW50X2FcbiAgICAgIHsgZiA9IF9cbiAgICAgIDsgY2hpbGRyZW5cbiAgICAgIDsgbnVtX2NoaWxkcmVuXG4gICAgICA7IGZvcmNlX3N0YWxlID0gX1xuICAgICAgOyBudW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IF9cbiAgICAgIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSBfXG4gICAgICB9XG4gID1cbiAgYXNzZXJ0IChudW1fY2hpbGRyZW4gPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggY2hpbGRyZW4pO1xuICBpZ25vcmUgbnVtX2ludmFsaWRfY2hpbGRyZW47XG4gICgqIGludmFyaWFudCBpcyBiZWxvdywgYmVjYXVzZSB3ZSBuZWVkIHNvbWUgY29udGV4dCAqKVxuICBVbmlmb3JtX2FycmF5Lml0ZXJpIGNoaWxkcmVuIH5mOihmdW4gaSB1b3B0IC0+XG4gICAgbWF0Y2ggaSA8IG51bV9jaGlsZHJlbiB3aXRoXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biB1b3B0IGluXG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChVb3B0LnZhbHVlX2V4biByLmluZGV4KSB+ZXhwZWN0OmlcbiAgICB8IGZhbHNlIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHVvcHQpKVxuOztcblxubGV0IGludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlbiB0IH5pc19uZWNlc3NhcnkgPVxuICBsZXQgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBudW1faW52YWxpZF9jaGlsZHJlbjsgXyB9ID0gdCBpblxuICBpZiBub3QgaXNfbmVjZXNzYXJ5XG4gIHRoZW4gWyV0ZXN0X3Jlc3VsdDogaW50XSBudW1faW52YWxpZF9jaGlsZHJlbiB+ZXhwZWN0OjBcbiAgZWxzZSAoXG4gICAgbGV0IGNvdW50X2ludmFsaWRfY2hpbGRyZW4gPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBudW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGRyZW4gaSkgaW5cbiAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCByLmNoaWxkKSB0aGVuIGluY3IgY291bnRfaW52YWxpZF9jaGlsZHJlblxuICAgIGRvbmU7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSBudW1faW52YWxpZF9jaGlsZHJlbiB+ZXhwZWN0OiFjb3VudF9pbnZhbGlkX2NoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZSB+ZiB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPVxuICB7IGZcbiAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZVxuICA7IGNoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5lbXB0eVxuICA7IG51bV9jaGlsZHJlbiA9IDBcbiAgOyBmb3JjZV9zdGFsZSA9IGZhbHNlXG4gIDsgbnVtX2ludmFsaWRfY2hpbGRyZW4gPSAwXG4gIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSB0cnVlXG4gIH1cbjs7XG5cbmxldCBtYWtlX3N0YWxlIHQgPVxuICBpZiB0LmZvcmNlX3N0YWxlXG4gIHRoZW4gYEFscmVhZHlfc3RhbGVcbiAgZWxzZSAoXG4gICAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICAgIGBPaylcbjs7XG5cbmxldCBpbmNyX2ludmFsaWRfY2hpbGRyZW4gdCA9IHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gdC5udW1faW52YWxpZF9jaGlsZHJlbiArIDFcbmxldCBkZWNyX2ludmFsaWRfY2hpbGRyZW4gdCA9IHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gdC5udW1faW52YWxpZF9jaGlsZHJlbiAtIDFcblxubGV0IG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fY2hpbGRyZW4gPj0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAodC5udW1fY2hpbGRyZW4gPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heCA9IEludC5tYXggMiAoMiAqIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW4pIGluXG4gICAgdC5jaGlsZHJlbiA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5jaGlsZHJlbiB+bGVuOm5ld19tYXgpXG47O1xuXG5sZXQgYWRkX2NoaWxkX2VkZ2UgdCBwYWNrZWRfZWRnZSA9XG4gIGxldCAoRSBlZGdlKSA9IHBhY2tlZF9lZGdlIGluXG4gIGFzc2VydCAoVW9wdC5pc19ub25lIGVkZ2UuaW5kZXgpO1xuICBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdDtcbiAgbGV0IG5ld19jaGlsZF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIGluXG4gIGVkZ2UuaW5kZXggPC0gVW9wdC5zb21lIG5ld19jaGlsZF9pbmRleDtcbiAgVW5pZm9ybV9hcnJheS5zZXQgdC5jaGlsZHJlbiBuZXdfY2hpbGRfaW5kZXggKFVvcHQuc29tZSBwYWNrZWRfZWRnZSk7XG4gIHQubnVtX2NoaWxkcmVuIDwtIHQubnVtX2NoaWxkcmVuICsgMTtcbiAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICAoKiBXZSB3aWxsIGJ1bXAgdGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIGlmIG5lY2Vzc2FyeSB3aGVuIGNvbm5lY3RpbmcgY2hpbGQgYW5kXG4gICAgIHBhcmVudC4gIFNhbWUgdGhpbmcgZm9yIHJ1bm5pbmcgdGhlIFtvbl9jaGFuZ2VdIGNhbGxiYWNrcy4gKilcbiAgbmV3X2NoaWxkX2luZGV4XG47O1xuXG5sZXQgc3dhcF9jaGlsZHJlbiB0IH5jaGlsZF9pbmRleDEgfmNoaWxkX2luZGV4MiA9XG4gIGxldCAoRSBlZGdlMSkgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEpIGluXG4gIGxldCAoRSBlZGdlMikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDIpIGluXG4gIGVkZ2UxLmluZGV4IDwtIFVvcHQuc29tZSBjaGlsZF9pbmRleDI7XG4gIGVkZ2UyLmluZGV4IDwtIFVvcHQuc29tZSBjaGlsZF9pbmRleDE7XG4gIFVuaWZvcm1fYXJyYXkuc3dhcCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MSBjaGlsZF9pbmRleDJcbjs7XG5cbmxldCBsYXN0X2NoaWxkX2VkZ2VfZXhuIHQgPVxuICBsZXQgbGFzdF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIC0gMSBpblxuICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4KVxuOztcblxubGV0IHJlbW92ZV9sYXN0X2NoaWxkX2VkZ2VfZXhuIHQgPVxuICBsZXQgbGFzdF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIC0gMSBpblxuICBsZXQgcGFja2VkX2VkZ2Vfb3B0ID0gVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4IGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBVb3B0Lm5vbmU7XG4gIHQubnVtX2NoaWxkcmVuIDwtIGxhc3RfaW5kZXg7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgcGFja2VkX2VkZ2Vfb3B0KTtcbiAgbGV0IChFIGVkZ2UpID0gVW9wdC51bnNhZmVfdmFsdWUgcGFja2VkX2VkZ2Vfb3B0IGluXG4gIGVkZ2UuaW5kZXggPC0gVW9wdC5ub25lXG47O1xuXG5sZXQgYmVmb3JlX21haW5fY29tcHV0YXRpb24gdCA9XG4gIGlmIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPiAwXG4gIHRoZW4gYEludmFsaWRcbiAgZWxzZSAoXG4gICAgdC5mb3JjZV9zdGFsZSA8LSBmYWxzZTtcbiAgICBsZXQgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIGluXG4gICAgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA8LSBmYWxzZTtcbiAgICBpZiB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrc1xuICAgIHRoZW5cbiAgICAgIGZvciBpID0gMCB0byB0Lm51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gaSkgaW5cbiAgICAgICAgci5vbl9jaGFuZ2UgKFVvcHQudmFsdWVfZXhuIHIuY2hpbGQudmFsdWVfb3B0KVxuICAgICAgZG9uZTtcbiAgICBgT2spXG47O1xuXG5sZXQgb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgdCB+aXNfbm93X29ic2VydmFibGUgPVxuICB0Lm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIH5pc19ub3dfb2JzZXJ2YWJsZTtcbiAgaWYgbm90IGlzX25vd19vYnNlcnZhYmxlXG4gIHRoZW4gKFxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gdHJ1ZTtcbiAgICAoKiBJZiB3ZSBkb24ndCByZXNldCBudW1faW52YWxpZF9jaGlsZHJlbiwgd2Ugd291bGQgZG91YmxlIGNvdW50IHRoZW06IGp1c3QgaW1hZ2luZVxuICAgICAgIHdoYXQgaGFwcGVucyB3ZSBpZiByZWNvbm5lY3QvZGlzY29ubmVjdC9yZWNvbm5lY3QvZGlzY29ubmVjdCB3aXRoIGFuIGludmFsaWRcbiAgICAgICBjaGlsZC4gKilcbiAgICB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIDApXG47O1xuXG5sZXQgcnVuX2VkZ2VfY2FsbGJhY2sgdCB+Y2hpbGRfaW5kZXggPVxuICBpZiBub3QgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrc1xuICB0aGVuIChcbiAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleCkgaW5cbiAgICAoKiBUaGlzIHZhbHVlIGlzIG5vdCBuZWNlc3NhcmlseSBzZXQsIGJlY2F1c2Ugd2UgdHJ5IHRvIHJ1biB0aGlzIHdoZW4gY29ubmVjdGluZyB0aGVcbiAgICAgICBub2RlIHRvIGl0cyBjaGlsZHJlbiwgd2hpY2ggY291bGQgYmUgYmVmb3JlIHRoZXkgaGF2ZSBydW4gZXZlbiBvbmNlLiAgQWxzbyB0aGUgbm9kZVxuICAgICAgIGNvdWxkIGJlIGludmFsaWQuICopXG4gICAgaWYgVW9wdC5pc19zb21lIHIuY2hpbGQudmFsdWVfb3B0XG4gICAgdGhlbiByLm9uX2NoYW5nZSAoVW9wdC51bnNhZmVfdmFsdWUgci5jaGlsZC52YWx1ZV9vcHQpKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbmluY2x1ZGUgVHlwZXMuU2NvcGVcblxubGV0IHRvcCA9IFRvcFxuXG5sZXQgaXNfdG9wID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpZ25vcmUgYmluZFxuOztcblxuKCogVW5saWtlIGZvciBub2RlcywgdGhlcmUgaXMgbm8gaW52YXJpYW50IFtpc19uZWNlc3NhcnkgdCA8PT4gaGVpZ2h0ID4gLTFdIChkb2Vzbid0IHdvcmtcbiAgIGJlY2F1c2Ugb2YgW1RvcF0pLiAgVGhpcyBpcyBmaW5lIHNpbmNlIHRoZSBoZWlnaHQgb2YgYSBzY29wZSBpcyBvbmx5IHVzZWQgdG8gY29uc3RyYWluXG4gICBvdGhlciBoZWlnaHRzLCBub3QgdG8gc2NoZWR1bGUgaXQuICopXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gLTFcbiAgfCBCaW5kIGJpbmQgLT4gYmluZC5saHNfY2hhbmdlLmhlaWdodFxuOztcblxubGV0IGlzX3ZhbGlkID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmlzX3ZhbGlkIGJpbmRcbjs7XG5cbmxldCBpc19uZWNlc3NhcnkgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBiaW5kIC0+IE5vZGUuaXNfbmVjZXNzYXJ5IGJpbmQubWFpblxuOztcblxubGV0IGFkZF9ub2RlIHQgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBhc3NlcnQgKHBoeXNfZXF1YWwgbm9kZS5jcmVhdGVkX2luIHQpO1xuICBtYXRjaCB0IHdpdGhcbiAgfCBUb3AgLT4gKClcbiAgfCBCaW5kIGJpbmQgLT5cbiAgICBub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzO1xuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQuc29tZSAoVHlwZXMuTm9kZS5QYWNrZWQuVCBub2RlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5GcmVlemUudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gIDsgb25seV9mcmVlemVfd2hlbiA6ICdhIC0+IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gZnJlZXppbmcgYW4gaW52YWxpZCB2YWx1ZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBvbiBiZWNvbWluZyBmcm96ZW4gKilcbiAgICAgICAgICAgfCBGcmVlemUgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNoaWxkOmlnbm9yZVxuICAgICAgfm9ubHlfZnJlZXplX3doZW46aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JZl90aGVuX2Vsc2UudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IHRlc3QgOiBib29sIE5vZGUudFxuICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfYnJhbmNoIDogJ2EgTm9kZS50IFVvcHQudFxuICA7IHRoZW5fIDogJ2EgTm9kZS50XG4gIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBJZl90aGVuX2Vsc2UgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiAoKSkpXG4gICAgICB+dGVzdDppZ25vcmVcbiAgICAgIH50ZXN0X2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKHRlc3RfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIHRlc3RfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBJZl90ZXN0X2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y3VycmVudF9icmFuY2g6XG4gICAgICAgIChjaGVjayAoZnVuIGN1cnJlbnRfYnJhbmNoIC0+XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgY3VycmVudF9icmFuY2ggPSBVb3B0LnZhbHVlX2V4biBjdXJyZW50X2JyYW5jaCBpblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsIGN1cnJlbnRfYnJhbmNoIHQudGhlbl8gfHwgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LmVsc2VfKSkpKVxuICAgICAgfnRoZW5fOmlnbm9yZVxuICAgICAgfmVsc2VfOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSm9pbi50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbGhzIDogJ2EgTm9kZS50IE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7IG11dGFibGUgcmhzIDogJ2EgTm9kZS50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEpvaW5fbWFpbiB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGxoc19jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+cmhzOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuU25hcHNob3QudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgYmVmb3JlIDogJ2FcbiAgOyB2YWx1ZV9hdCA6ICdhIE5vZGUudFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChTY29wZS5pc190b3AgbWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBzbmFwc2hvdHRpbmcgYW4gaW52YWxpZCBub2RlICopXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIGFmdGVyIHRoZSBzbmFwc2hvdCAqKVxuICAgICAgICAgICB8IFNuYXBzaG90IHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5hdDppZ25vcmVcbiAgICAgIH5iZWZvcmU6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgfnZhbHVlX2F0Omlnbm9yZVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuS2luZC50ID1cbiAgfCBBcnJheV9mb2xkIDogKF8sICdhKSBBcnJheV9mb2xkLnQgLT4gJ2EgdFxuICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gIHwgQXRfaW50ZXJ2YWxzIDogQXRfaW50ZXJ2YWxzLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9saHNfY2hhbmdlIDogKF8sIF8pIEJpbmQudCAtPiB1bml0IHRcbiAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gIHwgQ29uc3Qgb2YgJ2FcbiAgfCBFeHBlcnQgb2YgJ2EgRXhwZXJ0LnRcbiAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgfCBJZl90ZXN0X2NoYW5nZSA6IF8gSWZfdGhlbl9lbHNlLnQgLT4gdW5pdCB0XG4gIHwgSWZfdGhlbl9lbHNlIG9mICdhIElmX3RoZW5fZWxzZS50XG4gIHwgSW52YWxpZFxuICB8IEpvaW5fbGhzX2NoYW5nZSA6IF8gSm9pbi50IC0+IHVuaXQgdFxuICB8IEpvaW5fbWFpbiBvZiAnYSBKb2luLnRcbiAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICB8IFNuYXBzaG90IG9mICdhIFNuYXBzaG90LnRcbiAgfCBTdGVwX2Z1bmN0aW9uIG9mICdhIFN0ZXBfZnVuY3Rpb25fbm9kZS50XG4gIHwgVW5pbml0aWFsaXplZFxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIDogKF8sICdhKSBVbm9yZGVyZWRfYXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBWYXIgb2YgJ2EgVmFyLnRcbiAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICB8IE1hcDMgOiAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXA0IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50ICogJ2E0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDUgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDYgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDcgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDggOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDkgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEwIDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDExIDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhMTEgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTIgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEzIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTQgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYTE0XG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAqICdhMTQgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTUgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYTE0XG4gICAgICAgLT4gJ2ExNVxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5hbWUgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IEFycmF5X2ZvbGQgXyAtPiBcIkFycmF5X2ZvbGRcIlxuICB8IEF0IF8gLT4gXCJBdFwiXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gXCJBdF9pbnRlcnZhbHNcIlxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IFwiQmluZF9saHNfY2hhbmdlXCJcbiAgfCBCaW5kX21haW4gXyAtPiBcIkJpbmRfbWFpblwiXG4gIHwgQ29uc3QgXyAtPiBcIkNvbnN0XCJcbiAgfCBFeHBlcnQgXyAtPiBcIkV4cGVydFwiXG4gIHwgRnJlZXplIF8gLT4gXCJGcmVlemVcIlxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gXCJJZl90ZXN0X2NoYW5nZVwiXG4gIHwgSWZfdGhlbl9lbHNlIF8gLT4gXCJJZl90aGVuX2Vsc2VcIlxuICB8IEludmFsaWQgLT4gXCJJbnZhbGlkXCJcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiBcIkpvaW5fbGhzX2NoYW5nZVwiXG4gIHwgSm9pbl9tYWluIF8gLT4gXCJKb2luX21haW5cIlxuICB8IE1hcCBfIC0+IFwiTWFwXCJcbiAgfCBNYXAyIF8gLT4gXCJNYXAyXCJcbiAgfCBNYXAzIF8gLT4gXCJNYXAzXCJcbiAgfCBNYXA0IF8gLT4gXCJNYXA0XCJcbiAgfCBNYXA1IF8gLT4gXCJNYXA1XCJcbiAgfCBNYXA2IF8gLT4gXCJNYXA2XCJcbiAgfCBNYXA3IF8gLT4gXCJNYXA3XCJcbiAgfCBNYXA4IF8gLT4gXCJNYXA4XCJcbiAgfCBNYXA5IF8gLT4gXCJNYXA5XCJcbiAgfCBNYXAxMCBfIC0+IFwiTWFwMTBcIlxuICB8IE1hcDExIF8gLT4gXCJNYXAxMVwiXG4gIHwgTWFwMTIgXyAtPiBcIk1hcDEyXCJcbiAgfCBNYXAxMyBfIC0+IFwiTWFwMTNcIlxuICB8IE1hcDE0IF8gLT4gXCJNYXAxNFwiXG4gIHwgTWFwMTUgXyAtPiBcIk1hcDE1XCJcbiAgfCBTbmFwc2hvdCBfIC0+IFwiU25hcHNob3RcIlxuICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiBcIlN0ZXBfZnVuY3Rpb25cIlxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gXCJVbmluaXRpYWxpemVkXCJcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+IFwiVW5vcmRlcmVkX2FycmF5X2ZvbGRcIlxuICB8IFZhciBfIC0+IFwiVmFyXCJcbjs7XG5cbmxldCBpbnZhcmlhbnQgOiB0eXBlIGEuIGEgSW52YXJpYW50LnQgLT4gYSB0IEludmFyaWFudC50ID1cbiAgZnVuIGludmFyaWFudF9hIHQgLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCBhcnJheV9mb2xkIC0+IEFycmF5X2ZvbGQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSBhcnJheV9mb2xkXG4gIHwgQXQgYXQgLT4gQXQuaW52YXJpYW50IGF0XG4gIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiBBdF9pbnRlcnZhbHMuaW52YXJpYW50IGF0X2ludGVydmFsc1xuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpZ25vcmUgYmluZFxuICB8IEJpbmRfbWFpbiBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSBiaW5kXG4gIHwgQ29uc3QgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LmludmFyaWFudCBpbnZhcmlhbnRfYSBlXG4gIHwgRnJlZXplIGZyZWV6ZSAtPiBGcmVlemUuaW52YXJpYW50IGludmFyaWFudF9hIGZyZWV6ZVxuICB8IElmX3Rlc3RfY2hhbmdlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGlnbm9yZSBpZl90aGVuX2Vsc2VcbiAgfCBJZl90aGVuX2Vsc2UgaWZfdGhlbl9lbHNlIC0+IElmX3RoZW5fZWxzZS5pbnZhcmlhbnQgaW52YXJpYW50X2EgaWZfdGhlbl9lbHNlXG4gIHwgSW52YWxpZCAtPiAoKVxuICB8IEpvaW5fbGhzX2NoYW5nZSBqb2luIC0+IEpvaW4uaW52YXJpYW50IGlnbm9yZSBqb2luXG4gIHwgSm9pbl9tYWluIGpvaW4gLT4gSm9pbi5pbnZhcmlhbnQgaW52YXJpYW50X2Egam9pblxuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfIC0+ICgpXG4gIHwgU25hcHNob3Qgc25hcHNob3QgLT4gU25hcHNob3QuaW52YXJpYW50IGludmFyaWFudF9hIHNuYXBzaG90XG4gIHwgU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUgLT5cbiAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGludmFyaWFudF9hIHN0ZXBfZnVuY3Rpb25fbm9kZVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gKClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1bm9yZGVyZWRfYXJyYXlfZm9sZCAtPlxuICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgfCBWYXIgdmFyIC0+IFZhci5pbnZhcmlhbnQgaWdub3JlIHZhclxuOztcblxubGV0IGluaXRpYWxfbnVtX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF0IF8gLT4gMFxuICB8IEF0X2ludGVydmFscyBfIC0+IDBcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgQmluZF9tYWluIF8gLT4gMlxuICB8IENvbnN0IF8gLT4gMFxuICB8IEV4cGVydCBfIC0+IDBcbiAgfCBGcmVlemUgXyAtPiAxXG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiAxXG4gIHwgSWZfdGhlbl9lbHNlIF8gLT4gMlxuICB8IEludmFsaWQgLT4gMFxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IDFcbiAgfCBKb2luX21haW4gXyAtPiAyXG4gIHwgTWFwIF8gLT4gMVxuICB8IE1hcDIgXyAtPiAyXG4gIHwgTWFwMyBfIC0+IDNcbiAgfCBNYXA0IF8gLT4gNFxuICB8IE1hcDUgXyAtPiA1XG4gIHwgTWFwNiBfIC0+IDZcbiAgfCBNYXA3IF8gLT4gN1xuICB8IE1hcDggXyAtPiA4XG4gIHwgTWFwOSBfIC0+IDlcbiAgfCBNYXAxMCBfIC0+IDEwXG4gIHwgTWFwMTEgXyAtPiAxMVxuICB8IE1hcDEyIF8gLT4gMTJcbiAgfCBNYXAxMyBfIC0+IDEzXG4gIHwgTWFwMTQgXyAtPiAxNFxuICB8IE1hcDE1IF8gLT4gMTVcbiAgfCBTbmFwc2hvdCBfIC0+IDBcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gMVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gMFxuICB8IFZhciBfIC0+IDBcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBBcnJheS5sZW5ndGggY2hpbGRyZW5cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG47O1xuXG5sZXQgYmluZF9yaHNfY2hpbGRfaW5kZXggPSAxXG5sZXQgZnJlZXplX2NoaWxkX2luZGV4ID0gMFxubGV0IGlmX2JyYW5jaF9jaGlsZF9pbmRleCA9IDFcbmxldCBqb2luX3Joc19jaGlsZF9pbmRleCA9IDFcblxuKCogV2UgZG8gbm90IGltcGxlbWVudCB0aGUgdGltZS1iYXNlZCBub2RlcyAoW0F0XSwgW0F0X2ludGVydmFsc10sIFtTbmFwc2hvdF0sXG4gICBbU3RlcF9mdW5jdGlvbl0pIGFzIHBhcmVudHMgb2YgdGhlIGN1cnJlbnQtdGltZSBub2RlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgV2UgZG9uJ3RcbiAgIHdhbnQgYWxsIHN1Y2ggbm9kZXMgdG8gYmUgcmVjb21wdXRlZCB3aGVuZXZlciB0aGUgdGltZSBjaGFuZ2VzLCB3aGljaCB3b3VsZCBiZSBob3JyaWJseVxuICAgaW5uZWZpY2llbnQuICBJbnN0ZWFkLCB3ZSBvbmx5IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGF0IHRoZSBcInJpZ2h0XCIgdGltZSxcbiAgIGkuZS4gd2hlbiB0aW1lIHBhc3NlcyBzb21lIHRocmVzaG9sZCByZWxldmFudCB0byB0aGVtLiAgV2UgZG8gdGhpcyB2aWEgc2NoZWR1bGluZ1xuICAgYWxhcm1zIGF0IHRob3NlIHRocmVzaG9sZHMuICopXG5sZXQgaXRlcmlfY2hpbGRyZW4gKHR5cGUgYSkgKHQgOiBhIHQpIH4oZiA6IGludCAtPiBOb2RlLlBhY2tlZC50IC0+IHVuaXQpIDogdW5pdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICAgIGYgaSAoVCAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSlcbiAgICBkb25lXG4gIHwgQXQgXyAtPiAoKVxuICB8IEF0X2ludGVydmFscyBfIC0+ICgpXG4gIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT4gZiAwIChUIGJpbmQubGhzKVxuICB8IEJpbmRfbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgKCogVmFyaW91cyBjb2RlLCBlLmcuIFtzdGF0ZS5iZWNhbWVfbmVjZXNzYXJ5XSwgcmVsaWVzIG9uIHByb2Nlc3NpbmcgW2xoc19jaGFuZ2VdXG4gICAgICAgYmVmb3JlIFtyaHNdLiAqKVxuICAgIGYgMCAoVCBsaHNfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgcmhzIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSByaHMpKVxuICB8IENvbnN0IF8gLT4gKClcbiAgfCBFeHBlcnQgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFeHBlcnQuRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkgaW5cbiAgICAgIGYgaSAoVCByLmNoaWxkKVxuICAgIGRvbmVcbiAgfCBGcmVlemUgeyBjaGlsZDsgXyB9IC0+IGYgMCAoVCBjaGlsZClcbiAgfCBJZl90ZXN0X2NoYW5nZSB7IHRlc3Q7IF8gfSAtPiBmIDAgKFQgdGVzdClcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgY3VycmVudF9icmFuY2g7IF8gfSAtPlxuICAgIGYgMCAoVCB0ZXN0X2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIGN1cnJlbnRfYnJhbmNoIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjdXJyZW50X2JyYW5jaCkpXG4gIHwgSW52YWxpZCAtPiAoKVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IGYgMCAoVCBsaHMpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgcmhzOyBfIH0gLT5cbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBTbmFwc2hvdCBfIC0+ICgpXG4gIHwgU3RlcF9mdW5jdGlvbiB7IGNoaWxkOyBfIH0gLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGQgdGhlbiBmIDAgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIGNoaWxkKSlcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICAgIGYgaSAoVCAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSlcbiAgICBkb25lXG4gIHwgVmFyIF8gLT4gKClcbiAgfCBNYXAgKF8sIG5vZGUwKSAtPiBmIDAgKFQgbm9kZTApXG4gIHwgTWFwMiAoXywgbm9kZTAsIG5vZGUxKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKVxuICB8IE1hcDMgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMilcbiAgfCBNYXA0IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpXG4gIHwgTWFwNSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KVxuICB8IE1hcDYgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSlcbiAgfCBNYXA3IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNikgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpXG4gIHwgTWFwOCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KVxuICB8IE1hcDkgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOClcbiAgfCBNYXAxMCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTkpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KVxuICB8IE1hcDExIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4LCBub2RlOSwgbm9kZTEwKVxuICAgIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMClcbiAgfCBNYXAxMlxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTEgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKVxuICB8IE1hcDEzXG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTIgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMilcbiAgfCBNYXAxNFxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyXG4gICAgICAsIG5vZGUxMyApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKTtcbiAgICBmIDEzIChUIG5vZGUxMylcbiAgfCBNYXAxNVxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyXG4gICAgICAsIG5vZGUxM1xuICAgICAgLCBub2RlMTQgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpO1xuICAgIGYgMTQgKFQgbm9kZTE0KVxuOztcblxuKCogW3Nsb3dfZ2V0X2NoaWxkXSBpcyBvbmx5IHVzZWQgYnkgW05vZGUuaW52YXJpYW50XSwgc28gd2UgZG9uJ3QgbWluZCB1c2luZyBbd2l0aF9yZXR1cm5dXG4gICBhbmQgW2l0ZXJpX2NoaWxkcmVuXS4gIElmIHdlIGV2ZXIgbmVlZCBhIGZhc3QgW2dldF9jaGlsZF0sIHdlIGNvZGVkIGl0IGluIHJldlxuICAgNDhkYmZkMDNjOWM1LiAqKVxubGV0IHNsb3dfZ2V0X2NoaWxkIDogdHlwZSBhLiBhIHQgLT4gaW5kZXg6XyAtPiBOb2RlLlBhY2tlZC50ID1cbiAgZnVuIHQgfmluZGV4IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IFQgY2hpbGRyZW4uKGluZGV4KVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBFeHBlcnQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgbGV0IChFIGVkZ2UpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGluZGV4KSBpblxuICAgIFQgZWRnZS5jaGlsZFxuICB8IF8gLT5cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBpIGNoaWxkIC0+IGlmIGkgPSBpbmRleCB0aGVuIHIucmV0dXJuIGNoaWxkKTtcbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiS2luZC5zbG93X2dldF9jaGlsZCBnb3QgaW52YWxpZCBpbmRleFwiXG4gICAgICAgIChpbmRleCwgdClcbiAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBfIHRdKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gS2luZFxubW9kdWxlIEludGVybmFsX29ic2VydmVyID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXJcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxub3BlbiBOb2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLk5vZGUudCA9XG4gIHsgKCogW2lkXSBpcyBhIHVuaXF1ZSBpZCBmb3IgdGhlIG5vZGUuICopXG4gICAgaWQgOiBOb2RlX2lkLnRcbiAgOyBzdGF0ZSA6IChUeXBlcy5TdGF0ZS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogVGhlIGZpZWxkcyBmcm9tIFtyZWNvbXB1dGVkX2F0XSB0byBbY3JlYXRlZF9pbl0gYXJlIGdyb3VwZWQgdG9nZXRoZXIgYW5kIGFyZSBpbiB0aGVcbiAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXJlIHVzZWQgYnkgW1N0YXRlLnJlY29tcHV0ZV0gVGhpcyBoYXMgYSBwb3NpdGl2ZSBwZXJmb3JtYW5jZVxuICAgICAgIGltcGFjdCBkdWUgdG8gY2FjaGUgZWZmZWN0cy4gIERvbid0IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlc2Ugbm9kZXMgd2l0aG91dFxuICAgICAgIHBlcmZvcm1hbmNlIHRlc3RpbmcuICopXG4gICAgKCogW3JlY29tcHV0ZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiBbdF0ncyB2YWx1ZSB3YXMgcmVjb21wdXRlZCwgZXZlbiBpZlxuICAgICAgIGl0IHdhcyBjdXQgb2ZmLiAqKVxuICAgIG11dGFibGUgcmVjb21wdXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyAoKiBbdmFsdWVfb3B0XSBzdGFydHMgYXMgW25vbmVdLCBhbmQgdGhlIGZpcnN0IHRpbWUgW3RdIGlzIGNvbXB1dGVkIGl0IGlzIHNldCB0b1xuICAgICAgIFtzb21lXSwgYW5kIHJlbWFpbnMgW3NvbWVdIHRoZXJlYWZ0ZXIsIHVudGlsIFt0XSBpcyBpbnZhbGlkYXRlZCwgaWYgZXZlci4gKilcbiAgICBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtraW5kXSBpcyB0aGUga2luZCBvZiBEQUcgbm9kZSBbdF0gaXMuICBba2luZF0gaXMgbXV0YWJsZSBib3RoIGZvciBpbml0aWFsaXphdGlvblxuICAgICAgIGFuZCBiZWNhdXNlIGl0IGNhbiBjaGFuZ2UsIGUuZy4gaWYgW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUga2luZCA6ICdhIEtpbmQudFxuICA7IG11dGFibGUgY3V0b2ZmIDogJ2EgQ3V0b2ZmLnRcbiAgOyAoKiBbY2hhbmdlZF9hdF0gaXMgdGhlIGxhc3Qgc3RhYmlsaXphdGlvbiB3aGVuIHRoaXMgbm9kZSB3YXMgY29tcHV0ZWQgYW5kIG5vdCBjdXQgb2ZmLlxuICAgICAgIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IHdoZW4gW3RdJ3MgcGFyZW50cyBhcmUgc3RhbGUgYW5kIChiZWNhdXNlIGFsbCBwYXJlbnRzIGFyZVxuICAgICAgIG5lY2Vzc2FyeSkgbmVlZCB0byBiZSByZWNvbXB1dGVkLiAqKVxuICAgIG11dGFibGUgY2hhbmdlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyAoKiBbbnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gaXMgW0xpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzXSBwbHVzIHRoZSBudW1iZXIgb2ZcbiAgICAgICBvbi11cGRhdGUgaGFuZGxlcnMgc3VtbWVkIG92ZXIgYWxsIG9ic2VydmVycyBpbiBbdC5vYnNlcnZlcnNdLiAgSXQgaXMgdXNlZCB0b1xuICAgICAgIHF1aWNrbHkgZGVjaWRlIHdoZXRoZXIgW3RdIG5lZWRzIHRvIGJlIGFkZGVkIHRvIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl1cbiAgICAgICB3aGVuIFt0XSBjaGFuZ2VzLiAgW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIHdpbGwgZGVjcmVhc2Ugd2hlbiBhbiBvYnNlcnZlciBpc1xuICAgICAgIHJlbW92ZWQgZnJvbSBbdC5vYnNlcnZlcnNdLCBpZiB0aGUgb2JzZXJ2ZXIgaGFzIG9uLXVwZGF0ZSBoYW5kbGVycy4gKilcbiAgICBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgOyAoKiBUaGUgcGFyZW50cyBvZiBbdF0gYXJlIHRoZSBub2RlcyB0aGF0IGRlcGVuZCBvbiBpdCwgYW5kIHNob3VsZCBiZSBjb21wdXRlZCB3aGVuIFt0XVxuICAgICAgIGNoYW5nZXMsIG9uY2UgYWxsIG9mIHRoZWlyIG90aGVyIGNoaWxkcmVuIGFyZSB1cCB0byBkYXRlLiAgW251bV9wYXJlbnRzXSBpcyB0aGVcbiAgICAgICBudW1iZXIgb2YgcGFyZW50cy4gIElmIFtudW1fcGFyZW50cyA+PSAxXSwgdGhlbiBbcGFyZW50MF0gaXMgdGhlIGZpcnN0IHBhcmVudC5cbiAgICAgICBbcGFyZW50MV9hbmRfYmV5b25kXSBob2xkcyB0aGUgcmVtYWluaW5nIHBhcmVudHMuICBUaGUgb3JkZXIgb2YgdGhlIHBhcmVudHMgZG9lc24ndFxuICAgICAgIG1hdHRlci4gIE9uZSBub2RlIG1heSBvY2N1ciBtdWx0aXBsZSB0aW1lcyBhcyBhIHBhcmVudCBvZiBhbm90aGVyIChlLmcuIGNvbnNpZGVyXG4gICAgICAgW21hcDIgbjEgbjEgfmZdKS5cblxuICAgICAgIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgb3B0aW1pemVkIGZvciB0aGUgb3ZlcndoZWxtaW5nbHkgY29tbW9uIGNhc2UgdGhhdCBhIG5vZGUgaGFzXG4gICAgICAgb25seSBvbmUgcGFyZW50LiAqKVxuICAgIG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgOyBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IFBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgOyBtdXRhYmxlIHBhcmVudDAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbY3JlYXRlZF9pbl0gaXMgaW5pdGlhbGx5IHRoZSBzY29wZSB0aGF0IHRoZSBub2RlIGlzIGNyZWF0ZWQgaW4uICBJZiBhIG5vZGUgaXNcbiAgICAgICBsYXRlciBcInJlc2NvcGVkXCIsIHRoZW4gY3JlYXRlZF9pbiB3aWxsIGJlIGFkanVzdGVkIHRvIHRoZSBuZXcgc2NvcGUgdGhhdCB0aGUgbm9kZVxuICAgICAgIGlzIHBhcnQgb2YuICopXG4gICAgbXV0YWJsZSBjcmVhdGVkX2luIDogU2NvcGUudFxuICA7ICgqIFtuZXh0X25vZGVfaW5fc2FtZV9zY29wZV0gc2luZ2x5IGxpbmtzIGFsbCBub2RlcyBjcmVhdGVkIGluIFt0LmNyZWF0ZWRfaW5dLiAqKVxuICAgIG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbaGVpZ2h0XSBpcyB1c2VkIHRvIHZpc2l0IG5vZGVzIGluIHRvcG9sb2dpY2FsIG9yZGVyLiAgSWYgW2lzX25lY2Vzc2FyeSB0XSwgdGhlblxuICAgICAgIFtoZWlnaHQgPiBjLmhlaWdodF0gZm9yIGFsbCBjaGlsZHJlbiBbY10gb2YgW3RdLCBhbmQgW2hlaWdodCA+IFNjb3BlLmhlaWdodFxuICAgICAgIHQuY3JlYXRlZF9pbl0uICBJZiBbbm90IChpc19uZWNlc3NhcnkgdCldLCB0aGVuIFtoZWlnaHQgPSAtMV0uICopXG4gICAgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgOyAoKiBbaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSBpcyB0aGUgaGVpZ2h0IGF0IHdoaWNoIFt0XSBpcyBzdG9yZWQgaW4gdGhlIHJlY29tcHV0ZVxuICAgICAgIGhlYXAsIGFuZCBpcyBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICBJZiBbdF0gaXMgdGhlXG4gICAgICAgcmVjb21wdXRlIGhlYXAsIHRoZW4gdHlwaWNhbGx5IFt0LmhlaWdodCA9IHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXTsgaG93ZXZlcixcbiAgICAgICB3aGlsZSBoZWlnaHQgaXMgYmVpbmcgYWRqdXN0ZWQsIG9uZSBjYW4gdGVtcG9yYXJpbHkgaGF2ZSBbdC5oZWlnaHQgPlxuICAgICAgIHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXS4gIFdoZW4gaGVpZ2h0IGFkanVzdG1lbnQgZmluaXNoZXMsIGVxdWFsaXR5IGlzIHJlc3RvcmVkXG4gICAgICAgYnkgaW5jcmVhc2luZyBbdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdIHRvIFt0LmhlaWdodF0gYW5kIHNoaWZ0aW5nIFt0XSdzXG4gICAgICAgcG9zaXRpb24gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gIDsgKCogW3ByZXZfaW5fcmVjb21wdXRlX2hlYXBdIGFuZCBbbmV4dF9pbl9yZWNvbXB1dGVfaGVhcF0gZG91Ymx5IGxpbmsgYWxsIG5vZGVzIG9mIHRoZVxuICAgICAgIHNhbWUgaGVpZ2h0IGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBdIGlzIHVzZWQgb25seSBkdXJpbmcgaGVpZ2h0IGFkanVzdG1lbnQsIGFuZCBpc1xuICAgICAgIG5vbi1uZWdhdGl2ZSBpZmYgW3RdIGlzIGluIHRoZSBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAgSXQgaG9sZHMgdGhlIHByZS1hZGp1c3RlZFxuICAgICAgIGhlaWdodCBvZiBbdF0uICopXG4gICAgbXV0YWJsZSBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IGludFxuICA7ICgqIFtuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgb2YgdGhlIHNhbWUgaGVpZ2h0IGluIHRoZVxuICAgICAgIGFkanVzdC1oZWlnaHRzIGhlYXAuICopXG4gICAgbXV0YWJsZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbb2xkX3ZhbHVlX29wdF0gaXMgdXNlZCBvbmx5IGR1cmluZyBzdGFiaWxpemF0aW9uLCBhbmQgb25seSBpZlxuICAgICAgIFt0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXS4gIEl0IGhvbGRzIHRoZSBwcmUtc3RhYmlsaXphdGlvbiB2YWx1ZSBvZiBbdF0uICBJdFxuICAgICAgIGlzIGNsZWFyZWQgd2hlbiBydW5uaW5nIFt0XSdzIG9uLXVwZGF0ZSBoYW5kbGVycywgYW5kIHNvIGlzIGFsd2F5cyBbVW9wdC5ub25lXVxuICAgICAgIGJldHdlZW4gc3RhYmlsaXphdGlvbnMuICopXG4gICAgbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gIDsgKCogW29ic2VydmVyc10gaXMgdGhlIGhlYWQgb2YgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBvYnNlcnZlcnMgb2YgW3RdLCBvclxuICAgICAgIFtVb3B0Lm5vbmVdIGlmIHRoZXJlIGFyZSBubyBvYnNlcnZlcnMuICopXG4gICAgbXV0YWJsZSBvYnNlcnZlcnMgOiAoJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyAoKiBbaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dIGlzIHVzZWQgdG8gYXZvaWQgcHVzaGluZyB0aGUgc2FtZSBub2RlIG11bHRpcGxlXG4gICAgICAgdGltZXMgb250byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAqKVxuICAgIG11dGFibGUgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBib29sXG4gIDsgKCogW29uX3VwZGF0ZV9oYW5kbGVyc10gaXMgdGhlIGZ1bmN0aW9ucyBzdXBwbGllZCB0byBbSW5jcmVtZW50YWwub25fdXBkYXRlXSB0byBiZSBydW5cbiAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlIG1vZHVsZSBbT25fdXBkYXRlX2hhbmRsZXJdLiAgW29uX3VwZGF0ZV9oYW5kbGVyc10gZG9lcyBub3RcbiAgICAgICBjb250YWluIHRoZSBvbi11cGRhdGUgaGFuZGxlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIG9ubHkgZXZlclxuICAgICAgIGdldHMgbG9uZ2VyOyB0aGVyZSBpcyBubyB3YXkgdG8gcmVtb3ZlIGVsZW1lbnRzLiAqKVxuICAgIG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gIDsgbXV0YWJsZSBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA6IGludCBhcnJheVxuICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICA7IG11dGFibGUgdXNlcl9pbmZvIDogRG90X3VzZXJfaW5mby50IG9wdGlvblxuICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxubGV0IHBhY2tlZF9zYW1lIChQYWNrZWQuVCB0MSkgKFBhY2tlZC5UIHQyKSA9IHNhbWUgdDEgdDJcbmxldCBpc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeVxubGV0IGluaXRpYWxfbnVtX2NoaWxkcmVuIHQgPSBLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIHQua2luZFxubGV0IGl0ZXJpX2NoaWxkcmVuIHQgfmYgPSBLaW5kLml0ZXJpX2NoaWxkcmVuIHQua2luZCB+ZlxubGV0IGlzX3ZhbGlkID0gTm9kZS5pc192YWxpZFxubGV0IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lID0gdHlwZV9lcXVhbF9pZl9waHlzX3NhbWVcblxubGV0IHVzZXJfaW5mbyB0ID1cbiAgbWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKEluZm8gaSkgLT4gU29tZSBpXG4gIHwgU29tZSBvdGhlciAtPiBTb21lIChJbmZvLmNyZWF0ZV9zIChEb3RfdXNlcl9pbmZvLnNleHBfb2ZfdCBvdGhlcikpXG47O1xuXG5sZXQgc2V0X3VzZXJfaW5mbyB0IGluZm8gPVxuICB0LnVzZXJfaW5mb1xuICA8LSAobWF0Y2ggaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgaSAtPiBTb21lIChJbmZvIGkpKVxuOztcblxubGV0IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogdCB+bGFiZWwgfmF0dHJzID1cbiAgbGV0IG5ld18gPSBEb3RfdXNlcl9pbmZvLmRvdCB+bGFiZWwgfmF0dHJpYnV0ZXM6YXR0cnMgaW5cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBuZXdfXG4gICAgfCBTb21lIG90aGVyIC0+IFNvbWUgKERvdF91c2VyX2luZm8uYXBwZW5kIG90aGVyIG5ld18pKVxuOztcblxubGV0IGVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQgPVxuICBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoaWxkLmNoYW5nZWRfYXQgcGFyZW50LnJlY29tcHV0ZWRfYXQgPiAwXG47O1xuXG5sZXQgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdCA9XG4gIGxldCBpc19zdGFsZSA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT5cbiAgICBpZiBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50OnQgdGhlbiBpc19zdGFsZSA6PSB0cnVlKTtcbiAgIWlzX3N0YWxlXG47O1xuXG5sZXQgaXNfc3RhbGUgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuICh0IDogYSB0KSAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICgqIEEgY29uc3Qgbm9kZSBpcyBzdGFsZSBvbmx5IGF0IGluaXRpYWxpemF0aW9uLiAqKVxuICB8IENvbnN0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogVGltZS1iYXNlZCBub2RlcyBhcmUgY29uc2lkZXJlZCBzdGFsZSB3aGVuIFt0LnJlY29tcHV0ZWRfYXRdIGlzIG5vbmUsIHdoaWNoIGhhcHBlbnNcbiAgICAgYXQgaW5pdGlhbGl6YXRpb24gYW5kIHdoZW4gdGhlIGFsYXJtIG1lY2hhbmlzbSBtYWtlcyBhIG5vZGUgc3RhbGUgKGl0IHNldHMgdGhlXG4gICAgIFt0LnJlY29tcHV0ZWRfYXRdIHRvIFtTdGFiaWxpemF0aW9uX251bS5ub25lXSkuICopXG4gIHwgQXQgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IEF0X2ludGVydmFscyBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gIHwgU25hcHNob3QgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAoKiBXZSBuZXZlciBjb25zaWRlciBhbiBpbnZhbGlkYXRlZCBub2RlIHRvIGJlIHN0YWxlIC0tIHdoZW4gd2UgaW52YWxpZGF0ZSBhIG5vZGUsIHdlXG4gICAgIGltbWVkaWF0ZWx5IHByb3BhZ2F0ZSBpbnZhbGlkaXR5IHRvIGl0cyBhbmNlc3RvcnMuICopXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICAoKiBBIFtWYXJdIG5vZGUgaXMgc3RhbGUgaWYgaXQgd2FzIHNldCBzaW5jZSBpdCB3YXMgcmVjb21wdXRlZC4gKilcbiAgfCBWYXIgeyBzZXRfYXQ7IF8gfSAtPiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHNldF9hdCB0LnJlY29tcHV0ZWRfYXQgPiAwXG4gICgqIE5vZGVzIHRoYXQgaGF2ZSBjaGlsZHJlbi4gKilcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEFycmF5X2ZvbGQgX1xuICB8IEJpbmRfbWFpbiBfXG4gIHwgRnJlZXplIF9cbiAgfCBJZl90aGVuX2Vsc2UgX1xuICB8IEpvaW5fbWFpbiBfXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF9cbiAgfCBTdGVwX2Z1bmN0aW9uIF9cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEV4cGVydCB7IGZvcmNlX3N0YWxlOyBfIH0gLT5cbiAgICBmb3JjZV9zdGFsZVxuICAgIHx8IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICAgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuOztcblxubGV0IG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQgPSBpc19uZWNlc3NhcnkgdCAmJiBpc19zdGFsZSB0XG5sZXQgaXNfaW5fcmVjb21wdXRlX2hlYXAgdCA9IHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID49IDBcbmxldCBpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIHQgPSB0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID49IDBcblxubGV0IGdldF9wYXJlbnQgdCB+aW5kZXggPVxuICBVb3B0LnZhbHVlX2V4blxuICAgIChpZiBpbmRleCA9IDAgdGhlbiB0LnBhcmVudDAgZWxzZSBVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSlcbjs7XG5cbmxldCBpdGVyaV9wYXJlbnRzIHQgfmYgPVxuICBpZiB0Lm51bV9wYXJlbnRzID4gMFxuICB0aGVuIChcbiAgICBmIDAgKFVvcHQudmFsdWVfZXhuIHQucGFyZW50MCk7XG4gICAgZm9yIGluZGV4ID0gMSB0byB0Lm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgZiBpbmRleCAoVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQucGFyZW50MV9hbmRfYmV5b25kIChpbmRleCAtIDEpKSlcbiAgICBkb25lKVxuOztcblxubGV0IGhhc19jaGlsZCB0IH5jaGlsZCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQnKSAtPiBoYXMgOj0gIWhhcyB8fCBzYW1lIGNoaWxkIGNoaWxkJyk7XG4gICFoYXNcbjs7XG5cbmxldCBoYXNfaW52YWxpZF9jaGlsZCB0ID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT4gaGFzIDo9ICFoYXMgfHwgbm90IChpc192YWxpZCBjaGlsZCkpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX3BhcmVudCAodCA6IF8gdCkgfnBhcmVudCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQnKSAtPiBoYXMgOj0gIWhhcyB8fCBzYW1lIHBhcmVudCBwYXJlbnQnKTtcbiAgIWhhc1xuOztcblxubGV0IHNob3VsZF9iZV9pbnZhbGlkYXRlZCA6IHR5cGUgYS4gYSB0IC0+IGJvb2wgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICAoKiBub2RlcyB3aXRoIG5vIGNoaWxkcmVuICopXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBBdCBfIC0+IGZhbHNlXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gZmFsc2VcbiAgfCBDb25zdCBfIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGZhbHNlXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICAoKiBOb2RlcyB3aXRoIGEgZml4ZWQgc2V0IG9mIGNoaWxkcmVuIGFyZSBpbnZhbGlkIGlmIGFueSBjaGlsZCBpcyBpbnZhbGlkLiAqKVxuICB8IEFycmF5X2ZvbGQgX1xuICB8IEZyZWV6ZSBfXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF9cbiAgfCBTdGVwX2Z1bmN0aW9uIF9cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+IGhhc19pbnZhbGlkX2NoaWxkIHRcbiAgKCogQSAqX2NoYW5nZSBub2RlIGlzIGludmFsaWQgaWYgdGhlIG5vZGUgaXQgaXMgd2F0Y2hpbmcgZm9yIGNoYW5nZXMgaXMgaW52YWxpZCAoc2FtZVxuICAgICByZWFzb24gYXMgYWJvdmUpLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIFtoYXNfaW52YWxpZF9jaGlsZCB0XS4gKilcbiAgfCBCaW5kX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxocylcbiAgfCBJZl90ZXN0X2NoYW5nZSB7IHRlc3Q7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIHRlc3QpXG4gIHwgSm9pbl9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gICgqIFtCaW5kX21haW5dLCBbSWZfdGhlbl9lbHNlXSwgYW5kIFtKb2luX21haW5dIGFyZSBpbnZhbGlkIGlmIHRoZWlyICpfY2hhbmdlIGNoaWxkIGlzLFxuICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IGlmIHRoZWlyIG90aGVyIGNoaWxkcmVuIGFyZSAtLSB0aGUgZ3JhcGggbWF5IGJlIHJlc3RydWN0dXJlZCB0b1xuICAgICBhdm9pZCB0aGUgaW52YWxpZGl0eSBvZiB0aG9zZS4gKilcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHNfY2hhbmdlKVxuICB8IElmX3RoZW5fZWxzZSB7IHRlc3RfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0X2NoYW5nZSlcbiAgfCBKb2luX21haW4geyBsaHNfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHNfY2hhbmdlKVxuICB8IEV4cGVydCBfIC0+XG4gICAgKCogVGhpcyBpcyBzaW1pbGFyIHRvIHdoYXQgd2UgZG8gZm9yIGJpbmQgYWJvdmUsIGV4Y2VwdCB0aGF0IGFueSBpbnZhbGlkIGNoaWxkIGNhbiBiZVxuICAgICAgIHJlbW92ZWQsIHNvIHdlIGNhbiBvbmx5IHRlbGwgaWYgYW4gZXhwZXJ0IG5vZGUgYmVjb21lcyBpbnZhbGlkIHdoZW4gYWxsIGl0c1xuICAgICAgIGRlcGVuZGVuY2llcyBoYXZlIGZpcmVkICh3aGljaCBpbiBwcmFjdGljZSBtZWFucyB3aGVuIHdlIGFyZSBhYm91dCB0byBydW4gaXQpLiAqKVxuICAgIGZhbHNlXG47O1xuXG5sZXQgZm9sZF9vYnNlcnZlcnMgKHQgOiBfIHQpIH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgbGV0IGFjID0gcmVmIGluaXQgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGFjIDo9IGYgIWFjIG9ic2VydmVyXG4gIGRvbmU7XG4gICFhY1xuOztcblxubGV0IGl0ZXJfb2JzZXJ2ZXJzIHQgfmYgPSBmb2xkX29ic2VydmVycyB0IH5pbml0OigpIH5mOihmdW4gKCkgb2JzZXJ2ZXIgLT4gZiBvYnNlcnZlcilcblxubGV0IGludmFyaWFudCAodHlwZSBhKSAoaW52YXJpYW50X2EgOiBhIC0+IHVuaXQpICh0IDogYSB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgWyV0ZXN0X2VxOiBib29sXSAobmVlZHNfdG9fYmVfY29tcHV0ZWQgdCkgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpO1xuICAgIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgdGhlbiAoXG4gICAgICBhc3NlcnQgKHQuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHQuY3JlYXRlZF9pbik7XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT5cbiAgICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IGNoaWxkLmhlaWdodCk7XG4gICAgICAgIGFzc2VydCAoaGFzX3BhcmVudCBjaGlsZCB+cGFyZW50OnQpKTtcbiAgICAgIGFzc2VydCAobm90IChzaG91bGRfYmVfaW52YWxpZGF0ZWQgdCkpKTtcbiAgICBpdGVyaV9wYXJlbnRzIHQgfmY6KGZ1biBfIChUIHBhcmVudCkgLT5cbiAgICAgIGFzc2VydCAoaGFzX2NoaWxkIHBhcmVudCB+Y2hpbGQ6dCk7XG4gICAgICBhc3NlcnQgKGlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA8IHBhcmVudC5oZWlnaHQpKTtcbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOihjaGVjayBOb2RlX2lkLmludmFyaWFudClcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH5yZWNvbXB1dGVkX2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+dmFsdWVfb3B0OlxuICAgICAgICAoY2hlY2sgKGZ1biB2YWx1ZV9vcHQgLT5cbiAgICAgICAgICAgaWYgaXNfdmFsaWQgdCAmJiBub3QgKGlzX3N0YWxlIHQpIHRoZW4gYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFsdWVfb3B0KTtcbiAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgdmFsdWVfb3B0KSlcbiAgICAgIH5raW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBraW5kIC0+XG4gICAgICAgICAgIEtpbmQuaW52YXJpYW50IGludmFyaWFudF9hIGtpbmQ7XG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICB8IEV4cGVydCBlIC0+XG4gICAgICAgICAgICAgRXhwZXJ0LmludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlbiBlIH5pc19uZWNlc3Nhcnk6KGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfmN1dG9mZjooY2hlY2sgKEN1dG9mZi5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfmNoYW5nZWRfYXQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNoYW5nZWRfYXQgLT5cbiAgICAgICAgICAgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50IGNoYW5nZWRfYXQ7XG4gICAgICAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmlzX3NvbWUgdC5yZWNvbXB1dGVkX2F0XG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoYW5nZWRfYXQgdC5yZWNvbXB1dGVkX2F0IDw9IDApKSlcbiAgICAgIH5udW1fb25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAoTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgKyBmb2xkX29ic2VydmVycyB0IH5pbml0OjAgfmY6KGZ1biBuIHsgb25fdXBkYXRlX2hhbmRsZXJzOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgICBuICsgTGlzdC5sZW5ndGggb25fdXBkYXRlX2hhbmRsZXJzKSkpKVxuICAgICAgfm51bV9wYXJlbnRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcGFyZW50cyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzIDw9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZCkpKVxuICAgICAgfnBhcmVudDFfYW5kX2JleW9uZDpcbiAgICAgICAgKGNoZWNrIChmdW4gcGFyZW50MV9hbmRfYmV5b25kIC0+XG4gICAgICAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHBhcmVudDFfYW5kX2JleW9uZCBkb1xuICAgICAgICAgICAgIFsldGVzdF9lcTogYm9vbF1cbiAgICAgICAgICAgICAgIChwYXJlbnRfaW5kZXggPCB0Lm51bV9wYXJlbnRzKVxuICAgICAgICAgICAgICAgKFVvcHQuaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgcGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfnBhcmVudDA6XG4gICAgICAgIChjaGVjayAoZnVuIHBhcmVudDAgLT5cbiAgICAgICAgICAgWyV0ZXN0X2VxOiBib29sXSAodC5udW1fcGFyZW50cyA+IDApIChVb3B0LmlzX3NvbWUgcGFyZW50MCkpKVxuICAgICAgfmNyZWF0ZWRfaW46KGNoZWNrIFNjb3BlLmludmFyaWFudClcbiAgICAgIH5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgLT5cbiAgICAgICAgICAgaWYgU2NvcGUuaXNfdG9wIHQuY3JlYXRlZF9pbiB8fCBub3QgKGlzX3ZhbGlkIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUpKSlcbiAgICAgIH5oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodCAtPlxuICAgICAgICAgICBpZiBpc19uZWNlc3NhcnkgdCB0aGVuIGFzc2VydCAoaGVpZ2h0ID49IDApIGVsc2UgYXNzZXJ0IChoZWlnaHQgPSAtMSkpKVxuICAgICAgfmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID49IC0xKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPD0gdC5oZWlnaHQpKSlcbiAgICAgIH5wcmV2X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAocHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgcHJldikgPSBVb3B0LnZhbHVlX2V4biBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gcHJldi5uZXh0X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IHByZXYuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfm5leHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudmFsdWVfZXhuIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHQpIChVb3B0LnZhbHVlX2V4biBuZXh0LnByZXZfaW5fcmVjb21wdXRlX2hlYXApKTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbmV4dC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApKSkpXG4gICAgICB+aGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIC0+XG4gICAgICAgICAgIGlmIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID49IDBcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwgdC5oZWlnaHQpKSlcbiAgICAgIH5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcClcbiAgICAgICAgICAgZWxzZSBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudmFsdWVfZXhuIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAoaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCBuZXh0KTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBuZXh0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICAgICAgfm9sZF92YWx1ZV9vcHQ6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b2JzZXJ2ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biB7IHN0YXRlOyBvYnNlcnZpbmc7IF8gfSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCB0IG9ic2VydmluZyk7XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgfmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uOmlnbm9yZVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczppZ25vcmVcbiAgICAgIH51c2VyX2luZm86aWdub3JlXG4gICAgICB+bXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgICAgICB8IEV4cGVydCBfIC0+ICgpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuICAgICAgICAgICAgICAgIH5leHBlY3Q6KGluaXRpYWxfbnVtX2NoaWxkcmVuIHQpKTtcbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgICAoZ2V0X3BhcmVudFxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkXG4gICAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpKSkpO1xuICAgICAgICAgICBpZiBkZWJ1ZyAmJiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB0aGVuIEFycmF5Lml0ZXIgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IH5mOihmdW4geCAtPiBhc3NlcnQgKHggPSAtMSkpKSlcbiAgICAgIH5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXg6XG4gICAgICAgIChjaGVjayAoZnVuIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgKEFycmF5Lmxlbmd0aCBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXgpXG4gICAgICAgICAgICAgfmV4cGVjdDooVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQgKyAxKTtcbiAgICAgICAgICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gcGFyZW50X2luZGV4IChUIHBhcmVudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGFja2VkX3NhbWVcbiAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgKEtpbmQuc2xvd19nZXRfY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LmtpbmRcbiAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlbiBBcnJheS5pdGVyIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+ZjooZnVuIHggLT4gYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+Zm9yY2VfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgfmNyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmUpXG47O1xuXG5sZXQgdW5zYWZlX3ZhbHVlIHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9vcHRcbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuICBlbHNlIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBnZXRfY3V0b2ZmIHQgPSB0LmN1dG9mZlxubGV0IHNldF9jdXRvZmYgdCBjdXRvZmYgPSB0LmN1dG9mZiA8LSBjdXRvZmZcblxubGV0IGlzX2NvbnN0IHQgPVxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IENvbnN0IF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBvbl91cGRhdGUgdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMVxuOztcblxubGV0IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgdCBub2RlX3VwZGF0ZSB+bm93ID1cbiAgbGV0IHIgPSByZWYgdC5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgd2hpbGUgbm90IChMaXN0LmlzX2VtcHR5ICFyKSBkb1xuICAgIG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgb25fdXBkYXRlX2hhbmRsZXIgOjogcmVzdCAtPlxuICAgICAgciA6PSByZXN0O1xuICAgICAgT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGxldCByID0gcmVmIG9ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgICAgciA6PSByZXN0O1xuICAgICAgICAoKiBXZSBoYXZlIHRvIHRlc3QgW3N0YXRlXSBiZWZvcmUgZWFjaCBvbi11cGRhdGUgaGFuZGxlciwgYmVjYXVzZSBhbiBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlciBtaWdodCBkaXNhYmxlIGl0cyBvd24gb2JzZXJ2ZXIsIHdoaWNoIHNob3VsZCBwcmV2ZW50IG90aGVyIG9uLXVwZGF0ZVxuICAgICAgICAgICBoYW5kbGVycyBpbiB0aGUgc2FtZSBvYnNlcnZlciBmcm9tIHJ1bm5pbmcuICopXG4gICAgICAgIChtYXRjaCBvYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBJbl91c2UgLT4gT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3cpXG4gICAgZG9uZVxuICBkb25lXG47O1xuXG5sZXQgc2V0X2tpbmQgdCBraW5kID1cbiAgdC5raW5kIDwtIGtpbmQ7XG4gIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gIDwtIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbjs7XG5cbmxldCBjcmVhdGUgc3RhdGUgY3JlYXRlZF9pbiBraW5kID1cbiAgbGV0IHQgPVxuICAgIHsgaWQgPSBOb2RlX2lkLm5leHQgKClcbiAgICA7IHN0YXRlXG4gICAgOyByZWNvbXB1dGVkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdmFsdWVfb3B0ID0gVW9wdC5ub25lXG4gICAgOyBraW5kXG4gICAgOyBjdXRvZmYgPSBDdXRvZmYucGh5c19lcXVhbFxuICAgIDsgY2hhbmdlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IG51bV9vbl91cGRhdGVfaGFuZGxlcnMgPSAwXG4gICAgOyBudW1fcGFyZW50cyA9IDBcbiAgICA7IHBhcmVudDFfYW5kX2JleW9uZCA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgICA7IHBhcmVudDAgPSBVb3B0Lm5vbmVcbiAgICA7IGNyZWF0ZWRfaW5cbiAgICA7IG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHQgPSAtMVxuICAgIDsgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gLTFcbiAgICA7IHByZXZfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgICA7IG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgb2xkX3ZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsgb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IGZhbHNlXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4ID1cbiAgICAgICAgQXJyYXkuY3JlYXRlIH5sZW46KEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4ga2luZCkgKC0xKVxuICAgICgqIFtteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXhdIGhhcyBvbmUgZWxlbWVudCBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGhvbGRcbiAgICAgICB0aGUgY2hpbGQgaW5kZXggb2YgW3BhcmVudDBdLiAqKVxuICAgIDsgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4ID0gW3wgLTEgfF1cbiAgICA7IGZvcmNlX25lY2Vzc2FyeSA9IGZhbHNlXG4gICAgOyB1c2VyX2luZm8gPSBOb25lXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgPVxuICAgICAgICAoaWYgc3RhdGUua2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSB0aGVuIFNvbWUgKEJhY2t0cmFjZS5nZXQgKCkpIGVsc2UgTm9uZSlcbiAgICB9XG4gIGluXG4gIFNjb3BlLmFkZF9ub2RlIGNyZWF0ZWRfaW4gdDtcbiAgKCogW2ludmFyaWFudF0gZG9lcyBub3QgeWV0IGhvbGQgaGVyZSBiZWNhdXNlIG1hbnkgdXNlcyBvZiBbTm9kZS5jcmVhdGVdIHVzZSBba2luZCA9XG4gICAgIFVuaW5pdGlhbGl6ZWRdLCBhbmQgdGhlbiBtdXRhdGUgW3Qua2luZF0gbGF0ZXIuICopXG4gIHRcbjs7XG5cbmxldCBtYXhfbnVtX3BhcmVudHMgdCA9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZFxuXG5sZXQgbWFrZV9zcGFjZV9mb3JfcGFyZW50X2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fcGFyZW50cyA9IG1heF9udW1fcGFyZW50cyB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfbWF4X251bV9wYXJlbnRzID0gMiAqIG1heF9udW1fcGFyZW50cyB0IGluXG4gICAgdC5wYXJlbnQxX2FuZF9iZXlvbmRcbiAgICA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5wYXJlbnQxX2FuZF9iZXlvbmQgfmxlbjoobmV3X21heF9udW1fcGFyZW50cyAtIDEpO1xuICAgIHQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX3BhcmVudHMgKC0xKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0ICh0Lm51bV9wYXJlbnRzIDwgbWF4X251bV9wYXJlbnRzIHQpXG47O1xuXG5sZXQgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQgfmNoaWxkX2luZGV4ID1cbiAgbGV0IG1heF9udW1fY2hpbGRyZW4gPSBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggaW5cbiAgaWYgY2hpbGRfaW5kZXggPj0gbWF4X251bV9jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPSBtYXhfbnVtX2NoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heF9udW1fY2hpbGRyZW4gPSBJbnQubWF4IDIgKDIgKiBtYXhfbnVtX2NoaWxkcmVuKSBpblxuICAgIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX2NoaWxkcmVuICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPCBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXgpXG47O1xuXG5sZXQgc2V0X3BhcmVudCA6IHR5cGUgYS4gY2hpbGQ6YSB0IC0+IHBhcmVudDpQYWNrZWQudCBVb3B0LnQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgaWYgcGFyZW50X2luZGV4ID0gMFxuICB0aGVuIGNoaWxkLnBhcmVudDAgPC0gcGFyZW50XG4gIGVsc2UgVW5pZm9ybV9hcnJheS5zZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSBwYXJlbnRcbjs7XG5cbmxldCBsaW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDooVW9wdC5zb21lIChQYWNrZWQuVCBwYXJlbnQpKSB+cGFyZW50X2luZGV4O1xuICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gY2hpbGRfaW5kZXg7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSBwYXJlbnRfaW5kZXhcbjs7XG5cbmxldCB1bmxpbmtcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IGNoaWxkX2luZGV4OmludCAtPiBwYXJlbnQ6YiB0IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBzZXRfcGFyZW50IH5jaGlsZCB+cGFyZW50OlVvcHQubm9uZSB+cGFyZW50X2luZGV4O1xuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gLTE7XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIDwtIC0xKVxuOztcblxubGV0IGFkZF9wYXJlbnQgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IHBhcmVudDpiIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSBwYXJlbnQgfmNoaWxkX2luZGV4O1xuICBsaW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4OmNoaWxkLm51bV9wYXJlbnRzO1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyArIDFcbjs7XG5cbmxldCByZW1vdmVfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQubnVtX3BhcmVudHMgPj0gMSk7XG4gIGxldCBwYXJlbnRfaW5kZXggPSBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHBhcmVudCkgKGdldF9wYXJlbnQgY2hpbGQgfmluZGV4OnBhcmVudF9pbmRleCkpO1xuICBsZXQgbGFzdF9wYXJlbnRfaW5kZXggPSBjaGlsZC5udW1fcGFyZW50cyAtIDEgaW5cbiAgaWYgcGFyZW50X2luZGV4IDwgbGFzdF9wYXJlbnRfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAobGFzdF9wYXJlbnRfaW5kZXggLSAxKSlcbiAgICBpblxuICAgIGxpbmtcbiAgICAgIH5jaGlsZFxuICAgICAgfmNoaWxkX2luZGV4OmNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4obGFzdF9wYXJlbnRfaW5kZXgpXG4gICAgICB+cGFyZW50XG4gICAgICB+cGFyZW50X2luZGV4KTtcbiAgdW5saW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4Omxhc3RfcGFyZW50X2luZGV4O1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyAtIDFcbjs7XG5cbmxldCBzd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kIHBhcmVudCB+Y2hpbGQxIH5jaGlsZF9pbmRleDEgfmNoaWxkMiB+Y2hpbGRfaW5kZXgyID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDEpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDEpKTtcbiAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIGNoaWxkMikgKEtpbmQuc2xvd19nZXRfY2hpbGQgcGFyZW50LmtpbmQgfmluZGV4OmNoaWxkX2luZGV4MikpKTtcbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MSlcbiAgaW5cbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MilcbiAgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpID0gY2hpbGRfaW5kZXgxKTtcbiAgICBhc3NlcnQgKFxuICAgICAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPSBjaGlsZF9pbmRleDIpKTtcbiAgKCogbm93IHN0YXJ0IHN3YXBwaW5nICopXG4gIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpIDwtIGNoaWxkX2luZGV4MjtcbiAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPC0gY2hpbGRfaW5kZXgxO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDI7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MikgPC0gaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMVxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBQYWNrZWQudCA9IFQgOiBfIFR5cGVzLk5vZGUudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIHRdXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcblxuICBtb2R1bGUgQXNfbGlzdCAoTSA6IHNpZ1xuICAgICAgdmFsIG5leHQgOiBQYWNrZWQudCAtPiBQYWNrZWQudCBVb3B0LnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gUGFja2VkLnQgVW9wdC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCBhYyA9IHJlZiBpbml0IGluXG4gICAgICBsZXQgciA9IHJlZiB0IGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IHBhY2tlZF9ub2RlID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBNLm5leHQgcGFja2VkX25vZGU7XG4gICAgICAgIGFjIDo9IGYgIWFjIHBhY2tlZF9ub2RlXG4gICAgICBkb25lO1xuICAgICAgIWFjXG4gICAgOztcblxuICAgIGxldCBpdGVyIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBuIC0+IGYgbilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBpdGVyIHQgfmY6aW52YXJpYW50XG4gICAgbGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2IChmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyBuIC0+IG4gOjogYWMpKVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX2xpc3QgdCB8PiBbJXNleHBfb2Y6IFBhY2tlZC50IGxpc3RdXG4gIGVuZFxuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mID1cbiAgICBsZXQgc2VlbiA9IE5vZGVfaWQuSGFzaF9zZXQuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBpdGVyX2Rlc2NlbmRhbnRzIChUIHQpID1cbiAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlZW4gdC5pZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBIYXNoX3NldC5hZGQgc2VlbiB0LmlkO1xuICAgICAgICBmIChUIHQpO1xuICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyB0IC0+IGl0ZXJfZGVzY2VuZGFudHMgdCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgdHMgfmY6aXRlcl9kZXNjZW5kYW50cztcbiAgICBzZWVuXG4gIDs7XG5cbiAgbGV0IGl0ZXJfZGVzY2VuZGFudHMgdHMgfmYgPSBpZ25vcmUgKGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmYgOiBfIEhhc2hfc2V0LnQpXG5cbiAgbW9kdWxlIERvdF91c2VyX2luZm8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERvdF91c2VyX2luZm9cblxuICAgIGxldCBkZWZhdWx0IH5uYW1lIHQgPVxuICAgICAgRG90X3VzZXJfaW5mby5kb3RcbiAgICAgICAgfmxhYmVsOlsgbmFtZTsgS2luZC5uYW1lIHQua2luZDsgc3ByaW50ZiBcImhlaWdodD0lZFwiIHQuaGVpZ2h0IF1cbiAgICAgICAgfmF0dHJpYnV0ZXM6U3RyaW5nLk1hcC5lbXB0eVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IChUIHQpID0gYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiB0XG5cbiAgbGV0IHByaW50X25vZGUgb3V0IH5uYW1lIHQgPVxuICAgIGxldCBkZWZhdWx0ID0gRG90X3VzZXJfaW5mby5kZWZhdWx0IH5uYW1lIHQgaW5cbiAgICBsZXQgaW5mbyA9XG4gICAgICBtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIHVzZXJfaW5mbyAtPiBEb3RfdXNlcl9pbmZvLmFwcGVuZCBkZWZhdWx0IHVzZXJfaW5mb1xuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCIlc1xcblwiIChEb3RfdXNlcl9pbmZvLnRvX3N0cmluZyB+bmFtZSAoRG90X3VzZXJfaW5mby50b19kb3QgaW5mbykpXG4gIDs7XG5cbiAgbGV0IHNhdmVfZG90IG91dCB0cyA9XG4gICAgbGV0IG5vZGVfbmFtZSA9XG4gICAgICBpZiBhbV9ydW5uaW5nX3Rlc3RcbiAgICAgIHRoZW4gZnVuIF8gLT4gXCJuIyMjXCJcbiAgICAgIGVsc2UgZnVuIG5vZGUgLT4gXCJuXCIgXiBOb2RlX2lkLnRvX3N0cmluZyBub2RlLmlkXG4gICAgaW5cbiAgICBmcHJpbnRmIG91dCBcImRpZ3JhcGggRyB7XFxuXCI7XG4gICAgZnByaW50ZiBvdXQgXCIgIHJhbmtkaXIgPSBCVFxcblwiO1xuICAgIGxldCBiaW5kX2VkZ2VzID0gcmVmIFtdIGluXG4gICAgbGV0IHNlZW4gPVxuICAgICAgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIGxldCBuYW1lID0gbm9kZV9uYW1lIHQgaW5cbiAgICAgICAgcHJpbnRfbm9kZSBvdXQgfm5hbWUgdDtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgZnJvbV8pIC0+XG4gICAgICAgICAgZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzXFxuXCIgKG5vZGVfbmFtZSBmcm9tXykgbmFtZSk7XG4gICAgICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT5cbiAgICAgICAgICBCaW5kLml0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZCB+ZjooZnVuIHRvXyAtPlxuICAgICAgICAgICAgYmluZF9lZGdlcyA6PSAoVCB0LCB0b18pIDo6ICFiaW5kX2VkZ2VzKVxuICAgICAgICB8IF8gLT4gKCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgIWJpbmRfZWRnZXMgfmY6KGZ1biAoVCBmcm9tLCBUIHRvXykgLT5cbiAgICAgIGlmIEhhc2hfc2V0Lm1lbSBzZWVuIHRvXy5pZFxuICAgICAgdGhlbiBmcHJpbnRmIG91dCBcIiAgJXMgLT4gJXMgW3N0eWxlPWRhc2hlZF1cXG5cIiAobm9kZV9uYW1lIGZyb20pIChub2RlX25hbWUgdG9fKSk7XG4gICAgZnByaW50ZiBvdXQgXCJ9XFxuJSFcIlxuICA7O1xuXG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgdHMgPVxuICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOihmdW4gb3V0IC0+IHNhdmVfZG90IG91dCB0cylcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgQXNfcmVjb21wdXRlX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICBlbmQpXG5cbm1vZHVsZSBOb2Rlc19ieV9oZWlnaHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXNfcmVjb21wdXRlX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAoKiBXZSBkaXNwbGF5IHRoZSBzbWFsbGVzdCBwcmVmaXggb2YgW25vZGVzX2J5X2hlaWdodF0gdGhhdCBpbmNsdWRlcyBhbGwgbm9kZXMuICopXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IG1heF9ub25lbXB0eV9pbmRleCA9IHJlZiAoLTEpIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaSBsIC0+IGlmIFVvcHQuaXNfc29tZSBsIHRoZW4gbWF4X25vbmVtcHR5X2luZGV4IDo9IGkpO1xuICAgIFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczowIH5sZW46KCFtYXhfbm9uZW1wdHlfaW5kZXggKyAxKSB8PiBbJXNleHBfb2Y6IHRdXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuUmVjb21wdXRlX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgbGV0IGFjdHVhbF9sZW5ndGggPSByZWYgMCBpblxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdC5ub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBub2RlIC0+XG4gICAgICAgICAgICAgYWN0dWFsX2xlbmd0aCA6PSAhYWN0dWFsX2xlbmd0aCArIEFzX3JlY29tcHV0ZV9saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAgICAgICAgWyV0ZXN0X2VxOiBpbnRdIGxlbmd0aCAhYWN0dWFsX2xlbmd0aCkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vZGVzX2J5X2hlaWdodCAtPlxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIG5vZGVzX2J5X2hlaWdodCB+ZjooZnVuIGhlaWdodCBub2RlIC0+XG4gICAgICAgICAgICAgQXNfcmVjb21wdXRlX2xpc3QuaXRlciBub2RlIH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKSkpKSlcbjs7XG5cbmxldCBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIGZvciBpID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDEgZG9cbiAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBpKSlcbiAgICBkb25lO1xuICBsZXQgc3JjID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IGRzdCA9IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICB+c3JjXG4gICAgfnNyY19wb3M6MFxuICAgIH5kc3RcbiAgICB+ZHN0X3BvczowXG4gICAgfmxlbjoobWluIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBzcmMpIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpKTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gZHN0O1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBtaW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGRzdClcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9uZXh0IChwcmV2IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXh0ID1cbiAgaWYgVW9wdC5pc19zb21lIHByZXZcbiAgdGhlbiAoXG4gICAgbGV0IChUIHByZXYpID0gVW9wdC51bnNhZmVfdmFsdWUgcHJldiBpblxuICAgIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBuZXh0KVxuOztcblxubGV0IHNldF9wcmV2IChuZXh0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5wcmV2ID1cbiAgaWYgVW9wdC5pc19zb21lIG5leHRcbiAgdGhlbiAoXG4gICAgbGV0IChUIG5leHQpID0gVW9wdC51bnNhZmVfdmFsdWUgbmV4dCBpblxuICAgIG5leHQucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBwcmV2KVxuOztcblxubGV0IGxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gaGVpZ2h0O1xuICBsZXQgbmV4dCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBpblxuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjooVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKVxuOztcblxubGV0IHVubGluayAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgbGV0IHByZXYgPSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgbGV0IG5leHQgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgaWYgcGh5c19zYW1lXG4gICAgICAgKFVvcHQuc29tZSBub2RlKVxuICAgICAgIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcClcbiAgdGhlbiBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjtcbiAgc2V0X25leHQgcHJldiB+bmV4dDtcbiAgbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZVxuOztcblxuKCogV2UgZG9uJ3Qgc2V0IFtub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBdIGhlcmUsIGJ1dCByYXRoZXIgYWZ0ZXIgY2FsbGluZyBbdW5saW5rXS4gKilcblxubGV0IGFkZCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB8fCBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IGF0dGVtcHQgdG8gYWRkIG5vZGUgdG8gcmVjb21wdXRlIGhlYXBcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub2RlLmhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBoZWlnaHQgPCB0LmhlaWdodF9sb3dlcl9ib3VuZCB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGluayB0IG5vZGU7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHJlbW92ZSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpIHx8IE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJpbmNvcnJlY3QgW3JlbW92ZV0gb2Ygbm9kZSBmcm9tIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICB1bmxpbmsgdCBub2RlO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxXG47O1xuXG5sZXQgaW5jcmVhc2VfaGVpZ2h0ICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIGFzc2VydCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIHVubGluayB0IG5vZGU7XG4gIGxpbmsgdCBub2RlXG47O1xuXG5sZXQgbWluX2hlaWdodCB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHRcbiAgZWxzZSAoXG4gICAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gICAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGRvXG4gICAgICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSB0LmhlaWdodF9sb3dlcl9ib3VuZCArIDFcbiAgICBkb25lKTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmRcbjs7XG5cbmxldCByZW1vdmVfbWluIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgbm9kZXNfYnlfaGVpZ2h0ID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IG5vZGUgPSByZWYgKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCkgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lICFub2RlIGRvXG4gICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxO1xuICAgIGlmIGRlYnVnICYmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHVuZXhwZWN0ZWRseSByZWFjaGVkIGVuZCBvZiBoZWFwXCJcbiAgICAgICAgdFxuICAgICAgICBbJXNleHBfb2Y6IHRdO1xuICAgIG5vZGUgOj0gVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG4gIGRvbmU7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFub2RlIGluXG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQubm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6VW9wdC5ub25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG5tb2R1bGUgQXNfYWRqdXN0X2hlaWdodHNfbGlzdCA9IE5vZGUuUGFja2VkLkFzX2xpc3QgKHN0cnVjdFxuICAgIGxldCBuZXh0IChOb2RlLlBhY2tlZC5UIG5vZGUpID0gbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX2FkanVzdF9oZWlnaHRzX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBoZWlnaHQgbm9kZXMgLT5cbiAgICAgICAgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5pbnZhcmlhbnQgbm9kZXM7XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaXRlciBub2RlcyB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCk7XG4gICAgICAgICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlXG4gICAgICAgICAgdGhlbiBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgOztcblxuICBsZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICAgIFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW46KG1heF9oZWlnaHRfYWxsb3dlZCArIDEpIFVvcHQubm9uZVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlciB0IH5mOihmdW4gbm9kZSAtPiByIDo9ICFyICsgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgIXJcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BZGp1c3RfaGVpZ2h0c19oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG1heF9oZWlnaHRfc2VlbiA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT4gYXNzZXJ0IChsZW5ndGggPSBOb2Rlc19ieV9oZWlnaHQubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KSkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXhfaGVpZ2h0X3NlZW46XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9oZWlnaHRfc2VlbiAtPlxuICAgICAgICAgICBhc3NlcnQgKG1heF9oZWlnaHRfc2VlbiA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChtYXhfaGVpZ2h0X3NlZW4gPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6KGNoZWNrIE5vZGVzX2J5X2hlaWdodC5pbnZhcmlhbnQpKVxuOztcblxubGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgeyBsZW5ndGggPSAwXG4gIDsgaGVpZ2h0X2xvd2VyX2JvdW5kID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMVxuICA7IG1heF9oZWlnaHRfc2VlbiA9IDBcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBtYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBpZiBtYXhfaGVpZ2h0X2FsbG93ZWQgPCB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImNhbm5vdCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIGxlc3MgdGhhbiB0aGUgbWF4IGhlaWdodCBhbHJlYWR5IHNlZW5cIlxuICAgICAgKG1heF9oZWlnaHRfYWxsb3dlZCwgYG1heF9oZWlnaHRfc2VlbiB0Lm1heF9oZWlnaHRfc2VlbilcbiAgICAgIFslc2V4cF9vZjogaW50ICogWyBgbWF4X2hlaWdodF9zZWVuIG9mIGludCBdXTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICB0Lm5vZGVzX2J5X2hlaWdodCA8LSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbjs7XG5cbmxldCBhZGRfdW5sZXNzX21lbSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gIHRoZW4gKFxuICAgIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICAgICgqIFdlIHByb2Nlc3Mgbm9kZXMgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBwcmUtYWRqdXN0ZWQgaGVpZ2h0LCBzbyBpdCBpcyBhIGJ1ZyBpZiB3ZVxuICAgICAgIGV2ZXIgdHJ5IHRvIGFkZCBhIG5vZGUgdGhhdCB3b3VsZCB2aW9sYXRlIHRoYXQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSB0LmhlaWdodF9sb3dlcl9ib3VuZCk7XG4gICAgKCogV2hlbmV2ZXIgd2Ugc2V0IGEgbm9kZSdzIGhlaWdodCwgd2UgdXNlIFtzZXRfaGVpZ2h0XSwgd2hpY2ggZW5mb3JjZXMgdGhpcy4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIGhlaWdodDtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICAgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0O1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSkpXG47O1xuXG5sZXQgcmVtb3ZlX21pbl9leG4gdCA6IE5vZGUuUGFja2VkLnQgPVxuICBpZiBkZWJ1ZyAmJiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFkanVzdF9oZWlnaHRzX2hlYXAucmVtb3ZlX21pbiBvZiBlbXB0eSBoZWFwXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgciA9IHJlZiB0LmhlaWdodF9sb3dlcl9ib3VuZCBpblxuICB3aGlsZSBVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0ICFyKSBkb1xuICAgIGluY3IgclxuICBkb25lO1xuICBsZXQgaGVpZ2h0ID0gIXIgaW5cbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gaGVpZ2h0O1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkgaW5cbiAgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwO1xuICBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcblxubGV0IHNldF9oZWlnaHQgdCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBpZiBoZWlnaHQgPiB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuIChcbiAgICB0Lm1heF9oZWlnaHRfc2VlbiA8LSBoZWlnaHQ7XG4gICAgaWYgaGVpZ2h0ID4gbWF4X2hlaWdodF9hbGxvd2VkIHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIm5vZGUgd2l0aCB0b28gbGFyZ2UgaGVpZ2h0XCJcbiAgICAgICAgKGBIZWlnaHQgaGVpZ2h0LCBgTWF4IChtYXhfaGVpZ2h0X2FsbG93ZWQgdCkpXG4gICAgICAgIFslc2V4cF9vZjogWyBgSGVpZ2h0IG9mIGludCBdICogWyBgTWF4IG9mIGludCBdXSk7XG4gIG5vZGUuaGVpZ2h0IDwtIGhlaWdodFxuOztcblxubGV0IGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBjaGlsZCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBpZiBOb2RlLnNhbWUgcGFyZW50IG9yaWdpbmFsX2NoaWxkXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYWRkaW5nIGVkZ2UgbWFkZSBncmFwaCBjeWNsaWNcIlxuICAgICAgKGBjaGlsZCBvcmlnaW5hbF9jaGlsZCwgYHBhcmVudCBvcmlnaW5hbF9wYXJlbnQpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNoaWxkIG9mIF8gTm9kZS50IF0gKiBbIGBwYXJlbnQgb2YgXyBOb2RlLnQgXV07XG4gIGlmIGNoaWxkLmhlaWdodCA+PSBwYXJlbnQuaGVpZ2h0XG4gIHRoZW4gKFxuICAgIGFkZF91bmxlc3NfbWVtIHQgcGFyZW50O1xuICAgICgqIFdlIHNldCBbcGFyZW50LmhlaWdodF0gYWZ0ZXIgYWRkaW5nIFtwYXJlbnRdIHRvIHRoZSBoZWFwLCBzbyB0aGF0IFtwYXJlbnRdIGdvZXNcbiAgICAgICBpbiB0aGUgaGVhcCB3aXRoIGl0cyBwcmUtYWRqdXN0ZWQgaGVpZ2h0LiAqKVxuICAgIHNldF9oZWlnaHQgdCBwYXJlbnQgKGNoaWxkLmhlaWdodCArIDEpKVxuOztcblxubGV0IGFkanVzdF9oZWlnaHRzXG4gICAgICAodHlwZSBhIGIpXG4gICAgICB0XG4gICAgICByZWNvbXB1dGVfaGVhcFxuICAgICAgfmNoaWxkOihvcmlnaW5hbF9jaGlsZCA6IGEgTm9kZS50KVxuICAgICAgfnBhcmVudDoob3JpZ2luYWxfcGFyZW50IDogYiBOb2RlLnQpXG4gID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAob3JpZ2luYWxfY2hpbGQuaGVpZ2h0ID49IG9yaWdpbmFsX3BhcmVudC5oZWlnaHQpO1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0O1xuICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgdFxuICAgIH5vcmlnaW5hbF9jaGlsZFxuICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICB+Y2hpbGQ6b3JpZ2luYWxfY2hpbGRcbiAgICB+cGFyZW50Om9yaWdpbmFsX3BhcmVudDtcbiAgd2hpbGUgbGVuZ3RoIHQgPiAwIGRvXG4gICAgbGV0IChUIGNoaWxkKSA9IHJlbW92ZV9taW5fZXhuIHQgaW5cbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIGNoaWxkXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5pbmNyZWFzZV9oZWlnaHQgcmVjb21wdXRlX2hlYXAgY2hpbGQ7XG4gICAgaWYgY2hpbGQubnVtX3BhcmVudHMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgKFQgcGFyZW50KSA9IFVvcHQudmFsdWVfZXhuIGNoaWxkLnBhcmVudDAgaW5cbiAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudDtcbiAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIGNoaWxkLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudFxuICAgICAgZG9uZSk7XG4gICAgbWF0Y2ggY2hpbGQua2luZCB3aXRoXG4gICAgfCBCaW5kX2xoc19jaGFuZ2UgeyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM7IF8gfSAtPlxuICAgICAgbGV0IHIgPSByZWYgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVfb25fcmhzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+b3JpZ2luYWxfY2hpbGRcbiAgICAgICAgICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICAgICAgICAgIH5jaGlsZFxuICAgICAgICAgICAgfnBhcmVudDpub2RlX29uX3Joc1xuICAgICAgZG9uZVxuICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChvcmlnaW5hbF9jaGlsZC5oZWlnaHQgPCBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0KVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQWxhcm1fdmFsdWUuQWN0aW9uLnQgPVxuICAgIHwgQXQgb2YgQXQudFxuICAgIHwgQXRfaW50ZXJ2YWxzIG9mIEF0X2ludGVydmFscy50XG4gICAgfCBTbmFwc2hvdCA6IF8gU25hcHNob3QudCAtPiB0XG4gICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBBdCBhdCAtPiBBdC5pbnZhcmlhbnQgYXRcbiAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpZ25vcmUgc25hcHNob3RcbiAgICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGlnbm9yZSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BbGFybV92YWx1ZS50ID1cbiAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICA7ICgqIFtuZXh0X2ZpcmVkXSBzaW5nbHkgbGlua3MgYWxsIGFsYXJtIHZhbHVlcyB0aGF0IGZpcmUgZHVyaW5nIGEgc2luZ2xlIGNhbGwgdG9cbiAgICAgICBbYWR2YW5jZV9jbG9ja10uICopXG4gICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogKHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXIgfmFjdGlvbjooY2hlY2sgQWN0aW9uLmludmFyaWFudCkgfm5leHRfZmlyZWQ6aWdub3JlKVxuOztcblxubGV0IGNyZWF0ZSBhY3Rpb24gPSB7IGFjdGlvbjsgbmV4dF9maXJlZCA9IFVvcHQubm9uZSB9XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29uZmlnX2ludGZcblxubW9kdWxlIERlZmF1bHQgKCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSB0cnVlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLkludGVybmFsX29ic2VydmVyXG5cbm1vZHVsZSBQYWNrZWRfID0gc3RydWN0XG4gIGluY2x1ZGUgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPVxuICAgIGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyB8PiBbJXNleHBfb2Y6IF8gVHlwZXMuTm9kZS50XVxuICA7O1xuXG4gIGxldCBwcmV2X2luX2FsbCAoVCB0KSA9IHQucHJldl9pbl9hbGxcbiAgbGV0IG5leHRfaW5fYWxsIChUIHQpID0gdC5uZXh0X2luX2FsbFxuICBsZXQgc2V0X3ByZXZfaW5fYWxsIChUIHQxKSB0MiA9IHQxLnByZXZfaW5fYWxsIDwtIHQyXG4gIGxldCBzZXRfbmV4dF9pbl9hbGwgKFQgdDEpIHQyID0gdDEubmV4dF9pbl9hbGwgPC0gdDJcbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuU3RhdGUudCA9XG4gICAgfCBDcmVhdGVkXG4gICAgfCBJbl91c2VcbiAgICB8IERpc2FsbG93ZWRcbiAgICB8IFVubGlua2VkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gIHsgKCogU3RhdGUgdHJhbnNpdGlvbnM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ3JlYXRlZCAtLT4gSW5fdXNlIC0tPiBEaXNhbGxvd2VkIC0tPiBVbmxpbmtlZFxuICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICAgICAgICAgXFwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL1xuICAgICAgIHZ9ICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7ICgqIFt7cHJldixuZXh0fV9pbl9hbGxdIGRvdWJseSBsaW5rIGFsbCBvYnNlcnZlcnMgaW4gW3N0YXRlLmFsbF9vYnNlcnZlcnNdLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9hbGwgOiBQYWNrZWRfLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX2FsbCA6IFBhY2tlZF8udCBVb3B0LnRcbiAgOyAoKiBbe3ByZXYsbmV4dH1faW5fb2JzZXJ2aW5nXSBkb3VibHkgbGluayBhbGwgb2JzZXJ2ZXJzIG9mIFtvYnNlcnZpbmddLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9vYnNlcnZpbmcgOiAoJ2EgdFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fb2JzZXJ2aW5nIDogKCdhIHRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAnYSBpbnRlcm5hbF9vYnNlcnZlciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGluY3Jfc3RhdGUgdCA9IHQub2JzZXJ2aW5nLnN0YXRlXG5cbmxldCB1c2VfaXNfYWxsb3dlZCB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ3JlYXRlZCB8IEluX3VzZSAtPiB0cnVlXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGZhbHNlXG47O1xuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBzYW1lX2FzX3BhY2tlZCAodDEgOiBfIHQpIChQYWNrZWRfLlQgdDIpID0gc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+b2JzZXJ2aW5nOihjaGVjayAoTm9kZS5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgICAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChMaXN0LmlzX2VtcHR5IG9uX3VwZGF0ZV9oYW5kbGVycykpKVxuICAgICAgfnByZXZfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLm5leHRfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX2FsbCkpKSkpKVxuICAgICAgfm5leHRfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLnByZXZfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FsbCkpKSkpKVxuICAgICAgfnByZXZfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKG5leHRfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX29ic2VydmluZykpKSkpKVxuICAgICAgfm5leHRfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKHByZXZfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX29ic2VydmluZykpKSkpKSlcbjs7XG5cbmxldCB2YWx1ZV9leG4gdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENyZWF0ZWQgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCB3aXRob3V0IHN0YWJpbGl6aW5nXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIGRpc2FsbG93X2Z1dHVyZV91c2VcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gIHwgSW5fdXNlIC0+XG4gICAgbGV0IHVvcHQgPSB0Lm9ic2VydmluZy52YWx1ZV9vcHQgaW5cbiAgICBpZiBVb3B0LmlzX25vbmUgdW9wdFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF07XG4gICAgVW9wdC51bnNhZmVfdmFsdWUgdW9wdFxuOztcblxubGV0IG9uX3VwZGF0ZV9leG4gdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwib25fdXBkYXRlIGRpc2FsbG93ZWRcIiB0IFslc2V4cF9vZjogXyB0XVxuICB8IENyZWF0ZWQgfCBJbl91c2UgLT5cbiAgICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IENyZWF0ZWQgLT5cbiAgICAgICAoKiBXZSdsbCBidW1wIFtvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gd2hlbiBbdF0gaXMgYWN0dWFsbHkgYWRkZWQgdG9cbiAgICAgICAgICBbb2JzZXJ2aW5nLm9ic2VydmVyc10gYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgKClcbiAgICAgfCBJbl91c2UgLT5cbiAgICAgICBsZXQgb2JzZXJ2aW5nID0gdC5vYnNlcnZpbmcgaW5cbiAgICAgICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDEpXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9vYnNlcnZpbmcgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fb2JzZXJ2aW5nIGluXG4gIHQucHJldl9pbl9vYnNlcnZpbmcgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fb2JzZXJ2aW5nIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkucHJldl9pbl9vYnNlcnZpbmcgPC0gcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikubmV4dF9pbl9vYnNlcnZpbmcgPC0gbmV4dDtcbiAgbGV0IG9ic2VydmluZyA9IHQub2JzZXJ2aW5nIGluXG4gIGlmIHBoeXNfZXF1YWwgdCAoVW9wdC52YWx1ZV9leG4gb2JzZXJ2aW5nLm9ic2VydmVycykgdGhlbiBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIG5leHQ7XG4gIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzIC0gTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIFtdXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fYWxsIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9hbGwgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fYWxsIGluXG4gIHQucHJldl9pbl9hbGwgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fYWxsIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiBQYWNrZWRfLnNldF9wcmV2X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkgcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiBQYWNrZWRfLnNldF9uZXh0X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikgbmV4dFxuOztcblxubGV0IHVubGluayB0ID1cbiAgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQ7XG4gIHVubGlua19mcm9tX2FsbCB0XG47O1xuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIGluY2x1ZGUgUGFja2VkX1xuXG4gIGxldCBzZXhwX29mX3QgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID1cbiAgICBpbnRlcm5hbF9vYnNlcnZlciB8PiBbJXNleHBfb2Y6IF8gaW50ZXJuYWxfb2JzZXJ2ZXJdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAoVCB0KSA9IGludmFyaWFudCBpZ25vcmUgdFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaW52YXJpYW50X2EgIXRcbmxldCBvYnNlcnZpbmcgdCA9IEludGVybmFsX29ic2VydmVyLm9ic2VydmluZyAhdFxubGV0IHVzZV9pc19hbGxvd2VkIHQgPSBJbnRlcm5hbF9vYnNlcnZlci51c2VfaXNfYWxsb3dlZCAhdFxubGV0IHZhbHVlX2V4biB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIudmFsdWVfZXhuICF0XG5sZXQgaW5jcl9zdGF0ZSB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW5jcl9zdGF0ZSAhdFxuXG5sZXQgb25fdXBkYXRlX2V4biB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2V4biAhdCBvbl91cGRhdGVfaGFuZGxlclxuOztcbiIsIigqIFtTdGF0ZV0gZGVmaW5lcyB0aGUgZ2xvYmFsIHN0YXRlIG9mIHdoaWNoIHRoZXJlIGlzIG9uZSBpbnN0YW5jZSBmb3IgZWFjaCBjYWxsIHRvXG4gICBbSW5jcmVtZW50YWwuTWFrZV0uXG5cbiAgIFRoaXMgbW9kdWxlIGRvZXMgbm90IGhhdmUgYW4gbWxpIGJlY2F1c2UgaXQgd291bGQgZXNzZW50aWFsbHkgZHVwbGljYXRlXG4gICBbSW5jcmVtZW50YWwuU10sIGV4Y2VwdCBhZGRpbmcgYW4gZXh0cmEgW1N0YXRlLnRdIGFyZ3VtZW50IHRvIGZ1bmN0aW9ucy4gKilcblxub3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5cbnR5cGUgc3RhdHVzID0gVHlwZXMuU3RhdHVzLnQgPVxuICB8IFN0YWJpbGl6aW5nXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnNcbiAgfCBOb3Rfc3RhYmlsaXppbmdcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgTm9kZV91cGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG5tb2R1bGUgUnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5SdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgPSBUIDogJ2EgTm9kZS50ICogJ2EgTm9kZV91cGRhdGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCAoVCAobm9kZSwgX25vZGVfdXBkYXRlKSBhcyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+IE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPbmx5X2luX2RlYnVnID0gc3RydWN0XG4gICgqIEV4dHJhIHN0YXRlIGtlcHQgb25seSB3aGVuIFtkZWJ1Z10gZm9yIHRoZSBwdXJwb3NlIG9mIHdyaXRpbmcgYXNzZXJ0aW9ucy4gKilcbiAgdHlwZSB0ID0gVHlwZXMuT25seV9pbl9kZWJ1Zy50ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+Y3VycmVudGx5X3J1bm5pbmdfbm9kZTppZ25vcmVcbiAgICAgICAgfmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgeyBjdXJyZW50bHlfcnVubmluZ19ub2RlID0gTm9uZTsgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlID0gW10gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQYWNrZWRfd2Vha19oYXNodGJsID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLlBhY2tlZF93ZWFrX2hhc2h0YmwudCA9IFQgOiAoXywgXykgV2Vha19oYXNodGJsLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlN0YXRlLnQgPVxuICB7IG11dGFibGUgc3RhdHVzIDogc3RhdHVzXG4gIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgOyAoKiBbc3RhYmlsaXphdGlvbl9udW1dIHN0YXJ0cyBhdCB6ZXJvLCBhbmQgaXMgaW5jcmVtZW50ZWQgYXQgdGhlIGVuZCBvZiBlYWNoXG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBtdXRhYmxlIHN0YWJpbGl6YXRpb25fbnVtIDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgY3VycmVudF9zY29wZSA6IFNjb3BlLnRcbiAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwIDogQWRqdXN0X2hlaWdodHNfaGVhcC50XG4gIDsgKCogW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSBob2xkcyBub2RlcyB0aGF0IGhhdmUgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHNob3VsZCBiZVxuICAgICAgIGNvbnNpZGVyZWQgZm9yIGludmFsaWRhdGlvbi4gIEl0IGlzIG9ubHkgdXNlZCBkdXJpbmcgZ3JhcGggcmVzdHJ1Y3R1cmluZzpcbiAgICAgICBbaW52YWxpZGF0ZV9ub2RlXSBhbmQgW2FkZF9wYXJlbnRdLiAgT25jZSBhbiBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSBzdGFjaywgd2UgdGhlblxuICAgICAgIGl0ZXJhdGUgdW50aWwgaW52YWxpZGl0eSBoYXMgcHJvcGFnYXRlZCB0byBhbGwgYW5jZXN0b3JzIGFzIG5lY2Vzc2FyeSwgYWNjb3JkaW5nIHRvXG4gICAgICAgW05vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkXS4gKilcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtudW1fYWN0aXZlX29ic2VydmVyc10gaXMgdGhlIG51bWJlciBvZiBvYnNlcnZlcnMgd2hvc2Ugc3RhdGUgaXMgW0NyZWF0ZWRdIG9yXG4gICAgICAgW0luX3VzZV0uICopXG4gICAgbXV0YWJsZSBudW1fYWN0aXZlX29ic2VydmVycyA6IGludFxuICA7ICgqIFthbGxfb2JzZXJ2ZXJzXSBpcyB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGFsbCBvYnNlcnZlcnMgaW4gZWZmZWN0LCBvciB0aGF0IGhhdmVcbiAgICAgICBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3QgcmVjZW50IHN0YXJ0IG9mIGEgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlXG4gICAgICAgW3N0YXRlXSBhcyBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgbXV0YWJsZSBhbGxfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gIDsgKCogV2UgZW5xdWV1ZSBmaW5hbGl6ZWQgb2JzZXJ2ZXJzIGluIGEgdGhyZWFkLXNhZmUgcXVldWUsIGZvciBoYW5kbGluZyBkdXJpbmdcbiAgICAgICBzdGFiaWxpemF0aW9uLiAgV2UgdXNlIGEgdGhyZWFkLXNhZmUgcXVldWUgYmVjYXVzZSBPQ2FtbCBmaW5hbGl6ZXJzIGNhbiBydW4gaW4gYW55XG4gICAgICAgdGhyZWFkLiAqKVxuICAgIGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgKCogW25ld19vYnNlcnZlcnNdIGhvbGRzIG9ic2VydmVycyBjcmVhdGVkIHNpbmNlIHRoZSBtb3N0IHJlY2VudCBzdGFydCBvZiBhXG4gICAgICAgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlIFtzdGF0ZV0gYXMgW0NyZWF0ZWRdIG9yIFtVbmxpbmtlZF0uICBBdCB0aGUgc3RhcnQgb2ZcbiAgICAgICBzdGFiaWxpemF0aW9uLCB3ZSBsaW5rIGludG8gW2FsbF9vYnNlcnZlcnNdIGFsbCBvYnNlcnZlcnMgaW4gW25ld19vYnNlcnZlcnNdIHdob3NlXG4gICAgICAgc3RhdGUgaXMgW0NyZWF0ZWRdIGFuZCBhZGQgdGhlbSB0byB0aGUgW29ic2VydmVyc10gb2YgdGhlIG5vZGUgdGhleSBhcmUgb2JzZXJ2aW5nLlxuICAgICAgIFdlIHN0cnVjdHVyZSB0aGluZ3MgdGhpcyB3YXkgdG8gYWxsb3cgb2JzZXJ2ZXJzIHRvIGJlIGNyZWF0ZWQgZHVyaW5nIHN0YWJpbGl6YXRpb25cbiAgICAgICB3aGlsZSBydW5uaW5nIHVzZXIgY29kZSAoW21hcF0sIFtiaW5kXSwgZXRjKSwgYnV0IHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aCBub2Rlc1xuICAgICAgIGJlY29taW5nIG5lY2Vzc2FyeSBhbmQgdGhlIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIG5ld19vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzXSBob2xkcyBhbGwgb2JzZXJ2ZXJzIHRoYXQgaGF2ZSBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgc3RhcnQgb2YgYSBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmUgW3N0YXRlID0gRGlzYWxsb3dlZF0uICBBdCB0aGUgc3RhcnRcbiAgICAgICBvZiBzdGFiaWxpemF0aW9uLCB0aGVzZSBhcmUgdW5saW5rZWQgZnJvbSBbYWxsX29ic2VydmVyc10gYW5kIHRoZWlyIHN0YXRlIGlzXG4gICAgICAgY2hhbmdlZCB0byBbVW5saW5rZWRdLiAgV2Ugc3RydWN0dXJlIHRoaW5ncyB0aGlzIHdheSB0byBhbGxvdyB1c2VyIGNvZGUgcnVubmluZ1xuICAgICAgIGR1cmluZyBzdGFiaWxpemF0aW9uIHRvIGNhbGwgW2Rpc2FsbG93X2Z1dHVyZV91c2VdLCBidXQgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoXG4gICAgICAgbm9kZXMgYmVjb21pbmcgdW5uZWNlc3NhcnkgYW5kIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIGRpc2FsbG93ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFdlIGRlbGF5IGFsbCBbVmFyLnNldF0gY2FsbHMgdGhhdCBoYXBwZW4gZHVyaW5nIHN0YWJpbGl6YXRpb24gc28gdGhhdCB0aGV5IHRha2VcbiAgICAgICBlZmZlY3QgYWZ0ZXIgc3RhYmlsaXphdGlvbi4gIEFsbCB2YXJpYWJsZXMgc2V0IGR1cmluZyBzdGFiaWxpemF0aW9uIGFyZSBwdXNoZWQgb25cbiAgICAgICBbc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXSByYXRoZXIgdGhhbiBzZXR0aW5nIHRoZW0uICBUaGVuLCBhZnRlciB0aGUgZ3JhcGggaGFzXG4gICAgICAgc3RhYmlsaXplZCwgd2UgZG8gYWxsIHRoZSBzZXRzLCBzbyB0aGF0IHRoZXkgdGFrZSBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0gaGFzIGFsbCBub2RlcyB3aXRoIGhhbmRsZXJzIHRvIGNvbnNpZGVyIHJ1bm5pbmcgYXQgdGhlXG4gICAgICAgZW5kIG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICBBdCB0aGUgZW5kIG9mIHN0YWJpbGl6YXRpb24sIHdlIGNvbnNpZGVyIGVhY2ggbm9kZVxuICAgICAgIGluIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0sIGFuZCBpZiB3ZSBkZWNpZGUgdG8gcnVuIGl0cyBvbi11cGRhdGUgaGFuZGxlcnMsXG4gICAgICAgcHVzaCBpdCBvbiBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10uICBUaGVuLCBvbmNlIHdlJ3ZlIGNvbnNpZGVyZWQgYWxsIG5vZGVzIGluXG4gICAgICAgW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSwgd2UgaXRlcmF0ZSB0aHJvdWdoIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXSBhbmRcbiAgICAgICBhY3R1YWxseSBydW4gdGhlIGhhbmRsZXJzLlxuXG4gICAgICAgVGhlc2UgdHdvIHBhc3NlcyBhcmUgZXNzZW50aWFsIGZvciBjb3JyZWN0bmVzcy4gIER1cmluZyB0aGUgZmlyc3QgcGFzcywgd2UgaGF2ZW4ndFxuICAgICAgIHJ1biBhbnkgdXNlciBoYW5kbGVycywgc28gd2Uga25vdyB0aGF0IHRoZSBzdGF0ZSBpcyBleGFjdGx5IGFzIGl0IHdhcyB3aGVuXG4gICAgICAgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIEluIHBhcnRpY3VsYXIsIHdlIGtub3cgdGhhdCBpZiBhIG5vZGUgaXMgbmVjZXNzYXJ5LCB0aGVuXG4gICAgICAgaXQgaGFzIGEgc3RhYmxlIHZhbHVlOyBvbmNlIHVzZXIgaGFuZGxlcnMgcnVuLCB3ZSBkb24ndCBrbm93IHRoaXMuICBEdXJpbmcgdGhlXG4gICAgICAgc2Vjb25kIHBhc3MsIHVzZXIgaGFuZGxlcnMgY2FuIG1ha2UgY2FsbHMgdG8gYW55IGluY3JlbWVudGFsIGZ1bmN0aW9uIGV4Y2VwdCBmb3JcbiAgICAgICBbc3RhYmlsaXplXS4gIEluIHBhcnRpY3VsYXIsIHNvbWUgZnVuY3Rpb25zIHB1c2ggbm9kZXMgb25cbiAgICAgICBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAgQnV0IG5vIGZ1bmN0aW9ucyAoZXhjZXB0IGZvciBbc3RhYmlsaXplXSkgbW9kaWZ5XG4gICAgICAgW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdLiAqKVxuICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCBTdGFjay50XG4gIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gIDsgd2Vha19oYXNodGJscyA6IFBhY2tlZF93ZWFrX2hhc2h0YmwudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIDogYm9vbFxuICA7ICgqIFN0YXRzLiAgVGhlc2UgYXJlIGFsbCBpbmNyZW1lbnRlZCBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2UsIGFuZCBuZXZlciBkZWNyZW1lbnRlZC4gKilcbiAgICBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2NyZWF0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19pbnZhbGlkYXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbm1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DbG9jay50ID1cbiAgICB7ICgqIFdlIHVzZSBbdGltaW5nX3doZWVsXSBmb3IgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMuICBbbm93XSBpcyBhIHZhcmlhYmxlIGhvbGRpbmdcbiAgICAgICAgIHRoZSBjdXJyZW50IHRpbWUuICBbaGFuZGxlX2ZpcmVkXSBpcyB0aGUgY2xvc3VyZSBwYXNzZWQgdG9cbiAgICAgICAgIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10uICBJdCBsaW5rcyBhbGwgdGhlIGZpcmVkIGFsYXJtIHZhbHVlcyBpbnRvXG4gICAgICAgICBbZmlyZWRfYWxhcm1fdmFsdWVzXS4gIEFmdGVyIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10gcmV0dXJucywgaXQgdGhlblxuICAgICAgICAgd2Fsa3MgdGhyb3VnaCB0aGUgbGlua2VkIGxpc3QgYW5kIGFjdHVhbGx5IGZpcmVzIHRoZW0uICBUaGlzIHR3by1wYXNzIGFwcHJvYWNoIGlzXG4gICAgICAgICBuZWNlc3NhcnkgYmVjYXVzZSBvbmUgaXMgbm90IGFsbG93ZWQgdG8gY2FsbCBbVGltaW5nX3doZWVsXSBmdW5jdGlvbnMgZnJvbSB0aGVcbiAgICAgICAgIFtoYW5kbGVfZmlyZWRdIHRoYXQgb25lIHBhc3NlcyB0byBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgdGltaW5nX3doZWVsIDogQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbm93IDogVGltZV9ucy50IFZhci50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBBbGFybS50IC0+IHVuaXRcbiAgICA7IG11dGFibGUgZmlyZWRfYWxhcm1fdmFsdWVzIDogQWxhcm1fdmFsdWUudCBVb3B0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bm93OlxuICAgICAgICAgIChjaGVjayAoZnVuIChub3cgOiBfIFZhci50KSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy5lcXVhbCBub3cudmFsdWUgKFRpbWluZ193aGVlbC5ub3cgdC50aW1pbmdfd2hlZWwpKSkpXG4gICAgICAgIH5oYW5kbGVfZmlyZWQ6aWdub3JlXG4gICAgICAgIH5maXJlZF9hbGFybV92YWx1ZXM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyZWRfYWxhcm1fdmFsdWVzIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIGZpcmVkX2FsYXJtX3ZhbHVlcykpKVxuICAgICAgICB+dGltaW5nX3doZWVsOihjaGVjayAoVGltaW5nX3doZWVsLmludmFyaWFudCBBbGFybV92YWx1ZS5pbnZhcmlhbnQpKSlcbiAgOztcblxuICBsZXQgaW5jcl9zdGF0ZSB0ID0gVmFyLmluY3Jfc3RhdGUgdC5ub3dcbmVuZFxuXG5sZXQgbm93IChjbG9jayA6IENsb2NrLnQpID0gY2xvY2subm93LnZhbHVlXG5sZXQgdGltaW5nX3doZWVsX2xlbmd0aCAoY2xvY2sgOiBDbG9jay50KSA9IFRpbWluZ193aGVlbC5sZW5ndGggY2xvY2sudGltaW5nX3doZWVsXG5sZXQgbnVtX3N0YWJpbGl6ZXMgdCA9IFN0YWJpbGl6YXRpb25fbnVtLnRvX2ludCB0LnN0YWJpbGl6YXRpb25fbnVtXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbmxldCBtYXhfaGVpZ2h0X3NlZW4gdCA9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuXG5sZXQgaXRlcl9vYnNlcnZlcnMgdCB+ZiA9XG4gIGxldCByID0gcmVmIHQuYWxsX29ic2VydmVycyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLm5leHRfaW5fYWxsIG9ic2VydmVyO1xuICAgIGYgb2JzZXJ2ZXJcbiAgZG9uZVxuOztcblxubGV0IGRpcmVjdGx5X29ic2VydmVkIHQgPVxuICBsZXQgciA6IE5vZGUuUGFja2VkLnQgbGlzdCByZWYgPSByZWYgW10gaW5cbiAgaXRlcl9vYnNlcnZlcnMgdCB+ZjooZnVuIChUIGludGVybmFsX29ic2VydmVyKSAtPlxuICAgIHIgOj0gVCBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgOjogIXIpO1xuICAhclxuOztcblxubGV0IHNhdmVfZG90IHQgb3V0ID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3Qgb3V0IChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IHNhdmVfZG90X3RvX2ZpbGUgdCBmaWxlID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZiA9IE5vZGUuUGFja2VkLml0ZXJfZGVzY2VuZGFudHMgKGRpcmVjdGx5X29ic2VydmVkIHQpIH5mXG5cbm1vZHVsZSBTdGF0cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWF4X251bV9wYXJlbnRzIDogaW50XG4gICAgOyBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzIDogKGludCAqIFBlcmNlbnQudCkgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5sZXQgc3RhdHMgdCA9XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSByZWYgKC0xKSBpblxuICBsZXQgbnVtX25lY2Vzc2FyeV9ub2RlcyA9IHJlZiAwIGluXG4gIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgaW5jciBudW1fbmVjZXNzYXJ5X25vZGVzO1xuICAgIG1heF9udW1fcGFyZW50cyA6PSBJbnQubWF4ICFtYXhfbnVtX3BhcmVudHMgbm9kZS5udW1fcGFyZW50cyk7XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSAhbWF4X251bV9wYXJlbnRzIGluXG4gIGxldCBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMgPSBBcnJheS5jcmVhdGUgfmxlbjoobWF4X251bV9wYXJlbnRzICsgMSkgMCBpblxuICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgIGxldCBudW1fcGFyZW50cyA9IG5vZGUubnVtX3BhcmVudHMgaW5cbiAgICBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSA8LSBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSArIDEpO1xuICBsZXQgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyA9XG4gICAgQXJyYXkuZm9sZGkgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzIH5pbml0OltdIH5mOihmdW4gaSBhYyBudW1fbm9kZXMgLT5cbiAgICAgIGlmIG51bV9ub2RlcyA9IDBcbiAgICAgIHRoZW4gYWNcbiAgICAgIGVsc2UgKGksIFBlcmNlbnQub2ZfbXVsdCAoZmxvYXQgbnVtX25vZGVzIC8uIGZsb2F0ICFudW1fbmVjZXNzYXJ5X25vZGVzKSkgOjogYWMpXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgeyBTdGF0cy5tYXhfbnVtX3BhcmVudHM7IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgfVxuOztcblxubGV0IGFtX3N0YWJpbGl6aW5nIHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyAtPiB0cnVlXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+IGZhbHNlXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBSYWlzZWRfZXhuLnJlcmFpc2Vfd2l0aF9tZXNzYWdlXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBcImNhbm5vdCBjYWxsIGFtX3N0YWJpbGl6aW5nIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG47O1xuXG5sZXQgaW52YXJpYW50IHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gKClcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICAgICAgKG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT5cbiAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgIFwibWVtYmVyIG9mIGFsbF9vYnNlcnZlcnMgd2l0aCB1bmV4cGVjdGVkIHN0YXRlXCJcbiAgICAgICAgICAgICBpbnRlcm5hbF9vYnNlcnZlclxuICAgICAgICAgICAgIFslc2V4cF9vZjogXyBJbnRlcm5hbF9vYnNlcnZlci50XSk7XG4gICAgICAgIEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpZ25vcmUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoYW1fc3RhYmlsaXppbmcgdCkgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLm9sZF92YWx1ZV9vcHQpO1xuICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcCkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgID0gUmVjb21wdXRlX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXApO1xuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfnN0YXR1czppZ25vcmVcbiAgICAgICAgfmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHM6aWdub3JlXG4gICAgICAgIH5zdGFiaWxpemF0aW9uX251bTooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgICB+Y3VycmVudF9zY29wZTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X3Njb3BlIC0+IGFzc2VydCAocGh5c19lcXVhbCBjdXJyZW50X3Njb3BlIFNjb3BlLnRvcCkpKVxuICAgICAgICB+cmVjb21wdXRlX2hlYXA6KGNoZWNrIFJlY29tcHV0ZV9oZWFwLmludmFyaWFudClcbiAgICAgICAgfmFkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICAgIGFzc2VydCAoQWRqdXN0X2hlaWdodHNfaGVhcC5sZW5ndGggYWRqdXN0X2hlaWdodHNfaGVhcCA9IDApO1xuICAgICAgICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuaW52YXJpYW50IGFkanVzdF9oZWlnaHRzX2hlYXApKVxuICAgICAgICB+cHJvcGFnYXRlX2ludmFsaWRpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gcHJvcGFnYXRlX2ludmFsaWRpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHByb3BhZ2F0ZV9pbnZhbGlkaXR5KSkpXG4gICAgICAgIH5udW1fYWN0aXZlX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fYWN0aXZlX29ic2VydmVycyAtPiBhc3NlcnQgKG51bV9hY3RpdmVfb2JzZXJ2ZXJzID49IDApKSlcbiAgICAgICAgfmFsbF9vYnNlcnZlcnM6aWdub3JlXG4gICAgICAgIH5maW5hbGl6ZWRfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+bmV3X29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgICgqIFdoZW4gYW4gb2JzZXJ2ZXIgaXMgYWRkZWQgdG8gW25ld19vYnNlcnZlcnNdLCBpdCBoYXMgW3N0YXRlID0gQ3JlYXRlZF0uXG4gICAgICAgICAgICAgICAgICAgVGhlIG9ubHkgcG9zc2libGUgdHJhbnNpdGlvbnMgZnJvbSB0aGVyZSBhcmUgdG8gW1VubGlua2VkXSBvciB0b1xuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdLCB3aGljaCBhbHNvIHJlbW92ZXMgaXQgZnJvbSBbbmV3X29ic2VydmVyc10sIG5ldmVyIHRvIGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgICAgYWdhaW4uICBUaHVzIGl0IGlzIGltcG9zc2libGUgZm9yIGFuIG9ic2VydmVyIGluIFtuZXdfb2JzZXJ2ZXJzXSB0byBiZVxuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5kaXNhbGxvd2VkX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgICAgfnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbjpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gLT5cbiAgICAgICAgICAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbilcbiAgICAgICAgICAgICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBTdGFjay5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgICAgKGZ1biAoVmFyLlBhY2tlZC5UIHZhcikgLT5cbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgICAgICAgICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgIH5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjooY2hlY2sgKFN0YWNrLmludmFyaWFudCBOb2RlLlBhY2tlZC5pbnZhcmlhbnQpKVxuICAgICAgICB+cnVuX29uX3VwZGF0ZV9oYW5kbGVyczooY2hlY2sgKFN0YWNrLmludmFyaWFudCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLmludmFyaWFudCkpXG4gICAgICAgIH5vbmx5X2luX2RlYnVnOihjaGVjayBPbmx5X2luX2RlYnVnLmludmFyaWFudClcbiAgICAgICAgfndlYWtfaGFzaHRibHM6aWdub3JlXG4gICAgICAgIH5rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV9uZWNlc3Nhcnk6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NoYW5nZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfY3JlYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19pbnZhbGlkYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQ6aWdub3JlXG4gICAgICAgIH5udW1fdmFyX3NldHM6aWdub3JlKVxuOztcblxubGV0IGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZSB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICBpZiBub3QgYWxsb3dfaW5fdXBkYXRlX2hhbmRsZXJcbiAgICB0aGVuIChcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgb24tdXBkYXRlIGhhbmRsZXJzXCIgbmFtZSlcbiAgICAgICAgYmFja3RyYWNlXG4gICAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdKVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgLS0gc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCIgbmFtZSlcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgc3RhYmlsaXphdGlvblwiIG5hbWUpXG4gICAgICBiYWNrdHJhY2VcbiAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdXG47O1xuXG5sZXQgc2V0X2hlaWdodCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgQWRqdXN0X2hlaWdodHNfaGVhcC5zZXRfaGVpZ2h0IHQuYWRqdXN0X2hlaWdodHNfaGVhcCBub2RlIGhlaWdodFxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBoZWlnaHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgaGVpZ2h0O1xuICBSZWNvbXB1dGVfaGVhcC5zZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXAgaGVpZ2h0XG47O1xuXG5sZXQgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBub3Qgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvblxuICB0aGVuIChcbiAgICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIHRydWU7XG4gICAgU3RhY2sucHVzaCB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIChUIG5vZGUpKVxuOztcblxubGV0IHJlYyByZW1vdmVfY2hpbGRyZW4gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gcGFyZW50IC0+XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gcGFyZW50IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgcmVtb3ZlX2NoaWxkIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleClcblxuYW5kIHJlbW92ZV9jaGlsZCA6IHR5cGUgYSBiLiBjaGlsZDpiIE5vZGUudCAtPiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGNoaWxkXG5cbmFuZCBjaGVja19pZl91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+IGlmIG5vdCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSkgdGhlbiBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZVxuXG5hbmQgYmVjYW1lX3VubmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgbm9kZS5oZWlnaHQgPC0gLTE7XG4gIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBVbm9yZGVyZWRfYXJyYXlfZm9sZC5mb3JjZV9mdWxsX2NvbXB1dGUgdVxuICAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6ZmFsc2VcbiAgIHwgXyAtPiAoKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpO1xuICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtIChjbG9jayA6IENsb2NrLnQpIGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbiAgdGhlbiBUaW1pbmdfd2hlZWwucmVtb3ZlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybVxuOztcblxuKCogQW4gaW52YWxpZCBub2RlIGlzIG5vZGUgd2hvc2Uga2luZCBpcyBbSW52YWxpZF0uICBBIG5vZGUncyBraW5kIGlzIHNldCB0byBbSW52YWxpZF1cbiAgIHdoZW4gdGhlIGxocyBvZiBpdHMgc2NvcGUgY2hhbmdlcywgb3Igb25lIGlmIGl0cyBjaGlsZHJlbiBwcm9wYWdhdGUgdGhlIGludmFsaWRpdHlcbiAgIHVwd2FyZCAoc2VlIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0gdG8gc2VlIGluIHdoaWNoIGNhc2UgaW52YWxpZGl0eSBwcm9wYWdhdGlvblxuICAgc3RvcHMpLiAgSW52YWxpZGF0aW5nIGEgbm9kZSBkaXNjb25uZWN0cyBpdCBmcm9tIGl0cyBjaGlsZHJlbiwgd2hpY2ggbWVhbnM6XG5cbiAgIDEuIGFuIGludmFsaWQgbm9kZSBjYW5ub3QgZW5kIHVwIG9uIHRoZSBzY2hlZHVsZXIgKGlmIGl0IGlzIG9uIHRoZSBzY2hlZHVsZXIgd2hlblxuICAgaXQgaXMgaW52YWxpZGF0ZWQsIGl0IGlzIHJlbW92ZWQpXG4gICAyLiBhbiBpbnZhbGlkIG5vZGUgZG9lc24ndCBtYWtlIGl0cyBjaGlsZHJlbiBuZWNlc3NhcnkgYW55bW9yZS5cblxuICAgSW52YWxpZCBub2RlcyB1c3VhbGx5IGhhdmUgbm8gcGFyZW50cywgYmVjYXVzZSB0aGUgdXB3YXJkIGludmFsaWRpdHkgcHJvcGFnYXRpb24gbWVhbnNcbiAgIHRoYXQgdGhlaXIgcGFyZW50cyB3aWxsIHRoZW1zZWx2ZXMgYmVjb21lIGludmFsaWQgYW5kIGRpc2Nvbm5lY3QgZnJvbSB0aGVpciBjaGlsZHJlbi5cbiAgIEhvd2V2ZXIsIFtpZl0sIFtqb2luXSBvciBbYmluZF0gYXJlIG5vdCBpbnZhbGlkYXRlZCBieSB0aGUgdXB3YXJkIHByb3BhZ2F0aW9uLCBzbyBhblxuICAgaW52YWxpZCBub2RlIGNhbiBzdGlsbCBoYXZlIHBhcmVudHMuICBJbnZhbGlkIG5vZGVzIGNhbiBiZSBuZWNlc3NhcnksIGluIHRoZSBjYXNlIHdoZXJlXG4gICB0aGV5IGhhdmUgcGFyZW50cywgYW5kIGFsc28gd2hlbiB0aGV5IGFyZSBvYnNlcnZlZC5cblxuICAgVGhlIHVwd2FyZCBwcm9wYWdhdGlvbiBvZiBpbnZhbGlkaXR5IGhhcHBlbnMgYm90aCB3aGVuIGEgbm9kZSBiZWNvbWVzIGludmFsaWQsIGFuZCB3aGVuXG4gICB0cnlpbmcgdG8gYWRkIGFuIGVkZ2UgZnJvbSBhbiBpbnZhbGlkIGNoaWxkIG5vZGUgdG8gYW5vdGhlciBub2RlLiAgQmVjYXVzZSBpbnZhbGlkaXR5XG4gICBpcyBvbmx5IHByb3BhZ2F0ZWQgdXB3YXJkLCBhbmQgYmVjYXVzZSB0aGUgcmhzIG9mIGEgYmluZCBpcyBpbnZhbGlkYXRlZCBiZWZvcmUgaXRcbiAgIGV4ZWN1dGVzLCBhIG5vZGUgY2Fubm90IGJlIGJvdGggY29tcHV0ZWQgYW5kIGludmFsaWRhdGVkIGluIHRoZSBzYW1lIHN0YWJpbGl6YXRpb24uXG5cbiAgIFdoZW4gaW52YWxpZGF0aW5nLCB3ZSBjYW4ndCBhc3N1bWUgbXVjaCBhYm91dCB0aGUgbm9kZXMgd2UgdmlzaXQuICBXZSBjYW5ub3QgYXNzdW1lXG4gICB0aGF0IG5vZGVzIGFyZSB2YWxpZCAodGhlIHJocyBjYW4gY29udGFpbiBwcmV2aW91c2x5IGludmFsaWRhdGVkIG5vZGVzKSwgb3IgdGhhdCBub2Rlc1xuICAgYXJlIHVubmVjZXNzYXJ5IChub2RlcyBjYW4gYmUgbWFkZSBuZWNlc3Nhcnkgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZWlyIGNvbnRhaW5pbmdcbiAgIGJpbmRzKS4gKilcblxubGV0IHJlYyBpbnZhbGlkYXRlX25vZGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGVcbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCA8LSB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCArIDE7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAoKiBUaGUgbm9kZSBkb2Vzbid0IGhhdmUgY2hpbGRyZW4gYW55bW9yZSwgc28gd2UgY2FuIGxvd2VyIGl0cyBoZWlnaHQgYXMgbXVjaCBhc1xuICAgICAgICAgcG9zc2libGUsIHRvIG9uZSBncmVhdGVyIHRoYW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgQWxzbywgYmVjYXVzZSB3ZVxuICAgICAgICAgYXJlIGxvd2VyaW5nIHRoZSBoZWlnaHQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0IGFueSBvZiBpdHMgYW5jZXN0b3JzJyBoZWlnaHRzLlxuICAgICAgICAgV2UgY291bGQgbGVhdmUgdGhlIGhlaWdodCBhbG9uZSwgYnV0IHdlIG1heSBhcyB3ZWxsIGxvd2VyIGl0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlIHRvIGF2b2lkIG1ha2luZyB0aGUgaGVpZ2h0cyBvZiBhbnkgZnV0dXJlIGFuY2VzdG9ycyB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICBsYXJnZS4gKilcbiAgICAgIG5vZGUuaGVpZ2h0IDwtIFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgICAoKiBXZSBkb24ndCBzZXQgW25vZGUuY3JlYXRlZF9pbl0gb3IgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdOyB3ZSBsZWF2ZSBbbm9kZV1cbiAgICAgICBpbiB0aGUgc2NvcGUgaXQgd2FzIGNyZWF0ZWQgaW4uICBJZiB0aGF0IHNjb3BlIGlzIGV2ZXIgaW52YWxpZGF0ZWQsIHRoZW4gdGhhdFxuICAgICAgIHdpbGwgY2xlYXIgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdICopXG4gICAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgIHwgQXQgYXQgLT4gcmVtb3ZlX2FsYXJtIGF0LmNsb2NrIGF0LmFsYXJtXG4gICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiByZW1vdmVfYWxhcm0gYXRfaW50ZXJ2YWxzLmNsb2NrIGF0X2ludGVydmFscy5hbGFybVxuICAgICB8IEJpbmRfbWFpbiBiaW5kIC0+IGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgYWxhcm07IGNsb2NrOyBfIH0gLT4gcmVtb3ZlX2FsYXJtIGNsb2NrIGFsYXJtXG4gICAgIHwgXyAtPiAoKSk7XG4gICAgTm9kZS5zZXRfa2luZCBub2RlIEludmFsaWQ7XG4gICAgKCogSWYgd2UgY2FsbGVkIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gcmlnaHQgYXdheSBvbiB0aGUgcGFyZW50cywgd2Ugd291bGQgZ2V0IGludG9cbiAgICAgICB0cm91YmxlLiAgVGhlIHBhcmVudCB3b3VsZCBkaXNjb25uZWN0IGl0c2VsZiBmcm9tIHRoZSBjdXJyZW50IG5vZGUsIHRodXNcbiAgICAgICBtb2RpZnlpbmcgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgRXZlbiBpZiB3ZSBtYWRlIGEgc3BlY2lhbCBjYXNlLCBpdFxuICAgICAgIHN0aWxsIHdvdWxkbid0IGJlIGVub3VnaCB0byBoYW5kbGUgb3RoZXIgY2FzZXMgd2hlcmUgdGhlIGxpc3Qgb2YgcGFyZW50cyBpc1xuICAgICAgIG1vZGlmaWVkIChlLmcuIHdoZW4gW2xoc10gaXMgaW52YWxpZGF0ZWQgaW4gdGhlIGV4YW1wbGUgaW4gdGhlIGNvbW1lbnQgYWJvdXRcbiAgICAgICBbY2FuX3JlY29tcHV0ZV9ub3ddIGZhciBiZWxvdykuICopXG4gICAgZm9yIGluZGV4ID0gMCB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChOb2RlLmdldF9wYXJlbnQgbm9kZSB+aW5kZXgpXG4gICAgZG9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuXG5hbmQgaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBub2RlID1cbiAgbGV0IHIgPSByZWYgbm9kZSBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxuKCogV2hlbiBbbm90IHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc10gYW5kIGEgYmluZCdzIGxocyBjaGFuZ2VzLCB3ZSBtb3ZlXG4gICBub2RlcyBjcmVhdGVkIG9uIHRoZSBiaW5kJ3MgcmhzIHVwIHRvIGl0cyBwYXJlbnQgYmluZCwgYXMgb3Bwb3NlZCB0byBbU2NvcGUuVG9wXS4gIFRoaXNcbiAgIG1haW50YWlucyB0aGVpciBkZXBlbmRlbmNlIG9uIHZhbGlkIGJpbmQgbGVmdC1oYW5kIHNpZGVzLCBhbmQga2VlcHMgdGhlbSBoaWdoZXIgaW4gdGhlXG4gICBncmFwaC4gIFRoaXMgaW4gdHVybiBtZWFucyB0aGF0IHdlIHdpbGwgY29udGludWUgdG8gY29tcHV0ZSB0aG9zZSBub2RlcyBhZnRlciB0aGVcbiAgIHBhcmVudCBiaW5kJ3MgbGhzLCB3aGljaCBnaXZlcyB0aGVtIG1vcmUgb2YgYSBjaGFuY2UgdG8gYmVjb21lIHVubmVjZXNzYXJ5IGFuZCBub3QgYmVcbiAgIGNvbXB1dGVkIHNob3VsZCB0aGUgcGFyZW50IGJpbmQncyBsaHMgY2hhbmdlLiAqKVxubGV0IHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgX3QgKGZpcnN0X25vZGVfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXdfc2NvcGUgPVxuICBsZXQgciA9IHJlZiBmaXJzdF9ub2RlX29uX3JocyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBub2RlX29uX3Jocy5jcmVhdGVkX2luIDwtIG5ld19zY29wZTtcbiAgICBTY29wZS5hZGRfbm9kZSBuZXdfc2NvcGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxubGV0IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQgPVxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucHJvcGFnYXRlX2ludmFsaWRpdHkpIGRvXG4gICAgbGV0IChUIG5vZGUpID0gU3RhY2sucG9wX2V4biB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IGluXG4gICAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gICAgdGhlblxuICAgICAgaWYgTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWQgbm9kZVxuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGUgbm9kZVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIG5vZGUgaXMgbmVjZXNzYXJ5LiBUaGlzIGlzIGJlY2F1c2UgY2hpbGRyZW4gY2FuIG9ubHkgcG9pbnQgdG8gbmVjZXNzYXJ5XG4gICAgICAgICAgICAgcGFyZW50c1xuICAgICAgICAgICAtIG5vZGUgaXMgc3RhbGUuIFRoaXMgaXMgYmVjYXVzZTogRm9yIGJpbmQsIGlmLCBqb2luLCB0aGlzIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIGVpdGhlciB0aGUgaW52YWxpZGF0aW9uIGlzIGNhdXNlZCBieSB0aGUgbGhzIGNoYW5naW5nIChpbiB3aGljaCBjYXNlIHRoZVxuICAgICAgICAgICAgIGxocy1jaGFuZ2Ugbm9kZSBiZWluZyBuZXdlciBtYWtlcyB1cyBzdGFsZSkuXG4gICAgICAgICAgIC0gb3IgYSBjaGlsZCBiZWNhbWUgaW52YWxpZCB0aGlzIHN0YWJpbGl6YXRpb24gY3ljbGUsIGluIHdoaWNoIGNhc2UgaXQgaGFzXG4gICAgICAgICAgICAgdC5jaGFuZ2VkX2F0IG9mIFt0LnN0YWJpbGl6YXRpb25fbnVtXSwgYW5kIHNvIFtub2RlXSBpcyBzdGFsZVxuICAgICAgICAgICAtIG9yIFtub2RlXSBqdXN0IGJlY2FtZSBuZWNlc3NhcnkgYW5kIHRyaWVkIGNvbm5lY3RpbmcgdG8gYW4gYWxyZWFkeSBpbnZhbGlkXG4gICAgICAgICAgICAgY2hpbGQuIEluIHRoYXQgY2FzZSwgW2NoaWxkLmNoYW5nZWRfYXQgPiBub2RlLnJlY29tcHV0ZWRfYXRdIGZvciB0aGF0IGNoaWxkLFxuICAgICAgICAgICAgIGJlY2F1c2UgaWYgd2UgaGFkIGJlZW4gcmVjb21wdXRlZCB3aGVuIHRoYXQgY2hpbGQgY2hhbmdlZCwgd2Ugd291bGQgaGF2ZSBiZWVuXG4gICAgICAgICAgICAgbWFkZSBpbnZhbGlkIGJhY2sgdGhlbi4gIEZvciBleHBlcnQgbm9kZXMsIHRoZSBhcmd1bWVudCBpcyB0aGUgc2FtZSwgZXhjZXB0XG4gICAgICAgICAgICAgdGhhdCBpbnN0ZWFkIG9mIGxocy1jaGFuZ2Ugbm9kZXMgbWFrZSB0aGUgZXhwZXJ0IG5vZGVzIHN0YWxlLCBpdCdzIG1hZGUgc3RhbGVcbiAgICAgICAgICAgICBleHBsaWNpdGVseSB3aGVuIGFkZGluZyBvciByZW1vdmluZyBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgICgqIElmIG11bHRpcGxlIGNoaWxkcmVuIGFyZSBpbnZhbGlkLCB0aGV5IHdpbGwgcHVzaCB1cyBhcyBtYW55IHRpbWVzIG9uIHRoZVxuICAgICAgICAgICAgICBwcm9wYWdhdGlvbiBzdGFjaywgc28gd2UgY291bnQgdGhlbSByaWdodC4gKilcbiAgICAgICAgICAgRXhwZXJ0LmluY3JfaW52YWxpZF9jaGlsZHJlbiBleHBlcnRcbiAgICAgICAgIHwga2luZCAtPlxuICAgICAgICAgICBpZiBkZWJ1Z1xuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICB8IEJpbmRfbWFpbiBfIHwgSWZfdGhlbl9lbHNlIF8gfCBKb2luX21haW4gXyAtPiAoKVxuICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlICgqIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gYXJlIG5ldmVyIHB1c2hlZCBvbiB0aGUgc3RhY2sgKikpKTtcbiAgICAgICAgKCogV2UgZG8gbm90IGNoZWNrIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGhlcmUsIGJlY2F1c2UgaXQgc2hvdWxkIGJlXG4gICAgICAgICAgIHRydWUsIGFuZCBiZWNhdXNlIGNvbXB1dGluZyBpdCB0YWtlcyBPKG51bWJlciBvZiBjaGlsZHJlbiksIG5vZGUgY2FuIGJlIHB1c2hlZFxuICAgICAgICAgICBvbiB0aGUgc3RhY2sgb25jZSBwZXIgY2hpbGQsIGFuZCBleHBlcnQgbm9kZXMgY2FuIGhhdmUgbG90cyBvZiBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgZG9uZVxuOztcblxuKCogW2FkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB0IH5jaGlsZCB+cGFyZW50XSBhZGRzIFtwYXJlbnRdIGFzIGEgcGFyZW50IG9mXG4gICBbY2hpbGRdLCBhbmQgbWFrZXMgW2NoaWxkXSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBuZWNlc3NhcnksIGVuc3VyaW5nIHRoZWlyIGhlaWdodHNcbiAgIGFyZSBhY2N1cmF0ZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSBhYm91dCB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBbY2hpbGRdIGFuZCBbcGFyZW50XVxuICAgdGhvdWdoLiAqKVxubGV0IHJlYyBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHNcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSBOb2RlLnQgLT4gcGFyZW50OmIgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgbGV0IHQgPSBjaGlsZC5zdGF0ZSBpblxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IGNoaWxkIGluXG4gIE5vZGUuYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGlmIG5vdCAoTm9kZS5pc192YWxpZCBjaGlsZCkgdGhlbiBTdGFjay5wdXNoIHQucHJvcGFnYXRlX2ludmFsaWRpdHkgKFQgcGFyZW50KTtcbiAgaWYgbm90IHdhc19uZWNlc3NhcnkgdGhlbiBiZWNhbWVfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIGUgfmNoaWxkX2luZGV4XG4gIHwgXyAtPiAoKVxuXG5hbmQgYmVjYW1lX25lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gICgqIFtTY29wZS5pc19uZWNlc3Nhcnkgbm9kZS5jcmVhdGVkX2luXSBpcyB0cnVlIChhc3N1bWluZyB0aGUgc2NvcGUgaXRzZWxmIGlzIHZhbGlkKVxuICAgICBiZWNhdXNlIFtOb2RlLml0ZXJfY2hpbGRyZW5dIGJlbG93IGZpcnN0IHZpc2l0cyB0aGUgbGhzLWNoYW5nZSBvZiBiaW5kIG5vZGVzIGFuZFxuICAgICB0aGVuIHRoZSByaHMuICopXG4gIGlmIE5vZGUuaXNfdmFsaWQgbm9kZSAmJiBub3QgKFNjb3BlLmlzX25lY2Vzc2FyeSBub2RlLmNyZWF0ZWRfaW4pXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVHJ5aW5nIHRvIG1ha2UgYSBub2RlIG5lY2Vzc2FyeSB3aG9zZSBkZWZpbmluZyBiaW5kIGlzIG5vdCBuZWNlc3NhcnlcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDwtIHQubnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgKCogU2luY2UgW25vZGVdIGJlY2FtZSBuZWNlc3NhcnksIHRvIHJlc3RvcmUgdGhlIGludmFyaWFudCwgd2UgbmVlZCB0bzpcblxuICAgICAtIGFkZCBwYXJlbnQgcG9pbnRlcnMgdG8gW25vZGVdIGZyb20gaXRzIGNoaWxkcmVuLlxuICAgICAtIHNldCBbbm9kZV0ncyBoZWlnaHQuXG4gICAgIC0gYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAsIGlmIG5lY2Vzc2FyeS4gKilcbiAgc2V0X2hlaWdodCBub2RlIChTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gbm9kZSB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDtcbiAgICAoKiBOb3cgdGhhdCBjaGlsZCBpcyBuZWNlc3NhcnksIGl0IHNob3VsZCBoYXZlIGEgdmFsaWQgaGVpZ2h0LiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZC5oZWlnaHQgPj0gMCk7XG4gICAgaWYgY2hpbGQuaGVpZ2h0ID49IG5vZGUuaGVpZ2h0IHRoZW4gc2V0X2hlaWdodCBub2RlIChjaGlsZC5oZWlnaHQgKyAxKSk7XG4gICgqIE5vdyB0aGF0IHRoZSBoZWlnaHQgaXMgY29ycmVjdCwgbWF5YmUgYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAuICBbbm9kZV1cbiAgICAganVzdCBiZWNhbWUgbmVjZXNzYXJ5LCBzbyBpdCBjYW4ndCBoYXZlIGJlZW4gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgU2luY2UgW25vZGVdXG4gICAgIGlzIG5lY2Vzc2FyeSwgd2Ugc2hvdWxkIGFkZCBpdCB0byB0aGUgcmVjb21wdXRlIGhlYXAgaWZmIGl0IGlzIHN0YWxlLiAqKVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpO1xuICBpZiBOb2RlLmlzX3N0YWxlIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEV4cGVydCBwIC0+IEV4cGVydC5vYnNlcnZhYmlsaXR5X2NoYW5nZSBwIH5pc19ub3dfb2JzZXJ2YWJsZTp0cnVlXG4gIHwgXyAtPiAoKVxuOztcblxubGV0IGJlY2FtZV9uZWNlc3Nhcnkgbm9kZSA9XG4gIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZTtcbiAgcHJvcGFnYXRlX2ludmFsaWRpdHkgbm9kZS5zdGF0ZVxuOztcblxubGV0IGFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGxldCB0ID0gcGFyZW50LnN0YXRlIGluXG4gICgqIEluIHRoZSBjYXNlIHdoZW4gdGhlIGVkZ2UgYmVpbmcgYWRkZWQgY3JlYXRlcyBhIGN5Y2xlLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlXG4gICAgIHJlY3Vyc2lvbiBpbiBbYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzXSB0byByZWFjaCBbcGFyZW50XSBhcyBhIGRlc2NlbmRhbnRcbiAgICAgb2YgW2NoaWxkXS4gIEluIHRoYXQgY2FzZSwgdGhlIHJlY3Vyc2lvbiB0ZXJtaW5hdGVzLCBiZWNhdXNlIFtOb2RlLmlzX25lY2Vzc2FyeVxuICAgICBwYXJlbnRdLiAgV2UgdGhlbiByZXR1cm4gaGVyZSBhbmQgc3Vic2VxdWVudGx5IGRldGVjdCB0aGUgY3ljbGUgaW5cbiAgICAgW2FkanVzdF9oZWlnaHRzXS4gKilcbiAgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgKCogV2UgYWRqdXN0IGhlaWdodHMgc28gdGhhdCB3ZSBlbnN1cmUgdGhlcmUgYXJlIG5vIGN5Y2xlcyBiZWZvcmUgY2FsbGluZ1xuICAgICBbcHJvcGFnYXRlX2ludmFsaWRpdHldLiAqKVxuICBpZiBjaGlsZC5oZWlnaHQgPj0gcGFyZW50LmhlaWdodFxuICB0aGVuXG4gICAgQWRqdXN0X2hlaWdodHNfaGVhcC5hZGp1c3RfaGVpZ2h0c1xuICAgICAgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICB0LnJlY29tcHV0ZV9oZWFwXG4gICAgICB+Y2hpbGRcbiAgICAgIH5wYXJlbnQ7XG4gIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQ7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAoKiB3ZSBvbmx5IGFkZCBuZWNlc3NhcnkgcGFyZW50cyAqKVxuICBpZiAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpXG4gICYmIChTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHBhcmVudC5yZWNvbXB1dGVkX2F0XG4gICAgICB8fCBOb2RlLmVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50XG47O1xuXG5sZXQgcnVuX3dpdGhfc2NvcGUgdCBzY29wZSB+ZiA9XG4gIGxldCBzYXZlZCA9IHQuY3VycmVudF9zY29wZSBpblxuICB0LmN1cnJlbnRfc2NvcGUgPC0gc2NvcGU7XG4gIHRyeVxuICAgIGxldCB2ID0gZiAoKSBpblxuICAgIHQuY3VycmVudF9zY29wZSA8LSBzYXZlZDtcbiAgICB2XG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICB0LmN1cnJlbnRfc2NvcGUgPC0gc2F2ZWQ7XG4gICAgcmFpc2UgZXhuXG47O1xuXG5sZXQgd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYgPVxuICBpZiBub3QgKFNjb3BlLmlzX3ZhbGlkIHNjb3BlKVxuICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBydW4gd2l0aGluIGFuIGludmFsaWQgc2NvcGVcIiB0IFslc2V4cF9vZjogdF07XG4gIHJ1bl93aXRoX3Njb3BlIHQgc2NvcGUgfmZcbjs7XG5cbmxldCBjaGFuZ2VfY2hpbGRcbiAgOiB0eXBlIGEgYi5cbiAgICBwYXJlbnQ6YSBOb2RlLnRcbiAgICAtPiBvbGRfY2hpbGQ6YiBOb2RlLnQgVW9wdC50XG4gICAgLT4gbmV3X2NoaWxkOmIgTm9kZS50XG4gICAgLT4gY2hpbGRfaW5kZXg6aW50XG4gICAgLT4gdW5pdFxuICA9XG4gIGZ1biB+cGFyZW50IH5vbGRfY2hpbGQgfm5ld19jaGlsZCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF9jaGlsZFxuICB0aGVuIGFkZF9wYXJlbnQgfmNoaWxkOm5ld19jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleFxuICBlbHNlIChcbiAgICBsZXQgb2xkX2NoaWxkID0gVW9wdC51bnNhZmVfdmFsdWUgb2xkX2NoaWxkIGluXG4gICAgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9jaGlsZCBuZXdfY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSByZW1vdmUgW29sZF9jaGlsZF0gYmVmb3JlIGFkZGluZyBbbmV3X2NoaWxkXSwgYmVjYXVzZSB0aGV5IHNoYXJlIHRoZSBzYW1lXG4gICAgICAgICBjaGlsZCBpbmRleC4gKilcbiAgICAgIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQ6b2xkX2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAgICAgKCogV2UgZm9yY2UgW29sZF9jaGlsZF0gdG8gdGVtcG9yYXJpbHkgYmUgbmVjZXNzYXJ5IHNvIHRoYXQgW2FkZF9wYXJlbnRdIGNhbid0XG4gICAgICAgICBtaXN0YWtlbmx5IHRoaW5rIGl0IGlzIHVubmVjZXNzYXJ5IGFuZCB0cmFuc2l0aW9uIGl0IHRvIG5lY2Vzc2FyeSAod2hpY2ggd291bGRcbiAgICAgICAgIGFkZCBkdXBsaWNhdGUgZWRnZXMgYW5kIGJyZWFrIHRoaW5ncyBob3JyaWJseSkuICopXG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIHRydWU7XG4gICAgICBhZGRfcGFyZW50IH5jaGlsZDpuZXdfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIGZhbHNlO1xuICAgICAgKCogV2UgW2NoZWNrX2lmX3VubmVjZXNzYXJ5XSBhZnRlciBbYWRkX3BhcmVudF0sIHNvIHRoYXQgd2UgZG9uJ3QgdW5uZWNlc3NhcmlseVxuICAgICAgICAgdHJhbnNpdGlvbiBub2RlcyBmcm9tIG5lY2Vzc2FyeSB0byB1bm5lY2Vzc2FyeSBhbmQgdGhlbiBiYWNrIGFnYWluLiAqKVxuICAgICAgY2hlY2tfaWZfdW5uZWNlc3Nhcnkgb2xkX2NoaWxkKSlcbjs7XG5cbmxldCBhZGRfYWxhcm0gY2xvY2sgfmF0IGFsYXJtX3ZhbHVlID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICBUaW1pbmdfd2hlZWwuYWRkIGNsb2NrLnRpbWluZ193aGVlbCB+YXQgYWxhcm1fdmFsdWVcbjs7XG5cbmxldCByZWMgcmVjb21wdXRlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIFNvbWUgKFQgbm9kZSk7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gIHQubnVtX25vZGVzX3JlY29tcHV0ZWQgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZCArIDE7XG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoQXJyYXlfZm9sZC5jb21wdXRlIGFycmF5X2ZvbGQpXG4gIHwgQXQgeyBhdDsgY2xvY2s7IF8gfSAtPlxuICAgICgqIEl0IGlzIGEgYnVnIGlmIHdlIHRyeSB0byBjb21wdXRlIGFuIFtBdF0gbm9kZSBhZnRlciBbYXRdLiAgW2FkdmFuY2VfY2xvY2tdIHdhc1xuICAgICAgIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbQ29uc3RdIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBCZWZvcmVcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZVxuICAgICAgKHsgbWFpblxuICAgICAgIDsgZlxuICAgICAgIDsgbGhzXG4gICAgICAgOyByaHNfc2NvcGVcbiAgICAgICA7IHJocyA9IG9sZF9yaHNcbiAgICAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICA7IF9cbiAgICAgICB9IGFzIGJpbmQpIC0+XG4gICAgKCogV2UgY2xlYXIgW2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc10gc28gaXQgd2lsbCBob2xkIGp1c3QgdGhlIG5vZGVzIGNyZWF0ZWQgYnlcbiAgICAgICB0aGlzIGNhbGwgdG8gW2ZdLiAqKVxuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQubm9uZTtcbiAgICBsZXQgcmhzID0gcnVuX3dpdGhfc2NvcGUgdCByaHNfc2NvcGUgfmY6KGZ1biAoKSAtPiBmIChOb2RlLnZhbHVlX2V4biBsaHMpKSBpblxuICAgIGJpbmQucmhzIDwtIFVvcHQuc29tZSByaHM7XG4gICAgKCogQW50aWNpcGF0ZSB3aGF0IFttYXliZV9jaGFuZ2VfdmFsdWVdIHdpbGwgZG8sIHRvIG1ha2Ugc3VyZSBCaW5kX21haW4gaXMgc3RhbGVcbiAgICAgICByaWdodCBhd2F5LiBUaGlzIHdheSwgaWYgdGhlIG5ldyBjaGlsZCBpcyBpbnZhbGlkLCB3ZSdsbCBzYXRpc2Z5IHRoZSBpbnZhcmlhbnRcbiAgICAgICBzYXlpbmcgdGhhdCBbbmVlZHNfdG9fYmVfY29tcHV0ZWQgYmluZF9tYWluXSBpbiBbcHJvcGFnYXRlX2ludmFsaWRpdHldICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmJpbmRfcmhzX2NoaWxkX2luZGV4O1xuICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfcmhzXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSBpbnZhbGlkYXRlIGFmdGVyIFtjaGFuZ2VfY2hpbGRdLCBiZWNhdXNlIGludmFsaWRhdGlvbiBjaGFuZ2VzIHRoZSBba2luZF0gb2ZcbiAgICAgICAgIG5vZGVzIHRvIFtJbnZhbGlkXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBjYW4gbm8gbG9uZ2VyIHZpc2l0IHRoZWlyIGNoaWxkcmVuLlxuICAgICAgICAgQWxzbywgdGhlIFtvbGRfcmhzXSBub2RlcyBhcmUgdHlwaWNhbGx5IG1hZGUgdW5uZWNlc3NhcnkgYnkgW2NoYW5nZV9jaGlsZF0sIGFuZFxuICAgICAgICAgc28gYnkgaW52YWxpZGF0aW5nIGFmdGVyd2FyZHMsIHdlIHdpbGwgbm90IHdhc3RlIHRpbWUgYWRkaW5nIHRoZW0gdG8gdGhlXG4gICAgICAgICByZWNvbXB1dGUgaGVhcCBhbmQgdGhlbiByZW1vdmluZyB0aGVtLiAqKVxuICAgICAgaWYgdC5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgICB0aGVuIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgZWxzZVxuICAgICAgICByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgICAgdFxuICAgICAgICAgIG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICAgICB+bmV3X3Njb3BlOm1haW4uY3JlYXRlZF9pbjtcbiAgICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQpO1xuICAgICgqIFtub2RlXSB3YXMgdmFsaWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBbQmluZF9saHNfY2hhbmdlXSBicmFuY2gsIGFuZCBpbnZhbGlkYXRpb25cbiAgICAgICBvbmx5IHZpc2l0cyBoaWdoZXIgbm9kZXMsIHNvIFtub2RlXSBpcyBzdGlsbCB2YWxpZC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBub2RlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbWFpbiB7IHJoczsgXyB9IC0+IGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gcmhzKVxuICB8IENvbnN0IGEgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgYVxuICB8IEZyZWV6ZSB7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuOyBfIH0gLT5cbiAgICBsZXQgdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBjaGlsZCBpblxuICAgIGlmIG9ubHlfZnJlZXplX3doZW4gdmFsdWVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgTm9kZS5zZXRfa2luZCBub2RlIChDb25zdCB2YWx1ZSk7XG4gICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIHRoZW4gc2V0X2hlaWdodCBub2RlIDAgZWxzZSBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgdmFsdWVcbiAgfCBJZl90ZXN0X2NoYW5nZSAoeyBtYWluOyBjdXJyZW50X2JyYW5jaDsgdGVzdDsgdGhlbl87IGVsc2VfOyBfIH0gYXMgaWZfdGhlbl9lbHNlKSAtPlxuICAgIGxldCBkZXNpcmVkX2JyYW5jaCA9IGlmIE5vZGUudmFsdWVfZXhuIHRlc3QgdGhlbiB0aGVuXyBlbHNlIGVsc2VfIGluXG4gICAgaWZfdGhlbl9lbHNlLmN1cnJlbnRfYnJhbmNoIDwtIFVvcHQuc29tZSBkZXNpcmVkX2JyYW5jaDtcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6Y3VycmVudF9icmFuY2hcbiAgICAgIH5uZXdfY2hpbGQ6ZGVzaXJlZF9icmFuY2hcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmlmX2JyYW5jaF9jaGlsZF9pbmRleDtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IElmX3RoZW5fZWxzZSB7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIGN1cnJlbnRfYnJhbmNoKVxuICB8IEludmFsaWQgLT5cbiAgICAoKiBXZSBuZXZlciBoYXZlIGludmFsaWQgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwOyB0aGV5IGFyZSBuZXZlciBzdGFsZS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBKb2luX2xoc19jaGFuZ2UgKHsgbGhzOyBtYWluOyByaHMgPSBvbGRfcmhzOyBfIH0gYXMgam9pbikgLT5cbiAgICBsZXQgcmhzID0gTm9kZS52YWx1ZV9leG4gbGhzIGluXG4gICAgam9pbi5yaHMgPC0gVW9wdC5zb21lIHJocztcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmpvaW5fcmhzX2NoaWxkX2luZGV4O1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgSm9pbl9tYWluIHsgcmhzOyBfIH0gLT4gY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biByaHMpXG4gIHwgTWFwIChmLCBuMSkgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSlcbiAgfCBTbmFwc2hvdCB7IGF0OyBiZWZvcmU7IGNsb2NrOyBfIH0gLT5cbiAgICAoKiBJdCBpcyBhIGJ1ZyBpZiB3ZSB0cnkgdG8gY29tcHV0ZSBhIFtTbmFwc2hvdF0gYW5kIHRoZSBhbGFybSBzaG91bGQgaGF2ZSBmaXJlZC5cbiAgICAgICBbYWR2YW5jZV9jbG9ja10gd2FzIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbRnJlZXplXSBhdCB0aGUgYXBwcm9wcmlhdGVcbiAgICAgICB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBiZWZvcmVcbiAgfCBTdGVwX2Z1bmN0aW9uICh7IGNoaWxkOyBjbG9jazsgXyB9IGFzIHN0ZXBfZnVuY3Rpb25fbm9kZSkgLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGRcbiAgICB0aGVuIChcbiAgICAgIGxldCBjaGlsZCA9IFVvcHQudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlXG4gICAgICAgICAgIGNoaWxkLmNoYW5nZWRfYXRcbiAgICAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXRcbiAgICAgICAgID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDwtIGNoaWxkLmNoYW5nZWRfYXQ7XG4gICAgICAgIHJlbW92ZV9hbGFybSBjbG9jayBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm07XG4gICAgICAgIGxldCBzdGVwX2Z1bmN0aW9uID0gTm9kZS52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIDwtIFVvcHQuc29tZSAoU3RlcF9mdW5jdGlvbi5pbml0IHN0ZXBfZnVuY3Rpb24pO1xuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUudXBjb21pbmdfc3RlcHMgPC0gU3RlcF9mdW5jdGlvbi5zdGVwcyBzdGVwX2Z1bmN0aW9uO1xuICAgICAgICAoKiBJZiB0aGUgY2hpbGQgaXMgYSBjb25zdGFudCwgd2UgZHJvcCBvdXIgcmVmZXJlbmNlIHRvIGl0LCB0byBhdm9pZCBob2xkaW5nIG9uIHRvXG4gICAgICAgICAgIHRoZSBlbnRpcmUgc3RlcCBmdW5jdGlvbi4gKilcbiAgICAgICAgaWYgTm9kZS5pc19jb25zdCBjaGlsZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuY2hpbGQgPC0gVW9wdC5ub25lO1xuICAgICAgICAgIHNldF9oZWlnaHQgbm9kZSAoU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpKSkpO1xuICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5hZHZhbmNlIHN0ZXBfZnVuY3Rpb25fbm9kZSB+dG9fOihub3cgY2xvY2spO1xuICAgIGxldCBzdGVwX2Z1bmN0aW9uX3ZhbHVlID0gVW9wdC52YWx1ZV9leG4gc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIGluXG4gICAgKG1hdGNoIFNlcXVlbmNlLmhkIHN0ZXBfZnVuY3Rpb25fbm9kZS51cGNvbWluZ19zdGVwcyB3aXRoXG4gICAgIHwgTm9uZSAtPiBpZiBVb3B0LmlzX25vbmUgY2hpbGQgdGhlbiBOb2RlLnNldF9raW5kIG5vZGUgKENvbnN0IHN0ZXBfZnVuY3Rpb25fdmFsdWUpXG4gICAgIHwgU29tZSAoYXQsIF8pIC0+XG4gICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtIDwtIGFkZF9hbGFybSBjbG9jayB+YXQgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBzdGVwX2Z1bmN0aW9uX3ZhbHVlXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY29tcHV0ZSB1KVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgVmFyIHZhciAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSB2YXIudmFsdWVcbiAgfCBNYXAyIChmLCBuMSwgbjIpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpKVxuICB8IE1hcDMgKGYsIG4xLCBuMiwgbjMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikgKE5vZGUudmFsdWVfZXhuIG4zKSlcbiAgfCBNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSAoTm9kZS52YWx1ZV9leG4gbjMpIChOb2RlLnZhbHVlX2V4biBuNCkpXG4gIHwgTWFwNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSkpXG4gIHwgTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpKVxuICB8IE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNykpXG4gIHwgTWFwOCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOCkpXG4gIHwgTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpKVxuICB8IE1hcDEwIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTApIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMCkpXG4gIHwgTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKSlcbiAgfCBNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpKVxuICB8IE1hcDEzIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMykpXG4gIHwgTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE0KSlcbiAgfCBNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTUpKVxuICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAobWF0Y2ggRXhwZXJ0LmJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIGV4cGVydCB3aXRoXG4gICAgIHwgYEludmFsaWQgLT5cbiAgICAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0XG4gICAgIHwgYE9rIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChleHBlcnQuZiAoKSkpXG5cbmFuZCBjb3B5X2NoaWxkIDogdHlwZSBhLiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGQ6YSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biB+cGFyZW50IH5jaGlsZCAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIGNoaWxkXG4gIHRoZW4gbWF5YmVfY2hhbmdlX3ZhbHVlIHBhcmVudCAoTm9kZS52YWx1ZV9leG4gY2hpbGQpXG4gIGVsc2UgKFxuICAgIGludmFsaWRhdGVfbm9kZSBwYXJlbnQ7XG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgcGFyZW50LnN0YXRlKVxuXG5hbmQgbWF5YmVfY2hhbmdlX3ZhbHVlIDogdHlwZSBhLiBhIE5vZGUudCAtPiBhIC0+IHVuaXQgPVxuICBmdW4gbm9kZSBuZXdfdmFsdWUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGxldCBvbGRfdmFsdWVfb3B0ID0gbm9kZS52YWx1ZV9vcHQgaW5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF92YWx1ZV9vcHRcbiAgfHwgbm90XG4gICAgICAgKEN1dG9mZi5zaG91bGRfY3V0b2ZmXG4gICAgICAgICAgbm9kZS5jdXRvZmZcbiAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnVuc2FmZV92YWx1ZSBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgIH5uZXdfdmFsdWUpXG4gIHRoZW4gKFxuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQuc29tZSBuZXdfdmFsdWU7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfY2hhbmdlZCA8LSB0Lm51bV9ub2Rlc19jaGFuZ2VkICsgMTtcbiAgICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gb2xkX3ZhbHVlX29wdDtcbiAgICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGUpO1xuICAgIGlmIG5vZGUubnVtX3BhcmVudHMgPj0gMVxuICAgIHRoZW4gKFxuICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBub2RlLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAgICAgICAgbGV0IGNoaWxkX2luZGV4ID0gbm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgaW5cbiAgICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBleHBlcnRcbiAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPlxuICAgICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgICAgdVxuICAgICAgICAgICAgIH5jaGlsZDpub2RlXG4gICAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpXG4gICAgICAgICAgICAgfm9sZF92YWx1ZV9vcHRcbiAgICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgICAoKiBXZSBkb24ndCBkbyB0aGUgW2Nhbl9yZWNvbXB1dGVfbm93XSBvcHRpbWl6YXRpb24uICBTaW5jZSBtb3N0IG5vZGVzIG9ubHkgaGF2ZVxuICAgICAgICAgICBvbmUgcGFyZW50LCBpdCBpcyBub3QgcHJvYmFibHkgbm90IGEgYmlnIGxvc3MuICBJZiB3ZSBkaWQgaXQgYW55d2F5LCB3ZSdkXG4gICAgICAgICAgIGhhdmUgdG8gYmUgY2FyZWZ1bCwgYmVjYXVzZSB3aGlsZSB3ZSBpdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcGFyZW50cywgd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGVtLCBhbmQgaW4gcGFydGljdWxhciB3ZSBjYW4gZXhlY3V0ZSBsaHMtY2hhbmdlIG5vZGVzIHdobyBjYW5cbiAgICAgICAgICAgY2hhbmdlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgVGhpbmsgYWJvdXQ6XG5cbiAgICAgICAgICAge1tcbiAgICAgICAgICAgICBsaHMgPj49IGZ1biBiIC0+IGlmIGIgdGhlbiBsaHMgPj58IEZuLmlkIGVsc2UgY29uc3QgYlxuICAgICAgICAgICBdfVxuXG4gICAgICAgICAgIElmIHRoZSBvcHRpbWl6YXRpb24ga2lja3MgaW4gd2hlbiB3ZSBwcm9wYWdhdGUgY2hhbmdlIHRvIHRoZSBwYXJlbnRzIG9mIFtsaHNdXG4gICAgICAgICAgICh3aGljaCBjaGFuZ2VzIGZyb20gW3RydWVdIHRvIFtmYWxzZV0pLCB3ZSBjb3VsZCBleGVjdXRlIHRoZSBbbGhzLWNoYW5nZV1cbiAgICAgICAgICAgZmlyc3QsIHdoaWNoIHdvdWxkIG1ha2UgZGlzY29ubmVjdCB0aGUgW21hcF0gbm9kZSBmcm9tIFtsaHNdLiAgQW5kIHRoZW4gd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGUgc2Vjb25kIGNoaWxkIG9mIHRoZSBbbGhzXSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnltb3JlIGFuZFxuICAgICAgICAgICBpbmNyZW1lbnRhbCB3b3VsZCBzZWdmYXVsdCAodGhlcmUgbWF5IGJlIGEgbGVzcyBuYWl2ZSB3YXkgb2YgbWFraW5nIHRoaXMgd29ya1xuICAgICAgICAgICB0aG91Z2gpLiAqKVxuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudFxuICAgICAgZG9uZTtcbiAgICAgIGxldCAoVCBwYXJlbnQpID0gVW9wdC52YWx1ZV9leG4gbm9kZS5wYXJlbnQwIGluXG4gICAgICAobWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgIHwgRXhwZXJ0IHAgLT5cbiAgICAgICAgIGxldCBjaGlsZF9pbmRleCA9IG5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKSBpblxuICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBwXG4gICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+XG4gICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgIHVcbiAgICAgICAgICAgfmNoaWxkOm5vZGVcbiAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKVxuICAgICAgICAgICB+b2xkX3ZhbHVlX29wdFxuICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgfCBfIC0+ICgpKTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjYW5fcmVjb21wdXRlX25vdyA9XG4gICAgICAgICAgbWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBhcmVuJ3QgcGFyZW50cy4gKilcbiAgICAgICAgICB8IEF0IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBBdF9pbnRlcnZhbHMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IENvbnN0IF8gfCBJbnZhbGlkIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGlsZC4gKilcbiAgICAgICAgICB8IEFycmF5X2ZvbGQgX1xuICAgICAgICAgIHwgTWFwMiBfXG4gICAgICAgICAgfCBNYXAzIF9cbiAgICAgICAgICB8IE1hcDQgX1xuICAgICAgICAgIHwgTWFwNSBfXG4gICAgICAgICAgfCBNYXA2IF9cbiAgICAgICAgICB8IE1hcDcgX1xuICAgICAgICAgIHwgTWFwOCBfXG4gICAgICAgICAgfCBNYXA5IF9cbiAgICAgICAgICB8IE1hcDEwIF9cbiAgICAgICAgICB8IE1hcDExIF9cbiAgICAgICAgICB8IE1hcDEyIF9cbiAgICAgICAgICB8IE1hcDEzIF9cbiAgICAgICAgICB8IE1hcDE0IF9cbiAgICAgICAgICB8IE1hcDE1IF9cbiAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF9cbiAgICAgICAgICB8IEV4cGVydCBfIC0+IGZhbHNlXG4gICAgICAgICAgKCogV2UgY2FuIGltbWVkaWF0ZWx5IHJlY29tcHV0ZSBbcGFyZW50XSBpZiBubyBvdGhlciBub2RlIG5lZWRzIHRvIGJlIHN0YWJsZVxuICAgICAgICAgICAgIGJlZm9yZSBjb21wdXRpbmcgaXQuICBJZiBbcGFyZW50XSBoYXMgYSBzaW5nbGUgY2hpbGQgKGkuZS4gW25vZGVdKSwgdGhlblxuICAgICAgICAgICAgIHRoaXMgYW1vdW50cyB0byBjaGVja2luZyB0aGF0IFtwYXJlbnRdIHdvbid0IGJlIGludmFsaWRhdGVkLCBpLmUuIHRoYXRcbiAgICAgICAgICAgICBbcGFyZW50XSdzIHNjb3BlIGhhcyBhbHJlYWR5IHN0YWJpbGl6ZWQuICopXG4gICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgRnJlZXplIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBNYXAgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgKCogRm9yIHRoZXNlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIFwiX2NoYW5nZVwiIGNoaWxkIGhhcyBhbHJlYWR5IGJlZW5cbiAgICAgICAgICAgICBldmFsdWF0ZWQgKGlmIG5lZWRlZCkuICBJZiBzbywgdGhpcyBhbHNvIGltcGxpZXM6XG5cbiAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICAgICBdfSAqKVxuICAgICAgICAgIHwgQmluZF9tYWluIGIgLT4gbm9kZS5oZWlnaHQgPiBiLmxoc19jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBJZl90aGVuX2Vsc2UgaSAtPiBub2RlLmhlaWdodCA+IGkudGVzdF9jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBKb2luX21haW4gaiAtPiBub2RlLmhlaWdodCA+IGoubGhzX2NoYW5nZS5oZWlnaHRcbiAgICAgICAgaW5cbiAgICAgICAgaWYgY2FuX3JlY29tcHV0ZV9ub3dcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZFxuICAgICAgICAgIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgKyAxO1xuICAgICAgICAgIHJlY29tcHV0ZSBwYXJlbnQpXG4gICAgICAgIGVsc2UgaWYgcGFyZW50LmhlaWdodCA8PSBSZWNvbXB1dGVfaGVhcC5taW5faGVpZ2h0IHQucmVjb21wdXRlX2hlYXBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogSWYgW3BhcmVudC5oZWlnaHRdIGlzIFs8PV0gdGhlIGhlaWdodCBvZiBhbGwgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwXG4gICAgICAgICAgICAgKHBvc3NpYmx5IGJlY2F1c2UgdGhlIHJlY29tcHV0ZSBoZWFwIGlzIGVtcHR5KSwgdGhlbiB3ZSBjYW4gcmVjb21wdXRlXG4gICAgICAgICAgICAgW3BhcmVudF0gaW1tZWRpYXRlbHkgYW5kIHNhdmUgYWRkaW5nIGl0IHRvIGFuZCB0aGVuIHJlbW92aW5nIGl0IGZyb20gdGhlXG4gICAgICAgICAgICAgcmVjb21wdXRlIGhlYXAuICopXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHRcbiAgICAgICAgICA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCArIDE7XG4gICAgICAgICAgcmVjb21wdXRlIHBhcmVudClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpO1xuICAgICAgICAgIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudCkpKSk7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHRcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgciA9XG4gIGxldCAoVCBub2RlKSA9IFJlY29tcHV0ZV9oZWFwLnJlbW92ZV9taW4gciBpblxuICBpZiBkZWJ1ZyAmJiBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJub2RlIHVuZXhwZWN0ZWRseSBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbXB1dGVkXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICByZWNvbXB1dGUgbm9kZVxuOztcblxubGV0IHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0ID1cbiAgd2hpbGUgU3RhY2subGVuZ3RoIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5kaXNhbGxvd2VkX29ic2VydmVycyBpblxuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgfCBEaXNhbGxvd2VkIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBsZXQgKFQgYWxsX29ic2VydmVycykgPSBVb3B0LnZhbHVlX2V4biB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICBpZiBJbnRlcm5hbF9vYnNlcnZlci5zYW1lIGludGVybmFsX29ic2VydmVyIGFsbF9vYnNlcnZlcnNcbiAgICB0aGVuIHQuYWxsX29ic2VydmVycyA8LSBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX2FsbDtcbiAgICBJbnRlcm5hbF9vYnNlcnZlci51bmxpbmsgaW50ZXJuYWxfb2JzZXJ2ZXI7XG4gICAgY2hlY2tfaWZfdW5uZWNlc3NhcnkgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nXG4gIGRvbmVcbjs7XG5cbmxldCBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyID1cbiAgbGV0IHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbmNyX3N0YXRlIGludGVybmFsX29ic2VydmVyIGluXG4gIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gKClcbiAgfCBDcmVhdGVkIC0+XG4gICAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0gMTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgPC0gW11cbiAgfCBJbl91c2UgLT5cbiAgICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgLSAxO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIERpc2FsbG93ZWQ7XG4gICAgU3RhY2sucHVzaCB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKVxuOztcblxubGV0IGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmZpbmFsaXplZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQuZmluYWxpemVkX29ic2VydmVycyBpblxuICAgIGlmIExpc3QuaXNfZW1wdHkgaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgdGhlbiBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyXG4gIGRvbmVcbjs7XG5cbmxldCBvYnNlcnZlcl9maW5hbGl6ZXIgdCA9XG4gIHN0YWdlIChmdW4gb2JzZXJ2ZXIgLT5cbiAgICBsZXQgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAhb2JzZXJ2ZXIgaW5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQuZmluYWxpemVkX29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcikpXG47O1xuXG5sZXQgY3JlYXRlX29ic2VydmVyID8oc2hvdWxkX2ZpbmFsaXplID0gdHJ1ZSkgKG9ic2VydmluZyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gb2JzZXJ2aW5nLnN0YXRlIGluXG4gIGxldCBpbnRlcm5hbF9vYnNlcnZlciA6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gICAgeyBzdGF0ZSA9IENyZWF0ZWRcbiAgICA7IG9ic2VydmluZ1xuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IHByZXZfaW5fYWxsID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX2FsbCA9IFVvcHQubm9uZVxuICAgIDsgcHJldl9pbl9vYnNlcnZpbmcgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fb2JzZXJ2aW5nID0gVW9wdC5ub25lXG4gICAgfVxuICBpblxuICBTdGFjay5wdXNoIHQubmV3X29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcik7XG4gIGxldCBvYnNlcnZlciA9IHJlZiBpbnRlcm5hbF9vYnNlcnZlciBpblxuICBpZiBzaG91bGRfZmluYWxpemVcbiAgdGhlbiBHYy5FeHBlcnQuYWRkX2ZpbmFsaXplcl9leG4gb2JzZXJ2ZXIgKHVuc3RhZ2UgKG9ic2VydmVyX2ZpbmFsaXplciB0KSk7XG4gIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyArIDE7XG4gIG9ic2VydmVyXG47O1xuXG5sZXQgYWRkX25ld19vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFN0YWNrLmxlbmd0aCB0Lm5ld19vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5uZXdfb2JzZXJ2ZXJzIGluXG4gICAgbGV0IG1vZHVsZSBQYWNrZWQgPSBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQgaW5cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFVubGlua2VkIC0+ICgpXG4gICAgfCBDcmVhdGVkIC0+XG4gICAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBJbl91c2U7XG4gICAgICBsZXQgb2xkX2FsbF9vYnNlcnZlcnMgPSB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfYWxsX29ic2VydmVyc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fYWxsIDwtIG9sZF9hbGxfb2JzZXJ2ZXJzO1xuICAgICAgICBQYWNrZWQuc2V0X3ByZXZfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfYWxsX29ic2VydmVycykgKFVvcHQuc29tZSBwYWNrZWQpKTtcbiAgICAgIHQuYWxsX29ic2VydmVycyA8LSBVb3B0LnNvbWUgcGFja2VkO1xuICAgICAgbGV0IG9ic2VydmluZyA9IGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyBpblxuICAgICAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBvYnNlcnZpbmcgaW5cbiAgICAgIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgICAgKyBMaXN0Lmxlbmd0aCBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnM7XG4gICAgICBsZXQgb2xkX29ic2VydmVycyA9IG9ic2VydmluZy5vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfb2JzZXJ2ZXJzXG4gICAgICB0aGVuIChcbiAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmcgPC0gb2xkX29ic2VydmVycztcbiAgICAgICAgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9vYnNlcnZlcnMpLnByZXZfaW5fb2JzZXJ2aW5nIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcik7XG4gICAgICBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcjtcbiAgICAgICgqIEJ5IGFkZGluZyBbaW50ZXJuYWxfb2JzZXJ2ZXJdIHRvIFtvYnNlcnZpbmcub2JzZXJ2ZXJzXSwgd2UgbWF5IGhhdmUgYWRkZWRcbiAgICAgICAgIG9uLXVwZGF0ZSBoYW5kbGVycyB0byBbb2JzZXJ2aW5nXS4gIFdlIG5lZWQgdG8gaGFuZGxlIFtvYnNlcnZpbmddIGFmdGVyIHRoaXNcbiAgICAgICAgIHN0YWJpbGl6YXRpb24gdG8gZ2l2ZSB0aG9zZSBoYW5kbGVycyBhIGNoYW5jZSB0byBydW4uICopXG4gICAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBvYnNlcnZpbmc7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3Nhcnkgb2JzZXJ2aW5nKTtcbiAgICAgIGlmIG5vdCB3YXNfbmVjZXNzYXJ5IHRoZW4gYmVjYW1lX25lY2Vzc2FyeSBvYnNlcnZpbmdcbiAgZG9uZVxuOztcblxubGV0IG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlciA9XG4gIGxldCB0ID0gT2JzZXJ2ZXIuaW5jcl9zdGF0ZSBvYnNlcnZlciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT4gT2JzZXJ2ZXIudmFsdWVfZXhuIG9ic2VydmVyXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBSYWlzZWRfZXhuLnJlcmFpc2Vfd2l0aF9tZXNzYWdlXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgYWZ0ZXIgc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXCJcbiAgICAgIG9ic2VydmVyXG4gICAgICBbJXNleHBfb2Y6IF8gT2JzZXJ2ZXIudF1cbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZSBvYnNlcnZlciA9XG4gIHRyeSBPayAob2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuOztcblxubGV0IG5vZGVfb25fdXBkYXRlICh0eXBlIGEpIChub2RlIDogYSBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIE5vZGUub25fdXBkYXRlIG5vZGUgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZVxuOztcblxubGV0IG9ic2VydmVyX29uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgfmYgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgT2JzZXJ2ZXIub25fdXBkYXRlX2V4biBvYnNlcnZlciAoT25fdXBkYXRlX2hhbmRsZXIuY3JlYXRlIGYgfmF0OnQuc3RhYmlsaXphdGlvbl9udW0pO1xuICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoT2JzZXJ2ZXIub2JzZXJ2aW5nIG9ic2VydmVyKVxuOztcblxubGV0IHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIHQubnVtX3Zhcl9zZXRzIDwtIHQubnVtX3Zhcl9zZXRzICsgMTtcbiAgdmFyLnZhbHVlIDwtIHZhbHVlO1xuICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHZhci5zZXRfYXQgdC5zdGFiaWxpemF0aW9uX251bSA8IDBcbiAgdGhlbiAoXG4gICAgdmFyLnNldF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGxldCB3YXRjaCA9IHZhci53YXRjaCBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIHdhdGNoKTtcbiAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSB3YXRjaCAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgd2F0Y2gpXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCB3YXRjaClcbjs7XG5cbmxldCBzZXRfdmFyIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgXCJjYW5ub3Qgc2V0IHZhciAtLSBzdGFiaWxpemF0aW9uIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGlmIFVvcHQuaXNfbm9uZSB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gICAgdGhlbiBTdGFjay5wdXNoIHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIChUIHZhcik7XG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0LnNvbWUgdmFsdWVcbjs7XG5cbmxldCByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LndlYWtfaGFzaHRibHMgPiAwIGRvXG4gICAgbGV0IChUIHdlYWtfaGFzaHRibCkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LndlYWtfaGFzaHRibHMgaW5cbiAgICBXZWFrX2hhc2h0YmwucmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VudXNlZF9kYXRhIHdlYWtfaGFzaHRibFxuICBkb25lXG47O1xuXG5sZXQgc3RhYmlsaXplX3N0YXJ0IHQgPVxuICB0LnN0YXR1cyA8LSBTdGFiaWxpemluZztcbiAgZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyB0O1xuICAoKiBKdXN0IGxpa2UgZm9yIGJpbmRzLCB3ZSBhZGQgbmV3IG9ic2VydmVycyBiZWZvcmUgcmVtb3ZpbmcgZGlzYWxsb3dlZCBvYnNlcnZlcnMgdG9cbiAgICAgcG90ZW50aWFsbHkgYXZvaWQgc3dpdGNoaW5nIHRoZSBvYnNlcnZhYmlsaXR5IG9mIHNvbWUgbm9kZXMgYmFjayBhbmQgZm9ydGguICopXG4gIGFkZF9uZXdfb2JzZXJ2ZXJzIHQ7XG4gIHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0O1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0XG47O1xuXG5sZXQgc3RhYmlsaXplX2VuZCB0ID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgdC5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgPC0gTm9uZTtcbiAgICB0Lm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDwtIFtdKTtcbiAgKCogV2UgaW5jcmVtZW50IFt0LnN0YWJpbGl6YXRpb25fbnVtXSBiZWZvcmUgaGFuZGxpbmcgdmFyaWFibGVzIHNldCBkdXJpbmdcbiAgICAgc3RhYmlsaXphdGlvbiwgc28gdGhhdCB0aGV5IGFyZSB0cmVhdGVkIGFzIHNldCBkdXJpbmcgdGhlIG5ldyBzdGFiaWxpemF0aW9uIGN5Y2xlLlxuICAgICBBbHNvLCB3ZSBpbmNyZW1lbnQgYmVmb3JlIHJ1bm5pbmcgb24tdXBkYXRlIGhhbmRsZXJzLCB0byBhdm9pZCBydW5uaW5nIG9uIHVwZGF0ZVxuICAgICBoYW5kbGVycyBjcmVhdGVkIGR1cmluZyBvbiB1cGRhdGUgaGFuZGxlcnMuICopXG4gIHQuc3RhYmlsaXphdGlvbl9udW0gPC0gU3RhYmlsaXphdGlvbl9udW0uYWRkMSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKSBkb1xuICAgIGxldCAoVCB2YXIpID0gU3RhY2sucG9wX2V4biB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiBpblxuICAgIGxldCB2YWx1ZSA9IFVvcHQudmFsdWVfZXhuIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDwtIFVvcHQubm9uZTtcbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWVcbiAgZG9uZTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uKSBkb1xuICAgIGxldCAoVCBub2RlKSA9IFN0YWNrLnBvcF9leG4gdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBpblxuICAgIG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPC0gZmFsc2U7XG4gICAgbGV0IG9sZF92YWx1ZSA9IG5vZGUub2xkX3ZhbHVlX29wdCBpblxuICAgIG5vZGUub2xkX3ZhbHVlX29wdCA8LSBVb3B0Lm5vbmU7XG4gICAgbGV0IG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50ID1cbiAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBub2RlKVxuICAgICAgdGhlbiBJbnZhbGlkYXRlZFxuICAgICAgZWxzZSBpZiBub3QgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpXG4gICAgICB0aGVuIFVubmVjZXNzYXJ5XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5ld192YWx1ZSA9IFVvcHQudmFsdWVfZXhuIG5vZGUudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSBvbGRfdmFsdWVcbiAgICAgICAgdGhlbiBOZWNlc3NhcnkgbmV3X3ZhbHVlXG4gICAgICAgIGVsc2UgQ2hhbmdlZCAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX3ZhbHVlLCBuZXdfdmFsdWUpKVxuICAgIGluXG4gICAgU3RhY2sucHVzaCB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSlcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnM7XG4gIGxldCBub3cgPSB0LnN0YWJpbGl6YXRpb25fbnVtIGluXG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzKSBkb1xuICAgIGxldCAoVCAobm9kZSwgbm9kZV91cGRhdGUpKSA9IFN0YWNrLnBvcF9leG4gdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIGluXG4gICAgTm9kZS5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIG5vZGUgbm9kZV91cGRhdGUgfm5vd1xuICBkb25lO1xuICB0LnN0YXR1cyA8LSBOb3Rfc3RhYmlsaXppbmc7XG4gIHJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyB0XG47O1xuXG5sZXQgcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG4gPVxuICBsZXQgcmFpc2VkID0gUmFpc2VkX2V4bi5jcmVhdGUgZXhuIGluXG4gIHQuc3RhdHVzIDwtIFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWQ7XG4gIFJhaXNlZF9leG4ucmVyYWlzZSByYWlzZWRcbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0YWJpbGl6ZVwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjpmYWxzZTtcbiAgdHJ5XG4gICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgd2hpbGUgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwIGRvXG4gICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByXG4gICAgZG9uZTtcbiAgICBzdGFiaWxpemVfZW5kIHRcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4blxuOztcblxubW9kdWxlIFN0ZXBfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBLZWVwX2dvaW5nXG4gICAgfCBEb25lXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSB0IDogU3RlcF9yZXN1bHQudCA9XG4gIHRyeVxuICAgIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgICBLZWVwX2dvaW5nXG4gICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgICBpZiBSZWNvbXB1dGVfaGVhcC5sZW5ndGggciA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByO1xuICAgICAgICBLZWVwX2dvaW5nKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHN0YWJpbGl6ZV9lbmQgdDtcbiAgICAgICAgRG9uZSlcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0ZXBcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgICAoKiBJZiBzdGFiaWxpemF0aW9uIGhhcyBhbHJlYWR5IHJhaXNlZCwgdGhlbiBbZXhuXSBpcyBtZXJlbHkgYSBub3RpZmljYXRpb24gb2YgdGhpc1xuICAgICAgICAgIGZhY3QsIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gaXRzZWxmLiAgV2Ugc2hvdWxkIGp1c3QgcHJvcGFnYXRlIFtleG5dXG4gICAgICAgICAgZm9yd2FyZDsgY2FsbGluZyBbcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHdvdWxkIHN0b3JlIFtleG5dIGFzIHRoZSBleGNlcHRpb25cbiAgICAgICAgICB0aGF0IGluaXRpYWxseSByYWlzZWQgZHVyaW5nIHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgcmFpc2UgZXhuXG4gICAgIHwgXyAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4bilcbjs7XG5cbmxldCBjcmVhdGVfbm9kZV9pbiB0IGNyZWF0ZWRfaW4ga2luZCA9XG4gIHQubnVtX25vZGVzX2NyZWF0ZWQgPC0gdC5udW1fbm9kZXNfY3JlYXRlZCArIDE7XG4gIE5vZGUuY3JlYXRlIHQgY3JlYXRlZF9pbiBraW5kXG47O1xuXG5sZXQgY3JlYXRlX25vZGUgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCB0LmN1cnJlbnRfc2NvcGUga2luZFxubGV0IGNyZWF0ZV9ub2RlX3RvcCB0IGtpbmQgPSBjcmVhdGVfbm9kZV9pbiB0IFNjb3BlLnRvcCBraW5kXG5cbmxldCBjcmVhdGVfdmFyIHQgPyh1c2VfY3VycmVudF9zY29wZSA9IGZhbHNlKSB2YWx1ZSA9XG4gIGxldCBzY29wZSA9IGlmIHVzZV9jdXJyZW50X3Njb3BlIHRoZW4gdC5jdXJyZW50X3Njb3BlIGVsc2UgU2NvcGUudG9wIGluXG4gIGxldCB3YXRjaCA9IGNyZWF0ZV9ub2RlX2luIHQgc2NvcGUgVW5pbml0aWFsaXplZCBpblxuICBsZXQgdmFyID1cbiAgICB7IFZhci52YWx1ZVxuICAgIDsgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gVW9wdC5ub25lXG4gICAgOyBzZXRfYXQgPSB0LnN0YWJpbGl6YXRpb25fbnVtXG4gICAgOyB3YXRjaFxuICAgIH1cbiAgaW5cbiAgTm9kZS5zZXRfa2luZCB3YXRjaCAoVmFyIHZhcik7XG4gIHZhclxuOztcblxuKCogQSBbY29uc3RdIHZhbHVlIGNvdWxkIGNvbWUgZnJvbSB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG91dGVyIGJpbmQuICBTbywgd2UgY3JlYXRlIGFcbiAgIFtjb25zdF0gbm9kZSBpbiB0aGUgY3VycmVudCBzY29wZSwgbm90IGluIFtTY29wZS50b3BdLiAqKVxubGV0IGNvbnN0IHQgYSA9IGNyZWF0ZV9ub2RlIHQgKENvbnN0IGEpXG5sZXQgbWFwIChuIDogXyBOb2RlLnQpIH5mID0gY3JlYXRlX25vZGUgbi5zdGF0ZSAoTWFwIChmLCBuKSlcbmxldCBtYXAyIChuMSA6IF8gTm9kZS50KSBuMiB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAyIChmLCBuMSwgbjIpKVxuXG5sZXQgYm90aCAobjEgOiBfIE5vZGUudCkgKG4yIDogXyBOb2RlLnQpID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCB7IGtpbmQgPSBDb25zdCBhOyBfIH0sIHsga2luZCA9IENvbnN0IGI7IF8gfSAtPiBjb25zdCBuMS5zdGF0ZSAoYSwgYilcbiAgfCBfIC0+IG1hcDIgbjEgbjIgfmY6VHVwbGUyLmNyZWF0ZVxuOztcblxubGV0IG1hcDMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDMgKGYsIG4xLCBuMiwgbjMpKVxubGV0IG1hcDQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSlcblxubGV0IG1hcDUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkpXG47O1xuXG5sZXQgbWFwNiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikpXG47O1xuXG5sZXQgbWFwNyAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpKVxuOztcblxubGV0IG1hcDggKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkpXG47O1xuXG5sZXQgbWFwOSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkpXG47O1xuXG5sZXQgbWFwMTAgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSlcbjs7XG5cbmxldCBtYXAxMSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpKVxuOztcblxubGV0IG1hcDEyIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikpXG47O1xuXG5sZXQgbWFwMTMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSlcbjs7XG5cbmxldCBtYXAxNCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCB+ZiA9XG4gIGNyZWF0ZV9ub2RlXG4gICAgbjEuc3RhdGVcbiAgICAoTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSlcbjs7XG5cbmxldCBtYXAxNSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCBuMTUgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSlcbjs7XG5cbmxldCBwcmVzZXJ2ZV9jdXRvZmYgfihpbnB1dCA6IF8gTm9kZS50KSB+b3V0cHV0ID1cbiAgTm9kZS5zZXRfY3V0b2ZmXG4gICAgb3V0cHV0XG4gICAgKEN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlOl8gfm5ld192YWx1ZTpfIC0+XG4gICAgICAgU3RhYmlsaXphdGlvbl9udW0uZXF1YWwgaW5wdXQuY2hhbmdlZF9hdCBvdXRwdXQuY2hhbmdlZF9hdCkpXG47O1xuXG5sZXQgZGVwZW5kX29uIGlucHV0IH5kZXBlbmRfb24gPVxuICBsZXQgb3V0cHV0ID0gbWFwMiBpbnB1dCBkZXBlbmRfb24gfmY6KGZ1biBhIF8gLT4gYSkgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBuZWNlc3NhcnlfaWZfYWxpdmUgaW5wdXQgPVxuICAoKiBJZiBbb3V0cHV0XSBpcyBhbGl2ZSwgdGhlbiBbb2JzZXJ2ZXJdIGlzIGFsaXZlLCB0aGVuIFtpbnB1dF0gaXMgbmVjZXNzYXJ5LiAgSWZcbiAgICAgW291dHB1dF0gaXMgdW5uZWNlc3NhcnksIHRoZW4gW291dHB1dF0gaXMgbm90IGEgcGFyZW50IG9mIFtpbnB1dF0sIGFuZCB0aHVzXG4gICAgIFtvdXRwdXRdJ3MgbGl2ZW5lc3MgaXMgZGVwZW5kZW50IHNvbGVseSBvbiB1c2VyIGNvZGUuICBBbmQgaW4gcGFydGljdWxhciwgaWYgW291dHB1dF1cbiAgICAgZGllcywgdGhlbiBbb2JzZXJ2ZXJdIHdpbGwgYmUgZmluYWxpemVkLCBhbmQgdGhlbiB1cG9uIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sXG4gICAgIFtpbnB1dF0gd2lsbCBiZWNvbWUgdW5uZWNlc3NhcnkgKGF0IGxlYXN0IHdpdGggcmVzcGVjdCB0byBbb3V0cHV0XSkuICopXG4gIGxldCBvYnNlcnZlciA9IGNyZWF0ZV9vYnNlcnZlciBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBtYXAgaW5wdXQgfmY6KGZ1biBhIC0+XG4gICAgICBHYy5rZWVwX2FsaXZlIG9ic2VydmVyO1xuICAgICAgYSlcbiAgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBiaW5kIChsaHMgOiBfIE5vZGUudCkgfmYgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmluZCA9XG4gICAgeyBCaW5kLm1haW5cbiAgICA7IGZcbiAgICA7IGxoc1xuICAgIDsgbGhzX2NoYW5nZVxuICAgIDsgcmhzID0gVW9wdC5ub25lXG4gICAgOyByaHNfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgKCogV2Ugc2V0IFtsaHNfY2hhbmdlXSB0byBuZXZlciBjdXRvZmYgc28gdGhhdCB3aGVuZXZlciBbbGhzXSBjaGFuZ2VzLCBbbWFpbl0gaXNcbiAgICAgcmVjb21wdXRlZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBbZl0gcmV0dXJucyBhbiBleGlzdGluZyBzdGFibGVcbiAgICAgbm9kZSwgaW4gd2hpY2ggY2FzZSB0aGUgW2xoc19jaGFuZ2VdIHdvdWxkIGJlIHRoZSBvbmx5IHRoaW5nIGNhdXNpbmcgW21haW5dIHRvIGJlXG4gICAgIHN0YWxlLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbGhzX2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIGJpbmQucmhzX3Njb3BlIDwtIEJpbmQgYmluZDtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChCaW5kX2xoc19jaGFuZ2UgYmluZCk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQmluZF9tYWluIGJpbmQpO1xuICBtYWluXG47O1xuXG5sZXQgYmluZDIgbjEgbjIgfmYgPVxuICBiaW5kIChtYXAyIG4xIG4yIH5mOihmdW4gdjEgdjIgLT4gdjEsIHYyKSkgfmY6KGZ1biAodjEsIHYyKSAtPiBmIHYxIHYyKVxuOztcblxubGV0IGJpbmQzIG4xIG4yIG4zIH5mID1cbiAgYmluZCAobWFwMyBuMSBuMiBuMyB+ZjooZnVuIHYxIHYyIHYzIC0+IHYxLCB2MiwgdjMpKSB+ZjooZnVuICh2MSwgdjIsIHYzKSAtPiBmIHYxIHYyIHYzKVxuOztcblxubGV0IGJpbmQ0IG4xIG4yIG4zIG40IH5mID1cbiAgYmluZFxuICAgIChtYXA0IG4xIG4yIG4zIG40IH5mOihmdW4gdjEgdjIgdjMgdjQgLT4gdjEsIHYyLCB2MywgdjQpKVxuICAgIH5mOihmdW4gKHYxLCB2MiwgdjMsIHY0KSAtPiBmIHYxIHYyIHYzIHY0KVxuOztcblxubGV0IGpvaW4gKGxocyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gbGhzLnN0YXRlIGluXG4gIGxldCBsaHNfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBqb2luID0geyBKb2luLmxoczsgbGhzX2NoYW5nZTsgcmhzID0gVW9wdC5ub25lOyBtYWluIH0gaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIGxoc19jaGFuZ2UgKEpvaW5fbGhzX2NoYW5nZSBqb2luKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChKb2luX21haW4gam9pbik7XG4gIG1haW5cbjs7XG5cbmxldCBpZl8gKHRlc3QgOiBfIE5vZGUudCkgfnRoZW5fIH5lbHNlXyA9XG4gIGxldCB0ID0gdGVzdC5zdGF0ZSBpblxuICBsZXQgdGVzdF9jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGlmX3RoZW5fZWxzZSA9XG4gICAgeyBJZl90aGVuX2Vsc2UudGVzdDsgdGhlbl87IGVsc2VfOyB0ZXN0X2NoYW5nZTsgbWFpbjsgY3VycmVudF9icmFuY2ggPSBVb3B0Lm5vbmUgfVxuICBpblxuICBOb2RlLnNldF9jdXRvZmYgdGVzdF9jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIHRlc3RfY2hhbmdlIChJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKElmX3RoZW5fZWxzZSBpZl90aGVuX2Vsc2UpO1xuICBtYWluXG47O1xuXG5sZXQgbGF6eV9mcm9tX2Z1biB0IH5mID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiB3aXRoaW5fc2NvcGUgdCBzY29wZSB+Zilcbjs7XG5cbmxldCBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplID0gNFxuXG5sZXQgbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICAoKiBIZXJlJ3MgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHdlIGdldCBbdC5jdXJyZW50X3Njb3BlXSBoZXJlLCBhbmQgdGhlbiBjYWxsXG4gICAgIFt3aXRoaW5fc2NvcGVdIGJlbG93LiAgQ29uc2lkZXIgdGhpcyAoaW1wb3NzaWJsZSkgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgIFttZW1vaXplX2Z1bl9ieV9rZXldOlxuXG4gICAgIHtbXG4gICAgICAgbGV0IHRhYmxlID1cbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfZXhuIGhhc2hhYmxlXG4gICAgICAgICAgIChMaXN0Lm1hcCBhbGxfcG9zc2libGVfYV92YWx1ZXMgfmY6KGZ1biBhIC0+IChwcm9qZWN0X2tleSBhLCBmIGEpKVxuICAgICAgIGluXG4gICAgICAgc3RhZ2UgKGZ1biBrZXkgLT4gSGFzaHRibC5maW5kX2V4biB0YWJsZSAocHJvamVjdF9rZXkgYSkpXG4gICAgIF19XG5cbiAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHVzZSBbY3VycmVudF9zY29wZV0gb3IgW3dpdGhpbl9zY29wZV0uICBBbGwgY2FsbHMgdG8gW2ZdXG4gICAgIG5hdHVyYWxseSBvY2N1ciBpbiBbdC5jdXJyZW50X3Njb3BlXS5cblxuICAgICBTdWNoIGFuIGltcGxlbWVudGF0aW9uIGlzIGltcG9zc2libGUgYmVjYXVzZSB3ZSBkbyBub3QgaGF2ZSBbYWxsX3Bvc3NpYmxlX2FfdmFsdWVzXS5cbiAgICAgVGhlIGltcGxlbWVudGF0aW9uIGJlbG93IHVzZXMgW3dpdGhpbl9zY29wZV0gdG8gY2FsbCBbZiBhXSBpbiB0aGUgc2NvcGUgdGhhdCB3YXNcbiAgICAgY3VycmVudCBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwgdG8gW21lbW9pemVfZnVuX2J5X2tleV0gc28gdGhhdCB3ZSBjYW4gdGhpbmsgb2YgdGhlXG4gICAgIFt0YWJsZV0gYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCB0aGVuLCB3aGVuIGl0IGluIHJlYWxpdHkgaXMgY3JlYXRlZCBvbi1kZW1hbmQuICopXG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBsZXQgdGFibGUgPSBIYXNodGJsLmNyZWF0ZSBoYXNoYWJsZSB+c2l6ZTppbml0aWFsX3NpemUgaW5cbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdGFibGUga2V5IHdpdGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgYiA9IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mOihmdW4gKCkgLT4gZiBhKSBpblxuICAgICAgSGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5sZXQgYXJyYXlfZm9sZCB0IGNoaWxkcmVuIH5pbml0IH5mID1cbiAgaWYgQXJyYXkubGVuZ3RoIGNoaWxkcmVuID0gMFxuICB0aGVuIGNvbnN0IHQgaW5pdFxuICBlbHNlIGNyZWF0ZV9ub2RlIHQgKEFycmF5X2ZvbGQgeyBpbml0OyBmOyBjaGlsZHJlbiB9KVxuOztcblxubGV0IGFsbCB0IHRzID0gYXJyYXlfZm9sZCB0IChBcnJheS5vZl9saXN0X3JldiB0cykgfmluaXQ6W10gfmY6KGZ1biBhYyBhIC0+IGEgOjogYWMpXG5cbm1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBVbm9yZGVyZWRfYXJyYXlfZm9sZC5VcGRhdGVcblxubGV0IHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICB0XG4gICAgICA/KGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPSBJbnQubWF4X3ZhbHVlKVxuICAgICAgY2hpbGRyZW5cbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfnVwZGF0ZVxuICA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBpZiBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDw9IDBcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCBnb3Qgbm9uLXBvc2l0aXZlIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcIlxuICAgICAgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgWyVzZXhwX29mOiBpbnRdXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gICAgTm9kZS5zZXRfa2luZFxuICAgICAgbWFpblxuICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgICAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY3JlYXRlXG4gICAgICAgICAgICB+aW5pdFxuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICB+Y2hpbGRyZW5cbiAgICAgICAgICAgIH5tYWluKSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgbGV0IGYgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCArIDFcbiAgICB8IFNvbWUgeCAtPiBmIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIGxldCBmX2ludmVyc2UgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCAtIDFcbiAgICB8IFNvbWUgeCAtPiBmX2ludmVyc2UgYWNjdW0geCwgbnVtX2ludmFsaWRcbiAgaW5cbiAgbWFwXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIHRzXG4gICAgICAgfmluaXQ6KGluaXQsIDApXG4gICAgICAgfmZcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgZl9pbnZlcnNlKVxuICAgICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKVxuICAgIH5mOihmdW4gKGFjY3VtLCBudW1faW52YWxpZCkgLT4gaWYgbnVtX2ludmFsaWQgPSAwIHRoZW4gU29tZSBhY2N1bSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rID1cbiAgbGV0IGJvb2xfdG9faW50IGIgPSBpZiBiIHRoZW4gMSBlbHNlIDAgaW5cbiAgbWFwXG4gICAgfmY6KGZ1biBpIC0+IGkgPj0gaylcbiAgICAodW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICB0XG4gICAgICAgbm9kZXNcbiAgICAgICB+aW5pdDowXG4gICAgICAgfmY6KGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlICsgYm9vbF90b19pbnQgYilcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgKGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlIC0gYm9vbF90b19pbnQgYikpKVxuOztcblxubGV0IGV4aXN0cyB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOjFcbmxldCBmb3JfYWxsIHQgbm9kZXMgPSBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfms6KEFycmF5Lmxlbmd0aCBub2RlcylcblxubGV0IHN1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH51cGRhdGU6KEZfaW52ZXJzZSBzdWIpXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBvcHRfc3VtIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgbm9kZXMgfnplcm8gfmFkZCB+c3ViID1cbiAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH5mX2ludmVyc2U6c3ViXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBzdW1faW50IHQgbm9kZXMgPSBzdW0gdCBub2RlcyB+emVybzowIH5hZGQ6KCArICkgfnN1YjooIC0gKVxuXG5sZXQgc3VtX2Zsb2F0IHQgbm9kZXMgPVxuICBzdW1cbiAgICB0XG4gICAgbm9kZXNcbiAgICB+emVybzowLlxuICAgIH5hZGQ6KCArLiApXG4gICAgfnN1YjooIC0uIClcbiAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczooQXJyYXkubGVuZ3RoIG5vZGVzKVxuOztcblxubGV0IHNldF9mcmVlemUgKG5vZGUgOiBfIE5vZGUudCkgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFNjb3BlLmlzX3RvcCBub2RlLmNyZWF0ZWRfaW4pO1xuICAoKiBCeSBtYWtpbmcgW25vZGUua2luZF0gYmUgW0ZyZWV6ZV0sIHdlIGFyZSBtYWtpbmcgW05vZGUuaXNfbmVjZXNzYXJ5IG5vZGVdLiAqKVxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgaW5cbiAgTm9kZS5zZXRfa2luZCBub2RlIChGcmVlemUgeyBtYWluID0gbm9kZTsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW4gfSk7XG4gIGlmIHdhc19uZWNlc3NhcnlcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4OktpbmQuZnJlZXplX2NoaWxkX2luZGV4XG4gIGVsc2UgYmVjYW1lX25lY2Vzc2FyeSBub2RlXG47O1xuXG5sZXQgZnJlZXplIChjaGlsZCA6IF8gTm9kZS50KSB+b25seV9mcmVlemVfd2hlbiA9XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IG5vZGUgPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gIHNldF9mcmVlemUgbm9kZSB+Y2hpbGQgfm9ubHlfZnJlZXplX3doZW47XG4gIG5vZGVcbjs7XG5cbmxldCBhdCBjbG9jayB0aW1lID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKG5vdyBjbG9jaylcbiAgdGhlbiBjb25zdCB0IEJlZm9yZV9vcl9hZnRlci5BZnRlclxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBhdCA9IHsgQXQuYXQgPSB0aW1lOyBtYWluOyBhbGFybSA9IEFsYXJtLm51bGw7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKEF0IGF0KTtcbiAgICBhdC5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0OnRpbWUgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoQXQgYXQpKTtcbiAgICBtYWluKVxuOztcblxubGV0IGFmdGVyIGNsb2NrIHNwYW4gPSBhdCBjbG9jayAoVGltZV9ucy5hZGQgKG5vdyBjbG9jaykgc3BhbilcblxubGV0IG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IChjbG9jayA6IENsb2NrLnQpIH5iYXNlIH5pbnRlcnZhbCA9XG4gIGxldCBhZnRlciA9IG5vdyBjbG9jayBpblxuICBsZXQgYXQgPSBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCB+Y2FuX2VxdWFsX2FmdGVyOmZhbHNlICgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IGFmdGVyKTtcbiAgYXRcbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgKGNsb2NrIDogQ2xvY2sudCkgaW50ZXJ2YWwgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPCApIGludGVydmFsIChUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIGNsb2NrLnRpbWluZ193aGVlbClcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhdF9pbnRlcnZhbHMgZ290IHRvbyBzbWFsbCBpbnRlcnZhbFwiXG4gICAgICBpbnRlcnZhbFxuICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF07XG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBiYXNlID0gbm93IGNsb2NrIGluXG4gIGxldCBhdF9pbnRlcnZhbHMgPSB7IEF0X2ludGVydmFscy5tYWluOyBiYXNlOyBpbnRlcnZhbDsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyk7XG4gICgqIFttYWluIDogdW5pdCBOb2RlLnRdLCBzbyB3ZSBtYWtlIGl0IG5ldmVyIGN1dG9mZiBzbyBpdCBjaGFuZ2VzIGVhY2ggdGltZSBpdCBpc1xuICAgICByZWNvbXB1dGVkLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbWFpbiBDdXRvZmYubmV2ZXI7XG4gIGF0X2ludGVydmFscy5hbGFybVxuICA8LSBhZGRfYWxhcm1cbiAgICAgICBjbG9ja1xuICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpKTtcbiAgbWFpblxuOztcblxubGV0IHNuYXBzaG90IGNsb2NrIHZhbHVlX2F0IH5hdCB+YmVmb3JlID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIGF0IChub3cgY2xvY2spXG4gIHRoZW5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IChub3cgY2xvY2spXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvciBcImNhbm5vdCB0YWtlIHNuYXBzaG90IGluIHRoZSBwYXN0XCIgYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdXG4gICAgZWxzZSBPayAoZnJlZXplIHZhbHVlX2F0IH5vbmx5X2ZyZWV6ZV93aGVuOihGbi5jb25zdCB0cnVlKSlcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gICAgbGV0IHNuYXBzaG90ID0geyBTbmFwc2hvdC5tYWluOyBhdDsgYmVmb3JlOyB2YWx1ZV9hdDsgY2xvY2sgfSBpblxuICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoU25hcHNob3Qgc25hcHNob3QpO1xuICAgICgqIFVubGlrZSBvdGhlciB0aW1lLWJhc2VkIGluY3JlbWVudGFscywgYSBzbmFwc2hvdCBpcyBjcmVhdGVkIGluIFtTY29wZS50b3BdIGFuZFxuICAgICAgIGNhbm5vdCBiZSBpbnZhbGlkYXRlZCBieSBpdHMgc2NvcGUuICBUaHVzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gICAgICAgYWxhcm0gdGhhdCBpcyBhZGRlZCwgYmVjYXVzZSBpdCB3aWxsIG5ldmVyIG5lZWQgdG8gYmUgcmVtb3ZlZCBlYXJseS4gKilcbiAgICBpZ25vcmUgKGFkZF9hbGFybSBjbG9jayB+YXQgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU25hcHNob3Qgc25hcHNob3QpKSA6IEFsYXJtLnQpO1xuICAgIE9rIG1haW4pXG47O1xuXG5sZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiBjbG9jayBjaGlsZCA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgc3RlcF9mdW5jdGlvbl9ub2RlID1cbiAgICB7IFN0ZXBfZnVuY3Rpb25fbm9kZS5tYWluXG4gICAgOyB2YWx1ZSA9IFVvcHQubm9uZVxuICAgIDsgY2hpbGQgPSBVb3B0LnNvbWUgY2hpbGRcbiAgICA7IGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyB1cGNvbWluZ19zdGVwcyA9IFNlcXVlbmNlLmVtcHR5XG4gICAgOyBhbGFybSA9IEFsYXJtLm51bGxcbiAgICA7IGFsYXJtX3ZhbHVlID0gT2JqLm1hZ2ljIE5vbmUgKCogc2V0IGJlbG93ICopXG4gICAgOyBjbG9ja1xuICAgIH1cbiAgaW5cbiAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlIDwtIEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgbWFpblxuOztcblxubGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIFN0YWJpbGl6YXRpb25fbnVtLm5vbmU7XG4gICgqIGZvcmNlIHRoZSBub2RlIHRvIGJlIHN0YWxlICopXG4gIGlmIE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgYWR2YW5jZV9jbG9jayAoY2xvY2sgOiBDbG9jay50KSB+dG9fID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcImFkdmFuY2VfY2xvY2tcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6dHJ1ZTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgVGltZV9ucy4oID4gKSB0b18gKG5vdyBjbG9jaylcbiAgdGhlbiAoXG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgY2xvY2subm93IHRvXztcbiAgICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayBjbG9jay50aW1pbmdfd2hlZWwgfnRvXyB+aGFuZGxlX2ZpcmVkOmNsb2NrLmhhbmRsZV9maXJlZDtcbiAgICBUaW1pbmdfd2hlZWwuZmlyZV9wYXN0X2FsYXJtcyBjbG9jay50aW1pbmdfd2hlZWwgfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgd2hpbGUgVW9wdC5pc19zb21lIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBkb1xuICAgICAgbGV0IGFsYXJtX3ZhbHVlID0gVW9wdC51bnNhZmVfdmFsdWUgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIGluXG4gICAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gYWxhcm1fdmFsdWUubmV4dF9maXJlZDtcbiAgICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gVW9wdC5ub25lO1xuICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgIHwgQXQgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoQ29uc3QgQWZ0ZXIpO1xuICAgICAgICAgIG1ha2Vfc3RhbGUgbWFpbilcbiAgICAgIHwgQXRfaW50ZXJ2YWxzICh7IG1haW47IGJhc2U7IGludGVydmFsOyBfIH0gYXMgYXRfaW50ZXJ2YWxzKSAtPlxuICAgICAgICBpZiBOb2RlLmlzX3ZhbGlkIG1haW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gICAgICAgICAgPC0gYWRkX2FsYXJtXG4gICAgICAgICAgICAgICBjbG9ja1xuICAgICAgICAgICAgICAgfmF0OihuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCBjbG9jayB+YmFzZSB+aW50ZXJ2YWwpXG4gICAgICAgICAgICAgICBhbGFybV92YWx1ZTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IFNuYXBzaG90IHsgbWFpbjsgdmFsdWVfYXQ7IF8gfSAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBtYWluKTtcbiAgICAgICAgc2V0X2ZyZWV6ZSBtYWluIH5jaGlsZDp2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooZnVuIF8gLT4gdHJ1ZSk7XG4gICAgICAgIG1ha2Vfc3RhbGUgbWFpblxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgbWFpbjsgXyB9IC0+IGlmIE5vZGUuaXNfdmFsaWQgbWFpbiB0aGVuIG1ha2Vfc3RhbGUgbWFpblxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdClcbjs7XG5cbmxldCBjcmVhdGVfY2xvY2sgdCB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgPVxuICBsZXQgdGltaW5nX3doZWVsID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0IGluXG4gIGxldCByZWMgY2xvY2sgOiBDbG9jay50ID1cbiAgICB7IG5vdyA9IGNyZWF0ZV92YXIgdCBzdGFydFxuICAgIDsgaGFuZGxlX2ZpcmVkXG4gICAgOyBmaXJlZF9hbGFybV92YWx1ZXMgPSBVb3B0Lm5vbmVcbiAgICA7IHRpbWluZ193aGVlbFxuICAgIH1cbiAgYW5kIGhhbmRsZV9maXJlZCBhbGFybSA9XG4gICAgbGV0IGFsYXJtX3ZhbHVlID0gVGltaW5nX3doZWVsLkFsYXJtLnZhbHVlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybSBpblxuICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzO1xuICAgIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyA8LSBVb3B0LnNvbWUgYWxhcm1fdmFsdWVcbiAgaW5cbiAgY2xvY2tcbjs7XG5cbmxldCBjcmVhdGUgKG1vZHVsZSBDb25maWcgOiBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgbGV0IGFkanVzdF9oZWlnaHRzX2hlYXAgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCByZWNvbXB1dGVfaGVhcCA9IFJlY29tcHV0ZV9oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCB0ID1cbiAgICB7IHN0YXR1cyA9IE5vdF9zdGFiaWxpemluZ1xuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IENvbmZpZy5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgOyBzdGFiaWxpemF0aW9uX251bSA9IFN0YWJpbGl6YXRpb25fbnVtLnplcm9cbiAgICA7IGN1cnJlbnRfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICA7IHJlY29tcHV0ZV9oZWFwXG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgPSAwXG4gICAgOyBhbGxfb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbmV3X29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgb25seV9pbl9kZWJ1ZyA9IE9ubHlfaW5fZGVidWcuY3JlYXRlICgpXG4gICAgOyB3ZWFrX2hhc2h0YmxzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlID0gZmFsc2VcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ID0gMFxuICAgIDsgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19jaGFuZ2VkID0gMFxuICAgIDsgbnVtX25vZGVzX2ludmFsaWRhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX2NyZWF0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ID0gMFxuICAgIDsgbnVtX3Zhcl9zZXRzID0gMFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gV2Vha19oYXNodGJsLmNyZWF0ZSB+c2l6ZTppbml0aWFsX3NpemUgaGFzaGFibGUgaW5cbiAgbGV0IHBhY2tlZCA9IFBhY2tlZF93ZWFrX2hhc2h0YmwuVCB0YWJsZSBpblxuICBXZWFrX2hhc2h0Ymwuc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHRhYmxlIH50aHJlYWRfc2FmZV9mOihmdW4gKCkgLT5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQud2Vha19oYXNodGJscyBwYWNrZWQpO1xuICBzdGFnZSAoZnVuIGEgLT5cbiAgICBsZXQga2V5ID0gcHJvamVjdF9rZXkgYSBpblxuICAgIG1hdGNoIFdlYWtfaGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIFdlYWtfaGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICgqIEdpdmVuIHRoYXQgaW52YWxpZCBub2RlIGFyZSBhdCBhdHRlbXB0IGF0IGF2b2lkaW5nIGJyZWFraW5nIHRoZSBlbnRpcmUgaW5jcmVtZW50YWxcbiAgICAgY29tcHV0YXRpb24gb24gcHJvYmxlbXMsIGxldCdzIGp1c3QgaWdub3JlIGFueSBvcGVyYXRpb24gb24gYW4gaW52YWxpZCBpbmNyZW1lbnRhbFxuICAgICByYXRoZXIgdGhhbiByYWlzaW5nLiAqKVxuICBsZXQgZXhwZXJ0X2tpbmRfb2Zfbm9kZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICB8IEV4cGVydCBlIC0+IFVvcHQuc29tZSBlXG4gICAgfCBJbnZhbGlkIC0+IFVvcHQubm9uZVxuICAgIHwga2luZCAtPiByYWlzZV9zIFslc2V4cCBcInVuZXhwZWN0ZWQga2luZCBmb3IgZXhwZXJ0IG5vZGVcIiwgKGtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9XG4gICAgbGV0IGUgPSBFeHBlcnQuY3JlYXRlIH5mIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBpblxuICAgIGxldCBub2RlID0gY3JlYXRlX25vZGUgc3RhdGUgKEV4cGVydCBlKSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgc3RhdGUub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlXG4gICAgICB0aGVuXG4gICAgICAgIHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlXG4gICAgICAgIDwtIFQgbm9kZSA6OiBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgPVxuICAgIG1hdGNoIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiA6IHN0cmluZyldXG4gICAgfCBTb21lIGN1cnJlbnQgLT4gY3VycmVudFxuICA7O1xuXG4gICgqIE5vdGUgdGhhdCB0aGUgdHdvIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBzeW1tZXRyaWMgb2Ygb25lIGFub3RoZXI6IGluIFtsZXQgeSA9XG4gICAgIG1hcCB4XSwgW3hdIGlzIGFsd2F5cyBhIGNoaWxkIG9mIFt5XSAoYXNzdW1pbmcgW3hdIGRvZXNuJ3QgYmVjb21lIGludmFsaWQpIGJ1dCBbeV0gaW5cbiAgICAgb25seSBhIHBhcmVudCBvZiBbeF0gaWYgeSBpcyBuZWNlc3NhcnkuICopXG4gIGxldCBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX2NoaWxkIG5vZGUgfmNoaWxkOmN1cnJlbnQpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIG9uIHBhcmVudCBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfcGFyZW50IHN0YXRlIG5vZGUgbmFtZSA9XG4gICAgbGV0IChUIGN1cnJlbnQpID0gY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSBpblxuICAgIGlmIG5vdCAoTm9kZS5oYXNfcGFyZW50IH5wYXJlbnQ6Y3VycmVudCBub2RlKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBjaGlsZHJlbiBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwibWFrZV9zdGFsZVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbWF0Y2ggRXhwZXJ0Lm1ha2Vfc3RhbGUgZSB3aXRoXG4gICAgICB8IGBBbHJlYWR5X3N0YWxlIC0+ICgpXG4gICAgICB8IGBPayAtPlxuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICA7O1xuXG4gIGxldCBpbnZhbGlkYXRlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiaW52YWxpZGF0ZVwiO1xuICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChkZXAgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgKExpc3QubWVtXG4gICAgICAgICAgICAgICAgfmVxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICAgICAgICAgIChUIG5vZGUpKVxuICAgICAgICB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJhZGRfZGVwZW5kZW5jeVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbGV0IG5ld19jaGlsZF9pbmRleCA9IEV4cGVydC5hZGRfY2hpbGRfZWRnZSBlIChFIGRlcCkgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGV2ZW4gaWYgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBvZlxuICAgICAgICAgW25vZGVdLCBiZWNhdXNlIHdlIGNvdWxkIGJlIHJ1bm5pbmcgZHVlIHRvIGEgcGFyZW50IG90aGVyIHRoYW4gW25vZGVdIG1ha2luZyB1c1xuICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOmRlcC5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Om5ld19jaGlsZF9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKSlcbiAgOztcblxuICBsZXQgcmVtb3ZlX2RlcGVuZGVuY3kgKG5vZGUgOiBfIE5vZGUudCkgKGVkZ2UgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwicmVtb3ZlX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGZvciB0aGUgcmVhc29uIHN0YXRlZCBpblxuICAgICAgICAgW2FkZF9kZXBlbmRlbmN5XSAqKVxuICAgICAgbGV0IGVkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBlZGdlLmluZGV4IGluXG4gICAgICBsZXQgKEUgbGFzdF9lZGdlKSA9IEV4cGVydC5sYXN0X2NoaWxkX2VkZ2VfZXhuIGUgaW5cbiAgICAgIGxldCBsYXN0X2VkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBsYXN0X2VkZ2UuaW5kZXggaW5cbiAgICAgIGlmIGVkZ2VfaW5kZXggPD4gbGFzdF9lZGdlX2luZGV4XG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9kZS5zd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB+Y2hpbGQxOmVkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleFxuICAgICAgICAgICAgfmNoaWxkMjpsYXN0X2VkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDI6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBFeHBlcnQuc3dhcF9jaGlsZHJlbiBlIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleCB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSk7XG4gICAgICBFeHBlcnQucmVtb3ZlX2xhc3RfY2hpbGRfZWRnZV9leG4gZTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIG5vZGUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQ6ZWRnZS5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Omxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBlZGdlLmNoaWxkKSB0aGVuIEV4cGVydC5kZWNyX2ludmFsaWRfY2hpbGRyZW4gZSkpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBFeHBlcnQuZWRnZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhvbl9jaGFuZ2UgPSBpZ25vcmUpIGNoaWxkIDogXyB0ID0geyBjaGlsZDsgb25fY2hhbmdlOyBpbmRleCA9IFVvcHQubm9uZSB9XG5cbiAgbGV0IHZhbHVlICh0IDogXyB0KSA9XG4gICAgbGV0IHN0YXRlID0gdC5jaGlsZC5zdGF0ZSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgU3RhdGUuRXhwZXJ0LmFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudFxuICAgICAgICBzdGF0ZVxuICAgICAgICB0LmNoaWxkXG4gICAgICAgIFwiRGVwZW5kZW5jeS52YWx1ZVwiO1xuICAgICgqIE5vdCBleHBvc2luZyB0aGUgX2V4biwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFkdmVydGlzZWQgYXMgYmVpbmcgdXNhYmxlIG9ubHlcbiAgICAgICBpbnNpZGUgdGhlIGNhbGxiYWNrcyBvZiBwYXJlbnRzLCB3aGVyZSBpdCB3aWxsIG5vdCByYWlzZS4gKilcbiAgICBOb2RlLnZhbHVlX2V4biB0LmNoaWxkXG4gIDs7XG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgc3RhdGUgPyhvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IGZ1biB+aXNfbm93X29ic2VydmFibGU6XyAtPiAoKSkgZiA9XG4gICAgU3RhdGUuRXhwZXJ0LmNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICA7O1xuXG4gIGxldCBtYWtlX3N0YWxlID0gU3RhdGUuRXhwZXJ0Lm1ha2Vfc3RhbGVcbiAgbGV0IHdhdGNoID0gRm4uaWRcbiAgbGV0IGludmFsaWRhdGUgPSBTdGF0ZS5FeHBlcnQuaW52YWxpZGF0ZVxuICBsZXQgYWRkX2RlcGVuZGVuY3kgPSBTdGF0ZS5FeHBlcnQuYWRkX2RlcGVuZGVuY3lcbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LnJlbW92ZV9kZXBlbmRlbmN5XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5sZXQgY3JlYXRlIHN0YXRlIGNoaWxkcmVuIH5mIH5yZWR1Y2UgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWR1Y2VyID0gQmFsYW5jZWRfcmVkdWNlci5jcmVhdGVfZXhuICgpIH5sZW4gfnJlZHVjZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyO1xuICAgIGxldCBub2RlID1cbiAgICAgIEV4cGVydDEuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgYSA9IEJhbGFuY2VkX3JlZHVjZXIuY29tcHV0ZV9leG4gcmVkdWNlciBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICAgICAgYSlcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBFeHBlcnQxLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRXhwZXJ0MS5EZXBlbmRlbmN5LmNyZWF0ZSBjaGlsZHJlbi4oaSkgfm9uX2NoYW5nZTooZnVuIGEgLT5cbiAgICAgICAgICAgQmFsYW5jZWRfcmVkdWNlci5zZXRfZXhuIHJlZHVjZXIgaSAoZiBhKTtcbiAgICAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXIpKVxuICAgIGRvbmU7XG4gICAgU29tZSAoRXhwZXJ0MS5Ob2RlLndhdGNoIG5vZGUpKVxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIG1vc3RseSBhIHdyYXBwZXIgYXJvdW5kIFtTdGF0ZV0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5jcmVtZW50YWxfaW50ZlxuXG5tb2R1bGUgdHlwZSBJbmNyZW1lbnRhbF9jb25maWcgPSBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnXG5cbm1vZHVsZSBDb25maWcgPSBDb25maWdcblxubGV0IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkID0gMTI4XG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIG1vZHVsZSBDdXRvZmYgPSBDdXRvZmZcbiAgbW9kdWxlIFN0ZXBfZnVuY3Rpb24gPSBTdGVwX2Z1bmN0aW9uXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIHZhbCB0IDogdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZV9pbnRlcm5hbCA9IGNyZWF0ZVxuXG4gICAgbGV0IGNyZWF0ZSA/KG1heF9oZWlnaHRfYWxsb3dlZCA9IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkKSAoKSA6IChtb2R1bGUgUykgPVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgKG1vZHVsZSBDb25maWcuRGVmYXVsdCAoKSkgfm1heF9oZWlnaHRfYWxsb3dlZFxuICAgICAgZW5kKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50IChzdGF0ZSA6IFN0YXRlLnQpICgpID0gc3RhdGUuY3VycmVudF9zY29wZVxuICAgIGxldCB3aXRoaW4gc3RhdGUgdCB+ZiA9IFN0YXRlLndpdGhpbl9zY29wZSBzdGF0ZSB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTm9kZVxuXG4gIGxldCBzdGF0ZSB0ID0gdC5zdGF0ZVxuICBsZXQgcGFjayB0ID0gUGFja2VkLlQgdFxuICBsZXQgY29uc3Qgc3RhdGUgYSA9IFN0YXRlLmNvbnN0IHN0YXRlIGFcbiAgbGV0IHJldHVybiA9IGNvbnN0XG4gIGxldCBvYnNlcnZlID0gU3RhdGUuY3JlYXRlX29ic2VydmVyXG4gIGxldCBtYXAgPSBTdGF0ZS5tYXBcbiAgbGV0IGJpbmQgPSBTdGF0ZS5iaW5kXG5cbiAgbW9kdWxlIE5fYXJ5X21hcF9hbmRfYmluZCA9IHN0cnVjdFxuICAgIGxldCBtYXAyID0gU3RhdGUubWFwMlxuICAgIGxldCBtYXAzID0gU3RhdGUubWFwM1xuICAgIGxldCBtYXA0ID0gU3RhdGUubWFwNFxuICAgIGxldCBtYXA1ID0gU3RhdGUubWFwNVxuICAgIGxldCBtYXA2ID0gU3RhdGUubWFwNlxuICAgIGxldCBtYXA3ID0gU3RhdGUubWFwN1xuICAgIGxldCBtYXA4ID0gU3RhdGUubWFwOFxuICAgIGxldCBtYXA5ID0gU3RhdGUubWFwOVxuICAgIGxldCBtYXAxMCA9IFN0YXRlLm1hcDEwXG4gICAgbGV0IG1hcDExID0gU3RhdGUubWFwMTFcbiAgICBsZXQgbWFwMTIgPSBTdGF0ZS5tYXAxMlxuICAgIGxldCBtYXAxMyA9IFN0YXRlLm1hcDEzXG4gICAgbGV0IG1hcDE0ID0gU3RhdGUubWFwMTRcbiAgICBsZXQgbWFwMTUgPSBTdGF0ZS5tYXAxNVxuICAgIGxldCBiaW5kMiA9IFN0YXRlLmJpbmQyXG4gICAgbGV0IGJpbmQzID0gU3RhdGUuYmluZDNcbiAgICBsZXQgYmluZDQgPSBTdGF0ZS5iaW5kNFxuICBlbmRcblxuICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gIG1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgSW5maXhcblxuICBsZXQgam9pbiA9IFN0YXRlLmpvaW5cbiAgbGV0IGlmXyA9IFN0YXRlLmlmX1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuICBsZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IFN0YXRlLmRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemVcbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLm1lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSBzdGF0ZSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcblxuICBsZXQgYXJyYXlfZm9sZCBzdGF0ZSB0cyB+aW5pdCB+ZiA9IFN0YXRlLmFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCBzdGF0ZSB0cyB+ZiB+cmVkdWNlID0gUmVkdWNlX2JhbGFuY2VkLmNyZWF0ZSBzdGF0ZSB0cyB+ZiB+cmVkdWNlXG5cbiAgbW9kdWxlIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZSA9IFN0YXRlLlVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA9IFN0YXRlLnVub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS5vcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgbGV0IGFsbCA9IFN0YXRlLmFsbFxuICBsZXQgZXhpc3RzID0gU3RhdGUuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gU3RhdGUuZm9yX2FsbFxuICBsZXQgYm90aCA9IFN0YXRlLmJvdGhcbiAgbGV0IHN1bSA9IFN0YXRlLnN1bVxuICBsZXQgb3B0X3N1bSA9IFN0YXRlLm9wdF9zdW1cbiAgbGV0IHN1bV9pbnQgPSBTdGF0ZS5zdW1faW50XG4gIGxldCBzdW1fZmxvYXQgPSBTdGF0ZS5zdW1fZmxvYXRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgPSBTdGF0ZS5jcmVhdGVfdmFyXG4gICAgbGV0IHNldCA9IFN0YXRlLnNldF92YXJcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgd2F0Y2ggdCA9IHQud2F0Y2hcblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0LnZhbHVlIHw+IFslc2V4cF9vZjogYV1cbiAgICBsZXQgcmVwbGFjZSB0IH5mID0gc2V0IHQgKGYgKGxhdGVzdF92YWx1ZSB0KSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBPYnNlcnZlclxuXG4gICAgbW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBJbml0aWFsaXplZCBvZiAnYVxuICAgICAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgICAgICB8IEludmFsaWRhdGVkXG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IG9uX3VwZGF0ZV9leG4gdCB+KGYgOiBfIFVwZGF0ZS50IC0+IHVuaXQpID1cbiAgICAgIFN0YXRlLm9ic2VydmVyX29uX3VwZGF0ZV9leG4gdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOZWNlc3NhcnkgYSAtPiBmIChJbml0aWFsaXplZCBhKVxuICAgICAgICB8IENoYW5nZWQgKGExLCBhMikgLT4gZiAoQ2hhbmdlZCAoYTEsIGEyKSlcbiAgICAgICAgfCBJbnZhbGlkYXRlZCAtPiBmIEludmFsaWRhdGVkXG4gICAgICAgIHwgVW5uZWNlc3NhcnkgLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiSW5jcmVtZW50YWwgYnVnIC0tIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gZ290IHVuZXhwZWN0ZWQgdXBkYXRlIFVubmVjZXNzYXJ5XCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFslc2V4cF9vZjogXyB0XSlcbiAgICA7O1xuXG4gICAgbGV0IGRpc2FsbG93X2Z1dHVyZV91c2UgdCA9IFN0YXRlLmRpc2FsbG93X2Z1dHVyZV91c2UgIXRcbiAgICBsZXQgdmFsdWUgPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZVxuICAgIGxldCB2YWx1ZV9leG4gPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZV9leG5cblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hICh0IDogXyB0KSA9XG4gICAgICBtYXRjaCAhdC5zdGF0ZSB3aXRoXG4gICAgICB8IENyZWF0ZWQgLT4gWyVtZXNzYWdlIFwiPHVuc3RhYmlsaXplZD5cIl1cbiAgICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IFslbWVzc2FnZSBcIjxkaXNhbGxvd2VkPlwiXVxuICAgICAgfCBJbl91c2UgLT5cbiAgICAgICAgbGV0IHVvcHQgPSAhdC5vYnNlcnZpbmcudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSB1b3B0XG4gICAgICAgIHRoZW4gWyVtZXNzYWdlIFwiPGludmFsaWQ+XCJdXG4gICAgICAgIGVsc2UgWyVzZXhwIChVb3B0LnVuc2FmZV92YWx1ZSB1b3B0IDogYSldXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEJlZm9yZV9vcl9hZnRlciA9IEJlZm9yZV9vcl9hZnRlclxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGUuQ2xvY2tcblxuICAgIGxldCBzdGF0ZSA9IGluY3Jfc3RhdGVcblxuICAgIGxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICAgICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQgaW5cbiAgICAgIGxldCBsZXZlbF9iaXRzID0gWyAxNDsgMTM7IDUgXSBpblxuICAgICAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICAgICAgfmFsYXJtX3ByZWNpc2lvblxuICAgICAgICB+bGV2ZWxfYml0czpcbiAgICAgICAgICAoVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBsZXZlbF9iaXRzIH5leHRlbmRfdG9fbWF4X251bV9iaXRzOnRydWUpXG4gICAgICAgICgpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgc3RhdGUgPyh0aW1pbmdfd2hlZWxfY29uZmlnID0gZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnKSB+c3RhcnQgKCkgPVxuICAgICAgKCogTWFrZSBzdXJlIFtzdGFydF0gaXMgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gIE90aGVyd2lzZSwgaWYgeW91XG4gICAgICAgICBmZWVkIFtDbG9jay5ub3cgKCldIHRvIGEgdGltZSBmdW5jdGlvbiwgaXQgY2FuIGJlIHJvdW5kZWQgZG93biB0byBhIHRpbWUgaW5cbiAgICAgICAgIHRoZSBwYXN0LCBjYXVzaW5nIGVycm9ycy4gKilcbiAgICAgIGxldCBzdGFydCA9XG4gICAgICAgIFRpbWVfbnMub2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG4gICAgICAgICAgKFRpbWVfbnMudG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHN0YXJ0KVxuICAgICAgaW5cbiAgICAgIFN0YXRlLmNyZWF0ZV9jbG9jayBzdGF0ZSB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnRcbiAgICA7O1xuXG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LnRpbWluZ193aGVlbFxuICAgIGxldCB0aW1pbmdfd2hlZWxfbGVuZ3RoID0gU3RhdGUudGltaW5nX3doZWVsX2xlbmd0aFxuICAgIGxldCBub3cgPSBTdGF0ZS5ub3dcbiAgICBsZXQgd2F0Y2hfbm93IHQgPSB0Lm5vdy53YXRjaFxuICAgIGxldCBhdCA9IFN0YXRlLmF0XG4gICAgbGV0IGFmdGVyID0gU3RhdGUuYWZ0ZXJcbiAgICBsZXQgYXRfaW50ZXJ2YWxzID0gU3RhdGUuYXRfaW50ZXJ2YWxzXG4gICAgbGV0IGFkdmFuY2VfY2xvY2sgPSBTdGF0ZS5hZHZhbmNlX2Nsb2NrXG4gICAgbGV0IGFkdmFuY2VfY2xvY2tfYnkgdCBzcGFuID0gYWR2YW5jZV9jbG9jayB0IH50b186KFRpbWVfbnMuYWRkIChub3cgdCkgc3BhbilcbiAgICBsZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiA9IFN0YXRlLmluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxuICAgIGxldCBzdGVwX2Z1bmN0aW9uIHQgfmluaXQgc3RlcHMgPVxuICAgICAgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuICAgICAgICB0XG4gICAgICAgIChjb25zdCAoaW5jcl9zdGF0ZSB0KSAoU3RlcF9mdW5jdGlvbi5jcmVhdGVfZXhuIH5pbml0IH5zdGVwcykpXG4gICAgOztcblxuICAgIGxldCBzbmFwc2hvdCA9IFN0YXRlLnNuYXBzaG90XG4gIGVuZFxuXG4gIGxldCBmcmVlemUgPyh3aGVuXyA9IGZ1biBfIC0+IHRydWUpIHQgPSBTdGF0ZS5mcmVlemUgdCB+b25seV9mcmVlemVfd2hlbjp3aGVuX1xuICBsZXQgZGVwZW5kX29uIHQgfmRlcGVuZF9vbiA9IFN0YXRlLmRlcGVuZF9vbiB0IH5kZXBlbmRfb25cbiAgbGV0IG5lY2Vzc2FyeV9pZl9hbGl2ZSA9IFN0YXRlLm5lY2Vzc2FyeV9pZl9hbGl2ZVxuXG4gIG1vZHVsZSBVcGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG4gIGxldCBvbl91cGRhdGUgPSBTdGF0ZS5ub2RlX29uX3VwZGF0ZVxuICBsZXQgc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuc3RhYmlsaXplIHN0YXRlXG4gIGxldCBhbV9zdGFiaWxpemluZyBzdGF0ZSA9IFN0YXRlLmFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gIGxldCBzYXZlX2RvdCA9IFN0YXRlLnNhdmVfZG90XG4gIGxldCBzYXZlX2RvdF90b19maWxlID0gU3RhdGUuc2F2ZV9kb3RfdG9fZmlsZVxuXG4gIG1vZHVsZSBOb2RlX3ZhbHVlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgSW52YWxpZFxuICAgICAgfCBOZWNlc3NhcnlfbWF5YmVfc3RhbGUgb2YgJ2Egb3B0aW9uXG4gICAgICB8IFVubmVjZXNzYXJ5X21heWJlX3N0YWxlIG9mICdhIG9wdGlvblxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBub2RlX3ZhbHVlIHQgOiBfIE5vZGVfdmFsdWUudCA9XG4gICAgaWYgbm90IChpc192YWxpZCB0KVxuICAgIHRoZW4gSW52YWxpZFxuICAgIGVsc2UgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICB0aGVuIE5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gICAgZWxzZSBVbm5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gIDs7XG5cbiAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8gc2hvdyBqdXN0IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgIHJlcHJlc2VudGF0aW9uLiAgV2Ugb25seSBzaG93IHRoZSB2YWx1ZSBpZiBpdCBpcyBuZWNlc3NhcnkgYW5kIHZhbGlkLiAqKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBub3QgKGlzX3ZhbGlkIHQpXG4gICAgdGhlbiBcIjxpbnZhbGlkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICB0aGVuIFwiPHVubmVjZXNzYXJ5PlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgVW9wdC5pc19ub25lIHQudmFsdWVfb3B0XG4gICAgdGhlbiBcIjx1bmNvbXB1dGVkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgdW5zYWZlX3ZhbHVlIHQgfD4gWyVzZXhwX29mOiBhXVxuICA7O1xuXG4gIG1vZHVsZSBFeHBlcnQgPSBFeHBlcnQxXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCB0MSB0MiA9IG1hcDIgdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpXG5cbiAgICAgIGluY2x1ZGUgTl9hcnlfbWFwX2FuZF9iaW5kXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdFxuICAgICAgICBsZXQgd2F0Y2ggPSBWYXIud2F0Y2hcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS53ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9jb25maWcgKEluY3JlbWVudGFsX2NvbmZpZyA6IEluY3JlbWVudGFsX2NvbmZpZykgKCkgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgKG1vZHVsZSBJbmNyZW1lbnRhbF9jb25maWcpIH5tYXhfaGVpZ2h0X2FsbG93ZWQ6MTI4XG4gIGVuZFxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2xvY2tcblxuICAgIGxldCBjcmVhdGUgP3RpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ICgpID1cbiAgICAgIGNyZWF0ZSA/dGltaW5nX3doZWVsX2NvbmZpZyBTdGF0ZS50IH5zdGFydCAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cGVydFxuXG4gICAgbW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICBsZXQgY3JlYXRlID9vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmID0gY3JlYXRlIFN0YXRlLnQgP29uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGVwX3Jlc3VsdCA9IFN0YXRlLlN0ZXBfcmVzdWx0XG5cbiAgICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplICgpID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIFN0YXRlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgIGxldCByZXR1cm4gYSA9IHJldHVybiBTdGF0ZS50IGFcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoKSA9IGN1cnJlbnQgU3RhdGUudCAoKVxuICAgIGxldCB3aXRoaW4gdCB+ZiA9IHdpdGhpbiBTdGF0ZS50IHQgfmZcbiAgZW5kXG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID91c2VfY3VycmVudF9zY29wZSB2YWx1ZSA9IGNyZWF0ZSA/dXNlX2N1cnJlbnRfc2NvcGUgU3RhdGUudCB2YWx1ZVxuICBlbmRcblxuICBsZXQgY29uc3QgYSA9IGNvbnN0IFN0YXRlLnQgYVxuICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gU3RhdGUudCBhXG4gIGxldCBhbGwgdHMgPSBhbGwgU3RhdGUudCB0c1xuICBsZXQgZXhpc3RzIHRzID0gZXhpc3RzIFN0YXRlLnQgdHNcbiAgbGV0IGZvcl9hbGwgdHMgPSBmb3JfYWxsIFN0YXRlLnQgdHNcbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcblxuICBsZXQgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgaGFzaGFibGUgcHJvamVjdF9rZXkgZiA9XG4gICAgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgaGFzaGFibGUgZiA9IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIGxldCBhcnJheV9mb2xkIHRzIH5pbml0IH5mID0gYXJyYXlfZm9sZCBTdGF0ZS50IHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgdHMgfmYgfnJlZHVjZSA9IHJlZHVjZV9iYWxhbmNlZCBTdGF0ZS50IHRzIH5mIH5yZWR1Y2VcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfnVwZGF0ZSA9XG4gICAgdW5vcmRlcmVkX2FycmF5X2ZvbGQgU3RhdGUudCB0cyB+aW5pdCB+ZiB+dXBkYXRlID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDs7XG5cbiAgbGV0IG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgICBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlXG4gIDs7XG5cbiAgbGV0IHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+emVybyB+YWRkIH5zdWIgPVxuICAgIHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBvcHRfc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH56ZXJvIH5hZGQgfnN1YiA9XG4gICAgb3B0X3N1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBzdW1faW50IHRzID0gc3VtX2ludCBTdGF0ZS50IHRzXG4gIGxldCBzdW1fZmxvYXQgdHMgPSBzdW1fZmxvYXQgU3RhdGUudCB0c1xuICBsZXQgc3RhYmlsaXplICgpID0gc3RhYmlsaXplIFN0YXRlLnRcbiAgbGV0IGFtX3N0YWJpbGl6aW5nICgpID0gYW1fc3RhYmlsaXppbmcgU3RhdGUudFxuICBsZXQgc2F2ZV9kb3Qgb3V0ID0gc2F2ZV9kb3QgU3RhdGUudCBvdXRcbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgZmlsZSA9IE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOnNhdmVfZG90XG4gIGxldCBsYXp5X2Zyb21fZnVuIGYgPSBsYXp5X2Zyb21fZnVuIFN0YXRlLnQgZlxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIHByb2plY3Rfa2V5IGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKCkgPSBNYWtlX3dpdGhfY29uZmlnIChDb25maWcuRGVmYXVsdCAoKSkgKClcbmluY2x1ZGUgR2VuZXJpY1xuXG5tb2R1bGUgQWRkX3dpdG5lc3MwIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICd3IHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAndyB0ID0gTS50XG5cbiAgbGV0IGludmFyaWFudCBfIHQgPSBNLmludmFyaWFudCB0XG4gIGxldCBzZXhwX29mX3QgXyB0ID0gTS5zZXhwX29mX3QgdFxuZW5kXG5cbm1vZHVsZSBBZGRfd2l0bmVzczEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ3cpIHQgPSAnYSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICd3KSB0ID0gJ2EgTS50XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBNLmludmFyaWFudCBpbnZhcmlhbnRfYSB0XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IE0uc2V4cF9vZl90IHNleHBfb2ZfYSB0XG5lbmRcblxubW9kdWxlIENsb2NrID0gc3RydWN0XG4gIGluY2x1ZGUgQ2xvY2tcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKENsb2NrKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlcnRcblxuICBtb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVwZW5kZW5jeVxuXG4gICAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIERlcGVuZGVuY3lcblxuICAgICAgICBsZXQgaW52YXJpYW50IF8gXyA9ICgpXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBOb2RlID0gc3RydWN0XG4gICAgaW5jbHVkZSBOb2RlXG5cbiAgICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICAgIGxldCBpbnZhcmlhbnQgXyBfID0gKClcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIFN0ZXBfcmVzdWx0ID0gU3RhdGUuU3RlcF9yZXN1bHRcblxuICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlXG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBOb2RlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChOb2RlKVxuZW5kXG5cbnR5cGUgKCdhLCAndykgdCA9ICgnYSwgJ3cpIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxudHlwZSAoJ2EsICd3KSBpbmNyZW1lbnRhbCA9ICgnYSwgJ3cpIHRcblxubGV0IGludmFyaWFudCA9IE5vZGUuaW52YXJpYW50XG5cbm1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICBpbmNsdWRlIE9ic2VydmVyXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChPYnNlcnZlcilcbmVuZFxuXG5tb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTY29wZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoU2NvcGUpXG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhdGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKFN0YXRlKVxuZW5kXG5cbm1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYXJcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKFZhcilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSB0ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBpbmNyZW1lbnRhbFxuICAgIHdpdGggdHlwZSBCZWZvcmVfb3JfYWZ0ZXIudCA9IEJlZm9yZV9vcl9hZnRlci50XG4gICAgd2l0aCB0eXBlIENsb2NrLnQgPSBzdGF0ZV93aXRuZXNzIENsb2NrLnRcbiAgICB3aXRoIHR5cGUgJ2EgQ3V0b2ZmLnQgPSAnYSBDdXRvZmYudFxuICAgIHdpdGggdHlwZSAnYSBFeHBlcnQuRGVwZW5kZW5jeS50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBFeHBlcnQuRGVwZW5kZW5jeS50XG4gICAgd2l0aCB0eXBlICdhIEV4cGVydC5Ob2RlLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEV4cGVydC5Ob2RlLnRcbiAgICB3aXRoIHR5cGUgRXhwZXJ0LlN0ZXBfcmVzdWx0LnQgPSBFeHBlcnQuU3RlcF9yZXN1bHQudFxuICAgIHdpdGggdHlwZSAnYSBPYnNlcnZlci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBPYnNlcnZlci50XG4gICAgd2l0aCB0eXBlICdhIE9ic2VydmVyLlVwZGF0ZS50ID0gJ2EgT2JzZXJ2ZXIuVXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgUGFja2VkLnQgPSBQYWNrZWQudFxuICAgIHdpdGggdHlwZSBTY29wZS50ID0gc3RhdGVfd2l0bmVzcyBTY29wZS50XG4gICAgd2l0aCB0eXBlIFN0YXRlLnQgPSBzdGF0ZV93aXRuZXNzIFN0YXRlLnRcbiAgICB3aXRoIHR5cGUgU3RhdGUuU3RhdHMudCA9IFN0YXRlLlN0YXRzLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlLnQgPVxuICAgICAgICAgICAoJ2EsICdiKSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUudFxuICAgIHdpdGggdHlwZSAnYSBVcGRhdGUudCA9ICdhIFVwZGF0ZS50XG4gICAgd2l0aCB0eXBlICdhIFZhci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBWYXIudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBkZWJ1ZyA9IGRlYnVnXG5lbmRcbiIsIlxub3BlbiBCYXNlXG5cbm1vZHVsZSBDb21tdXRhdGl2ZV9ncm91cCA9IHN0cnVjdFxuICAoKiogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2Ugc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuXG4gICAgICArIGFzc29jaWF0aXZpdHk6IFsoYSArIGIpICsgYyA9IGEgKyAoYiArIGMpXVxuICAgICAgKyBpZGVudGl0eTogW3plcm8gKyBhID0gYSArIHplcm8gPSBhXVxuICAgICAgKyBpbnZlcnNlczogZ2l2ZW4gYW55IFthXSB0aGVyZSBleGlzdHMgYSAodW5pcXVlKSBlbHQgW2JdIHN1Y2ggdGhhdCBbYSArIGIgPSBiICsgYSA9XG4gICAgICB6ZXJvXVxuICAgICAgKyBjb21tdXRhdGl2aXR5OiBbYSArIGIgPSBiICsgYV1cbiAgKilcblxuICBtb2R1bGUgdHlwZSBXaXRob3V0X3NleHAgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCAoKykgIDogdCAtPiB0IC0+IHRcbiAgICB2YWwgKC0pICA6IHQgLT4gdCAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBpbmNsdWRlIFdpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBWZWN0b3Jfc3BhY2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuICAgIGluY2x1ZGUgQ29tbXV0YXRpdmVfZ3JvdXAuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBzdHJ1Y3RcbiAgKCoqIEFsbCBbSW5jcl9tYXBdIGZ1bmN0aW9ucyB0YWtlIGFuIG9wdGlvbmFsIFtpbnN0cnVtZW50YXRpb25dIHBhcmFtZXRlciB0aGF0IGhhcyB0eXBlXG4gICAgICBbSW5zdHJ1bWVudGF0aW9uLnRdLiAgQSB2YWx1ZSBvZiB0aGlzIHR5cGUgaXMgYSByZWNvcmQgY29udGFpbmluZyBhIGZ1bmN0aW9uIHdoaWNoXG4gICAgICBpcyBwb2x5bW9ycGhpYyBvdmVyIGEgdW5pdmVyc2FsbHktcXVhbnRpZmllZCB0eXBlIFsnYV0uIFRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkXG4gICAgICBhIFt1bml0IC0+ICdhXSBmdW5jdGlvbiwgd2hpY2ggbXVzdCBiZSBpbW1lZGlhdGVseSBleGVjdXRlZCwgYW5kIHRoZSByZXN1bHQgb2ZcbiAgICAgIHdoaWNoIG11c3QgYmUgcmV0dXJuZWQuXG5cbiAgICAgIFRoZSBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlIGluc3RydW1lbnRvciB3aWxsIGJlIGRvaW5nIHRoZSBidWxrIG9mIHRoZSB3b3JrIGZvciB0aGVcbiAgICAgIFtJbmNyX21hcF0gZnVuY3Rpb24gaW4gcXVlc3Rpb24gKHVzdWFsbHkgYSBbTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZdKS5cblxuICAgICAgWW91IG1heSB3YW50IHRvIHVzZSB0aGUgSW5zdHJ1bWVudGF0aW9uIEFQSSB0byBhc3Npc3QgaW4gcGVyZm9ybWFuY2UgcHJvZmlsaW5nIGxpa2VcbiAgICAgIHNvOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgcHJvZmlsZSBuYW1lID1cbiAgICAgICAgICB7IEluY3JfbWFwLkluc3RydW1lbnRhdGlvbi5mID0gZnVuIGYgLT5cbiAgICAgICAgICAgICAgbGV0IGJlZm9yZSA9IFRpbWUubm93ICgpIGluXG4gICAgICAgICAgICAgIGxldCByID0gZiAoKSBpblxuICAgICAgICAgICAgICBsZXQgYWZ0ZXIgPSBUaW1lLm5vdyAoKSBpblxuICAgICAgICAgICAgICBsZXQgZGVsdGEgPSBUaW1lLnN1YiBhZnRlciBiZWZvcmUgaW5cbiAgICAgICAgICAgICAgcHJpbnRmIFwiJXMgdG9vayAlc1wiIG5hbWUgKFRpbWUuU3Bhbi50b19zdHJpbmdfaHVtIGRlbHRhKTtcbiAgICAgICAgICAgICAgclxuICAgICAgICAgIH1cbiAgICAgICAgOztcblxuICAgICAgICBJbmNyX21hcC5tYXAgfmluc3RydW1lbnRhdGlvbjoocHJvZmlsZSBcImZvb1wiKSB+ZjptYXBfZm9vXG4gICAgICBdfSAqKVxuXG4gIHR5cGUgdCA9IHsgZiA6ICdhLiAodW5pdCAtPiAnYSkgLT4gJ2EgfSBbQEB1bmJveGVkXVxuZW5kXG5cbigqKiBbU19nZW5dIGlzIHRoZSB0eXBlIG9mIHRoZSBtb2R1bGUgcmV0dXJuZWQgYnkgW0luY3JfbWFwLk1ha2VdLiAgSXQgaXMgYSBzcGVjaWFsaXphdGlvblxuICAgIG9mIHRoZSBpbnRlcmZhY2Ugb2YgW0luY3JfbWFwXSwgd2l0aDpcblxuICAgIC0gdGhlIFsnd10gc3RhdGVfd2l0bmVzcyB0eXBlIHBhcmFtZXRlciByZW1vdmVkXG4gICAgLSB0aGUgW0luY3JlbWVudGFsLlN0YXRlLnRdIGFyZ3VtZW50IHJlbW92ZWRcblxuICAgIFRoZSBjb21tZW50cyBmb3IgY29tcG9uZW50cyBvZiBbU19nZW5dIGFyZSBpbiBbbW9kdWxlIHR5cGUgSW5jcl9tYXBdIGJlbG93LiAqKVxubW9kdWxlIHR5cGUgU19nZW4gPSBzaWdcbiAgbW9kdWxlIEluY3IgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIG1vZHVsZSBDdXRvZmYgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gSW5zdHJ1bWVudGF0aW9uXG5cbiAgdmFsIG9mX3NldFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICdjbXApIFNldC50IEluY3IudFxuICAgIC0+ICgnaywgdW5pdCwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmlsdGVyX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgSW5jci50IC0+ICd2MiBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSBJbmNyLnQgLT4gJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgSW5jci50IC0+ICd2MiBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIEluY3IudCAtPiAndjIgSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCkgSW5jci50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIEluY3IudCAtPiAoJ3YyLCAndjMpIEVpdGhlci50IEluY3IudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50KSBJbmNyLnRcblxuICB2YWwgdW5vcmRlcmVkX2ZvbGRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+ICdhY2MgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2V4dHJhX2VxdWFsOignZXh0cmEgLT4gJ2V4dHJhIC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnZSkgTWFwLnQgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgnaywgJ3YsICdlKSBNYXAudCBJbmNyLnRcbiAgICAtPiAnZXh0cmEgSW5jci50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiBleHRyYV9jaGFuZ2VkOlxuICAgICAgICAgKG9sZF9leHRyYTonZXh0cmFcbiAgICAgICAgICAtPiBuZXdfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gaW5wdXQ6KCdrLCAndiwgJ2UpIE1hcC50XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gJ2FjYyBJbmNyLnRcblxuICB2YWwgY3V0b2ZmXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGN1dG9mZjondiBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBpX2NvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonazEgLT4gZGF0YTondiAtPiAnazIpXG4gICAgLT4gKCdrMiwgaW50LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcF9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAnazIpXG4gICAgLT4gKCdrMiwgaW50LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGlfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gJ3Igb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXBpX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWluX3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3Ygb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXhfdmFsdWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcGlfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gKCdyICogJ3IpIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciAqICdyKSBvcHRpb24gSW5jci50XG5cbiAgdmFsIHZhbHVlX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiAqICd2KSBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWVyZ2VfYm90aF9zb21lXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ID9vdXRfZXF1YWw6KCd2MyAtPiAndjMgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiAndjEgLT4gJ3YyIC0+ICd2MylcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9yaWdodF9yZXN1bHRfZXF1YWw6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSAqICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudCAqICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgdW56aXBfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3YxICogJ3YyKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnQgKiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IEluY3IudCAtPiAndjEgSW5jci50ICogJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50ICogKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtZXJnZSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjooJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCBJbmNyLnQgLT4gJ3YzIG9wdGlvbiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjMsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmbGF0dGVuIDogKCdrLCAndiBJbmNyLnQsICdjbXApIE1hcC50IC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBqb2luXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YgSW5jci50LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgc2VwYXJhdGVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2IEluY3IudCwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGtleXNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiwgJ2MpIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ2MpIFNldC50IEluY3IudFxuXG4gIHZhbCByYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIEJhc2UuTWFwLnQgSW5jci50XG4gICAgLT4gJ2sgSW5jci50XG4gICAgLT4gaW50IG9wdGlvbiBJbmNyLnRcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrIE1heWJlX2JvdW5kLkFzX2xvd2VyX2JvdW5kLnQgKiAnayBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50KSBvcHRpb24gSW5jci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHN1YnJhbmdlX2J5X3JhbmtcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKGludCBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnQpIEluY3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCByZWtleVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIGluZGV4X2J5aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnb3V0ZXJfa2V5IG9wdGlvbilcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGluZGV4X2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGluZGV4OigndiAtPiAnb3V0ZXJfa2V5IG9wdGlvbilcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiA/dXBkYXRlOlxuICAgICAgICAgKG91dGVyX2tleTonb3V0ZXJfa2V5XG4gICAgICAgICAgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXlcbiAgICAgICAgICAtPiBvbGRfZGF0YTondlxuICAgICAgICAgIC0+IG5ld19kYXRhOid2XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDoob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihvdXRlcl9rZXk6J291dGVyX2tleSAtPiBpbm5lcl9rZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAnYWNjIEluY3IudFxuXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMiwgJ2syX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICgnazIsICd2LCAnazJfY21wKSBNYXAudCwgJ2sxX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrMiwgKCdrMSwgJ3YsICdrMV9jbXApIE1hcC50LCAnazJfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgY29sbGFwc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoICdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5XG4gICAgICAgLCAndlxuICAgICAgICwgKCdvdXRlcl9jbXAsICdpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3MgKVxuICAgICAgICAgTWFwLnRcbiAgICAgICAgIEluY3IudFxuXG4gIHZhbCBjb2xsYXBzZV9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gbWVyZ2Vfa2V5czooJ291dGVyX2tleSAtPiAnaW5uZXJfa2V5IC0+ICdjb21iaW5lZF9rZXkpXG4gICAgLT4gY29tcGFyYXRvcjooJ2NvbWJpbmVkX2tleSwgJ2NvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnY29tYmluZWRfa2V5LCAndiwgJ2NvbWJpbmVkX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGV4cGFuZFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ291dGVyX2tleSAqICdpbm5lcl9rZXksICd2LCAndHVwbGVfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBvdXRlcl9jb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5uZXJfY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgY291bnRpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gaW50IEluY3IudFxuXG4gIHZhbCBjb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoXywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gaW50IEluY3IudFxuXG4gIHZhbCBmb3JfYWxsaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIGZvcl9hbGxcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIGV4aXN0c2lcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBleGlzdHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIHN1bVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoXywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IChtb2R1bGUgQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSAndSlcbiAgICAtPiBmOigndiAtPiAndSlcbiAgICAtPiAndSBJbmNyLnRcblxuICBtb2R1bGUgTG9va3VwIDogc2lnXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgdmFsIGZpbmQgOiAoJ2ssICd2LCBfKSB0IC0+ICdrIC0+ICd2IG9wdGlvbiBJbmNyLnRcblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA6IHNpZ1xuICAgICAgdmFsIHNleHBfb2ZfdCA6ICgnayAtPiBTZXhwLnQpIC0+ICgndiAtPiBTZXhwLnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gU2V4cC50XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgICAgIDogIGZyb206aW50XG4gICAgICAtPiB0b186aW50XG4gICAgICAtPiAoJ2EsICdiLCAnYykgQmFzZS5NYXAudFxuICAgICAgLT4gKCdhICogJ2Egb3B0aW9uKSBvcHRpb25cbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgSW5jcl9tYXAgPSBzaWdcbiAgKCoqIEZ1bmN0aW9ucyBmb3IgdXNpbmcgbWFwcyBlZmZpY2llbnRseSB3aXRoaW4gSW5jcmVtZW50YWwuICBUaGUgZ29hbCBvZiB0aGUgYWxnb3JpdGhtc1xuICAgICAgaGVyZSBpcyB0byBkbyB3b3JrIG9uIHRoZSBvdXRwdXQgb2YgdGhlIGNvbXB1dGF0aW9uIHByb3BvcnRpb25hbCB0byB0aGUgYW1vdW50IG9mXG4gICAgICB3b3JrIGRvbmUgb24gdGhlIGlucHV0LiAgaS5lLiwgW2tdIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGlucHV0IG1hcCBmb3Igc29tZVxuICAgICAgY29tcHV0YXRpb24gd2lsbCByZXN1bHQgaW4gW2tdIG1vZGlmaWNhdGlvbnMgdG8gdGhlIG91dHB1dCBtYXAuICBUaGUgY2hhbmdlcyB0byB0aGVcbiAgICAgIGlucHV0IG1hcCBhcmUgdHlwaWNhbGx5IGNvbXB1dGVkIHVzaW5nIFtNYXAuc3ltbWV0cmljX2RpZmZdLlxuXG4gICAgICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgdGhlIG5vbi1pbmNyZW1lbnRhbCBzZW1hbnRpY3Mgb2YgdGhlc2UgZnVuY3Rpb25zIChpLmUuLixcbiAgICAgIGlnbm9yaW5nIHBlcmZvcm1hbmNlKSBpcyB0aGUgc2FtZSBhcyB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBpbiBDb3JlJ3MgW01hcF1cbiAgICAgIG1vZHVsZS4gICopXG5cbiAgbW9kdWxlIEluc3RydW1lbnRhdGlvbiA9IEluc3RydW1lbnRhdGlvblxuXG4gIHZhbCBvZl9zZXRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ2NtcCkgU2V0LnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgdW5pdCwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YxIC0+ICd2MilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiwgJ3cpIEluY3JlbWVudGFsLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZmlsdGVyX21hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCgndjIsICd2MykgRWl0aGVyLnQsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgKiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bm9yZGVyZWRfZm9sZCBpIH5pbml0IH5hZGQgfnJlbW92ZV0gY29uc3RydWN0cyBhIG1vcmUgaW5jcmVtZW50YWwgdmVyc2lvbiBvZjpcblxuICAgICAge1tcbiAgICAgICAgbGV0JW1hcCBtID0gaSBpblxuICAgICAgICBNYXAuZm9sZCBtIH5pbml0IH5mOmFkZFxuICAgICAgXX1cblxuICAgICAgYXNzdW1pbmcgdGhhdCBbcmVtb3ZlXSBpcyB0aGUgaW52ZXJzZSBvZiBbYWRkXSwgYW5kIHRoYXQgdGhlIG9wZXJhdGlvbnMgZm9yXG4gICAgICBkaWZmZXJlbnQga2V5cyBjYW4gYmUgcGVyZm9ybWVkIGluIGFueSBvcmRlci4gTm90ZSB0aGF0IFtkYXRhX2VxdWFsXSBkZWZhdWx0c1xuICAgICAgdG8gW3BoeXNfZXF1YWxdLCBidXQgYSBtb3JlIHByZWNpc2UgZXF1YWxpdHkgY2FuIGJlIHByb3ZpZGVkIGluc3RlYWQuXG5cbiAgICAgIFdoZW4gdGhlIGRhdGEgZm9yIGEga2V5IHVwZGF0ZXMsIGJ5IGRlZmF1bHQgW3JlbW92ZV0gaXMgY2FsbGVkIG9uIHRoZSBvbGQgZGF0YVxuICAgICAgYW5kIHRoZW4gW2FkZF0gaXMgY2FsbGVkIG9uIHRoZSBuZXcgZGF0YS5cbiAgICAgIFt1cGRhdGVdIHByb3ZpZGVzIGFuIGFsdGVybmF0aXZlIHNpbmdsZSBmdW5jdGlvbiB0byBjYWxsIGVhY2ggdGltZSBhIGtleSdzIGRhdGFcbiAgICAgIHVwZGF0ZXMsIGFuZCBjYW4gYmUgdXNlZCB0byBpbXByb3ZlIGVmZmljaWVuY3kuXG5cbiAgICAgIEZvciB0aGUgaW5pdGlhbCBjb21wdXRhdGlvbiwgYnkgZGVmYXVsdCBbYWRkXSBpcyBjYWxsZWQgb24gYWxsIHRoZSBlbGVtZW50cyBpbiB0aGVcbiAgICAgIG1hcC4gQXMgdGhpcyBjYW4gYmUgaW5lZmZpY2llbnQsIFtzcGVjaWFsaXplZF9pbml0aWFsXSBjYW4gYmUgcHJvdmlkZWQgdG8gcGVyZm9ybVxuICAgICAgdGhlIGNvbXB1dGF0aW9uIGluIGEgbW9yZSBlZmZlY3RpdmUgd2F5LlxuXG4gICAgICBJZiBbcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eV0gaXMgdHJ1ZSwgdGhlbiBpZiB0aGUgaW5wdXQgbWFwIHRyYW5zaXRpb25zIGZyb21cbiAgICAgIGJlaW5nIGZ1bGwgdG8gZW1wdHksIHRoZW4gaW5zdGVhZCBvZiBjYWxsaW5nIFtyZW1vdmVdIG9uIGV2ZXJ5IGt2LXBhaXIsIGl0IHdpbGxcbiAgICAgIGluc3RlYWQganVzdCBzZXQgdGhlIG91dHB1dCB0byB3aGF0ZXZlciB5b3UndmUgcGFzc2VkIGFzIFtpbml0XS5cbiAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mIFtyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XSBpcyBbZmFsc2VdLCBzbyB0aGlzIG9wdGltaXphdGlvblxuICAgICAgZG9lcyBub3QgYXBwbHkgYXV0b21hdGljYWxseS5cblxuICAgICAgW2ZpbmFsaXplXSBkZWZhdWx0cyB0byBbRm4uaWRdIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGFjY3VtdWxhdG9yIHZhbHVlXG4gICAgICBpcyBzdG9yZWQgYW5kIHJldHVybmVkIGR1cmluZyBzdGFiaWxpemF0aW9uLiAgWW91IGNhbiB1c2UgaXQgdG8gZS5nLiBwcm9jZXNzIHRoZVxuICAgICAgZm9sZCBvcGVyYXRpb25zIGluIGEgZGlmZmVyZW50IG9yZGVyLiAqKVxuICB2YWwgdW5vcmRlcmVkX2ZvbGRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3Vub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFdIGlzIHNpbWlsYXIgdG8gW3Vub3JkZXJlZF9mb2xkXSwgYnV0IGl0IGFsc29cbiAgICAgIGRlcGVuZHMgb24gYW5vdGhlciBhcmJpdHJhcnkgaW5jcmVtZW50YWwgdmFsdWUgd2hpY2ggY2FuIGJlIGZhY3RvcmVkIGludG9cbiAgICAgIHRoZSBmb2xkaW5nIGNvbXB1dGF0aW9uLiAqKVxuICB2YWwgdW5vcmRlcmVkX2ZvbGRfd2l0aF9leHRyYVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/ZXh0cmFfZXF1YWw6KCdleHRyYSAtPiAnZXh0cmEgLT4gYm9vbClcbiAgICAtPiA/dXBkYXRlOihrZXk6J2sgLT4gb2xkX2RhdGE6J3YgLT4gbmV3X2RhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdlKSBNYXAudCAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiA/ZmluYWxpemU6KCdhY2MgLT4gJ2FjYylcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gKCgnaywgJ3YsICdlKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoJ2V4dHJhLCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gZXh0cmFfY2hhbmdlZDpcbiAgICAgICAgIChvbGRfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gbmV3X2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IGlucHV0OignaywgJ3YsICdlKSBNYXAudFxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICgnYWNjLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbY3V0b2ZmXSBhcHBsaWVzIGEgY3V0b2ZmIHRvIHZhbHVlcyBpbiB0aGUgbWFwIGFzIHRoZXkgcGFzcyB0aHJvdWdoIHRoZVxuICAgICAgZnVuY3Rpb24uICBJdCBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgY2FsbGluZyBbSW5jcl9tYXAubWFwJ10gd2l0aCBhblxuICAgICAgW0luY3Iuc2V0X2N1dG9mZl0gaW5zaWRlLCBidXQgd2l0aCBjb25zaWRlcmFibHkgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZFxuICAgICAgbWVtb3J5IHVzYWdlLiAqKVxuICB2YWwgY3V0b2ZmXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIEdpdmVuIGFuIGlucHV0IG1hcCBhbmQgYSBmdW5jdGlvbiBtYXBwaW5nIGEga3YtcGFpciB0byBhIG5ld1xuICAgICAgdmFsdWUsIFttYXBpX2NvdW50XSB3aWxsIGNvbXB1dGUgYSBtdWx0aS1zZXQga2V5ZWQgb24gdGhhdFxuICAgICAgbmV3IHZhbHVlLlxuXG4gICAgICBBbnkgdmFsdWUgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBhIGNvdW50IG9mIFwiMFwiIGlzIGluc3RlYWRcbiAgICAgIHJlbW92ZWQgZnJvbSB0aGUgbWFwLlxuXG4gICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgW2ZdIGlzIHF1aXRlIGZhc3QgYXMgdGhlIGZ1bmN0aW9uIHdpbGwgYmVcbiAgICAgIGNhbGxlZCBtb3JlIG9mdGVuIHRoYW4gc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgaXQgZG9lcyB0aGlzXG4gICAgICBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW5nIGFuIGV4dHJhIG1hcC4gIElmIFtmXSBpcyB2ZXJ5IHNsb3dcbiAgICAgIGFuZCB5b3UgZG9uJ3QgbWluZCB0aGUgZXh0cmEgYWxsb2NhdGlvbnMsIHVzZVxuICAgICAgW0luY3JfbWFwLmluZGV4X2J5aV0gY29tcG9zZWQgd2l0aCBbSW5jcl9tYXAubWFwIH5mOk1hcC5sZW5ndGhdICopXG4gIHZhbCBtYXBpX2NvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2sxLCAndiwgJ2NtcDEpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCBpbnQsICdjbXAyKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogVGhlIHNhbWUgYXMgW21hcGlfY291bnRdIGJ1dCB0aGUgW2ZdIGZ1bmN0aW9uIG9ubHkgZ2V0cyB0byBzZWUgdGhlXG4gICAgICBkYXRhIGluc3RlYWQgb2YgYm90aCB0aGUga2V5IGFuZCB0aGUgZGF0YS4gKilcbiAgdmFsIG1hcF9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrMSwgJ3YsICdjbXAxKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCBpbnQsICdjbXAyKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIHNtYWxsZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcGlfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcGlfbWF4XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcF9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gKCdyIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIHNtYWxsZXN0IGRhdGEgdmFsdWUgZnJvbSB0aGUgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWluX3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IGRhdGEgdmFsdWUgZnJvbSB0aGUgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWF4X3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIFttaW4gKiBtYXhdIHdoZXJlIHRoZSB2YWx1ZSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyXG4gICAgICBpbiB0aGUgaW5wdXQgbWFwICopXG4gIHZhbCBtYXBpX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoKCdyICogJ3IpIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgW21pbiAqIG1heF0gd2hlcmUgdGhlIHZhbHVlIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXJcbiAgICAgIGluIHRoZSBpbnB1dCBtYXAgKilcbiAgdmFsIG1hcF9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gKCgnciAqICdyKSBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBhbmQgbGFyZ2VzdCBkYXRhIHZhbHVlIGZyb20gdGhlIGlucHV0IG1hcC4gKilcbiAgdmFsIHZhbHVlX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoKCd2ICogJ3YpIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuXG4gICgqKiBMaWtlIFttZXJnZV0gaW4gW0Jhc2UuTWFwLm1lcmdlXS4gTm90ZSB0aGF0IFtmXSBpcyBjYWxsZWQgYXQgbW9zdCBvbmNlIHBlciBrZXkgaW5cbiAgICAgIGFueSBnaXZlbiBzdGFiaWxpemF0aW9uLiAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbbWVyZ2VfYm90aF9zYW1lXSBpcyBsaWtlIFttZXJnZV0sIGJ1dCBvcHRpbWl6ZWQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBvbmx5IGNhcmVcbiAgICAgIGFib3V0IHRoZSBjYXNlIHdoZXJlIGJvdGggbWFwcyBjb250YWluIGEgcGFydGljdWxhciBrZXkuICopXG4gIHZhbCBtZXJnZV9ib3RoX3NvbWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gP291dF9lcXVhbDooJ3YzIC0+ICd2MyAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gJ3YxIC0+ICd2MiAtPiAndjMpXG4gICAgLT4gKCgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogTGlrZSBbbWVyZ2VdLCBidXQgb3BlcmF0aW5nIHVzaW5nIGluY3JlbWVudGFsIG5vZGVzLiBUaGlzIGlzIGEgZ29vZCB1c2UgY2FzZSBmb3JcbiAgICAgIFtwcHhfcGF0dGVybl9iaW5kXS4gKilcbiAgdmFsIG1lcmdlJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOigndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOlxuICAgICAgICAgKGtleTona1xuICAgICAgICAgIC0+ICgoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCd2MyBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHVuemlwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICdhICogJ2IsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICdhLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnQgKiAoKCdrLCAnYiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bnppcF9tYXBpXSBpcyBzaW1pbGFyIHRvIFtMaXN0LnVuemlwXSwgYnV0IGZvciBpbmNyZW1lbnRhbCBtYXBzLiBOb3RlIHRoYXQgW2ZdIG1heVxuICAgICAgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIGEgc2luZ2xlIGVsZW1lbnQuICopXG4gIHZhbCB1bnppcF9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9yaWdodF9yZXN1bHRfZXF1YWw6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3YxICogJ3YyKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgKiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW56aXBfbWFwaSddIGlzIGxpa2UgW3VuemlwX21hcGldLCBidXQgYWxsb3dzIHlvdSB0byBkZWZpbmUgdGhlIG1hcHBpbmcgZnJvbSB0aGVcbiAgICAgIGlucHV0IG1hcCdzIGVsZW1lbnRzIHRvIHRoZSBvdXRwdXQgbWFwcycgZWxlbWVudHMgaW5jcmVtZW50YWxseS5cblxuICAgICAgVGhlIG5haXZlIGltcGxlbWVudGF0aW9uIChzZWUgYmVsb3cpIHByb2R1Y2VzIHdvcnNlIEluY3JlbWVudGFsIGdyYXBocy5cblxuICAgICAge1tcbiAgICAgICAgbGV0IHRlbXAgPVxuICAgICAgICAgIEluY3JfbWFwLm1hcGknIGlucHV0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgZiB+a2V5IH5kYXRhIHw+IFR1cGxlMi51bmN1cnJ5IEluY3IuYm90aClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBJbmNyX21hcC5tYXAgdGVtcCB+ZjpUdXBsZTIuZ2V0MSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBJbmNyX21hcC5tYXAgdGVtcCB+ZjpUdXBsZTIuZ2V0MiBpblxuICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgXX0gKilcbiAgdmFsIHVuemlwX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOigndiwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAoJ3YxLCAndykgSW5jcmVtZW50YWwudCAqICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgKiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBUaGlzIGlzIHRoZSBcImVhc3lcIiB2ZXJzaW9uIG9mIFtqb2luXSAqKVxuICB2YWwgZmxhdHRlblxuICAgIDogICd3IEluY3JlbWVudGFsLlN0YXRlLnRcbiAgICAtPiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBUaGUgbm9uLWluY3JlbWVudGFsIHNlbWFudGljcyBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBmdW5jdGlvbi4gIEl0c1xuICAgICAgcHVycG9zZSBpcyB0byBjb2xsYXBzZSB0aGUgZXh0cmEgbGV2ZWwgb2YgaW5jcmVtZW50YWxpdHkgYXQgdGhlIGxldmVsIG9mIHRoZSBkYXRhIG9mXG4gICAgICB0aGUgbWFwLiopXG4gIHZhbCBqb2luXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgc2VwYXJhdGVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGtleXNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAnYykgU2V0LnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBbcmFua10gb2YgYSBrZXkgKGdpdmVuIGluY3JlbWVudGFsbHkpIGluc2lkZSBvZiBhIG1hcCAoYWxzb1xuICAgICAgaW5jcmVtZW50YWwpLiAgVGhlIHRyYWRpdGlvbmFsIFtNYXAucmFua10gZnVuY3Rpb24gaXMgTyhuKSwgYW5kIHRoaXMgaW5jcmVtZW50YWxcbiAgICAgIHJhbmsgZnVuY3Rpb24gaGFzIHRoZSBmb2xsb3dpbmcgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzOlxuXG4gICAgICBkZWZpbml0aW9uczpcbiAgICAgIG4gOiB0aGUgc2l6ZSBvZiB0aGUgbWFwXG4gICAgICByIDogdGhlIHRpbWUgdG8gY29tcHV0ZSBbTWFwLnN5bW1ldHJpY19kaWZmXSBiZXR3ZWVuIHRoZSB0d28gbWFwc1xuICAgICAgayA6IHRoZSBjaGFuZ2UgaW4gcmFuayBvZiB0aGUga2V5IGJldHdlZW4gdHdvIHN0YWJpbGl6YXRpb25zXG5cbiAgICAgIG5vdGUgdGhhdCBbcl0gYW5kIFtrXSBhcmUgX211Y2hfIHNtYWxsZXIgdGhhbiBbbl0gZm9yIG1vc3QgcHJhY3RpY2FsIHB1cnBvc2VzXG5cbiAgICAgIC0gTyhsb2cgbikgd2hlbiB0aGUga2V5IGlzIG5vdCBpbiB0aGUgbWFwLlxuICAgICAgICBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvdGhlciBldmVyeSBvdGhlciBzY2VuYXJpby5cbiAgICAgIC0gTyhuKSBvbiB0aGUgaW5pdGlhbCBzdGFiaWxpemF0aW9uXG4gICAgICAtIE8obikgd2hlbiB0aGUga2V5IHRyYW5zaXRpb25zIGZyb20gbm90IGJlaW5nIGluIHRoZSBtYXAgdG8gYmVpbmcgaW4gdGhlIG1hcFxuICAgICAgLSBPKGxvZyBuICsgcikgd2hlbiB0aGUgbWFwIGNoYW5nZXNcbiAgICAgIC0gTyhsb2cgbiArIGspIHdoZW4gdGhlIGtleSBjaGFuZ2VzXG4gICAgICAtIE8obG9nIG4gKyByICsgaykgd2hlbiBib3RoIGtleSBhbmQgbWFwIGNoYW5nZSAqKVxuICB2YWwgcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgQmFzZS5NYXAudCwgJ3N0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoJ2ssICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKGludCBvcHRpb24sICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtzdWJyYW5nZSBtYXAgKG1pbiwgbWF4KV0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBzdWJtYXAgdGhhdCBpbmNsdWRlcyBhbGwgb2YgdGhlXG4gICAgICBrZXlzIGFuZCBkYXRhIGZyb20gW21hcF0gYmV0d2VlbiBbbWluXSBhbmQgW21heF0sIGFuZCBub25lIG9mIHRoZSBrZXlzIG91dHNpZGUgdGhlXG4gICAgICByYW5nZS5cblxuICAgICAgW3N1YnJhbmdlIG1hcCBOb25lXSBpcyB0aGUgZW1wdHkgbWFwLiBbcmFuZ2VdIGJlaW5nIFtOb25lXSBtZWFucyBubyBlbGVtZW50cyBhcmVcbiAgICAgIGNob3Nlbi5cblxuICAgICAgTm90ZSB0aGF0IGluY3JlbWVudGFsIGNoYW5nZXMgaGF2ZSBhIHJ1bnRpbWUgb2YgTygoayArIG0pIGxvZyBuKSB3aGVyZSBrIGlzIHRoZSBzaXplXG4gICAgICBvZiB0aGUgY2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2YgdGhlIGNoYW5nZXMgdG8gdGhlXG4gICAgICBlbGVtZW50cyBjb250YWluZWQgYnkgdGhlIHJhbmdlLiBUaGUgY29tcGxleGl0eSBvZiB0aGUgaW5pdGlhbCBjb21wdXRhdGlvbiBpcyB0aGVcbiAgICAgIHNhbWUgYXMgdGhlIGluY3JlbWVudGFsIGNvbXB1dGF0aW9uLCB3aXRoIHNvbWUgc2ltcGxpZmljYXRpb24uIGsgPSAwIGJlY2F1c2Ugd2UgaGF2ZVxuICAgICAgbm90IG1hZGUgYW55IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgbWFwIHlldCwgYW5kIG0gZXF1YWxzIHRoZSBzaXplIG9mIHRoZSByYW5nZSxcbiAgICAgIGJlY2F1c2UgdGhlIGluaXRpYWwgcmFuZ2UgaXMgZW1wdHkuICopXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCAoJ2sgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqICdrIE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnQpIG9wdGlvblxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3N1YnJhbmdlX2J5X3JhbmsgbWFwIChzLCBlKV0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBzdWJtYXAgdGhhdCBpbmNsdWRlcyAoZS1zKzEpXG4gICAgICBrZXlzIGJldHdlZW4gcy10aCBhbmQgZS10aCwgaW5jbHVzaXZlLlxuXG4gICAgICBJZiBzIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gbWFwIGxlbmd0aCwgdGhlIHJlc3VsdCBpcyBlbXB0eS5cbiAgICAgIElmIGUgaXMgZ3JlYXRlciBvciBlcXVhbCB0byBtYXAgbGVuZ3RoLCB0aGUgcmVzdWx0IGNvbnRhaW5zIGtleXMgZnJvbSBzLXRoIHRvIHRoZVxuICAgICAgbGFzdCBvbmUuXG5cbiAgICAgIFJhaXNlcyBmb3IgaW52YWxpZCBpbmRpY2VzIC0gcyA8IDAgb3IgZSA8IHMuXG5cbiAgICAgIFJ1bnRpbWUgb2YgdGhlIGluaXRpYWwgY29tcHV0YXRpb24gaXMgTyhtaW4oZSwgbi1zKSArIGxvZyhuKSksIGkuZS4gbGluZWFyLFxuICAgICAgYnV0IG9wdGltaXplZCBmb3IgcmFuZ2VzIGNsb3NlIHRvIGJlZ2lubmluZyBvciBlbmQuXG5cbiAgICAgIFJ1bnRpbWUgb2YgdGhlIGluY3JlbWVudGFsIGNvbXB1dGF0aW9uIGlzIE8obG9nKG4pICsgayArIChtK20nKSAqIGxvZyhuKSkgd2hlcmU6XG4gICAgICAtIGsgaXMgdGhlIHNpemUgb2YgdGhlIGRpZmZcbiAgICAgIC0gbSBpcyB0aGUgdG90YWwgaW1wYWN0IG9mIG1hcCBjaGFuZ2VzIG9uIHRoZSByYW5nZSwgYm91bmRlZCBieSBrIChlLmcuIGlmIHdlIGFkZFxuICAgICAgICAxMDAxIGtleXMgYW5kIHJlbW92ZSAxMDAwIGJlbG93IHMsIHRoZW4gbSA9IDEpXG4gICAgICAtIG0nID0gTyggfG5ldyBzIC0gb2xkIHN8ICsgfG5ldyBlIC0gb2xkIGV8ICkuXG4gICopXG4gIHZhbCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoIGludCBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtyZWtleV0gdHJhbnNmb3JtcyBhIG1hcCBieSBtb2RpZnlpbmcgdGhlIHR5cGUgb2YgdGhlIGtleS4gIFRoZSB1c2VyIGlzXG4gICAgICByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBbZl0gZG9lc24ndCByZXR1cm4gdGhlIHNhbWUgb3V0cHV0IGtleSBmb3JcbiAgICAgIG11bHRpcGxlIGlucHV0IGtleXMuXG5cbiAgICAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBbZl0gaXMgY2hlYXAgdG8gY29tcHV0ZSBhbmQgYWNjb3JkaW5nbHkgbWF5IGNhbGxcbiAgICAgIGl0IG11bHRpcGxlIHRpbWVzLiAqKVxuICB2YWwgcmVrZXlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnazEsICd2LCAnY21wMSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonazEgLT4gZGF0YTondiAtPiAnazIpXG4gICAgLT4gKCgnazIsICd2LCAnY21wMikgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtpbmRleF9ieWkgbWFwIH5jb21wYXJhdG9yIH5pbmRleF0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBtYXAtb2YtbWFwcyB3aGVyZSBlYWNoXG4gICAgICBrZXktZGF0YSBwYWlyIG9mIHRoZSBpbnB1dCBtYXAgaXMgcHJlc2VudCBpbiBvbmUgKG9yIG5vbmUpIG9mIHRoZSBpbm5lciBtYXBzLlxuICAgICAgW2luZGV4XSBzcGVjaWZpZXMgdGhlIG91dGVyIG1hcCBrZXkgdW5kZXIgd2hpY2ggZWFjaCBvcmlnaW5hbCBrZXktZGF0YSBwYWlyIGlzXG4gICAgICBmb3VuZC5cblxuICAgICAgQWxsIG9mIHRoZSByZXN1bHRpbmcgaW5uZXIgbWFwcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBub24tZW1wdHk7IGlmIHRoZSBpbm5lciBtYXBcbiAgICAgIHdvdWxkIG90aGVyd2lzZSBiZSBlbXB0eSwgdGhlbiB0aGUga2V5IGZvciB0aGF0IG1hcCBpcyBpbnN0ZWFkIHJlbW92ZWQgZnJvbSB0aGVcbiAgICAgIG91dGVyIG1hcC5cblxuICAgICAgQW4gYWxsLWF0LW9uY2UgdmVyc2lvbiBvZiBbaW5kZXhfYnldIHdvdWxkIGxvb2sgbGlrZTpcblxuICAgICAge1tcbiAgICAgICAgbGV0IGluZGV4X2J5aSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4ID1cbiAgICAgICAgICBNYXAudG9fYWxpc3QgbWFwXG4gICAgICAgICAgfD4gTGlzdC5maWx0ZXJfbWFwIH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSBpbmRleCAtPiBTb21lIChpbmRleCwgKGtleSwgZGF0YSkpKVxuICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdF9tdWx0aSBjb21wYXJhdG9yXG4gICAgICAgICAgfD4gTWFwLm1hcCB+ZjooTWFwLm9mX2FsaXN0X2V4biAoTWFwLmNvbXBhcmF0b3JfcyBtYXApKVxuICAgICAgICA7O1xuICAgICAgXX0gKilcbiAgdmFsIGluZGV4X2J5aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KGtleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcblxuICAoKiogW2luZGV4X2J5IG1hcCB+Y29tcGFyYXRvciB+aW5kZXhdIGlzIGxpa2UgW2luZGV4X2J5aSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4XSwgYnV0XG4gICAgICB0aGUgW2luZGV4XSBmdW5jdGlvbiBkb2VzIG5vdCB0YWtlIHRoZSBpbm5lciBtYXAncyBba2V5XS4gKilcbiAgdmFsIGluZGV4X2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooJ3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcblxuICB2YWwgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ID91cGRhdGU6XG4gICAgICAgICAob3V0ZXJfa2V5OidvdXRlcl9rZXlcbiAgICAgICAgICAtPiBpbm5lcl9rZXk6J2lubmVyX2tleVxuICAgICAgICAgIC0+IG9sZF9kYXRhOid2XG4gICAgICAgICAgLT4gbmV3X2RhdGE6J3ZcbiAgICAgICAgICAtPiAnYWNjXG4gICAgICAgICAgLT4gJ2FjYylcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDoob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihvdXRlcl9rZXk6J291dGVyX2tleSAtPiBpbm5lcl9rZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3RyYW5zcG9zZV0gZmxpcHMgdGhlIG9yZGVyIG9mIGEgZG91Ymx5IG5lc3RlZCBpbmNyZW1lbnRhbCBtYXAuXG5cbiAgICAgIEFsbCBpbm5lciBtYXAgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhdCBsZWFzdCBvbmUgZWxlbWVudC4gKilcbiAgdmFsIHRyYW5zcG9zZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2syLCAnazJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCgnazEsICgnazIsICd2LCAnazJfY21wKSBNYXAudCwgJ2sxX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnazIsICgnazEsICd2LCAnazFfY21wKSBNYXAudCwgJ2syX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGNvbGxhcHNlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICggKCAnb3V0ZXJfa2V5ICogJ2lubmVyX2tleVxuICAgICAgICAgLCAndlxuICAgICAgICAgLCAoJ291dGVyX2NtcCwgJ2lubmVyX2NtcCkgVHVwbGUyLmNvbXBhcmF0b3Jfd2l0bmVzcyApXG4gICAgICAgICAgIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtjb2xsYXBzZV9ieV0gaXMgc2ltaWxhciB0byBbY29sbGFwc2VdLCBidXQgaXQgYWxsb3dzIHRoZSB1c2VyIHRvXG4gICAgICBjaG9vc2UgaG93IHRvIGNvbWJpbmUgdGhlIHR3byBrZXlzIGZyb20gdGhlIG91dGVyIGFuZCBpbm5lciBtYXBzLlxuICAgICAgVGhpcyBkb2VzIG1lYW4gdGhhdCBpdCdzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgaW1wbGVtZW50b3Igb2YgdGhlXG4gICAgICBbbWVyZ2Vfa2V5c10gZnVuY3Rpb24gdG8gdXBob2xkIHRoaXMgaW52YXJpYW50OlxuXG4gICAgICA+IGEgbWVyZ2VkLWtleSBiZWluZyBlcXVhbCB0byBhbm90aGVyIG1lcmdlZC1rZXkgaW1wbGllcyB0aGF0IHRoZVxuICAgICAgPiBvdXRlci1rZXlzIGFuZCBpbm5lci1rZXlzIHdoaWNoIHdlcmUgdXNlZCB0byBidWlsZCB0aGUgbWVyZ2VkIGtleXMgYWxzb1xuICAgICAgPiBjb21wYXJlIHRvIGJlIGVxdWFsIHRvIG9uZSBhbm90aGVyXG5cbiAgICAgIFRoZSBbfmNvbXBhcmF0b3JdIGFyZ3VtZW50IHRoZSBmaXJzdC1jbGFzcyBtb2R1bGUgb2YgdGhlIG91dHB1dCBrZXksIGl0XG4gICAgICB1c3VhbGx5IGxvb2tzIGxpa2UgdGhpczpcbiAgICAgIFsgfmNvbXBhcmF0b3I6KG1vZHVsZSBDb21iaW5lZF9rZXkpIF1cbiAgICAgIGJ1dCBtYWtlIHN1cmUgdGhhdCB0aGUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFtDb21wYXJhdG9yLlNdIHNpZ25hdHVyZS4gKilcbiAgdmFsIGNvbGxhcHNlX2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gbWVyZ2Vfa2V5czooJ291dGVyX2tleSAtPiAnaW5uZXJfa2V5IC0+ICdjb21iaW5lZF9rZXkpXG4gICAgLT4gY29tcGFyYXRvcjooJ2NvbWJpbmVkX2tleSwgJ2NvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgoJ2NvbWJpbmVkX2tleSwgJ3YsICdjb21iaW5lZF9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb252ZXJ0IGEgbWFwIHdpdGggdHVwbGVzIGZvciBrZXlzIGludG8gYSBuZXN0ZWQgbWFwLiBUaGlzIG9wZXJhdGlvbiBpcyByb3VnaGx5IHRoZVxuICAgICAgaW52ZXJzZSBvZiBbY29sbGFwc2VdLCB0aG91Z2ggaWYgdGhlcmUgYXJlIG91dGVyIGtleXMgaW4gdGhlIHVuY29sbGFwc2VkIG1hcCB0aGF0XG4gICAgICBjb3JyZXNwb25kIHRvIGVtcHR5IGlubmVyIG1hcHMsIHRoZSBvdXRlciBrZXlzIHdpbGwgYmUgZHJvcHBlZCBmcm9tIHRoZSBleHBhbmRlZFxuICAgICAgbWFwLiAqKVxuICB2YWwgZXhwYW5kXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ291dGVyX2tleSAqICdpbm5lcl9rZXksICd2LCAndHVwbGVfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBvdXRlcl9jb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5uZXJfY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGNvdW50aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiAoaW50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBjb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChpbnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZvcl9hbGxpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmb3JfYWxsXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoXywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gKGJvb2wsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGV4aXN0c2lcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKGJvb2wsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGV4aXN0c1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBJbmNyZW1lbnRhbGx5IGNvbXB1dGUgdGhlIHN1bSBvZiBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGUgbWFwLlxuXG4gICAgICBCZXdhcmUgb2YgZmxvYXQncyBuZWdhdGl2ZSBpbmZpbml0aWVzLiBUaGV5IGFyZW4ndCBjb21tdXRhdGl2ZSBhbmQgd2lsbCBtaXNiZWhhdmVcbiAgICAgIGhlcmUuXG4gICopXG4gIHZhbCBzdW1cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKG1vZHVsZSBBYnN0cmFjdF9hbGdlYnJhLkNvbW11dGF0aXZlX2dyb3VwLldpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA9ICd1KVxuICAgIC0+IGY6KCd2IC0+ICd1KVxuICAgIC0+ICgndSwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogWygnaywgJ3YpIExvb2t1cC50XSBwcm92aWRlcyBhIHdheSB0byBsb29rdXAga2V5cyBpbiBhIG1hcCB3aGljaCB1c2VzIHN5bW1ldHJpY1xuICAgICAgZGlmZnMgdG8gdHJpZ2dlciB1cGRhdGVzIG9mIHRoZSBsb29rdXBzLlxuXG4gICAgICBUaGUgY29tcGxleGl0eSBvZiBhbiB1cGRhdGUgZGVwZW5kcyBvbjpcbiAgICAgIC0gW25dOiB0aGUgbnVtYmVyIG9mIGtleXMgaW4gdGhlIGxhcmdlciBvZiB0aGUgb2xkL3VwZGF0ZWQgaW5wdXQgbWFwXG4gICAgICAtIFtrXTogdGhlIG51bWJlciBvZiBsb29rdXAgbm9kZXMgY3JlYXRlZCB1c2luZyBbZmluZF1cbiAgICAgIC0gW21dOiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzeW1kaWZmIG9mIHRoZSBtYXBzXG4gICAgICAtIFtzeW1kaWZmKG4pXTogdGhlIGNvc3Qgb2YgcGVyZm9ybWluZyB0aGUgc3ltZGlmZiBvbiB0aGUgbWFwIChtIDw9IHN5bWRpZmYobikgPD0gbilcblxuICAgICAgRWFjaCB1cGRhdGUgc2hvdWxkIGNvc3QgW08oc3ltZGlmZihuKSArIG0gKiBsb2cgayldLCBzbyB0aGlzIHdpbGwgYmUgZWZmaWNpZW50IHdoZW5cbiAgICAgIHRoZXJlIGFyZSBhIGxvdCBvZiBsb29rdXBzIChjbG9zZSB0byBuKSBpbnRvIGEgbWFwIHdoaWNoIGNhbiBiZSBlZmZpY2llbnRseVxuICAgICAgc3ltZGlmZmVkIChhbmQgdGhlcmVmb3JlIGhhcyBhIHNtYWxsIG51bWJlciBvZiBjaGFuZ2VzIGFsc28pLiBUaGUgY29zdCBvZiB1cGRhdGluZ1xuICAgICAgd2hlbiBwZXJmb3JtaW5nIHRoZSBzYW1lIGxvb2t1cHMgYnkgbWVhbnMgb2YgW0luY3IubWFwIH5mOihmdW4gbSAtPiBNYXAuZmluZCBtIGtleSldXG4gICAgICBpcyBbTyhrICogbG9nIG4pXS5cbiAgKilcbiAgbW9kdWxlIExvb2t1cCA6IHNpZ1xuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHRcblxuICAgICgqKiBDcmVhdGUgdGhlIGxvb2t1cCBzdHJ1Y3R1cmUgb24gYW4gaW5jcmVtZW50YWwgbWFwLiAqKVxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCwgJ3cpIHRcblxuICAgICgqKiBDcmVhdGUgYSBub2RlIHdoaWNoIHBlcmZvcm1zIFtNYXAuZmluZF0gb24gdGhlIGlucHV0IG1hcC5cblxuICAgICAgICBbZmluZCAoY3JlYXRlIGluY3JfbWFwKSBrZXldIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIFtJbmNyLm1hcCB+ZjooZnVuIG0gLT5cbiAgICAgICAgTWFwLmZpbmQgbSBrZXkpIGluY3JfbWFwXSwgYnV0IHdoZW4geW91IGNhbGwgW2ZpbmRdIG1hbnkgdGltZXMgZm9yIGEgc2luZ2xlXG4gICAgICAgIFtjcmVhdGVdIHRoZSBub2RlcyBzaG91bGQgdXBkYXRlIG1vcmUgZWZmaWNpZW50bHkgaW4gc3RhYmlsaXNhdGlvbiB3aGVuIFtpbmNyX21hcF1cbiAgICAgICAgY2hhbmdlcyBpbiBhIHdheSB3aGljaCBjYW4gYmUgZWZmaWNpZW50bHkgZGlmZmVkLlxuXG4gICAgICAgIFRoaXMgd2lsbCByZS11c2UgZXhpc3Rpbmcgbm9kZXMgd2hlbiBpdCBjYW4sIGJ1dCB3aWxsIG5vdCBhbHdheXMgZG8gc28uXG4gICAgKilcbiAgICB2YWwgZmluZCA6ICgnaywgJ3YsIF8sICd3KSB0IC0+ICdrIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgICAoKiogQSBjb252ZW5pZW50IHdheSB0byByZWZlciB0byB0aGUgdHlwZSBmb3IgYSBnaXZlbiBrZXkuICopXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAoJ3YsICd3KSB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzLCAndykgdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA6IHNpZ1xuICAgICAgdmFsIHNleHBfb2ZfdCA6ICgnayAtPiBTZXhwLnQpIC0+ICgndiAtPiBTZXhwLnQpIC0+ICgnaywgJ3YsICdjbXAsIF8pIHQgLT4gU2V4cC50XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgICAgIDogIGZyb206aW50XG4gICAgICAtPiB0b186aW50XG4gICAgICAtPiAoJ2EsICdiLCAnYykgQmFzZS5NYXAudFxuICAgICAgLT4gKCdhICogJ2Egb3B0aW9uKSBvcHRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgU19nZW4gPSBTX2dlblxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHN0YXRlX3dpdG5lc3NcblxuICAgIGluY2x1ZGVcbiAgICAgIFNfZ2VuXG4gICAgICB3aXRoIHR5cGUgJ2EgSW5jci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgYW5kIHR5cGUgJ2EgSW5jci5DdXRvZmYudCA9ICdhIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgICAgYW5kIHR5cGUgKCdrLCAndiwgJ2NtcCkgTG9va3VwLnQgPSAoJ2ssICd2LCAnY21wLCBzdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlMpIDpcbiAgICBTIHdpdGggdHlwZSBzdGF0ZV93aXRuZXNzIDo9IEluY3Iuc3RhdGVfd2l0bmVzcyBhbmQgbW9kdWxlIEluY3IgOj0gSW5jclxuZW5kXG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIEluY3JfbWFwX2ludGZcblxubGV0IG5vX2luc3RydW1lbnRhdGlvbiA9IHsgSW5zdHJ1bWVudGF0aW9uLmYgPSAoZnVuIGYgLT4gZiAoKSkgfVxuXG4oKiogVGhpcyB0eXBlIGxldHMgdXMgY2FwdHVyZSB0aGUga2luZCBvZiBtYXAgZnVuY3Rpb24gYmVpbmcgcGVyZm9ybWVkLCBzbyB3ZSBjYW4gd2l0aFxuICAgIG9uZSBpbXBsZW1lbnRhdGlvbiBwZXJmb3JtIG1hcCBhbmQgZmlsdGVyLW1hcCBvcGVyYXRpb25zLlxuXG4gICAgSGVyZSwgWydpbnB1dF9kYXRhXSBpcyB0aGUgdHlwZSBvZiBkYXRhIGluIHRoZSBpbnB1dCBtYXAsIFsnb3V0cHV0X2RhdGFdIGlzIHRoZSB0eXBlXG4gICAgb2YgZGF0YSBpbiB0aGUgb3V0cHV0IG1hcCwgYW5kIFsnZl9vdXRwdXRdIGlzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgW35mXSBmdW5jdGlvblxuICAgIHBhc3NlZCB0byB0aGUgbWFwcGluZyBmdW5jdGlvbi4gKilcbm1vZHVsZSBNYXBfdHlwZSA9IHN0cnVjdFxuICB0eXBlICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnZl9vdXRwdXQpIHQgPVxuICAgIHwgTWFwIDogKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSkgdFxuICAgIHwgRmlsdGVyX21hcCA6ICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEgb3B0aW9uKSB0XG5cbiAgKCogVGhlIGV4dHJhIHR5cGUgdmFyaWFibGUgJ2EgaXMgdG8gYWxsb3cgaW4gZnV0dXJlOlxuICAgICB8IEZpbHRlciA6ICgnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgYm9vbCkgdCAqKVxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIGxldCB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIGkgfmYgPVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQlbWFwIGEgPSBpIGluXG4gICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYSBpblxuICAgICAgb2xkIDo9IFNvbWUgKGEsIGIpO1xuICAgICAgYilcbiAgOztcblxuICBsZXQgY3V0b2ZmID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgfmN1dG9mZiA9XG4gICAgbGV0IGRhdGFfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZSA9XG4gICAgICBJbmNyZW1lbnRhbC5DdXRvZmYuc2hvdWxkX2N1dG9mZiBjdXRvZmYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG4gICAgaW5cbiAgICB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+ZjooZnVuIH5vbGQgY3VyIC0+XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+IGN1clxuICAgICAgfCBTb21lIChfb2xkX2luLCBvbGQpIC0+XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsIH5pbml0Om9sZCBvbGQgY3VyIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgIHwgYExlZnQgX29sZCAtPiBNYXAucmVtb3ZlIGFjYyBrZXlcbiAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IE1hcC5hZGRfZXhuIGFjYyB+a2V5IH5kYXRhOm5ld19cbiAgICAgICAgICB8IGBVbmVxdWFsIChfb2xkLCBuZXdfdmFsdWUpIC0+IE1hcC5zZXQgYWNjIH5rZXkgfmRhdGE6bmV3X3ZhbHVlKSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID8oZmluYWxpemUgPSBGbi5pZClcbiAgICAgICAgPyhyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ID0gZmFsc2UpXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBsZXQgZGVmYXVsdCB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjID1cbiAgICAgICAgYWRkIH5rZXkgfmRhdGE6bmV3X2RhdGEgKHJlbW92ZSB+a2V5IH5kYXRhOm9sZF9kYXRhIGFjYylcbiAgICAgIGluXG4gICAgICBPcHRpb24udmFsdWUgdXBkYXRlIH5kZWZhdWx0XG4gICAgaW5cbiAgICB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+ZjooZnVuIH5vbGQgbmV3X2luIC0+XG4gICAgICBsZXQgYWNjID1cbiAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNwZWNpYWxpemVkX2luaXRpYWwgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTWFwLmZvbGQgfmluaXQgfmY6YWRkIG5ld19pblxuICAgICAgICAgICB8IFNvbWUgaW5pdGlhbCAtPiBpbml0aWFsIH5pbml0IG5ld19pbilcbiAgICAgICAgfCBTb21lIChvbGRfaW4sIG9sZF9vdXQpIC0+XG4gICAgICAgICAgaWYgcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSAmJiBNYXAubGVuZ3RoIG5ld19pbiA9IDBcbiAgICAgICAgICB0aGVuIGluaXRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICB+aW5pdDpvbGRfb3V0XG4gICAgICAgICAgICAgIG9sZF9pblxuICAgICAgICAgICAgICBuZXdfaW5cbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjY1xuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IG5ld18gLT4gYWRkIH5rZXkgfmRhdGE6bmV3XyBhY2NcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChvbGQsIG5ld18pIC0+IHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpvbGQgfm5ld19kYXRhOm5ld18gYWNjKVxuICAgICAgaW5cbiAgICAgIGZpbmFsaXplIGFjYylcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgIGluY3JfbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIG1hdGNoIHVwZGF0ZSB3aXRoXG4gICAgICB8IFNvbWUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgICBhZGRcbiAgICAgICAgICAgIH5vdXRlcl9rZXlcbiAgICAgICAgICAgIH5pbm5lcl9rZXlcbiAgICAgICAgICAgIH5kYXRhOm5ld19kYXRhXG4gICAgICAgICAgICAocmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgaW5jcl9tYXBcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5vbGRfZGF0YTpvbGRfaW5uZXJfbWFwIH5uZXdfZGF0YTpuZXdfaW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICAoTWFwLmZvbGRfc3ltbWV0cmljX2RpZmYgb2xkX2lubmVyX21hcCBuZXdfaW5uZXJfbWFwIH5kYXRhX2VxdWFsKVxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gYWNjIChpbm5lcl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgZGF0YV9yZW1vdmVkIC0+IHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6ZGF0YV9yZW1vdmVkIGFjY1xuICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9hZGRlZCAtPiBhZGQgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfYWRkZWQgYWNjXG4gICAgICAgICAgICB8IGBVbmVxdWFsIChvbGRfZGF0YSwgbmV3X2RhdGEpIC0+XG4gICAgICAgICAgICAgIHVwZGF0ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MpIFtAbm9udGFpbF0pXG4gICAgICB+YWRkOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICBNYXAuZm9sZCBpbm5lcl9tYXAgfmluaXQ6YWNjIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgICAgYWRkIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgOztcblxuICBsZXQgd2l0aF9jb21wYXJhdG9yJyBnZXRfY29tcGFyYXRvciB4IGYgPVxuICAgIEluY3JlbWVudGFsLmJpbmQgKEluY3JlbWVudGFsLmZyZWV6ZSAoSW5jcmVtZW50YWwubWFwIHggfmY6Z2V0X2NvbXBhcmF0b3IpKSB+ZlxuICA7O1xuXG4gICgqKiBDYXB0dXJlcyB0aGUgY29tcGFyYXRvciAod2hpY2ggY2FuJ3QgY2hhbmdlIGFueXdheSwgc2luY2UgdGhlIHR5cGUgZGV0ZXJtaW5lcyB0aGVcbiAgICAgIGNvbXBhcmF0b3IpIGJ5IGZyZWV6aW5nIHRoZSBjb3JyZXNwb25kaW5nIG1hcC4gIE5vdGUgdGhhdCBieSBmaXJzdCB1c2luZyBJbmNyZW1lbnRhbC5tYXAgdG9cbiAgICAgIGdldCB0aGUgY29tcGFyYXRvciBvdXQgb2YgdGhlIG1hcCwgd2UgYWxsb3cgdGhlIGluaXRpYWwgbWFwIGl0c2VsZiB0byBiZSBnYXJiYWdlXG4gICAgICBjb2xsZWN0ZWQgKilcbiAgbGV0IHdpdGhfY29tcGFyYXRvciBtYXAgZiA9IHdpdGhfY29tcGFyYXRvcicgTWFwLmNvbXBhcmF0b3IgbWFwIGZcblxuICBsZXQgb2Zfc2V0ID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBzZXQgPVxuICAgIHdpdGhfY29tcGFyYXRvcicgU2V0LmNvbXBhcmF0b3Igc2V0IChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IG9sZF9pbnB1dCA9IHJlZiAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBsZXQgb2xkX291dHB1dCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBJbmNyZW1lbnRhbC5tYXAgc2V0IH5mOihmdW4gbmV3X2lucHV0IC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IG5ld19vdXRwdXQgPVxuICAgICAgICAgICAgU2VxdWVuY2UuZm9sZFxuICAgICAgICAgICAgICAoU2V0LnN5bW1ldHJpY19kaWZmICFvbGRfaW5wdXQgbmV3X2lucHV0KVxuICAgICAgICAgICAgICB+aW5pdDohb2xkX291dHB1dFxuICAgICAgICAgICAgICB+ZjooZnVuIG91dHB1dCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRmlyc3QgayAtPiBNYXAucmVtb3ZlIG91dHB1dCBrXG4gICAgICAgICAgICAgICAgfCBTZWNvbmQgayAtPiBNYXAuYWRkX2V4biBvdXRwdXQgfmtleTprIH5kYXRhOigpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgb2xkX2lucHV0IDo9IG5ld19pbnB1dDtcbiAgICAgICAgICBvbGRfb3V0cHV0IDo9IG5ld19vdXRwdXQ7XG4gICAgICAgICAgbmV3X291dHB1dCkpKVxuICA7O1xuXG4gIGxldCBnZW5lcmljX21hcGlcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKG1hcCA6ICgoJ2tleSwgaW5wdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6aW5wdXRfZGF0YSAtPiBmX291dHB1dClcbiAgICA9XG4gICAgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBtYXAgfmY6KGZ1biB+b2xkIGlucHV0IC0+XG4gICAgICBtYXRjaCBvbGQsIE1hcC5sZW5ndGggaW5wdXQgd2l0aFxuICAgICAgfCBfLCAwIHwgTm9uZSwgXyAtPlxuICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiAoTWFwLm1hcGkgaW5wdXQgfmYgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50KVxuICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+IE1hcC5maWx0ZXJfbWFwaSBpbnB1dCB+ZilcbiAgICAgIHwgU29tZSAob2xkX2lucHV0LCBvbGRfb3V0cHV0KSwgXyAtPlxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgIG9sZF9pbnB1dFxuICAgICAgICAgIGlucHV0XG4gICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICB+aW5pdDpvbGRfb3V0cHV0XG4gICAgICAgICAgfmY6KGZ1biBvdXRwdXQgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgYFJpZ2h0IG5ld19kYXRhIHwgYFVuZXF1YWwgKF8sIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgICAgICAgIChtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6cmVzXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICAgICAgICB8IFNvbWUgb3V0cHV0X2RhdGEgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YTpvdXRwdXRfZGF0YSkpKSlcbiAgOztcblxuICBsZXQgbWFwaSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBnZW5lcmljX21hcGkgTWFwIH5pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGdlbmVyaWNfbWFwaSBGaWx0ZXJfbWFwIH5pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mXG4gIDs7XG5cbiAgbGV0IG1hcCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gaTEgaTIgfmYgPVxuICAgIGxldCBvbGQgPSByZWYgTm9uZSBpblxuICAgIEluY3JlbWVudGFsLm1hcDIgaTEgaTIgfmY6KGZ1biBhMSBhMiAtPlxuICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGIgPSBmIH5vbGQ6IW9sZCBhMSBhMiBpblxuICAgICAgICBvbGQgOj0gU29tZSAoYTEsIGEyLCBiKTtcbiAgICAgICAgYikpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZXh0cmFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID8oZmluYWxpemUgPSBGbi5pZClcbiAgICAgICAgPyhyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ID0gZmFsc2UpXG4gICAgICAgIG1hcFxuICAgICAgICBleHRyYVxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICAgICAgfmV4dHJhX2NoYW5nZWRcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBsZXQgZGVmYXVsdCB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIGV4dHJhID1cbiAgICAgICAgYWRkIH5rZXkgfmRhdGE6bmV3X2RhdGEgKHJlbW92ZSB+a2V5IH5kYXRhOm9sZF9kYXRhIGFjYyBleHRyYSkgZXh0cmFcbiAgICAgIGluXG4gICAgICBPcHRpb24udmFsdWUgdXBkYXRlIH5kZWZhdWx0XG4gICAgaW5cbiAgICB3aXRoX29sZDIgfmluc3RydW1lbnRhdGlvbiBtYXAgZXh0cmEgfmY6KGZ1biB+b2xkIG5ld19pbiBuZXdfZXh0cmEgLT5cbiAgICAgIGxldCBhY2MgPVxuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggc3BlY2lhbGl6ZWRfaW5pdGlhbCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIE1hcC5mb2xkIG5ld19pbiB+aW5pdCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCB+a2V5IH5kYXRhIGFjYyBuZXdfZXh0cmEpXG4gICAgICAgICAgIHwgU29tZSBpbml0aWFsIC0+IGluaXRpYWwgfmluaXQgbmV3X2luIG5ld19leHRyYSlcbiAgICAgICAgfCBTb21lIChvbGRfaW4sIG9sZF9leHRyYSwgb2xkX291dCkgLT5cbiAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgIGlmIGV4dHJhX2VxdWFsIG9sZF9leHRyYSBuZXdfZXh0cmFcbiAgICAgICAgICAgIHRoZW4gb2xkX291dFxuICAgICAgICAgICAgZWxzZSBleHRyYV9jaGFuZ2VkIH5vbGRfZXh0cmEgfm5ld19leHRyYSB+aW5wdXQ6b2xkX2luIG9sZF9vdXRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHJldmVydF90b19pbml0X3doZW5fZW1wdHkgJiYgTWFwLmxlbmd0aCBuZXdfaW4gPSAwXG4gICAgICAgICAgdGhlbiBpbml0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgIG9sZF9pblxuICAgICAgICAgICAgICBuZXdfaW5cbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjYyBuZXdfZXh0cmFcbiAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IGFkZCB+a2V5IH5kYXRhOm5ld18gYWNjIG5ld19leHRyYVxuICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKG9sZCwgbmV3XykgLT5cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpvbGQgfm5ld19kYXRhOm5ld18gYWNjIG5ld19leHRyYSlcbiAgICAgIGluXG4gICAgICBmaW5hbGl6ZSBhY2MpXG4gIDs7XG5cbiAgbGV0IG1hcGlfY291bnRcbiAgICAgICAgKHR5cGUgYSBjbXApXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICBpbnB1dFxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKSlcbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gKHZhbCBjb21wYXJhdG9yKSBpblxuICAgIGxldCBhZGQgbmV3X2tleSBhY2MgPVxuICAgICAgTWFwLnVwZGF0ZSBhY2MgbmV3X2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgfCBTb21lIG4gLT4gbiArIDEpXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlIG5ld19rZXkgYWNjID1cbiAgICAgIE1hcC5jaGFuZ2UgYWNjIG5ld19rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAxIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIG4gLT4gU29tZSAobiAtIDEpKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICBpbnB1dFxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIE0pKVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCAoZiB+a2V5IH5kYXRhKSBhY2MpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIChmIH5rZXkgfmRhdGEpIGFjYylcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIGxldCBwcmV2X2tleSA9IGYgfmtleSB+ZGF0YTpvbGRfZGF0YSBpblxuICAgICAgICBsZXQgbmV3X2tleSA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICBpZiBNLmNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIGFjY1xuICAgICAgICBlbHNlIGFjYyB8PiByZW1vdmUgcHJldl9rZXkgfD4gYWRkIG5ld19rZXkpXG4gIDs7XG5cbiAgbGV0IG1hcF9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXykgLT4gU29tZSBtaW5cbiAgOztcblxuICBsZXQgbWF4X2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1heCwgXykgLT4gU29tZSBtYXhcbiAgOztcblxuICBsZXQgYm91bmRzX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCwgTWFwLm1heF9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWluLCBfKSwgU29tZSAobWF4LCBfKSAtPiBTb21lIChtaW4sIG1heClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcFxuICAgICAgfmY6bWluX2hlbHBlclxuICAgICAgKG1hcGlfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9tYXggP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICB+ZjptYXhfaGVscGVyXG4gICAgICAobWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIH5mOmJvdW5kc19oZWxwZXJcbiAgICAgIChtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcF9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtYXBfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX3ZhbHVlID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtYXhfdmFsdWUgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1hcF9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgZiBkYXRhKVxuICA7O1xuXG4gIGxldCB2YWx1ZV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgIH5vbGRcbiAgICAgICAgfm5ld19sZWZ0X21hcFxuICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICB+ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICAgIH5kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbmV3X2xlZnRfbWFwIGluXG4gICAgbGV0IG9sZF9sZWZ0X21hcCwgb2xkX3JpZ2h0X21hcCwgb2xkX291dHB1dCA9XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZWZ0X2RpZmYgPVxuICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9sZWZ0X21hcCBuZXdfbGVmdF9tYXAgfmRhdGFfZXF1YWw6ZGF0YV9lcXVhbF9sZWZ0XG4gICAgaW5cbiAgICBsZXQgcmlnaHRfZGlmZiA9XG4gICAgICBNYXAuc3ltbWV0cmljX2RpZmYgb2xkX3JpZ2h0X21hcCBuZXdfcmlnaHRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfcmlnaHRcbiAgICBpblxuICAgICgqIFdlIG1lcmdlIHRoZSB0d28gc2lkZXMgb2YgdGhlIGRpZmZzIHRvZ2V0aGVyIHNvIHdlIGNhbiBtYWtlIHN1cmUgdG8gaGFuZGxlIGVhY2hcbiAgICAgICBrZXkgZXhhY3RseSBvbmNlLiBUaGlzIHJlbGllcyBvbiBzeW1tZXRyaWMgZGlmZiBnaXZpbmcgc29ydGVkIG91dHB1dC4gKilcbiAgICBTZXF1ZW5jZS5tZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgIGxlZnRfZGlmZlxuICAgICAgcmlnaHRfZGlmZlxuICAgICAgfmNvbXBhcmU6KGZ1biAobGVmdF9rZXksIF8pIChyaWdodF9rZXksIF8pIC0+IGNvbXBhcmF0b3IuY29tcGFyZSBsZWZ0X2tleSByaWdodF9rZXkpXG4gICAgfD4gU2VxdWVuY2UuZm9sZCB+aW5pdDpvbGRfb3V0cHV0IH5mOihmdW4gb3V0cHV0IGRpZmZfZWxlbWVudCAtPlxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgIHwgTGVmdCAoa2V5LCBfKSB8IFJpZ2h0IChrZXksIF8pIC0+IGtleVxuICAgICAgICB8IEJvdGggKChsZWZ0X2tleSwgXyksIChfcmlnaHRfa2V5LCBfKSkgLT5cbiAgICAgICAgICAoKiBjb21wYXJpc29uIGZ1bmN0aW9ucyBjYW4gYmUgZXhwZW5zaXZlISAqKVxuICAgICAgICAgICgqIGFzc2VydCAoY29tcGFyYXRvci5jb21wYXJlIGxlZnRfa2V5IHJpZ2h0X2tleSA9IDApOyAqKVxuICAgICAgICAgIGxlZnRfa2V5XG4gICAgICBpblxuICAgICAgZiB+b2xkX291dHB1dCB+a2V5IH5vdXRwdXQgfmRpZmZfZWxlbWVudClcbiAgOztcblxuICBsZXQgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgPSBmdW5jdGlvblxuICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgOztcblxuICBsZXQgbWVyZ2VcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgbGVmdF9tYXBcbiAgICAgICAgcmlnaHRfbWFwXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHdpdGhfb2xkMlxuICAgICAgbGVmdF9tYXBcbiAgICAgIHJpZ2h0X21hcFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmY6KGZ1biB+b2xkIG5ld19sZWZ0X21hcCBuZXdfcmlnaHRfbWFwIC0+XG4gICAgICAgIG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgICAgfm9sZFxuICAgICAgICAgIH5uZXdfbGVmdF9tYXBcbiAgICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICAgIH5kYXRhX2VxdWFsX2xlZnRcbiAgICAgICAgICB+ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgICAgIH5mOihmdW4gfm9sZF9vdXRwdXQ6XyB+a2V5IH5vdXRwdXQgfmRpZmZfZWxlbWVudCAtPlxuICAgICAgICAgICAgKCogVGhlc2UgdmFsdWVzIHJlcHJlc2VudCB3aGV0aGVyIHRoZXJlIGlzIGRhdGEgZm9yIHRoZSBnaXZlbiBrZXkgaW4gdGhlIG5ld1xuICAgICAgICAgICAgICAgaW5wdXQgaW4gdGhlIGxlZnQgYW5kIHJpZ2h0IG1hcC4gKilcbiAgICAgICAgICAgIGxldCBsZWZ0X2RhdGFfb3B0LCByaWdodF9kYXRhX29wdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgICAgIHwgQm90aCAoKF8sIGxlZnRfZGlmZiksIChfLCByaWdodF9kaWZmKSkgLT5cbiAgICAgICAgICAgICAgICBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCBsZWZ0X2RpZmYsIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmZcbiAgICAgICAgICAgICAgfCBMZWZ0IChfLCBsZWZ0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmLCBNYXAuZmluZCBuZXdfcmlnaHRfbWFwIGtleVxuICAgICAgICAgICAgICB8IFJpZ2h0IChfLCByaWdodF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgIE1hcC5maW5kIG5ld19sZWZ0X21hcCBrZXksIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmZcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgb3V0cHV0X2RhdGFfb3B0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgeCwgTm9uZSAtPiBmIH5rZXkgKGBMZWZ0IHgpXG4gICAgICAgICAgICAgIHwgTm9uZSwgU29tZSB5IC0+IGYgfmtleSAoYFJpZ2h0IHkpXG4gICAgICAgICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZiB+a2V5IChgQm90aCAoeCwgeSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggb3V0cHV0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGEpKVxuICA7O1xuXG4gIGxldCBtZXJnZV9ib3RoX3NvbWVcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhvdXRfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICBsZWZ0X21hcFxuICAgICAgICByaWdodF9tYXBcbiAgICAgICAgfmZcbiAgICA9XG4gICAgd2l0aF9vbGQyXG4gICAgICBsZWZ0X21hcFxuICAgICAgcmlnaHRfbWFwXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICB+ZjooZnVuIH5vbGQgbmV3X2xlZnRfbWFwIG5ld19yaWdodF9tYXAgLT5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBuZXdfbGVmdF9tYXAgaW5cbiAgICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgbWF0Y2ggTWFwLmxlbmd0aCBuZXdfbGVmdF9tYXAsIE1hcC5sZW5ndGggbmV3X3JpZ2h0X21hcCB3aXRoXG4gICAgICAgICgqIEJlY2F1c2Ugd2Ugb25seSBjYXJlIGFib3V0IGtleXMgdGhhdCBhcmUgaW4gYm90aCBtYXBzLCBpZiBlaXRoZXIgbWFwIGlzXG4gICAgICAgICAgIGVtcHR5LCBiYWlsIGVhcmx5LiAqKVxuICAgICAgICB8IDAsIF8gfCBfLCAwIC0+IGVtcHR5XG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgICAgICB+b2xkXG4gICAgICAgICAgICB+bmV3X2xlZnRfbWFwXG4gICAgICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICAgICAgfmRhdGFfZXF1YWxfbGVmdFxuICAgICAgICAgICAgfmRhdGFfZXF1YWxfcmlnaHRcbiAgICAgICAgICAgIH5mOihmdW4gfm9sZF9vdXRwdXQgfmtleSB+b3V0cHV0IH5kaWZmX2VsZW1lbnQgLT5cbiAgICAgICAgICAgICAgbGV0IGxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0ID1cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgICAgICAgfCBCb3RoICgoXywgbGVmdF9kaWZmKSwgKF8sIHJpZ2h0X2RpZmYpKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0JWJpbmQgbGVmdF9kYXRhID0gbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIHJpZ2h0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZWZ0X2RhdGEsIHJpZ2h0X2RhdGFcbiAgICAgICAgICAgICAgICB8IExlZnQgKF8sIGxlZnRfZGlmZikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCViaW5kIGxlZnRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGV0JW1hcCByaWdodF9kYXRhID0gTWFwLmZpbmQgbmV3X3JpZ2h0X21hcCBrZXkgaW5cbiAgICAgICAgICAgICAgICAgIGxlZnRfZGF0YSwgcmlnaHRfZGF0YVxuICAgICAgICAgICAgICAgIHwgUmlnaHQgKF8sIHJpZ2h0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIG1hdGNoIGFybSBiaW5kcyBbcmlnaHRfZGF0YV0gZmlyc3QgYmVjYXVzZSB0aGUgbWFwIGxvb2t1cFxuICAgICAgICAgICAgICAgICAgICAgaXMgc2xvd2VyIHRoYW4gY2FsbGluZyBbbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnRdLiAqKVxuICAgICAgICAgICAgICAgICAgbGV0JWJpbmQgcmlnaHRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgbGVmdF9kYXRhID0gTWFwLmZpbmQgbmV3X2xlZnRfbWFwIGtleSBpblxuICAgICAgICAgICAgICAgICAgbGVmdF9kYXRhLCByaWdodF9kYXRhXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIGxvb2sgZm9yIHRoZSBwcmV2aW91c2x5IGNvbXB1dGVkIHZhbHVlIHRvIHNlZSBpZiB3ZSBhY3R1YWxseSBuZWVkIHRvXG4gICAgICAgICAgICAgICAgIGFkZCBvciByZW1vdmUgdGhlIGtleS4gKilcbiAgICAgICAgICAgICAgbGV0IHByZXZfb3V0ID0gTWFwLmZpbmQgb2xkX291dHB1dCBrZXkgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbGVmdF9hbmRfcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBmIH5rZXkgeCB5IGluXG4gICAgICAgICAgICAgICAgKG1hdGNoIHByZXZfb3V0IHdpdGhcbiAgICAgICAgICAgICAgICAgKCogaWYgdGhlIG5ldyByZXN1bHQgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCwgZG9uJ3QgY2hhbmdlIHRoZSBtYXAgKilcbiAgICAgICAgICAgICAgICAgfCBTb21lIHByZXZfb3V0IHdoZW4gb3V0X2VxdWFsIGRhdGEgcHJldl9vdXQgLT4gb3V0cHV0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggcHJldl9vdXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gb3V0cHV0XG4gICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleSkpKVxuICA7O1xuXG4gIGxldCBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSBpbnB1dF9kYXRhIG91dHB1dF9kYXRhIGZfb3V0cHV0IHN0YXRlX3dpdG5lc3MpXG4gICAgICAgICh3aXRuZXNzIDogKGlucHV0X2RhdGEsIG91dHB1dF9kYXRhLCBmX291dHB1dCkgTWFwX3R5cGUudClcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChsaHMgOiAoKCdrZXksIGlucHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOihpbnB1dF9kYXRhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKGZfb3V0cHV0LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgbGhzIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBhY2MgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFhY2MpIGluXG4gICAgbGV0IChvbl9pbm5lcl9jaGFuZ2UgOiBrZXk6J2tleSAtPiBmX291dHB1dCAtPiB1bml0KSA9XG4gICAgICBtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IGZ1biB+a2V5IGRhdGEgLT4gYWNjIDo9IE1hcC5zZXQgIWFjYyB+a2V5IH5kYXRhXG4gICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgZnVuIH5rZXkgb3B0IC0+XG4gICAgICAgICAgbGV0IG9sZCA9ICFhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgICAgICA6PSAobWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG9sZCBrZXlcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb2xkIH5rZXkgfmRhdGEpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxoc19jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGxocyB+ZjooZnVuIG1hcCAtPlxuICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgICB+aW5pdDohcHJldl9ub2Rlc1xuICAgICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGRlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hcC5yZW1vdmUgbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSBNYXAucmVtb3ZlICFhY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmludmFsaWRhdGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBNYXAuZmluZF9leG4gIXByZXZfbWFwIGtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBPcHRpb24uaXRlciBjdXRvZmYgfmY6KGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLnNldF9jdXRvZmYgKEUuTm9kZS53YXRjaCBub2RlKSBjKTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBsaHNfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KG9uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc2V0IG5vZGVzIH5rZXkgfmRhdGE6KG5vZGUsIHVzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHByZXZfbm9kZXMgOj0gbmV3X25vZGVzO1xuICAgICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgbGhzX2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGknID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgIE1hcF90eXBlLkZpbHRlcl9tYXBcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcFxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwaScgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgTWFwX3R5cGUuTWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcCcgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWVyZ2UnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbF9sZWZ0ID9kYXRhX2VxdWFsX3JpZ2h0IG1hcDEgbWFwMiB+ZiA9XG4gICAgbWVyZ2VcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsX2xlZnRcbiAgICAgID9kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICBtYXAxXG4gICAgICBtYXAyXG4gICAgICB+ZjooZnVuIH5rZXk6XyBkaWZmIC0+IFNvbWUgZGlmZilcbiAgICB8PiBmaWx0ZXJfbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmIH5mOihmdW4gfmtleSB+ZGF0YTpkaWZmIC0+IGYgfmtleSBkaWZmKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvclxuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsIDogdiAtPiB2IC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGxlZnRfcmVzdWx0X2VxdWFsIDogdjEgLT4gdjEgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8ocmlnaHRfcmVzdWx0X2VxdWFsIDogdjIgLT4gdjIgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChpbnB1dCA6ICgoJ2tleSwgdiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6diAtPiB2MSAqIHYyKVxuICAgIDogKCgna2V5LCB2MSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICogKCgna2V5LCB2MiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXQgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgbGVmdF9hY2MgOiAoJ2tleSwgdjEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWxlZnRfYWNjKSBpblxuICAgIGxldCByaWdodF9hY2MgOiAoJ2tleSwgdjIsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmlnaHRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyaWdodF9hY2MpIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBpbnB1dF9jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlZnQsIHJpZ2h0ID1cbiAgICAgICAgICAgIG1hdGNoIE1hcC5pc19lbXB0eSAhcHJldl9tYXAsIE1hcC5pc19lbXB0eSBtYXAgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIHwgZmFsc2UsIHRydWUgLT4gZW1wdHlfbWFwLCBlbXB0eV9tYXBcbiAgICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgKCogTWFwcGluZyBvbiBhIG1hcCBpcyB3YXkgZmFzdGVyIHRoYW4gc3ltbWV0cmljIGRpZmZpbmcgYW5kIHRoZW5cbiAgICAgICAgICAgICAgICAgYnVpbGRpbmcgdGhlIG1hcHMgdXAgcGllY2UgYnkgcGllY2UsIHNvIHdlIGRvIHRoaXMgd2hlbmV2ZXIgd2VcbiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbiBmcm9tIFwiZW1wdHlcIiB0byBcInNvbWV0aGluZ1wiLCB3aGljaCB3aWxsIGFsbW9zdCBhbHdheXNcbiAgICAgICAgICAgICAgICAgaGFwcGVuIG9uIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICAgICAgICBsZXQgbGVmdCA9XG4gICAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGwsIF8gPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICAgIHIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxlZnQsIHJpZ2h0XG4gICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgfmluaXQ6KCFsZWZ0X2FjYywgIXJpZ2h0X2FjYylcbiAgICAgICAgICAgICAgICB+ZjooZnVuIChsZWZ0LCByaWdodCkgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAocHJldiwgbmV3XykgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfYSwgcHJldl9iID0gZiB+a2V5IH5kYXRhOnByZXYgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19hLCBuZXdfYiA9IGYgfmtleSB+ZGF0YTpuZXdfIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBsZWZ0X3Jlc3VsdF9lcXVhbCBwcmV2X2EgbmV3X2FcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOm5ld19hXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgcmlnaHRfcmVzdWx0X2VxdWFsIHByZXZfYiBuZXdfYlxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpuZXdfYlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE1hcC5yZW1vdmUgbGVmdCBrZXksIE1hcC5yZW1vdmUgcmlnaHQga2V5XG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCBlbGVtZW50IC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gZiB+a2V5IH5kYXRhOmVsZW1lbnQgaW5cbiAgICAgICAgICAgICAgICAgICAgTWFwLnNldCBsZWZ0IH5rZXkgfmRhdGE6YSwgTWFwLnNldCByaWdodCB+a2V5IH5kYXRhOmIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgIWxlZnRfYWNjIGxlZnQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgbGVmdF9yZXN1bHQ7XG4gICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsICFyaWdodF9hY2MgcmlnaHQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgcmlnaHRfcmVzdWx0O1xuICAgICAgICAgIGxlZnRfYWNjIDo9IGxlZnQ7XG4gICAgICAgICAgcmlnaHRfYWNjIDo9IHJpZ2h0O1xuICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfY2hhbmdlKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICAgIGlucHV0XG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgICAgaW5wdXRcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgICAgICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICB+ZlxuICAgICAgICB8PiBUdXBsZTIudW5jdXJyeSBJbmNyZW1lbnRhbC5ib3RoKVxuICAgIGluXG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmZzdCBwYWlyLCBJbmNyZW1lbnRhbC5tYXAgfmY6c25kIHBhaXJcbiAgOztcblxuICBsZXQgdW56aXAgP2luc3RydW1lbnRhdGlvbiA/bGVmdF9yZXN1bHRfZXF1YWwgP3JpZ2h0X3Jlc3VsdF9lcXVhbCBpbnB1dCA9XG4gICAgbGV0IGRhdGFfZXF1YWwgPVxuICAgICAgT3B0aW9uLm1hcDIgbGVmdF9yZXN1bHRfZXF1YWwgcmlnaHRfcmVzdWx0X2VxdWFsIH5mOihmdW4gbCByIC0+XG4gICAgICAgIFR1cGxlMi5lcXVhbCB+ZXExOmwgfmVxMjpyKVxuICAgIGluXG4gICAgdW56aXBfbWFwaVxuICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGRhdGEpXG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOih2LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKHYxLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50ICogKHYyLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCB2MSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICogKCgna2V5LCB2MiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXQgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHByZXZfbm9kZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBsZWZ0X29uX2lubmVyX2NoYW5nZSB+a2V5IGRhdGEgPSBsZWZ0X2FjYyA6PSBNYXAuc2V0ICFsZWZ0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5IGRhdGEgPSByaWdodF9hY2MgOj0gTWFwLnNldCAhcmlnaHRfYWNjIH5rZXkgfmRhdGEgaW5cbiAgICBsZXQgcmVjIGlucHV0X2NoYW5nZSA9XG4gICAgICBsYXp5XG4gICAgICAgIChJbmNyZW1lbnRhbC5tYXAgaW5wdXQgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgICAgfmluaXQ6IXByZXZfbm9kZXNcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9sZWZ0X2RlcCwgX3JpZ2h0X2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGxlZnRfZGVwLCByaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXAucmVtb3ZlIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IGxlZnRfZGVwO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBsZWZ0X2FjYyA6PSBNYXAucmVtb3ZlICFsZWZ0X2FjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgICByaWdodF9hY2MgOj0gTWFwLnJlbW92ZSAhcmlnaHRfYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLml0ZXIgY3V0b2ZmIH5mOihmdW4gYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdF9pbmNyLCByaWdodF9pbmNyID0gZiB+a2V5IH5kYXRhOihFLk5vZGUud2F0Y2ggbm9kZSkgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZSBsZWZ0X2luY3Igfm9uX2NoYW5nZToobGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRfaW5jclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zZXRcbiAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICB+ZGF0YToobm9kZSwgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCwgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXApKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgcHJldl9ub2RlcyA6PSBuZXdfbm9kZXM7XG4gICAgICAgICAgICAgcHJldl9tYXAgOj0gbWFwKSkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpJyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICAgIG1hcFxuICAgICAgICB8PiB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvcicgfmluc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIH5jb21wYXJhdG9yIH5mXG4gICAgICAgIHw+IFR1cGxlMi51bmN1cnJ5IEluY3JlbWVudGFsLmJvdGgpXG4gICAgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0IHBhaXIsIEluY3JlbWVudGFsLm1hcCB+ZjpzbmQgcGFpclxuICA7O1xuXG4gIGxldCBrZXlzID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgYWRkIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQuYWRkIGFjYyBrZXkgaW5cbiAgICAgIGxldCByZW1vdmUgfmtleSB+ZGF0YTpfIGFjYyA9IFNldC5yZW1vdmUgYWNjIGtleSBpblxuICAgICAgbGV0IGRhdGFfZXF1YWwgXyBfID0gdHJ1ZSBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgfmluaXQ6KFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICB+aW5pdDooZW1wdHksIGVtcHR5KVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YTpfIH5uZXdfZGF0YTpkYXRhIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCBkYXRhIC0+IE1hcC5zZXQgZmlyc3QgfmtleSB+ZGF0YSwgTWFwLnJlbW92ZSBzZWNvbmQga2V5XG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBNYXAucmVtb3ZlIGZpcnN0IGtleSwgTWFwLnNldCBzZWNvbmQgfmtleSB+ZGF0YSlcbiAgICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IGRhdGEgLT4gTWFwLmFkZF9leG4gZmlyc3QgfmtleSB+ZGF0YSwgc2Vjb25kXG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBmaXJzdCwgTWFwLmFkZF9leG4gc2Vjb25kIH5rZXkgfmRhdGEpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhOl8gKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgTWFwLnJlbW92ZSBmaXJzdCBrZXksIE1hcC5yZW1vdmUgc2Vjb25kIGtleSkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBtYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mXG4gICAgfD4gcGFydGl0aW9uX21hcGkgP2luc3RydW1lbnRhdGlvbiB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBkYXRhKVxuICA7O1xuXG4gIGxldCBmbGF0dGVuIHN0YXRlIG1hcCA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IHJlc3VsdCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcCkpIGluXG4gICAgbGV0IG5vZGUgPSBFLk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT4gIXJlc3VsdCkgaW5cbiAgICBNYXAuaXRlcmkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YTppbmNyIC0+XG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbmNyIH5vbl9jaGFuZ2U6KGZ1biBhIC0+XG4gICAgICAgICAgIHJlc3VsdCA6PSBNYXAuc2V0ICFyZXN1bHQgfmtleSB+ZGF0YTphKSkpO1xuICAgIEUuTm9kZS53YXRjaCBub2RlXG4gIDs7XG5cbiAgbGV0IGpvaW5fd2l0aF9jb21wYXJhdG9yIH5pbnN0cnVtZW50YXRpb24gbWFwX2luY3IgfmNvbXBhcmF0b3IgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIG1hcF9pbmNyIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHJlc3VsdF9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IG9sZF9tYXBfb2ZfaW5jcnMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGN1cnJlbnRfZGVwZW5kZW5jaWVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJlc3VsdF9tYXApIGluXG4gICAgbGV0IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZSA9XG4gICAgICBsZXQgbmV3X2RlcCA9XG4gICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGUgZGF0YV9ub2RlIH5vbl9jaGFuZ2U6KGZ1biBkYXRhIC0+XG4gICAgICAgICAgcmVzdWx0X21hcCA6PSBNYXAuc2V0ICFyZXN1bHRfbWFwIH5rZXkgfmRhdGEpXG4gICAgICBpblxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCBuZXdfZGVwO1xuICAgICAgTWFwLnNldCBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhOm5ld19kZXBcbiAgICBpblxuICAgIGxldCByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5ID1cbiAgICAgIGxldCBkZXAgPSBNYXAuZmluZF9leG4gY3VycmVudF9kZXBlbmRlbmNpZXMga2V5IGluXG4gICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgIHJlc3VsdF9tYXAgOj0gTWFwLnJlbW92ZSAhcmVzdWx0X21hcCBrZXk7XG4gICAgICBNYXAucmVtb3ZlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIGtleVxuICAgIGluXG4gICAgbGV0IGxoc19jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIG1hcF9pbmNyIH5mOihmdW4gbWFwX29mX2luY3JzIC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IG5ld19kZXBlbmRlbmN5X21hcCA9XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICFvbGRfbWFwX29mX2luY3JzXG4gICAgICAgICAgICAgIG1hcF9vZl9pbmNyc1xuICAgICAgICAgICAgICB+aW5pdDohY3VycmVudF9kZXBlbmRlbmNpZXNcbiAgICAgICAgICAgICAgfmY6KGZ1biBjdXJyZW50X2RlcGVuZGVuY2llcyAoa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5XG4gICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9ub2RlIC0+IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZVxuICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF8sIGRhdGFfbm9kZSkgLT5cbiAgICAgICAgICAgICAgICAgIHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfD4gYWRkX3N1Ym5vZGUgfmtleSB+ZGF0YV9ub2RlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY3VycmVudF9kZXBlbmRlbmNpZXMgOj0gbmV3X2RlcGVuZGVuY3lfbWFwO1xuICAgICAgICAgIG9sZF9tYXBfb2ZfaW5jcnMgOj0gbWFwX29mX2luY3JzKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgbGhzX2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIHJlc3VsdFxuICA7O1xuXG4gIGxldCBqb2luID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBqb2luX3dpdGhfY29tcGFyYXRvciB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBtb2R1bGUgU2VwYXJhdGVfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBpbnB1dF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgOyBtdXRhYmxlIGV4cGVydF9ub2RlcyA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBvdXRwdXRfbWFwIDogKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudFxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSBjb21wYXJhdG9yID1cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB7IGlucHV0X21hcCA9IGVtcHR5OyBleHBlcnRfbm9kZXMgPSBlbXB0eTsgb3V0cHV0X21hcCA9IGVtcHR5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9sb29rdXBfbm9kZSBzdGF0ZSB0IGtleSA9XG4gICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPiBNYXAuZmluZF9leG4gdC5pbnB1dF9tYXAga2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzZXBhcmF0ZSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgaW5wdXRfbWFwIH5kYXRhX2VxdWFsID1cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dF9tYXAgaW5cbiAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXRfbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IHN0YXRlID0gU2VwYXJhdGVfc3RhdGUuY3JlYXRlIGNvbXBhcmF0b3IgaW5cbiAgICAgIGxldCBvdXRwdXRfbWFwX25vZGUgPVxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgaW5cbiAgICAgIGxldCBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkID1cbiAgICAgICAgbGV0IGRlcGVuZGVuY3kgPVxuICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5EZXBlbmRlbmN5LmNyZWF0ZSAoTGF6eS5mb3JjZV92YWwgaW5wdXRfbWFwX2NoYW5nZWQpXG4gICAgICAgIGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgZGVwZW5kZW5jeVxuICAgICAgaW5cbiAgICAgICgqIFdlIHdhbnQgdG8gbWFrZSBub2RlcyBkZXBlbmQgb24gW2lucHV0X21hcF9jaGFuZ2VkXSBzbyB0aGF0IFtpbnB1dF9tYXBfY2hhbmdlZF1cbiAgICAgICAgIGlzIGFsbG93ZWQgdG8gbWFrZSB0aGVtIHN0YWxlLCBidXQgd2UgZG8gbm90IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGZvciBhbnlcbiAgICAgICAgIG90aGVyIHJlYXNvbi4gU28gd2UgbWFrZSBbaW5wdXRfbWFwX2NoYW5nZWRdIGEgdW5pdCBpbmNyZW1lbnRhbCAodGhhdCB0aGVyZWZvcmVcbiAgICAgICAgIG5ldmVyIGNoYW5nZXMpIGFuZCB0aGlzIHdheSBbb3V0cHV0X21hcF9ub2RlXSBhbmQgdGhlIGxvb2t1cCBub2RlcyB3aWxsIG9ubHkgYmVcbiAgICAgICAgIHJlY29tcHV0ZWQgd2hlbiB0aGV5IGFyZSBleHBsaWNpdGx5IG1hZGUgc3RhbGUuXG4gICAgICAqKVxuICAgICAgbGV0IHJlYyBpbnB1dF9tYXBfY2hhbmdlZCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgcHJldl9pbnB1dF9tYXAgPSBzdGF0ZS5pbnB1dF9tYXAgaW5cbiAgICAgICAgICAgICAgIGxldCBleHBlcnRfbm9kZXMsIG91dHB1dF9tYXAgPVxuICAgICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICAgIHByZXZfaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgICB+aW5pdDooc3RhdGUuZXhwZXJ0X25vZGVzLCBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgICAgICAgICAgICAgIH5mOihmdW4gKGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcCkgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgYExlZnQgX29sZF92YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2xkX25vZGUgPSBNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5pbnZhbGlkYXRlIG9sZF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIG91dHB1dF9tYXBfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgTWFwLnJlbW92ZSBleHBlcnRfbm9kZXMga2V5LCBNYXAucmVtb3ZlIG91dHB1dF9tYXAga2V5XG4gICAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfbmV3X3ZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZV9zdGF0ZS5jcmVhdGVfbG9va3VwX25vZGUgaW5jcmVtZW50YWxfc3RhdGUgc3RhdGUga2V5XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgb3V0cHV0X21hcF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAoIE1hcC5hZGRfZXhuIGV4cGVydF9ub2RlcyB+a2V5IH5kYXRhOm5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgLCBNYXAuYWRkX2V4blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfmRhdGE6KEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG5vZGUpIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF9vbGRfdmFsdWUsIF9uZXdfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgKE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHN0YXRlLmlucHV0X21hcCA8LSBpbnB1dF9tYXA7XG4gICAgICAgICAgICAgICBzdGF0ZS5leHBlcnRfbm9kZXMgPC0gZXhwZXJ0X25vZGVzO1xuICAgICAgICAgICAgICAgc3RhdGUub3V0cHV0X21hcCA8LSBvdXRwdXRfbWFwKSkpXG4gICAgICBpblxuICAgICAgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBvdXRwdXRfbWFwX25vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggb3V0cHV0X21hcF9ub2RlKVxuICA7O1xuXG4gICgqIEp1c3QgZm9yIGRlcml2aW5nIHN0cnVjdHVyYWwgZXF1YWxpdHkuICopXG4gIHR5cGUgJ2EgbWF5YmVfYm91bmRfc3RydWN0dXJhbGx5ID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gICAgfCBJbmNsIG9mICdhXG4gICAgfCBFeGNsIG9mICdhXG4gICAgfCBVbmJvdW5kZWRcbiAgW0BAZGVyaXZpbmcgZXF1YWxdXG5cbiAgbGV0IHN1YnJhbmdlXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXBfaW5jciA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgcmFuZ2VcbiAgICA9XG4gICAgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gbWFwX2luY3IgcmFuZ2UgfmY6KGZ1biB+b2xkIG1hcCByYW5nZSAtPlxuICAgICAgbGV0IGNvbXBhcmUgPSAoTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICBsZXQgZXF1YWwgbCByID0gY29tcGFyZSBsIHIgPSAwIGluXG4gICAgICBsZXQgKCA+ICkgYSBiID0gY29tcGFyZSBhIGIgPiAwXG4gICAgICBhbmQgKCA+PSApIGEgYiA9IGNvbXBhcmUgYSBiID49IDAgaW5cbiAgICAgIGxldCBtYXliZV9ib3VuZF9lcXVhbCBhIGIgOiBib29sID0gZXF1YWxfbWF5YmVfYm91bmRfc3RydWN0dXJhbGx5IGVxdWFsIGEgYiBpblxuICAgICAgbGV0IHJhbmdlX2lzX2VtcHR5IH5taW4gfm1heCA6IGJvb2wgPVxuICAgICAgICBtYXRjaCBtaW4sIG1heCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkLCAoVW5ib3VuZGVkIHwgRXhjbCBfIHwgSW5jbCBfKSB8IChFeGNsIF8gfCBJbmNsIF8pLCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgICAgICAgfCBJbmNsIG1pbiwgSW5jbCBtYXggLT4gbWluID4gbWF4XG4gICAgICAgIHwgRXhjbCBtaW4sIEV4Y2wgbWF4IHwgSW5jbCBtaW4sIEV4Y2wgbWF4IHwgRXhjbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+PSBtYXhcbiAgICAgIGluXG4gICAgICBsZXQgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleSA6IGJvb2wgPVxuICAgICAgICBNYXliZV9ib3VuZC5pc19sb3dlcl9ib3VuZCBtaW4gfm9mXzprZXkgfmNvbXBhcmVcbiAgICAgICAgJiYgTWF5YmVfYm91bmQuaXNfdXBwZXJfYm91bmQgbWF4IH5vZl86a2V5IH5jb21wYXJlXG4gICAgICBpblxuICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIEVtcHR5IG5ldyByYW5nZSBtZWFucyBlbXB0eSBtYXAgKilcbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgIHwgU29tZSAoKG1pbiwgbWF4KSBhcyByYW5nZSkgLT5cbiAgICAgICAgbGV0IGZyb21fc2NyYXRjaCAoKSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6bWF4IGluXG4gICAgICAgIChtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgfCBOb25lIHwgU29tZSAoXywgTm9uZSwgXykgLT5cbiAgICAgICAgICAgKCogbm8gb2xkIHJhbmdlICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChfLCBTb21lIChvbGRfbWluLCBvbGRfbWF4KSwgXylcbiAgICAgICAgICAgd2hlbiByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbiB+bWF4Om9sZF9tYXhcbiAgICAgICAgICAgICB8fCByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heCAtPlxuICAgICAgICAgICAoKiBlbXB0eSBvbGQgcmFuZ2Ugb3Igb2xkIHJhbmdlIGRpc2pvaW50IHdpdGggbmV3ICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBTb21lICgob2xkX21pbiwgb2xkX21heCkgYXMgb2xkX3JhbmdlKSwgb2xkX3JlcykgLT5cbiAgICAgICAgICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICAgICAgICAgKCogUmV0dXJucyB0cnVlIGlmZiB0aGUga2V5IGlzIGluIGJvdGggbmV3IGFuZCBvbGQgcmFuZ2VzICopXG4gICAgICAgICAgICAgbGV0IGluX3JhbmdlX2ludGVyc2VjdGlvbiBrZXkgPVxuICAgICAgICAgICAgICAgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleVxuICAgICAgICAgICAgICAgJiYgcmFuZ2VfaW5jbHVkZXMgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heCBrZXlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEFwcGx5IGNoYW5nZXMgdG8ga2V5cyB3aGljaCBhcmUgaW4gdGhlIGludGVyc2VjdGlvbiBvZiBib3RoIHJhbmdlcy5cblxuICAgICAgICAgICAgICAgIFtvdXRzaWRlXSBpcyB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgb3V0c2lkZSB0aGUgcmFuZ2UgaW50ZXJzZWN0aW9uIHRoYXQgd2VcbiAgICAgICAgICAgICAgICB0b2xlcmF0ZSBiZWZvcmUgZ2l2aW5nIHVwIGFuZCByZWNvbnN0cnVjdGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlLiBUaGlzXG4gICAgICAgICAgICAgICAgaXMgYW4gb3B0aW1pc2F0aW9uIGluIHRoZSBjYXNlIHRoYXQgdGhlIG1hcCBjaGFuZ2VzIGluIGEgdmVyeSBiaWcgd2F5LCBhdFxuICAgICAgICAgICAgICAgIHdoaWNoIHBvaW50IGNvbXB1dGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlIGlzIGNoZWFwZXIuICAqKVxuICAgICAgICAgICAgIGxldCBhcHBseV9kaWZmX2luX2ludGVyc2VjdGlvbiAob3V0c2lkZSwgbWFwKSAoa2V5LCBkYXRhKSA9XG4gICAgICAgICAgICAgICBpZiBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5XG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXlcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YSB8IGBVbmVxdWFsIChfLCBkYXRhKSAtPiBvdXRzaWRlLCBNYXAuc2V0IG1hcCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIGxldCBvdXRzaWRlID0gb3V0c2lkZSAtIDEgaW5cbiAgICAgICAgICAgICAgICAgaWYgSW50Lk8uKG91dHNpZGUgPCAwKVxuICAgICAgICAgICAgICAgICB0aGVuIHJldHVybiAoZnJvbV9zY3JhdGNoICgpKVxuICAgICAgICAgICAgICAgICBlbHNlIG91dHNpZGUsIE1hcC5yZW1vdmUgbWFwIGtleSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEZpcnN0IHVwZGF0ZSB0aGUga2V5cyBpbiAvYm90aC8gdGhlIG9sZCBhbmQgdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICBsZXQgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb24gPVxuICAgICAgICAgICAgICAgKCogQ3V0b2ZmIHRoZSBiaWcgZGlmZiBjb21wdXRhdGlvbiBpZiB3ZSByZWFjaCBPKHxzdWJtYXB8KSBudW1iZXIgb2ZcbiAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgcmFuZ2UgKilcbiAgICAgICAgICAgICAgIGxldCBvdXRzaWRlX2N1dG9mZiA9IE1hcC5sZW5ndGggb2xkX3JlcyAvIDQgaW5cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OihvdXRzaWRlX2N1dG9mZiwgb2xkX3JlcylcbiAgICAgICAgICAgICAgICAgfmY6YXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgIHw+IHNuZFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgVHVwbGUyLmVxdWFsIH5lcTE6bWF5YmVfYm91bmRfZXF1YWwgfmVxMjptYXliZV9ib3VuZF9lcXVhbCBvbGRfcmFuZ2UgcmFuZ2VcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBUaGVyZSBhcmUgbm8ga2V5cyB0byByZW1vdmUgYW5kIGV2ZXJ5dGhpbmcgaW4gcmFuZ2UgaXMgdXBkYXRlZC4gKilcbiAgICAgICAgICAgICAgIHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAoKiBSZW1vdmUgYW55IGtleXMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgbmV3IHJhbmdlLiAqKVxuICAgICAgICAgICAgICAgbGV0IHdpdGhvdXRfa2V5c19vdXRfb2ZfcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2VcbiAgICAgICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgICAgICAgIH5sb3dlcl9ib3VuZDptaW5cbiAgICAgICAgICAgICAgICAgICB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCogQWRkIGluIGFueSBrZXlzIHdoaWNoIGFyZSBpbiB0aGUgbmV3IHJhbmdlIGJ1dCBub3QgdGhlIG9sZCByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSA9XG4gICAgICAgICAgICAgICAgIGxldCBtYXBfYXBwZW5kX2V4biBsb3dlcl9wYXJ0IHVwcGVyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICAgICAgICAgICAgICAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+XG4gICAgICAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImltcG9zc2libGUgY2FzZTogQlVHIGluIGluY3JfbWFwLm1sIHN1YnJhbmdlXCJcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbGV0IGxvd2VyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIG9sZF9taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgICAgICAgICAgICAgIHwgRXhjbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihJbmNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgICAgfCBJbmNsIG9sZF9taW4gLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6KEV4Y2wgb2xkX21pbilcbiAgICAgICAgICAgICAgICAgYW5kIHVwcGVyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIG9sZF9tYXggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgICAgICAgICAgICAgIHwgRXhjbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooSW5jbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgICAgfCBJbmNsIG9sZF9tYXggLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOihFeGNsIG9sZF9tYXgpIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbWFwX2FwcGVuZF9leG5cbiAgICAgICAgICAgICAgICAgICBsb3dlcl9wYXJ0XG4gICAgICAgICAgICAgICAgICAgKG1hcF9hcHBlbmRfZXhuIHdpdGhvdXRfa2V5c19vdXRfb2ZfcmFuZ2UgdXBwZXJfcGFydClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICB3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSkpKSlcbiAgOztcblxuICBsZXQgcmVrZXlcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3JcbiAgICAgICAgfmZcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIG1hcF9pbmNyXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yLCBbXSlcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIChvdXRwdXQsIGFkZHMpIC0+XG4gICAgICAgIGxldCBuZXdfZW50cnkgPSBmIH5rZXkgfmRhdGEsIGRhdGEgaW5cbiAgICAgICAgb3V0cHV0LCBuZXdfZW50cnkgOjogYWRkcylcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIChvdXRwdXQsIGFkZHMpIC0+IE1hcC5yZW1vdmUgb3V0cHV0IChmIH5rZXkgfmRhdGEpLCBhZGRzKVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgcHJldl9rZXkgPSBmIH5rZXkgfmRhdGE6b2xkX2RhdGEgaW5cbiAgICAgICAgbGV0IG5ld19rZXkgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgaWYgKE1hcC5jb21wYXJhdG9yIG91dHB1dCkuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIE1hcC5zZXQgb3V0cHV0IH5rZXk6bmV3X2tleSB+ZGF0YTpuZXdfZGF0YSwgYWRkc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgb3V0cHV0ID0gTWFwLnJlbW92ZSBvdXRwdXQgcHJldl9rZXkgaW5cbiAgICAgICAgICBvdXRwdXQsIChuZXdfa2V5LCBuZXdfZGF0YSkgOjogYWRkcykpXG4gICAgICB+ZmluYWxpemU6KGZ1biAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgICBMaXN0LmZvbGQgYWRkcyB+aW5pdDpvdXRwdXQgfmY6KGZ1biBvdXRwdXQgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIE1hcC5hZGRfZXhuIG91dHB1dCB+a2V5IH5kYXRhKVxuICAgICAgICBpblxuICAgICAgICBvdXRwdXQsIFtdKVxuICAgIHw+IEluY3JlbWVudGFsLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgaW5kZXhfYnlpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yXG4gICAgICAgIH5pbmRleFxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBpbm5lcl9jb21wYXJhdG9yIC0+XG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+YWRkOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgb3V0ZXJfbWFwIC0+XG4gICAgICAgICAgbWF0Y2ggaW5kZXggfmtleTppbm5lcl9rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBvdXRlcl9tYXBcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfa2V5IC0+XG4gICAgICAgICAgICBNYXAudXBkYXRlIG91dGVyX21hcCBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiBpbm5lcl9rZXkgZGF0YSB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT4gTWFwLmFkZF9leG4gaW5uZXJfbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLmNoYW5nZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcIkJVRzogSGl0IHN1cHBvc2VkbHkgaW1wb3NzaWJsZSBjYXNlIGluIEluY3JfbWFwLmluZGV4X2J5XCJcbiAgICAgICAgICAgICAgfCBTb21lIGlubmVyX21hcCAtPlxuICAgICAgICAgICAgICAgIGxldCBpbm5lcl9tYXAgPSBNYXAucmVtb3ZlIGlubmVyX21hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgaW5uZXJfbWFwIHRoZW4gTm9uZSBlbHNlIFNvbWUgaW5uZXJfbWFwKSkpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmNvbXBhcmF0b3IgfmluZGV4ID1cbiAgICBpbmRleF9ieWlcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIH5pbmRleDooZnVuIH5rZXk6XyB+ZGF0YSAtPiBpbmRleCBkYXRhKVxuICA7O1xuXG5cbiAgKCoqIEZpbmQgdHdvIGtleXMgaW4gbWFwIGJ5IGluZGV4LCBPKG4pLiBXZSB1c2UganVzdCBvbmUgZm9sZCAodHdvIE1hcC5udGggd291bGQgdXNlIHR3bylcbiAgICAgIGFuZCBvcHRpbWl6ZSBmb3Iga2V5cyBjbG9zZSB0byBlaXRoZXIgYmVnaW5uaW5nIG9yIGVuZCBieSB1c2luZyBlaXRoZXIgZm9sZCBvclxuICAgICAgZm9sZF9yaWdodC5cbiAgKilcbiAgbW9kdWxlIEtleV9zdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICdrIHQgPVxuICAgICAgfCBLbm93biBvZiAna1xuICAgICAgfCBLbm93bl9ub25lXG4gICAgICB8IFVua25vd25cblxuICAgIGxldCBpc19rbm93biA9IGZ1bmN0aW9uXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlXG4gICAgOztcblxuICAgIGxldCB0b19vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIHwgS25vd25fbm9uZSAtPiBOb25lXG4gICAgICB8IEtub3duIGsgLT4gU29tZSBrXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciAodHlwZSBrKSB+ZnJvbSB+dG9fIChtYXAgOiAoaywgXywgXykgTWFwLnQpXG4gICAgOiAoayAqIGsgb3B0aW9uKSBvcHRpb25cbiAgICA9XG4gICAgbGV0IG9wZW4gS2V5X3N0YXR1cyBpblxuICAgIGxldCBsZW4gPSBNYXAubGVuZ3RoIG1hcCBpblxuICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA+PSApIGZyb20gbGVuIHRoZW4gS25vd25fbm9uZSBlbHNlIFVua25vd24gaW5cbiAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID49ICkgdG9fIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGZpbmRfa2V5cyBmb2xkIH5zdGFydF9wb3MgfmFkdmFuY2VfcG9zID1cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgbWFwXG4gICAgICAgICAgfmluaXQ6KGJlZ2luX2tleSwgZW5kX2tleSwgc3RhcnRfcG9zKVxuICAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YTpfIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcykgLT5cbiAgICAgICAgICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA9ICkgcG9zIGZyb20gdGhlbiBLbm93biBrZXkgZWxzZSBiZWdpbl9rZXkgaW5cbiAgICAgICAgICAgIGxldCBlbmRfa2V5ID0gaWYgSW50LiggPSApIHBvcyB0b18gdGhlbiBLbm93biBrZXkgZWxzZSBlbmRfa2V5IGluXG4gICAgICAgICAgICBpZiBpc19rbm93biBiZWdpbl9rZXkgJiYgaXNfa25vd24gZW5kX2tleVxuICAgICAgICAgICAgdGhlbiByZXR1cm4gKGJlZ2luX2tleSwgZW5kX2tleSwgcG9zKVxuICAgICAgICAgICAgZWxzZSBiZWdpbl9rZXksIGVuZF9rZXksIGFkdmFuY2VfcG9zIHBvcykpXG4gICAgaW5cbiAgICBsZXQgYmVnaW5fa2V5LCBlbmRfa2V5LCBfID1cbiAgICAgICgqIFNlYXJjaGluZyBmcm9tIGxlZnQgdGFrZXMgTyh0b18pLCBmcm9tIHJpZ2h0IC0gTyhsZW4gLSBmcm9tKSwgc28gc2VsZWN0IHRoZVxuICAgICAgICAgc21hbGxlciBvbmUuICopXG4gICAgICBpZiB0b18gPCBsZW4gLSBmcm9tXG4gICAgICB0aGVuIGZpbmRfa2V5cyBNYXAuZm9sZCB+c3RhcnRfcG9zOjAgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyArIDEpXG4gICAgICBlbHNlIGZpbmRfa2V5cyBNYXAuZm9sZF9yaWdodCB+c3RhcnRfcG9zOihsZW4gLSAxKSB+YWR2YW5jZV9wb3M6KGZ1biBwb3MgLT4gcG9zIC0gMSlcbiAgICBpblxuICAgIE9wdGlvbi5tYXAgKEtleV9zdGF0dXMudG9fb3B0aW9uIGJlZ2luX2tleSkgfmY6KGZ1biBiZWdpbl9rZXkgLT5cbiAgICAgIGJlZ2luX2tleSwgS2V5X3N0YXR1cy50b19vcHRpb24gZW5kX2tleSlcbiAgOztcblxuICBsZXQgbnRoX2Zyb21fZWl0aGVyX3NpZGUgKHR5cGUgaykgbiAobWFwIDogKGssIF8sIF8pIE1hcC50KSA6IGsgb3B0aW9uID1cbiAgICBPcHRpb24ubWFwIH5mOmZzdCAoZmluZF9rZXlfcmFuZ2VfbGluZWFyIH5mcm9tOm4gfnRvXzpuIG1hcClcbiAgOztcblxuICAoKiogRmluZCBrZXkgW2J5XSBwb3NpdGlvbnMgZWFybGllci9sYXRlciBpbiBhIG1hcC4gUmV0dXJucyBub25lIGlmIG91dCBvZiBib3VuZHMuICopXG4gIGxldCByZWMgb2Zmc2V0IChrZXkgOiAnaykgKG1hcCA6ICgnaywgXywgXykgTWFwLnQpIH5ieSA6ICdrIG9wdGlvbiA9XG4gICAgaWYgSW50LiggPSApIGJ5IDBcbiAgICB0aGVuIFNvbWUga2V5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2xvc2VzdF9kaXIsIGFkZCA9XG4gICAgICAgIGlmIEludC4oIDwgKSBieSAwIHRoZW4gYExlc3NfdGhhbiwgMSBlbHNlIGBHcmVhdGVyX3RoYW4sIC0xXG4gICAgICBpblxuICAgICAgbWF0Y2ggTWFwLmNsb3Nlc3Rfa2V5IG1hcCBjbG9zZXN0X2RpciBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBvZmZzZXQga2V5IG1hcCB+Ynk6KGJ5ICsgYWRkKSlcbiAgOztcblxuICAoKiogRmluZCBob3cgd2UgbmVlZCB0byBtb3ZlIFtrZXldIGlmIFtjaGFuZ2VkX2tleV0gY2hhbmdlZCBpbiB0aGUgZ2l2ZW5cbiAgICAgIHdheSAqKVxuICBsZXQgZmluZF9vZmZzZXQgfmNvbXBhcmUgfmtleSB+Y2hhbmdlZF9rZXkgY2hhbmdlID1cbiAgICBpZiBJbnQuKCA8ICkgKGNvbXBhcmUgY2hhbmdlZF9rZXkga2V5KSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgfCBgTGVmdCBfIC0+IDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gLTFcbiAgICAgIHwgXyAtPiAwKVxuICAgIGVsc2UgMFxuICA7O1xuXG4gIGxldCByYW5rXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgIChtYXAgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChrZXkgOiAoaywgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IHNhbWVfa2V5IGEgYiA9IGNvbXBhcmVfa2V5IGEgYiA9IDAgaW5cbiAgICAgIGxldCB3aGVuX2tleV9jaGFuZ2VkIH5tYXAgfm9sZF9rZXkgfm5ld19rZXkgfm9sZF9yYW5rID1cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgbmV3X2tleSBvbGRfa2V5IDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBJZiB0aGUgbmV3IGtleSBpcyBzbWFsbGVyIHRoYW4gdGhlIG9sZCBrZXksIGZpbmQgdGhlIHNpemUgb2YgdGhlIG1hcCBzdWJyYW5nZVxuICAgICAgICAgICAgIGJldHdlZW4gdGhlbSBhbmQgc3VidHJhY3QgaXQgZnJvbSB0aGUgcHJldmlvdXMgcmFuayAqKVxuICAgICAgICAgIGxldCBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQgPSBFeGNsIG5ld19rZXksIEV4Y2wgb2xkX2tleSBpblxuICAgICAgICAgIGxldCBzdWJyYW5nZSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCBpblxuICAgICAgICAgIG9sZF9yYW5rIC0gTWFwLmxlbmd0aCBzdWJyYW5nZSAtIDEpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIE90aGVyd2lzZSwgdGhlIG5ldyBrZXkgaXMgbGFyZ2VyIHRoYW4gdGhlIG9sZCBrZXksIHNvIGZpbmQgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgICAgICAgbWFwIHN1YnJhbmdlIGJldHdlZW4gdGhlbSBhbmQgYWRkIGl0IHRvIHRoZSBwcmV2aW91cyByYW5rICopXG4gICAgICAgICAgbGV0IGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCA9IEV4Y2wgb2xkX2tleSwgRXhjbCBuZXdfa2V5IGluXG4gICAgICAgICAgbGV0IHN1YnJhbmdlID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIGluXG4gICAgICAgICAgb2xkX3JhbmsgKyBNYXAubGVuZ3RoIHN1YnJhbmdlICsgMSlcbiAgICAgIGluXG4gICAgICBsZXQgd2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5IH5vbGRfcmFuayA9XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgKCogV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZGF0YSwgc28gb3B0aW1pemUgdGhlc2UgY2hlY2tzICopXG4gICAgICAgICAgfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gdHJ1ZSlcbiAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgbmV3X21hcFxuICAgICAgICAgIH5pbml0Om9sZF9yYW5rXG4gICAgICAgICAgfmY6KGZ1biBhY2MgKGRpZmZfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyAtIDFcbiAgICAgICAgICAgIHwgYFJpZ2h0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyArIDFcbiAgICAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBwcm9jZXNzIH4ob2xkIDogKChrLCB2LCBfKSBNYXAudCAqIF8gKiBfKSBvcHRpb24pIG5ld19tYXAgKG5ld19rZXkgOiBrKSA9XG4gICAgICAgIGlmIG5vdCAoTWFwLm1lbSBuZXdfbWFwIG5ld19rZXkpXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgICgqIElmIHRoZSBtYXAgYW5kIGtleSBhcmUgdGhlIHNhbWUsIGp1c3QgcmV1c2UgdGhlIG9sZCByYW5rICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBvbGRfcmFuaylcbiAgICAgICAgICAgIHdoZW4gcGh5c19lcXVhbCBuZXdfbWFwIG9sZF9tYXAgJiYgc2FtZV9rZXkgb2xkX2tleSBuZXdfa2V5IC0+IG9sZF9yYW5rXG4gICAgICAgICAgKCogSWYgdGhlIG1hcCBpcyB0aGUgc2FtZSBidXQgdGhlIGtleSBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHBoeXNfZXF1YWwgbmV3X21hcCBvbGRfbWFwIC0+XG4gICAgICAgICAgICBTb21lICh3aGVuX2tleV9jaGFuZ2VkIH5tYXA6bmV3X21hcCB+b2xkX2tleSB+bmV3X2tleSB+b2xkX3JhbmspXG4gICAgICAgICAgKCogSWYgdGhlIGtleSBpcyB0aGUgc2FtZSBidXQgdGhlIG1hcCBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHNhbWVfa2V5IG5ld19rZXkgb2xkX2tleSAtPlxuICAgICAgICAgICAgU29tZSAod2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5Om5ld19rZXkgfm9sZF9yYW5rKVxuICAgICAgICAgICgqIElmIGJvdGggdGhlIG1hcCBhbmQgdGhlIGtleSBjaGFuZ2VkLCB0aGlzIGNhbiBiZSBzaW11bGF0ZWQgYXMgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5naW5nIGZvbGxvd2VkIGJ5IHRoZSBrZXkgY2hhbmdpbmcgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIC0+XG4gICAgICAgICAgICAoKiBXZSBjYWxsIFtwcm9jZXNzXSByZWN1cnNpdmVseSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNhbGxpbmdcbiAgICAgICAgICAgICAgIFt3aGVuX21hcF9jaGFuZ2VkXSBmb2xsb3dlZCBieSBbd2hlbl9rZXlfY2hhbmdlZF0gc2luY2UgaXQgbWlnaHQgYmUgdGhlXG4gICAgICAgICAgICAgICBjYXNlIHRoYXQgW29sZF9rZXldIGlzIGluIFtvbGRfbWFwXSBhbmQgW25ld19rZXldIGlzIGluIFtuZXdfbWFwXSwgYnV0XG4gICAgICAgICAgICAgICBbb2xkX2tleV0gaXMgbm90IGluIFtuZXdfbWFwXS4gKilcbiAgICAgICAgICAgIGxldCBvbGRfcmFuayA9XG4gICAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykpIG5ld19tYXAgb2xkX2tleVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAobmV3X21hcCwgb2xkX2tleSwgb2xkX3JhbmspKSBuZXdfbWFwIG5ld19rZXlcbiAgICAgICAgICAoKiBJZiB0aGUgcHJldmlvdXMga2V5IHdhcyBub3QgaW4gdGhlIG1hcCBvciB0aGlzIGlzIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLFxuICAgICAgICAgICAgIGNvbXB1dGUgdGhlIHJhbmsgZnJvbSBzY3JhdGNoICopXG4gICAgICAgICAgfCBTb21lIChfLCBfLCBOb25lKSB8IE5vbmUgLT4gTWFwLnJhbmsgbmV3X21hcCBuZXdfa2V5KVxuICAgICAgaW5cbiAgICAgIHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIG1hcCBrZXkgfmY6cHJvY2VzcylcbiAgOztcblxuICAoKiogUmFuZ2UgbWFwIGJ5IGluZGljZXMgKilcbiAgbGV0IHN1YnJhbmdlX2J5X3JhbmtcbiAgICAgICAgKHR5cGUgayBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcCA6ICgoaywgXywgXykgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChyYW5nZSA6IChpbnQgTWF5YmVfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgID1cbiAgICBsZXQgZmluZF9rZXlfcmFuZ2UgKHJhbmdlIDogKGludCAqIGludCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgIDogKChrICogayBvcHRpb24pIG9wdGlvbiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgPVxuICAgICAgd2l0aF9vbGQyIG1hcCByYW5nZSB+aW5zdHJ1bWVudGF0aW9uIH5mOihmdW4gfm9sZCBtYXAgKGZyb20sIHRvXykgLT5cbiAgICAgICAgKCogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vIGtleXMsIG9ubHkgYmVnaW4ga2V5LCBvciBiZWdpbiBhbmQgZW5kIGtleXMuXG4gICAgICAgICAgIFRoZXNlIGFyZSB0aGUga2V5cyBhdCBbZnJvbV0gYW5kIFt0b19dIHBvc2l0aW9ucyBpbiB0aGUgbWFwLCBvciBOb25lIGlmIHRoZVxuICAgICAgICAgICBpbmRpY2VzIGFyZSB0b28gYmlnLiBBcyBhbHdheXMgWzAgPD0gZnJvbSAmJiBmcm9tIDw9IHRvX10sIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIHBvc3NpYmlsaXR5IG9mIG9ubHkgW3RvX10gYmVpbmcgYSB2YWxpZCBwb3NpdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgaWYgSW50LiggPCApIHRvXyBmcm9tIHx8IEludC4oIDwgKSBmcm9tIDBcbiAgICAgICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkludmFsaWQgaW5kaWNlc1wiIChmcm9tIDogaW50KSAodG9fIDogaW50KV07XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgU29tZSAob2xkX21hcCwgKG9sZF9mcm9tLCBvbGRfdG8pLCBTb21lIChiZWdpbl9rZXksIGVuZF9rZXlfb3B0KSkgLT5cbiAgICAgICAgICBsZXQgZmluZF9vZmZzZXQgPSBmaW5kX29mZnNldCB+Y29tcGFyZTooTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICAgICAgbGV0IHJhbmdlX29mZnNldF9iZWdpbiA9IGZyb20gLSBvbGRfZnJvbSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfZW5kID0gdG9fIC0gb2xkX3RvIGluXG4gICAgICAgICAgbGV0IGFkanVzdF9hbmRfb2Zmc2V0IH5ieSBrZXkgPVxuICAgICAgICAgICAgbGV0IGJ5ID0gYnkgKyBpZiBieSA+PSAwICYmIG5vdCAoTWFwLm1lbSBtYXAga2V5KSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICBvZmZzZXQga2V5IG1hcCB+YnlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUga2V5cyBjaGFuZ2luZyBhbmQgbm90IHRoZSBkYXRhLCBzbyBbZGF0YV9lcXVhbF0gaGVyZVxuICAgICAgICAgICAgIGNhbiBiZSBhbHdheXMgdHJ1ZSAqKVxuICAgICAgICAgIGxldCBkaWZmIH5pbml0IH5mID1cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpIG9sZF9tYXAgbWFwIH5pbml0IH5mXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmVnaW5fa2V5X29wdCwgZW5kX2tleV9vcHQgPVxuICAgICAgICAgICAgbWF0Y2ggZW5kX2tleV9vcHQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGVuZF9rZXkgLT5cbiAgICAgICAgICAgICAgbGV0IG1hcF9vZmZzZXRfYmVnaW4sIG1hcF9vZmZzZXRfZW5kID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OigwLCAwKSB+ZjooZnVuIChvZmZzZXRfYmVnaW4sIG9mZnNldF9lbmQpIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICggb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICwgb2Zmc2V0X2VuZCArIGZpbmRfb2Zmc2V0IH5rZXk6ZW5kX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZSApKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgYWRqdXN0X2FuZF9vZmZzZXQgZW5kX2tleSB+Ynk6KG1hcF9vZmZzZXRfZW5kICsgcmFuZ2Vfb2Zmc2V0X2VuZCkgKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OjAgfmY6KGZ1biBvZmZzZXRfYmVnaW4gKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggYWRqdXN0X2FuZF9vZmZzZXQgYmVnaW5fa2V5IH5ieToobWFwX29mZnNldF9iZWdpbiArIHJhbmdlX29mZnNldF9iZWdpbilcbiAgICAgICAgICAgICAgLCBudGhfZnJvbV9laXRoZXJfc2lkZSB0b18gbWFwIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFzc2VydCAoT3B0aW9uLmZvcl9hbGwgfmY6KE1hcC5tZW0gbWFwKSBiZWdpbl9rZXlfb3B0KTtcbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgZW5kX2tleV9vcHQpO1xuICAgICAgICAgIE9wdGlvbi5tYXAgYmVnaW5fa2V5X29wdCB+ZjooZnVuIGJlZ2luX2tleSAtPiBiZWdpbl9rZXksIGVuZF9rZXlfb3B0KVxuICAgICAgICB8IE5vbmUgfCBTb21lIChfLCBfLCBOb25lKSAtPlxuICAgICAgICAgICgqIE9uIGZpcnN0IHJ1biAod2hlbiB3ZSBoYXZlIHRvKSBvciB3aGVuIGJvdGggdGhlIGtleXMgYXJlIG5vbmUsIHJ1biBPKG4pXG4gICAgICAgICAgICAgc2Nhbi4gVGhpcyBpcyBmaW5lIGZvciBrZXlzLWFyZS1ub25lIGNhc2UgYXMgaXQgaGFwcGVucyB3aGVuIHRoZSBwb3NpdGlvbnNcbiAgICAgICAgICAgICBhcmUgcGFzdCBlbmQgb2YgdGhlIG1hcCwgc28gdGhleSBzaG91bGRuJ3QgYmUgdG9vIGZhciBmcm9tIGVuZCBhZnRlciB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdlcywgYW5kIFtmaW5kX2tleV9yYW5nZV9saW5lYXJdIGlzIGZhc3QgaW4gc3VjaCBjYXNlLiAqKVxuICAgICAgICAgIGZpbmRfa2V5X3JhbmdlX2xpbmVhciBtYXAgfmZyb20gfnRvXylcbiAgICBpblxuICAgICgqIEhhbmRsZSBkaWZmZXJlbnQgTWF5YmVfYm91bmQgY2FzZXMgYW5kIGNhbGwgZmluZF9rZXlfcmFuZ2UgaWYgbmVjZXNzYXJ5LiBJdCdzXG4gICAgICAgbmljZXIgdG8gZG8gdGhpcyBoZXJlIGFzIG9wcG9zZWQgdG8gbWFraW5nIGZpbmRfa2V5X3JhbmdlIGV2ZW4gbW9yZSBjb21wbGljYXRlZCAqKVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgKCA+Pj4gKSBuZXdfIGJvdW5kID0gTWF5YmVfYm91bmQubWFwIH5mOihmdW4gXyAtPiBuZXdfKSBib3VuZCBpblxuICAgIGxldCByZXR1cm4gPSBJbmNyZW1lbnRhbC5yZXR1cm4gKEluY3JlbWVudGFsLnN0YXRlIG1hcCkgaW5cbiAgICBsZXQga2V5X3JhbmdlID1cbiAgICAgIG1hdGNoJXBhdHRlcm5fYmluZCByYW5nZSB3aXRoXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkIC0+XG4gICAgICAgIHJldHVybiAoU29tZSAoTWF5YmVfYm91bmQuVW5ib3VuZGVkLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQpKVxuICAgICAgfCAoICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYilcbiAgICAgICAgLCAoKE1heWJlX2JvdW5kLkluY2wgdSB8IE1heWJlX2JvdW5kLkV4Y2wgdSkgYXMgdWIpICkgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIHUpXG4gICAgICAgIGFuZCBsYiA9IGxiXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIFNvbWUgZW5kX2tleSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgZW5kX2tleSA+Pj4gdWIpXG4gICAgICAgICB8IFNvbWUgKGJlZ2luX2tleSwgTm9uZSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8ICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYiksIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIGwgbClcbiAgICAgICAgYW5kIGxiID0gbGIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIHUgdSlcbiAgICAgICAgYW5kIHViID0gdWIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoVW5ib3VuZGVkLCBrZXkgPj4+IHViKVxuICAgICAgICAgKCogSW4gdGhpcyBjYXNlLCB0aGUgdXBwZXIgYm91bmQgd2FzIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlXG4gICAgICAgICAgICBtYXAsIHNvIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIGtleSByYW5nZSBpcyBbVW5ib3VuZGVkXS5cbiAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgZGVtb25zdHJhdGVkIGluIGEgdGVzdCBpbiBbLi4vdGVzdC90ZXN0X3N1YnJhbmdlLm1sXS4gKilcbiAgICAgICAgIHwgTm9uZSAtPiBTb21lIChVbmJvdW5kZWQsIFVuYm91bmRlZCkpXG4gICAgaW5cbiAgICBzdWJyYW5nZSA/ZGF0YV9lcXVhbCBtYXAga2V5X3JhbmdlXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZVxuICAgIDogdHlwZSBrMSBrMiB2IGsxX2NtcCBrMl9jbXAgc3RhdGVfd2l0bmVzcy5cbiAgICAgID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAgIC0+ID9kYXRhX2VxdWFsOih2IC0+IHYgLT4gYm9vbClcbiAgICAgIC0+IChrMiwgazJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgICAtPiAoKGsxLCAoazIsIHYsIGsyX2NtcCkgTWFwLnQsIGsxX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgIC0+ICgoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBmdW4gPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpIGsyX2NvbXBhcmF0b3IgbSAtPlxuICAgICAgd2l0aF9jb21wYXJhdG9yIG0gKGZ1biBrMV9jb21wYXJhdG9yIC0+XG4gICAgICAgIGxldCB1cGRhdGVcbiAgICAgICAgICA6ICBrZXk6azEgLT4gb2xkX2RhdGE6KGsyLCB2LCBrMl9jbXApIE1hcC50IC0+IG5ld19kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudFxuICAgICAgICAgICAgLT4gKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgPVxuICAgICAgICAgIGZ1biB+a2V5OmsxIH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICBvbGRfZGF0YVxuICAgICAgICAgICAgICBuZXdfZGF0YVxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGsyLCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTWFwLmNoYW5nZSBhY2MgazIgfmY6KGZ1biBhY2NfaW5uZXIgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2NfaW5uZXIgPVxuICAgICAgICAgICAgICAgICAgICBNYXAuY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19pbm5lclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5kZWZhdWx0OihNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjprMV9jb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICAgICAgICBrMVxuICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gXyAtPiB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgYWNjX2lubmVyIHRoZW4gTm9uZSBlbHNlIFNvbWUgYWNjX2lubmVyKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKSB+bmV3X2RhdGE6ZGF0YVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGEgPVxuICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpkYXRhIH5uZXdfZGF0YTooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgIGluXG4gICAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgICAgbVxuICAgICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgICB+aW5pdDooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICB+YWRkXG4gICAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgY29sbGFwc2VfYnlcbiAgICAgICAgKHR5cGUgb3V0ZXJfa2V5IG91dGVyX2NtcCBpbm5lcl9rZXkgaW5uZXJfY21wIGNvbWJpbmVkX2tleSBjb21iaW5lZF9jbXApXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihtZXJnZV9rZXlzIDogb3V0ZXJfa2V5IC0+IGlubmVyX2tleSAtPiBjb21iaW5lZF9rZXkpXG4gICAgICAgIH4oY29tcGFyYXRvciA6IChjb21iaW5lZF9rZXksIGNvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudClcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBjb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfnVwZGF0ZTooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+b2xkX2RhdGE6XyB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIE1hcC5zZXQgYWNjIH5rZXk6KG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkgfmRhdGE6bmV3X2RhdGEpXG4gICAgICB+YWRkOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAuYWRkX2V4biBhY2MgfmtleToobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSB+ZGF0YSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLnJlbW92ZSBhY2MgKG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkpXG4gIDs7XG5cbiAgbGV0IGNvbGxhcHNlXG4gICAgICAgICh0eXBlIG91dGVyX2tleSBvdXRlcl9jbXAgaW5uZXJfa2V5IGlubmVyX2NtcClcbiAgICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfmNvbXBhcmF0b3I6KGlubmVyX2NvbXBhcmF0b3IgOiAoaW5uZXJfa2V5LCBpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpXG4gICAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXBfaW5jciAoZnVuIG91dGVyX2NvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBtb2R1bGUgQ21wID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG91dGVyX2tleSAqIGlubmVyX2tleVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IChvdXRlcl9jbXAsIGlubmVyX2NtcCkgVHVwbGUyLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID1cbiAgICAgICAgICBsZXQgaW5uZXJfY29tcGFyYXRvciA9XG4gICAgICAgICAgICBsZXQgbW9kdWxlIE0gPSAodmFsIGlubmVyX2NvbXBhcmF0b3IpIGluXG4gICAgICAgICAgICBNLmNvbXBhcmF0b3JcbiAgICAgICAgICBpblxuICAgICAgICAgIFR1cGxlMi5jb21wYXJhdG9yIG91dGVyX2NvbXBhcmF0b3IgaW5uZXJfY29tcGFyYXRvclxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgY29sbGFwc2VfYnlcbiAgICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+bWVyZ2Vfa2V5czpUdXBsZTIuY3JlYXRlXG4gICAgICAgIH5jb21wYXJhdG9yOihtb2R1bGUgQ21wKSlcbiAgOztcblxuICBsZXQgZXhwYW5kXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+b3V0ZXJfY29tcGFyYXRvclxuICAgICAgICB+aW5uZXJfY29tcGFyYXRvclxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+dXBkYXRlOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5vbGRfZGF0YTpfIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBNYXAuc2luZ2xldG9uIGlubmVyX2NvbXBhcmF0b3IgaW5uZXJfa2V5IG5ld19kYXRhXG4gICAgICAgICAgfCBTb21lIG1hcCAtPiBNYXAuc2V0IG1hcCB+a2V5OmlubmVyX2tleSB+ZGF0YTpuZXdfZGF0YSkpXG4gICAgICB+YWRkOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAudXBkYXRlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE1hcC5zaW5nbGV0b24gaW5uZXJfY29tcGFyYXRvciBpbm5lcl9rZXkgZGF0YVxuICAgICAgICAgIHwgU29tZSBtYXAgLT4gTWFwLmFkZF9leG4gbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLmNoYW5nZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIG1hcCAtPlxuICAgICAgICAgICAgbGV0IG1hcCA9IE1hcC5yZW1vdmUgbWFwIGlubmVyX2tleSBpblxuICAgICAgICAgICAgT3B0aW9uLnNvbWVfaWYgKG5vdCAoTWFwLmlzX2VtcHR5IG1hcCkpIG1hcCkpXG4gIDs7XG5cbiAgbGV0IGNvdW50aSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OjBcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgY291bnQgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gY291bnQgLSAxIGVsc2UgY291bnQpXG4gIDs7XG5cbiAgbGV0IGNvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGNvdW50aSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgKGNvdW50aSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mKSB+ZjooZnVuIGNvdW50IC0+XG4gICAgICBjb3VudCA8PiAwKVxuICA7O1xuXG4gIGxldCBleGlzdHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZXhpc3RzaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgc3VtXG4gICAgICAgICh0eXBlIHUpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOiAoKF8sIF8sIF8pIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAobW9kdWxlIEdyb3VwIDogQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSB1KVxuICAgICAgICB+ZlxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDpHcm91cC56ZXJvXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleTpfIH5kYXRhOnYgYWNjIC0+IEdyb3VwLiggKyApIGFjYyAoZiB2KSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Ol8gfmRhdGE6diBhY2MgLT4gR3JvdXAuKCAtICkgYWNjIChmIHYpKVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIChjb3VudGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgIG5vdCAoZiB+a2V5IH5kYXRhKSkpXG4gICAgICB+ZjooZnVuIGNvdW50IC0+IGNvdW50ID0gMClcbiAgOztcblxuICBsZXQgZm9yX2FsbCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBmb3JfYWxsaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID91cGRhdGVcbiAgICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgICAgP2ZpbmFsaXplXG4gICAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICA/dXBkYXRlXG4gICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgP2ZpbmFsaXplXG4gICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgbWFwXG4gICAgICB+aW5pdFxuICAgICAgfmFkZFxuICAgICAgfnJlbW92ZVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgID91cGRhdGVcbiAgICAgIG1hcFxuICAgICAgfmluaXRcbiAgICAgIH5hZGRcbiAgICAgIH5yZW1vdmVcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgZmluZF9rZXlfcmFuZ2VfbGluZWFyID0gZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gIGVuZFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICB0eXBlICgndiwgJ3cpIGVudHJ5ID1cbiAgICAgIHsgbXV0YWJsZSBzYXZlZF92YWx1ZSA6ICd2IG9wdGlvblxuICAgICAgOyBub2RlIDogKCd2IG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHQgPVxuICAgICAgeyBtdXRhYmxlIHNhdmVkX21hcCA6ICgnaywgJ3YsICdjbXApIE1hcC50XG4gICAgICAoKiBXZSBtYXkgaGF2ZSBtdWx0aXBsZSBlbnRyaWVzIHBlciBrZXkgaWYgbm9kZXMgYmVjb21lIG5lY2Vzc2FyeSBhZ2FpbiBhZnRlciBiZWluZ1xuICAgICAgICAgcmVtb3ZlZC4gKilcbiAgICAgIDsgbXV0YWJsZSBsb29rdXBfZW50cmllcyA6ICgnaywgKCd2LCAndykgZW50cnkgbGlzdCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgdXBkYXRlcl9ub2RlIDogKHVuaXQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICA7IHNjb3BlIDogJ3cgSW5jcmVtZW50YWwuU2NvcGUudFxuICAgICAgfVxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgndiwgJ3cpIHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MsICd3KSB0XG4gICAgZW5kXG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgPVxuICAgICAgbGV0IHJlYyBzZWxmID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChsZXQgdXBkYXRlcl9ub2RlID1cbiAgICAgICAgICAgICBJbmNyZW1lbnRhbC5tYXAgaW5wdXRfbWFwIH5mOihmdW4gaW5wdXRfbWFwIC0+XG4gICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgKGxhenkgc2VsZikgPSBzZWxmIGluXG4gICAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXBcbiAgICAgICAgICAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICAgIH5pbml0OigpXG4gICAgICAgICAgICAgICAgICAgfmY6KGZ1biAoKSAoa2V5LCBjaGFuZ2VkX3ZhbHVlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBNYXAuZmluZF9tdWx0aSBzZWxmLmxvb2t1cF9lbnRyaWVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGVudHJpZXMgfmY6KGZ1biBlbnRyeSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICA8LSAobWF0Y2ggY2hhbmdlZF92YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfdmFsdWUgfCBgVW5lcXVhbCAoXywgbmV3X3ZhbHVlKSAtPiBTb21lIG5ld192YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgZW50cnkubm9kZSkpO1xuICAgICAgICAgICAgICAgICBzZWxmLnNhdmVkX21hcCA8LSBpbnB1dF9tYXApKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgICAgeyBzYXZlZF9tYXAgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyBsb29rdXBfZW50cmllcyA9IGVtcHR5X21hcFxuICAgICAgICAgICA7IHVwZGF0ZXJfbm9kZVxuICAgICAgICAgICA7IHNjb3BlID0gSW5jcmVtZW50YWwuU2NvcGUuY3VycmVudCAoSW5jcmVtZW50YWwuc3RhdGUgaW5wdXRfbWFwKSAoKVxuICAgICAgICAgICB9KVxuICAgICAgaW5cbiAgICAgIExhenkuZm9yY2Ugc2VsZlxuICAgIDs7XG5cbiAgICBsZXRbQGNvbGRdIHNsb3dfcGF0aF9saW5rX2VudHJ5IHQgZW50cnkgfmtleSB+aXNfbm93X29ic2VydmFibGUgPVxuICAgICAgbGV0IChsYXp5IGVudHJ5KSA9IGVudHJ5IGluXG4gICAgICBsZXQgY3VycmVudF9lbnRyaWVzID0gTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgaW5cbiAgICAgIGxldCBpc19saW5rZWQgPSBMaXN0LmV4aXN0cyBjdXJyZW50X2VudHJpZXMgfmY6KHBoeXNfZXF1YWwgZW50cnkpIGluXG4gICAgICBpZiBCb29sLmVxdWFsIGlzX2xpbmtlZCBpc19ub3dfb2JzZXJ2YWJsZVxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpZiBpc19ub3dfb2JzZXJ2YWJsZVxuICAgICAgdGhlblxuICAgICAgICB0Lmxvb2t1cF9lbnRyaWVzXG4gICAgICAgIDwtIE1hcC51cGRhdGUgdC5sb29rdXBfZW50cmllcyBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIChvdGhlcl9lbnRyeSA6OiBfIGFzIG90aGVyX2VudHJpZXMpIC0+XG4gICAgICAgICAgICAoKiBVcGRhdGUgdGhpcyBlbnRyeSdzIHZhbHVlIHRvIGJlIGN1cnJlbnQuICopXG4gICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZSA8LSBvdGhlcl9lbnRyeS5zYXZlZF92YWx1ZTtcbiAgICAgICAgICAgIGVudHJ5IDo6IG90aGVyX2VudHJpZXNcbiAgICAgICAgICB8IE5vbmUgfCBTb21lIFtdIC0+XG4gICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZSA8LSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXk7XG4gICAgICAgICAgICBbIGVudHJ5IF0pXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5ld19lbnRyaWVzID1cbiAgICAgICAgICBMaXN0LmZpbHRlciBjdXJyZW50X2VudHJpZXMgfmY6KGZ1biB4IC0+IG5vdCAocGh5c19lcXVhbCBlbnRyeSB4KSlcbiAgICAgICAgaW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSAoaWYgTGlzdC5pc19lbXB0eSBuZXdfZW50cmllc1xuICAgICAgICAgICAgdGhlbiBNYXAucmVtb3ZlIHQubG9va3VwX2VudHJpZXMga2V5XG4gICAgICAgICAgICBlbHNlIE1hcC5zZXQgdC5sb29rdXBfZW50cmllcyB+a2V5IH5kYXRhOm5ld19lbnRyaWVzKSlcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfY3JlYXRlX25vZGUgdCBrZXkgPVxuICAgICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgdC51cGRhdGVyX25vZGUgaW5cbiAgICAgIEluY3JlbWVudGFsLlNjb3BlLndpdGhpbiBpbmNyZW1lbnRhbF9zdGF0ZSB0LnNjb3BlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbGV0IHJlYyBlbnRyeSA9XG4gICAgICAgICAgbGF6eVxuICAgICAgICAgICAgeyBzYXZlZF92YWx1ZSA9IE1hcC5maW5kIHQuc2F2ZWRfbWFwIGtleVxuICAgICAgICAgICAgOyBub2RlID1cbiAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsX3N0YXRlXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IChmb3JjZSBlbnRyeSkuc2F2ZWRfdmFsdWUpXG4gICAgICAgICAgICAgICAgICB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2U6KHNsb3dfcGF0aF9saW5rX2VudHJ5IHQgZW50cnkgfmtleSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IChsYXp5IGVudHJ5KSA9IGVudHJ5IGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgICAgZW50cnkubm9kZVxuICAgICAgICAgIChJbmNyZW1lbnRhbC5FeHBlcnQuRGVwZW5kZW5jeS5jcmVhdGUgdC51cGRhdGVyX25vZGUpO1xuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBlbnRyeS5ub2RlKVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IGtleSA9XG4gICAgICBtYXRjaCBNYXAuZmluZF9tdWx0aSB0Lmxvb2t1cF9lbnRyaWVzIGtleSB3aXRoXG4gICAgICB8IGVudHJ5IDo6IF8gLT4gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZVxuICAgICAgfCBbXSAtPiBzbG93X3BhdGhfY3JlYXRlX25vZGUgdCBrZXlcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA9IHN0cnVjdFxuICAgICAgbGV0W0Bjb2xkXSBzZXhwX29mX2VudHJ5IHNleHBfb2ZfdmFsdWUgZW50cnkgPVxuICAgICAgICBsZXQgeyBzYXZlZF92YWx1ZTsgbm9kZSB9ID0gZW50cnkgaW5cbiAgICAgICAgbGV0IG5vZGUgPSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlIGluXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgOiB2YWx1ZSBvcHRpb25cbiAgICAgICAgICA7IG5vZGVfaW5mbyA9IChJbmNyZW1lbnRhbC51c2VyX2luZm8gbm9kZSA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19jb25zdCA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAoSW5jcmVtZW50YWwuaXNfY29uc3Qgbm9kZSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19pbnZhbGlkID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX3ZhbGlkIG5vZGUpKSAoKVxuICAgICAgICAgICAgICAgOiAodW5pdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX3VubmVjZXNzYXJ5ID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX25lY2Vzc2FyeSBub2RlKSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIH1dXG4gICAgICA7O1xuXG4gICAgICBsZXRbQGNvbGRdIHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgICBsZXQgaW5mb19wZXJfa2V5ID1cbiAgICAgICAgICBNYXAubWVyZ2UgdC5zYXZlZF9tYXAgdC5sb29rdXBfZW50cmllcyB+ZjooZnVuIH5rZXkgZGF0YSAtPlxuICAgICAgICAgICAgbGV0IGFjdHVhbF92YWx1ZSwgZW50cmllcyA9XG4gICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSB4LCBbXVxuICAgICAgICAgICAgICB8IGBSaWdodCB5IC0+IE5vbmUsIHlcbiAgICAgICAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gU29tZSB4LCB5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGtleSA6IGtleVxuICAgICAgICAgICAgICAgIDsgYWN0dWFsX3ZhbHVlIDogKHZhbHVlIG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICAgICAgICAgIDsgZW50cmllcyA6IHZhbHVlIGVudHJ5IGxpc3RcbiAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgaW5cbiAgICAgICAgU2V4cC5MaXN0IChNYXAuZGF0YSBpbmZvX3Blcl9rZXkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzc1xuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSBJbmNyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgYW5kIHR5cGUgJ2EgSW5jci5DdXRvZmYudCA9ICdhIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgIGFuZCB0eXBlICgnaywgJ3YsICdjbXApIExvb2t1cC50ID0gKCdrLCAndiwgJ2NtcCwgc3RhdGVfd2l0bmVzcykgR2VuZXJpYy5Mb29rdXAudFxuZW5kXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG4gIG1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBJbnN0cnVtZW50YXRpb25cblxuICBsZXQgZmxhdHRlbiB4ID0gZmxhdHRlbiBJbmNyLlN0YXRlLnQgeFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExvb2t1cFxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCwgSW5jci5zdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgR2VuZXJpY1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuU19nZW4pID0gc3RydWN0XG4gIG1vZHVsZSBFID0gSW5jci5FeHBlcnRcblxuICAoKiBIYXNodGJsIHN0YXJ0cyBvdXQgYXQgYSByaWRpY3Vsb3VzIHNpemUgb2YgMTI4LiBUaGlzIGlzIGEgbW9yZSByZWFzb25hYmxlIG51bWJlclxuICAgICBvZiBiaW5zIHRvIGhhdmUuICopXG4gIGxldCBoYXNodGJsX3NpemUgPSAxMFxuXG4gICgqKiBbc2V0dXBfZ2VuZXJhdG9yXSBzZXRzIHVwIHRoZSBzdGFnZWQgY29udmVyc2lvbi5cblxuICAgICAgW2hhc2hhYmxlXSBpcyB1c2VkIHRvIGJ1aWxkIGEgdGFibGUgb2YgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcy4gV2UgZHJvcCB1bm5lY2Vzc2FyeVxuICAgICAgZGVwZW5kZW5jaWVzIHRvIGFsbG93IHRoZW0gdG8gYmUgY29sbGVjdGVkLlxuXG4gICAgICBbY29tcHV0ZV9vdXRwdXQga2V5XSByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgb3V0cHV0IG5vZGUgY29ycmVzcG9uZGluZyB0byBba2V5XS5cbiAgICAgIFtjb21wdXRlX291dHB1dF0gaXMgY2xvc2VkIG92ZXIgdGhlIG11dGFibGUgc3RhdGUgZGV0ZXJtaW5pbmcgdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIHRoZSBzZWxlY3RvcidzIGlucHV0LlxuXG4gICAgICBbbWFrZV9pbnB1dF9ub2RlXSBtYWtlcyBzdXJlIHRoYXQgd2hlbiB0aGUgbXV0YWJsZSBzdGF0ZSBpbnNpZGUgW2NvbXB1dGVfb3V0cHV0XSBpc1xuICAgICAgdXBkYXRlZCwgdGhlIGNvcnJlc3BvbmRpbmcgbm9kZXMgaW4gdGhlIFtuZWNlc3NhcnlfZGVwZW5kZW5jaWVzXSB0YWJsZSBhcmUgbWFkZVxuICAgICAgc3RhbGUuICAqKVxuICBsZXQgc2V0dXBfZ2VuZXJhdG9yXG4gICAgICAgIChoYXNoYWJsZSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KVxuICAgICAgICB+KGNvbXB1dGVfb3V0cHV0IDogJ2EgLT4gJ2IpXG4gICAgICAgIH4obWFrZV9pbnB1dF9ub2RlIDogbWFrZV9rZXlfc3RhbGU6KCdhIC0+IHVuaXQpIC0+IHVuaXQgSW5jci50KVxuICAgIDogKCdhIC0+ICdiIEluY3IudCkgU3RhZ2VkLnRcbiAgICA9XG4gICAgbGV0IG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IChpbnB1dF9ub2RlIDogdW5pdCBJbmNyLnQpID1cbiAgICAgIGxldCBtYWtlX2tleV9zdGFsZSBrZXkgPVxuICAgICAgICBIYXNodGJsLmZpbmQgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyBrZXlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdXG4gICAgICAgIHw+IExpc3QuaXRlciB+ZjpFLk5vZGUubWFrZV9zdGFsZVxuICAgICAgaW5cbiAgICAgIG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGVcbiAgICBpblxuICAgICgqIFNldCB0aGUgY3V0b2ZmIHNvIHRoYXQgd2UgbmV2ZXIgcGFzcyBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHVwZGF0ZSB0byB0aGUgbm9kZXMuIFdlXG4gICAgICAgd2FudCBldmVyeXRoaW5nIHRvIGdvIHRocm91Z2ggW21ha2Vfa2V5X3N0YWxlXSAqKVxuICAgIEluY3Iuc2V0X2N1dG9mZiBpbnB1dF9ub2RlIEluY3IuQ3V0b2ZmLmFsd2F5cztcbiAgICBzdGFnZSAoZnVuIGtleSAtPlxuICAgICAgbGV0IGlucHV0X2RlcCA9IEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfbm9kZSBpblxuICAgICAgbGV0IHJlYyBvdXRwdXRfbm9kZSA9IGxhenkgKFxuICAgICAgICBFLk5vZGUuY3JlYXRlXG4gICAgICAgICAgKGZ1biAoKSAtPiBjb21wdXRlX291dHB1dCBrZXkpXG4gICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihmdW4gfmlzX25vd19vYnNlcnZhYmxlIC0+XG4gICAgICAgICAgICBpZiBpc19ub3dfb2JzZXJ2YWJsZSB0aGVuXG4gICAgICAgICAgICAgIEhhc2h0YmwuYWRkX211bHRpIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTooZm9yY2Ugb3V0cHV0X25vZGUpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEhhc2h0YmwuY2hhbmdlIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIGwgfmY6KEZuLm5vbiAocGh5c19lcXVhbCAoZm9yY2Ugb3V0cHV0X25vZGUpKSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGwnIC0+IFNvbWUgbCdcbiAgICAgICAgICAgICAgKSkpXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dF9ub2RlID0gZm9yY2Ugb3V0cHV0X25vZGUgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBvdXRwdXRfbm9kZSBpbnB1dF9kZXA7XG4gICAgICBFLk5vZGUud2F0Y2ggb3V0cHV0X25vZGVcbiAgICApXG5cbiAgKCoqIFRoaXMgY3JlYXRlcyBhIHVuaXQgaW5jcmVtZW50YWwgdGhhdCBmaXJlcyB3aGVuZXZlciB0aGUgaW5wdXQgaW5jcmVtZW50YWxcbiAgICAgIGZpcmVzLiBXaGVuIHRoYXQgb2NjdXJzLCBpdCB1cGRhdGVzIFtzZWxlY3RlZF0gdG8gbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIFtpbnB1dF0sIGFuZCBjYWxscyBbbWFrZV9rZXlfc3RhbGVdIGZvciBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZSBvZiB0aGVcbiAgICAgIGluY3JlbWVudGFsLiAqKVxuICBsZXQgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlID1cbiAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgT3B0aW9uLml0ZXIgaW5wIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBPcHRpb24uaXRlciAhc2VsZWN0ZWQgfmY6bWFrZV9zdGFsZTtcbiAgICAgIHNlbGVjdGVkIDo9IGlucFxuICAgIClcblxuICBsZXQgc2VsZWN0X29uZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgKGlucHV0IDogYSBvcHRpb24gSW5jci50KVxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGtleScgLT4gSC5jb21wYXJlIGtleSBrZXknID0gMFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlOm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgSC5oYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3Rfb25lIGggaW5wdXQgPVxuICAgIHNlbGVjdF9vbmUnIGggKEluY3IubWFwIH5mOk9wdGlvbi5zb21lIGlucHV0KVxuXG4gIGxldCBzZWxlY3Rfb25lX3ZhbHVlJ1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkZWZhdWx0XG4gICAgICB8IFNvbWUgKGtleScsIGRhdGEpIC0+IGlmIEguY29tcGFyZSBrZXkga2V5JyA9IDAgdGhlbiBkYXRhIGVsc2UgZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+c2VsZWN0ZWQgfmlucHV0IH5tYWtlX3N0YWxlOihmdW4gKGtleSwgXykgLT4gbWFrZV9rZXlfc3RhbGUga2V5KVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSBoIH5kZWZhdWx0IGlucHV0ID1cbiAgICBzZWxlY3Rfb25lX3ZhbHVlJyBoIH5kZWZhdWx0IChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X21hbnlfdmFsdWVzXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIH5kZWZhdWx0XG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBIYXNodGJsLmZpbmQgc2VsZWN0ZWQga2V5IHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgSGFzaHRibC5pdGVyX2tleXMgc2VsZWN0ZWQgfmY6bWFrZV9rZXlfc3RhbGU7XG4gICAgICAgIEhhc2h0YmwuY2xlYXIgc2VsZWN0ZWQ7XG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgICBIYXNodGJsLnNldCBzZWxlY3RlZCB+a2V5IH5kYXRhXG4gICAgICAgICkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X21hbnlcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IGhhc2hhYmxlID0gSC5oYXNoYWJsZSBpblxuICAgIGxldCBzZWxlY3RlZCA9IEhhc2hfc2V0LlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9IEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgICBsZXQgb2xkX3NldCA9IEhhc2hfc2V0LmNvcHkgc2VsZWN0ZWQgaW5cbiAgICAgICAgSGFzaF9zZXQuY2xlYXIgc2VsZWN0ZWQ7XG5cbiAgICAgICAgTGlzdC5pdGVyIGlucCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIG9sZF9zZXQga2V5KSB0aGVuXG4gICAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaF9zZXQuYWRkIHNlbGVjdGVkIGtleVxuICAgICAgICApO1xuXG4gICAgICAgIEhhc2hfc2V0Lml0ZXIgb2xkX3NldCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlbGVjdGVkIGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5lbmRcblxuIiwiZXh0ZXJuYWwganNfcHJvZl9tYXJrIDogc3RyaW5nIC0+IHVuaXQgPSBcImpzX3Byb2ZfbWFya1wiXG5leHRlcm5hbCBqc19wcm9mX21lYXN1cmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21lYXN1cmVcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tYXJrcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tYXJrc1wiXG5leHRlcm5hbCBqc19wcm9mX2NsZWFyX21lYXN1cmVzIDogdW5pdCAtPiB1bml0ID0gXCJqc19wcm9mX2NsZWFyX21lYXN1cmVzXCJcblxubGV0IG1hcmsgbmFtZSA9IGpzX3Byb2ZfbWFyayBuYW1lXG5sZXQgbWVhc3VyZSB+bmFtZSB+c3RhcnQgfmVuZF8gPSBqc19wcm9mX21lYXN1cmUgbmFtZSBzdGFydCBlbmRfXG5cbmxldCByZWNvcmQgbmFtZSB+ZiA9XG4gIGxldCBiZWZvcmVfbmFtZSA9IG5hbWUgXiBcIl9iZWZvcmVcIiBpblxuICBsZXQgYWZ0ZXJfbmFtZSA9IG5hbWUgXiBcIl9hZnRlclwiIGluXG4gIGxldCAoKSA9IG1hcmsgYmVmb3JlX25hbWUgaW5cbiAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgbGV0ICgpID0gbWFyayBhZnRlcl9uYW1lIGluXG4gIG1lYXN1cmUgfm5hbWUgfnN0YXJ0OmJlZm9yZV9uYW1lIH5lbmRfOmFmdGVyX25hbWU7XG4gIHJlc1xuOztcblxubGV0IGNsZWFyX21hcmtzICgpID0ganNfcHJvZl9jbGVhcl9tYXJrcyAoKVxubGV0IGNsZWFyX21lYXN1cmVzICgpID0ganNfcHJvZl9jbGVhcl9tZWFzdXJlcyAoKVxuXG5tb2R1bGUgTWFudWFsID0gc3RydWN0XG4gIGxldCBtYXJrID0gbWFya1xuICBsZXQgbWVhc3VyZSA9IG1lYXN1cmVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5cbnR5cGUgdCA9XG4gIHsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgOyBtaW1ldHlwZSA6IHN0cmluZ1xuICA7IGNvbnRlbnRzIDogc3RyaW5nXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxkb3dubG9hZGVyOiAlcz5cIiB0LmZpbGVuYW1lKVxuXG5sZXQgdHJpZ2dlciB7IGZpbGVuYW1lOyBtaW1ldHlwZTsgY29udGVudHMgfSA9XG4gIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gIGlmIFBweF9pbmxpbmVfdGVzdF9saWIuYW1fcnVubmluZ1xuICB0aGVuXG4gICAgcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlIFwiRG93bmxvYWQgdHJpZ2dlcmVkXCIgKGZpbGVuYW1lIDogc3RyaW5nKSAobWltZXR5cGUgOiBzdHJpbmcpIGNvbnRlbnRzXVxuICBlbHNlIChcbiAgICAoKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTkzMjg4OTEvNTU4NTkyICopXG4gICAgbGV0IGEgPSBEb21faHRtbC5jcmVhdGVBIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgbGV0IGNvbnRlbnRzX2JpZ3N0ciA9XG4gICAgICBUeXBlZF9hcnJheS5CaWdzdHJpbmcudG9fYXJyYXlCdWZmZXIgKEJpZ3N0cmluZy5vZl9zdHJpbmcgY29udGVudHMpXG4gICAgaW5cbiAgICBsZXQgYmxvYiA9XG4gICAgICAoKiBEb24ndCB1c2UgW2Jsb2JfZnJvbV9zdHJpbmddLiBUaGF0IGhhcyBhbiBhdHRyYWN0aXZlIHR5cGUgYnV0IHdvcmtzIGJ5IGZpcnN0XG4gICAgICAgICBjb252ZXJ0aW5nIG91ciBPQ2FtbCBzdHJpbmcgdG8gYSBKYXZhc2NyaXB0IHN0cmluZywgd2hpY2ggY29udmVydHMgdG9cbiAgICAgICAgIFVURi0xNi4gSWYgdGhlIHN0cmluZyBjb250YWlucyByYW5kb20gYmluYXJ5IGRhdGEgdGhhdCB3aWxsIGRpc3RvcnQgaXQuICopXG4gICAgICBGaWxlLmJsb2JfZnJvbV9hbnkgWyBgYXJyYXlCdWZmZXIgY29udGVudHNfYmlnc3RyIF0gfmNvbnRlbnRUeXBlOm1pbWV0eXBlXG4gICAgaW5cbiAgICBsZXQgdXJsID0gRG9tX2h0bWwud2luZG93IyMuX1VSTCMjY3JlYXRlT2JqZWN0VVJMIGJsb2IgaW5cbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImhyZWZcIikgdXJsO1xuICAgIGEjI3NldEF0dHJpYnV0ZSAoSnMuc3RyaW5nIFwiZG93bmxvYWRcIikgKEpzLnN0cmluZyBmaWxlbmFtZSk7XG4gICAgYSMjY2xpY2s7XG4gICAgRG9tX2h0bWwud2luZG93IyMuX1VSTCMjcmV2b2tlT2JqZWN0VVJMIHVybClcbjs7XG5cbm1vZHVsZSBCdXR0b24gPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/KGVuYWJsZWQgPSB0cnVlKVxuICAgICAgICA/KG9uX2NsaWNrID0gZnVuIF8gLT4gVmRvbS5FZmZlY3QuSWdub3JlKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgIH5nZXRfZG93bmxvYWRcbiAgICAgICAgfmJ1dHRvbl90ZXh0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBvcGVuIFZkb20gaW5cbiAgICBsZXQgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgZXYgPVxuICAgICAgdHJpZ2dlciAoZ2V0X2Rvd25sb2FkICgpKTtcbiAgICAgIG9uX2NsaWNrIGV2XG4gICAgaW5cbiAgICBsZXQgZW5hYmxlZF9kaXNhYmxlZCA9XG4gICAgICBpZiBlbmFibGVkIHRoZW4gW10gZWxzZSBbIEF0dHIuZGlzYWJsZWQ7IEF0dHIuc3R5bGUgKENzc19nZW4uY29sb3IgKGBOYW1lIFwiZ3JleVwiKSkgXVxuICAgIGluXG4gICAgbGV0IGF0dHJzID1cbiAgICAgIFsgZXh0cmFfYXR0cnM7IGVuYWJsZWRfZGlzYWJsZWQ7IFsgQXR0ci5vbl9jbGljayB0cmlnZ2VyX2Nzdl9kb3dubG9hZCBdIF1cbiAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgaW5cbiAgICBOb2RlLmJ1dHRvbiB+YXR0cnM6WyBBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyBdIFsgTm9kZS50ZXh0IGJ1dHRvbl90ZXh0IF1cbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEluY3IgPSBJbmNyZW1lbnRhbC5NYWtlICgpXG5cbigqIFRoaXMgaXMgdGhlIGRlZmF1bHQgY2xvY2sgZm9yIHJ1bm5pbmcgY2xpZW50cywgYnV0IGJvbnNhaSB0ZXN0cyBoYXZlIHRoZWlyXG4gICBvd24gc2VwYXJhdGUgY2xvY2tzICopXG5sZXQgY2xvY2sgPSBJbmNyLkNsb2NrLmNyZWF0ZSB+c3RhcnQ6KFRpbWVfbnMubm93ICgpKSAoKVxuXG5pbmNsdWRlIEluY3Jcbm1vZHVsZSBNYXAgPSBJbmNyX21hcC5NYWtlIChJbmNyKVxubW9kdWxlIFNlbGVjdCA9IEluY3Jfc2VsZWN0Lk1ha2UgKEluY3IpXG4iLCJvcGVuIFZpcnR1YWxfZG9tXG5vcGVuIENvcmVcblxudHlwZSAoJ2FjdGlvbiwgJ21vZGVsLCAnc3RhdGUsICdleHRyYSkgd2l0aF9leHRyYSA9XG4gIHsgYXBwbHlfYWN0aW9uIDogJ2FjdGlvbiAtPiAnc3RhdGUgLT4gc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+ICdtb2RlbFxuICA7IHVwZGF0ZV92aXNpYmlsaXR5IDogc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+ICdtb2RlbFxuICA7IHZpZXcgOiBWZG9tLk5vZGUudFxuICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+IHVuaXRcbiAgOyBleHRyYSA6ICdleHRyYVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbnR5cGUgKCdhY3Rpb24sICdzdGF0ZSwgJ21vZGVsKSB0ID0gKCdhY3Rpb24sICdzdGF0ZSwgJ21vZGVsLCB1bml0KSB3aXRoX2V4dHJhXG5cbmxldCBjcmVhdGVfd2l0aF9leHRyYSA/YXBwbHlfYWN0aW9uID91cGRhdGVfdmlzaWJpbGl0eSA/b25fZGlzcGxheSB+ZXh0cmEgbW9kZWwgdmlldyA9XG4gIGxldCBhcHBseV9hY3Rpb24gPVxuICAgIE9wdGlvbi52YWx1ZSBhcHBseV9hY3Rpb24gfmRlZmF1bHQ6KGZ1biBfIF8gfnNjaGVkdWxlX2FjdGlvbjpfIC0+IG1vZGVsKVxuICBpblxuICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgPVxuICAgIE9wdGlvbi52YWx1ZSB1cGRhdGVfdmlzaWJpbGl0eSB+ZGVmYXVsdDooZnVuIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IG9uX2Rpc3BsYXkgPSBPcHRpb24udmFsdWUgb25fZGlzcGxheSB+ZGVmYXVsdDooZnVuIF8gfnNjaGVkdWxlX2FjdGlvbjpfIC0+ICgpKSBpblxuICB7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXk7IGV4dHJhOyB2aWV3IH1cbjs7XG5cbmxldCBjcmVhdGUgPSBjcmVhdGVfd2l0aF9leHRyYSB+ZXh0cmE6KClcbiIsIm9wZW4hIENvcmVcbm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQXN5bmNfa2VybmVsXG5cbigqKiBDb21tb24gbW9kdWxlIHR5cGVzICopXG5tb2R1bGUgdHlwZSBNb2RlbCA9IHNpZ1xuICB0eXBlIHRcblxuXG4gICgqKiBBIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIHdoZXRoZXIgdGhlIG1vZGVsIGhhcyBjaGFuZ2VkIGVub3VnaCB0byByZXF1aXJlIHJlZmlyaW5nXG4gICAgICB0aGUgaW5jcmVtZW50YWwgZ3JhcGguXG5cbiAgICAgIEl0J3MgYmVzdCBpZiB0aGUgdmFsdWVzIGluIHRoZSBtb2RlbCBzdXBwb3J0IGEgc2VtYW50aWNhbGx5IHJlYXNvbmFibGUgY3V0b2ZmXG4gICAgICBmdW5jdGlvbiB3aGljaCBsZXRzIHlvdSBhdm9pZCBpbmZpbml0ZSByZWNvbXB1dGF0aW9uIGxvb3BzIHRoYXQgY2FuIG90aGVyd2lzZSBiZVxuICAgICAgdHJpZ2dlcmVkIGJ5IHRoZSB2aXNpYmlsaXR5IGNoZWNrcy4gRm9yIHRoaXMgcmVhc29uLCBpdCdzIHR5cGljYWxseSBhIGdvb2QgaWRlYSB0b1xuICAgICAgYXZvaWQgaGF2aW5nIHNpbXBsZSBjbG9zdXJlcyBzdG9yZWQgaW4gdGhlIG1vZGVsLlxuXG4gICAgICBUaGF0IHNhaWQsIGl0IGRvZXMgd29yayBpZiB5b3UgcHV0IHBoeXNfZXF1YWwgaW4gZm9yIHRoZSBjdXRvZmYuICopXG4gIHZhbCBjdXRvZmYgOiB0IC0+IHQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjdGlvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTdGF0ZSA9IHNpZ1xuICAoKiogUmVwcmVzZW50cyB0aGUgaW1wZXJhdGl2ZSBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggYW4gYXBwbGljYXRpb24sIHR5cGljYWxseSB1c2VkIGZvclxuICAgICAgaG91c2luZyB0aGluZ3MgbGlrZSBjb21tdW5pY2F0aW9uIEFzeW5jLVJQQyBjb25uZWN0aW9ucy4gKilcbiAgdHlwZSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICBtb2R1bGUgQWN0aW9uIDogQWN0aW9uXG4gIG1vZHVsZSBTdGF0ZSA6IFN0YXRlXG5cbiAgKCoqIFtvbl9zdGFydHVwXSBpcyBjYWxsZWQgb25jZSwgcmlnaHQgYWZ0ZXIgdGhlIGluaXRpYWwgRE9NIGlzIHNldCB0byB0aGUgdmlldyB0aGF0XG4gICAgICBjb3JyZXNwb25kcyB0byB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGRvaW5nIHRoaW5ncyBsaWtlIHN0YXJ0aW5nIHVwXG4gICAgICBhc3luYyBwcm9jZXNzZXMuICBOb3RlIHRoYXQgdGhpcyBwYXJ0IG9mIHRoZSBjb21wdXRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGFueVxuICAgICAgaW5jcmVtZW50YWxpdHksIHNpbmNlIGl0J3Mgb25seSBydW4gb25jZS4gKilcbiAgdmFsIG9uX3N0YXJ0dXAgOiBzY2hlZHVsZV9hY3Rpb246KEFjdGlvbi50IC0+IHVuaXQpIC0+IE1vZGVsLnQgLT4gU3RhdGUudCBEZWZlcnJlZC50XG5cbiAgKCoqIFtjcmVhdGVdIGlzIGEgZnVuY3Rpb24gdGhhdCBpbmNyZW1lbnRhbGx5IGNvbnN0cnVjdHMgYSB7IUNvbXBvbmVudH0uIE5vdGUgdGhhdCBhXG4gICAgICBbQ29tcG9uZW50XSBzdXBwb3J0cyBmdW5jdGlvbnMgbGlrZSBbYXBwbHlfYWN0aW9uXSwgd2hpY2ggcmV0dXJuIGEgbmV3IFtNb2RlbC50XSxcbiAgICAgIHdpdGhvdXQgdGFraW5nIGEgbW9kZWwgYXMgYW4gZXhwbGljaXQgaW5wdXQuICBUaGUgaW50ZW50IGlzIGZvciBbYXBwbHlfYWN0aW9uXSB0b1xuICAgICAgaGF2ZSBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgbW9kZWwgdmlhIGl0cyBjb25zdHJ1Y3Rpb25cblxuICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgbWlnaHQgbG9vayBpbiBwcmFjdGljZS5cblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIE1vZGVsID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0geyBjb3VudGVyIDogaW50IH0gW0BAZGVyaXZpbmcgZmllbGRzLCBjb21wYXJlXVxuXG4gICAgICAgICAgbGV0IGN1dG9mZiB0MSB0MiA9IGNvbXBhcmUgdDEgdDIgPSAwXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHVuaXRcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEluY3JlbWVudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgICAgbGV0IHNob3VsZF9sb2cgXyA9IGZhbHNlXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCBpbml0aWFsX21vZGVsID0geyBNb2RlbC5jb3VudGVyID0gMCB9XG5cbiAgICAgICAgbGV0IG9uX3N0YXJ0dXAgfnNjaGVkdWxlX2FjdGlvbnMgX21vZGVsID1cbiAgICAgICAgICBldmVyeSAoVGltZV9ucy5TcGFuLm9mX3NlYyAxLikgKGZ1biAoKSAtPlxuICAgICAgICAgICAgc2NoZWR1bGVfYWN0aW9ucyBbIEFjdGlvbi5JbmNyZW1lbnQgXSk7XG4gICAgICAgICAgRGVmZXJyZWQudW5pdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbDpfIH5pbmplY3Q6XyA9XG4gICAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgICAgbGV0JW1hcCBhcHBseV9hY3Rpb24gPVxuICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID0gbW9kZWwgPj58IE1vZGVsLmNvdW50ZXIgaW5cbiAgICAgICAgICAgIGZ1biAoSW5jcmVtZW50IDogQWN0aW9uLnQpIF8gfnNjaGVkdWxlX2FjdGlvbnM6XyAtPlxuICAgICAgICAgICAgICB7IE1vZGVsLmNvdW50ZXIgPSBjb3VudGVyICsgMSB9XG4gICAgICAgICAgYW5kIHZpZXcgPVxuICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID1cbiAgICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID0gbW9kZWwgPj58IE1vZGVsLmNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgVmRvbS5Ob2RlLmRpdiBbXSBbIFZkb20uTm9kZS50ZXh0IChJbnQudG9fc3RyaW5nIGNvdW50ZXIpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBWZG9tLk5vZGUuYm9keSBbXSBbIGNvdW50ZXIgXVxuICAgICAgICAgIGFuZCBtb2RlbCA9IG1vZGVsIGluXG4gICAgICAgICAgKCogTm90ZSB0aGF0IHdlIGRvbid0IGluY2x1ZGUgW29uX2Rpc3BsYXldIG9yIFt1cGRhdGVfdmlzaWJpbGl0eV0sIHNpbmNlXG4gICAgICAgICAgICAgdGhlc2UgYXJlIG9wdGlvbmFsIGFyZ3VtZW50cyAqKVxuICAgICAgICAgIENvbXBvbmVudC5jcmVhdGUgfmFwcGx5X2FjdGlvbiBtb2RlbCB2aWV3XG4gICAgICAgIDs7IF19XG5cbiAgICAgIFRoZSBmdWxsIGNvZGUgZm9yIHRoaXMgZXhhbXBsZSBjYW4gYmUgZm91bmQgaW4gZXhhbXBsZXMvY291bnRlci5cbiAgKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogIE1vZGVsLnQgSW5jci50XG4gICAgLT4gb2xkX21vZGVsOk1vZGVsLnQgSW5jci50XG4gICAgKCoqIFtvbGRfbW9kZWxdIGNvbnRhaW5zIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSBtb2RlbCAqKVxuICAgIC0+IGluamVjdDooQWN0aW9uLnQgLT4gdW5pdCBWZG9tLkVmZmVjdC50KVxuICAgICgqKiBbaW5qZWN0XSBnaXZlcyB5b3UgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGV2ZW50IGhhbmRsZXJzIGluIHRoZSB2aXJ0dWFsIERPTS4gSW5cbiAgICAgICAgeW91ciBldmVudCBoYW5kbGVyLCBjYWxsIHRoaXMgZnVuY3Rpb24gb24gdGhlIGFjdGlvbiB5b3Ugd291bGQgbGlrZSB0b1xuICAgICAgICBzY2hlZHVsZS4gVmlydHVhbCBET00gd2lsbCBhdXRvbWF0aWNhbGx5IGRlbGVnYXRlIHRoYXQgYWN0aW9uIGJhY2sgdG8gdGhlXG4gICAgICAgIFtTdGFydF9hcHBdIG1haW4gbG9vcC4gKilcbiAgICAtPiAoQWN0aW9uLnQsIE1vZGVsLnQsIFN0YXRlLnQpIENvbXBvbmVudC50IEluY3IudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIHR5cGUgKCdzdGF0ZSwgJ21vZGVsLCAnYWN0aW9uKSBzbmFwc2hvdCA9XG4gICAgeyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgICA7IGFwcGx5X2FjdGlvbiA6XG4gICAgICAgICdzdGF0ZSAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWwgLT4gJ2FjdGlvbiAtPiAnbW9kZWxcbiAgICA7IHVwZGF0ZV92aXNpYmlsaXR5IDogJ21vZGVsIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+ICdtb2RlbFxuICAgIDsgb25fZGlzcGxheSA6ICdzdGF0ZSAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiB1bml0XG4gICAgfVxuXG4gIG1vZHVsZSB0eXBlIFNfZm9yX2JvbnNhaSA9IHNpZ1xuICAgIG1vZHVsZSBNb2RlbCA6IE1vZGVsXG4gICAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICAgIG1vZHVsZSBTdGF0ZSA6IFN0YXRlXG5cbiAgICB2YWwgYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gOiBBY3Rpb24udCAtPiBib29sXG4gICAgdmFsIG9uX3N0YXJ0dXAgOiBzY2hlZHVsZV9hY3Rpb246KEFjdGlvbi50IC0+IHVuaXQpIC0+IE1vZGVsLnQgLT4gU3RhdGUudCBEZWZlcnJlZC50XG5cbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICBNb2RlbC50IEluY3IudFxuICAgICAgLT4gb2xkX21vZGVsOk1vZGVsLnQgSW5jci50XG4gICAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAgIC0+IChTdGF0ZS50LCBNb2RlbC50LCBBY3Rpb24udCkgc25hcHNob3QgSW5jci50XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBSZWN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB0b3AgOiAnYVxuICAgIDsgbGVmdCA6ICdhXG4gICAgOyBib3R0b20gOiAnYVxuICAgIDsgcmlnaHQgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICB7IHRvcCA9IGYgdC50b3A7IGxlZnQgPSBmIHQubGVmdDsgYm90dG9tID0gZiB0LmJvdHRvbTsgcmlnaHQgPSBmIHQucmlnaHQgfVxuICA7O1xuXG4gIGxldCBpbnRfaGVpZ2h0IHQgPSB0LmJvdHRvbSAtIHQudG9wXG4gIGxldCBpbnRfd2lkdGggdCA9IHQucmlnaHQgLSB0LmxlZnRcbiAgbGV0IGZsb2F0X2hlaWdodCB0ID0gdC5ib3R0b20gLS4gdC50b3BcbiAgbGV0IGZsb2F0X3dpZHRoIHQgPSB0LnJpZ2h0IC0uIHQubGVmdFxuZW5kXG5cbmxldCByb3VuZF9mbG9hdF9yZWN0ID8ocm91bmQgPSBGbG9hdC5pcm91bmRfbmVhcmVzdF9leG4pID0gUmVjdC5tYXAgfmY6cm91bmRcblxudHlwZSByb3dzX29yX2NvbHVtbnMgPVxuICB8IFJvd3NcbiAgfCBDb2x1bW5zXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHZhcmlhbnRzLCBjb21wYXJlXVxuXG5sZXQgaW5uZXJIZWlnaHQgKCkgPSBEb21faHRtbC53aW5kb3cjIy5pbm5lckhlaWdodFxubGV0IGlubmVyV2lkdGggKCkgPSBEb21faHRtbC53aW5kb3cjIy5pbm5lcldpZHRoXG5cbmxldCBlbGVtZW50X2lzX2luX3ZpZXdwb3J0IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgbGV0IHJlY3QgPSBlbHQjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBGbG9hdC4oID49ICkgcmVjdCMjLnRvcCAwLlxuICAmJiBGbG9hdC4oID49ICkgcmVjdCMjLmxlZnQgMC5cbiAgJiYgRmxvYXQuKCA8PSApIHJlY3QjIy5ib3R0b20gKEZsb2F0Lm9mX2ludCAoaW5uZXJIZWlnaHQgKCkpKVxuICAmJiBGbG9hdC4oIDw9ICkgcmVjdCMjLnJpZ2h0IChGbG9hdC5vZl9pbnQgKGlubmVyV2lkdGggKCkpKVxuOztcblxuKCoqIFNjcm9sbHMgdG8gdGhlIGl0ZW0gbWFya2VkIGFzIFwia2VlcC1pbi12aWV3XCIgKilcbmxldCBzY3JvbGwgPyhpZCA9IFwia2VlcC1pbi12aWV3XCIpICgpID1cbiAgbWF0Y2ggRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfb3B0IGlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBlbHQgLT4gaWYgbm90IChlbGVtZW50X2lzX2luX3ZpZXdwb3J0IGVsdCkgdGhlbiBlbHQjI3Njcm9sbEludG9WaWV3IEpzLl90cnVlXG47O1xuXG4oKiBOb3QgeWV0IHN1cHBvcnRlZCBvbiBDaHJvbWUuICBNYXliZSB3ZSBzaG91bGQgdXNlIGpRdWVyeT9cbiAgIHtbXG4gICAgIGxldCBzY3JvbGxfaW50b192aWV3IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogdW5pdCA9XG4gICAgICAgZWx0IyNzY3JvbGxJbnRvVmlldyAob2JqZWN0JWpzXG4gICAgICAgICB2YWwgYmxvY2sgPSBKcy5zdHJpbmcgXCJzdGFydFwiXG4gICAgICAgICB2YWwgYmVoYXZpb3IgPSBKcy5zdHJpbmcgXCJzbW9vdGhcIlxuICAgICAgIGVuZClcbiAgIF19XG4qKVxuKCogW3ZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbF0gZ2V0cyBib3VuZGluZyByZWN0IG9mIFtlbHRdLiBUaGUgYm91bmRpbmcgcmVjdCBpc1xuICAgcmVsYXRpdmUgdG8gdGhlIHZpZXcgcG9ydCAqKVxubGV0IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IGZsb2F0IFJlY3QudCA9XG4gIGxldCByZWN0ID0gZWx0IyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgeyBSZWN0LnRvcCA9IHJlY3QjIy50b3BcbiAgOyBsZWZ0ID0gcmVjdCMjLmxlZnRcbiAgOyBib3R0b20gPSByZWN0IyMuYm90dG9tXG4gIDsgcmlnaHQgPSByZWN0IyMucmlnaHRcbiAgfVxuOztcblxubGV0IHZpZXdwb3J0X3JlY3QgKCkgPVxuICB7IFJlY3QudG9wID0gMDsgbGVmdCA9IDA7IGJvdHRvbSA9IGlubmVySGVpZ2h0ICgpOyByaWdodCA9IGlubmVyV2lkdGggKCkgfVxuOztcblxubGV0IGNsaWVudF9yZWN0X29mX2VsZW1lbnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiBmbG9hdCBSZWN0LnQgPVxuICBsZXQgYm91bmRpbmdfcmVjdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbHQgaW5cbiAgeyBib3VuZGluZ19yZWN0IHdpdGhcbiAgICBib3R0b20gPSBib3VuZGluZ19yZWN0LnRvcCArLiBGbG9hdC5vZl9pbnQgZWx0IyMuY2xpZW50SGVpZ2h0XG4gIDsgcmlnaHQgPSBib3VuZGluZ19yZWN0LmxlZnQgKy4gRmxvYXQub2ZfaW50IGVsdCMjLmNsaWVudFdpZHRoXG4gIH1cbjs7XG5cbmxldCBjbGllbnRfcmVjdCAoKSA9XG4gIHsgUmVjdC50b3AgPSAwXG4gIDsgbGVmdCA9IDBcbiAgOyBib3R0b20gPSBEb21faHRtbC5kb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCMjLmNsaWVudEhlaWdodFxuICA7IHJpZ2h0ID0gRG9tX2h0bWwuZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQjIy5jbGllbnRXaWR0aFxuICB9XG47O1xuXG5cbigqKiBTaW1wbGUgd3JhcHBlciBmb3IgdGhlIGJpbmFyeS1zZWFyY2ggZnVuY3RvciAgICopXG5sZXQgYmluYXJ5X3NlYXJjaCAodHlwZSBlbHQpIH5sZW5ndGggfmdldCB+Y29tcGFyZSBtb2RlIHggPVxuICBsZXQgbW9kdWxlIEJzID1cbiAgICBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIGVsdCA9IGVsdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHVuaXRcblxuICAgICAgbGV0IGdldCAoKSBuID0gZ2V0IG5cbiAgICAgIGxldCBsZW5ndGggKCkgPSBsZW5ndGhcbiAgICBlbmQpXG4gIGluXG4gIEJzLmJpbmFyeV9zZWFyY2ggKCkgfmNvbXBhcmUgbW9kZSB4XG47O1xuXG4oKiogU2VhcmNoZXMgdGhyb3VnaCBlbGVtZW50cyBpbmRleGVkIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXS4gKilcbmxldCBlbGVtZW50X3NlYXJjaCB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCB+c2VhcmNoX2J5IG1vZGUgbGF5b3V0IHggPVxuICBsZXQgZ2V0ID1cbiAgICBsZXQgbnRoX2VsZW1lbnQgbiA9XG4gICAgICBsZXQgaWQgPSBudGhfZWxlbWVudF9pZCBuIGluXG4gICAgICBtYXRjaCBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9vcHQgaWQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkVsZW1lbnQgJXMgbm90IGZvdW5kXCIgaWQgKClcbiAgICAgIHwgU29tZSBlbHQgLT4gZWx0XG4gICAgaW5cbiAgICBsZXQgZmlyc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IDApIGluXG4gICAgbGV0IGxhc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IChsZW5ndGggLSAxKSkgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBuJ3RoIGVsZW1lbnQgaW4gYSBub3JtYWxpemVkIHdheSwgYXMgaWYgdGhlIGluZGV4aW5nIGFsd2F5cyBnb2VzIGluXG4gICAgICAgaW5jcmVhc2luZyBvcmRlciBmcm9tIHRvcCB0b3AgYm90dG9tICopXG4gICAgbGV0IG50aF9lbGVtZW50X25vcm1hbGl6ZWQgbiA9XG4gICAgICBsZXQgaXNfYXNjZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IEZsb2F0LiggPD0gKSBmaXJzdC50b3AgbGFzdC50b3BcbiAgICAgICAgfCBDb2x1bW5zIC0+IEZsb2F0LiggPD0gKSBmaXJzdC5sZWZ0IGxhc3QubGVmdFxuICAgICAgaW5cbiAgICAgIG50aF9lbGVtZW50IChpZiBpc19hc2NlbmRpbmcgdGhlbiBuIGVsc2UgbGVuZ3RoIC0gbiAtIDEpXG4gICAgaW5cbiAgICBmdW4gbiAtPiBzZWFyY2hfYnkgKHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnRfbm9ybWFsaXplZCBuKSlcbiAgaW5cbiAgYmluYXJ5X3NlYXJjaCB+bGVuZ3RoIH5nZXQgfmNvbXBhcmU6RmxvYXQuY29tcGFyZSBtb2RlIHhcbjs7XG5cbmxldCBmaW5kX3Zpc2libGVfcmFuZ2Ugfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgbGF5b3V0ID1cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGVsZW1lbnRfc2VhcmNoID0gZWxlbWVudF9zZWFyY2ggfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgaW5cbiAgICBsZXQgdmlld3BvcnRfcmVjdCA9IHZpZXdwb3J0X3JlY3QgKCkgaW5cbiAgICBsZXQgZmlyc3QgPVxuICAgICAgbGV0IHNlYXJjaF9ieSwgdGFyZ2V0ID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IFJlY3QuYm90dG9tLCB2aWV3cG9ydF9yZWN0LnRvcFxuICAgICAgICB8IENvbHVtbnMgLT4gUmVjdC5yaWdodCwgdmlld3BvcnRfcmVjdC5sZWZ0XG4gICAgICBpblxuICAgICAgZWxlbWVudF9zZWFyY2ggfnNlYXJjaF9ieSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgIGxldCBsYXN0ID1cbiAgICAgIGxldCBzZWFyY2hfYnksIHRhcmdldCA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBSZWN0LnRvcCwgdmlld3BvcnRfcmVjdC5ib3R0b21cbiAgICAgICAgfCBDb2x1bW5zIC0+IFJlY3QubGVmdCwgdmlld3BvcnRfcmVjdC5yaWdodFxuICAgICAgaW5cbiAgICAgIGVsZW1lbnRfc2VhcmNoIH5zZWFyY2hfYnkgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgICgqIEJvdGggW2ZpcnN0XSBhbmQgW2xhc3RdIG5lZWQgdG8gYmUgW1NvbWVdLiBPdGhlcndpc2UsIGZvciBleGFtcGxlIGlmIHRoZSB3aG9sZVxuICAgICAgIHRhYmxlIGlzIGJlbG93IHZpZXcgcG9ydCwgdGhlbiBbZmlyc3RdIHdpbGwgYmUgW1NvbWVdLCBbbGFzdF0gd2lsbCBiZSBbTm9uZV0gKilcbiAgICBPcHRpb24uYm90aCBmaXJzdCBsYXN0KVxuOztcblxubGV0IGdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAge2pzfFxuICAgICAgKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG4gICAgICAgIHZhciB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICAgICAgICB2YXIgcmUgPSAvKGF1dG98c2Nyb2xsKS87XG5cbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IGRvYykge1xuICAgICAgICAgIHJldHVybiBkb2M7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY3VyID0gZWxlbWVudC5wYXJlbnROb2RlO1xuXG4gICAgICAgIHdoaWxlIChjdXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgIHZhciBzdHlsZSA9IHdpbi5nZXRDb21wdXRlZFN0eWxlKGN1cik7XG5cbiAgICAgICAgICBpZiAocmUudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VyID0gY3VyLnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgfSlcbiAgICB8anN9XG47O1xuXG5sZXQgZ2V0X3Njcm9sbF9jb250YWluZXIgKGVsIDogI0RvbS5ub2RlIEpzLnQpIDogRG9tLm5vZGUgSnMudCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCBnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIFt8IEpzLlVuc2FmZS5pbmplY3QgZWwgfF1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIFBlcmZvcm1hbmNlID0gSmF2YXNjcmlwdF9wcm9maWxpbmdcblxubGV0IHRpbWVyX3N0YXJ0IHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZSB0aGVuIFBlcmZvcm1hbmNlLk1hbnVhbC5tYXJrIChzIF4gXCJiZWZvcmVcIik7XG4gIGlmIGRlYnVnIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyN0aW1lIChKcy5zdHJpbmcgcylcbjs7XG5cbmxldCB0aW1lcl9zdG9wIHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZVxuICB0aGVuIChcbiAgICBsZXQgYmVmb3JlID0gcyBeIFwiYmVmb3JlXCIgaW5cbiAgICBsZXQgYWZ0ZXIgPSBzIF4gXCJhZnRlclwiIGluXG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1hcmsgYWZ0ZXI7XG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1lYXN1cmUgfm5hbWU6cyB+c3RhcnQ6YmVmb3JlIH5lbmRfOmFmdGVyKTtcbiAgaWYgZGVidWcgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI3RpbWVFbmQgKEpzLnN0cmluZyBzKVxuOztcblxubGV0IHByaW50X2Vycm9yZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIHMpKSBmbXRcblxubW9kdWxlIFJlcXVlc3RfaWRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcblxuICB2YWwgc2V0X29uY2VfZXhuXG4gICAgOiAgdFxuICAgIC0+IGFuaW1hdGlvbl9mcmFtZV9pZDpEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuICAgIC0+IHNldF90aW1lb3V0X2lkOkRvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAtPiB1bml0XG5cbiAgdmFsIGNhbmNlbGxlZCA6IHQgLT4gYm9vbFxuICB2YWwgY2FuY2VsIDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBpZHMgPVxuICAgIHwgRW1wdHlcbiAgICB8IENhbmNlbGxlZFxuICAgIHwgSWRzIG9mXG4gICAgICAgIHsgYW5pbWF0aW9uX2ZyYW1lX2lkIDogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcbiAgICAgICAgOyBzZXRfdGltZW91dF9pZCA6IERvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAgICAgfVxuXG4gIHR5cGUgdCA9IGlkcyByZWZcblxuICBsZXQgY3JlYXRlICgpIDogdCA9IHJlZiBFbXB0eVxuXG4gIGxldCBzZXRfb25jZV9leG4gKHQgOiB0KSB+YW5pbWF0aW9uX2ZyYW1lX2lkIH5zZXRfdGltZW91dF9pZCA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+XG4gICAgICAoKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgbGV0J3MgYmUgZGVmZW5zaXZlLiAqKVxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZFxuICAgIHwgRW1wdHkgLT4gdCA6PSBJZHMgeyBhbmltYXRpb25fZnJhbWVfaWQ7IHNldF90aW1lb3V0X2lkIH1cbiAgICB8IElkcyBfIC0+IGludmFsaWRfYXJnIFwicmVxdWVzdF9pZHMgYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCBjYW5jZWxsZWQgeCA9XG4gICAgbWF0Y2ggIXggd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+IHRydWVcbiAgICB8IEVtcHR5IHwgSWRzIF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgY2FuY2VsICh0IDogdCkgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPiAoKVxuICAgIHwgRW1wdHkgLT4gdCA6PSBDYW5jZWxsZWRcbiAgICB8IElkcyB7IGFuaW1hdGlvbl9mcmFtZV9pZDsgc2V0X3RpbWVvdXRfaWQgfSAtPlxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZDtcbiAgICAgIHQgOj0gQ2FuY2VsbGVkXG4gIDs7XG5lbmRcblxuKCoqIFtyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV0gbm90aWZpZXMgdGhlIGJyb3dzZXIgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBkbyBzb21lXG4gICAgY29tcHV0YXRpb24gYmVmb3JlIHRoZSBuZXh0IHJlcGFpbnQuIEJlY2F1c2UgdGhpcyBuZWVkcyB0byBvY2N1ciBpbiB0aGUgc2FtZVxuICAgIHN5bmNocm9ub3VzIGNhbGwgKGNhbGxlZCBiZWZvcmUgdGhlIG5leHQgcmVwYWludCksIHJldHVybmluZyBhIERlZmVycmVkLnQgd2lsbCBub3RcbiAgICB3b3JrLiBJbnN0ZWFkLCB5b3UgcGFzcyBpbiBhIGpvYiB0byBiZSBydW4gYmVmb3JlIHRoZSByZXBhaW50LlxuXG4gICAgTm90ZSB0aGF0IGlmIFtjYWxsYmFja10gY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyB3b3JrIGJlZm9yZSBkb2luZyBET00gY2hhbmdlcywgdGhvc2VcbiAgICBjaGFuZ2VzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXBhaW50IGFuZCB3aWxsIGJlIHNhdmVkIHVudGlsIHRoZSBmb2xsb3dpbmcgb25lLlxuXG4gICAgV2hlbiB0aGUgdGFiIGlzIGluIHRoZSBiYWNrZ3JvdW5kLCB0aGUgYnJvd3NlcnMgbmF0aXZlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmdW5jdGlvblxuICAgIHdpbGwgbmV2ZXIgY2FsbCB0aGUgY2FsbGJhY2ssIHNvIGluIG9yZGVyIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcgZXZlbnRzLCB3ZSBzZXQgYW5cbiAgICBhbHRlcm5hdGUgc2V0VGltZW91dCBhdCAxIHNlY29uZC5cbiopXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2sgPVxuICAoKiBXZSBjYXB0dXJlIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gdXNlIGl0IGxhdGVyIHdoZW4gaGFuZGxpbmcgY2FsbGJhY2tzIGZyb21cbiAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBzaW5jZSBleGNlcHRpb25zIHJhaXNlZCB0byB0aGF0IHdvdWxkIG90aGVyd2lzZSBub3QgZ28gdGhyb3VnaFxuICAgICBvdXIgb3JkaW5hcnkgQXN5bmMgbW9uaXRvci4gKilcbiAgbGV0IGN1cnJlbnRfY29udGV4dCA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSBpblxuICBsZXQgcmVxdWVzdF9pZHMgPSBSZXF1ZXN0X2lkcy5jcmVhdGUgKCkgaW5cbiAgbGV0IGNhbGxiYWNrICgpID1cbiAgICBpZiBSZXF1ZXN0X2lkcy5jYW5jZWxsZWQgcmVxdWVzdF9pZHNcbiAgICB0aGVuICgpXG4gICAgZWxzZSAoXG4gICAgICBSZXF1ZXN0X2lkcy5jYW5jZWwgcmVxdWVzdF9pZHM7XG4gICAgICBsZXQgY2FsbGJhY2tfcmVzdWx0ID1cbiAgICAgICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoaW5fY29udGV4dCBjdXJyZW50X2NvbnRleHQgY2FsbGJhY2tcbiAgICAgIGluXG4gICAgICBpZ25vcmUgKGNhbGxiYWNrX3Jlc3VsdCA6ICh1bml0LCB1bml0KSBSZXN1bHQudCkpXG4gIGluXG4gIGxldCBhbmltYXRpb25fZnJhbWVfaWQgPVxuICAgIGxldCBhbmltYXRpb25fY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBjYWxsYmFjayAoKSkgaW5cbiAgICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSBhbmltYXRpb25fY2FsbGJhY2tcbiAgaW5cbiAgbGV0IHNldF90aW1lb3V0X2lkID1cbiAgICBsZXQgdGltZW91dF9jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGNhbGxiYWNrICgpKSBpblxuICAgICgqIDEwMDAgbXMgPSAxczsgIENob3NlbiBiZWNhdXNlIGJhY2tncm91bmRlZCB0YW5nbGUgc2VuZHMgcmVxdWVzdHNcbiAgICAgICBhdCBhcHByb3hpbWF0ZWx5IHRoaXMgcmF0ZS4gKilcbiAgICBsZXQgdGltZW91dCA9IDEwMDAuMCBpblxuICAgIERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dCB0aW1lb3V0X2NhbGxiYWNrIHRpbWVvdXRcbiAgaW5cbiAgUmVxdWVzdF9pZHMuc2V0X29uY2VfZXhuIHJlcXVlc3RfaWRzIH5hbmltYXRpb25fZnJhbWVfaWQgfnNldF90aW1lb3V0X2lkXG47O1xuXG4oKiogVGhlIEpzX29mX29jYW1sIHR5cGUgRG9tX2h0bWwuZWxlbWVudCBkb2Vzbid0IGhhdmUgdGhlIGNvcnJlY3Qgb3B0aW9ucyBmb3JcbiAgICB0aGVpciBgZm9jdXNgIG1ldGhvZC4gQ2FzdCB0byB0aGlzIGluIG9yZGVyIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLiAgKilcbnR5cGUgZm9jdXNhYmxlID1cbiAgPCBmb2N1cyA6IDwgcHJldmVudFNjcm9sbCA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wID4gSnMudCAtPiB1bml0IEpzLm1ldGggPlxuXG5sZXQgYXNfZm9jdXNhYmxlIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IGZvY3VzYWJsZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG4oKiogW1Zpc2liaWxpdHldIGVuY2Fwc3VsYXRlcyB0aGUgZGlydHlpbmcgYW5kIGNsZWFuaW5nIG9mIHRoZSB2aXNpYmlsaXR5IGZsYWdcblxuICAgIFRoZSB2aWV3cG9ydCBzdGFydHMgb3V0IGRpcnR5LiBXaGVuIHdlIGxvb2sgYXQgdGhlIERPTSB0byBjb21wdXRlIHdoYXQgaXMgdmlzaWJsZSBieVxuICAgIGNhbGxpbmcgW3VwZGF0ZV92aXNpYmlsaXR5XSwgdGhlIHZpZXdwb3J0IHRoZW4gYmVjb21lcyBjbGVhbi4gQW55IHRpbWUgdGhlIHVzZXJcbiAgICBzY3JvbGxzIG91ciBwYWdlIG9yIHJlc2l6ZXMgdGhlIHdpbmRvdywgdGhlIHZpZXdwb3J0IGJlY29tZXMgZGlydHkgYWdhaW4uIElmIHdlIHVwZGF0ZVxuICAgIHRoZSBET00sIHRoZSB2aWV3cG9ydCBiZWNvbWVzIGRpcnR5IGFnYWluIGJlY2F1c2UgYSBET00gdXBkYXRlIGNvdWxkIGNhdXNlIGEgcmVmbG93LFxuICAgIG1vdmluZyB0aGUgZWxlbWVudHMgdGhhdCBhcmUgdmlzaWJsZS5cblxuICAgIFdlIGhhdmUgaW1wbGVtZW50ZWQgdGhpcyBhcyBhIGZsYWcgaW5zdGVhZCBvZiByZXF1aXJpbmcgdGhlIHVzZXJzIHRvIHNlbmQgYW4gYWN0aW9uIG9uXG4gICAgc2Nyb2xsIGJlY2F1c2UgaXQgd291bGQgbWFrZSBubyBzZW5zZSB0byBjb21wdXRlIHRoZSB2aXNpYmlsaXR5IG9uIHRoZSB2aXJ0dWFsLWRvbVxuICAgIHdoZW4gdGhlIHZpcnR1YWwtZG9tIGRvZXMgbm90IG1hdGNoIHRoZSBhY3R1YWwgZG9tIChhcyBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mXG4gICAgW2FwcGx5X2FjdGlvbnNdKS4gKilcbm1vZHVsZSBWaXNpYmlsaXR5IDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGVfYXNfZGlydHkgOiB1bml0IC0+IHRcbiAgdmFsIG1hcmtfY2xlYW4gOiB0IC0+IHVuaXRcbiAgdmFsIG1hcmtfZGlydHkgOiB0IC0+IHVuaXRcbiAgdmFsIGlzX2RpcnR5IDogdCAtPiBib29sXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBtdXRhYmxlIHdoZW5fZGlydHkgOiB1bml0IEl2YXIudCB9XG5cbiAgbGV0IGNyZWF0ZV9hc19kaXJ0eSAoKSA9IHsgd2hlbl9kaXJ0eSA9IEl2YXIuY3JlYXRlX2Z1bGwgKCkgfVxuICBsZXQgbWFya19kaXJ0eSB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQud2hlbl9kaXJ0eSAoKVxuICBsZXQgaXNfZGlydHkgdCA9IEl2YXIuaXNfZnVsbCB0LndoZW5fZGlydHlcbiAgbGV0IG1hcmtfY2xlYW4gdCA9IGlmIGlzX2RpcnR5IHQgdGhlbiB0LndoZW5fZGlydHkgPC0gSXZhci5jcmVhdGUgKClcbmVuZFxuXG5tb2R1bGUgTG9nZ2luZ19maWx0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0cmluZ19ibGFuZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgQmxhbmcudCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBbGxcbiAgICB8IE5vbmVcbiAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBvZiBTdHJpbmdfYmxhbmcudFxuICAgIHwgQ3VzdG9tX2ZpbHRlciBvZiAoU2V4cC50IC0+IGJvb2wpXG5lbmRcblxubW9kdWxlIERlYnVnX2ZsYWdzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA6IHVuaXQgLT4gTG9nZ2luZ19maWx0ZXIudFxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiB1bml0IC0+IGJvb2xcbiAgICA7IHNob3VsZF9kZWJ1ZyA6IHVuaXQgLT4gYm9vbFxuICAgIH1cblxuICB2YWwgaW5pdF9hcHBcbiAgICA6ICBhcHBfaWQ6c3RyaW5nXG4gICAgLT4gZmlsdGVyX25hbWVzOlN0cmluZy5TZXQudFxuICAgIC0+IGRlYnVnOmJvb2xcbiAgICAtPiBzdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbG9nZ2luZ19maWx0ZXIgOiB1bml0IC0+IExvZ2dpbmdfZmlsdGVyLnRcbiAgICA7IHNob3VsZF9wcm9maWxlIDogdW5pdCAtPiBib29sXG4gICAgOyBzaG91bGRfZGVidWcgOiB1bml0IC0+IGJvb2xcbiAgICB9XG5cbiAgbW9kdWxlIEFwcF9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbHRlcl9uYW1lcyA6IFN0cmluZy5TZXQudFxuICAgICAgOyBsb2dnaW5nX2ZpbHRlciA6IExvZ2dpbmdfZmlsdGVyLnQgcmVmXG4gICAgICA7IHNob3VsZF9wcm9maWxlIDogYm9vbCByZWZcbiAgICAgIDsgc2hvdWxkX2RlYnVnIDogYm9vbCByZWZcbiAgICAgIH1cblxuICAgIGxldCBzZXRfbG9nZ2luZ19maWx0ZXIgdCB+bG9nZ2luZ19maWx0ZXIgPSB0LmxvZ2dpbmdfZmlsdGVyIDo9IGxvZ2dpbmdfZmlsdGVyXG4gICAgbGV0IHNldF9zaG91bGRfcHJvZmlsZSB0IH5zaG91bGRfcHJvZmlsZSA9IHQuc2hvdWxkX3Byb2ZpbGUgOj0gc2hvdWxkX3Byb2ZpbGVcbiAgICBsZXQgc2V0X3Nob3VsZF9kZWJ1ZyB0IH5zaG91bGRfZGVidWcgPSB0LnNob3VsZF9kZWJ1ZyA6PSBzaG91bGRfZGVidWdcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBnbG9iYWwgPSBvYmplY3RcbiAgICBtZXRob2Qgc3RhcnRMb2dnaW5nQWxsIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydExvZ2dpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0TG9nZ2luZ0N1c3RvbSA6XG4gICAgICAoKEpzLmpzX3N0cmluZyBKcy50IC0+IGJvb2wgSnMudCkgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RvcExvZ2dpbmcgOiAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RhcnRQcm9maWxpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0b3BQcm9maWxpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0RGVidWdnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdG9wRGVidWdnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzYXZlSW5jcmVtZW50YWxHcmFwaCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG4gIGVuZFxuXG4gIGxldCBnbG9iYWwgOiBnbG9iYWwgSnMudCA9IEpzLlVuc2FmZS5nbG9iYWxcbiAgbGV0IGdsb2JhbF9pc19pbml0aWFsaXplZCA9IHJlZiBmYWxzZVxuICBsZXQgYXBwX3N0YXRlcyA6IEFwcF9zdGF0ZS50IFN0cmluZy5UYWJsZS50ID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSAoKVxuXG4gIGxldCBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiXFxcIlwiIF4gc3RyIF4gXCJcXFwiXCIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgOztcblxuICBsZXQgbXVsdGlfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiICBcIiBeIHN0cikgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgaW5pdF9nbG9iYWwgfmFwcF9maWx0ZXJzICgpID1cbiAgICBsZXQgd2l0aF9hcHBfaWRfb3B0IHVwZGF0ZV9zdGF0ZSBhcHBfaWRfb3B0ID1cbiAgICAgIGxldCBhcHBfaWRfb3B0ID0gSnMuT3B0LnRvX29wdGlvbiBhcHBfaWRfb3B0IHw+IE9wdGlvbi5tYXAgfmY6SnMudG9fc3RyaW5nIGluXG4gICAgICBtYXRjaCBhcHBfaWRfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBIYXNodGJsLml0ZXIgYXBwX3N0YXRlcyB+Zjp1cGRhdGVfc3RhdGVcbiAgICAgIHwgU29tZSBhcHBfaWQgLT5cbiAgICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBhcHBfc3RhdGVzIGFwcF9pZCB3aXRoXG4gICAgICAgICB8IFNvbWUgc3RhdGUgLT4gdXBkYXRlX3N0YXRlIHN0YXRlXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICAgXCJVbmFibGUgdG8gZmluZCBhcHAgd2l0aCBpZCBcXFwiJXNcXFwiLiBWYWxpZCBhcHAgaWRzIGFyZTogJXNcIlxuICAgICAgICAgICAgIGFwcF9pZFxuICAgICAgICAgICAgIChIYXNodGJsLmtleXMgYXBwX3N0YXRlcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCkpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIGxvZ2dpbmdfZmlsdGVyID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9sb2dnaW5nX2ZpbHRlciB+bG9nZ2luZ19maWx0ZXIpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9wcm9maWxlIHNob3VsZF9wcm9maWxlID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9zaG91bGRfcHJvZmlsZSB+c2hvdWxkX3Byb2ZpbGUpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9kZWJ1ZyBzaG91bGRfZGVidWcgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X3Nob3VsZF9kZWJ1ZyB+c2hvdWxkX2RlYnVnKVxuICAgIGluXG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQWxsIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBBbGwpO1xuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ1xuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBibGFuZ19zdHIgLT5cbiAgICAgIGxldCBibGFuZ19zdHIgPSBKcy50b19zdHJpbmcgYmxhbmdfc3RyIGluXG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKGZ1biBhcHBfc3RhdGUgLT5cbiAgICAgICAgbGV0IGJsYW5nID0gQmxhbmcudF9vZl9zZXhwIFN0cmluZy50X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIGJsYW5nX3N0cikgaW5cbiAgICAgICAgbGV0IGludmFsaWRfbmFtZXMgPVxuICAgICAgICAgIEJsYW5nLmZvbGQgYmxhbmcgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSB+ZjooZnVuIGludmFsaWRfbmFtZXMgbmFtZSAtPlxuICAgICAgICAgICAgaWYgU2V0Lm1lbSBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIG5hbWVcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9uYW1lc1xuICAgICAgICAgICAgZWxzZSBTZXQuYWRkIGludmFsaWRfbmFtZXMgbmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU2V0LmlzX2VtcHR5IGludmFsaWRfbmFtZXNcbiAgICAgICAgdGhlblxuICAgICAgICAgIEFwcF9zdGF0ZS5zZXRfbG9nZ2luZ19maWx0ZXJcbiAgICAgICAgICAgIGFwcF9zdGF0ZVxuICAgICAgICAgICAgfmxvZ2dpbmdfZmlsdGVyOihOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwcmludF9lcnJvcmZcbiAgICAgICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgbmFtZWQgZmlsdGVyKHMpOiAlcy4gVmFsaWQgbmFtZXMgYXJlOlxcbiVzXCJcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBpbnZhbGlkX25hbWVzIHw+IHNpbmdsZV9saW5lX3N0cmluZ19saXN0KVxuICAgICAgICAgICAgKFNldC50b19saXN0IGFwcF9zdGF0ZS5maWx0ZXJfbmFtZXMgfD4gbXVsdGlfbGluZV9zdHJpbmdfbGlzdCkpKTtcbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdDdXN0b21cbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gZmlsdGVyIC0+XG4gICAgICBsZXQgZmlsdGVyIGFjdGlvbl9zZXhwID1cbiAgICAgICAgYWN0aW9uX3NleHAgfD4gU2V4cC50b19zdHJpbmcgfD4gSnMuc3RyaW5nIHw+IGZpbHRlciB8PiBKcy50b19ib29sXG4gICAgICBpblxuICAgICAgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIChDdXN0b21fZmlsdGVyIGZpbHRlcikpO1xuICAgIGdsb2JhbCMjLnN0b3BMb2dnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBOb25lKTtcbiAgICBnbG9iYWwjIy5zdGFydFByb2ZpbGluZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgdHJ1ZSk7XG4gICAgZ2xvYmFsIyMuc3RvcFByb2ZpbGluZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgZmFsc2UpO1xuICAgIGdsb2JhbCMjLnN0YXJ0RGVidWdnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfZGVidWcgdHJ1ZSk7XG4gICAgZ2xvYmFsIyMuc3RvcERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zYXZlSW5jcmVtZW50YWxHcmFwaFxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgbGV0IGZpbGVuYW1lID0gXCJjdXJyZW50X2luY3JfZG9tX2RvdF9ncmFwaC5kb3RcIiBpblxuICAgICAgVWlfaW5jci5zYXZlX2RvdF90b19maWxlIGZpbGVuYW1lO1xuICAgICAgbGV0IGNvbnRlbnRzID0gSW5fY2hhbm5lbC5yZWFkX2FsbCBmaWxlbmFtZSBpblxuICAgICAgVmRvbV9maWxlX2Rvd25sb2FkLmNyZWF0ZSB+ZmlsZW5hbWUgfm1pbWV0eXBlOlwicGxhaW4vdGV4dFwiIH5jb250ZW50c1xuICAgICAgfD4gVmRvbV9maWxlX2Rvd25sb2FkLnRyaWdnZXIpO1xuICAgIGxldCBncm91cCBzIH5mID1cbiAgICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBDb2xsYXBzZWQgKEpzLnN0cmluZyBzKTtcbiAgICAgIGYgKCk7XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwRW5kXG4gICAgaW5cbiAgICBsZXQgbG9nIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpIGluXG4gICAgZ3JvdXAgXCJJbmNyX2RvbSAvIEJvbnNhaSBDb25zb2xlXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgZ3JvdXAgXCJBY3Rpb24gTG9nZ2luZ1wiIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbG9nXG4gICAgICAgICAge3xMb2dnaW5nIHByaW50cyBhY3Rpb24gaW5mbyB0byB0aGUgY29uc29sZS4gSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gVG8gc3RhcnQgbG9nZ2luZywgdHlwZSBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbnN0YXJ0TG9nZ2luZ0FsbChbYXBwX2lkXSkgLSBsb2cgYWxsIGFjdGlvbnNcbnN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZSBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgcHJlLWRlZmluZWQgbmFtZWQgZmlsdGVyIFtmaWx0ZXJfbmFtZV1cbnN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZV9ibGFuZyBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgYmxhbmcgb2YgbmFtZWQgZmlsdGVycyBbZmlsdGVyX25hbWVfYmxhbmddXG5zdGFydExvZ2dpbmdDdXN0b20oZmlsdGVyIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBjdXN0b20gZnVuY3Rpb24gW2ZpbHRlcl0gZnJvbSBhIHN0cmluZyAodGhlIGFjdGlvbiBzZXhwKSB0byBhIGJvb2xcblRvIHN0b3AgbG9nZ2luZywgdHlwZTogc3RvcExvZ2dpbmcoW2FwcF9pZF0pfH0pO1xuICAgICAgZ3JvdXAgXCJBY3Rpb24gUHJvZmlsaW5nXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsb2dcbiAgICAgICAgICB7fFByb2ZpbGluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LlxuVG8gc3RhcnQgcHJvZmlsaW5nLCB0eXBlOiBzdGFydFByb2ZpbGluZyhbYXBwX2lkXSlcblRvIHN0b3AgcHJvZmlsaW5nLCB0eXBlOiBzdG9wUHJvZmlsaW5nKFthcHBfaWRdKXx9KTtcbiAgICAgIGdyb3VwIFwiRGVidWdnaW5nXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsb2dcbiAgICAgICAgICB7fERlYnVnZ2luZyBwcmludHMgdGltaW5nIGluZm8gdG8gdGhlIGNvbnNvbGUuIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgYnkgdGhlIGFwcC5cblRvIHN0YXJ0IGRlYnVnZ2luZywgdHlwZTogc3RhcnREZWJ1Z2dpbmcoW2FwcF9pZF0pXG5UbyBzdG9wIGRlYnVnZ2luZywgdHlwZTogc3RvcERlYnVnZ2luZyhbYXBwX2lkXSlcblxuW2FwcF9pZF0gaXMgZXF1YWwgdG8gdGhlIGlkIG9mIHRoZSBlbGVtZW50IHRoYXQgdGhlIGluY3ItZG9tIGFwcCBpcyBib3VuZCB0by4gSWYgdGhlIHBhZ2Ugb25seSBoYXMgb25lIGFwcCBvciB5b3Ugd2FudCB0byBhcHBseSB0aGUgYWN0aW9uIHRvIGFsbCBhcHBzLCB5b3UgY2FuIHBhc3MgaW4gW251bGxdIChvciBmb3Igc2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9ucywgb21pdCBpdCBhbHRvZ2V0aGVyKS58fSk7XG4gICAgICBsb2cgYXBwX2ZpbHRlcnMpXG4gIDs7XG5cbiAgbGV0IGluaXRfYXBwIH5hcHBfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3AgPVxuICAgIGxldCBhcHBfaW5pdF9tZXNzYWdlID1cbiAgICAgIHNwcmludGZcbiAgICAgICAge3xBdmFpbGFibGUgbG9nZ2luZyBmaWx0ZXJzIGZvciBcIiVzXCI6XG4lc3x9XG4gICAgICAgIGFwcF9pZFxuICAgICAgICAoU2V0LnRvX2xpc3QgZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpXG4gICAgaW5cbiAgICBpZiBub3QgIWdsb2JhbF9pc19pbml0aWFsaXplZFxuICAgIHRoZW4gKFxuICAgICAgaW5pdF9nbG9iYWwgfmFwcF9maWx0ZXJzOmFwcF9pbml0X21lc3NhZ2UgKCk7XG4gICAgICBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgOj0gdHJ1ZSlcbiAgICBlbHNlIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgYXBwX2luaXRfbWVzc2FnZSk7XG4gICAgbGV0IGxvZ2dpbmdfZmlsdGVyID0gcmVmIExvZ2dpbmdfZmlsdGVyLk5vbmUgaW5cbiAgICBsZXQgc2hvdWxkX3Byb2ZpbGUgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2hvdWxkX2RlYnVnID0gcmVmIGRlYnVnIGluXG4gICAgSGFzaHRibC5zZXRcbiAgICAgIGFwcF9zdGF0ZXNcbiAgICAgIH5rZXk6YXBwX2lkXG4gICAgICB+ZGF0YTp7IGZpbHRlcl9uYW1lczsgbG9nZ2luZ19maWx0ZXI7IHNob3VsZF9wcm9maWxlOyBzaG91bGRfZGVidWcgfTtcbiAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPiBIYXNodGJsLnJlbW92ZSBhcHBfc3RhdGVzIGFwcF9pZCk7XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA9IChmdW4gKCkgLT4gIWxvZ2dpbmdfZmlsdGVyKVxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgPSAoZnVuICgpIC0+ICFzaG91bGRfcHJvZmlsZSlcbiAgICA7IHNob3VsZF9kZWJ1ZyA9IChmdW4gKCkgLT4gIXNob3VsZF9kZWJ1ZylcbiAgICB9XG4gIDs7XG5lbmRcblxuKCogQWRkcyB0aGUgbmVjZXNzYXJ5IGF0dHJpYnV0ZSB0byB0aGUgcm9vdCBub2RlIHNvIHRoYXQgaXQgY2FuIGludGVyY2VwdFxuICAga2V5Ym9hcmQgZXZlbnRzLlxuICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90YWJpbmRleCAqKVxubGV0IG92ZXJyaWRlX3Jvb3RfZWxlbWVudCByb290ID1cbiAgbGV0IG9wZW4gVmRvbSBpblxuICBsZXQgc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCA9XG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQuYXR0cnMgfD4gQXR0ci5FeHBlcnQuY29udGFpbnNfbmFtZSBcImRpc2FibGVfdGFiX2luZGV4XCIgfD4gbm90XG4gIGluXG4gIG1hdGNoIChyb290IDogTm9kZS50KSB3aXRoXG4gIHwgRWxlbWVudCBlbGVtZW50IHdoZW4gc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCAtPlxuICAgIGxldCBhZGRfbmV3X2F0dHJzIGF0dHJzID1cbiAgICAgIFZkb20uQXR0ci4oc3R5bGUgKENzc19nZW4ub3V0bGluZSB+c3R5bGU6YE5vbmUgKCkpIEAgdGFiaW5kZXggMCBAIGF0dHJzKVxuICAgIGluXG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQubWFwX2F0dHJzIH5mOmFkZF9uZXdfYXR0cnMgfD4gTm9kZS5FbGVtZW50XG4gIHwgXyAtPiByb290XG47O1xuXG5sZXQgcmVjIGdldF90YWdfbmFtZSAobm9kZSA6IFZkb20uTm9kZS50KSA9XG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IEVsZW1lbnQgZSAtPiBTb21lIChWZG9tLk5vZGUuRWxlbWVudC50YWcgZSlcbiAgfCBMYXp5IHsgdDsgXyB9IC0+IGdldF90YWdfbmFtZSAoTGF6eS5mb3JjZSB0KVxuICB8IE5vbmUgfCBUZXh0IF8gfCBXaWRnZXQgXyAtPiBOb25lXG47O1xuXG5sZXQgc3RhcnRfYm9uc2FpXG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlByaXZhdGUuU19mb3JfYm9uc2FpXG4gICAgICAgIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWxcbiAgICAgICAgIGFuZCB0eXBlIEFjdGlvbi50ID0gYWN0aW9uKVxuICA9XG4gICgqIFRoaXMgaXMgaWRlbXBvdGVudCBhbmQgc28gZmluZSB0byBkby4gKilcbiAgQXN5bmNfanMuaW5pdCAoKTtcbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0JWJpbmQgKCkgPSBBc3luY19qcy5kb2N1bWVudF9sb2FkZWQgKCkgaW5cbiAgICAgbGV0IG1vZGVsX3YgPSBJbmNyLlZhci5jcmVhdGUgaW5pdGlhbF9tb2RlbCBpblxuICAgICBsZXQgbW9kZWwgPSBJbmNyLlZhci53YXRjaCBtb2RlbF92IGluXG4gICAgIGxldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92ID0gSW5jci5WYXIuY3JlYXRlIGluaXRpYWxfbW9kZWwgaW5cbiAgICAgbGV0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5ID0gSW5jci5WYXIud2F0Y2ggbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiBpblxuICAgICBsZXQgY3V0b2ZmID1cbiAgICAgICBJbmNyLkN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgLT5cbiAgICAgICAgIEFwcC5Nb2RlbC5jdXRvZmYgb2xkX3ZhbHVlIG5ld192YWx1ZSlcbiAgICAgaW5cbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsIGN1dG9mZjtcbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5IGN1dG9mZjtcbiAgICAgbGV0IGFjdGlvbl9xdWV1ZSA9IERlcXVlLmNyZWF0ZSAoKSBpblxuICAgICBsZXQgbW9kdWxlIEV2ZW50ID1cbiAgICAgICBWZG9tLkVmZmVjdC5EZWZpbmUgKHN0cnVjdFxuICAgICAgICAgbW9kdWxlIEFjdGlvbiA9IEFwcC5BY3Rpb25cblxuICAgICAgICAgbGV0IGhhbmRsZSBhY3Rpb24gPSBEZXF1ZS5lbnF1ZXVlX2JhY2sgYWN0aW9uX3F1ZXVlIGFjdGlvblxuICAgICAgIGVuZClcbiAgICAgaW5cbiAgICAgbGV0IHZpc2liaWxpdHkgPSBWaXNpYmlsaXR5LmNyZWF0ZV9hc19kaXJ0eSAoKSBpblxuICAgICBsZXQgdmlld3BvcnRfY2hhbmdlZCAoKSA9IFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5IGluXG4gICAgICgqIFRoaXMgcmVnaXN0ZXJzIHRoZSBbdmlld3BvcnRfY2hhbmdlZF0gaGFuZGxlciB3aXRoIFZpcnR1YWxfZG9tLiBJZiBldmVudCBoYW5kbGVyc1xuICAgICAgICB1c2UgdGhlIFtWZG9tLkVmZmVjdC5WaWV3cG9ydF9jaGFuZ2VkXSBldmVudCwgd2UgYXJlIG5vdGlmaWVkLiAqKVxuICAgICBsZXQgbW9kdWxlIF8gPVxuICAgICAgIFZkb20uRWZmZWN0LkRlZmluZV92aXNpYmlsaXR5IChzdHJ1Y3RcbiAgICAgICAgIGxldCBoYW5kbGUgPSB2aWV3cG9ydF9jaGFuZ2VkXG4gICAgICAgZW5kKVxuICAgICBpblxuICAgICBsZXQgZ2V0X3ZpZXcsIGdldF9hcHBseV9hY3Rpb24sIGdldF91cGRhdGVfdmlzaWJpbGl0eSwgZ2V0X29uX2Rpc3BsYXkgPVxuICAgICAgIGxldCBvYnMgPVxuICAgICAgICAgSW5jci5vYnNlcnZlXG4gICAgICAgICAgIChBcHAuY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6bW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgfmluamVjdDpFdmVudC5pbmplY3QpXG4gICAgICAgaW5cbiAgICAgICBsZXQgZmV0Y2ggKGYgOiBfIEFwcF9pbnRmLlByaXZhdGUuc25hcHNob3QgLT4gXykgKCkgPVxuICAgICAgICAgZiAoSW5jci5PYnNlcnZlci52YWx1ZV9leG4gb2JzKVxuICAgICAgIGluXG4gICAgICAgKCBmZXRjaCAoZnVuIHsgdmlldzsgXyB9IC0+IHZpZXcpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgYXBwbHlfYWN0aW9uOyBfIH0gLT4gYXBwbHlfYWN0aW9uKVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IHVwZGF0ZV92aXNpYmlsaXR5OyBfIH0gLT4gdXBkYXRlX3Zpc2liaWxpdHkpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgb25fZGlzcGxheTsgXyB9IC0+IG9uX2Rpc3BsYXkpIClcbiAgICAgaW5cbiAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgIGxldCBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPVxuICAgICAgIChcImFsbFwiLCBGbi5jb25zdCB0cnVlKSA6OiAoXCJub25lXCIsIEZuLmNvbnN0IGZhbHNlKSA6OiBuYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICAgICB8PiBTdHJpbmcuVGFibGUub2ZfYWxpc3RfZXhuXG4gICAgIGluXG4gICAgIGxldCB7IERlYnVnX2ZsYWdzLmxvZ2dpbmdfZmlsdGVyOyBzaG91bGRfcHJvZmlsZTsgc2hvdWxkX2RlYnVnIH0gPVxuICAgICAgIGxldCBmaWx0ZXJfbmFtZXMgPSBIYXNodGJsLmtleXMgbmFtZWRfbG9nZ2luZ19maWx0ZXJzIHw+IFN0cmluZy5TZXQub2ZfbGlzdCBpblxuICAgICAgIERlYnVnX2ZsYWdzLmluaXRfYXBwIH5hcHBfaWQ6YmluZF90b19lbGVtZW50X3dpdGhfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3BcbiAgICAgaW5cbiAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICBsZXQgaHRtbF9kb20gPSBWZG9tLk5vZGUudG9fZG9tIGh0bWwgaW5cbiAgICAgbGV0IGVsZW0gPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9leG4gYmluZF90b19lbGVtZW50X3dpdGhfaWQgaW5cbiAgICAgbGV0IHBhcmVudCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXSAoSnMuT3B0LnRvX29wdGlvbiBlbGVtIyMucGFyZW50Tm9kZSkgaW5cbiAgICAgRG9tLnJlcGxhY2VDaGlsZCBwYXJlbnQgaHRtbF9kb20gZWxlbTtcbiAgICAgKCogd2UgbWFrZSBzdXJlIHRvIGNhbGwgW3ZpZXdwb3J0X2NoYW5nZWRdIHdoZW5ldmVyIHRoZSB3aW5kb3cgcmVzaXplcyBvciB0aGUgc2Nyb2xsXG4gICAgICAgIGNvbnRhaW5lciBpbiB3aGljaCBvdXIgSFRNTCBpcyBsb2NhdGVkIGlzIHNjcm9sbGVkLiAqKVxuICAgICBsZXQgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IGV2ZW50X25hbWUgd2hlcmUgPVxuICAgICAgIGlnbm9yZVxuICAgICAgICAgKERvbS5hZGRFdmVudExpc3RlbmVyXG4gICAgICAgICAgICB3aGVyZVxuICAgICAgICAgICAgKERvbS5FdmVudC5tYWtlIGV2ZW50X25hbWUpXG4gICAgICAgICAgICAoRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICB2aWV3cG9ydF9jaGFuZ2VkICgpO1xuICAgICAgICAgICAgICAgSnMuX3RydWUpKVxuICAgICAgICAgICAgSnMuX2ZhbHNlXG4gICAgICAgICAgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gICAgIGluXG4gICAgIGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBcInNjcm9sbFwiIChKc19taXNjLmdldF9zY3JvbGxfY29udGFpbmVyIGh0bWxfZG9tKTtcbiAgICAgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IFwicmVzaXplXCIgRG9tX2h0bWwud2luZG93O1xuICAgICBsZXQlYmluZCBzdGF0ZSA9XG4gICAgICAgQXBwLm9uX3N0YXJ0dXBcbiAgICAgICAgIH5zY2hlZHVsZV9hY3Rpb246KGZ1biBhIC0+IFVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlIChFdmVudC5pbmplY3QgYSkpXG4gICAgICAgICAoSW5jci5WYXIudmFsdWUgbW9kZWxfdilcbiAgICAgaW5cbiAgICAgbGV0IHByZXZfaHRtbCA9IHJlZiBodG1sIGluXG4gICAgIGxldCBwcmV2X2VsdCA9IHJlZiBodG1sX2RvbSBpblxuICAgICBsZXQgcmVmb2N1c19yb290X2VsZW1lbnQgKCkgPVxuICAgICAgIGxldCBlbGVtZW50ID0gIXByZXZfZWx0IGluXG4gICAgICAgKCogSWYgdGhlIGVsZW1lbnQgdG8gZm9jdXMgaXMgYW4gZWxlbWVudCwgY2FzdCBpdCBpbnRvIHRoZVxuICAgICAgICAgIG1vcmUgcGVybWlzc2l2ZSBcImZvY3VzYWJsZVwiIHR5cGUgZGVmaW5lZCBhdCB0aGUgdG9wIG9mXG4gICAgICAgICAgdGhpcyBmaWxlLCBhbmQgdGhlbiBmb2N1cyB0aGF0LiAqKVxuICAgICAgIERvbV9odG1sLkNvZXJjZVRvLmVsZW1lbnQgZWxlbWVudFxuICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICB8PiBPcHRpb24ubWFwIH5mOmFzX2ZvY3VzYWJsZVxuICAgICAgIHw+IE9wdGlvbi5pdGVyIH5mOihmdW4gZWxlbWVudCAtPlxuICAgICAgICAgZWxlbWVudCMjZm9jdXNcbiAgICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgIHZhbCBwcmV2ZW50U2Nyb2xsID0gSnMuX3RydWVcbiAgICAgICAgICAgZW5kKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0YXJ0IHMgPVxuICAgICAgIHRpbWVyX3N0YXJ0IHMgfmRlYnVnOihzaG91bGRfZGVidWcgKCkpIH5wcm9maWxlOihzaG91bGRfcHJvZmlsZSAoKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0b3AgcyA9XG4gICAgICAgdGltZXJfc3RvcCBzIH5kZWJ1Zzooc2hvdWxkX2RlYnVnICgpKSB+cHJvZmlsZTooc2hvdWxkX3Byb2ZpbGUgKCkpXG4gICAgIGluXG4gICAgICgqXG4gICAgICAgIFRha2UgYWN0aW9uIG9uIGFueSBibHVyIGV2ZW50LCByZWZvY3VzaW5nIHRvIHRoZSByb290IG5vZGUgaWYgdGhlIHJlbGF0ZWRUYXJnZXQgaXNcbiAgICAgICAgbnVsbCBvciB1bmRlZmluZWQsIHNpZ25pZnlpbmcgdGhhdCBmb2N1cyB3YXMgbG9zdCBhbmQgd291bGQgb3RoZXJ3aXNlIGJlIHJlc2V0IHRvXG4gICAgICAgIHRoZSBib2R5IG5vZGUuXG5cbiAgICAgICAgVGhlIEpzLl90cnVlIHBhcmFtZXRlciBwcm92aWRlZCB0byBEb20uYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgdXNlQ2FwdHVyZVxuICAgICAgICBwYXJhbWV0ZXIgZGVzY3JpYmVkIGhlcmU6XG4gICAgICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyXG4gICAgICopXG4gICAgIGlnbm9yZVxuICAgICBAQCBEb20uYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgIERvbV9odG1sLndpbmRvd1xuICAgICAgICAgIERvbV9odG1sLkV2ZW50LmJsdXJcbiAgICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgICAoKiBbSnMuVW5zYWZlLipdIGlzIGxpa2UgW09iai5tYWdpY10uIFdlIHNob3VsZCBiZSBleHBsaWNpdCBhYm91dCB3aGF0IHdlXG4gICAgICAgICAgICAgICAgZXhwZWN0LiAqKVxuICAgICAgICAgICAgIGxldCBlXG4gICAgICAgICAgICAgICA6IDwgcmVsYXRlZFRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcCA+IEpzLnRcbiAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IHJlbGF0ZWRfdGFyZ2V0ID0gZSMjLnJlbGF0ZWRUYXJnZXQgaW5cbiAgICAgICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IHJlbGF0ZWRfdGFyZ2V0KSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpO1xuICAgICAgICAgICAgIEpzLl90cnVlKSlcbiAgICAgICAgICBKcy5fdHJ1ZTtcbiAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ICgpID1cbiAgICAgICBWaXNpYmlsaXR5Lm1hcmtfY2xlYW4gdmlzaWJpbGl0eTtcbiAgICAgICBsZXQgbmV3X21vZGVsID1cbiAgICAgICAgIChnZXRfdXBkYXRlX3Zpc2liaWxpdHkgKCkpXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgaW5cbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfdiBuZXdfbW9kZWw7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCJcbiAgICAgaW5cbiAgICAgbGV0IG1heWJlX2xvZ19hY3Rpb24gPVxuICAgICAgIGxldCBzYWZlX2ZpbHRlciB+bmFtZSBmaWx0ZXIgYWN0aW9uID1cbiAgICAgICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gZmlsdGVyIGFjdGlvbikgd2l0aFxuICAgICAgICAgfCBPayBzaG91bGRfbG9nIC0+IHNob3VsZF9sb2dcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgIHByaW50X2Vycm9yZiAhXCJFeGNlcHRpb24gcmFpc2VkIGJ5ICVzOiAle0Vycm9yI2h1bX1cIiBuYW1lIGVycjtcbiAgICAgICAgICAgZmFsc2VcbiAgICAgICBpblxuICAgICAgIGxldCBuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUgPVxuICAgICAgICAgQ29yZS5NZW1vLm9mX2NvbXBhcmFibGVcbiAgICAgICAgICAgKG1vZHVsZSBMb2dnaW5nX2ZpbHRlci5TdHJpbmdfYmxhbmcpXG4gICAgICAgICAgIChmdW4gYmxhbmcgLT5cbiAgICAgICAgICAgICAgbGV0IGZpbHRlciA9IEhhc2h0YmwuZmluZF9leG4gbmFtZWRfbG9nZ2luZ19maWx0ZXJzIGluXG4gICAgICAgICAgICAgIHNhZmVfZmlsdGVyXG4gICAgICAgICAgICAgICAgfm5hbWU6KHNwcmludGYgIVwibmFtZWQgZmlsdGVyIGJsYW5nIFxcXCIle3NleHA6c3RyaW5nIEJsYW5nLnR9XFxcIlwiIGJsYW5nKVxuICAgICAgICAgICAgICAgIChtYXRjaCBibGFuZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQmFzZSBuYW1lIC0+IGZpbHRlciBuYW1lXG4gICAgICAgICAgICAgICAgIHwgXyAtPiBmdW4gYWN0aW9uIC0+IEJsYW5nLmV2YWwgYmxhbmcgKGZ1biBuYW1lIC0+IGZpbHRlciBuYW1lIGFjdGlvbikpKVxuICAgICAgIGluXG4gICAgICAgZnVuIGFjdGlvbiAtPlxuICAgICAgICAgbGV0IHNob3VsZF9sb2dfYWN0aW9uID1cbiAgICAgICAgICAgbWF0Y2ggbG9nZ2luZ19maWx0ZXIgKCkgd2l0aFxuICAgICAgICAgICB8IEFsbCAtPiB0cnVlXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBibGFuZyAtPiBuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUgYmxhbmcgYWN0aW9uXG4gICAgICAgICAgIHwgQ3VzdG9tX2ZpbHRlciBmaWx0ZXIgLT5cbiAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgfm5hbWU6XCJjdXN0b20gZmlsdGVyXCJcbiAgICAgICAgICAgICAgIChmdW4gYWN0aW9uIC0+IGZpbHRlciAoQXBwLkFjdGlvbi5zZXhwX29mX3QgYWN0aW9uKSlcbiAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIGlmIHNob3VsZF9sb2dfYWN0aW9uXG4gICAgICAgICB0aGVuIEFzeW5jX2pzLmxvZ19zX2FzX3N0cmluZyBbJW1lc3NhZ2UgXCJBY3Rpb25cIiAoYWN0aW9uIDogQXBwLkFjdGlvbi50KV1cbiAgICAgaW5cbiAgICAgbGV0IGFwcGx5X2FjdGlvbiBhY3Rpb24gPVxuICAgICAgIG1heWJlX2xvZ19hY3Rpb24gYWN0aW9uO1xuICAgICAgIGlmIEFwcC5hY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiBhY3Rpb25cbiAgICAgICB0aGVuIChcbiAgICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplLWZvci1hY3Rpb25cIjtcbiAgICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCIpXG4gICAgICAgZWxzZSBpZiBzaG91bGRfZGVidWcgKClcbiAgICAgICB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcImFjdGlvbiBhcHBsaWVkIHdpdGhvdXQgc3RhYmlsaXppbmdcIik7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X2FwcGx5X2FjdGlvbiAoKSlcbiAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlXG4gICAgICAgICAgIChJbmNyLlZhci5sYXRlc3RfdmFsdWUgbW9kZWxfdilcbiAgICAgICAgICAgYWN0aW9uXG4gICAgICAgaW5cbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfdiBuZXdfbW9kZWxcbiAgICAgaW5cbiAgICAgbGV0IHJlYyBhcHBseV9hY3Rpb25zICgpID1cbiAgICAgICBtYXRjaCBEZXF1ZS5kZXF1ZXVlX2Zyb250IGFjdGlvbl9xdWV1ZSB3aXRoXG4gICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgfCBTb21lIGFjdGlvbiAtPlxuICAgICAgICAgYXBwbHlfYWN0aW9uIGFjdGlvbjtcbiAgICAgICAgIGFwcGx5X2FjdGlvbnMgKClcbiAgICAgaW5cbiAgICAgbGV0IHBlcmZvcm1fdXBkYXRlICgpID1cbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgICgqIFRoZSBjbG9jayBpcyBzZXQgb25seSBvbmNlIHBlciBjYWxsIHRvIHBlcmZvcm1fdXBkYXRlLCBzbyB0aGF0IGFsbCBhY3Rpb25zIHRoYXRcbiAgICAgICAgICBvY2N1ciBiZWZvcmUgZWFjaCBkaXNwbGF5IHVwZGF0ZSBvY2N1ciBcImF0IHRoZSBzYW1lIHRpbWUuXCIgKilcbiAgICAgICBsZXQgbm93ID1cbiAgICAgICAgIGxldCBkYXRlID0gbmV3JWpzIEpzLmRhdGVfbm93IGluXG4gICAgICAgICBUaW1lX25zLlNwYW4ub2ZfbXMgZGF0ZSMjZ2V0VGltZSB8PiBUaW1lX25zLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAgICBpblxuICAgICAgIEluY3IuQ2xvY2suYWR2YW5jZV9jbG9jayBJbmNyLmNsb2NrIH50b186bm93O1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInRvdGFsXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ1cGRhdGUgdmlzaWJpbGl0eVwiO1xuICAgICAgIGlmIFZpc2liaWxpdHkuaXNfZGlydHkgdmlzaWJpbGl0eSB0aGVuIHVwZGF0ZV92aXNpYmlsaXR5ICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJ1cGRhdGUgdmlzaWJpbGl0eVwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwiYXBwbHkgYWN0aW9uc1wiO1xuICAgICAgIGFwcGx5X2FjdGlvbnMgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIjtcbiAgICAgICBsZXQgaHRtbCA9IGdldF92aWV3ICgpIGluXG4gICAgICAgbGV0IGh0bWwgPSBvdmVycmlkZV9yb290X2VsZW1lbnQgaHRtbCBpblxuICAgICAgIHRpbWVyX3N0YXJ0IFwiZGlmZlwiO1xuICAgICAgIGxldCBwYXRjaCA9IFZkb20uTm9kZS5QYXRjaC5jcmVhdGUgfnByZXZpb3VzOiFwcmV2X2h0bWwgfmN1cnJlbnQ6aHRtbCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJkaWZmXCI7XG4gICAgICAgaWYgbm90IChWZG9tLk5vZGUuUGF0Y2guaXNfZW1wdHkgcGF0Y2gpIHRoZW4gVmlzaWJpbGl0eS5tYXJrX2RpcnR5IHZpc2liaWxpdHk7XG4gICAgICAgdGltZXJfc3RhcnQgXCJwYXRjaFwiO1xuICAgICAgIGxldCBlbHQgPSBWZG9tLk5vZGUuUGF0Y2guYXBwbHkgcGF0Y2ggIXByZXZfZWx0IGluXG4gICAgICAgdGltZXJfc3RvcCBcInBhdGNoXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgKGdldF9vbl9kaXNwbGF5ICgpKSBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGU7XG4gICAgICAgdGltZXJfc3RvcCBcIm9uX2Rpc3BsYXlcIjtcbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiAoSW5jci5WYXIudmFsdWUgbW9kZWxfdik7XG4gICAgICAgbGV0IG9sZF90YWdfbmFtZSA9IGdldF90YWdfbmFtZSAhcHJldl9odG1sIGluXG4gICAgICAgbGV0IG5ld190YWdfbmFtZSA9IGdldF90YWdfbmFtZSBodG1sIGluXG4gICAgICAgbGV0IHRhZ3NfdGhlX3NhbWUgPSBPcHRpb24uZXF1YWwgU3RyaW5nLmVxdWFsIG9sZF90YWdfbmFtZSBuZXdfdGFnX25hbWUgaW5cbiAgICAgICBwcmV2X2h0bWwgOj0gaHRtbDtcbiAgICAgICBwcmV2X2VsdCA6PSBlbHQ7XG4gICAgICAgdGltZXJfc3RvcCBcInRvdGFsXCI7XG4gICAgICAgaWYgc2hvdWxkX2RlYnVnICgpIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIFwiLS0tLS0tLVwiKTtcbiAgICAgICAoKiBDaGFuZ2luZyB0aGUgdGFnIG5hbWUgY2F1c2VzIGZvY3VzIHRvIGJlIGxvc3QuICBSZWZvY3VzIGluIHRoYXQgY2FzZS4gKilcbiAgICAgICBpZiBub3QgdGFnc190aGVfc2FtZSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpXG4gICAgIGluXG4gICAgICgqIFdlIHVzZSBbcmVxdWVzdF9hbmltYXRpb25fZnJhbWVdIHNvIHRoYXQgYnJvd3NlciB0ZWxscyB1cyB3aGVyZSBpdCdzIHRpbWUgdG9cbiAgICAgICAgcmVmcmVzaCB0aGUgVUkuIEFsbCB0aGUgYWN0aW9ucyB3aWxsIGJlIHByb2Nlc3NlZCBhbmQgdGhlIGNoYW5nZXMgcHJvcGFnYXRlZFxuICAgICAgICB0byB0aGUgRE9NIGluIG9uZSBmcmFtZS4gKilcbiAgICAgbGV0IHJlYyBjYWxsYmFjayAoKSA9XG4gICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgICAgdGhlbiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgcGVyZm9ybV91cGRhdGUgKCk7XG4gICAgICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjaylcbiAgICAgaW5cbiAgICAgKCogV2Ugd2FudCB0aGUgcm9vdCBlbGVtZW50IHRvIHN0YXJ0IG91dCBmb2N1c2VkLCBzbyBwZXJmb3JtIGFuIGluaXRpYWxcbiAgICAgICAgdXBkYXRlL3JlbmRlciwgdGhlbiBpbW1lZGlhdGVseSBmb2N1cyB0aGUgcm9vdCAodW5sZXNzIGEgbm9uLWJvZHkgZWxlbWVudCBhbHJlYWR5XG4gICAgICAgIGhhcyBmb2N1cykuICBUaGlzIGZvY3VzaW5nIGNhbid0IGhhcHBlbiBpbnNpZGUgb2YgdGhlIGBjYWxsYmFja2AgYmVjYXVzZSB0aGVuIGl0XG4gICAgICAgIHdvdWxkIHJlZm9jdXMgcm9vdCBldmVyeSBmcmFtZS4gICopXG4gICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAobWF0Y2ggSnMuT3B0LnRvX29wdGlvbiBEb21faHRtbC5kb2N1bWVudCMjLmFjdGl2ZUVsZW1lbnQgd2l0aFxuICAgICAgfCBTb21lIGVsIC0+IGlmIEpzLk9wdC50ZXN0IChEb21faHRtbC5Db2VyY2VUby5ib2R5IGVsKSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpXG4gICAgICB8IE5vbmUgLT4gcmVmb2N1c19yb290X2VsZW1lbnQgKCkpO1xuICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjaztcbiAgICAgRGVmZXJyZWQubmV2ZXIgKCkpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc3RhcnRfYm9uc2FpID0gc3RhcnRfYm9uc2FpXG5lbmRcblxubGV0IHN0YXJ0XG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlMgd2l0aCB0eXBlIE1vZGVsLnQgPSBtb2RlbCBhbmQgdHlwZSBBY3Rpb24udCA9IGFjdGlvbilcbiAgPVxuICBzdGFydF9ib25zYWlcbiAgICB+ZGVidWdcbiAgICB+c3RvcFxuICAgIH5uYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICB+aW5pdGlhbF9tb2RlbFxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBpbmNsdWRlIEFwcFxuXG4gICAgICBsZXQgYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gXyA9IHRydWVcblxuICAgICAgbGV0IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsIH5pbmplY3QgPVxuICAgICAgICBsZXQgb3BlbiBJbmNyLkxldF9zeW50YXggaW5cbiAgICAgICAgbGV0JW1hcCBjb21wb25lbnQgPSBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0IGluXG4gICAgICAgIGxldCB2aWV3ID0gQ29tcG9uZW50LnZpZXcgY29tcG9uZW50IGluXG4gICAgICAgIGxldCBhcHBseV9hY3Rpb24gc3RhdGUgfnNjaGVkdWxlX2V2ZW50IF9tb2RlbCBhY3Rpb24gPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQuYXBwbHlfYWN0aW9uIGNvbXBvbmVudCBhY3Rpb24gc3RhdGUgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgX21vZGVsIH5zY2hlZHVsZV9ldmVudCA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC51cGRhdGVfdmlzaWJpbGl0eSBjb21wb25lbnQgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgb25fZGlzcGxheSBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQub25fZGlzcGxheSBjb21wb25lbnQgc3RhdGUgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICB7IEFwcF9pbnRmLlByaXZhdGUudmlldzsgYXBwbHlfYWN0aW9uOyB1cGRhdGVfdmlzaWJpbGl0eTsgb25fZGlzcGxheSB9XG4gICAgICA7O1xuICAgIGVuZClcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gVmlydHVhbF9kb20uVmRvbVxuaW5jbHVkZSBWZG9tX2lucHV0X3dpZGdldHNfaW50ZlxuXG5tb2R1bGUgTWVyZ2VfYmVoYXZpb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE1lcmdlXG4gICAgfCBMZWdhY3lfZG9udF9tZXJnZVxuZW5kXG5cbm1vZHVsZSBEZWNpbWFsID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSB0KVxuICAgIHRoZW4gZmFpbHdpdGhmIFwiQ2Fubm90IHJlcHJlc2VudCBub24tZmluaXRlIGZsb2F0IGFzIGRlY2ltYWw6ICVmXCIgdCAoKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHQgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgIGludmFyaWFudCB0O1xuICAgIHNwcmludGYgXCIlLjEyZ1wiIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVkID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBJbml0aWFsXG4gICAgKCogVGhpcyBpcyB1c2VkIHRvIGF2b2lkIG1hcmtpbmcgYXMgaW52YWxpZCBhIGZpZWxkIHRoYXQgaGFzbid0IGV2ZXIgYmVlblxuICAgICAgIHRvdWNoZWQgYnkgdGhlIHVzZXIsIHRvIGltcHJvdmUgVVguICopXG4gICAgfCBWYWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgIHwgSW52YWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nXG4gICAgICAgIDsgbGFzdF92YWxpZCA6ICdhIG9wdGlvblxuICAgICAgICA7IGVycm9yIDogc3RyaW5nXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICB0eXBlICdhIHVwZGF0ZSA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgbGlmdCAodHlwZSBhKSAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBhIHRcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgSW5pdGlhbCAtPiBcIlwiXG4gICAgICAgIHwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgPSBfIH0gLT4gaW5wdXRcbiAgICAgICAgfCBWYWxpZCB7IGlucHV0OyB2YWx1ZSB9IC0+XG4gICAgICAgICAgKG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgICAgfCBTb21lIGlucHV0IC0+IGlucHV0XG4gICAgICAgICAgIHwgTm9uZSAtPiBNLnRvX3N0cmluZyB2YWx1ZSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBWYWxpZCB7IGlucHV0ID0gU29tZSBzOyB2YWx1ZSA9IE0ub2Zfc3RyaW5nIHMgfSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IEludmFsaWQgeyBpbnB1dCA9IHM7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciA9IEV4bi50b19zdHJpbmcgZXhuIH1cbiAgICAgIDs7XG4gICAgZW5kIDogU3RyaW5nYWJsZS5TXG4gICAgICB3aXRoIHR5cGUgdCA9IGEgdClcbiAgOztcblxuICBsZXQgaW5pdGlhbF9lbXB0eSA9IEluaXRpYWxcbiAgbGV0IHJldHVybiB2YWx1ZSA9IFZhbGlkIHsgaW5wdXQgPSBOb25lOyB2YWx1ZSB9XG5cbiAgbGV0IGdldF9jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSB9IC0+IFNvbWUgdmFsdWVcbiAgICB8IEludmFsaWQgXyB8IEluaXRpYWwgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgfSAtPiBTb21lIHZhbHVlXG4gICAgfCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfSAtPiBsYXN0X3ZhbGlkXG4gICAgfCBJbml0aWFsIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb25cbiAgICB8IEluaXRpYWwgfCBWYWxpZCBfIC0+IE5vbmVcbiAgICB8IEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+IFNvbWUgZXJyb3JcbiAgOztcblxuICBsZXQgaXNfaW52YWxpZCA9IGZ1bmN0aW9uXG4gICAgfCBJbnZhbGlkIF8gLT4gdHJ1ZVxuICAgIHwgVmFsaWQgXyB8IEluaXRpYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfaW5pdGlhbF9lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBJbml0aWFsIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgdXBkYXRlIG9sZCBuZXdfID1cbiAgICBtYXRjaCBvbGQsIG5ld18gd2l0aFxuICAgIHwgSW5pdGlhbCwgXyAtPiBuZXdfXG4gICAgfCBfLCBWYWxpZCBfIC0+IG5ld19cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSA9IG9sZCB9LCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+XG4gICAgICBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBTb21lIG9sZDsgZXJyb3IgfVxuICAgIHwgKCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfVxuICAgICAgLCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciB9ICkgLT5cbiAgICAgIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZDsgZXJyb3IgfVxuICAgIHwgSW52YWxpZCBfLCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkID0gU29tZSBfOyBlcnJvciA9IF8gfSAtPiBuZXdfXG4gICAgfCBfLCBJbml0aWFsIC0+IG9sZFxuICA7O1xuZW5kXG5cbmxldCBtYXliZV9pbnZhbGlkIHZhbGlkYXRlZCBhdHRycyA9XG4gIGlmIFZhbGlkYXRlZC5pc19pbnZhbGlkIHZhbGlkYXRlZFxuICB0aGVuIEF0dHIuY3JlYXRlIFwiYXJpYS1pbnZhbGlkXCIgXCJ0cnVlXCIgOjogYXR0cnNcbiAgZWxzZSBhdHRyc1xuOztcblxubW9kdWxlIFRpbWVfY29tcGF0ID0gc3RydWN0XG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFRpbWVfbnMuT2ZkYXkudFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkub2Zfc3RyaW5nXG5cbiAgICAoKiBUaGUgYnJvd3NlciBleHBlY3RzIGEgSEg6bW0gZm9ybWF0IHdpdGggb3B0aW9uYWwgdHJhaWxpbmcgXCI6c3NcIiBvciBcIjpzcy5TU1NcIjtcbiAgICAgICBbVGltZV9ucy5PZmRheS50b19zdHJpbmddIHByb3ZpZGVzIHByZWNpc2lvbiBpbiBuYW5vc2Vjb25kcywgd2hpY2ggaXMgdG9vIG11Y2guICopXG4gICAgbGV0IHRvX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkudG9fbWlsbGlzZWNvbmRfc3RyaW5nXG4gIGVuZFxuXG4gIGxldCB6b25lZCB6b25lIDogKG1vZHVsZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBUaW1lX25zLnQpID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVGltZV9ucy50XG5cbiAgICAgICgqIEZvcm1hdCBmcm9tIHRoZSBicm93c2VyOiB5eXl5LU1NLWRkVGhoOm1tICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgcGFydHMgPSBTdHJpbmcuc3BsaXRfb25fY2hhcnMgcyB+b246WyAnVCc7ICc6JyBdIGluXG4gICAgICAgIGxldCBkYXRlID0gTGlzdC5udGhfZXhuIHBhcnRzIDAgfD4gRGF0ZS5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IGhyID0gTGlzdC5udGhfZXhuIHBhcnRzIDEgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgbWluID0gTGlzdC5udGhfZXhuIHBhcnRzIDIgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBUaW1lX25zLk9mZGF5LmNyZWF0ZSB+aHIgfm1pbiAoKSBpblxuICAgICAgICBUaW1lX25zLm9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IHMgPSBUaW1lX25zLnRvX3N0cmluZ19pc284NjAxX2Jhc2ljIH56b25lIHQgaW5cbiAgICAgICAgKCogVGhlIGJyb3dzZXIgZXhwZWN0IGEgeXl5eS1NTS1kZFRoaDptbSBmb3JtYXQgYW5kIGl0IGFsbG93c1xuICAgICAgICAgICB0cmFpbGluZyBcIjpzc1wiIG9yIFwiOnNzLlNTU1wiLlxuXG4gICAgICAgICAgIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIGZvcm1hdDogMjAxOS0wMS0zMFQwMTowMDowMC4wMDAwMDAwMDArMDE6MDBcblxuICAgICAgICAgICBkZXNpcmVkIGZvcm1hdCBhZnRlciBjdXR0aW5nOiAgIDIwMTktMDEtMzBUMDE6MDA6MDBcbiAgICAgICAgKilcbiAgICAgICAgU3RyaW5nLmxzcGxpdDJfZXhuIH5vbjonLicgcyB8PiBUdXBsZTIuZ2V0MVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubGV0IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZCBhdHRycyA9IGlmIGRpc2FibGVkIHRoZW4gQXR0ci5kaXNhYmxlZCA6OiBhdHRycyBlbHNlIGF0dHJzXG5sZXQgYWRkX2F0dHJzIGF0dHJzJyBhdHRycyA9IGF0dHJzIEAgYXR0cnMnIHw+IEF0dHJzLm1lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc1xuXG5sZXQgbWVyZ2UgPSBmdW5jdGlvblxuICB8IE1lcmdlX2JlaGF2aW9yLk1lcmdlIC0+IEF0dHIubWFueVxuICB8IExlZ2FjeV9kb250X21lcmdlIC0+IEF0dHIubWFueV93aXRob3V0X21lcmdlXG47O1xuXG5sZXQgc3RydWN0dXJhbF9saXN0XG4gICAgICA/KG9yaWVudGF0aW9uID0gYFZlcnRpY2FsKVxuICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgYXR0cnNcbiAgICAgIGNoaWxkcmVuXG4gID1cbiAgbGV0IGxheW91dF9zdHlsZSA9XG4gICAgbWF0Y2ggb3JpZW50YXRpb24gd2l0aFxuICAgIHwgYFZlcnRpY2FsIC0+IENzc19nZW4uKGRpc3BsYXkgYEJsb2NrKVxuICAgIHwgYEhvcml6b250YWwgLT4gQ3NzX2dlbi4oZGlzcGxheSBgSW5saW5lX2Jsb2NrKVxuICBpblxuICBOb2RlLnVsXG4gICAgfmF0dHJzOlxuICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgKFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImxpc3Qtc3R5bGVcIiB+dmFsdWU6XCJub25lXCIgQD4gbWFyZ2luX2xlZnQgKGBQeCAwKSlcbiAgICAgICAgICAgXVxuICAgICAgICAgICB8PiBhZGRfYXR0cnMgYXR0cnMpXG4gICAgICBdXG4gICAgKExpc3QubWFwIGNoaWxkcmVuIH5mOihmdW4gY2hpbGQgLT5cbiAgICAgICBOb2RlLmxpIH5hdHRyczpbIEF0dHIuc3R5bGUgbGF5b3V0X3N0eWxlIF0gWyBjaGlsZCBdKSlcbjs7XG5cbm1vZHVsZSBWYWx1ZV9ub3JtYWxpemluZ19ob29rID0gc3RydWN0XG4gIG1vZHVsZSBVbnNhZmUgPSBKc19vZl9vY2FtbC5Kcy5VbnNhZmVcbiAgb3BlbiBKc19vZl9vY2FtbFxuICBvcGVuIEpzX29mX29jYW1sLkRvbV9odG1sXG5cbiAgbGV0IGlzX2FjdGl2ZSBlbGVtZW50ID1cbiAgICBsZXQgZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQgPSBVbnNhZmUuZ2V0IGRvY3VtZW50IChKcy5zdHJpbmcgXCJhY3RpdmVFbGVtZW50XCIpIGluXG4gICAgcGh5c19lcXVhbCBlbGVtZW50IGRvY3VtZW50X2FjdGl2ZV9lbGVtZW50XG4gIDs7XG5cbiAgbGV0IHZhbHVlX3Byb3BlcnR5ID0gSnMuc3RyaW5nIFwidmFsdWVcIlxuICBsZXQgZ2V0X3ZhbHVlIGVsZW1lbnQgOiAnYSBKcy50ID0gVW5zYWZlLmdldCBlbGVtZW50IHZhbHVlX3Byb3BlcnR5XG4gIGxldCBzZXRfdmFsdWUgZWxlbWVudCB2YWx1ZSA9IFVuc2FmZS5zZXQgZWxlbWVudCB2YWx1ZV9wcm9wZXJ0eSB2YWx1ZVxuXG4gIGxldCBpbnN0YWxsX2V2ZW50X2hhbmRsZXIgZWxlbWVudCB+ZiA9XG4gICAgKCogVGhpcyBldmVudCBoYW5kbGVyIG5vcm1hbGl6ZXMgdGhlIHZhbHVlIG9uIHRoZSBpbnB1dCBlbGVtZW50IG9uIHRoZSBbY2hhbmdlXSBldmVudC5cbiAgICAgICBGb3IgYSB0ZXh0IGVudHJ5LCB0aGlzIG1lYW5zIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlciwgYW5kIHdoZW4gdGhlIHVzZXIgYmx1cnNcbiAgICAgICB0aGUgZWxlbWVudC4gV2h5IGRvbid0IHdlIHNpbXBseSBbdG9fc3RyaW5nXSB0aGUgdmFsdWUgaW4gdGhlIG1vZGVsPyBCZWNhdXNlIGZvclxuICAgICAgIHNvbWUgaW5wdXQgZWxlbWVudHMsIHlvdSBjYW4gaGF2ZSBhIGNoYW5nZSBldmVudCB0aGF0IGZpcmVzIGFmdGVyIHRoZSB2YWx1ZSBjaGFuZ2VzXG4gICAgICAgYnV0IGJlZm9yZSBbSW5jcl9kb21dIGNhbiB1cGRhdGUgdGhlIG1vZGVsLiBGb3IgZXhhbXBsZSwgdGhpcyBoYXBwZW5zIHdoZW4geW91XG4gICAgICAgcHJlc3MgdGhlIHVwIGFycm93IG9uIGEgbnVtYmVyIGlucHV0LiBUaGlzIGxlYWRzIHRvIGEgYnVnIHdoZXJlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgICAgICBtb2RlbCBzd2FwcyBiYWNrIGFuZCBmb3J0aCB3aXRoIHRoZSB2YWx1ZSBpbiB0aGUgZWxlbWVudC4gKilcbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgXyA9XG4gICAgICBsZXQgdmFsdWUgPSBKcy50b19zdHJpbmcgKGdldF92YWx1ZSBlbGVtZW50KSBpblxuICAgICAgT3B0aW9uLml0ZXIgKGYgdmFsdWUpIH5mOihmdW4gbm9ybWFsaXplZCAtPlxuICAgICAgICBzZXRfdmFsdWUgZWxlbWVudCAoSnMuc3RyaW5nIG5vcm1hbGl6ZWQpKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgPSBEb20uaGFuZGxlciBjaGFuZ2VfaGFuZGxlciBpblxuICAgIGFkZEV2ZW50TGlzdGVuZXIgZWxlbWVudCBFdmVudC5jaGFuZ2UgY2hhbmdlX2hhbmRsZXIgSnMuX2ZhbHNlXG4gIDs7XG5cbiAgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBldmVudF9pZCA6IGV2ZW50X2xpc3RlbmVyX2lkIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyB2YWx1ZSA6IHN0cmluZ1xuICAgICAgICA7IGYgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgICB9XG5cbiAgICAgIGxldCBzZXhwX29mX3QgeyB2YWx1ZTsgXyB9ID0gU2V4cC5BdG9tIHZhbHVlXG4gICAgICBsZXQgY29tYmluZSBfbGVmdCByaWdodCA9IHJpZ2h0XG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCB7IElucHV0LnZhbHVlOyBmIH0gZWxlbWVudCA9XG4gICAgICBpZiBub3QgKGlzX2FjdGl2ZSBlbGVtZW50KSB0aGVuIHNldF92YWx1ZSBlbGVtZW50IChKcy5zdHJpbmcgdmFsdWUpO1xuICAgICAgbGV0IGV2ZW50X2lkID0gaW5zdGFsbF9ldmVudF9oYW5kbGVyIGVsZW1lbnQgfmYgaW5cbiAgICAgIHsgU3RhdGUuZXZlbnRfaWQgfVxuICAgIDs7XG5cbiAgICBsZXQgb25fbW91bnQgX2lucHV0IF9zdGF0ZSBfZWxlbWVudCA9ICgpXG5cbiAgICBsZXQgZGVzdHJveSBfaW5wdXQgeyBTdGF0ZS5ldmVudF9pZCB9IF9lbGVtZW50ID0gcmVtb3ZlRXZlbnRMaXN0ZW5lciBldmVudF9pZFxuICAgIFtAQG9jYW1sLndhcm5pbmdcbiAgICAgICBcIi02OFwiXVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dCBzdGF0ZSBlbGVtZW50ID1cbiAgICAgIGRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgICBsZXQgeyBTdGF0ZS5ldmVudF9pZCB9ID0gaW5pdCBuZXdfaW5wdXQgZWxlbWVudCBpblxuICAgICAgc3RhdGUuU3RhdGUuZXZlbnRfaWQgPC0gZXZlbnRfaWRcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIEF0dHIuSG9va3MuTWFrZSAoTSlcblxuICAoKiBbY3JlYXRlIHZhbHVlIH5mXSB3aWxsIHNldCB0aGUgXCJ2YWx1ZVwiIHByb3BlcnR5IHRvIFt2YWx1ZV0gaWYgdGhlIGVsZW1lbnQgaXMgbm90XG4gICAgIGZvY3VzZWQgYW5kIG9uIGVhY2ggY2hhbmdlLCBydW4gdGhlIGN1cnJlbnQgdmFsdWUgdGhyb3VnaCBbZl0gdG8gcmUtc2V0IGl0LiBBZ2FpbixcbiAgICAgdGhpcyBvbmx5IGhhcHBlbnMgaWYgdGhlIGVsZW1lbnQgaXMgbm90IGZvY3VzZWQuIElmIFtmXSByZXR1cm5zIFtOb25lXSwgbm8gY2hhbmdlXG4gICAgIHRha2VzIHBsYWNlLiAqKVxuICBsZXQgY3JlYXRlIHZhbHVlIH5mID0gQXR0ci5jcmVhdGVfaG9vayBcInZhbHVlOm5vcm1hbGl6ZWRcIiAoY3JlYXRlIHsgdmFsdWU7IGYgfSlcbmVuZFxuXG5tb2R1bGUgRHJvcGRvd24gPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGV4dHJhX29wdGlvbl9hdHRycyA9IEZuLmNvbnN0IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIE5vZGUuc2VsZWN0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci5jbGFzc18gXCJ3aWRnZXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgIDsgQXR0ci5vbl9jaGFuZ2UgKGZ1biBfIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgIG9uX2NoYW5nZSAoSW50Lm9mX3N0cmluZyB2YWx1ZSB8PiBMaXN0Lm50aF9leG4gdmFsdWVzKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoTGlzdC5tYXBpIHZhbHVlcyB+ZjooZnVuIGluZGV4IHZhbHVlIC0+XG4gICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAgKFsgQXR0ci52YWx1ZSAoSW50LnRvX3N0cmluZyBpbmRleClcbiAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIChlcXVhbCB2YWx1ZSBzZWxlY3RlZClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBAIGV4dHJhX29wdGlvbl9hdHRycyB2YWx1ZSlcbiAgICAgICAgICAgWyBOb2RlLnRleHQgKHRvX3N0cmluZyB2YWx1ZSkgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuXG4gIGxldCBvZl92YWx1ZXNfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICAobW9kdWxlIE0gOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCB2YWx1ZXMgfmY6T3B0aW9uLnNvbWUgaW5cbiAgICBsZXQgdG9fc3RyaW5nID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDpwbGFjZWhvbGRlciB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGxldCBleHRyYV9vcHRpb25fYXR0cnMgPVxuICAgICAgT3B0aW9uLm1hcCBleHRyYV9vcHRpb25fYXR0cnMgfmY6KGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgdmFsdWUgLT4gZiB2YWx1ZSlcbiAgICBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIE0uYWxsXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bV9vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCBNLmFsbCB+ZjpPcHRpb24uc29tZSBpblxuICAgIGxldCB0b19zdHJpbmcgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OnBsYWNlaG9sZGVyIH5mOk0udG9fc3RyaW5nIGluXG4gICAgbGV0IGV4dHJhX29wdGlvbl9hdHRycyA9XG4gICAgICBPcHRpb24ubWFwIGV4dHJhX29wdGlvbl9hdHRycyB+ZjooZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSB2YWx1ZSAtPiBmIHZhbHVlKVxuICAgIGluXG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOlslZXF1YWw6IE0udCBvcHRpb25dXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZWxlY3RhYmxlX3N0eWxlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOYXRpdmVcbiAgICB8IEJ1dHRvbl9saWtlIG9mIHsgZXh0cmFfYXR0cnMgOiBjaGVja2VkOmJvb2wgLT4gQXR0ci50IGxpc3QgfVxuXG4gIGxldCBiYXJlYm9uZXNfYnV0dG9uX2xpa2UgPVxuICAgIEJ1dHRvbl9saWtlXG4gICAgICB7IGV4dHJhX2F0dHJzID1cbiAgICAgICAgICAoZnVuIH5jaGVja2VkIC0+XG4gICAgICAgICAgICAgaWYgY2hlY2tlZFxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgIENzc19nZW4uKFxuICAgICAgICAgICAgICAgICAgICAgYm9yZGVyIH53aWR0aDooYFB4IDEpIH5jb2xvcjooYEhleCBcIiNEMEQwRDBcIikgfnN0eWxlOmBTb2xpZCAoKVxuICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiM0MDQwNDBcIilcbiAgICAgICAgICAgICAgICAgICAgIEA+IGNvbG9yIChgSGV4IFwiI0Y3RjdGN1wiKSlcbiAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLihcbiAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjRUZFRkVGXCIpKVxuICAgICAgICAgICAgICAgXSlcbiAgICAgIH1cbiAgOztcblxuICBsZXQgaGlkZV9uYXRpdmVfaW5wdXRzID1cbiAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwiYXBwZWFyYW5jZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiB1bmlmb3JtX21hcmdpbiAoYFB4IDApKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2JveCA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfmxhYmVsXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmxhYmVsXG4gICAgICB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIGV4dHJhX2F0dHJzIF1cbiAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJjaGVja2JveFwiXG4gICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSlcbiAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBpc19jaGVja2VkXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAoKVxuICAgICAgOyBOb2RlLnRleHQgbGFiZWxcbiAgICAgIF1cbiAgOztcblxuICBsZXQgc2ltcGxlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+bGFiZWxcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmRpdlxuICAgICAgfmF0dHJzOlsgQXR0ci5jbGFzc18gXCJjaGVja2JveC1jb250YWluZXJcIiBdXG4gICAgICBbIGltcGwgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSB+bWVyZ2VfYmVoYXZpb3IgKCkgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2xpc3QgPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhzdHlsZSA9IFNlbGVjdGFibGVfc3R5bGUuTmF0aXZlKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgP2xheW91dFxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgID1cbiAgICBsZXQgaW5wdXRfYXR0cnMsIGxhYmVsX2F0dHJzID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTmF0aXZlIC0+IFtdLCBmdW4gfmNoZWNrZWQ6XyAtPiBbXVxuICAgICAgfCBCdXR0b25fbGlrZSB7IGV4dHJhX2F0dHJzIH0gLT5cbiAgICAgICAgWyBBdHRyLnN0eWxlIFNlbGVjdGFibGVfc3R5bGUuaGlkZV9uYXRpdmVfaW5wdXRzIF0sIGV4dHJhX2F0dHJzXG4gICAgaW5cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgP29yaWVudGF0aW9uOmxheW91dFxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtY2hlY2tsaXN0XCI7IFwiY2hlY2tib3gtY29udGFpbmVyXCIgXSBdXG4gICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgKExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIGl0ZW0gLT5cbiAgICAgICAgIE5vZGUubGFiZWxcbiAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgICAgICAoZXh0cmFfYXR0cnMgQCBsYWJlbF9hdHRycyB+Y2hlY2tlZDooaXNfY2hlY2tlZCBpdGVtKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSBpdGVtKVxuICAgICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgKGlzX2NoZWNrZWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIEAgaW5wdXRfYXR0cnNcbiAgICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIDsgTm9kZS50ZXh0ICh0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/c3R5bGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/bGF5b3V0XG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRGlzcGxheSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9zdHlsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9sYXlvdXRcbiAgICAgIHZhbHVlc1xuICAgICAgfmlzX2NoZWNrZWRcbiAgICAgIH5vbl90b2dnbGVcbiAgICAgIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9zdHlsZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP3N0eWxlXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgTS5hbGxcbiAgICAgIH5pc19jaGVja2VkXG4gICAgICB+b25fdG9nZ2xlXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGlfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vX2FjdGlvblxuICAgICAgfCBDbGVhcl9hbGxcbiAgICAgIHwgU2VsZWN0X2FsbFxuICBlbmRcblxuICBsZXQgaW1wbFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgPyhyZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IFJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yLk5vX2FjdGlvbilcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IFNldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgPVxuICAgIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gICAgbGV0IHNpemUgPSBPcHRpb24udmFsdWUgc2l6ZSB+ZGVmYXVsdDooTGlzdC5sZW5ndGggdmFsdWVzKSBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICA7IEF0dHIuY3JlYXRlIFwic2l6ZVwiIChJbnQudG9fc3RyaW5nIHNpemUpXG4gICAgICA7IEF0dHIub25fY2hhbmdlIChmdW4gZXZ0IChfIDogc3RyaW5nKSAtPlxuICAgICAgICAgIGxldCB0YXJnZXQgPVxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0LmJpbmQgZXZ0IyMudGFyZ2V0IERvbV9odG1sLkNvZXJjZVRvLnNlbGVjdClcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB0YXJnZXQgLT4gdGFyZ2V0XG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICBcIk11bHRpX3NlbGVjdCBbb25fY2hhbmdlXSBldmVudCBmaXJlZCB3aXRoIGEgbWlzc2luZyB0YXJnZXQgb3IgdGFyZ2V0IFxcXG4gICAgICAgICAgICAgICAgIHRoYXQgd2FzIG5vdCBhIHNlbGVjdCBlbGVtZW50LlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgY29sbGVjdGlvbl90b19saXN0IGNvbGxlY3Rpb24gPVxuICAgICAgICAgICAgTGlzdC5pbml0IGNvbGxlY3Rpb24jIy5sZW5ndGggfmY6KGZ1biBpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5nZXQgKGNvbGxlY3Rpb24jI2l0ZW0gaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9wdGlvbnMgPSBjb2xsZWN0aW9uX3RvX2xpc3QgdGFyZ2V0IyMub3B0aW9ucyBpblxuICAgICAgICAgIGxldCBzZWxlY3RlZF92YWx1ZXMgPVxuICAgICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChMaXN0LnppcF9leG4gdmFsdWVzIG9wdGlvbnMpIH5mOihmdW4gKHZhbHVlLCBvcHRpb24pIC0+XG4gICAgICAgICAgICAgIE9wdGlvbi5zb21lX2lmIChKcy50b19ib29sIG9wdGlvbiMjLnNlbGVjdGVkKSB2YWx1ZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSBzZWxlY3RlZF92YWx1ZXMpKVxuICAgICAgXVxuICAgICAgQCBleHRyYV9hdHRyc1xuICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgaW5cbiAgICBsZXQgb3B0aW9ucyA9XG4gICAgICBMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgICBsZXQgaXNfc2VsZWN0ZWQgPSBTZXQubWVtIHNlbGVjdGVkIHZhbHVlIGluXG4gICAgICAgIE5vZGUub3B0aW9uXG4gICAgICAgICAgKCogW0F0dHIuYm9vbF9wcm9wZXJ0eV0ga2VlcHMgdGhlIHN0YXRlIG9mIHRoZSBvcHRpb24gaW4gc3luYyBieSBzZXR0aW5nIHRoZSBKU1xuICAgICAgICAgICAgIHByb3BlcnR5LiBbQXR0ci5zZWxlY3RlZF0gbW9kaWZpZXMgdGhlIERPTSBhdHRyaWJ1dGUgc28gdGhhdCBzZWxlY3RlZCBvcHRpb25zXG4gICAgICAgICAgICAgY2FuIGJlIHN0eWxlZCB3aXRoIENTUy4gW0F0dHIuc2VsZWN0ZWRdIGFsb25lIGRvZXMgbm90IHVwZGF0ZSB0aGUgc3RhdGVcbiAgICAgICAgICAgICBwcm9wZXJseSBpZiB0aGUgbW9kZWwgY2hhbmdlcywgc28gYm90aCBhcmUgbmVlZGVkLiAqKVxuICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgIChbIFNvbWUgKEF0dHIuYm9vbF9wcm9wZXJ0eSBcInNlbGVjdGVkXCIgaXNfc2VsZWN0ZWQpXG4gICAgICAgICAgICAgOyBTb21lXG4gICAgICAgICAgICAgICAgIChBdHRyLm9uX2NsaWNrIChmdW4gZXZ0IC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB3YXNfcmVwZWF0ZWRfY2xpY2sgPVxuICAgICAgICAgICAgICAgICAgICAgIChub3QgKEpzLnRvX2Jvb2wgZXZ0IyMuY3RybEtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgJiYgU2V0LmVxdWFsIHNlbGVjdGVkIChTZXQuc2luZ2xldG9uIChtb2R1bGUgTSkgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHdhc19yZXBlYXRlZF9jbGljaywgcmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGZhbHNlLCBfIHwgdHJ1ZSwgTm9fYWN0aW9uIC0+IEVmZmVjdC5JZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBDbGVhcl9hbGwgLT4gb25fY2hhbmdlIChTZXQuZW1wdHkgKG1vZHVsZSBNKSlcbiAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBTZWxlY3RfYWxsIC0+IG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSB2YWx1ZXMpKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXJfb3B0KVxuICAgICAgICAgIFsgTm9kZS50ZXh0IChNLnRvX3N0cmluZyB2YWx1ZSkgXSlcbiAgICBpblxuICAgIE5vZGUuc2VsZWN0IH5hdHRyczpbIChtZXJnZSBtZXJnZV9iZWhhdmlvcikgYXR0cnMgXSBvcHRpb25zXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3NpemVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLkxlZ2FjeV9kb250X21lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB2YWx1ZXNcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bV9zZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3NpemVcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIE0uYWxsXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICBtb2R1bGUgQ2FsbF9vbl9pbnB1dF93aGVuID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgVGV4dF9jaGFuZ2VkXG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3RcblxuICAgIGxldCBsaXN0ZW5lciA9IGZ1bmN0aW9uXG4gICAgICB8IFRleHRfY2hhbmdlZCAtPiBBdHRyLm9uX2lucHV0XG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3QgLT4gQXR0ci5vbl9jaGFuZ2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbm9ybWFsaXplIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUykgcyA9XG4gICAgbWF0Y2ggTS50b19zdHJpbmcgKE0ub2Zfc3RyaW5nIHMpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBfIC0+IFNvbWUgXCJcIlxuICAgIHwgdiAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgbWF5YmVfb25fcmV0dXJuIG9uX3JldHVybiBhdHRycyA9XG4gICAgbWF0Y2ggb25fcmV0dXJuIHdpdGhcbiAgICB8IE5vbmUgLT4gYXR0cnNcbiAgICB8IFNvbWUgb25fcmV0dXJuIC0+XG4gICAgICBBdHRyLm9uX2tleWRvd24gKGZ1biBldiAtPlxuICAgICAgICBpZiBldiMjLmtleUNvZGUgPSAxMyB0aGVuIG9uX3JldHVybiAoKSBlbHNlIEVmZmVjdC5JZ25vcmUpXG4gICAgICA6OiBhdHRyc1xuICA7O1xuXG4gIGxldCBpbnB1dF9ub2RlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KHBsYWNlaG9sZGVyID0gXCJcIilcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICBhdHRyc1xuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKGF0dHJzXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzXG4gICAgICAgICAgICAgICAgICBbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXI7IEF0dHIuY3JlYXRlIFwic3BlbGxjaGVja1wiIFwiZmFsc2VcIiBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCByYXdcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP29uX3JldHVyblxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgWyBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgdmFsdWU7IEF0dHIub25faW5wdXQgKGZ1biBfZXYgLT4gb25faW5wdXQpIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KHNob3VsZF9ub3JtYWxpemUgPSB0cnVlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH50eXBlX2F0dHJzXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IHZhbHVlID1cbiAgICAgIGxldCB2YWx1ZSA9IE9wdGlvbi52YWx1ZV9tYXAgfmY6TS50b19zdHJpbmcgdmFsdWUgfmRlZmF1bHQ6XCJcIiBpblxuICAgICAgaWYgc2hvdWxkX25vcm1hbGl6ZVxuICAgICAgdGhlbiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+Zjoobm9ybWFsaXplIChtb2R1bGUgTSkpXG4gICAgICBlbHNlIFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOihjb25zdCBOb25lKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBvbl9pbnB1dCBOb25lXG4gICAgICAgIHwgcyAtPiBvbl9pbnB1dCAoT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTS5vZl9zdHJpbmcgcykpKVxuICAgIDsgdmFsdWVcbiAgICBdXG4gICAgfD4gYWRkX2F0dHJzIHR5cGVfYXR0cnNcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdhYmxlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJ0ZXh0XCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/b25fcmV0dXJuXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBsZXQgKG1vZHVsZSBWKSA9IFZhbGlkYXRlZC5saWZ0IChtb2R1bGUgTSkgaW5cbiAgICBsZXQgdmFsdWVfYXR0ciA9XG4gICAgICBtYXRjaCAodmFsdWUgOiBWLnQpIHdpdGhcbiAgICAgIHwgSW5pdGlhbCAtPiBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgXCJcIlxuICAgICAgfCBfIC0+IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIChWLnRvX3N0cmluZyB2YWx1ZSkgfmY6KG5vcm1hbGl6ZSAobW9kdWxlIFYpKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHMgLT5cbiAgICAgICAgb25faW5wdXQgKFYub2Zfc3RyaW5nIHMpKVxuICAgIDsgdmFsdWVfYXR0clxuICAgIDsgQXR0ci50eXBlXyBcInRleHRcIlxuICAgIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gbWF5YmVfaW52YWxpZCB2YWx1ZVxuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHRleHRcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgb2Zfc3RyaW5nYWJsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBTdHJpbmcpXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHBhc3N3b3JkXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFN0cmluZylcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInBhc3N3b3JkXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBudW1iZXJcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcIm51bWJlclwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgcmFuZ2VcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInJhbmdlXCI7IEF0dHIuY3JlYXRlX2Zsb2F0IFwic3RlcFwiIHN0ZXAgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0aW1lXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFRpbWVfY29tcGF0Lk9mZGF5KVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInRpbWVcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IGRhdGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgRGF0ZSlcbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJkYXRlXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBkYXRldGltZV9sb2NhbFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID91dGNfb2Zmc2V0XG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgaG91cnMgPVxuICAgICAgKCogSW4gdGVzdHMsIHdlIHVzZSBVVEMgYXMgdGhlIGxvY2FsIHRpbWV6b25lIChpLmUuIG9mZnNldCAwKS4gVGhpcyBwcmV2ZW50cyBjaGFuZ2VzXG4gICAgICAgICBiZXR3ZWVuIHRlc3Qgb3V0cHV0IGFyb3VuZCBkYXlsaWdodCBzYXZpbmdzIHRpbWUsIGFuZCBpZiBbdXRjX29mZnNldF0gaXNuJ3RcbiAgICAgICAgIHN1cHBsaWVkLCB0aGVuIGNhbGxlcnMgc2hvdWxkIGJlIGluZGlmZmVyZW50IHRvIHdoYXQgb2Zmc2V0IGdldHMgdXNlZCBoZXJlLiAqKVxuICAgICAgbWF0Y2ggQ29yZS5hbV9ydW5uaW5nX3Rlc3QgfHwgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiAwXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgIE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgICB1dGNfb2Zmc2V0XG4gICAgICAgICAgKCogZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyB0aGUgdGltZSB6b25lIGRpZmZlcmVuY2UsIGluIG1pbnV0ZXMsIGZyb20gY3VycmVudFxuICAgICAgICAgICAgIGxvY2FsZSB0byBVVEMuIFV0YyBvZmZzZXQgaXMgdGhlIGRpZmZlcmVuY2UgZnJvbSBVVEMgdG8gY3VycmVudCBsb2NhbGUgd2hpY2hcbiAgICAgICAgICAgICBpcyB3aGVyZSB0aGUgbWludXMgY29tZXMgZnJvbS5cblxuICAgICAgICAgICAgIFRoZSBtaW51dGVzIGhhdmUgdG8gYmUgY29udmVydGVkIHRvIGhvdXJzIHNpbmNlIHRoYXQgaXMgdGhlIGZvcm1hdFxuICAgICAgICAgICAgIFRpbWUuWm9uZS5vZl91dGNfb2Zmc2V0IGV4cGVjdHMgZm9yIHRoZSB1dGNfb2Zmc2V0LiAqKVxuICAgICAgICAgIH5kZWZhdWx0OigobmV3JWpzIEpzX29mX29jYW1sLkpzLmRhdGVfbm93KSMjZ2V0VGltZXpvbmVPZmZzZXQgLyAtNjApXG4gICAgICAgICAgfmY6KGZ1biB1dGNfb2Zmc2V0IC0+IFRpbWVfbnMuU3Bhbi50b19ociB1dGNfb2Zmc2V0IHw+IEZsb2F0LnRvX2ludClcbiAgICBpblxuICAgIGxldCAobW9kdWxlIFpvbmVkX3RpbWUpID0gVGltZV9jb21wYXQuem9uZWQgKFRpbWVfZmxvYXQuWm9uZS5vZl91dGNfb2Zmc2V0IH5ob3VycykgaW5cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBab25lZF90aW1lKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwiZGF0ZXRpbWUtbG9jYWxcIiBdXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0ZXh0X2FyZWFcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLnRleHRhcmVhXG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci5wbGFjZWhvbGRlciBwbGFjZWhvbGRlclxuICAgICAgICAgICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICBvbl9pbnB1dCB2YWx1ZSlcbiAgICAgICAgICAgICA7IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOk9wdGlvbi5yZXR1cm5cbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICBbXVxuICA7O1xuXG4gICgqIEFjY29yZGluZyB0b1xuICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQvY29sb3IjVmFsdWUgdGhlXG4gICAgIHZhbHVlIG11c3QgYmUgc2V0IGluIGhleCBmb3JtYXQgYW5kIHdpbGwgYWx3YXlzIGNvbWVzIGJhY2sgaW4gaGV4IGZvcm1hdC4gKilcbiAgbGV0IGNvbG9yX3BpY2tlclxuICAgICAgICA/KGV4dHJhX2F0dHIgPSBBdHRyLmVtcHR5KVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IChgSGV4IHZhbHVlXykgPSB2YWx1ZSBpblxuICAgIFsgQXR0ci4odHlwZV8gXCJjb2xvclwiIEAgdmFsdWVfcHJvcCB2YWx1ZV8gQCBleHRyYV9hdHRyKVxuICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+IG9uX2lucHV0IChgSGV4IHMpKVxuICAgIF1cbiAgICB8PiBpbnB1dF9ub2RlID9kaXNhYmxlZCB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCB3aXRoX3ZhbGlkYXRpb25cbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHRleHRcbiAgICAgICAgfnZhbGlkYXRpb25cbiAgICAgICAgfm9uX2NsaWNrXG4gICAgPVxuICAgIG1hdGNoIHZhbGlkYXRpb24gd2l0aFxuICAgIHwgT2sgcmVzdWx0IC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAgIChbIEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgcmVzdWx0KTsgQXR0ci50eXBlXyBcImJ1dHRvblwiIF1cbiAgICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgICBdXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICAgIHwgRXJyb3IgcmVhc29uIC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAgIChbIEF0dHIuZGlzYWJsZWRcbiAgICAgICAgICAgICAgIDsgQXR0ci50eXBlXyBcImJ1dHRvblwiXG4gICAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwidG9vbHRpcFwiIHJlYXNvblxuICAgICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcInRvb2x0aXAtcG9zaXRpb25cIiBcInRvcFwiXG4gICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgICAgXVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcblxuICBsZXQgc2ltcGxlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHRleHRcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgPVxuICAgIE5vZGUuYnV0dG9uXG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImJ1dHRvblwiOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrICgpKSBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUmFkaW9fYnV0dG9ucyA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhzdHlsZSA6IFNlbGVjdGFibGVfc3R5bGUudCA9IE5hdGl2ZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+b3JpZW50YXRpb25cbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgbGV0IGlucHV0X2F0dHJzLCBsYWJlbF9hdHRycyA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5hdGl2ZSAtPiBbXSwgZnVuIH5jaGVja2VkOl8gLT4gW11cbiAgICAgIHwgQnV0dG9uX2xpa2UgeyBleHRyYV9hdHRycyB9IC0+XG4gICAgICAgIFsgQXR0ci5zdHlsZSBTZWxlY3RhYmxlX3N0eWxlLmhpZGVfbmF0aXZlX2lucHV0cyBdLCBleHRyYV9hdHRyc1xuICAgIGluXG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICAgIH5vcmllbnRhdGlvblxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtcmFkaW8tYnV0dG9uc1wiOyBcInJhZGlvLWJ1dHRvbi1jb250YWluZXJcIiBdIF1cbiAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAoTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gaXRlbSAtPlxuICAgICAgICAgbGV0IGNoZWNrZWQgPSBPcHRpb24udmFsdWVfbWFwIHNlbGVjdGVkIH5kZWZhdWx0OmZhbHNlIH5mOihlcXVhbCBpdGVtKSBpblxuICAgICAgICAgTm9kZS5sYWJlbFxuICAgICAgICAgICB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIChsYWJlbF9hdHRycyB+Y2hlY2tlZCkgXVxuICAgICAgICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5uYW1lIG5hbWVcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5jbGFzc2VzIFsgXCJyYWRpby1idXR0b25cIiBdXG4gICAgICAgICAgICAgICAgICA7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgaXRlbSlcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwiY2hlY2tlZFwiIGNoZWNrZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIEAgaW5wdXRfYXR0cnNcbiAgICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIDsgTm9kZS50ZXh0ICh0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zdHlsZVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBWZXJ0aWNhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB2YWx1ZXNcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzX2hvcml6b250YWxcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c3R5bGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgSG9yaXpvbnRhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB2YWx1ZXNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIEpzID0gSnNfb2Zfb2NhbWwuSnNcblxuICBsZXQgYWNjZXB0X2F0dHJzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQXR0ci5lbXB0eVxuICAgIHwgU29tZSBhY2NlcHRzIC0+XG4gICAgICBBdHRyLmNyZWF0ZVxuICAgICAgICBcImFjY2VwdFwiXG4gICAgICAgIChMaXN0Lm1hcCBhY2NlcHRzIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IGBFeHRlbnNpb24gcyAtPiBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIi5cIiB0aGVuIHMgZWxzZSBcIi5cIiBeIHNcbiAgICAgICAgICAgfCBgTWltZXR5cGUgcyAtPiBzKVxuICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiKVxuICA7O1xuXG4gIGxldCBsaXN0XG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgP2FjY2VwdFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJtdWx0aXBsZVwiIFwiXCJcbiAgICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGZpbGVzID1cbiAgICAgICAgICAgICAgICAgICBMaXN0LmluaXQgZmlsZV9saXN0IyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgZmlsZV9saXN0IyNpdGVtIGlcbiAgICAgICAgICAgICAgICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9leG4gfm1lc3NhZ2U6WyVzdHJpbmcgXCJjb3VsZG4ndCBnZXQgZmlsZSAle2kjSW50fVwiXSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZXMpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKClcbiAgOztcblxuICBsZXQgc2luZ2xlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgP2FjY2VwdFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgIDsgQXR0ci5vbl9maWxlX2lucHV0IChmdW4gX2V2IGZpbGVfbGlzdCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IGZpbGVfbGlzdCMjaXRlbSAwIHw+IEpzLk9wdC50b19vcHRpb24gaW5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoKVxuICA7O1xuZW5kXG4iLCJcbnR5cGUgdCA9IGludFxubGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxubGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG5sZXQgdG9faW50IHggPSB4XG5sZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5cbmxldCBpbnRlcnNlY3QgeCB5ID0geCBsYW5kIHkgPD4gMFxubGV0ICgrKykgeCB5ID0geCBsb3IgeVxuXG5sZXQgZHVtbXkgPSAtMVxubGV0IGluZXhpc3RhbnQgPSAxXG5sZXQgbGV0dGVyID0gMlxubGV0IG5vdF9sZXR0ZXIgPSA0XG5sZXQgbmV3bGluZSA9IDhcbmxldCBsYXN0bmV3bGluZSA9IDE2XG5sZXQgc2VhcmNoX2JvdW5kYXJ5ID0gMzJcblxubGV0IGZyb21fY2hhciA9IGZ1bmN0aW9uXG4gICgqIFNob3VsZCBtYXRjaCBbY3dvcmRdIGRlZmluaXRpb24gKilcbiAgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScgfCAnXycgfCAnXFwxNzAnIHwgJ1xcMTgxJyB8ICdcXDE4NidcbiAgfCAnXFwxOTInLi4nXFwyMTQnIHwgJ1xcMjE2Jy4uJ1xcMjQ2JyB8ICdcXDI0OCcuLidcXDI1NScgLT5cbiAgICBsZXR0ZXJcbiAgfCAnXFxuJyAtPlxuICAgIG5vdF9sZXR0ZXIgKysgbmV3bGluZVxuICB8IF8gLT5cbiAgICBub3RfbGV0dGVyXG4iLCIoKiogVmVyeSBzbWFsbCB0b29saW5nIGZvciBmb3JtYXQgcHJpbnRlcnMuICopXG5cbmluY2x1ZGUgRm9ybWF0XG5cbnR5cGUgJ2EgdCA9IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdFxuXG5sZXQgbGlzdCA9IHBwX3ByaW50X2xpc3RcbmxldCBzdHIgPSBwcF9wcmludF9zdHJpbmdcbmxldCBzZXhwIGZtdCBzIHBwIHggPSBmcHJpbnRmIGZtdCBcIkBbPDM+KCVzQCAlYSlAXVwiIHMgcHAgeFxubGV0IHBhaXIgcHAxIHBwMiBmbXQgKHYxLHYyKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7IHBwMiBmbXQgdjJcbmxldCB0cmlwbGUgcHAxIHBwMiBwcDMgZm10ICh2MSwgdjIsIHYzKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMiBmbXQgdjI7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMyBmbXQgdjNcbmxldCBpbnQgPSBwcF9wcmludF9pbnRcbmxldCBvcHRpbnQgZm10ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpIC0+IGZwcmludGYgZm10IFwiQCAlZFwiIGlcblxubGV0IHF1b3RlIGZtdCBzID0gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIHNcblxubGV0IHBwX29saXN0IHBwX2VsZW0gZm10ID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mz5bQCAlYUAgXUBdXCJcbiAgICAocHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gZnByaW50ZiBmbXQgXCI7QCBcIilcbiAgICAgICBwcF9lbGVtKVxuXG5sZXQgcHBfc3RyX2xpc3QgPSBwcF9vbGlzdCBxdW90ZVxuXG5sZXQgdG9fdG9fc3RyaW5nIHBwIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgcHAgZm10IHg7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIGMgPSBpbnRcbnR5cGUgdCA9IChjICogYykgbGlzdFxuXG5sZXQgcmVjIHVuaW9uIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IGwnXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgKyAxIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjp1bmlvbiByIGwnXG4gICAgZWxzZSBpZiBjMicgKyAxIDwgYzEgdGhlblxuICAgICAgKGMxJywgYzInKTo6dW5pb24gbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgdW5pb24gciAoKG1pbiBjMSBjMScsIGMyJyk6OnInKVxuICAgIGVsc2VcbiAgICAgIHVuaW9uICgobWluIGMxIGMxJywgYzIpOjpyKSByJ1xuXG5sZXQgcmVjIGludGVyIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gW11cbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIGludGVyIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGludGVyIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIChtYXggYzEgYzEnLCBjMik6OmludGVyIHIgbCdcbiAgICBlbHNlXG4gICAgICAobWF4IGMxIGMxJywgYzInKTo6aW50ZXIgbCByJ1xuXG5sZXQgcmVjIGRpZmYgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6ZGlmZiByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBkaWZmIGwgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcicnID0gaWYgYzInIDwgYzIgdGhlbiAoYzInICsgMSwgYzIpIDo6IHIgZWxzZSByIGluXG4gICAgICBpZiBjMSA8IGMxJyB0aGVuXG4gICAgICAgIChjMSwgYzEnIC0gMSk6OmRpZmYgcicnIHInXG4gICAgICBlbHNlXG4gICAgICAgIGRpZmYgcicnIHInXG5cbmxldCBzaW5nbGUgYyA9IFtjLCBjXVxuXG5sZXQgYWRkIGMgbCA9IHVuaW9uIChzaW5nbGUgYykgbFxuXG5sZXQgc2VxIGMgYycgPSBpZiBjIDw9IGMnIHRoZW4gW2MsIGMnXSBlbHNlIFtjJywgY11cblxubGV0IHJlYyBvZmZzZXQgbyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgICAgICAgICAtPiBbXVxuICB8IChjMSwgYzIpIDo6IHIgLT4gKGMxICsgbywgYzIgKyBvKSA6OiBvZmZzZXQgbyByXG5cbmxldCBlbXB0eSA9IFtdXG5cbmxldCByZWMgbWVtIChjIDogaW50KSBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gICAgW10gICAgICAgICAgICAgIC0+IGZhbHNlXG4gIHwgKGMxLCBjMikgOjogcmVtIC0+IGlmIGMgPD0gYzIgdGhlbiBjID49IGMxIGVsc2UgbWVtIGMgcmVtXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcblxubGV0IHJlYyBoYXNoX3JlYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgIC0+IDBcbiAgfCAoaSwgaik6OnIgLT4gaSArIDEzICogaiArIDI1NyAqIGhhc2hfcmVjIHJcbmxldCBoYXNoIGwgPSAoaGFzaF9yZWMgbCkgbGFuZCAweDNGRkZGRkZGXG5cbigqKioqKVxuXG5sZXQgcHJpbnRfb25lIGNoIChjMSwgYzIpID1cbiAgaWYgYzEgPSBjMiB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZFwiIGMxXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYzEgYzJcblxubGV0IHBwID0gRm10Lmxpc3QgcHJpbnRfb25lXG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoeCwgeSk6OnhzIC0+XG4gICAgZiB4IHk7XG4gICAgaXRlciB4cyAgfmZcblxubGV0IG9uZV9jaGFyID0gZnVuY3Rpb25cbiAgfCBbaSwgal0gd2hlbiBpID0gaiAtPiBTb21lIGlcbiAgfCBfIC0+IE5vbmVcblxuXG5tb2R1bGUgQ1NldE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgKiAoaW50ICogaW50KSBsaXN0XG4gICAgbGV0IGNvbXBhcmUgKGksIHUpIChqLCB2KSA9XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaSBqIGluXG4gICAgICBpZiBjIDw+IDBcbiAgICAgIHRoZW4gY1xuICAgICAgZWxzZSBjb21wYXJlIHUgdlxuICBlbmQpXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBMaXN0LmZvbGRfcmlnaHQgZiB0IGluaXRcblxubGV0IGNzaW5nbGUgYyA9IHNpbmdsZSAoQ2hhci5jb2RlIGMpXG5cbmxldCBjYW55ID0gWzAsIDI1NV1cblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIHByZXBlbmQgcyB4IGwgPVxuICBtYXRjaCBzLCBsIHdpdGhcbiAgfCBbXSwgXyAtPiBsXG4gIHwgX3IsIFtdIC0+IFtdXG4gIHwgKF9jLCBjJykgOjogciwgKFtkLCBfZCddLCBfeCcpIDo6IF9yJyB3aGVuIGMnIDwgZCAtPiBwcmVwZW5kIHIgeCBsXG4gIHwgKGMsIGMnKSA6OiByLCAoW2QsIGQnXSwgeCcpIDo6IHInIC0+XG4gICAgaWYgYyA8PSBkIHRoZW4gYmVnaW5cbiAgICAgIGlmIGMnIDwgZCdcbiAgICAgIHRoZW4gKFtkLCBjJ10sIHggQCB4JykgOjogcHJlcGVuZCByIHggKChbYycgKyAxLCBkJ10sIHgnKSA6OiByJylcbiAgICAgIGVsc2UgKFtkLCBkJ10sIHggQCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgYyA+IGQnXG4gICAgICB0aGVuIChbZCwgZCddLCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICAgIGVsc2UgKFtkLCBjIC0gMV0sIHgnKSA6OiBwcmVwZW5kIHMgeCAoKFtjLCBkJ10sIHgnKSA6OiByJylcbiAgICBlbmRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcGljayA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJSZV9jc2V0LnBpY2tcIlxuICB8ICh4LCBfKTo6XyAtPiB4XG4iLCJcbm1vZHVsZSBQbWFyayA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbiAgbGV0IHIgPSByZWYgMFxuICBsZXQgZ2VuICgpID0gaW5jciByIDsgIXJcblxuICBsZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmRcblxuaW5jbHVkZSBQbWFya1xubW9kdWxlIFNldCA9IFNldC5NYWtlKFBtYXJrKVxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBzZW0gPSBbIGBMb25nZXN0IHwgYFNob3J0ZXN0IHwgYEZpcnN0IF1cblxudHlwZSByZXBfa2luZCA9IFsgYEdyZWVkeSB8IGBOb25fZ3JlZWR5IF1cblxudHlwZSBtYXJrID0gaW50XG50eXBlIGlkeCA9IGludFxuXG50eXBlIGV4cHIgPSB7IGlkIDogaW50OyBkZWYgOiBkZWYgfVxuXG5hbmQgZGVmID1cbiAgICBDc3Qgb2YgQ3NldC50XG4gIHwgQWx0IG9mIGV4cHIgbGlzdFxuICB8IFNlcSBvZiBzZW0gKiBleHByICogZXhwclxuICB8IEVwc1xuICB8IFJlcCBvZiByZXBfa2luZCAqIHNlbSAqIGV4cHJcbiAgfCBNYXJrIG9mIGludFxuICB8IEVyYXNlIG9mIGludCAqIGludFxuICB8IEJlZm9yZSBvZiBDYXRlZ29yeS50XG4gIHwgQWZ0ZXIgb2YgQ2F0ZWdvcnkudFxuICB8IFBtYXJrIG9mIFBtYXJrLnRcblxubGV0IGhhc2hfY29tYmluZSBoIGFjY3UgPSBhY2N1ICogNjU1OTkgKyBoXG5cbm1vZHVsZSBNYXJrcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWFya3MgOiAoaW50ICogaW50KSBsaXN0XG4gICAgOyBwbWFya3MgOiBQbWFyay5TZXQudCB9XG5cbiAgbGV0IGVtcHR5ID0geyBtYXJrcyA9IFtdIDsgcG1hcmtzID0gUG1hcmsuU2V0LmVtcHR5IH1cblxuICBsZXQgcmVjIG1lcmdlX21hcmtzX29mZnNldCBvbGQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIG9sZFxuICAgIHwgKGksIHYpIDo6IHJlbSAtPlxuICAgICAgbGV0IG53JyA9IG1lcmdlX21hcmtzX29mZnNldCAoTGlzdC5yZW1vdmVfYXNzcSBpIG9sZCkgcmVtIGluXG4gICAgICBpZiB2ID0gLTIgdGhlblxuICAgICAgICBudydcbiAgICAgIGVsc2VcbiAgICAgICAgKGksIHYpIDo6IG53J1xuXG4gIGxldCBtZXJnZSBvbGQgbncgPVxuICAgIHsgbWFya3MgPSBtZXJnZV9tYXJrc19vZmZzZXQgb2xkLm1hcmtzIG53Lm1hcmtzXG4gICAgOyBwbWFya3MgPSBQbWFyay5TZXQudW5pb24gb2xkLnBtYXJrcyBudy5wbWFya3MgfVxuXG4gIGxldCByZWMgaGFzaF9tYXJrc19vZmZzZXQgbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdICAgICAgICAgIC0+IGFjY3VcbiAgICB8IChhLCBpKSA6OiByIC0+IGhhc2hfbWFya3Nfb2Zmc2V0IHIgKGhhc2hfY29tYmluZSBhIChoYXNoX2NvbWJpbmUgaSBhY2N1KSlcblxuICBsZXQgaGFzaCBtIGFjY3UgPVxuICAgIGhhc2hfbWFya3Nfb2Zmc2V0IG0ubWFya3MgKGhhc2hfY29tYmluZSAoSGFzaHRibC5oYXNoIG0ucG1hcmtzKSBhY2N1KVxuXG4gIGxldCByZWMgbWFya3Nfc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICAgIHwgKGEsIC0xKSA6OiByZW0gLT5cbiAgICAgIChhLCBpZHgpIDo6IG1hcmtzX3NldF9pZHggaWR4IHJlbVxuICAgIHwgbWFya3MgLT5cbiAgICAgIG1hcmtzXG5cbiAgbGV0IG1hcmtzX3NldF9pZHggbWFya3MgaWR4ID1cbiAgICB7IG1hcmtzIHdpdGggbWFya3MgPSBtYXJrc19zZXRfaWR4IGlkeCBtYXJrcy5tYXJrcyB9XG5cbiAgbGV0IHBwX21hcmtzIGNoIHQgPVxuICAgIG1hdGNoIHQubWFya3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gICAgfCAoYSwgaSkgOjogciAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGEgaTtcbiAgICAgIExpc3QuaXRlciAoZnVuIChhLCBpKSAtPiBGb3JtYXQuZnByaW50ZiBjaCBcIiAlZC0lZFwiIGEgaSkgclxuZW5kXG5cbigqKioqKVxuXG5sZXQgcHBfc2VtIGNoIGsgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGNoXG4gICAgKG1hdGNoIGsgd2l0aFxuICAgICAgIGBTaG9ydGVzdCAtPiBcInNob3J0XCJcbiAgICAgfCBgTG9uZ2VzdCAgLT4gXCJsb25nXCJcbiAgICAgfCBgRmlyc3QgICAgLT4gXCJmaXJzdFwiKVxuXG5cbmxldCBwcF9yZXBfa2luZCBmbXQgPSBmdW5jdGlvblxuICB8IGBHcmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJHcmVlZHlcIlxuICB8IGBOb25fZ3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uX2dyZWVkeVwiXG5cbmxldCByZWMgcHAgY2ggZSA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBtYXRjaCBlLmRlZiB3aXRoXG4gICAgQ3N0IGwgLT5cbiAgICBzZXhwIGNoIFwiY3N0XCIgQ3NldC5wcCBsO1xuICB8IEFsdCBsIC0+XG4gICAgc2V4cCBjaCBcImFsdFwiIChsaXN0IHBwKSBsXG4gIHwgU2VxIChrLCBlLCBlJykgLT5cbiAgICBzZXhwIGNoIFwic2VxXCIgKHRyaXBsZSBwcF9zZW0gcHAgcHApIChrLCBlLCBlJylcbiAgfCBFcHMgLT5cbiAgICBzdHIgY2ggXCJlcHNcIlxuICB8IFJlcCAoX3JrLCBrLCBlKSAtPlxuICAgIHNleHAgY2ggXCJyZXBcIiAocGFpciBwcF9zZW0gcHApIChrLCBlKVxuICB8IE1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJtYXJrXCIgaW50IGlcbiAgfCBQbWFyayBpIC0+XG4gICAgc2V4cCBjaCBcInBtYXJrXCIgaW50IChpIDo+IGludClcbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBzZXhwIGNoIFwiZXJhc2VcIiAocGFpciBpbnQgaW50KSAoYiwgZSlcbiAgfCBCZWZvcmUgYyAtPlxuICAgIHNleHAgY2ggXCJiZWZvcmVcIiBDYXRlZ29yeS5wcCBjXG4gIHwgQWZ0ZXIgYyAtPlxuICAgIHNleHAgY2ggXCJhZnRlclwiIENhdGVnb3J5LnBwIGNcblxuXG4oKioqKilcblxubGV0IHJlYyBmaXJzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIE5vbmVcbiAgfCB4IDo6IHIgLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgTm9uZSAgICAgICAgICAtPiBmaXJzdCBmIHJcbiAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzXG5cbigqKioqKVxuXG50eXBlIGlkcyA9IGludCByZWZcbmxldCBjcmVhdGVfaWRzICgpID0gcmVmIDBcblxubGV0IGVwc19leHByID0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5cbmxldCBta19leHByIGlkcyBkZWYgPVxuICBpbmNyIGlkcztcbiAgeyBpZCA9ICFpZHM7IGRlZiA9IGRlZiB9XG5cbmxldCBlbXB0eSBpZHMgPSBta19leHByIGlkcyAoQWx0IFtdKVxuXG5sZXQgY3N0IGlkcyBzID1cbiAgaWYgQ3NldC5pc19lbXB0eSBzXG4gIHRoZW4gZW1wdHkgaWRzXG4gIGVsc2UgbWtfZXhwciBpZHMgKENzdCBzKVxuXG5sZXQgYWx0IGlkcyA9IGZ1bmN0aW9uXG4gIHwgW10gIC0+IGVtcHR5IGlkc1xuICB8IFtjXSAtPiBjXG4gIHwgbCAgIC0+IG1rX2V4cHIgaWRzIChBbHQgbClcblxubGV0IHNlcSBpZHMga2luZCB4IHkgPVxuICBtYXRjaCB4LmRlZiwgeS5kZWYgd2l0aFxuICAgIEFsdCBbXSwgXyAgICAgICAgICAgICAgICAgLT4geFxuICB8IF8sIEFsdCBbXSAgICAgICAgICAgICAgICAgLT4geVxuICB8IEVwcywgXyAgICAgICAgICAgICAgICAgICAgLT4geVxuICB8IF8sIEVwcyB3aGVuIGtpbmQgPSBgRmlyc3QgLT4geFxuICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgLT4gbWtfZXhwciBpZHMgKFNlcSAoa2luZCwgeCwgeSkpXG5cbmxldCBpc19lcHMgZXhwciA9XG4gIG1hdGNoIGV4cHIuZGVmIHdpdGhcbiAgfCBFcHMgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IGVwcyBpZHMgPSBta19leHByIGlkcyBFcHNcblxubGV0IHJlcCBpZHMga2luZCBzZW0geCA9IG1rX2V4cHIgaWRzIChSZXAgKGtpbmQsIHNlbSwgeCkpXG5cbmxldCBtYXJrIGlkcyBtID0gbWtfZXhwciBpZHMgKE1hcmsgbSlcblxubGV0IHBtYXJrIGlkcyBpID0gbWtfZXhwciBpZHMgKFBtYXJrIGkpXG5cbmxldCBlcmFzZSBpZHMgbSBtJyA9IG1rX2V4cHIgaWRzIChFcmFzZSAobSwgbScpKVxuXG5sZXQgYmVmb3JlIGlkcyBjID0gbWtfZXhwciBpZHMgKEJlZm9yZSBjKVxuXG5sZXQgYWZ0ZXIgaWRzIGMgPSBta19leHByIGlkcyAoQWZ0ZXIgYylcblxuKCoqKiopXG5cbmxldCByZWMgcmVuYW1lIGlkcyB4ID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBfIHwgRXBzIHwgTWFyayBfIHwgUG1hcmsgXyB8IEVyYXNlIF8gfCBCZWZvcmUgXyB8IEFmdGVyIF8gLT5cbiAgICBta19leHByIGlkcyB4LmRlZlxuICB8IEFsdCBsIC0+XG4gICAgbWtfZXhwciBpZHMgKEFsdCAoTGlzdC5tYXAgKHJlbmFtZSBpZHMpIGwpKVxuICB8IFNlcSAoaywgeSwgeikgLT5cbiAgICBta19leHByIGlkcyAoU2VxIChrLCByZW5hbWUgaWRzIHksIHJlbmFtZSBpZHMgeikpXG4gIHwgUmVwIChnLCBrLCB5KSAtPlxuICAgIG1rX2V4cHIgaWRzIChSZXAgKGcsIGssIHJlbmFtZSBpZHMgeSkpXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcbnR5cGUgbWFya19pbmZvcyA9IGludCBhcnJheVxudHlwZSBzdGF0dXMgPSBGYWlsZWQgfCBNYXRjaCBvZiBtYXJrX2luZm9zICogUG1hcmsuU2V0LnQgfCBSdW5uaW5nXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUU2VxIG9mIHQgbGlzdCAqIGV4cHIgKiBzZW1cbiAgICB8IFRFeHAgb2YgTWFya3MudCAqIGV4cHJcbiAgICB8IFRNYXRjaCBvZiBNYXJrcy50XG5cbiAgbGV0IHJlYyBlcXVhbCBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgVFNlcSAobDEnLCBlMSwgXykgOjogcjEsIFRTZXEgKGwyJywgZTIsIF8pIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIGVxdWFsIGwxJyBsMicgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRFeHAgKG1hcmtzMSwgZTEpIDo6IHIxLCBURXhwIChtYXJrczIsIGUyKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRNYXRjaCBtYXJrczEgOjogcjEsIFRNYXRjaCBtYXJrczIgOjogcjIgLT5cbiAgICAgIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgcmVjIGhhc2ggbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhY2N1XG4gICAgfCBUU2VxIChsJywgZSwgXykgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxNzJhMWJjZSAoaGFzaF9jb21iaW5lIGUuaWQgKGhhc2ggbCcgYWNjdSkpKVxuICAgIHwgVEV4cCAobWFya3MsIGUpIDo6IHIgLT5cbiAgICAgIGhhc2ggclxuICAgICAgICAoaGFzaF9jb21iaW5lIDB4MmI0YzBkNzcgKGhhc2hfY29tYmluZSBlLmlkIChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKSlcbiAgICB8IFRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDFjMjA1YWQ1IChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKVxuXG4gIGxldCB0ZXhwIG1hcmtzIHggPSBURXhwIChtYXJrcywgeClcblxuICBsZXQgdHNlcSBraW5kIHggeSByZW0gPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiByZW1cbiAgICB8IFtURXhwIChtYXJrcywge2RlZiA9IEVwcyA7IF99KV0gLT4gVEV4cCAobWFya3MsIHkpIDo6IHJlbVxuICAgIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBUU2VxICh4LCB5LCBraW5kKSA6OiByZW1cblxuICBsZXQgcmVjIHByaW50X3N0YXRlX3JlYyBjaCBlIHkgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgVE1hdGNoIG1hcmtzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KE1hdGNoQCAlYSlAXVwiIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBUU2VxIChsJywgeCwgX2tpbmQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KFNlcUAgXCI7XG4gICAgICBwcmludF9zdGF0ZV9sc3QgY2ggbCcgeDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCAlYSlAXVwiIHBwIHhcbiAgICB8IFRFeHAgKG1hcmtzLCB7ZGVmID0gRXBzOyBffSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgKGVwcykpQF1cIiB5LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBURXhwIChtYXJrcywgeCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgJWEpQF1cIiB4LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzIHBwIHhcblxuICBhbmQgcHJpbnRfc3RhdGVfbHN0IGNoIGwgeSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIoKVwiXG4gICAgfCBlIDo6IHJlbSAtPlxuICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeTtcbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAIHwgXCI7XG4gICAgICAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHkpXG4gICAgICAgIHJlbVxuXG4gIGxldCBwcCBjaCB0ID0gcHJpbnRfc3RhdGVfbHN0IGNoIFt0XSB7IGlkID0gMDsgZGVmID0gRXBzIH1cbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGlkeDogaWR4XG4gICAgOyBjYXRlZ29yeTogQ2F0ZWdvcnkudFxuICAgIDsgZGVzYzogRS50IGxpc3RcbiAgICA7IG11dGFibGUgc3RhdHVzOiBzdGF0dXMgb3B0aW9uXG4gICAgOyBoYXNoOiBoYXNoIH1cblxuICBsZXQgZHVtbXkgPVxuICAgIHsgaWR4ID0gLTFcbiAgICA7IGNhdGVnb3J5ID0gQ2F0ZWdvcnkuZHVtbXlcbiAgICA7IGRlc2MgPSBbXVxuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IC0xIH1cblxuICBsZXQgaGFzaCBpZHggY2F0IGRlc2MgPVxuICAgIEUuaGFzaCBkZXNjIChoYXNoX2NvbWJpbmUgaWR4IChoYXNoX2NvbWJpbmUgKENhdGVnb3J5LnRvX2ludCBjYXQpIDApKSBsYW5kIDB4M0ZGRkZGRkZcblxuICBsZXQgbWsgaWR4IGNhdCBkZXNjID1cbiAgICB7IGlkeFxuICAgIDsgY2F0ZWdvcnkgPSBjYXRcbiAgICA7IGRlc2NcbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSBoYXNoIGlkeCBjYXQgZGVzY31cblxuICBsZXQgY3JlYXRlIGNhdCBlID0gbWsgMCBjYXQgW0UuVEV4cCAoTWFya3MuZW1wdHksIGUpXVxuXG4gIGxldCBlcXVhbCB4IHkgPVxuICAgICh4Lmhhc2ggOiBpbnQpID0geS5oYXNoICYmICh4LmlkeCA6IGludCkgPSB5LmlkeCAmJlxuICAgIENhdGVnb3J5LmVxdWFsIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSAmJiBFLmVxdWFsIHguZGVzYyB5LmRlc2NcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgIGxldCBjID0gY29tcGFyZSAoeC5oYXNoIDogaW50KSB5Lmhhc2ggaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgIGxldCBjID0gQ2F0ZWdvcnkuY29tcGFyZSB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICBjb21wYXJlIHguZGVzYyB5LmRlc2NcblxuICB0eXBlIHQnID0gdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSB0J1xuICAgICAgbGV0IGVxdWFsID0gZXF1YWxcbiAgICAgIGxldCBoYXNoIHQgPSB0Lmhhc2hcbiAgICBlbmQpXG5lbmRcblxuKCoqKiogRmluZCBhIGZyZWUgaW5kZXggKioqKilcblxudHlwZSB3b3JraW5nX2FyZWEgPSBib29sIGFycmF5IHJlZlxuXG5sZXQgY3JlYXRlX3dvcmtpbmdfYXJlYSAoKSA9IHJlZiBbfCBmYWxzZSB8XVxuXG5sZXQgaW5kZXhfY291bnQgdyA9IEFycmF5Lmxlbmd0aCAhd1xuXG5sZXQgcmVzZXRfdGFibGUgYSA9IEFycmF5LmZpbGwgYSAwIChBcnJheS5sZW5ndGggYSkgZmFsc2VcblxubGV0IHJlYyBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgPVxuICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEUuVFNlcSAobCwgXywgXykgLT4gbWFya191c2VkX2luZGljZXMgdGJsIGxcbiAgICAgIHwgRS5URXhwIChtYXJrcywgXylcbiAgICAgIHwgRS5UTWF0Y2ggbWFya3MgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKF8sIGkpIC0+IGlmIGkgPj0gMCB0aGVuIHRibC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBtYXJrcy5NYXJrcy5tYXJrcylcblxubGV0IHJlYyBmaW5kX2ZyZWUgdGJsIGlkeCBsZW4gPVxuICBpZiBpZHggPSBsZW4gfHwgbm90IHRibC4oaWR4KSB0aGVuIGlkeCBlbHNlIGZpbmRfZnJlZSB0YmwgKGlkeCArIDEpIGxlblxuXG5sZXQgZnJlZV9pbmRleCB0YmxfcmVmIGwgPVxuICBsZXQgdGJsID0gIXRibF9yZWYgaW5cbiAgcmVzZXRfdGFibGUgdGJsO1xuICBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0YmwgaW5cbiAgbGV0IGlkeCA9IGZpbmRfZnJlZSB0YmwgMCBsZW4gaW5cbiAgaWYgaWR4ID0gbGVuIHRoZW4gdGJsX3JlZiA6PSBBcnJheS5tYWtlICgyICogbGVuKSBmYWxzZTtcbiAgaWR4XG5cbigqKioqIENvbXB1dGF0aW9uIG9mIHRoZSBuZXh0IHN0YXRlICoqKiopXG5cbmxldCByZW1vdmVfbWF0Y2hlcyA9IExpc3QuZmlsdGVyIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuXG5sZXQgcmVjIHNwbGl0X2F0X21hdGNoX3JlYyBsJyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBFLlRNYXRjaCBfIDo6IHIgLT4gKExpc3QucmV2IGwnLCByZW1vdmVfbWF0Y2hlcyByKVxuICB8IHggOjogciAgICAgICAgLT4gc3BsaXRfYXRfbWF0Y2hfcmVjICh4IDo6IGwnKSByXG5cbmxldCBzcGxpdF9hdF9tYXRjaCBsID0gc3BsaXRfYXRfbWF0Y2hfcmVjIFtdIGxcblxubGV0IHJlYyByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwgeSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+XG4gICAgKFtdLCBwcmV2KVxuICB8IEUuVE1hdGNoIF8gYXMgeCA6OiBfIC0+ICgqIFRydW5jYXRlIGFmdGVyIGZpcnN0IG1hdGNoICopXG4gICAgKFt4XSwgcHJldilcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgbGV0IChsJycsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCcgeCBpblxuICAgIGxldCAocicsIHByZXYnJykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2JyByIHkgaW5cbiAgICAoRS50c2VxIGtpbmQgbCcnIHggcicsIHByZXYnJylcbiAgfCBFLlRFeHAgKF9tYXJrcywge2RlZiA9IEVwczsgX30pIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB5LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeS5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcbiAgfCBFLlRFeHAgKF9tYXJrcywgeCkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHguaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh4LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuXG5sZXQgcmVjIHNldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgRS5UTWF0Y2ggbWFya3MgOjogciAtPlxuICAgIEUuVE1hdGNoIChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBFLlRTZXEgKHNldF9pZHggaWR4IGwnLCB4LCBraW5kKSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5URXhwIChtYXJrcywgeCkgOjogciAtPlxuICAgIEUuVEV4cCAoKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSwgeCkgOjogc2V0X2lkeCBpZHggclxuXG5sZXQgZmlsdGVyX21hcmtzIGIgZSBtYXJrcyA9XG4gIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gTGlzdC5maWx0ZXIgKGZ1biAoaSwgXykgLT4gaSA8IGIgfHwgaSA+IGUpIG1hcmtzLk1hcmtzLm1hcmtzIH1cblxubGV0IHJlYyBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gICgqRm9ybWF0LmVwcmludGYgXCIlZEAuXCIgeC5pZDsqKVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IHMgLT5cbiAgICBpZiBDc2V0Lm1lbSBjIHMgdGhlbiBFLnRleHAgbWFya3MgZXBzX2V4cHIgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgbGV0ICh5JycsIG1hcmtzJykgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgZmlyc3RcbiAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeSdcbiAgICAgIHdpdGhcbiAgICAgICAgTm9uZSAgICAgICAgLT4gKHknLCBtYXJrcylcbiAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHknLCBtYXJrcycpXG4gICAgaW5cbiAgICBiZWdpbiBtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHknJyB4IChFLlRNYXRjaCBtYXJrcycgOjogcmVtKVxuICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB5JycgeCByZW1cbiAgICBlbmRcbiAgfCBFcHMgLT5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MubWFya3MgPSAoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgUG1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5wbWFya3MgPSBQbWFyay5TZXQuYWRkIGkgbWFya3MuTWFya3MucG1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBFLlRNYXRjaCAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykgOjogcmVtXG4gIHwgQmVmb3JlIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IG5leHRfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWZ0ZXIgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgcHJldl9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cblxuYW5kIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxuYW5kIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5IHogcmVtID1cbiAgbWF0Y2hcbiAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeVxuICB3aXRoXG4gICAgTm9uZSAtPlxuICAgIEUudHNlcSBraW5kIHkgeiByZW1cbiAgfCBTb21lIG1hcmtzIC0+XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICBgTG9uZ2VzdCAtPlxuICAgICAgRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogcmVtKVxuICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6XG4gICAgICAgIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiByZW0pXG4gICAgfCBgRmlyc3QgLT5cbiAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICBFLnRzZXEga2luZCB5JyB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IChFLnRzZXEga2luZCB5JycgeiByZW0pKVxuXG5sZXQgcmVjIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIHggOjogcmVtXG5cbmFuZCBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmxldCBkZWx0YSB0YmxfcmVmIG5leHRfY2F0IGNoYXIgc3QgPVxuICBsZXQgcHJldl9jYXQgPSBzdC5TdGF0ZS5jYXRlZ29yeSBpblxuICBsZXQgKGV4cHInLCBfKSA9XG4gICAgcmVtb3ZlX2R1cGxpY2F0ZXMgW11cbiAgICAgIChkZWx0YV80IGNoYXIgfm5leHRfY2F0IH5wcmV2X2NhdCBzdC5TdGF0ZS5kZXNjIFtdKVxuICAgICAgZXBzX2V4cHIgaW5cbiAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgU3RhdGUubWsgaWR4IG5leHRfY2F0IGV4cHInJ1xuXG4oKioqKilcblxubGV0IHJlYyByZWRfdHIgPSBmdW5jdGlvblxuICB8IFtdIHwgW19dIGFzIGwgLT5cbiAgICBsXG4gIHwgKChzMSwgc3QxKSBhcyB0cjEpIDo6ICgoczIsIHN0MikgYXMgdHIyKSA6OiByZW0gLT5cbiAgICBpZiBTdGF0ZS5lcXVhbCBzdDEgc3QyIHRoZW5cbiAgICAgIHJlZF90ciAoKENzZXQudW5pb24gczEgczIsIHN0MSkgOjogcmVtKVxuICAgIGVsc2VcbiAgICAgIHRyMSA6OiByZWRfdHIgKHRyMiA6OiByZW0pXG5cbmxldCBzaW1wbF90ciBsID1cbiAgTGlzdC5zb3J0XG4gICAgKGZ1biAoczEsIF8pIChzMiwgXykgLT4gY29tcGFyZSBzMSBzMilcbiAgICAocmVkX3RyIChMaXN0LnNvcnQgKGZ1biAoXywgc3QxKSAoXywgc3QyKSAtPiBTdGF0ZS5jb21wYXJlIHN0MSBzdDIpIGwpKVxuXG4oKioqKilcblxubGV0IHByZXBlbmRfZGVyaXYgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgeCkgbCAtPiBDc2V0LnByZXBlbmQgcyB4IGwpXG5cbmxldCByZWMgcmVzdHJpY3QgcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAocycsIHgnKSA6OiByZW0gLT5cbiAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICB0aGVuIHJlc3RyaWN0IHMgcmVtXG4gICAgZWxzZSAocycnLCB4JykgOjogcmVzdHJpY3QgcyByZW1cblxubGV0IHJlYyByZW1vdmVfbWFya3MgYiBlIHJlbSA9XG4gIGlmIGIgPiBlIHRoZW4gcmVtIGVsc2UgcmVtb3ZlX21hcmtzIGIgKGUgLSAxKSAoKGUsIC0yKSA6OiByZW0pXG5cbmxldCByZWMgcHJlcGVuZF9tYXJrc19leHByIG0gPSBmdW5jdGlvblxuICB8IEUuVFNlcSAobCwgZScsIHMpIC0+IEUuVFNlcSAocHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwsIGUnLCBzKVxuICB8IEUuVEV4cCAobScsIGUnKSAgIC0+IEUuVEV4cCAoTWFya3MubWVyZ2UgbSBtJywgZScpXG4gIHwgRS5UTWF0Y2ggbScgICAgICAgLT4gRS5UTWF0Y2ggKE1hcmtzLm1lcmdlIG0gbScpXG5cbmFuZCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCA9XG4gIExpc3QubWFwIChwcmVwZW5kX21hcmtzX2V4cHIgbSkgbFxuXG5sZXQgcHJlcGVuZF9tYXJrcyBtID1cbiAgTGlzdC5tYXAgKGZ1biAocywgeCkgLT4gKHMsIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSB4KSlcblxubGV0IHJlYyBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgfCBDc3QgcyAtPlxuICAgIENzZXQucHJlcGVuZCBzIFtFLnRleHAgbWFya3MgZXBzX2V4cHJdIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeikgcmVtIC0+XG4gICAgICAgICBsZXQgKHonLCBtYXJrcycpID1cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgICB6XG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICBOb25lICAgICAgICAtPiAoeiwgbWFya3MpXG4gICAgICAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHosIG1hcmtzJylcbiAgICAgICAgIGluXG4gICAgICAgICBDc2V0LnByZXBlbmQgc1xuICAgICAgICAgICAobWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB6JyB4IFtFLlRNYXRjaCBtYXJrcyddXG4gICAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHonIHggW10pXG4gICAgICAgICAgIHJlbSlcbiAgICAgIHknIHJlbVxuICB8IEVwcyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9ICgoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBQbWFyayBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnNcbiAgICAgIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChyZW1vdmVfbWFya3MgYiBlIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKS5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBCZWZvcmUgY2F0JyAtPlxuICAgIENzZXQucHJlcGVuZCAoTGlzdC5hc3NxIGNhdCcgY2F0ZWdvcmllcykgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBBZnRlciBjYXQnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IGNhdCBjYXQnIHRoZW4gQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgciByZW0pXG5cbmFuZCBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeSB6IHJlbSA9XG4gIGlmXG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gKF9zLCB4bCkgLT5cbiAgICAgICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSB4bClcbiAgICAgIHlcbiAgdGhlblxuICAgIGxldCB6JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgTWFya3MuZW1wdHkgY2F0IHogWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHkpIHJlbSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgeVxuICAgICAgICAgd2l0aFxuICAgICAgICAgICBOb25lIC0+XG4gICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5IHogW10pIHJlbVxuICAgICAgICAgfCBTb21lIG1hcmtzIC0+XG4gICAgICAgICAgIGxldCB6JycgPSBwcmVwZW5kX21hcmtzIG1hcmtzIHonIGluXG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIGBMb25nZXN0IC0+XG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgcmVtKVxuICAgICAgICAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIHJlbSlcbiAgICAgICAgICAgfCBgRmlyc3QgLT5cbiAgICAgICAgICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JyB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScnIHogW10pIHJlbSkpKVxuICAgICAgeSByZW1cbiAgZWxzZVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeGwpIHJlbSAtPiBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeGwgeiBbXSkgcmVtKSB5IHJlbVxuXG5sZXQgcmVjIGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW3hdIHJlbVxuXG5hbmQgZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgciByZW0pXG5cbmxldCBkZXJpdiB0YmxfcmVmIGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0ID1cbiAgbGV0IGRlciA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QuU3RhdGUuY2F0ZWdvcnkgc3QuU3RhdGUuZGVzY1xuICAgICAgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgc2ltcGxfdHIgKFxuICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCBleHByKSByZW0gLT5cbiAgICAgICAgbGV0IChleHByJywgXykgPSByZW1vdmVfZHVwbGljYXRlcyBbXSBleHByIGVwc19leHByIGluXG4oKlxuRm9ybWF0LmVwcmludGYgXCJAWzwzPkBbJWFAXTogJWEgLyAlYUBdQC5cIiBDc2V0LnByaW50IHMgcHJpbnRfc3RhdGUgZXhwciBwcmludF9zdGF0ZSBleHByJztcbiopXG4gICAgICAgIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgICAgICAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChjYXQnLCBzJykgcmVtIC0+XG4gICAgICAgICAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgICAgICAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgICAgICAgICAgdGhlbiByZW1cbiAgICAgICAgICAgIGVsc2UgKHMnJywgU3RhdGUubWsgaWR4IGNhdCcgZXhwcicnKSA6OiByZW0pXG4gICAgICAgICAgY2F0ZWdvcmllcyByZW0pIGRlciBbXSlcblxuKCoqKiopXG5cbmxldCBmbGF0dGVuX21hdGNoIG0gPVxuICBsZXQgbWEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG1hIChpLCBfKSAtPiBtYXggbWEgaSkgKC0xKSBtIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChtYSArIDEpICgtMSkgaW5cbiAgTGlzdC5pdGVyIChmdW4gKGksIHYpIC0+IHJlcy4oaSkgPC0gdikgbTtcbiAgcmVzXG5cbmxldCBzdGF0dXMgcyA9XG4gIG1hdGNoIHMuU3RhdGUuc3RhdHVzIHdpdGhcbiAgICBTb21lIHN0IC0+XG4gICAgc3RcbiAgfCBOb25lIC0+XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIHMuU3RhdGUuZGVzYyB3aXRoXG4gICAgICAgIFtdICAgICAgICAgICAgICAtPiBGYWlsZWRcbiAgICAgIHwgRS5UTWF0Y2ggbSA6OiBfIC0+IE1hdGNoIChmbGF0dGVuX21hdGNoIG0uTWFya3MubWFya3MsIG0uTWFya3MucG1hcmtzKVxuICAgICAgfCBfICAgICAgICAgICAgICAgLT4gUnVubmluZ1xuICAgIGluXG4gICAgcy5TdGF0ZS5zdGF0dXMgPC0gU29tZSBzdDtcbiAgICBzdFxuIiwiKCogSW4gcmVhbGl0eSwgdGhpcyBjYW4gcmVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIGEgYm9vbCBhcnJheS5cblxuICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIGxpc3Qgb2YgYWxsIGNoYXJzIGFsb25nIHdpdGggYVxuICAgZmxhZzpcblxuICAgKGEsIDApLCAoYiwgMSksIChjLCAwKSwgKGQsIDApLCAuLi5cblxuICAgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgY29sb3IgYXJlIHJlcHJlc2VudGVkIGJ5IHNlcXVuY2VzIG9mXG4gICBjaGFyYWN0ZXJzIHdpdGggdGhlIGZsYWcgc2V0IHRvIDAuXG4qKVxuXG50eXBlIHQgPSBCeXRlcy50XG5cbmxldCBtYWtlICgpID0gQnl0ZXMubWFrZSAyNTcgJ1xcMDAwJ1xuXG5sZXQgZmxhdHRlbiBjbSA9XG4gIGxldCBjID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgY29sb3JfcmVwciA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IHYgPSByZWYgMCBpblxuICBCeXRlcy5zZXQgYyAwICdcXDAwMCc7XG4gIEJ5dGVzLnNldCBjb2xvcl9yZXByIDAgJ1xcMDAwJztcbiAgZm9yIGkgPSAxIHRvIDI1NSBkb1xuICAgIGlmIEJ5dGVzLmdldCBjbSBpIDw+ICdcXDAwMCcgdGhlbiBpbmNyIHY7XG4gICAgQnl0ZXMuc2V0IGMgaSAoQ2hhci5jaHIgIXYpO1xuICAgIEJ5dGVzLnNldCBjb2xvcl9yZXByICF2IChDaGFyLmNociBpKVxuICBkb25lO1xuICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjLCBCeXRlcy5zdWJfc3RyaW5nIGNvbG9yX3JlcHIgMCAoIXYgKyAxKSwgIXYgKyAxKVxuXG4oKiBtYXJrIGFsbCB0aGUgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMgb2YgdGhlIGNoYXIgc2V0IHdpdGggdGhlIDEgYnl0ZSAqKVxubGV0IHNwbGl0IHMgY20gPVxuICBDc2V0Lml0ZXIgcyB+ZjooZnVuIGkgaiAtPlxuICAgICAgQnl0ZXMuc2V0IGNtIGkgJ1xcMDAxJztcbiAgICAgIEJ5dGVzLnNldCBjbSAoaiArIDEpICdcXDAwMSc7XG4gICAgKVxuIiwiKCogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gKilcbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG1hcmtzIDogQXV0b21hdGEubWFya19pbmZvc1xuICA7IHBtYXJrcyA6IFBtYXJrLlNldC50XG4gIDsgZ3BvcyA6IGludCBhcnJheVxuICA7IGdjb3VudCA6IGludFxuICB9XG5cbmxldCBvZmZzZXQgdCBpID1cbiAgaWYgMiAqIGkgKyAxID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgaWYgbTEgPSAtMSB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAocDEsIHAyKVxuXG5sZXQgZ2V0IHQgaSA9XG4gIGxldCAocDEsIHAyKSA9IG9mZnNldCB0IGkgaW5cbiAgU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG5cbmxldCBzdGFydCBzdWJzIGkgPSBmc3QgKG9mZnNldCBzdWJzIGkpXG5cbmxldCBzdG9wIHN1YnMgaSA9IHNuZCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHRlc3QgdCBpID1cbiAgaWYgMiAqIGkgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlblxuICAgIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaWR4ID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWR4IDw+IC0xXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIGlmIHRlc3QgdCBpXG4gIHRoZW4gU29tZSAoZ2V0IHQgaSlcbiAgZWxzZSBOb25lXG5cbmxldCBkdW1teV9vZmZzZXQgPSAoLTEsIC0xKVxuXG5sZXQgYWxsX29mZnNldCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfb2Zmc2V0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gKHAxLCBwMilcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBkdW1teV9zdHJpbmcgPSBcIlwiXG5cbmxldCBhbGwgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X3N0cmluZyBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IHBwIGZtdCB0ID1cbiAgbGV0IG1hdGNoZXMgPVxuICAgIGxldCBvZmZzZXRzID0gYWxsX29mZnNldCB0IGluXG4gICAgbGV0IHN0cnMgPSBhbGwgdCBpblxuICAgIEFycmF5LnRvX2xpc3QgKFxuICAgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHN0cnMpIChmdW4gaSAtPiBzdHJzLihpKSwgb2Zmc2V0cy4oaSkpXG4gICAgKSBpblxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHBwX21hdGNoIGZtdCAoc3RyLCAoc3RhcnQsIHN0b3ApKSA9XG4gICAgZnByaW50ZiBmbXQgXCJAWyglcyAoJWQgJWQpKUBdXCIgc3RyIHN0YXJ0IHN0b3AgaW5cbiAgc2V4cCBmbXQgXCJHcm91cFwiIChsaXN0IHBwX21hdGNoKSBtYXRjaGVzXG5cbmxldCBuYl9ncm91cHMgdCA9IHQuZ2NvdW50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5sZXQgcmVjIGl0ZXIgbiBmIHYgPSBpZiBuID0gMCB0aGVuIHYgZWxzZSBpdGVyIChuIC0gMSkgZiAoZiB2KVxuXG4oKioqKilcblxubGV0IHVua25vd24gPSAtMlxubGV0IGJyZWFrID0gLTNcblxudHlwZSBtYXRjaF9pbmZvID1cbiAgfCBNYXRjaCBvZiBHcm91cC50XG4gIHwgRmFpbGVkXG4gIHwgUnVubmluZyBvZiB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgOiBpbnQgfVxuXG50eXBlIHN0YXRlID1cbiAgeyBpZHggOiBpbnQ7XG4gICAgKCogSW5kZXggb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHBvc2l0aW9uIHRhYmxlLlxuICAgICAgIE5vdCB5ZXQgY29tcHV0ZWQgdHJhbnNpdGlvbnMgcG9pbnQgdG8gYSBkdW1teSBzdGF0ZSB3aGVyZVxuICAgICAgIFtpZHhdIGlzIHNldCB0byBbdW5rbm93bl07XG4gICAgICAgSWYgW2lkeF0gaXMgc2V0IHRvIFticmVha10gZm9yIHN0YXRlcyB0aGF0IGVpdGhlciBhbHdheXNcbiAgICAgICBzdWNjZWVkIG9yIGFsd2F5cyBmYWlsLiAqKVxuICAgIHJlYWxfaWR4IDogaW50O1xuICAgICgqIFRoZSByZWFsIGluZGV4LCBpbiBjYXNlIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdICopXG4gICAgbmV4dCA6IHN0YXRlIGFycmF5O1xuICAgICgqIFRyYW5zaXRpb24gdGFibGUsIGluZGV4ZWQgYnkgY29sb3IgKilcbiAgICBtdXRhYmxlIGZpbmFsIDpcbiAgICAgIChDYXRlZ29yeS50ICpcbiAgICAgICAoQXV0b21hdGEuaWR4ICogQXV0b21hdGEuc3RhdHVzKSkgbGlzdDtcbiAgICAoKiBNYXBwaW5nIGZyb20gdGhlIGNhdGVnb3J5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b1xuICAgICAgIC0gdGhlIGluZGV4IHdoZXJlIHRoZSBuZXh0IHBvc2l0aW9uIHNob3VsZCBiZSBzYXZlZFxuICAgICAgIC0gcG9zc2libHksIHRoZSBsaXN0IG9mIG1hcmtzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5kaWNlcylcbiAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJlc3QgbWF0Y2ggKilcbiAgICBkZXNjIDogQXV0b21hdGEuU3RhdGUudFxuICAgICgqIERlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgb2YgdGhlIGF1dG9tYXRhICopIH1cblxuKCogQXV0b21hdGEgKGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbikgKilcbnR5cGUgcmUgPVxuICB7IGluaXRpYWwgOiBBdXRvbWF0YS5leHByO1xuICAgICgqIFRoZSB3aG9sZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc3RhdGVzIDogKENhdGVnb3J5LnQgKiBzdGF0ZSkgbGlzdDtcbiAgICAoKiBJbml0aWFsIHN0YXRlcywgaW5kZXhlZCBieSBpbml0aWFsIGNhdGVnb3J5ICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlICopXG4gICAgY29sb3JfcmVwciA6IHN0cmluZztcbiAgICAoKiBUYWJsZSBmcm9tIGNvbG9ycyB0byBvbmUgY2hhcmFjdGVyIG9mIHRoaXMgY29sb3IgKilcbiAgICBuY29sb3IgOiBpbnQ7XG4gICAgKCogTnVtYmVyIG9mIGNvbG9ycy4gKilcbiAgICBsbmwgOiBpbnQ7XG4gICAgKCogQ29sb3Igb2YgdGhlIGxhc3QgbmV3bGluZS4gLTEgaWYgdW5uZWNlc3NhcnkgKilcbiAgICB0YmwgOiBBdXRvbWF0YS53b3JraW5nX2FyZWE7XG4gICAgKCogVGVtcG9yYXJ5IHRhYmxlIHVzZWQgdG8gY29tcHV0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGluZGV4XG4gICAgICAgd2hlbiBjb21wdXRpbmcgYSBuZXcgc3RhdGUgKilcbiAgICBzdGF0ZXMgOiBzdGF0ZSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS50O1xuICAgICgqIFN0YXRlcyBvZiB0aGUgZGV0ZXJtaW5pc3RpYyBhdXRvbWF0YSAqKVxuICAgIGdyb3VwX25hbWVzIDogKHN0cmluZyAqIGludCkgbGlzdDtcbiAgICAoKiBOYW1lZCBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIGdyb3VwX2NvdW50IDogaW50XG4gICAgKCogTnVtYmVyIG9mIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopIH1cblxubGV0IHBwX3JlIGNoIHJlID0gQXV0b21hdGEucHAgY2ggcmUuaW5pdGlhbFxuXG5sZXQgcHJpbnRfcmUgPSBwcF9yZVxuXG5sZXQgZ3JvdXBfY291bnQgcmUgPSByZS5ncm91cF9jb3VudFxuXG5sZXQgZ3JvdXBfbmFtZXMgcmUgPSByZS5ncm91cF9uYW1lc1xuXG4oKiBJbmZvcm1hdGlvbiB1c2VkIGR1cmluZyBtYXRjaGluZyAqKVxudHlwZSBpbmZvID1cbiAgeyByZSA6IHJlO1xuICAgICgqIFRoZSBhdXRvbWF0YSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAoW3guY29sb3JzID0geC5yZS5jb2xvcnNdKVxuICAgICAgIFNob3J0Y3V0IHVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBtdXRhYmxlIHBvc2l0aW9ucyA6IGludCBhcnJheTtcbiAgICAoKiBBcnJheSBvZiBtYXJrIHBvc2l0aW9uc1xuICAgICAgIFRoZSBtYXJrIGFyZSBvZmYgYnkgb25lIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgcG9zIDogaW50O1xuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBpcyBzdGFydGVkICopXG4gICAgbGFzdCA6IGludFxuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBzaG91bGQgc3RvcCAqKSB9XG5cblxuKCoqKiopXG5cbmxldCBjYXRlZ29yeSByZSB+Y29sb3IgPVxuICBpZiBjb2xvciA9IC0xIHRoZW5cbiAgICBDYXRlZ29yeS5pbmV4aXN0YW50XG4gICAgKCogU3BlY2lhbCBjYXRlZ29yeSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICBlbHNlIGlmIGNvbG9yID0gcmUubG5sIHRoZW5cbiAgICBDYXRlZ29yeS4obGFzdG5ld2xpbmUgKysgbmV3bGluZSArKyBub3RfbGV0dGVyKVxuICBlbHNlXG4gICAgQ2F0ZWdvcnkuZnJvbV9jaGFyIChyZS5jb2xvcl9yZXByLltjb2xvcl0pXG5cbigqKioqKVxuXG5sZXQgZHVtbXlfbmV4dCA9IFt8fF1cblxubGV0IHVua25vd25fc3RhdGUgPVxuICB7IGlkeCA9IHVua25vd247IHJlYWxfaWR4ID0gMDtcbiAgICBuZXh0ID0gZHVtbXlfbmV4dDsgZmluYWwgPSBbXTtcbiAgICBkZXNjID0gQXV0b21hdGEuU3RhdGUuZHVtbXkgfVxuXG5sZXQgbWtfc3RhdGUgbmNvbCBkZXNjID1cbiAgbGV0IGJyZWFrX3N0YXRlID1cbiAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgZGVzYyB3aXRoXG4gICAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+IGZhbHNlXG4gICAgfCBBdXRvbWF0YS5GYWlsZWRcbiAgICB8IEF1dG9tYXRhLk1hdGNoIF8gLT4gdHJ1ZVxuICBpblxuICB7IGlkeCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gYnJlYWsgZWxzZSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICByZWFsX2lkeCA9IGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIG5leHQgPSBpZiBicmVha19zdGF0ZSB0aGVuIGR1bW15X25leHQgZWxzZSBBcnJheS5tYWtlIG5jb2wgdW5rbm93bl9zdGF0ZTtcbiAgICBmaW5hbCA9IFtdO1xuICAgIGRlc2MgfVxuXG5sZXQgZmluZF9zdGF0ZSByZSBkZXNjID1cbiAgdHJ5XG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuZmluZCByZS5zdGF0ZXMgZGVzY1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IG1rX3N0YXRlIHJlLm5jb2xvciBkZXNjIGluXG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuYWRkIHJlLnN0YXRlcyBkZXNjIHN0O1xuICAgIHN0XG5cbigqKioqIE1hdGNoIHdpdGggbWFya3MgKioqKilcblxubGV0IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCA9XG4gIGxldCBkZXNjID0gQXV0b21hdGEuZGVsdGEgaW5mby5yZS50YmwgY2F0IGNvbG9yIHN0LmRlc2MgaW5cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBpbmZvLnBvc2l0aW9ucyBpblxuICBpZiBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeCA9IGxlbiAmJiBsZW4gPiAwIHRoZW4gYmVnaW5cbiAgICBsZXQgcG9zID0gaW5mby5wb3NpdGlvbnMgaW5cbiAgICBpbmZvLnBvc2l0aW9ucyA8LSBBcnJheS5tYWtlICgyICogbGVuKSAwO1xuICAgIEFycmF5LmJsaXQgcG9zIDAgaW5mby5wb3NpdGlvbnMgMCBsZW5cbiAgZW5kO1xuICBkZXNjXG5cbmxldCB2YWxpZGF0ZSBpbmZvIChzOnN0cmluZykgfnBvcyBzdCA9XG4gIGxldCBjb2xvciA9IENoYXIuY29kZSAoaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCBpblxuICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCdcblxubGV0IHJlYyBsb29wIGluZm8gcyB+cG9zIHN0ID1cbiAgaWYgcG9zIDwgaW5mby5sYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgbGV0IGlkeCA9IHN0Jy5pZHggaW5cbiAgICBpZiBpZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBwb3M7XG4gICAgICBsb29wIGluZm8gcyB+cG9zOihwb3MgKyAxKSBzdCdcbiAgICBlbmQgZWxzZSBpZiBpZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgICBzdCdcbiAgICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3Mgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCByZWMgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0ID1cbiAgaWYgcG9zIDwgbGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGlmIHN0Jy5pZHggPj0gMCB0aGVuXG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3M6KHBvcyArIDEpIH5sYXN0IHN0J1xuICAgIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0J1xuICAgIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCBmaW5hbCBpbmZvIHN0IGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgc3QuZmluYWxcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOigtMSkgc3QgaW5cbiAgICBsZXQgcmVzID0gKHN0Jy5BdXRvbWF0YS5TdGF0ZS5pZHgsIEF1dG9tYXRhLnN0YXR1cyBzdCcpIGluXG4gICAgc3QuZmluYWwgPC0gKGNhdCwgcmVzKSA6OiBzdC5maW5hbDtcbiAgICByZXNcblxubGV0IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHJlLmluaXRpYWxfc3RhdGVzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gZmluZF9zdGF0ZSByZSAoQXV0b21hdGEuU3RhdGUuY3JlYXRlIGNhdCByZS5pbml0aWFsKSBpblxuICAgIHJlLmluaXRpYWxfc3RhdGVzIDwtIChjYXQsIHN0KSA6OiByZS5pbml0aWFsX3N0YXRlcztcbiAgICBzdFxuXG5sZXQgZ2V0X2NvbG9yIHJlIChzOnN0cmluZykgcG9zID1cbiAgaWYgcG9zIDwgMCB0aGVuXG4gICAgLTFcbiAgZWxzZVxuICAgIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgaWYgcG9zID49IHNsZW4gdGhlblxuICAgICAgLTFcbiAgICBlbHNlIGlmIHBvcyA9IHNsZW4gLSAxICYmIHJlLmxubCA8PiAtMSAmJiBzLltwb3NdID0gJ1xcbicgdGhlblxuICAgICAgKCogU3BlY2lhbCBjYXNlIGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gICAgICByZS5sbmxcbiAgICBlbHNlXG4gICAgICBDaGFyLmNvZGUgcmUuY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV1cblxubGV0IHJlYyBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzID1cbiAgbGV0IHN0JyA9IHN0Lm5leHQuKGluZm8ucmUubG5sKSBpblxuICBpZiBzdCcuaWR4ID49IDAgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcuaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgbGV0IGNvbG9yID0gaW5mby5yZS5sbmwgaW5cbiAgICBsZXQgcmVhbF9jID0gQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgJ1xcbiddIGluXG4gICAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gICAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOnJlYWxfYyBzdCBpblxuICAgIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnO1xuICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHNcbiAgZW5kXG5cbmxldCByZWMgc2Nhbl9zdHIgaW5mbyAoczpzdHJpbmcpIGluaXRpYWxfc3RhdGUgfmdyb3VwcyA9XG4gIGxldCBwb3MgPSBpbmZvLnBvcyBpblxuICBsZXQgbGFzdCA9IGluZm8ubGFzdCBpblxuICBpZiAobGFzdCA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgJiYgaW5mby5yZS5sbmwgPD4gLTFcbiAgICAgICYmIGxhc3QgPiBwb3NcbiAgICAgICYmIFN0cmluZy5nZXQgcyAobGFzdCAtIDEpID0gJ1xcbicpXG4gIHRoZW4gYmVnaW5cbiAgICBsZXQgaW5mbyA9IHsgaW5mbyB3aXRoIGxhc3QgPSBsYXN0IC0gMSB9IGluXG4gICAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0XG4gICAgZWxzZVxuICAgICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3M6KGxhc3QgLSAxKSBzdCB+Z3JvdXBzXG4gIGVuZCBlbHNlIGlmIGdyb3VwcyB0aGVuXG4gICAgbG9vcCBpbmZvIHMgfnBvcyBpbml0aWFsX3N0YXRlXG4gIGVsc2VcbiAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3QgaW5pdGlhbF9zdGF0ZVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBmaW5hbCBib3VuZGFyeSBjaGVjayBvbiB0aGUgaW5wdXQuXG4gICBUaGlzIGlzIHVzZWZ1bCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZmFpbGVkIGJlY2F1c2VcbiAgIG9mIGluc3VmZmljaWVudCBpbnB1dCwgb3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseVxuICAgbWF0Y2hlcyBmb3IgcmVnZXggdGhhdCBoYXZlIGJvdW5kYXJ5IGNvbmRpdGlvbnMgd2l0aCByZXNwZWN0XG4gICB0byB0aGUgaW5wdXQgc3RyaW5nLlxuICopXG5sZXQgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyA9XG4gIGxldCBmaW5hbF9jYXQgPVxuICAgIGlmIGxhc3QgPSBzbGVuIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgbGFzdCkpXG4gIGluXG4gIGxldCAoaWR4LCByZXMpID0gZmluYWwgaW5mbyBzdCBmaW5hbF9jYXQgaW5cbiAgKG1hdGNoIGdyb3VwcywgcmVzIHdpdGhcbiAgfCB0cnVlLCBNYXRjaCBfIC0+IGluZm8ucG9zaXRpb25zLihpZHgpIDwtIGxhc3RcbiAgfCBfIC0+ICgpKTtcbiAgcmVzXG5cbmxldCBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsYXN0ID0gaWYgbGVuID0gLTEgdGhlbiBzbGVuIGVsc2UgcG9zICsgbGVuIGluXG4gIGxldCBpbmZvID1cbiAgICB7IHJlIDsgY29sb3JzID0gcmUuY29sb3JzOyBwb3MgOyBsYXN0XG4gICAgOyBwb3NpdGlvbnMgPVxuICAgICAgICBpZiBncm91cHMgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuID0gQXV0b21hdGEuaW5kZXhfY291bnQgcmUudGJsICsgMSBpblxuICAgICAgICAgIGlmIG4gPD0gMTAgdGhlblxuICAgICAgICAgICAgW3wwOzA7MDswOzA7MDswOzA7MDswfF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5tYWtlIG4gMFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIFt8fF0gfVxuICBpblxuICBsZXQgaW5pdGlhbF9jYXQgPVxuICAgIGlmIHBvcyA9IDAgdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnlcbiAgICAgICAgICAgICAgICArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIChwb3MgLSAxKSkpXG4gIGluXG4gIGxldCBpbml0aWFsX3N0YXRlID0gZmluZF9pbml0aWFsX3N0YXRlIHJlIGluaXRpYWxfY2F0IGluXG4gIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgbGV0IHJlcyA9XG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgfHwgKHBhcnRpYWwgJiYgbm90IGdyb3VwcykgdGhlblxuICAgICAgQXV0b21hdGEuc3RhdHVzIHN0LmRlc2NcbiAgICBlbHNlIGlmIHBhcnRpYWwgJiYgZ3JvdXBzIHRoZW5cbiAgICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjIHdpdGhcbiAgICAgIHwgTWF0Y2ggXyB8IEZhaWxlZCBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgKCogVGhpcyBjb3VsZCBiZSBiZWNhdXNlIGl0J3Mgc3RpbGwgbm90IGZ1bGx5IG1hdGNoZWQsIG9yIGl0XG4gICAgICAgICAgIGNvdWxkIGJlIHRoYXQgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biBzcGVjaWFsIGVuZCBvZiBpbnB1dFxuICAgICAgICAgICBjaGVja3MuICopXG4gICAgICAgIChtYXRjaCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzIHdpdGhcbiAgICAgICAgIHwgTWF0Y2ggXyBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICAgICB8IEZhaWxlZCB8IFJ1bm5pbmcgLT5cbiAgICAgICAgICAgKCogQSBmYWlsdXJlIGhlcmUganVzdCBtZWFucyB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhLCBpLmUuXG4gICAgICAgICAgICAgIGl0J3MgYSBwYXJ0aWFsIG1hdGNoLiAqKVxuICAgICAgICAgICBSdW5uaW5nKVxuICAgIGVsc2UgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3Vwc1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICAgIEF1dG9tYXRhLk1hdGNoIChtYXJrcywgcG1hcmtzKSAtPlxuICAgIE1hdGNoIHsgcyA7IG1hcmtzOyBwbWFya3MgOyBncG9zID0gaW5mby5wb3NpdGlvbnM7IGdjb3VudCA9IHJlLmdyb3VwX2NvdW50fVxuICB8IEF1dG9tYXRhLkZhaWxlZCAtPiBGYWlsZWRcbiAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+XG4gICAgbGV0IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgPSBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oMCkgZWxzZSAwIGluXG4gICAgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfVxuXG5sZXQgbWtfcmUgfmluaXRpYWwgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzIH5ncm91cF9jb3VudCA9XG4gIHsgaW5pdGlhbCA7XG4gICAgaW5pdGlhbF9zdGF0ZXMgPSBbXTtcbiAgICBjb2xvcnM7XG4gICAgY29sb3JfcmVwcjtcbiAgICBuY29sb3I7XG4gICAgbG5sO1xuICAgIHRibCA9IEF1dG9tYXRhLmNyZWF0ZV93b3JraW5nX2FyZWEgKCk7XG4gICAgc3RhdGVzID0gQXV0b21hdGEuU3RhdGUuVGFibGUuY3JlYXRlIDk3O1xuICAgIGdyb3VwX25hbWVzO1xuICAgIGdyb3VwX2NvdW50IH1cblxuKCoqKiogQ2hhcmFjdGVyIHNldHMgKioqKilcblxubGV0IGNzZXEgYyBjJyA9IENzZXQuc2VxIChDaGFyLmNvZGUgYykgKENoYXIuY29kZSBjJylcbmxldCBjYWRkIGMgcyA9IENzZXQuYWRkIChDaGFyLmNvZGUgYykgc1xuXG5sZXQgdHJhbnNfc2V0IGNhY2hlIGNtIHMgPVxuICBtYXRjaCBDc2V0Lm9uZV9jaGFyIHMgd2l0aFxuICB8IFNvbWUgaSAtPiBDc2V0LmNzaW5nbGUgY20uW2ldXG4gIHwgTm9uZSAtPlxuICAgIGxldCB2ID0gKENzZXQuaGFzaF9yZWMgcywgcykgaW5cbiAgICB0cnlcbiAgICAgIENzZXQuQ1NldE1hcC5maW5kIHYgIWNhY2hlXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBsID1cbiAgICAgICAgQ3NldC5mb2xkX3JpZ2h0XG4gICAgICAgICAgc1xuICAgICAgICAgIH5mOihmdW4gKGksIGopIGwgLT4gQ3NldC51bmlvbiAoY3NlcSBjbS5baV0gY20uW2pdKSBsKVxuICAgICAgICAgIH5pbml0OkNzZXQuZW1wdHlcbiAgICAgIGluXG4gICAgICBjYWNoZSA6PSBDc2V0LkNTZXRNYXAuYWRkIHYgbCAhY2FjaGU7XG4gICAgICBsXG5cbigqKioqKVxuXG50eXBlIHJlZ2V4cCA9XG4gICAgU2V0IG9mIENzZXQudFxuICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG5tb2R1bGUgVmlldyA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWdleHAgPVxuICAgICAgU2V0IG9mIENzZXQudFxuICAgIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICAgIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICAgIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICAgIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG4gIGxldCB2aWV3IHQgPSB0XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgdCA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgdmFyIHMgcmUgPSBzZXhwIGZtdCBzIHBwIHJlIGluXG4gIGxldCBzZXEgcyByZWwgPSBzZXhwIGZtdCBzIChsaXN0IHBwKSByZWwgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2V0IHMgLT4gIHNleHAgZm10IFwiU2V0XCIgQ3NldC5wcCBzXG4gIHwgU2VxdWVuY2Ugc3EgLT4gc2VxIFwiU2VxdWVuY2VcIiBzcVxuICB8IEFsdGVybmF0aXZlIGFsdCAtPiBzZXEgXCJBbHRlcm5hdGl2ZVwiIGFsdFxuICB8IFJlcGVhdCAocmUsIHN0YXJ0LCBzdG9wKSAtPlxuICAgIGxldCBwcCcgZm10ICgpID0gZnByaW50ZiBmbXQgXCIlYUAgJWQlYVwiIHBwIHJlICAgc3RhcnQgICBvcHRpbnQgc3RvcCBpblxuICAgIHNleHAgZm10IFwiUmVwZWF0XCIgcHAnICgpXG4gIHwgQmVnX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX2xpbmVcIlxuICB8IEVuZF9vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9saW5lXCJcbiAgfCBCZWdfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfd29yZFwiXG4gIHwgRW5kX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3dvcmRcIlxuICB8IE5vdF9ib3VuZCAgICAgICAgLT4gc3RyIGZtdCBcIk5vdF9ib3VuZFwiXG4gIHwgQmVnX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3N0clwiXG4gIHwgRW5kX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3N0clwiXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPiBzdHIgZm10IFwiTGFzdF9lbmRfb2ZfbGluZVwiXG4gIHwgU3RhcnQgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RhcnRcIlxuICB8IFN0b3AgICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0b3BcIlxuICB8IFNlbSAoc2VtLCByZSkgICAgLT5cbiAgICBzZXhwIGZtdCBcIlNlbVwiIChwYWlyIEF1dG9tYXRhLnBwX3NlbSBwcCkgKHNlbSwgcmUpXG4gIHwgU2VtX2dyZWVkeSAoaywgcmUpIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1fZ3JlZWR5XCIgKHBhaXIgQXV0b21hdGEucHBfcmVwX2tpbmQgcHApIChrLCByZSlcbiAgfCBHcm91cCAoTm9uZSwgYykgICAtPiB2YXIgXCJHcm91cFwiIGNcbiAgfCBHcm91cCAoU29tZSBuLCBjKSAtPiBzZXhwIGZtdCBcIk5hbWVkX2dyb3VwXCIgKHBhaXIgc3RyIHBwKSAobiwgYylcbiAgfCBOb19ncm91cCBjICAgICAtPiB2YXIgXCJOb19ncm91cFwiIGNcbiAgfCBOZXN0IGMgICAgICAgICAtPiB2YXIgXCJOZXN0XCIgY1xuICB8IENhc2UgYyAgICAgICAgIC0+IHZhciBcIkNhc2VcIiBjXG4gIHwgTm9fY2FzZSBjICAgICAgLT4gdmFyIFwiTm9fY2FzZVwiIGNcbiAgfCBJbnRlcnNlY3Rpb24gYyAtPiBzZXEgXCJJbnRlcnNlY3Rpb25cIiBjXG4gIHwgQ29tcGxlbWVudCBjICAgLT4gc2VxIFwiQ29tcGxlbWVudFwiIGNcbiAgfCBEaWZmZXJlbmNlIChhLCBiKSAtPiBzZXhwIGZtdCBcIkRpZmZlcmVuY2VcIiAocGFpciBwcCBwcCkgKGEsIGIpXG4gIHwgUG1hcmsgKG0sIHIpICAgICAgLT4gc2V4cCBmbXQgXCJQbWFya1wiIChwYWlyIFBtYXJrLnBwIHBwKSAobSwgcilcblxubGV0IHJlYyBpc19jaGFyc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgXyAtPlxuICAgIHRydWVcbiAgfCBBbHRlcm5hdGl2ZSBsIHwgSW50ZXJzZWN0aW9uIGwgfCBDb21wbGVtZW50IGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgaXNfY2hhcnNldCBsXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgaXNfY2hhcnNldCByICYmIGlzX2NoYXJzZXQgcidcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgfCBOb19ncm91cCByIHwgQ2FzZSByIHwgTm9fY2FzZSByIC0+XG4gICAgaXNfY2hhcnNldCByXG4gIHwgU2VxdWVuY2UgXyB8IFJlcGVhdCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IE5vdF9ib3VuZCB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBHcm91cCBfIHwgTmVzdCBfIHwgUG1hcmsgKF8sXyktPlxuICAgIGZhbHNlXG5cbigqWFhYIFVzZSBhIGJldHRlciBhbGdvcml0aG0gYWxsb3dpbmcgbm9uLWNvbnRpZ3VvdXMgcmVnaW9ucz8gKilcblxubGV0IGN1cHBlciA9XG4gIENzZXQudW5pb24gKGNzZXEgJ0EnICdaJylcbiAgICAoQ3NldC51bmlvbiAoY3NlcSAnXFwxOTInICdcXDIxNCcpIChjc2VxICdcXDIxNicgJ1xcMjIyJykpXG5sZXQgY2xvd2VyID0gQ3NldC5vZmZzZXQgMzIgY3VwcGVyXG5sZXQgY2FscGhhID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGNhZGQgWydcXDE3MCc7ICdcXDE4MSc7ICdcXDE4Nic7ICdcXDIyMyc7ICdcXDI1NSddXG4gICAgKENzZXQudW5pb24gY2xvd2VyIGN1cHBlcilcbmxldCBjZGlnaXQgPSBjc2VxICcwJyAnOSdcbmxldCBjYWxudW0gPSBDc2V0LnVuaW9uIGNhbHBoYSBjZGlnaXRcbmxldCBjd29yZCA9IGNhZGQgJ18nIGNhbG51bVxuXG5sZXQgY29sb3JpemUgYyByZWdleHAgPVxuICBsZXQgbG5sID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgY29sb3JpemUgcmVnZXhwID1cbiAgICBtYXRjaCByZWdleHAgd2l0aFxuICAgICAgU2V0IHMgICAgICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgcyBjXG4gICAgfCBTZXF1ZW5jZSBsICAgICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBBbHRlcm5hdGl2ZSBsICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBSZXBlYXQgKHIsIF8sIF8pICAgICAgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgLT4gQ29sb3JfbWFwLnNwbGl0IChDc2V0LmNzaW5nbGUgJ1xcbicpIGNcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZCAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IGN3b3JkIGNcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBTdGFydCB8IFN0b3AgICAgICAgICAgICAgIC0+ICgpXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lICAgICAgICAgIC0+IGxubCA6PSB0cnVlXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKVxuICAgIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByIHwgUG1hcmsgKF8scikgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IENhc2UgXyB8IE5vX2Nhc2UgX1xuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSBfICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgY29sb3JpemUgcmVnZXhwO1xuICAhbG5sXG5cbigqKioqIENvbXBpbGF0aW9uICoqKiopXG5cbmxldCByZWMgZXF1YWwgeDEgeDIgPVxuICBtYXRjaCB4MSwgeDIgd2l0aFxuICAgIFNldCBzMSwgU2V0IHMyIC0+XG4gICAgczEgPSBzMlxuICB8IFNlcXVlbmNlIGwxLCBTZXF1ZW5jZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBBbHRlcm5hdGl2ZSBsMSwgQWx0ZXJuYXRpdmUgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgUmVwZWF0ICh4MScsIGkxLCBqMSksIFJlcGVhdCAoeDInLCBpMiwgajIpIC0+XG4gICAgaTEgPSBpMiAmJiBqMSA9IGoyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBCZWdfb2ZfbGluZSwgQmVnX29mX2xpbmVcbiAgfCBFbmRfb2ZfbGluZSwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCwgQmVnX29mX3dvcmRcbiAgfCBFbmRfb2Zfd29yZCwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQsIE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIsIEJlZ19vZl9zdHJcbiAgfCBFbmRfb2Zfc3RyLCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSwgTGFzdF9lbmRfb2ZfbGluZVxuICB8IFN0YXJ0LCBTdGFydFxuICB8IFN0b3AsIFN0b3AgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChzZW0xLCB4MScpLCBTZW0gKHNlbTIsIHgyJykgLT5cbiAgICBzZW0xID0gc2VtMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgU2VtX2dyZWVkeSAoazEsIHgxJyksIFNlbV9ncmVlZHkgKGsyLCB4MicpIC0+XG4gICAgazEgPSBrMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgR3JvdXAgXywgR3JvdXAgXyAtPiAoKiBEbyBub3QgbWVyZ2UgZ3JvdXBzISAqKVxuICAgIGZhbHNlXG4gIHwgTm9fZ3JvdXAgeDEnLCBOb19ncm91cCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTmVzdCB4MScsIE5lc3QgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IENhc2UgeDEnLCBDYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOb19jYXNlIHgxJywgTm9fY2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgSW50ZXJzZWN0aW9uIGwxLCBJbnRlcnNlY3Rpb24gbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQ29tcGxlbWVudCBsMSwgQ29tcGxlbWVudCBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBEaWZmZXJlbmNlICh4MScsIHgxJycpLCBEaWZmZXJlbmNlICh4MicsIHgyJycpIC0+XG4gICAgZXF1YWwgeDEnIHgyJyAmJiBlcXVhbCB4MScnIHgyJydcbiAgfCBQbWFyayAobTEsIHIxKSwgUG1hcmsgKG0yLCByMikgLT5cbiAgICBQbWFyay5lcXVhbCBtMSBtMiAmJiBlcXVhbCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5hbmQgZXFfbGlzdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgW10sIFtdIC0+XG4gICAgdHJ1ZVxuICB8IHgxIDo6IHIxLCB4MiA6OiByMiAtPlxuICAgIGVxdWFsIHgxIHgyICYmIGVxX2xpc3QgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxubGV0IHNlcXVlbmNlID0gZnVuY3Rpb25cbiAgfCBbeF0gLT4geFxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCByZWMgbWVyZ2Vfc2VxdWVuY2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgQWx0ZXJuYXRpdmUgbCcgOjogciAtPlxuICAgIG1lcmdlX3NlcXVlbmNlcyAobCcgQCByKVxuICB8IFNlcXVlbmNlICh4IDo6IHkpIDo6IHIgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgciB3aXRoXG4gICAgICAgIFNlcXVlbmNlICh4JyA6OiB5JykgOjogcicgd2hlbiBlcXVhbCB4IHgnIC0+XG4gICAgICAgIFNlcXVlbmNlIFt4OyBBbHRlcm5hdGl2ZSBbc2VxdWVuY2UgeTsgc2VxdWVuY2UgeSddXSA6OiByJ1xuICAgICAgfCByJyAtPlxuICAgICAgICBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByJ1xuICAgIGVuZFxuICB8IHggOjogciAtPlxuICAgIHggOjogbWVyZ2Vfc2VxdWVuY2VzIHJcblxubW9kdWxlIEEgPSBBdXRvbWF0YVxuXG5sZXQgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyID1cbiAgbWF0Y2gga2luZCwga2luZCcgd2l0aFxuICAgIGBGaXJzdCwgYEZpcnN0IC0+IGNyXG4gIHwgYEZpcnN0LCBrICAgICAgIC0+IEEuc2VxIGlkcyBrIGNyIChBLmVwcyBpZHMpXG4gIHwgIF8gICAgICAgICAgICAgICAtPiBjclxuXG4oKiBYWFggc2hvdWxkIHByb2JhYmx5IGNvbXB1dGUgYSBjYXRlZ29yeSBtYXNrICopXG5sZXQgcmVjIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIChBLmNzdCBpZHMgKHRyYW5zX3NldCBjYWNoZSBjIHMpLCBraW5kKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICAodHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgbCwga2luZClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIGwgd2l0aFxuICAgICAgICBbciddIC0+XG4gICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciwga2luZClcbiAgICAgIHwgbWVyZ2VkX3NlcXVlbmNlcyAtPlxuICAgICAgICAoQS5hbHQgaWRzXG4gICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAoZnVuIHInIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHlcbiAgICAgICAgICAgICAgICAgICAgIHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgICAgICAgICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcilcbiAgICAgICAgICAgICAgbWVyZ2VkX3NlcXVlbmNlcyksXG4gICAgICAgICBraW5kKVxuICAgIGVuZFxuICB8IFJlcGVhdCAocicsIGksIGopIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgbGV0IHJlbSA9XG4gICAgICBtYXRjaCBqIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICBBLnJlcCBpZHMgZ3JlZWR5IGtpbmQnIGNyXG4gICAgICB8IFNvbWUgaiAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggZ3JlZWR5IHdpdGhcbiAgICAgICAgICAgIGBHcmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0Euc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW07IEEuZXBzIGlkc11cbiAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLmVwcyBpZHM7IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKGogLSBpKSBmIChBLmVwcyBpZHMpXG4gICAgaW5cbiAgICAoaXRlciBpIChmdW4gcmVtIC0+IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW0pIHJlbSwga2luZClcbiAgfCBCZWdfb2ZfbGluZSAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBFbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgQmVnX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlciksXG4gICAgIGtpbmQpXG4gIHwgRW5kX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSksXG4gICAgIGtpbmQpXG4gIHwgTm90X2JvdW5kIC0+XG4gICAgKEEuYWx0IGlkcyBbQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKTtcbiAgICAgICAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKV0sXG4gICAgIGtpbmQpXG4gIHwgQmVnX29mX3N0ciAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IEVuZF9vZl9zdHIgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbGFzdG5ld2xpbmUpLCBraW5kKVxuICB8IFN0YXJ0IC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTdG9wIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU2VtIChraW5kJywgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQnIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kJyBraW5kJycgY3IsXG4gICAgIGtpbmQnKVxuICB8IFNlbV9ncmVlZHkgKGdyZWVkeScsIHInKSAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5JyBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IEdyb3VwIChuLCByJykgLT5cbiAgICBpZiBpZ25fZ3JvdXAgdGhlblxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcCA9ICFwb3MgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lcyA6PSAobmFtZSwgcCAvIDIpIDo6ICFuYW1lc1xuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgIGluXG4gICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEubWFyayBpZHMgcCkgKFxuICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3QgY3IgKEEubWFyayBpZHMgKHAgKyAxKSkpLFxuICAgICAgIGtpbmQnKVxuICB8IE5vX2dyb3VwIHInIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIHRydWUgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgTmVzdCByJyAtPlxuICAgIGxldCBiID0gIXBvcyBpblxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGluXG4gICAgbGV0IGUgPSAhcG9zIC0gMSBpblxuICAgIGlmIGUgPCBiIHRoZW5cbiAgICAgIChjciwga2luZCcpXG4gICAgZWxzZVxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEuZXJhc2UgaWRzIGIgZSkgY3IsIGtpbmQnKVxuICB8IERpZmZlcmVuY2UgXyB8IENvbXBsZW1lbnQgXyB8IEludGVyc2VjdGlvbiBfIHwgTm9fY2FzZSBfIHwgQ2FzZSBfIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgUG1hcmsgKGksIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLnBtYXJrIGlkcyBpKSBjciwga2luZCcpXG5cbmFuZCB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBBLmVwcyBpZHNcbiAgfCBbcl0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3InXG4gIHwgciA6OiByZW0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBsZXQgY3InJyA9XG4gICAgICB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByZW0gaW5cbiAgICBpZiBBLmlzX2VwcyBjcicnIHRoZW5cbiAgICAgIGNyJ1xuICAgIGVsc2UgaWYgQS5pc19lcHMgY3InIHRoZW5cbiAgICAgIGNyJydcbiAgICBlbHNlXG4gICAgICBBLnNlcSBpZHMga2luZCcgY3InIGNyJydcblxuKCoqKiogQ2FzZSAqKioqKVxuXG5sZXQgY2FzZV9pbnNlbnMgcyA9XG4gIENzZXQudW5pb24gcyAoQ3NldC51bmlvbiAoQ3NldC5vZmZzZXQgMzIgKENzZXQuaW50ZXIgcyBjdXBwZXIpKVxuICAgICAgICAgICAgICAgICAgKENzZXQub2Zmc2V0ICgtMzIpIChDc2V0LmludGVyIHMgY2xvd2VyKSkpXG5cbmxldCBhc19zZXQgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+IHNcbiAgfCBfICAgICAtPiBhc3NlcnQgZmFsc2VcblxuKCogWFhYIFNob3VsZCBzcGxpdCBhbHRlcm5hdGl2ZXMgaW50byAoMSkgY2hhcnNldHMgYW5kICgyKSBtb3JlXG4gICBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGFsdGVybmF0aXZlIHNob3VsZCB0aGVyZWZvcmUgcHJvYmFibHlcbiAgIGJlIGZsYXR0ZW4gaGVyZSAqKVxubGV0IHJlYyBoYW5kbGVfY2FzZSBpZ25fY2FzZSA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICBTZXQgKGlmIGlnbl9jYXNlIHRoZW4gY2FzZV9pbnNlbnMgcyBlbHNlIHMpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIFNlcXVlbmNlIChMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbCBpblxuICAgIGlmIGlzX2NoYXJzZXQgKEFsdGVybmF0aXZlIGwnKSB0aGVuXG4gICAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKSBDc2V0LmVtcHR5IGwnKVxuICAgIGVsc2VcbiAgICAgIEFsdGVybmF0aXZlIGwnXG4gIHwgUmVwZWF0IChyLCBpLCBqKSAtPlxuICAgIFJlcGVhdCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciwgaSwgailcbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcCBhcyByIC0+XG4gICAgclxuICB8IFNlbSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtIChrLCByJylcbiAgfCBTZW1fZ3JlZWR5IChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW1fZ3JlZWR5IChrLCByJylcbiAgfCBHcm91cCAobiwgcikgLT5cbiAgICBHcm91cCAobiwgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcbiAgfCBOb19ncm91cCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5vX2dyb3VwIHInXG4gIHwgTmVzdCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5lc3QgcidcbiAgfCBDYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSBmYWxzZSByXG4gIHwgTm9fY2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgdHJ1ZSByXG4gIHwgSW50ZXJzZWN0aW9uIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC5pbnRlciBzIChhc19zZXQgcikpIENzZXQuY2FueSBsJylcbiAgfCBDb21wbGVtZW50IGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoQ3NldC5kaWZmIENzZXQuY2FueVxuICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpXG4gICAgICAgICAgICAgIENzZXQuZW1wdHkgbCcpKVxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIFNldCAoQ3NldC5pbnRlciAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSlcbiAgICAgICAgICAgKENzZXQuZGlmZiBDc2V0LmNhbnkgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcicpKSkpXG4gIHwgUG1hcmsgKGkscikgLT4gUG1hcmsgKGksaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcblxuKCoqKiopXG5cbmxldCBjb21waWxlXzEgcmVnZXhwID1cbiAgbGV0IHJlZ2V4cCA9IGhhbmRsZV9jYXNlIGZhbHNlIHJlZ2V4cCBpblxuICBsZXQgYyA9IENvbG9yX21hcC5tYWtlICgpIGluXG4gIGxldCBuZWVkX2xubCA9IGNvbG9yaXplIGMgcmVnZXhwIGluXG4gIGxldCAoY29sb3JzLCBjb2xvcl9yZXByLCBuY29sb3IpID0gQ29sb3JfbWFwLmZsYXR0ZW4gYyBpblxuICBsZXQgbG5sID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgZWxzZSAtMSBpblxuICBsZXQgbmNvbG9yID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgKyAxIGVsc2UgbmNvbG9yIGluXG4gIGxldCBpZHMgPSBBLmNyZWF0ZV9pZHMgKCkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCBuYW1lcyA9IHJlZiBbXSBpblxuICBsZXQgKHIsIGtpbmQpID1cbiAgICB0cmFuc2xhdGUgaWRzXG4gICAgICBgRmlyc3QgZmFsc2UgZmFsc2UgYEdyZWVkeSBwb3MgbmFtZXMgKHJlZiBDc2V0LkNTZXRNYXAuZW1wdHkpIGNvbG9ycyByZWdleHAgaW5cbiAgbGV0IHIgPSBlbmZvcmNlX2tpbmQgaWRzIGBGaXJzdCBraW5kIHIgaW5cbiAgKCpGb3JtYXQuZXByaW50ZiBcIjwlZCAlZD5ALlwiICFpZHMgbmNvbDsqKVxuICBta19yZSB+aW5pdGlhbDpyIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lczooTGlzdC5yZXYgIW5hbWVzKSB+Z3JvdXBfY291bnQ6KCFwb3MgLyAyKVxuXG4oKioqKilcblxubGV0IHJlYyBhbmNob3JlZCA9IGZ1bmN0aW9uXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIExpc3QuZXhpc3RzIGFuY2hvcmVkIGxcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGFuY2hvcmVkIGxcbiAgfCBSZXBlYXQgKHIsIGksIF8pIC0+XG4gICAgaSA+IDAgJiYgYW5jaG9yZWQgclxuICB8IFNldCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0b3BcbiAgfCBJbnRlcnNlY3Rpb24gXyB8IENvbXBsZW1lbnQgXyB8IERpZmZlcmVuY2UgXyAtPlxuICAgIGZhbHNlXG4gIHwgQmVnX29mX3N0ciB8IFN0YXJ0IC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKSB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHIgfCBOZXN0IHJcbiAgfCBDYXNlIHIgfCBOb19jYXNlIHIgfCBQbWFyayAoXywgcikgLT5cbiAgICBhbmNob3JlZCByXG5cbigqKioqKVxuXG50eXBlIHQgPSByZWdleHBcblxubGV0IHN0ciBzID1cbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSBTZXQgKENzZXQuY3NpbmdsZSBzLltpXSkgOjogIWxcbiAgZG9uZTtcbiAgU2VxdWVuY2UgIWxcbmxldCBjaGFyIGMgPSBTZXQgKENzZXQuY3NpbmdsZSBjKVxuXG5sZXQgYWx0ID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBBbHRlcm5hdGl2ZSBsXG5sZXQgc2VxID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCBlbXB0eSA9IGFsdCBbXVxubGV0IGVwc2lsb24gPSBzZXEgW11cbmxldCByZXBuIHIgaSBqID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIjtcbiAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIlxuICAgIHwgXyAtPiAoKVxuICBlbmQ7XG4gIFJlcGVhdCAociwgaSwgailcbmxldCByZXAgciA9IHJlcG4gciAwIE5vbmVcbmxldCByZXAxIHIgPSByZXBuIHIgMSBOb25lXG5sZXQgb3B0IHIgPSByZXBuIHIgMCAoU29tZSAxKVxubGV0IGJvbCA9IEJlZ19vZl9saW5lXG5sZXQgZW9sID0gRW5kX29mX2xpbmVcbmxldCBib3cgPSBCZWdfb2Zfd29yZFxubGV0IGVvdyA9IEVuZF9vZl93b3JkXG5sZXQgd29yZCByID0gc2VxIFtib3c7IHI7IGVvd11cbmxldCBub3RfYm91bmRhcnkgPSBOb3RfYm91bmRcbmxldCBib3MgPSBCZWdfb2Zfc3RyXG5sZXQgZW9zID0gRW5kX29mX3N0clxubGV0IHdob2xlX3N0cmluZyByID0gc2VxIFtib3M7IHI7IGVvc11cbmxldCBsZW9sID0gTGFzdF9lbmRfb2ZfbGluZVxubGV0IHN0YXJ0ID0gU3RhcnRcbmxldCBzdG9wID0gU3RvcFxubGV0IGxvbmdlc3QgciA9IFNlbSAoYExvbmdlc3QsIHIpXG5sZXQgc2hvcnRlc3QgciA9IFNlbSAoYFNob3J0ZXN0LCByKVxubGV0IGZpcnN0IHIgPSBTZW0gKGBGaXJzdCwgcilcbmxldCBncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBHcmVlZHksIHIpXG5sZXQgbm9uX2dyZWVkeSByID0gU2VtX2dyZWVkeSAoYE5vbl9ncmVlZHksIHIpXG5sZXQgZ3JvdXAgP25hbWUgciA9IEdyb3VwIChuYW1lLCByKVxubGV0IG5vX2dyb3VwIHIgPSBOb19ncm91cCByXG5sZXQgbmVzdCByID0gTmVzdCByXG5sZXQgbWFyayByID0gbGV0IGkgPSBQbWFyay5nZW4gKCkgaW4gKGksUG1hcmsgKGkscikpXG5cbmxldCBzZXQgc3RyID1cbiAgbGV0IHMgPSByZWYgQ3NldC5lbXB0eSBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgcyA6PSBDc2V0LnVuaW9uIChDc2V0LmNzaW5nbGUgc3RyLltpXSkgIXNcbiAgZG9uZTtcbiAgU2V0ICFzXG5cbmxldCByZyBjIGMnID0gU2V0IChjc2VxIGMgYycpXG5cbmxldCBpbnRlciBsID1cbiAgbGV0IHIgPSBJbnRlcnNlY3Rpb24gbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuaW50ZXJcIlxuXG5sZXQgY29tcGwgbCA9XG4gIGxldCByID0gQ29tcGxlbWVudCBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5jb21wbFwiXG5cbmxldCBkaWZmIHIgcicgPVxuICBsZXQgcicnID0gRGlmZmVyZW5jZSAociwgcicpIGluXG4gIGlmIGlzX2NoYXJzZXQgcicnIHRoZW5cbiAgICByJydcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuZGlmZlwiXG5cbmxldCBhbnkgPSBTZXQgQ3NldC5jYW55XG5sZXQgbm90bmwgPSBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnkgKENzZXQuY3NpbmdsZSAnXFxuJykpXG5cbmxldCBsb3dlciA9IGFsdCBbcmcgJ2EnICd6JzsgY2hhciAnXFwxODEnOyByZyAnXFwyMjMnICdcXDI0Nic7IHJnICdcXDI0OCcgJ1xcMjU1J11cbmxldCB1cHBlciA9IGFsdCBbcmcgJ0EnICdaJzsgcmcgJ1xcMTkyJyAnXFwyMTQnOyByZyAnXFwyMTYnICdcXDIyMiddXG5sZXQgYWxwaGEgPSBhbHQgW2xvd2VyOyB1cHBlcjsgY2hhciAnXFwxNzAnOyBjaGFyICdcXDE4NiddXG5sZXQgZGlnaXQgPSByZyAnMCcgJzknXG5sZXQgYWxudW0gPSBhbHQgW2FscGhhOyBkaWdpdF1cbmxldCB3b3JkYyA9IGFsdCBbYWxudW07IGNoYXIgJ18nXVxubGV0IGFzY2lpID0gcmcgJ1xcMDAwJyAnXFwxMjcnXG5sZXQgYmxhbmsgPSBzZXQgXCJcXHQgXCJcbmxldCBjbnRybCA9IGFsdCBbcmcgJ1xcMDAwJyAnXFwwMzEnOyByZyAnXFwxMjcnICdcXDE1OSddXG5sZXQgZ3JhcGggPSBhbHQgW3JnICdcXDAzMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHByaW50ID0gYWx0IFtyZyAnXFwwMzInICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwdW5jdCA9XG4gIGFsdCBbcmcgJ1xcMDMzJyAnXFwwNDcnOyByZyAnXFwwNTgnICdcXDA2NCc7IHJnICdcXDA5MScgJ1xcMDk2JztcbiAgICAgICByZyAnXFwxMjMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMTY5JzsgcmcgJ1xcMTcxJyAnXFwxODAnO1xuICAgICAgIHJnICdcXDE4MicgJ1xcMTg1JzsgcmcgJ1xcMTg3JyAnXFwxOTEnOyBjaGFyICdcXDIxNSc7IGNoYXIgJ1xcMjQ3J11cbmxldCBzcGFjZSA9IGFsdCBbY2hhciAnICc7IHJnICdcXDAwOScgJ1xcMDEzJ11cbmxldCB4ZGlnaXQgPSBhbHQgW2RpZ2l0OyByZyAnYScgJ2YnOyByZyAnQScgJ0YnXVxuXG5sZXQgY2FzZSByID0gQ2FzZSByXG5sZXQgbm9fY2FzZSByID0gTm9fY2FzZSByXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZSByID1cbiAgY29tcGlsZV8xIChcbiAgICBpZiBhbmNob3JlZCByIHRoZW5cbiAgICAgIGdyb3VwIHJcbiAgICBlbHNlXG4gICAgICBzZXEgW3Nob3J0ZXN0IChyZXAgYW55KTsgZ3JvdXAgcl1cbiAgKVxuXG5sZXQgZXhlY19pbnRlcm5hbCBuYW1lID8ocG9zPTApID8obGVuID0gLTEpIH5wYXJ0aWFsIH5ncm91cHMgcmUgcyA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgLTEgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBuYW1lO1xuICBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlblxuXG5sZXQgZXhlYyA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjXCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZXhlY19vcHQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY19vcHRcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlXG4gICAgICAgICAgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IFNvbWUgc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IE5vbmVcblxubGV0IGV4ZWNwID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOmZhbHNlIFwiUmUuZXhlY3BcIiA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggX3N1YnN0ciAtPiB0cnVlXG4gIHwgXyAgICAgICAgICAgICAtPiBmYWxzZVxuXG5sZXQgZXhlY19wYXJ0aWFsID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfIC0+IGBGdWxsXG4gIHwgUnVubmluZyBfIC0+IGBQYXJ0aWFsXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubGV0IGV4ZWNfcGFydGlhbF9kZXRhaWxlZCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxfZGV0YWlsZWRcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBncm91cCAtPiBgRnVsbCBncm91cFxuICB8IFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH0gLT4gYFBhcnRpYWwgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZVxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbm1vZHVsZSBNYXJrID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gUG1hcmsudFxuXG4gIGxldCB0ZXN0IChnIDogR3JvdXAudCkgcCA9XG4gICAgUG1hcmsuU2V0Lm1lbSBwIGcucG1hcmtzXG5cbiAgbGV0IGFsbCAoZyA6IEdyb3VwLnQpID0gZy5wbWFya3NcblxuICBtb2R1bGUgU2V0ID0gUG1hcmsuU2V0XG5cbiAgbGV0IGVxdWFsID0gUG1hcmsuZXF1YWxcblxuICBsZXQgY29tcGFyZSA9IFBtYXJrLmNvbXBhcmVcblxuZW5kXG5cbnR5cGUgc3BsaXRfdG9rZW4gPVxuICBbIGBUZXh0IG9mIHN0cmluZ1xuICB8IGBEZWxpbSBvZiBHcm91cC50XG4gIF1cblxubW9kdWxlIFJzZXEgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAoKiBpbmRleCBvZiB0aGUgZmlyc3QgcG9zaXRpb24gd2UgZG8gbm90IGNvbnNpZGVyLlxuICAgICAgICFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQgKilcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGl0ZXJhdGUgb24gbWF0Y2hlcy4gV2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBuZXh0XG4gICAgICAgb25lIGp1c3QgYWZ0ZXIgaXRzIGVuZCAqKVxuICAgIGxldCByZWMgYXV4IHBvcyAoKSA9XG4gICAgICBpZiBwb3MgPj0gbGltaXRcbiAgICAgIHRoZW4gU2VxLk5pbCAoKiBubyBtb3JlIG1hdGNoZXMgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzXG4gICAgICAgICAgICAgICAgfnBvcyB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoc3Vic3RyLCBhdXggcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgX1xuICAgICAgICB8IEZhaWxlZCAtPiBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggcG9zXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBhbGwgP3BvcyA/bGVuIHJlIHNcbiAgICB8PiBTZXEubWFwIChmdW4gc3ViIC0+IEdyb3VwLmdldCBzdWIgMClcblxuICBsZXQgc3BsaXRfZnVsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpOiBzdGFydCBvZiBkZWxpbWl0ZWQgc3RyaW5nXG4gICAgICAgcG9zOiBmaXJzdCBwb3NpdGlvbiBhZnRlciBsYXN0IG1hdGNoIG9mIFtyZV1cbiAgICAgICBsaW1pdDogZmlyc3QgaW5kZXggd2UgaWdub3JlICghcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50KSAqKVxuICAgIGxldCBwb3MwID0gcG9zIGluXG4gICAgbGV0IHJlYyBhdXggc3RhdGUgaSBwb3MgKCkgPSBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IGBJZGxlIHdoZW4gcG9zID49IGxpbWl0IC0+XG4gICAgICAgIGlmIGkgPCBsaW1pdCB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgc3ViLCBhdXggc3RhdGUgKGkrMSkgcG9zKVxuICAgICAgICApIGVsc2UgU2VxLk5pbFxuICAgICAgfCBgSWRsZSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIGxldCBvbGRfaSA9IGkgaW5cbiAgICAgICAgICBsZXQgaSA9IHAyIGluXG4gICAgICAgICAgaWYgcDEgPiBwb3MwIHRoZW4gKFxuICAgICAgICAgICAgKCogc3RyaW5nIGRvZXMgbm90IHN0YXJ0IGJ5IGEgZGVsaW1pdGVyICopXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBvbGRfaSAocDEgLSBvbGRfaSkgaW5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGBZaWVsZCAoYERlbGltIHN1YnN0cikgaW5cbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgICAgKSBlbHNlIFNlcS5Db25zIChgRGVsaW0gc3Vic3RyLCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfIC0+IFNlcS5OaWxcbiAgICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgICBpZiBpIDwgbGltaXRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICAgICgqIHlpZWxkIGxhc3Qgc3RyaW5nICopXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGxpbWl0IHBvcylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgZW5kXG4gICAgICB8IGBZaWVsZCB4IC0+XG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggYElkbGUgaSBwb3MpXG4gICAgaW5cbiAgICBhdXggYElkbGUgcG9zIHBvc1xuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGxldCBzZXEgPSBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgc2VxICgpID0gbWF0Y2ggc2VxICgpICB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gU2VxLk5pbFxuICAgICAgfCBTZXEuQ29ucyAoYERlbGltIF8sIHRsKSAtPiBmaWx0ZXIgdGwgKClcbiAgICAgIHwgU2VxLkNvbnMgKGBUZXh0IHMsdGwpIC0+IFNlcS5Db25zIChzLCBmaWx0ZXIgdGwpXG4gICAgaW4gZmlsdGVyIHNlcVxuZW5kXG5cbm1vZHVsZSBSbGlzdCA9IHN0cnVjdFxuICBsZXQgbGlzdF9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgbGlzdCA9XG4gICAgU2VxLmZvbGRfbGVmdCAoZnVuIGwgeCAtPiB4IDo6IGwpIFtdIHMgfD4gTGlzdC5yZXZcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuZW5kXG5cbm1vZHVsZSBHZW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSBnZW4gPSB1bml0IC0+ICdhIG9wdGlvblxuICBsZXQgZ2VuX29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBnZW4gPVxuICAgIGxldCByID0gcmVmIHMgaW5cbiAgICBmdW4gKCkgLT4gbWF0Y2ggIXIgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICAgIHwgU2VxLkNvbnMgKHgsIHRsKSAtPlxuICAgICAgICByIDo9IHRsO1xuICAgICAgICBTb21lIHhcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcbmVuZFxuXG5sZXQgcmVwbGFjZSA/KHBvcz0wKSA/bGVuID8oYWxsPXRydWUpIHJlIH5mIHMgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgIHwgU29tZSBsIC0+XG4gICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgICAgIHBvcytsXG4gIGluXG4gICgqIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIHdyaXRlIHRoZSByZXN1bHQgKilcbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgKCogaXRlcmF0ZSBvbiBtYXRjaGVkIHN1YnN0cmluZ3MuICopXG4gIGxldCByZWMgaXRlciBwb3MgPVxuICAgIGlmIHBvcyA8IGxpbWl0XG4gICAgdGhlblxuICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3MgfmxlbjoobGltaXQtcG9zKSB3aXRoXG4gICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICgqIGFkZCBzdHJpbmcgYmV0d2VlbiBwcmV2aW91cyBtYXRjaCBhbmQgY3VycmVudCBtYXRjaCAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKHAxLXBvcyk7XG4gICAgICAgICgqIHdoYXQgc2hvdWxkIHdlIHJlcGxhY2UgdGhlIG1hdGNoZWQgZ3JvdXAgd2l0aD8gKilcbiAgICAgICAgbGV0IHJlcGxhY2luZyA9IGYgc3Vic3RyIGluXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiByZXBsYWNpbmc7XG4gICAgICAgIGlmIGFsbCB0aGVuXG4gICAgICAgICAgKCogaWYgd2UgbWF0Y2hlZCBhIG5vbi1jaGFyIGUuZy4gXiB3ZSBtdXN0IG1hbnVhbGx5IGFkdmFuY2UgYnkgMSAqKVxuICAgICAgICAgIGl0ZXIgKFxuICAgICAgICAgICAgaWYgcDE9cDIgdGhlbiAoXG4gICAgICAgICAgICAgICgqIGEgbm9uIGNoYXIgY291bGQgYmUgcGFzdCB0aGUgZW5kIG9mIHN0cmluZy4gZS5nLiAkICopXG4gICAgICAgICAgICAgIGlmIHAyIDwgbGltaXQgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmIHMuW3AyXTtcbiAgICAgICAgICAgICAgcDIrMVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHAyKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcDIgKGxpbWl0LXAyKVxuICAgICAgfCBSdW5uaW5nIF8gLT4gKClcbiAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAobGltaXQtcG9zKVxuICBpblxuICBpdGVyIHBvcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcmVwbGFjZV9zdHJpbmcgP3BvcyA/bGVuID9hbGwgcmUgfmJ5IHMgPVxuICByZXBsYWNlID9wb3MgP2xlbiA/YWxsIHJlIHMgfmY6KGZ1biBfIC0+IGJ5KVxuXG5sZXQgd2l0bmVzcyB0ID1cbiAgbGV0IHJlYyB3aXRuZXNzID0gZnVuY3Rpb25cbiAgICB8IFNldCBjIC0+IFN0cmluZy5tYWtlIDEgKENoYXIuY2hyIChDc2V0LnBpY2sgYykpXG4gICAgfCBTZXF1ZW5jZSB4cyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHdpdG5lc3MgeHMpXG4gICAgfCBBbHRlcm5hdGl2ZSAoeCA6OiBfKSAtPiB3aXRuZXNzIHhcbiAgICB8IEFsdGVybmF0aXZlIFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgUmVwZWF0IChyLCBmcm9tLCBfdG8pIC0+XG4gICAgICBsZXQgdyA9IHdpdG5lc3MgciBpblxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHcgKiBmcm9tKSBpblxuICAgICAgZm9yIF9pPTEgdG8gZnJvbSBkb1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHdcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgTm9fY2FzZSByIC0+IHdpdG5lc3MgclxuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSAoXywgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBHcm91cCAoXywgcilcbiAgICB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgclxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgUG1hcmsgKF8sIHIpXG4gICAgfCBDYXNlIHJcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpIC0+IHdpdG5lc3MgclxuICAgIHwgQmVnX29mX2xpbmVcbiAgICB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZFxuICAgIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZVxuICAgIHwgU3RhcnRcbiAgICB8IFN0b3BcbiAgICB8IEVuZF9vZl9zdHIgLT4gXCJcIiBpblxuICB3aXRuZXNzIChoYW5kbGVfY2FzZSBmYWxzZSB0KVxuXG5tb2R1bGUgU2VxID0gUnNlcVxubW9kdWxlIExpc3QgPSBSbGlzdFxubW9kdWxlIEdyb3VwID0gR3JvdXBcblxuKCoqIHsyIERlcHJlY2F0ZWQgZnVuY3Rpb25zfSAqKVxuXG5sZXQgc3BsaXRfZnVsbF9zZXEgPSBTZXEuc3BsaXRfZnVsbFxubGV0IHNwbGl0X3NlcSA9IFNlcS5zcGxpdFxubGV0IG1hdGNoZXNfc2VxID0gU2VxLm1hdGNoZXNcbmxldCBhbGxfc2VxID0gU2VxLmFsbFxuXG50eXBlICdhIGdlbiAgICAgICAgPSAnYSBHZW4uZ2VuXG5sZXQgYWxsX2dlbiAgICAgICAgPSBHZW4uYWxsXG5sZXQgbWF0Y2hlc19nZW4gICAgPSBHZW4ubWF0Y2hlc1xubGV0IHNwbGl0X2dlbiAgICAgID0gR2VuLnNwbGl0XG5sZXQgc3BsaXRfZnVsbF9nZW4gPSBHZW4uc3BsaXRfZnVsbFxuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcblxubGV0IGdldCA9IEdyb3VwLmdldFxubGV0IGdldF9vZnMgPSBHcm91cC5vZmZzZXRcbmxldCBnZXRfYWxsID0gR3JvdXAuYWxsXG5sZXQgZ2V0X2FsbF9vZnMgPSBHcm91cC5hbGxfb2Zmc2V0XG5sZXQgdGVzdCA9IEdyb3VwLnRlc3RcblxudHlwZSBtYXJraWQgPSBNYXJrLnRcblxubGV0IG1hcmtlZCA9IE1hcmsudGVzdFxubGV0IG1hcmtfc2V0ID0gTWFyay5hbGxcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqXG5JbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyOlxuLSBkb2VzIG5vdCBleGlzdHNcbi0gaXMgYSBsZXR0ZXJcbi0gaXMgbm90IGEgbGV0dGVyXG4tIGlzIGEgbmV3bGluZVxuLSBpcyBsYXN0IG5ld2xpbmVcblxuQmVnaW5uaW5nIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgbGluZTpcbi0gcHJldmlvdXMgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBidWZmZXI6XG4tIHByZXZpb3VzIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBidWZmZXJcbi0gY3VycmVudCBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgbGluZVxuLSBjdXJyZW50IGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuKilcblxuKCpcblJlcDogZSA9IFQsZSB8ICgpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSBjb21tYSAoc2hvcnRlc3QvbG9uZ2VzdC9maXJzdClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIHVuaW9uIChncmVlZHkvbm9uLWdyZWVkeSlcblxuQm91bmRlZCByZXBldGl0aW9uXG4gIGF7MCwzfSA9IChhLChhLGE/KT8pP1xuKilcblxudHlwZSBncm91cHMgPSBHcm91cC50XG5cbmluY2x1ZGUgUmxpc3RcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IHRlc3QyIGMgYycgPSAhaSArIDEgPCBsICYmIHMuWyFpXSA9IGMgJiYgcy5bIWkgKyAxXSA9IGMnIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdDIgYyBjJyA9IGxldCByID0gdGVzdDIgYyBjJyBpbiBpZiByIHRoZW4gaSA6PSAhaSArIDI7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQyICdcXFxcJyAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdDIgJ1xcXFwnICd8JyB8fCB0ZXN0MiAnXFxcXCcgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgUmUuYm9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBSZS5lb2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0MiAnXFxcXCcgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ2AnIHRoZW5cbiAgICAgICAgUmUuYm9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnXFwnJyB0aGVuXG4gICAgICAgIFJlLmVvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz0nIHRoZW5cbiAgICAgICAgUmUuc3RhcnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdiJyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnQicgdGhlblxuICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuXG4gICAgICAgIFJlLmJvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz4nIHRoZW5cbiAgICAgICAgUmUuZW93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAndycgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdXJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICdbJyB8ICddJyB8ICcuJyB8ICdeJyB8ICckJyB8ICdcXFxcJyBhcyBjIC0+XG4gICAgICAgICAgICBSZS5jaGFyIGNcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgYyAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgZ2V0ICgpXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG5sZXQgcmUgPyhjYXNlID0gdHJ1ZSkgcyA9IGxldCByID0gcGFyc2UgcyBpbiBpZiBjYXNlIHRoZW4gciBlbHNlIFJlLm5vX2Nhc2UgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KGNhc2UgPSB0cnVlKSBzID0gY29tcGlsZSAocmUgfmNhc2UgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKilcbigqICBsaW5raW5nIGV4Y2VwdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kaWZpZWQgYnkgSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyIGZvciBpbnRlZ3JhdGlvbiBpbiBSRSAqKVxuXG4oKiAkSWQ6IHJlX3N0ci5tbCx2IDEuMyAyMDAyLzA3LzAzIDE1OjQ3OjU0IHZvdWlsbG9uIEV4cCAkICopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxudHlwZSByZWdleHAgPVxuICB7IHJlOiBSZS50XG4gIDsgbXRjaDogUmUucmUgTGF6eS50XG4gIDsgc3JjaDogUmUucmUgTGF6eS50IH1cblxubGV0IGNvbXBpbGVfcmVnZXhwIHMgYyA9XG4gIGxldCByZSA9IEVtYWNzLnJlIH5jYXNlOihub3QgYykgcyBpblxuICB7IHJlXG4gIDsgbXRjaCA9IGxhenkgKFJlLmNvbXBpbGUgKFJlLnNlcSBbUmUuc3RhcnQ7IHJlXSkpXG4gIDsgc3JjaCA9IGxhenkgKFJlLmNvbXBpbGUgcmUpIH1cblxubGV0IHN0YXRlID0gcmVmIE5vbmVcblxubGV0IHN0cmluZ19tYXRjaCByZSBzIHAgPVxuICB0cnlcbiAgICBzdGF0ZSA6PSBTb21lIChSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBmYWxzZVxuXG5sZXQgc3RyaW5nX3BhcnRpYWxfbWF0Y2ggcmUgcyBwID1cbiAgbWF0Y2hcbiAgICBSZS5leGVjX3BhcnRpYWwgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHNcbiAgd2l0aFxuICAgIGBGdWxsICAgICAtPiBzdHJpbmdfbWF0Y2ggcmUgcyBwXG4gIHwgYFBhcnRpYWwgIC0+IHRydWVcbiAgfCBgTWlzbWF0Y2ggLT4gZmFsc2VcblxubGV0IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5zcmNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgZnN0IChSZS5Hcm91cC5vZmZzZXQgcmVzIDApXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBzZWFyY2hfYmFja3dhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBwXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBpZiBwID0gMCB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlXG4gICAgICBzZWFyY2hfYmFja3dhcmQgcmUgcyAocCAtIDEpXG5cbmxldCB2YWxpZF9ncm91cCBuID1cbiAgbiA+PSAwICYmIG4gPCAxMCAmJiAoXG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbSAtPiBuIDwgUmUuR3JvdXAubmJfZ3JvdXBzIG1cbiAgKVxuXG5sZXQgb2Zmc2V0X2dyb3VwIGkgPVxuICBtYXRjaCAhc3RhdGUgd2l0aFxuICB8IFNvbWUgbSAtPiBSZS5Hcm91cC5vZmZzZXQgbSBpXG4gIHwgTm9uZSAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZ3JvdXBfbGVuIGkgPVxuICB0cnlcbiAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIGkgaW5cbiAgICBlIC0gYlxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIDBcblxubGV0IHJlYyByZXBsX2xlbmd0aCByZXBsIHAgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBpZiByZXBsLltwXSA8PiAnXFxcXCcgdGhlblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIChxICsgMSkgbGVuXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHAgPSBwICsgMSBpblxuICAgICAgaWYgcCA9IGxlbiB0aGVuIGZhaWx3aXRoIFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCI7XG4gICAgICBsZXQgcSA9XG4gICAgICAgIG1hdGNoIHJlcGwuW3BdIHdpdGhcbiAgICAgICAgfCAnXFxcXCcgLT4gcSArIDFcbiAgICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gcSArIGdyb3VwX2xlbiAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgICB8IF8gLT4gcSArIDIgaW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSBxIGxlblxuICAgIGVuZFxuICBlbmQgZWxzZVxuICAgIHFcblxubGV0IHJlYyByZXBsYWNlIG9yaWcgcmVwbCBwIHJlcyBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGxldCBjID0gcmVwbC5bcF0gaW5cbiAgICBpZiBjIDw+ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBCeXRlcy5zZXQgcmVzIHEgYztcbiAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMSkgcmVzIChxICsgMSkgbGVuXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIHJlcGwuW3AgKyAxXSB3aXRoXG4gICAgICAgICdcXFxcJyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDEpIGxlblxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgbGV0IGQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBlIC0gYiBpblxuICAgICAgICAgICAgaWYgZCA+IDAgdGhlbiBTdHJpbmcuYmxpdCBvcmlnIGIgcmVzIHEgZDtcbiAgICAgICAgICAgIGRcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgMFxuICAgICAgICBpblxuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIGQpIGxlblxuICAgICAgfCBjIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIEJ5dGVzLnNldCByZXMgKHEgKyAxKSBjO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDIpIGxlblxuICAgIGVuZFxuICBlbmRcblxubGV0IHJlcGxhY2VtZW50X3RleHQgcmVwbCBvcmlnID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcmVwbCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChyZXBsX2xlbmd0aCByZXBsIDAgMCBsZW4pIGluXG4gIHJlcGxhY2Ugb3JpZyByZXBsIDAgcmVzIDAgKFN0cmluZy5sZW5ndGggcmVwbCk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHN0cmluZ19iZWZvcmUgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgZmlyc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgbGFzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgKFN0cmluZy5sZW5ndGggcyAtIG4pIG5cblxubGV0IHJlZ2V4cCBlID0gY29tcGlsZV9yZWdleHAgZSBmYWxzZVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBlID0gY29tcGlsZV9yZWdleHAgZSB0cnVlXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgZmFsc2VcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgdHJ1ZVxuXG5sZXQgZ3JvdXBfYmVnaW5uaW5nIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfYmVnaW5uaW5nXCI7XG4gIGxldCBwb3MgPSBmc3QgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IGdyb3VwX2VuZCBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2VuZFwiO1xuICBsZXQgcG9zID0gc25kIChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBtYXRjaGVkX2dyb3VwIG4gdHh0ID1cbiAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBuIGluXG4gIFN0cmluZy5zdWIgdHh0IGIgKGUgLSBiKVxuXG5sZXQgcmVwbGFjZV9tYXRjaGVkIHJlcGwgbWF0Y2hlZCA9IHJlcGxhY2VtZW50X3RleHQgcmVwbCBtYXRjaGVkXG5cbmxldCBtYXRjaF9iZWdpbm5pbmcgKCkgPSBncm91cF9iZWdpbm5pbmcgMFxuYW5kIG1hdGNoX2VuZCAoKSA9IGdyb3VwX2VuZCAwXG5hbmQgbWF0Y2hlZF9zdHJpbmcgdHh0ID0gbWF0Y2hlZF9ncm91cCAwIHR4dFxuXG5sZXQgc3Vic3RpdHV0ZV9maXJzdCBleHByIHJlcGxfZnVuIHRleHQgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IDAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW3N0cmluZ19iZWZvcmUgdGV4dCBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbF9mdW4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfYWZ0ZXIgdGV4dCAobWF0Y2hfZW5kICgpKV1cbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0ZXh0XG5cbmxldCBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIHJlcGxfZnVuIHRleHQgPVxuICBsZXQgcmVjIHJlcGxhY2UgYWNjdSBzdGFydCBsYXN0X3dhc19lbXB0eSA9XG4gICAgbGV0IHN0YXJ0cG9zID0gaWYgbGFzdF93YXNfZW1wdHkgdGhlbiBzdGFydCArIDEgZWxzZSBzdGFydCBpblxuICAgIGlmIHN0YXJ0cG9zID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCBzdGFydHBvcyB3aXRoXG4gICAgICB8IHBvcyAtPlxuICAgICAgICBsZXQgZW5kX3BvcyA9IG1hdGNoX2VuZCAoKSBpblxuICAgICAgICBsZXQgcmVwbF90ZXh0ID0gcmVwbF9mdW4gdGV4dCBpblxuICAgICAgICByZXBsYWNlIChyZXBsX3RleHQgOjogU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgZW5kX3BvcyAoZW5kX3BvcyA9IHBvcylcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiAocmVwbGFjZSBbXSAwIGZhbHNlKSlcblxubGV0IGdsb2JhbF9yZXBsYWNlIGV4cHIgcmVwbCB0ZXh0ID1cbiAgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5hbmQgcmVwbGFjZV9maXJzdCBleHByIHJlcGwgdGV4dCA9XG4gIHN1YnN0aXR1dGVfZmlyc3QgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5cbmxldCBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyByZSBzIHAgPVxuICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgcmUgcyBwIGluXG4gIGlmIG1hdGNoX2VuZCAoKSA+IHAgdGhlblxuICAgIHBvc1xuICBlbHNlIGlmIHAgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIHNlYXJjaF9mb3J3YXJkIHJlIHMgKHAgKyAxKVxuICBlbHNlXG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgc3RhcnQgPVxuICAgIGlmIHN0cmluZ19tYXRjaCBleHByIHRleHQgMCB0aGVuIG1hdGNoX2VuZCAoKSBlbHNlIDAgaW5cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIHN0YXJ0IG51bSlcblxubGV0IHNwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IDBcblxubGV0IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIGlmIHRleHQgPSBcIlwiIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gICAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgc3BsaXRfZGVsaW0gZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgMFxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nIHwgRGVsaW0gb2Ygc3RyaW5nXG5cbmxldCBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBsZXQgcyA9IG1hdGNoZWRfc3RyaW5nIHRleHQgaW5cbiAgICAgICAgaWYgcG9zID4gc3RhcnQgdGhlblxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjpcbiAgICAgICAgICAgICAgICAgVGV4dCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3MgLSBzdGFydCkpIDo6XG4gICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6IGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBmdWxsX3NwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgMFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBlbmNsb3NlZCA9XG4gIHwgQ2hhciBvZiBjaGFyXG4gIHwgUmFuZ2Ugb2YgY2hhciAqIGNoYXJcblxudHlwZSBwaWVjZSA9XG4gIHwgRXhhY3RseSBvZiBjaGFyXG4gIHwgQW55X29mIG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBBbnlfYnV0IG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBPbmVcbiAgfCBNYW55XG4gIHwgTWFueU1hbnlcblxudHlwZSB0ID0gcGllY2UgbGlzdFxuXG5sZXQgb2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcyA6IHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHJlYWQgYyA9XG4gICAgbGV0IHIgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICAgIGlmIHIgdGhlbiBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gICgqKlxuICAgW3JlYWRfYWhlYWQgcGF0dGVybl0gd2lsbCBhdHRlbXB0IHRvIHJlYWQgW3BhdHRlcm5dIGFuZCB3aWxsIHJldHVybiBbdHJ1ZV0gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwuXG4gICBJZiBpdCBmYWlscywgaXQgd2lsbCByZXR1cm4gW2ZhbHNlXSBhbmQgbm90IGluY3JlbWVudCB0aGUgcmVhZCBpbmRleC5cbiAgKilcbiAgbGV0IHJlYWRfYWhlYWQgcGF0dGVybiA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIGluXG4gICAgKCogaWYgdGhlIHBhdHRlcm4gd2UgYXJlIGxvb2tpbmcgZm9yIGV4ZWVkcyB0aGUgcmVtYWluaW5nIGxlbmd0aCBvZiBzLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHkgKilcbiAgICBpZiAhaSArIHBhdHRlcm5fbGVuID49IGwgdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAwIHRvIHBhdHRlcm5fbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBmb3VuZCA9IG5vdCAoZW9zICgpKSAmJiBzLlshaSArIGpdID0gcGF0dGVybi5bal0gaW5cbiAgICAgICAgICBpZiBub3QgZm91bmQgdGhlbiByYWlzZV9ub3RyYWNlIEV4aXQ7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGkgOj0gIWkgKyBwYXR0ZXJuX2xlbjtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCB8IEV4aXQgIC0+IGZhbHNlXG4gIGluXG5cbiAgbGV0IGNoYXIgKCkgPVxuICAgIGlnbm9yZSAocmVhZCAnXFxcXCcgOiBib29sKTtcbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgciA9IHMuWyFpXSBpblxuICAgIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgbGV0IGVuY2xvc2VkICgpIDogZW5jbG9zZWQgbGlzdCA9XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgKCogVGhpcyByZXR1cm5zIHRoZSBsaXN0IGluIHJldmVyc2Ugb3JkZXIsIGJ1dCBvcmRlciBpc24ndCBpbXBvcnRhbnQgYW55d2F5ICopXG4gICAgICBpZiBzIDw+IFtdICYmIHJlYWQgJ10nXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICAgIGlmIG5vdCAocmVhZCAnLScpXG4gICAgICAgIHRoZW4gbG9vcCAoQ2hhciBjIDo6IHMpXG4gICAgICAgIGVsc2UgaWYgcmVhZCAnXSdcbiAgICAgICAgdGhlbiBDaGFyIGMgOjogQ2hhciAnLScgOjogc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGxvb3AgKFJhbmdlIChjLCBjJykgOjogcylcbiAgICBpblxuICAgIGxvb3AgW11cbiAgaW5cblxuICBsZXQgcGllY2UgKCkgPVxuICAgIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkX2FoZWFkIFwiLyoqXCIgJiYgbm90IChlb3MgKCkpXG4gICAgdGhlbiBNYW55TWFueVxuICAgIGVsc2UgaWYgcmVhZCAnKidcbiAgICB0aGVuIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkICcqJ1xuICAgICAgdGhlbiBNYW55TWFueVxuICAgICAgZWxzZSBNYW55XG4gICAgZWxzZSBpZiByZWFkICc/J1xuICAgIHRoZW4gT25lXG4gICAgZWxzZSBpZiBub3QgKHJlYWQgJ1snKVxuICAgIHRoZW4gRXhhY3RseSAoY2hhciAoKSlcbiAgICBlbHNlIGlmIHJlYWQgJ14nIHx8IHJlYWQgJyEnXG4gICAgdGhlbiBBbnlfYnV0IChlbmNsb3NlZCAoKSlcbiAgICBlbHNlIEFueV9vZiAoZW5jbG9zZWQgKCkpXG4gIGluXG5cbiAgbGV0IHJlYyBsb29wIHBpZWNlcyA9XG4gICAgaWYgZW9zICgpXG4gICAgdGhlbiBMaXN0LnJldiBwaWVjZXNcbiAgICBlbHNlIGxvb3AgKHBpZWNlICgpIDo6IHBpZWNlcylcbiAgaW5cblxuICBsb29wIFtdXG5cbmxldCBtdWwgbCBsJyA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biBzIC0+IExpc3QubWFwIChmdW4gcycgLT4gcyBeIHMnKSBsJykgbClcblxubGV0IGV4cGxvZGUgc3RyID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGV4cGwgaW5uZXIgcyBpIGFjYyBiZWcgPVxuICAgIGlmIGkgPj0gbCB0aGVuIGJlZ2luXG4gICAgICBpZiBpbm5lciB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0sIGkpXG4gICAgZW5kIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgfCAnXFxcXCcgLT4gZXhwbCBpbm5lciBzIChpICsgMikgYWNjIGJlZ1xuICAgICAgfCAneycgLT5cbiAgICAgICAgbGV0ICh0LCBpJykgPSBleHBsIHRydWUgKGkgKyAxKSAoaSArIDEpIFtdIFtcIlwiXSBpblxuICAgICAgICBleHBsIGlubmVyIGknIGknIGFjY1xuICAgICAgICAgIChtdWwgYmVnIChtdWwgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gdCkpXG4gICAgICB8ICcsJyB3aGVuIGlubmVyIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgKGkgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MpIFtcIlwiXVxuICAgICAgfCAnfScgd2hlbiBpbm5lciAtPlxuICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYywgaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgZXhwbCBpbm5lciBzIChpICsgMSkgYWNjIGJlZ1xuICBpblxuICBMaXN0LnJldiAoZnN0IChleHBsIGZhbHNlIDAgMCBbXSBbXCJcIl0pKVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlX3BpZWNlcyAgICAgICAgICAgICAgICA6IFJlLnQgbGlzdDsgICgqIGxhc3QgcGllY2UgYXQgaGVhZCBvZiBsaXN0LiAqKVxuICAgIHJlbWFpbmluZyAgICAgICAgICAgICAgICA6IHBpZWNlIGxpc3Q7ICgqIGxhc3QgcGllY2UgYXQgdGFpbCBvZiBsaXN0LiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gICA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiBvciBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyICcvJyAqKVxuICAgIHBhdGhuYW1lICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gICAgbWF0Y2hfYmFja3NsYXNoZXMgICAgICAgIDogYm9vbDtcbiAgICBwZXJpb2QgICAgICAgICAgICAgICAgICAgOiBib29sO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+cGVyaW9kIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgcmVtYWluaW5nID1cbiAgICB7XG4gICAgICByZV9waWVjZXMgPSBbXTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSB0cnVlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIHBhdGhuYW1lO1xuICAgICAgbWF0Y2hfYmFja3NsYXNoZXM7XG4gICAgICBwZXJpb2Q7XG4gICAgICByZW1haW5pbmc7XG4gICAgfVxuXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgdCA9XG4gICAgdC5wZXJpb2QgJiYgKFxuICAgICAgdC5hbV9hdF9zdGFydF9vZl9wYXR0ZXJuIHx8XG4gICAgICAodC5hbV9hdF9zdGFydF9vZl9jb21wb25lbnQgJiYgdC5wYXRobmFtZSlcbiAgICApXG5cbiAgbGV0IGV4cGxpY2l0X3NsYXNoIHQgPSB0LnBhdGhuYW1lXG5cbiAgbGV0IHNsYXNoZXMgdCA9XG4gICAgaWYgdC5tYXRjaF9iYWNrc2xhc2hlcyB0aGVuIFsnLyc7ICdcXFxcJ10gZWxzZSBbJy8nXVxuXG4gIGxldCBhcHBlbmQgPyhhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ9ZmFsc2UpIHQgcGllY2UgPVxuICAgIHsgdCB3aXRoXG4gICAgICByZV9waWVjZXMgPSBwaWVjZSA6OiB0LnJlX3BpZWNlcztcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSBmYWxzZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgbGV0IHRvX3JlIHQgPSBSZS5zZXEgKExpc3QucmV2IHQucmVfcGllY2VzKVxuXG4gIGxldCBuZXh0IHQgPVxuICAgIG1hdGNoIHQucmVtYWluaW5nIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHBpZWNlIDo6IHJlbWFpbmluZyAtPiBTb21lIChwaWVjZSwgeyB0IHdpdGggcmVtYWluaW5nIH0pXG5lbmRcblxubGV0IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCA9XG4gIFJlLmNvbXBsIChcbiAgICBMaXN0LmNvbmNhdCBbXG4gICAgICBpZiBleHBsaWNpdF9zbGFzaCAgdGhlbiBMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMgZWxzZSBbXTtcbiAgICAgIGlmIGV4cGxpY2l0X3BlcmlvZCB0aGVuIFtSZS5jaGFyICcuJ10gZWxzZSBbXTtcbiAgICBdXG4gIClcblxubGV0IGVuY2xvc2VkIGVuY2xvc2VkID1cbiAgbWF0Y2ggZW5jbG9zZWQgd2l0aFxuICB8IENoYXIgYyAtPiBSZS5jaGFyIGNcbiAgfCBSYW5nZSAobG93LCBoaWdoKSAtPiBSZS5yZyBsb3cgaGlnaFxuXG5sZXQgZW5jbG9zZWRfc2V0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGtpbmQgc2V0ID1cbiAgbGV0IHNldCA9IExpc3QubWFwIGVuY2xvc2VkIHNldCBpblxuICBsZXQgZW5jbG9zdXJlID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBbnlfb2YgLT4gUmUuYWx0IHNldFxuICAgIHwgYEFueV9idXQgLT4gUmUuY29tcGwgc2V0XG4gIGluXG4gIFJlLmludGVyIFtlbmNsb3N1cmU7IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZF1cblxubGV0IGV4YWN0bHkgc3RhdGUgYyA9XG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gTGlzdC5tZW0gYyBzbGFzaGVzIGluXG4gIGxldCBjaGFycyA9IGlmIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCB0aGVuIHNsYXNoZXMgZWxzZSBbY10gaW5cbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgY2hhcnMpKSB+YW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50XG5cbmxldCBtYW55X21hbnkgc3RhdGUgPVxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gc3RhdGUuU3RhdGUucGVyaW9kICYmIHN0YXRlLlN0YXRlLnBhdGhuYW1lIGluXG4gIGxldCBmaXJzdF9leHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCA9XG4gICAgUmUuc2VxIFtcbiAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICBdXG4gIGluXG4gICgqIFdlIG11c3QgbWF0Y2ggY29tcG9uZW50cyBpbmRpdmlkdWFsbHkgd2hlbiBbcGVyaW9kXSBmbGFnIGlzIHNldCxcbiAgICAgbWFraW5nIHN1cmUgdG8gbm90IG1hdGNoIFtcImZvby8uYmFyXCJdLiAqKVxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFxuICAgIFJlLnNlcSBbXG4gICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kOmZpcnN0X2V4cGxpY2l0X3BlcmlvZCk7XG4gICAgICBSZS5yZXAgKFxuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzKTtcbiAgICAgICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgICAgXVxuICAgICAgKTtcbiAgICBdKVxuXG5sZXQgbWFueSAoc3RhdGUgOiBTdGF0ZS50KSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gICgqIFdoZXRoZXIgd2UgbXVzdCBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZCBkZXBlbmRzIG9uIHRoZSBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBidXRcbiAgICAgc2xhc2hlcyBhcmUgZWFzeSB0byBleHBsaWNpdCBtYXRjaC4gVGhpcyBjb25kaXRpb25hbCBzcGxpdHMgb3V0IHNvbWUgc2ltcGxlIGNhc2VzLlxuICAqKVxuICBpZiBub3QgZXhwbGljaXRfcGVyaW9kIHRoZW4gYmVnaW5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKSlcbiAgZW5kIGVsc2UgaWYgbm90IGV4cGxpY2l0X3NsYXNoIHRoZW4gYmVnaW5cbiAgICAoKiBJbiB0aGlzIHN0YXRlLCB3ZSBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZHMgb25seSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgKilcbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLm9wdCAoXG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgICkpXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgbGV0IG5vdF9lbXB0eSA9XG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgIGluXG4gICAgKCogW21heWJlX2VtcHR5XSBpcyB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbiBvZiBNYW55LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLlxuICAgICopXG4gICAgbGV0IG1heWJlX2VtcHR5ID0gUmUub3B0IG5vdF9lbXB0eSBpblxuICAgIGxldCBlbmNsb3NlZF9zZXQgc3RhdGUga2luZCBzZXQgPVxuICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgW1xuICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIG5vdF9lbXB0eTtcbiAgICAgICAgICAoKiBTaW5jZSBbbm90X2VtcHR5XSBtYXRjaGVkLCBzdWJzZXF1ZW50IGRvdHMgYXJlIG5vdCBsZWFkaW5nLiAqKVxuICAgICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlO1xuICAgICAgICBdO1xuICAgICAgXSlcbiAgICBpblxuICAgIGxldCByZWMgbG9va2FoZWFkIHN0YXRlID1cbiAgICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBtYXliZV9lbXB0eVxuICAgICAgKCogZ2xvYiAqKiA9PT0gZ2xvYiAqIC4gKilcbiAgICAgIHwgU29tZSAoTWFueSwgc3RhdGUpIC0+IGxvb2thaGVhZCBzdGF0ZVxuICAgICAgfCBTb21lIChFeGFjdGx5IGMsIHN0YXRlKSAtPlxuICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZVxuICAgICAgICAgICAgKGlmIGMgPSAnLidcbiAgICAgICAgICAgICB0aGVuIG5vdF9lbXB0eVxuICAgICAgICAgICAgIGVsc2UgbWF5YmVfZW1wdHkpXG4gICAgICAgIGluXG4gICAgICAgIGV4YWN0bHkgc3RhdGUgY1xuICAgICAgKCogZ2xvYiAqPyA9PT0gZ2xvYiA/KiAqKVxuICAgICAgfCBTb21lIChPbmUsIHN0YXRlKSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbm90X2VtcHR5XG4gICAgICB8IFNvbWUgKEFueV9vZiBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X29mIGVuY2xvc2VkXG4gICAgICB8IFNvbWUgKEFueV9idXQgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9idXQgZW5jbG9zZWRcbiAgICAgICgqICogdGhlbiAqKiA9PT0gKiogKilcbiAgICAgIHwgU29tZSAoTWFueU1hbnksIHN0YXRlKSAtPiBtYW55X21hbnkgc3RhdGVcbiAgICBpblxuICAgIGxvb2thaGVhZCBzdGF0ZVxuICBlbmRcblxubGV0IHBpZWNlIHN0YXRlIHBpZWNlID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbWF0Y2ggcGllY2Ugd2l0aFxuICB8IE9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZClcbiAgfCBNYW55IC0+IG1hbnkgc3RhdGVcbiAgfCBBbnlfb2YgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X29mIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEFueV9idXQgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X2J1dCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBFeGFjdGx5IGMgLT4gZXhhY3RseSBzdGF0ZSBjXG4gIHwgTWFueU1hbnkgLT4gbWFueV9tYW55IHN0YXRlXG5cbmxldCBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RhdGUudG9fcmUgc3RhdGVcbiAgICB8IFNvbWUgKHAsIHN0YXRlKSAtPiBsb29wIChwaWVjZSBzdGF0ZSBwKVxuICBpblxuICBsb29wIChTdGF0ZS5jcmVhdGUgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IpXG5cbmxldCBnbG9iXG4gICAgICA/KGFuY2hvcmVkID0gZmFsc2UpXG4gICAgICA/KHBhdGhuYW1lID0gdHJ1ZSlcbiAgICAgID8obWF0Y2hfYmFja3NsYXNoZXMgPSBmYWxzZSlcbiAgICAgID8ocGVyaW9kID0gdHJ1ZSlcbiAgICAgID8oZXhwYW5kX2JyYWNlcyA9IGZhbHNlKVxuICAgICAgPyhkb3VibGVfYXN0ZXJpc2sgPSB0cnVlKVxuICAgICAgc1xuICA9XG4gIGxldCB0b19yZSBzID1cbiAgICBsZXQgcmUgPSBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCAob2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcykgaW5cbiAgICBpZiBhbmNob3JlZFxuICAgIHRoZW4gUmUud2hvbGVfc3RyaW5nIHJlXG4gICAgZWxzZSByZVxuICBpblxuICBpZiBleHBhbmRfYnJhY2VzXG4gIHRoZW4gUmUuYWx0IChMaXN0Lm1hcCB0b19yZSAoZXhwbG9kZSBzKSlcbiAgZWxzZSB0b19yZSBzXG5cbmxldCBnbG9iJyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+cGVyaW9kIHNcblxubGV0IGdsb2J4ID9hbmNob3JlZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSBzXG5cbmxldCBnbG9ieCcgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSB+cGVyaW9kIHNcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImFscGhhXCIgIC0+IFJlLmFscGhhXG4gIHwgXCJhbG51bVwiICAtPiBSZS5hbG51bVxuICB8IFwiYXNjaWlcIiAgLT4gUmUuYXNjaWlcbiAgfCBcImJsYW5rXCIgIC0+IFJlLmJsYW5rXG4gIHwgXCJjbnRybFwiICAtPiBSZS5jbnRybFxuICB8IFwiZGlnaXRcIiAgLT4gUmUuZGlnaXRcbiAgfCBcImxvd2VyXCIgIC0+IFJlLmxvd2VyXG4gIHwgXCJwcmludFwiICAtPiBSZS5wcmludFxuICB8IFwic3BhY2VcIiAgLT4gUmUuc3BhY2VcbiAgfCBcInVwcGVyXCIgIC0+IFJlLnVwcGVyXG4gIHwgXCJ3b3JkXCIgICAtPiBSZS53b3JkY1xuICB8IFwicHVuY3RcIiAgLT4gUmUucHVuY3RcbiAgfCBcImdyYXBoXCIgIC0+IFJlLmdyYXBoXG4gIHwgXCJ4ZGlnaXRcIiAtPiBSZS54ZGlnaXRcbiAgfCBjbGFzc18gICAtPiBpbnZhbGlkX2FyZyAoXCJJbnZhbGlkIHBjcmUgY2xhc3M6IFwiIF4gY2xhc3NfKVxuXG5sZXQgcG9zaXhfY2xhc3Nfc3RyaW5ncyA9XG4gIFsgXCJhbHBoYVwiIDsgXCJhbG51bVwiIDsgXCJhc2NpaVwiXG4gIDsgXCJibGFua1wiIDsgXCJjbnRybFwiIDsgXCJkaWdpdFwiXG4gIDsgXCJsb3dlclwiIDsgXCJwcmludFwiIDsgXCJzcGFjZVwiXG4gIDsgXCJ1cHBlclwiIDsgXCJ3b3JkXCIgIDsgXCJwdW5jdFwiXG4gIDsgXCJncmFwaFwiIDsgXCJ4ZGlnaXRcIiBdXG5cbmxldCBwYXJzZSBtdWx0aWxpbmUgZG9sbGFyX2VuZG9ubHkgZG90YWxsIHVuZ3JlZWR5IHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdF9zIHMnID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzJyBpblxuICAgIHRyeVxuICAgICAgZm9yIGogPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgdHJ5IGlmIHMnLltqXSA8PiBzLlshaSArIGpdIHRoZW4gcmFpc2UgRXhpdFxuICAgICAgICB3aXRoIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGkgOj0gIWkgKyBsZW47XG4gICAgICB0cnVlXG4gICAgd2l0aCBFeGl0IC0+IGZhbHNlIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG4gIGxldCBncmVlZHlfbW9kIHIgPVxuICAgIGxldCBnciA9IGFjY2VwdCAnPycgaW5cbiAgICBsZXQgZ3IgPSBpZiB1bmdyZWVkeSB0aGVuIG5vdCBnciBlbHNlIGdyIGluXG4gICAgaWYgZ3IgdGhlbiBSZS5ub25fZ3JlZWR5IHIgZWxzZSBSZS5ncmVlZHkgclxuICBpblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcDEgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBncmVlZHlfbW9kIChSZS5vcHQgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgZ3JlZWR5X21vZCAoUmUucmVwbiByIGkgailcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBkb3RhbGwgdGhlbiBSZS5hbnkgZWxzZSBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc/JyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIHJcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcjJyB0aGVuIGJlZ2luXG4gICAgICAgICAgY29tbWVudCAoKVxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWUgKCkgaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBSZS5ncm91cCB+bmFtZSByXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuZW9sIGVsc2UgaWYgZG9sbGFyX2VuZG9ubHkgdGhlbiBSZS5sZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbigqIFhYWFxuICAgLSBCYWNrLXJlZmVyZW5jZXNcbiAgIC0gXFxjeCAoY29udHJvbC14KSwgXFxkZGRcbiopXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd3JyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAnVycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAncycgLT5cbiAgICAgICAgICBSZS5zcGFjZVxuICAgICAgfCAnUycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuc3BhY2VdXG4gICAgICB8ICdkJyAtPlxuICAgICAgICAgIFJlLmRpZ2l0XG4gICAgICB8ICdEJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5kaWdpdF1cbiAgICAgIHwgJ2InIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIHwgJ0InIC0+XG4gICAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICB8ICdBJyAtPlxuICAgICAgICAgIFJlLmJvc1xuICAgICAgfCAnWicgLT5cbiAgICAgICAgICBSZS5sZW9sXG4gICAgICB8ICd6JyAtPlxuICAgICAgICAgIFJlLmVvc1xuICAgICAgfCAnRycgLT5cbiAgICAgICAgICBSZS5zdGFydFxuICAgICAgfCAnZScgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgxYidcbiAgICAgIHwgJ2YnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MGMnXG4gICAgICB8ICduJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcbidcbiAgICAgIHwgJ3InIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxyJ1xuICAgICAgfCAndCcgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHQnXG4gICAgICB8ICd4JyAtPlxuICAgICAgICAgIGxldCBjMSA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGMyID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgY29kZSA9IGMxICogMTYgKyBjMiBpblxuICAgICAgICAgIFJlLmNoYXIgKGNoYXJfb2ZfaW50IGNvZGUpXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIFJlLmNoYXIgY1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaGV4ZGlnaXQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ2EnLi4nZicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgJ0EnLi4nRicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgbmFtZSAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJykgYXMgYyAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDMyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgbmFtZScgYiA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknKSBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgJz4nIC0+IEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICB8IGBDaGFyIGMgLT5cbiAgICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgICAgICAgICBgQ2hhciBjJyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgICAgICB8IGBTZXQgc3QnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzdCcgOjogcylcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICAgIHwgYFNldCBzdCAtPiBicmFja2V0IChzdCA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuXG4gICAgICAgIGxldCBjb21wbCA9IGFjY2VwdCAnXicgaW5cbiAgICAgICAgbGV0IGNscyA9XG4gICAgICAgICAgdHJ5IExpc3QuZmluZCBhY2NlcHRfcyBwb3NpeF9jbGFzc19zdHJpbmdzXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgUGFyc2VfZXJyb3IgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHRfcyBcIjpdXCIpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCByZSA9XG4gICAgICAgICAgbGV0IHBvc2l4X2NsYXNzID0gcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nIGNscyBpblxuICAgICAgICAgIGlmIGNvbXBsIHRoZW4gUmUuY29tcGwgW3Bvc2l4X2NsYXNzXSBlbHNlIHBvc2l4X2NsYXNzIGluXG4gICAgICAgIGBTZXQgKHJlKVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGBDaGFyIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZSBpZiBjID0gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbigqIFhYWFxuICAgXFwxMjcsIC4uLlxuKilcbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnYicgLT4gYENoYXIgJ1xcMDA4J1xuICAgICAgfCAnbicgLT4gYENoYXIgJ1xcbicgKCpYWFgqKVxuICAgICAgfCAncicgLT4gYENoYXIgJ1xccicgKCpYWFgqKVxuICAgICAgfCAndCcgLT4gYENoYXIgJ1xcdCcgKCpYWFgqKVxuICAgICAgfCAndycgLT4gYFNldCAoUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAnVycgLT4gYFNldCAoUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdzJyAtPiBgU2V0IChSZS5zcGFjZSlcbiAgICAgIHwgJ1MnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5zcGFjZV0pXG4gICAgICB8ICdkJyAtPiBgU2V0IChSZS5kaWdpdClcbiAgICAgIHwgJ0QnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5kaWdpdF0pXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZVxuICAgICAgYENoYXIgY1xuICBhbmQgY29tbWVudCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgaWYgYWNjZXB0ICcpJyB0aGVuIFJlLmVwc2lsb24gZWxzZSBiZWdpbiBpbmNyIGk7IGNvbW1lbnQgKCkgZW5kXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9XG4gIFsgYFVuZ3JlZWR5IHwgYERvdGFsbCB8IGBEb2xsYXJfZW5kb25seVxuICB8IGBNdWx0aWxpbmUgfCBgQW5jaG9yZWQgfCBgQ2FzZWxlc3MgXVxuXG5sZXQgcmUgID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPVxuICAgIHBhcnNlXG4gICAgICAoTGlzdC5tZW1xIGBNdWx0aWxpbmUgb3B0cykgKExpc3QubWVtcSBgRG9sbGFyX2VuZG9ubHkgb3B0cylcbiAgICAgIChMaXN0Lm1lbXEgYERvdGFsbCBvcHRzKSAoTGlzdC5tZW1xIGBVbmdyZWVkeSBvcHRzKVxuICAgICAgc1xuICBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQW5jaG9yZWQgb3B0cyB0aGVuIFJlLnNlcSBbUmUuc3RhcnQ7IHJdIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQ2FzZWxlc3Mgb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCJtb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBlcmwuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkID0gUGVybC5Ob3Rfc3VwcG9ydGVkXG5cbnR5cGUgcmVnZXhwID0gUmUucmVcblxudHlwZSBmbGFnID0gWyBgQ0FTRUxFU1MgfCBgTVVMVElMSU5FIHwgYEFOQ0hPUkVEIHwgYERPVEFMTCBdXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID1cbiAgfCBUZXh0ICBvZiBzdHJpbmdcbiAgfCBEZWxpbSBvZiBzdHJpbmdcbiAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmdcbiAgfCBOb0dyb3VwXG5cbnR5cGUgZ3JvdXBzID0gQ29yZS5Hcm91cC50XG5cbmxldCByZSA/KGZsYWdzID0gW10pIHBhdCA9XG4gIGxldCBvcHRzID0gTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgfCBgQ0FTRUxFU1MgLT4gYENhc2VsZXNzXG4gICAgfCBgTVVMVElMSU5FIC0+IGBNdWx0aWxpbmVcbiAgICB8IGBBTkNIT1JFRCAtPiBgQW5jaG9yZWRcbiAgICB8IGBET1RBTEwgLT4gYERvdGFsbFxuICApIGZsYWdzIGluXG4gIFBlcmwucmUgfm9wdHMgcGF0XG5cbmxldCByZWdleHAgP2ZsYWdzIHBhdCA9IFJlLmNvbXBpbGUgKHJlID9mbGFncyBwYXQpXG5cbmxldCBleHRyYWN0IH5yZXggcyA9XG4gIFJlLkdyb3VwLmFsbCAoUmUuZXhlYyByZXggcylcblxubGV0IGV4ZWMgfnJleCA/cG9zIHMgPVxuICBSZS5leGVjIHJleCA/cG9zIHNcblxubGV0IGdldF9zdWJzdHJpbmcgcyBpID1cbiAgUmUuR3JvdXAuZ2V0IHMgaVxuXG5sZXQgbmFtZXMgcmV4ID1cbiAgUmUuZ3JvdXBfbmFtZXMgcmV4XG4gIHw+IExpc3QubWFwIGZzdFxuICB8PiBBcnJheS5vZl9saXN0XG5cbmxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHMgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCAobiwgaSkgOjogcmVtIHdoZW4gbiA9IG5hbWUgLT5cbiAgICAgICBiZWdpblxuICAgICAgICAgdHJ5IGdldF9zdWJzdHJpbmcgcyBpXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBsb29wIHJlbVxuICAgICAgIGVuZFxuICAgIHwgXyA6OiByZW0gLT4gbG9vcCByZW1cbiAgaW5cbiAgbG9vcCAoUmUuZ3JvdXBfbmFtZXMgcmV4KVxuXG5sZXQgZ2V0X3N1YnN0cmluZ19vZnMgcyBpID1cbiAgUmUuR3JvdXAub2Zmc2V0IHMgaVxuXG5sZXQgcG1hdGNoIH5yZXggcyA9XG4gIFJlLmV4ZWNwIHJleCBzXG5cbmxldCBzdWJzdGl0dXRlIH5yZXggfnN1YnN0IHN0ciA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBwYXQgPSBSZS5Hcm91cC5nZXQgc3MgMCBpblxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChzdGFydCAtIHBvcyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdWJzdCBwYXQpO1xuICAgICAgbG9vcCBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcyk7XG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgfnJleCBzdHIgPVxuICBsZXQgcmVjIGxvb3AgYWNjdSBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBMaXN0LnJldiBhY2N1XG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKSBpblxuICBsb29wIFtdIDBcblxuKCogRnJvbSBQQ1JFICopXG5sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgcyBvZnMgbGVuID1cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIEJ5dGVzLnVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgclxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgIHwgJ1xcXFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnXG4gICAgfCAnKCcgIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcXFwnO1xuICAgICAgaW5jciBwb3M7XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gICAgfCBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgZG9uZTtcbiAgc3RyaW5nX3Vuc2FmZV9zdWIgYnVmIDAgIXBvc1xuXG5sZXQgZnVsbF9zcGxpdCA/KG1heD0wKSB+cmV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAwIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQgc11cbiAgZWxzZVxuICAgIGxldCByZXN1bHRzID0gUmUuc3BsaXRfZnVsbCByZXggcyBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIExpc3QubWFwIChmdW5jdGlvblxuICAgICAgICB8IGBUZXh0IHMgLT4gW1RleHQgc11cbiAgICAgICAgfCBgRGVsaW0gZCAtPlxuICAgICAgICAgIGxldCBtYXRjaGVzID0gUmUuR3JvdXAuYWxsX29mZnNldCBkIGluXG4gICAgICAgICAgbGV0IGRlbGltID0gUmUuR3JvdXAuZ2V0IGQgMCBpblxuICAgICAgICAgIChEZWxpbSBkZWxpbSk6OihcbiAgICAgICAgICAgIGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIG1hdGNoZXMgLSAxIGRvXG4gICAgICAgICAgICAgIGwgOj1cbiAgICAgICAgICAgICAgICAoaWYgbWF0Y2hlcy4oaSkgPSAoLTEsIC0xKVxuICAgICAgICAgICAgICAgICB0aGVuIE5vR3JvdXBcbiAgICAgICAgICAgICAgICAgZWxzZSBHcm91cCAoaSwgUmUuR3JvdXAuZ2V0IGQgaSkpXG4gICAgICAgICAgICAgICAgOjooIWwpXG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgTGlzdC5yZXYgIWwpKSByZXN1bHRzIGluXG4gICAgTGlzdC5jb25jYXQgbWF0Y2hlc1xuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbigqXG5XaGF0IHdlIGNvdWxkIChzaG91bGQ/KSBkbzpcbi0gYSogPT0+IGxvbmdlc3QgKChzaG9ydGVzdCAobm9fZ3JvdXAgYSkqICksIGEgfCAoKSkgICghISEpXG4tIGFiYyB1bmRlcnN0b29kIGFzIChhYiljXG4tIFwiKChhPyl8YilcIiBhZ2FpbnN0IFwiYWJcIiBzaG91bGQgbm90IGJpbmQgdGhlIGZpcnN0IHN1YnBhdHRlcm4gdG8gYW55dGhpbmdcblxuTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBoYW5kbGUgXCIoKChhYiljKWQpZVwiIGVmZmljaWVudGx5XG4qKVxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBuZXdsaW5lIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBSZS5yZXBuIChSZS5uZXN0IHIpIGkgalxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ub3RubCBlbHNlIFJlLmFueVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIFJlLmdyb3VwIHJcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmRpZmYgKFJlLmNvbXBsIChicmFja2V0IFtdKSkgKFJlLmNoYXIgJ1xcbicpXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnfCcgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnPydcbiAgICAgIHwgJ1snIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ3snIHwgJ1xcXFwnIGFzIGMgLT4gUmUuY2hhciBjXG4gICAgICB8ICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZCAoKlhYWCopXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGNcbiAgICBlbmQgZWxzZVxuICAgICAgY1xuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPSBbYElDYXNlIHwgYE5vU3ViIHwgYE5ld2xpbmVdXG5cbmxldCByZSA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID0gcGFyc2UgKExpc3QubWVtcSBgTmV3bGluZSBvcHRzKSBzIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBJQ2FzZSBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgTm9TdWIgb3B0cyB0aGVuIFJlLm5vX2dyb3VwIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgcmUgPSBSZS5jb21waWxlIChSZS5sb25nZXN0IHJlKVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgKEMpIEplYW4tQ2hyaXN0b3BoZSBGaWxsaWF0cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBUaGlzIHNvZnR3YXJlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgICAgKilcbigqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgKilcbigqICBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nICAgICAgICAgICAgKilcbigqICBkZXNjcmliZWQgaW4gZmlsZSBMSUNFTlNFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgICAgKilcbigqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgKilcbigqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpzIE1hcHMgb2YgaW50ZWdlcnMgaW1wbGVtZW50ZWQgYXMgUGF0cmljaWEgdHJlZXMsIGZvbGxvd2luZyBDaHJpc1xuICAgIE9rYXNha2kgYW5kIEFuZHJldyBHaWxsJ3MgcGFwZXIge1xcZW0gRmFzdCBNZXJnZWFibGUgSW50ZWdlciBNYXBzfVxuICAgICh7XFx0dFxcc21hbGwgaHR0cDovL3d3dy5jcy5jb2x1bWJpYS5lZHUvXFx+e31jZG8vcGFwZXJzLmh0bWxcXCNtbDk4bWFwc30pLlxuICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBtb2R1bGUgW1B0c2V0XSB3aGljaCBpcyBhbHNvIGJhc2VkIG9uIHRoZVxuICAgIHNhbWUgZGF0YS1zdHJ1Y3R1cmUuICopXG5cbnR5cGUga2V5ID0gaW50XG5cbnR5cGUgJ2EgdCA9XG4gIHwgRW1wdHlcbiAgfCBMZWFmIG9mIGludCAqICdhXG4gIHwgQnJhbmNoIG9mIGludCAqIGludCAqICdhIHQgKiAnYSB0XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSB0ID0gdCA9IEVtcHR5XG5cbmxldCB6ZXJvX2JpdCBrIG0gPSAoayBsYW5kIG0pID09IDBcblxubGV0IHJlYyBtZW0gayA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBMZWFmIChqLF8pIC0+IGsgPT0galxuICB8IEJyYW5jaCAoXywgbSwgbCwgcikgLT4gbWVtIGsgKGlmIHplcm9fYml0IGsgbSB0aGVuIGwgZWxzZSByKVxuXG5sZXQgcmVjIGZpbmQgayA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBrID09IGogdGhlbiB4IGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBtLCBsLCByKSAtPiBmaW5kIGsgKGlmIHplcm9fYml0IGsgbSB0aGVuIGwgZWxzZSByKVxuXG5sZXQgZmluZF9vcHQgayBtID0gdHJ5IFNvbWUgKGZpbmQgayBtKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbigqIE5vdGU6IGZpbmRfZmlyc3QvbGFzdCBoYXZlIHRvIGxvb2sgaW4gYm90aCBzdWJ0cmVlc1xuICAgYXMgdGhlc2UgYXJlIGxpdHRsZS1lbmRpYW4gUGF0cmljaWEgdHJlZXMgKilcbmxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gU29tZSAoaix4KSBlbHNlIE5vbmVcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9maXJzdF9vcHQgZiBsLCBmaW5kX2ZpcnN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+XG4gICAgICAgIGlmIGxrIDwgcmsgdGhlbiBTb21lIChsayxsdikgZWxzZSBTb21lIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiBTb21lIHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuXG5sZXQgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIChqLHgpIGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfb3B0IGYgbCwgZmluZF9maXJzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPiBpZiBsayA8IHJrIHRoZW4gKGxrLGx2KSBlbHNlIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiB2XG4gICAgfCBOb25lLCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gU29tZSAoaix4KSBlbHNlIE5vbmVcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9sYXN0X29wdCBmIGwsIGZpbmRfbGFzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPlxuICAgICAgICBpZiBsayA+IHJrIHRoZW4gU29tZSAobGssbHYpIGVsc2UgU29tZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gU29tZSB2XG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcblxubGV0IGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIChqLHgpIGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfbGFzdF9vcHQgZiBsLCBmaW5kX2xhc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT4gaWYgbGsgPiByayB0aGVuIChsayxsdikgZWxzZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gdlxuICAgIHwgTm9uZSwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGxvd2VzdF9iaXQgeCA9IHggbGFuZCAoLXgpXG5cbmxldCBicmFuY2hpbmdfYml0IHAwIHAxID0gbG93ZXN0X2JpdCAocDAgbHhvciBwMSlcblxubGV0IG1hc2sgcCBtID0gcCBsYW5kIChtLTEpXG5cbmxldCBqb2luIChwMCx0MCxwMSx0MSkgPVxuICBsZXQgbSA9IGJyYW5jaGluZ19iaXQgcDAgcDEgaW5cbiAgaWYgemVyb19iaXQgcDAgbSB0aGVuXG4gICAgQnJhbmNoIChtYXNrIHAwIG0sIG0sIHQwLCB0MSlcbiAgZWxzZVxuICAgIEJyYW5jaCAobWFzayBwMCBtLCBtLCB0MSwgdDApXG5cbmxldCBtYXRjaF9wcmVmaXggayBwIG0gPSAobWFzayBrIG0pID09IHBcblxubGV0IGFkZCBrIHggdCA9XG4gIGxldCByZWMgaW5zID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IExlYWYgKGsseClcbiAgICB8IExlYWYgKGosXykgYXMgdCAtPlxuICAgICAgaWYgaiA9PSBrIHRoZW4gTGVhZiAoayx4KSBlbHNlIGpvaW4gKGssIExlYWYgKGsseCksIGosIHQpXG4gICAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgYXMgdCAtPlxuICAgICAgaWYgbWF0Y2hfcHJlZml4IGsgcCBtIHRoZW5cblx0aWYgemVyb19iaXQgayBtIHRoZW5cblx0ICBCcmFuY2ggKHAsIG0sIGlucyB0MCwgdDEpXG5cdGVsc2Vcblx0ICBCcmFuY2ggKHAsIG0sIHQwLCBpbnMgdDEpXG4gICAgICBlbHNlXG5cdGpvaW4gKGssIExlYWYgKGsseCksIHAsIHQpXG4gIGluXG4gIGlucyB0XG5cbmxldCBzaW5nbGV0b24gayB2ID1cbiAgYWRkIGsgdiBlbXB0eVxuXG5sZXQgYnJhbmNoID0gZnVuY3Rpb25cbiAgfCAoXyxfLEVtcHR5LHQpIC0+IHRcbiAgfCAoXyxfLHQsRW1wdHkpIC0+IHRcbiAgfCAocCxtLHQwLHQxKSAgIC0+IEJyYW5jaCAocCxtLHQwLHQxKVxuXG5sZXQgcmVtb3ZlIGsgdCA9XG4gIGxldCByZWMgcm12ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmIChqLF8pIGFzIHQgLT4gaWYgayA9PSBqIHRoZW4gRW1wdHkgZWxzZSB0XG4gICAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgYXMgdCAtPlxuICAgICAgaWYgbWF0Y2hfcHJlZml4IGsgcCBtIHRoZW5cblx0aWYgemVyb19iaXQgayBtIHRoZW5cblx0ICBicmFuY2ggKHAsIG0sIHJtdiB0MCwgdDEpXG5cdGVsc2Vcblx0ICBicmFuY2ggKHAsIG0sIHQwLCBybXYgdDEpXG4gICAgICBlbHNlXG5cdHRcbiAgaW5cbiAgcm12IHRcblxubGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IExlYWYgXyAtPiAxXG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGNhcmRpbmFsIHQwICsgY2FyZGluYWwgdDFcblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiAoayx4KSAtPiBmIGsgeFxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBpdGVyIGYgdDA7IGl0ZXIgZiB0MVxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGsseCkgLT4gTGVhZiAoaywgZiB4KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBCcmFuY2ggKHAsIG0sIG1hcCBmIHQwLCBtYXAgZiB0MSlcblxubGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoayx4KSAtPiBMZWFmIChrLCBmIGsgeClcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gQnJhbmNoIChwLCBtLCBtYXBpIGYgdDAsIG1hcGkgZiB0MSlcblxubGV0IHJlYyBmb2xkIGYgcyBhY2N1ID0gbWF0Y2ggcyB3aXRoXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IExlYWYgKGsseCkgLT4gZiBrIHggYWNjdVxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBmb2xkIGYgdDAgKGZvbGQgZiB0MSBhY2N1KVxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IExlYWYgKGssIHYpICAtPiBwIGsgdlxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBmb3JfYWxsIHAgdDAgJiYgZm9yX2FsbCBwIHQxXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGZhbHNlXG4gIHwgTGVhZiAoaywgdikgLT4gcCBrIHZcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZXhpc3RzIHAgdDAgfHwgZXhpc3RzIHAgdDFcblxubGV0IHJlYyBmaWx0ZXIgcHIgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoaywgdikgYXMgdCAtPiBpZiBwciBrIHYgdGhlbiB0IGVsc2UgRW1wdHlcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gYnJhbmNoIChwLCBtLCBmaWx0ZXIgcHIgdDAsIGZpbHRlciBwciB0MSlcblxubGV0IHJlYyBmaWx0ZXJfbWFwIHByID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGssIHYpIC0+IChtYXRjaCBwciBrIHYgd2l0aCBTb21lIHYnIC0+IExlYWYgKGssIHYnKSB8IE5vbmUgLT4gRW1wdHkpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IGJyYW5jaCAocCwgbSwgZmlsdGVyX21hcCBwciB0MCwgZmlsdGVyX21hcCBwciB0MSlcblxubGV0IHBhcnRpdGlvbiBwIHMgPVxuICBsZXQgcmVjIHBhcnQgKHQsZiBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY1xuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgcCBrIHYgdGhlbiAoYWRkIGsgdiB0LCBmKSBlbHNlICh0LCBhZGQgayB2IGYpXG4gICAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gcGFydCAocGFydCBhY2MgdDApIHQxXG4gIGluXG4gIHBhcnQgKEVtcHR5LCBFbXB0eSkgc1xuXG5sZXQgcmVjIGNob29zZSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLCBfLCB0MCwgXykgLT4gY2hvb3NlIHQwICAgKCogd2Uga25vdyB0aGF0IFt0MF0gaXMgbm9uLWVtcHR5ICopXG5cbmxldCByZWMgY2hvb3NlX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLCBfLCB0MCwgXykgLT4gY2hvb3NlX29wdCB0MCAgICgqIHdlIGtub3cgdGhhdCBbdDBdIGlzIG5vbi1lbXB0eSAqKVxuXG5sZXQgc3BsaXQgeCBtID1cbiAgbGV0IGNvbGwgayB2IChsLCBiLCByKSA9XG4gICAgaWYgayA8IHggdGhlbiBhZGQgayB2IGwsIGIsIHJcbiAgICBlbHNlIGlmIGsgPiB4IHRoZW4gbCwgYiwgYWRkIGsgdiByXG4gICAgZWxzZSBsLCBTb21lIHYsIHJcbiAgaW5cbiAgZm9sZCBjb2xsIG0gKGVtcHR5LCBOb25lLCBlbXB0eSlcblxubGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIGxldCAoa3MsIF8pIGFzIGJzID0gbWluX2JpbmRpbmcgcyBpblxuICAgIGxldCAoa3QsIF8pIGFzIGJ0ID0gbWluX2JpbmRpbmcgdCBpblxuICAgIGlmIGtzIDwga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbWF0Y2ggKG1pbl9iaW5kaW5nX29wdCBzLCBtaW5fYmluZGluZ19vcHQgdCkgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBOb25lLCBidCAtPiBidFxuICAgIHwgYnMsIE5vbmUgLT4gYnNcbiAgICB8IChTb21lIChrcywgXykgYXMgYnMpLCAoU29tZSAoa3QsIF8pIGFzIGJ0KSAtPlxuICAgICAgaWYga3MgPCBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIGxldCAoa3MsIF8pIGFzIGJzID0gbWF4X2JpbmRpbmcgcyBpblxuICAgIGxldCAoa3QsIF8pIGFzIGJ0ID0gbWF4X2JpbmRpbmcgdCBpblxuICAgIGlmIGtzID4ga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbWF0Y2ggbWF4X2JpbmRpbmdfb3B0IHMsIG1heF9iaW5kaW5nX29wdCB0IHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgTm9uZSwgYnQgLT4gYnRcbiAgICB8IGJzLCBOb25lIC0+IGJzXG4gICAgfCAoU29tZSAoa3MsIF8pIGFzIGJzKSwgKFNvbWUgKGt0LCBfKSBhcyBidCkgLT5cbiAgICAgIGlmIGtzID4ga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCBiaW5kaW5ncyBtID1cbiAgZm9sZCAoZnVuIGsgdiBhY2MgLT4gKGssIHYpIDo6IGFjYykgbSBbXVxuXG4oKiB3ZSBvcmRlciBjb25zdHJ1Y3RvcnMgYXMgRW1wdHkgPCBMZWFmIDwgQnJhbmNoICopXG5sZXQgY29tcGFyZSBjbXAgdDEgdDIgPVxuICBsZXQgcmVjIGNvbXBhcmVfYXV4IHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICAgIHwgRW1wdHksIEVtcHR5IC0+IDBcbiAgICB8IEVtcHR5LCBfIC0+IC0xXG4gICAgfCBfLCBFbXB0eSAtPiAxXG4gICAgfCBMZWFmIChrMSx4MSksIExlYWYgKGsyLHgyKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsxIGsyIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY21wIHgxIHgyXG4gICAgfCBMZWFmIF8sIEJyYW5jaCBfIC0+IC0xXG4gICAgfCBCcmFuY2ggXywgTGVhZiBfIC0+IDFcbiAgICB8IEJyYW5jaCAocDEsbTEsbDEscjEpLCBCcmFuY2ggKHAyLG0yLGwyLHIyKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIHAxIHAyIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2Vcblx0bGV0IGMgPSBjb21wYXJlIG0xIG0yIGluXG5cdGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9hdXggbDEgbDIgaW5cbiAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IHIxIHIyXG4gIGluXG4gIGNvbXBhcmVfYXV4IHQxIHQyXG5cbmxldCBlcXVhbCBlcSB0MSB0MiA9XG4gIGxldCByZWMgZXF1YWxfYXV4IHQxIHQyID0gbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIChrMSx4MSksIExlYWYgKGsyLHgyKSAtPiBrMSA9IGsyICYmIGVxIHgxIHgyXG4gICAgfCBCcmFuY2ggKHAxLG0xLGwxLHIxKSwgQnJhbmNoIChwMixtMixsMixyMikgLT5cbiAgICAgIHAxID0gcDIgJiYgbTEgPSBtMiAmJiBlcXVhbF9hdXggbDEgbDIgJiYgZXF1YWxfYXV4IHIxIHIyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGVxdWFsX2F1eCB0MSB0MlxuXG5sZXQgbWVyZ2UgZiBtMSBtMiA9XG4gIGxldCBhZGQgbSBrID0gZnVuY3Rpb24gTm9uZSAtPiBtIHwgU29tZSB2IC0+IGFkZCBrIHYgbSBpblxuICAoKiBmaXJzdCBjb25zaWRlciBhbGwgYmluZGluZ3MgaW4gbTEgKilcbiAgbGV0IG0gPSBmb2xkXG4gICAgICAoZnVuIGsxIHYxIG0gLT4gYWRkIG0gazEgKGYgazEgKFNvbWUgdjEpIChmaW5kX29wdCBrMSBtMikpKSBtMSBlbXB0eSBpblxuICAoKiB0aGVuIGJpbmRpbmdzIGluIG0yIHRoYXQgYXJlIG5vdCBpbiBtMSAqKVxuICBmb2xkIChmdW4gazIgdjIgbSAtPiBpZiBtZW0gazIgbTEgdGhlbiBtIGVsc2UgYWRkIG0gazIgKGYgazIgTm9uZSAoU29tZSB2MikpKVxuICAgIG0yIG1cblxubGV0IHVwZGF0ZSB4IGYgbSA9XG4gIG1hdGNoIGYgKGZpbmRfb3B0IHggbSkgd2l0aFxuICB8IE5vbmUgLT4gcmVtb3ZlIHggbVxuICB8IFNvbWUgeiAtPiBhZGQgeCB6IG1cblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9IG4gPj0gMCAmJiAobSA8IDAgfHwgbiA8IG0pXG5cbmxldCByZWMgdW5pb24gZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHksIHQgIC0+IHRcbiAgfCB0LCBFbXB0eSAgLT4gdFxuICB8IExlYWYgKGssdjEpLCB0IC0+XG4gICAgICB1cGRhdGUgayAoZnVuY3Rpb24gTm9uZSAtPiBTb21lIHYxIHwgU29tZSB2MiAtPiBmIGsgdjEgdjIpIHRcbiAgfCB0LCBMZWFmIChrLHYyKSAtPlxuICAgICAgdXBkYXRlIGsgKGZ1bmN0aW9uIE5vbmUgLT4gU29tZSB2MiB8IFNvbWUgdjEgLT4gZiBrIHYxIHYyKSB0XG4gIHwgKEJyYW5jaCAocCxtLHMwLHMxKSBhcyBzKSwgKEJyYW5jaCAocSxuLHQwLHQxKSBhcyB0KSAtPlxuICAgICAgaWYgbSA9PSBuICYmIG1hdGNoX3ByZWZpeCBxIHAgbSB0aGVuXG5cdCgqIFRoZSB0cmVlcyBoYXZlIHRoZSBzYW1lIHByZWZpeC4gTWVyZ2UgdGhlIHN1YnRyZWVzLiAqKVxuXHRicmFuY2ggKHAsIG0sIHVuaW9uIGYgKHMwLHQwKSwgdW5pb24gZiAoczEsdDEpKVxuICAgICAgZWxzZSBpZiB1bnNpZ25lZF9sdCBtIG4gJiYgbWF0Y2hfcHJlZml4IHEgcCBtIHRoZW5cblx0KCogW3FdIGNvbnRhaW5zIFtwXS4gTWVyZ2UgW3RdIHdpdGggYSBzdWJ0cmVlIG9mIFtzXS4gKilcblx0aWYgemVyb19iaXQgcSBtIHRoZW5cblx0ICBicmFuY2ggKHAsIG0sIHVuaW9uIGYgKHMwLHQpLCBzMSlcbiAgICAgICAgZWxzZVxuXHQgIGJyYW5jaCAocCwgbSwgczAsIHVuaW9uIGYgKHMxLHQpKVxuICAgICAgZWxzZSBpZiB1bnNpZ25lZF9sdCBuIG0gJiYgbWF0Y2hfcHJlZml4IHAgcSBuIHRoZW5cblx0KCogW3BdIGNvbnRhaW5zIFtxXS4gTWVyZ2UgW3NdIHdpdGggYSBzdWJ0cmVlIG9mIFt0XS4gKilcblx0aWYgemVyb19iaXQgcCBuIHRoZW5cblx0ICBicmFuY2ggKHEsIG4sIHVuaW9uIGYgKHMsdDApLCB0MSlcblx0ZWxzZVxuXHQgIGJyYW5jaCAocSwgbiwgdDAsIHVuaW9uIGYgKHMsdDEpKVxuICAgICAgZWxzZVxuXHQoKiBUaGUgcHJlZml4ZXMgZGlzYWdyZWUuICopXG5cdGpvaW4gKHAsIHMsIHEsIHQpXG5cbmxldCB1bmlvbiBmIHMgdCA9IHVuaW9uIGYgKHMsdClcblxubGV0IHRvX3NlcSBtID1cbiAgbGV0IHJlYyBwcmVwZW5kX3NlcSBtIHMgPSBtYXRjaCBtIHdpdGhcbiAgICB8IEVtcHR5IC0+IHNcbiAgICB8IExlYWYgKGssIHYpIC0+IGZ1biAoKSAtPiBTZXEuQ29ucygoayx2KSwgcylcbiAgICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT4gcHJlcGVuZF9zZXEgbCAocHJlcGVuZF9zZXEgciBzKVxuICBpblxuICBwcmVwZW5kX3NlcSBtIFNlcS5lbXB0eVxuXG5sZXQgdG9fc2VxX2Zyb20gayBtID1cbiAgbGV0IHJlYyBwcmVwZW5kX3NlcSBtIHMgPSBtYXRjaCBtIHdpdGhcbiAgICB8IEVtcHR5IC0+IHNcbiAgICB8IExlYWYgKGtleSwgdikgLT4gaWYga2V5ID49IGsgdGhlbiBmdW4gKCkgLT4gU2VxLkNvbnMoKGtleSx2KSwgcykgZWxzZSBzXG4gICAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+IHByZXBlbmRfc2VxIGwgKHByZXBlbmRfc2VxIHIgcylcbiAgaW5cbiAgcHJlcGVuZF9zZXEgbSBTZXEuZW1wdHlcblxubGV0IGFkZF9zZXEgcyBtID1cbiAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgbSBzXG5cbmxldCBvZl9zZXEgcyA9XG4gIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIGVtcHR5IHNcbiIsImxldCB1dGY4X29mX2NvZGUgYnVmIHggPVxuICBsZXQgYWRkID0gQnVmZmVyLmFkZF9jaGFyIGluXG5cbiAgKCogU3RyYWlnaHQgPD0gZG9lc24ndCB3b3JrIHdpdGggc2lnbmVkIDMxLWJpdCBpbnRzICopXG4gIGxldCBtYXhiaXRzIG4geCA9IHggbHNyIG4gPSAwIGluXG5cbiAgaWYgbWF4Yml0cyA3IHggdGhlbiAoKiA3ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgeClcbiAgZWxzZSBpZiBtYXhiaXRzIDExIHggdGhlbiAoXG4gICAgKCogNSArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAwMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDE2IHggdGhlbiAoXG4gICAgKCogNCArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDAwMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDIxIHggdGhlbiAoXG4gICAgKCogMyArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTEwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAwMDAxMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDI2IHggdGhlbiAoXG4gICAgKCogMiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMDAwMDExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChtYXhiaXRzIDMxIHgpO1xuICAgICgqIDEgKyA2ICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMTAwIGxvciAoKHggbHNyIDMwKSBsYW5kIDBiMDAwMDAwMDEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG5cbmxldCBjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgaiA9XG4gIGxldCBoaWdoMTAgPSBpIC0gMHhEODAwIGluXG4gIGxldCBsb3cxMCA9IGogLSAweERDMDAgaW5cbiAgMHgxMDAwMCArICgoaGlnaDEwIGxzbCAxMCkgbG9yIGxvdzEwKVxuXG5sZXQgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciBidWYgaSBqID1cbiAgdXRmOF9vZl9jb2RlIGJ1ZiAoY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGopXG4iLCJsZXQgdmVyc2lvbiA9IFwiMi4yLjJcIlxuXG5leGNlcHRpb24gSnNvbl9lcnJvciBvZiBzdHJpbmdcblxubGV0IGpzb25fZXJyb3IgcyA9IHJhaXNlIChKc29uX2Vycm9yIHMpXG5cbmV4Y2VwdGlvbiBFbmRfb2ZfYXJyYXlcbmV4Y2VwdGlvbiBFbmRfb2Zfb2JqZWN0XG5leGNlcHRpb24gRW5kX29mX3R1cGxlXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbnR5cGUgbGV4ZXJfc3RhdGUgPSB7XG4gIGJ1ZiA6IEJ1ZmZlci50OyAoKiBCdWZmZXIgdXNlZCB0byBhY2N1bXVsYXRlIHN1YnN0cmluZ3MgKilcbiAgbXV0YWJsZSBsbnVtIDogaW50OyAoKiBDdXJyZW50IGxpbmUgbnVtYmVyIChzdGFydGluZyBmcm9tIDEpICopXG4gIG11dGFibGUgYm9sIDogaW50O1xuICAgICAgKCogQWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgY3VycmVudCBsaW5lXG4gICAgICAgICAoc3RhcnRpbmcgZnJvbSAwKSAqKVxuICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjsgKCogTmFtZSBkZXNjcmliaW5nIHRoZSBpbnB1dCBmaWxlICopXG59XG5cbm1vZHVsZSBMZXhlcl9zdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBsZXhlcl9zdGF0ZSA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cbmVuZFxuXG5sZXQgaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/KGxudW0gPSAxKSAoKSA9XG4gIGxldCBidWYgPSBtYXRjaCBidWYgd2l0aCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgMjU2IHwgU29tZSBidWYgLT4gYnVmIGluXG4gIHsgYnVmOyBsbnVtOyBib2wgPSAwOyBmbmFtZSB9XG4iLCJsZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2p1bmsgYnVmIG4gbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMiBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuICAgICAgICAoICgpIClcbiMgOTggXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgMSAtPlxuIyAzIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAoXG4gICAgIGlmIG4gPD0gMCB0aGVuICgpXG4gICAgIGVsc2UgYmVnaW5cbiAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChMZXhpbmcubGV4ZW1lX2NoYXIgbGV4YnVmIDApO1xuICAgICAgIHJlYWRfanVuayBidWYgKG4gLSAxKSBsZXhidWZcbiAgICAgZW5kXG4gICAgIClcbiMgMTA5IFwibGliL2xleGVyX3V0aWxzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMSBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuIFxubGV0IHJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgbiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICBsZXQgbGV4X2Fic19wb3MgPSBsZXhidWYubGV4X2Fic19wb3MgaW5cbiAgbGV0IGxleF9zdGFydF9wb3MgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICByZWFkX2p1bmsgYnVmIG4gbGV4YnVmO1xuICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBsZXhfc3RhcnRfcG9zICsgMTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleF9hYnNfcG9zXG5cbiMgMTI1IFwibGliL2xleGVyX3V0aWxzLm1sXCJcbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludCBvZiBpbnRcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cblxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IHggLT4geFxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBDb21tb24uTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIENvbW1vbi5qc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBidWZfc2l6ZSA9IDMyIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgYnVmX3NpemUgaW5cbiAgICBsZXQgKCkgPSBMZXhlcl91dGlscy5yZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIGJ1Zl9zaXplIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuXG4gIGxldCBuZXdsaW5lIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cblxuIyAxNTQgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDBcXDAwMFxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDEyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjIxXFwwMDFcXDAwMFxcMDAwXFwyNTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDI0MVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFwxOThcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDI1NVxcMjU1XFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTIyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMjBcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjM4XFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjM4XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuIyAxMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuIyAxMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuIyAxMDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5hblxuICAgICAgICAgICAgICAgIClcbiMgMTAzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMTgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBpbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICApXG4jIDEwNTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDE5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgKGZpbmlzaF9zdHJpbmcgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgKVxuIyAxMDY4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAyMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgICAgICAgICAgICAgKVxuIyAxMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDI1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgMjc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDExNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyAyODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyAyODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgMjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE5IC0+XG4jIDI5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcbiMgMTIxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDI5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuIyAxMjQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG4jIDEyNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuIyAxMjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuIyAxMjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG4jIDEyODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDMxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDMxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG4jIDEzMTAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzMTUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTMyMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzMjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuIyAzMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9jb2RlIHYuYnVmIHhcblxuICAgICAgICAgKVxuIyAxMzM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAzMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG4jIDEzNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzNzAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG4jIDEzODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcbiMgMTQxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDE0MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcbiMgMTQ0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG4jIDE0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzY5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMTQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuIyAxNTMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuIyAxNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTU1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMTU3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTU5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE1OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMTYzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuIyAxNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjY0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2OTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2OTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTgzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuIyAxODUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuIyAxODU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcbiMgMTg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpIClcbiMgMTg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNTA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcbiMgMTg4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNTIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA1MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTkyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgNTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuIyAxOTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjAwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDIxMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjEzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjIyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyOTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjMxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjMzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuIyAyMzk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG4jIDI0MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDcwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDI4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA3NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjU0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgNzQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDc2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNzgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA4MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDgxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyA4MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA4MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjY2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNjc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjY3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjcxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjczNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjc1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjc1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4ODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjgyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgOTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDkzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgOTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDkzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDkzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI4NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA5MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyODc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcbiMgMjkxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDI5MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjkyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI5NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI5NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgOTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDMwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwNDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwNjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA4NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzEzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzEzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG4jIDMxNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMzE3MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuIyAzMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAzMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiBcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IENvbW1vbi5pbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZDpfIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuIyAzMzc1IFwibGliL3JlYWQubWxcIlxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gaVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBTb21lIHNcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgIGBJbnQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgU3RyaW5nIHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG5lbmRcblxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIHwgYEZsb2F0bGl0IG9mIHN0cmluZ1xuICAgIHwgYFN0cmluZ2xpdCBvZiBzdHJpbmdcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICAoKiB0aGlzIHJlcXVpcmVzIGFuIGludCBhbmQgbmV2ZXIgdXNlcyBpdC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlXG4gICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gbm90IGJyZWFrIHRoZSBzaWduYXR1ciBidXQgY2FuIHNhZmVseVxuICAgICBiZSBjaGFuZ2VkIHRvIHJlcXVpcmUgdW5pdCBpbiBhIGZ1dHVyZSBjb21wYXRpYmlsaXR5LWJyZWFraW5nXG4gICAgIHJlbGVhc2UgKilcbiAgbGV0IF8gOiBpbnQgPSBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpIGluXG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIHwgeCAtPiB4XG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuZW5kXG5cbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nbGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nbGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXRsaXQgYSwgYEZsb2F0bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmdsaXQgYSwgYFN0cmluZ2xpdCBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBDb21tb24uTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIENvbW1vbi5qc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBidWZfc2l6ZSA9IDMyIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgYnVmX3NpemUgaW5cbiAgICBsZXQgKCkgPSBMZXhlcl91dGlscy5yZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIGJ1Zl9zaXplIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBuZXdsaW5lIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cblxuIyAxNTQgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDBcXDAwMFxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDEyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjIxXFwwMDFcXDAwMFxcMDAwXFwyNTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDI0MVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFwxOThcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDI1NVxcMjU1XFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTIyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMjBcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjM4XFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjM4XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuIyAxMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuIyAxMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuIyAxMDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiTmFOXCJcbiAgICAgICAgICAgICAgICApXG4jIDEwMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDE4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJJbmZpbml0eVwiXG4gICAgICAgICAgICAgICAgKVxuIyAxMDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiLUluZmluaXR5XCJcbiAgICAgICAgICAgICAgICApXG4jIDEwNTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDE5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nbGl0IChmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIClcbiMgMTA2OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgIClcbiMgMTA4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDIxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTExNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDIzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyAyNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDI3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDI4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDI4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyAyODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyAyODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTkgLT5cbiMgMjkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuIyAxMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAyOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAyOTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTIzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG4jIDEyNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTI2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcbiMgMTI3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG4jIDEyNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG4jIDEyODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcbiMgMTI4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcbiMgMTMxMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTMxNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzIwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTMyNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG4jIDMyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX2NvZGUgdi5idWYgeFxuXG4gICAgICAgICApXG4jIDEzMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDMyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcbiMgMTM0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTM3MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTM3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcbiMgMTM4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuIyAxNDE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMTQyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuIyAxNDQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcbiMgMTQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAxNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG4jIDE1MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG4jIDE1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTU0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTU2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAxNTcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTU5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAxNjMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG4jIDE2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2ODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTcwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQ1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxODExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTgzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG4jIDE4NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG4jIDE4NTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuIyAxODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikgKVxuIyAxODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA1MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuIyAxODg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA1MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDUyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTg5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA1MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG4jIDE5NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjA0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgICAgICApXG4jIDIxMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjEzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjIyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyOTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjMxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjMzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuIyAyMzk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG4jIDI0MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDcwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDI4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA3NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjU0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgNzQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDc2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNzgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgODAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyA4MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyA4MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgODE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgODE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI2NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjY3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI2NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjcwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjcyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjczMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjc0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI3NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjc4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKCc7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgOTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc8JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDkzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgOTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDkzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDkzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI4NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA5MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyODc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcbiMgMjkxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDI5MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjkyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI5NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI5NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgOTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDMwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwNDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwNjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA4NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzEzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzEzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG4jIDMxNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMzE3MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuIyAzMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAzMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiBcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IENvbW1vbi5pbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZDpfIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuIyAzMzc1IFwibGliL3JlYWQubWxcIlxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIHwgYFN0cmluZ2xpdCBfIC0+IFwic3RyaW5nbGl0XCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbmVuZFxuXG4iLCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IHJlYyB0b19iYXNpYyA6IHQgLT4gQmFzaWMudCA9IGZ1bmN0aW9uXG4gIHwgKGBOdWxsIHwgYEJvb2wgXyB8IGBJbnQgXyB8IGBGbG9hdCBfIHwgYFN0cmluZyBfKSBhcyB4IC0+IHhcbiAgfCBgSW50bGl0IHMgLT4gYFN0cmluZyBzXG4gIHwgYExpc3QgbCB8IGBUdXBsZSBsIC0+IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHRvX2Jhc2ljIGwpKVxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBgQXNzb2MgKExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHRvX2Jhc2ljIHYpKSBsKSlcbiAgfCBgVmFyaWFudCAoaywgTm9uZSkgLT4gYFN0cmluZyBrXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgLT4gYExpc3QgWyBgU3RyaW5nIGs7IHRvX2Jhc2ljIHYgXVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgfCB4IC0+IHhcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgbW9kdWxlIExleGluZyA9XG4gICAgKCpcbiAgICAgIFdlIG92ZXJyaWRlIExleGluZy5lbmdpbmUgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgcG9zaXRpb25cbiAgICAgIHJlY29yZCBlYWNoIHRpbWUgYSBydWxlIGlzIG1hdGNoZWQuXG4gICAgICBUaGlzIHJlZHVjZXMgdG90YWwgcGFyc2luZyB0aW1lIGJ5IGFib3V0IDMxJS5cbiAgICAqKVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIExleGluZ1xuXG4gICAgZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuXG4gICAgbGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgICAgIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gICAgICAoKlxuICAgICAgaWYgcmVzdWx0ID49IDAgdGhlbiBiZWdpblxuICAgICAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICAgICAgZW5kO1xuICAgICAgKilcbiAgICAgIHJlc3VsdFxuICBlbmRcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gQ29tbW9uLkxleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmVcIiBzXG4gICAgaW5cbiAgICBsZXQgYnl0ZXMgPVxuICAgICAgaWYgcG9zMSA9IHBvczIgdGhlblxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIiVzICVpLCAlczpcXG4lc1wiIGZpbGVfbGluZSB2LmxudW0gYnl0ZXMgZGVzY3IgaW5cbiAgICBDb21tb24uanNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgYnVmX3NpemUgPSAzMiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0ICgpID0gTGV4ZXJfdXRpbHMucmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBidWZfc2l6ZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IG5ld2xpbmUgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuXG4jIDE1NCBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMjFcXDAwMVxcMDAwXFwwMDBcXDI1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjQxXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMjU1XFwyNTVcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDI1NVxcMjU1XFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMjU1XFwyNTVcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIyMFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG4jIDEwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG4jIDEwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG4jIDEwMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDE3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgKVxuIyAxMDM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAxODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICApXG4jIDEwNjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDIwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICApXG4jIDEwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyAyMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyAyMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgMjUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgYFR1cGxlIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyAyNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnMgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYFZhcmlhbnQgKGNvbnMsIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgICApXG4jIDExNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyAyODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyAyODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgMjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE5IC0+XG4jIDI5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcbiMgMTIxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDI5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuIyAxMjQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG4jIDEyNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuIyAxMjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuIyAxMjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG4jIDEyODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDMxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDMxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG4jIDEzMTAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzMTUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTMyMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzMjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuIyAzMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9jb2RlIHYuYnVmIHhcblxuICAgICAgICAgKVxuIyAxMzM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAzMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG4jIDEzNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzNzAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG4jIDEzODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcbiMgMTQxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDE0MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcbiMgMTQ0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG4jIDE0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzY5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMTQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuIyAxNTMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuIyAxNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTU1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMTU3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTU5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE1OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMTYzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuIyAxNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjY0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2OTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2OTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTgzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuIyAxODUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuIyAxODU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcbiMgMTg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpIClcbiMgMTg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNTA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcbiMgMTg4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNTIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA1MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTkyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgNTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuIyAxOTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjAwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICAgICAgKVxuIyAyMTMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjE0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjE4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIyMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjI4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjMxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzMzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMjM5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuIyAyNDAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0MjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQyOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNzQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI1NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDc0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA3NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDc4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjYxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDgwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgODE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgODE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDgxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDgxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyNjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI2NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyNjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI3MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyNzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI3ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJygnO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDkxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPCc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyODQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA5MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDkzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA5MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA5MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyODcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgOTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjg3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG4jIDI5MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAyOTIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyOTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyOTQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjk1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDk4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAzMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5ODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5OTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDYzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzA3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwOTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzEyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuIyAzMTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTUzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDMxNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcbiMgMzE5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMzE5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBDb21tb24uaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQ6XyBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cbiMgMzM3NSBcImxpYi9yZWFkLm1sXCJcblxubW9kdWxlIFV0aWwgPSBzdHJ1Y3RcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgfCBgSW50IF8gLT4gXCJpbnRcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIHwgYFR1cGxlIF8gLT4gXCJ0dXBsZVwiXG4gIHwgYFZhcmlhbnQgXyAtPiBcInZhcmlhbnRcIlxuXG5sZXQgdHlwZXJyIG1zZyBqcyA9IHJhaXNlIChUeXBlX2Vycm9yIChtc2cgXiB0eXBlb2YganMsIGpzKSlcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmcgKiB0XG5cbmxldCBhc3NvYyBuYW1lIG9iaiA9IHRyeSBMaXN0LmFzc29jIG5hbWUgb2JqIHdpdGggTm90X2ZvdW5kIC0+IGBOdWxsXG5cbmxldCBtZW1iZXIgbmFtZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBhc3NvYyBuYW1lIG9ialxuICB8IGpzIC0+IHR5cGVyciAoXCJDYW4ndCBnZXQgbWVtYmVyICdcIiBeIG5hbWUgXiBcIicgb2Ygbm9uLW9iamVjdCB0eXBlIFwiKSBqc1xuXG5sZXQgcmVjIHBhdGggbCBvYmogPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBTb21lIG9ialxuICB8IGtleSA6OiBsIC0+IChcbiAgICAgIG1hdGNoIG9iaiB3aXRoXG4gICAgICB8IGBBc3NvYyBhc3NvYyAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBrZXkgYXNzb2Mgd2l0aFxuICAgICAgICAgIHwgb2JqIC0+IHBhdGggbCBvYmpcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW5kZXggaSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCBhcyBqcyAtPlxuICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgIGxldCB3cmFwcGVkX2luZGV4ID0gaWYgaSA8IDAgdGhlbiBsZW4gKyBpIGVsc2UgaSBpblxuICAgICAgaWYgd3JhcHBlZF9pbmRleCA8IDAgfHwgd3JhcHBlZF9pbmRleCA+PSBsZW4gdGhlblxuICAgICAgICByYWlzZSAoVW5kZWZpbmVkIChcIkluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb3V0IG9mIGJvdW5kc1wiLCBqcykpXG4gICAgICBlbHNlIExpc3QubnRoIGwgd3JhcHBlZF9pbmRleFxuICB8IGpzIC0+XG4gICAgICB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IGluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb2Ygbm9uLWFycmF5IHR5cGUgXCIpIGpzXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBgTGlzdCAoTGlzdC5tYXAgZiBsKVxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IG1hcCBmdW5jdGlvbiBvdmVyIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCB0b19hc3NvYyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBvYmplY3QsIGdvdCBcIiBqc1xuXG5sZXQgdG9fb3B0aW9uIGYgPSBmdW5jdGlvbiBgTnVsbCAtPiBOb25lIHwgeCAtPiBTb21lIChmIHgpXG5sZXQgdG9fYm9vbCA9IGZ1bmN0aW9uIGBCb29sIGIgLT4gYiB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wsIGdvdCBcIiBqc1xuXG5sZXQgdG9fYm9vbF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT4gU29tZSBiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXIgPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBmbG9hdCBpXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSAoZmxvYXQgaSlcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IGBGbG9hdCBmIC0+IGZcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGlcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IFNvbWUgaVxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gc1xuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gU29tZSBzXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIGBJbnQgeCAtPiBTb21lIChmbG9hdCB4KVxuICAgICAgfCBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYFN0cmluZyB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuZW5kXG5cbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludCBvZiBpbnRcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgfCB4IC0+IHhcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nbGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nbGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0bGl0IGEsIGBGbG9hdGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZ2xpdCBhLCBgU3RyaW5nbGl0IGIgLT4gYSA9IGJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiIsIm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4hIFlvanNvblxuXG50eXBlIHQgPSBZb2pzb24uU2FmZS50XG5cbmxldCB5b2pzb25fb2ZfdW5pdCAoKSA6IHQgPSBgTnVsbFxubGV0IHlvanNvbl9vZl9ib29sIGIgOiB0ID0gYEJvb2wgYlxubGV0IHlvanNvbl9vZl9zdHJpbmcgc3RyIDogdCA9IGBTdHJpbmcgc3RyXG5sZXQgeW9qc29uX29mX2J5dGVzIGJ5dGVzIDogdCA9IGBTdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBieXRlcylcbmxldCB5b2pzb25fb2ZfY2hhciBjIDogdCA9IGBTdHJpbmcgKFN0cmluZy5tYWtlIDEgYylcbmxldCB5b2pzb25fb2ZfaW50IG4gOiB0ID0gYEludCBuXG5sZXQgeW9qc29uX29mX2Zsb2F0IG4gOiB0ID0gYEZsb2F0IG5cbmxldCB5b2pzb25fb2ZfaW50MzIgKG4gOiBJbnQzMi50KSA6IHQgPSBgSW50bGl0IChJbnQzMi50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfaW50NjQgKG4gOiBJbnQ2NC50KSA6IHQgPSBgSW50bGl0IChJbnQ2NC50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfbmF0aXZlaW50IG4gOiB0ID0gYEludGxpdCAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9yZWYgeW9qc29uX29mX19hIHJmID0geW9qc29uX29mX19hICFyZlxubGV0IHlvanNvbl9vZl9sYXp5X3QgeW9qc29uX29mX19hIGx2ID0geW9qc29uX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgeW9qc29uX29mX29wdGlvbiB5b2pzb25fb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiB5b2pzb25fb2ZfX2EgeFxuICB8IE5vbmUgLT4gYE51bGxcbjs7XG5cbmxldCB5b2pzb25fb2ZfcGFpciB5b2pzb25fb2ZfX2EgeW9qc29uX29mX19iIChhLCBiKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiIF1cbjs7XG5cbmxldCB5b2pzb25fb2ZfdHJpcGxlIHlvanNvbl9vZl9fYSB5b2pzb25fb2ZfX2IgeW9qc29uX29mX19jIChhLCBiLCBjKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiOyB5b2pzb25fb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgeW9qc29uX29mX2xpc3QgeW9qc29uX29mX19hIGxzdCA9IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIH5mOnlvanNvbl9vZl9fYSBsc3QpKVxuXG5sZXQgeW9qc29uX29mX2FycmF5IHlvanNvbl9vZl9fYSBhciA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkubGVuZ3RoIGFyIC0gMSBkb3dudG8gMCBkb1xuICAgIGxzdF9yZWYgOj0geW9qc29uX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHlvanNvbl9vZl9oYXNodGJsIHlvanNvbl9vZl9rZXkgeW9qc29uX29mX3ZhbCBodGJsID1cbiAgbGV0IGNvbGwgfmtleTprIH5kYXRhOnYgYWNjID0gYExpc3QgWyB5b2pzb25fb2Zfa2V5IGs7IHlvanNvbl9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBgTGlzdCAoSGFzaHRibC5mb2xkIGh0YmwgfmluaXQ6W10gfmY6Y29sbClcbjs7XG5cbmxldCB5b2pzb25fb2Zfb3BhcXVlIF8gPSBgU3RyaW5nIFwiPG9wYXF1ZT5cIlxubGV0IHlvanNvbl9vZl9mdW4gXyA9IGBTdHJpbmcgXCI8ZnVuPlwiXG5cbmV4Y2VwdGlvbiBPZl95b2pzb25fZXJyb3Igb2YgZXhuICogdFxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2ZfeW9qc29uX2Vycm9yX2V4biBleGMgeW9qc29uID0gcmFpc2UgKE9mX3lvanNvbl9lcnJvciAoZXhjLCB5b2pzb24pKVxubGV0IG9mX3lvanNvbl9lcnJvciB3aGF0IHlvanNvbiA9IHJhaXNlIChPZl95b2pzb25fZXJyb3IgKEZhaWx1cmUgd2hhdCwgeW9qc29uKSlcblxubGV0IHVuaXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYE51bGwgLT4gKClcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInVuaXRfb2ZfeW9qc29uOiBgTnVsbCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBib29sX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBCb29sIHYgLT4gdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYm9vbF9vZl95b2pzb246IHRydWUvZmFsc2UgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgc3RyaW5nX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwic3RyaW5nX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGJ5dGVzX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IEJ5dGVzLm9mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImJ5dGVzX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGNoYXJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA8PiAxXG4gICAgdGhlbiBvZl95b2pzb25fZXJyb3IgXCJjaGFyX29mX3lvanNvbjogc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiB5b2pzb247XG4gICAgc3RyLlswXVxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiY2hhcl9vZl95b2pzb246IHN0cmluZyBvZiBzaXplIG9uZSBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludCB2IC0+IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgZmxvYXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEZsb2F0IHYgLT4gdlxuICB8IGBJbnQgaSAtPiBmbG9hdF9vZl9pbnQgaVxuICB8IGBJbnRsaXQgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImZsb2F0X29mX3lvanNvbjogZmxvYXQgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50MzJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gSW50MzIub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBJbnQzMi5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50MzJfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludDY0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IEludDY0Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gSW50NjQub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludDY0X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBuYXRpdmVpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gTmF0aXZlaW50Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gTmF0aXZlaW50Lm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJuYXRpdmVpbnRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IHJlZl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9IHJlZiAoYV9fb2ZfeW9qc29uIHlvanNvbilcbmxldCBsYXp5X3Rfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPSBMYXp5LmZyb21fdmFsIChhX19vZl95b2pzb24geW9qc29uKVxuXG5sZXQgb3B0aW9uX29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwgZWwgLT4gU29tZSAoYV9fb2ZfeW9qc29uIGVsKVxuOztcblxubGV0IHBhaXJfb2ZfeW9qc29uIGFfX29mX3lvanNvbiBiX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbiBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl95b2pzb24gYV95b2pzb24gaW5cbiAgICBsZXQgYiA9IGJfX29mX3lvanNvbiBiX3lvanNvbiBpblxuICAgIGEsIGJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInBhaXJfb2ZfeW9qc29uOiBpbnZhbGlkIGZvcm1hdFwiIHlvanNvblxuOztcblxubGV0IHRyaXBsZV9vZl95b2pzb24gYV9fb2ZfeW9qc29uIGJfX29mX3lvanNvbiBjX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbjsgY195b2pzb24gXSAtPlxuICAgIGxldCBhID0gYV9fb2ZfeW9qc29uIGFfeW9qc29uIGluXG4gICAgbGV0IGIgPSBiX19vZl95b2pzb24gYl95b2pzb24gaW5cbiAgICBsZXQgYyA9IGNfX29mX3lvanNvbiBjX3lvanNvbiBpblxuICAgIGEsIGIsIGNcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInRyaXBsZV9vZl95b2pzb246IGludmFsaWQgZm9ybWF0XCIgeW9qc29uXG47O1xuXG5sZXQgbGlzdF9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgbHN0IC0+XG4gICAgbGV0IHJldl9sc3QgPSBMaXN0LnJldl9tYXAgbHN0IH5mOmFfX29mX3lvanNvbiBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImxpc3Rfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGFycmF5X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbXSAtPiBbfHxdXG4gIHwgYExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3lvanNvbiBoKSBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMuKGkpIDwtIGFfX29mX3lvanNvbiBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImFycmF5X29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBoYXNodGJsX29mX3lvanNvbiBrZXlfb2ZfeW9qc29uIHZhbF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgWyBrX3lvanNvbjsgdl95b2pzb24gXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl95b2pzb24ga195b2pzb24pIH5kYXRhOih2YWxfb2ZfeW9qc29uIHZfeW9qc29uKVxuICAgICAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImhhc2h0Ymxfb2ZfeW9qc29uOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHlvanNvblxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaGFzaHRibF9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgb3BhcXVlX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJvcGFxdWVfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgeW9qc29uXG47O1xuXG5sZXQgZnVuX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJmdW5fb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiB5b2pzb25cbjs7XG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGxldCB5b2pzb25fb2ZfYXJyYXkgPSB5b2pzb25fb2ZfYXJyYXlcbiAgbGV0IGFycmF5X29mX3lvanNvbiA9IGFycmF5X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Jvb2wgPSB5b2pzb25fb2ZfYm9vbFxuICBsZXQgYm9vbF9vZl95b2pzb24gPSBib29sX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2NoYXIgPSB5b2pzb25fb2ZfY2hhclxuICBsZXQgY2hhcl9vZl95b2pzb24gPSBjaGFyX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Zsb2F0ID0geW9qc29uX29mX2Zsb2F0XG4gIGxldCBmbG9hdF9vZl95b2pzb24gPSBmbG9hdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQgPSB5b2pzb25fb2ZfaW50XG4gIGxldCBpbnRfb2ZfeW9qc29uID0gaW50X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludDMyID0geW9qc29uX29mX2ludDMyXG4gIGxldCBpbnQzMl9vZl95b2pzb24gPSBpbnQzMl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQ2NCA9IHlvanNvbl9vZl9pbnQ2NFxuICBsZXQgaW50NjRfb2ZfeW9qc29uID0gaW50NjRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGlzdCA9IHlvanNvbl9vZl9saXN0XG4gIGxldCBsaXN0X29mX3lvanNvbiA9IGxpc3Rfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbmF0aXZlaW50ID0geW9qc29uX29mX25hdGl2ZWludFxuICBsZXQgbmF0aXZlaW50X29mX3lvanNvbiA9IG5hdGl2ZWludF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9vcHRpb24gPSB5b2pzb25fb2Zfb3B0aW9uXG4gIGxldCBvcHRpb25fb2ZfeW9qc29uID0gb3B0aW9uX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3JlZiA9IHlvanNvbl9vZl9yZWZcbiAgbGV0IHJlZl9vZl95b2pzb24gPSByZWZfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2Zfc3RyaW5nID0geW9qc29uX29mX3N0cmluZ1xuICBsZXQgc3RyaW5nX29mX3lvanNvbiA9IHN0cmluZ19vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9ieXRlcyA9IHlvanNvbl9vZl9ieXRlc1xuICBsZXQgYnl0ZXNfb2ZfeW9qc29uID0gYnl0ZXNfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfdW5pdCA9IHlvanNvbl9vZl91bml0XG4gIGxldCB1bml0X29mX3lvanNvbiA9IHVuaXRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGF6eV90ID0geW9qc29uX29mX2xhenlfdFxuICBsZXQgbGF6eV90X29mX3lvanNvbiA9IGxhenlfdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9oYXNodGJsID0geW9qc29uX29mX2hhc2h0YmxcbiAgbGV0IGhhc2h0Ymxfb2ZfeW9qc29uID0gaGFzaHRibF9vZl95b2pzb25cbmVuZFxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBZb2pzb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4hIFN0ZExhYmVsc1xub3BlbiBZb2pzb25fY29udlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAoc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBzdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIHRhZyB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiBzdW0gdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiIGxvYyB0YWdcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYSBuZXN0ZWQgbGlzdFwiKSB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHlvanNvblxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHJlY29yZHMgKilcblxubGV0IHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3lvanNvbjogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvblxuOztcblxubGV0IHJlY29yZF9leHRyYV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb25cbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHlvanNvbiBsc3QgPVxuICBsZXQgdW5kZWZpbmVkID0gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBbXSBsc3QgaW5cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBsb2MgeW9qc29uID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3lvanNvbjogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCB2YWx1ZXMgb2YgdHlwZXMgcmVzdWx0aW5nIGZyb20gcG9seW1vcnBoaWMgcmVjb3JkIFxcXG4gICAgICAgZmllbGRzXCJcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbmxldCBub192YXJpYW50X21hdGNoICgpID0gcmFpc2UgTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IG5vIG1hdGNoaW5nIHZhcmlhbnQgZm91bmRcIikgeW9qc29uXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGZcbiAgICAgIFwiJXNfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHB0YWdfdGFrZXNfYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnIHRha2VzIGFuIGFyZ3VtZW50XCIpIHlvanNvblxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvclxuICAgIChsb2MgXiBcIl9vZl95b2pzb246IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpXG4gICAgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3JcbiAgICAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIilcbiAgICB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSB5b2pzb25cbjs7XG4iLCJtb2R1bGUgWW9qc29uX2NvbnZfZXJyb3IgPSBZb2pzb25fY29udl9lcnJvclxubW9kdWxlIFlvanNvbl9jb252ID0gWW9qc29uX2NvbnZcbm1vZHVsZSBZb2pzb25hYmxlID0gWW9qc29uYWJsZV9pbnRmXG5tb2R1bGUgWW9qc29uID0gWW9qc29uXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgICB8IE5vbmVcbiAgICB8IFNvbWUgb2YgJ2FcbmVuZFxuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgcG9seV9lcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IGZ1biB4IC0+ICF4XG4iLCIjIDEgXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbnR5cGUgbm9ucmVjIGludCA9IGludFxudHlwZSBub25yZWMgY2hhciA9IGNoYXJcbnR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZ1xudHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdFxudHlwZSBub25yZWMgYm9vbCA9IGJvb2xcbnR5cGUgbm9ucmVjIHVuaXQgPSB1bml0XG50eXBlIG5vbnJlYyBleG4gPSBleG5cbnR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXlcbnR5cGUgbm9ucmVjICdhIGxpc3QgPSAnYSBsaXN0XG50eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb25cbnR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludFxudHlwZSBub25yZWMgaW50MzIgPSBpbnQzMlxudHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NFxudHlwZSBub25yZWMgJ2EgbGF6eV90ID0gJ2EgbGF6eV90XG50eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzXG5cbiMgMTggXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbigqIFdlIHJlcXVpcmUgNC4wOCB3aGlsZSA0LjA3IGFscmVhZHkgaGFzIGEgU3RkbGliIG1vZHVsZS5cbiAgIEluIDQuMDcsIHRoZSB0eXBlIGVxdWFsaXRpZXMgb24gU3RkbGliLlBlcnZhc2l2ZXNcbiAgIGFyZSBub3Qgc3Ryb25nIGVub3VnaCBmb3IgdGhlICdpbmNsdWRlIFN0ZGxpYidcbiAgIGJlbG93IHRvIHNhdGlzZnkgdGhlIHNpZ25hdHVyZSBjb25zdHJhaW50cyBvblxuICAgUHB4X2Rlcml2aW5nX3J1bnRpbWUuUGVydmFzaXZlcy4gKilcbm1vZHVsZSBTdGRsaWIgPSBTdGRsaWJcblxuaW5jbHVkZSBTdGRsaWJcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSByZXN1bHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IEVycm9yIG9mICdiXG5cbiAgdHlwZSAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBFcnJvciBvZiAnYlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhpcyBtb2R1bGUgb2ZmZXJzIGEgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBiYXNlZCBvbiBkaXNqb2ludCBzZXRcbiAgIGZvcmVzdHMsIHdpdGggcGF0aCBjb21wcmVzc2lvbiBhbmQgbGlua2luZyBieSByYW5rLiAqKVxuXG5vcGVuIFN0b3JlXG5cbm1vZHVsZSBNYWtlIChTIDogU1RPUkUpID0gc3RydWN0XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSByYW5rIG9mIGEgdmVydGV4IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCwgaW4gZWRnZXMsIG9mIGFuIHVuY29tcHJlc3NlZCBwYXRoXG4gICB0aGF0IGxlYWRzIHRvIHRoaXMgdmVydGV4LiBJbiBvdGhlciB3b3JkcywgdGhlIHJhbmsgb2YgW3hdIGlzIHRoZSBoZWlnaHQgb2ZcbiAgIHRoZSB0cmVlIHJvb3RlZCBhdCBbeF0gdGhhdCB3b3VsZCBleGlzdCBpZiB3ZSBkaWQgbm90IHBlcmZvcm0gcGF0aFxuICAgY29tcHJlc3Npb24uICopXG5cbnR5cGUgcmFuayA9XG4gIGludFxuXG4oKiBUaGUgY29udGVudCBvZiBhIHZlcnRleCBpcyBhIHBvaW50ZXIgdG8gYSBwYXJlbnQgdmVydGV4IChpZiB0aGUgdmVydGV4XG4gICBoYXMgYSBwYXJlbnQpIG9yIGEgcGFpciBvZiBhIHJhbmsgYW5kIGEgdXNlciB2YWx1ZSAoaWYgdGhlIHZlcnRleCBoYXMgbm9cbiAgIHBhcmVudCwgYW5kIGlzIHRodXMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBmb3IgdGhpcyBlcXVpdmFsZW5jZVxuICAgY2xhc3MpLiAqKVxuXG4oKiBJbiB0aGlzIHZlcnNpb24gdGhlIGNvZGUsIHRoZSB0eXBlIFsnYSBjb250ZW50XSBtdXN0IG5vdCBtdXRhYmxlLiBJbmRlZWQsXG4gICBldmVyeSBtdXRhdGlvbiBtdXN0IGJlIHBlcmZvcm1lZCB2aWEgW1Muc2V0XS4gKilcblxudHlwZSAnYSBjb250ZW50ID1cbnwgTGluayBvZiAnYSBycmVmXG58IFJvb3Qgb2YgcmFuayAqICdhXG5cbigqIFRoZSB0eXBlIFsnYSBycmVmXSByZXByZXNlbnRzIGEgdmVydGV4IGluIHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlLiAqKVxuXG5hbmQgJ2EgcnJlZiA9XG4gICdhIGNvbnRlbnQgUy5ycmVmXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSB0eXBlIG9mIHN0b3JlcywgYW5kIHRoZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBuZXcgc3RvcmUsIGFyZSB0aG9zZVxuICAgb2YgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gW1NdLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgJ2EgY29udGVudCBTLnN0b3JlXG5cbmxldCBuZXdfc3RvcmUgOiB1bml0IC0+ICdhIHN0b3JlID1cbiAgUy5uZXdfc3RvcmVcblxubGV0IGNvcHkgOiAnYSBzdG9yZSAtPiAnYSBzdG9yZSA9XG4gIFMuY29weVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWFrZSBzIHZdIGNyZWF0ZXMgYSBuZXcgcm9vdCBvZiByYW5rIHplcm8uICopXG5cbmxldCBtYWtlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIFMubWFrZSBzIChSb290ICgwLCB2KSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2ZpbmQgcyB4XSBmaW5kcyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBvZiBbeF0uXG4gICBJdCBkb2VzIGJ5IGZvbGxvd2luZyB0aGUgcGF0aCBmcm9tIFt4XSB0byB0aGUgcm9vdC4gUGF0aCBjb21wcmVzc2lvbiBpc1xuICAgcGVyZm9ybWVkIChvbiB0aGUgd2F5IGJhY2spIGJ5IG1ha2luZyBldmVyeSB2ZXJ0ZXggYWxvbmcgdGhlIHBhdGggYVxuICAgZGlyZWN0IGNoaWxkIG9mIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguIE5vIHJhbmsgaXMgYWx0ZXJlZC4gKilcblxubGV0IHJlYyBmaW5kIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCBfKSAtPlxuICAgICAgeFxuICB8IExpbmsgeSAtPlxuICAgICAgbGV0IHogPSBmaW5kIHMgeSBpblxuICAgICAgaWYgUy5lcSBzIHkgeiB0aGVuXG4gICAgICAgIHpcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGxpbmtfdG9feiA9IFMuZ2V0IHMgeSBpblxuICAgICAgICBTLnNldCBzIHggbGlua190b196O1xuICAgICAgICB6XG5cbmxldCBpc19yZXByZXNlbnRhdGl2ZSAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB0cnVlXG4gIHwgTGluayBfIC0+XG4gICAgICBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZXEgcyB4IHldIGRldGVybWluZXMgd2hldGhlciB0aGUgdmVydGljZXMgW3hdIGFuZCBbeV0gYmVsb25nIGluIHRoZSBzYW1lXG4gICBlcXVpdmFsZW5jZSBjbGFzcy4gSXQgZG9lcyBzbyB2aWEgdHdvIGNhbGxzIHRvIFtmaW5kXSBhbmQgYSBwaHlzaWNhbFxuICAgZXF1YWxpdHkgdGVzdC4gQXMgYSBmYXN0IHBhdGgsIHdlIGZpcnN0IHRlc3Qgd2hldGhlciBbeF0gYW5kIFt5XSBhcmVcbiAgIHBoeXNpY2FsbHkgZXF1YWwuICopXG5cbmxldCBlcSAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgUy5lcSBzIHggeSB8fCBTLmVxIHMgKGZpbmQgcyB4KSAoZmluZCBzIHkpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtnZXRfIHMgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IGdldF8gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgbGV0IHggPSBmaW5kIHMgeCBpblxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogW2dldCBzIHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbigqIEJ5IG5vdCBjYWxsaW5nIFtmaW5kXSBpbW1lZGlhdGVseSwgd2Ugb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGVcbiAgIHBhdGggb3V0IG9mIFt4XSBoYXMgbGVuZ3RoIDAgb3IgMSwgYXQgdGhlIGV4cGVuc2Ugb2YgdGhlIGdlbmVyYWwgY2FzZS5cbiAgIFRodXMsIHdlIGNhbGwgW2ZpbmRdIG9ubHkgaWYgcGF0aCBjb21wcmVzc2lvbiBtdXN0IGJlIHBlcmZvcm1lZC4gKilcblxubGV0IGdldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICB2XG4gIHwgTGluayB5IC0+XG4gICAgICBtYXRjaCBTLmdldCBzIHkgd2l0aFxuICAgICAgfCBSb290IChfLCB2KSAtPlxuICAgICAgICAgIHZcbiAgICAgIHwgTGluayBfIC0+XG4gICAgICAgICAgZ2V0XyBzIHhcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3NldF8gcyB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgc2V0XyAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCB4ID0gZmluZCBzIHggaW5cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChyLCBfKSAtPlxuICAgICAgUy5zZXQgcyB4IChSb290IChyLCB2KSlcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiBbc2V0IHMgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxuKCogQnkgbm90IGNhbGxpbmcgW2ZpbmRdIGltbWVkaWF0ZWx5LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoZVxuICAgcGF0aCBvdXQgb2YgW3hdIGhhcyBsZW5ndGggMCBvciAxLCBhdCB0aGUgZXhwZW5zZSBvZiB0aGUgZ2VuZXJhbCBjYXNlLlxuICAgVGh1cywgd2UgY2FsbCBbZmluZF0gb25seSBpZiBwYXRoIGNvbXByZXNzaW9uIG11c3QgYmUgcGVyZm9ybWVkLiAqKVxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChyLCBfKSAtPlxuICAgICAgUy5zZXQgcyB4IChSb290IChyLCB2KSlcbiAgfCBMaW5rIHkgLT5cbiAgICAgIG1hdGNoIFMuZ2V0IHMgeSB3aXRoXG4gICAgICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICAgICAgUy5zZXQgcyB5IChSb290IChyLCB2KSlcbiAgICAgIHwgTGluayBfIC0+XG4gICAgICAgICAgc2V0XyBzIHggdlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbdW5pb24gcyB4IHldIG1lcmdlcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlcyBvZiBbeF0gYW5kIFt5XSBieSBpbnN0YWxsaW5nIGFcbiAgIGxpbmsgZnJvbSBvbmUgcm9vdCB2ZXJ0ZXggdG8gdGhlIG90aGVyLiAqKVxuXG4oKiBMaW5raW5nIGlzIGJ5IHJhbms6IHRoZSBzbWFsbGVyLXJhbmtlZCB2ZXJ0ZXggaXMgbWFkZSB0byBwb2ludCB0byB0aGVcbiAgIGxhcmdlci4gSWYgdGhlIHR3byB2ZXJ0aWNlcyBoYXZlIHRoZSBzYW1lIHJhbmssIHRoZW4gYW4gYXJiaXRyYXJ5IGNob2ljZVxuICAgaXMgbWFkZSwgYW5kIHRoZSByYW5rIG9mIHRoZSBuZXcgcm9vdCBpcyBpbmNyZW1lbnRlZCBieSBvbmUuICopXG5cbmxldCB1bmlvbiAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbGV0IHggPSBmaW5kIHMgeFxuICBhbmQgeSA9IGZpbmQgcyB5IGluXG4gIGlmIFMuZXEgcyB4IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCBTLmdldCBzIHgsIFMuZ2V0IHMgeSB3aXRoXG4gICAgfCBSb290IChyeCwgdngpLCBSb290IChyeSwgXykgLT5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB4IChMaW5rIHkpOyB5XG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTsgeFxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBTLnNldCBzIHggKFJvb3QgKHJ4ICsgMSwgdngpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21lcmdlXSBpcyBhbmFsb2dvdXMgdG8gW3VuaW9uXSwgYnV0IGludm9rZXMgYSB1c2VyLXNwZWNpZmllZCBmdW5jdGlvbiBbZl1cbiAgIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBbdl0gYXNzb2NpYXRlZCB3aXRoIHRoZSBlcXVpdmFsZW5jZSBjbGFzcy4gKilcblxuKCogVGhlIGZ1bmN0aW9uIFtmXSBtdXN0IG5vdCBhZmZlY3QgdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYnkgbWFraW5nXG4gICByZS1lbnRyYW50IGNhbGxzIHRvIFtzZXRdLCBbdW5pb25dLCBvciBbbWVyZ2VdLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yXG4gICB0aGlzLiBGaXJzdCwgW2ZdIG1heSBiZSBpbnZva2VkIGF0IGEgdGltZSB3aGVuIHRoZSBpbnZhcmlhbnQgb2YgdGhlIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0ZW1wb3JhcmlseSB2aW9sYXRlZDogaW4gdGhlIHRoaXJkIGJyYW5jaCBiZWxvdywgdGhlIHJhbmsgb2ZcbiAgIFt4XSBoYXMgbm90IHlldCBiZWVuIGluY3JlYXNlZCB3aGVuIFtmXSBpcyBpbnZva2VkLiBTZWNvbmQsIG1vcmUgc2VyaW91c2x5LFxuICAgaWYgW2ZdIGNvdWxkIGNhbGwsIHNheSwgW3VuaW9uXSwgdGhlbiB0aGF0IGNvdWxkIGNoYW5nZSBhIFtSb290XSBpbnRvIGFcbiAgIFtMaW5rXSwgc28gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgY2hhbmdlIGEgW0xpbmtdXG4gICBiYWNrIGludG8gYSBbUm9vdF0sIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNlLiBBbHNvLCBpZiBbZl1cbiAgIGNvdWxkIGNhbGwgW3NldF0sIHRoZW4gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgdW5kb1xuICAgdGhlIGVmZmVjdCBvZiB0aGlzIFtzZXRdIG9wZXJhdGlvbjsgdGhpcyBhbHNvIGRvZXMgbm90IG1ha2Ugc2Vuc2UuICopXG5cbigqIFRoZSB0ZXN0cyBbaWYgdiAhPSB2eSB0aGVuIC4uLl0gYW5kIFtpZiB2ICE9IHZ4IHRoZW4gLi4uXSBhcmUgaW50ZW5kZWQgdG9cbiAgIHNhdmUgYW4gYWxsb2NhdGlvbiBhbmQgYSB3cml0ZSB3aGVuIHBvc3NpYmxlLiAqKVxuXG4oKiBXZSBpbnZva2UgW2ZdIGJlZm9yZSBwZXJmb3JtaW5nIGFueSB1cGRhdGUsIHNvIHRoYXQgaWYgW2ZdIGZhaWxzXG4gICAoYnkgcmFpc2luZyBhbiBleGNlcHRpb24pLCB0aGUgc3RhdGUgaXMgdW5hZmZlY3RlZC4gKilcblxubGV0IG1lcmdlIHMgKGYgOiAnYSAtPiAnYSAtPiAnYSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIGxldCB4ID0gZmluZCBzIHhcbiAgYW5kIHkgPSBmaW5kIHMgeSBpblxuICBpZiBTLmVxIHMgeCB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggUy5nZXQgcyB4LCBTLmdldCBzIHkgd2l0aFxuICAgIHwgUm9vdCAocngsIHZ4KSwgUm9vdCAocnksIHZ5KSAtPlxuICAgICAgICBsZXQgdiA9IGYgdnggdnkgaW5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB4IChMaW5rIHkpO1xuICAgICAgICAgIGlmIHYgIT0gdnkgdGhlbiBTLnNldCBzIHkgKFJvb3QgKHJ5LCB2KSk7XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIFMuc2V0IHMgeCAoUm9vdCAocngsIHYpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIFMuc2V0IHMgeCAoUm9vdCAocngrMSwgdikpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGlzIG1vZHVsZSBvZmZlcnMgYSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJhc2VkIG9uIGRpc2pvaW50IHNldFxuICAgZm9yZXN0cywgd2l0aCBwYXRoIGNvbXByZXNzaW9uIGFuZCBsaW5raW5nIGJ5IHJhbmsuICopXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSByYW5rIG9mIGEgdmVydGV4IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCwgaW4gZWRnZXMsIG9mIGFuIHVuY29tcHJlc3NlZCBwYXRoXG4gICB0aGF0IGxlYWRzIHRvIHRoaXMgdmVydGV4LiBJbiBvdGhlciB3b3JkcywgdGhlIHJhbmsgb2YgW3hdIGlzIHRoZSBoZWlnaHQgb2ZcbiAgIHRoZSB0cmVlIHJvb3RlZCBhdCBbeF0gdGhhdCB3b3VsZCBleGlzdCBpZiB3ZSBkaWQgbm90IHBlcmZvcm0gcGF0aFxuICAgY29tcHJlc3Npb24uICopXG5cbnR5cGUgcmFuayA9XG4gIGludFxuXG4oKiBUaGUgY29udGVudCBvZiBhIHZlcnRleCBpcyBhIHBvaW50ZXIgdG8gYSBwYXJlbnQgdmVydGV4IChpZiB0aGUgdmVydGV4XG4gICBoYXMgYSBwYXJlbnQpIG9yIGEgcGFpciBvZiBhIHJhbmsgYW5kIGEgdXNlciB2YWx1ZSAoaWYgdGhlIHZlcnRleCBoYXMgbm9cbiAgIHBhcmVudCwgYW5kIGlzIHRodXMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBmb3IgdGhpcyBlcXVpdmFsZW5jZVxuICAgY2xhc3MpLiAqKVxuXG4oKiBXZSBtYWtlIHRoZSB0eXBlIFsnYSBjb250ZW50XSBtdXRhYmxlLCBhbmQgd2UgbWFpbnRhaW4gdGhlIHByb3BlcnR5IHRoYXRcbiAgIGV2ZXJ5IHZlcnRleCB1bmlxdWVseSBvd25zIGl0cyBjb250ZW50LiBUaGlzIGFsbG93cyB1cyB0byB1cGRhdGUgYSBjb250ZW50XG4gICBpbiBwbGFjZSBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBuZXcgY29udGVudCBhbmQgdXBkYXRpbmcgdGhlIHZlcnRleCB3aXRoXG4gICB0aGlzIG5ldyBjb250ZW50LlxuXG4gICBXZSBvYnRhaW4gdGhlIHByb3BlcnR5IHRoYXQ6XG4gICAtIG9ubHkgW21ha2VdIGFsbG9jYXRlcyBhIG5ldyB2ZXJ0ZXggKGEgcmVmZXJlbmNlIGFuZCBhIFtSb290XSBjb250ZW50KTtcbiAgIC0gb25seSBbdW5pb25dIGFuZCBbbWVyZ2VdIGFsbG9jYXRlIGEgbmV3IGVkZ2UgKGEgW0xpbmtdIGNvbnRlbnQpLlxuICAgW2ZpbmRdLCBbZ2V0XSwgW3NldF0sIFtlcV0gYWxsb2NhdGUgbm8gbWVtb3J5LiAqKVxuXG50eXBlICdhIGNvbnRlbnQgPVxufCBMaW5rIG9mIHsgbXV0YWJsZSBwYXJlbnQgOiAnYSBlbGVtIH1cbnwgUm9vdCBvZiB7IG11dGFibGUgcmFuayA6IHJhbms7IG11dGFibGUgdmFsdWUgOiAnYSB9XG5cbigqIFRoZSB0eXBlIFsnYSBlbGVtXSByZXByZXNlbnRzIGEgdmVydGV4IGluIHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlLiAqKVxuXG5hbmQgJ2EgZWxlbSA9XG4gICdhIGNvbnRlbnQgcmVmXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttYWtlIHZdIGNyZWF0ZXMgYSBuZXcgcm9vdCBvZiByYW5rIHplcm8uICopXG5cbmxldCBtYWtlICh2IDogJ2EpIDogJ2EgZWxlbSA9XG4gIHJlZiAoUm9vdCB7IHJhbmsgPSAwOyB2YWx1ZSA9IHYgfSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2ZpbmQgeF0gZmluZHMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mgb2YgW3hdLlxuICAgSXQgZG9lcyBzbyBieSBmb2xsb3dpbmcgdGhlIHBhdGggZnJvbSBbeF0gdG8gdGhlIHJvb3QuIFBhdGggY29tcHJlc3Npb24gaXNcbiAgIHBlcmZvcm1lZCAob24gdGhlIHdheSBiYWNrKSBieSBtYWtpbmcgZXZlcnkgdmVydGV4IGFsb25nIHRoZSBwYXRoIGFcbiAgIGRpcmVjdCBjaGlsZCBvZiB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4LiBObyByYW5rIGlzIGFsdGVyZWQuICopXG5cbmxldCByZWMgZmluZCAoeCA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHhcbiAgfCBMaW5rICh7IHBhcmVudCA9IHkgfSBhcyBsaW5rKSAtPlxuICAgICAgbGV0IHogPSBmaW5kIHkgaW5cbiAgICAgIGlmIHogIT0geSB0aGVuXG4gICAgICAgIGxpbmsucGFyZW50IDwtIHo7XG4gICAgICB6XG5cbmxldCBpc19yZXByZXNlbnRhdGl2ZSAoeCA6ICdhIGVsZW0pIDogYm9vbCA9XG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHRydWVcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtlcSB4IHldIGRldGVybWluZXMgd2hldGhlciB0aGUgdmVydGljZXMgW3hdIGFuZCBbeV0gYmVsb25nIGluIHRoZVxuICAgc2FtZSBlcXVpdmFsZW5jZSBjbGFzcy4gSXQgZG9lcyBzbyB2aWEgdHdvIGNhbGxzIHRvIFtmaW5kXSBhbmQgYVxuICAgcGh5c2ljYWwgZXF1YWxpdHkgdGVzdC4gQXMgYSBmYXN0IHBhdGgsIHdlIGZpcnN0IHRlc3Qgd2hldGhlciBbeF1cbiAgIGFuZCBbeV0gYXJlIHBoeXNpY2FsbHkgZXF1YWwuICopXG5cbmxldCBlcSAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiBib29sID1cbiAgeCA9PSB5IHx8IGZpbmQgeCA9PSBmaW5kIHlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2dldCB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgZ2V0ICh4IDogJ2EgZWxlbSkgOiAnYSA9XG4gIGxldCB4ID0gZmluZCB4IGluXG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IHsgdmFsdWUgPSB2OyBfIH0gLT5cbiAgICAgIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbc2V0IHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBzZXQgKHggOiAnYSBlbGVtKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgeCA9IGZpbmQgeCBpblxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCByb290IC0+XG4gICAgICByb290LnZhbHVlIDwtIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbdW5pb24geCB5XSBtZXJnZXMgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXMgb2YgW3hdIGFuZCBbeV0gYnkgaW5zdGFsbGluZyBhXG4gICBsaW5rIGZyb20gb25lIHJvb3QgdmVydGV4IHRvIHRoZSBvdGhlci4gKilcblxuKCogTGlua2luZyBpcyBieSByYW5rOiB0aGUgc21hbGxlci1yYW5rZWQgdmVydGV4IGlzIG1hZGUgdG8gcG9pbnQgdG8gdGhlXG4gICBsYXJnZXIuIElmIHRoZSB0d28gdmVydGljZXMgaGF2ZSB0aGUgc2FtZSByYW5rLCB0aGVuIGFuIGFyYml0cmFyeSBjaG9pY2VcbiAgIGlzIG1hZGUsIGFuZCB0aGUgcmFuayBvZiB0aGUgbmV3IHJvb3QgaXMgaW5jcmVtZW50ZWQgYnkgb25lLiAqKVxuXG5sZXQgdW5pb24gKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIGxldCB4ID0gZmluZCB4XG4gIGFuZCB5ID0gZmluZCB5IGluXG4gIGlmIHggPT0geSB0aGVuIHggZWxzZVxuICAgIG1hdGNoICF4LCAheSB3aXRoXG4gICAgfCBSb290ICh7IHJhbmsgPSByeDsgXyB9IGFzIHJvb3R4KSwgUm9vdCB7IHJhbmsgPSByeTsgXyB9IC0+XG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHggOj0gTGluayB7IHBhcmVudCA9IHkgfTtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geH07XG4gICAgICAgICAgcm9vdHgucmFuayA8LSByeCArIDE7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttZXJnZV0gaXMgYW5hbG9nb3VzIHRvIFt1bmlvbl0sIGJ1dCBpbnZva2VzIGEgdXNlci1zcGVjaWZpZWQgZnVuY3Rpb24gW2ZdXG4gICB0byBjb21wdXRlIHRoZSBuZXcgdmFsdWUgW3ZdIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXF1aXZhbGVuY2UgY2xhc3MuICopXG5cbigqIFRoZSBmdW5jdGlvbiBbZl0gbXVzdCBub3QgYWZmZWN0IHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJ5IG1ha2luZ1xuICAgcmUtZW50cmFudCBjYWxscyB0byBbc2V0XSwgW3VuaW9uXSwgb3IgW21lcmdlXS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvclxuICAgdGhpcy4gRmlyc3QsIFtmXSBtYXkgYmUgaW52b2tlZCBhdCBhIHRpbWUgd2hlbiB0aGUgaW52YXJpYW50IG9mIHRoZSBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGVtcG9yYXJpbHkgdmlvbGF0ZWQ6IGluIHRoZSB0aGlyZCBicmFuY2ggYmVsb3csIHRoZSByYW5rIG9mXG4gICBbeF0gaGFzIG5vdCB5ZXQgYmVlbiBpbmNyZWFzZWQgd2hlbiBbZl0gaXMgaW52b2tlZC4gU2Vjb25kLCBtb3JlIHNlcmlvdXNseSxcbiAgIGlmIFtmXSBjb3VsZCBjYWxsLCBzYXksIFt1bmlvbl0sIHRoZW4gdGhhdCBjb3VsZCBjaGFuZ2UgYSBbUm9vdF0gaW50byBhXG4gICBbTGlua10sIHNvIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IGNoYW5nZSBhIFtMaW5rXVxuICAgYmFjayBpbnRvIGEgW1Jvb3RdLCBzb21ldGhpbmcgdGhhdCBkb2VzIG5vdCBtYWtlIGFueSBzZW5zZS4gQWxzbywgaWYgW2ZdXG4gICBjb3VsZCBjYWxsIFtzZXRdLCB0aGVuIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IHVuZG9cbiAgIHRoZSBlZmZlY3Qgb2YgdGhpcyBbc2V0XSBvcGVyYXRpb247IHRoaXMgYWxzbyBkb2VzIG5vdCBtYWtlIHNlbnNlLiAqKVxuXG4oKiBUaGUgdGVzdHMgW2lmIHYgIT0gdnkgdGhlbiAuLi5dIGFuZCBbaWYgdiAhPSB2eCB0aGVuIC4uLl0gYXJlIGludGVuZGVkIHRvXG4gICBzYXZlIGFuIGFsbG9jYXRpb24gYW5kIGEgd3JpdGUgd2hlbiBwb3NzaWJsZS4gKilcblxuKCogV2UgaW52b2tlIFtmXSBiZWZvcmUgcGVyZm9ybWluZyBhbnkgdXBkYXRlLCBzbyB0aGF0IGlmIFtmXSBmYWlsc1xuICAgKGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uKSwgdGhlIHN0YXRlIGlzIHVuYWZmZWN0ZWQuICopXG5cbmxldCBtZXJnZSAoZiA6ICdhIC0+ICdhIC0+ICdhKSAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbGV0IHggPSBmaW5kIHhcbiAgYW5kIHkgPSBmaW5kIHkgaW5cbiAgaWYgeCA9PSB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggIXgsICF5IHdpdGhcbiAgICB8IFJvb3QgKHsgcmFuayA9IHJ4OyB2YWx1ZSA9IHZ4IH0gYXMgcm9vdHgpLFxuICAgICAgUm9vdCAoeyByYW5rID0gcnk7IHZhbHVlID0gdnkgfSBhcyByb290eSkgLT5cbiAgICAgICAgbGV0IHYgPSBmIHZ4IHZ5IGluXG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHggOj0gTGluayB7IHBhcmVudCA9IHkgfTtcbiAgICAgICAgICBpZiB2ICE9IHZ5IHRoZW4gcm9vdHkudmFsdWUgPC0gdjtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gcm9vdHgudmFsdWUgPC0gdjtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIHJvb3R4LnJhbmsgPC0gcnggKyAxO1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiByb290eC52YWx1ZSA8LSB2O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIElOVE1BUCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdmFsIGVtcHR5OiAnYSB0XG4gIHZhbCBmaW5kOiBpbnQgLT4gJ2EgdCAtPiAnYVxuICB2YWwgYWRkOiBpbnQgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKEludE1hcCA6IElOVE1BUCkgPSBzdHJ1Y3RcblxuKCogQSBzdG9yZSBpcyBpbXBsZW1lbnRlZCBhcyBhIHBhaXIgb2YgYW4gaW50ZWdlciBhZGRyZXNzIGFuZCBhIG1hcCBvZlxuICAgaW50ZWdlciBhZGRyZXNzZXMgdG8gdmFsdWVzLiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlXG4gICBkb21haW4gb2YgdGhlIG1hcCBbY29udGVudF0gaXMgdGhlIHNlbWktb3BlbiBpbnRlcnZhbCBvZiB6ZXJvXG4gICAoaW5jbHVkZWQpIHVwIHRvIFtsaW1pdF0gKGV4Y2x1ZGVkKS4gKilcblxudHlwZSAnYSBzdG9yZSA9IHtcbiAgKCogVGhlIG5leHQgYXZhaWxhYmxlIGFkZHJlc3MuICopXG4gIG11dGFibGUgbGltaXQ6ICAgaW50O1xuICAoKiBUaGUgY29udGVudCBvZiB0aGUgc3RvcmUuICopXG4gIG11dGFibGUgY29udGVudDogJ2EgSW50TWFwLnRcbn1cblxubGV0IG5ld19zdG9yZSAoKSA9IHtcbiAgbGltaXQgPSAwO1xuICBjb250ZW50ID0gSW50TWFwLmVtcHR5XG59XG5cbigqIEJlY2F1c2UgYSBwZXJzaXN0ZW50IG1hcCBpcyB1c2VkLCBjb3B5aW5nIGEgc3RvcmUgYW1vdW50cyB0byBjb3B5aW5nXG4gICB0aGUgbXV0YWJsZSByZWNvcmQgYXQgdGhlIHJvb3QuICopXG5cbmxldCBjb3B5IHMgPVxuICB7IGxpbWl0ID0gcy5saW1pdDsgY29udGVudCA9IHMuY29udGVudCB9XG5cbigqIEEgcmVmZXJlbmNlIGlzIGp1c3QgYW4gaW50ZWdlciBhZGRyZXNzLiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICBpbnRcblxubGV0IG1ha2UgcyB2ID1cbiAgbGV0IHggPSBzLmxpbWl0IGluXG4gIHMubGltaXQgPC0geCArIDE7XG4gIHMuY29udGVudCA8LSBJbnRNYXAuYWRkIHggdiBzLmNvbnRlbnQ7XG4gIHhcblxuKCogW2NoZWNrIHMgeF0gY2hlY2tzIHRoYXQgdGhlIGFkZHJlc3MgW3hdIGlzIGluIHJhbmdlIGZvciB0aGUgc3RvcmUgW3NdLiBJZlxuICAgdGhpcyBkeW5hbWljIGNoZWNrIGZhaWxzLCB0aGVuIHRoZSB1c2VyIGlzIGNvbmZ1c2VkIGFuZCBoYXMgcGFzc2VkIHVzIGFuXG4gICBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuIChJZiB0aGUgY2hlY2sgc3VjY2VlZHMsXG4gICB0aGUgdXNlciBtYXkgYmUgY29uZnVzZWQgdG9vISBidXQgd2UgY2Fubm90IGRldGVjdCBpdC4pICopXG5cbmV4Y2VwdGlvbiBJbnZhbGlkUmVmXG5cbmxldCBjaGVjayAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpID1cbiAgKCogV2UgZG8gbm90IGNoZWNrIHRoYXQgW3hdIGlzIG5vbm5lZ2F0aXZlLiBBbiBvdmVyZmxvdyBjYW5ub3Qgb2NjdXIsXG4gICAgIHNpbmNlIHRoYXQgd291bGQgaW1wbHkgdGhhdCB3ZSBoYXZlIGZpbGxlZCB0aGUgbWVtb3J5IHdpdGggYSBodWdlXG4gICAgIGFycmF5LiAqKVxuICAgaWYgeCA+PSBzLmxpbWl0IHRoZW5cbiAgICAgcmFpc2UgSW52YWxpZFJlZlxuXG5sZXQgZ2V0IHMgeCA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBJbnRNYXAuZmluZCB4IHMuY29udGVudFxuXG5sZXQgc2V0IHMgeCB2ID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIHMuY29udGVudCA8LSBJbnRNYXAuYWRkIHggdiBzLmNvbnRlbnRcblxubGV0IGVxIHMgKHggOiBpbnQpICh5IDogaW50KSA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBjaGVjayBzIHk7XG4gIHggPSB5XG5cbmVuZFxuXG4oKiBJbmNsdWRlIHRoZSBtb3N0IGNvbW1vbiBpbnN0YW5jZSBvZiB0aGUgYWJvdmUgZnVuY3Rvci4gKilcblxuaW5jbHVkZSBNYWtlKE1hcC5NYWtlKHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGNvbXBhcmUgPSAoLSkgKCogb2sgc2luY2UgdGhlIGFyZ3VtZW50cyBhcmUgbm9ubmVnYXRpdmUgaW50ZWdlcnMgKilcbmVuZCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogV2hlbiBPQ2FtbCdzIGJ1aWx0LWluIHN0b3JlIGlzIHVzZWQsIG5vIGV4cGxpY2l0IHN0b3JlIGlzIG5lZWRlZC4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gIHVuaXRcblxubGV0IG5ld19zdG9yZSAoKSA9XG4gICgpXG5cbigqIENvcHlpbmcgaXMgbm90IHN1cHBvcnRlZC4gKilcblxubGV0IGNvcHkgX3MgPVxuICBhc3NlcnQgZmFsc2VcblxuKCogQSByZWZlcmVuY2UgaXMgYSBwcmltaXRpdmUgcmVmZXJlbmNlLiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICAnYSByZWZcblxubGV0IG1ha2UgKCkgdiA9XG4gIHJlZiB2XG5cbmxldCBnZXQgKCkgeCA9XG4gICF4XG5cbmxldCBzZXQgKCkgeCB2ID1cbiAgeCA6PSB2XG5cbmxldCBlcSAoKSB4IHkgPVxuICB4ID09IHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHJlZmVyZW5jZSBjZWxsIHJlY29yZHMgYm90aCBpdHMgY3VycmVudCAocG9zc2libHkgdW5jb21taXR0ZWQpIHZhbHVlIGFuZFxuICAgaXRzIGxhc3QgY29tbWl0dGVkIHZhbHVlLiBBIGNlbGwgaXMgY29uc2lkZXJlZCBzdGFibGUgd2hlbiB0aGVzZSB0d28gdmFsdWVzXG4gICBhcmUgKHBoeXNpY2FsbHkpIGVxdWFsLCBhbmQgdW5zdGFibGUgb3RoZXJ3aXNlLiAqKVxuXG4oKiBPbmUgY291bGQgcGVyaGFwcyBlbnJpY2ggZWFjaCBjZWxsIHdpdGggYSBwb2ludGVyIHRvIGl0cyBzdG9yZSwgc28gYXMgdG9cbiAgIGVuc3VyZSBhdCBydW50aW1lIHRoYXQgdGhlIHVzZXIgaXMgbm90IGNvbmZ1c2VkLiAqKVxuXG50eXBlICdhIHJyZWYgPSB7XG4gICgqIFRoZSBjdXJyZW50IChwb3NzaWJseSB1bmNvbW1pdHRlZCkgdmFsdWUuICopXG4gIG11dGFibGUgY3VycmVudDogJ2E7XG4gICgqIFRoZSBsYXN0IGNvbW1pdHRlZCB2YWx1ZS4gKilcbiAgbXV0YWJsZSBjb21taXR0ZWQ6ICdhXG59XG5cbigqIEEgdHJhbnNhY3Rpb24gY29udGFpbnMgYSBzdGFjayBvZiBhbGwgdW5zdGFibGUgY2VsbHMgKGFuZCBwb3NzaWJseSBzb21lXG4gICBzdGFibGUgY2VsbHMgdG9vLCBhbHRob3VnaCB0aGF0IGlzIHVubGlrZWx5KS4gKilcblxudHlwZSAnYSB0cmFuc2FjdGlvbiA9XG4gICdhIHJyZWYgU3RhY2sudFxuXG4oKiBBIHN0b3JlIGNvbnRhaW5zIGFuIG9wdGlvbmFsIHRyYW5zYWN0aW9uLiBUaGlzIGluZGljYXRlcyB3aGV0aGVyIGFcbiAgIHRyYW5zYWN0aW9uIGlzIGN1cnJlbnRseSBvbmdvaW5nLiBUcmFuc2FjdGlvbnMgY2Fubm90IGJlIG5lc3RlZC4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gIHsgbXV0YWJsZSB0cmFuc2FjdGlvbjogJ2EgdHJhbnNhY3Rpb24gb3B0aW9uIH1cblxubGV0IG5ld19zdG9yZSAoKSA6ICdhIHN0b3JlID1cbiAgeyB0cmFuc2FjdGlvbiA9IE5vbmUgfVxuXG4oKiBDb3B5aW5nIGlzIG5vdCBzdXBwb3J0ZWQuICopXG5cbmxldCBjb3B5IF9zID1cbiAgYXNzZXJ0IGZhbHNlXG5cbmxldCBtYWtlIChfcyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICB7IGN1cnJlbnQgPSB2OyBjb21taXR0ZWQgPSB2IH1cblxubGV0IGdldCAoX3MgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgeC5jdXJyZW50XG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICAoKiBJZiB0aGUgbmV3IHZhbHVlIGhhcHBlbnMgdG8gYmUgdGhlIGN1cnJlbnQgdmFsdWUsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8uICopXG4gIGxldCBjdXJyZW50ID0geC5jdXJyZW50IGluXG4gIGlmIHYgPT0gY3VycmVudCB0aGVuXG4gICAgKClcbiAgZWxzZSBiZWdpbiBtYXRjaCBzLnRyYW5zYWN0aW9uIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKiBPdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24sIHR3byBub3JtYWwgd3JpdGUgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkLlxuICAgICAgICAgVGhlIGNlbGwgcmVtYWlucyBzdGFibGUuIE5vdGhpbmcgaXMgbG9nZ2VkLiAqKVxuICAgICAgeC5jdXJyZW50IDwtIHY7XG4gICAgICB4LmNvbW1pdHRlZCA8LSB2XG4gIHwgU29tZSBzdGFjayAtPlxuICAgICAgKCogV2UgYXJlIHdpdGhpbiBhIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgKCogSWYgdGhpcyBjZWxsIHdhcyBzdGFibGUgYW5kIG5vdyBiZWNvbWVzIHVuc3RhYmxlLCB0aGVuIGl0IG11c3QgYmVcbiAgICAgICAgIGluc2VydGVkIGludG8gdGhlIHNldCBvZiB1bnN0YWJsZSBjZWxscywgd2hpY2ggaXMgcmVjb3JkZWQgYXMgcGFydFxuICAgICAgICAgb2YgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgaWYgY3VycmVudCA9PSB4LmNvbW1pdHRlZCB0aGVuXG4gICAgICAgIFN0YWNrLnB1c2ggeCBzdGFjaztcbiAgICAgICgqIFRoZSBjZWxsIG11c3QgdGhlbiBiZSB1cGRhdGVkLiBJZiBbdl0gaGFwcGVucyB0byBiZSBlcXVhbCB0b1xuICAgICAgICAgW2NvbW1pdHRlZF0sIHRoaXMgY291bGQgbWFrZSB0aGUgY2VsbCBzdGFibGUgYWdhaW4uIFdlIGRvIG5vdFxuICAgICAgICAgY2hlY2sgZm9yIHRoaXMgdW5saWtlbHkgc2l0dWF0aW9uLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNldCBvZlxuICAgICAgICAgdW5zdGFibGUgY2VsbHMgY291bGQgYWN0dWFsbHkgY29udGFpbiBzdGFibGUgY2VsbHMgdG9vLiAqKVxuICAgICAgeC5jdXJyZW50IDwtIHZcbiAgICBlbmRcblxubGV0IGVxIChfcyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgeCA9PSB5XG5cbmV4Y2VwdGlvbiBOZXN0ZWRUcmFuc2FjdGlvbkF0dGVtcHRcblxubGV0IGNvbW1pdCB4ID1cbiAgeC5jb21taXR0ZWQgPC0geC5jdXJyZW50XG5cbmxldCByb2xsYmFjayB4ID1cbiAgeC5jdXJyZW50IDwtIHguY29tbWl0dGVkXG5cbmxldCB0ZW50YXRpdmVseSAocyA6ICdhIHN0b3JlKSAoZiA6IHVuaXQgLT4gJ2IpIDogJ2IgPVxuICBtYXRjaCBzLnRyYW5zYWN0aW9uIHdpdGhcbiAgfCBTb21lIF8gLT5cbiAgICAgIHJhaXNlIE5lc3RlZFRyYW5zYWN0aW9uQXR0ZW1wdFxuICB8IE5vbmUgLT5cbiAgICAgIGxldCBzdGFjayA9IFN0YWNrLmNyZWF0ZSgpIGluXG4gICAgICBzLnRyYW5zYWN0aW9uIDwtIFNvbWUgc3RhY2s7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGIgPSBmKCkgaW5cbiAgICAgICAgKCogQ29tbWl0IGV2ZXJ5IHVuc3RhYmxlIGNlbGwuICopXG4gICAgICAgIFN0YWNrLml0ZXIgY29tbWl0IHN0YWNrO1xuICAgICAgICAoKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICAgIHMudHJhbnNhY3Rpb24gPC0gTm9uZTtcbiAgICAgICAgKCogUmVwb3J0IHRoZSBvdXRjb21lLiAqKVxuICAgICAgICBiXG4gICAgICB3aXRoIGUgLT5cbiAgICAgICAgbGV0IGIgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSgpIGluXG4gICAgICAgICgqIFJvbGwgYmFjayBldmVyeSB1bnN0YWJsZSBjZWxsLiAqKVxuICAgICAgICBTdGFjay5pdGVyIHJvbGxiYWNrIHN0YWNrO1xuICAgICAgICAoKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICAgIHMudHJhbnNhY3Rpb24gPC0gTm9uZTtcbiAgICAgICAgKCogUmVwb3J0IHRoZSBvdXRjb21lLiAqKVxuICAgICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHN0b3JlIGlzIGltcGxlbWVudGVkIGFzIGFuIGV4dGVuc2libGUgYXJyYXksIHRoYXQgaXMsIGEgcGFpciBvZiBhblxuICAgaW50ZWdlciBhZGRyZXNzIGFuZCBhbiBhcnJheS4gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZSBsZW5ndGggb2ZcbiAgIHRoZSBhcnJheSBpcyBhdCBsZWFzdCBbbGltaXRdLiBUaGUgYXJlYSBvZiB0aGUgYXJyYXkgYXQgaW5kZXggW2xpbWl0XSBhbmRcbiAgIGJleW9uZCBpcyBjb25zaWRlcmVkIHVuaW5pdGlhbGl6ZWQuICopXG5cbigqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGlzIGFyZWEgaXMgZmlsbGVkIHdpdGggYXJiaXRyYXJ5IHZhbHVlKHMpXG4gICBwcm92aWRlZCBieSB0aGUgdXNlciBpbiBjYWxscyB0byBbbWFrZV0gb3IgW3NldF0uIFRoaXMgaXMgbm90IGlkZWFsLCBhcyBpdFxuICAgY2FuIGNhdXNlIGEgbWVtb3J5IGxlYWsuICopXG5cbnR5cGUgJ2Egc3RvcmUgPSB7XG4gICgqIFRoZSBsb2dpY2FsIHNpemUgb2YgdGhlIGFycmF5OyBhbHNvLCB0aGUgbmV4dCBhdmFpbGFibGUgYWRkcmVzcy4gKilcbiAgbXV0YWJsZSBsaW1pdDogICBpbnQ7XG4gICgqIFRoZSBhcnJheSwgd2hvc2UgbGVuZ3RoIGlzIGF0IGxlYXN0IFtsaW1pdF0uICopXG4gIG11dGFibGUgY29udGVudDogJ2EgYXJyYXlcbn1cblxuKCogVGhlIGFycmF5IGlzIGNyZWF0ZWQgd2l0aCBhIHNpemUgYW5kIGxlbmd0aCBvZiB6ZXJvLiBXZSBoYXZlIG5vIG90aGVyXG4gICBjaG9pY2UsIHNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgdmFsdWUgb2YgdHlwZSBbJ2FdIGF0IGhhbmQuICopXG5cbmxldCBuZXdfc3RvcmUgKCkgOiAnYSBzdG9yZSA9IHtcbiAgbGltaXQgPSAwO1xuICBjb250ZW50ID0gW3x8XVxufVxuXG4oKiBDb3B5aW5nIGlzIHN1cHBvcnRlZCwgYnV0IGlzIG5vdCBjaGVhcC4gVXNlIGF0IHlvdXIgb3duIHJpc2suICopXG5cbmxldCBjb3B5IChzIDogJ2Egc3RvcmUpIDogJ2Egc3RvcmUgPVxuICB7IGxpbWl0ID0gcy5saW1pdDsgY29udGVudCA9IEFycmF5LmNvcHkgcy5jb250ZW50IH1cblxuKCogQSByZWZlcmVuY2UgaXMgYW4gaW5kZXggaW50byB0aGUgYXJyYXkuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gIGludFxuXG4oKiBUaGUgYXJyYXkganVtcHMgZnJvbSBsZW5ndGggemVybyB0byBsZW5ndGggW2RlZmF1bHRfaW5pdGlhbF9sZW5ndGhdIGFzIHNvb25cbiAgIGFzIGEgY2FsbCB0byBbbWFrZV0gaXMgbWFkZS4gKilcblxubGV0IGRlZmF1bHRfaW5pdGlhbF9sZW5ndGggPVxuICAyNTZcblxuKCogW2VubGFyZ2UgcyB2XSBpbmNyZWFzZXMgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgKGlmIG5lY2Vzc2FyeSkgc28gYXMgdG9cbiAgIGVuc3VyZSB0aGF0IFtzLmxpbWl0XSBiZWNvbWVzIGEgdmFsaWQgaW5kZXguIFRoZSBhcmd1bWVudCBbdl0gaXMgdXNlZCBhcyBhXG4gICBkZWZhdWx0IHZhbHVlIHRvIGZpbGwgdGhlIHVuaW5pdGlhbGl6ZWQgYXJlYS4gKilcblxubGV0IGVubGFyZ2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IGNvbnRlbnQgPSBzLmNvbnRlbnQgaW5cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb250ZW50IGluXG4gIGlmIHMubGltaXQgPSBsZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBsZW5ndGgnID1cbiAgICAgIGlmIGxlbmd0aCA9IDAgdGhlblxuICAgICAgICBkZWZhdWx0X2luaXRpYWxfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIDIgKiBsZW5ndGhcbiAgICBpblxuICAgIGFzc2VydCAocy5saW1pdCA8IGxlbmd0aCcpO1xuICAgIGxldCBjb250ZW50JyA9IEFycmF5Lm1ha2UgbGVuZ3RoJyB2IGluXG4gICAgQXJyYXkuYmxpdCBjb250ZW50IDAgY29udGVudCcgMCBsZW5ndGg7XG4gICAgcy5jb250ZW50IDwtIGNvbnRlbnQnXG4gIGVuZFxuXG4oKiBOb3RlIHRoYXQgd2UgY2Fubm90IHVzZSBbQXJyYXkudW5zYWZlX3NldF0gYW5kIFtBcnJheS51bnNhZmVfZ2V0XSB3aXRob3V0XG4gICBhbnkgcHJlY2F1dGlvbnMsIHNpbmNlIHRoZSBPQ2FtbCB0eXBlLWNoZWNrZXIgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHRoZVxuICAgaW5kaWNlcyBhcmUgaW4gcmFuZ2UuIEEgY29uZnVzZWQgdXNlciBjb3VsZCBwYXNzIHJlZmVyZW5jZXMgaW50byBzb21lXG4gICBvdGhlciBzdG9yZS4gV2UgY2hvb3NlIHRvIGV4cGxpY2l0bHkgY2hlY2sgdGhhdCB0aGUgaW5kZXggaXMgd2l0aGluIHRoZVxuICAgbG9naWNhbCBib3VuZHMgb2YgdGhlIGFycmF5IC0tIHRoaXMgaXMgYSBtb3JlIHByZWNpc2UgY2hlY2suICopXG5cbmV4Y2VwdGlvbiBJbnZhbGlkUmVmXG5cbmxldCBjaGVjayAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogdW5pdCA9XG4gICgqIFdlIGRvIG5vdCBjaGVjayB0aGF0IFt4XSBpcyBub25uZWdhdGl2ZS4gQW4gb3ZlcmZsb3cgY2Fubm90IG9jY3VyLFxuICAgICBzaW5jZSB0aGF0IHdvdWxkIGltcGx5IHRoYXQgd2UgaGF2ZSBmaWxsZWQgdGhlIG1lbW9yeSB3aXRoIGEgaHVnZVxuICAgICBhcnJheS4gKilcbiAgaWYgeCA+PSBzLmxpbWl0IHRoZW5cbiAgICByYWlzZSBJbnZhbGlkUmVmXG5cbmxldCBtYWtlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIGVubGFyZ2UgcyB2O1xuICBsZXQgeCA9IHMubGltaXQgaW5cbiAgcy5saW1pdCA8LSB4ICsgMTtcbiAgQXJyYXkudW5zYWZlX3NldCBzLmNvbnRlbnQgeCB2O1xuICB4XG5cbmxldCBnZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgY2hlY2sgcyB4O1xuICBBcnJheS51bnNhZmVfZ2V0IHMuY29udGVudCB4XG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBjaGVjayBzIHg7XG4gIEFycmF5LnVuc2FmZV9zZXQgcy5jb250ZW50IHggdlxuXG5sZXQgZXEgIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICBjaGVjayBzIHg7XG4gIGNoZWNrIHMgeTtcbiAgeCA9IHlcbiIsImxldCBuYnNwID0gXCJcXHhDMlxceEEwXCI7IC8vIFVURi04IGVuY29kaW5nIGZvciBVKzAwQTAgXCJOby1icmVhayBzcGFjZVwiXG5cbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwiLy8gTWFwcyBrZXllZCBieSBhbiBlbmQgcG9zaXRpb25cbi8vIEludmFyaWVudDoga2V5cyBhcmUgYXNjZW5kaW5nIGFuZCB1bmlxdWVcbnR5cGUga2V5ID0gaW50O1xudHlwZSB0KCdhKSA9IGxpc3QoKGtleSwgJ2EpKTtcbmxldCBlbXB0eTogJ2EuIHQoJ2EpID0gW107XG5sZXQgc2luZ2xldG9uOiAnYS4gKGtleSwgJ2EpID0+IHQoJ2EpID0gKHBvcywgeCkgPT4gWyhwb3MsIHgpXTtcbmxldCByZWMgdW5pb246ICdhLiAoKCdhLCAnYSkgPT4gJ2EsIHQoJ2EpLCB0KCdhKSkgPT4gdCgnYSkgPVxuICAoZiwgdDEsIHQyKSA9PlxuICAgIHN3aXRjaCAodDEsIHQyKSB7XG4gICAgfCAoW10sIHRfb3RoZXIpID0+IHRfb3RoZXJcbiAgICB8ICh0X290aGVyLCBbXSkgPT4gdF9vdGhlclxuICAgIHwgKFsocDEsIHgxKSwgLi4ueHMxXSwgWyhwMiwgeDIpLCAuLi54czJdKSA9PlxuICAgICAgaWYgKHAxIDwgcDIpIHtcbiAgICAgICAgWyhwMSwgeDEpLCAuLi51bmlvbihmLCB4czEsIFsocDIsIHgyKSwgLi4ueHMyXSldO1xuICAgICAgfSBlbHNlIGlmIChwMSA+IHAyKSB7XG4gICAgICAgIFsocDIsIHgyKSwgLi4udW5pb24oZiwgWyhwMSwgeDEpLCAuLi54czFdLCB4czIpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFsocDEsIGYoeDEsIHgyKSksIC4uLnVuaW9uKGYsIHhzMSwgeHMyKV07XG4gICAgICB9XG4gICAgfTtcbmxldCByZWMgbWFwOiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZih4KSksIC4uLm1hcChmLCByZXN0KV07XG5sZXQgcmVjIG1hcGk6ICdhICdiLiAoKGtleSwgJ2EpID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZihwb3MsIHgpKSwgLi4ubWFwaShmLCByZXN0KV07XG5sZXQgcmVjIG1hcGs6ICdhICdiLiAoKGtleSwgJ2EpID0+IChrZXksICdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gW2YocG9zLCB4KSwgLi4ubWFwayhmLCByZXN0KV07XG5sZXQgcmVjIGZvbGRfbGVmdDogJ2EgJ2IuICgoa2V5LCAnYiwgJ2EpID0+ICdiLCAnYiwgdCgnYSkpID0+ICdiID1cbiAgKGYsIHopID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiB6XG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IGZvbGRfbGVmdChmLCBmKHBvcywgeiwgeCksIHJlc3QpO1xuIiwib3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSB7XG4gIHJvdzogaW50LFxuICBjb2w6IGludCxcbn07XG5cbmxldCBjb21wYXJlID0gKHBvczEsIHBvczIpID0+XG4gIGlmIChwb3MxLnJvdyA8IHBvczIucm93KSB7XG4gICAgKC0xKTtcbiAgfSBlbHNlIGlmIChwb3MxLnJvdyA+IHBvczIucm93KSB7XG4gICAgMTtcbiAgfSBlbHNlIHtcbiAgICBJbnQuY29tcGFyZShwb3MxLmNvbCwgcG9zMi5jb2wpO1xuICB9O1xuXG5sZXQgemVybyA9IHtyb3c6IDAsIGNvbDogMH07XG4iLCJvcGVuIFV0aWw7XG5cbi8vIFRPRE86IHJlbmFtZSBBbm5vdCB0byBBbm4/XG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIEludmFyaWFudDogY29udGFpbnMgbm8gbmV3bGluZXMuIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBBc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7IC8vIEFubm90YXRpb25zXG5cbmxldCBhbGlnbiA9IChsOiB0KCdhbm5vdCkpID0+IEFsaWduKGwpO1xubGV0IGFubm90ID0gKGFubm90OiAnYW5ub3QsIGw6IHQoJ2Fubm90KSkgPT4gQW5ub3QoYW5ub3QsIGwpO1xuXG5sZXQgcmVjIHJlbW92ZV9hbm5vdHMgPSAobGF5b3V0OiB0KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICBzd2l0Y2ggKGxheW91dCkge1xuICB8IEFubm90KF8sIGwpID0+IHJlbW92ZV9hbm5vdHMobClcbiAgfCBUZXh0KHN0cmluZykgPT4gVGV4dChzdHJpbmcpXG4gIHwgQ2F0KGwxLCBsMikgPT4gQ2F0KHJlbW92ZV9hbm5vdHMobDEpLCByZW1vdmVfYW5ub3RzKGwyKSlcbiAgfCBMaW5lYnJlYWsgPT4gTGluZWJyZWFrXG4gIHwgQWxpZ24obCkgPT4gQWxpZ24ocmVtb3ZlX2Fubm90cyhsKSlcbiAgfTtcbn07XG5cbi8vIFRPRE8/XG4vL2xldCB0ZXh0ID0gKHN0cmluZykgPT4gdF9vZl9sYXlvdXQoVGV4dChzdHJpbmcpKTtcbi8vbGV0IGNhdCA9ICh0MSwgdDIpID0+IHRfb2ZfbGF5b3V0KENhdCh0MSwgdDIpKTtcbi8vbGV0IGxpbmVicmVhayA9IHRfb2ZfbGF5b3V0KGxpbmVicmVhayk7XG5cbi8vIFRPRE86IG1vdmUgdG8gb3duIG1vZHVsZVxudHlwZSB0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpID0ge1xuICAvLyBUT0RPOiByZW5hbWUgYGltcGBcbiAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+ICdpbXAsXG4gIGltcF9hcHBlbmQ6ICgnaW1wLCAnaW1wKSA9PiAnaW1wLFxuICBpbXBfbmV3bGluZTogaW50ID0+ICdpbXAsXG4gIGltcF9vZl9hbm5vdDogKCdhbm5vdCwgJ2ltcCkgPT4gJ2ltcCxcbiAgdF9vZl9pbXA6ICdpbXAgPT4gJ3QsXG59O1xuXG5sZXQgbWtfb2ZfbGF5b3V0OiAodGV4dCgnYW5ub3QsICdpbXAsICd0KSwgdCgnYW5ub3QpKSA9PiAndCA9XG4gICh0ZXh0LCBsYXlvdXQpID0+IHtcbiAgICBsZXQgY29sdW1uOiByZWYoaW50KSA9IHJlZigwKTtcbiAgICBsZXQgcmVjIGdvOiAoaW50LCB0KCdhbm5vdCkpID0+ICdpbXAgPVxuICAgICAgKGluZGVudCwgbGF5b3V0KSA9PiB7XG4gICAgICAgIHN3aXRjaCAobGF5b3V0KSB7XG4gICAgICAgIHwgVGV4dChzdHJpbmcpID0+XG4gICAgICAgICAgY29sdW1uIDo9IGNvbHVtbl4gKyBVbmljb2RlLmxlbmd0aChzdHJpbmcpO1xuICAgICAgICAgIHRleHQuaW1wX29mX3N0cmluZyhzdHJpbmcpO1xuICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgbGV0IGltcDEgPSBnbyhpbmRlbnQsIGwxKTtcbiAgICAgICAgICBsZXQgaW1wMiA9IGdvKGluZGVudCwgbDIpO1xuICAgICAgICAgIHRleHQuaW1wX2FwcGVuZChpbXAxLCBpbXAyKTtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICAvLyBUT0RPOiBubyBpbmRlbnQgaWYgb24gZmluYWwgbGluZSBicmVha1xuICAgICAgICAgIGNvbHVtbiA6PSBpbmRlbnQ7XG4gICAgICAgICAgdGV4dC5pbXBfbmV3bGluZShpbmRlbnQpO1xuICAgICAgICB8IEFsaWduKGwpID0+IGdvKGNvbHVtbl4sIGwpXG4gICAgICAgIHwgQW5ub3QoYW5ub3QsIGwpID0+IHRleHQuaW1wX29mX2Fubm90KGFubm90LCBnbyhpbmRlbnQsIGwpKVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB0ZXh0LnRfb2ZfaW1wKGdvKDAsIGxheW91dCkpO1xuICB9O1xuXG5sZXQgc3RyaW5nX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gc3RyaW5nID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOiAnYW5ub3QuIHRleHQoJ2Fubm90LCBzdHJpbmcsIHN0cmluZykgPSB7XG4gICAgICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gc3RyaW5nLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4gczEgKysgczIsXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFwiXFxuXCIgKysgU3RyaW5nLm1ha2UoaW5kZW50LCAnICcpLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogaW1wID0+IGltcCxcbiAgICB9O1xuICAgIG1rX29mX2xheW91dChyZWNvcmQsIGxheW91dCk7XG4gIH07XG5cbmxldCBzdHJpbmdzX29mX2xheW91dDogJ2Fubm90LiB0KCdhbm5vdCkgPT4gbGlzdCgoaW50LCBzdHJpbmcpKSA9XG4gIGxheW91dCA9PiB7XG4gICAgbGV0IHJlY29yZDpcbiAgICAgICdhbm5vdC5cbiAgICAgIHRleHQoJ2Fubm90LCBsaXN0KChpbnQsIHN0cmluZykpLCBsaXN0KChpbnQsIHN0cmluZykpKVxuICAgICA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBbKDAsIHN0cmluZyldLFxuICAgICAgaW1wX2FwcGVuZDogKHMxLCBzMikgPT4ge1xuICAgICAgICBzd2l0Y2ggKExpc3QucmV2KHMxKSwgczIpIHtcbiAgICAgICAgfCAoW10sIF8pID0+IHMyXG4gICAgICAgIHwgKF8sIFtdKSA9PiBzMVxuICAgICAgICB8IChcbiAgICAgICAgICAgIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSksIC4uLnJlc3QxXSxcbiAgICAgICAgICAgIFsoZmlyc3RfaW5kZW50XzIsIGZpcnN0X3N0cmluZ18yKSwgLi4ucmVzdDJdLFxuICAgICAgICAgICkgPT5cbiAgICAgICAgICBhc3NlcnQoZmlyc3RfaW5kZW50XzIgPT0gMCk7XG4gICAgICAgICAgTGlzdC5yZXYocmVzdDEpXG4gICAgICAgICAgQCBbKGxhc3RfaW5kZW50XzEsIGxhc3Rfc3RyaW5nXzEgKysgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml07XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgaW1wX25ld2xpbmU6IGluZGVudCA9PiBbKGluZGVudCwgXCJcIildLFxuICAgICAgaW1wX29mX2Fubm90OiAoXywgaW1wKSA9PiBpbXAsXG4gICAgICB0X29mX2ltcDogcyA9PiBzLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcbiIsImxldCBzcGxpdF9maXJzdCA9ICh4czogbGlzdCgnYSkpOiAoJ2EsIGxpc3QoJ2EpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgW2ZpcnN0LCAuLi50cmFpbGluZ10gPT4gKGZpcnN0LCB0cmFpbGluZylcbiAgfTtcblxubGV0IHNwbGl0X2xhc3Rfb3B0ID0gKHhzOiBsaXN0KCdhKSk6IG9wdGlvbigobGlzdCgnYSksICdhKSkgPT5cbiAgc3dpdGNoIChMaXN0LnJldih4cykpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3ksIC4uLnlzXSA9PiBTb21lKChMaXN0LnJldih5cyksIHkpKVxuICB9O1xubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ2EpKTogKGxpc3QoJ2EpLCAnYSkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IGZhaWx3aXRoKFwiZW1wdHkgbGlzdFwiKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xuIiwib3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIGJveCA9IHtcbiAgaGVpZ2h0OiBpbnQsXG4gIHdpZHRoOiBpbnQsXG59O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbGF5b3V0OiB0JygnYW5ub3QpLFxuICBtZXRyaWNzOiBsaXN0KGJveCksXG59XG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgTGluZWJyZWFrXG4gIHwgVGV4dChzdHJpbmcpXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbnR5cGUgd2l0aF9vZmZzZXQoJ2Fubm90KSA9IChpbnQsIHQoJ2Fubm90KSk7XG5cbmxldCBoZWlnaHQgPSAobTogdChfKSkgPT5cbiAgbS5tZXRyaWNzIHw+IExpc3QubWFwKGJveCA9PiBib3guaGVpZ2h0KSB8PiBMaXN0LmZvbGRfbGVmdCgoKyksIDApO1xuXG5sZXQgd2lkdGggPSAofm9mZnNldD0wLCBtOiB0KF8pKSA9PlxuICBMaXN0LnRsKG0ubWV0cmljcylcbiAgfD4gTGlzdC5tYXAoYm94ID0+IGJveC53aWR0aClcbiAgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCBvZmZzZXQgKyBMaXN0LmhkKG0ubWV0cmljcykud2lkdGgpO1xuXG5sZXQgZm9sZCA9XG4gICAgKFxuICAgICAgfmxpbmVicmVhazogJ2FjYyxcbiAgICAgIH50ZXh0OiBzdHJpbmcgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogJ2FjYyA9PiAnYWNjLFxuICAgICAgfmNhdDogKCdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBhbGxvdyBjbGllbnQgdG8gY29udHJvbCByZWN1cnNpb24gYmFzZWQgb24gYW5ub3RhdGlvblxuICAgICAgICAgKHQoJ2Fubm90KSA9PiAnYWNjLCAnYW5ub3QsIHQoJ2Fubm90KSkgPT4gJ2FjYyxcbiAgICAgIG06IHQoJ2Fubm90KSxcbiAgICApXG4gICAgOiAnYWNjID0+IHtcbiAgbGV0IHJlYyBnbyA9IChtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWtcbiAgICB8IFRleHQocykgPT4gdGV4dChzKVxuICAgIHwgQWxpZ24obSkgPT4gYWxpZ24oZ28obSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IGFjYzEgPSBnbyhtMSk7XG4gICAgICBsZXQgYWNjMiA9IGdvKG0yKTtcbiAgICAgIGNhdChhY2MxLCBhY2MyKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QoZ28sIGFubiwgbSlcbiAgICB9O1xuICBnbyhtKTtcbn07XG5cbmxldCBuZXh0X3Bvc2l0aW9uID1cbiAgICAofmluZGVudDogaW50LCB7cm93LCBjb2x9OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpXG4gICAgOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4ge1xuICBsZXQgdXBkYXRlZF9yb3cgPSByb3cgKyBoZWlnaHQobSkgLSAxO1xuICBsZXQgdXBkYXRlZF9jb2wgPSB7XG4gICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QobS5tZXRyaWNzKTtcbiAgICBsYXN0LndpZHRoXG4gICAgKyAoXG4gICAgICBzd2l0Y2ggKGxlYWRpbmcpIHtcbiAgICAgIHwgW10gPT4gY29sXG4gICAgICB8IFtfLCAuLi5fXSA9PiBpbmRlbnRcbiAgICAgIH1cbiAgICApO1xuICB9O1xuICB7cm93OiB1cGRhdGVkX3JvdywgY29sOiB1cGRhdGVkX2NvbH07XG59O1xuXG5sZXQgcG9zX2ZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6IE1lYXN1cmVkUG9zaXRpb24udCA9PiAnYWNjLFxuICAgICAgfnRleHQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsIHN0cmluZykgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogKE1lYXN1cmVkUG9zaXRpb24udCwgJ2FjYykgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBsZXQgY2xpZW50IGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgIChcbiAgICAgICAgICAgfmdvOiB0KCdhbm5vdCkgPT4gJ2FjYyxcbiAgICAgICAgICAgfmluZGVudDogaW50LFxuICAgICAgICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCxcbiAgICAgICAgICAgJ2Fubm90LFxuICAgICAgICAgICB0KCdhbm5vdClcbiAgICAgICAgICkgPT5cbiAgICAgICAgICdhY2MsXG4gICAgICB+aW5kZW50PTAsXG4gICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udD1NZWFzdXJlZFBvc2l0aW9uLnplcm8sXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAoaW5kZW50OiBpbnQsIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpID0+XG4gICAgc3dpdGNoIChtLmxheW91dCkge1xuICAgIHwgTGluZWJyZWFrID0+IGxpbmVicmVhayhzdGFydClcbiAgICB8IFRleHQocykgPT4gdGV4dChzdGFydCwgcylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKHN0YXJ0LCBnbyhzdGFydC5jb2wsIHN0YXJ0LCBtKSlcbiAgICB8IENhdChtMSwgbTIpID0+XG4gICAgICBsZXQgbWlkID0gbmV4dF9wb3NpdGlvbih+aW5kZW50LCBzdGFydCwgbTEpO1xuICAgICAgY2F0KHN0YXJ0LCBnbyhpbmRlbnQsIHN0YXJ0LCBtMSksIGdvKGluZGVudCwgbWlkLCBtMikpO1xuICAgIHwgQW5ub3QoYW5uLCBtKSA9PiBhbm5vdCh+Z289Z28oaW5kZW50LCBzdGFydCksIH5pbmRlbnQsIH5zdGFydCwgYW5uLCBtKVxuICAgIH07XG4gIGdvKGluZGVudCwgc3RhcnQsIG0pO1xufTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBtayA9IChsOiBMYXlvdXQudCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgfCBTb21lKG0pID0+IE9iai5tYWdpYyhtKVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IG0gPVxuICAgICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICBsZXQgYm94ID0ge2hlaWdodDogMSwgd2lkdGg6IDB9O1xuICAgICAgICAgIHttZXRyaWNzOiBbYm94LCBib3hdLCBsYXlvdXQ6IExpbmVicmVha307XG4gICAgICAgIHwgVGV4dChzKSA9PiB7XG4gICAgICAgICAgICBtZXRyaWNzOiBbe2hlaWdodDogMSwgd2lkdGg6IFVuaWNvZGUubGVuZ3RoKHMpfV0sXG4gICAgICAgICAgICBsYXlvdXQ6IFRleHQocyksXG4gICAgICAgICAgfVxuICAgICAgICB8IEFsaWduKGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICBsZXQgYm91bmRpbmdfYm94ID1cbiAgICAgICAgICAgIG0ubWV0cmljc1xuICAgICAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICh7aGVpZ2h0OiBiaCwgd2lkdGg6IGJ3fSwge2hlaWdodCwgd2lkdGh9KSA9PlxuICAgICAgICAgICAgICAgICAgIHtoZWlnaHQ6IGJoICsgaGVpZ2h0LCB3aWR0aDogbWF4KGJ3LCB3aWR0aCl9LFxuICAgICAgICAgICAgICAgICB7aGVpZ2h0OiAwLCB3aWR0aDogMH0sXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgIHttZXRyaWNzOiBbYm91bmRpbmdfYm94XSwgbGF5b3V0OiBBbGlnbihtKX07XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgbTEgPSBtayhsMSk7XG4gICAgICAgICAgbGV0IG0yID0gbWsobDIpO1xuICAgICAgICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0xLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KG0yLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCBtaWRfYm94ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiBtYXgobGFzdC5oZWlnaHQsIGZpcnN0LmhlaWdodCksXG4gICAgICAgICAgICB3aWR0aDogbGFzdC53aWR0aCArIGZpcnN0LndpZHRoLFxuICAgICAgICAgIH07XG4gICAgICAgICAge21ldHJpY3M6IGxlYWRpbmcgQCBbbWlkX2JveCwgLi4udHJhaWxpbmddLCBsYXlvdXQ6IENhdChtMSwgbTIpfTtcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT5cbiAgICAgICAgICBsZXQgbSA9IG1rKGwpO1xuICAgICAgICAgIHsuLi5tLCBsYXlvdXQ6IEFubm90KGFubm90LCBtKX07XG4gICAgICAgIH07XG4gICAgICBNZW1vVGJsLnNldCh0YWJsZSwgT2JqLm1hZ2ljKGwpLCBPYmoubWFnaWMobSkpO1xuICAgICAgbTtcbiAgICB9O1xuICB9O1xufTtcbiIsInR5cGUgdCA9IHtcbiAgLy8gU3VtIG9mIHRoZSBzcXVhcmUgb2YgaG93IG11Y2ggZWFjaCBsaW5lIGV4dGVuZHMgYmV5b25kIG1heCB3aWR0aC4gIFVzdWFsbHkgemVyby5cbiAgb3ZlcmZsb3dfY29zdDogaW50LFxuICAvLyBIZWlnaHQgbWludXMgb25lLiAgQS5rLmEuIG51bWJlciBvZiBsaW5lIGJyZWFrcy5cbiAgaGVpZ2h0X2Nvc3Q6IGludCxcbn07XG5cbmxldCBtayA9ICh+b3ZlcmZsb3dfY29zdDogaW50LCB+aGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4ge1xuICBvdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdCxcbn07XG5cbmxldCBta19oZWlnaHQgPSAoaGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4gbWsofm92ZXJmbG93X2Nvc3Q9MCwgfmhlaWdodF9jb3N0KTtcblxubGV0IG1rX292ZXJmbG93ID0gKG92ZXJmbG93X2Nvc3Q6IGludCk6IHQgPT5cbiAgbWsofm92ZXJmbG93X2Nvc3QsIH5oZWlnaHRfY29zdD0wKTtcblxubGV0IHplcm86IHQgPSB7b3ZlcmZsb3dfY29zdDogMCwgaGVpZ2h0X2Nvc3Q6IDB9O1xuXG5sZXQgaW5mOiB0ID0ge292ZXJmbG93X2Nvc3Q6IG1heF9pbnQsIGhlaWdodF9jb3N0OiBtYXhfaW50fTtcblxubGV0IGFkZCA9IChjMTogdCwgYzI6IHQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdDogYzEub3ZlcmZsb3dfY29zdCArIGMyLm92ZXJmbG93X2Nvc3QsXG4gIGhlaWdodF9jb3N0OiBjMS5oZWlnaHRfY29zdCArIGMyLmhlaWdodF9jb3N0LFxufTtcblxubGV0IGVxID0gKGMxOiB0LCBjMjogdCk6IGJvb2wgPT5cbiAgYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCAmJiBjMS5oZWlnaHRfY29zdCA9PT0gYzIuaGVpZ2h0X2Nvc3Q7XG5cbmxldCBsdCA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPCBjMi5oZWlnaHRfY29zdDtcbiAgfSBlbHNlIHtcbiAgICBjMS5vdmVyZmxvd19jb3N0IDwgYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcblxubGV0IGxlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPD0gYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8PSBjMi5vdmVyZmxvd19jb3N0O1xuICB9O1xuIiwib3BlbiBVdGlsO1xuXG5tb2R1bGUgV2lkdGhQb3NLZXkgPSB7XG4gIHR5cGUgdCA9IChpbnQsIGludCk7XG4gIGxldCBoYXNoID0gKCh3aWR0aCwgcG9zKSkgPT4gMjU2ICogMjU2ICogd2lkdGggKyBwb3M7XG4gIGxldCBlcXVhbCA9ICgodzEsIHAxKSwgKHcyLCBwMikpID0+IHcxID09IHcyICYmIHAxID09IHAyO1xufTtcblxubW9kdWxlIE0gPSBIYXNodGJsLk1ha2UoV2lkdGhQb3NLZXkpO1xuXG4vLyBOT1RFOiBwb3MgaXMgcmVsYXRpdmUgdG8gbW9zdCByZWNlbnQgYEFsaWduYFxudHlwZSBtJygnYSkgPSBQb3NNYXAudCgoQ29zdC50LCAnYSkpO1xudHlwZSBtKCdhKSA9ICh+d2lkdGg6IGludCwgfnBvczogaW50KSA9PiBtJygnYSk7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID0ge1xuICBtZW06IFtAc2V4cC5vcGFxdWVdIE0udChtJyhMYXlvdXQudCgnYW5ub3QpKSksXG4gIGRvYzogdCcoJ2Fubm90KSxcbn1cbltAZGVyaXZpbmcgc2V4cF1cbmFuZCB0JygnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZykgLy8gVGV4dChcIlwiKSBpcyBpZGVudGl0eSBmb3IgYENhdGBcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpIC8vIGFzc29jaWF0aXZlXG4gIHwgTGluZWJyZWFrXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKSAvLyBBbm5vdGF0aW9uc1xuICB8IEZhaWwgLy8gaWRlbnRpdHkgZm9yIGBDaG9pY2VgXG4gIHwgQ2hvaWNlKHQoJ2Fubm90KSwgdCgnYW5ub3QpKTtcblxubGV0IHRfb2ZfdCcgPSAodCc6IHQnKCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge21lbTogTS5jcmVhdGUoMCksIGRvYzogdCd9O1xuXG5sZXQgdGV4dCA9IChzOiBzdHJpbmcpID0+IHRfb2ZfdCcoVGV4dChzKSk7XG5sZXQgbGluZWJyZWFrID0gKCkgPT4gdF9vZl90JyhMaW5lYnJlYWspO1xubGV0IGFsaWduID0gZG9jID0+IHRfb2ZfdCcoQWxpZ24oZG9jKSk7XG5sZXQgYW5ub3QgPSAoYW5ub3QsIGRvYykgPT4gdF9vZl90JyhBbm5vdChhbm5vdCwgZG9jKSk7XG5sZXQgZmFpbCA9ICgpID0+IHRfb2ZfdCcoRmFpbCk7XG5cbmxldCBlbXB0eSA9ICgpID0+IHRleHQoXCJcIik7XG5sZXQgc3BhY2UgPSAoKSA9PiB0ZXh0KFVuaWNvZGUubmJzcCk7IC8vIFRPRE86IHBhcmFtIHRvIGhzZXBcblxubGV0IGluZGVudCA9ICgpID0+IHRleHQoVW5pY29kZS5uYnNwICsrIFVuaWNvZGUubmJzcCk7XG5sZXQgaW5kZW50X2FuZF9hbGlnbiA9IGRvYyA9PiB0X29mX3QnKENhdChpbmRlbnQoKSwgYWxpZ24oZG9jKSkpO1xuXG5sZXQgaGNhdCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB5KSk7XG5sZXQgaGNhdHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBlbXB0eSgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoaGNhdCwgZG9jLCBkb2NzKTtcblxubGV0IGhzZXAgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgdF9vZl90JyhDYXQoc3BhY2UoKSwgeSkpKSk7XG5sZXQgaHNlcHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBlbXB0eSgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoaHNlcCwgZG9jLCBkb2NzKTtcblxubGV0IHZzZXAgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgdF9vZl90JyhDYXQobGluZWJyZWFrKCksIHkpKSkpO1xubGV0IHZzZXBzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZmFpbHdpdGgoX19MT0NfXyArKyBcIjogdnNlcHMgcmVxdWlyZXMgYSBub24tZW1wdHkgbGlzdFwiKVxuICB8IFtkb2NdID0+IGRvY1xuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KHZzZXAsIGRvYywgZG9jcyk7XG5cbmxldCBjaG9pY2UgPSAoeCwgeSkgPT4gdF9vZl90JyhDaG9pY2UoeCwgeSkpO1xubGV0IGNob2ljZXM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBmYWlsKClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChjaG9pY2UsIGRvYywgZG9jcyk7XG5cbmxldCBtYXBfdCc6ICdhICdiLiAodCcoJ2EpID0+IHQnKCdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgKGYsIGQpID0+IHRfb2ZfdCcoZihkLmRvYykpO1xuXG5sZXQgcmVjIG1hcF9hbm5vdDogJ2EgJ2IuICgnYSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgKGYsIGQpID0+XG4gICAgZFxuICAgIHw+IG1hcF90JyhcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCAoVGV4dChfKSB8IExpbmVicmVhayB8IEZhaWwpIGFzIGQnID0+IGQnXG4gICAgICAgICB8IEFubm90KGFubm90LCBkKSA9PiBBbm5vdChmKGFubm90KSwgbWFwX2Fubm90KGYsIGQpKVxuICAgICAgICAgfCBBbGlnbihkKSA9PiBBbGlnbihtYXBfYW5ub3QoZiwgZCkpXG4gICAgICAgICB8IENhdChkMSwgZDIpID0+IENhdChtYXBfYW5ub3QoZiwgZDEpLCBtYXBfYW5ub3QoZiwgZDIpKVxuICAgICAgICAgfCBDaG9pY2UoZDEsIGQyKSA9PiBDaG9pY2UobWFwX2Fubm90KGYsIGQxKSwgbWFwX2Fubm90KGYsIGQyKSksXG4gICAgICAgKTtcbiIsIi8vIFRPRE86IGNvbXB1dGUgYWN0dWFsIGxheW91dCBzaXplIGFuZCB1c2UgaW5zdGVhZCBvZiB0X29mX2xheW91dFxubGV0IHJlYyBhbGw6ICdhbm5vdC4gRG9jLnQoJ2Fubm90KSA9PiBsaXN0KExheW91dC50KCdhbm5vdCkpID0ge1xuICBkb2MgPT4ge1xuICAgIHN3aXRjaCAoZG9jLmRvYykge1xuICAgIHwgVGV4dChzdHJpbmcpID0+IFtMYXlvdXQuVGV4dChzdHJpbmcpXVxuICAgIHwgQ2F0KGQxLCBkMikgPT5cbiAgICAgIGxldCBsczEgPSBhbGwoZDEpO1xuICAgICAgbGV0IGxzMiA9IGFsbChkMik7XG4gICAgICBMaXN0LmNvbmNhdChcbiAgICAgICAgTGlzdC5tYXAobDEgPT4gTGlzdC5tYXAobDIgPT4gTGF5b3V0LkNhdChsMSwgbDIpLCBsczIpLCBsczEpLFxuICAgICAgKTtcbiAgICB8IExpbmVicmVhayA9PiBbTGF5b3V0LkxpbmVicmVha11cbiAgICB8IEFsaWduKGQpID0+IExpc3QubWFwKGwgPT4gTGF5b3V0LkFsaWduKGwpLCBhbGwoZCkpXG4gICAgfCBBbm5vdChhbm5vdCwgZCkgPT4gTGlzdC5tYXAobCA9PiBMYXlvdXQuQW5ub3QoYW5ub3QsIGwpLCBhbGwoZCkpXG4gICAgfCBGYWlsID0+IFtdXG4gICAgfCBDaG9pY2UoZDEsIGQyKSA9PiBhbGwoZDEpIEAgYWxsKGQyKVxuICAgIH07XG4gIH07XG59O1xuXG4vLyBOb3RlOiBUaGlzIHVuaW9uIGlzIGxlZnQgYmlhc2VkXG5sZXQgbSdfdW5pb246ICdhLiAoRG9jLm0nKCdhKSwgRG9jLm0nKCdhKSkgPT4gRG9jLm0nKCdhKSA9XG4gIChwMSwgcDIpID0+IHtcbiAgICBsZXQgY29zdF91bmlvbiA9ICgoY29zdDE6IENvc3QudCwgXykgYXMgdDEsIChjb3N0MjogQ29zdC50LCBfKSBhcyB0MikgPT5cbiAgICAgIGlmIChDb3N0LmxlcShjb3N0MSwgY29zdDIpKSB7XG4gICAgICAgIHQxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdDI7XG4gICAgICB9O1xuICAgIFBvc01hcC51bmlvbihjb3N0X3VuaW9uLCBwMSwgcDIpO1xuICB9O1xuXG5sZXQgcmVjIGxheW91dF9vZl9kb2MnID0gKGRvYzogRG9jLnQodW5pdCkpOiBEb2MubShMYXlvdXQudCh1bml0KSkgPT4ge1xuICBsZXQgZyA9ICh+d2lkdGg6IGludCwgfnBvczogaW50KTogRG9jLm0nKExheW91dC50KHVuaXQpKSA9PiB7XG4gICAgLy8gVE9ETzogbGlmdCB0aGUgc3dpdGNoKGRvYy5kb2MpIG91dHNpZGUgdGhlIGxhbWJkYVxuICAgIHN3aXRjaCAoZG9jLmRvYykge1xuICAgIHwgVGV4dChzdHJpbmcpID0+XG4gICAgICAvLyBUT0RPOiBjYWNoZSB0ZXh0IGxlbmd0aCBpbiBUZXh0P1xuICAgICAgbGV0IHBvcycgPSBwb3MgKyBTdHJpbmcubGVuZ3RoKHN0cmluZyk7IC8vVW5pY29kZS5sZW5ndGgoc3RyaW5nKTtcbiAgICAgIGxldCBjb3N0ID1cbiAgICAgICAgaWYgKHBvcycgPD0gd2lkdGgpIHtcbiAgICAgICAgICBDb3N0Lnplcm87XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IG92ZXJmbG93ID0gcG9zJyAtIHdpZHRoO1xuICAgICAgICAgIC8vIG92ZXJmbG93X2Nvc3QgPSBzdW0gaSBmcm9tIDEgdG8gb3ZlcmZsb3dcbiAgICAgICAgICBsZXQgb3ZlcmZsb3dfY29zdCA9IG92ZXJmbG93ICogKG92ZXJmbG93ICsgMSkgLyAyO1xuICAgICAgICAgIENvc3QubWtfb3ZlcmZsb3cob3ZlcmZsb3dfY29zdCk7XG4gICAgICAgIH07XG4gICAgICBQb3NNYXAuc2luZ2xldG9uKHBvcycsIChjb3N0LCBMYXlvdXQuVGV4dChzdHJpbmcpKSk7XG4gICAgfCBDYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0IGwxID0gbGF5b3V0X29mX2RvYycoZDEsIH53aWR0aCwgfnBvcyk7XG4gICAgICBQb3NNYXAuZm9sZF9sZWZ0KFxuICAgICAgICAocG9zLCB6LCAoY29zdDEsIGxheW91dDEpKSA9PiB7XG4gICAgICAgICAgbGV0IGwyID0gbGF5b3V0X29mX2RvYycoZDIsIH53aWR0aCwgfnBvcyk7XG4gICAgICAgICAgbGV0IGxheW91dHMgPVxuICAgICAgICAgICAgUG9zTWFwLm1hcChcbiAgICAgICAgICAgICAgKChjb3N0MiwgbGF5b3V0MikpID0+XG4gICAgICAgICAgICAgICAgKENvc3QuYWRkKGNvc3QxLCBjb3N0MiksIExheW91dC5DYXQobGF5b3V0MSwgbGF5b3V0MikpLFxuICAgICAgICAgICAgICBsMixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgbSdfdW5pb24oeiwgbGF5b3V0cyk7XG4gICAgICAgIH0sXG4gICAgICAgIFBvc01hcC5lbXB0eSxcbiAgICAgICAgbDEsXG4gICAgICApO1xuICAgIHwgTGluZWJyZWFrID0+XG4gICAgICBQb3NNYXAuc2luZ2xldG9uKDAsIChDb3N0Lm1rX2hlaWdodCgxKSwgTGF5b3V0LkxpbmVicmVhaykpXG4gICAgfCBBbGlnbihkKSA9PlxuICAgICAgbGV0IGxheW91dCA9IGxheW91dF9vZl9kb2MnKGQsIH53aWR0aD13aWR0aCAtIHBvcywgfnBvcz0wKTtcbiAgICAgIFBvc01hcC5tYXBrKFxuICAgICAgICAocCwgKGMsIGwpKSA9PiAocCArIHBvcywgKGMsIExheW91dC5BbGlnbihsKSkpLFxuICAgICAgICBsYXlvdXQsXG4gICAgICApO1xuICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+XG4gICAgICBsZXQgbGF5b3V0ID0gbGF5b3V0X29mX2RvYycoZCwgfndpZHRoLCB+cG9zKTtcbiAgICAgIFBvc01hcC5tYXAoKChjLCBsKSkgPT4gKGMsIExheW91dC5Bbm5vdChhbm5vdCwgbCkpLCBsYXlvdXQpO1xuICAgIHwgRmFpbCA9PiBQb3NNYXAuZW1wdHlcbiAgICB8IENob2ljZShkMSwgZDIpID0+XG4gICAgICBsZXQgbDEgPSBsYXlvdXRfb2ZfZG9jJyhkMSwgfndpZHRoLCB+cG9zKTtcbiAgICAgIGxldCBsMiA9IGxheW91dF9vZl9kb2MnKGQyLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgbSdfdW5pb24obDEsIGwyKTtcbiAgICB9O1xuICB9O1xuICBsZXQgaCA9ICh+d2lkdGg6IGludCwgfnBvczogaW50KTogRG9jLm0nKExheW91dC50KHVuaXQpKSA9PiB7XG4gICAgbGV0IGtleSA9ICh3aWR0aCwgcG9zKTtcbiAgICBzd2l0Y2ggKERvYy5NLmZpbmRfb3B0KGRvYy5tZW0sIGtleSkpIHtcbiAgICB8IFNvbWUodmFsdWUpID0+IHZhbHVlXG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgdmFsdWUgPSBnKH53aWR0aCwgfnBvcyk7XG4gICAgICBEb2MuTS5hZGQoZG9jLm1lbSwga2V5LCB2YWx1ZSk7XG4gICAgICB2YWx1ZTtcbiAgICB9O1xuICB9O1xuICBoO1xufTtcblxubGV0IGxheW91dF9vZl9kb2MgPVxuICAgIChkb2M6IERvYy50KCdhbm5vdCksIH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBvcHRpb24oTGF5b3V0LnQoJ2Fubm90KSkgPT4ge1xuICBsZXQgcmVjIG1pbmltdW0gPVxuICAgICAgICAgICgocG9zLCAoY29zdCwgdCkpOiAoaW50LCAoQ29zdC50LCBvcHRpb24oJ2EpKSkpXG4gICAgICAgICAgOiAobGlzdCgoaW50LCAoQ29zdC50LCAnYSkpKSA9PiBvcHRpb24oJ2EpKSA9PiB7XG4gICAgZnVuXG4gICAgfCBbXSA9PiB0XG4gICAgfCBbKHhfcG9zLCAoeF9jb3N0LCB4KSksIC4uLnJlc3RdID0+XG4gICAgICAvLyBQcmVmZXIgbG93ZXN0IGNvc3QsIG9yIGlmIHNhbWUgY29zdCwgcHJlZmVyIGVuZGluZyBhdCBhbiBlYXJsaWVyIGNvbHVtblxuICAgICAgLy8gKENvbHVtbnMgYXJlIHVuaXF1ZSBieSBjb25zdHJ1Y3Rpb24gb2YgUG9zTWFwLilcbiAgICAgIGlmIChDb3N0Lmx0KHhfY29zdCwgY29zdCkgfHwgQ29zdC5lcSh4X2Nvc3QsIGNvc3QpICYmIHhfcG9zIDwgcG9zKSB7XG4gICAgICAgIG1pbmltdW0oKHhfcG9zLCAoeF9jb3N0LCBTb21lKHgpKSksIHJlc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWluaW11bSgocG9zLCAoY29zdCwgdCkpLCByZXN0KTtcbiAgICAgIH07XG4gIH07XG4gIC8vIFRPRE86IHVzZSBvcHRpb25zIGluc3RlYWQgb2YgbWF4X2ludFxuICAvLyBsZXQgc3RhcnRfdGltZSA9IFN5cy50aW1lKCk7XG4gIGxldCBsID1cbiAgICBtaW5pbXVtKFxuICAgICAgKG1heF9pbnQsIChDb3N0LmluZiwgTm9uZSkpLFxuICAgICAgT2JqLm1hZ2ljKGxheW91dF9vZl9kb2MnKE9iai5tYWdpYyhkb2MpLCB+d2lkdGgsIH5wb3MpKSxcbiAgICApO1xuICAvLyBsZXQgZW5kX3RpbWUgPSBTeXMudGltZSgpO1xuICAvKlxuICAgUHJpbnRmLnByaW50ZihcbiAgICAgXCJsYXlvdXRfb2ZfZG9jOiAlZCBcXHQlZlxcblwiLFxuICAgICAtMSwgLy9mc3QoTGF6eS5mb3JjZShtZW1vX3RhYmxlKSkjIy5zaXplLFxuICAgICAvL01lbW9pemUuV2Vha1BvbHkuVGFibGUubGVuZ3RoKGZzdChMYXp5LmZvcmNlKG1lbW9fdGFibGUpKSksXG4gICAgIDEwMDAuMCAqLiAoZW5kX3RpbWUgLS4gc3RhcnRfdGltZSksXG4gICApO1xuICAgKi9cbiAgbDtcbn07XG4iLCJvcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZylcbiAgfCBIQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBWQm94KGxpc3QodCgnYW5ub3QpKSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbm1vZHVsZSBNYWtlID0gKE1lbW9UYmw6IE1lbW9UYmwuUykgPT4ge1xuICBsZXQgaGVpZ2h0X3RibDogTWVtb1RibC50KHQodW5pdCksIGludCkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCByZWMgaGVpZ2h0ID0gKGJveDogdCgnYW5ub3QpKSA9PlxuICAgIHN3aXRjaCAoTWVtb1RibC5nZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCkpKSB7XG4gICAgfCBTb21lKGgpID0+IGhcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCBoID1cbiAgICAgICAgc3dpdGNoIChib3gpIHtcbiAgICAgICAgfCBUZXh0KF8pID0+IDFcbiAgICAgICAgfCBBbm5vdChfLCBiKSA9PiBoZWlnaHQoYilcbiAgICAgICAgfCBIQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KG1heCwgMSkgLy8gTm90ZTogMSBpcyBIQm94KFtdKSBoZWlnaHRcbiAgICAgICAgfCBWQm94KGJzKSA9PiBicyB8PiBMaXN0Lm1hcChoZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KCgrKSwgMClcbiAgICAgICAgfTtcbiAgICAgIE1lbW9UYmwuc2V0KGhlaWdodF90YmwsIE9iai5tYWdpYyhib3gpLCBoKTtcbiAgICAgIGg7XG4gICAgfTtcblxuICAvLyBOb3RlOiBhbm5vdHMgYXJlIGluc2lkZS1vdXQgKGkuZS4gTGlzdC5oZChhbm5vdHMpIGlzIHRoZSBpbm5lci1tb3N0IGFubm90KVxuICBsZXQgcmVjIGFubm90ID0gKGFubm90czogbGlzdCgnYW5ub3QpLCBib3g6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgc3dpdGNoIChhbm5vdHMpIHtcbiAgICB8IFtdID0+IGJveFxuICAgIHwgW2FubiwgLi4uYW5uc10gPT4gYW5ub3QoYW5ucywgQW5ub3QoYW5uLCBib3gpKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBhcHBlbmRfYm94ID1cbiAgICAgICAgICAofmFubm90czogbGlzdCgnYW5ub3QpPVtdLCBib3gxOiB0KCdhbm5vdCksIGJveDI6IHQoJ2Fubm90KSlcbiAgICAgICAgICA6IHQoJ2Fubm90KSA9PlxuICAgIGlmIChoZWlnaHQoYm94MSkgPD0gMSkge1xuICAgICAgSEJveChbYW5ub3QoYW5ub3RzLCBib3gxKSwgYm94Ml0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVjIGFwcGVuZF9sYXN0ID0gKGJzMTogbGlzdCh0KCdhbm5vdCkpKTogbGlzdCh0KCdhbm5vdCkpID0+IHtcbiAgICAgICAgc3dpdGNoIChiczEpIHtcbiAgICAgICAgfCBbXSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgICB8IFtiMV0gPT4gW2FwcGVuZF9ib3gofmFubm90cywgYjEsIGJveDIpXVxuICAgICAgICB8IFtiMSwgLi4uYnMxXSA9PiBbYW5ub3QoYW5ub3RzLCBiMSksIC4uLmFwcGVuZF9sYXN0KGJzMSldXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgc3dpdGNoIChib3gxKSB7XG4gICAgICB8IFRleHQoXykgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlIGR1ZSB0byBgYm94X2hlaWdodGAgZ3VhcmRcIilcbiAgICAgIHwgSEJveChiczEpID0+IEhCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgVkJveChiczEpID0+IFZCb3goYXBwZW5kX2xhc3QoYnMxKSlcbiAgICAgIHwgQW5ub3QoYW5ub3QsIGIpID0+IGFwcGVuZF9ib3gofmFubm90cz1bYW5ub3QsIC4uLmFubm90c10sIGIsIGJveDIpXG4gICAgICB9O1xuICAgIH07XG5cbiAgbGV0IGFwcGVuZF9oYm94ID0gKGJveGVzMTogbGlzdCh0KCdhbm5vdCkpLCBib3hlczI6IGxpc3QodCgnYW5ub3QpKSkgPT4ge1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoYm94ZXMxKSkge1xuICAgIHwgTm9uZSA9PiBib3hlczJcbiAgICB8IFNvbWUoKGxlYWRpbmcsIGxhc3QpKSA9PiBsZWFkaW5nIEAgW2FwcGVuZF9ib3gobGFzdCwgSEJveChib3hlczIpKV1cbiAgICB9O1xuICB9O1xuXG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IG1rID0gKGw6IExheW91dC50KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICAgIGxldCBtayA9IChib3hlczogbGlzdChsaXN0KHQoXykpKSkgPT5cbiAgICAgIFZCb3goTGlzdC5tYXAocm93ID0+IEhCb3gocm93KSwgYm94ZXMpKTtcbiAgICBsZXQgcmVjIGdvID0gKGw6IExheW91dC50KF8pKSA9PiB7XG4gICAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgICB8IFNvbWUoYm94KSA9PiBPYmoubWFnaWMoYm94KVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIGxldCBib3ggPVxuICAgICAgICAgIHN3aXRjaCAobCkge1xuICAgICAgICAgIHwgTGluZWJyZWFrID0+IFtbXSwgW11dXG4gICAgICAgICAgfCBUZXh0KHMpID0+IFtbVGV4dChzKV1dXG4gICAgICAgICAgfCBBbGlnbihsKSA9PiBbW21rKGdvKGwpKV1dXG4gICAgICAgICAgfCBBbm5vdChhbm4sIGwpID0+XG4gICAgICAgICAgICBnbyhsKSB8PiBMaXN0Lm1hcChyb3cgPT4gW0Fubm90KGFubiwgSEJveChyb3cpKV0pXG4gICAgICAgICAgfCBDYXQobDEsIGwyKSA9PlxuICAgICAgICAgICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoZ28obDEpKTtcbiAgICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGdvKGwyKSk7XG4gICAgICAgICAgICBsZWFkaW5nIEAgW2FwcGVuZF9oYm94KGxhc3QsIGZpcnN0KSwgLi4udHJhaWxpbmddO1xuICAgICAgICAgIH07XG4gICAgICAgIE1lbW9UYmwuc2V0KHRhYmxlLCBPYmoubWFnaWMobCksIE9iai5tYWdpYyhib3gpKTtcbiAgICAgICAgYm94O1xuICAgICAgfTtcbiAgICB9O1xuICAgIG1rKGdvKGwpKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gVXRpbDtcblxuLypcbiAgVGhlc2UgYXJlIHRoZSBzeW50YXggdGVzdCBmdW5jdGlvbnMgdXNlZCBmb3IgdGhlIHN5bnRheCB2YWxpZGF0aW9uXG4gIHNlY3Rpb24gb2YgdGhlIGV4ZXJjaXNlcy4gVGhlIHN5bnRheCB0ZXN0cyBhcmUgZGVzaWduZWQgdG9cbiAgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaW1wbGVtZW50YXRpb24gc2F0aXNmaWVzIGNlcnRhaW4gc3ludGF4IHByb3BlcnRpZXNcbiAgZS5nLiB0YWlsIHJlY3Vyc2l2ZSBmdW5jdGlvbiBvciB2YXJpYWJsZSB1c2FnZS5cbiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN5bnRheF9yZXN1bHQgPSB7XG4gIHJlc3VsdHM6IGxpc3QoYm9vbCksXG4gIHBlcmNlbnRhZ2U6IGZsb2F0LFxufTtcblxubGV0IHJlYyBmaW5kX3Zhcl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogVGVybS5VUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMSkgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cDIpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdXApID0+IHthY2MgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cCl9LCBmYWxzZSwgbClcbiAgfCBQYXJlbnModXApID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIHwgQXAodXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBUeXBlQW5uKHVwLCBfKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiAgSGVscGVyIGZ1bmN0aW9uIHVzZWQgaW4gdGhlIGZ1bmN0aW9uIGZpbmRfZm4gd2hpY2ggdGFrZXMgdGhlXG4gIHBhdHRlcm4gKHVwYXQpIGFuZCB0aGUgZGVmaW5pdGlvbiAoZGVmKSBvZiBhIGxldCBleHByZXNzaW9uIGFuZFxuICBjb2xsZWN0cyBmdW5jdGlvbnMgaW4gZGVmIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgaW5cbiAgdXBhdC4gRXhhbXBsZTogZm9yIHRoZSBleHByZXNzaW9uIFwibGV0IChhLGIpID0gKGZ1biB4IC0+IHgrMSwgNDEpIGluXCJcbiAgaWYgbmFtZT1cImFcIiwgdGhlbiBsPVtmdW4geCAtPiB4KzFdXG4gKi9cbmxldCByZWMgZmluZF9pbl9sZXQgPVxuICAgICAgICAoXG4gICAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICAgIHVwYXQ6IFRlcm0uVVBhdC50LFxuICAgICAgICAgIGRlZjogVGVybS5VRXhwLnQsXG4gICAgICAgICAgbDogbGlzdChUZXJtLlVFeHAudCksXG4gICAgICAgIClcbiAgICAgICAgOiBsaXN0KFRlcm0uVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtLCBkZWYudGVybSkge1xuICB8IChQYXJlbnModXApLCBQYXJlbnModWUpKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGwpXG4gIHwgKFBhcmVucyh1cCksIF8pID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYsIGwpXG4gIHwgKF8sIFBhcmVucyh1ZSkpID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwYXQsIHVlLCBsKVxuICB8IChUeXBlQW5uKHVwLCBfKSwgXykgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZiwgbClcbiAgfCAoVmFyKHgpLCBGdW4oXykpID0+IHggPT0gbmFtZSA/IFtkZWYsIC4uLmxdIDogbFxuICB8IChUdXBsZShwbCksIFR1cGxlKHVsKSkgPT5cbiAgICBpZiAoTGlzdC5sZW5ndGgocGwpICE9IExpc3QubGVuZ3RoKHVsKSkge1xuICAgICAgbDtcbiAgICB9IGVsc2Uge1xuICAgICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgICAoYWNjLCB1cCwgdWUpID0+IHtmaW5kX2luX2xldChuYW1lLCB1cCwgdWUsIGFjYyl9LFxuICAgICAgICBsLFxuICAgICAgICBwbCxcbiAgICAgICAgdWwsXG4gICAgICApO1xuICAgIH1cbiAgfCAoVmFyKF8pLCBfKVxuICB8IChUdXBsZShfKSwgXylcbiAgfCAoXG4gICAgICBFbXB0eUhvbGUgfCBXaWxkIHwgVHJpdiB8IEludmFsaWQoXykgfCBNdWx0aUhvbGUoXykgfCBJbnQoXykgfCBGbG9hdChfKSB8XG4gICAgICBCb29sKF8pIHxcbiAgICAgIFN0cmluZyhfKSB8XG4gICAgICBMaXN0TGl0KF8pIHxcbiAgICAgIENvbnN0cnVjdG9yKF8pIHxcbiAgICAgIENvbnMoXywgXykgfFxuICAgICAgQXAoXywgXyksXG4gICAgICBfLFxuICAgICkgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kIGFueSBmdW5jdGlvbiBleHByZXNzaW9ucyBpbiB1ZXhwIHRoYXQgYXJlIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWVcbiAqL1xubGV0IHJlYyBmaW5kX2ZuID1cbiAgICAgICAgKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQsIGw6IGxpc3QoVGVybS5VRXhwLnQpKVxuICAgICAgICA6IGxpc3QoVGVybS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBMZXQodXAsIGRlZiwgYm9keSkgPT5cbiAgICBsIHw+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYpIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KHVsKVxuICB8IFR1cGxlKHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHUxKSA9PiB7ZmluZF9mbihuYW1lLCB1MSwgYWNjKX0sIGwsIHVsKVxuICB8IFR5cEZ1bihfLCBib2R5KVxuICB8IEZ1bihfLCBib2R5KSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgYm9keSlcbiAgfCBUeXBBcCh1MSwgXylcbiAgfCBQYXJlbnModTEpXG4gIHwgVW5PcChfLCB1MSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUxKVxuICB8IFRlc3QodTEpXG4gIHwgRmlsdGVyKF8sIF8sIHUxKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSB8PiBmaW5kX2ZuKG5hbWUsIHUyKSB8PiBmaW5kX2ZuKG5hbWUsIHUzKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgbFxuICAgIHw+IGZpbmRfZm4obmFtZSwgZm4pXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoKGwsIHUpID0+IGZpbmRfZm4obmFtZSwgdSwgbCksIF8sIGFyZ3MpXG4gIHwgTWF0Y2godTEsIHVsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgKF8sIHVlKSkgPT4ge2ZpbmRfZm4obmFtZSwgdWUsIGFjYyl9LFxuICAgICAgbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKSxcbiAgICAgIHVsLFxuICAgIClcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgRGVmZXJyYWwoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBWYXIoXykgPT4gbFxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdXBhdC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogVGVybS5VUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVwKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApfSxcbiAgICAgIGZhbHNlLFxuICAgICAgbCxcbiAgICApXG4gIHwgUGFyZW5zKHVwKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB8IEFwKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBUeXBlQW5uKHVwLCBfKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbiA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBEZWZlcnJhbChfKSA9PiBmYWxzZVxuICB8IEZ1bihhcmdzLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX21lbnRpb24obmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApXG4gICAgICA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgZGVmKSB8fCB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgQXAodTEsIHUyKVxuICB8IFBpcGVsaW5lKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCBMaXN0LmV4aXN0cyh2YXJfbWVudGlvbihuYW1lKSwgdXMpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBhcHBsaWVkIG9uIGFub3RoZXIgZXhwcmVzc3Npb24uXG4gaS5lLiBBcChWYXIobmFtZSksIHUpIG9jY3VycyBhbnl3aGVyZSBpbiB0aGUgdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfYXBwbGllZCA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfYXBwbGllZChuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBkZWYpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUpXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUpXG4gIHwgVHlwQXAodSwgXykgPT5cbiAgICBzd2l0Y2ggKHUudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBmYWxzZVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICAgIH1cbiAgfCBBcCh1MSwgdTIpID0+XG4gICAgc3dpdGNoICh1MS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHN3aXRjaCAodTEudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBMaXN0LmV4aXN0cyh2YXJfYXBwbGllZChuYW1lKSwgdXMpXG4gICAgfCBfID0+IExpc3QuZXhpc3RzKHZhcl9hcHBsaWVkKG5hbWUpLCB1cylcbiAgICB9XG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PlxuICAgIHN3aXRjaCAodTIudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiB2YXJfYXBwbGllZChuYW1lLCB1MSlcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIH1cbiAgfCBDb25zKHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9hcHBsaWVkKG5hbWUsIGcpXG4gICAgfHwgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCBwZSkgPT4ge1xuICAgICAgICAgICBsZXQgKHAsIGUpID0gcGU7XG4gICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyB8fCB2YXJfYXBwbGllZChuYW1lLCBlKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBmYWxzZSxcbiAgICAgICAgIGwsXG4gICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgcmVjdXJzaXZlLlxuICovXG5sZXQgaXNfcmVjdXJzaXZlID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG4vKlxuIENoZWNrIGlmIHZhcmlhYmxlIG5hbWUgaXMgbm90IG1lbnRpb25lZCBhbnl3aGVyZSBvdXRzaWRlIG9mXG4gYSB0YWlsIHBvc2l0aW9uIGluIHVleHAuIE5vdGUgdGhhdCBpZiB0aGUgdmFyaWFibGUgaXMgbm90XG4gbWVudGlvbmVkIGFueXdoZXJlIGluIHRoZSBleHByZXNzaW9uLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLlxuICovXG5sZXQgcmVjIHRhaWxfY2hlY2sgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBEZWZlcnJhbChfKVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKSA9PiB0cnVlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSB8fCB2YXJfbWVudGlvbihuYW1lLCBkZWYpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIC8vSWYgbCBoYXMgbm8gcmVjdXJzaXZlIGNhbGxzIHRoZW4gdHJ1ZVxuICAgICFMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBUZXN0KF8pID0+IGZhbHNlXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCBfLCB1KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFR5cEFwKHUsIF8pXG4gIHwgUGFyZW5zKHUpID0+IHRhaWxfY2hlY2sobmFtZSwgdSlcbiAgfCBVbk9wKF8sIHUpID0+ICF2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEFwKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTIpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUxKVxuICB8IERlZmVycmVkQXAoZm4sIGFyZ3MpID0+XG4gICAgdGFpbF9jaGVjayhcbiAgICAgIG5hbWUsXG4gICAgICB7aWRzOiBbXSwgdGVybTogQXAoZm4sIHtpZHM6IFtdLCB0ZXJtOiBUdXBsZShhcmdzKX0pfSxcbiAgICApXG4gIHwgUGlwZWxpbmUodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpXG4gIHwgU2VxKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gISh2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgdTEpXG4gICAgICA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MikgJiYgdGFpbF9jaGVjayhuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIGcpXG4gICAgICA/IGZhbHNlXG4gICAgICA6IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIChwLCBlKSkgPT4ge1xuICAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjICYmIHRhaWxfY2hlY2sobmFtZSwgZSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICAgbCxcbiAgICAgICAgKVxuICB9O1xufTtcblxuLypcbiBDaGVjayB3aGV0aGVyIGFsbCBmdW5jdGlvbnMgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBhcmUgdGFpbCByZWN1cnNpdmUuXG4gKi9cbmxldCBpc190YWlsX3JlY3Vyc2l2ZSA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIGxldCBmbl9ib2RpZXMgPSBbXSB8PiBmaW5kX2ZuKG5hbWUsIHVleHApO1xuICBpZiAoTGlzdC5sZW5ndGgoZm5fYm9kaWVzKSA9PSAwKSB7XG4gICAgZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1ZSkgPT4ge2FjYyAmJiB2YXJfbWVudGlvbihuYW1lLCB1ZSkgJiYgdGFpbF9jaGVjayhuYW1lLCB1ZSl9LFxuICAgICAgdHJ1ZSxcbiAgICAgIGZuX2JvZGllcyxcbiAgICApO1xuICB9O1xufTtcblxubGV0IGNoZWNrID1cbiAgICAodWV4cDogVGVybS5VRXhwLnQsIHByZWRpY2F0ZXM6IGxpc3QoVGVybS5VRXhwLnQgPT4gYm9vbCkpOiBzeW50YXhfcmVzdWx0ID0+IHtcbiAgbGV0IHJlc3VsdHMgPSBMaXN0Lm1hcChwcmVkID0+IHt1ZXhwIHw+IHByZWR9LCBwcmVkaWNhdGVzKTtcbiAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoKHByZWRpY2F0ZXMpO1xuICBsZXQgcGFzc2luZyA9IFV0aWwuTGlzdFV0aWwuY291bnRfcHJlZChyZXMgPT4gcmVzLCByZXN1bHRzKTtcblxuICB7XG4gICAgcmVzdWx0cyxcbiAgICBwZXJjZW50YWdlOlxuICAgICAgLy92YWN1b3VzbHkgcGFzc2VzIGlmIHRoZXJlIGFyZSBubyB0ZXN0c1xuICAgICAgbGVuZ3RoID09IDAgPyAxLiA6IGZsb2F0X29mX2ludChwYXNzaW5nKSAvLiBmbG9hdF9vZl9pbnQobGVuZ3RoKSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcHJlZGljYXRlID1cbiAgfCBWYXJBcHBsaWVkKHN0cmluZylcbiAgfCBJc1JlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNOb3RSZWN1cnNpdmUoc3RyaW5nKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShzdHJpbmcpO1xuXG5sZXQgcHJlZGljYXRlX2ZuID0gcHJlZGljYXRlID0+IHtcbiAgc3dpdGNoIChwcmVkaWNhdGUpIHtcbiAgfCBWYXJBcHBsaWVkKG5hbWUpID0+IHZhcl9hcHBsaWVkKG5hbWUpXG4gIHwgSXNSZWN1cnNpdmUobmFtZSkgPT4gaXNfcmVjdXJzaXZlKG5hbWUpXG4gIHwgSXNOb3RSZWN1cnNpdmUobmFtZSkgPT4gKHVleHAgPT4gIWlzX3JlY3Vyc2l2ZShuYW1lLCB1ZXhwKSlcbiAgfCBJc1RhaWxSZWN1cnNpdmUobmFtZSkgPT4gaXNfdGFpbF9yZWN1cnNpdmUobmFtZSlcbiAgfTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcblxubW9kdWxlIHR5cGUgRXhlcmNpc2VFbnYgPSB7XG4gIHR5cGUgbm9kZTtcbiAgbGV0IGRlZmF1bHQ6IG5vZGU7XG4gIGxldCBvdXRwdXRfaGVhZGVyOiBzdHJpbmcgPT4gc3RyaW5nO1xufTtcblxubGV0IG91dHB1dF9oZWFkZXJfZ3JhZGluZyA9IF9tb2R1bGVfbmFtZSA9PlxuICBcIm1vZHVsZSBFeGVyY2lzZSA9IEdyYWRlUHJlbHVkZS5FeGVyY2lzZVxcblwiICsrIFwibGV0IHByb21wdCA9ICgpXFxuXCI7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZUVudikgPT4ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgd3JvbmdfaW1wbCgnY29kZSkgPSB7XG4gICAgaW1wbDogJ2NvZGUsXG4gICAgaGludDogc3RyaW5nLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaWRkZW5fdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaW50ID0gc3RyaW5nO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdCA9IChoaW50LCBTeW50YXhUZXN0LnByZWRpY2F0ZSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0cyA9IGxpc3Qoc3ludGF4X3Rlc3QpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB5b3VyX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgcmVxdWlyZWQ6IGludCxcbiAgICBwcm92aWRlZDogaW50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludF9kaXN0cmlidXRpb24gPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiBpbnQsXG4gICAgbXV0YXRpb25fdGVzdGluZzogaW50LFxuICAgIGltcGxfZ3JhZGluZzogaW50LFxuICB9O1xuXG4gIGxldCB2YWxpZGF0ZV9wb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgKHt0ZXN0X3ZhbGlkYXRpb24sIG11dGF0aW9uX3Rlc3RpbmcsIGltcGxfZ3JhZGluZ306IHBvaW50X2Rpc3RyaWJ1dGlvbikgPT5cbiAgICB0ZXN0X3ZhbGlkYXRpb24gKyBtdXRhdGlvbl90ZXN0aW5nICsgaW1wbF9ncmFkaW5nID09IDEwMFxuICAgICAgPyAoKSA6IGZhaWx3aXRoKFwiSW52YWxpZCBwb2ludCBkaXN0cmlidXRpb24gaW4gZXhlcmNpc2UuXCIpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwKCdjb2RlKSA9IHtcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHZlcnNpb246IGludCxcbiAgICBtb2R1bGVfbmFtZTogc3RyaW5nLFxuICAgIHByb21wdDpcbiAgICAgIFtAcHJpbnRlciAoZm10LCBfKSA9PiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJwcm9tcHRcIildIFtAb3BhcXVlXSBFeGVyY2lzZUVudi5ub2RlLFxuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICBwcmVsdWRlOiAnY29kZSxcbiAgICBjb3JyZWN0X2ltcGw6ICdjb2RlLFxuICAgIHlvdXJfdGVzdHM6IHlvdXJfdGVzdHMoJ2NvZGUpLFxuICAgIHlvdXJfaW1wbDogJ2NvZGUsXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbCgnY29kZSkpLFxuICAgIGhpZGRlbl90ZXN0czogaGlkZGVuX3Rlc3RzKCdjb2RlKSxcbiAgICBzeW50YXhfdGVzdHMsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGtleSA9IChzdHJpbmcsIGludCk7XG5cbiAgbGV0IGtleV9vZiA9IHAgPT4ge1xuICAgIChwLnRpdGxlLCBwLnZlcnNpb24pO1xuICB9O1xuXG4gIGxldCBmaW5kX2tleV9vcHQgPSAoa2V5LCBzcGVjczogbGlzdChwKCdjb2RlKSkpID0+IHtcbiAgICBzcGVjcyB8PiBVdGlsLkxpc3RVdGlsLmZpbmRpX29wdChzcGVjID0+IGtleV9vZihzcGVjKSA9PSBrZXkpO1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb3MgPVxuICAgIHwgUHJlbHVkZVxuICAgIHwgQ29ycmVjdEltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IFlvdXJJbXBsXG4gICAgfCBIaWRkZW5CdWdzKGludClcbiAgICB8IEhpZGRlblRlc3RzO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzcGVjID0gcChaaXBwZXIudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRyYW5zaXRpb25hcnlfc3BlYyA9IHAoQ29kZVN0cmluZy50KTtcblxuICBsZXQgbWFwID0gKHA6IHAoJ2EpLCBmOiAnYSA9PiAnYik6IHAoJ2IpID0+IHtcbiAgICB7XG4gICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgIHZlcnNpb246IHAudmVyc2lvbixcbiAgICAgIG1vZHVsZV9uYW1lOiBwLm1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBwLnByb21wdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogcC5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlOiBmKHAucHJlbHVkZSksXG4gICAgICBjb3JyZWN0X2ltcGw6IGYocC5jb3JyZWN0X2ltcGwpLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogZihwLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgICByZXF1aXJlZDogcC55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogcC55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbDogZihwLnlvdXJfaW1wbCksXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgcC5oaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHtcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBpbXBsOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3Qod3JvbmdfaW1wbC5pbXBsKSxcbiAgICAgICAgICAgICAgIGhpbnQ6IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgIH0pLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QocC5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgICAgICBoaW50czogcC5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBwLnN5bnRheF90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBlZHMgPSBwKEVkaXRvci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3RhdGUgPSB7XG4gICAgcG9zLFxuICAgIGVkcyxcbiAgfTtcblxuICBsZXQga2V5X29mX3N0YXRlID0gKHtlZHMsIF99KSA9PiBrZXlfb2YoZWRzKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudF9zdGF0ZSA9IChwb3MsIGxpc3QoKHBvcywgUGVyc2lzdGVudFppcHBlci50KSkpO1xuXG4gIGxldCBlZGl0b3Jfb2Zfc3RhdGU6IHN0YXRlID0+IEVkaXRvci50ID1cbiAgICAoe3BvcywgZWRzLCBffSkgPT5cbiAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICB8IFByZWx1ZGUgPT4gZWRzLnByZWx1ZGVcbiAgICAgIHwgQ29ycmVjdEltcGwgPT4gZWRzLmNvcnJlY3RfaW1wbFxuICAgICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IGVkcy55b3VyX3Rlc3RzLnRlc3RzXG4gICAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICAgIHwgWW91ckltcGwgPT4gZWRzLnlvdXJfaW1wbFxuICAgICAgfCBIaWRkZW5CdWdzKGkpID0+IExpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgaSkuaW1wbFxuICAgICAgfCBIaWRkZW5UZXN0cyA9PiBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXG4gICAgICB9O1xuXG4gIGxldCBwdXRfZWRpdG9yID0gKHtwb3MsIGVkcywgX30gYXMgc3RhdGU6IHN0YXRlLCBlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBwcmVsdWRlOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBDb3JyZWN0SW1wbCA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgY29ycmVjdF9pbXBsOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMueW91cl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJJbXBsID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX2ltcGw6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlbkJ1Z3MobikgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgICAgVXRpbC5MaXN0VXRpbC5wdXRfbnRoKFxuICAgICAgICAgICAgICBuLFxuICAgICAgICAgICAgICB7Li4uTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBuKSwgaW1wbDogZWRpdG9yfSxcbiAgICAgICAgICAgICAgZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IEhpZGRlblRlc3RzID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy5oaWRkZW5fdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZWRpdG9ycyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1xuICAgICAgZWRzLnByZWx1ZGUsXG4gICAgICBlZHMuY29ycmVjdF9pbXBsLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX2ltcGwsXG4gICAgXVxuICAgIEAgTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB3cm9uZ19pbXBsLmltcGwsIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXTtcblxuICBsZXQgZWRpdG9yX3Bvc2l0aW9ucyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1ByZWx1ZGUsIENvcnJlY3RJbXBsLCBZb3VyVGVzdHNUZXN0aW5nLCBZb3VyVGVzdHNWYWxpZGF0aW9uLCBZb3VySW1wbF1cbiAgICBAIExpc3QubWFwaSgoaSwgXykgPT4gSGlkZGVuQnVncyhpKSwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW0hpZGRlblRlc3RzXTtcblxuICBsZXQgcG9zaXRpb25lZF9lZGl0b3JzID0gc3RhdGUgPT5cbiAgICBMaXN0LmNvbWJpbmUoZWRpdG9yX3Bvc2l0aW9ucyhzdGF0ZSksIGVkaXRvcnMoc3RhdGUpKTtcblxuICBsZXQgaWR4X29mX3BvcyA9IChwb3MsIHA6IHAoJ2NvZGUpKSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IDBcbiAgICB8IENvcnJlY3RJbXBsID0+IDFcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gMlxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiAzXG4gICAgfCBZb3VySW1wbCA9PiA0XG4gICAgfCBIaWRkZW5CdWdzKGkpID0+XG4gICAgICBpZiAoaSA8IExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIDUgKyBpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJpbnZhbGlkIGhpZGRlbiBidWcgaW5kZXhcIik7XG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncylcbiAgICB9O1xuXG4gIGxldCBwb3Nfb2ZfaWR4ID0gKHA6IHAoJ2NvZGUpLCBpZHg6IGludCkgPT5cbiAgICBzd2l0Y2ggKGlkeCkge1xuICAgIHwgMCA9PiBQcmVsdWRlXG4gICAgfCAxID0+IENvcnJlY3RJbXBsXG4gICAgfCAyID0+IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IDMgPT4gWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgNCA9PiBZb3VySW1wbFxuICAgIHwgXyA9PlxuICAgICAgaWYgKGlkeCA8IDApIHtcbiAgICAgICAgZmFpbHdpdGgoXCJuZWdhdGl2ZSBpZHhcIik7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA8IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5CdWdzKGlkeCAtIDUpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPT0gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlblRlc3RzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJlbGVtZW50IGlkeFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBzd2l0Y2hfZWRpdG9yID0gKH5wb3MsIGluc3RydWN0b3JfbW9kZSwgfmV4ZXJjaXNlKSA9PlxuICAgIGlmICghaW5zdHJ1Y3Rvcl9tb2RlKSB7XG4gICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgfCBIaWRkZW5UZXN0c1xuICAgICAgfCBIaWRkZW5CdWdzKF8pID0+IGV4ZXJjaXNlXG4gICAgICB8IF8gPT4ge2VkczogZXhlcmNpc2UuZWRzLCBwb3N9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB7ZWRzOiBleGVyY2lzZS5lZHMsIHBvc307XG4gICAgfTtcblxuICBsZXQgemlwcGVyX29mX2NvZGUgPSBjb2RlID0+IHtcbiAgICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhjb2RlKSkge1xuICAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIlRyYW5zaXRpb24gZmFpbGVkLlwiKVxuICAgIHwgU29tZSh6aXBwZXIpID0+IHppcHBlclxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRyYW5zaXRpb246IHRyYW5zaXRpb25hcnlfc3BlYyA9PiBzcGVjID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9LFxuICAgICkgPT4ge1xuICAgICAgbGV0IHByZWx1ZGUgPSB6aXBwZXJfb2ZfY29kZShwcmVsdWRlKTtcbiAgICAgIGxldCBjb3JyZWN0X2ltcGwgPSB6aXBwZXJfb2ZfY29kZShjb3JyZWN0X2ltcGwpO1xuICAgICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgICB9O1xuICAgICAgbGV0IHlvdXJfaW1wbCA9IHppcHBlcl9vZl9jb2RlKHlvdXJfaW1wbCk7XG4gICAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgIGxldCBpbXBsID0gemlwcGVyX29mX2NvZGUoaW1wbCk7XG4gICAgICAgICAgICBhY2MgQCBbe2ltcGwsIGhpbnR9XTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICApO1xuICAgICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgICBsZXQgdGVzdHMgPSB6aXBwZXJfb2ZfY29kZSh0ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgICAgfTtcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgZWRzX29mX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQsXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHByZWx1ZGUsXG4gICAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICAgIH0sXG4gICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICApXG4gICAgICA6IGVkcyA9PiB7XG4gICAgbGV0IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uID0gRWRpdG9yLmluaXQofnNldHRpbmdzKTtcbiAgICBsZXQgcHJlbHVkZSA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihjb3JyZWN0X2ltcGwpO1xuICAgIGxldCB5b3VyX3Rlc3RzID0ge1xuICAgICAgbGV0IHRlc3RzID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgfTtcbiAgICBsZXQgeW91cl9pbXBsID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oeW91cl9pbXBsKTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgaGlkZGVuX2J1Z3NcbiAgICAgIHw+IExpc3QubWFwKCh7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICAgbGV0IGltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihpbXBsKTtcbiAgICAgICAgICAge2ltcGwsIGhpbnR9O1xuICAgICAgICAgfSk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgIGxldCB7dGVzdHMsIGhpbnRzfSA9IGhpZGRlbl90ZXN0cztcbiAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHRlc3RzKTtcbiAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgIH07XG4gICAge1xuICAgICAgdGl0bGUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgbW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlLFxuICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgeW91cl90ZXN0cyxcbiAgICAgIHlvdXJfaW1wbCxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgc3ludGF4X3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgLy9cbiAgLy8gT2xkIHZlcnNpb24gb2YgYWJvdmUgdGhhdCBkaWQgc3RyaW5nLWJhc2VkIHBhcnNpbmcsIG1heSBiZSB1c2VmdWxcbiAgLy8gZm9yIHRyYW5zaXRpb25zIGJldHdlZW4gemlwcGVyIGRhdGEgc3RydWN0dXJlIHZlcnNpb25zIChUT0RPKVxuICAvL1xuICAvLyBsZXQgZWRpdG9yX29mX2NvZGUgPSAoaW5pdF9pZCwgY29kZSkgPT5cbiAgLy8gICBzd2l0Y2ggKEVkaXRvclV0aWwuZWRpdG9yX29mX2NvZGUoaW5pdF9pZCwgY29kZSkpIHtcbiAgLy8gICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJFeGVyY2lzZSBlcnJvcjogaW52YWxpZCBjb2RlXCIpXG4gIC8vICAgfCBTb21lKHgpID0+IHhcbiAgLy8gICB9O1xuICAvLyBsZXQgZWRzX29mX3NwZWM6IHNwZWMgPT4gZWRzID1cbiAgLy8gICAoXG4gIC8vICAgICB7XG4gIC8vXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9LFxuICAvLyAgICkgPT4ge1xuICAvLyAgICAgbGV0IGlkID0gbmV4dF9pZDtcbiAgLy8gICAgIGxldCAoaWQsIHByZWx1ZGUpID0gZWRpdG9yX29mX2NvZGUoaWQsIHByZWx1ZGUpO1xuICAvLyAgICAgbGV0IChpZCwgY29ycmVjdF9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBjb3JyZWN0X2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgeW91cl90ZXN0cykgPSB7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgLy8gICAgICAgKFxuICAvLyAgICAgICAgIGlkLFxuICAvLyAgICAgICAgIHtcbiAgLy8gICAgICAgICAgIHRlc3RzLFxuICAvLyAgICAgICAgICAgbnVtX3JlcXVpcmVkOiB5b3VyX3Rlc3RzLm51bV9yZXF1aXJlZCxcbiAgLy8gICAgICAgICAgIG1pbmltdW06IHlvdXJfdGVzdHMubWluaW11bSxcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICApO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIGxldCAoaWQsIHlvdXJfaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgeW91cl9pbXBsKTtcbiAgLy8gICAgIGxldCAoaWQsIGhpZGRlbl9idWdzKSA9XG4gIC8vICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAvLyAgICAgICAgICgoaWQsIGFjYyksIHtpbXBsLCBoaW50fSkgPT4ge1xuICAvLyAgICAgICAgICAgbGV0IChpZCwgaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgaW1wbCk7XG4gIC8vICAgICAgICAgICAoaWQsIGFjYyBAIFt7aW1wbCwgaGludH1dKTtcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICAgIChpZCwgW10pLFxuICAvLyAgICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICApO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAvLyAgICAgICBsZXQgKGlkLCB0ZXN0cykgPSBlZGl0b3Jfb2ZfY29kZShpZCwgdGVzdHMpO1xuICAvLyAgICAgICAoaWQsIHt0ZXN0cywgaGludHN9KTtcbiAgLy8gICAgIH07XG4gIC8vICAgICB7XG4gIC8vICAgICAgIG5leHRfaWQ6IGlkLFxuICAvLyAgICAgICB0aXRsZSxcbiAgLy8gICAgICAgdmVyc2lvbixcbiAgLy8gICAgICAgcHJvbXB0LFxuICAvLyAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gIC8vICAgICAgIHByZWx1ZGUsXG4gIC8vICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgLy8gICAgICAgeW91cl90ZXN0cyxcbiAgLy8gICAgICAgeW91cl9pbXBsLFxuICAvLyAgICAgICBoaWRkZW5fYnVncyxcbiAgLy8gICAgICAgaGlkZGVuX3Rlc3RzLFxuICAvLyAgICAgfTtcbiAgLy8gICB9O1xuXG4gIGxldCBzZXRfaW5zdHJ1Y3Rvcl9tb2RlID0gKHtlZHMsIF99IGFzIHN0YXRlOiBzdGF0ZSwgbmV3X21vZGU6IGJvb2wpID0+IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBlZHM6IHtcbiAgICAgIC4uLmVkcyxcbiAgICAgIHByZWx1ZGU6IEVkaXRvci5zZXRfcmVhZF9vbmx5KGVkcy5wcmVsdWRlLCAhbmV3X21vZGUpLFxuICAgIH0sXG4gIH07XG5cbiAgbGV0IHZpc2libGVfaW4gPSAocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gdHJ1ZVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBmYWxzZVxuICAgIHwgWW91ckltcGwgPT4gdHJ1ZVxuICAgIHwgSGlkZGVuQnVncyhfKSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IEhpZGRlblRlc3RzID0+IGluc3RydWN0b3JfbW9kZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0YXRlX29mX3NwZWMgPVxuICAgICAgKHNwZWMsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wsIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQpOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGVkcyA9IGVkc19vZl9zcGVjKH5zZXR0aW5ncywgc3BlYyk7XG4gICAgc2V0X2luc3RydWN0b3JfbW9kZSh7cG9zOiBZb3VySW1wbCwgZWRzfSwgaW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgfTtcblxuICBsZXQgcGVyc2lzdGVudF9zdGF0ZV9vZl9zdGF0ZSA9XG4gICAgICAoe3BvcywgX30gYXMgc3RhdGU6IHN0YXRlLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKSA9PiB7XG4gICAgbGV0IHppcHBlcnMgPVxuICAgICAgcG9zaXRpb25lZF9lZGl0b3JzKHN0YXRlKVxuICAgICAgfD4gTGlzdC5maWx0ZXIoKChwb3MsIF8pKSA9PiB2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpXG4gICAgICB8PiBMaXN0Lm1hcCgoKHBvcywgZWRpdG9yKSkgPT4ge1xuICAgICAgICAgICAocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoRWRpdG9yLihlZGl0b3Iuc3RhdGUuemlwcGVyKSkpXG4gICAgICAgICB9KTtcbiAgICAocG9zLCB6aXBwZXJzKTtcbiAgfTtcblxuICBsZXQgdW5wZXJzaXN0X3N0YXRlID1cbiAgICAgIChcbiAgICAgICAgKHBvcywgcG9zaXRpb25lZF96aXBwZXJzKTogcGVyc2lzdGVudF9zdGF0ZSxcbiAgICAgICAgfnNwZWM6IHNwZWMsXG4gICAgICAgIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wsXG4gICAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICApXG4gICAgICA6IHN0YXRlID0+IHtcbiAgICBsZXQgbG9va3VwID0gKHBvcywgZGVmYXVsdCkgPT5cbiAgICAgIGlmICh2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpIHtcbiAgICAgICAgbGV0IHBlcnNpc3RlZF96aXBwZXIgPSBMaXN0LmFzc29jKHBvcywgcG9zaXRpb25lZF96aXBwZXJzKTtcbiAgICAgICAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHBlcnNpc3RlZF96aXBwZXIpO1xuICAgICAgICBFZGl0b3IuaW5pdCh6aXBwZXIsIH5zZXR0aW5ncyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBFZGl0b3IuaW5pdChkZWZhdWx0LCB+c2V0dGluZ3MpO1xuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9IGxvb2t1cChQcmVsdWRlLCBzcGVjLnByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBsb29rdXAoQ29ycmVjdEltcGwsIHNwZWMuY29ycmVjdF9pbXBsKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IGxvb2t1cChZb3VyVGVzdHNWYWxpZGF0aW9uLCBzcGVjLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBsb29rdXAoWW91ckltcGwsIHNwZWMueW91cl9pbXBsKTtcbiAgICBsZXQgKF8sIGhpZGRlbl9idWdzKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKChpLCBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSkpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICBsZXQgaW1wbCA9IGxvb2t1cChIaWRkZW5CdWdzKGkpLCBpbXBsKTtcbiAgICAgICAgICAoaSArIDEsIGhpZGRlbl9idWdzIEAgW3tpbXBsLCBoaW50fV0pO1xuICAgICAgICB9LFxuICAgICAgICAoMCwgW10pLFxuICAgICAgICBzcGVjLmhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gbG9va3VwKEhpZGRlblRlc3RzLCBzcGVjLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG5cbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKFxuICAgICAge1xuICAgICAgICBwb3MsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIHRpdGxlOiBzcGVjLnRpdGxlLFxuICAgICAgICAgIHZlcnNpb246IHNwZWMudmVyc2lvbixcbiAgICAgICAgICBtb2R1bGVfbmFtZTogc3BlYy5tb2R1bGVfbmFtZSxcbiAgICAgICAgICBwcm9tcHQ6IHNwZWMucHJvbXB0LFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogc3BlYy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICAgICAgdGVzdHM6IHlvdXJfdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICByZXF1aXJlZDogc3BlYy55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICAgICAgcHJvdmlkZWQ6IHNwZWMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiBoaWRkZW5fdGVzdHNfdGVzdHMsXG4gICAgICAgICAgICBoaW50czogc3BlYy5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzeW50YXhfdGVzdHM6IHNwZWMuc3ludGF4X3Rlc3RzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGluc3RydWN0b3JfbW9kZSxcbiAgICApO1xuICB9O1xuXG4gIC8vICMgU3RpdGNoaW5nXG5cbiAgdHlwZSBzdGl0Y2hlZCgnYSkgPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiAnYSwgLy8gcHJlbHVkZSArIGNvcnJlY3RfaW1wbCArIHlvdXJfdGVzdHNcbiAgICB1c2VyX2ltcGw6ICdhLCAvLyBwcmVsdWRlICsgeW91cl9pbXBsXG4gICAgdXNlcl90ZXN0czogJ2EsIC8vIHByZWx1ZGUgKyB5b3VyX2ltcGwgKyB5b3VyX3Rlc3RzXG4gICAgcHJlbHVkZTogJ2EsIC8vIHByZWx1ZGVcbiAgICBpbnN0cnVjdG9yOiAnYSwgLy8gcHJlbHVkZSArIGNvcnJlY3RfaW1wbCArIGhpZGRlbl90ZXN0cy50ZXN0cyAvLyBUT0RPIG9ubHkgbmVlZHMgdG8gcnVuIGluIGluc3RydWN0b3IgbW9kZVxuICAgIGhpZGRlbl9idWdzOiBsaXN0KCdhKSwgLy8gcHJlbHVkZSArIGhpZGRlbl9idWdzW2ldLmltcGwgKyB5b3VyX3Rlc3RzLFxuICAgIGhpZGRlbl90ZXN0czogJ2EsXG4gIH07XG5cbiAgbGV0IHdyYXBfZmlsdGVyID0gKGFjdDogRmlsdGVyQWN0aW9uLmFjdGlvbiwgdGVybTogVGVybS5VRXhwLnQpOiBUZXJtLlVFeHAudCA9PlxuICAgIFRlcm1CYXNlLlVFeHAue1xuICAgICAgdGVybTpcbiAgICAgICAgVGVybUJhc2UuVUV4cC5GaWx0ZXIoXG4gICAgICAgICAgRmlsdGVyQWN0aW9uLihhY3QsIE9uZSksXG4gICAgICAgICAge3Rlcm06IENvbnN0cnVjdG9yKFwiJGVcIiksIGlkczogW0lkLm1rKCldfSxcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICApLFxuICAgICAgaWRzOiBbSWQubWsoKV0sXG4gICAgfTtcblxuICBsZXQgdGVybV9vZiA9IChlZGl0b3I6IEVkaXRvci50KTogVGVybS5VRXhwLnQgPT5cbiAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKGVkaXRvci5zdGF0ZS56aXBwZXIpIHw+IGZzdDtcblxuICBsZXQgc3RpdGNoMyA9IChlZDE6IEVkaXRvci50LCBlZDI6IEVkaXRvci50LCBlZDM6IEVkaXRvci50KSA9PlxuICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh0ZXJtX29mKGVkMSksIHRlcm1fb2YoZWQyKSksXG4gICAgICB0ZXJtX29mKGVkMyksXG4gICAgKTtcblxuICBsZXQgc3RpdGNoX3Rlcm0gPSAoe2VkcywgX306IHN0YXRlKTogc3RpdGNoZWQoVGVybUJhc2UuVUV4cC50KSA9PiB7XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfaW1wbF90ZXJtID0ge1xuICAgICAgbGV0IHlvdXJfaW1wbF90ZXJtID1cbiAgICAgICAgZWRzLnlvdXJfaW1wbCB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5TdGVwKTtcbiAgICAgIGxldCBwcmVsdWRlX3Rlcm0gPVxuICAgICAgICBlZHMucHJlbHVkZSB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5FdmFsKTtcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChwcmVsdWRlX3Rlcm0sIHlvdXJfaW1wbF90ZXJtKTtcbiAgICB9O1xuICAgIGxldCB0ZXN0X3ZhbGlkYXRpb25fdGVybSA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLnlvdXJfdGVzdHMudGVzdHMpKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IHRlc3RfdmFsaWRhdGlvbl90ZXJtLFxuICAgICAgdXNlcl9pbXBsOiB1c2VyX2ltcGxfdGVybSxcbiAgICAgIHVzZXJfdGVzdHM6IHVzZXJfdGVzdHNfdGVybSxcbiAgICAgIC8vIGluc3RydWN0b3Igd29ya3MgaGVyZSBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIHByZWx1ZGU6IGluc3RydWN0b3IsXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh0KTogVGVybUJhc2UuVUV4cC50ID0+XG4gICAgICAgICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCB0LmltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBoaWRkZW5fdGVzdHM6IGhpZGRlbl90ZXN0c190ZXJtLFxuICAgIH07XG4gIH07XG4gIGxldCBzdGl0Y2hfdGVybSA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF90ZXJtKTtcblxuICB0eXBlIHN0aXRjaGVkX3N0YXRpY3MgPSBzdGl0Y2hlZChFZGl0b3IuQ2FjaGVkU3RhdGljcy50KTtcblxuICAvKiBNdWx0aXBsZSBzdGl0Y2hpbmdzIGFyZSBuZWVkZWQgZm9yIGVhY2ggZXhlcmNpc2VcbiAgICAgKHNlZSBjb21tZW50cyBpbiB0aGUgc3RpdGNoZWQgdHlwZSBhYm92ZSlcblxuICAgICBTdGl0Y2hpbmcgaXMgbmVjZXNzYXJ5IHRvIGNvbmNhdGVuYXRlIHRlcm1zXG4gICAgIGZyb20gZGlmZmVyZW50IGVkaXRvcnMsIHdoaWNoIGFyZSB0aGVuIHR5cGVjaGVja2VkLiAqL1xuICBsZXQgc3RpdGNoX3N0YXRpYyA9XG4gICAgICAoc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB0OiBzdGl0Y2hlZChUZXJtQmFzZS5VRXhwLnQpKVxuICAgICAgOiBzdGl0Y2hlZF9zdGF0aWNzID0+IHtcbiAgICBsZXQgbWsgPSAodGVybTogVGVybUJhc2UuVUV4cC50KTogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCA9PiB7XG4gICAgICAvL05PVEU6IHRoaXMgaXMgZXhwZW5zaXZlIGFuZCBfYWxtb3N0XyByZWR1bmRhbnQgdG8gdGhlIHN0YXRpY3MgaW4gRWRpdG9yXG4gICAgICBsZXQgaW5mb19tYXAgPSBTdGF0aWNzLm1rKHNldHRpbmdzLCBCdWlsdGlucy5jdHhfaW5pdCwgdGVybSk7XG4gICAgICB7dGVybSwgZXJyb3JfaWRzOiBTdGF0aWNzLk1hcC5lcnJvcl9pZHMoaW5mb19tYXApLCBpbmZvX21hcH07XG4gICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9IG1rKHQuaW5zdHJ1Y3Rvcik7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiBtayh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICB1c2VyX2ltcGw6IG1rKHQudXNlcl9pbXBsKSxcbiAgICAgIHVzZXJfdGVzdHM6IG1rKHQudXNlcl90ZXN0cyksXG4gICAgICBwcmVsdWRlOiBpbnN0cnVjdG9yLCAvLyB3b3JrcyBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAobWssIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgaGlkZGVuX3Rlc3RzOiBtayh0LmhpZGRlbl90ZXN0cyksXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX3N0YXRpYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9zdGF0aWMpO1xuXG4gIGxldCBwcmVsdWRlX2tleSA9IFwicHJlbHVkZVwiO1xuICBsZXQgdGVzdF92YWxpZGF0aW9uX2tleSA9IFwidGVzdF92YWxpZGF0aW9uXCI7XG4gIGxldCB1c2VyX2ltcGxfa2V5ID0gXCJ1c2VyX2ltcGxcIjtcbiAgbGV0IHVzZXJfdGVzdHNfa2V5ID0gXCJ1c2VyX3Rlc3RzXCI7XG4gIGxldCBpbnN0cnVjdG9yX2tleSA9IFwiaW5zdHJ1Y3RvclwiO1xuICBsZXQgaGlkZGVuX2J1Z3Nfa2V5ID0gbiA9PiBcImhpZGRlbl9idWdzX1wiICsrIHN0cmluZ19vZl9pbnQobik7XG4gIGxldCBoaWRkZW5fdGVzdHNfa2V5ID0gXCJoaWRkZW5fdGVzdHNcIjtcblxuICBsZXQga2V5X2Zvcl9zdGF0aWNzID0gKHN0YXRlOiBzdGF0ZSk6IHN0cmluZyA9PlxuICAgIHN3aXRjaCAoc3RhdGUucG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHByZWx1ZGVfa2V5XG4gICAgfCBDb3JyZWN0SW1wbCA9PiBpbnN0cnVjdG9yX2tleVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0ZXN0X3ZhbGlkYXRpb25fa2V5XG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHVzZXJfdGVzdHNfa2V5XG4gICAgfCBZb3VySW1wbCA9PiB1c2VyX2ltcGxfa2V5XG4gICAgfCBIaWRkZW5CdWdzKGlkeCkgPT4gaGlkZGVuX2J1Z3Nfa2V5KGlkeClcbiAgICB8IEhpZGRlblRlc3RzID0+IGhpZGRlbl90ZXN0c19rZXlcbiAgICB9O1xuXG4gIGxldCBzcGxpY2VkX2VsYWJzID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHN0YXRlOiBzdGF0ZSlcbiAgICAgIDogbGlzdCgoTW9kZWxSZXN1bHRzLmtleSwgREhFeHAudCkpID0+IHtcbiAgICBsZXQge1xuICAgICAgdGVzdF92YWxpZGF0aW9uLFxuICAgICAgdXNlcl9pbXBsLFxuICAgICAgdXNlcl90ZXN0cyxcbiAgICAgIHByZWx1ZGU6IF8sXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgfSA9XG4gICAgICBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgIGxldCBlbGFiID0gKHM6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpID0+XG4gICAgICBJbnRlcmZhY2UuZWxhYm9yYXRlKH5zZXR0aW5ncywgcy5pbmZvX21hcCwgcy50ZXJtKTtcbiAgICBbXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgZWxhYih0ZXN0X3ZhbGlkYXRpb24pKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBlbGFiKHVzZXJfaW1wbCkpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBlbGFiKHVzZXJfdGVzdHMpKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgZWxhYihpbnN0cnVjdG9yKSksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgZWxhYihoaWRkZW5fdGVzdHMpKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXBpKChuLCBoaWRkZW5fYnVnOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KSA9PlxuICAgICAgICAgICAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBlbGFiKGhpZGRlbl9idWcpKVxuICAgICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIER5bmFtaWNzSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50LFxuICAgICAgcmVzdWx0OiBNb2RlbFJlc3VsdC50LFxuICAgIH07XG4gICAgbGV0IGVtcHR5OiB0ID0ge3N0YXRpY3M6IEVkaXRvci5DYWNoZWRTdGF0aWNzLmVtcHR5LCByZXN1bHQ6IE5vRWxhYn07XG4gICAgbGV0IHN0YXRpY3Nfb25seSA9IChzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KTogdCA9PiB7XG4gICAgICBzdGF0aWNzLFxuICAgICAgcmVzdWx0OiBOb0VsYWIsXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzID1cbiAgICAgIChzdGF0ZTogc3RhdGUsIHM6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSk6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQgPT5cbiAgICBzd2l0Y2ggKHN0YXRlLnBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBzLnByZWx1ZGUuc3RhdGljc1xuICAgIHwgQ29ycmVjdEltcGwgPT4gcy5pbnN0cnVjdG9yLnN0YXRpY3NcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gcy50ZXN0X3ZhbGlkYXRpb24uc3RhdGljc1xuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBzLnVzZXJfdGVzdHMuc3RhdGljc1xuICAgIHwgWW91ckltcGwgPT4gcy51c2VyX2ltcGwuc3RhdGljc1xuICAgIHwgSGlkZGVuQnVncyhpZHgpID0+IExpc3QubnRoKHMuaGlkZGVuX2J1Z3MsIGlkeCkuc3RhdGljc1xuICAgIHwgSGlkZGVuVGVzdHMgPT4gcy5oaWRkZW5fdGVzdHMuc3RhdGljc1xuICAgIH07XG5cbiAgLyogR2l2ZW4gdGhlIGV2YWx1YXRpb24gcmVzdWx0cywgY29sbGVjdHMgdGhlXG4gICAgIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBwcm9kdWNpbmcgZHluYW1pY1xuICAgICBmZWVkYmFjayovXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IHJlc3VsdF9vZiA9IGtleSA9PlxuICAgICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gTW9kZWxSZXN1bHQuTm9FbGFiXG4gICAgICB8IFNvbWUocmVzdWx0cykgPT5cbiAgICAgICAgTW9kZWxSZXN1bHRzLmxvb2t1cChyZXN1bHRzLCBrZXkpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Nb2RlbFJlc3VsdC5Ob0VsYWIpXG4gICAgICB9O1xuXG4gICAgbGV0IHRlc3RfdmFsaWRhdGlvbiA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICBzdGF0aWNzOiB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKHRlc3RfdmFsaWRhdGlvbl9rZXkpLFxuICAgICAgfTtcblxuICAgIGxldCB1c2VyX2ltcGwgPVxuICAgICAgRHluYW1pY3NJdGVtLntzdGF0aWNzOiB1c2VyX2ltcGwsIHJlc3VsdDogcmVzdWx0X29mKHVzZXJfaW1wbF9rZXkpfTtcblxuICAgIGxldCB1c2VyX3Rlc3RzID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogdXNlcl90ZXN0cywgcmVzdWx0OiByZXN1bHRfb2YodXNlcl90ZXN0c19rZXkpfTtcbiAgICBsZXQgcHJlbHVkZSA9IER5bmFtaWNzSXRlbS57c3RhdGljczogcHJlbHVkZSwgcmVzdWx0OiBOb0VsYWJ9O1xuICAgIGxldCBpbnN0cnVjdG9yID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogaW5zdHJ1Y3RvciwgcmVzdWx0OiByZXN1bHRfb2YoaW5zdHJ1Y3Rvcl9rZXkpfTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAobiwgc3RhdGljczogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCkgPT5cbiAgICAgICAgICBEeW5hbWljc0l0ZW0ue3N0YXRpY3MsIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl9idWdzX2tleShuKSl9LFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0cyA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICBzdGF0aWNzOiBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl90ZXN0c19rZXkpLFxuICAgICAgfTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT5cbiAgICBpZiAoc2V0dGluZ3Muc3RhdGljcyAmJiBzZXR0aW5ncy5keW5hbWljcykge1xuICAgICAgc3RpdGNoX2R5bmFtaWMoc2V0dGluZ3MsIHN0YXRlLCByZXN1bHRzKTtcbiAgICB9IGVsc2UgaWYgKHNldHRpbmdzLnN0YXRpY3MpIHtcbiAgICAgIGxldCB0ID0gc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl9pbXBsKSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfdGVzdHMpLFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaW5zdHJ1Y3RvciksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5wcmVsdWRlKSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHksIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5oaWRkZW5fdGVzdHMpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgIExpc3QuaW5pdChMaXN0Lmxlbmd0aChzdGF0ZS5lZHMuaGlkZGVuX2J1Z3MpLCBfID0+XG4gICAgICAgICAgICBEeW5hbWljc0l0ZW0uZW1wdHlcbiAgICAgICAgICApLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHN0aXRjaF9keW5hbWljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX2R5bmFtaWMpO1xuXG4gIC8vIE1vZHVsZSBFeHBvcnRcblxuICBsZXQgZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBzZXJpYWxpemF0aW9uID0gWmlwcGVyLnNob3coemlwcGVyKTtcbiAgICAvLyBsZXQgc3RyaW5nX2xpdGVyYWwgPSBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChzZXJpYWxpemF0aW9uKSArKyBcIlxcXCJcIjtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgc2VyaWFsaXphdGlvbik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IGNvZGUgPSBQcmludGVyLnRvX3N0cmluZ19iYXNpYyh6aXBwZXIpO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChjb2RlKSArKyBcIlxcXCJcIik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBFeGVyY2lzZS50cmFuc2l0aW9uKFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AodHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiKVxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9ncmFkaW5nX21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IGhlYWRlciA9IG91dHB1dF9oZWFkZXJfZ3JhZGluZyhtb2R1bGVfbmFtZSk7XG4gICAgbGV0IHByZWZpeCA9IFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBoZWFkZXIgKysgcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGJsYW5rX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB+dGl0bGUsXG4gICAgICAgIH5tb2R1bGVfbmFtZSxcbiAgICAgICAgfnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgfnJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICB+cHJvdmlkZWRfdGVzdHMsXG4gICAgICAgIH5udW1fd3JvbmdfaW1wbHMsXG4gICAgICApID0+IHtcbiAgICBsZXQgcHJlbHVkZSA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0LmluaXQoXG4gICAgICAgIG51bV93cm9uZ19pbXBscyxcbiAgICAgICAgaSA9PiB7XG4gICAgICAgICAgbGV0IHppcHBlciA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgICAgICAge2ltcGw6IHppcHBlciwgaGludDogXCJUT0RPOiBoaW50IFwiICsrIHN0cmluZ19vZl9pbnQoaSl9O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICB7XG4gICAgICB0aXRsZSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBtb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogRXhlcmNpc2VFbnYuZGVmYXVsdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIHByb3ZpZGVkOiBwcm92aWRlZF90ZXN0cyxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGwsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICBoaW50czogW10sXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBbXSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIEZyb20gU3RvcmVcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZXhlcmNpc2VfZXhwb3J0ID0ge1xuICAgIGN1cl9leGVyY2lzZToga2V5LFxuICAgIGV4ZXJjaXNlX2RhdGE6IGxpc3QoKGtleSwgcGVyc2lzdGVudF9zdGF0ZSkpLFxuICB9O1xuXG4gIGxldCBzZXJpYWxpemVfZXhlcmNpc2UgPSAoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIHw+IHNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZVxuICAgIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlID0gKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgZGF0YVxuICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHBcbiAgICB8PiB1bnBlcnNpc3Rfc3RhdGUofnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gZXhlcmNpc2VfZXhwb3J0X29mX3NleHA7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFV0aWw7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZS5FeGVyY2lzZUVudikgPT4ge1xuICBvcGVuIEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJjZW50YWdlID0gZmxvYXQ7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludHMgPSBmbG9hdDtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHNjb3JlID0gKHBvaW50cywgcG9pbnRzKTtcblxuICBsZXQgc2NvcmVfb2ZfcGVyY2VudCA9IChwZXJjZW50LCBtYXhfcG9pbnRzKSA9PiB7XG4gICAgbGV0IG1heF9wb2ludHMgPSBmbG9hdF9vZl9pbnQobWF4X3BvaW50cyk7XG4gICAgKHBlcmNlbnQgKi4gbWF4X3BvaW50cywgbWF4X3BvaW50cyk7XG4gIH07XG5cbiAgbW9kdWxlIFRlc3RWYWxpZGF0aW9uUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuICAgICAgcmVxdWlyZWQ6IGludCxcbiAgICAgIHByb3ZpZGVkOiBpbnQsXG4gICAgfTtcblxuICAgIGxldCBtayA9IChlZHM6IGVkcywgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgICAgIHtcbiAgICAgICAgdGVzdF9yZXN1bHRzLFxuICAgICAgICByZXF1aXJlZDogZWRzLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgIHByb3ZpZGVkOiBlZHMueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgICB8IE5vbmUgPT4gMC4wXG4gICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PlxuICAgICAgICBsZXQgbnVtX3Rlc3RzID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy50b3RhbCk7XG4gICAgICAgIGxldCByZXF1aXJlZCA9IGZsb2F0X29mX2ludChyZXBvcnQucmVxdWlyZWQpO1xuICAgICAgICBsZXQgcHJvdmlkZWQgPSBmbG9hdF9vZl9pbnQocmVwb3J0LnByb3ZpZGVkKTtcbiAgICAgICAgbGV0IG51bV9wYXNzaW5nID0gZmxvYXRfb2ZfaW50KHRlc3RfcmVzdWx0cy5wYXNzaW5nKTtcblxuICAgICAgICByZXF1aXJlZCAtLiBwcm92aWRlZCA8PSAwLjAgfHwgbnVtX3Rlc3RzIDw9IDAuMFxuICAgICAgICAgID8gMC4wXG4gICAgICAgICAgOiBudW1fcGFzc2luZ1xuICAgICAgICAgICAgLy4gbnVtX3Rlc3RzXG4gICAgICAgICAgICAqLiAoXG4gICAgICAgICAgICAgIEZsb2F0Lm1heChcbiAgICAgICAgICAgICAgICAwLixcbiAgICAgICAgICAgICAgICBGbG9hdC5taW4obnVtX3Rlc3RzIC0uIHByb3ZpZGVkLCByZXF1aXJlZCAtLiBwcm92aWRlZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLy4gKHJlcXVpcmVkIC0uIHByb3ZpZGVkKVxuICAgICAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIE11dGF0aW9uVGVzdGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7cmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKX07XG5cbiAgICBsZXQgaGlkZGVuX2J1Z19zdGF0dXMgPVxuICAgICAgICAoXG4gICAgICAgICAgdGVzdF92YWxpZGF0aW9uX2RhdGE6IER5bmFtaWNzSXRlbS50LFxuICAgICAgICAgIGhpZGRlbl9idWdfZGF0YTogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgIClcbiAgICAgICAgOiBUZXN0U3RhdHVzLnQgPT4ge1xuICAgICAgc3dpdGNoIChcbiAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHRlc3RfdmFsaWRhdGlvbl9kYXRhLnJlc3VsdCksXG4gICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhoaWRkZW5fYnVnX2RhdGEucmVzdWx0KSxcbiAgICAgICkge1xuICAgICAgfCAoTm9uZSwgXylcbiAgICAgIHwgKF8sIE5vbmUpID0+IEluZGV0XG4gICAgICB8IChTb21lKHRlc3RfdmFsaWRhdGlvbl9kYXRhKSwgU29tZShoaWRkZW5fYnVnX2RhdGEpKSA9PlxuICAgICAgICBsZXQgdmFsaWRhdGlvbl90ZXN0X21hcCA9IHRlc3RfdmFsaWRhdGlvbl9kYXRhLnRlc3RfbWFwO1xuICAgICAgICBsZXQgaGlkZGVuX2J1Z190ZXN0X21hcCA9IGhpZGRlbl9idWdfZGF0YS50ZXN0X21hcDtcblxuICAgICAgICBsZXQgZm91bmQgPVxuICAgICAgICAgIGhpZGRlbl9idWdfdGVzdF9tYXBcbiAgICAgICAgICB8PiBMaXN0LmZpbmRfb3B0KCgoaWQsIGluc3RhbmNlX3JlcG9ydHMpKSA9PiB7XG4gICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdE1hcC5qb2ludF9zdGF0dXMoaW5zdGFuY2VfcmVwb3J0cyk7XG4gICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3NcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5JbmRldCA9PiBmYWxzZVxuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkZhaWwgPT5cbiAgICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRpb25fdGVzdF9yZXBvcnRzID1cbiAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX3Rlc3RfbWFwIHw+IFRlc3RNYXAubG9va3VwKGlkKTtcbiAgICAgICAgICAgICAgICAgc3dpdGNoICh2YWxpZGF0aW9uX3Rlc3RfcmVwb3J0cykge1xuICAgICAgICAgICAgICAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgfCBTb21lKHJlcG9ydHMpID0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3RNYXAuam9pbnRfc3RhdHVzKHJlcG9ydHMpO1xuICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLlBhc3MgPT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5GYWlsXG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkluZGV0ID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgfSk7XG4gICAgICAgIHN3aXRjaCAoZm91bmQpIHtcbiAgICAgICAgfCBOb25lID0+IEZhaWxcbiAgICAgICAgfCBTb21lKF8pID0+IFBhc3NcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTsgLy8gZm9yIGVhY2ggaGlkZGVuIGJ1Z1xuICAgIC8vICAgaW4gdGhlIHRlc3QgcmVzdWx0cyBkYXRhLCBmaW5kIGEgdGVzdCBJRCB0aGF0IHBhc3NlcyB0ZXN0IHZhbGlkYXRpb24gYnV0IGZhaWxzIGFnYWluc3RcblxuICAgIGxldCBtayA9XG4gICAgICAgIChcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU6IGxpc3Qod3JvbmdfaW1wbChFZGl0b3IudCkpLFxuICAgICAgICAgIH5oaWRkZW5fYnVnczogbGlzdChEeW5hbWljc0l0ZW0udCksXG4gICAgICAgIClcbiAgICAgICAgOiB0ID0+IHtcbiAgICAgIGxldCByZXN1bHRzID1cbiAgICAgICAgTGlzdC5tYXAoaGlkZGVuX2J1Z19zdGF0dXModGVzdF92YWxpZGF0aW9uKSwgaGlkZGVuX2J1Z3MpO1xuICAgICAgbGV0IGhpbnRzID1cbiAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgKHdyb25nX2ltcGw6IHdyb25nX2ltcGwoRWRpdG9yLnQpKSA9PiB3cm9uZ19pbXBsLmhpbnQsXG4gICAgICAgICAgaGlkZGVuX2J1Z3Nfc3RhdGUsXG4gICAgICAgICk7XG4gICAgICBsZXQgcmVzdWx0cyA9IExpc3QuY29tYmluZShyZXN1bHRzLCBoaW50cyk7XG4gICAgICB7cmVzdWx0czogcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgbGV0IHJlc3VsdHMgPSByZXBvcnQucmVzdWx0cztcbiAgICAgIGxldCBudW1fd3JvbmdfaW1wbHMgPSBMaXN0Lmxlbmd0aChyZXN1bHRzKTtcbiAgICAgIGxldCBudW1fcGFzc2VkID1cbiAgICAgICAgcmVzdWx0c1xuICAgICAgICB8PiBMaXN0LmZpbmRfYWxsKCgoc3RhdHVzLCBfKSkgPT4gc3RhdHVzID09IFRlc3RTdGF0dXMuUGFzcylcbiAgICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgICBzd2l0Y2ggKG51bV93cm9uZ19pbXBscykge1xuICAgICAgfCAwID0+IDEuMFxuICAgICAgfCBfID0+IGZsb2F0X29mX2ludChudW1fcGFzc2VkKSAvLiBmbG9hdF9vZl9pbnQobnVtX3dyb25nX2ltcGxzKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgLy8gVE9ETyBtb3ZlIHRvIHNlcGFyYXRlIG1vZHVsZVxuXG4gICAgbGV0IHN1bW1hcnlfc3RyID0gKH50b3RhbCwgfmZvdW5kKTogc3RyaW5nID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dG90YWwsXG4gICAgICAgIH5wPWZvdW5kLFxuICAgICAgICB+cT0wLFxuICAgICAgICB+bl9zdHI9XCJidWdcIixcbiAgICAgICAgfm5zX3N0cj1cImJ1Z3NcIixcbiAgICAgICAgfnBfc3RyPVwiZXhwb3NlZFwiLFxuICAgICAgICB+cV9zdHI9XCJcIixcbiAgICAgICAgfnJfc3RyPVwidW5yZXZlYWxlZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBTeW50YXhSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgaGludGVkX3Jlc3VsdHM6IGxpc3QoKGJvb2wsIGhpbnQpKSxcbiAgICAgIHBlcmNlbnRhZ2UsXG4gICAgfTtcblxuICAgIGxldCBtayA9ICh+eW91cl9pbXBsOiBFZGl0b3IudCwgfnRlc3RzOiBzeW50YXhfdGVzdHMpOiB0ID0+IHtcbiAgICAgIGxldCB1c2VyX2ltcGxfdGVybSA9XG4gICAgICAgIE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oeW91cl9pbXBsLnN0YXRlLnppcHBlcikgfD4gZnN0O1xuXG4gICAgICBsZXQgcHJlZGljYXRlcyA9XG4gICAgICAgIExpc3QubWFwKCgoXywgcCkpID0+IFN5bnRheFRlc3QucHJlZGljYXRlX2ZuKHApLCB0ZXN0cyk7XG4gICAgICBsZXQgaGludHMgPSBMaXN0Lm1hcCgoKGgsIF8pKSA9PiBoLCB0ZXN0cyk7XG4gICAgICBsZXQgc3ludGF4X3Jlc3VsdHMgPSBTeW50YXhUZXN0LmNoZWNrKHVzZXJfaW1wbF90ZXJtLCBwcmVkaWNhdGVzKTtcblxuICAgICAge1xuICAgICAgICBoaW50ZWRfcmVzdWx0czpcbiAgICAgICAgICBMaXN0Lm1hcDIoKHIsIGgpID0+IChyLCBoKSwgc3ludGF4X3Jlc3VsdHMucmVzdWx0cywgaGludHMpLFxuICAgICAgICBwZXJjZW50YWdlOiBzeW50YXhfcmVzdWx0cy5wZXJjZW50YWdlLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBJbXBsR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoVGVzdFN0YXR1cy50LCBzdHJpbmcpKSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH5oaW50czogbGlzdChzdHJpbmcpLCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpOiB0ID0+IHtcbiAgICAgIGxldCBoaW50ZWRfcmVzdWx0cyA9XG4gICAgICAgIHN3aXRjaCAodGVzdF9yZXN1bHRzKSB7XG4gICAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgICAgbGV0IHN0YXR1c2VzID0gdGVzdF9yZXN1bHRzLnN0YXR1c2VzO1xuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgc3RhdHVzZXMsXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJObyBoaW50IGF2YWlsYWJsZS5cIixcbiAgICAgICAgICApO1xuXG4gICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgIFV0aWwuTGlzdFV0aWwuemlwX2RlZmF1bHRzKFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBoaW50cyxcbiAgICAgICAgICAgIEhhejNsY29yZS5UZXN0U3RhdHVzLkluZGV0LFxuICAgICAgICAgICAgXCJFeGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yOiBIaW50IHdpdGhvdXQgYSB0ZXN0LlwiLFxuICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICAgIHtoaW50cywgdGVzdF9yZXN1bHRzLCBoaW50ZWRfcmVzdWx0c307XG4gICAgfTtcblxuICAgIGxldCB0b3RhbCA9IChyZXBvcnQ6IHQpID0+IExpc3QubGVuZ3RoKHJlcG9ydC5oaW50ZWRfcmVzdWx0cyk7XG4gICAgbGV0IG51bV9wYXNzZWQgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgICByZXBvcnQuaGludGVkX3Jlc3VsdHNcbiAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgfD4gTGlzdC5sZW5ndGg7XG4gICAgfTtcblxuICAgIGxldCBwZXJjZW50YWdlID0gKHJlcG9ydDogdCwgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN5bnRheF9yZXBvcnQucGVyY2VudGFnZVxuICAgICAgKi4gKGZsb2F0X29mX2ludChudW1fcGFzc2VkKHJlcG9ydCkpIC8uIGZsb2F0X29mX2ludCh0b3RhbChyZXBvcnQpKSk7XG4gICAgfTtcblxuICAgIGxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10ZXN0X3Jlc3VsdHMudG90YWwsXG4gICAgICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgICAgICB+cT10ZXN0X3Jlc3VsdHMudW5maW5pc2hlZCxcbiAgICAgICAgfm5fc3RyPVwidGVzdFwiLFxuICAgICAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICAgICAgfnBfc3RyPVwiZmFpbGluZ1wiLFxuICAgICAgICB+cV9zdHI9XCJpbmRldGVybWluYXRlXCIsXG4gICAgICAgIH5yX3N0cj1cInZhbGlkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEdyYWRpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDogVGVzdFZhbGlkYXRpb25SZXBvcnQudCxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OiBNdXRhdGlvblRlc3RpbmdSZXBvcnQudCxcbiAgICAgIHN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50LFxuICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydDogSW1wbEdyYWRpbmdSZXBvcnQudCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB+c3RpdGNoZWRfZHluYW1pY3M6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSkgPT4ge1xuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBlZHMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydDpcbiAgICAgICAgVGVzdFZhbGlkYXRpb25SZXBvcnQubWsoXG4gICAgICAgICAgZWRzLFxuICAgICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhzdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24ucmVzdWx0KSxcbiAgICAgICAgKSxcbiAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0OlxuICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQubWsoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbj1zdGl0Y2hlZF9keW5hbWljcy50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlPWVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M9c3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBzeW50YXhfcmVwb3J0OlxuICAgICAgICBTeW50YXhSZXBvcnQubWsofnlvdXJfaW1wbD1lZHMueW91cl9pbXBsLCB+dGVzdHM9ZWRzLnN5bnRheF90ZXN0cyksXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OlxuICAgICAgICBJbXBsR3JhZGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+aGludHM9ZWRzLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgICAgICB+dGVzdF9yZXN1bHRzPVxuICAgICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLmhpZGRlbl90ZXN0cy5yZXN1bHQpLFxuICAgICAgICApLFxuICAgIH07XG5cbiAgICBsZXQgb3ZlcmFsbF9zY29yZSA9XG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0LFxuICAgICAgICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQsXG4gICAgICAgICAgICBzeW50YXhfcmVwb3J0LFxuICAgICAgICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydCxcbiAgICAgICAgICAgIF8sXG4gICAgICAgICAgfTogdCxcbiAgICAgICAgKVxuICAgICAgICA6IHNjb3JlID0+IHtcbiAgICAgIGxldCAodHZfcG9pbnRzLCB0dl9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5wZXJjZW50YWdlKHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi50ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgICk7XG4gICAgICBsZXQgKG10X3BvaW50cywgbXRfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgTXV0YXRpb25UZXN0aW5nUmVwb3J0LnBlcmNlbnRhZ2UobXV0YXRpb25fdGVzdGluZ19yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi5tdXRhdGlvbl90ZXN0aW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IChpZ19wb2ludHMsIGlnX21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIEltcGxHcmFkaW5nUmVwb3J0LnBlcmNlbnRhZ2UoaW1wbF9ncmFkaW5nX3JlcG9ydCwgc3ludGF4X3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLmltcGxfZ3JhZGluZyxcbiAgICAgICAgKTtcbiAgICAgIGxldCB0b3RhbF9wb2ludHMgPSB0dl9wb2ludHMgKy4gbXRfcG9pbnRzICsuIGlnX3BvaW50cztcbiAgICAgIGxldCBtYXhfcG9pbnRzID0gdHZfbWF4ICsuIG10X21heCArLiBpZ19tYXg7XG4gICAgICAodG90YWxfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgICB9O1xuICB9O1xufTtcbiIsIm1vZHVsZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlID0gdW5pdDtcbiAgbGV0IGRlZmF1bHQgPSAoKTtcbiAgbGV0IG91dHB1dF9oZWFkZXIgPSBFeGVyY2lzZS5vdXRwdXRfaGVhZGVyX2dyYWRpbmc7XG59O1xuXG5tb2R1bGUgRXhlcmNpc2UgPSBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxubW9kdWxlIEdyYWRpbmcgPSBHcmFkaW5nLkYoRXhlcmNpc2VFbnYpO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMvMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgZGVidWcgPVxuICBsZXQgX0RFQlVHID1cbiAgICB0cnlcbiAgICAgIFNvbWUoU3lzLmdldGVudiBcIkRFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgYW5kIF9PTURfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiT01EX0RFQlVHXCIpXG4gICAgd2l0aCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggX0RFQlVHLCBfT01EX0RFQlVHIHdpdGhcbiAgfCBfLCBTb21lIFwiZmFsc2VcIiAtPlxuICAgICBmYWxzZVxuICB8IFNvbWUgXywgTm9uZSAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIERFQlVHIGlzIHNldCwgXFxcbiAgICAgICAgICAgICAgeW91IGNhbiBkZWFjdGl2YXRlIHRoZSBtb2RlIGJ5IHVuc2V0dGluZyBERUJVRyBcXFxuICAgICAgICAgICAgICBvciBieSBzZXR0aW5nIE9NRF9ERUJVRyB0byB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgZmFsc2VcbiAgfCBfLCBTb21lIF8gLT5cbiAgICAgZXByaW50ZiBcIm9tZDogZGVidWcgbW9kZSBhY3RpdmF0ZWQgYmVjYXVzZSBPTURfREVCVUcgaXMgc2V0XG4gICAgICAgICAgICAgIHRvIGEgdmFsdWUgdGhhdCBpc24ndCB0aGUgc3RyaW5nIFxcXCJmYWxzZVxcXCIuXFxuJSFcIjtcbiAgICAgdHJ1ZVxuXG5leGNlcHRpb24gRXJyb3Igb2Ygc3RyaW5nXG5cbmxldCB3YXJuID8od2U9ZmFsc2UpIG1zZyA9XG4gIGlmIHdlIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgbXNnKVxuICBlbHNlXG4gICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6ICVzXFxuJSFcIiBtc2dcblxuXG5sZXQgdHJhY2tmaXggPVxuICB0cnlcbiAgICBpZ25vcmUoU3lzLmdldGVudiBcIk9NRF9GSVhcIik7XG4gICAgZXByaW50ZiBcIm9tZDogdHJhY2tpbmcgbW9kZSBhY3RpdmF0ZWQ6IHRva2VuIGxpc3QgYXJlIHZlcnkgb2Z0ZW4gY2hlY2tlZCwgXFxcbiAgICAgICAgICAgICBpdCBtaWdodCB0YWtlIGEgKnZlcnkqIGxvbmcgdGltZSBpZiB5b3VyIGlucHV0IGlzIGxhcmdlLlxcbiUhXCI7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGZhbHNlXG5cbmxldCBfID0gaWYgZGVidWcgdGhlbiBQcmludGV4Yy5yZWNvcmRfYmFja3RyYWNlIHRydWVcblxubGV0IHJhaXNlID1cbiAgaWYgZGVidWcgdGhlblxuICAgIChmdW4gZSAtPlxuICAgICAgIGVwcmludGYgXCIoT01EKSBFeGNlcHRpb24gcmFpc2VkOiAlc1xcbiUhXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKTtcbiAgICAgICByYWlzZSBlKVxuICBlbHNlXG4gICAgcmFpc2VcblxubW9kdWxlIFN0cmluZ1NldCA6IHNpZ1xuICBpbmNsdWRlIFNldC5TIHdpdGggdHlwZSBlbHQgPSBzdHJpbmdcbiAgdmFsIG9mX2xpc3QgOiBlbHQgbGlzdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXQuTWFrZShTdHJpbmcpXG4gIGxldCBvZl9saXN0IGwgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHIgZSAtPiBhZGQgZSByKSBlbXB0eSBsXG5lbmRcblxuXG50eXBlICdhIHNwbGl0ID0gJ2EgbGlzdCAtPiAnYSBzcGxpdF9hY3Rpb25cbmFuZCAnYSBzcGxpdF9hY3Rpb24gPVxuICB8IENvbnRpbnVlXG4gIHwgQ29udGludWVfd2l0aCBvZiAnYSBsaXN0ICogJ2EgbGlzdFxuICB8IFNwbGl0IG9mICdhIGxpc3QgKiAnYSBsaXN0XG5cblxubGV0IGZzcGxpdF9yZXYgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH4oZjonYSBzcGxpdCkgbFxuICAgIDogKCdhIGxpc3QgKiAnYSBsaXN0KSBvcHRpb24gPVxuICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGYgW10gd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICBlbmRcbiAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgZXhjbCBsIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2UgbWF0Y2ggZiBsIHdpdGhcbiAgICAgICAgICB8IFNwbGl0KGxlZnQsIHJpZ2h0KSAtPiAgICAgIFNvbWUobGVmdEBhY2N1LCByaWdodClcbiAgICAgICAgICB8IENvbnRpbnVlX3dpdGgobGVmdCwgdGwpIC0+IGxvb3AgKGxlZnRAYWNjdSkgdGxcbiAgICAgICAgICB8IENvbnRpbnVlIC0+ICAgICAgICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIHRsXG4gIGluIGxvb3AgW10gbFxuXG5sZXQgZnNwbGl0ID8oZXhjbD0oZnVuIF8gLT4gZmFsc2UpKSB+ZiBsID1cbiAgbWF0Y2ggZnNwbGl0X3JldiB+ZXhjbDpleGNsIH5mOmYgbCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUocmV2LCBsKSAtPiBTb21lKExpc3QucmV2IHJldiwgbClcblxubGV0IGlkX29mX3N0cmluZyBpZHMgcyA9XG4gIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBvdXQgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgKCogUHV0IFtzXSBpbnRvIFtiXSwgcmVwbGFjaW5nIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIGRhc2hlcy4gKilcbiAgbGV0IHJlYyBsb29wIHN0YXJ0ZWQgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG91dCBjIDtcbiAgICAgICAgbG9vcCB0cnVlIChpICsgMSlcbiAgICAgICgqIERvbid0IHdhbnQgdG8gc3RhcnQgd2l0aCBkYXNoZXMuICopXG4gICAgICB8IF8gd2hlbiBub3Qgc3RhcnRlZCAtPlxuICAgICAgICBsb29wIGZhbHNlIChpICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0ICctJyA7XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICBpblxuICBsb29wIGZhbHNlIDAgO1xuICBsZXQgcycgPSBCdWZmZXIuY29udGVudHMgb3V0IGluXG4gIGlmIHMnID0gXCJcIiB0aGVuIFwiXCJcbiAgZWxzZVxuICAgICgqIEZpbmQgb3V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gW3MnXSB0aGF0IGlzbid0IGEgZGFzaC4gKilcbiAgICBsZXQgbGFzdF90cmFpbGluZyA9IFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpIDwgMCB8fCBzJy5baV0gPD4gJy0nIHRoZW4gaVxuICAgICAgICBlbHNlIGxvb3AgKGkgLSAxKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5sZW5ndGggcycgLSAxKVxuICAgIGluXG4gICAgKCogVHJpbSB0cmFpbGluZyBkYXNoZXMuICopXG4gICAgaWRzI21hbmdsZSBAQCBTdHJpbmcuc3ViIHMnIDAgKGxhc3RfdHJhaWxpbmcgKyAxKVxuXG4oKiBvbmx5IGNvbnZlcnQgd2hlbiBcIm5lY2Vzc2FyeVwiICopXG5sZXQgaHRtbGVudGl0aWVzID8obWQ9ZmFsc2UpIHMgPVxuICBsZXQgbW9kdWxlIEJyZWFrID0gc3RydWN0IGV4Y2VwdGlvbiBCcmVhayBlbmQgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICgpXG4gICAgZWxzZVxuICAgICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAoICcwJyAuLiAnOScgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyApIGFzIGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgICB8ICdcIicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZxdW90O1wiXG4gICAgICAgIHwgJ1xcJycgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiYjMzk7XCJcbiAgICAgICAgfCAnJicgLT5cbiAgICAgICAgICAgIGlmIG1kIHRoZW5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG1hdGNoIHMuW2krMV0gd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnIycgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmZiBqID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBzLltqXSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiBmZiAoc3VjYyBqKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJzsnIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGZmIChpKzIpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJlwiXG4gICAgICAgICAgICAgICAgd2l0aCBfIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICAgICAgICB8ICc8JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmx0O1wiXG4gICAgICAgIHwgJz4nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImZ3Q7XCJcbiAgICAgICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIGluIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBtaW5pbWFsaXplX2JsYW5rcyBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGwgaW5cbiAgbGV0IHJlYyBsb29wIGYgaSA9XG4gICAgaWYgaSA9IGwgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgLT5cbiAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBmIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgIGxvb3AgZmFsc2UgKHN1Y2MgaSlcbiAgaW4gbG9vcCBmYWxzZSAwXG5cbmxldCByZWMgZWF0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgZTo6dGwgYXMgbCAtPiBpZiBmIGUgdGhlbiBlYXQgZiB0bCBlbHNlIGxcblxuXG5sZXQgcmVjIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzIChodG1sOnN0cmluZykgPVxuICBsZXQgcmVjIGN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyBpIChqLWkpLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcyA9IFxuICAgIGlmIHMgPSBcIlwiIHRoZW5cbiAgICAgIHMgXG4gICAgZWxzZSBpZiBzLlswXSA8PiAnICcgdGhlblxuICAgICAgc1xuICAgIGVsc2VcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgU3RyaW5nLnN1YiBzIGkgKFN0cmluZy5sZW5ndGggcyAtIGkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnICcgLT4gbG9vcCAoaSsxKVxuICAgICAgICAgIHwgXyAtPiBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgIGluIGxvb3AgMVxuICBpblxuICBsZXQgcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgcyA9XG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuW1N0cmluZy5sZW5ndGggcyAtIDFdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIC0+IGxvb3AgKGktMSlcbiAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyAwIChpKzEpXG4gICAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgcmVjIGxvb3AgcyByZXMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICByZXNcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICB0cnlcbiAgICAgICAgICBTb21lICh0YWtlX2F0dHJpYnV0ZSBzIGkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgU29tZSAoKChfLF8pIGFzIGEpLCBuZXdfcykgLT5cbiAgICAgICAgbG9vcCBuZXdfcyAoYTo6cmVzKSAwXG4gICAgICB8IE5vbmUgLT4gcmVzXG4gIGFuZCB0YWtlX2F0dHJpYnV0ZSBzIGkgPVxuICAgICAgbGV0IG5hbWUsIGFmdGVyX2VxID0gY3V0X29uX2NoYXJfZnJvbSBzIGkgJz0nIGluXG4gICAgICBsZXQgbmFtZSA9IHJlbW92ZV9zdWZmaXhfc3BhY2VzIG5hbWUgaW5cbiAgICAgIGxldCBhZnRlcl9lcSA9IHJlbW92ZV9wcmVmaXhfc3BhY2VzIGFmdGVyX2VxIGluXG4gICAgICBsZXQgdmFsdWUsIHJlc3QgPSBjdXRfb25fY2hhcl9mcm9tIGFmdGVyX2VxIDEgYWZ0ZXJfZXEuWzBdIGluXG4gICAgICAobmFtZSx2YWx1ZSksIHJlbW92ZV9wcmVmaXhfc3BhY2VzIHJlc3RcbiAgaW5cbiAgaWYgKCogSGFzIGl0IGF0IGxlYXN0IG9uZSBhdHRyaWJ1dGU/ICopXG4gICAgdHJ5IFN0cmluZy5pbmRleCBodG1sICc+JyA8IFN0cmluZy5pbmRleCBodG1sICcgJ1xuICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWVcbiAgdGhlblxuICAgIFtdXG4gIGVsc2VcbiAgbWF0Y2ggaHRtbC5bMV0gd2l0aFxuICB8ICc8JyB8ICcgJyAtPlxuICAgIGV4dHJhY3RfaHRtbF9hdHRyaWJ1dGVzXG4gICAgICAocmVtb3ZlX3ByZWZpeF9zcGFjZXMgKFN0cmluZy5zdWIgaHRtbCAxIChTdHJpbmcubGVuZ3RoIGh0bWwgLSAxKSkpXG4gIHwgXyAtPlxuICAgIHRyeVxuICAgICAgbGV0IGh0bWwgPSBzbmQgKGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICcgJykgaW5cbiAgICAgIGxvb3AgKFN0cmluZy5zdWIgaHRtbCAwIChTdHJpbmcuaW5kZXggaHRtbCAnPicpKSBbXSAwXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gW11cblxubGV0IHJlYyBleHRyYWN0X2lubmVyX2h0bWwgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZWMgcmN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5yaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgMCBqLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgXywgcCA9IGN1dF9vbl9jaGFyX2Zyb20gaHRtbCAwICc+JyBpblxuICBsZXQgciwgXyA9IHJjdXRfb25fY2hhcl9mcm9tIHAgKFN0cmluZy5sZW5ndGggcCAtIDEpICc8JyBpblxuICByXG5cblxubGV0IGh0bWxfdm9pZF9lbGVtZW50cyA9IFN0cmluZ1NldC5vZl9saXN0IFtcbiAgXCJpbWdcIjtcbiAgXCJpbnB1dFwiO1xuICBcImxpbmtcIjtcbiAgXCJtZXRhXCI7XG4gIFwiYnJcIjtcbiAgXCJoclwiO1xuICBcInNvdXJjZVwiO1xuICBcIndiclwiO1xuICBcInBhcmFtXCI7XG4gIFwiZW1iZWRcIjtcbiAgXCJiYXNlXCI7XG4gIFwiYXJlYVwiO1xuICBcImNvbFwiO1xuICBcInRyYWNrXCI7XG4gIFwia2V5Z2VuXCI7XG5dXG5cbmxldCAoIEAgKSBsMSBsMiA9XG4gIExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgbDEpIGwyXG4iLCJvcGVuIE9tZF91dGlsc1xub3BlbiBQcmludGZcblxuKCoqIHJlZmVyZW5jZXMsIGluc3RhbmNlcyBjcmVhdGVkIGluIFtPbWRfcGFyc2VyLm1haW5fcGFyc2VdIGFuZFxuICAgIGFjY2Vzc2VkIGluIHRoZSBbT21kX2JhY2tlbmRdIG1vZHVsZS4gKilcbm1vZHVsZSBSID0gTWFwLk1ha2UoU3RyaW5nKVxuY2xhc3MgcmVmX2NvbnRhaW5lciA6IG9iamVjdFxuICAgIHZhbCBtdXRhYmxlIGMgOiAoc3RyaW5nICogc3RyaW5nKSBSLnRcbiAgICBtZXRob2QgYWRkX3JlZiA6IFIua2V5IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gdW5pdFxuICAgIG1ldGhvZCBnZXRfcmVmIDogUi5rZXkgLT4gKHN0cmluZyAqIHN0cmluZykgb3B0aW9uXG4gICAgbWV0aG9kIGdldF9hbGwgOiAoc3RyaW5nICogKHN0cmluZyAqIHN0cmluZykpIGxpc3RcbiAgZW5kID0gb2JqZWN0XG4gIHZhbCBtdXRhYmxlIGMgPSBSLmVtcHR5XG4gIHZhbCBtdXRhYmxlIGMyID0gUi5lbXB0eVxuXG4gIG1ldGhvZCBnZXRfYWxsID0gUi5iaW5kaW5ncyBjXG5cbiAgbWV0aG9kIGFkZF9yZWYgbmFtZSB0aXRsZSB1cmwgPVxuICAgIGMgPC0gUi5hZGQgbmFtZSAodXJsLCB0aXRsZSkgYztcbiAgICBsZXQgbG4gPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIG5hbWUgaW5cbiAgICBpZiBsbiA8PiBuYW1lIHRoZW4gYzIgPC0gUi5hZGQgbG4gKHVybCwgdGl0bGUpIGMyXG5cbiAgbWV0aG9kIGdldF9yZWYgbmFtZSA9XG4gICAgdHJ5XG4gICAgICBsZXQgKHVybCwgdGl0bGUpIGFzIHIgPVxuICAgICAgICB0cnkgUi5maW5kIG5hbWUgY1xuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgICAgICAgIHRyeSBSLmZpbmQgbG4gY1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBSLmZpbmQgbG4gYzJcbiAgICAgIGluIFNvbWUgclxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBOb25lXG5lbmRcblxudHlwZSBlbGVtZW50ID1cbiAgfCBIMSBvZiB0XG4gIHwgSDIgb2YgdFxuICB8IEgzIG9mIHRcbiAgfCBINCBvZiB0XG4gIHwgSDUgb2YgdFxuICB8IEg2IG9mIHRcbiAgfCBQYXJhZ3JhcGggb2YgdFxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRW1waCBvZiB0XG4gIHwgQm9sZCBvZiB0XG4gIHwgVWwgb2YgdCBsaXN0XG4gIHwgT2wgb2YgdCBsaXN0XG4gIHwgVWxwIG9mIHQgbGlzdFxuICB8IE9scCBvZiB0IGxpc3RcbiAgfCBDb2RlIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBDb2RlX2Jsb2NrIG9mIG5hbWUgKiBzdHJpbmdcbiAgfCBCclxuICB8IEhyXG4gIHwgTkxcbiAgfCBVcmwgb2YgaHJlZiAqIHQgKiB0aXRsZVxuICB8IFJlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIHN0cmluZyAqIGZhbGxiYWNrXG4gIHwgSW1nX3JlZiBvZiByZWZfY29udGFpbmVyICogbmFtZSAqIGFsdCAqIGZhbGxiYWNrXG4gIHwgSHRtbCBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9ibG9jayBvZiBuYW1lICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiB0XG4gIHwgSHRtbF9jb21tZW50IG9mIHN0cmluZ1xuICB8IFJhdyBvZiBzdHJpbmdcbiAgfCBSYXdfYmxvY2sgb2Ygc3RyaW5nXG4gIHwgQmxvY2txdW90ZSBvZiB0XG4gIHwgSW1nIG9mIGFsdCAqIHNyYyAqIHRpdGxlXG4gIHwgWCBvZlxuICAgICAgPCBuYW1lIDogc3RyaW5nO1xuICAgICAgICB0b19odG1sIDogP2luZGVudDppbnQgLT4gKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3NleHByIDogKHQgLT4gc3RyaW5nKSAtPiB0IC0+IHN0cmluZyBvcHRpb247XG4gICAgICAgIHRvX3QgOiB0IC0+IHQgb3B0aW9uID5cbmFuZCBmYWxsYmFjayA9IDwgdG9fc3RyaW5nIDogc3RyaW5nIDsgdG9fdCA6IHQgPlxuYW5kIG5hbWUgPSBzdHJpbmdcbmFuZCBhbHQgPSBzdHJpbmdcbmFuZCBzcmMgPSBzdHJpbmdcbmFuZCBocmVmID0gc3RyaW5nXG5hbmQgdGl0bGUgPSBzdHJpbmdcbmFuZCB0ID0gZWxlbWVudCBsaXN0XG5cblxubGV0IHJlYyBsb29zZV9jb21wYXJlIHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICB8IEgxIGUxOjp0bDEsIEgxIGUyOjp0bDJcbiAgfCBIMiBlMTo6dGwxLCBIMiBlMjo6dGwyXG4gIHwgSDMgZTE6OnRsMSwgSDMgZTI6OnRsMlxuICB8IEg0IGUxOjp0bDEsIEg0IGUyOjp0bDJcbiAgfCBINSBlMTo6dGwxLCBINSBlMjo6dGwyXG4gIHwgSDYgZTE6OnRsMSwgSDYgZTI6OnRsMlxuICB8IEVtcGggZTE6OnRsMSwgRW1waCBlMjo6dGwyXG4gIHwgQm9sZCBlMTo6dGwxLCBCb2xkIGUyOjp0bDJcbiAgfCBCbG9ja3F1b3RlIGUxOjp0bDEsIEJsb2NrcXVvdGUgZTI6OnRsMlxuICB8IFBhcmFncmFwaCBlMTo6dGwxLCBQYXJhZ3JhcGggZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgVWwgZTE6OnRsMSwgVWwgZTI6OnRsMlxuICB8IE9sIGUxOjp0bDEsIE9sIGUyOjp0bDJcbiAgfCBVbHAgZTE6OnRsMSwgVWxwIGUyOjp0bDJcbiAgfCBPbHAgZTE6OnRsMSwgT2xwIGUyOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZV9saXN0cyBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IChDb2RlIF8gYXMgZTEpOjp0bDEsIChDb2RlIF8gYXMgZTIpOjp0bDJcbiAgfCAoQnIgYXMgZTEpOjp0bDEsIChCciBhcyBlMik6OnRsMlxuICB8IChIciBhcyBlMSk6OnRsMSwgKEhyIGFzIGUyKTo6dGwyXG4gIHwgKE5MIGFzIGUxKTo6dGwxLCAoTkwgYXMgZTIpOjp0bDJcbiAgfCAoSHRtbCBfIGFzIGUxKTo6dGwxLCAoSHRtbCBfIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWxfYmxvY2sgXyBhcyBlMSk6OnRsMSwgKEh0bWxfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChSYXcgXyBhcyBlMSk6OnRsMSwgKFJhdyBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhd19ibG9jayBfIGFzIGUxKTo6dGwxLCAoUmF3X2Jsb2NrIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9jb21tZW50IF8gYXMgZTEpOjp0bDEsIChIdG1sX2NvbW1lbnQgXyBhcyBlMik6OnRsMlxuICB8IChJbWcgXyBhcyBlMSk6OnRsMSwgKEltZyBfIGFzIGUyKTo6dGwyXG4gIHwgKFRleHQgXyBhcyBlMSk6OnRsMSwgKFRleHQgXyBhcyBlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgQ29kZV9ibG9jayhsMSxjMSk6OnRsMSwgQ29kZV9ibG9jayhsMixjMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGwxIGwyLCBTdHJpbmcubGVuZ3RoIGMxIC0gU3RyaW5nLmxlbmd0aCBjMiB3aXRoXG4gICAgICAgICB8IDAsIDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSBjMSBjMiB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgMCwgMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIChjMl5cIlxcblwiKSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAtMSAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIChjMV5cIlxcblwiKSBjMiB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpLCBfIC0+IGlcbiAgICAgIClcblxuICB8IFVybCAoaHJlZjEsIHQxLCB0aXRsZTEpOjp0bDEsIFVybCAoaHJlZjIsIHQyLCB0aXRsZTIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBocmVmMSBocmVmMiB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGxvb3NlX2NvbXBhcmUgdDEgdDIgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSB0aXRsZTEgdGl0bGUyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgUmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIFJlZiAocmVmX2NvbnRhaW5lcjIsIG5hbWUyLCB4MiwgZmFsbGJhY2syKTo6dGwyXG4gIHwgSW1nX3JlZiAocmVmX2NvbnRhaW5lcjEsIG5hbWUxLCB4MSwgZmFsbGJhY2sxKTo6dGwxLFxuICAgICAgICBJbWdfcmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIChuYW1lMSwgeDEpIChuYW1lMiwgeDIpIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIGxldCBjZmYgPVxuICAgICAgICAgICAgICAgaWYgZmFsbGJhY2sxI3RvX3N0cmluZyA9IGZhbGxiYWNrMiN0b19zdHJpbmcgdGhlblxuICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvb3NlX2NvbXBhcmUgKGZhbGxiYWNrMSN0b190KSAoZmFsbGJhY2syI3RvX3QpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGlmIGNmZiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgIGNvbXBhcmUgKHJlZl9jb250YWluZXIxI2dldF9hbGwpIChyZWZfY29udGFpbmVyMiNnZXRfYWxsKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGNmZlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBYIGUxOjp0bDEsIFggZTI6OnRsMiAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKGUxI25hbWUpIChlMiNuYW1lKSB3aXRoXG4gICAgICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmUgKGUxI3RvX3QpIChlMiN0b190KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG4gIHwgWCBfOjpfLCBfIC0+IDFcbiAgfCBfLCBYIF86Ol8gLT4gLTFcbiAgfCBfIC0+IGNvbXBhcmUgdDEgdDJcblxuYW5kIGxvb3NlX2NvbXBhcmVfbGlzdHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT5cbiAgICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZV9saXN0cyB0bDEgdGwyXG4gICAgICAgICAgIHwgaSAtPiBpKVxuICAgIHwgXywgW10gLT4gMVxuICAgIHwgXyAtPiAtMVxuXG5cbnR5cGUgdG9rID0gKCogQ3MobikgbWVhbnMgKG4rMikgdGltZXMgQyAqKVxufCBBbXBlcnNhbmRcbnwgQW1wZXJzYW5kcyBvZiBpbnRcbnwgQXRcbnwgQXRzIG9mIGludFxufCBCYWNrcXVvdGVcbnwgQmFja3F1b3RlcyBvZiBpbnRcbnwgQmFja3NsYXNoXG58IEJhY2tzbGFzaHMgb2YgaW50XG58IEJhclxufCBCYXJzIG9mIGludFxufCBDYXJldFxufCBDYXJldHMgb2YgaW50XG58IENicmFjZVxufCBDYnJhY2VzIG9mIGludFxufCBDb2xvblxufCBDb2xvbnMgb2YgaW50XG58IENvbW1hXG58IENvbW1hcyBvZiBpbnRcbnwgQ3BhcmVudGhlc2lzXG58IENwYXJlbnRoZXNpc3Mgb2YgaW50XG58IENicmFja2V0XG58IENicmFja2V0cyBvZiBpbnRcbnwgRG9sbGFyXG58IERvbGxhcnMgb2YgaW50XG58IERvdFxufCBEb3RzIG9mIGludFxufCBEb3VibGVxdW90ZVxufCBEb3VibGVxdW90ZXMgb2YgaW50XG58IEV4Y2xhbWF0aW9uXG58IEV4Y2xhbWF0aW9ucyBvZiBpbnRcbnwgRXF1YWxcbnwgRXF1YWxzIG9mIGludFxufCBHcmVhdGVydGhhblxufCBHcmVhdGVydGhhbnMgb2YgaW50XG58IEhhc2hcbnwgSGFzaHMgb2YgaW50XG58IExlc3N0aGFuXG58IExlc3N0aGFucyBvZiBpbnRcbnwgTWludXNcbnwgTWludXNzIG9mIGludFxufCBOZXdsaW5lXG58IE5ld2xpbmVzIG9mIGludFxufCBOdW1iZXIgb2Ygc3RyaW5nXG58IE9icmFjZVxufCBPYnJhY2VzIG9mIGludFxufCBPcGFyZW50aGVzaXNcbnwgT3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgT2JyYWNrZXRcbnwgT2JyYWNrZXRzIG9mIGludFxufCBQZXJjZW50XG58IFBlcmNlbnRzIG9mIGludFxufCBQbHVzXG58IFBsdXNzIG9mIGludFxufCBRdWVzdGlvblxufCBRdWVzdGlvbnMgb2YgaW50XG58IFF1b3RlXG58IFF1b3RlcyBvZiBpbnRcbnwgU2VtaWNvbG9uXG58IFNlbWljb2xvbnMgb2YgaW50XG58IFNsYXNoXG58IFNsYXNocyBvZiBpbnRcbnwgU3BhY2VcbnwgU3BhY2VzIG9mIGludFxufCBTdGFyXG58IFN0YXJzIG9mIGludFxufCBUYWJcbnwgVGFicyBvZiBpbnRcbnwgVGlsZGVcbnwgVGlsZGVzIG9mIGludFxufCBVbmRlcnNjb3JlXG58IFVuZGVyc2NvcmVzIG9mIGludFxufCBXb3JkIG9mIHN0cmluZ1xufCBUYWcgb2YgbmFtZSAqIGV4dGVuc2lvblxuXG5hbmQgZXh0ZW5zaW9uID0gPFxuICBwYXJzZXJfZXh0ZW5zaW9uIDpcbiAgICB0IC0+IHRvayBsaXN0IC0+IHRvayBsaXN0IC0+ICgodCAqIHRvayBsaXN0ICogdG9rIGxpc3QpIG9wdGlvbik7XG4gIHRvX3N0cmluZyA6IHN0cmluZ1xuPlxuXG50eXBlIGV4dGVuc2lvbnMgPSBleHRlbnNpb24gbGlzdFxuXG5sZXQgZW1wdHlfZXh0ZW5zaW9uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gTm9uZVxuICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuZW5kXG5cbmxldCByZWMgbm9ybWFsaXNlX21kIGwgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgZXByaW50ZiBcIihPTUQpIG5vcm1hbGlzZV9tZFxcbiUhXCI7XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO11cbiAgICB8IFtOTDtOTF1cbiAgICB8IFtOTF0gLT4gW11cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBOTDo6Tkw6Ok5MOjp0bCAtPiBsb29wIChOTDo6Tkw6OnRsKVxuICAgIHwgVGV4dCB0MTo6VGV4dCB0Mjo6dGwgLT4gbG9vcCAoVGV4dCh0MV50Mik6OnRsKVxuICAgIHwgTkw6OigoKFBhcmFncmFwaCBffEgxIF98SDIgX3xIMyBffEg0IF98SDUgX3xINiBfXG4gICAgICAgICAgICB8Q29kZV9ibG9jayBffE9sIF98VWwgX3xPbHAgX3xVbHAgXyk6Ol8pIGFzIHRsKSAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGhbVGV4dCBcIiBcIl06OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGgocCk6OnRsIC0+IFBhcmFncmFwaChsb29wIHApOjpsb29wIHRsXG4gICAgfCBIMSB2Ojp0bCAtPiBIMShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMiB2Ojp0bCAtPiBIMihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBIMyB2Ojp0bCAtPiBIMyhsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINCB2Ojp0bCAtPiBINChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINSB2Ojp0bCAtPiBINShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBINiB2Ojp0bCAtPiBINihsb29wIHYpOjpsb29wIHRsXG4gICAgfCBFbXBoIHY6OnRsIC0+IEVtcGgobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgQm9sZCB2Ojp0bCAtPiBCb2xkKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVsIHY6OnRsIC0+IFVsKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IE9sIHY6OnRsIC0+IE9sKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVscCB2Ojp0bCAtPiBVbHAoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2xwIHY6OnRsIC0+IE9scChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHY6OnRsIC0+IEJsb2NrcXVvdGUobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVXJsKGhyZWYsdix0aXRsZSk6OnRsIC0+IFVybChocmVmLChsb29wIHYpLHRpdGxlKTo6bG9vcCB0bFxuICAgIHwgVGV4dCBfXG4gICAgfCBDb2RlIF9cbiAgICB8IENvZGVfYmxvY2sgX1xuICAgIHwgQnJcbiAgICB8IEhyXG4gICAgfCBOTFxuICAgIHwgUmVmIF9cbiAgICB8IEltZ19yZWYgX1xuICAgIHwgSHRtbCBfXG4gICAgfCBIdG1sX2Jsb2NrIF9cbiAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgfCBSYXcgX1xuICAgIHwgUmF3X2Jsb2NrIF9cbiAgICB8IEltZyBfXG4gICAgfCBYIF8gYXMgdjo6dGwgLT4gdjo6bG9vcCB0bFxuICBpblxuICBsZXQgYSA9IGxvb3AgbCBpblxuICBsZXQgYiA9IGxvb3AgYSBpblxuICBpZiBhID0gYiB0aGVuXG4gICAgYVxuICBlbHNlXG4gICAgbm9ybWFsaXNlX21kIGJcblxuXG5cbmxldCBkdW1teV9YID1cbiAgWCAob2JqZWN0XG4gICAgbWV0aG9kIG5hbWUgPSBcImR1bW15XCJcbiAgICBtZXRob2QgdG9faHRtbCA/KGluZGVudD0wKSBfIF8gPSBOb25lXG4gICAgbWV0aG9kIHRvX3NleHByIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fdCBfID0gTm9uZVxuICBlbmQpXG5cblxubGV0IHJlYyB2aXNpdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFBhcmFncmFwaCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBQYXJhZ3JhcGgodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgxIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDIgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgyKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMyB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMyh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDQgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg0KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINSB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDUodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg2IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINih2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgRW1waCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gRW1waCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQm9sZCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQm9sZCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWwgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWwoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgT2wgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2woTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVWxwIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVscChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gT2xwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJsb2NrcXVvdGUgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQmxvY2txdW90ZSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVXJsKGhyZWYsdix0aXRsZSkgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVybChocmVmLHZpc2l0IGYgdix0aXRsZSk6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBUZXh0IHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBDb2RlX2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZ19yZWYgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWwgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEh0bWxfY29tbWVudCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmF3IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXdfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEltZyAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFggIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gQnI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIciBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSHI6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBOTCBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gTkw6OnZpc2l0IGYgdGxcbiAgICBlbmRcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29kZV9zdHlsaXN0ID0gbGFuZzpzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5cbmxldCBkZWZhdWx0X2xhbmd1YWdlID0gcmVmIFwiXCJcblxuXG5cbmxldCB0ZXh0X29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgWCBfIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgICBsb29wIHE7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBuYW1lKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB0O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbCBsIHwgT2wgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gaXRlbSAtPiBsb29wIGl0ZW07IEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nKSBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCAoVWxwIGwgfCBPbHAgbCkgOjogdGwgLT5cbiAgICAgICAgTGlzdC5pdGVyIGxvb3AgbDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bFxuICAgIHwgSDIgbWQgOjogdGxcbiAgICB8IEgzIG1kIDo6IHRsXG4gICAgfCBINCBtZCA6OiB0bFxuICAgIHwgSDUgbWQgOjogdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIG1kO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBkZWZhdWx0X2NvZGVfc3R5bGlzdCB+bGFuZyBjb2RlID0gY29kZVxuXG5sZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgbGV0IHJlYyBsb29wIGIgciA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgbG9vcCB0cnVlIHIgdGxcbiAgICB8IGU6OnRsIC0+XG4gICAgICBsb29wIGIgKGU6OnIpIHRsXG4gIGluXG4gIGxvb3AgZmFsc2UgW10gbFxuXG5sZXQgcmVtb3ZlX2xpbmtzIDogdCAtPiB0ID1cbiAgT21kX3JlcHJlc2VudGF0aW9uLnZpc2l0XG4gICAgKGZ1biBlIC0+XG4gICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCBVcmwoXywgdCwgXykgLT4gU29tZSB0XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIClcblxubGV0IHJlYyBodG1sX2FuZF9oZWFkZXJzX29mX21kXG4gICAgPyhyZW1vdmVfaGVhZGVyX2xpbmtzPWZhbHNlKVxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzOihjb2RlX3N0eWxlPWRlZmF1bHRfY29kZV9zdHlsaXN0KVxuICAgIG1kXG4gID1cbiAgbGV0IGlkcyA9IG9iamVjdCh0aGlzKVxuICAgIHZhbCBtdXRhYmxlIGlkcyA9IFN0cmluZ1NldC5hZGQgXCJcIiBTdHJpbmdTZXQuZW1wdHlcbiAgICBtZXRob2QgbWFuZ2xlIGlkID1cbiAgICAgIGxldCByZWMgbSBpID1cbiAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZCBpZHMgdGhlblxuICAgICAgICAgIGxldCBpZHggPSBpZiBpID4gMCB0aGVuIGlkXlwiX1wiXnN0cmluZ19vZl9pbnQgaSBlbHNlIGlkIGluXG4gICAgICAgICAgaWYgU3RyaW5nU2V0Lm1lbSBpZHggaWRzIHRoZW5cbiAgICAgICAgICAgIG0gKGkrMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWR4IGlkcztcbiAgICAgICAgICAgICBpZHgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoaWRzIDwtIFN0cmluZ1NldC5hZGQgaWQgaWRzO1xuICAgICAgICAgICBpZClcbiAgICAgIGluIG0gMFxuICBlbmQgaW5cbiAgbGV0IGVtcHR5IHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcbicgLT4gbG9vcCAoaSsxKVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ1ZVxuICAgIGluXG4gICAgbG9vcCAwXG4gIGluXG4gIGxldCByZW1vdmVfdHJhaWxpbmdfYmxhbmtzIHMgPVxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPCAwIHRoZW4gXCJcIlxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJyAnfCdcXHQnfCdcXG4nIC0+XG4gICAgICAgICAgbG9vcCAocHJlZCBpKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSB0aGVuXG4gICAgICAgICAgICBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICBpbiBsb29wIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGhlYWRlcnMgPSByZWYgW10gaW5cbiAgbGV0IHJlYyBsb29wIGluZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGluZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OmluZGVudFxuICAgICAgICAgICAgICAgKGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSkgbWRcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCbG9ja3F1b3RlIHEgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBxO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2Jsb2NrcXVvdGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoaHJlZiwgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKFVybChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZixcbiAgICAgICAgICAgICAgICAgICAgIFtUZXh0KHRleHQpXSxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSlcbiAgICAgICAgICAgICAgICAgOjp0bClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudCAoZmFsbGJhY2sjdG9fdCk7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCByYyNnZXRfcmVmIG5hbWUgd2l0aFxuICAgICAgICAgICAgfCBTb21lKHNyYywgdGl0bGUpIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50XG4gICAgICAgICAgICAgICAgKEltZyhodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0LFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgUGFyYWdyYXBoIFtdIDo6IHRsIC0+IGxvb3AgaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgICBpZiBlbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cD5cIjtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHJlbW92ZV90cmFpbGluZ19ibGFua3Mgcyk7XG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9wPlxcblwiO1xuICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aW1nIHNyYz0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHNyYyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgYWx0PSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgYWx0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIChCdWZmZXIuYWRkX3N0cmluZyBiIFwiIHRpdGxlPSdcIjtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBUZXh0IHQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDsgKilcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdCk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgRW1waCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxlbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9lbT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCb2xkIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHN0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBtZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9zdHJvbmc+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKFVsIGx8T2wgbHxVbHAgbHxPbHAgbCBhcyBlKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICAgICB8IE9sIF98T2xwIF8gLT4gXCI8b2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPHVsPlwiKTtcbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxsaT5cIjtcbiAgICAgICAgICAgICAgICBsb29wIChpbmRlbnQrMikgbGk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvbGk+XCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGw7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjwvb2w+XCJcbiAgICAgICAgICAgICAgfCBfIC0+IFwiPC91bD5cIik7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8cHJlPjxjb2RlPlwiXG4gICAgICAgICAgZWxzZSBpZiBsYW5nID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8cHJlIGNsYXNzPSclcyc+PGNvZGUgY2xhc3M9JyVzJz5cIlxuICAgICAgICAgICAgICAhZGVmYXVsdF9sYW5ndWFnZSAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmcgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPjwvcHJlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IENvZGUobGFuZywgYykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxhbmcgPSBcIlwiICYmICFkZWZhdWx0X2xhbmd1YWdlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgIWRlZmF1bHRfbGFuZ3VhZ2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8Y29kZSBjbGFzcz0nJXMnPlwiIGxhbmc7XG4gICAgICAgICAgbGV0IG5ld19jID0gY29kZV9zdHlsZSB+bGFuZzpsYW5nIGMgaW5cbiAgICAgICAgICBpZiBjID0gbmV3X2MgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgbmV3X2M7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvY29kZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBCciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxici8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHIgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aHIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJhdyBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3X2Jsb2NrIHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgYXMgZSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiIC8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgYXMgZSA6OiB0bCAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGJvZHkgPSBbXSAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIHRoZW5cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICAgIClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCBib2R5O1xuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBIdG1sX2NvbW1lbnQgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHMgPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgcyBpblxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YSBocmVmPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgaHJlZik7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIidcIjtcbiAgICAgICAgICBpZiB0aXRsZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2E+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgxIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgxIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgxIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDE+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgyIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgyIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgyIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDI+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEgzIG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEgzIG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGgzIGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDM+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg0IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg0IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg0IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDQ+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg1IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg1IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg1IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgKEg2IG1kIGFzIGUpIDo6IHRsIC0+XG4gICAgICBsZXQgZSwgbWQgPVxuICAgICAgICBpZiBub3QgcmVtb3ZlX2hlYWRlcl9saW5rcyB0aGVuXG4gICAgICAgICAgZSwgbWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtZCA9IHJlbW92ZV9saW5rcyBtZCBpblxuICAgICAgICAgIEg2IG1kLCBtZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpaCA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBtZCBpblxuICAgICAgICAgIGxldCBpZCA9IGlkX29mX3N0cmluZyBpZHMgKHRleHRfb2ZfbWQgbWQpIGluXG4gICAgICAgICAgaGVhZGVycyA6PSAoZSwgaWQsIGloKSA6OiAhaGVhZGVycztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGg2IGlkPVxcXCJcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGlkO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWg7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvaDY+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgTkwgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIG5sMmJyIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgKClcbiAgaW5cbiAgbG9vcCAwIG1kO1xuICBCdWZmZXIuY29udGVudHMgYiwgTGlzdC5yZXYgIWhlYWRlcnNcblxuYW5kIHN0cmluZ19vZl9hdHRycyBhdHRycyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIExpc3QuaXRlclxuICAgIChmdW5jdGlvblxuICAgICAgfCAoYSwgU29tZSB2KSAtPlxuICAgICAgICBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1xcJycpIHRoZW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPSclcydcIiBhIHZcbiAgICAgICAgZWxzZSBpZiBub3QoU3RyaW5nLmNvbnRhaW5zIHYgJ1wiJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgICBlbHNlXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgKCogaWYgaHRtbDQgdGhlbiAqKVxuICAgICAgICAoKiAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgYSAqKVxuICAgICAgICAoKiBlbHNlICopXG4gICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JydcIiBhICgqIEhUTUw1ICopXG4gICAgKVxuICAgIGF0dHJzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5hbmQgaHRtbF9vZl9tZFxuICAgID8ob3ZlcnJpZGU9KGZ1biAoZTplbGVtZW50KSAtPiAoTm9uZTpzdHJpbmcgb3B0aW9uKSkpXG4gICAgPyhwaW5kZW50PWZhbHNlKVxuICAgID8obmwyYnI9ZmFsc2UpXG4gICAgP2NzXG4gICAgbWRcbiAgPVxuICBmc3QgKGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciA/Y3MgbWQpXG5hbmQgaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZCA9XG4gIHNuZCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCA/cmVtb3ZlX2hlYWRlcl9saW5rcyBtZClcblxuXG5sZXQgcmVjIHNleHByX29mX21kIG1kID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIHggOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgbG9vcCB0O1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBtYXRjaCB4I3RvX3NleHByIHNleHByX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQmxvY2txdW90ZVwiO1xuICAgICAgICBsb29wIHE7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJlZiAlUyAlUylcIiBuYW1lIHRleHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgXykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEltZ19yZWYgJVMgJVMpXCIgbmFtZSBhbHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFBhcmFncmFwaFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nICVTICVTICVTKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVGV4dCAlU1wiIHQ7XG4gICAgICAgIGxldCByZWMgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIiAlU1wiIHQ7XG4gICAgICAgICAgICBmIHRsXG4gICAgICAgICAgfCB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRsID0gZiB0bCBpblxuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihFbXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCb2xkXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9sIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9sXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpOyBicHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVWwgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihPbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVWxwXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpO2JwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihDb2RlICVTKVwiIGM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGVfYmxvY2sgJXMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIcilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJhdyAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3X2Jsb2NrICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9ibG9jayAlcyAlcyBcIiB0YWduYW1lIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWxfY29tbWVudCAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVybCAlUyAlUyAlUylcIiBocmVmIChodG1sX29mX21kIHMpIHRpdGxlO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgxXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDJcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIM1wiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg0XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDVcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKE5MKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICogMikgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnLicgYXMgYyAtPlxuICAgICAgICBpZiBpID4gMCAmJlxuICAgICAgICAgICBtYXRjaCBzLltpLTFdIHdpdGhcbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnXG4gICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICctJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIChzLltpKzFdID0gJyAnfHxzLltpKzFdID0gJy0nKSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnKycgYXMgYyAtPlxuICAgICAgICBpZiAoaSA9IDAgfHwgbWF0Y2ggcy5baS0xXSB3aXRoICcgJ3wgJ1xcbicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgJiYgKGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJyAnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICchJyBhcyBjIC0+XG4gICAgICAgIGlmIGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiBzLltpKzFdID0gJ1snIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJzwnIGFzIGMgLT5cbiAgICAgICAgaWYgaSA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxICYmXG4gICAgICAgICAgICAgKG1hdGNoIHMuW2krMV0gd2l0aCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPicgYXMgYyAtPlxuICAgICAgICBpZiBpID0gMCB8fFxuICAgICAgICAgICAgIChtYXRjaCBzLltpLTFdIHdpdGggJyAnIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyMnIGFzIGMgLT5cbiAgICAgICAgIGlmIGkgPSAwIHx8IHMuW2ktMV0gPSAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJ1xcXFwnIHwgJ1snIHwgJ10nIHwgJygnIHwgJyknIHwgJ2AnIHwgJyonIGFzIGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgIGRvbmU7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJlYyBtYXJrZG93bl9vZl9tZCBtZCA9XG4gIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKVxcbiUhXCIgKHNleHByX29mX21kIG1kKTtcbiAgbGV0IHF1b3RlID8oaW5kZW50PTApIHMgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IHJlYyBsb29wIG5sIGkgPVxuICAgICAgaWYgaSA8IGwgdGhlblxuICAgICAgICBiZWdpblxuICAgICAgICAgIGlmIG5sICYmIGkgPCBsIC0gMSB0aGVuXG4gICAgICAgICAgICAoZm9yIGkgPSAxIHRvIGluZGVudCBkb1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJyAnXG4gICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPiBcIik7XG4gICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgbG9vcCB0cnVlIChzdWNjIGkpXG4gICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBpbiBsb29wIHRydWUgMFxuICBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGFkZF9zcGFjZXMgbiA9IGZvciBpID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICcgJyBkb25lIGluXG4gIGxldCByZWZlcmVuY2VzID0gcmVmIE5vbmUgaW5cbiAgbGV0IHJlYyBsb29wID8oZnN0X3BfaW5fbGk9dHJ1ZSkgPyhpc19pbl9saXN0PWZhbHNlKSBsaXN0X2luZGVudCBsID1cbiAgICAoKiBbbGlzdF9pbmRlbnQ6IGludF0gaXMgdGhlIGluZGVudGF0aW9uIGxldmVsIGluIG51bWJlciBvZiBzcGFjZXMuICopXG4gICAgKCogW2lzX2luX2xpc3Q6IGJvb2xdIGlzIG5lY2Vzc2FyeSB0byBrbm93IGlmIHdlIGFyZSBpbnNpZGUgYSBwYXJhZ3JhcGhcbiAgICAgICB3aGljaCBpcyBpbnNpZGUgYSBsaXN0IGl0ZW0gYmVjYXVzZSB0aG9zZSBuZWVkIHRvIGJlIGluZGVudGVkISAqKVxuICAgIGxldCBsb29wID8oZnN0X3BfaW5fbGk9ZnN0X3BfaW5fbGkpID8oaXNfaW5fbGlzdD1pc19pbl9saXN0KSBsaXN0X2luZGVudCBsID1cbiAgICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZnN0X3BfaW5fbGkgfmlzX2luX2xpc3Q6aXNfaW5fbGlzdCBsaXN0X2luZGVudCBsXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT4gbG9vcCBsaXN0X2luZGVudCB0XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHgjdG9faHRtbCB+aW5kZW50OjAgaHRtbF9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChxdW90ZSB+aW5kZW50Omxpc3RfaW5kZW50IChtYXJrZG93bl9vZl9tZCBxKSk7XG4gICAgICBpZiB0bCA8PiBbXSB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIGlmICFyZWZlcmVuY2VzID0gTm9uZSB0aGVuIHJlZmVyZW5jZXMgOj0gU29tZSByYztcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCAoUmF3KGZhbGxiYWNrI3RvX3N0cmluZyk6OnRsKVxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICBpZiBpc19pbl9saXN0IHRoZW5cbiAgICAgICAgaWYgZnN0X3BfaW5fbGkgdGhlblxuICAgICAgICAgIGFkZF9zcGFjZXMgKGxpc3RfaW5kZW50LTIpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZmFsc2UgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiXFxuXFxuXCI7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIhWyVzXSglcyBcXFwiJXNcXFwiKVwiIGFsdCBzcmMgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyB0KTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIGM7XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIi0gXCI7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgaWYgbGlzdF9pbmRlbnQgPSAwIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbHAgbCA6OiB0bCAtPlxuICAgICAgbGV0IGMgPSByZWYgMCBpbiAoKiBkb24ndCB1c2UgTGlzdC5pdGVyaSBiZWNhdXNlIGl0J3Mgbm90IGluIDMuMTIgKilcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nXG4gICAgICAgIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgIGluY3IgYztcbiAgICAgICAgYnByaW50ZiBiIFwiJWQuIFwiICFjO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICApIGw7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVbHAgbCA6OiB0bCAtPlxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgYnByaW50ZiBiIFwiKyBcIjtcbiAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICgqIFBhcmFncmFwaHMgPT4gTm8gbmVlZCBvZiAnXFxuJyAqKVxuICAgICAgICAgICAgICAgKSBsO1xuICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgfCAoSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6X1xuICAgICAgfCBOTDo6KEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgXyk6Ol8gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbidcbiAgICAgIHwgXyAtPiAoKVxuICAgICAgZW5kO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZShfbGFuZywgYykgOjogdGwgLT4gKCogRklYTUUgKilcbiAgICAgIGxldCBuID0gKCogY29tcHV0ZSBob3cgbWFueSBiYWNrcXVvdGVzIHdlIG5lZWQgdG8gdXNlICopXG4gICAgICAgIGxldCBmaWx0ZXIgKG46aW50KSAoczppbnQgbGlzdCkgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyB4IGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICB8IFtdIC0+IHgrMVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyB4IChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgKG1heCBiIHgpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFsxOzI7Mzs0OzU7Njs3Ozg7OTsxMF0gMCAwIDBcbiAgICAgIGluXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBpZiBjLlswXSA9ICdgJyB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiBjO1xuICAgICAgICAgIGlmIGMuW1N0cmluZy5sZW5ndGggYyAtIDFdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciBuIHMgPVxuICAgICAgICAgIGlmIG4gPiAwICYmIG4gPCAxMCB0aGVuXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoZnVuIGUgLT4gZSA8PiBuKSBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggYyBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBiIGkgPVxuICAgICAgICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIGZpbHRlciBiIHMgd2l0aFxuICAgICAgICAgICAgICB8IGhkOjpfIC0+IGhkXG4gICAgICAgICAgICAgIHwgW10gLT4gMFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIGMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJ2AnIC0+IGxvb3AgcyAoc3VjYyBiKSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+IGxvb3AgKGZpbHRlciBiIHMpIDAgKHN1Y2MgaSlcbiAgICAgICAgaW5cbiAgICAgICAgICBsb29wIFszOzQ7NTs2Ozc7ODs5OzEwXSAwIDBcbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0X2luZGVudGVkX2Jsb2NrIG4gcyA9XG4gICAgICAgIGxldCByZWMgbG9vcCBwIGkgPVxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnICcpO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIHMuW2ldO1xuICAgICAgICAgICAgICAgIGxvb3Agcy5baV0gKHN1Y2MgaSlcbiAgICAgICAgaW4gbG9vcCAnXFxuJyAwXG4gICAgICBpblxuICAgICAgICBpZiBuID0gMCB0aGVuICAoKiBGSVhNRSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAoKiBjYXNlIHdoZXJlIHdlIGNhbid0IHVzZSBiYWNrcXVvdGVzICopXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAoNCtsaXN0X2luZGVudCkgYztcbiAgICAgICAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpXG4gICAgICAgICAgICAgIChpZiBsYW5nID0gXCJcIiB0aGVuICFkZWZhdWx0X2xhbmd1YWdlIGVsc2UgbGFuZyk7XG4gICAgICAgICAgICBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgKGxpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLm1ha2UgKGxpc3RfaW5kZW50KSAnICcpO1xuICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXFxuXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgICBlbmQ7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiogKiAqXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmF3X2Jsb2NrIHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBbXSkgOjogdGxcbiAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgaWYgYSA9PSBhdHRycyB0aGVuXG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sX29mX21kIGJvZHkpO1xuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IChIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSk6OnRsIC0+XG4gICAgICBsZXQgbmVlZHNfbmV3bGluZXMgPVxuICAgICAgICBtYXRjaCB0bCB3aXRoXG4gICAgICAgIHwgTkwgOjogUGFyYWdyYXBoIHAgOjogX1xuICAgICAgICB8IFBhcmFncmFwaCBwIDo6IF8gLT4gcCA8PiBbXVxuICAgICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgICB8IFVsIF8gfCBPbCBfIHwgVWxwIF8gfCBPbHAgXyB8IENvZGUgKF8sIF8pIHwgQ29kZV9ibG9jayAoXywgXylcbiAgICAgICAgICB8IFRleHQgXyB8IEVtcGggXyB8IEJvbGQgXyB8IEJyIHxIciB8IFVybCAoXywgXywgXylcbiAgICAgICAgICB8IFJlZiAoXywgXywgXywgXykgfCBJbWdfcmVmIChfLCBfLCBfLCBfKVxuICAgICAgICAgIHwgSHRtbCAoXywgXywgXylcbiAgICAgICAgICB8IEJsb2NrcXVvdGUgXyB8IEltZyAoXywgXywgXykpIDo6IF8gLT4gdHJ1ZVxuICAgICAgICB8ICggSHRtbF9ibG9jayAoXywgXywgXykgfCBIdG1sX2NvbW1lbnQgX1xuICAgICAgICAgIHwgUmF3IF98UmF3X2Jsb2NrIF8pIDo6IF8tPiBmYWxzZVxuICAgICAgICB8IFggXyA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgTkwgOjogXyAtPiBmYWxzZVxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAoXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICAgICAgaWYgbmVlZHNfbmV3bGluZXMgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCI7XG4gICAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgICAgICApXG4gICAgICBlbHNlXG4gICAgICAgIChcbiAgICAgICAgICBsZXQgYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYSk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgYm9keVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgOjogdGwgLT5cbiAgICAgIGlmIHRpdGxlID0gXCJcIiB0aGVuXG4gICAgICAgIGJwcmludGYgYiBcIlslc10oJXMpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWZcbiAgICAgIGVsc2VcbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcyBcXFwiJXNcXFwiKVwiIChtYXJrZG93bl9vZl9tZCBzKSBocmVmIHRpdGxlO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDEgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgyIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDMgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDQgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg1IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA9IDFcbiAgICAgIHx8IChCdWZmZXIubGVuZ3RoIGIgPiAxICYmXG4gICAgICAgICAgbm90KEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPSAnXFxuJ1xuICAgICAgICAgICAgICAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDIpID0gJ1xcbicpKVxuICAgICAgdGhlblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIDAgbWQ7XG4gICAgYmVnaW4gbWF0Y2ggIXJlZmVyZW5jZXMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biAobmFtZSwgKHVybCwgdGl0bGUpKSAtPlxuICAgICAgICAgICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxuXCIgbmFtZSB1cmxcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYnByaW50ZiBiIFwiWyVzXTogJXMgXFxcIiVzXFxcIlxcblwiIG5hbWUgdXJsIHRpdGxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgICByI2dldF9hbGxcbiAgICBlbmQ7XG4gICAgbGV0IHJlcyA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1hcmtkb3duX29mX21kKCVTKSA9PiAlU1xcbiUhXCJcbiAgICAgICAgKHNleHByX29mX21kIG1kKSByZXM7XG4gICAgcmVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEltcGxlbWVudGF0aW9uIG5vdGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICAqIC0gVGhpcyBtb2R1bGUgc2hvdWxkIGRlcGVuZCBvbiBPQ2FtbCdzIHN0YW5kYXJkIGxpYnJhcnkgb25seSBhbmRcbiAgICogc2hvdWxkIGJlIGFzICdwdXJlIE9DYW1sJyAoaS5lLiBkZXBlbmQgYXMgbGVhc3QgYXMgcG9zc2libGUgb25cbiAgICogZXh0ZXJuYWwgdG9vbHMpIGFzIHBvc3NpYmxlLlxuXG4gICAqIC0gYHdoaWxlJyBsb29wcyBhcmUgc29tZXRpbWVzIHByZWZlcnJlZCB0byByZWN1cnNpb24gYmVjYXVzZSB0aGlzXG4gICAqIG1heSBiZSB1c2VkIG9uIHN5c3RlbXMgd2hlcmUgdGFpbCByZWN1cnNpb24gaXMgbm90IHdlbGxcbiAgICogc3VwcG9ydGVkLiAoSSB0cmllZCB0byB3cml0ZSBcIndoaWxlXCIgYXMgb2Z0ZW4gYXMgcG9zc2libGUsIGJ1dCBpdFxuICAgKiB0dXJuZWQgb3V0IHRoYXQgaXQgd2FzIHByZXR0eSBpbmNvbnZlbmllbnQsIHNvIEkgZG8gdXNlXG4gICAqIHJlY3Vyc2lvbi4gIFdoZW4gSSBoYXZlIHRpbWUsIEknbGwgZG8gc29tZSB0ZXN0cyBhbmQgc2VlIGlmIElcbiAgICogbmVlZCB0byBjb252ZXJ0IHJlY3Vyc2l2ZSBsb29wcyBpbnRvIGl0ZXJhdGl2ZSBsb29wcy4gU29ycnkgaWYgaXRcbiAgICogbWFrZXMgaXQgaGFyZGVyIHRvIHJlYWQuKVxuXG4qKVxuXG4oKiBjbGFzcyB0eXBlIHRhZyA9IG9iamVjdCBtZXRob2QgaXNfbWUgOiAnYS4gJ2EgLT4gYm9vbCBlbmQgKilcblxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cblxudHlwZSB0b2tlbiA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2tcbnR5cGUgdCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuXG5sZXQgc3RyaW5nX29mX3Rva2VuID0gZnVuY3Rpb25cbiAgfCBUYWcgKG5hbWUsIG8pIC0+XG4gICAgaWYgT21kX3V0aWxzLmRlYnVnIHRoZW4gXCJUQUcoXCJebmFtZV5cIilcIiBeIG8jdG9fc3RyaW5nIGVsc2UgbyN0b19zdHJpbmdcbiAgfCBBbXBlcnNhbmQgLT4gXCImXCJcbiAgfCBBbXBlcnNhbmRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJidcbiAgfCBBdCAtPiBcIkBcIlxuICB8IEF0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ0AnXG4gIHwgQmFja3F1b3RlIC0+IFwiYFwiXG4gIHwgQmFja3F1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ2AnXG4gIHwgQmFja3NsYXNoIC0+IFwiXFxcXFwiXG4gIHwgQmFja3NsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcXFwnXG4gIHwgQmFyIC0+IFwifFwiXG4gIHwgQmFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ3wnXG4gIHwgQ2FyZXQgLT4gXCJeXCJcbiAgfCBDYXJldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdeJ1xuICB8IENicmFjZSAtPiBcIn1cIlxuICB8IENicmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd9J1xuICB8IENvbG9uIC0+IFwiOlwiXG4gIHwgQ29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOidcbiAgfCBDb21tYSAtPiBcIixcIlxuICB8IENvbW1hcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJywnXG4gIHwgQ3BhcmVudGhlc2lzIC0+IFwiKVwiXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyknXG4gIHwgQ2JyYWNrZXQgLT4gXCJdXCJcbiAgfCBDYnJhY2tldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICddJ1xuICB8IERvbGxhciAtPiBcIiRcIlxuICB8IERvbGxhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICckJ1xuICB8IERvdCAtPiBcIi5cIlxuICB8IERvdHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcuJ1xuICB8IERvdWJsZXF1b3RlIC0+IFwiXFxcIlwiXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXCInXG4gIHwgRXhjbGFtYXRpb24gLT4gXCIhXCJcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICchJ1xuICB8IEVxdWFsIC0+IFwiPVwiXG4gIHwgRXF1YWxzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPSdcbiAgfCBHcmVhdGVydGhhbiAtPiBcIj5cIlxuICB8IEdyZWF0ZXJ0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz4nXG4gIHwgSGFzaCAtPiBcIiNcIlxuICB8IEhhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnIydcbiAgfCBMZXNzdGhhbiAtPiBcIjxcIlxuICB8IExlc3N0aGFucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzwnXG4gIHwgTWludXMgLT4gXCItXCJcbiAgfCBNaW51c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICctJ1xuICB8IE5ld2xpbmUgLT4gXCJcXG5cIlxuICB8IE5ld2xpbmVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxuJ1xuICB8IE51bWJlciBzIC0+IHNcbiAgfCBPYnJhY2UgLT4gXCJ7XCJcbiAgfCBPYnJhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAneydcbiAgfCBPcGFyZW50aGVzaXMgLT4gXCIoXCJcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKCdcbiAgfCBPYnJhY2tldCAtPiBcIltcIlxuICB8IE9icmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1snXG4gIHwgUGVyY2VudCAtPiBcIiVcIlxuICB8IFBlcmNlbnRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJSdcbiAgfCBQbHVzIC0+IFwiK1wiXG4gIHwgUGx1c3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcrJ1xuICB8IFF1ZXN0aW9uIC0+IFwiP1wiXG4gIHwgUXVlc3Rpb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPydcbiAgfCBRdW90ZSAtPiBcIidcIlxuICB8IFF1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcJydcbiAgfCBTZW1pY29sb24gLT4gXCI7XCJcbiAgfCBTZW1pY29sb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnOydcbiAgfCBTbGFzaCAtPiBcIi9cIlxuICB8IFNsYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy8nXG4gIHwgU3BhY2UgLT4gXCIgXCJcbiAgfCBTcGFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcgJ1xuICB8IFN0YXIgLT4gXCIqXCJcbiAgfCBTdGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyonXG4gIHwgVGFiIC0+IFwiICAgIFwiXG4gIHwgVGFicyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKCgyK24pKjQpICcgJ1xuICB8IFRpbGRlIC0+IFwiflwiXG4gIHwgVGlsZGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfidcbiAgfCBVbmRlcnNjb3JlIC0+IFwiX1wiXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdfJ1xuICB8IFdvcmQgcyAtPiBzXG5cblxubGV0IHNpemVfYW5kX25ld2xpbmVzID0gZnVuY3Rpb25cbiAgfCBUYWcgXyAtPiAoMCwgMClcbiAgfCBBbXBlcnNhbmQgfCBBdCB8IEJhY2txdW90ZSB8IEJhY2tzbGFzaCB8IEJhciB8IENhcmV0IHwgQ2JyYWNlXG4gIHwgQ29sb24gfCBDb21tYSB8IENwYXJlbnRoZXNpcyB8IENicmFja2V0IHwgRG9sbGFyIHwgRG90XG4gIHwgRG91YmxlcXVvdGUgfCBFeGNsYW1hdGlvbiB8IEVxdWFsIHwgR3JlYXRlcnRoYW4gfCBIYXNoIHwgTGVzc3RoYW5cbiAgfCBNaW51cyB8IE9icmFjZSB8IE9wYXJlbnRoZXNpcyB8IE9icmFja2V0IHwgUGVyY2VudCB8IFBsdXNcbiAgfCBRdWVzdGlvbiB8IFF1b3RlIHwgU2VtaWNvbG9uIHwgU2xhc2ggfCBTcGFjZSB8IFN0YXIgfCBUYWJcbiAgfCBUaWxkZSB8IFVuZGVyc2NvcmUgLT4gKDEsIDApXG4gIHwgQW1wZXJzYW5kcyB4IHwgQXRzIHggfCBCYWNrcXVvdGVzIHggfCBCYWNrc2xhc2hzIHggfCBCYXJzIHggfCBDYXJldHMgeFxuICB8IENicmFjZXMgeCB8IENvbG9ucyB4IHwgQ29tbWFzIHggfCBDcGFyZW50aGVzaXNzIHggfCBDYnJhY2tldHMgeFxuICB8IERvbGxhcnMgeCB8IERvdHMgeFxuICB8IERvdWJsZXF1b3RlcyB4IHwgRXhjbGFtYXRpb25zIHggfCBFcXVhbHMgeCB8IEdyZWF0ZXJ0aGFucyB4IHwgSGFzaHMgeFxuICB8IExlc3N0aGFucyB4XG4gIHwgTWludXNzIHggfCBPYnJhY2VzIHggfCBPcGFyZW50aGVzaXNzIHggfCBPYnJhY2tldHMgeCB8IFBlcmNlbnRzIHggfCBQbHVzcyB4XG4gIHwgUXVlc3Rpb25zIHggfCBRdW90ZXMgeCB8IFNlbWljb2xvbnMgeCB8IFNsYXNocyB4IHwgU3BhY2VzIHggfCBTdGFycyB4XG4gIHwgVGFicyB4XG4gIHwgVGlsZGVzIHggfCBVbmRlcnNjb3JlcyB4IC0+ICgyK3gsIDApXG4gIHwgTmV3bGluZSAtPiAoMCwgMSlcbiAgfCBOZXdsaW5lcyB4IC0+ICgwLCAyK3gpXG4gIHwgTnVtYmVyIHMgfCBXb3JkIHMgLT4gKFN0cmluZy5sZW5ndGggcywgMClcblxubGV0IGxlbmd0aCB0ID1cbiAgbGV0IGMsIG5sID0gc2l6ZV9hbmRfbmV3bGluZXMgdCBpblxuICBjICsgbmxcblxubGV0IHNwbGl0X2ZpcnN0ID0gZnVuY3Rpb25cbiAgfCBBbXBlcnNhbmRzIG4gLT4gQW1wZXJzYW5kLCAoaWYgbiA+IDAgdGhlbiBBbXBlcnNhbmRzKG4tMSkgZWxzZSBBbXBlcnNhbmQpXG4gIHwgQXRzIG4gLT4gQXQsIChpZiBuID4gMCB0aGVuIEF0cyhuLTEpIGVsc2UgQXQpXG4gIHwgQmFja3F1b3RlcyBuIC0+IEJhY2txdW90ZSwgKGlmIG4gPiAwIHRoZW4gQmFja3F1b3RlcyhuLTEpIGVsc2UgQmFja3F1b3RlKVxuICB8IEJhY2tzbGFzaHMgbiAtPiBCYWNrc2xhc2gsIChpZiBuID4gMCB0aGVuIEJhY2tzbGFzaHMobi0xKSBlbHNlIEJhY2tzbGFzaClcbiAgfCBCYXJzIG4gLT4gQmFyLCAoaWYgbiA+IDAgdGhlbiBCYXJzKG4tMSkgZWxzZSBCYXIpXG4gIHwgQ2FyZXRzIG4gLT4gQ2FyZXQsIChpZiBuID4gMCB0aGVuIENhcmV0cyhuLTEpIGVsc2UgQ2FyZXQpXG4gIHwgQ2JyYWNlcyBuIC0+IENicmFjZSwgKGlmIG4gPiAwIHRoZW4gQ2JyYWNlcyhuLTEpIGVsc2UgQ2JyYWNlKVxuICB8IENvbG9ucyBuIC0+IENvbG9uLCAoaWYgbiA+IDAgdGhlbiBDb2xvbnMobi0xKSBlbHNlIENvbG9uKVxuICB8IENvbW1hcyBuIC0+IENvbW1hLCAoaWYgbiA+IDAgdGhlbiBDb21tYXMobi0xKSBlbHNlIENvbW1hKVxuICB8IENwYXJlbnRoZXNpc3MgbiAtPiBDcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIENwYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzKVxuICB8IENicmFja2V0cyBuIC0+IENicmFja2V0LCAoaWYgbiA+IDAgdGhlbiBDYnJhY2tldHMobi0xKSBlbHNlIENicmFja2V0KVxuICB8IERvbGxhcnMgbiAtPiBEb2xsYXIsIChpZiBuID4gMCB0aGVuIERvbGxhcnMobi0xKSBlbHNlIERvbGxhcilcbiAgfCBEb3RzIG4gLT4gRG90LCAoaWYgbiA+IDAgdGhlbiBEb3RzKG4tMSkgZWxzZSBEb3QpXG4gIHwgRG91YmxlcXVvdGVzIG4gLT4gRG91YmxlcXVvdGUsIChpZiBuID4gMCB0aGVuIERvdWJsZXF1b3RlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRG91YmxlcXVvdGUpXG4gIHwgRXhjbGFtYXRpb25zIG4gLT4gRXhjbGFtYXRpb24sIChpZiBuID4gMCB0aGVuIEV4Y2xhbWF0aW9ucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb24pXG4gIHwgRXF1YWxzIG4gLT4gRXF1YWwsIChpZiBuID4gMCB0aGVuIEVxdWFscyhuLTEpIGVsc2UgRXF1YWwpXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW4sIChpZiBuID4gMCB0aGVuIEdyZWF0ZXJ0aGFucyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW4pXG4gIHwgSGFzaHMgbiAtPiBIYXNoLCAoaWYgbiA+IDAgdGhlbiBIYXNocyhuLTEpIGVsc2UgSGFzaClcbiAgfCBMZXNzdGhhbnMgbiAtPiBMZXNzdGhhbiwgKGlmIG4gPiAwIHRoZW4gTGVzc3RoYW5zKG4tMSkgZWxzZSBMZXNzdGhhbilcbiAgfCBNaW51c3MgbiAtPiBNaW51cywgKGlmIG4gPiAwIHRoZW4gTWludXNzKG4tMSkgZWxzZSBNaW51cylcbiAgfCBOZXdsaW5lcyBuIC0+IE5ld2xpbmUsIChpZiBuID4gMCB0aGVuIE5ld2xpbmVzKG4tMSkgZWxzZSBOZXdsaW5lKVxuICB8IE9icmFjZXMgbiAtPiBPYnJhY2UsIChpZiBuID4gMCB0aGVuIE9icmFjZXMobi0xKSBlbHNlIE9icmFjZSlcbiAgfCBPcGFyZW50aGVzaXNzIG4gLT4gT3BhcmVudGhlc2lzLCAoaWYgbiA+IDAgdGhlbiBPcGFyZW50aGVzaXNzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpcylcbiAgfCBPYnJhY2tldHMgbiAtPiBPYnJhY2tldCwgKGlmIG4gPiAwIHRoZW4gT2JyYWNrZXRzKG4tMSkgZWxzZSBPYnJhY2tldClcbiAgfCBQZXJjZW50cyBuIC0+IFBlcmNlbnQsIChpZiBuID4gMCB0aGVuIFBlcmNlbnRzKG4tMSkgZWxzZSBQZXJjZW50KVxuICB8IFBsdXNzIG4gLT4gUGx1cywgKGlmIG4gPiAwIHRoZW4gUGx1c3Mobi0xKSBlbHNlIFBsdXMpXG4gIHwgUXVlc3Rpb25zIG4gLT4gUXVlc3Rpb24sIChpZiBuID4gMCB0aGVuIFF1ZXN0aW9ucyhuLTEpIGVsc2UgUXVlc3Rpb24pXG4gIHwgUXVvdGVzIG4gLT4gUXVvdGUsIChpZiBuID4gMCB0aGVuIFF1b3RlcyhuLTEpIGVsc2UgUXVvdGUpXG4gIHwgU2VtaWNvbG9ucyBuIC0+IFNlbWljb2xvbiwgKGlmIG4gPiAwIHRoZW4gU2VtaWNvbG9ucyhuLTEpIGVsc2UgU2VtaWNvbG9uKVxuICB8IFNsYXNocyBuIC0+IFNsYXNoLCAoaWYgbiA+IDAgdGhlbiBTbGFzaHMobi0xKSBlbHNlIFNsYXNoKVxuICB8IFNwYWNlcyBuIC0+IFNwYWNlLCAoaWYgbiA+IDAgdGhlbiBTcGFjZXMobi0xKSBlbHNlIFNwYWNlKVxuICB8IFN0YXJzIG4gLT4gU3RhciwgKGlmIG4gPiAwIHRoZW4gU3RhcnMobi0xKSBlbHNlIFN0YXIpXG4gIHwgVGFicyBuIC0+IFRhYiwgKGlmIG4gPiAwIHRoZW4gVGFicyhuLTEpIGVsc2UgVGFiKVxuICB8IFRpbGRlcyBuIC0+IFRpbGRlLCAoaWYgbiA+IDAgdGhlbiBUaWxkZXMobi0xKSBlbHNlIFRpbGRlKVxuICB8IFVuZGVyc2NvcmVzIG4gLT4gVW5kZXJzY29yZSwgKGlmIG4gPiAwIHRoZW4gVW5kZXJzY29yZXMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2UgfCBDb2xvblxuICB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3QgfCBEb3VibGVxdW90ZVxuICB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhbiB8IE1pbnVzXG4gIHwgTmV3bGluZSB8IE51bWJlciBfIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50XG4gIHwgUGx1cyB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSB8IFRhZyBfIHwgV29yZCBfIC0+XG4gICAgIGludmFsaWRfYXJnIFwiT21kX2xleGVyLnNwbGl0X2ZpcnN0XCJcblxubW9kdWxlIHR5cGUgSW5wdXQgPVxuc2lnXG4gIHR5cGUgdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXJcbiAgdmFsIHN1YiA6IHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBMZXgoSSA6IElucHV0KSA6XG5zaWdcbiAgdmFsIGxleCA6IEkudCAtPiB0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBsZXggKHMgOiBJLnQpID1cbiAgICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsID0gSS5sZW5ndGggcyBpblxuICAgIGxldCByY291bnQgYyA9XG4gICAgICAoKiBbcmNvdW50IGNdIHJldHVybnMgdGhlIG51bWJlciBvZiBpbW1lZGlhdGUgY29uc2VjdXRpdmVcbiAgICAgICAgIG9jY3VycmVuY2VzIG9mIFtjXS4gIEJ5IHNpZGUtZWZmZWN0LCBpdCBpbmNyZWFzZXMgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgY291bnRlciBbaV0uICopXG4gICAgICBsZXQgcmVjIGxvb3AgciA9XG4gICAgICAgIGlmICFpID0gbCB0aGVuIHJcbiAgICAgICAgZWxzZSBpZiBJLmdldCBzICFpID0gYyB0aGVuIChpbmNyIGk7IGxvb3AgKHIrMSkpXG4gICAgICAgIGVsc2UgclxuICAgICAgaW5cbiAgICAgIGxvb3AgMVxuICAgIGluXG4gICAgbGV0IHdvcmQgKCkgPVxuICAgICAgbGV0IHN0YXJ0ID0gIWkgaW5cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgICAgIFdvcmQoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJydcbiAgICAgICAgICAgIHwgJ1wiJyB8ICdcXFxcJyB8ICdfJyB8ICdbJyB8ICddJyB8ICd7JyB8ICd9JyB8ICcoJyB8ICcpJyB8ICc6J1xuICAgICAgICAgICAgfCAnOycgfCAnPicgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLydcbiAgICAgICAgICAgIHwgJyQnIHwgJyUnIHwgJyEnIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgICAgfCBjIC0+IGluY3IgaTsgbG9vcCgpXG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGxvb3AoKVxuICAgIGluXG4gICAgbGV0IG1heWJlX251bWJlciAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgd2hpbGVcbiAgICAgICAgIWkgPCBsICYmXG4gICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGRvXG4gICAgICAgIGluY3IgaVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFpID0gbCB0aGVuXG4gICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyB8ICcjJyB8ICcqJyB8ICctJyB8ICcrJyB8ICdgJyB8ICdcXCcnIHwgJ1wiJ1xuICAgICAgICAgIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonIHwgJzsnIHwgJz4nXG4gICAgICAgICAgfCAnficgfCAnPCcgfCAnQCcgfCAnJicgfCAnfCcgfCAnXicgfCAnLicgfCAnLycgfCAnJCcgfCAnJScgfCAnISdcbiAgICAgICAgICB8ICc/JyB8ICc9JyAtPlxuICAgICAgICAgICAgICBOdW1iZXIoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaSA6PSBzdGFydDtcbiAgICAgICAgICAgICAgd29yZCgpXG4gICAgICAgIGVuZFxuICAgIGluXG5cbiAgICBsZXQgbl9vY2MgYyA9IGluY3IgaTsgcmNvdW50IGMgaW5cblxuICAgIHdoaWxlICFpIDwgbCBkb1xuICAgICAgbGV0IGMgPSBJLmdldCBzICFpIGluXG4gICAgICBsZXQgdyA9IG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3BhY2UgZWxzZSBTcGFjZXMgKG4tMilcbiAgICAgICAgfCAnXFx0JyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZXMoMikgZWxzZSBTcGFjZXMoNCpuLTIpXG4gICAgICAgIHwgJ1xcbicgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzIChuLTIpXG4gICAgICAgIHwgJ1xccicgLT4gKCogZWxpbWluYXRpbmcgXFxyIGJ5IGNvbnZlcnRpbmcgYWxsIHN0eWxlcyB0byB1bml4IHN0eWxlICopXG4gICAgICAgICAgaW5jciBpO1xuICAgICAgICAgIGxldCByZWMgY291bnRfcm4geCA9XG4gICAgICAgICAgICBpZiAhaSA8IGwgJiYgSS5nZXQgcyAoIWkpID0gJ1xcbicgdGhlblxuICAgICAgICAgICAgICBpZiAhaSArIDEgPCBsICYmIEkuZ2V0IHMgKCFpKzEpID0gJ1xccicgdGhlblxuICAgICAgICAgICAgICAgIChpIDo9ICFpICsgMjsgY291bnRfcm4gKHgrMSkpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBybiA9IDEgKyBjb3VudF9ybiAwIGluXG4gICAgICAgICAgaWYgcm4gPSAxIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIG5fb2NjIGMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IE5ld2xpbmVcbiAgICAgICAgICAgIHwgeCAtPiBhc3NlcnQoeD49Mik7IE5ld2xpbmVzKHgtMilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoYXNzZXJ0KHJuPj0yKTtOZXdsaW5lcyhybi0yKSlcbiAgICAgICAgfCAnIycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEhhc2ggZWxzZSBIYXNocyAobi0yKVxuICAgICAgICB8ICcqJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3RhciBlbHNlIFN0YXJzIChuLTIpXG4gICAgICAgIHwgJy0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBNaW51cyBlbHNlIE1pbnVzcyAobi0yKVxuICAgICAgICB8ICcrJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGx1cyBlbHNlIFBsdXNzIChuLTIpXG4gICAgICAgIHwgJ2AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrcXVvdGUgZWxzZSBCYWNrcXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1xcJycgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUXVvdGUgZWxzZSBRdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXCInICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3VibGVxdW90ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFxcXCcgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFja3NsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEJhY2tzbGFzaHMgKG4tMilcbiAgICAgICAgfCAnXycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFVuZGVyc2NvcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVW5kZXJzY29yZXMgKG4tMilcbiAgICAgICAgfCAnWycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9icmFja2V0cyAobi0yKVxuICAgICAgICB8ICddJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNrZXQgZWxzZSBDYnJhY2tldHMgKG4tMilcbiAgICAgICAgfCAneycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9icmFjZSBlbHNlIE9icmFjZXMgKG4tMilcbiAgICAgICAgfCAnfScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENicmFjZSBlbHNlIENicmFjZXMgKG4tMilcbiAgICAgICAgfCAnKCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE9wYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJyknICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ3BhcmVudGhlc2lzcyAobi0yKVxuICAgICAgICB8ICc6JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29sb24gZWxzZSBDb2xvbnMgKG4tMilcbiAgICAgICAgfCAnOycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNlbWljb2xvbiBlbHNlIFNlbWljb2xvbnMgKG4tMilcbiAgICAgICAgfCAnPicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdyZWF0ZXJ0aGFucyAobi0yKVxuICAgICAgICB8ICd+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVGlsZGUgZWxzZSBUaWxkZXMgKG4tMilcbiAgICAgICAgfCAnPCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zIChuLTIpXG4gICAgICAgIHwgJ0AnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBdCBlbHNlIEF0cyAobi0yKVxuICAgICAgICB8ICcmJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQW1wZXJzYW5kIGVsc2UgQW1wZXJzYW5kcyAobi0yKVxuICAgICAgICB8ICd8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFyIGVsc2UgQmFycyAobi0yKVxuICAgICAgICB8ICdeJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2FyZXQgZWxzZSBDYXJldHMgKG4tMilcbiAgICAgICAgfCAnLCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENvbW1hIGVsc2UgQ29tbWFzIChuLTIpXG4gICAgICAgIHwgJy4nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb3QgZWxzZSBEb3RzIChuLTIpXG4gICAgICAgIHwgJy8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTbGFzaCBlbHNlIFNsYXNocyAobi0yKVxuICAgICAgICB8ICckJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG9sbGFyIGVsc2UgRG9sbGFycyAobi0yKVxuICAgICAgICB8ICclJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUGVyY2VudCBlbHNlIFBlcmNlbnRzIChuLTIpXG4gICAgICAgIHwgJz0nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFcXVhbCBlbHNlIEVxdWFscyAobi0yKVxuICAgICAgICB8ICchJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRXhjbGFtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRXhjbGFtYXRpb25zIChuLTIpXG4gICAgICAgIHwgJz8nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdWVzdGlvbiBlbHNlIFF1ZXN0aW9ucyAobi0yKVxuICAgICAgICB8ICcwJyAuLiAnOScgLT4gbWF5YmVfbnVtYmVyKClcbiAgICAgICAgfCBjIC0+IHdvcmQoKSBpblxuICAgICAgcmVzdWx0IDo9IHcgOjogIXJlc3VsdFxuICAgIGRvbmU7XG4gICAgTGlzdC5yZXYgIXJlc3VsdFxuZW5kXG5cbm1vZHVsZSBMZXhfc3RyaW5nID0gTGV4KFN0cmluZ0xhYmVscylcbmxldCBsZXggPSBMZXhfc3RyaW5nLmxleFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLFxuICAgICAgICAgICAgICAgICAgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxubW9kdWxlIEJpZ2FycmF5X2lucHV0IDogSW5wdXQgd2l0aCB0eXBlIHQgPSBiaWdzdHJpbmcgPVxuc3RydWN0XG4gIG1vZHVsZSBCQSA9IEJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gYmlnc3RyaW5nXG4gIGxldCBnZXQgPSBCQS5BcnJheTEuZ2V0XG4gIGxldCBsZW5ndGggPSBCQS5BcnJheTEuZGltXG4gIGxldCBzdWIgYXJyIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBwb3MgPCAwIHx8IHBvcyArIGxlbiA+IEJBLkFycmF5MS5kaW0gYXJyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5X2lucHV0LnN1YlwiO1xuICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBCeXRlcy51bnNhZmVfc2V0IHMgaSAoQkEuQXJyYXkxLnVuc2FmZV9nZXQgYXJyIChpICsgcG9zKSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuZW5kXG5tb2R1bGUgTGV4X2JpZ2FycmF5ID0gTGV4KEJpZ2FycmF5X2lucHV0KVxubGV0IGxleF9iaWdhcnJheSA9IExleF9iaWdhcnJheS5sZXhcblxubGV0IG1ha2Vfc3BhY2UgPSBmdW5jdGlvblxuICB8IDAgLT4gaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIubWFrZV9zcGFjZVwiXG4gIHwgMSAtPiBTcGFjZVxuICB8IG4gLT4gaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCIgZWxzZSBTcGFjZXMgKG4tMilcblxuXG4oKlxuKCoqIFtzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGwuXG4gICAgW2VzdHJpbmdfb2ZfdGwgbF0gcmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbFxuICAgIChzYW1lIHNlbWFudGljcyBhcyBbU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90bCBsKV0pLiAqKVxubGV0IHN0cmluZ19vZl90bCwgZXN0cmluZ19vZl90bCA9XG4gIGxldCBnIGVzY2FwZWQgdGwgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA0MiBpblxuICAgIGxldCByZWMgbG9vcCA6ICdhIHQgbGlzdCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChpZiBlc2NhcGVkIHRoZW4gU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90IGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzdHJpbmdfb2ZfdCBlKTtcbiAgICAgICAgICBsb29wIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgKClcbiAgICBpblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIHRsOyBiKVxuICBpbiBnIGZhbHNlLCBnIHRydWVcbiopXG5cbmxldCBzdHJpbmdfb2ZfdG9rZW5zIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBMaXN0Lml0ZXIgKGZ1biBlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl90b2tlbiBlKSkgdGw7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IGRlc3RyaW5nX29mX3Rva2VucyA/KGxpbWl0PW1heF9pbnQpIHRsID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHJlYyBsb29wIChpOmludCkgKHRsaXN0OnRvayBsaXN0KSA6IHVuaXQgPSBtYXRjaCB0bGlzdCB3aXRoXG4gICAgfCBlOjp0bCAtPlxuICAgICAgICBpZiBsaW1pdCA9IGkgdGhlblxuICAgICAgICAgIGxvb3AgaSBbXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdG9rZW4gZSkpO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjo6XCI7XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpIHRsXG4gICAgICAgICAgZW5kXG4gICAgfCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiW11cIlxuICBpblxuICAgIEJ1ZmZlci5jb250ZW50cyAobG9vcCAwIHRsOyBiKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMtMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgc2RlYnVnID0gdHJ1ZVxuXG5vcGVuIFByaW50Zlxub3BlbiBPbWRfcmVwcmVzZW50YXRpb25cbm9wZW4gT21kX3V0aWxzXG5tb2R1bGUgTCA9IE9tZF9sZXhlclxuXG50eXBlIHIgPSBPbWRfcmVwcmVzZW50YXRpb24udFxuKCoqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcblxuYW5kIHAgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcbigqKiBjb250ZXh0IGluZm9ybWF0aW9uOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuXG5hbmQgbCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIHRva2VucyB0byBwYXJzZSAqKVxuXG5hbmQgbWFpbl9sb29wID1cbiAgP2h0bWw6Ym9vbCAtPlxuICByIC0+ICgqIGFjY3VtdWxhdG9yIChiZXdhcmUsIHJldmVyc2VkIHRva2VucykgKilcbiAgcCAtPiAoKiBpbmZvOiBwcmV2aW91cyBlbGVtZW50cyAqKVxuICBsIC0+ICgqIHRva2VucyB0byBwYXJzZSAqKVxuICBPbWRfcmVwcmVzZW50YXRpb24udCAoKiBmaW5hbCByZXN1bHQgKilcbigqKiBtb3N0IGltcG9ydGFudCBsb29wICopXG5cblxuKCoqIE4uQi4gUGxlYXNlIGRvIG5vdCB1c2UgdGFidWxhdGlvbnMgaW4geW91ciBNYXJrZG93biBmaWxlISAqKVxuXG5tb2R1bGUgdHlwZSBFbnYgPSBzaWdcbiAgdmFsIHJjOiBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICB2YWwgZXh0ZW5zaW9ucyA6IE9tZF9yZXByZXNlbnRhdGlvbi5leHRlbnNpb25zXG4gIHZhbCBkZWZhdWx0X2xhbmcgOiBzdHJpbmdcbiAgdmFsIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgOiBib29sXG4gIHZhbCBibGluZF9odG1sIDogYm9vbFxuICB2YWwgc3RyaWN0X2h0bWwgOiBib29sXG4gIHZhbCB3YXJuaW5nIDogYm9vbFxuICB2YWwgd2Fybl9lcnJvciA6IGJvb2xcbmVuZFxuXG5tb2R1bGUgVW5pdCA9IHN0cnVjdCBlbmRcblxubW9kdWxlIERlZmF1bHRfZW52IChVbml0OnNpZyBlbmQpIDogRW52ID0gc3RydWN0XG4gIGxldCByYyA9IG5ldyBPbWRfcmVwcmVzZW50YXRpb24ucmVmX2NvbnRhaW5lclxuICBsZXQgZXh0ZW5zaW9ucyA9IFtdXG4gIGxldCBkZWZhdWx0X2xhbmcgPSBcIlwiXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkX3N0eWxlID0gdHJ1ZVxuICBsZXQgYmxpbmRfaHRtbCA9IGZhbHNlXG4gIGxldCBzdHJpY3RfaHRtbCA9IGZhbHNlXG4gIGxldCB3YXJuaW5nID0gZmFsc2VcbiAgbGV0IHdhcm5fZXJyb3IgPSBmYWxzZVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbnY6RW52KSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBFbnZcblxuICBsZXQgd2FybiA9IE9tZF91dGlscy53YXJuIH53ZTp3YXJuX2Vycm9yXG5cbiAgKCoqIHNldCBvZiBrbm93biBIVE1MIGNvZGVzICopXG4gIGxldCBodG1sY29kZXNfc2V0ID0gU3RyaW5nU2V0Lm9mX2xpc3QgKCogVGhpcyBsaXN0IHNob3VsZCBiZSBjaGVja2VkLi4uICopXG4gICAgICAoKiBsaXN0IGV4dHJhY3RlZCBmcm9tOiBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9jaGFyc2V0Lmh0bWwgKilcbiAgICAgIFsgXCJBRWxpZ1wiOyAgXCJBYWN1dGVcIjsgIFwiQWNpcmNcIjsgIFwiQWdyYXZlXCI7IFwiQWxwaGFcIjsgIFwiQXJpbmdcIjsgIFwiQXRpbGRlXCI7XG4gICAgICAgIFwiQXVtbFwiOyBcIkJldGFcIjsgIFwiQ2NlZGlsXCI7IFwiQ2hpXCI7IFwiRGFnZ2VyXCI7ICBcIkRlbHRhXCI7IFwiRVRIXCI7IFwiRWFjdXRlXCI7XG4gICAgICAgIFwiRWNpcmNcIjsgIFwiRWdyYXZlXCI7ICBcIkVwc2lsb25cIjsgICBcIkV0YVwiOyAgXCJFdW1sXCI7ICBcIkdhbW1hXCI7ICBcIklhY3V0ZVwiO1xuICAgICAgICBcIkljaXJjXCI7IFwiSWdyYXZlXCI7IFwiSW90YVwiOyAgXCJJdW1sXCI7IFwiS2FwcGFcIjsgXCJMYW1iZGFcIjsgXCJNdVwiOyBcIk50aWxkZVwiO1xuICAgICAgICBcIk51XCI7ICBcIk9FbGlnXCI7ICBcIk9hY3V0ZVwiOyAgIFwiT2NpcmNcIjsgIFwiT2dyYXZlXCI7ICBcIk9tZWdhXCI7ICBcIk9taWNyb25cIjtcbiAgICAgICAgXCJPc2xhc2hcIjsgIFwiT3RpbGRlXCI7ICBcIk91bWxcIjsgIFwiUGhpXCI7ICBcIlBpXCI7ICBcIlByaW1lXCI7ICBcIlBzaVwiOyAgXCJSaG9cIjtcbiAgICAgICAgXCJTY2Fyb25cIjsgIFwiU2lnbWFcIjsgICBcIlRIT1JOXCI7ICBcIlRhdVwiOyAgXCJUaGV0YVwiOyAgIFwiVWFjdXRlXCI7ICBcIlVjaXJjXCI7XG4gICAgICAgIFwiVWdyYXZlXCI7IFwiVXBzaWxvblwiOyBcIlV1bWxcIjsgXCJYaVwiOyBcIllhY3V0ZVwiOyBcIll1bWxcIjsgXCJaZXRhXCI7IFwiYWFjdXRlXCI7XG4gICAgICAgIFwiYWNpcmNcIjsgXCJhY3V0ZVwiOyBcImFlbGlnXCI7IFwiYWdyYXZlXCI7IFwiYWxlZnN5bVwiOyBcImFscGhhXCI7IFwiYW1wXCI7IFwiYW5kXCI7XG4gICAgICAgIFwiYW5nXCI7IFwiYXJpbmdcIjsgXCJhc3ltcFwiOyAgXCJhdGlsZGVcIjsgXCJhdW1sXCI7IFwiYmRxdW9cIjsgXCJiZXRhXCI7IFwiYnJ2YmFyXCI7XG4gICAgICAgIFwiYnVsbFwiOyAgXCJjYXBcIjsgIFwiY2NlZGlsXCI7IFwiY2VkaWxcIjsgIFwiY2VudFwiOyAgXCJjaGlcIjsgXCJjaXJjXCI7ICBcImNsdWJzXCI7XG4gICAgICAgIFwiY29uZ1wiOyAgXCJjb3B5XCI7IFwiY3JhcnJcIjsgXCJjdXBcIjsgIFwiY3VycmVuXCI7IFwiZEFyclwiOyAgXCJkYWdnZXJcIjsgXCJkYXJyXCI7XG4gICAgICAgIFwiZGVnXCI7ICBcImRlbHRhXCI7ICBcImRpYW1zXCI7ICAgXCJkaXZpZGVcIjsgIFwiZWFjdXRlXCI7ICBcImVjaXJjXCI7ICBcImVncmF2ZVwiO1xuICAgICAgICBcImVtcHR5XCI7ICBcImVtc3BcIjsgXCJlbnNwXCI7ICBcImVwc2lsb25cIjsgXCJlcXVpdlwiOyAgXCJldGFcIjsgIFwiZXRoXCI7IFwiZXVtbFwiO1xuICAgICAgICBcImV1cm9cIjsgIFwiZXhpc3RcIjsgIFwiZm5vZlwiOyAgXCJmb3JhbGxcIjsgIFwiZnJhYzEyXCI7ICBcImZyYWMxNFwiOyAgXCJmcmFjMzRcIjtcbiAgICAgICAgXCJmcmFzbFwiOyAgXCJnYW1tYVwiOyAgXCJnZVwiOyBcImd0XCI7ICBcImhBcnJcIjsgIFwiaGFyclwiOyBcImhlYXJ0c1wiOyAgXCJoZWxsaXBcIjtcbiAgICAgICAgXCJpYWN1dGVcIjsgXCJpY2lyY1wiOyBcImlleGNsXCI7IFwiaWdyYXZlXCI7IFwiaW1hZ2VcIjsgXCJpbmZpblwiOyBcImludFwiOyBcImlvdGFcIjtcbiAgICAgICAgXCJpcXVlc3RcIjsgXCJpc2luXCI7IFwiaXVtbFwiOyAgXCJrYXBwYVwiOyBcImxBcnJcIjsgXCJsYW1iZGFcIjsgXCJsYW5nXCI7IFwibGFxdW9cIjtcbiAgICAgICAgXCJsYXJyXCI7ICBcImxjZWlsXCI7ICBcImxkcXVvXCI7IFwibGVcIjsgIFwibGZsb29yXCI7ICBcImxvd2FzdFwiOyBcImxvelwiOyAgXCJscm1cIjtcbiAgICAgICAgXCJsc2FxdW9cIjsgXCJsc3F1b1wiOyBcImx0XCI7ICBcIm1hY3JcIjsgXCJtZGFzaFwiOyBcIm1pY3JvXCI7IFwibWlkZG90XCI7IFwibWludXNcIjtcbiAgICAgICAgXCJtdVwiOyBcIm5hYmxhXCI7ICBcIm5ic3BcIjsgXCJuZGFzaFwiOyAgXCJuZVwiOyBcIm5pXCI7IFwibm90XCI7ICBcIm5vdGluXCI7IFwibnN1YlwiO1xuICAgICAgICBcIm50aWxkZVwiOyAgXCJudVwiOyAgIFwib2FjdXRlXCI7ICBcIm9jaXJjXCI7ICBcIm9lbGlnXCI7ICAgXCJvZ3JhdmVcIjsgIFwib2xpbmVcIjtcbiAgICAgICAgXCJvbWVnYVwiOyBcIm9taWNyb25cIjsgXCJvcGx1c1wiOyBcIm9yXCI7IFwib3JkZlwiOyBcIm9yZG1cIjsgXCJvc2xhc2hcIjsgXCJvdGlsZGVcIjtcbiAgICAgICAgXCJvdGltZXNcIjsgIFwib3VtbFwiOyAgXCJwYXJhXCI7ICBcInBhcnRcIjsgIFwicGVybWlsXCI7IFwicGVycFwiOyAgXCJwaGlcIjsgIFwicGlcIjtcbiAgICAgICAgXCJwaXZcIjsgIFwicGx1c21uXCI7ICBcInBvdW5kXCI7IFwicHJpbWVcIjsgIFwicHJvZFwiOyAgXCJwcm9wXCI7IFwicHNpXCI7ICBcInF1b3RcIjtcbiAgICAgICAgXCJyQXJyXCI7ICBcInJhZGljXCI7IFwicmFuZ1wiOyBcInJhcXVvXCI7ICBcInJhcnJcIjsgXCJyY2VpbFwiOyAgXCJyZHF1b1wiOyBcInJlYWxcIjtcbiAgICAgICAgXCJyZWdcIjsgXCJyZmxvb3JcIjsgIFwicmhvXCI7IFwicmxtXCI7IFwicnNhcXVvXCI7ICBcInJzcXVvXCI7IFwic2JxdW9cIjsgXCJzY2Fyb25cIjtcbiAgICAgICAgXCJzZG90XCI7ICBcInNlY3RcIjsgIFwic2h5XCI7IFwic2lnbWFcIjsgIFwic2lnbWFmXCI7ICBcInNpbVwiOyBcInNwYWRlc1wiOyAgXCJzdWJcIjtcbiAgICAgICAgXCJzdWJlXCI7IFwic3VtXCI7IFwic3VwXCI7IFwic3VwMVwiOyAgXCJzdXAyXCI7IFwic3VwM1wiOyBcInN1cGVcIjsgXCJzemxpZ1wiOyBcInRhdVwiO1xuICAgICAgICBcInRoZXJlNFwiOyAgXCJ0aGV0YVwiOyBcInRoZXRhc3ltXCI7ICBcInRoaW5zcFwiOyBcInRob3JuXCI7ICBcInRpbGRlXCI7IFwidGltZXNcIjtcbiAgICAgICAgXCJ0cmFkZVwiOyBcInVBcnJcIjsgXCJ1YWN1dGVcIjsgIFwidWFyclwiOyBcInVjaXJjXCI7IFwidWdyYXZlXCI7IFwidW1sXCI7IFwidXBzaWhcIjtcbiAgICAgICAgXCJ1cHNpbG9uXCI7ICBcInV1bWxcIjsgXCJ3ZWllcnBcIjsgXCJ4aVwiOyAgXCJ5YWN1dGVcIjsgXCJ5ZW5cIjsgIFwieXVtbFwiOyBcInpldGFcIjtcbiAgICAgICAgXCJ6d2pcIjsgXCJ6d25qXCI7IF1cblxuXG4gICgqKiBzZXQgb2Yga25vd24gaW5saW5lIEhUTUwgdGFncyAqKVxuICBsZXQgaW5saW5lX2h0bWx0YWdzX3NldCA9XG4gICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICgqIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9IVE1ML0lubGluZV9lbGVtZW50cyAqKVxuICAgICAgICAgWyBcImJcIjtcImJpZ1wiO1wiaVwiO1wic21hbGxcIjtcInR0XCI7XG4gICAgICAgICAgIFwiYWJiclwiO1wiYWNyb255bVwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiZGZuXCI7XCJlbVwiO1wia2JkXCI7XCJzdHJvbmdcIjtcInNhbXBcIjtcInZhclwiO1xuICAgICAgICAgICBcImFcIjtcImJkb1wiO1wiYnJcIjtcImltZ1wiO1wibWFwXCI7XCJvYmplY3RcIjtcInFcIjtcInNwYW5cIjtcInN1YlwiO1wic3VwXCI7XG4gICAgICAgICAgIFwiYnV0dG9uXCI7XCJpbnB1dFwiO1wibGFiZWxcIjtcInNlbGVjdFwiO1widGV4dGFyZWFcIjtdKVxuXG4gICgqKiBOLkIuIGl0IHNlZW1zIHRoYXQgdGhlcmUgaXMgbm8gY2xlYXIgZGlzdGluY3Rpb24gYmV0d2VlbiBpbmxpbmVcbiAgICAgIHRhZ3MgYW5kIGJsb2NrLWxldmVsIHRhZ3M6IGluIEhUTUw0IGl0IHdhcyBub3QgY2xlYXIsIGluIEhUTUw1XG4gICAgICBpdCdzIGV2ZW4gbW9yZSBjb21wbGljYXRlZC4gU28sIHRoZSBjaG9pY2UgKmhlcmUqIGlzIHRvIHNwZWNpZnlcbiAgICAgIGEgc2V0IG9mIHRhZ3MgY29uc2lkZXJlZCBhcyBcImlubGluZVwiLCBjZi4gW2lubGluZV9odG1sdGFnc19zZXRdLlxuICAgICAgU28gdGhlcmUgd2lsbCBiZSBpbmxpbmUgdGFncywgbm9uLWlubGluZSB0YWdzLCBhbmQgdW5rbm93blxuICAgICAgdGFncy4qKVxuXG4gICgqKiBzZXQgb2YgSFRNTCB0YWdzIHRoYXQgbWF5IGFwcGVhciBvdXQgb2YgYSBib2R5ICopXG4gIGxldCBub3RpbmJvZHl0YWdzID0gU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgIFtcbiAgICAgICAgXCJ0aXRsZVwiO1xuICAgICAgICBcImxpbmtcIjtcbiAgICAgICAgXCJtZXRhXCI7XG4gICAgICAgIFwic3R5bGVcIjtcbiAgICAgICAgXCJodG1sXCI7XG4gICAgICAgIFwiaGVhZFwiO1xuICAgICAgICBcImJvZHlcIjtcbiAgICAgIF1cblxuICAoKiogQWxsIGtub3duIEhUTUwgdGFncyAqKVxuICBsZXQgaHRtbHRhZ3Nfc2V0ID1cbiAgICBTdHJpbmdTZXQudW5pb24gbm90aW5ib2R5dGFnc1xuICAgICAgKFN0cmluZ1NldC51bmlvbiBpbmxpbmVfaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAoU3RyaW5nU2V0Lm9mX2xpc3RcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJhXCI7XCJhYmJyXCI7XCJhY3JvbnltXCI7XCJhZGRyZXNzXCI7XCJhcHBsZXRcIjtcImFyZWFcIjtcImFydGljbGVcIjtcImFzaWRlXCJcbiAgICAgICAgICAgICAgO1wiYXVkaW9cIjtcImJcIjtcImJhc2VcIjtcImJhc2Vmb250XCI7XCJiZGlcIjtcImJkb1wiO1wiYmlnXCI7XCJibG9ja3F1b3RlXCJcbiAgICAgICAgICAgICAgO1wiYnJcIjtcImJ1dHRvblwiO1wiY2FudmFzXCI7XCJjYXB0aW9uXCI7XCJjZW50ZXJcIjtcImNpdGVcIjtcImNvZGVcIjtcImNvbFwiXG4gICAgICAgICAgICAgIDtcImNvbGdyb3VwXCI7XCJjb21tYW5kXCI7XCJkYXRhbGlzdFwiO1wiZGRcIjtcImRlbFwiO1wiZGV0YWlsc1wiO1wiZGZuXCJcbiAgICAgICAgICAgICAgO1wiZGlhbG9nXCI7XCJkaXJcIjtcImRpdlwiO1wiZGxcIjtcImR0XCI7XCJlbVwiO1wiZW1iZWRcIjtcImZpZWxkc2V0XCJcbiAgICAgICAgICAgICAgO1wiZmlnY2FwdGlvblwiO1wiZmlndXJlXCI7XCJmb250XCI7XCJmb290ZXJcIjtcImZvcm1cIjtcImZyYW1lXCI7XCJmcmFtZXNldFwiXG4gICAgICAgICAgICAgIDtcImgyXCI7XCJoM1wiO1wiaDRcIjtcImg1XCI7XCJoNlwiXG4gICAgICAgICAgICAgIDtcImgxXCI7XCJoZWFkZXJcIjtcImhyXCI7XCJpXCI7XCJpZnJhbWVcIjtcImltZ1wiO1wiaW5wdXRcIjtcImluc1wiO1wia2JkXCJcbiAgICAgICAgICAgICAgO1wia2V5Z2VuXCI7XCJsYWJlbFwiO1wibGVnZW5kXCI7XCJsaVwiO1wibWFwXCI7XCJtYXJrXCI7XCJtZW51XCI7XCJtZXRlclwiO1wibmF2XCJcbiAgICAgICAgICAgICAgO1wibm9mcmFtZXNcIjtcIm5vc2NyaXB0XCI7XCJvYmplY3RcIjtcIm9sXCI7XCJvcHRncm91cFwiO1wib3B0aW9uXCI7XCJvdXRwdXRcIlxuICAgICAgICAgICAgICA7XCJwXCI7XCJwYXJhbVwiO1wicHJlXCI7XCJwcm9ncmVzc1wiO1wicVwiO1wicnBcIjtcInJ0XCI7XCJydWJ5XCI7XCJzXCI7XCJzYW1wXCJcbiAgICAgICAgICAgICAgO1wic2NyaXB0XCI7XCJzZWN0aW9uXCI7XCJzZWxlY3RcIjtcInNtYWxsXCI7XCJzb3VyY2VcIjtcInNwYW5cIjtcInN0cmlrZVwiXG4gICAgICAgICAgICAgIDtcInN0cm9uZ1wiO1wic3R5bGVcIjtcInN1YlwiO1wic3VtbWFyeVwiO1wic3VwXCI7XCJ0YWJsZVwiO1widGJvZHlcIjtcInRkXCJcbiAgICAgICAgICAgICAgO1widGV4dGFyZWFcIjtcInRmb290XCI7XCJ0aFwiO1widGhlYWRcIjtcInRpbWVcIjtcInRyXCI7XCJ0cmFja1wiO1widHRcIjtcInVcIlxuICAgICAgICAgICAgICA7XCJ1bFwiO1widmFyXCI7XCJ2aWRlb1wiO1wid2JyXCJcbiAgICAgICAgICAgIF0pKVxuXG5cbiAgKCoqIFRoaXMgZnVuY3Rpb25zIGZpeGVzIGJhZCBsZXhpbmcgdHJlZXMsIHdoaWNoIG1heSBiZSBidWlsdCB3aGVuXG4gICAgICBleHRyYWN0aW9uIGEgcG9ydGlvbiBvZiBhbm90aGVyIGxleGluZyB0cmVlLiAqKVxuICBsZXQgZml4IGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICgqIGNvZGUgdG8gZ2VuZXJhdGUgd2hhdCBmb2xsb3dzLi4uXG4gICAgICAgICBMaXN0Lml0ZXIgKGZ1biBlIC0+XG4gICAgICAgICBQcmludGYucHJpbnRmIFwiXG4gICAgICAgICB8ICVzOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMVxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MgMDo6dGwpXG4gICAgICAgICB8ICVzcyBuOjolczo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgMlxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzOjolc3Mgbjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgM1xcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MobisxKTo6dGwpXG4gICAgICAgICB8ICVzcyBhOjolc3MgYjo6dGwgLT5cbiAgICAgICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcXFwiJXMgNFxcXFxuJSFcXFwiO1xuICAgICAgICAgICAgbG9vcCBhY2N1ICglc3MoYStiKzIpOjp0bClcIlxuICAgICAgICAgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSlcbiAgICAgICAgIFtcIkFtcGVyc2FuZFwiOyBcIkF0XCI7IFwiQmFja3F1b3RlXCI7IFwiQmFja3NsYXNoXCI7IFwiQmFyXCI7IFwiQ2FyZXRcIjsgXCJDYnJhY2VcIjsgXCJDb2xvblwiOyBcIkNvbW1hXCI7IFwiQ3BhcmVudGhlc2lzXCI7IFwiQ2JyYWNrZXRcIjsgXCJEb2xsYXJcIjsgXCJEb3RcIjsgXCJEb3VibGVxdW90ZVwiOyBcIkV4Y2xhbWF0aW9uXCI7IFwiRXF1YWxcIjsgXCJHcmVhdGVydGhhblwiOyBcIkhhc2hcIjsgXCJMZXNzdGhhblwiOyBcIk1pbnVzXCI7IFwiTmV3bGluZVwiOyBcIk9icmFjZVwiOyBcIk9wYXJlbnRoZXNpc1wiOyBcIk9icmFja2V0XCI7IFwiUGVyY2VudFwiOyBcIlBsdXNcIjsgXCJRdWVzdGlvblwiOyBcIlF1b3RlXCI7IFwiU2VtaWNvbG9uXCI7IFwiU2xhc2hcIjsgXCJTcGFjZVwiOyBcIlN0YXJcIjsgXCJUYWJcIjsgXCJUaWxkZVwiOyBcIlVuZGVyc2NvcmVcIl07XG4gICAgICAgICBwcmludF9zdHJpbmcgXCJ8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXFxufCBbXSAtPiBMaXN0LnJldiBhY2N1XFxuXCI7ICopXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMgMDo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgbjo6QW1wZXJzYW5kOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZDo6QW1wZXJzYW5kcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMobisxKTo6dGwpXG4gICAgICB8IEFtcGVyc2FuZHMgYTo6QW1wZXJzYW5kcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBbXBlcnNhbmQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEFtcGVyc2FuZHMoYStiKzIpOjp0bClcbiAgICAgIHwgQXQ6OkF0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzIDA6OnRsKVxuICAgICAgfCBBdHMgbjo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMobisxKTo6dGwpXG4gICAgICB8IEF0OjpBdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXRzIGE6OkF0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKGErYisyKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMgMDo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgbjo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6QmFja3F1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMobisxKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZXMgYTo6QmFja3F1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2txdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyAwOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBuOjpCYWNrc2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrc2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyBhOjpCYWNrc2xhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2tzbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3NsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBCYXI6OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzIDA6OnRsKVxuICAgICAgfCBCYXJzIG46OkJhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXI6OkJhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKG4rMSk6OnRsKVxuICAgICAgfCBCYXJzIGE6OkJhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYXJzKGErYisyKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyAwOjp0bClcbiAgICAgIHwgQ2FyZXRzIG46OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYXJldDo6Q2FyZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0cyBhOjpDYXJldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzIDA6OnRsKVxuICAgICAgfCBDYnJhY2VzIG46OkNicmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2U6OkNicmFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2VzIGE6OkNicmFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyAwOjp0bClcbiAgICAgIHwgQ29sb25zIG46OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBDb2xvbjo6Q29sb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9ucyBhOjpDb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWE6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMgMDo6dGwpXG4gICAgICB8IENvbW1hcyBuOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhuKzEpOjp0bClcbiAgICAgIHwgQ29tbWE6OkNvbW1hcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYXMgYTo6Q29tbWFzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBuOjpDcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzOjpDcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyBhOjpDcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENwYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IENicmFja2V0cyBuOjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXQ6OkNicmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgYTo6Q2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyAwOjp0bClcbiAgICAgIHwgRG9sbGFycyBuOjpEb2xsYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFyOjpEb2xsYXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhuKzEpOjp0bClcbiAgICAgIHwgRG9sbGFycyBhOjpEb2xsYXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvbGxhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG9sbGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBEb3Q6OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzIDA6OnRsKVxuICAgICAgfCBEb3RzIG46OkRvdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3Q6OkRvdHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKG4rMSk6OnRsKVxuICAgICAgfCBEb3RzIGE6OkRvdHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG90IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3RzKGErYisyKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyAwOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIG46OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZTo6RG91YmxlcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyBhOjpEb3VibGVxdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMgMDo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBuOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb246OkV4Y2xhbWF0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbnMgYTo6RXhjbGFtYXRpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFsOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzIDA6OnRsKVxuICAgICAgfCBFcXVhbHMgbjo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMobisxKTo6dGwpXG4gICAgICB8IEVxdWFsOjpFcXVhbHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWxzIGE6OkVxdWFscyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKGErYisyKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyAwOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIG46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbjo6R3JlYXRlcnRoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyBhOjpHcmVhdGVydGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBIYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyAwOjp0bClcbiAgICAgIHwgSGFzaHMgbjo6SGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBIYXNocyBhOjpIYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMgMDo6dGwpXG4gICAgICB8IExlc3N0aGFucyBuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgTGVzc3RoYW46Okxlc3N0aGFucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgYTo6TGVzc3RoYW5zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMoYStiKzIpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzIDA6OnRsKVxuICAgICAgfCBNaW51c3Mgbjo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MobisxKTo6dGwpXG4gICAgICB8IE1pbnVzOjpNaW51c3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXNzIGE6Ok1pbnVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKGErYisyKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzIDA6OnRsKVxuICAgICAgfCBOZXdsaW5lcyBuOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMobisxKTo6dGwpXG4gICAgICB8IE5ld2xpbmVzIGE6Ok5ld2xpbmVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMgMDo6dGwpXG4gICAgICB8IE9icmFjZXMgbjo6T2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZTo6T2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMobisxKTo6dGwpXG4gICAgICB8IE9icmFjZXMgYTo6T2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyAwOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBuOjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzOjpPcGFyZW50aGVzaXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhuKzEpOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyBhOjpPcGFyZW50aGVzaXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9wYXJlbnRoZXNpcyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT3BhcmVudGhlc2lzcyhhK2IrMik6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMgMDo6dGwpXG4gICAgICB8IE9icmFja2V0cyBuOjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNrZXQ6Ok9icmFja2V0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgYTo6T2JyYWNrZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGVyY2VudDo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMgMDo6dGwpXG4gICAgICB8IFBlcmNlbnRzIG46OlBlcmNlbnQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhuKzEpOjp0bClcbiAgICAgIHwgUGVyY2VudHMgYTo6UGVyY2VudHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMoYStiKzIpOjp0bClcbiAgICAgIHwgUGx1czo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MgMDo6dGwpXG4gICAgICB8IFBsdXNzIG46OlBsdXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhuKzEpOjp0bClcbiAgICAgIHwgUGx1c3MgYTo6UGx1c3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MoYStiKzIpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zIDA6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMobisxKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9uOjpRdWVzdGlvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb25zIGE6OlF1ZXN0aW9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKGErYisyKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyAwOjp0bClcbiAgICAgIHwgUXVvdGVzIG46OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBRdW90ZTo6UXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlcyBhOjpRdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zIDA6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIG46OlNlbWljb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb246OlNlbWljb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBTZW1pY29sb25zIGE6OlNlbWljb2xvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2VtaWNvbG9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTZW1pY29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyAwOjp0bClcbiAgICAgIHwgU2xhc2hzIG46OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBTbGFzaDo6U2xhc2hzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNocyBhOjpTbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhhK2IrMik6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMgMDo6dGwpXG4gICAgICB8IFNwYWNlcyBuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgU3BhY2U6OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZXMgYTo6U3BhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgU3Rhcjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMgMDo6dGwpXG4gICAgICB8IFN0YXJzIG46OlN0YXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhuKzEpOjp0bClcbiAgICAgIHwgU3RhcnMgYTo6U3RhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgVGFiOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyAwOjp0bClcbiAgICAgIHwgVGFicyBuOjpUYWI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFiOjpUYWJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhuKzEpOjp0bClcbiAgICAgIHwgVGFicyBhOjpUYWJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRhYiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGFicyhhK2IrMik6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMgMDo6dGwpXG4gICAgICB8IFRpbGRlcyBuOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhuKzEpOjp0bClcbiAgICAgIHwgVGlsZGU6OlRpbGRlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZXMgYTo6VGlsZGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMoYStiKzIpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMgMDo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmVzIG46OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhuKzEpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgYTo6VW5kZXJzY29yZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMoYStiKzIpOjp0bCl8IHg6OnRsIC0+IGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGFjY3VcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG5cbiAgKCogUmVtb3ZlIGFsbCBbTkxdIGFuZCBbQnJdIGF0IHRoZSBiZWdpbm5pbmcuICopXG4gIGxldCByZWMgcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChOTCB8IEJyKSA6OiB0bCAtPiByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bFxuICAgIHwgbCAtPiBsXG5cblxuICAoKiogLSByZWNvZ25pemVzIHBhcmFncmFwaHNcbiAgICAgIC0gZ2x1ZXMgZm9sbG93aW5nIGJsb2NrcXVvdGVzICAqKVxuICBsZXQgbWFrZV9wYXJhZ3JhcGhzIG1kID1cbiAgICBsZXQgcmVjIGxvb3AgY3AgYWNjdSA9IGZ1bmN0aW9uICgqIGNwIG1lYW5zIGN1cnJlbnQgcGFyYWdyYXBoICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGFjY3VcbiAgICAgICAgICB8IChOTHxCcik6OmNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgICB8IGNwIC0+IFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3VcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgfCBCbG9ja3F1b3RlIGIxIDo6IEJsb2NrcXVvdGUgYjIgOjogdGwgLT5cbiAgICAgICAgbG9vcCBjcCBhY2N1IChCbG9ja3F1b3RlKGIxQGIyKTo6IHRsKVxuICAgICAgfCBCbG9ja3F1b3RlIGIgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBCbG9ja3F1b3RlKGxvb3AgW10gW10gYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoVWxwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gVWxwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoT2xwIGIpIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gT2xwKExpc3QubWFwIChmdW4gbGkgLT4gbG9vcCBbXSBbXSBsaSkgYikgaW5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBIdG1sX2NvbW1lbnQgXyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIC0+IGxvb3AgW10gKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKGU6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgKGU6OmNwKSBhY2N1IHRsKVxuICAgICAgfCAoUmF3X2Jsb2NrIF8gfCBIdG1sX2Jsb2NrIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjpjcEBhY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCAoQ29kZV9ibG9jayBfIHwgSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfXG4gICAgICAgIHwgT2wgXyB8IFVsIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBfIC0+IGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgfCBUZXh0IFwiXFxuXCIgOjogXyB8IFBhcmFncmFwaCBfIDo6IF8gLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJPbWRfcGFyc2VyLm1ha2VfcGFyYWdyYXBoc1wiXG4gICAgICB8IChOTHxCcikgOjogKE5MfEJyKSA6OiB0bCAtPlxuICAgICAgICBsZXQgdGwgPSByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyB0bCBpblxuICAgICAgICBiZWdpbiBtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgW10gKE5MOjpOTDo6YWNjdSkgdGxcbiAgICAgICAgICB8IF8gLT4gbG9vcCBbXSAoUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IFgoeCkgYXMgZSA6OiB0bCAtPlxuICAgICAgICAoKiBJZiB0aGUgZXh0ZW5zaW9uIHJldHVybnMgYSBibG9jayBhcyBmaXJzdCBlbGVtZW50LFxuICAgICAgICAgICB0aGVuIGNvbnNpZGVyIHRoZSBleHRlbnNpb24gYXMgYSBibG9jay4gSG93ZXZlclxuICAgICAgICAgICBkb24ndCB0YWtlIGl0cyBjb250ZW50cyBhcyBpdCBpcyB5ZXQsIHRoZSBjb250ZW50c1xuICAgICAgICAgICBvZiB0aGUgZXh0ZW5zaW9uIHNoYWxsIGJlIGNvbnNpZGVyZWQgZmluYWwgYXMgbGF0ZVxuICAgICAgICAgICBhcyBwb3NzaWJsZS4gKilcbiAgICAgICAgYmVnaW4gbWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgICB8IFNvbWUodCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCAoIEgxIF9cbiAgICAgICAgICAgICAgfCBIMiBfXG4gICAgICAgICAgICAgIHwgSDMgX1xuICAgICAgICAgICAgICB8IEg0IF9cbiAgICAgICAgICAgICAgfCBINSAgX1xuICAgICAgICAgICAgICB8IEg2ICBfXG4gICAgICAgICAgICAgIHwgUGFyYWdyYXBoICBfXG4gICAgICAgICAgICAgIHwgVWwgX1xuICAgICAgICAgICAgICB8IE9sIF9cbiAgICAgICAgICAgICAgfCBVbHAgX1xuICAgICAgICAgICAgICB8IE9scCBfXG4gICAgICAgICAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICAgICAgICAgIHwgSHJcbiAgICAgICAgICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgICAgICAgICB8IEJsb2NrcXVvdGUgX1xuICAgICAgICAgICAgICApIDo6IF9cbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPlxuICAgICAgICAgICAgICAgICBsb29wIGNwIChlOjphY2N1KSB0bFxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgW10gKGU6OlBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgICAgIGVuZFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV93aGl0ZV9jcnVtYnMgbCA9XG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgVGV4dCBcIiBcIiA6OiB0bFxuICAgICAgICB8IE5MOjp0bFxuICAgICAgICB8IEJyOjp0bFxuICAgICAgICAgIC0+XG4gICAgICAgICAgbG9vcCB0bFxuICAgICAgICB8IGwgLT4gbFxuICAgICAgaW5cbiAgICAgIExpc3QucmV2IChsb29wIChMaXN0LnJldiBsKSlcbiAgICBpblxuICAgIGxldCByZWMgY2xlYW5fcGFyYWdyYXBocyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzXFxuXCI7XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBbXVxuICAgICAgfCBQYXJhZ3JhcGhbXTo6dGwgLT4gdGxcbiAgICAgIHwgUGFyYWdyYXBoKHApIDo6IHRsIC0+XG4gICAgICAgIFBhcmFncmFwaChjbGVhbl9wYXJhZ3JhcGhzXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVfaW5pdGlhbF9uZXdsaW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlX3doaXRlX2NydW1icyhub3JtYWxpc2VfbWQgcCkpKSlcbiAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMSB2IDo6IHRsIC0+IEgxKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgyIHYgOjogdGwgLT4gSDIoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDMgdiA6OiB0bCAtPiBIMyhjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINCB2IDo6IHRsIC0+IEg0KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg1IHYgOjogdGwgLT4gSDUoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDYgdiA6OiB0bCAtPiBINihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBFbXBoIHYgOjogdGwgLT4gRW1waChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJvbGQgdiA6OiB0bCAtPiBCb2xkKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWwgdiA6OiB0bCAtPiBVbChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbCB2IDo6IHRsIC0+IE9sKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVscCB2IDo6IHRsIC0+IFVscChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgT2xwIHYgOjogdGwgLT4gT2xwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBCbG9ja3F1b3RlIHYgOjogdGwgLT4gQmxvY2txdW90ZShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVybChocmVmLHYsdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLChjbGVhbl9wYXJhZ3JhcGhzIHYpLHRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFRleHQgX1xuICAgICAgfCBDb2RlIF9cbiAgICAgIHwgQ29kZV9ibG9jayBfXG4gICAgICB8IEJyXG4gICAgICB8IEhyXG4gICAgICB8IE5MXG4gICAgICB8IFJlZiBfXG4gICAgICB8IEltZ19yZWYgX1xuICAgICAgfCBSYXcgX1xuICAgICAgfCBSYXdfYmxvY2sgX1xuICAgICAgfCBIdG1sIF9cbiAgICAgIHwgSHRtbF9ibG9jayBfXG4gICAgICB8IEh0bWxfY29tbWVudCBfXG4gICAgICB8IEltZyBfXG4gICAgICB8IFggXyBhcyB2IDo6IHRsIC0+IHYgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgIGluXG4gICAgbGV0IHIgPSBjbGVhbl9wYXJhZ3JhcGhzKGxvb3AgW10gW10gbWQpXG4gICAgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBjbGVhbl9wYXJhZ3JhcGhzICVTIC0tPiAlU1xcbiUhXCJcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIG1kKVxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgcik7XG4gICAgclxuXG5cbiAgKCoqIFthc3NlcnRfd2VsbF9mb3JtZWRdIGlzIGEgZGV2ZWxvcGVyJ3MgZnVuY3Rpb24gdGhhdCBoZWxwcyB0b1xuICAgICAgdHJhY2sgYmFkbHkgY29uc3RydWN0ZWQgdG9rZW4gbGlzdHMuICBUaGlzIGZ1bmN0aW9uIGhhcyBhblxuICAgICAgZWZmZWN0IG9ubHkgaWYgW3RyYWNrZml4XSBpcyBbdHJ1ZV0uICAqKVxuICBsZXQgYXNzZXJ0X3dlbGxfZm9ybWVkIChsOnRvayBsaXN0KSA6IHVuaXQgPVxuICAgIGlmIHRyYWNrZml4IHRoZW5cbiAgICAgIGxldCByZWMgZXF1aXYgbDEgbDIgPSBtYXRjaCBsMSwgbDIgd2l0aFxuICAgICAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgICAgIHwgVGFnIF86OnRsMSwgVGFnIF86OnRsMi0+IGVxdWl2IHRsMSB0bDJcbiAgICAgICAgfCBlMTo6dGwxLCBlMjo6dGwyIC0+IGUxID0gZTIgJiYgZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBhc3NlcnQoZXF1aXYgKGZpeCBsKSBsKTtcbiAgICAgICgpXG5cbiAgKCoqIEdlbmVyYXRlIGZhbGxiYWNrIGZvciByZWZlcmVuY2VzLiAqKVxuICBsZXQgZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmV4dHJhY3RfZmFsbGJhY2tcXG4lIVwiO1xuICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgICAgfCBlOjp0bCBhcyByIC0+XG4gICAgICAgIGlmIHIgPT0gcmVtYWlucyB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggZSwgcmVtYWlucyB3aXRoXG4gICAgICAgICAgfCBDYnJhY2tldHMgMCwgQ2JyYWNrZXQ6OnIgd2hlbiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBDYnJhY2tldHMgbiwgQ2JyYWNrZXRzIG06OnIgd2hlbiBtICsgMSA9IG4gJiYgdGwgPSByIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IFdvcmQgXCJdXCIgOjogYWNjdSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIGxldCBhID0gbG9vcCBbXSBsIGluXG4gICAgb2JqZWN0XG4gICAgICBtZXRob2QgdG9fc3RyaW5nID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFcbiAgICAgIG1ldGhvZCB0b190ID0gW1RleHQoTC5zdHJpbmdfb2ZfdG9rZW5zIGEpXVxuICAgIGVuZFxuXG5cbiAgbGV0IHVuaW5kZW50X3JldiBuIGxleGVtZXMgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIENBTEw6IE9tZF9wYXJzZXIudW5pbmRlbnRfcmV2XFxuJSFcIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBjbCA9IGZ1bmN0aW9uXG4gICAgICB8IE5ld2xpbmVzIHg6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmVzIHk6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoeCt5KzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygxK3gpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcygwKTo6dGwpXG5cbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6KFxuICAgICAgICAgIChOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICB8ICgoU3RhcnxQbHVzfE1pbnVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6XylcbiAgICAgICAgICBhcyB0bCkgYXMgbCAtPlxuICAgICAgICBpZiBuID0gTC5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgbG9vcCAobmw6OmNsQGFjY3UpIFtdIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgMCBhcyBubCk6OihTcGFjZXxTcGFjZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgbGV0IHggPSBMLmxlbmd0aCBzIC0gbiBpblxuICAgICAgICBsb29wIChubDo6Y2xAYWNjdSlcbiAgICAgICAgICAoaWYgeCA+IDAgdGhlbiBbTC5tYWtlX3NwYWNlIHhdIGVsc2UgW10pXG4gICAgICAgICAgdGxcbiAgICAgIHwgTmV3bGluZXMoXyk6Ol8gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgTmV3bGluZTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgKGU6OmNsKSB0bFxuICAgICAgfCBbXSBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgIGluXG4gICAgbWF0Y2ggbG9vcCBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICB8IFtdLCByaWdodCAtPiBbXSwgcmlnaHRcbiAgICB8IGwsIHJpZ2h0IC0+XG4gICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgIGwsIHJpZ2h0XG5cbiAgbGV0IHVuaW5kZW50IG4gbGV4ZW1lcyA9XG4gICAgbGV0IGZzdCwgc25kID0gdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyBpblxuICAgIExpc3QucmV2IGZzdCwgc25kXG5cbiAgbGV0IHJlYyBpc19ibGFuayA9IGZ1bmN0aW9uXG4gICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUgfCBOZXdsaW5lcyBfKSA6OiB0bCAtPlxuICAgICAgaXNfYmxhbmsgdGxcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgc2VtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3RhcnMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLFN0YXJzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpTdGFyOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFN0YXJzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFN0YXJ8U3RhcnMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG4gIGxldCBzbV91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cblxuICBsZXQgZ2hfdWVtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6KFdvcmQgX3xOdW1iZXIgXyBhcyB3KTo6IHRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3c7c10sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCB1ZW1waF9vcl9ib2xkIG4gbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGlmIGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgdGhlblxuICAgICAgZ2hfdWVtcGhfb3JfYm9sZCBuIGxcbiAgICBlbHNlXG4gICAgICBzbV91ZW1waF9vcl9ib2xkIG4gbFxuXG4gIGxldCBlYXRfYmxhbmsgPVxuICAgIGVhdCAoZnVuY3Rpb24gfFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXyAtPiB0cnVlfCBfIC0+IGZhbHNlKVxuXG5cbiAgKCogdXNlZCBieSB0YWdfX21heWJlX2gxIGFuZCB0YWdfX21heWJlX2gyICopXG4gIGxldCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIChsOmwpIDogKE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdCAqIGwpIG9wdGlvbiA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gciBsID1cbiAgICAgICgqIElmIHRoZXJlJ3MgYSBiYWxhbmNlZCAoY29tcGxldGUpIGJhY2txdW90ZS1zdGFydGVkIGNvZGUgYmxvY2tcbiAgICAgICAgIHRoZW4gaXQgc2hvdWxkIGJlIFwiaWdub3JlZFwiLCBlbHNlIGl0IG1lYW5zIHRoZSBsaW5lIHRoYXRcbiAgICAgICAgIGZvbGxvd3MgaXMgcGFydCBvZiBhIGNvZGUgYmxvY2ssIHNvIGl0J3Mgbm90IGRlZmluaW5nIGFcbiAgICAgICAgIHNldGV4dC1zdHlsZSB0aXRsZS4gKilcbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIGRldGVjdF9iYWxhbmNlZF9icXMgbj0lZCByPSVTIGw9JVNcXG4lIVwiXG4gICAgICAgICAgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIHIpIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBOb25lXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIHg6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlIGFzIGIpOjp0bCB3aGVuIG4gPSAxIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgKEJhY2txdW90ZXMgeCBhcyBiKTo6dGwgd2hlbiBuID0geCsyIC0+XG4gICAgICAgIFNvbWUoTGlzdC5yZXYgKGI6OnIpLCB0bClcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChlOjpyKSB0bFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBpZiByID0gW10gdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUoTGlzdC5yZXYgciwgW10pXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGU6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgMDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgMSBbXSB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKGJsLHRsKSAtPiBsb29wIChibEByKSB0bFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgICAgfCBCYWNrcXVvdGVzKHgpOjp0bCAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBkZXRlY3RfYmFsYW5jZWRfYnFzICh4KzIpIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IE5ld2xpbmU6OihFcXVhbHxFcXVhbHMgX3xNaW51c3xNaW51c3MgXyk6OnRsIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCB0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnNldGV4dF90aXRsZSBpcyB3cm9uZ2x5IHVzZWQhXFxuJSFcIjtcbiAgICAgICAgTm9uZVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpyKSB0bFxuICAgIGluXG4gICAgaWYgbWF0Y2ggbCB3aXRoXG4gICAgICB8IExlc3N0aGFuOjpXb3JkIF86Ol8gLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWFpbl9sb29wIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgKEh0bWxfYmxvY2sgXyB8IENvZGVfYmxvY2sgXyB8IFJhd19ibG9jayBfKTo6XyAtPlxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHJlc3VsdCA9IGxvb3AgW10gbCBpblxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgc2V0ZXh0X3RpdGxlIGw9JVMgcmVzdWx0PSVTLCVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgeClcbiAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lICh4LHRsKSAtPiBMLnN0cmluZ19vZl90b2tlbnMgdGwpO1xuICAgICAgcmVzdWx0XG5cbiAgbGV0IHRhZ19fbWF5YmVfaDEgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gxXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgxKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDEgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWF5YmVfaDIgKG1haW5fbG9vcDptYWluX2xvb3ApID1cbiAgICBUYWcoXCJ0YWdfX21heWJlX2gyXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID1cbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHNldGV4dF90aXRsZSBtYWluX2xvb3AgbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lKHRpdGxlLCB0bCkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IEgyKG1haW5fbG9vcCBbXSBbXSB0aXRsZSkgaW5cbiAgICAgICAgICAgICAgICAgIFNvbWUoKHRpdGxlOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiBPbWRfcGFyc2VyLnRhZ19fbWF5YmVfaDIgaXMgd3JvbmdseSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgKHA9JVMpIVxcblwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHApO1xuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICApXG5cbiAgbGV0IHRhZ19fbWQgbWQgPSAoKiBbbWRdIHNob3VsZCBiZSBpbiByZXZlcnNlICopXG4gICAgVGFnKFwidGFnX19tZFwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9IFNvbWUobWRAciwgW10sIGwpXG4gICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgZW5kXG4gICAgICAgKVxuXG4gICgqIExldCdzIHRhZyB0aGUgbGluZXMgdGhhdCAqbWlnaHQqIGJlIHRpdGxlcyB1c2luZyBzZXRleHQtc3R5bGUuXG4gICAgIFwibWlnaHRcIiBiZWNhdXNlIGlmIHRoZXkgYXJlLCBmb3IgaW5zdGFuY2UsIGluIGEgY29kZSBzZWN0aW9uLFxuICAgICB0aGVuIHRoZXkgYXJlIG5vdCB0aXRsZXMgYXQgYWxsLiAqKVxuICBsZXQgdGFnX3NldGV4dCBtYWluX2xvb3AgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIHBsIHJlcyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX10gLT5cbiAgICAgICAgcGxAcmVzXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KEVxdWFsfEVxdWFscyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMS4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffEVxdWFsfEVxdWFscyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMSBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIGFzIGUxKTo6KE1pbnVzfE1pbnVzcyBfIGFzIGUyKTo6dGwgLT4gKCogbWlnaHQgYmUgYSBIMi4gKilcbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0X3JldlxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pXG4gICAgICAgICAgICAgICAgICB8IF86Ol8gYXMgbCAtPiBTcGxpdChbXSwgbCkpXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShybGVmdCwgKChbXXwoTmV3bGluZXxOZXdsaW5lcyBfKTo6XykgYXMgcmlnaHQpKSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAdGFnX19tYXliZV9oMiBtYWluX2xvb3A6OnJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHJlcykpIHJpZ2h0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsb29wIFtdIChlMjo6ZTE6OnBsQHJlcykgW11cbiAgICAgICAgZW5kXG4gICAgICB8IChOZXdsaW5lIHwgTmV3bGluZXMgXyBhcyBlMSk6OnRsIC0+XG4gICAgICAgIGxvb3AgW10gKGUxOjpwbEByZXMpIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnBsKSByZXMgdGxcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIFtdIFtdIGxleGVtZXMpXG5cblxuICBsZXQgaHJfbSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgbiA9IGZ1bmN0aW9uXG4gICAgICB8ICgoTmV3bGluZXMgX3xOZXdsaW5lKTo6dGwpIHwgKFtdIGFzIHRsKSAtPlxuICAgICAgICBpZiBuID49IDMgdGhlbiBTb21lIHRsIGVsc2UgTm9uZVxuICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBsb29wIG4gdGxcbiAgICAgIHwgTWludXM6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgTWludXNzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBocl9zIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBTdGFyOjp0bCAtPlxuICAgICAgICBsb29wIChuKzEpIHRsXG4gICAgICB8IFN0YXJzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKHgrMituKSB0bFxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICBpbiBsb29wIDAgbFxuXG4gIGxldCBociBsID1cbiAgICBtYXRjaCBocl9tIGwgd2l0aFxuICAgIHwgTm9uZSAtPiBocl9zIGxcbiAgICB8IFNvbWUgXyBhcyB0bCAtPiB0bFxuXG4gICgqKiBbYmNvZGVdIHBhcnNlcyBjb2RlIHRoYXQncyBkZWxpbWl0ZWQgYnkgYmFja3F1b3RlKHMpICopXG4gIGxldCBiY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgZSwgdGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCAtPiBlLCB0bFxuICAgICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5iY29kZSBpcyB3cm9uZ2x5IGNhbGxlZFwiXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvZGVfYmxvY2sgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBpZiBlID0gQmFja3F1b3RlIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoQmFja3F1b3RlOjphY2N1KSB0bFxuICAgICAgfCAoQmFja3F1b3RlcyBuIGFzIGIpOjp0bCAtPlxuICAgICAgICBpZiBlID0gYiB0aGVuXG4gICAgICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjphY2N1IC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfYmxvY2sgKGI6OmFjY3UpIHRsXG4gICAgICB8IFRhZyhfLCBfKTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayBhY2N1IHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGNvZGVfYmxvY2sgKGU6OmFjY3UpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBjb2RlX2Jsb2NrIFtdIHRsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShjYiwgbCkgLT5cbiAgICAgIGlmIExpc3QuZXhpc3RzIChmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBfKSAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgY2JcbiAgICAgICYmIChtYXRjaCBwIHdpdGggW118W05ld2xpbmV8TmV3bGluZXMgX10gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiAobWF0Y2ggZSB3aXRoIEJhY2txdW90ZXMgbiB3aGVuIG4gPiAwIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgdGhlblxuICAgICAgICBtYXRjaCBjYiB3aXRoXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgMCA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMoTmV3bGluZTo6dGwpIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmVzIG4gOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZXMgbiA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIChOZXdsaW5lcyhuLTEpOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGNiIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjbGVhbl9iY29kZSBzID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AxIGkgPVxuICAgICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMShpKzEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AyIGkgPVxuICAgICAgICAgICAgaWYgaSA9IC0xIHRoZW4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAgICAgfCAnICcgLT4gbG9vcDIoaS0xKVxuICAgICAgICAgICAgICB8IF8gLT4gaSsxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBsb29wMSAwLCBsb29wMiAoU3RyaW5nLmxlbmd0aCBzIC0gMSkgd2l0aFxuICAgICAgICAgIHwgMCwgbiB3aGVuIG4gPSBTdHJpbmcubGVuZ3RoIHMgLSAxIC0+IHNcbiAgICAgICAgICB8IGksIG4gLT4gU3RyaW5nLnN1YiBzIGkgKG4taSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGYgXCIoT01EKSBjbGVhbl9iY29kZSAlUyA9PiAlU1xcbiUhXCIgY29kZSAoY2xlYW5fYmNvZGUgY29kZSk7XG4gICAgICAgIFNvbWUoQ29kZShkZWZhdWx0X2xhbmcsIGNsZWFuX2Jjb2RlIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuXG5cbiAgZXhjZXB0aW9uIE5MX2V4Y2VwdGlvblxuICBleGNlcHRpb24gUHJlbWF0dXJlX2VuZGluZ1xuXG4gICgqICEhRE8gTk9UIERFTEVURSBUSElTISFcbiAgICAgVGhlIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgdGhlIGdlbmVyYXRlZCBwYXJ0IHRoYXQgZm9sbG93cyByaWdodCBhZnRlci5cbiAgICAgTGlzdC5pdGVyIChmdW4gKGEsYixjKSAtPlxuICAgICBwcmludF9lbmRsaW5lIChcImxldCByZWFkX3VudGlsX1wiXmFeXCIgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5iXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5iXlwiOjphY2N1KSBuIChcIl5iXlwiOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcIlxuICAgICAgXihpZiBjPD5cIlwiIHRoZW4gXCJcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwiIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChcIl5jXlwicyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChcIl5jXlwiOjphY2N1KSBuIChcIl5jXlwiOjp0bClcbiAgICAgIHwgXCJeY15cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IFwiXmNeXCJzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgIFwiIGVsc2UgXCJcIileXG4gICAgIFwiICAgIHwgXCJeYl5cIiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgXCJeYl5cInMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cIjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIChuLTEpIChcIl5iXlwiOjp0bClcbiAgICAgIHwgXCJeYl5cInMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgXCJeYl5cInMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFwiXmJeXCI6OmFjY3UgLT4gXCJeYl5cInMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFwiXmJeXCJzIHg6OmFjY3UgLT4gXCJeYl5cInMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBcIl5iXlwiOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChcIl5iXlwicyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFxcXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfXCJeYV5cIiAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcXFxuJSFcXFwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblwiKSlcblxuICAgICBbIFwiZ3RcIiwgXCJHcmVhdGVydGhhblwiLCBcIkxlc3N0aGFuXCI7XG4gICAgIFwibHRcIiwgXCJMZXNzdGhhblwiLCBcIlwiO1xuICAgICBcImNwYXJlbnRoXCIsIFwiQ3BhcmVudGhlc2lzXCIsIFwiT3BhcmVudGhlc2lzXCI7XG4gICAgIFwib3BhcmVudGhcIiwgXCJPcGFyZW50aGVzaXNcIiwgXCJcIjtcbiAgICAgXCJkcVwiLCBcIkRvdWJsZXF1b3RlXCIsIFwiXCI7XG4gICAgIFwicVwiLCBcIlF1b3RlXCIsIFwiXCI7XG4gICAgIFwib2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiLCBcIlwiO1xuICAgICBcImNicmFja2V0XCIsIFwiQ2JyYWNrZXRcIiwgXCJPYnJhY2tldFwiO1xuICAgICBcInNwYWNlXCIsIFwiU3BhY2VcIiwgXCJcIjtcbiAgICAgXVxuICAqKVxuXG4gICgqIGJlZ2luIGdlbmVyYXRlZCBwYXJ0ICopXG5cbmxldCByZWFkX3VudGlsX2d0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChHcmVhdGVydGhhbjo6YWNjdSkgbiAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBMZXNzdGhhbnMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgR3JlYXRlcnRoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSAobi0xKSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgR3JlYXRlcnRoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6YWNjdSAtPiBHcmVhdGVydGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyB4OjphY2N1IC0+IEdyZWF0ZXJ0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IEdyZWF0ZXJ0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2d0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfbHQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSBuIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgTGVzc3RoYW4gYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IExlc3N0aGFucyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbjo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSAobi0xKSAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgTGVzc3RoYW5zKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBMZXNzdGhhbjo6YWNjdSAtPiBMZXNzdGhhbnMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IExlc3N0aGFucyB4OjphY2N1IC0+IExlc3N0aGFucyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IExlc3N0aGFuOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChMZXNzdGhhbnMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2x0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSBuIChDcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIG4gKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgQ3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDcGFyZW50aGVzaXNzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENwYXJlbnRoZXNpczo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKENwYXJlbnRoZXNpczo6YWNjdSkgKG4tMSkgKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3MgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzOjphY2N1IC0+IENwYXJlbnRoZXNpc3MoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IENwYXJlbnRoZXNpc3MgeDo6YWNjdSAtPiBDcGFyZW50aGVzaXNzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ3BhcmVudGhlc2lzOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChDcGFyZW50aGVzaXNzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jcGFyZW50aCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX29wYXJlbnRoID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OmFjY3UgLT4gT3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IE9wYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBPcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9wYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29wYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfZHEgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoRG91YmxlcXVvdGVzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSBuIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgRG91YmxlcXVvdGUgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKERvdWJsZXF1b3RlOjphY2N1KSAobi0xKSAoRG91YmxlcXVvdGU6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgRG91YmxlcXVvdGVzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6YWNjdSAtPiBEb3VibGVxdW90ZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyB4OjphY2N1IC0+IERvdWJsZXF1b3Rlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IERvdWJsZXF1b3RlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChEb3VibGVxdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2RxICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChRdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIG4gKFF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBRdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgUXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoUXVvdGU6OmFjY3UpIChuLTEpIChRdW90ZTo6dGwpXG4gICAgICB8IFF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBRdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFF1b3RlOjphY2N1IC0+IFF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgUXVvdGVzIHg6OmFjY3UgLT4gUXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gUXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3EgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgT2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IE9icmFja2V0cyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldDo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSAobi0xKSAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT2JyYWNrZXRzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBPYnJhY2tldDo6YWNjdSAtPiBPYnJhY2tldHMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IE9icmFja2V0cyB4OjphY2N1IC0+IE9icmFja2V0cyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9icmFja2V0OjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChPYnJhY2tldHMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29icmFja2V0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfY2JyYWNrZXQgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKENicmFja2V0OjphY2N1KSBuIChDYnJhY2tldDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgbiAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IE9icmFja2V0cyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgQ2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIChuLTEpIChDYnJhY2tldDo6dGwpXG4gICAgICB8IENicmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IENicmFja2V0OjphY2N1IC0+IENicmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ2JyYWNrZXRzIHg6OmFjY3UgLT4gQ2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gQ2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENicmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9zcGFjZSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChTcGFjZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIG4gKFNwYWNlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBTcGFjZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgU3BhY2VzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoU3BhY2U6OmFjY3UpIChuLTEpIChTcGFjZTo6dGwpXG4gICAgICB8IFNwYWNlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBTcGFjZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IFNwYWNlOjphY2N1IC0+IFNwYWNlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgU3BhY2VzIHg6OmFjY3UgLT4gU3BhY2VzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gU3BhY2U6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFNwYWNlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfc3BhY2UgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuICAoKiAvZW5kIGdlbmVyYXRlZCBwYXJ0ICopXG5cbiAgbGV0IHJlYWRfdW50aWxfbmV3bGluZSBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICgoQmFja3NsYXNoIGFzIGEpKSA6OiAoKE5ld2xpbmUgYXMgYikpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGIgOjogYSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmUgOjogQmFja3NsYXNoIDo6IGFjY3UpIG4gKE5ld2xpbmUgOjogdGwpXG4gICAgICB8ICgoQmFja3NsYXNocyAwIGFzIGUpKSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgKChCYWNrc2xhc2hzIHggYXMgZSkpIDo6IHRsIC0+XG4gICAgICAgIGlmICh4IG1vZCAyKSA9IDBcbiAgICAgICAgdGhlbiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgICAgZWxzZSBsb29wICgoQmFja3NsYXNocyAoeCAtIDEpKSA6OiBhY2N1KSBuIChCYWNrc2xhc2ggOjogdGwpXG4gICAgICB8ICgoTmV3bGluZSBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiAoKExpc3QucmV2IGFjY3UpLCB0bCkgZWxzZSBsb29wIChlIDo6IGFjY3UpIChuIC0gMSkgdGxcbiAgICAgIHwgTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuICgoTGlzdC5yZXYgYWNjdSksIChOZXdsaW5lIDo6IHRsKSlcbiAgICAgICAgZWxzZSBsb29wIChOZXdsaW5lIDo6IGFjY3UpIChuIC0gMSkgKE5ld2xpbmUgOjogdGwpXG4gICAgICB8IE5ld2xpbmVzIG4gOjogdGwgLT4gKChMaXN0LnJldiBhY2N1KSwgKChOZXdsaW5lcyAobiAtIDEpKSA6OiB0bCkpXG4gICAgICB8IGUgOjogdGwgLT4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICBpbiBsb29wIFtdIDAgbFxuXG4gICgqIEgxLCBIMiwgSDMsIC4uLiAqKVxuICBsZXQgcmVhZF90aXRsZSAobWFpbl9sb29wOm1haW5fbG9vcCkgbiByIF9wcmV2aW91cyBsZXhlbWVzID1cbiAgICBsZXQgdGl0bGUsIHJlc3QgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaDo6dGwgLT5cbiAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaDo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobi0xKTo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2g6Okhhc2hzKGgpOjp0bCAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNoOjphY2N1KVxuICAgICAgICAgICAgICAgICgoaWYgaCA9IDAgdGhlbiBIYXNoIGVsc2UgSGFzaHMoaC0xKSk6OnRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2hzKGgpOjpCYWNrc2xhc2g6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgQmFja3NsYXNocyhuKTo6SGFzaHMoaCk6OnRsIHdoZW4gbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICAgICAgICB8IFtdXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfE5ld2xpbmVzIF8pOjpfXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaHMobik6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaHMobik6OmFjY3UpIHRsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgKEhhc2h8SGFzaHMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFtdIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKEhhc2h8SGFzaHMgXykgOjogKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChbXSBhcyBsKSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIGxcbiAgICAgICAgfCBbSGFzaHxIYXNocyBfXVxuICAgICAgICB8IFsoU3BhY2V8U3BhY2VzIF8pOyBIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IChIYXNofEhhc2hzIF8pOyAoU3BhY2V8U3BhY2VzIF8pXSAtPlxuICAgICAgICAgIG1haW5fbG9vcCBbXSBbXSAoTGlzdC5yZXYgYWNjdSksIFtdXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICBsb29wICh4OjphY2N1KSB0bFxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gbGV4ZW1lc1xuICAgIGluXG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCAxIC0+IFNvbWUoSDEgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMiAtPiBTb21lKEgyIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDMgLT4gU29tZShIMyB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA0IC0+IFNvbWUoSDQgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNSAtPiBTb21lKEg1IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDYgLT4gU29tZShINiB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwIGwgPVxuICAgIG1hdGNoIGV4dGVuc2lvbnMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgXyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gZiNwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsKVxuICAgICAgICAgIHwgU29tZShuciwgbnAsIG5sKSBhcyBlIC0+XG4gICAgICAgICAgICAoZnVuIGYgLT4gbWF0Y2ggZiNwYXJzZXJfZXh0ZW5zaW9uIG5yIG5wIG5sIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlXG4gICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBrIC0+IGspXG4gICAgICAgIClcbiAgICAgICAgTm9uZVxuICAgICAgICBleHRlbnNpb25zXG5cbiAgKCogYmxvY2txdW90ZXMgKilcbiAgbGV0IGVtYWlsc3R5bGVfcXVvdGluZyAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgYmxvY2sgY2wgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OihOZXdsaW5lOjpfIGFzIHRsKSAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICBsb29wIChOZXdsaW5lOjpjbEBibG9jaykgW1NwYWNlcyhuLTEpXSB0bFxuXG4gICAgICAoKiBtdWx0aSBwYXJhZ3JhcGggYmxvY2txdW90ZXMgd2l0aCBlbXB0eSBsaW5lcyAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmVzIDA6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgIHwgKE5ld2xpbmVzIF86Ol8gYXMgbCkgfCAoW10gYXMgbCkgLT4gZml4KExpc3QucmV2KGNsQGJsb2NrKSksIGxcbiAgICAgIHwgZTo6dGwgLT4gbG9vcCBibG9jayAoZTo6Y2wpIHRsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OmJsb2NrLCB0bCAtPlxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3RpbmcgJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBibG9jayk7XG4gICAgICBTb21lKChCbG9ja3F1b3RlKG1haW5fbG9vcCBbXSBbXSBibG9jayk6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgIHwgXyAtPlxuICAgICAgTm9uZVxuXG5cbiAgKCogbWF5YmUgYSByZWZlcmVuY2UgKilcbiAgbGV0IG1heWJlX3JlZmVyZW5jZSAobWFpbl9sb29wOm1haW5fbG9vcCkgcmMgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHdlIGtub3cgaXQncyBub3QgYSBsaW5rIGFsdGhvdWdoXG4gICAgICAgaXQgc3RhcnRlZCB3aXRoIGEgJ1snICopXG4gICAgKCogU28gaXQgY291bGQgYmUgYSByZWZlcmVuY2Ugb3IgYSBsaW5rIGRlZmluaXRpb24uICopXG4gICAgbGV0IHJlYyBtYXliZV9yZWYgbCA9XG4gICAgICBsZXQgdGV4dCwgcmVtYWlucyA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgaWYgKHRyeSBpZ25vcmUocmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSB0ZXh0KTsgdHJ1ZVxuICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBmYWxzZSkgdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nOyAoKiA8LS0gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGxldCBibGFuaywgcmVtYWlucyA9IHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgcmVtYWlucyBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gdW53YW50ZWQgY2hhcmFjdGVycyBiZXR3ZWVuIENCIGFuZCBPQi4gKilcbiAgICAgIGlmIGVhdCAobGV0IGZsYWcgPSByZWYgdHJ1ZSBpblxuICAgICAgICAgICAgICBmdW5jdGlvbiAoKiBhbGxvdyBvbmx5IGEgc3BhY2UsIG11bHRpcGxlIHNwYWNlcywgb3IgYSBuZXdsaW5lICopXG4gICAgICAgICAgICAgIHwgTmV3bGluZSAtPiAhZmxhZyAmJiAoZmxhZyA6PSBmYWxzZTsgdHJ1ZSlcbiAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIGJsYW5rIDw+IFtdIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZyAoKiA8LS0gbm90IGEgcmVndWxhciByZWZlcmVuY2UgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIHdpdGhcbiAgICAgICAgfCBbXSwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgICAgIHwgaWQsIHJlbWFpbnMgLT5cbiAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgICAgICBTb21lKCgoUmVmKHJjLCBMLnN0cmluZ19vZl90b2tlbnMgaWQsXG4gICAgICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCwgZmFsbGJhY2spKTo6ciksXG4gICAgICAgICAgICAgICBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgIGluXG4gICAgbGV0IHJlYyBtYXliZV9ub25yZWd1bGFyX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCBpbiAoKiBpbXBsaWNpdCBhbmNob3IgKilcbiAgICAgIFNvbWUoKChSZWYocmMsIGlkLCBpZCwgZmFsbGJhY2spKTo6ciksIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX2RlZiBsID1cbiAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICB8IF8sIFtdIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgIHwgaWQsIChDb2xvbjo6KFNwYWNlfFNwYWNlcyBfKTo6cmVtYWlucylcbiAgICAgIHwgaWQsIChDb2xvbjo6cmVtYWlucykgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfKTo6IF8gYXMgbCAtPiBTcGxpdChbXSwgbClcbiAgICAgICAgICAgICAgICAgIHwgZTo6dGwgLT4gQ29udGludWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gU3BsaXQoW10sW10pKVxuICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUoW10sIF8pIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICB8IFNvbWUodXJsLCByZW1haW5zKSAtPlxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZW1haW5zID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBlYXRcbiAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICByZW1haW5zXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiByZWFkX3VudGlsX2RxIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgUXVvdGVzKDApOjp0bCAtPiBbXSwgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gcmVhZF91bnRpbF9xIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzOjp0bC0+IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBsIC0+IFtdLCBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggdXJsID4gMiAmJiB1cmwuWzBdID0gJzwnXG4gICAgICAgICAgICAgICAgICYmIHVybC5bU3RyaW5nLmxlbmd0aCB1cmwgLSAxXSA9ICc+JyB0aGVuXG4gICAgICAgICAgICAgICAgU3RyaW5nLnN1YiB1cmwgMSAoU3RyaW5nLmxlbmd0aCB1cmwgLSAyKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmMjYWRkX3JlZiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGlkKSAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlKSB1cmw7XG4gICAgICAgICAgICBTb21lKHIsIFtOZXdsaW5lXSwgcmVtYWlucylcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluXG4gICAgdHJ5XG4gICAgICBtYXliZV9yZWYgbFxuICAgIHdpdGggfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICB0cnlcbiAgICAgICAgbWF5YmVfZGVmIGxcbiAgICAgIHdpdGhcbiAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICB0cnlcbiAgICAgICAgICBtYXliZV9ub25yZWd1bGFyX3JlZiBsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgTm9uZVxuXG5cbiAgKCoqIG1heWJlIGEgbGluayAqKVxuICBsZXQgbWF5YmVfbGluayAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbmtcXG5cIjtcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVhZF91cmwgbmFtZSBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz5yZWFkX3VybCAlU1xcblwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxfY3AsIHJfY3AgPVxuICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgaW5cbiAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2NwPSVTIHJfY3A9JVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2NwKVxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcl9jcCk7XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBsX2RxLCByX2RxID1cbiAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfm5vX25sOnRydWUgfmJxOmZhbHNlIGxcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbF9kcT0lUyByX2RxPSVTXFxuJSFcIlxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsX2RxKVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2RxKTtcbiAgICAgICAgICAoKiBtYXliZSB0aXRsZSAqKVxuICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGxfY3AgPiBMaXN0Lmxlbmd0aCBsX2RxIHRoZW4gKCogdGl0bGUgKilcbiAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gdGl0bGVcXG4lIVwiO1xuICAgICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgICBtYXRjaCBMaXN0LnJldiBsX2RxIHdpdGhcbiAgICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIChMaXN0LnJldiB0bClcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyBsX2RxXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IHJlYWRfdW50aWxfZHEgfm5vX25sOmZhbHNlIH5icTpmYWxzZSByX2RxIGluXG4gICAgICAgICAgICAgIGxldCByZXN0ID0gc25kKHJlYWRfdW50aWxfY3BhcmVudGggcmVzdCkgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICB3aXRoIE5MX2V4Y2VwdGlvbiB8IFByZW1hdHVyZV9lbmRpbmcgLT4gKCogbm8gdGl0bGUgKilcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBubyB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICBsZXQgdXJsID0gbWF0Y2ggTGlzdC5yZXYgbF9jcCB3aXRoXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBMaXN0LnJldiB0bFxuICAgICAgICAgICAgICB8IF8gLT4gbF9jcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0aXRsZSwgcmVzdCA9IFtdLCByX2NwIGluXG4gICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICBTb21lKFVybCh1cmwsIG5hbWUsIHRpdGxlKSA6OiByLCBbQ3BhcmVudGhlc2lzXSwgcmVzdClcbiAgICAgICAgICBlbmRcbiAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVhZF9uYW1lIGwgPVxuICAgICAgKCogaXQncyBub3QgcmVhbGx5IHRoZSBcIm5hbWVcIiBvZiBhIFVSTCBidXQgd2hhdFxuICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGlubmVyIEhUTUwgb2YgYW4gSFRNTCAnQScgdGFnICopXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbms+IHJlYWRfbmFtZVxcblwiO1xuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCB3aXRoXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpczo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChlYXRfYmxhbmsgdGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3MgMDo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXNzIG46OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoT3BhcmVudGhlc2lzcyhuLTEpOjp0bClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+IE5vbmVcbiAgICBpblxuICAgIHJlYWRfbmFtZSBsXG5cblxuICBsZXQgaGFzX3BhcmFncmFwaHMgbCA9XG4gICAgKCogSGFzIGF0IGxlYXN0IDIgY29uc2VjdXRpdmUgbmV3bGluZXMuICopXG4gICAgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIE5ld2xpbmVzIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGxcblxuICBsZXQgcGFyc2VfbGlzdCAobWFpbl9sb29wOm1haW5fbG9vcCkgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBpZiBkZWJ1ZyB0aGVuIGJlZ2luXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdCByPSglcykgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgXCJcIiAoKiAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKSAqKVxuICAgICAgICBcIlwiICgqIChkZXN0cmluZ19vZl90bCBwKSAqKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgfmxpbWl0OjQwIGwpO1xuICAgIGVuZDtcbiAgICBsZXQgbW9kdWxlIFVPID0gc3RydWN0IHR5cGUgb3JkZXJlZCA9IE8gfCBVIGVuZCBpblxuICAgIGxldCBvcGVuIFVPIGluXG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIHBhcnNlX2xpc3Q6IGw9KCVzKVxcbiUhXCIgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgIGxldCBlbmRfb2ZfaXRlbSAoaW5kZW50OmludCkgbCA6IHRvayBzcGxpdF9hY3Rpb24gID0gbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIFNwbGl0KFtdLFtdKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6ICgoU3BhY2VzIG4pIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiB0bFxuICAgICAgICAgICAgICAgICAgICAgICBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA9IGluZGVudCs0IHRoZW4gKCogYmxvY2txdW90ZSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChuKzIpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lcyAwIDo6IChTcGFjZXMgbiA6OiB0bCBhcyBzKSAtPlxuICAgICAgICBhc3NlcnQobj49MCk7XG4gICAgICAgIGlmIG4rMiA+PSBpbmRlbnQrOCB0aGVuICgqIGNvZGUgaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygwKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZTo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2UgaWYgbisyID49IGluZGVudCs0IHRoZW4gKCogbmV3IHBhcmFncmFwaCBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCAoTmV3bGluZXMgXykgOjogXyAtPiAoKiBuID4gMCAqKVxuICAgICAgICAoKiBFbmQgb2YgaXRlbSwgc3RvcCAqKVxuICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OlxuICAgICAgICAoXG4gICAgICAgICAgKChTcGFjZXxTcGFjZXMgXykgOjogKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKChTcGFjZXxTcGFjZXMgXykgOjogTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgfCAoKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKTo6IF8pXG4gICAgICAgIHwgKE51bWJlciBfIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8pXG4gICAgICAgICAgYXMgdGwpIC0+XG4gICAgICAgIFNwbGl0KFtOZXdsaW5lXSwgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgKCogQSBsaW5lIHdpdGggc3BhY2VzIHNob3VsZG4ndCBpbnRlcmZlcmUgaGVyZSxcbiAgICAgICAgICAgd2hpY2ggaXMgYWJvdXQgZXhhY3RseSAyIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSByZXdyaXRlIHRoZSBoZWFkIG9mIHRoZSBsZXhpbmcgc3RyZWFtLiAqKVxuICAgICAgICBDb250aW51ZV93aXRoKFtdLCBOZXdsaW5lcyAwIDo6IHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiAoTmV3bGluZXMgXykgOjogXyAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBhdCBsZWFzdCAzIGNvbnNlY3V0aXZlIG5ld2xpbmVzLFxuICAgICAgICAgICBzbyB3ZSBzdG9wLiAqKVxuICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlcyBfIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlc1wiLFxuICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwID1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gU3BhY2VzIF86OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIGFzIHMpIDo6IHRsIC0+XG4gICAgICAgIENvbnRpbnVlX3dpdGhcbiAgICAgICAgICAoW3M7XG4gICAgICAgICAgICBUYWcoXCJwYXJzZV9saXN0L3JlbWVtYmVyIHNwYWNlXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPiBTb21lKHIscCxTcGFjZTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgIGVuZCk7XG4gICAgICAgICAgICBOZXdsaW5lXSxcbiAgICAgICAgICAgdGwpXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgQ29udGludWVcbiAgICBpblxuICAgIGxldCByZXZfdG9fdCBsID1cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgKCogTmV3bGluZXMgYXQgdGhlIGVuZCBvZiBpdGVtcyBoYXZlIG5vIG1lYW5pbmcgKGV4Y2VwdCB0byBlbmQgdGhlXG4gICAgICAgICBpdGVtIHdoaWNoIGlzIGV4cHJlc3NlZCBieSB0aGUgY29uc3RydWN0b3IgYWxyZWFkeSkuICopXG4gICAgICBsZXQgbCA9IG1hdGNoIGwgd2l0aCAoTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+IHRsIHwgXyAtPiBsIGluXG4gICAgICBtYWluX2xvb3AgW10gW05ld2xpbmVdIChMaXN0LnJldiBsKVxuICAgIGluXG4gICAgbGV0IGFkZCAoc3VibGlzdDplbGVtZW50KSBpdGVtcyA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBhZGRcXG4lIVwiO1xuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgKE8saW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKE8saW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICAgIHwgKFUsaW5kZW50cyxpdGVtKTo6dGwgLT5cbiAgICAgICAgKFUsaW5kZW50cywoaXRlbUBbc3VibGlzdF0pKTo6dGxcbiAgICBpblxuICAgIGxldCBtYWtlX3VwIH5wIGl0ZW1zIDogT21kX3JlcHJlc2VudGF0aW9uLmVsZW1lbnQgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFrZV91cCBwPSViXFxuJSFcIiBwO1xuICAgICAgbGV0IGl0ZW1zID0gTGlzdC5yZXYgaXRlbXMgaW5cbiAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgIHwgKFUsXyxpdGVtKTo6XyAtPlxuICAgICAgICBpZiBwIHRoZW5cbiAgICAgICAgICBVbHAoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgVWwoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgfCAoTyxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIE9scChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBPbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGZhaWx3aXRoIFwibWFrZV91cCBjYWxsZWQgd2l0aCBbXVwiICgqIGFzc2VydCBmYWxzZSAqKVxuICAgIGluXG4gICAgbGV0IHJlYyBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgbCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBsaXN0X2l0ZW1zOiBwPSViIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwIChMLmRlc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgKCogbm8gbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICB8IFtdIC0+XG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgKCogbW9yZSBsaXN0IGl0ZW1zICopXG4gICAgICAoKiBuZXcgdW5vcmRlcmVkIGl0ZW1zICopXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDIzNDYpIG5ld19pdGVtPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBuZXdfaXRlbSk7XG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFswXSAoKFUsWzBdLCByZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChVLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICAgfCAxOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgaSA+IDEgdGhlblxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgICAgICBlbHNlICgqIGkgPCAxIDogbmV3IHN1YiBsaXN0KilcbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgxOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsMTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjooU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTsgKCogYe9lLi4uIGxpc3RlcyBtYWwgZm9ybellcyA/ISAqKVxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFtuKzJdICgoVSxbbisyXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzKCVkOjpfKSBuPSVkIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIGkgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBpZiBpID0gbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpdGVtcyA9IChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pIDo6IGl0ZW1zIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIGl0ZW1zIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKFUsKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogbmV3IG9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAwKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBuZXdfaXRlbTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoTyxbMF0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAwOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IF86Ol8gLT5cbiAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZTo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAxKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMV0gKChPLFsxXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoTywxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZXMgbjo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAobisyKSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzW10gbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChPLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgIGVsc2UgaWYgaSA8IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wXG4gICAgICAgICAgICAgICAgICAgICgobisyKTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLChuKzIpOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV1cbiAgICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cDpwIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA+IG4gKyAyICopXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgKCogKilcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OihOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpTdGFyOjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3BhY2V8U3BhY2VzIF8pOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjpfIGFzIGwpXG4gICAgICAgIC0+XG4gICAgICAgIGxpc3RfaXRlbXMgfnA6dHJ1ZSBpbmRlbnRzIGl0ZW1zIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIGxldCByZWMgc3RyaW5nX29mX2l0ZW1zIGl0ZW1zID1cbiAgICAgICAgICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCAoTyxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoTyxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgKFUsaW5kZW50OjpfLGl0ZW0pOjp0bCAtPlxuICAgICAgICAgICAgICAgICBzcHJpbnRmIFwiKFUsaT0lZCwlUylcIiAoaW5kZW50KSAoT21kX2JhY2tlbmQuaHRtbF9vZl9tZCBpdGVtKVxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pdGVtcyB0bFxuICAgICAgICAgICAgICB8IF8gLT4gXCIod2VpcmQpXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTkFMSSBwYXJzZV9saXN0OiBsPSglUykgaXRlbXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbCkgKHN0cmluZ19vZl9pdGVtcyBpdGVtcylcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICgqIG5vdCBhIGxpc3QgaXRlbSAqKVxuICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICBpblxuICAgIG1hdGNoIGxpc3RfaXRlbXMgfnA6ZmFsc2UgW10gW10gbCB3aXRoXG4gICAgfCBycCwgbCAtPlxuICAgICAgcnA6OnIsIFtOZXdsaW5lXSwgbFxuXG5cblxuICBsZXQgaWNvZGUgPyhkZWZhdWx0X2xhbmc9ZGVmYXVsdF9sYW5nKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIGluZGVudGVkIGNvZGU6IHJldHVybnMgKHIscCxsKSB3aGVyZSByIGlzIHRoZSByZXN1bHQsIHAgaXMgdGhlXG4gICAgICAgbGFzdCB0aGluZyByZWFkLCBsIGlzIHRoZSByZW1haW5zICopXG4gICAgbGV0IGR1bW15X3RhZyA9IFRhZyhcImR1bW15X3RhZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uID0gZnVuIHIgcCBsIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgaW5cbiAgICBsZXQgYWNjdSA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBsZXQgcmVjIGxvb3AgcyB0bCA9IG1hdGNoIHMsIHRsIHdpdGhcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgKFNwYWNlfFNwYWNlcygwfDEpKTo6XyAtPlxuICAgICAgICAoKiAxLCAyIG9yIDMgc3BhY2VzLiAqKVxuICAgICAgICAoKiAtPiBSZXR1cm4gd2hhdCdzIGJlZW4gZm91bmQgYXMgY29kZSBiZWNhdXNlIHdoYXQgZm9sbG93cyBpc24ndC4gKilcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KSA6OiByLCBbcF0sIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIFNwYWNlcyhuKTo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgICgqIEF0IGxlYXN0IDQgc3BhY2VzLCBpdCdzIHN0aWxsIGNvZGUuICopXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKGlmIG4gPj0gNCB0aGVuIFNwYWNlcyhuLTQpIGVsc2UgaWYgbiA9IDMgdGhlbiBTcGFjZSBlbHNlIGR1bW15X3RhZylcbiAgICAgICAgICB0bFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAobm90X3NwYWNlczo6XyBhcyB0bCkgLT4gKCogc3RvcCAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2UgaXQncyBubyBtb3JlIGNvZGUuICopXG4gICAgICB8IHAsIGU6OnRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICAoKiBodG1sIGVudGl0aWVzIGFyZSB0byBiZSBjb252ZXJ0ZWQgbGF0ZXIhICopXG4gICAgICAgIGxvb3AgZSB0bFxuICAgICAgfCBwLCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KTo6ciwgW3BdLCBbXVxuICAgIGluXG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBTcGFjZXMgbjo6dGwgLT5cbiAgICAgIGlmIG4gPj0gNCB0aGVuXG4gICAgICAgIFNvbWUobG9vcCAoU3BhY2VzKG4tNCkpIHRsKVxuICAgICAgZWxzZSBpZiBuID0gMyB0aGVuXG4gICAgICAgIFNvbWUobG9vcCBTcGFjZSB0bClcbiAgICAgIGVsc2UgU29tZShsb29wIGR1bW15X3RhZyB0bClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuICAoKiBSZXR1cm5zIFsocixwLGwpXSB3aGVyZSBbcl0gaXMgdGhlIHJlc3VsdCwgW3BdIGlzIHRoZSBsYXN0IHRoaW5nXG4gICAgIHJlYWQsIGFuZCBbbF0gaXMgd2hhdCByZW1haW5zLiAqKVxuICBsZXQgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPD0gMyB0aGVuIChcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgICAgKCogdW5vcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IChOdW1iZXIgXyk6OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgKCogb3JkZXJlZCBsaXN0ICopXG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gKEwubWFrZV9zcGFjZSBuOjpsZXhlbWVzKVxuICAgICAgfCBbXVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfICAtPiAoKiBibGFuayBsaW5lLCBza2lwIHNwYWNlcyAqKVxuICAgICAgICByLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgICAgfCAgXzo6XyAtPlxuICAgICAgICBUZXh0IChcIiBcIik6OnIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgKVxuICAgIGVsc2UgKCAoKiBuPj00LCBibGFuayBsaW5lIG9yIGluZGVudGVkIGNvZGUgKilcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCBbXSB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+IHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8IF8gLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBpY29kZSB+ZGVmYXVsdF9sYW5nIHIgW05ld2xpbmVdIChMLm1ha2Vfc3BhY2UgbiA6OiBsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gcixwLGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuaWNvZGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgKVxuXG4gIGxldCBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lID8oaHRtbD1mYWxzZSkgbiByIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGFzc2VydCAobiA+IDApO1xuICAgIGlmIG4gPSAxIHRoZW5cbiAgICAgIChUZXh0IFwiIFwiOjpyKSwgW1NwYWNlXSwgbGV4ZW1lc1xuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IE5ld2xpbmUgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCB0aGUgbmV3bGluZVxcbiUhXCI7XG4gICAgICAgIEJyOjpyLCBbU3BhY2VzKG4tMildLCB0bFxuICAgICAgfCBOZXdsaW5lcyBrIDo6IHRsIHdoZW4gbm90IGh0bWwgLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiKE9NRCkgMiBvciBtb3JlIHNwYWNlcyBiZWZvcmUgYSBuZXdsaW5lLCBlYXQgMSBuZXdsaW5lXCI7XG4gICAgICAgIGxldCBuZXdsaW5lcyA9IGlmIGsgPSAwIHRoZW4gTmV3bGluZSBlbHNlIE5ld2xpbmVzKGstMSkgaW5cbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIG5ld2xpbmVzIDo6IHRsXG4gICAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChuPjEpO1xuICAgICAgICAoVGV4dCAoU3RyaW5nLm1ha2UgbiAnICcpOjpyKSwgW1NwYWNlcyhuLTIpXSwgbGV4ZW1lc1xuICAgIClcblxuXG4gIGxldCBtYXliZV9hdXRvZW1haWwgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgTGVzc3RoYW46OnRsIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGZzcGxpdCB+ZXhjbDooZnVuY3Rpb24gKE5ld2xpbmV8TmV3bGluZXMgX3xTcGFjZXxTcGFjZXMgXykgOjogXy0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB+ZjooZnVuY3Rpb24gQXQ6OnRsIC0+IFNwbGl0KFtdLHRsKSB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICB0bFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZShsZWZ0LCByaWdodCkgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvbiBHcmVhdGVydGhhbjo6dGwgLT4gU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMDo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG46OnRsIC0+IFNwbGl0KFtdLEdyZWF0ZXJ0aGFucyhuLTEpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgIHJpZ2h0XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lKGRvbWFpbiwgdGwpIC0+XG4gICAgICAgICAgICBsZXQgZW1haWwgPSBMLnN0cmluZ19vZl90b2tlbnMgbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgXiBcIkBcIiBeIEwuc3RyaW5nX29mX3Rva2VucyBkb21haW4gaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKFwibWFpbHRvOlwiXmVtYWlsLFtUZXh0IGVtYWlsXSxcIlwiKTo6cixbR3JlYXRlcnRoYW5dLHRsKVxuICAgICAgZW5kXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiT21kX3BhcnNlci5tYXliZV9hdXRvZW1haWw6IHdyb25nIHVzZSBvZiB0aGUgZnVuY3Rpb24uXCJcblxuICBsZXQgaXNfaGV4IHMgPVxuICAgIFN0cmluZy5sZW5ndGggcyA+IDFcbiAgICAmJiAocy5bMF0gPSAnWCcgfHwgcy5bMF0gPSAneCcpXG4gICAgJiYgKGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgIGkgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgIHx8XG4gICAgICAgICAobWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgICBsb29wIChzdWNjIGkpXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICBpbiBsb29wIDEpXG5cbiAgbGV0IG1lZGlhdHlwZXRleHRvbWQgOiBzdHJpbmcgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgZmlsdGVyX3RleHRfb21kX3JldiBsID1cbiAgICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gaWYgYiB0aGVuIHIgZWxzZSBsXG4gICAgICB8IChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpOjp0bCAtPlxuICAgICAgICBsb29wIHRydWUgciB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIGIgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsb29wIGZhbHNlIFtdIGxcblxuICBleGNlcHRpb24gT3JwaGFuX2Nsb3Npbmcgb2Ygc3RyaW5nICogbCAqIGxcblxuICBsZXQgcmVjIG1haW5faW1wbF9yZXYgfmh0bWwgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAoKiBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGxfcmV2IGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgaWYgZGVidWcgdGhlblxuICAgICAgZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYiByPSVzIHA9KCVzKSBsPSglcylcXG4lIVwiXG4gICAgICAgIGh0bWxcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIChMaXN0LnJldiByKSlcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHByZXZpb3VzKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgbGV4ZW1lcyk7XG4gICAgbWF0Y2ggcHJldmlvdXMsIGxleGVtZXMgd2l0aFxuICAgICgqIG5vIG1vcmUgdG8gcHJvY2VzcyAqKVxuICAgIHwgXywgW10gLT5cbiAgICAgICgqIHJldHVybiB0aGUgcmVzdWx0ICgvIVxcIGl0IGhhcyB0byBiZSByZXZlcnNlZCBhcyBzb21lIHBvaW50KSAqKVxuICAgICAgclxuXG4gICAgKCogVGFnOiB0YWcgc3lzdGVtICRcXGN1cCQgaGlnaC1wcmlvcml0eSBleHRlbnNpb24gbWVjaGFuaXNtICopXG4gICAgfCBfLCBUYWcoX25hbWUsIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBlI3BhcnNlcl9leHRlbnNpb24gciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHByZXZpb3VzIHRsXG4gICAgICBlbmRcblxuICAgICgqIEhUTUwgY29tbWVudHMgKilcbiAgICB8IF8sIChMZXNzdGhhbiBhcyB0KTo6KEV4Y2xhbWF0aW9uOjpNaW51c3MgMDo6YyBhcyB0bCkgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIGxldCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IChNaW51c3MgXyBhcyBtKTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCAtPlxuICAgICAgICAgICAgU3BsaXQoW2c7bV0sIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZnNwbGl0IH5mOmYgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgKGNvbW1lbnRzLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBIdG1sX2NvbW1lbnQoTC5zdHJpbmdfb2ZfdG9rZW5zIGNvbW1lbnRzKSA6OiByIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIFtOZXdsaW5lXSBuZXdfdGxcbiAgICAgIGVuZFxuXG4gICAgKCogZW1haWwtc3R5bGUgcXVvdGluZyAvIGJsb2NrcXVvdGUgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIEdyZWF0ZXJ0aGFuOjooU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICBiZWdpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGVtYWlsc3R5bGVfcXVvdGluZyBtYWluX2xvb3AgciBwcmV2aW91cyAoTmV3bGluZTo6bGV4ZW1lcylcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nLCB3aXRoIGxpbmVzIHN0YXJ0aW5nIHdpdGggc3BhY2VzISAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKFNwYWNlfFNwYWNlcygwfDEpIGFzIHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBHcmVhdGVydGhhbiA6OiAoU3BhY2V8U3BhY2VzIF8pOjpfIC0+XG4gICAgICAoKiBJdCdzIDEsIDIgb3IgMyBzcGFjZXMsIG5vdCBtb3JlIGJlY2F1c2UgaXQgd291bGRuJ3QgbWVhblxuICAgICAgICAgcXVvdGluZyBhbnltb3JlIGJ1dCBjb2RlLiAqKVxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IG5ld19yLCBwLCByZXN0ID1cbiAgICAgICAgICBsZXQgZm9vLCByZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChMLmxlbmd0aCBzKSAoTmV3bGluZTo6bGV4ZW1lcykgd2l0aFxuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6Zm9vLCByZXN0IC0+IGZvbywgcmVzdFxuICAgICAgICAgICAgfCByZXMgLT4gcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCBbXSBwcmV2aW91cyAoTmV3bGluZTo6Zm9vKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUobmV3X3IsIHAsIFtdKSAtPiBuZXdfciwgcCwgcmVzdFxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChuZXdfckByKSBbTmV3bGluZV0gcmVzdFxuICAgICAgZW5kXG5cbiAgICAoKiBtaW51cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSxcbiAgICAgIChNaW51c3xNaW51c3MgXyBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKTo6XyBhcyB0bCkgLT5cbiAgICAgICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9tIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKCogbm8gaHIsIHNvIGl0IGNvdWxkIGJlIGEgbGlzdCAqKVxuICAgICAgICAgIGJlZ2luIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBNaW51cyAtPiAoKiBpdCdzIGEgbGlzdCAqKVxuICAgICAgICAgICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcbiAgICAgICAgICAgIHwgXyAtPiAoKiBub3QgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChNaW51c3xNaW51c3MgXyBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgYW5kIGl0J3Mgbm90IGEgbGlzdCBlaXRoZXJcbiAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQncyBub3QgZm9sbG93ZWQgYnkgc3BhY2VzICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSBsIC0+ICgqIGhyICopXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICBlbmRcblxuICAgICgqIGhhc2hlcyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKChTcGFjZXxTcGFjZXMgXykgOjogdHRsIGFzIHRsKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLFxuICAgICAgKEhhc2hzIG4gYXMgdCkgOjogKHR0bCBhcyB0bCkgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGlmIG4gPD0gNCB0aGVuXG4gICAgICAgIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIChuKzIpIHIgcHJldmlvdXMgdHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIucmVhZF90aXRsZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBIYXNoIDo6IHRsIC0+ICgqIGhhc2ggdGl0bGVzICopXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3RpdGxlIG1haW5fbG9vcCAxIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG4gICAgfCBfLCAoSGFzaHxIYXNocyBfIGFzIHQpIDo6IHRsIC0+ICgqIGhhc2ggLS0gbm8gdGl0bGUgKilcbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgKCogc3BhY2VzIGFmdGVyIGEgbmV3bGluZTogY291bGQgbGVhZCB0byBociAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKChTcGFjZXxTcGFjZXMgXykgYXMgc3ApIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBociB0bCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIE5vIFtIcl0sIGJ1dCBtYXliZSBbVWxdLCBbT2xdLCBjb2RlLC4uLiAqKVxuICAgICAgICAgIGxldCBuID0gTC5sZW5ndGggc3AgaW5cbiAgICAgICAgICBsZXQgciwgcCwgbCA9XG4gICAgICAgICAgIHNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSBtYWluX2xvb3AgZGVmYXVsdF9sYW5nIG4gciBwcmV2aW91cyB0bCBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBTb21lIHRsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYW55d2hlcmUgKilcbiAgICB8IF8sICgoU3BhY2V8U3BhY2VzIF8pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiB0b28gbWFueSBjYXNlcyB0byBiZSBoYW5kbGVkIGhlcmUgKilcbiAgICAgIGxldCBuID0gTC5sZW5ndGggdCBpblxuICAgICAgbGV0IHIsIHAsIGwgPSBzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW5lIH5odG1sIG4gciB0bCBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuXG4gICAgKCogdW5kZXJzY29yZXMgKilcbiAgICB8IF8sIChVbmRlcnNjb3JlIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHVuZGVyc2NvcmUsIG9yIGVtcGggKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICApXG4gICAgfCBfLCAoVW5kZXJzY29yZXMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHVuZGVyc2NvcmVzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCB1ZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBpZiBuID0gMCB0aGVuICgqIDEgdW5kZXJzY29yZSAqKVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZSAoKiAyIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgoW0JvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KV0pIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcblxuICAgICgqIGVudW1lcmF0ZWQgbGlzdHMgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChOdW1iZXIgXykgOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogdGwgLT5cbiAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuXG4gICAgKCogcGx1cyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBQbHVzIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBzdGFycyAqKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBTdGFyIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgKCogbWF5YmUgaHIgb3IgbmV3IGxpc3QgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgZW5kXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXJzIF8gOjogXyB3aGVuIGhyX3MgbGV4ZW1lcyA8PiBOb25lIC0+XG4gICAgICAoKiBociAqKVxuICAgICAgKG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgfCBTb21lIGwgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKVxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBtYXliZSBociAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgZW5kXG4gICAgICAgICAgKVxuICAgICAgZW5kXG4gICAgfCBfLCAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBvbmUgXCJvcnBoYW5cIiBzdGFyLCBvciBlbXBoIC8vIGNhbid0IGJlIGhyICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuICAgIHwgXywgKFN0YXJzKCgwfDEpIGFzIG4pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiAyIG9yIDMgXCJvcnBoYW5cIiBzdGFycywgb3IgZW1waC9ib2xkICopXG4gICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAobisyKSB0bCB3aXRoXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBiYWNrc2xhc2hlcyAqKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChOZXdsaW5lIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyAwIDo6IHRsIC0+ICgqIFxcXFxuXFxuXFxuXFxuLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbQmFja3NsYXNoOyBOZXdsaW5lXSAoTmV3bGluZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdXG4gICAgICAgIChOZXdsaW5lcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQmFja3F1b3RlIGFzIHQpIDo6IHRsIC0+ICgqIFxcYCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEJhY2txdW90ZXMgMCA6OiB0bCAtPiAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdIChCYWNrcXVvdGUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxgYGBgLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW0JhY2tzbGFzaDsgQmFja3F1b3RlXVxuICAgICAgICAoQmFja3F1b3RlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoU3RhciBhcyB0KSA6OiB0bCAtPiAoKiBcXCogKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBTdGFycyAwIDo6IHRsIC0+ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFyIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCoqKiouLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbQmFja3NsYXNoOyBTdGFyXSAoU3RhcnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogXFxfICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgMCA6OiB0bCAtPiAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdIChVbmRlcnNjb3JlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFVuZGVyc2NvcmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXF9fXy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFVuZGVyc2NvcmVdXG4gICAgICAgIChVbmRlcnNjb3JlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxceyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgMCA6OiB0bCAtPiAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXHt7ey4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ7XCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFjZV0gKE9icmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFjZSBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIDAgOjogdGwgLT4gKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2UgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwifVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2VdIChDYnJhY2VzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXFsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFtbWy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9icmFja2V0XSAoT2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDYnJhY2tldCBhcyB0KSA6OiB0bCAtPiAoKiBcXH0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXQgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNrZXRzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFja2V0XSAoQ2JyYWNrZXRzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwoICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXSAoT3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9wYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKCgoLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIihcIikgOjogcikgW0JhY2tzbGFzaDsgT3BhcmVudGhlc2lzXVxuICAgICAgICAoT3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPiAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpcyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDcGFyZW50aGVzaXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCkpKS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIpXCIpIDo6IHIpIFtCYWNrc2xhc2g7IENwYXJlbnRoZXNpc11cbiAgICAgICAgKENwYXJlbnRoZXNpc3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFBsdXMgYXMgdCkgOjogdGwgLT4gKCogXFwrICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgMCA6OiB0bCAtPiAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IFBsdXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCsrKy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFBsdXNdIChQbHVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTWludXMgYXMgdCkgOjogdGwgLT4gKCogXFwtICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIDAgOjogdGwgLT4gKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE1pbnVzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwtLS0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbQmFja3NsYXNoOyBNaW51c10gKE1pbnVzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRG90IGFzIHQpIDo6IHRsIC0+ICgqIFxcLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IERvdHMgMCA6OiB0bCAtPiAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3QgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwuLi4uLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW0JhY2tzbGFzaDsgRG90XSAoRG90cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoRXhjbGFtYXRpb24gYXMgdCkgOjogdGwgLT4gKCogXFwhICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIDAgOjogdGwgLT4gKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl0gKEV4Y2xhbWF0aW9uIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEV4Y2xhbWF0aW9ucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwhISEuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbQmFja3NsYXNoOyBFeGNsYW1hdGlvbl1cbiAgICAgICAgKEV4Y2xhbWF0aW9ucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoSGFzaCBhcyB0KSA6OiB0bCAtPiAoKiBcXCMgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyAwIDo6IHRsIC0+ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogSGFzaHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcIyMjLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW0JhY2tzbGFzaDsgSGFzaF0gKEhhc2hzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXD4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgMCA6OiB0bCAtPiAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogR3JlYXRlcnRoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXD4+Pi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFtCYWNrc2xhc2g7IEdyZWF0ZXJ0aGFuXVxuICAgICAgICAoR3JlYXRlcnRoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyB0KSA6OiB0bCAtPiAoKiBcXDwgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgMCA6OiB0bCAtPiAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXSAoTGVzc3RoYW4gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTGVzc3RoYW5zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXDw8PC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFtCYWNrc2xhc2g7IExlc3N0aGFuXVxuICAgICAgICAoTGVzc3RoYW5zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgKEJhY2tzbGFzaHMgMCBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJcXFxcXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgKEJhY2tzbGFzaHMgbiBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcXFxcXC4uLiAqKVxuICAgICAgaWYgbiBtb2QgMiA9IDAgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSB0bFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KFN0cmluZy5tYWtlICgobisyKS8yKSAnXFxcXCcpIDo6IHIpIFt0XSAoQmFja3NsYXNoIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoOjpbXSAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbXSBbXVxuICAgIHwgXywgQmFja3NsYXNoOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCBcIlxcXFxcIiA6OiByKSBbQmFja3NsYXNoXSB0bFxuXG4gICAgKCogPCAqKVxuICAgIHwgXywgKExlc3N0aGFufExlc3N0aGFucyBfIGFzIHQpXG4gICAgICAgICA6OiAoV29yZChcImh0dHBcInxcImh0dHBzXCJ8XCJmdHBcInxcImZ0cHNcInxcInNzaFwifFwiYWZwXCJ8XCJpbWFwXCIpIGFzIHcpXG4gICAgICAgICA6OiBDb2xvbjo6U2xhc2hzKG4pOjp0bCAtPlxuICAgICAgKCogXCJzZW1pLWF1dG9tYXRpY1wiIFVSTHMgKilcbiAgICAgIGxldCByZWMgcmVhZF91cmwgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VuIHcpIF4gXCI6Ly9cIlxuICAgICAgICAgICAgXiAoaWYgbiA9IDAgdGhlbiBcIlwiIGVsc2UgU3RyaW5nLm1ha2UgKG4tMSkgJy8nKVxuICAgICAgICAgICAgXiBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IGFjY3UpXG4gICAgICAgICAgaW4gU29tZSh1cmwsIHRsKVxuICAgICAgICB8IHg6OnRsIC0+XG4gICAgICAgICAgcmVhZF91cmwgKHg6OmFjY3UpIHRsXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgYmVnaW4gbWF0Y2ggcmVhZF91cmwgW10gdGwgd2l0aFxuICAgICAgICB8IFNvbWUodXJsLCBuZXdfdGwpIC0+XG4gICAgICAgICAgbGV0IHIgPSBcbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgMCAtPiBUZXh0IFwiPFwiIDo6IHJcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnPCcpIDo6IHJcbiAgICAgICAgICAgIHwgXyAtPiByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChVcmwodXJsLFtUZXh0IHVybF0sXCJcIik6OnIpIFtdIG5ld190bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG5cbiAgICAoKiBXb3JkKHcpICopXG4gICAgfCBfLCBXb3JkIHc6OnRsIC0+XG4gICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB3IDo6IHIpIFtXb3JkIHddIHRsXG5cbiAgICAoKiBuZXdsaW5lIGF0IHRoZSBlbmQgKilcbiAgICB8IF8sIFtOZXdsaW5lXSAtPlxuICAgICAgTkw6OnJcblxuICAgICgqIG5hbWVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoV29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bCkgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB3IGh0bWxjb2Rlc19zZXQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6TnVtYmVyIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgYXMgdGwyKSAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuICAgICgqIG1heWJlIGhleCBkaWdpdC1jb2RlZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKEhhc2g6OldvcmQgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIHdoZW4gaXNfaGV4IHcgLT5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdyA8PSA0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cblxuICAgICgqIEFtcGVyc2FuZCAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtBbXBlcnNhbmRdIHRsXG5cbiAgICAoKiAyIEFtcGVyc2FuZHMgKilcbiAgICB8IF8sIEFtcGVyc2FuZHMoMCk6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gKEFtcGVyc2FuZDo6dGwpXG5cbiAgICAoKiBTZXZlcmFsIEFtcGVyc2FuZHMgKG1vcmUgdGhhbiAyKSAqKVxuICAgIHwgXywgQW1wZXJzYW5kcyhuKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kcyhuLTEpOjp0bClcblxuICAgICgqIGJhY2txdW90ZXMgKilcbiAgICB8IF8sIChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgfmRlZmF1bHRfbGFuZyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCAqKVxuICAgICgqIDxici8+IGFuZCA8aHIvPiB3aXRoIG9yIHdpdGhvdXQgc3BhY2UocykgKilcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bClcbiAgICB8IF8sIChMZXNzdGhhbjo6V29yZChcImJyXCJ8XCJoclwiIGFzIHcpOjooU3BhY2V8U3BhY2VzIF8pOjpTbGFzaFxuICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGcgd2l0aFxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl0gKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dXG4gICAgICAgICAgICAoR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBhd2FpdGVkIG9ycGhhbiBodG1sIGNsb3NpbmcgdGFnICopXG4gICAgfCBfLCBMZXNzdGhhbjo6U2xhc2g6OldvcmQodyk6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGxcbiAgICAgIHdoZW4gIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gLT5cbiAgICAgIHJhaXNlIChPcnBoYW5fY2xvc2luZyh3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpOjp0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdGwpKSlcblxuICAgICgqIGJsb2NrIGh0bWwgKilcbiAgICB8IChbXSB8IFtOZXdsaW5lfE5ld2xpbmVzIF98VGFnKFwiSFRNTEJMT0NLXCIsIF8pXSksXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQgdGhlblxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW1dvcmQgXCJcIl0gbGV4ZW1lc1xuICAgICAgZWxzZSBpZiBub3QgKGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldCkgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgRlRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0IGh0bWwgbCA9XG4gICAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCA/KGh0bWw9aHRtbCkgbCA9XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgIHwgSFRNTCh0LCBhLCBjKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBsZXQgZl9hID0gZmlsdGVyX3RleHRfb21kX3JldiBhIGluXG4gICAgICAgICAgICAgICAgICBpZiBmX2EgIT0gYSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEh0bWxfYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgZl9hLFxuICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAobWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6ZmFsc2UgKExpc3QucmV2IGMpKSlcbiAgICAgICAgICAgICAgICAgICAgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LCBmX2EsIG1kX29mX2ludGVybV9saXN0IH5odG1sOnRydWUgKExpc3QucmV2IGMpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBNRCBtZDo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZEBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6UlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdFxuICAgICAgICAgICAgICAgICAgKEZUT0tFTlMoTGlzdC5yZXZfYXBwZW5kIHQxIChMaXN0LnJldiB0MikpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQxOjpGVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgRlRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgaWYgaHRtbCB0aGVuXG4gICAgICAgICAgICAgICAgICBSYXcoTC5zdHJpbmdfb2ZfdG9rZW5zIHQpIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWFpbl9sb29wIH5odG1sIFtdIFtXb3JkIFwiXCJdIHRcbiAgICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldiB0KSA6OiB0bClcbiAgICAgICAgICAgIGxldCBtZF9vZl9pbnRlcm1fbGlzdCBsID0gbWRfb2ZfaW50ZXJtX2xpc3QgdHJ1ZSBsXG4gICAgICAgICAgICBsZXQgc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMgPVxuICAgICAgICAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICAgICAgICAgICAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBPcGVuIHQgLT4gYnByaW50ZiBiIFwie0IvT3BlbiAlc31cIiB0XG4gICAgICAgICAgICAgICAgICB8IEF3YWl0aW5nIHQgLT4gYnByaW50ZiBiIFwie0IvQXdhaXRpbmcgJXN9XCIgdFxuICAgICAgICAgICAgICAgICkgdGFnc3RhdHVzO1xuICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgICAgICAgIGVuZCBpblxuICAgICAgICAgIGxldCBhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkgPVxuICAgICAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgICB8IFQuUlRPS0VOUyByIDo6IGJvZHkgLT4gVC5SVE9LRU5TKHg6OnIpOjpib2R5XG4gICAgICAgICAgICB8IF8gLT4gVC5SVE9LRU5TW3hdIDo6IGJvZHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCAoYm9keTpULmludGVybSBsaXN0KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zID1cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzMzMgQkhUTUwgbG9vcCBib2R5PSVTIHRhZ3N0YXR1cz0lUyAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQoVC5tZF9vZl9pbnRlcm1fbGlzdCBib2R5KSlcbiAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQwMSBCSFRNTCBOb3QgZW5vdWdoIHRvIHJlYWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zKG4tMSkpXG4gICAgICAgICAgICAgICAgICAgICAgIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyAoTGVzc3RoYW46OnRva2VucylcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBzZWxmLWNsb3NpbmcgdGFncyAqKVxuICAgICAgICAgICAgfCBTbGFzaDo6R3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyh0YWduYW1lKSA6OiB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MTkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgIFNsYXNoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgb3BlbmVyICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjpTbGFzaDo6KFdvcmQodGFnbmFtZSkgYXMgdylcbiAgICAgICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIHQgPSB0YWduYW1lIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc1IEJIVE1MIHByb3Blcmx5IGNsb3NpbmcgJVNcXG4lIVwiIHQ7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzc5IEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5SVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzgzIEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgaWYgIW1lZGlhdHlwZXRleHRvbWQgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgIChPcnBoYW5fY2xvc2luZyh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuOjp0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW5zKG4tMSk6OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIDNcXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldFxuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgPFdvcmQoJXMpLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGF0dHJzIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5NiBCSFRNTCB0YWcgJVMgYnV0IGF0dHJzIDw+IFtdXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MjEgQkhUTUwgdGFnICVTLCB0YWdzdGF0dXM9JVMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycz1bXSwgdG9rZW5zPSVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBbXSBbXSAoVC5Bd2FpdGluZyB0YWduYW1lOjp0YWdzdGF0dXMpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0ODkgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MzMgQkhUTUwgdGFnc3RhdHVzPSVTIHRva2Vucz0lU1xcbiUhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgaWYgTGlzdC5tZW0gKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIikgYXR0cnMgdGhlblxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSB0IDo6ICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlKG1haW5faW1wbF9yZXYgfmh0bWwgW10gW10gdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MjQgQkhUTUwgY2xvc2luZyB0YWcgbm90IGZvdW5kIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluICVTXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDbG9zaW5nIHRhZyBgJXMnIG5vdCBmb3VuZCBmb3IgdGV4dC9vbWQgem9uZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhdHlwZXRleHRvbWQgOj0gTGlzdC50bCAhbWVkaWF0eXBldGV4dG9tZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoIE9ycGhhbl9jbG9zaW5nKHRhZ25hbWUsIGRlbGltaXRlciwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlYyBmIHIgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGVzc3RoYW5zIG4gYXMgZSA6OiB0bCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbjo6XyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExlc3N0aGFuOjp0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbjo6clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXNzdGhhbnMobi0xKTo6cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0bCA9PSBkZWxpbWl0ZXIgfHwgdGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGU6OnRsIGFzIGwgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGwgPT0gZGVsaW1pdGVyIHx8IGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IChlOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmIFtdIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NTIgQkhUTUwgdG9rZW5zPSVzIGRlbGltaXRlcj0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcj0lcyBiZWZvcmU9JXMgKHRhZ25hbWU9dCk9JWJcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGRlbGltaXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBhZnRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBiZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnbmFtZSA9IHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoICFtZWRpYXR5cGV0ZXh0b21kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogdGwgLT4gbWVkaWF0eXBldGV4dG9tZCA6PSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRhZ25hbWUgPSB0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULkhUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtULk1EXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX2ltcGwgfmh0bWwgW10gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZ19zZXRleHQgbWFpbl9sb29wIGJlZm9yZSkpXSldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNTcxIEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgYm9keSBbXSAoVC5PcGVuIHQ6OnRhZ3N0YXR1cykgdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1MTkgQkhUTUwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYm9keSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0OTggQkhUTUwgRm91bmQgYSBjbG9zaW5nIHRhZyAlc1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKFtULkhUTUwodCwgYXR0cnMsIGJvZHkpXSwgbClcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgMzU5MSBCSFRNTCBTb21lIGA+YCBpc24ndCBmb3IgYW4gb3BlbmluZyB0YWdcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgR3JlYXRlcnRoYW4gYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM1NDIgQkhUTUwgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzYyOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjYxIEJIVE1MIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjggQkhUTUwgbm9uIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzY1NCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2OTAgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIyIEJIVE1MICVzPSVTICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCB4Ojp0b2tlbnMgYXMgZGd0c1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjIwIEJIVE1MIGdlbmVyYWwgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgZGd0cyk7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZSB8IFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM3MzcgQkhUTUwgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmVzIF8gYXMgeCkgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzgyNyBCSFRNTCBuZXdsaW5lc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgd2FybiBcInRoZXJlIGFyZSBlbXB0eSBsaW5lcyBpbiB3aGF0IG1heSBiZSBhbiBIVE1MIGJsb2NrXCI7XG4gICAgICAgICAgICAgICAgbG9vcCAoYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc0MiBCSFRNTCBmYWxsYmFjayB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBbXSAtPiBcIk5vbmVcIlxuICAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gXCJBd2FpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+IFwiT3BlbiAoY2FuJ3QgYmUpXCIpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQwOCBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGgsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbVGFnKFwiSFRNTEJMT0NLXCIsIGVtcHR5X2V4dGVuc2lvbildIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGJsb2NrIEhUTUwuICopXG5cblxuICAgICgqIGlubGluZSBIVE1MICopXG4gICAgfCBfLFxuICAgICAgKExlc3N0aGFuIGFzIHQpXG4gICAgICA6OigoV29yZCh0YWduYW1ldG9wKSBhcyB3KVxuICAgICAgICAgOjooKFNwYWNlfFNwYWNlcyBffEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKVxuICAgICAgICAgICAgOjpfIGFzIGh0bWxfc3R1ZmYpIGFzIHRseCkgLT5cbiAgICAgIGlmIChzdHJpY3RfaHRtbCAmJiBub3QoU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGlubGluZV9odG1sdGFnc19zZXQpKVxuICAgICAgfHwgbm90KGJsaW5kX2h0bWwgfHwgU3RyaW5nU2V0Lm1lbSB0YWduYW1ldG9wIGh0bWx0YWdzX3NldClcbiAgICAgIHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRseFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcmVhZF9odG1sKCkgPVxuICAgICAgICAgIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBBd2FpdGluZyBvZiBzdHJpbmdcbiAgICAgICAgICAgICAgfCBPcGVuIG9mIHN0cmluZ1xuICAgICAgICAgICAgdHlwZSBpbnRlcm0gPVxuICAgICAgICAgICAgICB8IEhUTUwgb2Ygc3RyaW5nICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiBpbnRlcm0gbGlzdFxuICAgICAgICAgICAgICB8IFRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBNRCBvZiBPbWRfcmVwcmVzZW50YXRpb24udFxuICAgICAgICAgICAgbGV0IHJlYyBtZF9vZl9pbnRlcm1fbGlzdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIEh0bWwodCwgYSwgbWRfb2ZfaW50ZXJtX2xpc3QoTGlzdC5yZXYgYykpOjptZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPiBtZCBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQxOjpUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKFRPS0VOUyh0MUB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IFRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsIH5odG1sIFtdIFtXb3JkIFwiXCJdICh0KVxuICAgICAgICAgICAgICAgIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7SS9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7SS9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBULlRPS0VOU1t4XTo6Ym9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzcxOCBsb29wIHRhZ3N0YXR1cz0oJXMpICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICgqIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgYm9keT0oJXMpICVzXFxuJSFcIiAqKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKSAqKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCk6Ol8gd2hlbiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE5vdCBlbm91Z2ggdG8gcmVhZCBmb3IgaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIG46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpOjp0YWdzdGF0dXNcbiAgICAgICAgICAgICAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHRhZ25hbWUsIGF0dHJzLCBbXSldIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuO1NsYXNoXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIG11bHRpcGxlIG5ld2xpbmVzIGFyZSBub3QgdG8gYmUgc2VlbiBpbiBpbmxpbmUgSFRNTCAqKVxuICAgICAgICAgICAgfCBOZXdsaW5lcyBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgTXVsdGlwbGUgbGluZXMgaW4gaW5saW5lIEhUTUxcXG4lIVwiO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IF8gLT4gd2FybiBcIm11bHRpcGxlIG5ld2xpbmVzIGluIGlubGluZSBIVE1MXCI7IE5vbmUpXG4gICAgICAgICAgICAoKiBtYXliZSBjb2RlICopXG4gICAgICAgICAgICB8IChCYWNrcXVvdGUgfCBCYWNrcXVvdGVzIF8gYXMgYik6OnRsIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm8gY29kZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbm9uZVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBsZXQncyB0cnlcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYmNvZGUgW10gW1NwYWNlXSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKCgoQ29kZSBfOjpfKSBhcyBjKSwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1lZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5NRCBjOjpib2R5KSBbXSB0YWdzdGF0dXMgbFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogZmFpbGVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tiXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRsXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxMzYgcHJvcGVybHkgY2xvc2luZyAlUyB0b2tlbnM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdCAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW4gOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFucyhuLTEpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRva2VucykpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDFcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2c7dztTbGFzaDtMZXNzdGhhbl06OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTQ5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyAlUyB3aXRoICVTIDJcXG4lIVwiIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTU0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nbHkgY2xvc2luZyBub3RoaW5nIHdpdGggJVMgM1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6KFdvcmQodGFnbmFtZSkgYXMgd29yZCk6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgYmxpbmRfaHRtbFxuICAgICAgICAgICAgICAgIHx8IChzdHJpY3RfaHRtbCAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaW5saW5lX2h0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgICB8fCAobm90IHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sdGFnc19zZXQpXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDwlcy4uLlxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KSA6OiBfXG4gICAgICAgICAgICAgICAgICB3aGVuIHQgPD4gdGFnbmFtZSAmJiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3OTYgdGFnICVzLCBhdHRycz1bXVxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbd29yZDtMZXNzdGhhbl06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYix0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKGJAYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBlbmQgb2Ygb3BlbmluZyB0YWcgKilcbiAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxODUgZW5kIG9mIG9wZW5pbmcgdGFnIHRva2Vucz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IHRhZ3N0YXR1cyBhcyB0cyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGRuJ3QgZmluZCBhbiBjbG9zaW5nIHRhZyBmb3IgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSA0MTkyIEZvdW5kIGEgY2xvc2luZyB0YWcgJXMgdHM9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShULkhUTUwodCwgYXR0cnMsIGIpOjpib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBOb3RlOiB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSB2YWx1ZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHJzXSBoZXJlIGJlY2F1c2UgaW4gd2UgaGF2ZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnc3RhdHVzXSBtYXRjaGVzIFtULk9wZW4gXyA6OiBfXSBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXJlJ3MgYSBjb3JyZXNwb25kaW5nIGZpbHRlciB0aGF0IHdpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UgY2FyZSBvZiBhdHRycyB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpdC4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHkpIFtdIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSBUdXJucyBvdXQgYW4gYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tHcmVhdGVydGhhbl06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MjAyIHRhZ3N0YXR1cz1bXVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICAoKiBtYXliZSBhdHRyaWJ1dGUgKilcbiAgICAgICAgICAgIHwgKENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdCk6OnRva2Vuc1xuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgIDo6KENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdClcbiAgICAgICAgICAgICAgOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgQXR0cmlidXRlX3ZhbHVlID0gc3RydWN0XG4gICAgICAgICAgICAgICAgICB0eXBlIHQgPSBFbXB0eSBvZiBuYW1lIHwgTmFtZWQgb2YgbmFtZSB8IFZvaWRcbiAgICAgICAgICAgICAgICAgIGFuZCBuYW1lID0gc3RyaW5nXG4gICAgICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gQXR0cmlidXRlX3ZhbHVlIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHJpYnV0ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lKSA6OiB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgKEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKSA6OiBfIGFzIHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBFcXVhbCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgTmFtZWQoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IENvbG9uIHwgQ29sb25zIF8gfCBVbmRlcnNjb3JlIHwgVW5kZXJzY29yZXMgXyB8IFdvcmQgX1xuICAgICAgICAgICAgICAgICAgfCBOdW1iZXIgXyB8IE1pbnVzIHwgTWludXNzIF8gfCBEb3QgfCBEb3RzIF8gYXMgdCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF9hdHRyaWJ1dGUgKHQ6OmFjY3UpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCB0b2tlbnMgLT4gVm9pZCwgdG9rZW5zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleHRyYWN0X2F0dHJpYnV0ZSBbdF0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVtcHR5IGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgKCogYXR0cmlidXRlIHdpdGggbm8gZXhwbGljaXQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIE5vbmUpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgTmFtZWQgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICgzOTU3KSAlcz0lUyAlc1xcbiUhXCIgYXR0cmlidXRlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFZvaWQsIF8gLT4gTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6Ong6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2g7eF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgIHwgQmFja3NsYXNocyhuKTo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgJiYgbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbQmFja3NsYXNocyhuKTt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuXG4gICAgICAgICAgICB8IHg6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDE2MSkgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyAoeDo6dG9rZW5zKSk7XG4gICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbeF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgKDQyODkpIHNwYWNlc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgbG9vcCBib2R5IGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoNDI5NCkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjayB3aXRoIHRva2Vucz0lcyBhbmQgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKTtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byByZWFkIGFuIG9wZW4gSFRNTCB0YWcgKCVzKSwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICB8IFQuT3BlbiB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gZmluZCB0aGUgY2xvc2luZyBIVE1MIHRhZyBmb3IgJXMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICBpbiBtYXRjaCBsb29wIFtdIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgU29tZShodG1sLCByZXN0KSAtPlxuICAgICAgICAgICAgU29tZShULm1kX29mX2ludGVybV9saXN0IGh0bWwsIHJlc3QpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcmVhZF9odG1sKCkgd2l0aFxuICAgICAgICAgIHwgU29tZShoLCByZXN0KSAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoaEByKSBbR3JlYXRlcnRoYW5dIHJlc3RcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdCBpblxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCh0ZXh0IF4gdGFnbmFtZXRvcCk6OnIpIFt3XSBodG1sX3N0dWZmXG4gICAgICAgIGVuZFxuICAgICgqIC8gZW5kIG9mIGlubGluZSBIVE1MLiAqKVxuXG4gICAgKCogPCA6IGVtYWlscyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfYXV0b2VtYWlsIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogbGluZSBicmVha3MgKilcbiAgICB8IF8sIE5ld2xpbmU6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6cikgW05ld2xpbmVdIHRsXG4gICAgfCBfLCBOZXdsaW5lcyBfOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoTkw6Ok5MOjpyKSBbTmV3bGluZV0gdGxcblxuICAgICgqIFsgKilcbiAgICB8IF8sIChPYnJhY2tldCBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2xpbmsgbWFpbl9sb29wIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYXRjaCBtYXliZV9yZWZlcmVuY2UgbWFpbl9sb29wIHJjIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPcGFyZW50aGVzaXM6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW10oL3BhdGgvdG8vaW1nLmpwZykgKilcbiAgICAgICh0cnlcbiAgICAgICAgIGJlZ2luXG4gICAgICAgICAgIGxldCBiLCB0bCA9IHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIHRsIGluXG4gICAgICAgICAgICgqIG5ldyBsaW5lcyB0aGVyZSBhcmUgYWxsb3dlZCAqKVxuICAgICAgICAgICBsZXQgciAoKiB1cGRhdGVkIHJlc3VsdCAqKSA9IG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIDAgLT4gVGV4dCBcIiFcIiA6OiByXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICchJykgOjogclxuICAgICAgICAgICAgIHwgXyAtPiByIGluXG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgdHJ5IFNvbWUocmVhZF91bnRpbF9zcGFjZSB+YnE6ZmFsc2Ugfm5vX25sOnRydWUgYilcbiAgICAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gTm9uZVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgIHwgU29tZSh1cmwsIHRscykgLT5cbiAgICAgICAgICAgICBsZXQgdGl0bGUsIHNob3VsZF9iZV9lbXB0eV9saXN0ID1cbiAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZCAocmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0bHMpKSBpblxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgYiBpblxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhcIlwiLCB1cmwsIFwiXCIpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHRsXG4gICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgKCogaW1nIHJlZiAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9uIGFzIHQpXG4gICAgICAgICA6Ok9icmFja2V0OjpDYnJhY2tldDo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiByZWYgaW1hZ2UgaW5zZXJ0aW9uIHdpdGggbm8gXCJhbHRcIiAqKVxuICAgICAgKCogIVtdW3JlZl0gKilcbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBpZCwgdGwgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDp0cnVlIHRsIGluXG4gICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCB0bCBsZXhlbWVzIGluXG4gICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgaWQgaW5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBcIlwiLCBmYWxsYmFjaykgOjogcikgW0NicmFja2V0XSB0bFxuICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuXG4gICAgKCogaW1nICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb258RXhjbGFtYXRpb25zIF8gYXMgdCk6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgKCogaW1hZ2UgaW5zZXJ0aW9uIHdpdGggXCJhbHRcIiAqKVxuICAgICAgKCogIVtBbHQgdGV4dF0oL3BhdGgvdG8vaW1nLmpwZyBcIk9wdGlvbmFsIHRpdGxlXCIpICopXG4gICAgICAodHJ5XG4gICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHRsIHdpdGhcbiAgICAgICAgIHwgYWx0LCBPcGFyZW50aGVzaXM6Om50bCAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgIGxldCBwYXRoX3RpdGxlLCByZXN0ID1cbiAgICAgICAgICAgICAgICByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGgsIHRpdGxlID1cbiAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfc3BhY2UgfmJxOnRydWUgfm5vX25sOnRydWUgcGF0aF90aXRsZVxuICAgICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBwYXRoX3RpdGxlLCBbXSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUsIG5vdGhpbmcgPVxuICAgICAgICAgICAgICAgIGlmIHRpdGxlIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfZHEgfmJxOnRydWUgKHNuZChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRpdGxlKSlcbiAgICAgICAgICAgICAgICBlbHNlIFtdLCBbXSBpblxuICAgICAgICAgICAgICBpZiBub3RoaW5nIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb247ICgqIGNhdWdodCByaWdodCBiZWxvdyAqKVxuICAgICAgICAgICAgICBsZXQgciA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGggPSBMLnN0cmluZ19vZl90b2tlbnMgcGF0aCBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKGFsdCwgcGF0aCwgdGl0bGUpIDo6IHIpIFtDcGFyZW50aGVzaXNdIHJlc3RcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uXG4gICAgICAgICAgICAoKiBpZiBOTF9leGNlcHRpb24gd2FzIHJhaXNlZCwgdGhlbiBmYWxsIGJhY2sgdG8gXCJ0ZXh0XCIgKilcbiAgICAgICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICApXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OihTcGFjZXxTcGFjZXMgXyk6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgICAgOjpDYnJhY2tldDo6bnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OldvcmQoaWQpOjooU3BhY2V8U3BhY2VzIF8pOjpDYnJhY2tldDo6bnRsIC0+XG4gICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIG50bCBsZXhlbWVzIGluXG4gICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBhbHQsIGZhbGxiYWNrKTo6cikgW0NicmFja2V0XSBudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KChOZXdsaW5lfFNwYWNlfFNwYWNlcyBffFdvcmQgX3xOdW1iZXIgXyk6Ol9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIG50bCkgLT5cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIH5ub19ubDpmYWxzZSBudGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdLCByZXN0IC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgICAgfCBpZCwgcmVzdCAtPlxuICAgICAgICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlc3QgbGV4ZW1lcyBpblxuICAgICAgICAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgICAgICAgIGxldCBhbHQgPSBMLnN0cmluZ19vZl90b2tlbnMgYWx0IGluXG4gICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKVxuICAgICAgICAgICAgICAgICAgW0NicmFja2V0XVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICBlbmRcbiAgICAgICB3aXRoXG4gICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgIHwgXyxcbiAgICAgIChBdHxCYXJ8Q2FyZXR8Q2JyYWNlfENvbG9ufENvbW1hfENwYXJlbnRoZXNpc3xDYnJhY2tldHxEb2xsYXJcbiAgICAgIHxEb3R8RG91YmxlcXVvdGV8RXhjbGFtYXRpb258RXF1YWx8TWludXN8T2JyYWNlfE9wYXJlbnRoZXNpc1xuICAgICAgfFBlcmNlbnR8UGx1c3xRdWVzdGlvbnxRdW90ZXxTZW1pY29sb258U2xhc2h8VGFifFRpbGRlXG4gICAgICB8R3JlYXRlcnRoYW4gYXMgdCk6OnRsXG4gICAgICAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG4gICAgfCBfLCAoTnVtYmVyIF8gIGFzIHQpOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG4gICAgfCBfLCAoQXRzIF8gfCBCYXJzIF8gfCBDYXJldHMgXyB8IENicmFjZXMgXyB8IENicmFja2V0cyBfIHwgQ29sb25zIF9cbiAgICAgICAgIHwgQ29tbWFzIF8gfCBDcGFyZW50aGVzaXNzIF8gfCBEb2xsYXJzIF8gfCBEb3RzIF8gfCBEb3VibGVxdW90ZXMgX1xuICAgICAgICAgfCBFcXVhbHMgXyB8IEV4Y2xhbWF0aW9ucyBfIHwgR3JlYXRlcnRoYW5zIF8gfCBMZXNzdGhhbnMgX1xuICAgICAgICAgfCBNaW51c3MgXyB8IE9icmFjZXMgXyB8IE9icmFja2V0cyBfIHwgT3BhcmVudGhlc2lzcyBfXG4gICAgICAgICB8IFBlcmNlbnRzIF8gfCBQbHVzcyBfIHwgUXVlc3Rpb25zIF8gfCBRdW90ZXMgXyB8IFNlbWljb2xvbnMgX1xuICAgICAgICAgfCBTbGFzaHMgXyB8IFN0YXJzIF8gfCBUYWJzIF8gfCBUaWxkZXMgXyB8IFVuZGVyc2NvcmVzIF8gYXMgdGspXG4gICAgICAgICA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IHRrMCwgdGtzID0gTC5zcGxpdF9maXJzdCB0ayBpblxuICAgICAgICAgIGxldCB0ZXh0ID0gTC5zdHJpbmdfb2ZfdG9rZW4gdGswIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCB0ZXh0IDo6IHIpIFt0azBdICh0a3MgOjogdGwpXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuXG5cbiAgYW5kIG1haW5faW1wbCB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbCBodG1sPSViXFxuJSFcIiBodG1sOyAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIExpc3QucmV2IChtYWluX2xvb3BfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lcylcblxuICBhbmQgbWFpbl9sb29wID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbCB+aHRtbCByIHByZXZpb3VzIGxleGVtZXNcblxuICBhbmQgbWFpbl9sb29wX3JldiA/KGh0bWw9ZmFsc2UpIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG5cbiAgbGV0IG1haW5fcGFyc2UgbGV4ZW1lcyA9XG4gICAgbWFpbl9sb29wIFtdIFtdICh0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzKVxuXG4gIGxldCBwYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX3BhcnNlIGxleGVtZXNcblxuZW5kXG5cbmxldCBkZWZhdWx0X3BhcnNlID8oZXh0ZW5zaW9ucz1bXSkgPyhkZWZhdWx0X2xhbmc9XCJcIikgbGV4ZW1lcyA9XG4gIGxldCBlID0gZXh0ZW5zaW9ucyBhbmQgZCA9IGRlZmF1bHRfbGFuZyBpblxuICBsZXQgbW9kdWxlIEUgPSBEZWZhdWx0X2VudihVbml0KSBpblxuICBsZXQgbW9kdWxlIE0gPVxuICAgIE1ha2Uoc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gZVxuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IGRcbiAgICBlbmQpXG4gIGluXG4gIE0ubWFpbl9wYXJzZSBsZXhlbWVzXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFlvdSBzaG91bGQgZWl0aGVyIHVzZSB0aGlzIG1vZHVsZSBvciBPbWRfbGV4ZXIsIG5vdCBib3RoLlxuICAgIFRoaXMgbW9kdWxlIGluY2x1ZGVzIE9tZF9sZXhlci5cbiopXG5cbmluY2x1ZGUgT21kX2xleGVyXG5cbmxldCBsZXhfZnJvbV9pbmNoYW5uZWwgaWMgPVxuICAoKiBNYWludGVuYW5jZS1lYXNpbmVzcy1kcml2ZW4gaW1wbGVtZW50YXRpb24uICopXG4gIGxldCBpY19jb250ZW50ID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIChpbnB1dF9jaGFyIGljKVxuICAgICAgICBkb25lO1xuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gIGxleCBpY19jb250ZW50XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBPTUQ6IE1hcmtkb3duIHRvb2wgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxNCBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlOiAgSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaHRtbCA9IGh0bWxfbm9kZSBsaXN0XG5cbmFuZCBodG1sX25vZGUgPVxuICB8IE5vZGUgb2Ygbm9kZW5hbWUgKiBhdHRyaWJ1dGVzICogaHRtbFxuICB8IERhdGEgb2Ygc3RyaW5nXG4gIHwgUmF3ZGF0YSBvZiBzdHJpbmdcbiAgfCBDb21tZW50IG9mIHN0cmluZ1xuXG5hbmQgbm9kZW5hbWUgPSBzdHJpbmdcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgYXR0cmlidXRlID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG5sZXQgdG9fc3RyaW5nIGh0bWwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcHAgZiA9IFByaW50Zi5icHJpbnRmIGIgZiBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgTm9kZShub2RlbmFtZSwgYXR0cmlidXRlcywgaHRtbCkgLT5cbiAgICAgIHBwIFwiPCVzXCIgbm9kZW5hbWU7XG4gICAgICBwcGEgYXR0cmlidXRlcztcbiAgICAgIHBwIFwiPlwiO1xuICAgICAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgICAgIHBwIFwiPC8lcz5cIiBub2RlbmFtZVxuICAgIHwgRGF0YSBzIC0+IHBwIFwiJXNcIiBzXG4gICAgfCBSYXdkYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IENvbW1lbnQgYyAtPiBwcCBcIjwhLS0gJXMgLS0+XCIgY1xuICBhbmQgcHBhIGF0dHJzID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgICAgcHAgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICAgIGVsc2UgaWYgbm90IChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBwcCBcIiAlcz1cXFwiXCIgYTtcbiAgICAgICAgICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggdiAtIDEgZG9cbiAgICAgICAgICAgICAgICBtYXRjaCB2LltpXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnXCInIC0+IHBwIFwiJnF1b3Q7XCJcbiAgICAgICAgICAgICAgICB8IGMgICAgLT4gcHAgXCIlY1wiIGNcbiAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgcHAgXCJcXFwiXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgfCBhLCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnNcbiAgaW5cbiAgTGlzdC5pdGVyIGxvb3AgaHRtbDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmluY2x1ZGUgT21kX3JlcHJlc2VudGF0aW9uXG5pbmNsdWRlIE9tZF9iYWNrZW5kXG5cbmxldCBvZl9pbnB1dCBsZXggP2V4dGVuc2lvbnM6ZSA/ZGVmYXVsdF9sYW5nOmQgcyA9XG4gIGxldCBtb2R1bGUgRSA9IE9tZF9wYXJzZXIuRGVmYXVsdF9lbnYoc3RydWN0IGVuZCkgaW5cbiAgbGV0IG1vZHVsZSBQYXJzZXIgPSBPbWRfcGFyc2VyLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIEVcbiAgICAgIGxldCBleHRlbnNpb25zID0gbWF0Y2ggZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBFLmV4dGVuc2lvbnNcbiAgICAgIGxldCBkZWZhdWx0X2xhbmcgPSBtYXRjaCBkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZGVmYXVsdF9sYW5nXG4gICAgZW5kXG4gICkgaW5cbiAgbGV0IG1kID1cbiAgICBQYXJzZXIucGFyc2UgKGxleCBzKVxuICBpblxuICBQYXJzZXIubWFrZV9wYXJhZ3JhcGhzIG1kXG5cbmxldCBvZl9zdHJpbmcgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4XG5sZXQgb2ZfYmlnYXJyYXkgPSBvZl9pbnB1dCBPbWRfbGV4ZXIubGV4X2JpZ2FycmF5XG5cbmxldCB0b19odG1sIDpcbiAgP292ZXJyaWRlOihPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCAtPiBzdHJpbmcgb3B0aW9uKSAtPlxuICA/cGluZGVudDpib29sIC0+XG4gID9ubDJicjpib29sIC0+XG4gID9jczpjb2RlX3N0eWxpc3QgLT5cbiAgdCAtPlxuICBzdHJpbmdcbiAgPVxuICBodG1sX29mX21kXG5cbmxldCB0b190ZXh0IDogdCAtPiBzdHJpbmcgPSB0ZXh0X29mX21kXG5cbmxldCB0b19tYXJrZG93biA6IHQgLT4gc3RyaW5nID0gbWFya2Rvd25fb2ZfbWRcblxubGV0IGh0bWxfb2Zfc3RyaW5nIChodG1sOnN0cmluZykgOiBzdHJpbmcgPVxuICBodG1sX29mX21kIChPbWRfcGFyc2VyLmRlZmF1bHRfcGFyc2UgKE9tZF9sZXhlci5sZXggaHRtbCkpXG5cblxubGV0IHJlYyBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgPSBmdW5jdGlvblxuICB8IENvZGUoXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZShsYW5nLCBjb2RlKSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBDb2RlX2Jsb2NrKFwiXCIsIGNvZGUpIDo6IHRsIC0+IENvZGVfYmxvY2sobGFuZywgY29kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBSZWN1cnNlIG9uIGFsbCBlbGVtZW50cyBldmVuIHRob3VnaCBjb2RlIChibG9ja3MpIGFyZSBub3QgYWxsb3dlZFxuICAgICBldmVyeXdoZXJlLiAqKVxuICB8IEgxIHQgOjogdGwgLT4gSDEoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgyIHQgOjogdGwgLT4gSDIoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEgzIHQgOjogdGwgLT4gSDMoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg0IHQgOjogdGwgLT4gSDQoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg1IHQgOjogdGwgLT4gSDUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEg2IHQgOjogdGwgLT4gSDYoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFBhcmFncmFwaCB0IDo6IHRsIC0+IFBhcmFncmFwaChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdClcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEVtcGggdCA6OiB0bCAtPiBFbXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBCb2xkIHQgOjogdGwgLT4gQm9sZChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWwgdCA6OiB0bCAtPiBVbChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbCB0IDo6IHRsIC0+IE9sKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVscCB0IDo6IHRsIC0+IFVscChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgT2xwIHQgOjogdGwgLT4gT2xwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVcmwoaHJlZiwgdCwgdGl0bGUpIDo6IHRsIC0+IFVybChocmVmLCBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCwgdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJsb2NrcXVvdGUgdCA6OiB0bCAtPiBCbG9ja3F1b3RlKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICAoKiBFbGVtZW50cyB0aGF0IGRvIG5vdCBjb250YWluIE1hcmtkb3duLiAqKVxuICB8IChUZXh0IF98Q29kZSBffENvZGVfYmxvY2sgX3xCcnxIcnxOTHxSZWYgX3xJbWdfcmVmIF98UmF3IF98UmF3X2Jsb2NrIF9cbiAgICB8SHRtbCBffEh0bWxfYmxvY2sgX3xIdG1sX2NvbW1lbnQgX3xJbWcgX3xYIF8pIGFzIGUgOjogdGwgLT5cbiAgICAgZSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBbXSAtPiBbXVxuXG5cbigqIFRhYmxlIG9mIGNvbnRlbnRzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEdpdmVuIGEgbGlzdCBvZiBoZWFkZXJzIOKAlCBpbiB0aGUgb3JkZXIgb2YgdGhlIGRvY3VtZW50IOKAlCBnbyB0byB0aGVcbiAgIHJlcXVlc3RlZCBzdWJzZWN0aW9uLiAgV2UgZmlyc3Qgc2VlayBmb3IgdGhlIFtudW1iZXJddGggaGVhZGVyIGF0XG4gICBbbGV2ZWxdLiAgKilcbmxldCByZWMgZmluZF9zdGFydCBoZWFkZXJzIGxldmVsIG51bWJlciBzdWJzZWN0aW9ucyA9XG4gIG1hdGNoIGhlYWRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgKEgxIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDIgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDMgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAzIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg0IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNCBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINSBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDUgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDYgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA2IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgXyA6OiBfIC0+IGFzc2VydCBmYWxzZVxuXG5hbmQgZGVhbF93aXRoX2hlYWRlciBoX2xldmVsIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgaWYgaF9sZXZlbCA+IGxldmVsIHRoZW4gKCogU2tpcCwgcmlnaHQgW2xldmVsXS1oZWFkZXIgbm90IHlldCByZWFjaGVkLiAqKVxuICAgIGlmIG51bWJlciA9IDAgdGhlblxuICAgICAgKCogQXNzdW1lIGVtcHR5IHNlY3Rpb24gYXQgW2xldmVsXSwgZG8gbm90IGNvbnN1bWUgdG9rZW4uICopXG4gICAgICAobWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgIHwgW10gLT4gaGVhZGVycyAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgICB8IG4gOjogc3Vic2VjdGlvbnMgLT4gZmluZF9zdGFydCBoZWFkZXJzIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnMpXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICBlbHNlIGlmIGhfbGV2ZWwgPSBsZXZlbCB0aGVuIChcbiAgICAoKiBBdCBwcm9wZXIgW2xldmVsXS4gIEhhdmUgd2UgcmVhY2hlZCB0aGUgW251bWJlcl0gb25lPyAqKVxuICAgIGlmIG51bWJlciA8PSAxIHRoZW4gKFxuICAgICAgbWF0Y2ggc3Vic2VjdGlvbnMgd2l0aFxuICAgICAgfCBbXSAtPiB0bCAoKiBubyBzdWJzZWN0aW9uIHRvIGZpbmQgKilcbiAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IHRsIChsZXZlbCArIDEpIG4gc3Vic2VjdGlvbnNcbiAgICApXG4gICAgZWxzZSBmaW5kX3N0YXJ0IHRsIGxldmVsIChudW1iZXIgLSAxKSBzdWJzZWN0aW9uc1xuICApXG4gIGVsc2UgKCogaF9sZXZlbCA8IGxldmVsICopXG4gICAgW10gKCogU291Z2h0IFtsZXZlbF0gaGFzIG5vdCBiZWVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHNlY3Rpb24gKilcblxuKCogQXNzdW1lIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGhlYWRlcnMgd2UgYXJlIGludGVyZXN0ZWQgaW4uXG4gICBSZXR1cm4gdGhlIGxpc3Qgb2YgVE9DIGVudHJpZXMgZm9yIFttaW5fbGV2ZWxdIGFuZCB0aGUgW2hlYWRlcnNdXG4gICBub3QgdXNlZCBmb3IgdGhlIFRPQyBlbnRyaWVzLiAqKVxubGV0IHJlYyBtYWtlX3RvYyAoaGVhZGVyczooZWxlbWVudCpzdHJpbmcqc3RyaW5nKWxpc3QpIH5taW5fbGV2ZWwgfm1heF9sZXZlbCA9XG4gIGlmIG1pbl9sZXZlbCA+IG1heF9sZXZlbCB0aGVuIFtdLCBoZWFkZXJzXG4gIGVsc2UgKFxuICAgIG1hdGNoIGhlYWRlcnMgd2l0aFxuICAgIHwgW10gLT4gW10sIFtdXG4gICAgfCAoSDEgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDEgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChIMiB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMiB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgzIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAzIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDQgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDQgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg2IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA2IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIClcbmFuZCB0b2NfZW50cnkgaGVhZGVycyBoX2xldmVsIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgaF9sZXZlbCA+IG1heF9sZXZlbCB0aGVuICgqIHRvbyBkZWVwLCBza2lwICopXG4gICAgbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gIGVsc2UgaWYgaF9sZXZlbCA8IG1pbl9sZXZlbCB0aGVuXG4gICAgKCogc2VjdGlvbiB3ZSB3YW50ZWQgdGhlIFRPQyBmb3IgaXMgZmluaXNoZWQsIGRvIG5vdCBjb21zdW1lIHRoZSB0b2tlbiAqKVxuICAgIFtdLCBoZWFkZXJzXG4gIGVsc2UgaWYgaF9sZXZlbCA9IG1pbl9sZXZlbCB0aGVuIChcbiAgICBsZXQgc3ViX3RvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvY19lbnRyeSA9IG1hdGNoIHN1Yl90b2Mgd2l0aFxuICAgICAgfCBbXSAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTF1cbiAgICAgIHwgXyAtPiBbVXJsKFwiI1wiIF4gaWQsIHQsIFwiXCIpOyBOTDsgVWwgc3ViX3RvYzsgTkxdIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICB0b2NfZW50cnkgOjogdG9jLCB0bFxuICApIGVsc2UgKCogaF9sZXZlbCA+IG1pbl9sZXZlbCAqKVxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIGhlYWRlcnMgfm1pbl9sZXZlbDoobWluX2xldmVsICsgMSkgfm1heF9sZXZlbCBpblxuICAgIGxldCB0b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsIGluXG4gICAgW1VsIHN1Yl90b2NdIDo6IHRvYywgdGxcblxubGV0IHRvYyA/KHN0YXJ0PVtdKSA/KGRlcHRoPTIpIG1kID1cbiAgaWYgZGVwdGggPCAxIHRoZW4gaW52YWxpZF9hcmcgXCJPbWQudG9jOiB+ZGVwdGggbXVzdCBiZSA+PSAxXCI7XG4gIGxldCBoZWFkZXJzID0gT21kX2JhY2tlbmQuaGVhZGVyc19vZl9tZCB+cmVtb3ZlX2hlYWRlcl9saW5rczp0cnVlIG1kIGluXG4gIGxldCBoZWFkZXJzID0gbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgW10gLT4gaGVhZGVyc1xuICAgIHwgbnVtYmVyIDo6IHN1YnNlY3Rpb25zIC0+XG4gICAgICAgaWYgbnVtYmVyIDwgMCB0aGVuIGludmFsaWRfYXJnKFwiT21kLnRvYzogbGV2ZWwgMSBzdGFydCBtdXN0IGJlID49IDBcIik7XG4gICAgICAgZmluZF9zdGFydCBoZWFkZXJzIDEgbnVtYmVyIHN1YnNlY3Rpb25zIGluXG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBzdGFydCBpblxuICBsZXQgdG9jLCBfID0gbWFrZV90b2MgaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgfm1pbl9sZXZlbDoobGVuICsgMSkgfm1heF9sZXZlbDoobGVuICsgZGVwdGgpIGluXG4gIG1hdGNoIHRvYyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBfIC0+IFtVbCh0b2MpXVxuXG5sZXQgYWRkX3RvYyA/c3RhcnQgP2RlcHRoID90aXRsZSBtZCA9XG4gIGxldCB0b2MgPSB0b2MgP3N0YXJ0ID9kZXB0aCBtZCBpblxuICAoKiBSZXBsYWNlIFwiKlRhYmxlIG9mIGNvbnRlbnRzKlwiIHdpdGggdGhlIGFjdHVhbCBUT0MuICopXG4gIHRvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= diff --git a/projectors/style.css b/projectors/style.css index 52fe0f0b..4c87638f 100644 --- a/projectors/style.css +++ b/projectors/style.css @@ -698,6 +698,9 @@ select { .projector.indicated > svg { fill: var(--exp-bg-off-color); } +.projector > svg > path { + /* filter: url(#raised-drop-shadow-Exp) !important; */ +} /* PROJECTOR: FOLD */ @@ -711,18 +714,21 @@ select { /* PROJECTOR: INFO */ -.projector.type { +.projector.type .type { color: var(--typ-text-color); } -.projector.type:hover { - opacity: 1; -} -.projector.type > svg { +/* .projector.type > svg { fill: var(--typ-bg-off-color); -} +} */ .projector.type { cursor: pointer; } +.projector.type .info { + display: flex; +} +.projector.type:hover { + color: black; +} /* PROJECTOR: CHECKBOX */ @@ -731,6 +737,9 @@ select { filter: sepia(1); cursor: pointer; } +.projector.check:not(.indicated):not(:hover) > svg { + fill: #0000; +} /* PROJECTOR: SLIDERS (INT & FLOAT) */ @@ -741,6 +750,10 @@ select { filter: sepia(1); cursor: pointer; } +.projector.slide:not(.indicated):not(:hover) > svg, +.projector.slidef:not(.indicated):not(:hover) > svg { + fill: #0000; +} /* PROJECTOR: TEXTAREA */ @@ -748,7 +761,7 @@ select { cursor: default; } -.projector.text .projector-wrapper { +.projector.text .wrapper { height: 100%; width: 100%; border-radius: 0.1em; @@ -757,46 +770,51 @@ select { margin-left: -2px; margin-right: -2px; } -.projector.text.indicated.left .projector-wrapper { +.projector.text.indicated.left .wrapper { border-right: 2px solid red; animation: 1s blink_border_right step-end infinite; } -.projector.text.indicated.right .projector-wrapper { +.projector.text.indicated.right .wrapper { border-left: 2px solid red; animation: 1s blink_border_left step-end infinite; } -.projector.text .projector-wrapper:has(.cols.inside), -.projector.text .projector-wrapper:has(.cols.inside) { +.projector.text.indicated:has(textarea:focus) .wrapper { border-color: #0000; animation: none; } +.projector.text.indicated:has(textarea:focus) .cols { + color: red; +} + .projector.text .cols { height: 100%; width: 100%; display: flex; - border-radius: 0.1em; + border-radius: 0 0.1em 0.1em 0.1em; outline: 0.3px solid #a69460; - background-color: #e0d1b7; - color: #f0e7d6; + color: #fff; + background: repeating-linear-gradient( + #f0e7d6, + #f0e7d6 1.41em, + #add8ff 1.41em, + #add8ff 1.46em + ); } .projector.text.selected .cols { - background-color: var(--selection-color); - color: #c7b491; -} -.projector.text.selected textarea { background: repeating-linear-gradient( var(--selection-color), var(--selection-color) 1.4em, #e0d1b7 1.4em, #e0d1b7 1.46em ); + color: #c7b491; } .projector.text textarea { + outline: none; resize: none; - height: 100%; width: 100%; caret-color: red; padding: 0; @@ -805,15 +823,9 @@ select { font-family: "Source Code Pro", monospace; font-size: inherit; border: none; - border-radius: 0.1em; - outline: 0.3px solid #a69460; color: #8c7e62; - background: repeating-linear-gradient( - #f0e7d6, - #f0e7d6 1.4em, - #e0d1b7 1.4em, - #e0d1b7 1.46em - ); + background: none; + box-shadow: inset 1px 0 0 #ff8ea88a; } .projector.text textarea::selection { diff --git a/projectors/worker.js b/projectors/worker.js index 8d2e441f..536aa635 100644 --- a/projectors/worker.js +++ b/projectors/worker.js @@ -315821,7 +315821,7 @@ a!=="number")switch(a[0]){case 5:/*<>*/return 1}/*<>*/return 0/*<>*/},b),v=m[1];if(!m[2])/*<>*/return s(v);b=/*<>*/c(h[37],m[2],v)}}/*<>*/}i.caml_register_global(9,[0,q,r,s,j,function(a,b){/*<>*/var/*<>*/c=/*<>*/e(g[9],b),/*<>*/d=/*<>*/e(g[7],c);/*<>*/return j([0,[6,/*<>*/e(g[8],a),d],0])/*<>*/},function(a){/*<>*/ /*<>*/var b=/*<>*/e(g[8],a);/*<>*/return j([0,/*<>*/e(g[7],b),0])/*<>*/}],"Haz3lcore__Incon");return/*<>*/}(globalThis)); -//# 6204 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6202 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var cp=203,ax=191,aw=188,Y=187,d="$Meta",o=a.jsoo_runtime,cn=o.caml_equal;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -315831,11 +315831,11 @@ E(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):o.caml_call_gen(a,[b, aW(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):o.caml_call_gen(a,[b,c,d,e,f])}/*<>*/function eX(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):o.caml_call_gen(a,[b,c,d,e,f,g])}/*<>*/function co(a,b,c,d,e,f,g,h){return(a.l>=0?a.l:a.l=a.length)==7?a(b,c,d,e,f,g,h):o.caml_call_gen(a,[b,c,d,e,f,g,h])}var -b=o.caml_get_global_data(),l=b.Haz3lcore__CoCtx,s=b.Stdlib,k=b.Stdlib__List,n=b.Haz3lcore__Info,Q=b.Haz3lcore__Incon,t=b.Haz3lcore__Typ,m=b.Haz3lcore__Term,r=b.Haz3lcore__Mode,B=b.Haz3lcore__Self,z=b.Haz3lcore__Ctx,v=b.Haz3lcore__Id,R=b.Haz3lcore__Constraint,y=b.Stdlib__Option,db=[0,0],cu=[0,[0,2]],cv=[0,[5,0]],cx=[0,2],cy=[0,0],cz=[0,1],cA=[0,3],cI=[0,2],cU="?",c8=[0,2],dT=[0,[0,2]],d1=[0,2],d7=[0,[0,2]],d8=[0,[5,0]],d$=[0,1],ea=[0,2],es=[8,"$v"],et=[8,"$e"],eq=[1,d],er=[0,2],eF=[0,2],eV=[0,2],dC=[5,0],aB=[8,0],aj=[0,[5,0]],ak=[0,0],al=[0,1],am=[8,0],ap=[9,0],ao=[0,2],aq=[0,3],aE=[1,[0,[0,2]]],M=[0,0],N=[0,2],S=[0,0],W=[0,0],T=[0,0],$=[0,0],X=[0,0],_="RETICULATING SPLINES",H=[0,[1,d],[0,[0,d]]],I=[0,0,0],L=[0,2,2],F=[0,2,2,2],C=[0,[15,0],"%a"],U=[0,1000],D=b.Stdlib__Format,V=b.Core__Memo,c=[];function +b=o.caml_get_global_data(),l=b.Haz3lcore__CoCtx,t=b.Stdlib,k=b.Stdlib__List,n=b.Haz3lcore__Info,Q=b.Haz3lcore__Incon,s=b.Haz3lcore__Typ,m=b.Haz3lcore__Term,r=b.Haz3lcore__Mode,B=b.Haz3lcore__Self,z=b.Haz3lcore__Ctx,v=b.Haz3lcore__Id,R=b.Haz3lcore__Constraint,y=b.Stdlib__Option,db=[0,0],cu=[0,[0,2]],cv=[0,[5,0]],cx=[0,2],cy=[0,0],cz=[0,1],cA=[0,3],cI=[0,2],cU="?",c8=[0,2],dT=[0,[0,2]],d1=[0,2],d7=[0,[0,2]],d8=[0,[5,0]],d$=[0,1],ea=[0,2],es=[8,"$v"],et=[8,"$e"],eq=[1,d],er=[0,2],eF=[0,2],eV=[0,2],dC=[5,0],aB=[8,0],aj=[0,[5,0]],ak=[0,0],al=[0,1],am=[8,0],ap=[9,0],ao=[0,2],aq=[0,3],aE=[1,[0,[0,2]]],M=[0,0],N=[0,2],S=[0,0],W=[0,0],T=[0,0],$=[0,0],X=[0,0],H=[0,[1,d],[0,[0,d]]],I=[0,0,0],L=[0,2,2],F=[0,2,2,2],C=[0,[15,0],"%a"],U=[0,1000],D=b.Stdlib__Format,V=b.Core__Memo,c=[];function e(a){/*<>*/return h(c[1],function(a){/*<>*/return i(c[2],a)},a)}o.caml_update_dummy(c,[0,v[15][48],n[169]]);function J(d,b,c){/*<>*/return/*<>*/j(k[26],function(a,b){/*<>*/var c=a[1];/*<>*/return function(a){/*<>*/var -b=a[2];/*<>*/return[0,/*<>*/h(s[37],c,[0,a[1],0]),b]/*<>*/}(/*<>*/h(d,b,a[2]))/*<>*/},[0,0,c],b)/*<>*/}function +b=a[2];/*<>*/return[0,/*<>*/h(t[37],c,[0,a[1],0]),b]/*<>*/}(/*<>*/h(d,b,a[2]))/*<>*/},[0,0,c],b)/*<>*/}function G(a,d,c){/*<>*/return/*<>*/i(/*<>*/h(k[26],function(a,b){/*<>*/return/*<>*/j(v[15][2],b,d,a)/*<>*/},c),a)/*<>*/}function g(a){/*<>*/var b=a;/*<>*/for(;;){if(typeof @@ -315845,7 +315845,7 @@ b!=="number")switch(b[0]){case 7:b=b[2];continue}/*<>*/return 0}/*<>*/}function ay(a,b,c,d){/*<>*/var/*<>*/j=/*<>*/i(m[12][28],b),/*<>*/l=/*<>*/i(m[13][92],c);if(j&&l){var e=j[1],o=l[1];if(0!==e&&e===o){/*<>*/ /*<>*/var -f=/*<>*/h(t[48],a,d);if(typeof +f=/*<>*/h(s[48],a,d);if(typeof f!=="number"&&5===f[0]){var n=f[1];if(/*<>*/i(k[1],n)===e)/*<>*/return/*<>*/i(/*<>*/i(k[33],g),n)}/*<>*/return g(f)?1===e?1:0:0}}/*<>*/return 0/*<>*/}function f(a){/*<>*/return 5<=a?2:0/*<>*/}function @@ -315868,7 +315868,7 @@ g=u(a,0,b,c[1],d)[2];/*<>*/return[0,l[1 3:/*<>*/ /*<>*/var h=A(a,b,c[1],d)[2];/*<>*/return[0,l[13],h];default:/*<>*/return[0,l[13],d]}/*<>*/}function K(f,e,c,d){/*<>*/return/*<>*/j(k[26],function(a,b){/*<>*/var -d=a[1],/*<>*/c=w(f,e,b,a[2]),g=c[2];/*<>*/return[0,/*<>*/h(s[37],d,[0,c[1],0]),g]/*<>*/},[0,0,c],d)/*<>*/}function +d=a[1],/*<>*/c=w(f,e,b,a[2]),g=c[2];/*<>*/return[0,/*<>*/h(t[37],d,[0,c[1],0]),g]/*<>*/},[0,0,c],d)/*<>*/}function O(g,b,c,d,e,f){var Z=b?b[1]:2,aB=c?c[1]:0,a=e[2];a:{b:{var cq=e[1];/*<>*/if(typeof @@ -315880,7 +315880,7 @@ cm!=="number")break b;if(cm)break b;/*< p=Z}function F(a,b,c){/*<>*/ /*<>*/var f=/*<>*/eX(n[202],e,g,p,d,a,b);/*<>*/return[0,f,G(cq,[0,f],c)]/*<>*/}/*<>*/function -q(a,b,c){/*<>*/return F([4,a],b,c)/*<>*/}/*<>*/var/*<>*/cr=[0,/*<>*/i(m[13][76],e),0],/*<>*/x=/*<>*/h(s[37],cr,d);function +q(a,b,c){/*<>*/return F([4,a],b,c)/*<>*/}/*<>*/var/*<>*/cr=[0,/*<>*/i(m[13][76],e),0],/*<>*/x=/*<>*/h(t[37],cr,d);function cs(a,b,c,d,e,f){/*<>*/var g=b?b[1]:2,h=c?c[1]:aB,i=d?d[1]:x;/*<>*/return O(a,[0,g],[0,h],i,e,f)/*<>*/}/*<>*/var ct=[0,x];function @@ -315889,7 +315889,7 @@ c(a,b,c,d,e){/*<>*/return cs(f,a,b,c,d,e)}/*<>*/function _(a){/*<>*/return/*<>*/h(k[31],function(a,b,c){/*<>*/var d=a[2],e=a[1];/*<>*/return function(a){/*<>*/var -b=a[2];/*<>*/return[0,/*<>*/h(s[37],e,[0,a[1],0]),b]/*<>*/}(/*<>*/h(o([0,b],0),c,d))/*<>*/},[0,0,a])/*<>*/}function +b=a[2];/*<>*/return[0,/*<>*/h(t[37],e,[0,a[1],0]),b]/*<>*/}(/*<>*/h(o([0,b],0),c,d))/*<>*/},[0,0,a])/*<>*/}function w(f){function d(a,b,c,d,e){/*<>*/return P(f,g,a,b,c,d,e)}/*<>*/return function(e){/*<>*/return function(a,b,c){/*<>*/return d(e,x,a,b,c)}}}function C(a){/*<>*/return q(a,l[13],f)/*<>*/}if(typeof @@ -315917,7 +315917,7 @@ aP=a[1],/*<>*/cZ=/*<>*/c4=/*<>*/i(r[8],p),/*<>*/c5=/*<>*/i(m[13][76],e),/*<>*/c6=/*<>*/j(l[16],aS,c5,c4);/*<>*/return F(/*<>*/h(B[35],g,aS),c6,f);case 13:var L=a[2],M=a[1],c7=a[3],c9=l[13],H=/*<>*/j(w(1)(c9),c8,M,f)[1];/*<>*/if(ay(g,M,L,H[9])){/*<>*/var/*<>*/c_=[0,[0,H[9]]],aT=/*<>*/h(y(H[3])(c_,0),L,f)[1],/*<>*/aU=aT[9],/*<>*/c$=l[13],/*<>*/ad=/*<>*/j(w(0)(c$),[0,[0,aU]],M,f)[1][3],/*<>*/da=[0,[0,H[9]]],/*<>*/aV=function(a,b){/*<>*/var -c=a[1],/*<>*/d=/*<>*/cn(b,db),e=a[2],/*<>*/f=d?1-/*<>*/h(t[41],c,e):d;return f?c:b/*<>*/},/*<>*/T=/*<>*/h(y(ad)(da,0),L,f)[1][9],U=aT[9],V=H[9];a:{b:if(typeof +c=a[1],/*<>*/d=/*<>*/cn(b,db),e=a[2],/*<>*/f=d?1-/*<>*/h(s[41],c,e):d;return f?c:b/*<>*/},/*<>*/T=/*<>*/h(y(ad)(da,0),L,f)[1][9],U=aT[9],V=H[9];a:{b:if(typeof U!=="number"&&5===U[0]&&typeof T!=="number"&&5===T[0]){if(typeof V!=="number"&&5===V[0]){/*<>*/var @@ -315928,18 +315928,18 @@ a_=a[3],I=a[2],W=a[1],/*<>*/a$=A(g,x,W, af!=="number"&&2===af[0]){var D=af[1];/*<>*/if(!/*<>*/h(z[40],g,D)){/*<>*/var/*<>*/dp=/*<>*/h(z[28],g,D),/*<>*/bc=/*<>*/h(m[11][30],dp,I),/*<>*/bd=I[2];a:{if(typeof bd!=="number"&&9===bd[0]){/*<>*/ /*<>*/var -dw=/*<>*/h(t[42],0,bc);/*<>*/if(/*<>*/h(k[37],D,dw)){/*<>*/var/*<>*/bk=[6,D,bc],/*<>*/dx=/*<>*/i(m[10][18],W),/*<>*/bl=/*<>*/E(z[27],g,D,dx,bk),ah=bl,bf=bl,ag=bk;break a}}/*<>*/var/*<>*/be=/*<>*/h(m[11][30],g,I),/*<>*/dq=/*<>*/i(m[10][18],W),ah=/*<>*/E(z[27],g,D,dq,be),bf=g,ag=be}/*<>*/ /*<>*/var -bg=/*<>*/h(t[50],g,ag);if(bg)/*<>*/var +dw=/*<>*/h(s[42],0,bc);/*<>*/if(/*<>*/h(k[37],D,dw)){/*<>*/var/*<>*/bk=[6,D,bc],/*<>*/dx=/*<>*/i(m[10][18],W),/*<>*/bl=/*<>*/E(z[27],g,D,dx,bk),ah=bl,bf=bl,ag=bk;break a}}/*<>*/var/*<>*/be=/*<>*/h(m[11][30],g,I),/*<>*/dq=/*<>*/i(m[10][18],W),ah=/*<>*/E(z[27],g,D,dq,be),bf=g,ag=be}/*<>*/ /*<>*/var +bg=/*<>*/h(s[50],g,ag);if(bg)/*<>*/var dr=bg[1],/*<>*/ds=/*<>*/i(m[11][24],I),bh=/*<>*/E(z[36],ah,D,ds,dr);else var -bh=ah;/*<>*/var/*<>*/bi=/*<>*/h(y(bh)([0,p],0),a_,a$),bj=bi[1],dt=bi[2],du=bj[6],/*<>*/dv=/*<>*/j(t[39],ag,D,bj[9]);/*<>*/return q([0,dv],du,u(bf,0,x,I,dt)[2])}}/*<>*/var/*<>*/ba=/*<>*/h(y(g)([0,p],0),a_,a$),bb=ba[1],dm=bb[9],dn=bb[6];/*<>*/return q([0,dm],dn,u(g,0,x,I,ba[2])[2]);case +bh=ah;/*<>*/var/*<>*/bi=/*<>*/h(y(bh)([0,p],0),a_,a$),bj=bi[1],dt=bi[2],du=bj[6],/*<>*/dv=/*<>*/j(s[39],ag,D,bj[9]);/*<>*/return q([0,dv],du,u(bf,0,x,I,dt)[2])}}/*<>*/var/*<>*/ba=/*<>*/h(y(g)([0,p],0),a_,a$),bb=ba[1],dm=bb[9],dn=bb[6];/*<>*/return q([0,dm],dn,u(g,0,x,I,ba[2])[2]);case 15:var bm=a[2],ai=a[1];break;case 16:/*<>*/var -bt=a[2],dF=a[1],/*<>*/bu=/*<>*/h(o([0,r[20]],0),dF,f),ak=bu[1],bv=u(g,0,x,bt,bu[2])[2],/*<>*/bw=/*<>*/h(t[34],g,ak[9]),bx=bw[2],by=bw[1],/*<>*/dG=/*<>*/h(m[11][30],g,bt);/*<>*/if(!by)/*<>*/return q([0,bx],ak[6],bv);var -dH=ak[6];/*<>*/return q([0,/*<>*/j(t[39],dG,by[1],bx)],dH,bv);case +bt=a[2],dF=a[1],/*<>*/bu=/*<>*/h(o([0,r[20]],0),dF,f),ak=bu[1],bv=u(g,0,x,bt,bu[2])[2],/*<>*/bw=/*<>*/h(s[34],g,ak[9]),bx=bw[2],by=bw[1],/*<>*/dG=/*<>*/h(m[11][30],g,bt);/*<>*/if(!by)/*<>*/return q([0,bx],ak[6],bv);var +dH=ak[6];/*<>*/return q([0,/*<>*/j(s[39],dG,by[1],bx)],dH,bv);case 17:/*<>*/var -al=a[2],bz=a[1],/*<>*/dI=/*<>*/i(m[13][90],bz),/*<>*/bA=/*<>*/h(o([0,/*<>*/j(r[19],g,p,dI)],0),bz,f),bB=bA[1],dJ=bA[2],/*<>*/bC=/*<>*/h(t[33],g,bB[9]),dK=bC[2],dL=bC[1],/*<>*/bD=/*<>*/i(k[1],al),/*<>*/bE=/*<>*/j(t[37],g,bD,dL),/*<>*/dM=/*<>*/j(B[37],al,bE,dK),/*<>*/dN=/*<>*/h(r[21],bD,bE),/*<>*/bF=/*<>*/h(_(dJ),dN,al),dO=bF[2],/*<>*/dP=/*<>*/h(k[20],n[Y],bF[1]),dQ=[0,/*<>*/i(l[15],dP),0];/*<>*/return F(dM,/*<>*/i(l[15],[0,bB[6],dQ]),dO);case +al=a[2],bz=a[1],/*<>*/dI=/*<>*/i(m[13][90],bz),/*<>*/bA=/*<>*/h(o([0,/*<>*/j(r[19],g,p,dI)],0),bz,f),bB=bA[1],dJ=bA[2],/*<>*/bC=/*<>*/h(s[33],g,bB[9]),dK=bC[2],dL=bC[1],/*<>*/bD=/*<>*/i(k[1],al),/*<>*/bE=/*<>*/j(s[37],g,bD,dL),/*<>*/dM=/*<>*/j(B[37],al,bE,dK),/*<>*/dN=/*<>*/h(r[21],bD,bE),/*<>*/bF=/*<>*/h(_(dJ),dN,al),dO=bF[2],/*<>*/dP=/*<>*/h(k[20],n[Y],bF[1]),dQ=[0,/*<>*/i(l[15],dP),0];/*<>*/return F(dM,/*<>*/i(l[15],[0,bB[6],dQ]),dO);case 18:var bm=a[1],ai=a[2];break;case 19:/*<>*/var @@ -315972,11 +315972,11 @@ eu=a[2],/*<>*/b_=aA(b5),ev=b_[2],/*<>*/ap=az(a[1]),ey=ap[3],ez=ap[2],/*<>*/ca=/*<>*/h(o([0,[0,ap[1]]],0),ex,f),eA=ca[2],eB=ca[1],/*<>*/cb=/*<>*/h(o([0,[0,ez]],0),ew,eA),eC=cb[2];/*<>*/return q([0,ey],/*<>*/i(l[15],[0,eB[6],[0,cb[1][6],0]]),eC);default:/*<>*/var eD=a[2],eE=a[1],/*<>*/cc=/*<>*/h(o(eF,0),eE,f),cd=cc[2],N=cc[1],/*<>*/ce=/*<>*/i(k[57],eD),cf=ce[2],X=ce[1],/*<>*/eG=/*<>*/h(k[20],m[13][76],cf),/*<>*/eH=[0,[0,N[9]]],/*<>*/eI=l[13],eJ=J(/*<>*/i(w(0)(eI),eH),X,cd)[1],/*<>*/cg=/*<>*/h(k[20],n[189],eJ),/*<>*/ch=/*<>*/E(k[31],function(a,b,c){/*<>*/var d=a[2],e=a[1];/*<>*/return function(a){/*<>*/var -b=a[2];/*<>*/return[0,/*<>*/h(s[37],e,[0,a[1],0]),b]/*<>*/}(/*<>*/h(y(c)([0,p],0),b,d))/*<>*/},[0,0,cd],cf,cg),aq=ch[2],ci=ch[1],/*<>*/eK=/*<>*/h(k[20],n[aw],ci),/*<>*/eL=/*<>*/h(k[20],n[Y],ci),/*<>*/eM=/*<>*/i(l[14],g),/*<>*/ar=/*<>*/j(k[29],eM,cg,eL),/*<>*/as=[4,/*<>*/j(B[39],g,eK,eG)],/*<>*/at=N[9];a:{if(typeof +b=a[2];/*<>*/return[0,/*<>*/h(t[37],e,[0,a[1],0]),b]/*<>*/}(/*<>*/h(y(c)([0,p],0),b,d))/*<>*/},[0,0,cd],cf,cg),aq=ch[2],ci=ch[1],/*<>*/eK=/*<>*/h(k[20],n[aw],ci),/*<>*/eL=/*<>*/h(k[20],n[Y],ci),/*<>*/eM=/*<>*/i(l[14],g),/*<>*/ar=/*<>*/j(k[29],eM,cg,eL),/*<>*/as=[4,/*<>*/j(B[39],g,eK,eG)],/*<>*/at=N[9];a:{if(typeof at!=="number"&&0===at[0]){/*<>*/var eR=l[13],/*<>*/eS=w(0)(eR),/*<>*/eT=J(function(b){var c=0;return function(a){var -d=a;return eS(c,b,d)}},X,aq)[1],/*<>*/eU=/*<>*/i(/*<>*/i(k[20],n[190]),eT),au=/*<>*/i(/*<>*/h(t[45],eV,g),eU);break a}var +d=a;return eS(c,b,d)}},X,aq)[1],/*<>*/eU=/*<>*/i(/*<>*/i(k[20],n[190]),eT),au=/*<>*/i(/*<>*/h(s[45],eV,g),eU);break a}var au=[0,at]}if(au)/*<>*/var eN=au[1],/*<>*/cj=function(a,b){/*<>*/ /*<>*/var c=/*<>*/h(k[58],a,ar);/*<>*/return/*<>*/j(k[26],function(a,b){/*<>*/var @@ -315984,17 +315984,17 @@ f=b[2],g=b[1],d=a[2],k=a[1],/*<>*/o=/*< var cl=J(function(a){/*<>*/var b=a[2],c=a[1],/*<>*/d=[0,[0,N[9]]];/*<>*/return/*<>*/h(w(0)(b),d,c)/*<>*/},/*<>*/h(k[58],X,ar),aq)[2],ck=as;/*<>*/ /*<>*/var -eQ=/*<>*/h(s[37],[0,N[6],0],ar);/*<>*/return F(ck,/*<>*/i(l[15],eQ),cl)}/*<>*/var/*<>*/dy=/*<>*/i(m[13][90],ai),/*<>*/bn=/*<>*/h(o([0,/*<>*/j(r[19],g,p,dy)],0),ai,f),bo=bn[1],dz=bn[2],/*<>*/bp=/*<>*/h(t[33],g,bo[9]),aj=bp[1],dA=bp[2],/*<>*/bq=/*<>*/h(o([0,[0,aj]],0),bm,dz),br=bq[1],dB=bq[2],/*<>*/bs=/*<>*/i(v[18],br[1][1]),/*<>*/dD=bs?1-/*<>*/j(t[46],g,aj,dC):bs,dE=dD?[3,aj]:[0,dA];/*<>*/return q(dE,/*<>*/i(l[15],[0,bo[6],[0,br[6],0]]),dB)}function +eQ=/*<>*/h(t[37],[0,N[6],0],ar);/*<>*/return F(ck,/*<>*/i(l[15],eQ),cl)}/*<>*/var/*<>*/dy=/*<>*/i(m[13][90],ai),/*<>*/bn=/*<>*/h(o([0,/*<>*/j(r[19],g,p,dy)],0),ai,f),bo=bn[1],dz=bn[2],/*<>*/bp=/*<>*/h(s[33],g,bo[9]),aj=bp[1],dA=bp[2],/*<>*/bq=/*<>*/h(o([0,[0,aj]],0),bm,dz),br=bq[1],dB=bq[2],/*<>*/bs=/*<>*/i(v[18],br[1][1]),/*<>*/dD=bs?1-/*<>*/j(s[46],g,aj,dC):bs,dE=dD?[3,aj]:[0,dA];/*<>*/return q(dE,/*<>*/i(l[15],[0,bo[6],[0,br[6],0]]),dB)}function P(F,c,D,C,e,f,g){var l=e?e[1]:2,a=f[2],af=f[1];function d(a,b,c,d){/*<>*/ /*<>*/var e=/*<>*/co(n[cp],f,b,D,l,C,[1,a],c);/*<>*/return[0,e,G(af,[1,e],d)]/*<>*/}function -b(a,b){/*<>*/return d(a,c,b,g)/*<>*/}/*<>*/var/*<>*/ag=[0,/*<>*/i(m[12][18],f),0],/*<>*/x=/*<>*/h(s[37],ag,C);function +b(a,b){/*<>*/return d(a,c,b,g)/*<>*/}/*<>*/var/*<>*/ag=[0,/*<>*/i(m[12][18],f),0],/*<>*/x=/*<>*/h(t[37],ag,C);function ah(a,b,c,d,e,f){/*<>*/return P(F,a,b,c,d,e,f)}function o(d){/*<>*/return function(a,b,c){/*<>*/return ah(d,D,x,a,b,c)}}/*<>*/var/*<>*/ai=F?0:2,/*<>*/p=[0,ai];/*<>*/function H(a,b){/*<>*/return/*<>*/h(k[31],function(a,b,c){/*<>*/var d=a[4],e=a[3],f=a[2];/*<>*/return function(a){/*<>*/var -b=a[1],c=a[2],/*<>*/d=/*<>*/h(s[37],e,[0,b[10],0]),/*<>*/g=/*<>*/h(s[37],f,[0,b[9],0]);/*<>*/return[0,b[3],g,d,c]/*<>*/}(o(a[1])([0,c],b,d))/*<>*/},[0,a,0,0,b])/*<>*/}/*<>*/function +b=a[1],c=a[2],/*<>*/d=/*<>*/h(t[37],e,[0,b[10],0]),/*<>*/g=/*<>*/h(t[37],f,[0,b[9],0]);/*<>*/return[0,b[3],g,d,c]/*<>*/}(o(a[1])([0,c],b,d))/*<>*/},[0,a,0,0,b])/*<>*/}/*<>*/function I(a){/*<>*/return b(a,2)/*<>*/}/*<>*/if(typeof a==="number")/*<>*/switch(a){case 0:/*<>*/return I([0,p]);case @@ -316021,15 +316021,15 @@ b=a[1];return a[2]?[10,b,U(a[2])]:b/*<>* 11:/*<>*/var aM=a[1],/*<>*/V=o(c)([0,l],aM,g),A=V[1];/*<>*/return d([0,A[9]],A[3],A[10],V[2]);case 12:/*<>*/var -W=a[1],aN=a[2],/*<>*/X=/*<>*/i(m[12][30],W),/*<>*/aO=[0,/*<>*/j(r[19],c,l,X)],/*<>*/Y=o(c)(aO,W,g),aP=Y[2],/*<>*/Z=/*<>*/h(t[33],c,Y[1][9]),_=Z[2],/*<>*/aQ=[0,[0,Z[1]]],/*<>*/$=o(c)(aQ,aN,aP),aa=$[1],aR=$[2],/*<>*/aS=/*<>*/aW(R[17],c,l,X,aa[10],[0,_]);/*<>*/return d([0,_],aa[3],aS,aR);default:/*<>*/var +W=a[1],aN=a[2],/*<>*/X=/*<>*/i(m[12][30],W),/*<>*/aO=[0,/*<>*/j(r[19],c,l,X)],/*<>*/Y=o(c)(aO,W,g),aP=Y[2],/*<>*/Z=/*<>*/h(s[33],c,Y[1][9]),_=Z[2],/*<>*/aQ=[0,[0,Z[1]]],/*<>*/$=o(c)(aQ,aN,aP),aa=$[1],aR=$[2],/*<>*/aS=/*<>*/aW(R[17],c,l,X,aa[10],[0,_]);/*<>*/return d([0,_],aa[3],aS,aR);default:/*<>*/var aT=a[1],/*<>*/ab=u(c,0,x,a[2],g),ac=ab[1],aU=ab[2],/*<>*/aV=[0,[0,ac[7]]],/*<>*/ad=o(c)(aV,aT,aU),ae=ad[1];/*<>*/return d([0,ac[7]],ae[3],ae[10],ad[2])}}function u(f,b,c,d,e){/*<>*/var o=b?b[1]:0,a=d[2],D=d[1];function g(a){/*<>*/ /*<>*/var -b=/*<>*/E(n[204],d,f,c,o);/*<>*/return[0,b,G(D,[2,b],a)]/*<>*/}/*<>*/var/*<>*/F=[0,/*<>*/i(m[11][24],d),0],/*<>*/l=/*<>*/h(s[37],F,c);function +b=/*<>*/E(n[204],d,f,c,o);/*<>*/return[0,b,G(D,[2,b],a)]/*<>*/}/*<>*/var/*<>*/F=[0,/*<>*/i(m[11][24],d),0],/*<>*/l=/*<>*/h(t[37],F,c);function H(a,b,c,d){/*<>*/return u(f,a,b,c,d)}function -t(c){/*<>*/return function(a,b){/*<>*/return H(c,l,a,b)}}/*<>*/ /*<>*/var -p=t(M);/*<>*/if(typeof +s(c){/*<>*/return function(a,b){/*<>*/return H(c,l,a,b)}}/*<>*/ /*<>*/var +p=s(M);/*<>*/if(typeof a!=="number")/*<>*/switch(a[0]){case 1:/*<>*/return g(K(f,l,e,a[1])[2]);case 5:var @@ -316040,7 +316040,7 @@ y=a[2],L=a[1],/*<>*/B=/*<>*/ /*<>*/var -O=t([0,C])(L,e)[2];/*<>*/return g(t(S)(y,O)[2]);case +O=s([0,C])(L,e)[2];/*<>*/return g(s(S)(y,O)[2]);case 9:var P=a[1],/*<>*/Q=/*<>*/h(m[11][30],f,d);/*<>*/return g(/*<>*/j(k[26],function(a,b){/*<>*/return x(f,l,Q,a,b)},[0,e,0],P)[1]);case 10:var @@ -316057,7 +316057,7 @@ Y=a[2],Z=w[1],/*<>*/_=[0,Z,/*<>*/var a=c[2],g=c[1];function f(a){/*<>*/ /*<>*/var -d=/*<>*/j(n[205],c,e,b);/*<>*/return[0,d,G(g,[3,d],a)]/*<>*/}/*<>*/var/*<>*/k=[0,/*<>*/i(m[10][18],c),0],/*<>*/l=/*<>*/h(s[37],k,b);/*<>*/if(typeof +d=/*<>*/j(n[205],c,e,b);/*<>*/return[0,d,G(g,[3,d],a)]/*<>*/}/*<>*/var/*<>*/k=[0,/*<>*/i(m[10][18],c),0],/*<>*/l=/*<>*/h(t[37],k,b);/*<>*/if(typeof a!=="number"&&1===a[0])/*<>*/return f(K(e,l,d,a[1])[2]);/*<>*/return f(d)/*<>*/}function x(n,m,c,d,e){/*<>*/var a=d[2],g=d[1];function @@ -316068,9 +316068,9 @@ i=e[3],f=e[1],/*<>*/o=[0,e[2],[4,f]],p=/ q=i[1],l=b(0)(q,j)[2];else var l=j;/*<>*/return[0,l,[0,f,a]]/*<>*/}/*<>*/var -Z=/*<>*/j(V[1],0,U,function(a,b){/*<>*/return O(a,0,0,0,b,v[15][1])[2]/*<>*/});o.caml_register_global(64,[0,[0,e,function(a){/*<>*/return/*<>*/j(D[143],C,e,a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][45],n[171],a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][44],n[172],a)/*<>*/},function(a){/*<>*/return h(v[15][47],n[173],a)},function(a){/*<>*/return h(v[15][46],n[174],a)},function(a){/*<>*/return/*<>*/j(v[15][24],function(a,b,c){/*<>*/var/*<>*/d=/*<>*/i(n[197],b),/*<>*/e=d?/*<>*/cn(a,/*<>*/i(n[185],b)):d;return e?[0,a,c]:c/*<>*/},a,0)/*<>*/}],J,G,g,ay,f,p,q,az,aA,w,K,O,P,u,A,x,function(a,b,c){/*<>*/ /*<>*/i(s[46],_);return a[1]?/*<>*/h(Z,b,c):v[15][1]/*<>*/},function(a){/*<>*/return/*<>*/j(v[15][24],function(d,b,c){/*<>*/var/*<>*/a=/*<>*/i(n[186],b),/*<>*/e=/*<>*/i(/*<>*/i(y[7],function(a){/*<>*/return[0,d,a]/*<>*/}),a),/*<>*/f=/*<>*/i(y[15],e);/*<>*/return/*<>*/h(s[37],f,c)/*<>*/},a,0)/*<>*/}],"Haz3lcore__Statics");return/*<>*/}(globalThis)); +Z=/*<>*/j(V[1],0,U,function(a,b){/*<>*/return O(a,0,0,0,b,v[15][1])[2]/*<>*/});o.caml_register_global(63,[0,[0,e,function(a){/*<>*/return/*<>*/j(D[143],C,e,a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][45],n[171],a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][44],n[172],a)/*<>*/},function(a){/*<>*/return h(v[15][47],n[173],a)},function(a){/*<>*/return h(v[15][46],n[174],a)},function(a){/*<>*/return/*<>*/j(v[15][24],function(a,b,c){/*<>*/var/*<>*/d=/*<>*/i(n[197],b),/*<>*/e=d?/*<>*/cn(a,/*<>*/i(n[185],b)):d;return e?[0,a,c]:c/*<>*/},a,0)/*<>*/}],J,G,g,ay,f,p,q,az,aA,w,K,O,P,u,A,x,function(a,b,c){/*<>*/return a[1]?/*<>*/h(Z,b,c):v[15][1]/*<>*/},function(a){/*<>*/return/*<>*/j(v[15][24],function(d,b,c){/*<>*/var/*<>*/a=/*<>*/i(n[186],b),/*<>*/e=/*<>*/i(/*<>*/i(y[7],function(a){/*<>*/return[0,d,a]/*<>*/}),a),/*<>*/f=/*<>*/i(y[15],e);/*<>*/return/*<>*/h(t[37],f,c)/*<>*/},a,0)/*<>*/}],"Haz3lcore__Statics");return/*<>*/}(globalThis)); -//# 6720 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6716 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -316078,13 +316078,13 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__MetaVar");return/*<>*/}(globalThis)); -//# 6769 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6765 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;/*<>*/function f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):d.caml_call_gen(a,[b,c])}var e=d.caml_get_global_data(),c=e.Haz3lcore__Typ,b=e.Haz3lcore__VarMap;d.caml_register_global(2,[0,function(a){/*<>*/return/*<>*/f(b[3],c[13],a)/*<>*/},function(a){/*<>*/return/*<>*/f(b[4],c[11],a)/*<>*/},b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18]],"Haz3lcore__VarCtx");return/*<>*/}(globalThis)); -//# 6776 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6772 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ad="src/haz3lcore/dynamics/VarBstMap.re.Inner.binding",v="<2>",r="@ ",o="rev_order",_=" =",ac="%a",ab="src/haz3lcore/dynamics/VarBstMap.re.Ordered.t_",D="",aa=963043957,n="map",Z=";@ ",Y="@]",$="@[%s =@ ",X=143,j=139,w=848054398,l=a.jsoo_runtime,W=l.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -316172,7 +316172,7 @@ e=a[1],/*<>*/b=/*<>*/c=s(e,b);return c?[0,b,c[1]]:u(0)/*<>*/}),b)/*<>*/},function(a){/*<>*/var/*<>*/b=S(a),/*<>*/c=/*<>*/d(/*<>*/d(f[20],function(a){/*<>*/return[0,a[1],0]/*<>*/}),a);/*<>*/return[0,b,/*<>*/d(f[10],c)]/*<>*/},function(c,b){/*<>*/return V(function(a){/*<>*/var b=a[1];/*<>*/return 1-/*<>*/e(f[34],function(a){/*<>*/return a==b?1:0/*<>*/},c)/*<>*/},b)/*<>*/}]],"Haz3lcore__VarBstMap");return/*<>*/}(globalThis)); -//# 6865 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6861 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="NotInHole",I="<2>",H="%a",n="TypeInconsistent",o="InHole",G="inHole",F="@,",m="WrongLength",E="src/haz3lcore/dynamics/ErrStatus.re.HoleReason.t",C="notInHole",D=143,w=139,g=848054398,i=-976970511,B="src/haz3lcore/dynamics/ErrStatus.re.t",A="typeInconsistent",z="wrongLength",h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -316212,7 +316212,7 @@ m=k[2];if(m&&!m[2]){/*<>*/var r=m[1],/*<>*/t=/*<>*/d(j[5],k[1]);/*<>*/return[0,t,/*<>*/d(s[5],r)]}}/*<>*/return/*<>*/u(e[4],l,h,a)}if(h===p)return b[2]?/*<>*/c(e[3],l,a):0}else if(g===q)/*<>*/return/*<>*/c(e[6],l,a)}}}/*<>*/return/*<>*/c(e[8],l,a)/*<>*/},function(a){/*<>*/if(!a)/*<>*/return Y;/*<>*/var b=a[2],/*<>*/c=/*<>*/d(j[6],a[1]);/*<>*/return[0,g,[0,X,[0,c,[0,/*<>*/d(s[6],b),0]]]]/*<>*/}],"Haz3lcore__ErrStatus");return/*<>*/}(globalThis)); -//# 6906 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6902 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -316220,7 +316220,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),d=f.Stdlib__Format,b=f.Util,g=[0,[4,0,0,0,0],"%d"],h=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/i(d[139],a,g)/*<>*/}e.caml_register_global(4,[0,c,function(a){/*<>*/return/*<>*/j(d[143],h,c,a)/*<>*/},b[16],b[15],b[68],b[52]],"Haz3lcore__MetaVarInst");return/*<>*/}(globalThis)); -//# 6915 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6911 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aq="listLit",_="%S",M="BoolLit",ay="boolLit",ap="ap",L="Var",ao="badConstructor",K="StringLit",ad="@[<2>[",b="<2>",o="@ ",ax="stringLit",F="@])",J="Constructor",V="Cons",R="NonEmptyHole",u=",@ ",aw="intLit",s="@,",av="tuple",ac="@,]@]",U="Ap",E="))",au="var",as="constructor",at="nonEmptyHole",T="InvalidText",an="emptyHole",ab=";@ ",S="EmptyHole",Q="BadConstructor",am="wild",I="FloatLit",al="cons",ae="src/haz3lcore/dynamics/DHPat.re.t",H="@,))@]",g=139,P="ListLit",q=-976970511,r=848054398,G="Tuple",O="Wild",ak="floatLit",D="IntLit",ar="invalidText",C=a.jsoo_runtime,B=C.caml_string_compare,$=C.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):C.caml_call_gen(a,[b])}/*<>*/function @@ -316408,11 +316408,11 @@ f=b[1],/*<>*/g=Y(b[2]),/*<>*/d(w[20],Y,b[1]);/*<>*/return/*<>*/c(w[15],i);case 13:b=b[2];continue}/*<>*/return 0}/*<>*/}C.caml_register_global(187,[0,v,function(a){/*<>*/return/*<>*/j(f[143],bj,v,a)/*<>*/},x,y,z,A,function(a){/*<>*/if(a&&a[2])/*<>*/return[11,a];/*<>*/return/*<>*/c(aa[2],bQ)/*<>*/},Z,Y],"Haz3lcore__DHPat");return/*<>*/}(globalThis)); -//# 7104 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7100 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id;c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19]],"Haz3lcore__EnvironmentId");return/*<>*/}(globalThis)); -//# 7109 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7105 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -316420,7 +316420,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),d=f.Stdlib__Format,b=f.Util,g=[0,[4,0,0,0,0],"%d"],h=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/i(d[139],a,g)/*<>*/}e.caml_register_global(4,[0,c,function(a){/*<>*/return/*<>*/j(d[143],h,c,a)/*<>*/},b[16],b[15],b[68],b[52]],"Haz3lcore__HoleInstanceId");return/*<>*/}(globalThis)); -//# 7118 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7114 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="invalidOfString",w="negativeExponent",v="indexOutOfBounds",n="NegativeExponent",m="OutOfFuel",l="DivideByZero",u="src/haz3lcore/dynamics/InvalidOperationError.re.t",t="outOfFuel",k="InvalidOfString",s="divideByZero",j=-976970511,g=848054398,i="IndexOutOfBounds",o=a.jsoo_runtime,r=o.caml_string_compare;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):o.caml_call_gen(a,[b,c])}/*<>*/function @@ -316454,7 +316454,7 @@ f=h[2];if(f===l)return e[2]?/*<>*/return Q;case 3:/*<>*/return R;default:/*<>*/return S}/*<>*/}],"Haz3lcore__InvalidOperationError");return/*<>*/}(globalThis)); -//# 7153 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7149 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -316462,7 +316462,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__KeywordID");return/*<>*/}(globalThis)); -//# 7162 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7158 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -316481,7 +316481,7 @@ b=e[1];if(!b)/*<>*/return/*<>*/j=/*<>*/d(f[2],a),/*<>*/g=/*<>*/h(f[15][18],j,i),k=g?g[1]:/*<>*/d(o[2],n);/*<>*/return/*<>*/d(c,k)/*<>*/}]/*<>*/},function(c,b){/*<>*/return[0,function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(c,a);e[1]=[0,f[15][1]];/*<>*/var/*<>*/b=/*<>*/d(c,a),/*<>*/g=[0,b,/*<>*/d(p[4],e[1])];e[1]=0;/*<>*/return m(g)/*<>*/},function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(b,a);/*<>*/var/*<>*/c=k(a),f=c[1];e[1]=[0,c[2]];/*<>*/ /*<>*/var g=/*<>*/d(b,f);e[1]=0;/*<>*/return g/*<>*/}]/*<>*/}],"Haz3lcore__StructureShareSexp");return/*<>*/}(globalThis)); -//# 7182 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7178 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ce="sequence",ad="BoolLit",cJ="src/haz3lcore/dynamics/DH.re.if_consistency",b2="boolLit",b3="src/haz3lcore/dynamics/DH.re.DHFilter.t",ax="Prj",cq="rule",cd="binBoolOp",af="StringLit",cI="listConcat",l="@ ",aY="Rule",cH="invalidOperation",bU="case",b1="stringLit",b0="boundVar",cc="typAp",cG="builtinFun",ac="BuiltinFun",aL="InvalidOperation",ag="Constructor",Y="%a",bZ="test",aK="Cons",cF="apBuiltin",cp="fixF",cb="intLit",aB="FreeVar",n="@,",cE="inconsistentBranches",aI="IfThenElse",aJ="FixF",ab="ConsistentCase",bY="tuple",co="typFun",bX="fun",al="Sequence",R="Filter",aw="Ap",aA="BinFloatOp",cD=963043957,bW="nonEmptyHole",az="TypFun",cC="constructor",aH="InvalidText",av="EmptyHole",au="Closure",aW="Residue",$="FloatLit",ak="Fun",cn="ifThenElse",bT="@[%s =@ ",cB="failedCast",aG="BinBoolOp",z="@,))@]",o=848054398,ae="Tuple",q=-976970511,bf="filter",cz="closure",cA="consistentIf",be="src/haz3lcore/dynamics/DH.re",at="FailedCast",cm="invalidText",b_="cast",b$="listLit",ca="src/haz3lcore/dynamics/DH.re.ClosureEnvironment.Inner.t",a7="%S",aj="pat",cl="consistentCase",bc="%d",bV="ap",as="BinStringOp",ck=")",bb="@[<2>[",cy="binStringOp",b="<2>",ci="freeVar",cj="src/haz3lcore/dynamics/DH.re.DHExp.case",cx="(Some ",b9="binIntOp",aq="BinIntOp",ar="ApBuiltin",ch=" =",T="@])",cw="prj",aF="InconsistentBranches",b8="let",ap="Cast",aa="BoundVar",aE="NonEmptyHole",aX="ConsistentIf",p=",@ ",aU="Case",ao="ListConcat",aD="Test",bd="@,]@]",cv="src/haz3lcore/dynamics/DH.re.Filter.t",b7="src/haz3lcore/dynamics/DH.re.DHExp.t",A="))",ay="act",bt="",cg="inconsistentIf",b6="emptyHole",an="Let",a8=";@ ",cu="None",ct="@]",b5="binFloatOp",cf="cons",cs="src/haz3lcore/dynamics/DH.re.DHExp.rule",am="TypAp",X=143,g=139,aC="ListLit",_="IntLit",b4="residue",aV="InconsistentIf",cr="floatLit",W=a.jsoo_runtime,H=W.caml_equal,L=W.caml_string_compare,Q=W.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):W.caml_call_gen(a,[b])}/*<>*/function @@ -317404,15 +317404,15 @@ c=g===b[1]?1:0,h=b[2],i=c?/*<>*/H(f,h):c;/* bR=[];function bS(c,b){/*<>*/ /*<>*/e(f[g],c,it);/*<>*/ /*<>*/h(I[26],function(a,b){/*<>*/if(a)/*<>*/ /*<>*/e(f[g],c,iu);/*<>*/ /*<>*/d(d(bR[1],c),b);/*<>*/return 1/*<>*/},0,b);/*<>*/return/*<>*/e(f[g],c,iv)/*<>*/}Q(bR,[0,M[1]]);h(Z[2],ix,bw,[0,bS,function(a){/*<>*/return/*<>*/h(f[X],iw,bS,a)/*<>*/},function(a){/*<>*/return/*<>*/e(m[40],M[3],a)/*<>*/},function(a){/*<>*/return/*<>*/e(m[39],M[4],a)/*<>*/},function(a){/*<>*/return e(m[76],M[5],a)},function(a){/*<>*/return e(m[60],M[6],a)},function(a,b){/*<>*/return[0,a,b]/*<>*/}]);W.caml_register_global(634,[0,bg,function(a){/*<>*/return/*<>*/h(f[X],cM,bg,a)/*<>*/},bF,bu,bH,bv,O,G,ah,M,U,bw],"Haz3lcore__DH");return/*<>*/}(globalThis)); -//# 8106 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8102 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[7];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26]],"Haz3lcore__DHExp");return/*<>*/}(globalThis)); -//# 8111 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8107 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[8];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__Environment");return/*<>*/}(globalThis)); -//# 8116 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8112 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ae="invalidBoxedBoolLit",ad="invalidBuiltin",O="%S",al="invalidBoxedFloatLit",ak="freeInvalidVar",P="src/haz3lcore/dynamics/EvaluatorError.re.t",aj="invalidBoxedTuple",C="InvalidBoxedFun",e="<2>",p="@ ",G="CastBVHoleGround",ac="stepDoesNotMatch",B="InvalidBoxedStringLit",F="InvalidBoxedBoolLit",r="@])",ai="invalidBoxedListLit",H="BadPatternMatch",ah="invalidBoxedTypFun",M="@,",E="InvalidBoxedListLit",K="OutOfFuel",aa="invalidProjection",ab="badPatternMatch",A="InvalidBoxedTuple",D="InvalidBoxedIntLit",_="outOfFuel",$="badBuiltinAp",z="InvalidProjection",ag="invalidBoxedStringLit",y="FreeInvalidVar",J="BadBuiltinAp",Z="invalidBoxedIntLit",x="InvalidBuiltin",af="invalidBoxedFun",Y="castBVHoleGround",g=139,m=-976970511,n=848054398,v="InvalidBoxedFloatLit",w="InvalidBoxedTypFun",I="StepDoesNotMatch",s=a.jsoo_runtime,t=s.caml_string_compare;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -317527,7 +317527,7 @@ a==="number")switch(a){case 11:/*<>*/var e=a[2],/*<>*/f=/*<>*/c(o[49],a[1]);/*<>*/return[0,n,[0,bi,[0,f,[0,d(o[60],b[13],e),0]]]];default:/*<>*/return[0,n,[0,bj,[0,/*<>*/c(o[52],a[1]),0]]]}/*<>*/},[248,bk,s.caml_fresh_oo_id(0)]],"Haz3lcore__EvaluatorError");return/*<>*/}(globalThis)); -//# 8237 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8233 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var A="<2>",ag="int_of_string",M="@ ",J="Const",$="string_sub",L="%a",I=",@ ",af="mod",B="@,",K="Fn",_="))",ae="",ad="$Meta",Z="bool_of_string",H=143,ac="@,))@]",s=139,Y="float_of_string",ab="fn",aa="const",j=a.jsoo_runtime,X=j.caml_maybe_attach_backtrace,G=j.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -317614,11 +317614,11 @@ b=a[2],c=a[1];return 0===b[0]?[0,[0,c,z[16],b[1]]]:[0,[0,c,z[16],[3,b[1],b[2]]]] b=a[2],c=a[1];return 0===b[0]?0:[0,[0,c,b[3]]]/*<>*/},y[2]);j.caml_register_global(90,[0,C,function(a){/*<>*/return/*<>*/r(i[H],ap,C,a)/*<>*/},N,O,P,function(a){/*<>*/return/*<>*/r(i[H],as,P,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],N,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],O,a)/*<>*/},R,function(a){/*<>*/return/*<>*/r(i[H],au,R,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],v[48],a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],function(a){/*<>*/return d(v[24],function(a){/*<>*/return 0})},a)/*<>*/},m,c,y,d_,d$,/*<>*/r(u[26],function(a,b){/*<>*/var d=b[2],c=b[1];return 0===d[0]?/*<>*/f(F[10],a,[0,c,d[2]]):/*<>*/f(F[10],a,[0,c,[16,c]])/*<>*/},F[7],y[2])],"Haz3lcore__Builtins");return/*<>*/}(globalThis)); -//# 8325 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8321 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[9];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__ClosureEnvironment");return/*<>*/}(globalThis)); -//# 8330 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8326 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a5="sequence2",a6="consistentCaseRule",a4="let1",ad="Prj",am="BinFloatOp1",aX="mark",ak="Ap1",al="Let1",m="@ ",bd="let2",bt="invalidOperation",bu="ap2",bK="case",U="IfThenElse3",bc="binIntOp1",bJ="boundVar",a3="typAp",bb="ifThenElse2",bN="src/haz3lcore/dynamics/EvalCtx.re.cls",au="InvalidOperation",bs="%a",aW="test",aI="FailedCastCast",br="apBuiltin",T="BinStringOp1",ba="fixF",ac="BinStringOp2",p="@,",bq="inconsistentBranches",at="FixF",L="ConsistentCase",aU="tuple",aV="sequence1",aT="fun",S="Filter",ab="Ap2",aa="Cons1",bo="ifThenElse3",bp="binFloatOp2",aS="nonEmptyHole",bn="binStringOp2",R="IfThenElse1",as="Let2",$="Closure",bm="(@[",Q="Fun",a2="binBoolOp1",aj="ListConcat2",bl="failedCast",P="ListConcat1",D="@,))@]",bO="failedCastCast",bk="listConcat2",ar="IfThenElse2",n=-976970511,l=848054398,M="Tuple",bj="filter",bi="closure",_="FailedCast",bM="src/haz3lcore/dynamics/EvalCtx.re.case",a0="listLit",a1="cast",a$="consistentCase",aD="%d",O="BinIntOp1",a_="binIntOp2",ay="@[<2>[",ai="BinBoolOp1",j="<2>",aR="cons1",bI="src/haz3lcore/dynamics/EvalCtx.re.t",K="InconsistentBranchesRule",Z="ApBuiltin",aq="BinIntOp2",ax="@])",bh="prj",aJ="FilterPattern",ap="InconsistentBranches",aH="BoundVar",Y="Cast",ao="NonEmptyHole",q=",@ ",aG="Case",bg="listConcat1",an="Test",X="BinFloatOp2",az="@,]@]",a9="binBoolOp2",aZ="ap1",ah="BinBoolOp2",W="Mark",a8="binFloatOp1",ag="Sequence1",bf="ifThenElse1",E="))",be="",bL="filterPattern",aA=";@ ",a7="binStringOp1",af="Sequence2",aY="cons2",V="TypAp",aQ=143,J="ConsistentCaseRule",g=139,N="ListLit",aP="inconsistentBranchesRule",ae="Cons2",aB=a.jsoo_runtime,iE=aB.caml_maybe_attach_backtrace,s=aB.caml_string_compare,aC=aB.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):aB.caml_call_gen(a,[b])}/*<>*/function @@ -318634,7 +318634,7 @@ e!=="number"&&0===e[0]){e=e[2];continue}if(typeof b==="number"&&32===b)/*<>*/return[0,e];if(typeof e==="number")/*<>*/return 0;if(32===e[0]){e=e[1];continue}}/*<>*/return 0}/*<>*/}],"Haz3lcore__EvalCtx");return/*<>*/}(globalThis)); -//# 9347 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9343 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="called matches_cast_Cons with non-list pattern",d="src/haz3lcore/dynamics/PatternMatch.re",j=a.jsoo_runtime,U=j.caml_maybe_attach_backtrace,r=j.caml_trampoline,T=j.caml_trampoline_return;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -319004,7 +319004,7 @@ w!=="number")switch(w[0]){case 4:case 32:/*<>*/return 1;default:/*<>*/return 0}/*<>*/}j.caml_register_global(19,[0,e],"Haz3lcore__PatternMatch");return/*<>*/}(globalThis)); -//# 9718 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9714 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e="Pass",t="pass",s="src/haz3lcore/dynamics/TestStatus.re.t",d="Indet",b="Fail",r="fail",q="indet",n=-976970511,j=848054398,m=a.jsoo_runtime;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):m.caml_call_gen(a,[b,c])}/*<>*/function @@ -319033,7 +319033,7 @@ k=h[2];if(k===b)return f[2]?/*<>*/c(i[ 0:/*<>*/return E;case 1:/*<>*/return F;default:/*<>*/return G}/*<>*/},p,/*<>*/c(H[26],p,0)],"Haz3lcore__TestStatus");return/*<>*/}(globalThis)); -//# 9748 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9744 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var V="@[<2>[",o="<2>",p="@ ",T="src/haz3lcore/dynamics/TestMap.re.instance_report",U="@])",y="%a",S=",@ ",R="@,",Q="@,]@]",O="src/haz3lcore/dynamics/TestMap.re.report",P="",N=";@ ",M="(@[",x=143,n=848054398,f=139,k=a.jsoo_runtime,w=k.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -319080,7 +319080,7 @@ d=/*<>*/c(L,a,b);return d?s(d[1]):2/*<>*/f=/*<>*/c(g[50],d,b);if(!f)/*<>*/return/*<>*/c(v[37],b,[0,[0,d,[0,e,0]],0]);/*<>*/var/*<>*/h=[0,[0,d,/*<>*/c(v[37],f[1],[0,e,0])],0],/*<>*/i=/*<>*/c(g[55],d,b);/*<>*/return/*<>*/c(v[37],i,h)/*<>*/},g[1],function(e,b){/*<>*/ /*<>*/var a=/*<>*/c(g[44],function(a){/*<>*/return e===s(a[2])?1:0/*<>*/},b);/*<>*/return/*<>*/d(g[1],a)/*<>*/}],"Haz3lcore__TestMap");return/*<>*/}(globalThis)); -//# 9796 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9792 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aL="fixUnwrap",a0="sequence",a1="completeFilter",R="FunClosure",aZ="binBoolOp",aY="listConcat",Q="@ ",ah="NotGroundOrHole",aK="completeClosure",aJ="builtinWrap",aa="FixClosure",aX="caseNext",aI="letBind",aW="ground",aH="notGroundOrHole",$="Skip",A="BuiltinAp",_="UpdateTest",aG="listCons",O="ListCons",P="Sequence",N="VarLookup",z="BinFloatOp",aF="updateTest",M="CastTypAp",aE="castAp",aD="castTypAp",L="TypFunAp",E="BinBoolOp",aC="invalidStep",aV="builtinAp",k=-976970511,l=848054398,Z="CompleteFilter",aj="Ground",aU="hole",aT="cast",aS="varLookup",K="CaseNext",aR="src/haz3lcore/dynamics/Transition.re.step_kind",aB="skip",D="BinStringOp",aQ="binStringOp",r="<2>",aA="conditional",az="fixClosure",J="FunAp",aP="binIntOp",C="BinIntOp",I="@])",ay="typFunAp",Y="CompleteClosure",X="Cast",W="ListConcat",ax="funClosure",aO="caseApply",V="CaseApply",aw=">",T="BuiltinWrap",U="InvalidStep",S="LetBind",av="projection",G="Projection",H="FixUnwrap",aN="binFloatOp",ai="Hole",au="funAp",B="Conditional",q=139,F="CastAp",aM="@<",s=a.jsoo_runtime,p=s.caml_maybe_attach_backtrace,n=s.caml_string_compare;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -319431,7 +319431,7 @@ b==="number")switch(b){case 18:case 19:/*<>*/return 1}/*<>*/return 0/*<>*/}],"Haz3lcore__Transition");return/*<>*/}(globalThis)); -//# 10148 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10144 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,G=f.caml_maybe_attach_backtrace;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -319480,7 +319480,7 @@ h=/*<>*/g(B[16],b,f);e=/*<>*/g(n[28],C,c);/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/G([0,D[7],[0,c]],1)/*<>*/}),h)}/*<>*/}var F=0;f.caml_register_global(16,[0,c,i,function(a,b){/*<>*/return l(A,a,b)},function(a,b){/*<>*/return m(F,a,b)}],"Haz3lcore__ValueChecker");return/*<>*/}(globalThis)); -//# 10564 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10560 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="passing",z="total",h=" ",E="%d",U=" are ",v="test_map",P="@[<2>[",A="<2>",g="@ ",u=" =",T="src/haz3lcore/dynamics/TestResults.re.t",t="unfinished",O="%d are %s ",S="@,",F="and ",N="@,]@]",y="statuses",R="one is ",s="",Q=963043957,n=";@ ",r="@]",K="All ",x="@[%s =@ ",w="descriptions",f=139,J="One ",p="failing",q=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}/*<>*/function @@ -319513,7 +319513,7 @@ I=/*<>*/c(b[2],u);/*<>*/return[0,Q,[0,[0,ba,c(m[19],j)],q]]/*<>*/},function(a,b){/*<>*/var d=a?a[1]:0,/*<>*/e=/*<>*/i(m[25],2,b),/*<>*/f=/*<>*/i(m[25],1,b),/*<>*/g=/*<>*/i(m[25],0,b),/*<>*/h=/*<>*/c(m[24],b);/*<>*/return[0,b,/*<>*/c(/*<>*/c(H[20],function(a){/*<>*/return c(m[7],a[2])/*<>*/}),b),d,h,g,f,e]/*<>*/},M,function(a){/*<>*/return M(a[4],a[6],a[7],bL,bK,bJ,bI,bH)/*<>*/}],"Haz3lcore__TestResults");return/*<>*/}(globalThis)); -//# 10626 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10622 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -319584,7 +319584,7 @@ t(i,h,c){/*<>*/var/*<>*/k=10===c[0]?/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},c),b):c,/*<>*/l=[0,j,d(i,h,k)];/*<>*/return/*<>*/f(g[10],b,l)/*<>*/},g[7]),b);/*<>*/return/*<>*/f(k[7],a,j)/*<>*/}function u(f,b,c){/*<>*/return/*<>*/e(/*<>*/e(n[11][9],function(a){/*<>*/return d(f,b,a)}),c)/*<>*/}h.caml_register_global(6,[0,d,function(a,b){/*<>*/return/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},b),a)/*<>*/}],"Haz3lcore__Substitution");return/*<>*/}(globalThis)); -//# 10698 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10694 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var q="@ ",r="<2>",d="step",p=963043957,j=139,o="src/haz3lcore/dynamics/EvaluatorStats.re.t",h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -319603,7 +319603,7 @@ o=/*<>*/c(b[2],h);/*<>*/c(b[2],e);if(j)/*<>*/return[0,j[1]];/*<>*/ /*<>*/var q=[0,[0,0===/*<>*/c(b[2],e)?1:0,E],0];/*<>*/return/*<>*/i(m[13],l,a,q)}/*<>*/return/*<>*/g(m[14],l,a)/*<>*/},function(a){/*<>*/return[0,p,[0,[0,F,c(k[52],a[1])],0]]/*<>*/},G,function(a){/*<>*/return[0,a[1]+1|0]/*<>*/},function(a){/*<>*/return a[1]/*<>*/},function(a){/*<>*/return[0,a]/*<>*/}],"Haz3lcore__EvaluatorStats");return/*<>*/}(globalThis)); -//# 10718 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10714 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="@ ",y="<2>",k="tests",x=" =",j="stats",v=963043957,w="",u="@]",s="@[%s =@ ",t="src/haz3lcore/dynamics/EvaluatorState.re.t",i=139,h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -319627,15 +319627,15 @@ b=a[2];/*<>*/return[0,/*<>*/return[0,/*<>*/d(c[10],a),e]/*<>*/},function(a,b,c){/*<>*/var e=a[2],/*<>*/g=/*<>*/d(/*<>*/d(f[23],[0,b,c]),e);/*<>*/return[0,a[1],g]/*<>*/},function(a){/*<>*/return a[2]/*<>*/},function(a,b){/*<>*/return[0,b[1],a]/*<>*/}],"Haz3lcore__EvaluatorState");return/*<>*/}(globalThis)); -//# 10743 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10739 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[10];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10]],"Haz3lcore__Filter");return/*<>*/}(globalThis)); -//# 10748 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10744 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[12];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7]],"Haz3lcore__FilterEnvironment");return/*<>*/}(globalThis)); -//# 10753 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10749 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a$="$e",d="__mutual__",a_="$v",f=a.jsoo_runtime,b=f.caml_equal,M=f.caml_maybe_attach_backtrace,g=f.caml_trampoline,v=f.caml_trampoline_return,N=f.caml_wrap_exception;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -319882,7 +319882,7 @@ p(a,b,c){/*<>*/return w(a,b,a,c[1 g=d,f=e;/*<>*/for(;;){if(!g)/*<>*/return[0,c,f];/*<>*/var i=g[2],/*<>*/h=p(a,b,g[1]);if(h)/*<>*/return[0,h[1],f];g=i;f=f+1|0}/*<>*/}(a,b,c,d,0);/*<>*/return[0,e[1],f-e[2]|0]/*<>*/}],"Haz3lcore__FilterMatcher");return/*<>*/}(globalThis)); -//# 11001 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10997 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var K="<2>",i="@ ",al=125,o="knd",p="d_loc",C="d",u=" =",ao="%a",ak="{ ",t="",B="env",aj="src/haz3lcore/dynamics/EvaluatorStep.re.EvalObj.t",L=963043957,A=";@ ",an="@[<2>{ ",s="@]",am="@ }@]",v="@[%s =@ ",ai=143,z="state",d=139,m="ctx",ah="src/haz3lcore/dynamics/EvaluatorStep.re.step",y=a.jsoo_runtime,af=y.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):y.caml_call_gen(a,[b])}/*<>*/function @@ -320148,7 +320148,7 @@ d=ae(h,a);if(!d)/*<>*/return 0;/ b=d[1][2],/*<>*/e=/*<>*/f(ac,i,b[1],b[2]);if(!e)/*<>*/return 0;/*<>*/ /*<>*/var g=n(b[3],e[1]);/*<>*/return[0,g,c(g)]/*<>*/}/*<>*/return c(b)/*<>*/}],"Haz3lcore__EvaluatorStep");return/*<>*/}(globalThis)); -//# 11268 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11264 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aD="src/haz3lcore/dynamics/Stepper.re.persistent",ax="stepPending",K="StepTimeout",aw="stepTimeout",ab="@[<2>[",o="<2>",e="@ ",av=125,C=" =",au="src/haz3lcore/dynamics/Stepper.re.t",ac="%a",at="{ ",S=",@ ",F="@,",r="elab",aa="@,]@]",I="StepperOK",n="current",B="next",ar="))",as="list manipulation",y="",T=963043957,q="previous",x=";@ ",aC="@[<2>{ ",A="@]",aB="@ }@]",E="@[%s =@ ",$=143,aA="@,))@]",d=139,N=-976970511,D=848054398,az="src/haz3lcore/dynamics/Stepper.re.current",ay="stepperOK",J="StepPending",t=a.jsoo_runtime,cE=t.caml_maybe_attach_backtrace,_=t.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):t.caml_call_gen(a,[b])}/*<>*/function @@ -320396,7 +320396,7 @@ d=a[2];if(typeof b!=="number"&&0!==b[0]){if(b[3])/*<>*/return[0,c,d,[1,b[1],b[2],0]];break a}}/*<>*/return[0,c,a[2],a[3]]/*<>*/},function(a,b){/*<>*/var c=b[3],d=b[2],e=b[1],/*<>*/f=ak([0,e,d,c,0]);/*<>*/return[0,e,d,c,/*<>*/h(p[18],a,f)]/*<>*/}],"Haz3lcore__Stepper");return/*<>*/}(globalThis)); -//# 12685 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12681 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var y="@ ",r="<2>",x="src/haz3lcore/dynamics/EvaluatorResult.re.t",w="@])",v="boxedValue",h="Indet",g="BoxedValue",u="indet",o=848054398,p=139,q=-976970511,k=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -320427,7 +320427,7 @@ f=b[1],d=g;break a}}else{var h=a[1];if(0!==b[0]){var f=b[1],d=h;break a}}/*<>*/return 0}/*<>*/return/*<>*/c(e[24],d,f)/*<>*/}],"Haz3lcore__EvaluatorResult");return/*<>*/}(globalThis)); -//# 12717 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12713 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="EvaulatorError",ai="off",w="Off",am="resultPending",af="resultOk",ag="unknownException",v="result",j="<2>",ah="src/haz3lcore/prog/ProgramResult.re.inner",o="@ ",ae=" =",G="@])",P="%a",al="evaulatorError",u="ResultOk",ad="resultFail",z="ResultFail",B="ResultPending",ab="",ac="src/haz3lcore/prog/ProgramResult.re.error",ak=963043957,aa="src/haz3lcore/prog/ProgramResult.re.t",C="Timeout",$="@]",_="timeout",y="UnknownException",aj="@[%s =@ ",O=143,t="state",h=139,l=-976970511,m=848054398,s=a.jsoo_runtime,N=s.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -320511,11 +320511,11 @@ a==="number")/*<>*/return a7;switch(a[ 0:/*<>*/return[0,m,[0,a8,[0,/*<>*/c(F[13],a[1]),0]]];case 1:/*<>*/return[0,m,[0,a9,[0,T(a[1]),0]]];default:/*<>*/return[0,m,[0,a_,[0,Y(a[1]),0]]]}/*<>*/},function(a){/*<>*/return c(A[7],a[1])/*<>*/},function(a){/*<>*/return a[2]/*<>*/}],"Haz3lcore__ProgramResult");return/*<>*/}(globalThis)); -//# 13118 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13114 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id[15];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48]],"Haz3lcore__MetaVarMap");return/*<>*/}(globalThis)); -//# 13123 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13119 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="expressionHole",o="patternHole",i="ExpressionHole",j="PatternHole",e=a.jsoo_runtime;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -320534,7 +320534,7 @@ e=d[2];if(e&&!e[2]){/*<>*/var f=e[1],h=d[1],/*<>*/i=k(b[1]),/*<>*/j=/*<>*/g(m[13],h);/*<>*/return[0,i,j,/*<>*/g(n[1],f)]}}}}/*<>*/return/*<>*/t(c[2],s,3,a)/*<>*/},a)/*<>*/},function(a){/*<>*/return/*<>*/b(h[44],function(a){var b=a[3],c=a[2],d=l(a[1]),e=g(m[11],c);return[1,[0,d,[0,e,[0,g(n[2],b),0]]]]},a)/*<>*/},h[1]],"Haz3lcore__Delta");return/*<>*/}(globalThis)); -//# 13143 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13139 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var B="+",t="DoesNotElaborate",A="elaborates",r="Elaborates",x="doesNotElaborate",ad=194,u="_",h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -320785,7 +320785,7 @@ b=a[3],c=a[2],/*<>*/d=/*<>*/return 0;/*<>*/var e=c[1],/*<>*/d=v(a,b),f=d?d[1]:O;/*<>*/return[0,e,f,q[5]]/*<>*/}],"Haz3lcore__Elaborator");return/*<>*/}(globalThis)); -//# 13395 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13391 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="Unexpected Uneval",f=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -320830,7 +320830,7 @@ e=[0,c[1]];break;case e=[1,c[1]];break;default:var e=[1,c[1]]}/*<>*/return[0,f[1],e]/*<>*/},b,[0,m[2]]],"Haz3lcore__Evaluator");return/*<>*/}(globalThis)); -//# 13441 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13437 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,w=f.caml_wrap_exception;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -320845,7 +320845,7 @@ e=/*<>*/h(t[1],l,c)}catch(e){var f=w(e);if(f[1]===i[7]){/*<>*/var j=f[2],/*<>*/m=/*<>*/d(i[2],j),/*<>*/n=/*<>*/h(g[28],r,m);/*<>*/ /*<>*/d(g[46],n);/*<>*/return[2,[0,j]]}/*<>*/var/*<>*/o=/*<>*/d(k[1],f),/*<>*/p=/*<>*/h(g[28],s,o);/*<>*/ /*<>*/d(g[46],p);/*<>*/return[2,[1,/*<>*/d(k[1],f)]]}/*<>*/return[1,[0,e[2],e[1]]]/*<>*/}],"Haz3lcore__Interface");return/*<>*/}(globalThis)); -//# 13457 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13453 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ab="src/haz3lcore/prog/ModelResult.re.t",t="<2>",r="@ ",N=" =",aa="src/haz3lcore/prog/ModelResult.re.eval_result",M="@])",$="noElab",P="%a",Y="src/haz3lcore/prog/ModelResult.re.persistent",x="elab",E="stepper",m="Evaluation",B="NoElab",L="",_=963043957,k="Stepper",w="previous",X=";@ ",o="evaluation",K="@]",O="@[%s =@ ",Z="(@[<2>Stepper@ ",J=143,i=139,p=848054398,q=-976970511,v=a.jsoo_runtime,I=v.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):v.caml_call_gen(a,[b])}/*<>*/function @@ -320932,7 +320932,7 @@ i=e[2];if(i===m)return b[2]?/*<>*/d(g[3] j=b[2];if(j&&!j[2])/*<>*/return[0,/*<>*/c(f[31],j[1])];/*<>*/return/*<>*/h(g[4],A,i,a)}}else if(p===n)/*<>*/return/*<>*/d(g[6],A,a)}}}/*<>*/return/*<>*/d(g[8],A,a)/*<>*/},function(a){/*<>*/return a?[0,p,[0,a2,[0,/*<>*/c(f[32],a[1]),0]]]:a3/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&1===a[0])/*<>*/return[0,/*<>*/c(f[35],a[1])];/*<>*/return 0/*<>*/},function(a,b){/*<>*/return b?[1,/*<>*/d(f[36],a,b[1])]:0/*<>*/}],"Haz3lcore__ModelResult");return/*<>*/}(globalThis)); -//# 13545 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13541 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var z="%a",y=143,j=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function